diff --git a/datasheets/RM0454.pdf b/datasheets/RM0454.pdf new file mode 100644 index 0000000..db808d0 --- /dev/null +++ b/datasheets/RM0454.pdf @@ -0,0 +1,108045 @@ +%PDF-1.3 % +28838 0 obj <> endobj +xref +28838 1491 +0000000016 00000 n +0000041439 00000 n +0000041700 00000 n +0000041740 00000 n +0000042020 00000 n +0000042149 00000 n +0000042284 00000 n +0000042413 00000 n +0000042542 00000 n +0000042735 00000 n +0000042872 00000 n +0000042913 00000 n +0000042993 00000 n +0000043447 00000 n +0000044397 00000 n +0000045183 00000 n +0000045902 00000 n +0000046044 00000 n +0000046434 00000 n +0000047216 00000 n +0000047993 00000 n +0000048898 00000 n +0000049539 00000 n +0000049699 00000 n +0000050402 00000 n +0000050682 00000 n +0000051026 00000 n +0000051269 00000 n +0000051981 00000 n +0000052800 00000 n +0000053595 00000 n +0000056290 00000 n +0000056409 00000 n +0000102240 00000 n +0000102491 00000 n +0000103205 00000 n +0000103314 00000 n +0000135343 00000 n +0000135601 00000 n +0000136179 00000 n +0000164137 00000 n +0000167345 00000 n +0000167388 00000 n +0000167452 00000 n +0000167643 00000 n +0000167818 00000 n +0000167972 00000 n +0000168184 00000 n +0000168353 00000 n +0000168502 00000 n +0000168701 00000 n +0000168864 00000 n +0000169039 00000 n +0000169317 00000 n +0000169448 00000 n +0000169647 00000 n +0000169939 00000 n +0000170070 00000 n +0000170260 00000 n +0000170518 00000 n +0000170661 00000 n +0000170839 00000 n +0000171079 00000 n +0000171210 00000 n +0000171384 00000 n +0000171612 00000 n +0000171743 00000 n +0000171918 00000 n +0000172120 00000 n +0000172251 00000 n +0000172425 00000 n +0000172643 00000 n +0000172774 00000 n +0000172949 00000 n +0000173163 00000 n +0000173294 00000 n +0000173469 00000 n +0000173681 00000 n +0000173858 00000 n +0000174102 00000 n +0000174269 00000 n +0000174459 00000 n +0000174679 00000 n +0000174822 00000 n +0000175000 00000 n +0000175208 00000 n +0000175359 00000 n +0000175544 00000 n +0000175772 00000 n +0000175923 00000 n +0000176109 00000 n +0000176327 00000 n +0000176468 00000 n +0000176644 00000 n +0000176871 00000 n +0000177002 00000 n +0000177183 00000 n +0000177435 00000 n +0000177566 00000 n +0000177739 00000 n +0000177991 00000 n +0000178134 00000 n +0000178310 00000 n +0000178556 00000 n +0000178689 00000 n +0000178858 00000 n +0000179082 00000 n +0000179213 00000 n +0000179392 00000 n +0000179624 00000 n +0000179753 00000 n +0000179924 00000 n +0000180118 00000 n +0000180247 00000 n +0000180438 00000 n +0000180676 00000 n +0000180839 00000 n +0000181051 00000 n +0000181180 00000 n +0000181354 00000 n +0000181570 00000 n +0000181725 00000 n +0000181897 00000 n +0000182093 00000 n +0000182266 00000 n +0000182438 00000 n +0000182654 00000 n +0000182795 00000 n +0000182971 00000 n +0000183181 00000 n +0000183364 00000 n +0000183545 00000 n +0000183666 00000 n +0000183828 00000 n +0000184014 00000 n +0000184133 00000 n +0000184331 00000 n +0000184464 00000 n +0000184697 00000 n +0000184834 00000 n +0000185045 00000 n +0000185281 00000 n +0000185485 00000 n +0000185689 00000 n +0000185829 00000 n +0000186022 00000 n +0000186209 00000 n +0000186401 00000 n +0000186551 00000 n +0000186757 00000 n +0000186962 00000 n +0000187129 00000 n +0000187325 00000 n +0000187532 00000 n +0000187699 00000 n +0000187915 00000 n +0000188114 00000 n +0000188287 00000 n +0000188445 00000 n +0000188647 00000 n +0000188837 00000 n +0000189029 00000 n +0000189203 00000 n +0000189417 00000 n +0000189662 00000 n +0000189854 00000 n +0000190012 00000 n +0000190226 00000 n +0000190458 00000 n +0000190611 00000 n +0000190784 00000 n +0000190972 00000 n +0000191203 00000 n +0000191410 00000 n +0000191582 00000 n +0000191808 00000 n +0000192034 00000 n +0000192258 00000 n +0000192480 00000 n +0000192674 00000 n +0000192868 00000 n +0000193056 00000 n +0000193248 00000 n +0000193438 00000 n +0000193646 00000 n +0000193834 00000 n +0000194013 00000 n +0000194196 00000 n +0000194387 00000 n +0000194563 00000 n +0000194734 00000 n +0000194940 00000 n +0000195168 00000 n +0000195309 00000 n +0000195497 00000 n +0000195640 00000 n +0000195826 00000 n +0000195967 00000 n +0000196153 00000 n +0000196294 00000 n +0000196522 00000 n +0000196681 00000 n +0000196865 00000 n +0000197004 00000 n +0000197158 00000 n +0000197378 00000 n +0000197507 00000 n +0000197647 00000 n +0000197869 00000 n +0000198045 00000 n +0000198213 00000 n +0000198443 00000 n +0000198669 00000 n +0000198899 00000 n +0000199125 00000 n +0000199355 00000 n +0000199581 00000 n +0000199811 00000 n +0000200037 00000 n +0000200267 00000 n +0000200493 00000 n +0000200721 00000 n +0000200945 00000 n +0000201145 00000 n +0000201337 00000 n +0000201529 00000 n +0000201723 00000 n +0000201917 00000 n +0000202111 00000 n +0000202271 00000 n +0000202448 00000 n +0000202606 00000 n +0000202786 00000 n +0000202952 00000 n +0000203125 00000 n +0000203308 00000 n +0000203458 00000 n +0000203631 00000 n +0000203768 00000 n +0000203945 00000 n +0000204227 00000 n +0000204443 00000 n +0000204659 00000 n +0000204825 00000 n +0000204979 00000 n +0000205127 00000 n +0000205271 00000 n +0000205415 00000 n +0000205629 00000 n +0000205809 00000 n +0000206063 00000 n +0000206210 00000 n +0000206398 00000 n +0000206540 00000 n +0000206682 00000 n +0000206812 00000 n +0000206958 00000 n +0000207140 00000 n +0000207287 00000 n +0000207518 00000 n +0000207686 00000 n +0000207880 00000 n +0000208084 00000 n +0000208346 00000 n +0000208602 00000 n +0000208876 00000 n +0000209150 00000 n +0000209418 00000 n +0000209664 00000 n +0000209894 00000 n +0000210126 00000 n +0000210352 00000 n +0000210566 00000 n +0000210786 00000 n +0000211006 00000 n +0000211218 00000 n +0000211418 00000 n +0000211626 00000 n +0000211832 00000 n +0000212042 00000 n +0000212248 00000 n +0000212452 00000 n +0000212686 00000 n +0000212817 00000 n +0000212958 00000 n +0000213146 00000 n +0000213327 00000 n +0000213538 00000 n +0000213683 00000 n +0000213898 00000 n +0000214061 00000 n +0000214246 00000 n +0000214402 00000 n +0000214618 00000 n +0000214784 00000 n +0000214974 00000 n +0000215140 00000 n +0000215302 00000 n +0000215488 00000 n +0000215682 00000 n +0000215850 00000 n +0000216024 00000 n +0000216194 00000 n +0000216370 00000 n +0000216594 00000 n +0000216830 00000 n +0000217086 00000 n +0000217338 00000 n +0000217592 00000 n +0000217836 00000 n +0000218074 00000 n +0000218310 00000 n +0000218564 00000 n +0000218812 00000 n +0000219056 00000 n +0000219259 00000 n +0000219448 00000 n +0000219622 00000 n +0000219866 00000 n +0000220110 00000 n +0000220354 00000 n +0000220598 00000 n +0000220842 00000 n +0000221086 00000 n +0000221330 00000 n +0000221574 00000 n +0000221818 00000 n +0000222062 00000 n +0000222306 00000 n +0000222550 00000 n +0000222794 00000 n +0000223038 00000 n +0000223282 00000 n +0000223526 00000 n +0000223770 00000 n +0000224014 00000 n +0000224258 00000 n +0000224498 00000 n +0000224738 00000 n +0000224976 00000 n +0000225214 00000 n +0000225452 00000 n +0000225690 00000 n +0000225928 00000 n +0000226166 00000 n +0000226404 00000 n +0000226622 00000 n +0000226887 00000 n +0000227036 00000 n +0000227232 00000 n +0000227372 00000 n +0000227590 00000 n +0000227840 00000 n +0000228034 00000 n +0000228300 00000 n +0000228456 00000 n +0000228684 00000 n +0000228873 00000 n +0000229054 00000 n +0000229242 00000 n +0000229388 00000 n +0000229600 00000 n +0000229743 00000 n +0000229892 00000 n +0000230088 00000 n +0000230243 00000 n +0000230390 00000 n +0000230544 00000 n +0000230683 00000 n +0000230927 00000 n +0000231178 00000 n +0000231420 00000 n +0000231608 00000 n +0000231752 00000 n +0000231970 00000 n +0000232124 00000 n +0000232274 00000 n +0000232496 00000 n +0000232665 00000 n +0000232836 00000 n +0000232991 00000 n +0000233246 00000 n +0000233433 00000 n +0000233608 00000 n +0000233765 00000 n +0000233933 00000 n +0000234157 00000 n +0000234389 00000 n +0000234639 00000 n +0000234859 00000 n +0000235073 00000 n +0000235342 00000 n +0000235531 00000 n +0000235727 00000 n +0000235863 00000 n +0000236083 00000 n +0000236234 00000 n +0000236433 00000 n +0000236637 00000 n +0000236828 00000 n +0000237007 00000 n +0000237169 00000 n +0000237393 00000 n +0000237625 00000 n +0000237856 00000 n +0000237999 00000 n +0000238140 00000 n +0000238368 00000 n +0000238564 00000 n +0000238736 00000 n +0000238932 00000 n +0000239077 00000 n +0000239271 00000 n +0000239402 00000 n +0000239576 00000 n +0000239842 00000 n +0000240098 00000 n +0000240370 00000 n +0000240646 00000 n +0000240930 00000 n +0000241120 00000 n +0000241290 00000 n +0000241475 00000 n +0000241685 00000 n +0000241829 00000 n +0000242045 00000 n +0000242267 00000 n +0000242434 00000 n +0000242632 00000 n +0000242788 00000 n +0000242987 00000 n +0000243152 00000 n +0000243325 00000 n +0000243471 00000 n +0000243631 00000 n +0000243857 00000 n +0000244036 00000 n +0000244274 00000 n +0000244465 00000 n +0000244657 00000 n +0000244889 00000 n +0000245129 00000 n +0000245371 00000 n +0000245595 00000 n +0000245817 00000 n +0000246053 00000 n +0000246289 00000 n +0000246519 00000 n +0000246684 00000 n +0000246867 00000 n +0000247081 00000 n +0000247266 00000 n +0000247403 00000 n +0000247559 00000 n +0000247765 00000 n +0000247934 00000 n +0000248107 00000 n +0000248275 00000 n +0000248451 00000 n +0000248635 00000 n +0000248821 00000 n +0000249027 00000 n +0000249195 00000 n +0000249386 00000 n +0000249587 00000 n +0000249790 00000 n +0000249982 00000 n +0000250113 00000 n +0000250329 00000 n +0000250486 00000 n +0000250746 00000 n +0000250910 00000 n +0000251154 00000 n +0000251338 00000 n +0000251526 00000 n +0000251705 00000 n +0000252013 00000 n +0000252228 00000 n +0000252445 00000 n +0000252643 00000 n +0000252834 00000 n +0000253031 00000 n +0000253223 00000 n +0000253472 00000 n +0000253697 00000 n +0000253995 00000 n +0000254177 00000 n +0000254340 00000 n +0000254555 00000 n +0000254708 00000 n +0000254939 00000 n +0000255095 00000 n +0000255260 00000 n +0000255442 00000 n +0000255628 00000 n +0000255792 00000 n +0000255982 00000 n +0000256186 00000 n +0000256382 00000 n +0000256586 00000 n +0000256844 00000 n +0000257035 00000 n +0000257199 00000 n +0000257397 00000 n +0000257534 00000 n +0000257762 00000 n +0000257939 00000 n +0000258185 00000 n +0000258342 00000 n +0000258548 00000 n +0000258698 00000 n +0000258926 00000 n +0000259158 00000 n +0000259344 00000 n +0000259518 00000 n +0000259742 00000 n +0000259902 00000 n +0000260054 00000 n +0000260253 00000 n +0000260440 00000 n +0000260597 00000 n +0000260794 00000 n +0000261114 00000 n +0000261333 00000 n +0000261560 00000 n +0000261762 00000 n +0000262008 00000 n +0000262280 00000 n +0000262455 00000 n +0000262637 00000 n +0000262871 00000 n +0000263111 00000 n +0000263271 00000 n +0000263431 00000 n +0000263679 00000 n +0000263923 00000 n +0000264141 00000 n +0000264295 00000 n +0000264527 00000 n +0000264714 00000 n +0000264901 00000 n +0000265119 00000 n +0000265288 00000 n +0000265528 00000 n +0000265707 00000 n +0000265932 00000 n +0000266134 00000 n +0000266402 00000 n +0000266571 00000 n +0000266787 00000 n +0000266960 00000 n +0000267151 00000 n +0000267307 00000 n +0000267527 00000 n +0000267798 00000 n +0000268038 00000 n +0000268297 00000 n +0000268456 00000 n +0000268665 00000 n +0000268869 00000 n +0000269115 00000 n +0000269361 00000 n +0000269545 00000 n +0000269765 00000 n +0000270007 00000 n +0000270247 00000 n +0000270465 00000 n +0000270683 00000 n +0000270887 00000 n +0000271097 00000 n +0000271307 00000 n +0000271495 00000 n +0000271703 00000 n +0000271884 00000 n +0000272071 00000 n +0000272288 00000 n +0000272467 00000 n +0000272600 00000 n +0000272798 00000 n +0000272974 00000 n +0000273130 00000 n +0000273296 00000 n +0000273506 00000 n +0000273688 00000 n +0000273922 00000 n +0000274148 00000 n +0000274318 00000 n +0000274534 00000 n +0000274741 00000 n +0000274903 00000 n +0000275115 00000 n +0000275315 00000 n +0000275565 00000 n +0000275789 00000 n +0000275952 00000 n +0000276148 00000 n +0000276307 00000 n +0000276517 00000 n +0000276703 00000 n +0000276965 00000 n +0000277112 00000 n +0000277332 00000 n +0000277524 00000 n +0000277734 00000 n +0000277950 00000 n +0000278139 00000 n +0000278361 00000 n +0000278619 00000 n +0000278829 00000 n +0000278995 00000 n +0000279213 00000 n +0000279454 00000 n +0000279656 00000 n +0000279832 00000 n +0000280038 00000 n +0000280264 00000 n +0000280448 00000 n +0000280628 00000 n +0000280812 00000 n +0000281018 00000 n +0000281159 00000 n +0000281321 00000 n +0000281515 00000 n +0000281662 00000 n +0000281824 00000 n +0000282038 00000 n +0000282271 00000 n +0000282519 00000 n +0000282715 00000 n +0000282915 00000 n +0000283109 00000 n +0000283319 00000 n +0000283495 00000 n +0000283663 00000 n +0000283865 00000 n +0000284107 00000 n +0000284299 00000 n +0000284467 00000 n +0000284683 00000 n +0000284937 00000 n +0000285193 00000 n +0000285380 00000 n +0000285602 00000 n +0000285866 00000 n +0000286103 00000 n +0000286340 00000 n +0000286577 00000 n +0000286850 00000 n +0000287087 00000 n +0000287354 00000 n +0000287591 00000 n +0000287813 00000 n +0000288073 00000 n +0000288356 00000 n +0000288593 00000 n +0000288830 00000 n +0000289067 00000 n +0000289242 00000 n +0000289442 00000 n +0000289651 00000 n +0000289844 00000 n +0000290044 00000 n +0000290266 00000 n +0000290505 00000 n +0000290779 00000 n +0000290989 00000 n +0000291161 00000 n +0000291340 00000 n +0000291515 00000 n +0000291774 00000 n +0000292033 00000 n +0000292298 00000 n +0000292614 00000 n +0000292813 00000 n +0000293020 00000 n +0000293267 00000 n +0000293484 00000 n +0000293679 00000 n +0000293880 00000 n +0000294049 00000 n +0000294246 00000 n +0000294411 00000 n +0000294576 00000 n +0000294741 00000 n +0000294991 00000 n +0000295241 00000 n +0000295411 00000 n +0000295637 00000 n +0000295857 00000 n +0000296091 00000 n +0000296307 00000 n +0000296523 00000 n +0000296751 00000 n +0000296973 00000 n +0000297175 00000 n +0000297395 00000 n +0000297611 00000 n +0000297827 00000 n +0000298043 00000 n +0000298259 00000 n +0000298475 00000 n +0000298677 00000 n +0000298857 00000 n +0000299033 00000 n +0000299299 00000 n +0000299557 00000 n +0000299809 00000 n +0000300059 00000 n +0000300309 00000 n +0000300559 00000 n +0000300769 00000 n +0000300957 00000 n +0000301177 00000 n +0000301433 00000 n +0000301600 00000 n +0000301796 00000 n +0000302003 00000 n +0000302190 00000 n +0000302417 00000 n +0000302596 00000 n +0000302729 00000 n +0000302937 00000 n +0000303113 00000 n +0000303269 00000 n +0000303479 00000 n +0000303652 00000 n +0000303922 00000 n +0000304176 00000 n +0000304358 00000 n +0000304592 00000 n +0000304768 00000 n +0000304930 00000 n +0000305142 00000 n +0000305342 00000 n +0000305590 00000 n +0000305814 00000 n +0000305979 00000 n +0000306175 00000 n +0000306349 00000 n +0000306513 00000 n +0000306775 00000 n +0000306922 00000 n +0000307124 00000 n +0000307304 00000 n +0000307510 00000 n +0000307739 00000 n +0000307921 00000 n +0000308101 00000 n +0000308285 00000 n +0000308489 00000 n +0000308630 00000 n +0000308792 00000 n +0000308986 00000 n +0000309135 00000 n +0000309297 00000 n +0000309511 00000 n +0000309746 00000 n +0000309972 00000 n +0000310168 00000 n +0000310368 00000 n +0000310562 00000 n +0000310754 00000 n +0000310922 00000 n +0000311138 00000 n +0000311390 00000 n +0000311648 00000 n +0000311835 00000 n +0000312059 00000 n +0000312325 00000 n +0000312564 00000 n +0000312803 00000 n +0000313042 00000 n +0000313317 00000 n +0000313556 00000 n +0000313825 00000 n +0000314064 00000 n +0000314288 00000 n +0000314550 00000 n +0000314835 00000 n +0000315074 00000 n +0000315313 00000 n +0000315552 00000 n +0000315729 00000 n +0000315931 00000 n +0000316140 00000 n +0000316335 00000 n +0000316537 00000 n +0000316761 00000 n +0000316973 00000 n +0000317147 00000 n +0000317328 00000 n +0000317493 00000 n +0000317670 00000 n +0000317915 00000 n +0000318132 00000 n +0000318333 00000 n +0000318502 00000 n +0000318699 00000 n +0000318864 00000 n +0000319029 00000 n +0000319224 00000 n +0000319453 00000 n +0000319645 00000 n +0000319837 00000 n +0000320068 00000 n +0000320252 00000 n +0000320436 00000 n +0000320641 00000 n +0000320894 00000 n +0000321059 00000 n +0000321311 00000 n +0000321563 00000 n +0000321743 00000 n +0000321969 00000 n +0000322195 00000 n +0000322429 00000 n +0000322663 00000 n +0000322911 00000 n +0000323139 00000 n +0000323381 00000 n +0000323623 00000 n +0000323865 00000 n +0000324107 00000 n +0000324335 00000 n +0000324541 00000 n +0000324767 00000 n +0000324993 00000 n +0000325285 00000 n +0000325476 00000 n +0000325756 00000 n +0000326034 00000 n +0000326312 00000 n +0000326590 00000 n +0000326826 00000 n +0000327040 00000 n +0000327286 00000 n +0000327568 00000 n +0000327735 00000 n +0000327957 00000 n +0000328164 00000 n +0000328349 00000 n +0000328575 00000 n +0000328754 00000 n +0000328885 00000 n +0000329093 00000 n +0000329250 00000 n +0000329440 00000 n +0000329664 00000 n +0000329824 00000 n +0000330016 00000 n +0000330240 00000 n +0000330502 00000 n +0000330791 00000 n +0000331030 00000 n +0000331269 00000 n +0000331508 00000 n +0000331673 00000 n +0000331925 00000 n +0000332177 00000 n +0000332347 00000 n +0000332573 00000 n +0000332777 00000 n +0000332977 00000 n +0000333213 00000 n +0000333427 00000 n +0000333673 00000 n +0000333895 00000 n +0000334080 00000 n +0000334229 00000 n +0000334448 00000 n +0000334587 00000 n +0000334720 00000 n +0000334920 00000 n +0000335054 00000 n +0000335292 00000 n +0000335454 00000 n +0000335608 00000 n +0000335750 00000 n +0000335914 00000 n +0000336076 00000 n +0000336238 00000 n +0000336412 00000 n +0000336568 00000 n +0000336720 00000 n +0000336950 00000 n +0000337170 00000 n +0000337376 00000 n +0000337558 00000 n +0000337736 00000 n +0000337964 00000 n +0000338218 00000 n +0000338472 00000 n +0000338686 00000 n +0000338878 00000 n +0000339094 00000 n +0000339305 00000 n +0000339506 00000 n +0000339699 00000 n +0000339884 00000 n +0000340073 00000 n +0000340316 00000 n +0000340495 00000 n +0000340628 00000 n +0000340840 00000 n +0000340999 00000 n +0000341170 00000 n +0000341330 00000 n +0000341580 00000 n +0000341768 00000 n +0000341924 00000 n +0000342136 00000 n +0000342396 00000 n +0000342578 00000 n +0000342764 00000 n +0000343008 00000 n +0000343215 00000 n +0000343377 00000 n +0000343629 00000 n +0000343792 00000 n +0000343988 00000 n +0000344145 00000 n +0000344365 00000 n +0000344557 00000 n +0000344767 00000 n +0000344983 00000 n +0000345152 00000 n +0000345349 00000 n +0000345607 00000 n +0000345821 00000 n +0000345987 00000 n +0000346217 00000 n +0000346395 00000 n +0000346579 00000 n +0000346756 00000 n +0000346960 00000 n +0000347101 00000 n +0000347263 00000 n +0000347493 00000 n +0000347642 00000 n +0000347804 00000 n +0000348018 00000 n +0000348253 00000 n +0000348499 00000 n +0000348695 00000 n +0000348895 00000 n +0000349089 00000 n +0000349291 00000 n +0000349536 00000 n +0000349728 00000 n +0000349881 00000 n +0000350105 00000 n +0000350367 00000 n +0000350652 00000 n +0000350891 00000 n +0000351130 00000 n +0000351369 00000 n +0000351564 00000 n +0000351766 00000 n +0000351990 00000 n +0000352230 00000 n +0000352442 00000 n +0000352616 00000 n +0000352879 00000 n +0000353142 00000 n +0000353285 00000 n +0000353454 00000 n +0000353651 00000 n +0000353816 00000 n +0000353981 00000 n +0000354146 00000 n +0000354398 00000 n +0000354650 00000 n +0000354822 00000 n +0000355040 00000 n +0000355246 00000 n +0000355472 00000 n +0000355678 00000 n +0000355902 00000 n +0000356122 00000 n +0000356342 00000 n +0000356562 00000 n +0000356768 00000 n +0000356952 00000 n +0000357132 00000 n +0000357400 00000 n +0000357676 00000 n +0000357930 00000 n +0000358184 00000 n +0000358398 00000 n +0000358590 00000 n +0000358814 00000 n +0000359074 00000 n +0000359241 00000 n +0000359441 00000 n +0000359625 00000 n +0000359843 00000 n +0000360067 00000 n +0000360285 00000 n +0000360509 00000 n +0000360761 00000 n +0000360993 00000 n +0000361243 00000 n +0000361489 00000 n +0000361735 00000 n +0000361967 00000 n +0000362177 00000 n +0000362381 00000 n +0000362675 00000 n +0000362957 00000 n +0000363239 00000 n +0000363521 00000 n +0000363761 00000 n +0000363979 00000 n +0000364229 00000 n +0000364455 00000 n +0000364622 00000 n +0000364807 00000 n +0000365023 00000 n +0000365210 00000 n +0000365341 00000 n +0000365499 00000 n +0000365677 00000 n +0000365837 00000 n +0000365989 00000 n +0000366164 00000 n +0000366334 00000 n +0000366526 00000 n +0000366714 00000 n +0000366904 00000 n +0000367098 00000 n +0000367273 00000 n +0000367458 00000 n +0000367610 00000 n +0000367826 00000 n +0000368013 00000 n +0000368144 00000 n +0000368302 00000 n +0000368538 00000 n +0000368704 00000 n +0000368886 00000 n +0000369054 00000 n +0000369205 00000 n +0000369375 00000 n +0000369563 00000 n +0000369767 00000 n +0000369932 00000 n +0000370117 00000 n +0000370307 00000 n +0000370446 00000 n +0000370646 00000 n +0000370828 00000 n +0000371012 00000 n +0000371227 00000 n +0000371372 00000 n +0000371571 00000 n +0000371727 00000 n +0000371840 00000 n +0000372016 00000 n +0000372180 00000 n +0000372408 00000 n +0000372564 00000 n +0000372712 00000 n +0000372898 00000 n +0000373064 00000 n +0000373226 00000 n +0000373432 00000 n +0000373646 00000 n +0000373914 00000 n +0000374152 00000 n +0000374288 00000 n +0000374442 00000 n +0000374608 00000 n +0000374772 00000 n +0000374954 00000 n +0000375120 00000 n +0000375358 00000 n +0000375512 00000 n +0000375660 00000 n +0000375884 00000 n +0000376044 00000 n +0000376200 00000 n +0000376399 00000 n +0000376554 00000 n +0000376707 00000 n +0000376902 00000 n +0000377073 00000 n +0000377244 00000 n +0000377412 00000 n +0000377612 00000 n +0000377836 00000 n +0000378022 00000 n +0000378244 00000 n +0000378440 00000 n +0000378662 00000 n +0000378858 00000 n +0000379078 00000 n +0000379284 00000 n +0000379490 00000 n +0000379698 00000 n +0000379896 00000 n +0000380102 00000 n +0000380288 00000 n +0000380488 00000 n +0000380682 00000 n +0000380924 00000 n +0000381118 00000 n +0000381298 00000 n +0000381479 00000 n +0000381664 00000 n +0000381856 00000 n +0000381997 00000 n +0000382199 00000 n +0000382368 00000 n +0000382584 00000 n +0000382731 00000 n +0000382914 00000 n +0000383072 00000 n +0000383212 00000 n +0000383436 00000 n +0000383622 00000 n +0000383848 00000 n +0000384010 00000 n +0000384168 00000 n +0000384369 00000 n +0000384576 00000 n +0000384739 00000 n +0000384934 00000 n +0000385109 00000 n +0000385281 00000 n +0000385479 00000 n +0000385681 00000 n +0000385907 00000 n +0000386095 00000 n +0000386305 00000 n +0000386515 00000 n +0000386711 00000 n +0000386888 00000 n +0000387073 00000 n +0000387263 00000 n +0000387411 00000 n +0000387611 00000 n +0000387788 00000 n +0000388003 00000 n +0000388190 00000 n +0000388323 00000 n +0000388521 00000 n +0000388682 00000 n +0000388838 00000 n +0000388990 00000 n +0000389150 00000 n +0000389354 00000 n +0000389554 00000 n +0000389814 00000 n +0000390030 00000 n +0000390300 00000 n +0000390588 00000 n +0000390870 00000 n +0000391078 00000 n +0000391239 00000 n +0000391453 00000 n +0000391629 00000 n +0000391837 00000 n +0000392091 00000 n +0000392304 00000 n +0000392521 00000 n +0000392720 00000 n +0000392887 00000 n +0000393099 00000 n +0000393293 00000 n +0000393475 00000 n +0000393685 00000 n +0000393877 00000 n +0000394027 00000 n +0000394181 00000 n +0000394335 00000 n +0000394537 00000 n +0000394737 00000 n +0000394915 00000 n +0000395109 00000 n +0000395248 00000 n +0000395418 00000 n +0000395642 00000 n +0000395804 00000 n +0000395990 00000 n +0000396192 00000 n +0000396334 00000 n +0000396566 00000 n +0000396747 00000 n +0000396918 00000 n +0000397181 00000 n +0000397444 00000 n +0000397674 00000 n +0000397945 00000 n +0000398216 00000 n +0000398489 00000 n +0000398760 00000 n +0000398993 00000 n +0000399270 00000 n +0000399547 00000 n +0000399766 00000 n +0000399985 00000 n +0000400184 00000 n +0000400392 00000 n +0000400624 00000 n +0000400879 00000 n +0000401116 00000 n +0000401363 00000 n +0000401632 00000 n +0000401885 00000 n +0000402027 00000 n +0000402197 00000 n +0000402401 00000 n +0000402603 00000 n +0000402785 00000 n +0000402989 00000 n +0000403203 00000 n +0000403401 00000 n +0000403595 00000 n +0000403797 00000 n +0000403999 00000 n +0000404191 00000 n +0000404400 00000 n +0000404589 00000 n +0000404783 00000 n +0000404935 00000 n +0000405145 00000 n +0000405326 00000 n +0000405545 00000 n +0000405694 00000 n +0000405899 00000 n +0000406101 00000 n +0000406257 00000 n +0000406404 00000 n +0000406572 00000 n +0000406732 00000 n +0000406900 00000 n +0000407206 00000 n +0000407476 00000 n +0000407618 00000 n +0000407754 00000 n +0000408010 00000 n +0000408152 00000 n +0000408386 00000 n +0000408606 00000 n +0000408727 00000 n +0000408935 00000 n +0000409071 00000 n +0000409227 00000 n +0000409399 00000 n +0000409613 00000 n +0000409825 00000 n +0000409945 00000 n +0000410063 00000 n +0000410325 00000 n +0000410455 00000 n +0000410579 00000 n +0000410787 00000 n +0000410945 00000 n +0000411109 00000 n +0000411329 00000 n +0000411447 00000 n +0000411569 00000 n +0000411805 00000 n +0000411965 00000 n +0000412155 00000 n +0000412341 00000 n +0000412607 00000 n +0000412833 00000 n +0000413089 00000 n +0000413307 00000 n +0000413496 00000 n +0000413690 00000 n +0000413826 00000 n +0000414002 00000 n +0000414202 00000 n +0000414344 00000 n +0000414472 00000 n +0000414650 00000 n +0000414830 00000 n +0000415022 00000 n +0000415188 00000 n +0000415382 00000 n +0000415549 00000 n +0000415726 00000 n +0000415871 00000 n +0000416034 00000 n +0000416173 00000 n +0000416374 00000 n +0000416619 00000 n +0000416758 00000 n +0000416899 00000 n +0000417042 00000 n +0000417193 00000 n +0000417362 00000 n +0000417495 00000 n +0000417630 00000 n +0000417781 00000 n +0000417938 00000 n +0000418233 00000 n +0000418407 00000 n +0000418613 00000 n +0000418823 00000 n +0000419031 00000 n +0000419255 00000 n +0000419503 00000 n +0000419749 00000 n +0000419945 00000 n +0000420161 00000 n +0000420393 00000 n +0000420593 00000 n +0000420793 00000 n +0000420993 00000 n +0000421217 00000 n +0000421396 00000 n +0000421589 00000 n +0000421779 00000 n +0000421928 00000 n +0000422142 00000 n +0000422339 00000 n +0000422474 00000 n +0000422664 00000 n +0000422813 00000 n +0000423028 00000 n +0000423217 00000 n +0000423360 00000 n +0000423566 00000 n +0000423750 00000 n +0000423906 00000 n +0000424062 00000 n +0000424244 00000 n +0000424382 00000 n +0000424578 00000 n +0000424782 00000 n +0000424940 00000 n +0000425100 00000 n +0000425350 00000 n +0000425574 00000 n +0000425789 00000 n +0000425967 00000 n +0000426133 00000 n +0000426341 00000 n +0000426513 00000 n +0000426761 00000 n +0000426995 00000 n +0000427184 00000 n +0000427402 00000 n +0000427557 00000 n +0000427791 00000 n +0000427968 00000 n +0000428228 00000 n +0000428452 00000 n +0000428776 00000 n +0000429015 00000 n +0000429233 00000 n +0000429431 00000 n +0000429631 00000 n +0000429772 00000 n +0000429928 00000 n +0000430086 00000 n +0000430240 00000 n +0000430396 00000 n +0000430592 00000 n +0000430784 00000 n +0000431004 00000 n +0000431210 00000 n +0000431375 00000 n +0000431592 00000 n +0000431828 00000 n +0000432078 00000 n +0000432279 00000 n +0000432538 00000 n +0000432779 00000 n +0000432994 00000 n +0000433211 00000 n +0000433414 00000 n +0000433639 00000 n +0000433880 00000 n +0000434083 00000 n +0000434322 00000 n +0000434581 00000 n +0000434842 00000 n +0000435015 00000 n +0000435194 00000 n +0000435423 00000 n +0000435624 00000 n +0000435764 00000 n +0000435942 00000 n +0000436150 00000 n +0000436370 00000 n +0000436564 00000 n +0000436758 00000 n +0000436966 00000 n +0000437148 00000 n +0000437334 00000 n +0000437528 00000 n +0000437712 00000 n +0000437895 00000 n +0000438161 00000 n +0000438332 00000 n +0000438525 00000 n +0000438739 00000 n +0000438935 00000 n +0000439174 00000 n +0000439372 00000 n +0000439533 00000 n +0000439689 00000 n +0000439935 00000 n +0000440120 00000 n +0000440284 00000 n +0000440466 00000 n +0000440700 00000 n +0000440869 00000 n +0000441107 00000 n +0000441276 00000 n +0000441530 00000 n +0000441745 00000 n +0000442011 00000 n +0000442209 00000 n +0000442443 00000 n +0000442659 00000 n +0000442857 00000 n +0000443015 00000 n +0000443192 00000 n +0000443413 00000 n +0000443616 00000 n +0000443821 00000 n +0000443980 00000 n +0000444167 00000 n +0000444332 00000 n +0000444507 00000 n +0000444677 00000 n +0000444889 00000 n +0000445119 00000 n +0000445373 00000 n +0000445616 00000 n +0000445825 00000 n +0000446092 00000 n +0000446254 00000 n +0000446430 00000 n +0000446623 00000 n +0000446818 00000 n +0000447003 00000 n +0000447206 00000 n +0000447431 00000 n +0000447618 00000 n +0000447821 00000 n +0000447996 00000 n +0000448181 00000 n +0000448376 00000 n +0000448611 00000 n +0000448796 00000 n +0000449010 00000 n +0000449187 00000 n +0000449382 00000 n +0000449588 00000 n +0000449733 00000 n +0000449914 00000 n +0000450122 00000 n +0000450252 00000 n +0000450434 00000 n +0000450579 00000 n +0000450757 00000 n +0000450918 00000 n +0000451099 00000 n +0000451281 00000 n +0000451495 00000 n +0000451672 00000 n +0000451863 00000 n +0000452039 00000 n +0000452205 00000 n +0000452346 00000 n +0000452591 00000 n +0000452787 00000 n +0000452921 00000 n +0000453105 00000 n +0000453331 00000 n +0000453539 00000 n +0000453707 00000 n +0000453875 00000 n +0000454054 00000 n +0000454224 00000 n +0000454432 00000 n +0000454640 00000 n +0000454840 00000 n +0000455004 00000 n +0000455243 00000 n +0000455386 00000 n +0000455585 00000 n +0000455739 00000 n +0000455875 00000 n +0000030718 00000 n +trailer +<]/Prev 12079916>> +startxref +0 +%%EOF + +30328 0 obj <>stream +h{ xU3dڦmҤ%BR( +La[ Tl5eTdBŗU\"nDxED7<+> Z>D"`u&i33Idr?=soJܿz+} ܸ/1hi0q g,v+{H@1e& 5֔kL@@#I5-Av Z uwMd}a'40) Ѭ@15PKVn +S}"0xxИ,G5I +zPК$N^ \QUd|=]@j} +YHz`u=n4$4y +i u)6&Z+$)~rIz& +<@Cwlc W<̲hh#4aV*V;ܿ&$;;WVI I +@(DP`RKR0c&ooUbKj$==WF=h#JIVp%Ia$( z0(& d!RCYh%iLO;bOS4+yy4LDjjVz v(Fy`wsMX>}aBK#:z21הM s ~?,`4$mNPD6ǯؗ4D= +ߤU d iŸw֯Km|d{s͙16Ə`{N9bboыI-l3<-<=i]wZaYTG5?Å:$};p(w/IUco@}u05ۆe~Fp_ckh܁2.r' !rȳ0dL':[` E$JG#bcEp12Y'Pnԣܱ=~LtϮh3H<W҉my_7a Ө`r)jgvGs\_4M$hugE`9%a'ies~Rb їv +]nb$Xҹg S ++z2bdP 9Df +f̮TyTY&X>8'kRKy]R3Z&Ө8Ňhk +Dfm3m49z|Z=nd:Õeg8&רS>+&O Kx#D:8>6DnKIv8,j%z=r -NSeTuH=~W::.::5IkQvYS?GQ܏"a53*NGwG:kpmCQQ8PUO5;Sǰw7؝xNf(Va:#| NOvFP3άدaiI=1kJ4ЅMnՀhr>'؝\AWy{,e6E4x(Wn|z:)^ic +TovVW}ScQdAJֵҥnf D{jr=[O`tK7nxƁLpjacݓ:{aLQz~gv*tix:S +a:58AC8Я'wEd T|ztiaO~QZpj|~|z[FkvkZ{evkʆME6ZSNq gV<~Lme϶gM;]Y8[S[so~Ut̚}.j/]a=[ɾW|vv\v̴N^ִ dzS/:Ui;g95>-kQ3KUm-n\YYi{~qJKZuR[ǧOh*m3g՟1V*?}ζjsUg6[w_5vfK+ ^_Z?]fZ8UU~mQj%3*WVׯ2Tճ}+ ҴVk[*gla[*[{E߷{Qtfebzty|GWstsRY9IrP.0XSeޕ.VJXtm{w8sq[0ջZ*W ZK_:Ioͤ5?lM2zU;Tw Cth}tkݹ'*O_dv~α`e5Pxg޽pιԗ_XrrmO׳j+{ZU1>m#gȽ{EB6yu2!cza#H#aܰSZOfVl5'Gے,(GZswM[L_$yگLo;q%6q,M)ܧޛ98*7,%̾,j^(YiW"%O$#6rƒHQ%dH6uR؞}ܭϘ&aۺg(Jݲw$Ry^һ`|,;ș\[ЈZ RCPvXmz]|:Hq 'zՒԤ|¿x+. {$ź\r#29qӤFL =&yW 5h亽"džEv˼K b=n(μkm|(VCh옜["y:ЗGֵ:zL{݀1h)I$!^fp"豗1s_PncsBQX+~;.]$ey'T4{w(C? :Q![ +ڲo~{TqKCxyލokr3oi_N*Bt'M#)_|gM?P|i=tlWNSEJ\Nϊ V$.K.rQ0N2@r\PfzqJ/2X(LȂ4KRZ] ]F&4skx|E`s]zF[e6\K^m楗X>7,(#f('';^(jKfn$)M/mr/A#s(;!L9E +뾶pbm74`~ʒ& 9q[P) xp47Cu}Rۊ88rwU\${SXMfs;s%7-3.hl~sQVСca>&,OlCwA/޷_m\ tO>=ѳUo.*! +;7 -U'ߞsqoyYq홺Oiro}O?e6M܆)l6KX+v׹}W|`u]>ĕfYZ w%.޷;г;{V}FV + 3@҉C4B} =#\D?otmʛ?b)~6Oxvvn_(lu$,',9wBدOrvw=kOZmLJwsN"ym$J]399g0կ7gZ,ūlk_˞ߐZ |sʫ,]AA@@0F+=A}M;,ȯ1 Y`0:|9 ~}Iw\" )v[|Wm~ -գ[=??UfnQ"kɫ H6_]]&-ޑ| }޷7rY;u.ɖKP(y7#"oof|3J=2h@޼./hK J!&Y=vy=d}p`UV_$Rѓ-4 i-V(9MXj@M"aI&$ d6HQ;@k|kŶV'AçDB/.OUxKo([hr\`c2[!3gx˩D^1٢EMj~ "0 +Y=khZ\J,C<,\ B +dg*xDoo֑jӊ2\`>"".RB@Bw &PDLO {; +)}ِ@ M Z@;C!B| 5$`/hEvdi6'>qW߃8--ysU +MN mlF-Z;O>Ղ݋ Fxš"X-1(y@ B!Tl;cLΨDYvohÉRqhTD>͋U-4l! .|J(|"JEW-²OBUV˱8yVi3d,-08Fd|KF KA(e=bTKHq0-\q,mSv(#L- @/I SU|Zw\Q0qA$:'XbP4LzM:(90'v/I@xbTO: P +lESqע$FEirE\ʖ@"* :UFi-2|3hx1o"mʭQxB-Q@Q'I{I_٧-,=z{ش3%r$ @%ʩJ +&Lҝ&7ޗJw b< Ň R%+"?\"Fm٢ձ-z_ +8*G5ιl! b +~^\6–(ڕHQR*S_iOZ8UTփN7,ّ?4<x 4I3_Q+ZR# 1,AJk&L$x]IjO^թ|@ "gUl%,(_iE@V;U˝ Dy4H 6)pPYoRjL\- +C0dOdİk$fO䀐 ?ɐeUjC`~]a-N0m&s;HXOA&}fNGٛ@=暲aw ʃGԸն!Max/b93F_1]qT{~ t)Ǔ@,5A-z1swTg'ͺN9, ߖJh{gQٚ}Ӱ`3% װJz1 hBbпoݨ kl ;05@E!Dy&1]Gc˘⢰ =[p$@[|l05.1U桿5rэz;Nm0Wpb"׵a],fL7foTc 8^GS$,hF.SrPAH+co,>\ڋ7LD9z u=A l+ p#eDOUj0L@Hl= h4\jfqIRsaƩI+8Lq17a{7)׀.l8r쎺;:2i&A;3//9֦S>I+#,z[d [Ur#"΍=6?] RX͔&ʠX!b`7S0KufvE',Χʣ:2y7fAM@?]Ö_+袖ywժ86F)>DK\T&6ki̡ヘp#+|u|=6F-U=.=\96x:oP_a'rq!r\BO69`aWT,++Oh]w*g |7Ggr5iw9֡If]Ct'Ȳ9r~y ۮyU?v"8z8 +'\Skz-=n +| w 2>]f/p23Er (ցcuzZmT 8x3z'\ ?pf~ Kk M/1\CTp.l"p#|se@9T:΃ܣg)A.",Fbw㋘v#IJ#VP ~;װ¾M${VzߵА.U vkTE PaWpX^O6^3O#:tW+|.Mv]tA #c\ct.6cAX2mDێi%Ƨ`SMN!0bt " 3*n"=oDw3O(θl"wW \(lP_;xQNȈ%B=ܚbi} ȼ52tg̃s1FwCgX$ƜThu vKwY#Iվ q$u{idsjlHӝʟ:8Za,睹J`s9g2'hYADk oA3ݜG$≠`)DFb]eN_}9ȑ6Wpq.^U9qyҝ8O?fpȘR>cw03 BȇIlmNځ/SNFwM3DDFEsU*H'LAvW0"fI]L| Ðyw8tYl-xÐ 0R_IKm0^NLcjDQ,Um u/bb٧&.x8X Gj-*]WTĩюck㜆Js c2~-:4-q:V,k}e z'J.o921ƺ'u*jØ?4TXt̨ ^xAI2zA? sC#)[#m> 8Hx dɐȠ8r48gL"*3|`4`8ʹ3W< 1|e$Ǔ 4I%L6c +Sc>/Metadata 28836 0 R/Names 28840 0 R/OpenAction[28841 0 R/XYZ null null null]/Outlines 28880 0 R/PageLabels 28724 0 R/PageLayout/SinglePage/PageMode/UseOutlines/Pages 28726 0 R/StructTreeRoot 9516 0 R/Type/Catalog>> endobj 28840 0 obj <> endobj 28841 0 obj <> endobj 28842 0 obj <>/Border[0 0 0]/Rect[490.62 73.16 527.94 81.92]/Subtype/Link/Type/Annot>> endobj 28843 0 obj <>/Border[0 0 0]/Rect[512.94 87.44 527.94 98.66]/Subtype/Link/Type/Annot>> endobj 28844 0 obj <> endobj 28845 0 obj <> endobj 28846 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 28847 0 obj <> endobj 28848 0 obj [/ICCBased 28868 0 R] endobj 28849 0 obj <> endobj 28850 0 obj <>stream +hTKo0 +Sm!R$micIAk{H]<;mwH#Ui.tjUM9Ne70RSuV+7è/lvxڿ<ϳL"ݨe4;sSKjd)>_Lß߳ŤhtNV 5UHU=˯\{r.yj)䎢-H%\2? +T2Fr(J!cGEUnj([Kn؀BS&ye)2![i̙\X\=G֔}w$`h ' ōeoBL"Ed +uݢR6)ru!hRwM}Ʀ +endstream endobj 28851 0 obj <>stream +HtU]k$G |_ρѶ/0 9_Cȃ3͆ )guaLUԒzvn} 77?Owo)i^RIJ\)%RiaKm$_^xp˴[FPSXb-OĘ8,1j3s|1F%^Xvd̙`Smc^6C#}Ϻgb{A9ZbwG-M,6(_Rc#4mJ]-cJz z#HRq!A.:?ܚ|mS$!)xxz o%q(%s|g?oȖit8Tϧ帆$ݾ]m$Zc +HQEa}A+T"ӆq1:2`&iJ=W 7AลkY9ƨGBX`(.TU0 0 sGш-5|tϿ&)D9tr1Lnb@g v ++1√ݍ3&TˀhT`965]h|'/跘XSVZ= (hpG]ldyI%pƜIcZֱ箱`&sU +endstream endobj 28852 0 obj <>stream +HtUKv$! )9ƜߛUoF2P]$|,9χTj9iHwX^y<$ɥF(W^2N %qf|s|3=Ή䔖ًlpyTwOKR % e} `3Yl"Jn)㖼JrWik]T#s.+NN5'@^qdl:`$?$$Ed&W euo98&9y8;oP UMu#Xkm~SoU1ZT,26jCWQUg#+60.ybCu:Tl 0 YM&b8X#̑f ]HzGW+2~tO6rwU4DПޗ^{w5LL(AIxd7hY Y1RmeH[7pR*H"bɷjŰ + Yqe";Ɣ kSdcfLݒ 5?xmA ݱ־hL]Fo*s 襃TKd: 9tj},eFOS#XP(;U}uam{!蔁whx&sM ,.+ߙ +]q`~\l +endstream endobj 28853 0 obj <>stream +HUI1 + Wy C IIlc ЭrSdq)FS/: p `utߠKP/m$Y~[.f+0}iCl Ԕ'`+),ʲ=D.g;v& n|@J^su-=Q/}Pn<;?|_SIM9x*]Nm@dS@ ZMfo' @W"qa"v y/8[U4Nu% p,b"X[ys[q)8W6@5H؊Ӆ9VS1 +BXΊ~ZA~zM1"\*9r#hM"(Iw5Gd@/b5|Dq}3<"u*ᶩ65D"Îv7ljF^v *9YvcGtٓUX;5iLϨCOEaQ?̱ZoPhZ{9nwU%?RaT؋TXJEY}RpH7!!}RaTH +:OWWWS*8怵9RR!2Axʄ>t`3\W +endstream endobj 28854 0 obj <> endobj 28855 0 obj <>stream +hTn0 } +84 - Ub0& &.QZX_c'{ Npb]DhH8F#)[a vӵ뺃*]&e7-K>eB3Lʔ|b7`Pͫ0Ѣk pdt)썐h>#c‡j^j-嗰o +O)#ʶxQ.OD4ЂjQKfEo-eU$<%!4 B2S!Ye{ MY^u |d`:G\ +endstream endobj 28856 0 obj <>stream +HtUI0 + ")R3F&)w,$)娍(0YӼoRI + >Wxw^:i+_J4`˜KuƳzP*ms ؓ'N pinjAUZ~pb!i!ȾX#}jGl;r?1Cp=$ "QƥG5}߲﷪slR#KTCB&Wwp2\( uC6I2S]˟ =+G2+5M2\pe. OO]'W4qi7UAH_ihض =W64'zi?Y̛xx(5öM!;ՇK`0*_W5ixj\+f")zEp`ѣES(O' <Ȫ׀=ׂ9ӞD(^/1lw`/Ěg (ZqenpdqEs-D;Fke=2WGif +@6j'{"Ʋ&7kߣs@DXqD?6Hb}D)eIyGTs9?2uEvR5,0y*_9l xx}lo>*?^1 +endstream endobj 28857 0 obj <>stream +HtT]k0 }ϯd m! uee~,;%׎$KGGQze8-SV-f 7vQuWam[ ֲƠ'o&5Zm7$N `quOlBv>ⶂt*plȍUTSoT$qo[kPWrr-chn|=ft8.`❟ 5:+Jc.!KĀ7c6";Re 9>~}:۫>z.XwU Vfn!Pė,B氕t6__gxwF#.C&7 3:Ǝ +ѤC EwFHF&ǘ}yma]-+~8Ȩm| GjP }VIJk0k`B݌+#~.贝9ծq쉛cq[nnoPFq(؈Gix͕7:0RGQEPQ\X uXw֋ij/$BgjBsGX pBَKQ4{."|Orn_O׍!vHIEs")ax.)eJ2Z¥CͪYiQYXDN+]ހ +endstream endobj 28858 0 obj <> endobj 28859 0 obj <> endobj 28860 0 obj <> endobj 28861 0 obj <>stream +h4O_HSa>67[i?+!pb?XݘnQsafAł!="2拡Mn؁9`*Bcfgחg*MLȭW. *k{gK(o Q Ckbv`_ea>`,3F֢[_g2LCSTUfڇLzSnίAUҞi3E3urqPh7}Pwo;и,9qov4H+?5f:dϓ(3DiD8gvd3,ߥ6:zO7j\YB6KsK|Fl3r.YT=o+oRބd g@\ujSlS+ C>a#*=+^fPCCj`;*-$_c9vw+ء\v4K` + 0D +endstream endobj 28862 0 obj <> endobj 28863 0 obj <>stream +hTKo |9nmb?kϗȧ s$^s=Jx3S,<4LֳX#]~/ل"? v +endstream endobj 28864 0 obj <> endobj 28865 0 obj <>stream +HT0 D=mpqW$Uq5*(Rr)E9C!h:kC0)*$,S.5ob NN:Dh?LzzF1џek!UKF᝾ ;?ц-PT+FUIc&k<f+4?PѼex{\ח˷z %!*; 8OgEY}k/uEf%/Qóy~f:bM jY­b9Rh3JcCl”uJ# * +{6ȁeY27٫cg=2R湿86QnEIAeܬ v(I ;N3fjcXH@FƣHV Qw؃{ S@Q*vGiCITSL4(zעL 2z=WZrTE: 8 utUI3+q6 +2sA_ +0B +endstream endobj 28866 0 obj <>stream +HTn0)|L,m@hnCVEwdSuj=ƄPƘ%M}cZOîdLu`sRTYxؓx ?vB*4ԼˮzmnۑzH/.EYZ9/B *ZP$Cư#Z|}>U2!Z0rcL>a -z+4֛`(owu/Ĝ*NX5ubYȂ2Vy mHԦfo(i[ў=m'^?3)KsgSBRV k}ƕDKDz_ 6#(OwpԔњwR(R2ʬ#e,LEn0NZz 9[3,Q=Wl>wCcy~ٍqg7M#Րq9-!pERN +(mzNR?.iP +7*R<_E +u0td)R% W%}IS(Z}ͻq׵0~p&*pAC;~ Od鴞Gղ^@hD&t J'ۥCo j +lY`uƝ9\ +C%JWn]?m? U9 +endstream endobj 28867 0 obj <>stream +HTM0 WSWlݏ +=2aLag۝Jtl !,{OVjad2wc2N wQ\^ ߛ0.BF: +AkA(Zj`ǏO?Ly_Q}H9]NY$7oCl\tI¶:o:Æ-~nMcl$܌pu} 0jSDzh*i17H5f[`1U +su${o;V::ab: V\=֭:#!/Q ;2Jip޸Ŏ;"%`-8mmʊb'^'΅Xց?Hxdg$gpEuR@j5v6  + dK˳..yS;*ɬ35,)sEF=C?tjzWـګFT H?BӧI3V=6ߨ5_,*ưUi(2Kr3;gD{9sT @x[h)ϕ$MoD5eGuR5$2 cTӑu8w#=U~y||Ǔhۇ~7N'٬_?nox W:NXÅ>ZV >stream +hޜwTTϽwz0z.0. Qf Ml@DEHb!(`HPb0dFJ|yyǽgs{.$O./ 'z8WGбx0Y驾A@$/7z HeOOҬT_lN:K"N3"$F/JPrb[䥟}Qd[Sl1x{#bG\NoX3I[ql2$ 8xtrp/8 pCfq.Knjm͠{r28?.)ɩL^6g,qm"[Z[Z~Q7%" +3R`̊j[~: w!$E}kyhyRm333: }=#vʉe +tqX)I)B>== <8Xȉ9yP:8p΍Lg kk Ѐ$t!0V87`ɀ2A. +@JPA#h'@8 .: ``a!2D!UH 2 dA>P ECqB**Z:]B=h~L2  5pN:|ó@ QC !H,G6 H9R ]H/r Aw( Q(OTJCm@*QGQ-(j MF+ 6h/*t:].G7Зw7 Xa<1:L1s3bXyeb~19 vGĩp+5qy^ oó|= ?'Htv`Ba3BDxHxE$Չ"XAP44077&9$An0;T2421t.54ld+s;# V]=iY9FgM֚k&=%Ō:nc1gcbcfX.}lGv{c)LŖN퉛w/p+/<j$.$%&㒣OdxTԂԑ4i3|o~C:&S@L u[Uo3C3OfIgwdO|;W-wsz 17jl8c͉̈́3+{%lKWr[ $ +llGmnacOkE&EEY׾2⫅;K,KhtiN=e²{^-_V^Oo§s]?TWީrjVQ=w}`嚢zԶiו8>k׍ + E  [ly邟~_Y53rW򯎼^{7so}x>|쇊z>yz +endstream endobj 28869 0 obj <>stream +hޚ[0002201GH Z +endstream endobj 28870 0 obj <>stream +h{ xUg7!@ HpÅ0LBČ@HH"HB(B2ԑI "j uBZ*ϩ*ksnnCsgkkա2RY]7:>-(uCDƬs콽q2#2X49!' |%#ЋEh:A}(tQG'EJE} L|-PD~~eker7/&j+5YW\}gh ̈́= y#sy߯eUgbчBK ^ {" xA !b+BubI< +QX:H Ej5I3~ZiIZ6Hݢmjg#Ҙi,5* LƳ"=KQ?qZGPUJ-N9>ObuMUveʝbZ_hSt^K_Q~|SGa")ݬҌFnڋsb"22̼4Q*DJ";u:x` +dJ +y납`?=#Ogjѹ y:EZR2 jFZ#Mr_EÁ4 9_\8>7q Qozm7io@Fө>ѹon j_?c +Ti`Z&>1O9` _`l?180Wެ,z&.WM ,Vԫo?D ( O29? `CA_Ѧ_Io +F2,FL Fr<mw E͘B;h#IHy&';t`O٩㭕?'(ȶ0o?1;xye +MB X6: +hRӔ%9/Λl~S e/CAoR~t㘌ҾA*KòF2l1ijb?) | J́ܨTJZ)c/3]0?/213U9$l6}k`/*aL5Aլ +Ocs}iAlJpoF^B0"K?+H`?kg0t@ߗ(VehB`NF8 yU۩A5) B>\(nd1K[򡏉\ɉS|<|l`&C+ɒ +ICH+T~4WL$D" DsBY7R3X +f2ࣴl EഄPBnsc/2 FABfHC˝dI'{NERk +JQ$lBAܜ`(_A6D|A7(=`A +YKm A? %}Qw@m2'!L7'_XždvJ,Jpi <$QHYBph +!_*-(vɮ.L@B¡<d%h _%g&WL𴩎^Yt"$AIoƋ1r^@G6C hU(kOV!50+b ^F,n sSۉgnπM?=mU\k4XmQγTަ 4_9+)_Mw0攢yH@r^>9@7(88/ʘH:-ic^D}#4؈-GC3ކ|48 6vo"mEx3#_W9³ۣv{۪^|hK +,E@3aH +#L1=(-Ft0Y5‹> @"NK}FH1Ҍg :y8?jcjJ[f%zTbRl+('0@g P7^U+tuStC?7V6f,'Km$r<^XgKS6)J.N֩ AACy܁glZ&^Z:9º&e1aam*Ju}CYh)mC$ؔM4X[@ivY8i9=L=З7"E0<'40ڹ"i MkE' oZ +S:0'vc?萺}}|m26Xj봐~t4~FMSu~lFc;wӰe71ʷu+C؇F3M#i3w ]Fw<͝МkVi{g.⩎3=hm϶I{5="_ݭ_@J~7cӵ|@;rGY&/s(sJZ A |1Ɓ2s*SuײakS1Bu'8R$m2HR/8t"<ّHmyR-mR2?|a4bi'ol1SFlXڅ2#P|(݄ ilI7/{ОZzd8]=]ll9u7%?(d0Jĭa'Qr݇񛌱{?6y/>O +e )_6CiDkg4t'uJz53ϡ{hCn giZ&jzVpXv*u|K?A8^y5Ge4KH +[MF_# +zF6G`l-NֱS'/ W.ahP)OE>N{@VVV`.#hed֓sG?OYan=o}^0Tq5λpp=`~s 52!^vy]0F[-0*1%N6F}L]|IQ8e #NQ pgcy:eTewZ[Xy&у>uP1O-Ci ^9 +8_1x2}X=)Q-WrUYq?௛vnm 4 tCǬ{ܺ[r4Je׀#+]=!Gr-&[s`Xзٻ=P 71 yOZ0-6~eyvyYV -n`|~]#}/X/NDVy!<!f?r:N/V +|=/;kkNBk ka{.jk>W[8Y-ۼ2heMMCwf}g_A7=]|ɗ=oV-mNGq؞6ư/X0O`wn39[˜9ߘSۘ•1ឋ)j +st׸൅lǡf!p-7QC{/0/b~Km""ismצne\04*N_uV0:W7ӎ.VړO \ō)A#A#aGWdroy /%WE=Qe1Ж>±7~Yi_c0ԛ#τk5=֡t{S<_)Zc#x<slQȳrwWGV0r7m8BŔ[7V7bm F<_vU/{=Mn@7~LxN>o&ү>Yo9>[4d{s9߽O?Fwa=E7kK[n^ W^u{P1apRΟ}oRHP`=vq8߈1: c:=,ounfddgGhI5̏l +H}5s<:Oy]1ַ4ViV 6}vX,BlMR> m佹DxU{vZsI֡LjΆrn(>-V?Zo*RP1Cd9Px sĿ |6윫YtA5 +}(a(E}Ng?7ׇK8ea@:CNbul/Gsy&hg3H1Vin /.n i7x74 ħ^+WOrI>T 07?q%9vH7?ֱU`m|pPh_K LZLg jst56ȝż@UU]g3VO +7>u=[fxz:}U32_ +AYըzւ"3ɘZ~/ vֶLУԻ<|',~4 +2Ω;tvFaH~NK/0 kFν}dR,)Ϝ' ktҿ=y"{ueMi=aOMmw'ꦗSv7>RC<Y+bCyeS ++k?*S{==<o0S8 4O͓<; ]Y!QAwdc)e# H =)gf_47i4\̳8ﹽ `َ +Yv^7o2 4V{v'j> !p?վKZ}vY+=4|2gn0hC ǏvS.Jߐvne]c_MWt*~5ZދCoiR^N-4L55M;\Z=x^'WMKOT Pyws{5QEA> xǂ9[ZtFҍP/dsԂȀAKC<;W===|$ ;`𚍇+|WI->Nz ; sS@ ГP5cm#G+,{OQcb񂬫XMEyH`£Pcg !k +^sDTI)S] ~ A.}}^?i~{9M'h~=u/?xzpz} 3FaKo.}byyv`Rl4}H|áo;en-c)O[cMtZq }Obi=vvjk Ui<`B{LN Wy׵%<vޛuՏg!i5JEͨ%_x⾻Q]Zî3ˠ#gb^9d6O" 6F)G-~APk{OI[~V=Vy۔j͛?9TޛcTm*khg0n"O+f[6U|4؛b-Ql qR}T*|V:6%"hQiY6K%W eR޲l>8jx=-Լ6{\M?YvRBއijZ?1/پCk <{u־Y[at9O/ļ;\'{|$zl}!.3(!`kސs}C,z| +ExSqW2 !rȻP{O)l. v~<60 +zI# kwWo+ϩrEl5r."fiS2MBE#b(ݠ*O~BGN_QDb6Fb~g "Az~'\iE; :byZ#>5|Ҩ{k/@L q3aVJ^#6g6y@=ji`M;3eFn_$4Ɇ<#̇pq`Y}MQj[iPՔW8ɷ,[l9_,pvϨ On~vsRGIq:9\wֆIP [,8͘P>8>dXOQ{[C^~4~yu4F"˺2T0e z'yGz]wk0FPV ~%H6 +eOɾji A﵀&v6L[q|~Aڄpl l\{l?TS[9l>c;它m>@] &&){ }I1:iN#Z$'$@F{]VSf(̃ޔ}o(s}m>s|@w:/SD@\˕4;1uO״k\d1{Yq6ru>d +tnAz-`Wj$n(V? 8HLëA6.k}hCCgÆwP@[G=6blqYkt}s.K}|xNS5lJ;5~~y&sXgnVZRKOkFt/rm+AgSh(q;@ +3:PCYӠ/bOtv.0/6C*dV ݘqIm*jdiʍR6j{1z>@A0xh76co\k]h$ɻ\v +AE;N] 05MUg&7I&iӦ@S-"V +"0(D""~ʦSTfI ^DnCөuwL'M9IJ><<_|C\iq~WR%#Z_g9 +cɗ_Ewfo[` 1 `:s +"Yf @@~M'^Avݪy{[\0civԧtMt  {mht{#qp-s9/b?=B9 '=&P~c@_o3п [ -Pļm܇cjO\oу|"PzhB$!awW'RtpH~8W'F$:*ù ( ^8U(p +W`7PһA.;\>Kj} g= 3BV]h +@ ."W8q#1ݕxUKU9cfS|c?)C6*C62sll.mN t+ 2c@W4QBHpBT$M."+ +Io0Y*_O~^81'̡p +-"Gp|H>hp +"D>R%9J;(U>t}(=#kյf@qqyY$I|] + + +#@܉$CG08P_NF8yZ~X .`6@ˠT/ޅIH +#J@3IV"<6P$M^G.x7 ^oX~ϑ >gT@YG5@ e` +@ ."+ 3!mI@  "<&ZxpJGExh^0Z - Fh20(cE%)KqL)R t]@_'"Cm'pIvn{-m -n6?np[QaZ͍Cq[1n+mA\%IAbRUXQOkƀ1h|SPfg 3? ;eFU,y|U*ѫWf(ZN\H@]b(@@ z"c"A˳,LGOɫpQ@ +|էF]>l)T#NEgIbߕ }$&pWށ44ע0.*Hci]|%+Fx̜ &׾}I觾 &yW^:x@hRWNAFzW8tnhu4pob`X14su[Z+h77PUgʁH +̖X!?\ T͘Qċa^i4E)UHä) K^ɮTIg:N:C:{2}A @Ҋ`3\%d[`ףv@ [헦Xqvۭ aHCRJ^ih<0;j;ٖh$NKq#-z懚yg:R{o)eȕ*<lކiU/?4 N Ιu08+f/'Dsc755$q#CAW+At(gey+ǔpkф񇋊+ZM+8\13g:h9(MFHp1c$WHYH`-q +/C\(&Dps&, +M`^w.v ^Do۹[,EME-ۣC9:1Z=!4|SĩW@[SeS*i[v5=UM۪mM&Sئqs2u1ȠMc1LGd4Cczkxzz L2es-.[BcQd5=Vk3eބvm5^wY% Σ]jf0LHOg.Q" kqzMjĵgC_̞u++Z8[sȲ9}5Y,+:$<Қ ++2 L9MH.!w.z8ájp#:`$q| &p F q`o~n%V@ "O菿ҧn逸$' " ӗqL4/$A0_RBc; $yR!,=ytCd'qrGKwԾ8\ ňK +pr;}Y7(ȟ:] h΀mD: ++d+0\ZieI@0A4|8 I6=уVh\s|`MTbq0ܨ8cJ?Xkk)(ǑW3b^ BHp㮫SϸjG4ٸrwEFts?gJ GO|py!I{m_O>4n{UyΎhAz"ARQR݊YR]&hqler!G^ٽr>gw+~V+^o1ae\&)sRbGIQdYn˅dnQǘ$Q~Lq=4K~1)hXj2I\L9ۣ }T2+L-Q( +e{3[ܴ2y3H [f$sy$C=ŬH,VQa!0P.[*f+*8 +1G+pp![g+6ק.̽3虏8 +7FыfkNq޷OOoϬt +%04 {٨bcskm珣 :э#Fߦ\ ӡ9 E{Nk'kVytlwm8F .o7gKH^r"יִ>Z#16g$66;@&;zIy^mEA/eu:A3y|ٿS_![@ l+h2I4`ͲIt."I&lVjV;/q:,!5hS"/Aݣ)sH*dzbG&C8C`YMg)Y\.ZlVՠq4BĢ+VB VtDiJDD+ ?o\~5˿7j5wYSzd=v5Um1eCU B((D&&COqw#S iDN6O՞xE fi,Ѡ;CnhB5BJE+?_HAԇx#F2ZH99"CJy\,8 'HFMA-h9Z@ Pף줗I5%I"֐Y^٩FV:\GÓ=onq,!߅hq gYx20B$OXD~CT"='(:Fw%(ni00t +'N@GB9T&KLG^A9?qsg>VI"\Fb0a%Z^8 {#ܝGheSD>k=xk-zՌތLJ\r :h>;5#vȄg@&lNW)aBM_Q\<E4uz 2+i4BiP̿n1a_o>_5 W +RFZkN;l3l3aM&np\nɻTZjX`[X罛%iXk*>!UpG5o`^M!#24"WK!C`M4ZZA<^L O3јZgd0dpt4ZZi~MtZGP鲤(Cz :PRy%C+Qs;׮M)=\v V3@ a&asy,B&S5W4B;Yܶ4[TВ8cw&V]r~uo<5/tRW=q ?zx1^[@?)7c26Q zC䜴P3VљR~=E/XDpz >'3tfSL0u1u51uii9cڗg4 +]&.M pfq+3#~pA0A秐Tl5Acʺ$4 BQ}7?j1?x@r~Rl3cQzm6qB ba^U?5T%]wFCtO BMv(UH-TP& Vf ɵsA3XmdNw'a df +Ljm5M-Sb 4dnZj\hZk]k{zǼ?z32D/|y)uy>NI)lIb'u`b2wy4ʭh.k4Hi!z“&3#m:!,ǒKr y&eMV{UU_ U g5M7Cx%I!~͝ˈѮ0g& RjP\fMcfn٢(j*ᾋ/A~QU*BMYzhNIDpcg`<{oКܲ΂~sKo]xԧ,7~gOݻMG^-e<'t.< +s4)G5$2{g"f$bĖ"bC&H,.H dC.9D!cZuuqq pwYe!Il$rs +"F-] Gh2y Ad>In=&saNT %WrWk**iP5(JDT$@zgS`{(GcB\DeAN_[jkqvՊ,Bc +ZokX-W8l1h4Q3ۦpr9"5zS`^Rq.B)]NR%Y8 &{7={3U[^3/@W%r:b!6cv9f3N8 ULYi5ySLInHAX +0i2t 89*,LYِwwm5mn<&;69nMffMk0#75βqB0,!K\]Ry?an0PĝaAI\xP$LG͗eWyf:d V]YDBf\(781F=fŒK)6t;20x"gb(Xf4]vjew1sǐ;oMi[P/q3KLssNү_8q?4q3 9f-!~MW(ُQJ-6R.Mkr*ܫi*4|4xlRnPĺ0ZƷYmE +1,ɸqF&s^ +Ƽ| Rc؅_?ŃxLTTpUз/ќ[= |TM?gtbZMsֻx%i0jjt9\Nʳ+I:"SLo&l@$ +$sVe5y`,S2+^LpE*2ڄp 5V~ +EM{ؤ3n!'oW>N<>诞;~=k_䧙O.K7{ x>~~O?+0J!^:A Gt +uLzqr$Ϭk/ZB:0LWV'~GD{}OSqYat7.źRH}S'=@#a-Lf-sQ1sq,2Cڍ]#|FsXIcY . P9Vn"`-~bհᇆ/  iXEdMD` /t$$yQrax19h&btcN3Y֑ hJ1|U0iҝ6'yY~ϏW26pEf NM< u@/ᗂ,"*,*BT[QAOwٴ%Qs;;{M6c Bl V@@Q xT5Z +OmŃ +$VVm=z"ZiRl~f#ŝyfvv2>y v,&?xRdže}r}u+m|ҕn'Й6Yzn(}9Գ/Gϡ覕gͩs|Z)pͩ~y3`WߏXP{ѺۑaTKK>gG6p[W_}Fɗ^Rݿ.N)׾tΚgpLTtN7gx!`LK +s +Mʘ>c(2AQ{9U$:)RpJ8,;CHuf[ndė46$e>ym2FKĥ"c x8`("߁ +Xl2>W?>%N4NgY9NtQpTEAu!! nZJT|YslS}+)bB`>"/1q##l7$Şν½DZ!WTvTrl]U.v~ ׄ@u"ac~PR+)'efO0k7\mڥڵfnRN)q|+֘?skT$hllh`b0*0b~[*6T= BToB(#$UkI`,$("HT'X +p\ƹQͨ1r_U&wS0^jd<@.$I)aWVPʴZNZ*NZ>ϲC4I{*IH!i5E2Co]nc+R0xIUT*t\RcJY\g6%׭ͥWO1s5F矖2w\oxril{kEٓ=sfM.uyNT#GM',|n + +Iеٗ?PIfvDŻk똟򏱿Оd{W=݌{qQ4ƒUi\!?/~yS. x53"i&RY>gAބFdd3LHUazazf\f"LH%E 'Zh5MeK lڵW!E+y6 czsbrxeҒ +R <15]6Jgѥp鍻@Svl0ϡ !F>pJ7>M"w_ 3gHf:~,WEb+֟ʈ\6SLM>oG|m +Pv6 )b,l{` @?|:)Կu9B:A=l[.H׫IaDZ0`IC3I`xkK>fnݖy"uf45a5·phD:ZճFuҵܿed`@ӬOIx-We,+"Xa VւtRg@^ AAYKCV9P9P,9VPvڎ OlSPRki+4nRG([,}%NVKhhDPy ESlIᔴ;;~/Cp,xg0] k΢vZc]B@L43 0Y ʗA/u4uO86u7X}}EƿFhI'xwW203{7prVCM٧싼a%qg?^pSZse@9"4t*?`KVٝ$u?{`P?c1^"\/hk$K̳eX$FIsT VfO̻G~"9r$\_ +\OSφ Nţs'VB0+ m-rF؊fn +2sStA I:98Эz ""J6@g&wHH;G5qŚR2 3'Vr\ޗ#,Z ?WMt;Ε,C@(R8XA'7z6۳QDQ +.M _3 |q i~cWw⽟8KF:s WF<ψ6Їe:c1c/-o-o 넯9oQNkyQ :bX7ɉXR x\O($_nEIQ²"PdP/5@C7ya3 ߶c;žEqf\x t-G<݊DkiT A !dP[dh(Ԥl醇,b>>r7JЛ< [pEoː΀4^XI[*E% tumjLQ<CEUF"zdG$+$u |Zdv܎7O}hVUFfRANիl֑>ع3Y(2$b2pa[_wndp8S$jMC"~sœ_S3Q!_gƜI+ 6f]&_M)%;>Oɭ# XYkBʯ F96IYdqQ +1Tx^/q'䗛 Uh%H*+2ud͈s,| j*] f΂LOD͌h Χ(HW(N|d?Ok<=T̍ ˚ E5Bwbނ?CFr,ES]$$|u9,.pj]8vD]"9,;Ecg !Y, ˬk͊IOEb4Kfي ,R$͎Lӂ35Yh XOWJ7o}|Koߢѽ;K{?SWԂHxrBGYby><Ә[`,qCC^dc7EťǪrVDv&Y'1 ?ҜלAOGpXeifd@uPN7Pc |I<@Lp۬ubi 't]7Ti`q|5917?SYʁ;Nܟx?Vb\m|Uf&3E~Nͼ̅Oٟ31>d> ~,O"[h} Wh̴r鱩USkff +<xjnrn2y+2?8vϙB~E[9渐/O9YW}&!z#<& N$, &4 +T"op(ID{ zb䝁#ƮFܘr(Q 8JfT_pÐ묃5mnaii6^4^,څ f%qʝ+y?0.w(I'Y֕ n[I5]Շl0>Ss}>/=&4Eb.ػ@w>@?/]` voFgo􋷶޻xmA7JpquD,BWQyLqUWqEi&FCB87Ai9׵m7{ްt jSc+뗹׸=s?r`˓q{ܪdFq*L+!I +#Du2 2jjB &^ːH"#8Ђc(@dzE+ͦCֲ }Ws'|klRC#qv dm7l5ȗ'Ň XT^ۘ1'ND9*&||,g@lTW|tDHa0uj}įf= +֖æ79' 9点#S3n?y4>y=^>R'}lˎ[J~#3L{V'KX,t5Dtd$Oth-HZ -B+:$>)L$c?yxҰi!^0 4*RXN;ʘ$!2 `SBY{(jWOFKd(fI[ Y)Prޓv8<݆hd40j~4 +NEjM1vQ7]G].Hm/\yᣧ/TZ~Ҳ%?z~{#M@u]~{/}~zøǬ:v꒚-𹳗j_`vsy^r+.J NzPfcr]!8U׿2No `yac@xNëVk6!p\@h+: +m?skX;wUBozH8{nűK=(ruL=Ij[s7q=${7O|Q}v}$NfsT{S[7a*7TerF Jb2^X +oz -:x'_-);#=~yO e"C9yiB ֶw 1XRg5Z]h٥}Њm^~{wJi<̝G A6L8)TΘ8 l#*̰NY8H=٧iDig;q"r͉Nu +`7o>,eDa靗w^473 +A4MNʌ(-b,Ң]}]D]:k8_;~19I</;<5ʢ ع'Hc6DYP[+ HiA!8p !Dd'TW; 8 CA{yF )lOxʣG3~>@놐.!?#[;@[D +)s`]ț{ u +Cs*nȤB>Xn|sxL(nj_5.493<.4g ww'DhڑJ"ᬿoQUgOOUV__^w~Λĺ1]6 < ҠH_x .>̏n? nPUC~QJ2q!?8=@H`0&}FH$ߗ e `LQy" zA3% AƲyݺ!<׫۰WV``${IF-XӒ*SU b4Ue&?%ռ-)wȬ܇n{,v5ࢼd>$+> //AU8LWԍ!o˹DZ];KvuP`eBj"Y{(3Ikp4vhxcKԥvb9/d,|4=lѢQ&)j;TIjnI^l+D| (aÒDU7acr-EKʻGC] H+*iNʊO$rMbTE@r ,@P^RrA)5EQ {l*ּN`y&H}`I8ԫ|a1HKrVi<ꣲY/Nj5G1`3sSHbET%Eǜb l糳J~UܠMD6)VVϗ랲El):Vi9'/HvUFאP!8I`Zvٖ1CdNL g!4xȪ~ű.҈<.=_}# LdG@͞)SZ{7a/e܍2,`w#183anZd> \=RZv5 ff bzf<[M1BҤưils8ExqѨ~;w +G{O +R; 9473 U +eG4܈# +bGqYuU3Xc4[cR 6Xަu~ :?m]%&LwZ"u`߄9Jp]pa}dkAcl?R!! ?wacbpq3e鷋J9M cCƟZ`L#2&`qlt`*B z]dfT #5!]f_Q9@gE'XnUir&˴=+,g@sTAiqz!D2*y3VVhh0zPctf/( TƆh%9ړm{hbǝF+hSA6fUUocGBsNfPUB`Gu˷ё5Z*,u<7a +~_ Xa2m=sxUǏ=%yꚫ.o +] km7`ӱ.\8eKhδǮ;}I<3y3=S3g5h/%AIıI +ī4?mUpUUu9vLlEպ*a59!pB(ybȹrmUշo?~4?Iŷ v?Cjuy4 +**`eJ C+.J©gpZ%} +()#c ao̘N9#iD2Z2Zw =6Bmh6bџBTQIQ& RQ+zi<2 +q:‰<ழfJ= *ѱK+0\ ݃dCn]+NDpaљ/}-sn_\|J/~/Z윛^~߼ }pFaCN-;cCp¢JLEʍ|3+qfLqbK࣪9wߗٗd&$! abj.ʢ"(HQ "**RoZ .ϥ, *|.>*-jL?{'7`!Yo"HZk-TQd[=eL~IrLٱ١ٱcϵͧ%%h1Q]՞QK;UQ?A^}qqn,6X? G Cß1?9s sd"7)@GiVgp!tۈt<H +ˎ~QD~wS[B8!d0@V\TeHVⱏwF\Ɍ;>qw.٘on\oݺ{~6BY~|2}7Ožse#. +ଽ.TbrKW)bDt\@4Ki YkW#б bQcicDɦҲv_{>^jsOCȘ1f] 1RI-Ԓ2?+Nvf`&(E[`x [Y+8/>TX3J0-39D!ƔِGorқћ]Ү1yeLWw\iXKXUGKM_?`?:+؏fKybO QT0os5ϐ9a{८4,A#1&16$'S=IAےK ZjLf +ƨFZX0 ܋rؘb>!+X zRx T Og +L8)ȫ;5КS5!%U鉯ž WQVyN=O w*p /O9)Tጛ.RE / SS|u0)dEj;!?wOaG + ֖B``GET%Rcm۸1sS/w/&_d?.O^p." 3> 3 cLk^cc`3F1x>]2(I;|*#M>A=A=7")?}Y=OAQ9ց)L?9vxZn Me9Ws^u>jrR7C.<Xbxe(mV^y۽q#׽×oy?ozGmses'gkqxdK޻L{}[>YsUNqGAf9XP$(DK 愰"#5*Տmq! I0JC$50D(TM$9Oulr$Z&LK&;M״*!رœ{E;ZKjEw_KdeSrS%`H~w[wb?@CO΂/6KyN7Բ7>ebE |iP}C\rl wDX\@MALXe-Nפ^Җ@ZN7(0t*3L:mx,ТRIW* H+Wԛ(PUSN#1$ n9~p--Miԉ.OZ2{ +Q?As^S=.6e粟7>;Ħ7-t=5 +cz*}nr>[y #=v=iGPA.ϲ˷IS0囘' k:!'R6C/J7sJo~ #FlYE;eQLHTVb4!d”ܦa'6XbiݒN*ZcJa~BzI}E{?:\z)`^sH+sR0E)U~}'|+"!|SUiRR{l +Zj7ƣp&H +(I3+N!iD9|@:aB]ޮ킫{N*Cm'*v{ N#j+`z ՅU+m-'~_lILW"8ٱL$e694FKܸ -S'YoW=5\z/^xv/ݛw ԣǗ]ӧFV^?: +?U![s,ij$>ƸلCq6+p+䣚>";_/^kf +[*U|T3hS4o񚜲<*45V Q &I?G[}q6ΠH^GcԏZ˿ߝ'V ue=>sS1XPC&Gi:; oŐr>-IeAfx4dۃ]:RAɓQ .)8VRן`i7XLSm\z ϲuo|Zm7{vCġCl=FpeG$CbX - u +XWE`$s=5:)>/]`v] rJ kk 7s%n|J^ʱ4+X!#jo@(\pmRnU>hk-ujpRƞAP+ L!+0BYNBcmY9YӽMYvqA= V~kŠI.Cj'IyH2]8</ڙ5MekK<7QR,31Zvca-نqa:,M|7 ~m=z^ `:Jλ+\VaT٠~HYhjf~Ϝj-YɎRk*#gU,nȊyRsK%Ruymli/~@@pP6Z|m7'O/+Mҙh4hZWDP2ҥD>#/l*x]JQ9{W+ِ.1JjA- DN(9[ /̀!8vͰ‹̔8( /GO\PхU)GiyVW0]ie/F jT7h$H%bYtCܻoɍ:GgV+o:{Yz?8}7Qsb F Ue +ʣh*Y;# *B꬜2tejA/(T#EԪ&b'O'>K} jdZt>f1Tbz 0B0\m@pZJrߠ HѢ{\ABtTXi|*PknOyfd 1w/`a~dWNTXRŌ Ē8m 䙋;/̳:p%[D9O\bCx Dz4/7˹BԹ([>`\ 5:`Wl9\SbyRUkj w&ŒةMŸ!|i<_זK%eD7Ȩxqº +kV֮ ~:iyzެ6\oFo4e8bFoT8Oϩ2EXetEMTLH\؜؛D&q}I(`E0© M@d}hBD =h*L*@8z~Ų +T+rgN`MV2IM8xy3mN[B(s"K2%g'HD `iį=]$F^'FR'{JIY QgfL ftdˀ21'$N!=FKZ:J~#qqBbKT8a*鞎@D}n>M0cn%UhUzB];Up:˴͐Z6!Me߭kRFSQr +6K2gS cV O + MF֭&.0bx4`!P*FG+d2RAȰ"B`Wj|]_W?Ƶξ,O#mX%rcźm}Yݚ[Θ0dzo{eEa%]=\Zm{^⪉߫]7} 9^`m5銐\2ay/ fڡFQ +UvDEH1>l 2>5u6bcmj2d@Ԕ򆌣FF1jP d68|S N&- k  pI" ^ !RT.Ϡ^IĄ5'n&FK@ۺ{~Y ⬭"X08k%0@憤eG.Kw<@Ks/\{Xmx e?|`'Ӛ܉An=ISXeCтAj!X+* E-%: d@!Hy Ik1ZuTjQ:Q+baOtc#,P `lz@$JJ #I<)%9d6[5zH8HHYitPb%?pʁ—iNf=5HM.MO(zS +nAn@i&ɚfhd>9MVMMYc:wXr-W1J0%ծNb h\O0^źn֬E9h=4ӧ̚{Q~$Q`SH[g_|EgD˥`0.+9ReD 6*kkVQHnvU=LjReU4Iչ|os{C:ZsKhx.Bjp ,n>^~qc7IS*)'Q 9r%αøu$}W$%u #PGւxWGj]~<ע}%j`ϰG[^ϐoU8P~ +'Wީ Tʶ{_$ƭ \>U5 4rgU^9ce9l18ѪtZR be֒-c~ F6dtuŐ/Gk>}A_|đ2U3]坝˫ROI c+ BLXH)B9Q*g)#L*gSK Bjfa"aBjPР F=&<70s3v߭t=d> +O>JoMtcZh%%kKĜ`tRFjN5Fܘ١֧4byk{i'+OW߁S.&%o Gݷ/cc?Y6 P;"h¿D*~ߛ]~a[?wňa8uw-Ͽ{;6?bwX6nwE'5ۿKZ3{xFfb=h(D ,xkx+47nb401lhT'Ù(3~L|T};d8b I-ive|Pse'ڥ^y[|(T]aЪN,Hx@.yW#r<#y^XI15hs +*jʼ | %!304T&,I x׫*g>W]yvG!Nɯ~:ѳz^s5uԍ"pa~j=Y׈D.otf7"->=!vxPERQTcE۪&q.r.hKsT>U|$8X– Lڈbkѿ>5:ݔo5o=Ġ:𼹃]sU0MZWWo8Dy=j/7NՑ"7 ºB¤+|ȱYމ1d|O2a-wR1 ~C.el؂InUZܮWzm:Nk!tNt=747^Z_l%rv@#sK ߄ҕv(g]mhHIXcqpp8l P(ga|P)rXQm“i3Ƥ_K.Թ+w9i;6~F.xVI)n οfµxG-nz2O5|O +w54J׌Su5!AGgJ:7{%Kd3>eX-#`l߄@Yr:w @ +M@pARl&vۦ%d7.~3 !ݫ}3zo|| +>^UYY,w&MqhyJۖ.$ڲι=_1/:fJ`K7H["Y%ΒŁ"TR:L,Wbi%W3H={:=lCAI0X9[%VC]~qPW6v2(!gHUEev Tt}"')m⾵\3gنf <1ț:Iv2pMG}{/l'Ik"H^nwt޼ 9unufCI&n=Ri2Rb0۲IT'|^Qڍ|eje0+*Hv6x _)N*escDLCe)4س:v9v{\C/oCEV%wIOwk xMm:m^y[N]zޑ}?k+dOw 폓/>v_qVڵe䍋skұ=kI[ڇV'v-}h? }PiTk_r^ZBJK!mv.vFYg. +(bD5j+5j4-dSdRh"6,+yz R=٢GO]Dςh2'& 5DJ-jMqK+$Npq%1ȂWQl52&7l:SZly$XA$j +FjdlM=TfOܘ{!!;5A>#IZp#!y,>$/Nf.mp-j*ӓBU"rdҮ3{V*y6.pakdc,q̖KfE @17x0Z;A|"O6ju"`w1u&=Rt`'x]KԠWdt " / E@ӈ̉xa٥t (Z1LJ|H3&=tmw<^!dobHLcK:N:#T"!TY;QI7*#3NJsN+ayyӍb3(h}..A! dN\UA6 +aȘ1 J^Sɡƙa8ymk2k=[<舘V'bDTr+zNW$}/?ֺۄS8 BU-Vjii+"ƛⵆ;; WI0ߙfQ3]6-4v*O+&ٳHN9UNSw,VmxѩG0һԷG^w}|g5͖Ğ:–TX ,#k+Yd!{#1[YKw-,eEyH9 <9yvs] 9|<[1|v#A(왘lLY5ĞScgB?nc)s#.sC9;{ÜLvB|mXx +stD5۹>j5tt+|{YnݑvK6OBU']UM  NЂڢZLg0UA?Z(3C;.~~!zMH7Ow: +>LLwNR6q(V #_<͗rSbEO͠ U?l;E3FLp ڎ7l-uRR"l>J.??3>X[{boa/^yqo!ƴ;CA7[TJ,IF g/Z"Tdby{++]Nr%4Z#㠇n8Fy _(_8iL9"e:6Y XOZb6CL ::uFYMaq{-\) lyv +{(NPP" $۟]]]+\95-n';y$ HIjCϡehqqU@F(菿w[x{r)%e9e9(I]]}I~A{tA7ɛ&&;4Dt27)K(sIdFZPD%R"&b Pf י@ͫ(€B-S++Ą`sLÃ#/sT]](Y.NE0ʅ:9TVVΡX\\Y!l"?յdY`%qK*w)ԬaJ\/).c2&hp( bDY(dȎ=Re, Jeveb#v3qH;{kdwG+C&^61S2[DOLGd/ +B{:O**DA='՚IFQr%~I%?~{WuR1zq7X$W$E ؅a\U6J}{1waĝi7T/댂" + +L-j1Geg)tu:Wl)pz@g 2@7P +nzO_2-Fgɍ-1vtc,/¼Ƒ0(ۯ+R^<ga| 8vEI'+lqe`k˗-dޚA$ʘ[Nf'|=1_$2"kT S!U y_]KjI5IWCfM5s6t#Hmܮ|_y*G< oG͞!$B,hSi'Z< f2lM'c&{`Bw"ywl0@ v 㲲2*9̎O6M'/oML} cm]7vrf3 I5̨ at\=\^ I8]qvC ?+TPH6'oB$Jɟ(t{Q4# 辘j)!Y'fzH~R;DQGLmQXMfo}|(i9au=|lZxtcw :7v4"{ 4BcYIAc+xV @EOԒׇBA[B?$DN`9gnb_ x]ɓoKFg:yBpѢk+ۇf>/v&;>g \N>|NTR=૵rͧ 80f)Ux,^{ONSM&k q6/-Lk=G +{`ǃfQ`1z+vRpT=ij;dJUiϑǠmq"9Cq"9k5ꏏf2%O'T3S)4҈`qۜvg"TwOJa3. +ETOžY U +7ֶTqwa#r$j,{Tccw8Oͭ RR\-yԲPm=EjJSfm*x`z}.,IH~A %+M*XWR{KBeLB64ZwrܸUV* gǶ:/-$F̢ϟ>Fi''%YGȮClteZ=C# + n;Oa;M8Y:{ns}$%UJjYDƆ#+/%nd}>l}#RMqY';^{Rrar\<6X3oTuSOk(S\U׻7枛NMwIK7k[[(a7?]B; ʋk+VΩpE/n dz&nAk y_žG+ąbgCBBڔUǞpDw#ofq ;42`@e(2;CWX\kg/Ib挡Jn"[IowIdU,~q gMl{#o3gFfWAp& }J>W|pуhG<` +cs/XNwM] t  +;XGQDb @UHu~ZZ.ƺM 0 :Y }ً X<dv&џ@Z Іe\t{ݟ,V\]n|n+ذ܃en¼R_،2 a_1'XKc,t~O2^gY 8P?x>`C>7+N$^@{?˧5hРᯇ&T 4hРA 4hРA 4hРA 4hРA 4hРA 4hРA 4hРA 4hX) +^v -"< LoH;IZ$-8iVp,ISJxD]L:+&Hg%ib$P0jV}&t@;@'ϙnٵ %D?.Ǽ+^(ޣxmO4L-(Ɯټvw.`٫2۠f;﨣/R*(uh:Yۄae41ՊUXǞQ8r. .26qI|D9INUUk3痥c٫n +jS1D`t{\u(" +W7[UMhY`_~Z=(G#\4:1 h_du^ɹ[_'ղqUjCkTѻ3Nnmh/Q'bmWG{WG[JTyZtYwt:3޹iMǪ^5qe[ѹKCj>U7:[iM+1wzGk:mUKRCk[;EmbmM15E|?tnmy%ڭ2>.iP/mkDԞhT^,mQc\%h6zJfO9mMբInj^ԽRX61-g)kWŸl߶71ph=ҟ=ax7 +6m0MX +OS7E-?;6P.$k Vv +endstream endobj 28871 0 obj <> endobj 28872 0 obj <>/CIDToGIDMap/Identity/DW 1000/FontDescriptor 28871 0 R/Subtype/CIDFontType2/Type/Font/W[3[278]5[355 556]8[889 667 191 333]12[333 389 584 278 333 278]18[278 556]20 28 556 29 30 278 31 33 584 35[1015 667]37[667 722]39[722 667 611 778 722 278 500 667 556 833 722 778 667 778 722 667 611 722 667 944 667]60[667 611 278]64[278]66[556]68 69 556 70[500 556]72[556 278 556]75[556 222]77[222 500 222 833 556]82 84 556 85[333 500 278 556 500 722 500]92 93 500 94[334 260 334 584]131[400]138 139 737 143[549]147 149 549 151[576]159[768]177[556]179 180 333 181 182 222 238[584]240[333]242 244 834 525[748]541[576]]>> endobj 28873 0 obj <>stream +hޚp[Pn ` Q +endstream endobj 28874 0 obj <>stream +h{xEބ$@J04! JM 슈 A*,UW]EElʢ" +ȮRVd7_\Jpw?ɛ3}̜9s|$ M&蓚VBD>Chސn{;7l;^[a%QnA͈n;bsG$qM'i1'%NT~ Gyzc('ec̐Aέ#z;;M?˜>xנ;^+!Qf,8c-^$KTᔽ)G8qHT6Z'Q*M+Y z%:Gs)hH2eSWa!MC*xynٴL"ՈF-ASwϦt*(z_??ɡkxIEsq*+=4лh/YWDh]aO{H>'_ z;L~ƃAB}Pۢύxc1Cko3ˆlm*8(n,q(kE&3KX/ZA/v 7=(1F<-}F +X[gsv}gdwyRLArHCM[ĊbxN>e2zcy +cݜea5:Z1{;->uWǐ(.eGTS%}EY~P~_܆ZƉibX'#h%ZFjc܍~b70*flbv5̻І{I#Yjsy VŪakMX[;~.?gIp9(gunOq3D`& 5F8¢!ơf joc\s +z߿1>=aL]_>F;ʖ w -S.]z`B B!Ap6C[RH\\|PTF^Alk!NlrAxa ԉ=Ed9)5PÆ XD )xllHAQO֩$i0<ɽr<'nԆ!#cJ3ُ)ɞ IDlW +V!Q +Cn}\[>/eIv1 2M X=9eCV9JC&R`f(6?7:)y6LOK4 /we Lk5e/( . + 39YW0h<89\xx`l<@7˭ChjPbZbZ9[ N`##cڈ{%]ʁ #'nI'b-C6 Ra?LА͆UTWUKsfˋIS[ xatbb9f+A~Xidd儋c4MѮ;eӧ'ƪ +dXMi5*nuʵߡ{@Y?)<}e@S.0<;(v.G4I7.9v_V4QW!H{—8ii}&ħWJw#!2 L8c ˀ(в@yҴm3tI(iW<]_80(H̸`4Um.1vRGK1>(a@6l&g{{͇? h0Ƙ'1h3C8MSGJp2T<AkZ)ePoqAڳpc#H|nrc}_@}uT@۽q{(Kzq(Qׁ7J4TY4V N`4?飕BfX6Y>X6wa޽60]ϙ;s@zH3e_6ˌOLVr.e*αlʽ)HBsj|7r|9iϰ95C}E E Qf_g(uPwXAg}[Xݘ Gc,{ :PדnZuQ-l{!0O h3v٪h'λQmm}< +H\% .LdhZ%%/RϘG!c4͎)_+ys(&]siNcJ,#h_'BW*t wƸE[FSKgYk2Fx/e:.?QU7# ?kO4 R;k L!xzc( . ̽E|a#!wǰfgnjjG*]e?PO+(@*0|fou0Z OtÝt_eWu?|aP`<z/Z§Rvrȧ:uyax~JP8!| +?J H世G#ˁ7HD3%^Y ieXJec៏Ct-ğEMf20{#Jߎ֯9ܯfUr9>kEw(!yKM.WOyxz @,FrާDyCSg!,?U6љ}pEgNY+&h2^s+uyu43-gȂM9>|6=ُo`?8 ϳ0cΦ"R`<#؇oeWK3Uٜ7rqRh^Ҩ~#ls=O1ie=.t [Vl?jʞLQQ~eۙWj y׍0jPe ''`[d%. .O:ֲ(MuE:5k?|Fd|F-FZ{QY>QMۥv@i돴;WWHGeϳg0|D̻ ӎ?_}"q|~AtXEG2k[,QXK@{ [d%Ex~کh&ϑrg +*;K{HԽ\;y +e-x9}ݼ߃?Dg=s .;4rw?r>V:xTCCxgH;ϦoM:Ci#>ʩ֘aȭ\5Z{iL坮dPZG}.,z5͉zОĭFK4?ghW/e;Tm -W[eݐ>gmr'C>;d/Y#uV}Uw&5.r*UGׅ~9w9[ȷM߳Mwp̀8t3ƫSU@4Jf O}o6Q'c$?SwxjLTwfGYXog 玒zV !k b{?"x-֯Zdfwc!-4ݛSTQ{Pm䳹5[TS8%ԛI5I4}XvwF)4 ߰# (͂eC|w^^`w['8J20"Ik< +{O0 8cCI(_x2c!@&P~  e 3  3 wKw9>.^7?r&GW[$wq~ ׾#|@?a-/~{Կu(t "cô]nysKc=?^uJ G8^]xWx;.է[=;F.D->]\]ymT?'q^|NLu_.=}i}ph^6kkIqak}iwRu6ʈfuOBսzBm#-xrXzu{qE.cz1QD@NktP~!:qG?vߑ4> +/oR&֫ ?:JiPMJg:uݯ}w6nV<_ +';'7)E9GrN̫Tύ}2M2h{ڻfa S%Aމ1ԔF{ -EYK(y@ JD5Ub3:t{~E La=1SvGy{G`~o*:),~/ϲB'}.1P#;4fy|xSa^G5pIyC^yJH^жAe,o TZ#b+KMY^~u3$K5[p] xz9O[o#lok .2Ser6f{L?a~7lԯ5^ >`uA':fǡ,n5Zwy0{H53#  t4aq\G.8:nh3Q3xwup\i:O>@)xteVqj=6ƴ,w0s$f,;R+{69iOݰ`Ρz?:;'n[+]+jSZ;[zT1|;ͣs%o}UA1GԙP}PÞ<@727m,[dsY\ +L}x]v2VJ{Q[N%Fio9J_tS}u@yC-wop3 q{ KIH^g>MDxW^y3W>tخ.5ʷXϩw,v(9mGNg3xtPzub=%?K6c6<wOw va=t&6Wf:pG4@5)A͞IN+WC­Gᵏ߭BKھm̷"مH#%w8[ Peoj21>snqxѾ1<7ħ{P4JW +UQv xڻ{?/WYV=mi_E d-VoA. kvEG>n@~h aE.^$"Kr59J&Q63oZw)t+Ziy?QTjb:e7\咽{ 56Ck-?D=1N6/8]˩GyQ hh!ւ6|ZۘeT)XbܧZd: 9Nz' gǀh]#|#oDx +w!,p7l<^7` ʫ|m ҦPK ?y~v nR`xE7è5:/U ԥs 4Mr3*xz"iv +?xwRF*:Wh%6z`>׳[|eXb/ o Yݗp7yvLYVmzCķ>{)vHYc, ?Ho^ =ؘDe3ֈ׀wb"=nF +Q*z֝F:)4^4?E;DӝZ!+i*k!O=ki0N?eN[P AP^a1jutaNrn^p[ ,Fߨ8NcYns!z7mJ\cA?#ެBUU.+tSAoDNP2U`7m (΍m4zGϥ@ûi9{!su^7<9TÉC?F߮ߟv&aAy|omESqyEAP_[&50uꬤZkNkJU짙x~ʟ$Ƞw4e uD ':*wmʱ,:lU؈Бjkz:e-~ +h8(e3+XZ c0.Mn%V(Rw&] ]ʖZ7Sy~Ϡͤ8/VY ^z +}G{=GR,ՌǺ.\⻴ 흗;<epVM m"vn&dy5:uhNթYnS̵`P,g͵riA+)rô-MUx9ikvj59xNi6m&nxn\Z Ȗ +]='g o *sن̚(a +g .W.@&_ \-U_r%ˑ+cK.1 e[F|nClRz0̅#D7ƪY1暴\hhUȼBYd y .1!K*^[ҹNH I:H߰Ƙ (hXqA 0gƠt:,Kt̛/,Fy3QNn~:uթS96}}}0e/X֠;\t;V56eOU+Hf̍([h!Ыҭ^ YSU=0_Ǚ<4 7BWtCz%;Ow +V<]U!YM=wORΫ:ld z[a }% %sնFĢ|>ЍIf + ]W9LNw1O@0(tԿAaY՚oT 6Jtx` xP|[ +5RB@QW{u/ڽSN LK^O@JghЦjҪx@0!%~B9$daV15fuSu!L_~O>t%A]0ES3<%Ѩ5Uda6B"ȇt{pM;9n[N QR:X@>ߣ"yE)IQ.'dŁ@Nz0xSIT?}G좋%$#5U"/P 1b/AT(PA tZӀTOZ( @ɞ$OIjT3+dw+C0&OIbo4'pdR +EÔ";U2Fٖ<*d٦ybZH+h(ZcԐZ>Q&!@Ѡl#[l,ј5uuꄺKo!O8لZcPz܎XAmPwVC醲N.@t ]: ]DgBD' :uD' : NADhD+ ZѪ#Z +V@V@UGhB 4@ht " +( :" +( ( * T@:B +PB2 d@Ȁu 2 d! "F1@@b#:b#!k2Cd C!C@t@2[j]fPzP `;A;W7M" :" H H^@:D +Eϕ5v&%=xN7t t=ګPNoEwtt- +j8Ĭ.8Z,rPhtރ RVE) +aD V~'jc>1(-h^o(D8yᜭo5lc7e2| )[pDì~ҩ(Fqܦӕa(pt8[Ik>%Я(1(UPʡ(2ߦ< JJ@.v 3͌$:OI)%K@Rɒ %KF G%4*`'٤rSIHGeɒwF3 +]aݔ^TByIeH$L{D!x: Q8;S0LRTioЍ<*PC 6kFeLyH +z|X RxfP:7*Fao&(ݧ(;`,گ[JQ$6L8.l.fӄP$ +~)EY& "/"LMhj넌Pz[&w *,tJ8&4nJ ^)l(g 5-4HSBhm/'т6'3!@ػvq{9RuϙMѦmDmLۛW/o Vb=kX(io`u>5@- 26MT ΓQ_/@ 3QX6~,gUUOap4zh/Tu&) +t)W.:} %*u9ݥF?Q}8KOtFOٝKt&[ܓY{7tj w.j9W.MtJlRNy,_gE^жmm m?k2XoMGoyYg(D5Y +*I_ +fPjrhl m+ xn*}ԕ&+:  lH{i#iº)A9Ԇd ;;v ٫t(*Oښa>\C"sn*Yʼ!v#F%ÎAte(pALw$w,3O$a tQ!`xIf@pR$9fd F^29H A|!p<Мn@qh' TqIvP{d||2|UUTܹq6]ނ64DtNJt^:XICX(T6{=b׫SکU<', +ǜnԪXmMuI8X$8~9Z~N.|7ۙ=cA7{`PՙUA/3ǰaՏB _WT>Ytל ].J4a^SPVCͷڏtǘ " 7ln:zj,6P(˓ G8Od=F>%:pGH|P- T´਍y^p0#">fxajc\߼7?_{b_&\V>_`j\{us?9 v>^wioڲs6/|-c:Qp 2;U 4>3,RjQH]<1Ԉ<vl%l[4iT?9DzK2 tAu|0>0NpǀB|!f8N4ê Up X^O N|ZAd6Қn6c؅w ]қj-Tٖ)b=kZ|~4ǼKzſ*j@l=xjOhVVbڇ8p Y_s {~WP"+hF ʌ.,C69V.&&äÛn[GWLng/dg:?}SゟdָLR# 0@B 5zr+ʦRad!H¤C3sUXM,5Ļp/n_C3Ztw&x86 g7befOu7 Xpqm>~@!ϐw'̟Y0ӿл}ij+yJo.;3;'{>˼xwv.6G~O̫dS&T5P#y`*J1ѽ398iX SZ-<BhCtd(l z35AdL)IN4\ϊr='ڀi{jF)ߛOu dӃ$oqGӼ#(b@Oյpa[] +Y^`M'Kޯ^myS3'sa.X\[ IxkR3J>$V9y?2B42иY$ZTS>~1/-Z$a؂Mv8Rl)ҫ,fb*izе+ "ͬ* @gtUgԩ9g +?9m6EI[dF]e:jVqȍ57vK +4y->Y TH +,& I#pK1VV¶hq`k [ 9la.и]'FCr7F@H*qc1 ?{ +I"01Dt9)4POݬ<>D^y7,rw26 = f>/hMx~ޓbGa[fW;scL=zz@oA6}:uA‡E9}Fk(l!-`/c߲9 A!Tي4dFƲX}G3e2lL>f0.!=;ӞTe#cjWϧbt]<-ZlՄ^eF?'lI{5<2QP +p4DQ HÀ01Ij*A?Jky *Z% I |qTb\t,eᖋ db +* xeaNEO7_mYf±,FM+5c>>H&)J=bBI|kSBOZK_[J~"zy+<rCW_F/HՒEhhؔ0oJ[)3ID$ur/岛ln0pG3/ߒyLeo35=B> +_w@7 kex/,+$tr +y-y$'9E!CT!H~Idx. Jj +b[EoVD9T:Ԥ}SJӠ<+NDi>aDO_GC%={4lNgYYYEB@U!9UZJA] f߽5d>Ϙqϕ]xiߍ[/lg#%7^}dY$8f]"q͒Q{rK +򡏴8voH0H!Tj溥9QpnDʘ'rqۥ׌\@~CEnT‹4-^miZlkyjK"{~cYAP(y% + v?qE2x\H9hRȾۆ٠JT@u&SƱ2#WU\w]_vOx+^oď"1g]|Wҳa+ACeR0K٥&]jw-wqq9FaYe[Y=mvB9*jzV-;?:xy|l/G_4WDO7@\2cSU6gyƐ5LlEfəOgz^;$Hmy /;9zaf|~AX'e~Z I,g`d=|Aq(vrʿ'giEif=fBUL%!ifz? &ݤAU5!jqqp#p\wc{8vA"a>%byL5W,rj3WZݏK>_2vH+Ve& kk[d0x0 ˉN4~HD<,XqԜѬ N.pIֳ2҇K>3nN.b:/񷿨$`_;DW*$Idx b TFbD# +ĆFQ:hvA?i8u]VxAxnRxA+_<[6!҆(72VORjКb <;Mi3M'^Uu}Ϲ6=̒$ !\$F +A#q!P"nI .$mɫREAT޾(9NX_?`ιe=y9a3Jn's9?]}]Z$PE(z"nOGIWx! 1hΘvu\O)mr 1Uorz>w6MɄ[@ϧn6&Ex]}wWL>^i%F&06cRsC\ Kfs*lZ xq#^\-ꃔ, !! (7"-EFLSyC*4_ſK9%ɍX &"Is1Gŏ.H{ !ϥk @P*<_ٔ +s MIc%dZ& \ڮ;ȁ,$y&:>%B=##bƲ$U1 0+`T"/ؐ݀fxf5[n7yJu~C+`Y1\wFJgTg:zS)G?@َlGm':Hִ<.a.9 /YJl1]M40zIG1 Os~9Nm'_&Ҝ} ҥ]OMzFDW 0i2b5W]n[d]q|X܏6o<9-V\K8W L?o2q +>,=".VKG֘T/e1]*S26*8$-LtL}.ap~C+|"LH##%_dBWV^iRhei! UMS1nȏ4y?} GJ~4^p_o_?ƧI{,'q1?_¯_u /B25܌"xrf_LCZ_=m'٩>uIجl1m'K.~sgVXZ +* 4!q݃U10]$P)p{3"av$(DV9;o/@3!4[$ ,3 `/QHs]|fTrnT3r4˗_onߓanl50w<a +E{@;৯f\(]"fB7-džK|Ɂ& ]> C˱ѧvo4a;o<17bzvisz2o-Cn4OyˇyP@L +nj۽}2*imc6$pa(Z4Pt.JB~εU-Vy9~-Q:4ƷIwQKkQL7Lzyp"y_7116XDbv +Du;(&$nU\9i,m)K[JK;KJHR\ZR])P$?KU[@'۩3)Gְ>3iA@|`x> Ȍ'9h+6PF(u5)ayݶ.%nԉơ8XSs|?Q<RB\0j_8ߗE>WA4`|03Q~O}}:?_z>G 0[ ѩ4ffھȶ$/ V9ѫ6ٶȶ6QMUQ}"CC-Z5D"J{(FRqIJu4 vs#ínH'LOM{#t:w<ΥR0VQFQWėw֪ǞUwU.R@X\R?Zx `ƚ9qHdP ڀnt q0\*!}|26FӚrިq)}xJgR I#u9uNYAń1G(|E@fwM EΎvWqHNm +\Sk$?k.(7FU*8uL!\LO 4V]<)2f\x XQפeoCGeW6h8׍XkNJ _jUtQYm-ӭ’M_rmNqsE yJ} !4X8>):i[nǝxfp@ȾI3^0+V4Wͩ?&1 $>3e4&0o;wl~by!U_ ;W WtqccsgY~/* +]-*rD}]3j +PgGB塮B#  +30ϜaUF6 ۣXv *.xx3o%:g>٘qgI]?x)0>ٺ) $1ia(:?f>fYBAF2Мa1+8jn:"qQLE͕ ߤ%F =o$ɉj Zt21A.;@V@"d͢!/Y k>ܜ^XpB{NlBX3QRN=FC__3~h SFԯRtȕ2unK=*@'uQ(rf.`e4*)A#PE"tRN^NafߑV>>xTB_`~ =tJ{1&ƖIe(Mz\r3dG-jE+o8vC-Lh +4mh+o /WӔD$e+dIeIx>" (9 +#FYIEx)I!/Aɇ2T.>fl66,p,;:k'BT_.,cÎ3 MQ7T4xC +D9*5o2:o(8|D7OdB$fļ>ÿ >%>1z+*>&DObyb3h}?{(HS&3HV3åGm;<-p2C ,3R"v',G(ViIV/So_nOk$+BPc|lK WqL@ + JY*:BKEgZ4VGGp(,4%PM76U CF 0;s$,gz4NeD2ܗ}qq3^i&+gu@EcF:aQtGZ?TLƬɓc?|D^/c',gt.s.z630w^(6O%`Jg + I;dk,R4*,`Fj@nf6GܸS +*NU}ذ78>46o\ѧϜ@C`z507*H3 )z\J47۷Gmbyv6[jo0Q!(Y,0 ',{SFSx(RxK!nNe6;KM#uq^y}QϓuUH&Ŭ2ќ{HeO}CӶ=k4NA7 zF5WU:d![ˬoh354ZK*Ur%Vs$ b( drʔR:GUn==">(J@N Q-1beo󵽩3)|"ea@o񎁚ށwjvĶe+nmj -u濾2o~^1y>kAٯބ =Kݍ9٠veqYڲT(wtZIxO}`(jDkt0Ħ& +'FH-ƘʮYk\p͙h*7@WeE +sq~37܃YWY]7Y9geP~Gǰkn?a֓b+~qr45[ĭFNYUU'(;}ܾG9;UͳytL={S?+vb6}PURp*鉕X}j^;"=";'.y*<_#ɷG]A9ow3tͯku~= `?&V˚IaD&WU~gr|!/Gݢty::ZgB At`bJ#0~V`^c׉5is)͍(D.re2v/"/9wܚ$V &eNA ͦe sހofmHK%k4[>HJ>Y:j*!wW]%Qgܿfˢ%?NbT{'3U+'Q3X~zi$Deh~0v)jUjP&8NJ\Ih CϲgLѴi0U9Ϲ]#JAj~i%-+\I*>//$״SmNSIeK-Yдe'd,q8$l`"p\i`pP4\P.QQW9?^G@ʞɭ` |9{`rL'(r![6hnIk#Qǚfܯ̢ySx¥%Kh!\<"e7!o;Eޖ7ކpO~;4~ö#Q]{{?{ d{=zʎ +P HǕJHY/[g89Y nrFv"0͋y$ AD=R%~ AsW7Vvi?ƏzLvyi|u;rE^pt6wfeHL}&jsW@P8r^XsȤQ W_۾f}a<ٙUkWe6wښu?<%JTM"w#7"[ +.OwJq,3!f-L3!73bq@V:1FL'Ҙ1Cӯ >NBMy4ա8}#v Ci `\Op0;ox&&&'% i+T7ykSʈr@զE7j5  [xյy*%cݪ\חyA^~'AD&{*Oeo9v?Ah10ۘVn+U +bRl)Wʗ +ej#J*$e8Y$ђ$3=6=Ȗ 5@XNN +Ru0g;)&u20V=% Tn͕oL٪Yhi<3^`Yt ZŁL6l;aU 8xicNrsh) >FJ7ó *Ϋ鴐**}\e%ŖΒ%Oq({#%KlTIYI|zg%\Ky%G>&pGͨ3K$%0)#r3ZhHnP"䡖<^)J$I :ནpkR Z&I}ĨtYgIڞ,Hv&i*I'L2Pr[b@Y1jv4j/$39Ū9_"Q}>J^pQrD;ܺ=Y >+4rd~ݰ'M:u7g3xφԎ]aA +d+&sv~s L`B+˙.TNe%)Oi- F䫪ϭć\MI cG/sզ3dᤚqwo:8gx=Fʘy+Bu˷HU`qI;wm|Ůq1=͛o›&G#G${;:k-]$V +BGD1V[B!EhE^-226G+p6?HHG`Jv?'.ݟ?(mGG߾@;sg;x?b6xCǺ+Mר5tsׇ!Re6ӝ%6=pLW~mo-LĿqu3C%MKK +vqW}fS}{VD"Q/[O" ȋaц݂|g| Fcح*88ALCD7lY֧#D$@TcfI!9?]Ph[U4,۬>M)*[*:yZ,CU´Nt=a;^!ZA &CJG}zUuGr>]L2A=AY*b!;Υ֩%\mGn-i^ ESjT|\Cʰ3v`,LvE_V#e$QuͷUiqƋ'9gXPK723|qZWh+m o<ߓ:q#+*?f_zIR.G2v>C\n \XC~Z%^q)_on fMy8)X&Qg b?z.n: RChKTj#}ZaR:gU8Θ^s n=aR\yN͔˕d8UUEN|a9U#wߍL1T^IW }{ Lfι΍,-r:q$MNdd/%y4M9x( m^'Y N I@$gjkGV"3 E(zzˆCm> +\W7va) +z o]@,8e@3a2 +8XIÑF P7ij$8"A- }k8P1q|66߽#S$ʥ*u7ck܋ 1jX8/e +.B5XCv(6A%ǥ)8% TՕ},̀*TE"3q.y[k jSqL +me_DЀ*ӧ71·R 8)۹wf;',܌%UA`G~R{=(y?"U/.[T,ԩ;VSe6bͪ RAPI\aDTtVjmb+J{Ž.`\҃UQꢊR}iD hkRꍐp-WVAW+;aڥRw45LozR?YYzV>]ʇE}o3TR0 +qQ$'(&Duf#.rT N& +񂁕4 "1Hs$\P6%d># +l>6,CFfNbPc3sS}?Ez|~Z߳=z{Fp75 >_Sa9MN<.RVw/LL&e5Br iW5^tIVyj]שt]zV/ʲQ.VcS]ERR6=JO"ci(?u5d0K8LYˡyv,sUފ}A#L4E>el.SNo<9="sbs\(|` +wrt9FKA;a ]`Gf,p. OcGZ1ەVnMYc%ZN),D4Q6 t#j1 ԹH1+z<{M(\m$z4X^Ďx<ӠStKȎ>@Eeq1D<͙X"p@f 60+Z6){zl6k+,;ī/"R` +Hi{FXv\Q?Na3| >ӷ'X&! cGmCփF =_G=hח|J彎mX3iIHgXUi5{1&+$'r"yZ8~0{?S(ET[rP>-e-aqClC\(]|wx]'oEݷGbwőƿKGbKh UmBWlGDueWwu'@Zwx|ڭ-g:dݫu?611׸FȸPjZ٪G @gJu>GNgY~q: ucZcǕ+D%`5JK4Th 5ĕ},\X P+փǏ[*>p-K~o5u ؖ_}swޯuNh +vɽ֩GY'5%ulK917V-o!eAvԁ805_rt}%.`z$W6Yo=&>5ke,ēKjT&wٶb;> endobj 28876 0 obj <>/CIDToGIDMap/Identity/DW 1000/FontDescriptor 28875 0 R/Subtype/CIDFontType2/Type/Font/W[3[278]8[889 722]11 12 333 13[389 584 278 333 278]18[278 556]20 28 556 29 30 333 31 33 584 36 39 722 40[667 611 778 722 278 556 722 611 833 722 778 667 778 722 667 611 722 667 944 667]60[667 611 333]64[333]66[556]68[556 611 556 611 556 333 611]75[611 278]77[278 556 278 889 611]82 84 611 85[389 556 333 611 556 778 556]92[556 500]138[737]148[549]151[576]177[556]181 182 278]>> endobj 28877 0 obj <>stream +hެ{`TvPB ZI E4DB) /cCQ6 B(JO)`{>2]Y~L3gΜ93B*R>ԫgf-YEDi=dl%U'DJ"qrȔI{Ǖ!$9lc2>f03]'I1bhNMi= lOTa& G4uB't3nHJو'͙:>x +GᜱC9Nt"&Ip8?q}(Y2)HfZ>R~yWW KWD \F {SʣWīxʂkx5hkW*zu} }>Uַ@/ Whb3ۍw 3\b>i>k1XdEZw[VCwv sv<$ǹ:0Ҡ?mkXW׶^TTңhxLh5So?OS3" VEhmQY 46W$}CNz;Ǫnl@oS`ƊN Vkk1 bZWj%.*"Fa\kI*1]Z@Uߢ9Y4Gh=4VK*Y?ucLĊ_ôj+v`%n$?ҽ8Z*b1\.jJFuzMlԏXnL'egkM/2[wC':qTiSyH_>\`ƺ;-,zr"q l[Vy,W7zP3Rj-P:;,N,y%?LwOec.%%vcڶi-7ksW;7jivկwG:jլQZ*+UtX&WP\'-m5{v' 9A ^7Ү/ugbK&䰐II"ݑ:ǹS=nTd@xq'VXE*"Ԩ)nvzӦ(HNA{EɞqT`BZEV'ZE9++oOJ'YRsrzgԍΌ!^tVUE(Yu㵒Ս{$,*ٱr=92zN&Q%xkM?u-ƫ&gέFts`ۻwFpn4?33jҲ "bT30P|IQnogDlLH/]\NnIuD{z2sR(N}Nr׾>'>(OE*ہ +Cy*s(O@9 5𺇸Iiˏm`H[_@-o.a7,9 =s}(.0o/^cX"&r 76zHDN**>nJ3> Q Tl 2Y]XD4n1%5jٜϟS?sճ=P~_ q_ȚRGOIN-ȶeﺘ/m y%gu5;U.4qP0G2*xFg)M-u8*EӼ]}?YT^Z\fm{}uثPa/ 4؝4; T#=uں-e zeb#D{hF][~uDm ԚuOY.G^zmUu=OB]L;fL(rrm1lvG1=_Be8Q>N-`DŽinߘ$[* +ϗǔMvB>oyׄh@>:GRG~x-$Q{3(Ѩ;@i:h^pLpjs_qAu:K~P6)EYʓXKyo`hrm@?`{ymAyGe(U{ #8lpm/J X'˔>BY~ +x lׇVObI#;h.R@u1{򢽟,'_fsr*{6 TmW(xZGW^uJy0R 2tc UyD1X~{A~uc2[9c47=oyyIu:cBztUVR,2 vQ"lIof J$OOx*v jDAOi 4H 㘳g gЋ*ߣ ++Sq"ǨFt/9UG\jƳ:%E]PѹWC%EQrcyat_zAP³NM=p>Obo[z\x@N'F>Z;8DyNbN`͆;ۗ *͟vv\Eu@)0M- C:7bZ٩HR=8#W[W>?#{FӨ /Bq@:Sk?KX_I64thB}r#h/hy0`;Fud̶G6U~.=t>Ol{8t탾:jUVZ +~Zo2p{tu@;}>5>[.^n8Ho[ +/ oGP G(S}X9{(y~ʾQ}eT9THwn.,>W9$.ңA˕gHǹط 4rmտ7!,(v\S=1cA#oPƩn[;(>^8ߏrnB ЄA>TCKwn iO#kpu4蒣d.ܹ򃠽ꀲ¹YtEa,7ik3"C}bX<MZ`ٲ%h̍> ܟ>󩊺ܭ>懏BRUIJqdIR vUE]̉lz Jv@cܫʫ:Qg7_u*9h:?WH_A{g!Aw ,#l}Q@4|g,}|+쑎(4ՙ%oR@M( +y}?@|<5~?*ȧPjmc1e'oJm)%{p,{-uo:N q%* {y<%ccp>H+ y8OJ^+^ЫHʾ6/,^7Y4q$_l۪5=z8`x +iAZϟ A~=?>gr].Qyz;M*g~t(1 |u88~lu! o <=YlrCY7=Kwl6㽪}6 P/}৾{<;;gKAC7U[hO-`=z{QƵC4b;9׀=?`s_ +>_|Ro/BwoR + ދj-OS.kK໇Щ"`@ONA"6b27h+e`ł~\0畡-fsaMݮz7 ݩzv>ەW ?S2˜^ +W>HW _aQ2Pkey8n|s +?fl' r?i#]c!y`k"lOrk +]k;4@3S[gem`#{  }=H P;1o>wk{;:ߔJg7AV-.,m1|.chD X h%`^k}avgq'}˜EC}7Y}7+ *0\vRF#]B !2S3zyy V2eH,_F%[7=j~`5Ye.xTrx`vh&V|E:hD oLcɥ,qM[T=.<6rN1_,O'yډ2& yw(u?Rr[V?'cA @U +ϼM"~ۓHEXM;|HZgC?u?t}r hhh50 +hVK,xY]AfP. ]a6F7)R}ևKnՉ]k۵kXIo>=wź=quwTݿ1?()OX =ܷut.B[>KuP*O^V4cͰn&<>.5fTu9.c_ncG*Ik;{Y9$1[V+ˠCix8E9d7J#vOì*Tj>#"4\^FYL{̅13( =jEa{h9FQYTM[N3b/"Tj?'UB3I~hKYaA)yhMr/74[|!5Ak9,zlM +Nj|' ¯qDzǚ@~qzsv]l(c\Gq1j/B) ]< ]3?)QD<ߑeSn:(~6<%X C1tyV_B ,]uwTߑX9V^Yn:殫Lxsh.1y~'v@gg.Ս{؅i4|N-..SnP`M57`8S.W9J@֭ Zo)xsoo)0_xw cmbxXzP=%k +E;-NAmz 63gPN;W~Z1[OVy#Īj +m,nTm,ђiJ*TmH*z.5dz'Ǹ)ѻe>n[xRW a}y[[:kKZcZ Hm-xl$:_[RZXuNݖjkPb Q,I +Gv՞VOvsHC +|D=RDlܻzUL=ճzSOU^|E.w^OJq\"2NDDRHr"LDxHjWSw%ftu1)6RIjAVq&W:"na=]k9(z *J0 []ǗŮ\NQ*DR5ׯӮ_\~v:ŵ+vJ ZSmIZNƸv1 I!pr/=ܪ{\hf+)1Bt%JWU[r՝.]|5au':kzIuV1MIGFGzGlGagGaGakGa+GasGa3Ga3YYt:-Ԝ^*HV݊d?OC#5~j ls"ҽP`?}="wtުޯKmlzCM:zݟQ$ĒLzeڜowcVk}q]33ĨĪKK#~^/״ݘn}-h!GynmY/3d_bؚ[$3c't=.%33SAqmLPy%:rrP;_nr/q&(W կEP2OjJoL)\(RET\KhHڵ"v"MUOV+S/S{SCƦd]Q.Ƀ|fNj+nϷ>pOo %&FFvͬ +^ IKw] QvV|ΜJ?떉vV$ >'M?JgM$JM&(r8RI)HkOH-|Mؑu=P0f4v=] XȌ+(XԓUaQH&9(M]Ep/lJ>=&ٗnI%m(6m)re)P-lFA((P +PqEp\iâ2088WQg,:cE=7irms<⦆i.rDYBD/؆8 twqJa0n~b@ӫW9z|#Դ"M/3$ГDmҤ pch3֐8]p/h +삺.CgFŴ1aEdCX@&| c%%,FT"8BN{`DQ׼H?+g'In$yՄH| +N4hgj@3ӮR;F`ז(S;Rr8CE8\qt0SYv9 /q++E|>|l}7*9~Ɛ<5ī/V3OLOTҿfJ[yyѺ5vX6nʉ#u8Mˮ1O2m̡&-92Y̅ Xɲ n`zFG tݣ#1b]@#fԶXFшx 'R`0DW52mO).} 3"iA՚ue*+?/νgyq:8*@<1E55<".ՁܾW.UYOR}^O5>N5F6XT|($$rH:Ӊ:Tf l9 jdRW;v +S>تxOLeYxmXMeLXF͂s^TYs2Ω:NƹL˭)߱U4vXmy "?F9jܞJ^#BquMw}t s}o_v4DӰA".ɽ{a6̙A}tN0#Y;N@ ~ȱ>ǎep]>`g`_r T`݁!YgajG,{(7`[r8>q%wP9oV +`^C(Mr8Y$E"u^{+7:}C\nG¬/Zt ttt% ZPS&0ItXSmO!$aΪ^󯣯yzA ^tԑKk*_'W :ݏkga7-6^pO?~oS'(˕CV)UZ%d)&M#(X2ędNx)1%N#ddԩf%H(I&5KXE,V 8-ϜSoyG 7Hwt\Mue)ElopA~r_8\{1Zv}m{eutv$,C_]T[kZΐ fycr96ff YlzO2ɲgy`0о RCX ȗo{/H F 94Q9;j/ 0AS}K=fL$N﮼3Hևܳ`SK*c7]_g?\Nse.u>E)zXcgjJtܰ%m02tkّtߛN4C"dyIe88 Zi-ң0z#" ɁMAGW2BapY"jӑ _/hc6t]M_Ccu6qAs%?nSmQZ9 +Tv0޼:σYo{8tQ!VeFmnwaw:vbz[/w:X!4(Iv&^+9Irw[rj + R=LuHͰ ^41A; 8oݾ~ pI.PEOil,pҟ+<[Bʅ ܕLo<&5*jnp 8͞8'qy?kd[Uy^J nWhtO^tRmȇHS2'CUj"W\1yo|p-f.ytW^ 'U2Eek6zfoqko}pvb~)4h57-=k鍰/zRTu0xK^ܺʋnEi"PRc8!~ɵp.IVoPi: G/՗"f&;ֵbB?iF7jBJ&,Ę'7͔E o|>/ɯpY~V3ڟ=I[y?k2s 0$~oZ3q[ٞc_v[y5=zEH 3h31Ȝ(Ya%)P(aa  HDY@G6Hy8B)bd7mrFn^ '3̾Ur<ejC^~%FAƘwY2^rډDT5O ) 4E)WtŸ})J]vmndמ#&l(P\dS͑v ,$VfDXHo~S?y엻ryx3>_!S_:0"Wr=.?2|_h$c,Ú"=x\s(Dd)P,J} +c*ykƿ̆(LPB3P%nd35>A?vDx0y3|ףk(4W@0N׼0Mq ;-|~^0i0Yg3z"4h~\5R:B!թIFqԨ4sW3w؟Oһ }ALq^rvԥsYe"&F70"Y!0<8"[Up\vuR }cg8]9N8..m#6d2,[`&,!0$m6Y6 $ +5i/G+4s\.I ԒH]ƨ,jR.owv q?gI4cmzL0UeQbңj k^Z|8}O5y'i +C=#Ќ#y!0rQqЀ-7>`p$D\M9Ҡu᪩DW7:%w R̽W{b;^xk@SynLL-UXQn-0-[jʰłŪfݡȤd4Q\e{m"TYHfE؛I|F+P`1L*)YIЄR+A|amsFaL$3 +,-ܐ=V't c4{A桿eŠP4F60b!K'^5`Re=Q1Q WsӐ_׏oRms 7<-3ue_>ab IEyh/&a,r$^jY j4Q>vHnGV6#Uf<ͰQc7F ]qLVA5(")} vοv?RQS0l@~UQG[x( .~iΗ/xcG"'md^?T܉˶qbױSQ/4G;1ббZTաZTWVk65T|~C[$~]wqr~2?_|#اyst!uWWvm="Ql\Yq{ZgܰuyC֮7,يziiU܁Q{fO:x5E=f{bL|?G9VRqWӣ& 3 8Y\w".l){n/9"S.i/~HbO JfJEJ3eV+s0e] ȝAAn/TO +VAt;vls炶.jJo:Pц|5J +5RUƅ~ٸg>r8uԠ#nK'mܳI?# WWn""XS>i*.k4o؃GQh5EUhϔV`xp o%NJOrIFR0yR D0i >VWxL$lVeEԜ\%+77WRt+u{(,PTu +!^j +K[Հ'y*@g^s0$ <ýYyq7Oߧގlc=^Y +Cb|'r~>5 `hiyr&dTj1D*p0'/Ư_d}GA%: 5=mW\ڵc*o|2v-iIS{Y tᛴl@ Ck0Sk(*#0PJRtma"TW+;ͧeAqa7,PSofED&ĊD gB|er4L vJv +VXdH&X͌ťv[ >ץWZ(ƌ"b\Vخ:Ѣ3h5%@$*s=H ȏ}^bȡthtdDf&P/;X 1j4i3jvx&n${=pIbrHrKd^xF<[=ZN"_ O+S2<fQ8Cv iMxeE6)=-H3\yLx2ax' k1y-`DHKuR<E3F>3 +_1$@CO 0wcݶ kq!HGiCGCmP&Vb\.˩ȬYl\918[nJq5\`_%*aY`ˡ~i?Y^L}E+[1i@̶FZ w4SY bABuePpIXձ mdnN(xk®>v> a60X幠d7ss_qn>V^m!8}?QT'XL*Ok9pPJ{ tǹnUwOt=[h4ZaEBBF hAdlc ,l@± v;Ul%!$XGr_;sy3]]]_V__N}kf{kSEZps8Lx'0u5MYNdO] >A4U0Jovf&$YApP%~쉵~g2a@ŚoapfN2 / YQ@];gbM;v_0( Ws ÙB)`g`6dm\_gsML(;hm(3-G;,Ȥ켼|;'cy×>$ *B +eSPh Pia^Ĵ4:FppT@#yW#mǃ)#5jI뙏L%QYJ<ԣjk#嬔-n^85|S3}}mwlm\pQvLl;]o7[Sg(z) [cV5"MyYc@uQȁWes햞z%6G +egNuU]f? Hw@#tJ*>9Lb/O(%RRr9ŐB2fST<9K9Bd[RuWG&;wi-Ot/Jr1vZY+꥛=VmupT"+q|W(Bk&(pl29y3J*8}h؎[8CP L4r#AʀHVu#$sE519ghgu7O{*VrƖw4LX4<9j_[:v>m32V?&{Q:zIN +#7J +dzxS@=w{_A:ߴ!${QrX /x3'd@@8٩T"dmxi#pYԴ <<"*;uգ1MX_հ_s .ct~sw}T,]:&[#{g7¿" 6X>Z|3%[!g#PRgeN$AWG^v}µo_\0=0![_7 *-b JG85Br$2TN4bCf^A1it2veYٖld2 [(BK d}<뭁Xnv)_Z#=T)>'B8Ru1X.`Dٲ(B(D b"vu=BW﫧? ,N煰mt- Q BռDg8!:C]ӌh͕jImnqúД27,T&65H ]y2`LEJgJ;*O0N\3{ +lڄzppI,R af%9ľK3z&R@6_` bALhd^b^ a-WS990c@2&a 4cLL፼` pXY03h2VUq2߃{yS2`rU:377#DԨB8x W9 Vc,[L{hv7'4GO^˱O~9p/FR1wGপ2 /\jUNڈ}ẁh:0A4hS$&$N>" &\ឪk20۵{9OtD&zeM)+J](0Q|b#2ZH|f2`li&(P8IIqS$慢#/_ +|NAf+ƅEF|tk:擆WY":'rs '" 9j)NT(Slv{t:I;Lͪ%cs}i$X? +[6^CtP +[|bZ >GHQbn7d1F}NA4$3ߌhkXT=:;A$AXufqЎC]!1lhy'ݙ#;]sScbܧ#™gV71mM4okֿz:lّSNvLн02PQc5Hm2n΁S-JeP4%XѭX鎅" Ea6,[,TÙNap5 +=)`C3Xh8}%/OA¡, y>5'~qL/A7|d֪uO=.g+PaB7@T6gE +؋$nt5$ibMj_kdz疤ihC 7*BAWAȵr46=DRzK*,!" g>|ַWu2}Yw{ۊ~\_s&+pGBKL_rߑ^ v&fOB~pzvk0U`*m]Lf-U” "A8J3pXو7yƇП4ix.QtLI>Eњ쳚ld$TD%Pp.U )ţlNQot-]/ܑ h{9hPV.Z >wOVkm˷-Xk2`̏;|l7 0מkr|^|~65-޻viF@BR!Ih +-A+NT"rOS4w"+hANs2e $aͶ$!$jD)bX%֊0>,bl(ʢ_ koG. :N tC`?$gK@dŁCE}Ƚ:뎌y4^wyOYW;5R]տN>vhxpCzD/Е73m9f| W RL)EMÛݘ(DȚtiVHŐɘdDKQ+/A_iFբjeCU w{1tu#nN[ܚ&i^y7_Pq% hPnG{lިobnYtObbՄ_A|U)&m{BQzz這1r&CNzI1 3des@Q&:|83Xps s|1*aB;p>I;Fs=3,#/ +3/UlSܢԍݯ ~ESmyW"}(_C6$IKuFK#-:pd7F)8j9vVqcFf߲'M>L[V K764{͔B[9-Ӷ=d^Z=rd0iME7T^d=ivsgmmw[r šx`)#U4CJ."0+}W+8%5D'Z%'G MNZ6m¸pAmR\{2-rfn6i/6lmVҡ W XxNs]pQwwzpϰ,ij[/ty|GK%:elv{a0:v1]n(6Ps^`Hv{Qq)b[xo+f8ERJoVl IB+M&-(J<8ű$6Ѱ( Qu`wW\ߩbƎ{CڧOuߝ^=&V] a5FmT@gڳhN_-+/Vg P(,1J7:.ǼB8Iw#mCur?Yص2" v + 3#3R<K:~#L&I0B}{^7cZo/٧pOc~n_MyI#(HK~j&^xի[}>{Izoa0ڽmG:SbO&fNAP{*nʼn *MI`1vI41NC9)C2& UP;0eWOI'P6s<ş2AE{.~lZvHW#) +}5>T_w%ZP +HH3p*nі_P{ӛ6ϠC=_@Kt X#fq/b,59o5nqRR;"(dbnlXf ܪD-[Ylg7٬6ې,zρ6# >x2gs'eP'5෧rrJ[}2+oWH|D2<}7p@ͦ0ԣΕE𤮕Y+oRvh)n> rzQe>ZlB"??gC]g 62 +lx=Jc1$p$rfl@6'PB#8i(Uи>AU +runYļ)"/"::Doi9x m"J^пN\sa<3gK")_L6S,aG i"4B&+mOmZâ!TE+m8ç)UPiK'Y%&%igP ='ԥv[zJbF!@Y[@썂1.(ag{YRdc:Dcx4-AT6Ѓ!tD݊G*)J?uvw&u~Fw_CHDЧ.]zڣb P\oj^ޣ(K/P~^/sh$gY^i(,e-c{3Ց@%PZV(+Q Zԁ6Vf\C렾Ic8|35ßAr}Z^EñAjFR,x&x:xmg6z(Ckx2TU*aYP53*pjɷ렍kDФQs zԬ֩f=UԷoFxmZjP9@}|_.\%ת= +endstream endobj 28878 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_H_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 28879 0 obj <> endobj 28880 0 obj <> endobj 28881 0 obj <> endobj 28882 0 obj <> endobj 28883 0 obj <> endobj 28884 0 obj <> endobj 28885 0 obj <> endobj 28886 0 obj <> endobj 28887 0 obj <> endobj 28888 0 obj <> endobj 28889 0 obj <> endobj 28890 0 obj <> endobj 28891 0 obj <> endobj 28892 0 obj <> endobj 28893 0 obj <> endobj 28894 0 obj <> endobj 28895 0 obj <> endobj 28896 0 obj <> endobj 28897 0 obj <> endobj 28898 0 obj <> endobj 28899 0 obj <> endobj 28900 0 obj <> endobj 28901 0 obj <> endobj 28902 0 obj <> endobj 28903 0 obj <> endobj 28904 0 obj <> endobj 28905 0 obj <> endobj 28906 0 obj <> endobj 28907 0 obj <> endobj 28908 0 obj <> endobj 28909 0 obj <> endobj 28910 0 obj <> endobj 28911 0 obj <> endobj 28912 0 obj <> endobj 28913 0 obj <> endobj 28914 0 obj <> endobj 28915 0 obj <> endobj 28916 0 obj <> endobj 28917 0 obj <> endobj 28918 0 obj <> endobj 28919 0 obj <> endobj 28920 0 obj <> endobj 28921 0 obj <> endobj 28922 0 obj <> endobj 28923 0 obj <> endobj 28924 0 obj <> endobj 28925 0 obj <> endobj 28926 0 obj <> endobj 28927 0 obj <> endobj 28928 0 obj <> endobj 28929 0 obj <> endobj 28930 0 obj <> endobj 28931 0 obj <> endobj 28932 0 obj <> endobj 28933 0 obj <> endobj 28934 0 obj <> endobj 28935 0 obj <> endobj 28936 0 obj <> endobj 28937 0 obj <> endobj 28938 0 obj <> endobj 28939 0 obj <> endobj 28940 0 obj <> endobj 28941 0 obj <> endobj 28942 0 obj <> endobj 28943 0 obj <> endobj 28944 0 obj <> endobj 28945 0 obj <> endobj 28946 0 obj <> endobj 28947 0 obj <> endobj 28948 0 obj <> endobj 28949 0 obj <> endobj 28950 0 obj <> endobj 28951 0 obj <> endobj 28952 0 obj <> endobj 28953 0 obj <> endobj 28954 0 obj <> endobj 28955 0 obj <> endobj 28956 0 obj <> endobj 28957 0 obj <> endobj 28958 0 obj <> endobj 28959 0 obj <> endobj 28960 0 obj <> endobj 28961 0 obj <> endobj 28962 0 obj <> endobj 28963 0 obj <> endobj 28964 0 obj <> endobj 28965 0 obj <> endobj 28966 0 obj <> endobj 28967 0 obj <> endobj 28968 0 obj <> endobj 28969 0 obj <> endobj 28970 0 obj <> endobj 28971 0 obj <> endobj 28972 0 obj <> endobj 28973 0 obj <> endobj 28974 0 obj <> endobj 28975 0 obj <> endobj 28976 0 obj <> endobj 28977 0 obj <> endobj 28978 0 obj <> endobj 28979 0 obj <> endobj 28980 0 obj <> endobj 28981 0 obj <> endobj 28982 0 obj <> endobj 28983 0 obj <> endobj 28984 0 obj <> endobj 28985 0 obj <> endobj 28986 0 obj <> endobj 28987 0 obj <> endobj 28988 0 obj <> endobj 28989 0 obj <> endobj 28990 0 obj <> endobj 28991 0 obj <> endobj 28992 0 obj <> endobj 28993 0 obj <> endobj 28994 0 obj <> endobj 28995 0 obj <> endobj 28996 0 obj <> endobj 28997 0 obj <> endobj 28998 0 obj <> endobj 28999 0 obj <> endobj 29000 0 obj <> endobj 29001 0 obj <> endobj 29002 0 obj <> endobj 29003 0 obj <> endobj 29004 0 obj <> endobj 29005 0 obj <> endobj 29006 0 obj <> endobj 29007 0 obj <> endobj 29008 0 obj <> endobj 29009 0 obj <> endobj 29010 0 obj <> endobj 29011 0 obj <> endobj 29012 0 obj <> endobj 29013 0 obj <> endobj 29014 0 obj <> endobj 29015 0 obj <> endobj 29016 0 obj <> endobj 29017 0 obj <> endobj 29018 0 obj <> endobj 29019 0 obj <> endobj 29020 0 obj <> endobj 29021 0 obj <> endobj 29022 0 obj <> endobj 29023 0 obj <> endobj 29024 0 obj <> endobj 29025 0 obj <> endobj 29026 0 obj <> endobj 29027 0 obj <> endobj 29028 0 obj <> endobj 29029 0 obj <> endobj 29030 0 obj <> endobj 29031 0 obj <> endobj 29032 0 obj <> endobj 29033 0 obj <> endobj 29034 0 obj <> endobj 29035 0 obj <> endobj 29036 0 obj <> endobj 29037 0 obj <> endobj 29038 0 obj <> endobj 29039 0 obj <> endobj 29040 0 obj <> endobj 29041 0 obj <> endobj 29042 0 obj <> endobj 29043 0 obj <> endobj 29044 0 obj <> endobj 29045 0 obj <> endobj 29046 0 obj <> endobj 29047 0 obj <> endobj 29048 0 obj <> endobj 29049 0 obj <> endobj 29050 0 obj <> endobj 29051 0 obj <> endobj 29052 0 obj <> endobj 29053 0 obj <> endobj 29054 0 obj <> endobj 29055 0 obj <> endobj 29056 0 obj <> endobj 29057 0 obj <> endobj 29058 0 obj <> endobj 29059 0 obj <> endobj 29060 0 obj <> endobj 29061 0 obj <> endobj 29062 0 obj <> endobj 29063 0 obj <> endobj 29064 0 obj <> endobj 29065 0 obj <> endobj 29066 0 obj <> endobj 29067 0 obj <> endobj 29068 0 obj <> endobj 29069 0 obj <> endobj 29070 0 obj <> endobj 29071 0 obj <> endobj 29072 0 obj <> endobj 29073 0 obj <> endobj 29074 0 obj <> endobj 29075 0 obj <> endobj 29076 0 obj <> endobj 29077 0 obj <> endobj 29078 0 obj <> endobj 29079 0 obj <> endobj 29080 0 obj <> endobj 29081 0 obj <> endobj 29082 0 obj <> endobj 29083 0 obj <> endobj 29084 0 obj <> endobj 29085 0 obj <> endobj 29086 0 obj <> endobj 29087 0 obj <> endobj 29088 0 obj <> endobj 29089 0 obj <> endobj 29090 0 obj <> endobj 29091 0 obj <> endobj 29092 0 obj <> endobj 29093 0 obj <> endobj 29094 0 obj <> endobj 29095 0 obj <> endobj 29096 0 obj <> endobj 29097 0 obj <> endobj 29098 0 obj <> endobj 29099 0 obj <> endobj 29100 0 obj <> endobj 29101 0 obj <> endobj 29102 0 obj <> endobj 29103 0 obj <> endobj 29104 0 obj <> endobj 29105 0 obj <> endobj 29106 0 obj <> endobj 29107 0 obj <> endobj 29108 0 obj <> endobj 29109 0 obj <> endobj 29110 0 obj <> endobj 29111 0 obj <> endobj 29112 0 obj <> endobj 29113 0 obj <> endobj 29114 0 obj <> endobj 29115 0 obj <> endobj 29116 0 obj <> endobj 29117 0 obj <> endobj 29118 0 obj <> endobj 29119 0 obj <> endobj 29120 0 obj <> endobj 29121 0 obj <> endobj 29122 0 obj <> endobj 29123 0 obj <> endobj 29124 0 obj <> endobj 29125 0 obj <> endobj 29126 0 obj <> endobj 29127 0 obj <> endobj 29128 0 obj <> endobj 29129 0 obj <> endobj 29130 0 obj <> endobj 29131 0 obj <> endobj 29132 0 obj <> endobj 29133 0 obj <> endobj 29134 0 obj <> endobj 29135 0 obj <> endobj 29136 0 obj <> endobj 29137 0 obj <> endobj 29138 0 obj <> endobj 29139 0 obj <> endobj 29140 0 obj <> endobj 29141 0 obj <> endobj 29142 0 obj <> endobj 29143 0 obj <> endobj 29144 0 obj <> endobj 29145 0 obj <> endobj 29146 0 obj <> endobj 29147 0 obj <> endobj 29148 0 obj <> endobj 29149 0 obj <> endobj 29150 0 obj <> endobj 29151 0 obj <> endobj 29152 0 obj <> endobj 29153 0 obj <> endobj 29154 0 obj <> endobj 29155 0 obj <> endobj 29156 0 obj <> endobj 29157 0 obj <> endobj 29158 0 obj <> endobj 29159 0 obj <> endobj 29160 0 obj <> endobj 29161 0 obj <> endobj 29162 0 obj <> endobj 29163 0 obj <> endobj 29164 0 obj <> endobj 29165 0 obj <> endobj 29166 0 obj <> endobj 29167 0 obj <> endobj 29168 0 obj <> endobj 29169 0 obj <> endobj 29170 0 obj <> endobj 29171 0 obj <> endobj 29172 0 obj <> endobj 29173 0 obj <> endobj 29174 0 obj <> endobj 29175 0 obj <> endobj 29176 0 obj <> endobj 29177 0 obj <> endobj 29178 0 obj <> endobj 29179 0 obj <> endobj 29180 0 obj <> endobj 29181 0 obj <> endobj 29182 0 obj <> endobj 29183 0 obj <> endobj 29184 0 obj <> endobj 29185 0 obj <> endobj 29186 0 obj <> endobj 29187 0 obj <> endobj 29188 0 obj <> endobj 29189 0 obj <> endobj 29190 0 obj <> endobj 29191 0 obj <> endobj 29192 0 obj <> endobj 29193 0 obj <> endobj 29194 0 obj <> endobj 29195 0 obj <> endobj 29196 0 obj <> endobj 29197 0 obj <> endobj 29198 0 obj <> endobj 29199 0 obj <> endobj 29200 0 obj <> endobj 29201 0 obj <> endobj 29202 0 obj <> endobj 29203 0 obj <> endobj 29204 0 obj <> endobj 29205 0 obj <> endobj 29206 0 obj <> endobj 29207 0 obj <> endobj 29208 0 obj <> endobj 29209 0 obj <> endobj 29210 0 obj <> endobj 29211 0 obj <> endobj 29212 0 obj <> endobj 29213 0 obj <> endobj 29214 0 obj <> endobj 29215 0 obj <> endobj 29216 0 obj <> endobj 29217 0 obj <> endobj 29218 0 obj <> endobj 29219 0 obj <> endobj 29220 0 obj <> endobj 29221 0 obj <> endobj 29222 0 obj <> endobj 29223 0 obj <> endobj 29224 0 obj <> endobj 29225 0 obj <> endobj 29226 0 obj <> endobj 29227 0 obj <> endobj 29228 0 obj <> endobj 29229 0 obj <> endobj 29230 0 obj <> endobj 29231 0 obj <> endobj 29232 0 obj <> endobj 29233 0 obj <> endobj 29234 0 obj <> endobj 29235 0 obj <> endobj 29236 0 obj <> endobj 29237 0 obj <> endobj 29238 0 obj <> endobj 29239 0 obj <> endobj 29240 0 obj <> endobj 29241 0 obj <> endobj 29242 0 obj <> endobj 29243 0 obj <> endobj 29244 0 obj <> endobj 29245 0 obj <> endobj 29246 0 obj <> endobj 29247 0 obj <> endobj 29248 0 obj <> endobj 29249 0 obj <> endobj 29250 0 obj <> endobj 29251 0 obj <> endobj 29252 0 obj <> endobj 29253 0 obj <> endobj 29254 0 obj <> endobj 29255 0 obj <> endobj 29256 0 obj <> endobj 29257 0 obj <> endobj 29258 0 obj <> endobj 29259 0 obj <> endobj 29260 0 obj <> endobj 29261 0 obj <> endobj 29262 0 obj <> endobj 29263 0 obj <> endobj 29264 0 obj <> endobj 29265 0 obj <> endobj 29266 0 obj <> endobj 29267 0 obj <> endobj 29268 0 obj <> endobj 29269 0 obj <> endobj 29270 0 obj <> endobj 29271 0 obj <> endobj 29272 0 obj <> endobj 29273 0 obj <> endobj 29274 0 obj <> endobj 29275 0 obj <> endobj 29276 0 obj <> endobj 29277 0 obj <> endobj 29278 0 obj <> endobj 29279 0 obj <> endobj 29280 0 obj <> endobj 29281 0 obj <> endobj 29282 0 obj <> endobj 29283 0 obj <> endobj 29284 0 obj <> endobj 29285 0 obj <> endobj 29286 0 obj <> endobj 29287 0 obj <> endobj 29288 0 obj <> endobj 29289 0 obj <> endobj 29290 0 obj <> endobj 29291 0 obj <> endobj 29292 0 obj <> endobj 29293 0 obj <> endobj 29294 0 obj <> endobj 29295 0 obj <> endobj 29296 0 obj <> endobj 29297 0 obj <> endobj 29298 0 obj <> endobj 29299 0 obj <> endobj 29300 0 obj <> endobj 29301 0 obj <> endobj 29302 0 obj <> endobj 29303 0 obj <> endobj 29304 0 obj <> endobj 29305 0 obj <> endobj 29306 0 obj <> endobj 29307 0 obj <> endobj 29308 0 obj <> endobj 29309 0 obj <> endobj 29310 0 obj <> endobj 29311 0 obj <> endobj 29312 0 obj <> endobj 29313 0 obj <> endobj 29314 0 obj <> endobj 29315 0 obj <> endobj 29316 0 obj <> endobj 29317 0 obj <> endobj 29318 0 obj <> endobj 29319 0 obj <> endobj 29320 0 obj <> endobj 29321 0 obj <> endobj 29322 0 obj <> endobj 29323 0 obj <> endobj 29324 0 obj <> endobj 29325 0 obj <> endobj 29326 0 obj <> endobj 29327 0 obj <> endobj 29328 0 obj <> endobj 29329 0 obj <> endobj 29330 0 obj <> endobj 29331 0 obj <> endobj 29332 0 obj <> endobj 29333 0 obj <> endobj 29334 0 obj <> endobj 29335 0 obj <> endobj 29336 0 obj <> endobj 29337 0 obj <> endobj 29338 0 obj <> endobj 29339 0 obj <> endobj 29340 0 obj <> endobj 29341 0 obj <> endobj 29342 0 obj <> endobj 29343 0 obj <> endobj 29344 0 obj <> endobj 29345 0 obj <> endobj 29346 0 obj <> endobj 29347 0 obj <> endobj 29348 0 obj <> endobj 29349 0 obj <> endobj 29350 0 obj <> endobj 29351 0 obj <> endobj 29352 0 obj <> endobj 29353 0 obj <> endobj 29354 0 obj <> endobj 29355 0 obj <> endobj 29356 0 obj <> endobj 29357 0 obj <> endobj 29358 0 obj <> endobj 29359 0 obj <> endobj 29360 0 obj <> endobj 29361 0 obj <> endobj 29362 0 obj <> endobj 29363 0 obj <> endobj 29364 0 obj <> endobj 29365 0 obj <> endobj 29366 0 obj <> endobj 29367 0 obj <> endobj 29368 0 obj <> endobj 29369 0 obj <> endobj 29370 0 obj <> endobj 29371 0 obj <> endobj 29372 0 obj <> endobj 29373 0 obj <> endobj 29374 0 obj <> endobj 29375 0 obj <> endobj 29376 0 obj <> endobj 29377 0 obj <> endobj 29378 0 obj <> endobj 29379 0 obj <> endobj 29380 0 obj <> endobj 29381 0 obj <> endobj 29382 0 obj <> endobj 29383 0 obj <> endobj 29384 0 obj <> endobj 29385 0 obj <> endobj 29386 0 obj <> endobj 29387 0 obj <> endobj 29388 0 obj <> endobj 29389 0 obj <> endobj 29390 0 obj <> endobj 29391 0 obj <> endobj 29392 0 obj <> endobj 29393 0 obj <> endobj 29394 0 obj <> endobj 29395 0 obj <> endobj 29396 0 obj <> endobj 29397 0 obj <> endobj 29398 0 obj <> endobj 29399 0 obj <> endobj 29400 0 obj <> endobj 29401 0 obj <> endobj 29402 0 obj <> endobj 29403 0 obj <> endobj 29404 0 obj <> endobj 29405 0 obj <> endobj 29406 0 obj <> endobj 29407 0 obj <> endobj 29408 0 obj <> endobj 29409 0 obj <> endobj 29410 0 obj <> endobj 29411 0 obj <> endobj 29412 0 obj <> endobj 29413 0 obj <> endobj 29414 0 obj <> endobj 29415 0 obj <> endobj 29416 0 obj <> endobj 29417 0 obj <> endobj 29418 0 obj <> endobj 29419 0 obj <> endobj 29420 0 obj <> endobj 29421 0 obj <> endobj 29422 0 obj <> endobj 29423 0 obj <> endobj 29424 0 obj <> endobj 29425 0 obj <> endobj 29426 0 obj <> endobj 29427 0 obj <> endobj 29428 0 obj <> endobj 29429 0 obj <> endobj 29430 0 obj <> endobj 29431 0 obj <> endobj 29432 0 obj <> endobj 29433 0 obj <> endobj 29434 0 obj <> endobj 29435 0 obj <> endobj 29436 0 obj <> endobj 29437 0 obj <> endobj 29438 0 obj <> endobj 29439 0 obj <> endobj 29440 0 obj <> endobj 29441 0 obj <> endobj 29442 0 obj <> endobj 29443 0 obj <> endobj 29444 0 obj <> endobj 29445 0 obj <> endobj 29446 0 obj <> endobj 29447 0 obj <> endobj 29448 0 obj <> endobj 29449 0 obj <> endobj 29450 0 obj <> endobj 29451 0 obj <> endobj 29452 0 obj <> endobj 29453 0 obj <> endobj 29454 0 obj <> endobj 29455 0 obj <> endobj 29456 0 obj <> endobj 29457 0 obj <> endobj 29458 0 obj <> endobj 29459 0 obj <> endobj 29460 0 obj <> endobj 29461 0 obj <> endobj 29462 0 obj <> endobj 29463 0 obj <> endobj 29464 0 obj <> endobj 29465 0 obj <> endobj 29466 0 obj <> endobj 29467 0 obj <> endobj 29468 0 obj <> endobj 29469 0 obj <> endobj 29470 0 obj <> endobj 29471 0 obj <> endobj 29472 0 obj <> endobj 29473 0 obj <> endobj 29474 0 obj <> endobj 29475 0 obj <> endobj 29476 0 obj <> endobj 29477 0 obj <> endobj 29478 0 obj <> endobj 29479 0 obj <> endobj 29480 0 obj <> endobj 29481 0 obj <> endobj 29482 0 obj <> endobj 29483 0 obj <> endobj 29484 0 obj <> endobj 29485 0 obj <> endobj 29486 0 obj <> endobj 29487 0 obj <> endobj 29488 0 obj <> endobj 29489 0 obj <> endobj 29490 0 obj <> endobj 29491 0 obj <> endobj 29492 0 obj <> endobj 29493 0 obj <> endobj 29494 0 obj <> endobj 29495 0 obj <> endobj 29496 0 obj <> endobj 29497 0 obj <> endobj 29498 0 obj <> endobj 29499 0 obj <> endobj 29500 0 obj <> endobj 29501 0 obj <> endobj 29502 0 obj <> endobj 29503 0 obj <> endobj 29504 0 obj <> endobj 29505 0 obj <> endobj 29506 0 obj <> endobj 29507 0 obj <> endobj 29508 0 obj <> endobj 29509 0 obj <> endobj 29510 0 obj <> endobj 29511 0 obj <> endobj 29512 0 obj <> endobj 29513 0 obj <> endobj 29514 0 obj <> endobj 29515 0 obj <> endobj 29516 0 obj <> endobj 29517 0 obj <> endobj 29518 0 obj <> endobj 29519 0 obj <> endobj 29520 0 obj <> endobj 29521 0 obj <> endobj 29522 0 obj <> endobj 29523 0 obj <> endobj 29524 0 obj <> endobj 29525 0 obj <> endobj 29526 0 obj <> endobj 29527 0 obj <> endobj 29528 0 obj <> endobj 29529 0 obj <> endobj 29530 0 obj <> endobj 29531 0 obj <> endobj 29532 0 obj <> endobj 29533 0 obj <> endobj 29534 0 obj <> endobj 29535 0 obj <> endobj 29536 0 obj <> endobj 29537 0 obj <> endobj 29538 0 obj <> endobj 29539 0 obj <> endobj 29540 0 obj <> endobj 29541 0 obj <> endobj 29542 0 obj <> endobj 29543 0 obj <> endobj 29544 0 obj <> endobj 29545 0 obj <> endobj 29546 0 obj <> endobj 29547 0 obj <> endobj 29548 0 obj <> endobj 29549 0 obj <> endobj 29550 0 obj <> endobj 29551 0 obj <> endobj 29552 0 obj <> endobj 29553 0 obj <> endobj 29554 0 obj <> endobj 29555 0 obj <> endobj 29556 0 obj <> endobj 29557 0 obj <> endobj 29558 0 obj <> endobj 29559 0 obj <> endobj 29560 0 obj <> endobj 29561 0 obj <> endobj 29562 0 obj <> endobj 29563 0 obj <> endobj 29564 0 obj <> endobj 29565 0 obj <> endobj 29566 0 obj <> endobj 29567 0 obj <> endobj 29568 0 obj <> endobj 29569 0 obj <> endobj 29570 0 obj <> endobj 29571 0 obj <> endobj 29572 0 obj <> endobj 29573 0 obj <> endobj 29574 0 obj <> endobj 29575 0 obj <> endobj 29576 0 obj <> endobj 29577 0 obj <> endobj 29578 0 obj <> endobj 29579 0 obj <> endobj 29580 0 obj <> endobj 29581 0 obj <> endobj 29582 0 obj <> endobj 29583 0 obj <> endobj 29584 0 obj <> endobj 29585 0 obj <> endobj 29586 0 obj <> endobj 29587 0 obj <> endobj 29588 0 obj <> endobj 29589 0 obj <> endobj 29590 0 obj <> endobj 29591 0 obj <> endobj 29592 0 obj <> endobj 29593 0 obj <> endobj 29594 0 obj <> endobj 29595 0 obj <> endobj 29596 0 obj <> endobj 29597 0 obj <> endobj 29598 0 obj <> endobj 29599 0 obj <> endobj 29600 0 obj <> endobj 29601 0 obj <> endobj 29602 0 obj <> endobj 29603 0 obj <> endobj 29604 0 obj <> endobj 29605 0 obj <> endobj 29606 0 obj <> endobj 29607 0 obj <> endobj 29608 0 obj <> endobj 29609 0 obj <> endobj 29610 0 obj <> endobj 29611 0 obj <> endobj 29612 0 obj <> endobj 29613 0 obj <> endobj 29614 0 obj <> endobj 29615 0 obj <> endobj 29616 0 obj <> endobj 29617 0 obj <> endobj 29618 0 obj <> endobj 29619 0 obj <> endobj 29620 0 obj <> endobj 29621 0 obj <> endobj 29622 0 obj <> endobj 29623 0 obj <> endobj 29624 0 obj <> endobj 29625 0 obj <> endobj 29626 0 obj <> endobj 29627 0 obj <> endobj 29628 0 obj <> endobj 29629 0 obj <> endobj 29630 0 obj <> endobj 29631 0 obj <> endobj 29632 0 obj <> endobj 29633 0 obj <> endobj 29634 0 obj <> endobj 29635 0 obj <> endobj 29636 0 obj <> endobj 29637 0 obj <> endobj 29638 0 obj <> endobj 29639 0 obj <> endobj 29640 0 obj <> endobj 29641 0 obj <> endobj 29642 0 obj <> endobj 29643 0 obj <> endobj 29644 0 obj <> endobj 29645 0 obj <> endobj 29646 0 obj <> endobj 29647 0 obj <> endobj 29648 0 obj <> endobj 29649 0 obj <> endobj 29650 0 obj <> endobj 29651 0 obj <> endobj 29652 0 obj <> endobj 29653 0 obj <> endobj 29654 0 obj <> endobj 29655 0 obj <> endobj 29656 0 obj <> endobj 29657 0 obj <> endobj 29658 0 obj <> endobj 29659 0 obj <> endobj 29660 0 obj <> endobj 29661 0 obj <> endobj 29662 0 obj <> endobj 29663 0 obj <> endobj 29664 0 obj <> endobj 29665 0 obj <> endobj 29666 0 obj <> endobj 29667 0 obj <> endobj 29668 0 obj <> endobj 29669 0 obj <> endobj 29670 0 obj <> endobj 29671 0 obj <> endobj 29672 0 obj <> endobj 29673 0 obj <> endobj 29674 0 obj <> endobj 29675 0 obj <> endobj 29676 0 obj <> endobj 29677 0 obj <> endobj 29678 0 obj <> endobj 29679 0 obj <> endobj 29680 0 obj <> endobj 29681 0 obj <> endobj 29682 0 obj <> endobj 29683 0 obj <> endobj 29684 0 obj <> endobj 29685 0 obj <> endobj 29686 0 obj <> endobj 29687 0 obj <> endobj 29688 0 obj <> endobj 29689 0 obj <> endobj 29690 0 obj <> endobj 29691 0 obj <> endobj 29692 0 obj <> endobj 29693 0 obj <> endobj 29694 0 obj <> endobj 29695 0 obj <> endobj 29696 0 obj <> endobj 29697 0 obj <> endobj 29698 0 obj <> endobj 29699 0 obj <> endobj 29700 0 obj <> endobj 29701 0 obj <> endobj 29702 0 obj <> endobj 29703 0 obj <> endobj 29704 0 obj <> endobj 29705 0 obj <> endobj 29706 0 obj <> endobj 29707 0 obj <> endobj 29708 0 obj <> endobj 29709 0 obj <> endobj 29710 0 obj <> endobj 29711 0 obj <> endobj 29712 0 obj <> endobj 29713 0 obj <> endobj 29714 0 obj <> endobj 29715 0 obj <> endobj 29716 0 obj <> endobj 29717 0 obj <> endobj 29718 0 obj <> endobj 29719 0 obj <> endobj 29720 0 obj <> endobj 29721 0 obj <> endobj 29722 0 obj <> endobj 29723 0 obj <> endobj 29724 0 obj <> endobj 29725 0 obj <> endobj 29726 0 obj <> endobj 29727 0 obj <> endobj 29728 0 obj <> endobj 29729 0 obj <> endobj 29730 0 obj <> endobj 29731 0 obj <> endobj 29732 0 obj <> endobj 29733 0 obj <> endobj 29734 0 obj <> endobj 29735 0 obj <> endobj 29736 0 obj <> endobj 29737 0 obj <> endobj 29738 0 obj <> endobj 29739 0 obj <> endobj 29740 0 obj <> endobj 29741 0 obj <> endobj 29742 0 obj <> endobj 29743 0 obj <> endobj 29744 0 obj <> endobj 29745 0 obj <> endobj 29746 0 obj <> endobj 29747 0 obj <> endobj 29748 0 obj <> endobj 29749 0 obj <> endobj 29750 0 obj <> endobj 29751 0 obj <> endobj 29752 0 obj <> endobj 29753 0 obj <> endobj 29754 0 obj <> endobj 29755 0 obj <> endobj 29756 0 obj <> endobj 29757 0 obj <> endobj 29758 0 obj <> endobj 29759 0 obj <> endobj 29760 0 obj <> endobj 29761 0 obj <> endobj 29762 0 obj <> endobj 29763 0 obj <> endobj 29764 0 obj <> endobj 29765 0 obj <> endobj 29766 0 obj <> endobj 29767 0 obj <> endobj 29768 0 obj <> endobj 29769 0 obj <> endobj 29770 0 obj <> endobj 29771 0 obj <> endobj 29772 0 obj <> endobj 29773 0 obj <> endobj 29774 0 obj <> endobj 29775 0 obj <> endobj 29776 0 obj <> endobj 29777 0 obj <> endobj 29778 0 obj <> endobj 29779 0 obj <> endobj 29780 0 obj <> endobj 29781 0 obj <> endobj 29782 0 obj <> endobj 29783 0 obj <> endobj 29784 0 obj <> endobj 29785 0 obj <> endobj 29786 0 obj <> endobj 29787 0 obj <> endobj 29788 0 obj <> endobj 29789 0 obj <> endobj 29790 0 obj <> endobj 29791 0 obj <> endobj 29792 0 obj <> endobj 29793 0 obj <> endobj 29794 0 obj <> endobj 29795 0 obj <> endobj 29796 0 obj <> endobj 29797 0 obj <> endobj 29798 0 obj <> endobj 29799 0 obj <> endobj 29800 0 obj <> endobj 29801 0 obj <> endobj 29802 0 obj <> endobj 29803 0 obj <> endobj 29804 0 obj <> endobj 29805 0 obj <> endobj 29806 0 obj <> endobj 29807 0 obj <> endobj 29808 0 obj <> endobj 29809 0 obj <> endobj 29810 0 obj <> endobj 29811 0 obj <> endobj 29812 0 obj <> endobj 29813 0 obj <> endobj 29814 0 obj <> endobj 29815 0 obj <> endobj 29816 0 obj <> endobj 29817 0 obj <> endobj 29818 0 obj <> endobj 29819 0 obj <> endobj 29820 0 obj <> endobj 29821 0 obj <> endobj 29822 0 obj <> endobj 29823 0 obj <> endobj 29824 0 obj <> endobj 29825 0 obj <> endobj 29826 0 obj <> endobj 29827 0 obj <> endobj 29828 0 obj <> endobj 29829 0 obj <> endobj 29830 0 obj <> endobj 29831 0 obj <> endobj 29832 0 obj <> endobj 29833 0 obj <> endobj 29834 0 obj <> endobj 29835 0 obj <> endobj 29836 0 obj <> endobj 29837 0 obj <> endobj 29838 0 obj <> endobj 29839 0 obj <> endobj 29840 0 obj <> endobj 29841 0 obj <> endobj 29842 0 obj <> endobj 29843 0 obj <> endobj 29844 0 obj <> endobj 29845 0 obj <> endobj 29846 0 obj <> endobj 29847 0 obj <> endobj 29848 0 obj <> endobj 29849 0 obj <> endobj 29850 0 obj <> endobj 29851 0 obj <> endobj 29852 0 obj <> endobj 29853 0 obj <> endobj 29854 0 obj <> endobj 29855 0 obj <> endobj 29856 0 obj <> endobj 29857 0 obj <> endobj 29858 0 obj <> endobj 29859 0 obj <> endobj 29860 0 obj <> endobj 29861 0 obj <> endobj 29862 0 obj <> endobj 29863 0 obj <> endobj 29864 0 obj <> endobj 29865 0 obj <> endobj 29866 0 obj <> endobj 29867 0 obj <> endobj 29868 0 obj <> endobj 29869 0 obj <> endobj 29870 0 obj <> endobj 29871 0 obj <> endobj 29872 0 obj <> endobj 29873 0 obj <> endobj 29874 0 obj <> endobj 29875 0 obj <> endobj 29876 0 obj <> endobj 29877 0 obj <> endobj 29878 0 obj <> endobj 29879 0 obj <> endobj 29880 0 obj <> endobj 29881 0 obj <> endobj 29882 0 obj <> endobj 29883 0 obj <> endobj 29884 0 obj <> endobj 29885 0 obj <> endobj 29886 0 obj <> endobj 29887 0 obj <> endobj 29888 0 obj <> endobj 29889 0 obj <> endobj 29890 0 obj <> endobj 29891 0 obj <> endobj 29892 0 obj <> endobj 29893 0 obj <> endobj 29894 0 obj <> endobj 29895 0 obj <> endobj 29896 0 obj <> endobj 29897 0 obj <> endobj 29898 0 obj <> endobj 29899 0 obj <> endobj 29900 0 obj <> endobj 29901 0 obj <> endobj 29902 0 obj <> endobj 29903 0 obj <> endobj 29904 0 obj <> endobj 29905 0 obj <> endobj 29906 0 obj <> endobj 29907 0 obj <> endobj 29908 0 obj <> endobj 29909 0 obj <> endobj 29910 0 obj <> endobj 29911 0 obj <> endobj 29912 0 obj <> endobj 29913 0 obj <> endobj 29914 0 obj <> endobj 29915 0 obj <> endobj 29916 0 obj <> endobj 29917 0 obj <> endobj 29918 0 obj <> endobj 29919 0 obj <> endobj 29920 0 obj <> endobj 29921 0 obj <> endobj 29922 0 obj <> endobj 29923 0 obj <> endobj 29924 0 obj <> endobj 29925 0 obj <> endobj 29926 0 obj <> endobj 29927 0 obj <> endobj 29928 0 obj <> endobj 29929 0 obj <> endobj 29930 0 obj <> endobj 29931 0 obj <> endobj 29932 0 obj <> endobj 29933 0 obj <> endobj 29934 0 obj <> endobj 29935 0 obj <> endobj 29936 0 obj <> endobj 29937 0 obj <> endobj 29938 0 obj <> endobj 29939 0 obj <> endobj 29940 0 obj <> endobj 29941 0 obj <> endobj 29942 0 obj <> endobj 29943 0 obj <> endobj 29944 0 obj <> endobj 29945 0 obj <> endobj 29946 0 obj <> endobj 29947 0 obj <> endobj 29948 0 obj <> endobj 29949 0 obj <> endobj 29950 0 obj <> endobj 29951 0 obj <> endobj 29952 0 obj <> endobj 29953 0 obj <> endobj 29954 0 obj <> endobj 29955 0 obj <> endobj 29956 0 obj <> endobj 29957 0 obj <> endobj 29958 0 obj <> endobj 29959 0 obj <> endobj 29960 0 obj <> endobj 29961 0 obj <> endobj 29962 0 obj <> endobj 29963 0 obj <> endobj 29964 0 obj <> endobj 29965 0 obj <> endobj 29966 0 obj <> endobj 29967 0 obj <> endobj 29968 0 obj <> endobj 29969 0 obj <> endobj 29970 0 obj <> endobj 29971 0 obj <> endobj 29972 0 obj <> endobj 29973 0 obj <> endobj 29974 0 obj <> endobj 29975 0 obj <> endobj 29976 0 obj <> endobj 29977 0 obj <> endobj 29978 0 obj <> endobj 29979 0 obj <> endobj 29980 0 obj <> endobj 29981 0 obj <> endobj 29982 0 obj <> endobj 29983 0 obj <> endobj 29984 0 obj <> endobj 29985 0 obj <> endobj 29986 0 obj <> endobj 29987 0 obj <> endobj 29988 0 obj <> endobj 29989 0 obj <> endobj 29990 0 obj <> endobj 29991 0 obj <> endobj 29992 0 obj <> endobj 29993 0 obj <> endobj 29994 0 obj <> endobj 29995 0 obj <> endobj 29996 0 obj <> endobj 29997 0 obj <> endobj 29998 0 obj <> endobj 29999 0 obj <> endobj 30000 0 obj <> endobj 30001 0 obj <> endobj 30002 0 obj <> endobj 30003 0 obj <> endobj 30004 0 obj <> endobj 30005 0 obj <> endobj 30006 0 obj <> endobj 30007 0 obj <> endobj 30008 0 obj <> endobj 30009 0 obj <> endobj 30010 0 obj <> endobj 30011 0 obj <> endobj 30012 0 obj <> endobj 30013 0 obj <> endobj 30014 0 obj <> endobj 30015 0 obj <> endobj 30016 0 obj <> endobj 30017 0 obj <> endobj 30018 0 obj <> endobj 30019 0 obj <> endobj 30020 0 obj <> endobj 30021 0 obj <> endobj 30022 0 obj <> endobj 30023 0 obj <> endobj 30024 0 obj <> endobj 30025 0 obj <> endobj 30026 0 obj <> endobj 30027 0 obj <> endobj 30028 0 obj <> endobj 30029 0 obj <> endobj 30030 0 obj <> endobj 30031 0 obj <255 bytes)>> endobj 30032 0 obj <> endobj 30033 0 obj <> endobj 30034 0 obj <255 bytes)>> endobj 30035 0 obj <> endobj 30036 0 obj <> endobj 30037 0 obj <> endobj 30038 0 obj <> endobj 30039 0 obj <> endobj 30040 0 obj <> endobj 30041 0 obj <> endobj 30042 0 obj <> endobj 30043 0 obj <> endobj 30044 0 obj <> endobj 30045 0 obj <> endobj 30046 0 obj <> endobj 30047 0 obj <> endobj 30048 0 obj <> endobj 30049 0 obj <> endobj 30050 0 obj <> endobj 30051 0 obj <> endobj 30052 0 obj <> endobj 30053 0 obj <> endobj 30054 0 obj <> endobj 30055 0 obj <> endobj 30056 0 obj <> endobj 30057 0 obj <> endobj 30058 0 obj <> endobj 30059 0 obj <> endobj 30060 0 obj <> endobj 30061 0 obj <> endobj 30062 0 obj <> endobj 30063 0 obj <> endobj 30064 0 obj <> endobj 30065 0 obj <> endobj 30066 0 obj <> endobj 30067 0 obj <> endobj 30068 0 obj <> endobj 30069 0 obj <> endobj 30070 0 obj <> endobj 30071 0 obj <> endobj 30072 0 obj <> endobj 30073 0 obj <> endobj 30074 0 obj <> endobj 30075 0 obj <> endobj 30076 0 obj <> endobj 30077 0 obj <> endobj 30078 0 obj <> endobj 30079 0 obj <> endobj 30080 0 obj <> endobj 30081 0 obj <> endobj 30082 0 obj <> endobj 30083 0 obj <> endobj 30084 0 obj <> endobj 30085 0 obj <> endobj 30086 0 obj <> endobj 30087 0 obj <> endobj 30088 0 obj <> endobj 30089 0 obj <> endobj 30090 0 obj <> endobj 30091 0 obj <> endobj 30092 0 obj <> endobj 30093 0 obj <> endobj 30094 0 obj <> endobj 30095 0 obj <> endobj 30096 0 obj <> endobj 30097 0 obj <> endobj 30098 0 obj <> endobj 30099 0 obj <> endobj 30100 0 obj <> endobj 30101 0 obj <> endobj 30102 0 obj <> endobj 30103 0 obj <> endobj 30104 0 obj <> endobj 30105 0 obj <> endobj 30106 0 obj <> endobj 30107 0 obj <> endobj 30108 0 obj <> endobj 30109 0 obj <> endobj 30110 0 obj <> endobj 30111 0 obj <> endobj 30112 0 obj <> endobj 30113 0 obj <> endobj 30114 0 obj <> endobj 30115 0 obj <> endobj 30116 0 obj <> endobj 30117 0 obj <> endobj 30118 0 obj <> endobj 30119 0 obj <> endobj 30120 0 obj <> endobj 30121 0 obj <> endobj 30122 0 obj <> endobj 30123 0 obj <> endobj 30124 0 obj <> endobj 30125 0 obj <> endobj 30126 0 obj <> endobj 30127 0 obj <> endobj 30128 0 obj <> endobj 30129 0 obj <> endobj 30130 0 obj <> endobj 30131 0 obj <> endobj 30132 0 obj <> endobj 30133 0 obj <> endobj 30134 0 obj <> endobj 30135 0 obj <> endobj 30136 0 obj <> endobj 30137 0 obj <> endobj 30138 0 obj <> endobj 30139 0 obj <> endobj 30140 0 obj <> endobj 30141 0 obj <> endobj 30142 0 obj <> endobj 30143 0 obj <> endobj 30144 0 obj <> endobj 30145 0 obj <> endobj 30146 0 obj <> endobj 30147 0 obj <> endobj 30148 0 obj <> endobj 30149 0 obj <> endobj 30150 0 obj <> endobj 30151 0 obj <> endobj 30152 0 obj <> endobj 30153 0 obj <> endobj 30154 0 obj <> endobj 30155 0 obj <> endobj 30156 0 obj <> endobj 30157 0 obj <> endobj 30158 0 obj <> endobj 30159 0 obj <> endobj 30160 0 obj <> endobj 30161 0 obj <> endobj 30162 0 obj <> endobj 30163 0 obj <> endobj 30164 0 obj <> endobj 30165 0 obj <> endobj 30166 0 obj <> endobj 30167 0 obj <> endobj 30168 0 obj <> endobj 30169 0 obj <> endobj 30170 0 obj <> endobj 30171 0 obj <> endobj 30172 0 obj <> endobj 30173 0 obj <> endobj 30174 0 obj <> endobj 30175 0 obj <> endobj 30176 0 obj <> endobj 30177 0 obj <> endobj 30178 0 obj <> endobj 30179 0 obj <> endobj 30180 0 obj <> endobj 30181 0 obj <> endobj 30182 0 obj <> endobj 30183 0 obj <> endobj 30184 0 obj <> endobj 30185 0 obj <> endobj 30186 0 obj <> endobj 30187 0 obj <> endobj 30188 0 obj <> endobj 30189 0 obj <> endobj 30190 0 obj <> endobj 30191 0 obj <> endobj 30192 0 obj <> endobj 30193 0 obj <> endobj 30194 0 obj <> endobj 30195 0 obj <> endobj 30196 0 obj <> endobj 30197 0 obj <> endobj 30198 0 obj <> endobj 30199 0 obj <> endobj 30200 0 obj <> endobj 30201 0 obj <> endobj 30202 0 obj <> endobj 30203 0 obj <> endobj 30204 0 obj <> endobj 30205 0 obj <> endobj 30206 0 obj <> endobj 30207 0 obj <> endobj 30208 0 obj <> endobj 30209 0 obj <> endobj 30210 0 obj <> endobj 30211 0 obj <> endobj 30212 0 obj <> endobj 30213 0 obj <> endobj 30214 0 obj <> endobj 30215 0 obj <> endobj 30216 0 obj <> endobj 30217 0 obj <> endobj 30218 0 obj <> endobj 30219 0 obj <> endobj 30220 0 obj <> endobj 30221 0 obj <> endobj 30222 0 obj <> endobj 30223 0 obj <> endobj 30224 0 obj <> endobj 30225 0 obj <> endobj 30226 0 obj <> endobj 30227 0 obj <> endobj 30228 0 obj <> endobj 30229 0 obj <> endobj 30230 0 obj <> endobj 30231 0 obj <> endobj 30232 0 obj <> endobj 30233 0 obj <> endobj 30234 0 obj <> endobj 30235 0 obj <> endobj 30236 0 obj <> endobj 30237 0 obj <> endobj 30238 0 obj <> endobj 30239 0 obj <> endobj 30240 0 obj <> endobj 30241 0 obj <> endobj 30242 0 obj <> endobj 30243 0 obj <> endobj 30244 0 obj <> endobj 30245 0 obj <> endobj 30246 0 obj <> endobj 30247 0 obj <> endobj 30248 0 obj <> endobj 30249 0 obj <> endobj 30250 0 obj <> endobj 30251 0 obj <> endobj 30252 0 obj <> endobj 30253 0 obj <> endobj 30254 0 obj <> endobj 30255 0 obj <> endobj 30256 0 obj <> endobj 30257 0 obj <> endobj 30258 0 obj <> endobj 30259 0 obj <> endobj 30260 0 obj <> endobj 30261 0 obj <> endobj 30262 0 obj <> endobj 30263 0 obj <> endobj 30264 0 obj <> endobj 30265 0 obj <> endobj 30266 0 obj <> endobj 30267 0 obj <> endobj 30268 0 obj <> endobj 30269 0 obj <> endobj 30270 0 obj <> endobj 30271 0 obj <> endobj 30272 0 obj <> endobj 30273 0 obj <> endobj 30274 0 obj <> endobj 30275 0 obj <> endobj 30276 0 obj <> endobj 30277 0 obj <> endobj 30278 0 obj <> endobj 30279 0 obj <> endobj 30280 0 obj <> endobj 30281 0 obj <> endobj 30282 0 obj <> endobj 30283 0 obj <> endobj 30284 0 obj <> endobj 30285 0 obj <> endobj 30286 0 obj <> endobj 30287 0 obj <> endobj 30288 0 obj <> endobj 30289 0 obj <> endobj 30290 0 obj <> endobj 30291 0 obj <> endobj 30292 0 obj <> endobj 30293 0 obj <> endobj 30294 0 obj <> endobj 30295 0 obj <> endobj 30296 0 obj <> endobj 30297 0 obj <> endobj 30298 0 obj <> endobj 30299 0 obj <> endobj 30300 0 obj <> endobj 30301 0 obj <> endobj 30302 0 obj <> endobj 30303 0 obj <> endobj 30304 0 obj <> endobj 30305 0 obj <> endobj 30306 0 obj <> endobj 30307 0 obj <> endobj 30308 0 obj <> endobj 30309 0 obj <> endobj 30310 0 obj <> endobj 30311 0 obj <> endobj 30312 0 obj <> endobj 30313 0 obj <> endobj 30314 0 obj <> endobj 30315 0 obj <> endobj 30316 0 obj <> endobj 30317 0 obj <> endobj 30318 0 obj <> endobj 30319 0 obj <> endobj 30320 0 obj <> endobj 30321 0 obj <> endobj 30322 0 obj <> endobj 30323 0 obj <> endobj 30324 0 obj <> endobj 30325 0 obj <> endobj 30326 0 obj <> endobj 30327 0 obj <> endobj 1 0 obj <> endobj 2 0 obj <>/Border[0 0 0]/Rect[67.26 693.92 527.94 707.6]/Subtype/Link/Type/Annot>> endobj 3 0 obj <>/Border[0 0 0]/Rect[123.96 674.78 527.94 687.02]/Subtype/Link/Type/Annot>> endobj 4 0 obj <>/Border[0 0 0]/Rect[123.96 655.76 527.94 668]/Subtype/Link/Type/Annot>> endobj 5 0 obj <>/Border[0 0 0]/Rect[123.96 636.74 527.94 648.98]/Subtype/Link/Type/Annot>> endobj 6 0 obj <>/Border[0 0 0]/Rect[123.96 617.78 527.94 630.02]/Subtype/Link/Type/Annot>> endobj 7 0 obj <>/Border[0 0 0]/Rect[67.26 585.92 527.94 599.6]/Subtype/Link/Type/Annot>> endobj 8 0 obj <>/Border[0 0 0]/Rect[123.96 566.78 527.94 579.02]/Subtype/Link/Type/Annot>> endobj 9 0 obj <>/Border[0 0 0]/Rect[123.96 547.76 527.94 560]/Subtype/Link/Type/Annot>> endobj 10 0 obj <>/Border[0 0 0]/Rect[123.96 530.6 527.94 541.76]/Subtype/Link/Type/Annot>> endobj 11 0 obj <>/Border[0 0 0]/Rect[123.96 513.62 527.94 524.78]/Subtype/Link/Type/Annot>> endobj 12 0 obj <>/Border[0 0 0]/Rect[123.96 494.78 527.94 507.02]/Subtype/Link/Type/Annot>> endobj 13 0 obj <>/Border[0 0 0]/Rect[123.96 475.76 527.94 488]/Subtype/Link/Type/Annot>> endobj 14 0 obj <>/Border[0 0 0]/Rect[123.96 456.74 527.94 468.98]/Subtype/Link/Type/Annot>> endobj 15 0 obj <>/Border[0 0 0]/Rect[67.26 424.88 527.94 438.56]/Subtype/Link/Type/Annot>> endobj 16 0 obj <>/Border[0 0 0]/Rect[123.96 405.74 527.94 417.98]/Subtype/Link/Type/Annot>> endobj 17 0 obj <>/Border[0 0 0]/Rect[123.96 386.78 527.94 399.02]/Subtype/Link/Type/Annot>> endobj 18 0 obj <>/Border[0 0 0]/Rect[123.96 367.76 527.94 380]/Subtype/Link/Type/Annot>> endobj 19 0 obj <>/Border[0 0 0]/Rect[123.96 350.6 527.94 361.76]/Subtype/Link/Type/Annot>> endobj 20 0 obj <>/Border[0 0 0]/Rect[123.96 333.62 527.94 344.78]/Subtype/Link/Type/Annot>> endobj 21 0 obj <>/Border[0 0 0]/Rect[123.96 316.58 527.94 327.74]/Subtype/Link/Type/Annot>> endobj 22 0 obj <>/Border[0 0 0]/Rect[123.96 299.6 527.94 310.76]/Subtype/Link/Type/Annot>> endobj 23 0 obj <>/Border[0 0 0]/Rect[123.96 282.62 527.94 293.78]/Subtype/Link/Type/Annot>> endobj 24 0 obj <>/Border[0 0 0]/Rect[123.96 265.58 527.94 276.74]/Subtype/Link/Type/Annot>> endobj 25 0 obj <>/Border[0 0 0]/Rect[159.42 248.6 376.32 260.06]/Subtype/Link/Type/Annot>> endobj 26 0 obj <>/Border[0 0 0]/Rect[123.96 231.62 527.94 242.78]/Subtype/Link/Type/Annot>> endobj 27 0 obj <>/Border[0 0 0]/Rect[123.96 214.58 527.94 225.74]/Subtype/Link/Type/Annot>> endobj 28 0 obj <>/Border[0 0 0]/Rect[123.96 195.74 527.94 207.98]/Subtype/Link/Type/Annot>> endobj 29 0 obj <>/Border[0 0 0]/Rect[123.96 178.58 527.94 189.74]/Subtype/Link/Type/Annot>> endobj 30 0 obj <>/Border[0 0 0]/Rect[123.96 161.6 527.94 172.76]/Subtype/Link/Type/Annot>> endobj 31 0 obj <>/Border[0 0 0]/Rect[123.96 142.76 527.94 155]/Subtype/Link/Type/Annot>> endobj 32 0 obj <>/Border[0 0 0]/Rect[159.42 125.6 527.94 136.76]/Subtype/Link/Type/Annot>> endobj 33 0 obj <>/Border[0 0 0]/Rect[74.76 87.44 89.76 98.66]/Subtype/Link/Type/Annot>> endobj 34 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 35 0 obj <>stream +h[ێܸ}s~c#Hl`G/]qOUHQ;c/IêC?~u?6^뷇߽]ol~aU#Mlkη5ޛVh~ٴBh{HyB9!? 3m&LnXsQ>;Ϩ.ua5ŸBζnHT~-pi161Ն['ڨFSg%w6EkLdnRTjX7x2zZ7j?59 +#sиĔaܱZ_ KJK`ȍ Mm0 +`FVٻ?on~l^\K ~b.'AR?5oF۪f)| O\ݻ~|oCW\QnE4lfp͇ + +^n=77zP4hqZSZSZZNon 4lF!eZ$\abCJwNQq; +biJKiics|GA.թ&hBIC Zgbo' w0{[)[Z%V: Oe0p詂~VYl7UUI(ҭSdnI I Sߠ[?%q_8ʨS bGпЪ6KЕp̈o׊CJhn FR]$#AIJy_"/Ŵ0">RR`M/I=rn|d`}A}^2,OiͧM >@C/ihLCo˰6ҁ]5r{ѰTk=?s*60B=?&1#ttp0 [d)ݴZ&J:L4t )IuS6pQNOOUTa%MUU (DNs>BiC~[m1epUwӯ_\Y#R30&_4] :yK^)6C0pC3%2CKM< XЊt[#]h=6Cջ ["j _U`45ˈ2U^haǁVWK4ovӬ^7SU,?T)`iUE Ki={k1YDN ?)J.$~ItDDdf@WEt&QCN5&W >De@@إm=kU 9>@fpޚ1b[m/эHC +[B>4}UtW,y_L N6z,@񒨸{s!C9:dW&ϱ> +" |Kdr4R"3!X/\W~4aI !qk=[[D^dOƻ$J3}p u@s8Aţ?En 'oe0ÑuR$,&1JZS +SYCR8 +' 3h6F5VÚ=Tm〉+#%{!~TєbaHf5 T6%ڌ|n!ە0ZdLۖ zìw0OEG s=B=l|dثJEJ>V:J^I<2"J.>;[*݉yQ|#nR9SX oWTVCiX3ETrYߑ @xJFKEt:B'cЩFKI/jH{>\7+ +tQn~|!a?R٢;sɱ$8+yrBXHW  +¾](hdxOK^\{&X*<;:UFPj^EHMյ釣'rf٠Wr y8JO>Zӓbs'ӹԥUDB>LL{80q]5ۋMܕE—;^N*$#S_|@5C2Qzʔ~{5(] =;jv+M\}[JRy0zөTL, +Z9jDIsÉa_i:K2Ǟgյ8]A`2+|FB2:6 ߓarXmGMٶeU ; *9BWdףAC>d tMJuvK.8pGmGޘ6cvy.{"фoX&~C3L-uN<ʳ'G>sSчRNQ"w$qFHԃQbϣ^4-O 9n:O{TXEzJi]a{<qLqJ +endstream endobj 36 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 37 0 obj <> endobj 38 0 obj <> endobj 39 0 obj <>/Border[0 0 0]/Rect[123.96 740.6 527.94 751.76]/Subtype/Link/Type/Annot>> endobj 40 0 obj <>/Border[0 0 0]/Rect[123.96 721.76 527.94 734]/Subtype/Link/Type/Annot>> endobj 41 0 obj <>/Border[0 0 0]/Rect[123.96 702.74 527.94 714.98]/Subtype/Link/Type/Annot>> endobj 42 0 obj <>/Border[0 0 0]/Rect[123.96 685.58 527.94 696.74]/Subtype/Link/Type/Annot>> endobj 43 0 obj <>/Border[0 0 0]/Rect[123.96 668.6 527.94 679.76]/Subtype/Link/Type/Annot>> endobj 44 0 obj <>/Border[0 0 0]/Rect[123.96 651.62 527.94 662.78]/Subtype/Link/Type/Annot>> endobj 45 0 obj <>/Border[0 0 0]/Rect[123.96 634.58 527.94 645.74]/Subtype/Link/Type/Annot>> endobj 46 0 obj <>/Border[0 0 0]/Rect[123.96 617.6 527.94 628.76]/Subtype/Link/Type/Annot>> endobj 47 0 obj <>/Border[0 0 0]/Rect[123.96 600.62 527.94 611.78]/Subtype/Link/Type/Annot>> endobj 48 0 obj <>/Border[0 0 0]/Rect[123.96 583.58 527.94 594.74]/Subtype/Link/Type/Annot>> endobj 49 0 obj <>/Border[0 0 0]/Rect[123.96 566.6 527.94 577.76]/Subtype/Link/Type/Annot>> endobj 50 0 obj <>/Border[0 0 0]/Rect[123.96 549.62 527.94 560.78]/Subtype/Link/Type/Annot>> endobj 51 0 obj <>/Border[0 0 0]/Rect[123.96 532.58 527.94 543.74]/Subtype/Link/Type/Annot>> endobj 52 0 obj <>/Border[0 0 0]/Rect[123.96 515.6 527.94 526.76]/Subtype/Link/Type/Annot>> endobj 53 0 obj <>/Border[0 0 0]/Rect[123.96 498.62 527.94 509.78]/Subtype/Link/Type/Annot>> endobj 54 0 obj <>/Border[0 0 0]/Rect[123.96 481.58 527.94 492.74]/Subtype/Link/Type/Annot>> endobj 55 0 obj <>/Border[0 0 0]/Rect[67.26 449.9 527.94 463.58]/Subtype/Link/Type/Annot>> endobj 56 0 obj <>/Border[0 0 0]/Rect[123.96 430.76 527.94 443]/Subtype/Link/Type/Annot>> endobj 57 0 obj <>/Border[0 0 0]/Rect[123.96 413.6 527.94 424.76]/Subtype/Link/Type/Annot>> endobj 58 0 obj <>/Border[0 0 0]/Rect[123.96 396.62 527.94 407.78]/Subtype/Link/Type/Annot>> endobj 59 0 obj <>/Border[0 0 0]/Rect[123.96 379.58 527.94 390.74]/Subtype/Link/Type/Annot>> endobj 60 0 obj <>/Border[0 0 0]/Rect[123.96 362.6 527.94 373.76]/Subtype/Link/Type/Annot>> endobj 61 0 obj <>/Border[0 0 0]/Rect[123.96 343.76 527.94 356]/Subtype/Link/Type/Annot>> endobj 62 0 obj <>/Border[0 0 0]/Rect[123.96 326.6 527.94 337.76]/Subtype/Link/Type/Annot>> endobj 63 0 obj <>/Border[0 0 0]/Rect[123.96 307.76 527.94 320]/Subtype/Link/Type/Annot>> endobj 64 0 obj <>/Border[0 0 0]/Rect[123.96 290.6 527.94 301.76]/Subtype/Link/Type/Annot>> endobj 65 0 obj <>/Border[0 0 0]/Rect[123.96 273.62 527.94 284.78]/Subtype/Link/Type/Annot>> endobj 66 0 obj <>/Border[0 0 0]/Rect[123.96 256.58 527.94 267.74]/Subtype/Link/Type/Annot>> endobj 67 0 obj <>/Border[0 0 0]/Rect[123.96 239.6 527.94 250.76]/Subtype/Link/Type/Annot>> endobj 68 0 obj <>/Border[0 0 0]/Rect[123.96 222.62 527.94 233.78]/Subtype/Link/Type/Annot>> endobj 69 0 obj <>/Border[0 0 0]/Rect[123.96 205.58 527.94 216.74]/Subtype/Link/Type/Annot>> endobj 70 0 obj <>/Border[0 0 0]/Rect[123.96 188.6 527.94 199.76]/Subtype/Link/Type/Annot>> endobj 71 0 obj <>/Border[0 0 0]/Rect[123.96 171.56 527.94 182.72]/Subtype/Link/Type/Annot>> endobj 72 0 obj <>/Border[0 0 0]/Rect[123.96 154.58 527.94 165.74]/Subtype/Link/Type/Annot>> endobj 73 0 obj <>/Border[0 0 0]/Rect[123.96 135.74 527.94 147.98]/Subtype/Link/Type/Annot>> endobj 74 0 obj <>/Border[0 0 0]/Rect[512.94 87.44 527.94 98.66]/Subtype/Link/Type/Annot>> endobj 75 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 76 0 obj <>stream +h[[~_Qρ֔4Y ICy/WmWwۭld}XŦQ +cZl߮Z46m-P I߭PP*R-h-C;:) >(;`=Qxp"4>|*xoi?>5RVcﱥ)cX u_V+x?24Bc#14W+\zo\+ _5Һ=2WmН©.8CxFx&^ + #"FXFZ!Uy{Ss+6_7 jF.rhlnLkx_|Oݫ9|96IKl|뚏h&F"7TvV4iM&Z i-kaE(# 6 64D5SIH;M1}p>n]ScOʋhB ™XJꄾi[K) tD+R8 oc8py;@[ :*dC&KeaM"$8' +%>:G#>E rZwXo3"@v f7Gk$Qgh`K%VhC; + ~ h#$0i:8Kĵ-1PTqX@`2"X_ +hN9F[(Sq]#򭣥7 4x0n_-55HYUڞ?D)0A*6t֪,%H7)Y?j*v?|z?ᢢ$&juPjQzIou*'$Go,oAA0LVd*\XR)$)>h3-P; oL#=I0CB!@sH$j1WkP +E܌2Kz$A44!}0;lrcؚuFIJf&-2~ 0R}G2RJy8Ŕ+] dpC Rd%"H)Y~ée'a?cjOR\}e(^Qbg2?6Zgێ}vTAQd_)A52f|jSKg8ZxD#4vOwcmw:.Yu4X؟H%1# 4|#4S#alD|v}{/Ծ[˃j@|YN +P|HE] h`KP_{9YŞ君)gX%>VeB]mƹ0PO)Թս ]vFgkg$!cX m:clUʥ>smib;JjG;Ye$2POg/^ҭ v[Әpu0Amʜ&beƢ:gt9r)5s}s Wν2s"_q( h#Q3\d6q>DKeʜ;O&WWIF@ BRK2=$$`pf9Ӄ/gO) zYJ^LߗEt9hD nqDd5Q=XF"[_̈́6Goax2hwڛA{#5 j,}w"d+) m'8PEu߰iŎg_^ +|K~>,ݤgIq@5HH&򕨜A+\:[$g܁Zuzﯫٛ_Q:{Ǝ;:Ֆhk=S8 t9aYs5kribq 8=c)2ͳTfzCiB%fVVV`qO +endstream endobj 77 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 78 0 obj <> endobj 79 0 obj <> endobj 80 0 obj <>/Border[0 0 0]/Rect[123.96 740.6 527.94 751.76]/Subtype/Link/Type/Annot>> endobj 81 0 obj <>/Border[0 0 0]/Rect[123.96 723.62 527.94 734.78]/Subtype/Link/Type/Annot>> endobj 82 0 obj <>/Border[0 0 0]/Rect[123.96 706.64 527.94 717.8]/Subtype/Link/Type/Annot>> endobj 83 0 obj <>/Border[0 0 0]/Rect[123.96 689.6 527.94 700.76]/Subtype/Link/Type/Annot>> endobj 84 0 obj <>/Border[0 0 0]/Rect[123.96 672.62 527.94 683.78]/Subtype/Link/Type/Annot>> endobj 85 0 obj <>/Border[0 0 0]/Rect[123.96 655.58 527.94 666.74]/Subtype/Link/Type/Annot>> endobj 86 0 obj <>/Border[0 0 0]/Rect[123.96 638.6 527.94 649.76]/Subtype/Link/Type/Annot>> endobj 87 0 obj <>/Border[0 0 0]/Rect[123.96 621.62 527.94 632.78]/Subtype/Link/Type/Annot>> endobj 88 0 obj <>/Border[0 0 0]/Rect[123.96 604.58 527.94 615.74]/Subtype/Link/Type/Annot>> endobj 89 0 obj <>/Border[0 0 0]/Rect[123.96 587.6 527.94 598.76]/Subtype/Link/Type/Annot>> endobj 90 0 obj <>/Border[0 0 0]/Rect[123.96 570.62 527.94 581.78]/Subtype/Link/Type/Annot>> endobj 91 0 obj <>/Border[0 0 0]/Rect[123.96 553.58 527.94 564.74]/Subtype/Link/Type/Annot>> endobj 92 0 obj <>/Border[0 0 0]/Rect[123.96 536.6 527.94 547.76]/Subtype/Link/Type/Annot>> endobj 93 0 obj <>/Border[0 0 0]/Rect[123.96 519.62 527.94 530.78]/Subtype/Link/Type/Annot>> endobj 94 0 obj <>/Border[0 0 0]/Rect[123.96 502.58 527.94 513.74]/Subtype/Link/Type/Annot>> endobj 95 0 obj <>/Border[0 0 0]/Rect[123.96 485.6 527.94 496.76]/Subtype/Link/Type/Annot>> endobj 96 0 obj <>/Border[0 0 0]/Rect[123.96 468.62 527.94 479.78]/Subtype/Link/Type/Annot>> endobj 97 0 obj <>/Border[0 0 0]/Rect[123.96 451.58 527.94 462.74]/Subtype/Link/Type/Annot>> endobj 98 0 obj <>/Border[0 0 0]/Rect[123.96 434.6 527.94 445.76]/Subtype/Link/Type/Annot>> endobj 99 0 obj <>/Border[0 0 0]/Rect[123.96 417.62 527.94 428.78]/Subtype/Link/Type/Annot>> endobj 100 0 obj <>/Border[0 0 0]/Rect[67.26 385.88 527.94 399.56]/Subtype/Link/Type/Annot>> endobj 101 0 obj <>/Border[0 0 0]/Rect[123.96 366.74 527.94 378.98]/Subtype/Link/Type/Annot>> endobj 102 0 obj <>/Border[0 0 0]/Rect[123.96 349.58 527.94 360.74]/Subtype/Link/Type/Annot>> endobj 103 0 obj <>/Border[0 0 0]/Rect[123.96 332.6 527.94 343.76]/Subtype/Link/Type/Annot>> endobj 104 0 obj <>/Border[0 0 0]/Rect[123.96 315.62 527.94 326.78]/Subtype/Link/Type/Annot>> endobj 105 0 obj <>/Border[0 0 0]/Rect[123.96 296.72 527.94 308.96]/Subtype/Link/Type/Annot>> endobj 106 0 obj <>/Border[0 0 0]/Rect[123.96 279.62 527.94 290.78]/Subtype/Link/Type/Annot>> endobj 107 0 obj <>/Border[0 0 0]/Rect[123.96 262.58 527.94 273.74]/Subtype/Link/Type/Annot>> endobj 108 0 obj <>/Border[0 0 0]/Rect[123.96 245.6 527.94 256.76]/Subtype/Link/Type/Annot>> endobj 109 0 obj <>/Border[0 0 0]/Rect[123.96 228.62 527.94 239.78]/Subtype/Link/Type/Annot>> endobj 110 0 obj <>/Border[0 0 0]/Rect[123.96 211.58 527.94 222.74]/Subtype/Link/Type/Annot>> endobj 111 0 obj <>/Border[0 0 0]/Rect[123.96 194.6 527.94 205.76]/Subtype/Link/Type/Annot>> endobj 112 0 obj <>/Border[0 0 0]/Rect[123.96 177.56 527.94 188.72]/Subtype/Link/Type/Annot>> endobj 113 0 obj <>/Border[0 0 0]/Rect[123.96 160.58 527.94 171.74]/Subtype/Link/Type/Annot>> endobj 114 0 obj <>/Border[0 0 0]/Rect[123.96 143.6 527.94 154.76]/Subtype/Link/Type/Annot>> endobj 115 0 obj <>/Border[0 0 0]/Rect[159.42 126.56 527.94 137.72]/Subtype/Link/Type/Annot>> endobj 116 0 obj <>/Border[0 0 0]/Rect[74.76 88.4 89.76 98.48]/Subtype/Link/Type/Annot>> endobj 117 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 118 0 obj <>stream +hYoWsQ`0@6X #@2vv6ȿOUf3ֵ"luU,v{○r|~zfs÷O~;7I$I>0Qni#!6Rj/Q ;+d8p~7V BgR]jR2TOo*nIRڤ:aCJzpuHzp=wVqgsOI +ks/ϠYZf@ ;wg*P(%%崊ÎE/B/,+_/ 76yD N9tÿ?]}ޝF}츜% ՒC0.93NeW7oWo|W7( " }A +(9 w'Rd;n8m(m(rg ;HY!o(;-Tr๔ Rv9N5 5 %TަOUpOs0{gJ; +<2T%+0Cl8TC 0@3C +% ^[PZxٜP> |)07SoG㭭?ErJCv$_"I%P/4rFy#> hNB"|dX)\^QAHc%!A+JФ/Ŵ%Ppk0h"P3O8C@(QH)Sp`zimGC ?M?UzW^ťWjpCPˎE/ᡵZ;|冒U$Tl,1/' "` zEEAe!Vet?hp0$9 nQYӶo( t&)(c)Z<,z|K^;m;9d +PINʽH@Pd+PT @'T8 +#u"P(T,wqnLВRyCwr[8ځ3\&o*if$f%&0.[(1GrW9rwȋ9#?tt wg0:a8پ Fg;G(٦,^0&˭M~<;VK@4!A=HP ̄a^b%! +2y}SiI!#K e?egA4- >Jr + u>څjRjz$P5ɏXĎ4`ܓH&"B)4.,.B0p(7tP~iC8>ѬOg ^U35 B14&;Q;&KnK\|VEAZddLgбDJnW?^)p8ܔP Y%]_e +oݶ( 2#ZP7 +\gk}Tv( +EX `ܲN Dl!\0oQc髕uJSU\f3`+6`^ dlh &f~(oG)IN8fK'+Lc0|S=:h?PƁQ&/ +\0='5Fa3YQԥb,T}q=(_G:XóGU)fch݆1W`p{Tnu-NѠd.k+Q#:\~lVvAU8q+wV~*i: TExy"UVx{PE,UEXSGff6⋚mƺ&Ms Q'5r'?׈sWZ@@ցh*iǫJ*YTF*xS5_.O{Rr*iH;yϮp"KUnOQ}>Q'33^kSwq2w"Yg)pcg1X,;-/:I$iͿDi*xpu2x0.fV{p{PlMsO)9%o׮3* EG?[Yh ǸW>ab~Sά 0˻zRY紻s4z("\6͂И^;cnZvV\}$|3֡VSxrQP\d;"% QB6m +-3)9)R;WSt&sff<'\tTpTcVGGnG4dESLx ۢ9Fdfg[cWca ,c|ʭ:g}L`{lEN=C|mm Qjjfyu+&1ie=jYsrp߶ڕ5`6kS,ИYȬgf !tZlR24Qc\BY"B;K{n_vZv&anvfoSrzK^R%9-:%#nkT\`7g%3ͫ9o9b|4]P 9e5ܙ/Z|K6ZJ߄nrdf]V'ۘŤ5ófLzcؼHNq2l6neǝ,oYwGy?gzR0qۃcHzǼE ™`/+./Lt +3+#//FAridVaiFgtq(*2s@e)T4V N#8V'uN%A[Sdmq~6e*ЎLLm\;Ai, +h HAUMZ>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 120 0 obj <> endobj 121 0 obj <> endobj 122 0 obj <>/Border[0 0 0]/Rect[123.96 740.6 527.94 751.76]/Subtype/Link/Type/Annot>> endobj 123 0 obj <>/Border[0 0 0]/Rect[123.96 723.62 527.94 734.78]/Subtype/Link/Type/Annot>> endobj 124 0 obj <>/Border[0 0 0]/Rect[123.96 706.64 527.94 717.8]/Subtype/Link/Type/Annot>> endobj 125 0 obj <>/Border[0 0 0]/Rect[123.96 689.6 527.94 700.76]/Subtype/Link/Type/Annot>> endobj 126 0 obj <>/Border[0 0 0]/Rect[123.96 672.62 527.94 683.78]/Subtype/Link/Type/Annot>> endobj 127 0 obj <>/Border[0 0 0]/Rect[123.96 655.58 527.94 666.74]/Subtype/Link/Type/Annot>> endobj 128 0 obj <>/Border[0 0 0]/Rect[123.96 636.74 527.94 648.98]/Subtype/Link/Type/Annot>> endobj 129 0 obj <>/Border[0 0 0]/Rect[123.96 617.78 527.94 630.02]/Subtype/Link/Type/Annot>> endobj 130 0 obj <>/Border[0 0 0]/Rect[123.96 600.62 527.94 611.78]/Subtype/Link/Type/Annot>> endobj 131 0 obj <>/Border[0 0 0]/Rect[123.96 583.58 527.94 594.74]/Subtype/Link/Type/Annot>> endobj 132 0 obj <>/Border[0 0 0]/Rect[123.96 566.6 527.94 577.76]/Subtype/Link/Type/Annot>> endobj 133 0 obj <>/Border[0 0 0]/Rect[123.96 549.62 527.94 560.78]/Subtype/Link/Type/Annot>> endobj 134 0 obj <>/Border[0 0 0]/Rect[123.96 532.58 527.94 543.74]/Subtype/Link/Type/Annot>> endobj 135 0 obj <>/Border[0 0 0]/Rect[123.96 515.6 527.94 526.76]/Subtype/Link/Type/Annot>> endobj 136 0 obj <>/Border[0 0 0]/Rect[123.96 498.62 527.94 509.78]/Subtype/Link/Type/Annot>> endobj 137 0 obj <>/Border[0 0 0]/Rect[123.96 481.58 527.94 492.74]/Subtype/Link/Type/Annot>> endobj 138 0 obj <>/Border[0 0 0]/Rect[123.96 464.6 527.94 475.76]/Subtype/Link/Type/Annot>> endobj 139 0 obj <>/Border[0 0 0]/Rect[123.96 447.62 527.94 458.78]/Subtype/Link/Type/Annot>> endobj 140 0 obj <>/Border[0 0 0]/Rect[123.96 430.58 527.94 441.74]/Subtype/Link/Type/Annot>> endobj 141 0 obj <>/Border[0 0 0]/Rect[123.96 413.6 527.94 424.76]/Subtype/Link/Type/Annot>> endobj 142 0 obj <>/Border[0 0 0]/Rect[123.96 396.62 527.94 407.78]/Subtype/Link/Type/Annot>> endobj 143 0 obj <>/Border[0 0 0]/Rect[123.96 379.58 527.94 390.74]/Subtype/Link/Type/Annot>> endobj 144 0 obj <>/Border[0 0 0]/Rect[123.96 362.6 527.94 373.76]/Subtype/Link/Type/Annot>> endobj 145 0 obj <>/Border[0 0 0]/Rect[123.96 345.62 527.94 356.78]/Subtype/Link/Type/Annot>> endobj 146 0 obj <>/Border[0 0 0]/Rect[123.96 316.58 527.94 339.74]/Subtype/Link/Type/Annot>> endobj 147 0 obj <>/Border[0 0 0]/Rect[123.96 287.6 527.94 310.76]/Subtype/Link/Type/Annot>> endobj 148 0 obj <>/Border[0 0 0]/Rect[123.96 258.62 527.94 281.78]/Subtype/Link/Type/Annot>> endobj 149 0 obj <>/Border[0 0 0]/Rect[123.96 241.58 527.94 252.74]/Subtype/Link/Type/Annot>> endobj 150 0 obj <>/Border[0 0 0]/Rect[123.96 212.6 527.94 235.76]/Subtype/Link/Type/Annot>> endobj 151 0 obj <>/Border[0 0 0]/Rect[123.96 195.62 527.94 206.78]/Subtype/Link/Type/Annot>> endobj 152 0 obj <>/Border[0 0 0]/Rect[123.96 178.58 527.94 189.74]/Subtype/Link/Type/Annot>> endobj 153 0 obj <>/Border[0 0 0]/Rect[123.96 161.6 527.94 172.76]/Subtype/Link/Type/Annot>> endobj 154 0 obj <>/Border[0 0 0]/Rect[67.26 129.92 527.94 143.6]/Subtype/Link/Type/Annot>> endobj 155 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 156 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 157 0 obj <>stream +h[Y\~_q@/Pdu7/>$d'.%SBNofpvu.**k6´"%+dT H Gi!PDeot ֕1r1,=ip$DTk +ľUJQh婬* a!8o-E|*"%ē ReAW X{$ٜ#BـF$UsXP[~iR[r1w譮xN-:,|[â M +e'X>xX0OGg D ~o(Q9X>H%aC%$Uk&'Ͻ + 2_\4$=KJzeIJk.-זלi36Zha2m954:1 yp˶e϶419^3>xC6tJ %!VʌM&oi8d7Y=5Gּ +L䰅ׅƗkjrОp> BɆ#OdyUH+4 +j6v^cYCy\`ÁPkDØF^L[O\Z0E?‰G_On3; ~ȭ*RViMζ6Q%sׅU^vu Kq;*"XM6.M6.==6̪^UbXl +>}qLV=3']& -s8QKba VPiFwn,^ԸY3eg`ҹ'i8`V9U+9zbqңy~tf}2-Ȍm]2 |R(ścu{^өTT8<)^ H:R԰pAU?ߜHב8ҽ$<#<r51WaejŘ1 ަ3!Da3 2,ffSԚT2fLeYmOu2U )gOcRqbYRq~>[H.٤ & +&7+` +k`J@ޜJLWAĚGڍL ʀC kYcb-!6:pYF-5㰂51{\{DBM\'^Y;u^*Ou独gX!zYӾm5>ﺨF[222O8A%{.oXַ[*j᪕:ќn`r0֗g!.mcq dfZ[DpLS86N-H!& j:^Ύ ""g#'9 +oՌY{]" m\16`x^"1JTJ1g 7PaH<M.(&oɭ̓QO~W*/gvaTqU˩Z9z[:C]n>< G7&Gr._a834?oMͳF~)O7'-gG}ޥawh dpaMךH.ވZ2zVS=wJn6$,Κ Yj];2zVz=:y_Oq&69QxMW%Y^pEMMKՈgpjjbmR<j7:GJ +4[YjtawmSYn1*#K}N!L80)#)0r4uY<MQoMnTV~.ߕQ*=CAf_ѓW3Uܧee"AAIsbjO ֪"ĄZ5%l;V7:֛ @2cU%Aј ɩs{^`YIe?Zn5 +e0Vʒ`5f@6m3`$r∫ +Fp8#Tp#GfTďRm^M3 NJVnJ +-6W4 +bUUST +d)/k䴖8h l#`= ;o-W|)Ȓbԙr +V[Ȳ)_,GuӺ6 w0v5Z׳XR$BͺT<4x4rv#'8O ӊK<秝9-U?! xyE+XYPG\>t3?jkXVM9ↂ\* &mY@铤šCe(Z]gY3ssq0.Jա`ɫXPң+~v/>p<5>p5NjܶcCz[I74#5*2yT-&f0kIg- 2IB޹WRs[te~ڼnQB+ȑ7Gy5TXk]܎}*}F>uoĿȮQ:10Ԯ>'EB2zU[ּآWQG{vQ:W%Wd QrMKf-چT#ZQdC|na9ۃqi>g 6ilsSߥ|Lᒫ_:֫qQ^EZHw %v"fd ՞s=/# 0G)¾bitrU& %tk ?5)r`)^S><欂kՙ ʜÓk>Os Eq2}PjMb)d#^^RSܦЇ,{yؼ A +endstream endobj 158 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 159 0 obj <> endobj 160 0 obj <> endobj 161 0 obj <>/Border[0 0 0]/Rect[123.96 739.76 527.94 752]/Subtype/Link/Type/Annot>> endobj 162 0 obj <>/Border[0 0 0]/Rect[123.96 720.74 527.94 732.98]/Subtype/Link/Type/Annot>> endobj 163 0 obj <>/Border[0 0 0]/Rect[123.96 701.78 527.94 714.02]/Subtype/Link/Type/Annot>> endobj 164 0 obj <>/Border[0 0 0]/Rect[123.96 684.62 527.94 695.78]/Subtype/Link/Type/Annot>> endobj 165 0 obj <>/Border[0 0 0]/Rect[123.96 667.58 527.94 678.74]/Subtype/Link/Type/Annot>> endobj 166 0 obj <>/Border[0 0 0]/Rect[123.96 650.6 527.94 661.76]/Subtype/Link/Type/Annot>> endobj 167 0 obj <>/Border[0 0 0]/Rect[123.96 633.62 527.94 644.78]/Subtype/Link/Type/Annot>> endobj 168 0 obj <>/Border[0 0 0]/Rect[123.96 616.58 527.94 627.74]/Subtype/Link/Type/Annot>> endobj 169 0 obj <>/Border[0 0 0]/Rect[123.96 599.6 527.94 610.76]/Subtype/Link/Type/Annot>> endobj 170 0 obj <>/Border[0 0 0]/Rect[123.96 582.62 527.94 593.78]/Subtype/Link/Type/Annot>> endobj 171 0 obj <>/Border[0 0 0]/Rect[123.96 565.58 527.94 576.74]/Subtype/Link/Type/Annot>> endobj 172 0 obj <>/Border[0 0 0]/Rect[123.96 548.6 527.94 559.76]/Subtype/Link/Type/Annot>> endobj 173 0 obj <>/Border[0 0 0]/Rect[123.96 531.62 527.94 542.78]/Subtype/Link/Type/Annot>> endobj 174 0 obj <>/Border[0 0 0]/Rect[123.96 514.58 527.94 525.74]/Subtype/Link/Type/Annot>> endobj 175 0 obj <>/Border[0 0 0]/Rect[123.96 497.6 527.94 508.76]/Subtype/Link/Type/Annot>> endobj 176 0 obj <>/Border[0 0 0]/Rect[123.96 480.62 527.94 491.78]/Subtype/Link/Type/Annot>> endobj 177 0 obj <>/Border[0 0 0]/Rect[123.96 463.58 527.94 474.74]/Subtype/Link/Type/Annot>> endobj 178 0 obj <>/Border[0 0 0]/Rect[123.96 444.74 527.94 456.98]/Subtype/Link/Type/Annot>> endobj 179 0 obj <>/Border[0 0 0]/Rect[123.96 415.58 527.94 438.74]/Subtype/Link/Type/Annot>> endobj 180 0 obj <>/Border[0 0 0]/Rect[123.96 386.6 527.94 409.76]/Subtype/Link/Type/Annot>> endobj 181 0 obj <>/Border[0 0 0]/Rect[123.96 357.62 527.94 380.78]/Subtype/Link/Type/Annot>> endobj 182 0 obj <>/Border[0 0 0]/Rect[123.96 328.58 527.94 351.74]/Subtype/Link/Type/Annot>> endobj 183 0 obj <>/Border[0 0 0]/Rect[123.96 299.6 527.94 322.76]/Subtype/Link/Type/Annot>> endobj 184 0 obj <>/Border[0 0 0]/Rect[123.96 270.62 527.94 293.78]/Subtype/Link/Type/Annot>> endobj 185 0 obj <>/Border[0 0 0]/Rect[123.96 241.58 527.94 264.74]/Subtype/Link/Type/Annot>> endobj 186 0 obj <>/Border[0 0 0]/Rect[123.96 212.6 527.94 235.76]/Subtype/Link/Type/Annot>> endobj 187 0 obj <>/Border[0 0 0]/Rect[123.96 183.56 527.94 206.78]/Subtype/Link/Type/Annot>> endobj 188 0 obj <>/Border[0 0 0]/Rect[123.96 154.58 527.94 177.74]/Subtype/Link/Type/Annot>> endobj 189 0 obj <>/Border[0 0 0]/Rect[123.96 137.6 527.94 148.76]/Subtype/Link/Type/Annot>> endobj 190 0 obj <>/Border[0 0 0]/Rect[159.42 120.56 527.94 131.72]/Subtype/Link/Type/Annot>> endobj 191 0 obj <>/Border[0 0 0]/Rect[74.76 88.4 89.76 98.48]/Subtype/Link/Type/Annot>> endobj 192 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 193 0 obj <>stream +h[Y[~ׯmq/ q4} 3 /+j8@#r\>~g|u}V毛_||zͷ/7~vqs{k3/*qG?bR6)yv훅~\(nw⇕6j,| |ګ}{Yx|Hq--lh[IM5_.G LuATJ-cQb'C7/>afY O:vPV CNa2`!V %((m AK딇-Uq R^l ;(Fgx/=PQ?MPې'ܦÖlR疆&K{o5P&O0`xKcT58zQA ;#0l~q)S暄ЮI- +8&rV54~|[oO#|:0 v4zOڪP^.2 $$rfS&ET4JKŴѰ +f(ip`M|jI(l{zU=1/0n/t)7P)8zi@S ?]n? O}hSoܛpS2A^K[aأHkJ(PCk 9q/d-,T>log̠ -Z)n3Ӿ_Si.9ӕ>TtNk eKooiZ]C0(GBd9O[S|+6v{L0})Lk'WQ6ǀ Q&zU%0|h3T0(#g([9eW"LL/N+L"[@~I݁U |XZʘՊn !TBݏ_Ҡ01x~ߒ2#t(K_~ +3@Homʯ 62Jč3p b`u/1;3Rq2)Lj{3'Sv`͒ x3 Vo\ q"Ǔ!sm 94(yAwz2c3*2>pjDo߭ ulO[[y|i +L|F#7(%H)@!JsɃ: +eZTr_9Tڝ!CF1Q*dͦhaHbQsIi7F. +!:S)cE65k^FM49J/̕VlNȜL֛]:)Ld꩜ +:P_}wrŚj S#xUxU,GWdlw2ά"{Z`?*X]aˊBsR2ջZU ySy-r邤k,أC5<x/o/{( +endstream endobj 194 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 195 0 obj <> endobj 196 0 obj <> endobj 197 0 obj <>/Border[0 0 0]/Rect[67.26 738.92 527.94 752.6]/Subtype/Link/Type/Annot>> endobj 198 0 obj <>/Border[0 0 0]/Rect[123.96 719.78 527.94 732.02]/Subtype/Link/Type/Annot>> endobj 199 0 obj <>/Border[0 0 0]/Rect[123.96 702.62 527.94 713.78]/Subtype/Link/Type/Annot>> endobj 200 0 obj <>/Border[0 0 0]/Rect[123.96 685.58 527.94 696.74]/Subtype/Link/Type/Annot>> endobj 201 0 obj <>/Border[0 0 0]/Rect[123.96 668.6 527.94 679.76]/Subtype/Link/Type/Annot>> endobj 202 0 obj <>/Border[0 0 0]/Rect[123.96 651.62 527.94 662.78]/Subtype/Link/Type/Annot>> endobj 203 0 obj <>/Border[0 0 0]/Rect[123.96 634.58 527.94 645.74]/Subtype/Link/Type/Annot>> endobj 204 0 obj <>/Border[0 0 0]/Rect[123.96 617.6 527.94 628.76]/Subtype/Link/Type/Annot>> endobj 205 0 obj <>/Border[0 0 0]/Rect[123.96 600.62 527.94 611.78]/Subtype/Link/Type/Annot>> endobj 206 0 obj <>/Border[0 0 0]/Rect[123.96 583.58 527.94 594.74]/Subtype/Link/Type/Annot>> endobj 207 0 obj <>/Border[0 0 0]/Rect[123.96 566.6 527.94 577.76]/Subtype/Link/Type/Annot>> endobj 208 0 obj <>/Border[0 0 0]/Rect[123.96 549.62 527.94 560.78]/Subtype/Link/Type/Annot>> endobj 209 0 obj <>/Border[0 0 0]/Rect[123.96 532.58 527.94 543.74]/Subtype/Link/Type/Annot>> endobj 210 0 obj <>/Border[0 0 0]/Rect[123.96 515.6 527.94 526.76]/Subtype/Link/Type/Annot>> endobj 211 0 obj <>/Border[0 0 0]/Rect[123.96 498.62 527.94 509.78]/Subtype/Link/Type/Annot>> endobj 212 0 obj <>/Border[0 0 0]/Rect[123.96 481.58 527.94 492.74]/Subtype/Link/Type/Annot>> endobj 213 0 obj <>/Border[0 0 0]/Rect[123.96 464.6 527.94 475.76]/Subtype/Link/Type/Annot>> endobj 214 0 obj <>/Border[0 0 0]/Rect[123.96 447.62 527.94 458.78]/Subtype/Link/Type/Annot>> endobj 215 0 obj <>/Border[0 0 0]/Rect[123.96 430.58 527.94 441.74]/Subtype/Link/Type/Annot>> endobj 216 0 obj <>/Border[0 0 0]/Rect[123.96 413.6 527.94 424.76]/Subtype/Link/Type/Annot>> endobj 217 0 obj <>/Border[0 0 0]/Rect[123.96 396.62 527.94 407.78]/Subtype/Link/Type/Annot>> endobj 218 0 obj <>/Border[0 0 0]/Rect[123.96 379.58 527.94 390.74]/Subtype/Link/Type/Annot>> endobj 219 0 obj <>/Border[0 0 0]/Rect[123.96 362.6 527.94 373.76]/Subtype/Link/Type/Annot>> endobj 220 0 obj <>/Border[0 0 0]/Rect[123.96 345.62 527.94 356.78]/Subtype/Link/Type/Annot>> endobj 221 0 obj <>/Border[0 0 0]/Rect[123.96 328.58 527.94 339.74]/Subtype/Link/Type/Annot>> endobj 222 0 obj <>/Border[0 0 0]/Rect[123.96 311.6 527.94 322.76]/Subtype/Link/Type/Annot>> endobj 223 0 obj <>/Border[0 0 0]/Rect[123.96 294.62 527.94 305.78]/Subtype/Link/Type/Annot>> endobj 224 0 obj <>/Border[0 0 0]/Rect[123.96 277.58 527.94 288.74]/Subtype/Link/Type/Annot>> endobj 225 0 obj <>/Border[0 0 0]/Rect[123.96 260.6 527.94 271.76]/Subtype/Link/Type/Annot>> endobj 226 0 obj <>/Border[0 0 0]/Rect[123.96 243.62 527.94 254.78]/Subtype/Link/Type/Annot>> endobj 227 0 obj <>/Border[0 0 0]/Rect[123.96 226.58 527.94 237.74]/Subtype/Link/Type/Annot>> endobj 228 0 obj <>/Border[0 0 0]/Rect[123.96 209.6 527.94 220.76]/Subtype/Link/Type/Annot>> endobj 229 0 obj <>/Border[0 0 0]/Rect[123.96 192.62 527.94 203.78]/Subtype/Link/Type/Annot>> endobj 230 0 obj <>/Border[0 0 0]/Rect[67.26 160.88 527.94 174.56]/Subtype/Link/Type/Annot>> endobj 231 0 obj <>/Border[0 0 0]/Rect[123.96 141.74 527.94 153.98]/Subtype/Link/Type/Annot>> endobj 232 0 obj <>/Border[0 0 0]/Rect[123.96 122.72 527.94 134.96]/Subtype/Link/Type/Annot>> endobj 233 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 234 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 235 0 obj <>stream +h[[o ~sOB0 d +,8}d"ɦ[ߗnul$!p$JsQ??>nj7W~}e/0o_6T.R/U}Ю<,tyTZ65I.~_i~.?KTȒ[\HƔeK/%kO,jn韛r( ih}(;c톊1wY0*im>pMk&t%e/9_um`bK)U +BJzY.r>xݿOWWWϷd je v!y` HQH$lYT掮>|p婺tmcżڻJ={mT}!D6r0ղH|=w7OwuHm_]UƤt#&}4lRR>BU?j *aku_d'*Xu +HJ.JGCG U5ʀYtC"މlhv drR,ktܒ *Alea+ԫ2r-Q1*k8(uFdi!U@j( $SЈT +! FW/ietjHgloKlNEG:N +fkfrE.B;E׃q"wFbp$$t!mA I~I7Rdˆ$oD +'%R/ehoG"A'i B&PC{A ],;!PCm E>Jak/J,M.&[[Ϙ^a Lgz]5ٶU<Ms/.4 3APkĨ*60w%j7 +lv5ʙ ˱ |/s"oԗ0EAږ$gP,Zj)Mrh2i (sB K@<?]_K(:C0tkh#y%$;O! zQO Łd.J)GKڭ߮%'omI cFh%4E}ȱےӵ@Uy"mJxȡ}&!G\- te2p˩pg9@qBnb@ZEPzW83g`ceVy6{Iވި,L:/W?iM +zȤr ^ZjL1vȞ҈;Ze~9e)z2~_ 9)9vA^hβQgMf2!PJg) +|yѳE-2EAW3p@%4gAUTu۱@$,ġ5^@iېy7 +%]*p%[Kg}Vd6_.m9'l,>гLvyu!Aդ#8 87O .Nܞ;~86~/ilpt sw;6qƩ.t˻M7Mܳfn=6邻U񤅼P\F޽9oŗz??s32/-=(ד*g_\$5OJGrC>Uyq ~cڂޚf{=}w-΂'a}5]*ztL;(Cygp#%ބ:*sVӬ^8adcDdGa40G[Dž=>eWS8ω<4q +8ygsa8q>oos'p{|Mt%C.iɁc3X]WϩyXN}fw-mޚm+~Zޤ-#i̳zmv=w:ٸͷM=…Rk GI0AA"Z (7l^pnԄCe/e5t*d0_Cp`g v LsY&g:I/(m]v㋐QO'5føF^rۻ&_N[Xmv'! #Ge3Rg 8 +3]qǟ܈ј]YΘZ‘ϊO^j|XB!Ps.Dq b(7`+ +endstream endobj 236 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 237 0 obj <> endobj 238 0 obj <> endobj 239 0 obj <>/Border[0 0 0]/Rect[123.96 739.76 527.94 752]/Subtype/Link/Type/Annot>> endobj 240 0 obj <>/Border[0 0 0]/Rect[123.96 710.6 527.94 733.76]/Subtype/Link/Type/Annot>> endobj 241 0 obj <>/Border[0 0 0]/Rect[123.96 693.62 527.94 704.78]/Subtype/Link/Type/Annot>> endobj 242 0 obj <>/Border[0 0 0]/Rect[123.96 676.58 527.94 687.74]/Subtype/Link/Type/Annot>> endobj 243 0 obj <>/Border[0 0 0]/Rect[123.96 635.6 527.94 670.76]/Subtype/Link/Type/Annot>> endobj 244 0 obj <>/Border[0 0 0]/Rect[123.96 594.62 527.94 629.78]/Subtype/Link/Type/Annot>> endobj 245 0 obj <>/Border[0 0 0]/Rect[123.96 565.58 527.94 588.74]/Subtype/Link/Type/Annot>> endobj 246 0 obj <>/Border[0 0 0]/Rect[123.96 548.6 527.94 559.76]/Subtype/Link/Type/Annot>> endobj 247 0 obj <>/Border[0 0 0]/Rect[123.96 531.62 527.94 542.78]/Subtype/Link/Type/Annot>> endobj 248 0 obj <>/Border[0 0 0]/Rect[67.26 499.88 527.94 513.56]/Subtype/Link/Type/Annot>> endobj 249 0 obj <>/Border[0 0 0]/Rect[123.96 480.74 527.94 492.98]/Subtype/Link/Type/Annot>> endobj 250 0 obj <>/Border[0 0 0]/Rect[123.96 461.78 527.94 474.02]/Subtype/Link/Type/Annot>> endobj 251 0 obj <>/Border[0 0 0]/Rect[123.96 442.76 527.94 455]/Subtype/Link/Type/Annot>> endobj 252 0 obj <>/Border[0 0 0]/Rect[123.96 425.6 527.94 436.76]/Subtype/Link/Type/Annot>> endobj 253 0 obj <>/Border[0 0 0]/Rect[123.96 408.62 527.94 419.78]/Subtype/Link/Type/Annot>> endobj 254 0 obj <>/Border[0 0 0]/Rect[123.96 389.78 527.94 402.02]/Subtype/Link/Type/Annot>> endobj 255 0 obj <>/Border[0 0 0]/Rect[123.96 372.62 527.94 383.78]/Subtype/Link/Type/Annot>> endobj 256 0 obj <>/Border[0 0 0]/Rect[123.96 355.58 527.94 366.74]/Subtype/Link/Type/Annot>> endobj 257 0 obj <>/Border[0 0 0]/Rect[123.96 338.6 527.94 349.76]/Subtype/Link/Type/Annot>> endobj 258 0 obj <>/Border[0 0 0]/Rect[123.96 321.62 527.94 332.78]/Subtype/Link/Type/Annot>> endobj 259 0 obj <>/Border[0 0 0]/Rect[123.96 304.58 527.94 315.74]/Subtype/Link/Type/Annot>> endobj 260 0 obj <>/Border[0 0 0]/Rect[123.96 287.6 527.94 298.76]/Subtype/Link/Type/Annot>> endobj 261 0 obj <>/Border[0 0 0]/Rect[123.96 270.62 527.94 281.78]/Subtype/Link/Type/Annot>> endobj 262 0 obj <>/Border[0 0 0]/Rect[123.96 251.72 527.94 263.96]/Subtype/Link/Type/Annot>> endobj 263 0 obj <>/Border[0 0 0]/Rect[123.96 232.76 527.94 245]/Subtype/Link/Type/Annot>> endobj 264 0 obj <>/Border[0 0 0]/Rect[123.96 215.6 527.94 226.76]/Subtype/Link/Type/Annot>> endobj 265 0 obj <>/Border[0 0 0]/Rect[123.96 198.62 527.94 209.78]/Subtype/Link/Type/Annot>> endobj 266 0 obj <>/Border[0 0 0]/Rect[123.96 181.58 527.94 192.74]/Subtype/Link/Type/Annot>> endobj 267 0 obj <>/Border[0 0 0]/Rect[123.96 164.6 527.94 175.76]/Subtype/Link/Type/Annot>> endobj 268 0 obj <>/Border[0 0 0]/Rect[123.96 147.56 527.94 158.72]/Subtype/Link/Type/Annot>> endobj 269 0 obj <>/Border[0 0 0]/Rect[159.42 130.58 527.94 141.74]/Subtype/Link/Type/Annot>> endobj 270 0 obj <>/Border[0 0 0]/Rect[74.76 88.4 89.76 98.48]/Subtype/Link/Type/Annot>> endobj 271 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 272 0 obj <>stream +h[Y\~_qCԾ@J `<<43Ff$ŒsN[uEXvWg?|i._.zӛo{ͷ5n6I$?HG?|!Xa4F?mF#$R{)?aoEL'qja]0;a_؍q'Tf /Z>l`FR>*B lH)77q.^Xŋ+e&)ͫ´*RW(ybG~RZn4(`֠}I9bEhօ-u⺬rcqID;'6('.{w_9 ~fon ߿9GlKNa),_6`zo^8|/^}#첐*:3>!]I + .D 66B96Ķ")+dTK*Gi!RNJ>m]s4is{A$kZ(M5FUP'9R"hFVFU(`qR B;7"ut,IhڒT+ gsBQ$R7xBOa9‡)#CwZ$%<#`4'! Cgg`X:RIzE !+K)(BJ0JKX͂3&kmAh"P3hM8֭ px9s)3@Spc$ہ~Xnk{<A{/>z nPG[JzϥPEgc p9.x5)>2h +X7IssN$7¨|Ӷo) tlsImEnTW@@JFi:]Kڰ(CBd|,<,OG =|o1|xK"Ժc2 K (Bu<Xлƒ iuXV.s*[z5 2u,4Re'+_nD®GRN?d9\T^ɇGZd/)W &8ȂJ8!kci(B*4 kcBej4| +,7']J]?v殯G`7j1N#F^J1Xl7s#w"N 0xUei, /^<-ӞLz܀~.2`ܛ|!C@"6A D9YAqs]s[>wZ/`9n6ŝUP*2n8GUBh EglX, + #_?[!tVN|&bFZ&A4R&Qfzߡ60WeyK h vQ厑o]OE\;Jp!ٱ4S +4,) V Gd W [a,%mqk OtT4*!m[z7.e;ۖZ<#E +\bCuFصְ8jwy$)Cš i3+HHUsfBwâ8PW.ŻiӕE.F"14Eu2iRh i=iN8I˹%~ucx3{eRΑha^ %_)B'~\2LgVl=F{el,6&bHzYUⒷ2TŎ}6q5sqXR~jL~2jH OIlvbY-v@-I/AO{ru W I)6shuTk1mpf͚lƅ lFPۙhKd^miV%L/L +-2&F}~Sd ɰMb3Ež9#93(Q9TDFl+bM& +#Qh,V1I͔WY+Go:0ѫn0mY>oOqŊPI: ŖۤG+%HYAAՏ8k 8B52s $g;se"*!=I*? {*ĶfdkWg@m[P}Fwˉ@Q$TԮ`rSl/K%kȉ}={ʣ٪ü!^%b?! 2 m,a +IlMȕl F) +(lz`&> YdBet(d INrɞBa񔮎)dLXb/g'콇lDԫw[=ס̤Mh%pSl +[8x/}|!-u1/®:!kRj1: +CQ3pP#.hD1^$d]X75ĵvq ᒛޥ;쯑_(sjzv}YDZMM鑡sՊݶZ>'yDXAV+o=WZ}w#hye5M s' aE}ٷ~ƍ~#lƧʇ_GB(VݾWS=L.[@'&969ŨdFؽ\c-v$s +u"ˎnm5uGr6@!֨jqr♾LUvf_w樓^ܪ)z%J^5TT%F ŗKk+5jڮ mk|*k2Eek҇ );U% +# +x%H9RZB` Q߃;B `G^ѨezA୍w:|'#eՓ ?C OlL.8ıauaٮ `~ℾ"Ttf+L2_+Z3E3V}>uSXlEvbޝ0M61LBV)֥8'Ƴm5qRx/9=t<7#.Lqe^!7ήKLp +lfsQEq6vHLvGΠX&E,=UYk5%^FuE9<ѫ~мZ][?ܧ=~Q߁OhUGO::l8 F]}ffccFGHȈ`FwxS<[O[)n {>hmZ{/jC}/oAk>dLԟu8 +׶Tiqz*$+?"7-򣽧:sR.s3 +dr8ߋ, ljtmfY90q쨡y^PYm WlWb.00z`mIz,2jNGmy<ׇ_m+ +endstream endobj 273 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 274 0 obj <> endobj 275 0 obj <> endobj 276 0 obj <>/Border[0 0 0]/Rect[123.96 740.6 527.94 751.76]/Subtype/Link/Type/Annot>> endobj 277 0 obj <>/Border[0 0 0]/Rect[67.26 708.92 527.94 722.6]/Subtype/Link/Type/Annot>> endobj 278 0 obj <>/Border[0 0 0]/Rect[123.96 689.78 527.94 702.02]/Subtype/Link/Type/Annot>> endobj 279 0 obj <>/Border[0 0 0]/Rect[123.96 670.76 527.94 683]/Subtype/Link/Type/Annot>> endobj 280 0 obj <>/Border[0 0 0]/Rect[123.96 651.74 527.94 663.98]/Subtype/Link/Type/Annot>> endobj 281 0 obj <>/Border[0 0 0]/Rect[123.96 634.58 527.94 645.74]/Subtype/Link/Type/Annot>> endobj 282 0 obj <>/Border[0 0 0]/Rect[123.96 617.6 527.94 628.76]/Subtype/Link/Type/Annot>> endobj 283 0 obj <>/Border[0 0 0]/Rect[123.96 598.76 527.94 611]/Subtype/Link/Type/Annot>> endobj 284 0 obj <>/Border[0 0 0]/Rect[123.96 581.6 527.94 592.76]/Subtype/Link/Type/Annot>> endobj 285 0 obj <>/Border[0 0 0]/Rect[123.96 564.62 527.94 575.78]/Subtype/Link/Type/Annot>> endobj 286 0 obj <>/Border[0 0 0]/Rect[123.96 547.58 527.94 558.74]/Subtype/Link/Type/Annot>> endobj 287 0 obj <>/Border[0 0 0]/Rect[123.96 530.6 527.94 541.76]/Subtype/Link/Type/Annot>> endobj 288 0 obj <>/Border[0 0 0]/Rect[123.96 513.62 527.94 524.78]/Subtype/Link/Type/Annot>> endobj 289 0 obj <>/Border[0 0 0]/Rect[123.96 494.78 527.94 507.02]/Subtype/Link/Type/Annot>> endobj 290 0 obj <>/Border[0 0 0]/Rect[123.96 475.76 527.94 488]/Subtype/Link/Type/Annot>> endobj 291 0 obj <>/Border[0 0 0]/Rect[123.96 446.6 527.94 469.76]/Subtype/Link/Type/Annot>> endobj 292 0 obj <>/Border[0 0 0]/Rect[123.96 417.62 527.94 440.78]/Subtype/Link/Type/Annot>> endobj 293 0 obj <>/Border[0 0 0]/Rect[123.96 388.58 527.94 411.74]/Subtype/Link/Type/Annot>> endobj 294 0 obj <>/Border[0 0 0]/Rect[123.96 359.6 527.94 382.76]/Subtype/Link/Type/Annot>> endobj 295 0 obj <>/Border[0 0 0]/Rect[123.96 330.62 527.94 353.78]/Subtype/Link/Type/Annot>> endobj 296 0 obj <>/Border[0 0 0]/Rect[123.96 301.58 527.94 324.74]/Subtype/Link/Type/Annot>> endobj 297 0 obj <>/Border[0 0 0]/Rect[123.96 284.6 527.94 295.76]/Subtype/Link/Type/Annot>> endobj 298 0 obj <>/Border[0 0 0]/Rect[67.26 252.92 527.94 266.6]/Subtype/Link/Type/Annot>> endobj 299 0 obj <>/Border[0 0 0]/Rect[123.96 233.72 527.94 245.96]/Subtype/Link/Type/Annot>> endobj 300 0 obj <>/Border[0 0 0]/Rect[123.96 214.76 527.94 227]/Subtype/Link/Type/Annot>> endobj 301 0 obj <>/Border[0 0 0]/Rect[123.96 195.74 527.94 207.98]/Subtype/Link/Type/Annot>> endobj 302 0 obj <>/Border[0 0 0]/Rect[67.26 163.88 527.94 177.56]/Subtype/Link/Type/Annot>> endobj 303 0 obj <>/Border[0 0 0]/Rect[123.96 144.74 527.94 156.98]/Subtype/Link/Type/Annot>> endobj 304 0 obj <>/Border[0 0 0]/Rect[123.96 125.72 527.94 137.96]/Subtype/Link/Type/Annot>> endobj 305 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 306 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 307 0 obj <>stream +h[[~_QI5_)N 4a/c;k;sёJukfb]T|I7ݛݗn7}w?w/_n7սnnUU$KAx%)۾_j-T FJOmO~턆*bJ#a!RNدU +sz%,^hJ@Sw/8͍P.+LM2lݸa/]TU"Im_bI$ +q +?^mWr?*vBR'lH)vWoVܸz)>ыƵZzx<2_F.B;.8ufCCn'A -I"NGN9t~ˏg]唴\p]KHAK0ݚS?{ӻ] yw'!U46H}AA6vWu) ۽Wk-K#v66B96B")+dT dBY}BzM N +QںRPuIli(6;VypVJQh)* <bá!n-<43D XP% Nf愢IǷ[L +a +[%~h9x? TN4ӌie Fskh`JVK3 +  A+JФ4/Ŵ&|±)&!ɊBA}\45&'!u~stp*+`G^zzHåRwua @!ae/᝵VQo%秈OESc i Ru_r,=<%/kI % +MT: TCf><%OSQD1+&("҈U=,iʒDԡxnNQC FY|:7X`l-7oj)D>7@C/m<~Zfro.6PCpzM:剨p .u\lIӶ:2M@h̉,`RG+"h({U \Y4K3 Ѐ*ӯ( QC /f*ަ痔>?L!|jcGD_~&]繼鵃$Ec$܁#"l\8,͙Q囶ĸ{fqͬJ\^Ōįn TBAǩ,v3fbij6TvQT NݜX{ɱKo܂xKHH{혋ׯb[tg:|P7A*y"@%Fkaȁ_3y +6SߎRD S@ DWђ5?ngR=HO~)юBӎ4%ɰ*"7(.bk!5ުhoxz,1Aྀk@*iS-?'QR5j3@YV{m§Y᣺'e.QWHDG=VW+S=֤RM %F>}+gVas<__J<MpMx:)׾1;j*H@fD3=z$m&; U%P7Ut[hY-G#g[a7{"PLDQd@(ϋ>e6 i[joK#xIr`F4%pD"H>4Q-7V8S ; "Z5?ʶ nעl>PC*9%Բ%@|wlA֪rа* QyQ4JZ9GO9t5zT3+8~/Lˑڞ1x!G-yT,2W>ˆ䫖$$<#s/'f|Luv[bxc3{]iLOݑ#ڹj?@w\Ń>eTcD+'xM6j{%3?n,q= 5'&哽4VѧANL'ٜÙHN:3*./*ѺqR6wcEXk]OM׾}yZ%h/TSԈNc%hBoB9k;,X779 7Ƕevgف7 $ge'BGoXF5$䛰.*v7d+č?Y oN \܇ǯW@^8;'4OoijdCFiwWNi *%K{TPR߄x)`THr&61 b./ŵi𙄖U 0C$Vpxi'頊T_ϱܯoeJ>ldT;>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 309 0 obj <> endobj 310 0 obj <> endobj 311 0 obj <>/Border[0 0 0]/Rect[123.96 740.6 527.94 751.76]/Subtype/Link/Type/Annot>> endobj 312 0 obj <>/Border[0 0 0]/Rect[123.96 721.76 527.94 734]/Subtype/Link/Type/Annot>> endobj 313 0 obj <>/Border[0 0 0]/Rect[123.96 704.6 527.94 715.76]/Subtype/Link/Type/Annot>> endobj 314 0 obj <>/Border[0 0 0]/Rect[123.96 687.62 527.94 698.78]/Subtype/Link/Type/Annot>> endobj 315 0 obj <>/Border[0 0 0]/Rect[123.96 670.58 527.94 681.74]/Subtype/Link/Type/Annot>> endobj 316 0 obj <>/Border[0 0 0]/Rect[123.96 651.74 527.94 663.98]/Subtype/Link/Type/Annot>> endobj 317 0 obj <>/Border[0 0 0]/Rect[123.96 632.78 527.94 645.02]/Subtype/Link/Type/Annot>> endobj 318 0 obj <>/Border[0 0 0]/Rect[123.96 615.62 527.94 626.78]/Subtype/Link/Type/Annot>> endobj 319 0 obj <>/Border[0 0 0]/Rect[123.96 598.58 527.94 609.74]/Subtype/Link/Type/Annot>> endobj 320 0 obj <>/Border[0 0 0]/Rect[123.96 581.6 527.94 592.76]/Subtype/Link/Type/Annot>> endobj 321 0 obj <>/Border[0 0 0]/Rect[123.96 564.62 527.94 575.78]/Subtype/Link/Type/Annot>> endobj 322 0 obj <>/Border[0 0 0]/Rect[123.96 547.58 527.94 558.74]/Subtype/Link/Type/Annot>> endobj 323 0 obj <>/Border[0 0 0]/Rect[123.96 530.6 527.94 541.76]/Subtype/Link/Type/Annot>> endobj 324 0 obj <>/Border[0 0 0]/Rect[123.96 513.62 527.94 524.78]/Subtype/Link/Type/Annot>> endobj 325 0 obj <>/Border[0 0 0]/Rect[123.96 496.58 527.94 507.74]/Subtype/Link/Type/Annot>> endobj 326 0 obj <>/Border[0 0 0]/Rect[123.96 479.6 527.94 490.76]/Subtype/Link/Type/Annot>> endobj 327 0 obj <>/Border[0 0 0]/Rect[67.26 447.92 123.96 461.6]/Subtype/Link/Type/Annot>> endobj 328 0 obj <>/Border[0 0 0]/Rect[123.96 428.78 527.94 441.02]/Subtype/Link/Type/Annot>> endobj 329 0 obj <>/Border[0 0 0]/Rect[123.96 409.76 527.94 422]/Subtype/Link/Type/Annot>> endobj 330 0 obj <>/Border[0 0 0]/Rect[123.96 390.74 527.94 402.98]/Subtype/Link/Type/Annot>> endobj 331 0 obj <>/Border[0 0 0]/Rect[123.96 373.58 527.94 384.74]/Subtype/Link/Type/Annot>> endobj 332 0 obj <>/Border[0 0 0]/Rect[123.96 356.6 527.94 367.76]/Subtype/Link/Type/Annot>> endobj 333 0 obj <>/Border[0 0 0]/Rect[123.96 339.62 527.94 350.78]/Subtype/Link/Type/Annot>> endobj 334 0 obj <>/Border[0 0 0]/Rect[123.96 320.72 527.94 332.96]/Subtype/Link/Type/Annot>> endobj 335 0 obj <>/Border[0 0 0]/Rect[123.96 303.62 527.94 314.78]/Subtype/Link/Type/Annot>> endobj 336 0 obj <>/Border[0 0 0]/Rect[123.96 286.58 527.94 297.74]/Subtype/Link/Type/Annot>> endobj 337 0 obj <>/Border[0 0 0]/Rect[123.96 269.6 527.94 280.76]/Subtype/Link/Type/Annot>> endobj 338 0 obj <>/Border[0 0 0]/Rect[123.96 252.62 527.94 263.78]/Subtype/Link/Type/Annot>> endobj 339 0 obj <>/Border[0 0 0]/Rect[123.96 235.58 527.94 246.74]/Subtype/Link/Type/Annot>> endobj 340 0 obj <>/Border[0 0 0]/Rect[123.96 218.6 527.94 229.76]/Subtype/Link/Type/Annot>> endobj 341 0 obj <>/Border[0 0 0]/Rect[67.26 186.92 527.94 200.6]/Subtype/Link/Type/Annot>> endobj 342 0 obj <>/Border[0 0 0]/Rect[123.96 167.72 527.94 179.96]/Subtype/Link/Type/Annot>> endobj 343 0 obj <>/Border[0 0 0]/Rect[123.96 148.76 527.94 161]/Subtype/Link/Type/Annot>> endobj 344 0 obj <>/Border[0 0 0]/Rect[123.96 129.74 527.94 141.98]/Subtype/Link/Type/Annot>> endobj 345 0 obj <>/Border[0 0 0]/Rect[74.76 88.4 89.76 98.48]/Subtype/Link/Type/Annot>> endobj 346 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 347 0 obj <>stream +h[Yܸ~_oh4,c<,-,lbԔzaO0՛Ϯ>&>I,3wpegz^|PtqYSYSY i-J  ۊ=胄'l]4SwC j IJTL9FX]SLʋhB)3[% c =Rx tTVR[pZepTN(V62} +a^0Z8KgaM*H* MA^ ?%}_ʨSb@F+{E.AW|F9b# ^+.B!j|x*aBb)줆ZPF +$J֗bYp"6g(q'Ɨ"tw TV֗ + _Gxez p9 +e*T/!ǍtSSeeX{逯{9}1{xiv{DQ9nEJ!ij V e0†C3#ttfڞnoGq#LtE3AƢHΖ߆cUv+\~;-Y8/4YHG暥>82Q+S3"ksSZ8{TmH$@%AS@ pq +!0$BfK sP "w0`,41<%x<6#+zLK[*[i შqM&GmgQ7FS>6̕GQgP6aniBD֯=(ВGɢGRw"'ܙ>yA +Mf`^gѯVd@K%JvZh%pI@qIRwӽ'{wGN$Lʵ7-Lx{yTEt/LWLrYQ +*qv( +jc㌝P~]<;2' *4hF8@buCĸq& #Sq:Ε:~+)H%3*|A`,Xek5޽U PGa%HbE҂EXd4j~ǻRmrhyT_h*^N,dD]h[e[D43kg^ؾmai6܇p"@u}ufآtz+"D" I7r` D&|G6ܐjܚlG҄dr#R oZ(ps\[N.P!NIH(61dr/Cgt8)p9N9M *G HAXTgXѭq|:Ӭ~Sn? }᱋aU>a6AZ{2a?ӑ|)˛1FR^ 1eD<1ESXHoP!b5nv}(H#Y8Ȧw Sn&8=(CM̂Mmah$wبg1Vdy:aS^2 Yru @e&wBߌR?iuG|m34:: E,9YT63?ma.y>!_ X1-rV(7e]sVWW,~uaJ+дE$p򹈜|)H5GY GeMIBv~J1r\P9y"aydB*$ܲc#̎~WØ^* +mȌ4锿dRkԐ&hcfr9W1fLSWW-^R#N* 10Y {Ff|-ݽcѻ;l%E](/~ 2kFVVQ{dl +UC5ZӪyo0 :3Xj}+v˙tΙk^.WJ2@m_kg!6g|p$.c]UJ?+ TnN;ZB +\¶%|&7O'w.KCĤ.*s+ڜ,>˟R˪0&dUdZ( uUJ og7<:SV\snJԘK/GLV}VtϪR.}t!IW,O O>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 349 0 obj <> endobj 350 0 obj <> endobj 351 0 obj <>/Border[0 0 0]/Rect[123.96 740.6 527.94 751.76]/Subtype/Link/Type/Annot>> endobj 352 0 obj <>/Border[0 0 0]/Rect[123.96 723.62 527.94 734.78]/Subtype/Link/Type/Annot>> endobj 353 0 obj <>/Border[0 0 0]/Rect[123.96 706.64 527.94 717.8]/Subtype/Link/Type/Annot>> endobj 354 0 obj <>/Border[0 0 0]/Rect[123.96 689.6 527.94 700.76]/Subtype/Link/Type/Annot>> endobj 355 0 obj <>/Border[0 0 0]/Rect[123.96 672.62 527.94 683.78]/Subtype/Link/Type/Annot>> endobj 356 0 obj <>/Border[0 0 0]/Rect[123.96 655.58 527.94 666.74]/Subtype/Link/Type/Annot>> endobj 357 0 obj <>/Border[0 0 0]/Rect[123.96 638.6 527.94 649.76]/Subtype/Link/Type/Annot>> endobj 358 0 obj <>/Border[0 0 0]/Rect[123.96 621.62 527.94 632.78]/Subtype/Link/Type/Annot>> endobj 359 0 obj <>/Border[0 0 0]/Rect[123.96 604.58 527.94 615.74]/Subtype/Link/Type/Annot>> endobj 360 0 obj <>/Border[0 0 0]/Rect[123.96 587.6 527.94 598.76]/Subtype/Link/Type/Annot>> endobj 361 0 obj <>/Border[0 0 0]/Rect[123.96 570.62 527.94 581.78]/Subtype/Link/Type/Annot>> endobj 362 0 obj <>/Border[0 0 0]/Rect[123.96 553.58 527.94 564.74]/Subtype/Link/Type/Annot>> endobj 363 0 obj <>/Border[0 0 0]/Rect[123.96 536.6 527.94 547.76]/Subtype/Link/Type/Annot>> endobj 364 0 obj <>/Border[0 0 0]/Rect[123.96 519.62 527.94 530.78]/Subtype/Link/Type/Annot>> endobj 365 0 obj <>/Border[0 0 0]/Rect[123.96 500.78 527.94 513.02]/Subtype/Link/Type/Annot>> endobj 366 0 obj <>/Border[0 0 0]/Rect[123.96 483.62 527.94 494.78]/Subtype/Link/Type/Annot>> endobj 367 0 obj <>/Border[0 0 0]/Rect[123.96 466.58 527.94 477.74]/Subtype/Link/Type/Annot>> endobj 368 0 obj <>/Border[0 0 0]/Rect[123.96 449.6 527.94 460.76]/Subtype/Link/Type/Annot>> endobj 369 0 obj <>/Border[0 0 0]/Rect[123.96 432.62 527.94 443.78]/Subtype/Link/Type/Annot>> endobj 370 0 obj <>/Border[0 0 0]/Rect[123.96 403.58 527.94 426.74]/Subtype/Link/Type/Annot>> endobj 371 0 obj <>/Border[0 0 0]/Rect[123.96 386.6 527.94 397.76]/Subtype/Link/Type/Annot>> endobj 372 0 obj <>/Border[0 0 0]/Rect[123.96 367.76 527.94 380]/Subtype/Link/Type/Annot>> endobj 373 0 obj <>/Border[0 0 0]/Rect[123.96 350.6 527.94 361.76]/Subtype/Link/Type/Annot>> endobj 374 0 obj <>/Border[0 0 0]/Rect[123.96 333.62 527.94 344.78]/Subtype/Link/Type/Annot>> endobj 375 0 obj <>/Border[0 0 0]/Rect[123.96 316.58 527.94 327.74]/Subtype/Link/Type/Annot>> endobj 376 0 obj <>/Border[0 0 0]/Rect[123.96 299.6 527.94 310.76]/Subtype/Link/Type/Annot>> endobj 377 0 obj <>/Border[0 0 0]/Rect[123.96 282.62 527.94 293.78]/Subtype/Link/Type/Annot>> endobj 378 0 obj <>/Border[0 0 0]/Rect[123.96 263.72 527.94 275.96]/Subtype/Link/Type/Annot>> endobj 379 0 obj <>/Border[0 0 0]/Rect[123.96 246.62 527.94 257.78]/Subtype/Link/Type/Annot>> endobj 380 0 obj <>/Border[0 0 0]/Rect[123.96 229.58 527.94 240.74]/Subtype/Link/Type/Annot>> endobj 381 0 obj <>/Border[0 0 0]/Rect[123.96 197.72 527.94 222.98]/Subtype/Link/Type/Annot>> endobj 382 0 obj <>/Border[0 0 0]/Rect[123.96 180.56 527.94 191.72]/Subtype/Link/Type/Annot>> endobj 383 0 obj <>/Border[0 0 0]/Rect[123.96 163.58 527.94 174.74]/Subtype/Link/Type/Annot>> endobj 384 0 obj <>/Border[0 0 0]/Rect[123.96 146.6 527.94 157.76]/Subtype/Link/Type/Annot>> endobj 385 0 obj <>/Border[0 0 0]/Rect[159.42 129.56 527.94 140.72]/Subtype/Link/Type/Annot>> endobj 386 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 387 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 388 0 obj <>stream +h[[$9v~_!Bw o`~z\%%.]5,MuBwstt|? =|8w7fכ?ݙ w7e_lLcCF'7}nv42ܝ!u7?5gaoMDYXC:N|ؙb슟v~4t3>c7y/8`+K14e㐒]a8|0=Jz3a{waMk&o_s?|wOvHc0ZWJFJ7728q]CU9nٳm*4ͥ0F[3Vfh`iQf`$e~r0a4;|zwX?C{g&r]0 ɸy%vI +!7#`~<|o0q*43TitP ! ONc(~ %((mGw֍K  h|qÛMymCXhS6dX|ia}oWer{3&y&RG1:ȁ`q0S #. 3ejTMB}hkjJ-< C ӈwz3#3ѿ36tnm}$Dq ml)H<(,$@y7T8`  RRu1m&| f(ip`K|I(Aɏ9\,ʝFB:qrn~MI\)V]W>ԕMӘP51%Ӗ~d'賶EFr>R2FE|OO$Y_ Nv Xo eށ-(PԌZ9L{Msž3]S!KUIDR{MZI9_`Äq[U6v?kD`6M>.VhhBh&ʯ-#%m1A +&Ty?u8UɇržݞL\4ٷ*8h2/;N?>9uȄ 25YxoV5: hw:yK+j +Wh΀fhm0@<G/v&%s9_BsHN[;zpD أVĔÙyhۢqf.ꛯ-~E3e [w\{Q=$Iۮ!), J $APAf7L40~o xG3/tW w?S3[3SiosZA!mʺ\y~Ƿtѓ@6Sv*DX ;N`C WƑFRwLIZU H GY6@CU{¦uݹ}% We%JҕMI`ML%v@5M[7W/3{9 ~d ei' ~J݅8Ï~>^Bԗ*j>Cʨ!Z9ԤZ^_L Y_q$pEyvSXJ?T1e.jU07Ֆ_)<{UΌ%RcT/c6]1Lhj;gs?rFCrr-:SZڳ i`GICJ2񰙓hafڡ}_ʻהI<mJŷdg|yt +ϵuRꕎ?kimLs4Yut0(q m\#0q(byX}Kԩ1;=uܩoI0;藇JgyO]9_42PX&Q!p=$:_# v:4o7๞s͑V:2jqb4$3#bɋXR`zi'Ç8s~T:"'YxM^Q>e'QiJO=z>ivB* Ni2v-<4\o$L_)|=M2bvbPIg$RUOXͯ7 +=W0~2Q<SC堧rcd`Iu+f|{i+|B*{j)Zj6Pjfv]o"wF虓 4J +0$C\Mi2Lί:Sx6u相3S ¡좂?~1'n5$!gl"`)kETjE۰޴-t&/^mȡ~3 +^EV +)+A!Qƿd۟i tqi>>^te5Qug̨~3<Αi2%Na71 +g1z6E|) Pg"snykyQC/k)$+DEOp^CKzS+lj'}K>S"VNez%a{zLYT5վ=uɅ: +{㪃Vbmrڮ_匲QFfZx97rཨ Jޗf}-xQ'=aeV.NΧ"5 o7L3O;T*Ǻ"UHa=]P_l,c7Ƴ @9Qu +! kf[\}Q*ӦզfvOrرQSwL1 Fv$H= x8"۞x-d\AjzMƒ }(($lv]RrBD݊k>Tj +_2MN{\Jjx'H>Ԑp.Kpϵ[8w(-nCM5KF} +iԹ_ > ^YjACCa0A2<_U#v6vIi-م5,߹%eXSRpk m..{H3?ayƻh၃k}t~3s.IJ)iDTgm{Iٷ2o[ 5JWE سG=/]ؓ N|9q6I=Ot1S1*.[ŮU dIGj !\+-srSSUh7w,^ߔqEZINU'5GLQ-_1olTQ+$o +ER̉hIj>K}VNz4F -_JO2\8|CQm&":Bމc #[Aޜ1%Ԑ׷Uih;ٷ[=dzxhluTkS+Ŕ62ʱvW/jѽrQ? ntY_u ٦-crzǐ +ĮZ9 G1/[ X1w8#vqyBb68Zy"# ٴ)Lcnf[g6m"[ ^y .rma*uoA[3T%Ӹ݁F2FUµ7v:c@\7 +H%<\];qq.I\tyZ~]wъ4&;b%FkX; 3Ut0Gd`t+A\Yjz^gN`ZOVb J:v nM~:ht>X٬})~2[.I$Y'FmR QŸS0qWt񶯳-S#cDSbY? +endstream endobj 389 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 390 0 obj <> endobj 391 0 obj <> endobj 392 0 obj <>/Border[0 0 0]/Rect[123.96 739.76 527.94 752]/Subtype/Link/Type/Annot>> endobj 393 0 obj <>/Border[0 0 0]/Rect[123.96 722.6 527.94 733.76]/Subtype/Link/Type/Annot>> endobj 394 0 obj <>/Border[0 0 0]/Rect[123.96 705.62 527.94 716.78]/Subtype/Link/Type/Annot>> endobj 395 0 obj <>/Border[0 0 0]/Rect[123.96 688.58 527.94 699.74]/Subtype/Link/Type/Annot>> endobj 396 0 obj <>/Border[0 0 0]/Rect[123.96 669.74 527.94 681.98]/Subtype/Link/Type/Annot>> endobj 397 0 obj <>/Border[0 0 0]/Rect[123.96 650.78 527.94 663.02]/Subtype/Link/Type/Annot>> endobj 398 0 obj <>/Border[0 0 0]/Rect[123.96 631.76 527.94 644]/Subtype/Link/Type/Annot>> endobj 399 0 obj <>/Border[0 0 0]/Rect[123.96 612.74 527.94 624.98]/Subtype/Link/Type/Annot>> endobj 400 0 obj <>/Border[0 0 0]/Rect[123.96 595.58 527.94 606.74]/Subtype/Link/Type/Annot>> endobj 401 0 obj <>/Border[0 0 0]/Rect[123.96 578.6 527.94 589.76]/Subtype/Link/Type/Annot>> endobj 402 0 obj <>/Border[0 0 0]/Rect[123.96 561.62 527.94 572.78]/Subtype/Link/Type/Annot>> endobj 403 0 obj <>/Border[0 0 0]/Rect[123.96 544.58 527.94 555.74]/Subtype/Link/Type/Annot>> endobj 404 0 obj <>/Border[0 0 0]/Rect[123.96 527.6 527.94 538.76]/Subtype/Link/Type/Annot>> endobj 405 0 obj <>/Border[0 0 0]/Rect[123.96 510.62 527.94 521.78]/Subtype/Link/Type/Annot>> endobj 406 0 obj <>/Border[0 0 0]/Rect[123.96 493.58 527.94 504.74]/Subtype/Link/Type/Annot>> endobj 407 0 obj <>/Border[0 0 0]/Rect[123.96 476.6 527.94 487.76]/Subtype/Link/Type/Annot>> endobj 408 0 obj <>/Border[0 0 0]/Rect[123.96 459.62 527.94 470.78]/Subtype/Link/Type/Annot>> endobj 409 0 obj <>/Border[0 0 0]/Rect[123.96 442.58 527.94 453.74]/Subtype/Link/Type/Annot>> endobj 410 0 obj <>/Border[0 0 0]/Rect[123.96 425.6 527.94 436.76]/Subtype/Link/Type/Annot>> endobj 411 0 obj <>/Border[0 0 0]/Rect[123.96 408.62 527.94 419.78]/Subtype/Link/Type/Annot>> endobj 412 0 obj <>/Border[0 0 0]/Rect[123.96 391.58 527.94 402.74]/Subtype/Link/Type/Annot>> endobj 413 0 obj <>/Border[0 0 0]/Rect[123.96 374.6 527.94 385.76]/Subtype/Link/Type/Annot>> endobj 414 0 obj <>/Border[0 0 0]/Rect[123.96 357.62 527.94 368.78]/Subtype/Link/Type/Annot>> endobj 415 0 obj <>/Border[0 0 0]/Rect[123.96 340.58 527.94 351.74]/Subtype/Link/Type/Annot>> endobj 416 0 obj <>/Border[0 0 0]/Rect[123.96 321.74 527.94 333.98]/Subtype/Link/Type/Annot>> endobj 417 0 obj <>/Border[0 0 0]/Rect[67.26 289.88 527.94 303.56]/Subtype/Link/Type/Annot>> endobj 418 0 obj <>/Border[0 0 0]/Rect[123.96 270.74 527.94 282.98]/Subtype/Link/Type/Annot>> endobj 419 0 obj <>/Border[0 0 0]/Rect[123.96 251.72 527.94 263.96]/Subtype/Link/Type/Annot>> endobj 420 0 obj <>/Border[0 0 0]/Rect[123.96 232.76 527.94 245]/Subtype/Link/Type/Annot>> endobj 421 0 obj <>/Border[0 0 0]/Rect[123.96 215.6 527.94 226.76]/Subtype/Link/Type/Annot>> endobj 422 0 obj <>/Border[0 0 0]/Rect[123.96 198.62 527.94 209.78]/Subtype/Link/Type/Annot>> endobj 423 0 obj <>/Border[0 0 0]/Rect[123.96 181.58 527.94 192.74]/Subtype/Link/Type/Annot>> endobj 424 0 obj <>/Border[0 0 0]/Rect[123.96 164.6 527.94 175.76]/Subtype/Link/Type/Annot>> endobj 425 0 obj <>/Border[0 0 0]/Rect[123.96 147.56 527.94 158.72]/Subtype/Link/Type/Annot>> endobj 426 0 obj <>/Border[0 0 0]/Rect[159.42 130.58 527.94 141.74]/Subtype/Link/Type/Annot>> endobj 427 0 obj <>/Border[0 0 0]/Rect[79.74 88.4 94.74 98.48]/Subtype/Link/Type/Annot>> endobj 428 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 429 0 obj <>stream +h[Yo~_1,%!@q@< P#9MƤdNG}]U]U}O_] Oo?\y8~OSO77W԰$ ?Ah?` 9R=gNJtъ62ja]05r_OJ脅 /_lfI=QqڤaCJqtЌKR$=)/UزRZfڲ-LKkƭ߰JuJƭJZi& 9#rܖT*Nݲr~Y76yD@A9tpo?|E?CSf>Uv%'T.ҟ7W}w?} zϰB&d6H?|>@C B58 @=.!C (m0m0r[mmE2RVȨ. VC97VNqirO:dcMC  +ĖUJcZ+* `yR BU}sSrCƎ&"I7$.tt΄H<$єD2yTtHRIz !W R^a*.`~mN+ '/&U, 5 =p]3M3MVDj)xu2P:Sҡu)%e_6B7@^z{;VçSwuUo!r Kv.Ja{*UHÙςH6X"ASC*%opts)eCf7¨BS[Ӗ0 RٖBԔ1`N=<,^H]JaQ'eʙO|ol_*+_ +9Ri"HK%.#]D 0|C ďe:Wf:+lhq䧖UfO58[;S@]'fRE#r\bTH+ v`!B' ;ΎI!qhy60BR=dgFZ5,WYWfd$(: :Ơݨvy{Zt!ԏnL(24[5fhg +i +P2d{.vv PBXWQ:~N4G'W}۝ݳb!Zt!P&ٞ !df!/MJ\e蘡w3(ekqaS:Ug[YN#5$Z@)4Ó='_dx2'E&,Й#ăT1g DW0Bi[1~wiw۝hSB/':5Rnr/_ֹauuortT& IͯPgޜ 8K 9+W7g+vzܡ{ЂLfzdjL ;!m b"8]G⣞cPnƋ_`P^ =4]'-R.LYye!/ FzGT̯ ,~06K7wYgYty^.OoOZH!NϠ:/x W/E^9~'Eݜc3T1`5^jzakeENcu6PŋCU_`sCזW},y"wXV1M{mCUŜns̅ l:!^4k q# n OqkakƈMY,ڣgjrݙ̓Zh=/ Rn⅂w+9e3N\`S*'PO56qoy1O-kO ~Bڮ +u5_/8oΟH;ref2.zx&7kAqk]S_`XȪ?``bTmjb[Qg|2kfS7<ip5*5~Uؙeif *,?]>NkAnˡzU7} DH&J1wܞ[7v-q߷=ۙYMxl#rboVu +qgyTjj-;rtD,ױRw C;v5Fr! 2I9O7z/uG/_]tR-'֋ӛ6`L +endstream endobj 430 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 431 0 obj <> endobj 432 0 obj <> endobj 433 0 obj <>/Border[0 0 0]/Rect[123.96 740.6 527.94 751.76]/Subtype/Link/Type/Annot>> endobj 434 0 obj <>/Border[0 0 0]/Rect[123.96 723.62 527.94 734.78]/Subtype/Link/Type/Annot>> endobj 435 0 obj <>/Border[0 0 0]/Rect[123.96 706.64 527.94 717.8]/Subtype/Link/Type/Annot>> endobj 436 0 obj <>/Border[0 0 0]/Rect[123.96 689.6 527.94 700.76]/Subtype/Link/Type/Annot>> endobj 437 0 obj <>/Border[0 0 0]/Rect[123.96 672.62 527.94 683.78]/Subtype/Link/Type/Annot>> endobj 438 0 obj <>/Border[0 0 0]/Rect[123.96 655.58 527.94 666.74]/Subtype/Link/Type/Annot>> endobj 439 0 obj <>/Border[0 0 0]/Rect[123.96 638.6 527.94 649.76]/Subtype/Link/Type/Annot>> endobj 440 0 obj <>/Border[0 0 0]/Rect[123.96 621.62 527.94 632.78]/Subtype/Link/Type/Annot>> endobj 441 0 obj <>/Border[0 0 0]/Rect[123.96 604.58 527.94 615.74]/Subtype/Link/Type/Annot>> endobj 442 0 obj <>/Border[0 0 0]/Rect[123.96 587.6 527.94 598.76]/Subtype/Link/Type/Annot>> endobj 443 0 obj <>/Border[0 0 0]/Rect[123.96 570.62 527.94 581.78]/Subtype/Link/Type/Annot>> endobj 444 0 obj <>/Border[0 0 0]/Rect[123.96 553.58 527.94 564.74]/Subtype/Link/Type/Annot>> endobj 445 0 obj <>/Border[0 0 0]/Rect[123.96 536.6 527.94 547.76]/Subtype/Link/Type/Annot>> endobj 446 0 obj <>/Border[0 0 0]/Rect[123.96 519.62 527.94 530.78]/Subtype/Link/Type/Annot>> endobj 447 0 obj <>/Border[0 0 0]/Rect[123.96 502.58 527.94 513.74]/Subtype/Link/Type/Annot>> endobj 448 0 obj <>/Border[0 0 0]/Rect[123.96 485.6 527.94 496.76]/Subtype/Link/Type/Annot>> endobj 449 0 obj <>/Border[0 0 0]/Rect[123.96 468.62 527.94 479.78]/Subtype/Link/Type/Annot>> endobj 450 0 obj <>/Border[0 0 0]/Rect[123.96 451.58 527.94 462.74]/Subtype/Link/Type/Annot>> endobj 451 0 obj <>/Border[0 0 0]/Rect[123.96 434.6 527.94 445.76]/Subtype/Link/Type/Annot>> endobj 452 0 obj <>/Border[0 0 0]/Rect[123.96 417.62 527.94 428.78]/Subtype/Link/Type/Annot>> endobj 453 0 obj <>/Border[0 0 0]/Rect[123.96 400.58 527.94 411.74]/Subtype/Link/Type/Annot>> endobj 454 0 obj <>/Border[0 0 0]/Rect[123.96 383.6 527.94 394.76]/Subtype/Link/Type/Annot>> endobj 455 0 obj <>/Border[0 0 0]/Rect[123.96 366.62 527.94 377.78]/Subtype/Link/Type/Annot>> endobj 456 0 obj <>/Border[0 0 0]/Rect[123.96 347.72 527.94 359.96]/Subtype/Link/Type/Annot>> endobj 457 0 obj <>/Border[0 0 0]/Rect[123.96 330.62 527.94 341.78]/Subtype/Link/Type/Annot>> endobj 458 0 obj <>/Border[0 0 0]/Rect[123.96 313.58 527.94 324.74]/Subtype/Link/Type/Annot>> endobj 459 0 obj <>/Border[0 0 0]/Rect[123.96 296.6 527.94 307.76]/Subtype/Link/Type/Annot>> endobj 460 0 obj <>/Border[0 0 0]/Rect[123.96 279.62 527.94 290.78]/Subtype/Link/Type/Annot>> endobj 461 0 obj <>/Border[0 0 0]/Rect[123.96 262.58 527.94 273.74]/Subtype/Link/Type/Annot>> endobj 462 0 obj <>/Border[0 0 0]/Rect[123.96 245.6 527.94 256.76]/Subtype/Link/Type/Annot>> endobj 463 0 obj <>/Border[0 0 0]/Rect[123.96 216.62 527.94 239.78]/Subtype/Link/Type/Annot>> endobj 464 0 obj <>/Border[0 0 0]/Rect[123.96 187.58 527.94 210.74]/Subtype/Link/Type/Annot>> endobj 465 0 obj <>/Border[0 0 0]/Rect[123.96 158.6 527.94 181.76]/Subtype/Link/Type/Annot>> endobj 466 0 obj <>/Border[0 0 0]/Rect[159.42 141.56 527.94 152.72]/Subtype/Link/Type/Annot>> endobj 467 0 obj <>/Border[0 0 0]/Rect[123.96 129.56 527.94 141.56]/Subtype/Link/Type/Annot>> endobj 468 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 469 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 470 0 obj <>stream +h[Y~_Qs>)J `ݞZFWeyѧFh1#*6ju߿ooywo7^}X^ܬעn:B'cv3o{X2E;(NJseC5'\4AXԄ=4MeRH.49AK>Ӷg!s\L f5Z9͔f\pVV ϑR +~% si?~zs9cR:]{[vm9 r2אZ\km +=Ù4038zܡiX#6i'N0+ Nze' 2Nt?on~n^>ӼC,gB?to7; 2Z[r{t~|z׽o}X;n; mvE!-u7Tf;Bpwʊʊʒ cRy)Ӱ% AI3n=$V9k<b** emFX6p$XоBxfu(50>`B0'3),P4`VA LąN%BpݒYd,y H@\jS(ѱ {bxLQ3 iCLo=f.8UsxnN'S2NCGG +lɔF{ "2n8#(YA%REZ, ofo  +DRD, +f޸RA{.fABŲ6TiDpWr[b|ypq9ssNT.<9˨ȣݤ{*ZZF7+A֥RfZD >!/ 'x:6c蠴CQÔG*sXֹ|Oe;بB[2>w* $C 2ĭް)EB`>a<> kjd Wx^|Z`V;\d(tRp݀.*bI5 jPG-Ul\=J+M6̵QĘ`k`*C}\ A>9> @3>TQF~ KSaI4 N!I.Sℊw/\tJKq#F (}"}\B$e[> }.92c <`g經QN\NyNۢt/y)db(IJ (1񱚤ZyKUWlRW#UO-Ie8DDj,},YL.$uZ5Q/)~\ocӦViX8!BVN/V丄f~܉DKPQ#f&[Ġ+֐Q#DEȉh:J%1M@d0Gcպɯɫ@oh֫iqTSgY8l#f\8Q; &ATy +кjPL0ߥ5UnG +4@wUS좄j9@V~DŨqfWz0"YcmE|bnшafҝķ_$ :Q^G8GEθn4fج»rrʓוTR +?M5mġjUGU6ػId(]U2B=Xﶹ-hko:fv)$B$PdHgGs̓t&y<'u8LY+j[z<j]Y}{t&ΐ +ɲZ)B#3/o\ɡ_,ժEVZu/Y/:J.~"_rb2@SFlJ&% 7;uYnzXjv\U9T//T((3* PQö 4kra=r/18^<(rƕ˹>ے6fXeh'Hd,؊I5e +)J$Su=UҘ"i>I:Ldf!x2B3;yfé*.f;Ŋ<,6Q$cjDŽ>^}B=*sb>&U2ud4ͬ53^O` 1C+Q %ݚƻc9ӛٙ]tSsZ͟D<'lc߯]ܬשRJl*: ׫!eL:HUr>Ժ.6YM>!}Y0lJqa +` +S0lda + ˡ&=NuՖpY}.<}tS{YJ.JZc$~:) &\40 *j3<͠Kzp +endstream endobj 471 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 472 0 obj <> endobj 473 0 obj <> endobj 474 0 obj <>/Border[0 0 0]/Rect[123.96 728.6 527.94 751.76]/Subtype/Link/Type/Annot>> endobj 475 0 obj <>/Border[0 0 0]/Rect[123.96 711.62 527.94 722.78]/Subtype/Link/Type/Annot>> endobj 476 0 obj <>/Border[0 0 0]/Rect[123.96 694.64 527.94 705.74]/Subtype/Link/Type/Annot>> endobj 477 0 obj <>/Border[0 0 0]/Rect[123.96 677.6 527.94 688.76]/Subtype/Link/Type/Annot>> endobj 478 0 obj <>/Border[0 0 0]/Rect[123.96 660.62 527.94 671.78]/Subtype/Link/Type/Annot>> endobj 479 0 obj <>/Border[0 0 0]/Rect[123.96 643.58 527.94 654.74]/Subtype/Link/Type/Annot>> endobj 480 0 obj <>/Border[0 0 0]/Rect[123.96 626.6 527.94 637.76]/Subtype/Link/Type/Annot>> endobj 481 0 obj <>/Border[0 0 0]/Rect[123.96 609.62 527.94 620.78]/Subtype/Link/Type/Annot>> endobj 482 0 obj <>/Border[0 0 0]/Rect[123.96 592.58 527.94 603.74]/Subtype/Link/Type/Annot>> endobj 483 0 obj <>/Border[0 0 0]/Rect[123.96 563.6 527.94 586.76]/Subtype/Link/Type/Annot>> endobj 484 0 obj <>/Border[0 0 0]/Rect[123.96 546.62 527.94 557.78]/Subtype/Link/Type/Annot>> endobj 485 0 obj <>/Border[0 0 0]/Rect[123.96 517.58 527.94 540.74]/Subtype/Link/Type/Annot>> endobj 486 0 obj <>/Border[0 0 0]/Rect[123.96 488.6 527.94 511.76]/Subtype/Link/Type/Annot>> endobj 487 0 obj <>/Border[0 0 0]/Rect[123.96 471.62 527.94 482.78]/Subtype/Link/Type/Annot>> endobj 488 0 obj <>/Border[0 0 0]/Rect[123.96 454.58 527.94 465.74]/Subtype/Link/Type/Annot>> endobj 489 0 obj <>/Border[0 0 0]/Rect[123.96 437.6 527.94 448.76]/Subtype/Link/Type/Annot>> endobj 490 0 obj <>/Border[0 0 0]/Rect[123.96 420.62 527.94 431.78]/Subtype/Link/Type/Annot>> endobj 491 0 obj <>/Border[0 0 0]/Rect[123.96 403.58 527.94 414.74]/Subtype/Link/Type/Annot>> endobj 492 0 obj <>/Border[0 0 0]/Rect[123.96 386.6 527.94 397.76]/Subtype/Link/Type/Annot>> endobj 493 0 obj <>/Border[0 0 0]/Rect[67.26 354.92 527.94 368.6]/Subtype/Link/Type/Annot>> endobj 494 0 obj <>/Border[0 0 0]/Rect[123.96 335.72 527.94 347.96]/Subtype/Link/Type/Annot>> endobj 495 0 obj <>/Border[0 0 0]/Rect[123.96 316.76 527.94 329]/Subtype/Link/Type/Annot>> endobj 496 0 obj <>/Border[0 0 0]/Rect[123.96 297.74 527.94 309.98]/Subtype/Link/Type/Annot>> endobj 497 0 obj <>/Border[0 0 0]/Rect[123.96 280.58 527.94 291.74]/Subtype/Link/Type/Annot>> endobj 498 0 obj <>/Border[0 0 0]/Rect[123.96 263.6 527.94 274.76]/Subtype/Link/Type/Annot>> endobj 499 0 obj <>/Border[0 0 0]/Rect[123.96 246.62 527.94 257.78]/Subtype/Link/Type/Annot>> endobj 500 0 obj <>/Border[0 0 0]/Rect[123.96 229.58 527.94 240.74]/Subtype/Link/Type/Annot>> endobj 501 0 obj <>/Border[0 0 0]/Rect[123.96 212.6 527.94 223.76]/Subtype/Link/Type/Annot>> endobj 502 0 obj <>/Border[0 0 0]/Rect[123.96 195.62 527.94 206.78]/Subtype/Link/Type/Annot>> endobj 503 0 obj <>/Border[0 0 0]/Rect[123.96 178.58 527.94 189.74]/Subtype/Link/Type/Annot>> endobj 504 0 obj <>/Border[0 0 0]/Rect[123.96 161.6 527.94 172.76]/Subtype/Link/Type/Annot>> endobj 505 0 obj <>/Border[0 0 0]/Rect[123.96 144.56 527.94 155.72]/Subtype/Link/Type/Annot>> endobj 506 0 obj <>/Border[0 0 0]/Rect[159.42 127.58 527.94 138.74]/Subtype/Link/Type/Annot>> endobj 507 0 obj <>/Border[0 0 0]/Rect[79.74 88.4 94.74 98.48]/Subtype/Link/Type/Annot>> endobj 508 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 509 0 obj <>stream +h[Yo~篘$[}1@vX ! !^vv6ȿO==L#%tW}]U]UsǏ߾>|vu{7o_~}SݛO^wۿ$|'~ BDilFwc'R: [I?X- Is9 1>RJez',T4~+ b'I)u†bvzWK7fyyI +ky[XeY +.>7|*iEmy؀De^f[87] ǍM^.&m#0SN(^~8Տ/°]Em?t*t ms Ϸwn_|0ՋO;|" " } H9 w!/"tw|Rd;rPPY \.o(Y!o ]9 +e=N 5 x.Deo+s s`YzL:dc-SC loSY+COUh qS B;\ &H:"ym)hu\PT= < Zh T@T~\ؑw4bI.t32iP F" ++%%  20 J^Q)`}<JKBbOlEA:Zq7 4Y]'|!i(5z.P) a$Hz#ROOŤw*WA ]fi]WG-wT>"BpY)dkSe0dU ]7$pG|s8eaTlKʰ-,sgˍ&%\ZutjaLո6ehQ,g>Æ28:m }ßW??^^`@[Ɖ%T*kJ}Sk1Z !k&˚m'):X +rU- +^BeA0 +ǥ8s0(dO!#XúRx==^J +ham?e%@KHuhyy~ȓШp6Wl58'u:I&e~yyod]6d 5 iplvXZ[ E.0d"9[G0jh" `Z5 V*?Aqm0̌sE*yHFZss)Y1Ob3̹*Y4=R9co,SY#LՌ ="_ @VIaimyXǏ9gN` HXp6 WQs ⤫Ca;!3qb} l!<6_n{@=\PRwJ/jx{ޚ2֫HYƓX$"I2bGfO2X2VuLl$87ce.G/ڝͩ] 0RݮH"7VnQιs>z H˪rSk3+tM 9bD)s7e;yQʜ=0,2@Js@/ߡf묋*Go5X2Yta{grLy +ccgа/3' }j蹾@=G=7g,Ap gAOxq#]=:}tK1!/zKa+-p\k-ES-hSѤ\;^e1`V _X&iW€1î8]5Fz<;s~ciS"^q_B&"TQn,K8G!ivk^>r;/Vfi(TmfkepuLE&n&7469)Q  #qM:V=X#cC[q۔826;*23ZQ:b`%j,~ >5oNH>p n!j`n~ DB{0Һfb f)A}$ѥz>:6;Za7ĺ.r[ϷzǕօ'==Q +}^0ŗ֏Gc#=cJݖ37*},V&h^:J.7&JM&U7h%B O5FT*>Y&WWNFƫҢ<@q(M69{tK87֔Z[I?Ut!1yb\)̡cA.D|`Yv jz-z[]i4qt9!686f65EQZbC-o=,9,.Yq +bYq?u.>*d:d) `4yEuXt њ54,Ng}_f~?͠㐤e<}iqb + }R*8џHZ3kYٝ&f[W7">yu-icǢ(杻Nyys* L-{2U(W &oy~L3;zxs$تl+|;~2LT1D_q|U$C㜑Ǿi \02=we4 Ü:h@9*ʋ `\ +>׽B,IR@h$*ه3X&p[S r(3(1Pt ovG|uH󚺗f^4\EqЬ\YB귾d)t,2x}%5 3L{p9ty-~gW?X1oUvjsګԲ_YVd*r!I]dx" 7M6j^ WT5z}F<~O( v99S-ܐiI1r]]Ad)8g[ډB,*=FK''csYLLњLs8;oUl]r,kZfgBjhb>8ma|0Cu^70`asm14(NV.O }Om,6L)F=R݃"`-usݥ>)-|\1(QB: Oa˗Ği1 >stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 511 0 obj <> endobj 512 0 obj <> endobj 513 0 obj <>/Border[0 0 0]/Rect[123.96 740.6 527.94 751.76]/Subtype/Link/Type/Annot>> endobj 514 0 obj <>/Border[0 0 0]/Rect[123.96 723.62 527.94 734.78]/Subtype/Link/Type/Annot>> endobj 515 0 obj <>/Border[0 0 0]/Rect[123.96 706.64 527.94 717.8]/Subtype/Link/Type/Annot>> endobj 516 0 obj <>/Border[0 0 0]/Rect[123.96 689.6 527.94 700.76]/Subtype/Link/Type/Annot>> endobj 517 0 obj <>/Border[0 0 0]/Rect[123.96 672.62 527.94 683.78]/Subtype/Link/Type/Annot>> endobj 518 0 obj <>/Border[0 0 0]/Rect[123.96 655.58 527.94 666.74]/Subtype/Link/Type/Annot>> endobj 519 0 obj <>/Border[0 0 0]/Rect[123.96 638.6 527.94 649.76]/Subtype/Link/Type/Annot>> endobj 520 0 obj <>/Border[0 0 0]/Rect[123.96 621.62 527.94 632.78]/Subtype/Link/Type/Annot>> endobj 521 0 obj <>/Border[0 0 0]/Rect[123.96 604.58 527.94 615.74]/Subtype/Link/Type/Annot>> endobj 522 0 obj <>/Border[0 0 0]/Rect[123.96 587.6 527.94 598.76]/Subtype/Link/Type/Annot>> endobj 523 0 obj <>/Border[0 0 0]/Rect[123.96 570.62 527.94 581.78]/Subtype/Link/Type/Annot>> endobj 524 0 obj <>/Border[0 0 0]/Rect[123.96 551.78 527.94 564.02]/Subtype/Link/Type/Annot>> endobj 525 0 obj <>/Border[0 0 0]/Rect[123.96 534.62 527.94 545.78]/Subtype/Link/Type/Annot>> endobj 526 0 obj <>/Border[0 0 0]/Rect[123.96 517.58 527.94 528.74]/Subtype/Link/Type/Annot>> endobj 527 0 obj <>/Border[0 0 0]/Rect[123.96 500.6 527.94 511.76]/Subtype/Link/Type/Annot>> endobj 528 0 obj <>/Border[0 0 0]/Rect[123.96 483.62 527.94 494.78]/Subtype/Link/Type/Annot>> endobj 529 0 obj <>/Border[0 0 0]/Rect[123.96 466.58 527.94 477.74]/Subtype/Link/Type/Annot>> endobj 530 0 obj <>/Border[0 0 0]/Rect[123.96 449.6 527.94 460.76]/Subtype/Link/Type/Annot>> endobj 531 0 obj <>/Border[0 0 0]/Rect[123.96 420.62 527.94 443.78]/Subtype/Link/Type/Annot>> endobj 532 0 obj <>/Border[0 0 0]/Rect[123.96 391.58 527.94 414.74]/Subtype/Link/Type/Annot>> endobj 533 0 obj <>/Border[0 0 0]/Rect[123.96 362.6 527.94 385.76]/Subtype/Link/Type/Annot>> endobj 534 0 obj <>/Border[0 0 0]/Rect[123.96 333.62 527.94 356.78]/Subtype/Link/Type/Annot>> endobj 535 0 obj <>/Border[0 0 0]/Rect[123.96 304.58 527.94 327.74]/Subtype/Link/Type/Annot>> endobj 536 0 obj <>/Border[0 0 0]/Rect[123.96 287.6 527.94 298.76]/Subtype/Link/Type/Annot>> endobj 537 0 obj <>/Border[0 0 0]/Rect[123.96 270.62 527.94 281.78]/Subtype/Link/Type/Annot>> endobj 538 0 obj <>/Border[0 0 0]/Rect[123.96 253.58 527.94 264.74]/Subtype/Link/Type/Annot>> endobj 539 0 obj <>/Border[0 0 0]/Rect[123.96 236.6 527.94 247.76]/Subtype/Link/Type/Annot>> endobj 540 0 obj <>/Border[0 0 0]/Rect[123.96 219.62 527.94 230.78]/Subtype/Link/Type/Annot>> endobj 541 0 obj <>/Border[0 0 0]/Rect[123.96 202.58 527.94 213.74]/Subtype/Link/Type/Annot>> endobj 542 0 obj <>/Border[0 0 0]/Rect[123.96 185.6 527.94 196.76]/Subtype/Link/Type/Annot>> endobj 543 0 obj <>/Border[0 0 0]/Rect[123.96 168.56 527.94 179.72]/Subtype/Link/Type/Annot>> endobj 544 0 obj <>/Border[0 0 0]/Rect[123.96 151.58 527.94 162.74]/Subtype/Link/Type/Annot>> endobj 545 0 obj <>/Border[0 0 0]/Rect[159.42 134.6 527.94 145.76]/Subtype/Link/Type/Annot>> endobj 546 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 547 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 548 0 obj <>stream +h[Yo~_1Im}bY @y0 :bIqcgf/EHN|UU}^m~um?~nSWܮnnoՠۻU$KAx?$)f}RvHiHȆ_*k'䪈)IK9VI+-,}V(|ˈOQ?5X$nj0j01[pć]=RV$ w- +kB9a~?;?kvK= I) †nŃﭗ"{]u\_=meU9)^uZ3T4j3 J8I:Z sG7߾w^X; ~^\OIZn".r\rBkNkx毯Fz^}ھy0'!U6H?|CE6NW ) xaؿ췫%;766B96°")+dT6 {(榅C 9'BEL{Ciaںhh6 H64PQxjLl90R"hVZU o t+jี 0cIB}hז$8ZX88'~;-4,xT O Xi)#~*])nq<"v`4'! vC[[ +LҎBw+i~GR!tu1$| _G(p`KlI(RuxsA`"P3hNEChPH)3*\WvG+&Yz)$BPm/ڪ +h6 %緈OE[c i RucPzk2p7ONmsQ6 *Z9Lے~Cic( Ҥ>"Wt VW<@Jzi\S0)CB`'>}0a>}k j0p# JCL0&"E? єv)XBHFW9-}(lfGjY/5-KO R^b@os.z:*_)k3o[r+sߪ/S"tek +lpQb*k1{ǐJ΍T-"d;ˊ|:=6, k;DXgQFĒ*@(*떴t1()~.$Pp=UE.8(v v`%2]^LU#ż̴K5iBNTH81c%9/sX/A/i,f3e_s^5/o]e U+UtvCk@`h?E9ϲkV+o@T2{'2Up*+NO>O " *WcΑyFGm)km,Q?oDY 5'z`L H߁oAsllz8ܿ5Aq..ᯛ!%!/Gzˀ2Q1DhH+d)Ybk +aj]gr>ynF% ˇcԻ*i:gpCgFIIZ0x@NǮ»HW1ٞAxl022q}yk:5 1lzLz:]"d܏D}=6%; =շBZ,#Eι%,s`v'>`3jmQᲶ$Qt{բ_ĸ:糞@z. KX l,´KG*\ic~ X|1۪8."N2@] u*A +d$~d'jčwET QeZg~Ze+f5+Iieߡqiײ(7}SN|iOSEU+l"|IZ0'3Ɣ:0SS3Lu$T>/a3HA;F Er[@V6+Pz? $vmwKS52hM +n+>VʲHY#Sf#}ŋ3"T!3m}?|p E"Y$Jvҟڣ"b(~*j"wTz)ʧw0nmK.*U[ 0̢4*tqXS;uvyUƦ:@%Wa @d~IB!vqxHkk](%3Sn.|=͔|!(x,QPVS)INu"wx( DRHu$ZӴ%J[G4hu_M>JmՇQ6g**\ \Ԥ*0UxL)%k)#|^%PPҾ@E.Ojns@b8; 6=E}Ddhkkfg!k#J))n iew\yӓq}] FӱΐꙬKվ2;OV'FVk!+LVdYɑ4~^+`8$-~\&5e{qU߇UqtۅupA:,:>?[F($[ϼ+p"<㭳cg]́0abo:爺B.ۅXyS}xS7Ly-=2:MR2'}'T yc^ _C\9TNy+_z/t)KQRָC7qtP8;^/o +endstream endobj 549 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 550 0 obj <> endobj 551 0 obj <> endobj 552 0 obj <>/Border[0 0 0]/Rect[123.96 740.6 527.94 751.76]/Subtype/Link/Type/Annot>> endobj 553 0 obj <>/Border[0 0 0]/Rect[123.96 723.62 527.94 734.78]/Subtype/Link/Type/Annot>> endobj 554 0 obj <>/Border[0 0 0]/Rect[123.96 706.64 527.94 717.8]/Subtype/Link/Type/Annot>> endobj 555 0 obj <>/Border[0 0 0]/Rect[123.96 689.6 527.94 700.76]/Subtype/Link/Type/Annot>> endobj 556 0 obj <>/Border[0 0 0]/Rect[123.96 672.62 527.94 683.78]/Subtype/Link/Type/Annot>> endobj 557 0 obj <>/Border[0 0 0]/Rect[67.26 640.94 527.94 654.62]/Subtype/Link/Type/Annot>> endobj 558 0 obj <>/Border[0 0 0]/Rect[123.96 621.74 527.94 633.98]/Subtype/Link/Type/Annot>> endobj 559 0 obj <>/Border[0 0 0]/Rect[123.96 602.78 527.94 615.02]/Subtype/Link/Type/Annot>> endobj 560 0 obj <>/Border[0 0 0]/Rect[123.96 583.76 527.94 596]/Subtype/Link/Type/Annot>> endobj 561 0 obj <>/Border[0 0 0]/Rect[123.96 566.6 527.94 577.76]/Subtype/Link/Type/Annot>> endobj 562 0 obj <>/Border[0 0 0]/Rect[123.96 549.62 527.94 560.78]/Subtype/Link/Type/Annot>> endobj 563 0 obj <>/Border[0 0 0]/Rect[123.96 532.58 527.94 543.74]/Subtype/Link/Type/Annot>> endobj 564 0 obj <>/Border[0 0 0]/Rect[123.96 515.6 527.94 526.76]/Subtype/Link/Type/Annot>> endobj 565 0 obj <>/Border[0 0 0]/Rect[123.96 498.62 527.94 509.78]/Subtype/Link/Type/Annot>> endobj 566 0 obj <>/Border[0 0 0]/Rect[123.96 479.78 527.94 492.02]/Subtype/Link/Type/Annot>> endobj 567 0 obj <>/Border[0 0 0]/Rect[123.96 462.62 527.94 473.78]/Subtype/Link/Type/Annot>> endobj 568 0 obj <>/Border[0 0 0]/Rect[123.96 445.58 527.94 456.74]/Subtype/Link/Type/Annot>> endobj 569 0 obj <>/Border[0 0 0]/Rect[123.96 428.6 527.94 439.76]/Subtype/Link/Type/Annot>> endobj 570 0 obj <>/Border[0 0 0]/Rect[123.96 411.62 527.94 422.78]/Subtype/Link/Type/Annot>> endobj 571 0 obj <>/Border[0 0 0]/Rect[123.96 394.58 527.94 405.74]/Subtype/Link/Type/Annot>> endobj 572 0 obj <>/Border[0 0 0]/Rect[123.96 377.6 527.94 388.76]/Subtype/Link/Type/Annot>> endobj 573 0 obj <>/Border[0 0 0]/Rect[123.96 360.62 527.94 371.78]/Subtype/Link/Type/Annot>> endobj 574 0 obj <>/Border[0 0 0]/Rect[123.96 343.58 527.94 354.74]/Subtype/Link/Type/Annot>> endobj 575 0 obj <>/Border[0 0 0]/Rect[123.96 326.6 527.94 337.76]/Subtype/Link/Type/Annot>> endobj 576 0 obj <>/Border[0 0 0]/Rect[67.26 294.92 527.94 308.6]/Subtype/Link/Type/Annot>> endobj 577 0 obj <>/Border[0 0 0]/Rect[123.96 275.72 527.94 287.96]/Subtype/Link/Type/Annot>> endobj 578 0 obj <>/Border[0 0 0]/Rect[123.96 256.76 527.94 269]/Subtype/Link/Type/Annot>> endobj 579 0 obj <>/Border[0 0 0]/Rect[123.96 239.6 527.94 250.76]/Subtype/Link/Type/Annot>> endobj 580 0 obj <>/Border[0 0 0]/Rect[123.96 220.76 527.94 233]/Subtype/Link/Type/Annot>> endobj 581 0 obj <>/Border[0 0 0]/Rect[123.96 203.6 527.94 214.76]/Subtype/Link/Type/Annot>> endobj 582 0 obj <>/Border[0 0 0]/Rect[123.96 186.56 527.94 197.72]/Subtype/Link/Type/Annot>> endobj 583 0 obj <>/Border[0 0 0]/Rect[123.96 169.58 527.94 180.74]/Subtype/Link/Type/Annot>> endobj 584 0 obj <>/Border[0 0 0]/Rect[123.96 152.6 527.94 163.76]/Subtype/Link/Type/Annot>> endobj 585 0 obj <>/Border[0 0 0]/Rect[159.42 135.56 527.94 146.72]/Subtype/Link/Type/Annot>> endobj 586 0 obj <>/Border[0 0 0]/Rect[79.74 88.4 94.74 98.48]/Subtype/Link/Type/Annot>> endobj 587 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 588 0 obj <>stream +h[Yo~篘lQ}m@6ADBZ8lcB+[0dNM}Ǐ?u{_޾ׯVW~zuu}5\߭n/=8/a4~Y )X)jS "VBTXWXׯ\i?)2[++ǿ@iH +&81n+ईzԞ7xy(@uY۵gܥߎZE 5!=Ke +Nn[4VnjHD'0JW?W8"x#@  ]-5o^ՁK,Jb(H6wllͿ(qV G8c(1!hK?Y"5TV;`ْP#^V@iΤk5w=.$ʽ{bƌ2JׁFAS@?&]ȇώ2` AH3!oBBs9 ɎTgбcj0 0啢g[2mQڇyȇ+;F` 6束ɩ>9su3slSO90†j#!6ks((3&r#1Fu77Jm0 4McrI9c~\mxK ͫ/2{cY{>و]&| ?)&߫ʕTʐB˝ɦPGW:@z' , ɹ6 ={pHG|8>gp! vΜg\˗D։͓t>ֱm:?qg R?y2qY9>>RǞuĚ)EƠp~)@rB}vS +WRJ(:)f]l-` &3RzfMՔ@w/"h&: +O#j @ g׳璳?Y1f BCve؋.YvbW,v;7C)S_uQF)oY/;}hш"v^eȏ y7.$Y^n-JYLWޚJ4S-N˜]5tP$*.TPy4<:\I:2g O$eF.F8vS4AR1/m(,\38, .9Q`923`#QneN+dYz9EQFQ~1y 5s-{y׹N ĥ<%QbMƮ͂iƎz؄=& TƩ/QDfaB&Θ)L ^d^6ChFFL >jS)3%l8&/5/aڡf׌'OĝZfO(.#.o}oMSlN!Nui*|3kŒU̻v J@&%>W8ݾIEfR1ݎfT(1f$JnKm_ +P*GJMi\ͬqbf8,M]q !|lsJV }w)%ӡ}cΒoPw!SySC\B^bK|:D2lUcdߺ)j~D&gCGuXӂ\3I\:?ݛ]le#,Ĉ쨦p91\&x9wVK>5&8xP/^~r_I>ϛc"&XkٳvBvo G!% w#i"]t<ݛ;#貽s2 DTo(~30Y jP5w=ϐuDSݡ3 TFMMNX67S諗pY.L4N>508GצvP.TyB ++ G@[OsMuK]rxI{NN˝ְ;Ӱ([6_0{iIn NOhn$Uv"'æc02N<|I=/Aww4CE q[XlQ +כ1!6E!A~'ִ铽Z\ LBR˵9O%k- 這N?IIa:'oY뱸dXwuCTg,r=k1xsz+)w +endstream endobj 589 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 590 0 obj <> endobj 591 0 obj <> endobj 592 0 obj <>/Border[0 0 0]/Rect[123.96 740.6 527.94 751.76]/Subtype/Link/Type/Annot>> endobj 593 0 obj <>/Border[0 0 0]/Rect[123.96 723.62 527.94 734.78]/Subtype/Link/Type/Annot>> endobj 594 0 obj <>/Border[0 0 0]/Rect[123.96 706.64 527.94 717.8]/Subtype/Link/Type/Annot>> endobj 595 0 obj <>/Border[0 0 0]/Rect[123.96 689.6 527.94 700.76]/Subtype/Link/Type/Annot>> endobj 596 0 obj <>/Border[0 0 0]/Rect[123.96 672.62 527.94 683.78]/Subtype/Link/Type/Annot>> endobj 597 0 obj <>/Border[0 0 0]/Rect[123.96 655.58 527.94 666.74]/Subtype/Link/Type/Annot>> endobj 598 0 obj <>/Border[0 0 0]/Rect[123.96 638.6 527.94 649.76]/Subtype/Link/Type/Annot>> endobj 599 0 obj <>/Border[0 0 0]/Rect[123.96 619.76 527.94 632]/Subtype/Link/Type/Annot>> endobj 600 0 obj <>/Border[0 0 0]/Rect[123.96 602.6 527.94 613.76]/Subtype/Link/Type/Annot>> endobj 601 0 obj <>/Border[0 0 0]/Rect[123.96 585.62 527.94 596.78]/Subtype/Link/Type/Annot>> endobj 602 0 obj <>/Border[0 0 0]/Rect[123.96 568.58 527.94 579.74]/Subtype/Link/Type/Annot>> endobj 603 0 obj <>/Border[0 0 0]/Rect[123.96 551.6 527.94 562.76]/Subtype/Link/Type/Annot>> endobj 604 0 obj <>/Border[0 0 0]/Rect[123.96 534.62 527.94 545.78]/Subtype/Link/Type/Annot>> endobj 605 0 obj <>/Border[0 0 0]/Rect[123.96 517.58 527.94 528.74]/Subtype/Link/Type/Annot>> endobj 606 0 obj <>/Border[0 0 0]/Rect[123.96 500.6 527.94 511.76]/Subtype/Link/Type/Annot>> endobj 607 0 obj <>/Border[0 0 0]/Rect[123.96 483.62 527.94 494.78]/Subtype/Link/Type/Annot>> endobj 608 0 obj <>/Border[0 0 0]/Rect[123.96 466.58 527.94 477.74]/Subtype/Link/Type/Annot>> endobj 609 0 obj <>/Border[0 0 0]/Rect[123.96 449.6 527.94 460.76]/Subtype/Link/Type/Annot>> endobj 610 0 obj <>/Border[0 0 0]/Rect[123.96 432.62 527.94 443.78]/Subtype/Link/Type/Annot>> endobj 611 0 obj <>/Border[0 0 0]/Rect[123.96 415.58 527.94 426.74]/Subtype/Link/Type/Annot>> endobj 612 0 obj <>/Border[0 0 0]/Rect[123.96 398.6 527.94 409.76]/Subtype/Link/Type/Annot>> endobj 613 0 obj <>/Border[0 0 0]/Rect[67.26 366.92 527.94 380.6]/Subtype/Link/Type/Annot>> endobj 614 0 obj <>/Border[0 0 0]/Rect[123.96 347.72 527.94 359.96]/Subtype/Link/Type/Annot>> endobj 615 0 obj <>/Border[0 0 0]/Rect[123.96 328.76 527.94 341]/Subtype/Link/Type/Annot>> endobj 616 0 obj <>/Border[0 0 0]/Rect[123.96 309.74 527.94 321.98]/Subtype/Link/Type/Annot>> endobj 617 0 obj <>/Border[0 0 0]/Rect[123.96 290.72 527.94 302.96]/Subtype/Link/Type/Annot>> endobj 618 0 obj <>/Border[0 0 0]/Rect[123.96 273.62 527.94 284.78]/Subtype/Link/Type/Annot>> endobj 619 0 obj <>/Border[0 0 0]/Rect[123.96 256.58 527.94 267.74]/Subtype/Link/Type/Annot>> endobj 620 0 obj <>/Border[0 0 0]/Rect[123.96 239.6 527.94 250.76]/Subtype/Link/Type/Annot>> endobj 621 0 obj <>/Border[0 0 0]/Rect[123.96 222.62 527.94 233.78]/Subtype/Link/Type/Annot>> endobj 622 0 obj <>/Border[0 0 0]/Rect[123.96 205.58 527.94 216.74]/Subtype/Link/Type/Annot>> endobj 623 0 obj <>/Border[0 0 0]/Rect[123.96 188.6 527.94 199.76]/Subtype/Link/Type/Annot>> endobj 624 0 obj <>/Border[0 0 0]/Rect[123.96 171.56 527.94 182.72]/Subtype/Link/Type/Annot>> endobj 625 0 obj <>/Border[0 0 0]/Rect[123.96 154.58 527.94 165.74]/Subtype/Link/Type/Annot>> endobj 626 0 obj <>/Border[0 0 0]/Rect[123.96 137.6 527.94 148.76]/Subtype/Link/Type/Annot>> endobj 627 0 obj <>/Border[0 0 0]/Rect[159.42 120.56 527.94 131.72]/Subtype/Link/Type/Annot>> endobj 628 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 629 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 630 0 obj <>stream +h[[k~_ρiս`zM MyX0jŋlgmgC}9uNuUe[+a骮>97N޼w<~_?]\^F77(bBT뜲۝j~[tj.{(]wA)OA5qÒWA٧\qѦuҕ>#̉wƧ_vtulS_qܦ׌j]k+/QJ:&eqﱧڙ7/~ه/ח;\&ؔRӺR|xq MfwUw\\=.#29z^pѷsjO;v1e}M^\u bWMr8k/=C|k=5uw[oׯ߾o}chV%]TCG6nW7)!bӿ귻QO!7\TT6{c[ڷF(Vu~qj`oUPw1tRYk7.;/cp1BH&u =tJ ̪M7`9ZolYu,qS\i,3v4@2?N4nMS![  ?DD=ǚ*]@يH@Tɠ"it@Rd:($= ^SG(4bJ bY+ _wSQYI\,EhRq; 0TОp:Y$@h$(c.6m~۵:E KRs^|غHΤS ɹk}#qq{z'e) R`υ#pP[f⩯:jRC` i7ۿ;{<4`j y0 ,NfSs=?T.x &&28(ݞKdΖnqוhA2n1?z<40\yZ +E̵x̲93V;O~?zp|f15X)>u6#<\t0D6g3*a/ l܂f$T?Kc:%1{ PJcn՟VxƫBYuD^tM`R⚜1XiFPe,FJ3w t㏆9_ My62> &7ssʼnI2m21.{/'(>VDmfk|ZYX RaY,IA+o ;F ̕3If%I9 +rpW8{~H#_c6 M>/ 0\j_z(WTt`n"*2ʘ+BqǬ4;%ۜj/0!{pyXT6DΩZ`08[0$I,TJ@H`cyJ0fV.uK| +^OiycNe 4`L,Oy)TYgs)¯sa_};ꊡZBǚMtE%B' EЯ +K!Mp*0/ a"t#䱋Y)J9-51+6Fpf1qsg ł1YRD֭`$pȗV0d,. 3(^uٺLŒXMa-J&vj$vf$#AfͼV.ZFw>hmcB[ Zq'9)9L&h +NUjp9*̣EXxU];k_UֹXF>0Zrgc~vb>lQe8h#`3YрˡrC}]WLrY6u` p q>;ѡ{q#kCwΐZԾ-2#A$dE cO6`(ߒs8Dqw +qC-JbB7No"řuKl9JOչxo'Ih~htpaT603,+!:o_L,YX<Ƚ)YieqIuabhAXSU:a[8m`>t@G+ ч8COP1V +cv[|fSgkt"*mJ'Rr#"GEC8oSY_'ié`po 8 +qBsă_ƒk!%DnH xTS: 3gDZE}=k8!N1bK +#``*M\9ps' 9Q*7< X(y3 B&;_RMbAס| ~ LZ{JEj/Z{ $_]s1 D3JPa10hS8C +|=%;J藌{j^m-<_||i'BoB逶?9 e3=]%ʧuf+ёYP^:Ua>y}j׍,+bD&hn?k+ !?N%f#@W>~12Or`b_qRyJkG{$+|kIb{9yO9" dd{]~0X,,gqǧKJ{ﺑͱcp&1nČ6'KSv 1zK^d0t'W^ SR\콖Rh#nvλE^w d Ar5Vd;hz}{ë! +endstream endobj 631 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 632 0 obj <> endobj 633 0 obj <> endobj 634 0 obj <>/Border[0 0 0]/Rect[123.96 740.6 527.94 751.76]/Subtype/Link/Type/Annot>> endobj 635 0 obj <>/Border[0 0 0]/Rect[123.96 723.62 527.94 734.78]/Subtype/Link/Type/Annot>> endobj 636 0 obj <>/Border[0 0 0]/Rect[123.96 706.64 527.94 717.8]/Subtype/Link/Type/Annot>> endobj 637 0 obj <>/Border[0 0 0]/Rect[123.96 689.6 527.94 700.76]/Subtype/Link/Type/Annot>> endobj 638 0 obj <>/Border[0 0 0]/Rect[123.96 672.62 527.94 683.78]/Subtype/Link/Type/Annot>> endobj 639 0 obj <>/Border[0 0 0]/Rect[123.96 655.58 527.94 666.74]/Subtype/Link/Type/Annot>> endobj 640 0 obj <>/Border[0 0 0]/Rect[123.96 638.6 527.94 649.76]/Subtype/Link/Type/Annot>> endobj 641 0 obj <>/Border[0 0 0]/Rect[123.96 621.62 527.94 632.78]/Subtype/Link/Type/Annot>> endobj 642 0 obj <>/Border[0 0 0]/Rect[123.96 604.58 527.94 615.74]/Subtype/Link/Type/Annot>> endobj 643 0 obj <>/Border[0 0 0]/Rect[123.96 587.6 527.94 598.76]/Subtype/Link/Type/Annot>> endobj 644 0 obj <>/Border[0 0 0]/Rect[123.96 570.62 527.94 581.78]/Subtype/Link/Type/Annot>> endobj 645 0 obj <>/Border[0 0 0]/Rect[123.96 553.58 527.94 564.74]/Subtype/Link/Type/Annot>> endobj 646 0 obj <>/Border[0 0 0]/Rect[123.96 536.6 527.94 547.76]/Subtype/Link/Type/Annot>> endobj 647 0 obj <>/Border[0 0 0]/Rect[123.96 519.62 527.94 530.78]/Subtype/Link/Type/Annot>> endobj 648 0 obj <>/Border[0 0 0]/Rect[123.96 500.78 527.94 513.02]/Subtype/Link/Type/Annot>> endobj 649 0 obj <>/Border[0 0 0]/Rect[123.96 483.62 527.94 494.78]/Subtype/Link/Type/Annot>> endobj 650 0 obj <>/Border[0 0 0]/Rect[123.96 466.58 527.94 477.74]/Subtype/Link/Type/Annot>> endobj 651 0 obj <>/Border[0 0 0]/Rect[123.96 449.6 527.94 460.76]/Subtype/Link/Type/Annot>> endobj 652 0 obj <>/Border[0 0 0]/Rect[123.96 432.62 527.94 443.78]/Subtype/Link/Type/Annot>> endobj 653 0 obj <>/Border[0 0 0]/Rect[123.96 415.58 527.94 426.74]/Subtype/Link/Type/Annot>> endobj 654 0 obj <>/Border[0 0 0]/Rect[123.96 398.6 527.94 409.76]/Subtype/Link/Type/Annot>> endobj 655 0 obj <>/Border[0 0 0]/Rect[123.96 369.62 527.94 392.78]/Subtype/Link/Type/Annot>> endobj 656 0 obj <>/Border[0 0 0]/Rect[123.96 340.58 527.94 363.74]/Subtype/Link/Type/Annot>> endobj 657 0 obj <>/Border[0 0 0]/Rect[123.96 323.6 527.94 334.76]/Subtype/Link/Type/Annot>> endobj 658 0 obj <>/Border[0 0 0]/Rect[123.96 306.62 527.94 317.78]/Subtype/Link/Type/Annot>> endobj 659 0 obj <>/Border[0 0 0]/Rect[123.96 289.58 527.94 300.74]/Subtype/Link/Type/Annot>> endobj 660 0 obj <>/Border[0 0 0]/Rect[123.96 272.6 527.94 283.76]/Subtype/Link/Type/Annot>> endobj 661 0 obj <>/Border[0 0 0]/Rect[123.96 255.62 527.94 266.78]/Subtype/Link/Type/Annot>> endobj 662 0 obj <>/Border[0 0 0]/Rect[123.96 238.58 527.94 249.74]/Subtype/Link/Type/Annot>> endobj 663 0 obj <>/Border[0 0 0]/Rect[123.96 221.6 527.94 232.76]/Subtype/Link/Type/Annot>> endobj 664 0 obj <>/Border[0 0 0]/Rect[123.96 204.62 527.94 215.78]/Subtype/Link/Type/Annot>> endobj 665 0 obj <>/Border[0 0 0]/Rect[123.96 187.58 527.94 198.74]/Subtype/Link/Type/Annot>> endobj 666 0 obj <>/Border[0 0 0]/Rect[123.96 170.6 527.94 181.76]/Subtype/Link/Type/Annot>> endobj 667 0 obj <>/Border[0 0 0]/Rect[123.96 153.56 527.94 164.72]/Subtype/Link/Type/Annot>> endobj 668 0 obj <>/Border[0 0 0]/Rect[159.42 136.58 527.94 147.74]/Subtype/Link/Type/Annot>> endobj 669 0 obj <>/Border[0 0 0]/Rect[79.74 88.4 94.74 98.48]/Subtype/Link/Type/Annot>> endobj 670 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 671 0 obj <>stream +h[Y~_яI}b @,#]CXVߧX&{.iڂ&du޿|ݿϷ?|s7W_\zW73a!ф!F7ڤpz6R 7{(gV)4ŝ3T4a?m q5q,zSJi +//f3Rf0sFsNûÆg\޻le[Vjt +eLK;]|U}St6ڌ[͹HeӶR֩_W +cl=euUk0!1$ ؠMip_߿y?\«#t{9p?t= 99=G3\q _7Wo߽|}ƾ~S?&*;M$sQ=t"<8_ Qn@z--ͨ򕱣]F(Q% uyC4j`ufTPwRMXZ켌5 +eL#8fjz4k |UC4`94l1Xx=ĉJ ;p`1$)BIzx4pM#i=Wp3?DĎ{w͘2pd:#h -~h40:")줅ZP!"A)h*ؔ2̯ŲVp2NSQfM\Eh;Z 41X+hM9 [PlPJvy3qc$*޻ml[ӡjqcޫIuX?h9C෈PMqy8xy )&tx?pq3"{D)݌Vj:,;)2, ˥+/mnK>qW.HoMLnL5Tn 4)D-g>Â~*z:mkBCo}rAҁLվL(4JuIU[ rǡٌ2ĉp;$ +"?=we"0Wȉ:.Yz8ovHSx_HK:5ŐҭJǶY֖%jVho?9Cd(l[ZP9YtQ97ÒԨVg=w% x(y68t}-\w@SOӪm^iҍYLy3bI +Lt.,'[[m?Mk!rAP N# <"HeoC nHywyULE`{͇\9'6e(jg?B\|;~6u[ + ygZ8XHR%JM,ɰQSigr,OzNp3O85} ;Ïw+Z(d;2}B#JsoF` ck7OC9Г]\ +Wڡ[IΩȜo_7%sl?bZ*Zb(z,z QmܬC)~ nɅ).X> "r3kf/*ɭZ 8);REВBv?g.V_u~|Y+lc^|CbRA~Fg,6+(݃6YB'0+1RԊL6Ά# +y<ԓX{s% Y?ʝ="bTZ'dBc|wH}(D8ȫ\mU̱0٬xC-y L)ƶ>?|S=E;.O tjcp05튡 *84hF7 .SF ++dlthix'U0kXÚViCMs/v*ߊz(ǺN}ܶc 4H5--JߣM8D1=f=mpI׍ p~9\/3%'㌞0l({ΰ}U +cx!+Y>fr ۩/ZKq$ +W== k%&Vs]{Z֪.w*U?sa-T2?P5Ǎ9p߲p{EM+lnF%߄.OUw MJvf.*W(8c-2O?885ﰗ@LAp[MXZLԍ6ɣ84ESǍ'hT?LJ7&%nniaStԷy_؊ljTX㸻"0Ζ3Y/ԴEa,$1ExJ}y E,q}qw@. kAڧ?G<r](ܔq6 (RUP̪mw5!ŷkR.溠Cɴ&fJOD^{\;Tc2ttTXVf{2&rwT Tlu:86D K/~NT Z/׉)f榵=3J ಓ3F6K]jSΤmsP2ؘ5T|U*TmVn_0*JN5OKz| ++P[`.s~O<s>z+wJ_cWW'%8NWpf{l3@2H>꒮]wnWWD\5MʉW,je;)n&nTW~X 9)䠊×QtVvMn%Ytt1N.!<ܫk Wn|[5ZEQDq+܁/'mɔ)@t +VKa8VBs|/e(s BwiWK`N\OΈ zu(YFͼJ52z:*b4>!quW(9|ڜM$h]^*9CW՛"Xs29,GΑ5LsMDμ'rXI*I{ +ߕyf8ύq=Q~]Y29Z- m(xO=vGpT|f`ꛛ7߾OI +endstream endobj 672 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 673 0 obj <> endobj 674 0 obj <> endobj 675 0 obj <>/Border[0 0 0]/Rect[123.96 740.6 527.94 751.76]/Subtype/Link/Type/Annot>> endobj 676 0 obj <>/Border[0 0 0]/Rect[123.96 721.76 527.94 734]/Subtype/Link/Type/Annot>> endobj 677 0 obj <>/Border[0 0 0]/Rect[123.96 704.6 527.94 715.76]/Subtype/Link/Type/Annot>> endobj 678 0 obj <>/Border[0 0 0]/Rect[123.96 687.62 527.94 698.78]/Subtype/Link/Type/Annot>> endobj 679 0 obj <>/Border[0 0 0]/Rect[123.96 670.58 527.94 681.74]/Subtype/Link/Type/Annot>> endobj 680 0 obj <>/Border[0 0 0]/Rect[123.96 653.6 527.94 664.76]/Subtype/Link/Type/Annot>> endobj 681 0 obj <>/Border[0 0 0]/Rect[123.96 636.62 527.94 647.78]/Subtype/Link/Type/Annot>> endobj 682 0 obj <>/Border[0 0 0]/Rect[123.96 607.58 527.94 630.74]/Subtype/Link/Type/Annot>> endobj 683 0 obj <>/Border[0 0 0]/Rect[123.96 578.6 527.94 601.76]/Subtype/Link/Type/Annot>> endobj 684 0 obj <>/Border[0 0 0]/Rect[123.96 561.62 527.94 572.78]/Subtype/Link/Type/Annot>> endobj 685 0 obj <>/Border[0 0 0]/Rect[123.96 544.58 527.94 555.74]/Subtype/Link/Type/Annot>> endobj 686 0 obj <>/Border[0 0 0]/Rect[123.96 527.6 527.94 538.76]/Subtype/Link/Type/Annot>> endobj 687 0 obj <>/Border[0 0 0]/Rect[123.96 510.62 527.94 521.78]/Subtype/Link/Type/Annot>> endobj 688 0 obj <>/Border[0 0 0]/Rect[123.96 493.58 527.94 504.74]/Subtype/Link/Type/Annot>> endobj 689 0 obj <>/Border[0 0 0]/Rect[123.96 476.6 527.94 487.76]/Subtype/Link/Type/Annot>> endobj 690 0 obj <>/Border[0 0 0]/Rect[123.96 459.62 527.94 470.78]/Subtype/Link/Type/Annot>> endobj 691 0 obj <>/Border[0 0 0]/Rect[123.96 442.58 527.94 453.74]/Subtype/Link/Type/Annot>> endobj 692 0 obj <>/Border[0 0 0]/Rect[123.96 425.6 527.94 436.76]/Subtype/Link/Type/Annot>> endobj 693 0 obj <>/Border[0 0 0]/Rect[123.96 408.62 527.94 419.78]/Subtype/Link/Type/Annot>> endobj 694 0 obj <>/Border[0 0 0]/Rect[123.96 391.58 527.94 402.74]/Subtype/Link/Type/Annot>> endobj 695 0 obj <>/Border[0 0 0]/Rect[123.96 374.6 527.94 385.76]/Subtype/Link/Type/Annot>> endobj 696 0 obj <>/Border[0 0 0]/Rect[123.96 357.62 527.94 368.78]/Subtype/Link/Type/Annot>> endobj 697 0 obj <>/Border[0 0 0]/Rect[123.96 340.58 527.94 351.74]/Subtype/Link/Type/Annot>> endobj 698 0 obj <>/Border[0 0 0]/Rect[67.26 308.9 527.94 322.58]/Subtype/Link/Type/Annot>> endobj 699 0 obj <>/Border[0 0 0]/Rect[67.26 276.92 527.94 290.6]/Subtype/Link/Type/Annot>> endobj 700 0 obj <>/Border[0 0 0]/Rect[123.96 257.72 527.94 269.96]/Subtype/Link/Type/Annot>> endobj 701 0 obj <>/Border[0 0 0]/Rect[123.96 238.76 527.94 251]/Subtype/Link/Type/Annot>> endobj 702 0 obj <>/Border[0 0 0]/Rect[123.96 219.74 527.94 231.98]/Subtype/Link/Type/Annot>> endobj 703 0 obj <>/Border[0 0 0]/Rect[123.96 202.58 527.94 213.74]/Subtype/Link/Type/Annot>> endobj 704 0 obj <>/Border[0 0 0]/Rect[123.96 185.6 527.94 196.76]/Subtype/Link/Type/Annot>> endobj 705 0 obj <>/Border[0 0 0]/Rect[123.96 168.56 527.94 179.72]/Subtype/Link/Type/Annot>> endobj 706 0 obj <>/Border[0 0 0]/Rect[123.96 151.58 527.94 162.74]/Subtype/Link/Type/Annot>> endobj 707 0 obj <>/Border[0 0 0]/Rect[159.42 134.6 527.94 145.76]/Subtype/Link/Type/Annot>> endobj 708 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 709 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 710 0 obj <>stream +h[Y~_яIm$0  y00;X2tIJ >U*=ǮV֑&d߽bx?l67_ٿvͷV7~enu۩A 4L/ ڇ!MvWj=NJV?l8 Savc\15+,a!RN]-a ]Q,xv;_Ú;<&khbݺ }fdݷXS+ 崇kSxeQ/E7XG9_\ g!D3lA1YOƵn/j{ZdĿj +8@`waIZ>LBδ2T\kt7bv }'fq d.#d6sCxo:SoୌWE ]d ;K5ot ;`*4Ha6#}VHr$"ϑ$}IIc(fF⪸$iBr[CbV;cqa-.TǑnw&i9R"9O nJ2(?ΪhB4u/n1Zz)0t[Z0ks `H?F4hZc482 3`H^FuHb55D@ +,X]2+*m,\\>_ynևF5R6dn3ZSRցc\ã9V,DT8-+vն.Ng`!mϰ#xtk M[:!r-O/),Q2wG72hLk#'XD[H$7^l hɳ7f)P1-TRMN(T"*6V)2N*Or*@\rʥkUT0EW6te*K&Ut¦7Z%A 6%cg ش "=~wrE7bWSA_4Ѝ6j&"r!~LQ겾"?+'Z=X /˞F ?X`O'~z'~z⧏OcZǐuO~O\g8 ?uYB 5^jٻv/9ȳ]NR }c X6?T< _.#/~ď`U3_U3B`hRdUZeU<l˫b/cg@EuڲIc;OwKS)'R'?3sSngb;-?5zXbӀzC %Цh.ٌ1q*dXiv;QeLvep3Oy`ݝFخ'vv_9Ti{h,xq٭SLݷ-R28JxIQO5*}KO6)(SobUlrȡ5d(.HHYkQsSl <= GD0Ed0jVa:^(Eg5Y'ֲeG|Cq5wr'K)GQk_ jZ(Q~ޮ>@DL9Uf 2-O0Joä́qX |ԩv5rG c):9&t[9|O LijR W,e"@ $@(2]Ƣ3Hyg"lKMFN6˾Ǐ^ X>=:w'BRxWCUQM(X2|\.*H5NDui8=%$VD8ݕG!5.^EAUx^ZL5$61Y$қ((Vq(i03q2 ݃C3)$VNfmC`. 6TE%?yYZ ]XU :G|C˺4EU(0p&uj `q:YcJN⤂_O ZNjܺ"ŭ{_ '8JN1U8s"&9!>NI>k/{i%YX^kZ%XcLr~~s2y}JUܗ㩛N@ ?*ArP&xmRTE8AOca\%u#QJ{NZw?,F?ܨ9c!`:č;xXᙬ>Y(hP>uQ8}sSg#t\_ϲ]w5#Hĵv|nHTX'\sƒCw +.\P˄#n|F0t,[%/맙lu-|+o .V4ϱ[rݘv圏Q8-;ξQ9Scׇ\k&̚OG,1`r%h|MG!EKQD4r 6ޕ;s|Ѣ_" .}(S3z Z +p=FLСbWw!\OjJeiO\r$Ύ%\'B%˘doi%@R} Dr!Z4d\J׹2tkN ȈKMʅ!Ean92דܾRng>߭l?0 +endstream endobj 711 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 712 0 obj <> endobj 713 0 obj <> endobj 714 0 obj <>/Border[0 0 0]/Rect[123.96 739.76 527.94 752]/Subtype/Link/Type/Annot>> endobj 715 0 obj <>/Border[0 0 0]/Rect[123.96 722.6 527.94 733.76]/Subtype/Link/Type/Annot>> endobj 716 0 obj <>/Border[0 0 0]/Rect[123.96 705.62 527.94 716.78]/Subtype/Link/Type/Annot>> endobj 717 0 obj <>/Border[0 0 0]/Rect[123.96 688.58 527.94 699.74]/Subtype/Link/Type/Annot>> endobj 718 0 obj <>/Border[0 0 0]/Rect[123.96 671.6 527.94 682.76]/Subtype/Link/Type/Annot>> endobj 719 0 obj <>/Border[0 0 0]/Rect[123.96 654.62 527.94 665.78]/Subtype/Link/Type/Annot>> endobj 720 0 obj <>/Border[0 0 0]/Rect[123.96 637.58 527.94 648.74]/Subtype/Link/Type/Annot>> endobj 721 0 obj <>/Border[0 0 0]/Rect[67.26 605.9 527.94 619.58]/Subtype/Link/Type/Annot>> endobj 722 0 obj <>/Border[0 0 0]/Rect[123.96 586.76 527.94 599]/Subtype/Link/Type/Annot>> endobj 723 0 obj <>/Border[0 0 0]/Rect[123.96 567.74 527.94 579.98]/Subtype/Link/Type/Annot>> endobj 724 0 obj <>/Border[0 0 0]/Rect[123.96 548.78 527.94 561.02]/Subtype/Link/Type/Annot>> endobj 725 0 obj <>/Border[0 0 0]/Rect[123.96 531.62 527.94 542.78]/Subtype/Link/Type/Annot>> endobj 726 0 obj <>/Border[0 0 0]/Rect[123.96 514.58 527.94 525.74]/Subtype/Link/Type/Annot>> endobj 727 0 obj <>/Border[0 0 0]/Rect[123.96 497.6 527.94 508.76]/Subtype/Link/Type/Annot>> endobj 728 0 obj <>/Border[0 0 0]/Rect[123.96 480.62 527.94 491.78]/Subtype/Link/Type/Annot>> endobj 729 0 obj <>/Border[0 0 0]/Rect[123.96 463.58 527.94 474.74]/Subtype/Link/Type/Annot>> endobj 730 0 obj <>/Border[0 0 0]/Rect[123.96 444.74 527.94 456.98]/Subtype/Link/Type/Annot>> endobj 731 0 obj <>/Border[0 0 0]/Rect[123.96 425.78 527.94 438.02]/Subtype/Link/Type/Annot>> endobj 732 0 obj <>/Border[0 0 0]/Rect[123.96 408.62 527.94 419.78]/Subtype/Link/Type/Annot>> endobj 733 0 obj <>/Border[0 0 0]/Rect[123.96 391.58 527.94 402.74]/Subtype/Link/Type/Annot>> endobj 734 0 obj <>/Border[0 0 0]/Rect[123.96 374.6 527.94 385.76]/Subtype/Link/Type/Annot>> endobj 735 0 obj <>/Border[0 0 0]/Rect[123.96 357.62 527.94 368.78]/Subtype/Link/Type/Annot>> endobj 736 0 obj <>/Border[0 0 0]/Rect[67.26 325.88 527.94 339.56]/Subtype/Link/Type/Annot>> endobj 737 0 obj <>/Border[0 0 0]/Rect[123.96 306.74 527.94 318.98]/Subtype/Link/Type/Annot>> endobj 738 0 obj <>/Border[0 0 0]/Rect[123.96 287.72 527.94 299.96]/Subtype/Link/Type/Annot>> endobj 739 0 obj <>/Border[0 0 0]/Rect[123.96 268.76 527.94 281]/Subtype/Link/Type/Annot>> endobj 740 0 obj <>/Border[0 0 0]/Rect[123.96 251.6 527.94 262.76]/Subtype/Link/Type/Annot>> endobj 741 0 obj <>/Border[0 0 0]/Rect[123.96 234.62 527.94 245.78]/Subtype/Link/Type/Annot>> endobj 742 0 obj <>/Border[0 0 0]/Rect[123.96 217.58 527.94 228.74]/Subtype/Link/Type/Annot>> endobj 743 0 obj <>/Border[0 0 0]/Rect[123.96 200.6 527.94 211.76]/Subtype/Link/Type/Annot>> endobj 744 0 obj <>/Border[0 0 0]/Rect[123.96 183.56 527.94 194.72]/Subtype/Link/Type/Annot>> endobj 745 0 obj <>/Border[0 0 0]/Rect[123.96 166.58 527.94 177.74]/Subtype/Link/Type/Annot>> endobj 746 0 obj <>/Border[0 0 0]/Rect[123.96 149.6 527.94 160.76]/Subtype/Link/Type/Annot>> endobj 747 0 obj <>/Border[0 0 0]/Rect[159.42 132.56 527.94 143.72]/Subtype/Link/Type/Annot>> endobj 748 0 obj <>/Border[0 0 0]/Rect[79.74 88.4 94.74 98.48]/Subtype/Link/Type/Annot>> endobj 749 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 750 0 obj <>stream +h[Yo~_de#@d}XaH>Mr8谤i>>VU___fs.xyw竳?Mt~ڭv;ىnw +,؎?asN3vVb+zHuù V70vݟWZ2mgQ[f?ιP[4<^ +ze"|Ǥ +!tL|ruJ=rd+`H0gZQ[Rn C]Z[ =]t] d9q4-!o-sհf=]F5d:tw>0;a:aٻ/?]~ޝ}87 ]w…)_Yh7]UθpIdJB"(|2iIa& iHRUu1-8y58Y&ڕ$`dq 4i+7hL8 [ćJBŴ6Tpb$8뎦~*_~8L^XXWswi9<4k=Nʹ)*hm4a^N|Xpi%ةdPC6-"ttdN7nJi)TaZ aXuTNw+ %C  O/iZ]CMaP:R0|za~zcJUj}8F_^rx)K)C4xK ^3n܏GczW W'eb3:+4l0^S ESh3Iق;BXNpm0' P;_)C,KFN)j][1ԸxF⻍hL(k!j o9]cR>H##K e x@D.}&;ݩ'xk+hEGCpDS cc'Iʜ^έ \!R:Xs;pBϸ3 М +kـXe=W-QYo@hME}VSelU +3&9iF 嶂4Y3iLmf!qoS#O'.C* fj9Vjt< +$6hb_4E3s `10ۊ\4FǫC`J,~t[~eZeBS~(!̎*ibw9$s{Q䕽' ŚXxLS:"pGt*7iWڄ.%ԛ9!ɋDdTn=pz23jN˜^~ESk{i w)/ّ3\pLFDfrLE#+Cܤ<83xB]1Ѓ͌X&o?A4f S)~27v* ]b.l,'@bu s4f|(ٔ;35wGYY4,?ƏeQ12a +02Ii21jG~>6>K4n2(ґS鄴YK0ˊ=[}Doڴ־:zaEd5@#EGrOb5n}. pUVk+9 eh57˩G}ಆ?{C7.++Rsz[6@tX EOOR 73-+Q<Xޮenևww! tQ h+ȴe +*:#"Hu6dfP5:jQ3{0wQ.⪜⅚킻ҥU*Q<,p M& R/pAيaKDs:gDHd<;d|#fH){Ps3Q$FQXSPt?cEeΟR*[J3P4|*J(a%Ez!8x'"!S)rD#<(tC_}&f2`JtJ?'W6z4}"=jP#"Y̝Uyr +&8YRիU_}%Ajgm4}%7v[u]>^ +bʴtI^%I,E4[O4mоVAe[LS}b3:xl/FlYF=M ͚Z;asE9iɟ,M7:YԳ<^<)GIgi ZS3YI+ճ֓ӓ;^CXፓs:P* |d"B%S*BR tUJ >Tg=65 !jbWq~̊²&e@ž<h Q?lIf5/`ԊkBNx@% EX^$X6oرyKUF1CywW`* +endstream endobj 751 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 752 0 obj <> endobj 753 0 obj <> endobj 754 0 obj <>/Border[0 0 0]/Rect[123.96 740.6 527.94 751.76]/Subtype/Link/Type/Annot>> endobj 755 0 obj <>/Border[0 0 0]/Rect[123.96 723.62 527.94 734.78]/Subtype/Link/Type/Annot>> endobj 756 0 obj <>/Border[0 0 0]/Rect[123.96 706.64 527.94 717.8]/Subtype/Link/Type/Annot>> endobj 757 0 obj <>/Border[0 0 0]/Rect[123.96 689.6 527.94 700.76]/Subtype/Link/Type/Annot>> endobj 758 0 obj <>/Border[0 0 0]/Rect[123.96 672.62 527.94 683.78]/Subtype/Link/Type/Annot>> endobj 759 0 obj <>/Border[0 0 0]/Rect[123.96 655.58 527.94 666.74]/Subtype/Link/Type/Annot>> endobj 760 0 obj <>/Border[0 0 0]/Rect[123.96 638.6 527.94 649.76]/Subtype/Link/Type/Annot>> endobj 761 0 obj <>/Border[0 0 0]/Rect[123.96 621.62 527.94 632.78]/Subtype/Link/Type/Annot>> endobj 762 0 obj <>/Border[0 0 0]/Rect[123.96 602.78 527.94 615.02]/Subtype/Link/Type/Annot>> endobj 763 0 obj <>/Border[0 0 0]/Rect[123.96 583.76 527.94 596]/Subtype/Link/Type/Annot>> endobj 764 0 obj <>/Border[0 0 0]/Rect[123.96 564.74 527.94 576.98]/Subtype/Link/Type/Annot>> endobj 765 0 obj <>/Border[0 0 0]/Rect[123.96 547.58 527.94 558.74]/Subtype/Link/Type/Annot>> endobj 766 0 obj <>/Border[0 0 0]/Rect[123.96 530.6 527.94 541.76]/Subtype/Link/Type/Annot>> endobj 767 0 obj <>/Border[0 0 0]/Rect[123.96 513.62 527.94 524.78]/Subtype/Link/Type/Annot>> endobj 768 0 obj <>/Border[0 0 0]/Rect[123.96 496.58 527.94 507.74]/Subtype/Link/Type/Annot>> endobj 769 0 obj <>/Border[0 0 0]/Rect[123.96 479.6 527.94 490.76]/Subtype/Link/Type/Annot>> endobj 770 0 obj <>/Border[0 0 0]/Rect[123.96 462.62 527.94 473.78]/Subtype/Link/Type/Annot>> endobj 771 0 obj <>/Border[0 0 0]/Rect[123.96 445.58 527.94 456.74]/Subtype/Link/Type/Annot>> endobj 772 0 obj <>/Border[0 0 0]/Rect[123.96 428.6 527.94 439.76]/Subtype/Link/Type/Annot>> endobj 773 0 obj <>/Border[0 0 0]/Rect[123.96 411.62 527.94 422.78]/Subtype/Link/Type/Annot>> endobj 774 0 obj <>/Border[0 0 0]/Rect[123.96 394.58 527.94 405.74]/Subtype/Link/Type/Annot>> endobj 775 0 obj <>/Border[0 0 0]/Rect[123.96 377.6 527.94 388.76]/Subtype/Link/Type/Annot>> endobj 776 0 obj <>/Border[0 0 0]/Rect[123.96 360.62 527.94 371.78]/Subtype/Link/Type/Annot>> endobj 777 0 obj <>/Border[0 0 0]/Rect[123.96 343.58 527.94 354.74]/Subtype/Link/Type/Annot>> endobj 778 0 obj <>/Border[0 0 0]/Rect[123.96 326.6 527.94 337.76]/Subtype/Link/Type/Annot>> endobj 779 0 obj <>/Border[0 0 0]/Rect[123.96 309.62 527.94 320.78]/Subtype/Link/Type/Annot>> endobj 780 0 obj <>/Border[0 0 0]/Rect[123.96 292.58 527.94 303.74]/Subtype/Link/Type/Annot>> endobj 781 0 obj <>/Border[0 0 0]/Rect[123.96 275.6 527.94 286.76]/Subtype/Link/Type/Annot>> endobj 782 0 obj <>/Border[0 0 0]/Rect[123.96 258.62 527.94 269.78]/Subtype/Link/Type/Annot>> endobj 783 0 obj <>/Border[0 0 0]/Rect[123.96 241.58 527.94 252.74]/Subtype/Link/Type/Annot>> endobj 784 0 obj <>/Border[0 0 0]/Rect[123.96 224.6 527.94 235.76]/Subtype/Link/Type/Annot>> endobj 785 0 obj <>/Border[0 0 0]/Rect[123.96 207.62 527.94 218.78]/Subtype/Link/Type/Annot>> endobj 786 0 obj <>/Border[0 0 0]/Rect[67.26 175.88 527.94 189.56]/Subtype/Link/Type/Annot>> endobj 787 0 obj <>/Border[0 0 0]/Rect[123.96 156.74 527.94 168.98]/Subtype/Link/Type/Annot>> endobj 788 0 obj <>/Border[0 0 0]/Rect[123.96 137.72 527.94 149.96]/Subtype/Link/Type/Annot>> endobj 789 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 790 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 791 0 obj <>stream +h[Y~_ IJ 8Fv&KTl1v]YVd_7Slﻛ77߾ZfUI:KRX+M}ORn7R?rUĔ̯KV_KZ'>~m§=En<`<`w!Xa" [pzeYD~5šPN{?۟W+\.& R݇Gﭗ"{Mu\[^6*9)^Ӻ *Xu3 J8Iv:Zv oݧWw_7SbTq]k&"%'tn~޼;m߼Gɪ6H}CE6NWu) xۿoWk-K8mr9NHY!_؀pz\r\1MN+eiJ LKOmlIli6UA8`:J7 +|NkerJxo3XA8Tü= ǭeaH:$ԇvmIBmSP9sWB?gXGx?y92oi] $$nyGa!_Ui~G*BhR Gu1$| _GrRZPP0`"P3򜰻  R'ѸStJ0+/}^z商G룢wua,EC!ae/ڪ +lCNzo*o͈O^XE~ŵt2ms.o H5(RWӶrژ–^Ԧ\䪜!ҩEk:oƩriɃB`L?0a>\@`F=JDTRj eA)U6,1u(i@ߞE"lX. R3y rIYR) sKeeyݸJCy}V)pҫ[bߗלŭ'uYYd%Q`\ ۬0t +͌j['Tp5M;z=^=[S5ey2*"*?/ + O^9N/@ +39@XX^3 \Υ|p_CvNJV:'͜H &&\Hu_pOw4m'x52J *MYط7Mva3Hq{v`g+Bn`gay^a'YJvDsU!zalGu1RfJsYjVL.MRHP<2AА WLCqq z"%B#ggK`Tyk=\Ư\VFvJ$N#T1A)tJc5箯uTcEƓlX~gXTnO2ל9Uf+Cr1m{j졇l 6ur8B )xa€_ǔ#33>YD~P>-K| h!^@@-ј_6с9a[ |]n~+,}:Vng4Nd4kwFr:V/0%>RV1.O=jyBkFkq +`)'Xb[[gqXBgV2w6jNLn0\U0^U?]{/L< &]?P:f8zNPTco"\X5%#ۉ͓x8d!e%}Ry '-oeֹN(;D,kZ<+V Z~h:ƾ~!t>.@bl's'zOÇ@ӱB/Gz-#M%(%l1Grx~3M{ua|"rLC>Z%)mx'{jk<:7^(-ȑAKoqS=Ypce%O$! )k8KQx8`u&4*)FFѩ2j2sɠaLu3S#K7FYGU(|ACxRO$cVTlV~1dCaed2i $G6{r h 6"G7͏ۋaT,mMn;6&BQqFnʌs K'v;(J)FxtYUX&-F,b)z!-SߴnEc-VXUnbOxuuÀş +&,=Z[yvظR4&Y rC;/AE-UV̺ͨ]d:tծxTS2c)}ٲh9#E8sZk.l&i=G^ǪǪ6hgXe=蚀YNs֘R\CTQ()M(i,Qm|1ꅏ1?PZ5 +!Uˬ`~r? Zb`7&$2_еdվc.hch*9ۈ3 hN xdۃY3 +q_o_as(׬}8{:T^mI5B|UZO?< CazFF}8g1٫f=)ҬhqGYeؿ"#ZVx +8:q_W#M +qxJ|2g~fv^&6 -Zɏr~` +k*$+f;Z%k ld%QY7{Vv..)jr.T 6J6 :lK?,1g\PWSLj(RkVjkzͲkX {ҍGt;]lDH:׮n릮n +C\m{EB3<܀ 2h`T0X#vċ[3rzlpv^/b- +endstream endobj 792 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 793 0 obj <> endobj 794 0 obj <> endobj 795 0 obj <>/Border[0 0 0]/Rect[123.96 739.76 527.94 752]/Subtype/Link/Type/Annot>> endobj 796 0 obj <>/Border[0 0 0]/Rect[123.96 722.6 527.94 733.76]/Subtype/Link/Type/Annot>> endobj 797 0 obj <>/Border[0 0 0]/Rect[123.96 705.62 527.94 716.78]/Subtype/Link/Type/Annot>> endobj 798 0 obj <>/Border[0 0 0]/Rect[123.96 688.58 527.94 699.74]/Subtype/Link/Type/Annot>> endobj 799 0 obj <>/Border[0 0 0]/Rect[123.96 671.6 527.94 682.76]/Subtype/Link/Type/Annot>> endobj 800 0 obj <>/Border[0 0 0]/Rect[123.96 652.76 527.94 665]/Subtype/Link/Type/Annot>> endobj 801 0 obj <>/Border[0 0 0]/Rect[123.96 633.74 527.94 645.98]/Subtype/Link/Type/Annot>> endobj 802 0 obj <>/Border[0 0 0]/Rect[123.96 614.78 527.94 627.02]/Subtype/Link/Type/Annot>> endobj 803 0 obj <>/Border[0 0 0]/Rect[123.96 597.62 527.94 608.78]/Subtype/Link/Type/Annot>> endobj 804 0 obj <>/Border[0 0 0]/Rect[123.96 580.58 527.94 591.74]/Subtype/Link/Type/Annot>> endobj 805 0 obj <>/Border[0 0 0]/Rect[123.96 563.6 527.94 574.76]/Subtype/Link/Type/Annot>> endobj 806 0 obj <>/Border[0 0 0]/Rect[123.96 546.62 527.94 557.78]/Subtype/Link/Type/Annot>> endobj 807 0 obj <>/Border[0 0 0]/Rect[123.96 529.58 527.94 540.74]/Subtype/Link/Type/Annot>> endobj 808 0 obj <>/Border[0 0 0]/Rect[123.96 512.6 527.94 523.76]/Subtype/Link/Type/Annot>> endobj 809 0 obj <>/Border[0 0 0]/Rect[123.96 495.62 527.94 506.78]/Subtype/Link/Type/Annot>> endobj 810 0 obj <>/Border[0 0 0]/Rect[123.96 478.58 527.94 489.74]/Subtype/Link/Type/Annot>> endobj 811 0 obj <>/Border[0 0 0]/Rect[123.96 461.6 527.94 472.76]/Subtype/Link/Type/Annot>> endobj 812 0 obj <>/Border[0 0 0]/Rect[67.26 429.92 527.94 443.6]/Subtype/Link/Type/Annot>> endobj 813 0 obj <>/Border[0 0 0]/Rect[123.96 410.78 527.94 423.02]/Subtype/Link/Type/Annot>> endobj 814 0 obj <>/Border[0 0 0]/Rect[123.96 391.76 527.94 404]/Subtype/Link/Type/Annot>> endobj 815 0 obj <>/Border[0 0 0]/Rect[123.96 372.74 527.94 384.98]/Subtype/Link/Type/Annot>> endobj 816 0 obj <>/Border[0 0 0]/Rect[123.96 353.72 527.94 365.96]/Subtype/Link/Type/Annot>> endobj 817 0 obj <>/Border[0 0 0]/Rect[123.96 336.62 527.94 347.78]/Subtype/Link/Type/Annot>> endobj 818 0 obj <>/Border[0 0 0]/Rect[123.96 319.58 527.94 330.74]/Subtype/Link/Type/Annot>> endobj 819 0 obj <>/Border[0 0 0]/Rect[123.96 302.6 527.94 313.76]/Subtype/Link/Type/Annot>> endobj 820 0 obj <>/Border[0 0 0]/Rect[123.96 285.62 527.94 296.78]/Subtype/Link/Type/Annot>> endobj 821 0 obj <>/Border[0 0 0]/Rect[123.96 268.58 527.94 279.74]/Subtype/Link/Type/Annot>> endobj 822 0 obj <>/Border[0 0 0]/Rect[123.96 251.6 527.94 262.76]/Subtype/Link/Type/Annot>> endobj 823 0 obj <>/Border[0 0 0]/Rect[123.96 234.62 527.94 245.78]/Subtype/Link/Type/Annot>> endobj 824 0 obj <>/Border[0 0 0]/Rect[123.96 217.58 527.94 228.74]/Subtype/Link/Type/Annot>> endobj 825 0 obj <>/Border[0 0 0]/Rect[159.42 200.6 201.9 211.76]/Subtype/Link/Type/Annot>> endobj 826 0 obj <>/Border[0 0 0]/Rect[159.42 183.56 201.9 194.72]/Subtype/Link/Type/Annot>> endobj 827 0 obj <>/Border[0 0 0]/Rect[123.96 166.58 527.94 177.74]/Subtype/Link/Type/Annot>> endobj 828 0 obj <>/Border[0 0 0]/Rect[123.96 149.6 527.94 160.76]/Subtype/Link/Type/Annot>> endobj 829 0 obj <>/Border[0 0 0]/Rect[159.42 132.56 527.94 143.72]/Subtype/Link/Type/Annot>> endobj 830 0 obj <>/Border[0 0 0]/Rect[79.74 88.4 94.74 98.48]/Subtype/Link/Type/Annot>> endobj 831 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 832 0 obj <>stream +h[Yo~_$0 k,Mai"-vv6ȿOUfӚ: Cf7&k\\7ǫ?}nxfu񧿩/.WQ*5 [53Ujr~tv]g5)[h#ބ0a^n|sY1Sfk[__r+tG&شc JVڨfl6T r:/KYۮ].ۮUJ~^s>=gVaZ_mFJˮD׆&6@2QU:uxi76?!72Nu@ Oe|D6P-RFf--zO]]q͛Ow>p]x5/H䶋e;|@d_5V˭Ef t C5w66֭VkmZh<_$]lv9 +N<{NvJ 6!w4AΥ9 ͤ}!6Pu|>Cm[+zMq[+oU3_4N5۵Һu LxCnxrGNҹ݊xj$^*F:[.Fa>Ev:C4`ncg%8la-MlDCa!O.5,EJW<۴Ir[WKc:"=rS'K;ܸ`4A/7xO: [ SZmժ艰"}0҄rm! +hW=FXK˴ȓ;n:'O yy8[hkS2je]%oDL1-Zx7QIGm;n㶨:CzhbݲAJ;x~ c 6sWV7nY&}ϟ(Ly@%#I,z;0MY8J+ •wɼnslG>JsBziP 2R ;%P+iI$Pʘ@ڗb-Hg}ƈbEwPԵlMOgriG.i]`N?Tu>7n2}2 ,nqcϟJn-nL7;2SvEV˔$'M!߲2YbhOK2Ri;2%eQ䋤=3}{~wŤYtVbqf3L(cݩA; u'QkBvEw BFTD(TiT&Ԁ'ʕp> Y7'w~h Xmw3fY[LWx +<]oӕ;<A KӍ:o]v\,"~2cI|vblc+glal򼾗@ҵ$e2g;y,&NyoAlh.C>ٳA~@,N!V9s'B,J8v6)d7!Ox +NRF| f ȂCq5ԫ^6RW)RjQx*^x} j{͜ep%at-}\/\MKx:^eW_WO^ma6dsz꺠?ҁ~NAT("* +TV$Ѐ2|ea#a ㆐!Lb0"yJ. L8Im{9fUwPi{|ÂiP*n 泮0}#]%R`f ̜ҵ^xE.dtAAR]5ƌ̤$ ݉2yxs\;WrpM +# R}?j ~/ +'6UJ&mAZ'VuGY \[Jz@e[,)̬֮c(*})$Jы z'j؋D-"#~R8X"qΉֺ~h&9#' hmjؗu*Tv MMdXx3Wp7Jΰ4STnR?QNmF*O rܨ4b;Y<kf ;Kg3l9 +/?i|慏 7\% c)Tzrv3eZ3DR\’y8)C@K@Y>$"kzHDNhf +oˈfUU2[`L3 KCϨkvD& WStVXDg.HvV%j]LN>gVYU܉v'ړK2 Aw?2GȼrqCrHu9YǴapYB ً#ͼܖXE5y_kip,Yts${H29*_c2 .|rT8z40_AU&IRzIs䅀WȵT&I'tr8' y+Y r~ +G}94 37dV^o\R/􍢻$r9RjLΥ u9)Us9j*({g͂^z 4le{݋_/BQDT\IA~FK;|>! `vcl5dGְ$ _[%pw. +gA-`C\LQvbލ7U:1tuEɾdz'Ǐ9}.~U"RLQ,ޓiT"w{raORA;H}5(F]dUUPf~WMa6:-W!Jm賩kuD^eZV'Luy|RJ89*5:YƙINͲm&mG80Z;3rŅGe/!n9-tb4IP灚ӗww?Y_ +endstream endobj 833 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 834 0 obj <> endobj 835 0 obj <> endobj 836 0 obj <>/Border[0 0 0]/Rect[123.96 740.6 527.94 751.76]/Subtype/Link/Type/Annot>> endobj 837 0 obj <>/Border[0 0 0]/Rect[123.96 723.62 527.94 734.78]/Subtype/Link/Type/Annot>> endobj 838 0 obj <>/Border[0 0 0]/Rect[123.96 706.64 527.94 717.8]/Subtype/Link/Type/Annot>> endobj 839 0 obj <>/Border[0 0 0]/Rect[123.96 689.6 527.94 700.76]/Subtype/Link/Type/Annot>> endobj 840 0 obj <>/Border[0 0 0]/Rect[123.96 672.62 527.94 683.78]/Subtype/Link/Type/Annot>> endobj 841 0 obj <>/Border[0 0 0]/Rect[123.96 655.58 527.94 666.74]/Subtype/Link/Type/Annot>> endobj 842 0 obj <>/Border[0 0 0]/Rect[123.96 636.74 527.94 648.98]/Subtype/Link/Type/Annot>> endobj 843 0 obj <>/Border[0 0 0]/Rect[123.96 617.78 527.94 630.02]/Subtype/Link/Type/Annot>> endobj 844 0 obj <>/Border[0 0 0]/Rect[123.96 598.76 527.94 611]/Subtype/Link/Type/Annot>> endobj 845 0 obj <>/Border[0 0 0]/Rect[123.96 581.6 527.94 592.76]/Subtype/Link/Type/Annot>> endobj 846 0 obj <>/Border[0 0 0]/Rect[123.96 564.62 527.94 575.78]/Subtype/Link/Type/Annot>> endobj 847 0 obj <>/Border[0 0 0]/Rect[123.96 547.58 527.94 558.74]/Subtype/Link/Type/Annot>> endobj 848 0 obj <>/Border[0 0 0]/Rect[123.96 530.6 527.94 541.76]/Subtype/Link/Type/Annot>> endobj 849 0 obj <>/Border[0 0 0]/Rect[123.96 513.62 527.94 524.78]/Subtype/Link/Type/Annot>> endobj 850 0 obj <>/Border[0 0 0]/Rect[123.96 496.58 527.94 507.74]/Subtype/Link/Type/Annot>> endobj 851 0 obj <>/Border[0 0 0]/Rect[123.96 479.6 527.94 490.76]/Subtype/Link/Type/Annot>> endobj 852 0 obj <>/Border[0 0 0]/Rect[123.96 462.62 527.94 473.78]/Subtype/Link/Type/Annot>> endobj 853 0 obj <>/Border[0 0 0]/Rect[123.96 445.58 527.94 456.74]/Subtype/Link/Type/Annot>> endobj 854 0 obj <>/Border[0 0 0]/Rect[123.96 428.6 527.94 439.76]/Subtype/Link/Type/Annot>> endobj 855 0 obj <>/Border[0 0 0]/Rect[123.96 411.62 527.94 422.78]/Subtype/Link/Type/Annot>> endobj 856 0 obj <>/Border[0 0 0]/Rect[123.96 394.58 527.94 405.74]/Subtype/Link/Type/Annot>> endobj 857 0 obj <>/Border[0 0 0]/Rect[67.26 362.9 527.94 376.58]/Subtype/Link/Type/Annot>> endobj 858 0 obj <>/Border[0 0 0]/Rect[123.96 343.76 527.94 356]/Subtype/Link/Type/Annot>> endobj 859 0 obj <>/Border[0 0 0]/Rect[123.96 324.74 527.94 336.98]/Subtype/Link/Type/Annot>> endobj 860 0 obj <>/Border[0 0 0]/Rect[123.96 305.72 527.94 317.96]/Subtype/Link/Type/Annot>> endobj 861 0 obj <>/Border[0 0 0]/Rect[123.96 286.76 527.94 299]/Subtype/Link/Type/Annot>> endobj 862 0 obj <>/Border[0 0 0]/Rect[123.96 267.74 527.94 279.98]/Subtype/Link/Type/Annot>> endobj 863 0 obj <>/Border[0 0 0]/Rect[123.96 250.58 527.94 261.74]/Subtype/Link/Type/Annot>> endobj 864 0 obj <>/Border[0 0 0]/Rect[123.96 233.6 527.94 244.76]/Subtype/Link/Type/Annot>> endobj 865 0 obj <>/Border[0 0 0]/Rect[123.96 216.62 527.94 227.78]/Subtype/Link/Type/Annot>> endobj 866 0 obj <>/Border[0 0 0]/Rect[123.96 199.58 527.94 210.74]/Subtype/Link/Type/Annot>> endobj 867 0 obj <>/Border[0 0 0]/Rect[123.96 182.6 527.94 193.76]/Subtype/Link/Type/Annot>> endobj 868 0 obj <>/Border[0 0 0]/Rect[123.96 165.56 527.94 176.72]/Subtype/Link/Type/Annot>> endobj 869 0 obj <>/Border[0 0 0]/Rect[123.96 148.58 527.94 159.74]/Subtype/Link/Type/Annot>> endobj 870 0 obj <>/Border[0 0 0]/Rect[159.42 131.6 527.94 142.76]/Subtype/Link/Type/Annot>> endobj 871 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 872 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 873 0 obj <>stream +h[Yo~_ռI@k@6EFi@A}"}hF#Ke9߿/r՛ÇWo ?]ojTsyKMR}hoRZۙk~ۮSt/}T VE,uT-,]Ⲋ^%tk+}=miʈOWC?.26y3>oB<'3OvpJZզx?bO'O_ȳv//wN7~TlZmRJMkCJywMzYoC'Ww{gЃs] \5X+ZV4 + u0Flk]v7^A,j,~;KϿyHظZ쥄P׷߯_}^;{ߌaMm"aٸ\դ$S^u׺dBps+eCeCe*礼צ0}LmVYkm5u7. uy ya ,w48m*h7XRm[<2Uz51 NVa֭G24Ca\JY.(*Z|9j -<*|:[#~O5k6tS4ob0ZPH?C$۷GxE akNhSju1P *.wގ15QREò[*CenlҤtr T S _/ebƥJkXI! ˧  Fu^U%_+3jFTZj\ÞJضg,OjhMJ}2TVUq ĕQԩj^2C: w{CD-fお3:6qj|בk7rKSRecCYM?ͯcjQdǣoMιT hof=/Vu&KJ cp/6L2 6׫tKm#Q Q< CET~FF\ ` ֘Þm4Q^8sґ ho=`U,&܆u~||{: Ps*ݗ%O,Pd@ +JCSS6&[s*-͢-5sbgO[`ӷ)e$۴*d=?,BgAQ|bF7tnCsMZ;wWsѷL-lMq'< ѵ(Sdf~_5?{t85y WqԹύ:woԹRPH^P'ϙDԩ:B~(q.Κv·$iLB^p?[+l3B +!v۬2BbzҹyV|v(:٣gIX,/f!(|'GQ< +pDQ@d2 +D\E煉cqF*FB˯⸇>ȷM}րJot6'zÖ +| +/dg)tOY,s2Ӏ+v}3mtrN37LJV-.K +S_p[rѤ.P4sl=mw9T5K]je.'29ToFɀYXQs_K`]hѪR([–fl: -]rie_ISԫ;I%:R'&M( sVNU4G8tH)$ +(Bi(6[Ұi?{bjX54-H^~:@o 1Ebʞ(c/]K4;h1\!Ps&l!BV`%sk?H%>͜ݪ"|tS)0Y`ؒn +bt-L.'0̿*"S_araHY-\}DdXgSI5L!};?j*b܎ݯ5r3Wch`s|74W}U΅;-SC4kI'Te?ʬcHn[EQB%jGX'50QaLQIT;*"PKZ7ū2Z9,`ei&wu 9YoiBz 3<–Cg?{,Ӣ&;k7Vw6_xfXT|} ?Zdi9L&uIs[j-'ʧsxz6rN֛msLV1vO`Eqp7נ5T劳!*In√7Jnf؅-/JFWjc%Xr 0Cb +endstream endobj 874 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 875 0 obj <> endobj 876 0 obj <> endobj 877 0 obj <>/Border[0 0 0]/Rect[123.96 740.6 527.94 751.76]/Subtype/Link/Type/Annot>> endobj 878 0 obj <>/Border[0 0 0]/Rect[123.96 723.62 527.94 734.78]/Subtype/Link/Type/Annot>> endobj 879 0 obj <>/Border[0 0 0]/Rect[123.96 706.64 527.94 717.8]/Subtype/Link/Type/Annot>> endobj 880 0 obj <>/Border[0 0 0]/Rect[123.96 689.6 527.94 700.76]/Subtype/Link/Type/Annot>> endobj 881 0 obj <>/Border[0 0 0]/Rect[123.96 672.62 527.94 683.78]/Subtype/Link/Type/Annot>> endobj 882 0 obj <>/Border[0 0 0]/Rect[123.96 655.58 527.94 666.74]/Subtype/Link/Type/Annot>> endobj 883 0 obj <>/Border[0 0 0]/Rect[123.96 638.6 527.94 649.76]/Subtype/Link/Type/Annot>> endobj 884 0 obj <>/Border[0 0 0]/Rect[123.96 621.62 527.94 632.78]/Subtype/Link/Type/Annot>> endobj 885 0 obj <>/Border[0 0 0]/Rect[123.96 604.58 527.94 615.74]/Subtype/Link/Type/Annot>> endobj 886 0 obj <>/Border[0 0 0]/Rect[123.96 587.6 527.94 598.76]/Subtype/Link/Type/Annot>> endobj 887 0 obj <>/Border[0 0 0]/Rect[123.96 570.62 527.94 581.78]/Subtype/Link/Type/Annot>> endobj 888 0 obj <>/Border[0 0 0]/Rect[123.96 553.58 527.94 564.74]/Subtype/Link/Type/Annot>> endobj 889 0 obj <>/Border[0 0 0]/Rect[123.96 536.6 527.94 547.76]/Subtype/Link/Type/Annot>> endobj 890 0 obj <>/Border[0 0 0]/Rect[123.96 517.76 527.94 530]/Subtype/Link/Type/Annot>> endobj 891 0 obj <>/Border[0 0 0]/Rect[123.96 498.74 527.94 510.98]/Subtype/Link/Type/Annot>> endobj 892 0 obj <>/Border[0 0 0]/Rect[123.96 479.78 527.94 492.02]/Subtype/Link/Type/Annot>> endobj 893 0 obj <>/Border[0 0 0]/Rect[123.96 462.62 527.94 473.78]/Subtype/Link/Type/Annot>> endobj 894 0 obj <>/Border[0 0 0]/Rect[123.96 445.58 527.94 456.74]/Subtype/Link/Type/Annot>> endobj 895 0 obj <>/Border[0 0 0]/Rect[123.96 428.6 527.94 439.76]/Subtype/Link/Type/Annot>> endobj 896 0 obj <>/Border[0 0 0]/Rect[123.96 411.62 527.94 422.78]/Subtype/Link/Type/Annot>> endobj 897 0 obj <>/Border[0 0 0]/Rect[123.96 394.58 527.94 405.74]/Subtype/Link/Type/Annot>> endobj 898 0 obj <>/Border[0 0 0]/Rect[123.96 377.6 527.94 388.76]/Subtype/Link/Type/Annot>> endobj 899 0 obj <>/Border[0 0 0]/Rect[123.96 360.62 527.94 371.78]/Subtype/Link/Type/Annot>> endobj 900 0 obj <>/Border[0 0 0]/Rect[123.96 343.58 527.94 354.74]/Subtype/Link/Type/Annot>> endobj 901 0 obj <>/Border[0 0 0]/Rect[123.96 326.6 527.94 337.76]/Subtype/Link/Type/Annot>> endobj 902 0 obj <>/Border[0 0 0]/Rect[123.96 309.62 527.94 320.78]/Subtype/Link/Type/Annot>> endobj 903 0 obj <>/Border[0 0 0]/Rect[123.96 292.58 527.94 303.74]/Subtype/Link/Type/Annot>> endobj 904 0 obj <>/Border[0 0 0]/Rect[123.96 275.6 527.94 286.76]/Subtype/Link/Type/Annot>> endobj 905 0 obj <>/Border[0 0 0]/Rect[123.96 258.62 527.94 269.78]/Subtype/Link/Type/Annot>> endobj 906 0 obj <>/Border[0 0 0]/Rect[123.96 241.58 527.94 252.74]/Subtype/Link/Type/Annot>> endobj 907 0 obj <>/Border[0 0 0]/Rect[123.96 224.6 527.94 235.76]/Subtype/Link/Type/Annot>> endobj 908 0 obj <>/Border[0 0 0]/Rect[67.26 192.92 527.94 206.6]/Subtype/Link/Type/Annot>> endobj 909 0 obj <>/Border[0 0 0]/Rect[123.96 173.72 527.94 185.96]/Subtype/Link/Type/Annot>> endobj 910 0 obj <>/Border[0 0 0]/Rect[123.96 154.76 527.94 167]/Subtype/Link/Type/Annot>> endobj 911 0 obj <>/Border[0 0 0]/Rect[123.96 135.74 527.94 147.98]/Subtype/Link/Type/Annot>> endobj 912 0 obj <>/Border[0 0 0]/Rect[79.74 88.4 94.74 98.48]/Subtype/Link/Type/Annot>> endobj 913 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 914 0 obj <>stream +h[Y$~_QφZ- 05{Xk{GDFdf}fٵ<+3/Ozu_o_ln7=q z}1A#ф!F7ڤpv7R (gN)inPҬ‡?nqft>&x4ǹpRJ۽T/o7"etFcsbijvԘͤlVfNyYΕ]naYȲl]ah3%N}0n[8Vij ǍaLCcrI AQ}p݋`O0r(2p[G;srzُfr __\7?~Ӈׇ}cG&Axz#/"r0j (=Ქ\;:Xv6Bɍ*i GtNvvgFgs&@,Keݴ5 +eN38fjF4k +>! i(c)J?oF#,^:{7QOO]ףrx1vj`+xh=b܊$G߅1G>`<"C.ܓܼ'It3Z]dʰ-,ή4ܗ|\NZMLL5U (D-|+FmǒGI_:{KSի=l4h4սXYhVH.ڢ~KԂ6n'K%Ad^lw8ރdv~>]QЇ~;Tc;Vm^bQqXԹsf2QvW@Qnw{nj9NZلkIvvz:ɜTs]Ǐ|vx[M;V B &ʀyȎR+J=lX`0LP#BpAvЬ>ՄXT[8)Ulp^]}hpNh,\t\x#/{8NNۃA2$.@uRhvhb'8$>pȂ# UxVLUۙi${\%*"KT72/LJT! xt08xΪۑ׃>en ZG^6 8 l3ų곯W.P U>r*Yl `ZwΊp!8~[~xy(WXހc{@Ojuf2P{#:Q-؏٪2{Sғx=+>u|%Sdjpz1RzRx|5dHBOzj$~7v:6g,+ʟ3v`MV}cHij6N̻N' QգЋC<7r#WF5]|S۴թEϫ터K Re=Y!'1Kw`a7sv%ZG_:ovĿ!%[wV#uq?}YȮׯel]){Ƭ[Ug _MAܕ1Y,%0b(y +^"yeG +!\B%_jeK>jU]Ḱ8_9Wg?!*tDz8 Y:>񢩰lnͤn̼1clRCG5+`t71 W'PyU%֢&Rooj ?[mNEMXm-H΄E4KdY>y}!NYP~枫[}gpour@4@9zfp=2,}S-xqM) )!=f$Aߡjl)vO%)X5hlW4ʲOe%dISiN3+F-pex@:5+0&Q%*? 5mUn4]d!q=u ght[\]y$%OSC.N?ڜB0-eoOڮ*To?EʡCJsuB<_<*N.17(kwO +,;고!gXNQ_kx,\$/m,^a}b6,%6Y hIrT)PH¶rs-{ "=I60 7_H%GVYvk7Ʋh&Ѵ !e+i }9BEXCaۙ;'%} -7+Lm8 wevQtug=Ҙ{~@r +8:v@2*s=X*B (3bܯё`W9z5?諪:bMW7 s4ۖ=r ϩ7Q] PL;1k`\5[Uĕp}bt떽!Tw9nKr\9K0̠Zxǣ*Fe 麣 rhnT^9-K 9}v_;N+t< _gcYr[(~ž'@/ 0;H;uR*BbJ*bYlՠDZ=yEbu)1 Q-!*t熮 +뗡~.ƟDWbtyAT1&l-n=xq U%F/**B;$\n!sHRV9< . +vIX= ̆U*, P +97Gsɔ;-Gkz%1~T‘Nw-s=2 U54&m[PݤOb; a^]m+AiNLl*[[dV7ia QlvYCn +aTDeNG.d+)) +%ٝza;NXÙ F"{ZwIޥ]O/qA/qALHTRju"=L*etXT_yQPw8k\0tB|uDiN*MS)(QNYT-}fA0ouE~lm- +.ʡ:޳@ʆxM"/T4-f!}>%)UͶoEݟDa c/ކ֘TY} +fݚf\`Z|~s +lbo*<)6QlaOٰٖ`CtO)5\K):F&ސ[xCnRJݷ.,e)g"1HdnSf?ٹQbÈ]b , MF`.jIaįXwD|Ҽ;$y&=0IrEQ"8],db>o)uUG3Z8D){ F.$lw27r()̋1,Vzq|~}~uPN' Xd]AM(s&׭$KTLCod6׺}mU`镬F3àE2JnXL1ʐwmQN3ٸ=sl)mYam;TʞvXX\A$ %'Zz\͖Eʥ1Jy5 ,T nPI3)T^J1|Dv|?~h_h'l;.\'<2swfk)Q$y+'|y3/Rp lµ _Թ` il1T6eAP]'B>K>:ij';ݗ9k*1Sn^n^~b?' +endstream endobj 915 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 916 0 obj <> endobj 917 0 obj <> endobj 918 0 obj <>/Border[0 0 0]/Rect[123.96 739.76 527.94 752]/Subtype/Link/Type/Annot>> endobj 919 0 obj <>/Border[0 0 0]/Rect[123.96 720.74 527.94 732.98]/Subtype/Link/Type/Annot>> endobj 920 0 obj <>/Border[0 0 0]/Rect[123.96 703.64 527.94 714.8]/Subtype/Link/Type/Annot>> endobj 921 0 obj <>/Border[0 0 0]/Rect[123.96 686.6 527.94 697.76]/Subtype/Link/Type/Annot>> endobj 922 0 obj <>/Border[0 0 0]/Rect[123.96 669.62 527.94 680.78]/Subtype/Link/Type/Annot>> endobj 923 0 obj <>/Border[0 0 0]/Rect[123.96 652.58 527.94 663.74]/Subtype/Link/Type/Annot>> endobj 924 0 obj <>/Border[0 0 0]/Rect[123.96 635.6 527.94 646.76]/Subtype/Link/Type/Annot>> endobj 925 0 obj <>/Border[0 0 0]/Rect[123.96 618.62 527.94 629.78]/Subtype/Link/Type/Annot>> endobj 926 0 obj <>/Border[0 0 0]/Rect[123.96 601.58 527.94 612.74]/Subtype/Link/Type/Annot>> endobj 927 0 obj <>/Border[0 0 0]/Rect[123.96 584.6 527.94 595.76]/Subtype/Link/Type/Annot>> endobj 928 0 obj <>/Border[0 0 0]/Rect[123.96 567.62 527.94 578.78]/Subtype/Link/Type/Annot>> endobj 929 0 obj <>/Border[0 0 0]/Rect[159.42 550.58 201.9 561.74]/Subtype/Link/Type/Annot>> endobj 930 0 obj <>/Border[0 0 0]/Rect[123.96 533.6 527.94 544.76]/Subtype/Link/Type/Annot>> endobj 931 0 obj <>/Border[0 0 0]/Rect[159.42 516.62 201.9 527.78]/Subtype/Link/Type/Annot>> endobj 932 0 obj <>/Border[0 0 0]/Rect[123.96 499.58 527.94 510.74]/Subtype/Link/Type/Annot>> endobj 933 0 obj <>/Border[0 0 0]/Rect[123.96 482.6 527.94 493.76]/Subtype/Link/Type/Annot>> endobj 934 0 obj <>/Border[0 0 0]/Rect[123.96 463.76 159.42 476]/Subtype/Link/Type/Annot>> endobj 935 0 obj <>/Border[0 0 0]/Rect[123.96 444.74 527.94 456.98]/Subtype/Link/Type/Annot>> endobj 936 0 obj <>/Border[0 0 0]/Rect[123.96 427.58 527.94 438.74]/Subtype/Link/Type/Annot>> endobj 937 0 obj <>/Border[0 0 0]/Rect[123.96 410.6 527.94 421.76]/Subtype/Link/Type/Annot>> endobj 938 0 obj <>/Border[0 0 0]/Rect[123.96 393.62 527.94 404.78]/Subtype/Link/Type/Annot>> endobj 939 0 obj <>/Border[0 0 0]/Rect[123.96 376.58 527.94 387.74]/Subtype/Link/Type/Annot>> endobj 940 0 obj <>/Border[0 0 0]/Rect[159.42 359.6 204.72 372.98]/Subtype/Link/Type/Annot>> endobj 941 0 obj <>/Border[0 0 0]/Rect[159.42 342.62 204.72 355.94]/Subtype/Link/Type/Annot>> endobj 942 0 obj <>/Border[0 0 0]/Rect[123.96 325.58 527.94 336.74]/Subtype/Link/Type/Annot>> endobj 943 0 obj <>/Border[0 0 0]/Rect[123.96 308.6 527.94 319.76]/Subtype/Link/Type/Annot>> endobj 944 0 obj <>/Border[0 0 0]/Rect[123.96 291.62 527.94 302.78]/Subtype/Link/Type/Annot>> endobj 945 0 obj <>/Border[0 0 0]/Rect[123.96 272.72 527.94 284.96]/Subtype/Link/Type/Annot>> endobj 946 0 obj <>/Border[0 0 0]/Rect[123.96 253.76 527.94 266]/Subtype/Link/Type/Annot>> endobj 947 0 obj <>/Border[0 0 0]/Rect[123.96 236.6 527.94 247.76]/Subtype/Link/Type/Annot>> endobj 948 0 obj <>/Border[0 0 0]/Rect[123.96 219.62 527.94 230.78]/Subtype/Link/Type/Annot>> endobj 949 0 obj <>/Border[0 0 0]/Rect[123.96 202.58 527.94 213.74]/Subtype/Link/Type/Annot>> endobj 950 0 obj <>/Border[0 0 0]/Rect[123.96 185.6 527.94 196.76]/Subtype/Link/Type/Annot>> endobj 951 0 obj <>/Border[0 0 0]/Rect[123.96 168.56 527.94 179.72]/Subtype/Link/Type/Annot>> endobj 952 0 obj <>/Border[0 0 0]/Rect[123.96 151.58 527.94 162.74]/Subtype/Link/Type/Annot>> endobj 953 0 obj <>/Border[0 0 0]/Rect[159.42 134.6 527.94 145.76]/Subtype/Link/Type/Annot>> endobj 954 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 955 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 956 0 obj <>stream +h[Yܸ~_>A@k@6`tn>~m~zcuX qkjؖHdߘ`lZjcx7o|gx՛/ZDkmel\hB`6\3|?Zə nnb[ŶdjR1 jYPZq/:{&Iƭq鎇ض*Ӷ6tG;mz7Iǂ #gVr*`Z!6PYOc@A8Tº- -E24/&܄P:3SCvi&p)WHo ̗qLf3 +@p;xUf#ctJRAg"뀥 Zt(} q qGв"Zb[pؾ{kbS %ڕ&t Req;7܈kEHj0 +m2=wLt 幍M4\*_.E)&!=gUC`Ή!sfyi2jmlZKO"FGĝ#Ju1j ?ߑGx6c"CQÔH,rֹ}JvC4ŧZ2Ҏ̕T RqR,v|  Fqg^U-_i+ 3j _HKW8 AQGAHz?P"ir!JRS6=HA IP ߑS 6Kҭ\td*< թ9Z Z!s2Ws\M(N%uu@Cm^a+PJZl*l*ix!$h;AA9d(hM/FE`ePCQ#XI(TbSC/;GnMI4.MXpڂ-Hk>mZai$ш_ +$x`\ .9@.HʢĨj;۬S + A +W'UD3Ol"Ȓ3Qm"3eWYJDxm**oFN.1DʃRt5@5Z@-ct/ KdLˇ|}t'@_I75J7\]0.GvdIցo*pr-|}4eW܆UdfK RԂae}>r쓰hc}u@s:D TƦ(&yHX-LG &P'42[8yжIJ~ Mx\".a98v1CaGnb'v|2ڨ~.5ktEm*QoN-9#}6d:asbfCe\inCp"0"Esx)U +@YohWG3FWCVsѨ6qy \($IC<M(FA-iH RExoLCyZ%kcw&2oĖ6ن-/ NWI5MUN{ 2E* LAQ]UGOaYĔ}k >lXG.<Լ2t%}e Q|^ctbWUNQi1\_N7F* K_I$Ru5c&n Wa{. [7 +[,V |m|IZ; ̈+Y"rm\Ky\ʾTSDuUH>g%i5^VoXP}XĆ>})+t`_zAP2z}ZncAzA~VGbY@?/>3*F|ϚoU뎅!E84Tf"In?ӥ:]yc7FK8heTǥSYu9JBEjɹgA?ả ؄m]G|VwYޜկFȯC DRJ"q:|K+'njIT,1-X^ t\EZMET/r٫kd,OOxzjbYXSe򛲖TTSOZƫ z:g^9<z?W"[ +qp}8}кli* eAjWp/x.EEe^y kKL7teml{{e7 ;d_l^x +n ѽ\<` %Ivvh )mPSU"W]fz*19ўvS5i/U{#K<]WGBgbwV _TNTL=%|[T >VdQrM_ɧ.R+ZuwJF]zwM"lMT/YaER t'{jz"oon +{YYz&R'V%tp0KyEs7)l@F!"rLGT:ҝ}=-s2ώcZ}el}r.ulFh2(ֲ񅪔tFFO4sdhu8\Oq37cՍv+WX 7[. f|Ң#}d9X1 ےiZZYI[0WOѫ$xⶮ;ڎ&="U~WS(cFN  H((G>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 958 0 obj <> endobj 959 0 obj <> endobj 960 0 obj <>/Border[0 0 0]/Rect[123.96 740.6 527.94 751.76]/Subtype/Link/Type/Annot>> endobj 961 0 obj <>/Border[0 0 0]/Rect[123.96 723.62 527.94 734.78]/Subtype/Link/Type/Annot>> endobj 962 0 obj <>/Border[0 0 0]/Rect[123.96 706.64 527.94 717.8]/Subtype/Link/Type/Annot>> endobj 963 0 obj <>/Border[0 0 0]/Rect[67.26 674.9 527.94 688.58]/Subtype/Link/Type/Annot>> endobj 964 0 obj <>/Border[0 0 0]/Rect[123.96 655.76 527.94 668]/Subtype/Link/Type/Annot>> endobj 965 0 obj <>/Border[0 0 0]/Rect[123.96 636.74 527.94 648.98]/Subtype/Link/Type/Annot>> endobj 966 0 obj <>/Border[0 0 0]/Rect[123.96 617.78 527.94 630.02]/Subtype/Link/Type/Annot>> endobj 967 0 obj <>/Border[0 0 0]/Rect[123.96 598.76 527.94 611]/Subtype/Link/Type/Annot>> endobj 968 0 obj <>/Border[0 0 0]/Rect[123.96 581.6 527.94 592.76]/Subtype/Link/Type/Annot>> endobj 969 0 obj <>/Border[0 0 0]/Rect[123.96 564.62 527.94 575.78]/Subtype/Link/Type/Annot>> endobj 970 0 obj <>/Border[0 0 0]/Rect[123.96 545.78 527.94 558.02]/Subtype/Link/Type/Annot>> endobj 971 0 obj <>/Border[0 0 0]/Rect[123.96 528.62 527.94 539.78]/Subtype/Link/Type/Annot>> endobj 972 0 obj <>/Border[0 0 0]/Rect[123.96 511.58 527.94 522.74]/Subtype/Link/Type/Annot>> endobj 973 0 obj <>/Border[0 0 0]/Rect[123.96 494.6 527.94 505.76]/Subtype/Link/Type/Annot>> endobj 974 0 obj <>/Border[0 0 0]/Rect[123.96 477.62 527.94 488.78]/Subtype/Link/Type/Annot>> endobj 975 0 obj <>/Border[0 0 0]/Rect[123.96 460.58 527.94 471.74]/Subtype/Link/Type/Annot>> endobj 976 0 obj <>/Border[0 0 0]/Rect[123.96 443.6 527.94 454.76]/Subtype/Link/Type/Annot>> endobj 977 0 obj <>/Border[0 0 0]/Rect[123.96 426.62 527.94 437.78]/Subtype/Link/Type/Annot>> endobj 978 0 obj <>/Border[0 0 0]/Rect[123.96 407.78 527.94 420.02]/Subtype/Link/Type/Annot>> endobj 979 0 obj <>/Border[0 0 0]/Rect[123.96 390.62 527.94 401.78]/Subtype/Link/Type/Annot>> endobj 980 0 obj <>/Border[0 0 0]/Rect[123.96 373.58 527.94 384.74]/Subtype/Link/Type/Annot>> endobj 981 0 obj <>/Border[0 0 0]/Rect[123.96 356.6 527.94 367.76]/Subtype/Link/Type/Annot>> endobj 982 0 obj <>/Border[0 0 0]/Rect[67.26 324.92 527.94 338.6]/Subtype/Link/Type/Annot>> endobj 983 0 obj <>/Border[0 0 0]/Rect[123.96 305.72 527.94 317.96]/Subtype/Link/Type/Annot>> endobj 984 0 obj <>/Border[0 0 0]/Rect[123.96 286.76 527.94 299]/Subtype/Link/Type/Annot>> endobj 985 0 obj <>/Border[0 0 0]/Rect[123.96 267.74 527.94 279.98]/Subtype/Link/Type/Annot>> endobj 986 0 obj <>/Border[0 0 0]/Rect[123.96 250.58 527.94 261.74]/Subtype/Link/Type/Annot>> endobj 987 0 obj <>/Border[0 0 0]/Rect[123.96 233.6 527.94 244.76]/Subtype/Link/Type/Annot>> endobj 988 0 obj <>/Border[0 0 0]/Rect[123.96 216.62 527.94 227.78]/Subtype/Link/Type/Annot>> endobj 989 0 obj <>/Border[0 0 0]/Rect[123.96 197.72 527.94 209.96]/Subtype/Link/Type/Annot>> endobj 990 0 obj <>/Border[0 0 0]/Rect[123.96 178.76 527.94 191]/Subtype/Link/Type/Annot>> endobj 991 0 obj <>/Border[0 0 0]/Rect[123.96 161.6 527.94 172.76]/Subtype/Link/Type/Annot>> endobj 992 0 obj <>/Border[0 0 0]/Rect[123.96 144.56 527.94 155.72]/Subtype/Link/Type/Annot>> endobj 993 0 obj <>/Border[0 0 0]/Rect[159.42 127.58 527.94 138.74]/Subtype/Link/Type/Annot>> endobj 994 0 obj <>/Border[0 0 0]/Rect[79.74 88.4 94.74 98.48]/Subtype/Link/Type/Annot>> endobj 995 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 996 0 obj <>stream +h[Y~篘l` Nȃ.# +d)鞙.WXk .tw}SwׯNpsoO^{{<~~}u5n_à~80Fnܩݨ5 +}PO<1CK +Ι_\iRJۣT4H!—Nhly]9 _^xť5fӵjl)o3ѹ=,Ye| gq|lcZs>Xr)+16‘Js tܹ4<&7)n~w׏/~n}€ xV ^ȿnx dNNp> {.a37_^x?yxs߼9 G& |rAҁL5L'hJ& +=#䌁FoQ+BiB;qG 8G7XY }QʁPQZWQ̝xC4nDAJ؜ل" ]s*bXynE$R[\Svh~ΐe!J)vR5ڑ +`II!ejMT Uvԋwwr:/X.ԲDPp0rZO}Τ S-pϲipRuBE_PگW.0cff0қ0rA}!'vg2Cbdʭm9\B`ٴY!ռ.>uiٍٍ }?r#>;-6t@9˚(| *D-ȫ i.̲J8|ãiaj#ش92Rj.eo-?ը.~be,3B|Y` 0x KZ/FoyM?uWOh*tk&z=ATЏ-tP)sQh/ Gm2.eѓ*6`#f !qx se|+省^}W/0kd\'9YHv^6ˢ{tF#lYVڱNA-ҢD$ "\n K3AČ ~̄ V~QwJqnVIHFVhFZNQO8a6Oi.*֠`:B":#(&dlE;4 +dL GO޹@ōVk?9 ̪~XqUoOz{:,4=pE/(Hd'@QbE_F}pvK C10=OZVʹROP)XࣸҝXNJNfssPIe}^:6#NcLԕZH=B/ z5\+)ȏnĉg`%R:NMd]lj.FmRYnJ N4aUjGR!Z/qpn'kl1^+4Bt[!왤@@ЎtloVXAzaA'3=sU}ٹrC,Eܠޯ9[kf11q~u)=]X˶?Ĕu+nN+l4~`I$u %M_u5YnO(TsF%O~tV([fo0ph +[k-LfhEt6dy\ͫ|ZI٥C] }?gXˮPhUv^ٟ_ +\D{UUIlyi=@U02J^,iٝOpMcH{A1#̯Ì7>ST&+*N,R"6ȢV,QOԬH|l䙮Za]u,.TQ3ӸTQpa%غ<v < bcԸ&m`֓"2fh6l&qfY)S8].r}kQ&bcU,M0jr®qS94)U,Hz,I $XxsTx:qj؇>| Qڜ~;TS^M$uGtA /U 4Z$,j!´!eB߀'pjv*\ooQu +Sxʌ'/x2O^*]S<RRqvg|L +ҥ1`ճУs'oqmu>,*6}6O(Iۼưvyϫt_M_g=`R +h06gl-q F +b&#J +x 9UݫfTaPƇ\q;>aR*xyH>4yԤ0L#ej2>"sFJ4Lczjח5!u/'3S[p!&+0-&}UP[{v'$>.5Nh3]vЀ|5cIJ<(́u,a6KV3ϑ +^S~ _2VY 60˕(-rϔCk [⧨nSM""=5% A]/nݫi:7)b?*g;7:I}$\{(ޯDx}6*덓V%Mdj0 m`l<ѝXjo3qret@ jԡfڃ\ֹ_X]eh6f()R^!sh&{ys^WكN4^sqy@TC>Gs *J{B9y̻桔PL"c+K47Dm6i,ooa#F*ag9fb<'@s%Irmjj]A0߮Eƞ"."O.3~tӟI5?&lI*pRKVȈ:XmV-IaS~o#C:xb|>('2szqZ<~FL]_=c\@2mR"FBӹg#]JŽ^P!Siڌ62Oэzl *K>,@,w7D"hzO_+z^Lyϝs{+ +JtCT.MǛ2W?O}[9{op}~]Ui3q +[x'|rt^moݣ\͓ʕX +$0_^/$:Bۅr2+sQV}9 +Urr }>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 998 0 obj <> endobj 999 0 obj <> endobj 1000 0 obj <>/Border[0 0 0]/Rect[123.96 740.6 527.94 751.76]/Subtype/Link/Type/Annot>> endobj 1001 0 obj <>/Border[0 0 0]/Rect[123.96 723.62 527.94 734.78]/Subtype/Link/Type/Annot>> endobj 1002 0 obj <>/Border[0 0 0]/Rect[123.96 706.64 527.94 717.8]/Subtype/Link/Type/Annot>> endobj 1003 0 obj <>/Border[0 0 0]/Rect[123.96 687.74 527.94 699.98]/Subtype/Link/Type/Annot>> endobj 1004 0 obj <>/Border[0 0 0]/Rect[123.96 668.78 527.94 681.02]/Subtype/Link/Type/Annot>> endobj 1005 0 obj <>/Border[0 0 0]/Rect[123.96 651.62 527.94 662.78]/Subtype/Link/Type/Annot>> endobj 1006 0 obj <>/Border[0 0 0]/Rect[123.96 632.78 527.94 645.02]/Subtype/Link/Type/Annot>> endobj 1007 0 obj <>/Border[0 0 0]/Rect[123.96 615.62 527.94 626.78]/Subtype/Link/Type/Annot>> endobj 1008 0 obj <>/Border[0 0 0]/Rect[123.96 598.58 527.94 609.74]/Subtype/Link/Type/Annot>> endobj 1009 0 obj <>/Border[0 0 0]/Rect[123.96 579.74 527.94 591.98]/Subtype/Link/Type/Annot>> endobj 1010 0 obj <>/Border[0 0 0]/Rect[123.96 562.58 527.94 573.74]/Subtype/Link/Type/Annot>> endobj 1011 0 obj <>/Border[0 0 0]/Rect[159.42 545.6 385.26 558.98]/Subtype/Link/Type/Annot>> endobj 1012 0 obj <>/Border[0 0 0]/Rect[123.96 526.76 527.94 539]/Subtype/Link/Type/Annot>> endobj 1013 0 obj <>/Border[0 0 0]/Rect[123.96 509.6 527.94 520.76]/Subtype/Link/Type/Annot>> endobj 1014 0 obj <>/Border[0 0 0]/Rect[123.96 492.62 527.94 503.78]/Subtype/Link/Type/Annot>> endobj 1015 0 obj <>/Border[0 0 0]/Rect[123.96 475.58 527.94 486.74]/Subtype/Link/Type/Annot>> endobj 1016 0 obj <>/Border[0 0 0]/Rect[123.96 458.6 527.94 469.76]/Subtype/Link/Type/Annot>> endobj 1017 0 obj <>/Border[0 0 0]/Rect[123.96 441.62 527.94 452.78]/Subtype/Link/Type/Annot>> endobj 1018 0 obj <>/Border[0 0 0]/Rect[67.26 409.88 527.94 423.56]/Subtype/Link/Type/Annot>> endobj 1019 0 obj <>/Border[0 0 0]/Rect[123.96 390.74 527.94 402.98]/Subtype/Link/Type/Annot>> endobj 1020 0 obj <>/Border[0 0 0]/Rect[123.96 371.78 527.94 384.02]/Subtype/Link/Type/Annot>> endobj 1021 0 obj <>/Border[0 0 0]/Rect[67.26 339.92 527.94 353.6]/Subtype/Link/Type/Annot>> endobj 1022 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 1023 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 1024 0 obj <>stream +h[n}Wsj_m0@&!0A(lh qݪzaey";@oUuOT?޾?v?wo/VW|X]]m3tJgcR1vE++ݽY֦t=Hh LA%k2J9MצXcǚL+W{,xuݫw3ʀU 䬈 !ՁJy(,$k@   I)( o +TSzJɫRAs\,<FX\Yrݧ2%Fpu4\. |h+Jk`jP +qW??ZD``:,c'?EzkFM38d =>e~ZA{b]ڱō8 , xH,wCB03-siO}K~gRa1Wԩ +tYG.k|G +Œ2s8s㩢i'hBobB"}PqQ.Z:!SGl7OVrX +%.󒜛e1HX,՝|{ ;Uf{{!iG*a/C^ЀX0_<Wŝ/ΧV_ S#OQifDGm5޵^ Zszr_ Zvl82i~Ip+q{F 5*2(_'xsyz09Xg8rܗ3a"d#߹;K '!D +'D 'k0[M";q]Ct!шMDټ!9%ٺ2|O!8,tv3?ȾlA)W$0Pu)CZql*h@0-JycTΧ DgaET0ԯbpsDR?6A^g|~-w*m AU*%Ӆ`a<(2}k].*u8{3JX_|,4~RfϷNibNQSGB+ghmH勇*l~KЦ1gt\d?/ĢS+xp$ޝJ>XݫgZad]c_°#~ꋵؙ~{qVfy쾙 +15iz%(cS3ᗍ{>ͺvj%>8 3m#k`lu BNg,Nn.q@QВP"S3_V>tD9O6AgdZ6 +T/eēy?l˜H9sȀliY;'"٥* I\}!/n>yvtc̔oodq@%=/σJP> f)R5lΜd ՗Yq6׳ߢiujx (f *]GVe"Yc< 'ay+MN!8O}܌">stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 1026 0 obj <> endobj 1027 0 obj <> endobj 1028 0 obj <>/Border[0 0 0]/Rect[67.26 694.88 527.94 706.88]/Subtype/Link/Type/Annot>> endobj 1029 0 obj <>/Border[0 0 0]/Rect[67.26 682.88 527.94 694.88]/Subtype/Link/Type/Annot>> endobj 1030 0 obj <>/Border[0 0 0]/Rect[67.26 670.88 527.94 682.88]/Subtype/Link/Type/Annot>> endobj 1031 0 obj <>/Border[0 0 0]/Rect[67.26 646.88 527.94 670.88]/Subtype/Link/Type/Annot>> endobj 1032 0 obj <>/Border[0 0 0]/Rect[67.26 634.88 527.94 646.88]/Subtype/Link/Type/Annot>> endobj 1033 0 obj <>/Border[0 0 0]/Rect[67.26 622.88 527.94 634.88]/Subtype/Link/Type/Annot>> endobj 1034 0 obj <>/Border[0 0 0]/Rect[67.26 610.88 527.94 622.88]/Subtype/Link/Type/Annot>> endobj 1035 0 obj <>/Border[0 0 0]/Rect[67.26 598.88 527.94 610.88]/Subtype/Link/Type/Annot>> endobj 1036 0 obj <>/Border[0 0 0]/Rect[67.26 586.88 527.94 598.88]/Subtype/Link/Type/Annot>> endobj 1037 0 obj <>/Border[0 0 0]/Rect[67.26 574.88 527.94 586.88]/Subtype/Link/Type/Annot>> endobj 1038 0 obj <>/Border[0 0 0]/Rect[67.26 562.88 527.94 574.88]/Subtype/Link/Type/Annot>> endobj 1039 0 obj <>/Border[0 0 0]/Rect[67.26 550.88 527.94 562.88]/Subtype/Link/Type/Annot>> endobj 1040 0 obj <>/Border[0 0 0]/Rect[67.26 538.88 527.94 550.88]/Subtype/Link/Type/Annot>> endobj 1041 0 obj <>/Border[0 0 0]/Rect[67.26 526.88 527.94 538.88]/Subtype/Link/Type/Annot>> endobj 1042 0 obj <>/Border[0 0 0]/Rect[67.26 514.88 527.94 526.88]/Subtype/Link/Type/Annot>> endobj 1043 0 obj <>/Border[0 0 0]/Rect[67.26 502.88 527.94 514.88]/Subtype/Link/Type/Annot>> endobj 1044 0 obj <>/Border[0 0 0]/Rect[67.26 490.88 527.94 502.88]/Subtype/Link/Type/Annot>> endobj 1045 0 obj <>/Border[0 0 0]/Rect[67.26 478.88 527.94 490.88]/Subtype/Link/Type/Annot>> endobj 1046 0 obj <>/Border[0 0 0]/Rect[67.26 466.88 527.94 478.88]/Subtype/Link/Type/Annot>> endobj 1047 0 obj <>/Border[0 0 0]/Rect[67.26 454.88 527.94 466.88]/Subtype/Link/Type/Annot>> endobj 1048 0 obj <>/Border[0 0 0]/Rect[67.26 442.88 527.94 454.88]/Subtype/Link/Type/Annot>> endobj 1049 0 obj <>/Border[0 0 0]/Rect[67.26 430.88 527.94 442.88]/Subtype/Link/Type/Annot>> endobj 1050 0 obj <>/Border[0 0 0]/Rect[67.26 418.88 527.94 430.88]/Subtype/Link/Type/Annot>> endobj 1051 0 obj <>/Border[0 0 0]/Rect[67.26 406.88 527.94 418.88]/Subtype/Link/Type/Annot>> endobj 1052 0 obj <>/Border[0 0 0]/Rect[67.26 394.88 527.94 406.88]/Subtype/Link/Type/Annot>> endobj 1053 0 obj <>/Border[0 0 0]/Rect[67.26 382.88 527.94 394.88]/Subtype/Link/Type/Annot>> endobj 1054 0 obj <>/Border[0 0 0]/Rect[67.26 370.88 527.94 382.88]/Subtype/Link/Type/Annot>> endobj 1055 0 obj <>/Border[0 0 0]/Rect[67.26 358.88 527.94 370.88]/Subtype/Link/Type/Annot>> endobj 1056 0 obj <>/Border[0 0 0]/Rect[67.26 346.88 527.94 358.88]/Subtype/Link/Type/Annot>> endobj 1057 0 obj <>/Border[0 0 0]/Rect[67.26 334.88 527.94 346.88]/Subtype/Link/Type/Annot>> endobj 1058 0 obj <>/Border[0 0 0]/Rect[67.26 322.88 527.94 334.88]/Subtype/Link/Type/Annot>> endobj 1059 0 obj <>/Border[0 0 0]/Rect[67.26 310.88 527.94 322.88]/Subtype/Link/Type/Annot>> endobj 1060 0 obj <>/Border[0 0 0]/Rect[67.26 298.88 527.94 310.88]/Subtype/Link/Type/Annot>> endobj 1061 0 obj <>/Border[0 0 0]/Rect[67.26 286.88 527.94 298.88]/Subtype/Link/Type/Annot>> endobj 1062 0 obj <>/Border[0 0 0]/Rect[67.26 274.88 527.94 286.88]/Subtype/Link/Type/Annot>> endobj 1063 0 obj <>/Border[0 0 0]/Rect[67.26 262.88 527.94 274.88]/Subtype/Link/Type/Annot>> endobj 1064 0 obj <>/Border[0 0 0]/Rect[67.26 250.88 527.94 262.88]/Subtype/Link/Type/Annot>> endobj 1065 0 obj <>/Border[0 0 0]/Rect[67.26 238.88 527.94 250.88]/Subtype/Link/Type/Annot>> endobj 1066 0 obj <>/Border[0 0 0]/Rect[67.26 226.88 527.94 238.88]/Subtype/Link/Type/Annot>> endobj 1067 0 obj <>/Border[0 0 0]/Rect[67.26 214.88 527.94 226.88]/Subtype/Link/Type/Annot>> endobj 1068 0 obj <>/Border[0 0 0]/Rect[67.26 202.88 527.94 214.88]/Subtype/Link/Type/Annot>> endobj 1069 0 obj <>/Border[0 0 0]/Rect[67.26 190.88 527.94 202.88]/Subtype/Link/Type/Annot>> endobj 1070 0 obj <>/Border[0 0 0]/Rect[67.26 178.88 527.94 190.88]/Subtype/Link/Type/Annot>> endobj 1071 0 obj <>/Border[0 0 0]/Rect[67.26 166.88 527.94 178.88]/Subtype/Link/Type/Annot>> endobj 1072 0 obj <>/Border[0 0 0]/Rect[67.26 154.88 527.94 166.88]/Subtype/Link/Type/Annot>> endobj 1073 0 obj <>/Border[0 0 0]/Rect[67.26 142.88 527.94 154.88]/Subtype/Link/Type/Annot>> endobj 1074 0 obj <>/Border[0 0 0]/Rect[67.26 130.88 527.94 142.88]/Subtype/Link/Type/Annot>> endobj 1075 0 obj <>/Border[0 0 0]/Rect[74.76 87.44 89.76 98.66]/Subtype/Link/Type/Annot>> endobj 1076 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 1077 0 obj <>stream +h[[[9r~_q:}x'A@3 `nyXAt؞]3A}U$EnmBxZK^?_cO/wwgt' ׾ &{x7tàme ŧaapT +>$-ݬT7b=սu! +~ÙphA-T"?>zbkRzRǻ;On'=BQsCHCom>e)XmVvվ)aI+M51?w: >0Ͷg~[SW:7||]:ASErWS Z zݭw~_>wawnr?$l|:%i^D܃zl\6T6Tֽr+mz [(~ +ѥnc~C K5:b*+eed 048} +Z[)ƿSY+Ca{pݺx i?k{Si; +1û57#VFC\3{ ?.Zip]'<]#`4 Cww`tpju2A%BSJj%Â;A +&GJ #z}< 4(C.~U +x@$x􃧳54T]9zp>U~ :=@E+RDNBw :8p oUt"pGݔ F;UttXR@esc?Ԗ\\BPҩ% 2ݮƭrkؔE!e'ÆmcM_w~BFӻ2#7p)oڇ2^bȭg|ῑ)NJc ]0V0`6@!(D(H0xOX5u6{%*7ftif%oKWiCg6y}+Yk.-{9=I8YZ qFeG.՝3>15!餁{4k8[`:d)uqEGb@ YS@dAmnN))/ܪh  ui}yk~u9:qDl@1PNͷ"'Xm["OF}9J*5B͚"UmZbA7IL7Dm4aj( =+$qN+װ^s/&/6cn+vĸRx1pCF}/,*` ݴ?YEÕYF^OSӰ+WY; { +jsۼkEC89ܒhx1f u bޖ-jX+ Ƞ_\q&$kJyn䦺+Dd(İك[5G6*Xx=dn|ѫ,Z6#cjaQ\nY_"ѫعUZ8\A:q˧Gt,scI>ɞl\c}4pAdsw)53z)yS&dfdd 76 +L'L}J<,D՛,Yh~))2 ͒ +Y!y~af 8WoBX(p +bp;UxkXe +; `CӮ8t/*%7_7FJˠ;'9|mNSsگ/oXGp{GV˳e,UQ7j$a?y &6~%m:۔Ӌֳ:s=OɊ~P)m;3 +8DTm8w" rwQ^ gO1ic9XARou>6[A@5 4q)Z02H  F EAQ +",SM =-l& 2G,y2IΰoS8[T[$tm‚~BoI'˥_zM Fڟ kBgߣr'i(<dדV^:0b|& vDA̶ F-"F(Dۥv +x/YL1n)ׂI<]Ww%$JLάܧ{NWK GrEc/9%Y+7FsRTv t/&:Pq5rKNUBlN4n{[tw2ohXn +c.$o `v'(aj߰]hn|\Z\)McFgU$C y'TrS%wr$1?CztǑ~ī@j)GNj#[鼯Nh4'0eN`2'iN`r0[MsJyߨG_f~\Wm#S$T'&nkՕhU!q/ݒ'~sabVeiA@ '<k?)35x' /q/F9o{P _ѯ7-8Lm7~ɔz yg'<>|6|1O#؉;9`?mCJ q.Lť߫7\KZ 5zAAu# ~эٍhJb~ougȓXȟ؀´v%^3^OQr}fZ~nl%4Re98I`DHVmaǟQ`_#Ǧ]kZF;sh^#Nǿ]v"f(w>t MY*1*a,Ό|?[qF/SeGypye"wSkrJY%l}D4~Vo}* bl n7sV/BC4 d{kƸŷ`:VFʠy%-Pm5{x/9r{ikX9ˆ =FbONq {Bʺ]E.22Z6biWBL,)fE m,k)}CjM`]̽ #0J}B&2t(`Lj7swlpfO+-IpԦ&Y4DZ ֯c&*Xl[)!YUxNsy{WҖs*.fdO5c,l8ɣZn)U*7u٨5cTC 6Zd%1~e +O4J 5+ZN:YVs v ;6a7WmWIo^E߆/z@ûDг=4϶/\тB$'F^[mg\Ӯ/oSThJf:N:[9^5skL { ۽=KlSQgKM"x%6Yz G&bl-֧g&W([{91ߢLn)Z?ebeqn"!~f7@W=]P~|_-UmH,,&NI;ӍΟP%'/D @b"Zu&vʟe!%$j\uj61YvЎIZMRrҏS8`/2%6gѺf#pFd‚mav8#M1L_e\ F$s[+->nюo ڱ1e%;Z3 vT!M |cHSNY:e8bK_˻ݘ%.XR}csܹ ϺFg4xjo YDY a#O=5~nƾt>s7zw%}Sa%ש$"`"'JL߬^w a)cg[}o, Vjn$FPeR@t#2X`W(z9i6yaZMՈ[ 0p+)IC3NyyϳGi2oV㴭&sxg!;iՅʚA!*L*v +6DBJȸmu̸):QT9&j19dBaɺ!$#]m6L^J&uklJ`DCr|m>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 1079 0 obj <> endobj 1080 0 obj <> endobj 1081 0 obj <>/Border[0 0 0]/Rect[67.26 740.6 527.94 751.76]/Subtype/Link/Type/Annot>> endobj 1082 0 obj <>/Border[0 0 0]/Rect[67.26 728.6 527.94 739.76]/Subtype/Link/Type/Annot>> endobj 1083 0 obj <>/Border[0 0 0]/Rect[67.26 716.6 527.94 727.76]/Subtype/Link/Type/Annot>> endobj 1084 0 obj <>/Border[0 0 0]/Rect[67.26 704.6 527.94 715.76]/Subtype/Link/Type/Annot>> endobj 1085 0 obj <>/Border[0 0 0]/Rect[67.26 692.6 527.94 703.76]/Subtype/Link/Type/Annot>> endobj 1086 0 obj <>/Border[0 0 0]/Rect[67.26 680.6 527.94 691.76]/Subtype/Link/Type/Annot>> endobj 1087 0 obj <>/Border[0 0 0]/Rect[67.26 668.6 527.94 679.76]/Subtype/Link/Type/Annot>> endobj 1088 0 obj <>/Border[0 0 0]/Rect[67.26 656.6 527.94 667.76]/Subtype/Link/Type/Annot>> endobj 1089 0 obj <>/Border[0 0 0]/Rect[67.26 644.6 527.94 655.76]/Subtype/Link/Type/Annot>> endobj 1090 0 obj <>/Border[0 0 0]/Rect[67.26 632.6 527.94 643.76]/Subtype/Link/Type/Annot>> endobj 1091 0 obj <>/Border[0 0 0]/Rect[67.26 620.6 527.94 631.76]/Subtype/Link/Type/Annot>> endobj 1092 0 obj <>/Border[0 0 0]/Rect[67.26 608.6 527.94 619.76]/Subtype/Link/Type/Annot>> endobj 1093 0 obj <>/Border[0 0 0]/Rect[67.26 596.6 527.94 607.76]/Subtype/Link/Type/Annot>> endobj 1094 0 obj <>/Border[0 0 0]/Rect[67.26 584.6 527.94 595.76]/Subtype/Link/Type/Annot>> endobj 1095 0 obj <>/Border[0 0 0]/Rect[67.26 572.6 527.94 583.76]/Subtype/Link/Type/Annot>> endobj 1096 0 obj <>/Border[0 0 0]/Rect[67.26 560.6 527.94 571.76]/Subtype/Link/Type/Annot>> endobj 1097 0 obj <>/Border[0 0 0]/Rect[67.26 548.6 527.94 559.76]/Subtype/Link/Type/Annot>> endobj 1098 0 obj <>/Border[0 0 0]/Rect[67.26 536.6 527.94 547.76]/Subtype/Link/Type/Annot>> endobj 1099 0 obj <>/Border[0 0 0]/Rect[67.26 524.6 527.94 535.76]/Subtype/Link/Type/Annot>> endobj 1100 0 obj <>/Border[0 0 0]/Rect[67.26 512.6 527.94 523.76]/Subtype/Link/Type/Annot>> endobj 1101 0 obj <>/Border[0 0 0]/Rect[67.26 500.6 527.94 511.76]/Subtype/Link/Type/Annot>> endobj 1102 0 obj <>/Border[0 0 0]/Rect[67.26 488.6 527.94 499.76]/Subtype/Link/Type/Annot>> endobj 1103 0 obj <>/Border[0 0 0]/Rect[67.26 476.6 527.94 487.76]/Subtype/Link/Type/Annot>> endobj 1104 0 obj <>/Border[0 0 0]/Rect[67.26 464.6 527.94 475.76]/Subtype/Link/Type/Annot>> endobj 1105 0 obj <>/Border[0 0 0]/Rect[67.26 452.6 527.94 463.76]/Subtype/Link/Type/Annot>> endobj 1106 0 obj <>/Border[0 0 0]/Rect[67.26 440.6 527.94 451.76]/Subtype/Link/Type/Annot>> endobj 1107 0 obj <>/Border[0 0 0]/Rect[67.26 428.6 527.94 439.76]/Subtype/Link/Type/Annot>> endobj 1108 0 obj <>/Border[0 0 0]/Rect[67.26 416.6 527.94 427.76]/Subtype/Link/Type/Annot>> endobj 1109 0 obj <>/Border[0 0 0]/Rect[67.26 404.6 527.94 415.76]/Subtype/Link/Type/Annot>> endobj 1110 0 obj <>/Border[0 0 0]/Rect[67.26 392.6 527.94 403.76]/Subtype/Link/Type/Annot>> endobj 1111 0 obj <>/Border[0 0 0]/Rect[67.26 380.6 527.94 391.76]/Subtype/Link/Type/Annot>> endobj 1112 0 obj <>/Border[0 0 0]/Rect[67.26 368.6 527.94 379.76]/Subtype/Link/Type/Annot>> endobj 1113 0 obj <>/Border[0 0 0]/Rect[67.26 344.6 527.94 367.76]/Subtype/Link/Type/Annot>> endobj 1114 0 obj <>/Border[0 0 0]/Rect[67.26 332.6 527.94 343.76]/Subtype/Link/Type/Annot>> endobj 1115 0 obj <>/Border[0 0 0]/Rect[67.26 308.6 527.94 331.76]/Subtype/Link/Type/Annot>> endobj 1116 0 obj <>/Border[0 0 0]/Rect[67.26 296.6 527.94 307.76]/Subtype/Link/Type/Annot>> endobj 1117 0 obj <>/Border[0 0 0]/Rect[67.26 284.6 527.94 295.76]/Subtype/Link/Type/Annot>> endobj 1118 0 obj <>/Border[0 0 0]/Rect[67.26 272.6 527.94 283.76]/Subtype/Link/Type/Annot>> endobj 1119 0 obj <>/Border[0 0 0]/Rect[67.26 260.6 527.94 271.76]/Subtype/Link/Type/Annot>> endobj 1120 0 obj <>/Border[0 0 0]/Rect[67.26 248.6 527.94 259.76]/Subtype/Link/Type/Annot>> endobj 1121 0 obj <>/Border[0 0 0]/Rect[67.26 236.6 527.94 247.76]/Subtype/Link/Type/Annot>> endobj 1122 0 obj <>/Border[0 0 0]/Rect[67.26 224.6 527.94 235.76]/Subtype/Link/Type/Annot>> endobj 1123 0 obj <>/Border[0 0 0]/Rect[67.26 212.6 527.94 223.76]/Subtype/Link/Type/Annot>> endobj 1124 0 obj <>/Border[0 0 0]/Rect[67.26 200.6 527.94 211.76]/Subtype/Link/Type/Annot>> endobj 1125 0 obj <>/Border[0 0 0]/Rect[67.26 188.6 527.94 199.76]/Subtype/Link/Type/Annot>> endobj 1126 0 obj <>/Border[0 0 0]/Rect[67.26 176.6 527.94 187.76]/Subtype/Link/Type/Annot>> endobj 1127 0 obj <>/Border[0 0 0]/Rect[67.26 164.6 527.94 175.76]/Subtype/Link/Type/Annot>> endobj 1128 0 obj <>/Border[0 0 0]/Rect[67.26 152.6 527.94 163.76]/Subtype/Link/Type/Annot>> endobj 1129 0 obj <>/Border[0 0 0]/Rect[67.26 140.6 527.94 151.76]/Subtype/Link/Type/Annot>> endobj 1130 0 obj <>/Border[0 0 0]/Rect[67.26 128.6 527.94 139.76]/Subtype/Link/Type/Annot>> endobj 1131 0 obj <>/Border[0 0 0]/Rect[512.94 87.44 527.94 98.66]/Subtype/Link/Type/Annot>> endobj 1132 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 1133 0 obj <>stream +h[]o8v}c6@7  +L C={&ә >RDT=v{\H"yxν/_?>O__?㯿?h~w]h:_huMZ;<|뚟vm׉a;XF@kQ?Ɨpӄ8#|JBhZB͗;\ۮ r{ۺ;~F==νǃ ~1]+ LkeZA8$ZZ}xO'Z3 ׍0E?zO|mto0džN[S]'k`Z쨄ߟ>/??}|?foMmK]gN>?W4!6\s?dךx֛OTVbY*j5Lk堤 4Mɒ;j +aҭ7.Wo"%ѸPv,SJl\zĕ"+8]P9/}wGuDOA)PZ\{ߢӡlJN,LAF +MU,LmXQ[~fap듢 HiZ=Wj +g[9^rD;Ϟ}~MkŘ r8F/2v,Jc{PQ +$ؼ+YIV^Ru8 OQOUIu8j GN'Y0\JyM`'Z/ms}UmRQգ2ë W^JS`J`[2J3rȐeP*;F?Yl(-[U0N4XDz'9wpE5b/=b @`@yTœ=U^R-CDQ`ZEaxFLI⮪šv !F/΢;Ss<;$awgY$!i>X$Ψ nU-bjX1;ьi{跜pgq'1}Ekzqa&o|`t kR^{CξD@ov7ӞQB7 M"ЀQݰ<];tA`/Y ؜+O>Br?T;;flw9ms}τлuVON5c +Co0Ђap;}nY(>X)sGzNjԳ.3<z:?czɕ7BYB/K0 +Fj#ǤOQ ZjV`qRVuFrO5Õ]jO/} +!qӧ.*DZP,TP_v6:*ч(gT3뼹ozreιƺ@ rFE9øzLdToa08®+[툽ǯ.-=՚4Cw&1q((Cavv;In 5˺jsRltCdU0¿GuC<(Q#4*/'sR(b> cbFӠ4^m6V)aw&%rN&Mv& +}ٻ{a e@AYrdrFƍa֣ $Y*b ;rq/jpԳon-J( rK$w< Gd`"`Hu:}&{6RnE޻-C-s((Sfo?'@uGmEcØ9&iN|m9tRr2""gJM}jI\kmYVrd7YQest4LNsZ"s#K ) TNH |(keD$Gu3<`fGqX?)cy%|#"J"' Ⱦ9G̬Z:ph2{*|qx2hH^5e6sM;rt]uj>]'y+JBq3NxW_7%㼧'!nf|䲝7"Cz"D"N丙*&1݂&oK~m4y4M>5y~Zѱw4y];HL/YE|[&ҦȿoEu`5-)mRgK{^g<T3o0H[I/4+}ӛ(LUI$TvqIیu ޶x| 2lH$R$OCCS.uiRe;؎4jcMȕ2mQ26)9r <;N;ߍ43p +!w)½aqݱ6PVSY0N uK~sC/f`rL``]5/RHXE&s*jı~&Dy5hIDt!0D%&(Qu+o眙;)e6yiu3i +[b$gimGnLE9mbM +5iq={ekJb9`=&LGfRI +L +LCr%[gHq(='F$TP8 ,9) +k7wM| 4I$Ǫ#& odB{oCZWLT~[&7q#LcYZpTə5Y߇5r.f>GAKi9ﵜ-,>1bRH/xh;)2A:գvYWmY7K'ɋfuÍofԒԔc9`d%CON=#btVYy"[ʜֲr>൩-7=38W0b,c@1J&P. KW˞PEy@>zYѤ #m _B"a3G:r8QXw#hcc<LD=9w5F1:43Sˉ?u 6dwAS7q1Yx*9!#"@'@@,)~WH + +Q#=v2OT2E)!.M7' }h&bA|9?f\mu?'fxjGDӑ/"/(~@N:Nj6:9CZ!%JLqtNlyS}M[Q͋syk#A^dW"Jh^*sN++%wԲ>ѳ6q<^0/0Jٓm=j="ڟ&aKD!kjyK˔X& +}(?[#Nذ>sjµSrl]7>kMǑi`'@>ˌR1eF(j3@V%$yDt5Qݏ?}?ֺ +endstream endobj 1134 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 1135 0 obj <> endobj 1136 0 obj <> endobj 1137 0 obj <>/Border[0 0 0]/Rect[67.26 740.6 527.94 751.76]/Subtype/Link/Type/Annot>> endobj 1138 0 obj <>/Border[0 0 0]/Rect[67.26 728.6 527.94 739.76]/Subtype/Link/Type/Annot>> endobj 1139 0 obj <>/Border[0 0 0]/Rect[67.26 716.6 527.94 727.76]/Subtype/Link/Type/Annot>> endobj 1140 0 obj <>/Border[0 0 0]/Rect[67.26 704.6 527.94 715.76]/Subtype/Link/Type/Annot>> endobj 1141 0 obj <>/Border[0 0 0]/Rect[67.26 692.6 527.94 703.76]/Subtype/Link/Type/Annot>> endobj 1142 0 obj <>/Border[0 0 0]/Rect[67.26 680.6 527.94 691.76]/Subtype/Link/Type/Annot>> endobj 1143 0 obj <>/Border[0 0 0]/Rect[67.26 668.6 527.94 679.76]/Subtype/Link/Type/Annot>> endobj 1144 0 obj <>/Border[0 0 0]/Rect[67.26 656.6 527.94 667.76]/Subtype/Link/Type/Annot>> endobj 1145 0 obj <>/Border[0 0 0]/Rect[67.26 644.6 527.94 655.76]/Subtype/Link/Type/Annot>> endobj 1146 0 obj <>/Border[0 0 0]/Rect[67.26 632.6 527.94 643.76]/Subtype/Link/Type/Annot>> endobj 1147 0 obj <>/Border[0 0 0]/Rect[67.26 620.6 527.94 631.76]/Subtype/Link/Type/Annot>> endobj 1148 0 obj <>/Border[0 0 0]/Rect[67.26 608.6 527.94 619.76]/Subtype/Link/Type/Annot>> endobj 1149 0 obj <>/Border[0 0 0]/Rect[67.26 596.6 527.94 607.76]/Subtype/Link/Type/Annot>> endobj 1150 0 obj <>/Border[0 0 0]/Rect[67.26 584.6 527.94 595.76]/Subtype/Link/Type/Annot>> endobj 1151 0 obj <>/Border[0 0 0]/Rect[67.26 572.6 527.94 583.76]/Subtype/Link/Type/Annot>> endobj 1152 0 obj <>/Border[0 0 0]/Rect[67.26 560.6 527.94 571.76]/Subtype/Link/Type/Annot>> endobj 1153 0 obj <>/Border[0 0 0]/Rect[67.26 546.5 151.74 560.6]/Subtype/Link/Type/Annot>> endobj 1154 0 obj <>/Border[0 0 0]/Rect[67.26 536.6 527.94 547.76]/Subtype/Link/Type/Annot>> endobj 1155 0 obj <>/Border[0 0 0]/Rect[67.26 524.6 527.94 535.76]/Subtype/Link/Type/Annot>> endobj 1156 0 obj <>/Border[0 0 0]/Rect[67.26 510.5 151.74 524.6]/Subtype/Link/Type/Annot>> endobj 1157 0 obj <>/Border[0 0 0]/Rect[67.26 500.6 527.94 511.76]/Subtype/Link/Type/Annot>> endobj 1158 0 obj <>/Border[0 0 0]/Rect[67.26 488.6 527.94 499.76]/Subtype/Link/Type/Annot>> endobj 1159 0 obj <>/Border[0 0 0]/Rect[67.26 476.6 527.94 487.76]/Subtype/Link/Type/Annot>> endobj 1160 0 obj <>/Border[0 0 0]/Rect[67.26 464.6 527.94 475.76]/Subtype/Link/Type/Annot>> endobj 1161 0 obj <>/Border[0 0 0]/Rect[67.26 452.6 527.94 463.76]/Subtype/Link/Type/Annot>> endobj 1162 0 obj <>/Border[0 0 0]/Rect[67.26 440.6 527.94 451.76]/Subtype/Link/Type/Annot>> endobj 1163 0 obj <>/Border[0 0 0]/Rect[67.26 428.6 527.94 439.76]/Subtype/Link/Type/Annot>> endobj 1164 0 obj <>/Border[0 0 0]/Rect[67.26 416.6 527.94 427.76]/Subtype/Link/Type/Annot>> endobj 1165 0 obj <>/Border[0 0 0]/Rect[67.26 404.6 527.94 415.76]/Subtype/Link/Type/Annot>> endobj 1166 0 obj <>/Border[0 0 0]/Rect[67.26 392.6 527.94 403.76]/Subtype/Link/Type/Annot>> endobj 1167 0 obj <>/Border[0 0 0]/Rect[67.26 380.6 527.94 391.76]/Subtype/Link/Type/Annot>> endobj 1168 0 obj <>/Border[0 0 0]/Rect[67.26 368.6 527.94 379.76]/Subtype/Link/Type/Annot>> endobj 1169 0 obj <>/Border[0 0 0]/Rect[67.26 356.6 527.94 367.76]/Subtype/Link/Type/Annot>> endobj 1170 0 obj <>/Border[0 0 0]/Rect[67.26 344.6 527.94 355.76]/Subtype/Link/Type/Annot>> endobj 1171 0 obj <>/Border[0 0 0]/Rect[67.26 332.6 527.94 343.76]/Subtype/Link/Type/Annot>> endobj 1172 0 obj <>/Border[0 0 0]/Rect[67.26 320.6 527.94 331.76]/Subtype/Link/Type/Annot>> endobj 1173 0 obj <>/Border[0 0 0]/Rect[67.26 308.6 527.94 319.76]/Subtype/Link/Type/Annot>> endobj 1174 0 obj <>/Border[0 0 0]/Rect[67.26 296.6 527.94 307.76]/Subtype/Link/Type/Annot>> endobj 1175 0 obj <>/Border[0 0 0]/Rect[67.26 284.6 527.94 295.76]/Subtype/Link/Type/Annot>> endobj 1176 0 obj <>/Border[0 0 0]/Rect[67.26 272.6 527.94 283.76]/Subtype/Link/Type/Annot>> endobj 1177 0 obj <>/Border[0 0 0]/Rect[67.26 260.6 527.94 271.76]/Subtype/Link/Type/Annot>> endobj 1178 0 obj <>/Border[0 0 0]/Rect[67.26 248.6 527.94 259.76]/Subtype/Link/Type/Annot>> endobj 1179 0 obj <>/Border[0 0 0]/Rect[67.26 236.6 527.94 247.76]/Subtype/Link/Type/Annot>> endobj 1180 0 obj <>/Border[0 0 0]/Rect[67.26 224.6 527.94 235.76]/Subtype/Link/Type/Annot>> endobj 1181 0 obj <>/Border[0 0 0]/Rect[67.26 212.6 527.94 223.76]/Subtype/Link/Type/Annot>> endobj 1182 0 obj <>/Border[0 0 0]/Rect[67.26 200.6 527.94 211.76]/Subtype/Link/Type/Annot>> endobj 1183 0 obj <>/Border[0 0 0]/Rect[67.26 188.6 527.94 199.76]/Subtype/Link/Type/Annot>> endobj 1184 0 obj <>/Border[0 0 0]/Rect[67.26 176.6 527.94 187.76]/Subtype/Link/Type/Annot>> endobj 1185 0 obj <>/Border[0 0 0]/Rect[67.26 164.6 527.94 175.76]/Subtype/Link/Type/Annot>> endobj 1186 0 obj <>/Border[0 0 0]/Rect[67.26 152.6 527.94 163.76]/Subtype/Link/Type/Annot>> endobj 1187 0 obj <>/Border[0 0 0]/Rect[67.26 140.6 527.94 151.76]/Subtype/Link/Type/Annot>> endobj 1188 0 obj <>/Border[0 0 0]/Rect[67.26 128.6 527.94 139.76]/Subtype/Link/Type/Annot>> endobj 1189 0 obj <>/Border[0 0 0]/Rect[79.74 88.4 94.74 98.48]/Subtype/Link/Type/Annot>> endobj 1190 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 1191 0 obj <>stream +h[Yo$9r~ׯG{7  +00w- ?Tըw0+&jLތq?wowfﻟ_?}_C ?vǻG9]&X7J;8G'5<|7 ?ݍ$xuŷӤd,TN + +>?h}}ryXwq&eLqepI5T?>ƞ?z'98%0JBFBÇw]i BQsCӨu:x%,.ƿaA|)$lלZ!~Ǔݗ{Jg;F:aF!S~=O|~x@Ĥ#9ak1 `F9S)~{{ߟ~~ac?)hWd.!ɍE3~{h}=(TݏA9(q~х(qC ̋5:ƲUXBemx 0F,O6HҍA\V\ +hKM,;޽ۏRX,KpV1Z_`28øpة}Qn9x Lq =?G+Cn< + qOc.(ß" Z?q )!΄@zn.Za2CǫY8TBPq;S+TP D/#"dJ֗Ʋy!~`QÂ;.AmRqCz}4 tQ(TM%5~7ģ,O"G/UųwN &ÚiC_cZ)Thygw 8p otLH)s3*TŲ{,öb95 +uxJe%j0{.ʸUj RHY*a>x36xcěVo?GȘY1-]d-M+?o[}tbԯqX6; *edeLЀ(tfe8cy u/FtQITA <.63MKPTJk/%#tDV).gks}:6:0X lxAL DdO9lı4 h!+?8BNHD5iB൬He@[QNvbNy} ‹"@ u)R{ó*ϧ,L 18Ӧ0A0Qh0U854LO۴(һZyM `aF <,\ S`ab/zrښ}?Fl=*l]70M,[y͈m`Q)Y&c +cwWE,ׂI=٢܅򶗬.:dM6'b"IAR=BHT[g^teAf^)NA(j$Uzފd%+J +\*^)U .$RH$j$SXʲNFE(̚ +M$ +!DlQSgIgʓn`zsg}_7lG!9JV\EGj#j"j~r5JNap(VDP lI3`15F.ѮLI#*b!r T ck3jRFЋO"2gS\+t8ԁ$5"3JGPa:EYYM[ll"ƂxQD4 ~{'kv AG`*.Sn <˩V@緕U])~bۛ=ɖNPCF9 +" + z\יљ-o9T{:'+c C"tAwGf8k˒-u%ൽ ^3m sc-k639}ebGC]E+peRdfLUUS@Cré(I{L&-?SIK0i1m=\铥i^(J"r&bBϮ{*(<S, |1Odo}]FhWmHa1~uquaͧRLM, g2IׂdG'ӌ "/=8ѰDZw\ӌg{ D[n}ꑰQc%s JNq$RD1vQaIקb--{s\hA7^Ar$f*+HTNҘCDjՠg&ym&$"r[CdMc&>%xIVfV?J\Ubc˲Y,Kc~րymz)U> 4)In6q)㳎: +s2w8*5?0 (QE5S_$КHct: +Ap?]VbIDy?kqח$m+Fh35"Y6|t & TG ݀*B"Ē+K񴤣SNVa4[Ba cȗޔ"))U(^8`X-Gd f=(t]]v/]vg(S:~xh%<ɬh7Bo%J1KQ + k׆>-J=Sit>U̲Ly$e8i6gIp𯶙6+l^ʵ&Wl ŗ템x_"lST?IEBas2jɫJ31vM$ZyY2 +w=BBM+zM&ݼ=?zB'-q!j/"X|j!Rr 9Z9pХkTA>%ZiOcQB$sϴ=Oᜂ {Y努/ yw:,R-2mg<Sg૜MRr03Gaш6HL&C#%CsNYrj/^WI[hYF[1r1[^GZD͐,`DdwUȋy,%SbJs+a RW +ܖ=7N;F~6]q)2=;LEiDSmt Z6?Mf#&Z2~t)V֏I˳NZѕ_tX;qnPS>X@Qqbe=1"F]cy9eDBO$%zYB5ץ[‡R_Xͩg˕QAq}Ar㵬+eRҪi\e=>Ă)n{Q9ax|9ﶋɌ*M[@G#p=?(Ԏr6l6 z+ ;ī+׏4+r.xGAd_h_x]`,!G\ˣÜ]9S3-ٺٙXB.E)):z ճL^m8+F0P6:í9om0q([ !H7ʫV(L]; \eڙosh䭈6MF:iYbK67MU M9O֎qQ)8{%UsQ}X-ownϵ6kW`é+f O9BsBg#. rd(}t 3+B jpA p6hF4I=kæF$$[>ؙyHFbvTU`Z>1qjLcjl* k&D;徢\4U)P5/l#(9 KDz9Y N/lڤ] 1'|y^טEV:*C.7- 4 _)5RTq _}ڼ&h+YV,%`w +Qٜ7U$U{ [,{rͩy{m1՘Y$]lYp%ϓIy+r˹uϸMrVJwUo΢ l|ٱ5KfKQ58N&>,j 9|%,`ټbm8Ģ%ΐ"1-IQjtJ^3eʼʼceް22o(pD͂Z>v)Ƌ۵E=x+"kqk>x)\q>Tu hS25w63K!29]ЪfdVT~(H@d9vi;6ΌQ; 8QfjL햩}W]nQ]v2LDԬ!kddm3Yۓd-6ža-^x%'PT*[f5:1:)BXIoվ +E@2?67fk7(>J">lZZWȔKrb8^l/aŊo<.rdk)*5}p^IMGؕ̾p՛W|ca%ZL(Y׵PiT3δ_^Y^5Qg p4DBτ3l(98q +!3OmvPbӧwf`X%HʚV.NP2a(+d^6b=Bz 3/z0-Q +8lYaWx^3rw.*S{2(YPtf,[]<:#+k:q!0O+JVjդ/fNdCJ#\n~jLDeb@:Q:!#+sՓe +~ Af](@%r?<B.FDMҙ]k5:j邀\9tڬMҿo?ʩ₭MĦab\_ȎVX@n)9tLƮ/݊M &UJr>ޢOQ9NSɑlʪyqvJrl|ܜB'QrT7YТ0\m9w?+]2J_cz@E>EBЗzW|\1&ck;{$S!y5jYb5{W%*#J]=lyO=`<#xϱ&fjo~'cIAw?}Û`D +endstream endobj 1192 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 1193 0 obj <> endobj 1194 0 obj <> endobj 1195 0 obj <>/Border[0 0 0]/Rect[67.26 740.6 527.94 751.76]/Subtype/Link/Type/Annot>> endobj 1196 0 obj <>/Border[0 0 0]/Rect[67.26 728.6 527.94 739.76]/Subtype/Link/Type/Annot>> endobj 1197 0 obj <>/Border[0 0 0]/Rect[67.26 716.6 527.94 727.76]/Subtype/Link/Type/Annot>> endobj 1198 0 obj <>/Border[0 0 0]/Rect[67.26 704.6 527.94 715.76]/Subtype/Link/Type/Annot>> endobj 1199 0 obj <>/Border[0 0 0]/Rect[67.26 692.6 527.94 703.76]/Subtype/Link/Type/Annot>> endobj 1200 0 obj <>/Border[0 0 0]/Rect[67.26 680.6 527.94 691.76]/Subtype/Link/Type/Annot>> endobj 1201 0 obj <>/Border[0 0 0]/Rect[67.26 668.6 527.94 679.76]/Subtype/Link/Type/Annot>> endobj 1202 0 obj <>/Border[0 0 0]/Rect[67.26 656.6 527.94 667.76]/Subtype/Link/Type/Annot>> endobj 1203 0 obj <>/Border[0 0 0]/Rect[67.26 644.6 527.94 655.76]/Subtype/Link/Type/Annot>> endobj 1204 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 1205 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 1206 0 obj <>stream +hZ[k%7~?GG g@B{/%~rܞ$`]Jۧ*av?sxxwpw}|gӽv3rS:٘T]{Fw6[)~3]F3oJh5(]4ƒEh)Xidy|5[ ԙWEZ~O**QdHmcW.؊ AVOMVkm8oJ P"7",:fcPe5@E7$ S)ͨhmTICK|I |pl`*46NŪMrݧ2%]#dycKՈhy8k(Lx5YC"=LX{)> sUR^W={7'eށ;'j3RÖ#7i瘖^:]S!WJĽvP̣cfZRRrPܧS`!x8s'[:|Er̟r2iG9r yҘ~[B*'zKXЊ y̗T WWNu}LUT\oy>pqbT HO<5_cG񐕑BB6hu9؛O-- bҔDݢ^݋KR`2 L &YŢݢ>T֪4e +(xcjc1@>Wn +;Z((i@OF>ld@g= dFΘJWXa0 +&c1j~Z")o$0pUb#LQ7aq_Rj("hUxlQ%hBnQ鵸MPkZ 'e ^09ac6Q+|x3Е"7i4E5(%,ڒI(N8vY֍%nntWIhOI,9Sy:tв&ʻ=gl^:N>UhSse/lTZ cu޿dfM2b8B6'TI}#u<$/;Hĉ!)#~9>0{|^*.mn&g[1?y~/0ViZ'Ʒ^-˜/\#/Sp +C b'bݘK["}V!Hnzo|1+{̜i:{ǂzx(g3Ž"#>=!}*sZ_J_ Ϭ|;)t6ᆟ*)㕥qSȌ<Ћ3{: +0JIݫ7aV<=y7h =AzEWY^lPP3o k{BeZ +endstream endobj 1207 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 1208 0 obj <> endobj 1209 0 obj <> endobj 1210 0 obj <>/Border[0 0 0]/Rect[67.26 695.6 527.94 706.76]/Subtype/Link/Type/Annot>> endobj 1211 0 obj <>/Border[0 0 0]/Rect[67.26 683.6 527.94 694.76]/Subtype/Link/Type/Annot>> endobj 1212 0 obj <>/Border[0 0 0]/Rect[67.26 671.6 527.94 682.76]/Subtype/Link/Type/Annot>> endobj 1213 0 obj <>/Border[0 0 0]/Rect[67.26 659.6 527.94 670.76]/Subtype/Link/Type/Annot>> endobj 1214 0 obj <>/Border[0 0 0]/Rect[67.26 647.6 527.94 658.76]/Subtype/Link/Type/Annot>> endobj 1215 0 obj <>/Border[0 0 0]/Rect[67.26 635.6 527.94 646.76]/Subtype/Link/Type/Annot>> endobj 1216 0 obj <>/Border[0 0 0]/Rect[67.26 623.6 527.94 634.76]/Subtype/Link/Type/Annot>> endobj 1217 0 obj <>/Border[0 0 0]/Rect[67.26 611.6 527.94 622.76]/Subtype/Link/Type/Annot>> endobj 1218 0 obj <>/Border[0 0 0]/Rect[67.26 599.6 527.94 610.76]/Subtype/Link/Type/Annot>> endobj 1219 0 obj <>/Border[0 0 0]/Rect[67.26 587.6 527.94 598.76]/Subtype/Link/Type/Annot>> endobj 1220 0 obj <>/Border[0 0 0]/Rect[67.26 575.6 527.94 586.76]/Subtype/Link/Type/Annot>> endobj 1221 0 obj <>/Border[0 0 0]/Rect[67.26 563.6 527.94 574.76]/Subtype/Link/Type/Annot>> endobj 1222 0 obj <>/Border[0 0 0]/Rect[67.26 551.6 527.94 562.76]/Subtype/Link/Type/Annot>> endobj 1223 0 obj <>/Border[0 0 0]/Rect[67.26 539.6 527.94 550.76]/Subtype/Link/Type/Annot>> endobj 1224 0 obj <>/Border[0 0 0]/Rect[67.26 527.6 527.94 538.76]/Subtype/Link/Type/Annot>> endobj 1225 0 obj <>/Border[0 0 0]/Rect[67.26 515.6 527.94 526.76]/Subtype/Link/Type/Annot>> endobj 1226 0 obj <>/Border[0 0 0]/Rect[67.26 503.6 527.94 514.76]/Subtype/Link/Type/Annot>> endobj 1227 0 obj <>/Border[0 0 0]/Rect[67.26 491.6 527.94 502.76]/Subtype/Link/Type/Annot>> endobj 1228 0 obj <>/Border[0 0 0]/Rect[67.26 479.6 527.94 490.76]/Subtype/Link/Type/Annot>> endobj 1229 0 obj <>/Border[0 0 0]/Rect[67.26 467.6 527.94 478.76]/Subtype/Link/Type/Annot>> endobj 1230 0 obj <>/Border[0 0 0]/Rect[67.26 455.6 527.94 466.76]/Subtype/Link/Type/Annot>> endobj 1231 0 obj <>/Border[0 0 0]/Rect[67.26 443.6 527.94 454.76]/Subtype/Link/Type/Annot>> endobj 1232 0 obj <>/Border[0 0 0]/Rect[67.26 431.6 527.94 442.76]/Subtype/Link/Type/Annot>> endobj 1233 0 obj <>/Border[0 0 0]/Rect[67.26 419.6 527.94 430.76]/Subtype/Link/Type/Annot>> endobj 1234 0 obj <>/Border[0 0 0]/Rect[67.26 407.6 527.94 418.76]/Subtype/Link/Type/Annot>> endobj 1235 0 obj <>/Border[0 0 0]/Rect[67.26 395.6 527.94 406.76]/Subtype/Link/Type/Annot>> endobj 1236 0 obj <>/Border[0 0 0]/Rect[67.26 383.6 527.94 394.76]/Subtype/Link/Type/Annot>> endobj 1237 0 obj <>/Border[0 0 0]/Rect[67.26 371.6 527.94 382.76]/Subtype/Link/Type/Annot>> endobj 1238 0 obj <>/Border[0 0 0]/Rect[67.26 359.6 527.94 370.76]/Subtype/Link/Type/Annot>> endobj 1239 0 obj <>/Border[0 0 0]/Rect[67.26 347.6 527.94 358.76]/Subtype/Link/Type/Annot>> endobj 1240 0 obj <>/Border[0 0 0]/Rect[67.26 335.6 527.94 346.76]/Subtype/Link/Type/Annot>> endobj 1241 0 obj <>/Border[0 0 0]/Rect[67.26 323.6 527.94 334.76]/Subtype/Link/Type/Annot>> endobj 1242 0 obj <>/Border[0 0 0]/Rect[67.26 311.6 527.94 322.76]/Subtype/Link/Type/Annot>> endobj 1243 0 obj <>/Border[0 0 0]/Rect[67.26 299.6 527.94 310.76]/Subtype/Link/Type/Annot>> endobj 1244 0 obj <>/Border[0 0 0]/Rect[67.26 287.6 527.94 298.76]/Subtype/Link/Type/Annot>> endobj 1245 0 obj <>/Border[0 0 0]/Rect[67.26 275.6 527.94 286.76]/Subtype/Link/Type/Annot>> endobj 1246 0 obj <>/Border[0 0 0]/Rect[67.26 263.6 527.94 274.76]/Subtype/Link/Type/Annot>> endobj 1247 0 obj <>/Border[0 0 0]/Rect[67.26 251.6 527.94 262.76]/Subtype/Link/Type/Annot>> endobj 1248 0 obj <>/Border[0 0 0]/Rect[67.26 239.6 527.94 250.76]/Subtype/Link/Type/Annot>> endobj 1249 0 obj <>/Border[0 0 0]/Rect[67.26 227.6 527.94 238.76]/Subtype/Link/Type/Annot>> endobj 1250 0 obj <>/Border[0 0 0]/Rect[67.26 215.6 527.94 226.76]/Subtype/Link/Type/Annot>> endobj 1251 0 obj <>/Border[0 0 0]/Rect[67.26 203.6 527.94 214.76]/Subtype/Link/Type/Annot>> endobj 1252 0 obj <>/Border[0 0 0]/Rect[67.26 191.6 527.94 202.76]/Subtype/Link/Type/Annot>> endobj 1253 0 obj <>/Border[0 0 0]/Rect[67.26 179.6 527.94 190.76]/Subtype/Link/Type/Annot>> endobj 1254 0 obj <>/Border[0 0 0]/Rect[67.26 167.6 527.94 178.76]/Subtype/Link/Type/Annot>> endobj 1255 0 obj <>/Border[0 0 0]/Rect[67.26 155.6 527.94 166.76]/Subtype/Link/Type/Annot>> endobj 1256 0 obj <>/Border[0 0 0]/Rect[67.26 143.6 527.94 154.76]/Subtype/Link/Type/Annot>> endobj 1257 0 obj <>/Border[0 0 0]/Rect[67.26 131.6 527.94 142.76]/Subtype/Link/Type/Annot>> endobj 1258 0 obj <>/Border[0 0 0]/Rect[74.76 87.44 89.76 98.66]/Subtype/Link/Type/Annot>> endobj 1259 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 1260 0 obj <>stream +h[[ocGr~ׯs9}ٱ$lV>y #cc{vߧ/4%ažu~mݾ|x>?vͻ͟nߤ) &7!l~7?L~ yyvT +Rm7VO *wjAuĩv}7VOօ ?l~i:+s +_Ŀ4ۻX7I)m&R_>rtמOFc3Idm>[<-Rpn=+8u2l\% Кs FNO~_Olˮj3\M~h7:n}~ow߽0ǩ"u䁷e_eDjtMzs%l޼O?~W9 +<*2fi 9H pz\eCeCe=)|daaS2JvptisqR4{MáK5b*+eu2h˳sI)X0BTj +ZۻUj +I+Oe }UM@ | ;հo?i֓ceH$a^+E=yJ\PT=M ?O56H;3wswHn)g8O׈_b0PHCww`tpj 2A%BSJ<j%lQQaPKŧ =J ?GV#pxPs%fR)ϞnᧉGѫx앇{5x!z~iFh-="*K4D,L)kx`fxCʤwV>b)`La"EL7eya|MϝI,f'ШI+ K$ y-Y¿Cu|~%cmUʻ#泿Z{ WF; @G5HŏZbwTɲ4sp + ѿ8 Ԋ-.Q'ܺ3Edvl]z\VW ~mҦSX5=f]m(:-(9%_ (/-T֓ GgĚycҋFP˳wNlr Mrr;5ˌȝy!kNp#3&J;PjY֞3GP6֣7䊗s9T˔jʇŠߣDp!],!Q>lvaI1Z8ʕ =BmL[tC^EKYrJb+6 +l5*53=[& RLd.rFASfmG[;%2*]z4# -ۏH(eRZ(K$*W̐\V՛`!6ʆ4$"rdp4[r3\>\ZzXͻ9"$mяҋip?UR1Xec4,izbʍu*EyB Rv{Ze\*ykjh rCL .i&<~+;:O9X"0Y9l a*V i#}.\\evކY`]Q'ɵ*r!7OjK4gc;6blEiT4&ׇ~0Cy=AaX7l?s:5;A }4m>NWҷз{D!G#|!DbA C'e6 Ʌ]q˷㳕m):[\1ıOƱv]b3v56ϺjZ~;>aӫŝiiC[ sX4Lm|*dUJSm~eS:Ϣ il Ib6 _orf;6(7-K8 [{mjW֮caw̳gYPx` l/ٟs]n\I蚸-pOlXz؅.`A".&51Clym;FIA ϋh;=qc}Gtr5~ކŎ x5v Բc$Ea*X$-3Dq +>b&&U'lׯ}̣υ)iFOrj5dÌ!{Wk +C4 wNgi߀Ci;=Kh‡6b3_߄.[1VqɤXd1w*Ͻ<G_C < =A;4@!E'dr .TTW(*_ Nutٞ x+{y$ْ؋k~,QX P06p.CaS92\F;*UTVv!^>f/F'b^ri*&2(0ł]5 1xc"{c/0?Ǿtbcu({6a_Ĕ"/IZ:9dx6_:,M5g Jr~f9KWsmljuK{։:q,GM<{R gæKzɈ1J6R/ꓛ^$ Or}4^jx6H˱u ŤE#k%.~F:`wRމSWc3.H:_G!:/MPAE]cSt+!=R% VAf"Gr¤lk+ +c-^$;eI}?" /^ٚէOeQzvv (gs9ֳ<Hzj +Of}}^iի`&{Eʳs:Zu6 >Yr^ts tPôo]Q#eg975/r*3-(BW^U}Uc|~(:Ιp s̸-̧l?ξ͎c=٢5/GQ\p/!pȲ )"FKuPqCcK39UBv9-ŖĽL128=¤<\Q|aw]<7uވ|c"=D|@AmޫWJ.­ViS@H yL]qOHYÔSRVZj%ew2W@M&p&F_@O46%(ZWR̩U'qWd$u1?4 0n:X_C(Qnţ.?Nͮ2.`i,S gHY\8:;q6S3A_E;j PGd-k壕34 v׋B_L× 2{(}l`r@`kcoBK[E> +Kl7KB+#4ݿ}TT7Ȉ C {^jmqgKVd/߲߲{/"`~RjWR6'rAX %#O6m^XJ\$qJg_xɈӐc!{DD-+Ɉ+gwSwRjF +is$ϋ ,΋\$)+XF09W~+lM`h  VY81{̲5mzT8Zb+ bX4=ySty85&J"ʹ3 1"k}9k;ߚ]sj^EUK׋՘Ldrw1/ A}ZhSVƣ/}@ćZ}1Hw;><+)&wf`>d4j5rR )|06GW,iEv]θYV%>OYZ_/O.&vɭfw6F^r`$s ٧86ˣ+t9VDGm 7 j8S} +KҌl>lGiFܚY_RYPڪEǾoU(KjE1D✘>իhQ+ěMm|` +endstream endobj 1261 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 1262 0 obj <> endobj 1263 0 obj <> endobj 1264 0 obj <>/Border[0 0 0]/Rect[67.26 740.6 527.94 751.76]/Subtype/Link/Type/Annot>> endobj 1265 0 obj <>/Border[0 0 0]/Rect[67.26 728.6 527.94 739.76]/Subtype/Link/Type/Annot>> endobj 1266 0 obj <>/Border[0 0 0]/Rect[67.26 716.6 527.94 727.76]/Subtype/Link/Type/Annot>> endobj 1267 0 obj <>/Border[0 0 0]/Rect[67.26 704.6 527.94 715.76]/Subtype/Link/Type/Annot>> endobj 1268 0 obj <>/Border[0 0 0]/Rect[67.26 692.6 527.94 703.76]/Subtype/Link/Type/Annot>> endobj 1269 0 obj <>/Border[0 0 0]/Rect[67.26 680.6 527.94 691.76]/Subtype/Link/Type/Annot>> endobj 1270 0 obj <>/Border[0 0 0]/Rect[67.26 668.6 527.94 679.76]/Subtype/Link/Type/Annot>> endobj 1271 0 obj <>/Border[0 0 0]/Rect[67.26 656.6 527.94 667.76]/Subtype/Link/Type/Annot>> endobj 1272 0 obj <>/Border[0 0 0]/Rect[67.26 644.6 527.94 655.76]/Subtype/Link/Type/Annot>> endobj 1273 0 obj <>/Border[0 0 0]/Rect[67.26 632.6 527.94 643.76]/Subtype/Link/Type/Annot>> endobj 1274 0 obj <>/Border[0 0 0]/Rect[67.26 620.6 527.94 631.76]/Subtype/Link/Type/Annot>> endobj 1275 0 obj <>/Border[0 0 0]/Rect[67.26 608.6 527.94 619.76]/Subtype/Link/Type/Annot>> endobj 1276 0 obj <>/Border[0 0 0]/Rect[67.26 596.6 527.94 607.76]/Subtype/Link/Type/Annot>> endobj 1277 0 obj <>/Border[0 0 0]/Rect[67.26 584.6 527.94 595.76]/Subtype/Link/Type/Annot>> endobj 1278 0 obj <>/Border[0 0 0]/Rect[67.26 572.6 527.94 583.76]/Subtype/Link/Type/Annot>> endobj 1279 0 obj <>/Border[0 0 0]/Rect[67.26 560.6 527.94 571.76]/Subtype/Link/Type/Annot>> endobj 1280 0 obj <>/Border[0 0 0]/Rect[67.26 548.6 527.94 559.76]/Subtype/Link/Type/Annot>> endobj 1281 0 obj <>/Border[0 0 0]/Rect[67.26 536.6 527.94 547.76]/Subtype/Link/Type/Annot>> endobj 1282 0 obj <>/Border[0 0 0]/Rect[67.26 524.6 527.94 535.76]/Subtype/Link/Type/Annot>> endobj 1283 0 obj <>/Border[0 0 0]/Rect[67.26 512.6 527.94 523.76]/Subtype/Link/Type/Annot>> endobj 1284 0 obj <>/Border[0 0 0]/Rect[67.26 500.6 527.94 511.76]/Subtype/Link/Type/Annot>> endobj 1285 0 obj <>/Border[0 0 0]/Rect[67.26 488.6 527.94 499.76]/Subtype/Link/Type/Annot>> endobj 1286 0 obj <>/Border[0 0 0]/Rect[67.26 476.6 527.94 487.76]/Subtype/Link/Type/Annot>> endobj 1287 0 obj <>/Border[0 0 0]/Rect[67.26 464.6 527.94 475.76]/Subtype/Link/Type/Annot>> endobj 1288 0 obj <>/Border[0 0 0]/Rect[67.26 452.6 527.94 463.76]/Subtype/Link/Type/Annot>> endobj 1289 0 obj <>/Border[0 0 0]/Rect[67.26 440.6 527.94 451.76]/Subtype/Link/Type/Annot>> endobj 1290 0 obj <>/Border[0 0 0]/Rect[67.26 428.6 527.94 439.76]/Subtype/Link/Type/Annot>> endobj 1291 0 obj <>/Border[0 0 0]/Rect[67.26 416.6 527.94 427.76]/Subtype/Link/Type/Annot>> endobj 1292 0 obj <>/Border[0 0 0]/Rect[67.26 404.6 527.94 415.76]/Subtype/Link/Type/Annot>> endobj 1293 0 obj <>/Border[0 0 0]/Rect[67.26 392.6 527.94 403.76]/Subtype/Link/Type/Annot>> endobj 1294 0 obj <>/Border[0 0 0]/Rect[67.26 380.6 527.94 391.76]/Subtype/Link/Type/Annot>> endobj 1295 0 obj <>/Border[0 0 0]/Rect[67.26 368.6 527.94 379.76]/Subtype/Link/Type/Annot>> endobj 1296 0 obj <>/Border[0 0 0]/Rect[67.26 356.6 527.94 367.76]/Subtype/Link/Type/Annot>> endobj 1297 0 obj <>/Border[0 0 0]/Rect[67.26 344.6 527.94 355.76]/Subtype/Link/Type/Annot>> endobj 1298 0 obj <>/Border[0 0 0]/Rect[67.26 332.6 527.94 343.76]/Subtype/Link/Type/Annot>> endobj 1299 0 obj <>/Border[0 0 0]/Rect[67.26 320.6 527.94 331.76]/Subtype/Link/Type/Annot>> endobj 1300 0 obj <>/Border[0 0 0]/Rect[67.26 308.6 527.94 319.76]/Subtype/Link/Type/Annot>> endobj 1301 0 obj <>/Border[0 0 0]/Rect[67.26 296.6 527.94 307.76]/Subtype/Link/Type/Annot>> endobj 1302 0 obj <>/Border[0 0 0]/Rect[67.26 284.6 527.94 295.76]/Subtype/Link/Type/Annot>> endobj 1303 0 obj <>/Border[0 0 0]/Rect[67.26 272.6 527.94 283.76]/Subtype/Link/Type/Annot>> endobj 1304 0 obj <>/Border[0 0 0]/Rect[67.26 260.6 527.94 271.76]/Subtype/Link/Type/Annot>> endobj 1305 0 obj <>/Border[0 0 0]/Rect[67.26 248.6 527.94 259.76]/Subtype/Link/Type/Annot>> endobj 1306 0 obj <>/Border[0 0 0]/Rect[67.26 236.6 527.94 247.76]/Subtype/Link/Type/Annot>> endobj 1307 0 obj <>/Border[0 0 0]/Rect[67.26 224.6 527.94 235.76]/Subtype/Link/Type/Annot>> endobj 1308 0 obj <>/Border[0 0 0]/Rect[67.26 212.6 527.94 223.76]/Subtype/Link/Type/Annot>> endobj 1309 0 obj <>/Border[0 0 0]/Rect[67.26 200.6 527.94 211.76]/Subtype/Link/Type/Annot>> endobj 1310 0 obj <>/Border[0 0 0]/Rect[67.26 188.6 527.94 199.76]/Subtype/Link/Type/Annot>> endobj 1311 0 obj <>/Border[0 0 0]/Rect[67.26 176.6 527.94 187.76]/Subtype/Link/Type/Annot>> endobj 1312 0 obj <>/Border[0 0 0]/Rect[67.26 164.6 527.94 175.76]/Subtype/Link/Type/Annot>> endobj 1313 0 obj <>/Border[0 0 0]/Rect[67.26 152.6 527.94 163.76]/Subtype/Link/Type/Annot>> endobj 1314 0 obj <>/Border[0 0 0]/Rect[67.26 140.6 527.94 151.76]/Subtype/Link/Type/Annot>> endobj 1315 0 obj <>/Border[0 0 0]/Rect[67.26 128.6 527.94 139.76]/Subtype/Link/Type/Annot>> endobj 1316 0 obj <>/Border[0 0 0]/Rect[512.94 87.44 527.94 98.66]/Subtype/Link/Type/Annot>> endobj 1317 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 1318 0 obj <>stream +h[Y$7r~_Q:'y@$0 k7ӂ58HffS=i3I&w?Nnno믮]ٙU_٘wey4ϦnOк߫n1Ϥu<5[s}=l'޵1Som_5St>' Zw +u)12S a^/M T<5Lm&D +ozpp  ϺFS ;wkcKv5z1h&g 3J^Ot(ԁ MmԵ +,b߂s iJ|&t>0>&$}PGBmmj2%ϱՓ.OC'9yJ(SʔiG?gvByu7Cmo>M_)HJ`h?!{e+yzm!ԋ Y ]'m/\mSgO/][!PnTZhSk^ŭroؔBrۯ )TVmo(4E& *Q;c@완zb Xr;{bRߛ4-,IYQ[2ڦP%;j |$"D m oN6fs޿ḑ؞XR51#( x#:}@pA.(6 O@LGV)Ӏ7UFxԹC{%Q4 6QWX' H_uPPɁ*O>2(VWW>S#ƃ#MhI]~?j MJzD@NI>MmUTel:3 !/G"(!yz0q8L;]sdž¶+ػٙfeBAc;ZG'PUd<)"c5LP7ڈz@h 69'mb/벏ovmN&耙WCBEY(mFٛ&>g%zҳ5S:8 Oý_FT~^~ң!3NDV+^]Dw* c ٳ,r/D,d0#4Ams$s9#=*Lxj-L>G't]'y?`q{NW\/ÖoZ,=yܚ=+?,>/su=2@k9x:1Ql }nTDz@:,°U +1vݍ /-45 (^xIX(Q gP<8\Ur<1gJld痗pd"4Lz %UONAjG1Y%F'tgPW26ǐRMWȯ}%{ x!}ҝ{6fAA[PBSqz' YSTu2%gE'jsU5\BuxD[ꃪK%OM-3}6lhKV4N+C;a;ֹ6Vn#={[|p/O p&<8fcܱ9f@hֲV'jp+8a9 +]@;M wO8d&a'cO&!6cЩ׫ nג.g).27i0 +=hcI0..OVz Ά9gCN #(r9gCN s@N4 9m8/8e mI򇹪gR±y[pP%א#0hIYCF.2 +8祿Vur +u1n̖WnEy30E ŚJ/QCycNeG&I$W$W$G2d.TiT|AsA S.ȹ}rʧAႜKo_d}gJ"'UHZ犤VJSq^]5h喒.*5S ^ x:xQn}+'\V0=x#<*}v,l>Y[LKDbU +MD??⡖p {T Y*]R܃_2isM20>XQG4J pS +<8sV'j1+a9”[=pd=Do=*3aLZn[yZFj+fŅъ !'0u" +G=,7RI kJ%hUĖax{K?LCuҸʵ1RW&ɚ͊4/Z4`w:gwHP_աsW~O"~"t(Ls[&y`I\:yn&qnIr-Ԏy&_jŨZ:3KGWGߔ/iVw6rCv@FѕɃN_ + ”y^b gT5{C¶ CjbdyRn=_TV9H }4Od̉N>A'enw`yhƂS2wi`sT^8ZiB9"\CH:>6ӸEJYs=#<;o;Cj2IcIԫHch$zjM:gzI%+Vvzo'vGlo'$-ʒf<PmaλLn}Jj,coɈg)ȍn"ׂǩoqx>ovcF4$u +9g\k49ujW\ Fn{|l$ { +DH܏@9O u^Q۲oW6'&mRAo;?c0Nc}Lc[L37糍BiG0@fbͪ@cv&U#׹NytV)dRit(, xsix +j`Y<LF!̌r<ް@ ({JNj!:Q7}UePqԀ q8J+F{8auu=m[&nWn5jh\#^Z%0u(<8[+xg&~6;RƁmgJx>&b[PiBEd׫>Pg&c6[w7![y8eʽ򇈥|ܽndl}y@o/H^;Lx2Ny5"r$7QHSr]6Vc"KWIJޫ i8{n,Y|!ݰ7W/*o)4VM晇tjXyl?hhYU-R+"{|g7H'Z\R|9!ςyCOyMaFw2_"z%5 )z1lد=CqO9\}. -~1A.AΚ>Ϊ;M[-llu\OVLmtq@wߔQȦZeBohgGaGXHҦR ۩ _y#+=7HἝV`rOөSz7V,cVsk7d]u5r.$-_ + #xcŶ|}۲ +fKzcB4i 1Zc։L_$QRMw-Jρ@C!bj%8 xb^e}<xzc5&B" +S=a'vmUwEF5 C%E(i)b.ȅ_cv!H%d㤕t]A bRsĚ :c!J=-e MshiTmqM e;ϲY(2+B +ؚ㷑IYuƾ$V5@}RSP%]b6$C !ֹ0Ot$;^l36jj" Jyf'uRJ.0DJjaCmMLtFJiw4~jr;渊ۏaa4JޓZ-ߝo5^'w +|\b%_^+c\G!!v͒i?ί2(tUTfOɔ#f_S20vo1ГV;^GŹ/{Bߊ C=L'>:ڛr}z{:%M@Xg?Z հe]LZMS[m]*lN D \jUog?,P (\ɮM l0L++$H)7}9*2˫v3('Z0C%̼}ZvGt\|I]W#o&tބHH[1o,y ز+=Ai 1HɠH8\KaH C$ D)4)u!Y,hFxf(Ms`"dI`;-&9.qT\hTUEⵡuHxObK.4[$k#S>tpJz n͸Ar]_"gSٻAAB +BOQRN MQM\ ֎NzMCFioϩz1:F/ eMo^7L7;qpRߓ8 +Jb>֋'2#<R`h<^Y-"S;w ɟYapY |$( ~{itvN- %h|HZ&?F)pDV~K[hUc(uӉd$e9Eg7RXXzl(ɿ9c߉ +*5t'5#Ё%Hcڷx {WwNc}_d Aۯ_nl +endstream endobj 1319 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 1320 0 obj <> endobj 1321 0 obj <> endobj 1322 0 obj <>/Border[0 0 0]/Rect[67.26 740.6 527.94 751.76]/Subtype/Link/Type/Annot>> endobj 1323 0 obj <>/Border[0 0 0]/Rect[67.26 728.6 527.94 739.76]/Subtype/Link/Type/Annot>> endobj 1324 0 obj <>/Border[0 0 0]/Rect[67.26 716.6 527.94 727.76]/Subtype/Link/Type/Annot>> endobj 1325 0 obj <>/Border[0 0 0]/Rect[67.26 704.6 527.94 715.76]/Subtype/Link/Type/Annot>> endobj 1326 0 obj <>/Border[0 0 0]/Rect[67.26 692.6 527.94 703.76]/Subtype/Link/Type/Annot>> endobj 1327 0 obj <>/Border[0 0 0]/Rect[67.26 680.6 527.94 691.76]/Subtype/Link/Type/Annot>> endobj 1328 0 obj <>/Border[0 0 0]/Rect[67.26 668.6 527.94 679.76]/Subtype/Link/Type/Annot>> endobj 1329 0 obj <>/Border[0 0 0]/Rect[67.26 656.6 527.94 667.76]/Subtype/Link/Type/Annot>> endobj 1330 0 obj <>/Border[0 0 0]/Rect[67.26 644.6 527.94 655.76]/Subtype/Link/Type/Annot>> endobj 1331 0 obj <>/Border[0 0 0]/Rect[67.26 632.6 527.94 643.76]/Subtype/Link/Type/Annot>> endobj 1332 0 obj <>/Border[0 0 0]/Rect[67.26 620.6 527.94 631.76]/Subtype/Link/Type/Annot>> endobj 1333 0 obj <>/Border[0 0 0]/Rect[67.26 608.6 527.94 619.76]/Subtype/Link/Type/Annot>> endobj 1334 0 obj <>/Border[0 0 0]/Rect[67.26 596.6 527.94 607.76]/Subtype/Link/Type/Annot>> endobj 1335 0 obj <>/Border[0 0 0]/Rect[67.26 584.6 527.94 595.76]/Subtype/Link/Type/Annot>> endobj 1336 0 obj <>/Border[0 0 0]/Rect[67.26 572.6 527.94 583.76]/Subtype/Link/Type/Annot>> endobj 1337 0 obj <>/Border[0 0 0]/Rect[67.26 560.6 527.94 571.76]/Subtype/Link/Type/Annot>> endobj 1338 0 obj <>/Border[0 0 0]/Rect[67.26 548.6 527.94 559.76]/Subtype/Link/Type/Annot>> endobj 1339 0 obj <>/Border[0 0 0]/Rect[67.26 536.6 527.94 547.76]/Subtype/Link/Type/Annot>> endobj 1340 0 obj <>/Border[0 0 0]/Rect[67.26 524.6 527.94 535.76]/Subtype/Link/Type/Annot>> endobj 1341 0 obj <>/Border[0 0 0]/Rect[67.26 512.6 527.94 523.76]/Subtype/Link/Type/Annot>> endobj 1342 0 obj <>/Border[0 0 0]/Rect[67.26 500.6 527.94 511.76]/Subtype/Link/Type/Annot>> endobj 1343 0 obj <>/Border[0 0 0]/Rect[67.26 488.6 527.94 499.76]/Subtype/Link/Type/Annot>> endobj 1344 0 obj <>/Border[0 0 0]/Rect[67.26 476.6 527.94 487.76]/Subtype/Link/Type/Annot>> endobj 1345 0 obj <>/Border[0 0 0]/Rect[67.26 464.6 527.94 475.76]/Subtype/Link/Type/Annot>> endobj 1346 0 obj <>/Border[0 0 0]/Rect[67.26 452.6 527.94 463.76]/Subtype/Link/Type/Annot>> endobj 1347 0 obj <>/Border[0 0 0]/Rect[67.26 440.6 527.94 451.76]/Subtype/Link/Type/Annot>> endobj 1348 0 obj <>/Border[0 0 0]/Rect[67.26 428.6 527.94 439.76]/Subtype/Link/Type/Annot>> endobj 1349 0 obj <>/Border[0 0 0]/Rect[67.26 404.6 527.94 427.76]/Subtype/Link/Type/Annot>> endobj 1350 0 obj <>/Border[0 0 0]/Rect[67.26 392.6 527.94 403.76]/Subtype/Link/Type/Annot>> endobj 1351 0 obj <>/Border[0 0 0]/Rect[67.26 380.6 527.94 391.76]/Subtype/Link/Type/Annot>> endobj 1352 0 obj <>/Border[0 0 0]/Rect[67.26 368.6 527.94 379.76]/Subtype/Link/Type/Annot>> endobj 1353 0 obj <>/Border[0 0 0]/Rect[67.26 356.6 527.94 367.76]/Subtype/Link/Type/Annot>> endobj 1354 0 obj <>/Border[0 0 0]/Rect[67.26 344.6 527.94 355.76]/Subtype/Link/Type/Annot>> endobj 1355 0 obj <>/Border[0 0 0]/Rect[67.26 332.6 527.94 343.76]/Subtype/Link/Type/Annot>> endobj 1356 0 obj <>/Border[0 0 0]/Rect[67.26 320.6 527.94 331.76]/Subtype/Link/Type/Annot>> endobj 1357 0 obj <>/Border[0 0 0]/Rect[67.26 308.6 527.94 319.76]/Subtype/Link/Type/Annot>> endobj 1358 0 obj <>/Border[0 0 0]/Rect[67.26 296.6 527.94 307.76]/Subtype/Link/Type/Annot>> endobj 1359 0 obj <>/Border[0 0 0]/Rect[67.26 284.6 527.94 295.76]/Subtype/Link/Type/Annot>> endobj 1360 0 obj <>/Border[0 0 0]/Rect[67.26 272.6 527.94 283.76]/Subtype/Link/Type/Annot>> endobj 1361 0 obj <>/Border[0 0 0]/Rect[67.26 260.6 527.94 271.76]/Subtype/Link/Type/Annot>> endobj 1362 0 obj <>/Border[0 0 0]/Rect[67.26 248.6 527.94 259.76]/Subtype/Link/Type/Annot>> endobj 1363 0 obj <>/Border[0 0 0]/Rect[67.26 236.6 527.94 247.76]/Subtype/Link/Type/Annot>> endobj 1364 0 obj <>/Border[0 0 0]/Rect[67.26 224.6 527.94 235.76]/Subtype/Link/Type/Annot>> endobj 1365 0 obj <>/Border[0 0 0]/Rect[67.26 212.6 527.94 223.76]/Subtype/Link/Type/Annot>> endobj 1366 0 obj <>/Border[0 0 0]/Rect[67.26 200.6 527.94 211.76]/Subtype/Link/Type/Annot>> endobj 1367 0 obj <>/Border[0 0 0]/Rect[67.26 188.6 527.94 199.76]/Subtype/Link/Type/Annot>> endobj 1368 0 obj <>/Border[0 0 0]/Rect[67.26 176.6 527.94 187.76]/Subtype/Link/Type/Annot>> endobj 1369 0 obj <>/Border[0 0 0]/Rect[67.26 164.6 527.94 175.76]/Subtype/Link/Type/Annot>> endobj 1370 0 obj <>/Border[0 0 0]/Rect[67.26 152.6 527.94 163.76]/Subtype/Link/Type/Annot>> endobj 1371 0 obj <>/Border[0 0 0]/Rect[67.26 140.6 527.94 151.76]/Subtype/Link/Type/Annot>> endobj 1372 0 obj <>/Border[0 0 0]/Rect[67.26 128.6 527.94 139.76]/Subtype/Link/Type/Annot>> endobj 1373 0 obj <>/Border[0 0 0]/Rect[79.74 88.4 94.74 98.48]/Subtype/Link/Type/Annot>> endobj 1374 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 1375 0 obj <>stream +h[[or~$nX Gv0ȃ iȐYq R!s{]_?}~;|>/߽W~ݝިUߌ_à&;8ǫq0nP߫o00ÿDm +{^!|4r9P+B}QGenAo,ԛT ڤ6 )ͧ+[?Iwt2O$t$xZ|^߰{Ǣ\BG}`SWCh=mQuUKqFGݍr_ϛEAbt{~jH4]r\s oW7vw~??l>7~opØWf7#\8 \%P\6lrY9._k3XXLƨ/]q;=^_"tIJ7EX=ip$dc)CoS*h,޵RC7Z\Y dppة}A;\<,3<@QƵRރש4Ӏ<\]T~ykϼF) Θ;h`$`E45lP Fs +\LN>W]8THw_b̗4M#ԋo0vaJ$n #F)/Qa(*A:fUj'VF:4uנQ]*.sqȷpW=;ک?˲察點*W9LO%rwݹD"hL|!ik kX]!dg ;w~ ?˦Rud\ồ)TX͉7dN> =S}5z y$|&+" +as&Š.#-g/U(mKz' +,Wۼv6iYY7eۦWJePïaLo*0]ԥ)dگ&4$>no 1y)ߪ G=M c+><g4 #m xwhW7l;-Đc~2QYgg_ҍ_g>hPѦR= ŏѝ.weYnhi(&HdWD!q+QD۔t$DSB}I}mBf(-V|RfR''Me,mتV;cu$E5hDIR% )![+d[^)94cfa +kJ zgeDnvI[mlVVZ5א"2ҿ:a! w}XTNkF _mx]G,.Y|=Wg%t2*"isBǤb΄ƋrE' $]`n]ږJE}VPKcLmu Sݶr e -9t_|R8*PeP3x HU$4Ḛy];5Կo+9'~jp+ _y,X1m+&Y7cAǤTalE3fgX{\r]GFж4Ӷ)cL%u L)Z 2Z +9qslҦ%Xl# Q}6Yq( +kNSA5C׶%riuJB>GHE^`3`sRڑRh톳`YlR&2E/UdJ)n2Erj( :JBnxHȺPb$Rdr5V%J\Y[W^D-#tإ֋x#U^?ȳ$v?f03撣_r]80!w3bbYg[ ,P+|fG$l\ӺhED xtNG @l 򯍁҆ՠ0h¯fh/xv1dbk$Թ{qnb֞۽ cR~Ƀx]~.T#: n!žDMX8eY\-/}xe +HufT/PS%8/9 +Z( ffu=]_2sVyX)ytISgÈH:>2:`DV|>ATcӇQUW-a"Tm7=&/X6" 3X`q' +@`DE"_/۹ne2nCK7S힕0tV$?R)IX֠]}û`,Ĉ +endstream endobj 1376 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 1377 0 obj <> endobj 1378 0 obj <> endobj 1379 0 obj <>/Border[0 0 0]/Rect[67.26 740.6 527.94 751.76]/Subtype/Link/Type/Annot>> endobj 1380 0 obj <>/Border[0 0 0]/Rect[67.26 728.6 527.94 739.76]/Subtype/Link/Type/Annot>> endobj 1381 0 obj <>/Border[0 0 0]/Rect[67.26 716.6 527.94 727.76]/Subtype/Link/Type/Annot>> endobj 1382 0 obj <>/Border[0 0 0]/Rect[67.26 704.6 527.94 715.76]/Subtype/Link/Type/Annot>> endobj 1383 0 obj <>/Border[0 0 0]/Rect[67.26 692.6 527.94 703.76]/Subtype/Link/Type/Annot>> endobj 1384 0 obj <>/Border[0 0 0]/Rect[67.26 680.6 527.94 691.76]/Subtype/Link/Type/Annot>> endobj 1385 0 obj <>/Border[0 0 0]/Rect[67.26 668.6 527.94 679.76]/Subtype/Link/Type/Annot>> endobj 1386 0 obj <>/Border[0 0 0]/Rect[67.26 656.6 527.94 667.76]/Subtype/Link/Type/Annot>> endobj 1387 0 obj <>/Border[0 0 0]/Rect[67.26 644.6 527.94 655.76]/Subtype/Link/Type/Annot>> endobj 1388 0 obj <>/Border[0 0 0]/Rect[67.26 632.6 527.94 643.76]/Subtype/Link/Type/Annot>> endobj 1389 0 obj <>/Border[0 0 0]/Rect[67.26 620.6 527.94 631.76]/Subtype/Link/Type/Annot>> endobj 1390 0 obj <>/Border[0 0 0]/Rect[67.26 608.6 527.94 619.76]/Subtype/Link/Type/Annot>> endobj 1391 0 obj <>/Border[0 0 0]/Rect[67.26 596.6 527.94 607.76]/Subtype/Link/Type/Annot>> endobj 1392 0 obj <>/Border[0 0 0]/Rect[67.26 584.6 527.94 595.76]/Subtype/Link/Type/Annot>> endobj 1393 0 obj <>/Border[0 0 0]/Rect[67.26 572.6 527.94 583.76]/Subtype/Link/Type/Annot>> endobj 1394 0 obj <>/Border[0 0 0]/Rect[67.26 560.6 527.94 571.76]/Subtype/Link/Type/Annot>> endobj 1395 0 obj <>/Border[0 0 0]/Rect[67.26 548.6 527.94 559.76]/Subtype/Link/Type/Annot>> endobj 1396 0 obj <>/Border[0 0 0]/Rect[67.26 536.6 527.94 547.76]/Subtype/Link/Type/Annot>> endobj 1397 0 obj <>/Border[0 0 0]/Rect[67.26 524.6 527.94 535.76]/Subtype/Link/Type/Annot>> endobj 1398 0 obj <>/Border[0 0 0]/Rect[67.26 512.6 527.94 523.76]/Subtype/Link/Type/Annot>> endobj 1399 0 obj <>/Border[0 0 0]/Rect[67.26 488.6 527.94 511.76]/Subtype/Link/Type/Annot>> endobj 1400 0 obj <>/Border[0 0 0]/Rect[67.26 464.6 527.94 487.76]/Subtype/Link/Type/Annot>> endobj 1401 0 obj <>/Border[0 0 0]/Rect[67.26 452.6 527.94 463.76]/Subtype/Link/Type/Annot>> endobj 1402 0 obj <>/Border[0 0 0]/Rect[67.26 440.6 527.94 451.76]/Subtype/Link/Type/Annot>> endobj 1403 0 obj <>/Border[0 0 0]/Rect[67.26 428.6 527.94 439.76]/Subtype/Link/Type/Annot>> endobj 1404 0 obj <>/Border[0 0 0]/Rect[67.26 416.6 527.94 427.76]/Subtype/Link/Type/Annot>> endobj 1405 0 obj <>/Border[0 0 0]/Rect[67.26 404.6 527.94 415.76]/Subtype/Link/Type/Annot>> endobj 1406 0 obj <>/Border[0 0 0]/Rect[67.26 392.6 527.94 403.76]/Subtype/Link/Type/Annot>> endobj 1407 0 obj <>/Border[0 0 0]/Rect[67.26 380.6 527.94 391.76]/Subtype/Link/Type/Annot>> endobj 1408 0 obj <>/Border[0 0 0]/Rect[67.26 368.6 527.94 379.76]/Subtype/Link/Type/Annot>> endobj 1409 0 obj <>/Border[0 0 0]/Rect[67.26 344.6 527.94 367.76]/Subtype/Link/Type/Annot>> endobj 1410 0 obj <>/Border[0 0 0]/Rect[67.26 320.6 527.94 343.76]/Subtype/Link/Type/Annot>> endobj 1411 0 obj <>/Border[0 0 0]/Rect[67.26 308.6 527.94 319.76]/Subtype/Link/Type/Annot>> endobj 1412 0 obj <>/Border[0 0 0]/Rect[67.26 296.6 527.94 307.76]/Subtype/Link/Type/Annot>> endobj 1413 0 obj <>/Border[0 0 0]/Rect[67.26 284.6 527.94 295.76]/Subtype/Link/Type/Annot>> endobj 1414 0 obj <>/Border[0 0 0]/Rect[67.26 272.6 527.94 283.76]/Subtype/Link/Type/Annot>> endobj 1415 0 obj <>/Border[0 0 0]/Rect[67.26 260.6 527.94 271.76]/Subtype/Link/Type/Annot>> endobj 1416 0 obj <>/Border[0 0 0]/Rect[67.26 248.6 527.94 259.76]/Subtype/Link/Type/Annot>> endobj 1417 0 obj <>/Border[0 0 0]/Rect[67.26 236.6 527.94 247.76]/Subtype/Link/Type/Annot>> endobj 1418 0 obj <>/Border[0 0 0]/Rect[67.26 224.6 527.94 235.76]/Subtype/Link/Type/Annot>> endobj 1419 0 obj <>/Border[0 0 0]/Rect[67.26 212.6 527.94 223.76]/Subtype/Link/Type/Annot>> endobj 1420 0 obj <>/Border[0 0 0]/Rect[67.26 200.6 527.94 211.76]/Subtype/Link/Type/Annot>> endobj 1421 0 obj <>/Border[0 0 0]/Rect[67.26 188.6 527.94 199.76]/Subtype/Link/Type/Annot>> endobj 1422 0 obj <>/Border[0 0 0]/Rect[67.26 176.6 527.94 187.76]/Subtype/Link/Type/Annot>> endobj 1423 0 obj <>/Border[0 0 0]/Rect[67.26 164.6 527.94 175.76]/Subtype/Link/Type/Annot>> endobj 1424 0 obj <>/Border[0 0 0]/Rect[67.26 152.6 527.94 163.76]/Subtype/Link/Type/Annot>> endobj 1425 0 obj <>/Border[0 0 0]/Rect[67.26 128.6 527.94 151.76]/Subtype/Link/Type/Annot>> endobj 1426 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 1427 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 1428 0 obj <>stream +h[Y#~ׯ$z7 &@q" A$yXcxqbCsJ^b03n*VxǏ쏟j__uOo>nݏ٭v;щnw +?vaT{W~DvGHf^k;x+<94MikƜB k |:GOm>g|^K9{c{x٭WV +mݷXRTR 0 nu xd: _W8%> +z=?^Bk>^nV<]ۡr{ۻ8.?hmNz@uV hSC H GDo'26t]]}A3rbj,%=kÈM0֜߮~퇏o]}^b/0~Zk7#apE`wuwj-VV0kz ZA9H~}/~J[Ei!8 ::0=Xš9 % * /o0`xk!z'殺BQ +@c0qq[@[-&5 }p<d50ۯ8f xZ6chCQ+TaZ[J+EYǏ*)(2R2zNJ*A)KE>78C\]) wU@dPS;xGeg*eRuJ59%k15GIjs 3*niFTV˰pQYW}ˑFV&5F=L̛б%FO84uX=Q`/y3f\j>:/tvBl<.ސ4ڥ0(ixDڕT'9gשQ'" JibFz#/:s#.[CE0-->WVR%/8xp [UAe5MO"`q"UhUp` 1EE1PR*o֑q#7E sL+iPJDHt)󓸤]].03]y_jmCFNQ+ZWPmHͦ9ՋfPZ(!q b"fJT2"0+#jmaӵvAŕVyV硷<>BdY8]{ǔ~Le,VI%^d,gddd]H)F&d")r\&Ie6ԋL3ߦa:a2)ĩ1iO$1)<;prW߼'CĊ%̈́o"Ō#b<#4[5R5HT!I1h +G+sVLu6U%%Nq6I++';8& [^46b8\L"r:VQwm#R@.Ĥ"%*{ϫ43E!`fs~~Q{¿ajD?HVC>=n/TV&5we=y*q܄|LU4O [-L_\Z?Xyz%i{tލ5~,꓂v,q:m2ķhc%wO Z[Mdn4*~YD寮l&GHv":IE%%n5*e9F@L2J;Tkr"|cIT)c!HfI)c'S^䓐>`oF?OtӼ*Ckc]wIAx Z!;-Rƞ~F3xu89~pyd`jLj1 .璍x|HM:MXb&ϛ$(f$샘b$a95 Z#̨/mOagΜY+KzCxgKFmamxo& #5($ p˔T[ER9 +,>MHI]RD/ʙ搋C޻dvxrxnTGO˒#[lk}wrQ4+]Li (]\2{F<{B.:U9uG U8?hbs$n ;FwJ" &Pfz$rʁ2ґ>q(^>hz/Tϳp޲cVfǬߔ8J{&1QpJ)Jp(vP'ϬJle'";Ee4^(ذYD9m9,,͸&?%<f9L1w u%ZFWcԆ9|N +\.xaow*{bi~,Ļ!/FV.PnF VI}nԱh+>UL1KE*U`&lVmzMKhhb.HWF5|54э&[k,,YK ^wDZn.; h΄! r۳[Cu)+b?p;>9:tt b`&3@31lcWfe{u}?ww?v;ΰVWNnLV79 3I <9`s+=gS{u譴fy3qaz'8 y\}.k9v"z1άC>}?A.D9wFb*UmUqtZ&]tm!*]tUYtEdUkNU&{.'\o e/򅒡n&ݱΪg9G2Β!>Iؙ.T}jT .D& s1eȹS QtL3=;sױ8#6l%6 *su˭ݬ"LOԱu\EgGBԆG q"*.U`ʡ7u si2/"nME-RE|o2-R=1զ6-RE|4 ɡE\ R&CGw_w9%!-2-fSҧtJ:SMLvcAnub$ҦK֣fҧx> +a>4j9hc7UU~hVUχ)yDg!̐qWǗ9g}40}J gbԪ, "2}69Hv)"L9]4Y9SP얮SQiePZvE}ġ^ +N;^型+0Mb50tF~Y H W*-@FJ&EXdDZ:TμLNlr0xFbZHܛMXLJ"3fVHJ: ⍮;nnJ>wשo XЯ0AZ␵DBcU +nƒAslTrQeRE'@w<$cMQtl!y@Tx\43i3ӽS1Ŋc;PtE +>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 1430 0 obj <> endobj 1431 0 obj <> endobj 1432 0 obj <>/Border[0 0 0]/Rect[67.26 728.6 527.94 751.76]/Subtype/Link/Type/Annot>> endobj 1433 0 obj <>/Border[0 0 0]/Rect[67.26 716.6 527.94 727.76]/Subtype/Link/Type/Annot>> endobj 1434 0 obj <>/Border[0 0 0]/Rect[67.26 704.6 527.94 715.76]/Subtype/Link/Type/Annot>> endobj 1435 0 obj <>/Border[0 0 0]/Rect[67.26 692.6 527.94 703.76]/Subtype/Link/Type/Annot>> endobj 1436 0 obj <>/Border[0 0 0]/Rect[67.26 680.6 527.94 691.76]/Subtype/Link/Type/Annot>> endobj 1437 0 obj <>/Border[0 0 0]/Rect[67.26 668.6 527.94 679.76]/Subtype/Link/Type/Annot>> endobj 1438 0 obj <>/Border[0 0 0]/Rect[67.26 656.6 527.94 667.76]/Subtype/Link/Type/Annot>> endobj 1439 0 obj <>/Border[0 0 0]/Rect[67.26 644.6 527.94 655.76]/Subtype/Link/Type/Annot>> endobj 1440 0 obj <>/Border[0 0 0]/Rect[67.26 632.6 527.94 643.76]/Subtype/Link/Type/Annot>> endobj 1441 0 obj <>/Border[0 0 0]/Rect[67.26 620.6 527.94 631.76]/Subtype/Link/Type/Annot>> endobj 1442 0 obj <>/Border[0 0 0]/Rect[67.26 608.6 527.94 619.76]/Subtype/Link/Type/Annot>> endobj 1443 0 obj <>/Border[0 0 0]/Rect[67.26 596.6 527.94 607.76]/Subtype/Link/Type/Annot>> endobj 1444 0 obj <>/Border[0 0 0]/Rect[67.26 584.6 527.94 595.76]/Subtype/Link/Type/Annot>> endobj 1445 0 obj <>/Border[0 0 0]/Rect[67.26 572.6 527.94 583.76]/Subtype/Link/Type/Annot>> endobj 1446 0 obj <>/Border[0 0 0]/Rect[67.26 560.6 527.94 571.76]/Subtype/Link/Type/Annot>> endobj 1447 0 obj <>/Border[0 0 0]/Rect[67.26 548.6 527.94 559.76]/Subtype/Link/Type/Annot>> endobj 1448 0 obj <>/Border[0 0 0]/Rect[67.26 536.6 527.94 547.76]/Subtype/Link/Type/Annot>> endobj 1449 0 obj <>/Border[0 0 0]/Rect[67.26 524.6 527.94 535.76]/Subtype/Link/Type/Annot>> endobj 1450 0 obj <>/Border[0 0 0]/Rect[67.26 512.6 527.94 523.76]/Subtype/Link/Type/Annot>> endobj 1451 0 obj <>/Border[0 0 0]/Rect[67.26 500.6 527.94 511.76]/Subtype/Link/Type/Annot>> endobj 1452 0 obj <>/Border[0 0 0]/Rect[67.26 488.6 527.94 499.76]/Subtype/Link/Type/Annot>> endobj 1453 0 obj <>/Border[0 0 0]/Rect[67.26 476.6 527.94 487.76]/Subtype/Link/Type/Annot>> endobj 1454 0 obj <>/Border[0 0 0]/Rect[67.26 464.6 527.94 475.76]/Subtype/Link/Type/Annot>> endobj 1455 0 obj <>/Border[0 0 0]/Rect[67.26 452.6 527.94 463.76]/Subtype/Link/Type/Annot>> endobj 1456 0 obj <>/Border[0 0 0]/Rect[67.26 440.6 527.94 451.76]/Subtype/Link/Type/Annot>> endobj 1457 0 obj <>/Border[0 0 0]/Rect[67.26 428.6 527.94 439.76]/Subtype/Link/Type/Annot>> endobj 1458 0 obj <>/Border[0 0 0]/Rect[67.26 416.6 527.94 427.76]/Subtype/Link/Type/Annot>> endobj 1459 0 obj <>/Border[0 0 0]/Rect[67.26 404.6 527.94 415.76]/Subtype/Link/Type/Annot>> endobj 1460 0 obj <>/Border[0 0 0]/Rect[67.26 392.6 527.94 403.76]/Subtype/Link/Type/Annot>> endobj 1461 0 obj <>/Border[0 0 0]/Rect[67.26 380.6 527.94 391.76]/Subtype/Link/Type/Annot>> endobj 1462 0 obj <>/Border[0 0 0]/Rect[67.26 368.6 527.94 379.76]/Subtype/Link/Type/Annot>> endobj 1463 0 obj <>/Border[0 0 0]/Rect[67.26 356.6 527.94 367.76]/Subtype/Link/Type/Annot>> endobj 1464 0 obj <>/Border[0 0 0]/Rect[67.26 344.6 527.94 355.76]/Subtype/Link/Type/Annot>> endobj 1465 0 obj <>/Border[0 0 0]/Rect[67.26 332.6 527.94 343.76]/Subtype/Link/Type/Annot>> endobj 1466 0 obj <>/Border[0 0 0]/Rect[67.26 320.6 527.94 331.76]/Subtype/Link/Type/Annot>> endobj 1467 0 obj <>/Border[0 0 0]/Rect[67.26 308.6 527.94 319.76]/Subtype/Link/Type/Annot>> endobj 1468 0 obj <>/Border[0 0 0]/Rect[67.26 296.6 527.94 307.76]/Subtype/Link/Type/Annot>> endobj 1469 0 obj <>/Border[0 0 0]/Rect[67.26 284.6 527.94 295.76]/Subtype/Link/Type/Annot>> endobj 1470 0 obj <>/Border[0 0 0]/Rect[67.26 272.6 527.94 283.76]/Subtype/Link/Type/Annot>> endobj 1471 0 obj <>/Border[0 0 0]/Rect[67.26 248.6 527.94 271.76]/Subtype/Link/Type/Annot>> endobj 1472 0 obj <>/Border[0 0 0]/Rect[67.26 224.6 527.94 247.76]/Subtype/Link/Type/Annot>> endobj 1473 0 obj <>/Border[0 0 0]/Rect[67.26 212.6 527.94 223.76]/Subtype/Link/Type/Annot>> endobj 1474 0 obj <>/Border[0 0 0]/Rect[67.26 200.6 527.94 211.76]/Subtype/Link/Type/Annot>> endobj 1475 0 obj <>/Border[0 0 0]/Rect[67.26 188.6 527.94 199.76]/Subtype/Link/Type/Annot>> endobj 1476 0 obj <>/Border[0 0 0]/Rect[67.26 176.6 527.94 187.76]/Subtype/Link/Type/Annot>> endobj 1477 0 obj <>/Border[0 0 0]/Rect[67.26 164.6 527.94 175.76]/Subtype/Link/Type/Annot>> endobj 1478 0 obj <>/Border[0 0 0]/Rect[67.26 152.6 527.94 163.76]/Subtype/Link/Type/Annot>> endobj 1479 0 obj <>/Border[0 0 0]/Rect[67.26 140.6 527.94 151.76]/Subtype/Link/Type/Annot>> endobj 1480 0 obj <>/Border[0 0 0]/Rect[67.26 128.6 527.94 139.76]/Subtype/Link/Type/Annot>> endobj 1481 0 obj <>/Border[0 0 0]/Rect[79.74 88.4 94.74 98.48]/Subtype/Link/Type/Annot>> endobj 1482 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 1483 0 obj <>stream +h[Yo$Gr~篨]]3Fޑր^ ?4{#+2GU5$gHmC*3+8n_?=~q7nn/7ӃnҘ0ÇQ!;8if&m4?|&{&_Q@CË/ac_{xᇋ5r8TGB}6?4fٹ_Ŀ4ۻXTFmRJhCJq o/~Q|2XL4ZdeY +@oؽcQ܆CZs>SWch#meW5\M~CLcprҹ7?燏?:~!M`اǩ"u䁛2ah"Z5 F=lnng >~O??: ?ܷ~8qJVѕ0 KWqxa8@/4d5|涡sh3ZXfL&@ˎST. Ge=N4wIJپmO4́9 ΤØl,mm*O +Qj Q+Om }U!.va~׭G &H:JüV0z:Σ{'7xף ?s_x螒v&AHLnH i/5נ&4*Xh,])@BwL-BJ<jK:zGMwbCiBwADM \(hO9طvm2o7J~tv&*+GⱳWهO_-ӺAho>S{~n,<0'˜9WC8bU&]?H0DޜhTSEGm+Ԇma;wImE.-ZҦոU 2(,y>axSpm &|_P/iPq%&%v?my@ƒ}Iq+@Q r8߁f- +1<3!a⿊=`my1_%FG*$({Ĺ^X@롹:,>*A +^]*O ̓i gCB[=$]# ̮4;Im6zgFLh D> ǻjFd@BAG$>0p|+1 +g2##?ɭO2r򑯻̞I768 r8|wN1s>gAD@ [S*l4> j +q J:k*U"o##%VF^eyĝ&g %1 nvϣP'dz%W^ԕ,j?؋'W郺?fgCr=Pi,lߙf; &ݸTuc!4)ZRϤ(IQUZ4Т*洈Wꭨ ^̡n|.vl +(& 7GMg̱(*LeRyCJ]Cyz#N3f -zG7H̊ۯ|ކ=6(zG9Ы L4%:Yt=!!QU-{\)[`+2B27PC J-(S:+&$YN䭮,"Сhc~/G&I +K.S z"T,=cXMʝ=n*^&E}I?H>H`QڰxjuBĮ{ +Q>c#ކEW9+rו :H*<'!:Zz.tXE"+@ +\2$TH1CcR\qN|KBԖ>L۳d}|6H- zZMAD"Z^Y4h%UeG1V_H:rնmeS$Jjqj>y+,!g& +Əg|䗞%ulvŎQ1;33k{G`b$Z@jU@S] i-@^X +Fjȿyܷ|)<-TF W-$ݶQ,qX{E?Jܮt/C +I$-" rphh"RkXʩ_z\ױ{fDK80"ZD3D gKoz(>Y#}] ߕ$Y}iq?-[vJ0/R <2۶O9v킞N\|ٳ/ z{YFdh[C]όf&b&69"+ըb=;we#FV vգjC58 be@ųPJt{Dyi14!" +sV&xh_> ղmӫr)[^_G!W# 5 ,sEb2<4˄ I,T)65Ub!N%S%_EOggp ,Y<,gJs~}JIq a̳ &Pf Lq+4s7 L[ Vk5ǒKzf s`ԋ{'O>ߍthXZS3h=N5< H;9\+MToKt㩱Mm%ҌQ\q U*Ju~hڜ&IEcYMЫV$_1,0]:\eP`IL7(]DrvPWH2쑞=Ӧx_Z~NFT>n$-TҜޝaT]! +&yRUӊe =~3j"Q\KlRGp4œ87lmqxYG|硧8CO@>|.j"ȯZ~tz#>"72f=V)]q٪g- #TMp5vC X2CK.EUPb +G +sE)_*xV$wЍ]֌& +Y\RB)'8NH)N"\0n?<#8v8,lԪ%cV]X)952n!+;Mv8e4qee24չTN#kc8l/>?)grCxc.#jJ$'q'i<% T%՝tLmN"-m<,YRt[ D.MA٫"ze+ yעFT:óNgn<ݳ +֩ixo^6 /yD1]Y z +>mM%.0ղ.TwI!ӭz33YOT}U+ +nF7)LҁMĞCo}jS3#p-s*4<ݬ=>R^xOb& +OSـE5V%PuqIO0͌1)ZB Qp-4rkcIsrIqSbx \)9+XI8pJq }s8D،rrz+ꂢˢ3xOWX4ޟ;h{e +ҘV~8Wڥ4dv~X@Y/gY9nc:!.UKLT.XT̑[A сN&Q$lkd2Dٵi`  OXƠlHQ-K}u3AI]ԅ*}.%VW%Wm\sN*Lcj U.enfʊLGizVTYN׌җ:odۅ;W=RQdyfO񚻐ת)ͥ)%}f˂+ 6=+Mr ]&ȥ*ʼš {I2Q[E\uֹH@eb}Q0֡Ex絯SWI/[w:Ly\ps] ~j=;[ {<NŶU +"|gmB_MBMkKɮ1MBݲ@&'eH'^XqIj9f|FZe*MjҊUfbnjueZ_s0zs hTS^cgw];DFD0<-fZLE8JeI%Heֶscwb8U%kfqt2sm̢tZVE2sV{2ke-e;]Xֲ1ū!JmIE X}KM)fZ"\k~fcfw6S}R^er]U6^^e >LKS> Wopkyhies=JR\CgO< L~EƎ]Vu5MDp1#V9d?6pj?;~fV3q" ,hdBб&h80=!(SRv~fV՜kϾg!&aҗ*""HwTD(_edw:`""q>JTv>jW! WŤVEL:YBl\ZH&Ap |Rdj`NsIITӊao6|{-w8?w\6zUd<*15bW{ٕy3QaӜZ⬂4*멎TzJXV7(2o%~ղނďR,)u~Rg+v܊\ʈ}*!2~堅  `2>YK N)|Eo]?IG]nũ]QPN2At9YՍMĕ +7%t5t WZrP3FyJ 8$' f,;NCa㷳wxټ\!1^gk2׳Y 5KNB.ǖ+9LXѹ̋E=##T_Nk}l|(_VMZ}²#':," B6' +dޒcУxYNq$Ć@/VzZ1 i81ffOⴗibQsGJ})z>+ +endstream endobj 1484 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 1485 0 obj <> endobj 1486 0 obj <> endobj 1487 0 obj <>/Border[0 0 0]/Rect[67.26 740.6 527.94 751.76]/Subtype/Link/Type/Annot>> endobj 1488 0 obj <>/Border[0 0 0]/Rect[67.26 728.6 527.94 739.76]/Subtype/Link/Type/Annot>> endobj 1489 0 obj <>/Border[0 0 0]/Rect[67.26 716.6 527.94 727.76]/Subtype/Link/Type/Annot>> endobj 1490 0 obj <>/Border[0 0 0]/Rect[67.26 704.6 527.94 715.76]/Subtype/Link/Type/Annot>> endobj 1491 0 obj <>/Border[0 0 0]/Rect[67.26 692.6 527.94 703.76]/Subtype/Link/Type/Annot>> endobj 1492 0 obj <>/Border[0 0 0]/Rect[67.26 680.6 527.94 691.76]/Subtype/Link/Type/Annot>> endobj 1493 0 obj <>/Border[0 0 0]/Rect[67.26 666.5 220.08 679.76]/Subtype/Link/Type/Annot>> endobj 1494 0 obj <>/Border[0 0 0]/Rect[67.26 656.6 527.94 667.76]/Subtype/Link/Type/Annot>> endobj 1495 0 obj <>/Border[0 0 0]/Rect[67.26 644.6 527.94 655.76]/Subtype/Link/Type/Annot>> endobj 1496 0 obj <>/Border[0 0 0]/Rect[67.26 632.6 527.94 643.76]/Subtype/Link/Type/Annot>> endobj 1497 0 obj <>/Border[0 0 0]/Rect[67.26 620.6 527.94 631.76]/Subtype/Link/Type/Annot>> endobj 1498 0 obj <>/Border[0 0 0]/Rect[67.26 608.6 527.94 619.76]/Subtype/Link/Type/Annot>> endobj 1499 0 obj <>/Border[0 0 0]/Rect[67.26 596.6 527.94 607.76]/Subtype/Link/Type/Annot>> endobj 1500 0 obj <>/Border[0 0 0]/Rect[67.26 584.6 527.94 595.76]/Subtype/Link/Type/Annot>> endobj 1501 0 obj <>/Border[0 0 0]/Rect[67.26 572.6 527.94 583.76]/Subtype/Link/Type/Annot>> endobj 1502 0 obj <>/Border[0 0 0]/Rect[67.26 560.6 527.94 571.76]/Subtype/Link/Type/Annot>> endobj 1503 0 obj <>/Border[0 0 0]/Rect[67.26 548.6 527.94 559.76]/Subtype/Link/Type/Annot>> endobj 1504 0 obj <>/Border[0 0 0]/Rect[67.26 536.6 527.94 547.76]/Subtype/Link/Type/Annot>> endobj 1505 0 obj <>/Border[0 0 0]/Rect[67.26 524.6 527.94 535.76]/Subtype/Link/Type/Annot>> endobj 1506 0 obj <>/Border[0 0 0]/Rect[67.26 512.6 527.94 523.76]/Subtype/Link/Type/Annot>> endobj 1507 0 obj <>/Border[0 0 0]/Rect[67.26 500.6 527.94 511.76]/Subtype/Link/Type/Annot>> endobj 1508 0 obj <>/Border[0 0 0]/Rect[67.26 488.6 527.94 499.76]/Subtype/Link/Type/Annot>> endobj 1509 0 obj <>/Border[0 0 0]/Rect[67.26 476.6 527.94 487.76]/Subtype/Link/Type/Annot>> endobj 1510 0 obj <>/Border[0 0 0]/Rect[67.26 464.6 527.94 475.76]/Subtype/Link/Type/Annot>> endobj 1511 0 obj <>/Border[0 0 0]/Rect[67.26 452.6 527.94 463.76]/Subtype/Link/Type/Annot>> endobj 1512 0 obj <>/Border[0 0 0]/Rect[67.26 440.6 527.94 451.76]/Subtype/Link/Type/Annot>> endobj 1513 0 obj <>/Border[0 0 0]/Rect[67.26 416.6 527.94 439.76]/Subtype/Link/Type/Annot>> endobj 1514 0 obj <>/Border[0 0 0]/Rect[67.26 392.6 527.94 415.76]/Subtype/Link/Type/Annot>> endobj 1515 0 obj <>/Border[0 0 0]/Rect[67.26 368.6 527.94 391.76]/Subtype/Link/Type/Annot>> endobj 1516 0 obj <>/Border[0 0 0]/Rect[67.26 356.6 527.94 367.76]/Subtype/Link/Type/Annot>> endobj 1517 0 obj <>/Border[0 0 0]/Rect[67.26 344.6 527.94 355.76]/Subtype/Link/Type/Annot>> endobj 1518 0 obj <>/Border[0 0 0]/Rect[67.26 332.6 527.94 343.76]/Subtype/Link/Type/Annot>> endobj 1519 0 obj <>/Border[0 0 0]/Rect[67.26 320.6 527.94 331.76]/Subtype/Link/Type/Annot>> endobj 1520 0 obj <>/Border[0 0 0]/Rect[67.26 308.6 527.94 319.76]/Subtype/Link/Type/Annot>> endobj 1521 0 obj <>/Border[0 0 0]/Rect[67.26 296.6 527.94 307.76]/Subtype/Link/Type/Annot>> endobj 1522 0 obj <>/Border[0 0 0]/Rect[67.26 284.6 527.94 295.76]/Subtype/Link/Type/Annot>> endobj 1523 0 obj <>/Border[0 0 0]/Rect[67.26 272.6 527.94 283.76]/Subtype/Link/Type/Annot>> endobj 1524 0 obj <>/Border[0 0 0]/Rect[67.26 260.6 527.94 271.76]/Subtype/Link/Type/Annot>> endobj 1525 0 obj <>/Border[0 0 0]/Rect[67.26 248.6 527.94 259.76]/Subtype/Link/Type/Annot>> endobj 1526 0 obj <>/Border[0 0 0]/Rect[67.26 224.6 527.94 247.76]/Subtype/Link/Type/Annot>> endobj 1527 0 obj <>/Border[0 0 0]/Rect[67.26 212.6 527.94 223.76]/Subtype/Link/Type/Annot>> endobj 1528 0 obj <>/Border[0 0 0]/Rect[67.26 200.6 527.94 211.76]/Subtype/Link/Type/Annot>> endobj 1529 0 obj <>/Border[0 0 0]/Rect[67.26 188.6 527.94 199.76]/Subtype/Link/Type/Annot>> endobj 1530 0 obj <>/Border[0 0 0]/Rect[67.26 164.6 527.94 187.76]/Subtype/Link/Type/Annot>> endobj 1531 0 obj <>/Border[0 0 0]/Rect[67.26 152.6 527.94 163.76]/Subtype/Link/Type/Annot>> endobj 1532 0 obj <>/Border[0 0 0]/Rect[67.26 140.6 527.94 151.76]/Subtype/Link/Type/Annot>> endobj 1533 0 obj <>/Border[0 0 0]/Rect[67.26 128.6 527.94 139.76]/Subtype/Link/Type/Annot>> endobj 1534 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 1535 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 1536 0 obj <>stream +h[Y$7r~_QIIPw$0 n,f$H`\$3ϙ ¨$GŻۇo7}O߽zf6?zwfc6wWy3yccbq~tOW槫0&oкw1Ϥ6 F|UzxhLm3&[c_zFsov)T~C'q/e_6~x(D7ÆǙї 7y3ClU^ۿ]G o>q~׸9 +{ Ocz]p6O֎C~mmm;n]_9Bi0>0FIHd}('(1ҜdӐma!OLIi'֘!wضW N-;u!ce 'v&y4a4SC0({ +M#47#*m'=)3G ? 2 n;Oroo| YnB#:RyQ8HO v@#hEV6#o.iYMA[}&$}{*Cryd#pBmm~5ʹ#IO7OC'O8S򐒩G?nG6By~1B#kNr f`h ?!-{90"y|*fpɕGl;mm+L$xfMB;7DYE4/-<@r–8g!zw+G`)t:vJҩYGmW_>w&l owl#}{ nγmgCNʤ/C|pb1#GQJ]ӂ}>gu=0]da=#"oHL2"4 AqX6 mcYЄḋn*\ Z r'Ɍj 4QA[FE0 +}G?;/U`zUCK \LvҲliΚv6}1Z n}Pr@!zCy>$p1,svTMm@V8{镫P "ݜdib$q%Qz^:[lmbo]m`o17{nAy-H6ôsR4;dY*䃝 rJK0gÂ,#D$5/)$kr,pl40&QqHI;wi3[zW=nUWJU1!RB]]dKlqFjq7f)cbǎ!U0w퇸XM5NJ]sεks3q<8-J87*nkSk5{ʹ9^dj 8@I +"mse]4 ;}БY4j՘mkdjr!or"K +J3r6UDܮARR@Cy)uAre_e r%r];vRhEz rG5)aLr65ELORwLWEZ"^ջ⏏Eځ{N֖-M;g#Q\AeNM>/f_J\ݪ*9UOs)O|)DF2>2ޮxx4%ډ-ΓyKLaG?y 4 bu+{10|4F)r۽]@$akYo,}m2i0ݦ^mp_VB TR1w_WO(́ /nJZJX|߰\?M !udޙ Z" Ylp. b+T7WIjPXgFY} 28n7l*p8 "T9Cv=d[p`0Ƽ +zKԌK.<_.H~;~yA$ uReZcɊ+g`d==}`2v@qTn_?O:Egd[anaU;q#5> '.95/ezOf(n*7L(6d[LK414d_ R^ָQ|a4d%LLyOc+]79ecƞ5eT\_o:49U!&\` +Iޒ_/TąFx28RT$cMLۆ0K +"%_]&xʜڬhJ8"A"vqMҢPZ Do7njtr[rkZ`FŭP^7ROd]dK V &Wp~J!V~!F҉(X*DhtȡO21 ;ZU +Pjk[cazܱf'=DlGQ9$}AVogNJX)Z$,ab4t[)rdWUI fk`S0Q?';|]ЊDLcU*,k&g,z;q؅֔;v߆_N탕0T`k8Ȱy"sҢR 0EtMƿM8[6\!AXӓi0 Wǿhh"k QPm $۵)N8J\Td;ccr*}ĘkApݺCVŵs&!nH101Z(-I"-"u\~ׯu-QrTm`6*ܻ @T {U5*)g[*s95OCbTj!k? ݕ\߃O;ĚKj-$VLKÎp䬌 4Vd9=!/L4mAΙ( pcz|lH_EϤÔS|M;]W(u{{#=7ejq1ŋȽ?Ƚy3ȵO5,,MC1hX:!Ϣ"״"tEbZVФ'ai’Qj4e{@Mb^E>]N +¬-#p~-~K-% !f ЎU쨒دɪZ(FY)$CEj ڬ@3H+e{8vF R`BR;C.L:v PhmR4sE OQ-: +%^ґ.B]WZIm>hzL-OP8]+$TTƷ@B}#dr怽pH{>ƒ_ZFx0S-SA)g)ŰeIRNn3$JE3bBbj-oIB'/<~$XEfx:0k7Rеi8'bT+*}rf3lV'g¾ip@kNtE10 BKa50\e_L-ܧ[uCv=9+pMnqsʀ rOex#к +?2`54=ޘF K*8Z嘬[€%Ja}A(} ^1n\q?|n\{X0gaVh)t'j L\K!\DJ -RV[9FZZX=&lsTqϪ9԰=0$?q\kd:LWJ3V 8\c% Cj/ۥm0WEov^R;㔞 +i]>1i%:sMLkX7Mh9M3gy))%0h^^8t>Ox OAyS6༆ࢄଆ<UWRVxTrNJ[ ɸ5Ck(!p KȂe>T]QխU)a["IbYTzjʍ&{Jg<.92G%?rrxӲN8({ΊnDѣ5(WِٚڧiLKI+<ȗWқWR}`u9jrUo eK4uyиBo']x hٗ$1F{gf4GڽxF$*D.tҫUWGkthV3Ь R$N'qi]pV#)=L^xTݪaV ,7s??T\!ч3\o- ]ih ş$5- 䠩5㴞ڨ[𩛻9ϳyr-pE S-|qQ!QGۉy#VX0@S{]Ajz_`wU)C\&b-#ej.L Wa$.j5#aJiDL U2TI}zrk[-ӵ~cZ#'. +/Mr ;Ze4JLe}a'V Nd..lltl^N(ERɃ1%N0wws&YY h9xP&B,df!weEt|z5*V]`=Psqt4Mklg 3jXv5Ui +j@D$UF?hKw&Uslr_xrM;xQ(lfV,o>;z(Y.vvrY^E<1(mv,tLS..<%>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 1538 0 obj <> endobj 1539 0 obj <> endobj 1540 0 obj <>/Border[0 0 0]/Rect[67.26 740.6 527.94 751.76]/Subtype/Link/Type/Annot>> endobj 1541 0 obj <>/Border[0 0 0]/Rect[67.26 728.6 527.94 739.76]/Subtype/Link/Type/Annot>> endobj 1542 0 obj <>/Border[0 0 0]/Rect[67.26 716.6 527.94 727.76]/Subtype/Link/Type/Annot>> endobj 1543 0 obj <>/Border[0 0 0]/Rect[67.26 704.6 527.94 715.76]/Subtype/Link/Type/Annot>> endobj 1544 0 obj <>/Border[0 0 0]/Rect[67.26 692.6 527.94 703.76]/Subtype/Link/Type/Annot>> endobj 1545 0 obj <>/Border[0 0 0]/Rect[67.26 680.6 527.94 691.76]/Subtype/Link/Type/Annot>> endobj 1546 0 obj <>/Border[0 0 0]/Rect[67.26 668.6 527.94 679.76]/Subtype/Link/Type/Annot>> endobj 1547 0 obj <>/Border[0 0 0]/Rect[67.26 656.6 527.94 667.76]/Subtype/Link/Type/Annot>> endobj 1548 0 obj <>/Border[0 0 0]/Rect[67.26 644.6 527.94 655.76]/Subtype/Link/Type/Annot>> endobj 1549 0 obj <>/Border[0 0 0]/Rect[67.26 632.6 527.94 643.76]/Subtype/Link/Type/Annot>> endobj 1550 0 obj <>/Border[0 0 0]/Rect[67.26 620.6 126.72 633.98]/Subtype/Link/Type/Annot>> endobj 1551 0 obj <>/Border[0 0 0]/Rect[67.26 608.6 126.72 621.98]/Subtype/Link/Type/Annot>> endobj 1552 0 obj <>/Border[0 0 0]/Rect[67.26 596.6 527.94 607.76]/Subtype/Link/Type/Annot>> endobj 1553 0 obj <>/Border[0 0 0]/Rect[67.26 584.6 527.94 595.76]/Subtype/Link/Type/Annot>> endobj 1554 0 obj <>/Border[0 0 0]/Rect[67.26 572.6 126.72 585.98]/Subtype/Link/Type/Annot>> endobj 1555 0 obj <>/Border[0 0 0]/Rect[67.26 560.6 527.94 571.76]/Subtype/Link/Type/Annot>> endobj 1556 0 obj <>/Border[0 0 0]/Rect[67.26 548.6 527.94 559.76]/Subtype/Link/Type/Annot>> endobj 1557 0 obj <>/Border[0 0 0]/Rect[67.26 536.6 527.94 547.76]/Subtype/Link/Type/Annot>> endobj 1558 0 obj <>/Border[0 0 0]/Rect[67.26 524.6 527.94 535.76]/Subtype/Link/Type/Annot>> endobj 1559 0 obj <>/Border[0 0 0]/Rect[67.26 512.6 527.94 523.76]/Subtype/Link/Type/Annot>> endobj 1560 0 obj <>/Border[0 0 0]/Rect[67.26 500.6 527.94 511.76]/Subtype/Link/Type/Annot>> endobj 1561 0 obj <>/Border[0 0 0]/Rect[67.26 488.6 527.94 499.76]/Subtype/Link/Type/Annot>> endobj 1562 0 obj <>/Border[0 0 0]/Rect[67.26 476.6 527.94 487.76]/Subtype/Link/Type/Annot>> endobj 1563 0 obj <>/Border[0 0 0]/Rect[67.26 464.6 527.94 475.76]/Subtype/Link/Type/Annot>> endobj 1564 0 obj <>/Border[0 0 0]/Rect[67.26 452.6 527.94 463.76]/Subtype/Link/Type/Annot>> endobj 1565 0 obj <>/Border[0 0 0]/Rect[67.26 440.6 527.94 451.76]/Subtype/Link/Type/Annot>> endobj 1566 0 obj <>/Border[0 0 0]/Rect[67.26 428.6 527.94 439.76]/Subtype/Link/Type/Annot>> endobj 1567 0 obj <>/Border[0 0 0]/Rect[67.26 416.6 527.94 427.76]/Subtype/Link/Type/Annot>> endobj 1568 0 obj <>/Border[0 0 0]/Rect[67.26 404.6 527.94 415.76]/Subtype/Link/Type/Annot>> endobj 1569 0 obj <>/Border[0 0 0]/Rect[67.26 392.6 126.72 405.98]/Subtype/Link/Type/Annot>> endobj 1570 0 obj <>/Border[0 0 0]/Rect[67.26 380.6 527.94 391.76]/Subtype/Link/Type/Annot>> endobj 1571 0 obj <>/Border[0 0 0]/Rect[67.26 368.6 527.94 379.76]/Subtype/Link/Type/Annot>> endobj 1572 0 obj <>/Border[0 0 0]/Rect[67.26 356.6 334.5 369.98]/Subtype/Link/Type/Annot>> endobj 1573 0 obj <>/Border[0 0 0]/Rect[79.74 88.4 94.74 98.48]/Subtype/Link/Type/Annot>> endobj 1574 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 1575 0 obj <>stream +h[[o\Ǒ~篘 Hdc $؇4v"kȿߪsEIr29}u7qw}{~:~|Oy{~7WonnnTnd.%?<͏Wiݜ qW_C~iCtABA߾p?v*u !f ;cW+o'R |.Pq0y0 2Roo`%1y7YWJM>wxyy*v(;cxgynʴ l=#~ͩKMNiX͹uXd'xLו㔺ea~YXWՊЯ|S2eNwgdl曟OOwo{[ݎۙ#uԆ{m h"{3&s +Wo=wo~w?}}yKܝ~M Osrpf, O"N?R0vv {&O%Hi~ad|iCK9b::JǴXs}:ɦiha}@r0`y{cd7ODJ[hT3E%0!NVjaqmL:(6KC^zh)05MdaçoG'~J!ᒘîU]wxpGdr(ǡ350y:RI@BW CT4JK_mi3 +(ipL|$Tp;Xx?f5fКp8XIB:մ׫ɔ D[?G{Oԭ&?&¹:LyG?àm r=%cRPCg$` 4 P w7t~ 3xs N'n&g:L{I4, ӵ)sR)[z0t-.kâM +)UX>A7@hSO~mFɧYOâ/RY?"m|8K`>L';9M逭_=swk00!F8~Vl-qgg!Ikxa"i$WrZܧ~nKHLgl[-_ATB% %TL8 *$<H2 M-N$W5S@!#vU< WJ×, T7.eS07Qiy-D\B>oļ%>[-rSǬiXJChXaV0IkbCSkC߿eLn2^6 )aXՎzUl cԋvMh MgDMUT0#C;Jô)s -3"gUHOWk(VeV`DxHhr-[Ӫnv: P1E.m*+3z~i JiEҽ]0U^Hg,f x S焤t#vP +|LLWq$*KͼCf{EmJ'+G4㹿TV➧ #lt|ڧnH'R!dJZzhZ`j7j/)+m}[nj + ^im6#Y6Q&;b emY*=&JO/sREF54L-*=ճg (T>S?eX6*Sz -d{Z%&u.C$TN ?ç:.fwjµF%AWXX; _jMSl9w,O/b~3ϕ[/b|̦y+تlX9`Ɵ0P6:0-ذݠ(;tʣ!d͒#C'I`ooGako,`(KEm06D%>Ǡޥ-YLcfC|Ǵ(mXPh2 RoO;!_?!,Zpڬ޸Oz=Zc|sŎB2PԅPMBP)!P :4? `_Sr{Q0O?bO 2@Ao8v\.s Q|藪gHیz%ܨ)Ejb'J7S>5#WnxA9rÍ4^or/"1h"޸KИ4v5i}Bܠ5{%dȣv] dy퍂58uJEI˼xz4U-:~f} ̾=SsԶ2àyjoӨ(TR[޸4YNru޶EQҍٰxQWQDƊW)l(r]-޻^"H6q!ōtrSm 16H]k#e[O,G2Qlwi¢alJ3w(te<-:TLw[s DlDW AW6 ho9v}EcŠꭰ1+HUlv-a垬!Hrg7`CuKd~)ee?ej;c3"Cg{vZӵd惋ylAfMd x7Xqdxą`7)DO;]1:|aSO^*%M]JM*/W +*Tvԝuv%]"N5O8f. U_kf :-(,=t1h{Ϗ*^4ᓨْ {W8 tκWPIpz#K5~dyNz囊Pζ;<*Q.w; +/~#Hȋh{~Ӑ`E¦p:Az<11bb~m{iR$CxϤ7E?o~aÕՠ5|%MQP4ДZEac^)SP4'$vAmjU@D cc`F~9Õ_Ux"#.Y2Vf#aҵ2WTaJ&tQStZ~ R)l$q@䎳,69UepidB ;#>ǏA܋Hk?e 2A .q [ >r//Z,y}=[+o8hUZICOM.@@yqv9;tv>aNBRXR$%==`ţCH@EҚaAX8?pJV_EVG'Z3bޒ5M#A#AuumW({j/k_Qß\$%o-><ff XVٽ 8nY aÙY _ B;+H.LU 甒:~urancbޜlcΚ˦Ulz|RwSxKVjϯ%~@Tu{IbL_?+;oZI.{@ᴲMjX +OhIlŋ{1O;Os]9+ߕ!^= +Bs w +jƈ)p/Ϝu)(־?Вl؛Ž7D }y!*1*5WN{CB;A$ec|ز $$c/#OJPke7) 0Hv/dd_A'UEgOY$ܫRp^gѳhiezA=y ĶcǠn@Qc}b9>~ tƏޭ,$--D̙mdE6م6ۊYw=2Wz8T@+뾧X-~~˳{?Ga oq:~ 'u}<1dd6%*[Lx> +552jQ#Apȫ\뜽'Y-Lp%:TEdi\uB&f ZW&W$m<lEgq-:?O<=;`.- ȣc$5Hpyt~.NV,qȥ&͊+QW/^H +endstream endobj 1576 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 1577 0 obj <> endobj 1578 0 obj <> endobj 1579 0 obj <> endobj 1580 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 1581 0 obj <>stream +h[K$7rȳIP  Av>{^,}+3{Ԗq3$x1 ?]>67O6!Fe,aW$bdFpR-,n 9W?Oi%._ogMYe्Z ܂]XꖋRԌֿ<}O?}o>LGi5%Xq&-?>0˦ڥ5e!/wOgX|V3vQk[ *f@m!amn5pYlHtL[f: } Mozk [1nk +}]]mu61Y-&5֒UN5F3Gb/$hؼ#-FVTjVoE%GtggZ:ieC2f\#`Fr-U{cQ"gǂI}&G55DER~]?otЍƺ ȓn@g )uA$N-[a8nF:on6jq%6g>Fa0*Sm+@QS{XM'@araS//c%i&i4g;]ܼZ^Y55c`QP|t-o"I7]Zl0mo G/"f-<ՅGYxjWВ66Ղ8|ܡK ~'Q4/CfQޔZS4Qu®}7q-x?FgZjxr ?.>7dw3x0 =ܫk짥9D$\c}/ +R-0`:=y,eV޿<%sK|ΰC\]"^lZ5ovJ|QG$jSTeYgth\VPmgH*rP5Uۨ~B`G~)aܢWMFXJW P.Myqp` ,p0ԯsq7^:[ICw;R| }iO{о5z:We¨c,auU-EG8$DFܬ1T Omc葎 \Hu y7%vOޓ& ,˺9r_qyiSyZ,RB1nÖQ +14 ^Fy +cN7G (c/m03X{=8<qdF&,d<}֧ 6׭0gt(ޖP8H8/IN#~mF٨:q@|$N@/ 5Jc":^T[ * |cxj cfI@B|RF((hTAqeL0 Myn x3i +rNTTt"@ $hX|&"2`0^=惢S^@^D(cRm˼8Ǖ 6p'IjdsRHl$קH\t n/ lIGfGBߙZb%"&hq({Pq"+n7ZV_ +-'BezEb;MFz^h8V/fOHߓQHKKZ#4dLNB c#'V"˥R(}%r< ]<-۔5AIIM˶kn0&e3`z`"04ꄜ]LbsszLԌZ,SiM5r B:;^8s<CIܐX6Q:MXuv ɤl<h']8F%G^!M?7oe 6ZW,N:$C~B*^ d(>o9|Y:%INa(3m%?{ńA1-phdn( QuأJ ;~mdu[E`ŇMKc,JiΛXH>,muGEX: 3>+'f0M;KFh%]o급{Q6]_#\n0\:h3Juu,h"fs>R}Q{{y7ӤMUYIkpKCu!=]{uOqSstt\DjLnY"!f5Jf!ɣmlm n=*Ylt9wL^˺ȩ}= i{;5l'?VtH#4f,B*Ͱ_%IV1=QD(QP {Ty#h} rC&z9a@zrvA>⃕cwHgl0xt=( 1}rw:CHMP1j?˻%' R]`>а A-j|:5 jVCW4(nEy4i@C*zbgvNKݜ +Ch.'K z!IJI{,쎞˩a#ӏKoM}sWڍ}[oli'FO o(aDMizaEuQOs4|tⴵ>bP7dܨ&v%RvB{?ie{fƝ֢P>8ėaY3_ܣ^ƨZ[CZlE cp\HۧL&u^=2ieu)իDqk@(۽U Zvkw{pcxqfl;nЬ*ĎƉ慩!lie*sKvb^P5i]-/X\@7͡`e&\\ytKX)_k$2ǜWѷηޖ|W~J>=.ͥu*Bn(Bv@5 + P_Ғ^ݲcr8nB ͟/';/}Tz K_:N=gcrvΎvj\I;An,L|TLv9lEu#=nE&o 9/kɻCwϥz/1u_8<;_S^ +Zw_@jyiiy丞H^wlBv؜U53wn4F%ÆMD0D,q ] o ѭttK (!5gEțܧ`|i fj>5=d*:eֶ> |+GCշϮnB?2Zv=h;%A60Di~W̹W!KWKxHR64*Dew[DŽrDgu1JՆ^1nWUGq\֔af3"}~o dD]dMMzv@Ԑ$ÉsOU+v8,e_ϓ|;i?GECT=NU_yy:gRS"gte1+}pMX[y^~U^7pSS?h:kR KV ZyZOd|Wg:x'e'Ÿ=nͭ,8~~_,f +endstream endobj 1582 0 obj <>stream +h1  |э|f.T$ +endstream endobj 1583 0 obj <>stream +h{[ldǙ^>sNNϥR9ٲkH4H%3JJfQ"dI<H y ` y -هd'u~i$Xԩ_mF7>ih<aڝ;ZW_7?x_g07{0޾{o#oۊj߶~o]O}ƵH |us8qowo|_ƉƉ_~۷>v- h,,6h´|זann`LFXgoE#%k4Y#l-}۳iiJ5K9;߱#;w֥mG*hmؼ?O~>~緿zw~[7nƯ_z\կp瞽|Ϲ" +/88x+B c|3Y8iN+'_M6m֥gdsv,7܇m;e!^xyµ׶Fwmcwd N>GwǣIMKk~sx`'/Ѷ]xrcc:޺eX^߹hdFG:k[Λ֍O_<{ޙFխՉ-1;_?ek˯m}VX,;Oo߶> .ee2*_/3?Y퇟m6L.N+{vӺՙާ b6tMKa{.ξl֋.}2g`q 6d!].~bk~jBh l՟O' r8+myҰݦډ.¥7ƇxmˢҁyqcgJ'.,5N6_*[ -E>s߅"F[[A%;`wi}gcF%9',1X{~o|yla=o1ڙٰrv֍‰f]R2Ʒ|r˳/K0wi|iͫ[o ޵cO6ǻÃӖ]ĥƋv5/XJQ*W>ft[?j1/< =.'{;ťic{^lE]ckem'77vp{o`߂ָC",d5no*3uoqś֍MwMۢ,7'',qnnquz 4=_<ތ?yeٱXF+ֶV'9qQ1~b\3lYv&''{% Y*iV\z퀗wnwf|k2e|溝za\䓫ΎGeu87wK*zZmv_}viƫںK-t&xb,kmc;di}1޽e7o{kwrm6ťEF7-5NްZk?z|맍7,[\\Ǝeޣbty4]K%/߶@ZO8xvX3{c8j!{ikr5iN÷7& r%{,N7Dɵ-z7-U ޣ-ٞiˮCanf:kM4K$X=Y0>7}@;[}St!;vk٥5*we~zgW3.v9}01z6p +iO96[*{YcUr?S)pY%#Q-޻6 ^aڴ|.ߞ {gLV̸CIqҐeyЖ/H_lYeQOҴeI~ewI,H@q}ly[:2YY{O- ܹI)m+@ؔu2V[9#<%0Dvm-/ٲj=ܰ~[-/ \mpmx?Xtlٴ/d]_="{زg?elǶe)[ڲ%^F%{L=otmۖXJY|m)igˎ- +>w}y&IM _3Y'~9%x/y9O_xғ¿y˹ +;|;'y_sӅ3ߕ;1WY"e(?/xyR:s9cʷ#2皔dz k$mvI -_x<&e\/^^ILnw?y +d՗9(f#pZֱ*a\_"c2i٧'d2y< wNaekUv;' +:QrPVSr/mȺ37_砟^+gן={كUm }>*4( u׃׎YQ%J{?s7reE^)8*{+ "\9Gx@`o]ȸ ,wd͚M]͏d\''ot/)ߣg%(=BeX}.i<~W .LZT@dH|s" y>IpX<;9o|ُo ozSuiWEzZ&zF?2_Bg6.\ב9r23] Mm۠Fs=L7w z"ӔBI_q0HrI/~WtP4aEl c$ rE +-dڻҖرrzQ&}?-^%Ö܇ttzYo,cRl:aDEiH\P\#ṐC;'3[CkMق=Od-N3Xw$cA$Cvb/`kɷJmЧG(s O[ +{݇ +]D3r7 ";xC?bńK,Y̑>/ÄcY5!| \v#^{<|0&ÍktDgM=Th +K=ӚBZgD| D +Eʾ\pGY&ڵ=fyWB|&?1Q {詏h޸F_iݽ7:-? wU0:B')|ݔwΈt"Y-*)Z[f{q2Z3XwHBb\l;# +.yfw ;}v;Bm?O"m.HS +; LI^]d)qIp@~7̡}>W[S&}bX2e3S oOa s`Ϻ }'Nsepxah-Ű=۾́ަ9A}mݞa?3#ڰUiWyhga^0>?Ap_u>=?ȧ/@ׂ=l˜Su^~ g<rmp`V@>`r_tMWvAՅ5spvot2#kÚs8O Pg<< ȁ-?gux綉g|dc4~{ڦsg41pŴ ! y 8 NIM9GXE@z(|X) sSeD-;J9[x·  ~C,|{ӜOmD9(=G,<%'ۥ}sڷ>hOOi)q,G@FDK=̣;[ 9 ],tqcs|ԕ\E|9wl.Fҍ3qFi1r@[s8x; 噋TwF4132 0cxުP꾱%"2:O4?2~f(OhvSm]F8ͼ?Co0Qf#BBX. Os3o Ec{/ˏu(_`x{m;mS;'8 CX WNB2?`"7m_FYhv_lkL՗KgyGA,:)3r=@?Ph!s2jöЖ#tB匆ڎW}o:wh$yi4@8>.@VDzo2?oTc6ό70zcòDBByށL3[x-,gx|M. ̴ (9TpaqlRȃa+pjAg݊>HSkgD Bwk/72UVHM葏B>jdioڸ?(Gg#Ι롣Pm b"S Nޗ ksCDe\Mx=iWQ)Hq'bd-w#0U_tC@d'ϵM^u6խ;mh,ۮ@9[}2i΃ }wӁ53E }'7՘ESvc681oߒO@y +ca[9KPN@DL597'xdGXVEv"^>5292]ֺ9ET#y`Xw\{_xm8nL^;Wڒ3+ox.7U?;KgLՇJh81*.=&ޙ !8#׵iގjquj]XS*cwh.w᛫5Uth^@;9WpsUۦx!1̇~e<mS̺SW@G_~?4мrv,ď +m:ttV ?]S>`,KS]ψt|$&w^=_@: eu @ψL5cOtQ tЅ{b@|e cvQB01t2ScLN +Ig +ق于܏gM]:TϨCc'/CwhH&K.5o25U_s6ڔcYc3wppT֎LBVt6^sjZG2 u (❚=C +NBڳD9+'fC$z4L5}\|ǚiq8f>NNwk1 ͷzXLhu~ĹiwKHIW̉Fh_cJ)^YFFڏލ=W[E_`-jqKZ1X +GIhP΃sEOameJ;n]S'6BgjP|.oPOr\\cMBۺ#_C)L5 +* +Sp| +c$8c R\?sІ9O0mX†qi=Bi>5'"<-iQeE-9jj\s c`qsu89=+2E)Ʃ8?*03_Ę̵x +L^=qud̔;y&op=udģ'YA@=oeD#R|6v y!XNG[Kܳ+ZLtvMGH߮=X-~i}6:>)kJ+gCrldL?] Λ*r;-ǣrRqG6h!3zEJNH/D +=:ul6LO{y/-h|Xѯط8Usbt{/ u>8is q> fO^Gܖi]3|%FWe^*<\_>sjlfm)]ѡ}xJ=1-,6@bʙ}b~>ϱGFc75]l/zv]'J=3Szyxfgm18E"0U[V;>3_̾ij73~|ӒDlxpjl7}6Y7ͼ7ȃK f 1dl7fmoQ {ATh7Fe|?a]{P ǒb,Cf6Tѿ&Na_5"6~{9_v.|_aX v +=:G38x-g +X/ߵc0?=Ƴx+ #:?^f|~gu1)sSi "aA;-''c9} &0c0- 91Oi#T+ƘP^3p~`N/Qh.tO"*%'nBia+8T79Ǐ7QtmWHi-uK1N>3VhI'3cf>Y({-7UJnmmc~ra@8azc֓yNr^M=ak,2QWKCoYV. +`=743T O֓\$%3okJ%34ռ4?Yӿ"Spoݤ}[21!j:jJVק9!2,[$i~|1.WhqrYi@cgTѕ%)9闱?;/U1ߚ%VPcN󭱮1=?0W3K]|4˾>BcY7TNlT6|8爲O7v5+/&=`4 h كYO+h}?e>rf9sXf6hsT)) 8龢.9ʾyuJMe^9!=Ye8cb3o  ށ]LIL&f>m˴\ħSIom L?;[c}$Cj`ނ-Bij ŊL֤=FISUs7.)2)۴XFF v߃L7؄wGoۡ~S9fKUsh?r^l|s{ 磇\Z3ef>s鋏5̼߿ǵ>mEl{l 5C v7{mOЗ|C.?ב\޺ٿ{Z+Ef1bE8$3zD⑻Ny&;b:}6Ǟ){(:/ښ¶ j1.4[ES+5[{[SSѲJ=N%7OctSI`m둢i6ئߙNw/þv嬶hs܅o @~;@+]Opڴ.*+43>u8Um6R9F +'Wd1qn-kKYc~C=i2`ߡd:{`]މ/@˵2^G[o#M}Mgeql{bA,iti1uY+'$=ReggKg%r8Ͷ¶325gccSM̼mZ1B;,j6K*1&EF!kV!u%*6c }yuvqޯ\ڄ}>o܆6쑫L5VXM#c3bC8Vfmழjlay)M b9}4P +}|K% + jmsz[ ixn,> )#}%WN~^l_;[(]=*nTm8NnlhS3Hy%1jSvY E 41vt a;IrNО0G3#xRaRhxN .DKa:H$M(yv=c/W(R{F7s5 !=*xhyh+$8XLugDK\Aá/,[Ƽo Vm|/}9')4="Z=)ϜvTwb|4J?3y#U@ SFevTWᩯ/UtTsK=5[FdEMW#SM?_+<}F^}q Xb5t8G[9LKD>yxFB4cFi@a1h]石Ź7>Fq~UmqG`t7hN G1iq:tXp3^we +٦ފv4-OhTmM߀OڒYal<<>|=q_ﳑMkw6ZGL0k1hĜX-׍i1m8i\櫹6Z#>8ψyϯ%xL7yZj%p1%@|x +oa9 +=)-ݑ):UNQ&,;L-̌nC)Utg֐)㰞+z~ae@M9ϔs'!8I<97%ٵY'Qv6)b5ƼfChmo~qdz*C;.b c!"Nnø q1F cd pwNBhpk(H=2ۻd2.ci.v"&&msiSౙG?m)4 э)oLgm5A_S!*u{Ŋ,p khmu63'Y;cG1}}0Tj?͟Uϭk6T}>#3zȖnX:^KyUXE.vu-G5<{r8cK׉klj=6=#ij^F58ϿJ.s}g. G46՘}]Z.O<30~Q[11‰q\:ồZpOo8&FE1 wo`+/bj48A[2"Rn~f3IiHo+#("!QsH MQmBd@`yaNjaBe$+-EIIUnOU>P"ǩJwZlw=wK5ѹ vwNôb݊T+~OCXY2x"͒h بKOc}ǚZ!P@v9 :0ИZ/G+szN}.C̙f pk'5/5SQ}Czx#5SFi>0]ĸUh5dlh0tU_#*}Fͨ,\$x|Iꥱ +N(` W_%tRs CD(&)rqS|+H X9AuۂЁUvaO7α>@.a_.@c)th]oXYPV]˼Zq5rU*~GKxLj5^)pG~EMi5C#8?9 f,i,fB GMcx/ _8&/<6:fbNq~Gtjʿ^ySq%k*uH S0|?.wZ]0tzu PA͹9*_Xq>J/m' 7 ƚCfhsMd? )ߕH"BrϪݘ?+5'_s" LLLsS+)zI%vXUqr +^zOyq/~/v*PT<3 n?,#sN_;LuY142S6Ӿz@w'_Lgۯeυ!qbj#|1~"=k/ 9agCt_ @FIv"Ǹ9Ynk4|L5+Fdܭm} [qS2q8gOb]َЀ%σ'S9'z®cry2(kvs>}G.0tac8Aπq8{qw{v\nCco1Ga/o=cwڼ=Z;q4OLS[ v0A1G#r2ï93WuΤ ,P0h. һ/vMvc8w% cQ%l(r9jwPAt&~-'z#r3uss?cf&<2&095O6j71=?Pt<훺Jw!76Wjȍʑ,:T:F .ȁ< +{j0 Yyk{ost^#<˰pUG\W?xFE!EX{'}DŽk"~֫hܯ#^":y9G8@20nj\ XqИ9HӘatjjLj]p}/͔j'taOi-] ۏAS46Ds YsTg|8OmZF?׊s8cLs i;H?ԇ뱉q5*#1)Ri'ݫWjF bY)ޯ;c֐Q8@N݀1G*>>U$sc -h˳&z$1]?1gx&|03Kzbb٘p.O<3W^cCQ%Q9`'aGOOA{yyGhê]V|#}B~_^ljXS|DwV**b5Cy+<јlEqr.WS>1n+{*uBJT#S4LL-Ԧz9~Zڙ'% 'hKfLyʃr %l_$gڂ"Zϝ wJKtS-3!v+b쮚sr18B.H~cB717}s΂LQ{ LJiY7iMRSz;AcFuϙuddex/\>3cl{V*Y3T傴˭ߠ9QTq)Rr|'nsyvaT+_0sj8~i\TP ۜ#/Sש}WS9Sd:Hj8lq\9gݟl9TNWiK"^s8ܸhA>&t){̜nCxf#?kuܲ/"}co1ڷ8j7oڄ4T:RcA:z rHM5.ssea9H:f =t )M'dh#%s{dLv8 ܗg;Re޳rhjS6IZn}=sv 4@3kozbڛ?nc'易y\LmJWڧ:SХ9OgvSK>T9>oP|ލc=^"N.߇21bޜK/6Ծ}Bx/60k}7:eSu޾2)=ϷQ\;k}>ty_}tut;ϧSTOwB\_ |U1>B<{ 5z爴*)sjI;@zvpLFm *nPp?6q9Bר2T!+|=;2ޚ| qx9?"٤9{P_lJa?  +i\Fuc0tvq9J @ . Ba/T3 Pq 9xvhL3gؠq ՠ+P]/a~:C/TMXB 1%*PJ ktD"KhX+FG=Js;q1b>t@x{Bh%jaSDlW1,Gb̘tF{Ǫ*Ryp)}uh;e\SJMפGhM㘆K8@>|7X;s5Ę)~, Ǒ8KVV{왯͉q+[|g\.L`il2vU'NshZv^4^t]o[$hhV9\f {iN W=CC_ks>)9ͅ+<)9j'}T.GZf~X[Z~RlJaԌMst5Bk5c樭n-Yyp5.QJT2S>|f_@=F6{hcNhc谔A^kYbkQdxadRưiݗB-c8zMxL1T,=M_kS{ 'M'zgN? }ʬ/ZNS&ނ, rbkTj =A\z,˩8W[+4nRmdka-mw~a`Wj{yo٨oPCLP%AGA*S 3X%͏ct +8AC5 }9'sD4eyx#:U|{<%9JIY]qn}Uj7O2jkP_JBKjw?xCxgMh`c [ {ƈ/Q+bkb^[u^!"dؽV d9*5@6 #0/C0!ι@v,[h*^S޴>0T!`ly#]vj:gfd5 +D86_^e\ET'ؑ(r!}, +gc^bVSFi+E 7k8o@4ȃ%OLTy9 5\Yq1 C u^1i̟47G~F4.tR蹎%S `hǡp<%>docyiP1< 5p B}ИaxW:?5}w!k=A>v_~3[fq/kZdOdgFVdu{J{ZfQwUkid?@!vjmM?eWnAdQz{ggeodx5Gٯeϋl6okj &[=+ߪ^(;1궼il\7Y^i_:otwkyޞu +'%r#w5Xs<]=Ѿw{:~kб\;C2pݷ/ȮBOz-DZ;*xRV(;?zK?X+_8vm~tov?F4ƢҾ-]+OSAw}n[l7@ۣhא8=tzU YO[]+@[i^whlk_Эҷ·+qV׏ƏіXuI[E||>~2Oj8Іڷkg~{c韗m/WkߪE7vݵ/t;mX' hyߓ{b}Kֵ<gseQܺ8&R̮5y,1>Sx m*63P/|?P^ਡEawTD#څ_yW=\Z8߅/[Ê==w}{VǞv]٪x(m(87(Ki - j[{,FЊ +VV|e.%8Pԃ^v-ưh9t^kЌ{kf\y=y(Ag%1 SouuTw5JGqg1u;ڣN0^m 2RuoѼAkԠM5ЏA>X+9X?KڠfU\(`MBQP"rS=(xc=;hE9x$wtQ03󸮂FJ8cٍFjx#(9HgɄJKlW좍Ģ!a@^WA hVQ&^l3Ч|EW"NU![;5:#(J/U TUlu'I9ߊ:KTq-q+P!̋&z +v,o+o1{޾tecӀV=/{ wXv3(x=\8t>Q޲}_1R5X&s6zg'h!K]=|gz= _,X's&+o9-Bٹe#;;{lRIVJҖгES UQ[o9WQ3ʏW~XR/w=5#܎?/ dPlVPrjbRzQ4h`] *VJ層ϽIc|+:o`[ ᾋgU#oZ?%po|_[u|){ȏ@GQƒQTcr?Qvw߷ўq({`Cl׫#+1#۪[)Fg<7asX[4$a2֨hsGb(a|i(FNaޫGrǻD>вC8A 3cl {34RCFD*-WsbNDwjv{/1kOǽ>6XxMsk 72zYx-|:?1s;{4žn Ը3b63(2RDra<汔iЦ^H# oyKkW#^uM,F!D<`?QEχeyoA2am jweu _v}%jN&Į3~#c:(`/! [&+cRic5ٝy}Gh9K 9L{tB`@31J{yI,<r%xfz^4=fD1.REև~?Q/1V𐅣V=tQ/$˜ZtVZMly13|աEL?&ݞ|KV_ uh8`3= U,`r~5# -ϊ"Lwr#L!g ?x+;+5`c 6S1zR;7 m(dE/Mv#*߽k:{ǡ-:NYSIh9j$̌[Z:qq~EEubA:17D_p(5f,rl1/rDS<*^m}r|e?T#H$ߛHF;tmz}! / (BC)t2!^K~v$q_;QQF">mb|]#X 4^`esE`/y*Z!xx=yn[ۿc7GN};m_~l7/~/mųj롛o>t}[o}rkճ>rᛧ/mW޸޸^ݷ9۞7quSn\9^?/\xeod߻}[_L/>k~?Ngʫb֞Ʌ }՟\w~3ݼy3&7?Q7~T{*W7ofm/u=v߻-|-.YvQuӬu^[~v:\ʔ/Ip]jP[z?/ee[_ٞTI~ͥŋ_tEuyR]4Ά[@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ "?f*lџ_?Ԟ?kpgg/%Ks_Ȫ=\Y[<{U};ח⅏༻v܇w'=ҋ߸ӯ[|>|{^ʻ}~͏${ٷw?x'{){o/f7Wwfdi>(yYv=}};?>i־ѕFv'f{ogo>nKЖ| |}"{=Ͼ>}3~[}h}{={}n->hmeW>}勏`#??}_/_Η1w{^]gYlWG?RBw]_~ܞ;*[\ϟc{ˢ |N +endstream endobj 1584 0 obj <> endobj 1585 0 obj <>/CIDToGIDMap/Identity/DW 1000/FontDescriptor 1584 0 R/Subtype/CIDFontType2/Type/Font/W[991[500]]>> endobj 1586 0 obj <>stream +hTj0 ~ +;zpv(`Kk˙aCmYH>[T+kwrXE8$ ;ca22,^xn!`_Y(hMz|۶}fOkRHviW4?أ AYB"U?N!)HvEW|$nZ~ btv|)Y^K?\ȑ(:0IR- 0o +endstream endobj 1587 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 1588 0 obj <> endobj 1589 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\Arm_logo_black_no_frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 1590 0 obj <> endobj 1591 0 obj <> endobj 1592 0 obj <> endobj 1593 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 1594 0 obj <>stream +h޴[KoW1 Qb|pB !r- +$皟zw̒ӯz|U=Onyuw=?RRkZcsqpnVb_.и͛s:sg;5AOSa/Hs<8.v956oC;c>5hu磬f?|swܺTmYC/kۛk~AEݭ9IRϷȎ=?H#OmW+k™3[m\nБږז@WxY^}嫯_ -2ϻom*Ԓ_A5,n_޾ݯo_>~SY.@ȫӑP~6Uu9<vvvX}Ҿ qM@cVZ] է܅Օ@ KOLv>m)$v׌RkO0÷nO`Wcx +zրm P;HD@H8pﲆth6a>  ^s↧򴂢4<5WA RD#|98wnsa./SOv{j[;!Md[` +gHt*HDfEx~f6xt>|n}DJF$%ۄxlH!O!!=ѣD! ) n/Cg=#D AM!so7 :2ݟÚg3hGRQE#gfq<-/4UmȡG[LB0#(!I DlC8XŀCRG|u;OmmIRs%C3B |ducv[n 顺OM +VC@rCq= g< ]܂EpIő!lYGQX[>4Bkl_W=z\/;v3XjBU=aȞR[d 顉*!Ai Iop>nx`$]* g&+==};=+HmC3ȇO%I*ڱd>PHaCESFP5#:q'Bfe|ˈmAkbTW'Zo$%Az7tb'h1j1M<EAףv͟:S+ۣy{ೀ5uA(YS9z&{et hiĉA$l5oZtQp +q^l9DOc;oP4bE*Ⰰt}*0#[T Q@5XhR0[ro?ib$ÿjg: 2KrGs2 j[)o;HijQxfOگ!-N z=3qx+Y# +7v޺&0-e^<-8<J}p9ec=q\sKCJty~ |EqVHRʹV&`H,3Ype4<n|Ơrtލ6‹SASmCgm-;h~ }f[z + +ׇna;AeMų<}x9.K=rSH,61vCt΀7/1"tQ+ٽ ѳ6KLNQ=j-丽^MQX㲣>$Alܑ3+oxp5p=vxwk}jwڱ\k+V]1^34\6#e}n +pbۋxRj29TdŦ]̈T1Y_}gL4V{ZrGYP-%@6ߪ?OIq5 @B<״5j]<:ƲAUB><"U/E2cjs =;P8ynyݩdq?CMe9U;V[!OfnLX"䨟efM6<_j0nfgR@x-yEg"/IRM65%/g26S l +{[{n4tq[ō=ĔpxrxP$O߂E05́"Blt I~iY;utȇZ/N *A+zR b$+M'h}&Y%|m2ϑ3%JQ(]l0ӕy^X| ZdL\y?ˡ45%zIQTEq ƅ<%N͚?ugnRh5n{ᆩ S!u&w6J.= #' ϼl1ecV ըmŧ+` (%f0pXN9h6yI&N@$KR_55?!a{J-:^&Ek+Le\ꌬ9!gQ(mb992)ݨV@l{f&`+PYEl٥]C^6SqL0gZ Up[I._*-v )"r@>wVbİF +!GmBLgi2eә7H4)R 1q֬I3Vq:j\U*޲xw:zZ~E Gщz5K^OwL=X7*ǻ8/ٽX5tgbg$c4sГ^Tj\\QM. <KE<}[;\y_(+%U%x]yfPخL|jʙ=Win(4XK)^ns8Ϟd`kź[fx9w)h75Pz~K i_JiȻG/`[Jn-̝`s0˧J^TrQW;-Υ*ePէٳ!McRzraGJ׸!.iOao=AJתN_ѷAaIL)}ףcMDg_e,V[RՄ!qE"bW3S4 e f2Fʸ!s\BMWy;*(4ڛDiSEbEk +ȜQǧJUb™]{&ڳBT'*jZQ#h2/TYE@OS{'4WcY/^ű`Z`d_ Iǧ;r۱K*1 gIko[Y=kaδ +M-n6vp<}Jٜ qGmNe>ORѦ +װn !F3/;d\H~ɤf>rΎW^5D~+ޝmUN8`ق݂##;\fSʠm{,>MԽWHz25oUZg( hǚ4 +?R *pOsB' iQI )1qINB.^זq,<39d$~7?\gg>|r7!nמ;='guۗݳY^K# +endstream endobj 1595 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 1596 0 obj <> endobj 1597 0 obj <> endobj 1598 0 obj <> endobj 1599 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 1600 0 obj <>stream +hތWKo7 й"s(Cz(rvN;M~?$v;(_u><^v9r]wq׃O)Dwxa7_b4~SԄ +ʒ tFS'LL&)IFGa6]Ͼo`ߋaPsq&ȂMA]^"af2e@V7[!H&eihd2SYEݹT.jvjs;j=nwrC-˷^O)us] lNG^:~qs%|[r(Gpן<|.^ח 9 +IJl4S*}(f.QitN1f{e'ҐK ִӌMD|g*J3EJDp ఔawAnEBB4ҩ}NFbG=CL"ǐd ?b$f2Thzv9AHw0Bv!ڽM%nE(@ȃѣ!8&'FEƓ +#PuCu3Y)|[J +!Iu%u|B):6:MVS@K@AWٸŨ<*~ECQ'0uHzA|WwNn>@kvK5sd)+IҔJ2κ1fl,qWeYÖ*U9j|$ )N }tJdطTnCtЭ*|} WZbX ĊVk` _Yk wPY/Mx޼;.mG>i4enf<"'rL8%yRq:Ç׊\H00 *}8,G`@U  : +@97$+qgC Fڵ4YkЂ6QVcqZޢkq)W҈H:&]K{ִtw1 ;l1[ j*->Eź<n]-D4K +jLОj1hvK̐+w1hnDÐ> a4=^\FP|Ƿ2c:L$WY~o庤D2=S5}ՖcX\M i31i9չV%۔9F,iGXV@L6eTR?[`ǩߛ\3p]$Rh~AeȖPzEk>`Šu*3z<~ӱ/-eO{BSSJ^1}jrxmia6bΐyԙI'k*{v 6xM)-\9ZABY?-f#*ꣁJDŽ0n!i<~}³,. 7K t] xEBf*חq1qpi(ظ^]ۉݤݲ';Gf +endstream endobj 1601 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 1602 0 obj <> endobj 1603 0 obj <> endobj 1604 0 obj <>/Border[0 0 0]/Rect[74.76 87.44 89.76 98.66]/Subtype/Link/Type/Annot>> endobj 1605 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 1606 0 obj <>stream +h[[O\I~WGyH$.mGbmhyjp{d4Ex}wӓzxs|spqa=\1A80F.nwngTʤb;oJ)n<o?>JqsS$á]#:!ᐎ=#_|5F>eU :_/Ka46<.朆띛}1YpN +ϲ-_Rᗋ@UW˅FYF$Y:,N}0n[4ߖt]MPØ AQppzt{q88;<Ҧ0P&jH}dM#&9=> Q7z9xsZ݇׏W=>8y\Uve] + +!r qXraH zP`˰eZ}Ǝ-l# 7 +Ө]̨h^nIHp kub*ȚV2q.53t˭X5Ƥ-i4:0lez =@ةhu1 =TL#YOM#ƙ4)tGtǙ͘2|UIpHFk + [òL5cz + $@A3ce's +;Ϡ&fA&.6܃i  MnL>c} IFz@v}g9c$zn`VӦR{ WKQOWCҶvJC(eXad c S=nEu'\LX={nFEYG-eN{ȧ2)ri +^=7khe46e(,+6}6yl䧢gk'ȓ$ۄN>ߟ}U%u[nR#o~[lRX`>ô$W!Y\דAvl8!҇ !m(sqiM]QY3qqpˏ:^ari8cմP)d#!0K[X.aBqFfXdN$r6/~1ӤnkU޻[#:9uXz;"rDę*^HR4H)ו&|KCf|$ x\wo+FFFTgm;s(MpSUyK'%꺊Oz b߱3+H'0x6EeM'ҽ4xk0e.+X*ix#dQD>Eu%%SMiA՝ +mP!&SyȘdf%]rSREB8/NvPF'@o}zС4ZXyo zyKNZ _QwAkjPM3 ܜŘ/qȽ* 8fٺؤ9mq\luNg C`6ճl)"WSeuYC!JI~$&BjPK!vc 4mM9>{ .uwiU!Hw떐rD&$ƉiJDj"VTr"F ̉E#XJD?iRILaoiä^D<+"ׇ_f'өŒ5Z"]찄)Q)S)#d*թX>!ؽۊnF$t#0mSlu)*Q1/&o^eyĽ#ӺgeL[䌉#oMñeɋ9eŧhWCS+K+L[yIh)(QYRr COTVWqM(ƨkq^,Ô˨MRbGYLKijfճ$_5s$.aQ )J omR1fˮŝ8ʫ˼zj$xv4*VEhTTj;cGu)޸Z\HY)6:{8qmu|8R3o\L!,u^$-S7D-&bHiG]9 +갦y>TnWtH 2"5iZ>ObլSbZ) +f3Vr`-rMHKej]֧ܬ +wvçӓڴFiz,e\f_$N6UflNU|v:Kn8'WEG}霓ڂL?U,׬M󌾮4CwnvQIdm]y\uԔ|i}afb]Q޼W{MioZ?!cK RٴczZVK=,]:?wC>[imLH bN2Ûr.8ٰ7B tW331 yKNNJ'vlU2:! |ΥP $˸DŽYd=7O^+'-)*=ev|Ϣ+yK0R0>LdO%O0F?ch+zo&CE8p֠i r? rV4815 TnzYr._rDjiS&,Y5#5Z3O%򟥀K&å|P=C'L,t$IV(L0.r*0I9if={0 ]{N-!nޝ3#KtMY.!H|[bvҝ,.򷉞\ݿ]q \yHw!)=2Vp,D'r!r4h&02 1~vq2[ޗխ>"ř:jۮ:M\G*Y)R=P;9ӳ#}`9yGO.9}ˏ?P +x!#N0CԸqAynÈO>"|4EC5\ְ(BkHtOB17SO#td#=!xsrR6JGJD^9(Pȼp0 Y8'oN.ZF9\ vI NwA@R`fZUQ~tUػ=ƨ}4l#s(tU;·d-{fC$%giA m\7>wf$~evD5䑟 b Kv'oćtYHA|FvB7ψk&=p=P~MsƆA7o_S?zhv %Ɯ{%/%/~z^~ #uyYJ'4mN3 kB6<pZU2p]FĜsP !"&Au- Xm*ܵUVr5FZ̺7* 2}js!^r ";Evyn~.zkQTSh'`RDROzL=SDzJ],Ά 5xTZmkt /U\E7Ib[19͎2n=aVpK.HohYi~D@~_]fҺ.kv>̢5?!1cs(v-ΒBrnW3c(w /'/^KH/K]{tʩ-ˆ#> :qvՙO?-tfǩ"ͷ\`\q_J Y Tq8*mO)pZŠʙ5"913$$`m9AfX{=^F`Q+W\O?mה!?1{Z63+}ʜ-> }`~B\c]#<;g.$"W`Sδ? +(ATQ#r*&M>+JVU& +<-n`TI u]VN|+Du|-oqηY'|EQ` ޒ3X"jt/^}_%j5KT)"*rn. }!$) 3`-a}" 3Reª/VN$ fg)ZJEVl֏H^pǟWK!I)i|7qD\2T?å{Tk-m{~Bl2 }@ +endstream endobj 1607 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 1608 0 obj <> endobj 1609 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv47931V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 1610 0 obj <> endobj 1611 0 obj <> endobj 1612 0 obj <>/Border[0 0 0]/Rect[512.94 87.44 527.94 98.66]/Subtype/Link/Type/Annot>> endobj 1613 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 1614 0 obj <>stream +hޜَ[]_G8;;(ZE Y(.ٸY0Ɨ7t/jaw9=>l߼F>-^\]_eqQ1USI.zLQ{i3M.Iu fMFh%akSofgpn^q1f HuL3jUJ^d sba2۵>dB| } +`Ld`(z\F#-7 mΓodUJ[WJQڧR:Džp.:Q8r;v/Ϭ"V!6u)hY`I(joQUq{$W6j XFtq᢮>3 +/pIA3yD'Q` ,UkpVY\p6|?\Χ:W?Sz*ސAQ= UEHHjOt(^G;`MZ@^O4P6gm|ެ0d8ptpS;d.>7N/mؓ [oDqd A$8wA( 3e\A8 +i60 O\#C>ZD`yߏj. jFE""09+ !R"Z;OA:7t`d]tP44@ r@@!D6q7 cR  +81ly526%\FPS${EmhXI'0颟(~֠7rG`iH5,\=A$Dcp4a7l?ķ(0yR[(0hgX$̛=/2B!QsU [F\n`QhX=0oJ| B_|ɵ ZgHBUZSmc e5g$M~HvX|xje^̲NZjO ܓLv*@$+D ^ GNjz_"Rľ&jWrvVeVO>ݞ*-Q(^ fh۴!trsюn̖v7vل+p0 !p0߾3Pf%0ҲFb-ddƆף_s Xtꈏv;il {OM7ucX;P0k_[n:e*b_+LN55UX_8Bꮓ +H;Lg!YY5SFBY՞LUY Bheؒ()9+ Pйk^X)R(ff!g+L59+Xch{ >t*GfB0,ўX /ŗkijl1,\AJ2X`Z Sn7ݯNOSY’Wk 8i|Ϩ>¥P<> +#X~7y£ ++.^~f㿜y)x: +. +=r +(N9;i#ZJyn8 +[BQ2?wߑ.RL2Z +ϜWJ,Vq]G!+|IpFz?'W) +endstream endobj 1615 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 1616 0 obj <> endobj 1617 0 obj <> endobj 1618 0 obj <> endobj 1619 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 1620 0 obj <>stream +h|XKo7W\@4@!NP@i o v~3rrZp877?fէݛtrʪeWuM/m9h_WQviqg@$Q,،o/w]8EikJ\kQ ]nofZ1٨ mΑmO]z9muq`(b?Ѷl*I-jP.T]rV6jچ_?S7owW=(&VMr?DI}@%XS{ ͯoo<~y~xg}s(kSeB6I, +UAybDV33:֠L{1 +w^gPAbDZ s$X^^)$:y-RvCϐ36$u eАEP +Z) +ѳhgzju@bHSvv:Q`f.|@uǹձY2aWK#(.68ը(w އ NWUEc(~™K #iDjRDcYoY4y@U@%TUa_%^%vIIK&!ڃ ΦKc}"u/6%@75ʫ;mk"I(&qP՗j[=P\=>g(@86{pLI (N]ءQ d8!ԥhu)pG-FF*dj7ۆ:4"mL"B\7szh4U <E[W% ?#W>Qӥ wov~ZOa7j rjR-ֶG4LzhgxK?g|q@/)tYURxQHֱ `?X#=6i$-lzr?>â⑪c{r6GvCK{okp1aV쬸sԑ/GuB@4t,Bت"%}@<`ĊfZ8dXറQyf\̗sBn&A^;3|+cxG^DUhlmBˬ+&Sp9!u\yfJv|"Fֶj3d{1DcVonMpD*LL +}KG68ăuO+B;aM%vrm+JZHצzIR/~;IC/r=|||€( +Mh@"CQ)10Ѥf4(\a3=`zRuM1MOt))[d%UT2vΈzy^_ZZ\6aJek5C0]W~ oo=hfZ~1&F4N˶hH~K􁵏rtVF,7rHPZ'of>@d/6x"b/QގvΣ3F_+77?!*^v A,Nr +endstream endobj 1621 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 1622 0 obj <> endobj 1623 0 obj <> endobj 1624 0 obj <> endobj 1625 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 1626 0 obj <>stream +h[[~_я,N `KVvh},΃49ʎ$gο߯׾3ZacctHvX"~xk9Er~tnb4F݅~8B8\ߠvOG=ZeGDaP1e:Ȩ͓)Ƥ:QR*cjʀf*rf! !y􂕻=5x0Jp{"'ƨ;vgO+w{<х+SサbTy;:& ۫L-1Adv* ه}ixzӋ÷CfаPY{h?9b6Q \x޽ۧ>ܿ}wp?膛(,c>ހ! 7AF3wFim `ƨ=jfA ((bvXZ4ץ4ӺܢՅK}jI1Pat&*AZ =wr~è㺒Gx A*D0} + +~kJܰXGkREr4 M +CQRrD`zv  ,^X.h;ݩX4^\E%jUFmXF+L^2#4ZjNr/R] +H\$+ZcTnd`}m9pl. +AhR(>UzRM\2z+l$/ ,iuE$o#'GeƬڡX&?s)٧dx,MZ cY +.k c#ҿo,`6kYQƓL*,9R:Iuk6d\j[U4LIiEӊ>/xL'嵆j_:|)6oy˫?yn)&'I9 +.vRx;ƯUCޤڰ S˒vc4jTO2e+gm!^rݸTvz])<1%F^Pń$ ÓM=Zါ*14!Ii6lJhϔMu?f 1LfU}sWb'< PzZƳ<^U4PĨI` +ҥv t|Ԃڈ{/4ĖK]I}ڧ^=$dUHQk)M?<]D^My9Mb"%B8[r8XrTdUrrܦЭcp *ro#^7lW0.P bK%LHlhӉLwDD|j7Gc04Qe|ly| Ҝj.:KJH w*<짬ʰؖ~Ӷnnؒw]ʚ_g*1NQ=Ƭ}k)bVxA4##[# '21᧌-RiTE6=JXu 3d3=UI\ 9sF.,}ѫH}&šcWC͛+Y nZkT$έ벥EqYI&VcJ)J[~"liyETSs `'yt&559RW!BB'cJ5o3{h;,CkCUN#y,Sp&R#O̐k@i IPQ'rtз{I)!rNj?$1l#"23{–@4!ϱh"> Hȧ?ӓ*e_U;ӶLZ{>P$1 +"C9&7)>:8.Mo \r]#*:$@L*5(w)%O0ݴR]RCf[U&2.!(ֆ"9G@#jc}eAc\Y0XmTk V#C)`<`]dC֍~!!MԥO"39|6UѲNLluLқڵ:[",`Iv hv['^/'՟ Bï^ O~xǗ>J@nCe!ڰ=0h'}ΆίB$tyֺsREh%a4 +'D?Oжwŏ?~r4NiGN;d/{$<>!( T$"=5J)h/'BBQV4LH U)^'E|^mU{l4l rpBi0s脆d'`̩ŀQyG/#fN{P9 Aj f'MD.%/_}A uD;=Lp7]j.tگPcn7T;M"S2oq䙈ߞ㿁Ia.Gf/~ +,:iB% O{5/|* + n2b֍of٤Mo +zwr%O7ЗO?x@ֶuLr/xodD&e޿/>f +IKFRd_ܿ~tB[%s#}igpGqtб 0u^3)LS 孒 K摮Jhpta\~wuF58,/*m z:DrSXqd4`جtN:d:b§0=RC~Z7Jfjl䰤yFL-d3j1ڧ k>uW펫egJŜiX5Fh)̇^ZUOC.A/b@D0~0:0;1 #ozJU^9lAKRĜxςXALσ\\x0QӉž $!߄u?6I g,sc_X~f*gܢL Wr80JEG_Z|ebԚ ײweKkѢ\s\VZ!5ZhOSD_lt jIņ2K1)V$YHXŹ?SYvJ-nDt-1r)+u)kwwJN lٸS" )Ц\e-+IWo^}݇ 9J^++|tnBuHrH!ƔvX^tb;KãX͟Z#CSt(hdLM-p-["X<N Y Wt)6D;֑ĤX &iPLU6hV-}]b /y{dBuGey>;܁v7m)% g*v=f</^Nȵm98QHwjeY`fij +vpMXwü^0 J0d:49q< pb=B9 9 *d:Q?)? ܋zV#UΞoB\F⤟3gk: xnQ~՚|$NO9CIȲlvL[ kd>N-~®y E5k jǔ6؜bDUn@%,bRHDjѬZt bwߩD]yA阾xgQ>> rXi4ЭeM%|yi.}ޣhL!/~WCM{aMSyO3Ah[dL9j޴bSĕ‚޾tq1bcTEX(U<)]R>I&BeZ=}Tfxz̴ԚS/t'tJor^p.|8s6 f:[\YĖG͂$x[6둿>5TN(${q55E3'p82߮uGpL96. +G]O []kvx?G xTp ,!AԷ ^#/m*R~&j.hՑDE5f?5E_($߆㨺pQH8SS746Mkvxd..|gI^r5}2&#*FFVIMFv\k8.{%iյBQlz͝p[F9 +<7jܞW]y{F(ù徂RWK;GB^ ^o!VEPΈřF6WT4$~4$,֐BRhv#٠eK@t86vu($FL3JgA}{ ~4b٬Eљ"VWlt9rke1)V|9rkezbRraIHUt|qJBΗq͖ ghrRK)a-B#Kw#8$\|bK/ϊEZFKg"!CRtoCm)߈RDXB ^ooj]DcW6W4GRi"95$UM'Hjg9BgZv?9An}>8D_nsZ[醡2a(@ؙg v&paTvMn[M.@unsl&'NĪ6#Joi&ǔjs[AsYO8^MYn4~֠O}2o1qf G-gEB@ZsVbŗsV'bKJ9JJ{ѝ?˵d℞l7 R.{`&[`lh`z.Z~o52LPˤA řBXۨ[6-pqq!S8BM3_lEHj1h2ʷe+l~re]#)4 Q 2F38A%ku{Degy8_Cy]\C| Y [rYsg,<ﶫ1 q+" !*>n m~ψ~;05EkN_Wt}6x=X~=h~(gBZCˢVlꁴwgKm0%Q*W$J{Dٴagn\)Bmϟ]:ud2e莠׍#Hv4$_F$rpл=m2?ћD׏| 6b2l:@|}nQqhA_Q$4壧= .˙~4L/D +99 R 5n*ϟW4Ĭ$a~VPŒ&7?O4@j|vdW SΑBU#]ɾ`|^+ɾդo_GC!~s !r)OrS! G<+ XÙJR7;]msEMXܔ +즂)t-hәCdns VJ16#crg1샞\ւyBi3_ɔ $$o FZ˯?(#$yaid~[1:kAKU(eEּ2,g]PɑY v  @i.rm5HQF1L_! +]$va`±!"6 );nO%INEPzs% >v.%hqCU(@z9kt2y +0:N +endstream endobj 1627 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 1628 0 obj <> endobj 1629 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv39700V5.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 1630 0 obj <> endobj 1631 0 obj <> endobj 1632 0 obj <> endobj 1633 0 obj <> endobj 1634 0 obj <> endobj 1635 0 obj <> endobj 1636 0 obj <> endobj 1637 0 obj <> endobj 1638 0 obj <> endobj 1639 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 1640 0 obj <>stream +h[Kϯ`Msd|0rXMVKS +d c5MVQ_ënvW77f]R#FanNu7vMMQۃS:_?nfGARn:Q%36uަqAKf t{z6wĿ}@qsQxyT6db(#J/rvJ)|dn wNȓec5 ν 켴hxVëojLBXa IO`ebpJO٤3::v$r*su*#D0ɑ紑WJ +#n:]vf+ghJyڶ,c&)ϙ#xeɉHqc$]gt~/J /"- b +C0s%?-1s"s@t)im|\5gvIeʘ+ս LV{rY;]hH۽x)'_(.0}nQ :Z(zi4l#D$&kN|_hzde׳qA[JC92Jio1$Ceň!'[}HYWŧMH, ;v:Kk/٫l1~'MpMf4tFQ,"`PT䗻O_?EO=Uۧ#:=1Rvxv+yOOڷ8\r'7qv5lfxː3Âu+x՜Q187ĎaRA5Ӄt(:SlcŋΖ*mA\tF.a]H݁N[_.݃o r˕7?M&$lU-*ke>oN> jr)to)$xHn|b~ m Fs6b˛H*W{bXYC!q1XFX]!<[X5ڮX\ۜgy[=/DfEd<,MzY$Qjn$ dSgoAmL>A^x{/jLyW@ =Eƺʸ:8'pj]ujZf<6:cVF5mt܇"pYApW+_ǶuT+]Ue5{~A L-IY@*m>ln4:߳+GXƒ[tmh,؎B͙$} \1*XSIFI+a(V'[ayp'kN@Rq>"TPGw~_χz 6Z1ƆC6ɰ&y>("Y %+%~NOY +SV>?˕/746 T#2mOGar:-K'\bm/,qAw +}e Y [{yaJ4H +4J) ǖQ~ep=w@%\ c9Bhr^([N q dʡHx![IeQ wN9 <<>_uHl8bPNaϠ= u92w.=ګ񅎼LFT3Q>[ӻ䷦w!mNO17?dNh6>b҈Y5m[ 1Yatw`7xYj*.WP2Khstc9iH%u|4MN9)JgUݫtr_uN΍B)>k)vYRdN[?INO:KrRgٯ]ꬲ?[۲Rr Kg_5u)o?*1[X!ubsBdιzd%Ov6cwYL_PUJUgO-<ϸ˕K%ǒ7*y\ +Ԗ>{%.K J]FY{;k>bǒcZb݅cb\{%%OG(yfFϗ<{l~gY +SV>?˕%O,{,yQf_V4n%O Km$p\pPXԦ-w_.;˝rW|/b5JfL皧jO<+[>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 1642 0 obj <> endobj 1643 0 obj <> endobj 1644 0 obj <> endobj 1645 0 obj <> endobj 1646 0 obj <> endobj 1647 0 obj <> endobj 1648 0 obj <> endobj 1649 0 obj <> endobj 1650 0 obj <> endobj 1651 0 obj <> endobj 1652 0 obj <> endobj 1653 0 obj <> endobj 1654 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 1655 0 obj <>stream +hɎί !ȁÌ#)󶪮n a4]{}yݫ;3ͮLƤbVk7ݽn6e;C?v~4t&A%5[pv(67aXs:™a{ ~q0Q_V.J;)%\k+x1w;A)/'e])eR>O7;9}Ԫ8Qn9/zh+hV6v)h8-XwDHQnRT̀e,ezkw†&Yhcy-O~FȡepFݽ˻^|/ޝOןt @)]! nLX +i:*?NvvԶʄ uõ-t6(P3LYdXm>=֑tMڰd}i=p9yvƨdwVDj[T8 0H-EVED\3eڠ\ J熡¤P;G4 x/ķtGEt*aB SOfx.vɮ#3-0h&g "^9OD+ -6"4V4JkŶ s 4+ O #(F:b&rH`],ʇNܶ<vʔxAHa>]n1恈PUB_TJfFlrA##ԌQF? ǃh$P 7 2hb@d  kQ'{to,Kв6"2rt)d,_|xɧS YC6vOhHxL)y1#ƍ,;V5tͧ=sf?svB;y7g]|w3Ȫө||=e@1(a@nBY.K@GtYvm(4_+ +xt/(˩ɂz. Nyk^ Xz&5Qp1ni<߀a.y^&ɃOg3ѯ834FZjD=5^oOvFF&'ڂw? vD跃9L>!=;i+ ӄ @hi1SoV}ȍ̧ՕuIŒzHŏ )j6i<Jg&K ȿIh^g6=H7# _["X>%;LӠþIV_&GCV /)tL h1鬟1 >@B*vi81i(7UX`g$ςYK#DOu{AFe$N-.⼦rX]@"-hGaN"̶3H9ZK$^\OpnCk! +f <[T8ۘ6,R04qo(ڼ )*n>V*T.cH3P݃ 3;}EkIw rOF8nsEF|+p=TNZfv{37 n +k1]ˌHgiS1uVuU& R/~~xRKKe_|xI[M?L://G!';X1cdmgK؈ D +~rjnbCy>kV$&ԗ*P."{0+rCݵ'eΒ/) &6@ 7aş0%9ev:b zM+Y7 Bqg ,By+B_fV4,+KF"WI,ꊵ=UA-:۫z p'fPWdJz[hs3 +|ȹQ]Aݯ$Rk[PAt59Zeekz >c1ˮ֞Ӈ< b?6QDil}AQkdEZQ-Ǧ qnѭWܻVԥSԼ|e̐^m@In@mu\{[o,u,'?A/N~:vTI*MrHl)O3.֣>F6NYQRm .K$y 6ֈBT;Ft I*E@|pƄƸqco#7r1j 4`d>:chٻ1o5CKT~b!c +-fq0Ɗj[!Uk!5Gbޔ:v` L_@p\MD?GO-&~;a9$LPt|w\=Ǒv_H8 i z)"ʓE9tL>CMrp/ԔH#Wf mN`w0L>Lv``"b0_(pB88X_ +=R%UQh@evJ ]qMS""HCa{AEUDPmAhFAJZ!V:Z8VO +iО't47dI +WsTK\諡ŻQ)Xl'}͇U+wӁDv_ҹM +hT?I̯=:n$W_"b\2C\K6%2 %lT =N\rLȔl[<jtOǀx*#'c+kF@ XhqizAYMGn \O8lQ ~+ضmlϱHտ[édw%ub~"*€#ԐHc/ͺ,l1o3hޠ[%H.E(cHPX3xP?M5QGS)SSEĖBra0W[o*a rX,4r]#렰AWe6r9܀>D 5/t+gK2G*T9Qun}#! F 1oeE!#昬hKT[Q@s(x fqt f̐i*wk{8~kPu_h˭Pu 1;f=ai5O͜,teo"zl ` +endstream endobj 1656 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 1657 0 obj <> endobj 1658 0 obj <> endobj 1659 0 obj <> endobj 1660 0 obj <> endobj 1661 0 obj <> endobj 1662 0 obj <> endobj 1663 0 obj <> endobj 1664 0 obj <> endobj 1665 0 obj <> endobj 1666 0 obj <> endobj 1667 0 obj <> endobj 1668 0 obj <> endobj 1669 0 obj <> endobj 1670 0 obj <> endobj 1671 0 obj <> endobj 1672 0 obj <> endobj 1673 0 obj <> endobj 1674 0 obj <> endobj 1675 0 obj <> endobj 1676 0 obj <> endobj 1677 0 obj <> endobj 1678 0 obj <> endobj 1679 0 obj <> endobj 1680 0 obj <> endobj 1681 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 1682 0 obj <>stream +h[[oݸ~У] /. +؇m !})d7I3(Dbc9( /z翩׫^A wﮢn({&H3}+!wz'Tfg /wy!GAhckWITMqKfyӚx{[x:oݭZi'$6r[\ ߈EobqwjF \At" !AY4?|mxeÏo~> E%loW(BmnQ7vꯏO>/>>~a?|Aگ|u+jY* t=V j̄SBKa# d5`8EG`ga$V U{Hȋ}u+еhJy${t… $\ߒp[n' E[n/Ȗ1u1\.b_.):*Wz9ߌZȲdYWle͡Y65y漁^Ͳ.YA0c{ ^Rـ(,Z^heJu_4]vZ5)@+>B#g&(u$j.D<&*eƢ;({ߵ׬t|?Ha4Q3A_h^, x&@%a44ekVzig %K/8O6a29 gO6'f}dsIq7%8>'¢ SA/ #=#ᑥ,LJq璄i,$B}_ER~l [-agKأ[Yb,o@ =t@7,# !B%*,I9$k$@nYbUgl85 irnw2Fv*8>f>șCq] }3Gk"i;?if!~|qh0޻3VXknۦro{aOY,ZP.r`adC=3Ճ@Ā`P_c-/8nMc>fy0;=0ptajTm MP}tI}˙һD={1 vf!iT2jypp&U5L@ffv.JQTk_hۼv$^PW=\Vb'ba +}hhó,(܉yRz(;F^bV>'UMG"[ӶMrr'pB'\S2@ ++25LZ9OmOfm*dXlr~[dY 텝"ab7 vICladb{F{8Q!bFE4&I}6 0Vȇ s^rO?_c)0gSZ}gD xu?Vm&U2o(;3Yt +E }kr`LZo[(;o(D>͟etg7x-yAtgF6x8YְpA?qn/X^3͈v6#N7kyCٽ 73yf vGS?Rs=CbB_LPV΁(ed# Ȣ)=h4@]f6/$< 'zǎT)ivr4%/3nkJ0 +I`8# )x +޳Nie ݚ7z#Y.]J#:&{U፞nBR+4^7Crٷ2c4"X0 `+oLup,D:xwNc56Lr"@yOZ(u eUb]As)4gm1DVDZE6|(oj{Ja +{ Zwg4$՘Wkf+g+Dm{~ӻ2+~pnx‡A@JK)RՃA8ڤci1DS{DԤ#KѤ^ K4D1S4S!-d:JnSLݶ^D(fH)=Y=!0=&fH&򘴌N'4 Kʽ(m퀎 V8.$Kz7ănh'^e]MHmjCM5k̲%]:OGiWH)i5E ۳nkFO:@[CMCJHi0-Yv>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 1684 0 obj <> endobj 1685 0 obj <> endobj 1686 0 obj <> endobj 1687 0 obj <> endobj 1688 0 obj <> endobj 1689 0 obj <> endobj 1690 0 obj <> endobj 1691 0 obj <> endobj 1692 0 obj <> endobj 1693 0 obj <> endobj 1694 0 obj <> endobj 1695 0 obj <> endobj 1696 0 obj <> endobj 1697 0 obj <> endobj 1698 0 obj <> endobj 1699 0 obj <> endobj 1700 0 obj <> endobj 1701 0 obj <> endobj 1702 0 obj <> endobj 1703 0 obj <> endobj 1704 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 1705 0 obj <>stream +hˎ>_UX|X !aw$[ROUf?f43;Rli~t/3 o>mۼכ"엯>a R:;`i nUȂBfk Ó--諒5V9DkrJ'_@89)pi3J˱ғp!60 jP`Zd.6˭wjG$o ߤ n+`q7CHAmT 6 11lRmzjW>6YyW I 7$ieO|'A#Hs4ۣԋ  Lr ,E ib#[چE"EUֱD{Qb @a+bZ+k 7p +@Bؚ8=c4iTu0M]&(h(ci2JoH|E!wsmjP8QXU$U0^"x{6~7CQO`8x4MנRa~'^zYl޳\$W,sڮm-dWm[>RiȣL5DF,#Eeg$  &0R˓ ׄN\LL{44IȘۺ5RmpVE V jJ<8/U.J+hrѿ/4 &4@4s BEELʶ%Մ9f<@}̌ l@_sҨ~"q**k.>Gv)[ԄY{I\8]Sk^HZEDR~8uNZ?dX\-H6]ʳ?`秘e~]S?j +'sbO3] )oh )S05])}ZcuYT`o L0޳l9/Ê]t,+0=6 aʧXe%c]L?[+*Zk;2'9d;'5v_eVDNpsDNtvlǮ*fPnNJj_; h&Iwt|3jWC`Qu'r8S ݧO)sWt)s}zFӺb֡n]d{ye CFZ0q9\OzTo+C9ks1C:a{0mtN^N7nQ^u6SV>?fx~M3P$wSwfA;p,*`{jxVlqDCWgx3Dg]E=rAwf>yyvA*Qbh@l^&vDVC$1w'/qmqBn# /ˁ>@vri\G:^45ŭ!V; [ :Ӫ(5U)Zҕ9!TTm[PqvIE|Xuik0t\z;3?nxÃ:xhcV?H7q +%x83"Fzh'\Q@-숢ވd'+pH%Gac6fQt%G`ð`1Yx6c]eՁa0E vMg/8fw l3v6aUv?<.şYydNw= "i)zlT5t:ؼ~{_LCϤpW+ŕ]*շ]CqA)NY&\>JMw^V],U^Z% +ޅ8#3IRjO%Xn-( pTԭl¸_ky^{/  |^ fAjrKQvy9\oXx/(B\`R6yFH 8¡.Sp4אmF7MD7SA#tt:8:QneГW姠ۄ 01 +endstream endobj 1706 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 1707 0 obj <> endobj 1708 0 obj <> endobj 1709 0 obj <> endobj 1710 0 obj <> endobj 1711 0 obj <> endobj 1712 0 obj <> endobj 1713 0 obj <> endobj 1714 0 obj <> endobj 1715 0 obj <> endobj 1716 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 1717 0 obj <>stream +hޔ;n#Gv~˞{A{6 {1䕴c8O[jr R|fr绛7wwv0Ms&>|F㇔ wn8M. w 4~qM7Mq0z0 ww|MLd<圇ѧts6q1n4&8"{o Y!Xo#~[dk옺 =<=?^ {yߌ&'D,0 ~{?iAQTM:}J~ۆ]GF"'DYs[PTB2X0 :f]?ψ0[D)P݌0M ۾ 6O<ZiYJ{N4j!esN6QUe6\PYe>IH)6P +H kcC +jq}1V֋er`WqǰcBF&0v<c p + u%Ҥ(f*?2Q@萁VK0Nn;t/cG>O+H @eLu"kr 6IzL4N!%Ns/L ra濄(4ܫPfzуS7 mp atVHX3wa<藽Q^ *Jܝ`y/l* +nɘ*7*qbY/652m=4fPӝ*|ߋ:&9I;QX Ut](bP7ttR*g@Gg yv&A +-$DJ MT1}jC.:J/HH4e!}%[W):[([Rvr!\@0A݂iq!rqUk,]mȑrDȼEK+ kqTN.J+ӱ*&TRT=`;V5A +Cg#6bHiE6oOp8nF_m< +Sor z@М4&AJ?9R@zMPQ:cz7( rɈ2Zn\ fQes3V?-,R +#kZkrR%hoP+ʮgCj暆)լ9I Z 7Y[C"a-Tʙ83E&H͐mMIU-mސT}Ґ\3C苓`^K(5slC{jQr=1z8!٨xܻz5J* -}8jb(y{[a+e0D@Un6l:կ ?r@ $5AH(F}CYq!6!•@v%|15:@gWWޫ<5^qejw{G&:O;ʄ8Ex!NT<&ox]l[-etTe"4VGl;.M ;E,O^m)xnyF;<굢(k~^d 2 +ZSwiMYu)*)EjH B{.pzfE` /I + ܴ8%ATWZ<9Ɲ%%v޿}ayz?|zzPRb ݦ Z,L2*w"&cБTW\;#+[j.~Frt,ǧſT敻gkoڡP2'ɭdӝlP dɍZW2;$ 0m9)16~ر^kiٹt ܊Aק7lƴ7?nA6>LJ3}^>  _x-#g?Z Oq84L\e8|՟/'^/n-_x8 bl{y,p~叧lRbI}+mKͰΏǏӇ}@t`ѬWF8> Q6g8=_'nLUو{GΣQӶZ%G$vs0<<-/m\/ ,U;X#ihC6լ@K5!^}X%?p\gz +9U8ݞk3L)_BƥoxL4ɶ#|gtXШGuh#I\3.Xrwc)@#]jnZ(k>TN-( 0L9{*ۗD?RJs& +-;5יOk,Ha8!Ʃ<$+٥Qj"PUBdE֩AO" Z.*(ԵD +?` =]bc銧]TZuq5crjg=U +)q]\{lpɗ^g R₥Y0=TܚH:1җAoɱj&o.$38Ct+snп7Lc61NLm-?|4/xW5!e&a|Szүs#@ytTV5 +FYTkYT$-AR&k/\w:#T|f1YʕTe ww7X8 &0~g}6ƈhO׾ӯ`Әtk^]w ~e`C 9++WT( +endstream endobj 1718 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 1719 0 obj <> endobj 1720 0 obj <> endobj 1721 0 obj <> endobj 1722 0 obj <> endobj 1723 0 obj <> endobj 1724 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 1725 0 obj <>stream +h;ێ%qk6$pЀ Jw5*XdYIXU{?{|xh<>eƴƸm~swe6Su\ ?&헰&5[[ڡk꯭Ekg_j 3zz`K%6@m㒒_]n`B<vzbX_?>]cZWJYVJ˧:>5x^ކeuhjGjlm/-^ǿMY@R! w_p^qyozwB ض"K7@ +W%vP a?>|>å֭xSq7X5!-jwڮ]mՄ@u.kq Z~ݲenvݢˡ'֓a!mc {`{mO;ٴ +L^/{\b̚,Wkbm[fF0 7p,p5"̔fnzsV?6N+>Rzo#B|[AYa*JXsp5wKvHXA39KMhTIA]V+EzM]m>Txm-p6 +H4azhQɯ9$w*X8FB;mjJB XQi4 A0DmM(˚"gʮaaΫ#"J_9&$¯aG ?i2lC%[P>Yi$5sXv۠+2-vNu +?@Nv%ūl@!c \>x0oK5P +HFEGRCZVj}u3i`s;BwGPkt ڨQs6ωɧ`8^%_1p +=x4 +ѵ"YTcFW,c5^4`3t=K ޑBvRIBNjnmh4zPSK]0 p;&[։s 97WV}$8ݝ{ԯD<2؁fJXϙ- =Apʮ +!te@ ݭ >&#j)Cn YuDUG^ C^ 2j8{A˯\3,=:;xN@Q⭏hcmO6Ur a6D,kMRVkF6A碌q /fck;ցt#XkRVݼcTu\W o|SPX3PBw?Nؖa hyaDO{WIu2 +> +&V9Cl7"_7 /M9hS?yNN7%L +"j@ +#"ibpi%^nF Bt6wpDy2^מ' fۊ=rƫ+f(Pw!EV}AZV` G flTz-yYf}]cEo3Ds~鍓:3V7"q%qͽͮ* 7+ Vn^/O+thb&|hl:qoF!2Α1w|CI؎j𽰇Vi_HJdd!ii2*Xd +5U3Z=^wkqrK>Ӈ4)`14|Z>3+j}PLYV| &EC&y'w\ LۤɰdTL>p̤|_J $upSHȤ7HkBB,,iEsh#xڈi?b4,w&}Yfv`Q<o=rX#M5k61l`N"m_8D_[|^rKǿ]˱[=VcG:$߲8k,լp1̳سH 7$^5k J$Xp:Cx#贾}[?4. 9R-D?ˁ[2޼Y9AVs6 YL"ǵɩYԚG捣9V1)h=_~*@QuǷ +d9'ظi-pfŶc7{Q?&mո?ȘagĪVӞ$7Jdmvs,tʳn$2QRAHqd*&g{2U|˨6FPoyRRQ})5/ T^:뮐ᐫpv +;Ɯ׊ˆ!TƠ-:! nMEEcLfj 5*&%[ 6Xk +DXX mYм^J:Oqvc#޹sIAʦ`'JVC$뱡 +(q-5n٩z $D=C di׾סc1,ce`T<|?[rY7Oys{y~|z[˧m3C YD_ QEaD  o)vÔz LTTMyR GIrI{rv8 X|9I(*3umd+8sU^1GDIzͼtю6vɨ?VX?3Cݒ@E? F,p\wlW7M +ڪIX;TZ]".>O$ ;)reB@cQ\גsMAeǀ'UBm5n +.KMP:V.9=&AN:$+얩ď|{icN,+ܓJީ`4S-)SG3ŵsf8O`շZcԩVA+6ꑼvƥSJ"Jb%IjXuC,BU51P44->ʦҚs}mLZ&Q6Zb+f@PgRBJ'j*?zz`C~o(dwe;NkP^ + Pi!3vZϋlzul{KD9HV8SCERERE!GyPwmO/ VQ!CNJ$WkQ<=6DM61`7Rtɷ&x3xCTreGQ\pU#-a z>&̗P/i/JQ^H7Hy+f R# I 47sTl*ۈ|*׹* *8pOb iFZ+eXB_eCPs_?)עN;mϋ +^qG:td}ާ bG/Le@SxDc͙^4UT8dwKP[K ߹dHxjRk,zP9s%^<}cXm=,D'>׃X0?Dl]z"SCg*d뎔N˾MA]F4'ѐmE"Ã#Uc UpI:}a~E)U 4Ay.j2CXa,*⚫'~FY4LSH)ՋFƭ,vJޏ`0b1Kd"n1srnC+n S'Y9~manq%\ s=|q_GY.]N]Dْs{a8FkdĘ\ꏤFD&-sK L+%\R2ZV8 VQDO[ \4K +(y+_J6rjH'6ӛyat9W?5 +νλ p삌x"ĖAFL~CVC/דL"HUːu\?eo*ެ*G(Y Q%iRQZYGI:bV0:=bF8=1l$,3c5?t>tp)l&1YKѰQ44@֯0i^XҲxY+}u~6d=X#ΠCTTVay8`|24>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 1727 0 obj <> endobj 1728 0 obj <> endobj 1729 0 obj <> endobj 1730 0 obj <> endobj 1731 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 1732 0 obj <>stream +hޔn_1bQ~ >DvH) +jrYHfB.O.%.j̹_gs?ݭw;ݯIG/m9h_WǕQWn`g~uWϫ׻U8aZ֢N]j!]bŴ"&˨ ۀlΡl(I~:/ Da=p2lRtsxk5mV&]T +XZ٨ׯY]pkU߾]x%cn:>JLkNmmmu?>LJ8OASRXY,,dtUEGG8c +bՃ`O6F7mtMU5q@;Mr+V + "<BvhȊ4=RrYP: j_Δi mhgzju(8h@]DNh3"P]i @~X%uҘ +}^- $# p; ^xYo^?ݫ&]9w0z:?wd+1,w4T!>:|E'Fgu><¸XG: y|R{Շ9pdw#N,yQ2$z3:%4WTX|xx JO8ԛkE ;z'YPL,du+S;ϠڸWx">{3?@Ȁ(5F&ȝʙo*<>K^Gr`"AxD6RW 2&apEsDdV8 <ża[!nq L./aTA.bT/ ~˄EB74q=Мy&y 38sYaIgEcAwgֱ^x +/ [nMQE0j802t&c Z'eer4@x^ZBpuCBE:;iw7:D +MN0% rʲKFG%'ٌ272?#_k "Bע^+PbV%HNH'6It7t +^1HRsjM)DW靠,B( +06SPs}.B'С4(k66_<}˚B`9 pJBn;"dLcg)oˆMV0[{ɾ]xaQ"z j?kr/i\/>Tmm!Xl\" @c7!> +'$tb 3}rRn?ys'4.G2,(az@yooom6Qwd! K?hc). [h$1Jf0Ӡף4pxav%Ҝ䢤]AĠi%/I~s{@Ns o(N'؛Vi& 1 +}ETH^ 3~Z>tNזU<6:FD$UҗkO|2Ǘ,13 e5ɮT"˥T=?qv3ֲ)K R^T,b+wϾtJIM޽t]j!ޭ+t +endstream endobj 1733 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 1734 0 obj <> endobj 1735 0 obj <> endobj 1736 0 obj <> endobj 1737 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 1738 0 obj <>stream +hެɎ>_Q@; 4` 'Ӟ1H6,95)%DF]6՟?}}-nksYs^ڶƸݶxwZ͵q޶ofϕ)Z]Eh.NaW/'׼k<3$s9 ;+~=\- "e?kR* ^"Yɧm[ s EH\y!,%n<`{u?]NDЙa¿7quY}h-k,ӝc0 ӑtٽ{Җ̧ h&5{f?h zɑD~/5&mqD:ۿ=wo趈̓MWO5H~9 ݫ>?ws[گ^n-:1:/n0FzښP;j~wwۚZ\,oRB([u h  u˞CK*Ra"9\t i[5b5fجvu0 wrn-]&ػ@5̀8P *x5#Ri櫂0֍ +lЧfp M+m^=-|:>ۃ +'?$Ԝ@ & jČr$E ې@`1Ok$Q`dVPyGFʎRz<am]s"!@$3no oRThH]<ʛQ=fZA L q>COǜOyGX]P[Kq"`O[5-yD%0gEt$HGOڊ׃nѱ`~C^;R"Ałf EsG<8rgh#L6jG &z$UFQB +|OFm%YPBAσx5./@u":.[g>wtGgEzO]@@ӗ'@leD9~@Gy2`B*gr=m;mPb.F^Ɛ ~qqH"VY +m(C0f-,F.' F;ś$fl=RQa)Q聙DsaoQGg+ #Rps6Nv" VlȊt.nLD + I;ΰg_0ФQc5c݊L 6ii$]H(5ʣ8%QD1l'_g%2 ́<]/v7E$%bIpf3v[73< pxf4--3FpR5투n@XZ{9*i/{xU"Vy=Vp Ц]I7218slfLՂHu >w:n9ҷaۘ{kSM!@dpA 6S_Iq>ݩzs4iI:]OJ\gzv!j/]tzbGj#IUbFO/E^,qGz)) ƚ4 +C0hر+D(cCk[2WHac}2c;tSED@} DӤTN/P_M`cꀱVӻ.Y(zL&2ƭXM⢛Nz1KESc\"`1X=őYN6:1,eDW)9f.s'NNOZRcWA{$M UorCbHԡNiiaO +2?d}>@#)1iOL2b1A {b1>=ìI DW5#Ȁhfd\rO]]#$ &Qg|m&U812 ڣX&4)ev܋ 5v,vzW1c~(V|LcAka4 $M+Q(=?ٜ-' mc6(+!ؑeVKE񊆌%:PeAGߦY7͂!Na<)rxDlj픨3!]8+ p2R3\ի{ՓVyač:lW@g2FXS`l6E- qU<նuD ˚?wTS!}4B#׳8eђ2-8nb@]U]>p +$4~4U#i^ŠFId%iqێll1>[a(:'^]r>.̧5d챇{fa 9Rb#xqx.5%Y__д0ܥP*ĎD淵aVO4'1d$ӥr2E>i4i5u"3Ũ>٧) VvSEMigid;|Ъݼy/`%N-{zv>@+\n~H6MCE\aZ|dxSv SIs5a`(UCOQ]~8-XpP<&İ W%|sҩ{e}bp4vK̓˴.F=+m}"Yy B5knF$x>Iٱ> ܝQ|\ןh48ӦB,y:eg7KyY/,#-<`4dr"h8>GH\Ks$ˋϑ^z)0)UŏkßTec=ܘO.uX8 + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 1740 0 obj <> endobj 1741 0 obj <> endobj 1742 0 obj <> endobj 1743 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 1744 0 obj <>stream +h޴;Iodyww |pB M +f,XH|{UnZl 8ݵ}U߾T><>o}es՚\??/smWh<_gl:s K +_Ktx9=ݯd~.#|ƉR@%_e:Np ' +'BVH0c>zG ?/ox|l]*|!޷=PSq{8 !B'$_@!EgiiEc

}_~=Kٮ_ʻ@ + *3 #sO2ovO! v{Jk>v}Th9`!Kim0' l0#B +uYVԭv0lW@^~=B#a6x=d# +wfA!O=wX + Ri!`VSx-8JGbOR&L/`u|Z;Hr #y=oFBr;hV~|}HX$+Dkl3鳑}F}~mzؼ:2򉚥(J'$yPNԅW!pC%,`Cg̎<r&NfytNDm@ <9`s+7Y*Vi4@@+Y<nmn@Te6 P(Yu0L[9L?BǴu*58ؓz%yNeqQvy.㠃.Oѵ'Wɟ3tE`VďбK}`ֈC& ;' ^?ӾEINΠ#p G~̓im:gstɉ Q0tHgr`yOP?ҋDJ'F}"+d(Yq'ұM<(Mg@xr/)DN\'XF>oSn( qfFF;\3.y H)=r`CAAe>F!c;*!9ve쌷"!S2f-B]NġdB1ճޛXX  J9BNP0M_MdAL )Dpnğ'pF\D0A =ыliQw!^=V@0 Z'vUptiP*XWNU3jŔNPH =Q#b@Tէ@@W۠<-QeoJEHdwZŕx_W(=C;zˉ[Oq rxH<°iP7Ad D` MqJk[~E]0&5wu6?%axi"B]+TJ(ylVM5 ޜ]46Ƒ/(NS1|bk5h1wӱI1d~3uf+bQEm*mq^ <`,σu.j_s1{;egQ QiiEaԤ1LqA~NԪ+dK*nRYHu"ɩТQSРɷ7QK +,(PycV]`ZXd.o쐖u4VlF"þY] 0ٝ ++]sr]:PAw +bϢ*4̓ShJt*7%Y=߹x;!MzEB˱y\+-KSpd ΪHx_ar G*NX\' W;\Bqj}:Ts1{zP\k5C7ö]Rt*Fz]j2VSɻĥstxFTu`ף;8K9O2}sh0M]h=3׉أyX!0eX2q78N2\;LY^)㸯ys P#Ggr<_KL%yQBj~sE|%{kp{Q[*`Ex.L3w5ӷ\ ZԒqƯ7aю.9hr*9Eh\T̺j~:T< |KR̻ ѶTV-9t# ~+9{Kn{x KCyN2.B7rm^[6? +ž +RnE-ITJ{@,8pCԏW9NE ;N+XQv*V:*xQU:ECUd,Z6H&NđqqeF  Cev$ zպȎ%0v TDF_iZqJ1u]ƖKlԞd,yCS< T"D +z&%NI{G]qK_:I(qS{<%"UǤmbg.%O\WOQdzZP6W=a<ſKğ ,J1w٨!y&4,Yrĺ"j5+!T P?ƛ P% +i 'ߏu~λ rnQ{?I_ib37_S ; +HR[Id껪k@ǻLp/|Ɗ`j nt +15|( ]*ۦ(~G_~ݮ򽖥FQBőMD1f6k/pb'>)Js}CjYP !ڻ9Seb!mc}PWC +im +7Qτ[#K|ڱCCox FP}2_*6+q͒K½19YX11:a<՜G$l tٟŪGReR*ZFfO*h#m^5&/@y s@6F<˿ ??ğ׀?I-J)CGhsј ( ~TiKT <Dp CM{GZxƌNQA@X֟ʄ@ ^w`wК*gd) :ѿ) @@p_^LK{w, ›Cr+(`™;tCX8ϣ/yp +endstream endobj 1745 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 1746 0 obj <> endobj 1747 0 obj <> endobj 1748 0 obj <> endobj 1749 0 obj <> endobj 1750 0 obj <> endobj 1751 0 obj <> endobj 1752 0 obj <> endobj 1753 0 obj <> endobj 1754 0 obj <> endobj 1755 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 1756 0 obj <>stream +h;n\GrHn`0@cK  Ǥdc%yͧ=3${ 0dUW׽{^_Ӈ?]s[ڲm9/m[crj[~ڭrw_mm! vi-*6کq55?aW_GpXݿ#^^[fy)%2ڀ!Eq=|j)жi0ȿy8W|QR<&@?4h#O Î# f`_ +quY}h-k,ӕЀcOa}k# o=~|渼دn?n-:1:/΍uKkknBYokjq!MYJ;P;Pۯ.%i|X#[[(ЊVbu˞CO*Sa!ssqnǤ0 loab6puͱY`N=.pskej{hW#Pz8wA fMXp6a5Skp3ڰ 9z [t t/OZZPr6`@ۭȷL\͠Y&4ZmuR5D(2@/ +JZ vo5 +X5azAךuЙp;&hd( =fn׫յtAoH4|j)gH]P[Kq"`O<:f25$T5amE `iz0؏Xp`~EZ;R"Fłf Yr؎~K͓#6RҮF|#&z<̆CB ++78>)<ٷDn [ }O? J5-%Z~_t yGn}EI floe>ӹo G=qarҥ;iq}?*R,}$#h0A܀{OsH8@IЄ c) +O(dB +1`CmO4ghZc:aޓEgюsTaQ%7RV`b5OqasE of!J2R= :[q)($`e.g?vo=Mi FJd;='ai C4 o"E + +#չl=`'`X&Y)BihQuG2Ϧv4gKJž.hげ?=fI +OBͳ"CK7U[&-p N"6lQ4ᜦ^YGT /Ce6,02dbz0q* '4ikܑb| +2(*bSӨ'>{c#N -@H3P!(<,d3 DFlVllG<0@E{GúLv$6Ii.@R)Ԝ$V6ᇑT&J2C|S.o;&?*4]C#VK;-YQXٚ +[j?e<@*rbk .nC1jn.sCu;RH&7` rrp,y}{D9-(..4=\ŞFݰ (eC 98,_7X~/{ӛco^y`|`%/̉^S:1VvbiZIҽ!ǂet(*t<Em&tfMfDBK~S`ٗĘ[;zVA2jr$aĆ.pcH%~w°E)שU T$ݓQj9 4dt-]52|kÍJFJF!VXH[O]HgG7 y=\To;~N gPռEt'QQEU%]L?fZ( O5kHogƒl,Cr4v?vP~q9Cc$qN#YQ4"xts!]DՑ]1U3 Oqj6#FYBʕƇ<DcϚ7Obi_\ĚhޒCM}hi% R)uSGVoEcv@O[F<6r>+_%)PTuHJRc$M]% XGgeŪU=vU>s';: j[SL(E0J+ښ&{H4Z0NӰOO$'E=t,׷SXn /7{wf]w u\8Swb4(a3 1zZ>nt^"ڣCUSkG`\ON qؗY󧂐ӖŮh9^? jEqU:tϚ8}{:l(3xW߾+ ( H]=+ >G?)$mu[xB1RҶOj"j2 +ՐՐU#!S׳͛~~k;j5 nZ%I`E-z9;;qrԪgf0|,r'wVՇ8 ,ꕌ8&|cTro,U!8c'yL%KibӅs<*m0f\|܎6z`Am#8쓨t1Nc6VnBƷ!v=>v9x>wT[d̴2ZySoQrTnY08eʲf3kp1skNpNVi&qB7.K+zRnՂJ/E-j'-aF?tP /G66XӁ&/,.k-K,XD+Xy *z$# (jE8;0AsM%`)0t/I'3؍ 4LorԖk\!y )04Ahm&S72 E۵ 7'mPꀙ2*DAy mw~`] +EyC" 6q%Hf"AJMc'ԨjY<>QK#{GSΩ4;ʽ%Ńg;'`b"IfMl$Bx!kZdX4|ԍ|} vqIZX!/'}ՐhPB Og~e ?3! hlyP$Bj[a)规IJ*1ډ`skPMFJRОNйĿt83/.`HxQu M4POҠ.9_OW&%܉$Õ?p/2\pIª +_p/7\q"w* +LUrS٧8g—>uП=D`16`yM<^ށ̘]<7o,{iO.zi )D+öfa:aЩ߇9 +endstream endobj 1757 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 1758 0 obj <> endobj 1759 0 obj <> endobj 1760 0 obj <> endobj 1761 0 obj <> endobj 1762 0 obj <> endobj 1763 0 obj <> endobj 1764 0 obj <> endobj 1765 0 obj <> endobj 1766 0 obj <> endobj 1767 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 1768 0 obj <>stream +h޴;n#ɑzauYY5łZ1YƙYҌX4Ԭ"#㎨7>=_͍Lws)v86v{|OW0q 6! ?/6^n}9>!nצw8ʒta/qp؃,o=+a0Gk3@3 y7Wpv#M~Õ`}6H#d, + +1FYDb pD[id%xf kIRX8>wSn+?>uilbLo=~Oݛ5>t|0モfHM13vD/pnÛMB{-}4"bHC$P .Gèp/DWGSp?trl Gz"O4̉O ؂+ CaA}Cd<н@7G73|Pmjñ̓=wn$SF굙 e<XX~FoFA3ٱ&bX +Ϩm?Kno*w2):Д=*}yC!@ ;!A=w }ta(L !TCƲ/~Bp#H˪U'Yy/6̞w4d$ػay!`2du{-=!]1B,*8UktXYlne &+62haّ\KŭR'6[fFݱM>Gԍҽ\A Zז$P-B0 Fh Q*U2‰ Qdo!P(Gl.fY ;_x&e;ж633J?0P_.Xjޢh.fQ&JzIx%r^×F6ǵ@ 8|^thҶ\  +c,Yغ>' /qs)-jŜLVXK>qyhuH1Khȗ@8HZ}\㹜S!\6*7aMudA7|k ]\}75ԼנJ4* +O+`H!5Qvr@ J\7-CX(@kvC:Dxd0e.9Ωv@eکrNV_&3vA&6"#Mg\x/#cDQ&ӡqa3 ̼E@0bEKR+R+eEܳw$J^LM`ސ?Nk[V\=]>07]^?vw;z:?>\U6<Z6(W~9BP tͧyL?PYWñ{]a-'ZSwv"U|gϸ-@yCq(`⑟y篿P@ AC*ܫ`=v߾]#A؍8Òxp]O +rZLLnwvQkl@h1+Xz~5O8wY@Fk8_ o!4wNAzxw~P¶Qv$x GG2"yjsSL3?뮻ϻo*%pi<}D_Ъ +br]/4&{xk.4`rLZM#60H^3㲎\N @Lp)O>y$'_DJ eAbլgaߎدnur0`m6Ղ,y1+m+~Dccmy D3EOC4ƉHTx2%&{ KA TXX7^@lJ" Im-ѝ+3sMjA}U;1}<鶞(.FN c c\Y1?D]ӏݎ W{K/il5>[u?Z0~x[ *[6$^%W2lYJyQHݡSl KXӴk2BW`qΔȦ87E| +9`l܇zeYށՖ%*noe:!jQ;ĕ4, +"amVӕ'2ޓ+Bw=!G ֠X5(%+9wbA w0SvYAa+$; +)r!  +QԔqy*.Pe`,ړ-23R3iOR$_Mn 'Ơ]lEpLcyk\Ar'ҩ[gƳ"a!rfEv@)(UZ'$piqۤVQ=ߘ糬Ṝ  M"Ee=JZQigeͪe1k{v> O9'W9|oM*k!b9sPx1%}Pr&ksM[1DLu3{Rbc~MHxq~!Q^r*pI鴩¶UP"dd A2@?g,rUN2e2k9DrŹMӫv& ?qeAy-]Fxr 9Xq(9ߊPwt d 7E&kƄZ*`4Cb[#mw: R:uMP9oeī1~SB.iê(tcx%?%xr}c3ty򺗣Wvм§\,61`s@'?Gyxys6K E 68&08W$̒@Qmh6`0Ԑ6ktr2YO?1X+er)+Ǩ6/+Y4 +IWq!;{']om6 }!4Z^\gK2E{mtr8 EIbeѹĄd\o630224A{%nJdC@c^x>VE꥛`.`e󛼳S혃=| Γ0< bDl n݄rba`D<58ΕXƌc]F8JO?re_ݬu\=?ӳ&\yY j&=0r8 fUr ,EgޏQ *[J\:ab2TfLE8X愬V쥺,z PrCXb,yZT$DT-V!AVm6 khFq˥.j +#*Ř)VD-E`Kg_HW KK. ll3e*S"4*yhXx!}0(pFOU26n^-|UѵeDG)T3̔ %:3fʗ gT"*[I0&wVYrǩ2-u+T&Ķ|KPIf1eUU+bVmOP,+xSU +$$+Kj+ 72$8^Q?'9%+\ Y(,*&';4qR$R$L'$b +/QFfM ,u+ +!gW ^-In. vl^(XWv@^p:6F7^+mC" +0 H"@fޚ2UB 9sI;3MJYCYL2>kykJ׵0_rY~h~?Mq895%ɧ(-2TcQԑ64wSzY{D&~ ЊC>|!$V|6Y[ۦ&`;7 zW+/1k+Ҡ"IA-iBF+ҥsܵ^wQ6#ƒƖZ7jT~ L9ƅ +shyP{lXMF$p/RN܏)L?e[Yq'9=f1K1ӆY,x\bAK +3ueܜ m,˜B-kTyAɩ0=BIAE4\G0J8VuTxRO߹xJBF)SzK΢LU,!+c, iS/xOJMj}&mm2J%-k[B4Qy]]Ll!,z)d+.t^ +]CQ7Xw~2pQNʩE4g5q)ŧPEkE*/F5ac^.[(ϒie7NJڐW]Ï?*nf:?٪#`L|J%܂$\ +\>_jd Rд`'`hǀ1Rn!mCPo&-oC`}p UD-HQpTo٭~k-+4/{YSRZ4IgIq=3@/&БW@s[SEi%z_3(e$p(D~$% Л?1_@hL[+\a`b4zvM7k|u,,tQy8KY1yvY]vÈ=\^b}8FG`+k{}m*[ڿB2+& +endstream endobj 1769 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 1770 0 obj <> endobj 1771 0 obj <> endobj 1772 0 obj <> endobj 1773 0 obj <> endobj 1774 0 obj <> endobj 1775 0 obj <> endobj 1776 0 obj <> endobj 1777 0 obj <> endobj 1778 0 obj <> endobj 1779 0 obj <> endobj 1780 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 1781 0 obj <>stream +h[K$qϯ㌁|g%eЁ4 ’ GFVUOA,3+"Ϳŝ~|wwo޽s'wzrfo9\O<8ӻOwirzwһ2!4uKs-"BeW׳[SP<0'9N]c_OPͿ7\OK5XϧR*-V+x\i"k]>-)i=Ŷrn 8}Cʰ)`'jA_ҕO8/mG/Cq\=M>,rbYz|r41ߡS1ݑ;}-Y~& r*iʞG=A;v;)nJe+ɥyͷ/_No|ݷo?qG7Gz_ gn-áNt~{/㇏|~MM]1u>}BG7םe /?~O>p9rhe?|a8_8tuٷP +TZٹ8c1X3p$_%V-CWYwvn*ɻޅ6r/0P; ,SF22Km,JøQiSTp{jC7<?O g[#i紤r3$.8sxn"N<)Hb;Q dZ`y:B7WJٵR)/ w5VtH+8X3nƊLqhENì4 4( =}T +Mn)HWQ~?Q>)o~ +e*u'>QI8톿|hŜ+kGě0-AA ?#|'2͍S;Ałf +5a9JC+8ǰRܕ˵^J~av-Un +mQXno67%,%<9gTiNn1VLߠ=#}k2QDQ_aTv_˺ɛΣ: +j*[<5 -*Z/ .3 ]–@,U-m#6`~Y8qp(:NͲfO%0nB3hSHhj5[siSeNn<3éb/kg_qpˁ*3ܬ!D[@tჺ?>de>RӣaϦ&;2AyV$ w s;OТٛvOޱYdkJLT;iYTFiNyh36jâgN\.fpi*꯴+܄{3鵦 dtzERMڶ=U_:Ee{`u5:i~0C3C<,҇,,imfg>]Sk۫YйTH2Xt.!mRGհ.A~U[ KK *@> C\A54)$!6|XƁ^ ɛNָE{v޶_!3x\%'yfHd?>|bxX>,hb;)H\Q6dlP`P +H&f"T#3-9-r& J-g[7Wd =[ 'W5lq*Nd{ -4-§Ai#ÚuuAN2ykXtpǙCDhӕu d9kJOG+F ]lT ++UF\Wfa7 Ƭ`6WY?/h@M !lDE/: lɂѨ :.5b8FBǃ ѭA!,X UaG]]q{.81횦95t4fL bK`,PpePM~` )tOhg3^dH"VͼY>4s$~v!,98ưDHʞcS!a_BB7Gƌr$Zcyf`з frS4J/Za6ơ@D0@YXW魵tk)pEw\|vWs\P'8E+l]r3 +NRwO/N޴h (&2 6Xa(Z85` + 3%EM|VuPƭ—kteaob>65($ DCeB쌩CwAʔ\z$9ChQd,r@ c(.e4qq#udTo8{q7+S X8w{K+˰Jm='rS|hOK +Ǝ#8GUT0Ŋe`Ѩcdq.|䘠oT0 sQeѯx( 9$샚O^ndǎһ^5 n ɿpS4ytw*b+TWl ʛ+ɲ7Y-hs[EWEņ`I +/L(٫% l iQ +y""Aq(_m hbˀ}Z 2qW,! z||bDtrDb1Q;Z:f\d`f XʄyB=G+;OpCgCNPMWaU۪_x`vZVDꊏSxczG6e1SYLšWњWWҖtC2olpܵG"rFn84̜{&uKN *܆)% d%ts<_lǃIft,cF/D}o>[M^ّa^b7l- +E-Кa'Xp^Z4oܐ6vB;+clWJG+c +w%*JO7IX -#l34pĵε?$kA.dĵt!p}PYT`&Hzrl&<^͚ؗydc\85sLہCu+KS9O"56X R6XcyjԸout !{٧Avc_7yZ]RAo5Z빍5e4l$KfmZjm 7yYͫ]qhp=Ԑ1ַ #KIʚ‘zMr;.;2hRQ#? wAcNfII\ NE^ܘ/;<\XO2{v)S_exLjR.lsP طltAUQGFߠ1×eкܬL?zdUL2VT4DrluSfhBsW$ڛHeqpOqE{AC10vW&.q͐HVKnڴcp_ F-pʤ5vrlV=g]rUBnݺ8ɿqcYdZ@C,V>/q8 UN31BO +E `,xѲíhNl5QVH9|4COv^Xv\~C2DApW0A`۲&2F==tP5MQsĹt_Y>޿4#IϷyEtIE2WQа|5L{@A X$p}L?P +P/O;o?!Zgn#xOez̎<}L?LV~PEr_("SG}*yt(AGd9Po$ҝ^+ψ $_#?6]l vQlmT7gb34VR߭ҋ-85޾dM7Iwh"{yvnw݀}8pzd+?cw 2 :_ j &lMl7 JqQCnaF(S*- {:e{:0v7C2yEl;tkP[$m0ơcD=[׺.\چ'je2v:zjt h Cށ_(.q_nt?2\m*$6k@֫=bCѦ11Tnџmec'G/fά ' pȪEMXEQ0c!OOoO<[Rbp*wZr7\d "Ii)<LHSᐈN ǗB//CtG˚MԆIMn"PvoD< ʂB~hn݄1x5lMIn&Ny("pŢ v:v|6w*zgТK&c1̜mT2IÕ0S}?`M:%_ufyޤ,SLܺj5lWq=9i7@ZXh6ÄCJԖ(*Wq.zT)S1O @q4[vـf;H'[x?AWŦ M2i[GI[ FJl|^P׬PKNj+!*^&CC þi#N3'YZ w+O\ly.uH +gce\]џXrإxrajO>P%~S'Kj /L>k NYmw[K +endstream endobj 1782 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 1783 0 obj <> endobj 1784 0 obj <> endobj 1785 0 obj <> endobj 1786 0 obj <> endobj 1787 0 obj <> endobj 1788 0 obj <> endobj 1789 0 obj <> endobj 1790 0 obj <> endobj 1791 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 1792 0 obj <>stream +hެ[[o7~ׯGi'`'3Dc) ObE"b._ٯ~~͍psK&>2<0Oab~ +?.8Miߌ4zڏ Y"OxƀoaGN!;Lw4} 8 +S%:fH ܌o.` +y}XecYyp`nP{Ӹ阑Ef21}ه3>jʰx+mf1:!$fBe7X̲M,jUfqegyo=2|{覈Do^,p%l^x~==xX0OyXDW -O+aT2?inj9Բ]J\a@8N_2y]̰:?Nס53jٹؗc1X2p$_%Z7o/yL +pM#H*{=z`#<:|>GFeg {6ڏ˔L>庍8K\pwC[ + P RP&A)Z*ŔŲ@lsÊ=E=yZWTi㜊V5tU^`ݎ&rL0~1 cAHSCe5)a_˰y_k &a W-37<('¸fC[&`84 DS;23MUSݷNłf Ua9JaYXΑbKiW; <>u4O#v-Vns2 t{wƁq0MjyǼ;2<9DFMwf/hUR#ڑd ;#*ue"P2>DVRl +*$S\A%YQ\ ݑq:J[dO.@KI3)g2nF25jp$> v9nЕ۸JG,UB'$q9B|'4AuΎΟ܌X2tDXi"^]MMC `I'TAEp5ks9]'\!7Vu:^#I7&) +9#6oo-QfYsfL.W5l#Q3^͢ +(> Rro{Pn3J5IQ“CR_M7%RbεmFOOxO`:{iIb]_l.nɶR-0īja@>f\Nv%0'#x1 9*$j=EJYZԞ_6vL8(TU*s8d87!6bٰ1Iꕽ ј!@Dyrk$ӼJB)C6^dl~l[SE6m(XPtYzF/`A03LXM1rwsBp5NH^4})m$SSBI$yB 0[MSvtr)6b|v;-gZQ9^UI#SvYWH W.!2W=*q(3=&8PpٌrٗR3 Io9 T8(Ok>Ĉ!cZu$ L?63f9s P403Ћ9Eֆț1S V_WOFN-"^*h`U06UIv鬱::x.j$i9ll?F;C !Ǻ푣ؤ3 l7IB*7r樔>GT9Ւjބj(_EOڮ NN\`?|cBnakC|{6!YZ@zᜄ 5Lt⹕5A&XkPNSYNQNC6hum NS"exuDm!`!b"?gLA~>!.SLNbZX2c@+$eݵzdHrL F{YEvQڙr#Is#(/#w2iD K]o0*\JMu^\q?7; +ӂvc}kj͝ VrU͜.6Y&B2ts[%ȸ.J$iXɒʼS gX_-Jo&l?,N2 J&W8-iaN]Wvԝl嵷VIy(V][γoBs6-p|xȂ +Ѣ*x\A8S6B(1U\32(+0ҞgTy7ãk;ӝ78jj8v,Nw Jp}A6kײz喰IK]J, GܧJ؆ +/c@HBbgT.rJ͘Ńʒi ST +U*hR=8O-Rm\yeJ{dJڋ31q!>l{ FYI`k9a|?^![{xo{6|śo+ŗWl]~_p󉞇/7+^~W +o?^]Ż0P-A0z:{ +s`< cPO2lLDdqۀ̜=Mcd^'*iwoTS~lÜxΞf[2 fRDLzNx&}}9 '+߃MC + i]v=3߀xܷkQ`!W@BQҟ){t&L3&Q,b4bznyٽ>/r=pPA=kli/Iԁ7*>bD8Ϲ^wlrSSIR*"5lQIJܑΘcɀ* -2>jC;}E-rC.{'tE;:j0"0[ ," +>$+ P^zG Ky ]S)I"SJ^sל5|`3\]=ʵ 8.n$Ĺ7~; n)_e"y P"X,qB|qWly$2Kre޹\լ읙ۤ\ΒhY㭹'Mٻe͛$G.1_-RLߴQYTVMwԤW{zCzsS| i_o-!ҮW.=ߛCYb^vU6}Mn{ei; w`Oݽכx Fciү&LՅlCC~ ~, +\Th5%cԝC>TC +451E|01> D󠡗'O*.,}wZ HЃGx%h~aw WcN{xI/p +:G>uXޟ.Eށ&S[ ؁绣pNY,r; Mlos56X"O;z?>FyVZI;ei7Wdf͡[s"WkkL{=)m-NvcA[G/ӝD =wͽdBe{1(TK#zgܒHx!׼S򻟺ǁ˸g{3˔ +`ϼIEdD.N;j]%h֥JujVnV>- +>IyWb=bC$>?q7N3=~@AH>_Ez@Kvtdd?'˶+em;%Z6G[檾,7s_^>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 1794 0 obj <> endobj 1795 0 obj <> endobj 1796 0 obj <> endobj 1797 0 obj <> endobj 1798 0 obj <> endobj 1799 0 obj <> endobj 1800 0 obj <> endobj 1801 0 obj <> endobj 1802 0 obj <> endobj 1803 0 obj <> endobj 1804 0 obj <> endobj 1805 0 obj <> endobj 1806 0 obj <> endobj 1807 0 obj <> endobj 1808 0 obj <> endobj 1809 0 obj <> endobj 1810 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 1811 0 obj <>stream +h[oǑ_1h{:X,)C$yaZCv?!5Ñpn.kL[2>`C01w) 2APޢH$Ɲ$3$"L兞}}pw}/t2Ќ2݁~N e`Z~vwxp:#CaAԱ{@7t91 ۿk;!NJw+eGeGe;n@z.Ad7H w{< G؛hi8Ԅ5 rtT6>Rca,t8MCS)3 R3,'ژ!Y= D*[hU3D-p ZwA @fhl'-xkF>y +6 CI I4/SjHyj & '׈IRBv D +s=8OF:74ʸ< #(ECRx,7c +DS)Bۖy)J #u*/FB9qrk~LNW#Nçʧa·y֏CBLe؉GX:<ڍR1FiE4$OGOׂfް`~D^;B AfpEjsXZsTΞ]nKaRڢP2 V7lQXO|Ӂ 謁[R@Ao|sO_[ "tߴ5Ƒ/>2lo >izm +W;lDLb84^nHbD +?ײD&dk ~v6ЎP (q!,(Ү;?[ ˯Iiqb227:F M߇Q#Hш f0F;t%)@*=b E~/wt[="3j@G,+f;tPfphě 3M(`FL< RіJC# XVUvqzmf(0FI +O,8}Epڝ>C+8SnN +jֱ߭+8ͫW+ $3a,!+P.|$'Vt0-XO`>\>^!w"*:IULiO([-5LT:qot&n--w,lwV{R?5c^6,퍣-:MsP':%SpS9A:i1r:#'Dڢc"T;& p5.bqrn@n [4Q۶ʍu fEiAlBf$\PC%c6sBzCAGbkĭh 9t\uutef9Bb9T0 +e7ٲ: F +gPReof*1UgM,A墿Ķ +~ԩ?-ףM=ؿjxnVm[*T+gZs" y$ceƂ js:2'fS2U#wH?1@1sZˮ!~L\t7YDk<w#\.;D:bK;p]b_C?-ƴ[!@BԾ mnu;Lb"_!e;wS؞ ۣT!7m_ȃ pp4oB%ֽfM8 }Za$gɥa@|OUv0;.tpbo +=;h~1p[xdX +hF0apk,IF%b DM*jٴ u\=(ᶙ-|ht$Rܲ)P^a)7x^W&_1U8opq"Z5Dʚ:ǵPUmB |D o3Gk&6f9P()92)UMIpIař~6X#huf:bM\(HUqM;RvմvcZf1Us^TڜڞVKNNᄂ㾤㾤㾤㾤 +:R2_}f鱚*Gg*r,DyI+M2`G[QT-ΒsMeI͆lD`+=YӀ|bAM('(6On9s8yOg'M3>G[PsuL/HF;)/__F0bg/ۦN砤CHpVAx.EĪ*.#quIG(1&JPv&wSD`0i}} ~NSI6l7g#c{T/T?)v5hqQVWkF0Kul25ecv)-nE4[y%NѫL2dJnyɳjUd-;0eE0t՝fK(M :D@94-!bщE%c6Fϥ6t%LzC3Hޱd8lV\%UgeM_LGNdVh\tj7e@6z՜;Yvΐ)oezz f;ETfǵwEK GI0 Y4l*_7"Ԣ6 Hq2bqVo"0lHOT*{sy*V3>܃),,a{`{}BT`#%Yf[Gۃ=X;iMqͳs+ZsӕK]1l'zf@s:A.UckJajqyHz&8Y!ڮAoy9eN+(/5!5sO i{UjFw.jIAoOdz")v ҄o.L:KcdC1>Nl[SY+$s|Z3<{;6k +世r1Hy^saW^aS-jcGp55VLosFr!e)Ic#44Y1m>Mgp|\X;1f~-EX"!p !f!J@bb3z0W,<ga=K`mo!>rƏ#dfܜssz[};)٢df.b'n Ղm.mY`D?,92 'BOZY2a]/H +XKR|T D<=W$>?>'SR-5R/*jS<`v'Wa%x4H&B%~3#i7RloL`K0\[mk5CO MypY![=jzY&,9S^ .J2&7yS.\|}oZygNTN#eM鉧^ qQ|s(AP9oo./Of/ +endstream endobj 1812 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 1813 0 obj <> endobj 1814 0 obj <> endobj 1815 0 obj <> endobj 1816 0 obj <> endobj 1817 0 obj <> endobj 1818 0 obj <> endobj 1819 0 obj <> endobj 1820 0 obj <> endobj 1821 0 obj <> endobj 1822 0 obj <> endobj 1823 0 obj <> endobj 1824 0 obj <> endobj 1825 0 obj <> endobj 1826 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 1827 0 obj <>stream +h;n#Wr~$ϵ@,{ֻ7Y#EQJSLO]ϥE9yX0boйk.ڮCs狟um]BgV \3B-e~iƉl,a#qBw[z;l0G{+@3/^]m;cnǦ8q{q{!qv8#"±kg .}ч3# W4Zp3Zc |g |pA5r ŵpey-N#~ c; <7Լˋ_aݮMrO#M (JYH a׋w?n?wqi˧lm7zC4~ 7Bخ o KQQ۶&i/k=hGC˷`p76|<֧oi1?=΁g|g3\?2 !200ĮO.-1=1H;&pe$㠃km#IKBt!}eu&X .`.I9\&7muޙMP(i*If/Q0C.Иn'9:OCII% +$T3߼B,d=h Vց9Q)FH?j󴥈D2L"{FW{qqĿM2h|)&(% jPj- B%5%sͅ7sC,oy;2ol o;’Yr` +HJ@+abYbI*E{zvfH43dHp+x؃60f}jp(?hV4yEgW&82%\FF̰-1ܪ/ @#L$EJ)"!)MB*%*qE RxX( O磿1[VS e LN>{ӡU cpA&qAӌF1s)p_*B#$# ΂DѨC㳷:oV-=@ٯc;;hlHiz\UALth2$iiwu95DP&E:}Hx\YqJ +OLqZ*.˥Ćyj^Gk7-@!#TD/ cdzQL̢aeAX$׶fw pyDg)W2Hc-Cnwx>hYjz9Pku[HY4nXaCjFdXY?$ $UZ߇kvl-03^ۼwZ'7<Ŀ74Ь;pD~<zlၴ́Fy6 .~C;~'R){7磜$K뢮oI^׆MN"% Aė$j5Ҽ~Y GZ/+ EQ|X3"^[V_dmˬFM8*(WUw +LtL ,.e Oq2"Gwr +Ta 9=DX,DM&MsT (Hy7V"*L9.f\*''QاNRoYdP$%#:x%K/A)3O,yXp归u~8J|WB-N +EMj$|`Z*\biTۢ3?mV4TDE +>⚐en44ՐcBF{ Mznj(iTncEpqZ.uÍrP7U&݀;EIT~YZLM +._fb\JCR>,E^Um)YL pHv&WJmJP,=BB=B\ui.Cz{gМWrQ 7RFZ$v죥M8|bu{HYK.޾2VJ_]a@$1F7)26 +1@8ڕB$/"U}y+J9:Q$WMd_gQ~%OK&:oպ7ܨIyuMs}JYUPȸ/ +!bA`8A$9S?JC~osHTx>ԕ]+d-"JRVOY0&ȗDEP/ +|e!Ow8W;,a*_-tBZguvY_+m!e9&C*-־1&˞*M$yQ{^N {冶,8)M^3x\[;v_^[z!w|錽Um=xo&j74U6N4E eLb y>K ,ْ 5CBMߺ&3Hȶ|FvR re}:A$}lmS:-RiBRCbwcc,UMPGd 3;a=@3GڝXBsqk}<;2pmw@8[pGr>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 1829 0 obj <> endobj 1830 0 obj <> endobj 1831 0 obj <> endobj 1832 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 1833 0 obj <>stream +h;َ#ǑHfMYUAIZӀFƂdݴ&{Fڧ3"G}\V^qGdd?7揷7onoMctط16cz߹komיB͇e׹w ~mfVGC8C;6jaFklqv-Y#a+cd{ߺȮ<+ cpEla'eY/!)BhZ ȀݯD00_mz1CZ7c~ew];8bˑrNp-QO@P L>2APޢHGJzdlD֘}}=7ޚ5͏ByܖW.ҿyidjkpFyq}>|ڽ=>_Oaۼ7oOٞ!csB58qfDO7 ۵a YJ(mGmGm֢ۚ]-v_la6vr = Q_}Pc0B};!a3l@˜;Dj[hWF#pJ-AEoFd`6a=ڄՠOc C ӆe(7tP? G!9A-h_J1Ki+Čr$E ҄p!/CGHl!|uEjs~sɞX K=4j>@ˎvx=II@#P[(dkPkc!߽"a_L~zo;` ԁ\_av7_7k>_|gk~kgjNq~8Lsv֜vtn4aN&=0SŻ #}L?;R㞗'^tTF;  4_!K@3%%}{yn9Ys ϻc3u=ڝzH3u >+ց9ٖGDvh`Ǘ'dm?;_O3A5?c@"v3(A[|0p ;;ЛmB2$ 5m}Gl,N`q`08뉺^F>>[8 ǟ=ʢ% g\ͧy}/oH3p5Avậ9i" +ԅ рΡ +@6Ӝx9C^lg9>'O,&CyR?,wt~`gDGk?~~89^W¶fsaNSZ5uvm ޱ}Z ͝/#_~@O;q1-0f@ɫO^V4f/1!u`9dC^|GY<A.cDg?Ĺ~>Nhyzju-C2Κz^a. +GVV*ѐL%ιjDQߥ-lyB +$-r`>6G@<f Qh +ݺ +-H1Hcf`G򈶙Cp3?_ۡUH?m%7St7v%758P[Sb"|~@mA^q>0J~Hr&P;h35mt&i/pL5Rh+d}~+;|螳`;A]UBL-s"1o Qek|YeI8kٚJT5Q-XGߢClT 6hEI + hl R!pG}n_~pz?Lt{Kh#90ܭjsL?7a G T,@7:2x5j  fQ㞔rC[3uўɏ|q0"*ݧ~=Ih/啾7ɑҝQɇ9k|`TέOYskJӼƹ@_rb .;_la_RUaR7em~\>Y{b#rc|'Ly_cO]cadGpEҢB[ZX>eCa1&72B[<>cFAY+& #iBN"9Jg?l84.d㕘ND:$nj.]I؈RUS뼐K^(q/{ F¹@nIrnjM0JadťKƪrX919hd ݒt?TY +=<$Z6k&Ԑ +UpIJ!+92s:5`+(ɚt ̉u9bG <Ohf +8Q^ɇlj$) 2"hB‘yjvz2`}Js!2ed7iZA ]N:=qy-ՌpL1FKQMak~ @XuTAUb8l3ھ}t,`4ѯ"bq$',*No2lN7W;< ` Bm!2G9{l"C7{.R~_Ucފ0b) 2YA]i\iZnf| 5,qYT7.d-@_[M87㬞,RLtS+B:Di^1rdi¤F6{ڐEgV/̕PcU4GtǜV +߄ޑcJ#NU\N8䓂XJ|yg<VuɏL iz"*yu)NEiX8;*iLW&bHG{v>剱-^CƉӍ*D އ!;D|fr9Zɞ^ԧ*ˡ"SH郜oXkyo芃'#z(<ڗ -`޸P%.R#*Pi v)@71dQPN$bg.Pqג'O|ї"x.&ɖu-\UT / '%Μ~S%,LH״XS<|KD9eV#pN(CZqtz9V5,01^U:NrTt,zPEJMݧWV>Ȱl!pj=ꄡrFqy=v3$n=Xi$CLo~q +ӉJM.!僝\>x${$7a= +;E_"A:M% (n(v!8R/٠$SPTBB]Ԕz[e1Ť:5-zl(Q +>tT8:HiiXR\)Ec +4&cԘ|'%t=U% Z_"ͱSCI^y1>ʵPt}2-̫A5BJTr[)3 QҭlǥaY3h +~n !&azrUɇ3N+FłBE#(37=p!?WT;\Qb*eu +&C]In+{ԕ/10|d.pzEٗȂ/R>XDHv(["_:DIMl/ŕًs5"#0ZI:WaE bu@?KSEŬD3tEt-]xsem>|²+*ݘ\[K!S U +IAÅ4 SXР[!ON^K\JW::2U,zJKd@]`R}Zt7Ak񯽋z`ywrǴFo +5(oө[7vNɢ!ITe!)NtZ'^WFo;I]TL_}NY*M[W_QYؤ,mKIHGx%2{oc?)+k_ h[^bU +(?U8_?0 \ѨNCLe)GSSUPqR\J$l:_ +endstream endobj 1834 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 1835 0 obj <> endobj 1836 0 obj <> endobj 1837 0 obj <> endobj 1838 0 obj <> endobj 1839 0 obj <> endobj 1840 0 obj <> endobj 1841 0 obj <> endobj 1842 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 1843 0 obj <>stream +h[K#9rׯȣLݞ{v= I%uRw{odJh43|#_7޽Lw{I}%8Mn ݻ~p5! ??m|?G?߄M-|fe}|>Ÿ!nVws eH:X`8([#@|[ӏSoM5f5}tPpXud 씋h6炡Mn(Ojoo뭾 9С oFжOCUrFE#Y)B!9d25@n<8+hP.!A)*cUJ@Ų`%bAfLEh"3@ +Hn!wejuX|2, sKu)LUHVJ6av-t-.UZâx'X>myX0o60X +( xX! ux +.v @F蘶z+z8Nߝx G]O>P 'aX@x7'& +Q O qJ!/o;r=_$㙐[@I-[yD6@%}*ha;m$O3ejqtՑFtB$NrbE( R+܉:fF"s2հC ~Y/!>i LtzpwPX-d{.RJj8b Pff\N/Ϥۥә3wEH+K靻qrM35ƐnG:?H<((BQޒ,.LÍɚ:8X-!D­ I56RYK/SuqpO( +UbJ$虐xSw;NFtb`1sFTAͺ QtTK|0yH(ިv.ޞfc%U8ezIu@EA&aX^7Da(c呣n{֝UB@a5*ha*pE:PءmD0dTtme(1dLIt#H)N%5l ^ 5+1jI1qn&ƹW6,r'uu6fҬ}6kGAq.h<);~lzB :?634-a͊}H$f)aApڑ)bTʕdlQ=X + < oh%HZd/$^bd>%ƹ Yø@@e~HS9t?31jJ|UDc" *`,ZYU0M2J65DNUR"y}/a? U!Jf Jy\;T:vf#*6-_l!7ޛ° <h͕6YxaN'_7i<ЖIC17YǙM25 +kbF@'elͽt_OY@軿&50iƋ!06Ip-Yfةua;vMMpl8Gat*lT&G~#yk&YA{\Zq5LRĂyF+}})KbfMN6Qpb^NeaNx]֘%*EAɽmŪ=W}H*gPO3Uڏ>< c +DJ9vb+)sdQ*.b X6T熂8VߕC( \֏fYܦJi&w`D8C *KR'4fxfbQW1c1Ӻ\c<1©aSF-2D;HT36=&^k+ٿt6>źm`zv8 *d# [sNfZ݅p 6kXH˙ +Ȣ,x%[sk/Ql>a GdN6],yhj|3uSk >?5hk 2@L|D{,[ZfC]|~"\VlL.8UU*u=T(Se^\$YfTNv# Yg⺨|%y@2ϐ\c[)s|d95K<\i 3/~ӿ-W{9/aaa\n-Wq|O#y % EQOմ_U%`1zIrZx&8 _He3B_]T1ͭD-ҾFaO$.?yr5yUJ |'Qn]b 2 R9V7Zh S= u3va3O@7X?-<}Og(ԁIvgޱ=44 8-~ `쿿E550@CWRm) +X}|S$@ϧjr訰М.GP(gqJ8unXT"9lz ty~Y:d3c]M~n8idF|g&Ѕ nδȏ-=Nz//wx~f/ݖ?;y>v{q HUw4 2E^ῑxӁEHE՞[p}#ƍ:x>~&vGn}%`wkZt{M,#Ьg Y鉙zꎚ}'=LT$$u ~wP"Ԇg;Ndca:i$jL۞&9SY6FzꔂH>K̹S{^_vOЅdcM`pngneImN0raRJ$*BڞV'zG0r1 ܝ1,9o{s\qQE5wܺVELI5i˻JR;Fy͏eR}'ʒH7w/DSΌ?fD`oSOzX&_qÇ\zcwUT[U(PS4B &w ' [FGRсc=?)?}N*vr1UX| 6RhŊk>{8KwݝwV?_NKMSBwJCl܏z+k-[$2z/fIpz'%;@ +6E$V\ ۿƟqSŀYX.A,Fok=T>@ YKJB}]!䫡zvQQ^dCBµgu ^gTĨb{+?s]tjDl C ݄Xc%T݀Vr+״H0_>fꐢvx[I`]^m?%&b0P+ߝMW4vsےQxb/X}8Wʐ^"އG*C<ˇ}}4Oƹ9#;ج>;ݎ>1;~n}3P +<ܙ#H2=i65`tb|b&}ea/aGktEvUe @}{ ժ3B +endstream endobj 1844 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 1845 0 obj <> endobj 1846 0 obj <> endobj 1847 0 obj <> endobj 1848 0 obj <> endobj 1849 0 obj <> endobj 1850 0 obj <> endobj 1851 0 obj <> endobj 1852 0 obj <> endobj 1853 0 obj <> endobj 1854 0 obj <> endobj 1855 0 obj <> endobj 1856 0 obj <> endobj 1857 0 obj <> endobj 1858 0 obj <> endobj 1859 0 obj <> endobj 1860 0 obj <> endobj 1861 0 obj <> endobj 1862 0 obj <> endobj 1863 0 obj <> endobj 1864 0 obj <> endobj 1865 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 1866 0 obj <>stream +h[Yo$~ׯǙۼ@ ^ A)rHhCc'N )i2>볛39nq] 3sn̓z˔-?H[dd9f`dl,/Ï?|fof20uNJ ?wﯟncy)xoܯJctxOvvCit'eGeGe;n@n..AK6l|yCMH\a 1~,P s`y<ÙlZ&U ɭ 3fNy&RG9:hpة}GL&(6"y}-h`{Aarzpwj-`}%A|*aBY$﫞`@%ȷH\Š"euRy(ZyC@A)*ԕ +cl߂9*<+`OZLՊ9$=r$.VEP('.[n\rOg) dO~t~W=y`3G ]PS2I:kn厊1J+ʧ!xxPMԄ$9_ N8C74eXH-bOhjfgN˾FWR2T9QUy-txX]\[ް)GD`9' #H-a) #icǞϾ| n`[ !4_pnOG~-2I.ssQ#SZP|Mzuw)3Z?r6i` +.3ҋJ]; +g5lnz66w>J NE( xP3[%rϾ=T>tvp@X m>ߢ,m؂?mwi3=>mAgR?>njH +Jǹ[qwOj6wz¢0ton@(51t38Ts:˾Y0C1uۨ%mL Iwshi^(H݇i5y6^50Fz+rer@u`E# @턁{2)f($ΝBg>SʍUUUᛲ6UJw +165Pp yVI90+aNMEjzlqrht=XjɣUÕɔĜe%ym0aHtY_J3Q٦-ι١>uKXֲ?<=iMɞ5%>[g>P4.L"U`x YEr7zȞ'R)њK{g4 %)CjXgy/.;Wzq,8]Ubji=5}1hNK~EXw]wBHQf5 I;&G,tNeUO Bdm^oC%R໙۸"7~@b^o;hGzfտY0GUj7,;Yk *lT 봫io3)!3b+JU5WgfֶXP!H f0{ihGf(hYq A}V +^W>1bhhRAݙw=LX72!u 鈨L0mpF#$< E |+dBߞrCٲpJ[TJ\@ Q`O'p}Xa %-5wpQ07-詢)ˆ!IOX9vVn?l{it(VUj%.i(8h;!_֠i:0xJ/UoLڟ,D6lQ̬Q +CI$^re*A- p$[4ޖ9y괯Za67"NE,QWgݏd ?@47U x>~Mh_ +Յ[@#xkW#A"vLư6$c:$<\äsbQ SIzN'־U;q(;yMƴPP73#<Aebh7cȍG>]DL|)M"&^H$G>bfZ޹zͦuHU۪ޘXo?T`t4Vrv?G&2; 6kBg#6Grp̮nj+㇣)Iq t& 65ōvZm!= +D٨j4)+hH +~iDk5QzMT&^U*+QQSz!+'kTI~Gx)bWw|KF6X7x p7C%m%42+R &iVrė$Ug60[~Qaʡ'ޫ)+"X# 0N$Agix`>i &xZg /#z}ҩNyLj&8&>a% [ Y Q+aVBeHm* ~i6E{a5/kK~C_V P IGC!/C9)j*?D#zYHq{L/eznTgعR_vF?Tv kNFx[OB$\C%n+K2Ռx+ +G#vi,SZ _6㐭\Ӏʶ|8M8>'X%?>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 1868 0 obj <> endobj 1869 0 obj <> endobj 1870 0 obj <> endobj 1871 0 obj <> endobj 1872 0 obj <> endobj 1873 0 obj <> endobj 1874 0 obj <> endobj 1875 0 obj <> endobj 1876 0 obj <> endobj 1877 0 obj <> endobj 1878 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 1879 0 obj <>stream +h޼[K7cLQ%v`5|R@v$?}x̪,ɲư[ $#'7;͓;74Ni0R]r/w?ߘ᧛Ww{-5ƘB91eWGn4f ?F>PGEIS xkE'SGa =7d2O4!OS?޼Qi<$3NnAZHQE81H|$9;1D`ўm0`'g;3Ѝ(|TaMҶeWIcآ=[n\`MX2% GÓoߝ_>OF?g; zI8Tcv)),Բn<|a +aRah.Wf4l#k*dZnFoEEGPo -Էbѡ.Zn#`f:bU{)Dey ˃aҟɑ >"i.u_߿ċ*`dcrYn;o6حSW^n ,V"o<:q7}p o6IPTr(#: v]Jς,2pD>/P„]aDe.CN&=?Lӧ׊# j +5=v%$ %{ZF~{!Vۊ]epD8K+m`};D?0vo ;`4"Dx`iod<,IU^K*p15Jqw&)XH0Rdj>mQ5e" 3pV"?.N!Y|gPɆum߰>+b˙+X"auXR|1b/<ń݁:|7ib=;)mZI{oh5$S uQ-T銛T+a>W>9TU#nHĪ!6w'?KZ93ۿw{кy?GyzǴe7{w/d3('/n$>'=bWÇaH;mSٻ&>=w/_ottP0 SOWz00O*tqHDl#~!B = ;rO%v/c:Em3 70`i[Eqd k^I"[x?ê}0r4U;]F7ߵC`0TFR`ZeyaZ!`^1|11g1d%uY.{]Pe +uIQE bbdB ,S/ιqumr"!a,SYG&Kke"^?hl,]ǧӪPEbض`lv!JV[L4, KX&nwGRBJev('NSy1vy skF6cfIqt/|cfTLB$vfЬt5cksltiD\gTZPB=W!+ebo d!s'kUNʬ,۪E,Gt+GN(lSћsk)UgA˦?PxÂv)$(. +w0TĀpԅ5MC'K[XBRwm1<}̝ۢu:)\+ I1N2~:IQ+uZi98X,_Ebɯ.t(+Vm ]k]Qx3gs]':.xdiڈGgn%y޳bŠZŠoV/WʶHۊɶ~WGTM69?=rosV&{tJ5Ҙ8!gP4su07=<ȯ ppg}qnG M`Cy=W7{m=aƇ@x6l& +6SY\S;580^.dc Sd +endstream endobj 1880 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 1881 0 obj <> endobj 1882 0 obj <> endobj 1883 0 obj <> endobj 1884 0 obj <> endobj 1885 0 obj <> endobj 1886 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 1887 0 obj <>stream +h[IoW̑4Z{w0F>8&D +( e臨f=.V]WWIOvի[=*O3˓ Q0Y97γ3kOU:ak.3uZ:mÑY`O|0)O'Lto}$*jMBGb{Br0>{K9\(? \#8,!,a'0:a8 {gN26<)sNLJ+0l0?ȃ~:w٭{ЖPOp LS*f?hɑ}=MaW 78cu~;D87WO98wW3+D2=IRR(*dTZNIo@N08)ͨ9o|7 &b;Xjkƶe yc` lρ״*T0C'\o`W cR{;hIm] +z`3 '5p*t @fL@64a>Jf>:Xy M <ӆi(ieOOo:XFEr~B͙ 4^@@9N(@R͠&4mHt ReIi- 4bZ3o<55 +DbmO R& #u1+oFB;rpoR:G+r~z7ѦrxQ7ϓ~=~*G'j DH4T_N$S=8͊ygRoOb"e5TJR;o$S"26 Qe4QX->(9z5K(mB'x a`tw0IC|Z g`KDZp L/ Nɳ e/X?8sj8&`ɮ@[]4tF3@Џ+qYAp  +QQ`,lRk,;/ul$0*QQII8@Q@qeyC* -7ӚyJ&f˲ދ 8'~ܥqMv + \qBUXG>9m=2K CIsŅ??6(eD$X6$ +;K +y-K\U=q#L;VaS:"6yBZVa%ꪪ8QbU3d lW&S7%Q) PsMpY @VF2"T O k #C~82+[V.͉TGsfAM13<%͖b0({z[81?!L+ =_ȶ2Eb$N]e&ݡבJjS宐G%9^f͌HH܅Pw_̶wA{F7u״';`a迗=|LtzF$f-Kl˛ur@XtzRNIJώ/p5<.̈́noC%N\;U4(oD(F@@ h4HtT%E r6s>uPE\`TJ\K%K|JX;k\e9YQAH\')`,RAPvj:l2犒UB *(MpX! r51l]e+$[k֜z0VSD@/VXi$L+'Sc*>vbGk61D*XO~7pH쵹˿M~O7F_~woq}kgh j?0 kՈAAZ. rv^TP`A!Rw0S90 +Ŧ% J H|t v-H fdC}dP6U< [/yFie#TWaJt-A=|! j{@A} wBMh)}Ztfb= z ^Ź;pۛvmcmu򄨇QRx.x§AS:)]%}1w U"_M[=dG!5Y9q,7cx #Wg&4ՍD֩DC)ba3f_ڪBMK3̮-YWזo:#cu5+~QZ.*JpT"J,2( PaE61?9S]. ]8bQфreH|(IM?u*we{JBb8ww9^[rJdX?djI BXINw;L/?G@_|cE@Na͑X8q(OJ(®%)L-ۋЪ,j@lP65΢x:M9VIHۦHŖF'$=~.e(*aVsۻCJ7 [yۃ/-aKn ؞Ĺ4ީwҨѧ}+mX؏ $_қKeC)N`AnЋ7)B.\T'*+k95V#]BJ}&5ٵ6k"Hl(Nq"AH媙: CONalW"g@+3x\]\`s4oaqv|zUd[ j̲$G_5p"4ꕰM`+~Džx XaRꂝJ=j4n\sfߧٹڝaŨOuQtւ;Yö ۶:n+'e<0|vp0gm-:)SᏝ{tM1& 5T Ϧb6?K!򩴾jGdru 3zOj9B}/xll pij!Eg#Vtv/5vJY\(EWo[]~!vg#H|u n +Y&A A_vy{Wף'#f设h䋝Mw|j5Tt%y}_Wn4cKbV`D0O+\ 5Qwx ]z?RcKZ \mG5>3yn>KVcڢZ*{- k o8Ҥd-~GN`=FnE_^R[G}_Oqߠ?w9h}ʥZhc=L;P`ws?hϙ|o"""n9hRR}b7o^ya +endstream endobj 1888 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 1889 0 obj <> endobj 1890 0 obj <> endobj 1891 0 obj <> endobj 1892 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 1893 0 obj <>stream +hZKo$ϯnf k#@p"$Eh@| =-۱}"ivzW8o;}q{su;\X`). 9OWwfxqpuݻK1´cː3>/_1N;|ΏiaGO74Qԥiuܝ.'| +lKa[f'ꏻvָ!N|)eC.eJC!\iU"Ea1c" #l"3X|nt lq13L̘*2Ӓ)c0{ܸ](iScl o|8|6/އA dMyPlh +v :"0xǷ>??~8 Xۧ4 є`Yg4<-6Y#gX@ +ý==H1Qd ٕhCwn41:`_~3ڰX7k$YJ.%Lm ;)Z̙74`1;FgAD88u;.nL$'^uC{Lc 2< FX*HףhrF|Jv `{,bP&X;bP<úN-}`Boa1& $Qݨ>5pB)EZtrbzBxp[S 扶c{V6Ig;&hK&HH&ƣڣ&zhqC6AdeoUm8TcvrÔJjY7mI0vT2F`Đ`t?B$h#-FTnFoEEGP<[4A8)P #WzؽYX`3QdY^|}vy0L39!(&R~,3<YDd\X$y3,5P^ fj>-0gXSQ5[s +ovбX;4~xc]f](|cbhwe*RCicZUS;*sٗQiQRjRuCn6̯e(iaW_:~JL$SG5US j37C>-+=rYaIZQy^|i=VL<;m,  +P-8ZWP`zq IZ_-.ȃʲٰۥ׳Eωh!dU)*h7Vyއ<}Ys8CT3,5TR*Am^JPw>UZ yi4Z~͹ VDک][#1Tq450mf/$3k/Fx=}U/GV%e&sQY *>7!UAwaIJ@Pq\$Ȥ5ch| )KZbn˒,i3{ {NP;DBk"bH2"h3T`&6ww+4$͉QLOI~$EmF EV^ev!ݓRS?;ɧ&wGl~RNx[оT~iݢ\+Ҏ ͦ9sYY\pzcr5ഓKdT?T0ZML9u"QÎ5E.06gU<;!ZCcB0ZIsJÉU5z$5zQBOi7ӮWrA/6"H$vJ}Ng~F89.AB`J9PoԪA@ΦFYZJ:_*$vR*2Ğ1TV1 YHj3A =$g^(k:\! JNN؎ڡiK#21™<%qY"BfLf{ɘLs+1ebu vQ QN>J^l3:AdzHW#7OF- ^|aYyذ}a`\|:#G^9ړZ^Tf>[<6/7k(,w)A +b,`i[Q*Vġu!8EcV3C; +dmG繵$Uczspy<4n# t- /[=x +ci2t*8ViBDV&vmlnQͳ7K}NX1KѵuY=fp 8fnÉ7__x<1q579=v@{.lLN`q>K/R\mHOW9]npV͐A6]IVPLI>cTm+t}HyÓħ̷,PaКU={O}qC6{M:L(Ox|Oç [5.}[|~p{>8|}qy?o˰yTzoi#%FfDG}z:MI7,mYc z(wsיDnn44ċ5dAS;\;zGty)&D3O?'i5H=5ֵF3t}x"$ fg+sΨ_!1 6گDzeC j(H/rZ*>- ܴTqEE~,9;-_U<_kUvљs}n'>'9alpMU$H\犹>_Q k;j|I@XjoY.bK| Y_ S:-  **^BNBV&67ȷD&v +=X[sҍ9E0m]k{k溔iLYoG=v +endstream endobj 1894 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 1895 0 obj <> endobj 1896 0 obj <> endobj 1897 0 obj <> endobj 1898 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 1899 0 obj <>stream +h[[o~?Bvba!@HkEօnl'A}!)HzIk!s'wou]z: +Krݮu/1:i?=ޫY=Шgp$c={6Ty.FIf;针=U6Y`Lڄ.F bCb3saG'g"7>yK ^?.|%d o7f2,>`=_8~6rowco_z蔱)N=v׻Ыd ;er3o E )(1uѫ`D023d#;&Q+I\g^i#ÇͷoW_} ǫ{G +羲w•aTe}wo|xps=`7oCwK>9:Cx FܛTHY]noz8R<<<6J{{cX{lȩ~ ]݌av(3i,vec;q.!04(c# #S:E+|4VXxC}Ԣy_5#nWJPR1I} ̺m2喇!d*f8x&EJ1 eC #8-K"H=gyφrRZLYs4ve|cky,mjG~Ȭy<.LXCY'C y-'T6=ǔXf0`\~qo{2|f^^\vPʙ8Etx*MEi\K,7ߴ2МGɦ}<ngxoRk}J=Fe0lyURjRZ4rUh*f1Uh'"L-I.Jl4EWhD׵*z߹o~=HvkQgBb;zal0G1q2m6J=Z;+yZe52s;ޚǟ!n`!LYnOoFoBـ[Y!qO>C=j9gLWޣ5]v]),\v]+5)(t4 eZؓ^Sq@}Zr=/-bUX^ 4vr#:r˜Z4;/B19*矫DoSn8N|e`Yx+QigPQכ7UP ;ľZG#=3P'LzAP4KK3Zvp$ZYz as9hj莔bdv.TO6-;W\\\|k,/>0+!9L$iKB(?i_KiL6}MWKC)Y(85#TpԽ$gLjn7?)49c#]@Yc$4܋ɟ?Lj,{SjN.n8%G:9@?uyO+u:OHǞrQZLPQ+Y{`%[?y5P_J4əb4ٞ7CgIk=ޘR~gX2Bn +-[ rdܪZif%d;g jc՜_6/R,2|"`zJ +٤ȩxeb$jM-r憜8kwU:'8߰K?џ12{zy౿ɜ'*Vl)ߗJ"'s^gk,ۯ%(9WUG /y$#@@at$8N~%e2 e].KG7/!MxEměa>_aXf'N8עsHaPEBdQ<ѹ?lZ"F'%a&,!bCo(1a`j5]k׹dT:e;Ҙ풔 3Y@-3 +xgTUB[N lBZ,}L-lwA7u{LZ;XΖi|aƷ&x<5迷3yY#Xg-}[Ĥ4jf\vLFK@&{o;gIܽ7ӌ)]/b0fBQK{MUjȰ&=_"eKI+_CΤWw{wi_ F=@اs}|d@!uQEiD?ڢԪ]-4$VWѐ/[?:fع*޿{uniMu18D ϝ\L$ O2J^Ks(YT [ ," +6捯 f)t +y<0Wl?!Y6Ud&\G\j +([ڛ +/\3KU 2wQTKLSUlVqAWZoY /Ⳬ_KϠbz~{t/N0d'0_P7&[DfSv,K+qpVsnC +B_!_)䞕 +rrysCWCvi$։fFςaUB[c\}MH\ +3.꩙vj2m/҄>ŸL}=7R/!9SJ[ܫ6 MBgL}SLޒ=C왾ɟf[R/\!xA ︅g 4p&bӢ| +_S8 +endstream endobj 1900 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 1901 0 obj <> endobj 1902 0 obj <> endobj 1903 0 obj <> endobj 1904 0 obj <> endobj 1905 0 obj <> endobj 1906 0 obj <> endobj 1907 0 obj <> endobj 1908 0 obj <> endobj 1909 0 obj <> endobj 1910 0 obj <> endobj 1911 0 obj <> endobj 1912 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 1913 0 obj <>stream +h;iFvW8dݱg׎wNj5{Fnc}YOb}Oyw͛[ۘ&o:G/ھߺsM׼iΎfׅ<Ǎo܄Bg6+feZ3p,)K v2tw}孇 +18Za7?|}{l3ÌMk]iؼL77 Έ4HƢ0v"s7wUpD+po>#F>~pAm\cűpfy,N?طc3vZcyOܼ Ch:3WiCsi@6+ig7?Nx|?My߼=Xn oN;T@&Xb fDkC 4vvԶ A+Zh <w5ٶ-MؗzFQ_}5z^JvhSf}L=1c[ckMOmkj pI-om@m#a a]M6m030 iZ@#|<z^ Fxbhw:KEh.4T +:#z"#YiB#:܇h45n<0Dh P +H hEbt z?}AdM0`ScA1 ΄ oFB{=\5q@ 껞pB51F}H*{]~L};4-=:|yfWPC ( m @8| .#"3tQnZgPmGjñ̓=tlQJ{M -K{ju-UFáX#D@ +[)O_0R%Z 0YX6uZ̨e"cud?n6ّ1ۗ06v6F 2> _w'.>I7O|e-Uf5 ~ӳkNã >C>Db+iƝ«_  +ANЕ +e:<#ݞ] tq-M{`)YH4',hlQEUۡ'Ne oO6r|l~2۟KWeM%daPC %>T~*qViБ'wa3o{\*L2ytji]Q<3Y1:k?vC+rIs5OvwbׅEW, q\t$Cɂ>yi +yӑ8~aRaȢ"7 uX[aۢ6^bRH;:Y_|ѱHg|xh-aQiD[0,@ \5ADd9d.uǍ=د3:}ȊF_ /H;Q#OZ2&&?(gО@!s#9za; (Bca|=ʮ`4t13.Hv("^/\6N_ Zh{CHx CmDSAp* >$3C +,V;{vR,i/Shi dzYuYt[Ƽ k^jXDت+xcs`܉w9+cDmpsI[ߖbxלO7o̷uf|]Ӵx:,ŧ+A L}?WV I @`YWƌ/fa'c9lj8u˔]GS&0ǢCk579Kf-Y%tO/mmĺ]=1kwvh퟾늝SSI[wA7P"(%=*%(' F8K-k+I >$'H+;Qz߂# Rirv,[JU9,`vWtp); O\2l$ՀKȖ] , +W3>n7s2h0G\h0PQk@#F^2nYj[/ęBONqqC}V%+:Fk~ Y::1 @cX:-06a JPyZ;k}R%: @u!4%_B5RI K_O4n <΃-~v\5$8r%n(>~jwZ[ez|lpg)BNCj_I׫\5yߨ:\scu~w;cO9_שZƋTYĮtƍeN[=X.Җɚj7T򐹞8PC4%LUKkCۮzLąOZmF1u"~1h\L1r0nmh]aԓQ>,?s%=_srCXJUO%>KUI"lb$g̲}YI*ѽV +Jr%d_-1,åG(әRT*3(yIo}! ,hƲ@{:on/DMՂ~_P(rsW*Ub!]h.YEFXW uQ~Ou~]#Ys(1+a(GcSKjFj cݰ&ݝjeX. Lt躛Sj/ѯOEChőL42P"?[$j+z&7 {UٲEpQgY8N4x/ɨ(Ƚ^, #=0t)7I\ÇeX@gQи?@|/=6HМCkj>OcpQr|D:X.H&+E(Hw*m4[oG e%d JQ'c'j4w2 ֣kt0z;Z3;O/`Z6 |CApMe6DpBPFRD7, ޟ㖞@ +.5Hڰ/%XŁ0=(Ě]4I;a% i}4=] 5>!ɐ=cX j?Ɯ>_Oa[ܾQ#LD/yZZ5J[xa_~U:*īi}| )i#w>M2i3M>~iS[\p.@ς4B=.[O\ƏK&]+y6Jr*4mJV‚ʥlddM9N.K-^YSS`ۧ{s[fũ}jhMB{^.KIZ>_.]3y&:^νWEX$V Q[Tf?NCdz0M 13k)P۔`mKN.]EFHd.kZ\ +4W@UlB#j.*C,]T@ +wnܧZ( Ȫܔ3Ŕ,駨XX/18⣤R)uOp 1)rV1tQÀ{W,[)%SI,=^3]օA+ʄ/RgPWx>)3wݵLLz:{ QAaQ|Z V~D($ qUX5Gz:ŸbY@B٪)[dcbKZ[je5ƚmc5PÑ2g-yn] >vMݺkeC}۪cJe!fI/JWk<2V0/u>ix]ѥyNa6hn>oqFbȧ%JZQl57.XI)|#TG,Ss6L:O{)Co/XttVl9cgwߖPpD' M/1ˉc;0Zqf{/Ҝ$jhi?v8پLxn ѿL,@떚OOw֨Z ʋM^응~nRJq.}jsucS|EU(mi (E]-/"2Zb$Ԛ<'=CqaD"$ͽfy?g*J8,J )I)*wgmʤM&#d0wd#;n¦-F8^3tP/x)gEvUsb.L +͖xVWMMv/܄}_,DL0WY9 -]6ʦu/wU"gU׷7# {# +endstream endobj 1914 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 1915 0 obj <> endobj 1916 0 obj <> endobj 1917 0 obj <> endobj 1918 0 obj <> endobj 1919 0 obj <> endobj 1920 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 1921 0 obj <>stream +hޤ;ˎq:bh4 qW A| 5A.-rotEDFDFVWi,|gUoG7woǗ:-_|.sS]0=~[:=^we _qtHs^bk!jktp;?GYug:ٵ.\i? /snTJڮ 7+x)3t@z-Lts o;p7/䁔s)Om +mƛ&JiJ6ay}xha0_ܦ=;x:>Z9ZàǼoab# 6@-YO?A3N%7! +G_Rܜ&u^W@|;w./ӛ޺N`/tKcʃ.~\ɀOn0͟?yO>}~/g/y|GK` ӗ ,w{T+_L98Lg>uk(Њ: &%{Z=b;j;vLxKn{ɗU۰­sU{Tsރ;87ٻLm`ޝD~fYiWiz7JV=U<X!g?8/tGCxiBY Pޟ,A$u oAMhԀ 1sQd^ yG @A+;jbZb-לVX 3n"8h #rpj;vimFsk׻ՂpA/@'4 t I!He.\_&Fgiʣj̣HP5Zc &7 . WeZ-%BT,(jJAQCRnF|tmr=>gã] + +4|bxx0o)x "lo?5?%zlP E- /4UATXi&8x:_)]dɜ|wE֣S܂>m4ګ+_'{G2vYhnhñ<rvûsGFqz9_.pDOJx5ZlЂN2lfA*E7Ǜl\m{;9CwyO'O8hbёl:V@_Es~!|Uڸ=Hj-V@ W#9I~FLl;^[^ <_mprG  wr$+hAvA6v"TC]+WNwIZx"0}[U Mm;>@8rwJmz-7z>#ϳuϦ~bĹBIhH_^xklE0|qQ#ϗSj׸v8_K hn٤ ;30 euB U1&q\8t W6b+颎]gEui:,F8p U嗢\;oW:l_><wvߗ PDz ّ )3Ў,G!A 05@Ήwڪ5v@D(@kM:Mi-wmO%4bbm"+vf*vcD(gkӫ +(JS +MʐT ZUda@ݺp qg!]4Zg~^6ę\11@FZlw%8u`hGm +݀F/gJ=HJQ}@_P6i'yj֣ 7p箧+ˡA˰kީP(3l!X/Tcaߵ+G\@0\ahԍQ\L_5CNM + nya@uQ$2hP"&*n`@\E'q#6ϹgzIوnk:h`-YnB T8(V(Q;'Ɉ_`~ph`z<<`PhZwG+eI'ڃ`y zumW bqYlQ-yJwqGxl=ܬ$ ,erlgԑY 8(chaIV7Mċ.l:dgGh03hѕhN1)^m & :֞ѳSi4THR;ln۰>\7Lnuo2sh!FxEQ"@ծ/^& zǽ܉zӗ݇Xt1nBkItN75')y7{-.mu1wԡ6C nx4=keKny +AUmb"?SʛTMo:jt,XAn- npVUge&KU..`'W 36hJ[_sEF%LWGYb:b~Hب6WZ@rɬ8}vQKnȠq1q|OOT:EV Kju).ə47Sdɝ]Hv6ɡ)Hk&o+S7Bmlgʣc䵃iM2X&bVlmqow6).$x[:~Klj@~:"{wO,9gn-hu,kufZ*(eX6aPJvWeELR܁Rh.&,z;Mgq4e~]&ly𰉑^{r~ =g14x΁5 9 e]:ICz$Hx/@&gX8l&Ζ< 7<2ǒLHR[8e̥94,e;N캋v +0JlRƭ莱Vy)hIRZ‘u\.*wnVM vM4w,=)]⓺rp Ng 87IW]Ir=gWƞƺp db4eQc!MJBmʏj“2&7UeBc>'weio -CMNz +|n#ڋ +`sVoj _?5lyP:nS<ѽHzu;CSOم5 9䅯韒BY՜\V=y34$ Lr&wР&G,oїmU3xU8*.;WJnk_uUy8-#>cK^T&N@X93^ V$rm0cs[ o/XwotyGְU7Ǎ,~1Jbb0!1&W_*n[57Ԉk 'cqajgo9^U/fCV`7r[Мa"hNߊ-h. ;bќ$e? OmOl5.S䐊"١ \:&Ƃt/:"/_UY&fwk񐮪'&[३}SNfB]5z%׸ 4.rp-01IB+o+KqS&Dd\ +7Y%ZO`c+P0[M +tT,"gLo98T})UC:!bb/A`LZa$+)9-J؊syCj& "a/<]vmtU6);E$]^U{.=D^eVh+;RuHh:Z= >  +gcv{ ǀFcC`/,7"bFr#~tfZH׊'ocp XBrƬc]DMe]+)u,zDwi=сSXç}Oߩ35>?=ӧ/ۊ-2 ˦L4GA,SwP07p6;!Яq^1:&l=|Rk+&cy)I )3!Ne,hRdKՌxFMZdg&l1%8^r*\׷z}qNNVżBdYnjU~b}XOQ߶o&3PTl_<7WyO_!z[ᦢ +nLߣcY38sz*>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 1923 0 obj <> endobj 1924 0 obj <> endobj 1925 0 obj <> endobj 1926 0 obj <> endobj 1927 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 1928 0 obj <>stream +hެ;Ioyw>Lksc83<>9p3IJ[kiJLm_U}Rwon 7y0?h㐒]pj>^dpsͯWv؜0M|1AOsF op g2?֌Wp| Gñgo=GDG*LxqLooඓ|<<>sOW+8FX=cp賈>Ĝ#m#~+# 05[/@g.fn+15•xܪ\9y`30`h,Ox&o~zgXw?B3y&^-K/#PfF;l0w}z}vz||/q8ih#,* ,l" 4f? A mGmGm;np8-?N'n09Ghi9ԓa!1o0 lOa:d8\ڰ1ڃ3&y&RG1:xp{<#2m&^zv.awSazj;!+>Nsw&wcGh;SfP]5tFE"#41;܇h45py")`A/p RjZ3bL z3iY@JGPt<M~!nG6 P) +mˣ[nv59!bIS$P _]._ >@WOTO~M 0(ud䁚1(r!xyNqN` JHK Axì 1x @ @myA7esQ[ZvnMԵxU rt(,2?IH)6P +H o~ So 8|$o᰽aWT3Zdt(eV88SdNO4;kx'.I R_!"%p8̧!(b6-wbh!ZkꅸO2Á.܋X*X4t`o@wA8~:|}Z n@ !h~w- +71Hހ";nz뭳 p g6_aq`!(PSǰ9]l^_??`Vr >~<=/Nq(… "N~4?]oǼ_/_r :o/O׊dú y[Xzކ :?R7-q3/*I bx 9}^GZY=ҭ)L;b=:$oa'䧝0ڀr]7حsRS@afSu+_ +YʠV2h.-EjZ!Cx:D }NzN, QBXc֐7LzodrHR6gAQdkb)]FkuX]:gq[VMXbUmLmQ"VfcjŶ,p%%JԯBD;GU{&O#רz >#KT%9\og`j0j` %B_ԬϚN⧱A?m_ ;J(gW8nbԵ+tUo8 A!R̍"@)tr/Rs̚*ޛ %.[ +ދ5HWXG <9"CY-2f-މs3UߩzQ3$̍wKw"ѐ\m}˘^9_#cMmY(hu:>a^>a4*%~YŮ+؝ENQ+vM/NAW:g Lᢤ-QL2/YƠT\'W&9TΞBߝEqp/o9X7QEUqo FjAz ^F[|k+3wkj (L|Y\l\cl7GUMr oZ@ٍ[0y8ʪ%T\g ܿՎf}Y׋dvYo'51V,{E 4xDچ?l9ق*yj,[ +[]>\N.dL&'`Ngk3oCYuq؋yiT؎>:FNjuX5-M^)Ī1>%>93ze%j]-2)Y2`ѵ6u6/u횦U6 +O]uZ};G2tn<Jd9*VjdeܵV8ڋzǓAiKA2L@Ho H6+ 6<\.bbʱu":i\,K9${x@^9{$j̔ ~CZb}17:̆;K̯ZЯq#tʸx 91C'1ɍowQ>v"F +ڸW?؋E*|ho S4W!h:ny 3KY8jmX3T3WjY{̾4|S)?ݘ,T`Z W!FZr'ڜ\Ԓ Y&K+j7$ .ǕcSRlF<ەFb}B&E %ԓL}B%)ʏutZV%rrUkN?]9ҟ$M|yowKwˢ]쳗Tf)C(tkҢ'ԩnX}0ڿXZaPJŶ9I;6Ile[z3)=:s6j"QCo k,DP^άJEv5n"$.$縹\ц'#W"ι[Ġ.UF@b$6Obs#jt㞩T.JEiBB*o3*?{%[j.*hпa`<Pao"k*T\]=߶AD8~v%| +;&09 jpڂ8R5QAX KL閭(VcOAYܙE\/_St^ՉGn'1̮G]cqThTS \K5J3fͮ ulQ9eξu}MpuZ.ruB1+J^DYtt1J͋'Yry%c*xl*ȡ +>EhOUB2Sw$l5myKECVz![ Yoѧ0)6rRnTɪ jIܾyn,B`9Ym*pRLinVgI!Noma.Ծw|1zpEdta2nVm%nх!eVXQA.^LmnS,J@sJ=Axn}M⛪D^Mn˫C B)V NwnoD5e'5f+)j_re{ xs=,=m;trR!жjFEW +{G^$t%}SbSh{A,~&cìľ@ȶoiEyKײ@vk93%Xo4UBSD_*f?.tqdQ{Wu1"> ]O9axrb:|Afx_3ܝ#}_90n^Mxyx//!cCjߠ.9n~׿7?On>vy}ۇ:﫿52e` BO?[0NLEU%﴿<^0 Б6Ok|&'tx:~G>Hg}\~8aʇq4bkŴ׋MS=2lƠ&SiRkKA =K`k`/M X(C7(Gh[7! yLq3pOk> !mQnLbX O܃h^pzJ{[D*9AS֣]ՙ&ǘ|M.8mGY7e4y༈R` p0CLGW- AZzaHaȫ.OͶCYyn ZbAƋoVcZ{"WCنӽ|׶ %[x۵mkޔ'-tC qKee\F: nv,y y3|,^$r <*\Ykkz|9d;`b,&O1,ؘWC2R xf|1k]ᶁ18h㠭;45dwk?y:\>OCkQU-`J8ӯD~ +endstream endobj 1929 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 1930 0 obj <> endobj 1931 0 obj <> endobj 1932 0 obj <> endobj 1933 0 obj <> endobj 1934 0 obj <> endobj 1935 0 obj <> endobj 1936 0 obj <> endobj 1937 0 obj <> endobj 1938 0 obj <> endobj 1939 0 obj <> endobj 1940 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 1941 0 obj <>stream +h[[oGv_яv^pi{ ى-&y r4H-I[~zsꞑ|d u;U~߿4ݛǓ.N]\t'S7olLC4ޏx{2voNa]P仳qtgҶCBTzx$eubNzvԘj;LR?҂.x^j,+V\˜u0ZZ-y^vImA_!D 88r%] vKP +;0^m۞O#qqG%7PSZfٷ˧]c{R8y4c@Mn8R{oOz;akJweee;[7x,&PØ 9Gf1Z&c 1~Y Ttɦa1!`V>yrz1C̃58 ѡp`jwк Xf `1p})b4i`@8 Pm #NūwoDo ,F fJDWQ~Lz1r}5BP)&~MCJf&)GYHc-\Q[I> ƳC5I))}-r CfoDp?eY-fOdjg)Ge_ʷ\vKR:T9q򀒝Z𘽖P@HhY0oLu nJ {Q7>fЎar=X]^`&lH1.r}ȕV=*4*TĉLjJffp55sY^XTYhYI%O?15_"pE6*qƪ#j(O\A0RJQX9(P{0.OG!8G6Q~4t~bḒ-"X7ӮC",(Jx5e,xoIS| MC-iSJ* lYڠhD lcu71+l͔ߚ(.Mm%b+)I{e +?@tM2̶ +X'L¬/+d^.%HDbT*S./_WJՕU*79c,n7wʹ "^WrܨALf+MAܐQa(E9,]x*B`7AܓeH`Tj-&CkyzJ+Okq ޒnikL}& -@aƫX5& ׺v{W^̴5UM%ֱ\y uzաjcm^ÖXly1gUaP+@XJL4[b`a׭ + o'm);m:%||nwO7NS&R]7T栣:汻;|mnn=?]<}/\>u!7݃ԾKwd7~s wK[{ pnO8¯,񐶜\XT/2AOabx݃. 0)_p͞:u-Tu{jb @S*k^B{yN};~UcBGD Mj.oo^_2crKOs߽# rČX erwodo;e y'Cᮻa޾e"P0ݛfJFDBş_XW@A(?/DVnA^d|8%.Cn)]$0DE:ATsG+/en2'Txsݹ` 9mXV_wIlc$D*}>elu8ݢCv/I>Z]#px9_4 +Jns;!DE4L.Xw$ChB^̄1}0f9{%)`)vrfӉΠ`,b\XM3 g.|sTrR|i|>AW|_ڒAY3>O9 ]$TW/?8cWw*egנnY\Uݟɳ߿&StWa^6*5fR*ޞ\M[`OQR7Z%T&!]FؤL'oOfl_=sSj.X +29e$y7~׍9b7=#XDz@@tDL9oi{CgK3a݂a'26sDZ^Kr-Y/Z1I<'JeJT)Sj>5bg0.f˓o%gԵ!UCFyB%ZZ_f=x`C 2:w`6_~iv_Z~iƪ_Y~a[u48f2S\;BK̘ukZ9)}Nm@GR񕬂;rJ`d(9M ?%zZn#(zxu9Av@]AH,ΘQ Ǵsn+ g,;kK6)-rEGiaRQ!@g4?g-BQ"Hzף&0@t- a[ U R0)<Ȍ 1v8[j:;M{ǻ7S=f \'Nc +;>}u{cs6uJ8|̛(O +KGt&cD|$mﲮyB.N(^u^Cx7eM˔J@xt,#`ɼMI|g~qXe8WCgt3ʐdY?p1Eg8:3|F7Ml=+.4o_aѬҕ,TJnJMSoaˬ{̒EI$ל:N) +zn%.R>_ FhL3GEi_iք̮H5wj&yeŠlB+@p?3ض(jnH.FjTӍ9_8.>I`Tש`TVEj:[ՎwuOO2EcEFFc5FY'}zsVrŪ6Aa9f~>J}&jZn ٳjfದ5M5n cSiM +?FEzK@L<WHMFI\i4<ζ5A/s V 5LPɶiSڗP;sr_$h'ڭҡKkFG1h\nsدާ}*oWv\XJ-M"?MPKJ,t0t|FЦNRۑiu[3C/fk +endstream endobj 1942 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 1943 0 obj <> endobj 1944 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv33468V3.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 1945 0 obj <> endobj 1946 0 obj <> endobj 1947 0 obj <> endobj 1948 0 obj <> endobj 1949 0 obj <> endobj 1950 0 obj <> endobj 1951 0 obj <> endobj 1952 0 obj <> endobj 1953 0 obj <> endobj 1954 0 obj <> endobj 1955 0 obj <> endobj 1956 0 obj <> endobj 1957 0 obj <> endobj 1958 0 obj <> endobj 1959 0 obj <> endobj 1960 0 obj <> endobj 1961 0 obj <> endobj 1962 0 obj <> endobj 1963 0 obj <> endobj 1964 0 obj <> endobj 1965 0 obj <> endobj 1966 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 1967 0 obj <>stream +h;َGrؽ.}DJ5v@-L\a,̣) ]YyFd_ˏﯞ\=q]nZb=V__n]ǫW#4n56Ƙ5ːW/n8 2>`W3p,)KG2;^=.5zZGa̷p4[wͿ]}ssdeY.kȵJ!iEAa5k!svH #IYGЙyDa8GAV-3\%y g`qww\ֲİظZ}//lr_\Yd5gh +Vϫg/~x7~}Z˫ҝ&-%:6->{^=>gqoze㢴GH[j$H&s"/5 *2 2$X&]Dψh#[tS!Y;:lm6mױLvA@Ց<tAC!ey +x&G6؊xp?Y   C$D?2V4 FqpyQw߲ТXދw=h~>{ջIJdX\RB][[܁/yPe&Q: :ec?dĔkYJ`fX  t0tI`b}PuZV`Jѫ< kV,4`uHLkAF Tk\"+D^@` em4v;سk^sslz@@ ېڦtC6Р(ac,~||9EqfY.knN ̑)*!;6}f-:sl(^ leǑBzP"}RJ BWj"sßIG;C&т +m; +;-_=M^EGS-\16 +L>HE"Sʹcf*DdSߝwI@yR^] & Ed7p Š418BV&)F=uY׾15q@փQJG|*9]JK0D]41GE3" p:\rF6f1M$4:uvM!vǾ(HlHyѹ(,p4oB7BÍ +{C^!Nryb y,5l+eېJtIdsk掩%Ftz7ڞ!#0 7OVU(Zt|{Ac(jrt᜘Z䎻h)giv`jǁI)ȃ?Fzv˿=Pn}܃O-{v+9y f?%'+׸ݿG~{}}g>8;^~~6Wš`cY"\ySF޴GNG`һG5=."abH;zރ7{`C>Dr'Tw[{vbeg/#F 'P5>n7vTmp0.j| +)T9XVtmG+C\,+Rf␺r׿"A3!N/>IF4:f +79r]ݽnRpZᆏpg?yL^>Sm݃Qhwƛfp<=evO0[}o7.1H` q{IG>I@>Iܧ"lIdƝ8i0& wa~Au" Wqxhqͣj`EGTJbhP'@8NƙdC si6244HbZ6me0:Q`;0j\q-n ( g9M$"'[hQR8K8~Rsrσo_L|60Wf÷7/2a_ OlnTU H󍨩X.RU%"!:2+u: 8HFM}7$FtBz|HGH%Hl)y:vtӜ{X^n3ֿ1޿h3 A7i/Z`;,Ʊf +ORӥ4QĨyUo(ƹp6'״xhuc8qm=aX~VhM{0/M,,`2zWǔ3V azNX/jȢ3y˄vMѕ"Wt'Ԣ+a Dia*rBy~+c^ +EC%t?vpCתݯJ˃2#+X1۰x䊚GHU\v7RzEԖ![ԪdI~e<rҭ\:퉥l4ldȬ145)2'q0b"`>N˸ru*  *}&%.#D;ҫ0s\齜*iYFL6N (IMcCEChan^~s,ȪIuIpsnj wq0 +MHQDEsTnj7k>jYrM;n"Wfخp7dp}nNԉ"]9oxc1HZ͜9qRǓ5Ca٢Fe(I$g TפZ-M͙SB)=S5#aYc3XSE +0ژG 读@y8u{SY4oN8KG>pM}IFRs(;'|9ɭvN2bY2)+S!!j߃81e \ KX1{VT]؃QeGSEf|'ٝ ݣDuz4olH\O1 (x[P[d쌐X}3ŵizFe4욓 ]ҺĄF ڍzg )l!ծܒ , J 5BEa,S׈#5,1g)IU$F;Y8wźm㕲ΣJX@cBSثe+53%Dc=)OzbYphi^ni_1zETpVf'Qٵ*ӌDJG+/tGp?gOnY 6֐Qyxr]j6% m8Ϋd nW2_nILP/Kn*Z`и^?LIC£o|c*σsv20? |ô5DyJ+\PKC{1F*{˞bPY9IͲcJX'f<'SAf S?Of/;p2(%*RT=@y_x bVCk,i,$`')C oU, +PdVQLܮ Q3SՄs{(ap'm^rpk[8qШ@3*+mqŬ>BʂP=" ahpr лLлN9gxRSfӣ[E%"$q$-ŧi0V٦a0Y78Syܽnv S6hQ+A!$a2%'\dL8M6p +uSO7Ǹ 5K >;)@sxa_R`Kk9 d*UXIqtq]mo&&XyKz:h5#۰˂g(_0D%.3cփɳ+Y|D}:ב;ZMd>_D;@էB":=p!!h5mz>)yYkwXQ:ήdGJrU$qq;۵M)\ + +5X<-k( i +0ٕHhw%LVkNo/tЏa?ZՃe^^Pa^GLwe>&{{ t}fHr0NNl]Ağ`.MNtK;02j|`:̇H +endstream endobj 1968 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 1969 0 obj <> endobj 1970 0 obj <> endobj 1971 0 obj <> endobj 1972 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 1973 0 obj <>stream +hޤ[i#y>?uwJ`X-Q.9C:yޣ9Y]{_jǫnܘt7wW/w6>.nժZ7apcz^3Rk!Yf\Lfnꚸƙb+zHoun@[Q`@mc(`b;s`^Lʆk ZL NImf@@w4e+Sx34u-MC+d°}tޭWx6o`޺s=2g{>cSh.zIK, ԃKV #xK,`>aLIG,L荕}\{pqvz+cd9Dn[TG +!m 3Acib=Ր\'KppXF-WC#ވ2X^F`sq!ou?}#apL11Tpx;z<(cz<DEa?A̐,HOuI T@8Vˆ8B=pJ,}ۜ'O]^D9AWef8M#"Vr/S{>Kt"|OKs枷{>Ϥ~u-XWeT<גfn"y*k:Mw +*%n5M07jʓ86z;V&%ź2PC3T$\cQĞi(\㵔I6iʑ]Ǜ;r!b!>V7AcɎ4*Ķ[bƟXfP#qZwD žK^V!l5ubqJB.%CjfGjܭ<áA61^[X(hB$$Ay#~qjdAM[{R)Jx'34I3B"d|Q^*-NC No4eO +.m%)5 +F+Y(K680巎qQ<D,!".!bk5r#\Oz)3FN*QIJ:)^EIGJ.VU7wn\+I\&;-!o,MV*/DfXi#gU6p%[&XحEH]f_@s6AKh!OfQm8rHG4 R˖:@ +7Kqutx Z~Ʃkg1C%lTJN4wVӋb+[ ?ח_ޣ1'!:;IKMޤs^Ǣ607)ܽN1b ͜l6Ill1w邹sD 3D־! +5hRlq;];ܡ/BJ5:V{بOY)8իkX-hD-Z'5{MsVե$3/$\4S7 ՜BhZ 379QhT ԸK\gګ^Xg \.Fh0(x*ٖ0PѺjd -[ԗ8s{U8 o܇TҨ3KN(Q!vWYJFcW/_gaK oĊQecFH*!%}\ɿQKN=4q%+,Q~q. :48XjF< .erXhjͱ:JLlc9n3eA#'b~־JQ?8+vF0 +ZRb/pQ#cnLB` 2b +3c\RWH}:_p= ̥:]5<ͧ9_Ͳ?i4fb`2ޕ/jnCvz% t(t]e^j<^R Z3: >ꛥ]YDW^k\j])~޹faգu|:]@8Йv؍N¥#a_/߁/[{q6%y6緶OFڞ ˛-XrlAp'_ +endstream endobj 1974 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 1975 0 obj <> endobj 1976 0 obj <> endobj 1977 0 obj <> endobj 1978 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 1979 0 obj <>stream +hˎ>_gC}lrrЎv+S/{FX0Vdb/7ϧoObSQ%.KJ^r'9áAkWL$נ,Lj +S` q=ʖu"q~}lo=G.pT(ў.0qo4w_Oߟ. ~L^uETJ^>=N UiEaa{g}9(8G|+ =.`502. +MJõsۭ:tKTyEe ʰ?ᵉ~ק_"F{&<7|:QBYF/W{|~_|_g[\>_0KpxHBDZ. ZYehhl AgΪ#t6 +ge|Y%tsi&"1~P {XGN6s*fTkrq띍QoVD[TJ~moW=IT87xHj + +.C wvj +/OR +b2 rX¤NGЯJ,@/ %Q`Q +e؜( *"gcZ {v(GQqxc9~CʂYĔ̘:6Tp/Ns *3'F+db +f/BBńVw^89?+2L XOeSD$Y8NkO]-RgS}|WKJIp5)6%!%4@=kfR=5J}5UC~XA{ +:|iGOMllRkzp\C(TQfYG,(6 +qDے5U{1Q]lIN8i i)u6UG/^pӶ>?=x\gu \q"ձ?cU!aKP*ڽ]uyRmj@0V5iPgD8HJ9L&xyY%,ꢯZ־~'sMrEN6/qipG0M\+Hi+;Vgb_qn+7[@ +5z Wvt2-^U>TЗ-fhGus̈́TGk%WּDfDU9*ɴҶ*|l. n-~̵ǓZVب\HN͵}OCo傳e*xʼi/mܻ֢2CoJWU%npN*Ku%ۭ.4VnxHhY5^og~.k˦޼Ӱ9QҼwc!/6;?/сm-fsnH7ͷBԐVʁ0Wz=iusdë- JlH&E”&Ǩ/J*SqvՄ]7[n9q {z7ZykਲDڷ+7exDQ<HR~n;s8e4%njb}o}w7ϔ}M'vv֤nݖt錟 +Qߒ5XI!WW=׏s5uCk0 j[vԂ,nK75TO3L g"LUj륖.mjˆԺM>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 1981 0 obj <> endobj 1982 0 obj <> endobj 1983 0 obj <> endobj 1984 0 obj <> endobj 1985 0 obj <> endobj 1986 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 1987 0 obj <>stream +h[ێ}߯GP; ,e'A<^ vh+Cd~N]ft%6V3dXd]:$ɟӷoo>yrwg';=ӌur):f?ݽoofmN(y3C4Pif(*e[[u&Pg 2;DBJBv:`S`.M9 #vF1z<'SO.J/B5jѦ,5TΘZ}lⲳZ<( 1Sy'ۙDj0s+~Z`@s2m_⫥#|}1TD3P2m^۔{Oy <$9C T!ơiocCfTͮ_snv +E1~ +QnܨFV-Sz$ʼnE󟴒إ)?l7 ,W&NEpG)S3'YRRݫ;A&D,POqZapix#T:IZ\bIlsʇǃ?3dQ\ @^Kc!"Mh_(D\C Q-uUۍ(H.%ߢUnx~!wlzݿ.-3#,;g`*XED.ʱE_L+T1k(%yS^ڔVmmylsh*U3~pL!Y2vr:)Y}= y|ׯV)DZGWC<)!gyIc/Kᇍzj2:@zPr{^i_9f+JʢflG2[*Hӭ"ޖ@ NZǷ1vi!̑-)p)`a`Bs]0|e}t=ѥG]#o .K]mH#s^];YDI}q \y,M͙Q'o!<1T_y:~Lz}ݻ7_" }Ûq36\.>cbGX@}.?^c/:`\q85$l +Fz磇Fnkt8f͋FeXf((n _S7rJџB}9I$\ 9˂HZwlr(UGgQoqRe%K׮%٥e]B÷otc9|!ʎ 9[P.BK#5\OH.wZL#P{aOqxu KHrsU9H |N$Al#-B=f%r n[/i %r&bM>m z6=(yO; +:6nOd+ۓ]ve yO=Bݓ,Hn-13ە=zn`Vpʮm2]fw{_u_=g{rnM˕u N .`hY^:Isgv3030&T&)d2J9QB A뗐݃>氁$6{+jG<9BÃtƓxlh*kuT K5T@v8* +T֫)jxH4whS9e\nߏ \ xQP[L+X~VR"MВ[LI6uuVF7!3Xr!5^0]rVR BXBGQrW R71-0@-v)\qrE:G $8 hbhF@}Z`$J_"okT,`G̰޵fkx[~ar eNmdMH . &x˃(Լ鍝+HeV%^ jKyIn. sU v /Koo`C? K&}(Ccc*嶅h1VyK0q+/v䊔%4.XŨ)1":CnJr Ƞ{@% ҽt +\.9޵*|r PPtO{c?$N5éYY t M?ǝ:!l?kdz!v^C#3 bzk0߄md/UCN '0pC(AhDMH;hAnW:G`I%<?.Y<<_{~L8c bHFF{홯M"X?Nx^=`Ts.7_&'R.҅Y<8p¬aXɽCXM]& :Ca*NIއ `t ovC]uX@#V˟lɥƯ + z׺Z5T&#-DB=Z +>(` 葥Uso35[xlJb 6܌iKI[LoWl#҅U#;<= ]*#{utʹϮv3|w7 +ate荾35^{H +<ؕ7Z\thFK .KJ\#om_>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 1989 0 obj <> endobj 1990 0 obj <> endobj 1991 0 obj <> endobj 1992 0 obj <> endobj 1993 0 obj <> endobj 1994 0 obj <> endobj 1995 0 obj <> endobj 1996 0 obj <> endobj 1997 0 obj <> endobj 1998 0 obj <> endobj 1999 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2000 0 obj <>stream +h[[q~_1v8} )9F`?Z t= + HѦꮪs1"C._]տ|g~ݫ';n8-_l㔒]^n~{s沄eY< D2lG;G3;Ґ4t~ },uB[#.0UX+cP{G ,dӿ}t]lݺӺۻ;F}2{_ iDu|DY$RΜߺ=F [4Lm؀Yeme\/\ bmr礶=kU{ pv'<3+mWv6!PѺ%hymO`$CGlGWAO,%1dӼ,ma*O`V h̜,ͳ5qeV3Go`2!.vjaqmde\Xm&q=7*׆) +g ? :/V~5ŸrNkwxAy]´N3\,LjA39KMh)ggj`Hכڸ8$hESZ) +}m_J L|&|A=XyP9$yP~}: 4(Sm6֖~͚$H%~,?M%})^pii_&:&aļWCoޗf9ԔA8Q5-(*:2t7u~Fb0x(B9)P35t~_ڰ-l׏}}V +R; +C@ˮ=<.rJ_æ\Yr2ÆV6@,00bI/:бQhJ9]Nhɨ_6|OhA<֧f `S|(BM|MY֒xY,4S}Ek΍eUƔU9x(ʴa + TF-S]#asaPW * :l;$X!~ -we +M;6F_5 fs qNn* +Ǩ@+} a21oȑҎqű,IƉ=Š4žWMH-D` ªvi{^>b2M(8q"2 XLBdoQpl pV '~ʃ"END:bsտJc=l;lŝ8m錯qC&|ⅉr=FZSOho. %2׎La]]sDLk3B#tP\$kҗ<(zoӪo`"z|^Mўf4yhX=>3PwQp1g.W$۔+?|Uw' +{\S2Y PuH]Vcm+lbpQ+.g/ҮӔͱII88JSLբjQ0 =#3t_}ϟ>?w?}~izaҥhzx 0'XlvƳ+ϯ1Dz:i0\M[#i'fY n@ iO&WֈjGPMp8K:%G +"@ N>:NawZ:x!E`łC9Hz "zR ; 3Ŧ2s4>@[Qv ` ;8H3eG k$-c=KȐxys.u6y}@njWzOiEщ_;fZG^APZmi#G^dյz% 9 5d$78 +Wnw]/xL;"x +OJŶ'{M2%, U8fYiuGe9'ir.&Xe.V^ &CHϺ.TՎ>Ps3B*`@h%* (1>G~zZ [:d' qElIa^9RQس:b^fNrd䮚6MR.5zi8HjӝiS\{v!UѠ0Ej̐4Zkhb^-pWj_ӫ2 +CEN(ypkv>sa.9^ +ܩn5 bU`]=,QA4:ד6 Bsǿ9l3q.Vt{JdRƱBA Wu8@8ׯz3'};cb͝.Bm.W7\3%}Ak2Cᇕ n4cI{5)|͊u *g1U@0qqk)adwh؜mt kb3/mVA3T7<!=s"nR +fqJ r81n7:Aƿ& +B_>/K AAkȝ40[O쏮%ޭ` AK D$ug0?'/^VF`Bj.b~9.Zy ~B-bLRBQHTAR1xO-g/"  +7foߗqcb340[R|9=Zs*9W/2F.VMz50'=pݤ@'ƉٲWFj)O$ݚeTm!6]ve/5./M"T;8^H^>`] ~xXDžUrfJ2X=>Ӱ*,%t9)cB]%i൙~OtgɉCӻyBĖi ÈCT+GIaN+:!1=[[(z1_6:P j!_MgI]< +~RƥܿAWޟ̺N9^\8l +Z\Bު֖/*U&9;s3"):!شqsu xR613K_j~nO| bjtVzSg2-{Oqɡo]gCiϸK .ѓ~(I+3c&ˈq9`pHٯB H.vpޚr$HNKehҩfݒ ,&\)}~;8A*5CFEH@bնNȫTB6DLAVX’SgcӮICb'"l]˅ﴕiљHpia` &/4PVp y\+t~Ab8F ilUt_z!ŭR:WtbY\A1v%X蒲n<|jȧYH^^h +q=dɼOQ1h薶1}ȿD%F^7J8I mopY ۸#r~ˮ?u8p{WE&QsI氦v$r}NdSqhFjo{#MaЃN}P¤2ޢç= +J/Fۿj6AdT7ϸ= n/JU +mRNݮ|I+ERFUa?ag/o$)"17k|0\zvCT.DOORh̲z!n#-^@s{-Z:fЂDqyS%o+?b__tin} +DһTK7 I<=,ڹ8Ts1jyKiNI.:Ur!:{p NFm7WQ}Ih *"|#tƸi&Zg߅lk]b"N0nܧ¤P3Ѱ֡.UuIJ1Un;y*-!r(ka xJ|Ԣg7q{fnBVyG:iޙE7GIq!uMWwix1 @ j U]k2P|T,,qQ#l U.1Sߪ;[ XfY=Jn]K_isۧ +0^ +endstream endobj 2001 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2002 0 obj <> endobj 2003 0 obj <> endobj 2004 0 obj <> endobj 2005 0 obj <> endobj 2006 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2007 0 obj <>stream +hɎ>_ǙluUр#gAl3PP ň$;lR%1zR|oݯ^=>L2-lLsSYf7=[7wyYLOzweqLZaNk2ڡp`5v8yZLb׃ ~;`o\/@<0)%?`6##3ºl(ѱi >_߁Y?ßႳ)<6M]lq‰',ϸ zK[>qo|<֕R٧R|'8q8qNrA6՗?~|Oӫ^_I㱼PW߁?73\: -ܽӧ?޾i{z1Npy)qxpoJctzOvCINڎڎv6!H`\\l(PLγf%ZZ=!qO؎!=yO;4kV&Lmx7v39T;NxS 4ډۖG#lJB Ha\|"^A2'4AeN4/~3aRΣ;j(ȟHA4QP 7 2,ށ'T53LRCö;j;GmyЕ,vN4j+?@˖;<^D\Wp)G@!c9' #H,a+ !Ǝ<5"=à qt`O1,1h3 kADjFXOE!l|ʊacB;^aCXa|  >|'.X/{ ཐG/-;AC<ٗ-}'҄-m_~DKl )48 Y3ȧ!W&8zN:4#DU;a8(n@x꠮+޾ O+YN2۽u&8bcG".τ}GONt#.v2I#OcPOIy O]'4 0 +3N^ tJp`hK +dK^? 20T+Yña/+K`J#&'l<:KX4vrU`+oYѕړVa"|Xq^xb@"AĴ7jU+5DdtyιnD9tl:lkwe-yWʃRE)l͘ĺдɃ.j.M훯H\.!FEԶ"2FUBHLĜ{z3^כB!Z1YA YMrͅb-luWXi÷wZ0=0v*Щ +* .UQ)+:+47QEi*"Gҥ_(E*&&6ʰAfќ,C]Fuk,xRLO5YeaT֞*j,"r|orw5FŚtmU'ܗ4xc!עRяMyZq`"{I$ C&xMF΍xbI>$vcTY*0رCNЦLr  [@eQaDs4}ݞBFbв'$Zİy/Ũp[/;d]A8b01 c43:\qkQjjjrݱ7838|58J}#)AFf/_ёbDEK4!R5!Nz=U"^E-)o76J,G9<[54]M] B 4Ȣt űzSzZ^9 +Mê)] |?qOUzx'evZcpUjsO(6"f/sW][ѤZJ?r/ ~N,9>eƠ~{`7޽zdli 50x]x,R#KB˅zWܚ8u`Z&xиp5}m褹]%AٮIgUvjog4-~J}Ilx»>C6ꕪbrUu-}Yݭ^guFQ Mz{ +ނ9(.$ p4>ͩC`,rcha68f`,$ԁM](?Ж$0+b,pbsNm4`4x  weu +Ü =§ :XvцޯEedB j5D0 2z%:g= Hj7XJk7wyb25 p +R +E}0)=~PA8wC.WY,b/+'--vzBl+la\x/f ++>N$眖Uze d5+MV$nVr$0]%o=D#R]&z$rjd+>Z)ZpD!)KudK|R0J"8ՂJʗ@l@IiݪruZ׋>Z׳>t*4 YЕ,Nj0zِ4"RTG@X֤xko"08դr=k&C Sѱ3ryوjB4>m kb=j dT_(xDh\==sZQJMi%7v+A屪Ux$D$eGιC'mfvO~fibL?gT<^fOo,`/W2if}p0&d^P:4q>Q"]M Of[ʡry5Zg>q| I`}>_jqkCOq߭VR/y,boKx=Ɩ( +'K|w^sqAb^I u9P  +Z׺ .Hd̓9\RJg>mB帍AFЛћ^Mk6G&p\ĢX*S&U8pP+5;ޘJI^; ٻ(FQւͲ__ Ts芦8K9ǰ:ǙCپ&\P_+5Ռg@pEKKw#A]qY qhqaJ6 3hG-AxcϵwcN<0'5$b|-+:< 7dbbztWOcqTlmh$wh4s[{FƳa̱=_rړVfgkRtڨ +j1s1lA;d{rp2V&lXyiu)~sۛ"׌p t&_ _X`<r>c[mڻJ!.Y==x$e0Z"Zג\\¿Qd;tn԰O6 ttEݞ-Tk+KJ N{&?QJVbpv1{9t_ԃ5T3fm-Jz +@f)bƵ{$!EPVk/԰/q/NlEtܾi{#u=UԳ qviv/t`"y*pUN *'*F܃e2Η9+xl]h!khZ]F-LwsHl[x~W/᫧L*Ʋ,&Ϣ<vj.Vaaq8;X~<>_3/6K +endstream endobj 2008 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2009 0 obj <> endobj 2010 0 obj <> endobj 2011 0 obj <> endobj 2012 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2013 0 obj <>stream +h[Ko$Wqe@I9xmN` FU,6Sz$XΰWt}QLYK2nR +Oן. 3.O(\|y_`< ?8x83x|㲿c[lC~7-yx8%:zoai6ov;)͓q2JAaMqC= Ҳ I,2HW(>C [ YW6PL-2+|da*<+/&užZwժF.BYLr19L.1L6?~:~~.y?@ws@kW_LrD2nVCt|yOǗ ~y e3`ޖA ;EċHSE&Tkײ36F._9o,̜-|tذW>ˋekXQ'ИGrɔ =l6K(f&'XN+kMrK-;,j`2!.v`ߋq̂be\(.KøA,hcl- X*tC]? mg`{vq*]wzF-U8w\B8OrU IOmez( JRQ_,\`u^b-Z$$-B郇A`rL 4 h5 +DeG Ӆ%`HPRe*j$-]@em'V q۫ᚇZ\E U7<8')Xe50$X2]'fǪBB1ޒNmjejҗ3wrN֩A@ɕ<̮][ְ)_ lFG6z z&*l^VF3zG!-aG^b2AUsaqseX~Ws`y+mM +Xw=1n`C + nwN2AMGVէ\ :vhwNjV. 6y č aGqM-)UH=~߂C.,[%_ZCXشuq?Yx7ܢ*M p`nV4آ5Aع[.eSݧZә7c"'RGbR/kPm5lJӨD:q,FyPL* =32˙j'1ׄFY'60Z:$Ų1WҴ@@h5nLLDNL@'6X \>t,j^eQ%!C%bMeND'I.dm_%ꄵAt=؝_5iqߒ3閨9AgJc;H 4oFxբխ\n#Ȱ] 3"2X +`ȺzoCiwg͛[959GrSa3Qwɿʫ8'])x) Pʼ ,h}zoKoFB҈4NrVqnh8bw4,DIG}:}<ٽ>u5A֌+]\غ1DhbN=*O|PBf5Q^pBzdf,KiY{ם\i<^9^Kl\S[[ё=;)ndTI}`bgG=jqnzM@1>nJM >[\cu&tɹIwѤқ3(08Ģo]N#CxocoLuuQo*V1SFv9x{"IZoJ{,083ΜGlY.Ezn,b@y=<kE(sz6 ^!votw5&1]4A +tCw5nfq!\?uUkS1@`@p _#Msx _;X(g-kl u_p?&0C/Hm&|YK&{kc8eP{ezaVV"fUGX8̷FnegFbZf +q+ +W ϖey8y ; 'ɿ8F`} @gwdRa3FW +[(&g)YAswdJֈA|"mpb/Mz2? 㝹C + +endstream endobj 2014 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2015 0 obj <> endobj 2016 0 obj <> endobj 2017 0 obj <> endobj 2018 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2019 0 obj <>stream +hZIWK]{@ N!ȁC #筵49#9! ^{U|?Oob.+ťlRZjBX.?f]m].@=Ӻ^?c4ڂJM#+ӶlG[u&`ss`M|p1˯f*a' g|]Zrf8v9bu-t Ĺt Y> >Ab ] M&FEPGGu;Ҧ]8 oۇquK/[|u1!ZOAd!};/a8`mto%6d@u$ C* =<wI5%,uЛo~ӏ,o{kS]g"pYylC#g A-GZ>>?A:֚gzZ՚ "SN`"ȷ3 lBTW0oPF=%daj836Ƀ_j2jr]"_a6k\h7LdJҊiI5,\=,uDc04Glۯ(˸yGR[1oY$tPh΁}Xd%SkuXѤ\[ް)OLay +'  -!QҠo{ 4 9X8yՁΰlBf-f~&\A(W1ҟ( +gJ`Lp ,Y8Iv5@5 vXn&gr?LPbА, 8Ǝ44#;W^x6B)J-x-* QrS8Jӊm5iimqV^I>"BY8ZmiK+̈Dkė0v>?kiXWu=f_qLԵx+ LoaaRw!KKgV +ܑ뎼9r 8~3y՝SsgwΩ{ѝ9ݺq1SL:z]7wTDTZ0;6KGMTHNѡ3TUQ˗{p|rlLr?%p>NB숼1'q-zl{GRG֩Cawa6*ucɬ^a]bb3گd9Jl%[eȨzz1XFn~1X4L҃ -+s9k˷̥;%e3bEL:X{h<4x:0 +ˣ<U&zZ?3-"y@Ĵ9?*KعxUUs 2G8*g80}+WH"߅oXl@Z%= ~:Ia^qۣ>oPK ԊGtSuɾpr$tk4r 0o睫'?|!I2[Wdeo4^eVԿqf`&IugN'hمր?cxGYy o9c@*˔Qi ;^` +aǣqKס-v'@u|y _W\S~wX|808\6'k ~#\w7~qh? H(گ%iҭcͭ=/X3-[1$i|jߋȍi^T9N呄 +y|0Hig 7DÞb98/Evt\ȧ:ͽj,Χ~蟆C-s A + +endstream endobj 2020 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2021 0 obj <> endobj 2022 0 obj <> endobj 2023 0 obj <> endobj 2024 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2025 0 obj <>stream +hn$>_mI@F>8C4 vmxq~?"Y왖N!(V|?.}:}qzs?iY^R6.-9udՕvuLʐWErٙ0LQċt#ex>GX1}disN_ݟ`[2>O ni5MH+d. + jB`}هD9;L^N0[uD= +|fU.2ϫ$մROF3)dR)aqaX|iy[f˷"v M y=P AR-g)a3xz?O]0r\6k dO) Y5 jb +.쌍QgMΦ `b :cC9&GPx a.Ɛc`yM<Ǒ\65^[L +V }ʨr靭5g՚py'"LB6ՕVx7"@jlbɀ8`{x|7  9ոwf3uKU3 +.wRBd2@D +P Zo 8RΪT>Ų]*6hY {'pW+H)1 +#}y[FFB9sqk_~>[32Y&}XKYRxYݳaN_ -1qI QGFnn_n^ (y!uTG mV4bgxڐZ8BL+ֈW3Z R; ᗦ3cǦX}4W;=ESϊo^Ÿ{ mP:@!\9Ag"jJ~"aV9v*rZV,mIz--ݜ[lqqQ69,ɥ)h,J'ÃA%\浝sZWcOڳBYOHpMCocf!vf.;6R*h$ߐ> ".-Փu!3,-բY3byר$dUro+ZIj)=B)3eM_:Wcݿ=HE黥Rh1vֱ )4^4d^6d^dI)plcVyќS7gweΩ;4N朮Yҳ a@NH香f3ȑvJU/7tgTwd[T +IE><9+epg+r ݒ-7v%!Kz`mPu]|핆26A2+:Z4:h{ POݼ%mQ}%PbV %.Ї>2:hpU =tuZj^VZv(<,gYf$i-v {Zɴj}w, OPOZ5TΝN,ifZ^ 2gOmezEm(8E>yCu8N7Xcwkgt3vbS>v\Pw>мp.)PG+=mVڍqAO\6'k A[g2ܫT(G^u +,V%$aYƎQ7btgj5v&s35NEX6#/YNny[Ťmirl 4v =ĉMfvrnxp\ 9Ӄ[ +ka|!T#Shq܎wxS݀.KG꼪5_{l%YvhK/Ж|gxM'- 5Sq+E9ǩϾ'`d.V]sH7 {Ta7 whpg*+u2^ x\9} 285ȯmث"ߝ[csN t?v׬"_Cè@X +ߨ rN}ﶝD:*ط+gAS<^UpW7 YN"< P|у -ZϙOE쇽ƻ>prG%.`œXa%WπVIo": fǬz5̃xN]f ras|gDAKDerͻ䍱F쎱gz|L$F{avOp su Xi}LqH.V[@}l`E3zw|:DHqߊoݞQ{{z/ hm+60QeQH0 2cG ]nw28~c?\R_W@sbQ^, xcB3dLhؗЭ$ 3~3N׆{Tΐy̖m3L~1~@ڇp&4y>*d %U݂߶1: &w(W;ٚ5x4H^#pg1ݜrk5g`t,mbhPinԮ+X9kk>covȺ:8x{kk5ˮK7!|=\KK!x^q|H|m!vi>]Ę|tkfwPO_vv?fcnq;vWh +endstream endobj 2026 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2027 0 obj <> endobj 2028 0 obj <> endobj 2029 0 obj <> endobj 2030 0 obj <> endobj 2031 0 obj <> endobj 2032 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2033 0 obj <>stream +hZIoϯ#`J]{U@A 1i(DX6M1LW/?/ׇWz!O3˓ Q0Y97a~<<<]u?zq9zW'l43}NQgr8q _rtJ&2HUL3~Mbt&&(6 )] -kZr{{s2\PYrSh3ԛ+ӠOg3EiR'bi|w?x܅Yes>SP[uTFh95' <`rRQs0z| ,vcs=-d.6IkaNj=؎p*L@m-U0p{Pۨl2c I a_W);nhj6,CI+ۀD#|Psfw3$.vN3-0hFk l(9z5K(4ϻc(PA6cW"P +G΀f9Ӡ8_AC{Bf{\\4Z/ }IH~DBw8깓-K}*=~ G#I%RЈA !k"{V5CfC=VRpr#qʁ[PY AHI,G찉7.[fYaˈ|SYW>-D@yùc-::W3#M-; ܋wrL! d~'oeDTHS^dvIw7uG Aen2%ʬ 臞3͋ (nVvD!{Bm3~ehW;537 MX~^oe)8װ9({qC$ض +rqWtgT/R*) ؉\H'?DC| {[DnDe#GQUD.DŸV(JjAO]l(:fQk,bHuhyJ*.VMBcn*9;YҚ,, NsSX$Dtj: 9'9N`垷 w0~."mҢv Imdӧ h^Bq59lҋu9 +I0fs52@̛1BKשzE4DpX L+'ScLDUj͆4Hl,?]G. ؅s矧׏2Ҩx1?g|I.@B \HL2ⓑN#]"H~reBY(a`U b dwV;CuCx/X0NƾC  KF/ 1xr/ V\ ԼL.WIȔvi=:[dyf`3o7!5A骻.=w2tߖb 7yÀVTa0+yR(KI﹗ԛ4OuNut /)gaC +Ѣvl'= #Tr,񙓡2A%`5 SC f8H[˜۽&9"zkvK +c"ge`/HwMځN*^=5TW2fg[[]LBx@~5v]lL' W<78Q*Ƞ&%h1VRF"#;\?vcHcLj qu#!zZ-t|(w<.31;0 [;t %(Y(9z.h_`⻞#Yx}8\,6bbQKg/N 5.&/ʖx +˘IP2N;nyGI:=#idH?s +dæad n]m1qߘ1mt.o.)]^3@y+K}M!s$a!X;⮋vT|v16;11pԼ[_ue_)"S 6:תt \^*V )ʅyyLסSəa9]m7x?["lr#\RPmީخN%"/ـV󯼗6ƫqVhEmgvt'LҶ pq)'!X0̜#d)!yZQ.U[7V].T׬骩UwYJ(ͦ/VҼH򦕟0-EL.Ny:ס" ͊PHv 1q8S'֞>sF}X |M\H&#ݬStr=ᱢS鼝u@ԛ])]x_ExED귪O]R!Զ[0,,u9 Z^6T%}w~?U%nQȪ/b=~/ܡtOe +ڳYW[%~ҰqpӵYt"uBp ͩW>zPzF0LVj1ZmQ^eE/~k$is;2Jy+@^(H=;.ZU[x*kl[SsUJc 7_9 rkVop{N%xll pijrٻn-: j5vx~/{=&NqpE/nǓ֞I#;Ӵzde:G7ZM>OJD\cԌ.Y+9yP]9/CB1V[̄˙Fg ʡ~ 7KC9_EIw 2Ј Khax:yD~[Ǣ'qT }(oO%srf0qCsx(X6f#fg؂.V;]#q +yC +endstream endobj 2034 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2035 0 obj <> endobj 2036 0 obj <> endobj 2037 0 obj <> endobj 2038 0 obj <> endobj 2039 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2040 0 obj <>stream +h[Ioϯcb`Z/ !i(,XR E Fկ^-oo?91nOyaRBMbtMN7oOj4+etsͿN`S)rK#tQ> ?xr6G 㤿Y9ﰣ )C{xWcex}o +S-i=sh+~/V)—Nlly]9MN']Ps6E,EaVs,3ϠPrr [W|'m؀FZo{$aen4+9vB~[LjdaNSsrI` 6W|7u4ӗ_>}|o&aʡ51繲; "Mf:K @Oӻo>||:_Ӥ30}#h'o`req%(¨g7B$mKmKm3k}6vvmU :Y3 + Ko0b;Xjkƶe yc` lcZ9T\o`V }R{;k=Gi6:PhK9Xd C\8l<ˌ&&ø4{&γw=` 5> mF"=e?(wӠh3g +NϨ@j٠&4yHwS ˝#$-mz( ZAS+Ʈa}̋m2S(,Љ S_\z/hW[xn ~uut.V]3yB"g1-d&4 \^?@6P+IREb(.. {I=5/5f@Y鑅ai`V-h`;lŒuiWk&u֌RZ̷Mfml P'蛖) 4pWƔy]A(c<8: L0X`%Aҧ_D:5S*8$ݯ+z X:ɼ-1p ı|-%/B6[{G.D. S؟4.84Y c- xb E+7ҍBlQˆ +`r$c%yuz\I/EkP(m -NᆱlZ6;'&^~^pĂ0-@3i[q}@clW)X$MN^`bzZsuΠ8g- 9noNiY7A >RO=%ߏ_|Wmw+K1p) + KY䮅o\_ߴ@arA y"߷B\֓7T{(-GߡtΨCF=cd}PQJ q.<$pebcPˉÕbBh#ipEe'v>eҍ/";ע.EL}xKE/?ZNl:Tvf +|c,*]\Py9CT<٫aB-%@%;*` pⲃt_lN:cu꘩R롻 m_4e>[ʆ|@Y_ڏ+rmP'ZSwx2+ar<ղQ3R$B"ZC dv )~SKzl\,BX={@i]/U bU.bePvA]bsӬ, ._0z!Oid 8Ķ#a8]C }N;xO +ӲR68mj:]Uag7j5-gCsy.{a%=t ț/%4e 6OX WxB7ԣpdˀ-``"_eyR^x/ݶũg~W[t.MV˞g8D]X:Lpl[+2s.?@U8F4 Ϟ>H.-)!,SSgC>ru +dz C곡vqK"ܭ"cK3P\Rur.}6&r1.lE»3ޝUH{ +g._ ?g}.CnF#]ȫ!{>\.]y?B䇫]"⩅.^IcDC<Z409 ydp +endstream endobj 2041 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2042 0 obj <> endobj 2043 0 obj <> endobj 2044 0 obj <> endobj 2045 0 obj <> endobj 2046 0 obj <> endobj 2047 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2048 0 obj <>stream +h[KW9[oe#@,.lXrzc8Cvb@~TwU}՟f_=^= t=m+3m45xd-"#ë>3:o@88# cOHғq"㶵~=kP{ sk MC;Zkw6`#:՚萂 xRsGTLk@6S +MT`4,7LM ࣥgG|<˩4ggԼF1#$vKvInHa39&6mXt(RḌq%UDlPF؊[) \j9MKw"5qxD`e&:L ல +$mj~9[+7.G+7ͣo\lbRI?m0U(兛1*Ӳh<7nZ|kT=0%l:`usy=@p-AmՅ!FDE_.ȅ?+-0 [=lgz;B1OAADzACQEH2ؗ?yjo4tSbU1HƋB0Vndi"ZE!ٲrJr>(TXS`>c~ D0fqv7ͳЉ,2X[:)K} fPtS#]qZ%N1z/qG Q ԥgtYI6 {CHs@xYM]mZJŞr7[kK pjswHk&&8o -YM&C<.GI2v! LWGWӎS'Xj&tmW3@IR1y``tL/!TƵH"eDsѳWyDɣZN?\sRu Kѕ8tH+wg<_.AmꢾY %ԛm[n?l8dLhR=cZ8i{QA?oŠ*J WN;Rr{g^֔\QPI?7p}WơQxcZP\]JQlo#PLA*$+RIw#`u+-aX`9x=:E5_lC vRa㝨سӎ^p 4Tw]FOUEG1M*!*Ek8%i5S/HU6ذRݲ!IÞƈT/>Tȫ4CwA[.Bۮ|ue֛{Yn_ G0co-U8cRu)t+ț+ ~?@6܅l/% 0$& u0_JSGp}5l,ZiY&|F`v~{$FzLIB-Dwpi  ՇFk8f)i` +#GfN +Gs쐜 A2Crj+HV>8TK,W8^qG]> zO-U@&iV'/Y[8g:Q\<"XE}TLg1;`siػFǹvZ>\Y~4Dی\[Ny\~=>ũ %HoY|9V8W$FVߝLU$m4Cݑ=` 5d>2hގ[h7jظJcF6Rх~MJ +^m![@]a&7dAjg}^*X7ȋb(>s uar/kg1kzD\-ċaG;7<{a]7kJe.Do&F5{KkYq +ZD|d,/'hoCߝA*Ao!Rzhf7$n &[OslۜjFLzAs8kռtD'As2.`60% +YÃVļ$ꮚFV<7㌳$jCȈr}.n.:^Xo<Q摒FJ)a\pM[AuwV [YUt̾6TI0/ӻL?S*˹*)}evҪXY^\uyf%q4ߝzW5aS(b1E w+va}+ʧ jDkRZURVvDt頿Ob{pƺ}ytJo/72rCʹ^zLA+1G=䕮uȄQIV&8*ncEm&ɸq/ZcXnR[ +~50Xȴbk!jv{ Ţ^rpÕ +v~ؼ{u=H BX)M>ު: +\m@,Tߤw#9^ ̞Vמ '̂ E'̋ZyOxw&̦b%<0ߐP[g*mw^ӄ;+;rw){t;瘝]V)mw^\rWs|yJ9BgQߒ]=>ܞ^7co3[L;gjH,Y5`MJW+Sd$c$wEFpN?ؽ>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2050 0 obj <> endobj 2051 0 obj <> endobj 2052 0 obj <> endobj 2053 0 obj <> endobj 2054 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2055 0 obj <>stream +hZI_j$0e!@ ӌ`d|p鷌],YO_߻.χjjZV㗔KKa]~:uue?;5_([0!sapљH4v#M%uK:Yw OZᄭbQ(Wz l_8ꖌ-qֺk-A!VS/*H&H|$9Dc +:q9 + +l\%<(c ja#P)KbN&~uy[ͷoâv dMBy3lk BhʸO/~O?||ky%-/Yk3[Z@-6Y##XB +ˋžaϰ36FΛƎ (X]-1Bp֚Yag=jM`3ȐIΝķ36s+ = I&,t&K8!G]pyăTBlk\*BWIqH)zڇuZk|`Bz˄Pdy*Z +׫.)2hIXI~)s3vl/8Mi(,l/ #!ѯe5^}VD z$WlڗK=>b^LIdu fCR4B@#+K#FŒ+xdȚ +VtjYt0c, }XTAru6;utTCyf,ˋW]&9!Ix4wo 3ܘFv%-?!Z߃>`mq6Oѫ`Hbq5W7-op0w Jѥ$>%,gXI(r0@"^ Eq|RG\AN2COEb\őh|6>bUPk7ɰٻf$jeojX*k8 TxobiyKXhtX}I-csbADČ]Ex~&&;_#5z7*wΝ,$MUa:?#&;7I bkB]0f$$ؾ~Bjl L+ݺmY9u+-B7)ܒF_!AiᓶL!v?ezah0|3O~6s5]Mϊr->F={ӛxal]|0iq1@/v bx psv.Af,Jq2μ%ZEA!z7.iX!^9<}%̊ U +!@:D$ˢrl|"0,6RxU"B;}\⧘f?^g :)&f0D׊,Xn3/蛼hrvߦ;K]nC7S߼4-I>~C{mHW'ϖ Xe3qeuCinnh1h74ku yQv"} ƑU_tk?.|s ]5J͇͈RIw^8#T^cjFp,*'-P)YV^o@O-#vۙKcUEE:qҎhƓF[[7v>37Plȩ~V>ʥ.SוTi#UזV-Kxeg~.ӮǩK"6hjAwD UQB[60_rD7j_TsjӫIRAG騖"u~n>ǽXh +o4І rx&}SPۆަFι1׾o|jw~..YO#}Mt1L~]n}`a'aо+ŞJOڽ0>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2057 0 obj <> endobj 2058 0 obj <> endobj 2059 0 obj <> endobj 2060 0 obj <> endobj 2061 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2062 0 obj <>stream +h[K7ȣ4@Q7 40s`졻Bvdo$Y-UHf0"/7ysw'==iy2!<+f;}ojuNкߛnz1U:ak&{8hm6aχeމ_o'wSݿ#FV906a)l$'z<9\(9|*] M&zs`7hwp@68 /ۻXl:M؜\9Mon0l8OAf8p| R?MoVG?7 M2P_#u4Vd2AZϛ7w??w4}߼1LaQjNAaaݸ^=Bt@?̬|v齴--K`r@AeԜ4|tIi`mFpx#?I0R[k׷/ss`{<řLT٥چ:r}o'-OayU4сF[zV/"R"HQdDdJü4a4Sw5)0 % =|ߐt|%3ӿh_[1Iid1I_h4-D"yP֑Dkm\nVM+y<zNSS#@$.&t`M}@T>5H] _FB;r0eo +:MijSr8`"b I?;~*G=5CShi@V;I*aQBŲ3,6<,7}O>QiB#o{C|[tB5˧g`r}Zv=ӝ_ -ފ4&p ='''_0 [,LP0B@1ԫ=:_AW`>07s!rսWFiH2.e5PlnYAGGQð}ap(_;=ɗ(UB(aVV%{p>_Agl;rھ_󪝆w~v9朮Hpu9]Yi5G\pNZ +(r.se]Y{gns.aEl7m|/~3<:zp>Hl\0b6b`^]u}x:cgEڢl363 .\ tX7ON2#$-u|ԃW +R0 +44r%",y` SĽ1rG_cnRl 2'msrبeI9.4W*50N bx^"-ܭrnٞ?@Q{A#@YEݝ3]6ojp.涋姟ʠ&F$'TGe5bQKg{q푝vR2d~7WKs[zBz]vRkj|g|5CY̐|U>,t I"ex2A,ZŲɅD s:=%h鰸^|" {A9&@SМWKo+|IJIF"PoFCx;A?UƄ| 㓄#)F&U87qxbc<$ݮ^%XT6̷x<TOZtJa/ۀ̍lB|RŶ>,:?MgSnx2U-=J7R FmaUe-ͬv\dkSs[R޳~B;lpsgڀpb6ݦ)[ܒ4Kc%v\drVreT[)82]ɉi\swx)HuKg)%dT&{=Hoćo4}DOJbdt9ȩ'<9MAtx*?+M,!|N"c/.R2PpSN+-N%qVxb-np~{tòCdnW[օ9^꼻g$ EgQ vE%U.\.?U>IJ +ljaS݂,//X_{50.םv7et/[9}=:bL + (%oZn;w<(9'_n;z2ix۠G:KP0Kydg偔qiAc}js:շoϢx,~9$.[ _(1y~{Kïd2n wȼJU~ mG W _w_(|83V|{ 0{#R{!"3`Ϗ)LTd 7E>KP1ǙrrNJAĆyԏWKX~H˅}sM+ µOY~p!BsȟQ aF^>_jkm;ѿ}W\gG/huK1Ǐ9G\Dh"o?/KW\8?7_ ~lAk}|UHkzt%?j5T"VtއbV:\wW;r!*آ>$㓦O7O7]A Q1SУئ 9Xyx khfZjʴ1jffxvrEu󧌿& 63C-l6lȈZKVwH _7 hv۞ Y3cf0Íݙ[qu|MB x`>Krf>0^S;#t:wGxm }XÅ9(l!u2n&x]ڤC]\Wpwx]tDO7C >t +xcx,?w]>>Lnl8ˏa˄1n~<Ozw ON s39~Ly=+ov;;1}c|Lc` 5OGxC^s; X# >;>pKu1ҷ5}yy0ҷ| +=g# b +>TLNJ)x~1]V1z LJZ}}}'}|̾2Ga|uaWDPc]>>T/?; >J >T0 +VpwPj: +޹喁+2P:4 to62pk|M\}`оD*I1r6j`)pAΤW us-7 21T gَkp~8ާ~>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2064 0 obj <> endobj 2065 0 obj <> endobj 2066 0 obj <> endobj 2067 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2068 0 obj <>stream +hެɎ[ίx$z_N>8 !zh(lXrk>=UUݏ,`z}.?}}s{swܝwui1}V__>n5BޘޘP7rv8qkV{\y:sX3}3V[޶/ndeY.kȵc8V77X&J5F=圀e[, }:mu֭yB`n3JpX[ۖ<+GڰbՇ߻PZRWum›o9Ͽ-oksZWX~rKg +$5ns aݛ=~o˧|߼gjjijMZ>`!p`>0™5ְ C۞ڞn1r{Z}VXM &Նع$GˡΥ < s;Dك{mڞwryhVزPN0lg@ooDm5yÀ8`ﴺp5!\h4a= N^ch K iE<׫O@GBz`S ʎN {?Lvk5q`KF< ;nBz< 39VDNK-mwݾثyT_[uRb`w_xmH : Ap U+"X 'qOьcHDB*,NaKx85~S wx0`Yͣr^ Av(mb h  Fe)FBWQLwL3 E,AFxxq#T1$v 7Ė@{r4 ~ 'O*M! %cϰ1^!H/ 7B#bs1ʀdJ$L,qwT]A%Bc8\4R&dS,n-$@A؃=ArUIayU8IMM Q*]4=@:Im|E[P;zQoіЊ פ[A8K[9M 05*X-9t$~[x͟`f[@*w2&0<ˤ +e|Q 0,sTv#H9CĪd@b\b0&\+gY]G<C:MvM,NK>l[*{fF[[W!s%)̾a/c֨j^IΜaZ*' 68{8q@c&xsЗxqʳnH$hMc_2-"؇"D;:3rΙ&Ԋ1]ܩHTc,~BYyKkGu'ȣ}5udԘƑD 5ڸ +$@v;reH/ݶ9i9XӋ2yΐa9(j!H+LBȄ`"H@2fevQƚ5L_b_Gj r~ XCC×H_@-bt2+q}5-fR +p'$܈Ӽ0@$$ŝ؞)vځ.e3P+;^,U{LLBW8< u$lp= L9LKS&/Lz;lzY 4 q}V+ᤉV] :828 ⽭ L,'-2S2uҫp}0Fա0T4-^1Zmν2L0gNR +##$eh PUQ;Z2(qB#&\JEK:W=i+܋=O[a$Њ9@V5`GChHBg;kc$˾m`?"Qg2|g)u5zBQba3'5xT+Ng2] $аUI_r!Ve_iT@LVդaBq#- 2jPW|a]$RlC_tx ",Tr +lP[4O u]hRSO1˶~S #.)и8*Hugח"-SeT#&ǥ;k)ga6 nV)J[n ܐ"i KNr \.d%9˷Zl=r[eps1$ܲ J׳20^Q;8`:z LV诤~뾻,{X,Q n0CNkHdab>H9=ir  ГP͌GK;!J6\x-x y¾q0{7S/Jc5XHr׎QVUVC3S~潂e/{/K$H+>w3lE/q#׈<(O(g%.sx&Wl!zgajyjmt~ 㥟LY~̶Ŝ jOCƝ+@Ty`.+6HC~f·)1-;Q0>9)]p* ˘a16f1^ưU]䕣 o 4p-y{*A|9J؟Y:6%< ʻ$/h‡]M}阍%zT1ž/f;Ûn-H +x'|b]3^!qŷ*۝VᶾOF~q/ +endstream endobj 2069 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2070 0 obj <> endobj 2071 0 obj <> endobj 2072 0 obj <> endobj 2073 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2074 0 obj <>stream +h[[o7~ׯGyNy'avv$yqSr ;_9kNSKqk=/ V4ڀR|e$]ë:dʘ`3e0acy؇~y}#G'Amh&ODHMk߆7F;l4E(g7^~n_[]vw8o>Mqۡ`xf(eEIH5g>i M;N;NфuYl(h|8E͑d4tt6/>>4ǢJOQtԓMc1r0AoxLoJ-~mG5 +jժ-Z65]\D妒 Y4#b'"Dl/}B ?5)L nSn3id^(bOV@>iRS5^#WDRU HijeK|bۣNM}9k@(LvykӺl0XrڹH4+6fE.bbŪYgoٱ#IşZeW > uwum6ٕfasj|U#Ð0 ~sy];RV-H!e*S"JZdZr걟&Dx-xڿQB)CTɀ,,'M072٥R۾ eκm-4Mk͖<#E@W١~vUMW=*y/,Wi+\Ubً>))oU:@ra'k5O]GFlʼ;:(*Ib}p.blXp֤&վVwm̬j"-T$}"Oˬњ}s뫊YThcgط"5uAk2b\ _2M`d ?D""g[ + 4ֆ@tDEnBA-=[RzcfS#o*1̀VtUaeEvsx?:4m,n&>SD=PX#-h[+3-,w[M-w1* X٥3Mm{Ρn@ET(cdj] 6"L`V>ϭ|))ي,lږʕGdvұwj@.n#7RH0ҝu)TY)9[Ѝ)hR;+5)-jbk|C,]ҸgC2a@ŕ 7t>s3!bZ`@łQCL:h[5 eL_ +k`wNA]> ,lHG2TB{AWJ>E3Z=[G VR[1UJ{:+Qp] Zr--$ieg~mY7YP% U5tRF睟yn}荺Graբ)jmE|ڳ ] jNy{J,5Z35 z9kW{ej殆ehp(r Ut%@sEx1,SV!v5jՌjNkm;$[նvyZ/aZ$|Vk&f5EF2j,E%ungX6n7S&@ŭEPp +]!b:y_?PQvu= +\ԃgy-L /G`4;ЅtJo|ORP ^@iSv7*0p̼ȆyItYF +iYIKb +!7YǕ}9.cpVROzDi΀g3[ Z*GYZb*/4/!mb<SwvmӠ@X;B4 ?smMU:dG YڅXΑ3x_cGC)ͪlؕ#Cָ&:]y⍷J= \Tʂe \Iq_Dp!,g gi@w mzc#j%U%qJQd$A8>r +q#x.k`5TYc 8gQuk X]ݚKW\7{E[uGU!] 49}0ǣ;]ߡҐ;RwjVA5B}Н8Kgpނ'akj78ٰ7,Y\c{/5;^CdY9pJ/qSЦ.4vNj|ƋSQ[ r5uaDM!gP*c1]ee/!-uYYj\=uQGb"H/gRy!fSr6B;-S da6() .Wg+*;tvFlSBS5]iǻʹE\.&"_8=hEf]D7:g9:MhI* sU{U׬sFvݺMm(lkW-:yU{JMW/Z?i Tel\ kwE3p C tulOgYmܟ. Gx3o/$VQ`V?êa5uc\Mخ`ſA܆C59[li9? ÷^ϖ"zedkٺznwiNw֦EY[l7]0ёr JݬVd C^nlA_}?7+ؑZH=#P3[_0ԓI@Ä` mg O [[ ? |{οnx:|x~^lMgK8ȸ݄&%꯻m==G}F7vnO7a#-o|( Nn"ty: PE+lZ tiQhcGҭs^cJH+iYBA qLҀ+ .SZ&} =c>Ĩ. Go2:lrfYݐ4N1 =S"29F?-=(XD`Sg}-tVD'M.CMCpǏ?ꇣ8r(ə ;}}6D:u~=:=xT)F/5rʟn1@xpN?yxؽ}-n |av˫w %)%,_=pit?]߇Ͽ{=`輿#%UAb;}{`XR&0C^*-geB(`5JڣBcZ쓧Tq#체xw7Ȉvr׷~ם0 @6gC~: "uL)˹wNq86a&K }?v݁Y<*eB< 7?lSWwX;a]&BR=zDY*I +}{{z?Ԓ[G>k%N[UU ZkR՚*2PYPQ4ђz8o,^0/_ V$Mw5)Aұ}FuMrC ,|0-NUx3S:X62)x ~D4(դ=@?}Q/ͤ~jF&VfqR|g )Yv ]Y_F@ vZ}ЪjKZ%hvaWu&BW!r Խ |߷9N)ԷV9]dŚ\"E(> |mr^z, +w(zgMA;ҖdbR8ZnG=n&eXToۉJB`uG 衭Ds :g#]h/YyhM5;YzLCI&:VS=B"C:LCgC3,уVF2$=7Ps~@K| B>j}nltΙz@=:5SFN9YKVg7u%#+a;R7D ! fT/ujUhên@:,~#@?#J@8 9 6+/4aG_={r MHK:/2L)&nCɱx`9~8]v%GGgwB¶1 (U/>s|#π$mg Nhh峛˻ׯjxXũ!Y~۟ž.HmֳAY&4B)sSp.?8c Ň>_Kg5g}3A|:fYّgRҁ+Δ~- aLzW+ŏcZ=~t| ywtS3MηϞ|_z&tR +iJ5>m!M@6 1~ Q@*|Ri#9iC}"zuq(N}t9 LϧP D :Mp*$b?s6GXS?غŢ|H*psZ>aWaAdJZ0Q"dOc*B;GϏu=1&a*v K=ʁm.L00NS}GKҦId +Gk>bSz\`S6߻%2]DD+^ EN~zXNYYiIz@K: /N$ }^\֞7''}v +endstream endobj 2075 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2076 0 obj <> endobj 2077 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv47920V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2078 0 obj <> endobj 2079 0 obj <> endobj 2080 0 obj <> endobj 2081 0 obj <> endobj 2082 0 obj <> endobj 2083 0 obj <> endobj 2084 0 obj <> endobj 2085 0 obj <> endobj 2086 0 obj <> endobj 2087 0 obj <> endobj 2088 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2089 0 obj <>stream +h;Ioyw:vRj(C[ Fٔp$>[RȘk PoϦtٛ ۙl >bmR]ܝ ݧ~ 4иv`g7 ~aNo'q?5v.~mC.oLL:.j@+ mFM+8Kˌ]o4M]4L qf?fb)A4366p-kZ(;j獙}j;'<R i6VsO_vzsl5ب- Nj4h7;@=/F}Zf0=; + V6h0u['(4Wp24]2}OPJ9'0 `%\ +.sGA$\W"`n@&EpF$hJ;jzXng,@&$pֆ5Vժ%>oYNHaw'5@8B Vσv: _ <~;E? e$T9C~ \9 ~NV.BV%(γ]rr,QOғ8[ GH|C@&dI4n JJl)C=BNk{UYx傣#_Pd0wTˉ5D߲{_*D"~x/}s^5E>Z$\%lU@E$OtŠv^^$J$Zݿayzh91kžN'ms2w-@Y&YPZ#Ig}݃S]fDc !ѿT19!*KOqvBm +:1-ǐcfMffՓ9Z\2}{wQAQfJx]]XQq;#ċ/} 6 &gNU9)Y Ӗ2H=^fN6Nr˂ؾ*@+RMqZ#+MM*_\M +yBKM "ч)6H0_s1͗ 'fݱ=:;|-6:cB+U/WV (wi$ & +>^ˆ}oV0Q1VPGoqDž+I"`/FdDBW$+,rS\d!SAω#fSt`R誸/d*d_CX1g"g`[FtU!"J\5iU1k@xkaȿĹ# +A +' 䦩7ВcPٹR^A~*}c Bn7,J-417'Bӊ#n3a) +SDA׷5 +X$ډ4ƴ&'&+@'3j퓦_#r7G^9X]`,&E+xx>|8;~\]CJퟻ$zw ܈rvzC ר)>PχGhUs}v~ۛUYpzx]gaۿN<4 +{ >н<1_k­@v{{3?rݹqFu]n;zgC}&_ߚ9*Hbo~D@tY\ iul@wrӗϯ;x«^r'Bz}`\fLcGЕº@[crwҮI&l"݃m iiu;Î[o( +T8['E Qwfr'fD" +,t+vO }?>zyp sxLk}\O}cBO|Wo?{lg aK*`c9X$iycY~"IK5u\%64 }M8-*@2;:QE]Ѽb8(tdl5jpd#w_Bb BS˩Tys#Id|DFyg|{LGivO|A!t +3 Wy_uWN$mrUfLQ6u]/oHqhxa~XI2mTl٩M؜nyݷ:zrhߥQ r#мHhB1CX}Ci]geEiyv`{@}f.EشvaI}'5&0eiVw*Gg9J 6AyA;(ߞ?- +S%MKeψO|J$ 7W# He[5J1A͵ҲQq\!Z#2J~(ql#XHd98e72!&6;B;G b Á(E;n#&{טGAcMb@*‘\VcMI\f_ E(a;&-.;;D"i_euFQtIF82jU\~ohi&amb]M +&~hO$nSjϏsR +%.~z,{.ýʝ+"/E.G D$݇xͻ9M|9c*7;<[&v8é"o+G;yiQA0G>?'?pAɆxbYڵ%=If9h.p'ɓ-)cV<|>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2091 0 obj <> endobj 2092 0 obj <> endobj 2093 0 obj <> endobj 2094 0 obj <> endobj 2095 0 obj <> endobj 2096 0 obj <> endobj 2097 0 obj <> endobj 2098 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2099 0 obj <>stream +h[[7r~_я3Ny'deo 7δf %kd/򖟞*XӣHA !03dκ~U|ߛ߼7nʴe11Ne_t2xsŔ~n~X@5Ϥ) jMR?a PZk0'a'?Vsk6V/ ĶfVm㔒]n˞qqfO:Mh`Oc't ]h3mG7/z,'Xr>źs/m?;%1y+LO m}ibߡsRqk{,"i4å0GN4bHΧDwJf2g? 20i_}aW| 17?o'hh=O/7"pN'*gͫ]>w>Ƿ~9N3lq^7}ZAݛ9ZBjO7'̡ʮ]-ل@uedpeڠq7;/PRղ1~,cP16ÑlR&Y ɽ w2fNlMek\ N;o`sce\(6søH9V0{? y[oϺFT„6?k.٩k{q2(&gpzup OF ɛʸd#(ESK)R嵾X6 ps9Z4xVp%>IGV*ލC'Y$pxPNlJnf6%/Iß.˟|K|9)sJ2/0&cH^0DkAэA A~xW<˰TBٙv=ղs] +R9 +=@Mfr\[ְ)W~ex0^ߒB5PSX +xkogR +h{4Gh*VCjcӇւ( +S:8lצ2QxRb{`xQ 6̑q`@<38j!W+#ԩhq΅w8gn"JO\ȭ ԭ 5Kv^MR"$ +fu8ڹQ=-3:}jF+z'|P-Sc]ۦ.w!g=Y41U'ULCMl(&`WmSdyEZYx@+@mCږ.Yw=|ĝx+p>t3$!G4t|k2,J(6x=mulwM.lckJK]?U(/hmH=Lcj= +>uu3pkan33q#G,wCY֡:4߸El; u'ohpĘS.UDQ. %DI;{FFNuQ a $_02K,(\'[U>MvP2HV% -W#t]k& .}T\I0y#ݹsjd )aiD 89*UჂn|vQȤM3s_vFUJn +Ŭrmۯ" NY/^u;4Ȫ Ea&>"|YEc]% +G u$,[Hcۈ 5z;[]I&DNM'+1À"jt&Iڦev?\SjH)6 U׫K]wN5ԫv,U i0 +vŖA - +(zEUexhp~*~"H.7뱃 2p❍D+V:T\;9nOwn~w`+{jٶ,a?S}]73{v#ۭMX=!ZϿ[hm?>/Tۆl3~Uz{5?j־x.mj]9C/HDuz+.*2{$(󩂽LU?Qp,Exp$NEM97\׾ Yk-sQ^)]j׿&9)Β'cTN:h[ Cխ +R&֒N<[equhvZ=BGԘH19?ȏ]!aт-K\+%@k;׈Bxvզ҃{MК'kNl/_"( g\-WE1$p +f 9WYd]cpAiv܄Kd#p)N}:7'̱uЈ[DN9H5˱O +}8~U4 ohY1+N`@T8gْF rt ySd_n yǼL2a.)o:nIqXi"^yH`ϲj*5NAH)@VZnU7ê!qY!DE|֐u̳y:nv|%as"Yk'^ivL@4! 'zUW" G,[i<\I='T2q-zpuv{ThM +ĺޅrahU}7=*/CAH*F ,:6Ihe!axj5Γjj{p 14˨Ւ\5A%ll)C `=x]  +NR.񅀋`d =P Y8ȴPwЪ^|((Gb8|aHAdh [q@;>1]1bY#\dtGCZ5au@c15[ٻhO;WQ; +ޒtzƼjԕ^fLJQmȮ9n{\ZƹMxi#f.ؔWUF3g)B>$#YԊ_*gik3n4bJEB˟`Td;j:׽8`W"k $}DNn!u䚇{hSYywtUt_#la +2ƗLK6ELUڤ+ z_vqŠT&q0yQi%-3[ U dϦ|Y^]t'y}ش Yk+n|+Ys0r?wI^ɂ~帗dJ@X8Ђo8vMƽBU.L# F"x%~I=;qy63ȏOHkʼn + uR U_B j&9h {~I@H_S pd­:s.,YU9/e%J~Qzt@{K/$dN6g.)C a0}!N*-u3z<3+Au:A+˯ÙvQcH-DR2Ц ~0G۱-̩T{[̻Gۯ_uFO 4Tb\IP<*vrSF160i}ԔF^I@AcID4i I\i6;(%eW;(Ԥн6PNtkuxZx+| SqFt<_zO֏w>/BAfiWT9Pte3v68:ܕd@mGtKI'nhs!'Rz5> hf eFCK#Ht\}$:0 Lr1jˮ%ӣ-Y8G~Ʌ>dՌZƹ~0,ٔc>DDz&&=UZX·'̽7\Z=.w oԭJR9wCڸquiCO| =W%@P]^H0y a{_?+/w8*۳lg0ڜ "%T:֖Xdi<$f[E9H&.cs ՃrT UHD˽Ԋ]$۬^Px`ΜL@ 4AhAؑI^Pj`U$R: /K:TޜX}Xo7,x}LqAs!d]b.ϣg8+LK+aI^$( Nakrtv ⷺJ]?KBJ}PZ˲aVhK%9C$ڇd ^I,Daqܹsq-䲊묁 ֫ߏwdWy()[$Pś$oU~|WoF8Ts.jy3=4؋BNNA;ITe]\!@0W0ro%sE0KpOLSEĢRĶW9?BL^-sz[0sL.j#4vtP鱌oح=` +~Xa3Nf si2k4?''FzBI.fnX8FrTD8I];!iz~_).: R|T$#Km֔L箷f}GvIT7)qD:_q:xd!Xΐ>.T,zoֳ5E~fHY9)]^$7Kʶ,n1YzZoޘT=aIk%mƶ:ˆNj:eYm[:w鯔AbSR˿J8Bۮ,Y\UͰWNo;<``hS#Y;RphU"oY ++AR2@ݸ4Qjj%әbpDfeq,/=@tǎs>f`SUش[X~湾zM J[WUdOpۿ=ߏF5?!|s僚x~YO4-L?;ݘNL?ޘ2-q\YUp̿/). +endstream endobj 2100 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2101 0 obj <> endobj 2102 0 obj <> endobj 2103 0 obj <> endobj 2104 0 obj <> endobj 2105 0 obj <> endobj 2106 0 obj <> endobj 2107 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2108 0 obj <>stream +hެZYoG~篘G*G}A ,Ʊ HZWPT],q::{N=ӻWӋ 3f&?~ q6a6);]ܭn5+QأpyfJyK\+T=H,Tv7]]&̎fhK#_.[93;hxAkZOkrvy:ѓG~}L؜4sW7+᬴9E{8+؀,c*Yz$m)_IylHjvc.e|0ǁ-9UW^4<'7Nڔ/>}wq:}yzqO2P+G(#7mO_L g3mDhcu볏]?޿O!LHyVi֙*L{ Hz(Di PQn"Vʖ˖fKyc@f6fV7Ӭ]wfVp`]IH`[sHTVii&R+cNsp`U>P9s4LсI9X`1Ȑ|x́2c I"Fy4r"]ūwo$oL{e`=e?v큽6sV~pCz&V#bF(dKS rgXE-Py YR\q(eWRY+^<5 :q <׊eV;89ENd\Z4-aeiPd$TI!}ySH~t;UvC 0f(0MvA8|$,`kL IsnJ]Ğ"\pU"}M$4p2N'=t$Ss-1z-fP;ycuSYUwÌ˶3-E5۱]E=zYܶ޹ÆnS%)!Bømm(qK',0nD}aLˢh6ЛTYY|V0Ch q\𞯠BDVf%$Ҍ쉂hyi$Vs5҇k"}ِx`1>B(D>@ zv b(W Gkdovlb$ 9.tIաq`a'~}~qW?[sE*P]YuS`Ud՘F>p"VdOl[ \>P 2Pn*E1kh k"}AEZsSB'4U[~Zto"J)/:>޾%I-hOq_CX!kdգR`jAyee6V[ˠB ;]\s`ձo×8f@qeN2T?(/ߖF:6wk0DU5 +endstream endobj 2109 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2110 0 obj <> endobj 2111 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv47933V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2112 0 obj <> endobj 2113 0 obj <> endobj 2114 0 obj <> endobj 2115 0 obj <> endobj 2116 0 obj <> endobj 2117 0 obj <> endobj 2118 0 obj <> endobj 2119 0 obj <> endobj 2120 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2121 0 obj <>stream +h;ˎ$q:wHڀ!8=3}PKRotGd<2f lW###o{7=ܽ}xp:\朧1.azpL;p?~8/KH@5nҚGrTvw~c9i_R=f?jRV{FKՋڦ y9[鼎aߕ7h31sBX.XiprOH9a 织;}SNiut|[vXv~<3fSdi->t%VC Qb;S3|}7'k +24b۲ot_ƭaݷ qn<# H5~:q owoˏOog7?3lq^jt ,y'vZ\2>w'̩Ʃ]=C+VK'` +⼬~Y$v-[1gnEthbxxZX Moh.˴4NRj 98:R0(B+SHRZy(Z|au-U + ($@7ۅ -%b +K ~}6B [۩/G`ޥ ]&a$?wY +KzAO~w$p)J +_ qqrM$~$җg;&Kh.>8/4"x/pqp؋E`FGO&\] KcNFE(CSǺ"GV7X I ٿ"g@0;N |;s_31AB48Ҟ KZU/jzHKEE..xY\<nt ؔ .*g|vҪ M'@uSgP/Dm7*Nn!BQ>&P hG@K^;isԮA:+uh;y$VBT3Tay bª2d ǧVZ2 @ +@5zA0,;5̌ k6Ӂ6]z'^e6MA.gZchQ.B/'+RΦ)|5 &iÄm7pbLȒ h2p6p]O٘V}`k.TNi$C SE6^:I̲xH 3ekgj7B0K(€Awo) uEo2*6xWTѱ3 CƐY i69/WdyOIW2F"Ӣ;R`zٹMTRlNGC1ID0;V) qN2MtgCT FtGYFҸȶj+ӨWr/B,\I4=Ƃ  |P.\:!t"UHvWxSϳ,ۇ5t;YKBvjVu"bLNh>:2ƴĺf߳{Gz0/}. ܕˆ!*3=}JuM9uSi]zz3}τNi,j{DΣDRtZIش4Y.j.bb$+k[kzdΒjThP`qF]J&ʩ/dY#]g~83g+8K`~tXp+#3l_5QYΑ[o +Wݽ*ybkְz l>oaaQ~eq BygA^e.P R^?u ,d,>R }Xz 8zY $TE % ZJ^% +.ۥIdO$){~2Bk ʑHQR#+6^mʵC9)YxF kG =u[Wv) +b{!+a:IɪM<(vl8Ɔ S2kb}'[F溃jKɥy>$L|Ii1GzO&ܱ9sn^&xT+fbl,D֐dOYn::Ɔ).E׍zx@cnb~T^Lm3iF:ϖFMߐÍ6tm.r]s_ѽP]}-xoŘzo$"īh3%jp4I}Urfptcu঒S[++gA^fj-ǩkyv=Kf+.+ɃfgQdTlj9glO:^z1w#T +v~)(E$P_2-jo]'. +gRLLXP,ΆEG)%lk6sSz8Z!cDċĘ' 8dMJQ6wҥV$s 7`08(^\jADMN `CwOqL$ʚmsRpq!ь'*jOC:n^9#97Bb`{ɶ4* [UמjW^cH f!ke7ҽh=Vil=LYT5^wt# G<)o19ENqat40\w&/}kmǐnVV$GR~էv=8*,ERײM][mںM]@ ^cZ`V+)uesƵ7A#vԟ![aIMӱf@3Ò-單p4px>kD\!#ZӬ|.S*Vr8Èj3ѫE9\&\S D)9la<ѹa +"3P6/Z2+7wEoNi1#5{Lt[LjѢ#qJlEaDnu/!C)JM sw$oE + 2.7Ð#45 էYb609K7wǝaV18uKFq0~NԠn&<178k|0qLED֝H J Z {͚ؾ6:>t;RqwB{*]n}p +endstream endobj 2122 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2123 0 obj <> endobj 2124 0 obj <> endobj 2125 0 obj <> endobj 2126 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2127 0 obj <>stream +hYn7}c6Po@zE݇ X +H#9"g[1lUϼvv=xm8|!)El./u΃؀XM?}\ΥWIwrs>^s*[.XrsIT*xY1L=.>']鱷֕߭'p)[kJibyi[XwP#2hΊt4V`+-[~izЛo[(i_rlL,էwRIZfPXpz߾8~úf,Nh}j_w*Ԓ f5(NcW~k$= ;68cRɜ,-ԫnDmI_ P&it#LN iLhf_nW"01 uc@ zߙ7C\re?&&&|v`B-rLIs8B%QaQwCTX9DJ- ґ-D!Ay\NluAA4=DcC_QdyÕrsZ4{/ѡ<.F>\#1Nr,9 ͆"L5fR#ݛyn3ERqsllJՂ?ɰlZ˂IJх}MD,𬘣,(E_ Q.N)A}i(ڶe%56jK{5v:Ⰼg +- +SгvRz_hhFzVab +&sR{PL(eR-`_[0qt֗LGvw\x.bDEiޖVەv/v1v3_˔KzRW2O6g?oX+ |'SAXi2l.̸tHoe"/ +8wʄ0*4 +!Cpe"D1-?qjO/ b4`ؕB`lՋ(XsC\rJ+gpE)UE}yof[G؉x^\ +Ba5HGZ< (VOMh8'c!J u2yz +ҏ24f5r l̢gFs-,֔zU অyP` _l "r(;[[CωP<ZL5 %9t[Xס&w?;Q5>5="!.gcz8`(1=c<ґ~2iCEOU=lP*B鿼 +nǎE_`l>է߂ +endstream endobj 2128 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2129 0 obj <> endobj 2130 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv47934V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2131 0 obj <> endobj 2132 0 obj <> endobj 2133 0 obj <> endobj 2134 0 obj <> endobj 2135 0 obj <> endobj 2136 0 obj <> endobj 2137 0 obj <> endobj 2138 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2139 0 obj <>stream +h[IoɕWQ2Psh@U{8CI$|oȈ"6lۿ".?~͛;.R^SZYC0~{co1.w'z1>5xk[[eh*m[[uk/O}L:bMzpCXm,Vyǻ ;Zkl{ Ў^yZVlwHH ?JLbB?YS;on4Dzku~/ip"m.}=)Aj<r\ZQCc somIo{{gL@kmBFJX]Xꖃy/?~|˧ sy9- q55Xx&-OX.rzϯYc mmm}p~ a>VS,~Cu9ڐ@[Mr<ob7< s;6q&ɜfry6FزPjMP;kv&n;yU&,A0Hvk"6`ՕxZ] i%K>ݐW?3' ?TBc QYh]LrK,EZ 6ѨaAp(*oy DdVyhUlORXs"7- +" 7yv)%iX]VE h(YNzjk&BG&1œƣ/ +c< ͚)5g,*x5qih7S^Oˢ 0Mf寃Sah (.o2Vb2[eQ;|ױv>6 5)R,/_A><&I -v,*zqr3*<8"y|5  +Vjzy;G3{>j +app%Sd8#V^@ (NA(TDi\!XA4g6PLhrV3c\1$9d ǴhҠ|·BB*+T@0c@˅XtM仆",XFH [I~,`,Oȋu?u_%[ Mu>oh^Ah;c;WQIM(qcm'TChX2>zS,R86v&T) +KtNE;/ԗ֢lUVԥoȌ!b<(5to Tf>aXA^ϖTcɀmԐ +ͤ\(QF߱ŹW7L :>mbB kH ?$PvzpP9e,kW[QضeZ 'UW"#uHB!-5Ǒ#k;KXUTnc\ߏRJ v15?rXhv'apd&l&;aWAxL{F&wh3=JbGV/dMjj7{WY okbhI,K=/:kf߬os}J4\gci#֓.P9orDH>22v/O==`rNœ|.8,9&Ӏ1JpC X܂BeVph2Oc܎p=sMy 126k_ +iGFt=KP5`Dp2(,YaI㦒aIE9RCI^q/k@wOBВ# >_S hv [l7=۬f-6􉢂ȯ&d!}K{ |7_i\1~w*n2Dx&z{Y0ETcrNٱxi<) 6n&)!M.4=lxU@(xdWjvM +EQc5A!Qmj9̖)=vvX47Xnw#j-[Houˏq7GLqd"hҫ*+یT55kvkHXyq xσ .e($OHH)"O*4j.,F1k:{sYٲ/Ԋc62)廠eCmܜAK 3J&Sf4,kc>PUn z aV-\*7Wv~ٻSQWքW 4m:8.NAC |=opp>5t nB9v^\aםF!X9 f^./iL;FŎLu$ k{e-8eRm<*qR ͆gIP/7ղ[֭=A]\AS$`u.}PKy:4EMnTN;"78wݖH)mهmSDSvCERGyFtn?V#_tAanTw&G{$CJ.4,gpzkx?}qz,i%a"Nh.ǭ/F9ine )S1Ɂ-1!v5Ļ0ʧrG~estY ep6e<&9 +k٩{f] Y ڞBJHC\*}ei!,ի-8Qqc᨟W&^T!}ׂk`mFFǘWв g5'i*g*FM-"y\'xAco㖝nWLLY*0Y:pAJeS$뷚 o7@TGt69lڮѽg@ٌ98_ |?-Ãaswfǎ޹9l:Ӈԇ%$:mX\З[s{ifq]eޗ1kIp>&([}?<CzKHeC[%H?⨊ѐI hYc;"V[fwD|#;"Ǡg:kWtUAk4Rv+KIk&Ԓ9"N_RFhݍX7zٶNsEqۆnmR2/-3Z,z8U(0iOX(}po^iˡ1qԖfg/9tu DNnw"؂%][frq:U~DXZ.l 텓A2Z z(Y`,5"-Uwkꊾ6K:F*g,b)m.m<kRe_RCͼM\!vl)KVt4i?*tg^*: #!c[<fhZ+ɏ77KyWٴ Nћ4V,cpXڙ*a|A# .х~d8mW) .qzX~A^E?S;S +V/ _zV+h 3\j cZ7Fv|=&C+:]LϋJQ]_!pm 7 +@Yޘț4~G+Iivۢ?\DJ] ́ +n/n (̪%F"~3"J9e("ci!ֹP#[ZXإv-U.J_Y%vDe_~(H 3A^T'9 ºыtyR)fXT+-O?w%*AM u8]*6U*/yƟ!Y~gE\3÷|+kp=Wvu *sؼE.9o]_[4w/_[{@r#z-l壷Qa8r.y.xZ˟yn2slE}iGxrZz.Y_wBdv N/KxJw1^a|}Li{tU5ze4DAGyj%cEl''#WO} +endstream endobj 2140 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2141 0 obj <> endobj 2142 0 obj <> endobj 2143 0 obj <> endobj 2144 0 obj <> endobj 2145 0 obj <> endobj 2146 0 obj <> endobj 2147 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2148 0 obj <>stream +h[KϯsiQ|,dV@aq~"ُ)Hj6YWo_O=<=ONe,q0<48DOOf4cA\A;?&vOh4ؕ኏h)bun4Iw_yё腶46F}0&ꘞGri,;6J ;[;&ǿyt6 +`Վѣ̀!O+uXw]y12 f2@qq=FWc %zbY£g'ۑ2GJXw +i!h77L,(bdn wQ<A=H[hylhJiFO2m LpsAH`A&:̰h9BD_nL i(褴֨8$JЛ( PhСy{!Wاd'PEo{Ik+kِF6 $z~V#D`֎'aH0@vkCo[/+x8n`97@\Gwa@xo $[8'a>_FMD]r0-/1 +jN njR@+J*Jk(YP&u[ W,6wJe +];N.p8w(ӚL}+HMc j&eMwߣM7Y&| i t +HI{--A [m>}4Ka #9 K6M W/5+FV$kx.gix|&x<~G#3EaKIr^p +9eq"Z-vFH=%H!U~+ҍ\-2I&ߊW+V}j&Hwi6}WxW0|8+'9|Wz϶q3ɀfk^4!ZÈ0\lQP&Zo8@xIܰlut,bjo™Z?yx&b~ B s;K{%"'uEG07B^0Fv\,XqOK"('~<^(1i;F'bc؇(`!wba*Uى؎qP%4tX貙XPh@զr[I|+_NV{!^̜A$*\'ueqe; +5˴HzQ"䥄;t]nM7_T9?E5'b{YwK6|ǝW-*qaJ]C( Qr$dsh#&$FϯcwF$yL^7嬖Fg$ .FR}G.43-dCtYf}sZS>veb>C[#:f%b\>)jy+"K ф=0{GR߃fiC${S `wX.V:7tIMTZ狜m++j\X\/eG ma[.c(ߖXwAFGcW 46P/ZbF(' +# wX9Zaf+%9`zHY̺̣{.;U-W\!?}kohm;:i[.QQb!5%sm@Ywl9>̔lO8\թ֍٠c7!qxsx:ƻfp2wN$@\?ws.>ixzcн Gвmqm짾8SJgw3kGHb݆V=f}H?!xLI*6~H$P=%`l 1A-ѹtUm+Nbղkrd")>of;]N@\eJc]*I?^Zꀃ W™/ UNx(j-YC"H){zz_JQ_Ź^i9[l6Ɵk7 ( 7»zfa- 3b@G+'袿;}7f(ϩ"Rj[fTĖ3 +:&l*Iy"nJ3V\PYY[BVjS u |U T~9YNaR۵Z*f6{EA:gI+\i\|k:bhRi*NT^v\')zsJSn +ՕgSW7ALJ5Da69ZڇY/ٓn-Gwʅ!ipycjZ[`M rbrbEԉ!9qXqhI**↠ 0bJUr2LVö¦RGZ2ˡM#x3`O4e;h#$0FrK9UnuA5լ\6$8 }GG%ޡ *RogereMCЄ'u r8!r5K`ta}[2HoօI] Mj0NH1˂Z· ꠕS{Z_J+MdNb iZ`X!Ѷawz5կłB%J2g%9H(]S*bTE۽$a>5@Q !l4r|ҎY9Q]o}FZ r;=='3IJ5]]lGg㹴 +\L uZ1i̪Z?F5G$=_ufh?9m%+w >iţqmx`Z<_DUx U('VLȑ(ŭ/]Ȣ9EvhQw =߰_:Qp|y/|w4>3OݥYng~ԟ7/{pFbhԻۍՠ6?s+ +endstream endobj 2149 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2150 0 obj <> endobj 2151 0 obj <> endobj 2152 0 obj <> endobj 2153 0 obj <> endobj 2154 0 obj <> endobj 2155 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2156 0 obj <>stream +hޤ[K9ׯcBA `9LOs,Y9wH,{g]ԛH1nxwo]& ~<ecnirexJs& {]pe fE\ 9x.B\a n2@-P AivTٔ +WbM 9QYĬE>~Z f㒲VОp9bEBkֹJsf:8IװWWO>%8ihgʘkG? |A8v-8܊j"q<&JX27C742. 7<4{'bFU3Wa9J#Crkc(%SW~/;"e\[ް@D!c*Or"Y3~6¿a[;Z c D >Wc( nXDJ:Uw׬,轚ufg6Ȳ& .1GzvnsV4[d2M/9B3Y'3߆|GtJ\H% +`C> LoFdDID[ KH \Qx3GUX +\̰Dos!Jܥ7L2ˮ>ɰ3bD6^u&3k(itw:/^v'62:5J^c je܅W20Zwܫ9{>R6΀xa[ VPq-IgQͩZi `lLxbeь%DAC +`dQu7 Zns~$ | JoW$heyԖWv y1b'}fUys X{@rƕ*x*;kSzDZ≷*10 ؙ698;i@VT͸TKQMGG#oV^iFYg!\PF⠢vjDєbXꑊ*khS',E5"̔Wca-dR[8"efasiV-eY,UYM-ufZ- ig9vpo*Efl4[TWʾU1jym8޵/.RdYi)J BUKRQV!A,p ݆"J+HlNGxbiu{{,ʃhA6Z=-[=6Cjt48 -Q.5S?o?|yem=?}zXOm?ᡷF)| +[0R}\G5Y)P˒ ݺm9UKem+jX4-!-r(!sbZڳ{+FqMҰL#YMe"7'Ƶ5cޠ>+<&ZmgxH󢢲#苰6<$> f{yqF 5}f-)6c~aJ6 $pon RHM}̽*bk'UJ踟u +&PE_',rExkr-W+NRHkdܤDUcIx:%#(F5a;bVbbnmUqH\6_0cdSb=qNܼ4K>t4*B.6.b Y@󦫟{0oi#|MC\:>8֯ RͰk6Dw +4:Le`ez?1[ZMl[rW߭V%FbV[8t.x4(vBP֎cvҽ0 ѥҩAzGúŏE[2|f>4{Seen9@ s޼-3Ӻ($W-iJsyJiJ]W! ぞMn,$y k(UEp% +$\*9-[f^܇Ed[Z_1g:7uenQGSQ>1?c՗ +dR~cSw,A-zgYhPW#9 +.Pr\k$cm]x6O$wvwQ]b9M0G2Km:aS1x2>e.ӰZl-k#i,h&>)o%Dz˓&m=o_c6@S֪O7B)$ oL)_̧Ğƞͧ|۶*7=cwMp6`[Ea{ZEǞa% +H#,45{Nޱ:W׺=bKWiǰv7ӂlӯjʞ΅h >D?W(vsVqvKltwx-x6dSR0՛=OOh sJ7?z#{yw-|zEDpT3FOƝVX^ y;јg; m_\[TE[_ЯNyZy֓O1# +endstream endobj 2157 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2158 0 obj <> endobj 2159 0 obj <> endobj 2160 0 obj <> endobj 2161 0 obj <> endobj 2162 0 obj <> endobj 2163 0 obj <> endobj 2164 0 obj <> endobj 2165 0 obj <> endobj 2166 0 obj <> endobj 2167 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2168 0 obj <>stream +h[Io\W0<wlb 9"SSk/áD9@fz.o>^|su-vkM%ե%br,o.Vc,Pc7&:6&*{z mրh#?zb.oqMqMZ.hH#-m ~.`->lYVkreyq;lsnjgX! +SDQScrNeW4IFmonhܣ9ۉ˶*iñpx,nnPZRWuŷ}iyK[ͷ//~qohM@6?-AJ+0ָe/%l_.^ۗ?<}wqy_GjjijMZ>a p``ey9`3kaA^ʞʞn1Jy`c bhW#t. NV Xj + rT6uq0M9=ZCiea˚Bm5>`9֮gYMTv]X h:8wZ]}5!`-x7hFy +xx^ZtoHo\J{S ʎGOvk5q`KF\ ;)Bz\x<b)PC-HP,rJcl ^"- xr+Bw0fpf+HZbnt&\my4rʙˎ[jkF‚ M"ڇH _}i_->6mz}ζ,zi㢲GǑ{*$(xHA9Q֚ F 84 ES3H|82[%a9hp,,sXdKVJ`V&:>VЫ ~vz2|ƅRHcµm>mg?,Rguf{OSD*LJXG:`kSnqK# m{wLt,'E<5jRU}Z-w} bЬ CT`XѼDa/:ǎf_E`kуWрm'b.Avr|hAvVQۛ?I/lI;Xurw?Wل!.۴-5j77]^40u^fCeQ(e@']]`nvq6wإ +;ު3% lǐT[o[B, -فH/(P;@ }蝦 ښ8΃ph{:-I'KN9|ZdvOBP%g;t[@E)5xd;P؝xvOn $)ਃK\aCpH!ʁ71MKd:::B`En C]:푭e]_KDu;5ϗ햿ql %buBL-W5+I-88o;BǮQHs;AmPGJ=ٺ.~t'LWs{: l}w9:RO<px;zIJC>Tcо lD:&͠;I=LG۳ #3S`=yTF1ޟ1:gsO;y ! ^c_mYi҃04P_M% ju \L8 C vxFzA^p!] FOן~qmqE|]㌕"_" {:#f;'h4 K }.p_dqAd1lAŖ97lNW}pib-\E!;+rkv?it}V,'eb&q g)o.؛XgO߬_ { ܢO¶BtAN`Ae)^=v8Bxd_.vhd& +J PeO >¹zXeA;u+-#{(tXɎԍZhF2_zv|809 0 W"mqpOcBf_1zk,-;XWID"crH:>̎E}D@/*:T"f9I3f,2W :j6,VP$Me0 }qXFs d\Vk.!:YЊ7;3_$t{GJD0( jѣɊp&tK<ΐƚدaEB$ 0 rR7 |(M) :[VjWf6/qo[{;8i~~>>t.8!_=g'r8iZ{rS6ASX-0Nc_~$&FoqFԎlB4`3j3G.Sr>SSv/-gޫT?qr +cNco+ׄrn uB&: 8a0'{w/-{CC6"b{]Mb7r&V?0^08Uũ*hF!^9eI?Z皐ښB,otƻkׂ4'㜾@i۳RX-+iz<'7}}6r0^̷Ͻ>wss7I` k]urgI1Q\O1_1fs{͒qכl_ z4o q͐=Շ/N#o}I>f}9o&i+f&H=V;W>ne2Z-08Iӟ~ +=`^`5PАߨ͇sal,}4e@_ ;?OsjÏSz +0uk +endstream endobj 2169 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2170 0 obj <> endobj 2171 0 obj <> endobj 2172 0 obj <> endobj 2173 0 obj <> endobj 2174 0 obj <> endobj 2175 0 obj <> endobj 2176 0 obj <> endobj 2177 0 obj <> endobj 2178 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2179 0 obj <>stream +h[K9rcJ%"h 65݂hW}OwD feidޓ!*I&x||1/w{h&3=ܕie11Ne_nߝe1ez@׻eq œZMNXcg=/2xa >u,O "Džm)l])e}*%O^sv.v8'52? 2O4KarTaH3ǿ>񺒙U'a_&f`,MO?>oMYShDԑ'~!PlSkcx7~~=緟^?}.gx_tK qܧ%N_.0p2z32HH#xwHvvԶ O:%hy~a?ty6>DKNHN؎ݱl/l҆&l'Xɘ9Yͳ58 8J-( v 3ezA0 At C \ӌ|Ý-. ^ +mK~hJPrwfY.풝fܷHA39ۚ(-xF: "oh qGЊZ)VXl5 +'iBʍ sHrքӑXN +T۶>_fSd9Dbp\ MeNgʜ_ )o K=yf)ʧ$񠚨 sIL_17Upv /BhB MLRCö+vCWt+6sVZh0is-.E9" +U/|RxX0nߒ)lQmϻ?Nat~aAdOt謃f^pXK^!B 7B.6}rDi\]XdD7+E8#w/9T[ilp[ab׺(_p +E$F!JKBw*;cu: #J)Mj98u6O˦)RI< ݡIf #xʛv kћ:坍[* +Ħu("H8 b@Du%4A՟A~=$&6nC[~JU$%4{E3E_Q""7Z*&{)vy7u<9E֑uoi6sSI=*ve2 ͦhg) sbbY*[6؂Yҷւvq(uN1n)x|{VyiFs}sZJrڸ:UmBme^H{;1_!k> 6 S% 8e'R{E[q]sF\8?wI $hc_̫%b M ]J(J,ve`Dra@wj+dLn'\PpL'&:<PHU\D7Zɑb~wsUs`LZ*Fǚ?kӽvy!͋N!6=MlƉn hαe/ +#9 VX ( <҅sAƎ0 5<ʱQ4<+tE*֎x<+pXyvllУ3lfy"DJ;B=]+Gh<(Ol $cxĬ"NT[Бۣ#GGf"#U H~Hpf^!Bmfw r+"Ch֑?FLxzcNfKgI*i!a^ fOZDEdRzGb8Ĵj+J*Qd4EH|C4vv^#V$RҡB+hNnSǤըbDfHХ4̎<^=U/m5GncyjHȪU v@DG+SiaG:?u'#?긍:F BoyIdYt9 7Kw +``άz3 +WgW(aPPd± +GNoˬ[IdځUAC[mM mjvacIePߓ])׵HA + ;VWS+tOD_뚻\Qk)i€4,>(gh݈k]C[ݤaЊ8Oq7Oh-Q/]7ϼmVL?z +NJ4J W/b%Mo#+xx^ô[Pl@Z5(c9U ^xEa$cL"ODei0b.ɓ}~Qrkb9gi +bx?--u7%V2ua<";ZkY͟񞏜8 vTk^ാtJzPtN I~Kn +uNC-/,|kÙ)5s<66C,F3ɬQ}2qt+L}O8oN_\55sb&4 1c{vXud~z3")v~ no%_ !Q%e)=Y_:rT4ܽuz*$I,A']q''|WQ 90LO/":s̈6͒+šxI+0N9H $IR$)_ =ySGu2/غ@H7p<26:^1i: +l+ȫy0IC-L$:} z&nS&^'<"uܿ_2Qjz΄qNrx%T joXp`oސ >]]mܥeL-R'e4k` бp<0ye8U6Kp W8ݙe8wՍc$+<ݐH `^ +r +&93`n=潮CӁLK|~+ 5cwAH}6j I\l7Nz=ͨ] Wh#RZ=ϚDr-8TC0uu°Qj!f% -יOh1ih$k- ߽$H-ن>)G8${`^Rf=f3^g¬#栔KbGLXıʃ~I#KvʊĤ*v9w(w^Y|+\VY.Q%W(R>j9OE,_ciִTiQ67.nFw.= ]ԩ‡o;gkNzn(hQF#q':hѲZ0i[t +'{JU n0u!̞^gRRG:u7-o@|ױ}<:l$J5e,^ JTк_[?r:Coa396NUW#!+Sr`q(1VE.ꇉ,f8Z]o!3[?2?^?zۧ_?O?e&he朊>bױXaPHr3Opn2RW)*{xᬭm2I^fR'uZ6D&3%6{Mpq\7Wvj>&k +aI>97|Ҋ6-f,Dٗ].Uy)!,C??x"]Уah劉xg7|zӗ~?tq˖AUG$F&}zi*J|臃FTNx thTӵQu9,IA2xY7 6ƂudF!!­U]J҅=𜚋;*Iܥ J_oKr ]Bդw~Ju J`TqvR3u?YCP!}pd>xC!h>$هCpl2N);5wJ`P`gH6_y%1AgsJP;|x ӆ +endstream endobj 2180 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2181 0 obj <> endobj 2182 0 obj <> endobj 2183 0 obj <> endobj 2184 0 obj <> endobj 2185 0 obj <> endobj 2186 0 obj <> endobj 2187 0 obj <> endobj 2188 0 obj <> endobj 2189 0 obj <> endobj 2190 0 obj <> endobj 2191 0 obj <> endobj 2192 0 obj <> endobj 2193 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2194 0 obj <>stream +h[[I~_я6;u~$B vHqVLvfm&usT/W^_6_1A?z q4aэ6);\^ᇫQ) \iJy;\WP A5EDz{jcM-?<{}Gw3@jԡ!9= }6Rfh0ܯ^?\Uvd +PzQ6-5 }v +D')[*[*Q{/危ml#ܨ'.FPgF Xj rTΗ9XV8cvaNcpVmgT6`X xJ Fqf fL4A6aP)H*LL5H,m +5˲g LFcɣ$iB'߽* +_@F?D2-FdD& +6gm->SMѦ1Sxp|qB1{xca3R8 z ԪGDn-X¼/U/ۧf(3sYp1I`z B 'K/x ]nؽI%KP +X'8ĢBdP0T +L\zK`xр;ߊpE +ߘmwe0`iKq`L*@EĞT(@zEۦ}YK|u=Q%X!CoY(j/LBT#H52ʼNEndiKUE(TeV0Z\&в}|gHwHv|mf3~ژ{;ߑ6)oӓ~ ZnQ68%@)*gllc3-;]@<̀&t݄ㅸ1ԑ'nt@VI綺mo…X}u:11H32_#yƧu:3PUmUVQY 2 [$~3mOT":S&C4_M؍D̍č@;]Lۈ*>!vĵ (^?Qέ+Xͨ}}o9K%xW>0,jyĤ - Zpl[ʢڒ-I1؂<5gT@{Mݞz_ޱX-=[*DkD_ڮ_<,5#;5>=L;?kv+Mg0@oǼi&jL4YsjiS;g4X0yWd s\6XXu?o>ʄF0+o֖s&ox=cޛ?qG~>ǤRJF} d'[oCL;.lF.іrqpƨU8,1E)o//LGjn2? +}*ʱ7Ew{nMĞx3^҂9XYV~4qmQȪDV΋ҿ-N!%'OQҪ=,AG&$rfo.[h(?wt(0cvo"-'x>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2196 0 obj <> endobj 2197 0 obj <> endobj 2198 0 obj <> endobj 2199 0 obj <> endobj 2200 0 obj <> endobj 2201 0 obj <> endobj 2202 0 obj <> endobj 2203 0 obj <> endobj 2204 0 obj <> endobj 2205 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2206 0 obj <>stream +h[[u~_яY`JI!Yɒ+{UJk u?~O7ys'??޴6RR\?ܸǛo J_o~;39x z[`QHP΍~9| > [sC8r .8ȂVxe5qeϸ\z̳W]+ 0 rl&fR*rzz݇{+sw7t +?~[kӜjk|x#[zvn/eCw؝w^ AQliy.YjLJ ﰫWsuyISX/3}_7x B1۷7Oѻ;ᅴ>.@jt_O/9}~z˧2>gג''OSksi:>7D0=I9R9R9>g)B,k7Xfx~٧{ +Û\\"Or: 0]1#beᗹfo`Vm~9B#& +a jqa.HXf]h-B7izt5k<Oӌ|AN)#~O-O(9@8d ݖ8V8k RB8 X +fq7DBFx "#q#(OZRq_,{ܰz)i,IՊм}i)Kӑ'F#C\p)N̾U+R"}{Ll&@z7W3mwһI`N5O*yyb)R5$T5anUǠkzC5؏Ypv -#ĶQgz#qR^JJґ`v+snUZæ"- ++7>)-j-& G@**6opG3Vݤs'D^Ԥ"L-{ݨ67.vb;,y㻼/ӠyC N[-t./xt/B < Mҭak:/%US  (rD c0Ra 75m؇ޣolv'rm/BD{[8:f G؏L +-L ir"x`?o[R A`;,Z=z(űXjP(($KC+첆JЭS`HlgF(fEcyҵ+G-Z^Bкi"4_;wIĺdQ +04:g07,*̭tĐd$*@bM0!OPc~Hͯ+$}-HFE'b#/ oh.93Qbw+ +wui'M%;^+|khwCԱm.m e> ciɹ;eƨOsݩ u4F%)a7ƅt^i++~( m{sW02"fʺ.M/HK"$6݅_6pD` eZF?fQܬR) +%յUm-tgǩyZx%&$ɁѠÖMy?WA5gE^8P,}1+u0F!OO*5ԔL#l~܉⼂aX*nzGK 9YcYcOVIR'4.Gbi SƇa~LL~0i< 2_on篻?Mߝ?A RΣ<((z!3Ƥ]\nW3?- +X,Q)ƭeiANצ T[yƐ _Wzwav=m0]?vg=C6=@g,vo뮓FknZF".tG:!2DHv)uX:e玥,l/JohBHk H;0w@ۧ0/;7\oUEtWnWu?YnFAP/p❑r`ރ_GCdS1Z0H=" &† l0wz:+y+YtQ95r8Zd80sdUUplC!'jޙMi̻EqoOK>*S~ZfYE :qT7$i4נ Vk{VDԅqیܦk dy<-©of; + EZEyL)~K ?_aV'=."b7.Bz my-NRg5vB0a3pu-#*ۆ7^ޫS"U-;6^r/;~Ze?/Yk\+L&4gq*1/4YST* ~)=m!kdWebx ySF{"pm- wՑ_</AWna˽Lu<+;udvb% Lu2ylëNB\H~54!?< +%2t63]jޞ<Z7R@r Ux8q!6#mu+h:/-ze2̭(zxqw?Alp_^tkk\\cқ.4b4}=okbZ|9D|#L(97wqxb'3gnez3?ӖBѓMlMܞXSniIyZDq|XXUⱬ-5K4~zR6wg V&h:n$p#;u{|vŒ1= .C-Ժ ~wizteF+UnFhX)L[ۓ78E! "5ۖ|;{jRkv:4WOCO:җCwbn3M%?( K mt%G|::A }>4`p^5 +endstream endobj 2207 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2208 0 obj <> endobj 2209 0 obj <> endobj 2210 0 obj <> endobj 2211 0 obj <> endobj 2212 0 obj <> endobj 2213 0 obj <> endobj 2214 0 obj <> endobj 2215 0 obj <> endobj 2216 0 obj <> endobj 2217 0 obj <> endobj 2218 0 obj <> endobj 2219 0 obj <> endobj 2220 0 obj <> endobj 2221 0 obj <> endobj 2222 0 obj <> endobj 2223 0 obj <> endobj 2224 0 obj <> endobj 2225 0 obj <> endobj 2226 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2227 0 obj <>stream +h[YoIr~篨ncTyV֠C.g5fŠ%?qQݔd A;"2⋈7t/xsue;]\LK{qK/E?  +3>]!XQ?w,wQÞWzmØ`-WoqNpN.povz$|R.`FxM~=/n.dg\'3Q)"䘆{I1게%Ѳ6j\:pɤloڵ]a N\6aXm{꼿R SS>&`qgBo,7xqx|xLߡm'QF&w_M SmVC/޼;_n;^>=>_n ~s7=?{#Ya`a0"n +`0XIQQ&)o=,lOnd -u/0/}IQߖ}1䋅1)7炡9_ { 促W@GxCz[o+ħ)t(;A0 Rrq؈AqtVPCXn<(+HP)&A)*cU`}f7a5d*$ďA]) #y}8e˵K7ӈ!Ah;"5_ >dқM:8B0i6t*{bRj7d'~  8TE @| 8GT73SCòa[Xƞ+TBRN#,PS-feŭJkؔEd9>l|vN(|,utpo^Js:+:|%RQ!'*D>VO\~K/rJ ?\Y1Wv=ImI'/$TzzUD9>qF~OϳuAG1^b +4u&R/wo_/E8@߽"E>/-Keז3 +~^6MDB5{TC}vA;]fX\_b8WއYSY}mYqHuHKHfF ~IGбMS +91΃>$zG=ۋ6X= TV!q)V%Y4t5бKŸ_e0U=# LhY1hOrrOu!T +rѰeY ԺEd m\ЊK5m##:DnN? +vxƌ }Uws9 l!T3PH?$e72)g>KMgN!nsn^6'LPj$'6i%w(9u`'mKh=bQD*ϨnD/I풌jNR*_?-9C+(R+LIpq 3NMk)]qws(c +2PH:>>"/M` N=ԚgY%ئ(+6l<X5ls\D$5&IFEcrU 5~LԸ-.j[EY/;U%$g[S !)FQg%ql5n3nw^a;]86uyY,Y@e"%N'FXuJ$Mrf4f\bG&¼0'#Mou/V2͢U=rU %Co~+L?f5?//$Tm|eS^Pb 'PP  0=DG]ϴ/PdWHS$@bmu@Y 4 SDN{ Ơa,=UwHO #=9 +j|^lM y[Op⩘B/O~q eS9Wk/گ7[`/~uNkG!Q7ZL+/0H=8G` {8u:W%4`NW +Q2&KU6Aj95/vg05۰B_eDXQc7&.*ؑ{I#hSKVLA{zs89)3RjW/'m|欄7 MP,ݶX0.L긙vhS)'!.Inܕtm/~`q8w֜k08lQ8A +t{ +XZM[Fl?hqC-!/eoRO19wqX=3"IA\k*FIX10xQ$9 +]^)-?s˝7}ʑڗ|&$7sN^n `%^0|6E2 Q%fUnbIQ7Z3cwm'%&MfwNFCj03POnb,eyT$`b,S$!S?\`I<|3j( 2۰^ ""zwQ\"NoxzJF;B2^2Cq+W+m{w'$}g/c 8r\ǁ aEd]&czN+1.e5; +k{^M 0#bR*j%BPA+a-qUHnzilϲZ2;(JkYO&a= mIWsR7㜄UYaU w8/-P mK֪Tu8e,yui=*ȷ",ZcK? t= ~a=|IejrP5ra<IDe3*mH\eE\kcqr2Ěɵ~zr ATδǗ70:%B0ϧ.g\www[ix\c˷>=*zy8wN{[|!i -_H|-!rںVfV rd_ +?HᚖW0n#N7տ+aitZw)yn~u㽭,|7;Ew7@{\ ;QHzl0Z*?*^VEϙk+W?W-|7N㌁ge;h:(ҚOnzqgjyq:;i_nfO_&g_u}ڢ|~Go-8<uߎR PK`1vt +1Î~#H;iDTYQ^ x_wz8'23^LXtѻ|6ՓTup̏\@E -_9U3Hn1/X~wWx_aہTI 7\*AxzBP s}#ͽij]95 ۤ >x-È+в<7E +endstream endobj 2228 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2229 0 obj <> endobj 2230 0 obj <> endobj 2231 0 obj <> endobj 2232 0 obj <> endobj 2233 0 obj <> endobj 2234 0 obj <> endobj 2235 0 obj <> endobj 2236 0 obj <> endobj 2237 0 obj <> endobj 2238 0 obj <> endobj 2239 0 obj <> endobj 2240 0 obj <> endobj 2241 0 obj <> endobj 2242 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2243 0 obj <>stream +h[Y#Ǒ~_QaTUi2|J ۀ0Hv}li7,3;2/#So۽՛kjzo\&nM J_~>_͛U4j퀥Grl)Z3bϰ&/K=V{,_?Ezk$Rs0~` iD^ +4Oeka/pue$ @M^"%$7`,w(l 2 J@hйh//{wv OxwgH\Q:8P#(N6C럯|=owMwp0wϩ?M?KOvvoq4irꇫMb{){*{*;ccy}R0`1v{<͙>951s<-X߬!5rxN3l02Ia,5>Cr5`MTvӪ$-p :7QDI 34-x7hFv +'BI쿇OGB~'?$1v9=u+fY.8F(DRŠ"Fː@5>DjA- 2nMddsS<eۃ5 y" {J)!RA{H]ʋQP\vܚﮌ3t9'b}ip&cMζD=YfjFZ~ZM DK0c:p}"1 #XV\wؓzG[$oY8{*{Oeяm)2TCVWJnl#LuU D*gada_#),EԈ˟-AAXp( 20BLI~WD0IJA4cՀo/| .~+`(5q݆q; ҥ6c0#JjpY+m' {hNmMDaWl-[a͎! p]g.'8|8 ђX E`Ǹ ڰyhD"՞:-CUt@|z+,YlVDm["|d%{ꆛYnV0^Ŕk&jo@! gK\zاFWP1E}d m]^e-";+űT(b&uP24=b͢Bl +AN(ňsd/R'"f43nQ[Zt6V}DHUOJ˨sm+I֢.0SUї߫-:< E)E&:1fgm};Kk0rgS쑎X4(*:P=k8[V9:T.c2~]$\@~̰%a GM.ELoO`'j症v~ \jU-<;a@RJ:ؒȈg$3ԘASE +P{iA5Ĥ.F[m0m(ctut"A N`=H9g/]f7!<:+Ë'Q o{AG\nOA ۊr#MN#爍ǚi#B^X%Vī4`N<]P,D%fjWNtai p IdF)T.WgW}_uFCa+$R\jBN#oiWcU;[HvPZ˼ds-6O1Reh0+έұFE-o0ăӦs=k@3af;ET !qe$$18Ibf޲/qb<u]P+V\LcA\U@-;`%ݘfHܷ(OeQ{-}jg5^i܍wg|VQ`Ʉ6nk¾ A&ة Q\Hr4j4AX9(WOmy(p PP~5v-!7KVOn F-<7Ikf0=r!.<6j`8 +|oqy*A,؟YbLT#9h0 K99Դu.1`Р$ aM9cc紧V[' r +ͳMsv0Qޒ9 F831%PXjϠoM d9CzsVq2LJ  +g;?3{P*J~2G[ݬrɱ~QCO`T51b&_rr1`Es|ɧpecuQ=|AhJh(8K6KP(S.#wiؖ[]3Deo80 b ;<6٬& #g% uoAʶIͫ}Ԣt΋vuWH3L_!1Zi||kyNC35qOb>عǿt(҈&<0#!x>*qE:Po6?Mz{}n,SVmfib<I2ϰsqMDcO,~t.W9&/S7=b /fq(;8-a\az{|3@aq|6N9ϒd\zΆSw8}ZӖ|nL')xPS8Bg*CfƩէom|Y]%ZgMIN_:a3Huğ +9ݼ&OL,z3aٻTH'u]&] |r,W{o Μ_Vs"rZAh({lddk؈UMY 7;ˇfgy;3T,vfŀ_ho6[[WYa +endstream endobj 2244 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2245 0 obj <> endobj 2246 0 obj <> endobj 2247 0 obj <> endobj 2248 0 obj <> endobj 2249 0 obj <> endobj 2250 0 obj <> endobj 2251 0 obj <> endobj 2252 0 obj <> endobj 2253 0 obj <> endobj 2254 0 obj <> endobj 2255 0 obj <> endobj 2256 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2257 0 obj <>stream +h[Iɕׯ#k2՚mIU5.I yk,,I3\f DǛݼn\?l㔒]^tf~@_o~<,s,g T(c?prƱ}=r7> {tפ6hMOv)l])e}*%O77r2nmL#Da92{#)nx>kRKg.pڻ|"lDe88? 7f/qS.sɄX^)ao'h2#umzN{)a3NOϏ~c.R!?f +I6;jeOĚIʎʎv6!Hyoac%?/'ЮLg#K4j`]0Q?}9X^"p&s-KU ɭ 7fN?lMUb@C8¹lL&(6kü^0zs\0T3ͨlOw#|Cz[oW#|@Pvwh;%L Rvq؈A19+E(;;O,J:74x`RJ]x,W4<;58V<$M~! +:.G6p9 +e˭Knf6%!aAHK$H _]_ >TқM:}J~ ,Z GZ'D]K[0T2 6]L/H̰[)0O ^OTca;{nt/,C*P2qQ7ѦP|GHc) 'Ǝ?o~E /}8R(K&)GGwtvCɑc=]€ h oF9Nq>zZ=4~sv%iߠUmWЄ%0s!?E,!ucxfn1e|+r>=h"92SG USM4> k6aSsNTT^F~h&Š y^/>LW Cݭb wA_HE_L@ǁ6W&4jTqmQ~̖#%>cAD,eت]1s2N^ X&a0E#~w][iC_ݺ} UjRZ +=EvMNXxK$(:jYu1M3CGD^DÖ ~PRЭgiv9ujga&[XTY2ӑBPcT*:Dϋ!rd^ܾź*xAeU:Lb&Z'{#!c&nUw,!ioPMmϲPK=E)Fp*H(Xy+*V i`TGíT>i:.}-+q%m@M'+8|qy$*\9byuz#:1USd OtDG8mIbjPV\Ԩ~ ]so8m͵f yksv 6QS^bn4eA7t8#u26+ x2abHAk;@D8G=8LuQnLJ5ٺ,L8 +0X 4Vv-̼| bn#lEԿYK"0DNh; +6EEA#f\]Qhf+nḘ̑E:|f!Áx*&pٺ[嵏T E E+.ä/u+::YDeE,9I!V0Gڄ,T=>Ds[02 t8ݮCgVC#ˀ~-AL-Nukis 24S-1plteqRgD}ɑ>64n l[T+?e ۛ&vN?@cGTcO$f_'KM SD0YaOZ^P#Zjm-n?aœzڭ@=ȣ)$lqy,ڍiD(,e?z.;ǎURbge^䠈9%_Lոϊ.@&.@m +䂑Wģ6M}7 1EQBZ1?u34+*RF^&!Ki޷D2 v]eOY8S%U ={@qp5meضp̯Vdi"ԼMP$׺\:0RY3a )Pf2E.Ts+1v^u-1xii-a͛=+xFPnS@P6Wm*$`ldpy)-\[Lv(<^y(wbU搉 +,j +Ë,L'!WY{V_!3Ά*D~@OJ-{+nz@g)twǍӀLjCܥPZr3w q Us+bsB$ͨ V$b#<ⲊVv=mL"!}o#B<`1{apQ(K OV$Lew[+dsLCО @/?>F(wv?nw&,5jan[9c:{%j.>~ޝ[w$IIFKeW+ p}WC5y2+cW^J×PCCJ8hU^ _Pj3n8+* XRE.Leқ$)t%XoPl:)iV $JSQ@} ^hGDqc`^uP cl')9(ao5<`i#e>mZX%o8HgN56A`:C%]%LpP+&Қ%m7҂5ksEViF3DKiJh%16v8l=p'ݞbk5=bd K-"n(jVɰJS>u +SFFlMuYa"aS6*V3/AC>Q8:Lj<\۶a5_ѮRUE'knz.HkxY?hewju__:OxLD1$ B]0E221āKWJN(դ%@kC@,v'ߚL`ӇgU>p5(sT@36xw:FKNG𒿪A4]ib}ݥa$/"82ktGN^f7_ܗatrZ&b1#kF\R10F|8(IH*=^Bpnz[Nl= :s>>_>MS?FpOӯ?o7u N $İ ʥ{P+ +" EEE٦IꃝcGkrs@wV 4 yE$a``OvMAbUM8AyȠX =÷h(I}rs@kl DԊo]Xa㽪(C$FcK4xq@h v8>"l ! 3H=#$_u@) &ΰΰ8? +u?=̕z_o0[0-n_SLmoe.$zy%!vKgӛpb2TAsEIyW4=l͗8z7A>Ώ}4!~QZIJkh?inݼ?^`UcI'z! գ6q͋\/Љ'=kԘ;<h決{lrI~е/_JnKՕ)y0yC,D`MXwޡpכ[sPkExk܃SV'A: _2/]c ߫?A2ՐP7w7xLN9ȏQ#+^e<pз1&xϝ sCki e_ ) +endstream endobj 2258 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2259 0 obj <> endobj 2260 0 obj <> endobj 2261 0 obj <> endobj 2262 0 obj <> endobj 2263 0 obj <> endobj 2264 0 obj <> endobj 2265 0 obj <> endobj 2266 0 obj <> endobj 2267 0 obj <> endobj 2268 0 obj <> endobj 2269 0 obj <> endobj 2270 0 obj <> endobj 2271 0 obj <> endobj 2272 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2273 0 obj <>stream +h[Io#GWjY{F˞ Ѐ=,-66?}IJ庹Q(Gx>>_͍pswU 2KRz,;lo`taL;ُ [<\'?p0PkXj۫+9òcv?thpnѭyYiJ_HO0]IcLUǼPBTHW-6tWz?ý .@XZ7_>~~ tSMȭ Og9C8VJ zOn_OsNpqc|ӻ1WBNOcq iG>k(P4; :ϣ){5p Hߢ!5y΀328[Fy̱Z j\x[sT.ЪnZ`1 nN F njdm&~"ya4pWc\pT3(ɧ+@GW#|=4 Lgk{tKRB ]\ݎ!ҍ!;e<R)]x,\% +$+B [ò)s*VAg]<ʋEBpskR~]-HWq J0WǔOFyWH?LKq ?6k4@ŜDxM'7CADnjALwkK.*T5cp|(*@e1Ծf*P7~=wDXt*P6X+7Df +K />}ۿG4>JdSUCOl gBP]h!Ojih,l`E=Jڌ-7-[1GAr D XHnF'ƓkfJPU CR9u]""ށSv|4`BgM7<P|v+v"BK@T UTTr@}r-z$P5΄" H.9UhC gI8tDOW΃:T.Cg_''!^-a huQH]%c=v9dj_IfCR6Cq?yRzG)/#mbY#PLoiuF[!HFr۸u o{hqBwUO\y蘅=DúeoD[N HsJw@ǰ +oufڧZ:-+ksg^7 "ɑgnჟ1x4-Ԥ *H ~J tWa2fE2"Fj~>DDF/" )bHLYmjsNuDzN<Nj\p+o8\׉gFY6Pm%-憚ފYHkNiɴ=خІTeD7`E@B]K hBEaN(8TRJmVo%cX1UtĤMqۡl c7G¨:9 +54mɬ>w,iіO&n9WVg@[@LKM}i:s RMUX&kV/e;W^hod+ )y߰qoetc1GUO|њfp2U)u6Сp `]eb'Kjf|e:K_U+bgN{𽬜 Ovl.,ӕrfr£0c4y?i@܃N}WH28 +S =QsdPMM/DvKO cf> OEzaK?ow۴!hŝ* zg=Z#5 AiHA?bLDhЭx%oVj삘fl +q@fy9tFWtJU)hH2%...M +Ox)[HRYFKj|y A2؈GJn\}@e}Y l)I#ZO+k!n [+:R|Z?׀og:_wç*a/ t!âF!a:=N d=db J /C5Ǫc@qpw =XC*!>bvD_OA)nEɟaH8t_ܜo-oD}PywπwuHR/J9T"sɫb`{s.ݥ.5/YHwkANBoFvʗyV{6 D <+ 3&R^b < 3f4s9-ȫ|7H=v&NSĬw_M/u=qԾ(۠g* d^^ e^I(+g9OrͤYZꝉiɱ+MDn5m,EWE)A5Z*RWx1%ƼF~KŴEHe|v/E:˯1Vӌq,#W>zU*5'linGx=Π8[Z;itȑ>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2275 0 obj <> endobj 2276 0 obj <> endobj 2277 0 obj <> endobj 2278 0 obj <> endobj 2279 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2280 0 obj <>stream +h;nɕw~EILe@V m>Y$H-XWYY *ou/_~wOn{Z5O />O9%Lw闫yY4Nиջò, +iN_~lg_p6wWUsL]~3C3ī]8&Z`oWVxw7_Tia]ie]J^py8 P"ucdh"(^E6 {dnaU vu|as+򰽯 :uqP<4;ϏO~[^ֽd["+PFn`5~?ߞ~O_??Ma7o=/ktX<}9BM%tHif @@m?}b +Tu::u~^RO΁ű!=yπ;2ZV:Z`Nm=.[ej{M<90ċK=;> pRiWmz7jVٯ6yNt=|u>zJwӚ&2 뒦R qЈA/Mh!N\wP + Th!$heGR +v ފt,I,ք a jsM:Mx !i( =fn鷫Y D_2>Nj}u dw]})~ jۦIi##":M$D^" e4adHtL?i!OSc:?Pmy0}+UY*ZhA@˯=yD8ڄ]O@B ++wovw[LIGH"ų7)p_|P_鎎t[6T vX5BZ$ +,.#49hIСޮ=O45Cf׬{ Bn[T +\[9d@p'v$Yױ`0vH'Yyo15ǙCuK e[AZ LRSh9dyd*0QGŊp }އr"")uQ@;mUd˪i{7㜊 DؼnU_|}Aʸtfwϟ>L7x +o;+ SL-??ק?}?`&<XOi`w{25n @Re~abBjFY j4 +]v-é2RЇ[*()dIJy %b!Q ntw'7ϲKl>: } +I{ign: ˆVo~XȲ"rݽIp}q!!𽈵s|Ua Xj@mnt`l&JEUa`=gByb܍+Qd]'h^ٰpD/$sNAGyc1wފnVbM,yGXI D'xQ54wW(O:S;rBU>h3ڵL2K߻i#~Aܦ&vLl,yaFDҪ-S٠CoZլK65Y4dVM6>l5L$"&;M#J2kЭy-}Lde+R\L[ #\]ב)MqahȰ2v,t(ێ{=*n zg=;uuŔS,H!e~;p̦>3?v8Y1}q`6Orr،oٙ5}qs^5~Rc\imbfZ]mE>ǐ^@VUJ]nmYLC7y))Qݶw8ʎDJvO11tCS`V`(q*)h;#̔⼔c 0 _ңG[|=2WgUCx:fHAP.] TAL{^^:I4be(mGHcG좋Y12(lo{VxMO+@廀+[9-7dyNPVP9!in5lZUM9hF\" sWD L6#z4k)S H +K-h\\=}v:cKBf:梕y<'ckš\0.نhC e%la- +Lq!.n!dw / +` y[!2d) +Z/#e{xp2 's76ōy8YNǀUmSq!qGgPD[]\V4~yӥNJ1mq.KWm2)dIv] &os\,sfbrI3eHC8RhQ%6T)Q, H +WvњM DZ7 I-#?pLޅ{kpvY.h2co}K('n-%ZRA*IP>ۨJed ]OUB=娵Lk 2t)imj,)xޢtھ +8ե+$b/IOw%N՘d[:jf%*k5Bh XT6Bk֟_0ěy͌ s-N +ĆOk1;Z X<,ҡWZ/'L-S,_1/3&vUA9 cŸޛՕ-y\ ͎?eh|dwB#GȢyofY +a}A nHnui% w|E/~cZ/ +$?{o\%,^Kl^4{ ^ЏwW`Ӽe +endstream endobj 2281 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2282 0 obj <> endobj 2283 0 obj <> endobj 2284 0 obj <> endobj 2285 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2286 0 obj <>stream +hˎ>_GP| `,xP Y8z8qt%왫u rDy.6$+Wq&]q3erci_߼t/zy5 `sCs%TAq O/ë_}ݫ7޽N`/hl8+ NvZMBBoI5Nd kijj{R@+;;y +gbyc'tI{f@vv`}vL:x6g86`X[`{]`{gL;2 39"S3JH7d&~&üQ U`"75pO-zBI ѷO~HN5M9i3,hHa3-q1h p&D(02@/#Dh@FʎZ +1.kGIMҚ0<{)9A{H]<ʋQ. +O'jA m&lj8 an9A`Yo'5۬iRͣ55s(#Dx0MS׃j~Gtv?!/%N$HP1HqQۯypd`c+͂*7}vDXI*aSB +lOFْ La+ A<_' +hzC ::5p T 8 bh15T`  #N|v)E,Y +,3Әr19Z%DH[*9Щoí-k(DΡ N=PY8 T(]dk{*hR18_/z Fuxα&;=kn)EęSVOf]6"ГjߴsibQ0 $!͚} )QhZs.57 :LF,]आנXW:"4߉fH>!5ya* +d=GnV@a tll!KKY, q@9κ\DJ8.6C鲖A2l[Mȯc::M5)?#@ +@](%MBCʆ|xhrg@Yds|ן ː4Z3:jPZdhR]c*E:6+ig$;•VZN 4J+싙Fѕ^Q-!<&y|59ҩaEn3jHqtQdhH)SЕX͗{MJ7ʩ+b&_ (׺O_*;4B)FTbz۲8 _ͺ2xM҇hɼklDԢB&** Deoێz2fK8JIȏ+oG$"_(nZ1}gڅ*d5Mn5-( %:V+ƣ+н4rfWhܺu:køsOqT{f.g)7VY.E],Dt" J;t)dWkRFYDo\{ٸVFwޖ{ |Nluz,!9bn10 b0~`7F>GBZC\E! %8uq]Ņ65n?YqI +d |@[ ӊX?f)0jta4f bs1{OQSuatyр遊GqĢOa jCjf8> oCU쥎)[E +:鍔[}k3rYitUf3i7Ը<7n>KIN|wߨ|Ol{Ty %D]Ӓu5rTl}x +݋$AiZeؘc;i%H4>xn`Z ̃l_sVa+Eync`Sm:>$HbZ%Z(wv#͸1hn^X[++CN!\)of%k=í44\_($E[^>= +uS!̫3~4x㡞(d̂S3m.1>sGW|#ۜS~ mw~jh=ݖ%s=J/n]wS06O1yY\qq~^L#i/+mۓqLc+AZo_᛼85cKU533#a;ێ) +FC(_$**`"uq۱4n)[J(1EށT Nez\Q8>"8ϕ_7/G[MێFs>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2288 0 obj <> endobj 2289 0 obj <> endobj 2290 0 obj <> endobj 2291 0 obj <> endobj 2292 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2293 0 obj <>stream +hk(5eM `p|C[9 +'?$ɒm,bqvW?]/_ׇW'WWf!Gʄ)Flt0O==i;_fkxamf~~ug3EiR'bizus= +T BD)arY9WqDRDAK;D >y9zΪ/u]Z:oB˸TN AͥxT3p=_.UrII{M.yy4,g`ދ'١:L߃d$gt?2q$g7k;n[j[jX6B˩9i.錚ROZ=ʚW2Qejf褂˵v0&lG8Qk ~'et] + 8wP#F$-M&̇u4a +&ʻ3)Ty ~j t_HoLI8) eg Fg?e0Hv|Fb#h 7-Cj@WYG,JZ4x`V]+~e.  LMX0Y:&΄ۑu8v,mSA $H9D6՟WG{in'f e$Ga5C`(J&8yPN#؀bT0F?#1Lo\Ds.5Q $&^+w#ʇ;N2I&˂Qg~xS<HDDFN0R4->yIԥ@t +2v +ΌteS!m BhM:+p"!/ijC;P/2e@j*3;`XZ@pp SW$W1FB Sfb'`ڭB@\Q ,5ƣف҄G~tՋu|7A)n[Oї[J1~s +6gc8a|_]=<~̸@ssYo +ʽFq+^'I!ZQeW6XyD{. s"FVڄ-!N"F"\H +mV:t)+%UA+>5#3T7ĨP8>#%OALHŘ8,G{ϲ&IZBŮ#H6Hoj56E !2D3.RPSp`疼z-c1\wknif ?P G8:LB7WoAhKAd~I]xrzy\x{ʺW##l"[q'8NG :*)f=%6%.Jq@}_R\Ev{ڻmlh1oq6Vqv<ˑ#B:=84~?: vSB` 1| FYdj@XE%h؝Y/rw^kŤba*E +{f!Ty2>R-CqD` r*$AonEiwr.b9kC;fiulY[1&w}L6YyWcBlkc]إ]fc˥vˁ}I˅E֞Lbn&T$׎k͵iV{p#@hDsZ>Rcq7>v?sۃv;B,V +>'j5a` @8[4cFQK::Uߛ*M2'&`DnM4 i=QmƸlg"7'|'wHdrġu:. NBvֻ\{#ֻ3|gw!Sߜ;{;}`rMx3xmv.nj\M,,k+z'{?S}`ΨDt^F=GDl<Q~G_1qDcWwA/,? ~("' P|}%d/Vv@{>&_- +`7&FY&4yDzY ~bQXj]m.Xڧijev]Wy?Fŝňn]ƕܓ$)i,:DK + +vQ*)ւktr;YL֣^᪠`5$tHC/,HkkTXtLKZgnvoe-*mtwA%n3-5ཌnFqT~_Rvov=vT' 6e'.7P&*^r)P3 /ab\6ѥ]^t,2t O)Iouʟ塬%sïx/27->X/,4T8GX]]Xg%Qah#2sKs7{u^Moo^)Ɗ~7yVP|/2#vsQlԖxbtByf)Nj}|Cf tݴĹx sS +j\ZGYZvs1IuPx |?ְ51DA +_E#]{ B{£oۼEK]cI mY<^%]ˋ7zt3H%3_]L;ͧ3"7toJ[R"9ZZR?cnVg.7KnRqeyU5*iw$jFrAkϽ'1NTd +")^onKyrEP:5*\r0V:#Utrst ;Ik ^Q.UTغ(侕Bky*7ҾV^$W5y".(?׽yӘb@ع +\|[,[(^,| 4ff/go⌎OG+^)y%w{$)/xu-)?9/ +}$+$2˜sN2=PTպNd|oS{Ǻ;?sӇ䜺`ca$Mcd;U{%(~`b +endstream endobj 2294 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2295 0 obj <> endobj 2296 0 obj <> endobj 2297 0 obj <> endobj 2298 0 obj <> endobj 2299 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2300 0 obj <>stream +hi\Q +L km-hQX燐̓Ef>_wowϏgǣtiy2!<+f;_^ͳv vzq{eW'l>s[eSZe~T bZ? 5¯ʁY/ SN\+ . *Mk2Qk)bjS17$k__~l{/{4`Ϸ<=-q(^g>)‡N26<)sNӛNp Y?;t\Z "SKRtѫ`Xm!ZWrlHWe]Q+|ede^`O8g߀ئ~_MgL0澢~{3δًӻW?ÛW޽yunކ4I9Loπ8iZrV! q:׻n"ommm^{c*-3 NJk3jСGI`e10sZD]mIkP0&lGX^k ~&etіj,@HX7G +(`3& Tl\+︡kRjZ|PƙxSZL`y_jmd;5iA3Z#MhddHuR *H H ` @A+hjص2Ǹ3xsF0Jjjڄ³cSAkBrd.2P4*ڑۆ[vyt(WHn"IWW͒U *b*FD?OhYT,V#j POMqd *G'T0pv?,LImޓ\Pfj]i?PZj`@O* j=@:PmRhX%а,{|ÂQ}skQiB> V>8xi, &J:ĪȮ@(JP1q⨍Ԍ:/<'t8ځ艔ʤeR Ɯh(64;ʏuZm̹@Jt +WM KZ[^4AQ"T%n(RyHAPxȜczYZ *`˟t74/ScaT[ |^%0B: ccpi3h|bYԹ#ɺJvXҷ A-'194fMH·C` v͟,6ˀŘr\^@pTn@!SG\$PBdDA S(Ęe!0*Cd"%ucWk , [])y<(*`3/O?޽y?ޜ |{SpbZJ{DTni#7@'/nnSXa|__o>$ `\^c[ ѕRq !_ hǐfcmQw@u>rZ!` XZ\jnh9*օІnCzg݌8+5~7}'qB.Q Q$+T RǶr0[id]ExaO*.t:Dj,CK] +NHԉB:`d7"/P*?9%%Rdhٰ ;WjJwibiz$ӔS m~]j5&y`M"64X5G$10 HA F8#W Kc|Gy=-d  ötNFJK?;\BKdWa먡rvzHl9;v`̕\˃:[h5ox^d=| +cHz-ԕ +-k ȬI]*]'.mx>HDBV5w9E&VFSJFLsU ؋ťF*\Mx?d> ֨.A1ij!-*Ɖ͗GCVGs/x-Pc@̅Za .sQBb##룡ȼ(k>d*M_kS2mJm}W;2thJź18uٴSN)eIJ\6+6r!b>%7p;CJidV%r#ZFr }hX0 4A\'xzK5?vnNP2I3>"A6Asjb(~O)1A=&'._('MQ#RmS{LQSczLQ=c$J*P/\01 e8?> +u%q,;clzGF_ÎY{~5p&x\hn?b`RDlnEGoVN\9qz:؛91z<7׹`+ Wfqv<^n/G/MZ-qVT7b|yE*->20teXҩ=Z/ 8v >y\w'Ga}1ʾ y<>S5m7muvƛ#8(X*@Hͺ]~悜.n1)Ey& uk[gc/ +G\)AYAO=$e&lNWYP*4'~FfZ_+z ҡu\^"&ǽɿo+!R:6d7' M`c$ă~y aP x ˽-mt/;a w@^ȰF(@ + @ I)"o+:\+XЭަ.MֻA\+ަC&qnv*mdn#YMvܦLMހs77fpVWO^%Z:7nÙm8C[a~l7sDPoddU/e3ĥ;'Xݧ%{mmj׷SUs!Dt,;<-Cz棣a|\;g;ok2 6bݚ֓A86 >)1ζWqKs 3g&wMpK6"5g9}m4XMm%)L{"m>IH`P$ڞBl~1Iw_Ǜֲv/+^fz>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2302 0 obj <> endobj 2303 0 obj <> endobj 2304 0 obj <> endobj 2305 0 obj <> endobj 2306 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2307 0 obj <>stream +hi\Q +LG;񮢰RxoɎ˰LU]ww׾fzn{qw߿^|yc7$F{7?n4#{epFڽxupz绛~x|ky;O:N@Q)X@[XBfzU&iS۫7LgvgRO@lGGmcC]Cz,myM+٤ϭ &KރשּׁԶ`ը`pة}GemUD6)xX&@hK熡Iyw(keo#B~[oOHN%L;AUECn3 +.4҄Fqd25@rD +t ZoڸVJC} m +%S @&>&L{&rHH_`߆QNܶ<妟wʔ%AH~~f}h7y&\>%y'm0Uݣ5cQPC`h $aG%" a!ް~FfM +Hn!|Bwab}m?PmyЕJ;'M!e˨6IVe6lQYm?6p +( q_\mbi[%A)jxie( ȁ }4&ʟfkXşa )7ȿltȋ- %I'k-YKg!o"X@oc_C|(|L3. ?&_>HTfSh ,F(N,Ym tÀsdӘ!U켜Ȩ0C<{~Cѱax8؅*[3ʤ̻#[wZł -Ԭ":<6.ـ8XWu@,A$9]%BHWцL v`v|Zt$ 10(Dݒ0L/:ߋr=GSlTd +(a$&v7aV<05Ϧ? =App!S4+'g}r͏{<=@v=s0bJt?>0N-޽{D>{usϞӳ^|&n=( +ޠ;h:-C3Cq%]qZ11R\Sy;ak/c槣gVbfդgN5SaUߌ/Az[Hɼo֋DG< ŻbИًXfd/^&&fv6|PqH}|*LA,J@M +sz|8:,lZc!acin56n>n/u]ɦlr+LQObμ7ڿfba_S.1 [zMv?EgǯcwZv(5`ȮaNcU6x̑ǜT4$-Q E>]M8` +Yzb3²twRTuws1[;) T +!tnYH脿CI]N[º;]׻Õn{1=C,O3oM<'a5 aY1)p3VcjVc%`ArQ&R.ux<`>X]fu@ +h *` +F2v0f&lIS). -[v]+ux{vKvo +et Jn&pSݤ[F7.1`!fZeZz Aٮ_q|{|a;?[Wѿ<XM8d l{"rj>}Όd1[Z+ F:JNrSVA UD-$#v9k,ky!Knqɱ +S|q9͵̅4LY]\|@82wyA'7戚|AE}/TAu>,zxE<]^֮w hzrdh nvK:ڕѹe2)?h (jIejZaeB')!Gɿ,bʭƱ^hazD냚wr{4}!(wvyh^$&0uZJ5EBv~qqO*+dU6jK.[',+}T**i6|2FN+9[.NT蘳U߆M#[ïuԟ3MCZ1d͘[[Swʨho{.KF7hA7HEWtM ZWŤca簮ۙ*OK㬮]`m/=/K*hXkۼMW 7^-d}bk Uj, &BWVwE +=BԐܮ3D=Bs̃U.ٹW8(@lzr?vroҐȹ;HHc}3l4ԇK\{k ~Ӱor g=N1#pRtP/9ɜkrZ<5_V?+uCOj$~Di u2ꚪyey kpk?frruzҲ|@?G4ѓzTPuk 3q)>PGg}^M A0rq S`FԖ!1ʇ ˎI&]k;|'8}m{íxX: +|)O^C1x.^2x8)`q +endstream endobj 2308 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2309 0 obj <> endobj 2310 0 obj <> endobj 2311 0 obj <> endobj 2312 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2313 0 obj <>stream +hˎ>_gC5$0%#@ CxP ٰ8ziBqV|׻d՟j><^NvaWɥlRlBtzv{36L N0> }4jmLM#@9V.rے5{5?||*GX:S?#N551@4/ % dɸl-vz#k#aXh_z,l?0z> O$Gg7ee2Z'rep{ j˚0$8޼4@ɸhcZb>lM)ar2h7?\W_vo^~N26o_L߃ BTXApZܽ|w?|xo/i|\%<NS&U!OT~w5L ;){*{*;ccy>C)X~!npk + rT}r:8s9=䲩2ŤP[ jO5X΀ZlV&yhŀ8`oPp; f.4AuE0 Z ]u61pRq2ɗr8 ; t/ }C|qBə$ ]Zf[".bPI +2:`hQ ZyK +,rJX3hsf0TH+`Iȭg*-+H)1 + #qq*/FB9sqk⒟~[3d)?'"}KL(L l2jr$a6kTiyGŔkI<&jY `hzC3؏`Ypv?#-Lm1BFSceZQ{*sXdKVJ`V&:DUzRB'}skর~ #NAh+ 24%j90E5&vuC-\GmH;t8K #Yv+aSN[?!_[<1W!G$Y{e!RPP2uD2D1ɷb| ʂ6r|*0D6:O'$LJG;*^IZǂe$#3.O1,<2b\q")1h1@# +a, +׃,UQ, @QK9`)D~ڌj֎BKZ孌KtB#'i>L<=ي.ke) !QL_Ԡ`zJ8ȣ  xд^8*f$LѼq˪(yTY@:KhdG؄*AdkL:W܁#> +e&"Sb=s{u;`:u9tUd=/ +)i@LE6.:"^frRPqI:d[w9 {[KeT㡍>\%:.m`(ҩndR>I)&e5*&LJzIɟä&%0)ƤT}Ԥ'9LJzZt^*- +ܱܠK񵒩2x;r#1ҭc9<y8$Qc̀jPb6S*cu]~λ&=t9bou|Ś۹-4 a" Yc%9S9XyP +l Ik8 }>F>[+avқbߍs,C\\̶H̍!p!G ugfH5srܫ^U& ?%Úlb,5%C؄bɃ!c/В 4q[^}/ZBZm|jԐ=XFGFC 8g67iqbtq{i:ڼAW$){-:hmkZ[kjmiX;X[KK!]˭[cl&Һs(`{]nX7bc[n+ͪ:u\hv ڴNGův;?!ҧ_z +įg +_Cxږ IQ䠯F Ʊb7rJOՍZΦ'ܶv-Ļah%NQ9XZƖk7@=Z?a|ds9f?sDzĸĸP{JeXŮœ.mrE7BtunyP uH$!:#X +endstream endobj 2314 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2315 0 obj <> endobj 2316 0 obj <> endobj 2317 0 obj <> endobj 2318 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2319 0 obj <>stream +hio\EFLc5 e%jV+{!v@7I)EΛ>L7^l^\\L7J41)rY~Wniߥ>7hQ %Ƕq}mTWh/V2rI6n& ?N >&OʺRʤ|*%O77MUlb)aG{`em}ʌ5~krFEcr!"?>4N< +sϨ0} 2Í> ڰ%<墲lO&(cy‹o|^| >ghzÐA[7 +JPvJ a͋.n~paz kx#@ I'P5֑tMa{1 +lBk"-+ +j`6"@*"͔ibsmwFב(Rl;afHdfm2´i:.+:jD27vw1GΩ10[j˶r못 +(^T<1 VgM(f! E*Mt ZM:q0!@ÜQz:J7؀l@fU&z_@~$taAZ@τDr đo?ĥDsVlv%7r-DI$%Pk~4.U2l\ :{NAG9i둳 +"ԪVzRh }+DzA/Qz= eIaQ"#$J}RhqjZ{sK`5%-صOlquQ8(s [t-?f'bgB[ X0s]UUYZ9!#ci\q/[nicġL( +E ),CLeHj Gߖpl+#pL r.rL?gv #Jy6`5w'vFĤg?XF7i ;JN y~shS:<{>7|-R0r[Fq=u>!PnFI<' kzV-+gOSiIe%%nvd:t[עrb72& +iX?W5>lkaO?0n]>~S\eαY:g*X#!6vSF HME,h/;ڱFV>uqhUL B{rnsUfyVO?R/=y0m|Ti#sw1 wovMjK2-]Hqp?!+uo_guBTE[ݶT_x2ZN5]^++ӵWA'QI?-;oneF#Ƴ N#!;:/:6^E*̂L+# ( `^/yW-;ͻԐ>nNcU)G~9C\շ>ne ֫R65y32b=CH +*2 B1t>7j;Ś"_ .ז}?,,Iػ, r}K˅[nX[@~tbWMf#.RozAu9p>W,p7k8`u]*>-_I 3X#`[",2 dCic+^gȖS8yxw6 2 ~Ʈe|uL;ޝvpa`^NZuyxUyfg^9XHhdn\3C"|A=SqC{]je_~v$#~cY\+"W*W䊨UQgV?8rReg 0ܲ_"S3ٻK*;ꠛ\!ˆ ff %٠ټ)ziQʗW|ϡ||}/}@ʗʗ>pbgXѭ +endstream endobj 2320 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2321 0 obj <> endobj 2322 0 obj <> endobj 2323 0 obj <> endobj 2324 0 obj <> endobj 2325 0 obj <> endobj 2326 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2327 0 obj <>stream +hi\Q +LhmC,/jrV>${ꪮ{+|,fy}(e1-7ozpTZܜu7WZ IcPzMƖ&&&g-#)yW/asI^R7E0Jdpm`Fm kfOA+yi]T6|6L@ M^o5OGO/yw{:FZ 'k$2yQ֕RS)yywwx}1ȪbpQ63awb)%)`T,UƐ2vL`7dT~@Dg?˳/Ϯ?oA4#yl_i0{@1-Gi!?x݇wo;.ސ}qyREXH-u=VaU&iS:7,g #*-COHܓQۀ>9֑t8Mڀaj`L=N1*YʚHmkQ5*:1 2+np|[Q f4A6 `] VsPפГԴ {i7~'_M`y_jm5"iA39+MhdHuR*I H` @A+j4 +Ǹ6 8@MԚ0 m]=ks򷸃8Co#}gDJ}ַ}~HVyȉ `]*8O;#J1ɐ`id +2"k$db̭eF'؄KDȦ1y:EHz'ϙW?ҡtl^d*X1/e?0DX'^%0BCOlK@ɜ &_+e{ڎ&:cK.u+L7}z1,D><Ц aG4nu +Fc|Ӄ\5*ȎyO-M&,wU#rT- EY0:b 0FHlUࡈ@MgW$B.UQ QodH?0^mA=gǁjẽRwF@uWr.t6DCF5CvR&bH0q6}J` OORc<>c*_-76bEwIX} bJ6tYBa%*ژznx%[T4 +tBͲ#H? zh*ݜZE=Êlų":b,oCHԕ?pp2W=| <:)C!Ơ:qo%J8ܶpwtnrnNᯠ{HX9,ru˷]mCQM[If^P7AK)+XP^Z47>~C~o>ooW Nq w!v*t5C$s:)g쵡`c/|nWAi-XHێ@ؒ[\i8bŮ +Rm'O.fӻpĦSc,*/vy 쪗sOЫN3z:9rDw/NYGᏖ(gv )y{OдtfKN.Է%8cwZw(>v +iۍ6쎡=Gd3XߣH|{'r0ڶX+g!O"Ʋ`!q)FOѡM@#a61zݝ+WYȁϸ +j + D@6 Nx"v;ΫK.Eao=b~=YͪG,ЀEv+߁?6)V@ȹLi4dU힯ds/[:rz=\f~O>Is`5cN*>51uo;``3Rl+fogM^ȅj HZG=,WMՃ\)U~wؕn/}Mp^ҤSxEJU<]s ϔ<Թ3&j?S<眪?sOi7ehs TJ% X^mV@泚⧳JA`v +endstream endobj 2328 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2329 0 obj <> endobj 2330 0 obj <> endobj 2331 0 obj <> endobj 2332 0 obj <> endobj 2333 0 obj <> endobj 2334 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2335 0 obj <>stream +hio.s@ +h,.cʅ`Fqvyq׃ʇO H6ni`nI]sm'e])eR>Û*vg +KDQ\Y[2~Nsi`:G5*:f+Ŵ+=JpPX0| ÇE\E3D\T͠e,x鷧Kɧ$F{<6Կi%{@e /^]xw޿}wi_\=@ i''@z,IHVPtD˝m AGƎ-t6ٕ2>:]ɀm_}sH9#p&Td}i=@{`yGc؄Dj[دH qXuGemUD1)|&`hK熡I=Pʂ;PJ<ƒT„ l*`~TvQqԈԠ&4C:;ЩvR^zC.%A+j4 +Ǹ6^Ap:5a8:Xs[v5yCj&$G6L4veh䖛~8(S +E#O$jxu}h7yO&^>%e'Qm0Uۣ䎚1 +-Ԑn<_`"J02-#8MfjQiZn6=em +/A${fǰT Q,tQb;hFlhLiQ@s%< N@L`ܘHNm#Cq#[Nv*P!ClOzcp՘yp7%YOS u:l +%-G3kI0p7`% 3CrVt"2 =0dJbX'=ҝ'vَOS&َS[ +vvwvJ\VLЅZueZ2kyxbgI{E7Cw + +-Gx3sܒM,JA1b) /_^Sg($Vb^)%0_ yfw /Y"1_b M('J٩n5ƴɖ~E_B,E5Um fb/ztDցuL=x揭_Š!Li./P8*aAh<`!7%99(z v IN϶igeUǖ.ge cc,^bԣKvjEg),l"Nn& b'7_gkEzII8$]:y䳡3#7v9QVΓf 2aYq&x }qĂ]_IvԊ0|]k>y0=Tc5%8v;{ .97Y.V(g/V<8j9?jD@~Y}Eچ,Nlp ÅQD]odQ]a`Nc(6mo}-WTdCѶŋQ ?.2ר8\րkj-)]~YXOqC"7Fûȇߝ"O#vbs?LLpo%U^cg|d1l΋s\Xš_ [r>U']fx +_1q:Ę7ݾ_֣?~%}&@|]fO`%W|ă~ӍPF9dqY 簎:²Ŵeaxh&\dax1gO:ޓE70`}3p^O[{] I'g.ZM=t%=CK]}i\*t G7X}2oOˮ W93 pD}/F=敏M9x0&cݤpm׫`ݯ v!](5 Ns$b nZI_JPN:IBh L,μKU-lF1;ʰu̳(q^ ce$r[%Z8 Hhin ~C&xzeH$)2>.@kJ^쥤.ybI'^DK``;weVXj]=Ϸ5A՝R[?Y[:`1Bs9tTsl\bƭbNlslzd1~k,t*[]ssC5z3pvshްElCu1g(=sQ̱v{.昂9 {qL#؀M kv%l lv(EmDn#rfۈ\D$EJKxE_jK]{ԥlK]ԹnO{ԹrK{tL]d]xO{xӶvmڎM\٫v^]NP1 Ea%2; +Wz\-8GZ>P~FM4̤!l%4:+"NNE'.Nž<]^Œva } +endstream endobj 2336 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2337 0 obj <> endobj 2338 0 obj <> endobj 2339 0 obj <> endobj 2340 0 obj <> endobj 2341 0 obj <> endobj 2342 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2343 0 obj <>stream +h[[o\~ׯ8v$ ,P+AG@RBvӿofx;G]#i T0ֻp8p8H7zzEf˓ Q0Y97<}qPt}B^γ̨:^DI¡쳔u:ttT_;rsjK[.) +DgM"zIViTE@r6(Fo_6l2/qk|SxpJ{x' >)KIs9E!Ve?v. 'զCRƣU0bU-Nf0ox긢Vzede^,?Ӌ_\]LQώCci ǙDdPxÛ_~|ݛw޽9Ma:՜fO`4^O9 +q:3+az(eee|0V9uPF7#O'4NJ5Qj,5ߢ|A9Hz2QeZ:rT6P9bxU4сF[U@,Hc2Q5cI~j+鸞@cRO47_doL:)c1`9z^kئi"m0=_~u.BhWىl}Xs/yc7m^DЃM<[;kqTg@; E! wjht/e'*!q.u;I/GPnԵ%1<8I4' +0z+шB̅G$fu|tQ>U9V*P5|D1[ %9S8K"=dKRu7SUtWLAΉ =.dk)l>-CYBemiNG#}SxQB{gۺdlAs>Zľsh#amV%둡nmBtq +ȥNQezMV}]VG4Ƈ?RW撃&ȌSs +D8֫hѶ%Rog2.x_ +b#SW{W'@Ϊ,;'&ZMܤFuݯ*ѲE\WMZ[-wU*Uu u]ٔaXEp FEM[f~.d?tӔ/w 7l%lk×hTF z'ݪOs㵼V5){"6!eȱ c[fLiD8^.k-bc^AX,MN(E&g%nsLg!ns|طSPL`G>#[6{Oviu'!v}'!͵gU/]iA-=-䲮TYζnrA ?~lO/ҙ:.Hw9}%R9h辟M7č$mh@h|\n٤~&mI?nXF@X<_2\W)Y5\I^6+Iik=uذ +7 eCJ"K#k .rjIbۋ:Tmf: $=* Z[pHQGG&g&=yp=6;1B*ܼ3VVfm*PTEbM[t1Ք:WTԞAԡt8iE)@^/jzg ,ɓF!W7;3w5 ; S_M<0W}D]MEpQo!tX@*S=?bAaU@0_s +b,Ҹ[K>5< QyJ[w0 ܯHʦB$=M"Ɉ?IۈqMHdh IG.]{9v-b݀w q ی(c!n2 +ظkJ1QYw]镾# +}O }G yGBcfqWBSQ}Bޑ, c[d[ WJfDDH! ^ +~41a!/C{A] O⏂XG>J>lUPD+7,\_ +&T03}ˣﱺ)[y&dGN'ak%H3{vc5K]Q%W 8 gmT`mJjHQ E lksm֜Abɸ_5nh~  ^KNZ}J` }ĩº~ۭ:J:~C~c8W}ӡ#OuP?a%l +endstream endobj 2344 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2345 0 obj <> endobj 2346 0 obj <> endobj 2347 0 obj <> endobj 2348 0 obj <> endobj 2349 0 obj <> endobj 2350 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2351 0 obj <>stream +h[[o\~_qKI@8@ +h}HBH 9M~9{()FcK3ΐÏԫ?|>^_^]]IOWwrfG?BT&L1:elwyYCgk\ϳKgA5|"c1}A^"i(c]>C֣L[uofӤ9OŜpw1T٬l-Fa9ckV[bbuV0Z} WNhh`P'}v *}f+Bը4v:Fo8TRVM&O+m~8W_\9N?<|o'aԳCace[ + Wf:J @Ƿ?^pn?{C߯.?@iQ0}8#N>q:#»g7s{)[*[*X@6Bɩ9i.茚!vTRYk.;_}`yܧŞLT٥ZTpրT mRrV`rl ^Q* +0Rxۨf5cIЯ+EVXyM=pO m?IGy~Bߙ |Dg?eX'.44(FklQ̩uu4`I #(IRT+eЏyg<5 ZKɩc18f!08P\6L \sDÂ@w~Tj6id{`^->Fl?O23 G(T A衚ƑCpb,*2``p 4.KhL?{7i\FYstXv|Oec}'arD5!drbZ58Ti z0| +y0=E,X8mB7?q %~Kv;Xp}h8v9 7}; Q6*h.wxp?:CD"ڃ2_pvPdBYQ/ụp&bit}B#Viup[Ofs.3`JS# Di9%qEg][\oeht,MfzΜ ̩Hd 96Oa8L-[>R13j_Y|$ 9;bո(uSS(OWQf.|bU_GԽ4E2*!GRpwj1M.yzzy /~}ǿݾ$G/Rvttt.a/>|}Ҿyݛo^{DBG.I?s=O]+}Ԩ/af}hӎN%28A?hD+a$mE*aAKgmL#jT< M9 ]+p^$ot>AuSW$q".S3SJl9aF SI1[-T..|Hb[ -K2x_avvF]N:n .N~4NISpϼQbehظUZT: Kr7Yȉ]'FYJqae<BdUSrzݤ1'9yNzKz,'- eS1`sݓ]v]N@WRa +$޿NXkBl[iUy}E 0'̭;kyjVn\Y VȷNBk$ݬ%.}N*;,[ry=!!ʱ"öӈ{=^v{ʼ"&ڈSpb9m\d)}ΐc;Nׄ^u n /|fg }(?ٵ }$< ͵p3ya.fH}lABR9m<B:tQ}LOtpEt'Ssut)W};_c7~hy\AILZQݺ۾ێ8C(^  Ť`歄]'¼1w¼MK[*`^"ֻ0o}y_'l%80a^oa^228V!kQCw]#vrF!1 +XD>0};^H:cBHgv(\ ގD|>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2353 0 obj <> endobj 2354 0 obj <> endobj 2355 0 obj <> endobj 2356 0 obj <> endobj 2357 0 obj <> endobj 2358 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2359 0 obj <>stream +h[m_$ ,P_4|HNs]rvӿy#\F`$r8p>_=y{yܽ8.#˃ Q0Q97n7ov{5 }wG3B5q{eV',D>sYiS4MѩĿ*>'X_F(r`hmGXm +ƽgJڠLz;~TN`󠍿x R) `}Z?)ϗ>!—N26<(sNn'Cc:U, ;egrɝbSCRCwѫ`ت!ZW `*Zy+`^ľ?axՕAP Wo0NV`q ԟw/^_xՏ?>}wix_\= Qicޟq4z=BpzGv{3*@aQ{)Uګl#orMF,Ke ˯+;_}`y ܧŞLT٥ZTpրT m\k奈T6ڒT + 0ReQoԌ:&"C+;.h*gZ0=ƙt/n| f;'L3[YDaPH +٢:R *hFj51BKJAS)ƦA=Ųa5g$੨V0%."4?ZqW3c18rRYL4N(# SNѮ#h1@6՟-a7L?q&lqAfh4BbBE45<&'3 d?fſ#i&Ej<,eWT1䓰J9EP2k&P5 ʒRXW|ӂZ0%&4WWk +heD"l}sqXu!sL!pMyVh8 YpXӀ\Oъ QњIWۈ"rגPod, \49dPE:w'Aαhfēq&--h(T!Hw0uDx&%("`3;S3;w=q=h꼟ɒ rS#kBi0ǥ_ghK49bո(uCaN%. `YK˲tw/3h`>b/tZLS$TJrT oـI|Bpގg>q.ӈODž$҆w]z͢+.]{ ü,ճbT-&qҟRFSnm*Ld.EY%-R6W᢭-KeJ}ل}SX7:qBu\d:~ ތ3O%L3ܓ_IX׆L-^ҋkaAR|k{p~UhIuMZS3BƝU>q&Ɨf4A$yeձNA佦5UɃ#Z^յo;QK|[O ڷ-2Lz-!< `"pu=E~!\/ʓǫ+fP4-u0^ϥf`4E۽9 K5V1yu*ϵtQ-jn)̯ s}gskZ]nWִY] +rZ!ĵo'd=J%w/5|Nyg`>׾*$eHy{aqȐBD2\`/M~w 2wd`[*')*g!sڌ9CR>l۩зdpOh +/@D з[:/M[/-n-^[ҝn&orGU /flo`ϋ%W}@t .hYБmMO4C.y+<ևz >m=]=(.uZ =K Ж]ڥTVqԜ8ܺ۶ۆH%&1ё  RgV$zMaA29iC"]ȹbKD80vL~R:8Ms0CDBtK~깧*1d8gmpiZΛ rPrdXB^ L$誻.} ϶6ׁ}u}c0]#1"Q&Akގ 17KL`^ָ-v~9ɫLWS׷v|Ka;{bϠs|Ϻ={Y= +*W 𽾯 |R=W=\Z{q~ߣ~5|'|7{vx/[ ,j|԰ +|,Mnfs[c*`w|B[cni| mYG[ȮrW#WY-Bޒ-pݖl!ofnS6d3V%[%&/t[J3uSgB6uK.ctuݮCxucx‘tG^]@DMvǷNK<9g.y੔1[޸ + q8>=_gK4Br8Tb*`Z}{"M)n`doX,=ufxOgei|Dc{qܠ~TN$H *O7ߗ_j;RL z X\M?0T/lVdj^ɏ`XRfGj),{M0?vQݾ>BĄ?;8^Y(JFJd R  0 +endstream endobj 2360 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2361 0 obj <> endobj 2362 0 obj <> endobj 2363 0 obj <> endobj 2364 0 obj <> endobj 2365 0 obj <> endobj 2366 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2367 0 obj <>stream +h[[~?bi@6!`{(|n}93gcC8鮮oz_k3}͍tp(I?zI8M7z6P8A?ovN`w *=J_z,;䝏Qyr!es$qqd|7\)IYWJO #c:](FsgkVVSfuQ5'qi>Q1{ E^U{VQgh> 2m̝ p%<墲liLPrWx>NL}~}NhGaccO-%(;d|x_|w߿=MWtstf''`91S <$Q"MwDxw8ZB=wzU&)S;lW4JGKPr&#1~Y!5ܧÞlRVUՀTmrrQ`rXlaTp;6Da UjLk__- + +8&KtV޶W4O%L;ZLUE&08qA19+E(rh`N )K:7e$(ECRF+H1PѠ`N|jEh[V<.+ț! +#q33 +e%7rP$4,8 ^Gr{5lLoMyuhLd5m݆ G(TQ衆ƓĵJ[بdʀ5 {7?lu1&4o!LۍrԐk0,,scDWR*圈jC@ɖ=`NLkqH),kiÀqt +`R|5e7 e)E(q D:!S (M*q'z +n_3~A:r4{0Z5#ZLS%". W`ujVՏI?1۟y2߾$c=4Obŋ߃^t滗/o5x#`i3C3<`DVqzΌ}3?^VsVI~z>]W'ȎI<=#ƛM"*yř:OHKY5DžDšwS{â0.Do{=^5BaW؁tŨ~d0^ĥjpfJY{Lk6`RO>gyL";\x{Uh[sL|p +b#S/NG2n .N~;N|LF)fp&1a0noD@ OFHҿ~t|on Oχ8b"p; +gv =JҔ„'vm]8Chqs!S9:(S4:?Nf JDМ5*MQeQ#fiMa؈2zE?D)sJ=D)o%%; φ dMaNXk^{qr<jqS| }չUݱB]_E2%wT>yˆ].lhuk sxIe^!r};P|q6zvZQ$-"j8S hZ!x!6BzEB+ȧ3a ,/ _zuZV(kls0|Buʱfy/P}3Yamot/\E餯.a˱Wj:ML'|ŜZǬNgx+D&)w6l@SyՀ7- (۽SS c=gT$f{Fx ['$Rlt9NXbYJDpɡqn1؅A bq2q!t`S;PYܷwdq?9B _] }--=þx&J΄ϝ4,]ՙyɪ\M]R}25Uvj|D p}1AY}:?ύ 2xA }6ё9 :ԇ~&G=Ӑ:o +:Qe ېE*ܫgE4^rC5tlv:nBWAE3&9390 F~kζ}1Ul^LD1 [d@[9lF^4׵}%QE87𽭜aAxYUvD6=5HE>\mKf>!%)Gn{ Qm1g!YG ݠq(ld yW6'=LݓH./Qwy GS:+{rClvblKwct 4 2W@f6!-J9hU!b,#D{ "C$[;1;Au9ߪN4b2/Yp+te=;hV/e>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2369 0 obj <> endobj 2370 0 obj <> endobj 2371 0 obj <> endobj 2372 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2373 0 obj <>stream +h[Kϯ賁*>a|p@P ٰ8?_nvOwػbbGv_n9<1n^_l*!kvۃ~<7gH7=֎Q_&,JMbIkxȔlhR?ERyjַ'@GY&Pkm ʉSX˂ǀyt$YkئX"o{MnuO݉܀jT(&M|۲7J.xiϐCY]hr ԝK_, E@FٺoɸMsRW~Qĝ]a {ԛN#Iyή31''f"(\ɽ$nUHN(KK@']͹vC))J:A'Ll +9 4M3vW[g< FXjd&lo'Ɯ,z,uEQt?,Zt+OWNtok"X6cW6|or^i!Ǯ/UXCB= c/< }|A+`8 7gs۸snAT?Tt)ûH-'H:g 8"S"KwN@#lK8]M±<7Ǥc͋~zCW53QNPq<rqzQʋ6M>~ 1䝾g_fm9j/lq"i58ޠ.Զ4q\'>C:LX +2e>|}x@bI T?<^2l>z}2o,vSS&ϵЕ`+v]v8o )QvD,yK'fSBp +NWwBf YVr2> hTZ) DD, ':H]<]G.#ʝ/e~6LLJ<ԕ`ȵ=lJS;жIa0Qwe&.L$+˧=;P|D;;hu@+ ,;|.u>.&-*l8_#3.%aBc*G"1(Gv(z 1xq +p) ppʯtpy#5:?)r[Sdsk}5R +֨`+eJ^JkiyQ+v(|紆6vZ3&~A1FCz5Qeh#M0v3FyO-N%a'Oï*(iSq}NWn[e$**,;bUq<-[q֮n|9 ϣvG wQWaxnïO|4^|tZސ_%S]q VC}p+>I/g;m,7:Vv(אC#luw׌][eʶHjv{n#nE^~ӑ숟DvQJe~JJލ7}p9[u-`eRayNXVnVP-nM^F򎫚g˟id_Fi(<ШrmДK#5~Dq; 3]Wv#i$ËCb#ϼ/76o@BRʖ@/'Ѝ ? Ŝnۮŋ{ELj#=2^_bGEE<<\."ܽhyfw6>j*ߵ~g~do%J/>˜};?hʻJM/V_ ";}ЪW[)])+ei5Ӛ6t-hUrٴnypOFZQAmW"(g>5:"hX{yJw+e+eylAEw4Z vAmJW}}{ַ!\A qPKgDuV_guL}Js+ϧC>-s| PIv;;Om]՚a@ 0PF`tFwaԄx?T2D肳^d^W}u9\`#zߵ/K ?ݑۛ0 HelA!`X +'w/%(V_F2ZKZʽÙWz1̎c%|1EL {'L^Lһyxდ^${ iƋ +|{m^!x55Q7*^.:M:NyhZOv᝟Sq}ҤvBS՛!mMpT*"=ҩKEkZ (a ~W=x9k|:K(6\þ5[̣͗nspZ[>E禷Ibi7}֫XM{.k k; 2jSjgm1YcMzf=3Π혚Ms.O/ +endstream endobj 2374 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2375 0 obj <> endobj 2376 0 obj <> endobj 2377 0 obj <> endobj 2378 0 obj <> endobj 2379 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2380 0 obj <>stream +h[Koﯘh`~Lx)0 XR{f{3ǖG?lw77LdCO^BT6t1rInݻڀ8g?iZkJxzFnK;tWAςюGveCV 󚲜/yi0I?7\.aR9wbΩpT +blGbSR,R͑"*րTRTġ34v[5*;*WeU<T>+HlVt> A.e nWƖo~}}j wuqSFn{hId WVϷWOOo?}?t0>Jg2Q:t{L- +ã07[m9rJ;V+N۪"(R:wƮjϳ83@fz-ϴ%n횖*T 36fn'H" |\`fHpDK3:đVIGn/GB+`ݔCܧ 6{.}RYa^ +TsEMU|O5۔(@tD99d\8YLJ>8Ɠ3ɨ]ƩPM/ WܥO^Bv \_AlpRSwȫ~v^@̴]ϴ噶E" 7g^+P?K,DanTg\8+Øg?+\ן3؟`?޻3؟\ٟ+_d`pf4Ns>m!g?mI"\G 충 p7jHqo[ɷw ҏ RqJ8H-N(>6ŧQP)vf 5׭nܙ# PU-tiZBI=)Mμ\R1+O/I!lZHzb{z FJY)m9GtwX{٧>bzRn>1K;Mb0_1>q!_YԻ%_v!Qlb^eN^ؑu\GBǠ s}"bLҊT +]VA&vtz%.Ub 6St+޴b +gɖΈf0-6XwpqofB_O<ӄ$.4MVbHLi"1M$KaFm|2!ȿ8AȗFtߥճձկխիiN?&j&km1ė;[r?_xVfGU@pܼč27Žź~kKؖwGάfEn*5\ȨC%w-JktJv0f$3B:GB> dHc3>ɘ+ 6?Zim u|^.ٓHGc~v*5NkM~n?FK >jAPn:p, 8͡837a}vk}rÑW{>˕ VkjUSիχW+| +endstream endobj 2381 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2382 0 obj <> endobj 2383 0 obj <> endobj 2384 0 obj <> endobj 2385 0 obj <> endobj 2386 0 obj <> endobj 2387 0 obj <> endobj 2388 0 obj <> endobj 2389 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2390 0 obj <>stream +hެnq`7;` l !Ѭdl]Z 驪PZ0a_~5;37f0E&㐧 /ᇋ8M'?]0M.?}-53B p67sތ@vȠ[Þ!џ.|{{|zON#cNqAqx@;lǘ4{;!,fg ucv ?N_BN0y@hi9 a!lB;كX)=dӘ00}7p9s}pƌ mApSjDNyߴbwγkČr$E< ,dǐ@'#7`$MdP4@+k6p9 +DⓂ0= A7$}A4q.N-Q2 _.Ft9?Ebf}4A9B|Ә01%SY? , ] G=1(!xx0M1' ?)y&R@b љ"RCC |Osɾ Ba ωF@6tII@#P\ ()5K؈端o8p,6AbAy(ШkNYB2F_ + |I8 Rȭk݊ULП'F}hf5% 2Bi#w(W CbVϱV3c>{~aqF8K|NZM7<]۹R r|Njw \}ɷRJO+ܼoP"cR:Luuĵ@Lr^ a.e ++_Ir+*|jr!R=I7DX yE>K1̙cezk1qwMNUL->[pT%dtTRQ_JeAB9l(<7 +{Q0pdAmT= HALBVDgA+X>usX~]{+@V$K-VYjxхxv!rrD8@wAJl m(pќj,Fܿ%Ry7xcBZa8k͔ʁlhH EJ V^MM+uvqqX'Y`Z :x0j$+ p#* eʪfvM;uݡ9omQ(Z[F_+yD4N *=K>)^h!cD׶kր}$ Զޫ0 9snjx6Ԭ2VT|2s+NftlYgzxi^vx-`Z+>:[~"s U6`xeyXZf&Ymo5*uegNC@>Tu_'*4@;D9o@ @㻧_A@ oIoMY.4>; گU瞖} S$)4~ڍ{q-Hvlr<@qǧw.n~`t|Ϗeܡfʦ(1A9+ )(V @l7zxzkmCݧu[ZxxU-FI* V516EjMjR/3ۙTؼ׽ lA;_ĭ/ePr7R)/YYe_1;g%4cT +uKgG(sL=y̻pnį:<\=|xz|~vs V,̛~8GwmCS~hF-6%T3tUSUVVN~jAOq 5]:Z3mr_ &{fJ]$!MtkSv;%ȚڝKR"০{ Olk_(Vּ5RV/P%:QJRx.jfCK'`ڏFffZ$;r(r?oM߬TmuҔzIBwM>KČI5P3!6 *dSS] + [x c~ rC]#J&b[}\ +᜖>75V~K*Ǽ9KC氎*2^¿TPbylꊰMG?*[nB?S[Dخ\yH[6 M 0wf'n +endstream endobj 2391 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2392 0 obj <> endobj 2393 0 obj <> endobj 2394 0 obj <> endobj 2395 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2396 0 obj <>stream +hZKsE>m~E ]#B1l Xp0,2+z4%rwVee2fzslNf:U_bR6N)yvFOo6JkNvAkqU:!`;^Ζ߼`$3cV4k v!‹JLQQTV C,+PȲTxvdwkITP"rG^Q)iC'(%qϧ/~,0:%o:,2嚇=g %s2 ab4d t{ŐdcQӊ>̚@? uRjaUنUYђjY;sNpLIoKVB^kGa?ޢޚ uBp<^rBV~| G$gQ'᪏4u8>yqk⿱!Bьt2ٗ 4w?ƏZjsɑ>mOrtHS8w$ 'Yy_ +qoޝ_Nđfg"Ozr U NSCWD\-"dahI%yZQ2Xi&VlB!=9H\|f-h ;>hԣ6H.PIJji C؎E~ADaJ yU57}wNȺ5!IIȂX̀F. O![# W3Wi?ϰVMz# UnlN(>>]–~("- -lc.uÛ!R2rq]:8̢|2qKAV8+|OQf;=BtDhIxuGIsУV%n*DC`!j5e:AZa`!卥2 {= 15|@=N0@Da0Ӽ>nSu᠝lE1^ȿ#jOS{pc&B=sY^2>VqYy&)c&4vΏbP( uqC" êsy˾4R +4) A7r.?U&S5`VXcN>*҇u.ICKU$1%HQݦZ?!8jI/$ܸ#yo 7 +gXuS('#.Vm/ +<~\68?{M pDE#Eo}ԋ>[%~5o\ߝs@p=䫟^^v.p } Mq9}9H}P5 .(PʧӅT#䩯s7\F{pwnHLcU͸v*6RY$փs (@y(˘8,u˜JR$hYfIDq*"28{ow9ȕkY_u?D(ITou-t{,e8.Em>=]Ze{47b{t;ztR +5-Wl." qX$2[qͽH_/+xH b'2_|wIoM̃J.-Hb1SKc$FDx #.XS0q5G4Ԛ h MO^qT㬓lezp{)V.fyţk-¡SZÔE_Ni^X=z +pm8fH7K]Ϛ0ǵ㱰t߆eJ'oL? &`ꂙ#+ P_ab^Ϋ @_crwrc=m u_ߜAь.jct: +1 +HP灢AnAAQ˻ͽơJ(tÕxwJ^R'Gg[kԯz%۴߱eˍLam)& ̓jtZb2B@{&V#1 +endstream endobj 2397 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2398 0 obj <> endobj 2399 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv40966V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2400 0 obj <> endobj 2401 0 obj <> endobj 2402 0 obj <> endobj 2403 0 obj <> endobj 2404 0 obj <> endobj 2405 0 obj <> endobj 2406 0 obj <> endobj 2407 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2408 0 obj <>stream +h;ˎ9r,V%|Go^ߛL7eZ_lLsSYf7Yo?ݟu?7?- tB#aGmD/\868b?&Oui<}<=\=qNj:^^z pX.9چ 2D^{ &94e~P706{?\>~^5a뛿¢&h[ᅴ>ftP5ͫ.O}|<}_8ؼo= xf32B v9eOavj&j=uK ty6>D[COH'DlGWthkP5ĶÕl҆&] ɽ w0fNlMmk\ nZ8w2A̔fn|XsfM<6L30 LCL=<|{x+ST„g?i44lob7fr(vvb.A/@A+JI +b,_,Mw(I0<~t3v\,6D#BZ۶lJ{_bz?՛GѴr'~j2d/!~=e01Л#E45R<&r\ݯG^.2˰Tm!TDfvԛöv`^[!TjTZh٢ҮȵxT r($,8+Á}K +@-a+ "Fpa=`vAnD@-̀ +^U jA6ciwM禰Ù&F՚תATfO @LE E_GPҎzBM#xDFFeỡPg^اй ܿAel~ŵ?Ҟץ^-i6Y;p]|tXfCPu͔rS LS~lц\'Bw{`̅vI+&5*;dw:)"ߩ΢ 8ݶ1B^8"Gi6kF=C3ea3~ +` ԝFGnM VyxpV#Ll;u%>kg>(.|UDDdl.ED_f( :rdB=oEM M!拭J֥;>FmW ) 7 +*s9*Y?{"&rƉM)x"|א#`r1* ME|%3 F!@;OؓHԽ4r\{_5GEB ^`@}u#ݕgҩ:-ڣ aI_ =VoEKrp1VĦah mK-#X{ψ׈X{>:aj3KvM* LGhI /1łJэuJ7eR=ZF-:VaѮCց$Z-ylIܢn< 2(U +m += %-wGۭzɶ':S4܅= ɝO;?h1}~цMʷ??uĿruS2_-ـN{wP 0ePT~C9Wn$x:\p$jl!쓢a?SW2@C-²6 ܞǵuy,d:A VLZ}nng"i/ӧ +cҬtH|F5}{B[|~W'mo0(` <p .KQ䪷U99!a|A|1`ޣ LDePpGyR#} + L넁y1({.ÌJ*H*zHCVrb-:zb0[zaNA39 RObHc1e"Ha.@Kv;wLhLCەKIEP,c$3Z%X:o-lw5[Px5[^ksm BHp:*GG{EhڱLw#oa`m,$![쁟 ӗc~:QJNxyxogDд+WMsR>]!a%^v\FG%iF;@BVE-TB2ҡs_B6pS2[HxN߻T/>9G\TIƓ(gV%UAzabdo4 pݏ-/r.5]7LlIE7Z&W;CW=ДekSlAKV)d~c֑Y5 ^]G^CK<#錛v CPuFvvji0u[Q^<4DD4*]_]|2iuhDYQa^.g@EH쁔|VG7`8HcbQQ6H%Wܫq1oi[Fxr 0k Vv"+0ہ$;QdmPD-9Ƅ{0ӇwtHӝᄡNv< m^x^޼n `Yk5^H%(| O +Յvr%~Qe5YpF/D7KJ xV.]@խ3ܗb*(CX`4vMw` S͹ b0 +e60Λ뺃-<G1 aL/9Dy{J_ w>la&ȵ,9Z3ePuUh$)M'1/wQaQDr0V"MZ,Imyr܋Uu +K5r^c[4ȇMD*4' % 䅨M'2h/De[$Ƥf@KxWױ֭1̴m7I*V,pu+74yo; ԧ8gtDP͂`o]I$Ŧ7νۚm0EHR>QU-CґC9nfW ͝hG61[Lϵ]U@׮*ؾLQWmҚŎ`&2sy"s6}k"7N$Za#nLyhg;);DEoz*|] [ྩ)fQ^vW8twae΍RM`h ©c>hkTҍ9qPl4JY՞ˑW0\HELe#&0d!Ҟ$LV>P,9o);LPzm|s>+"JM4u*:FWIQId,Nl2 ~pGac=AW5K~J*}{J}tDEuHCO"* ݇(`ʪU4ٳ^`|yng +lI֪zm +IِH6d*hS\ Vtd%(FƏOs4ة~լE TvRr{pלzeWNeF& 416K +5;Gy-eTy2ڙOP| e^F]n}Nϴ6~وf~2B^pc]Rvߪ@gHilқx  |܅ yym%h(H52mlU5sS|/0o(ՓꈝƓ 7O*ѿMC=W-W`Ұ)EK9QlsW!>E\Ŝ4D5NjN &I/J}](aiYo‡6;w*١aMhi±)Xm vii9D8w4y@*y͡HSV;rua ;1 QK1btaY~ZUсm`餞C0Mהxh̺'KU*#uȽWץD566O{YUV'䃡eljV=pxe0$7dP oe}3A+*V2ՙ4e9VktϪ.qO -_cmHp"WVl4]3y$/?6 +endstream endobj 2409 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2410 0 obj <> endobj 2411 0 obj <> endobj 2412 0 obj <> endobj 2413 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2414 0 obj <>stream +h[Kd_q R>R $R$$We1܋m~ziOw_fE@>~U_=7|Çm}Ԛ\\zps-(<᳣s1;sZX8+W+%=*6oPI:q:;}e3OLS(]`|\ Q{ +?rOeR<ؽ Kߖ5mۖ5mkwOn-LX/e +K7=&9tȴ7^:sɷ]56ul\ma+k5đv7A{Vֶmmi dy;˿z'/ˇ~}@<`%3װë>}×?>7}}yY_,߫ے'遞 y(,QW" n[ZH4[)G*G*,Ck+ꚇ_ݶ\s[}*h8T` Ki.sHM9 +qP-^%mVЧ,Wm+GZկ%B ,-jzf})/ ׈޻ED`>m^Th;򖊥H+j'$y8x֭ +* ph<. Gdfv3I*U47k,SOr[*ö̝7͖rRnZCW(ͪG{p6(Ԭg~ӑ_я5iP|>5){8SSbg_GE+,J^_1xtG.r; ,W!cEaB(ָX,AN\JG cзeoPP"@8PV=4yt+xU֩(5HLKb g^S?\By9̓^+1$HOqQh`$6t?|N0o@p¿~OR饥j}x*8X +n`}xkFQ fdFJm)1o36Tvj\{1c90l̖s{*ʿn=_ +q]R%ξAAY\N2/(72>8w jԶ-Ѓ>}2ibfJ R' Iې[M +  F7\mwTz'G< +Ú\,;ۋ.^0s8_܃q~ uV4pln "588F8,GeZd)=Y2un"䞀qyl)r'A_EE*FIRhD"F獵ۈt7lmMU?`W2sVEZNl_,@F4$u7c0(6uE?T9}˴4)<[XE1U ߬z;)R%{!}0H}h6VS/pD$pmuRbJkg1v41^"%VN%2xGZDoLj)1 ? +Kn;&2C +Sib.2PdoUʏGywϲK3 &QїBC?w۵S5=Pu0ƪuXBL}!/jL}D1P +@vU| jq-PQ nZxeXJ7,>hA tf;J At/wKKEbi g\h}l`12ȹ Bǭ^%%[=Ler=ǑY40t0 [,6P{0I1?hSSCXN=*O %;xs#Xo_WR3A.6 J[`GfUR7X61 F 2&۠k8Ǟƣ.iSUN3ߛjV wo!\Q".};YOTr +Yv61xod &I&-jکvcЉ5SCIW4WCxQZKKNiT\U{b$χVh!YgDs +X!GɇAJ"8@h%q@?R/`A`W- ,7 z-/%=#:1'>Yrnǁ Ms:oɞ; &)ܴtev;-)~㏳.)#깣r/h'UO5r5:X[/R}$!R0la$K.qaSٽ"6 VfILƦiΞ@xڱҔPD+WH + + + zlRO+K{|ٓIQj4~F-|&ReS$ qF\;˯Iy"ҧ-B{o Dqhc-BΟ=r>qBNtcAT|2Nec,\76K|LPMv\3}vGějvD2eDXS4(1^4lӕTjO|1a l1/Re'ۑvq(nv ⑸'b1w.QIO ;y:ؽory =<-oĵR>ZpFk45ԹiS Fw2Y{ "3&fr6Vi??1swnWM/*-پ0ٖ<\Ws <=Lu(}֋zooo3%r&*4]kdKGNЊ>ol [jL^v@\N!C~ \LD`^a,FcŠm}إY@Mz֟`Z"2Ϙ! sZpF}`1J ?dSeHM&[@u˼VAua$i%G"aXLyy6e):}<\=!lqOr޴`d|;vbFT~;޺XscᲈM@X-iD&O[@uw1șȫ$Kggh<{61̴J6Oؿ~y9؄I1K$"Ah~x(DK|SSD5+rZ3E3DQ[oKi'34 \u(9(c=6mR۔3r~*=>I@}`UHrI>3׎&7ӗ灀Ջ)Wb'QsGNjqo% FMA٣"9L;tJnPc~oWc_(stѲn:(u:o{o^i;u:ɵ;W@ugM w-f HcwC?ebU&&k&&mQllw ?w\{2l0I\ޤB3, +endstream endobj 2415 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2416 0 obj <> endobj 2417 0 obj <> endobj 2418 0 obj <> endobj 2419 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2420 0 obj <>stream +hޤYKϯcb|?A 99g ,5?=_lv`EV]÷0ӏ_tʤL6&T^rӏYimtZ~=먵 i,IŪi" 8 +&`T!L%tؖ,~+-; 7׊*2@hrJ ɻu$]fq7SP(k`HWlXyv`Yb@ h!2gpa6֟ʿ=SIYWJOp=>$R>Gr2H^; /PFv)h doq6ɨi~LP޼_yizњ4}3hOGWʹ'i<ؚfh?~y~^.>[1NG(t  +BN:_*?qL;VSbͪ+ BV ge|nVh+!Օ Bc AwX X'Tà0YE_ +N5 + ƨd陕5akjTta M-۪Hf)3bsAFLatRHjv"+ˈ"GfTCD]L~E: `rV@1:@Z<{tXE&L +P +Ga(*l4r6j)lAGTp L^DqXZɡSmݍr2%]#dy~bKjC<kL'qƙkZ6`Ki5#IJZ<Hmoj_Ըdˠ9-vOTj3ե-Go31\}teBRs]-ctxav%UJ9Ռ/P +t +khKr6y#~ϭsd:[HM_WT#]&u +n؉RMQ 5x--46m^\Ŏny!ąQz8ण #FJ18љ~+ GSY7-Knh>!>^Rg 5Ezc k6g3P)+y1ьG;'yR42)FDHd ̻(݇fL2JbfkH0 +l1c=tQmtqyҍ;Њyv}4!?|u mf!+ՋCЏHU'W HNɍk\E9yYe< + i{ ۆ[%uh O^%jFuoAԋH+~԰-387KozKNtu-FOලiyeܾZ +o[8^SLB?A՟厯C'[ՠ+$a4oWŽY%*{VY߬gTXn=KF)Ӊtȣ("Uizh{?лZ(ZmbuLқX)[zFIwVuBt= _,n?# 5~^uzO۷O, ClIAVyydbw/ ea +d\uCt5jrӻ>hwwʅ| Bw/Р ݑ{ +u_??pwnz/W/[ǁg >v~R]gizJI( ۾cm!Z弈!l^:xhǾG` qG= u;^݆$#>ѝVEtܾ7Jѻ\*8_ߴޒ,u){4z늳Ot][[Z_4\VER|h6vmt8NJ#UE‰?xYsad[2'.qIhZ3-ȷ:^ +[H|^`ǡiZSqW&S8lrqBwZ:׷颭{.džU'9Kiro4lgsJ΁; 4- + = > +endstream endobj 2421 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2422 0 obj <> endobj 2423 0 obj <> endobj 2424 0 obj <> endobj 2425 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2426 0 obj <>stream +h[koDZ_1@;`QDdqaDS=R~~S3ӳ;K2@AvzU]]uSxupt;{u:boBmR;{{zLQ8/^),[GxPȓsk"?7ޙ|QzCaݱmkW1ɄFRAF{BmmTc :_tWѩ9w9AN1̾Ҭz +GW=$;Ie+/sӘ>K/KIMo*DfR?KY Sc3Al'X>>Cz\}RLtz{CwtrlzZQ+G9+5Wcoнt%{0gߛnUK>8z~Ň?_ۋϻK}t|+WiY=YQН7:؝Xz]'Kӽe+e+eȏ2wت6z4~ܝ8*7W$Td9X)ke66XViْ}vi,N}py|^5h魴oR6J_xȁcـa$ d"]7Q&Ľw9TTZGgOqf|1G)9dlM2Z:s,#{C1ZS(d~d%'-BTD3."blJ+uY +[/3v55qq,<@Qś &'2'v'y V+r,eSRΑ*]'ƣM.#뱊[xՒ1Kجٓ/oBJ ղ6Nd{ϱ2@Q%CU3tEt?TdW"^{Y)nz˚jan(2r!vmɧZSfLná,k8JIY%˖=1}=^v>K+_yxrC9aOƟj Lh_,}NCIbK=#(y3{{b`)=[Ǿ\1p擙C1kV,z*\kN+Xw !jl% < +*Պ_=j&2@%O‚ƍ7WQ;{@v4Op@/C?2Kam5L YF`L4ls 1Lcn2nouP:eeh6vU_&JǧUy QOWBm)j8j=G;EZ'uӠ4z5`C=)(| P@7d5COZ6o/jQqd*CaiCo-bCo  %Iƫ?EtfDao{E‚$aqXM$[9eDOt"nr;z`v#V0YzTA^^-?j> v#wqxuqRܥ6p}})0)R>±T"%1'WdS!m}f0ₑt͠8}HZyZ'4['' cEw@O?l7)譳_?|pL:p=d(}+{P|ǯ#;<РG:ٹIz$oQϲ}}}υ]ȡ;˯w/۝۽x?݋w?tNPGpkbuӻw؝yOqf0Z?W.v`.I 1 Nܕ 3P|z~q͕nb}mBw,sP[it'.9ղc3\COZ@G:i9CaxQf/9027GǸX}T|X d=P=lʼKVYKPU\r~^@ Fݡ韛tSk6a9JtkX >7Uu=¬x;Xtsb.'f&F&fM Ųs'64 N&e r(p=Ju4]@_^۝Vl^)"qʊ <DcѺQL&W`rkzcɄug{NF +9kZO JT7hAq="'9o:௤k!)} +v$(UZE``ԓ2۾ŇQA?^ /). +;Nk)B |"2I8ne{S -t>> ~73Ɯ并EP G:$-3g6X}_?2 +|Zf˝ܽv: 35Jl|WZ2 J'^&{4a=%{$T>6"phem7LY3Bȼ:Z mHm2u-z0AzI(u%n? +#jMϲ+kô%#3vyxyE nO z13wZ?dha;n"3!QzkѧiJ@ȑ.w DT$M_Ypqdͦmͩ'6A0 PQX8X Vi XM[gA=#VQ2g5<Տ٣N5w{fi-\FfuK$XXb$ڭը`'C{]I^OƥL*?4%Iy>Qz C8+YyV/atg&]6s M%\*< HQ0pC87M!0RnDɃ⸴%]& i֋#o` +}~owAji$qIi~y bR(:0'uicPNTygEkcSILtA9Û'ZYVݯ`NsSG`#絕4P][PL.PP}iYn+[޷2'@͈Ab <h^lYy}` +{ϥi` H 4;LQ[3KnI8].60HDONN8 J0 l*˽erXv϶P'7nKLf^]; Jt< zu[`,kx0SO|tھzM'ӧ$'OV7#INuxوx_j/k{Ԏ]`>.#I8Ԏ!B(i; ~K7 W2>Mcs51ܑ3YtnT !ͼ&bk^vĐ.1|nog;"VځaҝF?h8r_),e) YAKJ "ן6Lo)`)i}؁t!B"a' My2.Gh% C,:`ӮQ Ʒ돚>P`v$]z:i⡲K?K>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2428 0 obj <> endobj 2429 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv47939V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2430 0 obj <> endobj 2431 0 obj <> endobj 2432 0 obj <> endobj 2433 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2434 0 obj <>stream +hZI$Gׯ# ULԪcCOy26O{K,Y0C#$4ꩌE}|?~I;BـA1Qh")fBH'YtZZk|P>:02_fSpb +.z.&w1>ḒL"(!zKO,ǿ5řlq\2eooۯx{nS@g#]-_m=[jЭ#Zo~~~߼1oA-:3䝷DZ3) +e;&l/:<<ƥ&i`B\ycgp̤"34΁3hl$_Luɱ갧wtOxy][+ $AjBx{ @T>ڇǹ jcIQD$mPwV.j {6M"CN㶄w}*"q:O|:r(!1cY͵3OН)<)ϗԏʿ4'.+8dB*t +~@"kq@x4=ʝ~Z]ڢ$LQ2)aucLu`lk{LO<Ue$(>uBX΂BVL\/ `·h辡oT%-q%_>t+<3Jkך`* ly{b?keƼ=+֥˚ mpT6l˗$ȔSgH;tdsz9Cñ4s`MyPFTyyz9*:@Z}A*,^EzZpҪIb顳GӾX*t}@.Nt̠NCwe1-N⼓WEEMfYƴ3"/NkWOkD{Xmװb+k% `(v/S g.FqQ+d_۹T}D n\5;޴.oQ%Zh +)FVx-sy8'MKnUc3K@gYF{HUg;ZcsrmNIiN;O[)fV^d/L nWm~F{d5R!$Lgz%b> rӪ:3U;p1fTۚLoMvyJs˒Erی;M}[æ tXcSKϗ[IR%q:OL Q8琢Lo{K=ߓGr}z]*OVy{æFC{H9'=b0y% U +z^qj<]1.+s]TTpU+~!l +ٚ 6J. +?;qܠ(-R8z0*x.feWWp&G~Gg 8E:m"D*F ժ}8 /dbMN⌀m eJ*Qe=vxu͆LFjW*kt`!Qk=LAk"`_쪺^:3|ܼOFkx3~;( PɉEU癈M \)]GqQ^ _Yi + | LKrc#4p!wUIӨ$A{nr]GT>|_Prazvܫߐ\X&rQXk%emsk"+=#T)fK,xɵXpQL[(px9 )jUⴧj&[E2s R8Pxji)#A!%F=K#%L^adyJt3t9F3scǸ{ sr֙XPMw,kn]WPoe<){Y_ksO=:"/@$EbNrBѧ/cQE}dyaJG|RE$ۙu%:rs~W.O| ɯAx.&eQbuUQc',r~ 2?($0(JK$&IMm'(@2dPMfg/ ez̅WDvQc* (D!2694wug cv5 ǟքe:{Lٻ;f4pa{\$cAVY,;@wD.'Z^ʮNcV*ο0ԒJxR/z~;П}[e TO )v`p,b(_?9N'8!zpΦRJ~sOžWx혜vUG5 +{fd\F)F4+OesOu eK?f'ǮZW5l zڡ*u`Eu.M,F 4B?-x۸,xI"L+)"ojn㲧(OPQy-Eu)RT^GQk_KM\>b6ž#Q>xG2"۸|6E+)J3}@~:nI2/9* +endstream endobj 2435 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2436 0 obj <> endobj 2437 0 obj <> endobj 2438 0 obj <> endobj 2439 0 obj <> endobj 2440 0 obj <> endobj 2441 0 obj <> endobj 2442 0 obj <> endobj 2443 0 obj <> endobj 2444 0 obj <> endobj 2445 0 obj <> endobj 2446 0 obj <> endobj 2447 0 obj <> endobj 2448 0 obj <> endobj 2449 0 obj <> endobj 2450 0 obj <> endobj 2451 0 obj <> endobj 2452 0 obj <> endobj 2453 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2454 0 obj <>stream +hޜ[o$7_Q݇sM鳤r=`vM;]= /)U8ӥGIE~zŇk;"9+qmُ.Mnt1 ?]dp@׋w44M!8ﰰ40ë_= + +3Vo[xgHT?`_;x[nlcɸ1hvq4/`f1i9sNSac]}%!VI4z_)z97HIfn2XYtSK&`GK )svdwr-ԯ0qV ĞzZת{.|cRl6L >q2|땵fӟ.h&|V{^J+y31C.P/w>_ p=Nٛ{gqx^#n&1˧R[b1d?Jٕ2OTn01J~_]hF#ΎS;7 :b9R6ex zca ,Op$;')C購h,ϰKcol+_5ctPaGpvH&.Bszfi<_ pM#p*tý- > m2G)À3 ߺcA%7.mįAqvPStG˖%7#qx +`M)ͳ*e_e3X '  RM~LaeM/nS?;; +幖m_.Fg$,0 ~~(GT!=+7!4OmaWC5#"7<N< cmt @pMe]D/H0eB(;g73uOM!=KJu)$J4Z+ %5{xZ\*E2),W|#?PN|, Q~ dX w8c;?WnPձ!E/X/b/ bkPC6JR A@i?mâ"i+cҟбKH?^m%2^eSUaMW3j'e¨}. &:̽L0R~=qZ4 d.B>ˆByl;{/ +2ެG/VO @] h\Q_2,JHbW&>M h>ǩ-[`;?SAFLd%/)%@ ]lQ}MPXt(c.?౒96s _CYԴfJ2M_n ym清&o{y +NJq`z@_^Α̚5 +9jy:1VIʉ=7FC5+}D^ѮQ '")o‹06F"m<6R:Vmde[}{=jSAOIP';Z6%RoRRK*G +ѩFh6ҪIɼ-{4ԜYUOʉL1`t^|IW-nfX^47WW?^}̑2|)w =?3i[kJEO%mӨ$mE,BXC :Y@*|[숅wfȸAIp.^ ]K" L*֚#B|[ӓ$ђ5!&upI~ "SnirOO 7V-lhCm!H:v[ي{U&6?҄9 ^]Ȅk(̳VFei#PDžI+D PVP^kbc"VpAfz\վRťePY`s)`=(#A*fRfFfp q;վmbg3'4@_` bd JDogtɈQ#iw3?.UjTM 1yኆ~ubD )+J'A9O#'6q.'C>/C|n{'8ZIbgH:HY_HѥO( +N 35B9JEfYDLhL)`I GH)+'G":E!,ƨ:vm0+SdX3Rᴩ^`Tsq 5qU#!5gڢJmo6e.')LQ y`ؾFTҍMA|m(fe! 7W:ђe2@PɊ +0#"ԈiR 1ޏqs&+#oXuN^0`AD"݆ D00At;\6FH;cD# BMnc\X6́ڝtS)*S3z*DAmK5x:V-M{i5@$4qVjR5q2E^WfU~8_RR$R~")ArbDw(ESC.SnX 4Gzzvvw㹐{4'[i+jU-'&{٘H/v_*f/rhWOۋ&qx墥0=Bf_ yt8\yV2'55v!%Lm@š:{-gv͸==|o;XKDџHKt06@:tԂŪ;Ȁ)4:  WSW21z&.6X"iG0e5gshbKM33,O^XbOJֳ>gM|1-4ݠP(PN3Y]>7< +D*j-HF3V jPHMCۮ&s:+0Nfr +4^?|2Rw25&h|,}lyO6QL+1\)cuY ̮%!*D<o-c5\]DG7[{Μxɟ9{!sT޼2h,وe=i9[,j,I=嫑l4Lk>r/S( ov`yyVys"BC6,{fpI}M_z]sٷF0)+nU>X)QyveeI߄`6]baםJK3q1'w7 4tg!}` n7m>v7|CC3YYosHT2|f[еz'-l+9ol-gs)<ݽ6R / &Ky"wi=%{b70 C}0OhXfMg,X펬B ԃWbբ,-XE㒖I̶ wDn`h7qgc-׶[J<6;r3R] +tq*tW-9]b>3?2k|lruhf8F!PP; $txFoIVꚉQ&-XStzG_5e\&|r|z8r+wAy,EґzT^o\vJ+7dk畈[&)_Qf~ܓ f(= + Z\uOT *3^r ϕdR8B i[D)e}'0wYWy}}o_Np +endstream endobj 2455 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2456 0 obj <> endobj 2457 0 obj <> endobj 2458 0 obj <> endobj 2459 0 obj <> endobj 2460 0 obj <> endobj 2461 0 obj <> endobj 2462 0 obj <> endobj 2463 0 obj <> endobj 2464 0 obj <> endobj 2465 0 obj <> endobj 2466 0 obj <> endobj 2467 0 obj <> endobj 2468 0 obj <> endobj 2469 0 obj <> endobj 2470 0 obj <> endobj 2471 0 obj <> endobj 2472 0 obj <> endobj 2473 0 obj <> endobj 2474 0 obj <> endobj 2475 0 obj <> endobj 2476 0 obj <> endobj 2477 0 obj <> endobj 2478 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2479 0 obj <>stream +hޤ[o$7_я +'!n095/{wGJ$EUUO&w2nECoٽt՛[3ۇi74ĸn?\WaP81t&ci,UC9Ll`r f? 3~vX+7\SKhw)jXK=:w╞6z#61s +e}?bz.8~6Q X7sL MӴ|xpEPaEd?!x{ޭc(?`3 0\ +CdHoHB$3X4dH3a0N曗ϯ7?Xkw_sswqGq ]Og`.L[j~o7/O/?ܿ~|wa77nɛr@4CG;i-!󇫃0]0'*Rvl u&1 Tv34΃f1TdJ>XcH6 R&Of5&/XN1C7RƕYdppة}G`\",32d3?&i<_ pO\膔,4~y[CY +C3p_5AwnP'brPNSH$5BQ8H_Me^)TiվX6# A$EhA[(|({ +XNFB9ղL xO~4tY~zANx!&L;qGaN5ncZOSH ě0Lׂ#A ? 2C![P>$5TΕrmkt)dJJ~4wx]ʅJaS, +?˅ #]6*| WT6pOۀ FzN@yRO^$ PszϤv# AtÝAx>{$C<ֱB.z5I n`@y:T͎SW{w{ZLZVdm +\+ Or +a:߭RA <L/Ȳ <*Wߔ$TԌ9e5[Qo?]_ϯװ |y=dyq?Nqsu<%U¨8+0tsz_~50?a{s;~&KRe6ϟ|Q^넻<7m4+3PZi}M`X۽)(]eGTv`ׁ2 椹dcq5be |펺@U|[ 2M{ WhL Waq2 ~|y  n~z$ J0$u6n!nEK ,V?w<^U`I&]H=M?{},Z-ӘD A + VXN( `Α::KO,Xڤ/UON0.׵"ݗ;hՓC1 ^CK ҂al39vQ܎ ID+O*wl=IW>&hx‹ +IX{鎲uS֋x\NJﳺdh< x JFU_D@ 薗WT/y)0#hkYǾ(15xSTq[w/PAHA}sJ2yZ{30v3[x*H6be>; ]$C1NI1)~ UOUc E>~=Vw(oVj(6馦KBNps犢5A#y?! ̱sA;sܑkm.+'m,ڝV\.GnXf,СY>Ɗ7DCtB3"^:;nIy@"p#a=fU `0&V lvp͒lna4d#mh+<%D <$QuKXmLNpN10KC]/vXMpB:AlSq M2ʝ&>j]:]vXLS^_'&1[u3!Fԛ#eBHHHnjC>fOQPlD78#a@\F6|wB=J[%T#[ ٧mύ~s .Z)j&Kud@uͲt"'.Xؑ?{s.Hv~gEzr']x!d::*̺ꊦ%sx9j?SEqHgo/\b~?('(F#αҰB`ݫД^X:Ma)>s#ס/0\ ޺>% eWΌO{2jj+r==9_FaҚ2_i +6]Ŝ,7dbITUo:2/>R\Z-YkQQ_?z[vYvP8^Ɣߴ#&A9m{7e2l4$kW>F\đH?Ȃ̆$yE +Un={lkS @DYp I0ɲ0Ok +@9NVfL{hPv zw4|Q:a8(Қt %UkI<kf٣ 1 ܣ5&y[V#0{&d;*s,XVӌj +_VlQGh"~rA6 0i.igx/7KU?Lq96l!oc-! c QD e9B+N 'ZZ. vL5ޫ0/1܌ iޕ% @&7kVЈ#YP).[8^Hp\CZxJ(µwyih0,C11T\ͫ-rүp(X*so8PϑOܖ ss6-y@wNT}:Mga8D +Khzw"oL|5o/Gbtt͏"DLj`A9?w>Go^!ny!EXqH DKkъPǒ;b/Xc!<)crSf#gΑ̵j5L۝5x +N~9N J{lxUv4yVjPP"6H[63IJlf\IoO}$ä +wOV!^N[=-E*˙X1 +{HeyD'\sKsW0dt?TwW:*d/[5ews sO*M;=I&7(\^hg9\%WQ'MYMj1(mAn3u( `ew$20ECa5!w+]㐓 w}eu %v%#Ewjچ@!XO4,@{}"otϑEBvK:Fu$uR @c?b$$7nr~Ab@F{Fl$F:EطsanlL)we8'JbUxwjw/[ْai7{-QDA:I{.i\~R %_PN{q`$v{5sCȩ!ro>\[AU3%wovj'%J#nFAnz${66+*꼁[SsZ[]sҽNI:?$c s2N7/$m72+̻rPq:qwW]KyEyYzo;B7*Y3՛r޽ZG~.-pb+tvL[%[Oً[WLJe#ڷ-{&oLbp;Ni*L.T:٬]|z*닷r\kFlF _UIye⬉-TfnorSHɪm_UW4'@4{xWw)7oms UK<`YE1!Qf0풉zC*xct#4d0iN08 #=C ,;Clmtx}.%'cZ?R%K}R~TRn);j2x&0VB*DIUwexi1kzVP + Ы)/N'HgFwZ;Y,=OwS3,\}\`"P!6Jv0Mneo/L2157eLm%C4.f"&9y_erc!߬JY>Tеi׎8B𴐅ޜ +[Lr\}G]E$E2T}(0@{9ǨXAYs + #SƴR3mofٳO' 긣&l&'4MǍḒЦm89޸Wva9C9kχijTr@ ?BSOk&zЭ ~+->/A!Y ޺qBK%";OJ-|Wx/Μ{7\) +endstream endobj 2480 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2481 0 obj <> endobj 2482 0 obj <> endobj 2483 0 obj <> endobj 2484 0 obj <> endobj 2485 0 obj <> endobj 2486 0 obj <> endobj 2487 0 obj <> endobj 2488 0 obj <> endobj 2489 0 obj <> endobj 2490 0 obj <> endobj 2491 0 obj <> endobj 2492 0 obj <> endobj 2493 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2494 0 obj <>stream +hެ[YGr~_Q=XygV#Wd`5V<WtǙGu5Exİ++Ȉ/";3曇7v2MKG16N)M,7<=/ xscpgfO!;Yz^ZU Yy>Kmo;ă-&o9y1nڃ͞['X{v)l])e}*%O盧Úbz&2Ueg8')i<. ˜jK&`g+ڵ]aUNsSAoZ5Hύ/qS.s & ͷN94Z7}ߠ$Qθ]2@Pl;)a5o/^9z}>M0q:}zKr'@V)X<$YDNP.s(~"L/RvTvT Awv7%ڕl|ydl>X^"p$s-CK}h,'ޝ1sgk"q4 h Zwmu9"`)f-Bkzіx +$!g G@GxBz[o#~O%L(; ;y`J-ȸHl٠"ywS˝'%7ʸ<$(ECRq_,^j8T4H,O#( +[_/HC/hO8 $i(-F.鷛ٔ!A/h'"5<\ >TDCڧdIXu0v慊1J-J!xy8x撄  8TEU3,$q'T73SCò a[Xƞ+]K!KW)D +lLܵUi r(,ghG贁R@NhO;A^Y+hAljC㝹l}Z yN/ĖmYgg[ [Ux&\9O2" X'(I7@ XN n`Jv ~lP]Gp5z{ۮW{y^j( +ddTdng#t CܫA{vB֐dL["~RXJǁ$!*4i\I1Qdzksd'hIA +5٧v,H,Scյ +Ϊi  ΌG}"Cl*XETRrr|=յD+ؼnbt9-\vL_e%r0 *A0iˇ_'kwm{ =HG.ӻ37ͻO_yz;әi?w?|or{;*DTp ػo"!y`n;ƽrS u[S{Mdڱ\ZgGA0HLXwF8ĺ~?f/i:mS9< +@K#;mh +i^OAT8X+G:壬J)8p9$ zNDzrQ4AVWd05, ҃(С$"J+ΪA:NShD>޼2 f? O:+=yRi4 h!bbmD/Jb3#6""[Ҕ("+/Yw|-`weC߀jȀI= ަi X`$,"'Bޘ«QCiJ@ + րg/fַyjo|q K٪=/#1IBRsE)9{%hm`gmв3< K/5ץ"G\\%'ǂWbs=9FF_$qEU 18 F8SGu|4@:B2H(,PFxlWRŶSGI5yVc0 [;/8C~FE3*RDGY+:62KٶRi6:x@I=^@' ^&쏨g֧&LAgA^KgoOM/mC+F烠ۀr:u:Fpy%0*R 6{ `"9x0mJ'OҎj"qXzɒY;l1G* R{L`ԛVarN-ѵX;g\*ސ++vD~, +0/_}Gyߢ{Q~&V4SV~TU n[9!@dR(`V,BX}zڣL>SaP4bpK+%AkJ ,wv_1UkQGᔶ#H+rQ` )jƪ}:W/;򾒮qI} jFB0݃ lQn"v-=VrcclH H|)+ՂZ`]آڭCʠFRbDƧZ:^e-i1VaVGT>}* B$ AͰ@Eq%&e]bƨ른+˦< [y_SK'-՛߽`>1?M_$Ց#d3H_zw阷f7 o[+ + $ޖq .z4\s("ub&1@%ORܑUEms"55XC5 5r! )tAמ'? + )p"eYvvX 1Q;?>,)FDгvfW)a B`+МW_ - Up7,uj{zPnu=8y\|ȫ~[mI聪gnc(cIw}|Jw`\]>,_ 2Y81ڴr[$k!͚Ԛ 96v9ὤ*{~K__ۨa/]hX7*֭w-1a^葇&вz~QZh,F+?[DΪZAgsFwL_4}y5}OC8B>FP[ fj:oHrۈS} +u?VԶwz ]t87mܰ湨_ 0vx5xY"׍GfӓW_Ϲ>^ߏ[ʃ do 7 CWɯ7JeX]>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2496 0 obj <> endobj 2497 0 obj <> endobj 2498 0 obj <> endobj 2499 0 obj <> endobj 2500 0 obj <> endobj 2501 0 obj <> endobj 2502 0 obj <> endobj 2503 0 obj <> endobj 2504 0 obj <> endobj 2505 0 obj <> endobj 2506 0 obj <> endobj 2507 0 obj <> endobj 2508 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2509 0 obj <>stream +h;nry$}& Z'qpoP#ҫDH&~˧n]=$] A`ȜKUuu?~0ݧnܘt7ǫ٘i\wj>]ma0uW ۄB5+&nq1c pߙC(e[כFxOA.%߻ۂwʐ6vlehdC0@܉#Af &} Y\A&yV^6ȿ<%1c[7MS4Mc|:^ =@Ov揱Oj:BOev}0L@Lo,B-0xtw&>4S?Ύpt ٛ/ݛ?^_ d̏#9MC W} ധѩcst4҄p::8RӉ!mDVJ5x<f;嵝 Ŧ0l +" 5PbT )q:n5ٌ #=ЗI ymٞ ;D,l=ch;~D4h!٦6aARq2'C#LfGLt{9bAy˜ ⦑!2XI!e[4@)!nʐLɺXbφF)DFaCM %08@BL LCT_Ǻ"co3ȥv,h CŲ"ȣPsh5ffx1A&8lA4/=+;wF ʙT.P(@KOh>0.iw" !bJgd_S^Y,P:8-(2Ƅ +$x3sSl}!^e"*G./r4ߝq; s@,3]JV0Xw;! .h;syFȠ\S0/O S@ߤ>ܥLCa4Pe6<% =Jd%9o@T/ЯW@ 4\PP d|Q2DC3c6S͗mRE+Cx)8_GD9#1)6:FfjP)RR2IR1+Y8yT [NMՍaSj/qx5=e[B:o"I;R~Gݜm@?K1Xb.T#LTD=m,#n|ziv01C5.R.jb+RWxmxXSl1>MVQzll|1F@3=*6v~)fWG6hm*YWk,& sf*D͙<{~+\;Kʣ2***ɓƪH[L)Ŝ#  +yRnND߅.2=ދQjYft*#)ZǁE dBD9fNYe[x.mb&UT@Yʖ<ю2e~" -U L5r\](,X懧?^֤Ye3< +x= jv G/?Ciק4zz?inĜ;i]G @{y]߭7qu7?a Uwx=_dTi}0/H: 1u [=?Z_~W~apn_y;>@6\ݫP&C(s9{l{ux_:a%}Q ?$#@7<]5:ȋ>0\Hk}-8ٖY]w{9?¡8\3h(#LiLMѭRAXO2@Ƙ9n/̄#=Ee@Z}1ϫvk>UoJL׌Cn xg}s6V` j n}, h;70ڽۮML6uS6ug}V u]a?P;BL˭"{dc_B08Ko#SޏCXշD~MB;VՒqq'8aX=kKQokU2e'EÎdöloA(pfʡR ULҹ@+ƒC{W!I$HRTHj ~Cis1+qn( %-YE7L/jcܙV"v9?60hŲ|l3UkFeTR!, /Gu(3QWy!#7bVyVYUf >V~v%aְAՌ?v%VsO~\ +EG{D %Y"-:#o&j4S?wߟYbK }_S*- %u*n/,Q6LaI$raaLiu .XL32=}?v3vVO䱃gG`hq)"eXG0lJ +e=_ @sRfIڧa8GUǒ$[%Ag'6KlaHͼZRh.Z>L/oU\l)o К~vXRq֖!8E N+jxEZWc$|'Rm!Oxb:E]n!8ja +i) re0dPZtc)oǦL7% Z=g9:rkH&b%r78f Jh@ #]o;t:Q*vԼ0p ĝI FSvj.=} OyY-"O( n +l+_>9f[f~45tp<_&՘dKEYS98*ǺWθ֌1KU2؊ȥ02_%򊜁 x:EQx{tbS鸍˔N)9Q_U@u >kD, kP纭`Fڬ/ͶRyP򙼤0 +NrL;zv$RNuxP=qYUS?__;V;DMV_t<яcox2=IdU- a +I&4ᕱd.u-H%wJs!+kIu,=Q*8ewPQIP(5Xklڔ2Ŷ$mnJAEk-UKTDMK`kXMp(7t4*U!ZTr:%Q fN%E/⎅Z`܅$W$4\Q*$ոGY֝Nm,&c0y-޹me˕;`J5NSɫhA('aƅ3>nD"!,ڶ4r|IW8 I(i݀8L^Ens35Pטu\q9AL>?hb͸zKy:~m)FK*[>^D 0pTc0_'2tUUk,: xjcvyڿR^~\/p0He]n{HM緩^T`^DŽc.EYUڿҡsFd͸~=wtTՁM;~S oԿYc[@rӥ6""n$<8 b Id[-'ŬMHkery߮GINK,h3ɓrOdR(H,%q$ᔟ^"@Q:J;i\c[C[ksdiVP4H脀>t$WY1j:DFf:R](bjE綉ɘ&UJhUG(NO K6:ٞXtt)9dGz/VeJ]')ȉjI8>k,g-H5:@3O_t\krEz9 a enw11QG@5us-TW7&E~bO8~sAcSIڤiLZ"g#s Xky jDoT~*!LT$ӆpC&7q#[x)EAreUoUR\XGeE\ 0d;^ PHp[.gK<\>N%>GmL>.ZT!.gW߂dc-wۆf1+yU ԓ|DL.7ɟ8gh5OXͧTzL}Cl#ᾃBXy6*GR9)4(A +p]M^ x|8Gد4f J縒TGG$E<fooP$M h=Wz~loXby&W!KkV--&)\/Y2hGc62Sdo&Ο[_!{dX~? mh +endstream endobj 2510 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2511 0 obj <> endobj 2512 0 obj <> endobj 2513 0 obj <> endobj 2514 0 obj <> endobj 2515 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2516 0 obj <>stream +h;ˎ9rn[H붥|k9tpkTV-_o%73|/y:sux3-=L>v5š;'#/WNCkmYci.;`^b#(m#a➈NĤ;X\G_=a*)u]OXZq= ==w.5.,. |<χ_,?`޻'-"̃N?-wV@fjiˁGOO?ӻ ~s^Ο֢>3Lz )ܒF찶P`׭:ܵ / }w`~Dyw<-ӚWemf:έo]}]軺5xp8)WnfDYj_*CF5/)iNiHåk#\!}zaN䝭;m"_ۖJCg$\d`X! Z}:퀦]C$L \D P +H0ʮJ1\ Dc>t,I,:3( +77:7ŵ7p/pnG0.44(,ݭD,0 ~q騆Pꓢx.]7p-L 6e"׏Oa9u ( k+`IS XU"3mS[JRY#:Gc8HCTy*kO2|awwz<* +(@2]W#I]@(!%gC;q)ڰ +`W#>l dD4dyu qx[V8SA-J9^C@Ђuwb|rvfMUlŀG%#'ۧj?O9@>:?K139WS=i`v32-ֱ V*mDMHԙAȺqw(X9#W2! {0W졞8'v|#>VA7Ye^[QnNo<U,ƙA SuA&w)ʹ|qo|bӁx:%,M Q|%R@Gha©k!DӃe +Іp 0mFބL#1O }B6o +gmlD:q H}H"'@66Iz'0,(;Dյ!?Yy:WP:٨~Ͳ)1!M יio@ᏏXWF_nRHKH׎uRbyRv)?j%bBj`xJ 0(~#-jBB;_!WU8LTe%>GP68hFs#AAAf'a..&{d7c~;Ch.aMuΛ:4Y)(̙Lh#8+p=k vr +Rjfl*)ܝJx5_ͲHDlKxV]TT3)v [Fz$x<1x3wgf! ,YTEqD#O]+KRky9V gfǡ04Z2$l ##$)1񩺗]axVP l4fE,#/YӰG5y`,IpP\0I*:hSRʀ,\EYcn>9 I3/02Q-C5bYhQ7ڸ9SjHJfF޿!˺re 8 I@Vs%AedGj5 +< &ybJb.ԇJ׋$q@d4n>ŏlHn/'"04j6`#OL`˝Sի{68L[wQlYZٹ&@'&˨5}碥T)E FV>ѡ8jS_ѽA6/d NgPR] Pvwf 4;;$ܤN.-<կ'e~Q)|Auiq6wz0"cV2֥Q^! ܦ[e4a +ϳ|},&)#*ӼD^}`Fy$ &l>2HBIջB]":PWi,x09[dGDP;N,=GlM33EXg-%l7-F9d-[ccpܤ$#޾i3y=:@S1mF\jI{Tġ /,8eԉ|t $9"3Le΄mp06=M$@qFDR+QvVE|pRB#s| +hZվ8'SF6"R7bA.ŬB! x +j0wŊ&5oؑ9 2&$?yȋ9'<$598.RX:%Yv-]h`HnW&9$wq;jR4D"I s? 6MެH|i]$ +Թ,s6+?Ӆ7c,]Ɗql9TW Edn+*p 6'lN@eaNNoYG-RUġ +ӕN=N߃dc'&0|M|FV&?.Ԥ5'Gp2(c&)}BRfM.Unr4Ew#E5]gw0yjjPt}i1]pEj2: ;pN;ڮaV]gڎ;F2Ryco 9RK լ"břГY0}|KmXg;Ex ⠩r0y 95 +kC'2왺;I>5UϰiH$MC׏5泈93BdRՁqv|q{2[=N.<& Nu\򥴑Y2uLR띎{M(kcn?R7nniS}Fio qq3dF˭8].#~`+'5ΨYFrSj  >zUpn98-Y~+0]ge${J$DErxT93,P>`KwIw⯧¾Z_`k[] -G@^R(iyҴ)&xP{ߝG'艂gq/_:ҩ:M3HIHSrTNd;#٦T9 *n LdK?g=XjZiT35]QSnu&Wp\6bFQm`69K϶k 2X0rl3 1$.N6mS`ۣt4;Ic&4dY墉4oIB*ڋ"ʞk"SBȓ4IhE:ڤW!o_HUqA4]͚ kUKEwWڙx-+빉ES59U֨"w0R+{qno6 .38mJ66RK&5R+iu&FHK"ng(Xڴeondվjo2=Uv*w J՗m!gOg.Is'n꥓Sm[zYVC+rC_7sކb+H&޷ˌEswnۋP=Ws aoԫn0] ٜߩ[.6)? +yLDCJ~66%#/-q +wKkXܠI=_ȅts$ul/O=ϧ8+An2=wZJ&ZYZԋ H:}חZ%Kn6Oj:/r7k'anT$e1_{"87yFBf>퇫~qxy;q=z@]L<\9#Ut}V.WVGh˴u.:}o7O"HM0oOMMI+ +W4SOжwgUl}$ "Q1BY/ \V+0uHioX֏+MޢܕUC +@@w:ĮU엎%TgH 5w k`'k?g[dAyͳM_Jyq>8{Z*2`Pj +endstream endobj 2517 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2518 0 obj <> endobj 2519 0 obj <> endobj 2520 0 obj <> endobj 2521 0 obj <> endobj 2522 0 obj <> endobj 2523 0 obj <> endobj 2524 0 obj <> endobj 2525 0 obj <> endobj 2526 0 obj <> endobj 2527 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2528 0 obj <>stream +hnίM%ؖ r7ȄOO={vIɱuiU]n={ӽ;yzvt;<rgcb8x?ؽ9Yh|wٿN^;B7cz fHC8C;dni4S f8ӯ#ť-v;lS맳?#VrdKnbaQ]{N?Uo_0@1u vKU yu#Б#Kl<ּF;៟9G%1S7XsrЁ!qX?!5ˑr.L`2>0 ] +C2db/߰>&!6y|g'`]g`,{f{ZO6wЌAeYg5AΦ.dn)-0FKˡ'$`!}=#p'҆fϥ3l'8Ҙ!Yk"q  +"pR &"LmMXzmj\&sP42`Wi_Ho r#rPrFe3XC.v\f[$."0h&g  Xjy(A/ + RjZ6#pa4H+`O #Xp[:$L~B*t&Gb*F#Cmy4ruOd)?F"iP!'CJ~#,N%N##WԌQFQ> Ɠăj& 9 }-<, @o . 6=2$ށ1'453RCö6O'A^cB@d2)<#YH"w(2;4B 濘,#FxdwG2!w5wJ6#vK<^܈V^Onf=quGNF[Lg㘋G&:Xn{\R9yj'7U;#[sfb2U\7n5ԲP.hcjQL[AOAYSqǎ4gܬ: A`7]Uh`{ O_.0!bX!]K!3(=x℉[AN~@4?[ u_w/eSDF?w깾ee7 ^~c<\3tbޮb\Swo_=mX37ёM t. 3 |Şw 6fi#)˒I쌛o#c~ڰu?~.u [61f-B49Rßׂs/JaR^U@r& DbGp.2tԍHϲ 2{ +Rs#WlHQ)(Xg{;px@ے"}nQ?4Kn=mxo_oO_|pw:=b9 8ԟ҂UЬ|%-p##ԏHdaFbqC~ȃ dB[0D~06 +o^G"sH5KKR~讍WN\Xy$ |8 @i[oGeFQ2[ mk@_6t"w9@ Z*w‘x$WҙWbGM$k2 +}ikS*҂ԦIP9alJ9$C3l:s!B#fm7PvLZ]ܼg_CPņ&W@I`ӟ>;}$ad84ȕ]uY%d22@*mU_#ڠـRVm0&& RhPQ{eG*I)mZ{Uq.>1JiR$5r]j UXLl%7fZךxAZT\QͲAEh$]WDYc"Y=1&&k.n>{Mu`΃>G̕ZV>AR !RK0/j@R& Hv+;oJץv7@vF^6nr[4M]31a㗗vP}rj..f[S2|ĕ<~1PJ@ر'HSr7~Eʌ&f76REL6ͬQZ(Ӗjƶe؄>[ZnĴ.xu ӪT=8N=h.`-lUkiʴT%ʳQP #BO-bJvn RMoaKU7, O,\j/uX6Ѫ(Q}0Ьs[!>El@Ĵ >j<-bW順зʪQ& G.S* +s}Ad&*G{"/oJjTbX@1@obBA"@}Vm"%y*BJ!/]5Y>(O􆥹mD&b\X|Yʱ ^^)t^XHNB,F՗CofjLË$xX{6ݼް֗VZMI] j#*~q.5]wIjG0U6 )s~jng"1UaVmdȯ>THEܠWyzgE02=7pjPF .j7?ί4i⤏( +[Rq[N"ͦ(B\ٚ MKexR\'f>J]REJ|^Dkbykl]$#u>؋](&h`HnmgkW-W! +endstream endobj 2529 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2530 0 obj <> endobj 2531 0 obj <> endobj 2532 0 obj <> endobj 2533 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2534 0 obj <>stream +hZIo\ϯxG4{_beǎG&1iȡh IECWVUu>,?|~9>?Yί6EhKL%%\n9ˏ]gCyNmrx E/߼VHTgʬ_J_P>vUlz16NEvg9-A 1Ͽ<<`. e])eQ>HփgU쪾 +ֈ`TEE+D$q$?86a 6u}U"潵uETյS*mz94-z }}ֳ%䢲_l,&(ck/~ٿyqio|F{sۻgXWFAePT6]^_~_^>qct;˫=:B +C&ҲP*jkӎiOBoSmUq W:(gN hk,kc_+]9qʖ<.G̎OŒ G! +0I R"E#Gp\oj=׶B3pMlʦ\` BH'.< 6K6NQmS w2SH/L7QVh~D'J]U߯UvZ5*#yHվ-6%AT Йe+"}WAO\M$R`L[Fkd6QlN, 5#͹y+^-44Ֆ|}|Pܞv3X ^ɀzX-%u@ߺJA6(0Yxxgt0Wձ.(cw8Ȗ޵Q^c@Rr^5D!b_M 'Ǚxt00 {\-ͮa3Lk|>I9ZpNwzgIQ1ŊY2$vJߵ_>(uW谺bkǘ=Vb+mkcSn0jU lyݍ|"8 $[1DIGzxta=+ m+n;=(͸[k-'HRhIPlI3Ht|zr %JEVHejfWȋj S1,^ú˟^8 b +R=@g^u$%S,VHjN ׬ fk9ҴtbȎX!L*wrO9=rxr:r-^n#ĭ3 h?HJ-쭹Q}T2> +?9R:962bQV)-Xq2ڶe=b^td2we˫zFwOUwM?;H%BҮtCt)<8#W-9 +W:(1#ӇO?<<{xS')a4K 8{(2Nzf{e oo@`),z1uCnf;2 ]*|B^f !f}>kbMY!U|*Ͼp[Py@nI`$ZY7U + u}['mKԦb{!aPZ˽X5Ge)YE_Qt81IOGy6܎gw),5#ϖJ,z/Ί48N{$̇v%VC1!ȍ)0 ]T~{<*UxZ$m9H#˭1(!DF?BM12| +PbKЈ12#m_f1!}Pt?"apsXHJ߱3:A ,U +r&aP<&SH౼_?|ͯ[(l+GSk{)AȎ.vXEOi,_`9AXwu3>.@ZU|\C4a; BаZ7@S}У($ +endstream endobj 2535 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2536 0 obj <> endobj 2537 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv42174V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2538 0 obj <> endobj 2539 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv42175V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2540 0 obj <> endobj 2541 0 obj <> endobj 2542 0 obj <> endobj 2543 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2544 0 obj <>stream +hެ;ˎG6N)5շCm9)x#@l,%@g8X#/dq\^$|h-S([ӑZ <o?yk#l^7@8}恈7P 5QS2D_`OY5Ly46c^OSI+ě0D b057qq .R;TP ٙFRS1mw\mu[!TjT{lawiWZ<*C +2k7녇#]_y{u@.6A'oфXd[V*#YzlP5!<ٛaA#X7gt!`|u&̒Ka k'e)V*ף&׏%y&wQҡ3o(edX_J$޿/v[GIwkEӹ+*v +9WDt#l # +e"-悯J=n]Ԥ[&\Ǖ,[RځֽNn!'(V3N,@FR [/. P0aeI_:7`[wjݼͭ b(TgXڪ|s`Jl);W:liEЩ0FݸD}bEn㾉{= C*".32[d}$Y7Pl( +I3ȋi\ fxa6],zV%pS* +am~#ZMLЏpt3d/;9|&TL b0IjgOFriX_ SKg+iC;P`+罐Gv˲tXwp \VK=Yhu9Wu 冏:=nYot򮰳ۡ]h[Ohh&{ʉ- 9&LqII%%:IxJ.L ](TnFepskJ6l|G6kw /Pm[BWAtfq[_^p%;0[l6M[x("D$OoڻE# Q kj#tYe4?U ,"1,γapiXSHPvxh)1URx95Gv +C4UpaUVb02I R>*2 T(bg7CA=k# ЏtegʚnSh#, 6Bʜc + ^.i'>m{FmK ;x"SȬ (Se"i +hoԪy~ۇEaҏFg'28,Б׶H.Y>%&z (yS(NPMԞk ]*,´XOz-uFZSx--76Idjel<53xjsŞ6t[;uXd?uG@^ߚU<(NuҾڎ> LrL/J˪-[qAMr6z![@pű0e=d^:4|*g֌8OYV;5N '|32'7oz4X wM ׶ f…¾:Qg$HB2< T,x.NTD5> +KOq#?fL^ɕ9AlS]! k +)_foG(_.PWMWXGŪ:R%9ugZĥWl]7pH`aԇr֦ez(&rot bR.n +Sw*ufa8@Dف#EF4_M5`%ܬ`E2&$Dfbm* 2W<+$\I<޺,^y) &)l*,0Ԑ;]Iȼns+dXӭ%!8C&'۔sme{-&BL ln6z%_q紶 i9A)ؐC)كba7J~ƒ:7+Rv́FC@zP}}p%R{uˊ$A%mkRy1{]97c]4kZ=6Dɓ C3C8]Gtimf&Zйh* +]vy%÷'z*#拁2:ؓ0 !2)$J~>043l HGC~OD7P/*GruE̓tGUKr/0zuOľC.l1w4GG,+^l5ËlEE/!+Lm[1Űn_`p@ORHJ7*솨Kϊku^B4~+g5O^{aޒqjX7( +PċDSƇ/×{q^ղO|2;_J/$W +c_8Rs]@3DUJԼpx BbN ^t^(vRUdb + *QPSb%FRUk*CpeΔP/}u|Rq^^ETYQ -G;aUXNm Ek@5>+M*/[>#Ud5YyH4.v\{V~f |PJpgEmJ\T6_Hd{ A_VR^ȸU{Pٲ|՟F׵g~[1^D&EdR/ģ nL5}V.SM ] +iT^n I3+JzcteLo@ɕ9 Cz><a2PҞn5ϼL( },/Du9}}{uo HVߞ=_?=Oow"7d7PG 0b%'?[_m,F^[ i4Ls +ӿ&7/~:}N?<88)ܚ)Hwn`^# )j"%%cDx=ß_K0634'mLXv]X ;i; 1b08O >stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2546 0 obj <> endobj 2547 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv42176V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2548 0 obj <> endobj 2549 0 obj <> endobj 2550 0 obj <> endobj 2551 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2552 0 obj <>stream +h޴[KGrϯm`,чd{X0,dP+$Wt;# v/"?ӿ_~yӇx me%KkyI}M_uC?t]T5u-v9, U[ҫ(4l +oPgܥ7l{kHK3$4FBۿ/Op5^|~Ybڶm秷'n=/[b\,ߪ\.9>/&^'dWiυ\a'.^K\=dDdٸ|^#7{V~%v`K(Kw?z17E5#ge,,%lֿ=}_^?ן/?>R//p˺@>_v@RKxiv I\ Eʉʉ?H9%ƞ-5(e>reC K5b&*r.:Dk9۲neRf5j>}`CXZϾPCURbpq8is%w\*^lu`]0ZKu^JBiNaH%=7}=i+䝕{m- ZOHJdՠR"퀦L$LP \h (@$(@\iX,Dofd*,InVE/sqS^ziVAg_܁J#Eܸr)]~{ZbIJw/t5u]=P݇ +tMxqEH¢6m(q kV@ ( #(*! -p :$f]Toxe%/DRRYR`:,g-2 9sc|t*ި5C@)n=2nenģJo8TM!g% O"[!iX}GlpKvQKp(kc{*̐8[XUڡ>ruyX{ ]-밭}˯2Eh0T j:çEn K!@{$ZWO|ʺ.}w|V] i+%JL8"ܲq}|3wnS ,¦Gi6l8t +l r"iC1H6M-Tm4͂',ZD=T0)} N @+7ϑ^i!;CMXb_Fs߹a &_@u0/^enmlع᱅qÞNg7Uѝ_ID=|"2!K`or2^ÿey`clδq0ݕ*rH +*ٰןE:}pY43.hae!|8Yb:Kض`¡']E{ +M6+oʤ"tmDGf;V 4[x "pW2,XՀ6 #nݼuE1Y{v))]- /zPBcQ>kO-0hf5ots?h59mƗH<;Un +9^=CLvn̥ʘ ޏzrX="3jYYTЗQkÀ&=ؐ C עÍ2wYBaeV2؛r8;˰xwatqq@oYطopgc6gayEUmtplI"znY@y.e[O˿;K]#@AY'H^3J%Mk&›/f/m09jpT@=H|64Vf 8 +aPؓ* kJS99IUY+.-nm#4_21 +h`f!qwtγv@5!u9*Fu`!Vܝc+>uw~ (HPFͳ't*ew1V +aRJTL"-7lݿ̀5~+&M2oXvi!\@B:*LdQ/t+8uST_Mmeu@ NGrA것BH'3rfR}}=͎p1\mF%x2)9lx\vAe`}h&7FXE'lSb['~ +v{n="޼`soS+K0k6hK-Zȇ!hdd#(=oN .hq!hG7T3,Ճ5<ħ>d5 _~0_,B4| =I/L1hχju7nwbuF~4,н ?y5ʤ9]i5E%u1``(֩x8<" EY~bAo0{Ʒx; +wx(ܤ6(\T? ݿ O \jqk65c"dّN }(џ:δL"=1.Í1Hr:AI^sm{ 7 9QO,ҴodF2MZf=4INr0K T<0uɝk䚭RCJ'/iʜގx Ph ( dPMz{Uh<0⓱Nk}PLH ~ؘ + Kw^(#F>]P)*>A,yQRu΃6d2)O12c57b:(MILMW@RUXW'p[3h!R|r`RNd^ Jt L5Z/_ +|!Qt\l(y)5cm>jFi7v1A V<ֽ +VJ.>< +,_4nm= bW/mY.,kCݚ?7[+ +C)c/fǘy|`-E{5_UtīOߔ-$nC_nڙR8{8|8GgQSn~܊N=l0alIb!O .$ H4Ck`HUƋovVm<ݮ."&3Xàӷ|/"h|9"˙{jdք33\XԌ¶ 4:k"5g@Լ~HIhHfErtip2Y\BKeyǯiPrr"^ąb=}ҚޘeR&X!IJuXp\@U0`A4Ycysџ#lm=cLJ2L4FG|$E. Ӓa.>,#+Ma!xMt AL ++;<~׿xL?7qHoEJI5w ip$!Y\ +-ܚ +❃O=Y]@>}M \>ޜ^[rKh?CSCUGCࢾNiRk袁,~^&wB4>NgΒG3lS" .+IS@aGDH"*IV+KeE +Dv#: 2.R Kݭ0P8kua$ngĉh;US0s|+ݧ׬aOwޟY8v>A!f]TS3G:"'\9DK_Orj;ʪJ'V*yqmar8UwL2;**;uT{hzȷY'yryˇĪC)4ggߞ.yD=zBV-rq@:ow0mVIe3:G|zgkuh{ 5sN e<;+{CST 0Q4FVԱf w8ܺ)?)]m8_%L ]}'lnBh7(e$KyCM=JjWv0ꛎKa3n;tM ۭҀ@3L=Fs[ w16f~owJ&N~=>[:7kjrǃbS{?,O-SC۔w5#= njΛldj 4hiʂTAR{f qP,F n'A\>fOη6UJGgy6S_7ic,%`G}NNmI"[OO$,Oγ!3f-aʅ9~L9֛.>U-6 V|ݷq_[y +endstream endobj 2553 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2554 0 obj <> endobj 2555 0 obj <> endobj 2556 0 obj <> endobj 2557 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2558 0 obj <>stream +h[K$7r|@!;Z0a-ȘYa%Y'lʆ/Ơ`0ٟ_]]V.>%K[py^~x.|ۺ?WkZ<ԺGrj\vu[["cVyܱ:`JHzdD|)%.2@p@zgRkt +z3~K$nmZ=ߠWY'8N+ |ii>g K/W/Kkۓہ};y)f82>z4Olf +iɞ !z<:q|OڞwSܒx>? &"qiyCrV/l]Rfhӧz{ן~?x sK-k /a .- rFߞ~]RRW)**ť$KK JqYo8vC纸ao~YP +T@ArL:xk9bec5>u`-w]T.ЪnZ`1 ; bt%#Ria<AZDGJ +?>/9ԟD#|9tAY$/ A[ 2"..CGG%D:Q`dZyG@3RvT*ŔcV̀Tt+8Xzg@p+$Lq +.GaU^ʅ˞[3巧ŵ|AίX/ijsR7X^WXϚ.*yiJŜDxPMԄ ̀ѱq!/JRf ʀfXΑCTekVJY鈰z/zܪM" ++7>)@; SCrocE&QRA#@"|f b #"Ҥȳ olLaeRXӨ}s,Rةk + $0Bwe]8DhhuL2eFnX;;5f XrvGI|ٕ.p]kU<v~Hb3MfxFG4=Z3 i GX D<K'qmEqta|/ ׋B̍E`D:%e"FF +ل RldXRHx"/Ͻ1IvpujבF]\*1с)-'ˣ6) xW|W44"(<C4ͲPN-uiҾ"+(3= +Dv,kŠ{5'`(H!l 4 + 5Qkn~tЍ\8O u&[U!A ? R@0(j+])x)cƃgE2Zpj00,+oUx?nP~ %,?l|Vkcڱ$gca~6v [1c '52 |1BR扯vΗkrԱT-,٥0yiw߳"M}bͷ;p~e""Bnp ɻ-$؝UJOeva-o ]N:m} V{,n-x d+l#q2gof\8Xm 3f(ۧk +Gp]zLXz4 i^yK7xyV ,̫yJb~HkоqEq'3Կ^  8F BaV:n0縩*o>> X2t(4DO\HZZZRª2v'6St ˀH+`6E΀U# +zO4m0*F a>m 11 M(,?#T['R`bnlpc镖]DG:nߊ^V>+'AB@.k16XZW1 ֳz684Lۜ ֳxS{*Uz6Mwv%_2[J( +2Sajev"9w]u^~իrQ́Ac69>\,;rvC^|m==]3 xYEنjr] 6a3 )=&fLIscoKG*:^Ȕ@zo&>%ak"uCw;F0,iy4dBIJp$-:?fb^|xb!|>:HfNMH6ma,׹8 }5oNW S/&?O\Aa܈F~Q!g3q̣`cބt9! 9=qw= !(Uu ^Ȼ /%iuRb/x[hX.>]G]*Nx]u*_$Կ߰Ht>{~x{aS>ܣH9t*5s[%܉6TZ"Z5gdD;"w P ݚP|h'pߕE7͢H~xr4[HI:'rPfc%}dZ/P}MsGy[f$VḴw [If%K^fs0U,p[|Z8<CeELK3EKoIh1T +ֳ7r&5ŽapuȠEґb~U-gv&LUw.58uzJrHߏ< x={ƫ䋏WJ*ֽ:ҭYR} ?>!Q×Wuf#|#Suf(X?آ:NmŦP>#TXse<۞Cy)O-ۃLҒddڸZ[pvՕ|3|oP8.jŚ 3N;-&{/f SFG;1>Rh40D 6qm_6Fqs{9},5vuGsDǝ{ݵR, #Dۊ}'~Μ+ײHBv;,$=T]m_DXhK[&>ڊqfU[b3XM݉N0 .ƶw@kG HU* jo GI+~pℼIXoD3liԍZg4ﱇ2p6CX݌@U^s{@-6FMo1G/۩屢ycb62 v9,1LhȥIH_=[EF$v^[ѹxqzߗـ>|X%a_=_umwۂᯂ7ZϽKti,WBGvR(MP@I&qۍNiIǽnv/c11:\= +eݯ1K2T Y>n㈚79nJrN}Y=ApbwR|ÁsMc&dT_3z:{dE=8"H$>ӂ(YΣAݾͧǻ\Ur\1:! :"M6rvmq0fLҬ~`\ДDf +Af#Bq3YG _vvșAy2"V|n6wg8t;j_= +endstream endobj 2559 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2560 0 obj <> endobj 2561 0 obj <> endobj 2562 0 obj <> endobj 2563 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2564 0 obj <>stream +h[Yo~篘GȎ`m&B#`I:d  黺[O^p{cGLCJ~t7Wj&; nz&iΌB;,}y/B&w:+ҩc[Axi'Hh8!f?nz +v?!Ѻ0<:] whڙF\i9qMd'rxM>RJw\2s v{Ѯf6\6s9 l7e8Üv1LO]ÓoZ燯=ƽd<ܕj kffF;줄Փ^rwxzO=N:=8_` C"Ұ8;!fx2ORY7z l7fi6 - Xjfl>Rca,Ot8Mcs)3R3,'Θ1YGk"qX xN-;6 v 34Aa<hs<C +G OGB~[o'?tN9 (;} Fmv9E:F\ Y)B!;\tI BwZhRS@Ų@26&S L|*EPRW4qTОp9طEDl5r \&'d, ~{?0Ca=ޛ)i`2mTh;@%xyPNԅ1'aC%GC0xâS 23L$-:)܌b 2wr[ + ͭxxXt-nUzæX3lT~D?O >؜o}78)aNTM -#tvQ/-'Q{}e8j1\Ȗ>cszXٽPT AG5ޕi6.ⷓ:lԁD6W) =d݃/E 042h}`2vaIo^ +mԀt*BA'`0@/jDɍd\Lԡw¡Y8SE +$ztz!d)~;Ӵtv})3<32L Co?f4n$럖?o?o73? _r?`|=@p~xxp<}-aƷ˿e1_ozc#["yQs`KyG-Ѽe魐,2a/>yWwwjَEլ$Mj.: u&HX79O!֏7( + XUXĵ3[JO6[qb H [V%LZGKmWSoڂYqhGc"=B(R܍>ETfSgtFe%01e> Ʊ]ɑŦpo ;sG5*ř橹"ue Gd."ܸ|gDhG +D tF ;޽`/SovcLgn +=d m:D JEGu_]vP$OJxT]DOʸeˠO,B0|0nYvGc~7:"1hƠRNDL[lh){TXaZ𑹒RSCY0/5a C*-7U2 +0+;HۯbfCt2;m,lGz~Jp U@du 5ċ/C 5Q^sZ 3qHohP7]c/K/Sk@DSsPʨU, o >A}_`'ln\H,n%o;9fA&+cF{TjI_j( iթ!+tPCR5IYvh;q ½FҲ6D_ݭ)*"kz%m]*DgEU5=gyЖuav7b YP i#ƈ]b>+)<ʴ4mL1`lUQ|!۫ 0O +endstream endobj 2565 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2566 0 obj <> endobj 2567 0 obj <> endobj 2568 0 obj <> endobj 2569 0 obj <> endobj 2570 0 obj <> endobj 2571 0 obj <> endobj 2572 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2573 0 obj <>stream +h;ndq(3w2h4<, ͎=3Y#r."1t"źltrS48e~qe4/Z,.IS-@8C;n|9 3{+vYb#ߑ^+%2qJ.3@CzGR/NJd3S pc >8V? `b"G8!t$“-p¸6› sSٺR4TJ<߼Ůဟ:tdDD=mR#!cρNq7)spt ؇>_ߦh]~Ǜ ҌygA +t珟>yus5Nׯy) +wܳJctDݟnNvC)&mGmGm;}n@i..AK6 P+ γf%ZB'">cal/t8Ms9R{`Ucrv흌<[mU@`1 ;bt9"̔ib6lRsP4low#|C~[CJ4S JB y!Hvɮ;f0 B5mzOIRԥTMeʶaCgeTBFWf*BmIt:/1:c |QQ.2_%W=#tZ |U,.~)f #K7zU,n\) )PRύE5ַ:@R쯂K0pojhC;T?2 A2 :20`T*a0]:AUxRf+c}HR8?'*,VaF]-qj.Ԅ{*P_tT *@dYPragޔҤuRID#GVPEaQX qGH{Y_{aN:CgEݱzkQz;uCU>mAGHN3mw%uݗM@4 l-/s8T= .@.] +gWM]9+T0' *ͶwD1wG_ +ƀVi k| kLٕ#aktfzITIx̗XԒ4P:BSWQ3}a}Tyʺ QN]$xn_%*xs'>,.a7- S:zU[UxR|U6sSs6|[K>8KnZ[LŌxjʦlpr$LyT] CPYV>r]*LF**$5Is'4g`7#{oӿ"S$HAB%^.5Nby{ﴵEjZ`qd\׍DY7^n|jVSƇFG!ǵQz]ЛK]i肸mN 'qJFWPUxkby4l0+R5\FmptV`&wkKm$]mn-[PagD^(rZ(뤄,tSxqS*#~ ERKU|k\*b}T]St7PKXGy/X/D86g~hdz|`'']ORJd3qt<'Bc.3ڄ[Xd&,O-(Y[, ;IR L#~JA)#1ԁYɫaaix`~{cªzee:3?vB z\j\5ZxV6|trbEmG)G+ba=bsbsY%}Rؕ#ΐjnط(]D4ESLb +hĮ5EEWkOv_Fۄ*U?݀Yuutצ;WJE@|^]5)i"$Gq?.w'.>sBsTXb-o;8zׁWؤ ~_?S)4z?}ؽm6xP?-u3:渺hUۡ_W^E +X]]@Ќ됷NTٮ⫫fCzO N^_xwqjٺ?R6ǝPЫjs3L%7\_z[; A7f5c9c~_ l $8+~ퟟ^?|<[se;|zowowٟ鎓p !?;ܾ/8Mn5uĩPw$k<Ѓk!̈́Wo!H~H k b.Ȑ&V.C +z@Z٥!{H7z^q= +x@Dwf!j6B ^7B^pz_^ַ#_+ yD@ջ|УK_X;g!U7 jązaG|ȎMƒKxw~x{6 +k +endstream endobj 2574 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2575 0 obj <> endobj 2576 0 obj <> endobj 2577 0 obj <> endobj 2578 0 obj <> endobj 2579 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2580 0 obj <>stream +hZKo$ϯqpo2k@M`{̮֌Ofkc_rX,ZG^W|o~oQ#&mJkWz`O@^aq:F; + | nZ^FD.xGxf y;w2̆kF~ x8Ij S_ޯ@/OdpXWbu~6òUŤe޳EDs%$66n2S29؞!aWNa䥆9)3{7wC|:\tfe6~z|pV޼./z *hq3m?P 7JVmnivRST 쭇 y, +C!S:5NhG#'imuq (l +jYA;hi:Ԓa"m_>TbCd9٤ύ&KkU s wDqA,6DAS zGmmuD3)bs%a>:0DN"o#|d3п bۅ.CPZvq܈pԀyr)Xy Qoh"ШpPRG"mza'iX #$ + M^ZQކOGNL[L9qMIhX4^iM:}Jf,Ucԑ;"c^PC9q/ 08tCCB x @ Ӎv}jtHJ j!̓=wS!Ts^([zɻUѠ#0ӖXGo + #o^oDQR%_*yZ@UvUx&?Lզ?3d!*9SrX&,'bEkxH<O|Űdڞ'̧IE<0T~jf+B}#u@qG+(3 Yh\Gb <P:8DQ[hc*QVq7 d +2x@){-7u7$%Il~U۷xA6Wp)< e=0f%~EGV=yPQZnt59|'5*ļx8pWLY[JaW Hu0*CYS-SπE絇{iIeh};JԶEsYص]$\ze+8f;>ot*U9 2|8\w=ںar 0]9c,Dgv2p>#_$5%Q RBvv'BMgCG~6GjjF b@ +R)4eC`UI־iLl/vƱΘn^|.Bp17Z?7+L;GAi_s+]Ϣ=gKp!\3ot?Y4uALe +@A?LWa:/햼QzuClz~=O޴߆jS fn}p֭OR00mZ >cZ,@PQT˘6i`ZmDѺl7l1{ pyOwI?Iu  +ZXXt^jbs.t_6>Hain?c&1*gڷ{B%HW [-ѡ„Kz#c͛*JyxmLMM{@WLk Y;W>/ R=_$&bC<yZGyN,EH8g&u4ayגF].Ve`ݿ0Du|ږlAIM}i1ø)a1(=M꟯V?_~ZZWZ5VӞzPA+nX#~g/W"#:Hw^Ӊ p +endstream endobj 2581 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2582 0 obj <> endobj 2583 0 obj <> endobj 2584 0 obj <> endobj 2585 0 obj <> endobj 2586 0 obj <> endobj 2587 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2588 0 obj <>stream +hZKo7ϯ`|},wD=Z#Gz$ȁV}ajbXU=|zpywy=\lҠ_LcCRs5|lG.]B)G4Y=H+\`Si)x=&\f=:|e"S0mqtE_5Bfih50lߞ峣p:oh z=dW {ޥ,&]B A8yM&skBQY/7 2C_zFcSJbJlX=p4&~0f;*ݞ_u0A @ h<~ & ځ,?;PGܤqrt6waxq@vZ9<:ܖnx745lyw?vwO2<wð<`JNax^`#Ȏ2!1$f!=MoF>.pcKcKc3jy5vtvL ָQM~Ұi.lfTv1LX 1@*d)8&71\*3p5SqZi4:hK1XxqԀ6c@5q"L2@vOx.4 P. lCKA6HduXSDJ;9` @r{O䄚l{ɨ=CtN?S;"@LEX8=1m$Mc*7qdʞtG=XȕnN>AQZ b`/B +extWl|6k%V0Jݒa}hgkݷ4i] I "LGm|ԵcPk" =o{(`^ ѹ2If=(\X$'S.Nӛ'84\rֈ/Ґנּph]^ݭA +k07 m ׏mZ:5AiƕX5X$Ң.8ĸN֐gLki}+.6"k p ȆJ67PQM#.[B"yk6\k.ssSL\+qU7uhش-=ݝלnw9S&џ]LiH:OJ6ڢ͹'s ԮH}ztR[.odGPzZ:N\Tsg|nP&1Kdt'If -X.{@|._O%듋b]qm vg爏~}p9lw>}e8xO/?Gwˉ1x=,_m8?gR@ܞ χ%O><>y'XB jY HNru&f#58gLٿ7 0 +3te牮 <Ă0³^Ep +|frr>hηP6C;bϢv5@GoCK[n`k ]c2CHMXe@߀uN/ VVD$f$ +st?ZlTd#Usg,˗bY4cƆ]=[њ/XTqP.x^Nda΂:+}"_LRҮ[pCUSwg%ӄX1y$JҒ6|Q\l,M9g)bSTPPECl1  ?6ɸ)1dpT6^a[^@~Ʉ EռZvrbJ'vjQjmH;nѢMQQ!_s}6S&rm s"E +HH^1[J80:!2Ճ:Fb˄Z:V& 0qr}|8;.r4B"~偻UZϏwݧ}ۇ<4sꁨV&hNlI-r +<}Qa܍7lm Xׂ§;%t,%5zDѡ (QO9]JEDz%ĺI|-S_L*3 K)_J&>FǹNFP%&׼yC+ow:*-J˴.J nHĚd=>I_-%A~N|$MfMA?L*XCNpb#_]re5*I^'uMʯDܯ*r?Jù +endstream endobj 2589 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2590 0 obj <> endobj 2591 0 obj <> endobj 2592 0 obj <> endobj 2593 0 obj <> endobj 2594 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2595 0 obj <>stream +h[Koﯘ#i`G |HL #rE* (˖姧d@rNUMk_^L28-G16N)Mo0/ +8|w,.,thfO!AUŭGKOK` #|tֹCZ7{ 8%ޕl|yC K5b9:*Dz:XK9d\|ea}5>`9wTѪfZ`1!;8ۀt9"̔iba<hK<C +g GGxB~[o#_tN%L(; @8F-"#PCggjy:RःZzC;@-CR4TJ+b,zAhYp&>"t`(lx+HC'\mx8iT)^ཉpyi_&9ӆIe#-TQZQB 'D]K[0Trd04ál7,LO̰:|Bs3;gjuXZ~2l s+})d*在V-xxXt-nUzæX lT~F?S m'6v7/G/_l}q%WO2mZ-Y{î=XR'|ٓga8,+&!95<4.2*'S{5w62` z 3 *'T|D d0K .e5S;0p WFb E Dut< 5L=hӏTP/?QuR#eD 2Oqӣe]xe0'%JQAkdN|I}cMQЯ&!Ͱ/(`{`wRߒ;$ldH&ćSZQZ# Ph.@2\ƽx%(ȉͅKD@%N3x3iewZgrZSKF@\\v$ k#zq&H*Q,20Me#s-IMVۄoi㌤Q10d-*`(L>pӾV9LS8+U# ӒT\5*< ]@:d<CG6!T3:cꂮq15 ͜xQ.BGA.sGcv hGQ7}COՁj>I("v +V@i8 O};7b{F)$Y%?d.2{:#&oo1T]Ѷ,ޔ@Uo/x{nkͤ~4Uf([,nmy貑ͬ3k7}MUp|V);Lag={*Ά^Ib=v\g5 +ª Ϸ}Z*Әv2rkwK ^間\#`WHVڵ62pTb* Pc긞 PĆضI44g Ysڿז._s o[ܨC]Q%Oi +02W]A^M,Q$~GEv_44kgk&z´]̈́.Y17BWrn#j z"K:`I: 2CM/_t_lU*4rR&rz*{L(ᚘ\zppϦۚ ;.*_ bgiw՚ƛ-5-*ec43g2Q$~U( KqyfO 3K4okSX^05]n{[z oY0э~x;_SR/pԜ =lY' +GX 7v@mp%E”S:rLM@uj  a$>IH;|mK+yyskJTn`f}Kc!M}RxcbEIWg&WTB:jk`1@̕m' +=XǗ$1Gn[D-?23$篨I=f:&.xU@^03#%ވ{wO@Wv7X^L`h9iO!MQYd/bJ<[#" a +lf֖j84Tp^wcɨ)=1݊ +1x;B8ʙ`lKB{W ]d`uŖԪWWcZGE@}u@LWfAf6rp&Kkޘi2|,_{-$"l?Z#Q6@c;UBIiƝ6ͰM3F”r|ͼGnޡ* )b6~|6`)Dɡ|,4'1$Ͼ6j|.@ %ޅjkb5j:Wt1٣l ;}! =_`mRztHe#,><$f2׳Lo2竟uӇNo]c釿1H&,=b"YoZ&)pbi36Eɡ * J3) pÄlu94V lA@L6_P>siw kvjE<> ߪå0ny;:IwAq|a7x/_7hj(å|qxI {6ɡeS_i奫n' M cx{7}h޹Fgg 0t" +endstream endobj 2596 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2597 0 obj <> endobj 2598 0 obj <> endobj 2599 0 obj <> endobj 2600 0 obj <> endobj 2601 0 obj <> endobj 2602 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2603 0 obj <>stream +hZKoﯘmN, @4P,)O={gw)1aũ~VWUW}U3W~zwu}m';]?4ÿ:MJSM?̳ ~:̳yGfXeے5GŚp&&#6{nȯ~MM2>.M9 s {wdu wVN+n7_0 9%Aqt8yYt! А!^lf>svS?LZdBLw;Gm?/n: +m=LRƸhcC=zw\OM5%L&uۏ}t`uoI&9+2dޑ#)*dt5[V%!~${ypNpLdur72)4,7ÁQ}st ,!QץN=~x* +Lr܈` 2O4SS`bh>ۼ9٤; G r$A3`"A'mҢtKGX^ֹcf]Ob#qۯ$F^\|c/%!þw22l{`4QI-W+HHc2#^?DpE=؇{i=oT!Bz$Mx[9h3tC!3 ɖx0GFd\t*_Bv\2% >+AŪFPJK4 +-&5,MO$RNM(tua5+x=CX}`XWQkpz><:F dWȶ"hwl!GyzYQ +Ռ|󂷫*t_3qWA$͸0mCWօ))39/8U^_a߯ |͸qjuy[YmZ#klw~667&jn]ӄE]6-h1dd7r4*d۹*+;G{cC~I6+N t8EJz9 A%1f'՚1|Y,nO2ZW@{A&c޽svU9!o}f Aֳ떊"˦@^1@ a-eqVdie ̞9ңayE|sғPNYnB:g^*aSҡ7KUB-PTˡbվ]wֺ +lt[-7[ Ez9XE8Lru^0IU0cb,T6TjwD{`ʡ`YD4 +v:!'@>~ߵgXn}9a nO%Po +TH R(e5tc9mukp[CHqkٺy='`xWG{gj א'C;.fo;I Cs.rdy +2DI +CqL<5o{(:˷C%rF!7Evҵ+IB{u*⼂P%wM*"Hz!NIۦjoRSx'&}0(UGGKm>)=hu7ߒΪE'wt?ۛڜ`OlaMzm>z. +2$8 Kt?)n;VCZMnРމęhl }JB3FY oՍP7vx^hLƟ*V8-57qǗ3 FAY }U|!I=?zUCg ^4tN +o:P J{#[IhViL}@(iZ?Ԣ{[\ n!Iҫ<ɓku:Zziuj,8˹Vpۂ /-ׂK-l*g-K-*-qt*yLKޮUՒILJ+Jh% VaD + +ZTh9Wb9űV_XOVl_X)&ͳՕ` U)1<Mc"o~C6֡XM")n_Տk1,fkuK5r3-ΌL FS^8ދچkҿ0O̍vT쟲bO^Rnm|bFz:WȠ4l2ل^{ǴkZ3Y8Y\+9 s.4$\KЧmL*4yަ.G 7~yw‵·}q/ tZuՁmkE (&4p}1z{U\3lmG~j>mjW9T}!Ybij{iM?:W7BHhQˋ_J= 0-~P'fv.[fu-{[nuZ6лMm2X˰}Bk=l)T^<'7$Z 6{E{IeP_ Z&x- ^P&2 +endstream endobj 2604 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2605 0 obj <> endobj 2606 0 obj <> endobj 2607 0 obj <> endobj 2608 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2609 0 obj <>stream +hZK\ׯ끒w1 f1ICf=fl9O=n &iHs#_n_?~9q]nԴ>R6.-9ꗛu`Օ ޜu e]cڂ',lGk<| U>V} B&MuN0Nch(gQVMn^ZX-rp%Ï-qֺk-AfS΂"X&(N #f/{n\%EgȞktirٖÒLđ#`=P)K0Fcwx_ 㫗aܻE5cJk4n9J Ë?~~߽y_'Yk=|:@.1"r~O XBY Λ ;3Y_]]йp̚ j + rT6851M\65VjY-);ZkbMTvӬ$-0:;q$,3"P]"A0$W[g,' +PƁ7P.IkS J`{?OvqԊKF ;)Bzt:\$@(# @IPJJ9 +X+lͰhQX['pU<dM[ӑߖ'MF5q/_֌#Aѯd5|>->6уMWvٯ~Iٸ;HŔ-ԒnvM&G5?}1xqs6rh$qxJK@f^  ++NKeţ] ;bPTkJfg?#â1CX$EApP$L䎟%=t(/ItA\S˞_ tV*;XXb:J$׏$>޻R\7v-ԟ?fӹv}5v4QIM]Ϣޒފ+56ty5]^{9y|{fZ4bl wmЀBAAD׷NM%ڽTLg*we7S/3i>Fԓu1R'P|n:p.]q^5cuʯ;gq˪&O>\Ʒ--I rNQ/JYۀaz39ҵO?`O>Y d_#[y +endstream endobj 2610 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2611 0 obj <> endobj 2612 0 obj <> endobj 2613 0 obj <> endobj 2614 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2615 0 obj <>stream +hZKϯ賁oXA NAA +V6,)Wٳ BtXd֋N|ڽ<^vfWR6)Mu6!~:~/g W#caè-͌prے5f5jEڐsaO[~>uʯIX0Ҕs0`kVA΍{5WF= 1G{_h4J5{,̇r-LQ od"|<Kr;svSƏ-q:k-N xpd;ǃ$rH.NW1.bMr!8kg\vMhR(,lO_vLrĢKW+]Pg)U]D?O{U,O[SR,٧ex&yYTc 7Ј>l1 2lޑ#+*d +5[Qe|˰ H_G(%Udƺn\#`rUgP"gǁI}skHKER~]Ï'M{ItU=`MƜx&a+0KP5fSˠ>T]d^6Ẩ[Ex@$r%TD +otǴQRT -AzqsX쥊" %\.HAO +,Rc jeV^$&tXi%F|- U 9P=-e"f**bU-ҥ]|C`; ͶE/c&Nfmj`I~I{<#p^f[ xB= + >>gb> +,ւ--ߥS`O(.2)_KT8zj&F8r5&i"7,?u'rF&pmZ:_&f6YXأXU$0B4U9홪MHױ؛9dzu9>r^`g@X/#\ {jxO+O?lNWr}Y_ΉIsÅ;G~NB8^YywbVy=H/1Z0kh}8< 2/5 +YEG{n\l0K Ϯpݦml'I^_2ΘsRRUbEw7g i6pCN c-7szdĨ + M!qT%#*?uc]o!IzlC~jA64 VE^B\9HwOZsh!5((qkve/te!**b:E-qGIr91f.b]]'>'4AvzX LKt 3 AݡmQ*S te:]+hym nLR E"ˊ1]/T|q;! +l&V5I[ԈmS+z8j6 9 - E+hԊޢ%[uE}.ސYq]gXu_!]c\em1~er(pKx'Mr-[5~Q>:#|L5,/߶v~Z5NZ0)+0w{Ҷ̪1 +]"V [2\PVjWbÙP$cqz[baY.ͬ6C䣔K^XڍU s3@:,^șT"6U2sk?RT.d4vYj.gK_CʢgR 5!Ot`G۶BjBuWgt${әq驺:7=j*YI%Fz'LMV^'DNJ/&a– -é;RĊ"˞U1Z +9C1#-1\yO -qQQoC#[Q:9y'1>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2617 0 obj <> endobj 2618 0 obj <> endobj 2619 0 obj <> endobj 2620 0 obj <> endobj 2621 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2622 0 obj <>stream +hn>_d`w70 v`f,-6zaԫ䐜|IU/{yTwK}у]7q0нàcwv?aqm87L9x̸dr +A'(;Aܲsě GI{8qPD{uȦ +Qǿyn?.]MJmH)v/p@sΌUX檰4 }g"; +%a;{Syw{+>*Iv1v:tJw|:_wix:ATE=c}AWЮhUtm/~//N N"遞 A( +9 D =.َD=9- 0RwűWt?xM0LD{Cctl]Cf4wҡO61`{ `M38pR}{<2t(?CrJCA> KԢi䌂$F< h |q >J~owwȩw]@6S9FQl<ܘh4XlC.ti. HL~53HAq<(<9fZE0uSTBb'! 'k-'?uO33 |k жDX63|o4ZKOwރniq4UX֋#_JS< Xl0Q GQ`x3iFz> +a}R{BU PŴ.z6՘_KKT3,Sxo<ĵd +x D`@܈&= LC+8@Wr"B^ȖL5T +"jlVAUYEn1Xq[D_Cd2b}\n?PͰEQL76 (A_EDG tG5m Y_E7l _E M*z'59 |1eFvS`fF-n"YZAigW>l/eewrRx1ㄽ\ԠR"Px͙acqc-F^5H#ՎԆ\bkZ ~9gO\:g?rOan#<[`ssj&L>ylT2Nb2&_)KGlI֌~|PKg9־6fCme¼N +?yu`/kUppqrIا,ta : zmJ0M,NL}`ip(|׈+.#+CyUBe3f(k?Oj6N~mֆ؉KB 8\E4=A/vI7' Yp*w9Ķ\Ҙj(i:"f6l$FDù-NJaBS9Pl ,,WT%fngKɾ(*6K5/>W>.E1tnoyeN<,d +9ВSPnUd2 2"zs~I&n(`F.^Ax?meIVXsE{*N^e?=a [~̽x˼G0Ǽtݾ82Y ]cP9G+) TiK;^wlH~BRի/UC{䉓;å@׊7\^jt--T#Ka1E/GD!O4$`>l1edp5yr(ޅPw9!V6'-yuԗfGnoGDrqRDWmRBZ񎏙}iy*] J\ϡb-ϮbZjG%q)fWgKW 1!9E'UnSǫbrR#-{ɝIѢڲ ߒ4y# k_ +XⷪWTJ/45nrp06ž,[ {MN_ڦLqa($ηW\<LO-SrۤYUؾuf=^ʠKi˭!Jz+IMѯ;`q7ݺc mjO.yRJrۓN/DSy-VF3+ZJuiŚ;ڇ3Kpu 1KYd& +mǹ:q\̲$b%qdn- :v =!(AV6.SrS_ՙ9`jRpCJ=!pC翐+^ȻXWGmV>!`eJOg~_{4Yu@U!]߮uwv7m1A2a29)vJ39n qc\(Ji)VW>S9WsAKMJ(n5l&S ķ4H$[dÏoǚ$yw`[ͱI(/e;Tp4^K\@ *S0´ZyUm.3 QHlUY8m5, Pn^r>RAvԴ^?Ob8]>NJ /$I ť3q,rGQ~gM,rQb#,0$eC("DvLW*<K¯ƣulʧ8yCOt[Cn>Bz뗗O߼oXS;JK!9>kõ&kcL& 3Mĵy%/OK9D4ۄ&%o7?~[|]yi6媗oִ)_&;閗mfЧj5M_:Tm٦i~ްͽ[+=4PwUrX2H H07f)U=o vZ7\o*[T7y +~DWz925{ST7dy.8n kS5bE A +endstream endobj 2623 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2624 0 obj <> endobj 2625 0 obj <> endobj 2626 0 obj <> endobj 2627 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2628 0 obj <>stream +hn#ίtU|p" A-hlxq~?onvS81Y˫Kͻ? ?~9|}wxwwg3=02ؘ2Ontqкi\ǤF &ck! +M&`Ƃ3lFZk?yw,?6)e>5yG=fͩ;oo2)9v'Q& }ԅ,. BGŽ O . k#&wd_&ua<|~<<<']|c=8W6`pX.1Z&0[Q> ?6ɌNSt ٻo~>O{oX f5C+߾~6,o Gi0rx_??38ƩxCxzxg32"GHu:4Yڎڎv4!HhXDZ-?N7P gG#͎S=!qO@lGGmhkH5=E^J6K] ɭ w4fLhM5v5ct0pS &xn;FD3eZجMu6xc0; 4-~ x_o |?Et*a@Ι8̠ %HHT͠&4mt@R'"6^EhhR*p<Ŷ@ .A\I|MA fcvНp;b &@h$(-FnhJB Ha~\|"~Z2dA?u0(md䙚1(!xxM$'a0_q!.Dl!|BU3:$59l{m?S9jdσT9Ѩ-[z{mq-^Ufå +˱> <\7@f [ 6v{1bEz HH0ydxa&U-X۳ZPA>ud*iO!<0Al}r6#YV~Tmܪb@ S}  }!Î!$rl +  \~5ѕ + !zD'\ 5ܢ/x#d.N~crDCKM ?@yaC(#5zR gn7nei6Π4'*ߓPiFsNN+A8"d1={0r!7~%:C5pIllXZ2*,c*gGJB4M;i;X_؊"h{xD!T-8Hȩ^O5 +31Oѻ D[H4FÉ9 V9lE`쓶z$IG:>PN„$O(kbq- + SAY'ZH* |G>8DcR% #"Z==ty[ޓZd4\Vj!ID*v4h=}Uw_uA +gc*3hoU2a[jiZ`jf-BYUGQ7]۟K&ZL-Wj\^7ѩ( ]R9,?Y\1xN#{Bx8Z2.n\T$Vw+V:;xYr|X_ӈ,])lfLn_hg^:d,^޺tE*cN(\!UteهK.|",DfZ&1RL{)7ʟg!\(8գ?!mZ{{˧ff  >{C6 [=6!059$f}a`#rQt:輮%|Pa{@T.h'[pi턅}h߁#Ɖ uq,>@bh߁~"Z!yXw]>@{+;e ƙo,X& V* D;`  +-!nK% ۻkŻ ,ǸenPM vIJߘu]NWU< =m4l l8{qAtR ιc+așyP3r^sPU\"o)2~}RlTwϴ&"͚eɻ@lضCע)"=t-G!֐~P+%/= Z|JNuyϽzU.)Aɑni:+b4j}|pR2:q1v,ᲺcYyy+e51dJF/uEhUf}](tn7\WCk^@^Щ:WҎ?\T?^CkJ W6e:Da<;kozQ?.%~N{Q4ߦH˶lE{k٢w@tQYN*Ӯ?еrIqՖkۃz񲡶ҕf7P0jP\Ӝ]XG,Utuܽղ^k^R_;VZ{OtA^-%t ʗ3/ Kx +{DjT37e?DK\ioN dVGv7kp.˶.DK.W|=xƛ#k13&m%.njw%6L_i֡dZc3 +t)GrMNxU2~_ʿ;[, +endstream endobj 2629 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2630 0 obj <> endobj 2631 0 obj <> endobj 2632 0 obj <> endobj 2633 0 obj <> endobj 2634 0 obj <> endobj 2635 0 obj <> endobj 2636 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2637 0 obj <>stream +hێ[]_qwex+(4A[v];Αvk@ +Z"C}Cfapr4/!*AtxMᄃ?7?v^kHZw4orGE7Dg}Y4i ᶽ/l?}=6NvoJʦ 1>=yak;E0iR'14}M}c_xSA4sPjz֕(^i[FF诛W:~z|o?}xtC; ">Hf[JV>Ī2Z ۪"@de.N@@2:<=ʌ=hh'Uƈa + jpM34-}&eM5O5*8a(C"9wPVomC}[bAēBKE4ҵ('j;-iSَ'f*k?e j z&V#l ;:u:5Hr*EI:E7c‼`x0HhtL`db¶[c`8!i(@yL$X4,{XեՈ}=jqE&^>FezmTm)'Pdul *"` Q= +C>0f7YS)(gDEGc'#[4 @ǑOSdm#G$J%6([VS ZkZwkrT.(q]\Ü*տ2 *ΪxQF%lIR2G5; LWӑ/ޥPrb3yeIX$.,W}7ɹRT!".0:i=fzX9pUK{ArffLĶRAiaE.uMȀyVXԁvMĻ/$/;' }8bF!;uIrI.w*R<;_*Jұ /rhQ"-~=I%Ꭹ}l_&i dLeaӰ [dbB'A?d4BaY/8'w]P]]"gً*. J*:XH{ eJ04ͻ}g*Ѣ.)WdS_IVJO^3wW-7#2.V-Ga?+_٥_+_j#f_ciSvKG`13*3f̹Lu8:W\ѹ³UݧpI6V +xdmϭ &Q[w'ɹd7r٭BŽgT/<zeBKD]B_Bn-ߚOR`9H`O 8qF",Y VϺ-"a\9^ %/wbLeDAZ 7V\ʋwNCM|ZL3UC[{ǥXG glBKNDŽZYK ~QV|;-uK!\0pi/W[B.O^ymXH:wC/#V6tLǷ9wwso} E=vz֢JݦA Dϴ7ߟ>='w[,U1[enaq7o7ǧ'Znœ-`@KFc ==͇_vvtFxB)/iԞqǷWI=rrxPo0]Jui&^G Byϴ1W |^d?C`Ga&,׮su_ȭ-T[ +P= +!3|m":~{7u|'KUhU_wY]Cg:6jǧ+_s +|Uz彺7//<,\)E Fm!`3о0g xPV 5xzlÂcu/{̶WwqC7`^BLkD=l<]=lNXLCw=Aλ1x7Cgo5"C' sfikɅʯ\Uk=F:)e)]8+Z}XxK_i>(jk\P"P4tShv6),dtB%LnzyzY1 U&XijۗA:k_6̌1+o v\gK7^7 m!>hTKyx>з1/,' 㸛mZj!3Lrc'084뻻xn4fbG="}Ga/t/]L!W#:_|e`ol|.P_F~'o Bx +endstream endobj 2638 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2639 0 obj <> endobj 2640 0 obj <> endobj 2641 0 obj <> endobj 2642 0 obj <> endobj 2643 0 obj <> endobj 2644 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2645 0 obj <>stream +hZKϯ㮁~b`;u6XYȿW"=31Ć&wOߘw̴ؔI_lL*ƩhvFOmJkOoovϤ6(YiDoxCcw[c0Л~gY ߶)M;o?VU%VD8˕j%;_Nf+s3W^ ϷIz+f}l YZD u1}'v+_7S)IYWJOa#rpP=?GtĈ^{/ &6Q6`TU02R8aq +'elo|}W/_E'A4sQ=4{YBmM[7/rt7Oo>0/^SxrDN<k~ZB;$cccL2Z<ڪF^l -逗2>7tL"㱁.Ɛ!3kXǺlR>*g;yq{[cT58ըf N-0۪Hb)6>mlT/xRphr#ӈS YXף a]vnP3-i3 2Ġ8چUPgB0yÈF(aT@^ťB`RTSnrɫR`h;6]&P4)TǶBcFH,z?r4UKJ<#zeR2$سfy̍@x@> Ƴ5TI"_'jF.d4w`Br԰h+Еq8'n2Z}ʵĪ EI}:5%R~mW/ג +$& +yY=&$s5 "eJ{9߆L aI4,s8M@U/ZVo[Y:VX[Z2|5$ QҴKڹKi %ע1H=NF&6Z $SD])5|ٙ/KB땔f$ *[,6a4SaY!K vq ڟLhw탪Lll(Hk>\Ox0426O!JYA 6!h-I!K6:`X*I-OR6DX"]; *D$-f{R +ȼ< A +,r%fN9!d:K [$GaxZh!;~Eޯ{5Nտ>vo=}?ט4v^6ⓁMsuߪ?ڈgbc7F2kh^DTXTHJeqx#.5#._qEFoYFl#q#qXA".X]7aˀجIxe;&'QpF5Gm0AqkUQVLp8tp5(#k)Y?,twnQ}3; >z8i94p% j( "'?F+X#5zEeRbORRRí:zcTIs >)Jɢ\7.c塀<^AmSj)Yà$dA8",lfC9\['.{~*NzJ +Jn*tsD޹a̲k[![&Z'vZt%fP zs|{aY+sUJ?Lpqut{M WwO5]S@+n|\0pjLW?\SWoo]/V"@)_fr߯0O7uoN. z2VX t EXV4d d/ZWp1e9D"H3\C0;6*",WH4 +x@wҞGosqϡrywC?ᒗvosT]B95^@t:>l!lK!> pF3 +<~wz/(I.qf>%Ϸ&s6p\r4-|m]vty8/veݨޖwhЗ~춙^+0d{uu w֯*l0{r]vqr0$Y,d2\+l):k% ~v٤\oN6en,loC6qGx㥭Mmśx]5b$x+M8K屧 ^ޥc;^?boAb˶\vm@8v+M&o&. gGݒzӿ_ncZ4ZLfg٥:[i;(͜kkhgKu8Q9y,?=v +\r1{c\"ϵ[m76ۄi%P7KH ]|͍/GCpf_%&8]GWzZF5=U>k}<-H{ԥKl#ˮ'p)V8VW^r#weh1m  l +!4ڵnX%AEr + +endstream endobj 2646 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2647 0 obj <> endobj 2648 0 obj <> endobj 2649 0 obj <> endobj 2650 0 obj <> endobj 2651 0 obj <> endobj 2652 0 obj <> endobj 2653 0 obj <> endobj 2654 0 obj <> endobj 2655 0 obj <> endobj 2656 0 obj <> endobj 2657 0 obj <> endobj 2658 0 obj <> endobj 2659 0 obj <> endobj 2660 0 obj <> endobj 2661 0 obj <> endobj 2662 0 obj <> endobj 2663 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2664 0 obj <>stream +h[[o\~_qK~)'(P i!胴Srخ~3CYKrdð2g8_3ntjSTI8Mׯ7zyyޣq+]gCy>m-y_gF!F}>[NsB|%[FX#kTdlwV+i\]woހzm'e])eR>wWΪŸ0T +W+KV G$v'i3{VZ&`B6/:4ԥSmU$ȑ@О/Q)d3d2A+^|fw^|8}o*ўL _M@7 + %(;mk1?n{w立Xwqڿ.ްgqz A0S5jQtMۀ0YE_zv5j'5F%KYYm]# <$AQ@x[ @3e^ܚǺ5-} +^Dd,OC#8TDBV g\d1nh&gkhdjrE +N:B M@HhEíV~Kmaza4,ħGa{òɫR`h;mdH$v(-7}(S1JBבy'f5>]FX:!ޛ:}Jf潞56ˆSGc% 5,:$[P%U[8*20!ވҿpuA[,)(gDYGmYԖ^][!WΉGmWlcfZ"Q"rb+#768|j~mw/_?Fsܧ%U#SI6+P~MQ +#6H #KھC,8eҶoHq7u(cmy% +lռ \ISo"dG2r8{FvH+Ow-mM[QjDG Â&ɋ 3)yqRO\Dc<"n|(K#f l.Bfxh\[;; 5|ITa +&ea9͙4t7cT?{Q&\*խ6OQfM΄QW6%*sMh<{XM` +Rn6Tͮ-yRSlLRU :aLKk2 +bO`X"DBZBMUBkzKfpd+):](Ff-JN.}9]E=%V8 +rbřgA}%\.;gޛ2  +đ8 ,giyE9q-; "owuEQ%R5a2TE)'msbd돻E1 q_tp) ΅ztDK\jSgNDT;: `$r{#4Lt%l"o2dcŪ)O dIiщ9yXl +uܱ{CBH Rˀg#Ĕ?p0pԅ}91}i$Bt*V,Ei Cbf>Δr_L{?JfҦc 8-4C8ZY`Gdi:Nj,#oD3bE60s>RON^:oBƓڣp{Ht1A{^bNCA%v:L[ط)D&fTN.xSZZ9V`p13Oʪ_P%͡׀CZK%l6 _4]#9O!E`ܘv@hEx4LCQҮb'p0cܮNq9`9d$~\µ^?\5M짼SP?e7_^Kmۛwb*xS;`e|) a&!WJT.2Oq 61_9]l!_!=I=GXuA[(>o<2u4$5#$?xn^"!O\o(~^p?{_ϻ*8C}_A8Z٤enuYuu 1X! Bq$Z>Wמsx +2U^S^k֪wC%b"Qk +EDJ淥ǯag۶?;7'ySo>3d܎g];ettxo]Rͩo3ec^]ҨsҼ~)g{%>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2666 0 obj <> endobj 2667 0 obj <> endobj 2668 0 obj <> endobj 2669 0 obj <> endobj 2670 0 obj <> endobj 2671 0 obj <> endobj 2672 0 obj <> endobj 2673 0 obj <> endobj 2674 0 obj <> endobj 2675 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2676 0 obj <>stream +hY]O\7}_${]}*UJ+l M~ό}. d "zlx3l^-W7 ǦgYlyxg{^~9>8<=?<]K;juiS;Q]*ETHju.9W0Nh'4iB䴇Zs]\_x&gm}HHŽjO# mڇAF!`*ӱ$Jipج/Z7V'oddjutb +֛td3@͔E@<\?J4`cOkд܆b{p84EG|O%(F+ 8 .xd7r3-y1Q#AˈR mQҡ7!VFTzikÅq +iVpOzٴCuwȞx9 aպ*Mu4Vʩ/3mKb#ly^t7m|薇o1щ3Q)ٵj7XK j@즍 ce|Zq#49tI;y 0o+p/θ/l`A8'>jեV,Ǵ3NuЕ1rcmtN2JzŹ[m)'J1\Kc>S/ő{޾; +ҴW %CjG?qj] CXgt$ }P` Brs"%Pe@ZOmKa@V?.?[j:j(n+L68$PWv{H Å6l[+HcX Y=ܑ4sl +ґ}[\~̻ y'5?.KmH-pǯt[F8zlݱicc3u==.-E洷 M.t +endstream endobj 2677 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2678 0 obj <> endobj 2679 0 obj <> endobj 2680 0 obj <> endobj 2681 0 obj <> endobj 2682 0 obj <> endobj 2683 0 obj <> endobj 2684 0 obj <> endobj 2685 0 obj <> endobj 2686 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2687 0 obj <>stream +hZ[[~ׯ8D~)(4`a-qb #ȗ:@Z9;|͓͗Nf:U?bR6N)yvFO?n6O#_7vZZ*>o-y_GF"~#^:hksP_dd#8ڽUf'#b2~vJ1yR֕R&S)yz}y8hV.XS+\,-Zy/*ZI4R]ޛ̱K˲#uia* $qО/Q)d3d2A+|?|<}/{*ўL0/]fE`@<ۇwO_=zs?y&N7,No@0B`X27 1 271%3^OUitS!܌BIC Ƴ8TI  >Q]13hVr %0[e+c+Z91v@˖Q=I6eq>iJ"S&}IMQ{1ED1Xχ>?Gг N0(4P::(N֦pZҰ?s-yBHnwL'Fh~'@[Kó!XdYn?>"ia7i)Jo-h>Nm8 *{S$ + FK>C=qI u1p @^0K``s%2K3=gpvhw 5O3Ta{ytRx8]n4-3FXdV%MSˠ="U &v1qNbUXiĉN"l)?F Bw<Me*hʸ)dҐ™v0HHEpE<%Į$s&^tN .ɾ w8bTt`0h>ınv *`%܉ zblBW53b>2('2c!g-$g'N2;HQd˾ؕF "l> kid--Ϭ1~`-,SGUTG|hkMNbbۖlP3bHn +ש($-mʋA=H)u l6MPqg?YK 6x? +lty؎'?yCUQNYah= AǶZ(ԑhGgzG2Emf4c ,^_I"!Yk +|߇PF5cdUm4*Zͱ +̹9GW'kH_uyM-`7}uHO0ru h3 +WRp9((K`(p|x>IŏCzR['T8͏:V;Ï"k'KId0|0BxIj+&, p~.ŵyﳱ=O?բ9jw[/1մb(!V'cvzKM!Ԏ|PP=? ]zCGj)Dͳo^t)+cn(Ϸ-o?<>t+Q>ѕY;eW/_߂[B7j9Hv-Z`VerЌ z3#+-[(w4uJs0eX32Xg_+ x߫+6Ed+p <_GtG7zWWo5tH*z#S +z{{u_COZ+^CXWMu6o +lż3/ߑ~#zWB:-N246Wj&ia:wl|B2%P myZCZ_[/z$JX(C1PҲ o4J?U? .&#UY.cSeܫv#')qJpFxų@. 7Aq<]ivM$w0 +endstream endobj 2688 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2689 0 obj <> endobj 2690 0 obj <> endobj 2691 0 obj <> endobj 2692 0 obj <> endobj 2693 0 obj <> endobj 2694 0 obj <> endobj 2695 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2696 0 obj <>stream +hZ[o\~_qK~);(P i胼Srخ~3C#qp v!s_7o__\_L/e+I8n~u WZF3t:ej2AQE`OGc0PO2_Is%M35;^0JqJ+k0%'/sh3ڕ]HCs +̟o%Ta`f6h@4$j _T 'Q>ZvJ2yR֕R&S)yzs{xyr<8RŮQ1 SĦ(0\ +*ZQ-Ջ >toZM2*l&2ٓgyuɷO/Ϟ~ƠwS%4Byjf=,Oc χ'ywo^ݾ{sw`'O Sxr BlRT,4_qja +;V*|NyuT%@^l -Y6tL%6pCXA2lRd!ւY 久QwVDqjj*+Ӱj<[<\pDO3JKXdeȩ;OjdR|BYrrcz'\}\ A.|굍!7jvӦWf[hkP{azcGuP|GU)I˻TY|`OY^-1Dq[BK ,bfF.t0n2wKnq=_X7sJ|cu¸ӱ7O |]ϒNXH#-<c갶5?^d@Xn0cʩ\o2!t̪IǪG'ͱmXYUH^ngȅb#"d&Ufpympimp SjH)P!.X3 ?sJ)8$ =9\ق|cq4?\TJ +ĬʥRS_+[̉TJ+uM+i^#R'c|-+ZHbuTj!̳d)òuV,0o¥L*y4qd$ovTzmHb$%@InqK OђS|CoN˪Yx"_'-߳Dz~Q> W7d-/n3U"U7.7#&8dQ1jW|=ﯸV; &b\s-wk4tTsERn\%ȷg.,pio^ 8܍#x`o'3%?Fu=v.iIWUj7e̲E<ȧoS+ =-A f,^5^|{~w\xyI|a.\(ϗ]t\߼{GqSCTMhx9y-Q7w?&VQZ<~"/dU37 +̵w}6RӀ%J߰G +LowN \']e`2voN)W.5Ͱ6׳nf^nQj#H~wvS z:[ڕɺd퍦P{KzPHĂޥ. *zOfʶywGB>;snG$ +R$s=G{l2b5 x +endstream endobj 2697 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2698 0 obj <> endobj 2699 0 obj <> endobj 2700 0 obj <> endobj 2701 0 obj <> endobj 2702 0 obj <> endobj 2703 0 obj <> endobj 2704 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2705 0 obj <>stream +hZ[o~?bR 4NP@FS)U!lj:73$+/I C>Kg^3}zawq8L]Q%N#&e㔒W.k7^Nimt8qqRkYg%5Q_!+Cyo:*4w>[oNcBEd#8*s)#b28ua~LuITJ^nwU:ͪ\k`EUE+E{Ek8IW*¼̛_[29l0´qY8"PNksTi`0G[/Q)d3d2A+.xyϋL_=AOlh';}Ggw썂0C N"0?.vsͳ/_ݽy8^VxڃLb*i:`Tb +O龶a?!:A^Jg_ȮLG 2:z.d R;:nmbj(s:&U|m`/K߬ܶFE ppjwT6VEL'(6&1oM`hK`@#]+ 7/2a=0hw}RUEe7YD8ZugBzÈh $VJC>z4$,ħGa{ɫR`h9mdh4vh) #!Ȳ.O#]M^>%^OUil٩{nXdu9i/-UUP0|7b?\[flk'r7ѩaQ۷=e+c+Z91v@˖<i6gk +QTYW#SaJd%d(7NsmnSH|qKƶXfLʦ( HdiZxjw/)|Jav>D<)Tp*2S kn,򧚬ќ \3~\7^49Zzv<,2"\1Zjܛքk&gV EJݰLWV)$wVq F%=ajD3o=M lrLٯL=DX gʼV2\佒IYNog1?֌4CnP^ط |w&AsFk nng +{IHd,fzBna#iG!q*`bq +GI]pB-Oy3OY{%W!dtNcͳm\ϼя=a&l|PzG<! ns>9J⚪_!q}C .R6-,g/ٍ8EdƸֈJq0f| 2jé>Z;u[k":o0Jg(L]bcms xNǡu ]6+ ۣ_[)F|xO8I.QuoY~߈wX2.3ǩ-nמTC7L|p 47~-O7jcm46?F+(g2O3P@ל=>c56`DCKs=]KvHX2I{?v)'X*8|wrHO3KVsD]s RbH^NUMtEV[RHJ70]Q9]"Mk/HpXM(^w7g bNe2b!&nyp75ffioSՏ5Hߟ€t} +``1uNAG֞ʿ4@ArKɾ<@=]1mJhF塌=૱ٸ:]Mrüs(98hl3CPQMtX9P6"]伉 ʹNEK3oq$CTݢx:w/Њ@]*Ywm'݅ sgH Pȁ»sTT]ءy w `,-UM2fKnq-Jh,PA" B;笊lŒJ-R[Ơ=AhP+[To +ByzIPn"!"eK\WeuTP^ +eaݎ3Dܮs JUGU<ڽTp\R*xLbuNC'?=$'TJ@qvR]LDZ-/g%]j&o>eF\NJ-)y,5};ȎICZk(,FQiU +R5g^<:g IA({~aY3sWL?M>'[^h]߽t.F@9𶪅%ͫs1}N u2E(ҫ;POzOqDϳ<\P zChN"G*$,9`'x'- +;ga[5I<^ă *l&voac'+x ;'׮-윞\7=6k76oO`WvrTdĮ m"WP R=[m2tضI~"Pk7Bx^'1cR ԙagJʁav>'z?Q!/6IUrb^Q ]?Pw[k60Z^y~RYP$ 9&?SuNÒv]&Oʡf +?%hG]~Ⱦמ7esM.McȆ.C֥77oKO{N> +endstream endobj 2706 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2707 0 obj <> endobj 2708 0 obj <> endobj 2709 0 obj <> endobj 2710 0 obj <> endobj 2711 0 obj <> endobj 2712 0 obj <> endobj 2713 0 obj <> endobj 2714 0 obj <> endobj 2715 0 obj <> endobj 2716 0 obj <> endobj 2717 0 obj <> endobj 2718 0 obj <> endobj 2719 0 obj <> endobj 2720 0 obj <> endobj 2721 0 obj <> endobj 2722 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2723 0 obj <>stream +h[Yo~篘GX x<yXIeْ"#>_}%16_1o.>]\vf0"48i~r4|aw@kŷ7>IM-zLhG;diy1s f4oo[cQ[L?CJ~t` DueT0ntF֩A7`fc;f}, YZDGt.lFLB 9!h]y}y^]_(d~c= W6PX?@hKaVD%#1xKr`'lw"j;Ct ~y6/^\E4rSAtгy5lEow^z|5־~&7 l7g;oDrcVpx//6vCmmm;n@k3f4|C +y8`<Ah=!I @jGm]}(khԞh%ssC6ƌTC+D()iPOسyL|6xLR`[CXV AN<_~@cZ$x8[EТ1^AhXH3M +Be6" !MۮϷhz8N@ N &n%!(rVK moF0]Hh %<2)&ʔ'tyK5IA5yk2'> I;%HIa^A ,KZ&@¬U<+|cr'!ΪG?0:8 XM%sgW|0a˔X~Hj&idj]/5sC:pirFP%id]+)`0޳YJDҜsaCU_bɀT6#T)R-#]@qvf,(>y%Mke1MeEp%5o +lOB3橭,GrȾp +1 ,bяmRR<1nl8B!{a}52܀in ު#%7z ^cq;:7;fyZ:2׈9%O?vtnfE$ OK 6zn-<4Ng_ekR93LgNoA`|(̉, 9&+zg5kuͪZ4K-Ԙ$+m['gt1&pS3M8~dr!Ē + +*JB+H:zsPZiJ#Bv[ OYŅ|Z2!jfyvOlf}tͥ>=OJj~o%5m:5 1r\a:e30zߩd8BY{?Xc2A5'uϜ~d7xkQNu.'מ +K:Of"%d1_fMs'}f)qkqROH7B&LQ: wU@(V@ y\ <')wI*lf γA:h +_-pT?;IMG uq@e p/b|s(W%W-xU+W U؏tcۓоuj#@eS}i:S9P1%fb>uDGEeXwgyuVG +ިvWDi&'1,$>)n.uZF\1?>XO>PI]?Hmj/}s[><.QlOSA$'JH8LM8&#"L#~dY3k|}fthZ8CIטxIOMݼl+!uK6"Im"݂g'E4ΞAjz)铟VSy% +5f΀v/3b)9K:8ўn<vXB+F,^'.+ +~6@+m̚H31 +v^]!0BA(w;/ЭxIw 2G%U?_|{ë6ڌr|ɗﮐ_WTwyy? +OTOh&~^>xE{|s?'vrMq9"q )Lǀ +,pԖm? +FT S+tc v,p<b#lux]KUh]1 iZѯ:x6ex!Ջ:\\+8) #x>"7N#:4_:8ԌZ] ߚiKHE#O?>O%| w}z:KB'ƅ34-7g_O^2¯W"QlDjEfAˊ]Zx=yEE̛4Y-}5}s-(\>S6q=ug*jo: ͱOʋ"|s;U?uL +05 3 +endstream endobj 2724 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2725 0 obj <> endobj 2726 0 obj <> endobj 2727 0 obj <> endobj 2728 0 obj <> endobj 2729 0 obj <> endobj 2730 0 obj <> endobj 2731 0 obj <> endobj 2732 0 obj <> endobj 2733 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2734 0 obj <>stream +hYMo7W@4= +!Nӿ7C.R$vS~ 9ogf_~'~r8["Z]2*%]6NoF}XhclVş+c\0gcBN+%ibܰ}B.<#~fe47i1<M'#r:niUGkJ OduwZ4tj?R -F{_]j^d$],F. j֬\-Re@97vw6`—EglMM8{iu^:_|Ƽk&̳:s٧B}' 0C ڪeg]\|zy嗻QA}T=֦xgQݏ+HCjHjWud' KƖk O`WԈYjLG ֕,G'2ߖ}t ,Xu:d.>w3(Ko1yryK",?EdUѡC8,;jxVGLY'O"fhK6i0G1*{CTb[ +Zv3?㢸Wm"x|Jخv^\ +$Zz>pH"4 +WLGp7N`'>u# 7 &sHAl/"4{rJN}]h*Iz{j_B:)¯O6\ohW=1܈ce q8, SG7bJ]P Fo!|pU@Dzau̥&$-szxeeShdS,W|r5MAN>K=3~so9EMl6Uro=r1rm2] guC.P2Maԙ .$m#RR3_uUX93^^1!r\B*5&m2mF(כZ5쁉Ʃ[b˻ӺuЁGڌh93+4җI!˄:}BluZlUusxdp)LkX)`K4S1ybq+fԭlmZ\=n˴0aj}1k #!h"7o! CwԐv浾:6ElҷZ7a?iyƆO'lb~:lgJ*Ap6 LhT&7Q|d5kšj)8囨\24~|AŪjRYDa>=F 5>N9A a$ ?8YSip\I:4$_wP,96 +_bMe(!LDٗNT<p?utyR3zɸ7 @wJKCD9j7zʱ@@) >$jio||Mx,ƣиx" xlc0|?>џ#zT.|L1z^-UKP2a?| z#Xes?)H?=3`oF߹JjK{DݻnGǠܤ" ES-8^/`B* +endstream endobj 2735 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2736 0 obj <> endobj 2737 0 obj <> endobj 2738 0 obj <> endobj 2739 0 obj <> endobj 2740 0 obj <> endobj 2741 0 obj <> endobj 2742 0 obj <> endobj 2743 0 obj <> endobj 2744 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2745 0 obj <>stream +hZKoﯘms0%rr W`IQ~ztҎ1rQ]]գ{tϻMn:Ԭцagv{c߯ ?fqe'*QhDЮ{Wsr8;OM#5$WyM"2@hR U݊:GYtI罯h7z%oMh&7'/F:0fc<1 h(Ԑt0w,s}Ϳ=O맂6XZӧN 4ڏ5NXO1{&w 6c|Lb=ف--~i>vSI'_a%,v_2]pSsLO:HK烈:lM{rx?p n>3Ez;MT2?p[ZaGӁio\JJ}0bM T4:Nb60` ړ`YxޡG=p_YF&2 կGSajэ"}%]&NlPP1IkGC`ZG mMS{(X}l\O[T`XA(mdF$C QU[\yjyII+ƙFoi4 ym-⭮6ksC;)$zsq YqI:ol*%T/rR "kBrNwES{$h mUj-5R>Q ͓W*wzRyԍq* r:?*#0{Dzlkel%642_ZqH@EnQ^(> ҙCJN\h:gBbTB8n撤\ਙYSx' WXB;ُ !:8Ä)scPT<{ :J +͙#Ģyb 4ז_q/.'ӭt +$wǏU/g*‹ByQ6FIÙI(m4(K%eE yuĊOxSVAgQ\f+%=*6Z%"UW&=1ծ4[:8`"yXVEеd˵ +]sĬc˞kD^Ũ46{Y6I KLTZ(^VqJ1\ ]I E Bm0lqCu,yS֮CTbb9N$N`G +^ Aiբ\z ~;c +XN +GD-KH([FQĭmqSU&is`P.!ӹ|R9j.m\wxQq*5wל9pbRМxkl/3y`wO-o}$m!"Szϊ +K,@:LO tܢ' T +UTVfEkO z030mYzO (j%l5u`HQR#WZq*9m77a})ahπ!+ {"3Ri]>Y|;Ι_['*uxV__!`--._}EYg[ \/ŋə.u" ^n|~JnoplǤsm_rZ dngD9^=Dy6@Ařw4 +hz6@1/lh?t }{GzC/2^KzIh%!{%|d֛d~{Gj +endstream endobj 2746 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2747 0 obj <> endobj 2748 0 obj <> endobj 2749 0 obj <> endobj 2750 0 obj <> endobj 2751 0 obj <> endobj 2752 0 obj <> endobj 2753 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2754 0 obj <>stream +hZKoϯ裴PM +fC<k;UM8$!"fW?l7W찿S0|d\R"8ޘqty801tnkWH +n䋨 +@bFa:iFV9Lb+EX#֛(:#6_ܼop lP*%o7w*ŃgSU**2",NEm\СW +3^"yYOĨhL9?&4gC%XvTH 7Ph {a?!Tx!05'@dl+q:g#WF2^`ki Shk5y%LaPl">]-im5l;eWkA8Nph\`,,P\n .5&'@ +XL +2ֵq>-Cby;rSxS (va(j̊F `}DwЩƓ[!'`/E+PJ3?e؎phxP G +bMdrH}@ۉV7YNQ!?|[ F¢Ȟ5>}VEz}Jv8TՏش/f{ry0Ɗe s/UUH4bY5]PF1 z A4EÍVujEt SƱɤH_Pȕ9 u<wXu6),>_p|qyySoCg(&ř~^%AUt02D`M_-GIAVdx K |H#Gx[]דi䄊bk~>4"dN^/R,b.+ۦmZ8F'4jܷiԸo\P~>(%&n)䫐(^l2J;Z}0>ĎY@ x[PNd.b8 {l3_e1yZhG1JUV~Av330Rtct EՁz9aVv{Ӑ%Gy +Fz# @k +EU;"%.jK7Yp9q6fGęy|;pGmL2au݇϶]УR\ejӴjYzLX? +f Pb&O1?j{%gb8W<JS4/0فUGfObu98Mݶ8p% +cLU"E90qB"Pv&9 jXOqCj2^{5N|@&|\uEZD664=iy_,ْ'Yfa)/ذ::|pt9 43Y- ZEZL;4y.gb[Z枝ʔ#wM{ +D%']wKQy6y|}9EȅeNϮCuX۠KGK +~nDEX6ZDQ@zp5}\=E\ǚ+ +Vʇv+"bRSr%[DAL/n#!i4juKJ&K|z<X{\MKb醡tq9Me^f&-@zb%xc}%rVO~EvʹfbyԸEubCjl|.'vPW=inj$UG͒VO;I2"wB/~=|rR6ta/q0O䋛Ku_RӺGˤ Yw7zRL^oo>\VkC䛠q*>z/e 8{#d +,ߵWdӑS:͸tMr[ru!OS\glesZEwRFϩ3ȓ:w^߸vvD&!OP?3;WΨ$JF:C_! B9růOK J~EqOr;rWK9_>8ɳuɹ+9>w}GBr݃ѸA|Cigbqix-*pA6$ޒש}A+KDa+6.Bfwb LD1MYh%ㄈ uIn81-&*O&;6BVxN"á763;zLTN8'cyC,Ta7u<ʅϬ#\# 畲kؕ'J4#tUez26wKaCM=zU7Ѩ@zIDFx+#.{m]+|r2CaTf KߙEmGدfzBMdR\jV{dlmfbUI%")I+  +༴GK: Vv.V~7ז'/UX}Q+BW]k:Amo' ^u׹O~K|o-X& +endstream endobj 2755 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2756 0 obj <> endobj 2757 0 obj <> endobj 2758 0 obj <> endobj 2759 0 obj <> endobj 2760 0 obj <> endobj 2761 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2762 0 obj <>stream +hZ[o\~ׯ8Ry(6AH +9NlE}g+;i!0]r8p3W-?͍[rpm񹘜fM6,7o.Xrs][,+]22VDS99he;eZo߁xכ?^5- DMB5D}Kt]OfԥI/n}V>bـF6 1Qh")lf^p}?+~)pu1>Kkuywp|8(2Á_):1bF^]1>aL"(!zKD;ݦ8@M35.BtKy9Woxs7}J˗_>.ls7P#ԴFY]Rn-;П/^o޾{|say_~{\qw[Z3) e97;oMjqaYtxxedD3-Rhq1n3L"sృn1=tc,{bc`jrlc: sOxy]Sḩǽ3Ԅ&@fA}c:b NF4`:>CW,м?b7vAڭI$R0,D@ % +FB#bL 0ʎGL†KyWI,c܏+S451wX],\OWոT`HX|qa-m aFO'|k' z!$[]1\iDh.]&dzY@S|ʹFbVÃY EQ*7_mx%]qEi@LY| ViB#%!=z/(WeůA]`Քm!_K!nِ] +>*?J;ӜkFSyTA#ʜe*&JmU>uJt†chցo"C +Τ%EHRN)s*,Y6'3??mz(O en+V ykѢtL AL6n͍66; +K~Ϙ磖(\d< jo&Imނ . Q׮C\* у)4#4;PTwD߹QyJYVyyaIeQ6- NAWkcEa>R:"ڀڅ)ٵ3kl:JJfў p!|̧tPg?LߝLR_ أnSͤS:NӖrMT]T5mvbט)2c2+\9V*GQeJdaMۋqR?U%1)qFv֮U n ؒll@?y]Z0(QݛjGYTZF5US%VFSᏈID}Q3wX7$ +Z6S-.2G-+F:/#qEaҫ'Gc3n=sp +"ru[Z?^>/>]v稳V|No' +˧yE "O[W%4 +eeY"NFE8rDJ-1f~f7W(]4cQbu֦R*tL^<Ʃu2?jmi4pȍ)Ch.%ׇ<_wF=XV 9.BlD0V`z[8hu狺^ͯnHw*,JPwvPXADo^W;W.4wb{\~V]>>ǧZ>,?OwOﯶ=j.њ7{H .uT~[uX#b15n-}^O&0C1;SK +?~ pE`Vfs +?Ɇ3d 4&v@f>^P+<~&v_>Y+,ߣg~?4:cC:.m=^X6.<\WSWbpvg?;R& g#<ƼGH_O$wޓ" +VնymPYd m>i}^ں\u4wZGgRP:><q9 +Jؤ;u5O\S>kj#MND8RڷTKNfƚrYGO/ROQٻo C>U'IBsWmSM׼mo~g鳵JKuDMN^QgkA +;R@qSvzqpGoZSC;&P^6yIX$d޾__'rߤdYP%?n'zV%JcJWқV^?!>|_!}uW OQc mo?}fQ>>!Nז)xv[bc c2坱?R`Ծ`" +endstream endobj 2763 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2764 0 obj <> endobj 2765 0 obj <> endobj 2766 0 obj <> endobj 2767 0 obj <> endobj 2768 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2769 0 obj <>stream +hZ[o~?bR 4vP@XJUqb %K C>K΍ˏf݋K;vWT?I8Mowziy lmU0ܠ=)h*Hʂ4 >mL#~XN%L;{?mUa*pj r&E#fr6(aA*YC/0"ڴ h*Opm4LMĈL|M pwܯ;X!-}Y&mO;eJ"BI:2ĬƧCg=x&BxYx*zEaj۩{nXeYad ` GUE ⍨.W4+x`܍rFdju}ml2 ЕrEjBe˨6KVhl1QYNl`l[>I6_?CY24%N*:L=7M=63oiqd GOp(#PC_A5r22GxP4!0AL3<-hog``Uu%'-z+U*lI$KjMLpyx}<8n8Ǎ J\*myZ"F0o̦HWA6OL|S buUkS? +'{e(G`i!l[QA84Qx@p*LH-tgI@_fMnnQyc;iZ0i?%U$B4ձ2ф_pz;v@@vVTAON_'ZH).ƮajUvqW"9^VvDGp]6vߩXYyXl8F ^s-soכq̓O +ܥ {619:(B z6- !KlHJ8f3>")S!! +gPG/Ty FQX:ldy4Oй4"m3nx\ϱzOwBbٿf/l>nٳ9dLMALEq=>Y>}m-䏄`;N>ژ{{(ˑžčP F$eqIxLk^ 9KV/'S{3Q3# 릧 D6$f#4rs4ZYn2DNSu](޺6)Ǹ0K!y +ܮODou6)368t͸q6^. IT)JA`H0 Cyyh69gGB[CVƥ"꧁˗( (ojG)0Zňل l8G^8s0r ]eŝZQtQSʮZ#t&yI&cja^ڃ4kC%JZsÝ:Sm.َخ$r :;:N&[v̸+\l)n 6)J́t+*VtZơz5ܴⴷK` E>u΍= }l&?}z>̧|bxƣT7ە Jqj*}GoЈ *}n_&=]{gf,W/\6<=PbɥS݆KK OjEx2x9C\-r:a#QI%qP=18 & +[/XU$(m=Zc)YĻ^5d-qZչ6y#ާx:SŐTӊbI솫!j :O{/TV8ܱeJ.n˦7DVX`/ cr ()Kgj]LlX/$IEC=Y*aSv~9|{9 ksΔt:.}:)ήIΡgw3~y?rC3pNa0=b<-KtF[ACh +~# x ZX˶@k- m +˞ςGRQ+xS6ƪ O'*p /r$ ~Z-daDpe|z +^quO`C֟&#k7p*>]'c+v*eW`;@ i1ZaZ +mv+<[LuF~p3BwB GBx^>:giqko/R aE +^,V-a@;%!i.Ǟ:ua,hͯf[7K +lJ[G% id䣨ΏUT1L\a,>ƇUJTxRV>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2771 0 obj <> endobj 2772 0 obj <> endobj 2773 0 obj <> endobj 2774 0 obj <> endobj 2775 0 obj <> endobj 2776 0 obj <> endobj 2777 0 obj <> endobj 2778 0 obj <> endobj 2779 0 obj <> endobj 2780 0 obj <> endobj 2781 0 obj <> endobj 2782 0 obj <> endobj 2783 0 obj <> endobj 2784 0 obj <> endobj 2785 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2786 0 obj <>stream +hn\ίxGz_bX6!1ca@Yߧ̣(ZX^ky/^^_,we,6&R^ͅ^~)_к.nϤ.( &cK&w&`T~on>.K vغ?r^U"m\Re>5y=I;_?ejd:}ډ3`[X. ;bF\3o/Om&/ʺRʢ|*%/n/.<'RŮ>Gp$ O+ lRP2 @Ȑ "w7b +p_l-&(cy߼=O߽!-_X~@=n͐@L9K( [NZ8 \>}wû~}\17Dgw\pGRE~sZRAڎڎVNy8N> e9䬌U:Zdvt6SۇXX:WI[ LVї{3F%YYm]F`3 0w1s[ p̔ibsm_\ +hӀ + Ԉĺ{&O 5Z9emF2g"ZF4 o) +>S`GMm_0qqqLN?,1`Vǔn k1$GѣUp-.'e%'VQiKUJ/VO"nNțLnh a'|5@7tb+.q0S%DU?QHm+QnQkg \Pά=RO ` su*5%^Mɀ>҃C1Op= s/ݮ?һgYx,Xx'g/ivPW<'|\< ]ߕ%sK4Lޏ#(d`wd`X;n0$=B\(qfƅ.48~=gD%~c~z8 *'ɡ#'-Εg"={Oh;:4f~خL $ṙ@S[1{MQv =:qBneS(Fqħ0azEqDmtU.ңaFRX6ՉaybeTr }h{2G/ dLL%ܢomjNӭ4Y\*MLt]rz,Ui gQ=Gyzzl'y+먢%;6ΛlNyHB FtU|jsm$h[bYl.(iB{ye賿jrY 6) +*? ]ubvA+N9+i{0x!Bc 0HG{cNEɴI0ql Cz'ˍH%M (՜-iK{rd~HJP|-ݠ:5-uZY.=9ZUpIXTzQGP.qOTfj k&?UWVuV?EU`cqI0Wnxϟ4D;ʬwS¡t{Aם7թOgLJ3e'CIHQD4r@Q C ՙh\s9U>&4$Jkc5a+=Z}>S&v?1~\kB)6mu=DF>LOb +$اc_`Y@Wl_j%@6g@{sO@zK31סA~syp5s]a1gϋ:ϳ 6Xk=~H53=;\aЈ '\sFog|m-~#~}ZA ZZ!-!pL1_}4U)dÇ#A o~4BLV.9c_Ô+d#,&s\eǽT0_V5YР=<XB9,n0-Pp*bB΁Rn.ޒnk"[iC6M d4iluuXCb- +? ٺIϖ XN*u-IכJ5Z%5k6 ER)N2^E緋/=~f|/̥r/r钊/| 7K +psr.oo/_ίI_yNQU CG\k2c!@p(4 fh^a00<l[XK +tHm4>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2788 0 obj <> endobj 2789 0 obj <> endobj 2790 0 obj <> endobj 2791 0 obj <> endobj 2792 0 obj <> endobj 2793 0 obj <> endobj 2794 0 obj <> endobj 2795 0 obj <> endobj 2796 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2797 0 obj <>stream +hZIo\7 ϯй`uzh;@E.R8 4HJov@aHq(R_U_}]]lNYYU]2ᇔK*}1^m_kqEmw ~1t1x"֎Bhi 7xu4icl7"̼\_b׉i}j-9q|Ʃ[v֪tȵzujޑq謫[cmsxxtiMr'yVVk6 n^eKN{1uXDCctж,-,I癁97PGagjEKP&FmLxfϫO.[Tњ@8w5UpfQ;n c۫/?^_}^;Ⱦ|=M %~FăBaUtXv61UN#X >$aIS4 5saՕNrC'd I`Xk3' n|dqQv 쀽v*6gq%#2{H:;B]x [fMP He*Um R02IKBLBILO(vty|6rmeD" +: d4 Ǖ5crIxe|8Q<{WON7`QlT{lNe26JGrR.蚛62F8C_luə0#-FTȴho%]Gt-0hd9Kcmt]O3^PSe7أ8;*~WYQ:gRbh.aM]A@zzlJ4UI*)+,j-d4&X;oBQNfۖ6n&,C5PYpZGJƸ2}n^7{Ljj҆J$J,̌ d=kӌ&ik]exB+3DI͝2$l/.@r8@X'>+UTYz(+r´}}v3 luB;N:_fT0?muZ60ͬdhokY7M9o7yN}5t B7s{}F8 gӽåF}P=vsi}8 jp632rdߟVv] jT ͩTEk q%'#J]C@1NB{h_pmӃ4 R;9E`mX&U4Xql8u-8GiFg|-5nfʤ vՎRzLX=ĝB5t8OǺ3{1M'?$]s>,wVmf)g3㝌-D~\P-y{l%G˃|S,jY5g-*Dq`{ã;+ƿ?8I - _&vaؓU{$&) F]‚3Kfp$ɧ01j>i{+ ޹=H}?VD2^Y}rp\J#֞:g;>m ;t0Ͽ+0^wiܸ] O/.Ys)|;G`=~QǯD=-YrxwZwf$Wqs9.\1^6UQ.Mr΍?{Gs_KEێJ FOl0?߮`> +endstream endobj 2798 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2799 0 obj <> endobj 2800 0 obj <> endobj 2801 0 obj <> endobj 2802 0 obj <> endobj 2803 0 obj <> endobj 2804 0 obj <> endobj 2805 0 obj <> endobj 2806 0 obj <> endobj 2807 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2808 0 obj <>stream +hYKo#W[~]99P\@»W=3e! P3Տz|h/O*w r)T5:acϛ6?g1?mexVб6ږikKVWZ&Աy 9|4쉺aN55Brڗ&5$Z)stںqmw y=eie` Yi&.3rĀb @w ץ1M 4Ne|i+pQ[z_>Z}z+Wњ@G۱ߩ_bV(쯛>r{??}u)'(M '鈍НtV6[gtAq{=ӞimBobmuTЦX<ᅪX\ 9ml$:y-tEyȈMj<=qrYPk(4^}Y>ÉLotJTuv6Qx3ר:Xg2%%|ZvM`#4)tb_'{c#\l ;bdGLF{\jrDN3=mqh.Xd%xHUY < E-+瀇>#QK R XV@rJ\tbVꯕpl&LU/ыGQt6S> +} rdGB߰>t PaDowۭJLM0gKǎ8];&8EeY@(-OVbFd3(H8| +wEɣijzJQt#c7(07=Fpd m2(8Ej,r>=*2wev8V;*:?\al:d\2ǭ;i6Ɏ7f+C(1 +khRs ΝQڑtgO}>GhĎU=uht~vh`]G'iҤ㐿dhE"rԎN7v$6fyb!V?ڳ6zd |:%(]͔l9Kɷ`tFh;8f"vȟ --2GUEHZc51?oUΩ;q2;SMyf:~/9tJ{N[}5ԜkF pl0#u; @ ZQ"A u $A[E QQnޞ0w%hgN \,_XP~гd9S_ABfg,;ü1+q½OwU}:.3-ù͗RBKF *3e (_rXb쒤+kZg1_VTv Ҷ>i.e0$BhKG=.q;N3NywƗ`kݺ8Xt|R8d4w_~F6I'7tNꅆ/ߍ_gc?W>KL㝤Xoot}2X .ox7py\Зޤ޲Qv.Oj%-FZp4b !U4bM{#ҍ4N{p!I/ѷ+f#wu sזjB= dr1&gB a~NL kLޘ5Vj_[1ݏKsW*tz(,/T6sRA~Tl' +|=љ +=1<'&ҋDc}^{(_jT7`9 +endstream endobj 2809 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2810 0 obj <> endobj 2811 0 obj <> endobj 2812 0 obj <> endobj 2813 0 obj <> endobj 2814 0 obj <> endobj 2815 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2816 0 obj <>stream +hZ[o\~_qK~)j;(P iCy-*d;]fٛ VV{ps̜fzalndݪ'?~I8M7+=^)m; ~}:čWQO!a*AuU0$;s9[oNkBEKF8ۍUZVW75`d}շNe+LʧRvu8xV."XS+R"-Zy/]+I$IO'lցfp.룗229lyo벜@];E&/OJ stVh334؇G؃:ʞvI&KU5yqƨd;+k"qLը1ȐI- ķU6S m|*e`x@gRThrzG|Jv4`{/mUa*j z&EV#Q09[GtXwЩyV)$0 71J(4 +\ +'А# &rH}D^pn#Di(IVQFnR$,D#O,j<>tC'do"H)Yz ڷ S=>N<0 +% 56$_P%U[2`ot?B'flk' +7ѩaطq,b/@WQsb-yxPc֮8cȲ|#{>i6=]QTYW#SaJlL42<3ͷ xl7m_mbO!%)9 +<-i [Yxb90D& ܩdrxI|LYh-F,㥣xq/37r +6ڍ}xZ'RO/k9w5Ynz.%$k&M+J@F̴yXA5=#—8 +Ϳ^tpBr-B?62O LNtQ2ԁCtYfϦC8A5h +Db?|tV6 yF"iagls7uʲa4%,|D 0Vjq`ɉ;F->x^H8_A.&p>$NAݸ}pWJQZPA-\SBbFU +Buedsyq$u(Wf^ιw7&qNJ&|.ڔ[+z,«a#ۈˮHN/5P#Z,3f j*v97Ǩ<#68Ku8x3_W?]pxf6R 4]:`M^.>]&u77//Ɏ//a=~}?rK;ypY٫}RF%.Ai /X2%K0A- >f"@-‰y+x{$}碑|OC7~ćn?}?uٓ}v +n,س?w4+7y_ؠv{>p;)(϶Őљd_ tױf֗.>rZj=#7ɋ][%B11ͩ)C~p[ 9iM c³&מF+~rq +:Ҽ[mҘqoDN!)MwU˜_b.b[[]l/g6 ktQ' BS[M\մu]@6cFGNtca KS2v",S+:ߘ6\ g-30ے^kg'pM!+ka"o&|=YFғ#% 5_䵦yiK`00ڹ vkQ#Ir=zo%O!'|}@҂ ؼ1Ҁ9tdP:J.mDd]5Ρ?Yu2I?CsJܻfcFQD8%zE/z϶ꛯdOVGVWV]K;UD1NK^|D.\.5#x$ASǭ:/͑n,נۨ󱚽V;mu'aEּ,el{ټV~yx ̴9af{E΂{@ov|?wgÃ(ث7kBb7oi㛷ߵB^[ mph<5}ݮ#tf` +endstream endobj 2817 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2818 0 obj <> endobj 2819 0 obj <> endobj 2820 0 obj <> endobj 2821 0 obj <> endobj 2822 0 obj <> endobj 2823 0 obj <> endobj 2824 0 obj <> endobj 2825 0 obj <> endobj 2826 0 obj <> endobj 2827 0 obj <> endobj 2828 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2829 0 obj <>stream +hKob;@X qrHEAZJUqb=9쌬=F;d^3nit2N2L_lLcCF'7^a&Fv?^O 7kǤ!ޚ Pxl`r f,?CwG4xd|mR 5ԣ糓Bz< GsW> Pc +>/{|'&>F7 EAfӭLp6{<֕RѧRnw:<@49Yht]=OwȌ6v)2 @Ȑ "wx;b2f? L^|w?^|F3|ݯ h^yK3i gydk8a݋?=޼p㛷޿}8oa/ wgX#f(eE@H5~;i 0ãhBX#?N/p g8G͎Sބo2,qt46CXS=dX|cXa}oT w0fLhM5N5ct0pcD2)fzVL< !G G@GxBz[C}$T€3g[65n6#"qarV0(!K @;:OB:x "oh!T@qR3*ű@ N-AZK|C<cɏ9pH\,ʇ0N<<yєtAOH4<\ S>T7H? =QS23A?u062Hek -Dm!|BS3:,5D9{?9Ǟ']iG!RDliuL̵| H9 +˱@FM)[Q@F {%Ţ=$Nt&ޘ'&b>A(1]m΋b=7N~@#;θue@ kv +u[h`n$7. Rh4c,6@y;)'`L3QWL52kӍ>[08F +xxQ x#$D$ok腇0"78lkS*&+DjqN.feci| "ZOc[0'oaϥvE@BCS!6`fA".Lǹ=OΠX\DfD +;oYaOx6B"6NCEeE&~eMK ^7VǰJ +FG !1 }%1F ~eN=J0 5g#*eK_B5 ĘY%(LQ.(%) N_U( *Wuy k$PWY?f芈 c ZęC#e7CE z0]Ȇ渄fY2ԛxI1uUӦK9Dd_% 5wsuFm>/< ! ӥ@+v]Ϝ[mE|VZ"1q` פRjTVUa9ȉ%߼Ժ^L_0{f5{CAb P<nd vXadh1a~1-w|FgUeu/3„Cqe@ mB ;c8ģd|g’7)K;Ərut1׷Zzsw ^1<EO;Ț,&DDlѰE92(9pqX\keM>I /! ' FUX8@q\qPBa2yo %7Fe.C@zCrj,Pb +{ AW.Yʔ"5di_$`̭U؋ W@1}; [Y-@gs3X"K5N`e57&O%FWMuù $K5_'^07Xm=^Mڋ=^ANE?KL6 ɋjGX01&$ghD֗hDTcU#|!Gr "1 .(TN+vCp!gal0I>lE @ɸ`h`sr:pd^Br4_ZsUD2RQҵz[t"2x5 PDk1mvƆ,zWK͕LښJ&#CY=0Qlżμּρlj=y,y'5͘%0 <Cd7*Є6Hqs[XG#c|iC("KCjS2A+eM[`<SWC\^-NS,6 ]H};Z|KwP-OjTj]ۂ$3cٹMj̤EHW"sOhmi52pJkŲyq,mXP}6й^=)?Z4!@45V:"(sun梐{Wj&Z9*!nIQG~s]ĹZp<ʔ |cӬaILv 0Iy0-SN1}_kT!؋sanbW ,dݏ|6 򦽹CR +T:<<><>~f_7*9%$݌^+)Hd:7gTFJBQ_:W?] q'+9R/w(y[vNBqԵ&)J/Yn O{iN9+Dazn$.f .u-NzTbe 1LmNY6:wUlm%`'ڐ8awk(z:_?&}o\)gt;~,`7植O {Vh^\uZfUuu* -&uqR=/΃YhI+6OsGmJ)2mSͯk"%QTv0N-/+t6qjۮ]gWG[Vh2tA㻨e{ t>Īr%h*}a!C[ +pn"ϕjRG˦}HTٝ +Cдj]" z jXZPl+ +l; ~Ѭ7a5=]٥FX;mKi´yIX: s98@XH*]ەh߷ڠ:]=ɠ6jq5 ^q K6$uGp%&(&FtQ>uxۯ4;.ICwͤ0[5I.Mʮܚ + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2831 0 obj <> endobj 2832 0 obj <> endobj 2833 0 obj <> endobj 2834 0 obj <> endobj 2835 0 obj <> endobj 2836 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2837 0 obj <>stream +hY[o\~_G)Rw2Xe#H7H@>HGDr$ó+)R Ej:77=Q?.^l'UFm.EG*%]ڼ[ fb00 >Ck +h+@cp륥2+ 7%YioeRspm;Yxɛ ̓7Gӑ][mV<8#&w_6 ~*d+(S)Yl Ϻ8+ֈbY2hYKg:Q_!.d3 uΔ1XmE,lUfpY0m\uĕ<䛆{DU.:{e32AN^^~}N^hՋ_aݕfgrٖ+{AmR(_'>nOw7Ww7WONooAz(ސϢa!MaTpxHDR;AFvD;BziRzFzΥ hc!=G{:&]|n40YG_Zj`NzN ,~&mSF0!2Z;jo#L6(6WþZG[d<I24 AB}[o[x٩3п|慄.CPZvp̈y2)hA/x@x H@ECTJU?^LAeM|j$L(l;ț! # F<rBP$!"UC4TV|@&]>%3~PbmU}đ1(z!xyxtI` JLK(!xîC 9x @ ÍvmjHuHJɞ]驐e9Ѩm-{x8d]lSY|k?m +h S9~4p1'-m*R!MF/kaF_ GI)59NfҚ{1sQ 5y 7h=0̣f *ZtL1ĜAuZGI/P&9 {q. VV:L_vD8R?_7Lo$3+aDMÑ0pn|iwzmi2?yoDƳͅ(n9*v\SXUMz&x{:t `l@ɲ<{[CQZcusaq.h2Hetz8 aXG\`$.PA!pH5Çz 8J X5YcQ[Z4c[T-2|+#^Ф):>2I⏀H\'b2+)  `q.~ 槈ik=mNa!5;ӷ3e}"B +q2Pu| +V68*t}k;5&+ᭋʾѴO}T>Ķ慲퐦s8ۗfy؆.`_S ~\O8U[dfz{Z^JA])[y5jU^Yns"B+aR8} D'0]%%5ӪP,mgnӶ=;w?`-µz刱{mU0b0.e^V<`߻Kː/sXJɸ* eXc_*HGw[~wL!k1{UwpclAbq~x1۷sn\/q㚭v+737W݅-lUBI0k(KkZ`OrdA>lG7W~ͳV?]CF(˭"#tHc +G*dIyQQ985=c(; |d^5⫥[vE[2] {~nc+xr>NK&<[<v\s ++|2pGAxPvq~垄]욌{D$D(uI +Ӱ !GQezaK4਎>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2839 0 obj <> endobj 2840 0 obj <> endobj 2841 0 obj <> endobj 2842 0 obj <> endobj 2843 0 obj <> endobj 2844 0 obj <> endobj 2845 0 obj <> endobj 2846 0 obj <> endobj 2847 0 obj <> endobj 2848 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2849 0 obj <>stream +hZ[o\~ׯ8wNP@(U+[8ȿ\Iv} yÙ7C>wvxųK; <43`p /616 ;(]r@5g󼉣Z;aPPv7vJю{َ?JUvXtM\ uBX@KCaS {wIx7Ah k7Ls$VbhpQD|H: pBXe OfǙǺ7Ӹ!ÏR0\4Ͼy'v\GnނNlb6Rfh7LJs?{> є` 4@; yؽ7gX@fmR8? k3F3Y)aц{sICM\3@,ol.!R`,sz屄aJU-Z 3locNzZՎC ,Da@Mn7&d'I0 ZѠSvciCPңo#|!~Cr*q@1o^` A@eQnA1{'E(ː@} #=Ԃ[eR]y<. y" { jݲ)S̵ˑ8XA@5q.F[2t9o> iSX9BF#tb3̂z99"PfkZ 1UTAEħbΘ5g}`["=Bg`;pc7Nנ)P͈mpgC,O6U""$t>heO _@o\`+#_1~ðauau}(%`W&/0;"&iͬ#BƩ'iBrdZmiGMʓ3dR95<7 +O{o:JdwzvyLlxSS:tfPeK3Q*pl0{zɓadlz9LfT|%'5t%&TL7VڔSH<e=X4't/;5ATJ^(&Oh9QU=If59j +cqzj=' _ b ''YQNfLIRV(i֬# +`Y2xc`+}=Eڨ;-9M&djqp0wBJos a<}+LfHqRLcJUkPo1:5eyŁp)iNt3`5͝ۻ:Oj"w:sT޺Ȑ4.e:y/G*H_0.ސN:_=n֛iu}{w+֠yqu{:;2g9`l'|631)#0q`Qt٘j3fK;Xil#c|b$7v#J& 3pi??"xli> '=1%$&)IqI>8tm2r ̗Zs]Frd0i>tK0^=~'+K o?p$㼵q|| p!uz(.9?Ak n`KV7*4_<̧Er *CbWW$)tO"a@j+ӭ=CFu>bdR I!B+90y; *&{u JnԜe^OO i:aTMooT4ܾRk%0sXRfWGQ1F2 1! rU9h&y*Џ#yf+:s07 Uͭ֊`sF5'n|=I$OϗN ޗ%NL066^~>saՉ덏Q޵e1jq˱,I]+JwPGYL4E ]W7[JNlĥQJ$uRce6| +N?N? +ک?g٩ +0*Fj +endstream endobj 2850 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2851 0 obj <> endobj 2852 0 obj <> endobj 2853 0 obj <> endobj 2854 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2855 0 obj <>stream +hj$G^_gCEǾf``|JAmnmRn0FHU/^D}ԛ,?}<}}zsoܿ*qC_bR6.)yv^~:)m^0;]gCxpp90vo˪``~_`gY4q ⶽCL?l_}=6NE*s+M \dxӷ'^%ɋ(JˇIp*v3c0*,-Zy=+<ى4~ ^΁h3@#L*+gBu]fԤSxlLa* "H } s%䢲_l5YLP7r[|F|ӯnD=c꿾Z~(`f(A,#ӛ<>緿>.`7o?tzW@y(,\"-XB fy1O2>[<\쬊K0Jg\aqVG*- K3q؇X:wI0LVї6X w6F%YYilS p/Z;*VEd\3eڠ\:lmiU<04@h*W߁ mm_Ar*aAs~UESn3 +.4&geu$RःYzC0F + +@H0F) c\ W LCԆ%yC۶aG䕆1 +5Ԑl<<'ڂ*IlQ5 >V] wdfФI't7!+,b@WQȂ*jBȖQ=<$]j ѥP|Y8||81DS%YP2ZG|Eyxc !80z|6'%:-ڮm4b@|LdJ &%&8S'/<@$C=("gz+08JmY!NK@)\19 XY3;5p*|܉3ePE+r.w{"Ztg1"rB/ve ޢ5I3)7d $9g_ǡ YI6|֓b:: fr*8$m!wѐoI *˄I {i҂p.U`ž$E%dفǎw+rTt5*$8tVѢ@ +aZڐ]3Kkk뉀k$NCluEv`<@Sp} Y/ }/eqq7?^%rL & +@F+3+)rW X!ʓXJj[^`21c685<3ydXc'k؀E ⇿b{=l#& &O  !I}_JZAVڈtG^?ˆBaCXߡ^))٤$ 1Qtb  bMu%BHCܐB\,jaVg^ttCXbEqȮ8r!!dF% +z&2gvT]hғ$~9" Eߙf[Bt=`W&(if<rSfxhӴϰXVNd,fWX%ע(tD u=t)M-DtR^izz@nl[,+ݶ^ͦʽG2qآlm*D:4nmZ E,UY~!vʆe-; 2BP0gwD?dFV8\RR[z8fڛ"ٺݰίX1:a(aҷ^,{3=Q1udm: ñUEF`E+Es{G@Ȧ]wbȆ;P6iܴ9ks mG>Nomm\z3SY!ZÁEYSsx[R\rӕg3,7qwr:Ыz0اr܁ю-3<2قtz|^_=VSg6s CQ[ѲwiGAf̏i\ik6%yRM/⥅{i>y D9 =ˣ%9-_۠7A iMuHk&mabZ0Wc͂)q]aM/Okc=LOhcc*OfS7uii}AC|ډ~E#al}:5TMHru_\ JUcɍ;>ִvtHs]6 j]a`eW}N(+A2/N6e&k>*EW=B};х #&93#E!^ۢ6u ĝ>*^*UҰC/K%KOּgogmmS!qC'1Y^%7yQQߘ_t}&+af(<9?x?mEb.x|3*܍=E{SꁍoDL-6$Hv͉?dvnZ ئPsɎEm?s +endstream endobj 2856 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2857 0 obj <> endobj 2858 0 obj <> endobj 2859 0 obj <> endobj 2860 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2861 0 obj <>stream +h[Iϯs."0e#@ COό@aq~J>VWk¨#Y77xݫ7N eyw4/J~YB^l4{xV,-T-"S[[srsŖqssć: Xz?zwI 穔8;E(ɯ~vތ4bKr["Ė/PYz-&cց<‹/t|Gi>‹ֹ[هZ4R:}x{>p=P4Wk鎌ݹՃd=bf`Yd(Q$q1៸y_AtK<٫/O~|so0I:%ԺO/k=[TAj{ww~xo/y|K tT뜫P{z98LgO>:5(yYtbyɞÛT +PIǐ7ỳ#2׸2pcmo`Vmwrn.ٻLe&"RΠ&H3,+ PEF-BoЩ)rQ4@73PF!94,3xC.v]3-q2(ps$Q`d:B&2RvT*Ŕ*}KW XZg྽x7 eJ{AkH]<ʓQP.\\?fW t9db}qx\0չYL"lI5V#5礼Ԣ~:M$DKkzpx"1蚀P #:V\|˴z'[J$XHqQqPm)UkZJZ0{+p=.UZâ+, [J"[_x~5b=$-zXFc +N0Btc0Bз!hi|O^D2Kvg!IB}p/f83$(=!*C3j@$< k\8Sj +qG⣡s3h.3n]Rz;:X2 Xp8JBHum +MFm.2,#JX\(%tlGFKx*π'\S]W89lID 11dܔ+D L(@5tlS4X($i4c4Ҙ"쏡K +yr(#}s~0(jk"/z l }8k@@rV16y"mfu6,m,WSsgH;4pI&ܢdxy&BGKEnU +kJiGl򱌂@1ݓw*Z8ßgM$A:z^iڦlW|c 6~>iBO71aYB۹ɖp,4aXZVl@ +\ޏdv-ڜxCN}v%>% ˆ` [qKO_M aa?lKۣ3A< -éۉL6! y\>LB'A"MA5hSAݩX'Vy^NlwHinkectqm?ԜG~r$`{{G5AՁ6 8q$u:츖վ1pkmw78p?d/5mM+;K}*ʑnwF";[50'M +'z[n"%}47z G׾#Ôڵ4*qpOm:tYxqݳ6!-NQwӳxCas#y%EJfY6;9tH/`c.=‡ +V˽gEl$.܆Tll><_}A# &4DG9440%GtG%a9yCkaLۣx/ +xOBҗ%!0 ߖZDLzepp6kXw)wi\5X?qLX;k(eyfnľy"[EB| Nc<+Ή|qyeC\q"5 Va54VBnc1bT:L>IIΖH$P/]\3di`+$(kv)5SЇ0x+z0da +|~t=99."~OSe]6mҳ@ne4C5C;`_SC:TǡScMō/F%s,x++3m@\-3M!<ܩ9*0tS.]ObʲU-w-O "2LM%»ߠǟcGpXByCr}>//X? &ҳBgue}U߂lwUNOh봁Ʒ)Sr|?E|)gZ'kUΩ|{ulCT\> #V-T7u/@u|eO7n -tst {Fe+_$:9r2[ǏhC)@d3RS [ K!" F@|2r?/uxwVAq>㽶^Zw-E6L7غ֞nv1Zw@ڍnRw--RI^WK]m LCJR} +:u/wpܞVjot!7y%Ǭn'v7crt#塻JکV3kV:fڷOV3ݽ~,[i+#au* +endstream endobj 2862 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2863 0 obj <> endobj 2864 0 obj <> endobj 2865 0 obj <> endobj 2866 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2867 0 obj <>stream +hnίj 氶 6!Cŕ5vOUWUO79$8EV??L~v2iWT#&e㔒W.k7?Nim?.h!.^(B?[l= +Sc?n`57>2@4H}Ybv̴8Fj{wpIYWJOiҡyY;̓` "-ZyOSx&%i<| +|Py396 cʲ쉑JN5M9QA3HӍugKTyEe? f2o?/Oolӏo~}'hG;wm_~~(f(A!wz|>|y珟xq|3[MY>a#Ua`𐘈4? P*?UL + +uawW:ٕ2>wVhvsHGWac 8xu$1٤ &KS  ػ3F%YY+la C$8wT6 VErEPl^/ VіXORaZY34P_UO%Lh;~mUa*Բ􌊋UxY(ϩ W9_U +t0 +VoFP@T(*@Ehp4(,ЉO m@&rHmU{ F4 rם2%`HP:V~~}h-^WOɬ^á m*;<\y-Tj $@*C!꾢0B Írtj?WB{tB Tgm3l ڵ*\% +-ˑ`<So; ST UWL)y ˮ"3jt^F_=<O3 l9YEL] P~b)f$X`e *C!,%c0Ů 9pn :J)T@ûP0sÝb +| G)CeAt$O,+@'ʧN3UPDmZdPD:=N]EgG{ <^U~OF\;n)P!`ܡ=rxdhOD(i'|K2*)-Ds8uu'S~HFCKFUgIl+Rn޴,>+|0^4PH-Rٱ!){3xTF^5~bYO^_%\BfKr@SF)[&SO񚇃^򰄫ܛZ-CM7soCMrUgN9f8i;'\/m7K"\CaCbBR T|7boAR.[F9ʓbt rh˨i񜥵hZ+W::շi9T[JTp4/y A]q|1z;vY0vbbKZ9 +?Ic)xn~{۝.D.^BbBЅě]H.]HBP aq4CQ:8ỏP0RK8Kӛ slY\Y 禵픃+#v/Nc}oE>8g;7.cʪpo 1lXHˆ aް6:PA|\KzթTC/.?-Kw`$Y zeEN~Z1b2,&<R1d!bP }5}L-i;,kqإL cY+p/o; o()3W$5KgDZ +z1 몽K;YlSvP i^XBa,Py`X{ڪUVnU\_U  + }bhqMep1?/$_tVu+pۭTJηj;enZ bdlR2'.;hkz6v-!c!=T Vؔ7]PZ.%:cVMNJd{Ս6㫙JS}S5Ds>ݸo(cb ̓&gyִk`M0ا\|̼s^X1$8-qn.5NM{xݽŴPz,,h(n_Ր{1XzMb~p]Ɇw`仯 +endstream endobj 2868 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2869 0 obj <> endobj 2870 0 obj <> endobj 2871 0 obj <> endobj 2872 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2873 0 obj <>stream +hɎ>_QMw N!a=2H6,9mܪ=Ł Ƿm~7_ݼӋ^^ebBT!,yUέv{{.?ܜԺj]`tܮcG+OuJ `3u:t +^3Y+_r]|) y*&&,1:eS [w$xX(=LJv^i^=C +F?ʪb"ޅ D">#[`ך+3 %‡N26(sN˻ǛW7"E*-֧b/gp](]*ViϟDا AX‘GE z%rz 4f-Sӗ҃,KD⇻pL˜U´->4"X|ZӲDSO>`]"/2^A <`/v-GoS:mY1WMbu"XTIFy+V}8ؠRmZJE?(WUC|$~%"n"CJ2Q 6IRݓjhaj=0lWOc#!Mhav}f- w4^6biXHkC&!4t+y:s9E8t0bDADgc!"km3 ˊ>G'rܿWs@nr;`NK}ExُV %XWl'*ԁ*+ +!ՙ¨fҎ8 W4xDr}"|YؖI-8miOGARUx*= t)y`x:j+LiA9_I)w4v i}1A`B Jˇ6?3b2 D8~E b&?`Pr#-)" }5>KM +t+5نfɱ-6QYm_+mEVKD㊇ueQAӓj UYjղ\$ (f9޲iy9s0Գ&F|!SJѪt|C1,îױUc-ɩv{(C%ִzO1]Y7a%V栎JnWXhUZ6rOPa=v+[2 N>U1_5n`e|* {Pƕk%Al)=  ",7\WV^ i33Nt<7ݫeu™v~\gG+u3f7p [W`w`tN0t2|{g㠥#^ +XA5j E6 R S<ءf-k|gN{T &rb Jiʤ o8[IYIU˹`A[نu4g Ixzś5) ~_eʢڜTg.K1XI`\>,}]nQد۩0ybӢa}BIŒ@jfȰcK[\B -2:˖ŷ%ɺMdmE$ߗx 넕^pʶ5.}vGtJct96sr Zn*@|(tJmӽ6%}{򢄼9{˅Bޥ9ko$1tڍts=hEYh>bB ,R(߆}oCu_.G&9|V?(2sN&S0}K|I'>m={]ˇ3T|:|(UP *8p.<^> sBy̻KMɻ 9*grEi*e2 DyumڰI%Q|^f\ ґ-S57 e2R59vK퀑BfnL A.å%@uAg7܅c46 |uYAJo9,-xҹ +6Nt-kuWkdі$_-ԥ/LR⻆k;适Zs`"JZCNKNiC 9BmБfELlpӤ)V|%P-qS-skuX;GvVbS! 2o;g]OVсڴjSwX;yff޼i"A}iP +nrԷv"2'( $L{^m}55= [)y$JjW`iKTirh6UK-Ժzz70oطev,e}(UJ]~!l( gg;uKS23϶(A/{øZ=ܶ%%Ǿ|K2M{P%>;^;M"|[hn].z}t{~lQ>9 ̻)/|9_D闳\\֢IҲRb2BKYmɽI*eFD7w7PE I֢\ZlZ%;;hm܎;ll_D@!6t+4"=10F +/'xSVfN/C.Rs)f̰cz |pLiB#6gd3t"Ta0Šg +U52YN0݀ V]L؈i:{X= +7]AJio>`LzM8뀅"Yopnۘ$+ +$)Y 7ϩmnŋ N!r^3>( >5=gO75]^&\< 3W>_Y Qp p.5vVcf\jJs%sj>ߟ8rN~W>OS*]95OMb+)mP){4(<#P]0u E-e ի%dHeO\]26jս<0雁7Ԟ1N6*o& +endstream endobj 2874 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2875 0 obj <> endobj 2876 0 obj <> endobj 2877 0 obj <> endobj 2878 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2879 0 obj <>stream +hَ} ţxyd'!j+(XY(sUNWE:替]un~>lSaEty]=6RNJc u{~G~'i[OUxj_SWF>[Ƕ6#>Dv<A*#SBROe + Q~A< mbco6Y:iQړ`Ulji It+hN'IRcySȗ:V}TpV eaK8`'| a _ߌֳDB:L:eҩÛwtǷͯo nD]FT涢J0mBw Q3yǻo߿O߾|H'>'n@h)lU=f0lF6[m a[G +Qv;b 8N 4D$! h`ҘF^DF X + *% r kexV% eH#vB[[ Gb@2}D| +X; P O-HBQ3Ht}dmG##oEk":`=fCAyXwS +Rh&hr!("} `%qEjƕ̠"aNW;tx`k/'Vi4ia`Z]L}#T$X4t,{XhB}TI {Pde/zamWl- :[BqqZgktTYejQ،>T2]; J6pz5܍0*T?2l:Cj4lȨ[u5tlp +v5{#S"2iGd8Ն K_[<$'4 RiB}vÿ61N;.k0kC0h!5`>9S<""?ZF$ՒIaMԠ$j_*D)k=NpUL>TRŨh2{G8ĉSiS\EE>?@a8mzw8a VSg;qT,Q(gvl9J7'씨cyZ+0/V%*K`kk/. Lz*)PM"Bf2;{[ +|5r?k?Wo_sۻwÅ]=zzh.R|ӻ'xz7mT/{<&`ɎUHݻzRߵ9~ JשX$#ǚ_m>Bďݚe5[on)ˌVX^R.LJ2HD- 4&ܸ_3i2{ 1.]/v `Wr~=t`AXwGN&sݶEA50H `M3j!_ FG Z$#).jrY9^ fXV~U7;:d>~zWRin'gM7lة [̟Ra("kO.Qu[,r6=+H2eD1geV:<0]yUhd1;'/,@GRei/rO j CS)פ nW)']|&NP`KzFB43gB<,.WO\}s]c!pͅ9w +sgA3_;:N2W e3͊+n|̞f=QtHni߸̍ל\Lt5rYq7zMO-_-#\vy+RQ2tQM w%SpreM&J=H7O&4vo@  XiyȚg>J5T;kBB%lm>M߆00c$YYOmRq-Mm]M+,ђQޱXVPORV8 l482&şFC.:Ok ڻ}-N{D?&Pğcٸ'>^EaJI;M% +vL|Z8aٸjs%QO82Q_\Y{wfl UP8kzG-n& m9]2.^G_$een8zf@IsΎҽw' zj-owZӝ v֑L-ߖY逃c.wz/[l XQ-⺧˦Skt}xBAF'I+cO3!@;q4CttI|a}t':`6a6Z; Z]Rh ,>a`EE2k^`: Xt +6XkB:$HB.;+42 +p{2& +%[5llےzlfVa %n^,fȡbla>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2881 0 obj <> endobj 2882 0 obj <> endobj 2883 0 obj <> endobj 2884 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2885 0 obj <>stream +hn%賁R<64/1ƆgSU\')3MYka5jw7ԤǛ8I'pnRH3}7'!VJcGkdƷ*PKrlۘ*O*8DpVW.PvGWg|Et ez@aB63}| uoj31 i2~P^G!CI3D& 6>a9j~d"ۻS&Mqc 燛Ǜ̇ԏ81Ou#N'@X$l5^ D`E7)+N??=o~2@K'SWӏPd#t-ޟo>?=es{M/H/Dډf5(.FxLOmm6O@N"-2(+ BCڴN38> Hmgp`9-]LڋB 71GNJ oZ9nkexU%\ 9H#v&؀hDJq^(MFuDM`$iOOozXGrv"͑}/f](L'fc)bF&6eXt(R +,QdM@a)nyߵ"`$HhKW(Zp]_<_2L-qմ +m:2ӯ7BEO|E!KǬ9&G8o+Q“'{X/,xkYT4=Ot.~* ֤ h"mܯK+Y-Zx25¨$RŜ6v ľeCWW}v^,\MHaHL -Q˒ vx=\A<#z`@3lѽYSn&_whf0N!@it0ƜQ+}4*yv .h +QÜF1t=;&Ji;H0PIQ?'`΁# hfϔߟp 9f)F|#DbQw_KccaY'Soq I6l|{Hz7R@R +M-Fb8R`S&mgr=,o@IdrIM ˦ +}9ŬZ(CdIX:uWg<;$xّIgїsʻ8e?lGV"媇JTz%cf(w&I5/[jI1I=q>N4a {ӔnL21G7)I39Mz&%k!C}_d44eeDްU,[ 6;G{B84(iq*A,D2@AR4 JBVN|e{{_;ZQ'=s98r9r[qG̞"Ed ;s9;Fu=:Z-p*2tP.hhXGkvјprAB *Cj_m߉x+dy?Ӆ /Yv}/'FZ=k ?& +r[nl;iC孧Qّ!!~W w(إ]etK]%m'yPk")Kc^M9JCf5"򘶳:S u, w5;Q~Cٺm푹`s._5K ҭ~M׭ax7' VJl8P~h/X,I XOjCXHn4jZM +M=){OB3tvIs@j G:Wٵ@NT\ĸ)YlnpWɤYv2Pj*U]zOY oZ'v2qKQ F F -_7M̎ sy1ɪ~Le7jLuiѪ:_YykByȑȊ>ܟNSDrρ''x$:@I"nXZ5Wy//UvPoBATrrj}6n{n6-vNH>ȃ\9V^gp|pmi2fj⋚c}"瞠Wj琵G$PM}̢ db/~Ҷh@}zeǥν)XUWC3 +  +}=t>DuCmK9P(Pm\7zM!fFިڂC; IYf cB7Gw`y|}Vv™qb?⚜FqCkKrϞI>e%je7uS# +*\ݨAzAyvt:((+L`^|n_DkM;2(o1Gov+EY)/vJcJ;^sn<%Twj$0aOΪmϼK$܋&#|qoikѱy=! rGuGe^r 2 [Qm"h1/ξ$nkCSsS8oӼLvJwp?{=C1CKJ*:RDwNSns;)j-]ColN;:=#qaߕKb>uc7{ sUoX}lߥ!sW՗5EQNav?nnmTi@Ϸ>ϩݰM<6Q2ob2(bTe>.n=~ILm(Wd/lL*:*9bne5E]FDȤ[kR/\ ZJLL'=:oӏJΰևjKZk +)^<8-B(OI~UƵ{eqڱsY[,22\6r~юo ~s igZeFtsÂ(BY72,~vBFua2h}GI +F7ֈ{r{R!==3!Hfkm>% t{ΒQk!z(v~eb;Y hߦϽ  +o^~! +=qO&n[n#jnN:7f$COM0NtD37ހ5| ʸsO\t<7nv|#9 +h)ئvP6:D{370HEٞ>\Puw +z`] C`^ĢҀm0XBVgنy>:$&` ]\t{騰X{DY>5`9 =hA#Խ 1 +4`V֟1nsm؃6Y[f\A"ToK +endstream endobj 2886 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2887 0 obj <> endobj 2888 0 obj <> endobj 2889 0 obj <> endobj 2890 0 obj <> endobj 2891 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2892 0 obj <>stream +hZKܸ^9d "@=lf:3WER%M;v#n|x4*A܄( 1:eNovJkJn^kTe7G<'sRy 2 +׀#QD_iwXE& +O#icUim4j I|=O4D\Lٜ\9 vj* _ kaUIVdK~^4B2)xRTm_]*1jN.Is SPS9{ zoB#zv.Ur%`2Tn^8ϯ(ׯvPvgs?=+9`La_!F/OwӇo=|4|7> V:;#C  0U8 .!|vfx +{A6rJ'+l2.@;R: ' +1n;ƨOc0CHUvia +.O0M0I 2Q`C1R s^ŷ[$mQj̩RrI& 6HomGԨ!r/^e`3нpA8cӱ6r w"A [44<"˲BEB +U$NRoJCdiξ[BH ю?XFk6Y5VBBgRss c&F[4xԱ%Y +0aaj$X#Iܢm+|fsk)FjkN\eòHv>f/yۨٳ"XoIR6rټM8F%~Is} E#Cג'v3f{k<@=fP"SҸ$aL 9s쩩2vgis|?T*Fy-#kR,!RcTˠ>$coyX/25ġ7}-Bi&^n`nIhvi-g#ʱO96)6)v `CoGӪ@nSht}7 //has!ku gpXkm:WdkL^ջ꽚3'-8 #k +0mv +%~ھ X\#S-D0ƈM*i ק&unBl};*2h6Hjm$/𨼞6N3 otʾxc +gc"6 ha5.=V#r> +X` 6;DϦdm +Xg**8cp>oa~BBg 3ue םoER7CQrF@Il8&b)In60XLeE7&Nx )✵rcFE[y]q/+H43 +endstream endobj 2893 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2894 0 obj <> endobj 2895 0 obj <> endobj 2896 0 obj <> endobj 2897 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2898 0 obj <>stream +hެ;ɎGr:^r +0ƀ9݀ FW#"#"#n@4r}~妿LJwnr:-o|.sӺ1.azLyx>|ؖ%$YszI^WΈNkkzWn񤋳tycw֍Zgx57y*%Ρ6+TײfO Ie2WHxK3,[ aτ+5ӝ`OVK3p{X F; ǹKpO~:>:ͱk~Xh1/㰾湘 >ۯӻ?Ma'^薈G]6 F:<]0wӯ?O~3/y5:s,K~B;M:A(3u~eNkH\OK`]5hy~byɞCO*Bl@m9c=^r3Nkچ9:S{ \\CO0@P:~E218SwMp݆G>Q3gEtDH0A1`i|0~C\;R"Błf`&6VJrk<.(d$~Å|KI$k`gC3.-h_l +u H#9v+$[k 6b4o}OL h bb0b^Xpkh#٢#ȩ0hpD, T0 Ɲ904$0xWrA⌞ +o'Q$r.rA*wmAcU8j@3L T>xQrlXS5V5WhYžMHGFeHA MlŌCu;xYHL=Fm۲^+WFu4gA7kXCiݪ*ڬJM~pm*E7mΈ'rISr2M"@b:xx {f{mdQNǷ)D"7/5'Tǿz! kT ]ry֍r5j6 vtn%k `w!z>YffޥI8Uv{6t&~:$ ,.N_C:Q\qG3߆%jqVe!|)1JN9/i 17ϼv5:f|kSaȥjct(7 hY]$*!L1ҙ,|ިσJ1YI 4a;e{:>Arz+Vl&DP`dU1 `y(9pUr_Ro׉fj$F0AVMl' fdM-;4Vby'^ߺuT RX9ꃅ͠Mk*Qwa؍en 8R'uHEg!F  #& ExATҘ 뺆 7 oQ/*/Co^dSᭌ>e1&ǡo^[JY!urzRk;ΩA\"3dR##4qvpoV)CǤaN\Loo,<`׫r ǙKTLr4Pv J@HXu`<#ۈ yM,^΁QJ۬FQ΢V wȾt(|U:+ 唟eCJ*ϋL2IVNCS~gEY{Fp-CWnkOF 945=dY +coD]Ϫ۞YÄEPj'ozn Yo[}TPҌ)H85m^ɔ[oqUaKy|pq෤|ञkg_}/qjV*&p=gD H{gpW>i3?MɈ7d\n&1Hҏ\~% .^?:+R_2MMsMXz\j]UZ<1O|Z{}Q^y3'̚Xs(WZX5}(CT/CURph2U"jU'[lDjHW4ZXlN~0OLrG[kɋ[ +ĺУIJ^;]KLW;n1;#iK;x!eվ(Z! xF"i(mn*$o-v(uZbp͞LwcBurtz8Փ4__It9 +lP{`laMq| 4\ U,yV,7w.:rnXc4~lrO'`RtJQd¨IިI~EPCo8HH2݈ٷA蘓zn4p7O!71{~6_Mҕ^ؗD)R&XXC9Vxϔlx7vWZ7b[_b1SLaP†SWt`K|]y+sD·fJVP×Ё6,EtM5AK;4MTM/F.bb;_7}s$+z[W,M_ɨbGektnzSuI;L%2de͓&zB1 ^4mQBqH!ӲYmxcǔhv˘\Z}'Q gMyv$_(6fV< };F;<Ѿ[Re੗/)[:i(*r$֗׵g;C%hT6?5%hX8#o3G-|i6Lޘڻ ً* C} /-Z嗖^բP˰b7wAAӗ^ WMkdO9s\jۿ3^bj]fIrfBЅ|޹V/# Odrl^Q'sל%jF +wʂv\ 8TZ +endstream endobj 2899 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2900 0 obj <> endobj 2901 0 obj <> endobj 2902 0 obj <> endobj 2903 0 obj <> endobj 2904 0 obj <> endobj 2905 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2906 0 obj <>stream +h[[o]~ׯXrѽx'c)NyeQ!K,'fH.n-ڜ>89p䏧fz賳3;QK/f⦳wGh^ g|,|Y|^`oǿ7(vWK_Բ h{rvqsDk2gy;)#ͩ9sؚZ82ۯt#gSl])e}*%OwGox5e.v'_EeTNUHe1bѦ 19.6aNRlez#bK&09 dqǷf|srl'fc]O'_N}_w5ՊfU!PlM׷wW..;}C.>@R*BTE!U&tN2̡IT3]W 턶 f6sq l ٕl|D+ʗKڨ_, Dmӱ%sQ9ҿW2yB:axcdgk8!Ad#wm vLY(67Ѯo$jі^x^ #4RQ-arDS mg/`{Q7ݠg*.l%A~DwЩRH+HEg*R.i`fc& i(,ħNx&?{vMSVsRnh6%Q0~"{?t'>tCDQ)UTUlpjε1\ZxyLN΅*` GUUG6|7j W-1 z A4ԈHF_ a^3]kJ$([FӢ]ˡhYN|eό#68|R~~ k QP47Iނm U_fLĮ?\}?>ۘggpS~6=cYc!au|Fl P_1oDp4/d͋-ûkcAczF2e4NC@}ӐZ%+"5[hkUV a:wKsbCjf 5;[f0꧎v%q1Rʽ*x_Tp*}2Οm+"_́J;5Ь ̐6QWإC_+27q +YdT!Ï7 ȋ,&t$cU{RZo&*d٘&ᘂ<`bU3C{!z1 Ʀ[oC{Mʈh|KpdT`w;Px1,dan&*ъ-,Έ߁ VYAc&aȓW[dZ+l$ >#Z]x|>P2Rk;(-j{!so3>;',_NF?}gOHsbnrӗ˯룓?Z)9V4tE{z-ho@дepAfDʘ^%3pfQLa*Rw +%UDHK + TX2a࣑$|40_hoUS$''8s͓{֓,17-Ј'GI"Z jIhĹXz +W sv_𧬓(t1Mq$=)צUqOEfUZ!PˈI<:lKll36J1`mF#qu$&\%H\66`˰n8t%a!Ns{mpYܟaROŻ.mK/'* @ +j4>7a9ZqPu[>_Fl4;XWLKÍYMk"Oh`[CpD6=-EM+627V硘H-5KHdDqmie>Ȭ𱇥%3%f liutzȚZ~gxĽE$/nonޠLVRajr_ZfH.vA\ԍXJܧ )K;A}p: ؋LW`8_ߟW/_en)1 >6z:69LŨ?>\ޟ]oC?X' +DQI^)2D%?+@ylFH[e[[,g>3U.Tt9eI.f2昸7XP9K&0ɻ2"O풥1g=0g13:E X qwdsM=UeM - !j-2_獦d'͇:]/sLZ2$H-c'3@cv.B!Z?,<"op鄀ʛt /ϞcoOݾno6\&o_]o!W~wy7UTײo^O߳/HgANntEpr+yݔSp//:e&KDX'¤`fC^wW*- RyEӉ0j(}QWfT;^bGJCEᦱb Tn7F.7u}yy}w~uۻՇWחRǭ`# {ȴ_,dpc)?EױCb mLB9->aOOb >zDNOEP0D-'Ͳ=#}@j٨3gwF 0&(̗!t_|5`#Ghc&K7oZ( VW{܉<㛐eG4/{-b'-z7^ bAʀƪAfe`;w#G] P9 /'R y9Ÿ>yr1q^L/1#9QuQA>&얢5TDžK@?_Ҧ]-h!s˅ g Ok鵾YLLŶDi_ԱpTk&xaQ7\_-5FvW~ jW +lֺe/`'8'h$ H(&wy<[O"3&^sfQ9e$QbqCÏnt_.MnvrV'^40G|- _T {9xY0And2o夋daˊ/ɀ`G%o8xNjy@ϑǛgGǿ9| #˷] un?gђ1>]Pۂ6~/t&VN7fHĜgV2> zFfy'BJw,|j1#bH*b3#eީ/S9>U_t1>[>}ޞ y>S \'WlTP_vfr}ک6N.e5T6.I$JuaB^wk=js/vܤD}"e\lr!-ՄU;y89K=+;Fb(6yi b+/kk@c.Mi]'U-VSϵ&[wYGDCԎjeYc7Vi.} Gkq}Z-izT/E _Xmq0$%䉨9e֗-:gZ$l4F3yړ7c&y Y:X Tvĭu".j\U'2xBEZM;n׆L2P@ FklL{[L)ԉ[h#PM!3\h k{5z'=UԻA^ayvNnֶװ[/Ap^Y+˭ImS}u<`Ϗ_=(ze/w| ƥK|.D-]CE2Ar/ D6^G;޵z_ǻyäc`4H""/k!CԿiO2_?h*[/1pKG uhr|N3GR=S|/&'k "\B<*Q[q֘o&۱yl&4YMc.[;L]'6C|^~mͷFɏZ W{/ٽV}x.'Ph"f?1,'Py|h`^j:aS;?aCӓES߭,yk݊XnM|*>LVGReWsQAUY}ѪK?9 +endstream endobj 2907 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2908 0 obj <> endobj 2909 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv33182V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2910 0 obj <> endobj 2911 0 obj <> endobj 2912 0 obj <> endobj 2913 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2914 0 obj <>stream +hޜ[IcqׯxǢ} +<=,>fJ&Xs!YiQMEdͿ]~t͛{.ťT`r,?WclX7(;c|?͇}\ڂ%CM#@9V.rے]+ r샵߆K'*#N]kb ҒsX}a`փޕ\ԹkSaq#AGfaΈ#!ўhFa yphN4;r{} o7K ,e ֲ||y.p{HfƗa8ramto%) 0huqM*B@IdF%,Wx7?~ؾx[Ïoo~IhMy P@+yK כ7|?|-a7o?e I˧ qvuMUHYc Yʞʞn1JyZ}RXM RjC$Gá&f)0S!R`,sz嵆0–5j`U }Jr]ϲ:쬧U7=ԯD#|j\Ps @<l!hH?HwRB Dj(0C-P A)Y*<*cl `IhW ['߮U<La-1 +.G`U^r%|YmWI/ey+7kF?TלmgYDlE5v#-TLIZQ?-&ē,u`Db04G?ظhH#-FThjVoY8g*_2wXEJdjuMVoeíJoؔ'P< +ۧF鬁sRDAKxǷ'@3v0A]0`-% 37 t'ÃVGtp_4q$sAx9jz(SU*k}"cw»8Kj?d\ @S ; @,v\"g͜B&iBw_f yiσK RB."O@?C;LJ=ht(ӲۧO?>[ۧtßv4otol M#<~yvn??}x9>?}])vy{i˲KLJ_¾u>Ow:n/˻u3}Ÿ;GOò_&;Pw/0-Dn =f=yXwC7g0iNcbs7 K&xٲ!c>3 +S8ST#Ƶ"z3pI89D۳p~f#Ƃ%`S/ԥB:M.pE;#ﴱ7dEt36 @Jj-VV ACkކ2zCd68r$ૡ.5 m# ݉ʒuPEB22b}mIƟ~зc.eaz?QR+e T;wъo(7Ӕ8SgD +r*qaҨ+-c{y=aɯ[L6XU|PMIyQQ} 1i.('.4;IskLUhZπtx #D"ܾ g]5dsg]gq$t̘5C:K;#3XYlxV[[h:btqw +H݂ɡ89DEhת:$Mt:f(|kPh>ndWVo4(X2%É& #'FA:iim[lx{سo\hT,~S9QweQsZh2ەS=O݂*xo\ژ8*Z;#Г%6U^I(yn?wڽs0sn!i|bo>(GZ-jRq T&K}eڗBKv@Ӝww=LH>e+(l:Z]@N < HHpXQwpj0rm ۜ6@+59 HrF@>gj(-{4a,>y ѣ +pig^˷LHՅL0 +[o!sEZ2aPF z̞bRtFۓaM(-tuġDqH06G7 +pRW2Tlw#IApnkڽ1툐[} kqS:KL +Ps;L@U6*TȻp/enSvklr//ΠuB(Cr14vtқOsqjx=4#i&6{88A&r-1*HL5'hNߡ '6C5@f5`'/D=:Q8i&#>9тrjLm +槠 3bXpcqJr@0&u]Z-Bq/,wL3k D3{4JQ$Ldž+']quϯO/ |<(UbUŖXcZ]sљt3 7qYizXۙV_e9NQsSp.*=ILU.{-G\Qvu_Xِ+FY"wҒ0>FeT]Y$+I4d,͛'duyc]cQnJՐpϙEJ +9v-X[-Ks͗ 0sXot͞egyA/A9Ӽ|%˔yC_K49gp[34U9Cj#e.,h^Ǥ~C7zwEM)_[ Ĭe jA8tK='-MvϏق޾jzI|M:egEzD\Hgt \E@Wro/e,+#&ǒyg @ܱ8C4:0N +]:#$h0#Hm;sC~zٴK1X0Ihd:[X H&GtʬKcX sW/O$~'2vo HX +V'WiJ4<˿@[] >32},"dn"52~ c ^蝴V ޚЊ<0G !$!)Lqs$n`A]C?r/pCiO-X<Ҟyŷ:.uC1O +& +θW: +]s!t +endstream endobj 2915 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2916 0 obj <> endobj 2917 0 obj <> endobj 2918 0 obj <> endobj 2919 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2920 0 obj <>stream +hެ[K$㮁I@"i , ACUyʐ1`I+_;/3 $`~_|ˇ7qKj8e^__yvv?_Y_9.&]gho2oa0Z|=6?EcG~)LK{6g.E¿n/_=qezbu=1O̤:O@1Ux(pu{MSjO>w֍ZnOɰ4h(jZs[F +<C`H%<-NK6h[."-j\>s;`;`O.%n0EXTCV/^y\@sx>l\1=g3|j\ _eʱA?i:7~ɻm L˰y?_xgTM=$|fIý(p8Yja{PTeik!ё13( -%ܩX=uȺ֎m sVZSn/zhj#T D\T@gxfGh?YIm'g?_#OD6=,v00(bmM,lؚ.@n<|]j mzH9o= {B1J,ze(-5&'[I%v"b=Y+q*cvtIfG2DAQm AZ[(eJ$3R]7M] omܚ{@ic_*St(FreX3Bpy'o颩{Z)tA?s[E[ K@deQÑ6bNI EȪШ"8*3KޥڷM]zw+m@+ LzJR$hdjiٖ kHk 5Dcj4i=Jotʲo 9lҊ]LHB*=o5 +03k\lƓ-kA,c/FU%JymrӅ~YQD0E +s>[*a#Cz`]0_{ɂn- 2`Iv4ɑcHfN|H4#%-p1w5a#^^A׹Fy*=rCv)iAo+ )nIm3[L7Wv gd,Nvn 2.ؚ;ef0f +|UoR'ȹ;&I砿s\kku7xS(VQDQpģ{}'2' pax~q(EP/e-2:Zs~OkYҴvu܉i_,uHWnCjtQ#5>A~ ]r:^z`"gf߿XgL;s,]ҍb5aʹV,<*SNdLLU+SUԅQN̓z7q|ukcV*]h}f gpUc y>~jo|{7 y]ߜ#!KPl3#'.zg~syUGNqL\72إrYku W,.ذSfy|tf7AG$l|kv) ~~ Tɱ1")~bx +缔PПBVaKFBCΨ%6G7sL*%wkCs {#`:XmxSvʀVL$Vs1{diuٱe*Ɇ~r,[Ol,RL?tq y"FPwG(H\'c7w/+nAQL ='lL~100']9=,4O 1nZ60gTQ-96 "ۊ*CL4;EF-QjԲ1 !YDy5mGFq'9ԄI &1vz|]z8.6V;[;Y{ܪH|+<4-'A$#ՙDl#?{TI0{Wy\-x$ʜ?V{pS@+TU z;f(p}QOjm8 ^زFqAO~%'vS&$gD3qYҚrG@4RtE˜ªk(QW\li4YW|3v랋1Cw) 7 +-,5hi$*}t)SYZųM?#ߕGL{'*12L1zeٴйzg)Zޙh.龕@ӐNnMD!4&69ӶscC]9DNh*&]6D|cT;$gg12\CtYL7uCxc!}I$M1H3$xt V#6Y9I0|xGtƂ.MhtzQЪvN Hy"Q}هLe:fBUC;ѽ= +4g1z#R&ZѢSaˇ +׬(XT 6c3O0a˄O1ˬu PC䜭m +\5 +TRI6p3C\ ]ܡeHhǒ)r@Qh.wK90Ttz{P}oYX/2LI1pl,Ѕ186VՉ$!J +NJtyIjSZEoRL`vvgyOJw 2azG-@/;̹up'Њ1v-fF, /sVSiȸ04d +5*&̶yl|VAnaH8?un=%A)ה|6 x `LxV%LSk6G`!>E\QO8E;hv%y0Y~Gdo,J7آ/fgVj+h +P)E7zJ3y.I1"yX IgUp4;M*$ô|̩Bc*rP=m 35uWP|STsig t'.*6~3ѥ{}W\ q{bhy1q'rfpc5`VX|0Snb=XNmw.$vS_rU,d-v+ +C~;N*4|0o}}[f: YlP7a^ +noQ.9Jߤǎ +uzJ13X%5$8Սh5 7= g={WSImmKmKzbC˼Ji6L~;k>e\ttqgDgl-;t^>_ZoYr8WIoQ| g0\ټKfv![9t+gt#GwՍs^,=W''ާ|EJ XgNtnYeʛ7vzK-:-,uXm9[36_̒a&W2Ni\M!j2˒ ߮- { ~O8fkj$q\[bJ~%>k>K pn C°XG5.ܤKLmpd?*m2{gjWMh*3g/ FH2dn! A$II6/Iڤq:&{}L:uRčxSkKW4q(;Ϥ^=>/cSHP^G8QW[e)PCjZp3!V m@c=w8Vt*9" !l},>f4=?m0h|ܒZS=Ž*uRU/`KObo +>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2922 0 obj <> endobj 2923 0 obj <> endobj 2924 0 obj <> endobj 2925 0 obj <> endobj 2926 0 obj <> endobj 2927 0 obj <> endobj 2928 0 obj <> endobj 2929 0 obj <> endobj 2930 0 obj <> endobj 2931 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2932 0 obj <>stream +hޜ;َ$qc`w.ZJ, ԱHC&ZrP;"Xvw~_ݏw~np2Lo|.c21Nax4|w0N37i + &\YXjPN ݼ>9'7.3nq'wꀥZqɴeM<0Ӯa!R~.K::TXX>$xaӚL8"VSi` L æqz3CwrC7˲ c,2/Ow;<߶9 G(Ԭ[sG.Y_?@O0]Ic 1DB􈄊o4ō vs \žO?_/y ~x".M#t!-K /ON^_>w?#l*cnX1/2=iLKu>q9re?a[ +8~ pbqʾTfXΡ\Ϯ5i΀32.q2p5>sr=87]eB]Ս9@ ,čI=; 2 ?KüQ0hjcTpg07P>iIRTl  +q1(%2uRC@wu xGPʮJ1Gc& 6'EĢE螁{WTb㜊V3r\# +@cOzunXʼ wx02+о=pr]^{p3-x'dmm3D=itDAɌJRZqDu\UAhjfYYФH{ٰAPLIXHY#UI.,zu4ҹ~H? _|qq ˧t{+ +(:%%DMJxpUY?=vTqBf:\2a v +.Qٰ´ uj4!_Ukᱞ .~iVBt^ M%&43 3hoWµ]}vfA a0퍪E>4ƼH .rtJ+`M29 u\!LZբΑ%RPJWnM+x =h[j<([μ"5uܤ{Cl(AK*RW8̗ZYIؑYC: _i +O@l/8B%w8(84z2 rh%^ͬܣµUqMx4e!w뢄Seec'^1EMK])HX|dͪ J +9S $D"xAbcNI-*X\U%f)hÅX7Ec)=95ev87ZufSZtwC:7x;XJ|̠\;PwMvTMѩ6_8Z p0Zy|h=vC-o:|*m/bdAgYQ)*BweT G3nX嘍t\T1Ft&KCDV ȁgnxyj|nXi[<m; I8$CRRyª儮'LN@YR?w@s777b'+@Tp25XmG.JoyG*x1`gkLOG \0YV{ Vb{3ÝYvsn{[A BvESw +heg +{]+(DC +>@7O֦X"nA>yCMUqu&\Mê߲۲+ilCx۾9徲ʐb\ڵ,\eҲ~-wR-Z,斄eީ:%T"?U-s=e0c\kT[?PdٰSͷ:q9'ܤŬy9P[8$nuZ$Mve +\=um3VcƋ@*ۃ*y?0֬tߌo͕2놕@zRِΫ'!lxբ|[eM n܅g<0CeQo%ݵhV䛦\926z7k`8yW/ĭI3Bl!1KtSqxMu`D+c iF)t"*4GZ[6@orVNX׍muk{Q'"1Z };D u9}YV9 t4JV*$WIKI$`Qc>INl MNb-Nvb {p^$s_ zDWgѥ9tvi܁ݭ W ]uak0utQKd/ 5.rc ][AX͊CQMz2nCM[[Z0!iMN` 3Z-Ki 勚,{W DLl-`fXBٖ=7uTWI$)λ+j*z25(࡟$hg1qQtK'/kƄgC登 +.&;&B|Bǰ=[>Dں*TBdԻvc1q;\ǵOOz/-p;r[`s3;QrwqvAKF6˛)oޥntb +}D6Gvj^kfGƴ %,۸ƅf +W "q-jU ^0'[\]x3Q0R'LQ07t(D/n9 ӖZCtG{\TG6B,Ϣ]O#Y)fr^.3h9L^4nU3ev+9wB eə*{. /k(ĵ >cߗXul @ %£]7 DB(Zثk ݞ*EPd$`4] P=,ew³z'2([Eufu5{{4DSYn]@,^ʦbe%Ц7*G)?ΛsYE/F9T/KF1x;NeC`@d]>3_244Nkox&fM>(S$ W{S{"[dΕgGW76|JlCܢs%ٍF΄ ;09P{ع-$fғõrwi7u_<?s !8MkK7yJN%l& +Tό'>^ +Ԃn۴: 5m0aV˺^w\AHLfnfՕ#srkTgst=ygtVE +w>P̝*6{c~W1 fB6.$⋈6\2?6}P5G`G~~7ͭkYu+EKI-y)IX*)O^ JiM3 3[p%tz_nNhzԒVćgf*|ﬥ57n&#]T/'tA6g &>'%zfG??G|>qx4 %^}Hos{1^䷏L \*K7*7l+J9&젉Huq.=(PyM{{ s(Rd_ƙ\w}pdP0, -o3bٛwF}&#*XhLiT'd}+*FR-MH4OGcԔ)SZheWG;evc P7M1OkVͷIQzDS(S7H~YwVڮ\+h*i\%JIELD굌i:R㭃G,+~ErU?vNhr,%<׺'zt>-am&h B{Վ>F(P₰E$UiCdA~WK?O9PxH7tg (H0Re3A/C]-~wJW:UJXT^on/fR z]v6ʘge'b[-ޙW&MKUC`C_cV=y׮)n F]'cvϐ/4ty6]K&d[Ɲ639ZlT4?JnGHَ0t; _4bm@$+JV<0``n@Wrp8q="ߐex%;-8޾e1ΈVM)մqzkdfEwѦt5U]/-#! +7X9kEA9QRs8.Qsطuk/(tF-HӼu;N)*Z +|^enlR([uuZ>QtǁE Aģ=&+50>~l{^l{x@CDi540J+#D~b䖓% + ;BdMtI|:Ғc^Y=MmF::։=Z;t + jU}Lg֠!G~Ң҅~]tiy/TzxɧdHvWz [w>]xRϣYT^K54eScd|}0W}t=Ii'))>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2934 0 obj <> endobj 2935 0 obj <> endobj 2936 0 obj <> endobj 2937 0 obj <> endobj 2938 0 obj <> endobj 2939 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2940 0 obj <>stream +h[KoɑWԑ4Х|?DcwL60jc4|م@Uf+2"2⋬w~y}-v;kM?.V__ߜ廳*?}{i1&cg3] I~ׄټRy%{5zP0xJy-: _׿9 1nxزZ5ZL+!M*OʤjVy "Xb~Ho?{WR%E:ƼޯȎz0m5Oo4CBMkYJ]KX\WË/>}y/q&]_,o/%̌5ni}y廇w>?,1r~ ٤!]1+y9ę5ְh{{ƨkaZXMxwu9sYmH؝[Mr<o.)HnmCls9ni&Jc-k +}xC]gYM\wvM-X <$±S}Eۭ2s +7*FyA*+a$Ձ(Z*(]p4rq!1f#hV +3U$g\b1jfﴊJ2 wE +Nz[:NZ\ʏZ}2UjI%fA&!*' +_q\\}ꉟȍ~3uK\=N4hO]t(HJ#}\!yQ +G=vy>ε+ekyM׼1G <|$O,~GLL;vbtm02/SmBzӀfb4~=6‘8 (p@wOp3ʷ-ܓ=ln@{Ok7-˧fS`m>W= 2E-n=رˊ F6Q)Q(L{ђ vH*^NPdLf0=㍾2JNzciq>..筥?M[bP7/ ,+\jhmطET 8? +U*d&.ôrԔ%}ɟ {ia"mmUwrcbEǦY_3OaSpԮZCvhx_ WM%ݕ$&ZaE#]_^+wo/scok~.oo_w{~\ ߾^n06w2ΟA:_t_^95^twŧA,0ׁ#p At `SnL>9< Y2A~w+xq2ήC&0׆A燋&1Hh2ʰeNC jqkaϯ;|"yi B[;`Q_) Sj66\Jùu5;`6^zګ? b[7qVbà2`S?n.;C"~SJ*x/?5Qj[ V󝘆N)Gt2]<\94fkؕyY5g8M|jff~k$I?%~wJJˣi~FKRg0rwv4Ňt, F<ưAC-k(O"QدT)$Fh1l̊a"ޑ˫򿫗m.◯o9^=m“e'D\uu&+ӄL8etx_,C\C+ki rFq) ۜ,1gJ")Yp<_T"27D̪ \7Z) UƱhv͠{Yda+G6 M,Tt 19p#R ٯH,'`,%PqzHCR*T"/)c&n,'²FZds~V@#1*nQ̮;S/80Ʒ249k%ZR]V\!VJPnV&Y~.<#3Gw 1L}3v{t7(Bj@i,̍Q\hD\rۨ#GΚR~Թ2muu?zlҧIXYI΍Pa +VQRbw+'qoWFMxrC,Z/39ElGnM\ qAWz[mA,lj$u5\,@?UUVrmCC^ՅLNЕR*Sʮw46l uprRdj*ZL; bMeh#zRL ^wdxBn%%35?a-:**9-hH* +bŝ!`8<}%-bJL)XkDlyw]r~vٝ!y9w\zX]Lu4*:;5 VG94Yr_SmNmMm8Ƕ:Ainkuj+ze`T9%!d8L&qv&G:%WӌT?H&U DN7O rI)Y=THzG8G}V Dϟ73mBWj8%bߎ;SWJ2j=ޜ/R̒%cמ@sNI(>?>.oo0wi hOs{C9l3H[Wz|buK= +꿼\>>x `{;9KRxUЀ WjOm<,οz揄Kp̈́Zp"B׮6T&=TذClNsBq5"^86hQ5XWW]Bi'ňi`Se?+c`EG}`ƊcOIqi,OD2cPd:@Gy]v3M,iEHǤ67p"Q/#Ea9R,0@-aUݼA)B=Pl zCzEə +-uz9M7Lz S /pjO{1?^EŠH7Co;yC']o ⳃ >;A%|;M'Isg-EIFpN>1+dK'ZMCdo_̎ع؂)eys/]= M]JNW6ɍ|o/W? ϗ_?>.f#GikFN'O+B! )a+~瘂$UXۀFY;xؖaglËحRjSƖw_9\,y!G6.i3gLwhLb.;lz~{I,GX[ KAK``=6{F2z-!J0607 Nt%N3>À `0*i3{>ϸg=`4 CMgS~67p^!7md{`-qTUהn͙uH9F a;VJ!=qJcLYȕ&ލ>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2942 0 obj <> endobj 2943 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv33183V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2944 0 obj <> endobj 2945 0 obj <> endobj 2946 0 obj <> endobj 2947 0 obj <> endobj 2948 0 obj <> endobj 2949 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2950 0 obj <>stream +h;[o^Q.;NZ4M% }d9Q![,'}ܟs'IJ }0 sǎ_Bk +=?pxa:5K1\0#Ǿ҅ob}YS-Go +ܞ[{o[Y9RaѼh y-"LH@N^WS[|^}^~qwׯBoxufK85OiK emȼfh?_^CN Ee#P#z^Prvf3B.voqb3q2k #NCzv8 +P "CqGOP=a`wlMJGZKR5*n$LimZ #q 0+OF\ZˏG +2wH4cgg<0 һk~-xsڨyQɣH-H+ʧ'$xؚ^p >@oh< .#2;Ll˙*5zf'!%9qc3|*pL +}L T  +Vaa>W350Ned2˯_o%?b@قLg{_7 ` +d]diŵHlbe %! ',Mjѐ0XMƱp< < t.q`htsQ )n1Q!2~+#/.6fo +u8M.%!<90՟Uj@0)EN'5 +hUЏzͮ;AdC\ņΠc+yHJd@,] 2fZ8H 3ZqjdPRoS?kָ$]{t|bmd,Jn" /a4 +4/݄ @ #ަf!Dl״\ +КiH.2L⟐Ȃ  h:Po|lf pc*uY;QnT]ۧ]kM~ǘjI-Lj9 EK).D 7""r-D4'aπ‰3 %t9 fdr5f1 }3K4s$r]`$ġvȰtP>E[ +#Ncg +l͝c[Kׂe_[c mU0Ɇ[sfRP3V/r_dA4g1O6oD _(4 +ɘnӜ\Uݪx^Y28!L&P9&3\EݫFy LA4y.vudԯ;6!<(HxNb7p2ņ?dmY.QsaesV"pVC3.Z7-]& +!o XOI3K;!HzrxA44 Q $=]l66'\ːtf 8'uH!G#, 3b& "|Iv\v0{t4p}KY_4uɕؓ8S `~J͈{Ѧp^}r>X^ѤI*3ɬBioaNπ0 s 㛫AgPw7߿_` A-BhIG۠YCArj)z29d?m:GXIjs9)wpH|-'%D#+65* xޑ0Pr]SlqDzzTI\=x1*5kZZyr 6詇$q˱Ys Ѥ`\xU;wBX Ҫ׉,^znGsqpr]R7eD]8޽9cJƪ8.OM'UM4Gz5,i^8HSX'[gTxH?ʕG<9hV*4[C E Mq $&UMւA30;LԦK<~VBcbh*'.Dn^ϧC4Muy 4RN  +;1O>̙3I9et'9.Z?0ǎpᄃN0[ʲ; +=32WNQG"9S2IF˞)%Vͭ'T{O؜'eSu #Mԓ-iن*Rċ/ްh;<`NG"j|Y`!j @-֍~S4)aY>̩˒jKqQei0Lzm9=~ꦵepn:&ux:A mQ{=heT)yDS –0213Fi30ewQ_^8윎Clh;2H:HXD3UMfrkٜgζ9?g#Gisz8jdN>.?.?.?.sY)iYYdV+<›J*i:R>(ج9+nrxHNKfȶG-VDoGk&ѲZMCj͸7/^[kx:wwZ&ۤ(o{E8a@WxwA_:y@3xfO9S>1F_ ~@_-#,PWZ`G/F i^T#s01 ~+چq5vZlYC=^O ho_CX)4>=5D-{{70K"~ nCDW4#0Z\>xA.HlXS@Oc]0—Qb2Ѵ1a]^wt na!+9fW豌 @u^\_>sl5p/u0=k/U P8<٩tԫ h _ pK,@>pCkʥZгlzf` V*gT2| `9&-Cg}cL'@.X9ÂiX0äztm^+b/r#X$uXXC^=2w0+:KrK\>+,iτv"Ӓq5=_aʉE^$y m qx(\%_X +kt]YW- K[t.czZfqt suRf pFI_ > +HCO: dID!&VV8Dz94\,yTЋ" #qj'V~{A˸G*#  !dN'NE-vZu. +SS&{>yq7'Q QD0CQ` bKO'MjLM˨䏨[B! MIQ%8<1)⠼hL7ṛSQ(u4A6! JC:1@u06`@{6v_7}jeT2''F~*ބ<1IiOhZPQzU@+ͤ, V"{pc((F+ahQxh2i$d{l,k2^4`?Rd[Efȼg#S'QY6{62Y#k +Z[X@T + OE lbC=L:C:sHAԦnDfkWMɖ7d0Ch9a*+/ڀ&ybI"!1?;BD*ӓ[G|mWX2ЄڀufnⳅBi -Sy2e5_%.;hm+bԚysdvM&:;0mVN[6rc}Cf(&?>5ͥ?iār: և0S9\&XS0L\4&y9 ZV$eG1e#lF>/htp&V:T&E= :ګgSa"/2E$x10QFIHS +lY6dXT, #Rtdf}9;af؃A֣Yؒ~jRMahlR 6=Q9=S?m +cP5Mah ij32ܦ05J9Q퓦j)U05}I.&'!k{f}w97PEDtq͏Ta5 #{̓ 0B-'z0W[$%@QSjۣo>>`a)ݻ[ 7+ $ `rCEC |lhc"<{b(G?F"ٯ@!+J)Zi/AH/%Z|RD^ 8M]NMMSqPQ+~ B%u~AO$$0z+t\@h;#d+ˣ)lY]IQ(f9ܚuBVk hY%was~4-eYV<=eLo'|}Z9r8: >f Y$ܧXDZ/fO`}|w|{|//7wown/t7G|,op}q?уV>"Ξ6_{|_! ^§5-*wUanXx5? vtè?v#"x2@Oc`=ډN"E\{_|7އĴd PGܣ #Wn1=1tF6%4iQx|t!?][.̫v/nމPn+)8@q|?tϽjm]z=QP1(gG٣U< +4-J_[' :Ed`Ϛ`+2e1\)e Lc! f1`oxoKR~ݻwo^x0oȓ\L-}=ۯ](ksEKCNkw'ҘԖҚQ: +}uXc_0:ʔDZaѰjR]kW|B$uv d3a)|ԗ_Eo'n:aLg 7G_d3-x;XN9+ʹ`. +endstream endobj 2951 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2952 0 obj <> endobj 2953 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv33184V3.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2954 0 obj <> endobj 2955 0 obj <> endobj 2956 0 obj <> endobj 2957 0 obj <> endobj 2958 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2959 0 obj <>stream +h[YoǕ~G*m־XxɃdP=;KUW{IQ!PkSg_tj:;8:;s^Թ7R]r/Ogo`6_~<6Ɲ1oo+L5{sn;%kwN6~N(Yˌ74 k ='XYO@Og91neNsȵՁWC2suqAUT I81hD}Al g/zlI͎1+r"*}[',iix@[L%L𓍳u2뛋o.MG=wN_}_Xw5BkqRX즍h:8/oon\^]L4]gSel A"cV t@gXĤf7m3za68Iu2ېp:7x9`!羵aOI\k()oS'89;-z~^8ù"DhՕzZj< : N2k4-G.dtq"1Ên&NjDd.:{vLR`)B$ zr/W5JÐdZBhrbzpsSK^s[y (ME?Kh~9m̈́X0 $}hқVP;A{po 9fRo{|nJ:Jj6yI0׬vPTJ2,@8C֥~!dF n12B&u3{+4:ֿ>E}dױ.~<:Co}l3PY^d,3#K>"Q. W܇f J1dO"K֬bI0[s=V#?f O$cVc'P&2TuizAC꒤0+Aaz8ogdkCYf>dٌhjyMXMgH`$9Ae4mۮ]CD jAt[UAze})ViP;i:|⋃}vρ@/D"L`s BxA;^0O'||1+:)q-NKt(f9 U-rޯk"Dr,y$Lŝ CMB,GJpD)tJk}0 +" Jԁ!ڨbXLL0Pvz(ޭlT*2y"v"ev2WeWJg5 vP0ŕmeG+&J|Vȋ/.fѡdC^+Ůw(uآlbD>ikS4:Z!`^8\c? >`%*&{]=(lK +ۢ:n'pXRw,@%<-}mu"i 5>swiS\\!ymFj@8old;,FD4C`yYy +i\, DDNRots)$'H!qtBs=GUĕ +8d;(8@KG´~$]Z pa^h8{*iq^xrͣ %C'%y($ǂʙxR^~?0c/+4ˢK*f⺨CQ"l{4Y$/=lrMS"l~SӎKA>}bc/bk4+]sg&eva &=,ljvB.j^]ߜ Sjw(0euHV7]x7861 @+ CjJ|$[@ZLF&͆GmgXۉ=oCwdjt_q꿠ωr`N~n'O;|%NQʉZBațiC 6~>f;^_ma5 U%g)'{!։vQ̎603sHWsL'"~ |t]PlNnL,ئx:,SR2 +V2\mS\@]OZwN$c9rQS&]s6%§<9ITX)ETQd̵#^#ܖj\,Tg.+HG +6\~49Mn9{.m-oo)2(܎]}l>g/& ގC!ZMK-igI"g)q t7!I"1&:d2AD\ 6%}I ς5yM5m8+TIR(*U?eF61ih5lTc8ND +WT%؄5TdYچF̓Tm/vĿ +kC244ܢ5>AŖ _f t?쥓]˝~ j6|낥S*Hvfim + GFjj;PvD#8$ىUtڙ'3-(uR^*5:yHm稢ܷ轰P<82M*2+m7JӧlYgJjk͠/KYe.jŎX}+:IoEдT%BYm&j\1蓸*/7֘*tҫeh2zmզŎ4zm9nymp_xm^h\SsP)ٴI^s&a޵) )4[@Ѧsb Ւl%41_+Oʇ $9X:)90q k[6xG' XX7>`PvcH=c QIHKN\z;Zͤ7\#3h2oQnК-BA&G&",9kO\^7 f.:;ȔZ;[Y7bj?ܽp7Q.op ͵fXw\`a']8'56^ @6nt\),_4sQ94Gi7?SoH۽zwyg!I,9Ȣ$I2Y~{m s o2W[EGqT;_^zr1!KrerCdR-:㡳CI%^o;] 5O$+YX{A]+LDXb6D ԻE,HB |X e\Oiq&-D=Zuy,|S9*`!kxžȐ_$8?wGxտf y&ݴϞYko^޼nn.~z7%?z9ld!oϯo^OW +ݰ7D#.: ^~S2ĆtJ}#u{xJ`GhyRppn_W JD, =B4ᡓD 4l+y9vywvꭲԘ/ +KX($_b xoqVqnMa߬ne `О܀'7 xrn2@ *??dI(Fw"y2A;4 +cE +zl!\WMGͫgwA"Աg%<֟މڸD&ҥ([3Ӌ\MwW_nP6V X>ۑGʃT;}zgȲil*mǝ>ʘpo.2Ng W> ﲷPjsp>/Oy_#tNJa,RRXt3UH-.)@~UO NM>]_P 뫤N]%wF+N-x~uOvI C%\:/7$?͘b(MhZa ~Rڈ*߮emgB c/X|DqTh@LZ{!(lhh~ _C9h?!%~i'i+1Ї)e`HjE~mW39MgFS)f^l%?3p3v~7p𢕋"~uq"e2 Pwp"$H]nMdj}~x.놬⾁lmƺVnK> 톳[>^ݏ7Iny|goK8$*C0j3:>R` -¸TLho>1T#ݡM> @eR>o+\f0ŗ6ѕ!KLS:?W-|vDzD.,K@g=\ϥό4sip.|p.?2 _ ssh1c4͹\h.h.>:CD2D>ǔo07-Sb2b \~c-~~ku r2/Wfos&7 ړy7OGM@o;(n17EIE 5*%J)nW(`lOWSKX⪖:Q|-Y]Ea_j̼@GŹ1h)"3bC|x՞\'1Y[dY2+R{'!eV>YV_I:Nu{aL2O& VT +]~ROI>*~sOnw!l{-=$ >Cx6_$*4z>qEj7`W]x@e\V t²hLx\ =gs +endstream endobj 2960 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2961 0 obj <> endobj 2962 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv31479V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2963 0 obj <> endobj 2964 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv33185V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2965 0 obj <> endobj 2966 0 obj <> endobj 2967 0 obj <> endobj 2968 0 obj <> endobj 2969 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2970 0 obj <>stream +hޜn>_G*k_AL`{ i0X[°Uի/U>;gphm񹘜fM6,wv8k]\9z6$Y?d<)\NaWף99pe\rב- #^5-3LM502uJEY]a +TxI(HhvM8{&Hk&hxO_X@ vv qeѿ?@JWCkm1Vhc.] 3@ 4&ȷ7lJ4_|7*S/6)2@ 8?w#= ;Xwq63B.va23-%xhɐ5!EAF!`ʎR&{ !PW`X:3oLTɄ] Xy{2VAdV{eenH:Y1הW +C 35lw ɳ{Xo薶VЊxb>%G +X܉iAMxw*ʂ9TUA;(}v,كUHTs x$iY't3^1l Fnc(svoupw"I6= MUC7M=5B{aDpxymROiw4|^C),|HN h~=Ej7 ܺdQ@ +y+SN"tMQY&7vé$-ҋ1ןl}7Gpauh\lɕngN;V2fӏ +HdLxJk$]sYӺ~a-H53<'ێ׸쑷kݗm)MMlo7e9+-6ւ2QY6=~&C9$/ 霈/SO(lss֓m +tz +˴fu1FH)hV8Vn. ,[~FN9J>k̦ܭ=gֺLY OMNzܰ#KM,%rozۓo#Iݡ^~*rL_vW$Z)t ۮ/CFMt ƘQud;;oS,?v"I[-=>]>]=WnjMlI zͭ[ +endstream endobj 2971 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2972 0 obj <> endobj 2973 0 obj <> endobj 2974 0 obj <> endobj 2975 0 obj <> endobj 2976 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2977 0 obj <>stream +h[Kϯd`(|p@A`eÒԋ]1V3dȪbXy󧿚ϧoNobJ\4/1)rYI/?&-wW(^kF>|z{M5I=}B;Л*RUoZ዆*SI*cuXٌͅC!/?;>. >L^uETJ^>=ޟD_UMeTl'1R +4&6`@ sPk@?sm.Uuh2k$lAv.\6y0GsTMN8U^rQ/6/&(c~Ͽ-o~xksXW=9ύo,?do3r__~o>\Or VxC瓎+0|T%X<$"-׏D)ZIʎʎV|Ny쬊KPJg`\qVG*-C K5sهڇX:r{I[8LVїVh{ w6F%YYlQ(0M- (UbLk__- + +O6keOw#|C{[oW>hJXw48MUE@ngHӈA19+E(W9OS +tP ^oʨ$(ECRF+HLEƂ9y@a[\AUUN8 mxiQ('.[F.2%aI:B.Malo"̫Cۧd"SamX:BybBE547|'UB)2ouu1&4o!LF9sjtXDeP 3ѕJ9'Pet2ͮEU5(H(,k# + c)L|[y77+M}kܴl)ԭvWe܃y]'.qRB]i1@쁏dY^$qW2_ǻJFa16#gAйj,zFKw䧦4o;2hI(ֺJL_W}z>4|ҥZۧրtRis +Qtt; +#Vϓ-(s5nJXf;ja`&ar:vj$! ZurZ큃؋8N|lY\$ wlqTn|;sʮ\Rg k6KV +.#G&rEL-ݥjpuEC +na@# 5$}*zx}9z2׫g`P啓:0N9=u?#c,#\ڌwR0U!MK$QwfXWSz+BQl^r/a&W !"^raSV) +䐋 5ѯ"fAY%cqqZlh=>e%m7C'4Wp2#-kY}7ڪH+݇[nms홽 λh +y8fe͓ =r >_]9K/lr݂CB m!4mL5HwxCp(қuoHb<Xtv<߲g Crt+T nyq^⭁ 1oB*zFE~CqtU2); "Mu KZ_തdeuZBw|'n:"V9M.ZP^]2m C2G9wO'7ƧNBo`%<ȼ3lZ o8Il?JC J̎,VRȆ,Q1.]7 -MpZY)\[m+;KQ He?(ߐnp"mfEzՊuvK:'M5-iG$6^X0o$`M:[jVPVuaB`c' +,\F>ςq<ςw< N+R -:pƲF^;.G!PŻZr?SBѶYIBzYǴ&iI ї*U|I*k +%GR*Uz7{8ua>RpYءγofHC)bTܶн*n躄NVJR +'>7}< W L)o~%Wh!lTm*]{ș2"sEd_{*rn v S8ڽb6)Z$,%̲6 xYq$mkؐ#g(55sDQPȑ͆>Deh&1G5X![W!B˲eVxKu\A۝xQȻR)R{!-xշ&Y0b0bG06F"k.eOlEbajg)oR8'1GQGbQ;v:i'̳Ηax90]rLdCxbx/FO 4r98đ64z8'@z>bwCo{B"e_S >ldaɍwK.= +P_s⡾B>,ǃ3xlHܡL=?Zc{W5B>=垱ЏG/63h`3:&R^dk MuKD|ĉOpj8$nZE8-^G8_|0~`_aԁq|h>XIנj ql|к!@`stPW35`pK@u!Vit5/_ =25n~1Hp޵('K)lU#<7t$/. 3iL2LL +dL +WBB\$@YHX?kPW>4(w% #M" J%8qzclRY +!b<1(aˆf}cgK*G*~4N@4gdifE7X7٢-}ŹTnP334+wfa:ClD!|KWK93)Ag!VF:+ =h<1ߡDJw%Gc+Hr \#C|N q9XYcv!r?49f!6*_G#~cҏG'<3~3/~8~Ɉ ?ؤr7ޖe\md 2b DT'ONݻooq @:1u];-74ɌY^=`V;'#L}pڄ|P=/r,7!5SqK/_!6;ϜY_CwK[D"\hoẪ\=:EacۺJ /巀oo8]3~ + ꨂqrj@B_ޠaC=:i)GJ£TDeUԒ1O[F]->7zx[[e11B]$Bm{}ϳgwq91%we +endstream endobj 2978 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2979 0 obj <> endobj 2980 0 obj <> endobj 2981 0 obj <> endobj 2982 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2983 0 obj <>stream +h[Yo~篘ǥ}|{xw0_| Uv +:(rCpxKoF>p'eKeKe3j良7vt~6Bɍ*i+Ө]̨P#$`a{Η1XVǴ8cvNcpڤV4lY,P`2 2;2AP fL4@6?JzÚʵ4P68tCK_5~=7ԷuXAv~V޷kd;3Y'bFP!ӁI5p;ZGEZ%#Q`#(MR/= u&qymjݼdh'CAldF#j^RHզU}<qCjnW^uT?G厊!ק&8Z5q'9~ 8<to p.>gԥW={2jF٤4eWwTenhs_IJ9Edr:^d\JkS, ӆ|*zkiBgy +@",wPb ɀ3H4$ Ÿ-qu9(Ɏ%HiP8:WJ e! ªMּbNkҀ,82Hsu}*(| gȼ ,_&iG׮0\bs*RX Z92Z#8Z3lFJ63in)]̔T3\ֵccrnldIUTl󂣕Eh".ئP6·%D3l(2ưp3'ZQׁO F'+cx696B\|hS S6n$gA0 "n┭3E3^- SC SZ C #0:z K1KQ0A&R4i>y(ÂP& W~*;Z\t$p`D`rC 4zv ͻ^f֭#yb}2ΖT@X)=BkOȵHMLuQIL.TP"mcNk6eꆬs v헗ݐ68$g „qaPS+_9]ЭLbfWi%cK%+grn1 mEt+N%,2rGmEk & Tޤptsjm**r"W xO +~Y \E^X8ψ q}΅XЎt1ZUOh#]HvZ%BDJ/~ՆdR +|lrmYzʽ [xI,BMUS]_T[&Cq.Lwrqg25r}I].u[Ԅr#1ie7 n!"_M֡,0M_.ڥݨ{ KgmޤE{nh=h_xǽns! qv0$ЎStnꉣh)g}Azs5spN~n5y(̛#_N:`Ǹ; p +== OoϷ;R{_k( 7e7R7<8Ͷǐ'<ݼ;t?7[uwknM<NvI~98"#2?78S'C>`;R z8<ܿft&QZ7(Qڏy]t桝s qӻlpJ2(k'4%B-sx3WaL,#[Շɪ<ו[⦵rZFG](@L-Wf79nYa~8ՊƩ'w6z YOE6(%$d΁w;`T;rzxd<_YˊӡJpҽ(~L嘅=T7dk9d:m#1=b2mpJ rw<߉79atZѡ+V >z" M +N8N;|{CyU*}T +W~ƕh5ŧD]R㪒a;^w,Q^grG +4-"#깸hi{;S7\}G̦C^<^u7FUl7fىz:Œ$u>1QrHhKorw}*k2w4:(rE8Rţ3DFt؟+$[GmkYRnɞ%9 ںcmʐƧ!n ]|3œ5iA@pJ̈́bSXIn `z3n=ͫQ +muuHn\N7*}޿[6p`6d%ʪ"A-^! 7[n . ԅ53 ykܞ]蛳?'ۘ]{ŭۘmr 2rG0f?#ə@X!w-ݢ ƻ5>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2985 0 obj <> endobj 2986 0 obj <> endobj 2987 0 obj <> endobj 2988 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2989 0 obj <>stream +h[[o~ׯUѥx-I!) +i-*'=7r8õ CF_gWgWWv2իJ4G1)rY͙^)MиK>k +jh;~zy8:a6'TѨy*lN%ag.8$eg]>8߁.ސ|qzFL!&ҴC0*?i{i;j;j[eB:ac[U\W:ݕi2>tVhz`]m_}sH9#p&T񹵁d}i=1yvƨd7+k"qQAR rGe۪jmLka^_-m +(O6{x4 z'Է=T„=g C[Ut +SuvFE2#4QCخrL +t ^o(F ZP+U`̋m! +!iPY`ZG8(l_v7yCj$.Gr^,vej䖛ޟ)S*U#Ojxt=V}h+to"աS2$װh6LHS3F'XP%-Tb2` p  .̠-Ox(gئTm_̓=][! Ėm-[zzku-*A(GBrħWxSh[-6vϖ.ܬ&)!2M1roq a//izuW\O~ϩ@k lP\ՋK&Єrk(58 +$c>omߑ\ I >ض!3%"Dv"KVb9iTQ.XdNVI +EK]zQG%&I#΀J? E 8RG(~ ?^uX[HiOI6n?66' +NY;'M&]iZDw'#icka.tAvfRF)%A".kxհJÊ6p5~@@tpmAKYZ3~|<8*a8+೑.߂/_@x <;cg8c;Ր˥ 9+!wdn0Jo&va6<~`)?MY!EK#;5qy{B&L;CNB`bH:ᰂ.- x]v@jGD 4vƻ:M;qT'xl',("(ťO{a4mM lps<})_6ӄ,-o-BE DŽ5, I!|$Q-I2j9L~ d 2& ĉvsX)tfq; ;8? wM&GÁ-#tklrE ['([<\Vu j$L 6&{9Xp+;*k {N;v(lb\g˾^'%c-F>x<`0uO,7\JlH*Uj1[бi(d\(;ř|@Rjs/dxV|ӁӢ@6)s5hUed*نy:E& \Gܣ*$ ÃD xb9ِ)*{2 b> :8LYq GnuTڏ>w#=!e}Ɏ^2{fp,_c~q v"3\!c<#y^B>^?$gx}Of| j&j*V| +8C!z;n9|E] +?xRO55Hi6+`l{ˬw0m%`U/O~X.$e\SKiKjkF By*TB k֊va+{` i|ͅdjB6\6!JzlF:4BV103%\\hWAb_ݖP6íGoڧmB^/σCߺZy0$lqe_醗%e]hVr4o<`{c 8xHه.0:v@. }"_v鶠9LjOh֫SÕ{і x悿R@̳ ְU:c};s%L?\-D8P 7#:v+%beWE8S }B}̟>=~ycNrz}MU\qIU d}m<Hn]<" +q\x zvq9:⇰KVjk1HL*)]W0L?X]AS38laUAKx1b/U8 % _+[Y~vH& ֬(WYu e/[Ha SrIdܤo: 6kf +1 !KHnt*/92|32i0H-!H+1)/K\ywh*^l߈4o'"lm!>DRT/oowMP:[y0]?}saiss8}x=lޝcz} xPO_L7wйy|' So 1n-M8_޽Ǘ^ 0; $Ȟ{szz|l9#TY A(1n=ZlOdz/>|z8*lPwWftjzU?\/} 2#Cz +0&BA[F_- +@5nB^̀w~ T{f.BGWq u=R."@qh,}r΋c]TWCUOcQ 7nwv@u5>E]O-6c+Ge>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2991 0 obj <> endobj 2992 0 obj <> endobj 2993 0 obj <> endobj 2994 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 2995 0 obj <>stream +hn_1FvDa8&;ĄcO]}yaKU]]U]W^|<^xqu=\\Ay0!! Y);\PÛݨvFW/Tz`qN8R>XiSz̸Mzt!)8mi~Gc2~MbtM50l-2 &fCky=U|Ϯ. >tFcsbix8^\Y?1v(g h4E? +C%8J }&i=p@q6ًO? /|eR^~ z;Vf]E'{03y7ǻWwOhx#lTi* @;~w3j t];[[Q{/㝱vcFnTI'h!XF͌*BydB`iz2cU`)8f0tuvհ&G8N1LсF[U6 "pR`&ȷ،d+Cu4 L#\p@CM_5~97;,_G =e?(uf`]lf[ -f06:PnGH H `a+:Q4e`qq`4(+PuoS'dLnL> :nGb`W +qah~u(W +$z7Mf*yP11FDQ=+U?ˣ䎆!SjY<\M c"_O4 `N~DYzEImޓ\DW3Z*$921%b@O* j=:^Ǥ\Gp(KLaYOS]#O:|+k PIUllCma#A"0;(EK +p 7Rl!ZCqր+~am *Pğ,~e\ vh Sډb=`Gܾ$006:$9 GC&$EAY5ZM8id`=.\>T\37 E^&W]9K4x}L dU2S7xɍeϗEM +MҐ ' B- +UgVʦ,,!5SCX3 Y lcR"nRXFmG:*RcU6¸#)Հ3QmM$^ّ*NT(lCI㓘"OY[r[d.RݺڻAVbB]rXrdpr8^@S!eqo$+ucVӅ!^2&Uy+ԁL|Ꙁ*R[2T)!oeWDT zvHˮ{ \. b"jHS.̒zr';qb?Sf'UhlkW@SU]:7?ɥ*K*ug3/?Lоfq +Ԛ  TtHmJUg 5\\2T7Pdu5u̚ю} ^F@{])A\BGs,Q19s{;Դwsg)1Aܐu`׹ >y0XaEU?,wB [t,k; _j`Bof8X*:y)>%RcB@H0r}p$XW0tslTCiqX馫y|7YM$AeDL킑#iVW#SK2 FꛙRnlѦڑ*fIgɠ ]m@}KJe ŠL.gZXCRΚlGBνa0||}:ǭBB\P>l?GD[ Szs[y8<Oo_;'&3/zc͟d7e'BهqJXxܼf&r8 +51G(QB"%ƚpwdc-h[ 1o-`>8iGgW(wM e٥ +{t5mh ?QɦCz]^IgZ\Nz U+r^rCj[`DبuOg`b9i]Ğmn[03>GhO9gRH ޵-j>Ǵ31!mkM_ D;F>lF֜FMCK!+arHMuNgW FEjM'.-p倯}hW'o: r gLA2>_~ D6*zp> 6L:IPfR$l[T$рKؔəU\QQFF^$H2:9z>,L3ȉ"3igfBҙA6݀!Yc +c&~p[3 +rA 4aį.H_js X_Qht˳k'SL!02$4 +k0GT<[w{ul UTp3 `(/Ækm|N(kZs|zI/*M,{z%iXoh==nh3p UVPZ\ ⽴bm ǖUP;NfӸxHvyN@1SC47wM`y" wݵbAsv=nY~;1ϗVT\qɨnP%MGA7 +OXR;I@2bmO0",[na7:ty IUvʲ%C*ya @0TTw6+PWMt'g/˄[)gAliy߲T*53k ^/yu89NFR?Hދ9|vbIKlK)\{h}?\ZhEnm˪4^ x2)<\p[7`!a;ku.}D7՗$Rwv4c \Oi]…Jbsz_J7Ζ%6#x38N,eVuBS3eO ֓:kxfp67 ]^alG7MIM(Rf<&eF=֓n} +B:♥|S +$ 6?wFG2ً |򪾷qg( gT:1jm{E {~ۿ15 E˖ۙ^wbM't#Y0{S iiDh麀W%{yecƭ!2p3BVf*ҡ^E:;zf{TaDj#|c<3x_ _Ǐ +{ _ U |UبN3^7p耐TW^BJ?A[%,=Gn +endstream endobj 2996 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 2997 0 obj <> endobj 2998 0 obj <> endobj 2999 0 obj <> endobj 3000 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3001 0 obj <>stream +hn]_1R;,h@HAV땣F4~qύrvWvl@Xvxë//O]^A'Y0^BT& 1:eh'D|GGkyzx:]~O~6gs@2#C4k1e.b*aiH/s'_]="8 P%WץlyIN+`^\Z8 ?fQ{i vrjLF=~GشC="GFnj:G2ʉr0Trdal,?L?{:7\Ds3:lҾ6mx,v4j@@V<^tI@%P,|I?z60x49EEF +_@Ȕ .>܍:*[Otؗ?|Ãsz*oq `P`8JDx=ptآҊ,q 5A6h<\J )sZ[ +JaDi 90UVW"j pyMsu|";``iI3 r|Ҡ +}D"}=)߫T}15 N΍h>{2`O:F7Z,%TPUӨy/>FLL`<4z 0E9 Ky(Ta/كIq-2A`ť +(n՘lmg #LJ@ R`Qjr[E_VƀFFG̖>6idQ"5EVt, pn&+\wͬv/fX)]<Й"Ol*PKXH"E؇= l8`+g:7DQh~ +![iڞGa@K.aŇ&w0׻]Қcf!߶:klcp1z!UX +Tuz];@)C7~b=϶ZbMB.]zD":EEѷ#C9BLl kӽXbs}V/r MB bykƈq +KW1bG3眿pr qU4=nP$t9g#m,cն nf_ǨOb?lO/-:3)۟f{ u~>5l&k`Dp7Ԝ[װ>f>}nLNFv(( wjz +=gRo:w\0lrXdSi4K}wAITA &ۉUX4nGc̄q @a\Y'f8H G%-ƞ'\zjDߞRpϚ.&vSG0,й7r>Jh%+uX:G ؤ=S LA[YY-V$9UnÁ&͆ W?],ȡ-EζNՠNqZ>$ ?qu,| +LܧV0O(އ xZ\@\W#K^cz ᢽ! ‘e2vx@950.lw5AA66?4+ X0zzsZ;H<|lWeIIO.Gw 1S&ӿ.o\ΡGW<|l7Px5*UQ}bvpA.,;?=1x7%a=> ^>0|AMD\[Hîda*KP2gMbPݱ{KCw?͐C,5| ޗl>/sX>-3Rf 's YҾRXOG I$螛氫TNt,{Q8/0n` r=? ω5o?rE%VZ +xS PS=RWĹF+MX Z('E)y mѩ|3yBO 5iU2ZPIE'{_|*Իi?<݄7'j1fbL{H?V>nϡեnnEJs]uU{j@rڏ=0e}{!Jh%t1, 8=rNIQh{O>#ԹNrY J&Zjr!Ei@r]*>tRbשz8iqވ}s/vu;[.UyK_oMApoƬؒԚG_R7plC0} sS)QwJV XWT(%fi?[KK^O ڿ e +endstream endobj 3002 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3003 0 obj <> endobj 3004 0 obj <> endobj 3005 0 obj <> endobj 3006 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3007 0 obj <>stream +h[[%~_φեt6 !ax8nRK}g ̞JU*'͟ꖯÃ[.O٤TklX>뻋pÿ~omgqyD*Y&Q rRve3Z Sg~lUTg׫&Q>Pi"Z!³ŗ\GUa|Ob +~D(+C6FG8xL\`A2 vDC?QZdqe1>Zֲ|NgA萬~OGLiFv!w<拷}BYYY-:iĊӼ\Dd~/߽o><7i3ylq4fjRUr.ޚXapYk9p9p/>@.%08E+劍qplkbTNs*Cl2ƣ *$2IT(`۔wqdOx]^I) )#8nBz{hP\X@B+"7TM)8.И 8qۣON5.9}9B.v-a03-3,ൈ6ԡ&['2`-cF,(FXJK9 /Dƕ +Mys;s1Qw.{NdP,g){&);jyEi :gx2dڇmSo5>Ը4(=SR*c{<&EYェCֈd\?ҿLs-wdȆLK NLx ˸/QYCK(Kf%_G콗ٸqP" +&9psR$COy>-nk?8otv-]B z@l1^yRk6 +?c? MvS|& +moO&5\w~ӆ6A2:S'I4BhJE =W}f.'B8œhpVa *AFQ_!+7dKٕSiI4 +'Yc-W`ձeNҤ1Ȉ\l4b1p ES87禗i 7^ >p5"G|} XNqBu8DJV˧Q 9T<f@KֺA$K +ql9nzb \=ecƃ8zn׭><'.{e,Ԅ[5̞,$Lf鷅YY<1*KJ|G.Ig7M^|+ W>A+ZBNutk6QmmqQ\a\4ת4'нTޘ@[3,0^U5LcbGůhp`q%DmeIb@H ʃ &z k^![Ԛ4B9_QA:t啟=,APz4/eC|FkTgpQ/6RiO.$rbB>>JA>zt +=hX:#UF-8"׆D.3 b-]TC!tGr!+YD"@)t'j5[Kl8\ ^ʣ<%RQCh5V/ı!O.ݑ3㐔>4֠f>WAOylwÃ16?93FEbpKmSsņ ,ڽf'tc$9/>ODD!z<=Mit{rl:Fe7†cZN9,#~x&*$=n!˗V,,wBNO<'x<+gIho=r;LUIl t( rМ(& Dn,'Хye[rjpō~mWg0nj|(2rb%'.y5=ǡ&ߐ#Io:R3ܚPGwjw @Hq~hn.f?]7KVy wK?1{mVɽ,渑@.4nEzN k~ujU#;D?ئb0:dz0;.]8$tܧg} +O~Oz,PO=c)3'e=U)`gB=eŶ1 Y-\"V[Ao10C7d[|9w DpX^wiϼрaB1DEP# W}Ul,FN><1 bAR?iim f'Ƿ?%{W`Wnp FH9@ȫ-iFcQg hƳWoz*=z ۰MW2t?(wk!45UuARgh} @0OQ>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3009 0 obj <> endobj 3010 0 obj <> endobj 3011 0 obj <> endobj 3012 0 obj <> endobj 3013 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3014 0 obj <>stream +h;n$7w}E] dTp'!m Ї0lO۸EC)YcWlU㑏o!Fw7ow7iN~Z?za~ +&.ffEvYظ,Nɯ_ m5y@[_>(BnWqֳ^R#vguÔA"/gSY4ېR~zyw#2eN$BJ NE@(rPw>O]J[*zgMl<~9B 9'nsqd  &?)9IGPܬ4wxՏ_R'5/o㾛dZ,y*CO^U3%7$-7o/~~ diφO?_` U&ar0]'D/Kv"Lmmg圴O;hy +~Avi@8+;=/^pxқ }ۺCh3Nt #TM ̪OoRsg<24L2DS |Y;[dH M={JYn(j O3T5=<*|9[[]F!=%7Y vsZܔLEI84҄F28tXR)H[XB9]JW +i%b[-a'SS@'6&t`(tyAхxhߊ'MFe_of + ~${;X8WAU/~I Z7G=5(PEas^Sk0T2@b/]Lݯ(Lw7HS6b*mn6mlhRrQJ; . 6iW#2D,{>g#opcˡ&WF?_K7?g-Q²ɞ +R7x. \=^[r,.x,8C]ء*0/S BAg;1MW`́cdZT|/ _:1gQЄp<4A )Ę 7"H_.K 0jbLBm:ޮ(V!DEba8O\$H݅Y,Ȉ P|7iMahVO '̦4^Cp)Ci,F6^58jXz^ -иa8&&unUe1fY<D˃ K^o DF`$T CA ?Z|f>Z祘 yQ@M,CtB嶂AEE|2}L;TԴ]U*S^ + ւ{'g) i(. mZйy x%Ѩ]^H|X #!D}M +w"aTU3&CVSi?88 +GCnîfmpo6ִgl WmASb=^۩vQ<ϞCtW]g"=x]<-i3ѩviPX5Dc]}Lq, +lY9ߝ"94|VioK:u"+З Ձt \΅.7@}Pφ: + .bUy+݉pcմν&y0Rщfz(`A4 @u[=/)cAruv[Xl&@ cyaT @{K6~Hn^`I\$1;"zј 9xWǒbV6jtdaԧbRYo:p S7Ը*z`&b" *¤D1 0BnU'jz SZ]i|SKۚ괔QٶށNQ!ߖCT"a>b!>;rp& #3 J.m8dմ}ü_M$2A饑; 7wJGr͝☒01]C44B䜝U,Ac(hr9>{ li>)h4b@$u:B, k@Wc5t>gWok_0KCLe-eOzc;z]9 4]D-Y eO.(p̠n9lw&@KA6&̂4+:K294pp5TtnvW+"35A6$V腮7qfA:N>/=[&MqdǢp)u2&s'4FLm vԺkg"mkThÇgCniT?6"٫uY#\0Ѿ>ʕmZ?Uz2jJ[>^-)ѭj[c5|TzRi :o"# W 577)$XC7uPa7\^хxS^`5b3g^&>PU4]Z󭞊dqq1NtW=SuYF>ǿSUA 'G:4xY qsߓ^azx6]c.vYcJϢ gi5JW{Emd_&s%0S) +3? j.|3L9B2wQtkwF'qUilN)茷˔c<.5Tz?;R;! q9?>~K-gu2~R>898'}X30^Tpy#勿Zgٵz:˫Ɲ;k%ú{h<岚5R $SĈy|ow٤{OCjej%48A< ZfYtY=Qo1?l4Ic[8/XžǢDǂ8X>7Gj &ƺuՏuezr +Oݾ9-ցw@wX:;w~;{t|q手35dkOFg +,4N趕}x?1:qN2]}ls_vhӱ V_5o?CyfYuc{sK*zUt<`pW஢#T>׬0 +5m7?Fܽ^cl2|xq귳;ԗ4w?tJrU]J w ijqnH8My~Sr>bc_s7C +nY᢯y-] 7;=|{80q;in|qGuzN\#u%V~]ǜ-{BW[`\BZˢA-m|v*#'%y6ހG^{q7G{1S%^KWxKUTi8ߐb4Z;\Pw ;V9.UNԉM83Z@/-_a[,+t;3`M ~q5o%Gڌ)TtWW?Mё^Lq*gmF>\zr\2} ix]C[꛺Fé2:k A7f 33g{;>l;~!`z!h""sl\O|$oXUI ?jڐ+}$I~ĞJKt E3~?x.~/R(rgS/ ݎ360A⹬V#9ΊZ0$ᅎ3q;5VvsהGWrK78U+C.cyK>-/NX\eeǕMsYI?0Id"C.U^ĸ\o|x ]T:(~SݜKa7燥=Z>]G#kU٫;(B7>Ӿ3C ri4"`ocM@#0` "]!8!8CZ@OU`g8$lkgh3\A{Zk`'0(+d1!5WVa#zx:0˦`:P݋$C3n 1|0lG|t+;X[ +p)qZr$ a0p$}b!moY S0p!W;Ca:41#e.$TfӰtgRHТ |d8fHwno]>NC>.wq'!w;׹?Çcx(eC0|H9CdX\7~oXs=au{~Ýf=/ў7!GaCK$^MzVCns |i5-s>ҴUh:wIN#Y푗x>axP< DŽ96d2C,^>P;ÇjgX ?PtCG{̣NC3xy^: rba$=dc[ mV* +[N$ma;zURmG,b6ls"AW2/[ G~3XyW f +|!<>M,4~ƓwH6n8-ыA-:ݯc01vL kCCϮW.ލ5i{a0r9H֣vx?FЙ +endstream endobj 3015 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3016 0 obj <> endobj 3017 0 obj <> endobj 3018 0 obj <>/Border[0 0 0]/Rect[466.32 242.54 527.94 251.12]/Subtype/Link/Type/Annot>> endobj 3019 0 obj <>/Border[0 0 0]/Rect[67.26 234.5 169.74 242.54]/Subtype/Link/Type/Annot>> endobj 3020 0 obj <> endobj 3021 0 obj <> endobj 3022 0 obj <>/Border[0 0 0]/Rect[512.94 87.44 527.94 98.66]/Subtype/Link/Type/Annot>> endobj 3023 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3024 0 obj <>stream +h;n$Ǒz1żE{]`a>lZ<37̣h%,<"32ʺOe?}wzws˷n~wws{wg=הj_ߘۛj Zwzog^[ehghm[;[Rkř`׀ ]i?_'51HV_kD"*sxm}Q g 0/sa?֜" +g]c&`;<ʟMh3~Ŀ87 +d=Wkrepx#q}n;%yG2<ܠ$JIYCpEX.59fR'8›&56u-aqظZǛ~}^nUP }ZК[3䮁o@K ,K uNZ8 gP}xO#}SZN`C6itҙR뚪{~sf5,J˳==jc5Z bPL. VCOSSۂNu qM5=ZCimeMœ{x;k&j;iW&#P:8w1Aݚ f.@uEm4TmagZA 9: 3m,S 4-Hֲ%Cc]rE6w{ϷHWF|I.@" %%cAbGRdEmxbή :5!ۈ\H٪8tVjV ;FxTcx;_s|:KJOZGLIhD~[{V3]Vrp2R~,,8\mfpH}jZGD&-+j#& 85R1ӤXU7g:~N(iABqaHh뼀ы-&;Ew=D94$q P/&OЩT5hTeQ p\P催Fcm sGɆefL6LK"l$oA Q)BTKW?jlb [."(˛ I S'A±JIϭMA \O!𭮹d(\5 ˥\9/y-kLv2Gfߩ"SE:߱eB\6H_bܝWAp[IhOza3,IHɴDֹ`h+/Wo\,+ll|Z]#[.=Ytkh-IE`Da6_9CUQ1E5UgS+(ˢ[êNTZ^BuY_J{ZWP:~g`+ dz~s&wL~zցnׇxe)W]+x{ %;2RqASNV1jH]'dfoYq?Owc{q? +mŇ.kko J>/P2CwMyiLR +ܣ8z> IOeuCdh}[WTrZsX|,.P'H*x(, ()0Gj⸎: b[m"r4]|C*-%o`Hva;`Y%CsW,^㝰1XMML:5C`=/9@(z6PL4tH²fF>_k6CoxTʑ 8V=,XJRXb搈N0c|~,oF y_7 @2 `(IB8fά d.-J|1[H҈+Ż]x 2j :r:/xc)\o>B'F>TGOSO:O'vr#NF;råW9 G)  + &|!d;1TrbErN3~^kݥCUB:/3~. ÌQY g{ƀF;Mg?5йC㖈Dz`۽x[C=azЈÓ2EQg=ľ&`@UM/^7H%ql`@mԸ<68- "B= +JU+TXܽWQ/U'̶1*gX \Y;u _|uxؑ^<˜G?spV(q3k$kmlt2]N8ݑ%.VQT95BJf/=7o$T1h49) XȎ6n|=|㼏5id w Y!5FDA}"><|o怮0&_ G`/Tll؟i4aijFKR's̑pf;ʐ۰}'v|e? +ypo5-xk'0D[,e݁eSϚ;Pn'j]sv !w]x4Sl\zʢ:=So}a}Vqb;׫rJof}buމC)5J9s(*2^\J7vk4\,q'68+FaTNOPT|wɁ%/]=~ނ7opaXq< oB[ޒHM=ꛯa}kݚ-{~߇OoBդOӾW㸄?-{gㇿxD +l_8x4ZIy0Q*~rdX et`exg4zmGgК_aB#_8T< tT +- )_u* /{uH2|L,<.#Ϡ@ _2|:٬\h`0ðIP.1yOܿn%eT_d1!wl3W0҉Ǧ#Q&, L8eDŽ|B_@z 9UPi ^v>r'l*p/fwȁ >stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3026 0 obj <> endobj 3027 0 obj <> endobj 3028 0 obj <> endobj 3029 0 obj <>/Border[0 0 0]/Rect[74.76 87.44 89.76 98.66]/Subtype/Link/Type/Annot>> endobj 3030 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3031 0 obj <>stream +h[Y[~ׯBM 0Iyytm;c;9KmWKKtFYzF,}2~n~֚3;/C+웈Dۿz[Ĵ"~4)rΓs>ޯVEYWދ2LQh!k`-I* 3[k26Zu'I[j^%,,IA9nP^hq+A)e`(47?WmLg8F٦\nz(^i](zo^ ]O>>q?}Ĺo^} +[ Q>Hf0;~*Z fz*c1mk ck]D +NQvyc ܝU:X-.$HtpLs|XhdNG3٨2F4BtQwRqQ\ eHN-;(oٌ'6UPIYy0A{Rh8t,  =mGXOOd;~)ڪ1&7XB"úCdW9`$4퀼T0L8PD("̤!aN 6 5<ؚ0|xO "i(Qh+oPnR&G, ^=L,j|t=oG- WGt멨^mZ?U7OLPޒ ͣs/-2Qc1]Cl=k +"԰舆J?1"Z:ty|*C " y4ڵ7),'>q={|6 y'3d B~&>*nwC$3nFF2!,+.,FA`68fEv6 +]U)K2SK-}OP  +7n-N n"^9};'bH]Q +qM#U cI,dp3JYѕՅ- ۶0_k (}_a{meeʘ.f\Xtʷc) )@&BG vx,f~lWAm"q|C/-{nClbH;[ѩZ_|.!X4!$v6+YSk:޽_0w`Fs |ߵxWf7iwq!<<"j> -Ptj}ѼkJzH`OxQkK֙P{ߍZk*H$hp߃F| +|dx9]dQO2hMNet xZ# y ^S< BC +G:z{kpZw۲גg23H_œ}@'RaXeF}Tp7ѐD1 "5LGk9t-Cb I\aBd0mcb9L@Xd ִѦKP)nzpZ0iݍ\isL6 maL+.ّmvġqm1(dŠy!Ƕg0wL>a"ٰbcə!l[64 ,`ю3vhO!iFR+*.}NvGɓϮfi8媃2<؃Ut: Dvؔ6DI²C@ z{9F4CdQ_bH٤y KWݳK5PW9Ԫ:6|9*H,} 4\قlsRrrqúDQ*9hh L1,cz;M\!.sⅈ˛:U3zaqG7QW$)%1"S + +R`SAs\0շTuD_: +LSC邨BTYbED_UKEtE_v5Q,Z௺0  +@P夌 + ۥ +"UX-5_R[j/T¬`Ә1pfu` ‚Y`6g¬p ‚Y_‚Y1M`V`JYj ٜX tRMBݺuG Vc31aU}SHuĂY&kUz4nx/XV +2,~ hyӎņ>eL"mOz4J +v繦Wݜn R j7\q1iu>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3033 0 obj <> endobj 3034 0 obj <> endobj 3035 0 obj <> endobj 3036 0 obj <> endobj 3037 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 3038 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3039 0 obj <>stream +h[Y~_yX0' AxP#b${fD|, MXWE>||p<}^;~|ݺ~Ջl~}y5nveZ_lLsSYf7ݾ-w,O'hs,.I>zMRڡPuor f._Ikn^%qJ.HpAi*׽֔<~&{!=Ew؋JsJY_U2p12vN\?}G}Z:,аۿ^|ui<}=CV>9ΩlcE4 bKacȻIf@MlN&b7_?/,l{qiסbz +=h`B͟߀x^is߼!N`cR|i'8g32$v2jJnvmg%hy>A +e:y6>D[COHԓa m;}9^"p&⳶asE{`Uփ3'y&ֶ5j ,DaAMn;Gdr,MzihЩ/Sia(W߁ mAk>JPsM/f] ]'f[RŠ&4e@UH6nMdhj+U<m | ^6 +D6jǛ*sHQUu*-FB;QH-7MIW+T9 _]֯8 +_1m_&kaͫ'oj3F~ih|x0M$ xCyޡ-*(ΐHMԶsM/{zJ +r;Ԫ>@˖^;<*\[aS lm7 +K  i`6pld`<{-;Y@NHȐ=Q튼Xh^ bo +[ %E` #>y%Tp䮨WBS8A{qD6-v,d dF5uVx0J[k(! uOJ_e\<3/ҿdfHCKbH$[z/A))T "#-7vhї4e*ϑ8٪%f + +bem`Eՠ1< UW=EJL~Q*NVN^|`V7aqg]y?ƐA1S]=vT8LS~A|7.Ki;S?l'tKz+@߅Fؒ%[FyzؚzBqMM5|K9#_>[_@S#gB9_>XUr-@R}v/N ^OLDTTE:pXI]4;>Ms\܇ߪb*UR}dv",dE+4"NDX4I[E'Z>݈3?cz*iT= ˎ犞3zŠ#)8UsOOOg$gIzIІIav uUW7 .U +]$IQZ_V6DդTH `<2k+ x^"D UDhuI_iTMCK.B-dt5w֮+]8̰i촎;]tB^ ]k]áF4ׇE.a18nKCYq 'i!<-,v&ַ;$Mv.:H`W@4WvE kn'qT^`$ޕc{N>眭h1zNBjDӳFsYX9=鷾?)Qu@TG߬dTU{ϯcP]SUW JyvV nbVa*ibE}`ů'\]iӧX.Bբmb38QcTWrYBJIsF|-YܵTHN)% +i@mv#p!K޹*K1YJȎ/)-הљZ^Տ(1΄-ʕhj乶z]@'HtpK΍̬ }4']$hZ.I' &"WNGڮrY7Yecd8&yڟlӄ\@C+5QuX+%/*FQ (|hrZֻ;j$>D>`̢pfFaʻ˃Tۊ8lIDhYYN0Y+A`o/z`EFeA=y) )r:rH6?@![u A(`Z0Sb:޲u0_2liS)]}a3=z?>a{YO [0XΤbJkʇV1IM9?jijiɄvFd{Hb\_M{X!!9ehaP\MTucF?>%Gcgyķcܑjw=8|4+n.ăI[W:<;?J:jOZ{ՇmF8risNி֮pUMb9OXO qG7aq.]̀Bq\WXplQ ]ߑGN<Pu[9e\nGȈ4.[TzguTiƗJ~ѩHݽ B +endstream endobj 3040 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3041 0 obj <> endobj 3042 0 obj <> endobj 3043 0 obj <>/Border[0 0 0]/Rect[278.28 618.5 400.68 628.58]/Subtype/Link/Type/Annot>> endobj 3044 0 obj <>/Border[0 0 0]/Rect[420.48 379.82 526.86 388.76]/Subtype/Link/Type/Annot>> endobj 3045 0 obj <>/Border[0 0 0]/Rect[68.34 371.84 122.1 379.82]/Subtype/Link/Type/Annot>> endobj 3046 0 obj <> endobj 3047 0 obj <> endobj 3048 0 obj <> endobj 3049 0 obj <> endobj 3050 0 obj <> endobj 3051 0 obj <> endobj 3052 0 obj <> endobj 3053 0 obj <> endobj 3054 0 obj <> endobj 3055 0 obj <> endobj 3056 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 3057 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3058 0 obj <>stream +h[[o\Ǒ~8d9<}bٻb$` +HҗsfFd!fRu޾z;nno/wܽzy嫋^Nf}(sӂ#)%?ۋez}1/-]|},..K8~i3/kײ6cQi:Vw0;tx^Ϩ`VmW7ҐԏG`˽̖~Kf;kɼ jo>n/N _&Oui<}xP8P]0 +C$b( Fv3I" y<6zZ^Z&`F^ehH59i Geׇq9OO͓ 2˗>y?]6HU II7r@hdf3C vڢaq~xxۇo[}]y)ް|Z@ȃDa`yHDDb9?hgm;n;nلubl ޕy6>:;/28z/dR;:nmc(k:ZɦڀG_Zv5{3'Ky&rǻ9:`3tΑ4S͵ xksaA4Tg ?㧡#~'/S нm粄f7șYYmQòL НgzÀht + $VJC?Yfh$s Z# m&ZD۱n#@$QFi釋ٔDȼ?]n?>4Cgxo")eR/ش-{L0fFV ~#,'@҅OW3P&)ra4^H))EF MxU=e\Z(2|I=+,h'Z޼w鮬Kn&0~R5 9sP%ᤂd|X.KG%#a ~ןI~z! m56 Maj'YQ@ĺeTQt9m^UD;R8/r_EAȓ$!nSmS;5Eahng_ +wIެf +0C?MǑ69ORy>olM 8L)k n8MrmuTɳo@]](@!H͡Gm G7 sKqV >jQUӘY+P$;,0'SY#lӳ H]#ugQ6jqB3–$F,.rB,o"OV>pCܤ7okHa"L=P$ODnDuP$>>q+Bͱx܊&C 'G^tU/Bl b! +Dyy낞".z'/뛍_HGGͻ24r4Kj2t#rW&:Ԋ+{an≣EhO{Rf\΄W'R N9=b #mfOyݫ )fv`'C^+:cLko6"sB2%ف4E z 0-ka3n;/9ƌiھNTnҌF(#W}9:#I0خJ'#ٹh=sZA?:S\aB48[/ULQ&ט"okZ 4dW.ƤwLqOLm!a*Kd mU;ѡ$*D`W___6|.\]rh9qE^O~T߿ӠLLBĿ~`6n!&u|-^KEv4-b.>ĶG}$qx~ +$TK+wɵ ,6gh&ůj*"|u( aYKt3(۩hXUU87Q/c^r#O%PO≶xcT_O2!jYHbmFg4]nUhkT}T A022߮w?$H| Q|In)jd,YA DvmG^Wش]9؜%m^4gBJEoK(f$? PR'ʋ;zۃ!P%ERD'j,MFAMcf6 EB8O=U."GĊ+ Aj:ՙzjDt[ҔAp|qMgF.zaZ۝%/N>1}VwtsI7OB7 ]avkwYy)xg"[G9Ts(9K:)DˆӯBKܥt膠8o ZZ"%5]˧%,%,JꚌ\Tu6HV-T1`WFB򛋪~^D`DآouQeI>{zeIlϖ*[B :|7jP&Ր`-At^$hH!O1B(At5)q:8i +.J Aj85U|wD%Oi&w$AsѥZ= +t{Yx/7??VgW- +KZ +ӕ5.8]"/ӕTB@u =t|WoߝHR/CůnL~|Gz*xf7y3u<䊥d 4H'@B&|Zlwڍ:VA=jt{GvY{ ^l任O<a'҆ Ն!&Y"6,[š9%ZƝ2:Q\-Yi4kAo~UdVFBҭ +QiRMzzAj^ Eg"zjr>{*w<7UF/|F/ch"dya`_^#9ԲP̝Dh K̙bXw֦~deVGP+@G+M-,OZіjV--/pxdi-=# l~~Kk籴C9lύjGZZ l-=+ŏ>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3060 0 obj <> endobj 3061 0 obj <> endobj 3062 0 obj <> endobj 3063 0 obj <> endobj 3064 0 obj <> endobj 3065 0 obj <> endobj 3066 0 obj <> endobj 3067 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 3068 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3069 0 obj <>stream +hZYo~_ ţx d<yJd{z${=(+L(8ş>}9 ×ۏ7? ?o~o.{3aɃy!v~?"NkOc3gbIDiB4nM +ިL#a4 +˱MfGSE^L_PhA$R>J9n&+C#y?En-rDw 88 Mch@sX>*FcP!;Sy,yzćh)7}%|ZC9,ʠ5T14|lWW.q~ +*vIMtn+jP#Ubt?آme7(d` :.|<×Ka e@Km 3zݰ-uco]a|xOgܘ #N 9q8sfkЎiǴUBoSbmUv)P:D+ሃ2poV`y:(- 'CwFN{mlpFq-mM9Ig>ղTR i_O9׼/LgEIgcMcڵms5&ĬqD4[2K#೎Wmp@P^$@  +5?P^ +B2^ +~OTxF1/$8q~,l?s$nztAVZ<ݔߖkVJau8:VB($t'3E-7E-E4Υŏ V[L~&^5fɥRcb|TW072h_b)ݥ^1 +31.9oнUwW@(:9G: (K[էCĊDUYG?=^#m^D V%3ok. +E% %$җˣ9Lf܄ٌ%ň7 +Av\b3ݭdKQP׌ %=(=4uc?b5wh.pyWΩwl$" ̲Ax0VrQR;|3(v@I\}iqM +?}e1C}zƏM *]$cp xo} ^d0Ño2*Dg&guSWxCţ ?Uc.|][y0OSM1rmo)j\>0-l}r3o9B̂X\~WJ*5Qnx>b jvjYy`lyNb$i(/Kм o~ը/}Vye}{2G-gO:|u8!W''hӪUs^:'gUTm1wܵ=םUʼ)?f OZz} ^׽R}lE䥢Zh8x +<Jy~6Otfl0L8 ))of7WZم(힟FOOv) +endstream endobj 3070 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3071 0 obj <> endobj 3072 0 obj <> endobj 3073 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 3074 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3075 0 obj <>stream +h;يd9vy n]N1YMnOwM{Uˍ6)"#Egr>{ۿ7~w_},ӻgSYK\6G_bZm\R˛[}ږomeyA?t6-/^#ɬ]e 9,(q:`KXf c`K +UFXO!"\bf.'kɄ5Noe?<}e>^? Gy;0%!b( + )V\E7s]X쩭neR+!Tfpg +M)qMÕ6 K\˚by1a5'_}_-.ͣn2䩂wwٛJXr_G8?~>ܖ/GoHz>?䁢0KxHܾPBY>JQQۮ&i[=l-ޕj|EKRO@lGGmcAqH"tɦ\j}=9`;y'cd3Dj[hUF#7Z;6 ͔ AYx6z`jt<7 54P֫z[T‚ѿA۵la)`䌂$F\ YiB8\d25y)pA/h!@h#x +@HЊZ)ucXlmE M84,O # +[;>M`BD.Gt^$v-$-B.ׯY*AޛruL7X ##'Éga-IlP4al7?a#$HR>Yab?R6O_Kc >^C+ ʭy*pƈψޅ\,~؉7ߛ'?HRD'QK">ˢ< "aG7 + I>>SI *͌PqtI~9L"hb ݜ;)(e)2 և>v!ZUje0u +~s< pe*ّSvBv(4%޳D}AjE4vw1P8"004 ^ڊ7+ WuN(!lJn@AݹGUف jPpU6Y4&z5y ,# ™J3H}ΡojEv.%AQM՝v,g,Wj![q[>=A2b0Kf'nv3BS%VQޤڸ%Ov O:YQ&;vdGbP(4LleVJ7).Xeg^0W:+՝~lͦϝu޵W cЩzjçJFEZ{j}A +dņ "JY>5>z\3* <|2x(ZW5'K~r1omӌ5vW_} '3:ۅ#H8V6yfЦq-0!6I_) KČ*hή@Dӹ9KhhdN;ΊP ^2fZ/ËDi(@}*6S`jsO𒆑ŜӃ^ mf11);'ѮHw%LP1Q|1L!/6sވ.>̹X kys2W{؂a^ekXL)w\K:)1郤os[-D 3—5p:D6̓lbrj/&'DSu +T4HuFSۏ] gCfce/BZjs 9pӇ_zWbCX[_)o4I"a,t/2ӗے+JdnmjLn$ʥ,Txk>jBFA9Pð! %@fJ7)F%;M|Swky׃ Ih!Gix&fMYaqO^R,zaK`b5[:T:Q@T 2ی@5 3Qyqشr\ig: K)ly;B%Vx SR<)h +1cD='QF/׫BM0pޒIJ; ŎBWV[x_(2VMUX`5y);BsH`~nsaVН2&ޤF8ٹkX/\鎒+WփYcUd. r(&x CAp? EpOpSFhw D#6C +pi(:av a3Ko*Qog1!a:re4L/~c!(=)c +iY:bC88A{ֳgAE.G6($<| K0i+w8b]Ud.;z0f1zw^vC`*K2茫5LtL@Τ)GZ|)ű'+2! +w*skS +8GF +6@`j;E@;;/j-CWfMgzPS.qNϔCUZw٠xp|@9COg~DlvEg|W4_w*a[\8lgbǦpy=gx gS:w!tѪxq3B 9A+z2AZ-rG6)UAX2P=n;+Қxԓd2vag_cxyH% GEַCzexYaw \tqwO]Z GzY޸.sW\c9(xT%WO]MJ-` j'{y+j\EuQd3 +C <+z? 5ԮHD)bMUqrAY#ܕrlB/뾣;#;(0S#g}ǰSEX $-!\7: APϘsmsܰ_1 HVKKcldz7 .^qyTSPܕjwҽu8 ~/_ROwp VuA#_LPk=l̓ 7yzpWxL^˘?Vv>+H~P( +*3( +f Rt- z:ZQ[%# +Y4\v~̜ +ճߦCEY +$1ŵqP.\k9eC +P VZ嘀6.-vK5*fz80E[cv/`U1S⨝-H3*њvB!8f\{H$iQ\pcbtFR 0&WeuU-/u˛ ; ]|;zAiq9v1Mg*4]3N x&u}M*QqcN:'3)+ J#3|FjS8=]k#~{3xоWhۄXq8>WZQbDg[}yZWaoKOJ3VQ3M{c@Z,Z8ig UxE:X1nA˚x\TH`gI|* +endstream endobj 3076 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3077 0 obj <> endobj 3078 0 obj <> endobj 3079 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 3080 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3081 0 obj <>stream +h[ێ}߯$7`1@,aw5K}NlLsȲā0;˩*օ,Vn˧Ӈ7/<|xg7yttdCC2-n}Le14ݟк_y|t㏉ǃ-zM"CUMo09Fbhu\DH,]T46=Gi؏E>w*ߖ?Bt͗7b/9O3ŜӍj8)̱zxnuxJF~` l1܏CVcAW!MM6񳱅^xaꙃ٩їB̺  Loi^7O/^!X^~o=6/''#k6Ss*BN.4I(Mmg㽶sv-d +i66;/ +=> An+ %)8gJ Isz`NZ{1sfkqa̠A+Xwv6&K 4|*ɳ05~ҳ_#~-%v~bY uof.X;'יĊ 6Ȏو`RPّXt  +FZ1v +fA g.+MúI(&uv3ќ|l&f'b0٠hҶe4MWk~ zDRi}<8P2G>2oI gyy%tӈiH<ɑ0bz?g]EۋټCQfvԈMJIL2rINQFmlŸ('Bc˗ǂ|Kk83ϗ_=߯( UL?  rmJBzB9'-r]@#_ +0li +Qri$7]ÿAHrEP<(od&)A%Pu&Sxy>>Tɪ5 f7I% K77x[\ɼyY,b%聳;#D4G$d$Z$EVWE^Kh2[$`2;R -_y:suJ.&b۲ڴU{ۖvW?ڱm^4!:g$I=+ +e AIHҮCtPZejGg J?GS rHSt*=zs\=݄vS㏇ܮ;R>]Y#IMƁiaJ˵XYCsu|u֨uSL Pڥ{nHQ<8E5kpo+"bgsm{8  ZO-\jO:elu|Jۓ{y:rR+R貄(gU5OT*M"vqLolWqHbC|mz%.oɘSk&sdnCjXN-D\i +EW=rɊS?;gp rܑ#tA:9$*( mYy&]9ؼ+eVɓʜ^:E˛Tdv\kY(iQ+%?.uYwםت8k[! +eM?'dX~4RA^ZAu FG^ڕ/{1\ D;]RQu鑂enDȚ/K\j F&cHȤvT]PT=;vgx Lu#G]D`?4#?<q[yⳓG+ķS{bhi>iv<1p  ?,=eDSN0ro#Qؐ g=|- @g(##v9eUA[N'va(}n禸]vɈ~+;;+G7+2>[qěVuEYcCj3?<*%7Z?-`]Iq _2FMSV>iIhHCUUB>RFm\ g!s WYP<\GI F+Q?V{V^ᣕ㼙#WH+x@|2T]Q]^I{q= +Laݦb(Fw ba[qb 1._S(j|>?OP$Jpףׅ_=}?Nxo+z<{Kxkycs8imwTJ>z,\rc)E(q닃HY%Sj5zxj$*_sWæ^T< +}!ی.l66fŀr[یUC0z5OXg!~Zh5ǣ ?.yY.N^w1 Wc|X9o +uk`5;8Łȁ)nv%ǵ}~/QCV.iycdOoXﯳ"TJ-@ ++1̊k jPΤׂO`Q&Ǵ rjݣf숰wv9a4_5EWe #` %Uj x֐;Õ+zļG+EJ!#0] +‡=awe^]WasGKr)l(= ;YGawY+pTWq/TOXuUv:L|?wXܪT?ai[teadyOV6J(V>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3083 0 obj <> endobj 3084 0 obj <> endobj 3085 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 3086 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3087 0 obj <>stream +h[[~_ρWe12J(XKUTMؒ#{|ԹuU{w^9~=>?߼|ëo/|p/ve.qZ/bmRˋwr7/-߻o-Ľ3:B_ڵšͳttD)ffG&jnҐGV幸7bSZk2KvAM'?:N _&Oui<۽ةGeK=` DBP(\ͤB@7pM_Z29+6Cxu^hfM>09m $@nȸ/qS.sgdlLwo>L_?w0R;^M +4Uwddf3C Enw׻{w޿}݇w;Ⱦ~>No8z>-qzP)X(Ik@H2'tmmm;}e챰l ߕy6>:;/2==@jGmciۇ*C{,dP{"ӑ$sk4h5j'we̜,}ٚmkk5st2K-쎳 n;Gr2 (6&k9VS'KplQg 5+]q*aY@۹,a*f3.rIYmQ!˝“z@ hҦU>R,3yD%sӐZ#nuܟvp6R`H 6me4JM?fS9IB_"Oj\.>4#ߛ:}Jf2i(mbTsё{nƨc9QT sI` co$u~ gLO 7|jm端~;n!g;Tct2^oHq=Hta}CYB {El̐e×;ACEF;Qt z8s"d<6iKf_5VkHB7}_ #CߤTW[| H۽>Qa8dv9T[u$VOrA`% }=V '+Y4mvR$D[ +QnHu:.G;N!AGnPnj<_cJEDpnakנ·lO5.̀#mel<(Â-TQXfk?NQXnTQ?mQ|6EyȢ9،S/V6Z/R&!9P!Qxje/YVYgu>q<Qv{ŦcwZ4&ylOQ4PH|]veé +*#َN>1ѽw57f .sX'XG 4e=EdXw.#Vq(uZכr}ϐT2?P%_\fcw8 .3rG]n qȅY)%0}Z(a~{Imlq *URuעvPAȗӡn~H? jE [EN +n +_A6)()Ͱ:5n^,*TMAavmٞb}1ḯYg"KcLli֞fMLZ;r-䧖b\\pݣ$q NF'1 VPH5O'mL1 P77PKu=\S\YkcaOq]}ˎ~ØB*:5|߷"TdR}Ki,F̬>J81o=CV8D~ alCi5h:&0#*F˅JStu= +Gyfpc*|^cuφ;ԎxrE zdhġi_ȕ +‡&0֎aw +׌b&|2* K>W_,*;\;,=:&緻 'v9޶ݬQaÃ_ +:c"(>dJTX@]:u )@X9M|)Kʟl;8 O&q)(cV60/#ttrN :>Z5©(D4 %`V +ߩ,}*!ГV!u+q/i~Md=mþJ8)<@5F +<9nSJ DŽЭUСWS9 *յT9FT\_]C+zW,nHWk([ȲfN\;,|W细VtuV= Fv)5ɡ3]Cw-WH9+5r]C>څjl]-*TSJc.0ctAv1fu0f$~D>FaaSR*_&8+yYR鲍XU̜e*@ ^2o33c{0f)'§ps3 +endstream endobj 3088 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3089 0 obj <> endobj 3090 0 obj <> endobj 3091 0 obj <>/Border[0 0 0]/Rect[423.18 348.8 529.86 357.74]/Subtype/Link/Type/Annot>> endobj 3092 0 obj <>/Border[0 0 0]/Rect[65.34 340.82 119.1 348.8]/Subtype/Link/Type/Annot>> endobj 3093 0 obj <> endobj 3094 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 3095 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3096 0 obj <>stream +h[[o\~_q{H@M#F䪐DvZq5vCe3䐜=p~~vwg|qW_<ۜ=xbsvq=\l/&1!9e5lG.h]y~S:~4ՉZhCi)x=fvzte߀/kݖZW__#9 6aэ6L ?rct5s?·*|;G^;dq.Ѧ9$#Ϻ1FB" LqjU˧?a.b (3D|hly]9 כh8S 4/ z^R/b4)Ɓvh/i=crI0M!v/_ξzfȩArD@n?4'La+-\!X]?{}pgބa*;zvQfK~5NږۖfK{kv6F4>a<19fF ғH`࠶ +%L&٥NcpƜ4P;Bc4FLUbĠAb&ķlI xu hTnGJCsd#KWMߡG|#}a<@X']vNvff[`+145D#["æIBmGآPE/\^3 $lV܊q`R[+paԤ+ݴe;e"r.T  v,mSFCif9^#yXn`MM.M0bGjGeZl'իA @aCb (2!v(_ԍXB'NYI )2ݵܒMFmZX{Q>jfrEBdWʝYxB,G`}H`UJz/OPkzl[Kœ',Ȥk?PHB}>[\-yLS n+vk,[U2K.^H.>5G^QԤT^%'Sr)/JnKcq5Vpx2WW@ +-]_<]}?_Uλb4mb]̷Mt\e4 +RTul]ͯm|3ԞJ*.Iݏv >3ۏwHq5 55 [:_[M߭NJ/ݦ/?c5#~BWC|jT?T)Ԝ?E}S9}*l?T)j^>GO/Ω1v{>Br+XP\{O3|ٜ3lL)%ic'sX-XN|D'&m]F֞ba۹4umT*NAY`+֝|:_*U-~ 5ZD'@r.w0q-[0FKE-NB(p!Kh}3y-̗^Nۯs?Y+^bWxαLz +Tj>ýV󋩔 +,<+~ЧV~ʥ![x^JZ9J%L7CYy=Lk2]JwwC Z2V:lȍllH)RVV9Kg,j)BĴ`Mz +>ì-t~N +nbis*Zs*RbS}b4>U<$zA>P{<|,Kf'5w>nPXF9akw fdA;X^f@ geJfꍂ'|6SVa] y)V.QAncϪѥ#56SVJp^#>P~e8>,'u8QaKْ\8 p8 }p >q݆.4hY[>NqP}iXφ2.u >7NUvq*jPyќd`:u`W1i;WX +endstream endobj 3097 0 obj <>stream +hj```aa`j`0Ae +endstream endobj 3098 0 obj <>stream +h{y|Uյ:2Hf \ a4AƠV@@@ |h͍"U}V[BA8T+DS-$9gpF_[_h.MifݘJG: z(h&m*f,x6Q{:N3xZy^eh+SƏ3bCr8싲2ݫg2tұC$_bB|\lL(2 ]STj;gxʹ= %S(5Rxxp|B|p- RbP{Q@OR~iyFy%%1:#.-XP-"ڮefeR7 +(PvaRp"jAZ2 }j|Fy0h 99}-՜PRf^%M>uiwѬѥ3fbu/|gu4.IEJZ~YZU#fF#99}`|e(q-Kժ;\Ѫ҂N,jw3 /tʴ$PZR}q旧U#Z- lTUU~iF~QvyAh"1AntL6M*ejpJLAB# fiRQ?srjvtq͵F(d|}ܔ2q #jnbVFZ\FUqU KkajK TJʔa=K@NЉD +%.%iJQz58|*mʂ7lc 'OY:,DxJ Q /G srrN^^%cˆɞcT}GEW*|w3q}FѾiq&g8(-*,v)D=cfY\J,O7a8K,:pbV9Ϭf^,8^64ؖw3T1-E4tyPkȱռ)E-f@PN (k'O//m픢y%k!hOQ@ʉIuRݢ|QEޭHs;i +ޭiqvG=DGR94V!_-t^#xj;5VRBB< +E+ZԚ$w+@]%NmzhB5/:YBVspfޙaIjKvVմ@%i ZmH@juV[B +xJHe,H`wdOZZmb1VQq噱T"~T}L3tLc#7S;՘}ޔgccUJ])YR ?UR~@+]Q%|%Ӗ!ޅkQOǰcBaAQL5:(.1os 1#%0@Q˭?GEu:6 +zf(91i4UAo:n}t=2 j^NA#S'q4F/f/r\:X A;a^A^m=xY8l\;t{^b,3(GP;qS+̕1 25G^fk~ +߁Dz(Ë0ׄKbm!FyZ! F'z<^piQo}oGRURO#jwz<H/X^z Esƅڊ|g$ezɑ/u3ڐuke)IY'? +.,>,6`} 2[qiJ/`i掰-"YB'.k;F w X߈ò醏V9t;݈b-xm [gZݠf7--4D]N8MPҶm=}4( ԠtRt[B3(rO19i1sHlBhSek}tyuFDZ(1@_w`ҕGT5'Yaw%W@!H0a;f +{(l)OW +;hD45ew?wF>[`׋k&2<'W\U#Ŷ=aC}`oc]3XNpQc߭-K-4,Ե-h5GjVZ~|*%]馆0o7!RJ`LK{fԅ|'dbvwS)-cDqؼS>^8e.]!;a-Ϥ*0Fޟ1M4XJzu7෼M.k2ؿ6`3ڇdYw5hOk A1[' {Ѓ7+~;%`|o^D-whOYϫ%C#mo wI4F;-/D}_b}{8g2Խ t>|Cķ8tҟߏeymn^CsȁCЊ!;oX{=~ko ?\-Xl7W_\b.5 O 0ݭBn؉@ĥ|}1u^9l 7_iWs([}ӻ$c/M.N2/E^G'i3sI620}_h\:P3;6{cҙ54b>cԁX '^=AS"GWK,iZ3stv2GQak%:z:D0g%t2| >?}(Fxf(ֱd:::44:%tJ:ߍ\ڌJ#mOmڠMjܸc0Qvk_j#ޖos㑶g#lPz+9n="OXOD>TƶۡFj脮^BM`{!(mQFSS[)cO^fK4.okl8$vyg9C%W]%l*[Qy ^Wҭ|y>魖[ys\$gumj툠\uy$muY_Qp{ +IoA[͞usz>3sh[S<ȡV:uL>)\$-@_36|x>X6ly6\?H+6S6 5.6$8ߝ xz ц8@g!3=s id'%IM8|Qsęs/w]cco >[^dSKwIhnQO(7gJv8 +2]: p@;?E,JJg$ 5{g(${¦q}Z 쬗eW k o7tXBM}p_\Io11-zED.;qX{cRcWsYhٞ1Ovz{ Q t-5K7r*(AFmlJ0er}`F2ӷZyV_l]99q<߿lgV<35+lJwؔt1:PH{2¼ +vYt~0`|W@%NIqo<8~qt6s7ܖOf1$}mJJ" h.v~ BcV$/Tʷ^!*~$B* EyOeXM@?PCH{&mc1(g=Ft}c?3N}CX>(ӰwXq2>~?$` %Q r2i-k +m2\Cwc}em>EluC`X=gߠȫ}>"../@{]wudV;PӔYz- r ?LC`$j=6q_bQb X^E:1+:YaH7-\u1_\V9߷z +61ͺ.RO9z9 +E'ga֯w-:ى<ͤL׋ +]HS=+h|o`y-F#k*&}&97B]|&||mn؎[|r0aH~obL6@ SZ&W[CkY%JQo^` {ϬaO;mOӃf}P֟Ja,W ԛ@_=?EufGLGBDLGE3 8.#H0  gE~8.n@zDŽH }B8F` @0->ciHk@'dz YpeӲ+46Mz9ɬYo|&=zC!M:gWJ%v1na_ϹrO!Ƿ9.>K.ֹQxSfȇ{ mAc䛚zzu= DV*Aǔaք)ui\&~s6l3AGqES +T o7j:s]J݀9(EFQTj%H_{c(aZbҔ}țz9ն!}MuA9 : ? P't睧 +Qv*&J7=$c~ +<m,0Z0 >/{hl"|5sm^lVuBfeg-uVK)4OIe*eUvtvoF1$/3@>wMisgc}%:쵫 mvg~#bYSOn弧}s.ty֛}o3E" xĽI[[FC/z`CjЏYdk>rPwأD>o[e{/ӳۼٯe:}.|Zwcd0MWWQ/GyX;3~G>!B0[[k:eͨ R?oRS] .F*ĚD=Зr[<0(uW쯒V~3@֓F(A{ ,V[,%D[-='M"8Vqs!BckC +-,Y0Y- 애n4"ο _j~JѺ~6S'^|E'Aqv4ٺG3ofw@FCn<=,bک] L>ol'{g^|s8]d6|a5fx- +&Zc 7ciec+d,8YBS\QM|q(=Y 6S}9:6cЏ.*64Gz݊_{UfCg>"~R}Kk.QO.zY _UXd~^NE~>by˹vL@CO]1'~Pj+Etvy-a<{!BaND[T(N}xU\x08~;BEH ڗa?\poOGRsΡ'@; DO +<*>mټHre؇A}"N>ܲ5p5֩0m+2Xj7K+c\_h pin̩ s}L#SߙF}p*:1uZ6%cmq"~ٸ|:t=x"ܮ qh|6+F?Cב&\[sTliL,e eӟmjm+MtmfK[wr[༭w!Ym,d^ KFFi?hC;QNeLй6(zˀL}[Hs\]e}Zi5:C?xPfsBqVg?~ 񛬡|}wí?98-h?'N`ʰ +k.T9] ;`}j +)!Ow·n72A^{&LfCsHS;#ݾww"בqoh"uV8핱_cvVvafǼT(x.$؆$|ګ4´L2j>K^v??7D[aϖhvGVcNA#} &y&dĻ] Vja;{;Giw,;|fo:y׫?7xjA]:*4{`Ryԋ0q:f,F@v` ҾBMhUz7aNxE(|ç#~zs5PZߙ>E?bm sxuReؾy~;nbu yςF.0N6ߡZq9?j-FxXG/Rr>/Ea/R G 4!c:y*?] Ȃ3 xˆѧtUc0 ZM=Cz{>}}a8ƴqb.8ZmwEфȽ|!ni T߂=2>=K1y~|Si;,'ރZ_3*2r2ּp(UvV=5Zh%p{ k%Yߟcz7>B~3z3׏:v4 @-lc Z)sZk9s?-b.V<K#l N vA6a ^WT`I!+/&֬9Ǻ&t}'^]yg]T#hw*C_X'\e.mb런E d34;O3i`k} Lĺ¾e: X徕j;߂=&Le|>濞a_fxO t3ݪԪp9 ÞrTt=|Ͷ䷗bJ:+80 놿}+Ұ\VG^=Wn6ק&>Cg-÷4iik +|H:F5[ïk \٧C[8 >BgHF_vg(XZmj٦V؏T[1GPw@ykZ:oymRiEz>PK4YynT3N y'aOS4>;)㜾fOtk3G?W ]}C6r(jz8jXyMIr:h<{7—_wWM͗gc,셰rUy486T~kNӻnSA 3Խ @'.'[JI ڵui"{( $%@l xEkgOyL׺hu;2BۋZ#wOCzEIM*|˓޽@]CrcGCr(9Yecc;Pɕ:2sMC3(`0A/=d@pvN,%&ʀ_Q(~tiDe?goZс*(:tظ)1A_vKui%uQzh20vfJfV?pZOM?Hj)j1$_?їH(Lؐ/LHx7AKuJ| }ZlXg+#jeb)XeHZ@i'LзdUc5ÞƶUd}ml_Ǐ6mwMWǴUܔ6iRLNm5NV!m@D@[ tH $$UH ?VZ!"$3'B<9f93̙33,פpת}ݺ1* YJ0HSf'a25j61fvl1м9h2=tȴM`ԯRߥ)|ƴt\W⊃+8L'W137=h-Fk~JKر ORa{ cMR2E˿?x:5P>FصRO;ҋ6~gSdUQ$a=P{/Ifs@_eKzXMo3Ez-~#cՒtZ$$aڂ>}XCmZօn,.~5e$u)3Kor{SR-o6]KV0-v:Y0]adid)b#4G^8܎qzOnɛ$ -6yՖs.8%?vy&9cz,kvEƒ;LK+pe)cZ,Uz}>6ѡE#C񡡦Uu{;%ǹg&M8zն\9xt5on?󜝿6doV/n5ijػ5\}KiN,_i+|7î?//1[zZP^lx1ˈk;~Z=5"c)פ{ }Gc,ͫLUm8ad}S<)Ja)Fz)' i^hnt8diwgO>f3̚o;FGSVq4̦:ڶټŋL~q$vlMï/5jwc`EǠ?p4%X I| W+ﮭ8[U LJlǻO[W.Y|SS'KՏxa{d_'                 ~h;dpc"+(NlŎN8,=_M R]BYbj^#OdGsb)؉(Rp~arp *(go!!0J{3AJ,Ѷ0/ Z +(ز=a}mwZ Xfg#g'ӢB9Ba7?+b9xt}N_1y(uiq͠y[+eimV)L~6Y X kF9)gQ*:#滚Sbչ"w:¶vaL<;qm"[9#k:-r^h.%eu o/cYr"#b{ +F1*ڟcBȫgy.?ڌt=`$܈Z T8~ m⸿g{v'T; + +] +endstream endobj 3099 0 obj <> endobj 3100 0 obj <>/CIDToGIDMap/Identity/DW 1000/FontDescriptor 3099 0 R/Subtype/CIDFontType2/Type/Font/W[29[363]37[686]54[633]56[739]]>> endobj 3101 0 obj <>stream +hTOO |9k֤!5zgaZI,%ڬȏǛy =ϵVtJK8[p^iH3J.nzyF*B?89ym^N}'w@+*î-/s7nN|@oibd8.r#TIJbu]:-yee"G*+[!\?Ł!xM`Dv +endstream endobj 3102 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3103 0 obj <> endobj 3104 0 obj <> endobj 3105 0 obj <>/Border[0 0 0]/Rect[67.26 236.78 213.9 245.72]/Subtype/Link/Type/Annot>> endobj 3106 0 obj <> endobj 3107 0 obj <> endobj 3108 0 obj <> endobj 3109 0 obj <> endobj 3110 0 obj <> endobj 3111 0 obj <> endobj 3112 0 obj <> endobj 3113 0 obj <> endobj 3114 0 obj <> endobj 3115 0 obj <> endobj 3116 0 obj <> endobj 3117 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 3118 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3119 0 obj <>stream +h[[o~ׯG;Z;x ,6&A$EuOlg d{'i6YU*^*/~/?]~͏oyuv0~suvque'3]ݟi?~iqJ./nl?Ŗ9rY\\pxsƋfxZs𲵳3xQ"Rspׇ0; xڢ ZTM6R?Gdˍs`fKk=[kMf.q}8 [c4[WJfJۻ3ԣszqQg' eaL2d}tXzJ7R29+6E]ZMj:WP~k5Fܙ/qS.sedl4~tW㌆_AzRBxByHG cf;kQ׳=` +|Û{/^;{^7=8!A0Sv"M?p\b9?k-;.;.لsf%d_خLhg#- B*GecCo,xPy's+<@Arzo\ƱT3G B8@s$3)3bs-|}-z H#dx4 ;mmGJh,cwG۹,a*XLFbrV(GrwAwg٥[zÄ(4 $RJ]BKe̴򢈙ECƂO|jE4X(l{} WHDx@o#Bi(IVjlJ"bȶ.G#&¯lYmLB0ձhcZ}ycr\KR[,T2XCKc{'ZnfgħMGe_\ZT^*]K!+sZJCz+w-Nr2 )?>SنJ<_;|WwEʾ)N``+L`nnR-yYU&C^wD#b6FwD +Zv| XQ3tY2P +jUδ_}#]mw*/K#&쯕%o̞>Ժ\VR-(>f/} >㥪q{KM68y8UI |+ {Xv:PXPD4h7bDZ1\Z,u#BH ^ +S\m^j5@S˭ڤlW.s<+ꟾmA7 M4`:,cf_zn溓37v37| xސnbM]Q7m3a&lv'X36猵Ռugl ~uC%􋺷3+DH;E8mbxz @)/|*y'"#}C+0!Y>953V11cV<˩Ž ҆XPi+HM!;PDMpiGb[IXI4 5O0TYUt }P4$Hi1 |d(9A1[Gzf7F6Pv%]ɇ%52.p% pɫip!B 4bl$"]rHBxgI$~B")+N?[")~DR:It q _%q 9Y;[^G֬Bv݋>έQ:[pME -]uem[l] "QGyYk%m!\}ߵNS?^6H[ m<Wf77qUY-ڃ;kw$1^׺rs׾TCs$w7}RT[Sk^BH +>|C */_@//0M/1_X_3*~p}#^U_<~~s鿥l^~xr;26Í??nxiGf|l;/KX{'QM2&ҏY'<{*_1$٣'S$ۣ "Yދ,E#iTgn_ vՍS@!X{ +<(tB+.|+@ T}#R'D2%1x;̢Oߣ\:պ,nCޒ#foGT{B= G#~3!w@/ !wTwyP:4_deu%;2vȘBtw!r` c樍'PxKjR%ǯuO yGCg3-y]]?9ŜՐ?Jdb7mҗɟv̷,GAztq!Xǃ $M`qҡE5}LAYǧ_dI_Ӂ1hK V(I?[M9'ϟ )"Y"8:Q_ +6auX\B P$VrJ_C~W?Wr<["Y[y+|9o}%G{#VB-|~-M4 [ ? +endstream endobj 3120 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3121 0 obj <> endobj 3122 0 obj <> endobj 3123 0 obj <> endobj 3124 0 obj <> endobj 3125 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 3126 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3127 0 obj <>stream +h[Y~_GIJ 8YFv'+AXfklɲaAXMźb}7??noo~=uW_>?wW7wwzӫ4)Ka~Jj&Rv{ygW׳R#JwV)Pt8\٠VG.)i7erYõ9t3ñj˥)<^S;'S4ۘGNKsZcXw_"6cj}2=ey| acP~@s664RӛǫWEBdNہ~ssC/+SU5.f]p7Y90?"n 7AIsD(un&񇗏M7_?6LlߣSjEL:#?M``qr V7]7XNf0@0ǼLpjm_!*T->p!x՞b3ᔒ_N)Ѻ.E}b^aĤ1QJ?GL*y9"EɶrŒaAUӾ?說Қ۔}䆃38e}B26NԜOyZ4b`(Xrt~ +4dl8,,!XDOdh9o̮tI1;:oa]~R=o9]U׷D*'>!a06C8.\ Io2nF+VnƢ |ve-4}Y"Gy2#ZƦjΕC`>Q9^.d|59Kq4OX/Eމ̖|ka' @6&ڶde(Bg m਴Mx[*n\mCg~$aBM. tH9RhC؀Wx|7Թ1 +P!ulhYns~tnbt._@hv9B7ʛ3t F3/u^R%,Wz[@՚=]CvG; |DԓD#?fmE9؋ A +hfhlE'7q Tჱ;$_bTvscP6rN 0qWz%tefRC' o90z/4JԞwoNM8PEE1>v%:5r]N훲i[VBXPqJJ;>I0 L%pI!ͼᛎpzi06bC8B%3C~匷|먑̈eϽ$ˤ#jgz5Y +>[+&[ pM9&CU`Ws sB\=Ȭ; 0(`b!em4&Quɺ. d헻(.Q-紨Oe+Ljnh3j)gmAlf+:Gmml|6w +je +dCj *7H7'9kd{XAhDmnD &hÚmKBifHFN iE4Z[,,0M^ɂd7 I1^ +‡PȈazqc \㖅iic ϻxl4d3^#+~{l!Ch;zx'%I乙v U?*|Ի'|zW==Λ ǎyA (,݂H@mEJ_l mm|)rh:p,|l˰"9`Dwf8#ڧ؈bS2}| o/W"_u]*vI׬uԮoFI,]N篧ZxnW\wOh/%!7{Wv-KBbUs~QpرHM=dG۶Y߮`20VGʿ&ʹ%W(AԾ$;_[K&:0_]zݺZZCeZjrb]Ѯ쉪BiUjTR-0&%W >gE;ҖF}dgYBS\2kُ0k'l|߬tAUzoSY5ToR:YƗ$X+MuN/SeEY%3m +endstream endobj 3128 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3129 0 obj <> endobj 3130 0 obj <> endobj 3131 0 obj <>/Border[0 0 0]/Rect[344.16 445.82 476.58 454.76]/Subtype/Link/Type/Annot>> endobj 3132 0 obj <>/Border[0 0 0]/Rect[344.16 212.3 476.58 221.24]/Subtype/Link/Type/Annot>> endobj 3133 0 obj <> endobj 3134 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 3135 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3136 0 obj <>stream +h[[o~_1va!,8AF@>6BYq\ș]zC~<<ZT11ۃzqQg' yaH2d}hH<66PkBJfU{i7FTE-\Yf>pcZ)HȵR][16>q<~<0+ N?{囻λ] +4)ȓ +矆77#rp%F\ _x{~Eߧ/a {ϧ) +3 ! ҰpƐnlGO=v2fP4|vyأ<h'OfeJĢ*OQtԓMcs-i}O ՠͼRL#("hXO nlR}:8/ۈx96[Up۬@}d\|9 .ct0X-p,S܋_>pwGÃJP릀4gI\{q#Wq/XXF?L4ArtNuD<8"),qqA>~0Ul:96L=0fK3GOtVf=Ru×aν aVn2pDʫ!pe5\ۓ,Y2ELP#sUQIc0kt3hwQpQuǢ]][=7 EpJe7|zkIƣo9m 9UY:=(ŷ&34ŴN2CqK{B(-ihcgT뎒W=LbKddKhPMC Aek";$Qn EtKrGV/p&iÆb*"n=E]a m*CVKOż"J+WjTp堂OA=qP?f9.|SC]POcD6E.R~4$/!wi^O2Cք3y{.9܂| +Qh|",3T BZ>YG,dB^W6wXoҭ3mwAR[w޴>ջ5,O@-o׫)g+zkF:>uZ_I"u~u7jЯS^cw+t]$Kftt5/Wo^>r9 ٛitc57>y3@~9Nv7;ixq}s}jR^ͻ)N[l 'N+ׇ"OOfu

{65elJhϤ~v|)gKKu=ȖT)PPm% )NϞ{LྚǛ$ Yt= آo7-۴iOeV^DtOc%>;J+SZ] 0=L|vl_{z+ٱ= +… ޳+\} + +ct=L͞fLvl[o5׻_JaEwF*[+6):Ij绬/n}N7sL$S@c%FQ|1$FĨG TZKi)puTN#gz}{\cӑǞ=fI~e0cӵgO>qzŧ{{$ӵh߿)D">[EZfֶ@ab@abZ@23= +Դ {UhKW%d*(\lWKb.𮪊 \WU󽫤LVm6BZٞJv/]Hٮxd++]=ݕY^Iٮ⅗Z/^}TgYm+\{жݱ3o\ѝ+1[Y˖!nikts0{"nU6JܮV{Lɕ=y,ᤕ+|]kT{Dx1\>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3138 0 obj <> endobj 3139 0 obj <> endobj 3140 0 obj <>/Border[0 0 0]/Rect[344.16 632.84 476.58 641.78]/Subtype/Link/Type/Annot>> endobj 3141 0 obj <> endobj 3142 0 obj <>/Border[0 0 0]/Rect[348.6 215.3 481.02 224.24]/Subtype/Link/Type/Annot>> endobj 3143 0 obj <> endobj 3144 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 3145 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3146 0 obj <>stream +h[ێ}߯G)6-X F rY FV]gH }N4+;GF3lXbxX{o뫛oo?y}8W|w뛋3"80i$pbpsD/y|&<&.h$.MR-eK٤åI1sK0#TY|q饔z[9! چ!F]*gX(ZG-yć{*&~yЅЎnQ6#1Fh 3B!\Lc'~LѾe/ܱ|[`c\|~s LvѺ0R9 o./Bl0ʹꆞWh1Z-cUssD3z&0EgozupΛaPEek8p"x`| ZjOwX,^y|-z. wPl23) Ft6Cc:8_Wv}Ae'e'e;|iH]D)|cpD4 +͎S˓ ]>E\BqO6R+a('j&Oޥ1cFkq"Ռ`A84;Mxv l 3& T_ES5=4b3=Z? m_2O9;f']byނ" C1:Ec12uR.GG20S ʬ/JH)E)cxe3a g[Vm)؊hn8@tbq.RL4O(ʱm ɑ +aOALOX?]j?Mo$vL?/Ӡ?AfDybZidjH<KW˜Ⅷ3Q?qؖ~2mDQWLR#2򣔝riLe'j9EPy,kYUm ˕,x(7E/k {8 "ΤZfE&)0Kg tp#ʰ-m[8y 8(6n{myV = aRc p$Y > Dp,,Z= $$bxFe'3S;b ed.ni)H̩'jg 7Q} /}!MjRSPhT\Y]0FmǫaH/H'9 \ 1WEX63_ +>w{ Lׂ:gDr>zvMw=]%>$2Yix͙e<>fxs?|uW}woo=ױh0Nj_T_oo:7o\5r7Dz A;_at\Z `!56+a]5.c8׮ҌVm̋.-Ia_2}@ \CpMRf5#{Q{/P[}s}V̂9۾ٛQj+]E+pW tkҵk +着ueͼlkO] +:o\9Esm>b],{Z;v*!=xT3++{ j:p3}w;wU_»ϗ2jsN™nSɋ(rJGW;T3+.Eކ1JM#]Uo;dEo&4;oo]fvt/GO lt~dv\|얧j,C}Z#m_jl>8mDV9+cZӨ(VΈCATK>ԘBcptDubE?t}>*gZc9;]dƔJ)TgIYK(\BekF\ 31xԎ6BDI){Q+Ӛ5OdsOL5Mk[=깪hs8*Uj1аY3'&rrFڬ䢐72s&ILz۞ög1g0+aTE1'?F/Z3h1W;_t\V`E/J8 'qp<U$M&Ou;VRn"ȸtВΜ̖TWW!Ϭ:Z9PD%ݶuWI&ފ :` q*A^tYʵdznb>}y#t=Ǎ0v@v4]J3n֟rnn͓FB8[=.XIWNAQ/&IT>#&36'jEa '(La_/Uܮ0EuEuSjr6=TZKne54nSڧLOj2վgOStDjossc-lSH1%lmo.vU2,7f&'%j{%|4_-xJ'3T^We`Ɨ$GxWV;$9y'`jIj8&=F$EzggwQ)jfqʱfq94!L7OZhN,{ŒjY`i䷖AvQNB L7EU{yjإ +Tn% ,f/PKپ@5ZBelϰm֛ӒliEfT{jٮn/RqV7v,yf]WxWUwȭ+PM=:/XU +KYU[UxV+&<ӽ⻺LxI4鮉f=kYWzL_]%Ѭ+++^]%ѬgzSWx_2ѺK[_~rcn'͖;yl6y{fU['!5mg +U$¶M4VgD3R&O-D]e1_C]ڬ\:4ϕ%Kϕ[EG +endstream endobj 3147 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3148 0 obj <> endobj 3149 0 obj <> endobj 3150 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 3151 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3152 0 obj <>stream +h[ێ}mޛ0@,`a4XsXdw&6,8FӼV>sw^ݝgϮo~_O/_9}x^?|vsqnŔ4)짛ׇyzy0tsF?ͳOc0 *b>^YpV5MQ9|,* +*u(tSODE Vj܄p'` ϧ5.G +]xd+z,}͟_M_vɄ\2=ģS7bXY e6p•!NZ4%>^EK/j.)jj7-"jRv[$7rk`m͈C(,R&.ƺ^߾0]2Q~ ܫIvyաkXqӕv{^yzO=m,^sޟzR):,57`Ilb /t/eeeglRrLQ +f^,2y16$X̜Q^Yr\6!1a *ϩi$M K/0OZY*gweɎlⲳYI- id\y; f^xVV$jZgC-X.M +qp=.-]Ï"%_N%N;3;#-3eSpuKĆbN(OZ[;#W%*iIPNPh#%7,Y]?zoP_% +k +m8 7OMK +2|+b/VBoV-b-zS0oԖS#\gsmQܐOpC1ڼRVUgD[OGbv6YpWRj( 7`N©mpPƖR#/xa5^6b=b{zvESkn +ZSljNI7\|*;WfyQ'.Z+~op \eOS.p GU\. vrsurM6lwKjΡ2z2vG +FtB|moM6ڱ*!. S:nu2.:޲Ⱦ򞞏&nX? 0X?]ԈU]e7&z;AGCCêztC˝ 3 1]}ne,c՚Ĵ +렻R)[T8z%G<UB9jTR `__:ƭ7UO<푔\J&>v7j [R~C׆ZM2m5!>=>Oϓt<>cut',qxI. +!ubӵbu 2?oHYY7cߌuhWś17[4UQoΆ -f(Ec*ܨ6VFnNjaly*un#GlHt~vm~ҷSaN7 ㆴ}6S}}}vt_s%uӯZ6<>Oϓ>Oϓuk]3]};}}t-axIr!ғc}tt}(q<԰+6N2?iHYY8;ӌN3ܐOpC*ҌXQڠC +ռ**Uِj +rd4CKE3 +ndf @Xջ *pTtkG+fq6ުtB-ƭ5EF5\*4*;+4+Z\"Ш U*ШU \ewhtv+op*4䂦7N+4Mv]VwhpUߡscavZm6u"w=.[}xA7GS}w“Wϣ[U;Pܫ:۟=p^鍏izQZivM.B~{hpZEuh;3We`kz9`K[Wg&Zg__? +endstream endobj 3153 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3154 0 obj <> endobj 3155 0 obj <> endobj 3156 0 obj <>/Border[0 0 0]/Rect[342.96 654.8 475.38 663.74]/Subtype/Link/Type/Annot>> endobj 3157 0 obj <> endobj 3158 0 obj <>/Border[0 0 0]/Rect[343.38 220.28 475.86 229.22]/Subtype/Link/Type/Annot>> endobj 3159 0 obj <> endobj 3160 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 3161 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3162 0 obj <>stream +h[[o~_1RwX,AF@>H[U!ۉ8ȿ﹑Y5v&xx.~ý]\_^ݽz~?|W6_n../Mf˓ Q0Y97f^mj.P~n ៎Wꄥ\i)x2{^ +喁o[,]Sʁ0hG8c-o1:+-2k]sWP6C :0˗4C1q'~n#}Ӱy|?0cm܀f3E؜\9M7ۍXA)L-+z^R( BEa@uh/mVFUrII{ x7溜?!NBwP4#Mo LuVJX n.zs͋o^߼;Lŋwa:Ԝ&;8& +Ykz5M4{)[*[*X`X[mSs ^']݌!8$b9X*kc,ρؓ*TˀIMZ`9z[U4сF[UP8pԀmT@30cIxו"!rmウ` = .5^ +m %OO93 l I.vNq3-Q5RB(\.'VYGCZ ! eTJAS)ƦaxŲag,5 +\b-BvSoܯoP09|7H'Gb@* GCl6pN6JvAρL&4\T/5[W˃U5*v1i_n nӊ VY2዗=2 &0 }+WL@,?i\ ` if~C!7! oeB&Sz8;@j =9(R% +QQA&*6A=M%lkΆ =@ъh^y^%~7BG&arrU6찏 mD`"#uJҖBlLS`aIjn0ϷPb + Gvg'- ?-\[[2 1ɿvfy%5՜PK"M+iʂLAm38D]7IUypŲK2f}3?H:k]P`ש =3fʵMp.D0QJ-hg_9g9}Pgǖ@&a5"#|TC2LXKD_$ +/C: $lh`UeȐ eCecǂ\u>[ƹ.qČetEZ[v7TC+.4FP4-X<?Ǟj}J<ñ{W'|S,o]6{T3Nwo 3Uյ*GWU.au8dͶ]zvr@Ya!ԙ:UOpfE~ԭ߭8ms$܏6m*1m +6kθzS=۷5ֈv-W#$Wcg ?f2+=Vѩd Md'An0<(!>s?} A?v[_ A`| U"N ̊/RHC).GiYS+)gU*GQ="ctgou>aA{ͬهs=rDOyx c'C=^NQB:rjOQD=Y&$rLP0] cvre,B{d9H{c_S}a +caL.8fv1kLG>djaA<(G: +Qž8,˜Oj|Ш>RQ}B7|bճE +tUlJ+h<8VhđB#.יIġh": z$]@Y[ġ=fp,Z#fpdnǢN|ߚjFwAG-r@-B}p+O i5>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3164 0 obj <> endobj 3165 0 obj <> endobj 3166 0 obj <> endobj 3167 0 obj <> endobj 3168 0 obj <> endobj 3169 0 obj <>/Border[0 0 0]/Rect[426.78 183.8 527.94 192.74]/Subtype/Link/Type/Annot>> endobj 3170 0 obj <>/Border[0 0 0]/Rect[67.26 175.82 129.9 183.8]/Subtype/Link/Type/Annot>> endobj 3171 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 3172 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3173 0 obj <>stream +h[[o~ׯGV_ +(Zi!t"*d;f8C agpn^޿>\?y/]k==sՕtuw&|lmRvzqgR&OW{4~LҢn~vg^q~z ޗބiUv +ӛ=rpeqڿĨg7ki[n[nY{/ cg]Fܬ/l=Y̬ar܁\@H`۶<jPxZd]jmP ̃jIjGw m-Ks0ؐ&M 4o323&&&瀥+ iF|=aG\3SŎ{WG9+?e,ɮL FfFhdKrwtgإ]DfBI8 㪕1BKmfZyD&sS[ +n S^- ٻTP(l 9gG?V=<_VWzA?aa%2TR5mחIYNݽi_vsk0)[M|Ѽ2 hLm>W~YB(:[N>;6k%,#ȟ+o +eOSEх@Ԭt]yacGJCVB>0vhļ^JPsD;+UCZ^95.ԛOdPWΖ զjW|yC'4B=ܡÆ٩۝J>{%Jb,|$]ȇ҃ԭOI+Pz6y; BM&FfɺnIѵ]V-RnȑB~ضnrŁCNl2n̷z3e1_[meyAd[YKcщk(_4,DYzӡR `H3$Υߖ;R +t*ee*PGYnZ^]lKB=1: U" ‚*"Ja(R.4 &‘yUtb*8y`^dXy*\5UʠhŘmѡ& +~}Z^7"շa+z'x%ES7 E製)&r<1&o!XbV}>UO`'U#U8ON΅>X)˩Hp"icDU$XH>XHЩ1ԗW@<3c/ N}y8 ZIZU ? ճRS0WWS +ԗ(tf ricA֭$50v85m{`PЪx +jpPi6'΂6iv%7'nJgiPSPPsAFfi(XXzA 4.$5^ЦmKrz 4ԍ1s0j(-G`f6NoHۺW`TcF;keݧ Q;'0FQ}`.U3Qr*ǽ+`n;e3nm1T7PU}r4!f3>w2A 7Xy͈ѱV-zd'rn`RCȀ :mGk3#Sy# sGEZ*}xKuB9I9tl1.dS>2hTA³zY-juhv,A-`TITAo +,^{2 +|J3skhi qh3ٲvo8Ø+ӭ_Ln#v PΘGp]qlc~ +YflZ0T)SD >_@~N^^VOVCU|5*\j]lv&ftLNL)b?d:9D$4bc{JЧO=}4fUs;4:(q F5cE3X)Tg|SvX.h*s<&7h:B hVHrWUB)>(t//{mCZ%LBˇjP[1bV*.@T|VnV{}XL[ɯK5ٜw>\lOjv1u$1-jx 5#ybb-+7aڿ_&Ά>-x͓otPy:Gy|v^~>p~rspaQW-\ +WwwasNn__?9Xh ѭYMQVO<Cg%G9o8c2A/D*|"Bs?7b$d1mfm!5t.+J菠ezV20蛏JD a_ :(t}/v݁/B9ȦB:rvD#Wh]G>BJޱt恝r(uƮOHEmB P2W7NHB?oʶv$X&=㛺WkƑBN]b +ltS y+Δ%t0wc h(-x31G '!e,+Galq⎴Um&bb޾Q34s9nnDV[HZ?܆ub&ai:l/P5B':~ +endstream endobj 3174 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3175 0 obj <> endobj 3176 0 obj <> endobj 3177 0 obj <> endobj 3178 0 obj <> endobj 3179 0 obj <> endobj 3180 0 obj <> endobj 3181 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 3182 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3183 0 obj <>stream +hَ_1lI@,#@-SWʑ,!\NOuU5ë>9rZkMQgDN·f=k<c2z\C9R2غ~J,ddak*cHGp۷̟;a}_{zvJ4uITJm7!uU1R/gp[=iP6Tlp?Ԏ67"M2*7Ee? FLP2o?{0]}e;SH_Lhy-矦ك)i+#^fɛo޾xuaz O ҳO:N?`dHf3btxE_mVPD[iz)cGcGcL2Zv9kPsN(,"GG<3}xLgFkA?.ze.wplP:~c#n6tzxjjlli,u˒xbney/St`;~suM6PM!KS?9#t5&_sIPgSs=TWhe\ŷ7{;(85%AQlN]7kHpn#pMdu\RaY(z-׃rhXlXUh4L"ߚ#a I=EK茍i IwFP뙺@,BFBOxfy䮫BUv80!x! 0!^*?GR#@*?ITwik\J/ʪz@8pαEaV:GO{kp;GA|-2ر-?aoa/b$hHB"BUumq p|pUΐS)9|li paԋ&t3Xx W[S(&tPElj!B#Haa3i}5P3ڶ\Sś#kȉ*"{,^Ʊ*gjDO!6}Jp >y0"Z)豳殺D5zdPe|pC1ӧ+C%AIx.y!hVb|ۛtA67WFidxW|8D.vf +{󙷸|^ޘ-dP9Gz4[Oמ`RPQ3@\Ph|SOZB>'vY~}܃qkAɍ8OMZDמo>Q">ܱg$)jx\ .5([yQz~= _ +.S9Ζ"i깘,!SհN}Iad.EGILko)5"n]+srh_O Gztnަœ\퟇8|upc|K] Pr& \̈́-/*>m}'顨ԥ:55\?,č=5Q|6?WCjZ-gv2'C#Ke[WR/` 6i7S n7[:EZΦU)&qO\B%V ӱ +xR*ܾO#Y|Oܙڲe[Vhяʀw +دe藞 vgY>1FX%svn7ށOb}DOZΜp0=3 mӒiYG%:_YR|,N=c[XyF@q$bLbKq1P.(r2L@^>9c ˃Kp)>_Z-clYm&=E g-ҧϮ7ϾyËô]]_o~}~'Tc釃{q~z{ߔ, +U Z}D8Op"#XHa.:~L;$H"*Fa/eiC h3xD[# Ҷ:+,5=WКg +L/$JUV3&pO2lUVʰު`JO@6*#z ['Uz Ћ~3[B~+"8mh3xL;gf@G< |@GC P0Ct-Cu3tmСsjlf2pDc>lDA# d@G< Dcbȫ:r+*^r3x$@Gr3x,wєh3xD[#  `D[:-1m5 6ǴS;5|B&࡯yU&2G :C "Tdl1"ho +`+cutAб:Vi}9GGбe8xDY# .?mh3xH;heXBD$4}_Ё x&\8}̅uHIԘ ̢ @nb qn=%8 +Nv#!z=VxN ѳ=ނr;V縳.[,z,aL1 ͔XokCɈ}cve=+t +endstream endobj 3184 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3185 0 obj <> endobj 3186 0 obj <> endobj 3187 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 3188 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3189 0 obj <>stream +h[m7>?V/7X-܇pvȿJQ{6dИZJzTR_}Cw}}uW}ۏvo_\_{yvy*NF(NyjC;?/7y6 C=7rυQEhm& g qu&/?7ۼ@cv?&uʺs(机OכRl'X!kEd!/^tl R2)x[DR+IS SPq$ S,Ճ|j̸ RJYh6u+cK?]}%T toJh4,ہ>`F&2 ++mkQ~Oo?|z>Ջϡdzu>A{)L-:"vRX|NLӽe'e'eNUEHd nI +* 7 \NдLQXcN6Li(Fsн5:{"Ny'j-P#!XTU@UMRBL]P +k^X"ÍrԈL}!Kc*.K>UZNQj0!Py<=eeQkkdP<\Y˒WG\l 0ϫ^E>J8J%AwAG͞8CT<^rar3p쏭GF+v=֩9u%#}iirPR d vnC~g]MV}<5]wf~.)p5_l0~7I!PpH'yNa mCh P<$r. +*H|[]㈷ E24f5t=LIvU]MW]Do4Uϗ&y+,gJYi^NcbU䶟]j$#N2 cxF1B/0)5y=\5Pu>?9JYbuR"$4ΤlXxE^$>M<2TɓG714  h9󐸝g~e8׌ʚXfT.52*8ސU6]?9܏S\}1_SE]F"XmH MNՔ[H"OuT4fFw]+JX2#L|cT̬!]t],φo:N{nCIƮҡD({e9u.2>%8:wAt0([AcucG$F9ɝF+&7Y0pU :^6Xc/qxx9-9 $qՈCSclr 3RQC*jJE3h&5T4zv``{Q/vԬ0XzMFCǢs<56XT2W7W߽\}Cw}}uWݷ/_lBT:ҶSXu7@¤EI'RiFv Oc`.LBR>MjG̭5Zx1e`CrŮ͡4hsK9yG1yi0K gi^j[Yyۤ--ZTnӖm勄kG aCi!a&/r( 8dl’JSK/ {Kj,m mjI~5jh}Pni IW,/f1 cZ~Ci@ZjƱYP,p]&k&H=E'"Д^Д#[_e\R/h0!\I-r( &vm%m-xdnڠmo#7b)("Dm5`Œd3 sL :+MO"JbjvZ'lk#2 FZSm`@DΟ*L7cr ݂k ϵ6RCzcIl6mR[r-%@>57'>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3191 0 obj <> endobj 3192 0 obj <> endobj 3193 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 3194 0 obj <>/Border[0 0 0]/Rect[162.3 424.88 265.08 436.04]/Subtype/Link/Type/Annot>> endobj 3195 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3196 0 obj <>stream +h[[o[7~ׯcR@4/`&-mC`^8IY7C#YtXNPϙ3rn8:"/fW_wׯ_.Uo>ޮ.[ެ2+ŤcTh"ʨ76ƒAm1x6mA;<)#,nAC͛1X]eXM|']cԕPuM_]bUo*%>WY +?ԵkY;lі[DLJmϠQ-vmFbϓNZ}-*dV>}ZߢUz8`WlWq*1)Շͪy1.uZ=IT=4r+ .] ҏCydž]&YMљA[Wx~wW>gI3:UM⡫zW820Puj(f;LOׯ߽p^}@>Fô)dϔLTTVlKS![yvvFBJk k5A.>"mQ(jY[iIH |"tB[LB=qik{rI u2=mQhgju`0xvG td7@͔r'!~FNT +ۤ1!Ƒí{wo<췢#.g=2e.Dd3-Jy0ɻF(!@$#="fx + F*U^el}PH4v7=;| D:4=x8IQ 4tX)>-aϛ('%ƭӭāNFF9TyF3Q-r2h8٬;dO h;2:nD6ZhIJ["*HqyǾ3r9բy21g~B!nKYνRr‰.adwml90ams +^/UFRq[Ф\&9ؘ2ᤙ˧z${Lnݤ#k< .%J>`;#N̓]Kr(p>f/MٙO߇|;ck1x`!y uΘXT$F|r|2m=O!ɡjc.%]]7`y]Bk!CK: *B$%OdyZ^\@H,cŹJ:$p1.=t;д&n£ڇBˇXCPSv(*(o.46r/K' /q +endstream endobj 3197 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3198 0 obj <> endobj 3199 0 obj <> endobj 3200 0 obj <> endobj 3201 0 obj <> endobj 3202 0 obj <> endobj 3203 0 obj <> endobj 3204 0 obj <> endobj 3205 0 obj <> endobj 3206 0 obj <> endobj 3207 0 obj <> endobj 3208 0 obj <> endobj 3209 0 obj <> endobj 3210 0 obj <> endobj 3211 0 obj <> endobj 3212 0 obj <> endobj 3213 0 obj <> endobj 3214 0 obj <> endobj 3215 0 obj <> endobj 3216 0 obj <> endobj 3217 0 obj <> endobj 3218 0 obj <> endobj 3219 0 obj <> endobj 3220 0 obj <> endobj 3221 0 obj <> endobj 3222 0 obj <> endobj 3223 0 obj <> endobj 3224 0 obj <> endobj 3225 0 obj <> endobj 3226 0 obj <> endobj 3227 0 obj <> endobj 3228 0 obj <> endobj 3229 0 obj <> endobj 3230 0 obj <> endobj 3231 0 obj <> endobj 3232 0 obj <> endobj 3233 0 obj <> endobj 3234 0 obj <> endobj 3235 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3236 0 obj <>stream +h[Ko$ W`M-Fl @!ޝݙ!%R*ٳk GJ'GRwVO|wfUV9L3)oBT&L1:elWj45 +\:j +4 eH}N+8xQrXrYۃWh __nf3ExiR'biv[A*ͪ*JHEyV vЭ5Y,Q$xetX[:oYmRvmk[SP 7Xn+JS*$0Ҧx㿿w|z>Na:~}9;]G@SXG"NJg7L/ԶmK(=oUUFh95' <apR؝Qs0e:TBeno{457( z [(ִ]8R{؝a|  la6脊z8آ\\1-@0!(wKw.0[9$Y1,Zp:#e!04RH؄A>n^+VB zZtnas+#b' v=HPng;ۊ}i%) 掋D%$y6$5MwS]+U1yi VuKk 0u].>}L42yj}&XԀ_-~|tb ,դ\i@ِh~I bVZAK$ol }H׮oAew2T*oGe\t3S<.M :D% ΋r/V8v26bG5Lf CI\Ӓ$ okmT9/CP{h@p ΗMgkQ 7ÑW:- :ys#yu[9EGV$>epҊe+ɆoOlQves C˿y1H^!5GbGNvBƫD܌54 ?wMBA!aBbU(-p(ot[IX\=,30X] +KWuR7k[_ N7ZkMp `'FEaMX>7DNIXG{ ax`yWY1%4=M69(x#9ˋr. u~]#aC;|K;gh6זT ﵢp-\Ȳ%}Ym2 d^]@WٸP?L$g9f*,_kRZhTѕ_X3y-t P[^^$u:VOx{~DǐHeBypy=~s^_iPk_Xsy-t H V% 9sQV&u;PlYL mw(6I pbb+FoKoB1ۄe@%w AX W~(G}JU-x<~*u(*UhATDzL)T3gk毴oF׸i㹈9떥jX $8vȨS{5/4Q[hXDzԖ}R[,/S+s]Lf\+ RQV@Qj6ɉSIETn+9/Z,2UdPJ` .qW,qTR/Z_zXC_ +/_))_j@N>lSE+^Raowh,i,@&KE& R瑙B\XJcpMBy) pRy#7L.k)ًnExxCbLb2X*2XL$$>$L$W +22GoZGgP,ѷ+ZkZ+QN lg}&\zKud5~x,y|y,x,%%<W e%Ke JLUOp6گ.cxsa\#u?ګ?<|Y c.xQޠ[*7[L䖊L"3#3"Dnĕ#Xsf3ejP;L"]u2ׇXmE"[|IKEW,7W\+W\++@&JEV%.w;_%w+k kԟ}&k]H&q8..:9K.; +rA 3Մ pjR]FoEx&t6PĽUXUDHR4|հ ^7;Ԓ!lrpQ2 8*T1Vb"WA2Yu,[*UqXƤI;I '&>iu颚vvCZLZ2CT +R#_>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3238 0 obj <> endobj 3239 0 obj <> endobj 3240 0 obj <> endobj 3241 0 obj <> endobj 3242 0 obj <> endobj 3243 0 obj <> endobj 3244 0 obj <> endobj 3245 0 obj <> endobj 3246 0 obj <> endobj 3247 0 obj <> endobj 3248 0 obj <> endobj 3249 0 obj <> endobj 3250 0 obj <> endobj 3251 0 obj <> endobj 3252 0 obj <> endobj 3253 0 obj <> endobj 3254 0 obj <> endobj 3255 0 obj <> endobj 3256 0 obj <> endobj 3257 0 obj <> endobj 3258 0 obj <> endobj 3259 0 obj <> endobj 3260 0 obj <> endobj 3261 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3262 0 obj <>stream +h޴;َ#(  ؇>ZW?o\<2KRght)$#|?׫ﮯ]_Lןʤ_lL*ƩhvÕ\mOh]Vk࿆Ǥ&( oMƖ. +MmL#(M>WaZ} +DFirV>"60YE_X`;6ƨd7+k"qQA,DaALo"Lk\_0d*xnj +9, > mA#?ħ&M y  ]،|E\ YiB8\X,5r8 +tDDhPGЊZ) \l :\%5 +XSkFڶ$L^ .GbaU^ v-7tLIHWDz?hQS*)*%I'a50UɣH=5c^OC$񠚨 $'`7,lOHˠI-bOhj3RCö{j;GmӕLvNk<@˖Q:<\[Ѱ)GH`9' #t +kpk~(@ܭq0HhunN6E<)3*ACK>tKRv$*?_ε=!zԂ0ƎV$8{424W]g:sr> +0 S=EL:ĥQ,Ddfj'ۗIL3݄ x0&}~J: DE`C; !+PS6j I*m%$-pnЗ{ZBHvZ +[A9x저a+ +P4/3A@E!8F` 3d5Ɔ5%əkz2>fzc@a krK5i +TXt#v+ScvZSv-bz,gYdn5wMLMn. .I꛴s m@Ǣ2<հYa 5M#ޣVI9Ȥtf +6DB֫azJ\Ҩu0ro"؄7w<ˆ cS$uA`CBE&Vy>{yLfHUK2YSfd#ڦ_1 +3*ay^l4U$YI%b0RR1t +,ٺK4{b%ǂ`d F> 4ѭVNEbSvKjbkK@mSEI-E_-s%sU7vYLf'2'ggCfȻTXI]}#^̋r1֩N.5;]ІE, ̛Zdnʐ[jj#yKxfy5ػL4h% 7 +Y@GZ3 $TW@n({֓{L(hb1끈ZyJ:#Ro_iӵeIL=$k餺" W5 \v5J#p<s +_];O:ђCWbeꎌ] s6{w(W\׿y#m2Vց\{g.ø^9d1{6j,KuW|J;IvR*-QF0 գ)@&9#E:Cdl$“|#,8`13;<)=DzL=~z oiϿ$yƹzy_zaĚ N7puf#?$իOk ]/kGabu=3hG]+w"=ܑ64* H#V `ZG(?~-w*%ᵨ3 /~!Ob:2ToH +~XgP}@#/ӀB`Ά~FZ[[MI[F'NJ7 +^x_wUSm +|BWĢNO_H +QKe*VBW>+p!6#@Ky-Jf9rq7_c_ϨxWr4R((W5~r Q .H߀q֨jiVA4z'͂(R\BV=EZ)m̥_Y-h=u3j,lc RJ a N#Mf=oBr0? ]lip1bNBw3ϓ__/YK%!>`pģ1ٝEI?B +pPz\sM +V)}j9iGn-kiy3xT*汰y8ugFq;S/n~pn+_pјҕx{ +ޚ$C^ }C?q8vJdZr?>o@wew՟@ߡcDF{ϔiHu sڍ\f}bU "Ee "sXv}kmSv܃'aӕ~i@q=-&7NSpvJގJiǃ}&};Z*raBbwtȇ3]~JS0)}*r<7:v8 ]$Nnh7Ŏ/W B\;Ӱٕ8&7@HdB Cڅly/H|rFsRU~y7 &#{]7XO iV$s.̎K>.i+3Ga~vz$u22?v$x=ʱ Ɨo^aωO*v]#˴ou0ۻzhQ@-u$Z;ڮQB>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3264 0 obj <> endobj 3265 0 obj <> endobj 3266 0 obj <> endobj 3267 0 obj <> endobj 3268 0 obj <> endobj 3269 0 obj <> endobj 3270 0 obj <> endobj 3271 0 obj <> endobj 3272 0 obj <> endobj 3273 0 obj <> endobj 3274 0 obj <> endobj 3275 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3276 0 obj <>stream +hZYo[~篸das $- $@RE**d);f$hR 0dr3g?>[^צz?ї ]Nn~w3лBci +۾SåqoC+@754;]}[皍h9~9c39a=ҁ$XOڎ^9аNI+/3Mo:ua:0a7<TLƙQZ\ CKgf4t] <ҺNe&!7!n4a +*6ĕyܯ6TҠLw+mx/ww/,l3d \mIN+`2RZ8 ?^<|ܝ?ܼ=>lهm?U?8Ms݇-,y(t {^u$VږږFi諒4V9 lT4|n .ꃡROZi}=-d\*mX +n(=p9`;Zh3)tV^m݃ 8 LMX0=0vATtН8C@(QhGn ܲǙCDƂ @wTjf/)ru}߉{8l뻬{tf2I6tmA QlՈ`0Yupu'$7IR.QVL5.o 6Ov1MܲYZ?jB>1}~2Fe0gdѽT^̈́bp#\P.y%hg"~̬Zevvo%YEl{ 7dx j<vQulfa>ESI˔suOઁTZK%鈜QjPgt}uY3 mGj<0 ߛ'F Y +^.IO֭JPFω爡1m+}au('UX_T>fPZ2s" ssMwvqpN!gꓫ_S6xnnQwa5@ +-DiCwW9'1q.IQvp[/^ua5_81^7OjMXhA +x=WJ>MQdD6OU`e }!U-N:$D̞p\6 G%t_'c/ih:,#h'A?Hg+0sfռ䴖c)b$$G>" +xDNI(mml My9tb@N̼WžJYL[a9Y:`G{)JePjMIRs8ggd^n4s 3y=hHK0 3eS<;EU|ZRO7wWOfso:0EM6W݂AsϿxb*wa)<GR K +gp9>J_14-_"XwwJHӊ V*FٽD]Tm;zAmSМ#GńC$:><.FUPvybK>)XkC90.\p Ir,H( 't4G ѡC1bi)79vfZU(^ȕ 2U+슾K̪h(`4ś!&㡆.r+1;9KS> R5љ9D1}ubM2_p.ֳ0^p +endstream endobj 3277 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3278 0 obj <> endobj 3279 0 obj <> endobj 3280 0 obj <> endobj 3281 0 obj <> endobj 3282 0 obj <> endobj 3283 0 obj <> endobj 3284 0 obj <> endobj 3285 0 obj <> endobj 3286 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3287 0 obj <>stream +h;n,qy {bGeX $ȃz1cPROO]{KGe poUu/1ÇOW^]ޚ 2L_lLcCF'7>^MÇ8MGhp~\t]-pv(6yޙ =~9tYwD[w_#VKdqHɏ.3#/qoUX\=-G@43p#|0'BG2ܲg}ހhƌ@o ~LFJ)SOW+!a8qLr$_uu^DTGhKa r9MH{HM2clʘ`3`h,ovp+n՟ qk^K_'dlvaקO/`_|6NOS>a!Ў41A! G~i ÃhBκZ;-?N/B0DG͎SzB   0=EMcacփfG[A!7 1Hˁ6NS$oo ʃQmFnO;i彂aRǙp „*Ư 6}j Î1hjt7uHMsr|B&EM $ w0a|=[Ap#0gfciF+g;itR0l鸞q R%"x +({ + 褱JJQtGD5aRo󫵖f ]PsgdN*`H@q3iz䘚dƚXYκۙ.lbʠ{J) jbM':B6ثbƀj yJbc bo{YA'E[D͛&ktf@_YAfOFvzN(9ҹ۟& 1ةF Q9#U+*@nŶ DRϳ%+*,XJ&lC VSp4I_Kz) +F@96ؚ-yP>G))Q .]9Je5XV# F ;i'o ;6.p0TV΄i8)r|׉9t25u8Amcr=k 1΄±<_q .zns4+D)`{Rm1$s0aj<|; d@HLΜy + +WcTf_ +ښVؠZY*R<,WyDlщ_T|[}Y/$+K~1NعeXLVv_߼J_ H}$LҔ ūUM +Tgcf5[J)7bZye6 /8-} as'2p/ uk} Š: 12>:gd!94e2˦僸bY*NSZC3)DEy,TLiRS=}ോDV7t j=)lewoM3ߘ/kC̨хhHڞ$%v췭!B4ɶKCumnx+5>U gu1 t:|k|Кw{ֿR`)e <^iQ5<5K}2T)ipFl|n,j[e8kiNQfE,'=tR1!j SO*U5s j΋aH]b9Kxd0#j5kovypgN%#w +ltO=`q Cw(v"K}xC +OAp gbݮ70#k !@8?Cl^co0IH|آiA|aJQy*82NckW +a"gτ4a֚GXZlgz)9G"OuЭ RK {HVc\>/~]X%7?!{yU_,އU?,jO7f rm{&}Zvכz$ M Tؤ$7wI"' ٜvYtu+|LYP)Yw #NY SXjsZXOAVƧctt!W+e +endstream endobj 3288 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3289 0 obj <> endobj 3290 0 obj <> endobj 3291 0 obj <> endobj 3292 0 obj <> endobj 3293 0 obj <> endobj 3294 0 obj <> endobj 3295 0 obj <> endobj 3296 0 obj <> endobj 3297 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3298 0 obj <>stream +hYKW̑ ~T b@tM#;.lڅW+嚟zů Cp@cYUu}Ëwon_i_R6> 9 ņave땱[G^Chmt/8"ňRfsf tZro+b.9"A* Xh. +=y +~pe0>Z2$̅4Dm} cl2t<+-:zG+SŎ?G8TLR%LKF (@Ч5إdVzQ& PJgREd.ѫԍ'EG`O w'L7.8{DqN6AOGQ"{M"ʸ X &_CNzW>K@&i_6-e1%uIgԬ{LT2pNBTyC<ȧ >INYIǔF>\>Ή-0AIJtTIajg9+qZQbD +qYַM3*_ĠzT[g?ȸPa %uBbF \&<o61Ϯ݆X VAk& +K mZ掛i|> WdY6'dGqyb/v#d߸@pq$K; ȕ@QxaQ + #ESLժq>:Tw>vl_[.jͣsw !L> n L{T~%W2p筬{/ ;Ak{9gFW.sH8%Q(RvHeQ6׎ M#T N2;ΏH@ UZU:\Vyv +M˛=EH'L[=UI)?aU%jYVOivhԜ9:P0a?焬~5xdSZ/xйt6obU\3@dIrv&T5+M$e E_T)T==$ +KիYCbYḀ%2}b{z;*0qd ]s.52Vv7۹8  a(C[҅VE™ty֬t+v] UӪ(-+SԿ٠ɢEo=OJߒ"w\dvaaP/^Wbne*:IYs!9=M<դ(WѶ7;ۆ*DefW:180e_caq]\qJE};G7joKs._]=-8nO8p< _ckWlUݘf3U7-)%2w+&_֔PZSה$ӬL)/g5e5eWq3Zϕo1DHr|o-y7\*rOX /bOA8!y~%& +endstream endobj 3299 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3300 0 obj <> endobj 3301 0 obj <> endobj 3302 0 obj <> endobj 3303 0 obj <> endobj 3304 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3305 0 obj <>stream +hެ[Km`Z7 `  `; +$~Ĺ槧XU,ʲ|H7n^=>-ׇl->5mk[X?lu\\/Pz÷m ~6_짴zuK5azjNnm3nup*?Xz?ߵeMPaP5V9Ax c 9 &߻ wh@>LBC2hރpJ4!T+^GgxOKl0_>> 6Z[XZoLa|k1ÑFvxoѣy,̡LWҚ}g (zdID_xikťث/~~]^}:|뇟`ҷ t[ĥȓg 5 %5%l֟^ͻ_~7 szK^.֭EGte/g357BY.okjq!eZq9P9Pٯ.%.\uZ[(PV.bu˞CM*@,@e;c9Xr3L-V-WQ;9P]wVukqpR &of$lT*EF)h{Qϴ07P>iѿ Hז`)Aۭf[&.bP,s +-2:`ݮ!GjA 2UxT)5^e7l;KEĢE{x7W0ŵt&\ê}`42ʥ}oͽV +d)e"}\~N&@m-Zfkiɣp;*̭(XIA5QV s &74 .2m$މؖ1*45kp((wTʽs썡R<˵PWyoV:"ebǣro8TM` O +Fm%#RBF_ {5]i/Bz wk݅(X%_Fg!gU].۠mol9;|w 6Gv{8ȁ)%"X +©w#D%.J vG*k&A 3 fΆwHM`=/y9SܓFf!0{#R'4C>³~՝ekb'Zk'W:_<ȬF@u;m^PZX":fbtظ!N1Db`izeuEFNw,RXM<;9bL#X-dwyQPhZ$>ƘUu1sٱbXBqJH(sHvb;I*Z--*NOڈERSa ۺ\q0$q&`*?EAX`ȁCъqA6=_>4!瑗k: 1b#E荡n #o\~}l}z + K{ ԇ;u|mXKJ~@j8,nxamޟp#y.T̋˗hi@J._dZ\ E#=e:^U|萦Ţ#g+>qeU[޼"~mOL1rb j P%c= HGbͺf0F B; 39ypE];]RLN`N=O@u]7y:|‹k;T*BQf>ݗݳkg eSͱ +лKE<Ad̛+/#^~fjNLJQewO*l[N|:-)m͖.ӂ#_ \@ф + '$ K"QT7ĂѸៃZd'R5{(;vƹC~x"L(q e( DUg9yd&`o y_G߇n5Ϣ2=Nɽ,A<:R0m{ Ka#S&qV4>I4 +$#؉LS(w +nS>*1֧F6~{`]nBXg5r01 =(LKKAjg޸wE{Ŵ3EUl1SSż$)(xDPW +j+H(Ϣ* +GbXT@:gx+&*2khW'G(0&!*<ȦMu&FA 7=own`Nf,db{l$:Q`UOo{gW8 k6t¶nX ~ch2Ta|`I{ݶ֔L8'O´P9EMJ@ZJ'%6.7;INIˆIC +dظAY7Nymžƥ$ w]fsdWG &{ KkU`$&-f]kٜTa̘1Ru>*:NOhMI23]i=qr*dzK֋5>}(Co#'VP.?%i|$$$} AlOsS:JSZcx :ZY!pa QnWH'N$Y2}5Ueܔ:1q~`k#p S+"jՓJ'?K@~9q]l2,E(k TbY|"ct1*?(њiq+K%&g.ScX$-!.ֶ[.n8;Y+!CTI:y;نxHt2`hZ ]$, 2)cfxJ.r:"#ofRc&2Ѧ(s;C>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3307 0 obj <> endobj 3308 0 obj <> endobj 3309 0 obj <> endobj 3310 0 obj <> endobj 3311 0 obj <> endobj 3312 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3313 0 obj <>stream +hޜYYo~_1Tm}b@H 4R,1WG(LMuuG[~>îy)%PmXN;3NX֦g_>FSHw&@VL^.4Fm@ӆLohSl#o1>_oDeDpz?grƃ27 hzWy/O;b|h-&~S +>fkN/W7kb $4p'AGwН@UȆF +vuaͦL +嬠~+!-fj\|E,-.e<߿YwoovqQBg#PG Z2~+Dh`]͇_>>S^Ο`oc[tXl^>A+ܒ%Y^#42AGƂOb g +?>A<ϓw T_m-ZXn3"`ޮ08tetv1:c[; <ϽJS +!Ya4P[^Q%T#SGƤ5aD>t>;&P&ǽ鼤(}l3+42K6h5Aajz(+<11k.%lR ӐW6|\׿y ڎ)t䘸O(+ɠ(e`-Ow^Om)NoɁn8& ϶&ٌ4MEhAqͻ.#b"tc¤x_PA}+R;;YAD}O#)[JI#Nu] 71g۪d; +!Ѭ?Fz)f2D$8Ka! Lzpjۈ3k&$rbSW|" å6‚mŏ<,sM]Ύ*fwꇣ5GwGG|XPN/yƤ%'RdhW ""X.ZFptz3M-\6=e8Ė\65Pp%Z1JȶA7̌rRuV7y$k:[icF =!lD'^wv@z=DzF7ɏ4VC_)S^ލɏs`4s֤H 4e69#}ӽB"Qv!!MN՚t垬A [Չkb4^2֥QRh WlS4$uf{u©pdg71V̍+gb'okUQG 7KG 12SEWv5s +endstream endobj 3314 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3315 0 obj <> endobj 3316 0 obj <> endobj 3317 0 obj <> endobj 3318 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3319 0 obj <>stream +h[[~_яrn~%ovhNf%db><4ټ~vo.7Wu1WR+j݌a9tw?jgaC-T2Zcme[-)ڭRx[0:kߑ=^q?Njj$vi9l4A0j@Cu#zXO)lyD3moty{{,l35Xs&-舵ӚR떪[~{:6協==fc2r kݪ(_H.G4. ksI&VSБsxwu q&1=VCeeKjѦ*g,o0Ges6qYϳ-yd :;AMn%b̅h1n"zCjo + n$́oh|Ai˩ƅ4#4Y.H?X4;)P=MâH-|`PyQ @F(%˥Ry/ Wz ?EKHBE4OWW2+xM4ìmrneަV/W}I0KsB|fꖳ7`>j\Tx5 SEXad [_'C~5GMq_ѰzG[,l6Zp{.ơu."]\2u]Pru֎{hL)o_|6x,grd[C R$AץI<߼xPBt!b+ W(@wQW!qT~o<2td,;itOPB!y΄:%4}ۢv E 5 e UHXkVDI[TMZz{Q ko0`{[ pLaog:]ESgeYqw4oU8C.dy-4&!]]Bd@U58~Cm:BLqaY3l뇀EBluSCCv qlc ⶕQlvv,XL +HbWBi*̫y&"YOZKĉXE$LpL*X%rpLPHPV1i?ƔV zCw1pc0pݿtGzȋ5#:x/cvvMuqkA kXo59#bbUW5FeB28}0ӵ|}M*9JC.(wn̐z={Cx:BwV z4G*-gg40c\ey5vh{I8Ӣn$Y(x00K#UIO*”1= RםRhsӤk U fɮs@Fn`) @܃&30s 6kL^bjpQoiud!zy#OYcYSo1M]zbBiAQՑ͍)=8W/p 3645D%8yxh|6C?5Jj#I +@ Au>czImoe44 P[[QR>$2F"?w=S 8ݧehgQtZ C 6<@7$+A͟b1a%U(h6󃟢Ti  g1m,<?JKb] '͍%1cYjzh~#}fR9{+R9[~10= ;)z2whp?Ta}&u;xGB|"[?/hepbN2~a7n˲!ơG`{l>ϩl;;D>K%| >01;M~?NxY`NG= WnHlE[{×;"zcyˉ掶?-ǻ3b=-C@7#Az\[094|)q^M N BGAHIF#&hM`#/F| +l׫' b#BM] ++at' HZbX"K'W._0%8(`m0/`DiK'[az QzldV@P>#h\pi[t-κ] + yg0D[go=tbL(RB@wE}F:N ߫!~u~%LJ1҉Qq>=n.z_PɫXcmma-\φi~zn8Xꅤ9`դi8AAyPh.UY{8ox⢊[Ć1T„oA[U_|g-OZ`5Mnv{l'FW(:#܋{β=*c'F]Z|vL _j|EG/!'[X-]jD{K.`7uaJ?M󥹈^t6+EL~Og% Eyñ)`/HiBy-J/mO%A~eOƶZ JwVoNam#5`\Fْk1sbph":{(ɭYE`X-OM6o rͮpB1]m _o#?'۶yR[JT/9%&f˘ӧEsfEx͓;gȦPYȷ$^+4ѵ~㴴Z>gZZ _8m&gJ.GȄi>K~|S>]BkwY4dƍ|#4 EIOu4/Ju&߁͓< ~|XX~AרG _ |h4ħ +j}O&m`Y[O$SBf4ؿe/^E +endstream endobj 3320 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3321 0 obj <> endobj 3322 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv48187V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3323 0 obj <> endobj 3324 0 obj <> endobj 3325 0 obj <> endobj 3326 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3327 0 obj <>stream +h[KoIrWԑ\K*рG3a` M9^|O߈xevQ|Xbu_"2?~ytt[W2<.axLn~>B,K,KJ]>Ź@A*ZV[tK8|#eA7:My:l] 3>aM.0s= gwl.כo`?u}ضmcٶuxtC[c^wm~zmcl~qLsn+p0cER-֜<Rֶ", +ttiki+\\]`+i1MN6q+|ϗ?Loz~_%"1i> ͰiKb(͛p~y>y~9Ogy٢˒ 4pS0x*42]>8iS=CMI@Ys-HyY|a }m90nY!sib}`zɭπ=2oq4p&90:`w5]9(`qRγO8o?gfYk_9 Ih=gI9Ŗp5kRa?Oa^~9§Ӗ&;h?oK6|k01h,S[q:b=R@64 RT)&Z[LXobtYp&Hg^2>⼦"uM8\XkIBo춂 D[q[ ?*?]$[޻ pKqDGmrCMLHM4̉0o6؃# 6ADH473-S=Iłf[5 t[al*Ԕk^R~atIT +uRHY˯,?%Un'_ǷOzXS@tv( 1נ|k@@XS XB[-VjZt 1Z Pa^kϙ4'΂q@FZ +?*Vɋm 'E#E9WyfugoaS"PTZ)1~ @EJI$^;G%/2x85jW2[+GIZ"ut%JlU4`';O +%X'"horHN7TUDnqU?)`J0V;B't^RQU9 @. X2\#!Rl7lG61@;Z  +΃i)^ݭtv:5[9Je@GS"A|;, >^hc۞:.@e 8" +G;.rXW!f "ߋ2_G&)b|DˑoFCH.:&{U2ov OY:}V^SZ6;g?2K3"_\BsdZM!)EH89* +;\{ŜZ"mleB+CnA"wd)ʒŮ B`{2K. jitz׃_m/_Q#mTfRRm} amDX ܟPDTŷ;jlN=xQ=Dox[R +BӠFi!Is8EP4)n*st:~ Uq4$u y s:#ӽ&>1%Z3Yk1+8L=ܫep\(GҒN"xڨqK2{dͭ΂dLg[ % cx'N&zJB|pRyγY)$_LtJ7%RvQx\a-!AR֥L|Rh7ε^:XIUS`=kQʡLd5qWvƭĻvב$v4Hv]LЃ=Nb_cqٜ^X#z|HSGTy1-va\iW,YDb_I6O F9b)L˩!Mp2\4 wY?ܹ]' xsFUӷӢZ_M:TbQpvrx2ur޹͕i֫便7*(cxф C[YQbK4+/bU6XS |֫'Qv=x`IKXLnt^#aڨC՝PE7ȳŒѪx=:[J#jИ4?KP +&NgEQq[Dur+"utKe s4布~7>Ge<KFqTnuQYbk9jJ1:.@H v1Pj~7H@ -2qOӧIݛ#L] ldz^Gk|mx+>\ 5nzp-2 D]E-,Y&pb 'Ħ`G~!9_鍓Tgf\^k#yx-,Zn渽"֫2Qqd@v5X^?u-CNF*5ddkͥjEPMutjH/NAGDI*nv}~yC𛿽Cpx;8GL0}[|wHO?.߶_CaqR}lYy)qs75M)/e7  S>KB=jOTB_(n`~i=^ D5eJ]C8# ?i~:"bUipLeu|ߊ<ȷ^Y,KA.q#!mre|TMfMWJ"B(i5ϯq7Yѕ.X9C=V'}h^q~$eԽ;?R+]2^Kjq*5S8Ǎ/D`^lTFkFJwB5g5D{1I#l$28(/h%رhEJ@ ϡO fRg˸jj \aRHD&tףiC }Y1&.y@f2^< K>ѫ8I#S  +S{A5ڶ̥'T\.ڴVl +kҡJRhWص&w(ýOH#7iz}.8~jGⷾct6 2\D[=R +9X:_)Y]OSR85)9=njF9>*.i9ŋR `Wo{ cCAWļ0$t9xv"gF0Ʃto~ +endstream endobj 3328 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3329 0 obj <> endobj 3330 0 obj <> endobj 3331 0 obj <> endobj 3332 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3333 0 obj <>stream +hޤ[ێGr}Ǚv^eВkhx5=ii!KRZ=;"3nYC0j:'NDtÏop n,-eyX1) oǛ8M.g(uBtRd'U[ڇڴvY]C'067 +q0,0Ʋ,rC{øbם0e>>ݕ4fߎ(z<* /jf8upit ?|^} 0뛿AO5tSġ[˃4 @28iTo7|>}y珟?~t>A߯^3,l>2qnX1/42o~zg*ZGA.:K(P4; g<.fXksxJ{2CC,P.oW'[{e\,eh1Ewppaos۵s'cgFr̲0xx|k6EuVW+8Z^/GTDgU)3],YwЭSS'\s+-]nY-:v[<7@7pQNQDjGFJsIԚHne`1>.ERG$JέupM*,<9?{eNU͐w\h\&rncBvJ1z{DK݃c{*ߑPT +X4NQʿ8>wrRjwӱQ%!jmTId]QҖHqNX͞N==&)T_6U-j^nц3GsBr-۬7%2q.J`kB`( [cXͩ,qt ~OU۰ @;8-"~\S{7r|ʠ \&)i[71@5Ny'a&Gcqrn5׋D"pJX8!uJ LC;%BGp"JA6&#?D_rTѤ\$ezSp™sT,/cȻ5qe}{>9M/S,E՘(!G^Va]4 +5TWEFP>>25#?4Dj{B8Es1cރ4=2y/]Ͳw,^xvd :c}zMMBy(`,ci5A,d5 W4*LV,)n*ThUPK12.`Ϙٮ +I5[4ya4!jK"Q ύ--d{"0,hiۉBX9퍋ݍZUp~5gP ۆhP5 ;Fb dٺX$*>zE\,{o[Jq{, bD8^&D6YR#Dp>j`r"F)@b*;ʹ4rjzPy2`/yJZҸLW~&D +Mmh+zTzGERTX{L'~@ ' \d_Z/_0:K-x+ò'UfMoh{D *)z*o¤<| +7xm!FJV~DΐyRBJ0a΅ +8)9x-FDԅ*[/j;10b@=~-"ogZ]\w^uێkq~Y''J$)]&)t#E\``iCW։g.D + Ml$Il$lmAEinE&ᨸF:ubMo\8zzJv:kAU2z*B{c u o&tM kf )=[L(2, [FhۗxתrҋōA(>fxR*d1yTmdlhjʵq!9x*ꮺJj&3-|l7'9U^Zq]?6*.SP*r ;QVG*橅-D)z ӂɴ +6eC^ɐU͟WP^["Wp6;FE!âб# CkihuBl(t6`R?{`/<nB*.똬ߑ1y2:%Oo"M1Ipڛ^A^B +2qզG1 Cw]ΖsJEpncH\eHIfe,9IP" ǡNqG{kYhV aE(YVٌ1?u!@at[p-#wtK ^Q5CW l"GS -1mJ|<_#UmT `voL *6-n˺SeVgne +4@T--%~ך9a'ڴ٨ i؄,r=:k 3Z6MoLk cXYД͂t%o5B荨ㅥHv(;HE +T4 Íc̘y4)Z9r~F6, s*O:4[d>X*aãX4FJw4{# DH$Y&\<޲sJ07@$zc>k}Zx&H.Q C>H6sdtIї#qѭ%f%X$I\K.[J'hI2Z"zH Rܤ)%͐c-E6m(&QP/V*aKYp:r^*~=sO]bT4ĕE5!2(t/*۟wQ/=%mFh$ kv7qb&| %h[ʣ$NT)^LZ/EqY-V~ InÖ&ц;?+:Ηq^NjM/HW]koo=`q5ݓgB(sDlΔtM:2وH)Y. C>VZKK@1Ig` Bν_9S6jLꣴ>;ᢋi%l㇨G#\HlqxF:: W8}̸ I 1.loBkv_ az ;IL*tEjs5j;/1/lbm$w-Sv~m'B~w5Y3?Ҝ߹&ߔbBj!e4V>eVk6)](x?*}DF\Hv6ۏ^Jmѵ,_^as])4unaab6.}-u +e5)<]Q(,q5~sO_A^zQu>8 _~zZ/O Uy<~|>*H=*NםY"p(I>Kam}~O?1S=TxVo}AϵW5At=u,m`MfL_a3IN:AN]:Du,i}I0eE+y+y/|M~=]1MnGo-*x7FՑOvǮ1 NN^o^D*|w,"ηGu`n' +endstream endobj 3334 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3335 0 obj <> endobj 3336 0 obj <> endobj 3337 0 obj <> endobj 3338 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3339 0 obj <>stream +hޤ[Yo$Ǒ~篨GXTYFv2`hHizH#3άjXvޙ__~{wOn{Z5O 2<P0}Zeu;CWX%%%[|sTnNk PZM3u]1RLL؇ ˵I]_6 +Pumro?}ΰs= gwfh]mշwW@O:>:ͱk>?\=^ =e^ЎwD}$=}]s[Ѽ oS?3jNN{~OԚ]]ZxšbFbOŮ:uqxiriv;LJOӻGo_ }h[bcFy+C`nb5~Rkֿ]/?y s{ {^Ų >U)yX<D{\_Ʃ_DˡR2pac +Tvtuv1d߇C k* lzٹ8c9d3|X #\s\VuЧjM+8ޭsso˽]諺9hŀmpRγOm~΍ R\0o"_"\/30Oӵ@G}Ӛ;K .iZA`]\Vb PXC[ܩ!+Jw} +KRvT)?nfxɽNb"t (T<\S~\8EۍB`ckR~ZaIiNjtH$[|.ýFR~XTM^?f4`abhqhwT@"R18Qqh0p'+ΆT"J$l_%>h 'ժjVY (ȇh +57wkmW`#HLYFvA1}4!Z/J,{+u(u͍7\5(G0Q$^*23(ph{p: W<33#3pM Yb%6p(mʁh7" -ȉbٳ%Uʬn< h!z PUep^YwRs +Q"\!^mZN 7_ +qA]}Ȧ*[", l,%6=@Fї9&PF:TVQ64v<xtsh*fj6oHͪ !>ku@$/RC3h9MV!ǣ5m6"H,&u(fRcINAa~#1W}+Yݸ._NH4(1ٓc {d&bgƸJ"mwbTO 2+AйW4ԥVDR*iE$M/.Ce$Vʒ{dnQSAQN.WY,à([w.>X\fy|?*"@*ϰ6)n-Lez˶KϦ޶HCmho"oW8 B>3DV֞-ì;QBnimT'.臎DJ+#Y+a dy^MΌ>X\ɕuGES[V2ʽ2ՀW'ˇh).1ZEk8BvdP-50c8uWnÜdq5nu$͇9 5^1}=Y")jJGJ_.5lx/ To(hyEGfh'>(Ḟ/m*[FU6 z*òxʖ蔋]m۪IP#9Tg])7pw"^D oZ@yOכ<'wx~^ʇ^:S ~ɟs^?KP~ϟo">rD~80F@i^x=Hh+4JN4-?O< tSjN7Ir>?LL">h믽k>Cmp~y}|y@ v{#x+LSLO?JpKOӰ'll|C_N @9][&|[nb^muw͚XEW<$xd&DZKHlՏloVFcl nO>anXf:8 "Vn.ɧsFK.nluKP3NIPS~o-JP,i;u\aUy^/qA6㷔}T87T 5saXXH9ǭUq%gbp:.u96#B |7?Ul妽cJ R1[s#`x08ڮ5o@z2n8LA6<9=y1k..8fx53mYQrvLN+ۑ*, q| ~_nruxam,^JY-QWdo4LK_Κ{W6Q#A^6V0k +⹆BgWLVX9 Hʗ2b^#*M`:@ 1[9r4ʍt\2XkmZKU}#dDdjd{I^"ϻn?S\=7O}G>lGYiV|<R~~Z{7TjY%+nͻ*E1F#%WRKKU%œt7Ax-w4䨃h`F Oqof yanfـ~e@.yx)x$M&c0Dzuѵ`أePgٽsTG Lb.b]q3:p0*طǼy8oy;0LRo `!jO7jt vW˜mR&N:|0 QoGĹSPvn؄z8X1p +=N0G?>7B;-#n.o6IQX+q#/~M͆< (dҴ]1[' :m ke&j̣2Lew" +hMbryYEI C^ĩ_01:jަH gt2\7SM!|O٤_/m\C +r,];3e$! !!iJm1|r~$֐ټmKapdE7[c|h]wSX +bߧ} n7i@@M@рqwڜ$һ;xMTFFG" $oyH9oϲ/alӹF/.,k^_0y}~ 񳝼),)V:Kq&\Qb/Wf/)+_A$V\06YSVW6|cXToZL4Ɇ&I78`ǷwW`BU +endstream endobj 3340 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3341 0 obj <> endobj 3342 0 obj <> endobj 3343 0 obj <> endobj 3344 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3345 0 obj <>stream +hޜ;َ#ǑHbMQYU .G`m~ dgh=ҼoܙUdKbCwDݷw\媇jP)UCS؄xTuӸX=lO˦ -5 nhkVCC8#Bu3ە#~x]z_hujz1XKA]-|H)z=-,$[nQ|[ڄU }A -IgSyHKiCOsapWG4:p}U0 CUn꼻{8[~:TwrQmu1SR-l׵uL`@$QH"Kz'ަsu u+Y+aޟz>߾6W5 [?U}vaݏ?Nqw9~w \nϱkRpwNU#u!V$LAځځھvm+m:Xzb> +C}bICOqO [Cz<&w]=ڰu\o@`<~w:)DMn_'D{mz7jVO 6n#75N5?,CJW>NC[!4o ג̠)C +2#Qf41P;jȃa([m/Kw4凒;"nm"ǫlT K' #%YC >=W4c چLOlv*DG5lsƵb[T٘:]^ò8-jifGX x k;W C1!:'=;(mFf~jZɽb `zFDpsXLx ئ&}mZt#;\cK<@ڮҮG]XjhUPpAИl}9R/UҚrm(ރ:ayC*{]gȇLP,D2@sթok E-ר2"5S3T0;J16F`DWWݵL/'DF}Nՙhq]o U=PƈxqHht=ޫ[&/p2$r2a8"v'#oRML\JR6Z3ti!+ [ډG'NCgNh>à'mZQkNk +1MeVChac!W M1[E]bH2 (1.S4Jf$ g|u+oln۬pYGeo@B|bh'Lu us7vPIj% 9`u49 ё32}7:&xjM-u˛"d8VoI(F7 .~e1*Vm 7ܯ݅@ ޷!K[22۰U`E61"-stM,iCȮ!w#{`<޽`oE3aĠ83(,SA S>t.v oM+nYp>iaۄyUnZR1eG6!v&LsTHηF/MJZ.˅.lȹVܢ=qA Zrލ驫2U-3eG60BP2GKkq'eϪK #kTYr(Ȋ Q YhX~` S 3 Bҏm]~vgG±{3(Zi9vE_g&p˹2 cwg  +z_'A LF\&',%QbKd +޴O̮{PSuT'!,/R CRфL)qcV+&֓_I*{.{pE+-G>OǼκG0c-vs$-Jx2 9oc:]9eȗp.isT76f }e]y\+ƵRώῚWmv*JOxg/Lbzf|<v0 vIl;_+( UGMuta2_t|ӟy\a v8/앖exW9(E tY + l.@yM|{c:a,÷B9d*G5 $ywV[08;o_su<=g'|{-/]7tӮzNjZsrQ&ůrrCΓC||^7O Q@Ez .˅? gyqrٝ^E!>+Dx nKzp>v쿬/G@<}}<>_ӜS QFWW˺ӎщ`p"rtxD̛]NGn_aCa +8x#~ҡ/%=- ls4J]j{GG/{a=X EsO7p<}U2"r/GJ@@9'^}+Oa*@Ef\\] !ds+J'b}6Asu:?;/@8;}֙[KAopRe߁;BT- OJKH//A9Qqyy>?tbo{:Vyy=@ԓ 𼉏M!3W~^H?^^@X& IDs: iB(bN,$'#Aw˨x7әzweM,T1sI KOgs Sm ɛWLCߋCk2B;:ϦMµI %V.ʅyREIAv4tF,HIWxCAI\Ub-^NU0_UZmHq[f x}V37T^C:Or cdbZK!֩anQK"? 2hΊfdCG3C߸g麓ԥ])ET^ bQnlUis۲,q7Q|s 7y@QZ GkU_FA ӟi8jM.R(ۑ|ꖋy$LeIg\=_9?.;BDBa;]Ցx_Y[P1pǹqO4C&`p`>QbCZ`dWMQߓn?}^oر₾'Z?&!$Dܕ*_svѣq8\ nǝD_>pOCĬvP 8"i!/"IdQG?ޗ>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3347 0 obj <> endobj 3348 0 obj <> endobj 3349 0 obj <> endobj 3350 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3351 0 obj <>stream +h[͏%G _G@z]UR$$Hޝ(hCD•?vh5^}W.gߛ_L_~ÛG;%N _bmRˋ~X/eyzܡ?PLe >3 BnfmqPZZ3~ۺ.n{i`[Մux?IM]ש +P_/:}5@x6&C/ ٛJt6C_o>|W_ۯ[MOKa Ya`ahiڿ ̡f@eWˮA~B2Hac%?/'ЮL;tγNg%:j`Za ecX s`ymN34 #L/R{ f̜,~ٚXָX hZ8wm}9"`) \0"-yL-fT-|5ߐ[ZO%L(;Kv`/;gd\lՠ"u*;;_Y +tP Ro@( M-Jb,p +6ME$EAQX0VTisI*p*/pnN#GZٶJna6%!aAHKS%5|uYF .ޡWOt/~Ee0PˇZZQBM卯2\؂"f!4A KPBOnfgOM%=?2 ˭oR49V+%[xxX]ʕJPn +%˵;_hGmO[#@Bu<(;`ʹnx+J3mZੀf @Htwgm`0Gqn TBsLtUS |8Ld[hgsG'L+@za;TƩ!l ^U֑2P}<ھ4Jna4K-"Z5+xT0UWH{!ݼk%qB$ ~?Yq̄QNLOꌆa]>C+M4PIh1'2+UY0( .+H3'mvF"Wq#]:U)Omo}WRtӝƝTåKq$l@AotѾz[ۉ~G'Ha?0SqU.oU񊖬)STW9BLCwEV+{A鮾@]j7 \8/GZA f _9Y"S*+-NlZuUdXb+UXkնgwBr^P둎mzwW^hT<DTj\D2j 4W<\4IUʆnXZN!hϝ+}jU艅T1^E,-R[o ĸE }VSWy ٚo] n{!5UOWfW(xKm6iʟ=0;؈$n먠$M0TTFb.J5-4sHe&/z2Zf* O ZdY,U[~_w]"ДӘG0^Yl)}[RP^跑p)Ed(fҵ}nڢqK( 6\@4(ȉq!;׃ ynɆtr49%cT,|UAvu +u^)JVݢ+&:ص P% SaKd:Z"Ait߅`-1?vEuĬos‹aX 3b/%AgyƐPg?a$7w鹅a>n\wNEtbsoA &刱y +@^^>. Qx\e/M L(iuX((xvGb C3oW#W%@\638 uYSj{&\=ʨn98tANOL+xkK 0d@'O+J;U3+K WФd0<$O{Nu* +0pU!^*xMMK,K;!(_ 4|E9(,#!ʍd3f3:Z0eyU*o'J +`U1O|4} Ս[%fjߊN*'SkkK.iGp(_ЁEVG.q1hEJ:'ҕK^_ANJ#'WAyE#o& \S)8Aâ"QB4XZ :@ f叕(4M0 Xk֗SYiǦG,3 nz*{*Glt.Ŗc 9m1~s:Ńq}QH.}xXS-^iѯ y4טcw"q\Sd u6Ug=d}6P*,FA{f1:1H6IV eFڜ2OG43:P(EʇX^>~4s UֻN&CЉ/lxvSJTsT;Q{B|- mWҹ)pNCa(෈A ս#u7â3AV8^GyOd\G<^"?OE5"F-g-(iHwd_%T\B4o +r߶saUsh2ar +%,|/05ǫϗ~CpGr c0& 1*` Ɯ=nV * 7p"Ay~ I +m.=3|4x[(%H}E +7KFXk:pd)ڐK;}u(_.Cݻ:5ͽ{a,6zcJЯ~i<dž/?>@A1{~rL'BWhZЈE8o#&o m~?G0LPTXSnhw?kF13]f>]|+lz~l֞TFnjZidAMq$m34KrSBo k1(6z]s6Io-gŏoCxn~*^:ZeU%p'jjf?|O?N~~?iɓNF; tܴqq~{)_n8k$TV=j}CjRe$m`J?fiq9gnjˊķ7{DS- BAsWqҹĸ GL\3SLn`fɿ#^HC u~a2Fr sv_$huš3"dy*TF>;Ւв=NM֓HTt5f9:N4HlU!bLDh2J3:'U5wJ aN>J)3r;P)f9M0 O9&_<>St +endstream endobj 3352 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3353 0 obj <> endobj 3354 0 obj <> endobj 3355 0 obj <> endobj 3356 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3357 0 obj <>stream +h[K㮁J%$Pȃ5CWI2ƐG|luȭ}OW3cD2~BD5 OَnO$N੆3^Sc>ݑ_l2>$)yWyhO,@tW KLĘoQqI) )LJO#uǤ0>14ÑGp.kwL^v0]p$P@( jt@MtʍJb_>_a&K]߿*-`\vnû?~w?}|~_;_aw8%2mqjHiIK~a%;dc>sm=* z9Z k7&e)* RH^<@O" Ķ7xu2?0'OsI1X0BT +މ lo`4V>2yU5z=p jط5A @fy4a21P=rY]4JQeFt9?z;dNWWEw ƀQ*!i`Of yy797^OEcƃi%)058< uoa).>'䥛z,6粠l@W3E"Usض6lӤ"v W}NvXXp5n߆ML*!Ola\5Dr(}#oP `,c +Cthfޙ)@j>x@^DK٦j9mD{E2 l(njKpa<$σLjh-G*+g +"M?.’ x@;Z?rҼg괖qZ~:x&`dd9fPi1ٳ˱d y ٞ0NƃbٹՊ2*Th1 +݃_"p~ +HUD*T2"w2:dD ib,$0=2ZQT6p +[* _T<ޮ+yzht-2I-x]2;cF=yu3 t! .먡AA[}ţ )NY&AwpO#ȄgȊ> 55Spp#2NY?ԖobϤyÖD +;5HA~L1=Qz0;o$JT5K}uNlảJQ*6BTWD+v/k‹Kqú n߹2$%2T&!~ת3׶=uvFZA/*qAR{E!%Px9ha*ZΣ8GԒqqr|;֝sJ\4'qBeCQ`3WTJ*U']QzS)1Q'@Lߌ %^'B A6֋EvZl$&[|yBshZJbl<&bDSOjKgO$MdL}  '$ 蚐&M}r1~R,db~QS6ۆ{=7)YSal#C@OJC6!0Rx^paI-A^řnyCLGO >-6a;%pBcm mtƫ(gke-^{Ktde*! Z 6 ل>N,ӁI9n`>Y#h( #Q2ZEzI%P~X}#Ormv19ۮ-LLB <1̓<ؙ)sj S&;0TĎxp+`q'{}e4jN^1@"g &| NZ<+SP}`Y!⿠I4jj`E3\.PXߓtM}Fa ,X0hF8(u`t\ m:T TRZY`均gϻ2w% Sau%w8ǎ^kY0Aw%krG%rZQY?9vrf˚.XMUxxi@TlI9:ۙ9 ].rm-\\jHm9g 6фzxɾ+KfY6(eª ֦&LN;^CU H5nql5U )!:S0ߪԆs֔kr*p9^ ޲_zM8o0cY t@xctqU[19DQtF]|4c_;5e% ,:Pӗ(.c'Ho iSڕKWѾSWѽݫgpk1Ͽ:-#h،uR2E״N8Ϟ5سϝ5"ެfgBL9;N>|6 dYR| h +~p.9pb 2k9⥽׍ּt2ašzXpr3T^ b g,<=8k ` \8k%7AFHW@n%~|N/~öM~_mp7oS~CwE<.fJl t96C'sRXlFY^ؽbw#2boc}m4EL~>άfȬ;׊_/7ON*T=Ca 7*i. +lyPas֋KP:gUIPToe\2ddfB}xJz|mv]ˑzEz{/Ź9Jn4e "3ͯg7}|mb5L fZӶ*!iͪt=ҽYês#ܥ.C & )Iַ7n(QkӬmv+M턓cCu}nX_2kVo(Jܛ{ν;WM{2Ľ[۹w:Ӛgýy,γh`} wcpqK0$5z⫑g!7d/LV>2\@hIo4cO#[~-x4cO[{eC<n`ɂsw.b͹rvX۾;0YE}ixʝDm&٢eHe8_z^Ù+Wn-W4-~Uy_H(p BQ>v9L=^[uf՗Y1AYNOnVz%I`Q;sn7cWt?guu=G[9踕m:wZ^Ѕ<~Z8UEn<pM[sxr6Օp;{_6Ș)Nd` +yubW(f`9©.sTcvb_Sŧ>\u!F"Q|[2Ňfg~]z~L92xP 7y(UA&X?S_n+_;(_i^|~v]IF+#E|9R;;OLf{CR##nU/C6mPiS.tBAEK~-lNc+AK{#fv´zzSWAmT6DI+W]KymG,t<7zN-rLiÈ ç5iF M4 Nmp$JtGH@ ~+;µOvQ?vyM~s&m|xwA&Z +endstream endobj 3358 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3359 0 obj <> endobj 3360 0 obj <> endobj 3361 0 obj <> endobj 3362 0 obj <> endobj 3363 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3364 0 obj <>stream +hޜ;ˎ$q> 4 2`@Y@0h,I?Ϭb++o NoOcÿP멵OO۾~zA@{{)^֠9lD^n0O {Fbg8$se-nӇ~Տ~?wO~πm9mo0"JKCW|Ws4i~J6P֖`m=/nn0o!W.n{s:}]lv.Jk&\)mmV7k1`xo1َ!]VfC<8@ł[E41[ إ a,M8tV25l LP*Lû"<|<;樏3i>݀\tדg:wfK ww[J Շ9r\j\kh.78y6" $7m +"OIMy n7 4(#VjӯO[  D}>MTcEQC{Mւ~?ﰩ.[NB{4r/Rhw's"/l1#*2Z 2$"]Dݯ̲O/J7-0Q,O `agL÷JmF%h#ڞT @y(Dq q˲L B:nN'E^ 9+(ed,HdȀ-E~n +ѩ{UkD8Nz}G#]h@C[MZtw$)*3=њjs9emDn֒j'?dlد[9//`XqBNmx-T yxih%^~G9"(.Gds8A'AIgTزX +hOLTy:Xa61c/' ʔ|i,c0KNaeWv9݂n@ԾMޕi_3žv;!_60OwXt+AR&ADG䴊=Xv'﫼7c$ZAVITLFV#(zq] +;g9pi },Y)?h$dtݮT٢eDzIdx71YyI(Ef~Dʒ:D._>GD>e+/p8Bs~(W8:9l/}Duw+Hx)U5;Խms 3UZ.ȓ  ' T;tQE(9XΙ/Kqwd)/  hS/,DAy6 + q\#|:iݙ،w@]V^x!8-8# +ǫSh;oNL Hq+&U\:v^ʟL&Ne +9E]j& \8OBE x f}HK:qP%c=oůI>SaT589ƛ]ExM98Ŗ^Y"ZTJInCD\N/&D9d+i^t ɑL=gWfŹiբWnzDe,s$lMi嶄F9G?aRB14NԵ^p ^"?LFWKrHRTꍨDo*("5˹86L,AT:0^XHӊT]H(yNPzEOwAIV,"/4Sd}rxg2ރ 0 +F˹a4K!iJQҮ9#s7c΋8d2ȜdȻ +{:&|&F,i։6 iY8/mGZ +Ă)d1++R )Rt}j%vI,l=Mlt՗ e( A3To9G_ ʅ5BY;,Lօ-2C@wLVM´@+#SpțTY_P",EoJ]D.]aMdnH,A8Kn#Ō~O3cDS(ˊWBX0,v:iޢf"jQnELRgܟ7s]a_ V^]q~"rSU\~s?0eB3:?uS!lV$ħ$6ԗjd%nI\,NvSH}^5'aBi+zL&98x{<[4!0h'ee͢" +*XV.8MPN,{6Rp2Ӵj"yޥ:r4DUD{'zzz<7 +E h'iz"@@zٕ]cЫT9,TJr̃!jr,.^J1uEXk\yqc t].9K^KU\j.@c5;DF | +OX\+7M,2C2nex~UAِci!g|< +Њ쒎Xy46FlmXQtH06+%Q$.h3&hL'Z1҉#j& _ڛ'zq Jթ9. +${UȰhR=ݍ㳆9wFvA+3OZi!=vy[EoNnjAP$m,!ūuwn^ 9fإxyq,/x9=H[;%q s.UGeLwIw[_|L]4~h2`Z.ݥ/cX^q9Z^]7m_j$b4HX\J+aw-!xcK.E@IjKrvmdTC`R[t(j׌=xY;،wKGb:IYlbljZR*[+vZKZp5bCAc@;JZҀY>Գ7 +\7^i C{LԏP}C3]KosJ5- '^O)hԒ06k&i}=ߝ }" +^oԍnI ,r0MN[ݫQg8٩ċ_v;zb w{Pv Q뭑V]Wc+/ =>GZ^a3i5˯G+s8٬FzYmf^Zo]JiRMgD[+!bݡ:n qvCIRS׎FWU}y:-IN=Ww?aLhwGՙ-,Pzپ4j6!#iBۣ TD綇#7>_=>cNfN 'Ofvf8N_aoc, mQ۸T )נ nEda>u-R{~t g?: 0AA +endstream endobj 3365 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3366 0 obj <> endobj 3367 0 obj <> endobj 3368 0 obj <> endobj 3369 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3370 0 obj <>stream +hZKϯ賁~>X69>̎ KUft-K0dz~xw|xq>LC4+I8n:9Qimtbt']4g| bdi +q(26y>QV(/ 9)+M;=__[U% +mRe c y +'aQXŬʸuy2I pKs @Q"i3*ĤY '}ZlE0_Sɓ2)JWC*UIF#;^SllT [RM/:M2*lZ'ً~ͫ^|8} zF{Z0_L?„ )t#^=]~y뫗?=W}}ނt})]a9]әT~s8ZB;TǎǎVv<:F^l -Yq6td&yWc:cA: +MGlR>*g8xG58ըf 1Z;Lo"lm|mlTU20<3)?HBO4 9may멄,GWX޷)a]vnP3-i3 uAq *5V9 fa1 @GEãQ{KcÅ<4$+ħ>nzɫR3vl.&P4)$c+(#7zP$+l$#O,i|?H>tC;*Q**%^OU{vajǧ'XdU *_W5y.1Welށ+' +5Qaط,te\Q8'n2Z}ʵtԺr/8>;<L)!("k㠞y[SA{S-લ͚ A*4zΨ E4Śg+ 1sui_QB-!ъP36cRw띶rGX뢔 HnC͵a ~4^d5nj=;4" +S-l +KȗqRi}_k3:C  +'f+n,BʨԲQd3 +K%MpRՕo"Z\f:O*^>Tj{i+#Halmo5(|j_dRJDz|HO'/1CR^V4f\T-+bR'+wg{ Sd= )JPͥ4o"ʴ8m5Z]WV >;6J <\ΒHc$tfe\tv*ܾ@Rj`u/'$UKJi O_DAH]Sv>/ l.5d"oqML4B~^_88\D 2VBA!AuΜٕx9]0D 71T4KN2@>֏}h-^Vhy* ̲]GiB4)l(b Yi@'$S\:Z Ł-^iJ8 Ԗ6Hh9HB *Q9ˈB&I(D&-M% s]=#%nҧ= Yπ3;Bщ9&Cu\h[kÌ۽|b7 oW;|[~hN.Sj/J+q:_#c3~#vVS=g$eY\qS\9ʫ"[~OqQa~>r_a_sE :%\G`nXyyo̊qo/d;pcpgѹl ;W5%6*C-r~g䠖t^s`nbЀkYp'7d%mm4maROp7`~wݎtɭE w \v[q w+xތq=@C +; n]{Ǣܾ+xwos{ xo+Q +fwϽ_qdcXGN&>g;+ϒ0|_Q 9)J:5Xڣ-a§ְxlo3jmLk S|9.&>5~_+.m Jʯ=lP6PS+J +i%*Ծ R֝$c YR%|iȵjq䱔/>o-5\mUٮ#],f= c1'qӏH`(Ek}s8BnU۬Zźw\JY.n޷N.6n1vY^< =ya1e}|{[/nI(Yrkiŋ% +tV4]H_*ֶz85+9^[Y淪;sYg,p|ܮUue_y-&2{ӯY[YaffW_>vK6[ykT9Q$OҒ$ü\s$hzBy*{Q坸nqBW۰qϢ^Ō&i+I@q|gv$[ثݟX3θm]DgY=3 gXiVC(/c{!U$SW%ZhgKIy1{3ˊ[˛~qN}lNbYhjY'oxOb{V?˟J,UbdJ|o3U%UUb\%~q'U%Um(*}-CV>+l\ +endstream endobj 3371 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3372 0 obj <> endobj 3373 0 obj <> endobj 3374 0 obj <> endobj 3375 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3376 0 obj <>stream +hWKo7W\@4oqrH+[uv<~3rweYh#wggǙo~ԫ'fcE%*?IۨRevaԫ6fBm1Ƅk/NP^3j[_q륕Wo jGuv(ɶ^пl\.F-,]X[M&6 O7?-mH*BYiJ)JTJV/-U5Բ_S^}yO9B!A$H.]Vr E325"VVPLya:MdiUՀ—EglMp۫soz|vת j즿^ٓF2C ڪeX W7?^yûzG}|kSԣ"8)ј{Z 65`OiclZF(Im`ς.%آQ4 Pxhu9-OnZSԱFdr}W+S)fDk; 2]Z8r/G^䴡8ϳG0%Oi3Fu0 `!VXo aw-nb[,`:hh!h$61C+)4kVF"8 7 ^+oXxpr!ΩuGf(JR^UŨ 57)\hP ;72)|SwWzn$?TDYY/+eBL +"3U`=IDeWUV~܊Cm6AYW#7(Vo$MM&B [3Kw04Ahr%[&+5;Vk'hD0BwQ+He 0"n֦(C<%jYfl>X9@kM[^`,÷eU⦿|׹W$N,#>8O>|ҬfAr=^\U 闖&Z3 'n rli&-~-aHXA1V}JJPmkទ1;D٪-SRVvq6|"|CX%_Cq<]_%ѿ9Ʋpa&`Z氉k `u{G0<ݗE0AvN fae҉~3~bhy~"yx4iGO.QJxROJX*ƻTq# N4d}6v16Ox"bCG8U| 0/MGE&{48\?#gDUUYa8ZVNA_ +Éd + hV+ϲXY?nVlGuxN +endstream endobj 3377 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3378 0 obj <> endobj 3379 0 obj <> endobj 3380 0 obj <> endobj 3381 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3382 0 obj <>stream +hˎ_gjI`F>8Y #݉P ٰ8z=|r cMfU~Ǐw_߽7ʴe11Ne_tn~;bt~8/ [1i=BZ#̜L@.,>X[Dա<0 t'e#OŒx)ٺR4TJ>{1a~s# xP¡@}Ka +"EDJHM2slʜd3u2a67{ϗӯӫ^%O_X$qkySpy +n:I ޼{oo^o߿~c.y)}ZvḺ +iw'̡iz'mGmGm; z9{@4% R(yCOHܓa">ca l/tMsasփ ſy&RG9:fAD(@w5A fʴ@Y0ڄ٠S熡44l7P? GCr*aBY hSvKvQnA39+Mhې@'#m$MdhR*ŶY R @$>& mx7v29T;&܎®  +m-7v7#%DOa·y9)ULc2س&<[R [[mw(sZy,QhSh (ou[>_/z~"*<@|0.g0ssw;=ڂ %p~ÁaC\c5 Zj`Ii=nPc mMs/א!@Td]bX>CcwwQ=e#B"ִ/t% f)" +GzIO¾h ,֐:?zw>Ԯ*\!Z"k0̋V.Y_'v{p*9j֐D PcӭhEb'TPpvQ-!/gYKI[H^\jH76CdZѨV#,М4snO1>^*~we5*c_\5%Բ- ^#Ҹ6{#KRrId>uʑ!ĨiS񳏲P&^umn"^N XutMӕ:#Uzu(_yߖ+nP]._sS2"'K@MeHUbiVkl<1wIs⸭Pqq!:PCf FpgE_⭫))qٕRWC( +-p69>jj'l̸EEM٬2B&8x#"ܛC_  Y_ ŮmK&fQ}QlLeXgeUb _>2FH:2*'q{lq;cwk) dGA s!յ%[fPpy6/F|p<ψwcgFGv ^Ql45qЯRKN~WDh6I`qŶ[ZQ)@ *W +/Zޒz**X BU_6q +;Gq*x+C7㊼2g+ED QmC@med&5l~Vj9>G : iqUݮF79zX_DbiٯS\+%,2N|)~z$B!_"է.F>"),ĕ%-7 +gНUߓ8vJtU9'uEs ]Y۝[dȻnE1: +Zzu|NL\B9(DP6)J>Zꍩw/!(~.AjoҞw~!wK7 /Ty Gn%%WIun6i~#vx2;7j;N,[Kzζo՟:wy.woWF#Ljly?Rd0xl;0D `g;N=fڬfa4OC? lbD+:W:9 +>XD]-K͢7D\pBbyv +>g3pr =$\Gt{|v,(<<\Gwu6[>=،Ւ,Yj +WSFK5"=&ZE12S{+pW`}g[^Cy? krFs/C4H}}ђJVu &Z\om;d suć$n$j#GeSn=xw=P" hFתd恘[ xAvTpZbH*.{~*KhO@+~+=s U1IO-W]_r.!Z[t9zb=.W%ki. ԧ8~+,%k"*|-S)ߌBսܾ[o=,=߶P]ޱejG$Hƈ^.lI WmE}F"oy[;kI#/˕ /}_}K/=4Ǘc_|K<_}`?+D>>>}|q +endstream endobj 3383 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3384 0 obj <> endobj 3385 0 obj <> endobj 3386 0 obj <> endobj 3387 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3388 0 obj <>stream +h[Koﯘm{l9>pWaq~zt̾H>I鮪gԾ?ͷ7~ræ'?<M6L6vycu=`pͿo0,ƃ)Zɻh +$ـ0]tPTv[Ϩ1uY,>lɎu6RA?Uet#s4!q7vA8JO| +.NƇdbiN7Uc\Tz{&FQO9%62ejN^;^tյ5( +x7bزSmWq^|}zhwo7FrF}3(3dmw~|G<>Aƶz<}: S)y0OE7Q$ޚĦuxx II,i`WM Wbt334΁8xAce@+bZc +WMm̀Ngh\ 9S<].ػ\0iCl|}{I f@AucdIQ$lm<[G#H>q{ąDcqehoMSCaag2\f37 K:ĠöMkBdBzDŽ0FŨaBKcgzd:Rl=#Q1`o2&X&b0ɢ{f鏍qb$zYqbU6qDiV{a@/ͺނX6MX<0g:MdGpR,VTJM.G,;xbĖҍ NlXu4}cEcA m9JUIu\ Cp|[G1fzU!TMg9 #_G>YW@ED-5I9:HFfyBu3=z;-.>cB$ZgZ͡R2EKüX/t{\%ER>ˇX78W%C%ZcVJLe| sWj(%*H5332;=U\&aw%q_eՁ%;c [EҽEaVn3neH?;![Ni + SBS"ĿȧSbIw#>f hv ohF 1U(,ƺ눇,v>%KAnsĢ-Ջ1v)`.)$ tjU̻Xc"ܫMy׈tOQͅw,Qw:-۩g+Ȧ٥i[GZpbE3%tX4 opxHZS %fR%3)f,}Dq(4x /̓F2_a]{^w#΢* +5 +F[pguxtSj]yT%%~#)c1$+ˈ~3c9:?c?:+I4٘fc_Yw*4aYQvZ(awaXݭ:ê5ݠ 5i +ϲixD;٪^3̢?'a 1J@qXJAf[d8Nό,S;q7|b!v86w3nqh%5A#*n= +QUC򄎁k?c7,i?Wu7M3̢ۨo3WdңU  `u$g)x> c pxc3=GfYD]c2>iTͱƝt^c /'N"E 'u˾Բ_hyO>Z Ywep(s4Zk4#k*\)ģ)rOMƯ9-wt5ww{Ί`IMv?].ޞ_k?Ӌr|s86Eکwbެ|k>>$s}~M}ɞ\[^amorX)jϯiLd3eE/I>I^ K)m. 82?G6kN?qNNN/5s_\yQNO_qNO'99_/5%9=3QYuzxQN_qNs酖mfzaɯ^ Hz Nc,BhI[.f1ZbDG" I3V/o t-J dlhx",l|1/ɫŎ4S(jg3u.aUֵ$=˖'Y^\>A|Vޖxn5: WO}n>ԮUzruIANَ. ,W6BXFgYe@Ýa9쨫->f5ei';ddR/`|7qt]K=Bg{mpwGi_"qv'׃M{O}mN9uobhǮ9teϤ'Ҳd=ݯHƗD={+̍񕛶$XP k"w$d-Ђ|M CbP^ +̚sdx=ce^4y>''U},l p%A1hri ?%XiJʌH>J7T3GR%`.F֑bs(F܊ +om^&|ѓV'e6ztv"\V âUHahY[<"pIE 9'dAſY*2|_ٰ/`/w%r +/WWJ8R_Cuuy_➛ Wᗸ?]'_),{ u:@9)=j}$)Rv17f=F \[>P#o=sz +endstream endobj 3389 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3390 0 obj <> endobj 3391 0 obj <> endobj 3392 0 obj <> endobj 3393 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3394 0 obj <>stream +hZIoϯ㌁)vU=KB6@V.09UuuI1 +a8jyٟnԯ.gFuq(jE٘t Š~]0.v@]|Zr> .gacfQh +WxCa.2lP7_! ;D(yu,2>6vaʺ:,fm]^0w ,tY|NnHjP0ЖWCxJ a_'ar⣅#V̻`*J[WJQڧRz8,#suy؟NvQqzL@tmKAGDy&"'O_xdti^ fU&hcowGuo7߀鵒fx4\N݁ g>U(wj-Non.oooLJzgo=P!=4DpwQXDv4|XA툶ڄ 4 Zz +E`qGCFB h;}5G Lș!GbT> :1my62Dž6%^GPC${EGۣa͇y03t*UtJfTٸU=n#37D(蟆L!41tI_ O,[!xÎ!}D];B CF;&59}ovh^yҕ +Y +@{MƵxUY r$:/p} +x0oHb +R 6vy3Jd*|A%b)>R T|a^-fTrn  +sb n@!U@Q5{YB1&-,@ P wڀO_UAF*z˨/`APr>3AG+U)W(NnH 0b HfHU @2̈́^@Dtu`/A0X 3&O tʒ@W"e N#R0F|Q`mp u@~{/3*yS^)ϚLO%thj_tZZhny\`]~Y>n+}dhz\A-.jwC.WPҗ~VWO8p+abd"ψǣ?A}z>wӇO݁@,ϱ1ݝߨkJ{YArvKO{eޯXċXB@irǛ< QpSGuAW,I.\=<$(K+ޯV,-ea'^gڜI:քW8o늒J0>8c#a] ? c(|d rub`F@I㻭W57mä⸅[J0T,TإJx3Z&=Fcz" +H{uR'n~;eMrdY$r̪Dv>꣦E^r,N)@4%($ʂJ^%kDR|5[BG1N-ϥyXNy_I:z<,H M 42`NiY`M$ ^@ 4eH+>%M?TdԀ~Rm +"3 %ƊnDZm2ߌfޱ&}wƸKAD=$S Ry8 +^;q|O+Lx+f%()4}֩kd!* efT0mA_O%K*<]]c˱cG|Yy0FaEٌR7۵yF4) +6e=.]ydG[O|cj Z|s|w +p+-,6Y?mN<"m FQ_rnmYSmeYڑ{E}S=PK7bE @oׄm59 ژ/(vc̓`)n3\tCƮ?{g3pىw4|2RNcO +:A e~OEDk\¾lQphEyֵPQ3gӵ1u.DjTP&c |GSڈFL +>Nv6%\})RdOp|2RfCsV JS<>L22O_)Qw"j߽e)=\Q&=ƔCW._@.KbzFͷ|=WaQz<6tWIV,k{˲w{rpԥ[_WvΕ[8S|1iA?Q~CPxsQ glkxM/40?sƈhU(#vP>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3396 0 obj <> endobj 3397 0 obj <> endobj 3398 0 obj <> endobj 3399 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3400 0 obj <>stream +h[[o[~8dw  >}(*V!Kȿ\zxH)HڅaPggfS?=-XP.nQD7~8/7BQB + +6Phvh-|߮kPvzV՘Thi&?eXN*iYCS +Pin'pXp ف9#vpi e/x{j% 1_, +ݸQDյe>>=VZsTs][ڧ=])]qIgUMɞ6tt6rY~ lG沿 &0щ0(T[RqWov|W߿6R߽yi #\f F +PVaJ ?/^cwyuxaWܰ{}1º9G7<` ŭOBaH(l4pʚʚ`?֦2X0 ZDd$|ⰃAH`wJNpu&@,;Me)M_66ϑj́gR^DJF V',{ZJ~Vih@(8TPV¡@LhB.x"NYXIܓKaxBߠGVF$#|9E;ocwJ<_99:F\ ^TBԸq6tI `Bw(CT)EbỲd*JT8 +U* +&#ˑ%/'' +eeŭKzu!dX0THf UOOɪEp't/F{/!imZ\jE t6lX'+pT`C3#t/_Qv$tnIFhg*IuX6|GeFے ih*OTlLp7lJPhY1ayqzKh%'5G Q90I)f`:F0#@.`HE^n/0 poh}Rrĩ렘s"у*C)e45f +ÍqVTV9AEA2 nT"/XXU-X覕97Vh ixE;VYǡ$FzHy.0IB yª|7"-7kʲ.mß^% zBκ,LJsH, $SU9gs0CR`]vvj +ɖY:(=nGHl$$۵۴Rz23f.i TBVr&tS8!$`*[=X~{@ +٢W)A)|;_2'I`Ju9s>7onR6x 6]> *yQQdžqayY$aI- +H{|ulf3nֳ}f;1~],f-T w>%L⮲be +坱5o5{] + īD6!2q!âQpb *&x@d|njnIgq2sˎuI (]7% orܡ.@MfPq35G p$:yOwVk<_VkoA9J u+|VX{.߮˧$i.﯇uz|_W O7OX+RcV31lInt~x{8Ot<\.]ߧ6m%[9%~A_(u4yw~y~wq',? ΰp:)iا!wqIr+Z\J~´~V +\BD^1 sv9sYj:k{-Ա[z8+3\ρf)w#yȼ>IS<& 4&vNuoy>;(6Xڰ!*d& D9vQs&s.S1eL gh7s 1]VLWӶcd:+GLU4$0qO50 Q hS2._Bƭu6'i3\·yE"zPrsWCD6z̻39J:Q[l9vt;{ϴի)̹PCG^ڙne`sYHPZ)|)M)h.v»p> RnzSQkUEn=M7Ks&rJb!"Mk6!Q-V",3?p +8 y2:,|4ƌ:s6j޴ѽwEWꐓ=אB!8'UdvI_jk.{Dvc0 rjr>/N%H6guDl&M4p|lVUxR7t<~ +Rҟ̧չ1MCc} Y6T6&zU`LW#Qx{}|&S;Hjs+׹(60Ƨ.:^mO|q^WӘM֋5nsl_1)ݑ +oݜK m@iyry g < Rju-.|#xH1 M{ =IpcPc$XS@5&]wI6=FbH2}y sTLd<5s6;x/ +lܦ?7|G(#<ÿo_z׸ܖm +S>~$J̲c#[?Ch<9pj~%qˏ8:g(S8c vw"Z|= CbB;<υg5/G~zN˷"]_dsXכv^qW\z9]6d+<ש w.^ R;~z<~2#: q4fb)/Oyt]iXW ) +endstream endobj 3401 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3402 0 obj <> endobj 3403 0 obj <> endobj 3404 0 obj <> endobj 3405 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3406 0 obj <>stream +h;n#Irw}EX]4ua|Amj5VNc*^2bwdd#_ }ppS +iq(7כ8MGh~y?M. &ͻ0Z5[ Pm393f3zGԀn^+%2@8Gjz%ÞAdPu1@^pezifL{7X2ur#}A -NS<- ?ȿ}tÉ1?&;$1y+ Otp#8q8w,v=sSq/Ẻ /)>ۥ0FO->oM2chʘ`3<`h,/ǿ>= C?~l8B3y&L mxZv11T;NxSxh|Ph'n[rï7) +4"it~|GiLʘiy άA)n##OԌQF> ='DNKZxb4a7Lq".DB E ?!akQ'{to,KJв6=ūl#s|Å@a+C*=-?@|gUQоT)Kh ({78fVRVNhQ1Q>,k3lHقDJ@` +b8IwB0X58=-Z861 @=u  +JiMb(Ц";S=e@$ÏèL * a7j.EރeoOXȝye ,s/ِe4<2 uFNqbA7?.~gފ )Ec*ON3'7w%!>< 6+V3Zd;>0Eݍ ^>!cSM( &|[oXp6OU_r}6&hh$Oa km5FؤkrU*r }/9fYxah+u"+ב.4"\ J#WLxDVaI,AWH(C˔߷=KO)u@&S ݎJ %Ό3_DGD]"meEņݷhk3H=en輙xq)lh]H(v5 ?Zk̛#!s1dI-=KuH7vw^Xj[c$j 5.!6/[m}lG>6BaU ԛۉ_;$3HnuS&M<3ZA:!Q;RpzHlW.,<,ZIolT~T%&ʢMs&IWsFUEK$zJ&{!!!~XnR㣶wz;'-Q)]~<%`Y?ٶ`eKN]ww|q奷% N*SZ8_e 2/$ &X3O_fe%aun"`@K[|XKٔ7HGVö!ƋȳCIc$NГ'Q"X8tR52 v5Ba}c.2[|.栖q7\2`xpZ-5{ Ih+@k(¸>' YFg z)zJ]mnz!S)0wymlWO߹0ql0֨s"YAzi\KV$cRb=t@?fpݞUxt~t.:?I{aS<ٵLL +iK*$r:VCI5^Z@UZ[XrsT# +@M"t):KВ!vF_yEkfjUzGYxdZzZi1oi5X{2 +:VlpߥbI5~NKba~eЃj:tM +Nb>yJm1UǒqѠ) Y +I|Hj ښ\KC̺*!iUJBAy]l{bk1VԑVh牝oy0 +T4WK1JC=FsWcG G?>R3OeJҔrqlvX E@{dCKT4Q^7#ZL.3]ln@\Iz}!Ð!AnKa*|P%)b;Y ٞқqߜxu*K4 ]*Xӫy<7-qvYW#jc}%,Io5Wq"׷0P=IF./py- Kw5nj2^u>X~-X2:zH;-KvfB +(;F/eyam rg#uhkQKҰk8˽{9mQ0Jg~lHisw/Urir|ZU%!ɔc"r 7͠er8Y_[ +0F +endstream endobj 3407 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3408 0 obj <> endobj 3409 0 obj <> endobj 3410 0 obj <> endobj 3411 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3412 0 obj <>stream +hn$>_GM#$ 8:ȫ@+ }Gt^#FY*HY$///oVonn̠UsK CnIJ ?FLnиzw ͨ;(=<֍>n7z, vchs&$􀿊/jZTt;%C,g8wln4i֌nf"Rfi99[YZϢg5:bߌ&ŭ'>5N0Bq9B:M9La3_\cRL]oz:x|i;|Տw?V17A#g?a#-՛vo?O~% Ӵ{.0B> +q8| lQnmm 㽴AFml#ܨ'.FpgF CK= ,vӶe10U9-d]mi .XUØzc4Lс +Wc@H8pj0t1̘hlRi>J`rŶV`z`(,k8(Lxv61X;'\ּ4(# Cj9`AIP*@Wf*zjQ1&{5+XN뇢{Ď@@QC5#D[s8dՃ gӬQ^{7i\fTJyc}'Av5U!erVm]h`QYm>d#=Y4۟y b?.80gThp:37pom(q=ԵwMi_ `aJ  RW(UWB:ddEף 8kNkEK|.aTx FS7(B-8+ \DݭD"k80t<{Y'c"<Qe9Rx +wD؏5866ֲؑ%T*!{஋LAAj +CW[f;I12gnqӖc  Ql:"eP _jQXK"A6gLwyOf4z!,~l?]~R)?(PSŖ'n ٷ(:}ڷŌ;= 1Zq`1ȰM2HBD8+=ر(·e$3WrB8)Vf/6<e;=c»2Ѿ_1"G8M!qRQrf(U M8mp|9EsFc'Ŝ W$h[|q!-uXd" QZG0_uDR>D + cGFg^N/j3NwanB)Si-yjC* +c (Z/E52:`[.E9hRFֲ>@6Q7>3`dˠu:uL~qI+]p.j CUA^q-m wxq4#9@c4L_B  +n.yP =4< +94[t +tN a @p=8ET.`B8d</@@Wuv-ЅuC taݜҰ@&5$p3.yF,I788O`=5 +pr!uz|f/oj@kė]@qL-iA M$sxZRh\!7ص +`qA- 9>h|rvSdDyD+ǚCK0/mE&YbNZ7ĥQJʗe\&pfpl"/Mspm&D B- $CYhN_I)C98O]ûRS\Dg. %vu6BcOPɖ5| ˆV&Z/*RbQ.E3>N_UMrx$>aGKY|VSoӂxv[,\xڪ_Xsb~b`)TN%S gNrbʾ|`'[wY|aqB_ :v&J]N]O|UӲ;E]wM׉) q˼i6P%H v[֫TØJx6`arQJ}:ST(m^.} PvVvA܉V W&B`S:|Wy2ѩ.jHRUop g#^}*YE*gwJvs\)Km9PϹ]䋭f;s"ա3Ghۧ5ru:M괶W~=ƫa YFpr:>"ݧax˯ 8<dv2<ݝ>7k$[q=G^D_OÇpprN8||?G=p*]B{n2Qpw5W@W_;|1L:_6 2#NhIz7O2a=_xN=̱gI^SX~@XZ\@Qwqo)[_Uٻ#O)U:'*EVJ86A>I-uܾ54;:fgr$ b5Y*F"5H3B_uEcudž8[l&%t/!``)@Vdŭ0A.E .et*E.btK3toG.--ŵ$W ^^ 3xqu)M+/\3[Z;) -7iR88796I#1 +endstream endobj 3413 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3414 0 obj <> endobj 3415 0 obj <> endobj 3416 0 obj <> endobj 3417 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3418 0 obj <>stream +h[]o}ׯG)m7Ʌr23X ]$3^6b+3ȿ"{Z5k ƺCUWf^]]LWoʴe11Ne_tl~nv^p%$a  mr^"p&skKw5'W@7Dj[fXM-&(#L&(6&y}mhTia:0 Wz`{i7~-$S 2gny"% Vd-3[UěA39+Mh%5 <(UF` RZ6 pA,5 +ħքm D&? oGtpW ,4.(-[nl6%]#h%D.-a/s])$ =۬a#mf"? -'ƃk'%}-濘R;B5p^JXMlH""SʽH6xd^9T = awʼLfƢܮpJ!TV{pߌDەT6˯Qi s.stox;% +:Fx4[f%M1lhf}tJ zYMGXWU {r{bIdMɶKK-Aun殻 EƾݸkC?JT$g$(1`سZ"nQjexlG7Of d:=F-]73lI-^l*[i;ч̯#d{ᶮt t1s9_4!GX=CBfT)iIf;qڴc0@&G[Fmm1_c՞֊@YlHXgUrTxJ LT9ʦ*ѶTM($:z&"I+s鐮ԝ-\AӰYD^,+eEPk9&?s,mV*Ws&[`%ŚjjSD: +.c4͑ۥf (HPN8lR2>Nu[+5J`bWaSo<-cŭ#yx!-&P_6}4e +s߬a H#MCy*񿶀B26qm5 NA^G[+G禗*)8N*SgO?+nj )%#K|}_#’ߕ(D5Eԝuo7vqU8(kzfV\Ij˚]C\AK#扞>;rK!?\ۋ9.`;(~|V.{A/0tӇ7\b:_Hp_qxaza~Ow 0"C$ĭ}S ~;?_WUcN@5]tuA:_o痟BO?]Kw${mZ'(b@^PMl)O 6cCzUj}uLJ^ [Y;J]MU8Amz S`/s@)&15^W1%#=`3SXtGzKKtiG.Md P ` v;wLx4,ضjOZy د"t:+櫎3uw[j^QQ{{XG.ֲ{w|(l'Z=uts._>ZTCgv_[>\p]H<,D;ozd⺄;.QsS` Q'[;V'P Xy 5-]W/2n퀌wR\P^(i:XkVY~fkGV|V5K,={s4O,>_ls4 O,l4[9Y³5wQrIO~1h2_~y,Rb$ynw6^w$yҷΓ?@[;J{;[-s蕒͖\N}a]%ȐbDaY'.a +uS#Ur;~h>f4:V.?Z?Gv㏅Ü_n {:?%Z>Zڗ>Y/^a}2ӳO_}z_}| /}2óSi^J{e>ԣSé +órGT~vs9ՍT1k}N ["I+-g9{nĦhʺ\Y__ C[b?ɧBHp9هX^HqRi[z@Z^w]$6k3 Rr:z-=:qrrw]e5^;2x*"L!:3׵k![ 3~ʶPYWd7wtOl'nO\_ 4]o{@Gtl nn+l ?\@RXn5y`K=,Bv E{|26˰d`W{>ЖbKɄm>:7+.pfᅬ.IQ#G5 dx+ҔSCؼRJjGzaRCx+Qa?A_(}M;jY|n_S_™I  ('pǗZ&B,:u$* +(a)}eƃFY"qBZ}5$L\57iK{ 7b8\^psy}o~V(<`Vc0ߣ _}[ 6O7o:e>UFJXemUjn]ݼ7o`z7i'8f\%pؔnJ`QE܍OpVWgbzŰW}1|< +Flgħk?GjbkS;lzI&˦ j'nƚx=|^M_${#qZUDKտ?\@ 㗱ޜr  +:F &ʌ77S@1v fq- /2& 0 ؄$gpȴ؃ 2 +:!:^ͣჃί;ઃ7W n\5 U~T\3O5?*Gp<WcZ;hZ\Gŵ!?*o#Ɨ;~0p GH  `q.=Z Wc@ŵPq-ƀk1 4S 4T\c**1WPq6gqdq? ͓n^r/8L?Pp- P #xgn[XK!_V_9N?G-B#[则rHLh{|0>G +UTUfajy||_`G +endstream endobj 3419 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3420 0 obj <> endobj 3421 0 obj <> endobj 3422 0 obj <> endobj 3423 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3424 0 obj <>stream +hKF)x(;01s`Aݒ /1FzFdDf%Y=ni,UL ^?w{qo'3ݿ+sBELSJ~vyqwݼ,6OTo^R1-\3_<9|2sQi̟JUw>Z{EPkr6כqkWu_{jy#MgK-]8ټl`y}}G[)чl])e}*%O޽-2Fw_^,=6| +uh{AJ&`u5m!u^1r*Plz9iX (I|srl&]L +/{MիR&mh(-Oi`f %v:i1޽_o_}=N~㏴RiӏԐ0S4xH:4=~_.s(~kղeҟL5{i..QK6I{WGg#K9ݡqL ]-eZzR\^'s/S KC/why'cd3ZQ'N+8smi\;(6"~}+R9+Ki&Mf,K״tmuQTĺ{_ e S!˗ g\bѨ"qH;;_EJ;.i +S@BR4P*4?ie+$ע"ԋT=M~!uM<\ZAH,Q*')[QJnn6%ƒ/Vӥև$E&\}Jˤ_hm(y_1*e 5U6<N> sI pdC̛-*)ΈLM:.V~_˴,.Ke/Е6rNڮTeTOrjmZbrr -B=mdXi ;‚zUT@6AM<9֛ե9fgdDkg7Z-wY[(:ګN$R%K2me475~NlRָӧ/3J ~9~{nY6Me |X _ iݙ#R"7^TY/UȮX[MvV~콑6Gb*L{sf̥,w3*yu^t}0E&ڑQjrcQ{7̶bp #TJq#n>9cݽņi,ƤGj@]HתV%_uIkۉ>mr_.X{9КbsƐS6pĘYh|-Pz2-jvP_wC>OѪҬY ْ3]:R\QSITʮJxKGN$A MLu2JzGQMӇ]?hr4k.S7b -.,tNx ?Ú(SI,mSYo8[HGmVwNթ~NOhBϩ;:iO6ڕh?e/ j@*n^ZTڬD_E`\`>KOKŪy5@&r+H2:O.Epn)v{]"|>b% A'9UDq,-Szz uKۀD܋?+MG1 -[L;rk·N*#˔ȕ$u\Ө;OQ{$O+l%ѳ\$0& )nJq*ŭG9߸_npZnHog>gceԠ u9DJuS.mƹbۍ7ܗo.C\/g-=ۺeaWgƘd%ď2?bsRS[ox/7W 82)=pKhYp_V7f?| 8$ޤ}-&deWmܿ+gfW=L䥌Ӎخ8!/v3V!W.{>4  M[^˓^Z۬W_g/4Ք%2*N}ɐude12_ w7Η0z|нow+a{~H=}o틱[Eee_Hk w7 )$3礼(&m61I ew0VA= ]/u|W۷UsKGlԻՄԘ1!pbR|sn/55^\rm.gy5ء{ 7ńU.kӮ_99YwW>67gusV[lSg&Cz%喠Y {;MП۷X}p>/fgB8Hk~QcBj'sύg@_~qo':Jیza]eu^soNóx'FcџfܼNg'mRG1<}=-Y I*x/Α[xvjUFkF{|Z@쏽,-M]FiE] ION<%ͯAM\w 4/C:O*g':8lT\y$+/fOF4z+e#g MahiLk)^Qțrڔ6e)s9{8g7s9͜fξ͙죍c w0tUq%1H.,۱Z{Zpzwewqi\tQ']t&c35~ąs W&ET #MD2D)O*hWyyȉxi2cS|6_* f.u)oR@ wqM"w\@.]:-< GChph4{4wFGChph(?  k98ʡPFk4r5G^q5C8ʡhy:𡀴p, X@ʡC R +H8r( X@ʡ<.K ]Ro.v)ܷ] +m@`.v)ܷ]!hhx4! h(GC8>Pp|4ã! h4Ci( X@±C) +H9p, P@±C A`*X9 q7c00nƍX9 Gr7\~kx$ )'H8>A ROp|$ ŬV@r( P@#5 +q$ƑC5 +q( cV +H8p, P@ʡc)R$ H9p, P@#*  5|P)>qG>H9A#Ƒr. p, X@ʡC R +H8r( X@ʡ|c R +H8r( P@±C RhCY|U{袄cF`]u؅).L+np!]).N?wC(@2#PC9X?CC9P?cPC9P?cPC9X?Cf6vJ$_-+~)_;kp7|?C9» /c]@k(_}|֏Ѿ(pW1pʡ~(!|cPC9krʡ~'~rh_G8PGE9ԟƑ4G9/#iOHC8ҟƑ(8/ބq40~i/a8_Gr4Q8_q40~i/Rh_g_9PcQҟkG9PgCQG9kr?±(_v/ʡQpE9?ʡQp4rC#/C(/(C9±Ppl?C(C9ʡrh?C!5il?C~(C8ʡPpl?C~C9ʡrh?m<ʡPpl?C!~(C8ʡPrh?c~C9H?CPC8P?cPC9X?CPC9X?CPC8P?JW|_~5Q?ڏw7^~?coQ?cA?~m?co~ua8?Gr40hC9?GG(ha8?Gr4`G~4rh?GC9#8ʡhُƑh~4G~(qh?l?3jT~Qn^)<~SNrc{p$tXussmW .no۰}`<>ܜ{ԿKӳWr>=[c{39w^糓_9zR<\}8Omvd?,dקnUc1L1O>>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3426 0 obj <> endobj 3427 0 obj <> endobj 3428 0 obj <> endobj 3429 0 obj <> endobj 3430 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3431 0 obj <>stream +hZKϯd`|_b^x]c] dbw8p!f]$'7yqwsrc@<@hW{WRtxp!̩y|N<^}r&Jcm=faCJdF=FpJ:=b3xҩ6XAB$S D  =꧴1ɏ*l wb`d|Nre{i-L^s ROA4>1c+93e'0wMTՄ<^deJ,Y tҨKC0kojȠ,8Jc$6Rt +B;,MLd䳩TfDuV9h*xQcNj'y'r7``u?y'o~z8}y-6$ö́WlMz te3㙻z{BC&ĝQ$XDpU‹++ޠ0p@,t* f> qNIz,{v\㖻.<ł_)e߽jʾ}#cbi6壮TP|v]qox# 6"m yp|^oɲ=qTMٌQ"?E0x n0K.y>=G7hУ,WCi(\|l7%Z +5cȶ+jӸduɒ#wdCduCf~uG7OECg Á[m ~:=yĜV\ zC}9\öߦVy%4_9ۖXь`S$ +HyAFʲ…/F/BП2!7!sC> w1v+>P>FaQrX]lŇf+>4W|(_\ViVcGa5z=W|dn֍w|(PC|CQCW|Ň)q1PC_jNVCs|}5V:?৴ƇQ|TMc+>n_u_a+>ԯH? HCPWOa;>G'֟c+>ԏZ)>+>?Uc$ W|C?oŇ+> c W|_O+ _꧕~mbY+>G(e_Z~&-oneI"}C#.,Wkfpϖm7TD?O +endstream endobj 3432 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3433 0 obj <> endobj 3434 0 obj <> endobj 3435 0 obj <> endobj 3436 0 obj <> endobj 3437 0 obj <> endobj 3438 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3439 0 obj <>stream +hޜZK ϯ`zU@c|p@A]Cd,Ś]ف M׻ݟ斟?-χl>rY}^Jk[X?úmgh}|ٶo#m~*g[x|;v}# ۧRR'z<Ϣ7 7o'W + ְ qU#?pVWՇڲZ]>?̒>6?wn:fg%mkGa2ք=[WOXt^Pvuq%+}cT[^RZ+|p>>u]"WX~n\}QO/R5ZZr诇>}xw>|gݗ׭EGҋe˗3,y(ܒ< +_,4"ۚZ\H4njjեk +Uar]]@_i9Sa!ssqn${p=g|Y[چ96S̩;:u.SۃQnF0!^(@w^}{5#Wiz7JV7H + +P֫OGB~?$ԝA~׶'Ix4K܄F xdk$Rd^zG J1k60`t,I,ڄ׎siS\k*A4q/@뇀Q.hvX]+XPdq!Vg:듲]})n~[XۦEt̙GQC&΃q-0=8*,Mp]W]\o̴'[J$Xݬu:b?Pv`h*/v-4U!UkT DjV6߀|2[Y8|l%lÏߟD-Y!_Uqg X]vS?D +׼$"=80bEmꙢ$ǹd1S Bs,|lnq N9pbT +JPhKi-}0ug^S`) #*wN !_hs1N[,hrIv$99ګduA ivFA,F0)sM|MGGGN!8]d.wY`gF-QRPf7RCRݪ:tgi Ob +ž 0O!ѣ#`;c3z=U^sb^l'vBZ5;%M'=(sdgQa"̓ [>ERQ}GY5$gNtȆR%cnj%p_<m*\G @ n3É,c0ME% +FfVu@viSD=ⅆݒKLDA$ E*#K{ n˫cRC}Y UekU}媳h٤f=χt5l4ғD)㮶cαZ4~A7?ĕ3<%>+lVd2,sǀ^ 12,ZE,+de:s눷- ׉5N?]a?.C[8!1xEO,ܫ }DYKlЅ2 Fo'R)Pf\bBKp9.r`l*Q]y:zػ uĎ`n YTTL[aw2˘PG$=%<U-KcwY{ي E6UYSgdiN%,%^qu&8]7=>ggku7,)D&ͧ:@\ ыLd6%ЀZ$eK݊F[uhtX(淼5q ܹzAs69Ӗ1{ʂ˒kʢC4Mu{ILJ/^G W| jЉcaO/p9D >?١ُ%?q %I-=&H6(lwCf05猆;)5jGl~SWY[M"M%T5]_T +BƋ]3>k[Plv$^gK*`x0r.%]kSF0y{6-Uym!NjÄ$uLgBt%I1t7!FIݳ d>M&@*$,M]_2/q՛NKIsu=1F:wA4_urgL*Vo)lhk<(dK nsȟp+\lq||Rk_Uk[d x$,I3#OfZvUA0\b3XQldT0>TYg,6%jݕfNP]#0ܫ (d<&S;KFxb>cmZ!ߞނ3xs/oAnQ׶u? {n1U?ObdR\\S/ETv +d h+\!~GL37V8IUu @miq)~(ÁY&+K'MaC-|0ThBQv4S5!z:֘\OW0bBEj `ք &I"^(9øE킩Y^K^hyhhmqNSQΣ~>ߧOe ;jMD*ϲ+Y*NU6~kSEm6no*2hu3_q8SH)8)w_:靱A70ouA&axl}D֪KFǎ'(c_UYHI oVRgS6[m ն_ӧ 8.:[ԡ| >stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3441 0 obj <> endobj 3442 0 obj <> endobj 3443 0 obj <> endobj 3444 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3445 0 obj <>stream +hˎίcb`Z~|p@F\Jk(XY8|z=CZrt ܙgz^onۻË; m񹘜fM6,wvk]\.ڐgrZ*BpD85]=LÑLė<&& 6 __/e|}^J&TzJGJ2 Z}a'zs"dVT ?r <ą{D@ItccyRl-dZxZk||{x8?fkM#ܭGF_r?='X8=Kt =J.|g`L %/~}㇏޿~S^.0c[tXl^>]`"Ў45P{j~X5Ņey8ƥ$ꃉjZ(Ec'H-\hfOӡ%n0v`8xXaỳ+bZ + WMM[`WchAysx|V]&ػ@:fAD(@w5A@TZAlЩM 8&P;ސ 9X}?!hH0I%xh!сH`kB$#;0&2(;J\n @Ģ 6WeމĖ *t5&8#!;H0&ypf(U*p-Um֎+LH!OlIdkJ(xhEMa8De"RT8s훪n+ ^!C$ȸ /,&ML4̌=AFW! .J0mQ6RN lR"iH(HJ:HH +5BkXu5$Q4cp2!`OyԜX HG>12y-o2t}q5$x=dI)zw%}hJrnZs!.Cs&*h qN,X=26@@Z#)&Ϋew2.sgNߖJ< =dL_hxEa +bU4XfSa!wvyL+0yWo,?;$xSǟrӈ|ĵn[,lw˲zQ^nyY! &Wu]'xdcU-TY $ V* 4pj;Wb2z2u .C8(ٻfg=l=uf|pin=DVնp#%Tf(\9N즭f+ HjpyH.M~8p9qydp?$fu?LXHwW5žp_G׶٥-æ4 ^D-8A@8Oyv9Q Agl񆫼FU.C:GA~RRpS-6fَr*0 ˱Үߍlza6nd +ˣZއA8a7~($\ S;NގOٱg{^v1#H, [8@3o{c4ـDc;5;WR +endstream endobj 3446 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3447 0 obj <> endobj 3448 0 obj <> endobj 3449 0 obj <> endobj 3450 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3451 0 obj <>stream +hެ[K賁(A,df'`eÒԋlLOk0=$Ud_>xOnWMMGƧ)g00owZhO#FkXwY|_EQr(O4 i.(Zz6{{>ql3(q8z?!d+ÕPk Z;UCUhө6Ej @: C|&Νzʕ dADM +aI&iP;]j2e*|Aߘ\4K7?qw\~ݟ8är.yC;TgPF㧃RԌ޽ۻӗ_߽O>y߼gԷ[M3D{)=N +Gn@xkbM3=*L{bT`jHuW3v.ABty8yMDs!6#m8l*NWL 3ӳ5L +؂IpDw2>$R 34#_h$6D1A z*#[ğ~ۃ?YF|jw,wFuehoSHV`g2\b3lHDm6E=lRd"MhJ|2hgqUjƕ̤#eM w' x\`oSb/ML&"Қ +;j&ŢmbĪƟNTъ7t5sv8ig{ G[LI[CqqZ05=*5plN\bJʌq)Q~ʀiʊ!I8K" 2p_pƥYn3 8pɓiS'E LPЈZiEܥd|Lm*&gZjiZ dYbQAǓ(+#XI +F.)’Ti?:a 9/*0kZw\%NIјpLQƮ0:Ngot +Z+f$M\kqG&D]IRdX)ud!drqoh3u:g.]"Z$ͥV#4i) ֵFI-2?*ttm qC}͌ѹ"O..[C–̳}C0%YXS|p5By=(ޝ=sA,K7~i4Ж!jY9֓8{+-uBiyZ2Crea e;)x/ڀŀ-l<ǿx}5ݗ4Mblt+=ԍVJ,ߐ?XU9QpxnK2L/_uL * _`y!|  ,UCӝ2d@& $X*+UTm; '| +[ kD+!!(wO-A5[o:E)G.Q@IJȄ3 U|\[DvmcfQ4PMʦעS_ 6cn!aeΨtZY,NѾjC.5l=ܫLt?òJ$I|SӪF?e1P=};S/7!+Hˎ!v~Э*Oc 1kl%담҂`@9VRP߇"AqV#lUr_`W[* +(mW(5@.: (58c0tF]ט:"jr`TLh@k!$ J A R#Ğb.m~ppSqq:h\Qee:*ڲrxFK@[Yfz#W; V`E"oGᔳ +^hZ`kMr=&ЁJ5zu*,ѳ3mZؼZsjsk5fƮ2ŹteЪ]E|cFUzfI뵷Rp#߆`TG :A؂A 7U^Zh;w.Aq-%Ĩ{9%ӷȩeU9WMcc[0t A= Gkva%lfq'D9~/秧'(D+)7R֭C5Wof^(fJk>ے`v y63j%W1z|*zn66SțKO,JɌN^撮nM<׹.:V8Eo&=OVW6Ob+ߨODj})~&&c#vo0I e lrgC/˥I, +vQvQ9RU%sXDϵxqCC/'ߟٚuJo-CX_\򕐼$ӻv_ok&{WeSvzM.h:8%|ȝkǽo3A\HHTM.IRY-TZ_u60#!-Y\+[0b}I; PK4')|`]2 ^`[*n #2}(i[QӵBe9{ +B.T˼9:"^ﴻM,{(w)+^2}|@'}9A,!|יik>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3453 0 obj <> endobj 3454 0 obj <> endobj 3455 0 obj <> endobj 3456 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3457 0 obj <>stream +hYKoϯy(+ar0rfi*&+`a"Yů$_tƛC3 ؜MsEsz<8hdNgH\;/1ـ^_Yr23rj*}3-q#OwҝH?׶!Rƪ8FǺʀC%لPx"MRI|Z n;2o*KI½ W\N}}:MLƆZ3Jk|?=08eg[r5۲Q0luxjûz#Ҁ?6$C$s 8 8 r{SM@l%*2g|>bWޟx's gusFߙҪy*2&5pO>߼xl_|YKl>goZuŜp ΦFFyr9O-ѶX uYhz-X'Pd9G=N4l,6#[ +6S6S=XcN]{X.p- >|U#X d42af`*ZC>jsM}PLۀ?鹍8X +5‘wYBOF"f5iFI|&-ůw'ai5QyMy1>%5$;pA5!A^ cw$G^S%r,ӐDIJN&m+U\YBVa)Krgé(eaN+In''!o#_rJd}v-,^\ɵn/AU~ųu7xߖc 8Wg}j0v: +Ui93]] &Zot77K>h Fp8rOK> m;}to׀YxDz'H;J!5{e{1-*k$!I;hORx[F%)R0*@ ɝ|t4!TKJ81,ZA=GN+إ(%&6{@^$ZGݞҚp̑v=ΪL5C!=ϱ|0'\2"MjHj`73H1=1E㪴{{eg1*bDBғﻯv]}f +@(XRgd:wQWxC +<^ԱRϨO&2玏Qa1gagIqpnAE/O]yGJIOq)0wBʲ։Q]dꮇOt3:U'HSbiy4|E Gm3-1v=Qis~2{~y~ʔqw١V+ø襠iPk@g.RPiPk@R(i(kM|& T^JMԤ}5$^}]Jc8f?J8L+n嘴E"qؑ̕;=[33ܲέO:s z7/s*I e%iq8.0Ͷ%N6xtG/%F6Mx0K8P\9|Fi3fV/d~o^K|}>h7P`Z_$2T8ʌoHQ |!aGLÆq4UcNTdk$y`SӞnMSt;.X#?g*]y4g}72!b$Ә%W.#f]\nlJfpQ}~ c7ks~BqvD„ƅ%4H[^(zO>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3459 0 obj <> endobj 3460 0 obj <> endobj 3461 0 obj <> endobj 3462 0 obj <> endobj 3463 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3464 0 obj <>stream +h[ioGv_)^ +czd,a$sBR|O9~I @Uz[կ;/^_\AҘ O~80F;);\ѨF +ߎ~a%pF 9<}O]OXYWW+ukInG)rq1WCOhlJi]LiG +Kr jLfQ 73+ l\A{ӕ=jhnV\Ӓ)#={suoi8LЍAQ7>ݮoΜߜQ+G=W}5A&G0'?aUJFߏ^|>pvx}5cgazG鹨pEo0eq +Ĩ'7hRRR6WƎ [Fܨ&'x+4F3 +F 7:v˲u` UcZd衧1`V6VZ9F)ljΪ`QC.Fn3ˌ Tq]-LjGrAK4TtGooL)kC@Q +BfL l) bl(FkJd92Xhx eR]!bJ }Y +[/;ŶL\lE40Ymrc{!4q:Э$4%rekC.ѨS$c$d +{7NάZ>F=^ E +aPuO)57R RCƉcsr/)"2t`8aCΪ˿0uLD{47YZXDz),sc+mK~*]KyRkBdRHאDYY5=@l~ϒ$4_ޜK-M~8p+W$pd'oO{usH8#ig'X< + tmv?t|A-akϭ۫S#xCȺ,$8@\2v. K4'S07n04!-${?j_4_[QLT dW4d5U4#!oL/Uz^,Q 3jEC'MuWQ[9e/8U(ѕzȈS$ +N^YIQ?Mz6tE/39eԥR چ) L Nz'N˼XR7hT'r7zl6Nv%ONp'80u~D;#jյQվeV&YK\!"V %-V[l=bE+a(rdAئrˋ\e֚S_𓂣+D7Q[ Nfd䦭NL[Jj@W^VP7썝Ẅ¬Fb՞>Oǩt`( ($c}SMLrkGtƲhAm]j\umٴ2S,ml[94]ᕙg[  +o;T6]mQ|garc̚_Y,qʜlPLfv sljfN `K U6YeMK4klKSUy[-υW4U/zuWNV ,]]:}joVkU[6-g6 ؟lzzkn]M . >N'i>¤tRu|u:;dh f'f4B^`|gRIEbcH2),r*q~!vA!@]$gmh}US: > 4IwDXB +c\Ydv[<;hkW]nsa ^sAeh{SB3|d^i攽]0VL4O6FgHc1|#4]{ 1`w`RShM1N^Ak2ݒzx(Cr`0ߨC|c1sbc r@VAK"V0VDVPxKC Q&EI;TJ>!ktzHS6+g +M~: hN0Y ytMo; +y7?ʖu7oNi"'XY :g9*<7S 0/.?[y0oG5;>n}3BoÏj-?bY(?,<@'o7JTs޺n/CSJ,z)M݌t R+@3$%nkF3C'!2-_}y7^oW< Hd@Da{EDEI(˘}Ⅰ-HXR# ڼҳtbaCV.$AdYS^^&6/j?*Jo0XG.NB3dQv@4Y7BiՁވR*$_ 3;Ez7 LNL!3lp8,#9o&"<uPjv^>ˍ@n3{p Fzhn'3HظχgCu^Aڙm(GKD6oHkF/x!vh>h!đG-g&7f`rbKqx<{%/~ʅD,J..ћ"}BlM?몉D7uO0y ?   FL,1YSm֐ 4ح?|e^eK"VYd !A` 1ukiO!Dc\ݮNЖ 7=| ci8&ظ'+q=}bYTN+D:rzmbkΦ'"%-!ؑ7a͙ g>5_g5w:_ahB;S\9ϻ+qB̴֏욠x[_>~h鉽LLMp=8 ufcL f6ywL,hl%ǯk"Oy}7j5xͱB'`;$3]mgX.?II4uLbp=ՎY~W+tër+cph1\[$MH,h}SR>fUŨ~wmGg45 O_FV P 81jk㴡:TKv&0ׂX2dI„/~׫؎_H7s +v`! +KY > &%J_8<NEHl9_g`,81 k:.Y@o_q(k wSދV!a nOz[U]?|3X1vVHNa[5>w{z` 5A>~ѾHpw_뻏 ~??0 A=3U]%p|͖/, tR0EX'F?Z.az.B㇡^hE%ç%[Tz3,[^mSן7fc1ܞwM7-q}Wm>!;YKZ'1`N@!tjɾ8X]KcGvay䬟CZ@[!yOE"O3ȟܮOiːd@ANK^q//oZ + mA,O+eU}+L+ { ae79;UXA#SGxx.ɳ5 Ѥ\,ayiT]^ r۽0܁֡awD+/FϞ(+ɏ/G[%sB9x}c99F8}ɜ/2đ)ǗX#Fw/PEU( +d,6k<-MlyKvjˋ#0j +endstream endobj 3465 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3466 0 obj <> endobj 3467 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv39745V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3468 0 obj <> endobj 3469 0 obj <> endobj 3470 0 obj <> endobj 3471 0 obj <> endobj 3472 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3473 0 obj <>stream +h޴[o_R]/6H`t>%ddpC8&7C_i_.~xu}m3\], -iqX /ᗋqg=xγ ojI1LjMLMC9,ln493-3#{Tj[*_Xir5l9pd&춣O_ <*@eȺ"?>-t,wו2QQ!A G}.g{}ǜanYaiYpqwd(>b0>)H=4ѭ(8dLpd -rt$32e? L-zy޺7/~I? <.#:_>fbчK _p_>|<<~ܯ^?aOs0Ύg6òLq-a?^vҗˎʎv2!pynqZ\l {'#Ns4jB*5b9:*Ϯ5˜giZ|eaRk`U}rrLoTѪfZ`1 nNjmdmL,6Kü^0djKP40di_Ho r(G!>-a@ə=HO` AKvȷH\Š"뀥v;9OB:74xTRJX,txf0T4H+`O#p[+ +&?j #qjY r*e[Zc)dtAϑH4|\?M|&>AyJ舖)%H?֬A$N-T[Q> Ɠăj&LKbZ0x1 Û"qߐa&ĶQ>),5D9,{)SKg_ݢK!P.D좥L̵xT r),W4~Á}s +kkb_bW~؁ 3f0Lq ta\xC +]q\E0Lh(@ + -6bf nj\헷 .~.W#se?x zBc}q>m X> [R ua +CABCvW)>Sf[y3Ty YpBT^L`9aFPrޛ;G}y=OPoI fm-0#&%d ʒk{+v >.eV)z@ VwQ"X(^r1O*W7Ć#/Dk-&Kxj3n!π+XSgH.@fК|i7bxJbT17NXIdT,VkmTߔXI4y* ݐbc+ 6/T 1b'^`Uy^EkZDa\;:eZ2n3ܩdJ-3f_Q"@ +.)4)UI|Ky!Y)W1ǻ) ;u5:K>;lP1]XNF8p+0F:8t+ ZUj庵NBթj USAcosZxy#$9W)Go)星 F֋uP8`/n&DlvGbyXF%Tͮ Y 3A r͞fp"9I7>[#V ]5iHa$I.2؄\d d$%|Ŝ̗Ά f {VAZ-(+|HՈFW7E*J +SR` Ӝr kB[EƴV8׭b@V# Q6ݑnjWB屙<م;:II4AH^e,5XduymDNf}(:Ak HPu:  Mt&gB[p#g-@iÞqK5ÅO}|_*ʛbCl|&)BNbNê6TN#FzMF^<XjXNTpie[5}`(:UO%i )kݮr#eŷ;>#ʺ\0b^|#T6wPHt~Ej*=ϬWY|y'UB*/4N$.B$9ɉŊ14C!c#*HaK}aex7wd[[TCrkk 22kTw^=r1tGv}M;;=ô9!Tiʟes\kY;ӭZ(+!b#g \(IX5v{>iDNilW܄=]A ^{hd~"re۱lHìZ MMU$-Vde '"Jv{uTMA"Q:E%:W;Ht¾v&vol/ S {ں6ϏPCg+}i/f]@Mԅܩ(u|@^{˗[(KyJ;$dIaIv|*9&W.r%ZD*tٻ_,ӂEzSFz0`'!1!=_99c֞Ҽӑ PˏԠnmv*˜S,Q} ÓXA-ۘ.ZЏŖP%$\bZ)9sVE0\JwΉs|$ɂ6ʓHTJXzNZqMe88<|lB[b>X#z/3k/;{աbQ.?h:Lv{-U^ɿɤҡ*~a=dbm7<2>7J$<o|` X)3b}qi_[VWZlte[r[+sN&H6Ԟ%rOr'sd|tԨ^"q{fQ5?,,Χ<WG»ɞceE𽺛ۋሽ-S$Hp%̤u7|ӂiF.nGXt-[ 1'%m7o*r"c`0inm|UiR .DqynӞ_3__JPu¿8y Ki :?-oyC脵n+Hr}ڑ+Nlxz{ 5EBv6Fxvo㿝]+^_mC3Y B1̥?._a}<[)6^Pf?+_f;sHwkGԷ[ +!g|>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3475 0 obj <> endobj 3476 0 obj <> endobj 3477 0 obj <> endobj 3478 0 obj <> endobj 3479 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3480 0 obj <>stream +h޴;kInW!jwsH=`&|4,^~}*jf}#՛d]Ի?4^{zxd<v/}lm[7ty5ڮ3Aϫ\K_B:?'@{i[/ckV4z#~~% yOx gu;nk]X֭ ,2~#?=pV34u8684/$kG[gjf&%qZ3H(@2{,Ik[fmmBD 91Pc8mTJ`0̃vh|cƄ<OyZh:̕W.e9K ޴@06Kj0/zr?/]{ov@Ic7;XWa` >۵aMDm.mkBҺ`vtZ@5l6-87 ۽Kmc| {`w mXa [FCkMO5m`"۶=C`7a= ގ2 >7Lj N-p*,ûn-_ ~:7V&#.T]m.4#h{Ƌ5iЌRsu>])PA/pI %A7j_^mӁ8 w4azJǩH!DH8q_ovmGr͗֌ LD{$RW7WIpwhozWw ]}ʶaK)5FCMxe#؂+àCɬA}Ab.1xHB)Qݴ;5t>6ỷ¢ v2 )눢"^&zrsL&c#aXզؽxM3& 3aƧ1Ұ2l22 :#H( $NOEtөoGG% f>h `.]bRF!vɿA70stܙ.k6ic6⍖+3`>nK Qځuc2 +ZCuXMwLX5`e~vm{ &B8=;Hm(k\B9ұ:֭uD\$o λ 1z>I8 ;&>G/TBb0ҕʸՒQĸ~= ɪZʉh"I2HG @) \rt:qdVdOkEq,>R< 1옕` I:5dMKEh-n\uس:FRikp_Fnk-wj(Ti72;2YEHg=M"|Qv7lĩ۬||֩t;A&]gd牕e91ʏ5kVY1W2$BqTk}ev P1xAZPpkv9ϑ,˼2a#C!.%^q,շ#=[zJDplG Y耓/C{J>B5)x0=#tf2yBHS >=PݍK!7I anx-FQIŕ`EljCS6aiYٟ>G~;$w5 +%F$#{ʝynx #*K(=0JaۂH + وD(9ߌu)T ɺHF2 l x5dˬ<{ J_V l{jJ'[Q uܔ>9*Rik +㹤 +=Uy[K4Im rsM7[P[8/p[D7Z1xN&!ʼnabYpYel7 XI +&!W,SP`V r fi(CY]ӽKW_N(cf1z13I)>IA9*S'j5->G٘%3=bݱN('zԃ*S: P3.Xb/o(FM=ےSr߆ʁN5R;rA.B!U+g%Vr]y(K"I0Il8\Ag aXVt(!28JA~ïD^+[pY 9-浰%s,+T.|iidG3v iC7%ZVH%91I*Q$N:Jó2QF3̦0y4YnjKJ=^^ DLqTQI9ЗqEeV3{8KNU9D^&[WaF8e4,m91%ǰl ۚb6v!\bރ<6򐍭Y1*i+o6Ҕu9OjaoLjtsYfHwc{s-BiS5&lp9rNQܱ!ZyCb.,; wTg.$vm$7^Zk]Z$zU✗pD Yyݘ^Q*^?bh, +h],2o? zy_X1[h͢~e¢@Q*/HiT*LQCuKNxx UEϬX=+[!_&_޽.*U:8L$rQ:aNa\AJavXMޢvsQu +R'4|8|(6?oWԳV} !ӯ=chϱpft35XT0UFI竸,OM҅;' 1 G~uтFCi^q}|Y?xIScǽ6kG=no9u]h_Rk~Nf?eny/3 ?Mݟ~ykڜ/ sXҒJL=-W zSj '芏r:]+g܏geAWUKD0~N_ +=ki,z:6[x9K*c?t=r7vS>Ss󮿤z<%YhK'Qw%P &O󈬖\KKs{i*X?iWmhcGZNݒAl[nTٟ>9MJRZNAzݘxpR:OroUΜ&kևT +^VB]H*AF(9?rDYtUpaU?~_܅eq Y_*PGi-Y`u"p gW r:KVB; 0;APr0z/Uʥ.9KQDT#/Lr NOU6W1Afen-4/1DV)JDô&{ҸX5'z$D^3D8';S>ͷoRze g +Oyj8g1L-EHЙbM^5{ CjpЙ^C$ ۻὔuXǻ7ӥ.$߁۱Ey%-\[s'%MY@I-d]U[;Wba)Pg@T|l[貭Rwr*ʬDgӪUƛɉ_͌d) 98#|KQ*&c4W_AzN +4I^U"y2|"ɘ[b?PDʽXv!wǽ%%Q9 7%tL +R4?RF=a -(ZJnrܬr}Wޏ`*oz7칐ӖkN-rvD?gUY9I2ByfJ~h֓<M/e5Cy_\1mD+\U.]^/UaUW,U913ii$'uipO?=7_6!;%{5ǒ/ ?xۂƾ=)Ύ-#n>\b!S׏4rv^wɭGX usS6#ј9^x; +~ݬ6EDž-O&'9LO_SZS&]B抠ќM>{xM]R1%AKwt3ܿ\9HK(9|xfw&:=!;`päp>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3482 0 obj <> endobj 3483 0 obj <> endobj 3484 0 obj <> endobj 3485 0 obj <> endobj 3486 0 obj <> endobj 3487 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3488 0 obj <>stream +h{ko7whFm^cH"N2d'{~VlXJ$8]dU=~~9t M +0{?%5(;_釃Y) )Jǿ|X)G'n6#I*gRu|rwzNaI2)%[ҷ_P}M|2=`BRkTᱮO*RX80R{6R] EŒ)"^ʂ+OGlvUGi664RA톒^|,Xq^d={~ơ9Io0 ` OD zvX4GLDMG]]N?O?{z3=jAKV?2]bF0Ka(s>xtFۏ6:3姛S,m6)٧Z0^䋃Cf`e:ͲͲsU>4vl@ f5tqmfVBIXdoq|2FM1hdMKL&c g FSHؼC`7F,m3cKщÄmfO݀ 1H&."GXc*5AtM3p,F v9>jz~'oq<:OSrEN1n en&EC1XSE%:tG#-b\ej J^g)&%^)KV8eTEM}.DT8p>&`9r.A&lJ/^:WysÔ{mlk=Nh!Jswb6nZ"/gKk G<M s + NxcXac6K_^S_:e9R{dX,DrQi\EC5-P2G zs 5jcl-#>aTpyD#G=Ϟ?ſ_ե`R )jD@zlRY᤬}B[ 3躗VTqiR})LM lyݪSy\r 4LZ]&ǟYna½˒`д;}}1ai]ܷ(ut'طm1QSt7/i>4=\i9N.wKнdn/WB?)۷,((m8?[gǃo{$/BXM5mIòElJb؝zIZtK^LS˺^}_"Z-qȶ.j8mT*>n!Pu?whl}p%hQТtOp> >9 ek}b < +4Knn\-}uZG׮2%%VkF=7Zsb VmØizZ4nl᳛SP-9T/@(4n+Ywk!ZShJ_t3jwBqW0]{sM[}혒!shuΡU3~+PQ U(/kǝаR3Ө)@Y㖄z{j(\g\je@j\p mM¦arRknhIj%0O]沰a˥2yՑnt҃C<ޖ:BUit8zdUb~xzx\?!v!QǩSwm +V.tIwVj9zگgw'A%Z{ҹj}; !3J|%kE^HCmPB,d +SNɏ $w}4wn{5 C?,ݜuM:;z%6 |i/O|_<xLM O9:C–?Tq@:\4DX36':f)*5eb'Ac)1d'*L쟔I3YMK+C: 7;{1f>d>ޕ Kg:6f#l6f#l6f#l6f#l6f#l6f#l6f#l6f#l6!lpGYFlFlFlFlFlFlFlFlF|$ 0*MyoӴ^ؔgf6^fe>/ev0^^&ys/cb/c/F^ƌLvż7/ce 22V2qeXjgP,eeؑč2 x42~ 0^/F^F^/Aˀeˀe`3(޼ ^& V7^O8DA˸eee`e`e`eh'2N2Qp2Np2Np2qx[('(8ZтJd_pI' R$f@`)Y :5@N9H ˁ%P@Q 9P`@N1 #S(@,X +@y$P@Ay 8@4tBgѠϢ 2 +n)̀"ZrDCGCg/pi +8I㋃owg!Vu4';> *]ZnիuŒ,W~{}qtM,wYIֺ_\]f 6f!k^ O6">d<&G|RN7֥Œ8M+`p9]; _lxGxuAp erhi"zuG?^_]{͝ O^(+O./0ǀ+-70XF:sOeE$g]-Y"9lKI\AfH<7\ +/<iZºPg{h|lHi'.!0 +O8m]5urJgOJ+U^lT)L=)T\:n:Q얰U%`W  Ҋ@h~kV#:d>+c\}5(qcy VnFC+PCA@r4-ع\ zTNTNҩ^:KzTNTNҩ^8KzTNTN©^:KzTNTNҩ^:5 & SpjNMҩI:5I StjNMҩI:5 StjNMҩA:5H$Sry. |VX)X ώFR;2RKZMj5+bSk_&^hIQr>V YI?fox`v[VӲZJ{ð#tEEE߭Vw+j#cWȸÝt[9ܭn̮gv=snpr[9ܮ6v鴫M[9[W;Wtc엳Vt g~X<5GO<Ы{LjcC'TC +h@#=imdX|aMn<$з-XԬ68'6||#";NY~=щHQ |4 4}f й(o'*x@E,}c &h4r|Ӱ}"!Itˇ 6=_$?>=[OS'w{ +1H>"9xGu,D0)- =43;Ap+/w黨4;>/̅`гz&I%<;khL7׻)ę`N>t%LxV_^`p؛c|V +%pj +BI\^gϦ~0&NHK f7!شJza1fޒ2gW.vӣOϨD-Gk1Z%~|ӫ볋tU@'?9~o) 2M{5dG[X/駩,vz>?27All .7UHNGƁDÐG7w' _ApN_7Ch6SkjRdV2:ty5]TGb]c + ׭LM 2b3\ğ*!kk`h(Y6~xx'!ka|aqPq|@'!k>]bIi,شNm5>wmKPqM [iZр!B9j0]诲eyC  :/ ]pS?0 ucT6/c'ۦeifW>0Y4LSw,|\Xe?ZvEbyBiDH#B!Ďp#5 3 ,nDp#!Bg#Go;΢#(]}Pd1=`jws;^]?;oB0X䳃/.N.^:xv|0I\{ X=-BdtpB;Ra6pxJbw)AoE ;, yG|MAwcmпKfY=S*^M^& +Upf@paJ1Z<`&4x6xV]0 gn&4x:,侉\RlWQIzpJ>Voxcx +zƽ⒐46|66\,QJy S`~DY+58ةMړқ;*ݞ+{ƮUdg#cd[@vyo?N`AMĽZ%V2Nn.zJ7+)XNJ;kIf|qY'iuLd;Nvd^$"8bXƚZArd0 Az5 +(%b浔UU&$4bYFI Of*%vfgїn稜ZjM׫gv©&+x7[q&=GgOyu)=HOd^-|[~΋>&*;ܺ0;-BB(DG 0 +u,OH2x\9RymMTբ|ͪ)I *URQJHvhq"9wMƎ!62|w`*.*['W[n(&keq9ڙ=](JՔU-3_q#f ۣQSML7뽭= &D XGnTq*L6ZM$*gbϸy`=ta% 0]M[!Ͼ<gA?|=dvр͐gwrw}r{1]]N?WxuK0 +݇wzw~ufO~.W`5t)L:0zr]6 }׿"˳^]c]Kfu:zg✣_hyya _%ћiRߐq\P/~08Zu }%,( ^W6 w0;D0 p(ll7%rfo /|oËV{Tlߣorȟe7\M Ѿ4MѮpo [k?XYGaZ^?te^)c[58EKcRKujJPq?uCiC7ELt%ۉ>.p+T6LWK93j{7'=)@K{6!Zޖ7/c+$Vq-Ծl%a_3 ΄C0,?04aŸÐumw&j5m9s*p*+zoӫ볋t}6Y=}~dn }|4ŵ~NJq:H?2]6\XM'MIMW LUl% V徵L)NaȨ8K\4m]~St,iEfh1/?MqvzyKb,}[jV/1:}]jO)X K (ç{?-7G|_]˛kzv{_қÄp~8.h Y:BsK`G)хU>mX}2i a(z]8ut]*U/Y>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3490 0 obj <> endobj 3491 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv41974V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3492 0 obj <> endobj 3493 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv41975V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3494 0 obj <> endobj 3495 0 obj <> endobj 3496 0 obj <> endobj 3497 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3498 0 obj <>stream +h[ݏ7En~vA+ ; $;] 94ɞxd;_*ݒܽt͏bUWE_fono^4c?z}kcuC7]:n?|:w;z O(!GߧfշfayaJn_'Ĺh <^wWӀOsP6+LC_6ukn`Nf'M s0CZ7c~ysI,>vhMɬL|{f +y˒LH*k,iKfRA <~r"fW8Ķ/=g]_ *s0oј ^:>?o^z;4߼zy3{hRGyT.ҮS*5x3Z۬R ?ןo^|ܞ>_] cxyn؜v䁢0M0y}{O@$kMʎʎʶ5!ʺavt=| A5>lEKݡ楚:b9:*2F0c:-C3яZh3,1mo9D*[8i/0 ZXwlm@m @f?a\/EF;j6x.*ZT膲n-^  mW$14;ہ}[ ڶc, +9"gbl*Bat8djy)pA-hP.!A)*}Q>e3d*dZ ՊǺɷC赂քӑ OFB寑KxӚGƂ H ^ݠY +7}o2&IuЈrҗG*Ƙ'͉{` * `8| .S:R@r ${473,SCò#aYXƞ?,!uM塧VJv,Z&Z\jj rDj=?i˷GohR@IB>߼&?+oY=\9XI;,,Wq/S.}w{z/WftOejo{m禣#LҺTxZ3TJԝ%4\TY;5Ϊj~7 5 i^ WaRĪmZM!a4lI@EjIAO}2^%0$ِ $7kډi4hCTqjѢ V[4@U0%Kpm솼i @O( # SkE(:F/^R9/iM-t9GXl":yяwXfeú".'Qt;rif%]tjdxAnhY]f38j8Hx4)|9W:Lc`֥%sZ,I8O}`Da6Um~ :rM8@iL\yצsJ|mX ~2.s o$"$ 1τ +#gtDGl .Yi]:LTgd7VPficRmuL;d*a35C%KA" WSGc aqœ0̓qq pa..T{:7#p '%E+a-'Qn4$Hyzؿwː,.@81dɛ[ץ[yh񳵏!oV}`6 E >BawYI)S#OWXS6劾 ='S^_LvUe$eNbu\Z%+ȶ CU|92L=W]TIָ\y@)vEF &y`/ rpbF*]ِnfNjH|O]67R1hbvѫҫS|x*goeҩOf㱌ƠI@Uް)V.WX |ʹ~)rdyw!'@nbT8KE|_x|*ԡ)'N+} `S̽cPΦ2TFi[rɫ-Nͬw!}#jɢ3Tqrw܊tk#r I+0Su>Ce#9=?u1 9BrmFhFN2l,1\P_) a?dVPU:N|A>g@ .7 fO T҈"[F#x ^FNBBFՏPp/_8FЍer1J>>.VZ7m37Xڠ9-?=8G\J6hԉ h9'(xUC&!ݦidӐtFomRb#?=Ҿ~.w+;aі72ө5a}% 6"U}0Iȗ7H&Y_AS @]) +St $U2񥸙 +3X\.#Nnk'SZ9!o&[l%9 ȝEMWl'@-ϯ⎨o~YHx|8f7K6Kr)o0v!UWGA.0O画 +b|.}Y_(L-C*rrS?TL/ cފHA[#;DR]6'y:(&'Wr`i+Pg[^"ʴ+Rq|KFmi>Ml+WN̜#NtаS]U=8"C?0TCC2` ĩKl(.(%#W;:% }X2^H.C2ف0(fbg/d%ءI ,eI*>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3500 0 obj <> endobj 3501 0 obj <> endobj 3502 0 obj <> endobj 3503 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3504 0 obj <>stream +h;ێGvH.V׵-)VH+8Έkip[>=ZU͡_a]SVVW5OW]_ƚ뻫lzKC}BUo]`7к|Ӳ}?;skGl43cW ;h3va9Y=nE|( GdAQ]-\C"50ΑhU:v$ja"q_sp#yQ){;3Îs>l0<ݕCaYlhpY]'t.8dr,1Bp(};R3.6q#HYǛzs@V;^$\l RXO|(~t;a+ R#^?+_q5@{H,c bi/ww~v= +[ͻ8i|ZfH秓LٚsZ=AMg;8m9:R"MDDE L!F@s'fw9`fxf>q[z%kjpc579ޙ1‚P ++; IG|b"[~'2*5?O +AGne(9t4sog6il6f}c ^`YMO3OϏ{;xĜ7xηg|! Cw3Lw b"J~/pd#h  +'ܷDCO?ˤ +W^i?WsVQ8=(=K+VVY&YF\I|LmXE@ r`arR~y piBn9y ߃d@a -f˸t#Q<ƶrHCVTVrE@FLgK.N2ج8LOKcjU + xG`H_H" ܓ8V6="O?$Fq)*W4mOXAxNah/ +x +Y+ M:NZDXQ-TL`7aY_0)TbI +]T5 Džznmx=0'&;8dz^[d_oip +}L&׎QϺ"NM)ukoxF.8ԱQM]TuCV ATᖪc70"VC<L`!E`#'p},n]7􊴹T\?kDT#])gi,ƉNz%YYIď{gךn]4(լ$k-L!C,2b٢Rr#n% ,,`!.Z0vi`kYKKj1VRr"zXT+QHn*=.y,}e9EI ֟+Ihو~Ib=:XV-oddh[Icp\3ܨS%- Ɗ ~u 沖_oU5V +rU5R2AlC&# =8hrlM*`PK?8\t„eFΜPb4~}ާ?ק#`/냌Crh' t MB +nS . kCT1]0T nrlHtp}ÜSS%::9/‰~{9#A,y3BJu68zK yHb|qؤoA?P 78eǼtL4ksM>3{B܈s%qT>o 9dr&J pi0{ZaXS/OaxL5O[{|fy,8˰ni{lyϯ7?5k/47Hd(֏Sᒖ6Z1@.힘v-P3iqLGO**aÜgG ̬ϳv +%VJ*՞bn`~-7_ $5:Gk'2pR­4yKҺKj5D7^0V~bN(]LeX+ M! ŵDK>.x8SZ_P;jrKuEha42opRv)$tN AR ^ /Jah26~y٘ay>k[ ȗDm6W_"?Z[ǢX* TG-l$mRH bm YTIZVlKc )YkO:Hgdm#s +++XHYВZ-.҂&] ʺ2'iuQצWJ ړø9v ?yY%ZjJbMAK[#W2ҟy Q,qo4 F(` ce$<7Z֗&.t\l)e:rA&JHCF7A%^]y_b=RyI-Zٌ++"3^yi-mXT2gP~`hʔ3`-dž3W=Q#;K!T$5/XUza%QȻXPI@mU"VUBJgkFuc(d/?YJ)B-5hR-"+$i<xLz TQIRS&kFcc[v/1IC,"%Xl7uɕeSXWLA'T'7Q} 'X)掰xyͽ?xBH5)_l +`C $q (iŹUI VR3u^ vY0q/پmlORB\?G*z#FIB^=?;b)4AƧU) R܋{Kbc .N,zٌoB_8p'>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3506 0 obj <> endobj 3507 0 obj <> endobj 3508 0 obj <> endobj 3509 0 obj <> endobj 3510 0 obj <> endobj 3511 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3512 0 obj <>stream +h;nIrz`\4Ha4l`f5qQ]Mifͪ<#2,?o^߻.O7Դ^R6.-97ˍYW 34za]]^W3㺆Oh" ~Y]6 O<>?*9V-Bta^0Oxпw.ڜaGk'Xca-$?V-qֺk-˗Ǜ! qj2)u5!0Yd`wDq;lIGrۖ%<Wv> "sj2e)Քh ~>Oo_޾ {B.^yזO R%XČ5I a/7|_?/_`or~zK yM?v,H%n5X|36Fi9o vg +f-@ar16$83krz.Xmm!`l˦ڰBm=œ{xw֚YZ<0!"'upd\DIH@3ڠMXmj\mM ܰ3TX6^- k#6&Gl;EXжm\T82)(J%yPNS؁a!_0u!1Jo1BFsceZ"?Pmxױ,v4@@Q<@omãl8'P<|#7G60؊ x4ǟ?z6zVacuWAtMR 6x!2'7BĂ1GZ=4VQSnyM9^Xtx|6EsWfpG(s4e${k7l{Ggai% sBa;ezy-pRdIPP[㠌 M8 \yK98KK?k ;ETVP][x5lB( +`zʣ Pj*>h~xD iKm>P6F2;E y u^Ā<%~A'ؕE[t́fY*ZrZ_xz`BSnJ'PmhTBC.׃!/F`<5g,Hx=##AJD($Bya;YdEԌ{},I5vqVbC]1!٩EjqQ m<`' 1сFXhk_ 1zm׮&leӭ@ٚ$6I%^2ci%!f6) @ÏXgunaiZ;Vxi&ă⬰;Θ +)f2&^,biӞX{sk͌B>' I,[P QYף$1=S$C 1 9%>oU\lև0ۭ]kXYvpIG8Lg;0%bÆܚePWqy?/ Aտ?.|oI (pXz'kit/??-e8p .ׯϲחϿ~Mv:bC! m!5!22"A-g`]YQYU<)%ޭv{KzK&G:ۮ;&Msڊwj .b5z5EOұRG)\ac5M?^9 ]۴ r*~id\AϣbvŀheW5iѱaT*Ncv3Yʼn钋|c)Qc@(?s1A"M/^}4>XY"ߓVJi `|g2)XK;ynUoj5 KQf %L_UE|Ki:Zn Սu>l0itBј{ak:ʤM.[ Tj7rco͛U|$h7kSدZ{Ksiܠ nZ5rYƛnN_ P!FnD,qPFK7 U{_2^c٢x΍'c U +Tl%qlϵaqԸ}mgAH"rG40A=ӟ^-8KYI{"60 ȕh9󰑞БәYKvk."jB=]I[t/.0 l6]0i a$?5Q$zv/wPm82cin9(wIPeCz~'L_nCFw2H?|Yଜ/{SCw)uM5h{B"[݉s!Mg'W>v%;J!n?Gp {U>0H`I:3& w8Y.CLa3s5Ӿq/ &t0.)sDh^]MNuiB7MC 1Ѻ*{! du-%ߊTI&mH5/>ʕLKݚϊLCj-0UN4[Uv 7e̯KFB|obs59f Fώn<%0"{Ạt׀IB\&zo닦4?J:|t]KVe{ՇB?& ToO,wcz/\"s wN` +endstream endobj 3513 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3514 0 obj <> endobj 3515 0 obj <> endobj 3516 0 obj <> endobj 3517 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3518 0 obj <>stream +hn$sm0F>8C4+hmxq~?⫧{uC&E&d>}qLf.O '”`qe4/,߂?ד-DA4MZO&oL#jf8ȥ߅?Vsafj$9"xuՕb!u=Yo=HVcO}G?-uf.<*7 -[Y}u\Ǥi.<sNǧo nሟ;tbC.t`P)+/h7s&o~ +nl^23%L.{=)9d%!NdgX_gm;n;nxu3 Y9-dO!Off%XF'!"Acqj/At4sTۈa \zq{'ch7n[xU3<.$qPLn;bOm*My4e*inОfpD-? }#mQ'ӈ?|NO$9 wA?f4(]x9"-6-GGj(2a/aDlH bZ\ju8M)7 +bm֎籃 c=r,.WE@m妟f#e8f=Lit~ἯC<`2GrDy4/kYT$wgnPOG,񨚤 s_OO Q=h?L c +"9RÜ631Q[][>)Sd-{\p-mUGED3n7LǷDϺމZm端QWXā@Sb/611:8TXa +K5+qE=f P1R1õ],^-M>s<+ +R 4 (TZ]0`Tfqj$Zؑw!49ԣE 4=n)N]xqg W~ FjqN#OKЈ~ + X۸Jq-|Ҽ]6~,zcS}G f @t9̀NǪ^ʣj }Y?h}>0J>Cm w U*}Sz9 -_GKo():_&MW0NiX=Iw)mYaNoÕBahsΪa"'WTm0UȲW5#1y +BVM7[;D+Ԋj-$D%]յz5N"_+^E fxŪV̆|#zUM6X5hSfg 1Jf\4-:8=uNHuÓxbxS0w"_1uҚlMNEK{r7ތþTs)* awƩ!%6O[R\YΓ֋>Ҽ.gWSt5"CVn̵-A " +{*W!m=XϊgCn 4B ^0hqL2ZKҙhI#kI\@&ԋ^dY\F:W܁Rb1g:Њy {#ͼ!{= -gz)Y&a*pkPGZtAiU^8'Ev<@4S qto+fߠ5>䑑 ncn;&EdK9h\*J(_` Sy9)v91LY7J":@睄ެxAjYoH+W8$7{ [p3~%SYDaG90)bec' +Re.<_g??ةnLtGK.YoxIUdig~wr ;2$q@!* UR%Ek > Mju_UH]L$^A0" ~clb%C|j{-P8,}L@PV|SRp +Yُ~yChz}/[8o7 ȻW!~47%tq _Gޢa-UV*᝛ PHLeN˶w_ܷ%MV\D Qd/_ԮZJ݁ 9$p%]۫|#^NqR%qbDyH`Zјh7WV`tk;\~ ,:c_.ur[5G(]I[wJ!ˇ!{&iADD ؕ8֞JA+$r+0ɮʀXG7 1,j>_aBU`qck -`LKEs9᮲,hJ*K+u3Դ}?n,֕N`!t=͞bӛ+^T-ȥ ag:4qclq4+`I91d6 +ln(=0]uGpH=9kK"ߓ.S/nm4EV#B\No~z(&mM6ĹyOSVFf?`Dzae׫:gy( +.yɧ R\㡝z&ΥY;j9j+( g+vZhiȥpaDv]v) C ~@.~IGSN_?+B9W/ͅ\9\Wݭ.vc^(a2e6L+yR孒&u_O- +G9qT%ӊYcw)[M \[7*1ʠK}s&Q.zP%=f]ctG .GźQD|Ⱥ/6F2Fb{r~qnƘ3:i|= oO)fgY%ߝّ*hȾt;t|kL*NcUYg>⃹1]zN^DNf7ehX夐yoM5+R߱`w^V %ӿad}L4LJwP2mJ-DDY y,"]`]E<T^kZjےOЈWl;Մv$ݥtPIJІ0~;Qr1/3^ +YV9a E$+iKjFUIWjWvB\x-"*]`S͚T^FVHr,w i[{[ՠ2pYYC9!^/fSwqm&TWtm_a7~u+j,1O{x.w!wtsGܱ9s]n* 6Ñ +?Xy8][Gk'7ktxi { >Eoi2`]j{5X5Wpλ0\ xݺSYnLoe;SvSe +endstream endobj 3519 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3520 0 obj <> endobj 3521 0 obj <> endobj 3522 0 obj <> endobj 3523 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3524 0 obj <>stream +hn}bE`0ȃrI4( e,@XtWWuW7ߛݗ׻v1î %&e㒒W.k\ǝ@w?Ik5vA 'x:lzGJ +vrhqA\溕g|Ž~}:m0) G܁cd|Ғ__ȰVɋ(JˇNHp*v35PI)t,Zyd# S= rZ29,dmE^8Ej1 +Fdܸqo;F4 C}usD/G.GLx({$Al66H!7IR\쩰PJ|t3 + +p'ڝA[O|gS824dѤڍzp&Vɣ. ҇с_e-GSAH}NHN8ڤsR4ҩM.AbG`M:uCV#Nlpti@*cwt}TCiBQYTV@d[̞""BtkgS'u(h T"#m95uvHG{D1#urd/ >V+DбEDhU %`8UV,G0"n1/ 2~l~v -0iXLL"&/`FHe: "lS5SpfqU|qyD2~@gճZWbyaqkPe1"rumλ z7Ef0.bBcYoO`>uSp_Son5jOn/:L=#Y=ERq#d™]kZ 22t$/]d;4\VTk>&=TmG{&0maqjmJRnq_N+괬_Q׽S +[EDazt'C$Rv:tv$]=kj KyjBj‹wjwm5\L?Ac^#i>isz?aqMiTYj'YzU~L2n9!n{&uv'(qZ.0[y(8VMrDhNQzDwR-q,g:֮L.<а!yB2/T)0~RY* C[ +GCm8]8U2*><+W7݆aِ*VUZQ8)ZP[F7̍*+d#*jdPWck7SŇ+9TZi⺡:S g7nZhRt}ë?W} +IWW{y*zxOyr+}<Wx#L- d @|r|s;,q u5ubo~_yܮͧGijO.; 0/nȺӘPլ$)Bgɖo +.ّrae'HluL5hP; ~ij*BG,@z22#TE{ U|ق}#CNͲV3`@0֤vw3lHi8XoIGjgL#laG*i K$c=MkiƚSf.e֡)oLh6˱]FT-sYS r WW=A w&<3DfE96ll$naƾ;QXK3-xxx.V"SR8i2 +kUs15DR/ɏ}dS4{*ƹH䇘JD6ƤYc呰v06&F.mKBlwmt;k\m7OB%J~h߫Э6 .aE:;;xvH43:r~.xl{aKn+O0ڿ:47˽5Xp>\>ʾ{~Sv{:}_15 9=A t;4ffu kW2OyQxnx޻8|cGrd5e-3oַy5/-Wuc%1E^Hf\ #As2"OaA{jT]6XQYmPa(Yy `eagm +endstream endobj 3525 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3526 0 obj <> endobj 3527 0 obj <> endobj 3528 0 obj <> endobj 3529 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3530 0 obj <>stream +h[Ks~>X699W KU&gQl ,dXzz1˷>{uoܿ+ƿؘTK{wwz6~`tϻZ45FAcM^O&`Ta5ʟ'6eд#v'V~U2=irY3k +gX!zZ,|;+ up}Qٵ;S%EYWJYOݛ*UpҀNbܱ7d/ɟpe$ H ޒXUtdT7Ee -&(cثϿw?.|>}6}TD=SG` +pO?߿o/{\>`JoX>|g3Ke!-w!Gp' 6&rH}D\, +(qh[~S$+l$#/,i<H>tC*ETTJf^5h],OS! Ƴ5TIUj 1\2h6j 匨԰hLjf4^+jP#[FǬ\KGq(La9>n'Rmŗzԫz`qJmw5g0:Dvb _m<_Ι65jHNRmWwO_Zq掹 ky?8qqԏǧVR]gͷMyAWZ4J%agf4)|\Ϣ!I{,eƅhĹ75ss^9pM.(˜5nd*"*K2DRs ڧNhwJغTXSn҄TNE[iN\eUN{HP .AmE'*̉ˈxL?Ν|ܲdܱy/vܫӱtڕ<͂-۪^r7"B3wRj6. yM!yoU9MEDXB6>N\4 e"]O]5)71ύo+&v}#UXS,>Q{PĞ̮=z[#~_X2gpfއ}nQq%a t'q`W;~{$|DJxCs:x#mSФuXTHXLb/yAii5 5i:4ftۭ6{R{H|F;tmmm;kc7gpQX*"h6c ?3_fNuY)ZSH0 ~. b"{MPcND:m{ +ӂn̓ZԠD7ԧ-5oI[@GN/)ED$%!1fTDtQ8=r秺nΖ о4^,Ӎroquoɕ^w ߬s2URG綬vS:+jH2 jt0n/'e'6UֹTj&91}F4)X'Q0apO bH`BS$^ ; yfK;>5_bV+f̔ʩd L wx6/ЯC.If7 ~v!}p /`3;ieY1%m{@ +9ƂPp4Q- N ~+1wP]ӧ/ç慎lPC{P|\ /&@)[0~z +;/N6BmROn6z*rJWm?QӭY2zMGTN+WۛiP[Jr>ةٴZg"nԤoVk>Xt]l)[loެ,)gc =M[v7ؚ`ڷ׽7vAE""Gjk ۵ϱwzκ[T冒& +=h-[jkL*} +ë.^IWaxRISݪkpž"vЮ%>-! +>- +=,!@p?bBx@Je߽v[ǥKa*#}|%n7 +endstream endobj 3531 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3532 0 obj <> endobj 3533 0 obj <> endobj 3534 0 obj <> endobj 3535 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3536 0 obj <>stream +h[K$ȳIШG u>{nZ,x$#A&3+#t +,g<>Y/fO7ywwg3}cÄʇGatir7q pN&|T>x?MesQx##OG7N%3F4 Uz3~?=֛G3[`F&ѳ .NJ0i9#Ĝ 14"M1O#@2uIL?zVzIіkhC*\6i-Z dodn 1 ) 6Gc»o~|Oo}?HC3<4fDaG;D0y?>/?w +O(q` Na>HfQ& +*3 E5')RvlG㽔֍;E,8%O]r \`Ks-$lHJX>}Py +ܧl3V&rG5X'P9ƌ3քR4CCqFiv $fLlS-b{j[VyS +-G }F9'>9)lg*P䇌L\gR\(jѰ"qP;:(*EI:ޔXL)ؕ2ΏRLz`R4$, V¶/>-(c}QD{u5Mre4p ܌&G, ~ +E0QGGâMEE&^>F3~DںCA>b(6I0(HT2lQ#aӥHu0T y_4ftuj qYT}'i* jA`<Go]KKڸ(W&E3.Hx>dgCŭm=,{apw +]dKT\ٲt$&| y':%ΠoI{1G;s1LzVSyb҅G_z(K=0`J傭-q +̉TdAEB\EmAyA3O'ؕhա}{#_5e. ٭ )XѵsOMQm +Thb =vXd V5&B6*t+Ԑ;T(HR:߉Ս\@ m]tE6 ǻÆʸ5-WpzN{\זouI@^uV*U٫C6d +X*P'V*` +ņ3]0@]ҡY( +G)2kMF~缹洵~m k>́LlT>D4!8 E-"{MI{2pdHG6:ys93'=qBE+ÃUw*<_t'xwʨ  d*DykZc)9k(XƬ:fm{C6#aGy^Xb,_(p|G,fŐiGXԁ$C@m-:Ќu- Dq:%qlt B1NQD$Tg(E:x:CYƫ*>{sovYā_ͿNbu{_W|g}զ1_q)ٞų4lCaF +yArG#Sw vnjch%GHSEwri6WPq$PF3}as?D}EBxʭ$xǸ7wxζ-RBcuX:.Y, ´/)o'%KCi,=sYLL +(![`y[d:ꤙlO8@3IS#WMhҡ\B*^s0{, }K?<KKX㹘보 !Ǜ`iQL*L 0S>WSس넸Ԉq=-Q\CO:kWdoMh /~>lI=a#\x0{>P2]nzMں&@*ZBxUO7%@) 0_Vdm%@F+ `iH%@ kd_U +/boTi:d ~-eF\+W~6ǣ\ .&'9Bs& .p<,9&`.F ŹL$cL9dʟ*hk0酤_~/`¯L,MyKp$wlC +BF F_˟%[k$"yKB0.qA&]0_1eb&Wy21*<21s,$ kUn1=fx6/9,Tr%ΰi;V uDžk +ּWf>3f:3xx9Ù1 ƌg;gueʼnv8N0\n Kt,euyn:ڿ$` +x!.cz@LxR pr'Ջ~>LdNW~RNdKܡ${y] ?\LG^vǷ++T]9<W _%Kɦ*=V) pKz^,)IJ$7JˤWWEv+as({Sf7L45q5d7e7`ɾE.F{aqz> gc:<^]!)J%WM>r pW\.Z Ã\{t7}ݻxq1.W ns \4~ =7xd%\ȫ|_?_/–zgspڱ\*}bL|5ZHJu3s=[>cLͥD5KmT0Jl_^(lw1:_:K2\$&o*$3:[~.hZ'=NjpYn343a6lt^;RA@DlNlJzlʧ_\A:`kۙK(u w1.Al_Yv~ Ȭ^/NQ{KgPgo N,M=L_KimKne'vi$c1ͦ&Ee`CޟHԤ*Oe`ͮ +endstream endobj 3537 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3538 0 obj <> endobj 3539 0 obj <> endobj 3540 0 obj <> endobj 3541 0 obj <> endobj 3542 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3543 0 obj <>stream +h[Kϯd`|_0F>8^ PbIq~*1=Z8"C A;],dU;OnpbWu)j ~퍵#ߢ\>hu!+(Acm++):Sg<8C Э@+_SScOCdBi\%;.G3w;#5Ƞ"c7$Wiѱ!_6:74Xpm=GbdMw!ǕPk ZnbjhxJTL g5̇78zB/%u1>b:h2f[<[A z?dg" ,7hoĮ{sS÷=I_:Ybm~7kxi!Yb҇Bo޿7o_{qxK3=Sixw@2V+i~{kbApp8썋QԐVq 76y[K@Sa}.`}maڜgT*#DulU>eja8Cs&{-ƻ$wA:0  2C7aILP} c^ FçDje2XƖ6ǣgOo?#~N59Vy?͌`k 33ݒX+&#I5ĢPd@+\@,/Pr<*kcvk2T@ǺI( 'p?6/ęȔɉxPmD`h6(`߰Aa}g\ͬWk&Q= i<2>8jFP5Q59IvP[gCb\Ϣjo)vV|!0(k ىȆO3|sS2;,pP XSa^P]@Ng 028,n X¾ŚOwOO_y *{ 6y=K7~}zBHOACzc,0Fʖ. J ZG2I*!/J! 4cSSGFI##ޤӥbMy'KjW!"|T۔C .Z~R˓U !O VB&AEqM,*{}ns=1r!!!0WIC b,z.7mwNbǾ:o]}c.˜/] +\ÒDv7Npv-awrQ_QC\\$d0ZFDFgi$b>V#ϱ4揳y$Q +հ +9C : +5el  `ť,%<,y~<էåE]KvpxGi0/ 1d 2袔󁓓1,Zi1=8\%~>Q>5J$oy9 bs=;gwN_cH1<99d>v +!AO1My?qRkQ0jgq>t܎Sڞs&vZ7B||!<Ņs7} .# +Ps~Y"KEraǷhX,dz2Hp11t ҏ Rcʃ +^ 6&G}7 . +)@vov(ՂUϪ*ʵGb1/\L]V! w{om5|,.'R1Tzmn7udJ]&/,js٢%ȇ~m<1z6ẻgIaӗ|X/9ȭv??m*>abN`K7z#E#Z +}k;z|!yWP: drxs6%#'p:&I"9N. Y%ASt"HA'RPӧd|YuJE~F4g;Ng{sYofuU&\u2Ξ~&>@Q +3 g=E7l3,ǫEE+0ʇ$FCýK&m"=B|`B&2KJMlUuJr)uK4g%yJ^`I7+z|C_ oog+_G/eN>\ -A^!coQu:z:޶N`!/yv<˅f؁p+\`|q&.CZeorGo23_7&yEo_sE͕+%ӕ%l +[+vCZ璷ӱz֔ f.|+uS2|2vmJ2{ B80A=.-u|XrH k"Nt7DT| + Dn~ +endstream endobj 3544 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3545 0 obj <> endobj 3546 0 obj <> endobj 3547 0 obj <> endobj 3548 0 obj <> endobj 3549 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3550 0 obj <>stream +h޴[K$@M&ШG|n{졻mY7$fz6=UL2x _? /zo%`blm^a+ko n[_K ɶmmi tx/?}H,?yѻfow +[^rvC?_Ï~~\~ynK+xK0yD].?P$5oi!,VO! ;[Jk>AvrmJ KOvJCmWfDJ[jֆ7|[K aLO]ay'jiV=0XwYCFZP fmD` M>Mڄ6 O \ + +_=~97wHAzlϓúlS[+F 5iBc8t5&R)HVEh + @I*Z wކ(,IքEdMimZNG< h5 +[qn[E]!٧D _cEMݒ/׈wٻET`R#=Z|f)ҋI7l}aݪ8@Cg!̎  +8!r +c倨 y z;_4t9Wu>դ]/f5M9i&Π6G_R -ǺGV"4YJ[n HM{Z2\BA/"f%]fk=E ([l_б(|+Ϗ($m8#0ˑ=Lj2 ajH"(==w|"9LJ,h UcCr'/0U Qա e2N,"ym@Ɗ,VpgHAiNA_e'f(8qijYM|bC@,O`P& +VhDpnT Ad)`~ +%qH"TaR;C']E~U~vq2Y%J&2uuIxJ.a!lBe68 + En\ +)G6F t+:)&ۿyxKxA WOÌ9jDNeerc Auf ׸d.6+~͟\Ж?-%KC@:ѱ,F!aeoD,Uyt_׉uAsH,H"m}B^+,)yi>k#݁@%"*d8Иa 2hfeDPG'?cƒ4) ^,IEȲM6ZX9cz6g=Q6 qb )iaj \nSb!{밴a@SN׹<U0ĤrSbEQ|* 46L@eI6>|*ՠ4BQZ +ud_ +2W|+MkWJbX.Q`/K]lqzotfƏʢ7+CލmD[66:3 a5: eJ)N4.)49|?v' tfJ^ VC2e dhyƮ}0"~2MS5}&A=}6!,x>yu i*+gz.KjŎ){TqGx F? oZpe0K\kmMU _3߫+APs5e]=8fDJƶgxxX"9݂wO ']` qeRF8/6, 4O(Jj\G=R<{'H 4$wd)])cu8EyֶY {Hs ftF0[%zq >˜a&ա }KXlѭs!d5oT-O[ +W_{#w&ހ"ɗ傥Tw:N%(3/x||L؎wXc>lpcL`Yے;ԕSxlyd\ӵh#x=Cxa9@#VUM=KMt7P&{ +\jǓ̕x2n*-z8:T롩l0#SMmSEIf dTɊ^j>4ULl|\ls:M5V}:(R@drtP\;E Kb7xboM,<09gRԧ<{qr͑ݨEoc QOe,@}8<TnTݏ\Z<bҗꘔ6B*g'RST/NGj+7b4( 4q(s}A_hmUS(;K'tm8#0gkρMT0aV9];K|qosY +r֓FX` V/ 4-#|;2#q[5~'Q+/|Ń +g+_•,1YdoJI^AP\@ TxM2O!)y&!fy( T'hN1țЭ#7{ +:1=&{*͍CmSp#8y0`$d)8oB^ѽYPn,TPӜs uu'w~w\pH;BBV%P1`FDԋGp$K0uqwkGhfou|}ruBg3_obo YS_+Ošn;hc.8Tؿ5.#G{OJ760R_B5cnO,eMQV[9T4b\;Pu3vgy3{-Է_q=4qҭq-#;gȋ`^ ? +endstream endobj 3551 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3552 0 obj <> endobj 3553 0 obj <> endobj 3554 0 obj <> endobj 3555 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3556 0 obj <>stream +h[K$Gׯ@F!ô9n*{HZ_{#3"D=ݿY~Ob緧l_YlLkKV7<|ږN<_OߟA5ϤV &ci& +MO&`ւ=nVj¿+V;,PZw-I@KJ~uEGZ3Ȥ'kJD3Ht [p^۩|Oԣv jp!88QWh6#ה<D[Dӌq[LŽOhswiT7gط3^xf8 5u~87ѭyӨl.–8zb>ə:If @MY_lY b?_K˟{OEl$o=tKvoA19+E(뀥]'jA 2nUxhRW*@Ų@ 6A%>"tpnZa akVОp9 "hd(-F.巧Ք [$BHOOȇ<0ۚ+h"`:kXTh71J+ʧ!xxPMԄ$ׂxC3oXp`~C,Fm!|BS:,5?P9*sgύesV[JaZ&ZܪM9" +˱>)cn zdS,|lp: +PJqRޒԀ/$>*VV)ImFf5#l=R0B +xw!❺ KF*!q ~E +2q"#q'X%OkE?8/{S!9I-zo9 ա`WaQ5vGT +9*3*JX'QaEv{E˶/LZvk>Ǻ.ݡ@HT] ؇bPRX9jbJ%[ߵ' jV03f3.sXT7Uz 瑪a\5dUCNsDe5Njx,s59Y sjTNP5PvQp8\%q5_Y3#1\)dU3$fN(kBrӕ=6eJtuTSUMHQ)9645AQw(Cm'63ipC<T1N4$6l"TLN I- 'Ut@j:b44X $\m"3UnTI h'"8ˆ b:J-˖tC Uhuq8*NЗ3 +)~!STcu&@fk!,3{0,[3[w':0^-ۉr:hb|׹C2;}!&LBoD6Rؔ?n!JWuR_t="*?ڹ=ڷokp}i"& b¶S$W**rjsDxO#{ē *&tjf8fָ])=f85Cmp0sBOœr,0I*A#K=mۦ]ʱ˥5^Xk=Q;* Nc3I#x"j!^$ǻWWjv$Jyt%0sϡȓF "ĉZLS~(I„Sm& IEZ3ۢgN$vvńLx\'{9~Ab/KyNNgϰM@wjσ\vYG2>Rp ǨaB@b{i&t|%^U@w vådauԪ^_nlN4I.?=nԗgD1gWt.g׸Gz?SҋЏ牰jY֋(9t{ zy8+ [VyҞ$VD|.GSI<9_R |4R7w AbJNI*!QlFqGܝ?*AQi'%)vԫ{QN*[r+p'ȩWˠVM9jzyi/Q]##eS@8{4GnBL) XcEx$vvÞͮgˣ9y#1o5]_o_?}ľoS|{/c*߈o^{̩x戴\,LӛBH)<꼴< 8Mn>#rH J{jzԸO˭QD,WDyj$DEԚ_rK_ ˄;kZ>5ځk8z6^>חÓ Qp(K\%:qۜv7;-g=pZ#o[?^ Z*8uTvCg#r*H9(!մ e˳e;ٲ>ҌhUH44BbH3*$^$[ ) >6QҢC:wYWso7'}e ((Ol[R@lO$@!y 66(I +iݐj\u5H0@Z{Zg`m_Κ.U x wZȇezMV͚/vk'E΀띁XJlp;7 +lܮ~mK`i&^cڎaoS[O^&zn5cg1k02ZCz3)> =/] R}xJE6 }1R#B+wwncBS݇`:t"ЄW>@O$ƨ6 Y~ަІoa|#5ڨ_.G3HP_u[KϪ?b!شJ47nѷ&NN3l-o@\kƴ hhhz0L.>u<%О=]w1>o[x6.l9=ަ6qGYSƹޟhb=3hϨ=z +endstream endobj 3557 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3558 0 obj <> endobj 3559 0 obj <> endobj 3560 0 obj <> endobj 3561 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3562 0 obj <>stream +hXK$5 3q!,BBqiͮj,Σ4r8~|]'2>>nGo_8K's`ovμs /r.> +|س[ǓAp'z>a,-ُ̛+NӜ{9)znGz]0&R;M^v]?\ :硟w:=՚Ԇm:A&Ue9|Mc}s|xܽ4>Գo-ڂ#ZTIyXJܵ`ўe6iRa+"aީ$Wʵ=[.“ŔjK4x&ܼxwO/v Ey[KʼK$ gre;SǧO??޽{zO^Ⱦ#m]ы%񄅈 {lι+2,h44A頴6B!/|W `.y]# NAi7t!xڥ&3$meXAŦXv%)ˈl[pҞJ6p|(R,z{ P3P}$Cn$Vl96,ek'ÏxSe#qw~TVq% 2I5>;Ĕ QC +O Ar +$PyEU +MG +'YIg!&1OOESPd; 즶 "-75*;K5cqKhx eRs=OS{JkLwte3tΓ)u 46Q1)g쑨zȰpC"5Lv +pָ1kbtcN8'amrlP%+O@u T|?HpTqi (TkY<}o;AheW4:Dѻ BUBZ}^iZ ,cW좂59[*]LZO2?KAS;NVD>TjNKG3=x=Xs`듦5ΞM(RB9]#{>dvipI[G|cEP"d!N9gzZlʷnѴ&ύɊȶQ4(X~X/^ |h& |mBgxm'E8a x4 '}R=h_XDJ82x='58p/D +"%lH?HKwb=Y x$+X ޠ+:jGoQ:s+H[;_7zGyi9.qK{gvmŲ_s>s}*LIT BjK )4hBvIXbVC z\IUL=,A+e Zؘi6-Om ð2(ðRư2 c;M\1"B%K@j}y3#5x<[qf>mS=Z8=+,WBveg'b(/gmN6vY_|pď渕r/%a24rrvˍ{YOR}i'LnYB,qtB\јxGIm0nZsht6JU*"GWχYԍ /\:kǾ<-"&mA(zi([N $O +{Gr5LrkڈrfYr`b.[]`vm^_@v٭^Rfsy^s1)O#v +endstream endobj 3563 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3564 0 obj <> endobj 3565 0 obj <> endobj 3566 0 obj <> endobj 3567 0 obj <> endobj 3568 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3569 0 obj <>stream +hެ[͏Ǎ_G)ku}W`Y`;@Fo +u%Y$կǒCM7d?j凟y|x<|޶gjϕ)j]FM#B9^vrr5'6.n^̓TyauHgzז;DP;@p@zgR/]XRX);&[yoSr':.yƙKTIܒn-\B_+Cߵ+ ^G; ;Z:G{|m~)eV/ka|k1Ñvxoѣy,R  +i;4e= +~\)nM@M[k\|}X\Z??=ݟЖo}q>C5%5P%l<ן?Ǐ?~ngr 6n-:3=/?` ܘ>Q5)\>r9P9Pٯ.%.|X#uZ[(PV)bu˞CM*@,@e~*$sp9>g|Y[Z96Uwrn-ջLe"SΠ&H_3,&hJüQ0ti5^pT=`8`Jz_oz(D#"9lg+f0] V3-q1(pk$Q`dZPyG#2RvT*Ŕbmp6C^Hb"tV|+HZS +.Gaվ +˾^ +/k +:2>.i U?]|R΃_atom- o ~5uִn#sVOGp4$0=< Moh]W\l/˴z'[J$XԬu:?R9*α73Ty(kV%߬vDX]$\[ް@Db~l+OmA*6gAK{gm7LTf3Mofdft2^iU12e&qit6Tp5$v=O\ hlA5|>*>s=knDm߫S?v޲}FǙd'TPi8FB'Sf F<\k{~{C|No*T;kI32&U~9lVGf9s՞>!`%vGMza\ ^`dqc0&|ְ;u{:@Y7&A8A3fI+|J6 +Hgj7\% Kb8R=͸m 0,"_ 6qgPda@ 7j8bd-Kkqre pUDbMpdIcr[dV |X!NaTJzZ̬w=60$8jP4&?"|kJUW]'k-c! Z6BcpenVRN'pR1:X6E6V#gl$!6#mL>3=)+L<0WJ<}x>eCS[)usԒ=HH/ΥjM@;EWSq䫢$' +J^w}Imn~a^MΪ1͑o7&vo?dfxuZ(o>̯.a8 z2d"k^i'PM>L:sљh}N@E^;~~4p^mHZ9$ !c+S_8|?l/G6z>A'{Wxf[KΥdP0Fp`i}&bQpqhʕ>uJSPD"uL9aio\._TKU|] fV?Lz™2vI}$?Q>Nd|qꢟ#'j4 ^|a=2fKDF XĢS(cb6d14YV;T#G(.]8MlsA<Wz$ݑpӑ(#J)1@ag}$"ؾCdjbRA>|fߛr1Do#C:%ޞ +j2;L\9^5D \'|P, +m SESiCNn#UǑ:IN@2uq\sԛeD#sY*k5S.L.va$3)mac/r}$]wb2,J.!OY.CCv!8)ivNmiT= '8FWoV 5Jӝ7i4hysc*'8͋yW/A܈8`ڐ}XB7k{+'^etc73Fx V"Tj8pDwQ\sYcL{XBaܩ$dȄr>BI]قۧS8λu)}߀|sҥH#mM.e܌Y+cη`/;Mrwb4e7`~vtW젹]6=Y<͝.z>.XJ%+϶ Y2ݱQѶԭ>>Xp? DtiĘ^ ZE-iXꭥm؈=ibļ{ h8Kwg@㶺9F'fBk#Z+pw#]B60A }&u;x| ѣ26 C$@M6_񱮮~~$}ȸg 'K|Ͻq?#;m<\I4eb38+tyw1!t)9mv#X_2YM59?x&×>VY\wr5YJI둉jy3;϶X[o^jY}g `&M^c g.' `G2+m*¬YH#\TWȑ[ &T7 w*&"[nF<' Ep0k}6NȴOzpccƘ4Q4)彿m5fxt%^\ #x*qJ!)uAd?[Uʯy~]wBs~%_w09k{m: 7#32ISb216ͷ 'h@q3bݦ܏D1s|Wu609O-=3ݽ2fr-oLmsnwޤy<k#o'OY>I2t6?"/4;;8بmyLcYmd{|C +endstream endobj 3570 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3571 0 obj <> endobj 3572 0 obj <> endobj 3573 0 obj <> endobj 3574 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3575 0 obj <>stream +hެ[mo7_e;هe:nsȫlg%I=Uŷ&뽞"O~Wg_\=4.oΦq +?q4aэ6);\>Sëͨ +_^n2I)}qcDG\-V=eQrI-y>0T騷˙cJC_ieF"8d74MLMFю64HF=E,D ,j\T/WCGdjI1&{5d+LZC=f'?f)Yf8y8'8,`@UW1bb +6pz5"jѩfQەv[>Ws;E~jAe<fm֮!Vso0e(,+>?}vFކO-O ~z=Iw#ȏ΀I($$x]\K Brp*k=|LK眎\9-[n祷~gq9[gC*Q%^ ~qxe!hNqzQsVrꀪ!" -Gp {~Q:ӷȯ(߁>!`eyF7qWy,Q>P))"ϗȠĜ @f$`ݰ'~8G{P1w;߽}ssݾG @Ep- +!t}w?wg6!P.:a)D2e$2&4Q7)x9T+;BoMl?61+Pj)Ә_}#Ow`1L(.`O]EL t,?ӻT˒Jn~iJXtj5%hҖ Wp)F$uw&RJKD%4Эpݔq6(1K:C8$y7@,0! s+ZK*= 3i*ؔA 5'Mmh)XDЬ ~&:MuZT[2ɕO7虸Dhy:7G!\ԴȥFr RY[$EK9=Z[m2f`O1`UR'N!@L=])*)kR V3feJl? Ų2._P0oA8 +:B^D[tw!;q- Ivtɦ"P@l|ԇ2vV'&JD{=(7%q 'm0M~s*oVYU@U!!Tw@5̓SIP0$4Ѯ$y7}~\5D]U0:?%"$6ZQ+ q^RQ"Nм5PG\J7oa.!&#(x8\'7wWn8pݼK0Di+BJ!pof#* SgdhVqٞ ^B[fLhQdPyB=pu<ю'B"Ĩd7 bh)i6^dض UE8.6 }5,ӘY|3oFy(-{o`6XsQkGsBeR@c\zّrJ*әyuQNFI k Gȑ68M V xpJFwLG|/TGWʓqOǤϲjg TI .L0s.86(9m̕{mʁ05.>.&T7S,0b+`CY-WY_#1u_'ҝjطtEJq=2-\p<+KS2'b1n0vܫwtf)؞i"O Fs_D9w1m֦cI[Nfi|l׉'hf.b4'kF}̞Y: U-h֗QȢJx)-( ͵}B3B"LJg#IuhĈ.n1KBJF rijf"7ixrz6m#nja7ϧ>$mfdrR(E0zZ +y _ tj*2}XљJX[:ꝬU>ӜPB!/)R5<-S Hֲܖ$ԖuH(=4',ݮo7JYf Fꋚ`3o$Ԭ4w%./xYҾk,u!c9P!vsMbxHǷ&.n.j菞mt0_#P q.5/praJޥ{y_BOGCLfJ[K- YTW6=lm(؅ږH0ިDԻ*-p{ `R{‰ҲY~s8HO۹q +H6rd#n3'G]w>nvXf昕CՔdͺPPUʃ.(--tU +EuábD"T8hcc{Wkĺ:]ֻZ+mhn]~[ 5.u#;tf:?:0#?f&fgKKUOaJK:o~,Y@M^IR(ɞl¬ PcQ+r\L-ȱZr\̸.;K0*ھZ"[74/5|[+NГ> U\zQqNNӹH-pw*_IFWޚo":)]!#"iۢ켜6(3: +Ic=L`–PSOWA[Tg*XS92yvYx7qX:Xݽ^\+ng?>ڼ1^]]i^>e5<jw7JQ*pǒ( g/;7uK+IJC).6WQ|y^Vˢ/%nyˎ%:Nmj]JHg pC3CNSWE'eekݗ!Usm&?:vi- S!\ڡ@?Mv`Je{ڀSs= -p-rq ~x|^3ZRE[i' z-+g7Mf Յ^.H_~ns0<202K$~sj_Y +_n۲RfMZH+?ҢsL> `>fDiE_A}c.ǟtct7|yԎ0۝.MCy^/{1n~rx#X̯O >B5#@fg0Sk> RUdƉ$sGY1nLѧhUMYGvs{X 0_(_R +endstream endobj 3576 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3577 0 obj <> endobj 3578 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS44733V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3579 0 obj <> endobj 3580 0 obj <> endobj 3581 0 obj <> endobj 3582 0 obj <> endobj 3583 0 obj <> endobj 3584 0 obj <> endobj 3585 0 obj <> endobj 3586 0 obj <> endobj 3587 0 obj <> endobj 3588 0 obj <> endobj 3589 0 obj <> endobj 3590 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3591 0 obj <>stream +h޼;ێ[ǑG0ȳH;(HrfV[U]]]}x8֐}?~0ûǫ?\1nn0y11ypj]mi2~9BՏirM Lohؚhgxh\fo3 {3]鮋kGvzK'k12~mR Cx{P*"pRH5O  iG3f4&˗;;56#UGLnYzb4o\o|:8S諛+@dfFrSpbq8{v98&aY݆;.mR-tEz%6oo<~3`hl97?}x^|&?`ӻeVCÖ[8 ztxLJ{x#\l7g zw6Cc BH +{n;j;jфucv Z~f@<a<nvRa!>=؞bN6҆f3l'֘1YGk"qt8 0M-; v3ʹAsmz&2y 4 5N#(X-xoo ,TAta@Ι#pޟ4AwnA39Mhd逤'"ZmZP+%^Ym3 gMM$MGqw3qI:NxS!@h$(Si2K ]&'+b~z?᫛)y OcBǔLC40'8Sv C< S3FE4DO0b4a7q/a"DP>)$59lھs.}tYK='вYsӥMĵxU r2+$pa$ߔ#l$|ڨ껗Ol +P!. `Ml +d3&nb–b6/cW&4:|Slb#KkV[喣|XwWhֹB"| +7_(3{c`Ɲ :Kl RB̭fBo g#*^rP}mn7Dj9L jF>Ռ_N{GcmVNckg@>\׳#Wfvf=*v|v-7+'ȎGM +Owf ɢ +1.ބ;a9"][>eexkLe):p u'&`X[5M?Xrpd \H͍@#J<,B*Š{[U~ݽ|#AWRG9DYB*T=$6_U(}i2-&efѣgS[3qS{[C"iM*8-0E. +[90Ff0E}kyNz 7לVl*=DJjq*%gރÈiCO妌0\vfBi<7@Uu[swq=C@,ctse7Is%2CA٦ dV#2C>8Ōl2 Vr Ńv.T-UEȮ3tڳD$(UݕcnC{CXi)+-884ڂCMt2N,NR N%<ўN@1(zbERI;fxctl׹$Jd+YV!H8J$y^+s7i7un`]q\;{-[ <˜WmėRuiۅUi>^!V!,җ+.O(r!ZTH75ا +5j;3!y]v5m; •> 8ao-(>x4O IpDftfqYcz][LjVڬ⠞IZ&ӰE8'V ]zE7xęagw[fQ w,*i%tḩ33~4g_S6M5F)~](uN"J(Z(5uK&*;D]nJЂKDY tbLmFa5,^eP ӠK-)RZVToB_n_#eV-f7E:qfr8brg7G^z75t {Ch + ٪J8p}Oc +~qaJIwzsQfm{̴N[\Y\=7i"n@b +vվKap%[Fp`H3p@H/wV$3ChHڣC5x+{%"H7MNwᘃ꟱!{Ϝo3- s~g-)< ` ֌dβoL4cFű,.Em8qvw\ݹxD¾mYY&OX,ܩؤSab t!yb,[fpyLɞeQ\gV-bVN}.eqQͰeMG)r+YpJII͗r*|W^[.spyHfbڰ +-o40w Xa?5+Q@KW5c<}QiZ6KZviQ%3 [~@R/XpBܹVU8,_<;Tm5$+ ] +60욚i%tCySzkO>j@묠 .5!*5׽'&vuV[gpj>[a=TJT`+a>jEv7T|+vYq̠Ί{E,Pf(zE]=t&\I^ڷaSo2O:v݇ā.dֱhc yغJN:`Vx>&=.^E~ɸ",?$c'mJT^)JbpX"dv/+24G@(69*&6kgwԐvzݳIO;Ώ1*V+x`9Ʒ%Rվ]V~P=k0N9r$ֺZM By-ڽxA"o.=}neL@;xU +j!jfS~=6|'ܜvgT +7tj=YU M`ؑUd0S)OxڣާD'~LfDk/xl/ky>EڠdQ凋o~ܼcy}65i7wטt<}x ?\掺ޝG~:⬼y&J׹kp_6}ywTOWy7ysqrޘ{H`In1zhvXGߛp4<=ܽ{wzOP H0Swrnp &7H7HY9`#s d`3~G(MBO穦&$[%~[]@K@WyT_sr2!ǏO~sBޙ7݇e/OyX.O$ׯ~BcW+ k 0ˬ$Ϊ|J\ *JsMg%^ڼ.Zkx ԉwH]w> ˇ3J!`!(y2lگk7efҊW[Ha<70o~IG~e=Y~EKtG0(5?/sU|~uzXMxA8qN=keBcsK,[sz&;rVc{lVku}p ?~E.oFȰ:;O~eTwhZx ب>e39BN{x;5{@ʶw8y>gg5v}Kk_J NT){e +0_ Ye.=[4d{e#͖Sq~7o;/|(7=r||Gcb:=phUurwٍUEFoVvSl>wz--m7>y_jfntAeD1FKr^9uEeS-]rJ]-K˾Aay<+ry zPC'2[R:Ӻc{Zz[`.6by4Ja]1Ϡ8j@2_/TMsa.?[p)WϠɞ-GM먩;`Gז ݸ'WjoM_O +endstream endobj 3592 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3593 0 obj <> endobj 3594 0 obj <> endobj 3595 0 obj <> endobj 3596 0 obj <> endobj 3597 0 obj <> endobj 3598 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3599 0 obj <>stream +h{kǑqh\*Y}k{>^V$噡쮞%6NWT#"22^ot7zy˗~6/__,Ӓ73\&7)9l^7o.oZD8h*J_EɇeY6S,R77h?|v޼ز0иȮ(.  22 zŐ9ybHL~ĝaWG +kJG F_ B}yJKl~r o}" P\ iΞTp;Iǐ7@xۺ˛gA/@g]L&9I6{?HKVK~(Q8ӕ{"u*ii(xEY ]?4դgJ7Z^K'|Oߣ:qrG[ϝNx,^:ž&ٲ׋|ꕈDbʟc*1 +$*p^Au%Ķ1f8 pPWUJ4;Y #FaC54zy\NeCe.ƟEHi$sF%S;d"3-*r(#/;,*&ǒRZҢb'uFy-`C`}w1yw=14"RI’ .)i" 3X* Xm-n#l`(4ZmKm%Z+mP[P+xiDWĽ (cӢLҖO9r󌡄Ȝ&]bc=2KTEċMD2}12oK[s$H2wEmg=z-w|wϾ6.7hg-m-Dk݆fl`jvfdu#֒iSPWGs$MK-5f^v^ce;RF=bŽW>@ƒx5mkx$PP@X`Y&;:p֗wȫuUj.>'v(0252XǫQo*7h,R8^C:*yWΜѱO<'YcLt-c Z~2MF./P~{js^|C5{ΧГbL3LjKb}GD]*0݉}_U#EX( 'V1)V3ӝ`MPG9/ ,98Щ w"y" ]q>Mϳ(֫3.xoă|pڷYsgv4ϵeG IIؐ4G|⭩@ĝ=OsKX >{Tde# @MS BYIu*Mak\Ij:dWu#W>uo]tRRIyZO> $E<ÖtMN#gNY,qV5W%+ cWi Z4ߐ[ ՏN˙X,J^'Fp SV(?&<&.d2=ițrw-x`RZ`&r|$'V&梑ci~ΣBv<$kz^کc5v:#գ8Q;*šwxM`1,Q!Γ=%݁,%@Kn'KәDMOcN m/ٞO#jͩhsWv7u՟צ(Ҍr#:cnHԐgXi,Yw:4Ζ3qPyo <3o4"z>If#sHCdmH=^i蓓GN%YxNKn8Ϯ6;AwGv*G׿~.'ey htQZ~ӓU4A"YRԽ/"E !qmȷT5G4drT4d!jAhI.mA'uԡ"a^k?brwwt)J5"ߺe|m^^V'l[)"זӀzţs׹¬3K,Wm 3 xP|Ӯlb.LD}EL1q=UeZLY% aNZB +gThL/T6<_> ֗@^N~~f߾HO7\^[w<6_}zlwoT!F0أ7@/77{~w+LjJBY ؈T +КRm oinyfd^d8 ,Hp{'= "=N/?p sė=#Ç;py- ߿\3L_ndֶmWFH`<,'̹:yz;=Kd>\auNժU}擪W}nb=2NqŜ S.}Lmy-rR4Ʌ}yJ pX$g9C dnX@ ׋R"6+)qW}ՙjQݪc^SscQJpor ô'8Pipщɭ-9[^,-L+%- :yT訡|>4:_X9$NOW[8aNW: uAHy{sauW>?g8MtFWQضg->.o OU`ͼm'hf|ՏUg?#`"dWT9t¶!l*ytcٵPߟ{dmɮNS]l~_M8titJ +])߫>Htb'sZghcWBֱ z1ku0_\'l{ג.T%Q0J[nW/F!:Wy +px>"".9Oiv[Ӌ/>ޗ/-tzl6ogGnZb6[wH/ҝ1Xϸ_o";`"^L~C׏`2O'r3^ 4%D_CK8oֲ@[ŽL`~,֠!rxЏ^~o7ׇw׻ +~ ]τn,zThBeD8yt(H4#4FNj H'nK7o7X}TJ'.o=DsgOW0[GߜR &MͰPooXdԆVDJn60' _dm==7}-<^?[;^ +(.0;|=Px);UH/oxo7_|fϨW:Qjuڽ}|{'4{ٽD"2,xEqB<2ƞoWa :: ׿Ȏ?e !<9tO#\|7ׯL< ߡ1|ۏwN €TAa e`{xBZ3Qvvbbՙj;0' xǹIɴ`* adZbɧ;pfcDRL Yt}ڱf=͔A#]@l_jax,ht"8"~ J@z>! .o4`|L^ "p1k +O*8>i)B&aJ0_@#D5X>oۯߘ'p<A0ɹ|жzڬ"l*#;-t+\żc s-ow?]mpo/z@i-%>1Y0Ӡ` ^ =+˲mNqm7Ni6l]l4jolB6kM:;LSŒiTkY?Гi&Cg6x elfһ7:dCRNU\Ƃ BWu@seC>f?)Rɛ;qBwaG-a5X̀l^,ɶЁc~I+9 |lyX +ZyqlǾzj< 4S|ڊ4 _GyK"!*9Bnz?ٗS<E`2 @`w!An +Od(=i&>dZ>TyGODoE1 2.[ϳ=T_Cdヒ5" (zb*T,S32SX b ¦LtOV./ۦS<زZ“ijip5ͿaK4mx`tr)4$sB.g]eT,dSY^ RspGȹ2@伋_U\=81ãM 9Sy,Im)7 zԆ\`}߹9Y,{ Q ]iװvu'0@ƶDK1|B +LԲ ^XO^g/Dh'DCK/3ʙcp;FASa2=o azv{<D)?HBEGkn,A?zIkKk ''e?,&&@9ܣǐŦ&65,|Ȁ}(DG"wB.^5Ec"G +F˱QPz@ Ƞ9`X.)p{ yظ.8~*`} +qkbpGŢys%JR6[uvV3v}%!(]j\Cgΰ ny9`ƨdAHcvWh8ayo} +[<>t4y&tK#H +* V:ӅZ ,"`ڽ߽ Aiϡm9yρKq%h㗀DMP{N  MD}NFNv<ll1[+>l>Nz,⚀n0:5W>i꘼?_,@*.h:Fpp>rH*v4G&+nO\ +_؁͗0k2a5O3hjV.Ǧ6:/h-1]>щ0VM+" p|&f2bK[PVb(M:d&Hj$d@-)Q܋588MˎĠ)8,ƿeY +C$ []/tavOA`FYȑI8:zJ"ع ע$55yORD9i@ł9=]=،#EZ'3ZP|֎N6x^Sb)󞮀*2+̀~9Ϝ1>.o9ͩp혐@8J?*r,~?9_t_͗{O?Ug_wJ61XIcNuOT+ = 2T<5ÏgVk",V +.~u\q\֛ę>Ԛ'N7$ +&!,&,wdXWӽJp*Ec3&!`:SXN{Ɋ>؃+Bi +Xgpi"&H{ѣmry|?p@a2*fU%_9!cpdz\+C5+MM5؄vn2&-z= `Y}$&fJ!_lf.c*Y|Y- J UgR=N~L L7NhSpTc_VΕBa 2Uy!:3H`4AmT^|:- pys GZ\[CX}`PO1Xtb +rC吝ZKn>Tau\Cejϱ[kCQ0+'9& THp17*it:-bAэXěk6I+ĊA",(UOXMgNLvT.a.t΋]Sif{ Á JOg#`, f`LP[BBsIgCS?fILi t^EpgYY;< dp@Д2xx$4F}$B\Q2T"O0`<[)4d [TbhGM;*4Ё5xcE'al s!|T3rgsa<*S! +FLw`FF$#E:5앖 "v2BљL@E?2vQt":8V/BQlBK#iFU!L!6 /Jҏ8QXί9 +\'a~H&(T  i+6R +/ M^:iX#`?Sl#㰱㰤lȒVnh;6sFWm~%^T,T\mނHIYw/qvcƪ AEm +B΂mFn]6uGeӪ2[{AQˎ!) >ʰtu]MS7Wѳ J-v` B [4-n^|kjvhG}!S{f7l2`*Hj?!,,RA4|NNvM[Hft5fh0oP&k/+XttĂ'w#a]T=w o/?Foa]c5{EV3Bn{AauCJNJ# `J + \յѕ`_ i: `6]{AhoAv^V:r,Pn};fel#v9Zݴ z 0Јm/ePG!9Nt݈u|km{G?C&6f5fߗ +|a}Mzl8agk)CYѭzG Ufp;{;f+xb xվU3=/RXP6?_ԓ-d)'QYP(uRBjw*c7beChFM$& 52+!m#'>/Ы3"\rA#Ӿ*ҷ'L+ћ)Q +μW6M[ЁKiZIRཔ:2(xkt"xa3&z81o1ʂ[3쑳8f9rE]+$Y{ӳ{29ضv2AP/:^O~k0Le3Y0hD7 "97.R< AA4) )Q'4LRjL +!ڃpFx:)<'ĎhQAC:9O:HYR% P@O?=Q{e 5'EWvbآ A*(h,}Yp^Ț9 */61]G*}5_Tb\J 0){x˳//=i: dJ55j¥YRH9Q +u|=3ϣb=3*kj24]x*SL]m9:Uvguu>/dYPP0G_WQ|At8y˼ëN]ׅ«~}Bce(oϲ5/ m= [:{Xj+!Xw, Ds]Fbu ?:9S=c>` f2ҷxlZD;3YOnJFr3 yUeUӡHە*c n08 +?slPV$bՑkcɏ! ɭi6vo2Vo +qX{Xc:ޱ6c޾0,~;HI"%?g6I6Yz}=˃*8پa4 XxP+ UJAtH{M9d{.TDcUYK0t>\6@*p4XОgB![gfyB-LT0ˏ4CL뮤hsFcCyP^>PQ(eA:'9zCim}E8Mvx<:hrX^Gp12}ӉY'osYbzVLnEԭ,?QF +υo-5N` ɾ3h(Wz#RE)Aޕ ' c_G%!0) M+L TLW Ĵǰ=\7hQ(SqwAΓGJZ󣣊sC|]J"o''~~sUluxu[JG1Ď Wdfgdx'${\}ՐuGL}wvBvB*0?> l+I}ĮGJ~.IB44`xO)f1 sj7҈7 gr>0`{jA~'Wao[Uk~ +[ԠdkInZd3bۙhO7=;5=qj1W0DGc8Ui0q0c| nCjeqx84|]j`GBc{&ٞx#Oxp j|MjR+gbĠa8s`{͖?Xif밟>ܻ>ˋ49[y kXIK\廋/77o6?l^|x훏7ׯͳMn_o>{mb/^^8,YiXpG", X]TcS:o)q[-_(iMƚg,(ܾ}s +応`^vsNX lܒ⏿ؼ+]8!~m\+kaJ3$F uu6 H:cq*;`ֲH? z3aG,< u+~-;'WhU +љ +endstream endobj 3600 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3601 0 obj <> endobj 3602 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS46537V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3603 0 obj <> endobj 3604 0 obj <> endobj 3605 0 obj <> endobj 3606 0 obj <> endobj 3607 0 obj <> endobj 3608 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3609 0 obj <>stream +h[[oǕ~G*il&wmK,`5lŔd/~TUwL9# I5]u9uΩsDߝ}죧O/&1!9e/fTJ}}SxtNl)mK[ˍN1ԣ(oזgӿ^Ss( @0F +%R#Fܶ|Qs c(3ۮLvTYBK[ +xkvz_^/wgek@ +F?{z)3D4朇Ŝp{}"|c61>1vÉ~xwML? ڏڔ>Wo>>ϘPjt+~r`4 6G_]\y7o_~sb;b߅a{*;-xp@{Cc8l_gg7)njJJی;:hQ%_P![tNv{3 +F㍏M@Ʃ_:G}c0*9-g2q.Mmi .OoF4a;b{hF, p`lBLMjMǼ51<Σw=FJ3'ۀۣS9Gɿ-8˞.P;'ۑt BE.f6Ȗ@R hG넢@[hs<ZAK+Ʈ^˶V8Ù!+ũjL/n/ܘ|^ȞeE;)_CiᗳQHGynLѦQ ԫ1R1F=^ +kNq~f+S ip<&O˜cůP|3Ӆq?d/ĥW^EBR-c۵vGOuhm(_hsS[k˖}90ɧeĖ'!kBG>*Xu ]X#riw*q#v{%M% +R'<fKDtx4,C)rdt Y`7qWk vpyNl0AhL4}iӰ>%n1Az@LPuIb5kƓ^҆.KОy!XpN5(% +6 xi>4M|$hA B9yՋMLv)e.4b(غLup5HE ߁zm{vrH |i_]sfrYKW~QŊi/M.nŒb_^5,BzFAت|+䪂un(|A:_!.L"X@ـSaCnMt=T?[ooׅdq PKܶlge&eaݬPri5[3u v6u@0y2lL@m(5MW]Bw2Ue*E#m DNe(G2xcוC+N{'*5.-"BŀI:ӯHEÊx"E+Mu'Hw-},]j;S* _Q> +Mb5u8ͷIeN*kl&gӵܘMaM#i{+SK]8I,N>$"4 D ;;{1e 0(qYwfX9ڦyo۞i쮉8-Q8E38/hFwdI2 uhW3A2_v 3 {)HR70F 1 U-h9g%Yũ\[ϜA˞8z`?uǷ>"6m+N}")?VÊ՚}J +$7b%z 1p+rgӣwUu ҡ3+?Gg*ZdZMK L<,HL%`b(֬ ]pN1>SBۧ8%7ߜWwWv2ÞM a_}-3h]p%5Xl>Oh >x'HiM}awjWp9zqg}=t l{ؾݾ}n30{r%0vkY.%#lt&j7ÌnJ2ir`k_.:37$<":⎉J SGd'6Mp T9`jxX@ i[]o,"®=oxZv4A$\@؟e="$cK@V Pfev +g !6FW ^([p, YTF2Bq@  344Yu27ch}8Qŗ0coMQ6JҒzlbٚ|4e ;Y}mߴ6+] fҴ9W}c.ON,x\bZ\# :LXj5n mG7/:5"4*:0w+-aVa]rPJ4)"hE AgZǺγ:V $t^x&T{rv;injIynKc#crduё$H +`K=NlhU^˂6 yH!Ă|qWŞl6(\$ փ j8vp,%շ};8(!~^U5gJ֞0BqEhz'\ Л %P$>BE,0!u"8^8a[b(l0{*{Vþ{ .p5AYcpB9 @K&?a'lW,Aʚaq>7N(.yN~:Pd*[4ŪdSd`d~>JB};VkkެML[ {wB,0>6fvZ|}+ ;JM3&Cg`XW29mJ^2/RC4FRTnKv'ܯz(5m}K H>v /x@J\f ݻat#kYok٨>{0u%JDݎy +d"VkfL ӿ>7pux"#"$FXmt6}g/O ɯ.+TT;'sV|s8l%v*lMV)j^]f3t;+?Y[N`TYˊ_\N6_Nfѯܛۚ.͢fgMЦp-|^:.fz8Gq ]2zAER`)mu@nJ#qp[0攚sjֳ֨@^IOXnXd1Y VrtZD'3JB_{T֌9铋>q4k0mlOڄHiQcc8 Xd@ `8DS~ǟ.NmmӼ~0 +&Uf+*NWw>k60LoŬ bakӷ @^OYq<F~S9"^IxdӘyM'GbPQ.?O'ElNYCl`Ácʬ8CU,6A1Q&?snp0@ne8/+cP`ZgGQUljz7*`n|K5kJgGQ&vBC.Nb 3qmQkqy-w[N iB5C`ckAAσB!W2?|y's%_fyZ6&O?ha&{IfÊ#Ͽ&ќG899Pr#F-?XWUMLy??M88LcLN<iw4C b{ Cv#/x0a7uυg1.1p[F +SZ;nb<0. h "ϪH2Y_'?2f n62Fydò}3YF7|{wX֩-mCRܪ&4Y8Xf2ŧo8[IJ ղBIfT(b_.mnԡ}Ipkbt2KckbtICtxwuɅ;A2XzO>4{vevviWf^[zsYi4 >M/BC2x*L`}*%uave:RYD0dP݇2y>R=!L`/-0puV=^cUaiEۅt] +ϩOo2'rYD~Ů + ̅knIoڥm_tsKQ7muh!hz4kNsH^>f=G +'x!ޮe@Ġ3Y.z8\^O=^hqp55zjfLHfA -r~ jB=LҹfxWYfd H,rg="gNY77E Ոu1t%m5DE4Jȕr]bpaSA} +lyIv#Otm- +endstream endobj 3610 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3611 0 obj <> endobj 3612 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS46536V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3613 0 obj <> endobj 3614 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS44726V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3615 0 obj <> endobj 3616 0 obj <> endobj 3617 0 obj <> endobj 3618 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3619 0 obj <>stream +hZK$kZ A>ffWB#Ӓa,tEefDdDdvûPךҒsX}1~yt0jI߇qŘt>5٘P:dei~?hM*UODFn5|j磿Rb49`6Цވ%LtBv/b/]FykD^vnљP ?3l_fۇbܒc˲:_k]֐k-A&`rn7.oQjCEmnQx"AFzڭCOْc NؖKZAZ9oP0jZRZ +wqN&_ey7?c݇EZe/Wˏ +aWa|x珏|O/?lg~KZ/jjqlX}*ǬLeP3kaa, {ja_;g@a5ˆe!awn5r]~S0báopl嵆aeM7j17glhİ5ydHcNķ[l+ z 5'1`=T,#]GKϐ#H.2ZM`ᤳ֬vpT2,EeCze^#UCNG晗ytm UF1pme%u]'\ kV|<7G#nbpcIv:@LKx:쬯>۔qlx<.۬w1:άسt 7 Ai@ΰuLYC״={bL{D(X&z݃[BRTenE7MuS(G5|Y"^?i[ skAjLهNS\YTn=y~y;kHH, ݒfA=5mW9]._PrBrH9[ϩ{Bݲ4!֤KWo-j'K9Ԗ}nz/51~[j,8+bYG1rwj繞em9p# Wfc +fh?NRhQI8yltwO|13 +h+;0Pk*Q(>WqWgERU7ɿe yBw'\uV}"m: +I !ͻ^Z]}G+5rk,h%D솪G7a6$do87Mꥀ׌9l2Hmr0݋trϺ?]obvׂJ7Joۇ(m|u| +9:roN>(q_*qt#*0pxGGk9s,N7!S3~gqB.} +RBO.R rgBႂݏ)\OH7(rR@|)!@p`y|v4)颭խ~~ތBW>ϝѹ~VEbuPd34:z_ۮC@ל5y(cNmz~]Ѱ4zE"0qî!k{u+t*X1zS$l6MvõSAE +.0W짔 a\4zK// tU] c9]r`ះ*qQ 3ý6jЩm7JP۵˔ք ذgߦ}_}3;ڗJ)nhI}/h!'[E \^IyIiO)DaF^ɋx֕Y3DU?i4J&\H7:dN*<{u +suX_]h.G=O-a d&ɥN$"t}Gj'nNeZgG'[ Tcǎi|]J~i(~ZL;3vVo*m{p=RgmawܣeVzKo˗Zc:gSwW6n& =9m5WtAٮUB 7q\ƀal"yv| @l j]/7Ίgeܸl![bsq1~-},!Jl:~_ KQ RH˟ 8(=$m?꫶ZzsyNn}{S/i>J}R|%e_ }JR ]>'o <ȏR gd1.8n 'LC4k:7WӤ +bxWOlŘ[n֧["ܞv[S +R$"jyG26PLufF)x%sZ_EJ\<&P/ܙb,'=OvAλlJ.a2}D>SD4JjÆye1X{Iz}j +endstream endobj 3620 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3621 0 obj <> endobj 3622 0 obj <> endobj 3623 0 obj <> endobj 3624 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3625 0 obj <>stream +hެ[K$ȳII mh1cV7`0+% aGA2_?򷟞y~?m~)eVߞޟxs^?}k1主z4ORT` +i͞$6z<.Fq5ŭ ik K4٧o׷|ͷ~0"NM%?,ٯ...a3}y_>ߖaO'Xغ>áqnim͍Y(k2.^W/>غ-(u)bu˾CM*TS91\a ,o 8/kU@afuЧ,XŹx[Wr/{nZ`2AdVakm6K4_0n"PL5H  I t~~{Cy?ZZPr $Ăti1~8K\B 8M?:8Rܮ! P ":!qpFPʮJ1-:ܰ t/:+8X3_.LqhE_Nì4 4( =f*嗧յ +2;q; ?C՟v>!>m-Z[-|̩E$[b܊.񠚨 k+ &oh .l/i*45kptrL#5fK2)k^JY0z\*E +V o`s 8poxHnmG/ҿ;I($ޓ{B SC nИ:)2p(lHP +\(Tln^  !XC:OKJa߉08©bb>NcwyTC O^<tf^@v0b47PbdF$ЕiuWޱhv0r j0 h8zX.E:$DKkXk,tTp>Pc3~fr|LeH +F(lFEޚ=g,`C.R9h;@0q,c}FBe amrnc$,Ut`çk#@hhߐ;m!l5Q40_ Ky7]o{"(:5sEr6^@Gzc^r# +pPXm,OxP5zfԎNc!Yxj\s lw]9l Nlg}s4=IuvL*PM\n,3Rb1WL52W +R%?HWܼp mBzb=z%Nr{`&$hU_|Φ9tPLnEiMc*8z1._ H~m8^\u͎}W q<{AWr'H?[s5.itdԞ[kt#CP)5F&*/C8{X/\V8}@9v}iG6)սqhGŏKĪ83ɴ߉qY8q2S5ƩS>8qq)簶0]~o%ؕaVrx=1Dmh qJ,JCn#faͦ'vyERDs;_" #UOUTa $DFŇam\3fڤ{R67 +Plyh4!9?ʔsS!c@J)o j"ۣXjzߍj*O0um6 +Wgi;:CS:qu:pwC +jit`ŽPNYR~OĴ +DAuNχ3iBmNK:mc7)P2ڿv=beWjȏ$E<\?ÉBGRðZAO³% nTPR\3_LpXTQ/'K+)nKjI혌_ЁS% +PSfc[HD:#nhvwW5}a9SG'y#/&v9}W^F4$3imj1n܏l#s&Ll&#$6κ=K5+}^isՇ0?,_FM#AwWE9:uux)^oGWk&Vͣ6>YuFN9ׇV-t0edx4T0Qr/uxqMȼN~[36wwl^MV ?lP:8} +t|`v$c!5my8Y(-qE*=C)|`)ʀZ%Tu3dк# 'dt_CNgǖtA=z, `(e4>w; ˃8nY)Fo1ۺwkVBq' ~\ݸ$*-L8BWr{_${!ix5|`эgDÒsO`;Z;_AÃf̵q9}!ͽd$((anLA/5vѺ6&oXw7*#cwӨ4.6:2O駆c'C/OVH iWrq|]*@{_%8l$sLܧ/ Қ@ܐL2b'O ;˸Q3;3Qu':#4Ï C1UHS(]ѐi ӗaO5A>>}r~7χO&K` vo|=dc|0W[[ +z˱*#D_9l(8F:V#Q8vH>b܉6ב!xQ7iP>o"͋S\ׂwR w4tARI?CA=YJh/-kv1ְ|}AFH2G7ȶW=%jSu'V(jv>}-(y+ΞI=:Xoe?K!!:F?kǝ]';m=I؎ɖ]pe*qsT,ޫgC˱en}!v` _t{65mc)ZN9!Zmp$'k-IF}|Ɠ23"_ii}D\#1> D,~[[Y"C̭"ҚWmP|(IF<ܢakxԖ5vb+QnǷ4fif: +endstream endobj 3626 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3627 0 obj <> endobj 3628 0 obj <> endobj 3629 0 obj <> endobj 3630 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3631 0 obj <>stream +hˎ_CslCrrk  [_=]iXE^*v_ǻ/lOwEiG1)rY;}swRZ_uϻwgm:<^N^%hϭeecZWY{ +7aWq Ǔjw9Ѻv;T!7M~W'0TcZx'\G旃_xvվhM g`KKMYWJٔOwOw"4"UmD,l4= lRݯ+BF쁝kk=r,pCyGĝmҰA7඿%墲lLP7_pwy{Ƿ>/xnhGgSCA7 +JPv;I ͟x_޿?}߼GO`I@Q-X<$YDڮDb +o$탴2>Y<,줊KJg]apVG؝U:ZBz2 b;:jPC!=h`[G鐒Mڀa{`{'cT58ըqS \ULkMVі6X C ܓM4hOom{5ɩ uGӿ+ޟ&A[Ut +9"gfrVCCXrD +t ZoڸVJCF%S @&>& (l0w6yCj'mx4Jډۖ[nN$z~#Vã0Cc=Hq{Ayכ^älتv1 +5Ԑl<<'ڂ*IlQ#UW 23hR@r $ ka[U96-zxI*aS lL^9@[%6o?!s[N*/p_;/sC`!GS K~죿vov=}H"*W8:\n= r.+䈪O @n,^>SgO!.8 +!,2^P%@`_.>PpZvd,q2ƀok̶0R B>4cMIv7֠Uբ }MGQćyi +F/ KHEKk,khmuubMsW1% 8K0DaQ爦+p,xQa ށ;jSlA7Mv.LBou,qp,Ʊa$q7*Y@sSI < +yn5^&*U lGeɫ\h p;Lmag-E@[@]O'- }KVۈ]Vu"wp=lV+.o4XJF$="8 3ïߚ;z*+H|]=?@ ͝9v4~XJB1q}VNr}*>-)^{%RZ+17&rq6؏h5CH\/>eG|mڍ0%'YN5ڮSqZ)S}خXQc jTl*$U¦ĂiȠHg^H".,ln L’^{/; +z6f^{ꖆE9#ߏoF`)TNZ ƻB,͈.9ou;lU]+YEt)G Zĭȥ-Au#FMz>}JH0R`},ym`mLgvk6*lG, oܦDC:eaM ^U'lQbyZ*zN +T'>!t2#WS=AR'[ڥhvi8fXG)y Ajϣ}̽yR=JanwlkVzM0,/>e?u,$S2~'ᑻj;!A6#s9t;Y8J]X3JOJ@kLJm]/Ƴ5{6_ uSX)S]I.mWjNZ܇C$b!Nf +rɋgh9mC6L" 5=07c:GL c4NXsU9]iFì*2oXhv]Nd<oj̓Ӂ#'9\vr~w^0&1PWM\亷Ygyh_0g+ic]5]EWn@GA 5 t>9l#v_.HDP='ܐqA^$Ȑd*K7.8#zTk &y.Mrn'؝٨%RH*&7㑶͉bDo%rg[@A-* , &ȍֵ $¤>^a?7b!dU/>Q̇O[߃q@42k^ W/k.FpbՖ|Օ$'0kV`-?;Z'U1v_ĸ^©Pt + tsKz.ǫU^VUCx.v%fpTN.Qk˨ףoXmxW=^Z 7 \ny r e%mu)i츭.FE5mFPn +8Vl+O9?>niO@4$'oaAfSu5WG`ұ:'<$~Ws}VQ0%NRMTxS;LZ\[:j;-[O6G%FR_[m‰\3ɫ5ZQtR -Ti{^Y_B{Of=!@ɺk[]Wa8GUX + J8*R#nFX=RKcQF&QɵWA/),q-kXan| kؽ0TuyY:l3|/]ZoĒ9|NVݴco1vt>*Ķ[o.67OKqWG&AB!qza5"CaFp!XZh! <#Z 9bB-]!@ȣ/>fqp >4rKtRKlAYَAgG v.5 ^G h5zɓ5z9/7p`-* hqM̴i #Hʍ2gn+||G_%,l1ֻ wIRϣ %kat5Jc|TZ/]-/zyut/-~I;1~iZ~I7yzɡCKWRTq%Ptc2ٌ7L.v_CTjBCL.0mH=C1}vS w0T4DG^Hp#m E7%\ T/ _]El7hyg4ue{h|7Lk>. ZFvBtpK| g\lu#U] >BڝtgwDb^œ)Ï XB >2V=qJ'ʦMA(9u# +ltGb!(DxH4g [Q 6ai2蘤)5 [!QHǽ/TB0LvMk_PUfv/W:^tM+{mK ^:&>/ xIW!-]G)qD+u5u |E2fVG9#gD|t~ʷ >stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3633 0 obj <> endobj 3634 0 obj <> endobj 3635 0 obj <> endobj 3636 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3637 0 obj <>stream +hˊ$7_gCy,,݆=fx#+f1i+PHx)"o4>|xh&3=>?i2٘/nz|L?e1~zBߜ, LZOak2Pmz293V3{|(kߑ^+%2D8gj !#絓R,Ј})BBe`0;_ҙFl'q8~utYbq" 4G;9v藏N LfJ)S)yApX{.v ԡ#w{tW0TȟmRelE=w2g? 00ˋ޿W}0_~ &}; Y<.͘Ϧ@S(IZO緿y?}oq~K B+ qf*eEHH=uCYNڎڎv6!Hd쁬\\lP+ γf%ZB'">cal/t8Ms9R{`Ucrv흌<[mU@`1 ;jt9"̔ib6lЩRsP44l3PF"90,w3X.vɮ3-q1h&g p$Q`^PyC  RZc\ll 45 +DSmǂR&?j #u*/FB;q24rM<̦$+r~z?hrxeNx9%XL"֬I5v#wԌQDI4撄H P?a~A^;B AfvEjs~Gm̓=][! s"-[zzmp-nUFæ l 6[R [[6vk9 +/>@scHҎx(0rCX0C8G +SϕH<(Hhv(S pgL0>L@q !piaD1V+x]7DD|#FΒF+1t8Z0B㊪ɑlj@`_Vt$Ԅ-羓9Y=ch#q €̓F0.pSjxjag(<Êu58HnAT=~FTv՘ 0`S PfQh@h-+֍N + K&V53VX6$4*0IƮd}pF$ :tM]LW7 o0)L ܂PO:►ޤ[`-#w#xy ߩ }~FߑDDhϊ?›rM܉N|5ws'̳h;ZY"қ"2@5mnF%33@,^22C$[FftK +6ᆬ(l/U:b +! d]2w0a`cRnӸ 5P10DUj:Q_m$", Ӿ adgk|d[ual:Z,8TM=t}28ՠ.A{q^Z?B~dq+$.!+o%=5d +X栢9AQ KYzENjszP|EfGdR,V !)Q +X +B^!0%SA\0Å~n՟ Ҽ!]x7h|͓Onth "^* 2eV>'4> c0̰:['d90X]pI{3Kxqm" Zd4iYm=k2)6xܟS5+3l~Rbh1|]rmn&88fBehu$E!\|gMsRrEҟ]OhBIW(twPzUPCyH,tɧVSNJ ׸|.o 2x繤!k19K#2Tjn;0*!ʅ(|., pХ@.^UDzܯ7f%3m)47baWpg#jZTx_g6(p\3jG!͝]AW CsZ;.N4{n5Qu{o&t["Y{Y9$v1xu wksbD.T] q -ݾTXS*7Nk>َW3fz*zc<9-Ou -wtS>k]tkf&Wrp~| +{PcXȗ>62zC%$<`=jIKVԵD_-6`A (Y[M&j1H7qs_JMl(rUKbMj2+ԦZM})ӶK,TGNPu~ua}i:I Ko2T9K)w* )wMw/iUSlЧ:ī&u0[cdZ5&W7\IFoZ=\{ c"͞ҸVtV= + ZzMvy(ʢt僽-Vlyt=|pa~oR<{#&нQz J%^ j :5T5:M;LGLulWzy׳3WZPC޶iΫ*瞣ס,*)۳ _7y#mVNSzjxwGh")=P*nA![\O9ߖW3D"-^Buq kC?!:V b>2#<8D#R݊^K$H"3݁cl"Cptg-#tٹ] |; ?D/y  u@gxoCvmo̾3f{sfGy8@@.}S[J \0%ه&wlF\kkk5kVK"t궔r@RzgO9JXZ~w̦v wg+ %&l6[SR1?T̽wCȕ{=!M<>Zr;\ +(x;?;9keފB,[G ]CtSx#d~Y`o{Ybo;Ybo;ibgηY سm[,9]?J_x  +endstream endobj 3638 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3639 0 obj <> endobj 3640 0 obj <> endobj 3641 0 obj <> endobj 3642 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3643 0 obj <>stream +hɎ\_R܀F,d[3Ɇ%ƭQ۱` ¨Y,şo>߽vԴY)bvvgowwZfo/LQB#L#ǜ 8:6Ve3( y~ x]ty)%F;d1M;,B/GLp'] Dڣ+g@<[WX9\ +}2I_P)o?\ٌ@lwO;UHS};շ([5I.7~R*} # GGg:zF9ۃL#~jv,;}(ڛjV1֖0Xts:!&%p1"TQӨ"}Kcg*ѓyHX} +'ެlM`J}y^o'I82M2 +O;j&mbƢP.z ٻz $ݐTƭ7,t9f~&4``$n{,; ߕi>5$&:#LsK2ˢ D\eaG qٸI)W<\lPـ;tyGp[|ѣ:V[ .xc:R?N̫-RQqԹG +y+$$P,;$J Q\LpJsH2YpUxUJ}aj-"7 +KGsa*:Ӝa,q%NW ,N ޡp&A䠪}^/E9Q9@D]₨'A4i/L}Ubf־9\Ъ]<*L]!4MMjɷ%`L)M/$N.JNDt_2S +] |[TQ-C3* 豁Fu|'MK@I*63u Fs;m Ӛcϲ UZԌL2Q%ʂҩ@u͂8s^LzBk^"}Zbg}֮.Xe=5עo3rqI)F?:ڙf ZSz\L)N^\=$yhfu)@[lꃕ|.] nP’rpY2聤.S[ЇjUЋq]lלIMi(5h\g3srYW|t--Mj%?`>C KJ%%d8f \Hz.zYckJ")vr򲌩7jxq&16HyB fhItswZ)±iK(B QD]n6V0mnRxP!aTQd*ĭo^hgC/>.y§C=KMz`)_Wa?FvbЋrѵ(D/ЄMx8lP]3I.g 2e筸rh/؋㴈%V>c嫙f׌,E5L4C1Ii^dh5Geu'%ld)H-3Ϻhl^:o\8KԛNEKYtٔTzn\!]Anor}1ێ~U;\j|芙{;8ܼ}5M@tSߙ.72Gnk +Z8ŵ +cdMĨBs28;v +6έ-Sl%j#jzPƭ0] !.}.fhfP&pŒвܾ~8tVXͳ]rørd +q)#c_{N)ZYOR=ozkp9q:GԎ!Z=.]btmlMW0o^,K9RjY* k7 RZҼa/;1ؿ3$BNouEU)&阹2tc}yvOORcl>L EY1F1~JRG*5gj^j^j?ԈВϾ.wx\Q.OS.s!r!< o7Sy~s~V$Rh" k (g`R` Y%+*Fvt 4LBX]a8&g4ȝ@*®ㅬ])4b0(l|L-·}} }$yFxvߤ=o3 n[C[ J;* +My-۬k~&beMZС}D8`]BH -L.?fO҂m 5|mӂOnP6~@/'kJ3MRtzL &2s+ xVD6"2"kۊ[Do&" }VDoas^ +endstream endobj 3644 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3645 0 obj <> endobj 3646 0 obj <> endobj 3647 0 obj <> endobj 3648 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3649 0 obj <>stream +hˎ$_Qg]hk#@ L{f :OIU] \,f%J$ER$EvzÃrur))M!?=|<<cpÿN?\ t6/8;[@8"@;Vn۲mIG69i+v{l=QF~;,`ڥ)0\]Gs)PBcpe`q9qIs/0 $i)!aV^ȝE +ʟx}>=ra~p7eeNsȵ$e8Оa~Ist n;xeIJ_E@,u*-lԹ:&曟ӯӛކ觯y{d5IsK-S`YZ/7yߞO?>u߼gXlj$gPz>_a"lZT<]?RkhNf:gh :]apmH67h:=&b;yj[vCzI#&Jk [jƔރ ;[;gev6QYOT<@H:Xw3AݜP f.Mx6a6Tmakq4@ Gv`xSZWG5m5iA3{'MhTdHuR >FAz-M6.ZR+U=mk`WEYJBnM ,aAs5!92T( +m-?vm(WI$0/e&yP͜19gEo&Q kh5@͔iI5,&f' `~CYFCIm1BFW3{*$9lmXdK&k-WG@I*aQB+,6<,gr[.  +$ DL딤x$XH1l`1.;\9@:S%Jo$ +Ot@/W2Ço8}jR. jdaD$ +:#\!M?R +nLZ"2CjJ,8]Ձ\ +sARy'F:QR[) uDHO^V\mbF|~ςrb`1J%uE̢hPV3{lذO}%4 ͖W+~Z)DhJ#d r%tlQ(d{v% 絙"*Kie +n(>%̌ *^!-'X.6˶+5K Ԃ4B9pϫ5Yt +ד,ZX.dօ$5ڄ&ZB:f*n'qBZѧA^:3'GA4j^d< ":#!2h*0jN<]voun!٨]N%LtEknLCc; m?$fo( WH[ae^K"tJf<ժ" v(KڪImd!i}u46+L񥫱pCQ EI- + ds`v%z"oN7:%{Ÿ]`콰r0@/4)4LDyIG\? 8(jK} Z@J} +N:(w9#=GN~QZI>R8se/9ӫBEF#9alsne 0hZv7dtmDۓq3:>wttZ%ˋI!;9csYJNhG>d!m0O/PY3b6 kϱUt-ŪֺSk͠Z>"S4ѷiKr?^r^ˍ~ xRvTH%mq I@rq@\qRĈS唷o= bVDqdC&StVA@G]>zݢU%Q 3.f Rx1Qyve REwhtg=om*6 Wjr.>e@LN{Cl!Y!oX]L9 B d*uKCt^+FL[+ +T^7 Sx3EGdLXfVe7 ;^ީ)71ڛv| W0冓ф3Hݹ~^ 3N@Ru, q +ŪvAXHO}vTUmzl?Ɖ 9L|n)2Pku5|AgC=؇+c`<4\;< +cبے[.t$z5z0ӞQF*W3! -}rs{㉟iҙ;xkɶbSmFVȵd\Ҏk;4UsXG.`H EHRbcfݧIwhn/8naOć~[y/ow9̑^' WpT_vTO?4 ܶsz |M`L ͋.U2d`=mD-~GB҄gp??t4 ק*$|Љ/'|x2[y8 +;2'?dq<T%k԰?.0#8C +>oU܀~-{"' t̳xv=;@Lw̅}A(lWs%pҏJ UW|syeG|KC/zJ|]苛Nwxv;G=J{|e~^S!H&K-C&ڟa-a}t =9mzu=8z܄;o&݁cHԄ=a8W!u31GepM,`V +endstream endobj 3650 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3651 0 obj <> endobj 3652 0 obj <> endobj 3653 0 obj <> endobj 3654 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3655 0 obj <>stream +hn\>_{9X699#QP@ٰ8Zz})*)AV]]{W5_ﰼtrxu!?%DeS6i\>pTZ\غIkS[>jRk"i}bJ3k,AY7Iv@ڞ~.7FKaMXT㔑GnPFIByXQ9IT Ua.EDhC_4u1f7S.QGn㱨- <|*KK;E5M e(wom殡x(HdYgWGomhixC?!':S⭠xDB瞫8!NݒsJwU⬒mZƟ QIQBDI F>6W|[Uhb;piD -.]OGb؄ӑ Q? ) fIIo˷L!d +aV/}^vc}4&>iqN$(a9ƈN ^th{3"6d4ʣK@C`za89L]mߍn5 1+ɿL x1H!LɊ +wmm:&6Z}:"6oEנ)Dt -@[=[:mi0els iܖ$P- Paaaf][=pPvb]iª+ܫ<#65A֗ozqkUq3.*q٭q p$ew,@B7Y]rr4hKjvV TLA<ЕCsnwo=B;|/+}҈!Z4 U5SCZB(Ҷȯ ('DmwZ;l(ܪY/')y{^9{FIBD1JLTh\-7JjzAGWv]uw?qq:B$͚\_ًp])*;gvxv(6O\gfg9gk. ufiw)ClIzgfBQ:M\JctN30A{WJ!\] 8fKL&/>:$FzCI{qVyB`ET&uiί5RnVN0r[e)} +b\w冎re*c=)rj8Gz',b"d\GYnQO,D(- }E>%](Ք3 DZ4gKL:R 5$zy&))lLCc$CgFd #k.&*U.HKDv4Ɓ/[s*(A5j*pf,b`CaPq3Ëb{j5ܨL2suD6S2/U3gzg`MIS]gQNǺuC2T; PYnڌ ֧58-#~xS]epcFȠز+jA(=='yw)kR.n Rc (R>9y,)%x0Z<4#N?7gY+#%Ci=a>1!{wCO9y +hqFw3[6S{h3ʵ(htPPRIM>{ P{k+`{‘T@X.>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3657 0 obj <> endobj 3658 0 obj <> endobj 3659 0 obj <> endobj 3660 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3661 0 obj <>stream +h[[7v~_Q 4UV6؇Mȃh@Zce97:c&?^?Yop.vyxWK٤ՄݺdՆJs~]}+Tϧhڂ l+m9lIњ-ٚ_ֹU9KOTχEykjb Ғs0 GygQρMɁXPR)fZF "31}9_GC[ 즠JbMUvSynȕ+\G+y0Wfۇ; ouK[|u1!ZO/w\anS%HSS y@>C)X]34.ƆksfMCM\S#!1X^q$M -&k`V mV ;YkbMTvӬ$L RN&(3 i1s+aЊt&.X* 8;mZ<7ہ$#|>ո3hޟm ]-.dPI +4u5>ЎjA-u2.MJR)TAP1%AQ?-mM DK05 t7?eſ~F.Jib +]sXS}KHW)L%WG0{/:\Ey +˳WX><,o͑l "n|4lϷz ,@X|p(jbSSB  +Dv|y Fc<8hR (1&G %[ȉ T".tkE\AK_Mѽb[G$K@q 4c!ĠJ>mg!$ + {2(Tj)(Xٲ4N)Ie9;h-4F<-pO m7AQ1B҈ڴ,u-kg8G] r۴jr*8H":/X#o-95i~OO#AF[ 8`O:If&^( +^8V[ѳvN԰D` kh;ֳ \zlqji"/T<[崂xY)Li,GHHصȡ}vw$3+rp2c@g[)^@2@*Wh>[TL䁩10=:Z88p|L}$g4} ݊ ;cVhscVǩȱTebjGc>]毺w:g!W߀MnV%|-MI_ۜ5W,7|yh_ht^Р{% + ɦȯ}>L\i I5yT*aՎqŷn -{G!.%[x¤,}KX|ǖݵǹѷD&|EuɕK{Bi-·ѷ[`Wws'7wrN2>9uw|Z%"O.1Nn=/NQN /8eG4})u\:0E[?y~i[: ׼Ʌ|!=~2Mh}9{?j SlV-_ߠJi{/=Ӭt47O# $M*yۡ= +a2.KcWJm2w~ ǰ.Wauxw_r|]:=ХqT>$ݠJ|Šk A1ei_Y#en`!ƶ}ʼ2!>rGy_<y֯aIk o;;߬SΧuu9f,9Q=]ŧ4j 5!ߞoi(dϯTȊ_/!YTjj)FAAHQί5ތ76nу[Fki4\jk~PFwQќlQ~G@MQ lk?i{ N療{AtA{~ }!pz$'_zHQF](mUNf0ԗ޼=^ܼ]Yַ۵j~@wk)?P_erFvpuVFl OF6p?6Ah? ًm%|9TaXaX)5Y;#I9C9zgwoMķm0bp6XbԠ#!A ;`HCv̑ßV\!q%UyX%'A.l+1&*[pnŊ"b3-"6bg}.l+1&*[="d*Ũ*V cb1E*X~ݼHuv$w6zE2Advю;wxA68nϙi >fMP::KWyXQ7UCSfi;iA)Syz3iq(R#2y:KcW;1덋K OY]aT]Isk㝵 +X+Ýޝ5;kOƨjg+vƨjgvF*gj2ƨF +_t1EJ*W%C¨%U2%M2$E$=#5ւ]W,UXS-UXS.bTU/bTU05 _6Y\c +kk5XaǬ cXkʚsxYc\eM`5UXXaQ5UYXe z%\g VGk fH IpUx5VX^c,||r5b¸j(k°j(k"b("b("j(0Zgx`-3fMPوtSp-r6XkJlqT >jZ.,to8_)x߳w{ղW Ir Xs+tq30KOwWzm?lX2?C2?^Ra?\Q^pe &΅ Q0;JhVġԗ}:=-3VS숍+!bH+_ٻI +endstream endobj 3662 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3663 0 obj <> endobj 3664 0 obj <> endobj 3665 0 obj <> endobj 3666 0 obj <> endobj 3667 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3668 0 obj <>stream +hZKϯp(a|p<F`%Œ|U| {wB .փb?lwwǣ]r|*E㟼lXb$vN/w{ݯϵIk{ؓ|ԚR Ȑ}>Ǵtb6 Q|: E]T?}h?S)yo_`!66Y-SŢ`zuػ2+^0Bշ_O> 鰷 +emc@a?E;E%aҢ9/bip{A+x(]KMw v4'* 5dώ<KͩC2)x+.\RQL!6ima +*2h`Awh$rPiIY%ZlB.+c {i|7Y*_8wDF>{e} o|z޼i/>V:QJx#0ǪD\NoX|EBW  ] N۫" R:<Ỽ@ +;F0$027uB:%٨2$(j@# G7FEϤ [dV8,;(Yoj$M ?R͝Xy*mRTqj~ے#-NȽV*kd8sg HSu# )<07-U  +F(C˰XzXvbB (ܯ$H%InS&A9cmNٱHv{Zxuz](N|o1RC1i뗖{bN Br IcqZP9V[2b?b4jR$y/F9Sbju SY b*HGȧZk{ByLZ6R('Jqf3̗%xoP lGWJiO{b SAiqE 94N(Ci &;'ۧ"xVAފ`+yxľ[SM&$! p6Z:ɗɏ}L94 *[N RSt)y|0=OS?蕛+pC\\QP@'@ble}wh>'.YZJ?Xuö]Iwݕ! q)'ʀwGϵ2ojL"Ji窍=G)DbRq='lrwUzEQկhtqh@_%E<8\\}>(e[ XzMhOzj.͹I`^6`- ;ǕAPe]@UprYꜫ$Mů?Mo ʷCɝ:ħtʆ/&jzqгjږVQUԍU\EVE=k_9H +F+.ZJ206׎Ҭ +ȗҔ!>1\X5 6Fj6im\qfSb'w]!HzѾS5Ss3~7nn{%_dJ E0/2 *MTRs1O"3a%v F5'DWm(0&3u1Eim `wcA@g} o3-~엫߉ҖW>z,`Ö[BđHuk>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3670 0 obj <> endobj 3671 0 obj <> endobj 3672 0 obj <> endobj 3673 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3674 0 obj <>stream +hެI>IKo_%'@"Q,,95?=^u#dڔ H_z_Kr@ qy/HHe|qMa(y R 6էՕ@axA3 D{08eCf܁cWΈ7l '|[K6P=ic;xր|qDX`AD( @w5AZ fmtAMpM:ӠS69iZVJz _z#!98,f] $f[!)"0d D5&(02,0F@F0*FNY{6q|4 = +D a{l~)-W K qq£z^#yWi!Ngl8B|nZwL5/yDa)I44L-aUh~2Yq~E^fGIl9REWF"9'1D<ċϣ䨌[`gH$܀n *RX-d@0LGCwK((ѨGn'r}*9?!}s #L*v|2"/r /Ep 69ĀU9eKx BgA6I],rRWjJod<3  Ҝ3Zmp_4hIdBzV)g J.ԛM$QYp29=å10ci^bp2)8h-Kf'ͪ8;%ͪ8OUFktBBVqi_?T$q?B?Jkb+F@lS!%|j李f(2*G& 8YRO"Y&zF W rjBRC0h 0WKN2%U>|G>eh' V +a[}fa[,rhtwC$v=F:߆ //77}(_f `b=kmOϰ5I -Jȿї}Ř :d'>[^=ހ^FmyOvp7CTgo@BP6؇k ߼*tNhUpIN_}-ϨeJPTްTtg:B5i+>_i^Ɩ~ˢWG:srpM-d-Hm9YSu`ր,y4>K#tS#,vr'F5_|#sDgR|[[ +ZU=$gІ&ӒTsn?@y kǩQp||?Yu>mҖ8m*()&nHwmh z#J,e:< +8Uγtk5 Q;Jr%V27NިsY847/vA^Xtl}4nղ,}8ze!k[I#k4JHmsi6XЈGŇ])yj#Nu^BNb4`/kg)Ɍƕcyƞ_aaW:N? =w&c]7ўhi*.)O_y\/vxk]Tz'^wϥ:Ͻ_r8@۴%P^qY J߯ ?"έd3u2f~i mVgm%l@UGАg|<6'(ʬ=V^j ;!0^1#3]=&Iqim]iCW"FX \È/b& `Ok/2tSޛeq4/s6(  +ߎggm}3`?;M}lӶ G{]L 振[6Rӥo~Z?rޔ\Dk[UV֊"w/Ü4/b'n: +endstream endobj 3675 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3676 0 obj <> endobj 3677 0 obj <> endobj 3678 0 obj <> endobj 3679 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3680 0 obj <>stream +hn}v( XJvc)k?ggF6. ]ξ̳o.˫ͳ+3v&&ل)F7ۤtv6R:OW\},J?(n+ ='^sr/kq.x=w7]='8jsAdXÁ3u8XWumuz8IL櫫 H)`9Op =8g3gk>^ Xٷk,j׻=> ySf6G8y1WV3u1LaG_WkaNSsrI K6<޼{p>M_>LP++u_ށ&g ~6VFy/7xÛ~vq={VifГ7pDoĨg7k;[[Y{/sFnVIhLNv3 +8$X`iΗ=䉁=piq'R +r}jG@o ^ltіNs"l^c@2MFbO\CPn|@c}@8q$/CQG~xd_6 BWh&"5To5Wt:_->Fh&aC~*Gț; oQB5Ƒ̃r.9 + *a,@px 6i] $W$=qE47SMñ+;Z8Ɏ_܏|2Nޚ*021q 2Jeπ>~FOG9W:|wߜ !l\b nUk*dv`>ϝn];xme]#w&V |>4]`]VAB2&{j6F`9YOH. G()ڂZ*֬UǸ;.S\<0"Ȗ'A-c@4߈~t٢;]5oR~+ lx D<.=]B|zI(t4'hDHcS kb9gqk"|Ry.kre5L(n(-QG\ `Dܾ r3ľ#9+c 3._sD&Y[qt6̷mI[- Uu2T$%#2zLw @}S* ,K'S$X j9';WYJaxM]ɲAjLE,r-Pp0V4‰ <aM22@%)`˺,EF,(/5;k:k# +HP LTN׏6T‰~ǘq 1oz7b XU{`ˬ9sҊŮe"H_YJщ-CX!銒֛WXųdSKD/ "Kͫdh󉜰VW`s0uU#XHл)!Ͼv:96'fuP؋%x`lC'X^4uF5#H9y+ 6xcSȯ 8iQI\\Jş i_qӋ7)˾a6( .Cp ĶOAť) ^A0xՌZ t!s 2t}DP}m3T1";ppz=ÛwOϟ{ztd (@-g]3^rp7Q6Mm:jLSem[SEoWwE|H_h_Re%SBĚ`чi8ߟMtFZ#sXjǧ,@iԶ.ض935bIN]܁bDmu,2Oh\h"lߟ>܃VB]W߹oWoWoݩO@@" ڟ0=6$K5oU =! m X`'X)좤8|ܼ*+/[FO%:k_@6՚!GafnNyDlzelИb$$epYO +}U +ܞM޵c|YS9JC14*`'{;Dy^7(Me_s2`(Dz7}<9|8<,Jb|` V BeҧC6 +A΅lس!,B \|{1޿݇iF&Ud!$;@t"Cr'J}CD¸S;t_>'Hf1w#ricmKKk-&Hxv,-/ueBZV'N~ +;wC_KwDkS-?=ҞR_mmwwlKմTcS.s8eYވ^P˶] K֍aZJGGnqıuVdp[7j*VH(M /Ÿ}^e5p)p(qD< #6pF,hd^~e$ޣƶ/[cŸD8PՇߋQwe^/`t+ +endstream endobj 3681 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3682 0 obj <> endobj 3683 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS19882V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3684 0 obj <> endobj 3685 0 obj <> endobj 3686 0 obj <> endobj 3687 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3688 0 obj <>stream +hޤ[Kc`Z7 ` ' `;2$皟z] ŪbWE-?|[rtז 漴mq ǻmnJm!gjϕ)j]FM#B95.z9[LFlU<:`J;޵e&>/5T iJEI ^KB|ϕIvaxб@"FIT[xJrdVWV)L["чv%m{Gd~oԯ_ +|>֖5ӝہ};y-p8mto1`p| +i͞E ʋKԴWPťy^՛_W߼b޼&}@E\GlwY~.Z{w~}ۻ?~|_gغϠ6y|wܳ[Z[srHN~[S 僔Rɇ5Yn7H-W\W3ͯ[4jR +!5y΀3X #\]slV:S{ lZ<~ջLe"SΠ&H_3,&hjüQ0tY5E.8*V8+0 %z`7~!=$҂ѿ+h޷ʂv[ QnA/E(ː@]C$#Ԃ;eR)Cy<n3ܰl4 +D{\AךUОp9R" h( =f.巻յ|AoX4 ~:|2΃apm-uo~5mִnsVOGp4$=< Moh+.67eH-%T,hjX8Te1 r-MۨV2 V7l*QXO|Ӂ 謁;RBAσx5-ٳ;8Ub; A3ͽriMRƍKW)M:.껵 +'DBÚp7#R$s[+S!4\"Ss +Fi|8&B牏{IQ 4'\G9L 6 p-4nD+׺Z,}( L GGFt!Xї<[YBV'aM@RY\?F @Pq]@<)Aô{-4!*ɣF0 zN5w{t clecrf9E>]D(}/Nʫtɜs<Ǔ!J*s{)uu,AƳH +,"G!%3\c!Uȷ=עr:- +߂/a˝swJ%3A)7[Qͷf|jVC<맶Nӑx*䶔K6YjI69 3I !N,Пai2Y v1| 6#9a"%ܚbfVjfiѨ +#c>i:;I!M`Vt--m[P\~p ~**Kc8pUmnLedNJ Q= jlFJFT* ݐ)y{kP6K7qzطtmPA}ўѲ^Ɉd=^Gq+yQnhMV&u/e:SPeE` +{G<'Џ> J":?kiUa?fݵ6?m7?g!%5[sNk`-1mp@LT3Tvz6daU7rs3:?Tc>6=] *$57߬Qxŷa[OTy4 +6HŇ}⏇i/hxcN/HD5jQϚDvQJjP|$m/+.X7qxƞh:;_!z\#}WS1 og +.%:jit*'Q#MSZO­DK`CDm=li +l/#ؓ9]Qm(Z*s?Ne>lQJV8a)H7A뫹|/J.GД. +UD/inM3Q&dB=bƹ Qf|ĩo-Cc|n +妨, )Z0z>EU%6},[ M)-m{6rJ) b&Tn<)̩x.~cڀcxNl1p=\Gk.b +&~ |4sC-_rfi: G.)dSv2k +CZ}Bߜy:VSg1gsRܘq=/§IFhHۀaTZ&zK{p=.oZx62.ߌgB>: ߟo"&>^L}3/%xYdh[̄ҝo:s44jyiCX.t1r bf$PSNJ|MQ'f<{r4Qzg,XiL\=mTAlu.f#OLO##!6eU0>j1Y[<8Wq0﷜UׂAm&.sO7p,Ny=:ge待)`!w&9jtIljss#y:y&20!|d~:mFe(O] J!W )e " i 0.CR9PZ;+潉:c2gfesQVKg@[zs$cRF3[W2d{Lbo[n|s!p- ;IR;v Y笅<؁ԡO8thv,0A&+a22t"ꪤ]."!;ÈSsjSgE8>V(ex4; 0+ԏڈ%L #쯙* i*e. W&O㵔-aoB';SQ{ɚ99}9ȹRORPi:^;+1h 5ωYZٻDn1aez]vY^*Im$=_2 SaAS];z<fb$Htb,/3ޞ~P(IxKn ?sIwWމ3F#CCu%._~S"DKLOcrsl{%} +û!z%[d:Z }\(m&1eߍ^-SOo L[n7r~gA§=ģB̤a]iDk؜?zJ/MV1][ɇV6wdg5 +(?I>ĺnj,IsCLL;\}p`+^ +_"OL_Oes +endstream endobj 3689 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3690 0 obj <> endobj 3691 0 obj <> endobj 3692 0 obj <> endobj 3693 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3694 0 obj <>stream +hZK_Q-4wa{f1ICC݃C{;=m$0-H%霯՟f>^ߞ^L28-16N)MNi^S+>,ϋCs_3~gYyi,xz~'fJ|oYLrxFYi$+kaWo> {W0 +3CR!t.s(~bLOvvܶ Agȅ`繸l ەy6>B;;/2;z.d0R;:nmc1(s:ɦ0yj0&j'w6fN~lM5W5st`1ؐzΑ1S ͵ ~ks 4#RF-GCϰ#2TD+b\0| ~&Ev#frVhGSyv),Ћ7̈6i@NB NV|Km`"c'sӐZ# +:M~!։xFɣh'i[FilJ""HKdMGۣӇfzlo")neR/XM{RR)B scs^KR[T2d!H8~%cw)c9dAKeKݰL*b,8˗Ul?9 + ˋ+'nQG80/9纅 U[dK.Іyalǀs C|4gkz$Mѡs(K?/U!_p#.7I邔OUw\uI%(utt/G ]AO^J5уHaȣj[EZHH#(Fʍb, +09P)$"3X0B7$SgS>n40[jgPh3rސ-zpi%m]!aW_kc1zW-(BJ>Ypm%!gL=bJ>,ԣK2 ;:[ɇrJɅ|vжya*n-Y 8_B'.@:99omF/Tsk%bCG=H J -rE0GbJ'9VP#ű$´.FMe'RYSŏOIv[0:ZiG&#Yn%CVkʺ}v%)R$o$}TyTWImeیv Ő壣`+] #Ufq0io:K]ʬT!z՛۴f +N_^IjYU+Ɣ_ɭbp5WX@~o}ÙbVdRS"^jĶkOۂ}'UFiI?)j^vU*-oݩ>*P}{6# J֖1:f[tQa> lՇ󪒓l*Ivm޺cީ6mcF2 o7TA5r)q{~bbYf"[oOBr¸#TFԉY +Y1.ip*SJ!@^*_HKߊ:+:DzTi@ܦi[Xf?j:z(qp:,q%`񛎡t8j"gʺ̺5.ong#ޑ #g‹Iwx|IrRg8L:qol$pRk$^ s +!ja}PP)P1Q ՍeAU}^g7l }bFL6XB *̈zvxqT!r0^`G<Y\J +˼6.K6ȌXCJ>važC+3T |(u0~ܕ| 3 7 +zo$=T+{G.]GkG\䣵Kpm%MJ۞}/}V_uoq0`ZWpLNG]jss$Yd]To<>EowઘwxByGǡ?aj\[Axz~fVndŖ,r1) RA +T܌xQJBQ"T>kEz%7dz(?JzHAGHL{%AB>ڨHqii {H}1o&JiOVd$*^uHh^q + )cm؆.b(:",EcirerƐW@YQ-n՞nېL +fLBQz"K +endstream endobj 3695 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3696 0 obj <> endobj 3697 0 obj <> endobj 3698 0 obj <> endobj 3699 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3700 0 obj <>stream +hZKϯs~>X699V KU&{ײ[ bz_a>\.f1,bcR1.E+[.OztVZ\]{Ak1LZAY̚L# Z1E&gc0ʰ#6ewiG'7V~U2=irY3k)5VR!h[.3U"0aa02}䉑vYH6OEcb}Yv}=;D% oʎi۴Lkx~GAZi$(J)򩔼|z>?U +}.@q~`JoXp|f)ERYH#O66|*xL +ghdie<zḐSೆtD@y-O?!UN-O)w),MO5KK Ua)S;U5ƚ$;xuc̽: 酌.MFk6VHŒ9"*e5E2.bDrg$S螘O +hkN%U]UxrKuK*)e)7J즈5λP3DLcZNs%W!C?Lfh*D-, {q: mpDX3[*dmht}fWhBA +yEOĻ V~71moWLUaUBgO 7MtrQE38JrKp9᫰axe;=<{]""/{d4QPM>:6e ʜXT=" z&4~?i$rVdZtXi)Nۭ6K1ڵ>vZc>amw߷QL&:255>V< +GŒ?pd80"/DPZhfJѰC8Bi$D6l_G݅W<m$c[DUfȿb}LJٻ4ޅQGq,~.; S8uS%we6aPoFB?rǀFi(RN =6Vd&a(dD@ln?HM ߢvWn먦?}sx]++6^QcYY2L" ^W i կp_rݤ*;1wX1wycWe'd|,zG_+ 6Q3BNYaFVCԊHljaK8ÅB|nzH1|1ޓطh؊2]4+ض ho;Ng |.iJHdFf'.A8 ѵ[gzz݅K&Zp.$\UzdYBs[v/a.'n礸%||\S]7o #VtOc6;:`.^p\c/ nJ}ŵj HwreQ*qcKj!U >eM޷(%3Hj9{9PbFUN,0tpZ;}[//f5\4v5㧶G!]_kQ?V6 VQYz3]zpJRVVp{נ3“@$ZE̓Z7ugTι3Nm~gÚxޭhM { 5^VYM_ +nˍ<6Rvo\z*ϧ/kiAɎDtS9c8OjH w2^{IQQdnk*aU^*c8J%=Xw6.lHhKZeyO{VnOoGRxz?mn5PAu2y+hrO:o#ݜx9i߂ߵ 5HW!|v5d1Tοw }-J+>_-bIs/=/Z{oqﶷ-ZQ*4E m#wy^[I7/ñSwMM~M4]gdk k|"$obܸi!:ģh#l6<pXcr,dŽK  su|;nal_<ڿ{<{%d>=}2:&Gs:}rO}5؝/PDtHìoAj,ΛG~mtΞFB7_׻t%1ުe rgLs9=v 4z?"fkqnrHp{s=uȷkoV#Nzh=Jc9F/'Լi +endstream endobj 3701 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3702 0 obj <> endobj 3703 0 obj <> endobj 3704 0 obj <> endobj 3705 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3706 0 obj <>stream +hZo ~߿b[b9(p@jAK~$%fw@ (IQF{翙׻k;~U?~I8䕛vzzSZ<]A\kFQkgOx3yY?upϝqʻO?^\~T"yDBpF!eB_v?=|~rw/> V:{C`LByHei:>1.Z'vXhǴc*B/,"P%P^ γ2>buVhY--3u6Ưib u1d~n4$̬ϭZ K ˻0F%KYYƱV`C8Vjly[ fylJBJBZE[g ZBB|,WC#săDVe7n$m aȋyv),Њ7,V@N S)uTDh24d,ħF{DqRk5:ۈx< +: mrӗ29a$dz~bSՈC3G7~udb{=k(mÆ/pp)B scs^P9[$2lo$t/R2f{'J7a+4Ett\D ='lC{ٻZzcQ'Edg,sS݆OT Oic~ߟB?x 7ĥ8lpSMSL'+rw:s%D H'OyU{?o'hΔgs5EwD\" t T2irU W0c$ǽ > \BJ;dT+ D#AN Wj3LF@>PY2 0.K*cwNxB\WEP,w3+^ܹ\F +XEv:(n9Vz^ +@k ֥P xgZ\e`"VB)dL D[ +aB6VKBYT/V-{5$-V +Ju2T<4٪649 %Rq8J oTҟNf3MGRs%obmGU'˥ Uђ/mwW*ONM)|2k. +,>'vݐٜ/5TndL(vs&Sڜ[C<큨[:| i!Mń%S !-,V;o|/х)ЭɪY QlI(S|X7-M2 +ԓB?8/P#޶-Gxq$fhl^@ `_(*.Ag0@[m?ר`B>~G)$K88 'o'`3BM?)u*3Q8vb9㌽{f,,ܡ,^PQǶ*쑭k nat#uHCP5 .쑴kuh޿hNv= Xtj/gmVa}|- 9j(O|¦x8^P_V~ AqO˵2 + ج*!WsT#qş`;r$aC ("S  ޾n7OO7׫燛4z^G<2~{FVle{nIOd6U%};ORw_eR g`r +endstream endobj 3707 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3708 0 obj <> endobj 3709 0 obj <> endobj 3710 0 obj <> endobj 3711 0 obj <> endobj 3712 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3713 0 obj <>stream +h[Md`7 ,` ;^ +VR,)ϫtvM|0iǪbˏ~zۛ77~>קP+eKiͻyzsuptsB?W7F!jP]ʾ]]EUG*q7%A^2=t(S&A8F"zԑ +J(ѰI$k::аaRJrź9xqgK#'Fe*riۏclG#gQw7W/&b}rަWT1V\]~/gxeq2ٕ yS 'fS`]KShpg Շӿݿ/? ssO )ӧ1wzw+:qC]i8=h9r9r98!ZcE)y| +}:qs>-GMR H7GZ"}F)TS[ʐ͕ԗѦk\1n.#]@04H1Ӏy @66Gi! Kc<hNkbdi}0c٠a%T>aH(Oz/0!yA_bKG+q{"Xf4vL0DgQ>e"#>HP)qkHtSՔ(D6%!?d<|oC3%!QL 1m,EiYAijֶnnv90Ȟ6J޵6vZm#'v^qŮ;hl8A+tWL*N&'ϡRyK:lu.wϓr1=E*Ӽ`~.N%!3_%ֱHbFKlPZQkM܄,}W뗔@g 5Ͻ!X%89#:PsE5MHBs9\+K5qV֥,[p^ _h1&' H)~ekNqSsԜ–A] INp&9-rzIs7 lS F&[)lE#׃rZ ZAQc-E94M n*M`Si +[JKH`/pؤưɌQ&Lp&7-rB[Ⅰ/Dx!Z&Ip&3-r;&5Mf5x,G[Bq+^(l#/m)l)M`KiZJSRZۜ11Mf6)l~4=6ɨiMA-c]4Mf6)li8m 6^3m1;dgk+c oA϶N85pA:ԩNtsM`ËN xM jԢ#ݨؼ7 nT`v)lQb&ELQ/ks ZAoȚ"Jz"o_cObO Z89ꊭ*_6 0ͻuyJ^)Sbܔ' spɦ/z7 ,;`F +endstream endobj 3714 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3715 0 obj <> endobj 3716 0 obj <> endobj 3717 0 obj <>/Border[0 0 0]/Rect[74.76 87.44 89.76 98.66]/Subtype/Link/Type/Annot>> endobj 3718 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3719 0 obj <>stream +hބYY~_Qφaw$ =ŴI#"#"z46*232O/O???-~>g|=4b^r1>/D .Z=o@}m2Z +S)`@,4ћ1,1$ll`WCkm1V i~7mlf }4x&Z@,w!)˅ܔz蔫9yRo(]#diWlʤ r +ioLeSL%|_pϏ_^_c "{ZوGeǟ/c_L4q3 /O__y/o0?nIO(&%ޚBYDq)1}DhZ(@Ec'خ-, yc'vsi#9\1;ZAH6BPu'5=xۻ ~ hRܰ]m"#uxȜy70`Za{HT2`M`p].BLo)btc>ud:DZHűO6S2+ӵЬW@ +M* +=O!ooImJ x(FsCUKR;tG"7Ns^[W9Ū*崣Rv(ǹ|t%pO*A3m4N)Ģ4ijv8O3kbQ)GM ڮM/>8KzSvue+ÑTV1@sL%5_jMhu\O1Vy륿 {,N =4s^aZ{B+?`7 ^zZYFr] z=cyvhY$U#PTI6)BX[l[ՠxo`7 +endstream endobj 3720 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3721 0 obj <> endobj 3722 0 obj <> endobj 3723 0 obj <>/Border[0 0 0]/Rect[512.94 87.44 527.94 98.66]/Subtype/Link/Type/Annot>> endobj 3724 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3725 0 obj <>stream +hެ[Kqϯ-k*ߕ@+ awfAܕ;Ycs *"2_~|{~]ǧ??rw_}zx|z +KXZ9oiy-?ׯ_>^/0㇟r6n=3.?_a څ\?煬e$DDR}i@iA+З+tא+-[4ޔov효:v.:0s&)0"k l"k 1$Z55X 8N#컂 q 4A6a<̛ Au^KFia(5?cg#CreA4^ +A@}ON(JRЂS&4zeHt Ԯ)D ނmZ5P5@v;~GJ̀fM^}G{i~Aʔ׽4{A{H]"ʋQn܎r+-<7+r~18B|0 0X-" ִYˢG/Y|E $L&Db03Xq_q /F]HlrCW" 9lgmvJΙ?[e}ЊkGխMU JD*Vb}2x0okl  + +~cu>P 8$$5z(!$8bp0`c縗PHn9b' +W`%{ +T)V ~Z֦4miD92iqOG⋋/B"_2s ( " ۑ.p~faa$ r2 [kf{&dB t]iKUuGyŨd!M&F]Udn:V+Q_oH1ہم$0W0D|g]y@bp?54^{]峟T5EBq'(6]h< OL29:IfDM.1vm/2[&0Ư4W_@u{CA+I\[9NӐ?Y\DrH3ªzuEy7Y j,֗Kae-g,L =oVȩiW౉@f7h}؅b;OK2N&K1TȑjSvUG6E^9C+WJۡw={"SCYöȣ^ A<.lRw^#Xa5~m?ވ 6.zigniӍ{ ?t8T~V*"EP vsi1gc^}`tbouuꑎ*iru ^d6# r6N ("񥱦Rv_`(wa~cԄ=RF$U (QŪGs8F]nF$Y0]E!+0 +乐)9v, +jh]GN4u ncpQ83p&lԏTEݲ2!l00BpZ$ث@Ntao! ,g֌S8R;NGzYWԔIy |]r֔8 ճ hB ;hdWy>Hƭ$V}XC4-ZydAth&#.*}>fQ$یԱos%!-yhr°^Ҝy Ka"1Q5 ++TE/k+ڎ4WSɎ)nck%z2]a\H"!=r.ICץpכd:8JD濒hMasf>"X% DAwVV헰KmhӋiӸa`)#Wļ8+r8T&+ϟEtpj!znF՗;I*#s?' N![W+#I+I``hƜQsؤqQcMXI^d795aait#)̯IbfzdL))*DyxTDP(^<3@ +AM5.UhU]+5#d)e.H-QEP8Hf?" c2f3 eDq|8 sEHFq5ش:ﱡX*pDsvjY_}*]LcU7=W|8nr aM,31 LQ4Cw<+ǘNe~i,>ܕFJ4{k jy>|Gauhz/4%0! "F +mGxxW"`rN7E$>2"=9J8\kMԟp2}ױq9YV̧<)8̈Vt>S]3/)x([ٰ̺>WC*ei"rHX,~v1eؖ!wLuw8|/, Uf( V((Uf`{sZyXJ'e7waՂ!:{Y;)CI-eZX9 /EqV\}uHqtٴm:Va*&WAV-]qf>;,jǃɧt,NX3rG/yay-_kl-rS\947DY)Ksau:OQt쁍J:yG$ FR^߃Hറ|P % e EWF hƆ(_tC=,T,; +vԗ)B?{'T{澪wRK^ vI"Iax# %yrϪWʴ7^|qRg?cS + *D,"p~t2r"(e( @dǞ&KwL #-8>v?Nޤ%a4#Vk`E' +Au:&!aʳ%\gU2ܶNt´BYO4|5{.݋w$#߇j6[ ZpXzw)OfʝP +RS#uy\'kUJ XT D̀gWH$+gQϝ+xauZ-lvL +<1E q|# d7tR Kr1<;d^Ε~]su˥N57UŅz,XkL.5 gٕrlwz3eS{l3zn="cևwGc w&\r7h+tYXټxo%Sj0C;Ru+TR֛ݾ;%J[ܛ-*4;3-kH]LnV44\]p U,G]/R}+den0iy.4k٧2Ł1NpGO-׻Eu+-I*s[S 3\qq=jjt / ,KĶ:-a&S߫G<0|G^\ +endstream endobj 3726 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3727 0 obj <> endobj 3728 0 obj <> endobj 3729 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 3730 0 obj <> endobj 3731 0 obj <> endobj 3732 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3733 0 obj <>stream +h[ko_䞾+/!@El Y\Zr8 =%:b?zX[i5ٚᦖͨ啱b1ۈUp 4j:3`;j0$td9X)ke` U(cZd]\j0LkXXJ1 e̪`т@C";o3h$dZ1kE])h)pM#8ݸףo :6L#~d;Jnf.nqAEm>u!H]A{QϴWCzIaxOS[nBm%j'<,9V(eAp4C8]XBHbz% e߼rfұZFXؕFOk-(fbLa,k +EYAeg,_D~9igs'kB?OfN\|)Pna`v\zp`l3@Oa$ڄn` Y2͹B:Y^Z.ZBp ]WT7s0Igظ/.>ja52Ցz)Coa}+L@̰s®f3XGaT쒶^=}"9zow((;(9 F0O=l@Mcc\Pn  +[AV3Lh _tr46PkVjag$?}Y媎Q#LV$Lw `$mSY0Ȝ,wןU4atؿywj[8oaY+VDPBX6N DpMD +&Ӂ}y ,ӣM'ȗVld"0hpht6\ж{1K2 (R GAZ鐁`,D+Hʡ6|*"WMPG!2o`4wXWEGi_.x.yV'e(U<*qE bi2S)_}_-l*rP0 ?P0q \鱫io&IeI(CijHPR*뿕zf"*y * ؃@?Wgor-υ5aTv6T`|D xz|pn,)&^Ka\~l1"@Aȝf(.yb졐fl "' Y]Xi< EP̘ 5$fYrcAS:HS@ V ѹ) +!a@V3B/N & [Le f7K%ЛP1ճ 1m9+tᠫ\%>$]]X* BB5fh1Ϋ&^>C(Y+qzBt+{,%;SfgR]flIzrg:JӞ1. 1L`"UB'H 7該0._ٻvUnNa aB:DNÌǗ/?KRHg}Ac!Sa! +iR&Oae YnS!ՉeHGwz$쮰pOa*1皒*{}Tb'?Ar?)P(aw/W*ʶu1[bj&5nJ?|xNEօKrHTi2t$GIUm /9b5mPjGA+ WT'ar؋LTo9_Y.NaSl;ly@D;mIdԂQ[cIj7y%S=76r` }gUB 4rUBJLj=J2Q\snԝ0jGm1#ᚈT8hg[Lc?Ms|,,‘HDVD$_ӭtW2f&F&Woa.hpԶ }@OʚF +z̪RzuնAS _az\} ʧD'd5ÜXr)*:13a[Fw7R W8CwK srYQ2iB?;3Ғ3x+j+,V)i;eH.V~=Dݸ&d1ndB98djJePe[ A]'?k^j#N[?0gBR/9{8qϼ%*dRFmW} 3滕.‚wy7[\1eg,z<a"x_W-Vld7)(:['u +z@ƔͮI!>L2CԮt(Vr%^yqֻx.OدvexX8TNcH!نVe/ee@՝V- ؃djѼi3⭄j84S̕z`*p!Tf1q?4%EW寧5HI~`*DitS՚T@S MK0w7Uٕy5_緤2C \gr\M1g?4mq@x):X v G#Kr5b6k`: +iƒ"GR1nAf^6iU,K*GNKSSA=2c 0( 0Xofҭɋ + GK>?Ng|YfA]#A;Z)Fj\>ID`wE Զ/ѤAʨUy=57fcaÀQ^Lv\Sͮ!0F[OlC^aehD많44hܛkP_WtwT5w?אR +}HoKss?@(Sa]bMp |0Hص0lc1u /?tC.-s|L1p^ #@Sɳs4*z}xx21N鳳)/d+t;r6b[4{r c0Ryސ. +IOVVd K_4Q]7o޽mيoJXR3C( Ƭ8 h Wpx=ȶOy(iMR8=:lRb>u5h 4S1+%PZ*=[T̹ʊѷ9!4b%|o{թl|ѩ^N;wvl, + >/p.xBצTU|d};ө=t>ǫʹ +*ZR\y ~dT}Sv6nw߈]'=yp|C2]Uݢn yY>n.imy;(Egة @,MXOIi @ Y1c"PSI ayZK{%o +qo/JF'y U;dIxK?H!x'㏏fK|l7tA9zqzRW=^_ZzHë7wd-__{8^sr00oO +jvNyk3}U*ʐ ˿tSU|O}UP۲NMyƍ|/p3Tf^7+7vo᧋?pzV\/KZ2ZjxXpITB~v,K$/Yj묤+8ݺiHBrK\SCէ e*DUu%gB>hB#d±-c$2r"I$1Y^8pNܖ8C5KJJn)>NCwI,mp1a73MW_WMHxwo?޵Jq[ cCMסN.fDl%oؓ_ްzF.7$aqa+G&CbV.Jl! XRذHU/WQ*X%8Bk>ŏoUYXkdUZėkS]$ƌIEPM7`}hl7O/<@7[D`G| is۠vOHtYLJkKPQӑRdK;+}k1OIEӚO7 pFcd +)$N,oubKg/_ @9)vvͯ'SiVnxħS͌eA3`*ӧf {0V!|?L8FP\qnZk]?2a}YEv׵EY߱?/` bR5M̖V(+/|B_Ҕ;Gi^o[Olz]u#G-1NzMh yP8حjUsOgv,Ѱf\5>U-UKCmOVjPU'cG{m6Z߲aWS:#o/.Ǐ~uϷ?;9O[5@5#:5;_3Ŵ^ 48 ezk$۟mN pֻ3<Лb l#&[N b +endstream endobj 3734 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3735 0 obj <> endobj 3736 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv47998V3.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3737 0 obj <> endobj 3738 0 obj <> endobj 3739 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 3740 0 obj <> endobj 3741 0 obj <> endobj 3742 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3743 0 obj <>stream +hޤ[[ou~G4UƠ[2  PCW}ε.JN׽\sx/˴><~:<>Z߿wund2-_lLsSYf7}ZWyYP_[gҺ ZPP&;c0sa5ǏC|* XtOwܯ%6m㔒]]#n^uf`~2? Mb>r`D {q V[q/>l\N wWpN ~LfJ)S)y|z"p;,?m9ΩssݚiJ}6t)2A"Qxd)s-/vӧw> qf4ա d4{<5@=?=~xzx>ܷ6/30:N_0Ύg6S)s,4?Rǫ]PD2=IQQ&)﬛=lk7%.l|yCMH\a >Rca,/t8MsasV3'y&RG9:hŀq8sGܷ#2MPl"ya4T`gAarz@'4 t/9O#JPr` +A%ȷH\P"euR'!Ԃe<JP)T`{<f. i,{mkXAR3r$.VEP('.[n\r׫ٔtA/H'4|\? S>T/~2dIu0i削1J+ʧ!xxPMԄ$' `?a w @ M De̝=7җBRΉZm(KkkhS(X5IȾ%5pLX +c~x32*0þ`"q䁝8<{PM6n mDྗo4`+Dkz]VKnJ0"1i^'vWGP,w,up8 J8T%Íhjs܏g~K-{9(""s :"TW1u( Y1<Ԁ*WG Q*/H-7iЪbӲ(AN/'o_DAǞuV:v",UDz(a:頽'qCb-H> -h;4GRi'8l6qIKCq}Ð9M@޾'9(n(*T)FDRGkqtl+tC)6N3 hKu**^"UvؗS_$z_$jla|fhm1 ,SmK& v,d#yWwg  d9$ i9 KQ FGv/6Y6ZU玼=G\ؕ RSET B+GjÀ=a#ULjx^a{#:<=y]a( ,0X9U"&K9F\o]0~pvߙN|4t5#RCy捈\ 6Wk!D y]ʌ^>j( Nv5錕6vcz`DZ(~t,p܆ + +oV5|"єDԥҏ-}ާkb. +ÍȇRTz61jH-$Cƈ_ `HW1b=Rs!F35}lt hyoLaKYw2?zWJo?>܀V^'+<^?Wnv'|rir=}F2=LW!FW]W { LrޟO暈_~6[Idrbr3yo k?n2>s |QWYe(\Ef;  pv%i]NjT|<3|q<=Ưr-(D:L']O+rF9߼dNioʥU@h+\pihysH+ot:Vf~sN*fkF.,lgZ>MI.|t5Vf&ɨYgro"̩!nڝ67w.Y0^P@|W3iv޵Wu񼒳.?@1ڸ dlC>#͗QlSQ/khCک_468}jReDgk4O}$Ov:ΖK2Yg8l.d/yS>z *Dpml{sqHq%M+|%//8ǧ.hRѿm\9񖍇9a,6S!; Cax6 ۦ:[n6LY(WEn8@2ؒ%w%[]!R#z$ԂoH3~rh 9kzNs\bzui2v5P?VU3P(bvzo U;qME's M8|>zYvVR el+ A#z`yoa,8{.d46bH8}okr &ZRܡg߭B+2-wDe0] Ν 3sU|6ɰ׊cw|WꙪz-o|&= +:ODfR$C׏%7͔>ELH$bs3LƗӑ&&_nv1L*98ŻۋoZc r󼶰Bᒚ |~ ȉ[JjE &~o]yƏv Qbx6ӕ>\%j2öʠ+"?[¦(4 ľZ 5&Vg`{Q91|^yN`Wip(g;Fo2|bCZ+ۍnv|Ț1lTRKgY/~&-6e|=U.Izh,΄o*ɫ]A,impCʝ|-VӮſ^O'B`-@\qga߹!9wh +w$IӉ(꜕Z{۹]+a*‘Z89P#..K\hufZa} v>` ӣyf9+vBݖiPc2Yi =Kq .r4vZ|%=z?^Th!`Bsݽ1 :cR栳U%APlHcO8Qfza?f +*6o?˥ @17STY=ƒ~7̀AC9a vD/)ع~z`A{~3t$) S2~\g6lXmF%NRԌ(8wꂷLH8hf ,@FNWm9o0IVnghYP +oIC·\LCvFA1V ^ڋ?8lm7=&x/=YJ0S`HN[=˃5ߘ|aCa@3 ʒvoѵ=XurZuH#:9k{Grn.s;Y[3='˃ج o7V0{aԩ`:= +endstream endobj 3744 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3745 0 obj <> endobj 3746 0 obj <> endobj 3747 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 3748 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3749 0 obj <>stream +hެ[K$7rmroH$ եia+2|Ow 棺Xd2//eÿݾ/?Ӈ|>=}^SJ_d%%?<˧OfLL֕R.Oϟ^p=,x*vxhnD2O@Js"enz m]Hλ<='cu{}#u/+QIWڳs ~7^k`'_/L_l0:|_/ GrۗW#0^fb&{}_?Ͽ~xM==xyQK0yHtP_y +_\ҳϮ>Ʉ@W& N%xӜ ڕ:mZ`ڒC|>gx j0>ϱp$<&OiY ɽlj̔,͓5>[fd@C\8¾dNLPlG_O<L}=Md_@GϺFSϩ \a8h;9\ +9z8<&gyX|=RVzS?gJ @px :ěƺ/ߐa 깅PO'T73LM%>{~Za[:2}J9շVlavykq6ꢐ\ۯ"?S +QM q({jKĖjȡY:povmڠ8W"C(:k|S=s'#TƯ^ƄZ#v@>nEbbug^s]򘋦/0iveδ[tXB7MWԾ/e%gQCT] +<]:Y}(,39drw^a]ZgbV79AtWVB8u0'VX cDɧڈ~C=j`uNY?.f߭!oY[ij$Փ vW8C?J(+nknz=F/td)mD.$WDޱME]Ynw cЎ1om͙s!nǽ/z=@(aoAM/Ur׸e>x@"m-ٸq9  +s,[k]\1-+ax4B/{C[{đdO&^cd}Y7a3JTdL4oi6ʯIR!/*1Aؾ |Bj֝-2à+0kb 3],^[hC| 2&4 +N+#Wդ})u݅sS6@҇?#,~o.sVΜ'-&$0r+Rͤ.L +E6K^B[Tl(C&.bHb\ q]p S1+.aaOhےxl3vV"JiXWȠsfe B؍o%g=Q\1@|.u;ER9 nSam} w' N8MPW}n]ߢ {H-xay1q!!* 2+/>H3RġZ57ZHnD3X1jX$]IDp7E>ͣC7U6ZBsm \}[y(0,CcRZ +Y5jZ4!B[2!2Iڹ{;tX^>OIb + E|/"hlE*?+/@X%Wɦl9{ړA܅e"l-%b(V:h3E,& utdn >į1*0nL[ e:eN%Ħ,G+ AM{ Q}nkKa?K0\:;qҖGV}Ѓȷg7qJl0)lB}Du׹q Uj#TuQD/V oplFԦ߈gsÇ7h3:#'ֳ(٩pDŚ"Dd-(X[Q/ǬX \\j1Lv(ͱ(ͽ5Xrwp%*{կiso5XɦS _S 9BU쬧glµKaUzCX@:X\8-:BFB NMEN~W6R(lCd#ҁ񄵉\ðMe<k3=zt1_=u-->BYC]$9pܬ|';hnиAEZu:al@!]^Ø5/!5-ƞ'z>B3ʊkN򫪎_0CKjimV0AnR ,"Nu%&S&G +lo3dOğ٧J&E@+9tUjv;\Mb!ozߕs<В|F;xRvaaڭ_:NپqI+f "itb^KbFB.ne<;ȤĜab0eN<3AL k?~SYK'@:--xIt-}ߤBzi\/e2!բ73 !8@,Q $d0ݏŚ):"|0OoGq1,)=6tPӍȣ^YUUmTb7)j (z1Qr{x |)\KR/,e*Mfyj!D&0=U,(N`\2Dy; sۉTy3Wh;h1,=iL?\ni7YZcO1NRPt¬A@TvhLb FY[Ja!2kqQȱe\w(#>Wu"oE &Me|m1Ih <p~'zKƌ̄p]w2l4󛏹=aֽr0L, R16I¤0E!eD$?!_6x+TShM-c6IXՖXU"ۄE0ƐnqC +Ik T8ޔM+KT]c)R4v-Trfu  1N@#}<;#TƟt;%KH Bڍt7J9|MF41$Q I!Ozu1L'*/˰~ _B`00CXZ  TM7,-/V 6;6έj`; I*nzo 0cݳd(M˄-1?) alj!I(Ia;5+1L@AcUc.UN$UQvzPn 2+Ƹ /h{+F9p e #[j| Q^Ixh y~)WE Pq.5^}H-gc=7&*SJMa'ACf݅1YzOn$Ӕ)tj ׋uuNë Zvj^4UaW@ufrzl1g3 +unniU^rJWro]y\mS9'2rj1:faDw}Ypbqj NcwiPՉy<9}ò1lB%JH;_y_(`'0Sl(v2,zv J]c/. haJ(7U㬆;JcoY2NnI +l$n෮~ߓ[5UYTe[SHߑɽ ~"aa:V5VƻRn.[[u&mK`9oUB[M⸁Uu+pT0<4 H(hJ{UR4fa׎hZk[.5lb(cd {8$8B&|FAr$yy6C0eѕqJ RޖX{ۉv7ŅN,g9t$qc +P-%u$),nozz59!nG}sz9k]{z=ܗa(cTgwJ]*S|?p“w>;&6:ɳ\|y:ly|?Ԝ^mE\[լTDKzY+l(AgNOTN< ;N|3ݩū[wH;!Hjڡe5 +@jbHojա frmjcaAXJs 6PQ& +-({n`Fv;fH6.P=s:BuxDIHeMZ 7^]j9k/M}[&^ꭧ6/VY=&O]KpJ%XŨRh!:; wQ(E%3v"C0̙nR,>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3751 0 obj <> endobj 3752 0 obj <> endobj 3753 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 3754 0 obj <> endobj 3755 0 obj <> endobj 3756 0 obj <> endobj 3757 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3758 0 obj <>stream +hެ[mo_GM^nlrY@;M[~=Ofό]`Xdb^Ϟ?{..]ͳ~ǻ/_=K3tٳ+3l܉&˫3LrCh<s0c ig[;aXp[NNv4!ֺу8lU=qV&$rtR6UهJX`yJӑMs+csmRrƌ7D)[dT3F7 $㘩ż#Ԅ|1R `3e!0\:5cZ0RF7qG rmQxďj$м? Wjuul)0;#K%5vt^Vt2'@RJ3Ӿ, 6<5 e%<}VqecUȜ8Ũ: rҲշQKnl4s\#E~IhTI11 cJf40fy2V1O#KEaqNE?Q_)0zYd|%5"9}-J9)kc/ܗB.]K9'yk>d^;*@ +\A;ew\g?\4~/I#J-z8>Uj Ul.(V>vNp':Tʪ} "SĖ3O´Ih0S)H15(5MFG 9(ѧ9B@KceilEqQ\ڥI습}GRps>-(SG1B=9=q;jw(b}nbS~Fb3RGM3$K 6ND*΁ꋉ׵-es,yV^K aT~GDwFX~;MFu,V%wc6wذ P.<"cض}pK)K}#^|I}XXz‘NY$z)| KVKE +1SIb.SG|rnQUIJD AQ-؉Mu,.:k@YT]bE׽yVT*EoU%T&gmaZJpYϦBؐ3b(jMׄCX1DLΣι-m#=@uEw +bdEď&Y\\5(KrʔL4gdNjS}۪3/D**U`X堂JkLQnu$GYI3 H=Զ]\cNN~-<|i:7%[rىdu!]eyi}X4gx$:>cx E->UL'u$T:.̩W_8§]穚/:W"91 ŷUr_arAu΋}NnIDj <n͘' BV"*T*b¡(*yU%Ǽx@7-:/sۛWL|T*J^I b66Kq>v<͋LzGA*xՃ]!QbZ?~7m/A߃}Jp|Y#].^}d=y,[ʒi %{LTaOJK^m|ۮR[tg˵KnC@ϼ+eJ"*q S8b"_hӟwŌ;qr,aRal\[R`L?hb)LJܵHrMx){M 8;:ejO[7Uk+٨%PG)f)ސ_.Xw3$]Zg&TnO]f x3 \t{B +UP"m! +:np϶Ը{c2ISfyKRomDIa 2mDN݆>"Z>AJ]lj}z|g=5GuQMĺ R8ͧŒƅ^,hAn=Հu\c}rnxкj3wzR xތSk]O]6bߥF/_ƞ֊% 4s%Ĉ&3*{\!c%| IpyXW%˙!~7Sz)ܚ4M*HF~LQT.a)=mNcdbcþ,ڿ_1 ;&MEcM5"ބb F'AͬEl5m&x%鬯1 e Kr7 f8IF!wNԡ ƸLTbZ" ݺYuIWCA,LN."x,EϹsPuk~mԥgR*&ưɁBYH 7Kx׹w$ {\^j"7L53K+Wv!1+( shĩG1w2g`[c|(͐nK!-1xJ͒ޝ0Uh>w2j$=Aw)L-ȷ&0$# +IUA^G1"RDCLŽfԻ1y>juN8sU%̧a>&#OѪEy 7S'م;?x0 f?9<:X)ӻDx#<=;(%d!KmM,?dp\%Ӽ@8%Ze L/x4Yė2pOۘb=\? Ľ47ϯ\H_Y<9L +_L|VX<+0)ʯtD [I~ Iw_w"% 'nzIqERǂBzDP~9)DL&D%LiOI `dJy%%*%Y򝣷浐^e/P+l2%b\SR/mJ5AzVTI),MS+=B=sX( ;ދxZVD[RoGjifUǪ%bFy2!rLZ"#bC-qB3J +es4bUzes>!j-32Wg~#;:7TȷV?*bѥ/qQ1UVTW~V~ʣ&"ݠ| +3eu){ͪ䩲de5pgQՄu LRғqttnϦS;4c[ 4 +uԏ dLOI$"lxDIu ÁoCa~I]kNU^TKsꭳ3/Nc9p냙`dֵlV\ZwmHAY̓y vZ4z!}|rݷtYGWY9r}wws]&ؕ)j&)g@pr4no77o8LwÛkDD)A 9o5 VNJǟLE#*tLI +) WdD.T-i+)*|> xLzjDU:%='Tθ^*|+Ok蔂yeOF2T0hNhMw$/A)n'En-L(.`˷;xyN%IRʞ +;|Nu3>NiIRubtz<:Z:T|P6ш*5 u@BZZxp.b/@~P}-]Nw3#s癙ZVj4/ffZxd&l"lÁ?,5,p akH6_\ yiQ0ڒ/gKSa~~c؇XTKZ~S]2L?tID+qnw>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3760 0 obj <> endobj 3761 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS33703V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3762 0 obj <> endobj 3763 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31925V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3764 0 obj <> endobj 3765 0 obj <> endobj 3766 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 3767 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3768 0 obj <>stream +h[[r~_я3Ay'dcis<ƻdKkd=ӭ5$fwXU{/}x|s{|.oo|wןx~qWjg777zPE& Fhd8M{s04Y{\k^;<Ʌk`t~f= +<ߨS>d-abGi:?@iGMWX#Z;eƈ 2{7v3!Ga&46wYpIwE*\bdaFZ$MBV KfN"q赌TN3{3#L{="]=яaf ua#4hPnTZ._?psg@ D5YRAyS/Z5B.QG{U{6L~xDm.d"p|%z]odždžzTAтØLȎSTppN<w.߉HcoxO^p¤ØlcPq6;XU&whA1hVZ^U  pp#I 3DFt,C^[=z* iףpr[[]/F>%7Lh= .fi(rw+!q)S'&o-ѝ rPD ZueՂstej"=+VZ䮓H"vJ<$\S_=0I*'8"'68B6cbhB"\S"C&rLF([g0GAHGl&Ԁ3*r:,rR).yz^/ҁSy;92cUW5l(.0J]~[|ᯍT!̺6yJ*s},qr(UhV'X\8imXZCdH3x6R*"ԟ=&r0i:We9ݪeqQM,09*]/$)2r41*Ú[ xJne¿-RoKWst$8v%uFsrdW%vR T믘eŗj`I'RŒe"D>c\{Q,6WŲ>^Ocy1J.U*rq]6S]j,Bj~ΞmEu/T/:a73%[sјQ@|?ѻ\K:w<ݮ=YE;\ۖ2N_AnX_gZٴ2I~M9P2Eͬo۾Ø[t245i#Jٲ$b6O0׵my8`V5',6bGzL[4EUzۢTWuzm Ot.umyP*OZ/"K3׮=5%x9%s_27fk@+3VIAm)0LԛkOj7Zr'ՠϷ萛ץ?@ަءsq>L?SQ .mjd]/d 릨Z!&hE+zm󔻯?`tG}q ~}|x?vopkUc?nd(oZo:z8գaw?su9(Olޖ$-䯋(_cG${ nw7{xJ;.e;giO-->>];n?L ˝2a.[zxcHv̋d{ihJ -[YSO ;ZZ~2p=۳/_}=_>/g]F.v2t#t~՞l!.ϝA rd_dG&9ekt7&QX9qJ>}@%to9:G@N0L=5NAf /Ahuidhﺅ 4.&h76oc!vn t$ U!u +K$t(8qH%\QKhSaYBpsgClck!e&:,S5#M(6TۋQ[(SgB!Yh:qi>I!,p0*mna4Nob#vb:C6mzy7A'Cn z8l1 Oי5-P@6=4N^&+i"rK9tG48<#;l3Rg(uHx q;YM?:0vhR"#@:M'U^:9kVPf!c_],#Rbi!!$' #QB Du xՁT, +JEub/'G[*eLqIUsdY@ I BMa Ѯ HX::@[YY*Q?rZ76 $BYE- Adeۮs^mAVdہY WD8 @k %f'HȄ"<u9yE Gf!)DNkAfGeQ(l;~J6h;tv`%Yܦpr?U}[oKY6 uά0;*lJm%JqV‰T[ai+-D$,@lPRleb+ Z[Xʺ({e㺃ti[GCltd/36;+ }I(a KC(O A >bgQ|Es5%ߊi(w%ǎ7/ ,_ힽ0/|c >|b>Yy.6vof:jeә^³ݽS +Gb!{`ŗh!ANEN^ͬCr o]jǏ4j >~v_W{'$.nD{s(ؽ5Wzμ=|L|OeL::L ;' +Hv/g7r>L؁ +="zh?x N&ap?Oa L^pAri)0zYN,R$?"GL$3+DЄ:l`6b4HD$Pqhz:+"L4j8sMtSNomq1Rm̲xX&l[yWYY~Nw߲R ъ!J߰aoiŬ'hc{E>G`66_#'}RcEt_8(Ӊ`j_ +endstream endobj 3769 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3770 0 obj <> endobj 3771 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS30264V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3772 0 obj <> endobj 3773 0 obj <> endobj 3774 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 3775 0 obj <> endobj 3776 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3777 0 obj <>stream +h[[o\Ǒ~8O  )9xEbA1h(+KvUU}93#+J5U_]i>ο~fˋ^7W'WWzI˓ qajvN㉚ޟf۵RßlOru”" sIY3=;db +w8_s(S Sn'psYnV&f54|y W0w %ݶ/I̅RBzfeE *+uuTf4sfsNPa9e9Oa]sD߼֭x ԧXl ZGb`20 +XҦ/' +2WH&4|T?u&!#<ǨČW0fO"y.d\5$&9GcASbq -"6Q."Vj(m-KeW +mS>qSNHL5M5T 4),[v|ӆ#yGF {^`Uwa40U4v5]1jBQ +lbޕ|R6;L +8e`Q?p8kh6 +P;׻b-LPLnPq@}qdʸT)4!L@2 \:iX*@vM!"J"U[M(,/vciȑݬR5n,3 sc?nahU҆~,^!d#4 +evfi8!``+2}o?%4ɰ RaÖv;qEjf$Cz")"^fg28hZ 7qX%'HPO- +hv` T/Y(,&+UhTC\*p'۲OāswYIJ +ù2,Hm?c;}|p*%}cqExf5OFYA5 hv">/]%pC"f档iMSZ!Q7c"Η,'*1`ۏ7TO"$z-UcQYwĆaEP/%mim?0(&[* 7J>?ʋ;=t=:R̤D0q1N?5%\ma +8S(ٕ)\V]Qds^B__ 42h9?z+YB +P1~MgASs9ghş2<4X?>&+Ic%_0w]1hy,  5\jrQm\^=#Hr`3Qen+yq{ '"K2*Xmim%W')Q P!4 뺽%7?=we;c0~a-9 MTgT2ԁw`jHҭ?vd+tDWF챜G3T!3؏03A⶟Ra_PC`H\3QŦD.aa:La@7Sօ:}n,77ĸڗFn25(E%VR=!~ȱ*gZlc,P[{ɚ>rn);Ɉ }-[c$]Ef1NM6PDji(aOͦbx, ]%ژ] +x:_Ca-T=_mjM$.fSt:ő ! "F+jņcpckƇ<>,ڞȊqP09DQ%*YqRh!V^L zC?gxRЅFG|4?t*ޜl\b2U\^U,DSԖzEf]=.m-S V$kYBe/A0aQ [ dbǠlEU n'(wU]5 +Hmtj6X׊qH E!"ҤCK/AH;8~ˎ \ K,衬HzA(<ԭt1xT2Ȝ{Soۦ\k S'W,g{6 _cVx1\Ru RG8 b } } iiWm\lTQ_|D݈:aU `s 4W""%0bꆑ +qR1*Fv|ՙ}dH 6!n8jZ-v< +*xM sv"D լطu-կYJOLuųgU]$$.<6ŌİRWjQhѷCcl%`,+ pab6 7 Xʰ:EzoEu t^Z6_ u&ulC,:sQfQ_P4㽖qo6=|s +#v8D)ǑxE$٢JN,^VTq=YST`{?M6:-Qn&þ2ԁt 39y&0*Ƈ~3 -L**tA٭h j78ɰ\˩7]ic qɭ žk.'alj+Blq+9/lypoݞs>1>w&+\7k'AY $cjrB1v<[J.yzF_QÉ`+QlV& JbW&$CB̚q-tUnrNmlVexyD}z%b/asr8r-npiӸ7e0ӈ4k|_F0 +])} j 7}]i'N|:MZ @Dٙݕc5.tHˑ!ٻU`sߎW>P["ܝP~=urFíLJA;N8;Sg(mS dJr1T|[W J;"I36x Q"/݌jQ^D.6e%NN2C;젟f鲽c,0rurN|q[ġvalcuDr3EwN?Uw,կsݸas& vwMnzw +b1Ja3flϿh)$3jSd+3FQfg$ʳK_hzQ1Xi2G&ЦJ \Pg3vSǬSoV6F]2>]N.;|qm ݉<}}ل2gU4O^dw2Zm,ts,4 RZ\I69[ 𔐰ƀ>)|* p׶!ž16^֗HTc/i`2d1LQ~-ӠEhOzV~fv:L|Zߌd#UVΑ 9 |K8뻇8!|zP7-^Q8pA ,^*&Û`#Lg=ـaKP@"_TWcOб+'=.NƀZg*Vʦ9%CV)=@"}H*HUW4lJ,L²؄V+XjIxtA.v8cH3s,!yC,1 x) f +>/2AX]~L2맿oz|ʮ:9Kt_xPʶ ]=oϻ.D 7k&ML=;&Hac)J l +Ra^PE3$j:ijKӈ76z-ܪE@}a$ +,=5Kjq1h9e9 + +|YjZ#h-(EKx|4 Q<=tnwT,Ƨ`T/<Ym<]If1" @-+ȶ +^!=>xƒR{բ2H% +lZkVUN{ЮIh~i_z~d< ozȀtʃ]v\0ސ}`$qaC <|M 'AM0c@=+xǹeEg~U_- + & +pG%z`&p3kZcUw-U ½/ ^hS5N(^X"8(L/Ĥ·YȜ߼xk?K8.C5ă 1YQZc6` ؇>8?M7Vm⯕&Xߺ, +endstream endobj 3778 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3779 0 obj <> endobj 3780 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv31926V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3781 0 obj <> endobj 3782 0 obj <> endobj 3783 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 3784 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3785 0 obj <>stream +hZIׯȳc_HH`< ||.u6-#FDVwK ԙ/o^dt~\W?->;nGx5bb|^J&T]팵{%u aay!05F +4ϫ:q%V(@}srT ǻ ;*>׿{s܁`_ +<\]Z]>.;Ӂa2w"sHYb$a F!;`s' y[n㍃:򉐄#HtۮnOX)q|@& 2.lRq,hq8n^o[> 3d/w`ܽO}s^ΟAƶH{ؼ|>D-e9'[Z\H5˃q)I{޴P ap5.f876{=/T\ܶc5ض /0Uc=1u`ΙYwՙ q8sgMF1Wm|X7jf[lR䆣ɀ4Ե xur7 =XwahoMKxWägT\&5n,K->;ЩvMRd^zG'@/%A+;j2s,^C2x25 + tKo mYS45Ag^܎7MF]홚_vƵ#AL ^CEA/ek@ٗ"i_6-j{ttPQx}DP.. !u +d<R $K+hN-ҡvII#2p +sDR8 E0VJ:t3;S>V'lfY'IMz4~L$[ Q%ZEySבY=c`a +B̽';q/Dq5a!y }<e(BcLyޞ +(%< TlЅ,tVI޿pژ7XYvFFf7\d5֒31͍Nq,W'O)Yyb:*FY6ޥRRL¹a ;$‰#N^Em Xխܲlu$)RMA#N+*bMY֞1mjb! +zYo$F22} B+WZfXR`F䋇˜7i$Fav8RJ;F?+fKS5VDYjZ1 +4P+u^IJYx yO:d4V)05=X#8dӬ ;TQiv55Ǣ=[|{9B6JvKS1oU !a˸@ huQ&!7ZK.]V':ZSq)MG$i݋=OAXGhy׏̂>evNDB Ee"s!u] +7e)tǭ l R;umP5Z$PBW$D6 +_qZRBئA{A-jyXpD_g{H@Œݭr+B'%$3XfEݴcl`$Dpky-7'W0b"nn)Q^gjm,xj cz&8Gi-VǥI@Inuq8j= ud_H2T=} C@m4#}s'' JB`Y@s`K2sL^jךdMxv6dz+Nx.0D#LQ'QZ*aKWz+W"GA=Yֵk IPT+[n~N1 .`ȇr2zSoQi^)nqn{/zt:p!`9 w/S +O~=*e6ĬtҤ }[B"U:uK~I&4YJ>3=7 +j{Mj[pGA|&Sv i>և)?)D<~ `UH(;d6c4^/06~&[E߻h K"pVFoIG΄$[DT"UOg"~EQQ9'?׏??O񓿉jN +fdj/PNGdyuB\Hl,<p$35LlQ:P`I] +endstream endobj 3786 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3787 0 obj <> endobj 3788 0 obj <> endobj 3789 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 3790 0 obj <> endobj 3791 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3792 0 obj <>stream +h[mo6B@@$E $FI]85ɥ )vWj \oYQ g/:}W_'ON/ӿpsͧggϩej./r/7&DBrNB7K5 +?O+)>2ՒR2S)ơ}ewůHŏ,Mhbtʦ"5 X]Y[)WKa0{#tw_ӗg>Qv;4!i]ˮ/;hr0 jը}q٧Oo>^|s|ӳ/) Pth\!c&gr!6Whkd4llly_KcXKmD). +'E.`lF`9X$4rR&΍-ƀu(<-s2Qe2ZPR z%Ф.G oIߤ )+`Q΀ ;LXn1c٤"ZærG+Ia~kZGg'G?-`y? W낶s=5ނh;lM--w#J *D-L!<Jc!^ieҘÙHHTbWy6݋bLN%2&NŠ  +E9)lm(G6 лFƣM#}<8VPV1zTkqMky2Zs+j-'jX<&cUިpT Xz-Emދ\dW, eזol +6K>զԚP2oweQVj ʊPlX˄ǀY}:zkL\Sg +j ?5:hFbr5S K$I9CGT*ATjj [J ?p_orS8Gbwk O+)r2JWrWV%~ʋIXoHjnT(9KpI@OAxqɐ6/_]CFn|W5.Fbirg*7m\Dr.ja?s},(CT7ĮxJvgev `n@Ñj$KB$ 6"NLWBP#xG'W亱 +ݥ 'nA맙i''$I^CAV +ECy,vJn_EK3Es|xaڕZA],"Dp۷p-^ߜ~!w~ +4y\ZZWF)ع +oAu(3C 2^^27@%&>HՓ@_9ci,Z2ynsRBiZSfS`f9^FV 5HΨbB#l$@Ei brs +lx0P*/ȏ-e^ri0<uq)f]7ȥL!^"I6d©eӒL!k%fX!" + ^-4Av?>mQ47 n0S51ڡ yfd6~ЎPK8s艌shb· +`hf:Lݦ.bH:ؑ^D35"<Hm0-?@"+0 eM% d4?3u:L4ByZ O үf2,EF4J:0ҖY0:nLξͺ9 LK{<)`Z.U8d4'0' ]i6BRwcb5Zb֍9y0/j$=cd耉VUR{͖NgI8og=|9¼*R۫ L6'%4(z^zRO EdiNclrq|"& }0eq 06!Znj^he3o^ʗgaͣ1 /Vzga1>:ٳ mxcdW9`$;m}(ukJƌe–&Lfbc3WرlL:l6:6ke3µl2xұ94O8ǝPؼiQحԫ\5^!{)Llj#<;{|H'3HRHTL )'sZ"ҕF렻rղͲv]K?~X~7yp=VyGu|2<xUx G=Vyu9g^ޣw;HNh;ZyG mG+:?:vxUaxX<p⎀ '#Z}8K⣕w^ϳcw^OޣwH*==VqGuYQ|8 ⣕w^'o8Zyǿ;vNV:mkC{F!gb +_? ;)L[e,aP;ۇ)r4N;MbM`Z]r}{}]_K<_p4 *gMC))|eq+u]yг$n)4y,Iؽ*t"ro-Wn(8]ӎKz$If_E!`j#-Q,猺\wQ;3)ma[鈩|BrcL58Ѧ7k'r&>4j|DŽc |qksצ9a]n˽b򁽫ܶΟ+4Vrs)#Mspؐ)Wc-0[lӵ"wOɅ@:P[ONm5/π0 <h0C=e'/;+>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3794 0 obj <> endobj 3795 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv45361V3.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3796 0 obj <> endobj 3797 0 obj <> endobj 3798 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 3799 0 obj <> endobj 3800 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3801 0 obj <>stream +h[[ou~#vw06 { P˄"$žܫgtuu;v_~:orۛwsϹ=؇i盡t]q_ЌÐ0DwxHo4`=qvqyaCb<\O07D`3꜠q8n8I)ciģ@ oC]|&=n M]<]yݍa~3ػDJ#l˝hBr.:qM9y:^9H3ja~AS8> wJ7Ms?uOHPR<{_D w2 EGl{끘iNvnͻ?@ҿ?=<=>>/3Kw?8ed뒇(3uKЧ9vĚAځځھw)I{Cac~#b?L~vsSb~ȞXL09P۹ضc9䍇9=d3L~8YFq7o#o\?zz2 sX hz8w}}>#`D~&y6atl)rQԃ0uOHo=4eg ޟF~R7Bgd\&6j&4ۇH,Jx Rh $heGqZ3b z3v&S!'q&|Px{о iF{AgH^܎N#G=rsoVn $H!cG0٣c'#=p ڻ | HqtC'`Q6u*{tyfҋ7duG!C%, `Cc}Eb<R"NM@m8ȝa[iҞF&s-V6qQk8TMdO*ߣD[ 9>WZX ?\ `N*ѹc8x.W=x#8qlSߑR =LFr:؁ϪiaX&;4;8#*Ҥk ̼/< ;V٦Ů*˩7xNq~ ($U%bFj٬Vpl|zTSeAv=[L53~ + {>ʢH@DRL7tzB]AL{5"ӡ&"1fFc@Mh=߰8RiT*szg@;G@J"."_a:hc=W5) y2qvdvf(?0x0LBtp7ޙx j"J")HIUUsiI..Ŋ#q~Uv2Wh2%үiXL"ZjQ7R?#)W{"86vh5&7\jתUC&8>Q ;JxhY-Ħ򝇲R0U֥a؃#YAn6\Ea 0&t~(xIBs3}O,=x>V,OJԖw}k5+\BZ*bZՁ(+K0G]0`̃8^N &`l vk\0Fv +\;a**> 8< gkZvN ;$WmfG%A%qv4Ji-:JLfh9naP@I¶o?}ܜ?ݿe9L+`RFk`wAYpĸylMT_:[2 +Sߒqa#N!hU15aVMŐ~=0 ϫ苟To؆Jޱw78e`."* +HBdK.If>_D: mI\䒸~߿nKJBƷ/'S-8 "|nz_πu7[Gx{AݏGȿ?WaŜlw?n|$؜e_Iff@0YarbgY3}/L,+,=24hw'<^hgsW55siE+^㲜_^e/_x @{((3K's^ze-7w=i4wiS/B\6ؤo'L+2&6]ia=ܜ`2Mmd@|rrDO@+\S-lm3!`#{">F6mD#Ls|&!.~6 PpU#̈%WoMߜ +iOoNޚ$xV⛳޵2Fęq|7ח;?{ƀ%ض-_6޿Zn8} ҩU,)ySX霪Q.muX](eϲf($֩ !4u ,I7e6@Tyob8ǃ-0Jṳq@[x#Ȱ5!^,UTWOT%qvR9%RoEnLdXw:mP.L^逳,4Wä eof&YnIʔuA$NL/kD(WprGـeE9GՕGJ4 akԍ%NG8f0kY>iqj.GeU0Uն9ښT}1 H +լaV*PɒrTnN}e 3޺8IZR9dجșu\Aso~M'Q2N|e"k$ME.RVVy5w&ؕ<׹D[IZlj[hbnRFTSI%+"#*qX8:I㜕9:bR9Zdž1ٜ'd\_r"f:k`Nl&j]jVYyՃ;&;ꄊ4ڃy/ ++WDNv "(URda)0*!Z3& 0k3%g^45Īy*K:)STjie=LcZ/r|䀮`@Ryz +d6N}xp\ccKs53hzy )Ւ1\NDerX569*)kqv#w8Z*iiirkD7,B)X`KJo5#d%^"]^ Y$rOFQ؜ׅ6ak0IJROKY+7b4J~,) +MJ/mȖY*lbm_95Bk/kx^vpyrk4#[rT* s+jI+9\Q(\r|&Oz*R#4s #(˷oeXimLoϼv~mIQ4rD1/ ~R8b8A׈!ʼn rq։JL_a>G圫"k׮yT+Me-kJS!ORSdV5kT.Tj,Ukk_IiKUHV^ .8 ݸ⢿7.}]C&yXE+^mhuv=(3Ba[rkZb<&AX @tU5 +vn.AU2US"rsS /0p0Noݓƽ~tUf6+94|^TlLUT *hL^/KQ8imySMUrx(V`F֟ e%*x3Q(O uuQwMp Iu nye:̫*/+oIR{K9ò3q9Nm4UTk?t?ЮYPE: ߣ-`(KpK jxzu?*dZ0WuX8tAWVHdEұJ(),ht]2 +_.ɥ" +endstream endobj 3802 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3803 0 obj <> endobj 3804 0 obj <> endobj 3805 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 3806 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3807 0 obj <>stream +hެ;ˊ$Irn~m8KxJosx,>6DqsX +춾9|~_?qZ;-VOߞO _߾5/LGH'j}z,>r%-w!G 3_6- NӖON.f_~oOtkĭg?4Z#Y=uz{z総ϟ?|z3/t.-:3 :~D;ٝZ[r#uzzZ<>r;P;P/.%n?D8BV\N7\3/k4zR=&b;j;Ω=Weijfشvu0l޳sK[2 [r7@7p dKF01K҄n&j:xI75N 7LCL/> ?NH9+ɢD!P``Ќx˄E 98xnB܆P(up%D(2@/ J1sVᆯAR!%hg^;>DLqh #rkvm +ߞ +h!f}<1T}tI!H|u)R_OUI(no>R3g~5(X9aiA0`jxkuAL+w"DE\G#a;J#Cvl+UZWzo:"mBǫhTC!a O F%bVBD=='TiC'z8j +zW!궒#x0﫨*D<4Pr8w$3Yi?ڣu?dlqtr: tӬqyd?*FY*_JxC;гCc,h]myxPzo %Qy]7~q\+ ! )Q0l&γIΆ˰:SwXbv-*:7+ eI +#R,\3@z@Y&Odm}U,xf +!=9Û)K֪!A۝-² +XJi<] ;YqXN4C7PqPwVXI -ܐF7؜Zl1 O>in{ + %8wDyVmK%yto`K̭)CH28/!3Ertp'zݥs4)=TS (I_M0XFdDP#k"|9cCaDƉufR3tjQMCz68n0)Ge(d Cc{yWDu cg'F ʞ4~1rSᣱalnu`!`elB;[]SXT%O6«f;8w w50u_eUQo@La$3F%0NgiJH7B1:GFn PF5Bs1wt܁ N1,&6><<1EPG(hS~LMq.gYI}JFokz_ஹ݅C1w u1qϭg!7;z:oC] {_@q9sk1V}vCtq{$c5[GjKlKJ-mboѓ[>6VU< ZgG0E 6LJhI@+i2)PlFapX}1d)np^EVĂ=ݳ$#v]EC#=ፌU<ǒgTm3ʆCffBQW#n6=;{K 5b(φV:we!.yμMjđ,:|f_Tz2l:t VL딶4Q9Q 0ɗQb.hgi {VC_yѸTVrWM3IK[KԪF&؁fCuְcR2Fl=a^UBjkRCI F31qͨxX=j|1lJ3#N }پfs s=; YQN 1lT~ƏWC,lc,`3sfbwM8W mp c!T8i#\kY=m8I<1̙J4M>"y7[--P`sQ:ꁒEG:yQ #QK<{|iâi3U]eXk?'lQwn@20̺ +aO!UIL1 +o+rl ,DE9&ݐK/)'c +s? @q_ .& +8u|#;d6>R1_5 +&m4sFpd0d"Om6 {4>dAq[-I>2M$RaٶQtA#_5yblpk=(ϳ"4fچr{uO+ +P)]|~$uf}l;VR#v[F0S~])v4.( yu0LЃVsl⨮UlkyȚns%'*T}.m-0:ݭsЎg|:t/ go3)͆7}<ŵE@ځG8f{0)YH‰DH5LLSSxo%f4obgrz'翑\ q] 08La~5U=Q{lŖz͖H*}OY?I~e _jaFDL%0|gLDr{5\9p:-4=,TY^o(uo u[w%/ E|8CrQ$glSjFk +endstream endobj 3808 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3809 0 obj <> endobj 3810 0 obj <> endobj 3811 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 3812 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3813 0 obj <>stream +hn#񮯘#wANvX@F$U֒Fnԫ_Cһ\CXfU]]U]n7a_7o织zի닫?7O_\\A 7iL~0j?`G'3ܼ74A7\&»f`z'aazǰ*kGYbzFg@K0#4\.u؍릭 iiGoCwʌzpT73!Ca&461niLpvF #{9Hi$1^H]imwWByOC8HbWr: ua#HРܨ4Oz<\}{P"uw,TE˲ xѪOW߃_??<޽??G}u{U=&?<`!Yas0DO#KmmG圴ڌ[hq +@4`rp:=N^r}'Bl{Cml߶.Ð 0=yica +ڃ[*58j婭] f@CDN~֣G2!cnzksV^2ytx$!G 俇W@GxCzk+SrDv {wcܐ@E牍4҄F2xXb)P@/H-&A+jдk&z &SS!'6&L(t;H](t&܎έx4rځۚG=bT) aAH'ہH &WŤw3Wj!JiOi,{t27d.'ޅ1!E%,àCbſ> 1Dol@u3r7k}X6PWAȖʊ <-ۡɀRh<(Vbw@lΣ)5b{/+Ѯx-}rDB7m7ͰESacz7,/˛ed6tVBݚ!SH(PE BRHZh5'" +L$jͮ$/2k!l%u^`܄}v7Žnj5wv+S:Ȱ/dTV: !80IF4O$6,lU>$n&CC#(e ) Ғ ob1-q+stLhSz.tv tmб6/G ƀ*pNNf6˚3"U#H^GX1_WM"/ SYT/ܒ 7e+XBȂc҈ϑBM)[ЏF +Iu`.C 3sy{^+Km.4d9(3,209q͘zͲGatc1'd߽,Eg6"alVɼbWIddZ1K5]GkFxjvs{T LkzYROrG3HH΋+tI Ynmbnc;1F* +>ÛXXɓu0(*K5E9k1eq3_5r H+۪ DwmnײOMxh;Y *'Ν3wJ\qJX;:嵦+KCFfvϻHS͡PdN]N8ݬ&h Y72|o7ʌ4H)8!~,j\[ʒActe3hNTXoS-d"g|W ٟ8Be3n*ߊ닮2%6z=7$ͱb/l\jh OAz&;%Ir lg(&/ցf2KH?骕U4g[Ҩ}8鶘9ʷ#x";dCZLc4*JS_oUe6f czFUOF=JSJճEJxfe?WS [|W<ˡ= O򚓚Qu,}T؊ǃ<( Z*$5BƎjoS7хg0mE]4Im.CmIa"a.ۛښҘ\t*#ydw852lq'dSk%mWܶVv|m`!qF2'iհDjj]&/
,7 N WiuR] b؇=\maYNIFC,1"ryӻDıH#{Xa_1w2Qm8Yuoy5L\,=_uSlӊ +T\X|rit +,n._ap +,˥_l.݂^o~?nvc{8]]s~vᗻ h}K𨩠9^hW6U5io9^JK)9©bmQO]կ[H~y86vzBLY6Hbm刌ܷܷjLmǠg0zDە / ^;vӣdJn@Ω"wy5 :y7nsb(I$pC9t|g~cNq4ךn*Ul:0ޡؐC7)ʘ1`X;U$[VnU4/ fFTpn_*DZBVɺv$ٹnjJ[O|[ExW*PԿ'8b,ĚůTܮ255RVJ*,LQaP\O"Ӯ'5V45d([<]IHh1Դ1OF@OGn;4TMZ+!3) +}I+'C Rjò\j_,^:4le9ZŅy#0׫a*Jaʔʙ _ÊՒ$U kYNzNBGPjlJ&1 +WS#SylQݷ]B?>5Òl_R/EKQ(Rz)J^R/E_Q*|[+"fLqpspӵ kfiS指R~6QRKdm_kGD9Jq-Q҃%ZnD8!J"`1;MjOa798Lzfm+P+Pk5+P5t +p"(&7|ƻ<~O3wѬwÖǞ)g Ƴ@s~2 9(nէPMg1В[ʇ +endstream endobj 3814 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3815 0 obj <> endobj 3816 0 obj <> endobj 3817 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 3818 0 obj <> endobj 3819 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3820 0 obj <>stream +hZ[oɕ~ׯ`w M&xd1 (.(#mzsNUu7ez}XR˩SU{:듚ͮnq>Ë?j{zJUtʄXvjpըմnb jYX|kVpp}'nSFen2]SLsg$y.MP1ڶ"5 Hf)Sa\18ZMk74dqK|ww>zR_C c &|;:bfE27f9L6ЭN.v]6WwWI ҏΜc~8NN2yKl6좯ΐ Ȉ!h7Qtuia7q#]8=lOд0ݩ4Q72o#|upVnruzG<['9>bcu9z:1{=kuuQjjwNq}-ӖiSk=5vkZw6rujՕwBh&hO5ҵx=meăyE +]vځnHQ[Het0ulQ(Ң.y"hl*hbPēD1Q7)tXH Hߦ4 Ln}, 'Z`UY&B BY]$GHM`;Śƫm˫y:RuF%7Xp*{& !j6cGhR$]L5Hxbot#8-Kޓ.}l޳\TS[-&լ9]L[˴ vi!45m^SzٸFcS"Dz 9PdxJ]:R5i + Ts]-s-5glHcs_}EaAb|4 ?XG8#:-K?gh %c:D>faNnU;ɨCK1Jʻ0At'+>|J+>hh9ހ#A}k^6Q6 oldJK97ʼnQfzGxAhWK(RWވ΅2mvMaRtTea)ɢS 7.wuFҕ6wĤZJ6])(Be͓b/ +voy.k?"t!GC2T3V3mj rxs&/IT!3u?ޥA]I{b*H+B>PrB# {8ܥF >ҤߜX|Iiw .XD"Ab98t(R7d+~v&JB&ЖDxd ;K2}[֊,sΡj)%K.0ptthҧmL͒KƬE'AƮbl̲.^EExL%Y#Ut#wbNS%L7L?RaS`+ulXLmsHB67YZ9Z0%ﲯsґM TACLˢa8@\c^d󟯿CW^,XFP 3m*d$iGGD0,v'7@?+HM&\O]4E1IԖ5SNX%k酆GԂT$X$P A2hrio&M.2wR%2 :T[{6^\%D@|'W`앖\G<8!aO^Du;J^$$Gk쇬\5\ +)bn$%|xa1~d4YՆ_P@M(SE)v +pr  ~tY|0?eo\%ހC )?eNT诵 +XӄZM_Sa0#:aJr1All>XIm <8i!8 g.beHk $E +ܱ9e %kX_{׷ô҆CQa)޵͊nO]N19| ;ׅ6V~- 0_vJn?{^M\y9 P?|w7-<뾺΍A'/ئ _3^e-BڟUP9! Ԯg;vd +tk/݊%?D|%)rpκN(R՛tr"RUH-4+mm9n2tWC*W2p]^0z_ |8jxy}RSCLc,cSZv~yj2 dL>Wi&܄XVSoNvYGu[O9,}&)j}x|x4bqVD,n&Ջ7 P] }o1>,.yv `8+EFDu~ͮj83'pn2UO,> +N;߻;~Ճhv`$sAut,q0I~"?dKL^6&鞟CSmkd~ }~INU[D؀Gy6?;,dF#YZ \L;Ȳ^gY/YYY֧,ф𤅎Sͬ#{iOTb]u`b=l7Y.~Ax;}Xwl '"=?ԦtPN'zd3Xo;7QP+ARZhL.#ЏȭmmwO #&U$̱:J ټq2 PR$v涾W2>]5}eũOݝdBDHʈQz! O^i_;Ȑjq$uK6f`oh+ I%o\>㡀 >nu7/Ug4>}xH"I8<]$%'v~| %#W/Mq-axAMO%#T-Oɇ?6'vnHep0At6,-wJn<$+J4H oa[Eڄ>Woo /&2mzOdzٿ)5=i/E&Le¨ejMq+Z60(`tw +endstream endobj 3821 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3822 0 obj <> endobj 3823 0 obj <> endobj 3824 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 3825 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3826 0 obj <>stream +h[Yoǵ~Qi־ 6"91HjȠ(G╠sjH"oU}|]wrr|?.~yu{qjgG[wG9?:>?Wίb]'uޛ^GWh8zqJ! ~5~/V+_aO;sZޟCGbj){~ƯK ц6b hv^(JaI+z +^ѾJjK&~>#T#C+czc Q&\zFey"xv=^'Q,Mp9j2dpV1z" {FF0bj0077`Ѕө JכۻS#/D) `SCw F W25~sW7wo_]uo;]{d/\ +bg |w_%J6YꥵT7lG2]088`zOG垀vRqزFQX¥55|Mm̐w&*1& =@o)e^Im%5*{80WV#2LxBib>5ٽSI ©bW %=x"z+#ÈSɎ+#F> +Eػ>vCkhDM0S p{mF/^D 0 -'}ӊ/ͥPHܔD,pCj͸8v,/[Mi(>UzRKwz=BBio:&5u2V҃3|D{@{e lZ]=F's-Idy('B}&,T 5lItDL+X-Zdnz-O%ڦo RǶeC[U-[0ؽPͣfHtY{#[6|jY~kadOl0 !-IL_04䊴_dDHQ(G 8LY ++Xv[(@#:`L|?o}ޙft-b#E vX-—-X-ե*˴n3jqU¯J6.Ӥ=iWM7Yh^Y xp01%OJ"Wƃ5X3s])id:E;bkܰ?Ct )"0c WPfR- G +(Է`$闼)T1y~uUV$ Ju,05YVV{0sPH\Y7Ɔ$|@ߜ4\T&ANTT#?WA#) 岁4<&*b5Y/v!k n3![Mk!$̺Xk(0Hsa[JD"DDIx/Ih0#ǴEʼnXdC픞l;IfkZĀ F%2)YLq0+MLv6i-#RME5L"GŠ! ye1 +U3.%ҰU*TLJ|ۑ+ C&%$~`Ǩ#SOB}IB~4[fyGݣ_0fR8S׃ }RZ"\_,tY( dBQ)+ +FuLwf.Pi**)lvRRq́d ڶdzbaE:+&`P *A\&'c7WVL.$/(؋ZV4![& [w?iisgQ#1Z7XI5c#Wk@RdƚNG,T #4qYZ8T$TߤbEB!UY ,UH؆T4IXʙ%2~u//`F{j"H +# l&P$AM]M] +e%B1gmTlJ3ͫݕY'(KҢWʧe㾖1e5&ŌhM@2c𖞃 i2̽ي@5";b≖lZ^PӘQa[F6ᗭ"j>6X;@⼢ Qٌ鱺s;Hy l^߶QnD~!?nGvldoMnZ "lamj%$)ٍpvch~ n F~3!r\:> A+q'T,ԥ5V8ѱ` ڊ^ ĕM%3- +߶F͘B2c˩Fђ5F)`}(0L(et9䯅lI(f|IA1}1 t61eYEjKx{O^לD(H|thS0/I]^ܼ 2oq?z@U~h#nS74% GpG!ONSZ`J)Vہ6HH8U16/uonP?"spKoYEGCש=[s|0wt6w FQC&i +x=M,m@qD%Rz W7ݰ  +Rq6x%YS>9zb/#(Ztϖ2]ot4"s-Q~@knaoІ'DL]38l0PCץCǺB%JpFls(,۠L!AIۃ$q-eC ZpnHʪ`|F=pn+~8tk/5X߿8ffpx{ "vE*>4t=!$k913ll-wbEE=gԗ&'HL'K:}FS<ԞoQL[88!+(EǺu>RvW/kV*O%TX>Oy.[Ɣ&XuA"=*'_(8??S]%ם-:WJU 1gc-CƵL|IXȉ^&83rfwV2m#3|B1(q,yr=N@)*^Z{*T81T$[?aa]ڔmKs^&^ t 8QYs_@;.G*lKB[wC +U fZj~Tٵxe5ϒJ4/(lV2z,ԕT9rവOֵֿaP=|͊O!oFn:;)/G`^͇Q{o.cU^re$N@Uh-QuV'{ p:woCv+rp6*^y5:KK0Ex~5K/|E,@4)HvpԽrc&S%0Wi.z,k.E3~ lRA{$#N:\{xqh mt!Ţ@!eL/Z LJdLQ(0}yQjt6Q2Iycq)ݖ׮{ zK~On4(iR(g;$Pm.e8hb,8YN vL7o'!H͞rt-*(_~8o1??oX +y* ~;ggTvHWP8#-Wvd"O ݰԾjs\9 eF+w51~~BSFx="C}ڷ!k^Nb|h}hV3ڥ2˒PMr2kGVҁadulk 7SO_Θ J# 3yZa&TVK9:J!&8A"# `qdd Z)0`J##FSvO!HOqQ4’]F_LRIntD?O!Y0D"!WFB?v1Z,#m|Q{]at@x搾Szg5C;iGK9A1wޗ5fN!´f%cm;QtQ]4aErt@U9>YI%زU gVukJ 4&6=u!ԞA!R馸Z%QgKTf>hE8]Yھt~O|6E)AIdkҝPJ5Z<;;eNY;T ƥGp\?t+ KǨI6 F1J Rլ`vrLDc@)rsϚ 0m, +endstream endobj 3827 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3828 0 obj <> endobj 3829 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS30336V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3830 0 obj <> endobj 3831 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv33174V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3832 0 obj <> endobj 3833 0 obj <> endobj 3834 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 3835 0 obj <> endobj 3836 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3837 0 obj <>stream +hޤ;ioDZ+2 +bDx]Jt$Ǝ}cvWRNUuv_={~wx6ۏ?]}{wϯ/~c.~w{qu{k3_ay11ypb^_i2~=@׋Wir&LڮhX {x(e3of{=~VY*@TOxdmRj8"ǰ*۵``~a2wƇe܆ئcp1o0D~=ڍ V%-iu{h]y}y]_]9hss];n}6t)2Ð" Qodqn[^o= W/a7 4ǥy 7;CXZJ /w׏߼{z0?66N3:0{6CcBoNc~2X@`9ƌx0oJ(&,$ؐ7 +D? lCM,&6^4u`jjCc@̠BvlԌs?ҵ.YeV}m}(}mjd}XN%b@HF[1E{Azsp}[Y}HNcmeLͤ^6S ,He">' UDCp^*9G0`7wG m2>4kv((燩!ۮ^O6 (xu9ee{~x>HnQ+*ĿV chB)4EQ̛bc="ʎ MA-PNk)( U4Y}]0 UH++V1S~J T0Ha:t +4]9%SFaEh>Rv, N1wl&&yڔp~:Mzᢖ9mb !G:%MAra lK_ikb*r;`Ίstcޙ [虳xiG+1j}7W|9![fTPSS^ɕd$l#| vU cUx^jIr{FrT:h>.+Qx׋ gQ:R^Ўs^fNP2G`Um"#PL6$REK$5Hmm2,j&I`]nqKQ`G=:Kds7̈)2sH/ 7(impQ~%Rԡj걘8"_Q%2$ ͖jvឭVkL,9 mz$\KD$tVY@Xm[O|nl"uD(YEG,IJ,p콺A1QT&hfv6dA`Rb qO. +PY. bK#gtBQ4p'w"#" !i(v]>;6Aj#~#q*@5(32fQUVNU`ʘ(t{ +|,t|JOe_+ -ďIBM:h¦8iͪ<}R%U?P Fdي}ecq'G$}ys}*$ƥDs8_MckM,ST ;y Wc-7&LmܸG +υT`czx=cZ[}6sgŘ< a U&nN},{ύkhA񂋕a٬,*Sb q߈d;Oj.ğR'󦳰ȩ X)wj4*^U-~Fj`+G;<&ƙTffL5b=,2l;aL PM%n1Tr/JrT$ otbq/uqa&vRca$8xFv8Q悪䅛&KbDIfZgge:MJ%+&a.GG&H݋'Td&--*@mnWп$uCbS[,-J-kE!u!̀IbCx+I_cu?V!wX%z``6YDфs^)n zhelBx9$§ϫ1d_9E@+"W&}aWۚiH+Rp'YK'VFؖ9[R斪h*U5m5 Ȯ ^jk^җk?xwK#j,>GmO~@/|41YP(|"=Kg=A&pedwAW @|j|Od%}:`| p}T IЯVϟ0v,dzjx6|^@ (HR$ŅH|xځnyȌD^A W@$ҡf-܉-snring|Y)a5Nrn|߯^X1&"b<݌yKcvqx۽w3O@ = τ @/Kx+@f` `D/x?~6E֊ĕt,aBPxqj!8Z9 XPiUQ1Ad1K-u]OZ>)[I^8op&St8d\sp\O5PJ.=i<984si-wu}[P:ц\2o`&,%kN%}YfD2EpM}x=8NzE6[>kdLeu t=xmNptgPg?>>㉝|BUƢQ"OFj,sE'!Xn/uja2ZwR,~ëz`fѺ,Λ[GK2 +endstream endobj 3838 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3839 0 obj <> endobj 3840 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS30337V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3841 0 obj <> endobj 3842 0 obj <> endobj 3843 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 3844 0 obj <> endobj 3845 0 obj <> endobj 3846 0 obj <> endobj 3847 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3848 0 obj <>stream +h[o#G_я +3sn>,3>x䬭L.oɪbZ^8 Y,owqX\_aWo>=_p}w уCv4q2it5N^p5495M~a dqφ;xP0 ea}`F@JPPYʹR^i3ZXjL&@ɎST K:QY550/DxPY)ۗc c`yyL#0& o8zfU',J1hVZU@ L4ąN5ۏ ic-0Ex{:q\PT= z@xT t'iC|Jn@ٙd&7$w>#<gb0 C*Xh,(i^ыP)&A+* J ֗Ų%lLEEAQhx+H] +NGVy4r!undWJ B<Djx4U&c/^yAڇ~IyX7T٣픖*z_ZQBƒij0PAQ͠CʢA}Ebߜ#Nـf4*Tlkʰ-,67%˫j($\&jj 2(,|ӑю贁ǒCN? & +8aF9Yd4+.d=5m*,  qHXcq`%ҍv- TfX*x_=}~q|^D{%=/5[axj7 eS 䡐l~lPK˕^fTB=@p8@6| vI!6Z| +,sn[)FP|T ]p•2Ӥ*bAFY&B.ӗ-@nj_0Z,ڧ?BH.nz3(Ťt./-֍ šԪRby Z:*NL5Uv摈Dy0mL[P/<)mJ +F"R[rķuqQ1뾻py<^ԡoy$WE'.fIļ2 j][U:D+H]9-*EmˉJW(f$6QС D gGmBv`?3nƑxQy+Fp ɰmuZ`OcvjX(Afct2>vP4X+BʃK3)z3w@܁3iԱһ2(h4hL7Mrs#ŕ&8n^5W܄ag,_( N:ϡ>wJe'qr;989E`f^oN4΍I׾QD!e5S+(xZAKP +ll^D-E1lo"QlC]6.v6nٵD&cu4_&qPV]>CKbZeZQl(%XUU* ķ] N09-ZEjda&y~ m$ȖVY ibjgL '6ju&s({|)܍4e%SFwϤ0nZeܘ30uS-" NCwڴ͒X:Q[ĂJA+ V@*LȔ^ !T_YS,91x4bj^k*2 3eR{eq/UD`ur0-jqyuO ʏqlCQp8~zj ]n?,17jq?+~~<6lmދo[*6x 1xL=s候%U1o#x  p`v.g ):P~tpq<e7 ((Q^XJ8(2Cn! +YNz?3]ȀJ]㫉.TT(>OȘzj2x +48q6yljw\xĭӕW₼ݕJދ`Qu6$0)}$U`{A2GEǯ9d[x6tޫO7b7t$K1wBrp ɞ.@HX~]^)@-Skrd* !"у1z&\V) +dTn(tY:1W|),`Gw#Z\\VnDE<|,ٝ;`UYI'>[,>Ҭ}8:M0.K Ò!VGN0(Mʖ&RVw.C6),~,w +}W9{]]gk!g+ ݔ8ޔޙ*[S Z>7mh-/ܺõ6~#[@ S)L퀷$ZJ(TšǨ~R2_1U+ +;`@Z7wےgEBQLm3 /ʾ?ԦJND@g0;->zC×+xxugGKkN)>onq/g?4twm_hp ,˛RLI6vO+׺jUʙ\q?HZ\9(ݪ2\btLBi_ 龍 pU+ѕ ۪,rMiF.#+ՑJkH +wnzժP g +]P}MrꕶQ~-iK%Li DN-f{j5p"84`%/)pޕNtLtkM :B۝.07m?>(?;/"l u)Ngހ;#/Iuɒ5Gu':%ӟ}>-"'FBC>K8ʴԜ>o io1.i:#'s>YD8K +endstream endobj 3849 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3850 0 obj <> endobj 3851 0 obj <> endobj 3852 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 3853 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3854 0 obj <>stream +hތ;ncq({!g6oš2tK1S>$5@CU]ռn>\p?_w/>Ͽ׷?^\ޚLeZ_lLsSYf7>],ӯyYnк/7- ݄BZhgxhmc0sakf_.[Zw.A/SJ~vF#| kr̰O3-O@X=|{Ok0yn0LDy}qۍ! *6nN c )l])e}*%O !sqX㜺H~96}S eBl0Bx=^"p'⳶asE{Tsrv6gԶѩfF0 Z; vH3eڠ\ AN熡4~2lw#|Cz[`S JB y  ]،|E< 5YiB8s8B(4t[L'n0tg@F6A K8b1mb@OPoC؆"q@a_ëJ6 =m=tE>fcgdbayf| q[Ni`FmSa`>rz8R/W!gP:$'Crf% +d][&O9pI{0  抁FM+ vj[fSA(a6]oڼI2mLUcTRaoGjg"6ա\sG*Aؚr@:#PfYiA c t74(Ir;2T,NQj^yl*Fu4ҳBU@j/挽 c("KWiʂ-sdHx44̜]-6X9Rb̔~XqUz Plri҄X]XUNa_2`N`+]*6NlopBМiUR*{A<3j k/Rdʮ~*Ye?  Sho':u' evG#geǾ!tYIrd98o4'&{Y&6 X5`"L(w7'GKZv_0TpBŭ9dwƛS 9 \wb`is {957{)J +䢄yE 4yWjm$Fd2z-ڲj(kiԘ-y>TL&XnWVN Zdh`O:*\%J~huVS5j1 G}v2lS5[9̜+p wd^.®͋q2Xvረ E8Vڼb,9aMՌ-j#'c Ǣom=>bujUqoXk"AJ j**Iguuƞc6).j\rpȝ{3y:2 }c˹F eǛ s-c! |C&#hhhT>@ ] }^S!hh29:R`(u;lNd[%vUcp^c4H7(Ė"PnZNO{3|UqP>7˦Jj~࿷oW`..L]M;2]mw8zە I| Wx>?^q`z=}LJ_۴]s5tiYd.yqZv# +N^Nyxbqzؿ<=/42}u|}yDW:.cLRn4]oRN^wBaWd{^_#~x}] XAgy +臠1Js|f~0^~ߟW4 +ڏ lW,,'@:j4'T fȟf5 +ƙ򎋵1+4 di%J('%YZ--i%bt>̪\6X*Dg L[;1W{{LTө fڊqR/!/kio4u2[h[/v~>K͠#E>Q( =eI"cpG"ס{zhtIszӺD,9ZZTr.{XNoyi]iΔ~{%ie[r%vW,ѧk +5xtɣqRJ1eZm + ֦[X#fEXR3.oIa HI>vW7h  +phWiB' L0oOݛOZC Xs7S-I̍mx<*vYo*s7U})LmL}Hf2]JFj$Pb;jJm9wOWUJ%SQJoi:kX*u>ttTOPCtvZ)1JtB~?\&Sz޶|-YN u#v{s;J~v&.kO DJ9s ]>z Ѿs[_vͩVZ3tS.}4O jq(`n + m*s[o4iy!f̙2b#H+ni TkbZp^@J/a^LKc,qėmf-Dxx z| 6#539CA+@~wi/0[ʝV}Wh/>/a"& z7Vޝ(ƚ';J |0aA/5M2Ddhc}_)VYJg=yHk;&cJ*pXX2Lc ;x嶤udE^B[D-E<;*\rDե{RK0;[ 'rPć$Fyp$zlTUW RW0,s̃H 4# ʓJ2P[P 9|jY1ҠjoS\iĘCMM\V/x +5.[ +AZGQ HbxmXIg 7ԗ + q\w>2@ގDNl?|YYvya zuj34Y1"=ZdmsV9>B:sVaId|Ac>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3856 0 obj <> endobj 3857 0 obj <> endobj 3858 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 3859 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3860 0 obj <>stream +h[iǑ>? t1 9$a j4dPZп":z9Ci€ʪ#"_FFDF>xË~7_|/旷/+}Wz~wgp*O9!ɄCnIݗWI)G_WySk~[< 囻9)^Ź#V4}|L(^jAn2|doN o/5t~{!Gdl0s:|U\O,*"*&Q}'%M!k K˸(^t +{3#2F +GD +].e0ŁA,;g0CSr6囯;ϫ矽y/|o߆2{.p1 +}X_LQ SsxWVVfa`)ۈTi.;3`:ޠ_yP`[om7mBiӲ%R/NSpA4i~r{Gh&ҫtrԀ0q)P fL@6QVD)܉'JAKF=^+tڛ=a~y'W"T8<'”cSg t?TWp/̔T7eNe X.Į|y,Trt@d{YfאJ Ȳeg/K~>ϒLׄa~>%,?uga6 Tߤ\.𛸹`c +m;\m]*47i˽VX^.B3l¸3O}ےvM_m]IC2wr?do5_E隄|¿.֐Bjh].CE*`bPz˃̥|_z0/C큂CTP`i <7ly@& &'hi68lI0mLC*g7źtj/H&ɞcE۹Fڦ3 +1ɽ؛` }˴CY.cV}ZT^,Q;\ah5.CǨ,1lM- )O.LʈlUXuPRv`>g,P3b G#s>D v&Yur⺘qs+46kl;]!ffןT<ƑW"=W5^=&2}%>.UxZQ(+5ҲƑf2pmժK3cocIJ-B:ݨ N>ߨn +&,>|siɟSf]V[Zrq5"(챀tX^{y=bih) tTK#^hjHaWa9Ks p?K+WUNy1K4aRxN}BL W[鏖 +,/_z)-q=|r1dO"UnR,E+vi3L/ܰʰֱ$ʔN.XOY"&'"#:3lzF8}jԍg -^:*" ^rfA(~ˏ>gug \?B0Ä9W0U,#pR; Eh7Z3/kMר=8v~셕 /XȆ.&!BVۂ&Y]ƫ8i;*7P) &}l!2c,c*֒:t#q +&i<2Ȃ=Ay/S~<̡?3XS;\.-: +i)!Q8`!', +\^;2xS,@w=A,ʎe(xb^V. Ǚ?Q" #0 ,"\Z+ Ȧa,> Hc0BPhV 1栖0@#؏022l#l-T)q~`@eﲫ1S,JG@M +<>4 N]QPTc#R_`dWijT-1l\C10|4!X17pI\=|fߕ|w2Fװ}]un7`vw9 +d* rU~sZpx#yo558Q/sB9B `F({N('.;{ܝr:rRrB2fk5acg^naiMa6leMS'&2fX5iй|5H߱>Aه3lddɆMg,`AL̈́nff Ƹam,7qhPgMdtZ?Q ~Ep>iykSgF0Mhȋl'3-:L޾S,Cp:BhխZXa 6$wY#)fjyni[Qy#I6r.:g-8w#*~*"6R= 1ThqM7K'=-y*.bX:hӊSO,.qۉţ|~`q:ty]{~2]̎sxPl?z!z뗿QT/ /T%7G/Vv53K:s oέzv Ʈo5Ό֣hD6?C'[w ^0}nB&y贓$W9eW`a:01Ef%lІdR!IR<*WȵR|w=:?y_ihdPGz٫\)yIRRٙ df$bzʐ_u:1Jc)dŅdUtFK27lXЀ J[ӧ)%ώt $@7B+Eb)Q\@2M^f\䥞&Nlyrར&7K4k4g;6 RԄnG W"P+^o% 7 +o]A=@IS]<6%އȦfbOW#rV^rWR5um=̝ZmIN3Maq]H^GE Ϟ,{Gʼs'7 ĈTO6?+MYXIХ%W*bi_^bK[`g=G O0e v._5c Z޶au(ڢ5Vk{tժëzvFcf(Vks{1HFrYvhsl3/"W0yr$0ؕ^Җv6D^y& ج,йWtm\[7uy_ ~.Kf;>=%Vj=>fh +Dϴ~~j8/6Qjo3bŔkLxCHIהEm6` +_+|#=Զ 1~]XG96%0F8j* %LK\36"pyh}/)g J!ݵkk +74)w״ZmerA;(fٴ[P|^#k @ioxBSvŮac4,}um"b:䡺J@ +:Մ95% ƷW-v2-kZl%z"QyQWTMa3-s,6yքTYa+Q ePd ԑ,d(\B+Y7>f\: \)®R`˝f+\jW80+SaF1HCgir̠) +6Œ0[RݟNA;ly3qmF;d]MdBfL0¦0cԧ93@2mǍ,t6DmÀZxn9tlϚ)IL"ЪϠUΡ՝Ekg&1+Zݔs[ۛ {jǤ6Vm N'׆N9.]uqVAxt)Rչͬb.hG&1FFͩ)t&LwrhF?Eq>Tj*߱UJ`$^+lyMWG7gqWO7j#GF8V3垢,O='rf hmf[nB-+ex#-N-sxI7o@~W볤}? -iY~hYX?th8Y2ct޼8u9+M9KtL\XA[aBh:֝iƞ3*M3db|A苧UX̤QȬHqcȅÆ3 +M,v{J{cʽ3y6+,=  +jB{~Hq-F " OC?͜ yhOBZkfp,0 pv!A׌HS`sB._5 {d%md5nɚg=A;3<+jL"#fP#Su?,>A.R +c\566mgy/xϑc8nSL'2,[/g=nq &̷`bZwd4Ono ZNO +Bσ,F3B6ʳD#"]a_y"קdNb某y[eN1}&''lSͣēMFB/esb8G3 ؍CC<Κ­k܉=@l:?z0Ο.)K7Gytȹ>9w)0s%5+iԢ-a9GƆ*!ftmkl=Ć\̒ <ڮAQXwخa<7.+.OυI"ۮeѡ24dbf9M{mq$3 nx=5>Eٯ6_k>s7r^*k)9~r "LGVtA+Ѳ,Aޢ{5=/ښH gf(+\ioI r!1oy, z>j$H" L0EC2J%ʤP +EY$sdM <*Y4c\Zy٢TC{Ny U6s*j|E+g.L͵-3H (+ח0c|9kNEՊtu-g`1jD4 E| lq4j ߋ`+(k9G7qp9l9cLjsb]s;\f9ˉj|Vڟ&D CeNx 5},ל#%*EZxIZouwd.H>.3니GSGGv?埙 [Tzsܘ_ ?$oǚ +0l/f +endstream endobj 3861 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3862 0 obj <> endobj 3863 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv30338V3.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3864 0 obj <> endobj 3865 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv30339V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3866 0 obj <> endobj 3867 0 obj <> endobj 3868 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 3869 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3870 0 obj <>stream +h[k~|L \ x[,`!+!C7=Hv=3{%oXmNa=Ȫ'7/_?<}_~o?yO7yrwp&!9ewݨ77I)wкWO)x{:{8}.mn:̞VOdϖߓ^Sr($DpM6Ip 6*oĸɣqƓro-%cgg_kc1J_D55ia­I?"t9&sN_߼B(){OapJ^^ϣZB߿??O#Xh.(ڱMyJ~t+0Bɫ w4mu%E"Pbԋա.7Y!OoI3Բ4Nɝ0Xka\:g+e^E겤Z$ǶkwҶVڥ+/m[>ա532G,!7Beˎ`_6<e0kB<} MCً@g56y^,mbQHjb- jspm10Vhu| SSC,ysa7V;LjC>7B%uScuu^eNI|-;Uxy >UN.&{egIƥv\cY>j@Xֆm[N&"X*!^\[VEukʪY ++&B2ecs-gh賅B[T*^@9zJC.e1,glij&VX PAtubiKָfx@ܫJfoZ\yрpk6)ؗ}5MCcɨspѦ>6F0W%6)?1.Q^ֵ蜪^|\!S"-ŝZ3ʚ>5kMjʧA*UNq^^UHڦa`U0]:Hg;N- x|ApZEE/\i;"0W) 6+oy5(/Q qcp]XȀA{:L6,ahٛIx8WebZˣKXH{l x/\E@=VY<.t|<O` +ϗ ϗl\ؕA^A6|P90$KT[<·kgb|6%y^nj?HUr(!;CtAބTHOTb"'0xgv:婏*=Id,FJ}Zaf^1s`ȎHKLz隰@݁ +ed^J]_/9`'$DX6ňt3jt|rBPɲ3q5.m+Hd󨢂{ KLQmCkeN[X R9 /,WM` 3^|h!Ԯ߮-UA p#dpV8 +#7!~3>G<M|\l;bӤyǦƸNV+[cj&7p8+1'fEs#ŠSTcpM}#ܘ )f◍5Au! Z[_ՐE)uZk`l܂`; ꜖\&㮚~[O˰5e窞\/B򹮗UvUz*b;דbgض [~Y솢4ۅ+YiS\X=5i1ʢϪU o(nv[ZrC$9nFv&}UUxD=L#ڬfaߌŬ2 9?*/,^6 5L +.O(“J}ˠ =_ wMЦ{ Œp#i]6m+.mmw!h[ڢ[mp=0+>ԛ[EDc.ބ~A6+IǵgCagfOϫ3Ӽ5R@B\z-]X&enC ¬ܢf:f +U봛9 +Ovۀ{ǒr<0zKF[x.ӕs5oU& x^㻏ۄv[>ڍ#Z:E_{BI붙k>(?]غWmJDڮbJO4% .X[s;kPB #tǓz|PƳ#l2n2XлIqkA S|Б~l0$xLǫY,|ʙv CӇ_ĥXƘzrPrSk?)gW1\/}_TB;IiQ9I*),)(TKM4 ,k$L -~#K3)4]ͅc#Ux礿_Jɯarh(\v]M/vWŎ=KV/2b"k;[RgYÇnQ^P< + vJ_Uү +CG ވL~1UJ1DrLy3T,ޢxٶX`QѮuj,VR+A\Èb-9&)xJ)xѶId#XDlb(M t[!  E %˨J_efM+ٱ>3c"A7|b9/߿kgd>jʩ vZ:?#x*z/R]|c=YpNcd[]}2l 1^ +(/0ףKT%7 Y$SkUݗs4Ų3F10T^B!V{Z!xQR[O-}mޛÏߧT547v՗Ԫ'菉4wɦNr~:D||i +}ul'~A,ϙu?b#b壘=;Jsx*b/\wʑ"tϬ>fN_6yWy3ʚ՚(-9R,ݵz 7i_cf }քzr U_ѝX]׼ڗt⤛0hyrNb +#U>&'4AdTtJUpnРB:u:jڭZ#'h=A':˪*HC">F[Jjە+DM/EþuTd`=`bYqC9W ̢gk䴜oMr9(bH0t +Z=33VWU+lYPb5 + {^K I6uZ G;=wA d;Qd.ٛ}{& O17^qQqm/6nqoԑeM.e8;Ʀq=wi,.8ɟo$R07S{׈I,nr265nrk+̟&TE~N)܉`rmQ5Ym6 ?Ls0? tD#RwD̨Cgy@\=6ÈvFrɉeA*5Ra4ˋ\<^qZ1rG|7|}93`!2ZC̥͍7,eaQ+ ,]:jC]* ?YT8[SZ:/M6+O})OӸxMy~Pys1,"\S#{ vL)S]rAi.f +eOg8 >adl[ۻx^? +_y}x:–}^٢l%S$Z,y}CK7]350YHJW! Cjd>I8Gfv>/Pqեtm$3 ;K!Ujg`zNI|$=?܎E&Y\NVBIHw3.6(O3[7M*\5|qZ^vu( oVŽաl畼Gԋq. RvNa9hv#:Ymv֚p+.iyn3 ܍h;f |ȂY^ukoxӅSmWWcg@xu6w 44U+}xa^V'0(DÓY!Ƭ̨C96_"m϶: v: ;;0ْ^IUHaO g6yG jOfsɍL.Ąx=5|#2i=Ƣ2{(/̣-k>%dzn>,olfoFYgXySgfU(xB;ku;ElZhF;WF]_e%϶Y2ĦgI"-Yeßj3{o|s?!|m:P09-SM'vɻ/خfƷ][ޅBJn-GVjBkg>D5nQj!pZ_0=fP k7hpН^K5ZoJO +Un3dc)ߍXMmkh#^ ` .3@)* ]g?N,/h~m@c\iaiZ5K_puX3[j/47R@O>zx +Gȳ =i6x6͉fTknlF~@'q3w3qWǞzCÝtwZk'qWݓ~0,t.l?=Є.p5 =ҶἛ2^VprDY&}U7fE)T6p^JXy'ӖR1M嚷k]kyE˪U: 6>n+C"u[y[kma)Ktjb ~hR+;ֺMu.t)g=Z_,.eb]ɗ_jʒJd慶6$giӭsfh ~]ת:fmJ-m^E +ĦX4!esudUO6\\b)['LXO!F"\8u Lb@ +ԟM1Ծ!wF3j])[d|ƸcD1"*sgZbgjJuj&YKW;;ы^b__nȌ)gT*wpx~U<>2IݩAJ{^Fi||BEI2Kl;K;"1gmm aɝPX 3}li%݄aBR+B +MV$HdG#cJY ᙪ"-ԩ\[s\]su(jmA=/v RujkTOw{\թbOutX3jkZxr=0(;T3MT]NRTJNju:y"a%҅t!xU(t%Ũp>"(Y^X6ąs1L;f->e9b\p Ӧ+ Tif5Uiቑ*eG>D2S1qWLSu=T[3>6Kc >6!W<]ݰ +x޳U㎛<[;MTqӚ-b]|N}MAPPeR jt=l4zO5jעvf[qo>#^©s EsZ֛V&zȜWr5v&Vx2# ,|sB6O7?n--v25$|RǕ{BΝyK,M'7)Ḿe=uIgK'R]&.ez4O?vˬ /c)`A_ +endstream endobj 3871 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3872 0 obj <> endobj 3873 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv30340V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3874 0 obj <> endobj 3875 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv30341V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3876 0 obj <> endobj 3877 0 obj <> endobj 3878 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 3879 0 obj <> endobj 3880 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3881 0 obj <>stream +hޤ[[,7n~_я=N.vm"A y8؇,߇H; *QR|T~/_wOwx?\.wO^aG.χRO?uOWxx3|MۇOO`wןAڢ݋e͇SE{j-Z<>s@~q)ɇ%NK VAvp⺸;Swxқ +9zv.1>f|YZ =\]rlfu@S|.ɹx[2={hV-0z;/>Q RizIk?O-PwV +~ik:4w5}ƍ˴8<Zyh`O,w $-h&SvTyj +װ, + $} O ҦTӑ߮O;; +ϥ?ޚS8aq`AIPk&~?]}R.ޑ˰e__+Læ-1gnE u7tmaiQAf!u VRDT,n:>GyD>wCOrW~Z*q- >>% ٟ/zl?#8ܔ$X5HE)cg 3G֣4E";F0vHHǸ"`I!lg'p|)ŅDC'# "o/ A60 + kMWRG;.r&yH~%DhAHdDt%9 n+mJ2C'2nƑA<}jJUy.n7f~Ne- +Exn$nTZ:g;G=B>D# >ڡc#p&-*VQ7g  P*mfqmDU v+& Q>< +r-VT(o ^gco%K5+pQuTkJk@8D~Đ 5@< U'ugo馉٘$-/uظWl۫GQdfϺ]?Q^(eWG=% 6oK}dlF1Y=tu2J{0Ӎ=mrf΁11AC+L1O2 $ N1@Ae3mrB7he[2]v&7R_X +,^G=\3(g7Ȱl@*M&;NDZ {HJx'0^lU|V"xn"y՜&듦$ +pΩ~C`. rHx61Jkr i}s\28˗qMj'~2|lE=DKH:} b Ajr(8D2 2ת'QjΦc1e?羄YaͭmyurNԣUJ'+IKSR)qTt:u,R~1iO©kSޤ8@`xuιǠ2"?9 vg@g $gaN/)mxf{lN㱢EN`7`uS |=0w3!H}Y%'^jah4ϻT7afU)\o+Ÿ7ATGƝ,v4ZD6h)/ 'Sm g )ߞݰ[LV2Q8f&(6{ |a뮣ظL!PSJ%AmF(lN+vҢ )~mJaTjۨwҦcIkVl5ˎZyj? oKW`lKy|eXKidYˀyo>%Ϭg8u^r\X,H*^vDu1 ϴc6TZZ_GRfu6xCuM%y덑ڼ[!iԿ kK~%GKJZ/mvuY[(#_l~vFƍ(<3=UQF#qU/+`LSXe@Z~xӒ} Pھj)ʔ>SJL!uݘ`JE"RbH-L( v$(U~_86QC$]y6~sZ?k߷ _NwɥS^jZCde)o(zclH+`@}t`w# #cj) 3vukH’`.*L+dyoۺy&uMe sCj-}}hYIWвCeM==a–BLCJ !t4 J޻g6]Ydaр҇vCJU;څv4L҄b*qR F Qъ3sڅkTt$$4 - -\û?>)\ +$[`_ $5<,?!?W м>:)W:+Ke8z\ +U}F_a"/eKHY܍1!fcb}/ $6vN6$[*0+(Ed4GBRoT,{_Ak㬪}FԋUe U9qK٩J#d*aX%H@Dik5z H[4a2+ e^9sa[@}FYoƃ+Kj!XW"h= +y/_~o޸EsteQ5`Wa0KV_:J-`cBO>wt7V:-DW]Ӗ"m(r %I5ސ՞gf7+~e+l]F)z_n +e\WvfuGt&:̶7x@ +YCݷ:{{𧠡%`-QU<Ҿ,I !. AcAl`G^G:a k=Ǔ_S>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3883 0 obj <> endobj 3884 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS30342V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3885 0 obj <> endobj 3886 0 obj <> endobj 3887 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 3888 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3889 0 obj <>stream +h[ێƕ}cwCUDrK= I0h%ÆlO$3yOv]CI6:,rj/U~ݷM?|oݷ?p{Oy{GwwjRݫ4-&Lw_-7WyY0_/q[pp{r]9Z!,.届'Ss"UC腌v se^ilbƚ{"|k j +WN>~Ab_a \= ykk;\ TprۓV[^§%S\4kRfRӛW +s,?'}:91㕶})v.he`5e@!n#5Aؤ9IGmR \=῿ûO|p۩˥5J'XөO~װ^>o7>Lo0'oKJ A^YM)>ꤗ%;LXʹ2>i3[u y +Bge=h⵼;.;/r썌s5Qh30'o8{;)58keU `1pR =Ԅxٓ @3D Xx:ЩԀgg@ɀ4ͰoFIKkW䷆K?"&j"y_b+vA)A̔)r1ZeA2\FD*`;+# B啼1 @Fy%Qz]N| G*CE^A$6!=ܷn7^o29nM\NEcռMbX>լR _#vNv2]|1xL-p%΋t_|C:*8~@v5,aoKTZ ^ Tq5WPʁ?Yz=z~XaZf(L6>!|KB 2/UL| &ɍfDW[g?'%Lh/: $sOVBb`*x+=#*j7﹥ +"ĩb4 +.0 #I$dr%o"MBeJ%4%ŒӅz#֕ : 5#M6FV Y- 3DmDyY]1ګBUl쫦Qߴ A 4Q t|N_ ,ikn8\jC׽ͤY_p%U$G:f=yƖ1u!WJ[P\B-dgm4XѤ\k5ZZ^Ե"ЖVd#Յ{AlM@=N( V*k.]Mf|f3ųKuuW(s#VB$C[a<}w2)f~KF+Lp6ըk-nϷ (VQFkW[@8IDg3V^n-ۼ9umق8iM=}7TR4w(7%2B.=.Kex:#CYt^\mO)|n}ݚ dvV%ٯMm~SuB9.iHqG%@7zsUu^j:yόcJyt2EJCzƚcp1O%N薽.lɎq*5..%mH%aUÞdMb +4t}&=^%`,b16~wRIlx,O +},9SMe*F*%i+CdeQٚ:NJ7F0$Eu+n~RlS\50׶5dB皍=$֍qu{2xeovµҋRe,lRRߕz)+t7$,TrȭQԞ݆Wʄ9L +s(bU&Z-?eHg!ie%"Մu^ gϜ{#%o Ul_JQ8g;hz9$+Lc;Ed^"v2mrQ2+nMk}ԽG{WJ,vdh +r}N\'ZQ80_m6K6jT`1EJ1Wܮ\_^I5wmT%o[emeˠ¯vw;*AFaUJ-Si+ϵkx_VvC +tse?SvϝhOjlkݭ)K%.Tw|C,8- `Nsq#:bђZ@hS~n7>Jܣt>喒pƄo=&KcTsHer *uyQ^ed̯6Ҏ˱p>vJϯ=pυyb'KreBsi/_mQs0pu tz#zB~rF/6toFfy7;g,?,ƚ?|Z/OOJ=(x2LO%%$5vM1 +G2A㡮Mn|SI"Jvy&P@wr&mqlw9[p<"Xj푾A]#RgqD$M + Q @1gtdgTxpIJ"s 5qS4Z'`#Z똈$Q@1L CF9" +C2A^Tg_>nǃBDy'_\a ^/ AO%yh!-. ˔}L/Jyxƹ~.7c1 '5K/_;E0HGD}fz%~*l T2^$ + ʘ>魶¦I^a⭜ [L0KSDaaM殓2ө [ֱed{A!C'0:HvdH9Obwdt;ZjoNʙp&9]f^8Qp@ԺrsJwT 'm,H2 |LUFST5봂٥#z*%TsF*Ѕ@I-u2~)0?QJ_yD? +`K, y0 EX!&D0/6"vDQ+F[eG]lfj8'_F/C^+~D,lc34ʄ;eỤ¬꛼m's1P.RM]_@zo+9*a\黹n7m͘dQbP ֹ s6P婸hnїT°,rL6)RL^RP?sJw&Qp)N2^4%|FhkB(sD׹`F t7KABG ;;ԉsEj#^7}}Jdx6y na;2 %[䌤X[(lptߩrOTd6mYORyF +^x<)JKHpaqC6D setJE%Rrv$]; ͌aC57هɎ͕äRj\8ؒ'L9p6YU{병/~e,"?P>ctY? IeIi!L5 &Kt̵[]Y"й=rS $#F?̓G==pz_OȩBik/߾-$,pe +q-9C*2ߠ%]uVZ-32Iyn?kf3W,~PRc󎉊[Lsa]Xw¸T1ameGL! +%FkVBHVþ+$85!aٯ6RϠmuy ~2@ ~4#݂:4Z /ht d!SV36K fe.Sy{NV7.sy!G}d.,Hu[_"ǕfZ~ale8/uYB!b؍fMp + rHAo'\L;v:NUU-j:^lAIgy2x ysmY|1 ՗@ETDd%93=3g.]a"eMVx- uI,f(QD;䎀ɛ9o!ϻU>iSO:* 0upS] bǸj+ׄ]WA W̥x>e\Ο].͢EV4,iG`6l 57K_3[ݞ5`˭zo6;L4u6^/@{*3;Ӭ% J23ߺ󦽘֡-mŮ-v_lAlKwhC kvmYdȶCm ȐmV!ڝlh!* glscu2d[G Cu 1:ZhȶCmYlG7Hٖ(7n"sqv$:ǒm% <6*D!~`T+g +I K'ߊUp\󲓃]aU2U`Udt\B93|q#".萮)'[4|Q]Zzԗl@bbHc_S{& YjQyҘG+nUK:^c^'\ik`e||`NR4*VڻR>1~x|˯iRQr6%P6Va 7LA߿pdCණOAsuA*L~m#]6\lPҘF*sڴۛxZy:,7{|xؖ[C-lE}}!7vNy~t +6DP?aՁw_z FLop'$fH]gϻ]e8 +":z^%c/Nt54xP 1o+t۴bY#_LiŒ䣌`GL:G2LWй:imԝG?m,a] k)=pN~/nKYIo(HdmVfx|K8ʼ۞]2{ԔY,,n ot6VԭӈRUZB,t,RQpIy>Nhp4]r}L5pN#դGEBF.U[Ol)L"A8װ(ʸDbCRޔʝTe_>7|ub"UR^~,߲ҷ> +lw37ONn+k~{Cx]?ջD$iE^ +endstream endobj 3890 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3891 0 obj <> endobj 3892 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv30343V3.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3893 0 obj <> endobj 3894 0 obj <> endobj 3895 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 3896 0 obj <> endobj 3897 0 obj <>/Border[0 0 0]/Rect[367.62 156.86 527.94 168.86]/Subtype/Link/Type/Annot>> endobj 3898 0 obj <>/Border[0 0 0]/Rect[123.96 144.86 255.06 156.86]/Subtype/Link/Type/Annot>> endobj 3899 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3900 0 obj <>stream +hެ[Y~_UT&dil3 afBǸ37HFY0u%Lq~|<?߿Ǐ߽~u߫޼ՃnnҘ0èMpfތoo(v& 5^z†RgIabR O~}(4+ +N~:7a.SKy̼yLK-?O+o¥ZR;]RNb]Q-֥ZV_ac _j^_ºɏqiv(hPnT6xË7>=~z\'ūO~X>~S >-!G> +58 TithwX6lJY9,-L4&d)*K㨬q|o`&‡M)+euG.OirO:F.*&~*hۛ\Rc7ZRʔQ `yR vyzy`!T_KEz:qZP4gG U~}j~,srN voswzLȻh9hP Fc +q*hl9RIoUy U) J We5\ \*o \]eMyB/nU' +P˺Z2ï7J!o,IɗCjx4Uz[xes5yCPm~A[7`ͻRk3r6<0g1` + >uP 2ĪJ/_f+\9)g岥RermlkI"~JfN<,r:/[âLT,Sy> ˏY +%O~WϽY?@:L% i*:SɿYNzsULV |AUo/ UTnYUS ?6@5]6Hzfnv4!Ehb~kGjԾN|7 +Ny Sy  Ag)n=[b[ф[VY6NV-b[PUat ;dKI9E]K-: æͦvEA%ʹ-mIsVW/ +)fW6I#)]r$y X$.=;${wlt6ey +ZkReѥۓqO}&FOIDOKIa2[  +OZ@C5 s]a\fP2&B9؇ԓ("SO K[]۵bMY"z0ngysb*Qn"nX~5DnAĥ{<$qO$SxZf(~̲+y'ځ&WD)o2:d%vԯzΐh"(8KҪk1:9UJ.Ky䑉ɒ,*ߠ\DG빺e\<;"{+o_?yf}ہ?#9d#TIj8u3Gsb,ĩFtɛ3n5)zM}\D(e ?47'Z%nŎ(Kkda:?L) 9酌:k5\9J|mx'bS"MRNE1\d'=a(,z'XSp\RS TxXU9R}ĠDMbA8uP"DgyǪ%ed +T9G7q3%c&kgxh[Ċe+fA&fYvΆ8t6ܐ]([`=o}B WzR6 +5’uHz`_rʑ4I0 I+x Ğ-,S<=YlA)b(*auc8sG4y͠/"AWܳD`6:SAVqv Kgܔ֩=Z})VK  UM7iG04B!/fSX,T-C$PJBoM&T͢+' UWajDaYO(.W=cq! y$}W&# k9,weϼ3.oM갯§HKo4H*JD# p%yIieBh?B'Ii[qqk>wLVXb+C4+_׹39խ.}XτS U"U1:J.aS>%%yB'rFc (Xo]x%YW垧tvt̚E=R[^RV.6;j/پr:6h\Mm/XHt]+):۰jf~Vo:\GjŎL(<%JVe")OY[-@/Ҁ4=`)࿍Cng><B3,?̠1' [ҵ͋kvF9j Z`sdh_樚 l uxd&, &8$VхOb~Kmd\K(,s&nly&o)@Qbd@$'@s% ^ U&Qej]b"_-׀YKCg{s71{AĄUijY]%V)ٴ!At'05ĸ[/Ho``Y+6_i]=^g58Uw>2jsR U6i *m5od3- d!tHxnu3ؿbޢME T8Rw` ދ`.`uuI*v/KI ׍?#)8ЦVI8<ՆE(8bZY:M+%YCٽƚMMQ S}w$w"W[5'fi~" +ZsөUr'͠9Ť:[!oB^Fy`Ğ#u2cc!#h}ֺԢg1M`ٗkś< +L,*Ȁkqj%UDOZQ qPnT`7*:7*l( _E͚!Wg+C;C' ,Q]O` +z *G.z}\mQI;tmqLmeFkjbcu-Z Y:Hed|߼Tkm o~87Ǔ s=fL}.o8=>txShp}}唀!$=O09[P^x2jLtk/_~հ3pSI/x{,>{9兗y"D +S`(0('-Š4"sl}hyRߺ}WD2ڹ`]3|Q!w +73fb˹"g| ^Y-ə6M$i)f2X]B{Qt #Rɧ9͹v"~#2PMk.[ ++73{Rfv *ġգ٭ai?fIOᡊU jЎݵtsW Hk7G*\xi`s3gɷqб)w6,)ף گ,i01JS&Pfmݫ6/C*N@S#uy!*IM_KaI.KsYr)! +r^gperXRҎ&f `e(XJZHbԄNy .va*󴮤SN&rjta4,㽝cs(R.pn{FjxgVoğ|I]Pʖ]~6Vg=f[\x/O}_{˯<G~.?NȮm#S)@25ռrD2?wővd;pK+#>Spjmk0LJ%* J&r~̓Q؇8充 +ٸ&ZO-MISSnrD?kdrr$EC9,OO"=\D|>*5q(THD#G'*KDU$/fGsFSBne̗lD+Nxf5W6Ytxz]Eg4|KwWv1)ř"ߕorM#ۦMW.e̫z$6S}h~"v]PSq5Rܩ6$aFf. $FV{'Zک@`}%=c rK:bJiK}rmT&rh D!֮/gPKw7A[埨0]aj!Gw'oB1w z'pSCwt^`!)nj2-!7=ʼnp"%d7s-}Q)^(ʅ )-Iþ%f`r{9JGDW0 jK9}:_Z_.<3g8Tv"n?iLJiw0,3w6 3Nr\@-/+MXD4_ͻ׈~]5*à0&xWo#dӴكN֌z#TcrQoWAٶ"T( gR&:q) +=pN2c5X2)#ʓ9le#?aL9)VvEy5%ʫ)w7S[ZgiNur`p`a3 ;뎒nL|rL~嶡P~l-TEIQEDAֽےvi< R :A%2:DmEM^V^L%(" XI5.r &S[mxt4~lmﭪbEx~79׏OKNPO,>tR}N|/?ssy +1翨ûwiKyV Aus뵅!8yݴNSr>V܆+)icYd|XT*m"],? ]̗`D} 0  +endstream endobj 3901 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3902 0 obj <> endobj 3903 0 obj <> endobj 3904 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 3905 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3906 0 obj <>stream +hޤZ[o~_U8aX ӢR4>}XѻH\g( s^|9nߏw۷o6twOoo6773y3v;Sc7n>lnfOapL:Bodl 43OZ?h[ +1_:oLϾî>L~8}|PoM/,4ǣy,ك.XNZ8 lq{tzpxpz~L#})v\Fo =Mw68qR7}0MY{ k׏.AC6)so|~COHܓa!뜵}="p'҆&яN50'l'Θ>Y|ޚHmkj`"pS &H#L6m&}6a5X&sPԃ}2tojoo zD#΃_a' Cc:g]CG{j(DI41 -8<, o +.>2 ށ 't53,RCö=6O<ƶ,vN4j>@ˎvx8I*RBrl#\ .R [x y5`H5J 8y)c5[ضC69Q8.F4$[B% +3t'+1j*q!7o7&DL->Ё\;Rpm(ZVvUp'Zq[W% wd++x'?ū|P,7yW74f0+؏()sG(mgCEnT[gb yA()${"w)N>5G$xMgtAy4[V(mSޗlL$>Twtߴ*D8_+W 3`׃HsSa#a)6n%aooirȼ5ԉ740G2| A`k;7Ü.ɪ$7b bfʭYf8y£0R~fXVmLR1je AsQBHfj|m[7bN +7[%5CcG%Ʀ +MݐlU[lW,Y"pu!(@xl1`-(Ή )/6ӃoQ -˭ՀfXYX{*_?T^4v[a%9$r5ʓ) cf,W 97ѢPciSn$#fE J: *#H?0{TZ&Hb;{ ~j_X|,1 7j*SR9 +O*8EE(30 +"c.CuChLJ;"S᢯ˏڧL/F˂Wbuv% LLڸ: +Wҭ$)S5Lhb&KBs + (fKi)p1^کɯ@P"O tf5] +'!J љ}ڊKڹѪ"5i&ݫhc_Q-[%(P5ͩ"Q+/W H\Q٢: =WL aVc8cJkyNQ +Q?b +w>%0cB_XgehpM[ Myt6~=yt^ZHTqZiBp7#P aה_s$V-,7/L}ʤ# v4~kinq +"kHu%W +2EE079)#d-ڞD\mXRcRrJUɲB3DWB=b".beK^bޯ,| uVR55*"iQkѮU:C7Wո-Q>:n%$4SIkbu钩^ni,Ov_IJ<\a-*ó41I>|צk'dtËЇR.f LEj8pA;i\õg "_4~AVg\#/.*^II6֔--96 d tpo8dDeveK޳ gv+u1EVTH#Fte*s_YZ݋5O+W_nXͱ$~P&Bib~jU\$⌫~ktM~E CJ8vR"}W?^7 +>Nņ\_G۰ĂjJ^OhO!~]YKT??oJ?%颟*vO9;>m2~h +׶{;z|։.n=l/ww}~Oo}@ +τSw>*]3>]d/éBP_-O ^g D +ٞan4zuxvWq G~WGgdSwN|U'uǰ- +endstream endobj 3907 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3908 0 obj <> endobj 3909 0 obj <> endobj 3910 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 3911 0 obj <> endobj 3912 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3913 0 obj <>stream +h[Yo$Ǒ~篨ǦUSygt2im!wC6͞D/g(~@Ӝݳajp Da%z\op'eee=)~ !X q)J'ر浟8j4A<OY^-B^쬰1"i.JpHKKiTwj=23񜕠v1JTGIkǸ~J8vɋ =sMh($#v"1]a1E$ +lqC[Ac F筅HTK[I9e , 6˿f=*E\FK0f0O y9`L1N>Hyd3% D ˃V`.:jQm2P&[ +֑qtC3`ei +QEe(0^鴿\QVvD6w1$.ДQ8uEOAa!C!) +A +`2Z^{Auy"d;]se{wCkUI%[Y;Jcx>ɛ&ZA^WKΔS.uU ƙ֗$s*jkkY*qbXrf+sn-ljW4f]pq=-N E.9;W)s܏`{Ҍ:Cgǰ5j͇mrg(d ,e~kb:]8-LIpI&xNORPRE=`^xe29T}bZ s,Σ {tVKA-dg2us-YE2@Jb |x=qq3hkdlBrSu MC̳PjF,+RmEyEB< xG%PN{^,bc^/cpv"_,F<|NC5ŤoX&#jhŸضhG5m-MoֶENt/RzLJ1ƼhU0Oc5SFtS(/jImsŻSyH.i]9W!@Oq9-/5N'ի/HCx<jISeg! ڤ* Ҏ͇~Îjz,wNR#^,ȋt:ZЀH8v:|{[ޓ9ݵ&\IVGiȋn7):|wr=X.4Enhsq|nJm|;M0kXI M0n' E`@$htW-l&f9/jfV+'[N41ZD}Q2$gfOD~M +Jx@kMm]d✁-!<15OgRKU^pDU@蝢UH[ v]GEy[ҧv`;,R#ڛ` #d'utXFC t ;UʣґC02\NwJ[PA:0 :A2#5HzL=R]i8:%g'Π(ɄEp!GF#\Ы}#!䃦^>G%APk[Z]8\6`?;ӇIc[` Ol '++؏M&(>9 3ǣ W@9~ɚ.vti;; :RYrJMt6zry_ r"݂Y:\s>"dRyxx< P3_Z4ɮ>yM4ꊏ45f3:cu.3mOs1ҧ6pGu:: 5Q9Jᰆ hM]5ˑ:~Gkoۮl›}`}'H$[kYqM>؎$I=ՉdrGȃ^5HX2RH +eXد#Pmw=(OČ{Iୖ%E¾7`Y*}L#Je()k~>4K#fsI~6.e9EҘ h,m5`TE;IZ=]^b[5g +JWt&>*["2$Z>J iԢ:uoG0X"F# +endstream endobj 3914 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3915 0 obj <> endobj 3916 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv30344V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3917 0 obj <> endobj 3918 0 obj <> endobj 3919 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 3920 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3921 0 obj <>stream +h[i޿>^HN`<1-Ad'sIVz=U\ƻo|ϟ^ۧ_||.]<Õ^k=E80d5:pB /R 7h]JY?OoubK'ph\::̞GLJiM{ekKi}{Gk*cd>hhSAy<Fq5'@_Wh1ó)om sP@(k`LjK€0(tR//2CďNhly]9 o/^]T"X~fSc7臗BZB<xLL?$@lTi37܉rC 杼~wq0j [mmmF}m:Fܨ/tNvQ#&a J[cw.η99Vi9cvijcNcpyzU5 o6ʪz _(HbBHLMjMǼ512ΣwAFo #Gţ3'@ۣS%GɿH= +!]vNc3\;ؚD#[.#K5o!ZM#V]+2m3?CJSV`SԷ^]arcqz!8q9U"`4v,mSҲÏΑt* ƣMӣ.Wccz&*֜fC<~y+Wʧ8xlM1J_W9gIKD{aT5ՅZ(ǶkҶVڥ+m[>ա|5a6[^BU +XF8u7kZ/V\(c//RkW#[ ĦU1-x%:L:Nί'@п@Ox- |:bSz]7-f6Fc`Čep*2WW?ZeOY ƥ㳫A˿gt|9;f G!&IWtwE4= CBg' , W s$VtF:pᶂ%38ZxEȡ"c>8,Vt+3y=c-dFS`bDp1/nCppzqWFs]8- +4z%OZAQp_%Qಃ$XM#%p$S; о 8c:2"4> 4:;JS>-[qQkK5)f@5yyr[\CdRz&a=={BBIl鷗 c%2.dz'y_|xI]i'څ]cֿ3 +zFQP<7E[M 4JI~#(_3Ƒw09 x !bze첋0 a-S>fVJP%"‚z~V&g7U"k15eBDz 97 5ةYRV 2v|*bd"#w6EĴn$}SU#a HYI) V +{FπGT5Xοֹ[R ,m3L."$ A>Q:qdfKIPX}^,ٺL-\27jz˧\*L \t_ի5ṗY[>%S6*6tkrHḍs +zwiM5=>hZߟfŚ9I>/oTsNbm4H0 tЭè̮(Err7 l9 G Ye{JbUaA,iE]}w+~A*2'ͲKb?ԟ9Ӟ\j p2DnfC:gr5Ϥt%%qh'ͦ))vݸ~y Bzҧd.r*ԨiEpee8j fUs"Xjn @2Yn XHl\Jq"paצ(le8͈S_xH`NI; +?/\ܓg_B414ɪ[c0 ,~JyY iC=;gK/\KgYƕ^Lؾ F:Iϔэ0 ;VB/Z3k:ү>-p3[nЪ)=bXO \u[by]-%F4/O>}$mG,h~I\3;YLR;)3u&:'fbD)!cOUzp!xV24T¾A!2aǵv 2 -!eu{K0?;%a5Npg"*v/<2]CsE ܌ʛZ }~ 'M0.%o F( TMRƦZt=e=YtƢxO>.ǖs-nzju&]絝uRZl:3xcg_)ntt5J6Ⲓ9_n]jvgحka5S/{o)+}bFjݧoĶ%_xz0Ri+"eJ('r1_V +fZ + +4:C +q9`_&J $>11rح*G`粒ixWV)P~JY xjncXs~wYID PJH(+]9!A S$&N;B` {M1OsAapD`u$ s#Vʔ3vH v%tiQ:N5jJ+(U2i4>0%qǚf2< sMVcL4AUA +5?:1py)o\O$_͉H5 ˱ ;Qco%'P 霽5|ޑ8^ PӷˁH ](p0 VOќ_jļ@ TNA7R_epGʙ,gTXK`f;SP'(=#7*zRKLqI8bET9'Na9jR6з<|ދ84ɺjWhsC>_Ѥ_Ea`?U>1hh`?Zo!20y]+y`-^#\6,[^2A-^x}Qe#N-ul1Wa{d bڅ}%'"f^\u>x,J՟&WOWYY$Mvg4  9#(ND^ZlůefW,YuKl'uLcEV7lҫ1jxl0rjJT.d8q6~&!=CpoAhI@:Wi.Ѳػk%*J(_ Tu^':v"=#v4VpWq6FO`Y`wxAӎk6>JaT}@r9}[6Kh}(6foSڏXI]s}:ԛYQhNVGtk,~gKtwR*UFK4B_)^Ȭݧ۱& ¬c->F|Eia#O"OؖP1uBMO" +\Xk왴iGظxnbvT3A +_5U$R=ONFX56ْ@=z t%ɜSD),oDogMԕК=}V3=UZkeR3h= j_$iXie9,E\]FnX8=~:/4|d/]<㈎=Z b:"V>fX퉰犄x9('_f礮满q3 ݎpR,Ǟ^ZQ+=r5@8]swgb+cA\mdB.cXHhBNN$"`3K[od1Ivf5^DRt~8*ӡHX_qm^;em-o Ֆӛ&F.A݄֛TʴV2,w].ЫvA~ +݋ Ws +byTldW[o¢ag?E'riygf-usa];vDes.dc ܧUEڦ; zN 8{lPHP#)f*A~nUr{J;)#>'rC $NP@R~.~[ThWr:x'&zN(*'SQqDqy]J\O\$꼱k4].Cw旐`v^D>*CA͹0lQA1@5Kw2S $[rFTZJ_,fVДK<$`M0XXH!'JİXm +G|୧>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3923 0 obj <> endobj 3924 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv30345V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3925 0 obj <> endobj 3926 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv30346V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3927 0 obj <> endobj 3928 0 obj <> endobj 3929 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 3930 0 obj <> endobj 3931 0 obj <> endobj 3932 0 obj <> endobj 3933 0 obj <> endobj 3934 0 obj <> endobj 3935 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3936 0 obj <>stream +h;n$Ǖw~EI320&b5٢nZlJ~UEahVFKg/˴^??|ܿ<<}~޺\\M7uyZ=2<.apL/e7h|qY[=w V{| n粵Mqq3uK ᆩ0\y8o.KS@ +oC.w7O~:>Z9ZB\8wsF`.3qO4"e$ y-ܚ㵃:na Unu<gn;_ƺ5y_&fyO?}|yk#yLtKDMf@fiFZ ?\\87OO^3}SR#Ų&=nJ6OE(uI2'"(@@m?af@+pW ^g3K4f΁ű!o<%Weq6pc71k{87]wvusp8s'`~&̇u6a}sp30 i={@#<:|<Go#jwwv 뒦 +n pȈA/MhԀ퀦C$&w4x V)]|<nѫ LMbMAQx{8 n󚊽3v/pnǛ.ܛ.f" +&A/p'B5<>ꁊek@ܗIHl8H͜9m"<'\ ؃n!1_Pu?!2B n)bAu34u:lGm?Rm3ԾV*P7={DD]Gp@@!g +'юߒH@c+!%>_|~;`+ľ0785WN36V=O"aS:?IJ{ dPQ-n@]dn## W@^<3/)Sa=O[ye킣oi_tJ>Gpq9]>:s R_&z޾0w-@591OY 1.ow- .% *ɸ#0R ʫn{[ YF/tBQa!Hn\OIG +NS9RҤuK3ps* +Bd΁ȭL 2@v}8 X$}GV)Tm9\+Dт_UJf#$Kf$‰,jpj~> 1(B倊IX5{ +:.g@H5FQt\*wD,IrqֈmiwA\X~MhsFZ+(gjFaQT3,jA@(39 +BR'0m +Ișk]YH0S14IO *]ԝWp`0fMy }Qd*h<5c!U& w8>QI6Nk" $ QL/K8pUK-4ii1렠xT Nr/1툺 +oOZ.b42L!H3͂Ԓ١^*ekfWFDL4ګIe2 die1Ã. .#P# vlV0A #ӇRR*j`r5+,wS?+8BqIXvɰ?SM5V}4ֆP/3$~;u lP;?2{⯮>hnHSm^Bњ'Nګ֖ n|q?0Y#X `sp@[{Q 3xlpDow" S(+ao.'0atqJl#bۦ47ݹv6?ѱt4K5?x(6n\]mN:Rxk4y"FusEO.66ĭ/݃~zƠ +wxZ:.rƽAt]^iF[f[ +sT:Y[C^U.hjfb-1a8@6mAd+x\ C MXMP1I"3v.-}n,롡lbht&!Z-Vȷ O:0DO.(CkM Q5e9Xzu7p@!_jAJlk͖ ߙD ݙ軸$Jj^qϚ* E?Gh0f0 f8v26֙XXP,-漰cVaZ_hO^6;e'hEޢ>X(HhwDϻ…]j)jTuܙyEn]IQ $uYO}TΊZ?@js)KnovldB0V:gciB'^ 鐬2ZMD1|;)).猴o(qtlqSmumO >E6"o;G9w\|NcѠ""|;,;uz}'.Uo~U+tInή]xN>јB\Bsۦ1yh)L޴K۴d#u~TqWo |YvQ|R/7]3vLvjAVE#4=6Cz,hvNd Ë>t[An+)],t\&K78s3zkQSg#`!:cgmT!04U}d V±LA3g$њsN&.W#1$\¼s v͏'$E(EЬI'ݬd't&ZA,h ٪U[ϊ#!HU]Es%W>imNqooP=/'96JYX8y(֩ )= s9IÜ>s}-ΠdwD2䋆3βE+-Tѭqne7`z(חrhmm[g!Rb#DvBoInKW,*X|=$!e8j8M&(˶p'D^$yCL +Y/[zX6[ci@Z{EulNVYd9Uuހwp*?+O߇y8"P`\/|S~0'W+v7--]ٵ躒l 7GkZtI*L^G1婨KZ(\v%VɒrH{"\6[lM⼨.Z4TyԆQTz̹ze,x;&K28 8̘s^3UR>IPNv  4O3.1({ _k1H*d'sutMO~Wt(޺k;c{0,jV"W|Ҝe8A8UV+Ka +-D0eHk<&x2 #wHW6|x W#TAT]"~"t:)Ba@-^]/*\i #rzT] bv0~hqm oE+RL]|LqIt[S_v.O^M Z0.ʵN*񻠅oL`tAJt9`ծk&z*8ۣG :PL6ҊƎQJ[ZR+긆NH#R$?;zTl}zKSwrawf:K!nNYlW]Jҭ] &3MrMȎ,'_ xY(얯MyD)GX.-2}l:-4?#܆N{oZ ǎlCǫj NRC)WO:3q*$E_`ת4\P pYt4nz#,׺S%k (ܳW} KRQr|ݛSͿ1?0N }Ӫ{-epD}dKN% 'z\{.7 /;g.2w㉤-ǺxLy֊}Ф(X}e0kNg_M_%:9̵]",9rŸ(?mCCpICazԖ}i6cKWy~|EM}QZۂ.9)W6McZ]; 3t\v ] '~"/nϞ_iow_ye[(%2ur$I\W P_"ƍ[*es   + k{KmϠE4;1ʆPlYD]V?tS7NwL?O??|Uq&nz.$E +g +9jŽ5R>-Մz^5DiO?}|y5!À6p@pqG@Owo>ܽ>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3938 0 obj <> endobj 3939 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS45396V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3940 0 obj <> endobj 3941 0 obj <> endobj 3942 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 3943 0 obj <> endobj 3944 0 obj <> endobj 3945 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3946 0 obj <>stream +hެ[K$㌁N@k$/Xko{|.u Ih$CAƋY#k.f #x?~z\?M^.ŗO_<=<>=MOuZu9O2Ǹe4/ZOxf[OiUl-Nkoz>Wn#ȏ<〭ӿ#I@S)qSg$V|@LWs+9xaKAhSmww\,7΁ƉD[sՖgswlrS?NNs,Z/bBϫ߿5 GN׃d~[}J 3Ϡ7+7'fk|sl/?|~Wjۿä'薈K'~NiNyᗗw?~_>}|>܏~'ؼ5>A+ ݴs^2]o8eNkm>P;vhm?}a@i^CV/:]s]̰7?/ٷ$@lnЎ'ge^c6puq'>U`N:{[ۻVus"S &H3,MMFnhU:)k I~: |_or?Ӛ&w=fP ]pk r;E\ opԄpvtpCl' + D޵ 3VvUi@^m^5(t+8X 3o/>0Ź"ڞp&.VABoso闇٭ +2_rc}gu'<+_fhKqe_`M5M,ym7CkLoQ>];$&ބy-_ +N &7]\?_iiڱ*T5spH]#?v;2* v-y_tDX]p=nzæB# ++ۅ -% [ l端L 1 H]ϖE`݅%tf@Df2Ll yUӊh16s +vhN#;cqs7O'=h e p9%fp+>>n}ۍ[ ui0Ġ/z\W:W<1 ;wіU #5<!Y?dwթghCֶ*\4ԓ(\s^FB;8l9p+or}H.x6* Lj=6|Ңl4X W3m +č_AyP pdЃIT"yd҃v|{]@6"E=t9KWC< pv(Y􋎧&v\=8.ϼ糗[: +.H4q]"w]@uV¦sht+hp[Rw #Hhֻ׎6ͳY+s 8ߢFL#:dU.[8lʚ6w9%vBwvTםH$u0g44ZdU1w:Iĭ>5Kch+EdD܆Qo""hƇDw}"N2l +z"W[Q&tT$oR7N Sˤv7VSrB׼;mĹ̑"YUv͈/.B Ѩ`PY,kA:Ek Τ{ ׍\Pč9= M=a$U$o ތ (e(5^ŷ=<cpY`pk,s=Sc(g!ͽ#$˳`{D<-L4+Gq0p?̨L6M|A v$V7R`>72**1D1aܯaEP: G֢e) چ~.k$yD2.}ò+_}chϖS@7n faBFm‡}SÉҫFxܽʪG ܐRSQ3["6G +{ +,PWŘpbw4>FN-|Ŧa7OoW\.o7ކ9y{K+&X07DN |预A +*ҲZew_-IfU}KAdd!(&_n}|^WQdGv{! yíKy %J`S!? 0 vB0Хi 9 lzahY` Up!~_ Xw"l!P'(;O h/>W[[ JQP=6!A[[{!mYf:8@HT $<&LhF{uI,IѨ{tWH +Χb{(!w1Rv8q ,t J(@t!,FR[]hL'DLb:NIRӀRӀR6(5J-OlC܄QV#yDY q<p|!Pb9wѠ(P_HڄY\g\Z $.㈝WJrOǮBNFLM4l'=Fsn,Xe=N$xsO> iҙ$t%DYt`'Dmy#]l-XM4|B\6Dwb <مj <0J'%t6Jx.0EB&Wব#Vi1j/V n1 2j>!\3 0v M/t0Kj0\l@:q0R=M0W][f;x3/&̖Xxi<65 kqqJyߑ[ڽfLeU6BxUW|-+kC[s;}JD:E"@\yF;?G#1ZV@k8Z]j +b6uP/E <\`%ލ2P>k hy@ +q{-xK_@W)&*crS +J2Z42¡I666 R4*SNI\ 0߱?0>9)d8$v, K0%"a!G2*@ﴄk!dݗťmnR 5`HB(J:%AR{U&( f5n{C+7}#U,XFT 4w٧9XP; Q*4"w P>7,|Qx 8Eƌчz!XV(=8JA}.5^ pWy S9*5JL&9aOSؔ&F H2&,6*’Zxn_ng[ꤞiM+ڎFmXtr_%KeHr}U!߅)IR^WaLG6P2nb6=<[KtIÝMU7CUA@rE/~aܱmJȔ9 n(<\ύՍkr{hQߑ[Rq}WݹMO\'Ԟ{o7'r;LjUV5ߖkdT(&A톎 L&Lž|Lg Jo~Uϔ/MwK? )Ъ*mrq0ɒvmQ8!DN9TpUEۃuCxO\R0KJQM]Qvł|dy,! 5!?Sx٬Q= B .-iF,NbSp@oլyO´ +pZU[$޼ 7S~voX,|Yb& +/גm9ƞgb t֯$k'|cSwa3+= +k>hU0gd~ +)kK*[u^"hVQ(iU%gqICZE3< +%s܅ȸ~j5ulaL({R(X#]SZ6'F抪؝B73(O,@ q3Ŝ9@E ۞4%M"fȇYtL߄7Ff#`xlAm{ g?mIl[BPn$̃ 5w!)ECnwz4u +L]A$ htpR1OLsC%/ΦiWrŨw"+S.$}/ݗm^AX]Io$r>JQ[rը>JzKqD@HIuM]k̘Δ@aNɁt,t8Kj''w ,1\*$n9FYK#7(+?@mT:~ZLc5WB/HR=/:LV|!ݗ R NyV(Tԟ^n>T?F>YgV1kmNhEIfh1^39<fAjkB^VFd>vJyP"iƄ݌1 +L]<ĠZY4}z;3JL +\Db,}wiŵ.uK̓:rp*~R"8sK猻,iK%?!k ͸'BU#Ԛg]^efk}NT<6OŰz 3׭T6D}׫K)gUEZk{=[]fɌV3%Laɓ*e^+Q?񰣔-iiְvywThYdCp0sMSr8.G +<Ϸ`=]O8 t:YP|S\e6tϛ=`e^\tuG-$ +endstream endobj 3947 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3948 0 obj <> endobj 3949 0 obj <> endobj 3950 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 3951 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3952 0 obj <>stream +h[ko[_q>&Et0lŻmq(Q ydy<7IG6A"2$̐Cssqq~9Owן><׿z}yvWWgWWYnshʗ[]k3t*ګ +W8EJ9|[|7^{4V.J۬W}硢'qnҭ4b`e@gtƄӥդSok5 +8oڶ ֗5W9 (D|Դ望ŜSWڱ6I{\W Z(`ZI \ʗuM_z[J:oY{/].e3X{f(֙ˡMMmrIРFVo>7^FjAwTBUPz<@-ٷY?Cӿ\~w#>'ݪHEOBn>Ef^ Z]#ikJJٴZ^:,lfQrJ.7tNvܙV#R@rRMwc1XVi9mv/B6`V>ia9m4LAF[UC.Zn€e$d"1늠n}ֻRR O-4duk=j~F3WY#>DN7%7н&6meػdGrE<";Tcu"R iQ B29.P +ZJ1J+,kٌ,EM " +WO+D\|+'N'uDQlJk(%|9kuJBU]#PMW]= :@ǨUSE0i?o:vj˽CP-q؜ m`CUER tQ]S`z% +Enދ\i.2ˮ+Kl\:hS% +cp/t YEQl˖oG`Y>Mo/wtQ`@c#:N,{2-8TR R+{B _(@?tt:E)~ ezJVd}wjCH=Н'̕H9 E/;q]Y ^ƭ8j鍂1-['R> ʾv/ +ǻrƋ#b{ÃHv{ SΧq.5;Ʊ! d ^j.7Xjei98,G RGe_S#{1"V!gm ;53hFOţW"cԹM]Ώ3 <$u +Lgrzm0\B2uq +}tV6x5cRy)٩~S^ЩzOdU:q|q)ChGn3l@B6Fxw*PfNANB9 *j"Z;21Ղ楜 <O;DOSD*SD [o|TYW_[baFredGw}uw+^[ͮݵ]@~MD~Ř[ʭX 3'rx +8rfx/TFqYxTGAޫ WC^Cđ_ӗyWw%xl KIåIQd/}y̟˫gxooo hlmÏoo oolPؕ@@kN%ל A6&υwͯo6~Mח͛^W/^_bNGԀK8r?3G߳xQZ9__|ea3SA.$SyT|tApOwn't7 x:4pz{w)]+7T^_͛N.(肢.PF(: ;V"'H;q䒄퇝6?Rӌ4Х] P2YT,͏|K udWA 6UAL,=Q9DŽ6ǷаeS< ؽ""33 Xp F^|.^[';jtp煸X @_? lCm3s[.w 8h,.aR┦ux +.pua8 vw3_ +Wx[<`m؟*-e,ci12i9XHGxYbOB%eHlW'-fl9"T[@}A%!35 px8TUj_p<[إ> > +; S>1}eG6Csp.QU)!|ǣWJJo) gvt(46,4j (:Zs0X(/RRD1'" +>+ɷ6LO=d 鐽Zq2,3^3C Aܩ@=pN|8 |:kxfRF\8/dPK݄;c;įxVb;^@ x9 +uhҎUly%p,QG}qF' / +ju^zI1<g(Y̜<<]\Oa%m2ݢ}Tmi4| 8p(f`@vW']eEv4ߪژJRb怯ƹBo`'ҧr|/ʼ+*&l(;?F vk?Z#GcH_Xߟvx4MWMx>K$3\,rȃnWrؤKuO%k{?x#O'=:$:_4YNz1K/Jŧ)EuO/@zQQf@W~*ĽE8uqaa~9C^w8ڈP<&#.Nf:^4_/tyhf$*"X6[*>7jPNɋqfԾ̙>۟Ox}_cq.'rʦ9"7NĖn$b4 +O^27<[DzcF2'p:dq#OC|&D<"҉Y?,4PAP{*[41ڣCb!۰T[x)bMzV[擉 S OTSpqϘחdbB|qޭ hcfa%\O]Ooi1.禜99զ8u;:oޏ)y<țJ;sB<;DWX'Ġ-a@EU8KtyH|Q_چ6=ɓ:˘jܟrλflL߫mwr.T ےI&[‰JCb$AEeൺ d 0g djJbDE[ށ +endstream endobj 3953 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3954 0 obj <> endobj 3955 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv45362V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3956 0 obj <> endobj 3957 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv45363V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3958 0 obj <> endobj 3959 0 obj <> endobj 3960 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 3961 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3962 0 obj <>stream +h޴[s7rοb>RGjktRWs1qj$m^HGJ׍`$W]f@^yxs}r߶?o?|lǓ?>?ίOb's]1Bww'd !MwCדBh?G +oeOàmcj˰Y#tzRkM nxgWe|7 kBs\ 2 &d%mbxS .}_V`h2R_+6K׽lp/x(a:oOH:^ccNO2wLG5z߀%ZBG +KpN%CˆFoN&t*oUOwWμ?0M04u\U! n[_q߯n>~xp0G^D#`wiͲw1;Y)h:֖655U/ҽZ>jEbCK6 oOo4%s6(AmҘFR&6 d蝉 f7XJ+ JjUN & qTabBx<@T4qMi2kޚԐܠ5o{Q3'G?̧h; yߵl)t17\HM4iu`6QR-D^2 ڴR-'}ӊ@/R[ +p0ܔD+Dw & ^M0k&S[.t]!#DycJQ(muI[W֥jtlIaF*mh¼DMiP;9MƆDViGٷ"cL +`,@PEb]YmJ>RT*|9kSq_J|` Fgc/Y 'AgȑC6h$E h8 E3  1RN]Bj'uӵįoؚ4-% SȩJ'F4䵍6҂|^pES"j檕"}Wy62Tô2ݜ&9 +6A ]('1ivސU47~j7G^>6+SrD"'!tDgm/ ѫCt|!i,1(Hg('20#H:@{tT?HX0wN<|npdzߟK36鯝u?1.鬑F *D\>f@4cE @iF ?J@ ;D˨~Yǿa-Xx7GiۓN߼=ޟHNЏ>=%NyKIۢtZ3+{yҸ9MZ!RBdT>zxpYXR΅;xç7W`uH';l6E}篲w )@ӳ۫eG{}f\,1LaFjݥ}T0 ;)¼=y_; F8)/22ݺId*x6\ b0%Y$+b,(BYO A\ {E c'T1tbCHPe:2ZDQvDQ2%TpXAaYMLjTJS% 2 -LVkQ3rQE#TA U@Wo2YFjDRqDOʅ^&*Ffk ±(gZԈj3[>0O1 +Ri4/ k,xi(mG /a 6ЀFHB/2`_>8Rj0O B!~_gXi:8 U!!z=!oKIτP7E' C#0 (F_HOx_b~AirDOgN #`'(AQtј1#LúI3d>)f"ˢiC^ؽ\Έ*=gГ|T4>x$AyEFzwe^@PSQT7OCuA T8Dg3 Mx'=WH%!"I?Π8>ʠQ@xA{L&2cG3( r|9tC4t2Qu4j7=łފ.X>4-X$%%}902,"QY:H7*Mvn).K̘4 _6Q˶4I-"..|6ZEDa 0@n%onh?kJH ,.ڷ8'tvTkLvޥ q+MچQjB"ZI%Ek@ RWTIR}-yRaH຅sI!DF[{f: +$l{ ..'b4C @ .=# Aُ!D뾀NHEnZTUGF\_Xaw8f%@5y< K̂8 *g2nm-7Α?IݪKS~_> Xש89U~@2*)iSŘѕ_ ǛXڕ/.4o0ǰy+߱цu.Jmy(un=/ y\xEE6%mX/jO˵&*˂=l*i:`M at9gpC09=~~z#h諼;Dž;wZA}l~bυ}k8IK]X$g>H \= 8<qeÞmgؠ;(IZ>A93iCTvE rsO+A ݌ t43Km/ +I ҕnI[~>wOjD8RmRkirNetLrrʧo +㭂B~97u*BT +'~π hUOm겕yzAG֩0⍑U$cE}tj,5˳@&, G`ڰIDV +<-xtS,:$??\=eK}Dӣ|O>h*ؾ$IGz,3Ts=5ƜꉚutȍblRǘXX=*Z*`M/6 qFȈl(΍0izRL" }t*>c*㵊V˴)xJZe룴`hm2kU\RDf'2M43 c%ԧ|ƑTc:ZG] rZS)Yqa) +d !G7Y)z*Q!楊DF;̓4%"4 0# +endstream endobj 3963 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3964 0 obj <> endobj 3965 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv45364V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3966 0 obj <> endobj 3967 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv45365V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3968 0 obj <> endobj 3969 0 obj <> endobj 3970 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 3971 0 obj <> endobj 3972 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3973 0 obj <>stream +hތ;ndGrw~; cQ(3@i>ht(Y- +$͖<_qc!-2c ]p|Yv|߽vWn颮5-GʫKKa,/Vc.~A31~ ļ;ǎi,[];ڒ[ 6~ ci4XuEa7372dX~eDp_ ق| qK[Z벆\kY.NB8MLs+4g YD{"6Br[[ȴ0F83t۶A\9" > ujZRZ +HbjOr]~A;_d5EWn 1c[a_@{qyWᄂ轚,q/d/GX@V%:te9tdAK'%:!$ߘ86hFVG@c@iPz?OAV)t"u5u%`FeIh~)7YScu!Wut!g t/ t𡙳~YqcM%7Xc6ݲ6E+]pMBؕ[5Y~ݢШQSJ32J7M>i 84(حZn9'`JaUZxz>URgLņ[w!P1kzG:uBځpEʼn>ُZ],'T6$&3eAuDott12&ꢧB ]gi άQ_pMvɥ FQ!/ޕF.G-_Q=F p0]JyKEFHOSIlQ5y*NAńnesCZzL/$>\DdMnViuz" V"wՕK(5#ihUQka3UӆZ2aݔ!nI*}> + (9Q}0S e-{{ +pPz0 #< J ^P ,f>e쫞&ɮ;\"`y ; H J{-) ͰRQӬ 9D10ITΠln ze|rY7 ~d *H +,ԗHOn$I.$IW%A{,;~AEia^+|e_4ޖEW2jP`Lq < +5_u 3(ii<0/ f4Tx*DYm$s +C>> L̡H6$eF _Vޡ.&h ><1e Ǟ[#gi(D%<ǿ-A +Ld.=v0˲XvU +qí\ó(~Z)k7yЖpLjL.[.9MT%0H/q՛rw^IՓs.'UjOKiƞEqZtřvCJ :5ZG?iRQhc 6wR_zC{F1D;=|qxUUXB?xz,8o^n3|{o^ՁKh, wSk꾆q|ވKtk{;tSC xŬN twj_W1}"P(pɤfv(ScYHf#jړ?l +^qp|N*m77׷ܴz Zmɐ~vuvJ/;;3)hK5%vm$iM~%4TuѬ9*<0Ru? ’|-դƢw1 q6K׿\`Ӳƌ32( EltYZnTL)]op*+m!b&7m0Q zπ%wk4|X^Љg,.6r: &YjdrĶ9|k))τqgH9u0|۽|cCX?oqChctic%#c=q RPGmr/wޠ>?t!X,R>B> +YJZBA D5?Vj|e0"5d4'z|_$Rl*@h.7 ~=ţ./g9{pRB_|ŏs !R)k߫qN;pl8$K@7SN3w|&>46BMsG Ȁ?S@ڈERa{O z<3JA8)|GE.~tvP dRzИ[${ #"i=0ќhfK( X USX9a r*2+x6+x#}ǒ_:s<b j@aGu2qPMo#hKLl, 02-ST] +endstream endobj 3974 0 obj <>stream +hj`L@ ` +endstream endobj 3975 0 obj <>stream +h8ktU߽ȳ)t$ yNI!ovy` Y,f`b803(*ٱ:q8:ΞYϰqGEr\U~Ui"q9{Ȃpʸ4$,b,$<('`D'yXv`-(AJQC aGq8 ?C*X@nuІ9lqxlx+CzR}]ʁ"X kS{i5MݪQ s08_:*ϲ/ԍqCc4 Єمh88;̡п'I*} uViN~νa%5<}Y7i46| X,U߭(/+-syܜY;IOKMINJLg% +c@MwIJKK5^v}H(iH.LiiAˮYZ,-Ӗ(UBe~d% ,SR +t& =$[JURK)C=>ˊ"#:oD~""DJI$M(ј&[mJlRPXݩ48ltə:ܡ\Ěu(:EHt`ț e;k +s;qfkUX<αvm:Rz%vKʡZ;8zC*$Fw9 +م!%m&ڬmĵ^Rfɵro &ͧ@i,-2i6MJut[:|""qS Ć NtsNWhpG(GL2ΩT뼥>N^J'H23kr_3 pW>)q%Lg>kE+fms;󆂴F0J|Ќu; &{@FiqLtTKL$4#4.w ]1k/֘4SNmeC\gpSi]Rf9X: S4Zܔk5pg7ugPqW"+Fҩa2/UKG_T3| 沨}1C6 =- Ӷ1něv%U Cc\R:-8INpÎQQW[Ft- t$[2 u>9w^q%}UoNso௼|\DϿn 1Xb(l'!u.7CLUQހp! AB@p",G؆Bg{ѷR0_~|q<q ېK , /䣠L~;$s52 h1SP.HܗρZZwp z e~{ n<52 KX,ӧ E܏qNf NĽhӈf/z`SX] Β0shzJ>V`0@ p]\9`l!tiGo߅qja}bLu?]25XUx8^)B BEHB$ېo0G!ѷck{u 0O/c̳Zscfv4\519>[пv@Wat}ahIزh$<}W}±Œ -;9Y"M(ʎϨdKE_N;R3E8]8c'B!] ͕@R.s|h /L0$g,e._/ o ƋF1F#DQ4HE;v F 8tH^;*Dfvjo%veI&Ix(vצ(f{PP[]8:Q=Fjwvkq Dݵ?=NHN+~C +毞폽yd- ߸uch-emecլ(syPn}EӞx`^v)Fn P ,䂰3LH#aB Y=aCz{6 }}xxR{WZѿER]M@@ͨOj,z7{7 y;5,kj6 o 0  Eh^a0l%Arz7{u %}_UH58RVt l9/b/a M {!n9 G-a RnvF 5P+XUK=sE]S׷CUuJ$F`#^ +endstream endobj 3976 0 obj <> endobj 3977 0 obj <>/CIDToGIDMap/Identity/DW 1000/FontDescriptor 3976 0 R/Subtype/CIDFontType2/Type/Font/W[166[713]]>> endobj 3978 0 obj <>stream +hTN <ڨ]M0nl´X Sz M!3>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3980 0 obj <> endobj 3981 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31928V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3982 0 obj <> endobj 3983 0 obj <> endobj 3984 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 3985 0 obj <> endobj 3986 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3987 0 obj <>stream +h;nǕ~ڗࢁXƃqDL<\^H ltbόG ]]Ki^0??n?Wo^][3}˳K3LƤbVk7]~8g;F?khx 4diBPxl39 +B(/,| +D&hrF#|JkrY ƫ#6O{ kcևc|2l0,D8yS +~Rƙ䤙/πImLuITJ>]ݜxЫb>G(q9O}za-Jel:u@ꖟ4_IF'Ao-#xÇ Alz;B=敻O2݃fFPpfvv;_ç x9N3(:NxGTEHHpZ'NƎƎVdNy kK0JgA e:pVG*--7! q xbCCX:wIV/ `5'`ogJgeM52 Z; VE2mPlCX:`Sy`h<)oXVA`h_&M`yߍjP. jFE""CvV0(ѐ@UΓFAނZcd]thh0*@ű!Р@%>!G߶[ c*^OVFF8l䑛~U8h3|T _+}~j^ASt18ږE]IqLlI$@챖W"D/[W,MueMAP92gG~Yuȶaꏘʎ:x:]PG aF2.7\z62s^Et̀v[! @W ARh/DzP] +2ț ܊|WlD1i6:;,HgG\yj,.ȝp3QTw.4H0 !d1Mk &O[ZjMC$ghS_6VgDq4_'? BhUzVPQyĿqG6fUDHtkINpeqzC^_hIK[D\ ȼWmEWY@!i2\Mb լQ#'ɼȾwT-Νz%8<#,n7X>Yz (G^ب٣i_bvY[(x 4zIMx[iՙ~RöRkrx򁕪1Vs}ߊP6 5!s6KUM|Q&@Y ]!jB5.ǁG uA\y_]\;̎/GBv,".yڒhw2o+SꑹUe ƲRc%Ceƽ}r^4<8Ρ.8ֈ,7\'7c3n`/7ʋ>\ Y-6cCUۥ|{!$vYǐ >{y}&Jڹ~BG L+k8^Ԃ)N c~;vo 7aumi(~uЬ#I>QVxt3kŞvGxg]aKc5MʐW E}ܼ$PnB]-X!v'uȃ+0.8eMxhù\bQ[U:+ +x^;,H@–#6Ce o@m{z=ٮċo>9*AJR52ttˑIcdI9L +tOJ$> <scdmYF`,Wn#MwFL3( y?A}C8簉q+pQBeWV@mntJ~+}xˤow{Lgd[M n).nB + +eҨ_kEŠD`C_T(MMwga"0 P_a@B/F&1"&$zØcL@z(\y,6gߢ û,&j,?lLjC&D) )v4' aCi$v}fMMfkpUyl'vPc+ImGч +pP}L?O`GGʀ8bVs{sty44y4er?=|Ax䎜PR|5bdI~GbA6 JOh6vh=OAP 톻9zx/侾B*= f`;mۮ]6~EI=15=.$"u"R6.m̭{ۻZySݮe"}DzW= KJX gWDIqϯÃY.okoi-"MCkMCx, ̯w ) ח^(m-+'UEp0ggŽX>S-g6 cdBՔ6 膴aFѩxl %s?kGF- 奧e0w3')1(}]ef޶'vgB_EK@FO-W-M-6 }ƳDo }~"Nm xPW=f.gvN,!aCCt/gaX qlO %z?.ҧ~ϣe7l;䂉LpYg1k|qjx2yIdu){ .kZ8op?uKgqAd[Ib;noLJiv߃D4U ojrV{NB(Nwɂ7<2I^\¿0&owViyn=ҷڏ{}.J=)wyǯ|7usIXl!mm7e>5z'ȸ +endstream endobj 3988 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3989 0 obj <> endobj 3990 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31929V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3991 0 obj <> endobj 3992 0 obj <> endobj 3993 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 3994 0 obj <> endobj 3995 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 3996 0 obj <>stream +hެ;َGH.ʫ* xw`>‚&[\$m?}άbK UygdDd\tvBu'};TęW.طcc3pPR<|p85o# Lt]D+<Z@fS뛕԰zyq8~z:'Xsm7FGԋC7;@R&y< H6!4wRTTKI+1 Pm|wcu=MؗZ2Lz\c5Xz^3J~hǘ3\n8Z `L.-Xx+7T.ЮfCN}`}*̇uVav)rQ4uwPtX!o.5#Ȼ*:#z"#!xBe h6D")`2@+pP-"AwT6|<뮃7b7d:D$V= +o w4X #~s;(uϽ=Bu〈&Aw=>6j(lEǨOzpzk@+!}ڲQޣHU^zC&ĻЎ ؃n!1 >"2SG n) iuXZ: <8rgZ2Uy^o 5?awu=UFáΏp|-Ht@c-!%>Y >@া$`K5UD+9nhVb3 ChKm-2b:'Յ<L UD ȼ~ҽy-Zײ+ :PøZO)2> Qڌ;0+ݕQ?A{` !m'2׌Z'a[3߰e[J/wfq%ۀ\Ds<#<%}5]CA+&)' ?ɉ+r+ %KFxw @E,֑n@-!W9lkv4lْifX6[&Gs:eppgulZfv/l#EcSMiM_ؠKqGk:لпA%@ W,xIa0*ט`Aa10vɀ.NI(0NmKrʖt /cԖ`}n0W!k` n ߔ7q]X +Zdة-L ].ҳ31v*pX [oMuar%Wqh?elQv +Mɸ?7Ɋsho!c,_]FT\{Ǖˉ* +PA=.*Rέˌ+!mt"YS@ݵ!"Mt7Woho*( + h2A@6 +W4,^uE4(?SICLJJy̕dzrȠ uP![!!DcN 0YšY +;9fL٬` `'x[~?،$Mc*9]BqZG*ɴ,TXkrHwbhBj m2Km^-z27WɎTEm}z6٦h4(= fw`orDNfeTO\]bg69^\ 0CWyW^1:R4 ҟ"ZXz~@8gΤn.b>Qq&8]gW\uCWqiRmζ2BUի&em Lk-`TbՒbjAcmdÃ̙"^Mzͱ[ +.,eRmٚ\jkZJ嶓ŋH(bQt?[m"tƙvX9L.~o-'/?aX@qDMiGЋ+lwl{w}=~^Fdx|^[Aja(+p}S> fI83y9F @@8oLJYǏ gbyi6W2t~ORX>/(zTQ>?~?~WXiK<Ӟ>7J;*O#a +wmfOyD<~˳a@j,\oF kB^.[OB==gY{w,ͫBq0껵RWA tYwW<0gT7:u6'ls(&W'1sTkcG֩^BLX0n5 K^&,j@ !YJ׻=| 1لtۯ {[3(gkᎲ!،mZ,,g:J,@k|f|PU D'6cGQӺެ߰RJM;$z;MQ-xHl8KޙfR- K.>@:m>-Dfpa)q)GRK?_ByCꈹ +sz,I@9>J ]r^t<ܿx-'"vj+b PV  l`OU`s;i[4hFEoWv$nG*޿ GeXQ䕶5ǃX7אppӀg!jDk( F TZQ+& &CCN>7?|:<07)Zz#Ea9 8A 9`e"~vC^287n9t:xPHUϫ-?(Kd]ϺX)jzb3ifX8Z|-ksd oڜ5ǭf.2Dy3|߽'Пo!o:SI5R0ցȅ>R`.L!{Ԧq-L=L8`h¢Lj8o'~?Odx!$0W_/Ux!Q/mR&Y$I_ 50G ajĔcWjfxUm5:9Ş.%!&dQl Mi֝6%d>I_Mf=KF# &yfic Thԟ+M^rK/!'-^}@ 03^WdYjεc)7u`7W-fx'W]+P9sĺOs뵼 \OFtq_]g) no K&h: /kBDL/l"E~LfPgaLe' IF.YLi|*.BS{atdF}=Xo#tf|LDu@(]0J$Dҡ"g3ef%lw~}"x ٫^ jn(Y$ow7ʹ;[b*!cWk(8M_8̊*^^ {A1"[#b9 Rx0f ^R/)'%X%z{*7iHlk +8q$Ov x$K`-b9Hε2|P[ƪ'NǎeS4hryMNd2NY{-?;+|3^WdKp9kt_ؽ9h9ZshNPfU:t&(w% KLUhPK,qWU4pn lYe%uE'sJpXkqEIm7* [Ԗ/=j.E|}Ѥw@Zk^H&{qZDdN3PzG?yE;L?d2x.ouo&C$* [pu +endstream endobj 3997 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3998 0 obj <> endobj 3999 0 obj <> endobj 4000 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 4001 0 obj <> endobj 4002 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4003 0 obj <>stream +h;nɑzb坹m`5}!eh-#7"3"2%[{@_]?_o>_\ᕙ|t}Q48e~qezs/-3 &ck]8C;6393fd w[?y-w.6N)vj||Ƿ#}SbRpD&f*e.s(~2mWv6!P{gX-?//`LGg#Ku: 0ն>^b[J6gi 苼] \og̜,ٚXָ Zw2s9")܄&*2x5Lmfo-<|8c=#T<0!,('f@]풝B3-V,fR6uR@:x $oDhGЊRRksm Hk %>IGV^_TbsI^;v\,6D#BZ۶Znb6%!\FKS4<,A>~2d:藉jm]mHHWDNK"Zx1 ÛF?ȸa*B ELCöv`:]ѭi*sVZh𰻴+r-^Få\=k_ˆ%kkBϋHl*bh5,l5bF8; ɶTNRT8IONijzgHTAd VGʦu\T+{eU:AC#킚Bkfx>"+W=4TJ3C3:(4jAb +y 6( < h}Iz\ԓz&~ @Ox)8X{]|x`m 4<;#e;$ܵ`WlXՕUX({92vG\'fC2,`ef/HG#xF?nA#%vwxoG 0ݨB~ՈKP@7tVWfW=a8!JmnzQ'x} M} ڝI٫i 腧n IJyIeQ$ئ}x_'*Qaϸnq-Թi3X0<ڝ +hhT 'oKuLdq1&Ӟd}hhIWb}C31N9{Y @Jw5=fU$I_/+Q%ާn_;N"@mYvDC639oȆ5s㕣E+־ V04èp8nۭ!!3۲hWV`ۄqmxG_ՍIMF s=5 +dvE$Ir`1RKN+lq+~j .grb٠O`Hf=oǢ+RuKuvk_bb4碝 M>е{wՇ Gza !!}Jծ*Jrz)b矚4O_Hsz%Na|FRVʂ%`;}2xS/s=ͫeR[r#h۽RcE)ZnS\J9 +JܬrZG90D +hxe=So6H!#vk#ϾOXʨ"#C୚ &qW5ROlcy1-Ţ$g#ƶ4ϗLbk}&xIdc8LHeQqD ʳHF} D=~L6ewh)r^ȅ*/wgǰKREjzAK-0bXj/ :XpEC +2Z,=f]ce$(Q /*.uȅh¬=a¡&0dOUaCNRɘdYWzkGq,;-5jC*ꅈ͉:V ky$D_78%jRY"Rb#VzOeV1*kdq%|t&Y[*8bo:01'E{]n: KC=h+]du*x6ͨm͝2+id|)讐Ɍ .UvUIug׻uhS~9%e^ҿAz*X>QBUvtf2y{qT5HjifO/2J%vU(k(6Wew(Úџk}jFzYg/0TZ]kUqfc{ )}@8(]/tPqLM6vF򨡽# 5uMG%'v&pEES5o2igߥ~S?NNXC'*3]O|j@Č 6q@3wI_w#5w'_`>-ӣ/0sIgiT?]BH+?g5_T4P|ϰ߀شBY=<g_N<-mG}i~~awRO9J +IW?LN ٖiOǻ_n1}pǻ_~F4纟) .#~#Wx͛:z¯˳}/CWW}H_.ĂKf6 cɳAOܑ8J_m9RWcyv=s :X`W8!;(E(|SSMsybNZ|:ue lN`,((0 Pž|.B1e +Y`rk]_ރR +PZL3ȌoYy`!XZ}{$(1=욂R[ވ<ܼҧٖq3|.ݝ ~H-y=%qvq M"ș{SdU~vIsx4V<8ib`+. y<2@ą)xt.VE2摸 fG8&9k<y 5A>N.>1C?-شOb `١8k3XK튇>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4005 0 obj <> endobj 4006 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS33700V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4007 0 obj <> endobj 4008 0 obj <> endobj 4009 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 4010 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4011 0 obj <>stream +h[[oǕ~a6W-I^8uDx? C / +9}gsNUu4E;B꺜Ͼz\7g~y_WݏO'89Н.OR|7|B.NǓ~{Ahapj,~55~+W\XasݬuQXZ_bBK/#{4gj˞$J'rtsS[R;荈0e\`%i80>4Ay]_CNl}btuJˀw]wU0#ty,\֩AL\enkٟOW7wͦ{g|y!Yܳab.d B`zlǬnspp[ʹ^j[ h~ +]6{e=5OG垈JiۺFXڃ5 ClmP60&=@oT4^+m z-hHS }{Od!I|kK{S;+ ©b -=x"zk#ÈSr޷F> Kw4|&yf#f0:7Haށ +2KAI^Hh`Z^q+̥z^CX B׎iK qX^Mi(AZziIR BHgێIGһJzpqʃhi?t6˺r$T1o,d>JM6=%oo_}$g lU䳛 XK$&Aa`$n,[DQfA2*S<:58MOk_7gg]UUцvBk3W1EC d03XOYbf #PfU+ɬcamI}ёߢtٔtdogVN,+ pSkLVJh +E(gXJU\MeB. v JNBUwvNJ ؼ-M[,2v$9e.m=*BvFH BCI*+>rȩM/] Kܪy7qJM!rkD)*NYRhX]& 6ri/VJKD`G"ZޥF8u6Hѭ[6'f-xuDMP@}c9?Bccٚ.WBh,U6if Q bףN)mL%k-eF6TUJDG*a%Zȫꞙм]&81TmX;1bI̜6CbBFxıIʪyOϟ7\qΦ \3M2`T0YvHժ**Zf[ K3 t2pI*Sm 2'Z,ur*ꑐ5vgj&&<5ixM!-I$ Ml'9agT6ƀ0#LżI%"*1cSnUQ%ɦԘ'4eQ4V_R6 5ڣ; _KtzL)ئNa;7^abWK$̈]д9&ĘA;Cś k:'OчV5voG[jZ~fR0&1c[crfk6G+?_sZrAIͭWEgtj3iKA2#֩9s/F \Yl1FӲe1c0Ň=%{HD"mlci S&xX<(WjCjPEͯLv_S6ʞ0\i@Q%]5cY2aa:F̯>k_:_[T/թ[R +RBGX9WC*ϩ-Z'Y쌯ౠ=_к`˱ZO|'k_SF\TqO)>%DP˂U @i$w+/I"R\sn.zmdBxp2=EsjnՖ_W6yōbY͐I BRULzB/s)Cc{*$6=~aӥ ~qqJ1mzx~Z?uiwJG-t-?n}>>Ez)Ad?&K)L\y>;N]mǮK~L~iͺ/?݇p +P/.;MLBh5u*w̯3G7İm9*-][K/âہY<aS/v.~W_ TOU";/ ވz'>@UC<{aCww#濷Cp|am´V4ni[8Cdz]'c /'.vOOlzɖݓ%!MO[EbJDǡwtfHZ̾,-^}^D+|E]0htP38%u +D~1}\!T\]s ooSYy?/ܙmX芮kR& 1=a<:ٝ@rIқΫK&OnO}v˨{CWlDZtE7k}Hc}~4t,Ih"wx]7LInG@=y-(D$&`3@5`0Uhp{|.ovBe≍ Iupl|~ޣ,Dca >{GcVM$X|uu}z:qqv1T'\||b +HgI  $R݇z1qOwp=2 2 +\"^r J{$[ &:CKt\w}5on "/4Hl<bG, ʢz!잾'#ѣ p)Pm Sء܎="cץ1OƀޛIO7^g9m!&|7_*77R( %2A42a+TYF1 )  ' s玥q39iOsZ!#^dfjF~9B,b D!~A?h: ͡o2~4;G;dy-BBxx$`H)r-7q~V0]@٦C V7gg#{ .eC?䌞2Iuĉp\yj;\ӯu|;)ےg'sv, ̫q?m Ey!Ga`ywźU=[~RC4 n7bL?uc#FEc7)h[Eq|fUeۚA7/N4P䎾ڢOxnp?H+te2?(RꟅUp敖sf~LJD}Wh$1ˀB8a2]os)5WY@&`a]*,a|pX)5}|ea&P=ƕTxxgp>NJPGo۟>QcHLW^ ќ-K0W?]-xȘA@Mƭ\,00ۇ`?8 xLܜh!A(Rʇz:r%o~?O0rK[QÞDR[Շ0vpU\˕YVzxZ^*aFiz15S3vH>\.1|6k2}TMASP e-WV@^0m64;=?A/t +endstream endobj 4012 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4013 0 obj <> endobj 4014 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv62466V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4015 0 obj <> endobj 4016 0 obj <> endobj 4017 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 4018 0 obj <> endobj 4019 0 obj <> endobj 4020 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4021 0 obj <>stream +h;َ#qȖ;S fV6rQg͟qDFDb,=#2#q? n{{;?=n{߾QWUnWi_CFk'3ܾWqnкշi2&TخݨWElMv*n*zƄ#VL.mu[yGW3c2>!D9v;:-)_8dX|/94)@Ƅq<`a phx_^!'=QqI) )pub${~LzG?f:bN/pQ;X.k?pjA&7i@hnkiUp~@+,z?D5YܚfԿfx,.c knkx׫?@?zzxzw8=gX??)Y Ç=LՐj%;dimrs^k3Zk=&e)**a㨬q:O'Dl{ +k['kp5=yZJ:҆*ަ*ko4Q+Z7`j86A fy4a>k R<:K x!G GπGxB|kCy0OSrrΔn  iȌt󙊸J܄F2M&TH*O6Eh-r+6˄}ڮ_r'8>`q;'aI*p\#mz1^`e٬hV.r-vɷ9n | [C`U _sm@`& ԛb^g`Le +bTX28Qq4cck]C26K; e2GZYU'nw29|-^ط1"N̙(S"Ύf2s$6nsE!$O29U n~[$=7 n mjۆ_`5 ]1/oe}qmz +1 F@oo4;ROYgᕲûk_u5DѓsƴHLK).i5GRw,c&ϰI}w=ϝi^j9xL-G,)ϡ⊂Z>:c+>]3;),ME^V +,RΏ_Hl: j-d81 M6/WB[ԩnB8_Tɬ" ncC 8k]<O8՗8HU`.| 5lpbEGy(2c*FLxJe*TU <[w0ECGE`Uc:3 BR$a2~޴N}+=nMbwk[jKʢ4ѣIVe *T`{ĦҞ[P*nK>[g + DR3*eAձ >4SL/$O_̃cv/ *GmEI"b|^EDCĂ$_No:ӕf(_95y/T(W %7O&&gc~&Uklɺ<PT3böD+uonq`T1`!ziږ]"SSLrKo<>.wA:GDOz:#kؗʭ2bbiR K|p*Q2!J_ >iklT|_S!Ͳ PG6DP~X6RXW2V)0cT0#*~[aj6Aߔ`jR)QmAQ_dou޸a׃RV`k^uvPֱ+cCTMRiQ`s# p+:a +lG=cϮZx0ucW|6֏^jm[ qzKYЅ%2dLwLlqFԭTб-)_Q6rM-;A_X4thE':Hq4ZZ^T Vt\kLi}}=i!^J;g9vN>^.A%-U7;~>Y81hkڨ1yJLsVu͚si5. Jڍi +wjR֐ދ-ґ+,a ,|2-\6ёktX׊rzR/AkY<).yHROEQ8nE[tB20@jTr/vakz{_>ǷõdÞ(>{z;}wvpWq&!j}&6[?kTVr}*fGkCL%Nk|x81wh3g8r?<j~kO=C嫅ivNrf^7ls `-րYxk/R;7mT)^y;U!(2Zf{S˜AOWls2g8k-ZOe%s5-\7!Dṵ tC" Rsw *s 7U&.1csU96/F +;NWFP_S9&0 Rg.s!ڧBxBl|K6̓^XûvnYغ\y\)Ýilx4s(DR`7-{\ 㜩e ݧ엨rK43ߛ/P&T/ΫAhqܭiAY+x{ޑ5MjHp^ i1'ҍi11( `jΩGss745SrF2鼓=岻ٵ/\R3X.|k08g|kv[L8N6^e K=Y@S#|[F`tzt.'$p:|o+V&u8〿Am`~h[{R^g0 Ʃzϲ l@Z|S 1p. $EV\*6RvoB_#4Ƒcim!8,ո3>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4023 0 obj <> endobj 4024 0 obj <> endobj 4025 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 4026 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4027 0 obj <>stream +h[Io\GW#A=ؒ{Ѝ1U"=2hiZm?}ȥH 5 h=32on~u^o7&8.8qUm2ҭE: +h]j/ktӉ>vӲs^VsNۋJҎ LҼR;ddbVZ(MDبv/"rZU)ޥ_*'&˥|8F,|p9iIyMn1 Z_)^;ۇ1{ԁZ9`kC-^ALj]-Q3Zqq߷@/ݿ{ۇo{}CX@Ue{.|8` AЋ7XǺ~Ĩg0kZ\\6wƮۭFܪ'h:UәUQu&a n.;/s9BL&٥Vr}RrvZgZ\6z -X 4o"OM"c^'E^ɭ])h.ЙV È׫Uw߈ƙS aGhf ygb\`6j(Fkjlix:f)(iQ k2nR\q(e쯌VzqX´c3r[Ei(ʱMi d_.V# !ҫw _mj_u!o%Ǩ;RYh/=>Nmb71Iwaͱ@PUa t.Q +gyϜrjufQI8KgWmK>ա"Lz+3w ơ,oe˝8>_o>d4UxͬHdٔ dƳM}QHig fqA5N' t.iikBZz2bCyxjRF 0O\^g٨fѿzy嵪]^zsB(&!TQi|=ǣg)9Ibv$A;0mu,hj˼k]IJO0>eû '^s M0WeiBEx*`d*ȍh^lZڪZV͢}6zaszQy*v~a_srJdxIvRcD2[ WM`b xzћO«%ŝe[rm"  .e"ئB+T_2/NM |.TuWG q6v*M&fOvEV+u1TUXSGr: }UeEANPiakq j<#Vq7gD@,WbqlQצWWFm,ZYı{fjҷ-Wq"#ܤ%}rECaԝڵ؎Z]T`̈́Vyxbܝ|]b>gw7^b!D=Uɖu=M:RMQק+6h ki)) Vh0[)i'k/"E7nbwPDQPA푦)YI+VNWp N"6_LR]-smM8uF3 qV_y!Os;LX'Z#uҁRAITerM~MO\f]9,PGk]!ovcs SPq]vpm(ty@wyVkt‡T6d WY|ŦNK]0cxb+ ZO252 лlޏQx^W p8:d;#F3Hp%<=`- eP)԰uWG#x~8,}4k*wv [X8Tc&MQ8D=* AZdM(CO'q pT4L-4 `(qHl!dݘ7'n2ede_dܜ~2]ŏ#1$2ltJvcZv(LBZҙJ{S&Azgu"`atnIooJzYՈ_@ntst'iQz=Fm;qxs.J|=H^1ԭ;9}?>b +:{<Ⱕ0w, `/ؠ0@Í&3<yY>jPaf1n-.{5Zb dx:UA4G7ZfCQDNk;c +2%b)zC6a/ӢbJ5ICdea}RGt.n8snxɃsٝ $XsIф<\@}Fߨأ+%HBiAQ@<ׯ.e-8aZφZe_!~kH +EϿƱo?.b)3Pf6h_]% +zEY[i}*Hi9ǂ?d"?fXG} + 8Bѻ7zP MoVelT`? ,&I2Kˮyfhp:aqS"Ҟ2EYl.q A[Hyǖ0"T-pڲF2vezVhљ < \ :h|zWˀl q?d@bcn(==(ʋ3q} cH0ti,`($ISjn]w%ZȊ$KGG-hbm)Lh%JjA)Ns}7OWՕkg-ķK"*ްhe&rc 䋏r0kNO};s K2$?_5'Sa;,81 G%)IiB N! W߰s +ſ7d1;rR W*COl 9ͤ%^۳-X_JqEgr4:ƞ{)}'?12>rM aiVz ya[hC,SӷNj7 >~ #Α]{_7E4$6 GbjQAH(GnmZ3+s9Q5*#I-3YVhcPO>g?/7- +endstream endobj 4028 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4029 0 obj <> endobj 4030 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv45367V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4031 0 obj <> endobj 4032 0 obj <> endobj 4033 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 4034 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4035 0 obj <>stream +hWKo7 9j^@0@hz(z nl'E}?l⤽QE#%Ry|û4xy}76/~7M3̈́\lΦ9KlyZ< jń42m )',^ASSik }e%Д:SLloږdM)dcUirچ<لX<@:`=SQDŽ1/ +kW6m-ۀ_v<~']0_ f,֪\m:ʇz|lJX+{>ϲ%eWlHخ$ PHL?؛m5V2"nv/7fd2V"3s-N fb67/8//w7׳޻l8f]#/8#<7ܺ 72}gS##;BS6DK0kk[,ȺE2| IEg*QhyFS{=vYS(Q]hHj3eZ= m%Gm@diivYlB$/ ȩ,BObiCcc(6#qjp8yoaUB[0sܲD Zd5:ZI" + #f^A|#P Uʊj0Oeg1$g* wX&Ldk*˄$] +(VW#@OF0e ~zg fK'wй"OWs9TFOH=&z½A A(]uDS^1:o } ߿O@(_" +LXRf8Kڑ%1K!t$_j,~hYU a`ݺJpeC&&U3XRF+_0q>`LKZ< u[F_DjWSH)/J+o̔7f#$)eeo':=kS7J1Z@ʹeՅ-;qޝھ+/KAlӝO4]x}yi| a +endstream endobj 4036 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4037 0 obj <> endobj 4038 0 obj <> endobj 4039 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 4040 0 obj <>/Border[0 0 0]/Rect[162.3 716.9 212.28 728.9]/Subtype/Link/Type/Annot>> endobj 4041 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4042 0 obj <>stream +h;ko$7r+pj5d0hܮCHV| ԋV\biXdX/R_=>^v{~o7'N 7O'___^A 'iL~?a~&Nfx2 7'4AOoiɩik[nvɅfr?v@0ep((gj$ L<<. #`kbněaJ;j +)3F5+#+"v'\c&=QqI) )pr}"c8<&Jx ni6F\9LV@+79 ٹ/+n蝦Սy\!GUw "fAU0(։M~CLcAr~ .D#Pw&oNzLػh9<Wf0ZH!فL;K"NWmVM+}m5KLMP0܃Х mcttОp9طE@(QhnkznǓQ%AOxob5|X>փ^yAއ*AD?eZ7dݣ䎚 5Tl,<N< c +` JD`!Vt)#9GhTmsڰ-l`@ږ*B@KV=,^$][Ѱ)CDf> OG~D?N|l9jo/_`YvWVn ] 'x 6хF?75~UX +Zӄ6Z#=l3Ҫ ?pr˓WG 79켦8hp +"1R"KUtFQtO+ 2Xu˛<h`TgcV,3 pzD#s5s2@S(Ȕ_ A跄 X.,{QuN/-/x*&k1{aIW7+p~EP\'2wzn=ˈgDH}ZԥĂ,Ep@bE)!q Ӏe<S#7L%NM 0"7+2dՅKv]}Pw{%!:M`E L:O'JME*`ʒp- b1yfb1d$9G%,Hw=CES,f{+c,BOK JJASCϾ#s +ʃv4ؑqh8ׅ g9rLQ&0tXXDݲ#hKѾY%_SI&2T`{>K|Xb<*<»fsXecvkl5b*〞&m<Ǩd q̄k6|1K'*;w ov(NO.!.aQѦnuCZO$/䁩NvI [J I'i75R-&Сwr 1` w55*VfRb1NU3[oL #=Y/bkVG_k~eLwZVvbRL/kcYaÞz:>̽>̊.vpnb=) J 6;`hu^[0QIGjJ],CGcAQ 3\bE^G2XI`(]6r1Qʢ%H\vu#\&NK2޲sB%p9A{*hm%pFge(ypy̴F/1=QO\,e#` & `~ +dR.! + bQ)x./٩# +luՈ 1<!+Ʋ:b"#\E5AR`QUYtFtNGperNp`DdS-e-M{ ?&W-WGkuXp6GL.Gfi#\ח/_!ѾB௓R1=<{0 LzNz2H8%7z\(-'u(5%7zN.qw rU _T:H8nj$ Se{0:qbn@LF܉9Tg#^xJe¾A$Z؂17D+v)ܓo56n[ˑ6Vw_i%%f{K[׶aj,:bǼbxan qի9 B"dQ\lmT_ɮwJ̈́W)U7Km1%]: +Ku:TH~7PV-#YSZ11Z`ڪ\}xBR,Vlmlx]m# [kq*o;LUu@e%6e-@šuWlS֮Lgc\͒qZ\ +.ohd{[NmS_ߕj8tv2 W/3$aIjlP*Iޟd4Ȃj:+%Ny6Qk͙/pV>ry'Ya=N<[jQʻe]4m> Xj%l{#Ts팰4s/sCk]Uak;jߋ^7$%}qK5Wb9su&q7]تs%ntXrmXoХ8?LggUwM+0=Ys䜰Be6χ8= Xb'A~{< {i3pix0Jv2p4|;Oyy}x{7~q%NGy[#OT׹7t|^Xb"w0oqlk8ļowe-}ݧyç{|awKpoTE\v7pPmIm­wCNyUϷΘVgf\j9ɹq!aJftwYlS_OgW( _U|@Фj us)spڥKoUVĢ\C .8/.i2ʀc.'5m[9Y-șAAs̓uϜrnk6ghrs29]d,WfU2IǸogE`V#,)9PB)geXc<}H^24myGo9;`++45QK%z=V+[UIfT\|^Y虼z%nV&ـ^ Lb<:%rϢ'R/Ⱦ_f6F[Ӎ5֩)s!CMPJ|}6G:k<%OoLsn:)w#'~nŚ2;_8?)FIz` ZeU*<!{V,BgV*/xOnv,"4K4bv1"z"l&m{]/_|)~eп-U8N/72p=9J*qˇ]/ib̖..Oe=[+sΑ-Z׼}гǵzgK~=hbY4.e(CRj`-Zjn(N۾:HE>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4044 0 obj <> endobj 4045 0 obj <> endobj 4046 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 4047 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4048 0 obj <>stream +h[Y~_y`X60' AdWP#)A{f%N aͻX">~:?MxӫN^w<~틛?L>|sswo&3?ݔie11Ne_tf^bto^Y3xf &҂Mr(T6xkr f.g<* ?ZjKc2sDrmRDu%8V +[ 9@D +7lOPZ \=|3ߵM|⎷nNPi$txD>-o`2y+LO 3au;qNjxNmto% +2ӥ0GK 2e?xdԔ9fd`_o}xY|]F޶t4{P<5r6C7w~|oxӇ}cacRA> auf*eIH-VZ7\vXvX ˷ȺKP ) l|yCMHTa`-Ge9}9Dՙlϭ #L/V5'ZN[cd<[lUbJ8¾#IαL'(6Kü^0tsT0X{aXloo#|U~[CDʩj΂Πy?h1+i씘"J.V-Y.B Djy(0A-P&2R4XJI +Gck,`å6#ŢԊ=XR=P],J@l5RM?̦WБ%"Oۧ!·y/sa뗉m0n c֪EQ4%%1-8< oh )n|OaA(PP>UW3;C"5ȹZR~eL=5K!P.焭laVFںU rHTU,G_`h*%5L ෍J<} P k ߆ jA ov `1. "6\'0y)J8[g^I 'j ?Pzz?9K;v $X7J"uYJoJ4x j طb<|j?ќ%sx\&dDc*W׶[B|ںEȨ>1k>SI,=h,0 Q8YfӨ.Xf8{_hTekTD0+[sdT"^& N4: G %mBH-)^ƫIQ]e0)aVTz[k!F}p-C#rzD]I˄4xQR"K+ldӈO"\;ڤW[ =3?KY}CjAb{/QdX U"7 ̑`Ueߓܭ3+ծٰ[-8S$B:S|h',zC{[(.g> d[q`߱3T!)$~m0Ebyq,GVe66I[5NBQj^R;Q%372x,kힸGO4 zu7V`e+pP\)9E[ 4D@"<wԭ4JA,F!BfF4Y~=2/r^q$榹UTj0ntNR=.CH<{JwopDǸ4(M<$rsQ` l}gˉ`11QǞա/4 CqA!Ijk9&\1z5!F$`gYC4CgGk\d*Pˆ)up4CGIQ,.Rsbg9+npfrm k6?JN3t߯yP Y;2"$֩?=2Kt"tkrNyT64>t'!|tMQg֋ c f &ٟal*Z{Б1ui8 u)0zO+si$9zɶ'OJ]A\~ F]?!&t#7d<p51"Qp az&~Vw& cȥN^*I ]֚JД)RWhq'H?pYp(GPԪ+$@ţ)2A,£TU"x!LD$"ξ컝еB;nh޷F#/nvNXR yAiNz;ՈHo$Q6JQףX8p`)˹ˁt]Evv踹ʪ= C)k {\ uorQ;vN݅AsݸI:ѻѸrfp υtW(hη (t6*~4Ӏvbf<" 9}Fr,p| 6 oJ|S|_3^Ui~"WLIU޿ݱ@,N].q%+T! H ل}0diNarNΉ '/ɧi:q^݃-4} m/ nyb}8{ioT98(4 >|\=-T_ 0^/pVgiU +Z(b(7/;^>{n`# {ŝ;֐$hJ +]>"u3L?Ds04"L[mzHnB~ZN-4_ҷ|sۮ=I冗.Ly[Nэ:Lk{ުߵrh\+* +endstream endobj 4049 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4050 0 obj <> endobj 4051 0 obj <> endobj 4052 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 4053 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4054 0 obj <>stream +h[[o#~G;;$A)D@>Ȋq"9䐒ݴ;!ύ<G><\oOry߻˿omnV^:ת{xr֝gc?n?~׾ &[=7g0vEa%vƻsrhB +#,*l6]-tTQH]-Tύx0xz&t#qcDt1Q5 WIcHkz $ +h^#jʤH?9|} xڌ6cvggIqQ7st. +Ojde/z4MJV`TYb/R綔wśiHDMԃU7JYVP H\䛚Xgv}G땖?=u_ +t?KjB(Ez(Ӎ"?]~{u{pvp0Gm~b0q B؃L:1 mrLލctll{\*/-[ (~ +On{e=5rM!R-[H5cPy2tGK*ގ*S [(Mk幬YU Z0tHCR }{Oj!zksԽc;+lkޡGyă4|g[ޗu?ESٙ ٌ4TDa446U`7M +ML*PK!T -Հ7R3V2) 6cХⶭ`o}tTL4 V2 ,ME9HYK~:HpRYcUDVѽ!݇&]2I˰˾⤖[.zZCƲcqZǐQ%Ahb.'R9 FM6o ,4.HS9n!Pc2[W72y5?B|^=6lTrd <-,Hٰ:?A+#G*bJ.s$FRh| %ShߦNn(j{B$1C\B\f:D@.>@}h)eACˮE`WG4$?wc掆A2ğXؕ \+5 +c݉ dߥN^@|d7CQ +02\XKq8Kn0/U 栵z%G0!"xmbbħfHA$h(/#(``''"4ԵNqU ;Ul{ME96#ڰ? +سQ)1}e>SWs&fȪ4%6XFIc7T*>[W@  :CTW{PY"I!ej@#ۃ(yMؤj&y! c|3 b 5_XYҌkÁ3kY]M7]%+V)NѺa#t +Rf}et!AkbpK"⑊j (%~:AvmEJuщ ]?>IPAS:{ڔ&72R&CsM1-MWMDjnK3mfh8 E);G% #5!jZih +97+^ȥ}"7}vvaHb_V78>G(@8ix=R^[ ܧ9,ϐK,y}Fw}rqڱ̪>ϩRr?D?;|(13?|u>? PzD?8NcQi3ڭpֽ(IclZ-b@:fmUk(J[ѝ{ nܗ$\f yY^ûB P+M%ٺ, G.29QS~ƥY"n*&?]Iv\D@ 骍Z.N m}nl)fw )DQj2Me9m6^i('6 +q)FK?)izkt13M>؛xZ.2cgc٫UTگs|{Po2$I,GB2UigSbu +OHS`8Jw+wR:ШW/9< ˗s{Gt IR1܄K+6YjZOxh?)(5լH1nە@U_@{aX2' +fDn9Mܬ6UYvigHZQl =]ѳ3ѶOCBr*uK_#q8c_,͙z5 V|I.zdI2Iс ֡YNVOw .3 2r +^`-tVSYMv1[>Tm+6߱[ٷ|9zoD"x4t8l?nO6Rx~?wnvR +nJ L$Ui;<?}?BYv`lp@S&]=;stLN ɀ|4ݽTt;ybw7ιM~#ƾ/pKqoblH:(   B5\D-b|R]?iYzp&I?m1GP)$ktd_4W jYp$F'egTcQ4rA~2탇g^ʁg6'b"C!8!d&Utۿ3L7tgtt] IGdkb (VΕ)ne5z٬eTO;x Щk(Iե+gi*#\Erآ?.c"Uh"'| ;/T/J*mY0Vo\N={^|+'?0ib._n|[)J~_)q L/'t//>HnU䶍@n厍n2h3j+H)"Y"/i)Ҟ")Ҟ")Ҟ"i78?TH{H{H{i\Z=TOc37)_~TJ?vId{ OKhϿ:M`L;F +endstream endobj 4055 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4056 0 obj <> endobj 4057 0 obj <> endobj 4058 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 4059 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4060 0 obj <>stream +hZ[o~篘GG; F)@>H eFbl;g.;K.e*E${s;xju?_߭_y=wJ{}]l6J(E/ +^NZ0ĻRvb4ç0^:1z:VzzүtaeH㳥aCSՙ_}b."+M&=1|kr`JPr + ^%c kkMsMsef}ZTku3륑uW>%nf"KBjc҆{]ϲQF|I>B< +4.M_/UҼOP!AȆpfXÂXn:}7AeV9V[vFEEɰ*v`쐇N|?БyϮ=I}"g1pIe/nwi@lRw7eeM"ƾ_ŸR"hk?UOv9gwk($t'byEi<YĬ;4Pv٧st&|+7qfA%& sYO樰jABg Hh *<.̧ɋG 2ɜSB|:mQo̘ZǬXN<W}nQPu)9G#eL!?Kg g(tX翔MW#_ܒv-/ųWyoqG\{~cZկWnGZzuҫ҇~W?[4dC_ۊj_4RK6 ꌐl0@qnPtn|65= tC. 8_뚅ozڞD6~;a|tUg + mqظz~wD=8l 1>5i820p of+W#Zyzl*MG.SQ +Z֖M_!n*o&z[|[ÎQ'+}(~ +2JEQ:JClɰ r#sgymuf  ( +endstream endobj 4061 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4062 0 obj <> endobj 4063 0 obj <> endobj 4064 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 4065 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4066 0 obj <>stream +h;n#Wvz$a~+` +h cfL v0(J@-Fsm4Z=ryx?z4}_UWNw_zlo`ǫ{zwh>]}§>!\`-c 4fFa'iz7h0BbZݸn! [^㷀W!<;e|edsTwzwtCŮfǮacz8܏g+9#\==L4"Y +i.D!nwW.ByoC8P7r[ /~eʎ]h;:zyOϧ7!r䏰jȂrg`hUtuW9>|yyzy}x<>Ww7w?Vl|v@$꜆] BwH@=n{sh[lӏ&@CT LnkZ=p.DXmom֥=GhVZ:U8D{n{D"m0ꘚ {;Nx [!@i(5zn^ LUp?tBۺ.]GF齌"*%DY ֠datU̺TψL7;sD)PF1M6 6O3YAfx`QES q:cƆ.2 B;oueS @@<(_g\bZM*.5֠uZSGK7D YY]t͖u.AZJAh$6I{>$s)ՠ* ̸ٔpO~{Ms2d=1#b픪 +N'F#{N\ +%3OlAUE-$/!A |WF9? O#|]|٥3öhr39kRIt}Z5Ed4iLq&:BE +զ ;QO#MY +6 .ƥ01/&t.6 R31jS9Xg:-]\qgi ]|?&JKP%U#d6%ƪ!nA1A\+'1 ND"BaC>TXI5iR4Q⪟{.ml:#O:x*_O$+33ktŗ֨~>>[e(ŨeW,Wnv| O|ILZFԐiG2HZFS!^=H B޾'Vٚ֠*+>%-|Gscwx~>=P?렀:Va~"߯aEWSy,+%o@/~LR{ڹt#b) +pF=Qimdvuː<ָYCObj)p7M~Re'(/xk*9R:p"阜+9숋)). +*ȮB{y̧w7{+P\yAҟW^O^>!ͪш ++k lr$!2b9jk$hJZzp2rNjJ *=yQZ!SѾ]јl{MvBʚ)0 o +DSr R 13 i-pʙ djp9cSdU@3aSv?fr~3`ɓ&.|z|!dK.fw9AFԏեDRBJV"!TH$`ض!%AIN TEܰޭk!FvpȠYz/Ky$m2JV!nQʂJ$; Fμxc?{c{슪"=ܓ- \`{%S6ؒmmmM`d#$04)494~x}yG oO#=>IIŔy2.uhCcqxIRa}>>TѦh @*[*A L~b*cYiI^;H=f#P9wwuuJ\pr ƒ!J{U1iӗje)bU GkQT.U);~8Ad`Je$i}_'{w4[SqQV|c:KWo$;z˦dɸ~Q>ᏄptZgC+'K*qă#g~p#1$YLyIJ~t(d^㏒@I%; +}8e$Q {|`wRt=UTV +rX̅;Le<,ձ~PU# ۩YK>b|.!n `D + +~Ycz|zs質T"K{X71P4_7Si~XE[{׀ +endstream endobj 4067 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4068 0 obj <> endobj 4069 0 obj <> endobj 4070 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 4071 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4072 0 obj <>stream +h[[ocGr~ׯ8<:} jd;#`!5 4ZGH~qַ#޼UU_U<ԭ׷cq{:>=n6x{su/Uwr۫[թp5v7vڇnzk~U? v;(ݾ^ojGjU@MBٍ\VqR;ՏoToToKwTCzۏI Z.ۛT# >5QYi zh"BSP -.p-|/1)qI?fe wHD; +69.]8]o8yu&p;,ߏzC59Q<47k{ CX2 q_'&5cm#ȭSq͋]}ixꮿ t?No{o^|{h U7>Qz7ڎNK eCeCe+礼Ҧ@֪M퇨0v;{e=M4j\ Φl]Cj4́gҡmebk`U}brk婬UU bA$vaֽG6!a^0tj̝{g{|0t_o z>F!9Ch_j1)iE(7OR-E(!сHPKFW4ʸ< #(yEX,`HW r{0:W<L. +.GaU^rV%}#mGObλy}@74!fuIh7@ESh,i<M<  H :74yRoGbse("a٦2whƺ r Ԫ>@IvXX=I*aSB2|G>x0o8&,9j_n߿+Hpj pa +׮8H=@` ',1mv0 !b-9 8% F(v_j9_wŃ?v ڙ{[mvZwġVH}\S/=ʸ ߌ%ch5cT K1(`h[؆3Tj Zf&2+Zj +*sn,9$'*Í0Hevja&T% KJp5J{E,@LUaYgZgZݎeͰՉC&krЕ$[ԨCfyB81䣌K|Wɲ`ad}WhӘtb#Q ߻d.zTBƑ=JE:2L頯YgW}+)yp5tM+sT›`+ʹY3/^'6ZwV$`>K<@M92ِdsq]&-Jp'3(|)-['yam,/3ѡȖ8F%-a=}M35",SHsq4ŠN@e-E!ӥR:켘@d[R/1BOẌ։;FCa+[L}X'C8./VQEK*edF4WIOvEO1̀ѥ -  !l!';C M+Sj7ʈ:!p\f{ VU |$I&KU*8B6z];%dÊ\4sR?̭'22ӕ.(wr3Q`mdX,EC^1}i\?gW:{ R 㕃3+ݠkx?=6XŁ]J3\aOm!̎'Ir_My(q}OK7wY \"8U*bUU!Jz1|`[R-$ {߬3 FDj"'BM:kՃHQIvCg͵²6`X8K$7MAr$oR}_>KcE\ۗbQa̕)pf>I}Ð&?# +zGgi4|deRӸ)6АO9+QLlpl\0+g[ +$+ƴ :Uhr'VQnhI`dtm2Tjdl) [ 5Y nP+ (D̍$^mjq rI sLA\\Þ/zt}{k9Lɖ,ؾ^iA^ۥ=7t/pz>%X q-Hݖ;<<ȨԽOҀ%\yˣ.śwK`VEX/Gc~͗k0ƺ~?ɐvL9{=Td58llqxΦVW+}oq7owK Vx%߈Ÿ3Դꄩ⟶Ȏ(_DWpnx3Owsߖ +,ڢ;?zbA&wF-qӇ'P8 Itb-8"gpPk^ԡbQ 1 0De](x8\`qR8?QDÛ>Uȹ<I ˻!+˗jizIܺO`ߪKOT426A<X14w+6VN^o3W^AzbϡLyWW5d Uݽ13;ӑǍ#WPc~n1] wrh&ձs9-%e5,E*;PY`Yw9CK@il"q)Y`J$u B#MBTwMX_9ǵk]~_B |F*0K4O9wAd>HI!.>G=0ÏiB(Ƚ%_Kq3~X/TX0LrALjQ}˨|兞OO%rLrj%(")OytxZ;\.[rق^ໝw#N=$2t_f +M=}rcss?a>Aͺ~ yrB;^C^7$ h '=,D7bNP_`nx1|sIW A9:n` Ő` o~1إrgPyb@ίilo3醆Acec +endstream endobj 4073 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4074 0 obj <> endobj 4075 0 obj <> endobj 4076 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 4077 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4078 0 obj <>stream +h[Y~_U*;y3F3 XݥԋVf Y B*yD07χwCwss}p8M߾~uu?շ۫v۾1vGL]JwypнOWon0xw;4ÍSO:`1N-{nGbL6&ח&h:^ +0uo|EO?,1t;A~!t#]vIpH&uXv,RpҡZom hRAR 8z# $s j# &jc},IDNҶ2废z3&b,X?Dt~a}/DS23NE?`ъ6tEx;:u4԰l<<'~L` C"h1 ⍨. S13 K'273"Sì/nc[Ԗ^ضBVPmģ*ZvlcfZڪƦȄ>MO >I667ag q 3~fe`h WNޙF؍" +Ч~"@M΋*UA}aEzB_%ʯQV<(W_DR? qOFrۆ S8Q"`H2ou/Fr%Ydk w,*e-_!#/ΊFʳrAkTrvsׅ`U,blzGa3,P <-m}y`arLaC}ȱvXz&g[J G SSݐz[dDcL]sg!~Q_: r#!#<8fsԒd/;N'_ +F +ǘK#a,R:^¡*غw#7l!lSdUƥEL'5J'2XHe=˲184@&:!O)t#L*<&ϱR%?z;; +m[n這4ΰԥ!fŬ` !- a•IPHo#4)Zj,bkƦƳ=d։m&B_쏃HǡZҀ$}S%`"T(#DCrbq,F5gߎ̲( 쑘Gg"QT! pc0|#RtFFcPxrc]5PtMJ2)f0E+T 0 \ _ga v6YK$FJZjM6ʁ=x%"TY";*TKP^+w|ru:G{b+V U +n5 +YC5^+pb`+1q CjX&qx\>e@N9tD7}i"Xlpڨ-DXY!*֜bNFi#BO*E؇nYII׷??xrn=RI*up޾T#3.y!w/C +\ V&Nc>2N(Ѵ 0idd .P.veQh0]_ڑ-bC!b@>R+`g/C硼?, ]nM2$.i!*.^ Wh)vT{ 0QY2aoy"vxߐ/nE+%;?á _ u" Ku*x5ju#3,yf,R{эc!.锥#m.axƒ<*6J=hY\cU݉6)n=79U!F*\g:Oyy| ^Q @"] Hlʡ1& +i}~v75f&CHH&{*&+rZI Wt A1r^Mg)1q^7R~EHU8I0US)nբ\Z\)"D'YPؒi rn1/lNtQ,Y^,˱sMդ9Q*'W۔rg@)Iﴔ+ +QJPBEEq/+Q<.}k8{&L) +T5b^ +=|wFUPZ1>i+J1 KUQݼ0ޔwjJ<֜Uwˍ3tг%r$o\iϺP/|%Ify[0 )fN"")ћ+d*NE-I%'zamL.[njޱ&a^+;2%81,o=E؜Q,ye])FWywO鄃},8lULsgEIÊ(4fb.۟qQ |E%'>Y>(..9s:⳹my}2U\֦DA T=O?6l@SU27148K7e2?[iMea/\ojڮ>H~mzvڼ}|nMa;Jww>5&Y=Wz9qPcP@ҭ _ݾ}xaAZ?tAݫ_ݯׂV[k֊P?߿kgy4l:JK-zL < `Q2 +O il(l` e#O|wtoc\=<}ҡ2z?}L[q=Bx~sþ~X}:EjgAۖ,7tXuW/8JCF6|yA^/k:7e==o'ܓZ#^*c&FKkIkLIk5sjBI55tCB^ ?j8ZydHɶa$dl¸|dg+@/:BXf#! w||L|0Ҋģ.Dic\*M6+3N[4J!s6_1]}1x3fc% ɰVm$68(Ww )K6+5"7NwM勃USN\D,ͼDA@2 rfn2 D[)@%PUkjƷ/|$7?|BgWyA< #R]bxc7[upD8 +c8Y{ +qc8X܉`w{QxuK1./}(6J+Sf'b:{tkVY{pdR̜/`{s4.N,PW-g SZ!DUO\dлI|!n%ڛe+Яsezǹ PdqE+)VŐ۪\98IVHJ]ΞS +\ *1QSO +Pn*GjCNJ,C>ivD3:uxng\ZJK)QAgD~Z˳QRvMhpiWU>9J+uk'ez2 QsͣEPϧoaKBiN'`Yk,B7 y2pE=eKʹ/r`Z_ +endstream endobj 4079 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4080 0 obj <> endobj 4081 0 obj <> endobj 4082 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 4083 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4084 0 obj <>stream +h[m~[r;u8-(t,'F}g×]IK /0 [K._3ybu]~7}u{suR9\}5ϥb +?A(kEhN]դi[|ǫmB5#lbcWBCلX~6ligsURTKK*cgWMQd|Qjآ&)g@ EBHx2 A߸Xg z/K}p2mc[#Hs&]`v2_PvFzjʟϯ`~B./W+VB|7A CoWuGMܻyMڧXJ LcU?x@+_'҄koa0ִAK3ڊ +:qR"8zG&mLЂvrGʪpyFX&tJi_B+h-M5Uj5:bvT;{em\` ,6H5A\7V\JhK ,o"eFIKe%;U670h*X7AUcQ 4@P>?SzOܸ1:$pM o膖n%> #?d`zNKVyfP̌vdE wp4d:0iNEAԂKe\nsU)x/e {8kT+0v-o+L +ZNG`8  +e*ԉW  +>o-^ 4?ʨy5FqCqNշ œyT#j=蟒LakNhc*xl1j@⇖q_qP%6d6cPai:M*IsX֩|O宣rl.%+*TCLUTn H(t.˧  F^`’ACy}~P肄 w %G~e +@ 0;,-ɠr+ DZ6;E F= +wLNZvc06> N =0b{^%l8e֗ $ "f#O..\*T4!ӬHDP=x{>qĵ6aY,'uR%^w_%;{'Qy-Bs^?S98tsM V!KI. \\!ru P?zsr?Fx h>V1 3c8ьcsx^ XF.;LJq-or{<֎ƿQ||kXgcP1zj ]4 ]- +L׊GG;! d)H;eTzwx]a ~4Qb}X׍1BhC7~7$J{b +^"A^lͫۿ%L G㚵8hb9z8Km qG}.V"L/<;پ!MXD(Ecz pjtϛ?~WzXs[0Pq ,E}bc/;Zĩen5h܌M{ūGױ>Pm,]<) ꧪe"D<C;=EZpƇsZ(=3,&{\f. Uo3O`T9&B)v&Urƴ3ϡ-FSz[aqm,pJ~dh(M`o"MǬ alf٫he"Zz|q@4'|olX:9=\# Eug9' l@[FR_Iϙi%˥Bh/Hu)xa <8&OD0ֿZ@ 3 vydg/.>z̞m7* 3r=Ļ2܉՘OFrh6芣`A n/E*˪#+Z2ay Eʤԛ=r{wcq A)!jy6%|/b7_еw*J1xϟURo^zAs` F`׻/y"]"1dKd?N6֝Gq>T<*ANc}cf|N5 +v&cm⦧kZ`y#9OԜpF  Jq*gɨP5|Tz!N_o"HiJN}Kb s.-$4gkrFȓ>^EE՜MkVҹ8Q٩=IZY,˲$9O/ݟYfͧϯ3(W""z.0Ҫ*}aTãn1HYL|8N]9s} j&<j QO+{>L3ySe` ,^_B=w8a =Ž}28g +? w{uL|o +99诹n7<˛U0^!0yEʔA') v'Z:\%7 gm9ŦΤظ8DH|euI-D&ޮCh3 +e^lxRh\lX*G:^8D(DT,iMLvZ8Hݴ\tͩ[]_ 1(^dN0f=ӝKGdu y5. 3w;w2[z۴}ոLQ] H{ +ɷ]"Ԥ6[U;8"Ї\WyU{[za5\te?N*k8,K']^];Aǜi$/03XH;8UYEb9 ϱ( +>$z>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4086 0 obj <> endobj 4087 0 obj <> endobj 4088 0 obj <> endobj 4089 0 obj <> endobj 4090 0 obj <> endobj 4091 0 obj <> endobj 4092 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 4093 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4094 0 obj <>stream +hZK#W(& ENl !Ahfh%{Fԃd[}U,{nx8۳X,nV?~\rW?~fB$EуR{&vFM:q?]-/]TYwwt0 Kqv92,@]br$MgFKMF \.u8MJOSwd +^SXif5tZQQHmRJBڐR$+A``uYY۩FR\➨iTA#Bun+aJE4?^ދ|"7Hui'^怸= OX"&GpheL44nwO{u:vV<W^lA߲KVlxBB asAlDw%+4iC!ZK\H e2(+t^RYӲK#" J!m]G4@ 'dҰBEm#wb?t͕AoZy2 l:Dv(bH VKS}Y:˄"$SaZjP> $#;v`h-SD|Mcg4'3n@3 D2l@\i,4i`^B`$"*J EZuz !T, =$ +]&+ u΄ۑoF<2DP$Γ UãQ]U=X +v5TNdwieD=:N9}EUdK> S +֐`4u_HuP#wd7R6`FMi[p,e˓&yicY](Z{ɺ߆C +=p'8>:G )_-RTyފ`@ vtN+ 0\R2Di:PKOCզG[&;BfB~ov7-Wl*-P7"zR!'aq+vf 7Y~:P>]T Php$db6b"( *u@]~1X hzxwp)dLw뇼gb}4=>[;LJy'oÙב~1߯f3,5]@Vخ?LY (fo)fw||at AX,'=?ڗ3i#Jy:i_~Y6V B') +k^V6htPQrau(Rce49 WLs^ǒ:tޥ5JUP=lV tTW`;]b7r';2-ve#gC+V۳%{ŸE[r)n(}B7B9eBsf(UP_i: +U f>(T\^j/ٻC_$$ n2rr_Qi,l9(x?W©T%ioYכ* zpsNsR?y/jp\a_G)^BJ$}\6c# m銆${4m_z` `q9uY}vmzI~>ʜ|βDqۋ8TNQj'&c\@tm(a Mpi~;Ҋ'lRжq },b)]߮\M+&jk]_dzQ 7w-s\=b;; +\do qoKj%=7} U`܇u%MH[0sߖ=$>]Cc0V[ͧvfw9pDف׌ П0!?wctW ~79`L_8U +TKj12j +a,icuw;c|CiD{U #i+˵.ZUtȝ.p-rLP랫o(]PؠFwd&ч/FW3uְA_m/Qޥ(Y&ź;k{Ki8ߎJjnPfjw],i2j;n+9kM[?VzA:jîp0/s~m\sް+?|ғ|q Sד)7 M@w]C;i'Y߉[P +endstream endobj 4095 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4096 0 obj <> endobj 4097 0 obj <> endobj 4098 0 obj <> endobj 4099 0 obj <> endobj 4100 0 obj <> endobj 4101 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 4102 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4103 0 obj <>stream +hZ[o#~Tcއ {ѦͮHBJ^^)ȿ﹑ >!k/s>rtlj^Op{x[o+sp1yl0lDqjVw(|"+f_@ImU_&κ|sROa.i?Ohv:wC(Zb>=* ]l0r|Mo.yeMPb׷Y]SJ&qiS:@&ATXj!vC?a?|Ow秇z7'P38:&Q9w1~W ݢvD;mgBza]AE]t2 ^j Sg|lznI06;GX!'w٧J smU IC =0-~ΚH5V5]tQpԂ]D3}"٦B| !rτ!u`4tghOho qXIF"?0r4m!o  k܌~E\ wB.Cs< +t +!oh"ШnP A<Ѱ3vC"%Ҡ%$ mmx7P0.6NUyp4:i˽)>_u&hWdzR}4lP-N| `z֬\*GH#1J/Ƨ!xxؚ܋}-$<L `o .m4w @=v!! HsD`ϝ.TH2USmtxX\hPʑPXw|iÃ>kP +q77{,PU``ÎƁƨI +iC T +41*TBLp#`$=[̺ +"[Kbg@)~<خ2F l Q>m$ȁd&v P1\AQG(`ᔿdHu[BE[ye8U QE##xJF1/H۶%TIJ KrjLJ3pj$ٯ~&wSslR+XJg6"2HloFV^V%4M5 ƱDOQ]f2*vj-*.7 -`/M-n2*閩*ll-Dʼ2< + $Q r&G81>,D|J0p%qSqvY8usS_uOC)?(TYa.-ktMD?9 " +I`kZ4rE7h9Nb@!0#Mrb9Ry|(O?;FOC)[۽y{ExV?zӉ53oD #>G60Jx}]]T[]7eљM5$Opjmg7ݻx 0;H$ĢH\yq VU7{?*^}wQgS7vLD_xM` AnځK 8؋/ ءDQ3DTESj3楫瀯[K0LtR.q!Mg2<_D:xTfOed>?>)R)'!a_e Ɠ_NeN=j1, +c# {oX`~עqsQ=6di@:#f7n^i{D~Epn=2zuzƕ ߜtkfí#C(wY)|x%%< +td>D +vͫeWP,NO,wlH`_A(0ɘ/L-yR%@4B6ėTY/'\/PpO %&G'MjC5ey"R BiHD6n/hm-&d9+wB%ϕmege A?ܿUa3850dvl$vWԩA\dX/\]W$JHjPPd!T:]^Lŗ.\>ٟV4cK{~X*'Y82rzH`)ȶr=S~-/AL ITv_?܎T.X94JYRTKN SnP.,궐g)e3Ɣܤ3 m%O͏11"F\c\^V3/y )`7A^K~!PCaCtlAP\8(vr!s3FZod|] gꗗeJSKK=诠?| \A +endstream endobj 4104 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4105 0 obj <> endobj 4106 0 obj <> endobj 4107 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 4108 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4109 0 obj <>stream +hn#]_1d>bg 8M v(.VIޅ>uuO8 ZN]]wU?{z^z?޿{ؿ=>Lӯ߾Wzx|ng=nà?q4aэ6);>\ը}z MJ9umw?y^+l;\1w6f:y M= ,,^7`oRnS72d`I7x}vLk=V0M'+ 2C؜0sWWB8lq3Y@F"f=Hd j3^HCmpK o>^%> "]N Scs@l|0֕aLCcrI A6<LJobJ?n@ Cn*_1<%G ~4FZ8 x0"1"7S.fj"]iSmx哀J;E5U er+vml8%P,|ʏGIc#'ׄ? >,l`p}C\R꩜L-^zP M;112 c#`F^ +V^|.C`P?[5jt eAi6ozIi8tCrAp +`@ Iv\Igr;"Y/HwD43L 3l;/Nj`PDSd[lkڏ8 ~BSsDR+,˔U]x$YKfqt6%W`Rvxr8J7Nٔ=vĴÎIF5`rٯv+8ήlR}&*(d7i +D!{ޱP9@ 1S(b#Q97Tbfa1j>t8ZC;~H6s<z(O@~*^?? Jp$YkZ+Q4@JZ'- ލ,iedm|Q$]gD>-AŘ35l)tC뢣)_\ ?i@axe0򠠍JV5N!`N_N ."fDDw!F!G`҂! ŖyV՚ QD3m>Q(y}Rbw/\ +@-c%2 +n +W xs?;@i`!H4tT@0?Ŋ6u`-h1t8A.C%pZHvfEBN{.yGu2|$t\;E6ԢZ] 47`.×Nyn|y2|as)W|Z/AGH_K!|*vt X;)8OoL"#ghD ^0XZ,`A]zei{f]V!/ufNR0MZ?1+^*)y Mj2 jV^%voivs<5m_N}TVI_34m`Xi({DIi'/5XTeBM㺮yٶcPv1 oͩ3]+t aF Q a+"wZ.T+ ֥\SZ}Vg?^uqn24t;;9:NG"e +mjh ߂sS6M)ߍ|#h8yFi3vYL2Zȷ#lg$a.͌/e rvLNj[ G"#цXY-P덯;",\<ķ)8dyf~uav^M\վxր;(H%-eqfAcU^JmWm&é;gږFM{EZK!b0s +G Yb!S#q:m$D-V &Y=ː r'] Ft:r᜽ >bʭPϸR!ӁeV_.Em9-=I@R'Uæd٦˅`Uh +b1#u߃IXe&SÜ![:W/_711vk~{a ]=˴ۗOp<כz\V/ç-wp@0곷opww_Úw78f;߽CUe$״Rtc#V!zdڭc/(ף5Eަb:E- y>ͩ6tehmm99r<km?XJŮ~5wEE˭fƇ2q/|%:G4 B#E;Ph?)KXEk#ccwb ++PBS\yPlo +υ྄śmk*&pw6#]덭/3Mpv4)R0B :'?$x|JDyv+y#/ +%u;Rpt\Mg:N{ ۱3|'hߦb KaDALNgwgz~ĉB44f! K|KT/k(S*Ol@}/](m\D.)*&/cT+i=su,v;>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4111 0 obj <> endobj 4112 0 obj <> endobj 4113 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 4114 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4115 0 obj <>stream +hn[7_Gh/@@ ,V> )c s!yx$NKQ8:p^~}_ϻvˋ˿7J -VWY(/  Ad%SV](q}Ji'V[V.~|`qN)B  \g|#nC8lP^S9B bt&(U€0Nzar5/ [|a|v춌_Ud-@e^yVv27A/V9LXkzuJ*#"$9g!]9E1ぽfd=9EK֧PEE/aCAo_\D-=Her$Рaf/Aq ,P+rHM, !Ģ@/n`?߽߿[qk_|bI&;x!:k  X%}vv)%l c2*i/dIj@7#U0D#>HB%X5ʈ5V״2`Ip0' #GPo4:l%Z `DASzȀf1cIzXU!r,c@:I@6dS#G[z7C*od;7ydluR Jȣ`H Fp +;(xLV3!VonLN&(\ pe&ht(a/ +1WLYmj-gLd2ez0 +xUG !,Ƨ&8xؚdž^z7!8́B&zۓۼ'GFZ.d9]o`isTH "aMLs ZfR3OFiAaBȣ#ׄ=} ~* +4lpVgi̸kJ +lKSTه3Ó_v*p2|``CdLe]<򜙓֐܋Zt2Ocu9wͥҏsBXivZ;/A{`CQ4L5:TS,m"L:޸I*dFi9õ5#4 ]>(nM d`e`#N2a}<³7Ýp?-!6oim]˩ׯ~Xzsw5I>rieT-CX}|_L)Bx׀&Rه-i,b=z{(Zٺt{WRcq\il(-3þsX챼b:D]Os9|75!'{8%#̧ N +su^—"7̣DҢc~٣?/o.{jD=B:#=BdiFŖV\7_\"-܀uzXКzvC}ռmLYwg*rN Ґ =.ʂlN 6-8)<%rBiT\l'޲̅vȪt +<'Ltg |ͣXvJ5hJP1]a|Fv,PR\QP#O3]S>)c^ҭ.*[™FuW.=jY4JKK[!ۺ[әj;"e#B8֗R }էL^pJ|zݹK.gb ^]o`na#mBP;?飚Ƚȏ +T17jmǸ?rOjJi;{'wnI9fR -ۣ3f,1T +cۻf^r> B ~w qnFx0"_{nX3t OY)HpWe]1UVCfh𕉋;kICX e͸>4qB |ϒV׀RY!Pd_msۈ{LS<#n#m^7a(+?ï%=gd ;^yЦ. ~j3ySJN^G7ď8?,Fu\Hn{W1-ap +;?KcykvimI_Z7|!W%.[ n|}ʼn d8L@?&.l> uvxne')e}+qLhY4Z;5t:~ n;7Gԓ`Lb_Fަ|15C + +f$u8iIc[H;44q*$*TdZoI/Ogh^CgՍ+|?z/ a$Biqe|q|Y=~φt&Տ,GXHm i+ K;J٣3i;AfONU)2ќ +YHa*aLGB>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4117 0 obj <> endobj 4118 0 obj <> endobj 4119 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 4120 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4121 0 obj <>stream +h[[~ׯG);Y$vPh&ЇZYkoMv97r8Z7m: c=sxx9<7~Pvc\lpݫvxlq{bnM"Kʄ.Flm}W P}v{]nzp9H<FM<& k ;}jL@]*2ХS"NX8nڪs}ms t__nt:u؜s\9uB|Xe3ε.ν5 +DM5=I,s_Kt +ƉLZ%.3t)L[dvZTRVu&u+mog FB]wP][k|݂%(gL +aq;Ms=Q 1$W>LmDzmr ZerOrRQ}0J`\*I`MiKRb}ZD]4Ik NK0*|&et hKj,p`0! +350G +3& THhBBkLwLh"pN +<w#3d)}{'6*ːm쌆 dF h@dU֑IAJ55gQF*hbl q[u LFeM\$T(L-79|4'y4Zȴan`voJ爊'At:R5T_5WՃgtբcԣNLà[ߣ6|cA( +6dԃ 9iv]R[T={nlSMCh\1I +"qMuLn&ԆIY +=rg>u >R-O|3k\(ECCHDr Po,R߰=-cL1-9= XMF8#q^ Xތ+DsY]Z޽x$!9:7~ǸG&M@U&J +m#/+ w@ ;r{gz$w7FA x:CG k;x(QÄ&@I  pDtL 5hf5ZɥX:,qɺ0UUnbRsTAEF1TL!XS?,1ƨ` ]h cՀ!ωyZLoްH^/ +(Gұz lzX A,dG+jàʲ&j0Lt ^@Ĝ(U@@g#ɢ˓6A e݀(D!_Rq_FH<Pn?F&,ȣjf)/bi#zĭ%E[Kb}ٰJ4vQ8hrj JR86TPV`46Eq87޿M>Ȕ20_kd)eo}(K:( gE'ɹh { &ZtWlJޏkh=B[U^r`;=x!4H?Q +JlT@SҮtE6I9>(%AcHY5CJ0RVS/g7* *o䰁Ӎ2%qr|d6{wmcS0+~ +w/rO:c-X y99ow+Ou VveTZ>0[|jWwCwnn(/V0e[x׽>k.ĸrCH~n~޽>ܖ\*B$R NMU (D) +wmn6"6{I iAf;][2^ 7!%@{hK+qwB+< +]vN[t28zzF۬y %9(,tyAz7'}#,ntO%΁o7xu8wʙΔPv/voF Q^YY/ܰ/ zROy3i>'Hɟ $C68?.P^?CB/1:VBDQ|/ZhXDS(_8k夔֛| ꞳϴF<-gCv]트m cr rU𜚯es`f.h4ɏ0ν?aFWmgިyΕ?  U +endstream endobj 4122 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4123 0 obj <> endobj 4124 0 obj <> endobj 4125 0 obj <> endobj 4126 0 obj <> endobj 4127 0 obj <> endobj 4128 0 obj <> endobj 4129 0 obj <> endobj 4130 0 obj <> endobj 4131 0 obj <> endobj 4132 0 obj <> endobj 4133 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 4134 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4135 0 obj <>stream +hZ[o[~8d~)l( !) +\؊~3{n"u6 ٙٓ7׻Cw~~?^n6.g_4wvk:mW:+Zy]}Zim|~X|w &mAYLfC*43n6daG%CU^UL/.%\IH?IY[U 뉛[00d;}Hӻǻ k4Gh5fT7}I2/59lܰvMj%`+,V#xK6`s׿v +;a`V=;"БEoJh'BI]wNPXݺBً[7o컷X]17g:v iϦ+EREH YVc1l k딇XkU\OXt{LYer$#GǰAtN`ub u5d*>0(LVї~\ aQ3+k"8jTt4Hcp۪Hj)>U*x 'YZYޡG-xJs4kFf&E"1v#6l:@Z<[t&LEPJ#@<%hp!4)tԃm?p;`g*WaCA'`@{P$+|4#wiܿ|5#QVPQ)Aٯye0Ɗ%4lФHP%UZ$j1hoqˠٽ-6Oj3bRÚ#7a^+isb-cl\K[)Bc9scd> +A #<C*^ <Ӯ "բCGgEF*RB؆0$f7fJo{xފ.[vRƹLc_Jom@S.D>Ɠ/smLt-  #pA$/&q zmKH۬U>4%{t9CS5]~ַN4 #:i[w[6pGx߽!Z':ĂX]X?nzfQ:+5Rnx\\E2 =lCN|s8x:$Q-ۈr5[>%1ƞM*澻T5,uSf0P_cJiV#/q$lj~ ZЎ㬗\ϪA5iRǮTTfY+ "{ҹ)+znB[]Y#xy +_:ш5g6*iY}zI +Ycv9M[sc3 +I` .UΧ iw4Ja<Ȍ)TW[ىmuδ* i1ˆzVTU~oçJ +Z&Fa$@u@]2w]OG]oU4i㉋< L&e'^K G=7)颏AjB˗W{ҭp[%_T哻z+sOs>tv +G'+쟖V$&f3L,y/:dZ$3˯x,, '.:©ĉ­yʛH],Ukl_|xkfy} iRؘHx$6>||zq\פQ/t=F&lf`mi*3^2mZ?c}amoC4EZSyV50LZB6t7QdsP̣3eϔ)JB,%Y|8c'NNXӐPe &94q| +g鋠"wFu,yȑP 1{AZ09P0p1[~m\}^8ܰr\9F5:?[/8}o{ 5Yv1Z'H>_ XO >=' |"RZ*( 7pP_:FWqbV!t=Q]@͗эzv6jGx'/^xg7l>ۣ GYWޣ>N+c Q+%r` iEc%X%!>~Cq>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4137 0 obj <> endobj 4138 0 obj <> endobj 4139 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 4140 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4141 0 obj <>stream +h޼k~~ߏBX q) +;8}ArҮ_Ip80zslՇ__au^_.R6woWJ5Yb]#?pU޴:ݬDs7k@#B5wYVa}܎ St2o((tN ,4:& ma5^x،x&u) iZ_]Yxq d_ξ[@1B5~dhZcMk|9lg8ۨst +Oڎ5/Z䉚F%KTh2vBun +tÐ *^?= <#Ȱ jYOnp Mm0 +AT`Mj P5 Eȴ"HfC+٩V8E|%"N,fE c))F + 2\% } w!eVIGifCf`ޮUVC5>B vT,[kZT@C[ +AVFO~N6;ۀ<0jMxteg4#3"7V  jCJՆL + +^/ `0@N}Eq^nXJTpBayi_`ޒѢ{:t~Q$zH!UçSmQ=XqBҁ]5{^4ɾGI=:zC%ƐĵF P%C7#u_uQV[d)1ܴZM%a{aZ`Ý:֐ 5S*{^`©0)MBgi^OK}V|,Z~+aZ u}J$fީL3e{ PR.yCكnnpws. Sv$_L +\/]FiASg:J ud6.tTd'F)0'绡Z{ :lGվyWEnE{] b1 +i̅VlحqLz. Oy40/0&i8(}Xs)0ņpc,9@yQ*fe`(ЪŤDX.db5 6r Mxa^^NjAM0HrP/3{ +XCb:J(UToPȟ +zȩw1[*/ʑ%Km?/Xa +sYk ':rxg[_-OccgQS1]z;zWlqDMeOͽ|Z|P^%ĺTbN[ c!H;TQNStO :VȨMtI&pnl`8h)!Z*Ʌ#mI 8rN{c\xSOj9 fOIow#Ȉ;%ZalZYHm#LRGv/8^dT^@Pz:liM7K4< @st djґNI^2Jh-x8SvUA bO WaXIl‹ ry'W7asp)AbɇA3`l܃Brn7y]v\.OkZϲV; ]>HU<+]}쳙 fY ܳM%迌4z@@8HYM8UA*S.jL}ò{\ʿs4.0`5or&)&2>R_MqJaq(MR5)݂NQE/F5ɶ?g1|2!wG>r!v@h*3*IEZ@LB,HUfdUТFKV^^z#DSF +b_“ʴn,vBWE,(W3qŊxMuP lPx' }#dY% G*)[FFIHQ/I&Qo& ݮ*0 +ՔT"NO*m¤r3v&N=q6-9vi3ښN$.%S=4>"yžc/  $iCt&I3i/h!9>4cOh,!O),F1dSfY[): [%3r3v;G)zB$,8^95uctI:ޏۖQsׂ[ +c?^5WHk@<ΪB*&e9_f s:7M`lTt>BDumGت@MW8zPYSZ"q<"j.n%QNs4B~OAl5fP;oVoZ/3৲ζK&5_tqr=Z1|I5lU+\D\^@ތ=[ȣ ~9,dB$V%0DvvVCڄ~WY&ON6$£Gh tֵrĂeTWM_x]z4e)sLUh6}]lX#ո j^ĽR-A/=ǯez:OmXu=EwuyQ +Cu0˓ V;+œJsKXc_7wօ^~ɵxdÊJ/lzAgZZF%vSk["mƁɧW y^~J3`ǥ{k20W8g˫/M˝}T]LaP/zT5P+T;ٱޕ @o +/:Nh/H/f?=,"9?nNnZ6lY?aǧa=6̟LJ;nn IX)ӛ>2bj2b! =Iœ^w&eNS"aEӛ݆fY0|w>Y:MirT)3ˮ6u=<297?\0orChe!T&䖙p\]B9Zrpl>lq{8e暁ۅ&947aK< ">stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4143 0 obj <> endobj 4144 0 obj <> endobj 4145 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 4146 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4147 0 obj <>stream +hn_1N1-A8my\-%i}apjꪮG_?<\7OZ[?ߍ7ϟGӽz)Jgcc{?н:Y`|w廓LWk2ڡpqer /83*Z,6uE\Bo_"/@]JwF#OR9,3Glނ~x můa>m|7Y|ޚHmka5}t0ȀH8¾# ml2SxXkAJ C S `(o;ސP_FxJPs3B.vɮ3-Z҄FqD"5@m@˖V;<`mŭlؔ#P[|ÆQ|C +dkp0a+ ic#o{~/Gb=m֔x9B3C< _DHO:_ z8Lg2͓p:gM"09 q솿&Nhƈ}xE`gbQfꁗް"  XM TBn&p JU㤉 $45*s0J; +!ïDWD?P2z|)v^N$V#艞=,Ncp{AT]~)zLwE$x "xuj䰕K6$DNiA +`¢2\*8,T-J2Wg{XP,fuR8RVt?Ìg{ ѴC43&[ +<XE訉{#vE[ aLJ[qfհ}_f kP=`~,xZ}cMV,h#i9K.C|! kspL)1(nA=l}/s'IԊ1 VBpi JNA;#<( +{,Y[gzkҮZN2ٜX~V<2$uIW)Eǹ" ^2!#ʕTue~f&ߴfiT05bӾ>0`Z39q 7IAGbV#vă]T~nFWWr3r*J1{SHDFXtۑ}(mlH; i?`0X9O4Al+%tfZv9ণOl`qꈜ}`Fso}_'!e昉af΀>s r8?jӼ;G1M8vuCx;v׵!\6O{҇К&~I6{MM˛b$_8 ߅HqC:o,Bm}z,Ê.T ⊠raNgX7pe`^XoUv,1<{,qu|AR+ 䶶2RR?F↩<%IiQ- (?E̊ AcQ1,dܐ4PEvjw3rbuy:euY. p(+2a +]rpKYd3&6%iBT^Kj]IiO?1+aXTҖ!,p5ٛ1RT`Si gMS%HRA#-l h.'qYq hEGSojHl3gJ.iĦAT-a*,Vn[ndկZOc;mjZ)VB~1$%2N_KB,0ఔ-ĕf/&.svfhҚg U4vqc (4:FV8ǘutiyА>mȯ4CAxkr%TtABBŏbkYg;U>[ $ovX+]x1xݥ[R)xK^ӛ᪹J3{YOImZi +qه䒗G[d}nH>ܒg}iO[bW9?/Oݻmy(Kunw^ot-?~393pu_bٲs#n| =~1zO+,[$dt͆veLb>}a(̧kݽaHzj" @>޽>+1Mb>;1)_,1)[cjrLM^䘘cb2KLScjGMM 0U3 +endstream endobj 4148 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4149 0 obj <> endobj 4150 0 obj <> endobj 4151 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 4152 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4153 0 obj <>stream +h[[o[~GWgﻅ@R4 <4}(f!KXȿ7G p90sfg/sۙ(jg_{8fplyzqxwf8nPb{H2y1 !Xi`br0݃>.uS`Wxx6,.lygMk7k%с.a3#ׯu Ӻᢰ4R[ UsSFF+S6W"=7}va-* +MJIHRZe>IO<X; fdc%I&#+ ج]̹oETNz",{FĢliF/C F`-l2dBGDPN*'p ξ}?cQjy-/0KNj.yqpw܋;}ދ=-d{φ= +%.!`\q]hôaZK\H 2!*ih'dX60'#DVJM(LkeT%$84KHn-=b$+VשMfB1A:ID*v[[^YF.J !mo&WMly6DSKWA)5_6 /hZMxlB EU`]'! z c˂|͂\!`~ڧo5_6Ln^-k^鏷5[I8g>_ǓgZkui("v,yYvkVuлI=wcByi lz.()ڵ\my։LG[)e_|A؇u*=< lO*JW`[zMy ].N?\zܗgݏOU|յt!=^֠ɞ݇7(o:fiJhs÷V8k*)CSܮ_>BF2/+Cfay_]=<x/v4+|<\n a`E!W8!ox_MWo~خ++\Մ%zY7L S"PH]L&O=kYĸp_]Qͽzv ciypw +㊤_ޯwq|bHx&? LbLgŀII䳠 Lf`2X>ghG&30$3pbN{?&6wԟ&ɓHkFzJ*R&M4?LYe /fx1Ë^b3 /|BETjɂpj:\ 0O  fp絶w;:wZW;irIY \:=aJ_-PD 3ȌEf,2cXd|H/"?A"泑"H6M$/Gd1*"d"_hdF#3ȌFf42Oi~ +endstream endobj 4154 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4155 0 obj <> endobj 4156 0 obj <> endobj 4157 0 obj <> endobj 4158 0 obj <> endobj 4159 0 obj <> endobj 4160 0 obj <> endobj 4161 0 obj <> endobj 4162 0 obj <> endobj 4163 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 4164 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4165 0 obj <>stream +h[mo_OEn@]E6|t>*dɑ7r{h`y9pW'O.6ۇ짷o.n6W7ųG'_gG'ggQ˝ ˪wN͑.ֽRug[(?T)᧠qX@NXRD>sYaS2 w+T*@9y׈},2&t1&(Eam@{hak'L_ (,nG.㻃we>Vxp0׬҄v찶}9X0a =)#2]N]olι]9uw#Qa>9ScÎhٙ\GZB>Tz㡻`X`ar/gD{&u&u&nxgn&;ӫNr84s+wnF#K`XZJHG'^]=]m;}0^eIϰС#笻EmPQϮ#o鮥lllzZF(^% OXmq 07ӫ`j|XsRv!5 +ܧŞLK :Zjh,GZ>|@e-`Qp),:ܦ3& TRn\qASԃto@oovX^IFx:eߡ(]f +`s2ZE =)B![TuH `@5RT)eypF2lTԨ+XkؾMV1>X+hN8QyXh\P(G..QsDU ջ4 6W͚U W}0z+by4\S1}jZG(5Ɋ}pޡ."lB[Mo5/&aٕ527vL-$RNLnLkp&eI(4,a0a\>=&,y\x,H(@,?0M+X;Z}y艱1NKdĘȱo8R,:wjŘI"v #5>KX;΅^;rZdNc4o8K >MwE2+-&2T&URvEG >gbϦ*_X=;ёʦqyd锐jh9(U;B Ǡv4 W<hm&|Ѷ'$XW0TFo\Q4M ʈ1"ӴOm{CGLXީ88 +dDFT=YsTm[AR6 +Gҷ&js& + U[Ss6 +"[;xDɱI6suK,e'{Wn|`,(ǵ-zNlp(ZPkK ù B_:4#Lo9xϑSv05 fv/4tG!爒WnB +ȕ{F&@X[Kc[&wűk9vp.C3uid[KEިIf9yy\. DmܔŃTh*_ ~$c=!+ض^f~~xs߈|qV? @ps+9 )Ȃ)x9eq+d0X&|Ԩ%?^!xis!؎[1}n;&XQ+VWϫ>~;ENnVWۼU;Fyzr0|w W% x}Y/lGgŗ_Q]O >#w 'Ϟk?O*+V1ul[#{wbHlo_w45\\E6 %ElUu} س,WaF(<*ܘO=ho&9yPO!N]`9 + r[kD0<}1PmA%îI*=]c`9mS*gͺW2cq5McL Qf +_)q ~9_%N +D&fcfk9@+U6)M.d>  4R.[%#fB5CB]aX?^~WNKp|M!~S>]dN"48qk9=R5mZ>N)Ճ軎`y1G2݇ɽ +yft)Nc;iWn$IBo1s7[o¡@ba?ڌs3B0ur`5K])h"\-# L<(paF!fd_TЗT$peg agze?|8ЗFqt/ΈL_146D^d&Qn&/MD^anMGg{x3'ߚ#Ƌ:0v 8)ԏYv6zr5o}c0(#ˠz!VuĭFIi2) *fsƀ+؍@b1m$iÈ^<0< +h0\j3d-" !mHs$d0s-2#N-Zl`9Q<x O2&;fmwlS4𓊊JL{9} T&f̲`TS F &11cv#17B 8 {_Q1tY;|1c9SEȣ̩-.Bf +K Ʋ\ vTЭpS=,GZ\M=\"L\>Ŋ4,ICI| 01KDޭv\ʩϻg{'0͛ݍ65vҎMru-7o^ F)j9{ Eemg*X~?^<8U^K Aaս3_!hH)8i@[Nk^c+[xD|nMV^czT̳vΞQ-P,x@CI[ñJ]H/ 's{SGCnbe +{רz,MrzTI%W//% v> +endstream endobj 4166 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4167 0 obj <> endobj 4168 0 obj <> endobj 4169 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 4170 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4171 0 obj <>stream +hk~~ +ho&Uc-hlNݩ8Iy\{ρCpyٜ6աg}fylo_孨.BVZ\Bl`]-m圮oTx?jQ40X4yn#Fïg ˹6avӫTn'DTԄB&4BzLI#]sQԵ' +Z#TaT/T\\4wo׋ZBUkv( pd6lh`F2Fhi4OͧBs2tΐHRUdOjMX|~lzM^WwNoeMbԉkXPA9q/EK8ˀԀ g/uј77cSqS+>d:u ɚ*4VH2<4p0yWq6(H(,{>kG_ghAO^?f6%%agJ;SgS*ŵ+OS!AS}[Z<#еXҚWBzūeDoզ")%|t֒ԅ+sԫ15(25cr!}YL(:I~ cr>) h)@-f G_b*%V"D̡E)xmVC@ȁ$ l$6*rѬO elP/462&mf=D{&c&GyRq(\ '퍪^=n|tִִ_pkjBnMmMຖO55䭏ݚ6n2J/kyӸr־f"+=߲C 8Ћ w<`{0Ǭ1]GpdNuW'V)? C;MN٩7>qYZxYVҐˑR'-:B(a0R-ܑs?x8r>sGTK28 T F%QyRWl ll&O.Sgvny|k\$S*]iӵvC F^6)k?_p0Yru'^؛尙8lI[k9MXZC-Xѱh)Y)[CwC"N2vn"sF|^whVs&q#"]̫yƲm:Χ9W`\c×gXjSF +-u;x&;>-0ӞϷ?䞒QOٯşjGb-wy <ؗu'w_4yI߷HطUm#\08d*d.%)? + /=HmRPZapqtK.p1zADudF :Swa=[ݱU^G3zX3v֢VôuM-fa/a =o[Fy㞇n+ +8gx݆g-EcInmh{vM5\i8si{ ~czm1wm*_G\ ̐@&~ePےkaY[OEt4XuPm1yne6Td#W/o,.u.\>9/ +T r+V7x7;}H#cYgo3q +-ڤzʭ6uP빡;M#lM˦AJ{xQe"U&b>x/|0zYN4n ][ϨWkqAtk4`[Y):Mk%0]R'jm̃˙XX6'M]Mڤ.6QU'_vx@EJ}*iQȶRHލ]NLc9kpnl\*=k_:o}gc_(s1;&=8jOK9eg(:֖tL5k"VJ<IU9;ıϏoiv9St:`t/7 R*ŧ| 3"I;UN!Q#NJdEUO # |Gۦ6Җ #ZQ"KNvqYW  tMeocm˯l[n0U +$yuk_R}}M}͉}M}͉}٢ϳd{AybȸW]f;߈6qV^l/6*ov?Ibl' MB9^L WkFTPhbhysǯ'x:U%]U݌_z/_L+C/T?P5B~vGb;|qF-Jq%egbEx6 +o_};kޭ/Lfh7ެ/; ypX1ͯ6W'riX&V lo*|pEZz ޹z .ǫCd?Y3i^>-wfϦx]˙D%\^_&WeiPmowWk _^!]L Wo&ޢ!<e:nhӷ{jv/G\Ss=j?]B8v oi?0pr3NGm't[ct/dtifZ'mG}vi+{z댓^q8:uj>DCYoOqOƸ>W%^2n1[CĎz&o'~C#z393z3Ӈ3v/wI ;DJ!;$0v+F罚ЦVVEMZѣtxx?viQ?7?h}ˍvh^q[ϭovhF}n?nFzns"VԌLq09*X82f!BDk(Ġd!?!07h!7.9c8ޱ_pG +endstream endobj 4172 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4173 0 obj <> endobj 4174 0 obj <> endobj 4175 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 4176 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4177 0 obj <>stream +hn%5=_яJ-VZ-hH<9$K@nw0L].\:?//9^sar0|o_'gf0Y4+I8n~wg;Z?}s 4k24pv(6yܙQG(/. v;lP#VU%2D8L5SZ+1^a=f-'l_[h-~?$n㻇w`>Vqp1yl0Dqݸs*ji_t843ؤCɃ2(JLpX^~*uȉ {Ϥ%V lEӥexg@,4^w +@MQ6ù 6nyO??> . (?w qi5ex,` ;i!?]~u}0<ܗopx)]!>AwܳJQ i8g;U(~ mm A;vw+ <pYaoVh zB ؎s!=<ÙlR U 3F%ϬԶѪFEX 8N-; VEd2MPlMy}m6TiU0=)o@ÓV߁ hS J/cS]-)bJ2ttpUӉ#B6nUZP+U<ŶѠ`HiWp$>& `m븟w0yCj'\ª4(-C#ә2%!_AF:@W۫a·y8 k X9x kYP%v#{j(POCGIA5QTI_ ON P`?a ;б@ !a=6 to,ΉlMkq26(,_`a<>8&l<xgW X؆8`NƋ61D>!zB atPp30@[ ^ۣGp"Yb6,)s ]ttj$,Hs`VHlpDhnJD; 䘑N8uD,n<OJ,e(Xb\N _g1i 94SFw}7LT g?ѭiG#hǛx 8KtB؆F)b9ݫNaq8n$ʒ@UoT9J8qiWd0(k;S%z!9I{J*JE4a%nfS%Ϧ^nSOk~mH`zc@s +*,ީ#q^bzofϐQCW숫R~7#WھۏRX <]}tkp**T/:9ȗspܛujp,a:/fBvZ@k ċ+!6u@8SD6y(9ɓ᪖X^ rZN,f,B$cbϺ@t +evi$o;%HC/W_zHB!ʽ9| V| I $/?pr\k`jp'0)d ˌvI{9T +p֮ᎍMtoLt+ yl&1-܀1^+1$M>ْSnpgA_Y_g<; fg7grzϗ=f ZõܽLMAe6f&%Z9X0:3F0``R.UynD004aQ+p6h EE8XmP͕Vۜ_X_r'׭87#P)gTrQ:pc2E bl{&|- 3|Cj شTS#]eOQ|ྻEnWm;V U!`s41A[HGԮf VLkYgrO1c3'kR[:ZҌ R+l|2H"IFn \o<EtҮdE:0AG$p +@=( È[[5A,<4֤ق~["bT),e= Mn HtG9 tR$#*OCe\`†F*q'jq( zjSH%T7|8*!`FZ(Z5r9LxN<^ .wKp;X)xgz.dC{!=upum%=p]_g75s JթLb\.#"aV\#m,)ULFHrAJ$k'b#8;^uS9aӛL~|_]D:%ܤSv mJ>7ș*O@w '\Egz|*G`J3aJ1Gt2=$׶} +c\ˎ:Y +URG*uQ_\sމA4gjQJ3$pYJ~3hZ`gzى9;UPcKj?EU]Ge~\Q+dDɺC뗔j۱x1c81|dNyY4Ƕþς1^K& +ㅁ<\4ֲэk!_"q'k{@?&A_Z厲nϔ񟅰zAM:/>qPf}_ʒl%65wj 8hCq\Cy +of -_]Rq?޾gx#7ajOw/sܽ<ܺe{~=E? $?ѳ26ϴ r97ݳ,{|0Vãw2.~W),@ V `1MδNwt j^ 5|u[y> /_oSKF}nx;0 /3 "a|?rۃX^Ul#E}ibM43f+SYvt59MMf?+AiB5V(v.r{u}˄SL6FI)ɔկL\_:?}7]άW.8RRj²BJQt}p L~\H2A^E,,hrX~bE8]~׏utaq-8ZEJrzFk|uo @XȽ+.o攇rWI!ld'$Yu[ojӒ}fo`Ì߀'F夛i]A2jdg`(3^~#˱4Cňxxke*:~ng\Ԥh)_b?|X/,vhj JAW#PXWHɮ4`mN7&Qܪzi̸˪ume}0gyHAJdPZ]]Ofw|j!QIת C@, +B|F6LN'Jk2dcM5EoWEg1hcC\sPPOk0{^~ ʛ ƆZ $u(8ہ]&sK-nGx໌z>+󱨼wnn\g&.|nJ` r`c"Lۊ6BR'5B)Ο"Ldp7m8ȟj糝OIA +!\[^Y +endstream endobj 4178 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4179 0 obj <> endobj 4180 0 obj <> endobj 4181 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 4182 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4183 0 obj <>stream +h[[[~ׯTD;Y-Z$A C܇]V!E}Bbىd X ͐pճz~ޯ/J7їbQɋ"+MXuHv. ,G?@]TYwz +J;0Œ˱T0TI; ]fTApmXa1nr!PySFF(5+WLE{𣢐ڤ!(VQa2A=c2 xF;u`$DdO \V%Ӥ^Va .PehĞ\]F6yEL2Z#xPN* ^l?[ϣ=G, ֮NjVI%'f xf~?ƾzbe"y[BGB ar"X +0KVi&ˆdCʹ,O6좂_.%4RYiyMݡ楒QdPK4ryL# U*JoS-Y} ԛ*%($kehV% 0ąR;\aeH$a\[D-NtE$SZj +GxB58Qy5)9K2uN$8i쌆dF `tAH!ہM,WK&$ +2jW$H }QVlհITĆ*BsayхZ@:t/IhQ˚k=KFI NwGb]x{Aw"IN#ur͆Ds-z"Xy؜d +` U6tu8Tb. G{uY D'X5ыEiV*-0:$K/D!p`,ROq!'ðIE!Fq5Jb:J`WuXI[ 6xU2@9ڛyU_{u'ف( +sM{r)ssmѧNؽ.mʻAy+^VDPYX5 cEVqUmk _&8Km.=DBQމb8p"ɇ{ ҡ7ڵ!Yo4һ~B2@1V=7{B'!7#B^IK|95:cYCT,mCi3U.mɿJb' s2hUN"ΟPT\2' +el[؄dad.<ݥl'HKꯓiFb{lvbxVbכ vSWmV<>+Ѓ*n8)\q6?Ƿ2^ZLew12j!Y*uB[ǏoK$fyqaZuV~[ږ1/L8%b n] c< FcQ*lsדXe z9P=#!O#m#[oN@ՊOk=K(XOzK4Jƕ=ԓ.wH?I']J|wZ|NR2oP m]Sʏ5X s_={YeWWw5j-8tuβIJCE}9Z7.UBų4m3r7shl'k+wPbx. oabT_,0q'&4 I˹Sn{翧A=PhiI1Y)Px0V:"4 $Hj2orՕH@‹Nsċ 0);~X#FxmU/xNjN:;#_z?uZnfeŴ{G{{&SNГa=w1bZę'n(Yv6 *OJp#p6JWHS!G\6Y~  9~ c >Umݪ?H@1bhD4rJa5yn) etd:<7r(ŸY-sn]\}csl79T)YW{umv!Ck.h%G-܀Yb*-̓Xe&A{CR{C1s|iyfg-P,> E [ +1gW)*.::`Nn)L"L\(7;O3)1J/CMv;noYGk55xW/LƘ6ǔJJ9e4'JSGҏwPzf[݊m_IXVimcHeavC3~'~9E?Xxo6 +yɳ4 +39xygT4n}1M~x B' hQw^~ <r s{4>_ή+)ML3:V#%?]٢c^frr5<='4d,/L[׃)r𩌼kb>76v93f[g>p傾C* +endstream endobj 4184 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4185 0 obj <> endobj 4186 0 obj <> endobj 4187 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 4188 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4189 0 obj <>stream +h;ێ$ulkw4`A~0036XIjs㭺X=3HgX<<"׬f0=}G9evN-GijjY9'6s2Zv^_؅4=A8+amz^&txmo@;uy ya l/48sCT +wPj㬕VfU7ɀH8Tú= ҭgl2C 0MJ,75pM37N> A#?OM(9 vtnhm}8j҄F28 mljgciGނ+B6.UZ^Q+<ŶZ@RS!`Kl(M|cхքӑh' vf疙~U +Wv"NãQ1]R{|*K0 `d *\lOKx;6hl@S3ضP;[Զ\Ti@P]Z:aaҦոT 2D +aO|RxX0n8&l9վٞ~I\8beжҮѓx! . f++nXɳgW['DȾI$Q|_Q]:#)(E*P} |JYi[`A5@FZ/*{Y pۚz55v!#|fɨF= [Q/$jނ#_S 90JB?DE6"}>(= NTc86eJ">鹡`FեJ;55׈pڰx52 KyukJ/Q]=2#]|etV %Bq`$g h<:TyW8=qey|01 ^4*! +bG0 ֤ofn/EAK ? +Ð.b`A.BA*Xy0- -5)6b|h@2J5윊"Y,a2SZx[J\nwn Clc+[ +*'+gtp +U߯=avqF?PGŰz$o%Us\d^LY3g7r];i]!?ĕ{j-_Ujr9ǘzbVè8rmx[ӗ_ZӮ}\{[b;C@ZS%'#61acȍ^u^`)Vb|c.bD`(@"=aV|>;?Fd }φ:6UTzG*6XHza t Je0 {.B6 ^bN%@,3mHہtx'ax#Sws J0ܼ5>ol +ė1/|bCF1Kjk&[>I|~(B}" 15fډD59> }x$A31]w(+&i縓.7*z ̖5ls`pa*o·}S'I8|0jNِg:СbZA<͛ץd99qv 1 "DA7\J z)*,B$^cr֓ezctLlzPB'e( +0rLN9|6$pҐLwsMZb7] m96xp[ *>^  ZsVe@̵6y@=MqaRiF򷝘qbT-H |QN[Q,Nƈ9eY#N$mkE.xl=7;3VY^lOO`-ۛT}ys6xY@!4`UeQrvl#}&pP" D쐤7v|EW*=C=C;ah5 .HP-wř, հ?\CTYW>ۗ2\ӝB*Ι`H $5NT*ڔm'Nc5$5$P UI8`Ҙ0Lr* wWoo+{Qzr})u_61HbY"$,er~Dft)wY+'ms28ض˰@@.;F5ž:ѻn trC5)(9i%2&<\?K~x,Yʜvtvg^W,bcq^KB҅񧎺g*+t<1u&˾^ +Vyۭb E 3`Nۖ{l6܇ % RK +kA\莻9Ro@V.Ua.^c/ywe+[M|}{WpUXqOT&9} qWgF~AR|Z2"&dŐ}҄H&DnJvMoLEwA{w5 3;9D*{ܶ +zˑ1}tvV0`ʶ_m3fy*nT9èz\z6IM>~ +wE}Kf +/ɿd6I#p!?z qwo /++JĔT e+u3#+eIO.fؾ;gO^uA@ϯ;'AAk]]E`W~|^#;x d =(WL)M^F\17g[#Ł42]xʥώh@b(5wP.,QXm6͖ Us[SYw8XmV0:ײJp5Fk0^@LqݥŒ tvV]үX.%Œ2(_,z-Kw7}o/|w D!Ns` Ooo,_3 94@a`NDYAخQU[*:y5~7?N%]zIJtO/i/Ӈb?=ԡ;N/puznn֥w A Pf_;(BBTTIn(Uq5DkLp;Ic6:*BOC+i] ,tuD R$ 9಼cw3+n7hRnzPݩ3S-N#<܉#c<*6 qGP> U +'0dGۖm2=>C:# uv27@>Tpm/lR Mjj4m)\³ =:pmE?Yx0Ѳ 08 xD}2lqܡ%v1%v1x/z^zRrF46<֍>7Ս#m@:5ٽUx?^5㏗-Ѻ<^8Ç+h]:؆F](C-~1>^6.2@nr'ZVs`V +'k&k!" C3FflKR;ۄ: T&c`ຣ]u,qYPlT?8Eb PbޙV:SgidlLheF/땉o r=NquTLwUixMqގ%QYCG*^:T(Vvݬr`羢 +endstream endobj 4190 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4191 0 obj <> endobj 4192 0 obj <> endobj 4193 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 4194 0 obj <>/Border[0 0 0]/Rect[162.3 378.86 265.08 390.86]/Subtype/Link/Type/Annot>> endobj 4195 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4196 0 obj <>stream +h[mܶBI@h!臽pqIy#E퉺 [Qϐ|83%O>yu8~?{7޼}՟돛/ zؿd0?Q0Mo7zPg58z=~+6{yZxEq5*^WFnh7pCء F`oRocF M:e*P~V%k=k+k we~GAs9F8VpֹEyTFRVaiT?y:t%74i ZGJ2u0bv M08ҐJn0 "MosDo Q2p'eKeKeR۪l#_] vFg U;/IPRYk7/;_ڐ;M-K 5tRzz ;X0*M@e-U@gC$#50GFTЌ&"ԇv])BmL;.h*x*TC[+꿃KנGB}g%qSH{ mT!% Ȍ5RBlL +p^SE(p4blJq],^Ff25* lb-x@aꍻ & #qk,ra4p?m N j^jV+vtբcԓAL?BY?ߣrGEdG>Ql Pɠ 1iv] 'T={nlSMò+;*ðŽAےORU)jC@=^d]Ci%RY|ӔWiAǒGK }%y2aÏMr @F]Oˉӊˊdv7|W)?`KlԸ'00`ώ n^34؆]M 60,!'2xSa7;X#t7v0a#H#$|q!w (AH<%;^.Y򢉁?06`D )ִbpBWלKDHcB,dhT"{o>:d +M@1,!yB\`b/:-A=AРt@I#'I :4h54sv,zjVQ"q'0u.i3|m[ S%aN*NT^L +Mg%}.r,(moi(V$vy[wQ {N'Fx`ʍ)Pa)t (9ewh|ش549,hXCLb=䭳^;ns5iϺ\ֈMmcR8N\$k0?A8:&6`ЙNB'Љ)#Yn)nz(P~H`>EwGWȜS)p)`o+2V$~@@/1A{_ֺZ.-%(Mv8?b`17yn'jJ7ʀ!u< +H!.y9ȟ]?]paZ#B4xkLY+<1UENV3FxzO]eGkN4B^3ׅpQo  pa.L4…F0'mNqF*PxI<%76a;JCp5>t~1̗7@/yzU9k+m\J@CQ< ޳ԯ;@}K!kNŕzq/z^МPj^N'xR>}YvZЭuRN :<zx66Ԝl'Aif2RRcG7&TxYJ̀C5_Sŵ2=_?1D4X~EGhs5*6~:x !vx~~nIm#ʅg ;PGDŽ_ +7pc-}^r\4hF 71۶zk(iVIc3J-_q oCM`߂/ ȡK1FW@]n'O%1l?aEQw芢D(F +c]|y +ڟE`y +ڝ +z!_[=Ɯo_0v-x7+E[o=,㗑]VAˠ^ap8+fPc*qam[ξ|ى;qXvOvЮЂ/k\оʋ Q:uQ w›m{µ_ +! +3Pc;TO[3"qTF{rU\K͉@Gs~ݒ9v{Iv萋IMIv{YvKY6lVw|Nesk \X֜]A+Q#tbvyY +c +5pcK|=wcxDnvͧYBy=r ]vįٕ@kMS>;{^a'=v we;r}Npىn~εHrvwѾ 9F{.uXQcx1egb٫Lgv!Di,l&A"2:kz+@pK&d*s4]'v,4vFtVeMGq MaV6g#>ҕmUݵ~-L[Wc$ +endstream endobj 4197 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4198 0 obj <> endobj 4199 0 obj <> endobj 4200 0 obj <>/Border[0 0 0]/Rect[512.94 87.44 527.94 98.66]/Subtype/Link/Type/Annot>> endobj 4201 0 obj <> endobj 4202 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4203 0 obj <>stream +hޔYY[~ׯv@յ/A2 2AB7-C/3as֪v`ҩ9t󻗯u9nNOOw?n~[>}wݜNnqkm񹘜fM6,ǝ]>Z +߻ , xu)KS"ӮLÕL/}y[q8 uK_O@~kZf 0RJ420[^ѤȬ" (K"$2a3, 8^y}*2 qO+IN--9y?f k&32Y//$-5d:0nMdQPdQpyGF0F@eGT)Հ=ދ Ft+0I,9S45>@2u.nKhP Ӟg3Sayg\+WԼͤkcͧy07ToM$L)n.bx wSӢG9,#DxMӊ`k}4Gt?`Ϩdɽ-%2T,5&86#!~ :yqf*U*t-4?n4ף +:Vo ><%QAFB*!< @ҰK dA=BDŘ0e*)ǝez'~3NϦpXQB xo3 #ʚabMط] Fmr(w1xQY(eV2 CT) #j=xU{GȒZgd U/Z-2ID]y˨FqO۬(̼ )Jf=@|@*=5teBZlY/g0l9kW䍺魢w̦5*2-gPWY +Exz(RxCF*AjCҕV=*fWbP nGOA!҆8lVwqmhg$A8hi^|9gkE3xTP7h-9'Ł:ptx ̎VDa8$PHpiv&p+[ՕĻDlq ~5!Du5y@`e :H=֨ [+.S z; qkB;/$mH"#WH٦FhPpqJPB9%؀Q1=Qy=k?>Ɓֹ+\L4IFo\83׏Q:J9T `lRi|baTtdI +h1jiV,*YL,;޲v!%}N2㜋K!$UQ{ +"@Rb= 8Ev~ш;̳9/,uX-Ա[9=h*/iʩN>f,⮲}!)AA0Rho'hԽU&|*C<^9Y5̼"Y4`|GQ^Z˕rY2{#QޱW8fD,ZCY:7ᕑN)z1 + iGyYE=mq fx>>l}dbBg>-\f`)E^5&ݳ^2voH1!I1 .黳E1^$v(R/9񄛔i]C-^YT}a߫ˇMJ@#vq^Y_uSC8zvcTQe2hO#S$vӦ W{bz$׵2|nsYAv:wzБXz~Y(9cIB7 S@:]&p[˱;FP:uM1%~o[9 M +Ca[jQ +y]g`RA;_PeMrc~۬駍$1Wلbg`H$ZWSϗDoA6yŊ3W}Ox s{[}O}DCLTCiٱEaRZg0?ϵ#Ԫo8IN"Kj syϽ+3V[ƃΦ뇣qzѹj<Ҷ=`'(j NTh>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4205 0 obj <> endobj 4206 0 obj <> endobj 4207 0 obj <>/Border[0 0 0]/Rect[74.76 87.44 89.76 98.66]/Subtype/Link/Type/Annot>> endobj 4208 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4209 0 obj <>stream +hެɎI^_G3)UcHH#1reԶ ƧFx@;-7{;Y{wt䗷nnoCw,+R](KŶa]ܺ 85u=< o< 9\Ƶ+y_s̠j/ p{'& +<|[\ť{[>=B'< ?œ: xstx'rcvG\6!JBLkLN +bNgط=:;gyӠԋkK뮥%4ܼx__T`߻E65Σm7Pf]X4t(>>}×O'8粜?ړ'F6  pk3# ;|s%u[=ic +w5೹ Gջa."@i  M +nWB.'<HMm(kOo 9 N5/SQpĈXc.&)p2(h#h $' Eد`z ,I"~) Mx 4JpP\~>8+2Y}Zzf}6փ_/ ׈ޯ~Kؼ92D`)2I6tm* Dd5a|H\̼g[$TݸYXpR` a^x2M +*SB#t*HHfE;#f6pe{;uLj$qXy +) N 2趻x\ چA~FW9Y~G& UW9X7Lo~|տ~}׉Vp!Mq20*e (#$C#QA)@4j:9 ؂kc,.lALdV +W1~2B6j7#y zܙ|<)tcq2٠;hAO!GEd`g%&z >Y'4HLQQ =ʦA0sja󊄆%+MoEmP-& )@NOP( +MR/ol>?-èeR.NOH]mҶa:* s(@gd${p#iOt$gAS=, “6SMndYyϠOR7.mMrPf'82RdAewX{{͵P.5Ⱥ0#6"^ԵPES̓ǡ ;hpb21K:%„^MNGc8 +7C䍈F[ƻ-ȓ-~5DzqL@+tQbsqɚMwO4H2շ˄`9l~3^ a2"f mbʕpڴ-ۥ32gqW D +m6sG>$qʩ⺲$.jX)qgKӤRZ^8m/M~GCJ{A)oCkbb?1:L_.8'W#'vuQ.m8wYS]za| +8 +`nnqM\, U#gLʪD}'ΚOrެ*3z}k'Ϛ1%24wʜ]7̥VnfӮSI^ejXt0YOIsıy_nZht)ūqr>q(e oUy&g, 8K׼qLqW#VҢ\3 ~%?HslQiy+<LFҹ +ᐆfK C]tl^%ZΘT- +2Ѳ]YZ,~fpUx&KvQ{LP|AC}.0_].kuXU/ϩ;J=j4`l, +۬Q.hn[#jc'ZM 5J-_Zs|:]VwM2æVHM5@xOiv;y^e^hwʁqgcgEiPPH^fT`Qމ_Rr{ȵo(08CMKWH|*fUDU>DUOe.=>,K`"H,h7` +ZTUGZ0Ӕ ե|4JJvm䘭㜬lE8jƂCEF 62%@s|gO`z;[NRb ~~3 dW)*6FeMSԹ>ֶu֨kۤ\S_gUemBy40}y) /)?lOs8ŸS?3]j4c5?jtfψqkPN$ 7u.ZpQus5]UK*Z+\E[njom_ +_ ovW$m6#tu)=u|]~b<`e=OA#tLSkߠ޼(NMrqQlMH* 6MӸA +eC(ºI&qR'I5d:e \"\?U[gS24朘횠 Q"~݇{2.)klE\ߗ˒1\Ӕ3<ٹ9p.Ԍ~U_?3tQ]ac| K*c'ŷ4N۪/E ~so$ON +endstream endobj 4210 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4211 0 obj <> endobj 4212 0 obj <> endobj 4213 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 4214 0 obj <>/Border[0 0 0]/Rect[454.14 163.52 527.94 173.24]/Subtype/Link/Type/Annot>> endobj 4215 0 obj <>/Border[0 0 0]/Rect[123.96 155.48 239.46 163.52]/Subtype/Link/Type/Annot>> endobj 4216 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4217 0 obj <>stream +h{koǵwt@dZ~bZQ ۊ{hj0!EU=S=C΃9 ]Uvn/ߝ_w_|췏_~8ŗ_=}yvLw;{w;rgBCS;>RYv~= +/f7x qóY3}B>>^זO?Og"P@mBm*P`cX_Q@,}\5OR_8| ~p]2:}yx.WU^\?`.*Gs<;"朻ŜSw;?zwTQPp8ODAy^|Jp/?px,}L>7 o`w>;O0@:pk6e_\|{HĢ]P+ǭ˗ŧwPhr f7+p/󓛫Ew܅UvZ z>yf܇\Aŵ>:>[ylz}};5볍xrJq kp6ӫ`sIʳo֨o +eM˕LKg|S\^s #7ӺSotg`1̀A;L0cI#Ǻnxנ{WR >FD+Xwiȕ7!?.!~!.rmEHQ[]T +yVdWmn|e,O&Y.u6e(-q|axק^FE I5% ^Z"*6h@wJ@YWb4ouѕK-]PZzxDO/i"AtXị.v.- 0'|W`TK+2Qn*M_̲T3)P +x1gwÙ3TsN֕W?Ífװam,ޖ#]OD6ξyqt= O$X9Ā_`@UK2*'_Yw6k(^C'5@ _yayc}W+јQW +Nn.񸻛_|}z}|ou;q?~<>9=ٳS!gвM]- l&8AЂm_/w% / W (#/adۘYmOS!^-3)N Kz/CPDV,Nd8\4O=9}yJL'[Py:ppnU mMj~~v>>{62 ~R{|JZ)ghoA\ׯ 5 ͈F}uz~ ETLgo(8dOL9)?~+g +b +3,W廯XģsY}/C Rh]e(đru!Xւ7<=/7/_?1.+N!E]C~d:"d+8~38Bh-Xq?}/4 +>2ĝoֽ8jq\Ob|181T%__:"88RObԟb#B "Kڱ>%@ cGV x% +0> YN.Ğ'8{#+OW/i:A@rx b7P(Q!ޘ*/z&񮄪Hr6C1<TLo<2*ɩa6]ϥ{ "ZeT ^ *J6-0xP Qہ!*[!NhʘN%!XsTn ~{8F?o/?b]9urpzu˼ +ftR)}y4, aDEE* T_br\"Es*23s ,:"1AZ#8 +t~|& P\du=P +m^LދK6!/ w+umHޜjh@$B2 RN/Ghmd-)>ȆHW `#B4#ϔU8Kc_iPpsNmV֠5̵:sgɧ *1W2q7+ɯoW7oo?ܽ.YiWp]惛_/~wt|~qqs+t?_}M/䵫bBη>w}A)}8,2 +j#ЀY <āҌ?sVL(|dP-3Խ8Pըoe[52?\.v$DPby.$]9Hn f/YTiYʹ tS÷ + +V(ro^mdˌ?RjEH|߭ #feQT *5JԬ@8.<衰@Ie*aNO@5k`LAbܿn5o@P-bb9 + 0&r%cN{;Д{H,ш%Mb 8dYD_Oj(ds.t<䧒1 ]+A$a5~d%(/؆BiJl3̀Y .gAb(</<Ӥ-,-ϸ~CP"(N 2)-[:[7HEc,kLxT٣䁔R(J._9=|<`{8K 5vZJ֫|Azk05^g1\s(I+P$*ɸ~<xצщf?MdTVѝ"Y~8z6svtV|ق&.ky'=Y}F/){r}1fXa=mZK +f[^-3 B|g:rRS+Ӡ=Ҹi,+28 Q"H)K 0RPTl0ld@Y +2c,hA*r넳@ݳ4Qy'QI=@X0D4\~R)  3f)2Ń\ڨFޘTldL{ 1nI!(jַdI͛ +aҀɍvu̩D*MIQ=ڥհ"bR$3J4L RߘĹ*Kx`=!l쉳Jd=`=pm2ӗ]0cPV H*>s~ưBg0$KfJ/2H>>kiXo:QL >e`^(s +h=,äw9ё! +H=z !u2F,Oq11UX"E|1QcpT~)Sb$CQ>f8+`[# +XT.!@aI*A +g*Dbe'Cב e9Fvd?YZޔk&)f vVIڬ]#xJ3]5r,d! }ٜ?˳1GZ6;,qFph/&GNK٤V`fm/,Fį2|b%$\.s,LB]"T*G:Co KŵWō:zԖݪ_hC BČcM ="f,凋T)xw~QϤffОdFÑf g}@ oz/'_6LqČN2b t*م1ȥfur?;n z2I[]D!\DX)XO@ ڬ2gj?-4kvM'һ 6 +hXjZ@㎀P34<ҿlR +#E#AeTHi2MW0P7Rssu~{y[w7*iծ_o15ٲW1\z0jjpd@e-űL R-i.o|]Jr&dz%mI%q¢Q(X.Eo`+~ZY]>P!wp7)tv*׵Bާ\C0Tb3\^։Q\B0;%tf m"3gspL\M¤RƤ;-fT3R.%v Hz[_cⱾZ +8d'+ʓlhkz5C6N5M^Y?eךhÞȻN[w'1C͂VFءHt >%EϪN7vђkK#n%'MKʜXmɁcضد_f ]X^ĩݾdfg:-qe#ch+ 2B G=F29}_y1傼'<bR:ܨe؉%q4kg/*FVQXj%׶<zYm(JvRM(JƛWM2P]N$KEqणpI)e•}yP ֗ՖX\02Zk8v@[-} WJRktχ|h}doޗ' +TPZ?eb~'Q}ܳ Ԑ +~$*K jBͽa"ۧ.he_W!N) +YeƩ.1$0q!&,>*4Ci=Pcwtnclh=X蘈Nǂ?\(yfpV- +WT79d I"tʇ"lꥭ +\9|P%m_SRF{.C67s7,N^A]h2X6 0OFY+W٘ 9Dq)}p;3*ry8M,q)iR+=FӤZƽӤz0ނڔd%x]\c#.I곑}l9;+ӯ7:M9;aƝr9_)hE +57zJ*FٺcV.Ͷ#,!hy?=GI +a\-2/4< Ĕxt NvʍFʄ2CآJ&L[i}ؘb(?=>h22SgJ,SS߰6(j,mL--3781;3W؊!5?b^/߰mb#96=41$eWbQKmAgi MǜT9gƀAku|:55B 3 +mIA +Y'#u~cy3vn N7XҚ(/vr;78fcmwq*s`%SA*cT V,,,"U" eYX%qmV1XL%P_lOdN:$ȸRq 6yM +'Cz^8CZ:F5m]vO#7׶2RA)K!IuQ4l, +fI.m\|LYR5X+{I6]x|6ҿ(ζ023 _3Ę]_~;S7[o ՊR4ZM kkZvATeMS6{J!ݧpQH:v _mHݶko6lUOV +7A.X7߲M[y+uşEooH)5nGVAP\ՂŵCqPEIIŒ TA+cn,L:|JMM^otP [L1uq*v$hH!>@==]3xCM;eMVVLsRQC,w`<ĎKwnp g,h׬.N n,..aaAflcgJSa|N-j0/F,\7^XtDnOWLclYBN^wkSp!1?A^YA˄ f3VC.jGk~8nw%Ot#KO1%;x +Iz)$`r]yc{ϾM9śo@4_X)àiGqe0n̟#Nve:?tHFbG1_co\;MLӊ"*ftMȺ-NxuIty>3BسW8h䧭o5|Xʋ|نÍ 76}( @t"ʫP? zٕL| Y-֒dl&GU { Vucau6)0v/Db)F)MYMgW3Rߕ:97-VׯutЭ_pRXykVI~^ }lm'ުMm3lCaf) ["1%hK.-I-m= ҲUh%sR"SGm ,r\FwLˊhN̶)\-VDjaS]Nzљ̤^q㇉wSX3~̾Ə l +F㇪)c^fh7Vm1 ( -´՘j#ԇ+9'5VSʲbϤy+0+|JOgf[t >aHZŞݛ,{쿓ϼa@Vv#|D9軏 +c34SLf:c!Tla>fVM6q {a3M {6O޳%N>v2n1$7_a"#BW8̱!ˈjSwc"V1 Ɣbl/yau*ǖfe& [>FvD[`U]`W!gi[&MBf"8 D\]ӂ]cMh -ͧۋ]噗ߞ`?\IwRXb3Dž? NÈUB9ax}^Fr/͎ +endstream endobj 4218 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4219 0 obj <> endobj 4220 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv40115V3.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4221 0 obj <> endobj 4222 0 obj <> endobj 4223 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 4224 0 obj <> endobj 4225 0 obj <> endobj 4226 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4227 0 obj <>stream +hެ[K `z]X099Nv˲CHgFRCԛEȯXt8No~_nzWw~r]kG_r}JsX0=[7w ~{}R\X%Ugk"om VZ]:>Z9ZﳵsC{cc50s2Ö7D S\! k`VrkN7bֶ#lĜnw湘 H֬͠wy:q+|rivu8jMeBƽx["jLyС=( L5~:p ǻ<~oOy:I4*O?a EaqQ{jeN5N$R9a8/O]y]̰;?/pufX΁ű5ۜgeq2pcXA`:{]UݜbC$vay sF6e _a(E=g_b+8*fT=|uߐ>zJ4ɩ uggн?s]T<IK\B d9D)p2@-hP)!A);*bJkc8z$S!@&hg0^+ލMq^S +.Gvm4Jʥ}kͭ_fW 2Yd}55'e=H]})~X ,ӦIt-礼3:M$ÉgaP`hC3ؐ_0u 3B +Hn)bAs3duXR~Ge[CP.Z*|au-t=n{æڙ}:3[60XJ( ^?^$6-Ì_j\s[K@iET68ǝ/QZo^RVkZ)J(G@~-44n{[}Hmkț0q +!0!n A6 TД:PC*%58#`dxLUiAh@QzDK ypO^[yn\$U +W)kLU) Q0+u&Z{C;ȉPPc,KSt:LM=ף@Pik@TXd\w!yɐ@jMWFrƴFT55R(9(MA!h,J*w`1 IszV-:w4CjY*vxuTU.qv~a'ˡqDL[DsB5F6Q8Q wbp  7=-PJgO&QE0iiKKT bq%iڵQ 5R(=ȴ;ǩ@c T}Hh$*BK؜fQTl'F'iV7ߤpժX<Ȟ)y4zAMi!u"!X.wX{2\uq#$=fԞ-yЙ"lbӒ^Q}6clAq@juRiqjr3AqAڍ*|hdu5, k-':-WNxʢ޶(;#aMզM`oO:sR MXdYa{8~#)qa&;d}R~{#},#{Q5&?Nj˜`4n30G{X*ᴹLp޼a'wIE5d~hRkiԛӑ7`=G's #:[z1 o主Ox ƒG1*Yas.X,E'u5tsx3^k$U1Yк0l49W zppeøW +~]'*Ygrr[cDas2u [nlx2ҕG9Qɞr ϔYK $Hi/r{6$S%_uZDAИ|Zrf[1leĸ)lgM4 ؆2!!oB]sg󨺴!\Q&T1ANq^.苙|Ⱥa;xnz[0'}&,d֢#gdǜZ fE=(`[\6iQ8ﱱ:[53 dT= +=}CD Ej]Rb}"[ch{'놀+r/(hpsrp7SS[Ě4@LeM˕5(cWp5-8DȚGjx,@e09C.pg$*V0Vp7(qeUa s.념IGH wֱBWj?bzK a2G, ?E}'Q}SP-Sd'ܭoԙ#| an|57n<ѻxJh sK29_ Eiy2W!$cm\FB}dR0P6皿Z; X޽f4jf!] sN_t%0 (>`mw t( +WP,x"ST +wN'Ң{#y'y(CH41Ե?w4:-HtWw4[`|uA4y)ey,^.CC]x]XFWyZg_LcOƱ/= X<cv{thP=l:#eig1$,}eROQ2gOn8zGRubIøg;6hL4b*DNufzיDt;Y%xQH\\<* 8 I:eձ`:-$)ucRtS9o(c3=_$UmJ:@iGfPͮ9`A5CHeQtXM2>0JɊf jo8]rI>CWJ D5!?R-?w(ڡ_Q2ĭTe:U8~cMS)tHg>oo + ťl洛ϧh-L"dHiH4O_&`F{`ͼ⹞6P52,f(4Ը=nucFn5Ix`W1a|MϧẎSLV-c$4Fv܎Vy$-kpx]0d^}U#Y)Jپ& +!6v+ lPbMÍITUI%=W,<$Kt7\n$Wb<׉/ٗ }≱)jdRh_/V9$6 Ȝ-`VwĴePցˍԸWaz47~`Ǹb=|x2P2ie(du`+,:. blP]6W9s/.Qk)`^a|e83R7PaS;y- NTuA=5^>76Rvkgf Ggx߀•7!\D}$%PB5'|zŷo߼틟_{O}J:~$y-fzbbCd,4D4E8ܵ5׶%\,l<-[rLO~Ð̣ɗHՄ{o>\]N%)YA,G_[/x7OWcyO P#8)(M +endstream endobj 4228 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4229 0 obj <> endobj 4230 0 obj <> endobj 4231 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 4232 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4233 0 obj <>stream +h[[o~ׯGp$JT4V'(PK"N͐K'Iѧˆ9;Kù|x}u}^8>ϗ_]x;9Ӄ㿼2w Wy +Q0dv8=ۃڸ|_hm= ㏉'Ts8}.}N6&oTfpb+H"lFz?RWPD0MEj +e=qʿ("QO629UVo Jpx~aR>UQn_]U ]/X0жJ qtYX!ǤA9ŜpypuPUPC`i易b:}<ޞwFKkP1\*P>w {}&Ba&JصxeLvp4NYO'BL E?>@Yּz7Ѵijy?i굊̪Cx9Q0Z>n)ۧqb8|TUWw z?)>.mFȮFYSԈ~avmϧj(Oi(0ԗ%^jƢņeˉXx,OG/g {7)~]C0lCA9{XXL@wjO̘GӘ )p WzQ_,s /3W9W'z#yDfed:&lK:KbPs骗vWPk&!ɟ%, K8ԚI68=g_8}|6jsyeVYlׇGX=70Gl%=yC~8+85SN2y;4D~:,7?xx9\~`ϿHiȠ)* g|pn{q w7İjk e - ofIxO#Nb!pwp}7'}/+qXU32,W=|b > C %DV|dFّ0ruHb:r{g,i*Se#+C eEr$5/iNQԲLlO@%*C,_HNuf*[8;$+Fɉ +;=@"٧UTrf<gLg q ghmrVh\p av.oo)ɓ mgVfh'OfgVo:6'.Nygd]ۜ\oӪϬe\7͉+3bW}Q&YYfMn)=35؜քQDj۵oT=Қ g٘=3vcFBjbil]93lZ+g H')!̈sfMn]vkό&cOivcXOkp3kό ܉v1&HkDzÕLaš$VG~ T 6 b/h܄ӓhNR5csZ03.v^ИvxJR1"9;0gTW[pA˾x\Ŝc"ZE񡖪SsvLךUhTҮ%d=n/ cwiMM&ׄu5B<+}GLIC"F෉lII9~Mܔ8&P)!Xv$(J 1%"6,<#' n v@ӅB h͒VE㧲.N4X#1 6012!ASG1YvJ?̀P/]w1WD +hޢJ!3VaW*i 9ECi^zs +>>ae 4|;LFǮ-cߎ0k2q 1 b:TyтLUYqXS+kd/,9y F5| {D|, !PLBP1pW;"N|LxO*P$CglE0s JhFCsdayJx(S-Wb,1X|8]J8{޶H*vbx ;R^KYm3[AQiz((ʹr̄Q|䗒ž2_ə 3 ήR1a5fѪ/-(fWew,mL9W|W}ɕ ۮW> Sm;Oݔp % m)k3`뚰v\.^G4$ǩ#@pvU&t+m!&.Mn7Ʈ c&I:vƒልYt1#cް($%Mmw[JXC'#mV4fV0^8 7-Ôp8V$b`ʫ/VXp56%jMPȋ +>ZkgЯؼ|0fS{jr!5OZl=F ?ַZ^Z`|~aبݑ 5 rز$fB*l-_쓷VDiǵUpo+yEJ>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4235 0 obj <> endobj 4236 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31076V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4237 0 obj <> endobj 4238 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31077V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4239 0 obj <> endobj 4240 0 obj <> endobj 4241 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 4242 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4243 0 obj <>stream +hެ[Imʵ2Qь / > >. Z<<7tGDFDFV^|d?y{o_?~۾o?}x'7=>չi?#Ӻ9%LyY}wR\.K7H[[¾34Vw.mch{+:ٷ{ּVissp3pɂ/[^4PkZv:W?79&Q.3hs?H$˼ݧ9a Zzj%Wr|{W<؄=8]OXH{֬ wL%N'f[?W% Gfn(1m (%jt%l-O_}xw?|OaWzKO; ~ +ܔ<,V:X98k\TTK>6v?װB)Kqiev1dOá֥ sq,$sp96g:X #\sZ:Sz W8޽s[f2 sX hz8w}}9#`k /R0o"yNL3H* C^~: t_Ho=‡TӄПd\4U q؈Aq P!OlwX + P Rh $(eGu5 +kcP͠TtH,I\3׊cISKZ΄ˑ][8ʾV +Ow+Id}3铒]Neb/N&=:b܊7dua+P1`hC3`HtMt_i!OķSqEk 3,h =^"s>驋Md0~r3Eb::#aǯQ"\k[*%~+MRd#F`{x}BI'/DׂJ Ks,qVCűb:04ׅ/_J؎~g?sXd@*BpԝScH04\jֿ-ޙY&iivM=mzO~Φ):Y̝汕[Ҹxئ>T:NH׋Uk)ċ3sDBduk~EJ ~05MlH} kؔq{) t$(4Ӓ7$I}rg#uT16s1f!Kk}6q&)So^ZO죯<jC\2vMȶX{j1Ӛ .܅ЋE +rhZF c`*iq EC=wHfz.j7Qɾ@*+2Ā6aȁܪ )!Ǔl9yapd8ghT8 +d Kqje.9veK[OmCZFynvt7b +x5IлSN3R +Qyx67SO !̗?Na).{(뇃ł `]{3>̷B&-amnU}{7GlT du9Fihjːà`I2^m`4* iVlcaT$@.cGcxvP@cT<2toeQWz9+\ngOҮ\| +7n.E Ge2wY љ&ӵE~(?Ub l_Mfr˶sL44$_Z^.94 Ol +a\d{rdh Hl!5qמs졊mHУ ܖݼZ +X-WۇL3" (^>)_MXhV?z~/;I]`2X2'|ܢKhU{L# +5]6Q#Ωm.[_Q=S)r|=tB֗Lq9ePJKAT4W$^j`D-eyTHpOlZإB[o8u1M!wcX4Ih эr~skW\)z mu,< 07x[}A{oq&|b:"l҂FF2Q3+rVFS!esC]EC nz ?^XHk}^?mtJ!;/93w >ނɝgS.F&ddK.Jy9aM1(FB$(Vy~wK0Q 8N`qDsƷL՛ڢv-H?TI ߂ſ~ylgJw@zuua=7W29O^o+l{cΆ26>YQ¹C>}H [uЪ8qf {j yy g :).NY!Gb.ʹ{u(Q%#kĵHz#֟p}Q힤 [] :<s.b{Y m521$,E`}kkp+< +CnUlnQ8yu^.gǩCb$B4P0Z|ēŔp:VkY<,qRfVA + Ai1w/p̠SʽKw:,n +M i*sM\:T[SƋtB3m޾}=oo(n|&S6{Gg $WTpɐ]ջߣ^{\7wK'G^MCw3UH D{'NO7f–cZ!Y.[LJ-)l_-:v=Mo`c֠Ht׼KW#y6Tݼ@m+ź$h.ȍ@z9@i|N,< 0Lb +endstream endobj 4244 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4245 0 obj <> endobj 4246 0 obj <> endobj 4247 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 4248 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4249 0 obj <>stream +hZ[o\~_qK~Tm 6F2JV"+G"hf8$bWo^<\߽==_xSZvWHKAx$)fnfR*vo^Hi *nРH!]ʸ[S"?UžLm%i'!GƾE^|&f!0(x +wE̢nuH.FB:I +b5$4z2.!2^e8n+j\/Br^mRJ!_n6Ey1?z餂qznd+Ah^gþ|黟4 +4ID[[J͎?v{a9~uYjŢKm?-oaj17x /no/=>>{;Ldw{LjIITDɷ%[Yn +n7k+Va!V$Y!_BZ`BYi!頸) q95 +Ec ¥kZIll8f(M]xbpR"hVq 彩7f jLHn-<b $+XVaS1 g33 nL5찂,#=%H}=^3! -f@ mW+UV7 +EPa',Acfy*+l4/=.i&6Peͻy\T/E D^.%lZ0}%T|5-O^HWT}cêlK'ټ_s|Q6F+U9mo7lI#bZxT7{h7/WQ 7eX(2,_|t}28~kH9~K(x4 @j`5bScN9 lVB V9rȯ#HʡR{ +'epO:}y̖1k>EZk {"7#N9N*yߙwUgN?R =^?)Y&WSV!p%bo[-qYYzw51+BڃB +% %R&5e "pFs'!ώ>]Tc'Q.,pZE(NDF +h2!#wFg`KvM`nof TF&0wTwF.5aTNp;K~M`nb@  + ks+'3Zvj;_;xG3Fv&0w*^hh@RB5T ?TT(uS劼bm ar`f_}T U92\q3z?ߓ#2 +>fyĺF _F xN>FTk|9E>-mh ͇dq;\v{jȡ&g:Cng >V/C6 1E a)(C1MJ|u@b͜p2\b8#nH9r'GWUy]J)ag`Ҁ#Ͽ:'m^"zIqP7#(-Qޕ"x`.tlXWuŔ^#|P K=bJW98NsxgeuO8ɖPbjp6]CM3 `je%sG$™EJ Rj#J7;)[u&n$<@>fȉ\smNmMt|vc{汆rpg(1؟>26r!}55#nPx:9eXw "ܟԁ!#G;1}>с@fU Ot q -zA iB|JRl +nWQ ?]!:D9F+܌`c ++!5!z 8C8Fq׺` `cՀXH7>j| 576LpgP[ O/}W^`g89$0sHʧ5!GBb ArkBB*yksCU2 (]Z̋:Q$ѠuBF,EwݚЕq;#ig̚pFjNrLڵ(`k%:soɢ_;KWjJ~@GQxd]ZkPAnM5{;:ֺTt3 BQaã~*`n$X*ękvU%CxnU +c(1ÉV"Z z 1AS$ί cX=e;yϫ }V>"s&Z2Ķ%W_+"O3-Pz +\v+C2"}j(ǀ]&zbLW3e')bs)_gב)˴K_Nߒ$1j%-7ԯ#6JqdnBWۏ5(4rJ^Ot%4E9CҀ͟ܦ_}TzJA47-CQeu)R<}NuA젶?uثhf/-/i!V_Bv* C[Nr`p}:I_mB +endstream endobj 4250 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4251 0 obj <> endobj 4252 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31078V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4253 0 obj <> endobj 4254 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31079V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4255 0 obj <> endobj 4256 0 obj <> endobj 4257 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 4258 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4259 0 obj <>stream +h޴Z[o\~_GR 4S4ڤ(P*Y,ȿ7Csx6 /Crf8 Ovs{q~UGG=;ۋWϏW?!p|Ut1iUJ^l^zX݁~^9ɘP :~#˵־cC9:]m;:]e nD-VwaCn!^2Ջ +~(+m])EiJlujة.v_UDMEU?M9hYtּ&kB$lAnqi7r?Ur ?8.W9#D9'Qb]Gmq('br_<)mCg.%kcg/CYRU۞q7d+[jX_7^q5'X*@:3E5YINGM?Y5pZ|c!=xp'oc7P;jRvVUX|d[{\x{ +~kX-u\VkB΃_:OL7{мB<C$ۜ6>IO+ L^!<afEbaӌQUvGhj qM<2 Ld'bPM +;)kJF0_۝ά' Fq'&`lg_hZzQ)"?0x#yr 0md_].+5BZC10G&-OZ4HO1s$G)j[R?Xv+cDh9>sI(fwy„WgЁe4ߞ.>@THHDr3uw/(h 8xslR |[u~y*6A$x(/muN_@ÿ(gK-.\ݘҿPO4Ii RNZhHl6['BqJ6;ˮamr Ta ҂͢ 'Q.=/yq>YKqPU3K$ #Q=܂S){FFyS$J{Zj٢'AyGr_nݓ((0n+ԓZq\^<4szr?h|3{jFQרgYG 1Skge^` 65תIE9%.xQmE9ithBT ̨) dEux#f38 -WSKp9:k&b$pGZ|RWVO@-S# u\N> \RPke;QJad& 0!X~'D_}9wAjs-}AZޅ@p,݀pXRb 1r,~cF {/c_{ wXнΊyR꾼lx`v䕠~|Oia0c{CKдui,V4N&-[OR-gȁs +fbo@BӋ3~pLO+f"աLb9ʕ)fPrFŏ*fPeC?^̸ZT3Sq%0rxm4$}^ u=9BC~xSzh(_C+ hFLZfkGcr}Nc7Hd&Zf4º>/d4nأ;m#0%l ESYF#=ddH8 7q RCm‚kZ GtŜV;r2%͍x䫉NΏ]K"q_VON6SjK3;h9OX~7qxp?]r;Xg@⫡"a3tO˟W XUz&HwFzHξE' + ʚ---YJA:02z8~HW?9 p hNw|4Syh#cqhA/_"d'74Ĉ`3 O{uis?.N%/F/\7#E?>)@o}ူPek\S?`Xk @s@RUı jEoO7_h +endstream endobj 4260 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4261 0 obj <> endobj 4262 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31080V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4263 0 obj <> endobj 4264 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31081V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4265 0 obj <> endobj 4266 0 obj <> endobj 4267 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 4268 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4269 0 obj <>stream +h޴[kO%Gί(X$6U[a<ږY4=̪[4}[&2*8Ux{s}NN/wWon]=޿;=gy7|yp|y=\A'&1!9e˷jxsp4*pE?6ȏ\R=>NG:̞Td1xbےmUZ?_5uce$ihS56 6Ib鑉gY8l8 ;WzFI*a + sה>G)"m[UW̶Q\ tFcsbix>9"(ϱ1A?Alem+m+m3jka[Gc-7-:QQ#p5lsvQ9sBr&}a;xGZw6ʪz O$ȍPیb6c I׵&FCy44x֍a@w 5im=S5G}p.vNf[[bhFkjl\Tcur*e <MwVҊkele[+pcQij +WDm&ݒ!Đ3q9QU"h^(ڱMyJOΑrP* iD"y?I ѫ121F=^ ֜fC<9M}r'S꧖q0MZ˜cë7c'+Qo/\t5JHmwҶVڥ+m[>ա<5>erOm\ã8MQl>"[&tͫ3} φamzt۞nթ/A/VȧҺLqSQ"s^b,bib\ޞZ!$nQX,畻_:픦W ȹ [B4oE3K'ܯmT:U +&-s,\/F:. aWsJoɎlNچevY C"-BK,(ŽEĂ:k?mn+Vz3'Rՠ=]-|T9YbVV xtBWʢԓ Ǒ7qEP]$nwk.un+ 3p9W.o\Lklqcá\~ Sjq=Q so^]X뿰3X (G"iUF0[|Ec7dKPB6ۻ 1`ٷr0X(3jNp7g"mpYzsb6Ex@_ooWЯp}E<7\1o6ǟe.lD`IC!sv9+dL ?i67w" 0#b~ϴL-Ȅf3raf0~np9] ٷ_ qëab"DmA0/h$)jgMWm5 X/e{,P(os N'|O\J5R +r?S~Ҳ<Ƽ8032ɧ/B/}@^QCIt}ؓ~Qi㽜+V3}BUDX[X,$Ѧ^ n ?ߤ"\d!S VpfW#^"U]w=90E'^CnfWГS$m/*= +U5Czk(.蹣 z(Rѝ}/\XsҚ!uɹ[2[fHgԥs\\݊!Eg͂k6RN#܆gplO<\]6ktԓs7:j 7l̂ATD+2fuബRL j[lG־'g3Rm@Kr6ݪ]Lg-mۤ׌b*ɦYIXz(ة^dVb(e ^OC:,w1-} vAvgQC%F5XNOwBkNkF%;g#qAᷭkp*i(Kaj,MCdTy%yĭ_Fh$&koCDKRL"ӂz7ʐ!@'%V n l#n +&Bg]u +kQ N"C!\Lmht<s-[1̡V)ڧ>̭( -n>,oG8¦"1OZAf!0%gyT3eR YpǛS@k}u-#pa1]TR +5_"b\`WI`%}Ͽ:=gNe6M OxB/E]k2OwtE㢚bE("@\ +Rem.|t}wwi>O CG88Vo(1oؠ{ ξV+J3|"o~yX(2vᶍw,dP݇pW~h%M XJ+!w_rte͗)XhOGE`u-%y}sJ$ۦ~r3cru6hAWYn^ $\,gw-G/dH +/d4/ӳuRS'pH(y*x}6BmiUNAp~pv10e*S} +1BޔZcXrh^OTV.˥/p jL蘞bA~u[vjYY.O׾:`+ьKx%$qfXCgO~+oAX0w  jClX׾R&~tq&)֬(y]o6"r_j5<L/Ɓg5KE`,knT+cr89]@]JNjK% ȩ|7nneZD+2ԫvEwPɩW9lZU~lj5(0Wf,l*D*I=wDT+[KF+QZ.h1V]2Z2ջl1њU\m6z*P5\Y;}ġ[3Jȧ5==w1Y׌RvcmيQ +.Q>Y ”_3vy~_啔\V 5IU[%L>,ι ?wBia[NmPKea8{1 v7@/7j_/ѱ'!7 VOj)D|RPs l|aC3~g\z ])' J{ `u\+,Gש3!>N;5<Zm;$ +x!<=f_%_g>sp?A`5!?OX!;E BY21 _*}Qt ΕO﵄f`%SMY奩NN/}[g 鉮|m뤒>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4271 0 obj <> endobj 4272 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31082V3.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4273 0 obj <> endobj 4274 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31083V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4275 0 obj <> endobj 4276 0 obj <> endobj 4277 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 4278 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4279 0 obj <>stream +hެ[K$@g'$H`= , 60?`0ZCbx~d=^ϗm{z]?}͏{~xz~wy~}hK˗/,>_JKk<^yX_oo_oЊ˺=9Фv/:Coy؏>M믷їC6?_Ys=| |zY|h]XZO^x(];Ly\dLIӒ lݴ[y#v:u GsZo:楘 Lޭݠ^j[j +8<}}Wj)T`އ OtkD3u;PL---#(O}O}Ӈ|^I4*_~D]D[uI-^H4Kۏ>,{\Z(ЊZ|be͞x/=09P۹8c55f|YZچ.96}ou0'.G.ej{nzeC$vay KF6Wi|X7Jf/74_~>7䷏^Arj邺7н?MK[ӥ{I6h =$;rIOAM6*?Z sV0`t,I,ڄMqK@(Qh7VV$5X _Cկ>)Aoek@ޗ ~"Gត̙{QC&΃q-,0=8*LMp]W] 'dfZI-%T,nLQ v{gh*Ov-U!Uo6IVy4l*QY|/GoIdmP鳑ϗ_80u1ọDp:~ +kx Ԯ#hSv;8wW8$,'KhXN0ٹ~Ty+ @udN^+A?y{/lnSYB9yg;OX_{RPKܙч2ΏF *'Q'N#,4TRwrB@=fZ#=N?dMHw&=tP]Q#_?X%Me! KUaB 1"e!3X$ OreYt+/{ 9ȹ%㳼 6 vAEMJH ,dGט>y3TMp)΄8#BDWWe4#A`^6%^qE>,[G4` !%%a lH#J78Eb +e}:JY2{3-(ѮhYLc~7@:i8ʫګ"~;* D1yIjf- K̒(i779v8_n}^NeF=Ab$Ă4ڞF|]ϾD@ 1#E ֛Մμ%9-uC/p%ֈyL7!Hޕ1KcS0QK~Mh?/a}9zHMUL+3@PN{:̌ 7Y|'[qȔhz:g! [Ë8$Ѯ*. z@PlEXU6Ƹ.Bоҩ% y OO(?šT6d!lasCw)rtRFEh58{X:M$2pqoiFYQfZ@mά:.EqJ\j^cUnF۪{Ek.EeṪ4#:SErk$r +m*lQvyPN^@FMI?ig2l5tV㪴C0@jw׶S6͋ϛ-o^X!mq%]E6xr hvz7^uva;п+2;Nn{[`l:y:ӛMcחWOM4 +HiZ#-vɤL3И36. `^oƟ݋aj8 +380Q6VtNW&RP7V40ΰ^^2^R +㽻}VNF(|uS>cQf*TUjZfMIߎ!eEU{Sg˝]\0xHGMD2|'n9qh.w;},eLea9H0I+FŏcǦ+Pw6[WZFf8N1z%ΘG%ϧ,C]맨Ԛ'R%0:6L3==͙Z哯q58Nxa:Njxg(V̟CR AZ?06os"7չ(lQ/#j jZL%ŧӝo]lGki`s‡x9;I)I۩HrZ\╭{<xEymcjj#olXő](0N5χK^vkN&9kwl>)#:dw:+Tp$hx -q-@OoBƷ,V{ 7t(m7lˉx.:rfkwJwV0ٵ=Nu5mvI 7DsאCyI>XЋS~|oj8JxKTiԺyLfBo&y{\U6gwnQgkx-j\{!`OɃ-{_L0A/+hG ¶I<0QkJ$Hiq^ M]ؐ"F>_WؖIk iNx7aᖽ7<R{8#%SbT3 + Bxn2~g7ȇ_&#xsb.Fq +Rw2KaE*S+mԣ"T5lչCq`AmX cO~{hx~k-m ķ//JQQzv`uKBL\c_=8^CW@?m>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4281 0 obj <> endobj 4282 0 obj <> endobj 4283 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 4284 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4285 0 obj <>stream +hZ[o ~?b j. +hh +I}>8AKR]YvߏٳǪR$}* \΍3C~_._ӓݯ?]|뇫۳O>=ߜ޾|ۜvzri0>LIMDnI)MnnթRῂt8d Ց9%XyFSbM':]6"{[~<_S;%&mM6Yc`˹NTFK2!L8 Ux^IhCACuMw\]_\<_{}rwXؤi3΃k5!ɧ20oD|\Ap]x+LڹNiSM*jbҰr4yLi Yѐyo׸ \H `^ܧLřG 'Oi`T $,oz +dh+[<` O+5X1yɳ0dbeReg*ʓhaxMn7NOA a%e}Jn'~q)ny߼"6XSX00uRNdGaH )y|G.K^n˼VÉÍ +V +3 umfR ,5pr\ F̓`yC̛g6N3–W^LOX3lylGLA(M!fz5Ws jʓka/O|j7aJCS{1|p/|SrlsQLV-b9[+|VЦs4-| I >󲹆Z(+eOX\x,O'w 9_y*h@ncؤ5+!Pb+#eF 8@)2s4C*A ː_gTy8 iKݧe܏<s^u6½.5}/qi_,}JY +pgV P=yVe4e]fh9\`qeЁ(BO&J7ەnLt E%Gq ʅETfW6",Y"K>׶B!8>T%gT# Z Nrؿ%3!q(V-rNjk3aN[T@?(Xiog3H8kmU!Hudm}GJM^@9RMVTB`D₝8j%Douo[lg ([\=o/y8FRci A +A`vl~}L hq8wG;3 X.d~ӛ>n~ͷD1xv7w $ +n߿sY{PApEpc]q7z._wJpm'r7r! - % ,\ȹ~yf9T&e;Hpl8o |qpgg:p2"k!=c([YVv*dSBTp(`e$`=<V +dSIh +XRG5%d * +&sg4mg%GKaAw(.#GflZ+iHD??;MyJF9xxmDN5,:Y˸;Mg6sD"d#QG|,N3ٜ]$rMg~A7M Os"nN DC6294IJe9DZ_XV4B +'ȝ7Ȝ]9OG :"9ۦ2gOq9O3ov(?߭Z)5pD1dclr$Ts8i"RYuZp,n f9h7pzϐ|В/j-JN6-v:A08G'M؉*l)F/Yd'`ξ +~<\+O2dtZst`zY]\$On6{Z/'HjB" _y 8J\Vn,Bj>@Le4lj=8$ ԙƺ8JIugt?d᫹~$$6ia)qcFʰ?vA"tz~؁ .|+rOd]=r#)XD$gֺ͙?s|U=b5q@%2ۓxw\i,@FW䬕xC̊Dg=Fʆ 5\ԓM Y Ic{tSt5Z0jJZPaMCd S@mgE řT i_MȈޕ CHnA7Eǐ!AtSzPƮ@b +a SkAJϊNkAe>ʾHHpxK XĿA,Bl[j@!8Ä+^PSOZ\-qų*1V=9kqyЊgU8ZQĮy l\9šLZ0A6jB7EȹjInzr}(PbJ7EUZ TsMDžS+'ـ\k幞ljIAkAiƥn0i-ȑdtSD>o $b +A-/ +`e۴^cBLR7_BۭL5Gj"Q8b zGN #]"H$THwL-OBش3nm %FMYeuF?.6|x17D\/`870A^^=A uD^$v E䨤fC3[ܮ.p +_NϗW?uwY׬6ޙo5_ yC>f]qH;O20>8zOدڻ>9I}^(޿JSq/u! %u\q#/~;(pr_7*t=x7 <rkqU;~S>]KtlAˤr^Ni9YEHDy[sƿo z +endstream endobj 4286 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4287 0 obj <> endobj 4288 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31184V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4289 0 obj <> endobj 4290 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31185V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4291 0 obj <> endobj 4292 0 obj <> endobj 4293 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 4294 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4295 0 obj <>stream +h޴Zo ~>:,z:ɰ }H½؁;;n'Hy?ۗti)QER|ѓ]^m濿p'zafuXEjs*DeG*%]6NmWF[iclo>^dL(:T`\`PqIWy7sv[Q]T&4"2ճ + ?Odu{XsyHWQSQOSN1Gjޓ5J$)àิ_+F92>CO+b +QN8 sit@^9>`7LVDU.:{e3 (h;u$g؁K1uaQ(ٓ2C ڪÆ4fX +rnCTз6œXՇ-l +RbIme&F╘F]5 BhuCC]\Ʉ_讨-&q:M#WF22D~h#<7t&]|q/v%ad7kKQpKNv%ftȂj) bsb=jmu!ALelkm+0mA?b?[ޫ.&/̆bF hr@}v)A\tד,'[#$XJ#@q2zq%VlS<"P~j: u3v/87M`i(Tq[gcŜT+Nª7Qt=HUW=x)®u 7`ӞmPq̕1YPxy\N `@L +4b7B'Vf0AX'7Q)~%8x%uҕ1r[d̖{xb]Gm8س\Ǘ+9!3qdg/N8UbOӸ법-53lүk/ɸ!'X:9tfj&1kxq :@=aYCHMR%Ns !ZNODz޽e(D'.iwnnQUXqr#[T6xHQNur-Lጂ`*ߞݝO?짟PL9/)N8~|sc!!Ɏ8^2ٻPZa$?q#NNn=S:ʫooܷEtpfTr$Q,s>@"`SlgO~I[/fja40QF_o^zvP)[6 +Q^E= hgR2'1SE3C04{+m8&֍ +ד]L +D 02ҫL'n&``CvD6]L8=QLq& \9ASK\YlRY}v3iFpW/͍-˨5fLPs;55Opѭ쿽RYfv9qKʠ*=O< LȨk./ Tc dfH@,nEW $#daҍHro}Ց#zRR7 -"!8~G&>ji#2Ū7~gw?~Dܗ)ՌϜ.>99~>9Eȹɴ4g4: ߌv"/^`f}dH]fp0/(Niy©rCKC64F-OG:DVsS+'́/t#\7wnX?zLVO{ϥ!.-A@AOمa)lub#V'=cCm\fg,mnѬ#9; -|;W)&b0P"ENRh.:ycs"?=88w:ڍe-ܜ#??. +o(p ek|<v[~ȩ)`>pUaƉOk#O:F0pX7ֲ`䋍 +endstream endobj 4296 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4297 0 obj <> endobj 4298 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31186V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4299 0 obj <> endobj 4300 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31187V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4301 0 obj <> endobj 4302 0 obj <> endobj 4303 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 4304 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4305 0 obj <>stream +h޴;ێ\Ǎq@6"Y8HIAO[c;Y$dU#) au/dyΗ|_=x/_걶--)ڵtk8NkT^55@V_03cz:\c\s8-Ṯ4blᡡ Q[  C vn-~lYVkreyQൺm?/itD8u=JSΰ&װ) ND4Եbj].?y'Zp6S[+rvC?o#H/^{|W޿,a/~J'8jjgtpv<]j]SeryConάdey产[m\?8VVS,re!jsk)0S݂lNe nqMjkz\嵆ua˚B˜[xk&;iW&=`:8w6Aݚ f.@uE0 RSU1 +iiHh xJ`S r?dEԮdF%"nWR=nCZv( + +,oi"(@#%KZ\[2\(U- +HVaxqn f +kYL]&@h$(s֛Z/ܬf+b$B}XPEa>*恈OެP]sfaSWp{"Z"M DIXkf:PxL1 #Ƹ?_{G"[DQլ6Zփ=:}kTÚS~#w]D\Gp(O@!c&OFI"a-"!ץ<_}#f:`؋-vpЦfhmMh\{:]–ne&14q@f IK +Ը#^N1d`*S: E0ܳQxuNq#9to$7c;i[[0Z!נ%ѨKf kSL7]Z3:P5 gFt*Qībx}s)T&;ni@0!iEN 漰+tMKck4/ZKwYRԱk:ʢSYO YGbd\K yO0,|j^cA]y9A?NLDf汲 Ӎ8eGdۑ%*}>0{"A ޑ8ԑ 8CHY6UWQz5t IJʳ43ORGF$s,wj2a5NF8k"{;(Bz<ߘ1Ea_nx.wPoRv AhWe +3ⷨ5:s<ک~ĦkW2GmQNp )?3Ph}9:I<#ԍ %cn,T=6q0&Y~1mg +{7E:0j d, K*sV̟".?gf>&6po,J^$ 7gVdHaX+,2'_ + TEF4|bQC{vw$!)C6ZZ$w**Dh܁c@0n}U]v=;U5pHtAކl+掓z[Ffw4K1ČGa0اs)\AIh&H-i>.\V#IkuNұn7S>ȮM+.9v!G>#v6$+~l6zG9nܧ\FwLʁ§+ԉ[hQ9) + +0Q55]QQ6Q`mGs`r5PV8#'~I)^m>zi9aO>^01@MuIw:nO횫q- sc#z.Abz2dg&ɏ˳8JOaH>dW8jC'`(#a +ʤ!f d3ASnjNLܓ=Z!Ѻ+mԋIڭ<>[lq ;NS(&&N?*~pC[&s[ Q1t{]t.e +T{` YIeS8pO1QeG {Z-Or +rxC9T~›MU~aGrBgO 2y z̾4p5.oUt{MFhM49Uµhy^a'8wrc)CB{)ncl)TD}`J/}>`lXag8$s|֫Q3̙*ye@DʤeޥwiCf2Nܼip~^q{yrRc7Ss ;N'GEAIǫyHʗX,niq+Sl$@(v6)#`j=b.hpdҘ=U8螶I%]k-CxF6!e C?| =s0nMW3eoAdo/.^vwkOV0,4fܾxha [\9iܟ$n_ Ǯ%EȺÂ?wҊk.q8?~XX [M↿m,Hzr/~`e˯KXY;ԿÏK~\J,ܿqNj`+oz+*!Zd?x<}g{%܅8LH֏,[/iDf +%ăVQADu`7JZn7R: +rͶC~kǢ .H:*c8@F_vuBӄEA• Γ y*܎7q Jʃ0:W 4:\%;߸}NKرyW%ʜ}\o Mv#oB 7h:r,T˾FML`ӝ7h>T`Pf +_^fJ٨"xL$,_hq u<G9涎CkUq$&JC+IN\ШryI ص$(rCۊ MZUʓ M\@RʓkTDz54y2'Q17ITf M^lO ̑y2Rݡaغ&h ʠ?W5\Om[ syn)Ui !kkA Vz<;T}|k(z6gi +(ꏷP-@l0Oe3~=襶zLm%uhH0^) tTO@cհB ,8g5~j026®qb`L>4(, lO;'Ύ*,U?7FcI,8(hW8|avgQY..tV?KzRS_|{iM59-B˿ûW-?_׀!> iؘ@w?$6gkW.ƀ~i=w_O `8Ɍv^]%zXwOc`X0WD_YfP>|2 5T@7_} ) tX oNJ.]Nz0ѕS0f\_/v`L`!b +endstream endobj 4306 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4307 0 obj <> endobj 4308 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31188V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4309 0 obj <> endobj 4310 0 obj <> endobj 4311 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 4312 0 obj <> endobj 4313 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4314 0 obj <>stream +hެ[[o\Ǒ~8sK0`Cˋ$aL rL +RC2?}͌.5]՗Wi]^o_yw\]׵^^8͍Yrp?q5aѭ6)ܼ=SU)ѾSE|/^7T2M 0hKWy4N?3j9`wwz[_LOg/n@Ӳs^VsNÙYq5iH +9Y yYiO 1E9nWO= WtW 7BHCKe" fN.N3)q fF_ִ&/گoy{y|yZHyo#)37mcyEIN`~5F .rxӛOo־{Ui4*,y( 6Q[HZ}v fy2l6^6k[UrZ ά*=  a ;_א5Vii%R1C5zN=Gz~jt`h˻5X`3J tnb/M c]WA^ yibz5`##ZoLkr~!QgaYK{Jv3 .i7dK SֱHI^h所 P 8@+s +i̠&fA&.6´ǹɭ4v/[M i(X`SFCl9c$znaViSkzX)~:@xW^aӶ_192`2JY6uI( 6pT"2L`8C.K}$fz +Yn޳\$wZ]du +?2 .Ȯ TSQɣz8`!RDY>i-6A>JqGO'IׄA>/^^(Dͱ[arQ&cC۶ULö_5ϓ)#0v0(nL`u%yni5)c0/I7%ҚJu4#8zHEv'p ;1kź'׼4S܍' vzx2wQ~|%wU(z9頍DQ22Ը 4R[N96sDKWϟ-ұcU?>tuc +q%i-lk"r]rI[v#Y17 $g6QeM=I +NK\t2iZjUjZmP5[ˁSt㶵ÒDUy'Z51vƲTCg+C=H3ngo{ +.^iP6.q[X @L`,|uHM6b1[\??&W/#܈6C * 唧sB\6s}'X? ,~OAd;EnZȎj~NfwL\?"rqv-:s[)#u/n9ԁxm +]GB휨;;^7.Y&ho1<.[̴[ѣ8}g_ xqAn2#9PPp"Hp~W\*aJWcТ$ōU(|-´X\(Z%5;Þ$3O,\zT;k.=xIvfOi[u<:ŃޒvTR9äܣGJ$wC7kIݨⰚC!Y"5>rk0h9灋-T췟srM nSkrKUm 4jR;P3QrUkz'>x֑A5\W4U-ɂqQǤt@.oK8-F\$hI`SWzkY> c%Ie>ete!5$/*|%#Lr8!ie]'7NuShLIJyV ؕ6sUvY#>m+jŻ\AVGKG ( hiUFIT0Z;y)?NOr pRԺոoX8LGJh+k2`\ JSRז]t\K}Vw%g4$tn _OTo skI\hSq~d7Ew/(2 ĹvM#&mZ"֢"%;Ֆbt8+ƝJyR48==l}2H cS>vqTu  bh6#}m-S OAy'q–u(&+U[ r.SMú` +mmls-v(;ZIփSV̯aY|ZuÅ֘ 4b׽~7FL1U +FCp?!6H Qnu*Jtͺ|TzC|}kOڝc5^?mGX{cQt;|֝mO1n/]7J󕛚*<%q?y_5~IaCә$)]|Ҩ>q>'*!e]M'n' O&t9% +uT_ZJXLs܍K%5-Y0  'QE^s@VnܵO)R-zVpwZC|tʏvy]jGubk_V#`l-@|-\'NzU$._^_&E-7|z9p1+}zC֦^i6^/n +HxiqcQw. +/N>/^CC?sAηIFqe~Aa^Vh&k/"NoB0wOhsͿ.vyKDO =bc!ڛBw~rM'OtJǐR6 +FNCH_UNeW՟+¡XHo.e{v=gn2CoiGq~wOUox]D1G#Dr4}\.i胶W|"_B /??/i?~[+g-,}Q_|zP^ O/Dy$R*$yt\ oy-7E %shENtYsmqӳxG:#RȵV5w m`E݉Wt&.ZIsMo䠯>E>^zYK(e*~ryLGZV^ɅXj ,;3 o`n0 ij6,XÄ`4֎͆v„]lX sG0TUCs&$wDGa|S# znwD0/ppGjowHNt0vLks#&z;y(4[V0zII˜`lSO#q39 wi7~UqxNSjh} n5vl* ijv+S~VxX +MD!X訖ܞZ=EtX槇c{2OtTKznF ta(B_Ds8ꨖܞ$#Jcs#Xzc{2OtVC/ kj8JsX1,gƕ +e+LȓN&e˶ZLGs'+"C 9@DGeryaE2gJIirR .]0Eչr܀?Wmc +\ T:纎u>]6UmsAd1FH+7IǶ-J)jpR/Ur(Sr/؜ +E& 'šQ 鐛Щ٧5*=7"8)] )r'A-pWeNPZgLt: 05 +endstream endobj 4315 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4316 0 obj <> endobj 4317 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31189V3.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4318 0 obj <> endobj 4319 0 obj <> endobj 4320 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 4321 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4322 0 obj <>stream +hZ[o\~_GR o*QK +II P+W.,7Csxlm°CprNOO6awO>=_ªVlV'UVmVE)ŤcTh"veZcIm6WO MgzmfsP*m.Ϭ@g;|umĺen`.H\w t8[[=[TBaén "IZae<":*!j']UH-~MSM6mnSbS ?6+|)EiJd[] +86u꦳ +ux= |%Π]ttU/9(F|ϧIPvSt&2lN>߾=x^#^68QwLpB[ux?Nm;=>\odjӦ=zDlU):}Z;C!%wE4 vچ󚰭.>"m/PY[8&:jODnh + iLϒ\҅Hc:R{OzN8ZflY/Z=F4I&o#LY!Sedց*a3inLcKkߠi =vá){ďةŞcEofBx]vbE^ d et0n'( 24l*ZRꨂչL[;\xaTH˺I($#;nLsHcwqX.CAAJ:+Շ%^#yEDh<6m|5#NNN7`QjPiȍ1QO+!x\M _,0/be0Am51M}#BWfTmjsQ7(Wz >b\Gm8Mcz /f!#1u3ϋ +aHI%r8!RS ]b%20l-)u c#fnٚ*]䔊t{:OTmyQ#j9"vͧ+m,\k)aieY9c߃ֿ) iR)U4μ@m*ȶI8x On *4ǣnh_僶鲿=)atG[쳜o~]zk4i$Tb4LjX&58>e d[ʸIJu +rrm &3 E!a k9S"6dpq-3\dg$oM A&ă(}1DRJ_dz`E i[!N[Sw?8Sl[נ4`g)"F@Lp"aphČG//=Fbl1_Vl\lM֬qkkbmde +']+<:뷟_83` + \x Kl}9I#a{s4LS ҁȻ{^CC$#Pa}Ûǝ}`}勯>f^o=ؙwovW7ȐE-r*YYy.s_*8|U7p%c%gԍ`&[Hܬx>ͬYה9r;Jpg8ifPT}sJH Y3 #W-yA +so\H+Ё:J! 7&7'.b Vv֞ci!ܨfMSО9@-iߞ< +)-;A'ƥdaLNSsYv74e'enhʔ8kOnk=1Ӳ/K@'»qe + +x@ћkW . e$8vkHyXcG Np^)6"/uY Ly"^vKcB:+ zn3c^8FPmvqY" psJ}"jt9=woQC)H2ni}G n{+!W\={aҳLC1[Aq +:nx4K}'j#fbh  +"lHքߴ$Afn*fDŜqԌ=b^kC^U .\;jOTűyM֖C@$;)C +T"#}2Q[["hheAQQݧ¯KHb% |~]517Z&҂65O͑aD Z^Zo͑ }RAI}sdJ`kI3kJ@Jo\ֻͬM!uMl,YsdriA :F7G.:.hf SNqAf ]RY}nA o\qhIW/*zW89>_4~m5l]s}rBےs\r1.ó]mrCRBR@;g Ńd=YkBfOu2ۣ'vl$ r.Y[Xr9'I> z(cMoЃ)ye\]D Bn +,$mq2PоT/Ėko1 w S/!վ0F kdBBоbbO\؉ئ=<=DMr7C >9y'Q/"V +L&O7.Tq;jcۻu{fP^]SQ.`A%&gb=4EAAvAz,al|bj4od/ +endstream endobj 4323 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4324 0 obj <> endobj 4325 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31190V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4326 0 obj <> endobj 4327 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31191V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4328 0 obj <> endobj 4329 0 obj <> endobj 4330 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 4331 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4332 0 obj <>stream +h޴ZYo~_1lU} +'a[kA6萢LQRUuL#![W7gNپ99z{|ӓ?^՗fc3lVY0h DeW.i7l.WzxRZazG)0Oed3Tp~uYy\<wLJ6栕鎎rOc1|d7\=۬@cҠ9ǜp}:[U:sTe;{^Xd* +*sV YxsL 3ńz w|Hx݈Z0JHO8/䂛40;yeO`y<7=|* ) 2L8zzpyf8zqrX~Ǻ.4ڳƔ6$oI+ƏwP̏'WW痧7{=tF +B, +3%ⰻՊD4EŝNp QS;TE`^d aI@U:XY+# Npc#{0CN6ӈcI*(8 +;\DJ}ݦIDǂ4 WDX( ^]ASXO#!1c4PEq- MBSP#0Nce"R>ě#3(8܈DR>Qa,d_cҊ(OlZ&QN.Śg/&8o$68|ƈ%_:<{qa-n=+K[UO^Fq,!C\*2dJ(-d +6D-M]_'p6!wx v-eVS&BFώZ甽=ja󙡤"0|*-D15FԘyU`qv3rcS-G4$?ȍۇ53`8Zͥ$L9KNg2'ט\Vd&ėGJ"|o(F%LSem&/>].:ZŜ.5,9k ̵i]j:t^CK6f1E ΡmB[kmXtpH;9:ġzuں%Ϲm^|-"ã/kv(gwAwW؀ +z9HC@ek2NifI>&#ցUPy.AO*L=*JH2|^8W/9@e&}yc`0F"1;i-!O7/O䆄$&qEqk0zwq NH 9]ddۛkp{%:)߿{9N??\n2mf;~xSݒ"Ivoyγ?.o +49@Dsȯ#a;"ғ|zy5DOaër<%A!seF.EÙ_8DVN8ˁ$H8Ozp3W{(O$d8)@<5Φ&hd/8PP{pՙf9 4`\r@fÊi(̆0Q r1*78,ƽ&ۂ8~L\6 @i.,( +Nb:EVi"Hen y#GW6,ے+L&Dfd;2ۍ8F.4avDx/l~f" +HxDvUG^#6@YNS>p}ֲaC,o}YLm_>#`Jf+w쳿rcpro+n5ת[[!7Znrs%ΨA,nË Q;JUxmP;ǛR-6ڀ h#|4ֆjChl7#99 ciu4no~XsK oB +S7J(༬"L5)#(+KKyMZX~]Jgv6&.LMۡfO畔.\x8d$PGWRkqqo-x5(5T"yNzQGr::*Yԫ]R*p~#HbJrwTI؁T*s/UWfhXϽUwWI$8" 5{xDud + +QYxLN(GE5@UxH 8-Уlo,<ӽi|. [WW/n}?L'][-v6'@GKu8H0.g .ՍqYq7 \T*8 :bZ\!&rˁb+tf4.<(-t]m45W3p29yy) 'AhVDˁC +igpP>~<OQiKˁRDZ{7sZ +ŀOLSIg ߯\P8^P73xֶd(p.j-qQN.T?Ь.Y +M-~ Y + hBsRԎPUQhCgpg+N>:X 4fpg+-PV8ˁf0T rb1 V^ZP4x/Hˁ09B#/| T ve^2i5$ZNZ[v E_k2x خuĂ}< L{1}+~(ILH7+#i%D%ʹσ;晲h%o?R>)/A<}jD̂Iq WҸc1\^V}jzxW~y.%,Umر: NRx9*q{͡<|?|w,:`!Jìai$wg@_FqT~Ȍ0@>'>#Xmwq܅{vL9&ψ2w݅#'J-r "$̹Q31|\&KZxT)J^+3xgB>m^V&p3q$$mcCG,Mc/v$0r@WJo}d޻?ҌRьfjO٬hƚ7c| 05li +endstream endobj 4333 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4334 0 obj <> endobj 4335 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31192V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4336 0 obj <> endobj 4337 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31193V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4338 0 obj <> endobj 4339 0 obj <> endobj 4340 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 4341 0 obj <> endobj 4342 0 obj <> endobj 4343 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4344 0 obj <>stream +h޴;n\Zy,zXdAf$ h%CYٞȲgm?}ExNKvCnbݫHp|vW͋?}8<}ً}wξ:{qu'=]ݞI<f甝ޟvVJ씲4:~6Ъ}>NN9cϰ׳ەfj#6[]S헫#s( c6a6`hGXnbu51L sk 78q 8h(}M#4ۂ#*F/X` -ʾ_^"4朧Ŝpsv{((9wpD^>+ +x.9}/3H@D&<'7T)ӋW@@;Lz7@.]Fn?849`4 l5m^|sLJ7w~q)LOYe atwܳrCft|O϶F>de纥\;;k;gf4ti.̬ciI0R]lub`P8svaNspނj=Gi6:PhK9Xpة}``DdjüVa4TngJES4t0lPXz5G4ByQwԫ `6*n=UCȟHA4QS z7|ta\tĥWޞ=ET5Յ0uWTꥳ+m5x(SL`V'*MY +ϰ}x0OEO k &|uĦ֒r`M.&`l%֐p fZFض}67V{d}(_fWvdb8OyA+8bnqAk_:iv/r!zgoސ_D f41 mdЂuw> &p<(1 .VCQXO%g}H,'KW0hN}-?kt',8>;.@=vY"ny}s29O=i*sf|6W7w` 7tBf=3\h \o XYWSC>7 7W ֟xXuJ\(oAe8E'VJS']y&vE9BvǑOˆ|X4-%@([e[V1WF!ėHh̼+Px[k + 2aAia.bp#'=Ĵ =.{ߴy䶄ϡCYOowjW8;d" +ĦKivˀvP Ʋ{MePTaU-WAUN:`Ih&EO4ozK`w>wv6F!Z̹Q&1c"ecöLHe(o 0M -G4^ *tj&#UUYdA|A&κJ~LbâMW*t,APv(MWZc ~c,bWjK +.6QqB:V8^mX +^ɵiIW'(sQ|h= j{Oc,݈!7!(: '"&+XÖjm2[Gi*z.T- NDDKXiIJ=[}S贙lrƦ N-fPl(¾,uaǞb@XeʤEXFXwO̻v-X0Dwr1>|*0FL{&kv1_V9pNFvФ^l"u+S2 :̟"eî%kFJ!#u(U(-taTNlٸpL?n%5D = w|ZiEwo>(UEX-*e p|PhӶx +q'CXI#" JvcЅZƭ(G%nHneF;խLr3[4sS<5*L(#$SialM+3ؒ KG" 19lE2[-u::P3>HD,V5p=߯SoK0\?)6PN\޽|~H?-D:2 :ev'(ùZ㳷j.Dt&e|u'/3ЩyV̥dʙ)ǧ5bknA]EƷYϖk8AH۹́k91?y"QcvЂ ~ oR=W3 +1~yOtV~DHgs*sf$ +bW*mZ V93hR*8؎'-96gS`,uVX¬u Xjj\7*Т +a $W֮Tr,30ZGUoŎ*fFMd(} 0q$pU}Y·AͳOSI ߨ||R/z|Q1 -^au x8s`~/}RP 6xDft:fFg'}^BRC'˳SO@81ls-Dw19؀GܯrK\p h + ]_~o"Mfsu@tx_&rl3I&#~yw +45K(t)_/累@d?~y0x;;Ä@q7^Ǯ.˂Diܽ{ ߦOMnz5oɠ'F@P߈1FL߷2H;^C^4ʲ{go4_u`N(%P0o^G1;3d 0a3V-144aC8oIS&\k)z{b0>>i-V3Z^"TI } R1IJcYǮK(S3.c OgnU'T",^Wu[[ iU'(K' Y\UJF z AY݀} g1N}S& )˽_5㺁t}%3;O? 8N@ղFT [0{G>ui(aX7PrL>-=zEgxMDQVx_\bNM[Ybu(RLPq.EVtZsZ",$ AP:ҪKCy|Hj(;sn(n[S E``gAIQAxzr)˃ E\@ʃ [u 9AN^Ջʃ ZF 0Ǫ[5gC m@ yzśvIR\|r6Y/AU,[m(*pX\PBu[ųX,\skl@rxDy^lls|+6!4xxsyrqh$7=PdΨ䪯RQRz^U%&GE|ۺI-n촢NIe8CE1qY2x>Ȟ`<>B-8Gv3hXbې7`oFj_>*%٬#Ib6}9*_~??DVZh>0"gӸ[ii ]X҇=+U-bbħ&[5D')TZDlXۂk@gz(d% +2`1؞)I`d'~o3~׸`OX +endstream endobj 4345 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4346 0 obj <> endobj 4347 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31194V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4348 0 obj <> endobj 4349 0 obj <> endobj 4350 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 4351 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4352 0 obj <>stream +h[ko_1yhك@ƻ"Yk;I$g#)Dj 4 X!{'9fxs9?7y!7?]./e'Y`vuL9͔窻|;ݛ\v+<_~\9׎sg#kߧ(ƲP[*+ԏ=U* +tr&12炩EACz=u d;&Ucڅzꁔ9O,E?93L9fhL 1E،œ 3:F扔s4#9![ RrzX =`|`^wC0L웻ջcw"pݑ~7](&I=C׿@Q 40sQ-f݃ŃV7A(=hVy(Dg$7.pmH$g&.e*%\*l΂r(iƽ/x{&$VxqT*Ӳ6=FM4Q2zϬ*Əo0IL +R8`V3en,0}AWEfV13:D,М4HLx >-#FD9ӑo~"h7]{3 F1h(:%sh(;T.S:Tx #4 %+bɹ/0@հX,DB/n/6i^9pQ_0oI(T֦Ϙ %!syj<*?1s""1_ܒ+DQ bB|hF@'a3F'M~yuN}bahOq2U'Ƚ=Y%ҤofsZ!iSdj +:FE@=0R6D"/[d,.̾HH,LS^a5C jK'۝_cF.c`v6pD=Lc`DT˞ðݹLZ$RpŹO'B)Kuy ƕ3!ȼk:׬ -m "[N,4KJD'T`K"و'ױ~/h'#xZ oS {(WY}Vo[y#q. +a.{ޗ\f EA>'8^7h6=4ly"bD'z1Xxi.%֫~ICObK!( 55f(9jD +$[x/(J_vUzc/怓_scb\Iy5QB";sf!EqTOxnQtҁJ#ŤD 磓? A$.4tg&- t6Qh[HXng~:ҸF}d⺻w7I:֗j:q )O`{ oq8itϑCVI?NERf`X◎Wn&V>w{ǘ1dLD S`~ًL-z0yC92dsS4$Hy7=g$r6dW@SLƔj0 m&'USɭ^ײ9 ٧ŽNX2/H~g ֡%EIk "j r ;A8l,J})my;q6iQEk3} щec3}nG;aK1D B{TiLT=VُT[ 0/WbbLˍֈN3ʷ!rvޜ=%Qqd,1".؛vC[My6ɭϼ69Bv9+'ߊ}DEZ˸TpS{BM +~ Le_a~jǔͪo)< !uJЮJhcGy>yOC<$`jۮL@{2t])1a"]\c_c3*?:d:=^BN+$Vfyڕ˒aͬ>/Tq(gXb`E:ϤD$ *=!'?>)Lo4&mZgရSQ>-o8wd~J&J&Gx&^ OS,\9 j੅Kq>/8>SxrKH,Oʧ)g`(8SC>SUz?*ʧBv*8iχbld=qC48ËGA<!eE7!rr( ɔ'C/% S"G<s]_SA! qCa*iLVcaj05V*Q[ x(J+!(ˬC5R"hg)[: ^ܽ<ۛ7UjMV)hntɽ3xz!jhhu. SrMDTmVU^Tj詨D&@ 0P2S Pm0p(> yE_鷣}-̪脢D&i${HiN%JOIE`fk0=?i~^XG +GNSֻusOTC˜$} RDoZAsiZA!*=DPa m@+H4$jp@'VUhS%V5-,Y $i1шHԻ$T +-*HFیtFpۖի}^>f4^ZшHԧ]-@+H Ѵ)ԗiA|'ch]ƅ9qua +Mv}&{TS/&SCU7+t=]*:"K(s6j{}µwQ?/O"uԊijd6 ʑ[Ԡ"mY4"RV:&ӈH }nD[E`{sz.5K1ivHow<1{{[>y|V6u.ަ]ɇ~ZxحDjZ:jE[E%F5"R(oE[E%!RVᠲm߄HU0VUDZ65DNxB_ӕ/%]3 +[^uhJWR+`ipmh46UDNKp5N!u|xЍ4Z k 925 + U-u8p +pDσx R`?P BRUX1^Dmz"V)h.O!5 Q` hDD=DC&)2 O $ƍ3:Ih> $||SYX,}2V:~3OYL2 XH;T;')yeFOD~2ľ mA a%N")qS/0KE:׳u;(HJCR|"0 NfяʫL[CRdz@S%3^xLB<%$G17ʹheDDMlG 6tL[ޗ{hC:Fq.30[y@1b_n~y~g~8BN__׷w+{_n[oޯ{Щ_7Xyj>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4354 0 obj <> endobj 4355 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv31195V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4356 0 obj <> endobj 4357 0 obj <> endobj 4358 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 4359 0 obj <> endobj 4360 0 obj <> endobj 4361 0 obj <> endobj 4362 0 obj <> endobj 4363 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4364 0 obj <>stream +h[[o~ׯ ռ`G^Id7$b!GȲ7y;?|U,3#N! yb]"{^=<\_mlξn\᧏'ޜm6z$#˃ Q0Q97ad~:YqnlAm~>\^zeV'Fnυi)x2 kܪߖ^[1wį~Uez& 1:eS vʯ +3/da礫 D^84Lj4(}M4y_^"Ɨ;`l[3}9G3D4(cs΃r14$~xin晭*{~.zL>4 i;7D d`6h)~{ޞ1d7 ԣeo;Xhr04 BQ3Zqr-f;<`a~Ԙf9q;Y98l?'K3*2 +mLzir`k/-:']ތxcy0`|CAʜf2Qe:r{U5 [jߤLmyUE q`fB|H `3& TIǼ ʭ ړwciZ!G< >2a=e?}fBXLz EZ dFH2:T[ekx <4m\:4S1vT{e,zgjFeR۴lLN% -bjY&65OΑ +!ɏE4mjH7CO~TPV1I fx7rdJY5-Ir<z͈Nå>,Ym޳\P.*,9]oٕF{'*tj=25UMYf >;<6Lg_CF"ʓ"kBoߞ%H[a45SF㴫%Afo(/\)9QzO]_O9R"ĎgiŠS } Hh+ Aǐ1"TVlN2*R#'; _I7mi +Seex:(6cmFvHO$WZ3q6g]9P!Fb,72UAh4G(ue~_FJ{z@ӌ4O@&#um=[] Σ]teDy}uTV%E5{F Un^X4 "؂(^JT "dA $=H+R9m g Ai[N@Ϩxx5;`J橡_8%bP,xFE?W +fU]kI~vPGa@=H9 kjX=zBx y+xLAO`iQTxo8#V{ֳ=acI*s`fb .Wf%N +0ՍbTWSuGFj5TL`.&n\!iyСe }&Uo !Vee2IawM(UBmN_Ĺ.;ptV+!c)kVBbt,iD +ߝBѣ5|\MdIy\ϒ׊.NRS nEn|?9}JHQ$*fz)SJN%bLkc\_ㄾZSZr_diȰ ܡ`vBVPߺ]Cw`"-_" ܎ST + P,YV$jL ZgFPb;Ϯyƚ JxS) 6v1eʖ_& ioe>ĪP \KON Ax^(vgp玅p4ٲh^v9NRKd;CZ۬.ZĐF\=N +->vS/0ip eJ/f 0s: ͑r%Etm_vy eC&K,/ߞ\aSIrȏ.ӕ 2]m>̪ȑrҕ O$ryD)A6:r9Z/OO8|w0GM#G.·ÿÎWwGg';t wt/rN(-qz`D"D]m`p=8 1c`$H,>-WG_ouwitjzk8\][5],C7]X}OtuNl=ҪHt;P=Jwus2y[aٍXMˍ73tG Yu+nRӤll^a5o뿞\4˕pw9)i/=e=}9잏_P@X[|ɑmnO=xZ0~N+^琜B.scs((hV`'* mݺ*QM,Dž`B1?Rc| W WkDB1X gu7$휶k}x2p"2+}㯴0x UWXrq)SE\D<=_闿3 *D*p_pP>eU6&T$nux}hm +,F5aQHZo|i2? Oߐ@_R 5-3l;P +?SOЯ)q{q^$:4L`V脑EU;O5I5&gg@\>$0e8D˧I#F'iFƮw6hޒ!Ԟ+C:6y&"v5c`UIߜwk(bFXP\B):4QfFu],\ +ȘbX!ףreKWꔠ/t2(м  Rn!F P7sd#P;'7N|/CV! +endstream endobj 4365 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4366 0 obj <> endobj 4367 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS34403V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4368 0 obj <> endobj 4369 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv50978V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4370 0 obj <> endobj 4371 0 obj <> endobj 4372 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 4373 0 obj <> endobj 4374 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4375 0 obj <>stream +hެ[[\7r~_qg4 @v,/u4Ic1Ӟ䌤,[~z*/ό$#iY$ƺWۇӧp훷o?x7׻2˛_v],7J\4FL%%\ny˛.7'o~߽>Zu(E;F˵ ֱ@~uGԯ1{tTVp4d m_w/nv$'(J)򩔼|=:JU*"#"2fhO N>@=`ל:tW!cC˕#" NksTibf |*/elEw?-W_c2`E&b}doJPv D_a_xOߞX~.ް`Qq儉,b󐄈Tb +/Q`ǰc*{a{U\]YN@t`_ɘHpt װm X`뚎VI;&K8y,feMdǻFdHS *@fʼ@u}1[E[: +IR1t,6zۛL#~XO%,d;;~X)ڪRLF `rV@>;Ԁ\<t8S%&:`q + $3hHXЉOzqUw0O 6uh4 +8UX!S$,D#/,j4]MSEgdo"H)!{56ˆ## (duq8,DJT0|7t/\o$̠-֔On3UEGo#`+3L8' 2fZbUcȲ\=WG7>mp~mkaG"n#ӒVT^e*S +\mc6%n8 q9DMsa8"mA@rնFեiFJ!Js Fw8r7Y +g6tNBKiJoJ hhCp+btVV9Fz,BSQ#7#OǛwWߊ):N$XDc_[aO#kG5$GĈ-/]Q9<\ +a~<,|GR_ba Vz=T#*' aYx&術~O>S214; fiuE8WA!ȃ͹,'D:ΆܥITAsm[lZ|$ƈ$3C`fyMi4o6c]{M4{|nS wۄI)= s޳Xif~~qf}R?)slǂ a-z0Po>lpN,z9@oBpYa +i*~cmHޏq(4řr6]),jkђ~ԼE)At",VTBc;qTa.yĺ i)C9%CFoaKb0x+{ \K`՛ִ/1iQbʢ'P<f +^F J%Lۚuc5AYCJ v|Iݙ?eO<.7➥kahùtxtUC$/ꇾ+9g i詠 &8{vv0 +@]m [*Q-rǑ#= ֮$9oHYf>껖l-E|wp#9vNdO2n,|2;?-u|ay9]}~jRWm )&dc˰S<7(<paafZ*V ?H9( ʡ0BBJчUnLsLI]1B]dzm&dC0rk鿟W_$~=/A*Q:#Tڶ&]#joQJ7@Mt4:4kהiܐ ]t)nis'WԿ^_|eP=~D]s{IrѥkFtPKXu]kU\:澞U˄mKZBm:ikRh~40g5l C\MvXl;au`ClM Ho͏N\}'< P${F/1dghqVCu~+{术F.\qqUP=D>TL`?mLذv[ݺuoը=KnjBcN׎x݅*clu%t[>ؼqoS}d3u-}|!C0[^ +SmɎה6AL֬6~w$|+aUR9Wu'?4c:45$A]k*%b[%ګjgʮ3Ea+[qؗBgj0Er+h7?)қ}]zɪͅc;s#:4! F!Jc>H;P]k[ݫ❫&@.\#克uL+Ng ^]ľ?/*,/~~y#(K@'nk~-MZ5QyYxq0qnv,On60 _5;VH}"܂fٛ A+ 5(ofǂH=0"/ѽٱ`WB]"=m')ʶ#q@$!` g[ܪ= l[] ^cdHLv02IfnD2Z`P/̖:;ӅjD$!ma8}zGN( )3@|B* m8vU(6y-CIdiqg;*qH>ׅ8!癐gm3U1|\3YI7k, ^%g7Df-%V=0SEp I2 N_R6us^B6"%HE n9k8⫘8K,ԏ\RR%7sBU--`~"~A0fC_/: +̡wSSca`C@_ٱ2|C}@MڻU{BBƦGP= qQ]Pz՜ޙp[GA_˫`)l;;"Z@$!f`l$:U{ +x l,}jO-Ɔ Vplf3-J{ +x8&m;jC+^kOXك1g/n•$"i$Mb1g +ZU5ym2#LZ&mwˠHi%}>6V 52dӱ+y+׶~(??Roe x u8Y^0 +u#="zOu$=t[CG +TWQs$Յ5ulxjz™.u'DFTd;2c<-|O6%W< +endstream endobj 4376 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4377 0 obj <> endobj 4378 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31085V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4379 0 obj <> endobj 4380 0 obj <> endobj 4381 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 4382 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4383 0 obj <>stream +hެ[YoG~篨G.}  PҬf 3a-R,EzHEddVVG6+ȸ#+n/6OryNtswtsZ_ZzX_A_LcCVsGjtnXoZR)Ѝt\-hЫ ϥjSz43薥.]ԺFs((6aэ60zוXP]-L>FXvNzFHM0:h (sM y_:u!tү.el*~>"~tFcsbix:>q 40U(0-A2q.6V4[v՘jGo m-`1@AB'58wf D&&ML6y447L#ˈӣot@#SIH޷=a!]vNc3-0i345D#[چYj`;Z!-z!M  +[1v Zjk4 3MMK\lML0ަu;Xܘ|l|&ڎ`ײ M E;)Ѩs$BF*0ƣMQFy0 1F=^ x=T?T-7CQOͬq,PM҄1Ga1 t\6W,ޞ=3E25Յ)GmW۷ܶe+6-dSQ-{pؽ*q(H`٢gǁ}*z5x$jyb~MV\^7S@TWlr{\1-;(Ⴜ=DJv+%;Z^T`ve}-d}K'MgwN1 n բLsG +>쏩ň'%⃽!=Q,jP9MdO0؉SBeӟjBy++W;RS&r%B[bB{0ޥ^7R9@.f0mbGRyhZ>L'5ڻlӋq5y+>Gc +e#cI؏(+%$/" — CEާlGCƙQ.!\Oo`C\Vqsiav[(`+AZd,'| +! +tIam;6L=޾ EfJw*&bw Il]/Q;U}VI&dOW*y# ^tVjDV*;JѼ *=vx>qa'~M"o .K:Ť~NFd`6 d'A4T5憦7^u\.*EyX-rfy3FrC^I}WF3DŽ,?C 02^Ij ʦeND]7yB': RulFϔΛᷲB̐-|bG߃ڠ_ȣȞ|[,`'W+0j S;$a5zXH_=ıԫƄm{.aRIyeVF̌]/I-"*z)\-˃$N_r_́r=, GY#Pl`ߨ#eSxF3kdm#X==Ub&|htS#4IO̢ˮg$vċӨ$vA]ڢ q_*v6Ul*-e gDcVMWũ^ q{RՍX^7tEC4.BRFӤ O>6. Z +Odju*|>OSg$=/6LY6Ii>Rya#ٲ'(^ rOA- '`2 ۬]ӎ뮫OL}cꯘK]OU߱2MZN.l =˭\)䐧ĺk Y)ӌ@M`OȯgLD~k\&W84KNa[{MbFM^)/H3)n(,Ft?b'S죞=sn}\_,LSڑl|BT]&dݽu-Գ {(1$WO+7mLLblyGIwym/ mv M ]Z&@,BK~Q\x)!N/&yavmBDŕ*n4ۼs@ڍ3OY٢;9}]Zrܮיճta4B-EʄE\Jb}I^NTe(QPWW ;\auqYMl2W}t5Q6?=pv_ ?= 7?ޗO"]'dǎԏaxzĝNƍIg5y[P}3w6M<>sqQ@L8q䛧q8Ury^ TjG:fʷ5Z&av=SVZ7qEhrK\v$_A֛zSuUW]UUMp{>zmې~ t1۽-)wq<;nw~Ob|lrBF^s^gMnĄˎH#Ǧىmu,#}.5}ttw;5Ly"c,Ƽ6-ahW,+q-{C݁W>G荩%H ? pF +m?wwJ_'|%Aq{û\ ҡk܈6p8ѨuZ!y5+o#mU)YF&:vTsަ/pn"PiV?[q]<.c do fklK=5N.P-s!aBJk8;T=SxJ:ȖsYMkP9zky <:ĝ +ƂT&5>U_tpwq;ln7{xW~uZ2VQg-mI>>ߜrʍ䴊<~ߝΨ9=wI}5\1a~+G@~J^^jxFF~߼P?T|ERy#X \O2l q8(UT (먺.&L^ &&7Vʦ38[.XNk|p{~z=8$7Ԃ6fL10!8O݇ν:w-S¿S>PL7jR4i$7*%m9s\X@dͼ@-nm3+Nik! it+̌H xa(jO,!-?iP>I_lQXN{”J/ cXz55! C`>4K A2yK).#,J/ib)l#{Fae?yfوtP!2Y&>I8S(_$r1/E.vnҿ0;x &xQ >GEd-{%)ģ0ÄV 6S~EGR$n[*I8tIq$X|!IE +,e$Ք(ENz& ebűtRJ=Kɇk){, +b3(e{e(& `".Ga'uɍE_Qq> tst!y<>St> +My^YSXV 3 v_S bx%|yBDi[/$Rfdž>2f#|3VC3 n"]oOjs-w/BDd@!mNy7:Gɻoe|i+~_LH:* +endstream endobj 4384 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4385 0 obj <> endobj 4386 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv40117V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4387 0 obj <> endobj 4388 0 obj <> endobj 4389 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 4390 0 obj <> endobj 4391 0 obj <> endobj 4392 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4393 0 obj <>stream +hެ[kob>G.v2h|PHZYJei}ϹpVZQ!9$/;_o./lﺣ~9?|˛oώ?ݻmtX>N<؛z6{2fͯ#R.*3~5~ҏ)cvm<_̶45WTokۣ:4L]fs؜s׻snz2JlfE2'GެzIΐ):T*z{Wo)xSҞa|/qosri4?a +}lșxizp9KO3 )/>~|~}g,E]vuVSfƩ${0gߛnU[ߜ_A1?\^?vXC^eEzШ}b"AQlc%"v2:MwUVVڦށUmD*iwkp:ӫ`d:z$Ld;Xikm5jlPִ\>41C><`WwvVZ7FimeWlpܡ7t> 3&Y 441뺡}0y|44xiuo+x"3ЈSuGɟ-t뙠M2S) bnhFkjl2 ND +NZBLD'@Hh-V}e.Z2addŒW&'9}uDюmh(-}Z:G2JB֫ w6ޏ^Ւ1Wt\wqȕ4CP-q0NBce"Tc>颺(y/rT vCJ8eWmn[>թQ!2UǶHm +Q,[l>b=^ -OIׄF>O׏Eqb%΀YC2FN{k fP&s;iZ~uPV%HCR{) ev M6;) ^UIۊ*;E.ʔqJ+P/6gt$J/OltVV7݌X>S;fܘS_&v yFp;zj/TOE;RͿvc8X0`f8a{H0T"EYy"*M0b*qd|Sٱmp"1QwF)1N-M ְ8{L7 +D[1a-|@x:B8 *-VkJle"8w>F!MZs5v4{HČ@ yk|dܯGSy ǧ7㤿6וd y"`;a {Ѿʳ,\qf'zUI|$[|wx]\Z]s7Ør +l5 (3Jxƀ`QWX"̪AK#7fY,3ؗfآ9gF0,2_8=ffpvVHPflK\mzpW5^Hf'õrC(ʍ6_S,D  SvQ鐢^M>G;Y,j7[ { ?>8]˱v؀D6ōt-^ϼ C>z`/V,Z +N1rDr~F^aH +cxYI)hu#"Cc=,o~ryM1Y" t`4ϋkBvZ txʛ6S/.j +R*_N$&@VHbàTU^\lnDKhg +/{ιdDʡrgSa!8;൰"0y(-JQMy38~1 9 P6*קgzB /& LCsHf¿Axb|UgvBCQ3A'I,%jJJ8ɭgJdԢ+;Fn咘,&O1>kx X-*da__3t A\o ]ܧAg`eqR oe@ɤ-Fp/I2:re 2e 0*kxE7' ܠ#š3$kFySsd eGHn 3J53~Ε\qHBOO.,?С`kw ?|WfILQ;^Lޓ!eKr|!W,w%˲r.]~ +& '?w*j19$8>r1QL}T#J&u% bܢ'x:@YϢѱ-eUm: qĔ`/CL%`cP~@`ؚiAbo;_ +endstream endobj 4394 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4395 0 obj <> endobj 4396 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31087V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4397 0 obj <> endobj 4398 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv40118V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4399 0 obj <> endobj 4400 0 obj <> endobj 4401 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 4402 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4403 0 obj <>stream +hެZYo~篘G*}z;`D &9dK|U]}RGbNQ]Us׷_]/~=_y~ofy뫓+,e1-WNLimru.F33i{EDit(6y{fr FFMm׭ߎQ7LtkE^Ub KJ^\hkY^M= YS{ HHC<4hhcmtP]5Awïӄڮodi!z?:. ?&/ʺRʢ|*%/ooONb1?GdyzG ++ٞRPV_oޑ~+i`0HSTb2.v߯n__Ο^B`rF{Zw3LVїނU Btzgƨd7+k"8^ըЃ`AZ۪Hf)3bs#1|}#1*} + IawcyZYaG<-pYFJX9v@.xd7ً䬐 eupy( +-&@:h u#2iVpOm{U7NbպM*mko[>(S!Ȧ [.GS-LU$TTJf^/x5;װ46sdK4ψ֤JZ<݈TqȖA3-vOj3ե-Go=1]L,SΉ{m([ftxiv%Ue4r,_>ox(L)^CF"*#k'O/oׯxzEך!GOZ k[n,g 2Y%)5sMݖȉx ;I!}ٔ+R.9c* G$>#I:;W3>דQ8,s2#P+*6jI\UT\2l +9ɀi 0DK̨Jzq :n6]QZ@{ +u]|x1am r-M+h*D"DmH$! 0V @*n,$)¦zN7s/>6fZ.ƪoF$` wmt* +$ EEjE+ts-\3X/aEf +Z\+GU4E ++(Z + + QC0 ;+{t]A˻߱;=W,Qzթ}?澱dB$R!-ƒ78͕D S;յ4i'*j +{]hC?zEQ| Umyqp5m 6: *@G Bs]pNS +lzaJDNDQ\>)ɡoŴMVhԄ# +ۺ W8l$('t?w[vcТBEĞΣThT:(̋# I񑷮F86B}mXϯCqȵ&F#ͧbNyT.&"Ic( )97"l@D a-{3¸e3 +0UE]w$O{a/a @e +\Q},y$.?Ƥ2+(88iaƾϚ0(AzqImM~wx'DZŮEjK7*νǛ+i7!2] +Pp̜CvSBnm]Ni:J#3ɞHZMjb3^JG .XLR1&Į}cU{}~;Ώ)0v4K)8qŁq@bnz|3^$s"^MS{'\Hkfl\Y@"{H:#'3T +owq!+m?Ul1![%|Gk8ݏB%êk_EwSߌwBY݁~@ -lV`Hگ*E>RRXh-`${Uy7$njv"P_YSflOހ6o˱]5OmId +i}ki^rQ(JxSSlܹܭZZG۝Fj2iqs ,,gok*e3D)I.dW>t:rd `dž8ɻٿAoO@8yc2w~B:LSjP7+ S!}-VAgYA}x=MKX+9]= ۷C(iIN^7eٵzEM/vmTŚt5ݼKZ ouӂ摃\x'=$Lu>;͜fN^XNܬ.G!iFNZc\r|'5j`Kp-'Wԡ'3G_t(5C2qz>!]Nr+ +y5'?6ol?zzI)R ~nǿrΗr=Ώ>eiAH6.̣sJ?']\../ׅnXtyByXȃ5Ol՝/N|ʅԻ `1Lc +W4Zeuy"6hHl%?nT4=$N*Y{@.Vs<p ~$l># +_ Ÿi{d#4]:_s8k÷Խa3#]7FfYFtʓ_>?35_E}v;l*-xnaԓsY8*H8y@4ht;\V_#$㬢bz}vE]g҇z%Е'u>3$$WGiՔZJś~vݿkjYdNsm$`:w| VYBߊN޾x)/#iCyKs|B sͣkI ǐf/5gl=TO4iwf` +endstream endobj 4404 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4405 0 obj <> endobj 4406 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv33111V3.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4407 0 obj <> endobj 4408 0 obj <> endobj 4409 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 4410 0 obj <> endobj 4411 0 obj <> endobj 4412 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4413 0 obj <>stream +h[[sq~ǯGЕܹϤTYٲ;R ) |_9(ɕ0bggw.==}''O/~闗ܼyOώ ߼9Ņpq}T !!%?<4|s4N.x44M7hJ;X7h_w~I;OovMƦbuNNg1\2o?zvq}ѺR0TJ>; ]}W"OENFlYp&1CXx~ cllsm0˺#~bANѶ8noP?[>|crlFcO_o߾zu?<⬸2q7Ch&OёyfxFތ@f(aæ_q[0滫׷n^^l;Moq*Qqx@Ѓ0CX< +D/Hb1?ivvҶ 7֍mZ~/pW-:qV ֕7َNuۇ6G}c1S9gi,>m0yoAa;a{cdGkq,pbqp1 3eܚy}kbm;kH{FZţ3'z;? +:0w&iEh;) )$\2r54Fq\Gh;:/$&ނ D;)ЊFZ)ut,f+,MCd&>Mtv~q~!B_oҤ(IVFmhJ"b$D~T(ÌzPܛ:>%~*',:O{V1֯P#8< cI Cϐ!(/D;"3LAP'Ա[VGHrZ9W;3ZZnƦErz /G~AH g?UAhpN:\4ZT_0N3xXu{աh";UP^fkVX +YEuve,@ +mva9?ʬkK/+^ӦALػheL׽iތBPhb}|-[z]u"lQ#jZ ad[k m*ںV(|Sf3Gz_.[.wԚkx>e}O~yE6 2nUf3_V3<5LսXml敍Wr,Ğuó;!'kH-ji哫O}׸J{@Xk¦# >uFTʈ,dYfYo)my*3k~,{c]߳=ٳzgr+7Acqḁ~ܙ[>xPEFΈvd?YdP;(XV3R" +ҰP#,ꨚW!5B®M̓ ,h ?>7^dnu_3.C~HU5멝NW bҘNAe8)Tl` l6ʳt3/U}`Shf6HJN_CqȤܞfo;D6-Ok궳Қ 35YX =kZ&6۫f3K8WYmS, 2'nqcz ^gO*7l1MXrgx6R^GrJjֵ)P[TZ&uP_7&\ݨq`9wbflG HWiծpɁ]UҊ_ڕ|}Q;;dV:ө5QY/:3;$/ 4G,T)V.2I簆e˞vI{N +=ggU$jD?SdTP-f] 0 (!P?k{BX&Eܗf{gRtcB+tCf]*tY]BY8Cc\ |ުNӳ89a4e;>вg;e# +P=p&xs%vl^{)K\6BwoYz3FLs\;+KH9LbvN*zu#{~WxTmwӋJ9]I5fH0RuC*R~4gh"o#> ff\}g^:%Gi'x %"YztGyy޼Ўnٗ. ý*D s5yⴋ$ٮ-i5[ВE[v[EĦV3U&Hc-қ .x#ٖ3WH)֕{X-P:0 95}}ݠ +%dA]eXp[jr5]J&#aLlO#bƗf[f⡌$5`4?{+%2`EsaY&rbFL>'7>_^|0_bnbo<,<٤HKv% MEwNAusKct_Oe cW&)ZMI>?kav2jYW{\|n>O=0 (cc'pa۫;@1=[SRaarI^1%G$yYL3l v(Lƺo!1;+P5I7_Hޏ槿_߽~m~\9^'ODn1$FƓƒF"HA֫FcAج\7W2LF!Pξ|?R7GZ^}+SuV1Hg/o@e9 +^\_m_3MiK2ۅ͛Wx#,].ook651g=L[6n©x\ⱃ6b !18H6LV{s*8c d3F.88n ߾B +&g=L%mmځ'쳯]lLn=T |88X0y1:"p$^.o kw Tfsˆyn='a`-b'-a=.XTpdMe#Kv̺~B'ҧ:imŁXc9ong0"6HzxUЇF{sHplXV>&K濽=2C$PKM!$zǥ2ēYPa 50>ǚ §7n^(kȇOͿ O-{ϕ[FM >eb >94aE4؛:3 +CGg/})^"pʯ-?w-0AA̝3L& a_tPBղC RU)dM /XCb+!(=1[`՘ m-G BK( $\HB/B+̡ k +$7|) l,UӺ9`uA`x VtHZh԰cyHMj:Ξ[P SY ǘySTMu!q`OE3cp XC +@#`!@"*A)mO8N^z8Hry_ +@VB, +X1^+J #OH{i gƻ#5!Dd2j{͒&,ڠ!Գ#k)dzBž`) TWmy9|oEy^XGX7` {ӗq`”ʽ2n_ {nfkՒQ:,艌!ȝU"o6V-sh7 p^1[?gQ)a҂zV4%^ge" ?Z@:ӊc^}1@)DgwVNK>{YLki=[X\,\sdӁG= +r7:M٬AG6RCy5w3~!f])xG3 ћ1=g ի-lL8GGĬHsYBx+~{`5kZI:&9湺p1!G&H4ҁW^F,85KP*APvPP>'Ź/ < 3Lr!H`‚7{<+>6!:ftaH$DIhk?zuILm9AiL 1pQ:|]n@zaG|+ w ? O>wnSJHW&Tx IiQ~`<>aU9-n=?)Ahf+nd(xVcg,b@1%( v韀aЊwBkk =][I.䑋Loa3'# +sˆ9JjL% N`85zy4InnS X39brd)z hK]JM`v؝m@tyݍu{gtzu$C=~zKS&7ԯ6o81Y9GCnɡ:KPxVbc}Y3Ph;i%d&ɲ"NW^p uvAIJ,%tD@l}`|WֲZDw(70;u0D05;ag]] o|{L͛&-TSf=Z^ OH]=m~wwuj^Lh,jМ-Fu֘>{0!-Yq4TTM ͖{RCa-\8͢wo紷g IVβVˮ [AfޝʈrX_uA4ibFo{&ebBgO4GY5Mݔ$sZٹ>\Ю=M}囫j2vQ+Ne*V._l78iʕ[sOO޾Qױ]ħnܫ +Zfٟ7]|pCn +qI#md:$Z*rӳRے>0n(%X'~ +eel/Z)rX,gJQz׸w"L8$,~Ne:.Kq#7zf:k! sگ;ԇoEG(]Ibs3L̚z!"D0~7Ie"aDچfٔ EX0-/3Ʌ&Aa,9 ĢfRBk0 ݞGIhr{N^WLfnv) ]Zn߯8>OqX3NFcf1띹8I8\u|A +NEz*DmZRSYZxҁd="R +1,o}34k8dQGbA#pWiMY;^J]e⎾m{N3ydV#ǾF&ײ:&jËDH +}f2H@33_5w;,Ԡ=*L*bF4c%DfTDQIVC v 3q (pDgk[ǒԵneh* +6"~I@H֏oE@MZ"@T%7T] +pҾQ<{C 8H-\>**.:ڨJu_,P)eʎ:.T:!C[ÍYcє⼱ iռO3PH*nrV3(%JGe?2Gx'{;Q__o9ܻǼ̝8bޞywX=8wog'1³\e?q]]H̞)\g25iJBy LamoVc6;nVՑEm& +TK@]j aϳ̏2Wd-v"''4\ۼgۋ,,+;1'KśVK$.Y&w'*F̸^KUsӌoa !0>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4415 0 obj <> endobj 4416 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv40120V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4417 0 obj <> endobj 4418 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv63030V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4419 0 obj <> endobj 4420 0 obj <> endobj 4421 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 4422 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4423 0 obj <>stream +h[[oDZ~_1Tr8^сHE΃b⚲ibBҎ+|ggvń`s]U]UU{zn?_n?|bxspjx^Nw)˝ ˪wNn}Pevz_7JY?O7Չ%%MPu:Y3{ݻR]o*#T[.ܯs([lڄ.FTv lldibY2eծ^xZ0Fs +s)}MޗJcv_UIK,:M-ʹO Q.N]olι]9uwJҎ 1>>6IvxiGo'7ES"!za'&`ML:{mb_n~=vbҫq2r9?t AR3Ī[k܆_.W׷wW7wWs?_݇ns*;-t<~8;ϬbҨg]kJJZ^;lkgQrJm9*KM@ݜ5sBr&XXU5m [jGÿ7:Hh+>X`1PI  &ܷɀm$d"c^712νw3FNOߠ#~r8=)mf(BHmL"C1ZS(deu`n{넣 E-D^@y^cS^˲VÙPRԤXXDmƊi듏cˉZPc)Jv,z# +!UһN(6?u)& #Pc[ҫ2^aqV '-R R>Ɖj&9V(1 7?.CBZz%m \.,B9PR.]i-TrjFy@V:V\ã8MQlǗ }*zkH,y2Mhsr[M^3L聶8 b;,VMxL[xbZW,aj8e;uu>.B+&y]|$}:mʫ2d\J2Eۨ+}?bAn, ,\?PZe ʫa j}R ,k*u VFx" +T6ȓ`eY@&@6='t<UP#eכ" #h܉p\c]W7 9=^E},̹(ՄS[YsKx]?'VC.>xp&+Kr6Wg

44_CTAa-?v% :zyn3)}syV-W睖W8많&_^voTk6yX+] `;*ґCeAPd~緑 , : b.2Q8= +DK-:d 4(ӝF\e/e)m"|m"QѶӄKQzX YL戠z)j(HףIEYN ϼ_-5!!=0m݂,kI(wd|]Ҥtlŏc|ljLGoR`,21 2?=lUdz埈4?=8j9 oǐO$K!%_O X&>?νN +hDd}L[DS]p6v0in{0 +\ ĿgRa0wTqMI8(>^M:{:- jo;+fpX7 ь=5pqztPͼui<M SYۮȻ]j75$n.<8BaE;tMAuD\$=)H \fα BW=R@g>-$Y +n@b&t=S-W'\>rRbV^DOO[^@K-7k0B9NPqOܔ+ƕTeF`7sL;ϧpF 7Yu5r6rO o@lTYUuF\4RQss%աEMgLT +NMʪuWw~޴\T3BhUY @ue|Ηu`zTK !%glNٷu1nG|qMB]2F(Ӊbr%6eRrѸ} ymrOP}чûJy>55~w休²-n;Vtq*Ns_SJHJl_??<[@72Zd9-KX>%&i~xv%1Hd:lǡ8yKvzY:F3+]iΌhAS2~h?;Z6yuV>30LMKgw/n`nO˻wr`b(%'Cu!qLC_ C0 ~ӛX##|4L6v0SJg:0ɛCiXvwl$5${0diT#UL7)JЖzvMKXXEתc07XUZɆ=0KtHptLu?^v7.:Q:b8>c +=)LvXf2_ +}aL?ȤgAn|`:ދ9tU=aBsUp>)T2Q5C&7ocQŽ{؏{HOxD| "k[HIz a# .-@\Xz8Q1!W#gU$ K`y*7vswՇ + a`1_*AAϾ"yAԨ&FxصrLb4ʙW烲tuɘmb7hTTuLŔ%!,׀~s>Z #S)=3 մr΍aܜ3;bTS7C2L>< +/'̓6f@gtBeu\\_9ȃO{'8,g?Qt(?D_Yd݃hv &~FCsxIXL/x !gJD%Ƴ|m:DR~ JC|zFj< 3Z> v\#S  ]0]nf16< j<|7JH;UWf8q3.)-"c7!ާTh hwr0> Ud SSSd 83$i<ƺ"͘ }hry<78tUyl+'}7Iﰧpzt]z8=٩|:O(Ʈ!Qi"OS5{qram9I>H|;N;(%IL3&lCG=OC0vY݂{z1XN% {uFgȃg 5>v˄ p%v:es^htY ! ̙VSMY}tY84ǮS,8ٴP$A]jf;st >~P)ӾL(yD/μ>H֖4O7KtLڄvۍӎ*3ЧA=& B }e'Y4~fB+٣ibWv-$>D],"3R4&Ɩ'HiXN,g.ŖvJ$TE) {0YIzvyIEIrJ.X6,_BAy:%C #{0؟FR1ƷK*IXqWۚ֜@[1%榙d%of)0GhDVE(|pP-jQNr;jd\ ݗoZ˙j.^HoxO p9`bKaW-@izۓ#[otş.2qn<i +9R%]+O2xMQaqm dr`bt8L<+E3+ ^~Cfr FFvsXFx-U; .墩Hb<-؉/Ch)Q`GaCӕ7{O )= .QZ]b0YvCR >l4As|SBa3~'/?5Xn7ue H(7 m|Iyp#_f IX)(R3*/s{i. ~2n/6_w6v;ƅ'?Cǭz[naN&& n w@~k0=r$7 ;ʢ)^9Y&#"LLӟ0Mts?GO"`h0N'B:e.&t،m 5F _> +endstream endobj 4424 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4425 0 obj <> endobj 4426 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31199V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4427 0 obj <> endobj 4428 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS33100V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4429 0 obj <> endobj 4430 0 obj <> endobj 4431 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 4432 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4433 0 obj <>stream +h;]q+2sfD2LKYvWGR"Or+=JF@WUu}w?=ǧiǏ_xxzxv?ܚW]]Lw28-G16N)Mwo釫yYtw绿_}_%`7¿\C־cCmtw/>{M/Ʀ. 2ۻ?^<?&Oui<:]1 + ҇SP&lf)D1)no]slCmeD4m\a 6y09)qFv7z7/qS.sp ug?4])>M@?'#ԙ67F@Pl z~}ͻw?8Naq:~zKN8*N0L!1i:8̡fz䶣MX7{l3%ڕl|DK Ko2Lvt6Əmd ~ca l/p%sk K{l'@oc̜,ٚHmkj6"lmd0S҄&̞-m|mj N3p*Ló- > mm#90!,wz8h;%LSv"#,7QCggjy:R&B1@)CV4JI +Wb, zAiXp&>& (l{8 ns p;MDjX[nj6%!aIK$H .GSIpi_&>6mˆIxGjȽȡσp,%1-(*>2 :ěʺ?_a!tn!Ifv!aKڀ`_;]ѭy*s^Zh{kZDGRBrU O"?S i'6ycVG3^ZRͯfl~}GnԀ=-~e`jöC"tzAf>d=7pW4G4Ҧ^&$ޙ6h6ljWsV'gv @AAG.QKςI .;u7rNbᗞr;TJ} A1 J.;K;Th-o O +{u=%af k7B)!#:s؁ zW.ӁϟlP4T#틠 h=FJQdpLDU*1IȾf`p ;h:{=ۨ^1#Z +qiʫ>ʵQfyUv=_ 47Lj44giKvk, ˖FE|tF{Vah^ia!KV~gh ~a۱eݠz;&4E|V@DDX:=3\c{\ExE;Gf2vyFΰ^4xjFMfAl/Si5Bh+Y=o>#K'L؄uի&²XGצ" +0˪ +Q 󱃾bj|(xT%}FNs09n&A,xGȩrڵv($D 4 =P3A RV/E:N"JjyWiY8$4'to@N\(t&' ~$W:%QDem) 񕃚l։TN ["FǴ>zKnTcSZb"o!④F[.)w5zi+\ uخٮY-\L-UqBmloX% +!jq JA6əK+(dvK9j~jQϭu$4WCy6mc"JUa]3?3;ωʉ蓺EHB4v6;&+we'}K8;ؑݽ07l OlVUU vBYB Pavp+U%jkXλȧL9QO,Np +ؠxtE$c*:u6^<)+89rD׃*)E;S敷>1] K솨rflz@[r tV*c*us)t5Y!+]tGnq WAZ nm!B0\4ewAX&!;(#)C5-6v,S㢜%ff-%; (95t)ZY&T}I:JXo_Iݯ@)w{F$6H +wA"pr82JuՉ.Vm\IfN Y앟u[+⦯DwiK|V7!ѭf(gwfңg-#VO֜;ԇ^pT@mȏzFl +5Kmu*FWkzѬ!j|ixqo!ZEѻɱa*\$M`}ԡ뫠LN6lF+bӚv:GBuWn68&W d0,Jџzʀ{tdQz l_<,1*C+Hn8"Ά֞|CTHj; GGT4jvTV.p%t/hVMx!2)ϭuYCZ7&HtLpybtN~< +k0ۦUdB] E<͋ll+Ʊ#qhKժEK"Mt7KոWguRzߓ4FaN'z\u;pNJr\DRt[as3Iĩ,,N5h$b:EdN.qvt}yItzLiHEīM[Fokƽ"J7 ;(YmVTbt*N[sX3YˮlUF>]y-#guQШ;}GH.ʡ/095[Rw~H;y1\9W55]N|-dWzb2=+,+{٠x4qiۂ SX5ڞ>56k\1V0  XFV#江tN>hJƲ3*"67x:Z[=wf؂VMd(aH5ruRC)M2Ejs.Xuk2_TcbZ/J +Հ647V:>kƉʭ$ X[{ґoDMK rvӆ8d7ͺDOͽQ% $ %3 jD['ל kRQ G&2U}^RAjixp2Kxu֒_@)'宆5*/N>^2<mי|(_ͼlu@-@dawwY﫹A/zF!h6o\k?fۻ9}qZO6X_ pnE,*,bت)( a8sNJf!v؇ɭnjT@VG%f$S[wGQ{^tV/bo[x2`4K.^b,2\Eqi~i+ᅚgaC4tcLMw+3t(P硅q,d]?"mVsl"ئ(ztyb|ݮaU߈U͡zC].L䈆OZl;=kٹ~xiGeK >5W8t|$rqWOvĬւw+fCbF.ft] :F"Qzt|rܜ[qɘm.o:o0M+o&KJ*CPz`U~=em[х&K~]Bn.گCԌ>iHiԽ=kM)6uH,%c%ػ:p(-K%B nJorNUZC5=B @۱khT.+@4ᤖYvIR^?WKj$a VR6u )c]Rr\TTF T|Nz@XMhZ5lװ&.gu4K>}*/2IF JxrBoWQ(=sX^w4U=h +h+I1ݷ +u$=FH8U,yZhM'U,KܽYu V Fr^ k G=4\R]f1,e,mZG~?/b +CDSB6Tw_ս"לՓPnI}^q과?P I>2VwuUGVʛRv{rpHtj׳;UWMU) ڙTrP9*7:+(}hWK +A"fڶ4ZGU*$wXo6JB/0{en8D|߿z8O?V>V׀(s H?Y;~9W=G-?m&@ +xsu}!Nm#n'խsf1f?Nno X6j[X?TEK4IEsll -Zŗ??4!DCrͻg\Ju|4 ).(gu߼'ui7ܼ7 ,gcsnK0nv+ͫD9_?Հ/o«oܿ,b/2o `\{ucc Xe &|E=FtR`xhe`\0.KyeM#Qr6~4.8L38-=%җ>,K^9k{w~6X9Pܘ>Y^LO?<ݿh3V=LrGLU_ BsԤ9l\bsT,Dz[JbF{01y2 pP%*fr'7E7O7ԁ^o2o;1 3~땉PLrnR>枭,(u ) 2cpyftu4*]o>pj66՟Wl,)pI HJ+]f? +9~^PhY?M#xL5mػw=}b7%Y=w?g6X@MYrO %7v 7am ƜOonnbj?}u#cfk3HG +WDާ`1+=G 1t +endstream endobj 4434 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4435 0 obj <> endobj 4436 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS33101V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4437 0 obj <> endobj 4438 0 obj <> endobj 4439 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 4440 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4441 0 obj <>stream +hެ;َq8ck*JрDXÒ0]rv%qddu7 yGxzx7o?~p8勛?Mo>Mnzxss2Ǹ2pn~/KH@7afn҆pFvva֜\qf>9◪ty;aw֫χEx=;L 穔8a=9 D.p<59hd wDXp:pYAs=ORD(H{<¨IԿ&C ,tn +|u}Ns,ӧǛFsqX湘uux% lWҜ=a )=R@oSaM864;Oݿx5  hZӥO5SVӎ[8 Ho/>OoO'<>F 'Xw;9WL/sqj2vh~v)q{\CV'PN'.frIzVXZہldL{ɗU۰­sU{Tsރ97]nmB;9DMn?gDYֶA4a= NSk ːҳ#|4:4!, 8O̠u HܨAMhԀ4I@;( + ,BhPFʮJ1 +Zld0t+ I,ڄ׎wcGc8hGét +BmOZafv ^GKnS4| ~u"^A24Bu.u/~3u4 Ȼ̙G?]#Ml0b4aGtĸ?iiRjU5a;J]k49`V^Q-_-wD8]ۍʳRH+\ <\ɷd ,>}6/??s?)FVPI-Fgbbќ6ЪD|y 8#}[O RnE{6ӚGE{0n+;2\ucncv]5U}A 8!_?#F=Xf7 tsrr+{Njhҩx8467аq0G<@|1q 8 ɋ$>]D(y<Gyo?ba3D5*Mr*ED}%\}G6,t# =6u"+Dv`0-,@л.0vj"$OLςP?Ž} (]t]Nw|(Nq2I^!:YC"a/t.yU44Zűo4o*QY{z 46qR}0 2^ -MpUڥUn OsrV5PdpؔKz}ے q_cIv)6+&Ƞ{HA$H#8d_I&Iy& %$lvE*x&B0|S]{q0GP;[tEM;ou^c#3uF^Agu+ ?Ǯ5B:LWUSYl\;fRDgʔ,חӞ^;s|t9-֨dm&z&N7YTDq2BH;rsb$`vv|5!3xu<.# K{ŕZ"h5eE yBܹhHTyx +FtuiD5*x]ՙ&w:3%D:U u$ ̏l7nqt&WαrZTIXW8nz ڕҢ7da<*cH2x8'\Ev:ZF삳RaTQj\饯(XU*), +*ج_U-;ŤdAyvҞ'tVI"A&X`y)x&XL"HQ*ؙHQt[M9tHHEP9$H +>ޣӔt!:~g{/LƿI_ACb+B( 7Qe}fnV[©TZxN=Ƥ:gf:-}kpsjJ٬[ʕ\!C +PS)^w^"{b\̮3Z3iW_ciG )Gcq "+7Hoqy3xD/J Ӓ B?wgD:=_҃`9|Z'G^EV9lJ({ݬEZ?/0ڹa;u!EjR[7rM1%Րl-|ż;I66-'Rq++2_#z\ +}X#_&Te+$#c5,!DC>$:,8rBw^L"x7l$':Fo3v:y<=w쾽Ftdk4&h:\ 1;ژf=]T6=aXc.SݾKnoBVb,V M 157N:_|,u/g:` +٦`ZAhluշvW03?t˷o?܁Һ}~l>Gg꜎4# %/]so'|6࿢#mHϏy?0p;}#{|~fL}[Zu\sT}xx-L^'>ߴx?a=-Bx +`&n.xpOHW)?ay'v@pg>n7ԫ۹(>o:'/%t sq4ϙb(osj׋,?s*ZLyl@PHEէ^}1)`V ZsэբIg5oŤKHgC],O[e`RO%#/W3n .Sqo+|U6?aNG$bg7/ FV3Ѡ أWoO ;F  =y iTYrn(_OHJvuc!ՍzSzO"eQPTWWxUr>F[u1㞸U +/Tn%ÂIa5ZMbU~=(! 3fgK_Vyc+zE=V}]v t޼r[װ KYǷ`bkHkJ\nُ"G߂tۇ;U2*MBPl_0"2#^IOyHS,x?8? 7ba#f?viQkmOU 1  ۽q g73!VavU(8c^wol,sr'$6a&Y&U~t-h^&RguYwQ֧6 .; +endstream endobj 4442 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4443 0 obj <> endobj 4444 0 obj <> endobj 4445 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 4446 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4447 0 obj <>stream +h{[%q,4H?4w$CR"iȬsVlgʊ??߿o}_џOw}}88(u Tkbs޹?ۜ _d}OO2KΥ\W".SsgkGy"}?,j/n  }N! Wi ~Rû\ z8?׿Vrg뚞:xVo|cwZZ:&~yA|??_RN ~{K}<__sJK~d枷p: 鿽I>᏿o_N՟Oy{BQyQWO9s5 w| Wܖ{:jNl9ls[[Ufis_]?Ttas%uE_y{K=0wE)ԭ6o[I}"_`^xgm΃J'1!9wBa+@Y7衍/1\ δ k-?c,xRC(xO=@;]>uO-.+F|M5ʤG|w'w-&^`2ʯB/'%ɬxj]f]w1NXp2Ȓ;IuNeyA?r?LE#rӸQW}ZtOnB$@+}:2m>O-/rw'z'Ӡ=Ǟ|{ + +D/l*2y5o='$w 3;x̛Jf^u1Ĺ s]a,7{i!WH9Vˡ"eE.'o#m"1˸ r?_~}rAuT^x_VW9hYE9EW"9tRM^I*ga]gqT]oK{"/;ɇ>->3$mPrq6fMAs-QI8iĄp0/{,9>3[O} ڒ"-N%"B9(fFXx!Xѫw펄*@غI}%C5-o`:Y<:i>\(eD Sx):E1Pɐ9p;l'HKMHSlϢhYBh9LҠ˓nS +0jl2/6mOoFu/4.:e-yiSI\TJnAbLrpxt~ެ;Di8t2AI/JŢkR헶+ƫ 9+I @r-FRHՖ'v,O&GNm\M6 [RU(eW\|WUU;=ۖRAٹ=FVo枻rs$oyll(+>&ߤq`KCSG9J;L=3k#^vq[:1 +nq:?ds,F8fL(Sů() Hw.Jܐ*Q__C_x tU݃"GEYgI}]+]~/5TA+.w=hVSKwWgĪGa@=~eUTYkb NjkН6!(óރT?jtpTŎAj:찡KDczZBuel̟n\LGQwS"ZgjlFW7=mnH'M0}.ۅ0$2SkA䥊:*]={ [J^iC+ևM-8eZoS+]ֳ_y*GMM3դb#bxZ#od4Ji cy!~ԀT(L҆˰G_cKVfTWgcw5[^'^\q4:]9]:8\zٛIf?V0-V{[t( <OkFq`z638q/2>b߾\5 h]Xt(;"V/0 m+]wXKF%w_˩]yF1\ ckvVW xyˬo!Im=2\\S\tO ݪLw{% mf>Maݒ鍦^{S0ɟWdPPl&Z2J\5s +tiQ/klE+!%$s;#Q(?q(iˆ}sS@-!+#K 7n! +X/[\.2HMtXINƈ⫇dK}-]2L)'?^n]3|[i?ADPepU2] Yo9{b3Ϫ>X,<5V#+ F-)ْ+<v0>g=JW _W`5NH$3ط>%h 6> :QKySVaOceLa"\Ӻ|Z g-=Ap4-.DZTU\]n#ǫjPZilBsʈZ}eyW7K*>_!/ƨ4^}Q#1Y71d#\^C).9;KY^.L#:/- <큔w::lvrcxzE{r\ʁʁf +*|GkOϓRo²_wPH\n ]bFY@bޅ^B=O}9.;-Z;S[?κt⹹WY'h:F#]o35E/d +̡LJ؜ͻhԫzQc>]ɵ5W_›54FID0cY7 +Þ5= 4Ђ4JnC|$&w3856NPGe콗gH#ah>rT}n:R"}Ma1AGM9w B]~GKnHT^oWIGX_*xIeU~<׾_ScXjzz!Y]2]PԳxFqՇ]:DV+fxPQ >Y ɴK=]Uy+>_xLg3C9 Xt҈h1 Fg2F3&*'՛deV0|Abeh:|qᎪ8 aruUcq06apLR]+ )ן,Ӳȩm˾1z8u¹kR~x{V-K=K(PZeܞUںHȏ9I2s,Dbն2cB2yNUs<_ʏ\ewLVav +xx?JY0'KR_RǰI.+XY,7X1u }tPꁏӞߊORpd:禪a}`/]h]0FQ\ZDfYwhK!,C!+Vˋ~sh;.`Vѵ_wiceeOW \¤)Y$ +L9qy( K/.2++_DFUXsfk{ȵQ5߮j1a ^g݋ߔ{C~p 'fiqC Zj~~FjfR6+`!Sͯj50NuMG1rJYCRͷBnM"kzm qmDWEݙi\F:2R|9HƆSr)E'_ӶxP65[ U@ + +> +~Y(Comy/b:Ыe=VB۵rIXj?g]\K"{9[z%ncd6wa.6R>}.|iHN脞Z]鄖vxnMb7~z'l[l,.NMѭ=7 +Z&>%t56m-%5nbdˤQ!$k0 j('.ioNkozzed/wrB%™'4mRk͌4F['-Ew#5SхKA +Q\J.%7߂p|U\3`C)D1nYNB"߶8ɇwdMMB]|X_*^hLd w.f8XN-Ćd@wpU]NF<]^W_ξ_aT03p&ɉ~wv{ +` X I12%,\Q#Bu(xaFጼ@b'tAY+Rx6pDh,Wu}vDޅɪy+;{{۝GWgdV_G./fȳQjSa{c@̺5˭aB;Uuf2 +ka?mKn])CA#;np!](LsN6zzo!(șVA;:b + G}Ӂroǂ>vV9w5 Dx`*R!ۡyЦ~@yVD.(B_w(x܊͈`ԆGƮf12tnTȥVp֩ ;Hx_h 6 {bHRj$CoD/`}א^v$P[\s6:Μ +}0^5J6(DMfPRSI#{0CŲ_ +,O%'f仩i ;A +Ƅ*@1t q9/꼋3z˾ECJp Pw~ >'H娕H݊s݁\ ƉK]ݕ>:K9KoG]Njn4O`-;Hk a@sBQr ݁m!H1BPC:q +u܅/,QJI ] >%} H^.Q`}!/ v8ݝHHoFZI  Y]~ʸ ڵbIˮE0RlH +>PG^{-kv@#|'l v +jъ'+r'I-Rw OEJJg̍8ҌDo]GH:]z1'].P+o|,x;]:0[>ttO1 (B F/r.zK Z% aZpCћr b1zNR jS AbL<9(b!$\1'LU '(%cy=2Z;\o3hxEv8vh0"//aQWm#'UGz=UOR@dSM>:HH;Q/.MaY?oC#<3B-|>~0ƒ6#t#<m3Ҡf`NFoӢ%%q|z1"Z߶FxیC#<3#ƞ`P K/)PŸϗqf/Va-F}Dh\ݲݎʿ +eVy $J(E˒kYyw^A^ƊY΢j$g6QBm2:+|3D-Z֞ $|fQ 21,泵l,0eZ܎Mň&ro,řL\B^J8֚gg3BCo`,^7%/!Q2HV˞0l%Mkćp6z#y-Q|X /E'BRQd$4BD[$ߜ0z.[Fx0[g΋z0ƒ6#X6ThUhS'g#rڢ q +$tRb1W=dD/{ye @TݫaC(e{H(D)E,.NNHĂ#=] Oc]A%x/УĞb38oNg-(^MW| +ͧ:)YuV`.vpC.^p"O SʅbC n/aneo#*/ټ*&)-h( {9*dP1GpROEǤlQdR6X,Us.Kd-]pYpRT``ǯg/k *_i)^{ >S&?Cg-EmT +&r8M[pitql#8q%EǜLfWdNd|NG9v5J!ȩ>ro:b`a?>7m?X>xAa]8lYWմ% Zʹ?Zc'\t?]Q/f񣟑[](x(#1wFkTVKZ]XN0.\, .TiFHu֢ic@Hىs`b:ЧyX]F|"<I./襧zC.@k +ʾ +;^Kګw +ƌL/C2K3-LlH\NsV#49%"Ә+ ΎSvA,D`9r!>*eݖUp(vB(ammYIߐ[T`S60Kʅ->2.nPJb +eBE؊:ٍHiGG!D~~Ԛ8l_m}P)c3_(GO[H:hSKB4kXTv`%qe#^qQa&A'fQ[_M?\]ڌ ngKn:Auc/*8 UHnJ5h-)[hKe`k˦1&XŌj:,O?jr]h3oj`/&Y2Н/zXqWk͌ Se1b39f@{?FY}=W+H5ZpDԪJ~Nu̴yz%gFD[^zpՃ&Wr b=LI㌸>Pf}A4Æo'N)qa#EGv8$.F\N`5\%I ٴ|8٭KAagGB՝{6 +ӥ(^ H0E\BDFp +<N2iB |ggHX M%z@!pwn +Kدh;mOghpք0i5P.IEb%fP&ѕ ~mEJA&1~v~&lB)ÃtHI <´$7>3p&Ϊ~$NDυj;ę^##ĦBIlV:A+3[2ًlIGy*ٛɣj[lOȰ+ʉ" 8U5rpϫ$*w]~!__~?˴\W}8EcR=\v/._\*ۥP#fEYU(/)̰Jgp0Y2и &2@G-!poxk@*%" +ΝzBףcydE8DM=**5,|/13@BN'0PGƶvD%XahS*qtL 6D_u31EMG 98Vl&Xh1B餪D7?%/ Ʌa@ՅIoKo"ivO]1a["3&Dށ6p&BMb%YR])Hht e֐,4JEQ1jAEDD]Qf>x#;An}o\d!|kEqbdN\}pߪW^ecAL>( A>|^ GA|/OW +޸BH}^ͧGG{E +ɧSvE>⏍R|t+ȩSMK{eسRO +CޫOK +z(V6Ke[:>,p3ޙ\WR+rUIҰYǢlAgPgV[1A:ζClLT^OK )kJЂ~@ ܢn/n&Qv2EOUlCHdU~ 衧Ժ]*)TFYhrBZR%1KA[AD:;j1)Nyskl2D0"i :XYHXtxw;>g"<@pVX}`UT/H_t*{z҃/kJ?Rx?P59ԮPrYY;M(asT "k~ Jt)iCʒ bwT..ex ljz\H!qJ!e>ڮqY=7a]GB91F OԘ/PѴnwI_2C LN&!C;;P !lF@}8.+.drsC$kENy[  +Q\(.Ņ!o%+!(I0P(JHXRA,[X4کp8y|L~C5Sxy]AVECA]&s&㬚rэR{6\fž'akod4z!1tIަhSZ.tz|S<@ luJ ,*_-ۂ6FuZz6AbS!6A؍Jxi >|6FC@$[`h:z.!Y4od=m:,X#PSgg?w{15tB5VNKY 93͂X +Vy^y@nzU'MƄlUw"̪5yK^!\a" Hxݔ:0ȖhqZ}E$v]M&ӂRS OT g\l SctFrnӘ+WՙA'݈1K2{/skz&53r0P25qIc'g|œ0uM[:~ʝsqUl3 W3g5aڑ H|yƠiēEx4i5=dk&EӰ`2LGLG85Y"ҢQR23|j,1Ȳ`ި>EŎHEEi3e}'E H ;,_Te7j>1D)es"UP4 pE x꙾Z'Q{u5(ٱ nU^`Vg;6Æ'!ưmIDja &b]Eƭ4q] ɈZvB R.O8 R3* e 49f"kVWyGFUH3(=|^>+#Y5r q3eI8!=ݦ,(AbwR&sCTmTɪ6g0֑L~fRk Oi o@ݐ[ˇ6Lԍ!\VSGa6r:UgjHZQ"݅5,VP5RE#a,iL?$iaZtT5WʷN0I-SPK2 U^*`fv6vbWC<1ĊlPK +TdMYbe^ob;\,y< *ٷv%9r#Wa_ȔoЅ Bf=$ERY8TeefQԽdU;]g+壷<|o,#çѤ7')ӀF2=)EBiֱ{ <6UF-Y6lPqփ%>4c{;icTYyFi*uKW L + ++z" ȉKqu"22Cn!Qbhx +ώWMo*i,WmwļeUi̞| B::{vOiាV ӘҶ[ڞ-|ln~68>xam-m~}䞶{Fyz*P-mmw=mG[m+Mnh{}xPۊV\ݎ()Tr} .٧sتKkfmgv,uڟUڀaڲيo~OFA{# |R1mg3A'Ea Yi/Ax "@4$b]1uHSdvT Α V@4DDCV2ycbnH?3HK=A,&D,JY=Ml6z@Y8[$(Wd8.af<h0Gcp1iUfXg2"h`cHy3PG5B=iePlgP&W-J:-NbPřc)T 2lvv@u4y ,(5lzE9!p+쎒q䶒 [ͤp b^H>̎=n 7aۈjDJ*>J_ 6$Ě0Ir`C=c:e@ȶd+Q *}4YQ1*HEA_$b{NnWZȬw`?OY솤Hn`8) rj#ZzYB'y=#k;''5U2YH긕(1qo#b!p彣LeHEHl8ݒr%h'[^97u Wr|WYa_za.zvY_2^ 76+:^y>G\Ͽe8@?/\SkIרEt,t X +}př%dH/}as{?F' i8r9 +|V-|szf;!l Z %NVaRsjE4ٝ&;MZ"Ƙ{c,_c+PI0P}`ZK=`"iNd/lgd)FB|YFpKw5x^d,^uVjZ ucAyvs@ vdWhxSV{V:jn5V#! +5W =~z =Q}`s{fc{qzw6 /`aje × +7W?_*'ӈWMWJq"--}0*fraF#|%X' j>D֘JoUHyV +j6).b.4:wQϋ3Ivv5P;E)ⱲsV/e#Yֆ'QgqWHK?M=?"^WYt-$bo#R<=B{ZCX\yF q}UFȕms#3{7v撧c +.۝Y!n*GDKZ -T!M;2,k촶lbll\,G6?ڵf#iqG~J|X?(<#]N{-Ud1<쪁[ZQN$xDLKOExM&~p9SW{'Uj5 1"xHWJ|!h,OYFkHkqt:4Ө DdR,[H8`0L fh2jxobTw񴋧ZxjENCZocZozC7~{o/myXMy&}}FϠy‡kS_3l$ +}x!zXȼ{(9;Rρ_? + tܟ,CZJR`ѨXH!Gc!3&1#.Ԓ4 )Q.fe+G`N(W'amRiA /Ec7ҡ 󀪯+yA#ZpNJ:/rh$kwF >ɏ ; ,o\!i&/Ϊx1(JN3'<_RE12Y|Vlu F4W:yTd6`pAtب;՝66I+ISdqrw'x$ +*hUyEH (Q 7VEjqs+K}E4l*g@a=lA_Ʒӈ/h})4Bzn߱MQoamy@x}ْw;ef63@vӸMt*8}wހؔ~'2|nb) ˅,x'F=f8gsvt xnz<)j@QJ04:[Z~TjC܈c?[zgMza mG ~Rdt~k@!T FJ)|}A@w,p%*LT_s.ҌR|E̵$ .Eq#'Q1xW +\LS(BRׅH'suCWr$ŶN޺%LѓNX5 +Kf@\qhG:c,2ՕMJ;! :B,r#)\( +c2?2,i9,pay$49c?`n&܆ʊfmd1YŢvu#| ^3 k3(".8ɓp#fX3u6Xnlm_r_e~cL"n6*Á~E}uV`eW|pU:tk.x|yr" B 8 JYS +?wId4yHb2w"ўéR\Y;cbQRoG\D>|3e%Dto#%c5R- oIţ#%M"Dp(U1 3@b.3cJ$t ;.6G8$EYKC(Pf $>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4449 0 obj <> endobj 4450 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\ai15413.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4451 0 obj <> endobj 4452 0 obj <> endobj 4453 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 4454 0 obj <> endobj 4455 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4456 0 obj <>stream +hެ;َȑ|Y; 5bG~Ȑ4$o鎌+#YXb&󈌈˻t>?>_>㻏/~mM?~~ӓN ['˜.sK><,ӏyY\nze \Nijk-N+]N浍̛c{XuvyZWlL 穔8JPnqNg@Niō| #M;"qm:ڴz +J:3  &Qr C ,t_?=?qu}XucY:}z({_\;^z,8,WҜ=aQ FwF +?uq64;O=~~2=~f }7DĶ5e 7gogvӺyetN~'+{nll٥sN +T@u:l~^Г +T9`1a^2Jkچ9:S{Ok8ɹ[g2 s7`'p lsnh0KV_ a(M <9Ej8l3paZѵg#<5|{CyD鴦q΂nydA^k0dntHŶ4K܄6H: h'B]V)x4wxmAb5\Ib& v;\SK4tv쳡(oT ;0Wwn~5Lc[,,xGqRў[}ҏ.mU`ZqQ,0Rˀ #`Q\Gh]peYjNe_D2L!s_'DSg&ruIIQK!V9W%5(] vuuQ]˾eN^D^yTg1kf}]`x$δyD|RT⢯IƑh B9 Og$E¢Ã{L&T UQ՜*a>[`MCM"5"[T©)Y Obvvj>g7l.mN콴}obLWp}CjNUlئjf΄ +jQ!ګhEg:"]sy~yB'Ƥu\S LX#{{|t|U1i0Q| NНW Nc|os(³ʎg{;6 "> .K440ӵ;88.QRT{6"qH̆a&Ԭl)n6lae b4d~^\Fð.~n7NJ)+zW +`m恡Cu75q8ݻ)nGJw&u|%Ă#i]%M!ly"*Sxם]=y%Գ=J8R;uG\V +e WB q17t\Xx),`Fp[20f& +3=]7{!!]lwC/v#"wt֤t:Ը"uxHlkɡun޻EO <99`E،a~4#ĭJQ+ue0E˵}F0HKH"#q؃ 5Nl>2#ky,EM׺.ex}^q۽ǒ#h?@bݸ~՘Hyz41Ӊzp FI@\40'z|'-3֒UQjnaM cꏕnTkY)uORWMfEb 3Lи &>zhl;U2C yD& :WK;BE8OӰ6c$:Y-%Ӟ•٫:a#u&u6k e^ nT/Yx( +OREX'V;JSm|ܒdIaݨOUm52B7^Ԯ4Q욍dDͳx w4^!8@%2BU;ac`.㬫s@"A%R߬BdI1wEvR5Q#u7 +1+!բӂNrW+e6W4xk9mT h>`S UouL/tLp"IРa05K6 4`l2UiD?#"Ab~cޣ|ŷ# KBU]V 4(L)QBv5qo쐢pM +_8z`" 2@:6K@=S': I ya`/HQaTkA|DB2'C7G#M "^[<'?Hs8*&DMf N~/c&HT*{d^_L[qk5\m԰t,xqe{!zB/=%a@ymB+*uXzO`sx*' żBMq՝nG0ix>@fs8 ZB9:nPu 'B&R(vc()fRA5n&'{n/K&fS~8w\N ~@558f;vTb`cJ"5Y&J[o@EH %sMT thVH'<7QY4vIcĄ?)د*4 +icu(5+B fMTvLޔ-D+kbK/-Z׭Lm! c ]oc&7ݴЧ'GeyqYmY^1ra&4׍K(6VAlo0ib[lIs:*r;CGr7AqfB3j +rJC*5Z*ԣ ,1e.ݫY wbԲ=p3RXDηkh6B9: V$p*GP8DѢ P7'\{p,(|ך=QB[J-suHc&J^q*s YT\=L[Ƒ=La6f" Ola0Q_cc U>e {'xv +2Y 3bUn*]޺Hp"ּLҪA`At]ȿVY9e #S2Z>ƘQG{~ 6"XiT bM Vσsվ8^u}MM¶> E^8z)s6uAi>uj[jWGkG$绯b`AXŮeOp-Dr]uT.X&rhV1. _"v + ' LKM'ZWh.s4EܿH)*9=sX +4 +'k 1J!'wDNcȩ/ $-ɢylF UR|gI};tŠ5Q-ŞaWWT-pR4b.J^۠)1X tZٿ[UيcNJs;HPiuiU-:au sjsW95Hg'ffLiI#/NyY$*Hޥ,T8,1W6#(C|M!<kM1rW6pг5^v.ƿjeXVw_C@|) +;f{F&>b1;⩹jg+Oӂf +endstream endobj 4457 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4458 0 obj <> endobj 4459 0 obj <> endobj 4460 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 4461 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4462 0 obj <>stream +hޤ;nDZyp li'H[D`)3DbSYrp P}[׭{/xzO;7}|t}w斧ї\fR/ż,~>]V\X%5gФv֦9jY:?9mdn=3FXҜu'mp՜|'Ҡ*SC8Ӹšbĕ@V0ElySms ɥyp?}|.^Z&T/tKD;]L(5Z-\\~LJ}t>˫y:}~K'X@Q)yJ>}6k^Uq*+7Y7a/<={4uOrs)l:p:'H +^= ohN4s+kL3wgVSqHsD=5[`D㿁crG@B÷N%xpD"Ñ=3 &X +2|<3Nk@Ň@AX0ű˲sbʻEq`Dki P/=2j<0sōaraM+)XLBŸ@A][bZQu*J؅Hl"s.q-$PS<-N$!, ц';Ӊi(@x?hXH8w츁G y&1 ڗS]@E!`~=>/"3qOf܂r۫qB]J+n̏-1X}Sp~Hc8b铇Dt7#4B$j0I*]3q`+(ȩ BTB*b2V*l nosf|*0ܴ.`ݔ4B6}eq$ڏ4+U#IY $U'ԏcz6^\V%b7vg$DXbwd (VήlXU!R% N: PH}1MIRQRgQ"Pj@I}BFU1eQMY2fTd\S pMt<7C.VMϰ%fgU} MN2pêHRa1 9kPiyDNjDMc؅aoCQ1E8}D"+Pf$ldלzؖmY$t(Զ/*{ܡ1,l6{=Ex7``@ r@{6AAf7M 9}]HDCÉ:ڝE:hXuLPcu"i!5_ʫD< .*JuYqJ:{jC3uTBp$|ޏic".2u3yӈIa#k$:v,V5OA4YFq}')G:hR 8DJɻ ;srRD> jU.q^|0ѠuܭQq3nl"\y;zG7Hǁsyl(iPd*Z"6nuX`I]gWyDAZ]{N"*"Z?f+^یö4pQXRf,zX 3GF,`1$ E 2ds +mo\;uȝXFA{Gj +sH9BZRc.EzXVl͈U=D'*s 4 {IHXL30a'Ȕ6{M wGX}cնw$q:0H7f+ŒLZd;H_Nl7h>7U$v(|-p2ʗg_*]P7B9ZfUZ|A'ijGM\@|?S }ֱ$.{҅qVu0H+S}4\c)'$[}4FmƢ טkh[`w=r; $pȋu|vhR./T4\"dEHQGHWdPDY-RnϰRZ8"c_eD#@^׃)HzE!  x DWU +6Yym$0;^vĹf%-;wb3K6[!ѹUmD*B}N&5UB+#Z6.-DmܨWVúʵꎲoدot) +4-&,DZ9rBKpC+M5y =]YmxTt쭐ϟ,9.V!Ϥ|?Oo mJ@.s}PFyzĘ.ʪ> jɈ:pD,"& 4-kvcS?czb e/{SjZ{cG^V Q.W\z +2w9er\]%T\$Sp\C+ub[*cMwQm5iUIner_ʦIRkpu>uHeuA\-uD\fk\lZҤ#lGG;$f@l(3iAt™ +dEJ$l + G̀ϰѪ">qokIU1;1|&m<%*?naS"\:tw:JlX?a5r#'"\:7y4 +bs@a xW62D[9T1f겊. /u][߃Ds! pvorlG.\hJ0E Vxu#X׺m-,獋]hv[]]:o*e[)nZ)vuF9-DsehP J;aX>"؋ gG;s۠I/V2 /FwK!oMw^+D=9sSڿ5>ު1|Ӌ+Nqc"/w}pbgxi>PMj^{5o!ߟBfz9ddbJ;s7o߁i/+.90v\o'Unf< o՟q4"{j`R+נD_ >*sJyنȀPqs*nr=)ŧ^h 6ԷW|ͧ wi~.O'0_z|=>~>ݞnO'Ab79|8#Nn7iYG80#@37U +=eNK-';|\*>}Z]$'ߦ9MvGhxxBd I7/#h4"Js2c-^۞$4ktEg_N_3,=:bfp9:8|Lϋr4>O.XF!+q2BA+]g;m_8%j6^t* CGKܫ(? 3? +y%1? +>whfp{slG9}M+]nJY\'DM9 f|e#G?1xUH;K2(d)Fܿ${Yf:j:ov`49-{DŽ+fg9 .K +{h$rJɻ6m"gDrm k: a! #`& +endstream endobj 4463 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4464 0 obj <> endobj 4465 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31092V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4466 0 obj <> endobj 4467 0 obj <> endobj 4468 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 4469 0 obj <> endobj 4470 0 obj <> endobj 4471 0 obj <> endobj 4472 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4473 0 obj <>stream +hޜ;n\Gr8 0}d'\HW[`S>gDUW׽7en燛w^;|;;tU'RSC0~pewW#~z3Go~ؼA-243c--)ڹ̴sKG:P맻#;( Ҕs}aaw"ߺ\c\3#B-4uXc\t\cnC1rg81 "@Gmi"C[a;6l +hܔ-|uCLNW<խa}Is# .99>r 8;@0%L&gxo|xeV3>Nm5[]_4} -DLXMa͏A~}}z×Og8ljDg4}>B8;NΩ6t@̱tezڞڞn19Z۹ 0b7pNG\f&9Z=1sONtsQ`0m幆mXa˜Bœ{x[kwMvӮvNF`3 "'upbx9!\@uEijagAarzv@i_Hor(#">8wad3B.v-~`3-q3hfZ6:`lg@H B*Cz3gtBuvқ1 +5N"yt6)QOK $񠚨 s͍ ^,@o, .+2Hl2[f%a;H=6O<؊-miԩ<@Q:mbãp(OH`y +'#Lkۥ=~ ?ha de.eL6E1tឿ!KKui};{)DT#Fԝ_p7D8E`=-:vȚq"U9,hޟ wZFFb|LzgPv:g-Fdɡ+V}3&: /- ̋!C۱0W{[)H8yln\]&dD Aj,F4Ǹ"JiD NxjGW,MuH7@M#"[$%8;Ri 7 ?'~mmtUׂs2-tN 2)`̑,"ʮ PRGB2# +w=d| 5-9-:ͮ/mmTGv)DKG*AЉ(""94}l[>M1l$5j0iOj"-F"iedqVCF qI0*\]l%RCG/Y`vYmo\$?N[!b+['|nzY7<5|%9mI(]C +f3Y&`7oL[LVV8E!~| +mP yƥ*!㋄d>n\DΰΏ +C1WAs‡I &JHeTB [j#Rڡ€ZWw9p\A,9 +A+98o$X!2ڡ-b M}l-i-l~%^;˔ SsMmZ۹]ƖTR»KNWϏs0b#%>(wky 6׳@w!%Χ(93:':5E)tS c!mcouy{by஢UeX[T4RT0t/@i2Iq}/AgqVޙ9$N9,,VuEZ&H82.R;VOzD\MQj~0Rj˵Kk|Z H7T)*^" eފ~º7 !iTU}˃~Wf1Oqv +S( +SR7 7{_JW91_ILa7vq~fM?|h T[%-b\6-Aůf ]Gn[hVkvU.⛧>B~z 5< S_8rVlk֊p&KW⎃%mț} xGz%QOd~ZfPa( dj)|!SlL2y2q?gvm2^tM7?nXr2v v|utu²LeJ#GǸt \pcgAv(J(-^ 9{"Up\֥x65Px{)oNjd~Ñؾ)An<(;5.:"$HErVQ!LLheYW~ƌlz+F\@54hH( %hͧ.RHjK{a K1볩^0tL穛, W+`<&Jܲx,V]O(4TQz ] >naa&gQl /ܡPD.}PtlD2Qtk^ Uƒʢg6u)VBcԭi2h~*Iz9&-瘟(d#ǘNZ.z1(Uߪ'Qj"TAR=>[{dNH刋4$cea6*XdQ3K$ +KX@^luvpk=@hUɛ'p)7 m(Тۍ=/=[kҢȸ%H&%p4@<;[pO11lAFxQ!IAhcsm=*>jy\a +,RiH0tVB 918=aGh |ge61i ={ \,G62 7"oF:?h:`:X=,XD|C:8F!@lH j-S1exJ|([72:2.,?α^!*W(5nƌ6|^ c DIۯ>*lTA&ylQK= [7ׅ@w *G[ʟiCHm@HVΤ*h"Ys/Hud߭|7mrU`$BaosoJS "xF/F,r<ύ0!}qa<ؾw?ED +endstream endobj 4474 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4475 0 obj <> endobj 4476 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31093V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4477 0 obj <> endobj 4478 0 obj <> endobj 4479 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 4480 0 obj <> endobj 4481 0 obj <> endobj 4482 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4483 0 obj <>stream +h[Yo~_1))p%E +RA6Ey?p~r>gd@2 ꫣG_^owz}tώ}wql|q85dqtr5/H~CV(p~!w !Nvx?u)]Ns9HuںLsT\fwx܏\:ˤruH^ +ٍ(a֥M䯋' %Sfe!T +$XD/=,j^UkЫ!ه&ˡ^b6*RsɤX71$[)k82tu8CХpu0d;֛s)Nh[Kѹ͕&kcZJ7L^!dO`M^Pr <1~M!jL`5;ުƨ>:#}3h)0q]Di_"vPZ=rM6e@e3/lGCJi)v3'>n[8T~t'7`y. EJ08q.IՒm)9Nízu$DlDQr Lkrtl*I&Uf UkX[E\n.FӬ$.Fξ -HU=@(y9y:L4XC8r~<>Z + [ݬr\W.Q-//ޡ yFw˟_ia5ʮ:~[xپ; q<~dA˖YQ;e + +Ps*L{+bJ8p%,on+IXmEdvWNM5 {ץohU5Oq(RsOPZfu2fgīf@֘S3HPRc枀cq{vc Voʢ#W(`N[q[|MjO!fUFJiDǃږ~5i^y'N ŲtW|{ erDe(< ȳ9Megj~}LslahmkMwl4?aM^Mkn/ukI&[J*VTKL {]|l[Ŭ}_٣8d-@ۗ~ 54R ϲ>hpR,1+;4I/~)3mJ,Z%)}l?C^OЩt~]jN +2#!} eW +%TuP:2CJM)^.)jx-5C% hN`f<^Йmn3r[A=aY>4:Yn\mK}okTlg)F& e0vSGclg3rV[ &nZxU"mNjhDPQdْc~[)y[]o_"ǪL`OJ7㿡_ oG[$tIb0zgt-`$ALtD>] R~MZ!w47zj_|Up7W |MM/xLZ;Ň/H|ɭ `JOU zrkoDк{dZTz&gJ!E`u1 _ F`Ӎ 7 5i˻)W@Y|EFVB,+`&%i(0}8PA( GiqJjP4ci֗:0LfAӸ'I4x?0kȐM˘bj Wwzיj K) RFj5F:|+3҉ n闞fV#t1DI:svE/zi0 Qho$h2qʱ=ALyw/٧ˑI EtYuVBt@vM+,<66phC @cǿ}8`7h2=n~OE:UF!1j |OoՊPVt95ENZn}y6}VԆzsؤRvc1Yܯ|. wzF,h*WO>#x"W +O*~JL3Fk${9I#Lu ɩ C\i]O-R Bn&8=< ͍?]Dfp}3||>+MwX ef +LUݠk;)7BOҞr|nFmm=ۨXɨE0bU wO%:'7 8$RR;xSfCE{c{ 7o!`kwO6$`7!X =$">BE;KCG +hmQ4nGb싯Q~mDOIDkV SE1 +^I$$|՘_~88{=3 4^,t3h␩VaF>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4485 0 obj <> endobj 4486 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\ai14681b.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4487 0 obj <> endobj 4488 0 obj <> endobj 4489 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 4490 0 obj <> endobj 4491 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4492 0 obj <>stream +h;n$qw~EI]|W Yɰ- 9rw?n _,;ߑx:o~{/v||{|y>~݇>^ n;]--eyX1) wn&Zw?_}OSHon+]=[Si;7g#XtQ<[;`뾶tgx%y(%a&`{XqL{@=|YR.p<59hd wDXp :pYAs=ORx"$=wb$yA ~eh+<>,2,<|}:]1 +hsY(iXWV;>v%|w)0f8^mpitep@ l8B7E3bOcA%iL5 By6T,(jI]j;ڦɑb[iܞKJ򋥎k>ǫlT@!a_.7Ty 4><^'z h*H!TIl7J0GeNjܡ^Ic% ]u'%yY S' 0E]krq +/$ v˭>}3+cG;,tUv@VJ v joz{j=˃ѓ݆+Zh]tC2n:V$J/k>i(đ946z&ЇeH3:Czb@!BBiN)*F堹C*gnS4̠R%|WʲWHh҈ʬd bnL vO735#z\q"]P,bm9{{;H#Ƕy*Zfq(=`1J&,[sQ<%#. +%owFrxދG1^7q` ĮT9GqXE@LAueVM<YRR c~iR~&-2g$@aU|ٟ]ۖ9uc3X.tTR]X 8ʓQ5}F˝;8/:*߳ԚU u +d&WN: F]8NPm|,֫4(eQW,٭cKw$BX:ƮP4֌JD5s 8F6RWM>Z`Q)ΥQ/{UlUu@+nPHfյEU[*bPAtٺM9s0عi!,'ͩNPJ%́quי1iM6}l:y#h$2+1w$0ˁ5uJ24Y ޏT0$`eѬEjV ,mCN$m#&E 4|6e>mMIzN tHL,\{0E֖Y Do )T#*J8CrQDy= HGt~QNjʖr0òM&4nK01V;\ԇ6 H䌦sr7@ <&? codm̡VdMa,mҋ BiG9汰~ۣm .dQL7$`B GN6O_? +Tp/gƚ jVhFtpkaD Czyp#Y -mW74ƿ "l,vd)qm-v1NEe]Tߛ}V?)cBe58Q. %gśpQR A( n˾uB_;E|67޴_zEƩ tmCZ5,%E젻&R–My, k@R YH6iSZ8j@͵|OlbD3t7%1m̘b"}[Ok5 «@eGy:HB6jԜXm4nBWUi.AoIXsKɊis#ho pfkxY; VK~%Pk0쳄mXO7E2p<,*s+.&)GuqA.(ҳJXr=F =KSv;%F=?D}¨J3h3W'wΘ!6%* O:nr,k/Ƭ{Slz䰃q6*D==s{sj0iu@ HRk8MtN~Sa63V`IcKxk7{k6_ =QBb$VOij|{&X;חA7od#ez45{qgjYu.Ip֚YKL~uߓ?D0KNZY1g_'Xy/g0чT4`! f"aŎW770OpקLJw?> o? _75<z 7Io`4& xh~F3חY{ }oǭq=>>C )pednm_< +xǗ_q,D#w?cB'pЎxc_W鿥 s4]e 6(3"Rqp-P%r^KNH@ݯ&Xí]yi[pV+'kFhcSOٖys+ERja偆CK5 Auu1TQ+&IrZ7j /S(MT췵.L8WW΂j03"2/HPmw- +oS*LbI*9W$_̔'ָ=.![ZH-EKs^sAqDb'8wp +endstream endobj 4493 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4494 0 obj <> endobj 4495 0 obj <> endobj 4496 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 4497 0 obj <> endobj 4498 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4499 0 obj <>stream +hYo]b\=CQ4>ya KDw̒ܤ}h°vk6Z]\ş7ova˳?\gn4Ni0^R]r/ol4 [xpz`L -</MjGcFn;4DZܖ7)>W2 ,Y/9Öat~a yt{vw&x8@:Nn6$B"g2#LYx&Rba 7e#v[[7ܲ%E'8y1!AęmÒ!+{y׆A”2i,ap>8Z.xܾ{.^]"; + (2tY7HJ vj)nXJ aogރd|{x{{m'9 g h`} RixB`1 yؾ3c@FΏ[ +)@i2ڐ;7h9S`!aQ{`$N.S( +lSjjaNi=΀1;|Dmg=ja""Ƅd0s &W aߠMX=&7c ܰ@FUX^- 킫#V?B{im7u8:2rO͔d%o<('8e!K%,`Ceſ`~FbFCo1BFs3zxӎFi^D X6%FZy_0x.q+W(@<>"83 bV^+53 Nteb/ReվVDlahLB1 N=zD=R%tF8+D ̏d!t&as +FXz(.YJ_"#)t+X5C\: B ؼ9h:>zbGDY@QWU3B:V fdzK&Z3ՆmGlƄD/%pAIbC2IqY/2 (,p[' l(#DDUly +<*Rx:$֦,0!Dy:@K(E#57=J^Zf^10 +:$0:M]Ċ/0VuۊT-cd:!w[uX,j +T'jZ +jMeɐ6gCiϐ %Z# SjsEaJd'FA vmoQ;§cX :#9<)~X0=h٨h! (1Ϫ_ɚO&({GSCQחh1۲H} "DN`mU (+Gh3Pl yňCo=9T>0k۵eUyPxb1I`=jlkUDZ# +6BaSɍ,L}@V*k^pGwW0ڗZgC'kp$*93"c|-*(>9uΆeLfy"POurBc +!R@ O'SOgVgQL(!oª`V*::+-SӫU\P[Usa`MX?TBt$p7pX=0%}EӒ+sg.@6Cq^/!A˫Μli rNeWq"&'SH1E螠~1N) +ҧ_HM#}c+c1i>[n $9%hXq}| Cu.1ȜPK aO区Q.W:FvR=4If:aE}q6/gǙ>>%zp3O5p &Ț̳.[~!C5O-_m F/^ԉ W'L} OZ,9a3;Kxxѝ&+0d_lOkna)h[u ^BfY*@G9#vJoPԑb5{J`['J7X[-\X;E {b$^,?8l  D=,)C'w"\ z6ϒ>PjMK\&s ZxT"( %8Q%p8*vmdV_ k|0ݐ_uu[`.jE Fq1:$j%v.GmiW&ߛ|/Euiy5m3%?JVrZD +Kjj?u`vzܵ5`d 5sEK#y)I?h`,,^&EGc;?߫퉹7hsKޜ@+:'5ZcLUi-S}02l]uD񹖷KoyuF:=1,n9tKiY*vCԵm-Hl9#~U*em \cgA;-G})ZA\ZȝMj;OR݅\yMc/mի?~1ngǯY@~ !=w<>>=w?yX}󨷍b^LIâ/b9'x[z&>"݌dvKOJR*=%.Sg% U ԫTwl=5=,ewQEr!=JTa*kKJM5nmصV֑s5jE/|Dbj [ނp^+K0G P^!5%<Ҕ]N%HIqV875$"_"B8,±~ėP/k[r+IMtSjOayLmw&=H!xoAs*66/+z54f@-=Mǐx-^]yo3υy+jw-.뿆~8|jx|;{3?zp7OCrR ok;CVbUp'uBy;dGr' ՛3_ӭ8>xt9o.w_~u`X|l8//5rk,b?M<9@U{2 .Ňdmqr"N:zx6u) 8 M- %'~a0Z ߺ*Kzb#u\tR~@iiwmHt9C3A_/?m zRt(iڈ. kǶI)tlg{m da1 4:Txޏ90[ͦpוng }G,a%;R e|Ο{w u(#+'m A +uy"n+l ݒ։ݙ> 3־ctQ/*$$+/oisiMZI"-EqiX^,0;nHLt3Iffи +MGeft=6S%t30; `˶ܼK66B2-Xx4zp|J]# P}4?Q&;$?AN0O:UKa+ЯB<n|A xTdib+# 0)T)O$S=d2.tخ+<@A垫7nE` C3 hh_p]xk +0OE +endstream endobj 4500 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4501 0 obj <> endobj 4502 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS33117V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4503 0 obj <> endobj 4504 0 obj <> endobj 4505 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 4506 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4507 0 obj <>stream +hZ[o\~_q{PHd@'M,F8v_' /g%7R!083$o߿:_.󯛳_Wo^_<؝]~|rwvyi\b..55Y~WclX..ݽ<7G7:B!cؖޖZ 3Qcr t_N]k]Zr/5Fzk<+/p-DhGK4 :hZH\'1PnEFU\wTn] qKƏ-|uYC,oov;Uᵺq/itR<]1t Ȱr9ɉ_dM߉~I0pSW`:Yo^_Ξ_:r۟Aբ3 L.Z|,¯B4џwga;rsW7߾:.oA]Z jjh8DZ1“vuMUYw{gX›eS3vQk[ (X u96$VOGOS0؜8FC{hlD嵆a̰eMjSF]߲:vvM#X $! ~B|5f.L@@̆SՎ edZ1,:MKm-ҷ#&S yG޷ ]v-~23-i1;TO˰`R nWآPG/|D$P ,i4}M+]0GToLY9ۡz T<ё;SQO˦ ؚ֚UO-0GAe4ޑ#*d +5bR˚#84a P,:UyuwHTņP"+ |&Gkl7!dg/[aHBQ>P2-z@ P@+[;j%ÑsF`,k> RiԴje*R2MT\IbLl43gMnt+{.]PatB55s Ię\ ~$ aLTE7h!B\X͝Ve-Br!R%: Tߋ03iqMulїcQ'@*1DQ 薃b +(nus,B+5Q!{d&Y3Wz.jǢTb B ʺ6Td[el'6,t3VAVu]8*MS + tn!GBIIk# cA;-ǹMIi̸e6T\7u7'(ɏiFX;uuݓ]0~-,έTVfSIgvVHѸF1vݑP2b g_R ii/W8߇ek},L=|N(H^(:GGґREEd1 * j>|dȽwtaOcg0eLS)q1l1=Hz:ʔZxT-%$]rD*2^q҆:+ӝtK|xmxN6NQmTΧaeH]mQ8oTGFE o0!A˗)4hBPolGSI.峬(%3-M?h'lm˅V)\Z,Bn>3&L6e缁s~J`첽kkT NGOzE갯3JzaG +?~ۙI2FP@hqMl,œqi~mdz0_ k +NӲ%,ϗ|/Y~'GO/ +qw/!NcJp ,z Q1BG{ǰ$'=쎒LG{v/v/bOaim(ZlTRjZ#ل|) G{& +:ta(LNss)# c`#8#j'=&O(52Ai=B(.3 l'^cO/HDB@3iEࡓwzeAўL4]a,zR0 s Z+pxDiإVM.!ޓ킠Othóg=pz"yЊ[\Ea,|3t$|vfܖ%<(5m5TN9u +#ͺkag Nl!F`"M[DvT<- xtq0"_eEYfe9- #l&Ջs[svqJOk\oX67 +"ͽeCF#=}es4Loǹ0?QL#n4kG?o8lȎ>a⾁wn7< Ov!7UNtچ' +'J,j%nxbxk_T!{9rmA `/Ϩ$G%*<᭩3o4FrF'\}I )&E~}k$.#4ȜX+92d8D +k /!,]|F1_?]M:P͓>|Z-WgЌ}(jcK5%V6T/Y kj3T-T.ǝ(ۗe$22'zQ|{.gw8f``3M +endstream endobj 4508 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4509 0 obj <> endobj 4510 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31094V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4511 0 obj <> endobj 4512 0 obj <> endobj 4513 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 4514 0 obj <> endobj 4515 0 obj <> endobj 4516 0 obj <> endobj 4517 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4518 0 obj <>stream +h[YoG~篨]3Fk` lk~~qQMKؗ@uwDEӛӴ۽ۛ7W/Ç\_/\?48g7]?^,.^Ӳ_<߈,hr;X 47HcI?wu4N-~0f496703td ?&Oui<{8 ] H)ˌ+3n3I!\DmZ29e FN8Ⴔr a/qS.s dlLxŻ/wo__y"'tY<,ݶ-8%{3N[m0Fy⻻pwW޽xaz_\}>/&X*NX-,IH@̡i3=hqq&mo=%d_ LLγ-/G垌ԎuۇXA%ʞvi.>6V%qLJmTy#܌QGC 3C8IJI0t7º?tݯ̰0[L)HM ھkQ[&{telKh2ԵtUK98ˉ\E~&CS`iƧV JƁ>_~}33n5Wl7QdSaBȸ[3$Ss-612| SOpuKA]b}s(=6B0u5 }7td;o +rK#DGFOP}j׍:0INBh'98Nd~>ԝHܠ- ^@7ャgY#1dOc1=[.U +]*03W+~{CX+`y]J}/:JGj5[W(3y\^LNنvUffB2AHd}e0K>}a3 <@apo^o4un5X-JP'{2I +4X&0U(X2;Pj9{^"]2h2ީPZza5"W-tvcRb#bRpYkҙ -4u. +Yˊ5L4{Q@ʻeHu*}!vM%`T⑙Ïe m׏dj +2Te!5Yլ֑]:&QvSx:625qw=CbYem>ײ],1 E6+ + +mp+E:~kk:0O\}KfW䷃[+*3U}~vjۂxG]Yv|8gFyOu*/o2v6/M{5T\m.nFvy}h z]̮n- +-uvZX}f0^Rf%lH; +oVv…p7s(~uSTݻj_bWՈ]b}W_]o4\k%v{nK]h +iS]75 T$QuZW}jnr~Ɯ a8 +x|r}+ܟ͞_dU`*a-":gMr"u9RHVk}{xppvOvek2=WD9Ati185pzHn(;늕ˎNC=BƜҠ@8&R=M\0["` HK\1joݨs4mw57Z;+!,<",,m%[q]jwaw.EU#AG +MK1Z5=~jMaU/oŎvxZ3jƠŧwhtd7Wn +c>HNy#TF!z_^b0} 0'8*B$FSXFhJR *+r~G+\m@e/I$HCPM=?Gۮ^Nh>}y7W0O@mӫ,f$ 5rZ>>{*c*|1>]$PY9ac9BUh9(3^6d&0Ly2qy AئTs ܷ !c8̋53#2;{A5@E|8HoAq 4p(MSkc("[h +ZM5UޢJq?*vO}@裡IҸ +tw]^Ds>S\R0c7\YP&c_*uɩX+ p4`vF^v\g,e ]ɲ@qmd4VY#F||1,aNZAFן E' jNS GҏB\Nkg{DRyŷD>8 y8@5T7]<(NCQFUN:@>Q1#-sTwzEQ"\;f'6X&&*؃^vQ"gBxvIDƐ/NjCRA@EPvw7amr|`28|u^ϖi饽'1 ,5Vk8ZTm=Gmu;*%Of.V@Cpi(߾~"ՙU:ߜ"-|fR^Arf&z\mZ)]Ғ(HCE̡v=};v퇋zju2H7|]=8&)q<`,nS,u)/$fTƞGWlKxב˜Q+."$ʪ?]Sx|d9ְd +q]cDJ.HL&t"LUď'AU>3́iP,g9C5 bgq`Q}xH_{Fҟ]s +06oR{"_kz3RYaee"hze—>0J!T^ +6ʵءaTNo?DŽɀ/)$T z"ܽ(~Y+ 2Ⱥv0D^*p&ty,Gr>("cc Z+8iO̟`?\D߯,ф{e陲 hwXPHd蛊0Xx7# +b5<$C{ЇFm+,D>VKWIZBXPjNڂc(Op,ˣkKw^[s"ڱgFp]7TG<<7H=Q?>׍>^CzĻYOF +)rqi3TPvba U1."ׄPr|Nv6' rբ9^(< P A-Jh0c|}7E(K^ &S8E@M%y>M>cMp|1'mk-n |}"iG Kǭ?`cwί:@W&E#Jd \iQ{)T~$P-$,$\9N<2Cil\:o%-غ b +G+wds抜/r2ZGm9*e^rhZ g%I# qTA'60:<Г-k&v:/Uk˿_>:R~5XJpjC[|Y2}O:2'[iO +=B}Ԏ⹼ @@H %Rm5=Νڠ%=AZl({ 9 +B [G߁jMǾn_Xe]IRG\NES3b(qk.VAnaXZMPl +endstream endobj 4519 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4520 0 obj <> endobj 4521 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS33102V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4522 0 obj <> endobj 4523 0 obj <> endobj 4524 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 4525 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4526 0 obj <>stream +hެZIo\Wc`/1@, ȉ-"9> Ǣ!CbI[~zuf$ӈ!Pګëvss}^^ë7޾?_W^]ޚlWeW6q+ZyvpvJk#_^h4I]P&Fxl~gr FFy8ɾ5Ytw_JH۸˂5F ^q{nEAuY } H9hi>AZR +A `uį ҮX:Z~z{~LޔuMTJ޽,~ =U gEWb=eKAE+܇~% 4~GDMÀMQo6Cj X?|a~hc6R۟ꫭ42uhбvntu0_>yW/?{ua'v|ʔ.0q{DODKE!mn~YBŽaǰU& +ShTq W:B e;bpVGf%$iɘHpt ֨-kh%TØaj0&߬ [xWC6 qPjAwVEbL(67o fCJ0@4)7_7/ⷅ"O?,6Pof1B $f[d)fPmâH UγDHVቀP4 4A\e :k+W94v.&4 pJom?_)S:BבY74>]F8:!ď^DQ`ު5쫆iSS{^3c%4,$KP%UZx*1L 7?ť~&^Xl!|"Wvaӕ +NpNk>e;µDj #E g$>BA_'<}C`-I`BM8FUj"jhɁLӴ; E1g[l \;NEnWp63JA"5W pA#Aj*#/ծ9cf)J7cgV +GCu$/X>ɇNE =f*Y +nu9wJGMv̮Nh{ ]#<%HutC08{ːq(D ]=CnHq4C& }]i7i˵#FbQuTثVӽ1-F٪@Y%.޼ZI{О2oO"-a7YbQՋjKYkЧK~9]6y>3νzuLj;Q|䟹ʎ\CO1S:38Ox+vOzhaZne羢ajH8VL>T=HԸH'̖'eSL֎j/=hHt;f .62?;2f)>Nu^zV T: m=Rv\'Ėךlw6I J\䘖r}?o yEzӳ|rZa}yC >L{4 lFSs:g8/mnjjTk6cpgd,d$9z՞`I"v27N@|MA΍ӉK~䗌j S㱅.ba7vwZMip,jd_Yl̿Lw#Q E5|f.ʔ!7Win/rUDfgEJ,GMWN* M+6;R.AYR%%%Њ502 +0Tpx>߬Uҫm׮CQZٵyU&rq%y1!!۲B/B۪lzWVInh.oL}`RhYtwܴэV+[9ѯH^FIÜcEw'">T.\˗4h3UÙ2Yr>1{eZ~`J7VvL )s7jau0Rxp✜tNn&rS\sy(7 +}4z%.gjڇ+scǞJՏ?mo +VpyT0WH#Ћ n-cB{,?lfA#|Lm,kۅqz; G#0l>'䶎_hM'$_VWAe nsH *=t<?ЄG7A&",#Rpߞۧ_4;nmI*艑3y4G9 N.'`aD?}ΐ_E4fئvC/0&$DHu)oC" ⡷ qݪ4xDwYH ̡ܼlH`])z0IĆt>w{~(5K9_ GEOI )􀣑2̀lЂp~Pho:}'?q{a`L=}?R/CѠ"iw,( +W%Qs91"b(oO9^N,ECW=®H QyhZQ*`N +'AŦca3oebCoK]@;zcZ qűGasQnPTf}>͒zey41>KQp6q^q>$G:>"CK8H)c 1U] R=m !aFsh ϝ<4YiGtKB6\|5Ѓ )Y=K8OxLBDd[aUog`Ǣ +endstream endobj 4527 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4528 0 obj <> endobj 4529 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31095V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4530 0 obj <> endobj 4531 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31096V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4532 0 obj <> endobj 4533 0 obj <> endobj 4534 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 4535 0 obj <> endobj 4536 0 obj <> endobj 4537 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4538 0 obj <>stream +hެ;YoǙ8xZ]wU0`M [1֌,E:c~I:~qᆰ}|9aqϧ=;>_}}yߘݧ.^\] W28LbmR˓>\Lûqp5կ?ɧi +~9?s?4,0;:~`44v68Nw`FacȌr<֕RѧRtq0Lo~h;) Svq؈A39+Mh'%ZmhR*Ŷ@ +*S '>&L`)l]v41T;'<6|p9 +mˣ[nb4%!aAHS$H .Gägho"!S2 кmTf2j7dua,IlR `i0oXt/غ_a"ķS>a"o ha'{to,K*в6q"2rJc/>@[96vy~{nxwHIwe _< q:p$klGi$yة?ֹ/Ң05DS6IkzYYvR60R.EB5^ͪ;P frni1l>70nEh;-9 P 9#'$q8TN>ó3[y3XCQNAAeowR +< TBSpY+ⰸrn'8w,Ƒnnn'œHLLhIe!S je +>5i/p`)W$?֞#T͔ +y@S>8jQzi.%JK$ a!LjIOWs^Yfe1Ә㊌6mޜfȳB,MK?ӟ.n}e۰9o8ӑv0pǷ1o-K8 Lfl'8iL[ +{W0_}-?l߷ۥA%RJ@щ1:ui-*e"RR\D@  +}QQ{ŵ3,{$R(^$1fvM`B@[*:cάʫ F1BCgj;N;)͟Ā&q_Mj:uot*q"8i*U!X9'Q:NZ2@몃y%-m " +*5w,]CGA/i&Bl]3+my2$Y/p[v!k#A Nip5Nٷp-߲u`Xք~q$aZ0Ek&*D|xӕ +3-S|\"2vr#+ Rmcϫ4@M-Y YfS(<7Rj=&6m+>:D -蚹Zrl(Ӣk@.F(tDN m^7:UC|E" j+NՎm@~IIRWZTCǟXq%Δyd|>[&jRQV$Tq5Ⱥ}g,IpUPW;~Y +(1QxkNvW)rGIr krCl~D s*αniĨq+U5#oijG!oM}ׁʵk,ƽxo^]~0eWl~ +0>jJA)rN-f,m!{ڂ{ wpהT|NwG꾾yo0综R: Gg#ϯ_~i`1 c6_ 7G=ug8N<W@iis$I.^D伮J$H}(COܼ߂kAw aJ7Sbyхlo޽X|놛3yrޟ gA3rqk Vh*Є}?UI2Xȁ8!O 1܏4/_IJ +3kم)Xv[#oxX +ː2P4@*5OMFhLb!"[\2 OF{XFD H'k +.x@~ނ>0@k4!q@ D֮"Ck.YX 8ۀ6/r}?l\h^:]36WW`^E ]IkBY*ҡ< }Q}bYx}C]EXHC]o!<NQ^nZgK}5tqkWve=c.Iv`$+Q(;ϚV?4H݈OO24W(dgkiW9?}/}Kq\f v%+N*Y]ѼGO14(KpG7. +$a6+4%s1oNgT׵Y-0v8Wb(ȭİSpeKY5qaI|S)"d'-<8oņj5-};ɶzfI&#aev^,m +s;Yף67U9Se8u]FݻjsWֹ~Be, $_>R߽o{"iFkY9^0"5:[_W/aU姮quIA&]/rS}DXԛtVͥ 0X-6}gĤRY,lʴRLbV}\k}̾)rl*OZE +йMjr7& +}\Ԃ}*ݽncξٲrMH^Pɨw%SjʣP:_VZQsoؾSbFl:..w +L}uaL¨~BjXIՊELxF5bݶ$fjBHbS*d'9߇t96!n)pRNG@ȎkLs*+ͫ7L%ie敮 !:x\y f`@+)J | Һ1b_^y(pF(5x0-giw?4A:ȇ~ +b1ψ hOt>%5z2#=8ys1kd d0 ? U ox| ָl e:`rta,PԺ R[ p /M4*XϹpZebmf4q㑈*T|M^5)61aoP,"hbuDW*=8.*4$+bfjM)x,?ps` yp2o8~Ԇ.V#/. +endstream endobj 4539 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4540 0 obj <> endobj 4541 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31097V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4542 0 obj <> endobj 4543 0 obj <> endobj 4544 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 4545 0 obj <> endobj 4546 0 obj <> endobj 4547 0 obj <> endobj 4548 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4549 0 obj <>stream +hޔ;َ$q8#`j+*р eCwqZzjvIIotGFƕU5Kr:ϊ;"˗we8<7~˗w>ϿݛO7Owo2L2\Ɯecn~{i_?MSHon+4zusmM8TgDh|~tsNn\|vc?.X<[kw+_+@?hR5 =p9@l}Y҂. ijr$a{LQ moSZg5$=w"Ԥ?]iA ~%hۧ;8<>,2,<<msY^Q`aYd=3>v%7}; ?TOSa2q3|؛o>|xex[7id@+GY_>hlt5ӐN;3KF]6,BB3#M47(bDjzG<[ ^PR@IbWʯYq 3-T7%$&.6r8г9ADV$L"b;n!XaOYLxՌZ+Ynjq +৭׭eus_7k#>է%'N5o"cw,ּAse#IxȈMbIZ&x1δ"OJ;ᢿEh~xe6yVELa֎gvb\QYDA8 1XiHzi-h3{$mJi1=1m!Eec\Lg'tcJl\t 3hל&/,1O HLe!/?xk'x?\3|n^8sܚ\pK>߆M߆ϗm}ؤm4<ɵz>ԀW%_hP!j/<ԠpN8z(y(HKϏm4 ~p\0u1$^TP'anLxhQzN,LwSϋqjt5ZFt(B@駪kz!=WBTlҳ%>:lm.(_ĹL6~*.xݑyANe>Ä8)aD+2{iSib5“PQ.<ve#FҚnc<9OV^ؤ6fcCyja)L=#^ٟB7Ls]7ءTGa]yu}Tb ּ'w .0[l`#$L8+6v t/𖤯Af5 yJgeq`.jpw |k?bx_8maP k>ݞ5`C?k|֗_&F>lnld밓n"MVӇϭyNNfl)ӳG!{8R*^v$ZjȁXTlsSIMԠwkHhQ6PH5!ԃzȽ,ЧH9SY V|)хP=x"M5j&{il_^c"oi!+=m#"J8>.q\,L+Qi.ĩ,9xZ((wc K{{#5q21X.]wp99e ` *ȲX{Ʃj K mM5J'lIzH$_{ahxRCa4V8 +xf+pviK|F^-i6&:Ϻ4K;l3򠲽n:5nHQe{.鬂MRBM{j9ugM 'E(M'[󱫸[,|~BScgƋݹYG'w8#5Ycȗvl¬\yC-}{繒>*1;H}GY,LxΤdV>;w5Z8YN&H%@p,3<*a}3͓WލmFx~Wۡ|%â; 8E?9 S3]=Ɇ-h[##J\S-7F4+Gs6u¿.-5o쬥ujkܩ)6r,x?kfxOGM +篔)%r ŪWŭ\KljfR.mS*KslBXIIX*w7,lMHUPQe0c#*vo,zPxҗ zR(^h^$B.9".t[$5fțe&F<;O"vC,h{#7>^Re5P})DoEe&JYVjS9G*6\ @s75Y,Dt썚T/܊VYu%k"6 ʱwcVIPkŦTHF%uVd@p J²a:!- (̶ɟfXgƽt0׃p+=iՇ]/&ŒKiQ)dUU +TZSfjc,-=bOK]xf?J Dk!&`(DDW/JYx'(mģ$Z ^-UFlMCr JdZ1JjT:hd>~iwzma0C$NJ$p#D)~y74E{~i[Br+URGNHk:QzTiCQ!#aR{ֽN=JhSWD0bo2IfacWeƷy;j24CA aV'd%ceBBV)#wa<j ՊK#kZftCE&~0=#&wF3H*HY}):|jzZ1~H1HxOؽqcz#ugPOjHwE<ڤ^Kb%>;)\O(.n+eb~KѱE S8Fgj0ϛFuۿ= ʑ5#ݛzaro +faN[&EwkW ئtQc4O@K YǴ0v;>~l4SWv[pDj$4glq5NLI:1{8̷mwZ9ojcT~Dz݉Ѣ߸d BZ}_SȊnUZ=HϣcЀ4o*aRje/t/'PIxȂ:{%}mBd6;(P<Q 6 HbDX5o 5H/DVq(e߲T2Qi>sAighSsPO5sf%[T}ih*vh֒ln'@biM1=fW}ep]>7K⟵Cӌa1_{'4~fOW]h7_ƾ/v?!u埿y\yr Ч@Rr{CUmn9QOw~,w +endstream endobj 4550 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4551 0 obj <> endobj 4552 0 obj <> endobj 4553 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 4554 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4555 0 obj <>stream +h[[o~_яNy'A@\I$>$yGYr$YO߯H6{ns`X&WlwWCw||tŋ'Ύ8S݋'糣sݩr‡^.ۛ8l^a~9V'=y."RYD",4`e3iN EaU]UںHC#zD=X8I*N9 4ePWǰM]L}Px\t8v;zv;1#`dd輎t7hUizsﳣVװ7ۻewG[Cb|w@(t:1 y[ЉzlǺspp[ʹܞk[,l'в~!-9zpk;D 7VN j^hClmP6;UOP;R}{<2<L߾׎֭{Ob2CdIxеѽשvT1tk!G\׈Sr0'}\iLF `tn úN*$ D8 7[!4Xj1\P)tq=dB?% U6$_SֈTYe pf+>A`15,b^z# Rfh6p=Fi4lc*R3-E"ux5Y՝Ӻu*@-mr> Y93qc(%(J`_}Y]Y0UQK6's9(e ~<&$r*(ȅ Ў}I/"O] F#2++>֕ikQ%Y~BnkEm.{K15SW,E/$$7y@f(8/0MLcً%mՕ 0RL:l;Š/ lLGK` +L0YgȻ>|qjJ\*4#-W`iU$HEɷe]hzYP3: G@%7&ɸ T.NvJJ02Qc,N؈ٝLbMޡ5$Z̘MaHrĬ5=_gg.ƻ) hGʘ1.ƌA$دTC 5kl<`epRl͈*R +%LKl`\cQ!a1n@&xV.4X4 gȻFi9YMu5 + .ܯ#ͲŚ|DzIľ+#kAö$-n+t HYژ/4YnHf2]VjuI\ru|#o_楊dQh듲yR$J S(¢ʹYEMVpNjM[pfѐ}mXkܼ]],iE1](ǂD޼C#qTTkaĬI72hAlJI )i1e\75BH)|x(eWhHEW^ 4 htm֔vmɆ9J3ޕnC.v<\-LMXZU+42fkBks,9McmQ$Gi?6qY5򯖷F.w<(veh~FMRM̟ O2nY*nc4k}R/dծ:z}7NјMkg%e&b}YF=jY;BBjKq,ߍaBKyaD-""1]v>~9aMWt+N*a;y>5Xd?̧SΆ}qt`FKglG;t}<,z9;<}2vLgouwu}Gug^HG)e#}eq;:NBvK-tX<^_򩅆'{oh570ʓBAc+K +N5eVxʵ,g :;y\庐*mf'e19~\#kFqt:4q*cQevVI#:zO'"`eHӕ }GX?rfƾ=_`r3|M:+%C0i ;B$#ɸo:Y ?]fpt巟mz ќ.Oغ Ae%҉Ψ+G>@7QnՍ{YEAnx5q*}ڇT !GLea-?k}s1V +&VelQwUhztYh>~ctC8_.tm2XK2Tyt:k3/:"S-dgˢؖM|Hi0N DXG۩5O7dv[}B~?"!X= lıt|:1<ի%.V^?ooѷMH އi`)-q8`uf;!B;9 BSAhoA[rԀ n@;)ghhE k[Q>,™~ +Zeh[|!?!]9C4&>;q +|S)'Ggx*zW}Y +΀ɀa-r`׻5; L=S{Rك ֏LƃI*z_v1H`Am5@Lח?7{DJ9}9D1juN'#f*/똏axLNWXX Ȣxۙ,]Z]ofGi> cOϟrF <7n7--yR^*GWLI>tVWJ!qw +83IN,X<İg&[!dHX$EHib " ,#p(t}NweNsY#a9yV eSe-gE ++",?$tɢkXCV0km]![v򊤵n/_5 fi͈14nI0x/ 4{|-k0ct?@;E;ƻWjtiȞ|kws0d:BS0kF/PeS̶C@Kܱ*[#7$纀n:9-2iMvm^[Gߪ?³Ǵl 6[PO[)>xWT!y=` N*NOokuFi}:;nqwy..{v:xƇY<'v.B@ܿc g, yg>}}qHr>+vYJdR;?ݪPCdelJS 醼$J3)`4$/quɗw׋>J0V H8{{z=]lAoJqcz*zS|@[ Mp)f@56keњZkJv6HlT's6k-Vk8`َT +D3M^!GuNt>+حmi̢z-m0a쵷,D~Qb3l$d)>ޣ`Ÿs[7jˀ}L܄c 2?m$-mVLGzۓj5ٰ'jW=MOY5X>6'0xC3棉g2,n}B e7N7qGpv>k]hÂ,TeՑݾyhBusl& ?1#(dR+Jr} o[nZ^C58';b 4g#a=-J~ҵs"*LO?[pT{ŀSZەָ8ÎT*x ̚i_1prƇPDb L +HNvr +K&/,9RkzVR(zNj>j F]$Z9!F,٧d҄SD1F4D]6ȍwPtIMk )%4A0ء@f[hA 3Λݫn$KR҂o^Ef޶Ŝ7@Hf(w1a{U+1rB@ڌg +i㗖&)Rue&rlf *iIKw~? +M DڨW 8;!:K}{"'Ox/J'vFdUۼڞE}!ND'_0g'_>Acݦ8 ? G$o8>kYZӃv,-B +endstream endobj 4556 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4557 0 obj <> endobj 4558 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv50979V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4559 0 obj <> endobj 4560 0 obj <> endobj 4561 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 4562 0 obj <> endobj 4563 0 obj <> endobj 4564 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4565 0 obj <>stream +hޜ[YǑ~_Q݆EZ5,nvSc g䙑O8i 򎌈"2y:wxqY}xsߚͻۻ;3r yq䆻/7f7N Jwu?M. 3/0Z5 K5a吹lҲ3)3f3z8Ze T!Vsdqg?TP.~ {&I]vv!B3t  +w"c +#Tp_,M!p0 O; kOGࠃ= @8aѺ094qn# \FNW>` 0h_(oQHBf5yL~ 60ˋ~x::~|o&T¬4ǵy讌GPA2հ6C?on|~ixo߿; 1"/'M!1f!aN_Nc~2x0o5pIX +(WÿB_{_%-Z1zY=Eѡs$ch$U :PImIJŪT(C ʅV8?P(˚t@W.]S^Q,[\$se$;6vJLčPSh UG7srPe,r`IZb Z=};b[Srig`(XW֤eLR7UGLVe&G80JQ+1LJ `xe@g%sBA2݁ u]a3l elYZ#C[FxBXs;};B,t+$Tȱ\3)m4@OA`NnetY BEy\烾(c$-d2ϋLE[h-empcz#hٷCQhFX}pU*4&)"z0I=BQo\+4WMүHZI뾎G,Cq[ݎEzx/(;=im8TKJc;vQM[3\S#ڬ48H^EmK !a,#?9 B|*:W-NE +H/NUpj-u}8ċɷJ:A"wՁDٖ]hՀXi9ۺ$ÄKGquLY6v @A?W^Kc`Ŵ~-YDrOȘn$ sZS8jQe l:Eld+r9KxIȰqtQl0 Uo5,=]V$C81,pC $gScILoդ&Aj g*I-jT2O)ޯT5smٿ*TOޗ%Ρb( +j& 0$NK]1^ 31F +SHHQOC8=8`f.zI_}7}f +V+P#Frq9Zm"}e+10>fx7aOjG`;ÐTJY]P'a^J IFM.M? &Ɋ\ S"HᔚΊQq<(3ts*Az؄+8m#Jm9ԉ+z I@U{X&&%(ʍApѬ,HtYWQFJB~ +1'|NJC5b9\.Y*9#~KeMB>.PnfOGiZ-4JU+=SU"V e,j*9g=$hZ ;}nMgdk0 +M|G۲Ȓ:_ C:nRR8R6o_s{DJ8\iuG(=drDS6'n>G"1cqk;SY=E:팹(z%WM!k$y֎JM6*Kh$yZi5,~K6 eި&85xìX9<]8HCcpbrZl1šW)S6bkD +o{8˔9WO6)J!jzEsRU5kc[͕6Ҩjٚєu$BBhrA3MJT*&ޗh2SNXh*B2Id܍dClӢtR<.WUI} 8%^c*_-?}|&~W7ˮ"?mшl^۝x +^#>oF[-y3?r?Ɍ/l]؜}\fi*p{aA:YenQs/߯Y }ԥ^iRҮm+ yw2~j&~!++"_bqX5|y<߿~~f.zR)'<<*{x|ڊϡQq /O_-wnFljX?^>uԎ_^Tuo|B.<ûoޚDrO8-DNHf^t@ +AO(A

P+?'NӦ:zM9L,M*8t Qg*,NB\(l.{0x%Uzj.i;!&"c%E$tc5m *m+T{:{JYSQ%`&BH4WTgTDNxotq}G{| $NW-v}V<xt# ␫ &SxsDukrZn, e!s3"¶UI*:cU~zI&N3 dIJxBQ3] v 0F6ex N j`Drb}xl>%Y'=̵I-[7''*ii:ƈ3֮ZT2[5[Qԯ>L7 oioj":K %5_cekۦt{a$_m&L_ qk6TzhR rH0DIB@.\uW~`*>+榋Dy br'@GoXK׊Qm"Ӝ]K<|}Bp.[Mw5a\^-s8M:aOw1\e)ŗF}^_u׎Y6REߤeM(Yv5.ٍ>s| ~XJD~CKV:_!kAe^p%mY.DI#f2?7t5߼-søvE$PO(^ +;G9=0P8JoP&@7#ɉCcpG3@CDla?> qT \啿 48wpmk VssXn\c[`TP[s,Y\9l}'O>aӪ;MEJ~GM"d,(| x͂Jb>_Nv& Wl@ά_ a芧#NQ +Z;6P+la&boVvwWa߾WY=3;7df`AkW4E~Mt}C *$|h,BT_ٿ?Lu?{u.i +endstream endobj 4566 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4567 0 obj <> endobj 4568 0 obj <> endobj 4569 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 4570 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4571 0 obj <>stream +hޤY[s~_GHŲZwU +9ur +L81>uK3]ccgZfo`ϟpNH}xZVVZ_]2*%]6N.F}XhcZ{7'cB˵־cC{tx:ݼ}v]IfܳD-$Z7\^8Z-  '<(+m])EiJt~@WQSQOSN1"n4dͰR^Ё[ .Gm(` \%.!)<0G:yf/`固 _*W4:`C2*0Ld1a[ +Cj Z_Hlb+:o m5==]\Ʉ'W&!&Z𕖌LG'4> k56x%ty1-J#3kKQhKN=`2pHj!w60n#0SX$fh8X_ epULc[k zz; +F{Al05@F T]#}ae#n!|pUi?BC,`_;]驐F$vtP}źEm!PYekN$6D|[O;==JdJ(VjÈ2W,A$&ҐIrX˄x]d1.?VKifiT+#ZFo?z!9|kN犢Bʇ(TGؤPxa7.< +Nc'|kZpLLCÖ;9<ڿoS5w\~[.Jad3 c ("G]1' a*ɸ| r.˴v(C%iGKbuC51٫\`6sA,id4u-6-rvt,jM5]: (GzSp(WsqP H3W--GΊ..mQZ5DQMa} de:ިv7!vywĕʈAh )ʘ4{0wy 7wdHʕݜY<#n_[>k S0! +C6̸w{JR|.[^3R06I ]iI׾v{~wm\͖$r3HTsC(~}HrE=^sֲ{W~w;. Żzp;! khbj\{"f~ɇ@<:ǽ?M#^wCpFgxw|cZY?&;m|Sk.% *%Bgɾ^/ Ex+,!c's=PK}..HsǔzD`q7;9'N=3"q:P "҄ܛzx6|k]{U7?.Maft&3 0lд +endstream endobj 4572 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4573 0 obj <> endobj 4574 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31098V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4575 0 obj <> endobj 4576 0 obj <> endobj 4577 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 4578 0 obj <> endobj 4579 0 obj <> endobj 4580 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4581 0 obj <>stream +hެZYo~_1v0 DTȉ$($[cKE>ꪯj_կ?ޜmwow'O/Vgӫ'W+=v'y2!!LY);]Yj;+tu@ՋsǟB7qANRF8}.mv[sagG6y_ muͭ!z;PHmm*T`%;7Bb!u51c!9589Pi.5enLŇ0>YeY00}8`"'~5&>,ӝ--ͬفmD*iB y:`p *KODjmùh;_א5BYJ&٥ rcRv{[h7FnmyW=7 $vBt9@fL@661lUngJCsx@+l ;}>`ԧ糆D-O zG`}58~3 46)^^tU P ; +ni$QO8<\wyl{n2sֲ/+5}#hau .Vj=l(*BDWO*zWd+9/H• qal$,N -_2G vñ>֠GҵԶx_F=b+u09<ܱYl@S.Cᨁ9dG \Y4MUXY*"HjBBUN~aP/UUtZ Bh1hpNZ*(&sѺ0 f٧ÛeJ +oP :T\tes8,"ԳDE )Wʄ"dih-՛pJ"5Mλijlp$tFхɱ(1/.kgjQ*FVH; lrw[+CO`?b\3Xlj%0D쀆Z@ۅ6=8Qb˯/T kl®Hk +0xp==5A؉˿p(dW bDZx5y̮m=!E) l+g9\g MR\7j}ن݆ĿBRķ#UZPfC]KՉϞN%JOCp ]fJPHmdrdLo>~޽u>~Kzכ٬9w^L~{ד73/ڲȜ9eӃT^Z4bV5{dO5gYdۇA%TcE_~!|l= u((i눹)ay֤φ +xRbo%L;J}7vš>ʲ#q^WXy.莫E͡١wz7`6u0Bw1KhQB5\ vcmM@Z302'@奆G['e=N!k:-ĐhokwjԀ?z*E,߀Ѹ`tˢEjA%Yv0֦ z4DЀSj#\ʛ2y8-%1ni: l"=XtT߲ ʍ[jCZ#Ik#[G١{9 TjgVHH-EPL/P%ջd&(Xyp.Ja-i@tOw.ْjP#xjtS_ݕχ|02 >T4fYT[\,SU(s:>2攟wX%ܯf@sP! +5,J:`In%ƹBHF/o|u5{^M-YiV]I +E>БgxЂpOHBT3RW"Uyx_9rP*ymA~Qht; rv!#V⸮Υ^vFpvGI~@ > `-9u*hjbI~#Ϋ5 +]l/5Ԑ o*%J 3⼎l1}WĎ 9arE$¼yvA2zsZBu.Yc&fv J$|OuD]=^@Eg CZ,|U6W_!GOPLVoUKW*#=wc/Z6+K HE1QiXVIYyEzEץ +V_kWk3Ok\J均p=2+x<_0~˽H>:sk>PcGd14GF /λt 0!h>eF?xeMۂf:㢌{Y֫V~9pѹ~-"poxi ͧ,{8bǷ GRA5)Dxw-5 ߚ6XN#>l[!&@9~@>ޗ}Iz7ȫH? +᱗`X-q3K*ڇ6ӀFUy=V);Xw]@\ig +d,laGWwaW,R"j*[Fyn2ц }wj;5=Bfm_?7T)Z*H/5Kytf8\T\%N +כRvqt} ҍS2@a+}=<2Sutu9HAAOom@tb8=(Ջ&Z_{p)Փ0\;':T^4]ax2粭m6mQݝ|稃kc.sضk=#¥ .B zF2OٔPHGu@ Nu\*Y{oo C/ξ>l~C N.5Ԝ7B FW5H1T}L ٬/TcFJh҉PhfzԠ*%J:a|'"hRf̗ ]r3qNi<2ҕ3EO X7q<4c3]. #=Ƀ34pgς%p?,obt3/80ESl־jqI&sN+ȶ2P?)'hxg`rڒ/)?WM'|O4EVy?v'm?I='@ (5Lx7vRdB_H >rKWtc"i,B42'l].mǬބ rY30ی䀼)BlRj\kMK_N[Ŋ-NI`9XD `]Yߋӛ{ Ks?( &q J@'lD|~ѭsry͟@jHEHyL0(!%ɺ1ű' h+, Zra::CC +endstream endobj 4582 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4583 0 obj <> endobj 4584 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS34106V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4585 0 obj <> endobj 4586 0 obj <> endobj 4587 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 4588 0 obj <> endobj 4589 0 obj <> endobj 4590 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4591 0 obj <>stream +h޴;]+q&@הU@6yi9۷O?")pvs0<]RIIQ>y?~ۻ?ywwW/_\~xݝtxkG>O9%Lwo釫yYtw绿]}V\X% oCɷw Ǧ֎2xߥؿ<t9vy=aϯ%+|W_]rWهu]9uӇEYYH&f\9Lq@]r5'τXt\m+AY[ՑšbęZA:uq6|riv }׷wo_% %GfЋ"Ӧt5IʹO;nkxNO ?^zӧo}cFG"G{aT2 i@@m?an^CVNG\g3P%{=.T\1 Kn0Be^c6puqX{]ss[g2 s7J=Нgo?gdY*X}&Q0{~sᨁ4 0 z'xt |'!G~h4,ݰ~^4j0iq5h 5:wНC-Nw4H$heGRLk\lފ(S!`Ob& Ϡ)v<$Mqhфˑݮ-;; +ھͭfd, ~81T}tIY ]} R\2/Mo3E u7d'y-` &`8]] 'dfZH[JSk{u؎~668aTy*k^Z~aumz$GQB +̯@> -Nh|l% ߾}Ό;0Dhv܉kLVbLdMG#=ٔ{fJV/+ /qmWX{Ѽn@_^>UPq>5 O> +)9-T{'u@;`ӐZڸ'G(k +~w`Q.k"9pt܎t= yOb>)_*&3O kތv~R, "qp"5k֗.݆'@pd<8|H;#`@!pq`Y۵8'F8`Lҗ2Q*uK EkyTq%]v,D],}τn[F?ڥ̅tdbs{3(֚i|:9%}PߣnZ1f +懿N39Ynv{\QPĹ%G(w 7&r̂\;hPixH`@i<~WA1> o:D>!Fr[$ԑ4B;cÝdza 9y{ orC_0tFʡMz7GaNdƷNzI qV[@9Kj3(5#JZ~rUSH AE=h"Cݬ!A=m}h1:"k}i8|SKy+Bno摼βhRwoXnz4%-WZHFSXs5g9Uz0nud9(c€G^$/f=`'{ט%N^ ɒ92Y`7Xl$So*v[Rp{c|Q#7y:dMnh*6F(\ ׋ayհܸk*LiD[琌*㹶"C;%NeICp *՜{GQK߫ M䖌`|<-8xlCO)2pd-{{oS=N"1'ya`QK1+ZxĀYZ@Ґg;>h `a4&wdiҬaʠ by` +Jeݟ)=tqËYG; +t3dC;";nx]_,dg͎rtH5_,,@^5]~4#dImFr~r63 tl "r)ƪcFs(lx~ 7I1^zpZ Y|} +|$$ҡ#iƉ}FBK]Z捚LFiṠQlkL6+~i^O\y~0T^ +d8e(@Fu.̦ٚ9Y6(K2tLoJ}~c4"1ڼŢj, Àlv g=$բ\f ʨe3Z( O]3܎۠@r}Qg.@TY 2>hLVeo㮹V79!D@1륰 +{ 1WIE @ל÷:@vjLb\(\aU/Uϖ:Kp.~01njsv/5=v#;OU'-7]4_yȃZeg_L6PLRr 2hwҹچ"yPةg(gYQ/63 ?Q[ohbl=yTyؾ맿<H ~-0\5D%'鎺Ux i,ɩJ.OO}+Z-f}5d,nɎj2ifNO}l.OPeb_AYyKEI))y$])ja}K6гvʭ_Y$7]r +izFI9w}cmr$J╓\ZP—0}{q |ùt*nx˪>o_cTMEH}RL^fjʻIQU>c6d54+~(TcXZڳ;i:쳩vŇ ]?y[ԐM#>\ٜM4RM2kz)yBSl*|z7M8ͥM?j+3ko{eQYZwrFUFݫ!1Df3l]lp\}\d"z=қ[eQNX|w1ɦh8غLǑ̀/5-8DZ:ʲLZ":$zAڞY|wշ^v}ы֔]K"T*P.^hmV̭< #4ҷY=o;x񾯯t3ğ_+)t>gSb3ByVD7:^@ U/oV +ńޟl2aIl,iL-o%jo5/j&3<5lqq{ԳS@"M r嫡IPI{K٥597Ij[Kz9w&^4@&nQ¯Ktxmǹ $#!Al |畟8zCOVst +96[[4lbLf./i$\4-?"|$ +KڙbImqU j/lՍ9,K k)AS 5WqHH+!2e:ax^+Z"כy,TACih`S3)3-l hB8vEMèS[ˀm\N}&34h`C_,)0X`lP۪n:٫c|&>xGW:] -/݉Xw)PRU8-qJOouɊ"٦Bm}Z/8g˃ !8+]1w(@)@oA=c qan9Ȗ[UIZܾ1?j w 4F&K +UyளT 0cLQ(zQW?>~P/˵h (b͌n.PurSyN9K؈+ӷN~ez3^yT]0ǙcHק^"gf~ϥ^w׎ܺKK|,,IaY:O}Fec'"a`8 +7`o_?<˅OC+4;dNwW?^;(@,< ONW&EZ!vz  y\<Ja@ǿ=4~-1L_|qsh|@ce?npzӋO?y{q8|u7(i1M¢>.߾ +-?M3 yj+0{^ֺZ^w_a_9пMavp^oӟo_量W-s0]:W`ի<'2KOef8R[jsaO7*=i0W +R4SɏtGStĺw`Dnxu9y6?IÁ:ܬo)˄/"^^]hD2ƺnxkןn@8w+29F{8l#=4BcB&Q8$TӔvyRw 39#,gP +ˣ{` #tC0v +dy(`Έ,;)_9_z=enn 02`>A3~lW]rUj~ hq K` /'"l=?s("L8ΠWjX|%VP̤g,Ph |AEyAfth0*`@0XG 80;zyw?t;C/|wbpvڒ뒋jrb0$R:L|1|y2{r}^MǛ +hxa|?-5Z\?ua] ȟ\"%V/MբX7u{iB@ĺ7t{ +endstream endobj 4592 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4593 0 obj <> endobj 4594 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS34107V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4595 0 obj <> endobj 4596 0 obj <> endobj 4597 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 4598 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4599 0 obj <>stream +h[]s}篘G9Uw4R[eV:N"VuM9RCrm `p?H˛ݍ@^z_>\߾n_|^g/.dgeZL69Ʃ,.ޝ-gyY.v(]| Ǥ&&+(ec0sa˸5ekUV +v,w';$D8gjO\ITRJ(2 8)צZp#*!W!h,T_ R r]gXbٺR4TJޞU{<{sН,{}+^ rE xK 4~G?2g? M&dϿfa^O'j9v=T4{XB^MZk\`;|zy{s{wz7a/㴻x#B~X<mRX* iڽwg̡I6tSNNv6!ƺك\\BK6ʴC<6;/JwԄ5YNs 1j,/Qtɦa}5ՠM^kXNXƘ9Yٚ(ekj$+Xwn;Gd,[1oERx^ F +\ӌnl<>x"-= +90Qsy3,! . bܢHE4":Ԁy(P 7e.{2B))4 +Ӿ,5 yԋhamٯesWȚ8Ŭ: MlmԒ>ͦ$:B/QX'4]F9:!GX̉^)T`>jj)XR?Ƌckr'%UZX*1t 7^~x˿0r˰z["(hjfgTF8Dzo);'em+c)ڵsJ1{/p-Z[cQNb9˗ S|K +X +~m/bPET|0Ƀ.0Pvqvk#>Bk.üq)/ҕ_pͿW*b1hgtZ:{:|>rI CwPcN3v;KE5 B&- URxFUv $P~!ӓ!2^eN s,4aF{xAB[XIDPQ$ɇ.f{XK\D`m@(?ؔRǗ TI B})hܒE5R'J^c Y\WG W8aDXg[*>T2M^ xV`;cWe.؏Di] uph?‰Y'GJF%.+lq˦jqɡ1TcdUȆ}+K|aKzHRGՔN6Ӫ:!o.yh 8Uw2a!rW%uEþuUwjodFMY,8ҫ-fodgЧj=͖魖ݪ-e7Lٷ2i{- @0i 3+}N;ExU`+Sj+µh66DݾFuyLk;sҁo)[gVzOQn:Tl j{ ӭXҕ@}]6*oeq2PFV8i<sZeHi;Ʌ"jkn>$ͷ;8FxqޮQ"zpl~|81AJxb5Av<|p ƭZG`%DM9o} h.+ySUZa\3zʣTk:lki3BpjM+@ +j9ը&l&5$dyx|>׊uG>Ćv0XHCi0Ѽ'!NhGMq8^OLjsJx6cZ9瀳ď-< Gbh[a]bWZ2jjݛxXeǞIV])I/ZuH_s&alm?`Eu##8' y~eoz ';Ek,?rm-s,5^n~}앴`',k L,{xwǰn}O4\j@CV`xo& 0@( Д4/dA鄅, ^8@i7Tf7^ٖ!O8ї5bMWxk21B_F3吆/_OF~Gxkӟ'7}=}GG,'N%SR$:@n=Yf5g/?p?}72>5n?\Uue$x&%MCKpO)Y9{[n9&+ޖr ꆋmдRHX~av3nix n#b8%yEU*"/a% XJzoodTs@XA .Sd`bhDX12^?{u}5eЌ%5celEDb$3bD֞_L 5IFl;$T S#~3v ikoSOzOj!((@`|Jp1`Ōv/nf/yv$DXaiAyd+ I1 )5bwFJj!|ǒddA@BKEJYD )<>5IngJK؝LªE* {aG9^zroc WzY;ӉyEԍ0*bzjEM>9VM}70}QQ,SO*$iy.0?cH]Ÿͤ}No]Ţa< A>z#wDDZgFLr_^FnXB@@L[g ê'Kabl =dNFd!'40+mf<'EǢ +N#8ypm4(#qQ@d%r`~@3>M\-mhiZ*Mύ1/FdF҅%C>Iu!QT*#㩱,/`,G茅,P&tɻb +) <3 jlI`a",V8n[gVZ X{6돞sT CX@m-7kǎL} bSKG]jЛWkxt`:LZ0%5 -uiMxVOfm /-Pr~swB=!3`W_[!/^jŦmr` f.<+g#+cFq>+<1E8wW;tT/#{VzMڨE"{Qpc_hڕOk7:W.j3B!Y?^!|{|9<Yf YʿM  |N;IĖ$-ͅJSϟU 2WEk%x +|:N±EȱL ]$.~ZM %z"s6L0r*F׷o~R{"{ǫ +5e;-uD ߺ΄%mB薧}l,c$/8p\sjz6 o$ +eHǐRˢcW? '? +endstream endobj 4600 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4601 0 obj <> endobj 4602 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv42028V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4603 0 obj <> endobj 4604 0 obj <> endobj 4605 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 4606 0 obj <> endobj 4607 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4608 0 obj <>stream +h޼;n[ɑ,[}, -lA@є,%<|'orHɞM`0b_^ug◿{w}{n|qWfzqŅtq(IԈI8MzzPZbϋy}:v0Х~<pm྿Ic~Lg/ 0iB ldE޿fI(f(Ai-=,^n@2>_8<_{}v1N@p7>8}F`L! i *?o;;[eB:*.A+ ʴYvVhi;4a#1~ 0#t&U|n}a8GzkcT58:ը`"pS ۪d4S&څ.VіXCQmke74:B mmM~O%L(;ۃ0cUE}n32.4&g yb)P( Rz7t42u  xS¶IW96@wH^ކN#Goy6rM?/) Bבh'"54]nMä'ho"!S2zk8 S=P7FE 5O2ʉJ[T20 6] g$f$q'47!a ZŞ']{!VD lOܵxUY rJc/p}Ry@{96y0w?# n݅#HЌꪼ#n%pQ MDG {m=5yn-\ >F%/'f_?0n 1gA lװڙJ^~ "W£zrSDIl0`d*k!};&'y%D WuK#1N"Jx@\#] +JSe3E ) F!b"$N{ |܂TZ,(D\.. 5B8{-ƾ/lK=.k/[6BcaPLt!bp]C+̺7-buuj6Rgڂx$XHx+Hh6n9t`b3FWfg:ڎkz bFıU[2ƻ^]ZC5$;j8$Qf3r:#$ר3/mb[,6.Uдq:`~hx##A&Va> 6zfER0tpQoX٥:LqQA][g iԴVa3R˞$q#bX͡r%Tj4#!*IW-A ʼnGl0!__xK q0 _SسR kz#:C|@vOvWc~7҆Y~aVaOO4[#!EUv5 +l@me@wۧ3\HZ6njXq5c{ wNq 7h^lE#+)spH&\|5ƟՀpHfQ#K7PѧfŌmӏ e_ ˳JBQ1c#c\gbrdt3<($RMMS(5X.'g̚ (i#y[Bv&{K~L a\Y PmS22̓ZGR0b k4uj5vx4-JϛD5!hem..39x$ƯuumZ1"&2'p`$A=@,Y#^Ȣ5os񔇔~W{Bd*DO~HĆſa" +0?W2@_b ~_$=)]: ak@HH|ux\R; jcT q} +wDȫ cc!, SzA!P/c8"M ރg,,_~yBovuBwXzX}}8O ^/6#J/#FoŸϿ|γJfeز‚_n\۞@㪻o]>N?5݇,` N0A)>N5d\)()zg!؄q/ 4_( Mz VD6 +endstream endobj 4609 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4610 0 obj <> endobj 4611 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS33105V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4612 0 obj <> endobj 4613 0 obj <> endobj 4614 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 4615 0 obj <> endobj 4616 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4617 0 obj <>stream +h{ۮIv;5: lK& 53^k̬ iL4'232bǾ}??~۷߽ۇw}oo/=\~7w߇Kf,zj-%]f,!_޿}?.K*b??[_Ch-]ZZV~(f[pӂsGKANḻx-WAF=_*E?"A]4E/ /Z[΢}7%^ ri]-u'ۂokozkA=nxpŦkVo'0]y7vӌ`%v;K(w/廿u㸀mfo%z:}hcRVGmww'׿/mYs !/mu՗./?\r+kPX.|8N[(טnٖu(ߖzy-j{Fn_qM81m9f>F跚}53}fۻpk-q _ }(N`VA[f`} }7mL·o%k8n&N2hWw4F\9Yߋ?4qqnٰC ّ[-e2ٯ/ ٨ZۍV[8,&+n0Vv$͡=^M{çd|'|4M㨻Ut76x_*I/]>/(_&_!rkB뭵~/9k n'kxMHmmNhO^-Fom#1.5%eYޅV +*7[ +:@a)qnu?*_qo'?({9Fl՟M%. +$mo-P$aTp7n]z S!6 1Lnxuhڴfy$!sj.iPaH レ(YsM a1iB;';^ =i %eU|C /`;@UgY;g.}{ΉD]-psa{-v +$oZ?ry?+~$~ +y~JrQ~2x9옻HL.b4F2=pf #D#bE3O8P#[}ŵ]#֌VLf~Iߙs'v?V=2|k=p a +}u#leIrڨQ)c9bNv%mn7@^Kݞt{J0 ؜~j|t+>0w{i{S&?m=X+c9[nC.TMMO-Ck差q%Cz96X.\ҠYnZkmf$:xcW|gIl\`-qz%VÞΚO:kǞ het1|XXFin]C*m±[ɟgWG-|Q K7 pS!w(jqxzf;# .vH>xxΏt/ý{8稿+\0*l'1"̀MH #>3m 76nd? +nRCWxm8FHaZ%~S>+l; sm|iT e&1} M]Π*M;fR;GAam {<yZփ; ޙk n"?n`GǾq4{ЧWȏWDD *n 0L9>ZvFZQ+O +rc|/ރhLCW@l8MA|v;;)c~i 9q'ڮ,VTofTcnȢNlq˦흐 >')t&#ƴ~ys-IXp@n^l#xe7}{Tn NpT0dZrc n]aC\h2f_F|Hz |"Kcx-l9GåelgVs{ 4lۊ[]ec +;z1}9G$\sRX}!`G$g3vYD~gQ.gPcI9H0;b˗-:;?g0c]L}'X~?c~۔*-yYc0"U0l">VXURƧY-`߶kco<||7##L)aδ n=R?xU˞[nSʀoEIjҔi5K(H;Yk 0Q$.F[ +\_嗤 #{ӓmC#.`,^6Hܪ9x&񑺮d;z[KORo~3, Ilf$kD7شƚҜ0 z yS$ckOe8S.mM|Tfo5VIcr nɎyڸ2ɹCq6t\ gEߟ!DC51'kϷT>#$o,gsi +Q6&udkLeS=_ybnvB6Kӽ*ԼPv ٶ*I5H\~e/::+skg ݓ>4,|A ܸ'ȫֲ띎鸡grxx6Rʀ`fT-ͻf;:Rn尧{2Cf{L)Yp?˫GͳP~ٰcҁc@91g|0|\Ưa^'$Sh&XnpnGPj vMh,R.IWRʗ sZ؁pkJVN3m<^,' Ld5Cͨ4&ՐYqh3F- K}0B[1$aF[,ٯ.82tQv+t;TkX iGw)(JIOF/2kWBśRLjt^0p៴,J–8kӞ̀"JG7a_DZ瀌IHau_)Mwj0W\C 1ZHbu X&{'OΦl 4\' N-sujGنAlG3h/5ZUV܃;M5/zɴyK"C`44;W[,t +mœkeb;h?H;Rv$eX8:i1w#1\u6xh#4Fܰ'ni_(DΜuJ)Q_CjwƅLMFhI1k3 V\Кir >.ˑ5$Z +Y3y2$Ϛf$^'I(;r"BԚZ0R7L dc I6 +n@;ةvJ+;( Xmư]cǿ -^Zxi }#/oz$`ʧLvX?2z/'סRsE6HDDE 놷@Hҩ@Dݩqc`|/@"9"uqr◾Y j4lJ*Hkƨ$+ +T.愐nDi&~tȩψcd1&Q * 04\89N|@p}eUVrˁ9L&%Lచ/dL>Wh>z6_=UvR/%rp `nW-Nٻ*Ы}N=[u%lvb;S4+KJ5z؁Fm1QaY +&Y$8~.8VW /jm QU(8x[AB*zCi +ВiNf*qG܂Fd,.Ջ +PƵԨ +~ӡLBdz^e+QW;-T@ JoxxL6yynubG B |HT]@0}@UTrLh%8 df⪢3/dCFmN&뺱.Okl,ZmG90F|&<,mbJ-ʜ}*`~T%qeQ}f>$=,~_!Ɉf?|R1"H@OtB"}5dUo"Q1ȔSqP,O"uG`(t;~ cB#@nW, n?F5ɼxdY4N4!A!vn?h'ťPrLU_J3yt,6UJ+Y&X=ve>nQۏb@ietk*@|-90+n;A`M$ߘ;+Lrk!Q@B{]ŕX`TYܯ/g\vspRd!k:V=3ۯϸ,aX1㾪lB-*(z߅bjA3Aajsq,p(m(D)4霸},ўEr#F(9,#up_'~2c{K0"-=]qZۻ4T D,ѯ{wXp ]=j16yU2S݁g 3skw!p&73~fnϹc4]vWsr?0*R\iGi9FZcҹy +qzBF4oѩ+ѥ\M~ +NYvFi?:,s18GU" yr=#U2*]{ej=]*Z8k-i"뤂Eyz#'oϤe({΄,L[Z&BwfLBY/d+nO\ug8IΈ1L 4:󫞎nd~KuTWU@x&%V='I[k+xhJF DWZ汮8dl*uJ&EH4y]CW~n-^kA͚.^_s: B-}Mk&~79ˎ&YUғȲʛ`7 Q +PwMVʛ7eL"^JVnZM2?nnJʦB!(u6)gM +ڦVĊ7k{mpW)R6/Gmj/Fm6#^ۤkGfmWM"MKQ6%~mr&Aw1j8@P^Gm;OnaU{MiWLM Po0zW7)R0^xZb55qgBH,E(c?"B}F|GՓ/.y@< +M>VF7Ѳ `R4 /⤁+!MlE1#tYJ?GP +}JrQ55-hRoG$X!)u,T'3L]9~$Qlm`kA 8#k<>1BHY]7%g*eԱE QPn#+Dbg^H9A{3A&e ^m$\ vuj%zAIHk6jf 2#OU qx1z+ckv:_`\bPG-xqq–М)rV;SRrݥQƞ`YܑsJԔ +&I(R$y0x)d0I٘@ D2~p ޶ ,oB|#B-00)ui.A-&T:!LFuaTff/v8ď)zNֵ j&0;Ϛ%u2^7H. I:#)C<Ǚy +3؞I*FE%ӞdU ofT +4|LCn0>^%= +\ke.N"H7$p{ +H_@G~xzM䩟Ó8ӗCyi&8JaqT@$~4ǏDic6twQzedh ('pX@#jp30#qzT +esA=H_89) h4G~_K71Fp+QHY-ȑei"JguѨjWTL^' !dT$ @x!՘*Ӫe[ͅvCuͣ3IzN{\W(U*EϭIpT|S[U]9HIo7ׇ *r*HF>z=c1DJC+"d:fCd[בnE@ЁKW8RHL5yӝ,(#uȤP@9Wh.R644Fccxe3[qLWT^Q0tqeiʊ0XG&Wa%2T.gvK $VvHz0;f#l2=)fB>Mhi>(ҧC\i78oDdCDFL{M.c +ewLR<ӕ„#֟w-pF<]$4 +g(*bzۓcwpI8 +C>J5UQzㅾ(ᗞ Yt7TU'8*d$+*^tew5a*ZUKIU؞XP(e~GcrBy)n;̵P 0J%Ύi_ˈ``PejKFk';rusTĐWFndU^@e>V,yz +M6 +w"' *O݀jՃߏL#Ktkp`)r k\ 6,I_zx$7B!)'2Kc`&!OUctj$tWvV Vx%FeYa"3ϔ?{wBfQF&0Ȑݪrx;M;KBTobpH+0X`lR +\bFCc@S^EQR# iQ +71aid9;ye4hyUX0TʰpB!wƲHnо &H:L!T_;C<#Оq?O XҜUv_-QM^ +߂F1q'\$byfSݲvSf3q+ +q EN^}x9Pt<0Ye$́ѝ gCPs*LsC,FlEu6kðmnQ8c' Ȑg:\j^LSSm +نA ܈!5GQjp] +dAWuu@.?zq -}6Ad͈YQZy!3@<1򣐺J#͢g,z1 lhO'9͉m~6 ﹚YoGˏXvP teDc]usR,\T(VaoƵgV/gxrRWZb9 H4*Df.{Z<ul C mP`q! `%qA<ثzuVꪮdUX`] YQ52]JU ^ܔvyVU9DKYɀy-<*͊W3y +$b],K~Cf懳2TaVJ 0(Ow5x*M[ZJ冁kfUY^ElOkNL&7dxŧ@zfxӄ&뀲SN:%k^wAYzĆɼN* hk qI*2.,'"b?= +}Q0$'3;OPb2x3Ѳ4̳xCS{FF=i$ T0Te4F\d9d7VBbv +(gJD3WƐKZ[jhd)_ +brF8ǰȵp5JE%rk6 j *rEVͨ8{LR#HM̭3v^9Baͪ OHϔ;QW{̥h:*(_= ]G'^\c(zK'ph'I}],=ղ or0b U`}}@,7WmKa`> Z j8caT܁Rg4'ThᇕŵJŵkHba K`mXBZRyf Pv8RJW%cy򀌏=85VAױKWuZȬ/aB4H'<&yYgǕҸ-5: ^ffJ̪K5Z2 VQ*ķ2ZsFf"Zx]؎Ji|J)4ETaB#F.6{aʼꬬULiAH>O'ʈL zUL~QG)Gܰ#3/o]/za.@9嫺_ğĽ@y5 <h:}P@8 j@v5 ࿂j=bCံa7cz]b:۵\de4*94?+&udOGlޮ24H6I9= bzhs{1kH'/9ě`2!Zr+ߴLtJ) 4'Gg't UoZ1 OO=Sԟ۟Z;JcyB; +əUX[㌂ +H#$$3_#Dib&w]<;ٛW=LPx*VW߄-Kp 6G[_]W?MA5UM)Ǻ[+gޞ@6YI`PLO<@@> N8 +h'8Wf璩oQ\o6@SqP,#az(=@IC2TQk c93Zhowܨ(sEg?cJ#1ǵ3gkGnKř߸9d3&`RoZALg6~,D^9x +8pr`f"kֲ>:1Ą#=QUe@wS|D-t.f^i1@bY`d/ьVu~t]Ę<4Ahƃ,=wݯPN:%ꔨXoD曭QLQƧ5,fTy, 6_`fӗd`W33`C;} veۗf>]`gEggk03sGKO|q_|%~J)QD}MľTۉ 5=?|n=)ξ'5'=~7KgIͩg٨8͖=hD{'h6z6,GR| V@ *tװkPM $j;[oaoJ:Q%|eg2ЌmY~e_ =W[,CO1!kAj&љ&1#KB5ACOmu_+3(134/]~ +?$OGֻD>_SN1V9 yAR%l^}lܷAGz׍qӿYe 1ӊV"_ uJ)Q_%z6XGR7X}f=9 V1UpDe`]'>U2!L +ֳ[`ֻֻl۷E$N?N?Eg;So&@IcD1a_zwOoPq9oΔ(jOi8dqbmJY8{)Rx>PyZ8+&3(Q#0ovo)WHPmҏ+gyGYhدe9 +עm-ht?+UIqTݤV*D< ȘM +#41P{\XW:>N6"C+PaY.h_wW: +^ViGJ2JýCAU% +'E9 :}HR#[["c mu+jQp8qz$q l#]su Q94D#&7FP~,q$}/@{-@ +z]$b8D"sUΪ8i?o뉄Z=+w/61T=W0Ru`InV#K`79%Y +LKc,fu;Du85?0~Qh7ڗFZ.vʫv,6.uTF0ύTU ٸ數9`A$6pMlm0+[^xlGaRUXmjC˫:yk>Ĝb^c,O \)}fAj7dxoE4LeOK d{7J2̽Rn8ׅ;LkC#ti8OHc)]9YD3'wMeʶF{ 1VdsՇčИRTn1CV).B.J޵Á4uO]MO򕍑@&!%SV`*h}MV!^'.h,k_n..u7z*9;WA<_\2{QxAո\Ԛ-)%g5hՅX_l ܕiL4JvlhWWr4Enyp$)Q7Ny`OP`rWnNih@F4gJSVIC"p +4J6XīA$O@jZ/i9Ȫaa`8|[݃)>)V_"}SEHL!)N糔%s*ټ (.h 1<&J."`eCfY6d$Lg^S~Zv8._}l-uanINfx/ \Ie`>jH3)2A!/^bex5,}]u-4-%uxrHybjvw>+h՛,%nHO6Mf'hI$:ϑD^K"yGTD"2LEUDDLE[+"yЦ"2DKH>^2|iE$ 28/iHYi 2Q7q1Q")!r~ GgFTsbmIm*K(>.QΑM }(.`76ESVE~cMg t}", (@B&I{+A#X+ZM Sڈ)*9m* mU {yYj@aO(ڕ4MIIBu %bhxIrsӹG;(V^nCaEY,4v7bb7`MN [9̚s-q1:׈{5Is[r!O?!lV,x|mO _I1qeֿK38Jg#9ɿ]Q9jpD;/uRk)bqiCXT'"NI6}ױֻZІ+ @׆w~ϸHB;e%l>e"ڂqT+wЇ"kSwnkLV 7+~w"]|+y,gg2A;˶=sok%BܔpZFg7.;LBkwX IlZ\Fv,nAC5r8\+k^P_t{!ǣb caO1ogUY儧B<7N)_٧O u24-ctRJV7x@@%]WIAM2> ~y&$c#b \$:?OTR"_c@T5?Ol-IZ 輠MS"/3UNGH̰RZ>w%0fR +)BOSJѭ.Ahd-{"ҿzߝZNRe4l*gP7fK|i)LUĠrp|(T7kӪ$d(k4E!L2 bmP]*HjaS 5NBL P!.4r5(Nu Q!p w@2˅I>2WaH( Wf~-'}0bċ :tE U +zKKin*Q~|W|K/r pTAD%'JbMH&[ ĤСP?FɛLM'BrJN8{؂duPn>_q\ F%IlBݪ2DD +]„ДlHYIJ`z1X|rrMDq}JU SXEE2|rFaU*m`jۯ$[X6xfr%&"יK.p9ːN)$67_Q.ur+x0j4Lz"ۤTUxc!b*xeIMzJ~2ދRԷ4I2*/&挩J(ZoXz95Lk>ȍLcS[bG:U\9 j4bP*1{okY=L} +N}K=0Fj`_u\;>R[Lf>c;"M8XzHm; ++G 2ۜ@|ʉj:cȌ!3P6-jZԴߊʎ#ۣ^Be6򔡊Bu%HvĤnrvL(0ab.O2ycۦ;Uo9Y9K;giyˁm&<@Ԗ782Suk;3*:J_WXO/2_X^?iV;\&s̥o>eZôi ?B{bKu d +% h$!ݿ4ZDɯiNz$)Q Nj,lO4;P-Rd{_M њA/Yv6:4g›Sɴ{MhSrcG4n,|C*2VAB`v6ݺn,Q^Ⱦ0:bsaJ^Y[iDd! ˑ L{I"^$?Xu#ؕR$ei{iB/-^;/[;*}Htܝ $ +/.w#,oϡNY/ua] .ΜHU!a ax5~9bqsmU`m rɮ1L:| (5he u4r` ZVBy1r; x(~9%&1dԓ!Z+ɽm0MqFqFiE c´黯vLvj%{u<Ķ(ۧuA M\l/R{+^Bϯ3VGG* 14Ίa*$ s |gwX܉WS(NAP#CK&͉N " l#\BDEs8s'9r&~QX^Jjbmf$E}h@zK6%34PmTRmXRBwbB脃 +' +Gq|!pC3 8@%fD$`bQ{QW9 &tQlog,>AQ3p78;yDDg?zQf쌗_C^D`2{&Cb(C(!se$ (2&u@e]%p0PrQ@>v!䴨{N!erK^-̚ةJjDob{%&S`ѝJ1%QdTj,Lj.2c)51J +bF]$[K e!q!Sb8 +BF9j YebP;vP.VyY vrթLJkGh0RLMzrmfx;8sOov"Ia^ ?Ҋ5q)Uo6JA[QN1A]^ťh< >zxrM{"B%7Uܫׇ-±YSLwT.~훈Z0L ZJkEYTbqGGCx̲t:7voAG8DܳLpT?1>ye?IQK<7ըF"+ϛKN [rWWlGJ$oܕnsBS[)آ𦺾'%oYjCrY8S1Q5H,NDH޸"_}נGO #8Hm""߉Cu}08n}~c<Ҽ"[=٭p0[2žM.'{kWv[a;ێёEDryv}tjYoQhCh?"#%:ق3[pN N=FHdPK׎_ԊN&1>' +q*j,%wg9ዺn!xGjsSrK:A&yFXB3'34EUHEÁ{qgw.3x9bqsmU`m rɮ1L:| (5hݻȖKy6cukf'`'.G甘l3SONh$>4%"s| siλ-wj! +6d q׭tܥ+>u5мRն1yR7{'C9<$lX8b+ 2Vl'iJap:n>%{u<Ķ(ۧuA M\l/R{+^Bϯ3VGG* 14Ίa*xp s |gwX܉WS(NAP#CK&͉N " l#\BDEs8s'9r&~QX^Jjbmf$E}h@zK6%34PmTRmXRBwbB脃 +'ȾdT:>asVHzgdu3"0((+DFkQ +(3p + (c8̆U3w!b򉨉~PJ'/$Љ:d:#M0QQBzI"%ZQdMM +H$˺J& +$a䀣 $}I0 +C>]!iQKCbuZ,-tΙ5S`D!5JL*;bK +/I"_X.*4()9\dRjbTČ +IX}A\BBqJVsJŠw],<S': 8%׎V` 4` +ovqP6VE*W~PkRm𷕂1R1,A cX#ʽ0KxA}xJ 15bxXj8yÁC="ǦcZ0'ݹÎB'u7ݩvq[E41,P?`G5u>HON + "p-*t*u\t+ ξXe +fS0vyK`@9+Hqr7/LM,  дMU#k*7)O9'u/H:쫈Y_p/= yT+D#AQ~i)_}.:yrW.d&&%u *1d;9'f\UB@z/lm14c,"y@)e2OdWͭ |gj9ᾯRtg3N,`F$B[1OMiTVp'|r6?.̍Orp%}EA-rG}øKwøKW|B'ϔ&B`{^-Zh}!uή[kި=^ߣ+?ǫ[B449&A!/}4Yֽ~㌃GQ]Ł1{ϑ^0zx{):~>Nu\<vI3uckbKiҵ/MJl`vtW?DCG;DC! hlq%["ʳ%bD[KD[=/D򋞈|(' * +|RA͖3P71d%R_DIA1$)h&~#G ? aOj5SeA>!+h2sָKje;|U wR%8I%fBfb7YBFѷ&5A'99[>ë9P0~4RΙ Y~rw*cOQPvBE.j?G+H7T vg(鞤8&MAk%u7͊O]GZ F_XWꕧIt0΂+ +")4c}rj<`GgZPP\) 8aF5e*&wcd%Hp6X\BO^#HD]V" ke o 2l/XD J.d.v;Qg67_y%&@`7CYMa4i.n C㉮tկYu[21}DԸ6fC6D<`Q|9ދ9V39LfJienFesכܯ?*+ %vl7+XP@+6A_3WywpD|?*6[''g#L$wk BS R+5|{ksߎugrǔ;wtiQӢEd 6~c1G:H:&<X hxnW+hM o> sͧ(2Ȍ"M5-wⲲ}>2Ky݇}81Տn5 +Dnk'+:^ʛ+8~?/mKewTv.^f>_sx~OG|rL0y4[>ope8_xk/k6{z|"x)jojI,I;ti 1Qت3ݽޣaS1Sa,E(| J}%N2\`laeNUӮ޽9/4q;^C {AB>[@wj + ++y7D: w8F(8Y@`o7*F94vs6vI5B꜈3ps] CD?'J@'=R$ϻJ_#A?l%N|B|F]ȃqsɋ7v~ +3uv.RI.1(S/ZJ~' xb %컎3P]KLܬ*GG\lI_x@, \d-ڡ$dԻV{6r&B(4H0ԲjͲL!D` +McX]/&"6_(A#pouf'dux΄89Di<^ ن]XQ8OAC`+SB(7?6t^h]2\ÆJ4 ̸PgΖ| !Rx!w ]΅j6O <=r&gOoc/B:&@l~ + +??t}msEW {vTz+n-edB"`nd_2ѐS KHM~$>V\]B]J ,)Ķ 3iY3ۑpwSٕdfhFe˧0B@w|%|X&˳td)nu=c_̰QXCG.Qt]++b+,b9RDi/ID` ׍HcWVK Kno]g& +exx#@ld"s/LSdCEELNX Y8|Qw7?Pz6?:.gDmvM,xs"I8Oc[T[^1}Q㽫PnS"ρ^ݞW cˍ&£0HTՎ3Cܠ:Xg 90Qa-+,c" SbLWL>9UF gg`V-^>&Lndv׸f2LܭBg~e ._)5мSsֶ1yR7{'C9L$lX:f+ FVl'iap:4n>{uL(ۧĈA}z*_$2WNoxy% Zˇ?r&>1΀&>H!OO"PSy ^yN8U ,RgA -4:%"f`\泍p |( sp9#.m%5,NLv[Ei]fdS2_M܆H%q1P%!)~',KوN88ٛt~4+_>v!崨{NI!grKb-̚,ud>하VLE-;_DER 򿪲0] +TiPSȀĨ*1$[K e!q!Sb8 +BF9 YgrP;vP.VyY vrթLJ"kGl0PM%zrmfx;8sOov#Ja^ ?֊5q)Uq6JE[QN1A]_ťh< >zt~2:ʀsvk^s%#GDK@y+Z[$vǃ>Lc` Ȳ{&QdM)-mD8Dw^4JL SN3 jsŎ!9^3+5& o79T\m(MvaQ>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4619 0 obj <> endobj 4620 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\ai14910.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4621 0 obj <> endobj 4622 0 obj <> endobj 4623 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 4624 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4625 0 obj <>stream +hޤ;ێuHfݫ -@[&A + )e͟s:3$wn~_q9ϟ_?o|g7O_~曻wwaͶneqJ]CYjMkl..wn\X|JΥ\&sྌc3#tF~x{?;nŭvxnqˆ~w+!n۶n[[>y< ]03# +(m+Ax@>yzo%A5pgo3 3- 7i+k[ڶ _|^}Or?.O_zW‚f%zs_ )- -޿<}-Hooyˇ7^|Z@m@&C~6UuO[Vڑڑa9Kú +-gV +`V[~қ]"Os;e]CXۮW +uRmZƴ;xրm P;HD̀8`ﲆp h-4m|X7if%l}7<5D! )G~O[^Pv;}?1:Egd\!6nЬ1H[}wS1Kނ{mUimŶw{v*S#'& /`)Bv~AҔ֖kA8v$/MQhWn-܊o7*I +>-Djx?z&}.~_#ҾV?haMyQ#t-5K^POI$󠜨 V, f 8t IE  x&LJ=鰝ڀypθVn2UڭRoYH{ow*H@dE '_ёߚIc+#'7ß/nqm`ps.jJf-\Р +֣xƞ=nɳx}N<’"r0$E;eݲ(\$wϨx*i Q$4F6A=D`i2H0M%*kaŪ0te{KGn?h{9*#~1"RY $By }8Ao +mLT͊G T8:g +_QX¼nIvY15y`IFSM!wH,+Zvۤ{̌e-١*Y~+| ~/!&j 8p_1,g4lCh$й$.Zd/!衋F H3Y2Ҭ]G12#sjk>Œ0 |tx!́e}םXTKh:")=bd۪Lvz:Yɸ4 /yS H\8wq +bVq +nl~A(/)Li113K傘䶳hVH2&@~cR&|Z=׬[$YF>a=m7U0~iɈl)`L tpI5b0mdvnMua/R]GO$o_`t +Z_2+o)w[(ZԽO`E}scWnU?a:/alѯ|Eظt&#I[(6ndAZLAWH Ù}P)'& `tztv 5-$/ເa1:yFL=a:&e*u"~L))Мl"v' Ȉ P +w8S&%;&ph#8. nqj4%)UTX,N=V;tb`{&eϓi%Tv:4LWa\'R=|X`E GtGpP[yC6Ra?$@N&\>e}SmfF;q@QsQVyJY_1%"25, +>Qz0 H5LbZ,.')nv?}{NX)u-H^& Zo3mr6EkҢ‘ eS,N H/ “r&^0HA7j5GT)BBdMX GC7yzƩᒉM=]|d`3C/܋t]W]Տy1^'mΜ4yݚ=(V`iU㠊xn ++>2SH|~r`W=2m$M8*myf7'Zz)=ELO\Vtdc+8'Oikl'E|'<`\E,n {Q+cH9IdwGm}=CNRJ%S X8 +SdvS55xGLzͨ9De20GRޕs[smthV.0q's铼frxڌμF`Rl.FǏDnZ1M9 FeƂBz*c /Pz)ڸKPtVǩJrp-sGE8(y-Qc0dqm\pͬ|/|ɫL7řM2stb&+;ZjLM ,>MFAlKsDz$r=; 0zq!+J9Uc' fE?ښuQo}ӧjzfR; 9!# c\;нmf4{Ff`૰<{"j~'']9aZ0Ѭ(d;8Je'M_J< +?Zh,h0B<}-yW{oH|l \Y?M^{ܤ~s>=%yJɿ`iuuaZsn{Q7fusl=ԗͧ&kP}_ek]TS:ij#CF o`(O@s@/VFі5Wܹ[ wM,mٗuM!/ M1y`IⲄG!%s%y`"z%P^DqmVl IWtF Q2QK/w=6=ه)C':oF7h>J{p'+P:yޝl{jΈm)ClJ{UomNbXjnb^ǼaTG_yM!dbbb0S@N}ͲZz +?؇A|Џ*`rW݇X>)ObZ)m|F%V=oNw0ZG9kR1Pk@ +BX%xpvH?BF(N_xWTPhUip~g?|8iieh𸵶@+vQH0g̘fb5"-Rą`,A??pP66 +c/H@"TS\T +- ص; pъ0'nnWu~Q@l#/'vb9.3DYW(BNB!`V^A 0JGVEJ~ fK0OPT/utF7PsB]5ݨĿ2}A{cH K7mXq >x +Ÿm 4BCa H.ZO 8x* LKD}ph; < ik. +hb][n@%Ÿ%%+8bc,!z=í[D<诃* +[n+ފp{7Pqj>yے?B'߸2r_"Jǡ6Bx;n`ͫZH^F (t +}Mn޸"R2`I,`*J*Oʋ3rT쓏HA<Ǐ>'Ƶm @,B +`GY Qcиا$V*6?@tnXz{52oJԍ׍- v;w96.3NѪi?5DZ𐲿hc&Dm#@3-frkjl7?^6A#.YTfϏh0WG!6͐@@U9 Hq0]C*ݣXAnU 4Z<^ f\lwF`H%Ȃ }J>C|5: `)>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4627 0 obj <> endobj 4628 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31099V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4629 0 obj <> endobj 4630 0 obj <> endobj 4631 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 4632 0 obj <> endobj 4633 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4634 0 obj <>stream +hެ[[odq~89<}?ǘ 6-~`fv(1%%%Yot!A>}ҷ~|ۻ_]MWq\P4OP ۤC4O"B9-Tvnܸ`˼scU?bu jowz^dZ2E<0ӪaP ׺ci/KZD>‚ -8Fn2+"q8-fڧŸRxO$H0z<߉I~:p W ˙h]'?aaYaeYI@aߡb# lwWо=>p%zzw)@0X2q3Pivax]̰7?NP +9Բٕc1X2p$_%Zns\fufn5X.scw˵]1qS'n?f$,uR0n"Z"\-F Oz@o#Bz{`DY9-i@ΙG`?cI3[AE(,GG`cDj]e8#(eWKˣXv\?E#E!32MS=Ałf Ua9Jc-P8ǰR+Rz(rGٵ\V5l*E!c l^x0TRk xy3^:DmŠW@Z au^U{Ty\X&Rئ*ьeTҺ~u\f4yRe|3+t(:hmZ:cިT,B1\i +SvUǕ E-TQB ]yO@e[=Q"W%A&Gurp/}WCǭ`:\1*yF +> +Ń;^ x b]@ |:f +zu;o񧤟tlfx>7jۈ-}9jB$@ r7[K'"TCq4O +=BQXGd+;i.| z*ы e,[sV2> @?S5kiDOFdLqv|2*Iܤ]t~H -Y@݋8Twɓ➍]eL˸E!/e?g6 +M5߄8q,4? 7P.e |-]Ͷmwg_f* +'g' W.|^kK5g{`L\'"}Vd5ޕ7Hq_9' bSn@4ęu ק [Ҫt1G3W#tS[yx +:6 ,z}Zg•HL {*P{"c5m]n8߳q܀EUQ>\Rzɧ/CDwF"k):{PD-MUhi4xfMZhN Dit4 w/Pꗮe, `E}?v$,iW{R۷o(L'޷ pɰ!ze8rCHt d ePYhTvjl iu{E.AM&1M"֟tbhEVSoA[H^!{qzA9397kpǎpIdm7kޮԳu& +‰lJbQEZR$TmJ+l[$$Uu6Ok.3{&ԙ> K4*w` MTVXǟ[n`{2 )Gqc6Am4^oG Q_֓Ѡ굁MRsꗨP&;5=U:cݿa3GeyYmsyA ) MK}42yMt0 HsHyT%^F#'ky,:L:IDt.+K XeЬSAF.1LA@ziGtIoTNA`FXw7m7=Um쬿H19fK K%'RD&;򫾂ʕ2uhA#U쬁o2{t +Z{U9B V{^s8!zϖ1ۦ-i{&~ы\. LNgtYfhUlV6/H33*Wɺ:|ET)ɖoQL4"؋𶦨^&`K#nlL~e₰ێz͸kPNJeD"n$[-LKr81syI|RmVl/1ͯE9֚-eLEY@Ȧ%L I<{v3SY7P|ܾ p+(Tl]#v*dK[ +10%"RbQV(;\Suxc9^Կh|)Bq5UYXcptބRCm>#Yz$K=,ɀ;vn6/=]۶D+O+E ɩVT]x7ۖI:'v)gne"]~r?'mԚk[3`֍‰`few@VGVzЀi0=6X +w۷S•$#t*ja oUx MIӞp%d_L2lLT+WxXVRb2TLpAC qۮy5+E95焴tX%k1YuT렌 +& 4TcdOG,*Q^\K%T' ƃW*ݑ9q^lxB*8/a  PIgvQ+x\sks/Ec|֞jg+.N hBV0]B|iζ51fơG )p@!$ ƺ#831{XoGcY/7f̔x!KY`NK A&YG<ڽ*ͦh7oXš-slLf!JR;sٌiM:J +Ca|M&EqVVOj|>S>KCvqJ4#ΙrQP%~<&ɿ:3εo?z[~GX]+Vp'|/v^ /d&qo ' :ŘTM ͏&}mmZ0w3v=M]VhNj{(87bۊS[<.[7E(dx/=ɠ-lg펝SpC@[%2o5pfB *VgV*%$y06-PDAZj +^spfViCEq12T .jt<:lNy-aZT' /Oy򗒅uM%9]R7A}WWF[\WQ /I6p v_߿&!tN ) _Lm :n4M%Ǘk!MlzucIe~-n`禒ƮlcdwW=5 +}VY1䒬z@lLh-h!ۙxmXhU٦Fo \/* Vۂ=]K,J:`Wbg,ƌjh;ul̥)AaCԅjIk]U:+w$9 v XSפ38sr17}AҜ9~B>-nOHZc,SBSNyƑ R^eIuuf5tquҌSqD1,]K ZrӥHkaZVrZE^kv0M.%iKIgO.Pg׻<:}xEj*V96clI0I0u^Л:۲Lx7'D"" ]fvM3Cr103$wF^8 ~ orzS( i7dLwo5ë;@ae9_%^K+vx]-<`CIԗ!W6Â*,4î븵ҧ?_xbhYy]FvƟ܈PѾ$HsjR+Ɔ/W]{:` 뇧A%P 8f1^}Tq͓h*0:`B*5[ 4Ϋ~FԬu%ۗ8e#Eq$qG5w!p g eit@~FO4'3$Ŗ&1%21bmkJ7I:fw1?,5M z5\Qht+N_.^eI//HV%xnU:B^*ΰܴrcN ̖N@`'MJqk2d.Hz^P`wV=`h_eY;y'% + SC(rV[c1v'/ȐpCi]k;w~uBX\%Y՗zxDʢ.W7i\V'4OEiV ~[S,wy}|{ΧS7he-:}j߼/ $9ԫ,6/2qFuhhߊ$kA&ٰQDy\#ץ!< (Јf@(Y>{6#z1{V.Ֆ5-tz]Joyv{]}ugg|n9cTl|z9fWh\p?~?m?~n6REuet 膈?ބ1]o/O/OÏ7̓̚m΀CAs]ӏ ~z|6p#SmȊŁ?=ݠex~!&\Xd> e8>=<|S-=JA[kDZ}^o7xB{Q}:r5fy\+~~ʟ3LbEirT7Y{xwx??xw7j;`W +endstream endobj 4635 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4636 0 obj <> endobj 4637 0 obj <> endobj 4638 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 4639 0 obj <> endobj 4640 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4641 0 obj <>stream +h޴[[d7n~_qGw)(;]> P]S̢/LׇH:Um$ѝ(#%Ou~|xw7O_6LMKW?bmRˋ6f^;͇,/|rˇdM -PZ?a9/eؒ_M%.]؛38d|{y ~LfJ)S)y|ڜ74VEXC) S8&rb`R s9JꡥLD^n3"QSZq9IM[ b_/9<2g? >0*}rtz~{g'_ᧉZţȴ[i?M )ٛJC/N ޽<|tz8}} 0|^7u@ aAp-, S-5Lv5j&Jo=K ty6>D[C[s24tt5m>pcL/'ⳤsEr`Turtm<[kWG5stPpyd\;(6sCzH905sATli_o|V᧮S RAe SZg\XGdr(ǩkkjI 64,T}-{`1l4,X$ #h ++cF&?$ 6mXi\QH4~̦$d, ~~O4a=7!S2DKmXt&cRPSW͉{a.lASђA b!4A KP-R>ikj*09X0-LʾS!SSJTKlatIյ8U r(,|-?!S 4>ڨ3%oь_jTJTS0#%I +6m- UE摰oGkxԆH шCT A$ ꨤL৙A ^:V784.NfP'Fl > ,3Ԁ̶T,Oť=PkA# dV S3̍)3Wg}m^ss${ܿ,*MWQ-2qgl! 19*޷#U f zrM18fxiF[BYɠzDegŶG< c[FR㋂-󤎽`I.yFRM8'e/CY!SЁ-6FM_:93R n( mEgU}2jrʢ*q9嚖ru.2)Xf]_&a3]Ĝ,Q8X#m `PcϭY]؃kttmPJ*QQQocf7RO_umݲc)d%g*ǚyXFe:1EͲ6[m5hJuWV7KrSoc"QЍ2%TĀ[[ +T/'ʁչZ`}iC]?"ʶsgkD2 8E2Ւ$Vw%1--t5vF pR`c&ߜ0.?'秊IS.k;x&m= 2{Jd2[AW9CSkUZmٌ<" vj6i+*;2ou\N!+? ]4ç+ST֤0-20]z=1KǓ.S7GpL!"鐴6;O2hCu[kWS:$#i7Aa9AS]cvmnE \5jbz|pՍMō qsK/Mޓ 0D\͠łkvyO+"x ֍0C͵&^Q7k)wʀFO1gdɳqYŴ;k|݅ +rC-`krAUaI*X`h*gƙ#Q|x,}Tv0m:xRЮ<3CDŽYp!W"Fe@McXIYP<(#j~]rsźgblqD'1̮'G|temtqow:(P =8CtvH-o"p5wܽu3;kr}0oV=*ɐ!D @jWLn^^ HA%&VbIxAvm7qs|i-U'6u$Dy<_ HQi#Jя͚{m .V'BkN;X&:8WW"]ZvޱF3y2Wnښ:"hkCiXn+ĶD=NCl.w4R0z);]㩍`+ɔ+#w,]{q|uХ120p"r~_j.MZ#T!ӎ[*Bq/C)bCoDL{V(Ad)m vWQz'Mlsۯ~}#Гc0"Ke.T)xXGB=_0W[Frubo> cCL/;A-\޺WBtޑr#,je--\ D0Y_uוА(7V,lRL +M<)%@sy1. ک@Ȉsv`Н~; / }ap$άehlܐJAD m}v<]܇ړmZgw䎹+n\ v, D!|qbwvZ}sН>,m*ntяUʹ_]"n 7'HX_;^:H/6Ahg+?wdsrb'V2:نbe#G#yMDKRPô7aexU|!qF0.ؖhyXU'"o&-֋j튘wfZڣ +¿z+ʅy[5}%vl;us n۽9uٛϐ 7/}OO_Nx0TrV2ߨSkϭcK^tz>2^{RE%ITBy2^,Kc=u1ze:{DYi3Y)?>ѥm,@Ǯx'bF353*ɿaܑt?ah)lٮ9#tLKUՁD.ؕd]1?C_P4^\iw? +IfݬoФ"۵]woWq:0gJOWs.B(f.|"\ZȑN8Tf2J2kZ;v7Ϸ~v"n5RyqBT;%R~.8aέ!-"]" ˽r{Ug.Ϣd~g+-{'}*u(G> a:k^Bn( K+WoMߍ7;](f fHQ7cxLN+*b]lYQ^-r3Cntp"W*侲Ma l/愾~|O3 ǴC~nB ysulT&TP Ni0$DevQӻǗϟN?@'7*Msp7=,L7wyolLAm +~^`şzVl $n( %Y[gZ #JV+b-l~Yq(}`K:]Ae9<)B5q Mƍ{|_221鬋ZH'hS-y(N{sȟ[|~xhr nVZ?,S+eVqn~/s\Sf>-^<ނ18|s,XkwJ˨X|zR2%2FX^sZU:%~`# +8H`(Mփ{%gŽU=! +%1RҸIgBFœ˾BLY8# $ @yRi + 7KeBʒkUǒ5 xbz/ +endstream endobj 4642 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4643 0 obj <> endobj 4644 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS33106V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4645 0 obj <> endobj 4646 0 obj <> endobj 4647 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 4648 0 obj <> endobj 4649 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4650 0 obj <>stream +h;ˎGr: 4R+ ˰́}0.EJ؛?ά 8]xGT?~q:o׷vw߼w:7M?|󇻛ۻ;7M keyj7a^ @wp\Ǖ!Z]Eh.NaWOWsrsÑ>Y<`sO|e|}Js5 -SӑQdTO_Zjpac$a5hi1C<>J &qr ` ,|??qu}hMs,뛇!s~_\Hq:w޽8,WҜ=S 9=r@靉w?i + isɥyOo_8~-M(UL2-0dN\MzzsA~yo޾ek߾9OdҢ#B@ LڜP[j~{s˜ZHYG`?>0G@0P3 m:l~^В +Tp;P!-@xɼf|[ Wނp:{ .Юnz`3 "'p rx9#Ri櫂0֍ +lfpfPo=> ApSKJB. zߏlKn5 lFe"n` ^@ZmuR!GZAM:<(;J\Jܰ(i,@z{kx\70Źb t&܎î 0 +pasof(L̮+R~D81T{tLd&>Ae.\_&a{ڪiRɣH#9K/ʧ#DxPMԄ' `?cſ`~AZ;R"FłfYrG `3JU +\ z|#s=UFá!X[J"]PBF{ =2*|p%^~4Bɥ!,z֞^J~s!6>RHqE6v;d9Z/:(KĥItj ǽ zTq[[wuW& +?GDfC.+>q +M<_%OXdaB(6Nqav Cлo(rTeCdW֮ND> .mfĦ;y긙- c!3= 20[4ӳ=HVYhEbFDJ1c^Mi2YСUP'K% D#'>LSn% +3S1l]D1<6M0K-z&2X$B)3#L'pL2 +EXbcey D 9 y,\g!Wu l9o%'xk(hQuҨ{Y7) ˒_A5']$aaK= F+e!© +fViQ# ׳I`.ѱ`lFm#\uQ4hHTA6,҄$ca%APUJJσXd*0$YC*(ǶGWx@TES{5THpp]_%YȡD8WA$#M\򐱫݁?e5_1gBZ4A䕮3-̽Rٷo~|}z~p>-,*u \0[VhE4*so^¸At-_ּĜ,eI>JHٜ$~9qcR,sśƓm.'4D9y|Fݛ|0\vku>ick7jwr{^0qsw+ײ2H (˅YEOA76^We+߰»J,_9PWprb?Y$lfqNSx&_)Q<+d +Jp#>H6/a<ԈtU?BmM&'mXYBduG`_2s7# ig迚G~Oqh7i'22#8"C gsqU1{ȣ@eu~H_≸l@u_$F"wy^8V9Y0 NJ,cl>EWE)X34kPz۳6k.d^c* m| AX=H|PLZi"dRTnUS(}"EsYp|^媽*˪SRmp%3[u3weACUV\U܉}2+ٖw1;I⒴H|\8tMiP*z2; \9ф2ΣWOT :ć nvRF^EMleSSU蔱}>Ka`|YWG)o诖i +A8.BΏ<ݦ b]Mk饄'UI^ +xńXQjM=ik]h5}x,_$&qRrm<$jV_iS;/b]Sny^êj룾L >@*pC>%EO-]A܃~!#h>UDfnZɕMI`xi4~YN,/:.w,S K.f.C]>C'>%n 9򫼛i.c/dlR7f8}^'}ab8F1f=g ֹV)c)X4ZHY% ]l;MSNu4%su0o#:ֲ8U3Qj )z[{@nP 4_xz3ĕD%|q1/Ao\ʗ C1KF;7ׄhåH`JA; ]2V,oG!] {ǚI)T^Hrw1@TLY'{,GNʘ,,62}oJ'#1y +endstream endobj 4651 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4652 0 obj <> endobj 4653 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS33107V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4654 0 obj <> endobj 4655 0 obj <> endobj 4656 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 4657 0 obj <> endobj 4658 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4659 0 obj <>stream +h[[G~?S]yJ8ؑ= xY1r%۲>YyY7i\nn7q݇O>~^͟_O?ޞnnoۇSK&Gy}9ap4 oO4v_O/PiJ~99Pr]¶ .;~7ZƟ%OC1\5q8傿 K-C)e\2<ݟNV:߽$rLJ&NF2TҀ3ѿﻎ~,S +ا%>#2g<PC:X"(QG(P IPʎJlJWbM{_*S!'q"4`)V<$Mq\Ҭ'$i(Zm0r] $H)@ǰ裫OJz3wY?:lDh;摊9[PG$󠜨 c, & 8]] $fH-%T܌U:" rmPl)-ܕLo +|av-w=n[æ- +%+T/}R iX|,%lͷ/ww3GˮU,S4{1p/W^'x/,-YBԜ#8ΨC>KT~+ޱ/23xgut:P$El}"Wt!!o& k"@cCLeH +B˳;nngԇ|%((Ʋ:H0U{BL[_)"M>qzNZyJSc.Rg&ǘ0΀3A,FP \A4(eܯ&>O:{ҹ+BCcB}Sr|5v \(ʸ$cؤMFYI~:O7rFܕQ9%TNqEfqVy) c}hBZiUSj +Rȋ&U󎔎XjS{'I*m('F ~R 2"HuTD9Vt/fbut7܂TgկqcvqDĢG܊eEWW3x򢫜Y+ny33Z#YmY1ݨܕ.=!e*1=U8ܫdKR{Ď Gc޹W%C`G )騚~bY!桜c uYg.ة4Pk:Qk=g`Z-6tUKCRYͼ2&,Z7X'WiF,4:xYb5Ls͝nE}A֯yfXs{"vbtJ /oN r5ъS]3nPW +})B3nT^a bd( U_4Ad-vB~sv mwlD[6e]w,gv !AONԀlcfjFynlF\"MHfv\Ճͭ*-nCDOܭ򤺛Ye7."Цd|dg#ײVLUdtqjJZݻKkJ4zueS_n &2C+4.ͨ L꜄2P##'13&Q}x.X| +um-xfR: ]]M H7r"fK2AV=gGIqBN-2v. ߌjaܬhe\T})a֛Ὼj}Ih\i9˻.rԑ$C5[ pѓdXLN(nΜLQ y#teM%;H7=w'FBfQg$X$g&s&xӰkM{$8Q8hPH55ڽ۲DC`IX2gËW8Y 2gL;IjVۖD` ζ~[sC4i1M5jf+$|#z0?dOWLفK^L!D { c#5A;4loҧ)nJlZ[k0 /kjB bVil 4K>ըI91]RCkϽ2oy,fsl\K#&|q"ruhzE >=N4)czrg6>]%pl|3tդ͗gmOTW>4t 5%)c^{5TgÜzM$/zw^"KNbԡNk77ΧppOX/5#AA2FIeGvҤ\K98-hi@Gw٠}(f1zu/oj`C\ +jq:DxN]ZF*t"]LOpR=MTDrq{@V״";=zna79g4*PCH'UsC,Fsx1~^o3ԉf*݀I'Q:hSRykYh'Fw&6b[V.0jvum3l r%$&iG| KoSH2匓rwҜ͚a[rp7t']aFe°7ʅkx7hm\og\!_aHW(TSkq/8fzG T1FWc5t`9N>Vu..={G'}mu9C7]<9 v'&Hg;Y%ķwwM/Z$V Ѧg1Ȩ*e3s5yb TKw4)R6!ZeLf>5ius'yes71nrhj&.uY\k!~>8Wh)Mp%[wB Dfs# |"C:ܣt7ߋ.Z0)of{ Ӵ^d5:F}Xq-ۍtm [M,HTlKS?L?go vB5 ɟTsS5wߙf>>Ds{wI˜!Oa)>ÖE*%| oVI NQq UBן4|M}|`椌st$h ?i~y P +nRŹ+P`y1!-\hc/^~.]:R5z\#ψ]^xD[;2:`$j|z߁Z1 qvx(+?ԇyr@?ߟh '.~7  J`,%;`6Ejx +zK4m o7%?NyWP-j^,30Uw[3{v(7%2 a ;?fCb)sc)Em ,͙n~@$7ufoԖgmABؕ!p}A[bWК2KvieʲͽL5%ڜZSfخ6_1GZ2x%sWAÄ :+R(-yjAe430:Ϸqv>)A7FQQR1|aMcX}M&bb5MN-og`}_hMw+r%SjīkG?A&4jTSk\y{a3!2ё͓(7b VDq.5pz8%Ж$q2.6`~}o\ƿ$ +endstream endobj 4660 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4661 0 obj <> endobj 4662 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS33108V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4663 0 obj <> endobj 4664 0 obj <> endobj 4665 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 4666 0 obj <> endobj 4667 0 obj <> endobj 4668 0 obj <> endobj 4669 0 obj <> endobj 4670 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4671 0 obj <>stream +hޔ;ێ\GnQNݫFYd'jaQd.+߇d,[0SwdU_=ޟ,˻߿}˻N?|?v۟opw-n{isYs^ڶƸͶ9rwn~8n[HA5Vbi&Z/z:['FxRՁ:Pǻ?!][ RJ\CPPϰ⚎KK.krPȸ0Tఘ*ܔR fg5o< @fhۻ?.e|~sx(׼3Q`f='^ɂ{=>t%w!G +3'M4mq:{/|j[m +[x"݇tXF౺|כ~W>~~͗g嫟rvn-:B40D^~>@F밶P׭:2 bu˞CM*@,@e9c9Xr3L-V-WQ;8u.Sٻ@5h8þ3 ׌h0K R0o"jyMpO+7 CJI0ѩ9gg`-Aw[ HLTŠX"Zet@RЮ!Ej 2nehT)5Ų@6C\Ib"tϠV<Lqh #vj_re[s/כյxAoP4|c>)恈Ϡ~[ Z귅 :kZh7DŜi"q<&J +׃cfuALw"DU\'#a9J!Pw14[JrjPrGյLU +2V`$a$V$,%$lwf6@lS=͋!FFvױ=$.Qj&<΢IݬBSl%٫p׼ + ~@ԭUlhѝA`$f2/dcej;|w&/  $s"N\3O{'uo})z{I`H}2%5Lt*\3Z+$ ݗH}$Aĉ@3Aݺ=ޕ@r: 4'bQ;RY4-,=V&VEPpmUD) v9e(N#(-*=U\﹗;񝖏cSw;NX9$Q +1h;A*:86 c""m"^B6G-wa"/m$yc#NCyO=&2k]K &47μQ.%NV[uiиח EN `|ȒjG6IGG$i!S[Ɋ(<⸇|BVǽypwoexLL % QCSLن3vHV=YfܴA3v':aX]3 P ;.ROe2X˸.R*,dۺDŽ=F FO4bdi Ep++iM0p̼H=# +^۴B3|o{qE6)^MqjM,iԍs\!º;˓^m(!"glX+ńաhH_ד,ޕn>h0lFIE;+_evη1FS'uMӅ'rYfurhWH#`:.qUj >+3x>`IV\s;wVȃx]DTupu,9Py]7 v[Ґ;Sh^=o]pCW +xo=wø;2 ;P{~[_8*mMꙃjQDgcÔm|:§ kCJ>P(9D5Fb8Դ3 +zk2S`ݵIW7-]ͽ.݇>rLceYByn +v3ewUjj]uT`J"·zDIhÉ-0ͪiL&C"lxL8z_OXuo3#%PԎfJ"dE/(8r%UYaHPј%ưbb&k1cֵ-$W?tc:r{yz{(qŘ1'ey8ӵĶBtfp~NO^0P51 ȹt|MևhȆz +' E6gbbF̛ 3 + +jun{6Tqu(hǽa:hkٷluoIKwB +3Dudx(.dΗor.R1|T#5 k *,lMY=|aNz *I?[lniqŚ츗ta<'ˡ+;֋(v܌Kp[yrHhԚtbgZGd{uIЄ>-VOa.N)Cfr۔lTOk/ⴣzqd1Ac`'F,SF4jInt p{B<*VMi% ?N'*az=UzB)?LX1$v-զMj+h MLo#p4q] [ IzzJcu%[+I}rۥ4*Hݭ_Ӌp$('r [4tbeo9|O?<>O_x{OOoxK1݇O&v ]5_߾_nkt3q؋x)sKՒDB>@ aۓ:+!Tc +p8sf"/:@pEΌg&qa\iFHx+4G6AjPAY`J/+.82PQIe<jpA̤:V- kf(=rn8 G}4MgDÑ51Q!g12Cij4kWEhK"d6u*Z,+aG0~l+UXA|'GÜ˰|qڦ)I;&QMx@HѬnH-2ʕHI/p4|cA4uXޛJjEYړ 1.rOQ:zM:Ӧ56eV^heJv$lp^ED/N;t{W9̤G1{EźkEN;='Pr#b{9xQAw;O0BF*-J ֈx#(60 &%lS nH؆wM36%LjwDKmIYsJSD5YL%Eti!~iܩ%H]Ն=hb Ȕ {L;+7#0߇KP|{9b"Wܣhv*^UR=NqI!I%;d:/ Ac!.=!'.[fANbXp gT5딏W{0N@Ɏ*S='+vBOEwyٌ{8{l ob+V+ ^&Dw;.QdLO^cGB^Ɇ]l\K{466e=3l5n(7OAX WO30>|s$#8RVwyauqwsZ85ekTv+*Rhku ^WOҟ5-[ÏPo|D-mq<\ulï>]B`I>,|l:sKԵ5z\g>w6ӼV x4`@ +lfO~q*AoZE;>0ufC'/cç0&fd{?U7Jn^|܌؃?!XEzq/ԽV7N Vz*ИƦϋ6`@=[*_>|y?v06#XG$W\)PN&A ~ []c$tq!*>\c;3OP.̒J3=zbpS`uk/]:ws{ 'OoMҔ́la!F<_BG{wb +endstream endobj 4672 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4673 0 obj <> endobj 4674 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS33109V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4675 0 obj <> endobj 4676 0 obj <> endobj 4677 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 4678 0 obj <> endobj 4679 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4680 0 obj <>stream +hZ[~_1R{v `y0y8; +ĒlԽwW6&y +Bgu骯>~z?-ÿ/^{/_Wxp<<u+PRkZcsqyx{p˫\Xvx~\ ~9{-{ ΁2L'h.x{wh ;w.ԭ51 <.?z8 +?-k۶-k֖/Oav|D8[e݊kdP(gk7ߍ:3[Ay~9&A٘m氕 ȑAn6z3!memK֖@ϫOo_;# |H ,%4װ o2~^}}s߿X#|u[>0|a (u`\euR$5oi!,oDGs.5-Vꚇ_޶й>.o`]z` %}uy`]9#꺥f4m-i7>A{wޯ5o[/DiU-7໬!ZP h-4%a<̛k u^sb<`0 ux r'wHiCzn./= +W $[uHwS]c"$#4h( ≪u6E;8{6Q&ң@' x`//Țr.G|{^420* +E +>-$jx=>A/׈wٻET`Q6/j{Ď!iE D6ºUpW#*Cgſ~FafGIo9REwF:$:oΉ6RP[`TFHѤ݀Jo`*Ҧв" ا#b 5iTFMo(~c=q)f5F%g RrL '7x_  Ĭc8S("U _rm$<JM %{opݰ=wI/`lā?tb*Q8WHn׆/Y j ~I,5D^Ѥ6!S:Y7vx\2x{!hƽ0G L"[}i +i].[)1C;vQǃnt'e1LJO"םĤ%:#<t`Qnr"pe&T%:24w8rRkVSWNoJ-m󝘻t!UKLg#DYŸ zѹtXV6 `lvHzX?ג8\>C.1$ b+9Č{}#$F'Ɇ97dI؇P5꺧Yc!pAM㤨`ӝ?=s)*o- z/q2R5X@F/ILY3}v?!T3-#qĖi(~yo@D3:w=b{`KR%$ϴt"h>sf| +Y@n'5v_L:Gf/Ƿ;0Rۦ>ׁp2׶ر ['XU'4Eb2IpYfrg8θX\5SQs@W;Jfiҕ~v>Ƞ*1ɴjto6\A]E*}ЖqyA _^ؔR!{A<(XH @Ֆ7^n:-G +H6=dQ(w+Y &o:$E"q|"-yAЙ52ڔUXYx歂fsUvPU:\S(_?^d% P,'r5o "nn߂9[#ءy )A8 aSqn4fÑN8ֺ&&s Y^l^~CuV%S,W"Zp4;b`c*d5B[q|*7w1WB-9ΝG+:_qljY+~rw_IqVڵN<֩:Kw4la:wa2oJ \_Τ} ` =GsK89·cSrհP$nD{i4HK8CEKUczs7:MD.fkߓ<8Y@PbKI'"% q~A*U^{8;vW}~t+YQdViSY:`XƷ}lHCQJ7H +U\/rQ +NZ +lZ&>m ]Z͌橺.='-TG˅+lnDj}wޣ_ģ6NZQ3XOZaC^k'4Վn}*?iY%S۪otѺ%B.e&#!C~9FԚ/ɈQl +suI8;L6z3<͋@q7oH-B bp(`N7bTmHz9-VW/^=`BAWc$i+FGuSME0/"s;^xjmNM>VR[$T0XojZL[8TvkC)Xc}Z9Z@A3֣ b gGD1 E" D߆e}BؽIsc)*J萿B>.X Iv4buF2=m۔XM~n8:[ Wz㪂DƤ_DmtBcdv u-l+%]Y!'=r;Sx5_"7t Կj)αNZܟ>wOjN{>ԄuC[ ϛ`D"g˝ > +ԖgP< NY%偺ƖڿXRx#0ԛryATC;5C_-E2z^/{ShkjܕbzΏaTAz}6=S7G!K(7Ő'G~9V/qϝ$9|ׯ ys6>$jϫ[3O{.79&n%*Ž%mgC5 >^|{IB%7z#vb +endstream endobj 4681 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4682 0 obj <> endobj 4683 0 obj <> endobj 4684 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 4685 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4686 0 obj <>stream +hޤ[[6~_G{Gx $Ovp;IN;m؞LWEJ"yxXG_ǏnGWo^|x͓'_~u}z՗7WnnWyQ’Ꜳ+zuZnE_W?3!8ա^h'a5:h (cMc}t/ nw6_)܇~! l,n"4yMn1 R[_)}|X=*XRgjvz?7Pcizjn?}wsw^}xvy]{lU͌B-&bi伆\!5w:zecYkrr۬>::Fܪ/Đ[ Nv{3 +ғ0r[8` jPִkviocNkpyU1vNZoZ62U; p`zB /Mښul(UޕiycIz5`=.5]"~(vr~!Q]+fxBhmLr ,E"f6ȖȰ R u,Q0Ң:y"ڴcʀWR[+q+Ž}+[{ȱP-D h(ڱMJ.]:G+t8-i\ڴ_ysBzFByQWK}UlǻwBKY45IXk0Ճ߸ tQ\ '+Vob""Rܶ͜e+7mn[>թ"5>er6 Vhl2(R,[,>cl0OE϶D-O x>j,aKtbKt/@@ +4>}PpOݫwO~!i +©7S"u[\M^[z^El!3ȱ!ҲsF~C\v]";< +}B: mx`x&|XGbjȧO/9GJd됎 /by/[$qDWvP"bp/ mXt 7= kJXBV!-LI|Eb$(ʇ»Hz2$FS|L=A>:#5@I2U|Ŕx ZDWA:2| @Y` +¾+g+tD0~gLҢ%S), xz23X1HlIq%K%+)fPKDV:rΗ ‹"[ Wq+=5,9cuH8/9ZTrxY:4OdGN"#\l=)0Tnvg0 hP8ud85Bz%әy67_B({u^֑̌'!b yrD*}y2ЙFٯEm:Lڜe,IYNȖ  =1e@;lOe*!,IIQ'i^$z +9Rq]&\W9 6Є){z1[EbaqpU *^(DܰDuBFϼrIe[$ +LDJ"vHdIϸ$w@ =4qU== p ==Ab*[$"6H숤%3 jyGّA4­.,f` 2;#zAs}EXgNIйR H/Zx(:B@hPW"[YB!ѡNǐ8J'4 "ˮ1$2@ϡ f;BUN}шlV,8 JnQr-׹R7P: iQ\*DܷPe+\(B/! *k,, JhT*22"f.VD`9*wAq?齫 bH/!K21g\:K2ҥKH,)wsyp Z*# oq#Pm iFpyI2OR}X4}ċ4"+J@:2tCZ`6 z45 3}hcD  Ȑt34ވ@(hz:S$)e,ˉ 6/j0X mohD)EMb"Wz2S "Os%{Db@g&d8P+ GAC!~֠eH1XwзֈYCrsfr&z^@>FC9c|;ѻIo~Y^yF>7_=j~q|qͯˇW11Ȉ/۷o>{{_F_~|pgLJ|6P\K'k:jϞcWz7\ \[Ohrf}sQ;:㗠{$#Ut@9~karx8&>%c|Gl͐cH8:Lj![G3$^VQ}3IY.g'ﯞK{G(^/ o/n!,#ޒQ|DN^jt. g\: }`ki.# oCje,ˮq.j{,Xb.PU^TbܯFMeY팭 G;}^>{6;g\wgn|v~n-xNظY[.q OOv0ycH8͊}YIivqS㧑Xx@vkko#OMuiLt8QO5>--O%Gm߯{ZSoz52W4{25Ҽf +LZ) DeA;&4_KW>*i;U:AeUA!,ϡ3=M}&}P ~MJ?M^MzyM'p^z,MW?DNJ~UR +HW~bJ#*G^{Ll^d2 +Z]{ =r\_fy-z@Wcqi;zI_:ȷcw8~zԞc>Mau&C>TI;5viBh=ٴZz({){m2@jA1I7֞f< nY{1 ^cjO521F]5cj(L?7 6 0 +endstream endobj 4687 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4688 0 obj <> endobj 4689 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS32672V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4690 0 obj <> endobj 4691 0 obj <> endobj 4692 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 4693 0 obj <>/Border[0 0 0]/Rect[123.96 707.6 296.64 718.76]/Subtype/Link/Type/Annot>> endobj 4694 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4695 0 obj <>stream +h;ێdm'@9KAxvmq< Awmf3kS>=$ERԩlNבDHW?~x|y?~/yuW_ݼ[nRJ\Crf[~Y/wg͛#Ųm/|'^E*'¦^Oz]㫏>~zOo'y9[,gAZ%y<^DYh5mw\TTK ;-(u~ym9p]]̰;nSwyBG,@e\Ic`y}̀#X =\]slZ:wpn-]wfukqSΫOnfD,T*EF)B5k਀{ZUzw_o~҂g`Lk@>`茄DF %x.Bh4u5D")`2@-P1"A);*bJ bmp6QCdMb"g^+Mqh #~}> P) +˾^ +˟nVG L2>.j U?]G}R@׀/ o =b܊6x'FI$  C묋A 6bDtK( 5NSGr;*ö܁co ͖R\Z2|av-u=naSo}:+*[6XJH ^jjP8dW⤪"j A8R3@~uUPşj6DSi1a'#āli&ˇU6QWƇß +Hk~pPWz֡q&Lc}ĔNkߌs/Va1r}8ƌEW#b^hLhR;Gztf&=DWf± Ưgs: D<=@ n;ߐ؀ػt<yz"FuUbED~4Fo2=#o:6~DU`dʺcga砤E 8rzX0\A ,g4Gk5@n _?|8|zq?&?|,QpBJP@1x#vNBeE( +>*AIvrk67k%;,4yL`[mI\PLD/+وR ?X;_%=8;T(vs[5Ƶɰ@.lHf2=JesBtVGU`.ն@焾X=غz@ګr E. ~ZSe^ž-Fj1d0IyhJ.G=h:(vo8^\Mܕ|0W_"w;>zjىɞ +*6YвYq흉!ϻ hՋypl᭓,sh +gŞ* 'ffsfPv$6=ap;ܷ$r\fMb6g*TR Y+@:iNNш)=1Rlc`K $$pma=I +&1C +;"ܬZ!PuA͚ÞB6lV[q]ΊE& +V7:DʆhU2r@"m<ҧHO7WbFN2r΅7db]F=M,a +X12qu7r^5P\cKzr\\ 遾> f.vYjХb|̮XԔi)q\M^!&ﵢBB+o2u1ԅOlsێB;a4G3;w4{5(Xu-N|)^v=1`W\掳ݙșENN☉ԼLV[`JE.K߬*[]F6#g-f "iھ>FT1@c,_r`d Bߠcqw5_]yKcxT6&&۪=51p*aӐEgVkgٲ2pr:3i0牡M"6(U/j=yXaBd|ڥoXhfЄ! ˩EJʂ2gM}N[ NWʼnPHDYr~³_uٜũ:o$FϲhfvSvGD "{Ź^d$.&߮2B!XniȽ;.}>cdRzp4YIs]$9qd;$d2\ja:m{r*x1IV0y3ɘJ6ƴRBegYÁ_㡩 0Pqt0| ߦf &ȼ_t>'Ι0mνf>jbv{kGp6F bD:z6&{GN"ј +`~ s?^y8ٌ-c)ZP& p:KPў:#&m!"A"i'&Umbu@uax- ȸ~Uͨ3qQ' RౠEљ2b:(kY'2D|K_[b^|PmP!V:365E~w1 /xQ$?q4vN'VKO'2]$IU)MD4[{!p-H[GLNΑH?/vayfMg +Gq )g+Y=1_jYR +#8+!#b>}S*J +ȳ ߊ49^]Vr% NSCJ2R +9|8;EՕ5w$r5!`aURlR{k`-%28$)kC҄CK;w`&Q ^G6 *=Tpe4+|?i8n`IrHgX⿻XahWkX>uj2qYu:1bBvȲUu_U,g3DM-KM{<v&2B6_!HmnXk#gqW4*vBL <ǼX j|dgeյ񴏂VUg{Z#xV#6@Zja3x0gѻIhft搋DsF@Z,1Y7xjfx֨..LW~Ka >ќu>#ũ972ICfY+j~] aA部pyبDic1eS*HI]-&!' _؄$Q/qF땛So&+2;E#A`aG{Ȉ gLG"5+d/Vl|MUI 䗷uƅKE.7pT>%M9?r{n:|'lw@I~^GjQK +ڦ s(ٱ|S<8I@0o'$]'vs8RRG*e:#_ }=vEe1޹~KBxya}5gI)&(I:VsR0h-*Ӹhr +{lэqNCT!]^(\4G'|P6%=/>[XCPÐbSe\|s!<8_g|FU|'r_hN qwyL]C {]e&Oa2U T,ey,_(jFsnsM`_E~ +UN,4OIm@g=O57Krt-&&7+i#xrj2ڏ ɻ:2 +쁏-|YxA ,$8WUz*k|S)B"Ǽ~ϰ_[vY%.-oSxZfɧҟۢWt6|k/=s3 +a/Z"?OضG$SEt<}+û^V4H-{(I)_Vt8}xYA :{rSORK 8 ֭{6|/+U0}+TV.+VV.+ڃuseQ `g`{K(#k=4Jόj?ok'G#D.1Hĭ.$ ubE)#atX=O5΂%|=LELkeZ +@5 [vH {ovW/*I .DXX|\b~× kvEnߧOx^ x؍xߚ+uWno^kK~V̫h-;^:&TfݜEt/ #հ4ih=3| ^J eh7{q(n~nPA\TPCֆP7bKmpu`^ R +޽kѲW!Ӂ82{mj@\ξQ D_y_b 6@rlH> utFquPN U:5pe -Sw\ +0\ +endstream endobj 4696 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4697 0 obj <> endobj 4698 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31401V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4699 0 obj <> endobj 4700 0 obj <> endobj 4701 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 4702 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4703 0 obj <>stream +h;ˎ^VM' qA0`=cI8.~UEX KN]wɗӛt>_o~zݺWW/L˛3L -iq*⦛Wi^㧛 J7,.?S-Ԛr(lz293W3{t*+KwTex+@8g+0#ùXA]O6Ph!T; +c α@*j_[M!JPQ`v¨ ~:؍p\;%1y+LOsv㜺ሂ~xmѭy(lLm>R[;o~$@@S'j u_ݧW sBffvzұX4{<|5q޼6}_#l^7h`8}` l7mRX4mo.s(~"algO:%(y~ eڠs7;/p dl@82XKs:ɦea}X@j`{'cd7D*[hU3G-`Zw>A f4AY0RTE;ׂiaH7Q> F!:0!,w'3hB.vɮ#3-q1(&gp"DQ@ZyC@A)*ԕ +Wb, AR $>iGV+ +b&?琴XX.FB9ղlJB Ha>]OS1@'P PS2 Ą_`M5Lynyb܊i48D%a.kA1`h|C3o*~D\;B BfvHe\;J_ +r9'jPkkq6(d,W%IaH%50IX +H#ozͶ0 T*/ґ<TVq< k ƆL&3:4bQ(#Ӻ/ \rPFei>CQ q +4˹2h 720\'A*F78XCZ@ ,z$syqI[+r%Ίb:_Cs?ŝs7/RE#=ed4Zt/ƪ#"[CZX".Ō ]키#=x0y݃2,M51\b;!5eh]Ewq`dl@٭ͨ}#RSASŖvdA@ubKFLL!+8(s-T&bhZu2+{U7'v Ȋ.ԉKsE +ʠ"c3JR9;8MBM(U xR47;^ẗȢfe y&\_0Z"zMkӯr,$0{$a:"vjx뀨̤ =a5*;( `l'rMkӝ;^g tYc䖨|Py>j{$m:[{Ff|بI[gFP|SsD;3+6|شqðgO+^`*ϸU(R*\#Rt7Z5ҳeXGg"AwDŮ @7ht螂b)\k\5Og(BW]f \xt9U$4^\\L U5(Emutic̨O0z}YH8dGN{Hj*]]̢ +s7dkZYu(ujY1eF&F8P.tpŤDiH6cRXà@%X[])S +rDcA3gpePxV)i=*נn0*Un{ӤM*]rtR6AU^GÖ!I]n^倜|  %tDcWTT5Ju* O.[ ZP>Foq%ﲿ kdy b +]#^WzQ458nfhx/qe4p$VKTu Fx^H#:k=8WnjdYU ࡴP3Ü ʻڬPV0cl5K--0j5du %Jy(hϬײ:gߏ.CtH:29,yh +t0 No05 FfG-_5' 1 MgY-#n謒`5My'IuFxS 6ڝtVg.ګ^8&Vu㠲B#PjY hUrycutwkH|[ixp5YX npct;Xߜ@zOhtS-M69ek6bMOrA MW JK 'ϻ;J!@e|ȟ4F~Δ},q_FlɊa<4lCw$it=*:GfUW8cbhW7Zu_b~~)1.̙丹(К_f&|M G45>ZTV)n"CJZ`^n8qnWL;݂e(q#)"qonA1 yE!"dh@o~ e&9wRѲXƖT GFoswԻ mDj,(Uf4- 8o]i$m֥.ytfA>a.[|5I''y9Yή'@<#p0/4k)A0[2e3⡻'_5`u>6Η%'hz07R] +1+pQdhAϛۍxFA&8Խ"ZPrt&r+0\ +0Mz\.~9M 'eU?)wWH4m(T|a13#SΊaH7HvB>m}/=_I>5zצ>1P5lP((fPõ>c)ylo8~)O~q}bK8 8 V1%o}[5|yxOeNƞy7mk굃?3Nb |rlDrݧ޿V|@ʀ#lzo_^Eo>O7 F?5Ig)=(.??Ls5omyog^3a@x̾?\g_Ʈn}ݧr6C3=#>;ܕOы#>'42zz:0hP$ea_ +8p(cO`JlP&L~sG|o+b`"ʡ]2?oP&g`qGek5|io]Ǔ?R_iH29"gX0Z`}M~g yp,@_\YB_Ϧ2&z920]%tMW_|k^*])ګ'Z(EԔՉAi13S*>%5q$i/:Y`3$`?3HqIF?OxC^b!z_C'z,L խ7-[0h@"2׸ # ǹs4@&}b>b7 XA(T]hs}e 6%2ˀlh_O0[-0nЇ|eK}vsV+y^F[LaB pTΑus*)t}nXAc.v;S0!H kn:XIT-`0q +  +Xڗ+w*_jGr3lʵw' +e2:(amBɠ'@T%$(ڈ/.T|z}V͹@uN"" P7Cj8a4H+@N~_j,Z=F,-K$4L:Q: -pI T +endstream endobj 4704 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4705 0 obj <> endobj 4706 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31402V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4707 0 obj <> endobj 4708 0 obj <> endobj 4709 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 4710 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4711 0 obj <>stream +hޤZ[[~ׯ8Nq9P4HMWh X+nwnI6P^qxsfëq﷯^˯7WՇ͗XjjZ,Bƥ%`|~9Xˇ?6/vHkC6VrMH=LG'mF=6z G2ک޾lsG!~rM8=f4e6_6\r(qֺk-F)RSݪ]D*" +Z[fl I!nph"8Kt#z";&©BCY$ y76&SRM +'zw_pEG d22tO[4c-[[\-w޿~sy_]H +Շ&G +!]N."/7܀:qg3 Ĩypa[S}F*[Qxu9bb $ܝ36958/HtL5b5ymeSC4bRgSF 0o1< +&ylPpܩ}'"ۙDbe +74Gjlb=4UF6E2K$o\/TBc6.IϤjِ)D4u +\%x ҴrTR y*O }R32@BI)\xXW5Sb' 2 j4tIk/o LE#!IJ "c=jCBz}0doUI;۸4h)i+Y(n<:'YTe841$.E-xdȚ +xq[DK T,:T钹u@<i֮joܔEeyg7HomDE4{QxQ-8\:zC R>`1jN9cn-[7 +|(U'l`[a{rSwJS{lHվ+˷ QrmOT?Yp5Jv9_{1{i:l| 'ְ/ͱ ͊ۚXYQ1wtoV6W6ݮɎEJ^@CVYeOkㅓS8~\Gm?Y*A0j~ST^~Z(?v/dfqI +}Lm_J204 jRt-~n*!i/r؅[]b;? ]b +i:0;Jڣg$6Z6,Uy:rMr\|p4O"u>ıLx+x'(w[=d%[PWK7Mhy9 !n++e>*ڒHa}PloGRYf(90y 'qdd2=qKPv'>K%(rMKktwS#1[ǵtMqUcR!xg`="IN5iut_=svPY3v@"8ngm.Knwċur~w}3k9Y( =˜*ؕ<`WS.gXmQϰPsGIҕϒ!6+戢ȼU&]`ƟЉ=04~^cu[d4/> rեq\e{˙mqȡ!8.qbGO?#bP(b˧=[O\=՞tD)U.wֹ,t.'A?,}­gW["hwrԻL9yTå &*KRvӽ=J~m_'7&j4qH!b?pږ`]gK<cC x W>_ʖiNt)'O0Z~7TBNtw;&INǹD6Hp2tbQr$VYi)ρ5́ȔuQP-c6P4SkiWDꡭlB@ㅤќ U91?9ctZO+`8IƟub|2hm&| yE4N@ 7 M;9<\9-z1I&wFÁhr оx/} *3 p4qۋOS(oS7eġv+ɱ'.ioa:hM7>GIF%H&ޔsn!fϒQT;j|j\ "`?~&%riا/S}7'r%y~E<+=ipr0k,(c q=|6:\"*`luԛK>=;[jE7$ [I (ù~^L\X|y?[GGoc@"qhkL=˧'%'=a.NhM]=a.^ 甦!\s)zCJoyCiEx58as%\Mu]H\"m9zg'AFvk#%kS;_K.MuU0U<^yko'n}_a~Xikm[zvGR=AҫpQO۞>+?HɏbgS'M챨dM h"nQ'eӤ'laF(BHgBm`EAf`~/LJw_?/_~D¯4>C\g|ըw^u{|ѣ6 +AJrGaA G̴3̧/_ߗu.3=$FoQ}gV:"QpyRl H)Jbwq&41DO9xc=zZF`Fof|`i蒥 +/J0B7kn .8F8L`8#R4G/ٚVDt yG):Dr1}=gRpZ;H* +endstream endobj 4712 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4713 0 obj <> endobj 4714 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31403V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4715 0 obj <> endobj 4716 0 obj <> endobj 4717 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 4718 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4719 0 obj <>stream +hޜ;ko[DZ+Gξw/x r&NPP4eWGRy!)' g_oa>7盇O.οykOg<;4.02ؘ2On;gq.wкz\t?&mVak2&ڡpXpfܘǮ.]V__+%2H8Gk@z9?5ȨnV6Ph#{/SFēH5aLЁ|ky~H2wk&A~&pt% L;Й__';$1y+ Oqv}&$q@x,p8n9_uuJTa0FBxPzG4 ؔ1f`h,ovay8}a +qo^kD4{<r50w[PۇǛnxOq=ƩxCf(eEPHVvC)p+mGmGm;nj,.AˏS6 l(&g--'BlGGm9k0 lOa:dX|mXa}=9`;VƌoԶѮfF`3 "'prx1"͔ @YzmjR'sP4z2hi_Ho #JPr&g3XB.vɮc3-q3h&g pbQ ^yC @A+jԵ +km&P`GiVjG޶v;HCt&܎® 0 +mˣ[n|6 #H)@OaʇJy` Ƅ^)FiOg<:R3FE4O0$`c4a7,/H0xb[(Ԍ0K Q^۷v<+}+dY*hVy-txؽ*PBrO +FM)KV@F{~}~`} (8$o4 Fz+yIKnt?{m(: G;g_IT+YnOSuԌSqcU}|3 `1(y +`r:qE6c\In~O V1L/U;+,D;\Va'PCXbjY6slaEl, 9[qpS tF0" +61I$NTyY`0i{uɧׁc@8)p1N͋KzX$1xz jO{__0qhjBȸ2`3 ZQmlB+FČѱ-![_Eٕo "y` , +ٶ۟C3IHynJPY%Sć ? +*dtt͈Zp+0@Р_,@ N:ZY"gW'tdYO%gхxV[:hvFH>b>VN/*ܜlj{,>`s +;$.6ŵoI~jf}$E58[4产XʄJ(ʡf^p6FXz ΠJcI7v)]5sI'y+),Ä(}9NV +[udb:lGf&j^]/ <ۍX>6dOLo97;ܾy(/ UNT !&IR6Gm"U 40Ӥlw<\9L]rYK%nzAusQޛW˄Q ^tˮRjAV@HC\a mĭVBP$4@ijhzt6FhYh6|l4Ƈ— V`Kog Fᮓ|O׍.}#fFہB1Re +cӊkGl/'b嵖tGqbzY$ 'DnrbPmilR :dKK>,FNJ0T|,?45mZ?n&Hn4*óke6i=JJ4CMXO:eHR##f3(u0R)z,qoblc'$h '0^,[eq'H7Kiyqň U9ʼ"a["J 5r`WUjbvHKSYW3jʉ1!wHY% +|aV:y:G }E@J冞ݧTIYJĉMXj~(&,k:T ) ՗NʉLhANAcZr!2,pvb:Z(095|E۠[wZ"{%U,߯kNYaVn#L?v_a׊-ƄV%ci3ŖJJ)JJ@+)ƻzXSj.sT%zGUn:[?$ScЃhDm Ek" ^ s>IR*׼q'B0jk4T%w\BSXjJmllB5ʞFrT +ƧFDSt)AFjۅRlhŧF@sPSa2aW@ݛNnlō[1vXWNR*(O0ƞ)[ig1"A,4DlU5geQ,o%4>_*CbIְ8%>B)ql6{#a(tEPJ6͈\S} +?gbUѴnHvZSqB4%5X;Bg%' +xUcWSLjS+2Cx\mje-RgeyJmW˔&eZ21M;dI D%FE 1Zͣnz-4d:Ğ]zIOi07d@gQ.F<רkP3UBtPi5hKKvNn~(u-ʪM{* pV +@Y*y[ zpt\Ϣ7SnXN]l42}&DB/nluwrHvJ^cCKhqT= ׺^KV̘U7RgjJ% ӫ~r;vF8h읞Y+uXv)OIJ_vwpkLNz!xߖ*iF'u;wsը_~io?[yxrlKT%Xi1nv7/qgzE]Dm~K'U?or{4\㬇:#On3? @%_=h2r7 3ewX#P͋Y"~~ ~ăsisKC0 }=WðH{UPƴN('ZcLbJB+Ԟ|;'o3KYF F.ʢo`_??;{"]{Duŋyz7 #۳GԆ6N5Nb}y ؔ8mge)*ƌeɟ\.ģ6NMetmcM_YGF/+cd>Z!u;p")#2Z|2YqN> gFӿ +~~i jg{1'tb=n\ .f|7):4޻w;-qǗȅKdU({=x8Ww|:tL e &(΃ &Cȳp>g"{zD&| c/^rduJ$\ c  D@ +sC2xpOG0ndE!B<*ߜ'K,S,[-x A~lbw`RNp&TFN@|7?_X38 +endstream endobj 4720 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4721 0 obj <> endobj 4722 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS33110V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4723 0 obj <> endobj 4724 0 obj <> endobj 4725 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 4726 0 obj <> endobj 4727 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4728 0 obj <>stream +hޜ;n#IrzRYFnx`?%[IӋ{ǙG6F;2 _޺y?oO_pu?L/W73*)v/qmn\wx5taoy -? ~OMjcn : |DZ8م֎)]ؙ2  9n+<‡޺R1{9^<6"#(brÕ 7D R \,6{,ց[fE;yp!'qL ؏qe}A+W>~O37'|x|zn~` ` 97XxJ3xd^kOpM )J a__o/K{|x + X*v , -L,FbGءwDAڎڎڶ7!H{k]m-O@^GRxH9k7B/SPR}.L). XÛY +Ē78 dS!\snX- g\3ȷʔVNH6u@#mɌff2xD V,q3w,|`U't(F ԒI[ + 7B5j+rSJdd~#jFD8:ҌEJ|VoeյXή$[kDeRd2 #u m̖ċ0ESgB35Hm+5^C{IDF*J- .6fv77=_[=U@6А h+Nf%'ETqOsW kad2: q"$/Uhu^J}ck㣐Yċ)35kݷ?.AO3@hm}HBR LAV?YNJ*]aP.kPP;IȌq($1Z +; ÊƦq5pHRpJ ,@Ű?.[{K Q2YtZZgebbkNC +Q($0<q+tps˛5\lr.чӦ{~>se /1,MrB|?a}7pck~<`޴ +U_ߎru6^m>]9bct?31>ׇcH/>fya8qeŶ!8u.w]}^w/[ `s/O ۟I6ϸQ7a;2ί)O׸mz.v|Sp; ?_Z ӌx;~9o g=?機x"5w{q }t| O+4;2E *) w䋟is8>-n7yGn.#zM| L޺-sn\SxO?rñ{C?~gq+p80ePd"Gu}a;6;=q:9'%Q\MRBFdY` Z`= P#EywSBLL__(:p(z/v'3- ǽtn^!n|Mc€@#EG!^;eFLʈI1 #&fT11Zf q@ 9H$<'RdGaQqS͌ 3~c}Y|4"?TM,:vYq9 )Rc,b!g)YX?BL4dV1kQ(תͮP껖IC×Đ$<d(|][o|QL~' NuwHŃ7!J 4s׮wt`&4@aC?77:3rޒS ͉uN)~ S͊X]RTV@aU4ǩN J) έwL yhLS;9Ø}Nz6s)pϥ°p^v3ʈH/ii?ᵟ/x:b\ +;Ii|O/x[4+Bz1?׷j ͓o9q0Jf &yJ&ͪMKߌ-U*cEgn0[GYvh6'V7(gkzU4)SVkP3po>59s* 5ӲU l B䗶j&NLq|R!*bVmVLSXO;̜CZDĩ'u^H)Bm|~h&[$f,0ٞ+km܋WNzPo^kt8{.yX3n o"SYtŜ[I OD΅ek褪na9ѯ %*& o7˅]4 V釬$X>ʖjEy(NY ֔Ԥd*:ݜY/zܿDsyo4X.2xCyCDk\mbqg Pٹ-~UV@;*8 +u͑AHtZhsN]mKIZ;uV~j\8ywB5y1²DA/oGi\4*o/R`C¥w">KtyokpS7cK.0g雺BI:QKEXb]>S%E:mec;ggDv'y93ۥfvsJ'P΂D/d u(飳a&U'}&3PJ̙ !c@kTZ(KKj!I0:=5'S%Ji,UU2ڠ"]iUS@Θz? +{=`k%M*RLEyWU{Y +Rs}vz{!kQ\AC[?;buUR$ p n9JlB_9_";ȗUQ˼D]ݱI{~bc}vQ2}.McE R `TJ+bJGչm|[2OcfH.wLVmT\-zz!goyě/Zd눹UHQyN]]}5()$Zy}~WKW6߅]Ĥ3;U0y G8TKIU26E +~pl(bg[\Kua~n( ug%WǼ&odzĴW[#,|6G|GYW䂿5u~QVo +bmSd Up0rS)\4s5w]]Ḃ.p>4^j[ɭlzbnt!\[Ջ,T@;(Y?٫-R/mE#$ǒ"\j۰[ׅL/M_Wf9gW1sIl4hW@O#_5V:F݀WI[%cp(y,agsfGWlgx#?u!Tq W7|q7O4^n$%֒"۔Ŷ,9f5Ol{"rVE! N.M5RJ5rzN3uo S +etz +LG Գ)EU9)8K]$-|jgrBA cL**k\īzjo4fB&KGN4 RD->Օe] P-~|U_ٔN`?_Jh~*&aT#JҬr}XkC(jBW}\zj8ISI.?Ws:ẊZ|Wsf )._>TW +endstream endobj 4729 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4730 0 obj <> endobj 4731 0 obj <> endobj 4732 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 4733 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4734 0 obj <>stream +h޴;nIrz t4 jֆ d 9AIG #2nJXMWq_Or<o_x:w7'w7wwnqM[6->5mk[X>l/7u\\vh㶅6r:CΈNڮֆ3ɭ?Xtl=+޵e?hR*A C~x9ۿ^鶈g҃X>2V@pFrsϠ_}zǗ3}K^/ٺ:A e<"zҕeyv~u)qBV\Ж& u˾/TBlsj${p=e3N-Vm +Wу[ߺz{ۻOuk0pkF2 ҄o&j:yM7!WO@GBz{D0OSK JAh  j0lFE< %xnB<X5Q d^yB@A+*ŴGk6P`G{!%hg^;.LqhG T: vL|Y]+HW;) #'<0okA/R 078SwMH^džG{3gEt5K<&j +׃caё}EZwlK3*45kpR)(irl+U^ZWyoV:"\l@*tPi|Ⱦka~|#Ɵ=;t=Bwf|w* }0cmX2;r?#R?"W) b5cGȀh NgEO QN>NH~aw<ÏD3 t/STN*80΋G—U4a +% F]*sx#|sސȁY:E܄P=kO1>TtOOf**w%%`eMaĒì =Fap!z LNs +[IMȫ]X,zZAvp?,]2.cEĭvu}HCr5vZ b! +buUCF'bD: jM " + H65-.Ba3ÿB ?sQ ʾ6Ļb_Hz@œ*!vCoi[DEA塕dgUdhZiFӐгD˭}엤*j8^V ՁdH#.uAMRp? +YAg +rݝ#'|B; iWĖMPu,dvh>üm&’̢RAW62yUC9G'$$b' }%9Fh؋CstQ h؊0Kev%KY8jLx-ce*~~XI\cM@旳OO4:+B 1 NWfē?hi 9Smi*Un x +a9ʖ wՆhP,׹qԓ0Q +s>,Y/C[,x-SGe\`<ي:69MqE9 [L+6BƘPH;`;G[櫗ݿ/ۂڤ ^ '9 B=rP.dyuxwCp[krf %VMdc70 +UT32WZ Ȓ!T4&R*G/8̳zз}mDNV9pcY/WbPyjGϵі*Ԧw}DL4f&5i7sDDT1!),ҪoVΙ v ގHA(^!b))+YŇ+yO +ZTL8.'$9\d wdjbZFSThNlڕDLY848R4tҼjuI,?uWO')Țfe%ME"{2]PF3*:bvEgU\!Y'-QT v.Q9N[^RM9@^NPHb]HIOAopmD~5@|-YyD{Q&#, FmBz\x.*υ5\7H(S2иIh +WCq$4'|+5i|l1rRwIu(df?g{j_Û//4e}V[~0?L7WKyz(Xv1o@9\s\4}Rrkxfد@w1J؈57׻yFIQ_Īѻaf޳6j2NL63Mt4-!Hӵ_b@uog6 F}=0q= 'V=㪎M߰AZI,R 6O2gNHq03se ^3ȃ,VM8aԝɻUQT6Z8HN&9v}DyRc͓Rf`D~`tz bM9@%Ӹ#90؅Ym07Z}RXp'Q$J6lFu보.c,aLO`G7x*$ft&jMj]ߦ,y91ϸO|Q|,VתYU'M$ńE>$$I[Df^nk;\!͙,PL2JQ`$Q+-'Vhx{*$ 0q0QSqUOXL@kn͢_,n1q;u~3ZPaČzBpR= +z 4|lGGȴl<~JM@fЛ@Hd\tdO_OM rew Jj\J)4n9,xV3ԘtT齆5'/vSzKQ:6/Q('x=zy5Yͮjtf + LoG^+!LAei;3C]`w:! ǡ T{yq.rIø_)> i-Gx"ݢrA-@u^e? />stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4736 0 obj <> endobj 4737 0 obj <> endobj 4738 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 4739 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4740 0 obj <>stream +h[[[q~_q ~{<ۧo^fzw7wwv2MK>bmRˋ,ӛyYtwﻟnm%,>-K( o3Cr[#.<۱~hG.9;J\f 1dۻHNc4[WJfJӇÍ@\"2"",3L͸&JbaDbM-s0Pe p1#{ךAn|srl L<xwz<1.NAo'i*Cwu4%{34C vRfhN?^==>}xqs߾Goh@aCp/,,;j=hoG);*;*ل uvsq J~^_^9GK4j`]0Q?}9X^"p&s-KU ɭ 3'y&RG9:h@H8pj8ۀt9̔iba<hK<CiUa׳?§o#|hڧ&ԝ;vh;%LSv>EF\ Y)B8\ IPF&A)*ԕ +cl8{(SѠ`O|ERZ8V69T+'\64(-F.Ǜٔ%A/d'5|\? >T. {a_>%dL ,Z #-TQZQC 'Éga.IlRɖf!ް`~Da<о@;SCò#-,sgύesV[JaZݵȪ`MNX|, ۟o +ƍCJF_{Cy(QN sD]vmFוㅤPJ>: HCk`="X(pF# ǖ.V(\zbB̩໘gcHf " bɵ"s#] A-iTn + s"ŀX;KHU$"CnBΔ5ۣ4vayyG'H$ Gח06<^E+\r Qp2wy%KIЭO@ɇ!ZVXR)VZ½,MX*.VT,@^YkUEq2*ƠRIo?zJ4nxbujc/d[w]Uxhk7MF;UuEE;=8eRhm0v%j`"o,k%[8VSg zO@X8 tGOOVO]x3'US,G^4?YOrP6ee wsj?tCS<"4)S69Ab!RV"#y<[ق[^z_tKqrEK Nº{1cpELTA>Fqh{T<9.&·xQѭ5R+;j/ȚBH Drxz cLB X| s"/CԎ^_fX&kނɟX]_X/jKW8Q;=oϭ_0$藪o97yïSgK,9 Da ~->|sތ8z7Pf>C v1|AyrzI,ee1\-ǰ$!>k[LB>wѼ_ywWVA$?e|`:jʋ5(Z<շ3XѪ}0AlO \`: &ЏՏC5IX@b+܅{D e "mu UXv÷SqK*EeTIeY,C'yej $A\ҩ,˺I5*%"~d:AA- +hG"v%kdfDJu3Vq+ܣ@V@+n.)vN ȲDK{|Q!ki\8wgp/vD5#90]/#CM\`K+/ ٟ2a%a`pc/{уlg-CL`s4mGQ-[H;`*%}ozs%{yfY˽߅jQ:Hn:PSp1/YshY_ԧ]9ٖ?FhS|/yYap~mOeFE5ܟ٠d5a1(& +R][[Մ'X|6*YTֺUkվ}bDt4+"8qMǠ=V8$}/rŰfU1ӄ+kTRѫ/= Oj@IU_x1F ]kZIx}z5 +QêZX:C"XCRWjmBн<*ta0(pQrSl.&o +kSP 405kOFŶܢk۽HO? NrC/U |E4@oAi{< 2f*Ϝ/X#峇fʭXzs؋-v{8|lqs_Wk?eݗ[c8\Xc8\Xc|v`@vȽ_ǯvkL +?wW^/WwX~qzenW5ߜv-'|=ޯOtϧ[pqmg>qz|z/l紙=pP{L0=%-/XǡE[b1,QK?շpۏH D 019 +endstream endobj 4741 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4742 0 obj <> endobj 4743 0 obj <> endobj 4744 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 4745 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4746 0 obj <>stream +h;Yo#qHh~mĉ<|EQ~6$ВGuUݼp<?np~|yӛ75x۫[5* Ka~HhdWj;NZ~Mq7A7~F *bk"v**zƄ#^ti6غ33c2~B5 =pގn(2%H[@80NAIr9 +טYWXG??)YE#LՐSF! j%; OmmG\no- в|pqT8yMӡ0PԷ5r5=y^J:҆*ަ*ko4~Q+Om Foq8s{[hH $ a]+M BYn(jFPo5 *toHo (_ G >%7L` A)7O\͠Mh$뀥 +%! +m<Z^Q+=m5'BZKl(Mzw01P:L]y`42ځۚ[fjT) ]AF'ہ( _M,_SWH?PCPӐ?eU7i2䉚g(ʧ"XxPMԄ1L_ /s :7~Xłi&oGlse(f"aJP[Զ\Ss;"ҩ 61WQh8!P k|Á}Spk}Þ{!쇳{3XT`ѥU''@pVK>аUΆ3{<&;A`+}vǍV_ba5FKи#&6dJB 5l3F /$`GsPa^%>jjѴd>IqWB3$p2=06Rml$r1m]gq6]$ޠ;&/B*z0H L&ծnGbZv;PV[Dh%"HƜ" +*JFDI^3`|rI%̔ Iq9pmDĶ,U"Z$Lk +iiQ(`QV'B[+[j$(( <Z{q&:83#V'H33򁘒s/IX8a}12PS߿O tas{|px!(<^|u†^Ok@mm/'|{n3u/>ޜ?k7SFŇ$τޜ jlS=k:c$iIGr, +:_qH7~fNbܿ d<ҀjCeZ#ytC +J#4BtNDD.h sYc^p[rFt9IPiEEeceyf5r,V{ +2& X[5C=V~h75h]+N(<7I9w ++X)D{e\qAڱX8(Y'XW1]M|K&md=3"M|۸^-I]݂N| 7V1#ŏ;Q`m;m=?V԰V m_)aSaC9sb>ըjI^Z>9UVĵ|s1Zh6/%/pt<>G pV2;->:za)zEZ(V,g/oWqTQL~=,T^J>QeM.J;,ӜŔbx9iMF( +w# ~=ǐQ$+nCoL+4|(fAEL !tXW,CW ŌAo[4k[gCKW@H4w*tW-FǞv/ikPB1QzZXO7 yl[bºXݪZ1$ѷݵ!{)<U68"BY hrlD"4&b,hEN[8spV%/cqV}/ K]^u/y%Ugr-U {ee/pz7+?)4o[vwp:&p髢t ++bR7[<.ށy/ъ2jyZKYq^^z%&?4*u|)T<˸r,N/KR}jfGx"׵dΊ%FGE'q` AW$+G\_gp*OV(~KWpp`h9,IlXq&ydɗ`f;y\wtcъ6jBy}%/3xd{KBF/*9#~h{+\O$a]s=V;d u~x/z*mm= JzeOPҮ%.Ed}*ڗh>/4O|Dvn?{GY׳^߳˸)qlsBև6]ۗbV{Ӹvo2Re.{$E,zB@Qy#Oy{U:^Ox w~|_ +|?yJyΥwap<Л­?/y.6zL4y=>\+|S1ܝNE*6oQ +Nqo2Rz/אf#D{|a2YWq~}|vYHʨ(dX}8X o<;<摞jçˇx'@</MT!_A56xyxc6iLSy{e~zyd +GzWd,naǔ;!B?";"nmvD))L#J*0[VOZ)`_ χ]܃={˵Wpn8k^ ᅰZhN{z+ru\N-b-l.IG<Ѿ3#pQ8`9i%]Z&ā'.~܊|Lr:LboК_ɰ\u5)Xӈl@3.0u87*mw軣a']7;C&w{D6d1`t(WD2Z4+jс(Si&FugT$OXidmAM58Y%r-C+46b`U2: $i.>_\.=ȋ]|Z}/YKJ' +;^YERlN̞J||[T73Eڷ]ZR3!ә?ESߢ_]ӠYF~!BqTi ^LuL`Qcb9w:FK̞ |W!ywtmklK(ZnMG 6P \=1Cl-&:s :*F+%ھ.2(&CΠYٍzJQZ `3WqXES +0vC ꁭ +endstream endobj 4747 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4748 0 obj <> endobj 4749 0 obj <> endobj 4750 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 4751 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4752 0 obj <>stream +h;n$9r(-TNv{ aRu[]IӃ`DZj{1hUAOWӰ^_O~>]m6 WX_\ W<8L|48G7On]Mç8MvůP4  F?S=K9Xj 7P_A:߉a;OmvGEO͙M9N]ؘѭ\r^Nj@Nca.<><ՊImN(2"#'O#ll536ܜ1`ŚZcoa(T6s9ImG Rs_k>Xy8@Xppc i&,CCp2{36Cθo3??\w}1G@8eo +𸃁@Cb Ұ- @;!f+eWv4!p̺`gcv J~f<<awv-á-53 rt h>\ca,Ot8Mcs-3Z3,'ޙ1c;RƕUbCvjaqcD4i.d;Kü^0z6cT0{Uaz4 x/ķ~)yg*v|m!:,{)ߔ2l S˺f9V[J6kz-Z*Mr#ϰ"#B6X +H Qǟ>?*J +? 8DmֻfJSoThzf ZEZ,`uqs|܄ѣ d@NI< fEsH<#Z^_l:y yvFJoa ԳӃ BP̪\L>3. w.73ͨ7lTn?o۶ĕTWCO2!{6`;P93A̋k0Қ x]ki_mwf?Q|A %XF[.{y-xoF,ҊowZ9[ShUE7N_n7@(F9- 5L}7`-2``Wܢ,ʵQG;_b؏a0 ЗM~\n֍t[Ģ%5B{ |% Q3! Je,%ɴ!bR+GضvlV[+Z  iwZ1v"HtTcҰ`D [/B5XpmllhBN2ROXFDb K{P㙋$a#rL)AJR(= Bdŵfy~V 4$'Lݶ}co;PTdƠ4Ĺ&Ū)5]ќ=M7q-톙Pm>7q46E H HtT'U`}vƖQV +6({`RFćB +H~pң.obpEuS$:>{"[N[n[-7C +~T0~0+Hҹap\׫|+.WAneö +H,YpVjSDOjEɄBW܉eK:,-GDbJ +hTal٪_^f*6KERM%5)-뤅g~GعCJdP+egiki. +\{/eg0\y}_oE-hfcA+7+byfh2, +iXc$QI`NDTǏ@u˜ϊ4u1=w1 {)`l".K#:; $kpCIy}E68G7V;tJ**B)|h>mV*ǡmAImՐ,vZ7CP~d1+ֳ,+w6Hjw[vjHrټ\ZYHl. JAsIl[k۽cۂCWRA +;zyzlP񚶝C`ƹ,4G$0*QT oDy9{AIt"=N.=ՙ<;׽XOpyR-6ɂީ "`Z7M\ZkuZmq_tˎ3nUQWXjX ksvj:Ƚ3*~hܶ)نpWi?4w*>`EZ gPÊ]q4 \Hv +LnWGٱz]4{p8ARϗ:fi1܅Ndke>v\QMca +]365qqD|vY3Q{2\bMCM2|M s)l0ۈŵcK"q[h {qחM .\[ukx+#TokĘkӪQ΂"Zp IJ|jFƋlk>]1$¬}$KvvYOOV⠠TBWN{|>+R>p"yлj3ԩNyxF1oi?/;j$<2ĵљ8uiE^ל`թ&=<^np?bOSғKvU'70w=cʜ`~tPf3iY2؞tLA:VZAHs[rA:RWGf"E s\JSb'ϱ[N;6UxM$)I;IBRIM$};6uo[t~'鷒{5BWUgx'q|8>,q|q|$> +<|3q|U+!|t YyڟS<=K!Bũgݗ>~) F+Nf'.O׷a80tZ.d¡ 'mt47('ßax~|s8\=2pkW\Ĥ#3pn|pJ< Tnߝ ;q@h/T~|⊻{?veG)=}Ҿ +:_s2ʭ7 p8l~~>e/pt!m .~nq (Q!Wx-ɢVC4Izc*~wge +_i`hUSp^ +^O/YA%?Nrtdzh?|^tpeg-U;xo+h ڐMe2tnM[?N@%ʮ{I- S>|lҸXr JWVdy޾stηp=s|'=_he^ gNG8:871>Oij +咒m!7 +LMD$]S(ԛ+ytIu:JP : As :s?^~ +endstream endobj 4753 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4754 0 obj <> endobj 4755 0 obj <> endobj 4756 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 4757 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4758 0 obj <>stream +h[[odm~ׯ8::u + xg6Ab;6VOkF.kI;}"YsNK^#؅QwY$Ȫ2lWxLJ.싫˫+5, Ka~Hhdixv1NJW>z;M + 7jUKSn.QY݅ީ1aOS/2 UZ sWjwLH/@Cv4imD"uwCr)/-`kSP0FT0롂j79GX`v{ωY~:S L/`|8ڤцt<9cP;<&=oя,hSs];]0j7zMB X~,`PhAjrҴ÷LJwJY7 fx,MC/T4Zб8z5\p Og;q||xt{|y= O0g?ag㔬ʌqjHiI>Wߟ]it w\6lrY9._h3Z bL&@ɎST bH:QY{u5.PMX&I}xsp92yU5z-p jط=A @fya7EFrJn@͙o[1%ih1|".`4 .E"U@hl(0@-32WBSJ@Ų'l; +y"K]_ɎхReuѰ*-FB9PYS>*+r~vȜ&8 +A'X?PCP`2Dn.VOEcē0`Xb0Ug䥛z,6粠l@S3E"UsXRecr:[j4-CCnESV/,\[ް)B2tl?x0o +.5pIXr(Ծϗ_E_ hAc ZY`ڱcPNM9՗pY@ @gh3 >,ZV1qtƑVv~6=A䍳mv|^K9YJk#7D_ZJ$z(23&ӂ\& +Dęqo+@A<྅l :6| ֗}jYz)ĝ ,U+.Lcj.Дd Kl:%#Yr~'.ٟ*,3e 1 FAxyrz7p7Oy[?6]R+TjGz5\߾տ}?~w\txr|fܰD_)3֌i#z +^0/٤9i(#֎'\H&"3ëfZ-;>< [%%80.<YW(*O-6y>Ug3'$S&id+EV[cjT֊R?KoRu +#mqamӘNc5I%ף:f[L7dfm}s q^Z"c^9]  k

›OM!+.ꃳ{ +{/44Zyrk#SI0Z;CA8ĉ)+Hxep0Ghʑp!q3P].aP8CVc%Ri*Ƚ{@9R2$}L=^h VB&ޝ_BȗǩdD@WTTQsX(X^wqjdB)b:~F=(VڶK2x9VZTj՞=Jx;Rxn7eJ5]iE˗58gBE0؛|Yl +=[kО}0v 'KP&{4EW"9l8?6K3.ꋃzc/v< hLM!# +Cx`fn$H7O"^PL'4SLNlՄUTMBMe;nDjd;ūF{ Sm%/LM`cȁsdmqdNvTVB_y <;b\`svԽd)umM +6^%&r,#'!:PcJK \XēD~[v|KB2đ 𲡔:gȾd.ky# m![ +m=fq+&rG} +iA2CjtDZ)cmsBI/iy+iǕ쏫9f+-+隔;Vj' +ɨB WСsByv yF3D(ь;x)/gY3B^D氵Sӕݾbln]K6[lKʄ+Wk%P~TKaXߚ˺S,P}zQ, yޯ% n +TS ~~k*B ZM'ĿjK !%a{[tM_zBQF4S)A+ 8thF)ٙ!Uب4?{ѡ aȧ +*P29Y||{ʏU5}3 Y!󛍒+6$뤅S=PЮu 9a۞mѰ5xzHӄ+%16M+nuzXxP?V\(w=Ͷ|7V"6@O[7KVY|+3O:@+]k ++s.Ngz1oŢ[NaŒp깸͛M>j˚r^ !Cz+׆+uPWM 4b?nHIHx6q]LF24/DR$Oa3R MG); "F0 +U306%'\F:"{ƣISv0de6i-ihYϲꟴ~VLiDjT8b I\O 3%:c1eOYZA6;SSH2u 1Eex!{H-;UC!tVháfZ"} ~(6YXhOմ. cʐA,jTQE~SN,1OɇQu@uђ_Z.?Zo)P SItf +gahgϩ6-*Ŗ:SYMo<6_'c:6 7B ^ǟ.[պ +[|%2ß&"򤴔{mxS#>/ˢlq| ־qV&7]fABt.VIKvxEE)vnTD٦|K?S9ne$Fr KIM֝}&aA]'s(`'̝~wᬛ;}]ft#HOՖI)IvO%;@q,yUi]sjٮ=^n[ӴoYBx>~%"Nbrb +^wb}Ɖ~pQGXgaͅ%G($v+϶2|`ˣmyjmhCƌmc1w6n;^>gǧac_7_)ҮcV^UT\x_ᛧ[y=<Os?Jyyzg>9?P塻%=?m(X;ns&nߜ=WR+BGr$c?l/^>QK7H:̭wLtc3̧]K?d|3PS*o}Þ'fA.e ^H#>Lz='Dum yKM~,?SMzWm&wv<zSz<iZ2>CSůq~$1^Rc +:XuIr{ΰ]InSu6tfssޥ)\hRxP'87~x] pSן-ةggYJ5W_^|̝2k6YC%+kW-bWg_~9{ +endstream endobj 4759 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4760 0 obj <> endobj 4761 0 obj <> endobj 4762 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 4763 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4764 0 obj <>stream +h;ێ#hqu.`lpc <>/g67]\fq mDIvS^_op߻ywW׿W۫Vw]>nŇ^.ۛ8nt5tW0n%NImp㶽>ρ |L﹩`aYkXݸZG?7 +$PI)u )puw%d8P'=3#IC[&ެz\9L!*YalWK[*ze#ʸs!GsU0>4Dv .`Ѓ+|h;Ar-Q'0/u{{e=Nׄ=.D@Ķ769GUy?t"-Ӻ.mG ^dcIpYSkT"2@up Ut)#9GMoTmsڰ-l`@ږ*B@KV=,^$][Ѱ)CDf> OGGG[%7y;l4.|(^ʊQӣwy=_{%įW}?+e 9 o5LAXXxnkO1q!@w?Mpn`~wC!**\"MJDM B HE!݊GFHpCt>(8L T4tI Px.nS3X![M,:u;Y55Br oН7m]o8T/*sJa\#Ҋbu +l9o=5ܢZz0YDhYPǀ)nl(gXUMl ) P#*Ё1hcLI;8{=*ͧ'QlJ9ɴdrَPr+pYH[o01h1n ()HșlbBڹUvtɽ̢BMhΏ 6UDAl%PT62& +mh@>d.?B\%Q~H)wG+ +G| Y$idӈ~+<T7Q"UmĻ2pIqd{jk>17/q]d;- *;iqgDj"ۋdbbI#uu϶抵Gvkb5q׍l;Θ-nJ[䨐&SbX* +W}Ffi(r\"U}S^)Af$EOK,^ps;,WA.[?iKh;,,^y֟Je,xNŅ|}!yn| z1{-|:IfHf%qƤ138 +\͂N@%0 acElWbG:$βYTrh;E cU^a›J, ۬ )6\o}x KP Ţ"\`А{būrɛ U~fu -^3z(.=}.T2%e3?L•((sAȆM:V^labZTH\eya|* hjYrVAʐȷi0±l] iBAӵт*“LjigBu7-I3D!k^6@U9ds=h%%&m;ZhُCպؿ\ȋf#:2\=OQ nV7btFc -;1]4FPFӸnVAp;HH +k@)=ʭCH8nW[&USm9b&7'6lj95\tl92#=IkωMB:`5__v\ż0l:EMu`̕Df(SَDj)aȃ+N ~:MGٕM]NyxR1ԑHK1`#U6\$]L6R0K/;<3/HUQ06.WpwCC ؋c0 —ZIһ2/H5,2/P&͒:`(MAB%u^=KJIt>Nt(Ft0H)&Y=<|6l>Nh': tq8{1c))4.f 856Ȝ] a_-*3vnRTkFߕG.h8ܠݜńbuL (ns΀0}_^wToHSt}vzj&בJYqDKˢ J-R3,E[W_x?vNŔ)壷iTg+t"p!-࿾ hS.lCvJljp]RwA웎(f#TLRThMNlK.`0R<䝚AJLv)4+^N2Ň%Ztzx"UC}aoOv4wqR=2QT 3X [qY?.{2er+$LJnhF|TM﹤g@;tn`/>|K B-/6e~߇e |Zp&iL7ªc "_Vz|xxqR/^>>-42/2<@w5 ++|UV53N]۾odU*~pRrNNzU7QPў^ o՘Qۻs\^AGh8mq +9=irrSЕg.k Rcq.`S +endstream endobj 4765 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4766 0 obj <> endobj 4767 0 obj <> endobj 4768 0 obj <> endobj 4769 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 4770 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4771 0 obj <>stream +h;n$Grz$b]hɆ AbsDCʫƀӕUyz_淿sqz8MO/Qn.b7iz8|1t.V0(к0TVVvjVjNqMcTo67k-^-3@k߅`{320[X'ۻ5ȠN+p`NA#&s Y/.'c8;i2@= xs( Ʈ&68vϻ !aP Gs]>7p赃f|!F$z{n @0&\Ů{{|?~Pʩ0}'#`qmcO#hAEn%- _qq_P_v?^0hw/3 i( nL?_лh;RAچچںWI{MoUMQ/!v3t{e=ko\7# Ķ7VMۺ40sI>1a{oc~*37J>h{<2꽁/PL5ANn{$F 15a# $ގ145QREöMjCmluˍ2Tc:tMՈ eX#O +#H%a!#W=}AA` pabK(`ʳCPC;`'G/` n9L$ʂ1Q)"!Ƿ u;AnMȝ^##Kw5`9)6 ׎#P@cHJTi15Gu };B&3)CA`dn!hxQ-bօ݈Fb*7 DCsCZ%=[Zm-*QYL Nt4gJKJ񙄨.ր-8>"^ ,&.sջZX7zF2Q*0w4RkFt?zWaLS H.ǒ5!ܘ')4U.7i;9]2!gq1&N"cU>S7cQ1 blb_e%ce2^Me%cC̫;ٮ4Zo39YȸGE䎘'b#7ϹMmgQ Zڏ(6PQEz{"MtTB!ˆ.@=ыMe4sq0h`@MM-v:13S{@.ƣ{H*s +@vM: kV3cq2ګ,iS KeAF;0wX؊ +gے%q޷ʢ5Ɍ=YqѬƚg; O63i32V[>!#+8.j8JV19-Y U⑌"5c1YH~,2I4ob8PHl<,Q6Piy k݀Ucʏx +b:#_ͷ0i"8z ˜U"LMYf2 KVq7][٭=ҍG uL;%C]4p5*QIR~_MZ6V +U!FNYƓMkzQ&0BFuc\m8/a]Y[Kq%6T|yЯN6TYo:pvH3D4t:\&Mv8Zs]bd''6gщjıyB{z$;~5#r`xE@_ܹ6f|$7Ĝãs#& 0I$>!\08x^9w)Mi`9F +L 6_d>O|CcQ H4ozn,yc:<\- m2erd+VǫUV5~ojM+sP>Ͻ6T3J7l Y4ys#u6Y}ېrC]:jI6tA#".K|sui[);v[z-KSA'1kCLJsߺ,e" DU$Or6.70Hp(pEDzTL`0 Ctv>* +4K!bu(J˦&~Rj+{wSML#:n^VKL;ojq6s* NEzm{3$Iz]5Š%Gm14V`m 2!*hƐ= lKO͈ǕCl +/ML\\heS]:ك/cK4a^G p| W.BSfx՗/Xl%zb8^#<Ͷ*}ntu"ZWx pnY@J$p9mt_~ҹZϦD}F|#e<[vi3*xO_1*QɡB.CK9(NTAmRHy(7kj| GN6JFNUҌ+izQ=߶ir(Fm#zy' ˪dȰmeS2I2ZOVG"IaOVh `. ti#%?4wr ĥ.J nL@J#UM~,gg!GYxZ!. ٦0.30IuRJ[*ҹ6QUQEls̈򼙶ƹPN,]tq%Gl߭wƀ'4*h\?|i'g]IQ6^R':V t UQ%aCkJ%:ID$xbvI1J"u5Pd8ҥ({J,[h78<ɵw^HeI1 븦m]xBy;ս̏ں[Ϝ˛NrsnrG~swQ1t] +Gsn~z잤3]#Ǥs}}QJJe;oѥ:㤒ے3%KKRnOJtmU(tj +^)1cy7\wF͑8[$r "ؼklDbj˅4_ڊת9$Re?^wZ0$ɱ?^HKb/__?˦6-oݯ?I񪏗ݫ6||{|/Wvz+2^>O2{>u$[J@)a7m,JA*/˕.h*OOt`Nnp8)SPО.䎗*}7嫲eεʥ w -U4ܐ*_UNkUW@s|[8d= ];K+6erRUxΡ: Q:Jtl/$ZS&Je\$E4㇋`q:. +endstream endobj 4772 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4773 0 obj <> endobj 4774 0 obj <> endobj 4775 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 4776 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4777 0 obj <>stream +h;n$Grz6;hI ^Eh498͙qdQ]M°1vwDf^0vͯ:?<^]]?]}{su}s;]ч]7q0ͧAw73|=00 n_v +~=\E*;m:.;h4\ggxcp ?Цg.*z 7S3Qdo+GŮfǮacrJvu(R Eqa˄]k"f)B㦝v՜K\R;6R!<6aBeF߇j8 7f+;>vqtwJs/O)L |H5Xdc'hUtuK%l_r|z|0w/0 F|R;0PӰ ͟hލ#tll{\*-Gd!* c~C K5b*+e۲u2G0sI~1acUScVVU7pة}^;[`H:JüV0z̝{g{UaҺ׀GT x/ķ:Ct]3п u?A?ES 牌ѩ:D;p{cIBwbDWT +*Ų@FlQBdMlEAS\V7>+hO ["@i(5z.Uƀ&Apo;B5|?e/^yA܇ +.~EޣG*zZCσp,cH֠`C3u/躯L7;sD)PF1MVʏTma;[n4c]r1 MUgkz.u5n5M +9˰̏} 4>R~?"J""aPbi6%V vf 3Z.T).CUa+c@$y1dT2JLAɊ/=|et4Њ q8K.l%ENw E[AƱ7G=}tWr35VWѪGtDpb&s\DU==|BlK/fCAqiE',ǯ E}H'8!(3zF 1<]k.y,?HL56ހ;8zS2]0V=ץوY6BKUURSAoƮO8"GDN6H)4Mf]kl$ vіJ*dAizl]O:80tY_4 X&A1%vA;@;іKiq`@1KWRE򨼯*洳]qhx đLS (Ct +<`d~Z"ZZ&+)欑B%XIgd>9$aI&M]B  Hsíǰ`'i5o!q2Yӧh!\b%#4|(t]Z=i2(W%)YG,Ѕܫ]jTа%b)6j7rG)gE7גG&-i:]1^>/Jr*VOD02m%1b-B1es\^t2fEѬTΰS:\[ѽn2(BҞg HMz=!]/b.ޛ(  y[Xu p8aiRL³fVo@"UOSe]#5䣮*oJI0^dcbM-/.3f_k=,r4{w_8I1)|qQ xrirp+,N X q`YFjjW5{S2ֵR_C.fq%;+NMՌ^^+K }ubiY茓N}fέu<3%Nkɦ:B+n9 Qzpw6r;gC5rešoci{Aqܯy_3d(˩}%&S0#,[3EWW%Jt$u(3l}Sd2E@> AM/d"{Iӳ7ś/Y\:Va)6%/Ȃ>O\ߺInrȣ镈򄸯m,5s.xIUV& |;n_}sK 6f7 +$hj*phi|DhUSW d\ͿD6nrM'A3dv&RsU_sѵ#9TA4ptnԦmOu>ue|t.X]Ӿ*+yR4]9ŷm@QF> l8=PNG%V3+I +Mt#NN9¯}9vO/'鼅}8r.u=čp#t_^?S:u3` +O\(2M "TAH%R8x{t#s =+Swx9vDL4EXrMJݧCF3bh5aln)t=߲nBDGg[xZs9K\G2Z:|NIt5.?UtTL5tʴS)9\Io+ =Vv@= `_u-ke^wdPn볿½Wc HZf~gj.]@mZ~ >kg=W.([N\@9{ (Vs=H&7\|3}br(:>j2j*JvIm ΥBvա@W|u}_Ư= Lk9 OMFs[ +j̺3Uƃ#{bbi7UCCl3X\ K@GRLln7{9uPѼu-߉{sEUGvU]t |8[/\\꘲ 爚j՜ޱHXTyn3Eq݌T$Ƚ̐.FVR/ltU$A'@bz9>yԘȤ?:s<ҝ)("[7Z[^)HpU2F&P*]giAY/ΩOy廬bT#`y8(&kٱ$=Td=P_]˰%]=O1]K-i>cr*=%`z@ (s* L-uCʋמ #z+tP*~'\C:N WowتY >s57j`LsTh/5p6J<R 쪝 E[obo7G`hm17g'#0 uhs[6o{`Xd`m +endstream endobj 4778 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4779 0 obj <> endobj 4780 0 obj <> endobj 4781 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 4782 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4783 0 obj <>stream +hZ[k~_я”U4de'MAHFdgeK}s]=3WIJSsΥO7Wn.v_޾z}nuebv7r^8^nw黷{iCkOf~Z*Q=wD0nepV8) =:ٕ&Ϟ5QoWe~EtezuC  F!XGy#eO Z ‘$`5z44Аƪ4emj47I=7y܂>zB|vxLe_CJ"ʒ!<(p@eSу#_-P3nunj:̹T&@2ym{M6P6\~PÁ;ER> %gUsɕ 2ף/q&uE{|c'L*hkNHf۽b%J)Nly.SޠOsWX#kXNH:̸E5$}tKFE'Q({'UhՐaՒ)J(M#$Wje70 &!ׇOjC(L: +(@9Ik2B(5t-&l;b3yWd*z"izmȌ|CEҪFV+!vO;uU:}bsCD!]'k!]ޙHOP3iT rޚYnn-քL 2F7JS4qB7qbwO$HH_]rU@N)90A:8#żU./1`鼞rp}CB4or651o?;wQћd4Z;<Qe\Rp +U;&7=~Iy4eNESXV'ln![\Ox J,n@^`Xw$<4Ҋ? 2Ĵ`_ؗ'~N0g~ 7 ڷi #]p)*-{qsSgya``G<93Am r5ũ0a8<֛z N i(3;떹+.ڟlrx kduOՖ*;;"v en"~I^:K/Wg6wjzIVH )?tApUa r P޹Wz5>pa>H ~LM//K\RتεHJפ^v|ٝ~0E X:՞Yj/'z7]9> `.Wc14 @TfTe#zlU].V)s+u7Y `Z maVmk5?ϵgSwەbUD/RZL} Z۫j<FONN_MJ{{5$΂Ut+4bEϘPnz_dY;E'zYo!2MS3 ?v~Z# +poNk"FN8]Ƿ;o>UFx9x~m'J2Ӛׇ+Gjɠv/kf@/~O +endstream endobj 4784 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4785 0 obj <> endobj 4786 0 obj <> endobj 4787 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 4788 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4789 0 obj <>stream +hn}bDG1; ArM + +()d,)HdD0n_݇Wp:^zsy~OS''5owI$?I>|O!Xa4NN/wBJ=}ZVJt ~)va:n[g</`M!y)4nܬ9d0pˈ?=?@9&4 Rӻ.pT$=E*7{{"g)a3psm]sKEt&p1'q[őEę= 50&/v>)'Wޞx}tSP~ #Pw$wfI)3 +Γq7hs>$;t$Rँ^P{EBZ Vl/!L +26aOkAdEtvM Эx4Jځۚ[f*d,( ^z⽝ibTzWYR{AyjSMn*Gd5PPE`h "` * :`8XŪtܑܜ#IـF2U:lҾ6mlhRr1OB@K^=,^$]@!P |$opdmP}'_?l?Þ߃_tKQe1򱥸- OVuym`|NIϷN ~\/8+J\bCCxQC4+A4 c'2|"יy(0@P3*M;/#&y6Λ{6¡CDd%%*1nካJS潑$umN7g-U"+0S0`]hXЉWafĻ1\`S# +.O9??;Uj4UZ:LgYJCB20פF=B?hk=fДη3<+ٔ)p…ަp3\9e (<[mkܡѡ-^aJcDdIJwD״_X6Wn:Ż\iJmsQj(*l~JmQjm=Cq#sdhk"0U c4kR6?UWWz>zyȠz;o^D\Jbao]ͭ%D7VB +VWUྵ pٓvb#;FVko>!id}F:yFr1mp%Q ] ?e Z *0V _)b2й9-s'V>h&3 d! iUlc6 41@#W}w;CzOAf8Yn\Q $Tb=rF*_0Z#56 +ShrG&#t` {F30fPfY|} +X4ZN +n3վ/jO8 rάhX99!ͥZXok? iNrÐ HZIk7]#V7t9|;:W5$Lc}Ɖ`/O^)t7m 3=S,km 3Mq{&/p|| n>]3un[ݳ_8;l>/ȹ ]ޞw&A +uu_<#go_iHRE3.Q/y%FWCA }g7ok'Vo]eU猾\9(RҒy9h)̾KAS{ kYjP:kܦ>еBүLιiݳS" +"0)xN9(Un R -nZ]Ȼ]pַDn~ӪG.NrUxՉ(kDo[̉]Ɖ + poCH~UG[EYEbUٕMZ^|G5Z_ x,:Xsv;]jBesgxnN]J8{3f(i\XϣibcHSiC`*!PQp`͠]w1pJd]L.mJYЬ~B%ruLnj :7Ǵ(&է*CZwN5mΚjue50itY4k[3,73zsYB~NW5.ٖc֭rY\mIPq-Z+?>O9jӫ35kE/} v~5dO<cJ3{_w擯sjx1pxн,(9KrPOf, +{VڦxmEhn^fD,ǥ]iW(iW.\M~xT{|odax|`[GW-MM 0uMӺ@1-^z oC+VRW9o# A_tStbAoP;W`川 +endstream endobj 4790 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4791 0 obj <> endobj 4792 0 obj <> endobj 4793 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 4794 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4795 0 obj <>stream +h[K$7rwI@"H6`@nia+2d<dfvf |E#x?˺{_}߶?}?|ß==<=?,[.6)2Oa|8ͳ;u]3<=SKkaۣ1iYk3õ¿{yJV[/e;-\~m'qհ`x ׺)D\h: > xc3<(|CW!C$0ߙH|>wZ-,g}[%/u˲\&%_~@$i{TB_Kȴ?` 0\ +SH}o ޱ۞&`5˔fńXW?1_Fxfen(}㏗AD˗\]U^ۿ>8~?~~x;śJhxae,S\h r\~xڮ]mɄ@G&z9 lX.w8OG؛hkwx>бmkc cqLWFiZ|60y~'0or{R h̔l'kbm[fd@pة}Gn;BXfufnBszP-<6Lm=Mp[d)ۂ ϺFSKwf3hB.bs[\,A39KMh,LSY,5Q vv@9#hES[)þmf8Ky z6M'iUCuOe*.fIхNض6b]~y̒ +]AF +XI/eiA(Lr2rp`QQ0ګUSq;WhӄSElPaZDTnW~;ֻڊhZBjh g~za1Ɵ`x'ES v#F_N!+vS3 0.p>4YV:jYiybC]ܶTwrP;^YkW U\Gk܎?! J,ڨaʄ-64_ ^@TT)+ܐyx蹳kw&`ǁO6</,?6ã9K{+Vzmp相,;K7N@KfTުwȂO}abbcZt +Y˯M M݉t[P0{02E tcI_(OܬpT0X$31d#RUu$i!ƖMPؑmg+iUQi4BLoU7\W"PjPYn26oJ])GHHռFZx=/Asd1>$[@Yyy+xB$q5:BSGNN|`p"'R`@RJCMx JP&L,vN02XX@kx=FN0qDzE~CgmcaE-k4NüMǶ(+Ank 8''[ᢀ=s`Krhޝ~{h<@ +}28 r*CPe`(i`xi%xbgCm%:@MR +(t.mt&;l߀5 ]&2`Qfl@`,OPT9΀hآb[..T,7另LE3(b6^lO Sr .Rý 5I5', N\U8p="Msq<40 p[*/ kc[Bu4^-O$[xnG!ZԢP881 +|![ +=$Ȭ_EFavL[jBzвiLrC9apVQ)jXC,"\g;ԓ-4(qlCqNF!) 1hR+vl+°,o(k').1+RO} vjIn:╳QIsQÈSM(#ĬW wumP4*Sdea~y%rj$ Fɂy2~ݪ3oM&8ncg %S@NZcH~V~OlcW:? C&d.m0+QW z\ς>vaDmI\6)$4oC- *(5~-iQ[^<>HB"v(j<ˎ| +f UpH.;,,jRR##Hl"mp .Zelセ7N[b$x)2k#*U<<Ƕ~oo-чrN_1@vJ ߬kzܜriq¸i$oEDn=ϋ~N$.q$Kݗ\ǁ +i~4_u{C[֕UxÉ"XQPŢs)w 5ow)ïf~1?/eJߋ +gU +p$uyI!n*ejeGX'y{5jTs'>ryoATHj9as!A7}sv{5h=.aWzHڜt[콊ξg*)RI].ns=E6E+c>YAAVU cΞKD}ÂiIsAq8s/r.ZE[ģ=Źȯf-F+ 遑MeW}D:9]W:8 [v[z*Z }1/!WE5PRR"QMY/ކ뼵C QJRP?F-A\ҩ0}3,Nb꓏T|6:|-x6γtA)!s@8+",a^gU2E7+ҋrUV}㽸,x/6Ys'iV0ŀk1*!M|ud{β(M^:xnLoo{ %>VeJ70t9(| |Í7{bmfG홴PsK-j,24B @A6ۮZCKxl:1qASez]*!x)W*u&_LN]{G,g|@ybM.^7Y%Cx.rԲ K [mB\Y.b#CxNvW̼h%q9=q@JrGIR3!T}P{b@Ƒ}QF |CYr\Fߵ< <.t%94NW*k}h׆RPF7G7TR%N+GȾER>AM] "lVim{ )c- s{B0újI0PS;;[^T(CwjnLXnGۜsYf^.4f&tyͲOFפV[תqN;'zgxyw?5pE:|p;LD;z79tw8Xv>F\,wTJlF$BRA)ׁzˎz]/XdzvX +v6ZSJlFa=]qc`!J:&` V! +lyIZVJJ$zih?B:c=D1{PPg#^qNCEaR}V&PnVMqP&ut=|7_8X9 +endstream endobj 4796 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4797 0 obj <> endobj 4798 0 obj <> endobj 4799 0 obj <> endobj 4800 0 obj <> endobj 4801 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 4802 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4803 0 obj <>stream +h;YoGzH.0ͮj1 7A8Ȯ e@^>YG )8Oꮪ뻯O/˴^?<<_vwq/?n.ond28-^bmRˋn>^,ӇyYts\_%x{0~aq?sy8-<`i`T2[݅V?[f|.ts#'x<֕R٧RBpҹaAdD NYf2f3 +OSv0Cmr\C.Z8_p +Mo㜺 <\׆.|srlO&?~x2]Θ'ćIf#M_R73@30i#-ѿ_\(ݻO^>=Oq:|K$A\)X<$9Dipb9?nGi;j;jل umdO^qp;;/t}'DlGGmcAא k`{Õlϵ 3L/v5Mn=Np1s̳58l0ăM-;6 p̔ib6a> hKxxH!g WGxCx[o+&< e S]gD\$4nLJ>;Jz M6hR*p>mVA`N|MTDCاdIPu0)ud䑚1(R!xy`N䅹$I%( CaA}A`<B Lfvqjt~6\ AWV2U9Ѩ-[z{mv-^UK9:Rc/p}b qH|lsy"jk( $\"JMK +"^9^V `G trz C*dt3(@<жg5=1̰u[fÜBxRj RuRD爽 T ʁFTe|+tH^U[*DЈj'r$"64D6`&‹(ӟ,Fifٞ  xqzEY~%?Q;^$;xaw*)E%wW^:bڳ&G *zĆdۊglcYa,oeР wL\Ar9/+P'7,r7}|~'l beCy˧݇\ ]~~4x ي oHOcH ,ͅZwp]É՝<Ɵ`^F3V+\uF.{5C/ 888VN qw>k4vg&B`I8tL| 莁 }w]lf2IwJ ++ܬs_|>a$͊H]#pցjh @<G}zG.lK +Sjt #=qL^t*ԝ)2qf-#e4\5t pn@ D ]*ʈ{ XoB%X4IPC:Ib(G_y0Ò1,5  JoY`TxS7> f Z@#Oϟɖko7ݼ2?h~vV=xt^Nl^Y*K <\-t< a=}wpTj0L+cHĭ :F^M!7YG՟}}NS/lFz:k?YkoGP8;5uUĆ-TBwm2[]ϰ +-5"mʼn`ڠ(kz_Ip-}uzMo(es3.wnLl< xf}My15aCŌckݤjݨc|b8cڼGT& p6 *ҥ}+ptP[㺎!: lz*1~Q>XE/vLU;Ѷ aK4FR#{fATX2Ƿo :2$Z| x$.nwv}F֏45݇Yʚo1#*?$H]sNŋdSY5 j|L:T>:_dݯ4D>$ \*muPo0,io7kf +9BU_/:V[Y)'W-ج+S̯AqnNܫ +kj nw,"HzA&>} +# Śzqz״άL^+ԪF1uPSQCε'"/ÄV85ТU:9tE&I{׸vCcưyZ8Bm"%l‘w. ޝ]yw}soÓS p#Νem>T2WU4gh<Ea^tjdsIhke f+2娎u}Ջa$%qؐtr|z_P$ȓ~Zjie6 IcXtR~U'-CeMZ 4?$gtu"OPU*6rےl*¿ m֢n?jܩ821P74e4=V$}-ۑ:ZX|嫬t$A.{@m"uT`C_. E +EORr[vtW*Rr2o*g忕VK׉GTEW|jWqV 5cXB-'ɬl yqz.Sp]b8FMx@T;673G|T*s&w>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4805 0 obj <> endobj 4806 0 obj <> endobj 4807 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 4808 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4809 0 obj <>stream +h;ي$Ir( dTIg%Z]aCfvТmO{GDdMj DS᷹f_}xܾMӟw>||~ûW3OOOf2CW&TMO駇Ӽ,OO7(=ÏeqLZOaPk2jʡpdr f.gcfhV;,]OZw.A)%?PP~gA]O6Ph!{/]BĝH1Xr)/.U8`o-[\i2>/nb0>9upn[+QqO.9Z>R[;hʜd3Pm2a6{O? 0IF~nWq ; !"N?` l7mRX4>Q]PD2}MR>Y7{4%2l|yCMH\a >Rca,/t8MsasV;3'y&RG9:h8¾# mh0S Z0"*< pO37 CJ> ~ m`S rBnz  ]ȌtDE\ Y)B8\H$5R1FiE4DO0$b047̸?(_a!DP>a?R9*sgύesV[JaZ&ZܪM9 +˱> dfA0a'[b*"ekuҐ ׆,hbʥ4NL^nP}%&;,5~nrW<<B^0=5a8"wm+xs)S,h*rO.e:¼jrbڐxx+*LژyJe6:wZ[w~~RW #*|}SF1]]u&{g^Ii N KؖLt-%L5q&2aQኌBd'nFLa[D1UPku~4VQrkk*<G:`-N]CGD交u*-mn5U!a`9`?WqKr&d-@]n[ң]"W5} nWB*s}\0< k;}2ٸ#+rncƎH/[2mX mR ^T'rR˲YV_r|rj/} !0jM5ޫ΍P5{ Nl!jz4+TN1ql:t҄UisY̝qZX;ɻ}eR)V~lR';oqCv*Zniz0)@ 0GQ(~HPJ:ZT'T3j$4 @Y}b,lp„BbP b/O%{7F&F:jsp80Tr/Uӈ]Nw, a/\=;Ewe,$|'qkH =_EOoIO<Ո,yy[E=;Ⱥ!nf7ǢG|S`M'F>1% WT\'%혷# ,1fPaO\wgc2f-^VM騬:fgnNjiUTw d~f$:R-]@ߘ溊r)94 z3Izn~HkHBY7Q*p2*5Vޓ*7ZD»c "D62j#+RQUT3/Ma{egfxU48ꁱg\X5V8ik i˞$oZO}JK>;¡IXk'eFS;liP{ټ& Nx;V 9`\2}Q>#%Ss6H5"(US=CU>xu]͸<(<ֳpDd]t* +nj.Ĺ +ir;hgݺFtX-v8VL5snWOLF0n.wkg{6KsldL3U ^VF\Ei8& TЕJ@l˵mO78%rӻ?葯5HsLLrAUV9oV$uCCΒ I _N%"Eea8 2J}FkL#ou)MU$EO|pG9H|,wE~ As l8F ObyP>wu}H`DhϬV9}r1 xbZe>WWJj;ha0>J3t18?S:>JsRdkahS.,|Df Gֱ8ؐᶋiTغIi ;R@9,PUr" 2)'T9\$[Oc\*Dnrv"}]3J^aj3S%s8풄|gM;:V;6CALr 4Oͺ]d%L#rE8@aԱ܏~DwN]&)=OIBtާ6v֥Z,㩱hÝ<)?M^)V<Z%.Xͺt\ +Hq_} z8@A%E!7|$"XXYkz|7`x=.9PE\x2{&H^s^IR4BIh:h uI݂.|qk &&r6.v#3-@,DTZh#/T7uC+6P?ն$U@\Zy_VÖݳ˟Y~<4,r2*/D1rSĄWl6Mx});p`Om >J{LIå}yiQA;pk֥{ }`^m7m8Kv]w~~gy<{7\ Ϡ/m7/-]s;\@c+x{xţz{_?U)a(id)wnM`@jU[z۾ߞkh_@cO>_}OJbbc7z6v,N^S%57&yAM*0v,h e-DIreAqԲUcE6WtCR)qů{fÉxሣf@]^CKe) =ݒam Dٺ>yg:iՋA_YHۯJ_sE8tDiD{n|d9̎VqB83T^cu>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4811 0 obj <> endobj 4812 0 obj <> endobj 4813 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 4814 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4815 0 obj <>stream +h[mo$޿>\zW +xgw^ ܇!pw}\fg\~qHQjIb0RI%Q|(ȫx?v_׷޿}n~o?n~yѝn}7C}MLwfà=)}Çb:ap2*=n]¦{e&uKmz ] Pnc~:}o`&‡X&m:#O}I~ {oFU&7X0K7ZTʤQU `C$fa޾ֽG6!FCuXRAΩQ^Q3h:!ۃZS4g'q4(s +qvr{cIoAU8\JDi[,ވհSQ!J{xh_$i}tHsᒼ H#PTTd62Y?{%VãQ]a=xy n]DzkR\66<,N\ 25h |P :*] ds )PF*˖ 25TiFYr11Z]JzaaRNjjn 2(,Ck~%ߣ!K_>oix^?C_JbKeQj)N(nWl6}.dY4 =aNcYn,BP~E6RlDn.pLsG㡫!$7wvnwse2x]`uqR s О;4ٟ՚` _Bhd%ã  a.qR t[|g(d"wYFv XX0g 1:u8a赩:o+H/S.dM.M i-s%IE?[Sn|$(Fi5y\ ~p)"NpE9y6/4[ r]̤mbKӬR7.qr0ZϤX.~rYjՕ#`F@5f9kYsNƵ${Ki5*.%B qV,\l'%D~֒ n+ܞDҊO+ * AeiOZ( r \~-ܚ`RV_A5q4nQ$}GI'!NZQJIX=HmzH᰷|l7i<\\\_uǏ퇻ܤ&T՛t?~w'P7incFL%jb{ݻ;zx?R_ `Nx{k53XݿTzq}/2T= +Gҹekn&?b5f SjĆhf(фDqlB• I|Ac,H:oБ; Nޅܵ+[(T#իxs5qgmMv|휟Q"{ .λ#nQ%m07s;=D> y^ 4vlfm`kyI1yq4|OvQtiGދG|jƴE,JM4Ȏ߶]WaY hZQ`-a~^Z)DX +AeN c[TшHy&j4Xi&4 U,^4u~[?kV}2a[A嘳J9uI"C`>&X4i2uq97,-+\tqUZxo jdJ+\*φXђ Y7B@ .iA+%n=$#Mי_?LFVde2eC^F(3~w^\|Y,tFaU-M.I9[g[*YZDu敥T.^4COw\]ɰ.bCR/.CG&~p0tCB]CuT +m +z†ct~׭mhO-`5kH*pi´%+X ^m6'5! `z4 +rSpѽU8Rl盽pV쟀Ãԯ D8GKsp(`̱ 7"Q8q *ct|)#x@aFcx -rf XesmAmA&oQvg oRlN[)V %8 E8MAtx*&l[և'QeƲg^YcsTlvQ<֟d7HCh(\C ZtT3 +- eF|BN I:tNDQSqD +:M%4.; sIY[$vd2_YUXUI*NUUb vq +' Idl_Aʼn(qFa۞հeC,t )`$ 񴁎"3P`bAq8a;I?Ј[^f0iy%.Vb]"fUQ fsʟȿ5 Lg,,{VA|(OEa'bkV ^AˉaV` ,5JIr|09#ߕ]yVgЧm)ޯ|:K/KZ5&:k'W x` (8'T`q9ZB4) +tM@@Ū0 3VBE3p({2A0g@)a.- p}PG,a._$@۵de Lr$(= ܍dV2I[j[^ 9`ϫ"Ȉ!\7!XM9zSl4pLmwU *K}]q!]BYTي`VkJ0O[|R|5d8] YgJv|7=KvJtdr}n6|q-',)Vz?D^ncxafyV& W.n}&83n̢ פrj;$mUq@7EC#'X1.E| yqWEG*bm +,W+ +b":j $35^ʱ4r2ceL8ߠ);zp9B43b儈#LBR5AdRj UA%4!,htc *G ? Mן/MX?Qj("yhfCttS y:;,/K2Ivxw8.$._s~/|OnVSqIRëzz2P5jnQg.r@.C Lfõ1 gp2(N`Ɵ<ɤg&!CCD8{\RGt- lv;naL&o \meJܖ>rro9ATЅ'5q$0ޚ#g0=ur`h/t{,}j鋭ENcNWz*}ż ud>"X OJbs,9S`WQVcu鲖x"Q];ӹDٲ$G +U~YNrTfm +endstream endobj 4816 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4817 0 obj <> endobj 4818 0 obj <> endobj 4819 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 4820 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4821 0 obj <>stream +h;ndIRhT'("%v*3Fn;||1q˩S^ؑB-wU#Qxz=?>x8򫻫ۿt{3L +iq*wWn^~Y\?0[5[ Pmagr f.{Zcf_\]|.K vz?-k޹D6N)exgΦ +d=`ej0Јx t2Z Q`wEPy&ؓ@ ,||<֕R٧RJP\z8n9_uux%* aKa)wWM4e~60ˇ~w_oIqBqb#\G|I{4:]w$6$Š_lWEY")PΥQMl(%Iƭq'f zLDP[-3)l8 `bQ6jbdDNpbk[;<pH>tSt:)O.yaGanx(p̀?dkKdg`$ջcgzEs3[*@&oYBE~!bۤT;R3JyN~t8Rf\H,ܹ$Egh\@ $FӱJq쎅ݴۖؽ>PG-gpλsSEgQw_#"/ mٿTF ^h9nW9˼nid[g\]ȡPA^t)w3xjW7-ښ mպta l;E8e-m}]MMji`ja#<]\× w EytLŃy׋yx2| ߾xt.K&:*|p\wpa@J#>NV Ä)L2uؒxwVtB'_`iuɰJT('=l[Sɣn'}2.tPm%qnvaFXG + #t3D?"=aD(=,n;aN԰AE΍[\J-r .YbSGbS:핓84jPe*5)2ԺuOŏ̴Zh=yΑ#/\I8yjx=8dYzHIbHZ$i7 ?–{ўP. = +ֽ#cݑuJO.UekKT7o x޶ @nyrEΔ5G`[oamcF"F"559!{&~'C`#mYF#1.E?;{/׿nglO =Nןof=~ϭ !0 `߿!/~%{ +f?uˍϛ5?s{f!"y3A?;ۊgc,kh?L|"bsvAo)j<"B ^Fіdl- P%t8iFX]/c'uxmX~SNZe(_@Z{_iJ(d`'.`;Q/%i&w^j5FߞYn3+b'WFPU(se_TMT M:#T=*8m-&1vY[|321f_yQ@ۡZE +Պ-v$<']$nî$ ٺEYN:z\ +endstream endobj 4822 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4823 0 obj <> endobj 4824 0 obj <> endobj 4825 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 4826 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4827 0 obj <>stream +h[oFrg'.I2`IJ8f}>>ьV4'3NUWU?H> b^M7ǯ]|Of{Ovo6a?VUw_]_֕}Wmkk5~hituן/~eƶMz 4=s8Qᡡ> ϱ?Lo`f;^MauFU? +[nZڶ}UON^ωDIDaM GqM %KW;mlPKui>H~8驭򄝯f~@zϗ\]ug++jiۏézJ*?"C^wYU5]j]]r ?\~iwu|8>?NO ~s3nz@|! U9 7Vx +mBۄsܾԦ˺7-lt +j ZYuuxz`&e:{4́Ӝgm. VU0K=nxJխƿ]mLXUX hj8}#`m&u'Mx҄k8v*4L5*5~* t_HomuzW4-o +Fo\>u&326jl&4zOl66(i^'@5&A˫j۬]ltǠʡX& :v<Alݹ6v3rA^܊N#GR[SO-S}U"aAHU 54].x_ ҾmU}S1X4N*p~SPxc̃r.}րT2x1`U$/`'$k7lpSE1ٓ<5ٞ7P ʹ׺|txn'xv[\1Ut\ TIm/v;{ #x!{LZ!T^0|5Bs98 Q0#-(V! t?A +46tB@dJCbq`cM N"Nhh3>{!VH ~#0Xf+@v+@Xb- *nވ:g ev[QZ5L@"?zA(\ 7I@ \zF2#16MxlϰyЪ\[6OF#JhwU Bk| @rb" +uQ>A"v.L 68b$"T}6hgԣ0,h/5P]-sL 2f( Y`#brd"ކ.ʁb(6UX2 +XA(ذv &ͷ89,C6tQtj5_5+ ?D+"F`(NÎ$ưBO_L L'K\@/./-ϭ HoI"m&sIYV)dhwt= Ӿ +; >XbZ,\34MJ23gnD2dC؍"p" -C6MRNk zfn.xvA$E/*(jעnyVx̋ϑm EHBL>3 յp1!xZK'L6&lHS.`Vk$"r|w(߂:E1ؔXe b>{Y_(B~y1( s7tγ?g,/Rk{ƁwMˆ׿"L^2ˠRKDc ,akaqHo;BowJI{2CdgS'tnErmSPKG.RH;vtN̷5a7XSB~&>6_K{3v28t2a] .n4@Mz3rnȟң{ZlQ%$9"W8/f>zq"oሔ4r36̛#pqF\̷lżlq!Ko9S)< "jv W%ܗ(Pfn ƒI BqHuMmE׋]a + JF}6{jh5 2?T=`w_Qh.np,gPAoJ*>7,/nIX e Հ=w9o7//:;CNK6a7 +1asa"0Jh_JDδ(M)!eLπɗy +K8xx~xY=aC}F+yPaNȴewXqM$,r `!T:ZLE^;2ؙ o}8d0kKQ8ҟSL=`avS߂x9.uHϢRڸO&lgRF,}ϩ5߀L}6z&`N٘gp- +$: dkcTNI\0[8R88:KUI%Z&G~xX7̡=TVRON2m\ )0'-EcP"Ce9Sh hY 1zP< )XL,mx9[geֹgUTB5lM~AxLYaRlx)$Nh=) ~v+Nr,U<(|Qz> a;QR;7xKiR't&L ZmXT|zy|&:52̨̢MWq+sE0(k1lK28tBa(Si_}Y5wa/I@RM0컀o?^LzL(;*(I7AnOB63̂k,D!61 +AUhAg~.n(Q@gӕZv_C'6wu:~rѨdˈ_&L$m!*:˪Pa.|roJjؒR'&l?%tq'eZ/Z"0VfƁz H RDzXޕ+0hk)RM!%KiBMYnlY-䭕/)ELa0镘uYsSpڹieLida-"~_bwΥf)79T!f܌޶+J&#р7o_(Z&;_sySgˢ1 j>~n`~af]ܺ*ăߏ`Tsm:ȩmݰd[^*/9kAg*/T&E SE_!~!M(7ˢdħ8dgPB@>+Igjd9]7;q0eO" h@6Go:UJ*/ G.7y̎HviZp1Y5ҥ]e.Skr^EFdyyh|s”̇W2RI) +E̋L/nlAQ3]Ujfk G~KM.jws,NǢM.s_'n"F2_*b*Ki/ExiN[E+A2O_d_t4rg.; ovg +]tx9{}I[t\^lN.m\R+&⭼ jߒ32J LlTJ.1?my^ +("lIk]z?s(zʅCq?scԖn*Nmq*J!vKDRz93 H_}r1~S=ºA$|GF`Ĩ:LKpr%K_ "|(#k|cU$OPMGo*軅bוul LJ + cyʢ4UN&+otd0Z`o:q\glT%u&٘kI;as )VWx:D(z*W))hr'bvk0X)UEJLVǦ d XUƳjj*4hV&7EqY^gx]e`kSβqeg8q}˝glBAV?LK3i"LRa^ν3pc E,e DsD9fY6.Pr'~|_ʗ4 >oll{9 uin6ϷB>#m̕-"EHvs5h(kKe1uCNM/h&U,ys}m+U]/H(np?x5fWwϻ~W[s֘\Uk W8U[翻j\=iZnS=fvP~?W7c;TKVǻ#*L@yQd(dEVxCuJNvVwϧӏkPᶺR{MC ;PEs\v|zljKGa]fU qۯ54yǧ-NB#VӇ5FCFG$k}$í"qRڭU:5p̓>Bծ Ht㞞baCp] NVǃGWfDiDEd=Oq|D9`auH?NS56OBG֏]%촌6ݬOGR5ұtg̮:?! xg9jzrGUC(3󨱽;c=ސ$]mU +9yN)耂(f$.S=Âi{e:ÐOV ԯn}+z; wbp6H`݉N,Џ]uMDv ]\}yQEG̓8Uﮖq> j=!1 im +:`siz@(1z~ٳHZE"]qv:n{|Ϩ?U3֨R+zhh=;o>1} kؑIh *U:EHV?0 R tAֆ#)mqhfugU7o.G`& +endstream endobj 4828 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4829 0 obj <> endobj 4830 0 obj <> endobj 4831 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 4832 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4833 0 obj <>stream +h;n$Grzl.;-`EXZ>HihpH-Ya}#2"kz4;ȸ#2ϯw]<?/_\\ܨA 7wi4hF4Nfp1 /4);uwi2M Sa޺QCؚΰv*[aVvqT4;[7jwL@Cv4av":ouH.僴l-Ou +odh'eC4r:'F -3ѽ\'=0jRFRQ@rG?f9]Neux èl5a )`5R@|xh#PmPnTuz{T`Wٴt[w#hj{6l0o OO~n6Nɪh`?`!\/F0>[=.! m&VX1-;NQ_ C0dz'rqz",Ķ7@8uhۓ= Øl,mXm*=p9`;JA8js[+OU70p{{[`7H:JþV*ɣPwAaRzԀ7~!500ŸL)wKKfЄ]@MCfTà&4c2逤 +DWy!(@#hy[!4Zl 8p.7 +HbCit[#3 # T:vQO-3|U +W31 ?M,?aϠ~Z4*꧁ ?eW7Cnzϣȟ*fDIS`jxL1X0 *b\?(OK7evleBـf4H2m6M4hRrr;< ?@K;,^ڙʳR&eH\? <\7e Ljߐk_f?dALt sѐFͮbhz4]k&аߎmcۙ-qg*2f;#S`M 8\p(p0gVC a՚cRܨ) ?>8wb w,YӡIyY@be_q}Kki4wFNN1RCHNMG Nm"07CT f>Ad ? <=oӑ4 |}M\.uxrI5|g.PfRUF5i#;Q-Tq^w=̄冉~Zݵ̚K,0pT+fV4NpzQHH 3$r+r/a \!Wl%Lx4E'ͷMiBf|!Yqd0ҖxuU B P=3ŐrBl e(W[I݉x'iXNb& +蛘)S0+vwɞ:C/x@ 0@];!)^ݏȬ#dpNW^s\(:c\7,A4"BF,r#<ˬTUQHYEV|X ' cΕBӡa^K)dYhҊD Or}\0<98W7d&&AS&͗yEJ:h^I0Y( +O* + ~m +* ӝd<.&t!PdVW_|];f5}js,Zdqj熩v!*jxyWb!kr3+m/bn̕4&5OEI˱Sj{my:QAռuwMs#KIz'Ic1lplUUoޚv9Iè`P'Etc3%܅s`b56pئ@LtcYqqg3. Kp(⮍(vl@QvCZܠ/F`C`o2M9YF\M[zCV$Q552NJ&>:O - , UM|;|_ oNLK'`nKAѱgt<[-R)Fm;%NYO%*ȝc\Z6f[ߜӏ7ѡ]FoGUVfT{,ڑmAنAWmAOk$UnmYs* UDijI@jC|TBVNX,:ZAtGw̠٣jJ l exKgE]̼pDMu&QђT]ܜOPNsPoaeU%Ojs +Ij +G 9J"HD.6s+y~o9[g)d(tK+iwiP|sr2 od` k,{]wd2(O{z=6x`%`o~8K ߼ %qlK? 7.p{>I{||7\_o2MK@%;|I: ~8 @WvpO_.m&{zyw<;B ܄& Oڼˑqà-*>d `뿾[;ͻ#ˑ.BO_Ow4&x%.{@Йp܏τyڿkʀd  e.4n Ϧp.V+I&W,k%x"\E*;9r;sԚ*%}U㼐syb0Ae8 /1y*+%y]NeqjѯxdZR![}ݮ1\~GJ?otj- +nbYee:8­SC,Ur+\n5;b%O4T(Iߺ3N>m̵lӨhySX~o[(`sM͒Wt~-kw+k y[>>EfnEBa^~rRhvT1q0J~ln'T$y\ MSykA{nYExyتU7U>,4w^#оS!搜(gCakBbd;UA"T,$[Vߵ*z 7kw  gb$%+첲0eP-Γ2<8QTLLJVyTZrR[DF~qC,UNo*WPb+2DW $?VPMb)_z;)b;I|ڵ5a*<p"uA1؊W[t/)0u 1\# }tf{%_Ȓ\Xi>e;ynkN+0E"%wfBx UIKSH܁*`-9d,JB\mԣpإI Rea#cΕeC YS! vEMc+2wLrtKsQS_y)d^ӍtJoХ]u,[<s@EdNXhG_S$O +8lo4Dʖ"VQKe]IZq6Xjkbe,k^|nWY!%UᑸGIJ YQ~e6Cd~6J +Gq'NJ N7n-Wpv.@9ч9޵Ġ&AGΨeխPa.|vU܎s-4WN2谬}!#4ϣ(Plc 7&"5穙bGNܫO@w:2ohvj ԨCӱuXpEUEBleD2%N$ڜަ>p OߊLB 6 +]ʚG8 T*uk6e)'\*5AQT x0Onr6jڵ-\rrevoZГy!9Xߖrnfy}+뾼D<{򱒌8[7fFo/ +jxٶVd+TӾ%;ֿ$"~׷W+9ۮ7TZ1Ra/x|2P8=o*.KgzG*HRG|#;U{(7 vpdR +jlF[S|t9,;n%ر_H`D%r6EݲaNN]̀iVݶYU] L{ 6gcJ׾*^ˊ멌晷]VRp:\\@.9֎1DV]e6hR1FY5E9]EiYڠa'7(hȶbK^2wǍm|LW&?m@6-8)&RT#mõl5Yc@B(LE(+ڳWo#x|={ mhx5S@M $5$3זE= q^ RYlcڪR:M;E,aRT .v}";H_Xm1gWa&bǦD:B,_BI9nmέY_zss_a՟??}|/C! &U2</dr("U@<AwcPѐᏱ )uKe\f@ў9VW y.lە2^x=lQr>\_O:o݌j>C/?C/ wx>S+'yr;Q_n.-um0H.gJ4vQ(Ώ +k!AAxӌ[uAPUq:?uTp#!( +endstream endobj 4834 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4835 0 obj <> endobj 4836 0 obj <> endobj 4837 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 4838 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4839 0 obj <>stream +h;ndq40`rZ $ Arv(36ϰ8U]U}93޵6F$-˙{W9s症˴]|տ~tiY>zsOo7lnn̤MV9L3+_BT&L1:elo6FͳnW;yvq}O5|he <4v49q~= 5?9/Z#~.y/W7HӤ9OŜ|oO*N"," ' +X.*<%B)T/[<z_Gw4)xÌ +/}68 4ϫ/*A +hpqp.nﲛ[\8sFԙr純}>薱(m&|3jC| E꾷O`nbF,b/xiI5F@E(H~$vr8]͟@aZӯ))ksn^n{s!)Ed%KoGJ`/"L~|Mzp4eѢ$z.6iVtHƂ1/{E-k!7hF > !;Ub%Ivg}-6?<9yM2ikss +V$٤QIk]-^rBfYkR_äȊG{ hs@ )و&ٚ 7K,~kz, +l,v-̲ cM )O;bI 3ΐ ={lo5f٨ףS޻wR3VbN'#*F+8ڲ ,~ 3T3Bn"0,]#Wvx_9VU _E`w"4yl UzSeR4"薮PvΆℕ(3xZonTjGzzh.ҫےTz&ߋyXenK{DUP~Fn|qE&`پ;gqӔL,.UrDQÚ'J9R8<fPs$tbFIJLUTAUN+-`!x.78%{ll+Pux7n +V1B\Cfj#9ᙞxM:A(lU,'*v=zve +9UJZXSD\9z;c}mت1+33Df!M[ ts0Z6GmXv9:8p|ܭLRGPhoI,k +9E8 +㫮gs%k÷I֨J0MS͐R|cg6bRݪ+ mZ[zK+"Kյܥ^;C@qhNsc<1Ctګ51u+Gp~ 86_1*ư*JN}Z"7KDj})UFy2ϛĪrDS:~ݷALj3h՝ TK3^~mA}' *# ]Iؓ G %WE-G]%#Rh]j9 +tml=-nW@䖇 C-+]g]$T<2EmuU}O +?D_ǜREk҈v74NHg܈_nW96q_W9b{#n}$m82=hzG2{J=@ݔZ/2w!gѫܫf)q0\M-D= ~ RG(gE]& [u{k,F:w[fۺ=؈}dhuH>%=s +5=tS7E=oYK!{(e9nҌ9aywmdNKV2ϥK;syQ_߼rt%$w4z?/o-?7O tx^봿,^Ae >=!8i1s@OO zP?v쏢e?j*~ʗuUPn$%N&%~lj'n+zҚEF:?|>4d@K*1uewnV!2}:gPXwؠv"o9dGW_o@.RߤoQD_{H "iۺ8ka,AvYNPk@a'AO^byTv"R7p՛Z8K /P ͵z-r*6;#gj>؏GVsj_KlFdf" g,;#orȲ#]C(PZqVVƟk G ORTƊl\ՃSqڲs쾧&1=6n.s(`zk*nǃ#S9xj=NV;vzSD1t pQz6EpNWg^l^}yenW߿˲|V0S!Kbz>l5S f3ЖɖoJ /< +\p nBA̱lv p63p^qޡW.tC>7\!;/mn[YtCigmC9ft7gec3ԝԹϡCRl7`Cv=281e.3!ՙ ٯϤp+;9trp΅0|6a8Bù# +0ܲ +endstream endobj 4840 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4841 0 obj <> endobj 4842 0 obj <> endobj 4843 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 4844 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4845 0 obj <>stream +hZ[o[~8bg @#;E m}h)[,74?ŝ%)YnDC"g]>훛ˋfX.Osw͋'g}eogg̰Aÿ<ؘTC{^Jkw.v~4 /V,)MS2f\-QyI{ͱ YCꜨZW,`!%\0 +KfY]-l!EÉ^DėȀ=0|^ky}H2 A>&> حp h~ Ì.<(r7LDvQf;u4J,/exyGBx|M7Y~#6N~jw}3>;3fToAvn޺{Ttc2հ +a闻+0wW\ݼoӳqؾ)!AB6fY,,a_V@2\ vD[eBzaBeJ>esn4k)T,d`O@! @ ]H}gmSԹN2NxS> zo[tjFIl3Q'֭q?Qmf;>ݍp#GdnE&dZ }Y3LxXRͰ٭ב +^9 "3HK&a9VN>) kN37<&O ӲQrOb#vTsζI|y$}ZPLdcE&ذkmh9h+LkI34U[[N ZIMo䧩zSv˽zSvVKȥ5gїNAZat,:Ym%ZӥiUi@kV,ۓ~HytLAM-\%Y;u/&á%Gn ebXx_~=_U:9cyr/osPʓ7sS;&x;^3LG=sOvk6]7/wF\x]s뉽õÉa=ǿ<.ҧs0/zNy_ +AKQmO*M_GlW"rq6B_eՉㅽ[ާ [V?.nd`1kʶTϻz~*!>,XJi70O=TOT/|aeE[n\OY[Վ\M~MIm;ϋw[mpϲ~!p wx[W6>lѺ=_w}Y}Əӗm3ؙ})uf?/w>/O1a} ec_/ؗyaeG>]:f'v +endstream endobj 4846 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4847 0 obj <> endobj 4848 0 obj <> endobj 4849 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 4850 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4851 0 obj <>stream +hZY~_Qs>`(?,0jĘfeȣzL1ȸ3/n닿]xuw8xrs翫͋bӃv6I$?HCV(ͰR=wx Ji.wy Ng.&=2< */Vnܨ,he/׻ *B lH)76eIE3|V**)IR`ˬ R +KaYF]oЛ .żh+'eX Q趿 ?Eb:rB<է/? ߽T*ɁSUt =l Dh`\p} z7>X?@B&|p)?|ك![i0wF&Z +n l6 k+Va!V$Y!KPcwZH##{ðRv[W(#k,}^J:dcA6pUUJM( kef! j Hn-<b $+zk+jujP О\ddk[*zFVWSr{83CkS4pH  öMƲIIQbB + W A eZD%B#T,ĆbGmv>dEt  2X, +8dXgϐnJ '!KϺ&WUa+}jҽ%eP}S0 z_䡊mc "`LULRbUv]+)Ivpvs-eaTbl+|0Epl3Ҥr8tÂ{ٺZfcS"29!/8ڐ rd #W s ! +LjDmm3hp_W-v"g)ZDO-__u_^eqb;*+>$9C|)#xFxxDux*_da޺DŅ^ME0QXMt|dXFT9Yz2+]zzr70в/})XJ>&t7TbüLW5iڴ iΡ>ی 6+wZާLP*2I;]#T-l_\/٩G0PVN%hڳ10O tz|¯}Ojpv+fC/l ]v7y$@c<?2t9zo&~\M)v@lzțL2e|Δϔ8LɕO0z {F]6WO}[6}VC4/Aw2ȮsW\w˿K䌡I#|Y/cK4ۚix:TzLI=}^lǖ}^`،G.MQT_\sŇE TmqAg+pa3Qi3"mZvqV 9UE_|⬊tx.Ҙvd$P>PLK?RKy{3yl8}x<~i/4'//4~tڼP}"hrg_ys/M0Σ?q٫Y*arA.3…\F Atg枆 pV͌ofi{ ~TC09摮zgѾ/wJ`Wr +endstream endobj 4852 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4853 0 obj <> endobj 4854 0 obj <> endobj 4855 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 4856 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4857 0 obj <>stream +h;َ#GrH.5YyT.hVK0d[Z} a=Y8(a4;2y/LJحon~|=><6>zO6g7WonnLg _l}]z熱yU? u7;hpzF膿Lܬ|oLhg8hm3mVf +iMkLÕeGlRno ]'uzfd`d7xpt2Z yϝQawAP#L;_\E1S1.4u/+A}qX?>VrΫp+AqOpz.>X>RY;m" I:;:{c7?><W$! v}dKWy_~E'<6u>_u+i0ͷG症a׽o_C{Cr ,MRu?]{{Hڶ7K{eX>Z&@`n#Lalcalq'܆fKN50g*=؎p1};j[3ҩ#aAnj}@4q a_MX L;njzoX-> ~ m`Sr@T4!pP;McEf[ *aЌ&4҈逤GGD ^&E+b~zsay }D+MA 83;<9k1Owiڀfۿۂ7gqu([AׄM.w`&;䫝r2lH>nJ'IwN3ɲO2e3r({;Lr)b#ILMXR89ќ8T/4)AZ{/s`:#Z%+T|CK+&Ͳb~#@T0f"Y;TcF|=" +'ʲnuedV)$BL9~ZrMCTy002*.я y=6^XmPSW╴cVDEyd,V{EAlMT4Zy1 ~Q8#MJ+Nb(Pӏ c*Gaq,—?0n|@b;{'0vUcskA.}fy# R|+ &-d<GQ".JߜHz =f/cI(bVGu IP!4i E;fpSaJ[[~nNg'hT*a"LhRiI' us$tx_ΘzoD|rA8ɗ ldj?YRsJ(  U c7KTҋwñḽ}/Q/ebˍ% +>s۾vWʤ_tc=%XذN m= vKƈ4V@"N\_.-gKϷr^ұ=׆jV VN:{;:?u-^Qziq|Ͽ/{ܸzTۉ/Cxm|O~ˏ#j,2 +ԍH]-weLE}yqcxVscRnY2ƐBʫ"Ð| sxX"s~3G_-nMUW-D{y~I{y + A<f^^WPa~x<~控G|֡Gp@{a"<,y̸!x{S~8_cړh'vܯvbv'D;1G;{Ъ&56z66wxc.(vum`ґ\82hlGn}e3?̂,8Wc̤9 O: ӈ!pW^sVpw*5> GDW{$[R4b&]c?n㠬F(Fvc,怙#õ^Aik&.i?7^4.ȞlTp^qÝS25M,@$Qd ya +Y9נ8b"=i/M*4Kn6̤V@edN ė^yw[7 φوiq;@ceX3>V/49d( s'T-'-v;j糅w/`:m8P9m?d7'gߨNw/Q\$~w5.2_A ~7(pgИ/'@t 7TϰOBFj-=,17,K+ l2}4m8rZKqz#9.>ʔzW۬fV9mu<*ɰ cAvNקV@3;Sv-=[/ ڕ6|;]Pru1í>\XSy&j@kAT[GDvB;,MZ+ j*dO$YʫO}'K~.$?'A'$uM&; RLZM͛b\+⫧ǭ +TXW%6wX4hɓT i}%5(NfsvsE+ PSCeXV}rn ̊U4>5zH E޻F +YCf>|,t +^bge:\\rtfCU^Qf;Ir s=*l(H;SW^_A D;+7*Y;] _HNvj[T hئSk7wylIay;Y|Q SX)!Z,HL̇2MGYN3L.T".}s +eor3$9ldI㍜S4s=Lo0O y +:?FKjUjXIy _mX0`pY̵UOTS@oUZpbCp,0YC]'Gy.|Iırb[EնLgmm+ůW~(bU=4 R*&X(埯HZZAl ?(+ٌ3nU i r%L>W}R;U;I?%٩.eצíK"bX7Oep?36<ÁȮµc8. r _UW6C|uLveRjsPb!JKe9bɽ'jSfjqc`+0F)m̩猀y4H@: 0R```]@%.V[m&ԸR4VTI$ +$3g}Ԗ淵ngY] xӘA*VC?Rsƹ,P U{Ӻ4zszJ֮X+<@EQ>[M5y//z&[Ǝٚ(ٰh!ktBTeV\Ӥmep3Ni~d'&N{2xԔ,W1E<6/+#+ Yt' zf܊Mf^@ +~8LffF81L_ɪh!U*EnSqANBer d"Å*Qn)C8 uV[:]2|T- 3N-x Rz'-fl5JSrth0sWLUARw.HuҚN7+d1:-}rq'֕zq&T'7\0`seAb{8U6| Zqힹ=>2 %ՁT<V%+v깿eJG*?OZ~e/GJvTֹ B;kĺ` +zr$6bž\B:T>#ErN6Sc<)f2Xr1G\.W>q ?N_jRN>SY+uGq?v?ژtYmdѡ{m_G `HDQ +endstream endobj 4858 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4859 0 obj <> endobj 4860 0 obj <> endobj 4861 0 obj <> endobj 4862 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 4863 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4864 0 obj <>stream +h[[oˑ~ׯG)X=A`# ȹ$F )֮,9sοߺv v`/ "u骯r|z}}OOf77׿޿^v1v/16v)u/E? ۟/ޭa#|`3ProಿFu~vvmvEʦ1]ؘޭ\2/~[Nar[7c4{9\_;G;igaG3=LY&rB͚q +} Ki%cBHKCy.lĜ&O)̱O 8% }];A ӱP ԠNFU@S7=p3JJ 4^`_0zC@P I6GjءH6ݣmoBʺV|?dC:pu&@,GGec!5yN3ԏ>20~,5>`9y+cd3D*[hUG-7Z;6m ͔if-xkFюs< T{ z[4ug{P?Nmq)F(Hbՠ"F@;O"N:74HRJMiX,ވphY JGTJ>ml7Ȩ#> ٌz)r8rZuZ}|O'߼} ,]xZ 1Lq۫jez{=n;~8PCw^cؽWϗO<_!QhCB޾1;3~3]n _;ZT[.bt 7Z+Pwys~Owݤ+8HLJg]Y9!q2NY;wW@O\|)ZK(~~Eywy,yHS6x΂8Ћ[@lc(r_7-aB;`Gx=kj7"^+9 (qMDAP26 +(E#"Y2(!`A"8{ăj `^ӌߧ5v*81p RlY#2)cAgl + ZWz_h $֏d\TR +$#l'"chYv~CMM,% JIшNB%}He|_Oth@'IxE[w 1[6 ;juǸ   "s<׉\tOQyjH~[/HVeU.R4!IWg0lWt ~W5z(EJ5:Bq"sEj6r6I:=SӤɗΪ}ڍ.H$#&~d֊=ȍr7ISS\j +)xdbbeR5ēƆ::ݨXPEM3#|,1 |!4Ҥdތ´pN@O;- +R.L5f$@RJl67K|&|g0ztrBt3tȶ*Ѳԏ4$hRcn]=7 e۴OFx4k4w ֚Tklp5'|!@w{5z۫w*^4\M,p;aՀWV~ϱS]o5:V͌N<2Y %O&!B`SD@!p 6]~~yR5?'t:^YD;{,]>}n4eN]ApAPU:z9y{ty뻷PkwsÃ<كDr IJ<ӕFݾ͟0y^ wDp$8Z% /n'cQ߇׆$ڇ seyz9D O"?q /a+Go~q]y3.2;|aH(/WS;m!pزo)yr6s)TBs+ `T rV96xKlθdᴕ"ja RJqP8>2 6NrtUj6'gq:H mPvYWLjĊwBvZ7Ě >.ve[ʱܦ*G%PqXЊ"K+FpQ8do Y3KO8sR?=Ʀ`DE x:UI] rϘ׭ƂjW:D` wº] @cfɨĎZ2iE +n6NTPT(B<؋0*B. ] +NH;2;Ϭp8 JDƒYXnXy0`|1O sb d P@a*㌁ Ԉw-V\Hx6^kjn@FUɌ +=c6X=gw h]\[ zr`;ή5"HIjœJ#8JXA_>mf_5VQw21 +s3e\4%nIļ3UzX ^1ωD@=S$o*[j)s^&j"ibF[6"׹z_9uY{P񄍧ٞ%˅can Ӽ47DI(oMX!d&A<@aLueǯIڧ;s݉iDN3, )4iICr\Ϭ`&L?=5=>?!&-i oXNDIMSQsË8,VV޷fE+@:- &BbޓҵT2s|{o.LqR2& 0k oS |z-X>|<6WuGь}< +оy^+IaEadXI3G;hfW'J@VYlNS-j?Mw0d@fr|^EPҒJY(7S2aG+߼7m +o4\EV܄} ji,AaɾZW%r?saj +w9/w3$m5-}}Pץ5b1uZ/'K0&7;mqɠ:DMI^w~\=!:lZ8Z*.(qwL u\VVcry7ͩ?AX˯6,JE70Tlzjs>ӕR#G }.pұy 0uYUYk sj2'tݚeӥ͊c*+xFž-._Ja,Rk=TW۹<̀{٦󍓑`Dۥ#[I\9|Mf#:|ޅb^7%XVbfQ230[, 8+6X7#plBkuΝ~ uZKZS +ʅ3MĊZFyͫ^_T2ewriNNwf\s2 j7q8Iv/ŭ[dchq,30)m _ti27{^iG#W^ 5o0t6p_TZ#^G`R;O(GH‰b +jCq@ +' + g-n(>I*%m6_5>>/I"B?s#(/?-A4y|Y0i3fNZ7Ֆw2혴ٍ ۅden-mwLi77 ;bfGiC/s'fƳaeGޢ6'f `Utm;aXn (c]p#f'(o+#R +G8*M6/ mNƟ4-^UՍxGl +endstream endobj 4865 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4866 0 obj <> endobj 4867 0 obj <> endobj 4868 0 obj <> endobj 4869 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 4870 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4871 0 obj <>stream +h[Y~_яIJ 8^ BvƳ:lIvxt6!fbŪ"Y_{wN7{7_>zz۫[=*O +Ʉ80e5;tJM/vRM'(^)ᣠZ-}NN9G|W |NXmt?ow΁E Sne=YD31LG9i5D*hCAp{=W{V s: +$҂8LQ)—Nlly]9MWWs6K:0ǎUг3r7+~f㡻`X_hgE?l"( srI`IY˷_|n~'tׇI8r86*?0M|,M>_M;)!?\ +Oo_}iz}<{٬Ӥhp0?#L'E8^S뫝Qn2R;;k7gf4|ti.̬!vk0b9X*kXC҇*p{2q.2p4k Mj5X0s4f4 + DaOPn3TuM*E~])78Ug︠sayZz6WSo#B}pd/Sz'poz3NvfF"h-Cjv, +P >8\`#(MRZ"H}u&qyԊWc9ÑCAldf#|5MiiSYjz5G<nW^W?ϣC*&8xXEv<z7apM'ԥWޞ=Ejf٤4eWʯl-c}'arD5drFe2Jk%б, ӧFi%o:|s9 _rf9 #]-g::ո9x~qZ>M]g3 @Y3MXB+ T_ J@B qP F0%p3A(8Nb$ NPN0HnFaM(:PQaڶB}_Da$%QUH`zŪ"*[>UdVQ]&`M%Uն |OCN4sP)&yZv8~U=%ʀ`cP}v+#O7x+$g،۠꽘=@(dCpiaVbKbA;;[uD%柺p0s/D:Ada<Ĺaǁ]ׂbPVy=kᓱBIs銱E\VUr(wE2+-q]|.vQmNZQ0xMܖ$XO݌#KqEw?g9,ݐ aϔu#MTkTm U7mB{VU֞/س7g"XWh|) +㦔u-Mm 'cֻAS ykdG}-i9P7FvNv[QzShnɜӜeƸbYۺ[+Nn&4n#x8ަF8| ^ohk/n%Cf\ZxyAU$:J R3A2k`e-}GsQOdrOy:[83qszv.QX1}I 1p@-]I=BSTz_ 傀sU۬{G +E=p1±C_.rܟ!k0/﵁X'MMLXqjt>x[cq]P+bse_cd˙DadC9MU5PTS]^.51%,Ė8X&;_{k2!Muwա4NOA/k9["2_(钚Av2.`g-Ai%tP2`%vJ2n7w cw s9Qԋ.S/UW",Kc-/R6K8qSՄ!j(f'Rfe +*ɽHf',m3OФ;*iMu-;uJj+`,zl T=B鐅Jllxwi`@*8DIo/1*M::Ֆ8*y1mq fPͰe&f.x>TӮgd 8:o|ރ']I/`#ڕ}C${w]Vng +3>gI +;WW +" f8 ǧ%|kW]5 +|a\¬)oY&j,9.*8%4sgI6p^>!xt×*̙d +. pMUaj-$Cqy +.Kt> . Us4=D.StfWb Woqq +Ce!?d +kIrHaE}̽}%h:R'ZVTPɾ[\* -WCʂ;LRorfguhz׫^jSjkR6趘Jڦ"舞s#+)}I 1jPmSkI @a@2Rԥ;%t_$v|3cAδ6%%Er/-UIbLsv?9Zbg*ch";nI"gaY3p5 a:coӭ]܅IIyob鬉cςkI`M2cFt4t4t4t[uL-n17c-ftTt=eLWM#:=d%/Cs xҟ͵q۩OKKJ+xmZ|Iz)' 'ѤDm6()Z:NqcԎa?u_Ǫ;[Rnx}Ԝ+x(mTiu`Yʰ_Ԏ/0"*}|+ZtջlEV#ň:vWG GWpAj+KgߞO*цϦkD梿߳,n?\;15Ɨӏ\~幎n|fet=8|\E'{_7UB$W>+J-Bb0DZzA +endstream endobj 4872 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4873 0 obj <> endobj 4874 0 obj <> endobj 4875 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 4876 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4877 0 obj <>stream +h[[G~_1igH H$+x8{9NP=UUsf9}W_|8Nw?_=|~ŋL_Nf)sGLSJ~vyqef^;_or_%`oPr-`P ].uchZ40rYom*q-jfwf_{ c4[WJfJǛ>gmDIT) G&θ&RB͚6kJdr :6a"Ne8'u@Xz3/qS.sɄw<8L(AW4GCo?6I@Pl[.a3~{s ?xWo?uw/>>/bT>\` 0ya`axi]PD^sQQ&.Z7{\\l +:- Xj2 rtT6Əed0Xt8Msas^ǻ5fNy&RG9:hŀq8sܷ#2MPl"yamikP40l@G޶GJPvsj`);gd\$6jPLr +:;ੁKjA 2h*_elUAbO|jERVz isUЙp98PNlkk%7}3 $H%D.>4ho"!S2Ĭ_`6mD81r+J!xyPNԅ$&K,`C@| 8ٙSCòk*ñ\;.C&PE[khS(Y|HHc) 'kϗ~5qkbw8%PK\g7cm^8pQ zqƮ:kKˎ6 /w{EYĝx?QYѰu1~R U~AL%|+ qE''EXDnhPOYM!*;U(5ȒԈ"&jNl8%b1';qjuaqb-$ϫ'q'+[@&H ZK>Uq IN:0"'Mu @ $mG(=qGrs DUaY(+Mpg HJ@S:b`:5ʆ '2z$eAEe1~$5LO ڤxj#(!o +LUV +\i(Wϡ:jmnktVzDRPE7@<-#G Ă] 9^ ^RЄ09z HT +0N=ZpXXY?qe^]+~wwk'o*BDk8i ak lI5Y@\!kLNlJdñ.x-c=8p4ht Pǣ"yIh0xMVҭwmmj dyw͍fmPRjYىN&czݾ-Ne D2mN!Mɡ-'T0 ++nm&^לF .^k: pևɳw D:䭭 g^|2`xԪU!̂߱dg{0p3pt"=9 L䥵S7hЧWmEH{ 2'6 $'8C6 60Lh 3ҦYH6![2# W0&;*'[6m\8zI)jp%β_$6$35 NL)^EsFhQKQhy"edmVaVRgM)Wjۗv5"%qL&S){bi`eR<gixTGb`[ l=D̔jmnB4 pZĞV vGJr6D~?25(<@ o(& TJM Pӡ$=[8NjA޽е1RNyz+V㦷ģDn +Rm%3o:&w_L=7hW5?tG}_*XVvיM +n8m*q[)|/R>u|_1ɪʰ{%ùJdDMCw_lOvlCpMgQwwYé#*hirtTTLi' o.-kJ1952m{9cNgm!5@`+;(ÜyM)>B ?'@hӂV3kb*sܔXiChI-kTcE RR[h72L#:D3k^fHbkrZYpGm"AiQ9ǚ9G̛T_86aE(Xݕhf 5@l_gl(Vs!Xd;d& S3Tͺ0,YE wY^=N '-*;`^e|@b Ouy_[g@(㻈( #Faʡ nH9QqyDalC@ +ʫtL4[k#?F0Vvп=`[N =FEN +)9m"0g,^=HGj~MIybaPZOC# Wa~Ȫ{ X.{9톴[LpkgCP7Kl'}nV~Ht[|m1Jeˡa Qԛuc"?Կv"م;V{:(*3vTҨj/ .{7~Ku37/aĺ>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4879 0 obj <> endobj 4880 0 obj <> endobj 4881 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 4882 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4883 0 obj <>stream +h[Y~_яI`z*4IJ1@Df5FFK,9k-}Gc9gAYUߛ߾a:nn?}݇o߬g?_nnnodۇ2-L69Ʃ,n__-7W?ݞteqLZld,-ԄOx(ekc0s9Q3{kVY*@=v\% ,)%?̫C ,x\p%RkJ(4 ^  +w"c +#T𳖟IBJ"0?" \Kس𾿸-.vJa4[WJfJӻWW"nnۡs꺣\{AWʞf`hY_x #n VS'&fcyߞ͇gƚ0~Y<]k߿fz*=XB͟_sų޾{Ňw/;8xC3tT,!MT.s(~"c^IQQ&)_[7{X\\lLgx8G؛h;Ԅ5:b9:*0Ρ샎!5yL#4kzJPsw?f]p%""NPNCGGj`t H:B76ghRW*#5$9,{-sT=7җBRΉZm(kkViؔEb9' -)AHROgW $ p!a1Q5a0jxOX$ 4HPe=%Bx@9B yC_(^Nvhm$ihZd秝ޒ⾼ETLX! j@z U/ :RQRtK +g( DDV˫%RVSh^_[R̡t%:Ac`%  ׺[omO0:n6'llEth/lƜ#`ChP fXW +TURT\!ya |T~j?TױjdgI`me<7 'Q"b%bXWTcO^ +5/4 zwx);O +pXI?}qfI\P+V;D6,P -䡙fi# tHq[&Ooxa,[{M5Eh%!ZYhFHlf7,i!;lL[@zȌS;Kjm)'@t#7~ID.`4umF?e+gƎ? Q Tt_? x̱)Gg| m·c wzbr@ fKd%]QwpZ$~aQۣc4{ɽWpu/!gVtm?6%(,`  hT][Dp1p| <3!}ӱsK V2tcxpH)k?\n({ENfD X0c>[`t],hIL +^b4u:XPAL 8똪W4lK` N`sS*VQg0aAMa0^RjYE4O+xuR2Z2d9L.f k#n`(݈psɗ^A!iTq]כ]rY,kmӵp؞:{3jڟjcsOrךTwm'tʹ eH~EHd^7u|P60W6ЂP},ݹXDC?>sOZJO1Bp#0SQS.E/[a-p0C({)qmt4XGah)YRFk1nـr4xD/`skcahzLwɉ\Fwb*RNv5*^3nԈԅd`96ւad2J 0X_Gz1MOɾ,ɏ0 %#!*jf +za ,&2/֪#^UC͝of:.7:o@pozjm ( +!o;sAKm]ӅA^ <jP+}ؕmnt̤okK[]#s[OQզb_K5]Cۛ\o׹}㾱C|I ~3G +6sG?,Qo:3~JDĄe*.~\fz)* È& ߒ&oDe830_}>B3Z2BJ^dPlLLZ>5 #nR5n)cYCL1iN@h)d|>96 A' 8Ky$Gx %dK!K)𦽲x7;yK S؍HCi:zcS!Rwkqc.>˜瞤5YBGGS%^o3rA9Xw<-Rn-R{eS޳N a?J7^yOܫQ1z7=y4ͤJ]6('p.~nZW0EV1Gyϕ lf̌c"='p]%̩T#ݲ k27^U Cμ\r߼V<)CZ@dw tyvB7$:J/is5! rrH+ 19tN,]4t=DcVH;[hDR6rFFzç?Ub4U<-m]38ٮ>;wH Ћvx4,z +N!7ԝX;x[%eN *E uӹN~ćiKOD?vgߍO)G|ݮR^yw⢠]K%l=t6 P+ݴZCܺkgMng.I͒VHX2탍R+ ǒH["a.3*\L@^'A1V)MZMV:J5ۆь/iwmr]=`vúv:{?^g%:9mF\B-'|O׫LcO^mljy]߻MizTS[m}cBkSo +endstream endobj 4884 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4885 0 obj <> endobj 4886 0 obj <> endobj 4887 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 4888 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4889 0 obj <>stream +h;n$Ǒz$ u4hZyV> l2II83]!h2###_?>\x{|p?ϯ޼>9{3||:yuqr~qa3\ܜa#!%?<4|<;Z~|Pg&eX~'p쟮`vMOycShawf3[f|'o/N8rѺR0TJ'7''c 8>B22f3H$ +"MfW[W29+8qB n01uAWė8!1f``h,8y8XkAfɣM_AR7#P30a#-o'@2ڿ~{x~ 8잀T!Hi! 3 $H'vCfMX7z8f,.AˏS6 +qCK=&b;:jmt 鱰k:\ɦ\01R{`Wcrv6ƌoԶѮf Z;6 p̔ib6a> hK< C iQi7IgS D@`)ȸHlݠ&4}wS'%mhR*p>m3*S '>& `)l[v41T;'܎6 p9 +m-7t2 $H)@Oa҇Jz +M:}J~lZ #;j(PPC$󠜨 cIB` JXS`Ca  x @ }Gm@ <3ЕLvNU eK/vmETe4 P(Yu#:76 + w?-ݸkbs$;qrU^܌eon\CCyg٣Gāg]L?8ѓ3`A@ W9Y3W'+Rb\>͎#L8Pt%#Cbpn}n)3w"f2`Y0SQ*K>5Dqח~MKJRs-RJ 1p kurB^ 04CNE=.NNgvs'!H S@lrrk[QaL!EZj]u|ձܓDU'jMd ~!$.:Fxy]/4f<'B qPrbt:]=:!0`aPU32pg,be:=WIu#:1 }Qtýf7Wq_Mp@_r{4{͛a";~GtS͝!|xlў> WOëoo|sS(C΀۳ѝ,3cfrՙ (rFܷpcv3_4cNa׺LX^ +!PT|߽W=5/﯇7`a`"d>~y{zGƸS{=߽O=g03( aN "\Ilg:pWfu ?GZnn:.[@f \l$hcp:oTvN[W0F bS)f@`CMb)QBJ\Wb{`5BT.2Wӣj58u6[@R@|bT:̵\k/ҏ%S%;3Le=XcT0'xrڡ. +ٮVL PMUn2uX%1a] +tdNpu1z1-ݺbbr5 o۔.¼lQ:$[HY'y|hH Q2 +U=Q^cY=bà>rfcCU%z7xZqc* bqM +T6c,n[-oDq* SE DqDޅ\)m0Κ!Y6㺣LmTMi6f0$YI)-u#1-D .EW˫7ۥzAp ̣i UgXId9?Dm۲;sdYq$ +$թ ,YX"HTylPjg?TclRJ5]Ai Q{>U8Qfm hy1ek#:i+>`x@,& 9\h3س75rvjxV3c-˙ }ݲj؞/w + z.Gk֮~kzt0 +}:Bf#>*}hԕ.ˋbi8hW@f䵀9+$$zj% jxsv Fi Kz:q.Zxp@ŀC{Tw)|L_ i͍aIfuw}T_pD{›z΅'K6{5u/;Zy1"/kj.-(1$ :[3˘:wNۄ:tיltfD`UpT]7>p4`eϒIcٜJ;L8X,!q_#n삕BT ܼOyW4^sݸj S;Eєp̱G6q^BsvOdWPڃJ z8({ jn愵{+":^E7t`0`|sMq|7qX ?XfrVTi9tOY~f8uJ:ǷIHykS1r}dt|M0lD3V}P3?"2ɼ9󴭙Ӽ|9̾(b1e\',\;\,Ǣa$Ε2-e^;;J[?Ss!۹O> 8RZ[^ຂu9R;V $#,؁EZX16Tp >б1)=aLuh-TCSI ɢX]X/Y YPsP|FȌ-i!NJC!=P0퍮Ѡn%1=oEB)HGg\SX@:kVk벊eKzP֩*\b^5OrgE,YVx|fk3x|f2SGgKm&޷ +VwN߸,]]u2'u:U +\l;0lw:_k*/ |}_?WvDzq^]+{cY9o-൝,Mtih +_9x zX7UVa]v5)@A Op>:0/`SZ۷bfђ5Zvytma׊?7ZGX3}WhGw2rĉ 1elMI W +endstream endobj 4890 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4891 0 obj <> endobj 4892 0 obj <> endobj 4893 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 4894 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4895 0 obj <>stream +hk~?J|/ U}vv) +ISb \=N j!9ys'z5_dr5a~v:}zpR> WRV j B9_9'B]Sk1v0Z1[48x7kmS0|I?Jli +Wm`X6ӱlU ،lҐ5B > "Up2 M`Tv,2ӱH`3ĥVP8`G"8ൊ[AbXnj,׋aZFn~>!QB#`5*y` +xWUPt{drVNF~4܄1B5`5!m%ovlիkT趿յ673߾[pƀ5+1N/7C{_/h_]?8|ɪ:Ipa < +-E /4|? +&X*imJWWA{LU7` q jFv` كM4׎ij|LaML#5M7RV^ᳩt+iWY9 3hIOoU9T"T@& N$(S hhJ7*oo^Gx95-~,  ]Ȋ^4nCJ҆, +0 +>/ `cly_@c\e Ap(u&1>AVy` g2Uc} p;r&`h4(aų!-> *<|5_;RixM~y5Fx +{٩5왩Z<3蟒Lc!41~dh1@oa$;.~C5%YK2SM%T6 5%dӬ +w=d\ &б4G|)A`4_-IY4<+5|gA$6:PT @pW6x(t<\Ñ@iX}:U T˴pT>2p:xHD7)"XI:xq\1%YҟgeV ä`9"NaA9tBi X5:#QJA2Y.;"~dP fEU<jJc`8*x#)}掼ϩ1\'*n9H1[Թ};d69*)Eǎ9Uzq|1+wb.I;D#BSr97sUq«svp:BC Lc2s_A&l1zjzԘ/шtAfru=3ѝc.(]׋|"\=xS+(q3-q{T +jLٟɟJ hu5f*6:wY<)gy(RxQu#4uwBvY .(X 8rV7q;:sfff,KnV&|H^"*o'J|i7ZǪ&aG2V4&iTe@}!^ :|UaxhGa4lMG#xA,Gb}YM <0i{c7~!6qDK(xPnK؏$nF4|:-Z46ʖފfoGrx~8FwJs5>wT a9|2`$>ׇveDSԦ1ۊÎwk6ascs~ܴ'[JU7IV('?"WJ|~?R:6]5e9Rxm jTҝAɚK99"nz׼$pG2/\ + +B8nB: +*ݰ|a·jχoRܙ8kb=ʕ\(t&=n*!|?Ӱ6>ZhO|xEMrnRn0aJn77di'I>w۷o=<$GȎN5)G7@# g0jwh-!mHK0 i;f:+~7序4vW2Sk,q6LVC6&S2>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4897 0 obj <> endobj 4898 0 obj <> endobj 4899 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 4900 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4901 0 obj <>stream +h[Yo#~ׯG;hG`4L$;F@A`i>vmg6*MJ푂x1Xd+V'{8_=t'>˛ۛlv򻿈bvXNtY`v똴s)Uq. +?v +-͹vlZc?4md|gpm}/U+q~x'W)`}˙$w,;cR:][.fI8eA6DRQORN D&D͠R a{@\*el oL2q>p)'Ķ2W 3k"`eyIw0!〓]ogB*ѡ/4Sp&ܿKZ0Ц nZ4;~}y}v{u{wy~\uwٽVpƃW0A,Dg$7.15L$g&莰R[Q[Q[2aLjϥb4^/(/t+[IӡRضB趭M^#HX5$ ڗ6YJP0=v \$z& +f9" -̢Mi }n|XW&fV2(Si5+x z'ԷԲ<C8ӡpo]d.#RS25!S2 RФ^0{A6eZs-8콀a+SSJ[t\dMyJɄ^@n҈(]lƖ>Ϙ Ft;R5<*_ET)ѽB;'.AρhYtH抚֦hd9q/%xL5px >Dh|gTdp3 S"b*Huֹ}Em q/U[Ƨ %Cm6+Q4RZ{> 62J[cTL[ؠS!u20ƭWBh8PL(E[͜Ȅ83`qމz.|N1gA|!M('9yU$I,Y8MJiJiM]DG^zqq,Y,yG9ji7,mi X:l-uN<&S&Zd],`%,ӠR#h0fHR0Rsp!d&E"qLs.uTKB2LqI XYDP'])4= h M Z$ O5+Jіt%1rBcn1EhY=]E<8#Ն2]&l GP+uricpp 84lӆ_Q۹9/;c$\}bʧ)(hYCf{tE[iHQ^ճEaB»D IawzY@2'Eh~i4ݍ(cT{#?!(Wa PQ`}Ҋ.Ü2uZo<4.6D]rX֍ +1E!Qc3VW166V:N;n<i M xUx5Tp< u +{0e؆ʲH hdMW0݈8A[} "%MξixEd`SK"{BԞaAeFH2p| @I6nh}( \ZHۑ-ȖLBi?"R՚g/#W~ +qA$?~@Kf,/B8("GKR/dTq-~5F +_:\>JZS|Kw)jOXghݐx +:*͌ة{IG"+&R[3y~% c;vsdN=Ew\4P%ዖ?*H&I_3NdyX>E E;-}<$[ƇnuNnn'chI=k7sq?SߧjTͷ d6Ϲ%|\xw qtzufZom"]pCk#[¢dkT7oww돗f铠&ܳ E\ZzΏ\hQpCZX{ jgECpKXFE6nO8DPUnr"xkTYȭ* 01}B+(L<7妰-O_IjgJ45EtQOy8/;\W%lWJT).ˆ_K#[ao1҈ +#|t; +#٦JQBNBY0)ӿS}Sq x( +Mξixu}\OYsB 6^G! +@.M5ݥAB(乔=WHZ2Bp jnF~UɼByd5S%*bb/Bi*E:|QH_ԒymJWԿ/)D)P*T%;+vF" !wG14 ;Qh+2Bqu4iWӤ+/P2In +EMuBH/ZjҙךkM[`B:9Z5^2k!D*x{6iN +endstream endobj 4902 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4903 0 obj <> endobj 4904 0 obj <> endobj 4905 0 obj <> endobj 4906 0 obj <> endobj 4907 0 obj <> endobj 4908 0 obj <> endobj 4909 0 obj <> endobj 4910 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 4911 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4912 0 obj <>stream +h[[o#DZ~ׯG2Fי6^ xGy%qC՗JM1+N._W|y:ݹYn~0y9OnnWռ{zswuswBh߷7kLsx5ﮮۮSA竿8A5QڵjՀ^a eSmXQZ|p* wXmHo<@M L5 5@pMڶn$2kh"m 66u + +W+,Q8Fzකۻ>r+Y`t.q} 4лH-񺿾%vG MMimМƫUd۠۾,(;d j;`5WÀZ\4Ovqtnn*mLb/Ğ87wN}w`AƆ:5p<kN0ovϰ VA |󼃎x\jBh}$u׺`R! ukmZ d]Pm7(m֦k5:b*+PΪlk4G}C ! + =,Z;Zy*kehVzo`2 +հnrt#~a\+E BRY.(*ZPo;j`<*|>[ #?O5(9ہf ]a06yE ѱ`p:RԶҎ# Ԃ+e\Rq_,8kTT+ۧ"4`ux+Hl;>UКp: $ѸPi>^*W|!NãңbλyXߵ=zʬ̙FuH&y-ʧ$񠚨 m#5Xc5Xp/Kבx;6hl5Tl@efXƖ_P[J:aaTոe(,``ܾwkp#Wb{~{ @.hFak=^Ⱦ܀jZ|}a/:ASKFj$gWzqf@!y`tуԀք8IUúW`8(.i9+z&khr@I&\yLrquڻnB,%$Tt'"ǠCKqzT!Tf֞G%Lf* XTZkG3JXIkq@[(Xlb3Y&D`cy^Hӑht()%&Rko5ZX,"aU6X EQ;]DZiχٰ7XvYȉ5>I8?B3Sۨ;,(`K)PhQE b{aVgrU>SUJ=jO3rHaw"\L +Z@p4Gua\󗹷ό{$;Kx]duKh_EzUhjmT%Uٳ=13 QR$ҤEkbRVb6^Vf#AƸajaUi֭ 6Y`ZY`H^ =D;]1}(6kX*͍;5giHW6x+̸FsI)YZʵ٨FoۯhFX Fx.;'SaEǵǕ}Ͻ}>Wm{a$RqDS݅G&%# +`%fP%]]k@3im'3^K]G[@+{R\ϯ>%PhJJ:3sD(hNس \~np*F;ճËk(t_ό9B[<{YG*cimH\pt Mmcyl#{lcg6:ssE1JD웬|$ +6EIT3N*LܩUS_trd$3wpxl:M$`ӉjX +(s#ⶼh-qR=3L ʇ\Fa94(bDhv jsYò^cb{*Sl|w,9ZPqK{)3^1+Ui,lz@{q|4\1qP VQp ;d4jfjV-} E{}5o +oU|L5?qᴴ[< 7Y`i 0VrEG6>Un16~h߼U6,no2'  {m@:X񓑘Hu &0Iԭ*Kc{#~{NwsvQXGa%SqXRU"/- +&\۸qͣ%.@eX3Z85u3αcsRgm"<O )avfsk`=IAB' +uN_R6X+CiElgH:"65UFN?Q"9ixunVxbMbALFhuZ;&-vXx/=X1f=g[Tjyj\nc agn3~<ih6qoS0~BU{h#O\K%,Na<UЂAȞSsǛMEò.DItJRWYY@˧ig$mAvr%Y +߼>L[LOvuON #ͪ`,s3G?, +iR![;\t:e8^ZxӲt`. p FJ\|f H|/׀~i~>#x0j)"p akOù9o~#6s?>l~i{^0z(3Tr13#yǼ<++y VZ+Yw34~:2'jغbNTNt(Srr銈d"#1x|5Eh* VrB!H;hr5R +jj{{EE_v0'bmN87rt^KdyNbUTal3&.9K%|V3zI& ;Y^\BV٤QVUP14;zaVQG/7R?6{˦ik|;q<}5U:Q'~䳅}u} ]9.%CUlgJ+#~ӻ*ZPtח"~u*2!EN::^|1+Wڀ$ڞ3~jY_''SRkM,Z[ +|t56ARD}2OukN11]}9p~@nB@Qf m}N. MD$1\J9•3*J{"Oݜcy;Ƈ#e=LlUây>ro/b{)!V&RY*!_Pt| (X5*QjT 3e Z?._r +endstream endobj 4913 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4914 0 obj <> endobj 4915 0 obj <> endobj 4916 0 obj <> endobj 4917 0 obj <> endobj 4918 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 4919 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4920 0 obj <>stream +hޤ;kǑWG N{ bKrc/p )R`쮝~UuUc8wuum7|n~|p?M/_tFw9]K?|Bn>^ ݇~tws7z~;=49mO0h@p=1}ôaCt&՛-? +w_}usQDZm=NW|OHQ7"("0rơ+'lz<1HIP{[{jw"C8#!g CuA\Y_0}8v:ƒwJӄ_>뷯6C +,x, -_=PJlp aW2=z{xx|~=t'0ZHwOXo:p>x=n]z&Mj^966hl?DycwɱWt?xCz",Ķ7mܣal4hcn +{o*K\oT4V>2T{#pjCu fiQGizJV^yr,5Tjz UXok@T3;C 4qp)|zF< hnBc4xNz;xSƦ'LWi!H*BZ#GkSS!MlMARqv$j}t!w;q^ފvQO-zի1 bHO]B541TzQxû}~84o:tKMy)T9105H*~2X0 2*"]dݯL7$wݜK/e(zSPm+Ԇka&[4crr;43A@K5yX8=p)B2#\?| .qH|l9| }>_}U?$vYݨpISY2bͅրR*0Lduo,+x:ak:cpfLIt8 8퓍}L<-)1*r t!x' Gu jl܌Pv'e rėz7'841` +.#tڎ6"!duqv#ӠfNă?! +Tq =:`4]jw 3xAŷsLJDf{7 @=^k1h Sf}oH4ht 1?1Sљlbn#zh-'nHT {MDOra3)8* +Dz>-N1έ7rl"cˍ9GhհJg '3xW8i茌<UlNџ6ɳ@LnXz1J ^[LҖn80?!'ze(*qPgLK}v2$`rc=Mo`>btQ Y#ݏ4 P7}D +d2P[*hK&X\HS)++&_u놇zKdLrB\֑:ѓs(pd[[Fgb^ZS̉Y<#NЈލzΈ%@ E %0&c#1 {0W\<42ѯх,@&,y7~80ѩ5WnV,R_tk ͂k Vo9BǵH]>LwnM' Q'؎nF~u'>>=; @῭qW^ +kʠ?WL)D@p ߉!1i(>'Hʫ$FPq( +n7fC(ڜ67TLj1IyRVJ e؂4g6̾Xo y]Dk3y{㞹?oO{85ZV= IvWo;w! `XϏhWP 7NV ꤀[Sw{|_{{2drg%iFbMeޕ,'[)xr|g9x XנQ +vhC"pS+ő0nދH1g>y2Mԧ3{duƋ3Onw3Ţ]lgjkتQ|>_ٔJ7uFHm lYeT5zrws[(^Q, 6c$6PTmcLZ jJSٍ"XmSbU-Ş 1t>3MA bRf:ɕNc ? a`yMإ es,@CFTjgF&_PjCGG[l?d) 2ːXʱ^pm2U9N+tpC͟͢l(c}v G ]Nl)vP҇ p0-JpB?kV!M,GA9KJ^-}U䑐 SNT>~7/`*ͺw+߾XSsDvHsn4^^ lRL5UDˡFb+{ R{:%4N,IImJoy[xCk/Cľ m~ߓ}w!'_۞s=n[֍$?\;LJG=P1w"8Mp>s=%d+4.CVZW6mz)uRYӝ8 q;M %?*k>6Жe#;hӔ>G2fl'9ӻ,3"ImGz߫}, .H.&ζ*.m̞h wSz֧(d al,RXBAH^e>CeGyvb0f|2K R25R,pیQ+q4X|: W5)E{c+LWI_Ugwh +GVr@< Q`%-st<ꖐ<'4heCȾEϹPYb,ߺ~vUL4r1묵qKM=gȹ9jktH6?D6k<{9(A)yNP*Gl,.㈶ܽ KpGfPtfVR/jO&]vI<8^}:e=>E"29.6i(vul }.82n'R>bϥ˩.I036k|ճ 6(RȲٜ`uF5giM&9c}m˶gAr?$6ӍLՄR9KKX)/|tq!8eM`d | +{VKUjc/Ȫ[=ȡ(UBBqu)7߾o00 +J8{ވx|(WwQ5q19+ztˆ>#qc\U~bɺX}涑/Vp5_dhnR ށVxL_+;˳xԝN_|y,PN°"\nb$𓲪zmAXkdIFmx;gz9 mʍUHRJfsSE mtpf\2M9[[Ks%Ә*%&nSjUODUUUf'IJFsdΡ7)vԗ̭pTSp!$[n;Egh%k$EZAXz\jωu\KEH$D's,cg?T?LY/[=zARW+JR,&F?G?*.DF m$QBH +u֛q>9#ef8-aeӔލpGE1P<. sWa? gP&Ϡ)V@ 7G_$Y$P&Ipc`~CM_Z yqB9) b&PlI6$~d &YeϨܙTT r6&z +|17@}>W :> QA3ǀGsT:Ɂd"֑:ýkŇ5]˲E<h̟cdKMgeRKX%fWgmM +{ `o/=Oy2.qk2wwjYdŚ6zKlkjIh[жж:aEϛ--;޽P6cկRߞb{ 0A$U%c*!V/:=i`*gFGf֗X]PQ[y [1$1!#fM ھfO.-l +?lSwu/oOs^o,d13&!81B2Ey8cѩ}[?>z ͖ht3;\\4F~`:1>WDj=Gd ] ˴&{y 5$Hn"qP/Bְrk 4_Q!B2ѩ=#R\0x-EڪYW>UuSءj +endstream endobj 4921 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4922 0 obj <> endobj 4923 0 obj <> endobj 4924 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 4925 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4926 0 obj <>stream +h[ݏ9ns-rM `䡧=p`s^߇Iy +qDQR=o˷i]/zom?~OOOf2L +iq*⦧i^㧧 ,.I)jMR Plv2931LJ;K V;,=>3k޹D"h2Q C <Һ9D"l*ԉ= "+<18Gw-7@J,0¬ Tqղe;|n@i..AK6 P g#K;ԄD5:b9Z6Ck,%ҘGi.>20y;`9Nol9:hɀH8º# ml2Sa\/E BUsT0kAl3Q+S %g. z  vd-]ɠ"ivv(0A-ȼ @=R4* b,֢A^Ԋzm[ŧ +sH baV67ʉʖZ#lJB XYixt=|hMeNʜ_&lI$[>b܊i*񠚨 sI_ w 74#+2,UCݶFfvTaKS-;WFp2wrN6y-Z:Q6WdF И,431tLri /m$6Lu}bQm@^…sZU@H((\U-^R^N)ڌvtM9z!V0P9V,hkV0ͳ&yתּ)O@6>׵jKdF61l;k/o RU`ekCcQ a6۔^E>KMrDi~Gbva#Cwᴋĩ*j%!NPY?r+45ưVu6#{0NU C\]羶5jHd"m\idE]L\$)R " ^m{eJzwd`Uc5A}[ 0ZL۶.4"e]NV:$g|F]C㺣DyW&!guK*Cl gZ$GҦs NEG/Qޚ"̞LjpD2z$#MT~㮹< Bl?&VaP5IyǤƭ +=8($QYjd -ZB??hh#y FuhHi-Ռ)=sIƩ:+;C%x9["]zWg +`[opr`ߊaȘf=-ft}69 +f['݈xr.Jg9ˠ{Rg˦3`LHI6G@ZoЫ%**t.IIV eyPLߢهcF63$.1UBnHAGV7>"bpa xnz}3N@3F{®ː[lYm&qExy[ '^aUU,;j(LrVe$٧PM_l-ڥRX2rX׼oV GAR55tgPf֨)UGN^(_`.yAh5:h&H,>qŽXhDڎ۱x톀#ov5C|t|<*H0@**5̧<8tsM ;5Z^gtFw9גt+HeKYYwx@3Q84 ;Zh"oRw`LeJ AcrV cgפ̲C,ӈqC"چP˓s:BD2uӓ"" ٽ0¿[p`M5aihjёmo8$b/ϐN|y#vǥ9|}̷\ۚ ͻg} ++Ԗ<҃v$SZ~|1}4r֊{Im1YNUܲ{>xN"U>$(9u]{.Ža/: k.cGAvY/Yݚݽ2SoTQo}#?hpz{ J_j9Y)󵻆8M7Y (wh,a\ixey꓂N_4-XϖSiۭ;K~땙=Kn)h|ܚJ1"oC~†2K i M:^&Zwk.|_^K =l1!/W[twPh7K:"=ͯ_ _ؠ|{4QzU<9*\7>\|~7D7!Ҍg2V9Trw"r%nOh_JlߝJ ϩmWҿwZ26i"@$ >QQ1] o|a?ߏ6Pp! f/S +PZ\`9-Ih;}Ug( a3%@(ku3P JtWgo +^po1כ&0̔C z7@#}P +֚:Y6k C5x8}s1 ]v酿]=7!VZœHXNz}!akL9jE8Xp?g*@y~x]jb RޚnJfЊZr37jm]u[Qa? Q~bsԏێR}a?j;Ѱ7- @]inw{ss]Sݹ퍅{SS뽙 zom7ὀ{DS]KykyF]kkkNjmkesE; qh}C)C_Wl +endstream endobj 4927 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4928 0 obj <> endobj 4929 0 obj <> endobj 4930 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 4931 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4932 0 obj <>stream +hَ}}b @ #]AXS^mlq@N"uXś߽q:n?Ϸ/_yb7糝t~8U}ĤlRe󛃞^v:_7'hy}:`7Фv 86p?qf>?&OʺRʤ|*%O'ÁRU,2"0h[&A ScP{`Zw29+e A8Smr94l1 2AD\T e,yݛ/- h*èdžϦ) %(;`~{5h޽~՛_]0ͳq|+]!JA ( 3 $D U(~"Lm AGŽ-t6 +ge|Y%tu'"1~!=<ÙlR Uރ;߬ԶѪFEX xN-;*n"L&(6&ü6[E[`<7 5pO +TP_ço#|!Q'?$&M.|_-mUa*䌂$F\ YiB8\d25@rD +t joڸ4VJC}m +iY ZGu^v6yCj'\mx4Jډۖ[nLIXPd{?i{Ayד^âm0Uݣ55c(j!xy0NU0؂j|7|̠I-On3,SCöԆma{2BTiDPZa&ZܪM9" +5˱>ƒ@[%6g+<ȩÀI$t~zlRt4kΜ221#Qh䈌1$LJա$C e3g zʜx8P7iX$J\2#&/0`s .L=}`R.PtzEES.?&bSvuOSPZ^xnj ty4;p%3Xh,K{fnVpҠnYd~Tyv+q]oh>*b#7MJND%Xfws"_̎8 ^Tvj[ـ}Dޥ$XVzSA}JRMHg |=9<@@<\̹׎ăԹ÷ EU[ύq 9mHxsUwe0Po5$ Omkos'@9d8hsl͑+ik[L]sCGQ(֓Gd ZnWhz5c8>4e p\ `O#v5'"*?Vb%+V7+%Gɢ̸:~}uĵ؛GE\Qɘ x5F]Lwȧ2q- +n]؀ķVCZ\CђE ʶta`C!iB.ȧ`0!.6;(\w:8.Đ˩c?S 9֕>ZܯX "OU|Uu-w}<*hnݱČ>-s('0U.c=xgҥAoը|Jۂ7_DzўqIi&so3t:Z!KQ!xRI1V*!{tf0.>F V]suDu!W:#Ppx)<洲  T:ڐ6TN2v +3pP[9X94X̅'DgzTSpr[Lh0'mr-5uݺ;<f$u +:JGAϕ&/Ha1G<7vx!y!wԉfge<ьvYJ:);0kDݕ3|C|!- + v)P |0?o/1n=I1>}ݣI78#K0fM*|pŶG]dÀ+ S_;JXX7XutpFaF|S$2Js{ 1w[g +/ 7jm7h3nu@y.G#2 T`ruY%d^?ؚ]R׆Wܠ nbI`^e(%#3;Eo!p`#kKC=2L=P ̟@KX5C*Ni,9 X-WMѫdj~QSIJ$iGA˭2o md5! +rl[ALJڊs@BRZOzfA[SLY1j%)-j]Ѐ٣=6kUxCg*M=bVS+nd[<ܮ; U'w9g{t!.1Ykp|)=Q˔%/-XBo D,36!p"/w>OqxX.vlj{D'ZjU=Z=r9ߩ5*:NՈ8z|:0T{15ѫ1ԢvnYVXWM{& +Wf(7~.{]=S|r36W:5]+l5jNOߺ8fvKnm[ r/Dj$<$SM/Jv[M3>ewmBµ&6̓G^G/Or/Fe:[aͳ6I"ئ\sL B{EzPRo<.aV5/jF8ʗ!=6p^$dK=!L aB a!WaZBinE.C_C9:wn}+72 dfI^w8=-Bz{e)nhhߦBGхGl" ;=~i@C8ҘL8~„8~ K,Od ͖/%aOKuXwiK* +endstream endobj 4933 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4934 0 obj <> endobj 4935 0 obj <> endobj 4936 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 4937 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4938 0 obj <>stream +h[o_R[-a +M`t\XjOĉƈ n9cf8nǧn˯oM/_]埦{xՕLwu{rgcc{?н9`|wu^ @&M[KUa 吹ligLcz0dsD5uW9&mcȳ &<)TM9dzp {/MBĕ> @ඖۇ$U!0߲=hӇkape0,q]/3vu9){sv{&"zpاEвsu3[*{z56@w)ѲPޢT?շ~Ak <ˇ޼{.|a]'f86 +7uDG66v!]u;)a5~v{?ܼxxݱ{}_xV4DE.>fBolg>dfl{wKP05wC2#9+}BX"'R3BQ + 3OޚHekj aNp޶(flG-?`T4炡 lނ3P QiEzʡCuf`]Ƀ7D? PS2UC'`kh5RsOӐj-Hks(k5,f2>`6KGD5km dW?\-dpHƐO"8,*2t: .ڇV%plE$DSlZBF#Rm`]3*> 4g\HrXh_ͩAZoć7G( +5~yR\NzjԂVH  怩_eqJrl#$[lRfc_cӺ56)ԮI[ n +Fc!tiZffZ푵z}d|+Z1fZ,#{as`]CVYv5AR9cݘp׵=*׮,lкM7,ju.je'`AeE+૷iڥֽ [AC'V,&ɡ yI &ucZWS|F`ڕI3Ap)Ďk̐(_rk8){K굆ڥeFOQ"*zk̦ (CsL}Itpڶc1S]Ʌgރ,No׼<= ϒD< &ͧr⴩*hk}js-҄g,./x91s'u8k y +z#$Ir*mK/NzZc8gE9ba*g;+4gOo mڂ,pRdje˒a\c!jYIϨ$謞2Lu-:").6f^tj+l,ʢ>앋L(Yjf4\sQXjM?dK'ԘZ/WqjY3e2Qg \cI!6z;}L#y:t=<>]7運}wc{ûttu[7xyexxP`:FM[J\>q\?2 OgdL~|L\q%~GuqHdqgI'NI\N +4Kh +4OC?Ogx O3D^֬7[H8/]%4Q}5%\\Gܯ5Tσ_jV]FP>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4940 0 obj <> endobj 4941 0 obj <> endobj 4942 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 4943 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4944 0 obj <>stream +h;io$I+T;R20U\nmp󮸲2=@ծxq症eo>^>W_n.on̠RFG_BT& 1:e7.G3]|G'^gC0Xmw@}#C80s䦆31QY+0Ѹ償og7p8r= ؔҠ\LiOrOIU2QEAN\pS'bBKy>-w(&^ A8SP l/r +>p)i`& ҆\tۇǗwq@+L|d Oݕ8erZ6} ;i!8ӻǧ k_'@D>`0|:D B>!p@On ҶԶ6J{/흱v*-I' / G<)Ψ1=/L0R[k׷kH5=^J&҆zRj3lGNk ~N@m-Uxp{e<ۨhcƉHfM܄*T+︡wR0 i jxooLJgSH|mT@?M3.q7hFk dqTquDR^`{M7@1"A+hjشb[ { Ԉ, h +S:&&K #~{k(vahP:ED,0 ~ {7᫝Wͨ@ tu8Gش,{tp#k.]d {\ <~!_Avp8[:tv2݁:eBFÍ4$x/6i'8ϤAa8^)+egz@@|ZҬR;ŌR}'b)g8N20r'W8t͐QG=fh܉ $LcDd#rk;_x} xԶxsAl[ V|gWh\OSKB$-ʇo|yr:Bi<9 C!Q& RGP?MjRa3_"52ILK7D6tMc˓ypT|݅M$? b`Z:@GN~M}~g+>Kp#"})B:10Y MǸB[Є +2\D +솭JɌ +`\]{vG:0z~k?n# +&XiIJNt.h"p. pںQ3xՖ6psH! ǽ[:.XVͮ;R `KCR iϼczecX٢mЩ@ͳe3G+KgCOˣ 5&i2`asTP<]>ؼ$t +wS)[&PBrI)l9h-^<W fF:ASkߚz{ 5*'ܷAJ'v٥W_2"nT趪O>qVҷ܎Y1x6S͹.ӆ m+,r\- ٽ$=t [ٙY侓_zbf*RKL݈ela Ϙ=7@B*("!m!)` +tٜ`jٛ`g0J\#s^u ֳVX^. _#J/t ~ށ$1&x / ] K㜸Ba*|9Ԥc9&2|0,?R!0I'exXMUaPL~`UQpgс4"f-tlDp#WlVKd0ϪBj<7|,X V>7\d+ϕ6O1HZUĔ:C$Zz\Xp߶>'-}B/Z2wl 4j")yh5=@rFMa.$-54(\,\{^mA05)}M[S\;jABR[1lLݚ1P< )ٶ2~qQ.DXٺxFˊc\ FM$\M*αQGppZvx{R*L*:F9G~~[֝|vDwnIO@tH@E'm3ct_=Q +^rȇb~y!ʈ3}d&~y 4XEìʧӐ[ܒ,7mv붝o)KN*;'Q!7բ{ļ(c'Se48.>~0y,,9BkƛE皋F=7nm_OEфaTp=# /eNA'{s7:kuA~F}Zdz B8Z0N,l[8`9M13%>S39ɼ139'oIe>ne.yd7 ޟs|s{oޞMͣ3x䔐^7}EYWOdl총˗Socxuyϯ"~¯ $}' 3 qؘ}S5(~ȯkJ@ NbS#h뮗K@60% t FU%s+H2} fG^Pו<8[BU\]r\ˑ(<}* giS==+wYEEwz &9OL}ȹgs"_xݽJltL}JbM8瘜s<3S 여8礎 fuE S `7 611c;4[.'%smHgw%<ƘsYHQa1e8Av.5}6/;0+9N:Wʹ͢ bJtQ$uKl\KTseXKMmYιzwW '͗+3:~%Js,D=l\.rLeS.WmʂdD9Ԓ(GoR r\/B4Zr+vZuX1 1op0\Nl90,)丘 tc ț +\kA.Uzl9U1Ry1^!dl;W {Z@憣ߚt4r,njIN K=Lڪdy-45_C9c\dJ_{6H `vkPT*^$.3+&(H~UW|;Nc M]:e]jtԝ%Hi͋3+E$`cu~phu^I`mz)c 0jv~48Yʢٲ]x@L>f\JT3IdqGQ)ۗӲukY42#ʶDZu7(͵/ 3cy 2=ߌϚ=mȾs~s`}m>&bȀ +z}Nuߢ +~| O߷ctջOߝ~y/Oe+څpIo^0`iML"p_~ogN_rzÕ}FfG@g ݱ|ʋ_a5xUլ:{~-U.;Ra=a6 +endstream endobj 4945 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4946 0 obj <> endobj 4947 0 obj <> endobj 4948 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 4949 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4950 0 obj <>stream +h[[oIv~ׯG2[]A c쬀<ESZfdiVwΩ&ٴMV: }ϯ[o>qzxzl}ooonT :C}t7j]w4QarƬ4D+,.XJETּGyW40mhtˣgWg|eB5 ⺱[ fCr/Aڼ) <$OXQtƀ f=&d.ds2i>L'm`@2@gwws' PI)u )yuwI p '} l'\wB{7z/āBoO77M I}Z\\vi~Fi;ۿCwݲuU?th!cs rխq^~HV1!{a#OV]JO>􇫕zl=syҦ@k'0>8zM׼3.LF{c圌+g3hRtvqvA{ 9a9@.MbOo+'qR/w%޸^2;StT(5A`4$qdI,~%cqy~j=w5wx܂g3<=eG|! cuo߃`fN[⻛O4FP@Y-}"W[Z$@!Hrosɛ 2k%!d 'eqY<1g#VLn +?=jfV V:u5Ry漋0Q +JŹTI %O)b1ٴQpN⺈z';轔&NO*yZį.e%!7!Jrw#f+ GuKp֏'S,mXDOqQT'YFdPs *Ձ|a(FOi" 3+K=wK] jF[qr4NYSdޜg~YE Rxy<˔ KIFčiʴ-v·b7܆0JppE֥%A񤘕(Ў$ &9$R$;#U`cUQ`ac?|}DyzSF٣`=aXAߊHqSLDr!ⴊ#:֛sPzNy2Y2$@d3< +#rqL} Iڬ5kc1@f?l??}|ON)jp6 l;[nY!gM L{60gd-'*\rn[g }m +n%p;!agv#d9u|qfs0<xvT]xeϼ vgna ۍi@Ϳhw fp>`~I62|nt4y`no-"Fŕn ++{GZOVآHO4\L*7ݒsՓj2__]ͪ5!iä0zU0%w9DSAWjcRpv-PP6\MyfO4uW+A>7{^Ж*|cZ2O +cav8"v 2}S 2MKy)>. <'\$fW +A &i;uKSJajEjjmRp*:QaO^RmQ][mӵ**A$ʏtkYfwI.i}Dz) 4TY+ZU0D1z*K5clp$PC—05 +aiI|sR:j0W#F9MXBzI 0)Hե=u /xF ~U{u-A]M(^\6Js^]S{6g^ŀwz\8 xڀ$u(Ͷc6&q{ʬ{B1X1LOU7ǀ3-^/SOP"$aP4N~V1NEza%D/?z/mHh\D!+ULB>O[t^]>I8PbU9"~@3e0nee>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4952 0 obj <> endobj 4953 0 obj <> endobj 4954 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 4955 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4956 0 obj <>stream +hZ[kd~_qŹg,d<<=g= Up6tS*TWU{|:AJo|p8}:![)Xl0F&VPĶv ;2!Ny0U%@^lt䬌*-cH!1l_>5db uk:Z&U|0(LVї>] eƨd陕5akjTt`3rGemU$5͔ybsAu}A-} +IUAFVǫwoome`;0h;_ڪTp>e7ؙ ٌ䬀}vy6)40 +7L$0E\~ ++F(3hHYO{W9>2v/M`i(Ta[BnQ$R,T#Oj_MU}誇DՑS2$ش/{,`Q䡆m $QI%&iMu]Y4;x`La|0"N,X-{xa%Qe6ry1_ >D8px8w~%~Ԇ7%ӒIf-z4җ18h(4s_HnT ڍ ی9b2 +Cg:ͥ2tf 8UKf]~I8ŁqAehn떁0g6.UtN[T(>W+b2- h;NOǫƀo<3V{ۑ7U!UQ|,_BͿ\cY-33bP'4j@z` ]qee_nLjWH:ܜB\u݇晁(c LkVQ/N91䗖5LH)2N7BFғጚ:Ua ֳxN,gTj8Qdevqf}xcm@tŁt=WTǧڢ]5P!# 3T Tk]^:bAx +gu[B} +HWl=G'St&*:qM +\)U\k9vT̀- Zh6!h!>F;x& }&.QG[xqAӽւ=Ǖͭi +r$ si;U9gE3XUpmzPNwGC<y>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4958 0 obj <> endobj 4959 0 obj <> endobj 4960 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 4961 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4962 0 obj <>stream +h;ێ7v@~ e#@d<yh͎ +ksn"=XZQȺOoߜ> 77׷O?퇟uu/~Vz}s80d5:pJ ?]FnuW}5Gou–.3u:t +^C&zMWc2>& 1&7pэQdTϴqpd^C# %0iۀ"G~HN9K-f] l%f[ )bЌH2$:lGHH oA5M6{dcʀŶV3vF^H\0<6Ӌw R&7&D.Gb`U^v-;z5#yn NãMӣf  1F=^ "xkNPP4w AzQ?5Ƒĝ0(5`Db0Ӭ/_^z{$(ԌVH5qۮQZj`ǝ6-dS^3LSkT DYB +@>mx ŧ. [&TW_?FG.;ApL ?xH&%wGĩVΔ+ z+f`x +qGOx1@iOsz9` @š0y DGH'%,\#L! t1TkJxC?Pv?y}OApJ3I {1i DLUAh@8v +>[H$DA&E/8jׅi; 8 y#}t-+#m|(fŊGOI,mŅX=CVi:IӏXzMMITMSY6t^NmTy3o0m7jP")^QI&L' Brg)-!Ű=JZ +D8X;0yͩƴuĉcd'v3Ę;,C@0eΝo`EV35 1M8O% +dɀE+JFsObnuޜ=OSh.ԅ0Bp j ++`mVSf DXA\@HG A im 50^= @kLVzi!a,ICCq _7gFwF 1'tqZ2,[(6C,U_%AelfD  ; Y@/\j:7I[`كЁrV#sƢ&Xj#ox˛{@M3K:jL'$##r U$XQKxHp +hv=Vdw1qOy P  `@Jr5q!V5h &#,:6{1,rL=F&ZfH+HnWѯVZ&-ZSzĚ:ZlFYT$av{@$I /b5_l9[}%[}3ޏv).pEMf{q|,ZkO,.yġToK o +26].xsF6}=. ze`u'l msj/I AEk(j]ZW2 sn6\WGڴYҦhMED1I}2I7cE;t&kxv0} 74%WN[ $)/܁e9WZMwXJOqg؃5[Gp>l6U(UBbk"mI YxCbBiUf,zhX  ,A1u~*9a{%*+,oR$̳RXCɐ`-#,<ݶ+vs'~"ػPrjd^MNHġ&1=Bf)l> j)l@ГVN*1eUh45 `vx`Uʤ.OJTni%9B1ZG +8tĶtCCv?$}>3etCPM=n\h~'#[9_P}G[+>f1ƍN^)ڑe[m:Ȏ|hMǹm` +CX@K& '>aקGzӥtG>ç3޷8SGЗ>jy=,vKW5bGӑ K) λMX JpU/"tt-]х+LssjՍk:eWu,`Q6APsgd{8o+WBt?jjژ_Gsl7=:#|Ա}dgLxIzb Ğќ/\=1x>)?by~UML +UM^5ph.*Tb]_hr&mMX.-lB{ٌ%j~K{dhKO],1ƾb/7k=ƪKk=KzW^_['|ZOk=_As^3Z-4L>.-(~#pcB-# `Q.Rm2oa"!jwpu4cJSVi6P`b5 5=SPT9[jAӷypQw ]l;tl#0 Aغl苰u[99OCL 6j8k٦ݯ!Bd'?^㫫?pss}ۇ|:'[HU;E}ch94t:;ΘƜfgEfr{QK$F[zW;m$auRA +8EY3Z5P Yd]@ڔrU;tڗ$ fgg ڙBd64 ՀFt +, lrB@hٷ@%_,[WC<@{3ɹ R} +K)H@D & ++ɭ"ՀV3<y)n.2MFoȟ}=JW'CY;2txwʀ/"`be7ֶhտ# ]p_x@u''w]Ow >IZ McPZ* ^}# Fk:!d*.r Ahjm$&.ns,Ɂ&d 5ÄudݏtE``xg v[Y7||~vO,]&-z>L2.Ϸn +ruuϺjw}:ko977+wfVme19b +endstream endobj 4963 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4964 0 obj <> endobj 4965 0 obj <> endobj 4966 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 4967 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4968 0 obj <>stream +h[Y~_ز 8Y AV㕡@lYv*Vl-4YWyt}}uwWwo_pgLfwusc'3ݼU_}I8M7Nim#ڭo2tt5m_}hu u`ZGaM6sOC UV L',feMik\mը@qqGe۪bn\+(6$z}KBimU05cR`P u,<|9zkꩄ mGG00=bU#,'!QSu:5]|U)H[0{S BGnJT45Ґ*?*i +5iPXzG` +_ZUc檽 5FB:Q)妟wʔ#AXe*jxt?}- +7P)YzbkhWf{u8E 5U7<8'*lXeP4L xz j' Taڷaa2{]S!sQNTQ Rڵ8T rShY|+Ho +ۀ1Pk㠟/|9*ɻ>Pp`ɻμaӄ>gA9Nty >=p!cݬ[?ۼ~|^c&BPsZ1<=rDb\\]w|2@x/hKQ6P 9( ^YO]X- Rk}0:CfgYRpnK 9XBb^\Tx*Fww#W뽍6V􁖚=bUʹL(r`8=Drrp\b[6(__n%c/E}`^ykXA'kjj96SE:d+9c5{`:|Q%|ɅG:+t`wDqy\N2)J)3{y"d~jWp2w;换2kO3Kg[k43Dsg\ꩳI$=͉ڢb^t?u2N%},Ajь֡""XMbUFY Oy;NfBo|}}ܚ=VsN>f[mGn!7YK{x]wDg H + ͉ L\ff̌VUQ&r% KBܚuYQg=_enyU76~Wu{//ƞUokA*WIMf#:PڇYjڍW+C=0c,}!M҂#XOռමvRha`}׌Kܓ=-4_/Rwp]ZH3/LmMeg[Ow<™=ضY<.p#iYu\|e1xނ}!a\/!yb\gW¸aoP勶 \{+۞wi7Ra{M#fny=]Oj1? 1OkݱѭjnיJO!sHJ&Eh +:hqUCL^.*6cqEK/O-R\F.>3N-+tsMRjOPrOx)>աv८}NkhO _ձv.la=DZkS@?nO>jM߮E3uUQ#uUáeݬ;nۈN6!:Xg\Ai ľOsFvmƍGC&2Ɵovv=qaf_7o_=n~ov1 && ~s. +8" . 6!. P;ܥW}q*h \\+31X9n X[یn[mq;2Hg\츅 Hfpۄ 5ߙ^sׄ˽v5\v :3ZT/(ԋ7i"ƃK]dXJ,^pQ`KHSc(C@0vց wc2Α$@d 0.JpY1=3 .64I# .uq&c3 r;@ѵd# 5\22E#-霎[q# ,jt[G<2Gr,1˶r7xqO2A ,i(]%9ʳGޅ߬gU _O&| o—&|gT»%|[cRD~O,}E.KqQ'\> Ϩ(}e3.J8՞ +˴C:I`s)2,NscFˆh]X +lDHFfe0.pY)Za\T ^Ce0.pQ9 Kx+$a\N%0.jv.iqQ; øE4\v,j: ĩqq*i40.N% KS Tpi*a|'oM{Nqi2b|9 cX* +ˮEY`ѯݪ²W,:UؗAc*,: xv,rE. qQꌋb'\; _.lOqq]pQ9aXTOHg%tƸHgtƸHgtFLgtFLgtE;7\XCE.qQ?!\~CE.qQ?ٜ[,"UX6Ef#X$ +˼FHkYEw!"UXdoQ}GmQ}-|Tlbp=N-FmQ7R64E[UsiwfÑ눆#gQâu6,?)o}3٣aX W.=\ [.g4LQhbyvlgǚ]@Y\6גa%c`g7㝘 06 +endstream endobj 4969 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4970 0 obj <> endobj 4971 0 obj <> endobj 4972 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 4973 0 obj <>/Border[0 0 0]/Rect[162.3 509.72 265.08 520.88]/Subtype/Link/Type/Annot>> endobj 4974 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4975 0 obj <>stream +hZ[\ ~_qՅ;(P4@ Ї]NlE}?ҹqE`xG%7ԑӻa:?<}~׏m|}\npnSu)j O6[cpt_;kCnqyƣxUaW[WRtd3č4NNC777~MM27OCdBQ0z=S, ge @bIZac< ӱ^P1j'ݩ +"&jicX"Z?d2j\k^n6MæS] u/ `|M}[<[;ai2n)4 .u/<}z%?ӡtxm9\| ¯m ϛo>zqg_>=/Aѫ4_A2c+9Q4" Yh7jRm,LmޚXi278Ԑfq 76y`")90Nx`&ϦRap$cVuS3:gbK{dUgRA8$;Oool"/|Хb6M$,4P=#ZoGM?b+pfF$wڵnIȋ7@ &uBy'`#@ `O2,6qe4⨀uPA O~_v3)1"/'ⱪ.CAgbBax1f+|5o4Ma[9 UTofx5Gq'4̽)5,Ӑx<&SsӯGk}AN"Ƚa]F+l1(s1Iha!IΡX#1G;׳m4 +;V_!lx9^CJb(!<|\̾&; {e N H1)f~ v7Lj<u\|헰GsĻ??IE _n$MjhyfA!0UfnDP%Cعn6{UCj$l<ӥV=NWj,A<ѭzA}2!Gd` 'g'52##X +k&iotYddr,RNMypf<6b%W[ H+ +`*te,(Ix|U#_]&~KA(=PH=˳IpWo{~oK{=^`/=Zo{ .gv4QsҼ,[`7nP{ΰUdc14Sn<րҸG>eEB'8c(TFo >>?. BD ;lLjq ɉ  za. qϕ,/bs"N媕EJԴnKo.?jS@pC-~dAM7vȃGH($M*H3|tr!2-2XƊc\nI喏5qQoKy5WJSix[|aDoq85}hsqN$dQvKzpC3;KQ;"B~S/gFX TL"X%ߜb⫒<zi0품q /iy؊嘰jP `_GYƒRXbc$8ڸ#߿1}>=9oX0Gnժ$zji(N +Tﯨ? wm>QOMqi4n4(XM#vtN;on{mm$B|=a}˨1Q,m߿bK?s[0Pgھ"9Z-}O>mTcK+nFtHc|+efMԌ^ o1~}Jߐ9c;u{ÐC'2ja;J Ձq9dSr-NbJge؎:7EYG|<8v&$|;c_|Cs6if'ӝoe*kcMs ^]lja@ zMay78v%lACn\@qы 'g[ʈ)OAx~5T5m_`„)*Y xvNj_ufYOhUq3hRM:l3̫4 /~_ 14]X܆wLlp-~s볌?/yƹgiVッ/~y/mU (ʉM V~$('U5RP~E^:ϮVʐӽA{s%dH-=L,r۷tÞ_hiU$ 2gЩ[ (a%+|ִP\ToJ [!e~Yԅf +-%~9}rzs?϶=b`]ey|6)KNj_Ɏԛ'?-o)CN@A}A-+~N~F}n4cJ8˦3۠B>{~{fr}gx\|5D ?UKt'q +endstream endobj 4976 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4977 0 obj <> endobj 4978 0 obj <> endobj 4979 0 obj <>/Border[0 0 0]/Rect[74.76 87.44 89.76 98.66]/Subtype/Link/Type/Annot>> endobj 4980 0 obj <> endobj 4981 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4982 0 obj <>stream +h[Ko$ WQ20ww ^;CF+G:pN!Y$z,W|;mOú^O?/zuqǿO_\\ 7w˸a!硔8y +ib& +7xB4Mq/SB O)@łFMR=4N4ot1`y7_2-㵌F-~E'cp) +k>0ӛsKD4чeY1eo/.X>i\|W_XU,eA~$ÈsfiVqHcMMKn#]7j RRnw8籘 bOZk`bq<8`KKWoo^9L~nhA~68G74Z\jo߁Ǐ>}߆0Oy>i˔Ot.ܐ [6XJ o^KǺ Wc3p. Rc }+|틞x_4ziZ{r> |s&\mR7mh1tx́%䠚uDYq&huTR#᧔qg'-I;X"XHԺ/{Dvo7' =8[tum4IHڋH.i=6bK+K]IFevdG j2vq +0F30.x@MC=ZfVI2 C'7/mӴdv٪TIbz.3Oh %WaY9\n8*:{XpsbnM\桢giT%PY)fBlk᫃w@OtUǑ1{uǨ //]HjwfXL_VQ%]=3!^lA=-XK+˜d:9wEMk!yU݂z:Z9tNc\ڮ) R}y +{ +fOv!^~Bۈ}:-9U4++ Il& 㒾8<,UiM8xP)lL$yQG%4 ,S,?_Av{~>,~!_o?N!3I]]QAɋ0b<@RfII9i r&9sh[VыX@8c޳U/kHܔXD}^9^.1YdVRzQn1#,g_fB Oyw_^\W<{a@[ 9Qwh\V +_Xb^[PU+iAg#Ø}T;~ 2f&ۮ-z'VI cH)6,6k8D1jgD ƪX +vulܞ| H2?#ڣ[wUp-_CIC}çqa<ѐȢ&+,ð2gً) +{1e/a/II Y0 YIifn4D1H{k3glWn0lk\'][uo*.sU8;+R a, +EqMX[*C6'SQ>E +zJ4* +&"Gj,M*Mج&aOQW0(U-^KcMc8ʫ՞~{LMӾr*Q'"IGF'IGwkl8">̫FԼkl7e-ibkxᖬ,NirZDlSKC; p [9a}w6x>U;"*WZhXItTS^^RAX(aҙ*溄0M ғNVW)N"(tϝmaC=J]dXa..6wwRm{nsHu$Ki!F4G]*Z̮D' }̧n_#xzoؤ:_s,2R:U?`ļ\V^;5kNS0TR =Js{Mn;ȚL1~oXq/S"(;ZR#Le0wIԩtǩ-62֥҈Y[geJ!CO^^U2LwSF/, RfjEuaX7JUdD 䪄!7e-0O"SYU2yf1BKuh Qח<8Vs+w;a)Ԣ` v >b\+Exڂ\uvovG apj1@)&1¹] H~|yJ2c"A.z^kqh\KTulOz̝XbOBmv Jx[pz[g[;sM1rN0s]9$ t"k!ަ@Vrc]9WA:q&R؂bGi7JlVi5cɘJ|Ijj)m \̕A{"6]pt([ J̡-T1pJ2&^׬4U9k~ڇWShiWMicQ?ֳӫm4.ߥ5sœu.$1iҳ =֥L)0}h!,],1F7 K6gL)2IY%斦l,E~._ޕ㥹YܶOe ͘ _ebHWӣEyL] ی}܏_)Qd9 & +~B7W?;?.5M}G7ɜYu(\YV"9=&7ɘ}(_TT?[U~9]/OB0)\ZF08ѥ'S_ 4"Dy!X㟄t9S;A<˛.ȼۗq Bw~X>'PT.v?A;$d/I0-=,ᦷ>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4984 0 obj <> endobj 4985 0 obj <> endobj 4986 0 obj <>/Border[0 0 0]/Rect[512.94 87.44 527.94 98.66]/Subtype/Link/Type/Annot>> endobj 4987 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4988 0 obj <>stream +h[ksu_џ\iHmJҮVT[[45ҡ82I>\{ gtvS*q 4pqqo/>v_}ޜ}:X\=DwopzTw;p;3!!tY)۝~:RǣYv9Z?J)_5|{:#>Ng:|{LJxxe-["P@66 'P>omhYU_FK/}}/πЇ2S{fà:Y}xnek6d?BxʲGإ2]ďN]olι]9uG gڏSc9Q~^ǯr Xt! A=?wuMLuڔŞ}8i~u={} @!^tK.o49Y|iub7z~xq481Н`gN ]T9LJ<7+;$?͌}vKwYVVڦ̀&֬6z4~q ;k7ӫ`sI`lP洜>4N}py|U5Ƥ#7Ӻ7:Hh+>X`1`cm@4̘dl M| ޻zp8>Iģ3'ۀG?rNw%Azߵ aidc9E.f6ȖH5"-ނ|67@blZo +L Q*MM\H\ rB ZA@юmJo(-tW1ui<4>y?bTDQ/Qz +knp ZGcSV"adžy|*z5(+<&41~WuFU@KB]&SWR܉T2R_R s^{rTt}4GZ@63R +R.Rp .ӐJAfQJ([[LG†h-ZG/25O`8H%<:iEx FX;.ܶ&C5V%o@0bJP@pPIT @YL Ra$70qj8x + !%A!嘓# k2 O E]fЗ0ds}Cfu F CRauOJP;}0N703op6<AmP@`ÑO0N:#iTOKWj]xY 83<oDwBɟ) 'aF=U^_fc#ȡOb+vIoCF:u +psy}r})llhC4G|qu{y: yCC`M,y^{2{ZQx& +XM7 o']‘AJ +(Onם_Ϯu< !1+.TY< ɵӼ|#"68L}o(aLޏ;t~[A@0[ 6d^<}Ik8|`[J@f:n6m4ˈSq*)*` AaF/$,wl(V-/a%PUl|iz~s~VEr(|ӧ<) 4QC+sUpWg[Bz_05?25=0GaJϷ_ώ>];j7Tݭ: j2+k&$q[y!-euScfq;׺Rk3V/E?r}% 0x} 8xjmu,+2|l97s7͇Fb=;|yۣ'gW;g|/WVJM?OEQ88ZܹX̌&R"=ZI6 + 4N&x& p*^`}90|NB]g 2ٵ38ȼ>8|%iND H׸;oEOZvKu?'uѪlsѲ*#A2.f+dWV$UYѹM K( [a-!'vrR2q>t>I#Mf8 ./V +&h1$]29@n9 dAM#ď#2Va$ V +CDh`]⍭o&J8%'d8~T4!kzuXAߪVWܻ&Dj$mZ/PSnvÊ~8f&6+r4$.޲MCd(kL60FfΡj\ZaGߊjXww.I9lfftmzV;D .O9; (ZvD1/:L4 +M߁)`d+M<2:Lqb,V#ZI*wAT?5V4:t +!1_p0E B`kkWL[0f)a&lFf:6c!JDfYSB A9wknSr͊YnQK=!YLRrvHq7 iNű5n|E:OT}n]؎][-rs[!] ނpi}?0;Ĺ{{8`HLgL +1BTӹv[!{U0I-xuW1AX+&5)X8z`zj +zWK^۵Vcj s-sVj!i^xjڱ@rѶy3[N-/\ym%ַ,잼sweܝy~Cy̘(&cMmƄڌ K2& 9BO)baH=,en'3Vg<4cmž 1IA<\ƄeLxⶵIwoș/{P&Mp&=$8&gXzs]n&~aAHݳV&vĥ rr̉QdueLilZNSda2[){p؉yo. 5CI|bbx@PP+'l:7s&8(ŴOPz{u,s6zp;<|&d1u`MEuXaK6N!;HqC:6zP\zmr?. 4`4 n8@e>nX+-Fh{tkreE`UGx}f}Xx2`ócdO.ZU+XwS*I<.T:9>ݭ)KR6vi6"' ѥ)V_\/ U ~8;׍7J0$1+9z*#f=U91m^肘w(23C1p>OXI*^WAwpe+~dȀQihm5L4kV5u'pެ*ӑ9NM̼sXCeݴ3_+?f-%R5D2KYTgkL}Rw9P"vJWWCD r^bZ,.Ϯ/n/7yn\x?Ű5F}^-K:׭ //dS6s~Ә$(̖yqUϽ(a`!8Fϛ 6Y_M^s-,,jE_^d-/ ~e`H +7K1Ӷ;-GX_vy.7C޴wld2*-Qb@F[-Woߩ|+Dݟ ܺwwN>V\;F==}03%;Sعm<|Լ#'7j4M}d0a3b* Z`3Aay+ ~Y@[R% +5LoyY;*I*.zhV2f&^OVwNƂx@kuQHP%Iȿ4gݟ lgTfY]vMkfTbχ4݃_/>JP'ڐ5nZ ﶰDVR8]j^X +!ul9Uy1:/nkd\6f#zUp+'z|5Jø_wNu)#c՚2V;94КXi2_;cNJx6+jEXo0l9۶+ɮIժ[_߾]}y9uh/9F _U3. ]'D4{ ̖cm +p-M~e ZUWXfӟ^AJbn]0z1{0;kN +{g$9U@ `7n&G/֛fJU]a*©9XbV8s~d"Ý80PPR6n8hIV\N +Yy#͉&QCNOJlC8T1HH.i5MY?j=(OO'X6NYOZ=}i﷟\$[3̡&d~AwMfiB[& ӟ[m!,x,㰜eyAx,sqVŧm^l#*uVc,5'>{0Y&/j׷Fj8ၽXU!H?(bRFq )FśiT0 Fިq}&9aiqa 4pLoow8YwiBx F*# +yٞv@!1SjG$Rb6%jZ'-gb9GޡZ;qx5'r=+hR#zQ> >Hl۫; [me(a*J(/4`TNݹ'}P x' {JA"~?CypO$*:!Vs/(_>L̋.Y׻ aLϚN^ r]8oތ&XR8~L W!3 +endstream endobj 4989 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4990 0 obj <> endobj 4991 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv62393V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 4992 0 obj <> endobj 4993 0 obj <> endobj 4994 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 4995 0 obj <> endobj 4996 0 obj <> endobj 4997 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 4998 0 obj <>stream +hެ[[dIn~_q y*qoϬ]C٪Mόw[RH +ɬ5,Muf%BB|/_?^?o>t.}_/?𻧇ǧ,їRPZ7\=|MOk@wHF$2>Lif{/ziV(lnBqypoI|"rae -_^^X=0w{~=˽Gb?0KTkS^33w-=JFv1ӱ-l췙í0#-Y͠bu[ni C_|>r~Zxw ='-r6C_ח?˧_~/_`e& 촶XVyeSJPR\"Os9eḱeWg +umi2ZRXCm`{'N/T>Ҫ~-Z`1!85d;d֍&ha"yaZBkNੀr8q6ofq +m#"C{{5&RdZP{O1MRTՔb Cq2= + $U-B"h繂)[ZA _36Xʸٟ|DJF%0_%Ur}Xz&_}M{>0(#cA}+{}3q[t U[gb + AHAut4ux_x,J0a4Z8\r8L,J1=3҅${,w\Pf.{e íq뎋ӂ}2@]]U0eJmdF Neѡc+mjW)(^i))MɈʛdk%!'1˟0C{?? +V3tIU.'"i TwnIC.P)裡)L *iM Ml!k_!i5DYՌdi&HYn2#|BLrGT;U;,5lXɮ OVhi&W98{>79&=㜻Wd&HU>u[WxKKC6$u!`監n@Z`. 藸ͺM2/^I]$)<`?u q +Tr6 +WP8: +_p8hqcJ=e鿣O#i>͜ں9 A2z;XƌI_+@bC;wXŔ`,!Vʺ/8rD]Dҳ R +ml&e~0LoU3?f6@"4*Y*Ͷ3rbBx`рM\*oYǰpm3ZD +)liwG]um]8iV~ sbט-]# yֻniK~ጦq=3n%^/~c')ɨjx|2&X, 1 Ѹ0# +{6PM[r-U99*zҲUOl^& :7=5@6.yV$kFnC;suď8{oE ._tsҽ 7ө7'f˭`S07HOS (Aڷvf{R?̠ppzHݭy LѺņL%b#8kv_#s3^k$(Agn{9H_2%Ie+xSE/d9e:*mM1y2XT'ccw֠` ާDFrc!KrW[F.Xpk4MO'Q4 gWmMjePm)D'X[ǾMnBsf/gT:2u-w~V# . nD8o4'*UoNV@QDw!{'9Z4mJVkʆVyQP2oC9Klܼ Ț}U+R#8bCs@:&* w ͻMhb: e{;*AAኺB!G5 LìEGxȎA^El\p$cc[9bi<=즐vdy z$^(R{;/5Tؐ)vv7V`%Ytq +K5= 4#\$oUkd9MuCF-f<GGB>hm`x爝!3w}*.NSp3*qeUŘ%tjh6t1pfQCzkL5kİC(Ő7&?87PL#a Q% RxJ|V֠U +" k̡7vX{\ӽ,;hA$,W(b+Ж^<VK2t+GЎ Fg^:V9)oɱoۈ\5Ԧ_𮇠7z.8 +Jǀ+ToA9̓MmkYO%;|fv) mt%zѹp'!9',ielN-Yvw8;C`3;bIj>.i'y`lL'俆ߎy3rsCsG1%VEs }xփV{ +_[=hUn#Wgth$&mg v$\),SK{}4M㦞juIF4Y7nvLIUiIy3jGB|$5=dӳWIv~fbJٜE +!lRwʅ e\w6G/K@/T{Rw8k4|6㼙ŘT#k0FEm_T%*W=4+4^=Oל9Ջ^G r<4"yJ3s^Jd di]5;iGA1;l.hR"20M>)9}-=^)2$fȩ|q6Tkx>_q-kpFC_&94s~LЛW yJ7,{빐[Jpuz-) [DM%L9cwޕr4^zVӃDA7a/+7vpz>6e" Y;Hwll t%R FNA(N&y;U7d]85ez5,,{Y"zWmTqo#xٶdЮa̴rX1^6V?8KՇ`IHt:N|3 +gۇ4]/\1VA^'Wn0efԧ;VdjGj 0VR!/SDL UFx/l^7ri+dZIo F(!GM4,f-?I{#0Əg%K~$Gf?v_ }_ZS!!'בqͰI[|z`ٰ=x! (ݗ֭Ԟ4?b5`fxǯ~sc/-ҡ7LQ+dz{9eX<~&3)u9Or%Y%0NY‘{bpR81= ?eJhH2#@ 73aIC0(UdCc75@+W?ѯO0 +endstream endobj 4999 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5000 0 obj <> endobj 5001 0 obj <> endobj 5002 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 5003 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5004 0 obj <>stream +h[]o}ׯGi0+ /6 fJ0,47@YNd'"M޾$y؇a_.qؾ_\_.ﮮg_ޜ]IO7o'O&9)9e35tn٣w_(e=*W;?PubO#r8}.}v:ѳc# dޏ淔Tyl@hlS{ +ujgY1UV])߷Hҥ }(cV0,W peei"d1"\( /O*,K Tfi9O9YBy9|)̱NU6z}ӿ]Nħ>>'}y!LX٬ӢhU>1r!NG!?팚}vͬM@ݜmD*ibs XU02 %a J_|}9*`U(sZd]j}i.7 +ުV +i=G4o9X<ˠA +;N(1c IK1[ ʍytt'øӳlChQ4EF>e?rօv} |њE'[F[!l(iAk>3=B/h2+c +81\t5u-quM#<1&7'A׉ E?)OC٬q>W5Mi4mjM]4汉Ϩ^͑(1Uj6˓' >}j'ɓ0XkabNu镘m^6E겥Z4Ǿ[ҷVٕ6=OQf[[_6p" ˖|9X0OE/g =ύ |~WcP d^iZ06oאҕQYBvW>ͱv'lʦ†Yq&֗=<\)>U<믿{f]<)!Y=}qL׳5=Y7m +_Fk6Lne$]۫ge7}E+iK(իC#zhߖP6+[2Rjoœ 䡽ZRvK@Ԯ}{eD9%ad\M2Ӗ ܄+c楼%wۡ2& QrX{eU UAiu{$a?Njhm&LxI8՜@?w2q6;aW\ pn, ܥ96}]0'7LOTW[mM_|SbEȭ%k_4*9ܒe|/ơ=x%ҖpyUqK()0ծuIkb~TL7L_qnL w>,F F,` RO@01#Ng8̓NAKhu-0xys|P>V[)a NӑCrN\AQ9QNwMx%/[JGٸD!=¸W xtSJ&* +Y*{ +6{䈋)HVZ[9պZm~A O7 Zfb\@X,*%^$:a[!"CJï@JSx2R~)-2q&,y84#%c`yn|玉;2y> TdF4N70N`ovӗr K16GlR-7v6גyӗ<9H\<@Xq~+kcI +%uEPQj@ҖPv@8i= +YP :*%TP3wxI~K([j7~c%4*ΒትT/M-EvtTLm[J8f#YR*\#RA!W?ȴU|lpRI2V=_k2C>! (!6|f^"~Cg6{G戧MjoxWL- }-aW#Vt7GR3~oPX~5f劖W\|lwõyXxgF&\YǼ[:2.j-7k]㦓\ R| +XNC:zsџ GYY?+^,+!r%PjWz_9M<倄v~^D`%u{Fm{V `J5zB7LsDzD{ 3%"?l(Ƒ;|Co%4cW>! uB)n OP~q.p MBn:юn)hA}5jw T ?\<uA҅WI^\"z,u@ 3Kkak z5f˴{FdSBkCl9SK}ew#~9dUqmgrjZýtUک:ۨdmvD_;A}KGNgdF8^|ƴjwknu8"cxwY( I߰).f "VRP.4,ޭ&k.ׇ4<4Y?[nfheF@x04\Zqܞc\S`bх +endstream endobj 5005 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5006 0 obj <> endobj 5007 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31076V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5008 0 obj <> endobj 5009 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31077V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5010 0 obj <> endobj 5011 0 obj <> endobj 5012 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 5013 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5014 0 obj <>stream +hެ[[\7~_q Ա'Y,L=3`] +mIoӗH:q.IQ$/^_z/Ç?\=q]n.Wui1).-9㗛7Wfj5 _^!{kL(D(2.@>TPNZ&% ,̐>ïFӕ5>nax+i)"@ ܲV>Z Ci_! J|^*-K +Xdܒǖeuֺ!ZW+faY7[~c=Gl?اLFtkIsݵ-)DhBWxҾQ֖eaIkVĚzs "vjZRZ +bj]#xŻo~\gB ״&4^o,Xa3|Żw_yym?!-`iB6ip v:kkXhm{{ʻk3j_`^]@\Vέ&9%/)om!J\ ̛ؒk 硆-k +@h(|]_ (ﬧ^<|΀8p)CZ]q5!`PB}h7HjN228|k:`$-B~z?N5.(;Aڭĥ+^3.\e ,d~h`M- w8RE P ` ,rV +ku1 ; +LŶ5 gk_S嗫֌!A֛D mO&XWޛ@ٸteS(&̃r.53X*^2 +~l]l/hH#[R!YmkjuYMTgKP!U F|"r*B<%([-.yVI; PQ88uQpĺЪ E jOFFVx\2Eolp-Eo2Pk+di?7!'1}]Wb,g62IVq۰a4BQC,M(HםvPFQj&աZHn*3+Nm4P X,qBIuv C:[ҳ)"| +sB!vOuN3'Cj˧:Ga͛!8ST! N7 %nF7Q>>sɼT RbL@xikn7u\L1vq%"rHU$Q^h4Uyjl0Z]5c4m?КQ S{6Ħe#EmAN-(fD4#rr'TX%Ν ++!,&XEW ynTk5#>4A<ْw&F5n4[=1*QNNSMD +0|Ro6G45%uu mUXѓxN6 :)1Bx1!-KЂaSݹV 2Xr,=0LF]3fcEa W t0 ?~z!KwdnPWznTΫAD^،59ݬ[Z'A4wvvEl1jP `(MaYpZW4t]|xni6O[Y⽠xA!2{3 al]GSѨYHuL-]Zm2? fI?^i:VAy{YIPMFʃmHMG-#N]hbӰ4\_v K%.LksB2U"o2J~UwshƉ[p\NR`%Ln)Z<zGZIpˮn4k*Zdg3f |٫d3ѧ@(փDPà[sSD[Pᢑ]3) BVxu!r2۝wGjqiCpH>cT#ʹ"{V!D%3=+zHs*{%x:c`_]O'd̾o_AE}Ywn~TUICt-b99MN=#wHr$`R2Oq>_qvbײmx>bRx`,v#PvgɑvxQ:ΧaV8?*:kc#蛰ǹq32V,!3g?..;ё=Cczt5Y9"VM{Ǧ`C+ǶzOj䞢B/=u4ܥMٵw*~>3j/gdOB s @ǩT'=:[ALSmDNiӑۓݜ5/cn&k;8 U=q@7u.`<@zV"ģSGklǍsR"ǂDﱛG)ʆIh[y]">Q$d?XX;t2qZEy#0ץv`[PB8MVVzm;~4 W 3y_XRMw|oX-?>@ȆSyAޟޝgA% %urтw?x A-[<ģVZT_˿6sa|5[|û_Ř]`7L F?q<8 {݄'o` q5u ˫ =tsm7ph+05=`ElIڼÕ&Z#Nv*X6y$ uto';|,J_Te|Pwy$- kd Uf'FY`i_@ԠfJ2P&}Ac9@ZS `?suuJ RX쾀].NBRH /ǦҾ-^SZU^-MA'ټ/ jtN҃0Yui_@9+ K + oH*>Ke Mp:ىۺ˓FgNUQ.ߠXUotCdDuAΡJ2@M ds)Sz).hf=:!&}A;Iu_@ԵN/h ֮)=6]@҃Py_Р@*c }ؚ/h)AX"=4zz)H"xQL Jאk (\"^nڿ`@§F'5 +›L2Uq +l +endstream endobj 5015 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5016 0 obj <> endobj 5017 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31078V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5018 0 obj <> endobj 5019 0 obj <> endobj 5020 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 5021 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5022 0 obj <>stream +hެZ[o\ ~_q;Phdh +qI#P7TYߏٳe %g8eV<ϔ1Re> +z +Pqڤ&aCJqX]R$?ы0,'Ut[ݧgVv`:.FFP=N J8HD0ܤP:ovvtD^MeKm2F 7Kpi]0]\F|8Mw}|O8*V OwXӡՔ ߬Z +e.a0rk XkLf +0Cv BYi!q!D,$ (#<>4Ill8V(Mm*>BxJ3 +.dvl6P6PFe*׌x&yҤs,-x '!npٵ '*S`O:W?R<@ANWj/.P4kKei])KNy1Eq3 zmt%ʒU1 b}nuQyMWJʥKu .!ibi +˪0#H.ޜ߬I* >pEfJ颐qIN6%HXPaUX p'W>g%?}/^Noi)ou >q=6x]Ge$g=׵+]JImByp`p-TF!,$y3dH?g(*#10LQ@5EA\@!F9P (\N./!'K=haѻ_'pâgwB$k/n?]}BN hf,3󗣟^3EX5xKȟ@ ӇSZ␓҆>o/>:7o'򆞿5\ԙ]!؞vuQOJ +e#J lDtTXDj`תPqHF8Qz)`Bs>J1lD8^RݚfpSU`1&vp'P[Lkp|eKn=C6,#Kē rW dO3c KYXR郢Ϲsgs"MtDŘ'NjO)e+7r݇oGgI_^RRvj?u!- ׻gK ,$`_|m +~d!m(ǗF z77>0]^Zzm KEO2 ƕte\257-CQe4 ' LU票ApE皢=(mѭQkԓd"M[{O}}-VLE١~s3ӷxG eTw†2z^ty ,6hi',R^47ԏVgfh1^);t?LJ"jĸu:@[zSE2NSN=&7NYNy%@POkqI"5ږ&f'@+ͰzT>ǚas3>v4tKf2(#)&ՌJTaI\>@PtZaZ2on(V֦A,&w"s#bi بPs8wHf%OQ9Mq.6K&8N( +بpo1 H%RO4f.udX֗ 6"V_X\ =7"EeVzFuK_+j.*6*zg? _x Ujh 8jU[j}VeP UKyqR!864]^PjviJVl]&899u`䇸IL !BDya) R.-\.֔J@2/!o1k#? z795,ְ/h3F+%MAYoԚkR7<@6?caLejMVA׭arzcR ˃BnƑśLZp:X[jw[ Y*ւ>l0Ӟ~V&gXm CB-93|j(%@b)P׿@ЇQz1|9 lFHv)}4<͚|RvXZ0< +endstream endobj 5023 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5024 0 obj <> endobj 5025 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31079V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5026 0 obj <> endobj 5027 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31080V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5028 0 obj <> endobj 5029 0 obj <> endobj 5030 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 5031 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5032 0 obj <>stream +hZ[o\~_UxDpDA e#Jeˑefx9<{$Kj3<䐜|s?8݊gz{~٫7go>xu-^[}]nFhXePD6)+WJZI3gJ{C`.B2=HG-u- BG5F;*VF뱼 8m‘g 4ZH0PzR1hc[m.:/v)#"~t؜.bUUXd6Ej=+ 7lUD^K_7wp:o6koRݴ-=؄:wioz#r9$R pRonc/ :`२#rtM_䴄6}ŦrOX~w~CN@ vpl>Uv-X5?M>;W[W~ctXFf9/.`wF`x8Z0/$ $>Xvs& ^"Ӓ$ev .̪'M-Glo~:0oY O0tH N 6AO62̘X@6-ɽ0ړ$߭@W 5#(ҷqFtv};3YyL lF l`yvrulRhҢ^@r \8p+cGS(jRlbg= Rp5od7h:>/ط.dQ< JI8$zXNAI]Ta{tjI1IJT+Lzo>b6Nf8>pNcUA&Pzt9?bRW|={nŦUGk+m9ʧOM?L2e<[VkoldgHmy~M1SAG/C,{lrIr?ez =4*6`lQs6Q'?&`J ѮA^Y @c C䪋* +֖:k@3yY}%ٺ.0͚^*&Ly#ȯ)ofKgv !gR{ ;wY#ֈ5LR61#gmf @Ӥf Czv=k:rGGw C4Phjg qHd$̆lSeVK(ZȹXڪԎE3NMs]yoinxus z$"W|1߷k^AP%U&  5#MSRDt/= G ڍ*혩J: to"I/OРJur 0(!EJ\*#hdD囓c^VHຼFiPzW_oȰ@^Nte/ܞ.߁`sݞd?T|{Go.?V>z6=H7ފWE^1l]2#N'Dܭaد߅p8oT*rtOxzY"uaR +j-'p2v${/ =Ig${/c#HN Hh1p' +<86sB + i@5:Th`GڈnaLTLtn\-[bB{ڵqA$*9gtZ hgs9RύVy'j +7PαuY +]Wa =vPuhYgsA/),؁"2Mh +ϡ2O_\;vJ 0-v h}Q_wFp 8jނhr-pZ(ʕ(6 Uޱ\+;oJYdjV.{P4zG~x)Q-{:!7|&zmP"3W#7GO {݆ÇbUv@ +ϓ Ƚ@wZZcZA|OqM iK52+具?ҵ*Q6O?/I!mRKˌ-3Cucn Ahxju)9= +QFSRT7W7crn1*SJT4x] RnZ4pLꑐO\Q(LW(il(.8?,I*@D}aQAm>@iYBM#Ov ^^ d] R 7}Up;šxꚦ, %Tr߰r#9wƆRQ#68/һ=8"yjk*z` ;#=uo)g/C1. +G@H#9(Kk(60A=."{#қ:9-bnNOPˆRZ~'8ҳC=ry<{ ֦HM^ zUQ ^+J_ Y|Mf~ZN[陟(g YtV陟}6go 9sֆ,tfOTXWLwFDmkHk+95鹻57z%iĢ +Gϼ_ UL/aq߅ZJj; \q%9f IR*G C'VE6oCp@N6*,p| m|E!/PXX^@HU6enmfh[SZ>gk[d^۲’j}a\BWk+>C VDE. r{KVx.!IL!bANF=~C7zSn$#RC)feg-}RO Y}{uSoY5oPUG)`bblZTo*U3a0W>aa*4;;ltB,<;* +-Pbt{{9>M-ԗ>Ȟߠs`Z HWnH苷%3pv +}Ql|_>&}V~|4^vFW 0zFAjz⤋+(Xԍ+?p^+[z7i+UJfvW;!aA|7 e[ +endstream endobj 5033 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5034 0 obj <> endobj 5035 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31081V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5036 0 obj <> endobj 5037 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31082V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5038 0 obj <> endobj 5039 0 obj <> endobj 5040 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 5041 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5042 0 obj <>stream +h޴;ˎ7<TMxbf!cl<Ơ핷%ym?}#d0J U$`#H>݇WӇiz??Wo^}s8뛫L?[3L W&TM駫ݼ,O'z~Y\0[h5k }Ժɇ1i~ ^%V@8g+p@ + Vÿ # Ne00ݜa6ijvhklpn~6De+b?&Oui.s0>9 +=~n] +.9J`1$H p3&94e~70[{o>LO_ȹY_M<,׮Cwmmz\=YB֚v\WOtW?{uOov6/BOKޟ` l7mRX4^S뫝]PD2=rQQ&,KP ty6>DKá%ڒa ֣>ba/p&sKkU ɽ 3fNlM5V5st "S '#L&(6Kü^0sb{AaRzG(,R$T„'`o5AwKvHHTŠ*Tet@REZ :nehhźY@ ~UJUԪ=ql fs5Оp9b EHPZk57}MIW ~"LCV4ax˜9%QLLlI8v_#E4DO0b043o*⿠>!.Bl!|BU3"Hu^;] r='j?@Vou"ŭroؔ#\' #HXa- !FEg/no5{t v hVƣfIo/ 7ae6'672G`B*uVL ]\u 0BkI=e@C)w9_8?97,dVԭVNıIy>T8p9:%8i>yAAFHwAL __KLuo>ܒ䉽#2r]ĸ5NiATn9˻j߲C|@2`Ύ^ؾV2BuH"IQLw+kaUiTs ֈYUC*ٙ8Mfa*_{Ω ]RCaV| +"؝z{mdZ^93|LIf.kmY'JB]х*5;-ĶoNVLe hUQ•5B)҈u[IX1.$31K($#Q~׽Sն- ;injz&ƈ@73)x7CB-C'+dOySYm3̆2g K[ GJ+({1zUexP*UJYɞo11kpTVwl"*æ_ P-(u}SO}\AcFuC[[pOyW3Tֳfmn$'E5cFTcl0Lj*LJI[seț(8MC+vf&ΥcR>=9R:zDA6llb7O+ xQ.6±!,5"I[*w5+ŎSmfw8>n=M;bsa MQӽhX-. +AI Z]"gh'.~T?̒JG8($MzA:GGGG/V+ƞ}2q\H/h9g &A&]lŮҿx7,uKZHqp+P¹HRK-W=Qrְ{TyUkD`.lkcnWӤ3} FM5N~+ӡ*Ө% 䤜!Ƴ n#T~2;?+wl?Z GszLm{ʸSI&RkDΗ|v.kx T*-+V}W$b| w] k4KZ؟UA,#Cɬdݨs__;1< nP6 qLd-. ۬Wj`h!$I?iAq9evҾ)5%wC0֚>3::q0]ѓhfuBMjgy>q;M$j-ѡ#beӷZooH`j`ةם,'gsG^1f7m{^0-OBuQK^lj(xKU[ns.nLU|9 j!ݐ H&pE2 "Py@1{ecN9t-Զ>prU5f)"ț1+UuN#ā]w!*͊ҏکks Ŝi+wq鹌D-ogXf6`L,׌ʪ`#,h+kWV7M?3qzn? =}5q5&71\7nSPYݫ"9i ۔6ϤHsv 1g,{w9E럋6.ꄺ>=IDNO Xny[X1Lt["d~3V}(kxi)_ӏs@g[s_>b*;2D.]6vWRټ[, +Fdiq8+/Nno0gr.Y\ﴨ bI^dz6._tNHuH6d8[f͜xɳ*8*:fԅ:Oѩ;fLV#U*Ϳkd}Q'm^/+v5qW=kz'>(PO9&=A͙:)W3W%zJ 3ͽ@Z;~^;4v}/ҕVV*|oSLo,oXN}KraɌٽ2u| ps:svU"׷r]e7ř8)FǩNΜ;/V̋_>^#z{tӼbm(w^5b:R vkgAt^p,K2U¡.rZݾ6f Vo5˄<ϝ-/|]"7F]7$ސ|?n^7_'? +fG|ReImυL׭Ń]KBk|{*N}Z/AdW2\022u<`o|6=^Z.v!Oxm~)yqebJ}CǨ@~7?Qte/S׷O\5 鿧`7O噓,|${(]%M{gny׿? 0o?ݿ{x|+Op?v~'쌗^|^W>.?k!.vv`ۻf@P[$ o7p˶ `?gg~ +6C^v;'Q62dY!4D: +. A +1Г|TEfySZnTDܖ?Z5ߍSf ?a#b'2M:} `]=>_z oN|uJ6c6u͋֫5 +^T! [v;;6uPolwJ{Gd%nw/{)Cw̖,m7X̴rX +M֌)UPr6msfJY#lmH ymv*гMNi'`m +ۆQ૳N囔cW-u9ݻM%6E-'>: +yE-'X׫&R#MC|Eg )4`LRmȋi(+QϦl"-miqJR= +ZJT"+48Q|AY7HذmyqLۦAŲV0c}0ΎgJv2P7E5׏c֋v`#(h}o 'zY>z BHk&!- b. '8| eY6,oJK%iW֓ ׋TX@ K77"6ĀhJU)_}v}0aTxzؿwhj2H @x^{qzs~{"9P C:$B$a`2tNDCX4| uy1VDDmCA 8'OFc y s3C!2lVaKT0, 03p6yT +& 8=ҌKMgJM#>c1Ӑ.-H  `q +endstream endobj 5043 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5044 0 obj <> endobj 5045 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31083V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5046 0 obj <> endobj 5047 0 obj <> endobj 5048 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 5049 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5050 0 obj <>stream +hZ[o ~?bg5 +hh +Iu>8A KRINdF}?r8=+;J|Hw. wvwuy>=__ݞ_=9x3v<0)c"ل)F7ۤ촻٨fViyR.)5A=K Wޢ!SC:Y3 uHAv_nm}NӰ<pzZz0ڨ 5V0Z'[M,^aDcpԌ_6ӿ8}sj?ݡӷaڿgsQbCh/ Q& 7`O}vt-e2of[cgml#87 i4k:3`qH0.K$>XvKڇH ^ҧLK:&:KXV9Ёy-`т`C8V 4o32wM,Gxz&7ٻhfhM3z605HM4mi$?OO;|,6Y)#%;3m\mFk-{=՘lo),i!k~<6 \8p+qQfV'.64Rch8[AӴcMi ͬs$I*ĦiS#u1o.~:`_->Fm&zA[~ˑkfCVP{q8,9 "lE>fuɘ^{7y\p3[]Twf"(h$ +"L26wRE<),[|ϔH|5a؟gO7@':.I{nrI y]ϻ25si(!rHsM6Oʃ5t3b9][‰e3Bʫ}Qg`y)$N S4X;Ʉe6%Jf:qB7р__`|s^~yAaV$'l +d~G#Sj܌XY:b5PdϫiwR >g;s<9E# 2ŸtD +#,JZr:DFAYnH4}#MoZL|ȶ+9sb9'st:ԥ~=-\}+hPsc!~/NLķHCq N(]H߅߷ |BpSc}DtOnEZ |'a>](:ZcBڀ}tiz3'TFԈ +zhlxiׂ0Q{d ;έSXnEn|/y[ N'dZSH*EGAI9fJlZGJFvkSב x +Zv4H8WbS?,(=4 z~D#wea Ng4*Ӥ M8j㳯 X`JeQ'6>p~ !|#`ea ?ͻ;뫷 g@ob[ϯ/}.p&Й9En_]]^0T +o|"C늺{ty}h"tɮ{z=; +iar_Q9P9tG@@;uJQD$J)'UH6-CTf#ٴ|&T~"γRQ#R$$W<&8#ٴ2Lg MOÂއqՂjtpZ L?]#Gv𶼠"BOz-`g܂F.˂ޡ2MV2jI~ZڈZYǵ=^]Q*v |鮘hZgȻV>kGtO*A95BꄓǕ&͜cq\zt]7#L HG@xVдh1HQb7mjT"ŅQƓcO%9!=W-jgSM&8 ZcZ#?Tѝn8%}t}뾟 $#=WøswQ=n<YE a5?e8j5F a$#SsvpY3yjWqtAe̓|T*a?^0:(hBSZ4!t.h306г + ;d=CcָgH^d_ZNJb3tÛ\z*|dcAਈW| $X`ɦeuZaGiyJns$OٴskPȦA0b lZ{@PѣFyYW]ŞCGk#})tWapkkGϟ@tWW|I=uo;ƵWdVZ+ԋ+a)͂߈krX]!Л S); +Q+35TٜVnՊ_-#J(ȎUBŤGw6NT[t`K Ֆ?qKLg$\h%󁌡}[m}|EΏ74 |Sqǽ̏D=w+;j㐤aABڭ.{h5@ AY c>&aM{U[۵zkJO>pn G!p5>S2Rx!a]NxpXw@.γ0Y9}C{?*Qq޻ϽCf\+ml4spzܵYz'J S3 +S~+^*:\ i{sq=v-5i/ٶCŸ8y\8U}:sP9W ݼ S/f8C2CWBam,F//UAI.X׺i>RxiqYѤ@/ά}W-rkdhw^}wZQx|$'ix +endstream endobj 5051 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5052 0 obj <> endobj 5053 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31184V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5054 0 obj <> endobj 5055 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31185V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5056 0 obj <> endobj 5057 0 obj <> endobj 5058 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 5059 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5060 0 obj <>stream +h޴Zmo] ~>:,]wIuH̷7(;pgǩ$CJqmQ("ÿ]^?|wvwyn'~X}]nHm/VE+ƤcThSQoWkm y݁~^~ f,eܩ[><NM$Da8<T):BRk^ѡx%E]5 턶Bh"&Z@ym2/PY8&ZYLBp?'6c!iLǒl +:`WOfN8ޚH'dW 6Yqqz[ P3ePlH\ߑX*=$Ic{Z[ +C1"?G;ޫ ]vnf[/f Qo#KkxtE̓,;$TJ#@i2ą# +Il+ħ{DtBR?!g$\,vPЩҶ>rJSIlW[D1Wbi ]T-zÉąh0Q{R"ONӞ\ c{I/7Akǰ4x.FĶ F;BGĩF;.%ӾvNCWTmisPcZ>jơ(Ł/8\xgRbT`G்#<{q߯Z-[)E[= I=%~ΆUR̉^IuZjn[=V}ZLuAO\&[y\T:+E^%7!<2>2J鴁k +ԳGhMo0>zXP1'l8ۄ +˨>:nbX.HxTui!C^ S1Esu 5CpKyGXMĸ^(e@W5R]l& NMY' zqyRp(N:my9@.tB%CcǼH8P[$$$0(#I[CA S@8GSW,C_p~.`Ӄ'tK?ѓ!03jhD]!H>4Z?X+:lOOt8owW7*8~-*bɱo>;^~@$#Je~|\g?D,LSH&Y!|:{[-*ZF;yWO"DKx{WzN_~My(+P+@D$%2s]7/pbmg ;nab PhbMnF18BUZbmFȃBiAWm&ÞWsY=*_a,Z9Ɍpb.i<k4"&Þ vA3+lf.dȬKo27I 8'Ůad#_ͬy3p2@fր̕x8x-ep0*.hfǮr[5ʠm 2k̦9S0s;33Oh쿽 'f +s}:.UBW +S6e FF%'N1jzy9nᖢ]3knœŭ(`M( 8 +YfpiZGqdĞq?]^. Jc5 y ~fZGXD##%H #ə#sI_ՠ\ *\鴔44ȩm>2sl~yMVS <\@DW9x`D]H.e7p'j$BdԲNd#18O~r87u3y~x=OWyn&L3 -cr\fl-O׺j|@e`$6eT /ݹPJzS9Z`Oߩ0;8cG5*_SPU}QAou =Ч ! S\S|} +z$ )Cr H҉p'yeNKvA j {.QhIKF$؆=/MjF +A~<jLm&[PG=8M. IWeQ(hq|*f㑵 [N7lpF*/0{Cm,J Z h",hՆ#?pp%Mh-h89tm ǹ_D t6:o@otQݾ-ݷ=B>.9̹u7aC _ ](.'!q1k]C$>JəYJ![Ď3Q(꾗h4ZIY +A:0Ʀl$k6,6?y~ZB36tֆ9 |X5PGz%[KH+rFh4Áv~YY:Jv_Onύ}*|P^v#=4Fd8/,ǵ5+p M['>uv?n ީ1 O FkY 0< +endstream endobj 5061 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5062 0 obj <> endobj 5063 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31186V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5064 0 obj <> endobj 5065 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31187V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5066 0 obj <> endobj 5067 0 obj <> endobj 5068 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 5069 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5070 0 obj <>stream +h޴[[\~_qG g,/ؚ$g eǒ#K*X<#.Q<U|Ż~~㏯߿~p×7W]~Woobۇִ).-9۟j 2]}јPa P#d=&zPC9jJ/Q;`a ~M?]Y#LKo{Jz~wYqaH=7*oϋ+ qK[Z벆\kY_=\ ZS;լ@F݊cb,aH'-)BV{mWXҚ^`,ŮBMkYJ]KX\^Zl\7/ow~A4|PKkrco ` vj +(뿮{LǷ^t~~KZNWSmI/'h{a`iy9>87#}w;ۭgȅ @rYmH:Zs(q[IO s>DJyz{ryHZزPFPgX5;ɰmT&_`0!NV + +bVqnMHf. +g=8 T^c2t{: #$-Bz$?mj\wLwfhV +xϸqm#e!S=tWږ%=$%r9\gyQnYĂ= YP=pR84n +kY +ښp/n|y׿˯W L7>,ԐE> +aMi7 mA۸0ЗǖM"ڶ7<'Z3؁-`3`;~EbF<}TȨnVoF:?<, r}չX)Kn_0\2KåRmXoB]+,ϱIh|E uIϋ77C6T K=AnM?BXxGcF,ׂ,5zI=b0D= ˆDp+B wӡGɨښ2c'=a5lb^M[fXnVu F>|Kbr}P߃$Zr2o5zB6b$C˛Q=[ + eٲ.jPAсS +p/Ff%k Sud<ԉIyʢʧ4ծ4ܠ`I;M$fڑir% vKRu@3S=Qkƽb:.CSQ4-@jS thbi"x*~t%VJ,8_݉ooz玕hۉY؍Mt#+!ލ0q|sO +:gs,G3SJ"PJP0UFXM&wG*s="}Y?>Npjew⒃MF`4/L "8Où14ZdMF$fKiڳ)scEd }'v֓`+9ځgMrHm:nZ 4Rd$M7 \wL2g KAP(ވQJU( +BW[:(t>f5 +I`P_pn'h6gdƤm6[sB*.j^"ԅuXh- + !UMuSQ6ea /Wp :jnO<>E{;rۆеdXKEKVSnZIFȁ3wvYV$!o}Z-Y;/78H)ƙ}* MY2_IO F2sG?J1D+z+!KDՋU;;6Y JKZBW"EB$&Zcm9h5샰ˡg5]EӞ^d]/9~pA~[9-2'cO8ݫ [ɘN\JLHm|]6,b;wu8Huґn7mNyO#Ax -ۤ1@XSqlO mg`G( } +=S0uk(O9v'nwEAPސ^ԼUS/Eu6(h}1mMqL(wCj pI]qepО=1ЇЬx5-"NxemrϲEqS(:nHc=#ek\=dIӺrF WOհ>aEOQbRiW2;o&Ŵ2kGm: 93TzT + +S L?/x3xJ1ωb7߈{8,&kl'Mr4*r;' ~Hlv`I7rލq&8^_G9\ TiG.8Fy&utiOݿ$p|O||C +yjj\wiKiQF( (K j#dKD!<%)w$u(@`S ZJxqCBűo][}ÄY&B{xjLb@f!( "5-W-AM?OyTSTג&)F~$0cF~qhZ>SXN|5OK]Cl_P]c2\N 1H&n@Nփ=(jxX0wpH ?Vwppȁz՝ITyO߭gCԲIK`x9y ^PNc|,zdz)ؑ`GTԍNY q'u,=x~Ϧ".HH>H:PYP.<& YpBd)ᩰiŪ @wR:i@+X~`u,p3e;-sRGŪt.aG;}oX;H)7| (F7tD~\0uw}UjSnq8 Vں@&; MF|5j+eQ\&yO:R{}\lDx^#YP>y;,A6[Ljm)u4](ӭ^$ o/;_sh()KG+qtm@;hpw`bږP`u8ʆZ-4'19CFu8;D*oeyR@WģiLw#f0ӝ_]lsnF+R}5l wE4,s(J3>=F-"ho=Lx>ˡ喂5TKR\%}\j:{]#$}t-=#/'~x/"tf#۬N+ e>2ooWRDZ-*$H$9U B//n!]̀bYx^Ze—T|8p5UhYآu^Fɂ\B"?X^gᛃA;)<"v !7ǃ.L믾zkui/(=!- +P+o5W|lH` f|bjZV _]?}0 `g0vx}_9ޝߞk|}FwkjAZ\߼;돯Db{NV/?p| 뿼ߟaݵ$|˄:wok=.;$5V~GOfSd| uq?~hujLW7_ (eoKX^.}ÇsXhKYS`ѭY%ms{Y5 vu;p&d(xE |t a{$k\K鍡}A7DA?&@Po +M{w-%#]4:4 @f|kJ$ "hy8l{דc6oxK :)@!lX5S]R Zt,橤DZgyZ\{R 4i,H,gN0pU!OQ Ug..SZ zkңbtNݭN` c>˷%ң^|^4 J*%^*ӚZ7:=*XS-6MzTLҟ})= f +~@o~_nŷ^PX$0ͫmC{Ìy ~>n =2 '`)EnQDݼ ?I 8Z}CdS"Z@Da#Vwy }K#^ +:<.*5NVt +endstream endobj 5071 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5072 0 obj <> endobj 5073 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31188V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5074 0 obj <> endobj 5075 0 obj <> endobj 5076 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 5077 0 obj <> endobj 5078 0 obj <> endobj 5079 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5080 0 obj <>stream +hެ[Yo\Ǖ~篸ei`B'GL &e(ёh6?}sZZX˩/Ӳ=ߟ7O˫xv}\_EO^LkKVs.o.b*r}@׋;?a~WQx >NN5x^n^\ hR{?^5CA@ڄ%FT&=!|kr5ؘUO= cqnC +,mvM @~xIc<@0r^fdXYHT*DiY9/9p̻l>5ˉ2VI]Be?7xlLT jf&&-گڔÞ}xۧ+mi?EVjt?filGӘų?=">]=><{{?z{P43E,D^r^Crxo.F>eyYڮFܪO!/U̪$,~װϩ|CF +eOK;fZ+tZmj>BZϴoS,fp8HR6k 6͘xlRb=uP܀WJGshZaXF^ 6@kqS i? ]vNv3-0t5E'[:Ej`Z#-FO @Fͽ^ze-g+&^A$..i+[miX] N-@$Pc2J..V#:BWY46.GXH(1zljS#3 AfI?5Ʊ4O$4Eq8KX={jVH5so- +6=dSY=Gp8YHhe)R,[,>|6xLSѳ!XQϓ ӄA<_?S,Gt\%5"[ +Yn +{lu2Q7Pw=v{p,ŻRý`l竒Ju57kG{:~({3.A2GY/NFb[KԵo{ig-'㈙P;'B?7MF;N[xEUeҜ13K +RjԶa,"&t9%rX8Tf$QlJxW7V0ju*S< }oUD]x +n*u"-Eɰ.2ʓ6(ɴ%Mu9[!IUjdf1-KͤjmLVr +Х핧^A%+Ϊ3ĜL*Ҥ{2w᡻ }nHmWuà~ܶpEFLN:bZuFP0=adC"6Q +lqVRt\}p# /P*0k41&Js}/M&3"ȉF!O$vܴ;Zffq7S3qdefhٵТOF(Eȗ>E%^f!˵)t 4#.xyoXbFˈ*#ͻnN^XQw#ӕ{GOGl+E툓IaնhGGPM;P6<aQ/}_v36=o6wCV"5Q9pumQVk":C ;Mٷo0i[2XTm M_&CZAI7%kjP*q j3h>u $gPu]IS9zb$Acf3"nL]Oz3w ;[M4$#l3&Vޫ7rbvt§q[<}Bn;WJVA_XKoe"iShLIH*_ 6'UnY#nk]KkͻkO_ ~v`ﲹ[2Y7JAf#X$S-MT$85^MY4ΔVڻQ'lhjm{Е>Mɵa! 8sHҹ%~9RW ecOӔX#;I^Pd&^se'[ 1-mP+{Lݑk^2nvS'Un͏ vw&* Q +lAJf7c5% 9ouI.x, 󷟛ZbZM0twGU˭ [rסWm&h){DqSnboLQtPm\gGQ %cV™]q|=lc3~E<ɫ}=FL.fWkf;a1*~FC0Lfu*j*lMAvtIפ=1Ab9'R.,#SA-b ؿJG!ldG(1\QZ5}]?TLt5\}.4@\( }/ܐ/ҪIbEmK]?gĈ&w){cUVqv/¼gͻmSO=;a 8yoqy慤$Sr lPCww *tdf} qMK)&)rƯ/7/n\_RX|{w<ػW?  ] tE~(ͷ;7W?\am%w2<=.2<,~yu"fq1_M97loۛ^}3LHS5(|u=$Tne#"sX{߀^oL}>2,Me_EMGʧXX_n2B6:Ky W/^\}?u'zd P}; 3a"4sDZiT*NH׭*'e+ҹ<\zqEzf5R t2%\?_}w͔g!"Lc񗷰 )0?<-wH5~B 6%?<;R]v=__~~Zn^~SHq] dv3?O\<'I +"U$RIÕ9+viZ>)=&(KZѓ3l]S~юpdM7: kj  #h/[!F +ˏ&E~.A-ͽi#ΣJ׫qZG 2~x I#Sy9u!qkێL+OE &w'PT!M0i@ ڱ٠R> fJiuΝYF\g +㠫OHF 04hC;x 7; Ù-#=:31Ie^:(ts{,ONX聖SzwfOv$_O Z}Giv(Rt/o֬pPMt`vJ+<3-VFӾVc'_a38;$7 +V%[aBLbR2T >ZI ,#tҫ8B)JHPdOgskuJ)q68 C\D2 =N ޴Ka][65䁽)AȐf'baӊPeDҜpflMl6e4lZT 7JI-ir(c1ul{{Qr [6nTಸ@ysh8}J`.!۬ w?=p>)N!@:ʪ 'oW66Iw,ղٞE{LVGʤdMˇ@^YWd^xz[P>H dJ2?|ߦL `E +endstream endobj 5081 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5082 0 obj <> endobj 5083 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31189V3.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5084 0 obj <> endobj 5085 0 obj <> endobj 5086 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 5087 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5088 0 obj <>stream +hZ[o\~_GR_ +uFqڦT erȲ~3= +A:ᐜ|ã??\]^o'_]xl>lus-^]}]lFh\ePF6)+7+%^RƋ) \RkzntRWEiRWok83S_6Zm?eX^&)lyIӆO'Ki`gO! =fK"w+0I^;J51J8ѨPqA <صQ@.F9.n,9t1Ԡ-OZ x 2=O}," MJ0eX)cy*w5O;gW6Ȉ,c?U0nن+TE Ff]q?KV0ګuvj*hXAdP18$hi;Y}];rcOg*F`Ej u=˴ŷ89,øTF|d2K#en>Ht@i'HWYssFX6nIv`l7˛IT=tն&zXY.uտ+%McUَ 䶞9[eHl\3Wvʫժhg%PZU (W)#v)]+[XO\ +_ PHmπkMqf@CpsQ#շ2R3զNrH +R R+đ\*#CinAGgO+ |FI9:{ z{*RFi_0#waMzKF<%5u͛W{Ozg~wLeנgݾ_^}"}dDzxEe;؜بtNvPJq֞-Py憦T6行 MfaЛG:mlOnA" (Pl5QJG{9B#^ҁF̪)>З({_{6 l`:w(nDM5̓OF!Qo-i͠lC%.v+Fqߺhخ],Kxp'.i+}F70 +0ZnpʡqHҰ̪u~B)yáԠ5lk:X}wƶհ߉~M+\O'Ҝኴem=_-g)DžthݓtQ8"_lQ4h4 O2)n\zˑ9I 2긠Y:QG\8P) *F7H'J#T@)!5xhT!< :Ei&Ksq-'%#/m5p HjuOJgTE[ݓIe`\^ 79/g%-lD +⧊^8*I4H텮/EV GF8/T.tfs~f+._ڠ*b,٧vZo(/j F&_Mґ2U,ǣ<^Y^YNRDx*]jOܱϫej9VfCC|rG "6VCV|=οPRb1$޽pAwxVIdmd@8,Ik#Jr`(h*7)4C救F:xaj_l)e2qA#f"[dksyCqdH$DZٙ\# S[ ˡӧ4U+ɊȒ5;|4'+C0cs9&VOYilN:4k>D9)g4C0!jӿ&>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5090 0 obj <> endobj 5091 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31190V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5092 0 obj <> endobj 5093 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31191V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5094 0 obj <> endobj 5095 0 obj <> endobj 5096 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 5097 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5098 0 obj <>stream +h޴Z[OG~Wa3"H WQN'1Xd8ۻ~g `ldSӗW|qs{q~6ywv雋o|vwݽyf`ѝ6{S;bBUjOuoֽRu-ͧWJY?a:S3p Zuel0d%`l&PH&MbtMjIցʣfƜVZu%瘉+}Prk](}nTw9Z߇#+W:p!f\ ąr򤎑7{2]ďN]olι]9u7g{{ f9֧f9Y./㙺+.>" 0h!o~m=}rI\}M9屶v?EWWjxvY-49Y|ju1w%,ŶC}*;-vQ qy^Zw9!Wb᫽QϮ{.+n^{_Numz4~!m19*YHB +a3a:bqʞ;gF+tN՘[kG7ʩOp8HqS{ 6} @fLA6i@j(U'D ;p,{_ԄG@䷁"ЈS5Gɿ-TVp.H;'ۈr "E4ZSQ DAmoHkY @F, %81\H\QLpf2>8ȝx nP0}u+tWAX:4@FP=W}d }zbwݠyrRS8x&-ϱUa颸N#y镨y/rT 爻ތxC[̧)S30[p8}EWq)+DQl^l kB#/w55c@3 { xl2%Nzu8Sj{Q+nz Kih-a+ 8RiԳm8%7+" ?_7iaI=*$RDf$%4z7kWg qo9YWMU8VҾaIF8zQ虆QùO]sו3) FxF\cp7=2bWq i1IV݃ ]͋iN0oj%;*;q,WФ +@%\oOB 1$A#)|[Hzl/a79i'NZV?=@\PX%|*(L۳#?ϹR7f9Jv^Rdg|xw۝_)JT!$!#zQHOtr D5x{S纗ݫ_fkX튢OE!'=MngAtY!h ]垶L^gY .ΩJC jDø'2]Sc`2A{L vqR9r5 &=pP [;pmd.d6:WQĨWp<)J{L۵kq& +4IVqeUIPCmIz.4Q@%.ׇBey56I.1aD1HFn_|y& X 8F6?Ѓوnu8]wN* u&ח I׶EtnE,يϪ 11-e GB;ǮFݎxGJ R6+ˉ8Ơ +6j'ƹ*kh$ȒDr̓"iAwRn{ɜ`3L:s61}]mpgwGCz<|~kz=z0A5?pڑeajӴY:huD]]Og6Eᩙ%@fD}ݽ+2Ͳ/2u-JpB}AW71OgXov櫗￿eqwFq֫4-~=xr74ѻ1 +AB̢zna.YpGNgnZԕ^r[OY4W30n8!21UUbfO*mɫ^7yVP2l׬& [l$m7|Z8ݲE11t>4vBpqXh5Q=ͷ/ToLy84b5dmhNFC]Ekf-X>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5100 0 obj <> endobj 5101 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31192V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5102 0 obj <> endobj 5103 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31193V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5104 0 obj <> endobj 5105 0 obj <> endobj 5106 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 5107 0 obj <> endobj 5108 0 obj <> endobj 5109 0 obj <> endobj 5110 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5111 0 obj <>stream +h޴;YoǙ84>f6I #A1heww5== P]WGלtw?Mpݛww]K=pt}{&lmRv~{7gRO{\z;\Rk|n`{8U +ƕ0q"m7z- 7R8MVcX:ƫSzWxf]]& Qx:g\M4b,e1O:g@"e؜4sggBBwA L}-g ݳ~D͌,)fnS:{KebaN#)̱CWtůM4<'74i?k=?={_\jkOXx7JJ#/Ե`rzj \6iO{Oˇǻǻ{_~|Vib*LГ7rqڿ Qn"LҷԷ7^cgP*ix4k;3`h9{i$BK}w!# +ŝLK+tuު&G@o >A3tіު`a^4ă` 6a6mdcDdJþtaLwAfz6@{hjl6&ħ'E |?6sV~` F|t5҅NTqg눥@I B1@5&A/h2b BrTrXkA$b +I[)H0oѫIH1kGQ}CU1Ji8e+N8[b=Y^ʗ7F6uNL8f0?\c4D&0dylK*ɾL WT7in:1-J!x"tV%! +8j~hЭuD#b7ZGH|Ѽ[kEKW%K[w.Jbm%E2dEx 7zxB\:%Ʌ 0bHX".H2s: r\L#G1XѶXbDOz[;/6Ym$D^0^]EE#[E8%:0%`IK2_tj:R U.Ơ㸹tJ"f,D%[c] ye7U妙s_E'$If20F- />z=Wܾ0L!T#1i )-K \l/v$Q  -TͺVWόX-tf˾j/)e1/[!nog:U8-xtj,  M>9nb|_JVFWT}ILFʷq](qFv8 瘐4E CYĕVm橽L*Cޥ˰ǭ +~e㋏zi4 GtۓR]Fx["f +_T4%6`Raݛ5' m?'miƟ΁܇Z? 'B,{ZW隅I꯹Ϻ-ʦX&TW1b}k%=: ΘO"/4"-0-cv`mJh H%ZԐ@EKb&[υ+ I^"OT,ӷ0AQ>YxC$ K.Q8xֻzIm$O US4]Qڛ%ٵzu0m&eO"4˳Sso"da=[]}uN2~0aXـ?٬A:^PsQ0OK\H_/~vڂ{\aMa?}K.#9L7@RF>||Џ7wA[k\ju`߿='dV? /&:Jçï#a8?nwo?}7@_+~!9tv// dM/W@5?3x034(U~K+#}Ŏ6)hjuD>^a^m%h.=/ig"Q7yC|'‚AͷF|7e:xo'om2VF_&wx!i?@բ{z9x%3[%c>Z]),,W +dOyoVEA#zw +}"Y4^q~9@:c%lh7@EU%U@OiPo60Cr;s}&@).2YȾ2dCn2umv'Tr aҞ3naXt UPKbkѮn+ ^}l^M> +x웽`Ϻ'P.XYҙڃ(U]Bڃ@`}̜ڃ@`Us9:5 +ܾ9h +z9R_4E`uevh2o`uQiz2j bGAO^YUo&Qqfu]yc,H HQ h"S.4 /ROAaH0*rlzQsZYMa49|9Jv.>=l{~"lcf a6@2ڿ;wӻïӧG'Ë7?.ef‚J?/oy +t&,LHzQ({آ0#ۑx=v>Ӵ[XiL]d!$cQRl\ڤf$E.\>_ONjaC8CG+?\?9b +rN`12Oƺbgjt)k~m֯SLʭ +endstream endobj 5112 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5113 0 obj <> endobj 5114 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31194V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5115 0 obj <> endobj 5116 0 obj <> endobj 5117 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 5118 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5119 0 obj <>stream +hެ[YsUG~ׯ8P228ly!d@=~/k=Ji!n-YUYYUë?,gg/o7՛޾?]'QO'U)k.yL)ЌtjЪkJPut +^L՝m_&#4[^H?_S]s((MXbtMk"1 xk`c*w#}m20rjY0klwAaoek6d1\(/=,[ty]*D贬朗ŜǓJZ98 ')᥻q RUV1]k0122Iz&-&q6e_7OϵujZH.Cw}&1KeWkFO>ʼnw^|xzy{lUi!*,1rE!.ׯΨgyYnkJJݬZڭFܪ/ؐkUU#ciIzR8mb0*9-g2q.:F{ VՀI^oZR7ʪz =X $ةx5 @3& Ԫy]b4*wջRRVp #WߢYQ" G_(9J]C esɷ \bFkjl,vN8 +BZB DP Zj1N Xֵ!*&{ +m[AD\ V-d(M f_NV# +!UһE(M }u՟!qLQ-"XrX+E /(afU]XRȋũ:ALQ:3ScXǘ> +Ξy&몄$ T>kA=LB(V\6U3 WƵUlUbl=N +XAi8p:lnQy% Mt5m\U$6#NdOWе={YŨr2 FըaPA)n!K#]ۨ,3ݍ 5<[]=;xdS?ƦNuň.rCGa0ZXEL䤤W,ah0\rQ5Tlq*St=v+*fZm0#uSӥ(Iß7 >~6+bD(㌷OXV Z|v'}&*i7.>U}pɡ-(߮0׋*KwKM?:Z(:n2NL# =mW~} +V̆~K*5An3m0nczȈ\FD/͞ #^lW#vYy8f߽vhӬF}tue(MM,AKÉuȮ#7ɰj¡8mm=\4OiE*Фs)zHVnT ]{B{+ge>㤌c1ƹlziZ'3B7o- l^aX5 JUhٌ^>#F JxU3ظu1ctcG#KcD8Oex{DGDॕ .u|]S(fjIyh;9Ftbz0C?y'M`Pcߒr$'Q Bӫ7L-YcJkU +8j)滮~=,R.gZKYWޮpL9qHuH`XC +qf_o6$+j3v|j :vK ސŞX3{S\Tn(L5sD<$7"?v~v,zQ+ruxwA2@JsQK;AHώ9gmu~#R[_n<3oyYfxa|^-D[;o2d~qrљ˘r[P5[:V>v)tsI%𧾫Ex3KQ9AkTݩ$Npr}\,W4DUC d[\>i~{qɕ"Pw7?zf-[ bz0a7oy# ]? z@=Gbؓo\lR^ 9\J6Z7bN^XcIAނƉ:Jl^V 3R.O<ڡb rr=iuml׼sSS;U^ w0 ⅳ Nk0AQK$o%zjΫ[[:0<.P(Om( %޳nvb|@$bH`?ß/\ty=/˸k43<}+qy)Tm+%퉁&NuZ(NPn +1UB/(IbЕ6 3sCeQ8R;fq̄)@Ì=nh۔ G{P cܔ q@z~S$b ,n09&Rm(vlC V$ŵ?n`PS)@k;w о\gIm |ڔ` `9n E?,ӣE=:17*)h=ቹBwyTmux9Ҽ +j: Еr^2afA#A#ZG~?w߇]n{f']ousUM*)A:>Am!.2]U$A%'|HI//&7|ҕJ#'9x}|6vY8çP}D+;Ud7K(h]fS_[[ba*@sTSi.vcQ]l҄8Y=ꍎMy!pWt |Xo+@Dއrl; nk(BBڔ'A! Z$b2 D)Ozz47e>nhVvSf&Xkh>ݬn-OTbVw'ǰ.7l_;}P"Z"tIt͔r5l& OC1[N0*+EfBap5@~djuZ<|T JV SE r԰V u*z<'@=Y2i-ޙ5I!_ ׵Ct+N[ JZ1D* Lm[VD,T:HFlM9^>1I4x#I(ڊsװ4<%ȣqln?/LUY>Auvձq>g.s i"M-*-ޙJ +mk /o8kͷևT)DZ-8ti1L/ .9;G󒭡t%5r?>Zy,߸G\Zv>bx)V&9 80]lEíSL|;afhq{'K㓋d149`2A99=}1j}p,iۍ!s Goa*i@n>wA]ѡ.=.Wcv U'~N+Oáb|s) +0 +}%{'Ů;l61qNzIO3}<\-$]6kābr+/fhzЂFj^>Oʄ bNH# +C *  ;c_Ea0{<:c1/wJJvxH66">ꓟ Vٟ}I/h8MAҲ]qT?G73em^" +ή5pSpb~^T {2dCB]H:oGMz/:i+cR `0V"(|sy'M*=(%8|)a(&4|D҃hm'ӛLV#jc3cl&:^ +v` Ƨestآ_WtbEAgݦHJT`"n>N/vwg7Tcc6~)Ol4'"|9O3Yej戧;ݸ>Zʤ1/d6&j Q.cy?_[ܿlfTwtfх%ٛZ4sڹii,IKσ 0s +endstream endobj 5120 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5121 0 obj <> endobj 5122 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31085V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5123 0 obj <> endobj 5124 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv40117V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5125 0 obj <> endobj 5126 0 obj <> endobj 5127 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 5128 0 obj <> endobj 5129 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5130 0 obj <>stream +hެZYo~篘G2>z8`GA0jСHlcȥl>:חtvv۫zӿїLz\9I_BMbtMNGj:2~l~=zwpKJyMϵT +[tdH땞 ?_yHQcOH|sl oȰLƻ)=c`0ک u RJ/C=v&n^&:Ct'"Rfx4朧Ŝt?<~Ԝ͢H_EY͐}5ӚF])kEt +扖c{ߺ,MF +d_f# FBWe&5^mj7C/^Ւc]j+,#=7 du9i/9 < S>bWl=kEr7EEG `2ؕNG'*pkA2y4D`֮!Ve4LY-{>}3w<>A4 ~z}οӷG>I;>:8v o9YY(xsBOp<?ݣ紐yt0]8'nz@pōWwu~DNw >N}_ǻb]z{y}Uy)D"sY"e#·WAlU\$h1*pv@!QfI$򳚊9@p?+ 'f ę$gAޖ%BǞ +cZX*uo;ΨxZ"Iv\߀c оY+y_VLR#X5V?C +bα(҄r]K@ψ,? +kN/inPrx6J=xG\H$R}lHl(vKnj\Xˠn;ʅ.rB<JU䑪yת"إҋ(PZ7~ qJb'X;!=G,o˶ndsT?@=aL0))^ƹE,m! /Y%͂k\POU˔.2bbT)VJWg/[p.[7~ފC#OR"pbVyjuk} +KOlNC:| 2PCiFC/h{54u9jXD"kő姸ͮ0JGܮF'kcHY)}߰ph8ҺQKK(VtH:EMݹF*[%:_G#NE>j2*4SO =TB![;_"gyTU+KYb q`Iw-X"6?5݋v꠶vعKMYrm D4KXàS3$-)V-%&I˪n0mfPlaќfSj9x@(#gn.RN}7 +9>6OAYZ$QrPc]diAz?[]m49K_#Wtų*.ltO\Vϰ_λzl˸ Yt:-i ^' gq[үs| 2FͲ=8H$O,ׇȖ{R_CD +;&}5%C +k*楊it!YTj<Ɂ]qaCS +m8V8_>[k9"rkCp C[B:,l8zRW'O'+ǻm:>֖{ҿI9@-jRO\q- 73X68:HMgׇzҷ$˞BCw6y8 +%. 5y Q_#avl+zE[>XCl>"[[~`#vEGMK4B2 Q%89 7bG8qM.p.~-eg"X&؝ ܁@_:\;>tv7wL_L=.oOJmmevm26~unЂX˱'+ %α >rIpl]ё *eéQ{0;&(G+^9Eg[,>YE +OI8h}Ol _9$.GD6ȟ$[Ub*`>tt ªaCT J|V+2au,f` +ĦM +endstream endobj 5131 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5132 0 obj <> endobj 5133 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31087V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5134 0 obj <> endobj 5135 0 obj <> endobj 5136 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 5137 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5138 0 obj <>stream +h޼[YoG~篨Gi]X4Pmc@Hg)C/"#ꃔdc!P]YYŕuǛi>ߟNfg':ONxqrzq'=]\I_LsSVsNOjVJbů'oJY?Owu.z¡siY٭m--ݶz˭/LwΡL ڄ)F7T&=Okr2ԘKU/w'1c| +}(:Pl̲Y߇1ؐ0ql=beˋR)Gi66<.朦BwAc| +s+᥻ ~Wf1]s0E BErsMԳ5yNn2 )tL[&B?1$#rvjcP`&i%-F?ONF|:yf;=`ӳa~ffFae嶙^`dl#ZnVIbYYqr'a 嶆~.9Vii&RkcNspϤ~[i=GCi6:ph˫9X`1pN ́2c I&FT=<{Wa$ـt >mz4DQo }?肴sInH&2,:T:(iq<mdV܊qheWR[+(qnRnjDbknڍ cZIh67>:G+0BWY&4.mjp7CGXH(1z5l"w#= Az EPM҄9Gᯁa t.#x۳ؼgAHfT3jrJ0[ב2En+J,+0Nmyhalhn \d<2A6ezQxw&B.8%pzTeYpI 7lxjt!G$3,`\eajXj,J;J3^}bR%iX O1"j-8WݬۄLaM; +tH>e{30Mmd!Jۊ 3l֥+"ȻK6{H mb~>>VXmjr]@?k)'%Tgތ5;恒G]W]#3?P[r 鵘EWCζ͟yzR6?bW5"Z`R$^q#YPʵp=BOf1:]dǶNJ2N] 1]x>.DDu c0AfDڂcN uXLנa5u 4{CQDauh܋4@dx.hעWin c5ca^q+W.Ӭww+xX,i@(]i8N.T"͇uo' N6GR{Gobjβ8LPQ"z 21K,NΖ JYɌn 8MXUrlbWA rIBb!v +MdF(PXWfY/mJYX3uTTA^hJl9h[;"jdrUy ǦknPn?cvtL k)' +u`Tȡ QEi/Y $ L${kQIw'|z//z4ȺgղaT][mnWo8/ҰtE?_R1.r-իk Kobc8 T\UEHA"7)Q7D+eGd{t<ݪ(m; Pvf/G)Yh-3:"TЧ^*"_[0G G憼*Pk2y'r&i$1DŽ5_򶚹W3-mbOaKF}R4Sc3y2ya^:b|ze8LER#>6Ͼ~fcp)xKYH6QHJB-p1O\^{jV+S+(&t xXG$\~Tĉϳ矜&~^O31QE^Oo~0Pam6 +Gl+r'7|N4 T,>ѥ#>{RI@qBWzu/ԩ }ߝ@^a=֑j1TF>'a`#(pDGl$8GSP~zVk岣Gvrb9yߘW? +0ʍ5&HD*Ȅ9;Ct{6E7OCIQ@lx{ q94IPü^ְyFx\f79CjYwyETCnpF! ZƱ`USnbnlC!T`,i GqcSȪRR_,4dSi`T@^ϑHWiR ,#qY7)?EhyDG bZSYʮ_=N4gto[GX} #"wPY="G:ݾVUhaU ۘ6#pDw _~ 1O~_fODR1={6aSR'#yZZ +4L5_"t*mS ]TDYӎyy7~mNzMEt2M1?5<6͐w,/~xo<<;[3 #=:Q qܣ42[;퓉ز; DN_f0.\9R)0B&SDІRmT&rAbjgոJ/ŸcI +YGc=5\Ozf4k-\w *jf3z?[ +z'o)s4ȇ/2"ɀ\RvCH4hv\ޓBA*vfs~\[В aR3wGL*PEEVLsFJ<'N)a}Ůчd;dCs#S![V,[wb >aO_6ba 6%%SQ^Ó)^\*E9'}u&G?/u;p>6dFG7)W09􊣺7R5=մp{{u xoeu ($y[D~aR` d3)rR';Ȫ?s̖X;PXjr^-R}w+b_4+9R!Ϭ)Ģ;Lq{¥#Ī?rԌc"HB- ~qF}\=69=3^`<\Z`#@dqa||ohT O~$1HEI+R˘}]'mn'1n̙&^ϥL#[|'t1dC!WR\dG x3Vfّa3l\?ux0{J nӇ_Wآ$>E<9~0ԏ+/Til`@q,[Ufi Ʋ [GKbi%J4-:k.m߼TGeΓ_tKW~-ir|C;~8~yBgK0a0[u?X &"Ox' +endstream endobj 5139 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5140 0 obj <> endobj 5141 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv40928V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5142 0 obj <> endobj 5143 0 obj <> endobj 5144 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 5145 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5146 0 obj <>stream +h[Yo\Gz}_qA%4ȐMb1 EʜbF9_-n%y0Ryw}u7?.^]xw}zW?ӫ?oͤMsG SnIvWY)= +?mxKJyߝ*GJ)+oѐِv[=[:)VF|djzw6Sy `/Ea +`؂jom`Nxo@"e؜4s\n65gj/וY͠};s͆l~)SKi[z s)09r`i-aNSsrIIY?n/_jD;^OuVXn2AMi[KlF7]@_ܽ|z?ǧoô *;-sQBO`q+qJxb쳛7M-[)[)Y{_[cgs%7 ii.;3`d8j$ d9X)ke`U(sZd]ei.'-5,Gz lU,ZhH) 6n3`$dZ1kEɽ])h)Zߐ׳o :6O?§'ʎ{߷+F9+?ed>qAP" +rxlk21I(-R|e,0x3TYO\EtWܬ+Dܜ|y޺,N(R65of# !!UڻIHO.hjIB{5U+,ڧS=AH1J '2.9VX2 ?`3lEt?l{+p/|^8"luұZF@ٕFǒOuh-( J&O{Ykj EɲE3Hm,yr& y*½9k] $Xq; +UZ[/&jĠ$K%L6Ʌ:XwDZF"aͩGL/+7xQC>n| P,Jhzָ=p5X%8XKLr7thҀ#lU J)J^8!Y 744nO*\w,}i2)h 1)MP}_W: gI8OuaZ(n#j#hC ںT)& Y%%^mjfCyڡӭwU.M cE(K[ضAF4^k_ +ޱ}!X[~KHpQTqdUiQuEUjM[G*рLLw*zgiSuY܋*cݪ$E+m꒗%-۱N!yv~vnp!Ԕ=а d[Qf0mU!1`r\""9X#_܅[Yu) J=8-0Dʷ|u  QʇH⁈ӭ;|T׫k 3wKLRG0\ܝ+ikQTqɕB}dH*=&U.-ͺgYv] ˚ 7*(s`5&Ix(&%Jb7܋ |K./A9ޢzUlWq3%uUzVՒ:-Вb \i}MVD}5֊B + z|KVkyFA890[sl4^7`8)ev=G/g_^(ތ˄b>;Z{ 6`OoMpI("dzOYi98|jn|hQQ"ϙ<|Ƅ0| +);,ޥ9nC +Pa*~MBCs 53,)ayE~YMkWߝ\~ô)Fnܤ0^h~Ux{')];ɕ-RRӶ{ %;bj@zS1.w/CHVf&e/wdG= i^G6gcRp#a#S͆#\?s6mkgox )HDj%D* :'П NisTi ٣(=;;}T? #v.,Px0tj:Fצ`55k*"&R5XBj{Jk9 Ahk60ؓ*kAOWU08/m$AG&x&NA $!JQ6 d{)Cs/>aҐ!%^kV> +)\/V}7!O |rHhiL(o ^ +lxYl"y/#.su+ -yhR;ҍ_'iNPLsyݙLjx~[dE/3 Y(jJkxAt0u# +xK+܂.a$_ "We$GkEh9(xI2cz+=93^Y#or~!w\m&|Q瓗ĵ,o] uȗ;^ʎЂ>*ž( +SқYO=qlLQ-+gQwZ@w\*Sr#<f}*v@{$>I:5+fhӀ6DTgAsCF>ԁWAѥa$tV|nWؤ +Xj^7%J&cXH^[jT-1QJy v︄&{Zap<"ĜT +2.,үg~Į%9PRGGHC0aox*(]SNh(^[^z)a LLq 06Xh^*G]~h@X^Jwp+~=n;.7`_ o|b`I<@.j^Y)8z rYGlێK}_̇dFb07eHn1Y _o{p>$<&S޷]3_[!0hu8s1+dtܻ3f3xf2esȫqn'k:Z˓I. y{e01"juz9&B XRV쳜m{hr5$OOcY6s !OZ'n:H=X\2]"`m?dwfimۥR -`VV.0c7. } Ffxkx@:d+Wz[?3d혖l cJͶqA-a[ژZšgYU8 *rЉX{Z+ t!afIy6ts}NsL+-e*sk+ˁd^FuBR;+hʀ +endstream endobj 5147 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5148 0 obj <> endobj 5149 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv33111V3.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5150 0 obj <> endobj 5151 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv40120V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5152 0 obj <> endobj 5153 0 obj <> endobj 5154 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 5155 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5156 0 obj <>stream +h[YoǕ~G9mվ 1 σcWהŀGb'SKZL<vur:[zgmw|ݫ_n|~yrgG??>=?zx~n;۝?;ڹj_Mo 96G6lb|bvڶdcK2X_ixkSi}{g}M +2K]ΡE&:@yq*иmն_ =12bdlƤ}9uĬ`6tjlӉ 1TK㺌[Zkׇ\kn.5*L_;Ɨpb>\? qIT]t9) bdBpd &>ڗйu6b?޽yq{:J?1eFZ݌cwKHi  +6ϣO.#^^_]\u7^`!Խa 'ҶO yhLkdtWzckod`m3Z7lKoCn7pY d;yi[E;aaM9=grmOoE2a;}v-IzY  80u;AN0s +C1o c>mXi;ށWx|Dz;(0GTcG1ojf(CH]|KE.f5ѨR h{ [ȼhdUelPҴXDW"L/1/'.'Ⱚ.Fhgm;廷Gt& C'ƣ/UǑ`7}!}v" g yMr%͔WʧxlMF_8g`Up?[2(lQ2UMﭲ +CJK[;K%W7ZΥ#`-uDR^`yˆdQ[K3:֩hK?o2Aj!R?#n254ќ?$yrAN'ؓs7€;w!vgB.,0mT/qOz x = Wfȍxz!&#I0J4'5Sfcgie-q)s~.ciR=Pm (|}`$SgčOAo|1n$;b8zHgmi Ȋ8n М2%䟫6vVdfmGf"jWѶy^kil0,D׫m"~{Bx>66F?;w6c#4 4N!wMFi#R+ 4j6u ~E8Zg³}3JC8;=@0R3KhcHbGzz&2L]&EY&mPSuv NjauǸ- !"^s[T%=p:tᩛ,sث[Ŗ;qV3(l~TTcrXL +$#^T <8=#f09 D=CRJK9oQϾB7,?\ڌYdxp*Y [s.ؾ}sspżFM5Xf~}f"'O3~49 :gߘo=|{|o=ӜBLs옔WonKzhByke[J55 +o@1yrNdcb鵨r('}"wi@s7s!(kdg){o KJ?xvsoùiO?=x}}ѽyyyOC:P9'Bf5KVپ|IEBYgKc?|iǖy)+aл[ ܤq~ROyuqs0>us#@Xl-?=NO?JDQM+r2EI˦_ONOubHTv;ӢD=D8G?Qxa=PNs%.HY{d)Ub@X Qž$$}u͍AL,*l.$ĕह0\z1ж=o2-CgP r mgaI%L:f&.}0^0x_h&to}>RbyV:יCJx˓L2c0fy/:&6̓Lp! zC! ,2Zz4sZ9`*]UGKNCRjb OA!E&0BzPh"JTL:#A>rB`Z=qcѼ?H^m#[G +W SF P( uS8@6b1`ջ&Xz@i&J c!!|/GJGGadYhNG(E}]@ϓR90nJzeݗ]eJr\{Xr[rg{Xn%Qn?oAnnB9#MpρWy YI|6 )o& b.)F\*u D,=:lLI0T;G#L3PLهRxY=YDC(3h;di>')X@ +J$ms|ː9$A<ψǜ3Rl|qvK|2zAD]&X(Eym\mǶhʟEa*q*ܧb*Cr>,R<8Vэ/&zr+\ +Yyxdr8!2c7r38p('vױ9a+'^JDE)PRR6Rꗚ|mLɚQ E[;(Pۊ簲(,3qƌZ*QᜉOJFD~IޯҍɈ#)M,6(Lߪ@Zl +@wlg ;W̟Z:'Y 9ʱmr+(?@ЭYV"A6p9-BU Wiـ9Sj>uz) #mհT dʶY=6ň]FH^ 5$4-HiL39kw#$VǃK˥OH޵2Jz?@x粻ܟ=WId +~o}>,]b&T)J7$!7ZC&w:wH\["rf1fpXńv,#}PPvkG{1MF Z';̢`ݰx"\[IX9ܰ0L%ʹ3E?FhKbY(HtB5i=%j,1=Aj +>/mh+PY56TncYpwꪕ1$@bE)nЛ~НtR8@xc*( »7?hP,c`oU *^lL՟_j]VWjEƎCIPR5r#WȥC/^n^ -mV.BQP5OX!2C"\`}8#vBŁ ?1݋-w!=єnmK^rI) >yVX7,U@hٓm^s'a J>6)EpT/x0wթY\k6&3%jʁ?na:} 4ŵ9VNuv d﯎*? 8 `n T8ܾ@װuD+j@ 1xAEEO[D^ ];إn@uTֳK,aw 1H4y_f!]Ab~}y" qy5BI-Cd8E$r"EZky EXe|*zE]D!Q)ם7H&ʂa/ؓ?,E&b?ڷ;d1Y٬&keF v%Ϲe >Y9.] >yw"Gקʿ/1-2* Bz(;vl/C%c<%)J)4r9|OeS'3xŞ +gB^ۓ ŒUQ7<~Лy @Ô#Y攡Bi_+e!Uxu= úR/ |TGy.z+rjVv6l"p,uJ4̅yi/V縮aOQʔ12j=`d9$/m4GX% XM3>:Kw7Ͼ]|wy0',F̥9ϏΟ +T3Q +Gӿ ~$m.cԾrWĕ? D$(p_5B +~I 2\nᪿ K$OWx5׀P٬Q8}9W^rم:Iolɧ +ϗ5d-)'E3j`U[;SruTXD3pZix +<}MQG ~ j銗j}HebL+5,혽א 9^esqZKIˍ9ݶ-e:g{x +0b* +endstream endobj 5157 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5158 0 obj <> endobj 5159 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv63030V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5160 0 obj <> endobj 5161 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS33145V5.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5162 0 obj <> endobj 5163 0 obj <> endobj 5164 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 5165 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5166 0 obj <>stream +hެ[Yo$7~ׯGi7sQHn{sc*zz #, F[M>=OO>}e77~fx +?bmR˓740<ϛPN7| B.,L-" K܉0ʮ])ф@{F g) 7ghG#ΎS;|y˗ ])<}0Xt8M쳔c|Y lޘ1Y ab)[ʬfj`28C\8}mu112S.6sø{vc`J4"ןoG ~ 𼭷{À3@|.ڎD_vbF Y*Bav8O;S/W +'+);@6KR4*Ͱ &<4+Â;I<}PsH +6uiQ(Z6֒q39OQO姩Gp>%~'T ^ռ/)Ԕ99[TteV .d?0T<{ ܔO(nFgꝚrtX\~_ʰ-,ƾVYBTΩZ!(Yh$rJaS, +)UaGT$ +R67jbC8$HU0RALa@Z X{%`@ d +"|ji ' ii%Հ$$˸BZ-H.^$7ZEkH]YzOn$x  &6V*kz]9iՋb0@Za KԌHcƿQ3oat$J`=iܯClłE N:SDYUݘvF[tFx QNR^G"F8v|k +لD;ӥtrDpg[i45NJO}^+ 0gS> ǹ^3˙ο +ePD@m^WgPB'+Hipn'C-NS Y'T1q,Q.fKc,>/ގL’p݉VUClT2PQnW ɉ6)Tb:)a:T sg>5rNʬjCA,%'nRFd`r0HʑGEflݪ[q!#V+#xUtNt%jG,' ^ds0K- (yMkBf,{jWkdhVW% ֏nC=P2d%#T}&U2C[W i4F8&n' +:>r3JZrmև45Ba=cqO"²EYvB"]jv4Z-m].mumVj`M7amϚ=6 ^;VF1qnzF-#PQ%YrLR$wiuCp!mpl'6zAX.*. .͈ .;(Xqʶ|7N!XM*q[B8U2 v =EC8W'#L-tgVU#`F-wڑX%mbP8la& n:kY8%Q? li b(*@ľ +E]w(ipـ @MdQ78/*H3G$Ir*3KO4WCH<+D)v] 5?vw9#ReDD%FTzYFL&4@NZw?oX4*t󽭆NlՂNIdY 3qj5d)rI:X|k0Jđ%D HS\_]jU/in"<X|d)!ń퀈Qft*ahFdN=8"]NBH .OC2 ̰&x$JK (er/"2NM.bkċqԩ0';tIx]-Csrf2P +0{"U Hx\VVQ.:@(e K@=0^ r-lRl*[##B) ]?'2ZĭYC3`rGK'&[ye֑*JFťݿ]7GS"}-֓%m<{ìrMijtɑBMӁ 7/ZL>Mp,9=o6̍^zS,AϱN,(7S V0ts&:"RП`xWMrk뵓ʞ)9%)e -sȮ>ﴙ^9F%"3x_U0cwbyKg!.)*}mv{If{RFs5$ö +WA.ћ*˿+e\A+;W( +Rieo/XeSb-,7|LN75GcaLJMbKsK*S0JjYJ^ؤY"UYQqT۝ž6\ɔalְ-au}&'R"o;j):FCr )v>+] nDx_<E'[ 꼺w[$/W6 =jsj-Aۍ׀wD&/MPELcFl + Y9.-I7Ac7,.s#IICfXI5i!(s5)0 " 5V@VhU%%#ysoC?&; ]0 `LڴELJw^g۱?hZ:FWPC6y5#!D8,?h9 'P%YiX™9%^`6aZ[kڒ1aFQz|f*&'GKiSh] b4mZ[_mY6-2{橁~9DԛbSM}_o^t:d5QQl-<{]A9YK4f+U$M*xfLEbK&JM'_eJeQBr[<ܫ}m($+Y}܅`^fopՌ'"$S2ڼWc|$qb3bփ^OqtQ% +n:#y0OX=HF3FOr%G!rX*LgNk0 +]3'f$5#D>f ݭ!H}蓑D 0S.>9t@PƫN׼esŋ~/xkY@bs`tN/l"XZFJWkR(m5\'S<I4yi[T7*S!}a:FN niAm6F\ͥII,&(WyǖZiTI}<\puWi٤Y[h#>h-9̡Ϣezg?vud<ج7a~4 u}B] Nv~X Q$O;xqH.km..W̮VV;ْuYA^B +8J!͗N>' fyšslؚ3o'RV) +>'*g~}}P.-;`UqŨ1KjŢ AӯlmXzz h>>%SS"}^D |؉$J:7se'b9q~ދ@KÖ.ëI{q"րwZzY *ѢFqUrیd9ĦWA\kJUSɯDZ׆u +/w*]z)K^s5W?~IF]FۄN'7G_?p[+%NeFm?\`8GV)ÃaiƊUbu^ǟ-ߧ]KHr"sK{)w"hU86 Wi+·!|Rˎ̷^m.OV?z!^VE$V2:ܫG%W[US3|v[\;﯉7%TRJA,ltk ^lfs7^ݥy%(1]PQX3Йh> QM9 E-$IJGPb^gWׁ[M}6АTZ@m*//{Wii*^;|R.EL:Y&!8yoذD1cߵyw-rӪ&h'U^:֛ ?@_n&E +Gг>6Km$C(/Ǖ} 8YQd +M]Ju}Qbi:`#=TUR)*Do)I ͵y!`dRLm H,HɓG7 L+R.T5ůb$8_5n F/voQeӏ3Wg>e,J:~ % rqCWVͬ.:~du]q}QO4=yB~ 0ej]'al{tIЯJ/׫[u…!O+}m8J:0'wr@5leqi| %sfH$){~,?QXwKGT׶T\I|b7n/ζkȏ)q⼮'22eh$h@65u=y{mA>zTv=WoeRZ~*L%5rjmW/GqZ~|ˎ_}۽=(bʍKM of,QqbjR+v9 ګΥE+Y9]$?u$ZQfDm2-kq˚ +/hqL]ӥ]Xȸj5r&c]jCĵWϨK K6-q1-pe:L au#7);s tD +r@Itlr2LnW>JQ5iGcvO/8R1~qߖ_SaG`5I$3o| i}R>E<\H؃3Y-v٢U$ޚ btSxdlL qKYlyPξ*ު}{JwΠfnx8pwo}uT|/?ՏñV.|՝yo_Jϟ3,Tw(oOu珗uOϴƷߟ;<-l3PJg0am?a"n h`w'&(ߖy?[XKǭptb\nLcpP]_OmZ4_/zMs7ގw\_". +endstream endobj 5167 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5168 0 obj <> endobj 5169 0 obj <> endobj 5170 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 5171 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5172 0 obj <>stream +h{[ɑ;y85y#ٰ]~XJcp]I7tEdVչth]p:TVVdd/?|zx~?o?o߾[)rnI޸oߜ|:}Y9Y9/A~ 3GXd}{Jy3˛~X Eb,&8.MvEp\#F8@Q^W~*~FN©NKӒj|xcX穸~+KݼTl_\@?%dٮ!1\B +AǷ ~M_Z:&wyA?ͯ>} o'{ӻoJ[2k܅Ng<7w#ݷ?~wO?|rzlq=y":UWNz8?n 7Ӊrhy<,>gЄu^z2Kk^5ӓ,nOEW__r_y{<屇d]=#v +u͹RRWi/W9mK#|L0A]NwX + ` zhc*˾iLm!>/9s3-nz 2 e|!1$ ߓo,PKnf[-c21T&=3:R/.1FQ~|Q8x@HfsVf<}s;(Wr%Ω,/"SZZ #~D.*O/o+*4̻Bԧ1-+ļ\ԻBVޝ|sOx{R)j)^Xj ","?WE̎ym9RY+i?r#8طUʧa҃BRG9/7ਸ਼Z +*w9>^s5DYaq7tbc +Hi<(T/ƀ]àeBXTIf]@B 'h6:"}*…c +@lįbg–U;,∟Ŭ> `Z߃18HjnU+k>l߇ = м ́IZBnWP"o kH.@Vk1~IM/Ђ*l/|oA*psAw+G2Gia XmUd82.^oM(-F(g;X*HXIG1zV[q}Cb I@%I +.@T&4(?)KU0 ؼh +W1 6H'GqfoxȽb:s?~mNމByV6t䝳1dS \ {Pi+܇|X*|ϛ;k2Mz/H<{R*%}EXѓAP$A6!SQm@[oyp4zN(5îLfx8ݖ_ 2cE.%G3`L<(9/Zw8jI.NH /nᾬӪjxЧ[F)wW yuymԼwI}>Tךxu՛iZcYC:1 &T7Ԣ^7O&&]d`'צCC4YLZ8 @Tifd`.IM^>MF<+Sŭ+\7[[:ӿ=i[<כaqu +lE>V䡑M^`;>tNsM鬖5M4B7)Z?95/g7 孼5^n5Ǵ"S7oc֊xf;Ν3i]}(JGiqL -r Q,4/NN?j9oXaRcmK<=ƸJYmIyFlsT+̭?{dio\+S,U$_.vϣWC?hМ8,ygV Z9B厢vvu[\wFB<;vyX|ڸ~3@[Up"QV2g_h*UV\`]:l{ +xe6BԢ8Q6=ʆoFc@Eܧ1GIKL)Y}@ecчC9U@ya+K7rTt`+ɻ1SNio=^xJ 2ی1cO4uQ':_:<yu>>4zͦ#FJ2t5I}jUK}/GYy{W +ts^dyML3"Z,{H}IVӈ@LJ괆Ql6sN +j~f:%8;>Y>J87D)\}Zk-ӈiz@)w +uβ?fUW%sMҿdy^33A?H_&}Z7pÒ]n:K̥ŨK78d>H˭Qgl }636Nva쥑+"3 ЖJN\8}hТ{kL6<=H ۓc}@1f0?/2# ^ NB0+H7 ,І>syelYk`4O^vBz'zȎ·kE}冷bw®pO>)Q_{ڒ.ٝ&v]gyu->\BsnwKTVmmd}" +y>=|r`,ՓL#g/?zls&j۰z=S{}X}禉sw- +R{KX,v%ûx?]> 7 |{ ~WUG61]Ya߆H4;wTGXåG`R/}Z()CåS9 +Wg=\Ȭ#WM2GQ^W1G~2}B;qd$t$N<i$hum#'6%h`ij~Z Co.~.1SftX!^+Ӓo?y\ "{Sb$&X2ci "cM#y\6xYk i LҎx9 > Kb6.c'QDRC힛za-K +BPϖe[-T!~f,1Ddm%kǣXLBÉKڬڛ^p);v9׀ +Z3FEvgdP;/)V`sg,G?T"Uom~KI| Uq@] Iؑ}$Hɗ"F  +9&!ώ%*^hP7 KKnm3Jl/\ +GKu@OqLDƺ:G$J&b& T}T{l'zdOxdX%(hSVrwvqJ4上 4t+ɕ`1bS=.Q] +YK GA; [&7vD#Sջbqr}*؝͇%R˝m1 gEXgd s\S(]w($*[E! A!gM); +@{6}K'H2?eCPCu9cg.`5y  eCo?jC H$vA Ǻ{B|;2־@@ :6u#[HhoF'"qkݒ^]/a6E/C7.ݽ؂Jxbܬ Jp?jCK2΍Yd89jsc*JOैO>Ei; +ܚPFa31zy!=7@ <~O}J?A:'Yl㘱(CO!#K@?Q ]9ѵqpK:CpQ5(:V@| &bxo[D&āyLU;fn.3C0["qR5w€,ZA 1ܱCc.|/0#V]^P6C&WоǎStQFB1 CjY\m$dH,-&) ĦcZOO@t$Qt;Q/.=Na>`uq#vFȲe>Wh`^5#t!FF8U3rf~0@ϓkcv)&*b?=JP?3ޏg#A_nF83-JD/,b]JMլQ8,ܠ(@KvVQWQXJoR uYRc3v9N\*sg: [cPE8D5Z#XѪDl-$>CC[$EhٚBI6D2-nVbDu SҪy/fwȒGeB*T±=;  +cӠ>_.! ad*lA'z%Ig;AlZ'>GOɴD^'Ek8b`wKnэT0b%!( ͡7' zAe!x0jFxՌ#{dYLuW+ T L!FqTj^,)I<8cofJ0ߓ5zQu 򣢔 "89(<" Xt-e.f8\6#:ҥ[97섞]D>ڿã]7K%3=9yj\J1eʹ2P!MX[[VY7o)s64x*d05̒rb y% L}#Do,u񚈋m\хhvtTBiG)ίJdh[t-O*e؃i[i }*٣žIHgέc%Jre #^qQa&A'fQ[_M?\4^ڐ ngKr:A՚c/*8UHnJk5h=)[hKe`kۦ1,XɌ:.O?j]h3o}j`?&[Y6Н/zY]rWkό Se1b39φ@%&p>֫-: jt%T:fs'W,{~-~}~:-"Ů*'ނ+s~Umׇzpϯ$olM|ޭʝkAU>4:`/hJ3[uU?wo*qm +cnsemTDF'3l>+͟Y{AdB2ܛg +ʱe\J½0E.XFV^AqlaLTjLt9gx48$‘..ixgCI6DڔJ}bDލh)ƥ4w.MLQҸpB^cֱLg3BԈJ'U C.QguHpGN..Lz[P̂MuH{>y9^5! [j4.”JABs`F[u-T=D,⨆x1vGh#8~fۡ5Bv4d +䶪-LjX_Ogfxu)YF;6H_ h>_eAA|~  p'A>(I6PBx +!{pr{x5(Hk1gz?fyFVM΋vf@cv:%joB޷o&lR%2-s kCbtOLhTĕК8YǢlAgPg\1E:ζCvL4 _O )k r\-"2F,&]n"Oc*z P!$.O?U)TVC%U!I(DlOl %2!WyLf,g8`'I{(-܄0~-'DZ*`pE 8+R>*$Q+[i7o%d;N +5ρm PTSRjR(,xjt\J!HI uH;1D :%b(eӤ,NC)CBz)RmRZE./K qҥ R "[>[H.qY(=7yZ%H 5c& B5ާOԘπB왜LeD"-V vQ "lFs8*+.d﯒sC$Z^}[ o6磼(/< |yaH8yĒ&@DII T(JHXQA,[T4ةp8yF|L~C5Sxy]AVE#A]&s&㬚r"эR7\f'akdt{!1tIަhS^.tz|S<@luJ ,*_-ۂFuZz6AbS!6A-3 i >|6FC@$[\h:z.!Y4od=m:,X4 U~=E`ȌUH2^u~m&0JFoa,1-Ȱ֪M 6: "PAΆO"Nz&xfdgCY a +CmtZ* 'ڄܬZ(Li2CTPQa '?YxIkd7VU') Mb++LD77+&n0%hc0ZaV4uɾ]vIT3UB0G@:`QiKy%4櫩Uufz07bR7skHz&53r0PL25qIc'g6|”0uM[:ٗ;Kb4y-nYE>)֎lF#7L XI1D(S@]0) +M?#\L 6ttS)rzc2pyXY4*JfO%fYULU§I(0mनYIbKFT3uic]a 1d)9.,6&WiHU-N`h!vӺ7Y8Or3[x,\S}4:ZxJ`?SGiT ,J&sSDg~ N23Vb &ɨGEk:m(V}`CZ\ZΩNq J0XM[O ݤvQ?Q[gƿ\GX[$2N]֧}6-y!JktQ#JD|]Vd3?t5rm\"H5IܖY#K Ҡ^$8-ןGI#Is$i$5IÖPI#GҴ>K 1}n&im&}N&Siij4嗞Aq5m|RiKӀRWy#Oui6$2o $%F!A I? I>>,H += +JvhcclpM9[Bg[ RVH HRdy ]U/fFr}@r4(GI r `U+C.PF$ +E7hR5ʼn Gof1f2{P b{eXMSFh_:ihr$ѐl} R"#ƌH75Kz İ{͉hWgk1!Cp3]NwkL8_Qې {-ep%%,3|| u m NBx'a7Z 62 s≔÷ո'Ki_źJhZiP"1@#0T.NU\]5fT/2S@dGKhsEF#פ/l[I/~*͑fHRz|&WFtjgZ:z55GVCw4߶!UxZVZс ٠$Փ"ֱ>$X/4O66ʼ@"VX +xT +A݋g^=2|tM/]yM0슓rU HшnGSkt5 BxAE4 +Z{X0U)yo,lP`Q')59:๷HsJ0n%EoP(PS~^KwVQiah:qE>zBZ!sW" Ъο)æm^?"G$7OksyG\ܐ-mB[Rpt +t +hi-m9a+viD6+oiK./g"m亰x!\Zv-m/:+ht;^kC[>fC[ڒ B8پ~F@ȸו6 8Q~|7J +=d*ؚ*Dp.c 04~ ǠJA1?dqQ_[12eb Γs.)b tREE[>38|~A!u7a3)ԃhD"1V" mBcu9JK_<mfF~R3R9q. #D*tβh)^9poײ8'a7D*kHI43ɔdD.ftsEq-~))쳹[X <ʲ<~L*GKֳ`˴L3n3UV 4Asxݤ$qOI;Zs)6u3G1ԊD=pXT&ת͟x,DzOV`*Q;o#dE`gs^&5Ey/syȿpm|- j+g+RmYو5i !"qYy(πLx#NDU\@X:lX/*auOEgb{+7r+*Z֌WeTg7Mvc:,^ܭsD[ȟcFdI;hVaePn.Z<A|,N6)oW щ瞗-w A\<֯(.C"^nG}yHS<=N^^A=ۻ,ˁɄ9=? `l,H7npk8i7(HpOXq.^w:-sEak F1ݾu~ABk3coR{fx_1s0lRaĦ|y}^ < gA"_>,_r?h=X3L>o3[.d\%_'Hl9~CaՌo]mp~cQX7]q nv~B˼DbG/à@ҫ3x}X@>aA 6;/e@GA'.;3K,^D@r gA9*OK71czei\=cPBR-$BAQ>px.ϛOj0 6f3ϼE7jnT`aaa~ 0:Oo>"/l_}yիL&P̪ĵn~SiQ߾Qqn6 3>(ΦL |֜J}oŢġRi͔\Ѯ;|'-<%TCMۓLKHݻ(bq`wig8OEQVMZĹskz*8Sܛb2lf﯈7\U +I^igKF Xz,y BX,`:" +If}ƇSPY7*Lo'mگW޿Dn>%SJ5N?*y/S5% +)~si侁dW`+X%Ҷ:٠j3iiuݖt:ZY";Z^\ +鉦Skg-`aԎ! cbQP;c+sXh>90~Y h~abu*5qPt溱JgYP +jW1%x-3_hr:!FvwG~wVv%KJ&< x;8BA|l#_*~Z>jWtUOoSK3~M}7wV<72!fMYo[o7o{ǜ@ho2ΕBJeM{>R:Hxє +8W!Ayx4 +&EƩ@էW%-~_;`Ck ]T ) mXZpGuN|&5,{o4 ׇ;.ˎf +_;p+ V?W$E[J +oG\g^ydP9펳H}#4fv¿Q;u{ P0XBЀQ)w jkNJѹkB f.+N4k7Fz露ձm;%d!V UG|];DRA#U +"Һ / `_yYpa.!˘]oyZ!xݤvI5R~KJ/%RL%]JJ~p8m_JXKw+RKϡGKy-aLpT.""/"8Nv~>0~EYxM]"W8f%8߫:2uu"Irltqh $C T|Q +BDz|Y ~,@aVgVQw*&;Bq"|25P {%O >TfME~660UPy8N{Eܷ3(}D a[mT v[Vd-=["ﱹ>檭9ǪanAҴJv\7p2˅؏2mq]"`v Y&2TZ"q)PA~ b23DJ'] uavRox%9Չ<'3XУuYVbVݚ{334jln*XEݶV?,mm3K +hi,rXhœa'pxMީ7F`KkRoD-B |x2c)u Zjjk7Nd[`y*5rG/]|^ a *[2zJUvQGTuO,aMZCT@L$0Af N8T喅g,+C=4>.R X zX߇Ҁjti#C.G[@Úe6ع=:Q6jKg +-N\q_,˫]vZRD̹Xi %+i\=_4/p ۏxۍX,GF4M?LӞۭ%SJ&ta##yUd؎sMkk<[qsuVZEɧ?!|?X8 p"s 'Vf_į,=e@FqYu m0+uL,_Wkr2n +tYs\r,׌P@ЕfN%ң&Ipb5@gBvD2pPu?Ud3 +2-k‡`hESwQZmYč:8_Z*b_~C̉4DDWJP:2 8@F)EuӇ GԘ_:dւ )uY +x^TcV͞bL1S4e&[nrzz+ωq@\)\p61rF0p8eT}qO G- av3T#o?<p4o?p/?DL,jrVsJS`9J;gʆkG +endstream endobj 5173 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5174 0 obj <> endobj 5175 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\ai15413.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5176 0 obj <> endobj 5177 0 obj <> endobj 5178 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 5179 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5180 0 obj <>stream +hޜ[K$qϯ%k+Y@q6l% COkXcIJ$M7tGf<3zVtV###x?˧ݿ_O?_}x_Nӻgrקmi,>JKk8={Zէ +uu]kD"{]W[-<ԯ ~{rJHm/[)祐z/F7,:tU@-k[ 4_o٧ju|$ZWO۶X~D$eC=RDm]~ɛUl9-6nRz9i#}ܮҦGaq5/ljٟV=-/TƓK'??rz{_cοAO'ظ`nj NtRڿ=~|_~t;c{s>~/]?X|@YS0y*r}+L-ٜ>S9re|a_ vA㺸aw~Y ۿT9sq,ccqFeb2puq/06Ur흝[ofޅ>[r h;q΋Om~ɍ R\0n"^ߤ"\/=-ߞY/~}sҩwp~t@`ι\fb PB.!#J +lzG(kzS`}طA୍e܋ $)B ˇMqȇ6]طIۉB`cmR844ү>:g!铐N]s 8z_aR6vs/LC]?y.g V$t}ЪAD F̴vOR'K7Kpx#?2lqʰRԕʵZ/ %YMYO׷RkTjo~嗦H%R; 9yRm pSVtІjMM?T06)i @AP$ԿWD*^b}kK8JDvu6 8~@in [JSkc؍!V+"`3R&#Yֆl)qme^ Ph^:EuH/m{7Cnmmc^"P:Wpf\ -+ԯ\ Hº6A^P`|y4IF+Tx:6,? +͸o#Nζi=y]׵@N+(jW}emd@Ԡ6#tD= u4"m.ţLa8dZu\U>3}~_>7&i(Fp eZb׵*kȒ?_=NWb̖0=8;ܞѐ~bZ@uzr9 &U:5I kUITԕa%8ه),Hu5gl*bRwL<]5 ig.XmP e#QF6dmԲHy|{,~E +M,JB"RDPhS) +en DBW;HWb^.Pe*aca3*4]=Q^qƝ L#:u~S4!U:J w<}(xl$/0%_I1qvzʺ]ᚉ\UStϿJ8Ԣ(#Fq5E&N6D%hKݝh@^NEY] ţ,Ly^}}9j Ҥ?yrCuKi@Xghɥ0zI^у00`IOFQE1OZ!Ķ:nVdl &()̳r`4s=\Ioh,*ޝ(4&ʝnܝe<Fy~M/0Q_2켞 -Ga^*m͑4 4.[HpJu89?,.{c&kd VQ]5; + 3`K.GkCXLJ'koO|%|y pi"!`1Z39OjPxJ@1gz}v=onunX-r֫V!oVjBwu 2d`PիM ݻr}rbʳܳ8n4 U뵋@z#B]R@/S"u."OW`Dёц/*d":jpwy[͇?b$ !VfTQq{D) +QN'5XoLLz=:=b.8̋7n ?+|S~{!>vc֕ =J[H5fy7]E9teٝfʡCoFY6(im5 w0Ps/ 0mcғ08dyA +DIx9c2ȋUq~Os:39, 0Ndh +u֌k,÷=A1̦%"b‚q_֞s@ Y񧍳lHxP=jJzyXr_ 5)MhPz52P;a+hSYX|LʁڋG5;'TQ/SS3`ԭ~QMcKZW2j2#"KfLu n G2~1oYT(~^LM=0?^&S[BxxVZIR=MŔi8%0ȫYR"V`O*4 /%Pdc\@0mD1V` L +T}%I4wal Kb_SL+@A NgX[ גC!XgԶYQTC;: %PЭrntd>'ϩ嵙Tɦtm#;f-R{Ex@mI U9A$'^3޻ycfZO$ve&/L򶧎0MP=fE}ΏAIr>7>7zśl~m?2nj/Gwިd|69OeNnpgZs;c%'V7NWg{sRGnF%Ullr?n0{~S-i\ +,2Q}P8(_Ueog5ު!ok*e +,Q`~xh٭ b0?$yT"O%wVC CY33' &Z=sc|x(G6J?>~'6jVd3>r_ +9]|3S5oپO. +endstream endobj 5181 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5182 0 obj <> endobj 5183 0 obj <> endobj 5184 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 5185 0 obj <> endobj 5186 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5187 0 obj <>stream +hޤ;nǕ~L^vʮ-b`ሔiPRB9]tO9Uuǧynnx~i닫?sӇ/_\\ܸM7mZ_|.sS[0|XyY\nPe \mU,-Ԅ="S㲫9mi㖫e^<:`J?2S)qF| +BB#h^`uG02$ }qF8fN2niwFp 6˼qn:D%o ?Ni:=]_=en}z^ 90$#qm F`:5mA"~azv6/-:Bt,K` l72>RNj_D2=J9P9P.%)o<[(PRtuv1dOá&09Pف|1Ra,/ 8/s09f5>`6oT.ЪnZ`1 ; |p9#Ria<uS䂣i aH7Q? F!:4!,HfP]@V@f[&*bP,K +-2D: hB724RvT*e(5b- AR!$XgP*LqX #v*/FBpskR~]+W q"Lg0D|\QLBִYӤGG*,ȟHA4QV4P &74%+2-މȖ*T5spLRGr#C2wXJUJjPm[q6(d`$a$R+,%$<盷wh ؁O~LFydp@Q[P̒KS>& hvU3r4TNvҍ;62.@s5ٱ۠lFd nhްw`M(A&= nl56m):~*Mdav a-]vb[K+Ӗ}%i;8H8J%MP Yƃ yS&0!B\;t,ԡL~- +[q!9DGG 5V3"][K"lnW'[|h"(n +|~$bRcdAnגD>/<*n_pr:=Bޏ^Df;A mv"(@;r7Q<BRqpVKDDԕ6+(^H +ܛ: !Dl*+tSݥIJ3ջ*:vH2묍8V8 +\g9@u/Gh I;Dӕp15M#'VIDǼ%UW#:cw4r|e0v@^ #^   +E֗>|xtpn/;\"7bhh$ 1= z ]#..`͇߫<0E8M]Ch4cCjNlmUه +-2I&TZk Y";@C"aph('#6{8p*.ٗ9vY/*:1:yB#ZVQ* +Zt#0/HJ ֘;`͑hƽXT)vN|A/ Y2*L2ܚYuw1GFe'3! K}ڑ"s}pQdD>)OڝONmG{".⡧bQOѬH&D G EMd.?uHpǻ,̭=>qdOu,VnOI-<0xgFź2lОe0nщ0vyں=G("۴;+@+uSgcKtOAOD'Kt.lll{9Vb9 BZvw3j:T0{Cj5Nii +nΧqJSl9?*eX'C)ᥴJ+eb>~<ڲ̰MZyco @ CZwL}'t?ژ.s=|2Z3 G(Z]]<ź"N/oť# wF-+GB'QnOUkO؉5l.B̗q:0UѪ9>hv̑/'|Ux=}Kglq:(Ԥ jS8x7\ &}Lۡ[~2Dq8Ң6gO7WI~b?$^>2=EyMc:LC%8 &Vka#RDZWK%cFDܨXx+ZB^ҋdr'۽':AUS޷<5#gG'Ǜ5?V)S Tnj`脕EdZlLDqÙ9>ھ@ ȏvk >c`yCko ]{So߁*kݛ/* +Y1}VB-VWqvL S&^O.o_o5}tj[ +8(v,74 D$h+BW7d\0d|&|#ti}DE,%YooY݄4=|a__x|k ?~=O?M +fn^T]ߟw~}{O#X$ ~ y=26U8 +/,zs-HQ(biŵ<+P/@៧9MvG(.u*?eIixN|.lAS0bS[{?3oWc 0ƪh +endstream endobj 5188 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5189 0 obj <> endobj 5190 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31092V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5191 0 obj <> endobj 5192 0 obj <> endobj 5193 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 5194 0 obj <> endobj 5195 0 obj <> endobj 5196 0 obj <> endobj 5197 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5198 0 obj <>stream +hެn>_G*4k_1m1$|H%ْ??9oJ^oߺ|wnwyn/zxuϯ6|nW7]o.dMk Gg덙^mfc\йib݃1-`0F3M0Qqv$zsddp0Cˍ5>xן#x'}p8ku:³q8quB#>fa-K|q7eeNsȵn#$\boLz{53ЏȾNEAq9 +Rz7ܳ%EB`uEXXoÒ< ;GyקA6L%L,M6x}tk'a$; (uw Ԍ8m0o>}wûξz{ l*܋؅l! ;E,@&'̱x3=HSS6Fo )~xu:2ې;7h;4R`#aQϐg`$>I.5և)6ZXS3vA3lns0 p 6."nNH3:]91pRqQд:B kM~O5N(;;}`SWgd\"6mI:=;pg@I 6B1@5&A/Y<*{ 9 L]ܺ/<؋EJduM ()sw*)O@dy +HIc/"'ץ?_<B ,8e`PI/ ׏ Yc" '>J2>FlGXePh'pC*_-[c:e' Z]@(-LfϺi]r4]_Ac0 ƧiH"r!J(A# 2iFīqdKLE_Ns + 6*>F/ܦ]ecuD)yI^>` @kҋ?v"e'KpFd~=o,$H#'1Obaq#YݨkNG;"++zY'䤂FЭ +jb]U3P[ += nw%QԇG:XJRԔҡ p# HYy$Eۨ#]۹; ;|=|y#_jvQa:n050\׼bE^D@u0hl^d 2T2aEU".Ǫ+%jͶ[܀w>&+$E9mD)XИpN [@а!p-P)`JaO]YM:wL(П>N\:QKǽDzٖΥ% Z2^ r*=AR2f8N٬sd+F|h`)S!ab2eP mG>Y)Sk)hE׶ٔІzƨ5"Eu )wj"bV + 8dp)hB8P,Z5x{ >;an:Mqۣiu`^,5au/ư +/o>ܿy5aFNyV*Yqd.vw꽺)x-OJ2~auFދh(G": {XZ̻[vVi|0L*$R3ވ!,vz6|.v9tLv 9u6zeБ)f[j-x-z(O=Eq)46 +\ҵQ5 z/h=QF]iJ7Oځ ЌNcDx1niyha'F6f6QcyAER5LNW彍MQ:Υl`klq^K#6 }sn-&E-EGI&XMk^Vj,$X-j[). +Mv"8d+b„uY+bkyTL>Z9#ĠWDEG; 'LVa xnqN,p{D N$k&%h;$߀Nv )|zSP8Xk a(򅮹~8f닼Q#TFsXs:]d:a Bza=0hUUWh:L2ZIQ vaPāl{V:Vڢ%8mtˋZ=ɋAl% jj[јTEgW?<IxwK?xτSuֶ*͐b +; rR0ә4Y[$ҦHKZj0Hc2T^bh<Ƃgkya]_#(RϘ S"V>9.~oCˉFt{ːMUˎphuJS-BhQ)cѦD^SOYK0RDULO%zԗ;F<cXT> clz+~?p%<_-ȴ'nR`> B{O%bDKؗU1FfȨgϽ5bBY  JSO=4x'Eh'f^ _q +|;PuN&Єa~{]} +D% +R-_b2@op*ST Fg ĥ&&/L[EaL-:܀f%wǿ\/"@*puhjs`U3<c +Ygwz|>v4JSp *u<^9>bb|Yϯ 6;4gvr@4g|ӥ;.z">qŪ7p([p.|:/ Cp8悯B̂886@<.йxqF<*XӽDc=+AHiqx)MVS TJ;l=|!+VY|kgm^ =6r"Fm'aBZX"e 3 3 8 rd@Z8V2Eb1Ol+Q2RJ]?N^I0@D»EZӋ63bis"?Y@~cbK^Rmo$' t` u(,8r\p0T>0ux`8,A<Aeby&+7-ғ)?OºΤTDNd9᡼oxRxSx(@rEB$~1ӇցdFpc2F}q}ϞTr;p- +endstream endobj 5199 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5200 0 obj <> endobj 5201 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31093V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5202 0 obj <> endobj 5203 0 obj <> endobj 5204 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 5205 0 obj <> endobj 5206 0 obj <> endobj 5207 0 obj <> endobj 5208 0 obj <> endobj 5209 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5210 0 obj <>stream +hެZIk$WP=O0 |Pn Y`"uO/˰_^_wOe? w/rn/0O|.cC0\=^Ln&#~~B +.z݌pFvvssNn{ZƸnY|.O غ?zwI 硔8FVrB%jAhuD#LX`e~z +S湸u]#PvI˲˴K ֈ`(o ̌(.nFjKB1Oc~c閣($ix :|2Ƀ"i,XkQgڮiP#nd䁚9(ڧ#DxpM' ?cſ~CY;R"Ełf UHr؎~vɑC[iҞ zh[GӭMȪ+O Ya+"s|\ YY;JY3/Cs%s>;,Ν6UcisØpI\ͣT(A BTƾ#zFUL @{:0BOҭ +ґAsHKeB@RRKy{%I 5$&d2^e$}K54vCfpp)DXp3T+ʏ1`ǔ^ l?t|rt7lAe4cAC剼%S*p7[Ͱ 76n1HO]':8.p8*qe + ݚ( tCE\$ɶ9`p*p]-3KRk7Gu*Fֶ8wt4d]:u b@縑WݷtX דuSwJ7ȞljrgXA|Jfbx;65۾!vJڸ!Y\Y"0uKH?9"kTXl.{c 뛽v͢,X +, bU*KGѲL)Ou "Li =oMj>]dVhbb(ĵ8Ct V`a.7!SN`eQI6Ȃgެr[NhL x]3C=QU%y* $kY{c#j^2d^R'#ų<,{2t!o.Ņ$tΧ Jj͂H^,ghn@1 (P\N (X!>W Rw;seaG7ߠx + ltewLӢ60{Hw)ZGƛ'NFCpM]*-P ÎiN +=GɨNv 5*|Bx^a!NlcU$_%l6#׊:ӬNI2c";c=ؼ^gmvlΐڲ&tm׃W:n*mIjۆxujj,)_ZNچջ3)دd6f'i^mr+| 5KJ*:a |`T s +cNF܉Ni/cBJɖdZMɊ +ukZ`F7h8!31 k'8B|ZsػWiN0t+=hbAC;ݑk=hZK:]ԕ-gnOXK)8! +D>h}v0PMzFZ9XLmu( u;ee*mu{+VcpRum5]bt KV)DׄK>Td:On/=k9l")ViFKiZlvo@ #͞K,`N9.HeԲ +bp?Y4f=¤u2S@^O?-9suuvB5'r]^9f _Av\n)#XJ. "`rjLjעo+]Cnۨ~Оr;(K%T6,IN{H3~ga-~D7Z-JiY"?x@ (Lڽ,`'XP'}.L=Gwaw7O۴y7 ~ڂϛ@ݹ?|tCHcpGx^n6_p>.Ż_4}x~q<ďAk7oל|E-U?r4͗-XKz\|2Ȁ1H]Z9cgՑ֮d+^eF+UmvM E?fn<u"E".ŊL4VWjo.d0w`}U^;P]Z͛GTi}E湝tK<=af%ƞ"cr;pXK+6P6smЍ?T_=Znw_A:GǴ|rO3VVadY Ougaur;c羛3letlDnoK6^Vw mW\k@RS10ۗ +~Ėޫ7a3\AiwM'5AZe7mE^̧Go)`(r +endstream endobj 5211 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5212 0 obj <> endobj 5213 0 obj <> endobj 5214 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 5215 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5216 0 obj <>stream +hެ[Iϯ({j_@2p[`5 -8-ޫWIMI k}V]/v{sϿo^}۫?~wwuswg=\5EV]^_凫U)㗻wv^);:tz߃RWb @me3 6R~SJF焆e4;h;Ci: AQ4 `:6[zYlbLщwW`2KCe56缬.朖w/ef3k~a=coVYe,2KK!{h[fsi4SiH`naؕaMKkrIХEU2󷇿~rխv:,?aEVjHM[,oR\6Ңatu͋WP_ܾ}/>{yXaa9WfB/D\y21j-,啴--͚ͪmD˭*i<09PgV /GrOBjmv!={P[L\K:sRvyh ЁF[`1`!!J 6a56k 6͘xlRmb=uk0M^+ i%?\W«wooL{e`9e(w}= ڬY%%;șX h4Ȗ S tWXE/^B2 6"vMM̂L\lMLu;Xܚ|lLc}ݺIh6e4]~ZuX( ^[xzX)~:@xW^h/Uyd4Tlb0ȪMIFQq|+pYBRۗǾlF1o%? ڕg虆qcgTH%j%@T6Q6@%1q^R]ҟ + Cq cOv{R7BB]T;˷an[$9xbE}K!Za.hSD8pܦRNiefw-;$Ӣn+Q)Ө)N]IF5g#ݔŽ#Գ}]#ݨ8N0u舙Id#;S,4\XqXWT qe09vR%!B%&H+ַaWWȎXW_^Ր԰TPhRub + WoH9L'a1`繬eJ|# a# O7:É_^,pVp֊Ǝ8o %e^J4=R#Ztm-DR[Z$Nj9cwqv䮱-ZuWI9Sxme%$Pӷ\-rN\ RgFf:NZGȣuփǔuz@ZOwoBlI6 ϝR϶}MY*l(+P|(II)l&:vTRCIǏ'6q[Nf@v8o羲r[kMUqB=\8ֳ /R1lMWe0g4:8ũ>~rÈ8┥{&ą92lcI6v/DPFzdw3tH,B< =]O_7ׄ-寮򪓣i 5"/}y7Z]c)?|>9o9ۏ,nj;aFfDy"'^ќSh |Susm\}ypޖɑ>7X.鯳^Ը,Ǔ2A>OF7̞֯TeT.EIeB.`Zc]SO\Ugc +Z6O=\@D9y|`] =)"PcRteGLe>LGj_=ϛr1:֪˔j֩\RuBtMGʔeti\ȪY|TIM:RAG'jAd+YGuD *.YpWzD.`|NV6kl\gtu-^[~kO?u|'u!kыD'RJOOPVLWM}7^CT{>u]D0C\^Tt͞Qc,Ԏ +I`b!7,-Dȿ(]\]o[C3 / dx) ,%b,\,ET"cJ*R_ !äMdp2\1!ADdh bys)[K_1IϹ8A7| +N vB2b36 ~ gv&$m۴˔ +endstream endobj 5217 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5218 0 obj <> endobj 5219 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\ai14681b.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5220 0 obj <> endobj 5221 0 obj <> endobj 5222 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 5223 0 obj <> endobj 5224 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5225 0 obj <>stream +h;n$Ǒw~Ev]eXS^iaCC"9}O߈ȈȨ&5cʬ|DFDƻ.ۿt?ۇv//.upuvqu:]ΦnSssq}<[bwg6 ]C5+vvƜ\?mh#>L:9J=vl]S뻫?!\A箔؇B'Vr);/#af LťЏ UL맼 t4` \oQYr]7v4u},4vO7g3B}O~揹/f:Nuv{=c,J,WR}%!z$p;>4S?Ώ@ΥŗO7/ŻK!v< S:Kl6vidzooFtsxt{t`d0EGe&Ю>O B}C}{xZS(Њ0:2L!{=Ԟ&b;j;vLxXCk\ɗ~a'][ o\_ `Ӕ:䜁daԞ`ȌtDE %xnBc + H +C$";m<V)5xu.x JW@X 3pwb؏h #vkvm_ +Og +x1?dB}F}tI1D|C_PM})~쩫N8No3EtDHWoB?Ư A~DW!2 މȖ*5}p0(;j@:8֗a4TnzhrGݵMxT +2V7~Ӆ#讁VBBφ<_a]oa qf< Qtϱs܇.@dTh 6Qi_j:AWU{vUqN~ bْX%@R5Q ouC!@4[aBrIB2 <')(ؙma>~#4űH+(8CuC5˯P_ٲڊ)h1zt]vetT1֡Ÿ03#> +8^ѯ s *i&ƒ~2Nm\faξѬ21Rc/rFsW 24*Aa\H/@(s bDFDp$UiA>5{]%IU(J7Ou]+ N +̯yt-hqcX" Ȫ+H2Q^{ J&W8WTE&]qzX&2\P5.!w}FkFustGV`ؽܞoMVg=Ιz#,U?rK9p=ouҀ1cE +W9~?xۏ?=㋟1 [aB;8K|p+47/cySȔfaݙ`P%Hknݣjݻkձ8$AYɻdp(+hm9_m2}.ᎏgڞw/k1rt ݲ󫑃KC jP"uR\mg'(&k "cͫ3b`S5xqNFuQWml" +D{e`tӡqzkp#&))읺1t扖z2Fś'P`duV kƔ=1#ި̚n Vg 5l l$('36̉ɋs9!Y;t! ƎT$` "C0Msx{h#5Vc yY_] +CNB_chp{Ԡx]3dڵG-r k=llrvG{䤠Y"#*K|y]NEby-M$AM8@,䜵`pSaƅt3-vDc*%fβ"{S4!l6v٠ 6JJa0/"2Whys4>VOV7ܹHo< b`,fP_Q6|aאpIuN摲 +y% +5000bKfj:gZl6MveѴl1KYVmʔ5Hk{I}8HZўv!~*Vm+S'{5~@1K=vDjI~E7 QВ,oe:M_~wQ{-3OYVstaⅫs|(s +(JpZJy]mIZSZ)ˏ4 Vr'aIE5'͆sx9p]-tS٢ OƭY#4 ɭ}RcҨgp2ά`hDxs3f(IHg~Vڛ \sMPA-" zYPG$F츞Lw굊;Sbޫ4nYEfaȟդ+m9yuTdv$6a +3%W.QzFZ]C烙y@Z+j% (']d, T20'G8 \]La;m|ӟǎLۛ5 +/Dwa2/}\7?“ B3SZh|5iq*A] +FM;hf^̔[lY8m]58K+y̨)Bhv BO剤s+LS@6akR<`A +op.۽tsxt{tR,3.0?06? CUI,C;pd}rԣ uiJ$0O߻>.v sG}7tߟ]>> +)Ӑ{q;CAgj] ͨѰlu S:*rK|Z R:G_?~kr'Gq96!҃C| #dPa.\o>)&"'xܭ@o]Bbx[[qW.gY~ l( ӋgZp$Є6nk,D3<J SlRHjf3iV:1_K_^Wvʅ%~;;\ (1<Σπ6oyLdS뙼N,d `RbB#7UP}vg$rxOSL`(j +J(&%`on q{A&& e3 'Čb>io2JFہR XViÄWlbFdC_c/M1cl,cF2Ϙ_`6&DK6n6֬Oքhe! ̘9_Ph-TP҃*΃n`X_V MN(# Qp(~ + @ ˏ.P~ U HHc0WOk*9pijƓ=hKJx:#xKɦ %?$`N 4xO߆V30l 4GxQ&0Vűg㭾4l8F(O! +endstream endobj 5226 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5227 0 obj <> endobj 5228 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS33117V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5229 0 obj <> endobj 5230 0 obj <> endobj 5231 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 5232 0 obj <> endobj 5233 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5234 0 obj <>stream +h;nd;9b( ${Ǝ=B0Ԗ&hH7o ԕiil/@aa4,u'Wntxt|bsoq奛tyKMҔsX|1~|1ӻb7o2&c}Xt@?@*l+(CB;3k跗X#w +[(ls ?@:h(GQ&{ (/Ddܔǖiq:-!Z7ۍC2KuqE, ?YŸeSРklIѝlxW"A* ۲aIK63 p_ۄ204ٸXg߿^_„wxd5m_~3݃ `fiaonx{x|x>4AB6izΑ ">B5. 5u]`'̮ +S5Iy {]I^,@SrفGb((߃,%=!*-nui @RVATcĄ"Dk(Yz;䪳õ"6ǙqT?%[TGO}:U\wi%_ș2U4J4%BqGfY͘ $I}fU,UZ+P3W&(pE9ӂ-Veö_><|~:7W|;]ݜǛu|?Iazap#c +P$fg?|;i} +׸h? +LJ{%5E=2owPm'=q@|w=Ӏc&ʕ: +l?XXH@g_4gXDdP<]m&R[5؃fA[`V jos;PνJJ66cu +fPDp -72ؖ;PEsg{(+Cy'aO$8o6vYD?P NKmR Z ${*O@8CoOkƧM,WP_ͦ6+eӽ:S݊O3hp=Y>VXk95jQުIz +GUJbl7! H85%p k׿I w.HA`Z'g*b.XR4a93'l߉d+-Ȋ7N NH=ӗi9 l|QR_o%j:.czZ~Lk !|!aII7B3E#gC@*|3U^|Qd.:i!ZʁD>䄟7zs cP\S +EU~ڒBS l%ݪ~;z9 u=EaM1 Ì®whyWLr $ )=ɛD;O5OH3`D݋Ԫ׆Ǡ;8[>*$,O^jgϊ57r5>{ :=f0~Cx~Y¯/b[ ZĨuO \;b6:nl湘\C uZbֲ|Ork$`Lj>r44uXdžִVzF0hZQ@.[w&:=s ze#~coJ!]^n#˓݃j]IV`ˤ#Lf|[Ѩi';(*د!sU6:~Rڽa;d Z޷꣟xc{/^/Y6 PrZVa?rS*g%]O떝t<9//8|AqvPVlY{|"5 &.?ȳ%> ~~FJl;Ѫ +A̹srMch𔁝@" "ҎbƢ'ˎ^m^eW_78eluT R`';*1zݟ@]R0=V<GaiM۲1Wpmw +ʩП,p+ >+7k,kِ̾Hn?؞W 'GdܘvX6P]tvؐנ";|GL|V<yZ#xe a3dEY1SR_R}V<1)6a1`~Zx|@3|-MJpv} C/#k7jů*C_4ZHm|NOK~'#&+TLE!"U/֦K ,6]7X &#`c< +endstream endobj 5235 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5236 0 obj <> endobj 5237 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31094V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5238 0 obj <> endobj 5239 0 obj <> endobj 5240 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 5241 0 obj <> endobj 5242 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5243 0 obj <>stream +hެn\I_q_ڈ}AMK 203#3F 3W's֪d@(rN-Nԭ>>Ofsq?޽=>o.d:W'Tջ33=[0]쫍1>Ÿn:zmAʰ-۵-)ڹnh6j[=B}sG sML26h SG$9Jvq;/f+S("XP``ٮihDq#҇䣿:S7eeNsȵpvs&\\8/irdŸ>Ppev8'C!BP@Wd;G%L&gx6:NҚ{u[_N%)VPi-?.^";\>=<޾;<=G}q>Mp`!4B8<NΩ + yڿwgkgXD2 (ځNY PM b&نgsICOS`!l>pCz@$s –9z`W sJA8oM;iW;'#p :8w=Aݜ @f. AAX JU9,x,g쿃6ZoM~HN5N9A  ]ČrK$E 은Tې@} #=[Z0mdP<@[F\q\)y" 0=wnAs3v.vM@(P3ÎGC~l5#_AG&D/iq֛9c sζL"x{6qRͣ)(%x0Mf' ?e};b$AfEjs`xE +\2:jGLuxT D*gp|2x80H +_xy `-8eaBnH!cl2lqøO19A@"L QN3!@t7NQR0 +a(Ǡ*6'b`ÎƊ<1B==6隂6D%VWa4'']@hHLG3 +rʯEK6:+kqKBgĽv&:$(htȨg_kt)!.+Mģ(}=iSP#X†52Ԕ}r(o+`s3 ZͱNFˆ:t͐AWeAf z8S1HGoG>5NT(bPʄ̲A-U!m@"vMZi+&8YALJ8 [|6l4ɴtwl0a`ZCװX Ub17; +9aЌ$,VX}-wyu=bEn(,}I=GKJ,V>v+FAc}JuEh%It=Q ,&)b 'd*w([)h(8`bu2hA'\E`x=-l)}gsj@]T ňqǿ 0 a<~m O tg:_x{cugO ƻnd5##YT9zN +57sB#MMp;RZZo! *2dn>Ӫ^Pv>D}`CisaA_ѹjZ#Ie]3d@ vQuLB"EW{FfHQ=CPN +[zқ&Yu,P6]z{#ٞيތY(;dݛ(͚Y/C VG`o^& m%ec="BfK4,jipϖP%!^xaq{|y&W?RXUߊRxD\I85Z6݃2X-vCҾTe*ԥ+)/NL88!6p0 #$u N)CGGNGj^3 Е9@+f`fW#9$\-k8)]ٷt<(|Gv NH4!Ij('0zSOٶXB1Xׄx} 2Y+r\+VJ(D^gJ=igvfSBJO6qɲ.lşcfcz|,B) Ķ-F=rs^C\:b%;cXEuR4U6(Z8lFdE2[ԓZ2"í|P4oĄk +bJZ]Qq7 |A0϶U"ǐC L GIT^~O@O 4`b j>M\fܬ@.pq0zq1z{81v$ý?ꉹP10}룒xOܞ]c$PnJ2R}|H +S8gkqΒ^BxӅIb]KGE!lQht㺞eqKkiے~q?ػN4N JxŷGhՁړ 4R囵|4q:tz5:dPy[Hu}jΫJW+/.[2 #  bya{TJ7U[> aMgbSuecQ/XQ 8jMN; ]*ZӃa*zu#wOH>rݯf,o'{+6b[ۣ k9h3:٨IÝ2!e(=Acd7jQ +hGe^#5ת'%ʼnz(;qϫ0<*2*Z,y%+礨IԠzMF._{W?PV9~wg@?ӟy5}-w&K sJ_i5q'x^Rh Ltyo_ֆկ?]Pܾ{Za#[ 4=}{ǙJ4B=D<ꇧs|`dVߝC!nWG ;y\UX@M x||'L?IV4.RECXGI _~ KjdhKh;}/5CG>?v e;$&ŝ-|zp?B~o|f!<9T>3`б^f|a*$au&7ȸB!"pC#L L,+ 4_%'*럽Ԃ5a&J:.040|dΉGɈAf= 9T $5+" 4!">!Ɓ$Tg#Xk P hR{"#\)IkrXw`'} +rc<53bf :'i N?pT:W :rWOk?/Ad=Iw|#!Y`2``e `7Dg|#"SWaYsrAh K + OKL 7s4K#&)@7& z>b|ptx+&tՋW;O4`Ϙ;8 +>._Le͸et,j+m}ww⬇oǿ?_Q{js}?;}-NXgHqe\xt{w0HB/,$b)X)o#d]$?,=.E#z  +endstream endobj 5244 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5245 0 obj <> endobj 5246 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS33105V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5247 0 obj <> endobj 5248 0 obj <> endobj 5249 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 5250 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5251 0 obj <>stream +hެ[Y\u~_q}h4 @[$A@AOkZŦhyOYkCF Puk;uΩo?}~{>>/_~8~~}m_~-v?Ե#ե%br,ܬƸܟp7{( Řh!>w=TT(]49dc'khПwc곏@s$ott46Fp'.Z+p-@ss:\Kdc˲:_k]֐k-˧Ǜ󍰐C2kuS=s +jV}✺XFY=lIm2*h-H˶+,i@nՠb7,%,.-6qO}r_Tο@Ƿ&6r]|,XANJX }ǻ>~z󧷧}{kZNWS%l :@Pv&Y=ULYc fy'eOeOes~ @n>C)X ̫ ՆsIlm!X68k -k +}Y-) 3,og˰zծC L$XV]?ߐѐG[$ݬ޲L-A 27\ ^n("]\2պPruT)s+t.UZâ<+,L~ō#Yx|,Euiϋwg dkSG8$pK [-Xm ݎ~֡m 2% ۚI;\UY[ !1@u6|HF@;d$jqIub1|+ҕX4M"hiNHQx:X!~pHnY&+;˄GK[o>X{+Q鉺6!ʝ&͑XRԆ%, -,ͨ5!kÎsbCR zS#cdL":̈́đe!Uht6Y]ִL3iQZGa2̐-e;0$ Y;+'%`RRf10 I!p#%8M:Z>O:^P!'D~8 Q% +mTU2#Lsi4Ѭֶ( +1hi8 Y"@\w=BuߞUd-oT>=&NZӖ-gtVA1jZ$-yayYs 1. x5aBbt B闬X^ Hvm}:]bu턂RF&4oVGǩsa>Q2Zt^GPgUgwQv꓍WpΥivEpuHQe0|0Q۔- # χwukm;%dv" YQh䝎)pqڽ)H@}HM[3oNSɈ@;ߡPIʆ+3FHr8N"e*jwPŽHW +p34bcBe ut8NLڮo8Tg8uKVs vM?YcӧɵR6nm +*ô+7W|:/ֲA-ŊeGTK΂J&!_&ض1o0ʁљ# #0VY +Q?1'$`˩WS]` +0 ڙm[v^1a,aE8h6X-&3~ +ʬ.z%HƫC-M2FъZ%npA<@VxPPAN;~ЉPҐ.hO|wT)@`a0 3C gBõSҀMey:`:Ǟў桥=͖4;V~՛ ^;Z49myqj`5woz>aUnYdt=2RHsBW&2TD"lT# p,w#\dAȵi%KG>6 vxo4 l4 o=ٳXGQ룄IU\4-Sp̸y&q0%xPp3,>y5{)UC{05)lhku[-[-*D&= ?hr-(y-A۲ cAmr}I|&KՄ@$ 9pG``%%C؃)jFE41HYScj2n -cBݐqϰ7a1bіO LJh7{A۳M@l[z SQ-8AWsB{]3Bg1G`4|cBK&5 +~UuЀ1a"v?/C-3wqCnqXڗ,TXdȢ"Cx0k7vy1{1ܓ'qx*n . 1Fوz1h}2M׫l;i Mšf:8v Hj̝5װ!)$Mmd:iyލ liZwr=q)*Cňkt׉ym'b;䞍)սlNwsGzCavW;K Ē3l&ݚmꇍ֍n<0|g, ؽna<όG0XhB<Cvb<7Bn;x1YԽ}MrM \5 ǵml! VfTTnk;+#"Jdݖ6_$>}tSS8YFpb$8F= +׫z/4_0mNx|zC8pĶT(+zuf([]:Es +ܵr(+Mf+ C7vx!\[(Ǿ,AF-"JtQ +Wםc)jJewnwvs,)U__ףZU74GӾr+'be~]i]C31|1&t&Я_?+?ieckﳅUa;rOWW'ҏmkTFMrd^,P^MR%Ú%=_ c">@IGG)x$7 +9Bt:ƺƲJ_oo   9\}q"#s` '괆THXϗtM% -d8 ÷|5ZD$A? HGg7%C*~Ƿ:!C]i; SPΗe4wTED+MOv(6+ŵn B .I[DbI*_1 ѭ]){|E.Z(<"Fq0. 0myGS_zɋ } eē"дۈ$ +=~J l aKD͚,>\gi!7S@aѳ*X).uIDWހYʂ4m-y[|dr 9YOnkTr|m[[zOR-<)YA(P 8VtZR(.g ++ݑ`H +endstream endobj 5252 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5253 0 obj <> endobj 5254 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31099V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5255 0 obj <> endobj 5256 0 obj <> endobj 5257 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 5258 0 obj <> endobj 5259 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5260 0 obj <>stream +hެ[o$_QA]pK2_o)U]qTJ(_OW>\}ustMu7ծ㻛#n~n? .I.j͈!a*e3;3`iT;sGvXͥ'|))L.%߻'psY;ljz0K[:fFF4ʼyg rJڲb &0g ?q5f3י[>㏟OݻCzQO3xv麓C\:z` VzNOOO~w &o2}brx\馩M!uϹ}|K@e.moBOv|?~akm5!:b9\6p><XC,c:ɦ~򣔡6cr߱&5.P'+|}D24ӘEz.Bo`I\S'N?y! XzAwnOSی.Ǡ"&[[j`yGjMe\#(EK)+}l8Qi[yn⡭1$kevhP(Rm,%t՛)!]GC̤]4`ܾ!|@Ya)Fj{y U8$oa7QGV 3pIfuz(6P+ǢT[緤=~4WpyѼP}-W@{f/}0@pCHjL^U_ 0)VR퓉S8n0=`(=},T +%b^L/j OL+˛"LGs8cTBd;w, O4|/ iw, Pv莜emg2GqnOciwd\f(]#-%A 1Հ I4e[Mscnu) *|p| jg2E( +0i88[Sws!pL +miNw{f.`SՑ {>T( +a!a Q 2&G8;:W1'DO|k?%Ɠ<.z`Iq+T-҂{vtF4b:8AžG4|PlD"A5[% +:Ashmj:U@5LgK3Wn* O* 4Nee#Z#Ҩ @=B֯gq~L2;V4SDz> (h׼ ~$CaeV;y~G"itj(Sy{<6 8Mr|jC G+3HL #,P{"cUat6fHXEU_\\aZICD7J"k qwBa]q. FXͻ)ɜPF&"MB%4O8{R;u<nUDFDT9̹Gmzݲm<)^kn33Nmy% +$஖"ѩ e%VG.m -}*n1O(8pˌ SbCQAs I'CT$lyǰJ/[96[i϶VZ([e#f#ٖ-Zlm [ #6S0 )qݭ.K ,9E 6 +KV@mHk`2mˊ,4"Vr|ZaɄ1] vibvi6p@3nq/pԌHHW]\9? dXpvF^ I(@mvs{~,ԴJ ]H4)* Q 11_٠vnCfƲ1T{iTP1 7;!mQbeRiAx S,JGQXәaAضYCE=+pbJǐ X0MY.qjhīb&Qo10{vVDy>p@g?ɞz'g(be.9/I)۳g?K1{rM,v_^Lxƭ˭f!ξY3}z™*&r@Cث]#3h+Pʖ`ұ#2DMV |$7Ξu2RnuU?MԹ[.m6G-3.Hh +sDGa|cBF)S#k6a0@"s?Qߧ;Yh||s9+$uE}Dr@,8~ nCdVSV(;LU,gS0SX6 EBe* W$7***=G03 b5=i[`]N2 ,~&j^78]fd&y m٭Qm.tL<1a]8@֣rzK޶@;vg`U*HfٿmȉEh2T[TӞ/,%4vS?.ٮ@ܥckr#ÞmfvM))G("9E2Y7Qw QT Q-tE!D)E38P.xr +ބ6|,QjI.Y-6*@O3$K3kʼԦHkhY +I!ΙgffN#d`sε(= +cg[vM1GThcNwaL;G9λoFe{5'umsʱSUְ28뤡+8I}IBR)-h&WC;B'40Y㚒L o67mV 9}$hsBcE);⪜W%WUVAlpVOm6f,2m0UbLuqAE +ӭg2c'ZD|0xZU<'G +ښ@NJT]qpv:[&;W +e)-i qUIX;KVX^}1 ?ӉfM80?mRGҷPbYk;ʃv2GZs&&~ iRt% 12iynwl\ 1EM&'bb͸őǕDkaw$z7Q%ZB 1[yGI} +#x$Q%FԞT.+C]4 43.,r.edsa!v-Y9\6d xLAssTi*=dٖRm4598' +{߽='&$4jK&쭸Eb=έCMr#q|3&17´DM1VR]m|2#vQWz/.N@iqjF[I+&[xЯP4WS5q+ߺϴy-*.pD 38KaBAq+zSN8Eh?Sk +5d`@9KS$ -_bkQ(F*׿?JHÛX>05Kg,2nEtDCIS ғI_ 5^x=&LcA Yf9q,J݋+)!\vX"Aˆ#0@Na|;ںR5.rdmoz_9?⮸\#tݕO?ѿe0Xk(rz5EK~lR9kHHz,ISbڤ  0;J)k +Nel/& )#R*]6W79-2f\Ѕm(IVu5Q=Ps4: ?HQtSEog#A[VpHx(o/N캝0&ue:lD࠮'Ǡܪb^=h2+(MV!7/_u\dn+g+*KER%vr|Deމ((\ɱ|8~Eڂy;oʏ?ni0AD|eOon!N]YxlX\,\^<-<NZ"&0ED.xFm&Lk83-9Sm,,,sAkdSв) |.ȍF#CC4p\\Bfm;PK0KX-3莱r *i%L8r\VybK(ùgaIq** ĭeK} z_qʝzQ!>n^؝0Xw6T4 >ΎA՜"~3M +>Aͽ3e&b q@m'~૴h8}#eo:SZǟj^# AӨ]bLMvR3Cȑ]b(W:J~]{y(_".|hy%Mx>拱#,y167P6 &.$ţi(C, ڧ])2 \@d:Byo٘@I(zqQZ LTZ +ѽ^CiȏbvKK<6DTI+A,u[dr%9[K^_I+.Ti΃5+(lmPنETuOR +kCℍMbTa_FՍk<($DmP.X¡+ySV"MLqOKO5"2ԅN'R?CHaN%<5-J N>*h/ + Ft9+sMxK$^9 4 9M˼iYg`hdʐv{cR/[2ќlnN\47V܄v nT"o>ytŶ\z+^``s`2^2rMEQJۇST~/:^DO _`@cDYYh`K~}.3M?"Zf+?r?owGjH#BO9=oPj +񗿿/0>795Q?+Rz?׿v\Qf>?J&1ͧmol>`n1x-9 cw_o` +endstream endobj 5261 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5262 0 obj <> endobj 5263 0 obj <> endobj 5264 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 5265 0 obj <> endobj 5266 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5267 0 obj <>stream +hެ;ێ\Gnq&@Wcd'j<~iZ]Y"EX{}QHUo/~ˇ_>N͛޹_ot/nik#祔Ͷ|nO +yöźm)*SBm-hhPO:y<'ڰ~7?߸m %$#e|J4f^t<6@APݷSjBACWPCkmYci.no=mm~jwz{V⚲Yěrg-=9FvWyӡ ^vuak1đvY7nbk]j[k\|^Z\Z|O,ob 2aG-"7?|ѭԀˁK y`ߟ|p^>oukbAnIO(#5M@@e|aam@)[u k: = Xj* rTv.d0 8/kU05Ǧ5>u`έ/ ]UݚbCv +WnfDY*M|"ya}k਀{Zԟo֫o#|!}I0ѩygg`&Bmii j0tFe"#<C:w H + P lh qx HPʎJRX,eLEĢEARxx+ZS +.Gv}4Rʥ}oͽoV +"Qe}\~*{q_&iޣp sVPGp8,0=H*& } C묋6bDtK( 5NSGr a[Xco ͖R\Z2|hq6(|ӑ_Q%i_ }-, S~fAՕo]lIW¥/ʑ}*'&]UA+F>࣬'3$-v66LL,B3)4֧O ҥ t=2DzdXؕ4"9:$qeOԄ]#`dB96Mlp0m7Dt~ +8'[ʹm=u2ɧQZ'4Fԧb:mzNuܟaz|mǼiڐ(8=;ꉎ UiPf?Y4o_Vib#,tꎞ|܄jQM8۵ X/+/1ZU>FmAsIdlf1vPƵTɴC*h=^&pbg*:4*9lqV&"ɹ'c 8pz:"{P;<b'L(^:n094B&`wѤ jÕ>!F+z_EE)!Et79k|i*RP€#qewЎyK#n1ebծ{,ʐ}7  n` mf#!q {,Y(.&eDOhx>̘dL>h5L=>$;烝*܌HhlM8{せ|ĖO8I-'J7ܮ$"o`H8'+pr--yjAӌ{SP+#!6`v 'PBal~0[,{NY-;1KHp,͘Ds2&KcP=twImIphEƸr# wurPD|DR4S0uf.i\O!K)z7' B/I$fPl "-L,귝~@æT. B.0)j06qEL>mOiLyp>ۗۧٷx=ԭfzP^BM^HuOOh떞%~d"OR:t?GaaiR{3uO $51itEYD5cЯN<~ SFWwBؚvߤ6lzO/Z +NӷGj-&/k!BM8t9JpDU|`^S;CXDhC4)8EAI"ۏHpRsVE+dso 24~0v C$q0I4UN)< 䰒*w v .(.Y2{ŝ+OyO]`xίIZv?3gGmO]-7N<g=sʜDC 6э8r-idbum;dx^YGeX|e0j`g7Q$i Ta0BݝР`U^lz&^˦LPckA$ @̬|>i2!m1dmC>XKp3_Q}BS 6:x0Ā*2a(gI%ɥ3\ЎrC6Fq#MI+D-W9j<{gݎ|f,8X;$fܼae".ؘ&z4U<);(QHhQp'& rOy>O +rN6Dz1(SvoR)y{&8O҃v2FSϸ;UA3]:,x]K\cBTUAPzqVdtSlD)#ǔU]SC\83`jod5xNZL;bzn:s斳;ln|\@ׅcr%pJ::ʡ=~h.']H CN6s$:Eug:=:\.b'ir?%?j 摔:IM>2i bhSOx99a#OStY(3&j]¬#`̯ܔVq碎\e'(LH;VLjbʐX2=:F9!FRVʞAٜN՜:yb\-q3n~aF"Hg\f( 5q*kyi6F/'lt/*):o?P7=3ԩ!ҹj+)skib# +å`wv~+IXK2̈pwp8$ue]DZ.ANzRūnZcT۔ N#öp&v-zf d)\9N*sM;H9mBBW/K6st@<tO$#qqVin"WWTzL7ɜygʕ`UnΞ,vme~zK/)0>a#>ETK*5DQ)~\>oMz0͙ۥsMĸHzJ'ӧV#77F\mr߃RK/I-0}ْZ$Af^٘tJ̴ OQ8s㖼K$3gyxwW9;WoN%j7͵U1ww/QUP?O$*f΄Fz佞Gd~\Awew no ěF5G\S4Ej.f2w' fcO^3"_M{e긭`2uq8xAZ6y`'w1,<;W[t˚K^l>> Il1ː8TB:VDza ǡk?BewX^M~$un^  ܮQg\um]U5:fgدx3SIPl" +(P銵J0}cN2MWbmVkJRԕRIsd7ك'F@uĚ(G`u;IU~o##iA#Nը\lU)txٯW0PP,R_swiۻVydSk)|փ-_Z +>M2QK_ɆqEǵD(o.MK#%ht:`v((Jw4kj_OeáXPpHa]a߾F|Ͻ]Ɨ*,4Ix:&( + wh&]*+B?lk Cn d! dPDw#KȒ!_;Ե;]40:t>}yroy}owv305 ]JQH|ܖu ߾c߽g+Xe?|=??nO7o{痟s`[ΏZr>5d*QkFr4H uװ!m`(ۅk48 k pz1„#5w7i |/ŝ^Wb+ļfz8/Sum<-E>2up2x/*7 dD=:6;lGӍIhޫ'zs0>69MUχ],k`{q͂Ή 1mgpwCBT(._% /ȋ]7#kTNA+'׼hqfy$qa(q5୷?Y9xiq4u_tHZ 0toS +endstream endobj 5268 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5269 0 obj <> endobj 5270 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS33106V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5271 0 obj <> endobj 5272 0 obj <> endobj 5273 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 5274 0 obj <> endobj 5275 0 obj <> endobj 5276 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5277 0 obj <>stream +h;ˎGr:&рZ^Xe샰&G<$wG;"2"2܅aîGd#?=X뛿7ߝNˏ?_.vuq))-լ!ܼ2ˏW3@7^p4G3 |:A-z=6ؖZ4Ʈ&glǛ? ]kj( ҒsX}iX#*X.z_ w˸ZECOadvz cj}qدfN*偉OެQ]sfaXSgH<EĚ@u`c045؏``~AZFCm1BFSzXjr9P,qnJBqbU9uRb&J37 +*wu7XYa6~zQ܆ŁWFb4&/5j;F@lf\0LJaI}.)tڨbF''䀌킀.M$d@c,bC7P0N`s(mgO"<#0udps*"I&UzSPӻ4ATKM:zId\11"Ff*=͏>-7a2G^C{T,"1:6#)D݄8 \y=ޥVJ3G3'QTX۽h`āa~ CDm:X 4/Όh 3T2" ii*cǓzѶ;]8F. #Czb/ +踢pp~C&ɫQMx}S+2nǑS КyYCHäf CXZbH%eHEBkQ I]\,a0;8TzDRKYH{ڝҾgiܼUU*{ ee k>Lu).yQkfCt\=H.n2߳՗W`8̒? e=tL,$r,!jݏfo0i4N%%8@ҨAc.z>[Bt^prA' +>6trw1C;fռ>YfK"fdG'mde\s8P/ѝiV +)p-G& !!1 W7>n@~E%Kz0^fuet<gd $V:k$7(8;KS=T GX]34".ò#ڵGQoáѐj?O,CRs:_!2$Ŀ?CcȞYğlX9_Lrii]l .= aݣRpJchgfc KӫD!-U#C&m:u;ֵCyHXfCSͭƵܖ¨eE:+&z=}Yj15;< _Ip N(8 ''n'~!kd76!}Uէ)M'NV̱ωH$=I?D~C%HTI&x5oqCc8dQ:Mw=OOSƳc?3RΚv, qƴ%(*]]3R! uBKˑp4e瀻9 +PJ*opy2qhPRqժ×D'kJjyUHQcAȩar#vHl=Y;vpw1M05t+SMRjq(s#lR>ÓVKٕf8ac(>ujЫ0W*]|Fr)tt_Sx֊T0eX0n_Y3~mUW]6|0;~[b+ 7ԙMBsxМ4_,w +1H 7r"=bYJrzH6M~۬?[α O.鄚0'T۴;2|k9Fc c=2*wRl*oK=dTczzwƒO 4V7re;D=ux2YYZ<-n^3$] +ON\AQyZ[NVhX'z:@˶丠$◕l{L^2{FucȌ9~xq>yǚ6_9~Zgte7 + ^!olUo[N=$*KM~v~YíAunq>)oZⓓ1} n~mƽ$cLjBlq~U.0y6E"21 Mt.$IC9&ӈʥ;gKXnORBacv| N[ ?b6EX[ni +k_WlhT$8ώɉc*,8r{mF \ZV*IѬܣ9o8oEal[v_;+}& >.+%4 zK{Y{o{+`{݇1azzx;޲҄3}@?ۈp S!UGw VgL{J˥ p < 6 \|b2)N0 +\಄loCK7hС&|CIcY3pc2t -YVZD#B. EH T6xc[N XHU<͇ Me-t hSO٫8Z|Ako6@ʴoA݇&@3v1e@x Xݿ@AFH%~Z@Q]~^l?-;kv 偟x ?Wdr .ma` i[~*6{ +]Fu"[j߂ڻzh/;X[r\;X[,8ƸoP|n=,۵ֶAeT Jqt 1}F96(; wgh#^Զdo`:7 uvz=3g˾A +FkM5.Y7({oPqM}HKqz"6T"]^pta BT'M<jnfH-ـܗ9o ]5`ݴpjoR0;)݂}>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5279 0 obj <> endobj 5280 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS33107V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5281 0 obj <> endobj 5282 0 obj <> endobj 5283 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 5284 0 obj <>/Border[0 0 0]/Rect[424.5 172.76 527.94 183.92]/Subtype/Link/Type/Annot>> endobj 5285 0 obj <>/Border[0 0 0]/Rect[123.96 160.76 307.32 172.76]/Subtype/Link/Type/Annot>> endobj 5286 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5287 0 obj <>stream +hެ;]Gn+q`Z]`\|8Z$=̎w9k'߇d,Va5],Ϫt\~W.f?!s x["rczбO{ L+Pq:p o7/ W>||.GOy|/%O.0pSx* D.?S/sZDg>;k(PR y<Xj* rTv.d0 8/as^;87p2\wVusp)C}B f4a<W< + +Oi={@|:<G#4!,@h?KV}5:#2Wb PXC:wH + P lh qx HPʎJ +X : G4E=Z4V7Ź'\"@i(K+֚[)Ln-X`D q"Tgꓢ ]})~ ,ӦIx-OT̙[C&ij0AR1`(l]c]do̴'[JDXP5:B r[cXm)UZ+C@ɯ=@S-u=n{æڙ_atgT$It@c)!%gCo_= E =@=Zh+6=Ϥ8`E"#i0HQ+s3iiVj,+tʬLH6I'MMP 4ͥ@/f -2D88Y0[s|HWzI"υ ".[}dT,m!o+.v+Q3@sq44q7M!(BC3AFWtْPw\K@_㩙m| mv}%Zr(&c[CEyzrk|4/|g 8lvbvc0+cy35=J:;5]q%oE \a,cﬕY>2^'J5ćzB4d0ys2$b7@RSшwE_ +"w*Džy$Mi4Od?Ԕ6OW,"H@),L5oDyWB5@s@; 8p呈~ڱa"{0AĪ"H%&A'&yZM{3ф9M ۙ&WXg(TUNYoçk7" UOfR`iǓ6dO{^# `iX +nEk GNNʐ$dp :10L<kCS,LP8s+ r4)v":s'd6gY 4Q*2aPDCgi[7g Y(2{ّ`\-l1 w.+x1ʝ]|ӢQMII4]6iȒ҅Wa4X飔W QU =qܱ\`ׅ"L84=W1:ܵbMrv?JPөӂp|-BX +NߤA3P:n< Cf~XEJfb1ʪ]"4( %LFBN&2<Ĝѵ|N'F9tb)ñNUy[ N Ăy/LF>vF#U4pJZ]a3=K2DxGKw8(;ƌ JVY4tH=8D# .l5zt0g &}TDFL"m]}3p^Ee&yts 9'8qXP^ 5i$&2N^l";Uɜ(+&]?sn. DU1ah"*Yl*XQih`K7%{3LF=3J8 +hۖb 0ALVDn +hCݱβ-cp A1l۞|$i5c't)te*ONhNSf^DdiV`|/" =6yГ;d&srWlzvvЧS)hQ3[C<, M +1־:qt em9zzJߩ6&EJ2,N:1̅dp<øҳV)<6w¥kC~B"jJ/m\&:?qXC)[%IAդ">b0(kGYڱIm>sB@<Fg%fTC#dz%"ɾgזA3V,k@U|( ˵sݰI;NmP;wѐ-m%8ب)mi +6k嬝| .,*DZ;Mcߦ*h\aҭq`BM3ء"oGPt')s\eX,l-ov5$nxt\t&Z}op{zrmubƝΣ{Yw=,ꤑxK=:I.'P tGGvFrO91$ǁcat$a=-GNm?[(S>'2n9Kfn\ܓ2eLQ4)7Ⱥ2zVr3mh-hI5vmnL),|48ngSKZ*9hkyb0||N"Q&hhBaڻE}&Ӷ{Min<0%UUd;{*|#$Wh //BVL9a B(wWL +=UwlGuTBn#V3qSt>W+*#SLDYKu"땤v'W(S6_IjE0azxUO +]xA B7 J9??pK䛋ZJVκK<6.H~]+}7-!ܺWRKOA_Wi~=?;KՄiYV?n d I-\/H}kۭ]kN!0=2QuD{ʛ2USFwTCG-vU ϦI]ͨ6oK")w)ޤ8W]͕"Q.20u 568Dz/-OKZ}tb[\qzK +Qqi[?Ho A-'4˹q ۻkp=^iR"A^W-}Wcg_: +gڙ/|][yV6.E̒X rt&8rLӶ6Hn +"ŽW›IV!]?“gBټlq64@no湬.S<%Ls'jo=*ViB4$6>/^,rUFgo7LRQz rүb-#2*7VvF<':Q^Ѽ=Ps5dH9yd;uV DVsX ~LX}O9ˁݟ'6aX9=ϒB#1?![ L~51S94ќҴA$-!^e?\S׵kGsk˺\a+RfmRN:uL4LƁObb$!1M&IZ%E2daHǸ sw5" !;xTA#~Nz7 y4xV{OW |;X6_p̓8^w_M^/zr଀97ZMS /{EmqwllK-&kxzm|9_w[R8韡vzѮ -MGo,a*{t"ޞ/޿?ӿ_}z>=Oۧ{*O/<8-}?75Z^F>œf}A݂Bw?c[~Fa t- +>ʧI48Kz|Fi6>jQnB k*t{OyڿPJDO_\|mo!ƻνX> 'A _f%ZO>#\vz;$LBsp<2&|j hƦ抴W~%`=|i!?>~H;;hx߄WoOo^;/47/Oo?W1#lS .C:a֕S%pu>`}O-oN =H6Et"=~K5M bٔt|[̽BrSqt7Wٕƀ_-&w[e ==&٠X E46htgnһsc k:lߖ/;/Wz-5BqƂt)@EW0|XZ]$ +zmvK ڵ+Zwpлʾug ޕ h2Bﺖ*{X2Xm7S1xǭ{U9P +lq|a~#DWt$~MOuׯQ:@$:^ Ys3%?c~=eЦ9RR5M b +dAo_L$XmU.Hv@U" +0¾ Ո]Ji_A?+X*.Tkӕ3 +i +34eRc땚Qť}M'ޫ5"59Dk:t>%)>;]pa cw) +JMǗh}Mǻ/@_| ƕ'TΗeR8L͸/ݷGL~:ULtX4=$?[Ju0a} MXX +endstream endobj 5288 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5289 0 obj <> endobj 5290 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS33108V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5291 0 obj <> endobj 5292 0 obj <> endobj 5293 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 5294 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5295 0 obj <>stream +h;ێq =_Z{adq ,YB.kI^#*X>3҃8F.źW}o?y|^Nۻ7ޟϿw/.w7u1..--㗻w7ff݌a@7/O?kڂ-^!Dvmy%EScU_˵t{lj:wKKacGD+cy^]6l=jq02H0f +@4yMmξm0ɀ\oIٷۻإqK[Z벅\kY>y!*!{_Җp$_zo@E.-1dBp ϸlԭ`bf]_{rsR\Pr +Yh5CW_)-Ĭ,h-+5_o?||o.G\>6Sm٤qvuKP]~w:/[j6#W2h[Za3/..l6\=1|k[ϩ"A=I}N3P #lRZ)Zees6j ,Da@No%$KMnh*[ a[0o3Tをcڿ ` A۵xf[j\Š&4e뀥|hBzm q#h%Z9VXl[J\5ִH+`II۹ SJ5qqj_ vmߦ˯7 +27>,BzetDuқo`M5.,ym7mkDoQ>mcMhLu`c045؏``~EZF;62R(}kw_[Pj:h#nuUM +_aMa>c5pV؊uI? _@~8F| ϒ˳ +#DLF`=1RE9lp塍 \/0;|:a ~mf@ftV91lûcJ%9HbpCDcH2KpwKfL߆!,_9NK| Ŗ3&npĬ:^Z3 uv *0Q]R?9cWNp 0toH\igL6hV ޠ B%He4u#2ნh7,3BX? +t_3"<%(z(cJwCv(ipk4q*t[v9vILN ёHG7INSHHDL^wuspOšNP;:LRcDzˉnI}>^hFzOo4YR!ԅ-5w[v5;:6h=du8~2?)YɹnvgIг0Vg>L4)dY?Af #g6qRiUh%TJJt0pNEXh+N<0hRȁ&Y`L{%u9gI ͭN&"HP8vR5g[8Z: +WTE %qd41vTmNs#*|9Jα+|c)hPve(1A=n#Б'gbhDaC m_$.+TuHRu@z6v]a!$%ӑI*'Uvu_t`úEįvm8Zc\5r\*K6_[A8x2i$RK[S2AT9(M@H,1yvYXPhҵlUf_rq8 ۸y.sB>uN_6=ߝGt#dnYj\|b/X S~k2][BNqxx U$__>/ݎPt'32XW G\u<#'8UG,ZiScfM>[ɽ?/zPrȡCi߈y:^#jR"r=+MuQ =r"$)r>q ʵ9^*WÕQ!| Yؕg[|HD5+,;۞4It*GLU8z=y=_9 05nDLŬ4*M\LSL ǝC0"]Ջ^_Jկ(5"ِ ECSBtzqc(E#W;ݒJER">Xן)csuraO!JEKN׏հc% /Rb鵧8Mi--Nc2q>q"ps'9Q"/|@3QfW8td u b*Mx;&əx,xL.ZT6wӜ]/+WlM,=ቒ#~[*f\IPs-!b\Ĺ0,8RK AW'Uh_GZ^:uq.T55hh."&#~\MT9E)oK{sQqTFc +gKzҚ)18GHVN_|2JXKS$$4? BR<,~FSy<^~u|*ۅrĆ/VdO)ݶjGzތz)?:r]\:mƩ[xBQa1{EoGHZćt1i8Q!Q>] jjﮂg +^yNdB}D*\ZTaGh+t.O7Wg‡oU27v!q`J{c TK|*x5]S9Bž^)N7/5TOQ{l +^kzxVzlNͥ^ &pZ_β<O|;iV5J667>:OB^ +xÅlvCI/:Ӿn=ulbx>X̍|AyQVD,gw#{5rr]93#C i[L@5T7V+X 0 ͚|3Y3l~f75~Yf+ 0CX`* oZĢ3T~@ @Y_ag,j9*XG޻[8,ȬRm{ Lg"by~G"w|P 8ʉ=݆`S\9@'z[03u뱈 +0+g +endstream endobj 5296 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5297 0 obj <> endobj 5298 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31401V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5299 0 obj <> endobj 5300 0 obj <> endobj 5301 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 5302 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5303 0 obj <>stream +h;ndZv9Y8yA=V<|SU*[3X>Uź/elnvo/?_f9^1ah㐒<4Ɇf_/m&?OS08MP? ڌ"C@V&D@F\nE4N m 8z`hXlRZ`Ofq; ]̌oo.Dy9O9IX}lB}/gi#)%,v:eZ-%3` !ܥ̋v0qLqdҬ b>q<~3`hlpǗ͵(4Gi,C:2< ތ@͐ÚK #~>NbOS00C0yHDxb1d?o.;*;*фucv J~f@<<auvPR }5``yCH6ZfZ3,'Xژ1Ya"q4 hJAAhmLjd4L"y  pM#z@4 t/V? G!>0LoCh;) T>#"gbrP!O ;:O,J:74ʸ$(ECRX,›iLEEASXx+H8&m$i(S)K .FI?Ef4AI\|&_>%Si? &Ua٣pcVPC$9q/91-h*f {͠C)] &@| 8 +)<5D:,{)?PٗFRy(DVJ62ikq),W|ӖѐSK966kz7};L}{~cj<zƀrVZnX~#gEEaÐ}[QS `^蚐@$htjf +ރ y0&2.+L:q[#Ķj HĆ|Xd16Ldq1m^# юG '-][)+{&c( 'TڅU!>k =&TlH@J UA,pà yjLM'u=*aK}ZepEx,}U,Xw6EXtUfR +%fB3!u <%[אu:R8E`%}~}5 hϛqF$yGu'׸xGƜ /9uMq_scLkZ~lʽDQvb +7=쥛f2wj} +mڳgEb lH=> 2 IO:rh1񻶫eg2B`'KӪחƺaNg^m7/e>2WbT_wC1 {tՒp"3`v>X W@+Ac?k\ |Y]:"SmSd'7Yl`{[ +7 -%u|8%S ca=l5*piM`` +v.s_1ŭ,pe@04hAzvs&`Js mW̦ݰ4 .qXFN.r*Ks:QvFҟ~?cƦ&:N!9ť4 *?y'f0iH9baIHA\[*󒍮MIc3y۞pb#j-H $@E}TXvƸngJ͌сR<__ų$K'](fnj5e֣*N + ՝]"x}&nk&]JW/6,cBVOQ|E ? d5*=(D gvj.YsV0/̠9ar,=8Ƃ[hk=[Kf$= +AE]V(<zvžbNLyCO))TB8E8V$PjVNm]SdM61- ]mWbMҰYjI.5J.%t$Y hBVrM:e yץI|[rw5d}n+)$R\6璯m8]mZbgL|'c_dzIml݄L<2ꤵ>n/[: +?'/A*~䓬i &<8I`kCŸ59i,۹s9iZ|5vtsoz?p *aOy+ +fcPzy +@Vn^v[@] ]z ̋DkJxE|;`͑iqUOH:gTyOq hK2nO9=H&7|C͙q-ZUx||7ŜnЮ`,r}szWjKN/Mqi:JVg;^V$Cl-9a,\i[ڿ~fkmѨ)9_/ޭr˵٭n.Qm~: _>R<8}jV\%gSNǥXiEw.]W/8̅=2NKHoTƽ4||_v</agˊ] L\ +J-omFW9UtV;tlp< ^OP;H-|m5#vG3`#v`rkO %I4#I Hb b@9+;.6efI{m%=B+iޝeX0i;znZ9=Sg3&DG^RF`h=L95Lb9J^EHGފjYGH6^Nizk:&"fJt>HG$ik.Wcu&>j ޭ JAyJ (nepI";AYT}jB>swp0i`9cPЀo9R+2_+{=9_T^k]]IISwT++l%.5E>Yhܝ+yJrMouʄzh圍"E.o}VrDVonCAԡd-';JK\6u*зurz·-;mek+.X +W$?spT%QI kk6\Ҝ:sUcX~>XyB!9{"%m T0&ϣ>P|M#ٿ(;4鳁$X4)bDy#eoWo:`Os 1͌O B`)aiuuF_aN19GIχGl'[.H̜%>1\}9 7I [|הe(N c~fx#ŗľ{P>/Ȇ^ #fY Oo?kYƮlOfz,cW"'׈ƘOkTZP[W2={xZ6` D Oĩ|)x ΄2((Ϻ\9)2KO#[cNN |RƮiA7i ~>){ +eXC3PE#,7&3[xedϫj7t|W]3<hJjr5yi0(3*\T= qͮ>X+7i|N{+7Ӭ ^Ƿ`❽Xr;xi9v4144\3Tf"d˔ Ayv(Wn:XIqY^OXѾW] D÷{p1ЂJ`t>SC5 r=>UuJ 2pXaaeo|h0idUC S6yZqD捶& *|$%^l@/(pa6 ;x#8`,DCa` 熭0<%c: X,t ̙*ӗ((-X:4atPxu#` +endstream endobj 5304 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5305 0 obj <> endobj 5306 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31402V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5307 0 obj <> endobj 5308 0 obj <> endobj 5309 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 5310 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5311 0 obj <>stream +h;َ1ɛj 51Y5vQ]hܒƒ<#} U+dA{&`r1fqVY;c=~kߥDF?i2cDxbymp6$E==BO`dz C:T%4$Ps$!-9`B.¹Ep+y鿿UvJcXWJJӧnq]ݶ ǭssݚvRXe!E"(g8"Odؔ%f db,Ov?|2ݾziۗt +[ mOk>a ,mRX4SٮK(~"ylg <hKq J~Y_ C9/GX]hi8Ԅ5b9:*ϡ 0FMKaKV˛Y߼XlYd8º# mhLZkFSy +$! a #'?D&䜕  ]ȌtDE Y)B8H$5jn8=ӌ b:lڸ*>n3 +(!)VYs5#`6\jЦZA%jFYͭTEQ-nJ=|ϑ^aEHymIlSGԛ' qZq3- +'v I"yWc#e=#ƃvn8)ZB.ٙ7ߞJ;STR|nfsyb?/(Q4?)4;JVj"fƸ$*xh*gtNS5uDcA5 7ȱbVepد^,GdOlnKjz9t"Ʒvۺ F[X !NڦS +Yi.GD]jcb{m :͸*5xn9W8|k:CbM֝Wl!G0G nyw !|/:.6$#& q9G bK?jj]O* m>Q6|y;j"᱉r( R]LB&j?&9]pTwI +e#iKKb8h#åŜtNK ]语_Q齐>VF 9 +:Wǐ.ق GaTV a[΅YgsJ\:Hr.dՃTI<6MH׬y {_B:V19f4L%Vk\D1׮AzL$~ V6%nzw'{+'^$A5],Z L񹁌Ã^]uBsH¨Es" !>&m/ݙ8z3z[$Z#{X،jJr|Įa^IccuW&f$^q ec^cz6^[ܓYŸt!fΌro\oF"bEqxgsࣰ'QYjk,XݸMc4*"|Clf6zI +oKN" +txu׮#evt |;t)V== +NtD4ל}=DOC}P$%j$ l0jV~J]Iݙ`Fz3S6Gϱ:lfeL,%^SDZ+<"Mh$WY܋ —ѐZx쓌7ͫUPY5qC SE"n \ەѽR~4ڒ[ tpᦐZm)kؙTS$>Sb MQSϙkBvuck<4nSiQؚov2BӺ-DXz jy¨r*NsT5/=C^iA'ƤhQ^IqCKoh*%(!CW5}cw^ط*EwnۚxwpCB<Y3C< o$7-ו3[{JazJR}3I7]5ݑpx.17^h.*e(N5%5^TӠc ԴogS N[3LKYnح"$֤lY3=/ |mhyyG3 ]镵vT48 g)]Uiww/Bye[Qҧmwm{=K{jn1's_T\Ttchٯ].C.^u,.pn?-\~-XoM..Գ=[g];%у*NJ[nlnWĕGzրF͓_ +Qv?+'zU(&}/`%OPsK >bX֒ jū(|sMFzȧu @XX]AbojD˒sI˟>|Gk|಺~ß`%LjzdGiPo x]'X>W2^uP(yWƮ`MgЅ-2vqq!xÝI]yFh}Pc^R2{y]wj6 3&Qz.+Pkr9-e+LpkGpE񕛌[:_cEB`uRQέͱa.H{L +V BZvj`0KxY|mZ,yo~ Tƈ 3w@OBAa~cQgp$hW|5`x` X6D2e.jf/\B>-2Pǿ}i:?}2;T7:̮a8b i +endstream endobj 5312 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5313 0 obj <> endobj 5314 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31403V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5315 0 obj <> endobj 5316 0 obj <> endobj 5317 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 5318 0 obj <> endobj 5319 0 obj <> endobj 5320 0 obj <> endobj 5321 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5322 0 obj <>stream +h޴[[o~GW;%*NJMQKI$;I}s,I)Ng~z}Oοؼ<߭Vbv+ս}i=;_u,w]7q0v6tog0h׭?^/nap~Whta@ :uB*q5<1{߁fzzO h.+h?XAoTSi@H/M=>lW 팉b\ld Q~WX4.GŮ&6zY(}ғ~g틞,2`r]&Jm+F 0e\D"L80>4̖@PM]L}ХN^ip;P6?xj2uQwt0ZՃ.A"CԍοwͶ{>b0qBuNcs2rd%۱l} Æa+2Ц@l'~ +`^{e=5OG 喈{ðRv +[W-kֵT + zdkOE#8\G3-ˉu%h95~lZu]=&'>*eq-)dkx,2LE|OO#IWF>./y'X d'%Hird +FnWsW1ԳY-b1@7S<ú8Cĕ%sMF )Bz503> Hی92gRjȴ"$Vucs)FRxߛ|G}h%WHn d-|Oeښ}e.ȒN9VQ JDekF—ln:IU㢰dsmU2Y+J c{ޯj)DiC^*I~;]MTBuNQCQyl䶗cl!lJqjMZvq0;A5<-v^妑UDlΒR5-\X u`=05L)S>6WQ~lܘm_8X,,YDUuStu]),v'8@*XBy򦝐N%Lli)ԫ E]Ki 2(ANd[^QCܼb67#;q3bXMŲYR"Σ6L 9*F/QgBVgY2<*ulwٽt +{H0q1:7 'b~a74T :NP`{UBmBbE1˜(kg]º8А7-aF:ZK!Y$tw[[8s3Gj#ӮaoJ(hgH ӸD%9"O%9|AVm ?+rߣ.&ZMZ3A೏^b.gp;/_ ~q-~v^$' OCv<빱H qg ̍T/n5x>KQ>=CXW9ƻ>*QZ'6e)kI‘5>w 'ɔkȬ\.0^qȩ,W֊.U+^YSx9iwо|./lVPiQh.J@$s9`1GƗ3`Xd@x(T]G =@Ң;;Z;pzgE99ݩJ~D(0|AӢC8 + +JdH<y-'KAOPMFp&d-Ƒl5,?jPdm,X D;&E2V6xN;zGAc"꿿Xhfc qS2h< f+'8Xt:[j@tЋ1ӗ`WK'fa''_<daF9q#+ o>χrbb1X|S4 =MaN#?5 c>?.}lz]Xc63$zՆ3eΣ A !}|XY !-#% cN+rDz` 5[@zGb==n%XF4ۆ>Xm=2 귡 P>ӥ *Oƞ:6&N#EǚGQ2;./~;-4Ӌ{Z!^t+NQAMAI3,nHw߿{ J!IŎ| ̍: w>Wq( p|W*@ϒQYStu Hl3y>yɡ."B?h+s\@b q]jc > +8No;L  cd bI +endstream endobj 5323 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5324 0 obj <> endobj 5325 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS33110V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5326 0 obj <> endobj 5327 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv62394V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5328 0 obj <> endobj 5329 0 obj <> endobj 5330 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 5331 0 obj <> endobj 5332 0 obj <> endobj 5333 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5334 0 obj <>stream +h޴;rcqy 2ΞϤTŔ]+[&+y\*waĚwH>8}\Nj3w̛>lzs?/oiWoF^JۇF qAqpnbT/8jnWP|8Z#T:.~0PFj>sY\h~,P bJk!?hTnF=| +kr17LИaw=a^ fud<>,,m Y`.ƹE^.G"csjp1礞nwa9n) ssݚ' +2E?C"8D(aܷD=x&)pJA^W޼`@;̺Q2R:~K6Kg`-56C/emwϛyR0}P=lӄhǠ+Mkꑪ/f|vEmlllxF(aL~ Ys 73pk rT e10sZ!T0B!\k`U }Rr͵4lU,bAvj`6C@41٤R0+E Lk;.h*p  6`S +9g+`oz22jd;2#QbFP!I5@;XGDZ4ʸR])x<z! q$q{njvZAc=r.VEHP(G.n \ŠsD @w0 6O͘@WP? Qb fիyiR1iEDG0(5b0̸?(OKTIޞ=ET5LRMò+-2wvhs_IJ9Ej5drVe"Joؔ%,K|Æ|c$k`kBG߾[pk|Vy=6y,dR.|w+5^@ڤ%s* KB)9qvPZjImq?N=r'h>g/Qֿ\7a$jC",1?]k{9||o?rVKzRwHhf\=v[Բm |/Z] +򑘾~%XjraizIߴ= ~՛K+)a@ 83gwkgez`9D +7;n~V{Q +oꞿ#%KF.M?]$NO#TrG$ T;?k@jSMb > +Ւv!A=PHBk$ n7L^1>>>b»}PWz{ kjރ3 Dz(uh=T#L*[K*ҙȆ me +du[W<ϖ2}ּr[%^hT{p/Թz )VExR%H Is؝ +q0`4i$me"J5ͫu6m[H lR Y+9f-YtlVhwIa dq$hVFnDb̋sܱ_MT\&A8OW L\54wA!Mܒu_cu(#ݴNf A"i,]v52 º*[Sbt uX`ޙ36'afpe|&Bc~\qI" ^7t'JY#Y`8'5{Lٔ #Cc"i?"k f .D܉<sIV9mOڎls͎|bB`L̽FsT'W|lcѢPR:g\KhUdLTD W,&셀(=Yb4m}ѕM"=OleٜZrEwUl~L=E?%[Vpf0f42vܾd  A@_ueS#.@T$ ̩v-y& )`nvbf\aLXk"z*GcgEʓ%rq0`4oPCd/>RGw<ݳ)(ЊfJB(ʊ!AtFsV],^KJ@Ꮙ5X<< WmU4"H_^FUvȃ=e eQ$|RH@jdq~s7 م-NxBBWE23!O$^}ZK~u^GKOkg]O^J:FzI7M73PSTP(rSĂjZYnlvi:q53 +Gd㹴|U>P,F%{@{#r8=r[&H}o!!tTmGeܦzm=g+AQZL#&3#89#UbC`tfQa<켎v꧆趦tTS'/حis@Ԁ?~k}Lr%-s<~90Q"ݪhT7jT>$cbf1*"0!%`C}ͻAJ%po\xzgo@Vag[MXibN߯1{= +'tș Y%LJmjkFTY`͢("o|47;fTn՟ b@i!alx +b~1u <'x`/2% %<2*n0.M8@P5#tũqϰ*,v%pHP`5ێ*a'f5(:QPOܐ4M'>m>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5336 0 obj <> endobj 5337 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv65225V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5338 0 obj <> endobj 5339 0 obj <> endobj 5340 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 5341 0 obj <> endobj 5342 0 obj <> endobj 5343 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5344 0 obj <>stream +h[[o\Gr~_qgL KY o 'A0r85ETUW IC9}V]U]Uuѿ_]mO۫ۛO/NG~:]IM$$SV(tn! !v +,CLJt ++,|t +.HX7k%7q4yI} OIx〼H!2ޔ[F\TRikf1ǝM MT'X$$I)M†t[\.z)3s?,%*ΈtK*zg zE^-H)UWg\]תA6yDKrBûtD9&TΟ=t0Z%.5j^};zNw0{?mÅLVl~z ]`"´}G -Kv"L\6T6TB96akL2*xҴQ(auZH;|yKXJٱl]h1 H62PQxUAؾ`9J ;Cy*kehV% xJ@#ic)Bז"^X8 +&~@Y 쿆WGxC~k+Srꎤ[PAkh:9<gb0PH!فL+%' |Wʸ $(yERr_,Ȏ `+SQ!@&6"4`)tp=~ m"P?Кp:XʓQPs%3}\2Y/=Njx5zWYR|ʃ\ >x/'In*Gk*zϵdcIas^)05X*t`Cʪtܑܜ#IـFeuX|MeXsc+MK.rW.@*tB p?jp6R!=oԵ YEIJ%l%w?冡 +m[4’焽qxl<4 j4\6 U@>Ϊ^C72"W4ՌZV +C+;q12jfdfNYs)kvO<>#,RClJ%xgS%ӈr&YKn DŽpC"\ UjuBµExm7IhmMxJ}ב(e@v#b7ŚfDo*`ǽF%^#ڔ\tEM +rl<&X9ћ7>޸mqm5]dy:H)@G[5VX㢴3] nJbMVT_]'dQ/,"Q#79}dm,Mjb(2V[}lvI\iCfD_-JI]HJ[*OWZ81A;MecxQ\-7yzb霕m(k 3 x-^yEg'&AaEpy4(8IMq.V}vkcg8`E þgܬNOه + J"hյ C 5z:!@ ktH)Ń1B֯ Z2ͱ@Κ d:I3"@4Y D@tOm,JX? {|_tCcEV4F1p&8H`;YBntY,M$daH0U+FuQ>ΓQR{)q.Z_N[9T*鶧RϞ)@u4Dɗ\v8\G(-+y٬ܹAmDճ0wqYQvp Kdo|mO."9e,Aesj_tbs<9R`yJl$#.:T YvكJOKܪMgvL-[`P*v*u2k<\ě@6e`(f]jScq0 YUUӝ1{Xe( +cqČmCF!#ΖNƩ:eD[ᰛ9`[kS8(qJzMΔF5P2Y+zGv=K.UTmg+P5"5 %~XQPǤ14yG`B 6 la4=!GnoYEIhdɋ>y*+h<d=ܰ|,Q=}SɁUUo4)OFINԫ藣 +{γ[e۰-ü^=HqJk3Зw7w^бEEN*N߱eqb>Xm8ŝ2?:ܤǨi83֝fsg:a3h?wÉ.i6* yHnJBQ]!di7~w?K޸Ws#1f/ZΠ[z}Qg[ݷe[NC26Pʅ3ߐ}b|+FqSKWvW})W|By}Lw(,ٽǼA˷mpz rTjv_=pǭT7!0'*5[ bJ~%BMWӂR i0eoPnW h~w ״VCޖQ`si7[].^n?Ovʁɿ}i'k`ջv +Ka +W2ADz-;rId4^4j5v KNk uTxvskm7 SC`GR nbIƠ| dr  j Bxǯๅ 1TAi6x՘=:,!ӛC-*BB8$ʅL }^GL +V̤d[)gsc)a;jХ{8k; jH0[ +endstream endobj 5345 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5346 0 obj <> endobj 5347 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv37634V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5348 0 obj <> endobj 5349 0 obj <> endobj 5350 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 5351 0 obj <> endobj 5352 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5353 0 obj <>stream +h[[ǭ~_я`2@ G{V@YźtE@NWwEȏ?|Ӵݞ_퇫Oo}^O<9ԓ.ߜI_LsSVsNOfVJr'/JY +GwuGásiU\omKWį~ +tMbtMkbÇV.w̍^ߠ'Fzr/Pmagyid1\( /O, V4sfsN7'"5g~)qNmt0Pl1LYeY.0@,琅8'fez'mmm3k諒1 hY%_!O{tNvk3 +㎏N@jmh;_iVдD9\nw0FP;byh7FnmyV=' $ƱRu m@b11lRmb5ƱckNsx<z?.K~"YzYm޳\$W3[]TYrvrtvc'*iɣu8ڬ\CKXeȰl TI5aPgĂؐCrlwAOxl2EKQե+!Q#L|_k~6Dr^ WK[E9Y"( qD<=|h;o" nTuȾx?Ԋ&<lglfpve52juM%0E3;cԽ.kUɿ`pܺZ I@4P +BabgOZ}$*zJIO0me wھd3Mv펮f.GeNanzTRJztkxյ^wJJdž#^XQݻ:حm{[%e5HP%DYbW݂I6 +M qr:X"5\_/2ʖ!k9So_oʰR.6"6LBuH]&T8^C 6_GWՍ5Rshf4b/d?.#%נdu0mSA(f9 5/%ͬG`J9J3/vn`sZ6xM>#mn +DkOҝȲR vQaG"zX!%: +G۠pcyw9؅CI|P ;43̦8Rgr"H!h8q%8o@!):az)QNܬGMǡUPǀ6 ~ ZE>M2i&yfmk weāl=_6/!,bCG4jְFQā0mSz Fu_X8Ndhi0ӻrs@fE)?T}]7$#0͒UtU]s1 +́h ȝbd>Kdv|Ggcz'Wi6tM_`[AWf1'xc<}:p\^>}2ħ3)HZ0,~ > dD:OuTkaTq`>h@̻ʒvҳ1tZ:6ML,t +H~af=} <Jǣ5&1u +߷;Q]ǵ)tٝI`EPѩ2mJ +%8[2ʧ)љ8UǙ5,8iG +Ń2f{9X$ @RKdCWͲhHhU.+1歴8}ԽDw4~A'P?+3Ѻ= Λ4oplyrq.!"?~{rM jLgvpS毼Ýz%>g/Uw +vgO#Vou8zYEi5&gWô[Y:AǪaÙ.F]1ӊ`ZXxZX2|Xp jr_@HvR|6&˼Dx' z0}:46+"G+SrdaDJw_[忖W#56gWLXz<:I1RFFjxRN.z F'nH'Dlj(KB*O>-uF\(iӥv_ARDM@4Z:_~p-`v]Dkde^lK^El8V#1>;<1K[ՠ3ynp6)+wu: =9unqtZ4VC~G9Ñ,`+ALoA,w7{7 >R2 Req +9HϿ<}llF9}RK=TfYGxg,6Q4?z]kN6kIot~5c(!NcѧP܊ ©^ /$х5_gfOeߘ_c x.-U9 is& +6?TvRݢ.M_Iպ2|Zm#آb4q kk3 +endstream endobj 5354 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5355 0 obj <> endobj 5356 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv37635V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5357 0 obj <> endobj 5358 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv37636V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5359 0 obj <> endobj 5360 0 obj <> endobj 5361 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 5362 0 obj <> endobj 5363 0 obj <> endobj 5364 0 obj <> endobj 5365 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5366 0 obj <>stream +h[[sǕ~篘G BPrJْ6^1APfȿ~ϭ{z%%[* +9}_9juY[V>;9+ݽyU70Н7rmndbTH6ݍ--Ma>%׫ tNvVgz x/$`/sH9iq&R-rj蓆,GXB>ЁF[zx XxdDdJüatL{︠k7'(oQ3ƙH4)uGѿ (߷#A>+ep}6rF# )B![|d:)pB-P4blJXSFfL\ESZq3 mr}VКu/n/IDl5pvNz#2Yujx>jf) WQW^K봾+Gˑ* dH8< B| <>/-̀xc08Q~=% X@r(@[^9*e*׋=A-ˌ@/AthiqB[KX Uh (~NBӻ2qIzu颟UAyCh2$y/OC.czփ’1Ad&T(R"3~پL*Xe &\r!4f/0pKj;>(7KF>) q D@'%jfE&ى;|3+ƞU5#J!TɚSD`_\DtRk20jI{m]4Hj9ҥUk]<h\.k쇍 #JR1LRwEʐD`P@]G2ɥ0;SS7cjez$hyNTd%o(3Pp|1H\+1b{VPvāE#X_*b^Ȳ*Ίo"<L%q +1%g\RL^õ1*zAh.X(Nû(*E+ZXvw3jx+DlIm̌rodChAMlqs46E 5 1ZQ _NX<∓m\ˈe`Weefq@4FLaz+b+x.a"}3!.Uuwqvg<ퟄm~-t~97KoP8LU).G: +P 43Vk[_U>Ĭ2 /PjMRS;4;:סCCieJD/yu66hqk;hS6(b+Hqo(TgLd?R{,@БZt߁/ZU6N^AxPAc9Wo&㦋-`-X78eT`MoG^f)rd57s(;pjq )QXA̮J|*)XѮ,{✾i}'A/Ξ)>:ֱ)Vr8 {TjDykT1J![)yl7ucUו~w ˍzݍ]YH5KbX3IqZVbt-FYZp#= +jU2GL,uP3"މdGJA^.e9`bruu&Qߔͤ3۵=eN4qx6PV2~uMDRu6 Dg C{f0s$q؂]>SmT]`h5QcӼ A&9@fAh[vs!5WUoCѰz0E-an05c# /sٛƼ>EGsekΒpBot1#n2mR`)Ŧ(c_@'32MنO;lݡD9Hke`ޫG9'o0͈ '&9CfzZ[,Wl HB.Rs\8׍N J]oɅ@R{ƌM׼5̞mofwn3< +p΁OTҘmݏ<5 hewA-+0?-D +Wq0l MQ>~^?tǟ;u^StէC /z8S=pw-Qz]̆NGwvׁex581Y2`!fͼ}k%,Cetsd* W {Ͽ;ROw+ D Dc Xo`+P*o5w[ApGws(cfZ^V^{x9G;rF.zQjH#=wqJG$ pFZ5r=(]N~O?tW.<(06 {k- ^0./κ<>è'Mr]^pk~9@Bn |MSnaP}%y_. Ĉwq$/q"<0t>u7rԞɥ<`JݶǸqg/^1?Z@}^IWg/?߻ܽl{=\4?4u!^B1 +04NEu?BLY81^Uf3|{[!=^8N:MR3ie_ a7X@py(1n!x#~C2}œ=zC~^Is 7fDbsh=s:(̩ .x2D7_rsEۄWƾ>4@5{3H[@jݶtq #aśX?ΫOߔ7p 1ͨxǁ>ĠDY 9bGѢ~ 4.ZƻL=%7bjcE l5&rOGߋ=ε"X]Y㞽g9ځqݠ ɖ>Q;~SSp[LRA‘zE߄~{e.𪝡&sW܃2 ^-dgqN'F?K*/%9pgq[[ c2lНaYD-Op`'CԤʰCOCM7S +vrLisH?{V㐥,K“[Tjwd0@7}ƃ'&=>2j~I)x- Xj?nl Y([le&تRFS'+Qr%z3BNl Q[0wp`&83ty$ +endstream endobj 5367 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5368 0 obj <> endobj 5369 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv37637V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5370 0 obj <> endobj 5371 0 obj <> endobj 5372 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 5373 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5374 0 obj <>stream +h;ioDZ+2} $c8" rIZSW_{HN,JN_uWo.Wa89{vsrgG'_T뇣ߝA gGi_CFk'3M8Mgkh|j1M +˹5pKVq9W;5QŇUY]muNjwLQ@Z!;X#5ckgL"lJpU[J' :s06ch0I,;4t4d`. 9CRѿ<;SNz0jRFRHOc>14ˑr.p'.>*v.kf2jdB CL> &6iv7(7*͛<[t}N*À#@d,Kef),.h si0xt4fxpqJVm𰆅px<R}°F@2\KPP[9i55 вҰqT8yMˡP[~vm2 ۓg!0&KV8zJ`N=pRcG<2 (I5ۃ zH@3DtMXpmnjT&rCQ42OHo  G!>%7Lo Mf0 ]Mf'.f FK6:`lGc@H B:SW%rQ{()<N5Ղ!"XE ȵy5C<; gsk]qTr]֍lo +lm|c֤0)'tpwHkws闞4D?0qdbeGxNYp=%3U^=nxn@G5;;ٛc glٰ[ucefx^ o74p~lWVwGxFN 4PCgt.ñ1c~1s8CQhzAհya%ϻiCx{lF EH$[^rQAupDR!g2\q#Oܮf;ErOZB4ET8s`J׎ DX$]6w3mx\\FqAXDzd/eဂ ̂)uL RqZPeFݱ$rm&yaW +$M=p3V}F 4ax5, +@! @˗jklMe#"뛙m?12tBakZ nl]+2Oh0'A{ՃoC̦&5z:5t-ȻlѮ?B+wU:2cl(I[TS6iɚyL_@^ahh[DJ/jQՑFٞDxO=/ܙiĒ$EE˪.o-ӱsZxU\gMr6W-,CgIe҃}2I˰aOlEUpd;SHw+{MYESxa4fS +Pά2iUșL"z7KȦ 2 )]Lm +XE#Vnw1yGlvc,̼-*~Ӫ7]-LYqPXK{%]p\[%ͥK~e1P">ՓpxaX=+m'%[7Gٹe]lVnSDwMiBB.tz.MdV_;{/`Q~L7XX׵!/D?&>{y3n2 ?و ΀oA7}/ߙM?uӗ2 x0Z0?fx>z.c!-sw&;t^߮1 +M/ 4O~0}V`>/^T1&VdH'@}2?/LˣJՃ +`= 7G?3t:)%i }oS8GտG`m!Hlpf҄xkiScH!:*:<1JiwiTm "ύ7XZ  xP𖾡 +!ξb c[Aߏ*W2 x(pҮ쟤` 6!@6z>vd= N9WVO(UV3b"F!l TaɈ?ɰ~LʙF2W|F@H@ +GݣӽD*Gic?u~̓ǯ Sc.{C+e~GTYݲRzWw[2-l. ?$ O-iY&j<-Rsvغ]ll[H5S-~3lE+IkhdA=q[7,Sb/a=iO)dqdip _3ӡׅ0 B\5BPE@Y]vsP-eCI!VO}8ܱQO[ {dOl {lOm{lO=E6=6=`/ {\^kb8q JE,q%a<+~KxGk|_r}[Zu=~y`܁2фv`0WLCSc/_>ǛoĭByt0ڐ \ǖ=1x=q#j 됕 +endstream endobj 5375 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5376 0 obj <> endobj 5377 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv37638V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5378 0 obj <> endobj 5379 0 obj <> endobj 5380 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 5381 0 obj <>/Border[0 0 0]/Rect[343.86 417.62 527.94 428.78]/Subtype/Link/Type/Annot>> endobj 5382 0 obj <>/Border[0 0 0]/Rect[123.96 405.62 203.4 417.62]/Subtype/Link/Type/Annot>> endobj 5383 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5384 0 obj <>stream +h޴YoH= ˵jY@ -bHݽE0 ]2<4ΗR1Rtu%$XjoLz{1#ЏȾLE㼋cR[Gn)EA`y ypNk 4A\#6 "vJa*7, 6۷N_oؘ݀/X0JkJ#/յdp +vj\va_O _No>=~zzpzyzX'sg hJľMX A^!:8C+fahChR < v8&wry,amXa1R{T sփ 'hMvөvLF0!إEۍ `6(n&}6a\a8zt@Gxt7  >8[@[1ڍġ|gd\"6iI9;pG@I B1@5&A+Yjܵ +k  9LM\0=pqA)A8q$/CQhgn;M×і!AқD^T_->V_MW6ڛAXoкmTyfJ2j7dua,YR `),.[ x$H +-Hm@ <9/}+NTSQWZ26q!2Jg/>H[9O:7G#}Ƿ;,>[zժQr^BzXq~A-1}Cdź30GLw( f*=5]HuEJHulݪD|BCK<1)UZŹ6LNsZuMq2;I +Q=U[F*nVs)>UEݼomSW#DŮ + l@]55w#S/&MN]4*" +rZz snNM!%S5[tK矵#m9;#QvDZ}Qi 3=#SZ'zެꖅjᘋ2!tVhƂQ ZӳFQ_6ebW^4"-݋_^xo)>h@9t㼞^ oQi]]^ ̏m9,GT5\ߎu +0y:>Q9͘/eӞ?#5'Gt]$@Mߒ/NC0#$ze cB %=ˉxzpâ lDp0D?^~8|wo݌ `P0[`ru5opVHTY0]9: +endstream endobj 5385 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5386 0 obj <> endobj 5387 0 obj <> endobj 5388 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 5389 0 obj <>/Border[0 0 0]/Rect[162.3 717.62 212.28 728.78]/Subtype/Link/Type/Annot>> endobj 5390 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5391 0 obj <>stream +h[[ocGr~ׯ8R9}$.YyCQc)mߧ}9$5#1А}wp?N__O7߾z2W^5nʴ2٘/ntL6?teqLmld,-Ԅ=Umlp5v/D=CO`dz}qzfN2niwFt uy"uJwWN >LfJ)S)yz9^_ e.vsS7Y:52ӥ0G"-JM2sjʜd3dl,/ÏOӻ߿7! %/0$#qmco'A +ִ6C_4症Oחs{9Nϰy)}Zai32"$?]m2'җQʎʎv6!HycA&\\lLg#K4jB  PA s`y<Ùlϵ #L/V5','Ƙ9Y̳58ZA ,DaANn;Gd2MPl"ya4U`{Aalw#|C~[DJ4S JB z Nd3[SŠ"eH P;;O' +tP 2oh qpFPJ)uX,`3@) +ħZ֊DZ9ZA{H\,ʋAB9qrk䒛~MIW~"NWWÜpX QS2$u0n告1J+ʧ$񠚨 sI_ ''C?a~B^;б@B !akQ;{nt/,C*P2ŭJoؔ#Pk|ÆHXa)A|)6N`:lp Qw]&.6]tbx46dTGu9,G2PZߠ&K_ڌj'o XwxNӷ8%ߒu  f$CMcي["TB=o'Ύ8K<a;qz8 !y!"e. +^Ҿ+0KNcUx}\) +G۲+3(lfgo(!&Sda-qxȾ08.t0= +Qmy{|ݑ:@DI9N@Ќx|FiuGNgSf4.498L5AoS@pTfҎ9hĉnYIg {N3N-RaV ޣH ++ܒWN3,i%tߝd y󏯜1Q%sdiȁ2s#G]l h}S3x[pGih[q:3SZW6EHf7'sL9vFSv0&Gc z [sC{8G,:]tOvsRH/\ r:vkؚStlDd0+ +fIe NtpiF[p/jc>YE;2j./k 4WD!Efb}J|U$.FdݝEܨl,jN o"5̡Iw-OhYN}S#(|$n${7U_Z,LJ*a%nVvj-1&>')-~vi!tgH ע㻌 _|9e:$>=Fd EO +g{ET6@^9>A]5<VFt}:I(~ˢTڮi41ڹ߶ͣ)>YzY5սhKܽ-“V'~ҫ8'f~c1Vŭ54[Ģed1g;'õ'ʽ/ %QScOlalQkuih^(">^M"j/8xu>_4ћuȭ?Qa 7-AXakA4]\-u\)@|5zƍ(F,H=^GC*1Z=DkW?Il/'~º]gAEp əlYe[ߢ*B=^pNfNFhnpLjOtWdo9LK`:ӿo0 *8-Jk-pJ>z>o_IJzk 勠lנ\΂r]|TA9\N@9o,U87` ǀ Z ֱ;& >vP+p٠uLXC:iLKrr:zۛMJ__Nix럏w7x5 &0ytȭ}|:r,3ip|덝 }1zrb=3+O{.| +d*#w}i_FhiG,S fL<|j~y~&]YjafNM _W53K$a^b˟ʐ |DNmgg5WYT\+G-קL/ǣN6tn;5#:c^6ş*ޜA$/$Ew)~Oӫ~^'uϔ!0wrA$>ǗKOGp*Jdl>=˷2}tx&=ܴ=W]D9(K`?(0 +endstream endobj 5392 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5393 0 obj <> endobj 5394 0 obj <> endobj 5395 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 5396 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5397 0 obj <>stream +h[YocI~ګei@1I!tvmP+m~ߩ*_p?l?m˯,~'5Y|yփiL~}a~&Nf~\L8M [(\\[Aq3M6NSJ`n~r6RJ8É& } M-4`wawy&v4nf[.ܨ46@IV(hlvΘH5`Cy{Mz0jRFRnqrӘtW}f=M#ؾqͼYZɦԶnwz=i=H*;~ qdAn.͠b hAFW폏pbP9&Ce쟿@U#p%Ⱄ6CW=ؽ?w s_y>N* ^0PӰ BD2H6à Ra1%;NQ'0/ [Ge=N4j`]0PY)ۗsH9 <>J>o7=BA0XP@AHQJ~bDХ<̀qx$jٍ`/#c`G2m%0)hߖe + TPmp/ ƀM=$.eiDN.iw"yWMkF֤ 6/Bm@6X84C+]Dhy:oE~*? j%" 5j]Q(A1:`WuɨJ %:[YA;ѡ*Ň0"! 60l!3f.y!hē;L b3H|K`Т+lfl8bbP*=5F_ˊd 5ً-56Q;#}kaBW\pe'%whSP㢲 HQy|1ܶgڊ7'7Վ3SM%SlffձyxtvH;*!0 +\+ya8߄N0 LAlP03:了6]c:mVMy$}A3Ip֫.W54oͭ&o}B*b{1Um@mCeK!pسzujwmQ +hhb~Lp>K Wmt[~9 мRa"M䰎% &)OKi{ɑ̘փ;ՍbBF){A}^$&@߇d,1Vi ӊb a[Rz͑Wn,L,:7 + +b=-tG;rJ&9 )~UK[]X\ |طzeU2ꮚNq5=N~PUMuV*ꔚlxyN/Y?'>sY2'<)-"!4f>wFdžW}>֯wG:+wIpų/W ,B {X^uZ3H*gy4V nfk %ZxRv'2zILaXBg(m^B +[^VKB6WeBʉk*TpH4W%Otfcu1 0Z6ekYWcAG9{CG^~dZE,V,l3_J@MUl:Vgʩ: Yj3S9Xu.4|M +ќ"dUB.bCFwçk1XIyn„!@xqWs;I%Kk7NliɪJ}bfmU-IVLgMϏ5Бuf!Ƌ'~E*#3S#&\|7ag &vmx|›8?OaH[oɵtR;[z2R.7|櫟۲?iDn#fA$o\krSj,@nfdh9-qeղrTZbqCV!|qb}ABoN9tߢ}qt %uM_,$aM̨sy&R7um26 /OpD-NxjAY*].,u-Y >Snefz# Z3*D+zeTͪgb TJ[HS68{Eԑ347]EG;yn>,Vd˛lo+[uS 1UOsz snX瀺 ~rzn^O J±3xχl䚷դֶOt>R':Twlf?(6',g"1 +_zz2i4o/؋vO˥A>/qo[.r^Ka$s|W߶F&:`W<ŏ{.=彴>|woe\id]cN0- ? #;7v}|dD縕*/<23p'bL]!j3R흸oU!YrGuT_|5|ccg|g>1pE_=7?a˳/Y}g~<ن1SqM)@~ +pw&ayr)N{,L<0|u=%B;^{hXug*pÔ_A sE\]$!WGHepnAC$g<@{| ?0 #1k3ZM"t'}?ON`M;i7]CMn<]vX۝(hzgSY_'G>[ 8 '8Z!+ +]-J5ݏml#W(Q&oy h~ +#: t 0 +endstream endobj 5398 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5399 0 obj <> endobj 5400 0 obj <> endobj 5401 0 obj <>/Border[0 0 0]/Rect[198.6 683.3 456.9 694.46]/Subtype/Link/Type/Annot>> endobj 5402 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 5403 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5404 0 obj <>stream +h[[q~_Ǚ !8`AvǞ˱FgSU]MR 0,fn_U7}u 禮{)=؅ Dp _ۿ4x9?3}=vwY?LdB4aiMS'^B/fc>L=seۛ M?%_`aoݡ&$#eٔ}1X"p$ɏ =G?@`96[sg5}t& +aANpݶHXfa\/E B5}T0{Aár@gx4 t'AǼF|B3k61nOSlFE Y.Bar8Mfj{3GjAMeJRJ4/J">@@J\&P\c8`$QVʮ͈"-IF~y<A(?'i !fYϫX[tL!2+˸> n;n&@R0B\AH5!hخ*AOR2z*QC7'&T&;5^UN,b%&*60a-(;ED3?Kᇖ.OvcQT|"Iza4r(؉R VԉyjCHL8>pLU1:hhZFz!dž8 ؼ߾M5!?~l \ 헧_;x};C}eؿ~Sc9ݵ/p7qlWOVkK6Duf!`k,`u'Rk\sGg(!QuӨYBF!SgفXV컴8Rw$XXq]uWV SN]IhvMaz7ǕgyY²ʣ=ulj-O̙x@A[0 kT,M`wl֨7x>43b\ݘm"75)!sRS@N1Pmv (cȕ<04urK2,fqࢁ4F@GY{VDGX\ 4pkiheԀ=0閗V ϋt-\ht\vсn60՛(ȊV@2! !`*K8 ܖ̖v΍ĨZ33A!U$H7|=q3)q .CQQ5ZVZD@h8_( ,0yYڬY+Ws\1'#LᑑLTTO&,ul, p RamxAt둑%%][Cmt dgD"/ZT&#͒ ++ /=&|Zq\:XqgpšR;Tg0.P 4[帢md%x,-.tVZ 4^x(mgZh9 68v&p,FS"y|;"É% ? JtBGI4Ѹ] dXzE_!`7,Ye΃`>1?gI5d.$:2Qm,UGF'<*I)%.G^Z֕LxVMhblg”eX\K(* Ѫjp)&\ P+%/[bL[Cb< $pñь BIe^^npO ЂkRBuxfUyf-oUO2[xC=T5iɑBM$cR4/IXҨ52e GY0Ĩpєve::QG|:"m'6f! ћft&*Q2s?:ٚUf2RvYMoy,Ƒa4c\xR[nx=Ѓv}cKVc/DiWJAD]OB+@ +9 'kmBvg%¢i=jîU=8ZG j!mvM:AO\Dlm()kS4nU͡uk5f)l(j#tZ /9 Qi^X(˛JF'R(Uu,-ǂj\T +`d6_M5Ps d l[!y} cij oelZqL,ӕ$'B(5luUmR}iJƗVf[Fe[AδyڭzJMD؏ a)9pm[K[AdvK(x`8Xj,ЪYjKRF.u[4>o@bygYb=euYQr/O(#w!O^*|7 2CO63s(HGfӴácIy(蚾V؏YM+GcC#Cq;W.&(W`@(cb:a5qZ"bU"1P_gӏ#T&Rn=TXc-sN=4`6/ph+N*(6lEZ[FV+n1LU܊k&}(VylIBtSJmJX +B*'{ŗW'Xδ ܳ)}lMЯUXSn6N g㗊fwAso4r- -0P5 +Lcs&=wO+)r%lgha ptԷ֍[^I7s^póciɮ83m=!|݊rF\4{zdlzpd[ɧA+.Ίn[3S).<BExr&E#]*g;r\^玻 |C3yK.mh9GBcw|Nv|wğOoFu}t/wv KH_6η/{j~MTgU/?_׷ 1/y+>vo Q暛tUi"*WOHk{|UrO{?p/x9;y>\0o!] HAgTq}7>S?Sii4$UFK*@;מ>k7Unu؈p^0}V77>tg-Je\-z}JiZq6~|٧*Va^qdd#0Q +%NAOX ~g2)9Zm)Y_,kun k&_ q82? #.ƾ~>'i0tAttrLC;q +endstream endobj 5405 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5406 0 obj <> endobj 5407 0 obj <> endobj 5408 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 5409 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5410 0 obj <>stream +hn_Gh}XͦhMV@>2nͅ4I(9sfm΍n87?aݧoN5w;ݨfwwշo:G?|hoBivW]svvWpu6vSlka9X:@8lTd3 ndxvvR]kq@S$M;vT0@R +XvD1NMB%*yu PiimؼWwW"B[ߵYJϢ] #oZ<31KT :aJG*zgi] jWyi :_.G) +R1@d򈼝hw#sҀt)P d!C4B  ,K\`0xa@ +]F#kxELeH5cs=&41Ӕ j%@7=T /L'1 k/D( >TdfK*f +ѮԬ{B)1 =W#d,9E% z:L>@Az24$Jyo3AL.S +@r'YJ)*Ȩ)A'WVeq0)0c/0RHƐqlS4D6J83#%Ϧk7gR dKVNȄDE8DT/=d% <IL,3FBksOX!/q:o3=Yz^i3w͸mvd\ +P@,#c=[Cq +j`/jL"XEKhhLcx p6=%@h[BpE$p- +L-Y<.bjsgM4aMJe-Dmw\^`bKEi =2tYRN5-q *r)HWYc^elǷr /;+(SYuq+g=fc_e/,e跒B``2N@7p=GXvwUK.#W9YWZvєaZgZS-*їlJv[ʙS!A&_ʊ,"W%cqU-&6 H0 +m-q0[2 B*#`PBHxk @AXSՕI,w+6 O*Bb.wk(.3bɿmٸKw+diSׂzhVIޤ#W F}o4 ;IHx(Um$,Rzz19q?0L[dR,k6+@PBm+ QN)c((dGi_NWJv7S+$iՆK %uɓ룘0$7B{3!?c\ǩmJQQfm+u3w&yV0=V]z[MǤ/[/reb(n2dKsH7^Z{z-W),Vkz~lYFOhkg%Xy;Tò1lS?< ?x-깛̮[dW$.N̴>"ԲZ5,4NV8^7U^㶎)z51kUVp.ot3%D!kfZ%~)c**m%R"u5뾄z[S^pG1IxVLԙaCĆ\OPx^!#?ZzFx>?<1~ 6jf۰zmsF\o'\Мc3R(H_e"4u^yė'mHԇ,p}'w${2E Sp?1)-W U~> +e/[6wYn ϫ5v]w^=qu:"7v#/|l!BY hw|=<7>)WqόYhjL31,0,šz~yOpr}O8Nl/ ~O͉p־+齰IGn@>_ ӹyz>7728O@9⍎)d6}eʊM04>^Q:! -9:Ō\ʢnf/WvGTl'n;7Ysf9y?'OI#TZGċ췠x=H4KA.0^Hn u\}ZiW,*1x |DGa}K!FrBKVW5Me ʯt) wxv/Q,c՗,b2P9TdZqwl|WSLejMN).%2bd48̋2\nZ&uRRJ̚z 0\b,z2]>oCrOz/ *E)gMAbrd,,A>EP\΍öB ~nLE]N0Y׃mI +|Fƴy:2[s<}Uvʟ1Il|iT&lL6I5hUoK2ɣt8x"iQe[-U$jkJInI7%cJ%}KL80[il(sk`E|R1B\4iwhfBI6~TJv\?!BOP'/][z3g +K)tVz']\] +.}.1Ջ jS +endstream endobj 5411 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5412 0 obj <> endobj 5413 0 obj <> endobj 5414 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 5415 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5416 0 obj <>stream +h޼Z[o[~ׯ8yɶ@> vII /X"ptxo8r@SV&|Hkr^kgLbjЪ/nw0ҕz4ì1:Y t! `|f<:efz +Qqڤ&aCJqt_)vHzN6ziW"t 3P1jj;_ J8PDnRN(zqwLW?QY2RIKk6￟>@K%ִ.%jFo=bG|{㧇w_>=Og?>3!U,h>0jJITH=W_.ىXʆˆZ(Jy k- (Y!/`HPփ7-<5.䚈T +s([W(5sPYqr{kDVZ^U oЂ A"j'D2C "FCR,I`c!-4OEߐ#HX?F0NM9z0Bvp"-b0QHaXF4+21@{BJ TV8Q3L) +Њaux+X. +扖cuX5/ PC.sL_WB@rgۉ%OۧʒwMt%ZD/ĚmV7UcnJ#/ؚD +E F3UYq$K'YeaTTlkp9wѤbZ1pnNvX &VKo0e(R,w|0'㽆ÊJX|2FnB>|>Q^mxWe}[_%K~Aͬak[ c{?QH|;ۓQti&Ʉc] ҩmݽzrF*#[MБE1:C6ZEک-F'Z,OO@dD, |A)8m)3#T(uNUPPq%RfKSpY) Bq&  3nI\G8p̕,jWGC +KT$vD<Ɩxĸ5p^A 0!n' Doz_A>R&KSMָΞɺqg.K@A=ub zrNboS//O|O +D`H|R(#3&ʞ`^xp>\: w8αN|v˜ E: +M#P<:䨫Vlj67CO_nƝ9,J +!C'%bKܫdـ -: $;$tfk^B0/ِKSp9.}Qzybȧr%#o*ਡx9UKtћ>CYqr\S1WmHao#9%-J}"͜)K>wֈs D JY5Fkk LYZLqy.O¤%Sp`^vU'Y rg5bPxp5XZMj ɝS| +HQBO>66 'vOH:RP4Eɻ* KMnvv{8y4LT7)e%nkcgN)jKztgZ{=2R_̘mnQ AiɆMhÑl6mKjd +!/KKscRْ|/jD{O5Rr)(W\ΔJ|u>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5418 0 obj <> endobj 5419 0 obj <> endobj 5420 0 obj <> endobj 5421 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 5422 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5423 0 obj <>stream +hY[o~ׯࣼh/ U@Y-CXvT(Ү$ȿ﹐YQ}I`3gHIx>cݯ~/ox>M~ZNK#X>MA( "F'mRV,OxH9+\Rk|.t0=~q-022b.x ~C )SѢ^mzo +Ű$ۺRXxZg5<`1+Sd0\u&Lu2|>IP2"C'!9 bI7IQ!]P2YEYI}&q +X3/}F)xsd4+Ж fu#LA@9솯gM\2er$%Ԇ?u>J taVZ9F:ks؃&%hg +}r;7GXDwK&󹨂8u0 "D{bM>;AB[-Fj =3V:l&@9'(/>NRTt}i$D%Zk7kk iq%ev0C'\n#oR?tx3e4Ёh-e@(8 1 xȀj1cI$̖ Mbm- A6δWdʋ /فp̈)$>d;qudRФQp{MF`$&*A>4$<BHH<@0m`7 or2nG5oF6 LYq"uXpT +{'HjS{լzTVuZ}׽ +6mzQ}Ύ +=Tm<'Ƃ̱(@*&P 9iv] #*+rpOv,"i5Tv 3mR>N9P&*el4Y 5$zB^b!SAGʣ%i>?~`)Bp"ZЂuHpu2%9Pi@[%+/,5 uKFX ME75dI ׶Ra+ _vu~]KC_g48{]Uɢ=]% _tv6ۘGlSkNh/* GyKC*MU=˹ R+]h8o֬/ G!\Zpj)riC0oob1Pbtg6B%V b# a0 Ch*]}ހk@Yxa"S!q] (auęE; &*X>ȽB PUɴ'a 1⛝W!͗ƃfW#z>vIF(e.(Mdʥ`T s|sƜ +9 +\ڗln~Yq +K}Q~iqqrYq7`sYqJ71?|C{*Nu0(~,Ln8_6Ȃ\_Ⱖ65Ӷ[УhWa"6|TMm={c 1ouؕ.hzKyZ ?֣_1}m2wpZn78W;q>nL7^行U"? ZEݱSεpͼA3AeT@y~W} ]u=H;-fA䷃}9F׊WO_ X/Ri3Nq,(xWOޞOlNgވjͣ`OgzL6WÁEy,VǍ VuR|%piS7R<ԯw|\2ErB˴c-ox>\Vt<0g~߈͙=$Vgq~Wib&Ly Gݐ40i~qo]rmE|uRy;u1{z<\Z#֦ÇM[8a2k<k3jVc17 Iުˌ+9/AU4l8tVtnUR(i&IVzB}͞inleV3 +#V [aJ4?БRBN!^WZZ +endstream endobj 5424 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5425 0 obj <> endobj 5426 0 obj <> endobj 5427 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 5428 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5429 0 obj <>stream +h;Yo$y8 4]ww0ڕq p˘j]A>Yt 1rwۿt͛_?qۋ7?t/xsue:]^L:Sc7 .ź㻫=~f\tLڮCo׌hgxhfܮ 1evYnG_WZ"?h|FVr;_ÿ[ + Oy.n`W~`]G?ĭ#@pCR2]]1c[7MS4Mcw<\^xǡ8cHz9e@.>Zf2[dJo&>4S?Ύ΄X؛wOǗel3zJ3x6/]O#HA.L ZZZ8 ?_pxpx9#sπY?L}b<"mi$ n@k;aKw/mGmGmۛ ֺ\_`a7r {FXm@?XC=dS?1a_50g,=Nژ>Y;Dj[諦Fc@A0w9Am fiɎڄ&>xnj N=h8,CN? :/Aԟ#!>MC{?lcܞFW1h&g guRGzA -6":vEdk] +G,YObL& ˒:?zsAt$BEc!Pd{\4q%ꊝ߷.[N.V{E1#˜ES}vDJ%Df/O5 [XѯV*߭- $tozTKeMS#Jm{XXM] XLju5ffA fM Ǹ$-lY ioY  }Le 9nj+ vSPvs e=nj$..ߙ .!AZg4ӵaϲB~<}m :L -sHП*PʼnF4+ۭ&K`fsDoD9Ǩ(kgeks&)b{bU X+.(>Q{K,$tJ J*VeeƩV)' +ǽxm)]'օ6quRӚǣԒj/3k#vv:N|tXG[ESOd5HY1 k[F R8]QmИxhʟ,FJ㗤UJlD4gf=Jׄ*nԽ%sm$)3-|8Ǿ0NÌyM7hT F7KU*DLܦͲ˩GLX. 9=Bo%y8U&i:1r]ĕGHJ~2br+1 O'OIR/P/uvJnDB'<8՝m[:]9PmOyvʵ)k2QƜôuRIR!f9ٙ3pf.lmm\ 6#zV:Ji_ɴ s^*YDoԉM]a2%23CxykN s_5ד~jX+(}hY*} ^:[OCH3'(N +Go;'6e碈ߖ(r^Kf?vj]4oTd26n>W- ;5vz-6qI*[d'd P+͌#(מ:{_T0&MFbOrnuui{(401J=']OWymwueՏge ջ9XJ=+7А %r n`J%=t bWXp/RoWF[/GnG=wﺧ/>tf\f} ;";Q1LJ(遄aEdЊ|sVk[RizB'U Юg^ ޯ>a<>pZ>Isݣ,SF^ui__>Tbp /PljXWOP>KÎbvbGp@~;7A4+6 IZ{c_hɵ]i47⫞atϢs+V'9//<.}kMImU\{]mX\>>qHG}KaaJrX_OsQP(POrE8Z;)j89~/"=8ݟ3 +{6aFr5`~ga@6:ݻF2c5 &t0Zb`Hټݯ ^|\lD3F K/'73+81ܹapxSp8ex@)A=chޑX;ճ;w;bmVz兇>&h QUXz哧 c:*)ߕ]7L{H0A9,nn_fbekE|XXCí+'6!|zטw(Ϡ} ܘ*:=w[lMy)F߉k\ǩTݜrxČg2eG[XGGLƵ.cF]x|ar;ܐDw gf lzY舩 {GU%2^`wyȎjנ?ƛb|>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5431 0 obj <> endobj 5432 0 obj <> endobj 5433 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 5434 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5435 0 obj <>stream +h[n}߯$6~Ē !!ԚPR,9U3;\1E rRS]5{u8vW׿o7|{vyls翛7כk;զqH+lzaރ>k =G<Cy5up`bqk]8HSc='_6F+\xI bh31 4Z3ؽ1%E ,q]ǭ enqvm0LO L0yP֕RS)yxy&ZMڽhٷlʲϔqTJ}^ +er @Ui'=؅EhLA9WP] m|*etzn۷@ :hOh>k/Jܟ6W?>{wݛۏ{}C`p7>t>1!_!X,R" 7̀OV}3W1혶ʄPuC*.Jg'W=:ge|vVhy8Z.d $::Kڇ6GmheNG3٤ϝU`U>yj!:A1*Yz"2Ldǫ8X 6$)6mT6VE2L'(671o$FhKfl0A:)|,ÎF,#Ž=V/qHLVDq>5W9.%Z{AphJiF'cƆI!4d,ħN{Na{U7NzY&NB[FFȰ ^Grj^ 6o{/d̠{'n3Sæ#7iEtteN\V:'PL:޵j  Ers+J$Gv|yOggB6D:Z15k:!;EJe/k YژWS)kk}}"<QRfyc|Iq*JZ6hY +_P{!e.l-9>R}bu"hƍ_w/WI2Ð֥2?VNp,'|l@P5Ilu*\*][5k^4BVTB.u)#K̺. ͠PCĭ>cdӠIQk-68ɡhqU+̆Ynj(*h]]< +#Y9+eWZ+EPz.ɬҔBѴhk\ N3uk.V$BI19]@Ը~? /ߤB7qӟ Md{Dm]g,.643S5M"V_D[r3)mǘnV;ŀAFy(ӌTb`Q(0&&?w* +g>x?M/_m?+gI࿼.9 CůT~4Awn((pd(9̮0ُi ީרA(MJp,[drk֫ZYzbf zeUxw9һt&B`ƶJSG=%nB=!$ŹQΞrpXPKU]ɧQ_oˀOQ_u +A>/)?vAB?}I~,kqqϱ$'&3nbrdF^:ǖ&{;;q~C0r{ oaۯgtm偗%UqY\.իT);mtbX#lOgiԌѤjCJ}n7,f_ތYxejjh;+|[ZĤ[ N1+mNfyo~M)2Rmrv;kV`y6oZLҝ改`ZKWK#uoJf6If+Gqrqr*kr*-k?X&tIVk$5!Ϊl>@Hn(=LU(vNQƻwC9WFHߒl.S?zsC/C2Em}tN7k\Ylh7T>@%ULb:mt y ?f3[JLk4\g:3"NilN;?@qf ~!)O6ߙ rztxݝ]q\G{wLOdՉ _˰~H +endstream endobj 5436 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5437 0 obj <> endobj 5438 0 obj <> endobj 5439 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 5440 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5441 0 obj <>stream +hZYo[~篸Mg_(I ňNdE}6b[~rBxϬg2sqxmsv|<fjۙLLdcR1NE+ﵛv+=YOPhh&,.i1U4(m6Y+k_U"SJ^\#>r9mp7v/F=|0fy,.`U;a5$H8;Lm1Yp6T%z)|<)J)<=ݭ+U0?G騊q:wٽ{XOe, C#xFpd/(M2*7Ee? LPfW~{N RO:N0GTEXHᑚWkU(~"vD;2! `kK@yo0C08+#fCKHܒa"m?u i:WI 3LVї{ [שּׁD[hW 4䎀۪j6S͕$P6Xτ!eR0 -, > mx/S "Ghf.vn03-q3 BQnCV9OE:h4 +>6*R\'. HH!l 0yCj $nGp+oFrӇ2%^#yI~"MãѰC<JJtI a϶j*Hy 2FE|2'ăk'D"X 7tC!}@]MdP>aQΰI ii_#{teBBD([Ftxؽd\hS,_@|rxͧS _dT@Cy^p\@L<"y.XH04@Ӕ{ӕf}81RλP-u8 Gʵ1IS%,F٠Ҷ*XnmM +\fJ(_KiW +M7郔E>I~_gb:J:ؒ\m LAXY(e5G 'ՖSf5lS\8`lMm 9P\wflYܚ6wB+}vf{IF5M?EkJU]3-=Uhlb0Deo6Ml̓:bHԭS0NKH BHqѪ6ҿGP?svRm]zF jsQs +sQEl~Qr/BE LQ +@䛡"Rmz\` #)[{A ƣhZS!]5BOp0aaTІL/-J{F*˲&@ +8`)-Q1ҤT:H^V.-}Ŏ,454 z=[cLU_p?z^] GfvnI[rhv/QEe'fږ'oZ,f1K!6?s&8'Γ[,fݕj.p63^sȐg68KA5Ja)$ a{ @'Wyw,|ɽvQ)&XJnԒxxINjwT&x  LiaK WƣSgE/H<_`o~|Y5B6N*N 4\^m! N)YihŔ+]!'v/1F+ Y ˕zW'e>2Jk:2"i]i +IRAj++WU9쬔سV +oZ}&ۦV!.t +VuϮ Ӌ'>:TrY\:KMvq'2Y8VRd:{[pk] +FbH˃~QV,_lU[>Q-zG1LP +endstream endobj 5442 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5443 0 obj <> endobj 5444 0 obj <> endobj 5445 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 5446 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5447 0 obj <>stream +h;[渕+ |..1dz a Mt z΄=G"ɗꙐj,/>}~r>􏿼{￿~u73|WOOOv08@  !1iؾ+@;aCۮ]iфun8eO@؞"p&gmg}&7N1c0- +W5ctp)([m@ fefixKF<5LiFi=Z@i7~!B9 ;S#) 3:#b!#,71;\hjBR 6hJ+5|4۠&DGAK &>i>)п(({ + -FB;QRo~|͜$)~? >(ꁊ7)i`ONὲP1r/r)A8Q91-h*& {ݠC!A SaPBOnFg^JmSV<9^ -;2iPVkؔ+@!g9_D~DCP 4>R66o=xbpJ*p cljOSLGl픿?WßáLylL3f0t)ϼ 6>LZidM4VA*xsk;ˀl@΂XU?\ ;V$3!Ux 7GҳN'2pB"m|(}'loLϟ<%ހ " OA0.쵊UCWoy}W7ur/XJY+1߸ +̉ +c׈s$c&pbC4H1}, y,eXvi+i)Rس,aw$k*嗬P^@yً`nHRDF/< <ҚjFp5]|*'}ʼn'dƑ|ۺ,N#ȋ,4QhO5i=Jln&)ŹaQ.ai&@J w1f8j>u4dEAg3)*("U"a(t>EPG/]ڎ@WES循=uo5{kA>;SmgUi6 +Qkg=-*OQj +^WCjgJB5YD2 L1.>$&pf֗emHbT"6vJg٘F(?H*Aҧ5SV@$'lL RTGJÅ'dDF]Rn7mByO?=Rg"JBT^ؖ Pk,!MGOy ~cA}m~>6oClOIhm%^GZ&Ij|:eOH`Ϧ*gv7vIwO8Cpߵ)5NE^fN45ѹIqg‚Gs/$x4s>fKj9*v[ _rVycw5)!ڂz lEb;?\Ǚ$@gW9Ku 9#9U["QP7ha3e`!`dgu+Rް^Y"h[ iSb [r8 +'ܽiBSwB3)#:uH2w"ۺ-@Q2_{@ɜܢ2K+ +J +xF9[~48Ǚ2,|TN`%ܾNո@٩5 :Xcc9{seO[};B&Qe nve˩o|Ѭ9MI_3McU7U^ #Iqˎ &ioq(γD[o\T9co;RC*7DtDȅsz"*;? ލedbb'o"]CÛyx.'wPg3c_x]vw}٢;xP%^ih/sJw(t;mG[ڍ:J{N.{3˱­TIKJ]&|axd$4<~y˲_=k]OB 9Y7Eޢ#M'-kz3ŃzinMإωik̓j +7<ӧ׷83RM~hRҞ䫬|da(۬8m5Zt¬6-AWP])BTssϺ7O.Ou^%c+}t>Ҙ.]Jy4> +!\)ڴPg^&klQgMMwZuj6vb_Sռ?KgAJFΨL貱 OOlb<(X=ߧOXr=ηvz+x K撏cMa9~*;˶aS\m러+:AEjWKM\^N!c1tp+cRC04KWZ6*>xSS5jO K rjաfe:Ŧ`hzZQ9C5k|⪥kIdW mSnHjVSknjVӫfՇ>DXɗQ|vhlWMF.2=]ѬlYlԎaۺ·˿r᫤))))9P +endstream endobj 5448 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5449 0 obj <> endobj 5450 0 obj <> endobj 5451 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 5452 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5453 0 obj <>stream +h[KGrϯ-k*Y@.`x@-+cY]==|GFȬt>?w?>~~m7ww7wnr:-:\朧uc\n~;p}^?WS=ԺGrZvr5'7g?Vy*@uTχFz;I@S)qF|MR| +a%j/ F&@aN0k\a6$lL +0D\s!+y>.?44Dzu|r'\yv_\pdmto%+pe +iΞD !z< _ԬsppK7//o\veB f}7HD\jF:Dk:I {~?~zw}<]~1:%O?_` l7u*$?ܝ25N/{)**٥$N +TbyɞCM*\Sa s1Ra,/ 8/k+WV:S{ l\'_/w;f}S^Gw4C:8dZ*7bZ$90?LNa!!pO'zD炼{Z^F`y093Ĉ&3G&>gD`rrV1 +(! +}KDt.*uuN6$8k7K5γ-"1_! dӖhMhU WJ#'YeT] >2wX;'iYϮ.L!{ A1 g:B$9u~|7CVqiЀ-PO#UFԯk'4 .lhIUd١ޭx^{-GC <5}fj\3zαֱX +Qǥ\* v\ +14e^d?rڐx1&m< +^E{ gy3oć8qh+aIb8ӯŌO:Խ,$IU36%lK&\-%BTB'Uɐac(m)Q<4Sc]S6 ymx*p,|*[ +#ȾhWz<u*+Q)0q~UcN9QBGs]M$O*0vDtSME{7QqG{eVFZ\8Wθ2T܋E@`=[FQP," ccgϑmPuZG >=Ҭ`Tx*f4 +L$m(hC,hPaT!"s`J'"ո$l69/M.v;!I}7/r g]aaEOzj>hGZܝ2,]DVk!Quzuȳ4R1mlC*R&?ur IZG6Dւ+rj]-n;҆`. cqmcWԳ؛AZ]L,Mǩߟ "5g +;˃20+P-Pi'& +(Qftj'*蠟A?R88T9r\!R'\+=Dྚt8I}eX޲{|?/J`Q٪xVT"AkE5q s?NlPv1-R߃U@@KjjG36z΁}-#&!Ё J#)ȩ3;fJÞ1 #lNvu.Kʬs\Q7lw6ad,Y(ـ>V2a/1-#wڛqjIqh}u0)iH .;BUP;åȱlb &?廗E}+?5('q. s]CnS!]{J/kzbd X1{B3[kڄ.Rj(u:07%&wSB`d8NwܫWɕ-Mt4\˳+!cmƦo]{ؾ|xy~'kFDڌ 0{/*V$ҹS2o ș<6o͜ Xa[%oֳۙ́K:R2QֵYteYۉW-v^[ʹjJVpVqb4Rx>gn%^ ẀAYi.3w&WyMDqLL Xkn&ÚU{|0$bkO#eܹFTMBow@Oxl|p5Г*PC>̗зʲ]&wg[ my\r 7|ۯD.Y:nxb:Ioil;" +wkxoUG 6+2@,K&lǪGk8E 3Ure.~KムkȞ)ue3ɶ;W>aT|unki,[9A#? O/[ƕ.lkSmug^C)폰"5"~|`V?zN-"a&b+Uz I +_z> i}^f^B޶BCu+< %iԞqlLh tW54V V]':k.E]xYNoғ>+9:frCN}iW'dJrS7Ep@w) nm׿NPzXGTlEߙ?}P4ңq;(V,=cȇRq?n <*ͺvTrmܨKJɞ>R4٧hR{11xl,sl87>ĺ8%…r޵n'I]Ȓ}mv~Sh w94/3`3pbjK`A4mu`}nsJ* _˛&Rde e3>::e)lҤohp%Ȇ󂏷dppr2/du/\C0_pfaV|wh!K]k&O!0-m;\m-5ʵmˌ+ʧ3j_\+d Mc)sۚ?!`a m34[|eS3|ˍ}X= 4@>:)K9ȍ7̘$i$fm=o~k}\ ad~unzŹc+hjE9HK$GmZ!45Z:a UiskV&33~|x޼pS9צ ?sϊ~SPۇ@rJe;K\?0悵&~1?lޖxLu|emo-=ߺД `{ºg"Z_b .{+{|e˗WFx`Ð&Hck|9g’.З3^J=u[[BM@ek/Y\q <,3 {&|Zf;=X|_?<_};lT./?>8TE.0o%#Xpb7yNᔯL +endstream endobj 5454 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5455 0 obj <> endobj 5456 0 obj <> endobj 5457 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 5458 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5459 0 obj <>stream +h[Yo$~_яR7LuĶV"vnpFAkP!S +mRआ Bg@T)Ebވ2%2 01MʋIÑ%H#P\VqI?, B jC)P{W^VޏC~AKvȲGI_\* C2ׂ>1XJASt,?v$n$aaZXʆ?ؖlHMS9x@@IV&Y:$ld`oƀ[%I W lGC2rawMw߀B}R[[zEA?I 3Pmϼ“Mb!I^ 3BXj¸ +*mǰ{5@zNyT*2ba%LoG˓kLфB}]DeO5c7ul*AgZڌwݧΈɪ?]4 VYVsP.Ui7;n9׶On]3,PݟFણ1Y-ʴ$7eo{9ߔC4PQDcZETTQo@/e70svA^}Y=x緧Nӥ~/ۇwWwp?I-O;iw]w}znOM>y +T/}v*!;FJ^ N|sWV/)hqؐ"E/shn΅DmH qub +c!*!GDkO*^#d T겛TS5`)iGbK!-6ݗmV4\rb:YpSKTc? yʹ􆵩ʾ{m0ZRmaE^IUUV3BHB}?*:mfkH ⧹1ۧdL7zl=kqg1n&oD%w-z Zu}9F+2%E]J)3&Mc| g2lEvFSuFSM th,O}[MܯZ l)w`*^n;ll{E9_21,ޚ[V+^n|BœHO7RQB)ոFʞbRn8vqSlޘcêwbC㓳ޗ۪ Ե/ &<z46<"+|::}ᣈxj;z,[l9 2 +rS;tA v XнVd͚u6ϯL!a1D`9T@d-Q|M;-%M!,^!FI~ګ1ZGE #>ޱC+dklGp_ ˑ`4T<ǃ"2ko8k@ֺx*Y*Z;M @}n͓H d#`_d@Fe)։/?Bi5TRefp)V i!)(G}GqxhJ#UCž84ճpWU*ު +qjhy۷ƛ?"ۻqL^K0;:9s2t@+\DjXMhIh`Xj \7=:$ Q*UE83~us9{iy^8DhpֶTvY{ukvw/ZgmCžm!ֺY˒ms8*{i?2Rd[Zzmx3{IeaL?og;K/ys7V}$9 Fb2H\= s<f Hu -"1o+H}5>H0矱#4*GhxG8 pk@XxBOF tZiE܁#OW p'`{9F tD^ 0+{ +x?f2q}@N_ݝHCP#'R]{>o?73gJ]P,\'[@P>g{gWRFV[Co3M=QspȧtToyI3!T 2 &4%h>ڴ}|$*jn6˭̼>39ɭdrZR %晜3Jü.jF0WJ?CSΙRL;sCdɫ'`)afN`\L=V2XFjStqa\[2] 9 *.Hڙ楚[سmVIܺlM\'Ie DY=Oi &n`6?'2#FӤXSɹt]${e4$93G9 f5Zd^MxU~!_6m7=Y+'(As*7RO$j/dZBf;}^N*U#mk9v;"lMM-]D|ύPvlz<?(7 +6] 1 ӦjO;4fW+od0i&/%-=s7l\>^xWz?]@1sw]!ӹ#f]!%uwA|sO2|wk<_}*!SmݥzfW>Bt@te7f>^vyUnSungsMz봲W +endstream endobj 5460 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5461 0 obj <> endobj 5462 0 obj <> endobj 5463 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 5464 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5465 0 obj <>stream +hio$GE\Gv݅ X!{ydIȿut ;SǫzzWo=]^O..~^? f;`cc4z?4>ۍdpug/M t؅B5f>`˱{uC^#_if)agsׂOA;`"ťc7ΰLUHxpt4B.yD|O|y9O9û۳38.~cj-8:܉KTh,-3D -2A%};&16y`g``h,ovwon/Mn@VLf]G#HA!da'-o.}wonw8){Ci#fyYPH u9i /ÃhB΂LZ1-?NO`C0yp6;N8=3b;:jϮ탮!=yM+4f?6@y>`;vƌBlb-}8wi=f#ZH< VYgOC;qgb诀_ 8\s ySM7;&́ +表4\4d#MpM; ;R79h p ^8&>, JsLXs(+0jDݝ熳3 ]as60EhUɯAOhʨ:2uXd:'iYX .D![ p| +EzԝNUa ˝">;MŹ1dF!$QQwhu[Ē]zAȢӱ9ONPCxuijkJB,l7Kf0!ɣ[=TI' +@lT%|\RW2$Ir#Ȟ$!)7ʌJ9`z@ EoR'R^N]q dQYF GEBZEWWGKRv+^_D%QO@߼,rB܌C:5H?\lG%iJD?ϴg>(/XQ˦s4Q,TiAHL݉U^[᲼Fhw +5<ۋ⥦nxb6_/h|0|N9o| ]kY3jrz>Mђj|Xq>[= nL$,>KmeڬljK)/vj`^-<J#_ijE?xrw@u]x(f&ZO$21&iE ڎpIX0A&8Wzo^4dz`?#-;*a_u{Yn;CVH lO5A_ "SrlÁC8GΞ>RCAy'l %T14S8UT C"CxNO-bnmB_vlBVfDv]xAӈv΍xF ]4+Y~JDFE ~"ob '1fXUmw(!CY !(Jƿ.k9#dR.X &ş-e crkvqr:*^9FĖ@a܁٬ @}qQ|M?f/m;K |'e?\'.!r%)YLpSl|We +XC9`YkK/F$d,D:܁C+ t *c-vp2Vt4c. +(cO$ofh*624l\卑]+nv=[[ֹ7M&2E21ọ /VaUaFh( 1pe:)kz{>;{|n[><0' { )83d9DgZ^3DkPot:T-m>n_uM\|.75NQ@#;T"!ԫ} \xBE%%rF3wgX ěeR|-N3&z+i Od]Vnt¬YI-7KMgL%Ah +lR_)1aaoّ,89g)JE8:wh=ے.J<>&-S8#&eҊU_Y'B9$c){=UC +5BŬc[ה5,ղ3ߕkҊz3y8Ue"gH?q1Yc*l h7Ӯbv_#۸ځyN|2SzΟ@KQ%k[_R]5Dž)r3ǤrWeq}'H^1JY-Eͮ 1JWXySP)م7+Rc]A'usS"NJӧn?֨EM^D>-Zr(۷U28cZ@n"rLnJ5S߻lQc)+)z}属S8=jRFNCQ@a4WJX,\LU[F|Z!'Ɛlٿ 4S\5*FI\ݳwi'ճZSJe+)&ګa"fϳwTF`N= P-Ѱ1[8NdNÉ GU Sf٢ydKq<:[슫*pd%]0(0z¬Z}띰-|^ٕ`Ij(b5rU+]}&(ĵc OCaq>[qG~'e V]u}uC;R(Ρzeer?JY+k8bu$Օ)'FXTqdGiE;gm_|.Vpxq\(n^)2ΑAB׻&P~?o1?uK!jz?GwoRc~7779*@p>;7/O_Qs|fw>./?>?ǑV$oS[~S^ѩ6w_{_8ņ.M8 6]r"I n>UŒeo:)3rRtf)!d jaso>6 y [-B/E@W*D˻f\2_s7(,H]I X[Wů>zb~͸\d]JF6&J=ӥ/c +endstream endobj 5466 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5467 0 obj <> endobj 5468 0 obj <> endobj 5469 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 5470 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5471 0 obj <>stream +h[[o\~ׯ8r>:F<yh-libkHFHV"xԼź|Us_]۫?K \Zj>_1aFhdOb&^C8M6NS*ihH!vjTqy)W}Sq`{?mw4?2C=AjQQҹ +y+ +:@tigL,5`Coϛ ѤTFmRJhCJq|{q@v1鮽R_!+i~1I-+wعԉK7wzvwЦ(WjYяA0| ,va#ҠܨtpO0d pl:tcx0Z55][vX?~LJwn?ߝ0/~8}S\ ` \H 58 Si; lJٔsXi3ZnL&@ɎSTtN2j`Ra`.{SJپĺ59MI1emXUAjr9vJA ʗVFoIAA]޷}&l32Aґ0Tѣ׉;ւ*|1K"ʿ+[[?O;S&7$P}ш{5ՠ"딻;Ur@I r>A$(yUJ!Rձ +o#r)L,=h +Mv.pE9S^ [EB9ԲŨRȄ&ɤ| +ᧉSU;&=핇{5!Fi`Q {8̡܍-<™eaL ASPtUuAܛslf4ީ*eK句 FdEJfN=R.eʦ2g* _D~̆\6M_yl2{g A4'rKS?FtTlmTSN:Bn}VNQ^rJyli_vf@- -&8QPaF$Pwn+WT2q`φ``f\LIkk[+󈂜I`J-SB h-[¡8>=39-(sS7 ø 04T9^m`UދCxP/6) +7^ s^&|BZQNȥR3CT{D$Kmt;d| ;аNu< ZH*:Qגiʎ`uX]F,nʟ: ]#YF 6 +b& ¡zJ5y[*oTbWRӒ<J9AJLel4qm˵-v3spIkA)[$7 D`Idf=S-!׳<47Q.P.4ɭGS#cDa_X严RSll;2iO CjPwW1{!XZ4G(]T{WqR|9 T~ 9Un˜ȵm!z,nx+3E4XꔘbD*mST7v-Y9_ +Q=+6vz~wd,m=\8oƔ[o%Fh~Њdo^!rUVN0U~N:6ujl`$cxԧ7|pbMV#Xd/F%8}2Ry)]\2ظV[Jԍ̶1J=!+\*aĔpOeU\r)Oq9䮴*Ӯ' -y}Lc9/Ж.Wʮ6%TF42fVeR9 +PvH׍yU cDW47[Sg@5I؄s @ -n…yw*lk(i(i(^sPiLCY>X!vװG!3SHgS<]\DҧpeT wgi,^y%`78e4*AZ"T표 9.%3aE}<Ϧ<#a`a#;3xKb_ϳ{^z +n +\GÕiUxOg"/SD$]JƀHtU}n::o㔰n=xpsp`)jjUiOڝyH&)›7CQE%4!26]Tf͙$9KN'f`1B;G]mqHUjR'7ګ9T7V@@ fK%f:˩9dk--Z4%ڟ֩[ <g|wpd&=܊4V"ZZrJQt[#9cЎ [., [8b t:JKC5a_P Vy&`hó3e,i=q0؂X~9]{XcLldY2%#g0HU9h"kkpm-l3x<:uwQʀN.m"F\oʤIC$ukߥTza%b&hV%e:> "E;lTqq&9w8|j֩ r)u,د7cAjePMms0O}n44@yT\[~51?=M&3+x el|B#JOH}Xذ%0b Ќu e?aTÁ&3NWB +MdN.ۜ-`Q `gc5Ī2d,&ΩLJ7(;Y&L5J.e~=SaE:V|:-HPii0Lqneګf|N R~ 1D@N5d\ +^1iڠ>ZP md:4<7v<[OqcKVq-{t&7[ -{еĪ?^v-dNR،Zn8Bdt>.DP`W%<8\8 :Iwۇ'ߒWY}<Ŭ9/|p5WoK<"/ki!GeB ɑ8EWfr+.сFt@Cl|S0"!r2  rM[1D }_Xdk գՅg tU/|hL,>1<7bVfnB no,'|gEA儿^/^&+g̓e`S͓g:Hqۭ2'wX^ʑ!*&ZbI'晇6C m楛>;1۠~0}dZ7uK 63 iP^J:f^Tt AuGﰋS10 >P@ =`}B_j1 H 6ԅ +L[EߨfW8/"(pY!cЁ:yә`H'TFA(e<}o"ŝ Uk?N}V00җ#Ѩ‍-neN2%zu}mMJhyz̒0\xwv6_^:(u\ᕇ}v?h~ʎC/T:?_\eW#t[.ZS o\zcewç<Ŏj0c=~hqC_H~~)ntڡvaW|-Dw*KqpKwaJ޿\=> [G=:rS(^F 2.iaD]^wwϵpS[u}i> ݇k/>>{9i?X#0^ +endstream endobj 5472 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5473 0 obj <> endobj 5474 0 obj <> endobj 5475 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 5476 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5477 0 obj <>stream +h[o$_яj~by}m8`3]#ͮUXdg`5.WE^n~t4M|{{uQ׫onT࿱>w[;нàlww/W?87@5Oiz *biHMBٍTVqڪ]z?e*KTϻGzu=?hlo"Q;$xI+S9m3fL}UHF:r} :O}qjZfNyiO&m-20@8O\] GŮfǮacr\v~v}pdNetmn3JL\5x,t߸zԌ}pprҴͷOOOzPr>ty,MCe_=F b;7hu\fhGЈϧ症ñ{on_}w|hUb ^06V8~$1Uw풾tlR٤s @ֶM퇨/s7^PDeoRY~6ex\a,48hc){oR*k loT4V>2iU{-p jط9Au @fiQG.xrF(ܹw +*pO=h8 Ó5~* |_o ?':!wUY?tX:VO&DMǐ `?"tCo͹tP6鍢#UsX\~LecR:[j4,r UytXXjj 2(,C?ƒÃڋy +ȃՄ+x +p +R #DZ0'o첧eOv'tSa0'@ۢÎɳB)6~cyE|p$|} ל*f}~`@ݭҴG̜jTiOӤ o~m I@B IYwnt +cd`"d~c3m>PٝDB7NjL4QvJ@B2}|E:|@Wa@ (:M7iC<^Ȗg1Ҕ,xuTڋٱr(x(SB-EBR=f\YPWBy$KyǪi6:ÅKVX* Q@c. +?0c(MΥVgȇR4UXuEm<'Xyޗ=Щ.W8,WEFJBm+ cX%eW׺X6Dpi4&5I[Df#JNj)p"J`0) duk&O +@@ + :mgጫ<6.=H@ƝtM^|4J!H@dԢ1g44V߄4UXsi*N)V08P8%l

`ERpuNjM5P9t5 7wˈĖ-e6v#sKڥ\F?k? 5cRR%:&1N>;[%pE HB?q9)9T#ɪ"6l[+eC^;D1;jC _&&^y_6B6CfvP?O6=TQOw/! {G~ RP9*"[Ed6~t~~9=>Sa{9x=^秴ۤp*OϟKl!srL!5ݩO߿gD-᩻lmjx]im<ZM߽ABN!K==&}:NgiwJ83up^ð70Zz\ŰZb! !@2Y@鹥f Zv-~8) +i,H qI0'A!%Gii–,ǹ'k]· +n֔u5s\ G=2>.b<Z @,g&st;9r9Y7 /,lIZsxyX+; }lk[&[bI0QpMiU؄9=h޼PkֲnMYX…Tcx-jv/Ln؋|*F.E(ȇ.0"!ե]v5mSNP[K9y41矯%”MqS:Ⱋ"bww!ז#\`\f%1 F +&Ses}&)(]v7嫋Av8:aR;rϩXҏ[q5qfxJSr򜸫8}7Sڭp('EVIݥetPf@b/1LC2I\Ԩ]vih$"GN^/PD**.[# Vh;I",1 ? ߱ر2Rޤydl3sq=+HlKNDP5 +1F|-. |BBRx~tmr@(̀՞"=C۳5 JT j>NDKkjRRK(‘e6jrRpe2}sߚk"勭o=~lɎ=tE2e'\ur y4&z* #b +x^`Ui i$4,miy~%ϵkv &$ň{poZ-}͎L#]& mYnjt1=/wXz==wd&AqU(<ߠ'bC͕K8m3npRSF!40Xd1̛/&wSfXb(a,*\|o1NaW]ua&Ǣqj'|񂐱"NWS/\FjjgS^}}vz_C*e.oJjY?@CoM x5MdOdTt|">Z`f;skr]O+W}E<5բ<#n#^n2 h x8Y2jq"g(0ոEޑ[kW ~qy}$| 5qjRvah#f3j,tfx\I{b\=S.`8OD٭=,SS̆m2U/MZQ5aˮ-לU'$d'0v5ƴk0Yo^EʴW!3}//lˬ׿K⤜f syELM,ͮs[FN5aOOE_ϳ֖s{P9fqaa;ϥCVL<:vohiP4>?"6񫇗4b{,lJ臯/SiOa[ďRWʻHt[*r?;1D^\L[Pa9]c~q>H^ުËWzN >>u<ڻ|CkˇS,}|z:$1 ^7n;6 +Xt?!eo_hhw o~?m62~ >`2=>X{Ȁ7OM1MCq#+*nkL3m\٣!Rtmԏރlـ"#1z}$?Ï, Vٻb۹/6SL?~V,VYmK϶w_/_ ¡[ ` ~`+qLbaK'XLmuY&ҹo<:B)#ec\uHK7k]_%@ܿLOIj?05'>}uX۠ zM =M5S;n `>U7ͰB ~}/Z+Q&K`~̎u}{ڐOɬ91ֶ7. tkdԂ/*|(K/(YV6uj񯟦]Y۫?s?>:O7^00[;?㺗}nQ^/q؄TfXc8jUN sVoRc+F!م(Fqܸ6c"’4_fRn$=Za驽 L}a~iy6d]^ e|uj0]^/nZ0_/QI.N-ݲyS󥥝ƗЬ4ֵʳlߘjVevlmcmoaUUM])^xݪ}??N}_?p&V7d9_2 *Sf|r[*y[c7-*޿I&Gy[]s ۯw'v\Dɏ]Gr/zs +@)דBq̒_]VҸ?1WS:q v@Z7l AEŭq׵ljōb04aeV\|022_l +endstream endobj 5478 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5479 0 obj <> endobj 5480 0 obj <> endobj 5481 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 5482 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5483 0 obj <>stream +h;n$Ǒz$ t1c[|ya= %W^ՔhY` #2̼7i.wӲ|QOo?}r}vy}m&=]ߟ9I?lmRvLMofP=orI)APpw+o4 )_Ei5h=w)a /Ha4V́AB ò3D5Kg[:CK|v}$Rfi9O9.9B}&=Gd8gY,aq ,v~(}[.Y-ddі[ 3uWb~ k`3Ü&@&gmyJk'ο@LJIzjP_MO 3pqI A迹zw{CN\Tap䅞}$tfDlllfwF(Y% _ ^8XU0j`^IRYk7/cH1iq$R-CrY5Iz:PhK9Xd@CDV +bfo3$ M*ERs06ウiF?!g8S!>e?(wh3g /َȸ@l٠"ywS KjA5u2cWʀ2<325 xb-BԊDZZAkH^`ݚ'N#Gldof#IMDjiSx:_->Fh&aI~*G#C(J&8yPNԅ9G!K%, l,?غo^{)V3O5ˮ 27v /$]"AM(܋씱*aQBɲO*?FGOK9_:|C[~vׇ 6e@Öl[Zp7Ei04–<}ۯ-C#I<ϽYvs>V:ΝPg kbgv/$G")_{< CMrg}RupL?V m/[4œs<Χ 1qg Hs29"v!7 4=CzR]l4gfp%5 +qg҂s>'Dފ&$M"B\̋΄}#87e"@x*\|RJ &ˉݭ9,W`r_7[<w >g 3EUSHhw\mP( Q #Ssu{+Xc*sV]~j_#J6jTBr[ +7bYD]ˠЭCePC Z VFCۧ:DUL%:bcJ̓~7߿.Ve (*š2<&IZ-̝(wL + 8F j=]G[OBT +`j+^p +Jo(HY2nwnaEE-DG)H<ߍ0 +5rީR!t6WK Kw<[Е3 +/XQ뤩WeAHaE^Vz5Mf [ mxMpu;ٯ/aZ >l|gjY!.Y. jS1t%i|Gc*ְ,®ii7ICrt+wYܺkkNͪ!sJcfgCrx6փ+[Pu(vC}*% ^B喬~XAe/!?d>r fV̱e-ur3EoQrjEi7aKY.NL's'ɒZ1CUiѫ=@Ypv!++W:jGi;Rm})Z `%ku꼠L)Cy@}eB> +rbtkv u;xR—T:0LۺWSqhfRꦱ?0U*O*KTeNIr{3n +uF1HB?ƽ6vEp2}$@"նʭ ""cB/LJmq ˜f0`'F=ɰbpo];]u~u8><nM߾x}Fo{_ _H'd L4_ҦOgӿoOn(bˆ67ñvb!&/d*)G݈xg  [տC=Lc(D"j"h(MX>l GR` {-/E(dQ$vjo_۠f; .v|UV]=|ЧTGaqOz9dJO>Wwx~i@ZڴB٧OV袚Eb! H+(6\L{~dOy}b! cb'O,|L+B +~Ă$+ \}:.`G ;r)S3亝ӳ=ݙ;G5h3$\Ns>=3AOPܷ03MEimG{g"510= O/. m~w[O}Y:8mwWk@rH1N08qo׽>% ѩFrT;2vZ#8Z!@G8Z?OvۨWf6_&Σ%:HF +sW=!U *7CKκ;=jg3.gnLZZNuu=A+O,u ݛpOKe h- 66H_]'BNH0G'Gm&+ +X b}x:*@ ԖhXJ"vbFY|au[ by9J-F+iُk)u.,]-TCtiSpfu1SNA"[Jr.L87vy&W feGQ~}lQҠyKnVv(^J/>GgP0A52=?/Nμls0=iyTveƽpĕ#+WT۳r^W|{:B= .4c +endstream endobj 5484 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5485 0 obj <> endobj 5486 0 obj <> endobj 5487 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 5488 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5489 0 obj <>stream +hn_19}wbZĉy`Z (RH;쒢8,˙?^oz}|ͳ4}񟾕óGAGq/yGąGh%Qt ӟ[I?PP+Fj6rYi%R5˶U*Wk,Q韧AxUWD :0EaPN+e$Xez"~FZiS=q_¬ "l)2oݤiklHUp7-Q[rz! 1p;:?JXvFռ'|3Q26w2"N1ŐF!2g 7q7^ + D̠nVHŋ~{ 1.l ƞ\/gabXx[!KB’X.Bݲ-)~p#,سI&?媓˨;Ϣq;J҆(\ƘaT+ϿBCύpԈDlƶ rr&4oZZ|'8GVA]ҭW҆c9L {UtnGK@̍/ ! f "En$VSMdTz3^N1徠&A_\JMɳdHzD)m>yfq kL$XX?BYrɐq`eC v65 #K.u*,shV3T6$srpCf-+ &'70eBRsοan*v >(( XrWM:H~g>$Ѡ}wޱNŠk: | %|F4] .)!Z>g=NiEY 8$'7u!6jŐ +yD\,`h%Z}oB_uĶn8*(%pDreYb +bBW]{o0z+(I{vL!K|Z=wC˒Ag7veܬ&Nr+CiLSΎ}-r:Hd T&J$5xRbDEN+>;PȽ +B7ɻvsX#X _UtR䮨2Ⓟчf̸p떾i0%^ ȋx9Z*RZ`Mc'՜TO)-۷"USQv ZR"dMTn1%:I!.w'^#{YS޶-D\ag< x'\U9*D"P[Y!Աq[2sH!huPWDrƷNv[lY &笺yTk8Puc>2h57<yچ}&S1Mt=~BRxr fZ-5Y\`as +nG.bz^K} ݰasW/+b)]I3 @i+0 407/Ųq@ޝblX6|{SuZaiB5]SL:Ph[_SUlb/S>p U0"BI٘bg?i*bq >MiQ+UsS%AStgصs5$]xBxs{0 xG ݖP'%榒!v*ڞkh6 \Ԣ6!>TcXɔNdGJUlu+(9xtv%<;(:Ƈa n j + me,fy'nu tNU)oR&G/dzKC*8U#ΪE + Z + P)tg_Nv1&>[8a3g^[[P8`Ē਺4[#׾Ž>>+uj[3}g\TgvqN" $!2G k strry e 8>ueD_8C\7@J}@ ǖlrʏ@$W]=t t$(Vm=ߗa 3}u`tw`@SJN;h Z%ڢ(g plil9RHA=vrt}ǀŕL'qT3G9>d;%$eN=iSrou4ce wgf aQǻKyWmrDLTYv L7VG7 9/4KniþS[pf8 g*'dwEoGvdULʂ}2#jc9jd4W'W$q?{`^IϬ`ϛ>@{ߗu-O U(PhT@djӍp[B޴w} +wQGҮ~0nS]cxmM{f 01`nh3*<m\8:y^d9̈>;+ L6^M*MiLfۺZ>Q>Kc/}\Tegګ)< B+ F\0@'K%s/.,e/KTonAn0]T4]q2-FS_P҃$/NMud}.,՟HuQn H>R -4+~ݜabZZf"hy$=U8<,?F"ׅsda,_Y P4L>00 ;"db1PF=z}II ߀goK(oLk/bRx_Ł +endstream endobj 5490 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5491 0 obj <> endobj 5492 0 obj <> endobj 5493 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 5494 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5495 0 obj <>stream +h[Io#ɕWQ= *`n|h@v TRYq$`Э"cx^~x۟qqի ?p{1s&48G'7ܾ/ia=@.~Bq?M>OS0~~ +flȻt ,EMX>'ya%`{pwf| Ebp+ +-}:668t0t1?i?MvHa0Z704yx>^_ im7B}&}F}3zX̻MJK&`k,v܃X8s99 l|DqCAFcÇǗP8 2Lnؿ2a.)a3O7OOo_g}4{Ci  /,,l" <f?o);*;*ф um%(q>xpy4>8EKá֥ }Cj,́)gi}.ea\j`U}rrmO lUb@C8 &6 ͔if-xkFΥ< L#jy=Z |5ߐħ9 (;wch;Sf0}5|FEb#0;\x<5yb)PA-P RjJ3b ބH#2  xS)B–ɏ9RAgH^܆N#Gl5r ?]fNHX$~ RWWä37)JiOh6 *{tiybҊj7dua؂P 6,. '$fH-OhnFgHe*ñ̝=7-,C"Ps+)S)w-Uzám +%˱p|R iX|,|DEFx_ 8Cc0U`@Rpoq฻3sp??"zwA KX0z9D~IV.r=jc.vpy1\/{zOЂ>.I- +5KϏ< +UÁ{|!kzp[]6H^]np[^y#O^6X"ad +t$0xetIJLJɕ\fӪ :@jo#ս;?R陷~jEⓠbedԂ(xTgb ,ƀSDqۊ-/ fm=1. +0^-; M۳2 +qT[4ک載h~ h=Ex{?7n~ΐ-κCk+dNp3]-"OPR Yrؑd%3oL_vrSܸ3B;=]=Z:.*oO==/["<ٵU56vƐ49鋽{g[EC>!9: VyM;ƀO\+7mwWpf >@Xݟ-w<> ?d1 ;R6Z/;_ l}ZHhjUQ.JjVsr6PHr<ç;f% Ql[E741&YʬgM@OqTuUOø2:v+qD K3@~9YϟRx@>G)yRpw0 ^>gDx}ȵ 1Qޥ;B m Wdddɲd9|,*q4˜'ßL1#}3Y©D혈D&9__al^3@eK9wc)5 dml8b!;"̈́+Qٶ@|A{Aeg㮳thNW҂ǀlNGt +N4u_Г ZlH&W/ώBO7W~ ~~߲?WG _e^? ޫ67[:Ip Q0ro|U QL]3tm #]b* ;nMZMrO:%.+bߝsz֒ծ8&dX D`[Dx^B V;' [TrMjTK=z箄,AV$>aa38<gtJu`[b鲝ϰ:=oUrU7hAuAivJl[Ah&Itִ KRG07Z*`1A{nCvzb ɖsIL'ᾣESfIzФ(fB՞mP\E%CmfOd6itSL뮂ZB;g"PܫS"of[˓imǵ^Tp&e˴U3{^KֶɷuCm83l-`e}(`-a@4 [‘:+G b>9C\5 c!6H"?);s]ETbA6vr{zP4%c\w  +3G%qDwD; +ƫKMb>4-8M$vTUc8|IK㡂kXmSn&(#,O?_o 3 K:])4eDkU5B@DAgsOߗ3߰ꠢ^=j%۪s +zrSj@r:)d-݀? TWU2<\SKim0xcgj.qLhB8yw<,$>5DKc6mj5Ƌ}G/)μunԼjz]0og 4ح> Y$BHvXr\ W>qܽe \γq\/K%6vͶ1w3ܡ3b9YD#f@ VDbGTITI*]zkvŒgKS]R$|qE*r&0ma.]kӶC۝NAIJcZ +є_cۜAl/y1_^mz%v@UC4zD<@\P=/**.&{Hl#ZDV\_>waW݅򸱲*4*];9|'HgN٩Rrp(dv OzSwn[:oh5?XvrM\K64@rv3:x3$K[SijCo +b79\Ϊj[WTPUUVÃ1\_w~̛waqBD*t\X75)I-cloD[~LUsxJo5nޝE${eRƼms9a `ҙs*r@v^'CˠӫwƵ5)g︒3k:EIœ'Kt6C5CNy幑7]W»ţ +RC\?qDƋNkk! ܟ}#<^Oz7&#zuE=KzY'|RxUtxeF_N "m\|(6d0t^#mĂL#vW^[-h38SǶSm{48̳ԟ;9I~'LPO<[}E2B&ݢB^T]Qk9dWRfL;$!Vi&wuyg%o֚o[/4EegP EYs#䆔Kvn]BZRVlU"{nޮgډ&bKKdΕWѩ^G/hca]}K8%,$<{+k0|}Dvx>^_6sc7= L܏y1' p +ԇ[L߷yuu4-ҵ܊XWÊ +endstream endobj 5496 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5497 0 obj <> endobj 5498 0 obj <> endobj 5499 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 5500 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5501 0 obj <>stream +h[Kϯcb`z~b @ h2Xft XMb?a9~ﻛ~7çϟnw;|~qws<Ǘ:WP _16 3Z쾼5Gt8:B-$ЎUڶhz1:Omvh,ʳRX^v|yc>#5$+jEr~] b'eڲ|/ qn-'GVk olHAJ$LBN[D(r|Nz]=Фt)ۇrXBn}ÑM\n4b.6%2hnq ?VM5[z>GjӬqMo YXZ%d-{U:dWzI+-Ƹ‹ʻE Fd QQeجBh9˸S^Y@?knzmDT#eS'9 +\dL TYTAd˜S cF6mO>b#B~sy + +Q AV8Pl8pY `L:%z>OiI;4q>KtPyi!1;8a}7 r "GAi]`BUs;1p"!NjˠH|aGh>U#r<~9_l)JyiNi]Ԛ`(FpOQ )i 4Ț/|fug{]#{oqTMm7b/U-nhEX.?l V9HֲAoZp\4יCȿ2@2-LKQ{\I/C"O ׏1Y5rP^r׶BE./z2`fR^7=\qd$2Ɩ٣u"y:9nx钯^v0/'ň**^ +| Cӹ +M~BDU/Ss u%'Uлg Fbнr\Z\Ja#'vtҤGN? 6Ppຩ$w~Ŗ|;gǕ9sl1;-Kj^Sm¾{\Ԟ4|Λ*A[ypp:ȨavAUN!gy:zl#>;E՛y q·rώ#)]Pa5jtMBpA c6[J-ְl#h먒ؔب) 8$6ҚL7!o\{A)Q|Cnn-qa.70%Q"UorrCF]۳mu]npYCۭz/Wa eVYzܦdaW>y L^?.)ӅAtd`0֮\ iVz~- 2jm1y1nr&UZ6ndTIl7&|y+:ɷ//H&~NIJmף%k_q!pIj>a4/˜YI WVFAc[)q 3Pc"qUxEKi:փ@RGk+r4zYnu +pt ]uLEzRH~cO`Ƃ1r@ +UwGkGĵxkW[fmHk*ڐ +$*iU-Bݒ(x1omU\[r%W֖\nU!WA+-^[:+uCg[r!WV[WИkս' 3 }%g7ɾ` fV9| 4Z,|?WZ 5֍j>S ̬ +Tus@c*#S.;#Ű魸|5B7;kεCYcբmY3`LEOyiZ|WyaLMڧ"mU̓ +۹tܫ ]8)Jn^Mًv{їgOOgױbU0T\K0TX|P^Co8ZǏO?9yOJEҙH@k 蛐5X#Jf+-M!zpxoz} +P鲴Gb 66%  ̾djW>ɒ=hqF3mQO^E +endstream endobj 5502 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5503 0 obj <> endobj 5504 0 obj <> endobj 5505 0 obj <> endobj 5506 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 5507 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5508 0 obj <>stream +h[Y$~_Q0Mc%5A5C;77BU >k߈Y~P8g,VnCPA6e.u-ck,v܃LXmr94l% 2n|*O'&w<}~ibp:O 4EMނfoh3tݷyxOo?]0q|+]!`CE`U(~"Lm A딇Tq Z^lW tJGK@yAQlP1#p$TAd}i@)N1*Y08ըqS8 Qـ*`)y&HhK묂熡Ia_nʂ_WA mm_iAv*aB*:L;"gfrV(!ہM ,W9O&M:6h*>6xՑ25 * lSkB'mKyW9F=t/oÓѢNܶ̍r/7ʔ'AHܾV}h+DCݧd$0i6Lh;yMj6|cA$ +pR@d . g/̠-Ox(gئTm_ۯ 6wtel,Ή9lnd][ް)GBrO!"Sh[-67xGѡJ/BB"yXf-EC;g#LFr 1r3e#`U> 󴘤 f"u (0pbU (Lfa~WlcOp]D1Xqbwf"KU_tu+w$)tIiezƄ5k]Oٽ(t~87XWFh瞣d?")WŁ` t]șU׃CX?L;ifB~R aVnڰG0yFI%Wm!%]Blj|]d\1h{*:MmLz%ݜluoygMFAhͣ|q$ד}*Yeܝ!Q7kEzѸ/PзzNcs0\.^]جLݩAh;axaGOJu)ͿCihpQΛ^ m.q`~^TI}Fedrt7]Q*xFi9FB I*aIB1ӣd;La9?}̤3Ɯ +^. g7#9-9!oAspB!T/ml8yI97O&at6>m{8V~j"ٱΦ?|}AwWO?g~g&8B{BS(+dK.^\c•'Qe5ё-^rےFų)WyrU)'M:Nehiz^fWYH읹] M-\;s;pwfJ}Y&ݙ7@Z0%lWL`Wj|0(/~W|ݢhӏ ϻoft|qꘗSо^T2%5Uⴧf<-WP:f|"WèBmW ˗/g<e\˜h4N{Z(mn?E)<·1lc{1ĊƱ˷sC‰9sOґVkTG帀/IHmIRyn*>[0[[(Xvc,+^ tedC%P?TbdNF1m\q6O}z^tJ#!ENf/>~eg돣k{0ٷzc + ·n[l=\^ sQ _noMry:|酊o:x~~+CA{)AIlK?xZ6'd~' 5cd{y`=R@NvW͆EW +`7ZWC%up\gBIVAū׌+=^gr>a^%آGG`hQ:M /R2V3Ѐ?AX_F{U75FWѯ"?_A,>UO35J \Cr B l` ܊p 2l&d v&@l&>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5510 0 obj <> endobj 5511 0 obj <> endobj 5512 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 5513 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5514 0 obj <>stream +hي}mCTޙ4xkkYdtx%{ǙGuhh}#z󊌌;#R|a:o~ۋߟy7_>/nnd2-L69Ʃ,^,77yY.к͟|?&ak2ڡp\\vYvغ_~Zw.QSJ~vF"|by:\!lYp5{{ygty' ڧ%N/6S)s,B..s(~"}^IQQ&i,uK |ty6>DKˡ'$ɰQۀ~mX%2Llϵ +L/v50'l'89Yγ58lDANo;G$2(6k\MX BU9xnjfpX-4QE|*aBYD` A%ȷH\͠&4muRGzA -6uxhR*ŶY@ )AZK|Mj asvЙp; &hd(-FnٔtA/H'4t4LP)L!2'tDeN4/0~=+0id5cQOC$񠚨 sIB_ O8K~xÂ} w @ M Q'{to,K*в61Qe6R(X5IȾ%5pV +cW{F_@X? (8hD$n\}-[N틦{+ 7[nf{<o; =K9 q%Z'/'BoÀzC%+!EH*A 'O81%)+P?ЂF!0 !((+-!>isQ=x*GiB>s⮾ ,hYR炟QuOxPJ&5}<389uiQ8n><,X&q}K]zeϤLayRt6jL@*aԛF! +,aMg)(t#Db{߈{44I0h Q`L2ňSS 7O@ɘ‰/ +BG+d,pWGYhe׽AIi=+g̦:jrk]m.ȶ:R\L| _llnԙN%iV&adj{z|tr8̂ sCt5D +8.rԤ GW).'lVd#Pb:Npz14=6+ cxRwYP3uKP5ch8ƥp[ב 4-ibcp #QGTM*NmY< !L7CNr\${Yx4Be|LSD6ΉMK3z&Ss'Q'AmR K9QjqM? V2u|A8=fXN׀ z;w#P1D/w⫢ ]fBӲGaw7,%EilV5O3UCLi(*p|We֎hT-DL$t#I SQr4Lk}KZ*o\Ldypjb++\op{4 #Bnl7/ nxh+kq}qq`[+u; + uEL|;IA 9[Fb[=o^ p4 %%4sbQ$+r*5XWw[)ڄ~{DS׷ SMJVɄTCCslB ?vT7gzbtQ45$jF9ܷgU H1T*J$VuXmQwmcbȘ//ޢ']%a;<%vLc +폡^>ؕKF{|K"u" +m-&p|ߐ0+3>/--A[@Av#@屋[,z^z$/#t,2=cqFZwMz+^7 g+][qgg pOKҬpЬުD9(=爲CМI\wg99zO3LFc^=xP Hhv5l;Y{Gp +;rwWd <:W j/H(B/^Nū[ADSL|&1;֜S .ϵK2(xř^/nzoO%O_A>O`BH;w=T*iqn ~[1VcbNƶY\c\AON6/_iNvlWPJWu{5Ԕ֔ͺ绔FVއ{^k?Uڑivbe@8>Kq(9eǤu_:<\n~Vǁf&ajCj\sC͹/ӚbeϾ[ͪ, '5C;>br3Pxv;YP]޳u,H]Vj ?u($>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5516 0 obj <> endobj 5517 0 obj <> endobj 5518 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 5519 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5520 0 obj <>stream +h;ي\Iv6$>?~zO=<釟~&;=>?Ҕsbベ~xqqzAB٘-~a#4&z,VDÅ vf~OC?=X3#;C+f + / nf8=/,0S0C56s Km )Zlg9;ɰz6ᦠ .ivhc(n&̇u6a\awQoH?W 킫_At*qB1n.&NT;:#wfN(!M-wH + loi"(@$h%KV\l3<(S"&!& O)\8v7yvНp;MHQhgn;&n闇ٖ&AԛD~XQT}$yA/>8U*k3$3 +W nYzOgc#!צK9t=r3P& ^z'tᄞY'jDӲAFDʀ+ͨv};/'.Er|n,{^&QHUI]Rҗ s~mhҖօ(g/IбHjda.V =nBb}8e'.kGy%yfr].D-|/LV纑U|/ ̀ςYţw8I +S ⶎryo@<C3[U눞#ڑox>AZDz5E +)̖lSLehgԘ:!qם\a +e*dyvWJ9Y_]T\bvQxQ,3Om?(\L{o5D8wbqgr_o}| K? qRB6 xmLA!3=#@Y :!I'v-wwyXmrj2])x@6ܡK~[EgMl$\1BL :WS;LzI,Z1w۠ZĹ~\  ꀙuj\P2QlYIKW erIJyzpnltEIcR%@FF|IY/űtMOu569ځn$A>";T %:@_:ԧ_90\|^{OzQZg Er̫c:~d=!+,[n`GB~L5FH,/R* vOd4[c]\:L<ʏnZ:lzԳ,Pr=&mKgObQ'] z|bB6ض#iͻcQl9|?+FGea{pptX7U-&*T~uQ*}JMֺѲyۑ[d{=n?b8n-*גqZl_<Tӽ`ԗJm+yӾ޴ۗw<8BnY"s0w{I)hkAvk[$Cw];jϕ➽W7ݭ_S#m=+ݾPL}\ J a)-9* f=|6;+nNaCwx9kS<_Nἴ`= ; +>+ ]%:{[u3;['{c9[g{/~׶Gmm-ГCB\"C X >ߗ'F1s]""1t MG?[1UN[S{"2yo]<ʐ;g,EޫyOI8Ձy:p gu`12[3\ŨUOk [~qۗs蠚㷗.} R.FK9GN&BUkG%ܾxJSO]}~=Ҭ >).l_yز4[۪>VDP j)mIywT< p9(^ ]B\!ܶj& N+űK{pXtB7K5 󀷗~òG-5zSG"zdƚ2Z^KkXLct5-J ±Cj)5?~ cD)VoTjl_6@ne^)VuzR ̓u᫕NU4(zOz._*.铹|=sz/լ=20J]/Ǝլ5JlwPwKyN_1bx*=U*5;BVnMe1nf,&*05zRZ zVН[q*niw_9a,b6EATLsJ/N)쎊LK-VYՋAwv5&yƢћ֨MnC[S"ź VW4j( H`Wo j +ۺX+zA%$-̕gX 5V>]qo. ҋ?{}K% +c2jepec/~ ~uW!&D3Wmj^*b}]xLa_:m٬D+q=}TrX9G~!W+7t!G}h +@G-_7,PL +$H}߿5 /)q()8YYyuvL_bWJ$#[ +endstream endobj 5521 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5522 0 obj <> endobj 5523 0 obj <> endobj 5524 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 5525 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5526 0 obj <>stream +h[Yo~篘$w7 A <yXHAXߧ>fgI*vNNS]U]U>~8>MwO߿[/|qu?ǫ/nnnodۇ2-_lLsSYf7ݾZWW?ݞuo- 3i^&&`B3W3{|pu. 'vغ_nZw.I )%?T# >U\mp5(E==LX`e~z +C乸u]=P $ep  l]@E>8HrSٺR4TJ>_=\ xe.v;sSY/Ẻ \mReE!f _4)s ɄX~͗O߿i1O'Yiu5-,OjMaoFp^i{߼G8ټo>-qxpx6J&^< luvUd7< TwqLt$rie`:52U" O>L:}wp߹'.@)3Ě1UdI^*f"q]ha˾,ddvQZb (aMm2j@*#(RȸS[U9 6RTSs'#j !V]bF'\SeΥלhU`QALB=uN&v^iY#Qꭖ}q(PƑ^0 |R++Uu/9"rtj؄cD 5zB*sVi$-B`!HZ.Z'BhdLQc5GYz]*ۑG (XSTZ*- GY^kBN&)0$Vm/0UF{%dѤAtm1ㅩ'W mdD 4=hu2w6_&A$~1reƨD=6HW S]bۆܩ>2Hl61"r'$1i-#w=.0&t6N̝>✁ElL. +oJu>oeJ{iV #1q5]vEPƘr+S*gAGlSxZ̬}ի2N`O]:FT{0b:0l _8p #s=x MM&5!6 " HIª~qv)_h[V#FiH]杔uj`l@6TSaD\=3o{u{RUf/>-03pϪ# +Ly,FIC"rB֘v"=*"\(ކ,U1I&5 ,UYEeiEdTaVUv/H`7ݤ%0wtp=+RydnIPiB[N}^ܓc!a#rh㾏.sz95|w]ET=X1=({gOYSHm +iHA;&hQTH ). !i-X}VXqÙҾ~E<-gajmK͆2swu\.[S*YY]@"H%`Zk Êͱɒx< XJub +fNfq˰(P20W;sߜhvlFjÐ-ZS?r<ʞtx4Y!9t+m?,9o˨ʗ{ީn0TS0JOSoW$i|DK-4 T^YEyΩM>+1"Z>HxY_g*nϟ.=J_z kgT\*N1H*qFWG! InwpC\@ttS2܅Rpr R]ܥmwa%,wkp9Cw6N)}~ Ӆ\S9!it@~X_ qLs~4W=9<`l]^:<ٳ9wM +B RN@F3+ +弒r,˿hX 24ʠ84DK!`+T@J/ yH.|8/8d7[/AV u5Iʾ8I(+~>WZ01N>qIu~-ǗVrb}K4LWlINŪEܟ^l959Oc|'a] ?MJt985R;<<<I>I~S2eGs̪פz<<2jٳ ^`PXzXMϰEӍ* d@6#>a/ow3r "#^zHR=@#F!lkj E9#&6jgr./ϳzMy랺N֋K-+K(}TL"$.rG9JEm\a8Mڃ~@^RwD?ugF#s5R`vjM4)JUjס,Ұy쮣3y_KPxf' U #W(t}u %Z ܿPN e2J`]MB7)bžN$Jlk +endstream endobj 5527 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5528 0 obj <> endobj 5529 0 obj <> endobj 5530 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 5531 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5532 0 obj <>stream +h[Yo~_ Y Ed(u>u5e^gţ\˿/r7^<;l.;p)I?qJ+o6zzQZ0@q>k >^yh ]eKp"ilLOM%`y GF@i}4i,20讏 ejqA].&i;%x<)J)E2Zu%;c3pPKɠxyeiwon#2Z`PY O0;i!Tnog(0e "ÇV9*AV+ +2i8i_ a}aP#t"x3&r@偀/,|˻e'B} FX% R6"sAqzDz ,ƫ ^{$'59k4ջkr* +er[v*{[@l!+l>e;nsW`n| {4wv }.k콁,sGI+3\pGk.pf-睃Dihc-6[+A G)\>4k5M ̘OnlLlޚLJ ~}vh/ gB۹7߭AJG3&˝j /PB$ɐ ;HI%ӍMZJ8RZeW[C5l!Wi/{iu\uW /9g骞u$9h#sIzsNRMmֳ>KR +%\XG~s0+.X=}V(] +: +ȘdIq:ܷcnڂz/3 30.tYm;jYu77yt%ъv +W36 GVo%R-UaLJMMga#(zl`-չиcTփߴ,^g(}Č^Ҏ22!j Zn㓤M}(}'L^=a'O,'}|Me dV A3rY d,,(5YPp d+~45^]R儷&'@ʪ\1.'U9FQFکvEJ@ܕ=[Pܕ=Q0hjffe(ܑ,(E wfQ,iFi1 +]Y<3QYW8SytxW_ +8Hu d9,g O, W,RG+ 9˻CHWZPʷGX:R#!&~>Gvmn6l*1 $泀)G)'k Q'ƥQ >#l{zl'5:uNHeT5l)}FR xIsy2d0I.]W"?x{4Wt02Wx +endstream endobj 5533 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5534 0 obj <> endobj 5535 0 obj <> endobj 5536 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 5537 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5538 0 obj <>stream +hZo ߿bXy-Pv>}7vIz#)i43IR#XϐJIIۇ۫pyyq7zyiv_vpaĿ<UCsvrWp8:gqhq{eՉI:M{*V^lce;t?"yMW " 6a)DjؓV)f\Yuy[| NN_ }oihQ$*a4|TFa,Lc`(.#Svr4CCAs9vW tF))ر)zv!7P/2E ΐjdÿH4Y%7 +mdo?y0\|L1P8hna7޿5F&0Ka_ "7X?<{sݫw-ƾx. wLi6cIi=B."ѯv{3*e/e2l{X{mEn']nF0;0> +&`X :FAdLK#K N*0U4cPoI6Z +&Iphjw@F2Č&UU>V  V8x;meă@3#BH.x;'۹؋4hMdKӰR iuQ5 +;(C<%XXęH j\by@7 qDp09|l։p1U&ɡFA ;S:G+b,?6xjo7L?H(lq(1g5XBg0BI+AXkao?Hr?-m޳\Tj [˰|hsTX "SM@&0{ٹT-_C)BQ`YY1z^k(Vyr&tgN*zXT.*a}߀J?Խk@RjE + i2z4FuRh&<8sQs[I~_j8y;NEZy,#erWs0<ߛ[Pl.o59ڦ1Wjd,QLбKQI#Hl趜v/J7H^]o)v$F \6sFpiZ +?!O5=>[o7"p WΣ\CG l"J9K%!w2GvqVӣްxO-hxAm'<},MՔŞySe$e "gNc ~D߳޺8PUy^ݦM)pVX:b+lbsۈ7lQ4S +^} }(槺i/7^7A EuJ̖KEvK #t TpJmK_rI~WX趲z'+T8#ʾٶW?AegfCvB$!ٺ3^CsMw-aKA3@R +i4m<7r^Y#4Da)LGE3mg*oK)-uzKtƝBnG~awhYl?tM-NU*6ۀ&m&7uAMW1wz>1Q$s +7bKOes ͋ EyʉelI/r/+5I+0榌Nڷ|D~*]E(Z16$1JER;iq=:qQf6xdɓtY%EӇ4Nb̍温Z₤gVi?xܓ/⤑Y:hMxeБjeb4W>|$,Mu#ɔ8r׼v3sr65Zàe=<55eo^Ѫ$xE𢡄]k56.q8@``ٰk.[„$:|k'.H7g3S(Yh(vK#R7gCe>Bh]{6zsÞн/_ Ǧ:ꖩl}(aHv椑D$PUYyK0XZxl^[ji-fe6g3,$3v2glff3_ f3͖l}lRhٮMZw(bQOXٳ5'=3^ZVSS\vU@5ojʱb/ HBkJpyIʮEDw9OrXq|>Scؼ?=}̑el {=؀yrP(vTcMw‚Lkri^r1(wYnD9+qJ_( +endstream endobj 5539 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5540 0 obj <> endobj 5541 0 obj <> endobj 5542 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 5543 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5544 0 obj <>stream +hWۊ7}гa4*KC6!<!x|o '#MmIpZ|c &x囉vb5 ;;صBdyUgܬ粌Є]}^/\dJxPVںR>a 뼏F{6_OhOܾ|f7V4p.Ќu(`?1L*7]]!)[NYrk`b/Qg^ٌXR4ٺ`apo.)88?@V5I2/=b0{f(`Qi~ˇvU{kS< }>VT8 :2Fp*aM>0N0oG'nEJ::0Hm`lPlwimuI_'Z[WwooxJP;F>+3.&ԗ݆g&. +|`rA (žD-k" Ji + #i\e'> ŽD91 6q/!`N:+r㤩$v,]o+q5^]T]g|O:}JtQzCǶAsQ`m#/1wAleE=iO5t#;3 LF;(f1}teBn #2# lن*eXصlj[ (ő/0_B!3 +6nyq oPrp?k pZy5?#􎋔S|.NEa7bRNf^~RVQ=߱J3=ʻhg:M{/S +AnhؠOjN쇽({&Ke"Mp3{lX@]O}z6$06,i̮tm5R=ۉ=OҾR Nlh6+Mkh߿tcNڍW֢6+ :]SĠCmQVM>é6Μ\xZq}$BvmqQUM'7e¡ЛzS(F@vKA̾@M#43MupulB72 sl3t(0&n ΨO 6|\\@.7/*ll T]Cs +endstream endobj 5545 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5546 0 obj <> endobj 5547 0 obj <> endobj 5548 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 5549 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5550 0 obj <>stream +h;َ7v+y[pF 2Iyjw +$kF8,$K-4l-r6?p}}u_7?~|o_?ϧonNW77z) +Ka~HjPvywRÏ󨔆[7wk +_.g7|#`%ix9N+赥knͿ&;&/("m6 +ք#,/gM͸K{8H3b +#Ά,X&@,0u#pwJ!RGa464RÇ)sA՘C3Xp=;u\fo/7K=:&Qpv6շi f#Z[jiT85s??ywÛ}g?*fFCP~"DR}(~w:5mn[n[nQ;g:hd`TQ/! w9CI?5XqkNS5hpC~#hQ\FSގ +jfQJ-tԶ\Cs;2kk)|H0O{  o_/Ȯ8-.xPP|F1":buNa(5O>1\c_^gW + }'novGv z-lh HB5SIse@! 2nmg5B3A,0]pcP-G<`̠g=% +8$YhC+C0L3S(y(rAp%zB +γB܊JXL^m u&5*KPD L +61O]!p- -Y5:KzMEГb QQWާ)ص(7ܼrlʑE ɿi F&1A%A9mMx;oW0"ӈjch6U&bbbؚguZ<% +{x0V<=¼}};kY;aZ2ANq$c`6{=̰P_ ŚP(4Du\L#:\ +ڱ +#S'U:U4@OhުU*!C!uN3J(ջr9yVsي̉"&iRcs)Cq|`-ʖF{;_ڌCD\CuX-++ G!L fFM]zP^Wex_Ezؐ{bGp;p/QPBQ($nhݗrζbeתFyEKld%S!PL9+}yϛR 2Tv>*z6'*J cwxqɲ9>LBj^蠼#|TBqz +נՔ@ˉ0Iz4`9 4*Ì27[eq MJ2Ke2&$.ċ<^aVD>/)JaTi"J PWJU8Qjɦə ]Hq-(e[+ 17\QO B1. @@9,sf.g̞י=;J1vE-O\t>adpћ;@uUNfYcW3}{l$1*S5Ŝ7L:og?xˆlOˆ0(;ZÛ Yn՘p%q 0PKZ[p+qZpSŜ4T4/"jjŨN +?)vV,V~s{:rJ)nF "31 Z`دlI=Hhl hcfeGrj r!7BZtrZ]bMMC4$!Qd7( tM*O8)reisf2JvRZfnȥH:8۴Zd`>U[g%7ǯRA>rb!plk$Ι@SEsMB꓄^puyOg$>ZW@ĥ*W=Cd(\5O!J6d\Y،>qstʖwn-lZq`k|UgI"ϴ`cR,?IԋOgNoHF(mnŦ\vz;?*GS 5*@yoཙQHJ_ڷc(3*3geXD҅6+̪j2ݍC'"ffd\d`e#EۍnS \?mN<*̷^nkR ^%RrnL @ {2yOOf<@cp~ Py@b"c=Y\cg_XU=%b+[Ӆf\)m]J 9,ٙHNef+gxl[:u>eatowsY\vդӡI&}yu>*׸ÃӠG<(H{ SLS3c[4tȟC4i۟P6匸S\wܭq%;-G`*cr;Fe_c|qOq$p/K})6U{se|R8?R.s6Kۄv/osۜ{*\,zAy";vfL^Őf4jG)u5 .|y.dUmyBD[E{^/+ꥠz]unsJ$##J+73'I\9ݵ+T?Hy1V1up\gWv_Gj +[IJZݖ8x?ʬeAk+UӔ<04kuGg7ލj䫙BNFȈcj{O\t1#o)|PRkI0k٩Ķ01-1jE +G +$Ih +O+C'b5?7W?E+ 9 flfd9͹mCyiCSsМ<4P\Nyk4cܹ9ݜ_|Sqٴ"@|졫'ϟTٯS>xt>׆k;RwY ~K<}f_NW:ѻrT[+N*3/:?]VлYd:\*'7]ZA e𸇚G} J~ /h3gnS*ǹa`5W9;V?}ғ?5Cׇ߬}]VnXH>)sg3z:2֣uyGnH>d_sww,\<-+O7ck/Zljnոܓōnk`(Y@x\їPfasŊ\Eܫ8`^*1Do&Ͼ&]ڐj@K,\\DŽ+lWBR +g(`WtR +8T +0T +뎽R@R@4th)X) wY/`Oh52~97wՖ8w߿:]7w뫛_zoo_<^7̏@Υ111D5f'&48Zd"}d{(فEe;c5umKޣc|CQ_ЫDޏTS R1``1Wfoݛ? jX"-K!2w0ԡ.c!2{p`zPHHV?wa_&0;%| +-ܡ'@ | _U!@ր@P F+ o@ཊMZKw6DsY$ ZCoJ$,- f q.lasf&΍`m7Ѯ'Z63|$ZG^>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5552 0 obj <> endobj 5553 0 obj <> endobj 5554 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 5555 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5556 0 obj <>stream +h[[ܶ~_$ E4};.|Il'E}ύ5ĩzD}"+)7^ W?<uWWO.O3vfݕath㐒]pr7 ?ia:B꿻.y=M>OS0{𣇓!@4)8 +7K? Q@Lp|߉_wf]rwhՑ!{i*h,0 + \>{tjgd|}&;$1y+ OͳN(di,v3Fg2ѾUX˔>A2ֺ1Ah,B;TXmR ={n0Η8!1fX/z7\|Dt|>HO3yFo} +l0{3?ٓ/^yٻ7Ϗ8T!4:BPfnL" ǗN4Bڎڎv4!H{oab-?N/W#\G#Hg)Zgt&CGlGGmcCCXS1dX|nma}igl'oo̘,gHmkՌ7q )}my1" 0͔ibsmB&-1xnjL#zq- p|[o!~HO% h;;}P/NϨHjĻA39+Mh!݁N LwtT +L:8 fo#QtPVJ]/!MHGi,ЉO Gx@b7l?ĺ_0[)0܌ΰN Qm_/ ba/ ҷBΉP Z26iעr5hRhY}#&?6 + <k]@)PD%eyo9 +3 R\jE&$t:Jvɹ+@V9q0g@u|I2=Vp:Dw46p4; *frA93sasGƒ/,r# s?3޳Qnj3;:l R" +@qY8^w Ӂ[*. 'zQĉi'tMvg(dn=8i%$ShˇDfdCXʤ` hHJ3p+p u |:?|Np[KOذxju%^?YoII))ڟ!-9gk]'I߲ޑcw$Xm^I+.%XZ}~ vX\rоGהZF2 ; OY,sxpF[ .EOr9 Hw Kk@# Mc8Es֯~=ɦi͒qgY8ACFx 4o 1h|.A#tkKhvU?4X 1XF`.Vad0R+A#==hǠys*SOohS N=Z屍C1>ƲgZgerQ|i݊IPf"o~鞌a<] +gN I2x br{$0.Hғ"YteNaͲ&Sڒ0- =&4e铓PylMn"}xG6{3y@كM#E{ԙ![eZw`T'Sx|;JwVeuAXB<)LY)p]Vkp Oqeage"l$uw`΋iY^.QG8N*.|ͅӚ{a0˂A±]]]vgS . E5e<[bg}*&.b&٩-?zyy@v'xJSMq'L +fs{e3;}|.wW)iC|~6[%5\]pamcM}ce4CLru*ݣ!Xe^+飑LN," XOFMW?Қh]B^~;c~ܺBםy&6t +Qj0:QRZ<5 +~x:Rsk)wr-7iς̢OIPtmd͊< f F׹aSL5|Rn}׳h/co0 hSv_{,8$S.3y8XXӗ}r.&( ʠ"2*ຠ j:պ"( ʠ"2*ຠ jsU * +.( ʠ"2 +5>ʠ"2*ຠ * +.(Xla8\q- FkXp5W\ ƂoDqO.>ê3N.:êoOP;_N,&:W xm~WW7p- T W_qMfCaT \k j,@p*YanVO}UaU[k_ xmfqBʩ C HLjĕ Nҭr6;2=Q<=O:'\vJe>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5558 0 obj <> endobj 5559 0 obj <> endobj 5560 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 5561 0 obj <>/Border[0 0 0]/Rect[162.3 596.24 265.08 607.4]/Subtype/Link/Type/Annot>> endobj 5562 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5563 0 obj <>stream +hZ[o\~_G;ryaF6 + $ j+*$+fHˮJv\ +C3΍3CofxTo?_ow~x~jzqnjw*_Q.&*Fv+ޭKjwiiafRakcjρ=CW 뚼*2 *%>WYڥܮ]4nd/N%V m^Ɛ0Jˬ$:: +^T97,bUbvƩ?6+|)EiJdzujVxFwu,gSLWzD%vV.] +:;;G'$):rS6hf7_?w68r[VZCw]Q aU(-ne'Ç7:|fbhJ&,UXIe~vFBJ΋k kXk]|DdpCQgm)B7Mt3!ՙ G/:6a+OϜ\҅c:RfMgNPomNflY/Z=0 dqr; 3eaP\ փ/uTe ց*``4N80<1b{;b#~Bhqw@}?u3! .O~E `mupړxE[Y3V&Pxu-F# +hVp yDw|Btix; ]&p4;pX!>-a˛('%ah`y8qF'.DEdGo5yM cr|Zq IhI%5:d1, 7dko$Ol`$-q%N5R+c:|'WbH_Pmis+ >\Ǫ6j(E(,_O|r0Ϥ g Ŋ_'y%~ϵ`^-8o4 @o%N.sa@ZbLpтa0NǩՏׯWnuŸeju|E2׭hEHxtw9<,-KܖjG}CYkhhBtVpCF #OȞ5t)LI 94jj4A2&q6M +mјv*JSP*YqEWIQPQؙ6(0#0`w=v'㔨bk 2Vxl(CbY'>I揙9%{^J%</1a#ѹi +0z,׭ p!nɈ)>3:T!@|<[:1ʶHz͒Mjx$ĝgK<7e8·}nX] +Krznd Zt)%c$?̧e`ѡr QH;Itc4y2t l'RdC8b=:]c1j 9`/|My>[) e V7Î78VY{QI4_,R-: Ip;$*Vf^Zs^H^皲USKKt{Q8}i%[zTU}ĔTTԚ7&HDjz\_EP[Q0Afp}k3BBƧ;Xl_ߌ_#reۮ:f +]_ZuHm>go~J~or57om<. dHNUr '\{$(3)K_w76X0=UA`qt,WSf:#V>dsq$٢}>8ߺ5;&?6ȷ9|ur#8;߯2#&2It$=IO]=q'u*&LtQ3D3m|u!tBMPs=vf~t Qq֌T\wj==GKTťOhygY A̲+~ da*2_Q=ݙlEvO9'h8ga +h-2:G8MPK3E6;~Ƀ}ӌOŧ{b_w0oRwjQJ)BSx*_[fE+&ENM'$5`y}UnX/: +kI +endstream endobj 5564 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5565 0 obj <> endobj 5566 0 obj <> endobj 5567 0 obj <> endobj 5568 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5569 0 obj <>stream +hެZ[o\~_BJ4BIvKiXWSYdfx9F=^jzE;Y/8u(yf8y'ł̱* SUa1tq]=)+vpv-"iuf|0" 2hTV8E5!<fbC(LgeC^R!s!x0狧gy־V o땫uU5^1oeO+TR[eU)i*`S}6.ĮNH*hXiA׃nt Vvٶ/, EGاTʧ┺e13=M$/.*B6$|o@D\*\K>Ƚ'u-0/Y9QCTZWQw$،_̶lP҂ ٤'>kNk{ k'mQ" Jw*i\VBrHR5_:KӐ2Fm־9x,9^zw4*(JnÈ.,\R]9u0mKۯr}VLjXۥI^\J;wRؑYKӡx%cSJƿm6ƟЗyerW_]" 4&{ӦSw*'O}\͈gB35~t6x#h\<Ku7y̎Y Y##3#:>33؇e}*b㌄zUt)bX MGC^I606;%Ara=CEQ$䷑0Mt4c m0!YEӡf"uP>,'_VK>`+K]bꫡ@rpJ bs'7wZξg?ov8=Bwwns]IJ^߂#c=rexxqt.4z:nIIH$J:`2oϘ83@':P,D:զ{W&m~ +6ĻL-OY`oPI5J#tܥ0|e$4xK,Ͼ~r At>;7< +j#J~!>]uh"M3J- +H @+8i*pjX|:”StEP(xw@S+7]4^{x+v۫nyIOS"n+Vk*8Ä^lޣZo^ L\oovkqzBDPEboΔ v2 TSQ9f%|6u)d3g$ C'z#k[H4_I3=ÃI4!8y]juC+Х.LA.r[D!o8D `@v1R=ڽ~jt( fjHR3XRSY]^o>g^,THT)8LNDž,8X7l ^3/(_*# +endstream endobj 5570 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5571 0 obj <> endobj 5572 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv50981V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5573 0 obj <> endobj 5574 0 obj <> endobj 5575 0 obj <> endobj 5576 0 obj <> endobj 5577 0 obj <> endobj 5578 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5579 0 obj <>stream +hެ[Kni5M`v>$Y #ɮ Cav)֋ŞYŪ7}㣛|WeyǏw0/Z,!^\i֭#B;Uju;5'7W칹9/c^:c럏izwHn@S)q+Q i"-P\oG 8e"<@Wxϖ57 O᪐[ևi;O~:>Z9Z3L߁ιw湘a;>y,u +iΞd }ABq?Ը)nN@M8t44;O~mz[ao}{+~nmmzб3)UzoON/~o_O0t K˒7T+PG|98֘>p;`;`.%n|#uk(Њ:5 yÛT +[;l;؊C;&xLs6/sa[UY.el{pU7_`1`#8w`'n?& 8A4a< vSFi Úg=ۃ!#?f9 wU3=.v]Qs[F-ŠY&4jhˠ@CD w8ڍ@G[Vhlk6qmkb5YJb&t૽0@c󚊾@rh.VE@M.5S+Lͮ&W&%ㄒǰ#'<(/si1Υ.eb/Κ&<䆿|f٧CDxؚm'̵|=x< M o #:2D4Y;RBE\ԡZ;JC6u1TJ+ZW{: ~mr}c{SjhW`7<0Է{ Vk٨ʱ ͷP`̻{] PrH1,j/DFx-5<(4Ba:y~+g[{do؏È^~#51-%v72[F [ bB Etnh 2E6Ѓq{8Q4N FtF@,\$Edwf&L}j/6 ]イP$4;|$^ {khjR-/Zgkd4,.µ5T54>y3 ?'M6@9i^M'9u픛uDSa74x#o|pOgǠZGdh; Ow2H8̉$F&zWHJ`@ QA%Am&%߶Y|:18 %'pbEI~Sh ?ǔ7A/MAn&lP,Tŧ幑jK 22QidIBXB=.&3j‹;z2`lպUw4TyfK.Y_X{OEӦxˑ3proiJ]{U{v0|'|!-B@ `C4T?ĢO+(f! p4OӀ +k[^7^H=~ZȖwG[ 35cdp1ȁ qBx[(slt{n/Җ X_a y!5H&a_8oP$4f(5Y"Wk \̡l1HCc},,7 +Sǐ8x<98 mKGIvQVBBi[L[!)M5:jnmŭ{-+8nq5 6 +}ٹ{*wJÛڨ;9 K7 +&6٪[u:\aL $`8 Q> 3:bŝ i#8s=ҭ--7K2Q(W'\5x7h'p[ 'rQ^h]ef6]ZYda;̖,&Mk%5.3=]{o*CM,7IdIm}- aɚ((S{s6aТreb\73G-KN^ $e[3.ČVb̓1e싄m[qK ţ <*̜VO}(vS[X#ڴ/w+-:]wJ+풭ŴC@<]Ђ%tDI~ޝdwT +Yu:IOxnjfZiM݈ijj= 5ďފŊxBNKCTHp䓺''.6e>fؾϩH*cm=U8ݝ6nW. GK^|ߜNxB# jwԜ~[5 +UGPrE{( +h8> 9uPzڱoH#NԕeJrU|[ /za)_kygْ:+-Xgb|crrK %$=Gz܉0g:E~y^*9}r=Xyu(RxxuZΧE(Pա{!=[e8Թj{%Dz>&a~T+^xeJپ= X`(Q'[M +}H4 ZU^T,W5Q +Zʲ-;Pc_nIX!]ec~jψ!sC`VB}5:HE.Xltb,QMMGm;^iWyD7V-ԷQͮTwwk-n9b₣\G+񅕳d^Je{ӁVAЏ›s!R4rb j\;XH "jgYo<,r/25:n*^9ԋ!.d{G+lm(GkHoNC{%!GI*DXfhdYA2H|-}'QjQ9=fڴ-\Tu1a}εɰgM|Qt=+mk@E`WݿsĄ{X|_^_ Dh ;RP?"A\"Q3fNWBT$o7*p{Q_?cjW?Kb$)ӥU&wMU)uwm/2ȶe9%fzݧz}DV"=۲ +0^4 +endstream endobj 5580 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5581 0 obj <> endobj 5582 0 obj <> endobj 5583 0 obj <> endobj 5584 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5585 0 obj <>stream +h[[o~?b&w@(VJIOl%fg}) +#:Y^ù|{EӶROyۻ>^{{W}?x;(\l:Lvx{a&O:8^ i峛doJ[ФޒU۪l#(t2pR$q" +mi>*:>-DQe7LR2i01*&E&MʨF' :cuEM*0͘Li&>u3U܄w0BL^+4܆b}֔9G)mG˿aIe lϼqAGc?c qdﰧUɖB\A +`@#T1.Fe~,aeaO\l$<5kr*&N6e4(Xh*OCqLX ^ѽDhԚ7cн W˺,SzA[~mOS B}jdo<'cU0S-ë +cg_LS.Q֔=5:L e1]]yhsOT_tAܛ荖%^jƢL-˖3X+$6x|<~)t~XFRq0!tSVKDv>{QBB |T8(-S]smc}/r,^ ^sk~$t$"),p\<ʞBΝcgus& 7C<q_]YXUa< Ir~xwh,2] )?ݼn?Yp~8rF-)6XIY-N8QHv7wpw6#YpTҕ)Ll]}76H*}EEߟr~~r +:}p;z3'~/+VNA)*٠A*-],s|%dO^b~b`/{`~*ED ;zYQg>cY!S-Qkh0;#"V 튄7hV̉G׽\e;Eqp2=-!rz-D$Db10F0?)DSfgu"(S|,.)hO.N.5λDM誫uR͕&O,:&ГY, +&G(h O&zV4™iG}IeFhdo/+l &RC{k9ŧ>vhw5H5C=jc"pea%b~pOڋ}hk"8ۋ ZΙ5Caw١C9 v)ii E0bR^3D:ۡ&x ati98H">=vj᩵S0u :7軀A]\k3 L0 v~w#[aEލ*{Nuٺ z;:ъŇZ0_kVtѨ]CK}&3C{Jޥ57Q\S4~TFHB)IqHD͖3,Ml]d6 x8[6[%*S9326 9Dj[efC3L d 0qOJ}F~P1ܡcQ*;rE匣½e PhhIjbanp䫆xLVSTEx4:6k!suCwdo`DK㖪Ye8U4y";`5FOMDXVZfg r # +=t0mU^*+= λ) ';gXU+ 9\u8#aFPZ@-Z!ڴ>_XٜyT]zHYDԔaՑԱӑj!%0*5Z݇hWwPcw;VDw?a3p9WH{ +Aՠ,eSbX3^s +}T9vgZr +8,0RH[jׄ!/4:yve;QF{['Dy*P*z.gO;q8ҋ[%km8#f8]36+qFLo|9B!za#(؂  ! vx(Tn=K>8`$SB3W@sbN \I<)O O8lX0ScuhpŲxŨb1Cf$ov%ϖ9 +>~'>'$q|m3!3 Җo*O[,CŇ!Bʞ:r҈=ˮh)SjsDhEKE9v:Rm.$_R-i\0ҫt+'c) +9eDQ C%״I nhwli( !DBq6ㅵAܚQR0,šzpf+,fnwWDwŘ7qhw wl̚k^GEtK⇅=]a*cD|>GBwksDkA92\%a{opP?$Ym%M/+NҾM:Nj +9Zkm| fS*7Gˮfž9X,+ qc5cοgW#0TY2u-ގR(_ͷ a2i=k+2$&.C h0"'S6_6^^M'ٮE:-';u̖IJ6U |4-W gV? ]q/ .MinxŶÐhSs7$Gs +nGU\iee2z +=% .2 ;~NQcw(-WxӣАnKZ,JiNidq`Gͺ0pp3@UJ5%%TLn{PIT〘瑳&1m!Bρ29>pZR/8期kZKfr?,eũoyV !D.( b˘ͧ%e|YLy4†?r㪸cRۃZK956*XTvV +;ా|f2nwPnj7ZNTX{q<g:20P9T H:_g.K/}[$k]h)xj)8rZiDH>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5587 0 obj <> endobj 5588 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31076V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5589 0 obj <> endobj 5590 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31077V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5591 0 obj <> endobj 5592 0 obj <> endobj 5593 0 obj <> endobj 5594 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5595 0 obj <>stream +h޴[[\~_qG#/U~NmZLŕj]JfD 鑕n٣$A>ն9;bso(_551LV_>yj+up/5cfsZ 07-ֆf=W{]*,8$DY~u2nc˲:_k]֐k-Okuо58aݼU֣zҌ$uuqM [ vM]KX\5Zl\k|Own ]5nMw +Y]aޱb-;a5?<>pO߿=.r3[M Iˇ#4R*?]Yc mn1r~Z}\XM P# V5[IOQ}`ޤ֧Ǟ\^k(=-lYSF@SF 3LogDyg=j "0Szz|5\d=$ Aj'^chK +JIi#PQ#:ո^f{]ڵx̸nVl%(C)輥 5\Y*bK(+X{j R{ #uq0j]M-OW +:7D4$}I$aY3l o`k\Dh6\Hٔxؚ֚Y,4 olS\'e4ޑ-FZԬ޶%$9?R{7*}չX)KZrj{T&)T,v|ӆ i\ą_|-{[|N0Nܮ ͭY sz z |aD`6p`lMu KH0V Yh۱fo䛡GF/1)) nָD 넚K.#d؃Bٛ6Pu'$3$gڹ %ɹLbJt风M8YGvC`Y卬bitx$>{$>U૒6A"݄EBUGJA:A Ƞ.0]dGX]ʅ5(o OW9s8nrOVT&ҸD{f] ɥZd| D5óoj=ނy?t0CA`T&EQHԊ)< !| L=eorGlE,keiZ st̳܂0 /3ѳ +RtyL'$oc9*p7},- xD} VAf)11#5Naxn&8/.Wh\WYFѝĩc=hqmw ï;(Ijn]|g;)snYBAQ,b{/&hL!@"-CnoCVyHyyn5GBä6kLM wFEW;;lT}ħQunh u +'$ghݭ^a5?V0%JvBmsqf7}ӍXUA3n9Q2D󤛅TEpm Nb sr k29Rp9 +efVpØƂ$r cҽR1ǽ틩coy[K[|Պ7܋̀դ#]~wRZs VkPQܳb|05qi/{u'}"x8$|w"f|hj1BFn@Dp.f;,rʃKY6s@aM|1=L&qH(Bakǐ dP}T,0O/\Hz*b/ޢS2TVcA I$o5.͐pÅ5n>dqpoշXl/"7 W J h: ω +L߻Ƿ A=7uZiO+rǯH sM08Z|{|/c;:d[}?>.ÏM<9"6ۻg4[X?qe 7!9du`+nNЧSk93h%O > w D7y$tSe̛,JUe|\7y$-ld &O0t ӶAfJ2:mA9 [S t)l ::!~Q춀a׶ksƏ6oҶ->SZU^]n҃0$y[@҃04i[@9#wo bmt'6Vz)@껾U=~.PȌ +py I/nmMXEw- `ซmr>.@cڡS~GCa#{t첧^ڄìm<9<8(muŗ^ v͢60[%S]4kg2E/>TG%SUdR.i¯I fJ0& j(u,(:x<)C 1D7Պ*)|62bLI7c "`Xɕ"Lґ u}+D&x_ŴfS1(v"Rځ~V +pM>׋@9ns6/dh. 3x66L]%(X5 /i`t{`z]x8ʀ13~D_xָ6Ql"^A؝bIfnl +:DmiGgB*٩*Svtlh]tQA NY\ʔf B҃`Iv[`ľ dRuq"l29m v+~JBMmANLNAԼ-h 0Sz&m vqz\v-h S"l2Z@0|E*(`ZX䬿 %7F$>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5597 0 obj <> endobj 5598 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31078V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5599 0 obj <> endobj 5600 0 obj <> endobj 5601 0 obj <> endobj 5602 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5603 0 obj <>stream +hZ[o\7~_qF%dP7-E:utu#3qEFfH$EO/izvaw~8ë]1%N +d\Rbfg;c-prmSk]}|&d rw¸;V +K|ls1}h# pRg>=?w름/ʓq2NjjVDZUSjZNB58c/H уzltr +:vQ9CD2$Rqhp@9-ðK4y:3O.C2|{w &L}|Lm&Y7S}6L %7&ew޼{ssqq:-Lj>N6No-h +6&ΚPxRL {ŝw067'`ll&|Cye:99c`]dLSۆ/XK>_\R7(2ö׹;ʕ5,B 4q9g\A-2s,u9AOG&fiQD?}83Wuy]d[8yc(|Ke/,nPv +654:z@a} ʼne=>Nc< +/[y+V`+\H쁺ޡ.^$dˏ]rjb8&eoS?{..[$ Џ6bYV~؝z餎PLjJA)2rdKETM BHF0$c)O*1+pғM+#L'WRv26$ -d!u$ 28 DZݝ]]^,)Z4uL_8e ز-)g'>o>A&=@Wi _zwu~J&}/]MWŜߜ}o/q=JW׷5AYj 0, M CM* 㓺 ~Չ|$ްn >WWHn[mx=%-\z F ^yv&I6r6Z3y\8#RFs \v"JH\of-+ڬޮ^6z\V8Or[r j +o %V(*-A)q^ +)n VFܷQ冪l+xaW^-A+)aGxaL>.l ]YWXWt`ێE446,jrK$%aܗ\`tr +Wp)p n +x|NΟ +=MɈ"/IT$Zϸ{AGHѾu96ګ L"5Z<;ܷ~'ǀyFF0F1pKpv&>u(Tv'q9ǟ}r8{ s~f;war^żצpz;*Jl{fDM[϶s|gY^7xh0$Lp|zl#CV _W7ff/8C]؋noc6 Ek*DJTB19Dy<ށe"WPiyF2JSÝ2{.a 2qzt  a\,Ͱ~(Pf<*CͰwFS̏h`tRKdQފSL%EZ4Bb[BPS~Dxh m-h ,L[Jlx*۹US.mܚv.\\z$عxjBHki;S%[\Xq'RK \7VdRNӪu +-4V堂I՗6?HO)`bVGsAa4pUbEQ߅NVBV?6x3 ҧU]]ϽKEG: T8j&Zy#bqjJhU=| Ih\E~f2!)H̙ AD98yY592@ +endstream endobj 5604 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5605 0 obj <> endobj 5606 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31079V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5607 0 obj <> endobj 5608 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31080V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5609 0 obj <> endobj 5610 0 obj <> endobj 5611 0 obj <> endobj 5612 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5613 0 obj <>stream +hZ[o\E~_я㕦Z X-x8IUcUOUWsř߮>ۮ[-ؾZe/  Ad%SVlVJ^mRډ'JY +KQSf8>\Nky扖6dGÖ_ik*22`6W6ՓU!QC ;0PˈAL0gԼ/kx0ki>VU:7 M9s)|]@ʈ46,9'qsz.9֧ 㰜<./2B484䢗YÚHΐx7:M҃,&AGB{Mݻ7)gKQWjht7,* aEbS1z؟^8_\^]\ h b'*;͂vQv8<Zeȕ(vW<|%}v]C+nXFf9/Ԑ.lF`x9F|,# q W7uĀ*((K +dp`W9i!YzWI™4- Ŀ  #~XO v0oF5#f[`-f@5-mêJ5ֱF!HQؼq2+k +N1&dQLզlLN&cs1صlEBǂ4̊+s$FH*`IHwC^H9'$z%ThǧOP}jVck'| "^z?.Kޓ,b6YQ.RVj{ƭeLv#S]Z:?bYZgP"ò3TkH[yR~M)~SsYWSH":4 z5R7Oŀ?AT\Puy`Q4RF(*JJ'ek9Ih5_)i+œE)9OΣy>Be=Wwlfә(ܗ`V:!7f%B*alWk.o4\IFWazB-dz'RݧЕS^<Ճ'u͆uF讛aV56M0+e6;yDr4&R=烟8E% +̨*8۷c]X0wR)BT#guwu2@AzIE͸_u?1fK=z Z+0|_AŢT]mڥ}d Fajר +52:bSU& 3 _#>M5BOJT%X"#L9d%DDTq8v28f!DP\M/άFEKNur+PR+j`TFhEmJi><;e= +D ͜\olv A׻ ,8z{DE5FIiB']rz -&04}=iwϾgK>*)G/n^?T>z.,"zxIo~+^_zť,$&h/a3qNb‰O]qfe랊4C"2Ăh_! +u~-i&^eYP_40}4~>)P45*g&ρR8i&doN'GsP:-hF/᝟D<AڨA[l(0g]j=qҕH tZucv#砹:.p6DJak/p֦ڪH I Iz>hN%P¡ Q<(Lֳ @D6B +ϡ/0;t1CZE^Zc=ězʿM`"sށ>hbuZ(:.(* cj37M7wLߔ=L=A8/_xaV[#;ua%Bn&߻}m8sJt:*{*㧽w,&xpΛ ލ7(R~mAl B;{ z11p"zXt?d>U#)38?Vdm ^??C$[>Nt߻swc(@ @On"%'u7BTxD9t7t71ݍ`͘qZmR,5,.T +)7-8a&Ȓ/0fQPRI!Zʸq~Y2c&BMNA(q}2OB9D?em +4)<-pUfz94}WHvsYr/쳐|C>DY7}RZijЂѬL-WZTn'@]8P:jfg4znH}r^Z=5O&".p(R]^T8zMn.ŦP#ʥ^Vu| m|Cg_b"?diñ9mjm!Z g/׶d^ŠCcI_!9Ԅp]Fkk}>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5615 0 obj <> endobj 5616 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31081V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5617 0 obj <> endobj 5618 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31082V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5619 0 obj <> endobj 5620 0 obj <> endobj 5621 0 obj <> endobj 5622 0 obj <> endobj 5623 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5624 0 obj <>stream +h޴[[oǕ~GriR,d-&ypZeiˡ.:uBnx.~s,zyk?.V]n~PۋU)#*7\|WxS;F:Ԕ5~~},ͱTusv?4 +)3Z/OGN{O/o.we؜󲺘sZ/.[]haK0$2?vČH >byD>]Y͆/`~Ri05ȑC.5-`grIMO?qyZGu}O |HIkcOP +nWF/O~&r@&F>e_:Gb,X-jmjE]X!/^cԝj+,ڦK=&G&A7h k*4h);$36]}'OARbvps,f&hq)ZE91R/a=0 +qF`" +k@G+;FC!hW ?6# +#6&*3SW)RKXDaϬwj.b3tm Ee+VP~d=ꚱ(WsY"Ɏ|q?QQWWOvkH|[(X> JMiL"SY7Ζ+c)kH!ʣ1U3n)nCimQ:#8&iV"+{sOY3I"/auXWVa#& =:jxz)'e"qSOvY_Ԝ}#).F`KB:XX&V}ЅKNd ܺ.¡1;B4&3ҞfsC=p E>)M{86HlKc}(QE݊d 167PtPT7ZiˡD:n|Dt:a.76мU ٞ`m7+ep_bm:T6'5s х#;"Vu>}|9(>?]#߷)Emq{וd,^ċ5> s)45sô' fx +$a':vS {~׽nr7L1]qP0O0~ʓP`R{5Ⱦ5e|2J _ l*![B?.LsV5NF1.e<Ċ8X*xF|W<-k[%݉{ G*3M/i~l MVb?%gAYVC>-̹LC]>XM K6N +d~yhΈDYkg,Kd\jJɇxi.0d/Ji5RTj;1k {(g%iֺR1Om( 6f~S af?.KzFuE nM(^vR tg)9uzWԥq'vM&'K]iQ鈨2uG~4wSjW(Q'}39J؟vǴSOYR6.P=W V@HZ: ._{{/?]pyՌDKiDt|Nt6A9poE͵\Gi?LZ1Xݴ3ْNo0=d\ƊkZ^ 9LOm5@K]6MЍs+0ǸK|n 8AY Tgh5=X" +^,!8ezhWxO$8.WgAn":{o~6kO(cYwXZ~x7n1y'2%eckq>o$ 4UIRzqxdbC'~hjSL4+OOt*piFA2ʼ mй܈@}^#F sANevyse/.`75_IY \'(Ě]^n?/I˿)Zm@ +Eq":E?QO?\oRgQ EE_V>.Ҟ_H?TgZm8le^6Poh7mD` + ̰92C2lȈ IC~M<ÿt<:@ +)Et*SLNU4ukF;2@ZeL}&S%3/-!Eof*@Q5J97˭,Ĩ7uj]:m]0[/xHoܦ줛i,^aM&WɆbAM:b +;;ErIӦ^M.=_˽#) +ITʽc2|wm]Ȳ{ǜ6uv" +LY]P&n ʺmh6Od6pNʽc|tc\Qp/N0&m[a,tQV +BW)u;wsvSgc #KqKns;#ǒZPG]~==8FBwk .40^L-Vǯ c†ff Z)V4rQMbBOA"}QHU&(BT ļl.5)8*Jί +uC)=#甚g<)*wR"}t`#O JQ"x~5@Md1:O\~s_(hz}S"KvreO.!u]~e|<w~{UϠ"B:$sM־̄a:BS!sQ{/F[ta.:7#?09O72K#lD_۩63MiY),epg@sdE>fTl?xc1 b=am~ Ԏ'` +endstream endobj 5625 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5626 0 obj <> endobj 5627 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31083V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5628 0 obj <> endobj 5629 0 obj <> endobj 5630 0 obj <> endobj 5631 0 obj <> endobj 5632 0 obj <> endobj 5633 0 obj <> endobj 5634 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5635 0 obj <>stream +hޤ[Yo]ɍ~ׯ8WAt\2PCԞFgX3`4Zrq+BA:Hdg߿g>{v}m\ߝ..55gfy{vcr}@W_fyWV[f Jݖ-)ڵ2ޮ +a nMjT{͵B:wIPvi9@EBx>&Uiup ~ 38HЦ(cx htֆ#@QnG|~}[2>,e ֲ|=;Sxc|IkpGF2R4@"qMNx i"~GnB'j]#k +أ:Ywey/ݢ# cd +)Z.Fٳ۫?{ӻ s?gP,3:d D]j]SUrx.Yc ^n1j5ZXMbrpYmHͭ&9` ՓQClshT7I4k 1–5[L-T 5;uU-oM`Ѥ֬uxcotC+K~#^Fyb +TleQ==׽uŢC^2.:KGu\G*4 _A>xLgrEHK< +R[յi9ƕ,u-l8%L_. &{'Aܚl"C`h#lgl=òFct,Yl>)F@nQ.[4csLT,\X+m!z/DAYHe2˓ -@ +2]jd-hf+U5B$2G6[YE#>#dL6ܱA loElh)^1aox|?23?ߝ?L^ԑ - @l]+7OĪ9itAnLIȿw`- ¢TmgG|=ˆhsCMk7D2(Dyn^7pH@jcBl֏2r%xs\BЕB~ɮ.]Fj!};N"&Nш}?8ALk41_ZM {v| +3Lԉ9>N@}t'fb6Ur`VeAp("ƃ JA^ގj[Z;&.NpԐkrSq(_Jsƀ&P nsm(L\45&ib\DHƙJDlǽ[@@N$iVD lka҇6l2U3Asws22+ܹ) jXKKQ *lZ뛧B7tv1K硡n&3'„~IӥܰAl䒧M7Ցݴxj,^źsp"vPȫ[-s4z/rHooi? F/?w_󋴻{.ܞc~7\?4S9hgxg2]v1nJSwѐQ.e5P .dzva/v:wx`Pq +D\F;6B(nO7Ҍoe+3W +* ۧq/8]\18/n^育:QZ9cxdV9E{\tQ@/:O%4ۚmvqx{&vkPi/[, ҏ w!F1/+e A%SsҲUwxXn.}y!;UKjS*oݘR:l`Ph,df>ܨr`Kɵj-fgB+޻Q +,7 +΄XW88%<5 5gaP1CZIt +49 IZ]E@[E( +PDo +~{t>|~9<l蕖nFW-ZW/-9RϗWNTpЃ?Fn߾-z2”})RE࿿g趟*-2~x56a7fG(@g=kN_zkJfOyn<(°'':LzX-ԓv<䫥fw*p([mn)`W;/Jkؙn܊ +YW bFl/.6Z>;Vw~^Ev{w  {ѝI(w>Bb:J=P%Ka&zu @Ϩ9{KGapPW҈l@^sۀq@[ab +$N@735@a؁24'u;~/UO'uD/v(k(OqPe.MyH8l?m9oiC'7HL,MyV G񸁠q+%niCڹ8cd_餁Mk<H@' %7 _%50teS9aiAz} +@1[=:Hmʬ1`_CXN"tI͔&ډְ,%J?1tenq9#HۓV54V$Ɇ`'?#'ב񸈜4\Fr򢬟w#[J~}oU&|eпz tEԇաD!ZKz5W(rUF[`(·v`" iCLN5Zit +{ÜH}z[c PRLa/LF/{$Y8zy eJil>ZDfX/i>߻"y7"}u$?:hPJ9! TzK839yst$%aHAi+IF*3*1NkKɏIŋNz )^zNO:tw(W RǣhLQpx/dKF%ޱ[E*.PwțM{ kɅޑHhO137EZ,l? `p*/(HHi v1R[&krx-΁'y +R^d)TA֚Q#4}]JOIX4QʤFvSh T Q01ޑH~ @Ic6 +j.˒Z#'IQiԢ=)IY5c!thǷSA-lHV==mF˂SH#)9NW 5T%|$zId Y#p6EqrZJ`+RH30Trޜ:4g$$X9.,g^KԗaʊHsMjݔ"2!nmI]v6"[edK>J5PcZl:m N<)Zb|yPҚ>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5637 0 obj <> endobj 5638 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31085V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5639 0 obj <> endobj 5640 0 obj <> endobj 5641 0 obj <> endobj 5642 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5643 0 obj <>stream +hێ[]_qwN) +$@`A+Kζko\y#i-ᕆsP?Yn28L48G'7|XM8M&7{n>nɆi~Bv)' O={vtAf&/7XY|<֕RѧRxXWc<ňXX&"2-cH( Q:ȅW!c=ᡮN +Wa0-<]A+_g͠X^ꛇW߽6Ʉo^~ĻA0Lu]q#{34C 4z݇~x_~ >NROS +A]!X8<$!" 4:H7ý`GM=Kq>Axe<;;N:46X)wi,>W0L/uN5&#'`om̘,~њH5N5ct0 pqcD1)f +m0 O#*G ⿇z[Az*a@ۙNv,S +Ĥ="O8㬀@'$B9@7% A)5Pa3W&Р@'>UGdM~! #{ F<rçhJBH\}-^WO̲QmàG=1,Z!xypN$H%*i!ް_uPa"HS>aa^{-yIWZ(dA8' 5WkUY L9" +-˱C.#&yD|j>mlQ-1.W>4K9S&mo~H 絨^ ,HFRAH&wX20)N\`FG) /$׮e*Jd6^6W)͕RhZVpr2T? ýUlH5ȕ!)LȿE9JG"7(VW72M-@M1"#U>2s*ܶHepS;`>:u-bS=֡؎~gʼ2q >0oIwLv_ȶʌLny`t^ a :M`a`a`D#!0ce"r# [z{cwzv"by#>9g֕sӪӆNؠjc> 7N\OfciNy6x+vLYwڋFwg[M+i#Ӌtb$vǛ'Bn8P0[LD.Tl5IӦRRݙ9Uړ/EQV hdtF3)$k:MS::כ7[9԰[<[ZޢD#qt`:yFEa&n4qI4{o0ƾM{ݷJUꨆ$ +ae\3Y p^d: S.P* zL[j$R2Veف sٛ]p) Rb)cEL'4[ .>[ ke=rWCjzq*5iصLG,K=tɽjN@ yӆrIH 9eMtU-\4RrJԕ*m lou,y:;&hmW iY&mWg<7s ?^ޱ_Ԗ|78ҹi8FOVĬ{Fl`:Ykf\lHwM QGbTUFA2 ܎-TWmۍ!wHrʆ(u勥_WnvQUSߎaygpN87myBՙeZ{TtRT-0˰X-5 @ל%T 1"IGL;T ,b "Ds"^i݇i>/&MEaM_mȩ3-M$bhnbjC/.SkU)mnj)BD`v*=K30s'r-zkz®_؋KM06ѹ{A.m8|Ь$Ew9gJ/`Zۦz/ֶe$/i[h' v6t=ιЕkU?6ގv4'emSz֞zrҺI %v Ь,moA9|#a&huy$-˙ڞ6wyxrӘܖvLWdRƱqY{g`NX }Rqbe"LAsI> 桷k*=kڌ={1?^ͫ,N-{/oYf.]]iZ֩eg}G&k],ou,l.\䘹 B2w[厄C#uacQdRAf ,LW(M6肠~\M\cQOYKm N7G>53ͫi+%E&)Gq)Yi`645-ͼc63uitڸlTv5]2w楺ۨ`uSo'i>m׼V/)b},ZWHtlBߘoEgtm^z;>dmVCt>uGXOf0P觿W?<~wNiշMj>6=5P_pg:IV= O;xE.Y#O%.>>ǻktd8o7D v<5Ç~w'{|'_ßA蟝aɕ^N슻Hmh~|ռM[_{=˷}=$4ܣ5J\Vo_+ I:?꣥s>aK{5]KSˆT'J(d_6h(i`|9C{lBSGJ~sJ +endstream endobj 5644 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5645 0 obj <> endobj 5646 0 obj <> endobj 5647 0 obj <> endobj 5648 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5649 0 obj <>stream +h[You~Gȴ`Ѐkv"h(!Řuӭ"HO:wμ5Wzs{k3>\48ۧixu_~>N 7A5grZ4QP3M^&`ƙz.fŗwZeKTFz;ΑI/@CJ~tm@{Z $%u9)\k`G<_dCaHl!ZuhK7fV,v>BǻlhCѺyѧyJ6@8u;qLpp;IFTNhL- -[ oIf @8EKá&$0Qـ*vet0s:ɦqacsU ɵ w0fL?hM5V5ctp)! v 3e`Y0Z Ts<C G ۂ W>0Lti5njq1(&g2ttpF:74ʸ8#(EC X, xfT4+8JGնT<$L~! +.GbaU^ʉ˖[#j4sB Hq\|(Ca4&9󘒩9 ,A%v#-TQZQ> 'DM$``h~C3oXp0r_a"tl!AftHe̝=7-,C"Ps+?R)ZܪM9" +˱ϰ}Rx0ߔ-,<9-GuE{C[|N]٭#װ_3c=;Qtc0|#e5`M#'5~ 1Z~bڂ(#u=V;q?yY!SLu5+l$|E.xeq.iw1!*#/y#k K6<lJ&i"'"'] ,B,d7W|2I ح1 1PMNdй8jjݕ c +)~4blkB;Bob*wWڌG#:!<8~рR+ħ:5qH=r El_eNPQUSXl[R'@oNp" PƐmZ&:o3WCTC j:Ʈ:,TI5@S]u-61'Dms wQ)ț]Yr>!HSO!@8%GkH97G/mA2Y_y !‡Ioo@dug:C,LZvϣC<7)>ak~{߬^8! q;Zpb?+D>QDt1p qo&Q-Q+ڂZm26 /^6LZI]r,a6ӅFoWO.,\[=X˰["TA?λc,7c}r~/y"?vZ4)=zg _TݎT/{˝A,: r-Lqwyt'8Q#7) +]u$2@Zi%)å+i:\T>lL9zZx)!tū\?5{jXo"::|zvn+H4|BX!)N1K̏]9VO'6ֱNLМrht|[MWܙ*\ +hFDQrzZf:gfL馃aJnЅSuk<;TN쎰N#CRp|U:4T0ګb>āQ|@]`/UZ HS.zaLav>mְaQ9r515k miݱXfHALO wBމYf*]K$y,-zR XdRZ*.)HĬ\6Rczr&7wJbJ'5(WcG{2(:5lC6VݩF LYpl'x%5 j'Đ8JN G/=C/O1VO{{bQ4D1kwͥF)4UY#u8U>J[ol4mX&^b\!tvFdu`~|AƄ-GkG9.}I]\͡erj8cropz^IB8۷D5ڃ֊PYք5\ОŻv֢%˓qaSLZnx1[i}K$.-tϝ·>3F{ύ6o,,x \U"k.66$Rpj ez*4YFhQ><   kP WCU,kc5蹭˯#_*,ť+XszoRȄNmkiܫc u+a}qV9n&%`fNUX 0T=Luղ'#hV,-w)ƵʝzhըR}N u4o8'yVVBZV/9zm敳*R51zٵ0Xƨv/!t--By( [:ub&6X̧@PԜV)G6Sb}SU,[N +tTֵ&c +D#,!%؅ kjL#h8 +4L 5h)kE- %Ởws|X)7v6ZBD~ .e)4bhUecÑʳKzQI$ A5 ȉ_jW#^T=v\$t^;@U*y:J{C@IO !Lr^ٶ*韸XsO <!cx_/>>"%=/3o˙kf^{u:W†\2~it?_n |o(IGX424w] prfo],<CMXY{UF/[ +moQr;(VޝiLi0[A?ߕ ں(\ь_>o O{|LهTx=1L9ʄ]KɽaWrv94omIvmq9{;w{%nw4'컽}Jw3SXξ+G}ga9ӵe]y]!\ﺟҬʎ̻WE7ˠޤO“ k'θ[F0sẖm'qoZ?act-VMq1;o%nPVBK]av;ww%A;P+󱍝Dx_gЯkTEf}tݛG ^xmPgbV&S`92oܣTm#hfjeĝ?aO%C[*\n_%M]ьLܶ.lQV:o ?z#H+--//}D?r'<|D@Y- +endstream endobj 5650 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5651 0 obj <> endobj 5652 0 obj <> endobj 5653 0 obj <> endobj 5654 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5655 0 obj <>stream +h[Kϯu`Z]*܅exd ՌQl,9wU]}=1 +1U}nǛ/n^LwO7e.qZiqJ./n{LbtwA7ߞņe~YBrusBGkqDx8=HM= J?#Mwg_0y+LOӍM8\@eDRe~31'6Z29;gwh܈H4Umx]frJo|s'!ɄX.zOӫ_[~13IMdm?MC973Jt-"ͫ>ϏxÇ2}گ^#>/OK>^0!Y)Xl"MLL2'Nێێv6!hֺ`sq -?/ y6>vv^ܓ1q?}kh^h%skcs`W1yvngܶflqS{:#L(6&c]_=G[9xinНf*g OCG"~[oO>#,&ҝ@m粄'eəYgFq258<t6݀BB+nԵ +'sm^!2LԚ)lx7v69:N mdH$vj~MIX( ~{?1Cc=x{!WGOɬ_&M۲aQ;nƨTPò0N$eRajAFTVr %aQ;nZԖ^usbm +-zx,]KWѸCf9yIJ&?S )S+$𴱓W_ƿߌ[ mp}jQijAtOc ~(ds( y ACPc9\7[H×|7/NrZS4D EԳ$!QC#j wC<̮5t[0"]W/s]6 :;w:^-~XL(f(nyc3jG] w4v3=cn7;ϋV,&}%eq+ +lLOKR@/vc %9د%fO1H{!aܔ."^%Cd7K|p6Rr͘3@+#chЕm6of-w㨰.]g Q4bT{ӃMផs~}bAK*hc#rr:%l,J1vi)" +xx[пal|gε퍥`G䎩 x{87XutU/' Mn1nd + x1+"F@ ^4jAH1ى'.+ji76^6hFQwLf2D+̓H;_RL%QXV[ګ??mw}yOnvi 'K{l>Ɯ:iQpOgR=pO~:&3t8PjE<Q+d{(%:Y@O MɺUJ2j /M::iPǝGorZX[I+:Qz_:ڍr +<@:|į=q-wŔPOX~8?mErŊ)ܒ:R2Q_ܕv#SgK`M;< ]}N|yZ+mx\y]x& +m"+$8_whIjrۢ#jU| +AžN+3N>[Vh6+%",0=Yߵc>^kЮ[l'W4y [-}-\Ek`3\w 8m&9UtVdIZ?XQːUG&u%[/)m.>FfGvmXo`;|@}CF'*~#,/.w~d ~PK>b?ʅއk~2]:8"m;v+73׽}=n?b8n+=[vx}ZLQ*Lj5,j!4F,'.eKN\ZBZ솲5Vu +evZG=|l/c}GߥR2keF~d7p*v + ׎ڋC/#9}^˗w*,0}C"oޭD0+S+`.mn?QIub?KИYJڙ0ެJڛ%,%`'}\%JչL]* to`zIG*u_U?Lă2ju@L]mS6w.k6x`ְc"ma2lr? Q! +endstream endobj 5656 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5657 0 obj <> endobj 5658 0 obj <> endobj 5659 0 obj <> endobj 5660 0 obj <> endobj 5661 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5662 0 obj <>stream +hZM#Wq&o2tr0r3yUůt'AH6bcUj÷z'=4_L*)ʹN<۫yn::}aߌnqANԚyph,m{*G}qmvnR[95E^L_ SN$RC`I६G'*qo琥א|Dp1tɨoxg+y/sxky:i۹,sЃL):pL:M؜\9M/wr`*qOAa:x.mv^ #TMUW&ҷ3 +>N&&`I{l矞.?Oo~#ŗow?bՇԳedr@T|}i0Fܽϗ?||x|p>b7o? 'SsvOgLzY\Dv{3+Wcz,mmm7V9WF'̐3NJ5$Lvָuc kZZD]jmI[vx&jGo>2:ph˻j,F4H㤸zFRČ&&c]W PNt&ˌidieG|z7ҷWl'B΀7.X;';؊њD#[چMjHcBhFhͭVx2z%4 MMI\lM<Mx\v0J>>mp1U6ɠhGi Ҳ;s$#9ĚWW-M0g)db{UTǧ)# >51q5&~ <^zN p8I~fx{6l((Ť5GmWۏܶAǖOejiȣ-Gt ~f:jy,ʍ8>_x7Gw aZ O|[ vl*)?E2C:%rD[9K^.)>$Po/6FIԺu]")vi1ӭmNPz]c]lOtC; TƫccHv⫑| +$sƚ:6EuN\d; 5X`ٵ,$Mo2a+-Qjo|el)Zy( ֹkHrc<pf]9xE8&ϩ]qYhqvZA,Ûj4=:k8k1.H[c]]͂m$.(:KҥuB9\=My2,::+!zG" yN,Q$jқqֻ:"_.&bnUbxH>M#YJ۽ 57:u8բ \/񼫂չ'Uvׯ\NRG{\싸HVnk`ZR,?J(I%]x8 M\'bꃣ +CW2 ++ZMSjj4K?^NM{^ {5uh.o&o5;-B.KV9L>%hr{O>+k`= +Rzj]wewAp)n8 - u_ʛnֆCI7@Kd,*[B&+˴]S'nэNJUWs,+ڶ"_;bP@_~uSHo}^,w^l̨:!R̞*4b[♌R^^TODZd(3Y3zz5MqLa.9ak۳w g'k9ieGʠysGͲ<؍[̎l'4w\.ԗWƿ8䚊xֺev᰾6y/93_kνN~w`j-n _67NܘRQN.^ 0ܑ@4 ܟݸ +r!\jJGOpF(bZ?<ߩhK;aQI>-`)Ev "ܿ_zl| e߲NMqx~-2^AMcpr +v-͵Hf0xKhji;}~wһoJ-n )x+ա3(Ii-!0^[;r[9mIq3L5 & 8lkoZVBy9620"lhwE;U*`zb%;ꭡüYƻEXTG"kM߽~w#!ɇ%[VpԞ'}7FVgv.w#/90 7w"V_;7.RX@AoNzf c_kg޽Gݒ-n %b:ū*~dǺHkDkN3H\-/=5HPK5jFdXCkPZiԨt\Q#kѿ@`m9 +7!IFhm!ECŠ6$)smF1WTC[Le61SP*8mtgämex4I`qJ:7 +^f. +WHrWڨVw64zƅ6W9P _]%!r(bm2}2^Z]6H{$&aev٫d \yRߏ"[Ҷ0:QRSov~;I b^ spY0ZFPP=4:c%U9^Y~f(V_s|{9~݇7o!aRFs3REF-2Л[&!~zX0st-DS勌ЪBr~^ͷR#6(oR ػ7_Ln1f5ٵ`z6S!Ovr ҏUC>[%qxӹ/dR #G IBiVj˘,#/>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5664 0 obj <> endobj 5665 0 obj <> endobj 5666 0 obj <> endobj 5667 0 obj <> endobj 5668 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5669 0 obj <>stream +h[Kd`(>/`1F>8Y #x%(#^f4[DJc`kɏ,UEWoyvw'7ݽiL(6LwooXtw?o~Gk OC0kK6̥ _Qۀ^$EW??DۦRMD!*t~ͷw7ȻSW&Cu2k-Ӈ7:7US +8DRٲ<$L 908:"HpVz!%WR_̡+2#˫Jٕ K2 '(po&S&gTq^<o<=ˮN_'zҞt=jzQf%ٟ߼^Hi:}D[ 4}gNz6qm.(Yc<.NZ fGO*î0pb}/$h#-Fdr7&8ѩcQ.㴨,APR,U%3A`<Goe֮jkT`Ȳye@sՆJ4>uu?bma۶(MӸI'.Qu/$D Ep`v"ܺθ~#w9G@cv2yeW4_yE:Υ]dͦvebc3V쐸.Gf,sx^y#6teSm3p]Q' X.ӷ. 9z+˫ cR`Fgzr${ ?$6Ld&.G-B03Ҫ#:bC%V.@:# a8G#jrfuHlwlD#%|*ɍxƇj>7=Zٹlna[K씶!͆sdQq%rGEYt+f21)UGOUjLr380"bJ+] 3r:#\).IT6ՠמp3/5]/A - >@i1q_/b[-\|qfqKOaCmyГȀEZ/r^fs'Y-Xvϵ-NZ]JǨ$1c,}cOf>ՈYܪӒgrFEXjQ6ϒ534%{y޳J-Gɖf/J d7*yBVJȾ5Pe~v$9IMt.|uh?W4`*hpWׯdp 5-v8:fҥ5nA?\V mzBv./,M'X\"Q;gi1йsbaNMݏ ucs cǿ`ju\^#ōEsob +x~ ,\5^BY0̋galu_-jž[x4)NA}S@Ȯa{_X/YĿu!^/g!GyԮi-ۦ}mt+W%_yՃb߷tpy7t~jSm(qa}}t[ǺPsk}U1wfGOG佇z>Uezp^6&1lxrв7ǧO;Ns7't{,I/^^wDx˵]3cd/ɫ |ڬ4 !$8ޛn~蜃]H|ی.3=}Y +mwjAR-4߯|t!ki}wYzLb1%OgM}Yř]35WW&W6|\uW$^|Vl-p.lIW|N?Q#fZ?ލQ!+P;r &FJL#]5HEpoexh=}tMEI{LDTR˯`{ȃ E- +}Ȩ((gBg+#bA%?$,耰#™ӧ=+` :/G2AA7mNw sP|<# -|U{|K1߂y!8p:S耰#ҷ;2c#Kbi0AJ0e߱Wkr`<sտ3CQL_|g`6 ѪY լX́ߌڛ4AzWOi:cX/% |O?3~6;χ} >O1 CӛAw`̟C?t=孁ʷdyX/X՟-هF}X/x>g|/~߱kxWxc1w ct̛#"|ϧ >dMkYSx>>bkW|#岜 0#K pi4`n ̰Cv{:}T,+vEVKtȇX{笠4P~zw$D~k|CΩ/b^$3=5<X&ԧ-)[ +endstream endobj 5670 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5671 0 obj <> endobj 5672 0 obj <> endobj 5673 0 obj <> endobj 5674 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5675 0 obj <>stream +hɎίcb5W@`I 'rri2F,)5W59@-0F+}ǿ//%,a<῾\K.gǃ_~:!/ ?;y +yXB;V. >ºz˭uxx:x?Wzއkumr;2psY`dQ m~ܴ +PݚP\&߾9 +~Xfqգw/`kC[A]Q ܆_w~|7?}޾{. :7_/\jڲ}叇c,'хR>2ut=5kOPC_68+JiEk"8\ Y¾ _ 7jXY + ;ZP !j@D|W;b2J*ݬ vؕ@ yrp 5"ro(_F =xoqV3C.v_Ӥf[%-"2[!ՁJPR& 02>:Z]' f 8,~)4[ K +1y2.rAJ Iվ|1Ƀ_w SQw!z=WˢG3.g dxpMכ7Bm9~CYO]HmrPR`YgS"gL}*W^Fb#vIYT"а{|aTo| BNyGCd$ %tQD`D Cd&{1^gly K?z ⃾ r[kBKX#8 ,"20D$03w0 -}KOJ"G#1"!hO=@RA'T1]uATO9ґV*Ȩ-LTVHrU"nY$x(h^,$Kԡpgs'8C|碰),Mf5Ebfv$X(r*$: c`. )ǝ6Rת{K\z;U XZ[u =`t$K!%Q( :V$DK]?m3y o'*mԫVNY!Vu_7E{]ka]_ndh*-fsר +endstream endobj 5676 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5677 0 obj <> endobj 5678 0 obj <> endobj 5679 0 obj <> endobj 5680 0 obj <> endobj 5681 0 obj <> endobj 5682 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5683 0 obj <>stream +hެZ[o[7~ׯBh/aU]8M+e! +E*+fs-M +>Crnɷs--,s +?4AMʊŇW#IbBc)K\Rkz9{4~/w홗:TJ-~ ~CF(SչY)ZBR*M<ljuNf|N<{~|1ʈNBsŜحG .ueQdbV`%N%I$1~Ϧ^z}UzWZ:oX {CжPri40{ȾÌ\2er$x^jSNmWw7qr1hW uV| cG%%3|ELkfym7aw;}2CRe|. + AZx}LDQg'6bSۖۖFjk{jt`l*h9b$ H _R;Xnkm99BL&RdpU5hRMdatіW2X`1riΑ '!իwUWW]T[ÊGtjI1NJT+,NE{,Np3K6}̱* RUaэtq]X;gyϖrTڅؕN-N{Mhw6[אBYf<˖=!>oyI݆O-Oӄ}_ǧ$%3`{sL.y-)4O9?qFF,y>eMMj׀M/3+i(uax:/hF:?Ց9|q6Vpjӯ8vȀ2k_4B,(%q 6twܻ3.) E +iLCbk\3_zDAdQ{QW=$FwEIpğ[=C{/oŠ -|;7THʠ p2+7<9F᝕(REF"N$@Ƃ щ`LToCtj("8 +(F7WGezXu * +q'(!ŶB*0~}pKCKbڒn"\ AWz(O0Y؇Tpkۻ Rִ͆Ɨכߘh@Ûs~5}z Ue"@u,ItQCj;X$ӎ昴 @D< r>+"pd;fowjY7vwg" (L'`1e2M +PH:( +k#.ԕd8dqJ܈f/"?X |CMҕR/.;lf|u"8NO`z<{P8-TH@[ɴ aʎ@-7/5uCR|ߧd5jἼ0W`H$ءQYB!LrN}AFW0 %˝`/{0Hh3ox# 7AIyy*=P`[y=2pVފ?:@*PM[z/;]] 6PPPtwН(Y_Fq-j#c +*":] +ΦŽ=!rN8\; @J/%Afb8"qoAGZ|>aA"B #RdȢ,&YR6DD2-([?GQ"Y͵dZxzlQgJeP$fX]թ@># +*3GzqÙ?, +1\06l'@RQE(>'rO-b?O؃QX``^ 5DrېXM%v4c@): +1O+b$ٻ8^ơey\v4BqXB䇭XPlo+ߧ/yZmw^"YvۍxwQKxޛ d]r'HWO]wI=MXaӡzk\χON(˳]K2M`A( +ȇm!%-$lg0C>D'1c +O_3.Ipdǡ("ҳnf4#OҍCHXv BAJ@ h8C^ [v"+[nQvGЀXg9r ʎEQ }?ˌ[$*"jOcC>д +b5;`R>s"x~|YXi 4=#c vUY@+d6P0M/&(xw}uՔi)^[g%wYPkIS:uLVOAӮ̷d4FM6ڒ/2Vw˖Fyr]tD=)'((#]CH1pУGj(Rj4ZcEġCp[n5"ұ_|>/68HIk9 H(B9cᢺ;m5H(ű&AZ*,_ +\a?}%*Lw՞;ƢT|Or)+E *64_;;uma5(QyWN,d/GO,j8s9m#zXA>PzmgyT8û~lcՠx;lw=:ˤJ O^ضEg4GS_2sv/7ZOv?Vt>ݻ3K4! +S|iMCF\=4lH(/;J2hlMG\#A#ýctB}S6OGTSD`ߕ;MWɧw v޿ 5Iұps +endstream endobj 5684 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5685 0 obj <> endobj 5686 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv40931V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5687 0 obj <> endobj 5688 0 obj <> endobj 5689 0 obj <> endobj 5690 0 obj <> endobj 5691 0 obj <> endobj 5692 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5693 0 obj <>stream +hެ[K niuA,dv' KsO"Y]iWYw>|t|S2>O9j دHHrl$6R/! v]r3t9R ؙW`Tp\3J ϝLy0, +LWҜ}S!zT W!7 '&fbo}+qnvzб3)UPt~޼oxz/?~z~KN_yёcYydMι2 e:}ןn~Sہځ~v)q\CV/N'.fK4ޤެ09P1^r3L5چnsVugo]ssej{hU7_`1 z; ~( 4A4a< vSl G i=Pӳg#<=<CziBY LGfp`]f[&-b,s52:PjI o 62{tUiU Ŷ[`W Δe*E ,/^dLq^S.Gaն( +ھ}ͭ?nfW l%d}HV}tMI%J"e.\_&Vki#n 5shTakNkazx1@Gtp_pr,BHm)bAW3THr؎~vncmr{-ի=@WkV6)# +DVh;aTR5NJ٨ÿ?r,`V=q 1JHvøAx]`hÊX1r&z~&(²(72Fx opqBЂx,*]?+ +R3+AVQ8L(/OMx$A'<2LrKX?AW]scbG z-'!Ċ --EX:e2Y OEĮH1JHlaά(II l C.TvMJZ-kZ1s":(yZ:OLBM`q_2ܻ&8ַ4ǰS. +*Yd߫H$g)^B<niHЁvoԄfKfۙ`&dgcN̥l.,+dh="׭umˋ;M2+8 @*}2_.F؛&ϔ. A)lv|Əb=`xhhmRl>q|O8I-2E"2^'Q^YB`,,;OkH3ɇ6xlP0OB9~ͺnǢ;,l=Cf3+mtyM}>!L +#?f6]m|ВEs +?hI-qyc*GޠAwL pT_"4wqźN,6e7gA?A +5}-6n?Pz 7l$9hpN?25zrWk@ˤ{IgtWDBBn |d=Q t¼sG[Cz +`Ic-Jrg$yI6p|}, +\eꥠY.c{T&N|s0$+# 'r%34͎hs;2t xr[- ;K]qgѤrL[͖Ss!ƪ)o+ &ee+$fi p/E.M`֊:7i/µX,҅j9 C&Z4{>;f}6pdgXKžKjŶRhqZ;]^zFtk۱6تޣ!Zl;\Ad]0x @Zd_p1̗QJ/9?xtUg4XMTu +ɚ<&ѼםKx>QVv˖ '\:_UiW(>G|f I5r8[PqfՒ屺E[iCL(`-lL^tL5 ͲX}(=3\5z>=bD[ uC8V_%&~~#X=zzp^zT6=,&ţW t_.TIrr,$vU9VՀĸ`qHo#[ˇĄW8w{F'1Dllg,gyE4J乞ǜzd0V7xk +zT7JGo6^Ik'_ѡBr7e?ڕ*wje ޔ'@ֹoiJWx(g_ù29iSCU6+]* g^{4A] AeH@TɦYtmНjjr+଎8\R|pF[)C|0%˯V,s;4c&C۝ zyTll9E$7 Y`Zai9IMKx7HH%{^튘 cb?QVZW[E g%5!yQ鱷{s]"DQ`%7*_PVIQϦW-ߙP( I*6C`UR҈dcZG{*gͿÛڸgO8@=+gbKEK8X<#dQL ; %)x6pn;w}n <ݺ. .bgpڲ@UQ.; MĄ-.7iW6K1ܲ)C賏=tKGlԻu_OE2+75x~02'+ZWh5i}~3R2&;|O5(:*<\dɩVA(.mJdw) XV_ +endstream endobj 5694 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5695 0 obj <> endobj 5696 0 obj <> endobj 5697 0 obj <> endobj 5698 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5699 0 obj <>stream +hZ[o~?b&w (qZIOl7!K'Igvp.gOWGWW4.&QQbt&mW;=SZS ~=.i ^8 ^xE ]Uk܏ffD_]ADro( +i\ǀ{9N$ݧW;,XcҤ'biٽU.hix^ti."VІ(qxL +Ofe{V}1{w/\}sͻ}?|[(\l:Lox{a&O:8^ i峛doJ[ФޓU۫l#(t2tpR$q" +mi[CiJ{K37LR噃Q da:by{cT$MLQ +O0tJ <ϛT`5`1IR#=$V,+פ`xZ6M#~dv;6T~pdvdy4R%AdaO -&-0{#/1& +F;*c~]GYHž8Úvd59|&N6e4(Xh*OC~LX ^ѽDh47MQU]G&`_->F^Ou5S=YN}r+d)[qb8|TUOU z(C)׽gez-e߼rݍ1}+4tv=S})S <Fi]Vi,ʤزl9˗#83y'K۟O\i(%{P_66pL9jSS~~ ,?% =G I6'I!]L⅕ar$uL 6YWĶ%ES3 u#4}Բ}cJRSz 5'oJQ$Yq+-].Da5n)dUm\y-m|>qF9^q##՞\\G% AZ-A-yHq0ANEk/# %R-_^ѯYDy"tJZ\#\\z>^>9" slO'ӳA{S"o ΄d3<$ +i $m|np16 l Ɨ'i3G%CYw)fc;?|zyQ-HRsva_=dz\^ηv7<;:z4~w}s _~quc=VQcjS ?$׉;l/ߢ!H%z[d]ix:_w7{ξeK:%ZxZNrn}Y՗w7o׷70Jkĭte0[hߍM6Uf|Qѷ\*ݽd7No^ʓ> ^Š* .9>d^`~b 9ťaΤngTkT@ϒ,=;_$8IړQh-;#"2+^6u(;/3'Nd]ru-lT@s) LTV7.',b` "=KB<*oI?Niq^*Ż!Υ4gWB$05͢7g)䨞̆fQo:7g)LyChoRXiC(v7g̨ТMRŵr͖!ҤU~h/p 6-tΝe6fh/Gߘ([M uE Q["yC{vːX}{D9e4.;;Ax(–!Ҏ=ڝ5cY>m"[Fl^[H'{;!z9iC3-BPZIdXc{Fa;LWs(ET] k3 Iq&뾝̫;(Ai^* -3gֽ>ݳw͹ekZSӜc"ТP္8&ך ]4*ik"88]2NpS8:n5a]av-/J?Sȉsfp6[RRαg87{ίG)"-MqB9 ErX "!L㸀$1j3'AƊ޳L`5B- h3E-*rȎRH +* /"6`ӚŐ +W팹vLV3Ex46g,G<|A΋/PE[ܚ\4Un4y";5FOmU<0mx:*?@=֦&gQr!5 +=yt0\95AwRO%XU+9\u8hv#P(Qc a.#f¦U]͙͌յ}"YYNTZS*jմ1%.;YKK!/zܪjpCys=g%=K4mBZkb!;qud)x/\BQ_C2^nQ6w_x((R@[.j!3woZ[@'O-9|#U2*va)tNyo)2&@bjOwzi頻or'#҈@OǣVhBa yB ݦ6 <3v;1U!;P5G0D;@.,#cAxaC%rW0'>(lT7Hއ؊#ad:ٙsBё3RWsf C<+O OG9fu-C(cJ;/y,v~ c̟1Tl-WBLL}i<2HLqQ&q]?t3aGG-?'D9ގ19솖m --P5ي:Rm.u-_ -r\XvVzmc]1W-EQBط5e3 } K[Fek3jr{D1 +"*beov㗍Q 4Tݡo2Z.I:Βል2t2$ݡozMWf)jj{€VD|ޱ+BŚks+13'ۺG?œrWH~I";X\k8qLk9K6r.y0ifS*=#ko3ц^0O +S[F+G FM6pǣȌ^MW(_ߵ+r.Xw2$&GnCمp{E|i5_7*|>w ,Zl_-,*;#TѢjdI%r xqزC•0xfD8& eb&8caxin$Թ_sB*tFjJ=M}΍6Q&QQr-CO,DŽvFAX:||!9~OkPJ01<}a.puuL!n)b U`F`b;d%/甋c?2۩9hwsQ~b  fNPZky-qz9 +d;@8; qNmmolA<>X*TmvRNp7]v6*;Yc^`a_@Qel2nwTn4ct5 7_ef"㯖S1SI>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5701 0 obj <> endobj 5702 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31076V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5703 0 obj <> endobj 5704 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31077V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5705 0 obj <> endobj 5706 0 obj <> endobj 5707 0 obj <> endobj 5708 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5709 0 obj <>stream +hެ;]+quCd;lO܃b!J$Y~ObY잕u@ db}W5_7y~wg=הj_ޘ姛j zwݼ:#l>`z--)ڵɮqL!{M:w @ڥ%Ұ]Ag\OadžbCtpه6Ό_xkDjF8Z":g~ OK#@݅1 +S Ӹ%Ï-|uYC,onyHfn旴f5頧}x< LPh&XBl٠dxlԵ`bj]W.67U,<Ӛ{>m +Z7߽ͧ7=Ň\>VS%BlxhԺ(Yc i}O}O}p~ a>C/X6e!j0s)0S߂Ne qMjkz\嵆0Ö5G`W 0e`?֮oYMwӮvMf@ADN vkB2|X7HfP::xt!W6ZHo(M~O5.(9]@lsܮ+6#q7nЩ!K-`@Bz4x^ΪW6րW| Ɣi, w Y #qqk ~n}מ˧֌tAʛD Qm'Ho֌9Az0 WH\9pF~x}hmc %DX.yVI; hD <`|*P3\XE8|bպ(M#elA\ݙ.gYzd@M$ơ.bA𲤗I?SOH'mVE66 a,BQC,M(Hםp!F(TQܤ:ߪE{U9YuuuUA(ŀbĆT̠F=ƽ@MYв :D}':δii(mȺ29=#nfp#f>&Ԯ'rxL lRHqQ0/mڔL$Opb,VbJّOə֛nP,?$QE6Z'5rҲO4I-ieA:9fASvH̵,8TE| Qm:L VV8a?Mi&I-*[tc)r 5)ITb9ňuaKvn vdՏ0g8W*{`)FuU^_ YZ5tSRʭFl1!5GCX*^^޷LٓUӈf)h'*zhroD:p85z&֍!)faZ 8o uG=yI:(<(s0;)l aQQaQ6QW$.<\*JؑtZ|rgjye@p ٪ B ΰ)aqyP,krYBQڇXl+*tgnuTqg/=,8/z +h[i 82N <*s:b BҧٶV5}ogSʏl>J,uLsQtL)a5b߱S,r!rbRMkxo5q7o<0iSUmVTeCt5<t! ^H^(< GԳblWlyk\ Z e$Bw0Wئ<^|q^}z(7xG9TUmǧˉ#tRD7V̱=^L yݱ*ܪN=jo qYϏ%)um ؏7n "_Ŭ?^>TR^k{w lŪI^0m8G -^򠔷Y=B3b;0\ݓ4$ DH3^Lپױ0T@rGU;$I{V5Eæ-}}!P x g9izwa7kh׋X)Y`u '䕖D@u8OH%/ FzϳO9[.M[Vy HO:n$Hz Ma&c]Ղ&Z#WO2פ\amx؂F7r;87W_f `f瀨r}}~ +Vy#L,~ l8fj^yoKwE[ 7Rr5$BdG0PGdFCQbGc4ŨK=B|)Չ ]hB;r<REwiN+%lU5|@l.27"Eb R^6&Ml;UX]uSӮԎXğ.n-TɽRշ/2k2@TjWR-_ay_-1a{A%\\1<[>; :Xya UfeM,WhH .K]. KwF+@FHBn5vTlt qASf7}{ec2jm[+tACڍxXҖx9n4xp)W&<;ܚnM|ŷKx;2LBDgD PU [ǐڧ o^pxGh6CBGWImv`VH j Do_zkr g`rAև ѤzgepZ*aZ> +!xy|wX &q0oBFW4_>޿ihft7J\<_?V_Κ`sxYwwp o<<j^/ ߴx|pO@гߖ|?c1mă֨+.Vb`๋mtz B@+vh<&2;]  ^yG|JAr$DZC@,: %Em!#,p-2!6xn@dUE ~ +NZ~Gϣ_,$airF Z ؈ :AMFt twq4|YvGIr# Ǐd0j_@ +!/PWr'kFI}0ٸ5þC!b\vV)l1s̮K`Ȳ }׶FCnvwEDrTs0.tGXި $|j\`?`tO +endstream endobj 5710 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5711 0 obj <> endobj 5712 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31078V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5713 0 obj <> endobj 5714 0 obj <> endobj 5715 0 obj <> endobj 5716 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5717 0 obj <>stream +hZo7߿bV- :iq=$4([qh4;!H((~hr >۬73а\eàG CN٤^JimҰ|Z~ +\kĿ'NE zޞxex"UP1̓'AB&e2? 5ۂ|z{6:2F$#Ŀ'o6?oVPX!Ҡ9Ŝp{\Uyf6_lIՖŐՊY+XCV'['@4'k<mۂQ +ވ'ED.UmSkWL7i8ҐJn0 1Wd +wS&=;]WC]Iڱo_ã#k _i:fws{u}qw{nC`p#9>u>lgA7*D231Z9aWq+(kc`kmN_/['E.@;t0#WF2Dn;?#<סD]j8VPR6] 4iarv8S:9RXbnO8k,`1vX|e-q2O* Jl, 9tv&m@t_7Mp|cM JQlX8 ^mj fzglOj1d{=ԣش{N Be%9'>wAX la1⨸.XwZ˹y/'"e)w#j1^]|K+̚LaVRC)+Bgr3ԗ+8!3$kBw>_W{etb>N+K^vk9rη'S 5*A{]q=O$9 qa yIt*y3ߎsE ,{b~P`VC *|.;EE@)W23O*W}EA&">ld-MaTSx[˃q + yw 1)XphP?8H턍A0=Xc1  td.MĊ㑎cF^H?;)G "rS;FfҲUj>ܷ Om?N+} nI4YB\%Oط6I?ܩ @dw7PMg;}> 'RZiR̃. iO 0q/Ŗ,'ڸ*" ȝ<9asfq (7!ܣt% 8q *Mt:0v2́>wN{!(,k_ΏQ'!q- wՔ]ȼCw5~_VƣuKNryR#8. +Q +Eѥ'l|"ԉh1Nqx0ߌ e”vlU(G&~h3қh?2`scV}~>2J_J8t +u?Y7rQW5^I\6\<;$\J;ziDOv]orusnEǚ޾] `˃A +-+CGL3Vc H|?م"4ҶT$ER7љ!q,Ȓ^-'nk Mu(VDaܒqL?GH^uC ֔~};sIV.J/2UF}WB񥷉{C +r'1g!{ "+KaΘK[y3_xyA u( FNˁ5..4!(!HX׷6`N$o+R\Ku`pQ2XX!d0Uw荭-<8;fpSJ=G +:?jFJc[qُy'l8T}>L{XԞNP`c;R,Ԓ>4.<8ٺO>h0&ky脜1ޢH\Г5:`Ⱈ>c_2 +endstream endobj 5718 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5719 0 obj <> endobj 5720 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31079V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5721 0 obj <> endobj 5722 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31080V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5723 0 obj <> endobj 5724 0 obj <> endobj 5725 0 obj <> endobj 5726 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5727 0 obj <>stream +hZn7}hx^bƚ$N(Pvd%l"f, y[x_ixB* Ye"+露b{Rj#NlwW)e='/ Zu"N#p}.N'2䉖:M;jOۯiWPLmIʪ`hӵ8%lL`MU..!1=)؎LUcxUP84Ln_U'ɍҰG Q+uJU +TFD$9g!]9ۋ;#[W~ctXFf9/̐Ij7#U0->˼FNx1jīPƴ42xI[ fՐIc h-$myV-L ±S} @j2cI ,zérF3C{qt#KKAjGPoGH^#~N vpo{3#»`lgf[`+d`C &[MjVZ"-Z; P Ff.ƎX^KVLLդ+By[v&'DӱZ&ɠcMy +gŇ9^#yXNAH]4aTd(z%lz1x>3B}J4=I s5xboU=?#.VW6LK|qΓnB4C2Wgx%CiOL_՗XKjf4I(d +4F5|. +T2M8hc{ )pih 5h03F+& +:8~zyƣН $4ꦪ-2 +c<.M +aILE#+EdXm 4Q뀌c\^U;9x433\-N~¤Aъ4u|H&AcyQtѠe4m +`*=aq"rHL\(Bt plS拚6R⬤3 |9RG(TJG3!L^?"Fvd*rgUI/ϬPJuB(@Q%RѥuVe}/?~)/|=ѱlie#]CQ_N*ӛo.n7W@Cg~B\| q<"Yԙ]BjJOFpq{XG3ꉴn+}ܟ)q64%hƯ^2l3qNaҋ‰O]yfdE2XۯxǮ\T5 +U0[i8ahܤP:-͡KZ3f9 +G1VB&n"`0| JzuJSa\n$<[s;9?c|Xuk dH n4ΠXP'O=r_YGGa D_cx('KX:P/q胮 eA-rN|w + cuU}7`'TWz\~gN erX1-{r Eˈy2A$2jYKBHv ^^]ud]΀RY˪{ԓM(vXǓh b$J ~*XPjf'(H +JK&tT-ePa'tW[o ,Ҟ>".xM22T㲡|+knQt!;Pn2N ,mQei(KՌˆRZ~ӓ{'!6æci0v>2/U!KǟdxQ*?R|o7#[y-U}?BJ5DXc̕/Xqآ3WI V +*D`UN[+Ac?nņ9l;^ʃi-RaK^sIZ눵(~`or:7-Pe,OpXbs,}}R_X;0.*t՗}Be.^|WcB>s{>2\U#ADRn@NX>UΏ.rgRw~|6E(orW3@˕? Z +endstream endobj 5728 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5729 0 obj <> endobj 5730 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31081V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5731 0 obj <> endobj 5732 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31082V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5733 0 obj <> endobj 5734 0 obj <> endobj 5735 0 obj <> endobj 5736 0 obj <> endobj 5737 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5738 0 obj <>stream +h޴ZYo~_1lJ4@Fl0RC6EI~OW3=b5]5G]U_՗ng3.VE8hAL!%\nؽYJim}\x\k[!x6(K/vP?(hMȄO-kmT SnrO*~H:Hnlrޫ B:en&ʺRʠ|*%7JRUUFdY)R,ZA,č=I$<>f^n7A@f?B/+dr 81gotYvV*lU=%<䢲le &(c+7\|z/i'۪S7ܟ2Eeo +leD7ۛpOaWxI҅!!Ұ/U(~` W;VX<Q%@^lʰqVGpg}16aX`뚎VIG3LVї] h!81*YzfeMdǻ`3ȐN-:UĀc X7Ue$VW0@<)*0441"y[o!S َ{w3E[Ut +YvIqHL +8ڇuW9*$0{PhJ +Wl4|k24 G q5G5yCmM&Nm>) #!ȲCǡODՑS2 t\6 ys`,԰n<<|A$T2L 8^#xSMG@ dx|L%u( zofz&Q`_j&# 8-)t N@f-J<9 YIKlN!LW+C$IA'gVTB3" $Q c8Zrd2bzB68%f:(]i|FB-[Kf; ]SIQ:J$,> DM͓ũ#C|ZHxPM_A 7c@D%\ 񌓿(խTG^zw!_8vDZp{$mrnח0 M*\_2?<#H9_!c-xpsquQ, :Yo~;\\&bߢ⬻ӎ_f,/&Nej@1*peq5MmN*ԉg6q?W3|6Sg-L3Dɽ&rڋ "d{Akbw +u]4 :nPPsa$ Z4-yÁm/PhLo$`2I ~m+JXqu8 1 HQLH!SC8Ñ*@/`'s?eg0fn8Rfhh-Ħ(Dhhpl h1?XB }'Ͼ EДRx{9\]~O 0VC!ʾDC r e?97χÇT9{ؕr ė)aiڧЭyZ5h]_P3M9>vR!B^P*`7rf"|W']NeǵhMZ‚S[[/Z4C-pOM+,77͇W}7{, +VaAfloQ~%F!W~6f-#2 +endstream endobj 5739 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5740 0 obj <> endobj 5741 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31083V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5742 0 obj <> endobj 5743 0 obj <> endobj 5744 0 obj <> endobj 5745 0 obj <> endobj 5746 0 obj <> endobj 5747 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5748 0 obj <>stream +h޴[Yo\7~ׯ}i;p"MRY(#hIw{˱!Cl< +x'jQYZ$E _J\=˛Rog.4O V& ,.床)򠄥kIs͆j\o.3T/!XabHϸŌaUPGTXs8s:#bpk0tX+F@ǨFP},Sz}:^~T\6)EؐR\>ܝݟ>~Hzݏы0 '>swݻ'U\v.8u`5a ?5A lv[JŞ|ۻw'/U0a7gĬK}?-BĵKϳ'?=|zo>}x8.0ˏ~9~eB&6H|| 'D5Gx>_p+x=2T,oȝ_[ k*ת^j0! |CCGm)\ y_u0&_v` +MYKxP(c/PnD0aBMDJyuc bx01,J4!rDrse$8W"DMp CF]yED+!(}Ue ðv0?nIL-TkĨN*)~,EXUAi{pm-WQ禌}.2\$IGͻw5b2MwAPXH2df!dXYBԁ"JHZhV2,L* E Ebfh2 Q +@+PVLd/֥vyeẄLW3 .' +_ =VPaZ/6ʊ|U +S 5=فPT ME2ƢNkS5:SZh yP=d +ب V5?QH;]QN3-5D}ۗ!FXQgQƙlMkJzvɜ!1% +jXè r"ZYnS(-%07'fn{&UX¬x(*!uYBbGd(f椴sTxWǫ:! ԄXlE=Ǥ@KI2cYdgo}8!ݝ#BTD;ZP )d~^@peEq~3%L +}gي9B9"ݛ_>[۹s _@vk2 1l\Pj!b|r*[:iuivavLzRG5 ˗f7`5/4aSVRezʙP&éSQlzlQn_~(2ZБkCW}ˡ$\.MY{TX\ZFq&|hhR 4`uպCu哿OeB߲ +=-iAcѹ"{vv]<7-Djp{^fT==t4S.W{|YC*jIҡ1g󎽱D8 +njmc2?snsZ5o{ؽ&aN:GSzVZBiW,pZ=Vd{(7|_wqc1C=7gهaN8ҔpjZ&TuDM\60}}b\W.9p"=O~d5ecMxo#` r6mWڛmo;-'{]F"5v(]-S32ti}n0MYG>ckOD +]G֛SUnLg9 & + ]m+o@rY7̂.4I8}D R=B X"-C]tf ֊迀߻ϥgRTd>IKNw߽tr||sc"NQ ]pA^vr?~|q}Nw/.9v``(0nwy/<=@D@O_Sum7 #x 6緌kD=^Kbw//<(E _:kDPdߞ_%1[bgBF=CpM(MZ*k4 ~!<XL5MvEW6_i)aw2} )HkI]{dI`=l*\_;SWirr0{p>3|Iw" +Ou.rIW/߀bmՏhx}+Mvը/ۿz7`n6X+tN[}c+6(؆ҦNSX1ÎiS'Pc+6(z¦N9J &zl&$ Jh 8ES* O)T^mCc)er <;='8SFz  OUm$?tjyGC ` SJQԼ;i.5XAU +jv܃=&3ƉtIћ:/{H]8#XTDhJCG@EwchgEěwi-^àA,:oZ7vjuWRW aed an16SYOT4 !+>jēZ]8M/ sK˚/S&X%*Õ T137+-Չ؊(Af+kqج̋NMJAy4~]ev3?4Bu=l;PB⦞Y)ʃDݶ!A84;̶!G/ nO\kgh٩UDV7_-Գn*w8q]-^Q³7NjH~uETܩW>L$M`(ZHe&Ep[a<8L.a!Av)džrI5Kj۰Xe+C+bm#EHZ])38 ]5b^8H SZc SC0>Lmk.ѻDCXJb3Hnt$@_(F8 }dAsRSR[3>Ew|z(Z46cf@v> +`قSz}!DGSBYT|PHծQ&kS<|Eo7 y_ 6}+GB!V#m1| aoL)vfbZ-Ň%_hF:# +qӲo~}xi|ϧOԿ-O4,b9QGH|yJYCc" qzqaDy:?̷!w]^>1EHؓ|Pls E/xRhlaR.<./![ +u[ec qRs z?ݛ[xڐ琩Cҫ||BL +b ;P͑CFv,Ha}'Ol㎑,cP 7( }p4y.Wh6B!ޣ sˡ"„Ǐo-"t{'ޑkcahC +ha!wސVtH'A6M\qVXP>)(}={&  E4Ld2r Ӱ8ʖk} PՑ>̀<߷-4 J/CHD#H gr5w9v|( $+wL)f[sCfTqe ~,鳵VbDxYVC=% >xHOwO?Tg83B}> .UǠא.p뫍@a.dc+"X>l!T* +& rdIhP+aqt*Ⱦ|;hOkzHKd ;ۧ*MJo) ^{Yc3[ j' β`;!%wQHpE[۫_ѵD`̕x]g#$G!qUVK;eǰ :vSw!l3=#j^TZjRBJ`gNzdĂ]KWÇbsrʱ8)TSFW%ԔsL0æ7<j. +endstream endobj 5749 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5750 0 obj <> endobj 5751 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31085V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5752 0 obj <> endobj 5753 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv45749V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5754 0 obj <> endobj 5755 0 obj <> endobj 5756 0 obj <> endobj 5757 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5758 0 obj <>stream +h[َǕ}ǖJƾ FmZږH{dcP]jZ4L6W|scȬj#Y7"w˛>{9كOͤäO.BMbtMNO_gR&MO<ˇrI){戛cL)W^AͩBx?Pqś{(;=ۇL]Pu4nDܜq +b{񷧿?{ +3E4朧ŜYeHyY=/ԕY0q7sOr C誌t +B*Ѷ@r봦09rH`y[Ca\sRLfLyuxNM쟘|3rԭ2uǯШ n ]vuxϳ_\o{}/o_??L7a:g怉e'o8^Ĩg7l:226wl#FnVIi.:3`d:`_0`e[ok;kpBYr%RcNsp0iqy;hflqPj@w'fdЌI&!c]׆=;]hil\j^"3Rpď)JfO,A\1r7 5uAGdj;['"'-BLĘ@H-Q~e.Ze>Q& sݸYmrs eH8)OC۳YHBIznVҦ~ }g=xu\-y^x*zM~j''72 >jYs 6TUdp< q.J܋ܼIHs3[]du61qSZ)S#GpؽEVhe)j-g>|93 ^N,>G |=`ӪGgLGM}!~6_ݸv`\= Z\P>֩ qJТ Aõ 2VB*^H1JvD#m.-5@tf7Kh-PO͊t֍qU= Uk +ؼD>XΗHՁ!yZIeY"4T]!$#Հ\ްt&B]w‹%>tR\h> + U9X"7Jkg%3D\VrWd]ae~ ͩ-hÍ4h*g EBT?y"W>uu\֬B-x:p+U7\$S(l(ۭۡj|-5}_RcTF2۪"ƸF4LA0 1Y_.ُV*W"}aumtBL*iBE6b؀ר[J4!Y6E +U/U:^U]]aU`%PEӵ=A':7]7E$r[sh:ʷtir*MޢBX m +m i.4+>vmт}saAUcqkSHCah<smF~$pE刦Ց^rԳ숍=ۉ=,nHpY]['u=+Ͱyux\+M3kfJ|L_s R]~Jrj?5[ Ivbs=uT=>*[4ƀ~(rvhP7=ΐT8cU߻Ꮏ.R3>/!c @gRߠ]ly|HeKӢzP Gnծ{-.Yz_n1NbbG^wmVI`A&$־g%|4 M@v0ړ#Z>mT G!Pњ~JUNgD})!.YҁsK9:f1r`{}v:VdLE?y9BVtGi|c Guv4b3U}j;p +0.a1SeV1Uy}Vm+򶛃?ڕ1WNiIuɻie @DODeU䬽 ԄUG=, S֩Ϋ<4Wp55kAX`B]RT4F>٣9}dр!-]*,h1(- 2뇊Gh;dI^#)D.W 7[lPapUR,{[6%Ze.G IKb_,4@ T]mh FywNoɍeH[^ٖ%Nw +H 4O<*JojYzn^ٽȣ]idA-lqOzo_J 1"WU-XGYL[.=^/kaQ$U)dɫ8myvk5kxܝO ihnf n\Ք%[/45ٸ4|SIT)5.p*ƽLŋrMUu7jze=G^4atj펬ּ7 ZzXl;AɡSRMzr5A.L{`ZX:$h$ :u.-rBز J{XPגӋèe#gKɠ>ݦwA qU[ب1+tVsB&ʗo<~IT…/&vU1))Bse8潼}dJHD 2f.cųZ,$Q&TѶXѶƷPS ($,1b%n:geæ["7T +1_CA*,'=Q;Jt\Mqv"ؓQVm.Oweh=8|WI*K0 +BFɥ(O ,?h|2i Mvz<}7كϞDXmD EOpzZey?x 7;7fy5q&ֳ͙eu0nT/ +@5f8[dr~yUA 8 :gߜՆ\o: kltx^}Uk 68_ +ݥ>T>Iɗo>L1¥徖䉵0XHL‰ Aɿ{ū4 VӘo.ͮS]y6vn +ƈn }@`/z(VQg*2uqmfooG{՜u*󣿔Gd{6rGUQ:bR)=Ջg*tu7!y^}wv~s=}& EWTYvFj緯/Bv*fN`hwiQUUӋ2UX1=u{-2fCw næ@3t6#PppmvȈrƏ>Y;0QBgpQir: 9"v6f.=l>}o!}$Scَ!4 G(.M#T. Dibc\k +F8_s# ~ .P2"Z0|#W0 #ء~p mO\cZ<+,B +xFi* qJPк0jHڊN`@YQiRԨ\㰀%({JW!e J_cNil xгl?K}`?^[ҳ&rlP늦0@֩hc[w~Us ++ +gl$ir)Bl[s~_Gfs0ݐ{E}ӚDqݚ;(ilG +zKs{\m@x1 eAf$%60!89V|a,\9-1q(7(a)b%^E9Cn2|"*0"B2%$S[wKeِg2=rc5/J$hÅe O@ՒI:eaM/H5X`eB'cG5e6>Paxe5i+;3Eir#8 +9lɥfh/߇X>7޲*8c6%usbz:1irN*o}F?+G'ւK9lj-3SD{3kqZ|&*;v&ɧcfCꜥ%S5?u4S,}`@u< ;ۉюBp5@eL_q(pD'q8CAg? qوg.oϪA @R˳,FjW :=AApm_83Uk,_qXͤqL+_rUx@o%{a)Y9;+?'m^5YWjL@,S~=–a1}ٕv 7f:)L-U|(_*4`~)]΂>Hsd}!Cw,}_y];Fs?\q߯Gj۵'PEe^Qc?j/[cKXI|gDZ.D +FAaMF2y*0dpVsvŵaasdkXu`b}:syt@2Ctc?kķ#/u?7g0THlM悺n)EZE[ɶsZ~MX`b$к7wgsFt]D8y߻ f1obCNܫby~q1^-dw4$M!iرR jG Z'S˫Ւlk݆AJ50qhLKszl9Z.Y 6e%9u]Ј^pef'ly)#2u'oPJyuCCè zʡKk;VzDwh4:*ZTah.r091(! O"Ow mfY@A3н,Pc٫:#Tv=f|}fŜkSt]>__c빵~ gS[^x{4E,l#mG-ݨ)g/3q| +'1_xK_u])2 GbȺk2pl F]uv;䝇qͱu0:nX?^_+;؟[OО&Yph:h΁}@&fl[ F2/vݖjcfW.Ia 2KZ;s+yٻ>SrÎ+X%G"fgޯ~(K[y +XT5iȐ@d;"~@z c(USJW$둹$e2K@CWŞL%cԡzNY t5JX!Q%v~G=?'$O93Æb^־8FdT!LwAhd8S@Lq fUC@{{Vs$B"ˀvv84{qV˧I'>m +&}q'KzbjAW91+ϣ?⢅gZk$"U1Q`a͙-c~Rc dWxs8qno>gN(MtFI&QKxj69T*q#$U1WKk)*_zm)T-˥"pcӜp|EUvɅNf Rλ )ƹCn~!Xy|Ҹ:)-qO9˪w`/2ؚ" ޟyk9 lfOk =39:Nc50) $s`'?f& RSZ w L|/>*bUjTf[\"T B2 =`ʇ|(S羔+8 +endstream endobj 5759 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5760 0 obj <> endobj 5761 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv63030V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5762 0 obj <> endobj 5763 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv45743V3.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5764 0 obj <> endobj 5765 0 obj <> endobj 5766 0 obj <> endobj 5767 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5768 0 obj <>stream +hެ[K$7rcII]7`U5]1FLKڽ;x00b$_<7_xvW3W6)C'gwxn>;Nl +~8ͳ o?c,|5VU[x(e1|O]gWKVZw*I?h)e<Һ)D$u9<~g"Կ4Uxw0Fp R`9S@uԭS 0ߙKlkGH5:hjDWθo`=$car|*%>?hy*v]s^Awjݫ|d -0Y=o1(0eydԔ)pt&cq7tǧOχ7߿5ɻßy{3@=(}OFˇPG*j_>??}g/p+Mhxrhs(eHHwG;OC1TvZN&*f]p%;ub;:TBquvtpo' ++i\PiTyط jh^$Ehr>3)$ښt],̊Ar²ڈ%wn2%};?Ƕv~,? |C|a)UUTL@?Ü2j80PVj+v4q<\zh-H<:1`7ȸ ~{ޡ[|frԴe叭\+ccRԕ9Z+%[4wx]pm]*EFTe,7ۅShw S-zFu<~ Flß-ۑCÖ0蔦GNUV +:J*4V ~4Q9Vu Uu+`pR窐 )d:6oZ%毿/Pk껵[Z8^}mp +]E-4:D\'juL)>6 ڨ 1$Zz'XjKwh#D.\em + +e9vM^B]!!$zx>Ey/b߶.و8)zQ hѝ:ؔ)z7?ӨTVg:s]?ʹVvAR{ Q`F(x5>SL' n 16Li;lNjS۱\ +( .kPdy:޻O; C3uaZ[jݶiVvs[V#M)r9|m`[*l]Ki,~:A~Re0 4Y~<ԵɃJshId]V"880=_lۈ9AgN]zfs7laЉ͝ʼ+7iPŪi2}>u8v}@i4Z:FW݀H&CЎF,l Z~i2S)VaQ"NHg>{K=(tb_°0(膽 Kk=@*oV FBNiTF,S z8Xl][L>%< ;"phe{^[SB\"e;8:!&]fciS2b :YqDh1ycrZYOm'UƕFzGfҨ~`X1QWPavt]d>Wb ThnqrXsb߬/y/ +SjJ{W6aͩ*v[w^Le-ŮY̖vY6̑aw?T0w{]]JV]7G9{27v!\uana0}Krm,oíCf` xf8ެkdqt]puHɤ4z<+/d +nGw,K{3Dtkhqc]ps& &Ɲ0q8iT2/<=p 1n 3 +Bgf.䢦K^5Sܫ[ X"YӖqw.Q>PTmIv" uHiXTZ@p.O?1qSE ؄>҈1B ID{Kt<qH>TX8 CwxCȟ](RovyjS ivXU:,: U_E8{5?{ye!i +y ,1S䆒Q0]SF-&SLS(cx/@E!e&%LtjG &Z@1|Ɓn /fk؆iCsL;T0Rwi)a:IyכS.oj$&.}Mڅ([bǁ#дp *_w;-\wfi}!a06F;>/ w J*۲=ejItu#"۸HXf!OO Lp u`(0$3DP/ /"%Dݾm2=Bw[k1la+0*ns^BJE-nE{} x䎐<8I.,*]tB +q{;I+6j@5odSG$va! ;]Jbi|SO_+PjK6xOMw;u2ҝaA$=+ͿKY]ܹR_S8Z6/`}&)d^? YSD'kwYc0{JwA^-=Ř8eaTGSXlO;vvUbeL`PB KMcr4~ ]4U&Cғ T}V :{!٬8MIG*K5VNjf#؆5Ͳg ܆_Ea7 {C{A2EIhB#5GI#3IiN{򬫰p#10OE eqxQ|J!nuiK?wroO 1d8ʮc'|k+ߨCT* c!D4H%af|WǺ.@{fn9Rt`}C(gv{x]1=*:&Doxc=nKy>vWqTI;RyHXle!ԯ_\zX8-cՓNIf޾lx5EqL JYD2 YI04 bW@^';,N9ѓ>n|~l~ {gc==ԍztxqx?=a;?pxhpF%ۨHݗW=vE$޷qZzb߰݇O{ۿܻ#id0vj~Ĉ¼Uď~?Tu_~p>?a`T~~pezxtƶǃ ,&D4Q۠Hׂ^bQ01.*J)Yk~9Psc,vA0 ٥ٌ8B(ȧ1}Z Fl߰ya̟.aA򀧸7="*>n&9y:Z Sb@h{08.z~ڶq= pU^jwpTV0`3>˗m+鎫:RL4SYr5}5= 8r|6UU|SZc.fg^$7NvVA9՚I^ˈ9AOѶ*cóN#gHv=na^jCu0r Zgp ʵxʫV/1_/^Y)ڛ4sgW.j884Wq /HD% нŋ1LGt +'K %i+?6i#f|N=_$9hVaoʶ*z~O옎8, !4mCp!g>@!fzv Iu$8BQ[ḣ2hn{/~(u-գ>|cwFyW^2w 'ɫ,<:y;ߚ֣;LUΤ+Tu@arvdit?\#s;#J&!ɽ +=X /}Ĺ:(TUߨb ՃU7}6+.dF8i(%ρr}f`=r{ 5tHU ~sغ Qwdyd)CWۼUۏ> 65OzmZQv0 +w/uҖ-mz;9)q2iH2$.ZM:saHR{:u^;+is]f(wŸZ3>N#3s>(,ɬl-ECN + S c/sǻ`B +endstream endobj 5769 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5770 0 obj <> endobj 5771 0 obj <> endobj 5772 0 obj <> endobj 5773 0 obj <> endobj 5774 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5775 0 obj <>stream +hޜ[KGrϯ裸+ߙ@Ki a#Р$,#㕑Uݔ`TOV3"2Gt>ˋS[Z󥔸OOǧe]}ܠOAu]c]SFo +K)?2aoiKܰ[F+@W,6P: : ˚='.>0ssqn$ssigeijF OOz[u.cۻ%x Ν;`Wix7JF/7H ~Du^/to#?q|jegn |헶KEVsg\F6ՠY&4Z ,Jx +bp 5&A+;lbZ Gc{ۭpZ W x6;98<&6^nc)+]xxtlS&_;6ѱo4o-fB +>`;1#[ h_4s`S`^Xhu4K͠G>"hi*_d)PݲAGI|0 +=:*f <H+`\lw*$G;`p +Һ=D,,ƒKeWywgu]JDcHZ'Ad .E9w;#S!a*} +WxYވ(sަ3 +` Y ^qYfqI `vvػFZ$<$%fuT^^,nc*n+PNbmz-=%1, r4+NiGI- gc㙶[sXTQFCg:a\dر. E ~ED'Q,VؼOw/:¸)wu͢1CDtL83E &P!ռGB2ЅǏz7nM:u7)Ł/X6R Rŀ a\<@[5CNjDzhmb :QC[j'7\.AtluW6~ZJHq(eDQskg6'{;h+/2[doBIeox7NlADYt1N>ɑB)KzYz9;n@X$vdU|QU3=w  sQM;Hө,-bgy~fFX,lfT +Rb T#hm֘;昶N5%2F\l`:[("KMHkK5NdבzXb7s8܋ێp)zQPXe2p>΂~ zlh,6@lGUw'X^! I|GD%jwٔH iOG EPf?.k&b:Tס,(pēhX s 䭊g֓xx2ef3h +o}gr)"GZVދ! $ҨBNrD>wOny]~GlIp7w}~I^rŘHՌPT2Qlk%"Y.@)f>a;! w֥S!9c[:Asw:@DCcDV3NIV>&eՏ`Β9NG/gyM_Nd#Okf1$f rg}TFH:6i5x*xOhNS:PŰ^wWՓ*0B'I#hqv@H-r4.Ώҏu]UuZr$CkGÜ WazqJ:Pū7ߗ^ƕTȢ boK:v|xi;zQEN^,z{ +2Gtc2*[qb۬#hPM*d!8@D<& ,9PIe+-n`*D)WsJ>Luo=*E!K6b\ +,V}MS6W6*Tה[@ Uy:{0so^@U3Z>25t**JنQ6N'),vHih!?{dyV<^{7m=#;u;\ڕ>:(Rs&>U}ԽSxvOOg\&dۛ2x&jjg"CoO +{iQ:iЛPYc>h2b +5-`ǩa!;QצҗDA6*S#W^K(LMTa_zxc')_BeѢ2Tzu7QBӦUNtuD{~!!m3]4HZV>0[ILƒc6 ݐi0t:?0t|ۣt =h4 x&'l} l 9H`72\Y%:S|? ZFyӞȥji5qaڤ`s,Zo\QϜ{c6p,4bD/SMԡvT6вO)T6R\52_ٝG\|~GքN~STr݄CHnTiHFwAh%qi;ׂ\,EQB5B5Ɉ́_HUVgFbObJ%[&e*pot)+~Nhj-vpƆC;)|b}п]Ox۹x)~O_ +0ȋ;-Ї Slbցi#5∓|H9ΉkᶛحԳT(C<EX(Q7.3n̓3R;,rm޿Dr_.B9~w{v}ynww‹ndI2뎻 0! +endstream endobj 5776 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5777 0 obj <> endobj 5778 0 obj <> endobj 5779 0 obj <> endobj 5780 0 obj <> endobj 5781 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5782 0 obj <>stream +hޤ;kWGi5$0༶Pq2VEz=kjbX/M~ݝtpӦ2~ ApSKJB zY6:n oA/E(뀥C$!Ԃ;e\R)=e&n ʔi,;XV<+H\S&ì< 0 +eϭKafv ]AFK&lj( OǔO'HMQKq$_`5M*yiybҊ5$&' ͠?cAL w"DUH̝#7fKP)B|a^&z\EB ++o|`dR50NXJٰ׷wb c`?n==|M-ol d즋bO`:'^Elq؏ + L6,8Y* >/ww`XaѴǣ:7`F쳬ɑ-}?lschiXBNx>q 68 \ a(^(:~bTˉsSUj鉙Ee&*u<;`9cGYԕh @ttAkl%HGWߏ2s;nUgH&RD!3Ĝ+0lPdc#,cB47^*Y$YKqc  2u}M 9^6`h ^$]"apPaM6"JLEr ΂H:ꌊ9&Q=+82v=%CG9C X_`++g?W3$yh0`E6 e/ Ȇv9BFuO-ufw|_GlE&&$l7k1% ծf.m$K(Fߵ+ +/|[T=PVyVz" @761'j;{pڀt_\0-ԏ˫_F=(*E(U1}mh %uMjQI{wʌf-͖OHbZ;cdUSs6Y˅E}&\FşDR:?/;C\ $Zd ^1][g:bP$;ޭ6+.xĸ]GHƃDd]kzpu{QȔ +lΫylhKtH3[C<pпWh?GZ`h;md'.QָnD$v\#u~m&>w"!KEzcγ>ٌS^Ǟ%P w~` +$ р+`l y]FЉͰ=qV +w/puV'Bq|O,=EC֟W=,W&=FL ]YШO啶ڻ7xʏ],i)T>}q2—g_*\]zDQNQQ-'{kR6J?Q K\MYJ~qBYX/WVwk^IȝULzf FUK0HѐR'I 2fVΨ[4dmfǢ茵ff+,a8γk5fLT].|c\[W20iƴhDs=Uąd3>80^!q/k/V+{KZ @Lniyh9ҚB[\1BH0o"rj#+tW4v?blAr, M栃X'TԊ kϾbQJض+[=5L,{;(i(j6koJ*rK*|ɦy* uk54&,m:!Wơg:+Mp4 +UGz]g@l&$3%㒴_{an!s4*,DyޱOɲCk7Y0xJ~seKI$˻3̸:wԧtɶL&_%N!\爵hnU\5\V Ri19}7/ix# v=fUgW:8ߙb$Q8F&HmR4'99qDb[udT-&8OOb3Va(i\QնSԈhYB9UZ]{^Ƈ{wLs| GTr}/;|wN/ld~nyH Ov__[[y%ِ@Y-t3 =R}0R{O4_$^/}REL߇PH.2S\0OL AVL 6!.f>%_Ew ' G3΄׈aSFT.~8o> qg,$XX儧VsI_~o^i)WXELV][a[7i_/2ѫ/[2gNP,+r\@ %Ȁw*d#Uw{!'&|t)dN/>|??M?Nna]@w|pOH&~}|iz{I-f64/Χ#v0<%|oμ"y3>L "shmZR7Ȧ໙U7ŁH⟧Nqz=#Ty7'<92_%# ޓ,ax :cGV,3l!x? ϏHPsKRH0<>BGjpn! eD NiE4/Sr_ፊ<;]깶/ [_~czs̋:S# pZʞ-+v"y=OC| 4E(3sN% f`j2]!]~r;C O冊 +2ŝ7|#ys\=>&W38g| +pnG<rnqK>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5784 0 obj <> endobj 5785 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31092V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5786 0 obj <> endobj 5787 0 obj <> endobj 5788 0 obj <> endobj 5789 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5790 0 obj <>stream +hެ[[\~_qGw$5]LGc(lDr'dHXԇcz7~wwwaa[8C,56xX m@OPw.5sZ+T z96# 0ae :;˚Nxn~kp'CƔ jb.t ?va۲m۲mmxp{*nβ"KHqs+Hx\qM +((D1k@K\@L0 mo30#-`0-m[[ZBX|^}oeyͭ.Wn%-zc7O`Q-7(%lֿ^/~}{?.G\>W%OKՕBP~U5N[^ʑʑa9K⚀ +-V +pVW Xj rT>u 0]9#꺥0·Q +_k߶_|UZ"b C$8 wYCFZP @fm4a<̛y͉ + + +PkO GBy'?-/h;\eG֢3*q5(-:;ЩrטH `B9mJRTՔ6b;{6VGaNRE~x֊sYSZ[x^oϋQP\Z_* +E +>-$jz}->#{_@e_w}ڼ;򞊥H+Z'$y؜֭x*Q ph<. Wfvd3i*Ut7kSOr{*[XΉfKP)Jf#L Ȫ"yo>m [36Xʨ ono_"L_S瀿i +t\r0>˂(D{" ;5ix7T.YYCaUvQWgT>UJA(bVƁM<-M!!TtbUAiB釈Y0cre{]K{uj?8rR* ғ>I)cg +H,:=Dbp*%X-ͬ8lƋj7 y(ጜfkșC!(29xK'YW&*ؗIҫ|ؑź2Aٹ;9atNGNnD8FHNo:,hp(|bB?$=tHA: }f{"[Fwrva&^̌`fmԪ[Z /*g4O<8$9ӻc]; p9d"~yCwWI::rc3Q`C\W;ofצ|yP'nUcW)N~A 4&sj׾ 0;Ij02#1)" `0w6ܩ;l֒uՄpu`q8ݲ>~&17^,ƭsoA-mlN/!ݤ{ uz<{ )b8Ն`QBN|a,ɍg}1P"=cAp t݆1'lp͎h  pT -= xf!q1/Do\Qn*P<[SVI>} 3HHϡ>1:4nGDmٰ'q懮mu0Dl75h+<7Hvi4=;BDdNh$*tμsY#%-'CXILV5]RV]'hϣ:O-) H2.# \8wĮz\zx2r͔S_ӑܤ}켤 H=13a,v})ݜs!0"h7by]Tɓ7NPw G\15$R4LOFLX$DdDE 'hL8LH½XO2,a}K:]5t]A,=vivyʪ(Y!~~pPW=-tOy>&&`iǙ՜b❯vga>O~ϙl3 {;3sC+ +"bΏ +ѵvE6&O Ljh`u[&# Ardm,ؒ=\4Y&}.[wt.K<؀QRI` *k$"8;s{j|u!IcPb( ]F pN,I +C)>s#b\k4@隀~~b,-44E,U7c&ܙz6b@` +sišS 8[ic/_,Uė%Y6:k>o^ x^W F`ac<`=BI1 0\&٬."ԢPV琞u*)ZKu2_'I3x5H'0ó$xokŏbc #Y4T.e t#lCW;v!9",l |ptMzeQg>sMwߚώSO IwYqeO B]Os.0"v' 05vBOZaffz%ς=e +zo؁UxɛQOx~g0(IOWt'-4C9񴻡"&_<[9ayi$kܽ*O$yEXېOo V9%A`Rq6@Q-DؘnWiZş5=Y$15cN&͂@!pQ&g82>L4M8=N|3,_MVjv'fOrڢ ~B]>fs>]E1jr felA4V71̜ʖcqZoP%3S}+ [R^sr{‹TJ($UCq7OU*$ZlBK5YlbUm;:$xoiέJ y"W#N͐^[uJuvPwJÓ/=>s"5^nZ11rTNiѲFrmI.L`_T%hH4MXh[FoETe Bm[d22>9Uk_ (s'z+IS|P;I)1N+g@5!# +(x* 1?D!z 9.Xh6o?#POCF]sE_@j~4Ⱦlx KPY."q$z;I]5 ccqz[F}+ؼB)7Utkɯ67A/bui<> | 7y.TYdIxd}[,n$چv(]L<72gύLޅgFF|>_ZsOmYSt%lu1T[zkjdogGnk.nPt֛??o&3"Nuֵ!d|x s.}@ӂi\4{{,b %k,פWz#X+*C*Xrz98q(Oz+O- +wY3m`H@])IѓQ^ +<+ݤ hVq!1&yv}g;ƾ=[_5Sp:Y HQ[ +hѡndlqf7 GYffŽkwD;=Qf{lC4a| gza%\yYG Il^W⠁Z:FV .0OUr,0<L4,BO%Xo)V893Cl;Wr߂.3!+*_]|P|[j2`"4DrJ#rO/ vTe Bd+ҩ0-ڂ2zP1Oi [ +endstream endobj 5791 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5792 0 obj <> endobj 5793 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31093V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5794 0 obj <> endobj 5795 0 obj <> endobj 5796 0 obj <> endobj 5797 0 obj <> endobj 5798 0 obj <> endobj 5799 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5800 0 obj <>stream +hތIO%~E!ʫ};D6RVa2 6ϷVU?`!j-w>ܸ-7wXi4kbaynouqYs˕!aaQW4+"1ajN4Zyp&KuA'^2/@K)фT"[Zє+&I=} GQv {LmvL O@uʲ A 0VNL<ʽ#41R +q2OWCkm1VN1[<ٔi;a}LV ǕdgG5LMq&5Ը +[\23?n,~v%廏׻ϋt6"n޺{ i`huI Եi}篷׏On_>9/3pfl +yd-܄4{kR yr/p 8KI&Y{B([.] 3 $`'H7dJ4_pnTvQؤȀ#y2 5m<^ h驥- +f`]Väf[&-"2K!ՁJPkB$ ;02>:(;J^'n8 @AXqXցS45>@>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5802 0 obj <> endobj 5803 0 obj <> endobj 5804 0 obj <> endobj 5805 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5806 0 obj <>stream +h޼ZIo\Wsiwl9>#P@ٰ8?2dN P3WU?㧻mwʹYG_r1>oD ;xgu?A?w`m&{4:SFgkߦ'qSeF +/2bg'wڳGyp&y}OtQqiOiL Wsow +|Zk}|{x43/)\l7g"yDAIpz䖫9ybѮ\: bZ㶫 k6e /~c.lVq4cs8|~u{[Wݾ/&+[/OQ5:L te;H a7zyoOo~O~|>o~0/O'XAY-y8<!l42֤7"@@mo\J>`"v0-hEcO`^N03=-8z*,vv.tm=i6pz`N=.psxƻLmL0p{gMF6Wmz7jV[lR䆣ɀ2;!}+$6KN|-ٴ5pd5LrFe#4C: ׄH"Nwx4V)S}΂5SCfLbM~/kiS45AwH_ގID]y4s+l +2Yo3>njjx.\7xo7CiSݣ 5sQPG`h aO%" CcL|n.%7 p疈*JLro06w[vP#$& Y|$)FMs"|-ˤ!iJ " QAءE48 +7i ؉+hd3DŽAAL%Cǝ wL '6`߽[TI0f!"5ݛIeHdT)B.Dq9P7:?99|P-HÄN,Naet,.Se8i=Ulن$3Ug>=/ʉ@qDINZ,nG$ǔ`B0D @8rV$%\!~DuFQ|\Y|u +@t%nB.x <ȡo$ oeʆ}瀥ZxE9@rUWdT`2trV & @0#)V)t\zE ;іKi|a +f-$˩98z(dĥ s 2X=dwn `.o i +ww +).]a%l}DEB A|sNLǝsH&~Ʈ$IUXNJ(ZA-o*s? nb3i9 +PW'k&hϷ0Zw5 4iOZ4qY粛G:š|>?7B ѿp4& weHP2zrɓ{yٗt'i(̐z'1A1*Fy8c_ɨ/0QgIuM\)Pj*w(Rx%aг:a^8jñH2 +p@{X¹JBQ &9 {G38=`q +!=yg/e<w@|kV%I8K71+AuMQ~Е=+B0(%OȦ9T~F#3uN9NeVm+V*'ޏ׫JMjR0񵐿Cv!jH`۞g鳃g#$yQƯ6/A3DE$?wӏX8;)Ebvٍq.x}B[?˺~fq{STcĢ^X$?/(vnZ9i9/-=Ns$׺Kd?Z)F*t#8g̴e3Î^byUsDGS&áTG-$_@GP +endstream endobj 5807 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5808 0 obj <> endobj 5809 0 obj <> endobj 5810 0 obj <> endobj 5811 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5812 0 obj <>stream +hnί#i`Z]{U0e!@HB #ሔSb,ry[m=#6BTZVoY o.xq}5\]ai>ipb\iRv>Bod|&?*;7jU[pKVqީh/K[7_-3~&2րplǰgyܫo + ;k833pi`'{Iv'aN}h`> +tb_]_|8ڤцBp1%G?f:2;Yx0j7z"%C1XbhtCoHMPl#nPnT7{Ƿ_T˯^^2SM橻2/_ @OEK a'-}8<}~'lUh&?<a"D!'A! Ƿb%;ЉmmG圴wڌڍhq +A i88*6=N^tq{"LĶ7VpBuy Ѱ'k\I1X0CTz`WcbvvJAwЮj pJ5AOo=zd"-tM܄٠T 冢4i(QG֠'_$ԜA؊!hH;EӈI4҄F2 DX(0@/輢F BhZ V`0T+ ɹ ecttM]y4 +ځۚ[fp1#@&9 +Aƀ(!iOgY Yt`5pNr(־ϫ_?/g,؃X`>|{ceŧ+рG/a *ϩQ]`Dq2xsKTQ%-=^e#&qh!DGCɨHF/kȼ2Sʘj E2EQ GlU$hZA^ Io OAi;/'K5`ByP$Ww?,%tԤOleb~14L52g3U<>ڀ(93_ToP[?DCU$f18>!ډą40z 6 2:6y2G _HH)(Tpqr꘷EmKUgro%e$m"#(-Tz! +73gbXpBlBPϮ%Ҹ|bŽE NcqXh:3xNEB!,+x˱wen/YDk ee-6ZQmUQ|&VDJ +Yg]\1s>;O +p +&Xwľ(R|_YtI8̀;.EEftŦD()G*@p] :buJf\D=4ÏsZyhD9tž:]8̇P4Bt +;kC7 + CaF䦔`$[4nj(Nq/<+{%{6(%$+Ȫrv:P=;=7=qlR6cpv9"$I]PXpLT+QoviKi̮:4RX\g-͓lCGU6v*i哮޼Ovs)Љa`ɬ:FE B̜<5&7n@ɷQgJP !In$᝚9^J3Ԙ5]bvSAwRgRsj|_Tk W oN60:7<̟dڳ$WmOvV.ć \ah}x.o\j8WWXYG{0wsM|zxv8޵C~z%3+H .nn]]i{Fo/o??=Oz|FLy}n~ꕷa]a\z4 Kvf&Hj"PjnAUC?TFM}(58׊9I]0˂NJ=۱fijXvvhQ3&cFbd}oJM~;S^ji, k+3Ov6y~ˎ;ݑc2g=m7 +j +U.kC9 VG:/ Xjx1ODb*M69OAe{ \0B,Y=N^ }$SU"& a;NVFx?yV Anl)Ho1k3\(;Y|skJL8.`BSbiI 6m٠_aȊ Sޝ! [6}QnaQcMd!n3 :ONp0=`H0ؚmZΎǫm!tbQmDlu PD*]`v)sI9 +endstream endobj 5813 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5814 0 obj <> endobj 5815 0 obj <> endobj 5816 0 obj <> endobj 5817 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5818 0 obj <>stream +h[IǕȳJƾ<2 P]d 2H 4[cjҲ/Y[".ӻg5-CʫKKaYZqeyCO]x3&c-^{WeEZDtq |_#c-J-/vWnf^;mq,4aGi&}lظ%Ï-|uYC,?}|z}p}HfngZZ%RX + "^V)ģ${.qa%[RtDZ+i-h˶;,iAn 0O,%,d,6qwxmnO?,Ӛ]/_~$5cYY.Rjӻ?}t_?ӏ?/?p_~߽9-૩B6i! D,3UOYc f$eOeOe|q~ Z}RXM īՆsIlm!X68k -k +Y-) 3lbDeg=j&aVqnMHXf.4@uE Zkr5^ciQn?g#7.ʗ6 Fgau#;/]`>}RfTy':h:~{bg}זĻ#IZ)E($6 ŎHq?\*MT$"L87d^;uz3Aޡumii#4k2 )X4*_ۤZs`2RAª7  qW"Dp=eh(oEh:AKW6G0bt#x8cHmtAm[^@2#5>ˆ7Jf;6n mӴա_y2;}2,7 Ķc?`,q7 ٙ‹iʾWmNA;4Nא{eEqO5@MtpD#r0b5>=p݂ljCԏVz?DBAP z2]ڸ/m1 Cڡڃ[[torͼp> +>wuj_QOrР*ڒ"4p$}x$wuV,?_,VbYwXhݚ#) l(ƚ\H.E%oAD~;=&MlS \YGMnI!#]#}OT, +rDí,CXu}{#.y6o7rmmnY̺ўNa40`7GZ:h`rR] M3ngھ`1yUK6km'S2fV6ö2aҥԬ+վ0DO2fmHQLm"!ZFޫ\{{īp{ zvg.eU@c;NZț:A&(tF&AxkWM7${B/nj>K"ka׾N׉ +ޚҤJ3Kb |}H%LF&S”>M6JInsZm13f%>qD}_)0Nb%@#ppb#KqHs[s荦M]f/F"݁JiK{IJd]bWޞSOim3 U(Ko^@s#{Hd(5EvO*Ts#CJ1ؽN{ +XCR|%ck<&-,D E0xށԙlCKa'M-k~70)oQ}ZFCO(6¦,'2Lϛ,wbĴO6jTI #(~mBgzbIӁ8.Le\,) [eO8&FVuj%U'dO,Ʋ'p>pID̳OIJOSZp2Oxs"Y9 (6Ukn\KqHO$K]Mɚm,{H*W=sӊeAMCQy+"jKӀQc4$J }gEp<8Zۥ1:>N [W1Re8*+ ئÍaE`B֐ RKeM,/&Z!`wtIez((c)YgwݐahFIp7oz)K|x9Vty;Tm_;‡xzu飯_QUOĺ-8s< <] $cT}$$OƋ_ +x}$K4Q%_#?7Nן<Xλ,d58"% 씉lS ?Dt>eS]> +7MOx3t[#1.1YO;ES.xNOAh _örMS>U +'ћn>B#Ry:ϯ LXꝧu4pbԫ6\]n$Uckd>$h%HOqB&'.í1ř -[—gtءge1U/_vH"3N7u1+u·qM.J0.6jC-%0-FH \Oxqu >stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5820 0 obj <> endobj 5821 0 obj <> endobj 5822 0 obj <> endobj 5823 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5824 0 obj <>stream +h[Kﯘs1F>8Y ]Jk(lXrzw-@XW5W[ëG-keyii6 t짴zu[ Ը~r5'65l/[_^/-3y)%2@HLrfK럄`25-"t#Mpʌ':eY Ndg#<9w 0_8Py|{n~)Z[XZǷ/y[?2,G>yVIa +V`Yd(Q n? oSܚָ +[\Z^}׮|뇟`wt[ijyO5%5rO~y?~|]ןr7[1:-/..vKkknBBY.okjq!YK;P;Pۯ.%i|X#uZ[(ЊV|ruu1eOˡ'9PہNt{ɗjmXc8{]z'ej{T#pp zw=A @fAUڄՠT&)rQﴂ2GhSK jF.zߍbwn5 bFe"4C:v $ + :h!h #heGRVx-Fp)5 +D5a:v;HZSGT>v̭V#-BWǜOyokPR\g78vMjFFS3gEt$H"Db4aGt?8_i#N$HPYc:S;jȃTekQo-FpI*RB +l OFm%ApVBAσx5r$*:D 8L-짰>}b*9BrQ`8).j jDLIN @he-mlE g!zPLa+FC0Clbs(A> +J +qТc!ƜmwW'Ѳ2"\F~V5!:A83_#xy;U^1[2  I{@ B< +#T%)RЈg+]fegmx8M e:*F: Db]MҪD0%[8lNq4BPiācfKg#XZ'r ZEv1Rmiϣ>݉KǽT)6&:K̴79gRS@ɛxt++M:XyKU(&bBF|3;gz^мbaeϺ.Ի.&IM35R^µdQDQDӳdȃcgTJ{J׼8KYllo;9O]ŊaRTwf=z*`tT= +?U88+Q)q~G(@C + aph5BgwFM%S]axRtlS%p:3 +]>8 j46tVAjʽ9`[7@ⷎB ܅FH$p߽&1?X.KuT4~l}BWi(u{2n\򣈆NAfév-a2%i(R jg ^tMkJ E4:FP`*ŝ tP%IT-PK|2tH4pXӅ89OCP {gki({`egQ2Vmz'0uS]GDŽFd;ϲZec1ʵ Gn+3~%ү0I19zv/wwк7ӈ6v%F]!,! -ӕi4oSμc{>## gzTQIpv AX ~rhx!g*#u2iRU/ca|}Gcr6Ǖ8F#4pTb>po_X- c-ǩJ2&u06V8:<" +s#q^vgy,@rQi4 ֹ04q_FۃbGv,axmПm8RG;(uW^3S/=MJdzkؑoG㺉4QgLF=+g _3+[z^?uo%gt)e wÙwnS_(x7vBv9F gdl>:_4}t L')h2a a% XgyP2!;cw@pޝ䊼Ҵ*m{CT9^Bd;œX.mn+ء@_-mR-ְWQ7u%%F2"1a3=!(6YWOKe̖Gw{Z݆:.47u]ww~1a]1{gt6@:UȪ:<>.atwzts޹xV]ˣx2zG^AJs`wpºU7]^m+b< Xl|_8iǧmjM2mLox|Wz%+d-j5Kliwz1ɫsWX)J`tꛯ*sߞܝ={_j +endstream endobj 5825 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5826 0 obj <> endobj 5827 0 obj <> endobj 5828 0 obj <> endobj 5829 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5830 0 obj <>stream +h[[o[~ׯ8RR|-I!) +n吔H~( ܳof=;|/o.^ܘIO7yaR80fn^_駋Y)n~a [\Rkܸ9C^)x`Eڬ-?8 +FOcMݚZlץ45RԎP6+ss's5 ?7˛ X2S؜4s]_0 5g3,5cYd q5㜈 W$ V~лZږN-dv<Va -N +Sc@/Tj0 Ü&2&gmJ_ݛӋoun_=rh[ h 2Pŋo?t3=rRR{.PrJ> krs>5td/n]&MFKٔPJvb9"`$ +jjS BZ<WǨjb+'=ZqW.HLL5Tn $Z-{>iHicɣ&ӄN?/=(o 㚯!-qUݑfb=荛OwBgxB -Td5iRj5Or1; mtxVdoj)ƣnk],/~S=cPqbZ3w E˴ALt]*ˬ;doRusJDdmi4;R+hZ5HpT +BZ0u2Φ|r%[zh7Rōdo+F4uca<(m,Fc=Iuuȝv g`h3 @RݺZ5[{f?8OUC[75Yz])9v®EvCܯP0ҡb+daC.'"CI0IVcWPW(DTI[ĮQ[\qt@rFaNYwtO¦ιY +s bl$?Z$9ael-k Jd+G4Ba}8+-7l[WM 58n]$3,^lZ %㩞DY{=ZjG$$'iAzbhvuC!RӌhH&Wi`1PDb2 co̳Oŵj/h4/`D T7bB9ҁ3Bwb> NO(sh=BN_=z#"}p+CDxJ8j!~7>i)sPoj9Ͱ\44II?4"xU5-ւj~/G/pr6_tҜ +8ͩnaI>xK 4̣189]#)(N!YouʡOA;h{T'FWY o U*xVsj]?}vB8VEʜO48͂ gpIİ8a OLZȃ4'TPa3EGώziNf5ܔoZkX N9%z5ΏdDD?s6}on-AþDeT}сTTyFu;Pu'Iɨ>NSQ9jD v4pOd)S̠pPrbCAWŠ+ݘaF%Ӎ])ZΚI^^<GJ4$8y G38J-'h4J35rꟼZ/f. 1}Pܲ1GL\˭bɠWݕ6gip9] 5j6Xb~U$}&ؘu tm@·.j9vx=^Jd~et^_q#ZtrBkyE^t/\K!!{]򿴓Q^(׹+NgF-m0Fk<IW.ZHĢҡdEIwFixҋ.EKKoS]4_Քc6 [⭾&9Fq?(46?8ch$$| ):iWio We{T2Po/[ZǎLYnjLӒ" UfppȑAg[6 Z;D]&[LNѐ\ejݥ=2INAT +<%'i[^$#,{ aϗQ©\RKu{{6unstݾZG>k8۲yxamXsB\ ѾYvi򆁤}`b wE75ڽȻ]'~mdV Z鍜r_W9ۂ }_ +Oo| +sU^_CitnÇcyv7}鷟f %ϱ?\~.opt߾Jr'9z=Ѱ`W}^I_~|?= +endstream endobj 5831 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5832 0 obj <> endobj 5833 0 obj <> endobj 5834 0 obj <> endobj 5835 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5836 0 obj <>stream +hɎ[>_>_;Xvp' @q8$ Sk/\Fo CZյWujW___6o0<ؘ8EKˡ'$a! >calOtMcsi +3P ̙koc̘,~ϣ58j`q8sGێh6v&}6a5U.agAarz@{i7~!-$À3ѿ=-t6#"qA39+Mhd`uR؎GzA -6uxhRʀŶ@31AZK|*Mv} J X@Ph'n[rW +2"Di0C<01+cJ~,A%N##ԌQFQ> Ɠăj&9 }-X<, @o .#32L$ށ1'453RCö=6OLpP'x=1; 58֐`ZͱX"ْNxJL78+1&F٥#2854QbK&ɝV.7NA\3I^8F:*$}HuZ!,x3 N6͉uA%tIJG{l{ Ӫ +Qtw'E 8/4!SiW@vK?) Ri}'aa9-\וtٱy:t څlDj{i9遪nlz{L s_ꁡV]-z2p5RȋM5|gsbmc]=p"TpKi1(}ߖ45Y5ȟmGLFP֢,?KWN(szSOꬪP [,('rڶʈ\lw[,|FEDJ=sJۜcw>=Lp Gm@6A(|7X- ۥc[jV=Э^%U;07|.>g:HV,4|RoT1*i*!G jW/&"!ɌskoUӪ^O%,y8z@Y-x:b94 &}-^6վ1=$^0QeETh9PZ43I悲VY\İrxSTHNcTLdhM-sh1U8:60JL5LUOm;Tbj,{u}ܞGգ*E3Mr"Z'Q݌h(N< rWU#j|V1.Ah(vbŶ\Iijڟ4im!;tjO׎훚c2Ti>~U)wFD+߫{ªbx6.VuRu7!_{]{D]I8 \t7r{NJh z{MU-A/ SQ#Tݥ('ZOKc+jLzwR#O5I3fH_|[sWWk!ٽ-V{'Lk0ӹDj?]iq{]acJȗϧb@:VKCWKGf{/{*Ѡy,'Q!dlY':ioʔ +$5q)nK!R>"toa]K6Gx/s!}g5/"M2C1eh+-G2#yMH/G#'kV^խ6ű#q\ymV 9݃}-ݪ^Vӹ-%_}(v^6-O?z4LJOJb! 4S!tZDt:&Ρ!B;Y-4Zሱnj3T \[8)KWӛ:)kQ"H" N(OZ&ovUo'#Wgk +B:;uqGqGeM͂Qh-8'xTTndvujJUf.j;W#1K&ۤ(?FwzZyrX}_vI!A`W;okdl02ቿ?9jpzIfKwkdJz? aM9h^BfF|O8<kҬ~:</?O/-BO;AcWwO  #OО>v;{^ߟ^S(Ľ7OG|X#k_4\O9#ۍb 8F>Çg$hIN 5rX Y<-in p8{awBGμH?*#"(ĐaçOϰ]O Ǿ^7c&l-s-RAZ +endstream endobj 5837 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5838 0 obj <> endobj 5839 0 obj <> endobj 5840 0 obj <> endobj 5841 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5842 0 obj <>stream +hޜ;YoG( v]Cb MZ(8;~fS >frջ[;j8L48G'7t5 iy=B{hi +??&  0Zn2#8e3agGdiΌnӦ;MeqgqAf? OvHa0Z704yx>]_ Bxim7θ4KF`qF!q7♈ADCaم1`K[&` "Γ}pgfn015ĕyܯ\9y`3p`h,Ox?^w߿7)o_> Lyڿnxތ0 ;i0/_~:>?g8_4{CiAfIH'i 6ãhBκ`qv Z~O@<arp;;Nrs'BlGGmc|A {`{ÝlgKVO 4>R>ml^>X{!V[[ۨb,<aϽ56 A{#dx8N +tbu"m ,] +&!y>K!Q x:z(m.H/OajHТf;Y!m?h : h=ϋ[I,)G1xuZ 0y95vzsH9r)N1АPlc\tsS|+` T==FSZy !9 _F/, L\n-0.t?O!Ba Mal58$N9 ;U#t1OGXn=/Mv^/t YHB)Ԇ[UkEͪEL΅ϣbC F@AbZE9*( P-}G* /CKE3k-Z X~(5l j5`˜^$*FW^=~A|$/x}>|ÃL$Df<諴?tX.,e#gfSxˁ@ ΛtY\붝hE&P zղ> -vq֕^5t9ev7i2LNM] @^YP˔tK@VҪPU{{piw߫HJ%w؃] v"!M= \EС't{VCүN`W&5XBA$itF-E1 BuQ5[4Ů}]d>Ó}2`mQRSL86s(:FMb[xmcLUN)hyǩPNjd*x^*M5%Tb[ ᎗s?r>J݌ b5ZN97Mu*tv3|d.GŤhd&D'ޯȥ:=ر^SC Pj-;UV1(3|`Z!0Yylu拺܌b #zX7@*luhlhGVc|M\4z!sf7.Ft b-;U)D8"@ A`dUW E.S9Ѩ3bQcUi:&nLj2,هg<<=ɴ˖o 6Ïxwÿ*knRpn%{w?x3 +QOҗ\+.Φ +ImHghSߝ%7Lb1ueop 3{}(dU1Hcrm EL3MMDm{d/?ly!W~dgApߐ4XmYjzsͤ6"|3Ho3L?ߪݟ˫]Pp=bhFsy9ŵ%-V +|4xկpE81m}T ݎ[%klژ&8'\(jwTSA!n<ؿjܹq%]E9za46WGVyTەV6h41\1f)J3 Knكρ#o[Np7K73IY6k}"g9 ZM f4OEyijKH{ֈ5e&ײ KNJ-D";bVZRf.AFJ RHKD*5#cy a>Br~byMCB-ki477>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5844 0 obj <> endobj 5845 0 obj <> endobj 5846 0 obj <> endobj 5847 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5848 0 obj <>stream +h[I9vׯc wHՃ.T*KQ]QV.%MObB);=o~of|͛{3L +iq*on^~Y\?0[5S a P8magr f.T`fGͲwlZ\"OmR-qz>ACX<.ḺteO$1ӣlBκôvsq R~^/lCNP9GXh9-('CCLGGi:}>$B^"'sMC ḰQ - 3fNy&RG9:(8qXuG#2uPl$~&50U9a(kAơlo#Bz[`DIsS rBNz!pvɮfܷHA29+IH<(A.𼡆 A*Jԥ +Lb, AR `K|Izc1sH5քX t)7r3#H%D.ן)*a~2dI6~1kaRΣH#%cROC[A4Q撄44 @o( 3.JeXm[Q>-5D9L{M?R9JseυsR[Ra͵T r4)d,_`$`ܾ%50N +۞-'Pi&`ZvЏa2msK3|lw9qx@ҹ4،֖?}9v΂Mw@tI +;ۣ||o<_` t?p7wd?qb3ot=Is +3Eڃ \ٍK{9 ~^>a'=~O0ӑ2}|F\g|<}ytu,JH8LQ-r=>ӡ/wn@<\y'0͔}Ejn~#,-7bj@H#p9D؈ĸN`!̘oq[m,u˗_/lcev)*8h⿠:2CB9yLaZJ gAp9T$P @\p3nr꡴ - &#?ǭQ8]jK( ,`7?nԛ2XBTwJ4g 4ᰋyA(ބ F] +H7'B ڤpK֣!`MenZxAF:UV.\$HDVBfѕ  ͕'U:t!c !Py'|8pFQh5-+ͦa]MuuXb}7.I :+jpa7L%p>J)]sԕy_+X< + Lc:SSa߱"+O:,IXDh?vwl<@ynߨYZ;LNߞ0>jU$xyO՘&1aO2C7;^C ^N{UeDXxna9t>/K%U4|YaB̤\z=olU{=3H!p[~5zEߔA>(fvfX-cՍ }]<siS֑3dGFVY#reɶ QN5'3II0 hNxA di-VfJ5dv}u0QAA%%&oRHV&\5`l'׈zd#]ngU.eaP#G6}2@2UP9%e%{m@*"UW՞x/qu[Dp[ +-&pkVjabNdXA "ZcUVb>dEmŢaSRZ6J_c[2QuX$8jK]{IJCw {i`W;im95`֍['>("p]r-s*aŕ9%93ޭJ!/KO +c3lF5QI ڢeq_unӰ6vN&xaU-cF'] r5oM}8kz"h^ڪڬ*w-w7WOcXVmVsw<'Ay:OWAAOy*5pӲ524mUH*U3W w9R- CPpz\i.=+ѧz[`V0?ڲiǃ_k\&|z;I+O ɨy(}nb3ǵzЂ/|uzud=nR9p\0O(uWC=ι|LbcJ ̅ %=K1bc\pwDZ7ǜmCnpz_d3L8MGPoEHpȌ1HX&p}?ӫ%XzlcΈ0qsֱN1LPō^.Ek.s҃,E OҋN/efdR`(xץ2!pyS$|fx,ruՂ -WϠ;qhXU %P:|efdE1~:ߜ1ޏW9ߊsVԯr}71a}F/wWO0s˜q}vsԷ!uZv8fT7IYUJB1Vt[fGOeVxFo#)|D[K~M~{Xf;QL?YkO-ʶ#&o5X-Boе^۩+ BLGhC_ +kYbJDnq>9xH^W4v"^K-D%՝s~>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5850 0 obj <> endobj 5851 0 obj <> endobj 5852 0 obj <> endobj 5853 0 obj <> endobj 5854 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5855 0 obj <>stream +hZˎ߯(m5d0e#@/P0bIv~?|L$0&EU_5O_ܜL7/Oe.qZ_bmRˋn^Ӽ,6O74n}eyY{,_[luDpF,ԙ~sѹg#fv2lCE<e=伟 z\!nb2= ^0y+LOI"t ]tiTHbYfhxiM )O$`)a}KkI,+odåFҊM09 $qBnd8ɗ8)9fxdl xO|¤/|q&4's7 m_"2?ë_}x^]wqxi a!iflb9?mm;n;nلu`繸lt<;;/2;z.d0R;:nmc1(s:ɦ0yj0&j'll̜,=lM5W5st`1N-gHn;GRL'(6&1Mpі6x^ +6lzF޶WS .po6sYTȲLlFZ 6(aγII^aFit `$VJC@>᥶Yp +qiHYOssxv79:xO mdX,vj~>ͦ$R,TDֽXxuQ}hto"H)eR/XM{QV}m?pۢ BtelΉ9Zzku-mUGcS"rr G~DSӆO@>_}z~Ԇb4%UStd4eB))blsg"IG]ȊrlN9mȷb@ dCRbi$X/^ׂO|YMRĂ5^IQr d|UIܨ,ȇVBVdeVq/ɹK/%sbCB3.+tKW#uW6)H;d8 gvHCYre9%7 Tw6hB%^YKvۭר 3}]`߾\;X~K׶ڶПum/qm|M㮽SsupiU!wZ\ILދ 0_wux㓎;˸[?A5z:J=8e(/+&6,ZӶ%&,`Ra FunnsfqZB#|rn,2TQ3D٬-cC%!mP_UD_;-<3Hr3k3-)?FyN:tқa߯g-lWMDd|E rPan"z!\D:ԑQ[,J #aQV#IlAwQ:QR(ǼmDzp!1$;?$p-ͩNU䣡?g#:1nd +^kDd0\5f&$&-9"$ito11cYL->`cPRvDT gVM;Ir2CF-W] .%D>[+ Ђqrxȥ]CJAcMFNg8ieTqҨ8 ;c V@Ċ7'ZJPKbQVZUoi"<DO-EpCC ;K"$9::+ (J!tVow+ lp=g2HX5B/Zտ0=DX' hF>9ZNtbV5r{GbWF3tmyūD wՎU,AhV"I\qVQi.RxP?~JXɋu=@ЮӴxHg)&mcԮA81;Z"X" +kcˑjGNxC?ޔ9m +4U=UƏV 5d`cEպnSjK}2J%Z/\ڵH Yƍ'uU@=|wVLQ)jvQ6ʠkVG嬭_\篾)U_$*jA "Jrz[I-Eٻv:@] 4?F V5]{~YڵB,ZS 8K7d ӎGv~eGgKCvۥiuOn&ݑ8Z5~wĭ%!xGR1KwH2pfxЫݭN3rt~X;O<wNg6\q($l{k@Λ5^֢bdr4]9F5#RR/]9 +?ojwд-qlve^i:ۋ)}iΑ vëg0zlWoA2+ry6Q}u JNu'y}Cs0}#_?}8Xl{õAޘM.Od p*/Ao}a:&,5TeJ& 8Ƈ>U ~>E{$$$(}pW VGDG2?Tl mǸަ#=0:W +endstream endobj 5856 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5857 0 obj <> endobj 5858 0 obj <> endobj 5859 0 obj <> endobj 5860 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5861 0 obj <>stream +h[K$Gϯ3R!!!qF8̶g,],lc>GuU{q@3ݙȈȈ/#sv껧_>?{~]ߞb_]\kJK5k/ϟe5Ɔ,$iKjYIx"zf EuvћEo`6j\h5BHŔiI5,&f' dopr?,!󎤶IQ!YeZ?R{*sD_R,U%5{uI*aQB+,6<,gr K. oa, J/`ck\r `v>ze* '2A'A`c.Lւ'K FѸݎ_C7S_O}&l֟ hǣPOAJEhIffGip +Ppu$>֠À&d+cT:p2UdQ&̸̒P7[Աu# })xWJ,͂K]BGQ3T6w4WV́ht-VSŜ~o~t#a#l#|y& ?,ԋ16bcbg f0s~Eá xҊVFjQ'\_c:o ;/?Cö ۰d8'&'rEz +7pap~! n6ֽ8$VuX4f +VR7lAt3J*˔{FrVmo"PB87Gd 9C!ev0o:T[HK H V~&>w:đ7kXN5H;"VZm6x0o`owˆ$ZkwL}a68V#Z@1 z#` ?zξNY8[6s0ZEyk2NjAn; [lC{$5A0B-Li5~ܸôI6ZAY窨G9ŪOf'8}"[ Ae\8568u x~`BQM:X C Zi! -:C)**d=~1@|;WӯD6p ]jb+߯WZ}dġ1\t1mS*Q581Y(Nޫr2DK0>:(^쉯[π|{scv#HM;t2b)B Iuͼ; Kr] [j^TaKIO|ojGiȡo|XY(4Sn{=x=$l<~$Gxh&%T{J<zJ\\A36װ矷.,sOLmlL7I?N Z'oюXX]6{L.dMǰLN,؄l@:8#՛uG.oXXGKn"#jPiҾRҒ$4$pZɭUmlDT^__]N*aYCx*Ao/ Fb +/= G#8461WܢǴ_);Žx=dyoԾw3_s-v ĮVO>ӓOwN}z|K{ҦCh;̛r0jSAɳ!pboSyW-љfaHPWKkL1@G7\ I ]ք^2ogHc1F!F{YͭCцZx΃uhX&7:ӍygϠ~˱?~F`\t!hATߦw_ +'n>쀗yN {cj)t9u;Ù + 7^i_N}]~HA(HGvEQ.uwC{{6m^?8 S3xv.4e8ðҽ̔Ź()W!Z_)KIJ7g%R.3X x)r#E_H{9BxMxm)x@ r! p g v7z9FivwEa5#{P[.`8н =K7 ׼{Gdnx/Wy 1dqH߬kT/Ny|8Vj #8}-Ɍ!+TLNku68MC,w+\fg =.kKM;.&.e o`=)0NՉwU +EHp@W9zˠ"Y=uW.r>!w#] #]vkKêXWzZ><˝jT]5']?Z ;~\QkyF][[ vgH}hRt">W#ݛ(PҀlNsIغo`pK x D{CgMBg,,ϯ%5/:ga=n(Qc~NjbЮH SpyKz{Pw +Fެ{5;|UȾe^PI.~wMVWtE9f$|u[:eG="wě9MLYfĩBxTi4l[jDdvzwNfCKK% +I!@ȰC6(oX/}J޼wPr;89 &\v-k;yK)q6:zs/19=$A At?{:As}r8viYiG{)Yp60_4Y!ϣ^6CCb>d?hݏFj&?эT(~mc\S j8fS=(c[G$PLjvbh~[>ʚ^#3j?[)2.KSHqe\XB_~޿:{v;c^5~:?59_[1M:v[3Mi|g'+~?̨ˇ`̣L?ogyR~hdBS]wn~z`GdՈ_|Э>1 X kp#v >Hx%F"wLɚS$/ +endstream endobj 5862 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5863 0 obj <> endobj 5864 0 obj <> endobj 5865 0 obj <> endobj 5866 0 obj <> endobj 5867 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5868 0 obj <>stream +h[IϯKŝ}lrruFJdyYdu4x X-dş5w?^͍t%N f⦛ﯖ黫yYlnNPիk(. ePfY1|d\|neha}io`Tu ;3'y&RG9:@`0!N(@wmy9"`)SZЯEh=G[Z9x.* M3*4CY > mm4G!90, h;%L YvQpĈA19+E(@;;O"N:x jo!\ $(ECRq[,^A2 2 dS+Bus@s}n|AR{A4p/@A@(Q('.[F#lJBƂ H]nYA +M:}Jf2u{D dIaqZK[T"2h U[323,I'473,SCòwT̕=s"6-zxII@If9^ȧ%?#SK%6v//oG^ǟ\< Nz'Tg:iދ;]g׷Zc4 o`dL#EϾ{Z?<,{f:aq!>蟣o[.N04^SpHBpBdz ^E +Oza+~9D#w h AN%D$ۜh88Z yXK)كʰpUB 0_\3}% фݯDvjd_ t1a,C_cY[m?\H΢vU[l᎚?B=b"2 8G<&bB<@f3ɹ6+Koߜ- /1n$̧f!S4Jޱ5#`ONe_-h<9 +3WM[ jP-(l@vZdmjD'#dD/hg;wjdqMKѦK͢K7XUǷ!*Rƻ7 @D_} + 78]33|/)gf휑m̰L\HGf1/ 7#ձ(?fC&9fTYjl%rϬθS +&Z#L bYV4={y?fhO0SevH} +Z@*|wD6`6,sURq~5HJNu>,KyTk=J܉&?n8卍`s3:r:'ؗeo2/61l,Z`[6G`3 \i6>fk֙W[dB! hAe n6BS 7?dcPOaoCރ>4<qvgHx$VJI<P}\uȃPltݓ#D_h1YPB TLqTk:Df9NKz-HS5ԹK-@I"j/|,[Ͼ%zq^ Ifwrk-_I'dhw_ إ鵟!a ]ܪ[­1tp[v x잶잶k Ŏ4\:s\8{/;?<7[Ⱥ Sbb$[>ϳ%8 Ƹ='W?A:k7ַ-8rh3s*In09zY^-=g70d0,l8/bXUYwG޲L+e5l7$:0!:#Rw{KZ$0ƞ ͇W72?^ ۭOg+ +U\w9[ml(c\Woh 0tf }nQۼ1}7-uOw# #1A| +}aʡ?=0o:^{NgN5n9\ <(Ϫłyfk^^붻QuJu+5>3nƥ'c5f$HExP )|` sBlv ޔjoxzg߶K.Oӱ/iuW 1û k^l7n?yOO~b0̺~ۆOb7}RƖmv;fu!x?S~l`Dv &׬<@#A5\˭ԮK_׆5%Ew,񍷃xݤߊs~^j 7wM\:zlnworOp"irqRc<%9W<}iSu&uЪ\kN0~i#o׋3AKSɳO*l#5Kg׳)Cٔ󦜔:B7ewG?ؾW_iczhO}/[ 1[/ej5B"Uo^uLh)%K-uϱڵmw뛫fLdใӇ+t-c&d<^q0om{`]k +c_Ge.fZv' 0Oq}Gg>:0.߻A-dS42+긄C ކ +肷 'W2^Z@jHߑTPe-*kUY[!$ܛW'> 4g*L'L9a +a= %X'`ڴ >0B/foX և&X}+3ϸ:>U"jX p}`\ڀ=HU"\؀d& 0Oq}>^H6m~ɝbD[トQ€hFp]¡i7}iӼ6dEG .YZ +\ǰ.8uŞ +WeǸ.<51q]~%ˮ +WǸ.?51ˏqU~~tIU~'*+X)tC+ ǸN} 1lTP~ +gXOu'cXa`@?:3/F?: [  +Ag +& 033?ø.U0Gp?\:~*tWc\Op>u7vTP}\Ap>0GеK+zw{_{ {;ͧn}Ku_pU/*0)*|;koLp{ V nz|)BpH[=蘈Ҟy)77̖}9KVkrP3bo0O;>dP?d}}VRSّ飻2iJe56꼱%zƢw.wa^v)#}CY(ۆ`mi +endstream endobj 5869 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5870 0 obj <> endobj 5871 0 obj <> endobj 5872 0 obj <>/Border[0 0 0]/Rect[512.94 87.44 527.94 98.66]/Subtype/Link/Type/Annot>> endobj 5873 0 obj <> endobj 5874 0 obj <> endobj 5875 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5876 0 obj <>stream +h[K$q㌀IIP5+6e5CunyX35#`vd z:o|{~ߖ?]|t߽߹ǯw{w?ݵem9/m[crn[~;rC?~޶gjϕ)j]FM#B9^vrr5'6yqkCO9p~[ :뷅˜5-"yn@ŜDxPMԄ'C~D#2m$މ-%:XԬ#u9,G)28,α7fKP.B^JY鈰p=n{æ7>)5<+K_ |f:׿qӮ./3m:/h77pG;'90t(|}SӼkEå]UAaFzy{Ն1FGݰSlSϦ_^&k "sBwn;4ۼ;8?3Cc&%);Bzc˛BmHb # I:OQoIIS/*-iPD28+>JrBIu#ʡorA!:ĥ ?N};po ,D@^CJQ +apB-Un2E̖<|dm-V ^$z뷷D 7Kxvf?s&^u sGħC$C֎OTR|qhjO?MVҙ5Sl22cN &8OG_m +4pTjRSxd*~ 9KV>>G0v(5o0ZjC @Fnlb&9=i}=䜐(424_RE|zQcn^-͂JNPKѦ(qh79kjD$5r6w3! QUEۢ +%x֨*?2v}{+/kf~8j9~\h9݅I.\:HY.V #藚r9I7qA lS?oMЉ~$!/衃uKz tq5EKN[kt0YA}wszJ]-Da@=\rTMr*YTJ"Dm:܄SqI|YE`45wx'N4V-FlvD" ",2;hɱWr\կX<Ѽ9^5pz@$'b$MQ` (|dq;I$Io6uق#ol)shMhMy!~_h7I d\ %j<׹4g{AZǻ6ӈz-^_<n7_]'ƿ?<,֑%M91LM9O4 wJwcy͂Gkҍ]ۛ/8hn=-H +5]Zҧv#OH vz|T:VGcr +endstream endobj 5877 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5878 0 obj <> endobj 5879 0 obj <> endobj 5880 0 obj <>/Border[0 0 0]/Rect[74.76 87.44 89.76 98.66]/Subtype/Link/Type/Annot>> endobj 5881 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5882 0 obj <>stream +hYK9~@ Ň1f$y%Y7t,tZDOU#2e?>=>ӻ㷯ww[^}{ݝN~qqLˋ?~M6,7;k}]NW~:<[M`J "~bܦpLD=M)˲X,xiw:frL8ek']>{į{D$1d^x Գ4l+tA9~~)xZk=Ķ}>fkw8qK8Yò?$g:$>uawԥSYU] liWlʤ Cu-fj\|E-.Wzr+9.`";}~7[g^(/ ={?7E[ᩈe [Z\7˳Ё7.%>*[0^[X\ycd2,4_~Jbɾ&N8&H'P603^Îx#{+ˈb+i6- 5n@þO5!KaɀQ㍠IJ8 TvL2Q D;k4TfґX(YMTDq@oɣK}͝ +˧qa$dzqaS50=]_پ.zTmZ4Xyf2gu1\0=* [ iԐz_ԺOdd9-%T,TnLpݧMGtTiEt_dh3l# @6GfzRUVCBQd sj$[g*>Q<ϓBM\<ص_QsEov.SބT{WF~n ], +v4BcF*RpRLP7:9,<e +@F5l Vܡ+`!K@7˅ݬ}5uҧv]ԥUvJEt3vv /@~ 4Fæ!Pŀluj'ewk2,)90Ł2`r#J.d=.d0ɅKB XWK x3H}zBEʒPFqJ8*G&@ &qjbpcԏ:JGqQ"K2[NWI%uo`Vsd/qseLzw54SzcmONl˃y`3z9T8oMx=vwJ/TrHkʖ _b%U<>j ǴEv:0PQʹDͮW^Zi@uHtwLlRhⷎoj#|X+-+kU +"t%>Rn$ߩHbybԣzs.U- +uE/W~cm˷/3Pj|~ b8[Fy.ESs)l QRw5ӏ*g ޏl37D V'VuRnyש^X4uEC&԰WGU h%/+YWtmԮTA3~qąAʂ]B<K\oⴗWL!;k~uկo-m#2޹tVM+Xq=Cj]h=:| e4M xj=x,XSt\dw) @)Jz]ܩ&~ _.󉿜|Y8_ɄseK5{=F%GUj%9Y+g^w^Sr/L*/b-12# ^9HV@K…#HW[c'>eMQtM?"?m +endstream endobj 5883 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5884 0 obj <> endobj 5885 0 obj <> endobj 5886 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 5887 0 obj <>/Border[0 0 0]/Rect[383.28 329.42 527.94 338.36]/Subtype/Link/Type/Annot>> endobj 5888 0 obj <>/Border[0 0 0]/Rect[67.26 321.44 103.2 329.42]/Subtype/Link/Type/Annot>> endobj 5889 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5890 0 obj <>stream +h[ko7_Qt&z;] rьvZdKVխg"p,./KٟכgM_?/9x~y9_]}NOU_jMZk;Ӝ~:蚏mN(r3:|T8V㫊,uRerYţީ6I#΋>Iӿ^]m$־ &fA!CO\.V>#SzwPhʏ膱tlؕ 2{sZlߘ6*c@W$QǞD P%Dc#EY-BޮĿ7X\v`?*66)!ج +s]v=G߆;)X=EoCZ0\pys! SN:Ph!ryg_ן٫c Ԋ0ySzru>/Kh@ظmjtxuZZnf_fq]JmC盫:b\jRj}*$fI>:u6E)))V9WsmZ m2%vQ/!5 4kmt򗈎,{#eݟ(_4`yLÑthC=TlM̪&_XX\6hV^ZUޠ$+Xnzd($"c\Bƭ5Ɲn5G"5)4Sr %mtaS46s߼"'C1]($id밥 +Զʎ_!J:PG(y%Ry/˪'VLKQW"{8=|~amta kt".IPC.\s4?*2Bw^Xo4~8Tn<6q뻖jևFwMx8qT')5RR>ljR +5,^1tu7a?ʂL^Nɶ9'eMMkTR%c )ù\iR]rt-VNtX>es5ZZcQF` ǂ}]pkm,9nj_mϋWwt&#:##Չβ.޹w!pK^uKm2rʺ/e Waz@ST~diLŸtbNb\&ɦz* .Qd>˒W&dtm]b1fFeHvKᩍVq)ER$fpSbڏ>=InOFۏđѸ20b&n%VK5`hA- Nf'зf:Գ3pj/VYs\\af燰zBůWd ܐ(h^mvrDi`At2 xi;2M)~:H=uȾ^S +4ϛ+9X-%F.oR1n#xՁFX?Nf1~ bBi E*~do&4.oM8`4mNc1hXw$1L4q x"Y\QXCm,]^-7lg. #%(t&99˴2gyy\d'15pyH>9W9)"Ev"~RŽB{%PK6ݰyB:{i:.b}Ш?B_51]2ӭBfw]r"-b|pZ=UqdY <*ꢊA +u3nk_]l3Z< bJbzFS:AvA +",(vۆ&#T+*h 1GIRl t}@M_IojH/53ٚžYhv QMgγt0H fV֗(/v =~]NYӛZ*&|agq٬[US胧kTOYO.~^6Mf$}n/7F2xDw tYajqV)G9`=C()-5 RHֽd|jڼO8l>W.([GΓ| `$m4UzJS4_LͽV Cy8JOse6w*psO>Pi9ceU{qA(u$f +QY m2 8Zp%W՟nX򁡁'+x:PE,滾|l||`bbඍat+.zy:{?٬.>,b :[0^:.5˟~q0;[,V/:Լ;ߔX}7 P?o?4_!L'*>]17#mgS-A""I&R +NvP8k/b$Z*G Z"8 1@bq00P%dI@Mãs$&1ppq DB!6-8X 9Kd/y:{<ƨ~jZVRP5+9e>/_~ݫ D.A]-,1g NF~\@QvjF +!`S~Z=P,49*W9E©wİܾxM|wGMjMכ|K (nɖfۚmk:$Uw$U[AiޑO y$ =&n^"!04<ȑH*P`,!ʹ򒄱!su(DrfLdXgx^u9g<6xFڄh!ʔ[`y +̓(a䒌so-? U2Gb'one),.6x|&X>AvvL/>Ȋx#|x"A0`Zc38H,Fd XH!I ViQEnAyvQ=\@ܡz'Wxt>>`uQЀGGlMZMQQl[z̝1/ Dz9M$Q] @X'cv"J15hV uS?T}G_H,(X.]gz׌ph3-G8ٜJ%UZ sLK{f Nnq)Ikƭ2Ğ(&2)-%CZC]lɃ6hY7|(I'D2gYŻjJ9$%23Om$FT>"P) 0BPM]0 (X̄QV H8U`+f&͉x'Y&Lx%7)K@a. l{_4J`>(r~%hdMJtǛ7k5m7<\=ڝ^5 +mac5Oq0x؏:IxVy߭bjRN؃ X#9g\I:ZBU-bj#ï(oJvsknjy?&Ñ J'ԸY>)IfF|1YMF1ݤux-VZ^7)?A. 4uP4m#%fe(W +'//?_oʝޑ`V~fo!_1۩{,5C`ɅieBM)sPH5<1d-[=5n~.Z# ssDm({>ŽxPL@Ԉ;W&DL| + +yItT} d\WSy?}|ܔD$.O:C[y=.e)RlߞW eSP`Jgmpng),ؼݗ_X3V=3vc4:ٻ(ޱa5hR\RUw?ytW^ ^ې]6l&XD9VJ gxo1 xB) kL^l=L*aЙ$䂻G?NgZMg": Y +ky(ɜ`'ZkQBjq6"fbHHe}oC/8`m\n T T wlbPi$^^L|wd[߉֎ūc oc4 ?ˠ7od8Rcbh}y.׏|bI 0 +endstream endobj 5891 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5892 0 obj <> endobj 5893 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv40934V5.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5894 0 obj <> endobj 5895 0 obj <> endobj 5896 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 5897 0 obj <> endobj 5898 0 obj <> endobj 5899 0 obj <>/Border[0 0 0]/Rect[383.28 384.32 527.94 393.26]/Subtype/Link/Type/Annot>> endobj 5900 0 obj <>/Border[0 0 0]/Rect[67.26 376.34 103.2 384.32]/Subtype/Link/Type/Annot>> endobj 5901 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5902 0 obj <>stream +h[[s9~_OޭfXwSg.Iy1e} LRGҹܤ:a|sw|9~~b>9/g{{|q|~n:ݝY>N៼؛z-Tv+eRwFh^(R^yޣF)|Wޞް#T!ş_8Lj5OBJASYvu1_ndez 3>)@E<.r3}жb]1vţxLЩ9w9nYYTޖ~TͬEWTdՃ"U5)$h|At +#!{K"vBK[9)qB GN ,}c7torSr\gӾצ?ܮomSC`eWGj娦ej_uPtn vb7zX\a7|؜nwr0M7`x">UnPXt@&F>Nd]ն2w@lgrJO0/wk^LuK@nvQ +eN˙ ڥ: VՀI#[iGg6ʪ=X <$ԀOMLMjMǼ51&wAz*Qֽ>6 #";ꎒk(3A>+ed'rM4:";T:)8ije ڤBB+hi8ieWƲ^f74584 ۇ&'B}ݺ,ISh67>,z# %!U޻NXWW]XC^Ւ1E]=!\I3K "':ɽXl`0ԃ q.@fz% +Enދ\.2:]k_Id]]y +SpX}ht I +R,[|{:6X|<% O#6qkuU%~^h[4<A#?Kʶ5^]ۆNJ_53s`?eVeWw[#[2BÜצ-Vѩim j(ه92 #q2DѬ2Ԍnነ\|+28 +}#mTNewY͗G2nfyW0ų1-Ǿ?=b <;kdHJ>bSVay4}goN׭5m҉XwvF&>KSܒ;e;0ªN^7?n&J0K#/ZP`ZSlh tl=ˤC>] @q)lkzyUb"0ӔGc+ƆʢaX<)6QSZC~a@a YH)D%UE.p/H~Zq C$EƀY-^,pESle}zlj-8-gg@_iȟv/Y3XdpBυ%L O)g>BՐǔ1 +ȯm`;- S|q`t +ɻ5C cpPJٔ:~ńBP+GK= y=2E)L\abZeL~8CRƂ0Bco` +0TH0HUȁ!$C8rX @%S+U|&A:्m f2ǜ@AA=\R S iAIXV0C$3&pRlq +yma +KG10#>@xlpa ++ *6&dNT(γ|QهmԭA$jlxgH,L3꽅?)T yl$KF,FKRh"2`!-BKY:FTHz,#`ƔB\wJ! K@ե/D"lk]' @~,2 صH&hk˃BYiȱi? +1=ҌœDD쪌<Ti,oMLnTk "TGGIW|eLC7mT*Η)M}zQPgz]_\uk&;Ҕ~9 +TsBt{!ݣWWx@3 >OhOOёa=p<v\m/^îDʵ 2[*egG[,kjF*x (;O>\O/owݦӳLJ2Kb?ݦ7ɩtX" + QW H,C/67K >J\(iT;C,$><0MYFh&F3- ^~Ea&{!LgZxMWyNHtAk%1:WÞ^*( {H~ߠ]u_oHM70/:VOGwchmUUS*0gFhu%i_y&gA(T^fѕªyH3 ZVy|S{DS:nCG1ǐN e9# ̱nk)ાX_ /IO9 f>P'chM=g{CՉU;tui$3gxrE9R. ;K,YuLt̔$>l$ w9!oG`5@:d>>|-y`'?7W"@3)--7n!כf> a !4*GC yb2mK~"Sd*߷$fzN$pܘHSu 8Vm/ZYqNtM{`ay>dŲJZȒ^R}w@朊(KtT(cE^wB짴¼&n2OdyR6NΪ|WuJ°_.bYfϣavI} Ya ۣ;YEo25.ܝ`^e&L7RxH@Ùr"0ƍٗE_ {j1$fiVO +]9 8D +Mvy^_a&(BE0@JA% 56{?7'Sk]]?xs@[D%,gTdl|_;q]Tc|>kf.̅ؼ-ѓO}e*:wny69BհX<~66 +X^k9?v5^]||0l%kw~Gp93-;5rh'KM2l J$Y>{&+ ##x_  + y!tS&tLf.`pc y\`UU2ˌE.Nl,dل:oWMIL% 7%V:L1wdlRmP3 $G> }bʸ4GiP¤uvb'D#m@*-^iyRiʕmnW5 gZ+Yx634 r-eIڌR+|3&/ +K-Іg۰ߌfa{ * a`y7yѕarkˮI0t~ڻ-s +#h<8[!q,+RblKβȬJ;lw9Y$t7zSj9R!eu%;K'A #X\B)s4`';JesSڐ1o(^-xnn&8= hۙ{mHgtHxlqd_5vdO6]<% +@:`Ln±E'q{ܭo/%I9{ EPy(+_Nfl)qxp)VnM>$> CBT]B>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5904 0 obj <> endobj 5905 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv40937V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5906 0 obj <> endobj 5907 0 obj <> endobj 5908 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 5909 0 obj <> endobj 5910 0 obj <> endobj 5911 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5912 0 obj <>stream +hެ[[\~_q] +l<m`}t^33AӗH:Ue;@`t("?Rr<>=/w{x|t[_ڲ\֜1nayt-붹Ua)`O{ ׆% !eb[B;tetAd"O-7MH^8^ƗevžjW%W劻EcϷb&Qk +'5uP),[rSo` +.US wyJؤ?ܐm>R| +s +&;(EP)E*lo/ϙܷ\Wӹk(0b4gF2K6 E9.)$|Qcmgp ]UMɗve,FpQg!Ƥ=[82]jBolv඾:CFg\"F0y2>cz@07OJa` ܕCo0wL5>3o)1/.XP|4+]ʁY'4Sȳ!u\"]Hd$"ASʩMPpHbs48n w5\NńʢW˝1 +զբN`tOPIC]c"{׎\y { +=uDN}˛^-dL7x`|crUiV;8g` M񩄧,:4LKQQ8\Gu< >QhFķ6b'\;T,Eym=Ыn; *|k1 z1|H7|vZv8×a5I)N+L&=xpphp>X}`-.ꄱW6z Ft|nmGu0E<=(E,JEƒGQ*L1Yc9izM ,AQJw@^kތAwE{odҾFzyAN7"~]m5^1qfThCs'{Ug.5*Ū(F#A,Fv+yjL3IM=&s&J.:V&/_A0 QFlm,M'1 I:c_iPSHµkwwQ; L5 FfS^.% #eW# u)hBE0zW}qͮ r3CH +duijtAz=0XsTNଭ~7,MNNS g۰[?g>/+ЖH4c/pJh;^ј26%o*WC:妬vz{sw^/72B.Sy2O'uJ/!pM AC#04݀q/mӣϢ\9scsզD\=ּ@]sFEA%y*Nys[{w.{ÝXc OO^)I~28y8DӉ߀<"Y #'TLHy\4AoZϖanQ MMn#?ke17FjtH# Q}.}1O +&]0͒l)s[gQFvcWC +O6]p2 &MPQmL 'uHP +endstream endobj 5913 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5914 0 obj <> endobj 5915 0 obj <> endobj 5916 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 5917 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5918 0 obj <>stream +h[]o}ׯG7 +hh InP7rTq3Crܽo>a_rv%̙߾޿<97_\w7|zyrf'W'WW4IV9L0MNWO݉ҚtGOP% "ޣ֐ko/"~.v*U o7f܏faDy_]A'3>)j%~JR5c!@;R ԑ~ihqA`zm,7Ƌo| li1iRdsΓr14ߜ:-]*,R֤.H +)~'/Ƌ6g/v 0L +dDdM/#R7ia +*vy~cJS*6d2T?}͛KM8 oh۴4m 6grF>cq]c<7w8 n.޽}}v?ݣwaڿnX^ 3y}Ifu+u+uRZߑU۩l#jNd i夌 )HC$!׃1n;B\סi'®viI*N mKҼR4>(#MMbjmϦ*>`{mYlK~j{OSI5wqq8, .zC)[Z6u^VEv7ʚFLuwRǴ^]yhs_6)5px\%jƤ w-g>cr6x|y^ RgǠ⦊StQaVKwׂ j@b6<)10qF9^q!/tD/  +xh@Mm8AHk7Q/xa *ޕnۋXO7V<|> +o/suD2xaz~93V cyrӳ7#qƸg\eǃ\⳱7\bC06eƘ5$>{V^Q&!>s@fHxè]v;?x~y(<՚ :8S_~.W}3.{؜єiDɰ2/o7 /ƶQn+S ؂},`}D;l<}f}3'Wz/Y+6Ab,K_W"CO?0> q<)M +zY;guTrd>gΈ +]MծhxYNJM˺qy-SL0 )ꦎ!2XODulurf c{s.oo)ٓ vۺΪ!}苳P'7j{/ZiSgđ⬕@d}y񬜮g6iʋ"v=fVl_q~A&AEvNzX0xLk=T4Ѕ<ѣ{B Dσ:Ea-7ZٵGbn3HѦka(O4W#,sbYpKˮPkf9 IDUp@H ,{ +K>H{kO/k] !{͎Eڜ|yDF3&l8ʙ33v -T\ GV=!(o3qJ\& rxpK4Lk?tɅ#ܭ{m {Т:zԤkgЍ=6ƚ(9MMOdEPh9p<7 +u><$I;sR`)~q.puLyn*s<44s\V0ri =I6Ю.`_@^lqJbk!4 +lM_^0XϜV ۱¹W |\Ilme&nlUƴj飗lnK׳s(tgS/N(3n9ZT @B[>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5920 0 obj <> endobj 5921 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31076V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5922 0 obj <> endobj 5923 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31077V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5924 0 obj <> endobj 5925 0 obj <> endobj 5926 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 5927 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5928 0 obj <>stream +hެ[[% ~_QIw@`!4aedg&Iddar/-$~r:=<x7ޟ_}vz{x|t[ڲ\֜1nay|w-?ݯx??m[Hkϕ}Z=uK}ʩ{Wsrkg sKOTP^-wy)%vA@ϲ"ZY$ҧsbÄ+VNO{8lb?@ǯQD_ED耇"EB<I~?M*xܚN/n]o`7Z[XZww{;y-9Jhz|T1,tWҚ}\P_\qp* GMqkiZ+(|{+W@"<?Aon鶈c/Y T..\?~ ׯ>ͻן?.Wr3[-t,[^>]!L'X\ww~[S -Rk +Uaruu1eOM*MX΁TI7{{emjZ No\`zέz]Qݚ|`Qpygۯ,:hJCQi5^pT9 wzo3#.>IW6ւFa< yKŜ+ꧣp4$z@<1h`3Gt]qq-FhRf or[*qrl)UnZW}oV;"e\S0@Bb~L Y(~t"my`;f"m:PMyc,}HD6GAAD91wmlPo܋$>-j&l \;C|gO#{\w + +!Ӳ\B[->sW~R +4Fѹ4_t&U<m7M.zmbq!肕TRYM$Q$ѡmV]p&3M%=؋s$tP7X];u ˟4oe߬ۄ;fmY?@ocٚ>IK$kƊ +RJ=Uf45,ohQiɷ(BTb VժjUahij1ildMW"~X̾&%n2Bt? ơ tZɜvo:0.ͥG(&rGB0(OjSA}f)'2r1 F$p 5YJw҃0 O);[h֪T}aIH' RŸR3-3}"( hUK͔F +J/C26b(ʃ^ vfl`!=s<| HGDRNHPXB*ٹ6yc @B+=7q\>:Nn;}cnMui} d>,mn[m\JT ؃Ћ|6^)j1b({ n2oX3n3- +zUIW3'rH@k7hdLl id1GB.>Bft"x+U#؅ж,;Oan(n3{@nB[Kof3!޸^Mr'ڑ㨤,UЍkR(m{ʎ719,He(㳁|v!` +])ۻ-cf_0LA.0iO]jN24 H- $bFCW1ww: +EqmEI1ƙ}{G^!&x%0?oϨ1#WN +U=ĺ;p IY+IS$ <-1i,sGuۭwQ/4/rb|JM+ l9A1G\\O +]/[Em[948 60y.`wDXyIhLXׅN&9'h}cI֣Ndn +Ќ򘚞f}i$EW;R_QX(0фmFX/3O?LƁW`>54">9$a`[gSb6z~ӣwvrE CrJp0Rt]^}vG.J#wxCy47hY/jAcG-KN4n4ۨ,P~-;>Ӱ{bfN?"ǠAb(i pI j'1 yEH +ItFmHwg8hL/U#?9a7b57tѧQ ԳI@Tr[}*Vq-5ynh"Y]-`ӼV+a"1|4t+a4iXh2F&A/1 ]nD"`Nםn1!-y SGa C`qDcƷt5>m.[ ; ᑄp~_?h. Յ:wNR~}CarؾvM]EEC9c=h^~.֥Lj&|cWj%U_s3+<6l~uKtͰWNIwn$65?J-Z{IJҲC,2tcNAHxKe՜VR:$MLHYT>XS[|a?܉t*@pCbEGPzd{I +iSqI7 f<ΑtŐP1Őp:8:6Q< qylN@riARi39&hiArRNfNgh"#\Wϡ nkkxݴy{ӇpEFL۲8$e]V1%ײFϮlӤ֘);޼>1v&7y6~67er.%AtkHH;HvXԩq%Vo\E +endstream endobj 5929 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5930 0 obj <> endobj 5931 0 obj <> endobj 5932 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 5933 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5934 0 obj <>stream +hZYo] ~<^hP4SI Pn$Cd%9=,y, Y$pɣ?\_]~<ۋ뻷}~9Z޼|vzQjD?|/!Xa4v#7!nd )m)}jE9 ?WR.9uB@<=p8_:eY۝zaOH sVϨe9J'U}z;!r2o$ .x +ē4d +"Ѱ+ X(;w߼m;_*.B"lH).Mm^lU̒mR bG$c2S||h@cTN]iVqSU%^A@9 +|}ɋ$]t- 3wn/>,ǯTr!2SIKnЦK0rT0诛^6<|/X_p!Ul>_1![ilB9DX<h)\ f)a0rGd0+dT e(N 5O2%b"0q5 663TަF +cfy*R,T/=.j&6PeջzX+}^.}YTcq ޗQPŶtD +E SauIN;sl)(Mp[!AF21nL=,vo8[WB>yw>A|6D|YAO2XcOT+o/()(CyݗsS֠}JBJu&:6~; Q'rU֑>z|Jn<%#Wy{XyIg`0Ky%!3铢-ﴥ}Y@ˉ IA7iX4#3R[iCZ$ $xEg.8eCs=;)ΝNx' +nT)g5µbn>(oIWA#cw c<Ed9 :J\#^*:)"DTjl*I^oǺ~;JE r$W('O lLF#_er܇;9ur> fҺZ^xyHoRСxD'؟PGAQq4<36hz͍hH6&tDM"zsЂo0.ѬD[y'1ǧ:1~~.G:ƄڭzA ?ЄZM_ ]NqXu#s3Z*p~١k=DJiWp-Q~ lLcҷ4OᶸI&3D=CyJ\ks;ZlPg=f wF +W> )6T+&PfH;#}TzM`nJF?5K+yQ(ʒV9h ٞwƀݚ=wu&&H1Ss- +z \hկ^‹ 巍`QR'^") eR:ֺts 5GHUdH O2w_yGBDW}FD0+( +@"Zz1AS$Wc]^C_O?ցUMf9ٲ jo|3?7V~A"}g-=J 8gدhȞfZBp^,pt`>&rgz| ގ̳ds1ogۑїi}vq{ f˓P[Nusx؀UFQ˫aB?FxdNkOhonӀ/s* +=T!㛖2Bt9hZ̬{'HE jG՘¤U +>_E* +endstream endobj 5935 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5936 0 obj <> endobj 5937 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31078V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5938 0 obj <> endobj 5939 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31079V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5940 0 obj <> endobj 5941 0 obj <> endobj 5942 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 5943 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5944 0 obj <>stream +h޴Ymo~GqN=Q)$%z Ȳ>3rwO&%q2 gp??ӯ/^_}}^|ߜH6E+ƤcThS7^ojm1.Ǡ(A[RfC4ݖr ܑ1.,~P?dymWXEQUjD๬2 LIk/X6%P>Hw[-+,'gZqռmf"<m;e/w` v92L8ZӚ*֋4V%u}*%զihtqQn9K/ixq04mإƅeQagOHHStf8N?=s^<)|+~kVw]O-n@pB۪mxnNqyA݁ٻp2m'QO&w,ФJѱ4:75:.F;VSZ=(M&:`r#fV'ړ&X`1'ty=ؕ0'O=L'oKY[B[r+0͠A'8wVGVLY$Vé8Y_ Ϥ=--&qzDmCSdS =ȿ\.XdיŊl#Aۈ`Ry( 'Yw6I:@i2ą$LHbzDrcͼC!g],vlPЩҶJ9a$+|5o+4.MaTot$WtJ4ިfx$kPiȍ1QOxx\M _,0⇧A2q f A DsLɅ:AWz*䶴9ɨ-wx>b\Gmq('Bcz /f!1kcg/ yJ/ebOb-ms&!Kz<|I 1'pnaX% &98A5"Q}#5񁺰n[ ds_̉ǐlaPNlYP }ޔ.b?qQ? 0BN}I8F(Lj#O2l3Mz8 +tP*DN[b(pǐǜ/Z`A5=6c2pcǓ<E|=+D0=+3,"^İ iy OfsIc6y(+j/8@]RsG&,/ZBH1'v\Jn`̊ CǯDXa'5$ 6'g0;7?+,8jذ}.8  %S +RN GU4Usޕ9NSҤ<6Yq.m}srV,W4OM}s?hWt3 5Kk3[nF r]V0epp[9+hY'Spz<]r<8R [ǕI+R\R|},GX8aD/j !X~F'bs Fer0XC0I d41ԆdD8*C=_|Pg1FWD+H3@qaL?G<ơZH"4\ Q6c!ľr+W+_RΗp⥎hIZQp疴Ηo +Ԩkq/|.[s@%mڵ99nUApoN'1C;$44º>;d6.oX;mD( FSYG#NT%l[[s(hq.eoNvuaE5h֜ GtŜɔ47ZŞF78_K[y^?U v7=f$ --'l7 GK?L3NRiA<mpBn{V<4F:1>K6k.dq +ʚHOigf$Kȗ#F t[ +q "]d5T-fwKzNy^\8=ʧ9+PWyu~Iy>1ǹ#۩E⣬k(W>A>)`/ b˪s!r+NU Ĉ>GJ T@ +6>2ȫQk3-e+` +endstream endobj 5945 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5946 0 obj <> endobj 5947 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31080V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5948 0 obj <> endobj 5949 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31081V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5950 0 obj <> endobj 5951 0 obj <> endobj 5952 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 5953 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5954 0 obj <>stream +h޴[mo_DP$U$$$ PΒT\Yg.y,6B&}6H?}F8|&p"´y-KvbLelxlxr ;QKQ(록k<9 +R[W(9h,}LQm<* +oSd¡qzJ7 +<2T%< 6CS Ў֭'3`!I:!^YX8@605HE4쭭I^#~OM;l|w"I7%4~&yv#= `tb =}*,W.% {7bLPIyţQ4V2R0!-:Wuh"03X'z V!4y:_ydOB@EgۉM ęTn6=x핇_ >^NؑiTc)Wy}J7cI R(ةpq{U9t_uȘNr;s)hFe*6m_j8 |Ѥvbcztj󘽫I" /"OPS^AlÎO#G8ſ?T:()XeǕNTˇ;Kx>*KU)ȧ| ]UTM}\KZbTf369 \ƜC8u ^EZa+ZD]p\l; ~|7]^!a:IRd_'"M/fzy- L$yӋկ\SKAtĭrv1pN3n0{ i9|A8ԵOxXٙy,dWۙ% +g;1=rIlh3=63m-\µu 3B>002&pOS֚j^MIO7D0!y4¢uL-tØ$c5,e chbchY +!ұr +U$5 9Kau&c%h ScCG/9UP;M"pid4bAzы 9hE ØeӇ02xAKD!],XY¥M,BFKu"hS#\E[fd4@ae;+BSI%AcX&K~-cMl0l߷d(RaL +addqx7d&]VF=c-t'ҚGuI%y.M-,8犞]HFKT]~OOsZkv`́SD02r@3e:zr#OFZDiTB6$A9?VφrldL!RRh;0% + b\\3K^&/JZ"#Ntwg>O$F3\ف\I"QL}2Ldf5BkV&/Xa=AU 2}e67.Tl'3^NyG2ax}N e ډY*ΣlBtTw$M jT[I3K E!$52{?hN9SW\J]6BҰ!5X0s6Ti+Tb;P6t`.T_--B:(~lk2.r"76BݭJrߏЛP{-;Blnٿxwsx{q}szzI k b-F,^Ght.]??wU+ӻӧO~xVѤe†nq[=^86`wz7@3aH$6D! b: _-8HbBj/؂\ͯ +m-м]\=f + Ά<f# fKr1K29P6qdlAD6f?/(~5x)GW& JzqD1<1V 42*jTe\ҭrW(\ČØ\.lrn s .g\nr[m|jZ|\NU+jcG7xBŹtFgR"t~a4(SG/WMK#ce@!0* *<+ެt'Л022ҶxM<3Aəs1U!h?R@猰Ɩ(!B{%i:41VDx@o(x cTйQg/*wքq:hzջ oE)K6X۰o>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5956 0 obj <> endobj 5957 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31082V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5958 0 obj <> endobj 5959 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31083V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5960 0 obj <> endobj 5961 0 obj <> endobj 5962 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 5963 0 obj <> endobj 5964 0 obj <> endobj 5965 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5966 0 obj <>stream +hޤZ[d ~_qǡ(ll C*CB}tTKOز,'Oe?_9x77-p?M],Wyhrpc7;c7ֆWd<)KpF:Uzع5'g*<8AtRg~3E^S3 K)ф ?<ވ}T}lʰ%붺\1ib|v%ٸྨQ{x0p'8@jָbq8ϛݿt7(x+~Ot6޼twGk^TmPzsׇgm|zO3%//p2cktXl^\`!ZM"BY.h[j\..B޸`"35_0C].0y5.f876{Z# + ΁hwcR263π|15n596: o)W]&ڻ@:@(8ù3 MF5e%կJzTM6)23 -m<> dSM z.z?f@ ֮ǩvdE @Ԁې5!EAF-wlTvD2PH; kD:$F y)56@g]<ʛѠ@=Lq^GP6BǰGǚOM`WToM$WM).bxHkZ4Ȝ-#DxxL-_aF,K^C u,w"DC MHsHG4O2ԑJ,z-7;"h2ǣl8T б +ǧ FْAnC*!Һw"UT &[?0P4k d@ꉉAҞp +^W]xATi@>6 +dڋej& }KE-MAQVB7$ 6٣@ # OɭPʝϐq(Agam)u}Ōv>MT!PMm?xƪW),=oU"UKI5WV6 Vr<@QU@Ae'&N<]h3*#`bɧUj7nb 8\KS6 sG?&\yuEyBSݲj@݊$&IVOI]&'f]3 +<+Ӻ>QQD%ѹ/Y/ITs1*̏.ߡ OhD^dS%!~Rэ$Â3RI|![hsJKjNyr $ -nhxySI^!gI-r +'ˍq <@mƶV,NzMX&d{fߞ. S9`t|s"zB}IORCB}?r'Sf8LLƶ (%Ilɨԗ%(W\bɳX.ð_zbI#8qdv +I~DR5dž=ġ%ף1DsPn;<@ĎpkT x#"&>瓘]RslaVU )qWsB4k- )q +3 ;,/&ښ76i%v,ZAlCWftJg .黷6ϋ.$CyDN^ +[N~H-RmٵL(R_P{N ūă_5@?wE` N-jt~-jL4)jaCJez[j+n[Ѓ!\-ȠCk}/@) +|T)叽W YoTu?d:2+qd[L:ldnfn;Ȯgc7(8ݵE=\3r4@'rnQeAvb ЛI6 ~iswp~Ӧse@Zg_^oIN=5->":{p-2v{ b+k35@O|H=u䋴6qO-rWFH\r ! {Z>~Ok;ms:X0\oX!Hdpr}ۈ:Q -,pL/0+3tcwG~h~VƢ#}, +endstream endobj 5967 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5968 0 obj <> endobj 5969 0 obj <> endobj 5970 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 5971 0 obj <>/Border[0 0 0]/Rect[183.54 188.06 445.2 199.22]/Subtype/Link/Type/Annot>> endobj 5972 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5973 0 obj <>stream +h[Yo~篘G2>f riP8Ogfyhң%3GUu=IQB!XǬ'7us6>$ :+N^潎KeEE#X:MWBG rSr\gӾצ 8v;|}cvYoxLi:ksKwLNPn7wkxÇ~}}x|ޫ4E%&B! y> +[Ĩރ]Mw-e2lz3c{f}UxBx[bp XU0<--  avPpZd`.53t˭T5Ƥʹg mEA8VjO|>fL TA^WAmp]4i@x9mi#;0o'6}VˈɎL F0Z# l:`U +IZ5OL+ 7P#(2`{ jtb1!k &'[ȱ`ݺIcM ݇^HU`ٻEWګ.Mz$ {ՉˑkC^PͺqlpN>GAaэt1]XgyϚrMouѩf*|0EpJc'*pkA2yl5TEYf,X>|OgoC'ȓ&4aWJpk &+Kw * ^!sjےX$'+=Zso^JXp2+ZEIGt`Ǔ&V_k*:q\hCfz1NU*~&kh^C4*qτ?g+8m jz$s-n0B{ġ`6 /ZV! VXFjIs}.S0R%N?W3]r  ʿDǁQҕ[5@yKUc$`&ª%-7з2G&FY]R(9^[S{4sj< j`a#aξD2fBSKH*qEcĉc@ZD̨0ښjJ hkC |C:%\v7-ʻ5,/xwJn^q]w +|5Ͽ喛{W]qG,`ZQm2Q데`PؓXQ4hHٿl.MeyM0l*?P[עKts\H!zK>_QҀ1G=qlgQFZy9Evω\7FLXqM4 MmR $Y%u?(AJ|681ʕ9KU-euӘjr.1]ZXI Q#Fwoe@?vF !aaު] *۶*m3`JE4`ʀ(.۶Rs0b2X_| jCX=s[mP  Nx M <W2i) 7a9]OСWA^5t S]"ƅ£^_f˛y|ug;@e:&ːnW?P'3 BQǻ{+ʎ븼_b^mXҢFUq'^ђ?Y\'f.g7Sa(u|8!&MoԺ^Y/_V:QuGwO4tlQ +%C)2zEFobUn~04 Άw|<ݧ%e3@!'` _];׽ n NWֲ9vT4v$K'A\QE=t +,so*{caD +ܛOXzC54&?$@IZ`h.i2]V$j6'Mb|W=)Ikv1.{FXYYd妢2QM$erA +)zPQXXBaq,%DJvCJv,&RPDX*8±Flޓ枠{c-)O{".5`el#eH*F}G|ST{+|Y1#񖞓}1$pF`h¶$ikzmQ3&p 7*Q)~B<"4i3,9bg,9TIkG?ΒdNX +P@ˏd','gaPMzfo\9ANqp8GYz첀dcaM{>\sIbn N?RvKz>"xgz-=;Ӌ 59d`)R~ ?SKےshۻУ3OG#㶥g<J;=8/}-=W?^:>GEb-=ۖ\񽝩Uoؒ\unKOswiVkQQߘi{AM-VlMњ-fWMRlZܙ SqgZRuNoY.G}'ܖ!\X07VSbtEPﳶ%]][SEٝ9E~Fw#g,Wcߒkp:qK ͧ{`B~a'o(n(G!2AzݵЀG0`s +endstream endobj 5974 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5975 0 obj <> endobj 5976 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31084V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5977 0 obj <> endobj 5978 0 obj <> endobj 5979 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 5980 0 obj <> endobj 5981 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5982 0 obj <>stream +hެ[YoǕ~G2mվ Z2@-r2!PפJHSKW&ee!SU~N}?^?OO.7O~{݇ggɷzzGO./ۣ<)'”윲#5=Ji7]ѻթR0:d}K_N9 䙞]i6dapGk*se6 Sn` ng;Uƨ&늽?:wqecCOD`_usoI ElP%H;}9Ŀ .7㶪Tf4sfsNǛۣJ298,'2W/+Q Af]s0_RRWg?6Q9$ŤM97?yyz\'j_TWjxvYkw{h@r4 viɫ{h/7?|{w~ +n6EO{,yi=<\Q ;5&ͬZ9ۈU 6i4kp73`d9F|,# V;#{Br'RcNspT qs4fr 8njp9!f$ЌI6&.c_׺X xttxـhjAGHoAlMOO%!zߏlt9ف[.0t5Nparsȝx0 E?)Ѭ+dWAH&46.`#Wssz!*]$OnSgB|jajR+} ,^zӰNa~!-6Q.Vj~veS]Z)ʬɣt8\ëVh\ +R,[4>0٧]ocϓk/ ]C':dwi՜msuMvg-.yą!eK9`ȔzS+:| R)@ue{+3vٗ˝B#žxTokj'bX &TWF p^k\)ye\ +iEHK"G@PoFN[ʐ7>.vjЯ xЎҕqD%eFqD~"oa֐.t5}L u53|ƚ?d.]۟`nh㢤>ޞ|#FړQ2OY5BMwJ:t@*Tr"l}71$^"f%6n6~)5n^8\W% "5e+_#v0'SoR-ZG`?A +-i@]Zb(QC;X-i@b` (b,BJ#!U7E$z!i/禅,Uknı("5QGUNV3`SE]}.]EJK: zWw׆tjzXE +$f梬*7/'ld:9ߚ9U5BѪr)-)kLAo\o7kxIba&s/@WJ՚INץI9UaBb飄nX2W쪘QV3^ыobjDU1R +|z@ P4,؛-|T34sg? z͌zOQ`lu:,^r @0mÙҪj0QBL)PjRckku1:V)Ov(g{БD"r~` + 8r2W ~.n=R׵~ꆴGl7S TTź;ؖiX %q5܁ʧ="EÄPG7 +#C ֈ W֓YD6,lmܔ%줶}PDGZfmm޲VQpa;x!sut_0~ez6wEvCBc%v^b쪖(rNA:kGCbkrHVSԙv.0WZʹ޲$uR(5T:34NƂ'vL#޾b4m5A &!P]ZFXO2-ٍs!~lBw"D+~+9W~ G".NP?E$"[ɳjvVlmwS3 }*IvY?ia'R45"fqp|gB^<5q~wq.Io'/xv; ΧU{D.+fgg/iϥ)S+aCBgWqqU'GX2-\4TaH`0S] 伮mX^H/ƕsPm w?W_{k/;sPWMk\MJJv!EB\Bd,f!4Hƒ8JN:.G%_>+_+orp{{|5nU8o]|,} ~8!t( lTgZw-.fxbaF4 +ksqzzok_\CCc6}Q>!JcC%k6}q}3? lm1E<98ⶁ"/U{px!͏H"&hd4*U{px@.omZKy; h6#ڀ@Cts=8<討ہ]FڃCru`m>BZA_ Lȗ4aJk4m`Y|F6,RDzFHr3XzW6vHn" p'w˳uK6fWU 0F~G%6Ȧɕdaƻ>"2kAHHG$0mfB"HH@ SGc?R"@`rVqʛ^U-R"P%Ǥ blPH8O +ーeVhQ)_"mTxzX%au)Jͤ86B$ۊvogMwN]y)F"_R)9/Br oħuZ}.9_+esguTǐ;8!yV^կU[6؄k#(UŨ'1;9Jy+ޟc7֙1l8v/Olʕw;]9|<Δ*|9oY!ep+HB%սJXYU7;?aUĂ],whqQG*GOw +l$ p-Ϯ+47 +*qu cǚL))ײLFH~/jDZd!&8phވ|Z쒥,#? +6A^h|c=(L;_ګ +Z +6YF +*Z` R4?먚ؕh]^\|8)=ss?nnpl#nIPg +LADDNiVg>AJr0ʔi#8¢ďpo<Ҕ[63(#|9Q~_!.ap%M!2C,Cf@cXAan$]~[!>_x{?QBXZٯ-_a@rJnܘV{ߠXokQf5\-qnV)z 5z؜3&3R.Wkrr?vBfUAmoCwcv}fr| +r5 + ~|=3A(*wcѶooQO2#2:Zsg.y_=e)/(^(Ғ&;LEN:(WIl;I1HLh°TCk-_6$)$1otX&w-LūY(f*ص Z$ ϟ]C4qVNMZJdJ$2CD@v ̣j:4~-/U$ggҒ/?dթ ݘGSa1y1 +endstream endobj 5983 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5984 0 obj <> endobj 5985 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31085V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5986 0 obj <> endobj 5987 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv40935V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5988 0 obj <> endobj 5989 0 obj <> endobj 5990 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 5991 0 obj <> endobj 5992 0 obj <> endobj 5993 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 5994 0 obj <>stream +hޤ;nd(-sl/FH=YyehloUHvFMދu"y/w7iߟxxrޙ㧳?^]^_Lwge.qZ}48g7]tLeyA׳[(, ~NP<- /aؐ͜Gpg/0g;]xon[-]y 1ta]2Ӫz -d́'t2YϾ>-vJc4[WJfJq[}\bJd4ae=63x/{.&TfZ29K;n!إ_;&A/lmGͺ wK˜d30dllpOǗ+Lȵ4G6C7:6=sfoff(@i%l]mnz/>i >/"OK>` ia`a4~]PDlg7%(y~yeA<awv^PRMX5g>kF]OSQ@Wpo"!S2 Ĥܦ m[#"'DYKb[TL2 :ěʺ?_a!DR>45:,{)?PFWR<9QU-={xX]D][ް)G@!g*O"?!S i_;|]oմT{k$ >$oa+녦րurK Kb5=A/X~O7$q \Ǿ}Քj)0hЊ%DЈesah*ɖыkSU0'1 V' G%:]$F$űY8)C7sP3`QT]hP*R 5Ho?XdBiNin +7X@ɮsd3Jl!4)ȯ:IΥTUYx6ɕVǸ5o>;/w{lُr!t^n:hh8twuogK `ڣ@-.[YU [T$Ri\| Tт_ՊTN٬aٖ; \䫄`r5`} _2p@hVM-1'QHUujA`K C.nd|Ly]s[rW/gԁo56 6m+5ȿFuNXWSQ V8Y2@:mT;|ͻR=I* Օ]3IjU[j~S7u*0Tvu=R`WdlZxҲc]*06E; D.)7 +@>B g5)H[¶(8 hP!* ]pi'%t/uj׳=bl Y/ϧ/ʞ履aOݞO#}>/&O0k<|*?44t_O'2=}K^}+jǻy.z!zXu<;%[!#ңTwJPD+@xX>ƤP1nJԛsOD +Hr 8=b ^z(P;gWIi_5#+ײ,'b/ǦH'THH i,.!d-NLFy]|8}w~W1ٌ1l$ ěu0f3V6'My"[ӧy1-rš؀|{&.cqH&h>WT8hjzy{/ur$HF TCrXif;40&s ([,hzxи bHK9eRugHũ.UlIU=$ǘԺ@x}:Cs7$:y;[uzN}ncȠ#Y~.cs] j(!G1h)b+TN>]r+v"+d+ྫ1vOrI]A_U$_\Q[d{֤YCw 8( GUȼS\|om\5i 6tJ0YNC2'=FELM5uWs.1,.Ը=\Q7%]ʀ!;܅F'AYHX׷6$+ֈ#u;N߱ +Q_֌;27RTӖI/6JF* g +ITLj +U_] x* +x):\.".icDWn-r{t\4.JdrKU=[p#آv8 4t;fطҔHɚuS,89ah͏\ l@3㋞4vm$$+TGEGineULǝbTMw}Mf#mEp$-'XD"މq7j?_lgvckj6x%nc<˷@5+72@#P/"s0|=B01@TZ9V5($z#KM!r}4c/ctQ{=,P:^% 2}6џ<Ŗvt{O>c r㡊: +z U$t7BUlBgJijRn'p{0҃{/ufzm^]? u A/^bm +N£.8 +zw˖A/9->z}Wh9ab0dN 9c@;5N)wqjhg[D|V;fo:QӣH- /7OK6ӷ=g߿c@6KYxA.t'=z 3޹݃Eא({CoQ)k@>6d/;wAOa6=?b[5rQ~x;QjM=#UmO(JwL2@㾿?D=+&-yit1;,52;`K2-~Mrw{]\ FC_YXRSWAIٝ=SSq$(2xQ2qNS|?h88Au@w*;oz^_J^\b`wWqo?@>`1N_Z 5yA? +l`3Ф֎֖9w\-5@Ue7Mc!@'<(-zxc:M>k?iL@j )]>>GZuUiI[9+t* 3!螞~|XT;ק~^-l& M\3s=OBI\.so|$#Y O_Z:&'Ο_=}~|?OLϫ/ Hy-E=ed z :y|\\T XıCs. Ers/j Y<_2;wnl "VÆ?Yj’?s]rox!Mn}c +5ܦ=O0?sj QJb83KN'(B2x1R0)p@zV [zoi`m{l[ 0 +endstream endobj 5995 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5996 0 obj <> endobj 5997 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31087V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 5998 0 obj <> endobj 5999 0 obj <> endobj 6000 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 6001 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6002 0 obj <>stream +h[[oǑ~?b`g8}^h Ĵ8GbNPG}Us9<%[ Pgz/Uu]M EzL}{eksi쏄Vxd>hB N'5cI[{Nk`*$I?K \v blb^wn9}A r2ha{o? +>k CQz|G% ֕RRrwsy>C1>!-pbovxvt68mbǨs:dP|a}`U>y~vzcdk-(U`1`cmH4̔ebskb<`2u׆4@z`)=XGgOķ#G?B:r(`, A Kv 2nQL&q!HjPtx 72mng4B+ihc6#qgii +$ij{rӋ0rH vXUIP~r`J"^#L(ÄyԏC+CJfFUC!̳q~I3i4^8G'a(BUahe\! w fpFIjslIʅm+Vuhm$_hٲէr76(2_}907 g @By?9ࠚ7K8MBesgէ^E +&Ao)W´ʿwv〦̣٩}  I# guMV 2I<򂫤_hKрU4A՘1!Yb̈VJ5bRȟ7S ɜ:de3t,V pVVM`ņ m]ft"d8.'C!OoxE +qĉ+FݸxSRzu 5tyS*{;~,.L4d + 'WT|Ts8Z>ъb+LSP+4g^ m-%KaT"0Яao!ᱞ8j^*g"rݲ/~=WS8yAzyJlV6NO uDj4>d}!?'`/<čIcleYㆌ5pZddRgm7lxL" 9Nn2zrpG~Ԩu~QKbzsKQdo_ΎՎ>%H +,Q&A^c/T<7~h>[uYktչbRxsA=\:Kq Î/?'\~y/rh~|m'JS¼NO #dΜ'ނ]BRx3韀?:Z?v{}A 7*FJă"ެlajr":h$(8p8P^6%gWo/_\3^;#nV ?c?,pq(9koN}: 3xqwVA^Ƙ/ƣvw{u^_\vQ?&@/Ls+4`TgK^$1,yeGۊ5(Vy_03c1&&:ǃ]@ +(ֳ^?=9' ~˛W ra#lKBzP`8(tWbgϢ?6v.BE]trmd|<=}Tr +#ʾ BiH>NQ+0MfZ2 TM2]]裍v,qFSL`i_tы*b{w}s{L.uvElC6!)mpryEU cpF}|b)Dv&a}a' oh<2JǾĎLʇ\B$8D +2Y)#πc'V"eH&f6QjA%@O8 BvE +/(}ÚPŬaA8`D>\ZwvrHVaVh8 /w,Ѣ5G+&[+=S cMZp5PnsQUXlejZ:  +vV#f!n &Ol14ƙ={1qV<ҝTtv +أE+;TVaDiSioaHDRi`6`̍-Cs0Ѣ3ˈx9+| hi5L78?-e5pxbNpkoK5dbG4q M 9`qBW۶b%6J44 DItׄ>쥨%qPQ cu-~ڼ*?3+s06V.Kk-48:|#Ƌb~_$`IDž쌤Oaxc%<q,k'xy$mv38< Y|H5A+-4; e + au KC@)N5a$ʳI;ά }`i_KuaS V2&ʴWePWt%XTpMN~5UXFo=H'ipͶFbp7ͽiXo5~ 4\ 癝 + 3$֑8!C&6A#hΕh2Pczx󫫋]g5d K >tZz)*1=b9m2G ʸQ4R(ʖxvm0Wgf`yf 'yrIoZANS9PDb@MW0"tE>ra@X. AeEs[4AYŘykAjHZiپ`cJb=7ߙDlQ[JHxQHpi.WdcLEAZM{zЎ`[bnd +=_ˈ2#Kya.b9/| +cph\e֣@4=˳h.i>$s6˒@Jә}`ѯJ^4IgcvF?Ls?RM%&+3ccyFs e=ˆX 2C\zZq$Vn+L^bP ^k+ DH`ԉJ@~Ѳ}Ed QxȚSWzv&``2SO@F١DHBWo.Ρ0UGaLi<5 6[`^Dz{ssqܦ}}s>7Yc2e9OgȰCqP'˥0<˩\ +dZ~C,NDԇQzY&b4:o\E83C&_ӤeW0B ӳ$u=7 Q=l%x80џ-g&hq1p௏Lab6 ?n(紲 ~)Gnk(>9z~~{ѽSQӝT:-Czn6nίn_VRarP,7jk:1 [xlN&937+q<.닛?\ܜKr󭠑)NǓ0]PbA4zz9N@)yjiӧfBeӇjDLv:Y!hcY y#$yjxL0Qz׸Ӫ*!fAd˾h\(tҁEE Mfh5߇P7QxIUN A:\FLHcGSc8DYJCXwP0m͘%\iD._a^&!V0t 2^+|٨'I8||&=]ދuK"r1 + ?$)&)i})4=Z6sҵyQLkLY-2U[䊠E +G8;0/`Iq~\j(IrBv =QSjA1?M4{#AHu5!dbPW0m i&7m̒40Ŝ$}T?)~yVzh@"B#>ȪTg̻ UFFEӯ]>y>*%|k353oG3~lKa{?9E66~4ћ1k!/zv3X-g%pҽ + ^O bGotb>/XWj>*6 +幩Qa!.'eiMZΤa2SX,Ɩ3 9S;Ve̦UGVp|ͬ* N[ B!f1zx#̱6#+r]Et߉:*vS{&568+j^9AQoNNWrh?Ut0ȩFF/ieZԟV)FjXZ&W Wـ:S|4}˔u\t@]Ֆ6W)!p+7ƴvS7jW1qB'; UXQXXJ?1^;`ZXQb>R--1/a{+ae__]=yνǸ~}/+t?g쪺rCʀ;V׆02#M&w:Q.a:~5ߛ_VG%Ж! NB]eP}{}̼lL0{gcs?Azܿ ,gr\=r@haԛAe>sQSsۤnueYøH Sc۝8(fkf}N +loa=0z}j _FM\&ˠL {3#qKXET !jER}Z xJY<^[ ť^ֈ eW]m]9pn>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6004 0 obj <> endobj 6005 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv40936V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6006 0 obj <> endobj 6007 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv63030V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6008 0 obj <> endobj 6009 0 obj <> endobj 6010 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 6011 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6012 0 obj <>stream +h[ێ]}؏re9 'Q7f h-)d3:vXhU%`^^NNv3 +FJODnv=8Vd.6f{VՀI^ߴmU,FxH±S}xm@6̘A651x]kbLw=PULWooL)4)A5+dd'9SpAЌ&rdAjk6wc!bZlk9,MMfA&.&a2qmrkwȞ "4%v,mSFCi廋UHBIznVM.GxjZaZ4ݓԑ{iPGZdDq8y+ ,Uz0ð!Na#3"7ER.ܬVjaۮ淚m]]ynTv2jBeHpB5˖3}9+ 6X|<%&Ly +çB +}΀M`2xxw˘ vbzy8g ǯ/.ݠ[Ӻg11H1ktoD *4|T}(1%i!`tmk `X݋B+ۜTb5Cn),\u +5 ?$us21vx(EtJEj2D "!+ +GTph͵A& +Lx"D?54Z`u4^IdJC); J$ֻyʼ"2/]^PvPUnԻ,j~(UB0@.qbh$@.BgXiĭk-xW.dt4dVCy0u>9LA[-,N*n֩qԦDtaPC [W!vCӖmGpjeQ6VQ%4kNf=(++趚[EoPZmmy.޴RIntEql#%}m7k UȭE*KyAeg/\ܫ]ZDWwtğW8ayfߵw[#5Npl}so,H.{Yg}lOxpy}کBjGv5٫)e>èIR>`{cw#ڻ]KM?!&M$qGhnJ$ 3dr|%:6j &*G,̺ULUo!txѢ?:'rX0%4,SO+KH%YMײr̰YKPZg݄NU)dQha1+ lΫa}Ys3\ZyFdd*ԑ +Ԗ1h2嶤>٣>G>hnFpD~;nӌHFKN +*P13mƩNk +3A"f;|6/$TmuU`mS~m]۠G5e~#XK"ptu僽lkDcr6ʻ4x3NPդ7VBolKӒRIh*Jj^Wvy_{ +”w[塙 1"/2[UB_/:lz,mLLWhC?,4ꔤc)bɫnF01z,7\HGݜG-|?݌홣LzVKSˣEE0MDm"0er/^TR+ﵟ336UבWtzEOlr?aH0W=t{'dGNN}'դYX+мH4S74oMzkӫčI1;66Ү4'5 B~f$\տyqULsDr >k-/bf0llӃu]}+/ l^}eu_W7<#xQš$gT. wSxrKYkid1o (ѣgoL/_)+^w}[,vy|G3>fcee.VyaŪuͧHu˪ W_H-7X{p~Fx#NDl~  al\< \;P^:q‚g?r +`r* $9Vj6ؓwP/V~w}mCXp =c[PVYCXw܅ +!<ѣ+tkV^]Z:,pL1 ldF,"ɇ j&^6D@X˛ռن=`saaԼ<㹿 Iθ=E3c +7=qW<;Zb!|pu +#7lƉA ܥgVu 9WJ6BoRz\E{֫ {<?rOT.%`[\a͖0Z9]&OEY$n^O͌a^P +Zύ!B2e) QlH21Bvgӟ;6{,%`@|@ODS$s$N8?f(>#@\~/ם`i@h(ec偝l~8<"v~ #ួ=O[ֈ)8#=#5*X~Ag.$q# Bތ3Xޯ{O0||U#t1`ZO 'W 9aµDV%]jѵ "Qۈ"8C/BFe{JfᯗH1Ez/\SP-=&ãFi /=e)>8`M^,t $|- =Cl1bz:ch;60!-{=z@WZdIB0:Lﹿs1$&P^XE{ hMa?h5${$,сT9VR{DU$fl׎!(3l.[튪BXi\!)cQ_7Cy(^jj1Rcmƌv17O.~;X +u߽kinWWϥv[%Meqb67_>OWW +w,=k.eNS?ëB8tڹJwݛw޾+-RjЗj|.UY7_ZiǢld_=yq:L*XVfBQޗծSY3K]]=}^H KMØ?LAFZ^^?R]`A^K4A2PR;^!ۯbum~(ho:m!ehV<ܪf9<^75E]b*C]4ltDܙw%:zwՇ&B |Z"8 ? H7nB\əΞX,_.1+r\]+wue;ƿ~wO8 Ghr/q K]IFW@WIj~h=,Ѽzb8?^\&˥ccdF>l"ߝaQM!ʑΡieaSܳ̕1s _Gˇ-o{@llӛ}%(ޒM[G]m4Oyg;+E $7$O)S=1Аd"TZPbN[8H/e/P1XzĹ#>Jl{_clln{}nR.TA6yV_MmN}u$bs.4¦`*Q-#n۷H j--sWy{'*D\Snz; 8 oz)7W9DXM9M0z(N{faY\(3fFIT(Y1x"z=ZOK5yqg9-"M 3ݸ5n4)KPlY^F>[H=t8e9gZ0llh[f͑5I~]S ]g-05p foUI#Xg`>+:Oe8;}-k~Daeye$3v^aA5:tH?© Jn:=Ra"d+ bКi{WhS-ž:Jm;s:ǤeӢҽ`pFA|SrP_k&" zp^Sh֏XdI1e0vlNLR{:-Oy堠8Xak릜 h@ x54ta\AC+pEؙ@@8 $_NVZ:*Ӄ+vN8ĩ.q`v%gYԀEEVTpA0aTT,\vUT3eKT`]j:ܑ8@n`AZJ/mK*Z>P W 97| z#5IX<^u6@|hD +'RT" \6"L&^tpfֵoiԗ C.SIa3Cx;4 +?bLȞ﹐8o<&y ",Ų`&h>6Gd0Fħ".,(gC6fL.LB +N.+k{ـ҅qt$cE[++/Y,- P{StMS,{IJslE +~"=:w`l-򞐻Cl_^ +PrxVu4_m(/<. D \қ꣬y8dA="c_윏%\ }zJM*4"X!4Z-"GBf-6|*BkSVҏc+$25Yn:H6"ul-Bp-k̳I 0 . +endstream endobj 6013 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6014 0 obj <> endobj 6015 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv65226V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6016 0 obj <> endobj 6017 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv65242V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6018 0 obj <> endobj 6019 0 obj <> endobj 6020 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 6021 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6022 0 obj <>stream +hެ[[dq~_qg;4W +b{<AݚYoڕvG"Y7>= j"Y?|z~t~8͛?Lo?Lfzx)+iq*⦇on^㧇3~~,.>L:lɵC9^6393`f_铅ҩ+K$@SJ~vS FHLDagRl=VI0H}8$(zt j\#uNss6Tm&a\hX౲oוm?a?vd}p;)ٺR4TJ>=<zu=qN{Pw[Vtll m?\`ߺ{k,T1$3O6SL&xwoLfg݄=ܽ׿Ld,Pmj5|sp~}|O~||<}|3l^7m}Z auf*eIHǛ]Pˮ]+لuvsq J~^p e:C<amv^mKHK]+CXtu$3sdR 3fNͳ5qmV3G50`%VjamXL Pl"q=70Us`ZiI=47#mgs*a-pvNs=NN,P\jgۉF: +UQ3;ӏԴeO ʥ{c+]ѥ+sjJh0;ںTl rXo\oI5mA_|_. @`>#O_ZhEh胾^IsWTU2kI QTиm9|UGE[pCս$"Hd 7QG[αx ڏP!/*Dm+&IKXmUF4%x^B o}q SRA?#NeXRxhG]5v +?peƉhiD&.%XjgzzG$(7#Cnp>W242L`b xÓh:D?t *hMުtY+_\+N3dI_]J +m1$\z1-]"E0Fv1|'NeP'*sltнibybvYby}4:]ΑfGf(H6H4F ߥLiG0:սnv`g~Pq~7iM*ۺP(5'fQ)QEcR"]ms{~1hv;]`߽e B5RMd, G eCC>8CU +-꭪ŖmvK[=WMCCJmm 0S߃?|Le#)SƦF>k-7@ 7q`{~m#,i :`}6n? `QBev7oR+cu&@JScק ǰ,^b? ,uW-@Cud}LK_]19HFʚW2[R'&Kѥn/ 5B^״J +taQV{(NT`|4{vUEfw :flǢUdTe  wpPCaFh:sZW|-„~-h QJa.M]x> iSx;Sk(?AMߝqY@pBQ"3 +أFOrV&v{= \^24ݦC3Fg/g&[XK rKAy7bXY]h7T?#woT²zc=cn9T T;->H_{Cdnؠz\wdcp v,^[ sA}2Oַ#dyS'P6f6+#53NgTUYD+`9 ;ʆnwަ!*4ba z=41R :G4g}H_qJ:Bt$-\׹PDԼ|uy_T}ESљjy>dvwKp(iфl޼˦|D=2MiƮw,9 đpv(-Lέ3}JjDCaRϸ +ÑIO$)O Hѵ-jO$v5'X2bḕL9Ǝ{d6TTWGm#6?Ja-¡=:5#> bԺ\ + tâcظ܄xiIbK &c [+qqi`P@>Qmz$AEW0 ȺkaFS-l`1TTnK0nĶW.ָM*v:*.Z:öYQYt䂡4G9֧L`?tO&#MGBxB, O@P5b1 0LqE%s*'rCa? =l*ZQ3q44PxWwO(eml*ޒ?aNF˕%eӶ*ʥꒄ+Ƴc~}݆`;Vpfl/ϒ093B3eht˷wG׆V.Ҟ+G.􂞌|o +`:AV~ +'q\( Ocl݋)ٱ\`o] Y]F,<vI*?v?:p.as&q7Wdi۞c׹ 3;+ &T5lN{" ȧq_6|^t_Qq7++'Q% +t>,J`1l:g޻ՐC k\ + ~LStjse6K2D* nGO O{G$B9ɟ5D-/TVr!dMJԅ!=$9zgZl,^Nǁ,^Mz[(6fj#QMc|#y2dو$a?Ut CXEl׺=B3`]ŗoJr.V76~!RZKV_+{kxo%IH{(IcKg̋U1%X_HKk5',,.\brN˺0~&Zr)EtnyIF!pktȟsy$bLMRFV5k@SX_3]c-(uSrW$$Ceo]<"HERDFUc3e6LZ@okԩ|ɢi>>@ҊG&^b<;WR.Йn0 +\%XDIP): +88W)s9v͋g k0rLQi¨pV>G(vD{ KݥzMM_*wOڞC\欼7 >=Y6)Y2F|~?*iQ\96G,B־!mHʶeiLՑ Z3Q "T\ gV`eqk9¯crlC ȗI,% O㸦bĶfH)UːwoVc8ulq< +žգzgHrPM2C__'_42D!s"_o3`8sSCl=巢u ?/Xy=[@\kr֓F µBIS~k+ۿ2x~#R.<.G-(H0R \$G9\جܔW47eI c/Jb:uJju{q ++Y9'u=q`1@#fVlƚPZQSGL3c+k'z*ӎG ײt85TgVk;Pz8fNlx ,m7Lx̷EA驧bK_/ Ova6\ +Z>܃JSJGUoNIyEڸkk_hr8̀I2.4)إ8=ȁ5ϐ1m+ eTWKʏ3:^=Qq2-蘋=!))gyİ67`%m{~!yY]^%ב{&Tٝh1+24J 4We<}AG&mhq4o+m2{wohߦz)̗5:Vp)_s9Iš7 &+^ˤ, ModGսlŴJn\b.貊x_tA9G>* c| v||~׻ܾv݇;ZϏϧOS8{{Ews0?>KktOxW[nǧߎu3vztWw [XIuw5-.wO/Lm{o^_R`?p7ݜb۷Aw}zo徭y3<uäq>0w|~ y%.A1~ Y;M.mM3ڏ=Л<Ʈ#l] *d+( Cv8MU;7E#<܇nzLaH`Q*-)%RJ=+*ݖKCWI=oZ/!*M5uK$>G +J&->$aG(UVSvŁ(Y]w[JQpPAả[UlmMYlt,fx֜QY}sʆϲ&:LV +~(%=8R(ϑޓZ?J^Neh` *J`wM~L{čƿ6rM..z]&[!Mr'\UImAYV_ez,aTƐP[n GENh+?;B;H(2\d~wd('*V3*M2FG1=x,S +'aP⁃<;kHR.˘55dΦT[g,`P帑4jpr&4}3Xʔ@ve+&FEh9c(S т9_^GC|u +8 XFx+Fc +endstream endobj 6023 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6024 0 obj <> endobj 6025 0 obj <> endobj 6026 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 6027 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6028 0 obj <>stream +h{[%q,4H?̴v$D2YY=KVlgʊ?Ǘ?w}o>|??po?[/''qPʩִ>?}؜ L~$ӏΥ\*?,$>;'=f+rA{ 8Xe"흟˖'#KËN}}Cǂ|[~,̟€y8ۆqlV}_?ݷw.{?mN[}z8 }Hl)4!ϛ_t['Pʋ=ٛ%zϿ9N% 6s=m_?|߿^߾~wo_N参y}r㋼(ȝN6Gs9- `* ^dq|*r"/M^ļDνOyc%{FSsy÷>zY_0r[ ۶ G~o%Il!ATޗ}Ә[ }.r҉gڄT5c,xRC(xO=@;]>u-.+F|M5ʤG|w'w-&^`2ʯB/'%ɬxj]f]w1Nx㱰2Ȓ;IuNeL9\<>Gzs{4nTUAӿ}|@ P +qND cCrwpkk;ɮ^$m> qbOAwHœWCpIeW&fA<./߀H3o*U-zSOa{Xc_g٫6oO$G9o7ਸ਼Z (+*w9>Y~"LnYMP?5`1ȩMIn?BrBvjf!ٌ0 {GlDM̷rTMr̢͋ 6YJhLV#$" P*l ~Jmbb{\N(%Jsy2,U|bCm 1x. i>Kχ'12!8Ce_8>ƋpG`(64bGC9_<ܼ覀0I"g5¤ RaɭZ& ߗ'vE.O&eLy.Rg d@ԖdMOAcR.ZP.Ie2|/<8 Vpz8eHoǿ|\ɩ'vW8A)b14\ 2xwJB;Q7٢W2:qM,UwL4kF{,9[K4IJn'@yf/YC9)co;Kr rY>+v};(;5.i/~aBqh]p s< +稴W*?,ﳀJ-+ ݻ`^{%/dUbM&!㍹օ2\ߘXTz⃡( 4gaί)R[4LJX36qM]t&P*deKۿ%RBB 5Ly0ͫ+w +4ԝdi Jp[!בA!2o v0G.ɅjN4æFY"}A3飾qʮh+yKr GY>үoAj1eԖC)(]G̀kҢs&r l~G +fxm%hLʠ8mLq8񰁘]ɧu;W9KՈ=LbxiI78AjIM(~Ħ%hՐ飍1݋pw{!q"vH+wK"[|5tk~րn[{ x0*-P``%HBxڗ5YJX<$L֔3.|{@Ƨbd7 +?d,OCEUrB]§43U|+iX3 (Yy<yj{?jݝhy^/xoZqI؄KOaJc,HEwto|2-:> :QsdV,|txkr.JΎz4r37>^Uee>˝TdN;M)Pnn뱸'_Hoj2`>$:bc|0 >/ ;^t).f.s,5JĆ&qֲ*)%EKFޞJTb罘0^o҄]mr3zuK{r\ʁ»EAeuoϟxYeuaµ_Pyk!n߈Wcv%Ϭ7xGYU:~- lk]=.#9FI !/߅,GL`IҼW뒽Fp!A[VP%zʻ"7'p \3xXR>"= XHK|\/kz#n# '1QG^i>"7:7 8k"v~fyш_]&ZKJRy+;yZF-x SgE|DV~+ո3z#r7z/G.XSwјu]"&}%pp(mRVBw&7-WS2ۀOݿZOm;D'3Іw_jMĽ\FnӪZ:u eդChqL L(GqOei-Z>,v`D(Ys<ӪR4kG֮|QXOew!cN~0_+`E֡ڜE^:#R Xiɹ kyEZEGYuNڟ|պ1/GRVzz#^#8Ju?^Ulٷ7fyĕ^ŽfC e%~?́*"LRQ]rQX<7+ }|Zt[,=ǍL%~w)ǽ`/4 Ĺ#'G:Yg\\fS~I>X8[~Ѵt^LE5U^6a1Ȍ.J|ȖH7"tQn=J37mh*m [Oco5'm,+0VW0м: +~Y 2C߱omb" +FE/}.-DYlV.A'cWƒT&v =EX2SA6R\gҶo1>KX4E%[!^N?t1Kh?5ws|TvM|b^A(XIf͛avn1޷ x+׵I(U9qI{fuZ{ .#ǹ浈\"ZgM4FD̐llE,UnNnTUk󣸔]JBZ+߂p|U$yTH|?p>h Ț*uwxvPx5M>!ʥN'<2Jlt/ +G[u@OqLD=;~raT03p&ɉڒlZeOx8%ZZߐScWW|TKcPly +^k%Q8#4 | +,SP(K_+LQD } TwBл]a0gڸ0h\e6d-½˧Dm7J.@4b\YR4@ 93FNx$Wq +r&@=:e߭ZOCp(OYx; +J|?<Q],|qXg!ʧWue\- ךFn.k/]Ks*཭8LU +s Ĉkz€lAg$?!ҏ14#AwrU/(x!R+h_ñ]yP ÐZn>Y:=zJl:$$OG`;;Q/.=Na~0ƒ7#Fx0{g,[:/Fxߌ#d <EjWFؗ"G#pڦ Q +tb1[9NQϪU:pbAyh4R, =t{s+|APqNFVW1I%^AC}wdQU!bAE ;:75:*:&u`3M"QG*$DbX";k t'c΂Î~=Y[PH EOd_8Bi6*WOl chA'g[pipl#~q%%ÜLfWdnd|NG9ы)TGJR})0a>k1(?~a{ϲׯU,io=}u<{Lue=c5I޳}S#;T˴`2ݗ\O_{C-WK6a;M52[]v_m/ls޿ٯ%[XL'vv]DKٰ[kevnZvnw@;@v]/uN凿i<F>x{շrԎW18G"KKBtB8c ۮ\5\ +oiwE\ox' +ozuDꈾrP tDކ+w pEQ7ztE+[=EP'DeB>hw`!rD)dQ,Y_OՎKHPx#0},iqVZ(MvYJpv}[~~B>>kaw?Wޱg`,7$MSxI &/kuI#`v8+6a\b.kXg,dX-xK;U=J&/}Zw lGM.B-CXp|TD zf((¨qb:N+*Ɲ13_߀.f8\ؖxlҭGsDnE&1qW>Ou%^E,TY+9ωσT\-BT-P\4 +iڲʒ4!K3AU>zl2y^fIHrOR8Y,<ֲW׎jC=m]8U\=|NR[Rƌ=hOQ/jvЧ=:>,완tּh3 >KCFjڣ.LDO"̷rD훛~h!S)<BWQљxTXuGjw{$WXLf7`A JA='㉝mj 2Nniy8ڤw= ۟؏VAMw;t}>j"'3#e?w~|ǭ،@mγa6d:(˹ϣFa6]/4U롎vy9?Z_,>SYE Uzp* WYqM@yvg4QӬf }g8i4Džc8KvJ/:as)Z,rm^i␾#[wkCϡE(4cUSkB~oF!y3ؑ p8`WDu N'Qf;MHtc/D/(NX}mBigMB?|Ц !t6n8 S̙VO.o$&rdavi mpZA![$#!kapm, <(@䴀M`$Ka ̘ÙX@P.iK:E+}#gƎŚavg>D<ʔh/ʳ%])Gʭj[3x|~UW9Q%*Wv}__Upx3Vk MW_`[=+ízUn_*U[kxYvQ"b 4f +el( poq|O(( +}r) ˜ RRH*b ܩ(Tq=:SYCԆA3]RSG3=$ta Y`~1pd k٬P6Gİw#=aJq)M5]KSԴ4.W$@62pl&Xh1B餪D7W%/ Ʌ@ՅIoKYp"vO]1q["3ǫ&Dށ6pvBMb%YR])Hht e|D9j|xTC8ƫ[ 2B1p`؀V|P&WA>|^ GA|/7dZ +޹BH}^3G|E +ɧS*U61gz-AfyFZW_RbؾhXO +CޫOK +z(s[L0!)nc\2|xgr]E "=UI2YǢmAgPg\1G:ζCxLT_O )kr`~EHOkHFۥڏXF詊m,s`t +ӃJO+%E׸*ZJc󗂶)vHbSzh+ 0"o :1yˉzqWAwwwY*"γ GEւ^%Ji%"4!e7mR'=:bc`[a*tC UCZ %aҕR:[G$~Cd̠ZrC)&e= wBHrBP,N!jۅry[j2F2HA2\nYxQsQEPrN40/)L(s=V db(bm1SG|DڌbkȻj.stg " A"P`+uP82Q^(/ C ?g1-,P(IHVPA$[P4֩p8dy|L|CT-Kxw]AUEA\$s&߬rd!эhƾ AY\IazH{dD|Re)"= ]2_(*&za[BFa˶ඍQ]ޢyryHMP!viDL"`aCP$LJKH!y6kDCd.T`%Z!ξ$pp-ae-}g#^JJ;S҈J1Z)r7'0?#ogE,D}|B}7tYе2mk:Cii :f%D{ <:r[᤺>'431`&RԦt۪_Q6e +&#Hn7k(М5Y(~#k92sEO#1?WN{QRl P(` cC>IMBᛍFl^ +Bi$ 0 +LYK6,lBnV,YeLs ՞ޮWjTPQaa$MEh<5h2e`N)X& +:C`Nf[^10HO:d߮k$Yi*މ*!M d|slΨ۴\tTP2=1fc[FcoeBpN:y zoҤXFF|Fb#~-i\BOi +Vo]:s4mRv歸gf<,::I/43 xRXLEâ(4|Lpa2\X&h"S2pxXV4IfvOM%fYRLUӾCI0eࢨQIbKF}43Uic4yT(7_JRJU{b_4\DYBP5D4eR(̤3{ L(/vdqsn!C4Oqfu51J+D:nUuZCΥɪ!wI˘;0gY S]zh3Sb#tb(AIDn`v̯iQ0tŊYZ$9riXB5b Zg Ө yO K9U)! FixkxBדzC;'7*#5bui+duũr GiȪ!GCh&.=qn}\"H!Q|=r4=GJ$8#EE)~CW UQ\aW RaĢE'5ȱ)V!FHCl<+ᰣI'/yDD53݋FǘʤA)U`K/qY57q#il_:ilrdѐm}R"%ƔH75Kz Ю{͉xWCd(%D>gjD8R™͊ `Loke/{3\U,/a a ڌ2N[ nl6&)oqOL54u@ Ebp,G$#h 5R`2\: :(>j262HͰ^dȎ5ЈɋFY]1^^VU#͘f y̮f&Ay$(DP4@6 R ٺ;)@Q;дM~vŚ6g0{ _lavw)j͏zG=ϻ@9'h5~ uih6PΪy#{,;@38ebe65SE1b'NC亰V +rZ?֮$m}~ڊ B }C w2ٝ=I,qۍƣ犋,Q}C"I-+ I;Mjٜ?t+ Qkۺ12jY3TW?Z+zdg;~ѯC-3h r4NsXqXiYCA]_[%R + ⠞'| /qz2;VgomōÌ/L#6')ǀZ<&E?i~ֱ{h @oƦ +<7#a=[${` O@f$v ~NWژG+UAb:fҕ0(|B +Cj7%|8X!2*CV!0VY ѳ:x +ӆԏwoQy,~T57eSJ +]6 +ǡR.hmmɹ<`i킶G/hK._`; }՟m}47>xamm킶 +'.h4w׳]vgl#%_/g]UZjfKц7?m+x,X()TV +8SIvd$B y8cH`I!*m@u7jڲي_~KFA{#{w .|\)Kn $mރ$xӰ p/Ix4"`4D\b]萪`A38[gL_X&x{`  +K#3j%(D15ƿ3 4$yG=:~+t(_ +ڌndt)Pq֜RY830憤DIt4(Ťh%^~hSj%焆'0#8 i+3EYC%Lנ-bp(-\ yZLzM&UD-J"[M:Z@aʔW /g]-d j DcxUq ;G)ެgq լ; ;JQA bL[^QNp3a%GIrl m:9"Y#Z5)\X=] ɧ1ٱյ!6&rL7K_H0TGkUX7>K&=in`|u_0 7ʌp*Ay#Sޓ*F]^Vɲ_GmWo`bL%B{n˔9&1VÐHºxFS* yzZ tM/ԫl9Ҋ}| \ +Jd}iQS#f9[h5.ckMDck.gck5b!=!Ю5OH^0OUBzTEly,#[5uW5bT)xrd&Z"؝=1LebWY"T "ԊX"A?!UYFc~X=ZZH$"o Ҟ_K,oI: lt_b=m4@<T[>#nFq,w+'?̟6nEc"7>7!Z\7fo>7o7,zBΕw1N}U̳Y2{Op'|Tr<>N~iaW<@ID+8uT捊%)ϴ] +9 ḟ1(qa*p)9d[a|6\t; ̋^EgYf: -j T}!XwLcTdrnsbTԑ,FҗvX2mL)Cp,0uN +2L_i{Pt4Ba`Q,M @!Ty/>fK D4fV:|YfTl,6`pAt;86u2J+IUlet*w'=HQx%A JK$``G. +HN(/GUc<_:k ҙ(9X [E11y:Ek0nB@m"u32bsf;4ˌLVE~,4&seN7v1c;`YpU8?s¹%CY 0Ogu ( %wp: +\V aؒǕ\G+Ul䒧aRsum:8_wMC8 x^@$`l(x\kX`#v( a?g=M4QO[x >=Xp"OSV=jbSw\u/||9WbG\*?,-KOo^`:[& Bo&x3)4D7?:R[\$ :};u܈cCL,a;>3#HdC)b:[?L"~k@" G:T  V213adh|","UD!7R Y (Q 2W \<:?yfɜ4|860HW3QuE N?6L-J4+jqzZx]?͖>i -ӊ}LsU"G*L>(@RHN +ùG q*хb[?>3LѓNX4C%@q}4 #OB1y EEWP'I˅K9q8TG.1B^`2\):paym$5ʥpXZ757$WT̛ѷ'%|SR@HN0Q҇.(x+@([8 /LD+#%"8\4qsoz-RJbnl!/ȭF]߼ZDқ@̜!_#k7V|;(CO >&.?4h6r"xdĠMFQYnMW&,m8RJe΃ U&U8?>_껌*0l9ۜ#,*xAc}K`!yK_7'7Ps  +endstream endobj 6029 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6030 0 obj <> endobj 6031 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\ai15413.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6032 0 obj <> endobj 6033 0 obj <> endobj 6034 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 6035 0 obj <> endobj 6036 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6037 0 obj <>stream +hޜˎ$>_QG;@ה( ^;Acz3kgwm#|z(YXvJ||~tw]>ݺ~嫻?L}Lfzx+dcc2{2}ww +_9/ kϤf oM?ڡ\jf_J̯,]kW[_+Kl )%?ܠ<ºҔA]O,%KCЇ5A43 Lj\;zH3uss6_VmfaZg w0<}D#:XηnWwN ~LfJ)S)yzt|Gn}\ba|sR+zx,#! 0] +s{V! _u7)s m/W&4SD#mI;8 )`DOo7?=}C`gRADT [|d9?YPaa&j=uK ty6>DMHM Ao,QKls:MsY09"o`U}rS w2fNٚmkj ,N-;T+̔qb37a< to  - < xo ȏ# J*, +wMf]@풝"s[D*Š&4 逤G"78u  RR൱m8ĥ~1MSq$I=r9$y{!XX-vjm۾rw)xb~z?!ey4 A0DeNUɕ9%QLDxP}01nlH_+$GYO\ׂ# ?i[!seX-$OU4\m{n6(n}nLC~вEsեĵu6XB%ڨׯW]0*w~lIi}ؤPuy}y]AqT<+uH]}IP[O +G]i.+0/<ھ$Ok8F;ƀݎY +'nX9Bh4冸u D! ׵aؔغd㈓/L*gd<, (ؿd{. ؁80ϟ/@La܂]umyqE3eYdtZ2k sG3P)0Ek'o{z)Lr06l#Au~uanBF3+֐ = +v93럵c"h +xfEc:k~)jYYB:*(ߊA̒2>@nϫ3 ћLխ*egmמhEVQԦǥΕ0S FچOAXуdagE)D.d%kԳɘzgH؞ D4y(y:c* ih|lv}NÌ0 +S4/wh[̶ِ̱zV\,>2`vo!FlrZM]ݘ&OP{e>,}'x$R?| -W>jh30ͮKBP0K߸:M0RGw6UD +MH0c2K v)ѐC:c%bM;^4YXEa\ppuq'Tg,S.MI܏r壤nh*?Йb'н+5Knevvs90g?0@*J, ۼIQdz +=`nĦaia?<M,;WВE1gЙYUhG&Y+a$hcؗM Q07<ݜܿ' +jLN9[u+`a_ʹü^2۬dIZo}yrV&P+#Dx +ͥ/)0ځl +$R"#taP%JV.jBVzw^YG=6/1t ªieYe6 o~/6CVScV1M~Yu٧cE\U' tF52ufϖt[^Ϣ:)tOgMJ9])PFeʡGS디;vO8`CZxȤ +YtWgB=0K( +l$> ?S6b(hQ#@bg `t6Av1XM/S5iғPZN_*)rI +p|p 8 ٣WXݒ?cH0_„" l@q&QoclZ(m,fHdž ~#icKU$Pe?@/%xe~v\0-LHTeqN`3j{ iB>pj&6ǙXk*K f6`i$PZV^J3@^)b!VqF_UI{/c8=U/2^mnox`$?U·up_^F#fo <2Bc*Ŭ$ l(@rC\e5;W%nEbsͿdAп5VP:M84kW[O"8ۊ{q^U= Eil?A0DM{ +i"K,\9(ƞ=ܢmiL\x&'6%`JN[`P _›㍊TY'ojR{>H—|n}nyQpOj}P^9 +r ]$~y=u#ݖٯ,KT/Vq]#<ǂ?1=> KptĀoz- Ae<]֠s F'~* 톄н@–$1`Ús#co #׉zc K)`e5>"2O$7ў-hn%D48z(WgkQVjT9h_lC[uTH VC +c.Q9œ߲-AATAp*Hib,,'qsݡ*+P,xmVҠC_V]6vi',hN"nN#pV=U8^K3\1k=LH-dRYd>efL^N zƳV[,aCNt)qn͸8Ri9CKE\WH'e^ =p}8xER'ݞue;>R)Enrdַq~hx1~{I P-?s`~g>Ov/"^>[alw:6ZJ +endstream endobj 6038 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6039 0 obj <> endobj 6040 0 obj <> endobj 6041 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 6042 0 obj <> endobj 6043 0 obj <> endobj 6044 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6045 0 obj <>stream +hޤ[[o\Ǒ~8s 0;@L;P6̓`,#Rf@IL;ȿߺPBWp<=-|O>|{}?/W\q]nZb}V__n>\j+ 7zјPa͐#$&C\n-R#zsc03 ~i {s5s ?P՝8icuBZvn{"3se~PX"kj^+GkgYḞoxθ%Ï-|uYC,\Yʙ-V<TaDf5WZ.R%EG+ k+"Ae^aIk-rq[_/ٻ +5e)u-aqlq+wWmiA;4|X5ŔZۿ5c.;Ia1w~Ç3~K ٤4 / L"/T=@Ciiha˚Bm90:`:v֮oYMvӨvMJ`0!NV`iuքdiBTW4 ߠIh&W[5NXJVUh^>-~ k4G!>ոw~b[KXgd\"6hI8;੅>KrA-540 RR*!Ua~ޫX [< %:LXf<$Ma-1 ZG<p9 +iǥS~j5#aAH&BO_ڧeFz3 9N{A#n㢲GˑGJ$(xHas^Xk;T2hP :$X]toHhH#-FTȨnVoHGJò0͕:b.J]H:G[pRiR(Y|Ӗ_ѐ9n_|Kf,98@ %X+ +q,ƛŘ" k!Pi ̀0 +T Y&rJt1"ҩDa+"na{IGq5ȰV<-(dKG6sP13 3dx&0OZ0 b=nEo 6(-z,9AL`ILdړ,:3y5jFA +Z +KeN862eD wg8J4, #97GnyYɰr8vyC2D\`WP[=CMcQܴ( O~D,CHe6K'Y8R_STp}&5F (uޖX2gjmтkV$Px6u".M/ +8e$[:E E=ݴYqjpi dהyלۉn n*mLKmh'Hǂ]<řU1dw :q157Q.)m3HhaW:6Xu"j(^Y+;\󳢀uﰰ/Xzq + Y@!o @jܣQ+ԡ8ouwn6c~Èuh8WW?<̎Am4zCݪ/; +gya R5i'Ϥbt'w{@:?ZT"_y4_Z]LJkFv(g%\7Wc8@;ıqV\UOD7!S7Q=A/=ㅔt&1GE֎9]" U>&''7*ᑯ1] ]a s#Mq>+MQRx1zD9᥍ұi!X&!HhA{;.܎**&)~K0{cn:m#WDq'bE6za4P:U@e#}fw>qĝO +&AVi7|>!%K"v EjI*J.?25Wo:鸟{ܝjfnkX*r֢96vŬ_jݪ4&_81 hWibip:reYGmXYTYC;[yE Cd/I_a{HLH" T/E|%F^/$!BB{qtJ*Ռo_|"rN6 Lؗ蝅:)T}& ~0znZ>.O?-װ. _>Ӝj2p"/CAǯOwwOww8n!WC5OwX~x}{G-#H?j˜1YT +AW% ja;PL-@EH78e?^wH#""6vR#5ǫP+£+k<=s`y |'u7m ja>l*_ +,%GOw`&0EҜ^G2ԑ[,_VJ&/-Q3DOJͳ_sߏmGO]Ŵc_a\|.įPqʰո7}~TL:C$ⳘT$ (K~Y/o'vI`8N' @S+p_@[zgy^('*xcm7_9r\"д##,k-U> vs>vH`⭢|?<+ +;W&njtVb`r#Y\ -OoqY%6tx@,ZHO{K{' +endstream endobj 6046 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6047 0 obj <> endobj 6048 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31092V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6049 0 obj <> endobj 6050 0 obj <> endobj 6051 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 6052 0 obj <> endobj 6053 0 obj <> endobj 6054 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6055 0 obj <>stream +hެ[nɑ}Wcbm`͙Y؀a/ CiP䘤fo7Yդ,/ՕȈQYop|\7}p{x}ٛzgOg<{syi';]ޜ:甦j.?n6Ɔ˟ޟ#l,jʱrٖΖ\j|*GXEz;$Ҕs}a`O/i˔YI55j . +q~7 "LsQ*dFX,0zd_~$$h-"0; +A~n$yJa< 7eeNsȵL$!u;/ippmto^bҭ"Lo./J/8%_v@MK\l|pyz–X'<Yo'iMy讍MpJ.SNJ 9{/o?^??GSOlj$M0GT뜪Gxsf5Lt;){*{*(svsJa6/lCй6$&951sMXN!5I<Ǚ\k( #lSVЧ,g`ogDeg=j " b2s +Z0o", Ý-> @hڧ'Czߎ  v?l3[]Š"eh`K-P;@; +P :oi <GPJJ9 +X,[b3i*ZlIȭ8*La.1 + #uq*/ +eǭK~l5\AGP&DG_ڣe&yWDoN9.z3ƃCI5;*$&ē0,u`d`hyC3؏`Yq0r?,!m1FfԒ|Gep.X΁}KP)L\#LU Ly" +>x`Hg |"n4lo/o,?98 cϫ +U@^c +^ݷv?䌛\?Gr۸ +` t`X u95%75Rt+( +xELHa F\3ȫh`'<$вT;^H>yD@pO[8k leqo>0-!P$D'P%W  %3/D 1΁rq{z0ȓ0ŷw`TEѤ.mDV4!H;leJŦ9{ +&3 U7P+]'aE@/F Q5N]t'o ߵ](!C(U[w*?&MIm-4E/ﰄFŇC)G|2B,#70"8G>XbeaLBE \]Čl3ApXh P)HPy$K&C@RO]{L;`Z1^q:Z?ufK zإD[哬7GS_@y&.d 8`68z7ؐf'zq$|\u +<ƹ`GSgƗb?e*_v~VX])l?KQ akp6 jĉPNvsALe,ː6>6"@Z ;E!jnXaKjh*h k̊j?{>9(Țy 0z`꜃ ˘aYhe TN]ȍzLD +@GGLb4M(y[Զ~z=<>^9֝.E?p  m4חn0* +iQDLn?;W@G7*2Nx[![;\e!+⽦ VQ$;>I8ƞE_"}˝Q:HNpі*WEͭWQ69jmjPR} (n'v8/ER!{1?.U}moJt$> LŊe: HOݖWtM4ZƜm Qep7`<+ ~Եu#J=X͚ + +[!st7|w]eT ߎQWQFisEsɃT]Y&lQnitdG2X1p(ÊN(UK +ۓqU¬#[3[U;9 s'I!|6/'1v|ÿ̘Ew$OkpoDraл^>aL*s.r*xevi!O6 +ud2R/%@%ÊT{XFb5g=q7uhESQ_lhCL=嵗Tk#m3ap:`^C+:@8y]0-({f@G [uɾm4 hpس$S&Dlf͹e2b{ v=x%bl_ӡmh0d1V\$AAk2jjx3]kHYeLߧp&/- %*"S8Xm+MR覵i5nYGsodE׸i~}I߼p +^]B^Lmp%ĉw׿~-^Qz/o_匿iKizNoمbvpģ-Ϸ[}7WhŒ~+/²5E{w3=t9?@-:G/Oa8IL[~@}@?O-fa'Bt|ٖ +蕻7=ټ:yIA~B8֕tڞmw@z_vǩ}{0:_na'd/ZC7S-$}u W2@ab}_LƶM{ SuOx 7 +C䎶^4:)Ox i r&X4/O+ވqzhwrC[xpy|&wޚ`q Nੇ< 2Nxt|}ދyٓjNfl=ɹ_ )E+;c+K)]e^~7;Op+)2ܨ@:*u)mM܂,&A#lldx ۸0!PB?LYHg$_~CM;maK}Ց1"c ָWFz>4_39FwGV7]K7Vz)UCHm/錷M-W( `oa>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6057 0 obj <> endobj 6058 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31093V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6059 0 obj <> endobj 6060 0 obj <> endobj 6061 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 6062 0 obj <> endobj 6063 0 obj <> endobj 6064 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6065 0 obj <>stream +hޤn>_Qai־lb@VlAa8"e:\d'-{F@v׫KuwO7Ón/{}ۇn峋_UF]ެT^blT)eJ7Ik^mgO !@Fkvaؑw)/iF`$;t'IIPP{C RZ6l`725 2 dSkpp@&?hH_nÛQNܶԯɔ%AHX .Wì ŏDCާd:ﵪܗ Jtȩ=wԌ'D[J ੪`jC7oXu/_A[$)LΰL ^w̓=w2BSk;'M!e˨vomERh RYmdYx|l0b +Crc8_qg(3`^Q==0P1zgT1Y#ƚ!z8K!'8F&u9ݣ)<:IԐu <\O\un}KwDoddd}l)%l}cHAA hȪyt8se;3z/ɶqMɏִm |8kϞ?VtTֶ)fw*ARr̪fxPBcíKACoϸ]x0~'FІ-^N/*r%UiWPYH]C.0Gî"<þ!nb@@6qeG&Zj y%56 q4vnxl>HڬW,!Z"c\FA*;}WST,5l>NnĈSV9ҀP*4J6M["eg5:*PPPWb C7+Lm>@] nS3 kdQ$8B,"ObaPؕe3ڏYݭErltfݺluq+Y4ˍy0y Н/󴦺@_=HD﨓cMb 3Li=pFwz1rdfؕ{ÃiNiU=0X/u ++hgbӃကZM\wͨc=?^8@k23B i{رƇSNԚGTduhJ kfA(тߞYkokpv+ .eaIYAlIZpl +${)GPW3EY6TM9;TYmj҃A)| ˇZNt:[VQdZz#\]-EU['Q DY*GPR -)"ukYfVH󚥥lya{d%m4[=%Qlߔ)+f]س붟z╂;&ԭk5x1Db= [ +M:SC pf+GnB=.ppزq +{JQOhn7~?{8ema ;<+DŬQ74b”:cBE a}& <7 xn~8CXNq*Zzڳ.~%bL0fvݠjމTͨ}2؎F8DYMgR-+D.␤iLU~L +2+9,٫Y&PrOO?/E)2T%N=kqn!TMGSVOz=[H^uW2oyxک}ЭNƳ2~%1Yxyo%rF8hi;GwۣyE>L(̈RjtB9xjNGm{<ێm}}JSiՀ;92ԲgV6nM\&|hg,`Z|z8D`t ? =5^{z\hDh,dO`$!wA5V?ЖyvjŷS^wr` O'n.8 -/˾ C_[rϓG޺v {}r=zi$!(^éЇUFSu^zeX-=z^X |+fq~+<8 W^O@[_n}}7 !!',@idd\i ^li?5B +yG )&p4{U/^wRtXeAD[8ߔWի<ǏZ˝/w*kQf3xhƃ ăhT KuC28UYØ*䈌ux1$xK#Jy: t:Mi]vā@}7PJ3}MFe_Z_5 Bgf|{W pVm@ qAˆ;|3z9FѢCWxi]u\7f0uFe ցIe Yم7P b쿝)yGq`َX' +endstream endobj 6066 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6067 0 obj <> endobj 6068 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31094V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6069 0 obj <> endobj 6070 0 obj <> endobj 6071 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 6072 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6073 0 obj <>stream +hZ[\~_q!"F + DB2*yxh-?=_UW_Ι1 +HS}Wէ՟߼{y<[n狫Wg,߿}v5YnweWq)Zyrk]F33ʢd4w:J|؛QGPSkLuԷ_VU%VL۸˕k05Y25V{ktIʠap {LZ ip0@iۀ|9s`sb"x{1Ӑa{t2v©pVWA. ?&/ʺRʢ|*%/o^wVn1?GūwՓ8dZ(*~Ī/i}?-Å +v Eqw͋DO/n^?~Ż7/O}u6.L +''L$YJQ i9=rno +/˃ЎiǴU&)+ ~a08+#dJGRmɘHttL!-kc]J6s1d}-`L-D'7F%KYYFEl B?!2/Pln$c]H̆S>X_ ɤFVgOo Gl#~N%,9zOg3h]vn23-i3Y!AG۰`RnlQ(ҡ>ox"hb6 S)MT{u.F# u4+ħNbxDraU7LŮu +:UX)S$+|4#/i<M|蚇ߣz%R2Cz#!U<&c^OæMUbot?K~"]l!|"QTѾL#]L,SΉ{mP{ٸD1SXF|̧SXCn#*!kd/ D?@@繝Sz<{z>Q߱xWk; +U+cC?7Y,wh*RzXdhM^PMVGφ)^6"6 FHsO )eJY صISSB51-S':KRs`XK^c0K,2 ++*_RoQ~3 }VTKUFY=;ýtK Latx myYTjTK9W>jQ>8,iO)QA.Ǯ7xTE1VrFVɩXͳq *ìG__,!˳չubzKÕM|pR#A,MĎ[TֺxՐQ&ݍI! yaT>_ДwS`@SjLZkNfPU݋Nmä0X]Ͼ' HVA~gߺvn#yIjbs*H=*u!6l$La{0=sLkcݵ$kyѵ\Y;^+gs9}Ϯw= 򒈪\mprН -'w荐y]Cet,ʦxouUn=av~:x*5.(ʮ.63" 0ӥh.<89mFT;Kb;;}m4b`PeGDPc +N:ôb݀}EӨx3Dך~1+(~Ɗm|lfroG_vls*lK@WYhcc$ +}m OS@׌S"0,}.z@RK`n $MÉi+"r}/ݭ/,Qv/HszrZaƾI=Mb7)N}YCY9O˗6752}I3wfI FFS8^vssJnJ9kn|B A p2a07I"|59piD)OND˔Mih,m^H`/lv/T0fTg6cߥX+t!74׫'{#MB Π&:wh͜&W0уQ%O`]@suZ%+M[Jaeho +.EZf2PzGY̓dU|!ݔ!W۪B_F[Ŀ%-捻V܈F S3no2mƗvҷ-lԣbo'kӔl+( fM\uGe)MFkg&:@rb$Rg!Z\vW_AΈ/ؖ}&`0 c.#oEɥ^$dOw|Xg #xP3nwO|L]?%Q%k6pg7_C_a,'o}akqMѭ>@0 8CᔙnfLHkhAN=;"hK-(4_W-z7AM42ᄌBfiq|y9Fk8eľiQG|[DؽȾJ=`zo/ޚ| zM]:畦;p~M4U׶ްMq՛GɑF5:X<{ڱ7yQv9TV K@f''o&H qqVdt X9 aǐ'7G/Vh n5Ȫ wAtUG0°BB*G"' Y +} T.YNeHpʒ_}(, oR]ұJEߖ½8㯖̦:C4LZu ]`p6rm^>uL + +endstream endobj 6074 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6075 0 obj <> endobj 6076 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31095V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6077 0 obj <> endobj 6078 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31096V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6079 0 obj <> endobj 6080 0 obj <> endobj 6081 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 6082 0 obj <> endobj 6083 0 obj <> endobj 6084 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6085 0 obj <>stream +hޤ;io[+G]s_ +E'S@2~H򵜸Ll\!p$x6Rf?=}?>>v߿8;[=|x: z9c%ф!F7ڤpygR& 4.;{^)?wn=4(۝ fL- 2 QJ0-Anh @Md sY_.f1"`fڥ + OV9,hbQv_.r xCa46<.朆χ3-lf,-ba@$͈{03=t +ō½%Ӝ3{y׆A\cRL%aӿ PkoC5婛:@9#pg>ipxv>OaN\Tax`"eo`s8L421j $NږږfK{c͘mU i.ufTt}'DlKmݼ|YCz mxM+jjf4k&lG o ~@m-`a6"@h7q~%LflbQpĈA3Z#Mhd@#'-km ZAS+Ʈ?meLMX&h.w&7&kфۑݚ7IDmx4p:Gd,( ^զU3}e=H+j,@D`۲~(G5CQPMqp8,9 + X*Lp4.WdW=IE47,SMö+;jYf`ǃ6-dSQSZ&`&$U(KHfY>ȧ#?#[%&ty鿅`yƐ =BqW&w{ +ś.^p,X 8]z+Bc|ЇR9"JJз,s(6BKnT3B K sœ\AF6 S䂁ḇ؃ö/V8%2!P-ke;BWQU6 LXB^P%,\Rs7;[5-">8^+2KEX7;M&s_ NQXVd怮xg;cD`)f2 E PQ 0)C4LYD:36 1Vio/S[;`cP4p>U01@N9V=eH$zNM.2"0AnlR+Qh+q_O}U) u&DAmav6}Fҟ+ t0K+-79>e-tE*Ğ&AcVĭ>@#nf|=!߿ȋAG~͓I _ z/h1'`ң\۞tM;lDh2~Gf^B9obmcHu%Cse񢲘~WzLZ(^ +Rj;#JT2M1ȂIs,L  +wt/c,3,DKB+k#Mphs_նmŌz騾tD3j*7byʹkfuƻ"?(+hsɠ&$<!N*I_Wbkn9lHzj +Bv:c)ujP59"hE;5p-_@Ыpx滸$jhjV\J9]6F ҦLNfEah緝K aN>H`ZYV [EvK򃦡$e:`Ds˗n9VQ3&5>K +O +<ԙE8YNp#[ +h2?n2g*i<2# +Y2cTJ-3h[9 b\  19)GK]D+$K%1hCde)%!J..nJlJy⦤#h=Qy@q -Abx +dJO*4_LՒbȖ%W{1Bcruz^._Fj@1LzAܛ6t8v;Y5{HXv)3ǧgXfQ#T<铐iG)`IJ)aEn58$qDh.VZf>)ȆQzw%΋t{QSç?r#@*Dv&x>'WupwKfg[bqvTLb9jXI*Z_i)\aA6A%#W/m0>4r1> WNNj/o(}{꾺ckLjxn77Qr7^5XiLn}`Fq@kzO5}903g kjWId IYYK֨+O7ZWÏkWk3` +a Y}q×=Rnoh 5<<yy₷Ka;{:4b7ΩynXW57e|x.'>.~#S2=[fdKRpA=*^GQ(G#$eN@Y >M*w7M&\#wP|&*a`#>۪<VxA)B7V;]{ +%)NA%ŶˊOg{Vumݾ8;/ZҸLuuN"gW +Q=CIsî$S^~]bL܊~z&# +h.vĺrMnbu'*j6tur1\HҒiޫUNvaQRd},ȧL'tK =)о[fvՆ;[K gSWup䳨{h|Oo/`s;Fox˼Btu#Z, !'?|d8u@A_:*?HU%pb|ONP%7ߞF E3H?%@G&5`Z0ͤXT`7Xzl2Hƀ,`#op4fg&<\׬̛›o  wSv|kX+2pzD=_Ӛ!! !#PRSl ]&z—]@EАg3pJQkϧr`hhh!6,n + +*0)ݪfqNt[z'?X4}u B:gN u, !BH:@i]"^7|0iYcT_0ConM 1TXIorA F/ۣNmi^sfBʑ5!rlYGtc{Y1:ՐOGL#ϕj +endstream endobj 6086 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6087 0 obj <> endobj 6088 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31097V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6089 0 obj <> endobj 6090 0 obj <> endobj 6091 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 6092 0 obj <> endobj 6093 0 obj <> endobj 6094 0 obj <> endobj 6095 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6096 0 obj <>stream +hޤ[Kqϯ㌀.VFwmz-i,34!ή#2YCj!,Yx~_>|z%(Y? Xxl;n 헇>?aa7oa;%zбLy@xsӘ8TYj;Զ]J>0F 0.@+/\2ly]̰7?N$z2@lPdk$ss`{4g|8kFyq'>s{;87ѻ\ޅs7 ; |t11e,~&y4a40բj4axӣ9/ 0Kr$<7C,x+>tC +=w2T7Љ%} 0/$f9Ε2pTg_,#]\F|_|M&U ++ZO{Di QzH%֒oESuTwCJ}L+9 Bq'8Uz}TmXEwǁ7 "1H +K<'aXҕPx父L Ŕ:PPm $ٰxm}NRd!R,mIH BJI(q[*Fn׹^d,Npw*k*LPq&篯U"0Hi VbtVyO+I+˒bdK*8v![^Nȫtx:s՛+VjtY)GBh0~ UQ, rb{G؎m=>iznf>NS)R幚*KSEA(ԙYT*y93cmf~P=$d~Z(εV;us +6-7FX^Q!TYId11Pb3!}sFP̼3P-GCЃ:.mGFH+;_b_,)"\ȊѣSv&LY5K7&\8蹓XԛZۨ^hh]!h6gȗL钢%2)iU߬gt╅ki߅.l TԠ4t]T8,utfxRVϣgЂ*b(J9sUͲzU˒79.++*Jx^%7C{eig#e9d447EѠD{N#\qW]H`l8P2sO.$uə{9zHUj݁\>AopW p9Q?|;a\Lwa,/_* #ux|4;ZÏR@(쾲 Oh߆kezdg<*<ڙLJS}??SOOY"d9"Y;x̷!?1/(fC.zR "'TozߐKmnU4c!ɓ^T 4H,9t9s>AiBwb',\ +$HR6RTH@@5P*X\++f6n~◊-Z`p1Q:MŞx&Ai#vmgېDױ%[.P= B!sV\^f;%IznBxki`s1n_U@nu! +.X\,cVHonYq]_ 81'o WA$ f}ԉ I%N1;q +Pv!|^Qш LS-ػq;1KGw%.$%pE..5%/GJ#;6ߧ~.Zlt}t_RK[^uml:1t=mwDWoDb%-WQSⓄ}]NsAڿj#WշOm[,'OSbcMy"hԱ$st;UM{Qjң>h!!G4r l5 Ƿ֫rӲF$v002x41<0gI K٠|-r9ELg҂VZǘ֛[ΔƵItKT]FVuSҌ>sڢBG2屙XhӫD H2(-V*aR?bJbr$pVK+U9'")nj so𙓣xIjjk@Bqi}QcM}k,Lxz΋$>بOArK!`k-W~6ͬQ&˚8Q5 ^G5SF0>@(uckR6I 5֊V6OM7H-c$#p},hxzZql;B@JJs֜E-`O!o[3{"WEPuB*WW@7?-'k1 +%H&~S'^Zc_:,ZŲJI& ;dRgɫ"*qT!trsl1jM&Z&M ]T<5.Ï ]\A 8SXu2 "]) +$wel͠wxO'q|NVKta>wUva-(q< `d2[h+6i@wQ +r4B2=t*lSWamP1oM;j)i\*V^xK,Poz_į 7-C. 0t2_0 ` +ģb'AuW$+$K9_e7luռ7>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6098 0 obj <> endobj 6099 0 obj <> endobj 6100 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 6101 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6102 0 obj <>stream +h[[~?ռlrq֎FfgJƖ#2?}JVwivRU,V}U$}x|vg|ۛ/_}{:}ó߼po]]_M6<-r}JsK9,ׇyY|P7$8x"/ _R8zHf'Kut|;-\ǃ]U?a 㲫kka[Zso|;Ė:68 +J64;}7w߾}Uo$-QMUoᅳ `r+)gó?=jxwë/{yz }?{&O7 yiŲ„\)y<!Lỏ_Ds3=H9P9P.%)_0G jn@)Ku k* yɞTh\\c>䍇>d3`O:^9FuP7X.ޕss[g2 4s/0 N=gn?gY*u|"~}਀<͠ z xt r'?C҄п3(s[&`'.4hP,K +-84w0ȝC)Ix j!\0IPʎJR-kgXTt(,XziSk*Ñߎr篙Kazw]+(XPIq"QcѱS=#w5KqC$Syt&=bG9SuS+NHz{7`y+%CЉeh3Ve G x}Iv6b{<1gj:y;٨8 !+Ƙ1ו7KSyid6C'9ŋd0m37-![gB>ek!v;#lF_Юy8OW/(ڄcL\8s@B #ez8<f)0qewMmtZ4}~I|q&Bs#VzpyTG6C;!&ߩaY۪]Ixdm@6[h0Xٗm5b~i̩S2h[%XGL׌&S% =܉ +U$W$'ҍY:jh<yeǖL>ydK&Y;]YH9x`M*bBA]R'ԝN1^acKP}JgQ]ޘ0O=r7\zD3s7b92fQNg&޳^ӆWM'zev`If2fu6ds λC?9^TAwI!DŽXWVO~.˶oSK,|# +:#u]ideuhtfGҦn-Lal\zJs+̷ kG1Vtq8nsK‹Q)[l?{.-s@TѿL2ᵴ0}6}g+v72[[eN" yOt-NtI?sĄ . @"Mx K>/sDH0D}g-O_>8c?2;W.m)AA-ps1; CgX8tFă"ؙBXiSM{`ҹh-;9^Ls@0!et\e*$x |y.a9s%t[Djs10u9@nvC^ ?ζuIH7('480H|=|0X^~|Ъ0/X8JR 2"UAL"#o+TbRH MB34W ]dm%!ft-[L wk3K> +1k,4 M'aXV08 s?g_};ݾ+xٿ} Hj\/='t/^{:7 DAG/"X6 <ԕM>ꍸp߉i тĄ%kK$`tbڥ++RKv{Cy1L&pP^Do33=3Ձ= v\M`%;qR? +|GbYw*D[a`Kv;,R!Y6'qix}.k|ȡ`~\䁇c+2f$ +{؜GYx?C?n#L +Hǻ䓎.)Yׅ'ŝa +UT0]s,ZQ3p=Cs(Ο|*0UcLQl̄EIV,7姱ڠ!lj,UZG}4؊@+1 PN,3 S~ *"XBΩscg+HV,(8LYia?y|ÿ>=I#*P\|/߾7s32x++2-)7%`Owq[~Dh_®_~lUg>rٌw}+ +)pcd?cjH&G[<nbazWY_*BW|A,O1(R W~tp51) + 0C/޿y{͏JUaRjJ) g5Ê~$(@AˆWo33,7gUGs2/-DNԧ<}y\jjJz3dc T_fMm#C@Cf/ c8p`+!H3%>G1sV  ]:+fh4f3 8 s+=jf*MmxL3K]"\.EMJr*ʥmn2efqedua.PpmsX)L#XK6Ad;c AC#$rП$Q1(,,w '@AvDSz*?E 6 Ѓp-+1:O>s!_ D@.x((ikr$AI/x:"wsxm!J-_ }^T +endstream endobj 6103 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6104 0 obj <> endobj 6105 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv50983V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6106 0 obj <> endobj 6107 0 obj <> endobj 6108 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 6109 0 obj <> endobj 6110 0 obj <> endobj 6111 0 obj <> endobj 6112 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6113 0 obj <>stream +hބZ[o[~G2(WgK6 >EAҤD\v߹=@Ι|3G7yEV7_?n=y~?u4{l6F9Ί(QA{?8 v`v`@U &+m])EiJ0;D㠋9MGfSU6r)hY`(=oQzxCOM+( X|Q7^[?Xd7f/v50&-H'8,>&m]z`3 2'pv|[Q fʴ@0`T 3a3i0 5-^  m+S +-g=wтuKvQopRy(A+ؼ@:{<i3%. nHH!8p7m c:L]yP4*ĴȔS_fڔrADI^]n%A!A' rEdFJa\5jyt#2FE4OWo.Ik`jyC7op/8/(0yR[(hgX$\;]驐e9Qm-uxؽѤ\Gp(GLa9OR zy~`Pbi3)W#Q GWȁv?0Euշ2 +_b'?[@B<^8Wwz~ǝVO[ջn%ͿQ8o̫<\Ԏ^ P3LO<~xMC[dւGg!mܛ,gHgA&:1A 4z-7}\A2rݯjzxy@i0yfZe| 4.fo3VzE ظY3(ND, ] ȴ +`(mϴ3ZI +;L><'TK$ƈAa.QC/5o*Q3)8-eUWٍ|!{谅S+pKg'v>ƻ@ۺ>Yεip3`a` 7~R%)|!T=p="t \Un 0̡lYHv-I',ϼaUVLB@V VD#n`hSBπG\|!4㍎w?g iD xhz\<$۸j ]zd\r{KMJ1sm]̭ώk#:٥ ~ͻl;Ɍ=~5cIh:ly„KnHC{AH~YN<]{9'`5u`[VD{Udܙ$䨂stkHSF4zªئ-<ʭhZ^ƺ tԅk%EI: +)Yn Xͧq-exTyfjίؖxETNBqڙqv3 e$c-(pacw, ^}\Ȳ2k]rcnksm.b),`v21YI'$aKLoIDs*7ne#rh.R؉zG4Rԥ&@']e}oXX_j쳪.Ebq}" K>˄IiczItƋUd-\MLz3fK46Mpw5zjˏw6~Z{+Q=aZU'KRNhȧ>@Re @ZEUkӦ"S"ؖPWvbUêə +銰0GlyA^5o~AShn:7+qцuR& vW@RXa-Q]^AX!Z|ߕ*L c9NK9fʉZ&:PJڋla^`f` +(OO5\m04v/%LGn4R %\^xӽR{ze$曅-x<qWo8ǂI_Թ?"q)=4M "Ԩ6̳?P(OX=Oa!~e|F~9[16 y}ܪ9'Ղ:ؾX~i417r2A0~ݱ4y3E8A,_rU?.ױ O%VJL*1xL›I81oO0oʚU$<7f (Ujrj&tJ-_0z_R ~EվY^%x\Y85FZZSIw{};wySQ@?uu n +endstream endobj 6114 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6115 0 obj <> endobj 6116 0 obj <> endobj 6117 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 6118 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6119 0 obj <>stream +hޤY[O\9~_d5m\["H¬vV!}H@:$ba̿߯>t7 ˷⪲{N?:9tpb'>~^<]-V+H>,.QJ#&mJkS˅Qj b>Sc|6&xƠw|Թ-} w&4mpߗKnN3v]Im+{:̮.Yܐ%t6tfqLoW.V XAYiJ)JTJVg:ƫYڤ Ŋ=y1^2 +eZԻJQē UJCB:M=+= Nh"?}h={0mbN^Hce}{0'O=L'$g֖Жp%F :dBm`VGV`,뱯Hіq$ˤXƶ@ =ގMS }rfh &fٙ Ō dr c>b;ؔW;/&&z$ A| `$PJ +յL+<,$`F2!q1o:4vLNrSeKEAJ:+ԗXpV{Dh<6>o=EձSIF5#"O5F.ƋpY%5[Df2, P8C2r, $Ӝ&?Nuɸ} .˴wS-iGObuC51YV.E='TY4ʙ Jp\TY:&9&EܑT:܉e\͂ qIxgA"Գ)l/Xw40LǴo/Gd8ps]>q2j2mrǖ-/w)kr_6z٦iAtt.6mi7N۷ohyYN&7FUA#AH\e]qa,V#.JR*ZE:9+{2'%vPaNaNn<z9ŝi%)Q[xhzEF57ϯ' Qp6D)\/2 (Zg/]CUnoIM 2u+ +J|Tb>wg\SfpnÄx{d-1N;`Den9;hpt ;Ԥ_q/ ;~5740!x̕o~91 \>.L@KCtfl;XĤ~7pwޝ/6rJpmo'_ gy)qMk9gճj=nu.y~f8 +endstream endobj 6120 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6121 0 obj <> endobj 6122 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31098V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6123 0 obj <> endobj 6124 0 obj <> endobj 6125 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 6126 0 obj <> endobj 6127 0 obj <> endobj 6128 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6129 0 obj <>stream +hެ;]$m+v}W 8Y FfG'>-?=$d{7RاfM?r}9_}?\._}ݝǻGwrǗvZsYr>uq ww˺xzAz^א +W.i*Vک{WsrKDqÿvl=Q? r>JKj83޲{Vt)ЌrЏX{%0䊓w)MpXT5諀qCh}yAd-z0S?Zk%cǼ.oa}K1B1tpy; {ޯKjDx@@m}_xv亸n~YГJP;j;=weijVشNu0l޽sK.ej{T#p`zw:A fAU҄@TM'/)i?Q3gEt4(X9aiAauqV"Dϖ=T,(j:?Q CTy)kQ-,uD8]ʳRB +\.ϷD [ l?uy +mʳab%JsEևC1>]<c+XgBGK v͏*4&3vˠwd8]$0\.ӥGbO~ /IҎlYvxw'#ccx;&hȜĮgR?A${ Q:uzYzYi=,l%3 i˩1Vpu2M`c2 )?jO=h:IB?}}Zһ߃z~w3!ɇڀndq8 i.}ɐ/|tͫvf\K[O +0@ =덀wCÊVj@өS2d!U _U/W!"RN\vތ7%1K>Cfe@*tÜx*MnxF ͋\2⑎G/_(lDc" +$B/bV‹3N)S@x]Q|A9Ӄ#v+-ipx{̉^ RjyCaü tbe(zh#A٘`y'%x~- =IN]Qgt@vˏcM;9^Ǖ;o'金#]ҡI1HAB/P?xuҞޓlOFO%:Ȏot6=1q,* !ŝ:"0Żu|cָy~v|{IJY* db&l Xlo'߂%(;Ij1M&ulFQey,Ze:Cθ:'ov   :l(־QTcPDx> jgC}aT2ab 掣ciF!ޅ U:4wqm#nA +R~p/`bMhbmYz4a' E4' M|VJx%:lrb ]^BPq7ɪDJdVz1ξ^&]-A+Kw3sE7EIB Ƌ |1 NAp0XOr*"L7>چ MiD ]y;JP: N2}Xa6#:˷y]iE̥$#Sn\A&0vWG4̖,YZĿz'g lY[$lp.cbWLJκSdՒ fAuoB +D-rcd恗9Ř#fŬ&챏ޔv|Wj00tFF~[ɆpժMV(Hb!@_9wg1kH*k/stDWMXldqlT3/MS5_'!cC,)mBH΅yOcuGPn gj6mRCRQBx i^u4nt6~0xcNTń7Ed9ku2/$dd7 YO2=tBQ7Ⱦ3va?Tp}p#726TWJe-g^1Lxr(G19yFJ'#'v_-u@8h+Ob8t8]Xy]"D8e5eG1NqBj[JNnx+BlqKpɱJMh +QύVRN6Ct ˹f[aTS9e裮5ӍL +L}[i f[ ՍJݳۯMԏkjr +#WOjyjV2@PAم +K{ #l}#tҧlG9[ɍ ųcqI0u9qY7A*Q۲qyR£#O@G>9.C,)@Hfrtb,{=+qZšq]$C\# +JʂIϘ02·*!L=(\XZ"'cIPIwz\vj¹QraB +.¸YV_ ʪ +Ҏ"+עI6æ1 Mf30GMbXŮcA=@A8o2kX?;^^/`@,fI!kTzbp*5 +rG䄰Yő! XHH@2fMh}Lpy9#m$Eϛl*NKT>Qnd{bf{S{hKoeGgߞrWjź]dA +GYE&WK"cRV3.I +[d ΄jYƆn5Lt)뵘0eSEV1Eu[ j!UQ=0́6d)yq\t4f\8q 3R󺣸q*<oqF$ʝEnuJ4,)h]'1#5^ߍ2/-&S +u!Z{Q61q"@Ls07" 0j{SA(u[3[3yD܋z(#+Sp0GqʸSI ye8zd{-ϦyIRp1xt>H]U;oʔܧ(} +^`\ˌwi߅ki,Źmj)Ʊv58AP"=(`KmT]u6m#L^7U1L739)FmbyCʕHwnJY!,Iy'Y DNH)P5;EJ=xuW |AWMݷYo^Y-!8u9댃tei v&Izwy26ό˾xUZ~8ֻsX)WܰJ1VYv-HSCę5*'__KVLQ97|hfn>9OWp]ߣKTxbP}ie߇߇GjгXy[n,خzjt9Sm|Uv65ɘHR"vַɭ|r;4c8RxalLvv7ȟ۴eL(pG3&a`HORV$TsU?ymcgݢ7+n }b b7؟#fR϶S6V[N6uٮ[jR\姆3;]຀`(Xy*A,j߶>f?&wI;5{JȤȥYυ~67ʹKSJ@fyq|(F6y\Ÿ|N&ɉe@5?t{^Ę~J >r=2WÊ*r>6)p\ !*IԐC\7:%}ĞWf2,?I"6FiekDV3ʿkuO)!Vv`3bǻoᏟ||޾_/_PW`.%0.)>?߁aRhWC\T}bu݌G]q: |WYv&$ئp|^|47ێ"GU +endstream endobj 6130 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6131 0 obj <> endobj 6132 0 obj <> endobj 6133 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 6134 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6135 0 obj <>stream +h[IoG_QG+4l5ڋrC6IЭ|_DfU#)=>̀=z>{oOo/ߞ<_/^N/^\d'/).M9ovfq7‹v/xjL(DI3*cD!17џٱzDԆqʌOIϽ#f^ၮE<c;n4a2 ylmB'm|v_؁vM[Z4\kvw۴+[lc1~gIf8 +^iɖ`""~E1b{mbXҜ9rDPf.4Թdlvx7gooϞRDϧ6Қ@1աe}:p`gP3V0wڷwgІwgO./.ߜ\+u lj¾Mv܀4'̱Ix3]mw~l?WQ +)ONt. ع$'Qu` Kڰ-h5sl9T1–9`U>ea9sv|$egjт@CLN͉dՕ^xzyA V +iby=;#Ho*0!|q;@0ĩ&?KFbQS pgG-@LB)Y)<*ӱ,[ݫl*KђXIKa2sV4ļTN\Nx[]&GQZvښwLBHHzaR՗*Bzpz>gLq'贖 )Z)VxD桜ԅF`KXG3lH*{GbF#o1 +BUZ!ˡ/ XA}K\E Pru՗pHyU+Hh,>Kӥ?_<{o飶㑃ۈ!t'E^oۇaKHp";K8fJ:4 -G/0ӇН% 1d +M_PRX/,0HaOZ1T Q6`,M{e`@x<0p>'7LlC;41F?xZ2akB AxE3ЉOCKZN[Zǁ2Y(H#yCga3HfeSj.rћIC43t!ZsUXuU\z%|-,DWioESNhsyYoۜm,"K b)4Iqo8DGK0>?|/^܉ JH 8U#_̱j/Zo}1Z!7=+妇ynA`gw,!8VoiƁU!:0j4 RF>YE(JB_jdm &X+#,)8)6&HRDZB'L#H4iwv$X4.f.l_hR:NlW!M|"qY<#2EڴeqP#wTwtH:C4Tң(Ljkm%4q-BBGGG}XEIՠ*J6d(X%uT]y\r'@,4$2 {qKLgR'`<{3dպ80gw 8I;$ +NI&a; 2 @#Q{EV@0HaM[ 6=QH-<=w`~mӳ8(E4$L5^]FpLOd4߾t_oWo&Q|t:\8j+jx&C{|S!uF69=_z3)ɒierUz&!#7=%;Ke8^@aN X t5bÙ)iۅQ+{2:"]Qs\YoM0#K}c +3 +V!*װ^oQgZC$@ &M=֥ETHE2)+1#arl԰ks=촀-6TE-j/Lq~3~XcߖmO7Ӱ^oAlNJtI&hct9̣jG߾YWi4fo*8'{M`Yl,+O'YTsOM]^k.ruαs }骈iWPvd#EWE{^ZRxR+":C!p R>^ +Ё8mɞˬ@d$L<,R6ȣO/zA.)hH`'h T'ԩ~9n'S6`a +)蟦;~da9LBJ?R(Z3 cզ{ +T4x[nQߍIq3B"ƒn"{jL9;@2sSg/\njSy;0a(7OMw`(^=/uo\  t\/n{f0 ؘ)4nl `@o -djf9Ij [bIl>gJ$KM18]uց~;k+Ih`2xr +/>=:׳F`xy rb U*":qM&f ݜ\balTLXrK$|:8+C籹-7<0PٛO[";d +c#$r;9b|<%YFۮCa*w8Fll11좧cQ޵pz>-Z }:].-}t@3ntUe–hy]%t"[P )f»VLb[AnKxE)|EjՃ0` +Qjy=GI*h:,U#=I2">^ѦoX$7::P9u Ɓk%}p%ԅ~/+@Y1h )^aLבR`5 Ltݷ; ͍r¨[p򣜧czqXX`g \,\ʸ;+PNy.yB`̖> ]_bKAp{~ )Ku2B.5.76N3D](IJ<8DMmP\nES62eORA) C=~ {']iޮ|5&QAG^8AGҩ-,BmH f.@Ϟv[-5`Ou +P14a!fLֺ>yGྐྵgt=CfIQ@n񗟳S!ϟv&sbH`>P/0v?*VynߙsTµҟ[b?Ȥ& % tA쓞* s E-g?|q~V.LÆ!G< "3xpn"@DpCFlԑ9{j3%QLI2S`~'0 }?Vf5h%p釫:=y~}aHֈH.# mYv <|.a6BִGWXw)2< Z6D`=[tBvq{Nث RB+}h%'tNWf%2DA vsHh B`H ~#5vU@cF|'FR@\ߟ|}o$G̮deY1?NВ5KJS|X[p%LCIPI(fFr25eOq[i25/=[ xGDșjoWgjNDuJ뷘ɾ2=m 2 cfXR1]gJFӄu ɛ>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6137 0 obj <> endobj 6138 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv42028V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6139 0 obj <> endobj 6140 0 obj <> endobj 6141 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 6142 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6143 0 obj <>stream +h|Y[\~_q%hdM 4!䡧3cfYq[~z*UI:=ŌKRç/Ot;_w{pö}O˻χχ.v9?_]\&&/uyw8ua9_Asi]}ߊagvaVte;ڒ5WnrrҰ'ꞩL:T/Pڥ%`|iZCa +uDdVUkb]HaYh 2h# +B`ŅG1m#6 MMC[RUd;x/V{HpW!$n'Wuq&kצ<%Ö8_k]Lȵ n!ydNms]*& -CIK G l YЦWƺۏe-5,TB"v wc=v޿~ +()\XQ(쯇Qm_||×OOd߽gXf,;:5-`d]j5 +y[M\˳Оiϴ36FΛ *X|" ubq16$̚c$6RHtL[QeȈ dz䲩tjk!:ü&;,Ĵw&y`3xv' L"7@\X@uEICnPHa NQw_YG|pj\(sVwE4- ѮOa%"m2{'$iBj# +Gz"-3&#P2DUx+4i&- +! X\xp2Sblmk΍vm65/_L~EĮ {_}_m|GdjrlE0E3g&SYOˡ (MSē5ߘlK\We\9#-FTto[H-{3h.DšM:S%9;v4בFyV˷0 Sۈ|4H4 1 %M⭌q'tPCt&]~tkk!3<b_!g>pr gyK4bB;$Iys a(k' +ߏ/ &weU$$$s4;7. ::U 7>&ꄗ1hdS鴛 |ɦ9#oੰ, K{)q1*Aob٣lxѽt5\eNaZދ̳Y/`ʦ$t( a\oB?;!`y]*+eQe7 ͓O}J M4ރ o`ǖd[uUVuyb?,b}V0+LBU̲0aEiO20SUf"R!X^f68ϖx;C$a}7[:1)?b4*4@QfB ^; ~T)Bu0MH m*t8.MTS{v2^@sOɞ^v+hw68/zeZ:sE;[i¬ynϾ7KQ^M{a+Sln"" UՌgiU5urS̽/^Ahg{D\+1ߝpmer/vjxۤ;{Js}[Fjkx}lƫw]!x.3zw::ʟtG:4=NKY/+ +endstream endobj 6144 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6145 0 obj <> endobj 6146 0 obj <> endobj 6147 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 6148 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6149 0 obj <>stream +hެ;َ\u +wj_F2dENL8.6Iț?=gvόlİoUg?N]e߿>}}7W׿m\-vkMҒsX}1~peVc\YnOP՛= Řh 1B!߽1Po?aC9"=?I<+3|ְ;=w3GEd c6_skcٙ;* 6YSZ9ʄ^'˲b>xW; ?,e ֲ|~{u%ZhƉ Kح&"㍞6k]쩕\%EG'k'&A\e>aIk#rs;_oڻ +5e)u-aqlq;\?tۇ./olrD+ |Hk)ݵoG  +Ќ줄׫Wo7O}x澾jjMZ` qa`ey9}3ka!,Vwί6[P +)~xu9Aڐtn5pu@,'Oek\Qs`$L:V)VZSz 3ogDeg=jΝVqnMf.4AuE0 Zkru^ciRaço#|!]p?CN@|?Lvk5q KF\ ;)Bz\p8B)@C-P ,rJcl ^f`e*Z$V 2Z~ j +kUЙp98EӈQ(g.;nM\˯W D7`5|>->6MWv؛EPO=:bJҊj 7hyaY@R `hC3Ȑ`tu"0! S!YeZSeױ rA@Ց<ʄ]Gp(OBO,"s$n_xyYˁ/ԑ͎hظ@ .){ZYvu"$qKRo#SfjAU6V1H@;ч$G4rF, e8%S؃ Z3OU]oln 2NjNE /)%<9hFl*ZsdkS+"T˰nz1Xю5j\b{owGIbZp;GeHL H.{DR0N5l[&>לP Dex,r F2 *tNt L1DN *:APO,l҆<}qNOIf6: @dA"\8~##ۀ:l.BMBIc/(w#ɃԧyĎS7s.f qE<8ڊ\haÈB`n_kyu9ۼHgit,/3cV!.3J?kHɄ@ P@={rI(F vϊdٝI#]'ΡX100O)}hZeRG }X˛/Cgʶ`Ov .FE> ;,ehvStQp"V3|f6uA颷\1&EmqHEޔnOgl#3uX8xV7N36_Bc *S?mMj&=HO^ +;O~h'?YjADq*ȑަf6}`o\c1ll&5TbN`ȇщWw:`ֻ!noԃYu+ԏqu2du:K|j;Cl!-ЌgFߌ8hT12xv{MRokKf!^0@ul{kN;]:MŗKjP{ܼWIFخ:qw-[ܔM'2TOI=8xJiBlj{X4=quU>w >nl@Ppp3[戌=RCT̚;=N F}2y1)MlV՛,n)9yi#vC0qgsah_߷h OZϠvެѧmÆ."im GrPuJ Oh*]]ތc3t6?"ji_&(Z.ߐItcT&B:vW/Qf⺂?&K GEgKA*O2L/^W/S Ðe ¥Kz${ձ %O2=3cbxQO:1,!5Bxܿ]U"kh[N}*oDl gkqƻ[S"b]MSSSZj]/;>yUn_6ϮE'9lI4GeV1Hq+{T\ه$Y7ȷOddJ=h"8=qz4Oӳ=S-aMC}$87G&;wݔkrYfrˇ`)!o;3-=;f!HgZ.d?x4s QOi!s =zJ=~`GMG\sz\Rl%f9v>b>YOL7h*:=FV1цrΥlNOFɪ9%sL|(md!߃t󀃘 C fߴpslM8;|wKQ$ v]&T;* tpX洛siS'٥<!Pj.eQDۭiz}RfA8!0^QD? s˝10:vwLIEۍP 91*yW!MF~/Ve3ƖqCXxy!E@o5گ[*[%]Luj4^`l_]ޏIsk |ml +蕨ޣ6M15ΝIGraKx9JxL@iWEnãoew-ǡ*>r}tԟ ?|+a5pz'(C>AԼdx3 zv+!GT`PFɃk:7^"rgw=C% +yst(X0bĬ{ho|?".{2)&|.S +ٟn[ǝ wy xj6NS ,~>~}Y Fy\a?Yָ} ͏PED[W\3| ވKx|@|mGo*T`T|$:?u]w>vl2Na8+Op)2] >S o +YxfHdL_+jdOC77`##6)`CZ>x+B@omyfa%z?~M쿿af{jA~haxg?~!t69`aY.o ;Oݔ PMO.B@ ++%*?XU +3 V@kWZ yB6yy=Ph}&zڏT( Tp۶e|Ae̚P"zÇ| >"\q2 2!+' oUT0xzW~~Dф:;a&bFYHU>`>S|h qw&DrOЁƂr#q_H7>vf`虖t a: &{b.\}.o02 +7[Kd-$cQ<Hr~ Gێ2&/e[31fM P9L?&la٤-hY̦K3 tF&OB +endstream endobj 6150 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6151 0 obj <> endobj 6152 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31099V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6153 0 obj <> endobj 6154 0 obj <> endobj 6155 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 6156 0 obj <> endobj 6157 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6158 0 obj <>stream +h޴[[o$~ׯbx/67pIbyA5V&Rێ}΍d50jx9<<otw?oox?=>,xwf|7f0E&/61!O?]LNj8M(]z~7M. &-0Z53&-, /ۑ~B7+8Hqy߹q6 v.$2i."V`{5xHGK ډ88!3u9a)yx:^^Ә;㘚Ha۝?kX~CF`hysA|{"p) a&dqA(Fcy7<~t|8 o^A0VF<]o1<DxBRo~8ރrz|t<='sϰq}|x\rcpD՟.vCp/eGeGe;n@v.Aɏl/lCx6;NRw kfl@e 0c:ɦ1YcYk`VmZ3&њHekj LDaANn;Fdf ۹?KzPem<C\N? >/A,?FCÀ3mC gl3[]ɠ"ih`K P;:O; +tP 2o#qGPJ)5 q_, 8g0T4+#8} 琴քӑX' r寑Knb49!_AFS$8 ?ݬ? s>(a_a4&tryLTOl<8:jj=c(Ɠăj&9 -X<17,0r /DhB M o!aٗ=`{r[ +tUyͭtx]˴*aQBrO + R ]߆ml۷W݀ß-c)w]o兴LS兙7:s/{1hɎ䆥y܄|N:eg,h/An"虁M46 П#Fazh\/r&"fI<-S\`概m~56 畃%$Am@ٲ$lcLd,Q5]č™hPPs\ҔWč52"kB@i/#xm9 #l\RNʗP5 #h#0Iׂ VU&έ H\0װ5*lufAN 4uIݣiḄ\2krN,.wWn]$uYnϺ԰~w8WM21+^u{l''7uJFa!q"4^b)Frq߀|tpqS3dZѰ A+ +n {Ѷp,Pٓ6qR8i tS:`"9; +3I1M7wVD#BBzj.2%W0ԨZS'R\%b_`[sC c;v %+mvݡ^}̹4y9d_Ă]򭬱x)C_m)y" z&ɤSNuimhpXvJ $y$H{E/zKAÀ憷Ҝ4U|)&k5_(7,\Lp2ݾ!wlȚu1'e97[9ƅ*mdM|4z|:].YpJ*-j[\24fM I5/]@86}ϡRqtMw=%<bP4ڣ +pG)ӥa0y@!\#c3m{;:'BǨA.vN ȕ <&tTߴ̉Y F+\`VnoNBlg&A<+SNUB[56Hk^\ފj0l,θsrnU#' Fd.o[+15us9I); + uϹKŮzft9PgfV RjbP{!T[Szu^V^,+h64B+گ;0˻5}j^?6 +y[mƫ 浀Lmp,}O[ߍ +Ur*iPl+ !pN3+$Ɯ)|Ib7RۑfNi|+W]=1'>wvuL(H.e0vMjc l55Q`u qq|ы4Y#ȇ{ӦZMǶ$ZpNU22*%Ki>{邭)W\Iҝa, Ƹ2clV6p .դ(9w}!pmIuK)ŊAhWPIRj_# *Srh6%C5/ɖx0A-&9El։&mCnhTb 19EI.ܴJѬMؒ~Y_rEK5ˠ-.fj$u%^PkVwҭk]·'R!_I3TA0L~]QwѳHMCvJ7j\gQNn1}tXFu@dϋ#6+ԥR3ֶo/q M5g(U(F1*[ZQKri8S"jiKo}?kW}3LȂo+xMb$xt *O/Wznq?|.q;āɣYjԑ|swnqx4|tc÷pq}cʐ!O4H ODmx:s8.(Wv%HOLJۻᒳ&[p)@ny?S,A_9$d[ ,_N?Q D5Lix|8rU!1*$g~rzDC)b˰{&NE|l 2?h} [$o?p8|R|ѤOU6L_Bl%YyW 4"i}[71S%` +~|kF7 %NI( +-fDlI ѥbcνz0a/?>ɀ4>+49d@;w2w'#{ |%d ï6M8 _OF*-S `f b YhUݖi,Oi \g`zzhVI &TbKVUށDJAs -BΚ~ \*S[GOgf>@HEsk2P~_;w0dڃ5Iٴx0f| sӵZ0 LSw'zH?13RH\&\1c|78Ka=iZjY: +uP6>\W|yH<>gjV[kjOaQIcR+Rs߈*ea{!?HU1y+EᗔEqQ;;B;Ro +endstream endobj 6159 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6160 0 obj <> endobj 6161 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS33106V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6162 0 obj <> endobj 6163 0 obj <> endobj 6164 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 6165 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6166 0 obj <>stream +hބXYkG~_ρaer,A$#KC}>W f5S]=>r{sp/o._nI}~޽;UN7KT%&mJkSQwiqg @xn n 2#/{ێv^Lx_4MvXGٹ'u[ZIM LJ`[fvKEatavh]ڍiiOdt5VF{Ưnb4 +kc :JQ + 劈YC_*Ma:M uV2EA׿^"QoU;Is֣q3{Ұf(p7~~C6|x{|~y]d.Zapm'qO&`qyHM{a'PߨF;VS[=(M&iBrGlJ]nی}ZmDe YW3Y27=Mk%ϐItR7}G)t `و䠖2đԒr ]- +mN}i5'˾ "TSQ#⹖wy?Hj7SLq,#cWGTUH\:O+b7r5VNne7-Xƪ&U?S:Ktj5фLG)lK=dq/Oߐ9/kzoHϢfGֺǬ_BZ ;u0qJ$sXl*qժ,~m. ]e$r_ޜ܌Cˬ{^]j/gHTmT tNF`B7*ZZ<Э2\K1?h[ZvDl7?>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6168 0 obj <> endobj 6169 0 obj <> endobj 6170 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 6171 0 obj <> endobj 6172 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6173 0 obj <>stream +hތY[o\ ~_ǸȺ_c-@f=h yvt'HQ::Y%M$9I?.?>\>~z~x}9˅U?o~oN{l2WKY!>nh1>`ټF0k A#춶hue̝ՁWcsSЇOį~uMeiTAҸÞ^:kjhCm5n "FB.e$h7qXh{l_tA@c +b!w,2x#8K!iloAT*rE=^on6cI:Oۉy{[+nZ@!EQ'׌ %G#Qa6n I+p +evÓ:}{nnůzd5n[cpJ +Vme9OOڧ矓:|d`Y!>“VժS:f댎5(N`ϰgi[[]})_!A6Mr31'ϰ_!v2@`MO\5c-::fpNYfokΎE;vjuXa 1INDj0JtCNUI#z`YZ;CKc#ҷ#!۩FEcn63- ֮Of&%"0{' 6Lj- +Ez-oL%PT^K5ĕ+$=!91q`g +<&X&:v MjjW_7LzMbŚЗ1MqhF|AFgJrUl%GBXF=;SUO˦ tt͢_'}c#?We4ޑ#*d +5fR˚#8ta$rhP,Uy HTP"WL|אd|]9'@Ҽ|$!ƴ.LjI򜵒]k{BQ$}X^ʑ823{̫|]Gvzvix`s5^t_-+Ϟw,\.hp@ -50q#8Zb|]nd V_xFt7'mRZ+k 6bۘXrڋlTpDW<وA$jm{ HW3%( 8MO%bOqu +ޕ@Fj\ .Ku>' +XsZSGkco?kqd$=x|JrT s./"L&wkr'i1b ŕ"`s<"ם#lpIbSgqdV*᧨kt;؃.gTV;!1n(nf :t>ZgI4lgzOC^ δ[ 'jB.[K 3 (5n֕U gt#-^%H#/NpaՊQRA-\UB=_]0}埸Aۏ_N +{xNWDK=I4#4wRSw:ԝˆcNl,b#Ẕo$q + K.F$ߊ+Cݡ*]bMˇ{)$3YQ=z4R . +e7ޜB?E?؞ΙP 5Q@ wm_ :ӣTD*@x8 FE~SAU?Yr["7QP7xPoozm"jKÎ-.(5Jj58- sOmK f&|gSL^ &8%>v'61.v מNk C߂luhs`#BVG³ #EmҢzW`6, +ܭ, BvEv^V 19 +܍[+x&7q3 |+N2,&`"/xm~<7[PUTS$jp3 9 Oͅ ]fE_h ЍIGo +$5/ YXɘu$E)56}I @=]<@Uߢ3p2yC!>=Rf!-{Qh8oit|n#3D'{aZgp#3D:(lFh iYRܐKВKÅ}0)hN>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6175 0 obj <> endobj 6176 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31400V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6177 0 obj <> endobj 6178 0 obj <> endobj 6179 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 6180 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6181 0 obj <>stream +h[[9n~_Q=NY P9@Ƴf;Ƀ1ϸe">$EJTi%0ڧ$Q7"?RҳӲmW?~|7.?ݝ[rxSך#ե%br,?߬Ƹ] q$ Řh 1B"ߣ1o?aA9ßհ/kxNk؈dW52?@.-icuBB' Ixdҳ PU,bq4|O7deY.kȵëm+ɬMmY,/K[^jV`,i>q1^ʜ!6O 8`/=Rhc"4v+mFXҶ3,ijXSObPZRW@W_ջO˳jӂRWzV?-@8K+p3VX),ҿWS ٤*‚Z%:,jYmuYxA#f"G7LKQB-M ͉{a@SA b!6Ǎ<ҺH+2۶X 7iaVNU9]2.rUG{VT&iP(Y +ӧ-!sSW~]R?ЁiӀ $T]l-O;emĮm + +#;B?(,0@`wߵY ܅nOK:i6xc/ڴO˂Шڍw^ԡh6`P@AY|R4xGn gu2[sNF'ύkqmtZwF"meGd* +ZZ6klB{K :ސ|]KpmJ dAL. I7\j &Ȇc)ȓlp2-]p[A>3j CjX~j +hTT`^9nGۦܨqm(alMZIsu޾>d$ÜM6 CSx.yr4M]Vil#a&h>kA!00?70h0=yl3,>πBs|Zm0Vnhc_T˼.;bER]vBAO[6sӲ@?Kk}n65lHg ::(*^VAymu|[!%vʼngWH"`Ǟ:vlsm̎IaZ&|vJ^G]/IyeȤdKt2~m:dsJ"*A%HCi.Q+ΰ, XT* ̰f#tULmM͇{ڒRS9`rp +Uw˃5K"լ=v'0~e86Ǵ.a6 q&SE5hHq,x{VYu6+9uqeSdA[R4Q]I;8iiJ\Stc[{87Y +C6mŊmz}б$ HhxP_ }lcLh3~$aqqGM 8αM`']`P-vC +64a@!Wi!7G0Tv`T]~FpjyThH-8Mݳ:î?Ҧ +雦OrMxͩ˿Ɛa +m)L2aGR$RIoT2emsRg y@k8QWGnƶ#)y]ȍ a^+4MEV +OR*Dt-E1ůn1hۻ0*V7(7 ;@O֛Ӻ:m,LKbYu D(EÁceEދ.!#CCΌ]&}Pvy0hbT0&ʴsĉppۊ\˳jFa(!jGE};+?0[&!72QЧ(Rĸ.rL;oā/9Ts(MAcQ% _xXEsɻ|&;h`Jq֤DLimnrCƢ["1Cm'>pEuNf;=88i"in'0w>SWpp ALO$a~E_'GU^]j 5;pܔCAۗ8~΃e^Tydr׷KI)I06) .Sĸqg^gC>/UPE/cǶ'x^_UOD!s=k+ƩuPbVoBoo/$|h؏CqC#%n^SuY~9Zak);ā247w?"'֌x*G`)ⴕ %6.Z;:tS[tuϴⶋzS=UG]u|p. +j~O_həflN$i[W +:KF:ǰ8G/jk#uP0/:|5e|dj1 e-?q?B'|!x5F .n< +aEG,o};"``>xC/g"fCIsWCS/vI$fkUh9Hh 4}w2w|C9f5X=AŘDA]O,@)38+2}B`nAږKA 3Ք8}ŠoS1k1w'tX1p7}BD&3.2t"*D b!:Ci_M/Hi$xf  ˧|-h +]1%PmA=<2(`0>Nڬ^'-">-*#x ƵZEQU ;N9u3OƿGac Bj +TӃXh~qho6# s6؍f>P v->ߤgHiںj~yUWq杬^mx\רN.]0'd匲xh2Y !+1Wpۃ=5 +!83-\F"hx h8gм'ٿgGՑi!#Tja.wo|\>^Ă+s /7Ū?}ƃ*׭1H}=ƘE}o>\޼ed_?^ZspBZTë_${l1#Dv~yk7qtk7SRFW"CN/o*[TCr#|eKz!ۓPRapEȽ#2ŝVZy +7Fq+AȔ +7{,ux31]!\{PJ ̓J\{XZF %6 +endstream endobj 6182 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6183 0 obj <> endobj 6184 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31401V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6185 0 obj <> endobj 6186 0 obj <> endobj 6187 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 6188 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6189 0 obj <>stream +hެ[Ko WQ0z?I6 6l,$cz7]߇dꞑC`f,#w>yŸjg`PPmYhJ=;|IX3޹F2>.M9ٗF5- O଩yPNH0wKbaGsE0b炝#W1 8Xh{?=} 芐r4Chؽ{H}#U`ss<>7vkY7eeNsȵsd09ÑqxkѽyIDKE.9&\P_^p=JE! w:0J18[>M7/omu~So# vzбN@ ev:p W7{x޼}:}on?i;M IqvuNI^c ˞ʞn1r\}RM b +lC$Gá&VS` )(sp9lRL.5-[^ ;X;gev6QYO9yhŀH8 l2s +R0o"y,pO3X -> @hSj+wЂvkQnA1{E(Tː@} #=Ԃ[eRCym,C\4- +D{i[AVОp9RE@(P(Vv5~mWI0}Q9B|fꜳ7 B5NynybJ܊iI44&f `?my w$H +Mm%a9H\:XrdjuPruԎkp6(T,N|Ӂ Lta) ץA<xy Ǿ<06)' NG`r\'hzԼ4M!:Ò[c#ȼH%D"5F! .!W\36@r#hHOTzΞ:+-V40 D7jhsHDR>\7v\7@mNbazF*CW|#eraml5:[?zHNKVj<y:@h@_b)j ̈@< +ƦM{ö\1E;Ե! +t7:.c-9/DgGGrX)0DžNGnJ' XU t r6 +JX`:s+v7MR'A +l~ϧwɴ EK͎Dz4X{'6B +Qyb($' ,vY:2CzeCs$ Y`#atW&*ǃ({k;DUjƓIN wD>OoD}ħ[I]Ŏ ? swͮ J2"7@Jٴ'lB!67UGKFljE9 2Hx~ٸA2L3KMfr`[s-l]b*ȍ>!2?R j *!6Aёr +݃:Jxq۫ Blw/@sL79DY5`z֌ΰk#5hijmFo}J< + ;ó%iL&FmxЉ8)NB)Zv˪ﶾIG=cS8Y%bL8t]RR9́h"boIF |ۍԄGcoBRKEQTU WLt^6FjDOxQ &Ŗ!c>bηLg6l%y\|+ɀʻظ|=? DVF|N1E6)O~'YdH%hO<,HIOMzai[ .,T^v:i$g~<а4%Vv5 K58[wMƄٹ cRJ!5ic$I i`#DiIc$)Yyh渍ejTjQUWth)a7;Q0yH{(;M5zI8R:`Fl610̕,%o,LWT60^AΘ ܷIduaJa^z^7^F٥\A\snʑ仑oq0qӹEܚ8ϛ O,i01 j/{$9a V4iVZl۹tRso ) X.GzhD$QF`^]u/F?r!teF&3.t:ǐs9Ȭh@#WJ~Lt~xYc7Amc|88*A i_t4@8i^2q@58﮼j~MݮL)=w][4*Az m`#W m:הUeU\wt>_ˉG !S8=&Jb53pthh?JegI8n~MiY]Gŏ=_"Cȃ!]PFĈiC0ۇ#@&U K ._a + GWT^g bXS-N0p5.s8'8u%Pִo|鍋&yxi9^Tֈ YaA%36T"uvCqPO[f#\I&J4v" Պ&[tO=>ؿ 1 +slw״8] +dT_Zvx.ÔR.8}uûzKq,YA"nwjB=sHBھ oE~}.о8@0Qjt܆$nx͎(m`bX~]%kG | !'?pgo}Է]6egNh*e*htR/aǗͅ F4Lxs}ǯW(yV)Yw22O3tಒ !T6xNnbK1T; +u& xAӠ]|Au틻JKb~tpl$٧L3]}K1T2ޓ^>2K\b x?0}ߚD+6 +Ecniwxߋ >-oam$Dм0>j'پ]kã5D.]nNx}vW>bB}Q{'ktr`2HS{R1+eY{}xٞS + 1:`Cl=So3 :dgD_<'\UtB_4v<4nRFеTE,Aj/(*-Li!3yىG}SxOߣq/IR@AxI=AAd*R . J}IyB&' Ƥv[䑁GT#~-}z0OMt{2~BwqЇ|G)vVCo3wx=•k^Q]{5ǡϵ q,1H /lefpC (ص7TGq79/g4c +:D|C@ aěY pt;jz(؟6灭x%=)¶>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6191 0 obj <> endobj 6192 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31402V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6193 0 obj <> endobj 6194 0 obj <> endobj 6195 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 6196 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6197 0 obj <>stream +hޜ;ێǍ(/pz~`#' b>F0Ӟ1%GRdX3rug,^nwO|/}}x7.?~ݝ[rtSך#ե%brY~Yqe۠pg(1%*cB'cDÆr9{Dy Vfp'sfmy,nwp[0dn* 6YSZ9Oy|7deY.kȵ 㶵dFdi4aTbDb{~ (NZɖxldUڎ {k+2ﰤ5 H,{7,%,-6ֵ_mfA |Hkizo{` +،y|>w})-'@jjDMZ>m0Ktx D^hkX63==jc5` bW :ՆsIC K5b9y*[r}q0MjszW"ea˚BXB2ja{'k&*;iU&-:wZ]Dݚ f.4Aua<zFU + +X!WO߀GB|`S 0wZM\*pȈA1{E(T퀦]} &=[e RΪT6٫ G4 YD&W<Ma-1K #~}۶P) +ʮV˯7 L7pB5|"> +ꁊ/&Gl¤ #6XH uI߾M@dmdl_;@z0+,}vBL3 BnuKb;4k 63!_iu Hm):Y:X:C"rl+e8H`PU{uӤ>"]&15q1m4c0_M1/Ut‰Yh1EՂu*y3:2!_ ?A1!v 0w_߈1EkxrPg1p[n 3y#|޽GNK3m0(?0* +V54`v> +MM@YqU,.lwuH{s0Fċo4*<% i^i@#9}a'::yYdO>l!]`HLc<0y6 +rgd[(#oro_bBI`wك\&O`4EBB3T"`XAM$|G!Q?qcbbi,+}Yq>sI1pP9/ mt,}0ޥILqb-h_iU9Ф5G:,;Ne9-g$H]^wo%V{Lrԑ01l1*tl뺗gJ^#+EJd6$ҸIC-&p; }~1WΠB`Myل lRop)̛D >MG%Z܎xй-$;s4jDP7jO:%ӱzBݴ=㦩6=.@z;M[e<uIa҆IRHA&-lq,\Qoپ4E..';~Q$]?aܕk$ovذZ<} +c44k*#?\z`rj!KDsyx$l.vh9+NT]J̮hKq+N1#hEo*F;kԱjkq{<~XJF7: .B^tNo8'`<eI9Y@-8?JTV`FCe܃T79>tǔ2D 6(`A[NU¾4IpGY,8KNru4J"p-A*a9kSg*)v iׄl[ 8)AvC,8|a/+,Z ׃ szyb4CuF/kJ%+F~CƦ^ms&7μ?L 0d9Xwv ͦF݇7mbM^ v tjBz#S%>d-H% L}$bI9afK$S*Uj_aL^Hi|_MJ&5;0j`Lᛦˤ= p4ے;L!nrTB)e rz[K|CҶv>F/`5!Y8+]ЁN*`+Sj;l 1Y[cD(`pgHBWgTitI%i, +x܉ES,̗M=һv&2GdNl +(#*zϣn!>x{%k'7 |p5 [JKʌS4+ɑ2Dל]~VuH#Q.C>*E55XNB5q%Ks}q#k9SM@:/FmO( +з/Iv&Kp5jwr: +Z'|+Iq;Wbp={̰5 +i+AR$,{#us,hYba =10z8{mGEzkX#1e_’h8#4lg +M!z.f+}cZrH!EbHLOS<-f˸ ;<8!{|K4As ܛmf +GE|L,c.YrEv Gx*#:QG{<(@ywwSݒȺ%tIaVD,+]Xߗ]zA9GBUAH=4.W~ա}ǗXX^-gƘOK? א?< ݊uxCͩygQv 6a e8P;*SuPFq J;|g/2Nn Q^8.&Air8E01wY"t'JY v>Eמȷ;bkW,/?pE z|E[=O*dVKw?ݔXa}8FJ1Ǘ^*+ ٬ Wh,+j/up6_aiw,x8awٍdj؇8}Ír:͚zlTk=.ްuTz$Ml5rΖa(.mʪ {xv0TT-nI'9<@;՘y|ш@MZQ0H ]Tꨏj9ƾ=X$}-r4l@k4ףte%V +[u[oXJ(5fty,}]|PI;k1{ '_0 yGۑk&SIb(T#)jQ4=_ +*2]c}ˤDA6yhpQb1K &#@wN!q۠e.7t U5wSYaLdחtc6 zfhȹsŊ$\>YqG!DQK=W.BmWGc">.j%&-=b u3߯b$HN<2󤷸cL밴OjlV޷vN\).@?GHҧ4|ˠ7.N$heB΂]jj8d| +0-9_}-4{fjη~D[_s=LPAȇ <=LưwE꽆|wלnR;:܆ 7z;Abx'^57}soԁ vx(H mTl]#D\Fwf84{䇋=a Ư |'{g1@o'G|vSsѳMM֘S5 z$q7n+iA SծoaoԕLaYѫ?=V# Tp+y_a5.[{(>x&:'f 3.aa^/|fN@hʡ]]m Sz NҾ]hX'JMz{ ؗO(b,?@;PáLOoN65FLC 6d+(1zglѝZ/n0|~-ϓ:|/;m +o3rQnϛՕ4`|ں߼1_$3XpÕ=;i1,3K>Ͷo Uqn'ʔp8 pe(~aq T(xߺvwǃL'h at8GQ`t-+鮊g|.NYK&KIW?Ǐa?j|p>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6199 0 obj <> endobj 6200 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS31403V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6201 0 obj <> endobj 6202 0 obj <> endobj 6203 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 6204 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6205 0 obj <>stream +h޴;koq+d``;pA#vW܋ J%TUWUW E;Fpӏz?[v>?t~no2L2\Ɯecn~;ptgi+C=̺G}ic7nɍ <1Y<\q:ÿ"\A?hR +5Yi)YFyIr }:x: Y Lxʼn'܍&,VCggHwЀ}qȍ~v`pPчeY1e/w;p4.~y,f;BhϺ}D1 k WҘ}e./R/z27&f8bpit^v/?=?sKj_tSĻփ_ @"<i|||:|}+`6NKtDX<|F@vòyapH~ǁƁ~t)ø8Neyt1n~0Ja#s1< O$_%:ns\tnufn38.x=e{V7_2 z; ~Htg~87vP-xL lCN:!=I0/Ӓ -Hp{a3-2y%5:`h@Hȼ0FPG0ʎFս8v(L!%gp^' 8Ωבx^F¸Ա_s薂tAOH4fU'<0OcA'Fi`ƃChA$/O4̙|:bM$DM`c53؏}CZ;R"Fłf peDcp.8c;J3o\Wy_tD]\j@*P(XjȾ$5m8JaϏ?}A(8*-&A3ã=HqGՃט<%#+c_c>S̪k |uSo_B&Ʃ(8$g#sdACVg-B)xJB-b(BC S1hi"5P|5"8x*1Cb`0pB'XBϧz\ Եw epF`dǽ7KG-,Z, X8F T/nX1IWy;xhL4K,,|aiZ r#Z(4zyn>8uKĵm(/arԜJ'|Q`TjO '!2USG?=>jЏBTc+ |%b$wXVW%6EH%lBuZAfr O\c9 LHgDҟz@kYny0~uj\uca1Vb]o5NDMDX } uₜ$(j:9Є'p,Nʸ'Gz9y +INFXav,$E[ Ǝ=U$Z$"Mk Gf9,*=A@ʉI,GYxy;#//U%؜~A7f̾8)O^яNk`m)BI- DVoZ{"/TVN]a,H(`+Wr",SnD )E#ȴ~r8  +ʋ]m?PlG֭Uyez"JǍKxw}sVPhIR_NRbjGЩ96հʾl"Bޖ,UJ:' r$@!Wc9QYS XvS+;#)BSm?3($yT({OG=p R6's ]UEZ⥇E 8KF*.n0`Ww 9ZLsSTe$)LӒ/uٖx K-ғd)P48>tSMD% pS3Qsuk)bKls]RXCPk"Q:2 w/yi-]ckU*i}'[ l A;擭kDP|d/tsJ;_)K!j7K)nns N$<-/U+x*#r\yd2JQ)DKYp^\G|uЅ|͹oӚUh5Fd \rb"y]T_Οwӻ0LeRM2a:-ҥ.pV)zp$G5Y$N[`*8VmHWplE"y{׭ҘYsK3ցiТX7YqИrM1a1A4g٤VI"zIZ$-i) R'ഔ).f+|L̡ɲ&*oTS.L沾VYF.ͷ:3QTzCizȵiS".' )X< pr &!et^T76d6HEl箄e6iUhP7]y>̕흴k% +E (F-JUT`{-}A$iN,%{\&q1N+ZJZ4YP\?ZOIIo҄yجbLfBۃW7k%tjJ3~Ao +zۼV޽A<\}bMVBBP|M Y"!Rn -= Ȧ'cb +;n3JW)sp'u΢~"T![ϗ%I&:msM@ -zPXqg>1qŝ@7n{ln[V)Yꠍ-TŮ4sl!&qV>0SM^34l#:~'ܞS=KƛCq+0vYrJ/VѬO^y~jh>˭䑯[\\2犳s}:v<⻋yǰY}d9ucSyh"3ԛԴ +צ_|[=oXlyr_u|[nuN˦N 9 IlJM7jګ6sRjYzS+aFyͅ4HשCvͷX"TОP1]OccL_t 6A N}mpHw=ümP(Ǎk"{jsM֯q^)TE Gn[jH,ڧ[Ǧ]D<׾e;OkvϩuO +W~HS/)}ǩ'F*vb?&z꺷n遱AW1r7nf-e +1JB,B imbԞpؒy)ݺ2isS?uSJ[uؑ^.9 :bϮdA  Ge|+ҥTYYϏ_ ~ ~y|;/@-o_`X|x~~OgcxpR||{|_u73xcu|k _, +endstream endobj 6206 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6207 0 obj <> endobj 6208 0 obj <> endobj 6209 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 6210 0 obj <>/Border[0 0 0]/Rect[123.96 707.6 296.64 718.76]/Subtype/Link/Type/Annot>> endobj 6211 0 obj <>/Border[0 0 0]/Rect[322.8 439.58 527.94 450.74]/Subtype/Link/Type/Annot>> endobj 6212 0 obj <>/Border[0 0 0]/Rect[123.96 427.58 203.4 439.58]/Subtype/Link/Type/Annot>> endobj 6213 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6214 0 obj <>stream +hތYoݿRќ h4Mb>H\n~̐`!s}3q7?.}؝no޾g<_|s}qy}m;]/rc7?zKn\w}1t70رqŻ+h >O4<Cp[~/23`g +1i0N4^Xcr~Y' +T/7r3Xp7.Ì]o]ι}y -8ƙ,F4=6=xw70Sie,ݸ^ήF 7c <\W.|؍}gG`΄Xpqtx8u߿1ُr𶓕fȦtSsl 6aHÛǻǧvMπ~|bOtO]yDV}$UG8?sOg=ޗx"5w0Oʕbi|d>O_ 2E _нswWO8'^.Kb9gF7Jp:p70n0顳Bj0%ƆLa.<-LT#6U𻚆mBbSh܉'k#B8Ł3U@8 gn;a_j6B{0Qd):txJfUhu2+C6IV/rNH1:hVՄ[KwdTg^GP8.FV>U(Gj􆑉$ +(C!QHTEB0V؎e)o4NF! +'AS#aSU}(<:H%I:n@XmnJ޻l* X#} +&ݕnF6,Ug aEtL9lvGLYT+Ǫ|n<oԁKiDGsaR)n +H-Z$^r8 v֒k6UW$Hb,b{]ڬ7e]/eE9J A[պj0{XJ݌BPؕLT,$5yۓ!P+A+1 +!YEg^SU]۹ɾqj<D Fui]|{Ah h+.JQ, 1.6PQ-s-\ԙCcۢe~7S*s1*$҈BbuXX!@Ba pȭ]Oh1V'< ,|S^⻫*rj/|ݥBA2ȑ nz0nXp챲,4Vpf)en\xZ@h)T N*/2݂Z%"֪_ V,nm8 +y`RT#8JPRz]^ +2:c_h83Iފ,smP +ns7PZ:.J/{O0".>Ҋ>h`NL͡_R}~%A+x +# +䪘o+M$TąP\ *|N6uڭ!JĨs ~ ŕyіrݹ5VB’0F[Ǻ=}ꥷazi7DϼF#XC!iu054J|HmY/| klnWWh)gȅIFKӸYpAZ&W}&o ڤcbL;SfllAK(sY^H@\j"qF%f4r8C-І^2lQOeU/E kB*ő[\@8SI wkJ؃1YY+$ۥɎ!-Hr6n6R?O~\~D1`Lm}l +LJhl?`"ӍMfSmm@,:~KW0G*'BLti&ǜthBR0iL<]MRm`LL[iߘTx$jҰ-θz6KOme~\"blޠj7$Nїh$hTgGW+ c42kJ{P:^\͝ +s\M +jVCɋQkIvդ}ogRQ3I$" +FP :f~_LtuԐto)>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6216 0 obj <> endobj 6217 0 obj <> endobj 6218 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 6219 0 obj <>/Border[0 0 0]/Rect[162.3 717.62 212.28 728.78]/Subtype/Link/Type/Annot>> endobj 6220 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6221 0 obj <>stream +hZI\ǑxGizrؔ<` xib@G2BC1Ѭ="קor_?[zז sYs^ڶƸݶ|wX}m!oC7sxHGxfDSǃ9̣[#}yD݁'pϏEzwmYH/ 祔*Ti=H=ZYzSSӱW,^ &\ir@؄âZ] "W#qC䳘hp?)Q~>f<[ív}7|>֖5N%,1okX_ZD\13l/+i^ %EO#V`a./Mqk5mqF://?|^5L[#v}JE:[?n@0Ấ]ڢaxwm?w^>zwZ>a7?8[ :-/?nimMI(w;mM-.|KIk njh bo~ݲIEz*R;n;];&C{s5Bp^4#(4>t"`N,je/)>+ 26tx/bݘd I_ʟk$&7׸p[e8>lS^NvWXe0"!fI:ޔ +xW:gIg]bԟ6C? \))qGAa^ѐ%yӀ,x-+ 8=WKohV#io:Y}&[mY7D|]% (:st¨i(3D3 o^4 + t7NLg,GOnƐSO%wQ5 zæpYdXLLYLmH3M\w,Ci库f9f &MqAY̙P|Λ&Q!($ZѸgsiY?oew{؋ ۹٧Cܽ h~mAuyK\Mpqiʡ[\ϝ94YԠ yBuW,ĿLŽ7@rH>S>Zk!,3y)QfsJ=)LTSG`9az*g|#/kb;g/I|.QT/b1@A$]ͪue/Β,}yPN +endstream endobj 6222 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6223 0 obj <> endobj 6224 0 obj <> endobj 6225 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 6226 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6227 0 obj <>stream +h[Yo#G~ׯGj,Uޙ us쌽s`A(Y;jCqQERn`dfEd?t6o7=<>/n~'=^}nuU~k߅`{m_ U? :v +ﯾ@q7 6S=>@sP]u3 2 ۍjVpK"|RnǵTh? lo@R h`Af _y +x7.]MJmH)v}3:EXX&"4XǺ9Q_=g\;^>p@Mt%ӴZ{nyGHe;gA&U2ޕM]L}drcw;Pk;j]ץ{VM@ZJH߮na~<%Q70/u4vk50/DeocH1 K`i䌂$F h)B!d2UX)p@-P1!A+*ДbY p(SQ!@&6"4 {O +&GJ #}}+$rf>\*d,( ~{ᧉbֻz+r5TЉ"a]u#'*z/TPEp8,)5X*tup U[RpGrs$e("aa[XƖ&%c . +%Z0{)t5nUZæ - +5O}:=:78:m`P}#/|a[~383ʞ +*xe7zɣSܜq 0fP GhFekeR 5"#.a ^gHmq(f,Yf.$eVhH?.;[8)`J74H)xpK IVſ#K@ +,()+1<3U$@<}vL0R@Kʁ?!` {+qE9ن UMd4p3i+˳ه,oh2% g( E( А; V XF#j,UH*qXF /i:ۑpo>1t +\liAr \ʵ6l5{ ِe̩kUb@y:)xvs2#E:LwfnBͣH%KTΰ9F.uZ4(љzPoGb).Rsw7b' 7Eff4~1p$UhljwIq݈( +iM]&MNȜY=fXuez۞ڪǬqjgi4rZC0&^9U砏)G`hAXmQmmNV܈XBRZE~ڷof4WyAwesk  Sh9 +S 'P[5eSOM%52M4vqlԖ-D2Ook, +EJ[.in0Zf4>Mr8ޛVQ挖O3ՅdDXѩ'>?\uSS? Yf rmvF/ v_o5fK쎍XD_fb)hj ݓN/3W1gUe!Wqte3x2o0S2HJĎo\fRYwv!.c56V+\'xċx.0٪^:ZF<4RFLը#ܦEg)eSg9Ks"|@3ɘ]儹 {<jY߃Y0]nCZŐ-fjsi$STD!؜:e9MEL%PX@x~s-]t AzZ 2-GfܮrhZ3 A8]6SWvG t.iVHY€PDo*JaN"s4fcvK!-&YB,glk .ig73@Zӳ1Es~⣸;lNm:U`ӵ- Q=-hp/L~7 6i/7`¦"V=A4gm8hIm@3N႗{D8>R*nvӺ+~)n ~\nnB Q=aZ(jE9Ӌ_]6%.+7id`KdHV"2xʦB ͅC9gbY/l o~);Xj QMk9,rVG2_r,&j2`'a`W/_[}qʳ{ꦧݵjwﺇq׽ኻ}7e^(t 5. hh=wov +w_|>o:J7' t_uυcn7V +|բҩHky$y}?~;8^\>dAMV`SCCPWiy}j17# An0q=1afڤM\ux_>|K?Fu;@|hz(qВaEm[epV n;P.cōm`12-'_6#O`26;Pr,d 2TБ`|w䧱DG|i6(19|S3jˣF ~ \CQ.yId}읿&@:=Am!z8;[ )3׆+xw'7t\l3SEؚzP׭HCcϞEgW϶Mp*8 7-2TbbG/>%`*Ȼ%{ZDr9FX*l98^\[郤6toOQU 2{¨y?GL&A(o@mb=S'ilId/.1C{'(Y۟) pv$ofABsyh@bPס]g1tY· IAkf@~a0`=M !ZC >^@#WMg|~Gx(#N }y~`%o'@҂ :ݽ`. kK{=޿ȇa)9c+Vk8 +x|nohԸOa՗go6?_Klɀĺ +YZ{.@ZF߲$zF՜4B&TlXbԦb[`PxuH^C5s+85`b䤖+E9aT&: mvm.!Kr`ػԛs N,[f \vGʣWmN(2Ș:X-[ICJNL[u-#ft[}D'ykғ4{~ +E$k+M2́M ѓ5ȷ鉶V;81dkt_K%6S ?ΰ^6PեM=Ei6'w3Pv֖6wmi>Al\zː{fgC!#WB<3'PTPN7˫6εz>Rq8K'%_D w;%p$Ϛ3FS;{Dvb1ӦFJg)}RnD8H~Dv/ +endstream endobj 6228 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6229 0 obj <> endobj 6230 0 obj <> endobj 6231 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 6232 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6233 0 obj <>stream +h[ݏ7r߿Mr \@<̎vm+'}>U,Vݳ /w0~bկ>|x:_^/??/>:ۛw37wf2ML69Ʃ,?,ӏ7yY/Pͻ㲸t:BXZjP&&`R{ǃ pvC-?~m\"mmR˴kذzjS&`Rl֞qíK0mᔠ0O0 +0a;V̀qyڿss6-[ ru_ת;^|kFWxm>|pwoN6/śJh8}@8<Ḻ-V9eO-NϭjղM|n\\l/\C.9G8hp j2 rtlexVca,/t8MsY09"5>`9<[kWW5stqpR 'o;G$l3:A0\TE:Sig #ϺGS梅 9g]-pvN]3[A19ۊP(WWj`FjMe<#(ESK)RX,qfӵhVp%>IGPV*NJL~!IE=.Wª\4^(-F*כٔtA/OeiA(x˜Pɕ9%ILA!YĜWOZk1֊i4%%5Zx`hzC3oq ~EZwB(PЕJ9,{.?2(,SgORmh+T[lau)˵xꦐǯ׷P6,kx ##Ƣ2(4,~ BJ3@ +cAp!fUkb'"35}I#R#cL] 8WpT|UŶ^NM#B-X[uPݩC7Cwl#SfN4&b:ڬ!Uj-H)ͷX^߈V[`H_hԈ2*s~B7OP1'Z,OYNeW6i +ś9= +݆qCrOg G}f>p8 D3U9#ry6nEo>>^zshT'I`/~_Gu*tҖJ8?h=][5`Ij%w:Tmj$¾Q8~~$ܡ0| n.rM;Z?)a,dnjbX')&TǾ!czjn + .DBl0СDB~ +$1YEꋮY!R)h4F5n( I4)$F b<̀6}Vv""4$wknE|!Yŗ)-6us];WAD#h%mDU#E?}\i3cNJZq] t⮟D^:i[NX!A ]$*k e=o;&MRÅ!m,}wdUNX|帣'j-r@C%ЛLJ3,5؂/8BI)o)ŰѝxvpeǼl@ڊPqG 2ޔ4CބP i?Dbq &厸lJMiB7[*1 +6~aB%i;vWѮC|; Lo@܁Bw"NIDr|& hV/IJ7c_VO,e4!)uMSFl>ȠK,C$~|N7{:`-IoF`,ߥI|U0}4n=ft{V"dP>.zvc&u(`) :svCe#K"eMEHhZ&Y8@o],^=ʉn`icmH^iN5=n+`SRoaT$~{JiH'`(IG֎qygTN$?,`Fv0hw\!:6dмOnuĝv{DWp5殧-{VcD, {هh"/{[;ч4RVS/$\u_nY٢V@hi$]sV0[gG枫j_YyՈyYcs:U0;Q\">a/iv1lW\+`ܭ!EN>It⃹hsƈ7+3S\cJDk; BHm<0qtM{; \EW,emCm*8TVTpzfMEpkyb l`^8.[y\&tXZBRP"L (y37#ܝ Wb,}GE-'MOK+icHM5g^ +qFjDBt*uWM W-KS Ma ۫ѯn;BƖ^cU!fM²Ųw[{J$>54P#T7 pz azGK͑I:LȢD[#-OncYxTkŘ%a.,VDHDA1VOjGW tL8Fw=6gM Mx֑IAI'e)U9HT,~:n2"OitTQ׽,tbqĩJ-p0+bG89?4ObՃezp6^wy ޙ8rV\w+n-:Cf֗4R~U#gqA(&zaE8XX*Kiʡa VBb unYTOMMmM0!"]ǝWG9Ao' ӏ9Rvw +Np.! +2;jR2!!*|@vSARkvCب=[MhzBVa4϶n@Bt ۴j簈M-~&q}" # Cn#r^M9:O^! S RRʥ^ }<"={GVMZ;J+uٙ9 ~ESs0V!{T߫,Frz>I% ]C¥d'@d5}GEhug`]DgnH?o +endstream endobj 6234 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6235 0 obj <> endobj 6236 0 obj <> endobj 6237 0 obj <> endobj 6238 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 6239 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6240 0 obj <>stream +hnί4k_Id `0)i}VKHJ$5]Uۗn_f{6ˏ?/{ؾ=>L7_]{=>}syvqyi=\ޜ1AhmRv|w۳Q) .9aíR.)5Nn0= (ɏiZIVx > +'#_=?>ݽۿ<'svQeI|.0<Ѓ7pr8dbH6ý--ͨcFnTI/0/;XFPgF<8f 8Xkc2c`{ZɀVTǀ\3p58ykh7FmT= 8 xJ Ff fLA6 uec0.て4z4{x |'q>(w3A1+?dvrF#h a-Cjh8ia^"4Q(Ze)P#@&.!, 4iuhH_n͇Q0<6 <ÇQ爌%A֫@wmY+A'x"cԍjуGn#{ PPMq`h c`JD`!N> 3"$7IR.fjb]1/v $2N*LuL5H,] +5˲g L~@FOG%&t+y ?G*-`̋]rijΠ8p8|C6BZ ^SaCʼJP EK,t[M)a\$ W!kgٗ ?]AG`.,4\E+7㚨o<)V1 +}-aɽXz7Q+LuN_>qnx 2 צ0ჰ*$<2#_olVSӅhGVH"j̰*\g}ea+L~OUƓ٫,f3dʄaBrObE\NˣovqW\vu]9*+g\A--Rk"mMT Z*G'm8$pMeH bVD5A<$~!bA2r$!'?2]n fk;=PNk-/V#Nj,RLŌu%5) =3;S lǑ& j?P#OAp9OɃXD?]IRVi[ߵjRZTjLj6VAD7}DAp9e6bҌ0 +ǠP@A zOa{,~1XAv Ϡ +(͔QUP8ɝ>aSX` |l]ϩܟmQ(]!?AS\ a:SIn ĕsczSހ6e\]@ŢyCFq.z +4]X}z{>=}dlَZty +\ x*?/g@RZ>$pw>nƲJBHPJRPrS:R+X]{>aFxbJʆURLkr@M ]Tw)ZSq +3zX0KOqsk%D˙t +8zGnyS*ي)NSA +:lymf}ƨkA&­-qaSiU%і1 kʢ]-,'*N5-fuml5foԺ%:1fH^qr8~]PDtJNLM]kKAWUHV_ -^T;VF;\Y]µvQY&.S Zu)~(Ez{X +u۠aRTޱ2jA5.RޝJ"j _z=!cUi,H:0f!wB"a`_v v@-*KUzM;x{k+w=d_vw97;ş~`hֳG܂)7Sy'ji ˩;"6EAܶٴX@ob6bQ|yT]_XɞhߵiK1,e]-_p5P:7FI!k( ._3WםVmt1qwnܟU`qTћ5 w7P]j;ar6YXC,^^'&sI +~Z@Ɛ:KiJ + fI_ 4]Ci(bѻ, rz $c mJ >OgX!QfI\\+vh6=YVeEaBQ*ODY,qcaXҀP>uTi81._]*xddj A/M5:&8Eqtid?%󨮽m?+|x羢f .^xT'h*mW5r숮˯>uy\W8?yE\#}9}Qgt+͘T.mJ!e-',m؆+g«KnmqNNNL,KTED]qJM`fuK^-ybi 5YwfBZc8dx +0%gg9j73ysRE],qЅlrB +7u.KK ?415^]gY9z<跫ߞZۇ//OwPi=>h~lYhǟ=}>w8  [.Eꍷ|vTl$e~U~5*ޅ ɞ46ų@ˋQj |lƄ"T5j*b,e7(ۿg9v_V~ V7 +oVJ1W<gv]tSBrbVx p>Y {~ϋL^Z8fJOcjv}xD^= k[Y? 0ğF`_S'WF0 +>`,{;K0cfwt>yX\ +endstream endobj 6241 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6242 0 obj <> endobj 6243 0 obj <> endobj 6244 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 6245 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6246 0 obj <>stream +h޼;n$qzw.@;ְlK"!4zy̒YoW^՜lNWfVFFY}~;v{ynwwO݇n_.Rꮎ_]zk]=\ Ŧe=~v?5[ .r[Fީ>қ->dt6غ] >zFiloF6p$ CBuh5+;DX^qJwSӦ#LX:|yėt :X22о(1d9`i-Bvo z>1as۞.뵉1v 1x!q>8}a=2܈O H Գ[ S;&B)+͋]~xy8g}wY?D6 {D + +?PF#]mm{圴7h~b^Y{5Mg +ti[`H<4I>1a{ocU3lF>h{<2꽁X (N5ۃ ޺H@3 15a> Ab~wLCN + pStJ@ z  GS手4҄F4 XX(@/ȼ BZV(qa0TH+` {p:wܷ$L]'\Eê0 +mͣ[zѫ #HmGG3GŔw3N.!BƃC(P]$v##^FQ>ƒăj&1}5X<Lu=t{V`"-@ml@S,UD9lԾ68l˖M[n,ұ 61WVmؔ!P k|Æ}Cpk۰}Ş#2*|PVE W oژo:= )DSᇽyXpJV)KH@Ӗ]sABr7J8!%*;AR +nBͣ(e҄JB$;Yַ˞ 5Xjꑃ!ej),΁lAqH/!Hy1 BB dXDJ㍄k՞LP% L!- +eXd4`lIaHakh3{_JOB`2HRA8ǡ|1Bq9"^+#MU?aa*EL#3ui{?a*uMxX+_s C +k4 ߤs{hG|GF,KA&CA>N +{$L.YNbhWAP%e[3ʳhw, I vhIVK8x!0p%WDs>2t a&t9]!\!x߫>d*NǷ,EDmh8ў{پ1CO7)Q==GgT6ADxbɊۃIrr4adEbP +RPUXrwFZX3C +p^:9w()>:.KӄeBBN^C] l(4av@;DJ*9$0 cN仓o ,B.,J/l.eufnS1&CJ`@|GEo1F"8AB1[Y-9.ky,J+~A㶐b-%myڱKѓi.1tD8_gw=dE~D +stZQ&湙ĉ, 'Ruxፆ`0<#a*~Nk,01xȣX&2e%d\q+%.7-ͺI7KTMWW)8 eMgb61~N}}\IT8OɁUj6Nax{6HruH@N6(3nf覍/jr#k|*sꄸW G]ɋ}q,$% +8N4ud܄."F!rmlGmA'i.]|rDڽY(\^]Y>Ѧ*!#CW>Wz&5Wnv`zߛnzx{=J>t_^kx'ܭA ֽ]ujq^ýL߿na*/k|{^ynM29jU8Aw4#ncۀjXWW >uxs]עet9Mq‡+`||f@_`V/vO=^TwB[q|> cø͂[pȸP[ֳA@ ?_zlBe wzXc_A:^iѹspw\@׻); /#E޿[#+DVZu|دࢁow_ou"^:_uN,H(BMizO $-ߊ]M^ #$%p̓5.!ǝt߳b%@MIdNWVsoAa;<OHb d37_^Aڄ#P*Yu~!JwHb9v9>~0~ǖϬA<*b>r/Ȑ6"?o&qW!g=~twRz+3M*j*ƇFdF +fDmXu_DZ H}=L!L>Ԙr'I-u-}UV+ul@ j"tޟNI܇r.{\̦ll(yJ`Mcn{^ +ϼD@H.طR}/J0TrL*>Ic< ח o,TXuwhG~cRwCdۻYݝacUKh/~`7<wmt͔M@Mwm51ktG,~2E'Ғ@EKx(X|MoYte`nqa>])HفО -e8tuI% )1"47q\! r :\u1\ b.f`A &1*[6䗮 miw˨S`%A]n{BhecƂuƏNLJ&us o! +URm'b|-YxcQ+j_jC4xF*l3پ?'+Ш1]a$4-sOe3G U"5玦AkZ )AHYc33ѥL-^CN+RYkƛAZxavh9^H0b0FTC`Ĥn.K-U֛/|)%V=ͷC=+'[r2oxd,]9&[WbTtKxp\٤zϗagY\5P~_‰^.|?0'sc::/ʰ|ݒU\1W6=/'L*>)l@߰m^Y(vi.w\6c)п--QyjiKv"4f.Q$"?{>TI-S};]NX\}s\Bs)xF2;^g$ﭚl~k7d74v4v"DB`. +endstream endobj 6247 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6248 0 obj <> endobj 6249 0 obj <> endobj 6250 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 6251 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6252 0 obj <>stream +hZYo~_1Im}b @,!ԆPR,U1ݻ\% 3}UuUO_ççi򯛫\{wy777WԴ$$/>0Qiv#7!ߛW;QJ9[P +[)Q/筈3i|FH x?)nV k>0 +!]i,B!"Lh)\f/eee-sFXQ Q(k5 cٺ:Gј9 ͤj[#TަVUĥmA3 +<2ޠAD88 n-<d$k1E^Y8 ēT1t-4WE#H4zJn"H;|"I7%h:=iO;| ~ =+sP[-[*MyJc[ٻklK|`E h_:i2/S+K +`&HJMBf3A#T}8*a$Q xbu<¯A ޽ZkQ8MFg:sY0.P:Nֵx +Ve/l.4+,AkD5qV(MnI LV,@,a=m"*^UpwqmGgADIjz-T7L 7߬?)(;,5Iیc['BWyK oi&Nx¶V[d/ݼ%a搋= ԃZJ-Z?_,%ۋ! &Xa yi(85 (F\ikU8U=NDբEL=='E.ta.Q5.GX?;0/ԯ# +Տ =ze<߮K lCZ/ ,E̻tp񛬲zARjp=R՚)]o;7=EZC$wɅ. 혳&s Ktږ5ln's͓#YȠl4B(^)Xm38d=^-G.]NMwϣx@*+Mٲ].2蘷&mc^ ̧g3+D]z =^{%5l xI"5ǁ~,i>L/H]u$ W=c*G7..kCݙUѷ}.Vw.h]gS1̉mGaX8H} jg-|it!l[3}y.K9 OR3O}{np.Yוּւd1mI3f}Nd%MJ]V"LC!&C"+R)Qg.d/BV?8~ ԌߣrD^ v+YgmAɠ_ WU(KG_'s(u<"G䰝4\fk#G'zmstJ1d8'~WDt)!N2c +|!| W:H1s*gTwPe67|_,ws[Z`lYpk d(,&VːO0N>3kUlO:ck8d. +uBl9T&|kШS/(a,yԽ9k{!vpU0V;RX{" #"eLK(o5{* 3Mc + -)6xF֢bf#ll l*x廰xwm%yq٤ +uq997"u.KɖN:ԕNS0Lї.6u?_Oi)櫂v[~ j2z|$-v͎n-C[W4h7f6w4]ή]m:@h sg[8s5HϜcv677Cl.癣;Ԏ}hW#Q-y +endstream endobj 6253 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6254 0 obj <> endobj 6255 0 obj <> endobj 6256 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 6257 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6258 0 obj <>stream +hZYk\~ׯ@nU4dI 0I`jKA33!>g[CF֭YsJyoNo޾?}~7]|xs{<.LJ..eRW㻛uys3jrqk VڱrۖΖ4`Ms[iv#^S@KKTi=ȖYI=]k6z ) +ag^68(@xLc#~MǗH+J"l "vpgCAm3qm=ve~8Wdeb.&ZF8!8/a9R8.ᶺOT 1.v9XȽ{xC +t;&[jJX\Xl4a/?渠U ]d]Kwm_[ރ*\XAmpF#X//><~oGŧ?Z%Fvդ*$jb (mOmOmgl9o3gh A u9blHp7gh9=b;yj[!=xO;lj( +l1)ZSz3\oglN&yÀH8 LB6mz7hVR6 K P7Q?FErqAYTQhA@ڵA(DRà&4cHt R HHB/62VyhU bۮ`MS"@$!&LO\x;H)1GT>v-rc@#5BO_ڧey֯&c&gY."x}׸md䑚)(%x0MSׁa~A^ƕ;b$Ax"9lm?R yrA_V,T%Өk-WGpzkp^Ufå<+\ .[> Dvi?X@D ,"͘6I~;R]W))kЖ}pf0 kC% ZYځt2n~APJP|:F0wT &tl6@ +Ζ8dwr!d #_O<<w&lL=җk>@&LFu'"z1+ #x(HA_1nQ8Td8acMtup΢5(MaoMItn:Np,PYx1¦.I(=w6p<knC+݀º4dMx=0K$DO<ڏ<a.Tu]w'%_o4BZbf +bKܔ^c9n]se$2)](9ML?3uV.4kc-}Dk.3/>s&oAO㑪zlH +Rj57z5UUE2pޯGgh~5YH:dC.*H9@;AET$VT6yjg06qb)4S ^i\k_/zyp=_Ս2Nt^cqL32X׷W/MKɏtw@ȱ%M >pL3\⎌=(1փ"q2uB:uK%;s $=x^~kULY2K}ȀN;ӓtZGԝy 6>딄F4#j0M7Z,\(@$$SqO/[3r$<:5A:z "T,ƭ7~ 2ֻ/`p*ë$._g=g6vi 5V| !yDAlBCQsii$ϒ5833 :~HW8?id:C.4W{/0F3+xۯ{Ov >Wgo6:Sp;(ٹty#ScaD8Wv'oˍCR 6Ҙ2 _ib.w8N^K8c\60nbk~K9AHBh^UnȞ at6ېzեV< ]BIen2%eF;Q/Fl= +GΡy ;G9<`]!  bEȸ1%0y ۂ4}O%HJ:,ϢCHY +B&hȾptsJ (s1FQp/ t| +|ʎ#ڼ + LQ7p׿Ulu0-ʜvqr23jSZpq."n暤6vVf{nQֻ\/6d5p}C`͕7ZMg.Hĩ/Q68fKGP_ܼɛm+R,Ҡ@W{ }yq1dm+ѐ^@p%c/M0AԿ )wIUd^T)qcG4Dх}hIф&E4:=qϕW5c듢Mr+Ks%DZhU/A=hW +pȧ$ +endstream endobj 6259 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6260 0 obj <> endobj 6261 0 obj <> endobj 6262 0 obj <> endobj 6263 0 obj <> endobj 6264 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 6265 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6266 0 obj <>stream +h;ێq|1p8{3 dN byA.$OUWUw53%~0a/waYOq~O_Ofx懇;f8L<48G'7<|74<<\7 44  OaؑӘyDpg/4\g— /;a_ȓBæGBMysv,zcXp^ FCǛLsg1o7}MvHc0Z704yt|ð~q]?0Z'yx#g]mz1rvnVa(mrǤ3u9y`3`h, >~_2sJR`⻁g#S>qfoFfÉ[ {_^}zO_? aW_pٛ>8|D@ CMtN47{nvmGO֍6vg)moM؎}YXXS5d}ma\W d̘,њXָU3F=1!nNjqmLj`m\m&̇u4a\SÔiRiãg#Ȍ(*1i~,a`uWC#f9V#@o[42B :F -~hy"g١E;*џ,6ZAaY*ѐ2?Fc?~`k d{Nvi9ܬ G_q䏰ڹ>@mN8+vD4njKwĔ285jc h?Ay!Wrruk6@I!yCMI*%GMq +N4|闙pn[vټ*4I+y s]4ft3!mӟ)z2 b+w=GQ,,/ p8^v9F<}1$@3 +"HgH_HR?84y_G")##J=Ϗ +3`P! X0Bš¼NPdiyyh|ŧB̸<ӡ=̊ߋE}0TQKg:r f;gR@,#j" qS&2 + +b~ /*^(G^nt iRҎU4*!oci!Vr}q1;) Ӱ<ƙ8t DYzcڬpKydHϕp}xvx~N9{MȲfo^(h@5bcH@BꤍaJw_%`[V W4rqF8ʏAVH}K+<`Mv`c9c;bGFIIYa|Bֶ[8/x MFzhDV(/Fz9g}5;؀@cQ #И 0?@AOn2\\θ^sm nhNC82fђeY,MB({b59Gfe%Rt׺=#+峎e/l"ֿc5iBZTʭfWq,X1mՔIZ_+6WE6벁矠uOB(t.@'/-[\fRȠS]N,t2U:كxp#C{%#0ܹUTKLֲ4jR ܀E,&]tԤ1,H&8h-΃2Kz*ҤrH$f|EG$ +ɫ V\0/X´/X-&Y )58;%ܣ_:1R+}W%c?6_I:HCUI~maѴ!=@g=PuY >wWcU*YjUn8α]d؈9י׉ca&K"Xb.0!Gv0uyЮ*l6gy. HfÛ`wC9t^[pi9@ͅyɩ60Kr9^]cW)G; FLBX zznyӱ=pKK}J(At$g')uuFit#+G9Hh=*{=JH&q|îNJH~I?-v?:c9bt"g Idt0<<qu `N0`Tª .v@.DᩄGR+ 65>9֝ߐ O"-y-!\NgFߝ6QQY`x**I)ŷmyQJf8gNx#-9m60_\ "T'T,B$5`H +] ũ"CjCynsּ 5;@_GQ|"@+6avj%q_1ү}a֓S"FyX(3'L-U7?;` OXe#B]&9qG69FFi#_x@ߑ_F{Χqb4 uaj+4˳%oΡ2ڒi=ښb-VbCbK9w%o"*V4rZ%ѓnv`m9^ +؟͛۟l|}Si}Lo;m G*O8li~(_ޗϿ1>q;wKǯ?>?}wקo~ڄC)qW??,}]*Yj#}[XsXxyΛpv^e`iiy9M1f(E!%r֊T@ FQ.B"'Vk:34jb^׵j3_bݯonL)U.sLÎ3xo|›`Enzt=\"k:XQD;rdՎP:242:P#h)ӹ\s\,=kH}&l @6RۚMsޑJt;YSJbiΨJ~|:K/3[ wZ:\qg';ǪrS;[*sG34?~sp}Xt;Mya9,TMLahkhsnNdC'bL)WS/,gUk(Y\*}0GGN$QWo/?ڣ,8F.U/ߩ:nX&w7(t%o?kb]x^jDle1>TtE^+fD]/ +}Wg* vʼnO1MJkOk2j.ѕ3e kkv7Ǯ뽄o{~Fn>AWyii[#`37nq@jIta\xvM|Wʄ==lt)7[]pra r :sDH;ȉZ'u'i%c/i4 +-z|Qc GZg0HKPTy*ůB9D.-ۘp5>%)qJK monJ絛vC?ȠA +endstream endobj 6267 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6268 0 obj <> endobj 6269 0 obj <> endobj 6270 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 6271 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6272 0 obj <>stream +h[Y$7r~_ Tv&ڀ5v؇n93-YY#ـBkw0A}~y~:_pu۷7wf77wf2ML69Ʃ,?,w7yYP?[gzZPPM^&`B=W3{qnJ|Hez+qJ.W`GO<,׮C:~3} D8ON.a3_߃O?<|~>Oa_t; 1ڧ%N_066S)s,LB.s(~"]sQQ&.=uKPy0:{- jMXt( sp9:ÙlZ&U ɭ w0fNͳ58ZA ,DaANn;Gd2MPl"ya4Us`{z0<O mA'90,D1.unjq1(&gp::8RӉ#ԂeRJ]yu,J\4 +'-Bj9$=r$.VAB9ղlJB Hq~?M|P!^a2'treN4/<86kDh71r+ʧ$񠚨 sI_ O 74 +.O˰x:|BS3;S\\;J_ +r9'j*PkV7lQ(Xj|ÆHa)A6v߿}yzo` 0Yϓ?g Gnl;4%:=Yl'N}NJ _ȫ)jpq?R:%AFyW^$]o7J߳qE%t 1j)h@ið(|3#"zk7keS -Ee=+5^"BDC@ e)!VN4,|x-<u^@Hu:>ҝEC]jj3W^;E$7ex{)0G-(ȗ S!S[{+w2pw&Ґ] +2;3o*!7]г&Yߎnv-FW1i8Бi(āeffO41R +iea疄PwXk{|нy<B%KCۗ WK&\nԘuUQU +^ƅ\" ?=ѩ2/$mHFM@{%$>t䡸mD狥XwUİQI;pf!84QZC -G9 X-`7MJ'~x@XM[+3'RY&6jhBGs*zU$;>[DKntī, IZ g @=#g*/pE²Pg ˸Á{a%t8՝8^+ɪNJ;ٚXU9r{}u FP"*n)T5ԠPcx/ QDf5!k39:-!?S#VnBZ)wfx@U]6a6Epb%ԛh:Ւc&͙p߄_Qǖ\EKUC=u჈`d2΍-eVqG_uWrמk0\R_l"{MYːpΤu3iYZJD}`o+j +GN:Kjb)= ;a{Q ;;Жы^>~ l?1$4#p:7ke_ۣ @Ld!S^^%8&x9PE){^n@*5qaq+w*gj̅Zc.8-}QS3T`.eEr++0Ya)flB5tE%jmS46 -@&22xf>!ZqJN+Ȗ +x2d|NWk[pYedh Q6NPߓ_Ra$;_{9Cq{ks +*aXUp +߲| ez/V}@UְI~~[IX[S5'f}M #הOG*nu.wEmmyf "0%MT)b5eͳޕFdʒ~.DCqӟ)vgj5meFS->/Bęu2VMk0VV j\pLT% ܲNtD4w)Db?J>Ba2t;^lSG50ܫ? +һl7%]DڈthDH< +P%G~A,F,/c]}0f)iD)U +91{m E5<;zaCT~4AӀyJدZFX玽^Jd#0z"9t=Vµ "A4;{r~dr|{-6RLťx3*2K("W ޢv%}>[}oKڈB p5U,hޠ[͟Q]gQ"C2~I%!C5|ToP\i|^\%EP*Te-6ƼQf]Q]VKȳ#%0xAO[N-.T"D-n> $xL@CTi쑶q]o {YBnc R<'|J!-cEx}In0_2xlU/ڰO J[s}_٬gqӺJ./&lߡp ƎA=B>}#B@:wiX>}X#BuC5D} c"}V+W$"cARv_1P{-]?4&}'NPLphO8عnE4N^8=<6LH) )B}ayW>xu}F3`v3șuG5µmW\pp5MX+bRttVWU4&~rw?~Kp~ci], /Jρpo.5A@ܷ@mGX8cHnl6ֵYs̽qҶq0n].b*ky5$L`5x ,V~歆t^ݓ<>}~?]2 ?ڼĿxW^W^~KS*= +C""l a^'@}R"S0d#lǛcT3H@?wn["St&_>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6274 0 obj <> endobj 6275 0 obj <> endobj 6276 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 6277 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6278 0 obj <>stream +h[Yo$9r~ׯ}v5= ? U4-x7Qh+d"ô^_\o.~yݻ뇻_\]odz_\]\]IOWgyaR<80f?SӷgR&MW[(\xJ9KV)x]l"-9q o_ϰ/#@ =yDi}L}vSf-e[fsye쀰՜mU Y3 +|o`&Xvcy*P{2 .2|\o`T mR{[i=Gi6:Ѷ`"0SHȌtM"|:)s06. +!ֳãg#Fx&,rO"{e:\s_!p-J.ظ"󠜨 s`!O=08MUp_p "jTaIaZXƎ*mK>\NԚ*P2rAT5LP,|ёm%H >o5?CT  %h*ǮJ䞔>96wRB qOnTPޜ[jQ U3x _} db/.v[w ;,`+Л +u9<I_qE-)t~hWsF+Z)HG33=BvPX/_(`lKL +ڼLa_"ىlx +%N +4m*rcsEx^Gu_Db~$!bǵ"%J-(ȗ|VJaY9 +Sۻ;3pߐ*@4|`.T͂֬|06儾JPWYeUZ6RW8ٸQIm]-$!T $]sj/C{-[ޙ9ljG8JR2@t(jy*32i":Y)&{1RgSOHA\DBVlЕmEYj@uoT+vG7U ]o;LBGT+ڲ ~ =OB7 +h̺+GF+°0 *k7E akԱ6cls+boBwK@NXoȜ =,dﶎfhҬ5ڣb'"TYj-=c eB0'`H^{I8HxYEԶoD."_Ӝ.`z3ۙ3FJ;uXziRKJj38nF& c6,R[|D~ۦߕM @"r{m\lU !ظ}Tb?e6VGre % 0u` ^QDFKKx'9TھiSv8idƺ'T91+i^ %lrl2ٔ6l2&flw6E ar}hזވrs #rʓFt>U`N3`05 E`Qnz 6j`G` –N ԙ)~\asmŴh_w)GN8K{5,mV~}kY2BH2G1q!s5Ge_\z^w{ǁmJGݯFǥZd.Jt/{;Z{ lgQuf>LuVគ3ҩ Ǫ[PV׋{*RgX`fu/*̾]Rd`F4v y|9'~佝y?E[(K*]W;zqy׿=ϙKE֌)rylv+x"M +^i&^q lҁ C /^SmIR mJ-?@/}]ץ~]7ZB[ZVxfX֖7{m㢘[ b39)HҰҢ[3 Boy 8(apJxNLyXev0fk;p nڝ{-9Mi}]$" &,{D?nն":gZĺ3`]%4v{̩WS!p$ } `5zvoAr +WY4k91=g$q]|int6ԬNU5c2z{Q\7z7R__uS6²W[30ӎt ݛ؅w#4#"9KYwol!= f},v0&QOxz$?/ʒi +d3ڶRMD.?*j&q^6mWUNpD=3=iSDN͎k9clkEa5L]|v>4[zle9U\:[qID +kVb )$=uӰoz CKAvh?B89|LM!3;k.18("ׄ#D8:*^ /c<nj)धQY>c@[>بم~4I24x 82X7p'!K 1{oGS`N_pQqWCЋv㬆$ +c{ )(XĺWX6buTC7΋q$hG$AObhy Q0N%wXDn߀i'0X**g 9#;:M{hEؼDM;$n/=ex]S LUGũ?8 N2U'V=Hz*ND(l^q-5\̯@8SqƩbq'?CvNERO@agb/3\H'٧g:qճTq=-9~akOS{PKcqy?eQ|kOu"r>??i9n'٭aq'kVea9K'`I+1F$Iq~#IVQmcѯ#sJww"v +JK`'iv +Z y!v8"pPC+D:& R3t+<2Se3H*4i΀rsЅX-2&^9 n'aẆՐolC76 \ގי;JQtc_ZB%e\g9$)Gw |a+ZQcBJHEbkq87fG8ݥ+5& :Ss&u5Ya[##_3,ud0^:lgȜa$xYo*C^7nЉcODcNY+ody7aq$pHzӒNe]3n/[V6m"k@ێuip{J~ ZKLuj[߹ܷ^1\~@tnj +:9r+\d vyߦ[vX:kwyѕװ{m66B Zl˕"C/iO8&8(wgzﺃr6\lr8f$eȤAN9ԵiNAȢ4gԍ'eP3Mh%ׄ~*{""  C6bF`JșZJۣ!g[yaCw؅-K?g_otϷm7~/{w=^pt/87vf i^O +endstream endobj 6279 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6280 0 obj <> endobj 6281 0 obj <> endobj 6282 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 6283 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6284 0 obj <>stream +h[Yo$~_яRx@,v`hvVbl?#ũlvOCvGůonw.{s{{|>\s3yzsq}m3\nʠ2ؘTC{=l{(]RkOC5cҸ BXԄ=jUsT#G{rnnSLc-} .- åq5ɨ`3(`2'qpɕ)9 +Q4Lm; {P<j;l=oWOwoOw ƾz;X'w{ PEXH-UlVp/eGeGeLRZyrmQoVD*[hV DaAOo"lLka\_@ JUZg< pM +N CI+ çoo X?G!90hoi/f8hA@%N(HRɠ"iHt R*IZyCPA)*ԕ +ǴX66qf8h+O#*L^Z #u0+OFB9qrk(S +:HOۧaCCxzR2zAF C?E[0768$oٹOwnJ#l* KzOXJh!ґw/A}Bj FC!dыܴIs?49mXCJĄؗ:l}c~F_Vkߎp {Qo؈476Pu7ʿegd Y_mڴЗ2|vCPEHΑY89HpTמ!VG>w pY^W7#WQYqhyNOU'iFXip`RPsw213)#q(pDlp}E3) (NLRPZ=Ҳ"2S%݌q_ysncƮSRxə,b->rIOMx tE^:9rvD#u|X:ͫsb:6jPnilٵ8eYLl?Wi☋pA OEYflm$IʙDkͧO$Q-F^h[VHF9UB'/qrmeUϦj-uD@ˆ3孫-;Ғ?r'z?? y3wVĝ#%^"N-0Kˈ]mT&4׽Zv hGp)U; 2k +؉# j/oz&5a*MvG3+QY(S Sq/H n̘K)U׫\+9jiנU풹O1=$ժi6&*,8z̏vLΡ'{zfm9e0@m^` +23sLג5,ڣTfPySwn(Ĕ;4uՔqΞ s#2kGfc82l`30aJSHΌWEe ֱ84g`7q4ӱysͭO3ټYmocq4ZЄ% <ީ`@cZr 1S6lV%[YLC| 'jv}ӗ_Pu3Ф no۶m$*V'R W}~Sf+3V3@AyPf3rqi-UQjSU#ЪaWY-4 :ay֝/dfVƳ2ju!SƐ̡Yh=BQkX*V{۱C$ _`S]IG<1ȱYTHNڋ, 糣_ `#(foV!LGUӋ&%㤱tܪRי]^)Y=l|;zlW]Ď&4<4|-e0\} |~9y_D^]LrENv-ۿcmw珙 Mk5ʯ훇Y5Yʱ> F}9a1zwK{&IugO_r~,Wg+O~m*۞GU baEOz]܄MʫOX4h\IA"fV翟[ˆ\ 4"͗Iy8!Lʃ/jH)ʡ_.ȝ\|5%8l]I|(_=ćs%||u//kQ%e| +av@|ͻ|q_( -Π.%{Ho|6EXՕ=Ǜχat{{sax|:0ùgW\: iŒ9`G|,wß>_ _2S 9B3?vu/<8 +}Q-3_̈́*`/I>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6286 0 obj <> endobj 6287 0 obj <> endobj 6288 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 6289 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6290 0 obj <>stream +h[[o#u~ׯGXt];`MN&^ îaP9D"gƛa:j652/@]u=\_,on~}~}?W_~}}~cwxssc.vMK[:<^tͻlp%]燮 +P<VaX],EtXVʴnIͺ[x@S<>N?( ʶaMxevU—'Ӎ};:n~uЮM34u86qh -}kG[}'f 2v-69?ʞavuhktK%3`ӎFڥ@;O" brY?]1C3;5&R7_6cGӠ:7tŔ^iكp޴@0s+.g7?l@>m~Ol׆77]*T WֵvՎo76hr65kQbL@zT bl`֑%O~@2+4?J0wjU `|p2{g# 6<+Py(w2WKԢh{'FJC:ʒף]GH]ȧ\1}ϭ<ed ۲o٨ԗ>f𻲊_G^Xaz(%wvZC:}RGlڭ"iVvGig< LE~m7T\]X'~垢E[&RvN4 1 +I*, V! BwhwF3i)K>Zot`߮}tuK]Q~/8" [eiq+)FFAYW7pg"g`LDcYh E?zI(RY@|םr=hG66eyJ C#3-= IFE"_P׫јe gMrmyZvP(glFn[VlʣtK“@#ڻwgK:ݸ,QVÊ5%]5 vE{d( +Ľb;JLMQ,k ʘ q kFZ &:߰| 263\鿓yImhj *B1VTlүP{R}/#yܕ8YWfJ  +AyU^,ϋX* +SY7BpakIBKp2 =Dj8-+KL@J$頙(I5V(&`33ft\qGѓ}54-HFeJ(/XGE +IʓPQ*C#$ARKe+vqt0s9)t^ x$J=Ac%GNu+DGr_zd=H&:e68 Ŭ HБo;jR.]sJ++y@T I"Yb}Mus𺯴OW",R#xL˹0&mqXvགྷr#-yzD4Y L9@7'K$ˬUvXNHbU|F|+30V%'aP&fE~KN;hcX7QҸVņFRWǐPv_|wwe5᫛PM2ٛqeqxsh EZH R) RqJrμU>mHLu +t}΂W9ɫsYcWn&i.$d(>Խey+o|\E{_aDJ?N-T5 =fYXb𗏈 +8C0 +D ƗiWgOLXcM71NJn+"W' B)bҫ4,:Q$,2UIwBǾ0̂Z Tf8'tMm.ߨ WkM]fXd;),1sIy. ׂJ%誒0|zL`cXNu!_/sZdMVs\>Y&-2;L"!jW#(e&*bg@TVɧZםdTg^,;uO]gg6CFT3Z:}v.CXSׂ; WT£J繴J'!0y6L{ՉIޜzWA_QcUK^*yr8>IɟH_^vySg{$S_/ºSrr.yUv#۸,y2o&eK02N-K6%'?q 3֌gӚ"bD_ё8ё&T'-20D1_FW^{\<\35 +t>wfÝ8ijte+;(k՟zAI/ߝYSЛ#n.;R+Շ.tf1\q@NBqi"gN,d1FA7e:LG'.+4+S䜫;a(n'W G^sw, h]w4O0čA\Y41Oѻb,K"ۦR]9i5H P;A#W֎ˋxsN#]rzyP=ܱ +w *`y'|T^5W,.'q(OpSq#gLyK4x3ؤp\zHfqnWL-W&K19C|?^O֓mEPoTۯ_(eU[U PU WZ,j E@畭YBrrz._)*PLht^o:prY4y9c,bVChHV\Te{/o@kzuNH,f_tz5&|ssW~?.pUKlsY/MX4 ..n7s{׬ܿk.StٵN9-&b|w5vo>%/֏0O4%!+ord\B&N 77߾5PA㧴xw|>tIk57 [Oi䰾1Sgo$[Vb>`[4|vKǧvB =?^O-ӆ6~Khy;|܆1K@WM^w?|&9}> #3W^p?%g8_ O氣X9<~XS' p5]jH'kU}Lor@ϏǴ&*^wFe4Wm f{:>^BHh 9m* QnГ ,+GW=c><޹Hl"BħmN`=6Y.ވ@' +5 _񷴲#F6yۆD:9{ >stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6292 0 obj <> endobj 6293 0 obj <> endobj 6294 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 6295 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6296 0 obj <>stream +h;nry\pY Qc8v,KR\g_Ru<c^_^a=><6o:ןTwrTw}w6v;C}7ߟ E? v;(]zz?6P"Ԅ=,He7*z1ܨ.IjTGx5ۏ@Z.ۛHP&º)jCVo`C6n.q`.: +yG1}T": +0/fi4 z{ܘFn}j?gwY?V%D0eaiՍcG!tمz7.&M*^9 mz `] Pnc~: &@,{ +~SN s`y4tGsF{;XUAXj`{JAo򩬕Ih8Tþ= ­{h0CL:JüV0j̝{gRԃaH^S7Q>49gHvz  =FSq1(2t@R&" ϫ4ʸ<@#(yJ!TXVALB\IlEA9\V$f}t!W=r]4JPTdOgx1?z%LçS]<>TA1A!Y]'v-="D8&~ _ )CA~XEtCbo\" (jz*aVʏ R뒋<1VJz깜q6ePXNO6Kg t~i0ORGf/YMZ-zz*aa "D1714* $ĝ̌"-1ㄟ G,E&bl2/\=[b(>+Akcgʩ˭쥍A!AJg<*˔0ijFeKNvڹH<G.3I͞*2x%tͳ3  |vE@ Jf-0 SXقp&Tqn!\05 +oBe)VwxT] LU&x`dYxnO +&و^WPdOz!4#5Gf,~iy\`YF|ː6!LJ7hH̏>9pV1j/o7Zĕ&'BP$d(l>MQ [`>bFf_0 -jעT"J4ziyb/7mWڠ=CőmDHdD8'SՈ=&h*GY n48w"EEvXg{CH+Eơ=+mcSbĂLK&Z5j &\p)1Ƹϧ/_]zw7簊__pԪ;&Zq;{t˝wm_'y> Ԙ W=?qhX=v{>C>1ڲz޾J +xs(n7p7& H;~NШq9np]][> T{,uݚnmne{|&8%Q X܃0J%~l!Pv QI(吀VƯf!oNz ]9q"n`1;w"? E;-Yp(Nm.E^>oa뱎}S&K/e 28J z#Ch0<\ AX(Mb 'X+szse+.h23Pw5 Rî^zE$6Jm:nP8%n'-+|`xo$Fc㺉ijKD2QS $ u[\93]i8qK0)h5Ogq' cKh5-G*Xƫzurz立@x`ƃNBuf=m H__XZnIPke+#>+bNŠB,J2utԢ#}i +%6S؈d#Qmbj Mկk >Θ[rϼ}d7^{͓m!E\6P1~9m̕ Ǘ HNqSσ_O(l||676Ŋ4Mvfh׆{t*2\tYlc/R|M%2x@hjP&H`JC$ܼvr&1³dH](e+Ol`q,z\'VC9_婟ף:S\px.:Yں_Py{L֋hvBy^b䈐#Jg6VCn8FJȣ&6] VUvild7&Vwwi7ql/nj;VPq9վ !_]rh%%nN}e`\ 04$jXBJߔSrnnsI $ʯi dmsJ#9h+l,g$YɭkE eD9Iת|cEmavg0Z<o !eK'.(i :j=2BkO}) DF/ЫJVLV9/HuVPQ+ {׌E";L-8rtX7=Lf:4R;$-h-. *" s;f9Fg2c ۛ&iXb)Ñ-7iByڹ?7^YHTRtTVTRT{%oǩN_o&ShQ᜝l_Y}[+PnAJڃ[IZdٜuӓIYՇvD^Uc /Joܱ/Pz/M2?˅+z%tPLjiB}q{HuuRj 勤v$ %6=(,ÁKwߝc +% '_ʲsg1HPp.)(WWo~SoC3 O.Ul6.[7@ϥ:Ց";\*nT䋍ΉPWQ`;l7|6"]E{A-6 *z䟆.k6>{?1m}az"qfQ3kj9f/#sYY7ܥ vسY'FQNt_q]w4d6n$w6wN D2r! Af́Tr>kSrߞ>:#o;zGtG?H-&?gdajVbkVMcԨ@5x}wь(}N4z4L(kpj7 28@6M dU{rȼ^2h1PMigB$̟XڛwCB28lObo˫*4?FN%[FpZn#GE_BctT{!qR㌘a^}>c\sEJoe֝zh}=l֓2e날9%|C$d^H~^ +9L#eH:N@9US!<=wamf*qy!DKP+T+LNū⪒'^uCj<}499K Β$'9r|gh'<>3g$_Yn3O3]{\W.S'N4x_vZ8s8vtϧn9Kh:Ѻ>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6298 0 obj <> endobj 6299 0 obj <> endobj 6300 0 obj <> endobj 6301 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 6302 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6303 0 obj <>stream +h[Ys#Gr~G`hv]%;^ZDAr8@cČ?Yyh3z1̬/|z}ݻq뫋޽\|nuE_|Bm.E? z{hli 0qJx4,<ٸ^fՏyXgH|s{TomTQ0FKAoVwԅ)h^  bczxB#^1lmoAw>ކpq{}{bLX q聱(ULHrP1dPܺӸ]*@GjPm07Hkн }?vcGSW:\~px%fܡܜCIِMoT!RJ۰ԦΖ^XC=|B@KZ=,(]ʽaSJeG>>9?8g2м Xr`#G]mD =̨ʧvh2'iBLԝcd~ !HV:h++ivzUD=`Ï#-nw`y/.&>8 oЮp Ӊ5FB@CX[q=c:vk\X }%pCZ}-5]q U'ERU&"4o"yFl\)=V'l9@oV!)L#z\@`q]!8̇.K:!kO[8i5yjoxly!bJ +Z^A's-*hOYfboP5SXX'ۖs$ejN탐i-(`^ex0 c"YM [ &IwHbW641h4ZyCO A56d,]#_YQvkab^% \bKw}w얰Z,a"gOd  uxyKB%pzq/ӁSM-jK~4}x~z{x8ԃ~^{5G 1PajA41M"DFŷ@gX|_ikXGѓe{_][0Л9ۨO@D)&;j3E^@_ܽMG[k&Kw;䫙VMFV c6Ȕ{z;tH;jGAx +ę nDvH]aӨ*qqᄑQD᪝"MƳ@T`#„oA_~YGTґFAΏ&_])z!si]Ov}*9=7R}Gf ==?rWz|aL0S[R1~P 1jv7 WO'`-?»+yw-ٶ q=lr¹((@oDFD(@`-d0J1$`@ %J$@0s@UQR q<Ps35x^Y4s30c( pFmRk-jAy1C gj-H3${k +fHZZbp]L;LWIMNC&v}.-WL}eS)/3@FIz{5Yq6yȜuU8]2Ljx礶 K{#-LBO0E0tj]AS}&SZF/B_66d>px\׹M3ۈYh08IU)QZm\(L@ɍ dLTIْJS cdh_lͬ6pF~SZgz 6ˎ!9(hh>טir+:w9)V;Ci[s(!39a0kΘ™F,<:ͺ2dyMr#.Eo\''Gpdq|AI8 ~e69:4ȗק^dƇL+fXzjꂧuNQ1`;]ErtEI׮n=Um+1`kY73`r9Ӱ W5Aﶩ{Ş̻\;&Yh +X ؜9 _7 7ɧ^x+ER3-ER >BwD,sQo/@CLUwsS6_]S$S +~g^7ʭ[W^u$SU9B7`[ TɌz c|k9|sm($>_3^\ƽ);3*_U;y؜Auln̮%>1=7W+=kN; ˥ +K;GlZr/a[I\1̔I2I)4HX$ͤHkh&T?,$i]),4>k"\-;lVAdoDP1-_P% *ON*g=:'?KgKwC5.j*|MrA#xIJi #mA0\؜މ7UY\'u:W wY)w[W4y95uw9#OMp6T]yg-U}LO亼Rje^8+cO*xI=}u?WK榺_>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6305 0 obj <> endobj 6306 0 obj <> endobj 6307 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 6308 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6309 0 obj <>stream +hn_1m}l VȃRb@2I_=h HNuwUW]=sz<-׿}]}~|pZ}/?Wgf2Y4+I8npwg _,v4 &AY5!MS +&&`Teeא}aІ]¯*Y`)%\faG y] TY]-%)v ˒`JzZ(z4`C +3Ωl_!6WlGmgBCaH ):#4<3{ w@#Rw;!Ui#&L[Po=h`uZ߿f#]9ޯwwOLua!LNcbNC-đ}834L@xnOod{^rGvϿ7!ػۧ㓺-w n6k`P fWiT%PϥeBT"cg:0Ռ+"yZ[m”}KK,}xPm*㑂8TNަn"U彡RNR'k-A+@B&Y-^ԅ +3 a#7NAGFCݥ7]r=DSf*~׸&6WODSx(--RԻ>P;L:':l tjUQM֓GLhaJfI"1 A_o#/(_G"ppѱ `'2 +Mw"Af2(z"Nj +A>10FmոO)72yJ PQvBS:ŌK$%EL{p@H$\X-&r}ɍ\$q {q5vС66h$`(cKoP܆.aQx "A\R|lGRHRvl ]5` 45Sg>Åfc~Gawv v<,0"Qg@_(H^9=O imfܦ)l9KAKp + 7ԯ3x-,YevHr젧՜gj]g|Zvj]Sް!YR'>yy*&C2-33ؙB+bQSޭ|;s=Ze$չX8JQ]W ye~1A o(-' ,oST@YrRH^f̓xdQ +m3LNiB9^SU|1nVd_TTgNEݍ;Z4,G&~+) uZ> S3c(1[F>\ ūaUk6ocKpLOu5H>h@G#ڌv I8`kchvRcT1t?V؋3̂PiSMaDB$'j}#'Ku-[GM/L4J! ?a4^{څyAœJV V쫡zh}+]mLEY΀TrSYU\n/eϕpYNm̓,WriKAW^k~56#RrMs zsd1f#W5hhN\ ~j?~mU|z+EBs$ɅnwW)s٫ol jZe߀5.g=o- `[׸%::MEJv-·юi+_mb_ǮVA67^a|9$ܜ83Cl^{Գ6 qX{(qZ{˯wl{MHصd}űlzj/DUoC4=n=Y~JsRSRܑc\a&WʓZA>̫c~cZ9*.v :sG0ԗ#Zp! Ɏ#jI V>l|kGȱR#BT +[hr9zv.ф¯[XH! +aߎI%~vK!.R9r[kJ +0g٧Df)VRq=vӏ=Zw-L+SqXݫV*Ьdq4Ծ_jטՋ3mO!3."ł?U}I}I>Q` g[ЭIөDyOZw&b.q*ϛ<7dz-~hu<7$Y- ~ڪ8DNO o2o*"e"s yw2b@Nϻ"/P9#̻&|c1#:u੏Mw̨˼LR|wt0?H +endstream endobj 6310 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6311 0 obj <> endobj 6312 0 obj <> endobj 6313 0 obj <> endobj 6314 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 6315 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6316 0 obj <>stream +h[[o~ׯGwNqE4>}—vR;^f5#;A`w9՟޾9ǫ͋7޼^>~qgWv0Qò?#I ?OXA SMJ, ^e8nPu|Mػs1f`hWwW_>0@Q40Ck"1]\%fw߼|-z.w08ް|E8|a`xHډ4^>f?ovv AF%8eooN(G#Fg)ZVG EJGic:CCs,NG5YD5 皃V CO66 + |/AtkÂb T%fF٪h_Ŷln7Fh7rآ (3o=\1=3d@t=t,t96wӺv .|a d@4I eT'1RY ẑua<^oo Ѿ*CГ av91Sz֥:Ssbd,i[m8v#b:I x!05j'W>M =]{2bYUll]DnT5;˰wV,bN4T~?>!(Qχg~n7ۭA %e<LZƝc>,cZy2aX"@ 'Uj Y#z`;! +Ab1uʕ&C#6&$0Vd:3<ב>;,4D]vzvҳ:O!uHFR蘲тUFd=+9ZLkSD'Fp8IW>Df`7OO:a7SQ|548գCr,%@"طPœbhGj،Ը"5֏q_YŻځ:^UdM{z"Գfb򴥧m=p'mw=sN[UMY(mxmRgmx:k[{m{ܻMte A=]i4n?ҽvtoVtq,nW|hȧg $ĄWb4X 6˭{aO0h蝑&Ac]8pH; 9n=M[\9(Od< z0&=ޖ =& Ԕ{d2W|'͈=LRŰc*ZbE +QLצJ@ |~u.7ghTV!pp=_N1lVx~}ceqk jc?zs,Y-&JWi$wiM:Bgw ǮXXC?f 2E2A2{Q^}O[Q=m{w vwkf8+xxvzY~mǛO7bͱ^ʝ b.^y +ԢU(%CY5<{(ugs%okY5lqabRie:z/6٠')sޚiGdžB}VʝI(1܍'%~ ~AEe,}w 4*b."PzfuMmA4v9 ,㏾]C˘ĸW;S{zBcMt@6Í/^p.R@w@>Q_N^|LL©:y8}g7pԼq^q(w,ؽ^mκz7v>B3Ke/Rcf Ez[ +pں@tjOFǞc\es{^VDX[mXmoW[ú$ e,:t*Ye1)|a B\ sY>\J|tWr~apd;h~S\7%t )޺6ʗA]mJ Dx\{B zwirabY #݉<5Hfy*mmIojdusKtN5M _EK8.j7ܺxjSz%߷nv|ܖzt^|8MomBy0ڕp:8tΦ9/NGw9ݮX8]?t2t2t2t{QNWۜnO[9ݮp=mt{vvkfN+xvaBF~C/^twy!uije5lG-}iY(m9lzm9AGVV[Ni뾶eۅccov!~Լ/x,K^KK꒽vC1YEC ?Fv=j[򣖣ڦ mC&@R5 tEKᒘf$9_%1jˌR7"xwI_V|qW[› iss`߯6o(D\}oU&¼%4F"ueUࠉ+&tӧkD!wз +YYv +Jd+E%=^L[rYQFE8Ztد4b +jUP-FN[Њ'zR֝|'P̂r=BoG +endstream endobj 6317 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6318 0 obj <> endobj 6319 0 obj <> endobj 6320 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 6321 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6322 0 obj <>stream +h[Y~_яItUpi%'b<<\Ɋe>go f9n^w7 N ~<֕R٧RF$>.sv㜺¾;7ޭyPŨGK@f`hpA}QzޢHPyHIf2g? J10˓>wwoYӄV=zf87w=վX@y +v:I ۿ>kٻ7޿~ƾ}C.?xCiM9YB.o.s(~"[HQQ&)=,4% P |g#KjB  PAǐ c`y<Ñlϵ =L/f5Mn5XN1s;D*[hV3G-0H;zsD12SZ0"*9x.*f Oz 7Aۂ"ꟴFET„PocG ]-)dPLJ +4ttpV;;O' +tP :o#qhpFPJ)uX6 qfpT4(+8j>lx3V29T+hO8Yy8hRCò*Cp2ѕtrNj>@ɖ^;<^t*_æ- +˱> ԤO$zBjt$lǪRVuP[ڷIMF]( 3vCmEoˠ +tW\ѧuV1CdnUC;Ltqs&7]%,wk]_jH$كƙH_I5 9Cuۭ6{qvP~kQ::4m®,E0Ù%əB9S.QKHꆊ9<6GN+>l_ +15e ;&{LF VESШ'BB .&u)S!ŵ9|0rSDaGNec(˂l`n6b@!8n-CufMbms t e˱L|om +߯:w zdᨫ a dzG=䢩)ox;d n܈ rTv6}r{PcGP ؂.2l)0Onlb8Yƪ`)"cؓıEPElw?6\}X܍J'~ !>&Ǥ@}M0ңXG~~!հkh c* [qGDg@o@.xхw7dx +50jFtL3R5f= a@?;-i=}t>v9I"+Vxn>Xwp:5@c bSʒRUӮ}U r"813XeYoxV2ۋX!xG%CB%J(nzg}M8[n/tNlV_`\q)xb@~9 {? F]I/TtOEXsj'#^RNJ<im=M#mԑi}-CsWqFUjd#[ TXHz֚iՄnkY,~? +f +tֱ!5{7Y.ސ~A^7ه-z"2f qW0' 0tP '] FpgM0Uvz @ܹECoyC o@=wMe1C?jl$!Vn|~OձDlwn(m[]%.+Vo%q $̋X,AUMQߪ^ ClInys ֲ. ־꠽tw& @&\@4{š+O\QYMsnI==i%GצŭE4:-Sha8-<`/an>1}-Gsr>&(TUE}O@]WͰI|q@Cۧ&bY4YK厌*%q7Oq#Ť_0ׯqKDǸcל0̸澍6aۘqoch9¸-kΌQo{3~ԛI̺~82G}xGK{7óAl7[b}lwx_J;Ѝ`=9 '(ݤW2Bfe'`pMq*UqсoFqQ l-:ܞut^\kƻtϼb6PDE9%K% Q SПinc B+Ȋײ($unT +J_ZPѭ ѝZ;\c}IW f[Ao 18ZJ@bHPC^n/.-l@f@^'lVC6#שDy| +_2/7ebi\{Wʶ!5(XqvƳ1;~M4Gqt{y`L;.lP6F"bgwyjεz0 7ۛQzN,vw[Ni?M&b!n+P~^V}EKDoMzMpIԔ97f˥rs-qO=FnW ˜k&7# JT}vf +ڷ,\/K%^ vջ5_.$ExWѷj]1hC=UvT:zZzj+~]y?VFSMҕ3P$:9ޙ~$.KETGnb/?dn2.kw#D2F8Ud=Slk*sj ܖeSe7 Xe}}gan}#뙫딊-\s+=jꪣ8Ρ!/]O;5&7Y1h0ԊDȂ_ϝuˬQm_5g]ణ>9g`۫7iN_k+w=%rۃ'F#3xGAyHs(ruCէ!ʌ/C*@dc߽-9wm (! 9ްB"9dycs{{/4xWto/.mHu5#E +endstream endobj 6323 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6324 0 obj <> endobj 6325 0 obj <> endobj 6326 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 6327 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6328 0 obj <>stream +h;kǑWG2g=AgX YծK+ѿz䬕"Ul^~xnwnt~{?o6/_[սxyuqyu;]^zlo`C4~n 08 N:a5fG i2 3|ޮiJfÆkzMees>ߘJnC3]/47 H cG;YФł6.v|ڌ6c -íQ7pf0O!aDf Ԉ(+.wN\̊|"mF߇8> +dŽ]h;A:zy/Cw+ v(NfUu ѪF`n; WwqaWO=ag໧L /T4l GOлvěNچچںWI{MoU?-Q'ov08z8i:a"Rm[֐ k`{4H 3Ts`L,=pR}{<2l4D{o{$"-0ꘚ0ֵ {;t{c@I &BO-B?m5 W +r>? +6p3B +fY)17JRh<g2  +Nۏpr.֒SA=qӈۺ@^|[Fx&YD700ОКk] +4%|^31O[/aHy\Q#;Wc=$ Xq(xtT r B$LL;/'t\!P$I4$OE-P<NnXtPiyu8Cl쎕Z]?'.$Vh ՘ 4{="DvkKY1:0|Js_ېUHm# ,+D7h83|.} ]w=1.X<@(HC ovr Uw7H78m(ANb&2l,A 5Gscx$D& AD[*|vޮ"fJF:=)^@=W\vyB-!H;@G9F7[E2aqyn'18n  JG"L +9 p3i%3$†44mo8ߴH:b`nٸhXql*\>$g Nc%ԺҲוp5ͭ,'y,NܳaOtu +,XthεU1/bpnH)s2rH*qŴJk!kk~:_ J7ϔ;ؙkK+(}=f0;a2aM} ]8snk~zFäU2C_dcV!TZS礸3Ȭ?PKrZq^jK$pm#]ł_S/ܪɼ=!)3jP5iDJ0|i2Ch"F\)1tcXZ[B"u56b-u||*W(acIS]JR2cImX[rcFv-nT38>J F{+F_b}}' g{}v<#O)|+#2:Q_VmhD$R^NN +^U3 Iu*Q }E#+ j(Ρ֘U6">pخ$yvXLAZGb1mJ4JqIYc!C!6)& k^]&Zpd>MEҶ^Mf~BgZ+cc(9l%+6%o6&`/!0VTY8>iL!;2{d_4fEjGuG|nmJ6a/ qܮ4@VBHV9-N.Qck拶-^6]gY%qU"/?Fy?6^{?H}\URl˞Y+_]A F Zj\g_xnNAvӪ)bjg/4T|&ޔ=];yUG\2W\^:GT+<:WfPA$()woC̠.릗ҪdzS w=;YVx^M8mBѠ#?Xҳ kƔU\xC_ Ol Rz fj,m. +s}mz_IQ 5̪j ;XF_ X_a}ݬ8pfw3,1C継; 컙6%I SV:R)#wJtReu#4A-􎍭FuH2%\7; eͳSQ"H:yRԿRNX1q + +&ƶPXc}.cts\DȰFvvf&rDLܒgS==Υa1tg.Kй}o/\` |6iqmQ5`̮?fg+vh+M|vw9忸 ᦝq?Ѡ(p~\=>,Zj>Lo +[ h~%R`s2'w`;/%]z՛-^,!D(/^~Rი.۷߼@ț☪kgV]loW|`zxޏ2#M$EX\zi{0/?BS/iE_v?M4FFp鞻^Dθx-{ࡷܻO_xGb.u`p?{FhOO[^gSwJ2LxvX#o bԿ_B`# Jo }ZKŁ mvXK7dL,cBGpu@W,6_a6ӓ_ TmQ~ZR&%SzqyNr%@9IQ4Nfiӫ%G\'d' L/Uyp1%/UQ2TQDMs4Y53{B~s&)?y9A97R0mb3iRW?v'YySU~1 +5gEif ӿ #%-! > 9Ε͋۳ gis 2WrLz[dKƟVx֘M5{ Ÿ_Wea;)1^êq}S7-]ʃrIJr-lҘ1\.}լN Ġݹb]0(#?}r5>nH L#eZJ2mG:EҀ(Byd3}}6jTjKQA ',R6Xz&dRVCoeUy0J-ztFwzY u8w;/ +m%2jA۞E՜hPՄ +>9P.L}vaNUS~iM YT3P3ɻc0XRğc"#Diw{pevᆿhv?|{/kI#@`s7}p^}bӉMϏ| 6 Ǒ;U+N"N }J=Yk EmbD gT0Fyyz C>۟'/D`ʏl9p˛"ևD;Q_r AA nyw)ils'\p" iqiw"&dPGlt +endstream endobj 6329 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6330 0 obj <> endobj 6331 0 obj <> endobj 6332 0 obj <> endobj 6333 0 obj <> endobj 6334 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 6335 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6336 0 obj <>stream +h޼;nIz$`ebvƻ3=hisGGҸ~#2""eaȬ82#Vn`0^*S V+,c/ o,sWUu)]u\H1 +ЛAQqǏ LhΆ+pcyXLJ^(`_EO \Aǵ"ЀqHX ,ֻ3 ;?wT!.ovgLajv胜xo{W GԜGFmbmtVsA|zZ",ſ'zЄNzN^HZ7pWfwh0Bk`U}|BN殺,*hŀ8`*o rp"LAT0NE Brh*X@z0 9K 5| +:[ #D>ӡ D5AтtWo6rSP + +W:rd^āPFpdE,9WGc,AMǢ@ZKEn8\qVDaҽ7.WDp(.VEP(;*KjTRݗ^tA6^w|Dy)L|Cȅ9QH?tx0eV%ɋpu,Z˭("FG;+A1`zC3-HpPr_fm"یUMTDaYu,q2uԨB]2rٻ*<@IZ:4ˑQހ@`)ЏF Ľ KVy+ڂڰ-2Ll9%20hƅUat%,ZY۔ 9'h4ޱFwUdУv{ (FC t޲%WhJ^Z6r`!p 4\"-_ К Q4ŃR``(\|F7B$3|EL Ce"o@PAhF +H}̃ɑz.~/#*FsV2ӎPw̔%n͉ܼ(C,>׀*T g90Dz06BUj\ %E,yʐ +֡Tޱ׺`]޾1SΘ^HcK.7P4$s0>ѡ$m_ laxpKkBUҿ$h.J!LVU;i)J);Y-)W5HjUEHZ+2D#{,RbH]+NBun-EM-r `P-L$::YX5PmSW$뮆O3bxS .zڡY,'706$|R3d}xSSuFt C`iLoL b#12@Q x_h<21o Y?ՌJ!iH@,l!!!(MSNB*V]3fL,Va-+mUzx2 YV}xM B=JkI +#N +OIHeЩ$dT561YC.SWVV].m|UɶB 1Dxl_w?΀0㶻q]7G9{{\}00+W:"5K^~vny3cm6Pf6nشAU NFmڶ>BAPHOP<ɱ!yHT|TO.RVaae˓U㹋b*'^ԁXU[S[3ޒMIICG|i++PO-]C]5Dk6be^A3bJ|X nM|Jc{DaυG5ϭ䇢޶Iҗ΀3G8PiғEեBn+5ۦ,ՍOLSZ5{|F])b#5YMMѠAx0kt1hsI^}W!z*dRқeAڒVzDY"Jxv~h{}X .~ \yId:]iêڣ&f>\(As*Lwƥxh8+^X"kCEYZ8,nnhJ∃qBO\5cbru+PIveO2dL|8f]D4k3W֟[+t#ɺ$ Oi2Oj+\J9^}$krd4*sE"09=(J*]AI2]\ MMd {98NiAf>["ڦ-dHicSʙVeK{Rd,tׁCtr[|(5J.R,ͤi &;ΣQ"RK-x uޥ3Bf梙C-GN+3\e +, O܉Y9dP/ah?;ANdG˷ZpgWުu 5dЏ1ɠP + /g{r +Dx1 +gZFf-Mx Gϰ!rkC7zEC t=UҤt lo,QbaG3B x$v~e5ӕU <,*'j2:u9&ﳪKt5J]0!_|z.OÒTK1Ʒ .fL@~3aȂKllf##FUmQ85'5>z_bM4ֿBsU N4w&G}-XDUq'-J\,*ׯ +HֿߥAwհ̓ɂ6<͉î>(|Q=ዢSrR\&vI{ i}8HI>'1?bX0geAx?GO?6'@OsLX i.m[c'K_/@Gj8_[~/"~/э%mXWa~A +ɯx_=Ys36M.w@~%rYeH@۲j{Lr)aȶT'@`Ai2kVlG3"l<8fuKnyof O{WM~n?ş5iEim#W77\isH2p2f>hpt8_^\A%56>-̶?g0.htcy:j'#SrGcHʩf7~">簴!V˒G D3B80^d)7;1#Ǥն9KENվ[6nfF3~4W9SU3GϰЇ5O'Ϛo5k]yJW"O|`g=#C@kY UKd6w7WTq?G?R 2xȯn11@X c~>@`NI1dlݏD-Tw9qۙ&' +7EWʈCb:^4>xs42F*K +I=,ӠLiHVf?̊m>0yxwӺ)^AtE9(*'{[rBNԹڊYAJ?[\rJtk ҘTzZ)PGGc#37wӤlNO׮]#YJ]?Q YO\tB ߰ ]pdb Ws4)N ܎-{SSP3ZAN0ΕM>p`IkCV͉ y)Cl[CZ󁡙=t-b >stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6338 0 obj <> endobj 6339 0 obj <> endobj 6340 0 obj <> endobj 6341 0 obj <> endobj 6342 0 obj <> endobj 6343 0 obj <> endobj 6344 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 6345 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6346 0 obj <>stream +h[[q~_я3F1@ eycCnܥwG_SUCJI8A,gV.sxNnwsw~W7Gս{zu{us{;~zlo`WC +?^A0 6S}J`8 P?8wƆ#p4y XZfG݆;z<1J/oz{.3=z47`ЏxB#^1_tCŮfǮac<_nuNϢYMAơMqj-3^;>܀rJ*zӉAޥ_aH?RY: H|hʎ]h;:z͗OSwk=\HTE2y{VpnoOO=7_|7hUz>߽L0BuN.&B7}H &zh6M*Tֽr6vݏ&@CT 7vtN4j`Ta Iel[N s`y44P #Ts O,5Xpk3ZTʤUU bpq8s^;ܷ=^l34aݽUWWEW+^{] }ӃD.ӺNh/[R{nE +Umly`N~ |$? up 2*"]dxnHһ9^7Q*]RelьuER%=aa\NeҦ O,ߣ"KK_>端_@%Isc` V@XBIo ŗiiDPi;}xzݎ\v w>lqzwx~t4~:9YV=Çf6i; "̴p-x=nW_~mqi~nۧ^AXS|Si>NO||, ,7\yϷr l˫~-St}nkX馇 0-mNOn> 0`3*~,WS!dxsP?+޲1u.8@SW]X-4bxg0Avѝ3`fMӟAJY-&+K-W;yEd('nm˂v"$,{6,d/PՈ,VdidIҶlӘO< ?aa2Ku&0nы`*e2m®wZ5An aСRI6hNS+XϟHwzkD'յbs*fhIpI`r'gKnes2<9{<:>PA" *=.Oҕv~LL +ᳬ:>Np_ѶJgq5 +w!m8ԁXPR5q+qȾP9"`tH*Xd+YX FQ6[CObtZ C%,^d]J8[ a!o$ގ!jPE +y!iŗj* &@l4l{ȧcV*,63B&Ȣ*[͚)+ IHTʷ<-.ф2D,RoVa+ N|70R;Yͅc_YabѮUrV`ȕSyz(0gu~D3=ը3uЪtІΏD BoD){{/S(FQ@G)L!UK:'nFtoVt]+ r:q1l6p.GE/(%):ߍZÑ G:Gq%(W'  ܰ@1(ۑDSxUn:c.SHU3sxa:fBkCn٤&2 +Z* 1y*aFQ'd@$OR(g,Y*[:Zґi+j` ,%c1}mcE#eȐg(b:d1]7Bc|d6lug@H%-=&_8V;%Sת 좋)<9zFW-oSQ H1웍畐0HaL\1OtdPoXPU:W`23_KͨOQhW-+z'VPЮ'^:]]'g+U\gH&K傻F!XV tDXFXᬸpi g+Ñ^EF`@~}(֑ϑ/"5#5:RKHonզ;-@^2l8ts[ 61f { E1dC_AÇ[`]`& NB,Fm +Nzl0~r!dXN$~;x%?^UL=UL`eג# ϵ""&JL&/~3'9w¨U'ZqJL.0϶ C4] io% +|W/VYIxBJͣ9q&7鼔EѰ܌L\>ąߴ4qkhN6fjJ0w@ؐ "cNZޮ-ρϯuN_ISi +Zc +G+8^2Yk3E{GnЏR9Wwv<3d!S1-9qA >1z͌)4F~*.csS=T&cջN@g[ύҘ:YEf;c)4#K=6}q|Tvh`WG)~ +endstream endobj 6347 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6348 0 obj <> endobj 6349 0 obj <> endobj 6350 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 6351 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6352 0 obj <>stream +h;n%qy$ VNDJ"d8<<\3.-Vw6g$X_^?/g<凳_5||>Z j;KҠ}4Z;4|<ۍӤp}}{5M +΍zUDC8B%n8TN gY?LY]~muC_«1y?hh"C u-Cui50*{X8%л9@y7,lprN:pe\:82ƌQ`_ A 8Y4 w2H !V&h讶m'gI~8ڤцt<; ӘrG?f9B.Ჺw3i2j7zEY#^?m@h)F/t2\~A# U|RM楻4|-p\va7xm?<><>:<'ópqJVm|pyR}pDݟvz]AچچzTI{hݘL7! Ge=M״z\ m]Cz4waL66Pq68UX{z;ƠwЩjF0 7po|p#icnz&Je,75N#HX5>~ 'N 9;}Ӓ-pP;EӐ扊x4҄F2x HX( @/𼢅 A+jдk&x ALSS!$6&Ltx;](t'=x0o +6l9$־!ϯ#@Լyh7L&(?sJzT҇ @XRzSԵܧlX Ϛ&bfD *CEkҥ +xݳ'(Ȣq@e/(uYi6 owE +#*P Oj*Vє24jd+:^ۂJ$Z2Jԭ{xn3@rYgtNpbܹHƙeKqy&01P3 4j$%UmWDF\^إKfqoY-A*DAܘ1goq ^^~-Ɩ.$rN7 "Rx4x6+ ] {tIWU?u]o;"{b;rZ#z%B%bݙM-S +oXQ YK +1't//.N$)lշ`enaeguL5Uu\ g[Ư0:d} "*_o=A0n'w]atm%HgNxØ#5\,zA-o*Q%aPg(3 H ~ذ"Mmd[MG,}>+8<|hCJW& + XTi&4Zn"q!ZY1kW$q (Ak ' xerk2Ш/@:^Kv/ ~ +;@H^>6.Uء[O|M9HTi i+CʔNȶr [چ-h+IBDz +"tb/jQ6櫬|/53MbM5nRϙeEUzQڤ)XZB=%63@]:]BN?C*w"[bfGfaF0lц*%+)e%pq^+4(6첪oZ6E=AKjDO&OxB*,AprdzHgNebڵVi{ %T눂MVmIX$ǯڹZ5Z*f[K'<6] A;֏y0y[j@AR7#-f]?}|j0Eʨ9 f|ðN?RL?IxE$\[G )qJ|y 6%8ɽONAÚ%ja"+ș[WCRٛa%8h·±w 'fS>{9İcBY!W\T,{ۺDQu61wGZCu_Pd*aEF {0\JoΦWLa7.OY: w +G/(VB{sz ꥇi޾(aBD7.S:8&(3+mLbi=Ep춼 ɔ˥Zy2PY +U1(+x/GWR.__?_s<߷a yo|) DTPO@5C9x1rA_IG\2OO/?yӧ#:?>Ng~w.$ }y?_ŗh[fß\ ~;FQBQŮ 08-;ݑ{5bҤvͬeqs(r;XPYژT$ VpU sɯe (Pݜx t YwdKlLܨzݪ_+qJ:9耧e&j(̴Qg.ρIBN0YPr99~fBPF5e+>|tH/O2- kР**9\pĔ,1M +Bڸ*fI3 $DI1\1əjSOJ$o8ہu>z z-WUoSm&x"k(f nxWE2G2he~_\Wc_E˦buby\9!,k4ndo7(䬑~'~eϻꏔ cĮm87IG:E6v-ҮkMBx5m|qp(təK^ rsoJjU.oDhϳMAj$~}<4\#6ڤDku}ͳʎw9-Hɫ:[^e؅!ZmRlў]vd} n<I\$9@L̈dSq[5lj75)I]EiZGɀSgQP`/GmI{*vʬCu#T/Vkkk&%|.PK(^|[c›R=l4ez40RBV_5eJZM79y~Jm¾ u_k8_Ȍh -&/ c}58iSu2 QuT +K*{.$Acdu me|y +uS(%fJ c&R L|b߾,lWD{a=P+kt'Ω(FZZhS<=))hmj7mұʽ&oR+6sq4#Ժ: t4tZ_t\&v5rb7DݐF5tFk+XY-j&<%3:lrWyeq9Dg'ڿsNx^/"$%W5 Z@}X;%Y̭tU{ϑTqA{[emj'Y +[6Bk'lpN(V!ǏȜK6Lc&٦l3CkJvvl՚xXʄ+_Q%_׶M᡺8eb5 aЃ TTR9`׬ۜc[+립ᬅ ˟+(RW!D1YyFBJ#WzJ)NzKcRYWj5 +ʈ';tP ɟ? >stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6354 0 obj <> endobj 6355 0 obj <> endobj 6356 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 6357 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6358 0 obj <>stream +h;ko$q+`Z7i  '>?94 ʗ߻^|tޞ\b3dbɢn:w?ܿ>>/|suߩǫ/n4&?L~0j?`G'3ܽwW48qWy?M6NS=1@sаy&蟜ݨe3L'~{S_0ṬG%>)NnC2},]ۛƄ`'!u)SSL)1'P$5fxDh7z+{ttJKFaBY4tF̵5 watCM2[aU#(󼤿.oL7-edm}T]?@UN0:XSFvo Պ@Ѣ` GT;>iG2#: g+SeŇj ։ET⎟ILaU1QX !=3EW]ʺ^K20E(ls2F;cH3w9WQ2]NƱ|TY$'5H$RY<-†0n6Ejn"H$IK6x0# ?-lC'@ dMٱzVaSіxM*zC&f ,9E*ֲZt斬C6˖,XWٮZc $t-ˮ'ɼ[Jyyr,xǥJx)Ox#7W$_pIyk+H& `{ Jm*6hIҬSM,kfAfH2{^*Q}MsPV\yVW9So'ɰ +Du,87|=tXx萩x wt~\.:m9m3툎\J1gƫ " FBNiDS0}/)ͮ#`a|M:5qckn/l6 a;N]WFx!'^lƯG[FI,- r LbjHLw31Ml`S똞N|->7+.[g;/9_[[l//-674mIyc6vj .+l }RxkB/^ lʭ^A9KD]Bo(;WS9y5饿xx~Xa.@fTSs|T|ͭthg%/#,G~1W +|+Y.֬ܮדK'RHM+Z78kQ[~f鷩ɅLFʍs>=9 -Zv>+^8vyC,^0c̥ +/:;Q,:M,)J4^ TUH1|׆jהt13Ez9^MV,Rtrq?s/2;fOmM`^d.^-k)͍d4wvwYL2r‚&֨cK}|HI=3.*mk/rԸjrnu?JMvyHɽ Ϸ# +cbfu׿|~=f w7` tׇxK\ϯÁN737>><>h P䯇_pW7zLo=#==Ou=(s8dLӟ^q׋ z^ƼU*kF[a<z_p_,1 3Vf|9{ޏߌ7}@I6jS.qijti/|3\ +>iieoBB%.W4~ԥl.,fP>?17Cqt%咎Ě3QH^5TA[]zRQj:#eP̱5_. eƇ+|?%CEٯYI)$&]"3vd;)r{7gΤҐhʪKUCRlhMQק#.{Aw1.d *]a\oG,S YVp]c^҉TvK$aDb3)ʙ-wN4A\ȏ 0'5D4-%yBc +*8BYO_;*G/߄r~o#>ΓfhQc:=ylOΧP[6v䷟LX~=`U_7%5]L^בn/7/OPC%xqJ/36_7W ^"iJ3ַPD\Jr Y\,+rǰU<[ 5oW\Gc*+x#7 2*3r.ydg%X*[K xK,RZ[ksrsmoEʭ2(7q Vvs}rfnHtcU.M{]-\]-\Ei++jX-;@"9Sİ= +v{b?X aUtJ `\ +endstream endobj 6359 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6360 0 obj <> endobj 6361 0 obj <> endobj 6362 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 6363 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6364 0 obj <>stream +h[o$ _1V-`@r + д o>%wN%)J#ėqERgnov{_nܽy{nWWLo>^}ai{'dBT!LY+紝oj7X[?+z8,\ʐvH3@9zP R5k_Caip [fxu'Cnc@k 1,]<~np,zꜨ +diZ¿* bѤ" bqG0YF,Y߮juaJP)Is9J$\]*e;ҧbGN䥹Q̓)Z~@(qU0Eh$=gHzlKo&MVM&QL2߿={z#vw8$]H7HM8M>N)Q3~wu=߿p0}_} #Li0Btxo6F+{qQཔ7*lmTKNj;'.ڌ09XjR9X.|Cj AeʘF2QeZ) rYPoR XT؂q\uۨ@b@6cI8EFʭ &HʠO$oXGa=e?hw@W3:Z.vNS3-i2,FkliV[ekim˴#,R])#{ʠqgjF7E YJ\lEL+ؘJ> +^Mbp2 *XʦRW +r$u`ѻ%6G(Mk 䲊fI0jyibJ [vQkƐԣb?:H^y{V(( E{.#Ptv=\WIH"fX22+R7.2SdX &y!Qɓ"ׄN=_~ +Z@`^vLty?9G^cn&0 8pµ-@3Ya~ K\Xn(bTvKK>r*Sgfcg3eO2`ZՆ!g2/QZ`GrUb\CaOPXuBz۱5XxDGcs+[y,o 4q'0WAZZD6T~f0sAl2s[ q E/LC A+Ļvl1odj%phcX 6-25,icGcI;^H}ў~x>jG 6gP))ӋbZMxa8e3H$"w*Ø69;2,4ؓIݖt= yj *] $QZlC"qbe9+mW*ܠ<$nJ|m*ܡ8QwgsGnu !+}ldtWWv[CYq!hM&*9м5ϸ"W#l:ݬvSakmFLpCR V8)W&C(N`ۣlǺb61Xsߛ]`*=*$(=WeX[y߬q?z1E$LD1o^ Rw1JEA$^薂]Һax1d xe@ +v(yܭ8=u1Ttor1HGjtu3a!9C-zjVmܨ@^NSnrIl&ʧ arkJy W1qmsK(sK45UJVi*MXu20ލ(([7?TUx )3}+졝*M8bveb! szA!*AcP،Naѓ +ФsZ.[{#w9b;Tc;bqa48z}]_BCc=|6 ki e1轌=TT&,RcO0h{()`ƙ5@3rz4ԁl!s@ͽr"RBL86=c|! Z`P*stXD2n>{O1hhﭵMpC5k,iq-JGWs+q&b90GA#Q4l#`CqQ\g.N7MNV#<ň5|,Hv %@*}zM/>ZU bPyƴLG 5SsY_y-`dTsԍcK&3qi o&=bv5$. +&8w&2+~%Xb7 KbG0΋J<;1yW`FWZG%JOG.Qf%zɠˡYCET9E1^l/#AX#ƙ|wZ/Z!ʼnq&[Z/7N,OJO_W=]zNɿ _BԵ{ڥKQűsɮIS2@_.mFٛ);OT@͉R ޝhtqbz-t5sA'Oq˝^Fy숔c~r0bM<0)/P#S )\~ v^m>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6366 0 obj <> endobj 6367 0 obj <> endobj 6368 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 6369 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6370 0 obj <>stream +h[ݏ LoIJq $w jtDV|"%-4GUXM7ۛ_po~O߼ϻv7wwv2ݫ]KG16N)Mw?n^#o-e ~N2(x{,~ f@>,5? QȰ_&x>"mC-ܛr%@U{ҎcOA+=n۫jR\Ҡ%1rovN ~LfJ)S)yz{22;,#ba@2cIDaL>J/dr fN^eBX_l8M) 2 {;_✧\'A&fc7w/Z7 |3 Y<)퟿~P@^J?Ëwo߽Ço{hq: ϧ%N?0SyH24$db9?lRvTvT A{f%(y~ye:B<avv^%rxқ XCmCXhK6dA}ne0y7Ы:y}3'y&RG9:@3!fjaqmlaL k]_@=G[Z9x.*fPU CY > mA#~HN%L; ;i61N(Hbޠ"~Hv SÝ''7De.RJ]fWLEԊPL&̹x; ms9aw/0oÝQPN\F.lJBƂ H]nYA +M:}Jf2"͆MGTQPPC8q-% -X*`8`Ca )x @ k-aZXʞAWRB*M!dKzoeũJmAf9^OK~FG@ ,>J~mw/?5`ܚ"xzu~&/p]aᄀ@TNzG{աO($o}O$'ت&uUjr$BaJ"H5 /QpGi/ncjs`K n{VF9`o`,sV%snc2 5\*x +m $2߄C!0]y5:n˳uB nrgnc7?<ђQ[ Ko1%"&[m =@$>]ewt GFpWDXݬ eDvVx< 8?0:shL9xI[sb7ޏ69's +@~A'zYD>|=l=\~[Fq_'쩀]3#?9Tڠ% +!h0C@Նv98!xh'x3 ~ځ6aaƒh$9`QcE](!+؋sʾSE&HgS<{B3I(5Q}.Gh%GAKyJق?fva`{pT:ǞG0h7\9Q/xؗIr>OkQ T_$&)r>k9n2C~eΚzU~ߢQ'>zo_ol/=,6b=CbR?u:0hdajkՏ] eҵ+%k^w\X9 O4;%:q)616D mcoO ߄;vѓu-a}|=f5FE}7yˡ/0!.+,lZ]=ә-!vc KbgHu~~O$_aZs w}]LBOL~Z [en ~Q#lk¢߂ŞTZ*zjm7bEqN-Wش\"b=nm}'Wo5v-س\F,Mm{b8&-|ɤqRo0iWI-Zo=}%r$T+:5i PP*LW2M}oWl~/`w(zv׿fw7،bgwY(uĭeDOģ\kwγݹP#߶>j^!tn;™51Y{2}7yR_ j+"5 +뢴(`#V92g΍OвϢ}ƙ  +PO8OU)["--'Gr貂}}U\}Bsee1>Z.^p97tyJwzx2o.V?X]~ZȎ)7 M]a8ók`8fz>VƭEMUZiwߦx^Kgh.TZYܦ(*g{{XAG)oi/)!Fp`f|#l񧟾1Ja]g\>ץ8|k `}g\>7`~8.WPua]wWuq]wu:{^"5Xջkz'wNpU*UX;e$&8\F$jGѤXqS3U&y`gmVQ̛XZa!v1)J#Oz6=KOnrK()_ otREtrI"9+NK6K*mOHJ{BC}1. +endstream endobj 6371 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6372 0 obj <> endobj 6373 0 obj <> endobj 6374 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 6375 0 obj <>/Border[0 0 0]/Rect[162.3 513.56 265.08 524.72]/Subtype/Link/Type/Annot>> endobj 6376 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6377 0 obj <>stream +hZn\ eGtE t=k.d7طGJ:G3m(ER$%=]o/r7ݷ6Ѩ77QF6YMʆCPyDSͤ^oz __NL?w[-zMbh >ؤ֤hȼ3A)e90OЍ@U^C#i؉kYwelL9C]Hji܁ <zx܇ʁyZɨN9"D:p K8C]Uo#EuⴿcS2IirJS9wMpStOAǎ% z^+W ʹҀB`#_'g'&!M։Mp +e6Lv7O+;W+~{U)D^; +IRD3#\yϏH(4Ώey."F#^Ni9]— cS82 ^|CE\\:x[N[$$QdFIw> z<ᶕ퉍v8hOF Op񴌧ph2Ӓ+zb]XCaR8#&՘fqp3'WNjLG$1N\5,BPB[eQ9.LlŸp6p5}Gʈd,|6kȥصf5|^m oEJmwjmdx.}H8?*LNs:ltjӉ"tSlHPJRYq֐l ̣bV|-5 ᘲfKeKaf8o +D~i}TO JӂHg5 '|6`Oγ'7n/TpJ;&Ž12].ߢ𸟤Puo&B$̝@‘aǔʚJaȷDZ!%uZjkȢ +UU<Y? ^S gqUW "*թDݵoc)+Q8xM{3И5?`hrk;vįKvSG.V~Hj-4`zv-\2˛ZULt$j:j1F0CKDQwrySķN/bpJk?7cmTJ'M7okF4b˝4;,˾-#NDUTnDhlw] L(Sf'i|CN\i& i& i1yt`:P(;pXQtfWiHO!c0W4ם@Jh~{ZXMmdBJ?PBΘ]2 ,]'G?*oo}*?((oqq2U3V0U\@A.v ^OBFrH:qq|Y5('Oŧq4GG„p:FǬ`3" yn2R 0, +>c;,Y(GJn?#ϼfraߓj>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6379 0 obj <> endobj 6380 0 obj <> endobj 6381 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 6382 0 obj <>/Border[0 0 0]/Rect[162.3 717.62 212.28 728.78]/Subtype/Link/Type/Annot>> endobj 6383 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6384 0 obj <>stream +h[[$DZ~_QkY4+`le=3bJk2{fVwtty8QW##"#}O^ϗO￿g)B\vXXV<S݅Օ@á֥\"Os9eCj́eWxΈ3Ԭ #|[KڬVЧ,WmkGZկ%B ,em G2IՊL&Y+MimZ #}}{^$rr¥|"cAIB3볱x\#Vy=X>m^Th;򞊥H+j'$y8x֭ +X* ph<.lH3-gThnYXTma;'nXMJUj P +ۨ V2I7V7l*QYۧ##L ,>2J~C߽a>}%ї8sxp_=.7uj|W? jo΂ &p<x<(JF#ci3*VA? 'O"qM"qfrzdq˙\daF{m&, =9򎠕P`~_GhO u\%D*C2<` .j"5Z *"t9յi0vKYϢutS%.UN&^qO-6{;T ]5*dzEa_KgCXhwY:`%mϽQL!5H˜N/)ϴ:U.m!Fn `׽BW{VVUDohA-&"LeA^=SkH1EI0=aCW Jf8Mb +<ζ,?waV]8kGx]$Cs㲘[1`Ptfp$~ޖ (lb{6_Hr|k,m fK0-Enc'V{x[!1v(%?f:O'{޺֣)3Cs6iIo^?!5t)x`lDqͷ'@l{!]3:WCG+'Ap:!dR TmsSh_$n=m=@c7 ;WS)Ndf!S8OE,&ۋ2}dmw}F)ptN3f;5y +o1(8>%F*kƥ]_o1F*1yObzQ4js$Ő$bu6 yD`~5@tYBM"\b"XA`|c D/o0¾^ mV3ϸE>@rS7J< ވaFTgx#+.`3*2(ղrX!vI$U'N5r(ÉT7I2@5?K($]w[3&zn7jśM2SZR@<}o1' Д@6VNu72P.LndYqꒊǝ Ȱϵ֌o+> L#rS1gj1 @Oa!ƞ\%zKOp (FF;i9yψ̳0ɠ3o*fRŠifݼ&k۫ʄcϟ*lsENj/sU46U,Dd8:BPO}!SgNjĉ4;"ʺ;95~ APĘ;hQvߐ2&! DWp v{Rz+lys911UCDia|˩heb[U +>_y {k/8FA0-[eB V>Ǖ({$&,f8N=GjUvNAxޘ?zNQWn㥶Q{"ekm'+q:]]Gʷ̢vT+f"m|6_셼,ђ#%s6=2"ݰ?Jq[Cig|6PML[MWG>2N@*=pIþyN|zz5s49 +%GwD+Uy(B+; xF:ٙ'0Dl yb%@YF~W߱Ηt]wb`&q_p!IC7Ƚ4avM@x+xE \ћHII zuEQo:[fwNiPO5RpI8^K̪ՀCG#tқ#I"Zg1k8*lq:F5w'H7.ڞ-*Ķ*\v!na8PV:fTnVֹ^7kfxNܬ{nVfTn;9fڼq2*3LYM!LHmwknMls`SQ~gCf;ڴ2:&AÛt s3%44k,pp-+5yވns[/55㜚!600y~ {_g2zoTm%S1쎺IUny V]O4#[٩+y!#;1]I; RRIYa؀`VM*ݝJf4zћqQ0"-?Yn'pd]a)Z߳3eAղlF!ŌMp^ON+X٘:sͦtż&9Gs^ƽ[W+vr(ia]?)das5nj:0PE['ĎЙM/a z,oi9E-:xHӌaJsg400 ]r|;_ gW|FMCQր:$q +]A-{[Fߋ@W37\O~ ++)7~)zT%̎g|T>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6386 0 obj <> endobj 6387 0 obj <> endobj 6388 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 6389 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6390 0 obj <>stream +h;iocq+Gʈ^A;;Ď| (c3GM^hȾ뮮/_aX/|_i{~l?^Ͼ:Rn04hF4NfzXYߘ1*coDD G;X:Al$|'h֧m'`pCQ0ڐR^gg <\7G [ 7y;7d3>؂8Fc2$&Nltl_Vl崴=Xtvh]&GGxa1%c@X8\{vRa|3q)϶_u-KSq$Ӱ 'Kztޙ_Pj'Ѳ#?&h:WD,8puL]sB/I"yjLSd4q~5V*dD]:M+4`|*Bl+ʅˬ~30R ŝ0V4ʢI<P +x :D#-7dEѭ,+,fAV$=GWTI +|Ayq̍]v/dۘ-){' +B)<,4fnȥ=:4պ|bL +ħcXbGFaX{mc4A5ަI[6;'aΐ,Xw .φ @}>?0&_+|"@fS$3(6epj.vdݽB# b3ܶ3p~l0MYV@7f]ae߇5dm!v:Ķ9/i|xjXA^=1m1W1weSb.v, dHf; }sOz{Oz2S֨rC4Jej 5)ہ+֭)-Mqþ5.Gk_EaDR 21cd~35oǵB Ǵ $^}Q,؊f9(v">X/ΫԳ*C7\K @\V?\w: _A~˥CyZW}D`^o?l_/x^=?~޿dp/wwt[bn&f8~3 fZac0l? $$5\4j ~a1`#}袊]Z8IQ~܀Hv;z;Ǒc nrw9l7XhI5c)hmx1| ,Q IC Z8$d_Glh~3*f{s,zw-bU|ށkv `jCqIAu8WZ}᮶igXF7LO\圮I9f[)׉5uqD# tW/u|4(q<ٴ`2X9ͯS$T[ƅB~f*yE>5%Af.J~5%0#8kav#>ޟjAH-8:&@q4TьXo ;Z*2ނN/7أ76O(^Wͣ֙ B=yS"3e|^C^X̆ojf\KIUD^ʩErCeV~)IfDSkBޱLax>8wfoG.93Q?%=ȃ}%3%<&<u`G>cHʪyǹ#[FM~D7=i)d4^!kՌj%8pԲ5IZgI -qZK:rmxGCrvR&N%^ѾS&ylˮOYb.u,XZ NG߷!{E9+s{x%>+U{WOտ~?~osߟ Hdi%ZHgWfپNWެzSIJvϏ⯇/ONGQ_uOi:Qp}"! +31܋?/CA_s +endstream endobj 6391 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6392 0 obj <> endobj 6393 0 obj <> endobj 6394 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 6395 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6396 0 obj <>stream +h޴ZYo~_1dm}b $A,#)3H[eߧ.؁W|w{8>On~ppx{|篾~?i~sIMMOSV(ʹӇRiw;hQJ9[9hXJ ҙ qފ3eGxJ^]UhLGj*(Xr~LV )|3}]fK^IR2pl0{7 N)CIhR )vüqHz'( Ʉfyl@9X[R;)n "QC8#?Q[őEĕ=4\kà{SL"IGPI94MǛ4}BMRIjJKu~7=rFp%菛܃5|yx z0\dU OOGXAYi8DDKᒝl{n6r[mmE2ZVȨ K&G괐^ Mn+eǶueѰ= AmmX68UzR"h|FmL>U o`ŁR t{[ lk7H:&}mijuP4 PUX +߁V|Gxd9%7 h-tSM'gbӠ&4s@ ++"NWy!4ʭVZl+ pL972 dbCmtp@s;6Y]&<. Э4JځښF=y#T +XPdvʬW"ֻz Wj!{9#mTt/#=,umA Xda|U?L',7粤l@w#":lҾm 4ҠI}E^ +-zpzmgj$gQ&_ +5ː' ?@ <>JwoG+: kY)X] 2y\öУbO/2V G`Feɀp){fXfb|\!xaq%ftsGZZb pKEp) T+[@ Y;r㸂 8eDz% l~@O( miVp\'eIB{!}'(P+4̔tڎbj8%^= #f".Ȫ/tYN,߼5s:6gHwh\3+2^LE6MMM2p !bl>ke +Rԅ/i;Lloq+Uԩh_DEBձŦ= lu^[H+h8O8", iƛ6.~xg\^IA:zm$g;R/0|}#JfdׅpvStN<<`r;xf~?Nٻliƫ28`a(`[ϳ2S$mʦs6A]4.S9z7;)TAۓfDu_R0ԝ\CTeMY6tS"Q 3ޗί7 9pSRfe%G UToA8ʒirњ"cfY~\WT|[+hJٯ̪`]y[(=J?iOb%{-W?~|wKz(/o.1{68 b=]Ouz:^Bi=KY{G?MϥNgRΘo}1>|O/!1/H0E/ץ BL)taq  . ɝ@NƬ\P]Ff^[t` qҀX!Cx 9޶P!H]VjD"[7bb`ӇdCƏȀHD R +eTdj " ,^;zq~^z& v<Ł XLbuyM?ΞKaWDuAVUu1"c|J`Q>@wg*sjpwuuءIM0I/_ʩK;(7i0| FLi \%A+a0,j23X{aqgVxFap.@Rg#87@u_!Ɗq{; $d|z U4ZMz%d!_{ ݰKljزrfe|]"ڷH< +lP@eU`v+zj{H2x4Ô4s.A/b}r_gZ޳&Ymj3P#fL̮Agk)`%1b J40`9ݘPd+P4Sz-Х2ɚ-!WIZ֋f6Us,xZ娎2R +HRiSݲ5;垞AC_1{NZ%G$W\He-Sx^ui:B]:.P(KW[n6qMjbOP 8rs%"+4F\:zM#͋j[ݵX]@:_Vf E򔬴U"qMeM?Vg?%-TpFeWUlq rx]Wi2u_\}G&EнJfղC^Ԛs-MT\T՚>^s6i+:mMS%jt\l\I\6S/BǝY}Z}g,?1x?ɄC._N>a֥ڹjQ"ڷyPz qsDJVZB@^ʿK +W H;57 >V|Ar󅴴f+Iگ‚ XYł7\r(?x8A{3x K嫻Yؽ|>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6398 0 obj <> endobj 6399 0 obj <> endobj 6400 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 6401 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6402 0 obj <>stream +h[[q~_яӼA @l3gg +U7OH2 ދUŪ|e^ww'3od2-_lLsSYf7=|[.?=ܠ?w. ojI%jMBMC9.^L{>VYwj'*ߑ^+%2qJ.3@#GZW2UR׋5KIZK`&(zr/0 +0a;Cp4.`1;7ghs%&hOkѰ{3؛K#oX`ass.L1y+LO˝p}\b0>9HmtoT1V`lL- -rt E>&95e~b2a62]2~f6#A +t6CN>}/ߦ0t v6/bOK~@20yX@k`{cdoTѪfZ`1 ;zt9"̔ibs-x"*< pO3X-4$ɩ 5gnzbC .)1"IbrVP(!сH P;;OF:74ʸ< #(ECTy<fC\4 +DS+Bc)sHˑXXA@l5rM?ͦ$+r~z?a·y 9+sJ~DaGTQZQ? Ɠē0$`Db0470r?#/BHl!|BS3;"59,Z@ep.XΞ]ѥesVJhz+p-nUzæ>x0oI6,Qwqrz8 0!v`TI\1L":"$97d6A0Me\xrq%:2U"!g+l@<껿VmAL! bm8h)Iսў"b-CW^D+ zD9yk C: ,wFduuN6]XPuGdxр(-dzVxxǧ +SQmG/tdnr5*@{+-?ia+d@!cLѤjvۜvkvڌqp;oMg.r .Znn e߇0y;ݚяrmDj:, )(݁ +b +dۂ.+&eyHP^پ3b`Q =e!FE}1A p b%&L9ej铘n Efʶ[`G}nX))#EWk/jThܣe$ q{=F2(n5NmT8z@_A__aphKEҏ'kbafCAS-`X0W:^UP*Xq2XiH_|7Kť|(@pnۓFE6ѳ` ֦=1CfiM1\ +Äʠ4p$͗X/A!/S{ٙ^Ҧ#ƄUvul*/kuGfW3[T9nE*UL/ m $UvAmR_oCcmDp*-x+˾G\ܪ0' +l`Ѷqע]3E;Lk K9]"y㸔J?b n( \+G*g-uzahRanJ_O:9 mwCk HzPzˌUA.Iɚ CPʖ[irT'|U]< uF`mCro::R6k՝x\|ѬՙdI3Zcȗ'"[R6#k&K:suAW6x)zxMuڙ" EM:&sݑlt3 k\i}{Ta]d~OyD׳۳VmZ2f|=7gMCv+ U^7KJRaֶ ŶmH_oѐZ|e՘cdJن wx=?з^۫Ou"^`mOA%uiҌQ,f]<`Iqԣa7qsֻwyɘx['Z$-g::*^dSPMe `ܹrNՖTߔjw=Rnވ,/2Ϊf:4k;n샺JޠfMW\{ {_K|+* f-G~} 4Ko5.$>,ev ?~}㻱3k|Wc)UQʌJ&IW`t\R_uCsɭ_kC?l\%eI[}IņdZЋ rYnsD#͘jU`o.:_:`BKeM괱E;Aܶᘈ|SjwracӮf!ov/ 1߽_`:=Z; k]rJuUFL|ňi&͉'9/jqdg![t]I{-2Yc|Vgo"st':p3gdlQE8ok +e睙\76bUIP\-{k;W|v~AM~ -VcF\EKSxԋWHUo@pDThV+ ?mËT7pZUDiC}dP K=iL/]ۉ6O7jIrPI]:`dx* !rRnNh{p-Mi PUo%n0pZۯk#><e7{`2Q3 ByNT9L_M 錵D_}&v1kԶzͲ&6ǒmNU2T]w܄~_eW5q/rv% p$ND.C>rl#rh.$[6=S^_#UfȮǧ \U| @ +endstream endobj 6403 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6404 0 obj <> endobj 6405 0 obj <> endobj 6406 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 6407 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6408 0 obj <>stream +h[[8r~_GwBl 4FNg2kL0~XbQKd`("YX/OϗaYݿxu7wfw7wv0P\@-cem#eL;.|s n_ٻs1fXzϗ?4鵝Pj +yӗ 8\iϧ)_/00C0yH4\>0fmWڮhBɺN8e@yy4>8E[0ѕ1oPw,Sw:|Y01Yld̘,њXָ2 h Zwmu1"`)6&ڄc<<O SD!G peY#>a@ٙʿ ߟ;Fq0MN q6h&g I {7>741$7ʞp"/oCNԶ_nF3'$, ~~(K郐x&_>%h? zaW=J3FE 57<('8'&K,`C! SPBOhnFg۾?6l N7V<9^+-;k0 w-nM(,G:?ʏHV@N?k}?d#X[؀jUWn +ܲ1 Ɂ{;<??W"8pE"RX+a7!̥6lfk._y~*"Ӆ;n򤞶^\ܧuf)hgعbn 7%|:Ņ&jf +fP{DG)KĀ%aJ^{[2GhW;\#FC/2L٩EGAD0ȑE.XP<$/bWgC/5Ix383^9oiT$S GĦCx]$v[k 8Qr-#gy΅BAgQRm?0i"oC*ݷ|6\5Z\L+@]6Wm]6Ps+)&Ldg'!F^(ҩheeZpEz :d^F_ `|}z8PTP4U4֨KIJRS/pV&?@=P ;TwP4Zu -2L4gʭ)%iv"n.CDJ^m) 3W&E ٸHFxWh6x gz4Kjō3wg5=6|fN I+ὥ +(r%(QpD7%W?LӧPi}aXf~m"u nve ":`7Ҕ88j]@k+ȉW;WCI7t6dW{܊nȦe7^v~^].)P\- r7#u@vQ_4bޙ2. P`I'3E+kZ7\;dEW( gwӹ=':C9YyLҡ0.WOS |db,|Eyg!DdTEH4u/\׋ڍή[fW{7y Rc-u w f933enFo@ǒ=^ࡐWQB}1o>ptܸin ԬGvkSM1"x]D:6rd2(I9)( k:"X܄iDR A!ߡ qKMaB7SP: |pVRXvo7 ep .M:Fz5,p(b3>a{J**hHYN E/4!RMB +942oaگCY.sm!E԰">9oKêÕ ,dS#_^ +?հF =AUJS0?|ݹX8 .iHaH*:bBQbܑx ջ1+i5u-CįKܣ+tr*O]=gn I!tuZz=*uLrkl7~c;Pcҗ];s͎&$|u|wYł"\d*}jlEڪ4(e]H#crg9[lt]3}f"Q~Hð†<@?xEfuVdmEwр.Žn =NIvʞIc (@ok⭜Q]x0U&9z2Vyvթ:::6-j)(GU+Kl,fE@a4wdž0υ$;kvXʸ]P)})93L5Rf W:e[! + 7u n5ʒì<ՈRK-ss y UgsWVԸ3} Lb SwV:wͳ|$* +a֤IƵU_?_N@pZv*VUrU.5v:^EZc$&F:H两_Uu*'BZ -wEE&"W +T%ZcaK9snԯJt[ej]VAhweޡ./0ZXVfUR`uW\쀖CgSN]5:&3/ +Y*|rK{[tW]$)EMW=e<̵d^r{ԃLgu[^c9)QX5Pe) =`桩<*JǷ$+4JM]W2!%_U{2}lUo$RV"cоc˭8zfw{|oYC+a4e]A*dU=R>0}𗶹}&ĸq?.l_B':`L"w UlҴ?0Nö%m*!`NMi~;io8*VEǐ5ʣv8VgUL\'WՓX_殶Vl|c]Fr8. RF޾J}Q_u1b, }-V̀|`l1.ڀ"ۿ 0\ +endstream endobj 6409 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6410 0 obj <> endobj 6411 0 obj <> endobj 6412 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 6413 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6414 0 obj <>stream +hZKϯcb`8|?Ab N!ag+l+Z}*y,lb*LJ˴?~׻^?}7nv>|ټ9lvtxؔI_lL*Ʃhvypt{]OcLAYLfC*4Fyz YN4:2$yUUdz6N)yr;x-,,SuZKR)aN=T2 +`hrA xiـ|9sDs 8ؓs$V&X(=UoXP)a+LʧR~ WZ{}* $H^ѝzAB16 lTչ_d=%"ÿHdT4Ee?ٌLPv>~z2{kueŏ8 ў֮NoȀy +a;m"4?nvB}Ϗ3x~ 4SxÆI P6S)*!Mg~lVsqz1ʄ :!Vyn( 2>B7tLH!1l+؇CF,xc鈓MaP/} mQ3+k"8^ըb M-۪Hf)3bsAFP>Y_餰{<,WC#^YF:r.Ehr(Ta[BnQ$+b,#Oli_M|薇o^DEbz=QajKi5#IJZx1h侒-Q>V.5l9}Fq!N,X-ctxav%Ue6r,_>'<&8P +0)4q܄XJmv%lX:h5jU/*- εYFf}oҹ?Zƀ%j(7*я7SVC7[QvbI8)4RS +_xbejnsJ|NW( ĵmt2=t> +Ηt+}훸㌕-UؔM-_D?!5g!6hur,oEH^P׉XMuiSe gy[7fڇL_5|"vkCrJEztʑ^a*M^: H/2Q[e8sC4nwFeG :!;o7\J>N9[.am]~Lv8YXɸ#GVWF9UZ!C!=/P(us"sY.Dt$#%lA;۵ԛU1~$)\| +ޚZ;)& H~% vr^wI#D(B+&0~^`J7q U@ ىWl{ܢUJk4Jِ)]&: Sƌm;5-;قoXWn^YWӉBLv^v;_]7V₾{oHXۂ |ɪtEX:Lz2Wp|>CJg#mV +M?0*R<@:m9`HvfhJz%ct1k?Y":~Oү;r|#o4c;c/b=ϵ[.lLsC};N<Mkr&Hޔ +endstream endobj 6415 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6416 0 obj <> endobj 6417 0 obj <> endobj 6418 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 6419 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6420 0 obj <>stream +h[[o\ɍ~_q}TKi` 0<8Bfȉ/Y$r[Rca}"YWUxtw{6?^?ݿ{n7wVZ]\]IOWw<0)W>BMbtMNW?jVʤjVo7V%߭#dz wJAvgi n(̌_}mݦ\njvԎFe!e`k3 Va̮f) LOaV9=wh#߮~zs)3Ei9O9nżrԜPNb, $[䱞qLAg&fD>p@jR:oʌD +R/ьkgJ409vĖί\sRL% +_O7FE3OR+jJM׵_~1=r&g i),.twp~7/.?i>t*LvГ70LDv?Qn*8mKږ^;; l=g!f4i.̬)!-9 b:ؒڍi1U>-d@]ih\90:`:Zo%m-9X(H8l8S? Sʿ(A9+?evrF"F NB"[dٺ"Rअ\P{]BgK*.>ji`e,\2q&:Ld<Eܜ|eN8\A@(QHGJ* ӏY爌%A֫Pxj~jb) WQ7ޫEu'ѽ2.y(5Tٸ8q-92 X*4p(4.GdWE}ER.&:L;I?4L TQ}'nK +){p0zM*׆IBj5aeHj)_:xY~k#Uz(Zb-x77zD(]={`aЅ"bA,Ѐ^}UfV2fP01:v u +8r-B08[T@=wXk 07+|?α +kmUQ]qZ$$ Ӎj0e Eb$UbFL R7,0Ғ:)K'6D)ZhdL2Jt!v2&` TȌ0rvSwt"{h KٶQ1gI$HJ =BP2BmDeٞr- T/ruTײwI?wfJᾡy^R8QY2CGtlA2W Jbd:}6W"R6UeQX&?m毓e9"M9M̝*w\ 2m0Jjp߮ sUCWN&#*QG"+ڲ ~ +v1BJB7",M#WzGRݙv-;a4_a74y^6Uq`djj#bWJ/- }Dzh~wMP렩pvK\'*"0cїEG-VF +6lʇ+41n~Mq|<Ab]z,'4GRh6u-T;'LwaׯS;ҸbAzZpcX[soZ<Bܮؠ!fKd3ZQCD3M4M,l˴ +&'Hmz`m@ۮ`ubHm2aO yZP ,i 48Bb\*RV8P—q1q4FX,%&܈7U ++EVf=?lS6C鸲/NjܑaE~L?:[]zBI/ SsXlQYkG8F2ASArEi\BȞ)'}a!u8}ͰxߝW0}T&T_Sۃd~jkٮƶ%*6evե +TrHlP{hJq5jEŎ)fhebOPQur"b:TQq6UŋSG}խ mc-=_pBFbyTQ{d @/u3""f(@ iԭP&-q*WgG,o?<'YP6˵3##ze.HA9d=>Uf%koǥDm+,X exK|@[ 6enm<  }l&n·˪"J*:)9H3| Q9tLVvxgh +3WQu +x"@$')Hj09׮0羔ut#cGޞ@x3 feۋayV_!C>IY nN6ty/q9EHJ!>gb3fO7_˸0_aB?64e#c_,|]I$<KՎ% <[-W>p kg8L|A$jv{M4xD2H22谥r{pԗT8Ruh-1K?R(vć8O> S?_a|lxv]ؓ7x2}V }:HT0gf;07}2]< ;*^dbm3>}<S|09mgCކ +.y b9U'۞0j(~3~N&=6s(mb88 +o1PJdE;BgCڬF2̐cJ480h[ `p:Ղ!C +Y#]EhZUj6^~颺Y\[ʥN^ww!D"nB|GiA -졆5ҧ-]?syU%3ܒ񶗃|ܻm]J4}V6)%r٭ P޴_ /b=V h~ ] ryS]3NGPrn޾u6("m:JjyݎK@oSEzHP]5Ibycͻl.$h<,%m)oݴJȲQDOuÜ9(}K((TRMaL=e<&92vd(dm V[g>`:v~]8ƍ M[6*pW3 + {9tQf2*Wž= +U S,qIYᏘpgqߠQ1@15NЖAj="RZЇƴZgk/*.Ό)!_8M*˰4'S/Þa|a"~j SGE#jC,CukjdfF9< yWD3-^I-cXG 7h+- b(*9sES]q=>j + ~ffu.mCʩ}W^raKQ|6m6F{bT<ʨ(r>aJno{=jlOtO*LPrwC}e(njD.f,?#0.Q_[Mgps ]k}GYj~Pg=g7Zz{nyQR8tVRa~KTkp;{|8_rTp8=}; A#5_?c>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6422 0 obj <> endobj 6423 0 obj <> endobj 6424 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 6425 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6426 0 obj <>stream +h[Yoɑ~篨Ǧa*Eo;مxL`4Ƣh2ϰg}P~0 b7,Wn>sw~],ś/xs}m:]o.nSgcc즡~p]\`|wO P +Z3bi&&.qqeL?aiaz>^iT;,PZ"@]Jw#S ;"u!S&%uqe0@]"%>,=P\& yA*eX3qȾIr4hؽJ॑跇X`as}o/2c[7MS4Mc\ǡa;cHa=܈bԣ`HoLB-./r[DY\wL}gG΄X^׻z޼{k;Ԋ?¬4ǵyU/-hA.L ݕZxhۧq_uO0ϱ[=a M7M}ԭ}|G=HQQ&)_Y{ 몟\o8[A7>l?DKá&$a o>Rca,t8M\f죟r jXj`{Wﱷ&RG>:hŀH8¾# ml2HLv"ya4Ք;sPԃaxҽ?o#|!-~i +J@V z -H4"".09\tH B7:ghRU<e3O fyGS.B抇cHˑXXr%}͔ #!}GO7OÜpgX? ԧd +NB5t*yiybҊih {GPZǕ@m'cvY ++SɳZꊰsɸjm`ܔkoZt`BP1H+IRp\CWum=r.5+ lOU:M:hgHh6,"A`xx >#C0; (OԝnX1! k,_ T/sV gz7 4 1hk#סB/`wYܚ7<iHSHP{3_EpHCa4|~MR )ʼn}F˔A2AɯeBM!IèސSg1~=GiAG69pϸW9 +*G g^!,9Ӭ!0552hhhڨiFF}SS>#6!ƨndr֘6r\K`my4,ip55=ҁ3,WqJ 4#N8dOU)'RtSbn!h^m*Ue<' _py1* ϵi.4ZQ:>&MFi\|4D)0^j||$;( #D!x0'TƦ!n "Ƴ2/8G=U1dr2CO>eqVsb 2kB'3f#KԀps$m8*5_kcL{`&Gh՚ &ɗT,jI%c䐅\X%nleX*Z'F9u,$yA8pݭ:+ǧD mX`X3e@.=AFQ3i^.k*IUYV*8pjT*3 j[+To?Tue<RZfj-e.CSX1VFC"uHt>k#EquGMYpD@}<?v;7&mhsBp&k4.|c"c'f+DS(" A MalE\Ա2Ԝa0O_|RcJU{7L/ # T#GlkXueVejNrQE-uRQW( ,9R[m!/TsAS9!;!:ڢo~eWag#''r4ƆZ %ȊQ&T%U#5%UIj,\y+A^-,C&_[5=DynJƾE ,~آ;ߢ;[BwӼ@v #iȷ2×ͽ9"jq*fژEe$.5r&;\ҧ{-ɞ_+ :R:fTi )yzRO63Ln^Z!hYp n~jT6`=x19E/$Tɲs䤻u3ȼ<5Lf1ǚ6/d YI\ +_ƧGu'fc EgXuHx3guhYdރY6yA~َ*Bg3ڑ,Ixb"jj`-ᚈr̙N1߃/)z/)v;EnnDQ=Ɯ2΍ +\}ΤѰkfaRpWz7v)D쭢\xԹ|ҦLEJϮ/>%ngv[-ݖvfn%+w\}{_w|~{-ͷo=?s2v#T~|=-?`ls_w$QCyJ]gq;W? V7K]r{K? W(0` ī̴4[}lKwϿ/Afo'L\B7.w/O̍C'~d"R0 oa~?w1,W(eqO߾ o_/~`;m~~ [ZgE@L7˜V!x{OV ,l%$[}!ĩw#~w83h|Z112QTp+P߯@3#x&GYQl챳ቆluޱ¤6»4^dj3:o385}wsyw[nCˁ$1tt W_X-_[TR!f;x 6Pݟ3*~h)>\; ^3K:.=–TG5&#B`@qX|ATF]yLYS5׮ w*(hWJ95Hki~.B@!)%% _4`ς8?EFӁw@(C$]bK(SQL^ޕy{VБoώtQl7Zm7w72_`:嬗^6Pnث:tyfZ[!O G5 $$]~.u|e>k<6lvPݲD-yX\5 -3-x|óg烳/@3Ak:{8g;)> R|{q9@_&,R9!3gFD9'gU6aPAx#^spVXcd)t yg~@^K!5[` C$U>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6428 0 obj <> endobj 6429 0 obj <> endobj 6430 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 6431 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6432 0 obj <>stream +hޜ[[ocGr~ׯ8dw\lNqP9DCy%8 n}#ŀ"^]U]Uu??iXoeq{zx:n6_|ysu/?W׷zP*>! 8M:;(zn 48MNƎ*a~rfF qp>>^<VIv?5\Ѭt_U︨̣`IެE(ӻR5A/AC`{6)1a M,ȊaznC/Q0ڐRW+-[?Iw,%ba@4cIDaT#V])qIE4nh"?qY~я l7et&?!1AGPAQip4\w'0ajo>O澾y>N* ^v0PӰ BDvd%;lG)**Q9'6Vc2Jvo`^v9z؝'i8Ta R/[ s`y<4h #TMVU',J1hVZZU@ ,h٬xי՚vīFɰ,ܭVt,mE)foV_d"Xy A+W0 #lťl d QWm_<܏r@+-לɇљvlCQ20kB̒ɴt(;m>lw)VqRYdz^UWB3;xi(юUxͪ!ɰȰ8UnB!ֱuk$ql=_28$]7k(Qn" ͮlV9$R^rm!f;Fc>, 0P8*[wUrS P^6b^!?\[(Їͱjt\# +sU O}Gu\[!J{g#U AA!\6&]\{ As-,CˬBs~^ +'K0R汛 *^HL]D:!|mAc.fq5bu- di(B!Zaf%q/l LcA&6AdqEω[gKsFNv>G4z(e[HVtxy M-ub솪 61,#=ccuq`|r @Truգk~4z7BUs{5{[)[Tr.^cteǔ ;K{TyTaTJP8Ul\ {bBhEyqpX٠2•\P.̸QCKg NL xպ*pMb-{&$S27Bk.GA\.i %|sQTg BHVVJ Oo|:i +ގ~qs? K?2lï#퇧mÞ] \K`H/==+$a8< ,(lbZ-?poǟ㲿~:H1z04t7z_ա,0Ω|k5Dz*=x粆enL<-n$2F6c=W6 +@?}8w i{Dg]/+79X :YqbXnVIfzxޙ!cx 9,.!@ڀ:4ґWV\xO'~ˏ GLxYE-d,g~kڻƨi7jkR߯4qu44i\כ7v]'l^n-@747&OqLvC4YB&=mfck{w*Ҝ?/HR7// +0(a*I[q{[{w2 +ƞO?8ck>]I'OAWz+&2)bpZ)X~2@E>Fr9SoJ̺\~^ӧu&+٪N߀=W4CX,VmzWa +=קf=NXnIm c{j|wnS"6ffi+$ + ~Kty%7( GYT y>qh\\=K$Hz-X.{Qc=M][szCQS3Uw}MNiW]}˴]ڋοAڝ_5mL#L^w:*=`O1!o^ޭ-4~7)n>7g+nɻIvLu+bra98.(eN%xYD^Fvqjt1;<qAbY|t_|;4Pa=޷onULQ_a%=.9XŰ{^/s~Ėqiɕ_)g)V^Mց)2<_n{,[/iT ^߆O܃ @?2W42fbN(ߒupv0CiRsq ~r~?dYn/s9= : +,Lȉu:i2ت,ʝROXrKsvຒL xsz=lN{sW,=?IW>9Iyߧ{Nrwrwrd'PbضtD~垷' _1Q +endstream endobj 6433 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6434 0 obj <> endobj 6435 0 obj <> endobj 6436 0 obj <> endobj 6437 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 6438 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6439 0 obj <>stream +h[[o#u~ׯG*[] .MZ 8Ԍ]g}ui6$1А]Sթë}9ni닫޿^|usqusc:]LMCປNj{f.oIu-<5#z=UÑz8ΣFCz`hY=o{Ko{߸dL;;Rt&bW_??=wvmVgf6] ,`c&Pn--| o|qp|w/0k~!F4uaiMS'!!uGzxC&ߑ-vvvԶ Akzd%h~ |n{- '!b;:j!O,́!g0Œ}S~3'N1}9Dj[hUGo`1 ;zt>"4 a^M J5}0==`Jj;!-(~%45g{PbG ҞFWI4҄p$Q`B762V4JjM@Ŷ'| ny")7{`)ǐ.GbaU^v巑[|ћ)!_AGC$8 _ݘ|Ȝ!a' rS):<2kTh7恚1[OC`h HLI, xR1J@ lEz>7b4Lil!"V"YYyvpj:DSMݨs>#$=6tB0foY8N/SN]JaPlΟRwoT jVb,Z +tm;Eԥi{0U6n^eYov6ǭSf'y l=dqom=&PY!W NŤvUF#Vj#)i[Cnچ|gST;*6\c1S{E^hObژr/h)  ;0Luh *EbsWwֿ߹ /):+*: Oĝ[ I3tQv9"mAV=G+EQ_BWy[m(Hc5ڒ{فF5ElC]RL0Ebm-JrvĜcՔx*lt +Wϗ_bTvb@90 :W +<Q5-.+صM5 XTEᒟpYpE\edΡ=!M/3&UhWdz L\i_xħ<ΡcbyQ!VISos_WsQ4 06P @qIOݕ!2Zb_(04#gsr+1Taka-d_˻h]U~bXCNd>y8 i/DR#JGABxA9vO JHE`+0K(^*)Ho!җ{-&Ƽ\BPeW*K㦀፺wR3JKX"'}?"H R>'bдZ>)jp@VF=%YP]SPΪ;xfQGn3rpAU) Hv|МL 6%A93rboJ0kR}ΈZlN0?qsZgjŵO|4yv8vvq+sמtc}qf(rynfb@/T6S5% xƟa9,8Tw>VI&YNIs1>k8N5*zpѭ?;煃]76Wr f^;6͒̀4VXǗ; +,EW9혝6-fqFGOe.َْJVvh/>-isNg|t:Wo>% +o=]yGb9:O5nZ/܊]NnWXMd6oΥV :u269 +gJb:<^Y`܇[[{7f\&4&#QtpdjBrۜymCN\ņiY":6Q"eHزiV}ܭ 'ΠPǑ_Rk,ŕ|GS}Q/b1;!f3?pOo吢iɏ6YA;pI1/R0n~&[1z{q[qT r)~*16BwD/,:ןAXlʤg)S\bhI HT.Lwq kBevwnxNnz3d-ifVn"J[daSeayZҎ7mYIS2^QhBOV fe X;-[~|<:K<*>ܿvAK*%V+wx}O`ϫ7K8{8|>` N̫u`ۃ x><=>Ճ03kRe4_>w$Cea忾t[irx8^t G+\nakӁV?as +??~NK’'qȟ{ ^IpI8~AHJvbi|8=x;d[TW֝S ǰ ly='lx#DIWX -j~\`y.v{.:~lEr螤%>Dz4oVFY݋}|iGξD>ț'POGE'2Y;.ۛ1bIb. uu9zz\tW.UbĶiRؓ ,3) m\UikM}6U8Cə{q93ݖ7u )09n% M+:mhƳ܍sf緡h2K|krN%LrFߵO >stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6441 0 obj <> endobj 6442 0 obj <> endobj 6443 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 6444 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6445 0 obj <>stream +h;n\(#/A'&#RBKd~> &E^$u/o~}ݾx7G=͍ts&G SnIㅚ_J4q󷋷{h*R^C^)W.~6HnN2[AyvF}o%s%nO#wz{ 7y4h'fٙqPfK(A(= r3LhdQV˟ow7;e_:M9iv14}9^_o,-ba@$݌k0P:gy&8u-7K#NScA7຿ݻp9iJyNn2 l~ֆ\׏7FڿI0rʙ>p п\\ͧO_>|<>potx*;MsQ }"tHQn"LҶԶ6^;cgl#ܬo`^08؝U0=.$@vڍmc`lsZɀVTۀ\=1`;vZw6Ҫz  wG @fL4A64u s0ㆦiU4lSo#B~gOHNO;@~?Y)OL3 +.q5hFk lqTu$Rअ^P{M4bZc\lk LMX0\&t<MnN>.GּH% +m-;t1$zn"VOOͬ ru㽚D۴~*G5C(j&8y0N9GaO%"T 0Yuu?!3"$7IR.fjb]i?PmhsIP"AMUhܫkkp26e(,6ad3?z6( 6{c9U``]e 4.Q}U-]b|Ϸ|o& KŘh 9@C W; $+7#6||>O? 0̿<|t9>q'bn +Ûo0_ sLw'3~3ˇ#7!\Ҡ/؟.hPyg@e]}5~尗o࿿O說+0ǏLJ'ugOFēZUfw呋ͧ ?]DR7>~qQ{!@T ]bT Beb&)@v,Ϳ}\.3:Lt .s!@_>"K&ߔB$hG:v?f +2N%s;qZ~Zj;FD +zs:V3:e=sВ# SAb ݫTx%G/k&]^t# bG5~'$Z%ٜ+V?gy:sn+skX`zd7DHx(y>)\%..QNbBqi*U *+jc*ݏ{䥸R+( +ZRzpf93k˦xm(,5' U +PU YDA(F̍) DL:n;&;@ȏ~oSIAq5Q)EIIjb(jDfO;h3MYU+>76:IvyV4d"%!حT̺_ 315kss(X[>q_KՐCu'qgK Uv2wU;U~}u +/ѮP! xχ<ׅ<79&ӭRM"NX]jvפ(eG͈8Y;AeėT53=ZP?"T4,"RN_UwL۴pPF'l^׆gXa_.shܶ8ӓRoY%><8<&\xPPT/xz8YfYDbzD3Ku%tsq@X;'qn;gf6eV,ll^#dV{WVK$ܮFj.G DN̹$۽QK}?&>.`Ml2s37'=8Җ!W-$`"D9/f s%r|ftx&Iar{2ĕc+l#RT)-^UkԝMm5Q;7[UrrrA<+ʭF[;Zël1ݩPll֤ aSP|.R핓SG<*.'C-Һbi*6r}Q*`{9 cZ9_l~c-9lUH2gv*kC$: b3y)Cka! +)͡?krr~GoNfl߳s`$T0 oCpjV܇ ׅ i2@byB?Bd!]!Ɇd[iyQ 1M,a &޹"lk`j82U;Ɛv[H9r=+f0B̩ q}[9wA k|&=28dZӎs%Yxㇾ_&c)Hvkڹ궺%%-Sܿ%2XEVʉrل+~ȺvpvULVM4 Y vEM{~%,xNϟd=x8FX +#$zuPtÀump-h̫clU3SH829k2tqz%J[~lpe_3}:.،DZ\Le63F`@>)֝k]OzR)A$j[[1)sOyX(,yQqGh\-A,ABn:lZ뀽.ZK?zd P2ӟ FuG8K_/x\v~@+Kq^OSbOm2e)c`Cy3e,bq;9=4 Bbl3K(?<R̽ x%5@|nkMk\XH$i1 E߿02pz~>),U-p 鎥ch~nnY)a- nĐ55Rc̰}w$t'F_ْYzGlhxvއd.Q[lxȩ<5ɬ&s62 +r=ƈ!7/z⯟f\kR*pP:лeklZ& pĒd, Ѻ$֠PktA&roa{GXEx;gG +,[x;>lr7crCy[ 6]k[N.୵Z[k;Av-܈E@h|9oЍuh٭@n L(.h)`od>eUՈ6!pݸPjgѕq +endstream endobj 6446 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6447 0 obj <> endobj 6448 0 obj <> endobj 6449 0 obj <> endobj 6450 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 6451 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6452 0 obj <>stream +hZ[~_1RN߻2&<<=t%>_]2g +XB35]]?p<}nnoWo߽]ׯ~quWW׷f2U+iq*7W0/ Y`l1j2A 8M^&`Bo̞B߉Aw ODUzdz6N)e;&xKKJzf)i6G"X_ FkzӰV^r@iۀͼܜs k"J"x{18 +gd9/Xn7{qE +\c4[WJfJ+}\b㜆D8]mvGoT1V2ۀRB}{XHyXnIIfO6C)&fceߝ~zstv)d?bIg2w[X@P< +vw߽|siz_|N6/fOK>0C9%!M7<`9?-Nv ;lBP`Aa.. ~!2r8hy:FBGǰo`:bK5d\|n0fb^3bI? Ƴ4撔nF%Q\NgeXX-OjfgD9Gk\ ]u916}d˨7k6(R,'_p|6xķFP AA<b;T=8,"ye9 ɱփ[8᳔B-?""O$6'ٌ,1{NƘxW7iJ$sG%Y63Ɓ<0A5ե=ya9)u[%BwN(mi &RyD3Gx%ɶRc IC"x#{$ER2ӐyI _*Nc%hRƼ8Y̥;dNd绸pOqIACxaWN0wʹ"6]M9tAOI!w%W̳؊; [tiO߷JM*I| LpAW嗢_Zm?UwXo5 #Wg頧~@ +Q UGLsYO]!#|"uZ| Z75\bHp(أp&~7"\1A *Q'|ۍ=ZR%*8+IF-c]ٻjKl͠QT߉=S6,e"\p'|.e/ H2PwW&b2BXQQٿK:pWpXFD&nmðs+{3'iSPbYkcƲq."T^wl!9~Psn_)"_UF#O1-C5)^-urV힠!WYHa/rKraRemDHJqiTw +XnoE./Ǎk!E1[߆^;[/[}.+aîA#?_ [.uASL2Om|Shm/ 3!O,'a ʜM^b'WDq8msS> cF wgWzsFEl{{Z:WPUIl2]PhQj@n+)HQ"b@f>FShc^/Y{TI_?w?}+ֆS0bG;ZڣEݩX_?ԋ#.[ +Kq,\A]ĹVswɱJ>]"3۟u>;-]ٞZǢ3+ݹY@el +F䣡?m'&AG]~Y/홾4ɿM! XKmWR'bތvY|VH-:v)l6E>#3=R,P86mI$ĐİA>K֤VIvUߕھb>^ѷϾ?U>'>S=s<^Y?>|~pwće>~-~8_ݷ}ӳ6ϷGDP>'&ˢ}6*.,VuP АrS+#],VUXifFtOz7o[Y,u\[T%~/%Z1UkW?UӖa r>[ +Ww\:*wԮk X/8y`f^ zG/Յ{fo;{&Ѧ; 1: Lmfr`Խ +endstream endobj 6453 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6454 0 obj <> endobj 6455 0 obj <> endobj 6456 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 6457 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6458 0 obj <>stream +h[YdǕ~_qy+ ml~~JUZqg͖6X&+3~D}rϏO|Ƿ۶/|?xzx|zr]^ZbHyui9<}`oVc\YPxP1 1B!7oquPZGqI2 1X3<՟y/\A0ƺ}#|vpɭ]dgڪ 4gɚ׊Q&:Y~θ%×-|uYC,^^Yڙ-V<TaDf lO]"o(`%[Rtt~iTa W.25đ7=ֲBظZ|˷/}\ JaEFZPLy詍.߁p`W+0w9I y˛xoi~_M IW A^%:XոwhV +6ȸDlՠ"uwS ]} %=Ԃ[e<0 JR)Ta<րUlUEbOBnE&ά +[ #ys[^8r%ښ $Hza!RO_Oˤ; 9N{"i㢲GǑwTLIZQB-&̃r.5 X*a @ph,.[3H|82[%a9hXX΁}KP)L \#LuxT ),:_+:#iX|,E|4痿}7C7LRR#[+JzZqNy#;> 4P[~;"<PsbPtO_ұA{aLȴi?~c+C3{W, Ѝ-+oKt,Z " sUeCThY%d>BlelVNL eIm"xP 8 G;I"G9GyARu18l>wϛ.?UMP, (͸4O2ԉ*8˼2&=qTpa,q¿y‡0tD0mp8R AaVڢӹ7tR +䟕x៪8I O?2O'UfЙtcu! ܲPp(W7W$Ju +/H rqdlGo#OpdߢͿf+s;sm8 0y J렿[f7 +ʁUI4D(n$oƕr +,邟P!?sWHp&_#_8|NR r|s VkF99C>1S[duF'y+)aX˘nUЧL om0Om=ܝBzodH:wa[(x]J3DtkF#"Ofl Tqw7\wVO/%0"HN |Di#"X)WwU#n+gMr;ر VUOCŝ%Kzi@pvֳهIle26y.gUV.(C55Ѩ g xϻC_覇 M#{<у$(=[^wutwkʕ @{ഝ#67> l&tS0>L +`rMntpқд*QT~=p l ]o]Xh*q[)|/R9w`#X }od$1).v㦝<4v=zĊL3vB:m7}6I(j9V/!^P(Ns]*}ث[^ZUe)%$GB6q\\{\=4;u&$Ϸ8~aզfUuAqOur5m;m hTaLs +R°c#m @4s'A릯nt޺A)ކf޴mE D7 lCfg4ȌiCS(+D祀,P6YMJNxEw^a`jbETa$lV#1JPCDR*w{xRzܜ u_B3F]L3 X\c-J\X +[̮(hglyAѪzUp1Nд<2'F/vVՒQb^&ކe7D +-z5h-j('MsbZ2?udQ'*T&"!kPx>++pH|r' [Yo6^;E|#JݸqϹNzV"39e܃I2mW2w9ޛ6θI3mqɸ}֜3FKhιI{9~wgxo=L?'֧n>wD;؄2^2q4G=fa w qnZZщ%AG3MXGyײu !o c]z༳b uPIrJsO/y[# +FLA{{Z3piL5J:cJM_ZXPѭLKH4Ό+C*Wau deFiw>?䘂0n^(®=@fk@^r=;ϵ3+۞>",kgd_nܐ0cs(-Z0ޢ`mzjV"MϔS@-(a?3&eDޅa0&~gJS\W({#!wy!9#}-`j>z͍jbe1'wN~TrD~̯!N<Ʀfxo-z %r]l2܄<׃cOJMsai-7'}):cmy:pNn{6$jiLUA1 ?RZ7=x + mi+2>FTaG]s6RhH,WI"V;͜ҧ.$G&]S0K 3 Q; Tv~ {9۲vsx'ݷb%;V^dw,orm eݻwI"ͮIo wZ. +endstream endobj 6459 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6460 0 obj <> endobj 6461 0 obj <> endobj 6462 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 6463 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6464 0 obj <>stream +hZ[o[7~TDLJBKiF>,9RVͿ߹Gt/O8!!盡.nuwŋW//.~ŋrVER-Kʄ؄R8ZhŬi[r mk=@t\|c;l>q[wMži_ IHغ_F}ۤ*PklZ–뺐!cVu13M@5+TXx-EsYC_6 cyc;{!>(ẕ6^BMUd:\4f-kp$1 + ,sږjyl;RR)u꾿\B$s.4G kqf=rŐAa`xs}zΠȗ/bw\MԍmR9e:p +} Ovj뗰NU" DEgE/_΁ w'p[5˟[8m/]߮=}!idh۠ EkRw36>9EgQJRR4{iόm5krMimHj Fk3M Gt `1b` lǴ8Mr]iRt7Ӻ?@m-ͪ`QqXu4jƎHMq]n48U*︡kj1ƀo`G6+O+~.Z.jq"Nh4,NC[[A:Q0*&Ah A+hjXDz-lV%.&tL!܎ L|,ZNGb`V67ڑۆ[VvѮ#h6"KWە-aϘm"ĨӷJ60Wh5¹fEԴ5<&&EOv D=p8͎%ҷޞ{(i-d9lܾ6lsgLDT]$)-jp0{i\EYR +O|:`ܾ6z:k۰q#ӄj{zQby9=!.[%A9%&h"񚡀`^)0MFyyPN\œS0sEE#ɴCI 'CД_#$ٳ 7B{'L j^7C_!~We.#WI5BtoO/3 H'ϧ<^v7A۟^矦{pvp3d _>y)>vl +pa4Az޼}3 u]&x۷?)u]W˯EP]mD[}T4ba؆8ےw~ +D~M3}ݯǵ~-{#+~G7S>巤z]7LPW)"\mGr +En/!|( QZٖ@:C?Z"`&8ܐkW(PJ`( `k_ttSbl p\W#*#aJJwG<& +ܱHqusncS%2%PlwQ&㵆+>n.%җ7"RD2\V]'b6Lëy)#s(<TFSchpJk1yAG,ybGtiBA]vLbR~{p@&Atg IٲSŖTs`&֒~zĖ԰t7`F@59]cyuj_x8cV|jr.LSRv[9ξ>|py;-nW%W,&Õ)cPJ8qEȥMJ'Gړ"8 + 쇠*YDLT=Lm(vҤBEXC`%Z *ҙb">ʗH'~kV>mΟ7t|hXqܨz%X]XCX3]V@8B"dO9 +׾h )@`H?m+#RyWU̙bcV!d826L=cVk~w5R$063Xl9)5dӊty`A-RˉL#`ud?HVlQ׉*3e#SVF?*ZW٨,Edޗ(fS2ܩ\@f";{uC#ޣ;3FŃLRu򁼺AT?]#~)O!+Ǭ朕0Kj}ѩK%&2Ax/0W=DsK(.(9\U\6b՘Zj"%/zhc .p+Ued9{㏝Ȍİb9)@PN;>N^oĩCz4ԇ4eltQ͟4z;~lFWo.T2y4Qlq'F:R.'yFd?mS|9Egv֫nԃ)u'f_ q +I4Ql}Ǵ7A[>p+n7L7Z< oSc-,#M޷E㞔ѓ->`<Nj0PmsƓi==л{|td _.|\=Յ﷼=/Vq߮>X;Fk"Qk'xk|l׷=wկw7~?bTh BXl5.771:?WG / C__;,İ{ ,E&#yJz:OpAk`7ٹJpޗNt DRݞu}pH| +gJoQqaGuɌCV+YR1y'rK?h#w;FCFTWE*o@ȸESBe|S]cI?9yKyPLhѨ_DDWk/& ?u$ won!?=PeSoD"oxcNq5,;I޼G); +=r[Y>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6466 0 obj <> endobj 6467 0 obj <> endobj 6468 0 obj <> endobj 6469 0 obj <> endobj 6470 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 6471 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6472 0 obj <>stream +h;nɕ~$uf4E6N2bAє,92=5I<!Թ:ο{\7nw!tΆY? :vh\|%4`08+tgV"}?/<vx sF.To J cG|dB& bX< bk3c0{؞] nC?=E Y&BqDEk"1j?G{\806u-Ӵ=#|##Ulw} u_y wfG.}drK5XdSttwѪF n;;i{ y{q{pa{t0'm>agOPӰ D6DmGnmm{圴[ вnc~>Xz"|mom֥9GhVZZUX pN5!ܺ3D`15{צ&|{=P=Һ׀[xT x'ķ:?Ct]3п 0ߟB~\7N3q5h :D;p{cI>6-B>j525" hbCnpPqv7>;hO ["@i(52^ Lupx :*f]tgD9 nzPmڷԆma[~iƺ|* -=aa&jܪM +9˰̏} Ih|l9j_ OheR4WdȊދ'-baV yO$|hi`V1x 2`l_p]~Mɠa!g˳ diap]b_X1DZ ĉ݀DWouңLl+C2,iriN4xO=`1l#m 58(&[u4\1'pX>lPdXpie.zH'.z4D' c[V}0voB?08_0-O&|)]A*XW%@4|e +f=) @54^B JJ;Mr'F* 竴 +GaC؀l09e2o \5ci.\`*pN̩*~9>r^ܷKCx^yet&QB?%9=xbedmcd J 知|جC!d9]9 Ge!G(ޞd \4H螯jpNEe&f E"Ήo9_f zCeqyCΛ{C58'RZ4iH`9?]\RAQrE8&D6_aoFlSA+®JMi72D76TPلU%kHϤ\cO +}TIJN:X+P@Ġ7#Tl۝-H3}GLTm&EvكbF5&jsW9 CuTaYJ؆u$6KJ/_ruvb=/ULM1L(pUmf\+NELS;*prXWGknQ: fbO#0>Q&q45`@!`Itץy`I*zLR[L]eTL,Y'ZM> C5!kWU(%رI9 +N):= w6OǩvҵnjFפh[OnUDOQ*ds'!4HʚE!f[U!7&/Sئ'=];\>AW#3Mўe47yOd6SI~X\}}}z)vK"@&P\jY+R +[rs!z f'VL}%[{z=~vs.U-E)Islp0[_19v[zwi}0pv׿/xӛ/ݿ+?- l5s_?wuG>d=sKa m8V%W.9ś]fN-8I-Ł}58j\RY kB֜ߚ`*{}Ts>Q)qQ>c `tL71:(a1S*6Lkmٙ +˓,(~yɚBLa6ASe3/y7{J>u_y@U'}v- +ToS8`+řϺgPEkW`y`a(h4Ts<:cY`EodY4{r/Sv/Lհw"z;H?(t|՜ 5Q*X7q#g/h$J昽ޛ9<btUuk]mx{s}}I\S,p$VY5/ f,zrK2#*9G 5k{r|NVBIJOT<%+ [Q4@SICP??4'al<5l~w T {=>}shP}|G>X0 2= +j(Kg<|c6u%>Ьr\sWg^_f% +endstream endobj 6473 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6474 0 obj <> endobj 6475 0 obj <> endobj 6476 0 obj <> endobj 6477 0 obj <> endobj 6478 0 obj <> endobj 6479 0 obj <> endobj 6480 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 6481 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6482 0 obj <>stream +h[Yo$q~篨Ǧ!TYFkvmZ֊v +Z;/vaW/ﮯ`ۋy<ؘypb>]\dp}_.N 7A5g*jMDrl8cygFtkV;,P?B8G&h2S ;"u'C&%uwe4@#$>]p `lq + ۂ #?OsPr&wC͠hA`m}8Rp:RԎӎ#Ԃe\#(EC q_, AMS `K|*Eh8RqW01T*hM8YyhP('.[~/F3'+r~z?hp6 1ǔLe4ƃAA%V#oE45$&qN_ Ov 7 .JGeHm[Q>-59,{-S nnK!KW)Dom(ٹ2mťJkX#PO7@g lnl߼@.:ذFZNnƁ,~3[ypoc}qDh6Z# ̄PIGi#xr}KSzp9<~"W]|/ՁID`+lmIfA5=M04Hxm^yj +ٍMIb;fZxk'xcx-y:em?䞿iONEwηs"a1=8'VX DYUOjH#J6g`m&T7 ?bl$\,(TGy5HE%^tZfm[U"hN$l 4,bSlԣbHoGTľj=sFPa4cViR=?/lsy77#WFzX%5H\B <7?'yo?\~4\$ xWGLT=PeO2\f!FG ܳ<*pt2P`q|ɰd"w4}`:ŋjMӆUWIDxmևMӉYߕRLcAQm縪*;#WRNLm#>0ʴH'"0`Xme9B,,1Ů+XmsNH3fHFH##.lb6du6h?c+{Bz+lD +B$,gRsnge[K IO98Y;^Oq=Zqi_؞\Y97Ͽ7,ztW@ǟUp}aּVA޾q AsSNM f%Չ7f+ЁEl 9k:wNnwNt$9q[yoL$Gxf݆q= 7%ړS`|wxA F:CRR{qSEW*mOyzv|M,:dd4HnٶzmJO( j^Zb{ +NpQ<9qo} +y4r3纼Japk,x5ڻKx~n xX#xQ>?~?4Þ/%ґ~eRmp is<*e?=~Oϟ[B>l~%)BJ ~%ȲaF_]>ӑ)C;V9WZlXhu9ׁ2{Xe. %ބ +*rNks* +{v[5Ai"cyŐ]c;PU>^W[".3vEe ⰗujKȚu- J[Ҁ֥k2o/M]/#5ܬwECE-OTu:r<Nʯ5͐zbqh/r_?Lp˥Gk,ɫӵ2R<<芯.BXNS@3\᷽J$8ƔZ8(#y?/b+[X:^v;A%DxU=Wk#0!y& VM:O} yjaP}qOW>$L"'W#T.}o**)z#N(]1$J) +wHŚ3NIܜTk%<"z7nrM^gx_ƻO|IWI \lJĪ5-.35JTgM )㼆tk&3(P Z=~ ob7 (vݔI_<72'7.+U6Qf]yj4i5 mD˚~|bשʵsMX@IQ\Л^CgC: +7k?$.ȡ펩MҶWGXG-XYVY4WAbuɂ+؜l^6jcƜoQ[j}^ٷԯ~,Mzm%OU#u~ +Vϵ؎._;J̪MݙF7~]+$Sخz6QnNMn^+t\̨Nn ܷvjbIWJM ZnvB +.rC"t"}w3vAU5uˀ|~gWwD;toޞ{s5^&Cχ$ЈP|gU> >[tUTL!N3P +;jWixF6"+M_3fs|m>0rY66xb<^YŬb @27Gl2o )n _00l7G.>ง#apvm8|p"xc t|>\8`}o +ǝ֎!>:GtSi,2X *񒄸l^.Q_ώi9 \=O 3rwkӋ}_" ++:|Y$[n6I]I7ݢМޟ'.Y$?y7qW nvkZ/a]banz d\|Ysگ|Jе8=ek\Q%yuSFHii$N3׬ aԀϨ^N#}6wImd+&~OnxKSbhff^5rI2]6u6BPn(9tzE8ޞ}ڪp{t/ބ`>JYMrGQQ}I<'-m7# +hMJYJ U+gupfj*pru|3ɴ`蒼ղB'zeZnZ PC$yE0ᮥHM,4*Mݧv/SռWz%d2U^K](_$isuFꥫ@Du3Ԧ_V [$u2\ESNanU@M-iٕ+ܼ=h9X1ʗXoTےERj{U#BRiyE=!ޒxPiI3b3k8K`פ ar'4 j8Γ\'E[@" P!y>U.k3pY+фԐE@LqXFeHRD5'oRSliˍ A8-ğn$;TIsE%+g9Ho/z2>!#tZ +͗](3"1vw*&Ч7k;4mYdUEb}+Jlj%6%q{sLw"d (mpWTDsB@cPwJ@3T .F}+ JǞ]7솓ky67@t6P`F,V%heH-ɕk[a^{ :HFU,` Eodoq^CLmnF AZ賴[d*Zf5^"&NW}=?sH6 +"&gJ$=n?- #t1(z_ H=`N%1Xi>rۑxu^xF69Q(jW|ns; '%'}DaWWh9M_aͰ@UQxn${j/Xsh f)&Ř-á1isB^n#bи u7\wIb ;uSOh6(<43e_ vx|P`MZk h(s\&)q5K)Gzu*s닯y? sw +endstream endobj 6483 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6484 0 obj <> endobj 6485 0 obj <> endobj 6486 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 6487 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6488 0 obj <>stream +h[Y$~_Qk>(V`~~YVaV2+ꪙ]X`"#"#ȹ.e_7{߭_8zztxs#ل)F7ۤtWY) 4n}fR.)5~n=4|~gi=Ifx  9 +;#g5ng=ۅ{M9hO.z6_pPf.K,AK`{ +q8偶<,?="|4朧Ŝx jfgh D %yg|' +3|4}=ЗںNq^% NScA\o00)9$PIYpo}nh&`IVjPMy鹮w3w:K ai7?~}0]*;MsQ ,, G!"N421jM$鍴--ͬa9-7 LNvvgf -x/$X`\ΗgHg`[~'jjV4kUÜza{gh;FjmzFeC$vj`a66s@61I Ṯ4aLg︡{AUaz67So#B~gOHNO;]@m&&H6hFk l=$;rgHI Bwc@ŶVp2QFfL\M&\:ތMnN>% i(# nӬsDƂ U ޻X ?m?5Wփx"cԍjуEnS=ڎf2I6t'9GaK%"`Cfܓܼ'Ifeuvڰ-ldǃ6-dSQSZ&M5U Dj3atgt$tcˣ$ۄN>_60>4ؠB +YkXZwZS\ 'mg2fA0 +!X!!d+a/iנBB/kpcE>3^4aL`ǩ.Rĉ:z:Hagu`e,)|`#PnvE nzx D9&:3$ZV7_ +C J=0-8tn'Af- a3'}<@yeEǧs(_bAEH<{Vr;+|Rŕw5W"N,/ ΍CNI 4]9gh"h=S0#eGʄ_HKpD'f#bwDZbzmXSrwՃNYhn϶I]$[ !+Yؕ _^G׀jvx5'w_PBDtX +Xd@d[]BɗgOk Pek +OD] Խ~3*z;eeY}({!G{mߡ!{&w;wIϟlLvl #$ʹ?|| gz9ԅ5-1 h8R0<11jXTԏ; _t{C6 +vHK7ᠶQJftXFw=EWڬvі 4Jsl"eTE ज़\иM#qzuFD/#"R,Pا\=^Rng1Iβ#~"$5ժoމ5 l4 aLإХY(y?/8K3&C' S +42 e-ռ!>pUvaqNp:4PTSe|d%8"ȇd߾9R9VbBb1pP,H|ˡم|J$k4ĉN&'8 $N9fn2 aNp%b >;b4/[\Ϻvs+|WFqJ >3:̏B)=mf5M M|hb%t&Pz,)bF KF\5 -0 386*&B%/ j H7$d%Q)kC^DoYf9D6M7Zujqe ;y , G~P7KRBa78z(/EkK!Fi]yUrq-.1༸NCh-~_śYz٣IY8qq(CŷNWR1N_z?%APi\xTʌ*=/ïCD*2sO'l ?a^XAPSNJYi'2 4/ r 4k=VA̞3?5Lt 2~S f v0AiH Rj= {fS76qܫ8w(B7$D[W6Ab'bm;\b>{Hʥ'#H^jm+q鋣@dQŜ4(S1r.iՊ&p-ū! %}MHEK@CZꮘZ[6q+c7%csM.A R(zNcm3"Wflp^P@SDĉGIl-yYɗZIhw Ԝ?> MfCCL1h{?B ϗ<{7x?|1CljU ^ +]1kS~VPcmжWlKm͖bF{_UE.0ĥ{zgޤ9l7b7TP$zϩi +a֯we *'עKOVaI/qh*Q.w~{CRjW(jwԆ}VjGk}+K}4HR`%W,w+CJzvt_ӫw +_TS7t=U?RR"1Ap<ãk&c<>^jJ .Be.yuǹrGu).]V0hṋ>/< +d.Uhü.ܿ* +KCΊl`CZ|6"L\-PCܼ I:\Y3$\Klߠ"Ű1y@yMnf;ʽ/!^USvH2 _Iqm!Yz9δpy0&ǫrG(1Zd2yR]&CK3&;fH׌Rl5<kXJopw[l=NMS.NOTZiz6{wEO: ƣ[%$)B;T̶~džj.6nZ/Y+;۾7!_99U+ 5;K4\Sj^fg}֧A06.wqLᖼU}[bWSq:5Wn8<Ɖ)ɒjXn\!B_ܲz'(z+/w r)M)E(!Cd{a#6_lgm{]nDX-IZȵt`}WBXW102Բcw[U/ Sgej\gF?VG惲 +endstream endobj 6489 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6490 0 obj <> endobj 6491 0 obj <> endobj 6492 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 6493 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6494 0 obj <>stream +hko#~^ܥEۤmRp) +K'_\ε]RiC֒!ku뇧pqq/\]>]߭|qrۿǛFz\a<UCs6'dQa'.z t\2ЫFmzSZeZ9|yW 5bkKm~W$mS61@%{Z2e,WF9*  !^ ~z +`.zp qY9Z@%hR!&hGkѰ{ 3 7@b 09/a#88!—N26<(sND8pF!SPAG +[tW ܉b(GKe??p7Q+d`Š҆;yv4 Ԋo`A0pmF]Uܿ~4܁$"Al oNο߀ݿ?=\cv35f.ax"l7UBBv}{2 Í--K{er@JeԘ4|1a.ތ!t{ b;Xjk|Cz ́1g2Qej0tRjlGJk ~'etіV*XbA$vj`6* ̘hlRi>JArㆦIhxoQ3<E3D6njq1hFk lq::8R *DzA5!B7:gc@b[pMSS#H\M8qw09|'\4(# CD #1@Gfy8֏**F=~ LHF 7 A(Ƒăj&n<91@o4 .K-ҏ$ޞ{:(QVj]iP ycm'Av5Uer+Vm:\[Ѱ)KD`Y ' ѓmÖǃosbE{K \>X np.&s< #>BU$ޕіzeGripîTzd6 thP2K:;);R41 Dz5vo'M9fTJա9|j5yNuRUyIUgߤ:vYuG c{"3Rm +|NS:l׉NcQ;ρkvhf:d +ŠcC~D<å!^G+4]!ёRX <3d_]Dd)Qd L,iPL3FK4~(`HQov^S#!>L uxf!\Ȏ*_,ܻ&>{Ǒ8Zg@>U)H8*tlְrݱПul -n V!~+Bv׹O|+ڒ,PоmnNv57],"T<+kM6Cn;8'~_I(@ؙ#&g„&RV$_Y:%D%ꍅ[c9Z|(-w>qJgEJyUZ=zeK6ZP@B\YD.%l9 {VP;XB'9<5zsx6g3x ~EwL 3`>[xkֻSG xid;~N.D~qi. ˸ ]ҋD tT^^ z:i-v +(T.4q>= fNtW0zغ秇@i3h7Ljx4nkob"SZr7x[Ś ֢x%(q(Ň` Arܞy;ENX +M$l%s(ڪU+MM +PSϡ5m]MQu -^h,buAJb% +D|+sv;_ü`;cv=J Xa6_iURZ97M0ޖ)*yNa8*=rrdN*𱣊G.$-XX+sZsZx)l$Q^),F`;fN)i<%kJ!1Iq8dc(Sb?5c6Htayru4*hu'7QK\6i/zs2&(5W iEgI.EL86 cQNK6M|bq+5rƊ~ˆ=ۦnk)kNTpnS+H(jG*E i~\}%5WVn.I tF)R{:u7٪ !7D|nFf7DNVYu8Һd.Nx*ON7g>EWc L/O  -ָX _K*XKrV9qF>C[ZʁqxUp.lI +/Ek^A5-7cJ|p bG5eAVj(84:0 \[D/E|.M+LoSR,yL..` +p+|*%>I Rx_(._KKpq_\+ |i}.../չW)pGxL2W:ϖ FV m_;=Ju3𐟝އһ?TLs}{J&_S)F,:q LO. +yxKq餴gZ% oԦޑĜ%+9?sϨRZ,ƒY3;)5g+~q ٽL$l |34ߎ>D6z%G=+>,N*86E/Yk8I@E *DkzE>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6496 0 obj <> endobj 6497 0 obj <> endobj 6498 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 6499 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6500 0 obj <>stream +hko#~ Qzwi6iT@?\>;K;Kvuq" p0]r8ptӰ^_np7wWO7w͋W/.w5}<{=nY&J3lߝ홐Rakh^IiNscENas-%Kg6NhJ<hH 𾇧svM#WJ5;xP禲y8JOIeެpk)%a +lO"HDB2Y+?:d{zPqڤaCJqx8]e2z),2IRcI+k0P*Y+ԾvR;M;7Bqw AOVa"4Dv {g6yDdrBip~pK`.ofȘJZTSF]UfV K a[7g_n^?ܼ;<=p!U$>AYiX܅LD2RdpۆچZ(r{@J$e +4apz؝kBXz" bj+eueܣalKsIVXۀ6XU8`;VJVZZU opة}{ҭG6!I|ז&` S,冢IZh`-*|>[[]_FxPw$A>EnHp&FI4ѹ dpTX)p@/"Dh @HZ!41.KSBfLlMG&tMVDj #}}+^$vfޟ 2Y/=jx5*f).^yAއF!NqZ7ݣd-5PPE`h "` 'U:`8 UY$)#9GaTmKڰ-l`@ږ5c +-Zzmt5n5M" +5˰'>@G#k[%O|Ky:dGvm +Vc؀SeW~ܲRmOR +Ι~ïb +%:2̓RӠWݾbb!S,}1~C&hiz/jfw8bw" %f&Blg?|ףWDFq6mT+ K2Po&',8C%QpÞ1BTӬeFǹ5 w azl2ӓ2KaUo&W)|6+#Twٴu:4ղGa`=eC(P6lu])$7RPHKpfn)Ѵuђ3&RP!&/!yo+ՆG7WsreBW}(shYbScצ zDxDeGc ]f%;=<Ζ|NUB o>ݨ5OMRλrfLH\k#+,'G_Xl_< >\}4쯸y7Sqû77X3<90 [߽4+}>|חnyPU0;~~˯]Ɨ4q|9˛p~C+a/~q+E8b@-典~Tdlݍ%bPF g鼑\<`;:mXaCଢ#Olmӈč&&ɽ?0*sq Ds뇅&dž&pC?9UO&gб]ڡ}A(A$9vBIʨmmX0_,wP3(jiegˆZc/V r\\B.%l +V9XA e^,2lKK)B`^2v..]Kks pq ^X+KKg\[eh ThЖ*2t~UU +V +㪛hzӪ=w0`X7wԱ/'u@͎TCݘ\MEhs$wP>]zcrn.ƗH8L +H兮3[v`FG +endstream endobj 6501 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6502 0 obj <> endobj 6503 0 obj <> endobj 6504 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 6505 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6506 0 obj <>stream +h|W]\7 }_X˅f +@af6lُfw#پs'M0slK>-ۛ\\y|a_̧n8!sUƧlS2Yf~̧d#6o΅0~(STDr:%+rM2OTR$[eeɲUǐw ҵJ~55>نPpPXn2l J%:8gdja0"cіm#6?[(> 0зS {)hx`/= <{5Xo;DybVc9Zqwn󜜭ydF]n}>bs9[rA_{rIhT:!dh-l|) EKmu|x1w7r*>XnӪy ( ++hk.4f?pھ/n/Oys23<2i9d(yqL6!^ww6V6z]Aeo).O>X֐!uDYX߼uɫ:Fbn#"2>aCd |*CM\JXSN#"g7Y2RM3 no0sQ՗!BvyFn >YPL[qěۃU1ys~P6͸h.dI-ie39.BA!6f I!r#HTy#Uk"!2kZEX!%W_LlK$)]ǂ#ZV4\'>j,ry6, +A\yqX:ןsoxn?Ρ;,P o70Nv$ӣ²IwةEf۵'Uo c@4 UY.znicR~!7/-AǍ:&ƅNi 橲k\ŸDדB)^<=7:w +:çՔ}uW-͉`$]3.^Xp eU[(]7vβ24U?]W +endstream endobj 6507 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6508 0 obj <> endobj 6509 0 obj <> endobj 6510 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 6511 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6512 0 obj <>stream +h;َ7<@y@d,X; `Z喡l/dVԶ S[d0q0w|>wo~xW/_ݏwv1CQ%.KJ^A/6/gh<|gߓW :CZCE@>U(h8g2w8Ei(w+Me8nW{:Zq̞[Q@(F% :Y~vIc+,ʧR eZ;Y-F:@B ԃ)/0z-cpɿpUD̞A7V0~l1A^;>,w߼ofL=)a3{@r п-솟^{>s^w/~GRO:.?0K@<$YDZtb +/孴2!Hh򰰣*.A+ rY;t=@z2 b;:jǶu0u9d}nm0YE_ZP50&=N,feM6(@Z;*pVE,3e\lmiU0@*G GxBy[o#~HO%,h;;iPUEO̮3*.4҄FqHt:5\<$"$hECV1.W [:5a8Lv;Ț! ɑ߆QNܶ rOeJBu$D .GâMʼnM:}Jf^DiRm[j(PPCd9q/D< PCa m]i*&Z-Τ eyPqG㑉#vJL/iFPbTxlM# P!AZwg!i"o +ϋC!->yu}Sfv\ Fȫ3it#]zϿ}<36r)AGp q we y=F!6ӄeإ8!O%Z8JS.p(S;k4+tFH i|;Zl\1[-r_z !cag!YBE/I+PR~rfn2ᨬbsgDtq:{2=>qHi3}"ja HL=MhB{-Ee Yvt}P- 7xˣE.H9Q}N;^nD6RC}>:\2ػo~Hl^wT`oEܩ >N||\4Gᒇ;ܶmJp#Ѕ%^.I ΎK73<ߡeݞCȹ (?][<~El3T`#(;VbR;QQ2D>Ybr\CtkRM:5M4(?k5|o. cWhGΎI&\9oj#4Y@ܩ>[g'?ċҿl= o;aK t=9!{CKۉM-+{/n*y #=5Qq-*3kSwR$yIH,^`ϔC?-pB0+NeeFqcƷ?E6E}Zus?䎸~ڇbJGA^m?]4 @>cf|H9^'xWx7A?_X:sb;D惿6į1OvzWr. W4"NKFugrZ^$t-wM#d +qMގuDSl8n^8$ߏCJ)kl;>+ٝ+9Gc>sߛ>5 do7n쎗H FIxis%n$+qt.g^tԿ\P~8|͋xa{Ow8z]6I<,_@ B:` <,B'U`Lr jZ(ڰ0EH7yXA*eNv;rAlS0lCVWp] bS צMiP=D Qc`52`JSO^_#/>%/n#OˀJ^WfA + +:`F^3<#o,yM_̄/+x"|o2mr[3Pӥ1t2^sȀ)qO xF'.Ngvs3l>5&dutM:<`\O ||O/P 2|~ç!qd{cS |qxk`<`.O>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6514 0 obj <> endobj 6515 0 obj <> endobj 6516 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 6517 0 obj <>/Border[0 0 0]/Rect[162.3 303.2 265.08 314.36]/Subtype/Link/Type/Annot>> endobj 6518 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6519 0 obj <>stream +h[݋7߿h[  \{8a=5{KwZ*TUR|xwsx?^7w~vuW^z]aĿ<UCsFv?W܎?tm2ՉZ#hCgiVFV„ju[j=ֿ%zMW $6a)jl]2VRwF! ~tnQp41}(36-뱘UI[ _&U1AYgp -f0ƒ+@Yeso(d}G3D4(cs΃r14* TlЉ] L1Ttѫ`D0_3$=%265Y%7Wb_9p3m+~¬Cԣu35< 9p|"0?]]oٛ7o_>? o1wa8gjN]D0OL!gr!!WjcFҶܶ6J{_cY85&_! NJތat(= ߵs9=L&N*<`U1iv{U4сPU`1H| mT 1̘xlRm6*Ow H@x 9m`i),gwha]vNQ3-i145F *ՠVY -za&#VM+<ę$+ũL}Sǩy\ VEhR(QFAZvJIXn`IѦQ$y(qE䲊QϢx$yV?Tcn +䁛!(٧f8x&yʱ C#~8-K~!Y۳ڼgEHFY-*,9j~6 em˧Z)2Lɭu8>YX-eȰx|`7FϾF-O z~GO;zJSMBa&ZjWmSR'^W?ȑ0@u5ڡ 1~Df10D 2’[827baF32,h93Rڈĩ/Y}Յ f산Y\F/jbȡ`}`FKG/^*Eh_E+%"+SQ*gbVSEiPd*q*q +;-em *~AfHvpe99K_&û)_6Jɗr`o_L7mǽn5vL 3<1Or"n}3C&knqSbb:SqPVCF\ cFAC7ia9L }A<2+r,w ޘJ4>&9^~zI /%bSha獦?5v1:>e*9in*Y$6E3|(D1)Su?)aP#eF: ϵ⹐)5tR0+Dɲ$ʘScKJ2cN7JQӀ=Rr3'wvA@I7ǝ4)7줽OelT{.6q+{U]_ }>J SbXQ+YNc)mۘLlx'O +;p^<ܬa;FZE^6n;YXlIV̸R оr^jJo ѻ +]9>h#@Bn@O1ހTG>+M3˙ҙɵ".)]Qw7Pdv^ "iS8Ydܥ:I0{zx{Beɯsr@Y|KOiyU/Sxji!d\NeFI̅U*Etҁ(ssg>|8n%_%_'?}&۳qqwN/l)1ˮA0wOt +fKDZ>u'Q!v؜'ٞ'wשr +꺼j7 08^.}ET)b|Y%b^0"OS"}FYtFB.j|O$;.%A!"nz9N¹m?A:{x pwEzdB w ʲ<ȗÌYe3wޥoEz!m֠ztr[d"A>w`FO§-͘O}I.tϡxQn n%6 /Xq4Y,F3NHLld6:S(jJuihCnwq|7y9N 2_EpG+.Vyt2 2B\EG+zΊMb\>L6Ө:g}WWtCL5VZX_f;5H),kkANmK7Ȯ|xwsx?^7??vtuZ^@v#ƓT0]ejg] +. PYGp.\E7ZȭP +ȳ@- owr2C|f{`G] ZR +݀~42n g-pg9)Zo P&7(wp]PnOztg|Ϭ ά#%~fpfDX +1N/{x{5 * (U*|?C6 +k2.7x _W˺gp( ;3YJ 8BՏ +=Y{nUN`(u~g3(!P[ +|%PgT uN`(u(U'΀(U@2 p43(̎跨+lZ? tϥߵx˿[o_/-[[{FX^ )x- x- _> +- 4'7ƚ@06Q%)a-\W(ڝCH8s([@.b];E>uL3{/[ǧS-|uy|ksҙcZ/:>]+Ͼ +endstream endobj 6520 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6521 0 obj <> endobj 6522 0 obj <> endobj 6523 0 obj <> endobj 6524 0 obj <> endobj 6525 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6526 0 obj <>stream +h[YǑ~_Q34&e s-3mi,C~̣gz%-V ]YWEd߾˗v=u]nOִG).-9۷;|[P^DkLxa>o9D,~@^DbWu +5Oܾb67ljew<50<an?YOZm >kܒǖeuֺ!Zo^N;aMߙV8lV/D!,PhbϬt%[R(%2V)O> ++m),܁@l9ȟ}3.ԴԵЋ:ǿ}o'ϟ:gOwiiM@OZ +T]-{)gݓ^w~o^}77r| _M I˻#4, L"/ǷdkXH6){*{*(k3j]PS]P6$έ&9jo`\zS!a.}}`$cO.5V)FP7X@5;- ,ծ āRtE[ uP]"~\m`4 e:`x |' =TズcIn&.XQpĈA1{'E(T@@"Nzx jo!\ $(%KRq[,[kgXT,IȭX +^_6틹 p8 i(3M\w֌%A֛D }iYA&Gl;"70h6.{D|yCŔ+j%yX֚, F`8|,.;df4#I*d47,SKr*YXʁ?JHS)L_]S(:G[T Dyj5_|Z+:?GZm`Q ??Ie={Syk7>tǫ{vq`'bRO6t.؀:3[NΨLKAƒ*a t3Ց\ փR2{#%t^:iIމ4.i-PVDёs³ 6C \o3)Z"N~s102V^ZiI;1:Rо#"[Mށm` 5٤:NX"m,';ISWБ&=}$J}rZ56R&1lujCxt~E@ ™,Ls+;hk&&Egbu@Z,ɉVJM]3X7h}-ScR>QW_kɔ'ӊT1$1% Pd|sn;Fr@RNL3 #y5mZ6ܝNB/~eZ-ߞXh щgή۽-eٓq*ANm`xII2]bDd1fdKD$}ҩ9un&n+:{3rt@G 搸جó{!À \5 vOWu՗zu W_ +׳GCM십W;Jȭ[ԙX+is>ɚQb$|e^P?a"i6945ݒQTa8uzmxӡ!F8.Ssf)naބ!d"͚ꪃa`).],|b+xʼnpB.-k'~ z 83 "ncfD=gqe|uXKo|@MCEF_~ѕBI5$q5{7ߣ" dIE ܆2NG3b)yFu#ueJ~#kqQ^TF'= G\ܞ1n,g'K(*E8:'ȢBÍ7[&Ƞ54nkYCf S1VkS|m?6q(Јaes0AۆEF}:d1jp͛\DfR8{b jR; +b|{*f֑9Ix̆UkuoF!QDezbo)FF + +aRMlW Z q<bb'N/iyXMIlRmlm衆ᕆ2 +oN\1a8ztz:ń) g]"3ws;:1`+fgkĘiBqM{/METbr!9YSۢ_DId^hʌZ(rUC6JVZM1 qfR.k~fhhF띘}]_ uC,$(j]ʀ-,).cOlpWtψR{?3qAw4%SntA쎅bōq.t$F"ŠI/PW(_`)E H)5Ɣef9T_Ps(Hq?B7'>!b[ eىMZ9(5`G²SOӀNw'\^V.A|JN\y]:*v]pmK]Z4͆:tnTE}qٷ}L2ɛ%ט݃z,OOl=/-Wʪd5ia^>Wエ3n 4ME&gko !VҖtӶPBf'J]iU5& YXJ0 +&5[ߔre|pӜt|ᕾ8_tE O0`,9bA`E͞#/;LwbW/ϗëÛAskz]ſ} +1TܤN^aT`<2d r5tqNZh}\yӉw^UWbt\6,vj4%}J .(zXĖϮ"V֍oǟ}n5[`'TK qPPVAU h2V-D[f;>o~#VtSŭi%plܔҋ~x^0?n3laÏJO4 19U:GL=7 oswwonsx9ףȿ&zNIΎ[ƲuECoɬaK J`@ې%@ly eWEVCܖah)˗ Mq^ydCᆞF@Ȗ =N97_l&zG9q?'˅316=LdT OqIF3i!Q,>phKopB3KYWuMuS +fs^c;Th6SU#~{_e$\{[X)b:r/xނѽ*e0Rʿ^HfKr$i4_^ſjR^˱^O2gΚZȣ3Ӻ/AnpWך=B@lJy +^ Bk)Cq7r%FRLĕGx" r +[?yQ㶘 bnFv]y'{w֎o^F3ss,i(^8-$kD/(_k)g=vU8 JKm0ba -W&2m!,L̃wTĩS#=LhwLvI+C/t  p@>(RdFHrx`@2 IR F+hzu)꠻kȕ*OLxC[.LRp oh_ H1 +endstream endobj 6527 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6528 0 obj <> endobj 6529 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS44790V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6530 0 obj <> endobj 6531 0 obj <> endobj 6532 0 obj <> endobj 6533 0 obj <> endobj 6534 0 obj <> endobj 6535 0 obj <> endobj 6536 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6537 0 obj <>stream +h;n\DZq`z_e/uKuKu3kK}gݜmU}i.̬#$`A>Fi1U5-d]u\-1`=vZoT7Үz ~; 0I ; f3&Z $U:l`\qES44lPX ]X*'qLf[$з!r@][^,#][\r7]}:TO'8oHP1 ycIfWa3 3n3tE \᫘7<)˵hڝkuCS_'6EVsgn8)I<㟰[}.EVIhb,O@ C{b28הؙT͌9VF{֕Ц zGY/}~ я5ɡ ~֟qOp#*E%:vq^^9wy5M`{)WGӏ0k?J l_YJf1Ϙ*dOm 8aghv*g.7^lg]+ +dV`YkMir$8zq^Վ);#VT;ҢB%a; LP;].SsǦ%J\-6iz|әgC}K/0bݭ<'o!bI9̤3RzNƦ%5k}G/>S[Y\Ht+Zs c1]4y.8+Q{P :?o*~TK?O1C6 ?UW`rYGcJj&vIŕ|+ r .}W|+ +d\%}k7gE7@3]|$̰Tt 8줣z(qGX?ldM5'EVZ?.U? + pSw6z;Mz_SƗ:mfӄc`Vpsf'یfy^ɂ )yxqi/// :!!vxt|{3p{wO58zM&Bߨ{tL2!^_J]=7PqBN?Mvz{haK3hLdpf=+Wt7C}L!WQ3|- ~きQ[d}!:2FZYt-mnŅnd'|@mUj`@zׇZn|)(( +k@]MM ߊc2y9V Jbve@@OۻO7e!KT'D?|[X`ւ.u#Hg2+A^>>~۳ZuwМΦ;!Trwxa{߼* (_M(3@qfA7XSTYX~ŠΑAw/$C) 6'KtxDe3YBy $.]>?<]aAԚ\\V? u/W'p(bAhbb)Ϩkœ翴_6uNit71 ^tepn$x*&Жvg @! aQWHx2[wfdC>苡9x_FRc#ZmH+/?sOmFe0} +mSa)cbg <: d Uj0J8m(QbK8_f]ؕďO; +F +endstream endobj 6538 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6539 0 obj <> endobj 6540 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv37838V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6541 0 obj <> endobj 6542 0 obj <> endobj 6543 0 obj <> endobj 6544 0 obj <> endobj 6545 0 obj <> endobj 6546 0 obj <> endobj 6547 0 obj <> endobj 6548 0 obj <> endobj 6549 0 obj <> endobj 6550 0 obj <> endobj 6551 0 obj <> endobj 6552 0 obj <> endobj 6553 0 obj <> endobj 6554 0 obj <> endobj 6555 0 obj <> endobj 6556 0 obj <> endobj 6557 0 obj <> endobj 6558 0 obj <> endobj 6559 0 obj <> endobj 6560 0 obj <> endobj 6561 0 obj <> endobj 6562 0 obj <> endobj 6563 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6564 0 obj <>stream +h[[oǕ~W-|d8F!d! Ǥ mnHڊ[RK!O׽WWL?>奝tysVf˟Ζdzy|_~:nYaYY_sP.w"$蕠bq>Z}¿+^A[rXhq+Lߋo.<֕R٧Rt}vs&4vءg|L;!\Yf8m;H5$)/6kX栥+.p{D؄=&'qNqd@nf3_✧\'A&fcë7w_~qzx7볿4Gq[?A73P30i+%lֿzw}ۻ?]?iGV+n +&?琴΄ˑ /FB9qrk䒛~=MIHX$~"RçiAI\|&_>%hLiTe#-TQZQB Ɠ̃r.% -X*a @ph .lݯH̰[)0O ˾o 2wJ_ +YJ9'j*PkkhS(YuIgt$Hc) 'Ǝ?5Fn@'y <;8)zѣgt=e]#o;v-bA8&JpDD IcXھ`oAs3tl49 0(r7_6oo9Ϸi|\(0؉l+.7"[?* Q@.vL\wTNT׌,}u:e)MJu*U*HA3UxNEy d',0Q#,ćמ,[Mљc8jx0sT\ +Q2Me [\DnQm4}]9,Ώ Net@Rֲ-C(Pƈm Idqiz`qL=ElʗZ\ŒT [' ۊf,Jό*geR##"AN⫘Ūj@D;2IQLLo,TGS,_ km]Fƾ( ۑpAН#@A BO5ɺAuNkiir'.8K=:E6;Vo@mSw#f&J{V s01nsM džW?#ރ7`w}jyQs IZoc(>+7yyyk$A"VИf8<;Yi\S2Np9uU5rsu)mLm_1m֣U3 titsC0k4ުuV;ĬZԡ2 ,c R6vuNHdB.9bCѻ9HlfA-uD3# 1&PpӇ6-( rb",mw +e^UҢ aQO`<vRj6p,Y)u1q/ L,h*4=5Me:|Yn)r-‹氭惘& UT@iZS Վ/DۺS&=O>d% y (YLbfZ߿ W!#/x?ڱ,ٷhu5cnS#qiFĕHMwQ*r~x~ߑkM(ˑgoAnUl9NهڧoͧufqN-8uKRc52û0s;Q=R"Wop8w ⩠L;"*܌]\нz B$UFEq7C'*pOARW|ڎ.9ε|@D_ mI&6쫣gt6@yИ4t*pe+nZ&7j^zYM&@–b:ϓVV%qj5p?ys". !rUe{"SnZٽ]JͼMKbh D`uis-s|d8<.p + x&lO,Jg^,B_oozut@C}ibw$DD vz=H077 ;8uW}ɸi&_QLKmv_V d >AS.! 9iwnDqiC?l)T֥G/*YBB+p+)fwNVᰇ +##7?RGJ6rn٧Q*[*NKfj9F fɡqtvLDĊ}Z@>KtW Կ'Jia'ZݡoxuIE R%eF0cļTԀX.+CwQ̢=[X'Lzږ._ňABTNRi¨ܽ4]"vhu0 o}6V$DzC j6Bh|(ɑ'$Qge-y4 > *1KE/-axذBKFajT9u}+j6% do:thEl`E5\ޖk̓TwwB}2F Ŭ@歼PIxCo}2 w}i;hm[gYG@S~L{?!LX!z?G׈"?|wE TfUOӯ_z{{u;p_xkMx׾x$/wϝnp?omwǻ4Cv EKP}:rinZ\@q:' Sc52K+3G8az+yB%-EZ/JͿ[^FYr{rn -Qþ4<܅rb`#NQySY"x$q +hh񭰯兒;=*x /_]⣅ܿR +CJPT6+Q(l0C00-F}^v/Iza-1 kME"N_si;խSYA^J?ŮI0 +l/]s?im~ {-HeqldߩU.;ѣ I,#9X*{iU7 +COvn|sy 5^ +endstream endobj 6565 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6566 0 obj <> endobj 6567 0 obj <> endobj 6568 0 obj <> endobj 6569 0 obj <> endobj 6570 0 obj <> endobj 6571 0 obj <> endobj 6572 0 obj <> endobj 6573 0 obj <> endobj 6574 0 obj <> endobj 6575 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6576 0 obj <>stream +hތZ[o~GW;CHKvPdFr;J ٙ3~._ 67ǣpa¿<ؘW/pOrb:qf +@wxea\NvH20ZsFrF q=qLqC\^\b??KaV#%xKJ`}o&1<~370+]t߇돟˟^X߀vГftճo2|f6!ôBo\;}rݧןo=p_xS ጃ`6CcJBxfg1d? w +;v4!(n k7fq@&glG#x-JH2 1l ؇CW,p\Ѹ P" b}y̔%R:W;]"tB*Pu7=vxZ3Pб?/eŤ~sM64*jZXz@?Xl@oϪKϡ*F)ZHY>73jHodzpo.@۾|%?]_},KWEھyF0/(?R|X8BVv B;i~U̳QSֳ>DÌ]z63tHXFjPڰT\01͏mHphZT*AC*{3I "Н +5<8-9Kj.jHeV;Z(cLM/O {X'B(x&/q;ܼ]=zw*_`*YM֥K ("%ʖ2&X?؂bZKlT52P堁X!Ht"T݊ +1 z-"X۩+j|u%"@>^?OxۻkY+({~{l{h~'SԜ2ş1BUm|ʇ=q{߿~[)S=g#zzZD\~"6!.Wu3NK8bۏ~}lyQ2DӒT ]+Lo/RU@#bnQD]}H*9,ToyB0SZ×G}ݩYyƣ<%.tFWy+kc +V͚rkUm'PQyUDxK]xCJ˭j72'\SGPkkvғv\1}j TSi]#m@%RMT\,:NC1di'm͔~X +;~j%j f;Kwz-¾+rkm l7tQή֕SY +~u/ӸT[  c[dV}OIX)]}y!oIkfߊ:5nZ=ڦZRtkM]Y^* ȤUҮ.Թ֘Ve\4]=nD ~/9P +1%^,?YvW؀)GLGzթWs1q_ہZx67^Lru4uͷ 8ңf8z ]vvX,4`#lꈄBN7]̈IJkIϓJJԺ2tcHMq35q3țJ!6U{b+VnѷOw}||9ʑ7)3gpn k̟szm A;+ٚN/^"d*>v3T'sn}5nm4)qv3hW q^uN%u*+H@ulb·kxi%R;D7>$15ts~hPVu(wL%[w"72ꋵn[?'n^ o2MHNG#@EȺce`?LSp(;t)o~Co|{65Ƶ1.l7MP| E_ =,_CL)u1-r5Y*TePJV>!3ze!6wD4.NjCokolsyV$_kL>Be[Ƃ*jK +endstream endobj 6577 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6578 0 obj <> endobj 6579 0 obj <> endobj 6580 0 obj <> endobj 6581 0 obj <> endobj 6582 0 obj <> endobj 6583 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6584 0 obj <>stream +hޜZKϯno2 aw$[8?_=fȂ!"]Evz|Mv{{i?~Iٸ4/>~]9yrb0zM8-1cVϞ_=at>ZcaX!:D߃;hr>\̋(W,Byg7e?Ti6խ>ݩl hhO)V~c4F tA [Rtƭaۼ"fz%,A@toAG&SRM +pFcLx?~^޼>R9; oGxQ @F㦣BëOxe_~N +7s L0Na󘕉<]>06q5LlIaϰgGMcGS}\,P^.\ 93'X052  +9$Xq]Rf#-FTȔnbS˪#84aELubQRKf=v0[ב:ByfN1̛nk]KF{GM*UvmN"~]둬^hM;wkVLw!,3nЌ]:aK +2h \l&ܟnoriA 5^˯2i-Ju:̇XWԞy@ch3eƽV9m|М."sp,qRBP[1Y ع*iWtf rwU#bFamP$ws*sz{hOX[tC=644@GfA,t?2txHK8ġAKx iAj}TS_9Tc''M:v P{"rP)sM,4(w! .)ɗ,@nꁃ}#g>muN,GRa.4[_``[T>fwvK=p1A&͎Ȋd-Fc6,q13qJn)\;~fw+üEjn/SBA*"V¾6e0; ~KWte;#ogݕ.lV<-as90ϤE! i{ǵpaw8ɍW磸9irϧ6'&v鿲귰GzOm#㻈gtEy Kԗ2'~}Dץg:Gv @WI1yrrMep1S9#ɖ *[2fL(WL!5y8܇ dEo%ԹΨ1+ֻ|V=Coy-ki0mk:kV\c +9dh+޶]9IH=պ~M縡8%ġ)UIй4b 'B={C(cӯN4~ +-rVno&$=4=nWF%=I^x.R[ +y͸F*gp3hAinۋmmWgۏM\Z>҇27MʺJ o!&ou9g+o7MaL䁉u#%JiHSY BQ:⦓.Z@L}XgV=Ɲ} q}ചϭbMN b;gq +/wO/gIԤ?Mt/Vw*&C+oxRsG>;}NzMdxlni|YԫŽ\?q?t[?ߴQ>WnH}w?tN0_EQ;tήIݿ%oGk.yji٣ v\4/1D7u1h-ύG;?@ F=~e-7ϷXŢ1-h儧nٹ1E:A +/Icx $ZZ-O롽W_ 1u%\_EVnR^|27Ai3:0DH+@D)C1IYnOQE +]h#gzV[Vogviیqy- 1,zG&_qvl_ s€& +&5D I_ V ]KP{Tћ+D٣)Љ:*!cZg-yˆ,wbۦh=}Oevu 'OwuG^ٱL隤 /w0յm;pTWh vVNm +mn4հ +UZuRASFDcXTHUt PAMsLLۿ4eN}}w{g 0Í +endstream endobj 6585 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6586 0 obj <> endobj 6587 0 obj <> endobj 6588 0 obj <> endobj 6589 0 obj <> endobj 6590 0 obj <> endobj 6591 0 obj <> endobj 6592 0 obj <> endobj 6593 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6594 0 obj <>stream +hZK7W(nbg]`g69$F֌3mWU$[ma*Mh~(nfYuIǨryu~]g<\_agjŨ E3<6ji43Y0e7#ymW(" QEj ܫnV x,=ƃ:IcrA7=qX/*Rъbdol/& MֽW XY頮w_~ם*󴶐.ߨ'xif +"4ͮnևݧۨzjtaE`Q7 iFc."$yv:d8^CÎaM^Z=Z (r`riKcu-c$$AHpt (#<t&}`P^GV5#'loiN&2lU%Ipb~Br[I 3 ۾__APér0@{҈pjz+ˈ)E \ ]vdV&g  ;ZMHgByÄihJie'A Tʠ!]$>5#mv&$cwXUɠVQ >ʹɉ +!wUkoF4a tBuJfP};ٸU=wS0 X䟆M :_W,}8.$t:vf 팘԰~`9ec(}bmwx`6ؔcȱD|9a2_A #|WR J).уG)@H!NZl3eI Š 6TVwe,p[yMUS7qJoZO(߮8]kM̹ D 3ޤU KK i@3y<iw޶&Q!IW XF]RS++ʃC;RΝ` ^D/X:Ý:Qul20KL[Du5H^KU׋e~Ϡ1]<#ψg9c:L7ege,3i>QZ+.WBM8JƠ?;j%*9}"׈Gu2ajmq$XM$䋍9Q>gE=H򮿂!G·NPϙ=:mS\`pYNjj {8AE9iqys3* 'G FE RtԃyK@ʑ"bF6tF#I^YukzP駯.1./ս px>kXKqBM&Qz|Lb4_O)%rZ6#!bɓo[FǗk 6F-"Cfq-VaS+._e:Ƒs$5 oQa0W/"!9lk6}[~]-LP[Սzp9 سm+W%̠{&IC7S)5v&טdo; +nPU w}.aRJKGyVck(}I*{Ӫ:)2ǥ]H WގqC9!Zt52G _㳜O?0|YN6k5nϭTnf|%^s|Ma4Kia!.u {?9 ,ʷ@bR$v.dnGK?ݫ{)kio*x(ϗdCA# ~~OBUw/Ϗm5\?M܏nBׯYD@49KT(A}z~aai$@oջNPOZr+id!> +~ 7R^ ]P<-㚞~zz>[d +@ޕi5qڽ+vwT_v<@ ]{?ZM<`Q<)%;(_eP)ȳWhfY{eӽV!J~EiR뼈%4[ܪ%\gJ$欑{;@ˁC?ɋ,,~WoX?KjT:VC"}w&Z7ESΝ$a}X#6ՈbcW"/Qdh|=G_ @vlsϬDMJKb,Yŝ N_"YJzPm׏e GhG΋\qd^^/axq}at^XOY"qA_a/PjOdlDĕR&tf1zRԾ >s/_%@\h.X%k k'!9 +!yQ?N"<x\.L7>ACx,XVY;}J+G'2 +endstream endobj 6595 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6596 0 obj <> endobj 6597 0 obj <> endobj 6598 0 obj <> endobj 6599 0 obj <> endobj 6600 0 obj <> endobj 6601 0 obj <> endobj 6602 0 obj <> endobj 6603 0 obj <> endobj 6604 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6605 0 obj <>stream +h]o#]bd!! <$E ˲ԶI=zm +CRznfW77,%DeBS6yLW}o}u߻v*à+|Yz7u ƅR+o +AB`{߮&&"Dm+ t7}}3{Ex)csΝr1v.*էE};Q\Dz[* +Y8WG@,-C:o ByA fuKH +*߀TRVu&3t+mx~{9uW߼17߁J;t'&]Vн%hgLр}vn9=߽?ϻq`7mpg|;n Н7Dτ^:M$%l^ॱcKmȩ>ixrIi@:`F`_I@pkưe 1}5-d.U(tR:j#ZEϤmiW l:DARred;vudRФQp{M`$&("{he5* lbazLaxɩc p;[&`i(aϔ NujxjV+^н`WQ;1}e}W|!=Tm<'ƂQl Sɀԃ 9iv]=*=YEL7j&! +D00Ov|RS$ɭ{8ؽd]lSYc> + 2>B-O|ݸKCJ$\KJ.k-% +RXa?^ꑻAcK򗋻3\=?ck}ѐiLlf%Vs{ɱy3&DdP5(N/y+'=5rNl;/'ʢ8Tbʟݥ l@&V2 ЂcE-P@+][)m0 LtłLո (CΗBiG-Ky+@jT ܶ*_}$=-giP\^"V\ H}H%F.' Κ/v'kyL.Mgpve?sSnʳg"Pp/y죸>ѝ^f ^s<_k-f^#"A5$$;fG^ R>X|(b=7r V32OeǮđ[[@gaN{^3`87ӯ|BW0{3׮+CֆN[S5<@?x9WMЩCHsJh~H[cger#v`Q`?RA |,B^?.w I蓩}m`tXO+.{>H E#m¸ƗK}\% V4 N6ljk/o<`Qw5*TKu%[Z8iOjY6Г-'Od*C&^Gkes3/VԾ":vr2LbsX>z .-.61,jBܱT,ʺpx]i /kS7I &[Yt >Z,*Zovc8t+cwF:y-r|:`'7=<OCnwcamO0Ec0 +|wxSF$Q;$S6!7Xqo.3rS GܔX-K&͝0+p;K)gӆi3zet(y`+lrz@VjXar2n`CF5#Vyʵ7 +M2۞Y1*[ cT:o{ƐrYLU9dOs۩G|6<{43 ?o>v&9O~qw?-EmlrAxߕ4*!)![ F']| c㩞<54OaO6sYS"UrbUN*'TA\EԼ8Im>no\Ǭ9cj.P&\-itv{!VGy4X3 r+Z0kऱO縗hޛ$Y:t,U*P}'٤ +K޶4;2)k(^Yy!s3ūY¶zqjvr_W2*N nҲ HkmlMdQ+o9a6=6kNiyY_ȪN%4XBkhg(f+\PR o5tKփ%W'R͆;U6m* +n,Ux~]Wh//^,UvƐ[hX+mJ_/U54zaTcHf&_XiMb=< ~̣|?aF2e=?64̹Y8ysܿЮ2x*3P:@<}>kGF>Zz2b4ƃ;E(4?I3Ӻ!bP$, ,ybUǤOE*m44zy9-EEtT Hq=I-@= C88A瀿@bKh͉Ҥ +XJ>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6607 0 obj <> endobj 6608 0 obj <> endobj 6609 0 obj <> endobj 6610 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6611 0 obj <>stream +h[K#ׯȣd$ A~6ARԢԮGIR5],J2d0)o__NuwW/vڏ]zk]W~]v߀i*h`(cvS}qzmm;д qGW'zdzwh{jlҺs[!PmHU yܹY3M <]Ku(] 7y_lpCfg^oXi\W堻*t61Ʈc{:^]%.GQ+tC.=uBzEP1$wb]fT5땖w:~:>tA+|Kjtn +BB"Tۤ/_NOǗCx7h3<]Zu1>&?]mлh;! uK6Y>#AušWnft̸Qfi [H3{x𲧡G*2Sքi#Q5}^+c z0pM5'D=d7:!C`CbY;+S I`=x"~k(b~dr#Zp.H;SYtiA4t "U7% +FB#bL 0GX"\F WCEHXXuxh'XtX&NtƩrMx\*Wq~z1hByTyW8!^`Џb?jb%8꺬y|y JX45I1W%ՁX%K}!^۱؜cAّ\MoT1hlX[X\HiFXketմ2L)><.LFǶD#Gx~/)P):&CQǟJ@cbq)z\"G3!?NŃǥ4­=TI>?"D/b0V-5هw|!$Uҏ!+kq(Nm AR)z!#ݦXs#3+ 7P2@ PZ%Bt.6 +_e +O`Π 3I KCaCpJ՜Ωᜈs)AZ"J2ZE.'[ɞi3scqL|R"U6B* Zk 93X Bu rڽhz]&7:MV_itL )Z[㖫nb$FOZu_oOkݞxSͿNpp0a??ukxXO ;d/JZP-%:[>a1kVX}nd'A9ޝdwq/ӧ0ݎ?ID@q{53ž$\ǕY!nP&ǣ X *,a/e-cX+Y(V[ "-7)TxoS~F\&IW!@l&PrJCAK,YXODtϫ%}H4ê_=Axt|ꞮbW !D̷ЀzAʰbInX:yz}CrGDoߋS6{=v"|乓LZȄZ8b^{<{o6)`|`6a:=u00aLMK6}(f*XEbx;@#٫URv>O+O>&^+^lHQq n5)>'尽?'xwK N2uYriMHY*{GEj{կSZG**:xI_EsaqID3C&n]z/W~qg7dzsf;i4[ +iΒH2<_ܔF8]3&JwNp4^l]DY]8q8>Km'Dۢ.~g,D^WDuKUDJc'/Z +0(\吝o~E<{μP1!)d +a/d q +94QkovJ8I!L5LԐ;q`v٤'cYA^W݈-L$! C%ue/$ +GU;H +a{Rl/njU4N<3/s'.*)E7#Wz-MەAt]\Bc%deΊxC3lD1͆-^6ܻmhB6betDgfCOU -ٖve\BUn\4kb2 iӧmTBn(>0tngK>q*<>8-H޷u崩_fR-K &jwj;7j+U]}lu84sA!\oN3i|Q1nJvtou<,:ED"#L,cJ; +Jus;P{$s;.=b=l{t +P}ӾrvWff#&,*R"7:Ůƥr4~->U\0\8d%ӱSwڕb1TZ]Q("?S[hgF iW}#ǼpOܧNFՍqęۦj/*J>v(w-hWUFpݩs*e 砺`55lj"Nm>}^q{C-L)s,tҒЇrֺy aED n3e!* y.gF!#A]VsS#FX r +DY;-/S,˳v{Ω ʻ*&ӭX/9Uj72v,im314w)'R*Y'RcU"U(SY>΢͠LDn!Ua.#HbBEq~m)GMlq~e~sǼ1m捜TeS79I6)we[Vw7ǘ:7$8̒!OfLԍvuALWS&1DRxUQwkT%6Vt;L񾲸mI n4-q4[gv|OȆ +׀ D_ ~-4-b$)vBߵ3 aТP<2DZ^<5/!5|ƈxt^88K?˹v_3˒K(jU1%/h%7zב5d wN=~Kp!2܀jVA2 on +endstream endobj 6612 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6613 0 obj <> endobj 6614 0 obj <> endobj 6615 0 obj <> endobj 6616 0 obj <> endobj 6617 0 obj <> endobj 6618 0 obj <> endobj 6619 0 obj <> endobj 6620 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6621 0 obj <>stream +hZKW̑ {: x1 lmC\x{zfIYITWWC^_]/\_Nw׷Rz ]N١â=]}f^?lJXz6わۭ5k4=4'x`Gy[ k!ڊT@\y:CM)uŔ] 2ޅ^%3gi1_. +*֊x`:$~ + +dHe&eߐ!` aTl$Vh¥nHjp JԽ[]꾺zN(u(2ҾC(VO^n-ettxt||8gy 4!=sE^:Mw/e2l^൱AJ6r4>ayPhgT c|ye!2Η3d ϴt* Ѓ +xYW=øBpzkU49(F[UlHCS26* fdZf]4B| GMϰ#ƙ2|G=ﻉJj`? YþO5UֱKaIUfB(hbl2-G%B#d, +b{@0u~c]` ֙ Ja r7 #3HRT=yꗈGZK8ւWUܢ ""UB=Hd.ze/#NK-j1j}.g]VyJok9.*uc\ v7>\( +p7{R{rIp]ZF0B (naQ CC;a)Y1cIZUYYq=Ow>ƑҳFR\b!_2t ?Һ5 +.~0up;9o&>r7 |‹QaS;e[:e$7d,W_; #~>S]3d|!#G fgB,̭4P+WLRn6,M9B[PmLX`v(+4.R4g8;d%K22s.thM3?O_e .xVͶi\>nhjӳn6рT4[_UI'i&M r(gcdl}f9216NJC>򭬲6K,'&z'2ǖ^;OǧTaiVtA]›ʭH;1qk%qLαD+!D &X+y")"kL!af76WU5P)&_җSKbb2.G1 %+gBoB:gs`SR=mmX_㚋lo:0 +!;N~,^k+YWEMv>FJRۂx +I|+=b}r<[թt1Q 7ykXU][ZSqvD7:D5rÜb3Y0q Ɖ%̦0&SyEC3ͻbmWbo%VSrp|/k$7_\jJytRm괡G[mMP \WTyQo8&({(.^|]^4aXM7OSUv8/H{巫|"W+7XV!._Nxџ/aȻux~\~~Gw3LwBqFz5D--'mg?&A,սS96}=\k}:M<SUyS=kXsn冪gFN{c{_N?1B_ay}#;th; χnEhbO;YxnCU7+ht=*](k;53Z^]W/=stjZ E!k}z?2[Y7ލXXf`%+$NM^:p|I6?Ȗm_CwwU;!g;̕Y$GF}Gy& =#krƝ< T}!zN\N +̏ŐY!6d-frtQ~~rNH >`x/D,P[ޯ򷕡XQaUK OmȕNy]5R_}ӽvE)\W3 <zD&} +fظ3RérÊ&/$0TӐbpRj38[P0@wb)WDlM_ +fΓY:o%:KhdsB:C߸LЕ1Q\p-aD`.E)kKJD!E悽zG?H-䃥A"/;1eEr'!=3\A_2 isrA_$O u^"53혪->stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6623 0 obj <> endobj 6624 0 obj <> endobj 6625 0 obj <> endobj 6626 0 obj <> endobj 6627 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6628 0 obj <>stream +h[Kϯd`|?,xvG+AJ%Ed{ۖv{EV_~4ӛOooW77f2C4ƤbVk7ݼ;ᨴ6~9ӵ.NǠ,FM&H3fxlhr FYNF؆,3 ;_I^[U%tmRe;C/e=kP=mA3S{"SP4͓ iHu[ cx$OK]ءUf w@YL4EvJ1yR֕R&S)yxx}ZnIIFHST0d2V]p_XATW퉷,=fz/nPZӱBn?rÇo<}t)]aE`qtBl6mRT,U4j8^ +;V*|NyuT%@^l&r>crVG*-/HH26CQG,htD&U|0V/}\ yQoVDqը;4Hc۪Hj)3bst}NUdړBcYZYGܑ-ݲa;0hw0k3"[LV@qĆMHgBy (`#@0'k 6A\Tʠ!]$>u#v&$رXp&04p +6 +/eJ"GH:ĚƭֈC<6L)p8q0w߿j-F~jB q<^J2 ڡXFPp/j NPT#UZCRn킹.# yA_ ˵WZm_j~-݇&i:F!hxS(b(mӸRxc3#KiΚ=Gntdef#߅pRv6{nLףR[FnC\%Âo:d?mPmC!ky5eD+̳7 2 +S҈a-ffUt60 pѕ|i]O}Y9jARO~Pá6~I Q!r+Ο~xYx>CA~oȼ1>|/Yt,MtEV|CzV4i2f΂K 庀ygpo}׹dL̮Y.'K\tqJ,H|jɒ轔Gy"(j{V,bWE^J#jk/ooG~Kw/KcŇx6H(y-ST& ^ouyht‹lSx[UTArB)Z:fD: ل'y5wFm7c4Jf>sMV +.+8ം ++د`7~%_W&#&#~%o2ӵa~6m/GvmVäV7;nt4hq# _VEt~ӱpR>u@yW425)%9.\]BC8ųG:;3> vг9/\vY13Dq vۼ$N1Dn)qgAȑ/ݟy$qjTm4ѣfx"=pT_hGO'CNؠj'wx}V޵J9E4^{1cQGql1e TiT<`O{M=lvJn-S8ĝ Ttf/+`Wwv"}?,<SwPgr hm\\ ~%@ޱYk/6ƿgڂ3 w;]os w@ b mvOw ~߶>Rho }} ɟ2N6&oMTv7 ~o^Л\[y;{Z1~t ?QIL k7z-]>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6630 0 obj <> endobj 6631 0 obj <> endobj 6632 0 obj <> endobj 6633 0 obj <> endobj 6634 0 obj <> endobj 6635 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6636 0 obj <>stream +hެ;ˎIneր;P\W_zKWՇڲZ]|xx{`x4NuP&m+\c♈FĠk . {Wj&ȴ>83"S k^ ay-umqcqiu&o?ݟ{?~\x"2-=V5u9q aç_?ϟ~_|,_`w@:cAnIO(smM-.6'nWO>;-hu>ym人v~ݲˡ=b;v.dL{ɗŪmXc8:z]z'.SݚaCny kF4 ҄o&^o:yM7N+ʓzOw#|C|k>:ZZw~m[ZH pOf h:w 03"A+*ŴGk6x{ )CdMb&L )v|;:7ŵNx\CHQhj{ +k Lr}\:kꓢx.]7p-L m"ׯ#z3gEu6<|_fh} +.ೞ> @U-u#&357*폊^tM +T߶3;E/Aîy'( +^ o:FO%VbKXIwq3^ h +)Քe^xVM=-d*vyk`5 =vۅHb&` +Lo|Q\,cvbPdvLSM#YgF`v/]5u2L$ѷddVW×#-Q}Ead\Ln;I Gbt>;˜dY:'<;MGΠ=ެC,nY ߇ȘeOBifW7 4 +SV^J,C;Y0 +{:\u:yE¢'mt}Htn U=!L{l =:l3 +wHs$XsJ +2ڞ[T`)&Rh$hCnw;ћt2u= `оT&DfQēQ#? ^g/1]cv8|G))>/PߝYihvRhRbi=_VvJkY-@H`;A*VETPl}Ue>d *U:e ?|NN뛪(D`:J!(NJ.1R&v&e E}Nfvb%1ld.N#@Vd.;rF6Ё91~,R>U_UJ`#Ǽ1גb؆C'*f2 8QH4̼e&ut'G۰/*{1OM/†DuƉ1}*|@/k{xwx9,NF2D7 ]| V%eRchE\*#SF&c@(| Z'L$ELWrSrʎnzn:X(*iK=B00 +0r0r0r0e'ì73GeNj:L?NqM@ k8$IcIG6{.s< nm0+i.l%;M4. +h}ExFbALa +` +C5p{ꦘ57DF0=2Qm&؁rfe9veIڟ/~}ؗGY!Tl̟ KIJnC>CIj_4YvhDpYB# +E퉢dvfSGxv 'tېmEV34qI>f`g7pOIhOn4oE'Tؠ%pOO`=Lv0#7R3 OH9%ܑ9kE]5ihfK&^7\/DȞPd 1)'~/eM4Z0qQ}qFF4-e Xjʪ{;6i `E2XmpF"6`ȰԍNzQF%iZA247SG)x3őFc*Lm`9saukiX9o@ L,!<޴W6"_HGC=fwWSđȧXzyqꉻ0@wgTA_./vLǰ9_F1_:*K$ +SW@zq?w~޾ͼǟE^L@DyJcLxϫG>JTSt́mQ7Fqz.Dr+żEީ#L`F̪O<<c=M_I-Rc6Rc~Oajx[ie6t{aݗMx_HjDщ}JLbnY"_mИ:9G~RָS TJjיiCXh$9ݨY!4w,I7)k\n^@ӱ wra7_ W }(Jaqn8f\ e58ekR  %\FI>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6638 0 obj <> endobj 6639 0 obj <> endobj 6640 0 obj <> endobj 6641 0 obj <> endobj 6642 0 obj <> endobj 6643 0 obj <> endobj 6644 0 obj <> endobj 6645 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6646 0 obj <>stream +h[oǑοb>.=lx)8#2b8}p \-e:u}_UW?fvIIAvzQ'߽ÛۣoΎAgGiP蜲#59ZJi7m:xF)x[=QKqphz:Y)x=&N6ߖ^[j]p _#)dH0F;e5?MF1z6>  xTށ?Ghb o^: K WF aOnI)a={v)3DiM) )Ml?̲0n:m=Pޫx,C)";>3Z=9vM'7 4f2'Oo O<=='VdV`:wA'԰uGO^~ߝ\߼z{c'abgJN30n1M!1$A!۷ڨ'7 Ҷܶ6^kcGc-7IlHQQfDjm Ŝ/k5B^J&MzK jjGlo NсF[`` !;@No3"Ќ/Tu]ib6*wA{ژF GMϠ#XG0HrB~ +d;6s&fXhsx <mxV܊k%R[+(qnPnjXbmbx6 L@@hb(1M eߏF"2BWI4Tu!#y4ƨ WYWC<ލ\s3%$MSX<zݰNga~'Zzm3\$S3ZYrv}mkiSLTy@ˤ^:63Ve46e),5>a0OEϺD-O {}~_ >X?`l;gQNX{A~yB+837(It'cTإzb9 ע'U `g,F M'~#M0p>.k:'6σm,7$?> Ko^?{9o ׈626b)4|@S^9q!Ab !sa@OJu&ݔIBPiM뎱P(ɠBK/fD':-$I{/ QG`a*rIB(C,|[v0VS4aet@L&@9%݂rv3WkzŤi_NqZN[RP amAUyIVYx禯udvӊa3U] ^+d yQsxj4FUH&z@N$j22jdW{LW+˦C #B.ۜ y_trlP +yI}׵}%3uEVh񧖛Yۋ:ff7\WsnYk.v5#Zw9ZotCT0w.d6 gWoZ#YBݨWƠ#ϳ:`iVNגC2Q8]tvSKYj-)I]lgc"A")RI9R ?ۜL ɼ*%>;ۖ45!'"M}gk,sUUoeGTf78e"(ϼHW1et3/Vٿqi_ƿׇfҭg\@fʏnhH<]2&K`)bKve1A0a߬ An00ĤFcA9})P^}<χ~F'߽4t纬nٗG$r8 +6{gP?Ё˽#MF6%qG<LJ0& :_*d[5ߧ7ߝ|x\3XUP3+T+<;(^C BRt-ʜ$}[Pt0Н ks7Rn}LW 0!)|GAa}F ̧īȩD]GQi-rC=䡱_hf ,WQ_$!Q9}iCe<;#]lfY!iKZix9/≅"lM#yM_ćl6׏u7 + ].o EѦB>ҽancӌ ="NA``sICgNo~p;:D! +53c#*|63C T)퓝h-Mt&-$S55k?2Ř<\P fbDZ 7M{ {z0BX$A`6).g +ܼft)P?`?\Ʈ1?9_+t!<'b`(n{ttPݽ'901tl!i6tgik xE{JˊF["YNJP#2屮VuSSh60j+ K Y']xۆNIF: <G:R@| F`"c,'j$3pԄ >qϪC_ŝԀt>|E8g6㐎#O,}sVf L7c # ϝȥ=ҿv=Lr|Wܥ:d9pCTI9OGTR'TaJN;3ϮR2s+PHriOox( +E} Hyr +D!)5 )j +Tݛa, +8eًKԊ3UvLM|שlQVDkM}lKH[oR^pE5~`&K_D!$"sҏB/q%X`b4::6 +3:Ԝ9}D'EB&%uaT:I暴+t u'nd3BKTܯ}dq>EU^Iqt3)ʾZK>D<9 +Q6ֺ{D>U[0=X. .' +| C^6+K*}+ocQ~Ei+142V_2o. :{B=n +v!J~0x?H1;WďCp>n7 K{hDЇJLHʤ$0>&]UzX8[s<BN_X5ߨ8PScOI! }]"g_!R}% #l@‚$GN &MH#AR="I3AG:y4a)A EdգcZ^M9PyG1 >stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6648 0 obj <> endobj 6649 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS47214V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6650 0 obj <> endobj 6651 0 obj <> endobj 6652 0 obj <> endobj 6653 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6654 0 obj <>stream +hZ[~_Q)~gި.zMgQM'[SP+ 0Nڂ3Sua)Cm~&3"ER!hoLp[A69A_G(%˨z>"]GRlP,l|1y@sk') 4竇- pDGKbyYaQ3ªXzus"T/j XP co 0s?ʈj_u~)U ˶en'~T}NQ4[}Tq>߭ҋ;2al?#ݘw*Ӱ\8`n|(mbZ +KrL4PW6Hvgg K{D(d +cTW4EBCr^_g#i"h̹q,]*π׏4wRQ ;X +-zim6ZDa.Qd/"8A +t"Y(`0,zڃUvf{pm;N_@ OPQ_Ui,5Zn(QwĊȌ "'(E,˶٠H'j==X=¼=z;i!]yR:U e/ƢAŶzY^3SkCS4$9w۟X՞fڳ9(Bl~"=(Wf\ +\'6<œOYl'[o9l [?i3?ʵgtҫ&.R:]ЫzO悅"0! \r_b,l90PkrP0(A?_ BTH0'|fqaWc9TLZxCQˏ͈k shJ9>@hNT']Tx ́=`Qm:h\͖ v!f+1ҭ0C'v?4W_&/zy>ܦKŬM;Sp+8?KA22+MC@9XJ! -ǝކw_pƖqٓ__}9a8.DYOoHsKqC 爸́!cqJeM[AtH N\a8>eÉ׸) Ww u7oͻ;S?8;Q6gٌ +/dE>RK@s.Mz2%i"L'y̤ .!! r:+O]ÁiPfbM\* (U{hQ@΀[츪-T%* \Ձ71N hq,̌W$٬`۱VpɨEmd!eafΑ 3+8㡇cLCMޖ]}ъkPKEs?8VkA)\~" A:f;=8^ZwG~(wކ}^Ph6;5$Aiͯ!tlŏH.c;3 {6mVo:ħY;oxܚLfǂZWעeP!؃~hK%TP-dEm9v}Wi\MbZ5o}8 V_|HN3mqoy玵i>OPMr *;J`>#GFCvLg?t +endstream endobj 6655 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6656 0 obj <> endobj 6657 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS47266V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6658 0 obj <> endobj 6659 0 obj <> endobj 6660 0 obj <> endobj 6661 0 obj <> endobj 6662 0 obj <> endobj 6663 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6664 0 obj <>stream +h;Ɏ\qw6T/BC6 aƇbCd1 ǚK-"%dzDfdd?w7/b7u1..557fyw]a?@n~3G3P ټA-X2Ԅ=c--)ڵbϺkZKTG|( ҒsX}aa]\Ȩ.&.+{(c 0Dt0^!$z*Ôku_Қp\ 7O|Y]21偷O->W;X ^z<|xKgcZ{/0E 87nY>{UXZr?=|3SZO`аaiy: ,mZT>RǛ3ka!AY>HSS٭6F)o_]P +)~are!j#pk +b9y*[̩!5I<Ǒ\^k( )VZSz 3,okDeg=j& +"RN'[̅haܠE,pM+6N>-~ pڧCz pv-~fܷDA1{'E(TZvvx q(GPJJ9 +1,! :i[r+B۵s1[ #vq0+O +eǭK~f5#]G&BO_ڧeFy+7kF Tלm'Yd FrFZ>P1%iE58D%aY@ɎhzC3`qPr"-!m1FfS;nu,"R.Z](:rG[6R7,RX%Ia}&G50NXҰ=%G d'K6r :V~hDB3S-7S;**U'z:vހ[a70p%k&$+iˌ`_pVV"wc)7H;/}ctD_pwd*\owoVӐ;QZ N `tr/<7I)sxh0H`VimRa;"Jk’Mh@$n\-yȦFK ːZ,^b*Rb&jk\R`YHpɯ}ߊ()o4hFCuD!!M! 1 +?i%R蟻hNF"dmH4K< d-Šz'FuBHbIZÃp2iCE|wӗ_~7Oxu~9jLK;^2=yG(&:M') ڻKgNBMbbqpIRn4(7oYF82[)r)M3@5;-O Vv61uI 1w{))V\Թ&idy X}P|Il~ ]0Ym2yuL𵉀y@M +j59fm:$]K`RQ Kl}H&A8}a˫H躻75 +> %uZ%*qwS;1d*].H y:R _'ڹRy77Sݕ. ² - 3"Nww`q"ar"57[$.\Ji$+2@s۞ھف|]Ka+%^bѥ [w%¥8(hy9O%њüf݄ Y^c1Ulrа]$Qoġ:pсMuU!CegTYQ (+xƆ]Rvknʩ"0HU4yĺԑSCgLc@ bЍ¡k8_gj4éD%v*ޝ!^gTawE e| +uMϋxӠp2OJG;\\aql=ئќ"SnTI2شw;9eM'u|چtb83y;x7KUx,$8Y :ލTqB`%޹~p&ޜy▮Љ&{!_v6RwUjtXkH*PK{ۻ)Qj3AD$G&%۟F=w8![0($$I1Y4pch.CeĚ0da? 2%A:]Ðt3 GAF}dT{mhL|?\&ƎkrS8oSO?m g̭OɀgS/ؓ4փ%w&Eˑ|-tqxִ<|\oO\SaNyݦńowԟVߧ;)x̼Kk,(vr\#M@c}xß]h=3'c!m_{6Ͽ-ϼ?۔[>Izŭ.LB mD4^~B|'f _>{ʑ=tQĕ7o:zDv`gGF|rW:qf^<ۥ.M m?,I>%|& +G/!@8=֓|Ax͑hs$('KPAAudڮSL)SG]I"s d;9MC% Ya_lڽ}EG5?>%{RŲC|0$js]ch]G64+ģ|}doxI|E4YVMʪrY x5e ܔ8yI/U߾pCm ~t{~ǵڳ0&Oy ŷO||yP m7#p+ƷK2N|[& M(;Pm6 DA:">13o!v r<٨*`r2:kѠ6{ sF^euWN(vt0jĀ$Ryd {W[hڭ + ,; Dꖱ\@mX[-V.0C0t$ZAד!:*s5YffS5Q1!oʙ.Uw?NH\%:6r!~Kp Tc"u@,o~`Yc|[- + bԋPѬ&]6\ (x a/LZM +Bhk:T@(9 ͈Kltu"{:pt}\su|/z}S<J˕!xBN2qCsWkĵ^14e.؜UEq}7E7$c#*N8_h_& l$c'ך{G +endstream endobj 6665 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6666 0 obj <> endobj 6667 0 obj <> endobj 6668 0 obj <> endobj 6669 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6670 0 obj <>stream +hɮ>_g}}l0o@aq~?r ! MťX;W]~x-vy|9յHyui9.`W?,$&-0Kt9`HgXBYISSۭ6Fi?8@a>C+X +jCӹ$Gӡ< s;D]CzmxM+PZfزP[jaL=pk&j;iW& hI;."nMH@3ZMm51pRϴ=׫O@GBz'?ħC |Ovk5q`͊KF ;iBz܇x<(Dh P IJZ9 +\l[W LMܚ0}iI運who#sfش-=:@Q3%ZM D]Xk;T2 +`CeČ<b$Nfyjt~Gm8yp`c+* @@Q<]Gp(OHdy +'_ё9VDNK5=(2+![庫Ŭ:)7~{)7?M&Vҽ!~7׊G]l{$ r !~6D"*#GF-IE9E("ƺ2G > 0أ˂|   +tjD +F 80 uCpf45c G75xḰG`F@q~kLlGҥ^/"ݎm7x \.H8{ w7>]2$Zp`0`. abc{ LVڀF4xy xX;Gz"#0"\3Es2Yx>ICP&J1^2)CDlL+hi4]_7$D䬢_u+hXL4:[?0HLvہ xXqvoP ūMʖ긎۫(Ý0V!6tŪH^Fbj_:H,ldxl'Z+-D4OZ y\5~E42 0ʳq[)祬_I/tՁ89`AۗYàYk48m`wk\\!vӤE܁̝VxzSO kUB:7z^A):  ']kdD9uе"KfTlC**GIEh^FfnM΢\',FBXh #f7 9gpx A2%nwt>^CRΤYtI + af8!bא>{܋ڸZ/nf2{LpےO{Ci8r}SA(ᘴ^f%~hP=j WLg"fNc\iFu䖝/VyJTvZ oA*J%<'Ҫ !'Ƥ8Aw(l_[aȒ<%zALQ"K_Nh>Hb\QH-n!&]p7Si 9 ָk +{!AҺFf%Od/vufऍO@Fb\%;Uw#x~F$?-hs(EBn6-IVIDYUJ{2Ǻfi` xܻubHŕa]NzJX "C$ 9 y,]mWj✣(ҟ hl܀ ;ljh5nEZŠ&/? z6Ye=e#jB莅 + +*h30 +1"eXcǶ4-*_up4zvEpHY +VV?{2@Ӄ5%ZB5T-o;6{Shl0>6G)!oA9-JK;JwJi"/,[.AK (wgd(<NvXA0QA ka\_*4OfxD3,Քam*lgj +fH;@87`,~ +sX]gtov +f>aWWh6ڃTacٽt΄r&@L4:բ\1 02yz&i=tw{]By2\OdXN&\L&L< 4ԅtE`zZ Eb%6$%—I)0 Qob-Ҋ0{FYZAU]$){r%e##en|oy-7&Ik^?;/Y}$SGppSlO47$Ir0M1&hU܏3(_$@$):~f'5b/ծA&Ԯ6N k 3ևZjwq5;;ƞn҉I$?ڱ+CgxGڍ:NOd:vCf =p$uHaq—\ IK빎ޢ 텛DŰ Q0|4͹KYTWV9i$Sc+pha3?h)"3G#?stSO$a?Vt!zŜ +ݞZs]8F'[{q`=e~m\m?Hvr0mL`c$}UkSУW~#i!$ϑ*Oxѭ&p']3TeG^rm %F*.}4J-)C`h,B+prSXMRol!ZT΃gyl: hZ j`4!#+|sƖzwO&4h<)V ֠򜊹)-Qx::6q=r4qH!Wfo|x}( +endstream endobj 6671 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6672 0 obj <> endobj 6673 0 obj <> endobj 6674 0 obj <> endobj 6675 0 obj <> endobj 6676 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6677 0 obj <>stream +hˎ_G)(E,dv'+Cd%~E69ٲrH 4Y'bz?z{`<+?eq11.Ŭ/i5pÿᄍ7ki;a2 Pmv9Y6|]ĭ>u*ZL(KJ,Rޑ[X(n'>gKi50Ax6 $Cz^m(#IIyk/cs4DtgܒeuJwoT}#˵K8縦ܰw'ڝ?B0 H.N,E>O=Iv (MY3,.- ٫?WxlW_'R}(5@p;t _y }j9iݫ?={Oϯ??~|_!.PlhpFDTK)k,*BZə5Xx,VOίb`5/NCY88"VcOHғs* qH& +MO\Z F  WcCꝬ]߼:gv! -H'$[#L k.&bS6x iťh4ӫCOKhG"{;t2S y?gt?ӌQ gdM3[Y$fLi:RҮxFѐ{-#b5shR*(R\ąCiV8%ZGܮu;ؙ0Ԅ:X'b␫0 vh_~[mIdWlzXsb,81Y@eM7NAjX6 +yJiyj=&$È3``q_ r?-aqB +9'zN=n\EX;bUJ@|Wۖ-Kg GǾnW)ݐ.$%o6T-K{eLPGrzAT沔XOmDM- eu-Cq(ͯ>bk^c  DApϜitcZXUq7ş_b߽0_: >|ʸ)>l3v@{;FT0Y1Z죎brkTgT "/DΙtm؁M&<b9Z<"ՔlYL j1zsA;L?zVqGs0^9Hv^xf>vDzK,8 8sDe$uct:!IdKtGQ!Ipm$@:{G.Pv/`eDþp3Y%XGl R˙jke.(}];s +vYGcÆOF] u=~;Yݠ]GYxui%r?y?ץnn?\E[֎Bɶ)T4~ -=羝gnc|:X798ze4G]$L_'g !dݭ(c^|1R-2- )PH\lN\sdqqN:X@C ]"Y*sR'qR`VY)숗)c&wWx+L\ L9W1 +p g?ؖ ˀ:c:&\+ 2%`ps*xbUάcz+sN8W3]3 tW3p͈4bϰ'*vWMk[u+X_T *\WD +d? +Й +\2_9tVDgJH .>VMAw +f׭(CeN'ղ `J ׄp֬P01$€uaˤٳ.-$29z]Kj]i)ΚA꟔2G*Hbf׫"Ph yjZER49-l]yKRn | 諈ũJf(̐2BTڎ憭$fZ[]RiCEZ;SITD[3]4ĽNlub:YGdsQ]r/ZzClMN(fQsP:ı*.TVdc}o +9oD:ǹiᬯ +X@=;CUZ}2xl:Ъˈ<]Sϗ }2]g5^Ji@,.㹠wV5]HzabfLSJp H4QQW0EurJlI*LjSՅʏn\^5VU&}R.0.ЭQO2 /KTd7>nB@n0Tє?IO OqYK +W/rR]&2(K~(n2BEmͫj5;9OjήEuvv_'&WZ}y ~NH<1*Im1uzORъG]B(%5}+(ۦ +ݓU뱮4ZF:l]]i? ^Lc^Ƭ pIݜnq]`A.]oH,'t{;ka()hn_64BB}"v#3)N)N)NPm5=N @& I=TOG;j)V?)x-thy쨇 "1e*NAŐ\c)eWY6&i.HYK˗“"ezGql== :BigU$n?,݊Jc|Q>pppkUDo0 Ja$ +xΦ Gv)t2~ն뜂Jdvuv-=- +^ɦ.]SpW|í儣{騴y%} vSqɓe`Ƨގ3q \3'98پ/ 1Qxy(-Ziiظ\`"V?a-!bsUACvx@濌qMhk!Gڃk\k @VV8H5_kRYY}}g=)xxD)蹔y3cPGշ'ôk0tk>LoKԻ`r.|tz5z+?7 MFEsCF?5]UUf?-޿ :Y2c{8)@ư߄^z&D^#"X#)47:cW:TT8XaN3p":ቑ ɬI<(У2&榍n=>v5WMCHeYң#xI,@`LG xgӃ<)V<`|uwԡ^utR:SΦ4.i;}}G/h +Q xb:TQe/n|blg>F8TA +endstream endobj 6678 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6679 0 obj <> endobj 6680 0 obj <> endobj 6681 0 obj <>/S/GoToR/Type/Action>>/Border[0 0 0]/Rect[123.96 735.5 527.94 753.32]/Subtype/Link/Type/Annot>> endobj 6682 0 obj <> endobj 6683 0 obj <> endobj 6684 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6685 0 obj <>stream +h;ɎǕn`=Q|OGDV5-:{۷|uw?px<#祔a[;a8|{ڶ-V?#4VvkZ͸<<=֡0mѯ1 +| +/^F\8wrUK+~86Z[XZ˧ApiZ *SLk&cZcZOr5'R]U~)S㶫 k^@\9>}}H[^RZ+~qiu'?>OoKmWo?t[DG[|4S[/Gi0xx?~ϟ_O?|ZtXtą[SK'~[S f @@m}apBV\ܖ L^-{Z=p.TX\1alo /kڰ5f=p9`έߺz]SݚaC8ûۯ,6hjþQz;5En8jVqz7~!}O--H;wh-- DU qЈA/MhH(Hwd@V)Cx-pX8Ś0=a jkM:Mx !i( =fnZA L ~j?>]} .^¾a- mӢGϑYFB&s"/=H*A,Mp. fڈ-%T,(n@Ԇga'G ml*K] z#h6GӭMT +t)<+*$6J 󀟯]RοDdIoˤY_ ?T⟮Gz۶z^-xC4p|m u>?" 1lWQntk9ׇtBM=R)I']M-&\,îImsv೴m2*zaKxPYCu'G+IyD&r/'J%XD 20L6 Z\nl#JDAKΩp< BXsRXHp&k!u&x 5җ%@_9p!!N)1Њ1w7T.4;E Վ$vO|1_:5,c-L-H!p?%)hbt :Qqx6tqr""02P%x +l& ςoB?ctE!:G#Qh/?DF92(*IYߗ+{x s\AT07ة*pn_N.\ +hێ;|@%C]X=˪@)O<SљtۋhHbML&Y4óWէot]TQy gq Fѵ{ [*[ FI2AGTuU\ uUPВf9+G`;;9hurhsG)l W%dvp6ܮ  =,L3RIK'+t]v#0.;SRG5s70K~NA'S:KYRxM(LAL;n]&y34UQ;~V +W1>͌!5υ%L`VW"z1ysڭ!"n$8Յi 9e'ѫ@TY^X)bq EZa>T7=pWAIl[d3ۖ[ܨŸ-tb(# +w`s@g 0{S@=>en(!(4÷wܧw}\=R0=]c=}<}f\1q˻/]~F:ҢXd$\Ûod1o+}9=NСacMj1/*jTbcQ(,L3Ӣibr]Y1En;f3/YD KrOA Do4zFue&=\]e:Mg&@ףN6U1E +݉57Z>RT4C|\3ԩi)lnvC̃H KʘV٤ Z?\j2{TaB7[ 8u:4@攑3 +3"dQHо99sLIkwFF!/eL֜RRg z8ʋؽB 4Dz.wI% 'fB=M^(\@? Kok6l& :Z-&>C+d[|'G,(VЩQRtW` +يdVg8 _#,' *+2%$eY"C+>fKs0yl b1iEZ!mR炉|g s輴_P/ζ+lrh0KXp9ϱN 9}t Qo~:>$@l,EItѝ9Fy<|ӻ/=#R=e7k@|>~7Npm , zLĩyytCwA!|k$ݽu.kVUNy[3=[(01!:jzG/j4^Rataʮf'+S"}RLKxS8e Dyİ]2$_HB٘>vo\'}~c4EՎ񑶮` G_ :vc4c|E4H.vL~Yd:M̂.Lr&۶X8K^e ΕmÉcj 2r{5/`nu E=F898G#-nus_pkqd=QXBNy֜kNvn)MҪσ(Y6ֽԤS5?&y|7r[]Hm/RqsS(JȟO;t5(.ߞԍb#f[۔mSqs< xtm xAKƘx&S,>E13nnC[wž*=;Ї1zë9t"to9ѡdqUkpݓM@:LJH +Zʮ`EsD7Sw!'.9,k 9X],lrw8we 7^qQ+ 1Ʃ-&Z m[ɳЄY#A}9_>!fh +?Mћhיy5$Nh]MKĩϛ`&by +>~}IH[|;e_)sR/a_ Þs #) )WzI 3≮}iͯk0F al#iwj=˱rt{$)b 򖇀\Sf=n&z{3 ΜE'8HeV7u)yr/]غenm#! \5GU+*KЌu1w.}uM_~W;<*P:T9tCm:;b/[[Fe.#a3.ǹD,fAl7ðCY!m(w,s9̪w8rP0㫞3\w54O`Q}zZ}fYd! +4Pi.iN쵯_$em +İ4`Z-tKǝY: یIӔ1[nm?0ISzѹe '9ԟncVPWcaAfvC7BHkU_.V,6TFhh`p74׭o{Z%K wr_u;4oy AXrR? +b@rlUl4Fl'Vzf/̧\AXIӊj Zug,IlcK5ȳD5niH~v |{ýʴP$o^A}fs붼#˶lƎW|>[du.,m捍T'͋e'G +sFW`SRU:LO(C@v,6Ⱦ]ӟH ipT>I>A>ʓeI :elE{vb`_{xTA2i)_c.cD;oյ-n,Z&Zd|XI@U2 ;3<az%B_oYN{KHt_ml>jwKrAILMˁ2U`DMȗTV/qԺe#sbs\-B`g~fDyuzâa K*Q.`qeMA_uSڏӧ<6 ƢD~AQwj要}>U+ Qs:]qX13mU7sO?0GYcuaOlME+}<@a 0)r\ +endstream endobj 6686 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6687 0 obj <> endobj 6688 0 obj <> endobj 6689 0 obj <> endobj 6690 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6691 0 obj <>stream +h[rF}#pCulȊhy3&ǡZ1%zHJ +9Y4 4u(Dtu{szhtPBR+DZKeO7 1R,k_Ggׯޝ^_\z}v}j\WY]afN ]TZ!&I&6JBlVҨg׈7lllZ}-/mZF\ː*VV#&!JYcw}7}BӲ'R_F rjI7,GLou Ih+6X|` L  '۴l1I٤uEPr])h)pN-jn G" )4!LQovk.vNv\ P" +rY:,u`[ȼ(sX#RRy-Zag~V&$.ETŦq>~!cBD\ F-`(R6k(%ۼ[:G2BΫ wp?mys8zFڔƨ׬WM]x1^}I̦~9b+S8xlM6_WW M=N_(wW"^{Y(jZ˒jˮ+KZ)ʮ|yX6%0z_5jIY!eˎϘlxL˧ĒBi`y<=o-VU[VY5U͐MBg[!]C7eXx]eoPM}WԍCZ׺vCNдR>C<]< MBw!1L1 P9Bݑf2{{ t䄅sP9qJ.)` eֳ޸RݛU:,Ɋ#"e#")B(0W(?jdan{⒘zʮq=6 Ђ>4 tAboL.E}%,q?s ?^@bְed<=~/s[7ZS+~}ًLQ^X넙/ +찍PD[=c %=,щ{هo;U7CӅ,LIobpđDFc}:;َ屯H˾$7e@RR搊u~A):,nޟrײD0$:8}{}/N_4:bk06QpU"vIoܨηLt;'0TΠUm#N&l"F7tUFn)^Ab>}q~zuu}vyŀOC'G +K0L',!>hB&e_"Cr 8)UaC~{ӂ>X]8gq@FA+&D 3/8ͣ^b$ l9||&@y+1C$;g$}a;c (˟% ` c Z{#`L Dx7]z#+J#F u!p ح1^ P0V6uoZMJ +uwYViR@?`Ya@krWz(U@s*ͰRХA56 )xK:9p^x5=70/ԐJlJp=lk~ ~2g&xڋƭk^ɂeb)Ipq w;V9֫WD{swH&[{ӆF@T Q'H$'NNjsCZcF}3V#; X@uvDYOhpǤo0HXAY= dPXyrt +zFlM51cDT<δUg>l]LZ ~h*cyW +0eųEGϡg|ɮl.Cf^q_Ǖ +*b +{WɫX=R̃z8qC]n?f)z@d6GoF@~d9px.Pm2a&Sx t W i3q tYxؾ@󐮯w /*wj^6%Tbw`Gf;17/N/gZc +PzG}i̾0r@bNm-}l~xո՗5sqC0'm9 \Syk&VAM٢r?ZӞpu N/SUMNCK.OHWm:{vh.eʈX9r!nYA +W/TGaZ5 alڡ2~~ȷ὎@N@AS VP:&m`١lEK*ri jCSml g %%ܔdv$![Lv%fśrIAݫ h2QJh%֩ O +l/5n>X@`񊉊j7GOv,k0EɣbYYM,'ɴ\abQ'G7KX{_:",nfWL~p_hHI }F= kӍI-v +DgEꙹDD:+NI "evmYk9af p/q]TD<~~eA F<ϑJ)X7\_۩y+cH`-?|7^62.\nKwOlGĀN:^<+ 7't~yv +^z)4ZC7߽RN29vݶUtW݆y;@03GfxniT~cR-ύԮ[Fr~9ll9hY_UA٭w@".QV0ztGu}볳w׳O D« +:l@iyMeJIy*#XY]k_]2f@e3x;KIˍح+*}lA$kBŪ@B= <dN[g>\+]8"{_!5i 7\w9OOv:9|rb˄ 0; $HTƆ7\ɰ7rzx ȅ"9XZ(NA+If^]_]ou)%Nj +Q/[`Ӆ<89yCG~ꙑ5b|uNXס`Hi? fm6m#2@ԥخ2˩XN&Ug"%TJeҩ/ha CnUvz]WRS4=t?e";эyXYyb}ݿXHpvPa<xdU>R9oFzs4i>mҧeB Ԛ)mZ"wU5 873oar/x~5ney3sTj|V{v:0Ӈڤ +̴o- +=63j(y{qIww)7QxIJuIeB?4|[met?7BOYmz<^Nؗ@o$Ms0Ko(MJ?SC;>hUaN7]=T<urK;A&L'<+weC0SAjnC-sZ"'(ߝ|}.X'uvIi?򬙁^G;ͻ=T8megǞhϼ9K!JiX$*fɝeR- SWw|3d +01@4]2Tȿ٭gT*ZEFOR]7c$&=& 6tu6kkKKjav;sN"v0. "?r(%>YދSW3B?9ۜ<:cH!/݃&p,⺎$[f,G"08: x'xK(/8ya#ǩi>Emx*) hTC/x sh&-+ {+  +ȑYixsv\w0jFB O/>HT@{;HJsƱG1w/ +endstream endobj 6692 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6693 0 obj <> endobj 6694 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv47411V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6695 0 obj <> endobj 6696 0 obj <> endobj 6697 0 obj <> endobj 6698 0 obj <> endobj 6699 0 obj <> endobj 6700 0 obj <> endobj 6701 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6702 0 obj <>stream +hެ[Ko˕WR +v׻* ofH"`,$Z +<۹O&ib`du=;n׻?<޽{|[_?RJ\Cn[~ngh<~qBڶX/"4Vv +k/368y_k{Cav>ET*˯ߖwz]~yOqn=<`sw˯35ZZrvC?^~㧗o_>/_r + _/-/_0pKy*r?Qokjq!,oKI;-hunAm9຺:n7~ғ +s;&]CxX[5b6puͱڟ`y $j{hW=z;> pRi6a> ^S䆣Ҵ}P֫W߁ tF 9l I~m[Z92wf ^h!فLw D + Dh#h $heGRV\l la7252 d5axO)5{@4v/@M@(Qhn{ +owk J2>.j}udw]})~[Dlj˦Euȑ7j,dI8V< &`8tU_23mI*t7kp,SGv,lȝTek^o +-FII@TCfɯHc+$A>{sD mpS|(AunH 2e|܅c;)HDIAvPeEBVȑ<.>})SX!_zִCZ79(?lkf殁!~>R qs?=_6xgDC @rGc0 MFUyL'|g|Ve=Cà4:c8 ʌ" + 8:cSix#)+e 7d @6rKTך|f ,krt +o H +%oO)TD9rCU#U *ȍjDk/|c W 6CEa22׌d~P Hp\.[ &3]9F94"|:Y`${=d|dvvqv`ޕkٮLGc 9Ɔ!*$d>eWK `S1d V 4!\U'm>`0n}Uoku2ɏV-Y^5`"x|Qb8!yݣJST>/h1>}=u7:h^wUy=j3pBM1_S [,)&jA$#0vk[0dǮ^槈9jdO 6ǟVxNjBzIŻz"{+L5 I{)!IZߓrROI _ +*Q}ط*.v=Gd44h/>;8t}>(Ie8:x1L!gۇ<4aa Vjs$!R֫n87^SM'M\ӪojkERj'V_{zCؒ|%/o`@/_sU ʂO=obMY(v:3tNSod~BnKY+tJx$f;p[=z€wkcꋱ'vܨV #f(Toy~v;.`w :Rx%Q$F xZfsdRV'Y龻aYХ>ś0{TJ=QcDR*6AE@dvA`;e~U#=+n$n*MňI31E$ō&T \"(,a(m;ʨt4&Ɍez:'rEQ串@$nK@Ǖ4;,qd?þ VU&`Qӡmٙ$?.כVp)4'*E|]H)wKsh!J BB(/M03#:v>w! 2ͮ gn)t|t~c<1dC&KN.z; ߸52KXTɋw;]S^{*gW^\վש:2ūp{aP,daD6E}:HO qN#ؘ_? 3ߏ-1@w`eQoH^vX.50sq9gvzC߫ =涼{><.{1\e.P9N^i ʩoI|0y)ƅxʧ[tٓO3OAO"ЃjaO~zydx!%;> p۹Zf Hj *y@}83(tYͽcIȐB!}HdYpP(qYra+5%Gxأe.ZolF_ϷW\ +#->zvij@|Sy|ag\iO;'0m}6 +!yN!,aSʚ߭/Ky߬ ^T,}=[4%~By~ iM_߮`7]KZAls +%yVi7>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6704 0 obj <> endobj 6705 0 obj <> endobj 6706 0 obj <> endobj 6707 0 obj <> endobj 6708 0 obj <> endobj 6709 0 obj <> endobj 6710 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6711 0 obj <>stream +h޴ZY\~_qg\l)RZaANmYbHPlY_qqxt[ϻX->Ҭцvgv{cw ,t?d<-KC8#B;5n]ə3L-1xkeƶѱؼ|.ijsx)͔"pf5-yDf2H44L-"x"1X0 +. 2YRDbK B Es؎~C͓#6RҮF}h6kG{T D*V`o@><%CVBAϓx%W$*:fR"\o#G*%tݺl8P}fhaY): qFZ)l/3F<PyrQ;LU3g*]J/Pt{ZZbRئ+pNLtg{a$y+?6)awȵ%=QϮqzq Gقɡv.:06H˰I@hyb[Iin0ªgp P %Sv& ԵM"H 4tLQTAv(;WIeoyhHtA"M"VE|6aRӬ@CXQD:VfNף`ѝ" +} |: B(r-B& 90S@:24`I1 ߧ7efҞzARM\F[597oL `:-@V=_@T"hVO$Cí"3@0L&y0-rh%#%?-M Cp4yMUأX'#;4L6*G5Ψæ"-3t8'Ex-BaVgOc!7 WH_$dDJqAsa2k:̎FBMd Q[E 퉙eXD˻.˔}ƅK=BIhn@p^Xc(VMvis邐Ĕ|";bi+DYy:}z= `]rO<$ah Mq]AZxpjGޙx}w~yɧ#1w?'O/qSߐ|qx_z57'c< +jMK/O?f3,g*mTV=i?HyZL@<V -M +O#Y!qjidx+ +;teɪEpvq<1Ou&ө3^8$+$C2Lv}s,r ,'(rrd9Wlz߬#\[K።xv~MF><UQ`袈L<`..*iY65K5ӼI? V$+M$RLR IG, b}+X~,R+P3AнhӔ#Q8P&AF bWCN= k"v| +S*}p0,Y^\ +,u at<ՑPT:uܻXsH:Ovd^>Ihx:3W:+G`2 EC5d.kG`T?T70R4+c57ߧu \GؿqExxU^|&@hx^GҖ,q&?^9h? &ՋyqbP B8 Nlra(O&:F]"֑_OS"k^އV^fZNziVb.H!qQo0KNĪjus̃Y[UBR潬+jwQrXGCL|5_㇔ա7dlW,LЙgҽx50B?ۢpNguLuqVP^z|&)Pc>Xh2z3+eAn;y :Vg : v{yGÛoq#f {S}0˴e~LL. lȂK|VD3=;D19gbAbHD#x)'s PO|Ie>XQ2+2 +@IrLAD%rFXv{[F*qeܕ$X%-j@TJ3|+)\ +l}:U T$ؓw`X4hCLɾ[كI\2Bvcg" +8>l<J(~K +Ugp~'ɞ3pYvQʪCTd1>fzoE֞3kVxayrGv2DC58j&w_JJ.J1;4BώqaIf8Rīh4$rs Q~ZqC +KQfu[Mz$O-lVub(^pewh  o%`?_m#*H\>E(c +ƂŨ8EB/;I{liid-K%_E:Gha٨;BpOFюq|#%Yk'D\+Q;m٤i:L !cg~l%͘7obBis" 3Ϋ(f7vȗFfvs[գ)0^# 8[%gq7ǦA{Hb)` bş$08x6>Āyss`ZklƱx{9>32ޙ#E>EìEʼntο)7.4H{x? s +endstream endobj 6712 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6713 0 obj <> endobj 6714 0 obj <> endobj 6715 0 obj <> endobj 6716 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6717 0 obj <>stream +hZKϯ賁(, dP`IQ~"i%m dt5Yd?ßݓ/n9USbOR6>-9 ņfgvZ'zcmRt C01^^ 671y~V[/uAw \3"3`<J`>? KƏ+ֺʵծTWm-UUSHմ7LbM7֝R!WRT%lJC]*V’LdY@pdR)/.u“goO|sOK| ^ޣ36c/0F=݋?>}{7޽>-rz[ɉ(۴?a[%z1M5"Y{blC`lojȀT&(A:ol7+o +NA`h Sk7k0lx%M2``bT 3o10L +1r'#Mb5\dKu61DR 2ӎmm<G#Xߞx#vqa߱qchoKE*a3.|tv& x w%0%'PT2,b0BY@ʂM(2//ěȔ ɉ@nD`i(ରѤPX> 'a$ETPƣSǡzW%5svLoAt,{"N066$>X057{df2F(!u/rGVfQX2ԉ ɤP, %˨=,,j 0Ş4+ė7\H7G6d|"[>MySkTL'N1pXK8ײXyWr~=;Z,u +ф- R *-9tz\#.Ѝ%m` 4:^븻^k!qk3*d+z_CH0i$5C!+S;2qVyAt.—`Jb +Cxb8U]P?8}jXFI/And^ 攸ϲ}B];:/=ﶅ>^&o#,q5CB3{0poEu:h6AV'9Rq !eܧh$:"6u^f;^~?O +B{iv04 /o2p_YICێ2?gУfxR_eVmRDt/9JOr5԰3F%%&1WX&Mڅ|&}8nnU~9ilu;2r떍#[nڇ8sPm#^0c FmF?ˮf!$'IHzL<[NK.B{G_E10`3MpFCO4&)Whq·å;61XPGԜاCfg $ѭL£f>6#]G񛛅qݟv톿 [ +OȨա曌K\Yf~P[ +`3Vtۖo6l瀪аIv̵O3*m(ʾm+=] +7ݢSZRm_70SA͚-VrMR#.[Dr5ˊ:ucn?0:d/>=WF.m9Ј@#㺋t8RgjtyZ]]arflW3t瞌g̸p?OL}] E|O԰.-IL&oqحx;+fFu%.B?2U&+m- .|!HI $-~h4U5D}Q,tG_2x&:Aݚ'bY'u( +P,&I,qckhcL/K4#aC1,"x(i3AY- gn%o\`e>&/2؄$zi89Fw -z[/0;+iu/wmy'٩.k  +endstream endobj 6718 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6719 0 obj <> endobj 6720 0 obj <> endobj 6721 0 obj <> endobj 6722 0 obj <> endobj 6723 0 obj <> endobj 6724 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6725 0 obj <>stream +h޼[Ioϯ#`J/|pB ;rLJ( UrknWw7wwnqӡ-k4kba{O ߟ Z\Yxu[pFvjvu=3 gՙxn]];`Z+^2@K)фT< Һ&>(mH`q˸4 `k~-1xA5y᛻lRZ[L, q452- yg$=dO]I&{%h r%zኻgMq&5Ը +2X\2aox,o}]NW_= [dǾZ>S@KpF>/~}|w|߼g-:bt,6/ϰ.vKk&7!,p֤RYځځ޸}D hZ(ЊV ar5.f76{Z=pO΁LmӎI{`f3Nko +WMу;:gj@D.Щ#pp zw=A TڠMXFmjP'ᨁw2hJx`3<:|>ۃ"#?$'`KA ~ jČr$E< %xiB<\gK"[_'|[;XÝTIXy^<@4|-3l^<A( հ샞q]Lwc]#A1|hόVV4uBdcZ<]G7w"};D$)Y`fb4۝roᴗDT#"$$;dG"HqK +n(tnB]q 1TYZO=Y1)zŸFw¨H@ 6k?3Qk` 5">YDbA$S ^D +UbөMSRnbvwzn U3 U9*X7,=`ߪr"1Х[bR9 ۋzD 6B43nt]I!wȶҺR7&V 'ݞ*˅wXdEUy9ni>5уLۂZ# ]-'4A?DRÛ}Óf57<;3zB{2u AwG]MkS q"BlDS]?@ +9L`me?mi7w~!y`udJ*FpjJ吢 a0@DP=M40/' P ."c+8gn]WeUuS)mZ![ZTN c'ݼ#)aԁ3*`9]-|#H=J*AMZ"db!r =Xt'Z"c49Lc 2.p`.`rA}Igw+jI$Sl$ձ!]>B'Op\c˞gd{WIWy}p\oKz/k^zc]=~u=њ#'fH4dݲ-2,gŞF_H<6Ɗ &{DwI aEt f)OX\ӂRwn==G.[k{6}TdPʐtXqG:6ܡzx)UM%+Q_jGN5PV{r#6܍3t#^4:V)y +żbUurk +HIc/6Z;VT:S};r@`E Ͽ†rILoi0(-!?./0 |po޾|em~ON(}<Y^p P!yq{Z[h9NjdBzGe3W>  ='A6A-?kMvH|WȘȘqԙ|g'{ZҀo32vjf=pNvE> \yY +@(5 qb/\Ԍ5 +pf:Bו$S/iGdLeǜ\.Tڒ|2'Dbp%fz. +U>x i1]//Y01&^PB.PK/xoȅ?&iݱ>mNÝ1PA[=M$'uC<eN| +g+ +(~D{p}})U-Ŷj7ttk'~5V_;-_.]8_>xB(yʿ2N9hJ̃XW8))*P,-SQVgMV'u 6 +T'|MF^߱$8Pǡk&tYRC˴Ƿ&9]E;q@8+4i"mNUs ۻt6Nirp8 sN}_o;jv⻵cL'nS[^@( ^̗IEZmyآ5E2: 9U:DNKy~Gͧ 6 ^ 9XMK0AFwza@8xY7_a;1:Ԋyc"HQrCn ƥz4${twA^MmL\`Zァd1WkS E>3!)S%9qUыi`{}!%U<4Bv +Gm~NR] >PV|gJd  g*1$;d%<$ t2@q}ɹPJګB,3У\\M44Jѿ[Y랮kuo֚8IYziv'F~"z;CM1%?6e}em;])^)a`/&}`0a{6~VH僫Àt:]/inv~qZKdxpExVBzoeB $4LjT"r1e\u^ܛi~ / (~!٭LϬ4({8)E6.> 0;g޹bJ}1 ކA1ƣD3Dy=(R}=DsTΘ}ҙ"{qV= +*P^?d*{@Q774p7:dk0,qnpm\Cʞ+P=k'\0Y[4x^;v:-)Q  2Q +endstream endobj 6726 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6727 0 obj <> endobj 6728 0 obj <> endobj 6729 0 obj <> endobj 6730 0 obj <> endobj 6731 0 obj <> endobj 6732 0 obj <> endobj 6733 0 obj <> endobj 6734 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6735 0 obj <>stream +h;nGv~.2{1\ bA03$ef%&)/6ONνCY^7 NW9ν_wnxxWWW~p2.y=2<0Oaz1 o/i0?_MSHgv '78C*WO~3Nwy wMG^:M_EcLe D`BB`>n_iC7˲ c,27rdw-'bT iѴqO-Ųߦ18;Y-7H!u'.EyZsKs@|X".yy8h?4:^}yy/~wtSD[3st#`3-iVZ ?]<=ܝX<DGe &AnH6OE(=uM4%D᝴Rև1`q Zqf7 e8yt18eO Kof\1؞2p%_%ֆns\ `\`΍<]]ݘfCNy cF4e?kúQ0{~cp3x?OHg#jx =:F}2Ի%ܻ t R\4'ԖMGzQ3gEuDH<¸AI%$  Ccſ ~Fd<R"Jłf iu؎~Gm8ypΰ4Tiυz1ҲGݭMxT +rV;ʏHoIt@c+!%>_5uT\q)9^J}PPi^I T)5P?HKc`쪞#͕EG60d4dnksVU#26dz@BH]XYzR프;ٴGkY+s %a}x./nG{3J2f7p݁Jr)L99`i.s IԼd owLN^ Sx &3qȼt{Khyfu[[E#dZ/Cf1W轰 l +'r?SlS㪅 TcuK0|<ؽ@[':ӭM2hY#Ɖl})X&lFQqNr;b@ phTg<U_mdq &JLSW +EY% Tm}/WEDS8Lq@5oʽh8hʩ=m6L]{NaѱTpMmd5O f%ǦCBy#D✄QK -jYa!/XJtƔ_ +&.| M=[^4 QP)tx:vm4 X*zo22k;avlH?D67Qo< M&Z#Fv+CaCCs㮫7}ל̲+rá(rz ~ZPg}l*YX6!NPGkܒ"ح%53 Ey$?M %#xEqاI\дǣSՐ)r:Z\=˳ARv+Xk5 r4kɻ ֤HD4{ی-yLK1?uga_jPRؼ߻)cۈ6.xƉQv!m홛6ɴD=\p^=d\E̫^vBj|Պɏ,v@ V5(:$@ι5Vx)n&Ԟ|y, 6.4SՌ&\i#ֽ3SW/]hkh*'3K:# U;sr"#32oC w&O%yg'٩,m9[1)S@̓Y7Ѣ犑6VV5IS=&aQ':@GT.R~:!y&|nX ҉M `xkg LK5NvTAѨ"m˳B_ ƚ8HZKjM6,iMD:T%2,+kYC(iZ2JDi6=ՄQ#{gH%MVVz|X>sצ}5nIYX:yv%Dcֶ.vvwYV.D#iwm @` mOi-X[yiU{j,NoeA-t^^E5}fGn3B2ZԼx0mhlDq#tf!6k,eX6m +ѬLMӜҘrqv&@KgrbU}Vv @m-~O dszB 1؄y|F~ M&>')}'͟16?񌛏T~DTB4ZEkTTo)8ETpK$poaPW.ĸKf~{.gNnޗ$T2vYEU|){̝bKnH/y:_q"8'Z&LtX&YҬ=&UHR_օ&j ++Pv/ k[JH/*mМݲOU֙"HV55KgT]uUޡ˒N 2VX7 >J_rY|9YKPy>`o2v/+9 uL+/ؒUD."t'+UHɐz4•:53~|W|,|VBuWs1ҳEXԹ*UuR(ɡ}0n^حP +*W5s@k KX-A2H>mpHwo.4QR3ot<&K ]@höV@j;8RkuܡoeSVhjDO51br]#.e_!-rl]y˒x]^?!騹MDH|ʦXOI+zƴFj'#Y WuzbO,#R\)&zb +yzx Ű?.KczK/4+ln +ROTKl l<Â?m|w7ϗ|͝+/0I|} U$/8+oXz8jUXؾ(G9KG@7JG^™v"dB,y>OF\Jsj +1*2@gho0'ﹽ[tLNluf\ (KDR0օ2U'4]OEU̴Hڛ|ٗt݁djpTa*\l:Ư_BBmȹɼZd\Fes9UIrk^XȚ;C!'.@Cćw3 'лU:5E_ꙝXE5;?.g.B-$ڏvuuA|6~jq{)S͌ki up5}-S퇇::w}AnB.}˱U9\ܹ=ӾhE.5߇xViZ_w/ ,/&*0䍬P~th[,h^,٩oiy/bЧ֟ѹ wÅF4q +F<<\|჎𓢍sA0GiS [ia7|N8/5 ~SVd ҃qH2l[w2q5'O\#< 4a1'v."3/ku; OjbT]GiʓT[|{b{E@&|+]c1ۺMQ{.偿BtP]>t +0v!-7+ƪಖ+~eM?=p\4΢aԳB_d>#X_ξdс_5J1/[[sSrwqn& Z7GۮBjǢHu利Ar4_i +endstream endobj 6736 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6737 0 obj <> endobj 6738 0 obj <> endobj 6739 0 obj <> endobj 6740 0 obj <> endobj 6741 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6742 0 obj <>stream +h޼;M9n+h/ҷ +(a=fC׎7ص3IQUݶ KRI(~o<;a9o9\<8㇇8ͳ {xsH7C7&bk!|#B;-jNnZ䦸n|.z< i d|}>PR۠lHS-K™.̵p1+ " m W'ϭ~arzϏ~\=L>,rbYzp}qXqZv<3da݇ςIzHi|JojADXqģ)nJ2x|O.՟^{?~;3q6s@p5CZJGn0տ=?}O?}~wgX/p'%:Bt,s>|D8<e P)-@x@@m?}aqZBVa9\:l~ГJ09P d  /aSީwtn*WDm`6 "pR@'2,X|&̇u4a6բ/O)iB `'`]lPRfLAMh,+u"( 2@/м A+;jbZ b TC\ĢMx=,~ bSME;L]&px.hnparKA L4)~ +e*uUA(N#繁3"}:H0-Aa5AL3wkK.*5SpJaQ˱ ŶRܮFb#ڦxT~($8~Á撈@!a+Ez~kϨ F]Dv(T: t`@5z̓t,8VN"TRٵgRO]ņtrh$4Uz:5= +Q2ԪpQ3oy4Q)ݣn%YY@ +qiVBl Ю'@O*V@]Հ<@95p8ӶS$% `>@ E"8 meL 3ЭA$u[βmoɤtt3zw8tIɁ:5A +x!C,C$e$Kھ~q"2 I4X"%`HQ{BţެaC8]d.YOx ©OIqfyܐ&SZ@(7P,(,u@&ֱp;=[vD1_>}ρ8 SKӲ!/,2u{W)qSl(}FUtHU# vR-O435i/pį/(HF6-2AǴvM"$.'弄=:;S\ug,@udH쨺cm!@ x@2n't!8o].̾pKq.aj9BAqhӌb"NP]v2ڈ2J^Jini dؔhd Zf[QUF@?1L;Kh4BF.cGg$2͌KDmFNw+R]Ɵ髈x{>ąKovmdZ(OkSmRS0DxK2 +"e 56ӉBf}KpAnh_+_P=.^ZO3UǥLۍ,X}6CE+^Yoޱ_~%ˌlkLKKeVIG<8-L62Te70^fi7|`HI;\ ڟU;@:&3@Xېh D.ںھAe[tbLJJHgX Y.52Wrbd&[LޑbjF}.*etVJ#)+ft|k)ye &Q%EPF'\AH*\wj«?5Mt^ɺMeYp9 +!ixDOA3I 7__5 Yj]±LdtJQd-'-2e!'&c3Zz^{W:X +l+>[ۗZIR{~,գtI]77ЁP:{o]`*ctewBp'֧h=%q-g1h56o +ޥKuJ~h& Gx؄-;'2zu-SXèы%OTb/m)%d'80SP5C; jN"h1^%RҰ]?YLhJK=[Vk =`lՄ~ȪTs[ʹ ֨tu^wdP/{,|=brBI^;?}&G'AIFXs|孓=\ +;Ի g:;CZ 1Q$,43!b >!ƞ-r!x\[.i0g)s3wĸ$~Ae)+Z w4˙ u9W$4DDSݵY|Ip u{ Cf2D̖bݬ~L^w:n0\cw]>tN*?\z: )c{jqr"m5H9x=M&4(-am9W.GQA5,F4hu]!br2;X2͑28d],-Ծ.VC&ANt'OVZ3̺ EFp.PCZ-²$mASsp;w5`G*ʚE^(~$* +(Qg{8n8Kz5Z ދqLOʴ~A5d]SٮԀ])n\j฻rR,'o:Daf|+`-NjV^Y CjR4: dgDirmvL\0gwL]y5GΫM>Vhy9iլ,Ϭ`hgu==:$:|ɑγnrU% as+p&^btH4h3{Qʂדɢ0SFPM+{xNcCvQ") 1Up봘z8R򞳿@ߦF\` %Pr:CIBiq +Mvƿ+c{dcK:X$3 o Ku\MY 8rF_>@?9P=8Z A^pr,}5NzmӨCRr :c]!6-5Hw: IǓvR{Y$Iu [khZ݀)&ۋJM\ؤ$OPndG_X1=s$_yay +XѾzR[\,s*e{P&ٽ5Z]%u6ɕm-j&b`ac7]@=(V{Փӫ!3\x$݀#*M>yvĖ,! p4V>& P__f7}8Ff%w JA =gwSw#ȒwXo2XS%vI5Kس$JA?d`-mFFlitlŭjYZQps" u$}|%$PYw]@bXެw>]Lj63jp¦ +h3nd^Is-QGۙo_B^dj6 [jƨ3A)_^ǪMLگmVkyS59pah+ҙZ%&4[*ipu;#ÔI 'ۅ70-RrKݜ ߳Cioҩ!١'$pk5=VS O,nJs"7D pE0n()n(r踨+}Ws\zP6CloY//}-):U |QeH5W1i4r!< .Ai(2C*7«!ɌW; +!ZLϏ#Y +endstream endobj 6743 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6744 0 obj <> endobj 6745 0 obj <> endobj 6746 0 obj <> endobj 6747 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6748 0 obj <>stream +hޜ[K$ϯ|gJ: K8`aAX wDdDddu5 G/5-,?m˷Oy|n[H+_V~(`[3ڷNimߞ_c*| :p {Zq'+]ſ'`iK?.eY}ciuQڶtYL!5u5`tGԅ4!e^+yj}ak1 J``O.5.Vwx~uy{r]>OW-]Ͽ,?Vfji˅G>oǟï?w[~߽%/_@֢#Ų,.ܒ< +Qt5n<44K] +U `r]]_i98? kkMEOx !i(K6QX~{Z]+(X0Iq!QPO*zWek@ٗ췅UmZ~9[PGd k+,`H* C릋 62DzK4 \ש#8#-ɱ ͎R|{W82d)8!kLW)lJliw=~ڵy^=ܔ}+MHmo# 8uB =)=ADs +;bL)d8Btɀ iQU ӱu08 +Fr/ӎȓ`QWw!UUɮ.(ͺ liw?!~v_uɞ%u*ۗ>1k1-}J_%~5 ,0u,}7u7wIFM {'(R86JtCɉFQ`NjGgRS=X=TUi༕X^}`Jpw2 * xXQ709cH(ZC9;Q~pRcci2fT޵;<9̒ޤmgCW\v,B5 +cߎ!na|뽛 fG9[BvpoA}%Ku񾍀m"R vX +޺wy.a/o}^Vc~DYֈ*g1I L5Ra1)P}*SWc`ym)3`r'c, L1"w(6S)NNYI +h:}/ʞLB t#1z%HBh5l2ۣ@H!8(箫8Y2Xo23|Q;^rADtx2QWըMr&5*u:QE yHx7N0@%>5C(#pѦӊɛucjӹ]Y%~ZIeݜ{0w(}ق\^%5Yݬ' ;uS k!>bKvֿ$au:&6j@z +\($d˭}~_[o_lͯ!"2:tG& "D~L+ٵZ5 I +?Vfɘ+Y {${#7<{rϤL1cR䣥9H`Oa;g 㩣\#3ڔ,%[u52,Թ#ǐ~΍H{=\Z, +&)FqPsDy\DcAi,*t'Vv,}HGJC21l0 +sI&tuph\'L{ ">ezqE$<Ӗ)vOrF\Y/HR9,b`1+,jb2׹ZHUeBcʂ" +ZƤfֆi&NjB ]L{z +N>jv +=;Ãx jmn:3TY(}59#R|tKK"I 넻ͻc9dR3jbr_;e^koSCd-(>o_OoLvlU.|rBc;.Fh?IE@~Ũ=Sf']'Y^K̉> 1TQV9ajZ礅Dl,νp 6^}j֬6ۢ2WjbzcS[/fFH8R枫 GLx {ǜ>}^{ڰm6Uwִܩh&w4/EM6}܈bn,'αtYQt}^UAq@ ohGKPYh f\-CsM*=`}]QAm(x P~]1kR2ۑ)^Q^uv-I󊒩R mcI3"oԝ'r~ |Dks+!ͭϔjC#{ROhm#'L0n%`q&u,|m)wƗ"7@յގ᣶gy +&o$kIMlVn'.4l5E +Gu;ʨ-s +k=k9K'F𽈟 +ڑLW&4v׻ @8Fxobf)ܰrvD8ЁHg}K~ŖrMfvOi,1å7cv\:߽t/0IeKS[Ս@@4*̵cZ#p+}{!#PJ`_9IP_҇"o@!L@Ë#S͜bUZh=UjA㨬۱?xpx 謦(]gIUոvKV۸ըB* IZ(4j +Q;ە +Wɏ/pLn_,6_AuAhHSrDU~e竨[He_죁'n\>џ9NW\qbo^ѕ{&?t<>t +OPݥ aven fpR,Jr/&'gy;ӋMzU،ceR ף0ѓE~j[m3L>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6750 0 obj <> endobj 6751 0 obj <> endobj 6752 0 obj <> endobj 6753 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6754 0 obj <>stream +h[ݏ#7rjvxNr=@|Av'gv|}UbKc!@QEX\ۛwsf7w~8v8}bw{/7o!$?knzo݄>a4v73֜w䕧X~ D9a*T8>ҺKe,R!Svt#)Z m~ {c><π=q2pS?YL 3Lo\=N=l 4_`0XA$fa# u0IRTVS,GSp;{XGxt OQF}3п_6\ݞ`m]":v2[yG 3{Q)gSnC&CQ}ή.0:< y8WOG[hIAA A~DW2 މ-%ڨQ-urXR~rT.cf[J7W~-wD]˴ʵaRB +0}:0aܾ!':kp#׏f{{W.up'GV (T9Pa5rd]O@AѩPqMl>^ЈYg +LlŃ'KbLȁE^3ăj`*sn18{鈦r_)Ј J $UusSDzRrq%< 3hrvB\sveK² v$V`1+|B4FI%nw[ohXzԧ,@,PE{@]2<;>3!gѤ`gRŅYkCC-E] +PzCUTјsҪlM\Y()PT:+^qeF-2QE&,Z J*q[9%k9ўgIh  |'rJȢ +Eatg$woBAz +D*ʯhO]Q +WeY5^$+MhI跇_ +N"EL'4yAC "/zmi) Qyu|=B0&#v`+@SXG*ڠ:pq Zgz.n0?-uŎQPi2P^'1r "P_Ώ8yRAv&iڷƵnu2q}3eUrZY`tsv|Ii oqVwh4n{}:L[KavUi1 ~cd-W>gOA6INFlU'ў*iB\W1"$k"NMۥմiebRmn ȜԾRN VCi25S^%jZ6BNTB=5Op^ڊVZ5b[j-ʣb7Z,|r*X GUުfOʒ,a=UK%ީex4Tk5mJQYmU=S,ZɊ.5}-,^EկŠh)i26#ˌS N8Әw s*81hVyw5Yĭ +s>YXuLƉd<,8ONo˽a 5a~`u@)ڒU!IOJNٗ"D}" ʰAO8-qZTEٕ:4(J]aH1f*m=T˶'34BO_*4qlh&ZBא2vD-z5uk +[?a@7A \KPP!5tJX(hd*cR[ + +m +bT2FvEh^⋩.U(}껡rLWAIK<ц릅gR@cCL6$pٲZ|OM_VwրWz3^=~ԝ=̰<=\ۗ[uץ ]=h_`6T>3E7X8q|J;P;Ten[P?<3&<xOw6%+*=g\}t8v ʧ}SVGrg\h0?5c@g}a7 \b(] Z=<:7[HaOf9}/Xi6 M:XLy>N^O_NВ?ο_ݧϯg؍Wk 286G8qu@Hpjge`fJ]w#`K 7㵃/Gp`^aEMq&lP(8'4y5[5E^SR59d| 9Ӽ{ݴV#e a跦)$hٸb$_=Wlp4Ohq.\//RÀZǩ]8.EG}MWr8YLLAp޿ RH" 6S=S6ɽ,Q`[j2gM k!G2G`j5֍gDK+i'iD/09UxڸcRL<ݺYDf @oKX_So\>>=i¿AGO;Tx,]AtD5C|-Vk8ҁ<]\=VHws;r8P3y>n*e/מ~.O聈F3Q)ea# wxNb7$8+-(:_Cwg^Ow~Y|χ+|ɸSi}yt [0#?'kd5gU=^Rk*:i& NS;^VjT~.L~,Vjj~}DZ.2孡xdZF3[3,E/B0ZکBdSI]ctֲUS2:A#&.T37$B u/^Qʫ;2f{t 8ݰ}]#$m4nަkٜK ܠ޽oFq%OMƒf,-צoࢵMVIIpAoƂT0+Lʖ~%; i7/9mj*Iz%ofԼƂ6SӋ:țQCV;9d 8֓mnRU`+kp"b[ӣԀhu,Ss,d0FBeF7r[ eP|#_'sXjd{~Töu{U$)Iǚc9'LsgNtV,p9qs5lK/-uGDvN42!]s+(\b6xմ ~M`!_2%7I1+,5NvlFȪ~zR6o%,;<^?,vlǭ䷿틹b"AgB%@L[; m- =ɪ/oVF'uPXjPhھ[ .ʽ(,Mo,sd@[j@D;K /r݅Mٍlg|N\ +8&QCLzD'a\dw59.%$N8O8 +m˛V>`āȰk1띝q: +3ڛW}hI{:+njwt%gU/}jJ\G`-ooW̃ +endstream endobj 6755 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6756 0 obj <> endobj 6757 0 obj <> endobj 6758 0 obj <> endobj 6759 0 obj <> endobj 6760 0 obj <> endobj 6761 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6762 0 obj <>stream +hެ[K$7rcIF; 6CuiJc4JZw/ffH!|_<_N?//N/eZiڏ\&O)9^~|O?~7cwWͯ}P`Fh6.OO1 +|.ׁ\ GrUz~[WO˲X~t-zX۴S:N R\0n"_b/V=Mx?oOx֓G/?O;%w /AiiQU9g<܎gb PXrۑ%|w#qx ]+bJ Ų-X W $)B ˇMqȇ' ID\zK䖂&AϹ>gu'!h2k@ڗ~Ietbkۡϭ3"v6<\N R$tM@p]g]?Ⱥߐin ڹN*7SpL]##?2l ˽qaT+ki^J~av)Uj +mQY߮_Rm $|_PGzMj9Q8\EyMkW\sjJ}J@怭!ޱifHKm4e&6;ϐǩz"< +v:{nZUdFp'(07Vq*: cɫ/䀟ߞTvL=`jp<#2FH7vN [ M+𝐽-u(ڿ;hk9{C@N4`Kqk;Nxn\SP:YcKw_NBgۥvGc!/QMZC=P)Sh:wH, #8tAfŁ&A#M&nW uXZ4*= t\T@UkKtƬIz@qi퇟(q]* 2b7򟛛f`*As3=CqXȭ O sNopBG򫨔hoϠiX >V0L1b'6{U9wp*Nvck'2yCeTNP ʉL8E2D`&5ēE4!iLLid3Œ8[\`IWT@چ(,٘ʫ HDrGp  pj(}H©cKp`~rc.eYYdf:-0ct#5F'1Bv +2kG " +;emEX"a) hʹP{tl,H'v/Q@g^@ MH s 046*XپE]JXAh9 US)7͸qpxjǪVj5`cT FuKK!j.BSMVvoJ[?YV'7׸~&'yß-/XI.v֍tiJ;|Kއ2+ ΄(n'scU$M}flrB0CrY&QAhHLɊkWo佰FKÔMc)r(JҲUrQgHkʎ[NŠe#@\+uWA_Ԙ3UEՆ:s=jf:B! +isMi]u"ix^ B32M#v{ݰ>Т}@/Ltt*."WdH!uSI[Z)veىSDD4 CI\^ڻsT8s˞ emܙ;՜rEp:/N̍/nbɪY+t&2Zkn6h`2 +,ŖfmPDN$&U+i MDq.С} + 7=G]wE@|n- ;J:/ŷInpWxņ-EHotN"TƧ#X\=Ͻn8h8O{j׮pTQЮ8>y>,A7]V`jlf9􌍦vYhMom/+0 `y|aܝ|o[W:s$ +_QH  [)!wZcJɉX.̂if%Mf Y2օ0ec+y<tSdSVvbp4 :1f 9Mjތ(bؚ*Ɠ]6q$(BI 40yRܚ+c팮si l!ۣadֻVpjEg^v=$^cf4(v(,~dZ޽*N,7T6ϑX( }HO8#")Ƅ+d&Su!*aFyԍ+b TTuIŰ4 1->x1^-`,C?$#dln0x6 H~JFDT 4wo)=:cG:&V v 8 )f6ULyW7ܬ`k5+'Ej]EGmg}ur{Dґ[`LWe+,.zx'Zlp> 7CF1ղ.XM)'!w<`p=Wepfv#I:k>(/{[b?/d`;C"v֥>R&b͉%Q. +a p"'}.Yk#w=\ 1y%NL3d!Io&bY,a +rj[ 4d+"IXͯ4OȜcYTaћ硫8XQH?4 )9fbl(V%q;i>M0j( FLjwQE ʽ `zJ7lմ"Vce}hsȈ'rOH_8)|4 5n|{@oD08Tja_m*fI˧Xww~(8Ґ5ï\q:8uq Lj"ZǙ)'6 Gis(,(2ǁV4,1LS"{yQq2x210Os'4 '/g0.x%nЋeXi_S,G_h¤r7QƊ ex,)Éb^m4QEhK90>H7N/@*=ӧ/~t~ם_?ޝal;QGn:a۟/?ڊ?|dsNC}7x>L!ňs[ڭMx C OF 1hÚQf{3N=ȰTSH$YhHS#MQtxhDKR/ܛ?x>(#E0Xd+[]݄]m2 > 1y֜a^ (b`\ϯF.#F\<~Kf)\xk.qK:wekwlx~|G$!@Ĵ8^ 7x&FI`T^S>J(iw#fgسs?ǭq {{Mh#pc[G٦^t)aq!9z%ǹɇ6yytu %0G_ +x[ԯm-rjRazLnBUfMKkD\e.G!aI]m\pnGʭmCzwcxZ"+qfJ{ގqVy`"pp=dӲ.%s$) QI i1B:J%1{d^7_vnx2)cG p\j<#{ 6)}|2G:E mi @CWl֚ thRT֚8q7zub:d}s9Mm\m~sn`vA3;eɗ#ƦxcI^ 䳽?Bk7T3Mx+Kp-pՅ%'bNS^fHoa/&$ZX] +\F *5~f h# 0gxc9p1& '"oLk@dЛ*89tmOϱ07nYg;Sb1NʋfƔjjK{q 5( }Řl ,hAy`xiI3ƒJ)!1s8823c^6+>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6764 0 obj <> endobj 6765 0 obj <> endobj 6766 0 obj <> endobj 6767 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6768 0 obj <>stream +hޤ[YGr~_я.VYF0?4g$<,r8mtVUޑ_|N?~;rsr>-Nӏwi]<_t׻y &O]mj_D(ˮ^ή䦥}\Wÿk{Z鱗_x=wZ2A|*%N⨧8K +7T˒ZM[Uk1gx$ww} Ϗ9|^;Oz|X4Ų,&iP橘mB:z+4O>As%MZUV=жgMqS,S'_aN.McgotǗӛ]qogh݉j9YNAjTjwo˻<}><|~w=}|%_`fӼD:9\"LMڝe wg?Oi.TzO.%*}" <-@)Nsua9]:an~I*BVΡAO&Xy*ͦ,S/K?hgSZM'>zsM>]ߚ%f; Rh}=h<1`5PpAexm))8RW#rG|[JR֋<@/V:".徹MI>&XO&ܶo.50HF_|o$[bUQ+(/ar޽:}?OO>~yu3+@ 6Z?tz}ί>?==tꕚ~IFW_]?}|,ďᄐ<}rz V +6X{ +租yo/Nݫ^ +=:ZP __7 +t?vCn)h;\M eOI+S}iI5ޥ-esz .`3^XYk6;0ۼcox%۵/ګI&$n:Oq!JbFs-&=U*rTtXm֗N$ +sJEnVWޡ +s}s빶;@+oɋCoudx9|M,2GebK鉎hL,Ѐ |fG;ฉ}M|'6};EV8(SԶ~#k>Ve-1!*mg}N][QPȸY`~U>U*G=iӃ1IsO΂iFzf ,ٮ,#Ŏ+^Xn0G۩8')efL]AY$Z}&G rQ)Go[5OqBf!m$ T|Q \WULA5ј*ЁL#B81]oA6xĸmOW0OAp &Ȳ5ihFGrڹ c%Ϊ?q6mMh~ώHQ0w/oO5N;[_mȫ)Nu +׵m/6!>B Is՟e-u ͕egL9jsK!3*M3J!-6uh9iscbȦmxu!˪!Np3=ՍT,] +(_ صCT% &Tg"jF0q$\r)ʕ{Dj)'KS$5 +fpw&&3WY0a`o.o2 +g\F aGzxx AlKh,.g>exzW=G[庫}YLD|Fj^G> | 4X'f#}Դ^ZA5tX q9.L,G|탇 7],ya?&ƂIlǮS ?5 MAWP}$j] +í15ךqO.,uw-QV'EM5!ˣuBT!z+0"r0q ;ufGf2@] ]HzP}Q]1KUR3,۾Dj AʙOBUGrPҬNÐ:jęt0ˋ3}5y8\3X Kj`ۅ- MuYE(Qc`jv ,⨺Mh6a= /db7/7UZ~s@ N%_.Kd+}O 5A!gg|v8M!4ئs0Cm-&֔]4UBrhh<#9X/x$:[4z`x Ύ4'=&PV  +]| +~C $?Nj8}<FQh%,={K qxUv?aaX&(h8BzIs!8ܓ!7n*#S`틷27Nc,Y1v)v*4[5PNH4|GKV2nxW7N8 Yc̏v7f/M6HObM̀+;}dCB +;#ηmoG=A1}fPlJ.ÉႤOCCAIp}0m{"`1r-Cs7Qdw)oPϢINI'@;!#bwqaTJ}Z k8vԤ:w q6&-ȳFVWx "E3UL;vWY>nMG}āgnsK\V}@^F@["Q1olᗃ:>t,uOl>ۇI15(F>1QY14Ev4>y&ө`\C8K2*]G +[ͤkgg_Ҥe^ +7 (.In3G<9֍@i|fKDZdžr%VuCRsNhjUZ#ͲsUKSNh.z=i>`iz4P˒tg +'bŞcs# +gmY}>x,fF UWL(fUy#{qr朗ԇm*G8~"SX)yB'2ǶˊaU̩\ɔ׋2nv)f[q s)3ۘkj%,ڷ3N ~׹NǧdjבTاGg{38yՉJ5E볚u*dOi {YAfXƙnl3v[V9NBvYabЋ2 \'7Kfj4WEjפI+sNgWQ Q%\,ۏVs3Q!0-Ǥ% tpy!}SO\toq.Ѓ8GڦDGRias,*U%j^ +G +hdV3+Mu.O.$6"\ +nnT+|Mo)eĥm + OL-CR< gnۼnZ>~-37!+naV9W×dR%ȩQ4nіAHwq39!ϔaʀ^HiѬ" L%@CyEEb)xq@[jX 0CeV~u() Wm/d!/(繤R;Pa +FuUl25ds1F8`ñ}4mKXRͷ%䷃&`ᬹa)XfL~DdIs]O\i=BŲu{UXXNp܆xwNKinF &?6@5yYm4)m Sm|G,eFt>5$n*lI(aX4N%8(|b#)K:@v +K-Y9%፫ ;dza!2 DR ssȜm*i"Y}omιvmivуqsHcRNҘ?xDG wIrOr덀["Lq۰VBp 2_0ڮuh䆑Aؚs1g3Y똲ĦixJ7RSIo|RȬ ƌvql\9Y^M^{ɑSxÁ(r A_NR콘.Qj7m"ƧO<;4ӄjoȄջ5($PEɩ"G4󳃚zD_`<ۙjiPfg9PrA04͟4\ѫ8 sz@JѼحJ(әͭ~oDGn{9 t15+z]QHp٨njc̬r b,C:($+dr^_3:^R2MfYsJ#_zI8@2_=Sw( E)w+8adKmo%},3Y{W4{S4+Q0c TY6c_ xt ,Z8:@PM\1e cg9uMN&ψF>,0w_"+F!z;d̵߼Uk+58v殀'̭-VXҞiA6i옲&,6=IKGXx[it`: +endstream endobj 6769 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6770 0 obj <> endobj 6771 0 obj <> endobj 6772 0 obj <> endobj 6773 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6774 0 obj <>stream +h޴;َ$q8cr7i$A+$@0*a9 +~;8de%.&`0?ß~ûG{0CYJ<_b!%㧇e]- @?nº CNGXe֓[2t퓿@k񫃿NoWZpi`G^N/.> @>~WqpyƝRW20C?&J)ŧR큎RЏ2-DᩬRdLt K_"'l"2v1C s\:`r $K\!%pcq\û߽&o{@3+ԣ?>dof(a#j7׏~O>]r ~x _M>xB]CyHD:\>.CGjvm-;.%hePi8m_`%ڎc^XX׈kMKY0%"_`WcrR w4fI͋5qmWD='pPKh0Sn  a]MD[d<6Lk3-?/ ?M x_[`?J8TY ? mCQzq]c YjBO;S.η+L: +doDhT6KV4jֶYJVnMSw4axIaC&C;Sݮ &pFm7b~yXLI@$klj4 7%ܛ*S2끮~Mep`kǡ#V +5n|y` KI` @8t Id/amڽnʧ*ngNMC]m{nlm8Vm`V49^+-[4yx]vm=*CT,<_嗪H)4n_[Q{ïB3kiA!7iZV0 (+CPa7`8 :n@pնzIkC3~]\xp>=Л[MGു@i9S@BiG0K2}d U=T>z0 ֋n׵ZnyV|e 901BB<붶m?UĴV2]md@POۓgZ'M'N#x-\ԕ*j`fʭ#lGOmʾ_ڧ~un}@0?˓ʄ?[{9L+W؍1s@ ދj9}UncH7)K|rL*2Y֌r7żu3sUس%S: 31S0qg[AѬpDx8C,;bu֎@`28phaT)NDf + H &/rEd4LI67V|})ͮI텙Wd-h9wƺk1JHNj7{#{§'ȋU)AgX̡j  N` +KT1ٻt8V qd6gqX9ϲ%_sj#]Oxj7w} |0h2wH%m#˜{ab]M.uzN40t^dOr~#\|@eTw*b EȟP39O'A7[$ԢjFuO4YSC#VyjLG! +zߦx4tߕʞʚ* ³^H!*d#7 SJɻYOLH?Lѣ JDȫYN/(d܅Wllju>j5QmO(䐓U=_:D ~Te&i[ʦ̰EU/'OdYμʸ|R{O[/F79z"~it:[$a!:tDlˤE tH.sdwo%W+:p]¶7QvE];"UIa*(Y^x[dKQ<(nsa⣍cl66R+\RB_ʊɣN DAB?'=Ȏk*rOEv,c l]e)^HO,9ѕ;SԢTQ/ؠEAH5vH2U;Hc{̌( BmsOD..ySk#2 +,tȞvbPSA[Ws+P &ئm;T"Fzhnlh )+ NI2[K⍞0ɎHVbnξMWoqe.y&KMT=<bq˾RfC 6M6=v^ebcV829f/]BӀm^F޳03K{@Uo<5=~Jb_и AYW#U4)TgG#]Avt$̋6l6AN?R*57](fWgtj19祻*wX}v@:-1&m6 Ex+3"w6pK BK|tY=ђ2w(=dnk `01p],MuvmmXSS{WVX/%@9fj(m|&3cKonKn[-̉q0[5E\5Zj&ych;kwQv]T^u,+IF]xH J&T?'LJ+(IVӑ4DAG"TT;LRސāy-]sN-+iA'tfʱѮ(K BE3ᤆ\zS%e_Й\'PMyUֳ,k01ivpBfSE#¸nt*ߨȉ&HcrJT  +5)3~pjf^'SImJ:cZ_]7L;D+$"-+v!\ڵyeEOFY5Ъ"(2e|W r,洗 C!@`# 鴟ݧ Ra*LcGr Ŗ{9r4LǬ#Fs֟8u:,yZb1TL3Z͘+u" ^H-pCI9t8#C9v +JP`ҳ3="9@U؀Co]9>N_c)Ŧ.=-fWQw\¡3\56Ij٫ ;-~,-WmqIJRLwI-t#4mE3u-50-:1ÉhGDJdX d92'AԘzͅۯ(b%Hq$) +*;RIbzSM/nX2zPU3#Lyd"e߀_e%C6UA1%3Y*wDءtquc7+r `M6QJ)D v*ԃi6@@)8r&oI=;av=ppC"LXڬ#i" :֩ǁ7dk7sFLs +]KՍ?MsB cb ʐĮr?oVS(e}|"QEؽ`JV&֫UftM2cEX3/ "nXru+\OX5τm/-AKQɍ`ʽƉS6x,4x"kܷ ׄ)eZl xK!]&mWIk) c@= (z҉6d8&5"_3j8XdŊn%yr:^C9LwudzU=ɐeuڻ!̋YzuUMOYtTn,>:i:0Pva4F-BG8>Y4>syjO{~ݹظGЅ\([ǜbѐ]:;fgBͼTQ'iST#UĻ*Fq#q󤪥r)㈺Z o30jGV%x=-蜂?HR %zq=D,%k g42ق& T7lՕmzKtWsD4ޔXT$qo\_ɛ~;1z v(:6TÐ@eH;K7_^okuě.\|z|m|Tj-p>󗯇/oÇχ?~=>}y_׷GfyPA)y|ykסQu:̯C&gԳ".XaʉK&,X>>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6776 0 obj <> endobj 6777 0 obj <> endobj 6778 0 obj <> endobj 6779 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6780 0 obj <>stream +hޜ;nǕ~`Uٻ^  űDGmm?}ϵ.==tݫ9u?jt{ f=]ayqc4z?4pu3N_^3&jMDMC9d.t1)3ffVY[aHo keceM8̳]]>n!nuaLs08DGXL 0I~߉pf=X( r߫n`Óf1i9sNÇӕa1u;Oqxv87ѵ|THGhL71Z%P B[G9lcMX^ŗ?/yi?}0AFׅda*D,$Vgmf(71d#Tng`~(Ja:/U KkB( kPZRѥXќݓ Zz?nQ Aqtgd*hђmDxLW[4![tF=X9vJQXϺIA1nNpr ʹi(tuL^l,3aqe-"!" ]GQ|?ZTPP>.s# PNM a",2|x`ݯ2{'?=&-4)j/T WXNg궖y<" Hh/(4ۀ$L}sAs +-@v4!=\x"I v0@@y{~lQ SPbҷY;-G58xI4D.iيE؀AY*%Uel`6N;piwh9V?uNd0sf?zPŽrIӉvQKMhk+ `cxUN-ULء@.ƎՉB;oZ[j܁yB'50\0 :3 +)"ECa֣ lyIR_ +wgC= LMZ(Q-R|UL|UsF5Go+#[bn6ާ +-f(5j +bmFb^-И/zmx[~I#L=d.y_ٰ(AHC`O(1gabOX^\R 0tǏrJ\4f.MU+ +LM 4D}s'~ Z/yHp%yofp?J㩙fnv&QR9 ks\uq V<%,%&ʍTQ`1o7iCn/b|X6ZXHbwY/5:^@h(6 +XveHǀN)ytH Kp¶6$Oo@4?V.ZMM[ ;R'W$ٮ$Y6n`u^&yU.M4QƮw&B`@Iț&P +IDj[Cu[گיWf>(@7ͤ/I 0ӽƚE|%2[YiRΝdH B[h.KT9Urm.p#q"vGEs^u?!gALmVzeCZ`pDF bIfBݮ,/jҲ)\.Y&pFldõ'x +B2MFsbZ?=ƴgӷS5xذ/:S(cH0ͫX&ܿ vz%%I\/ +@m%鬆(leSqS)]4Ns8j?̦O[6)a5Ere +uhEeN%QO{;jס> a$>IwVeJ_E5;1!46㹙ݙ(bEڛśہR v^V[MtO\KFa[]4/ GD9˦[CY [f8~QL#Ai5F)<]cc8Z#/MjμҲн'T^N|}azOXojgI*^[:ؚ +NŸlO>MKrkάxdϦrޖ|'᾽X 4UFkfk6M_=&~^ƫUYS^ۇA^nvREkgesӥW)&X㩴dեgs[^&%ٹ⺭7`ˈ">m݋# W r6Թl4B\m9}]y# l_j0R$}byt|ρPjޑ>z4ݤɜĮ sI$Ppe@S}>a5VRsN^49Lv_x"q!mx6Ht+WQ錱ru ѪQkec:Wq#Q}-&zj]25dR]3]4 ܈S(Oɤ qEA6"NQ|RkMh}P㣚#wBkhI=,-GV +endstream endobj 6781 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6782 0 obj <> endobj 6783 0 obj <> endobj 6784 0 obj <> endobj 6785 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6786 0 obj <>stream +h[K$7r@$$PÎdv{0|*u/d̬,_x05;/6Qo?;߿|x}'wz}iK˧?rY|>Ppzw(˿^5u-B1ox-,~}PZooFU덆ff}z~TXwp1–AOWo li\=->NK,o//e-OtZOϩKtLeҒ lݵt9!L*Sk^ jߨx-/TRWɥyjở/>w%~ǗBOӭ~w LnL--tVC__>ۧ?O?_~|-NX| H wJ&OQNϽh%x9}r~q)qaa祅՝s;ݡq]\̰;_*tr\1X^3p$_KMwvn)Żޅ>[r ;KcehJøQ{ɾi%E*^=-(?O^5ŸNN;klj~ik:5PU5:#r'#<i4u%NR8_]e JR)`}nkX ܋ hyMçC禸TCNh4Rʅʞj3鷗ŵ LG~ԏ~?}ңwٻ t xqI¤:l: pͧ^̙kC]M<‰AS1ɠkj!A-NXP,M]?:,G)eql)UZzWo="̮N][ְHl_R6XJH 볡l ~9wVɨjBRZ +⺝ILw{Ll ++)ކmu#&=wufMd] >6ז>#DXpV0+j*c`l<:< hw G_q#r|ؼzUG͈iZڞŝyupus-[UǬ( 5Rw"V[չ꧴t7fđh:gwQ^Uz=X`U‚#syUf|"ы(>HCd6&M8?ؚb=0N0#01F#&Nu@ +O?G8 uz܄=:%HDRd_fګ)yS0>Q225ԫuuPŋRCINȕ.!fjz3;*l{$ MaeO91 +O =WʰJNQ+h|S_m`CytRG6~(h@C1[q@ b;ԟX>p7"(2ՆG@wiaB"HXL/j@[!hפDƵLO9(`a)u~) Jj.&+~ $"q$d$Q@cL~z>CA~HR" bV1.O"#ȢCL~rżUxic)zE̜$6slh'q."%z7wVd*csNjmܡ~9b$&5_0]_N!UxoO\mHg!K.*gUaԳWN}nD1'YʅlFeor}ME1]07!4'St,Dq"Qr I)}( CᢾгsQmwbF[4ސ ‡9PQ+Xqk|t] r +_+d~M>MiZkb jb Y2otsցYf ҔI0|dS4ꨝКj1M2U*/Sw^Nΰ. }[.]5ġC%}c: TFY>p24fwIeed%gdfz6|Tl6ϭ݀MF*hi ~Ü0Aq̨#fzZMqhoH,:?i(N +[皬Rx-Fx\^UF4DFd *-\!0s|:MQHXtQ [C;JzLzّoG@`}$:U-)+$|6< o;lxeF7 8J%6R .It{ M'U~Jt#A*L0# f)7 "י|3ꍢaˈ. +,cVƬEuG}7g*2aQO7#DAvgFJ{Ldän &%pwy[ncc5Ibl^<rЇ0HӄGjf&L`L#AaVbRn2*o$ (pړM* 9[eSA^FcA=;PΤdFе>fp$J{cV% W#z.>W\Sdk ϡZ35@ ]&QL5":h= p!kzcMc=:qRc"| %J3or\*&|9]"=Nr]TR=q~L: #Η ({׼#9 8]B3n)Z{'ec_PxTєu K.)#Q,+I<Ֆ'0)\6W9<'n.hq],T]7LۍeI6p,#\GzebE_MBnH%Bgj~sN4a?^JB j\|k/ڊ֩oWMox'G/jdayQW:^AeI:.\w0F*BB&nQ9œ{TA`m~0ֈ|PWgڭz}KS(C#ы}Sz҉~dOXpc<׬$ \gd6be)s>ݥE7^>Bro;Ќ_>\5(ŪƯ(&wtOnʗSp0εZs>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6788 0 obj <> endobj 6789 0 obj <> endobj 6790 0 obj <> endobj 6791 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6792 0 obj <>stream +hތ;ko#Ǒ+Ƀ9;A8 .C@QWwZi#Q|C6ZN߾wݏ7|unO7s7ys桏q盡fZa; !w{uz#"m76n3w`߷z38>L u#- +*-R?sn3]ƙrOI07wwr>yy>rp'aw?7FqS0sqxs{X=̟r?V@t~mY1I) Oܘ-+n/dr )v~t.f~|x||:wѻ1u?`ՇNf!ͱ#{7>sar d z3C4z=Lvvp՚vLxXC5~ag]JG8ƹ~;ej{hWo`3 'p |p>#qf?iúQ0j}p3xm7H3Q F!: FX/5Aw)TdFe"n1xiBc H>D( 2@/𼣉A+;jc՚f2%Bwa_ŀ@l' ۚ^A$u;^ bq tj]Di,g^tJ;T[y^d-tVłzrrz^8nan:xh_ f-!zwсnB{@1w.&-1%&]B%_B!'!y\1@XtP\+0o"VP}ct\ؚ.L"72ӋG']Y"CdjRS63E"lĻw)!m0\=8gR 13m3'TkX,4\u2ȗ AFS=v'0lhzWT lZrӶT֦֛ ,1fF&a5l'NyC %F>&f %U.p='x]lc]05bn;}e{M8[d#7K@MB+o{ђ8xC-:qU2- 6m +iz/bI!+!TM׫@K#%k[*F>2`4'EIX@ *.ՍHFNj sӄ\30b~+ڡj%llI?J` M 'kc3rXijfYˆ&5jt #y5f3'BCuC(RkU(+,Ҷ +f LgTVUzra,!3"bGa!U<&v)*yl9.qBc7@]Cq8O^8&hZ wevUsuy4a'}j޴6rQ(n5BIYC޺۫3- :cVlKk .gf޿e5]Ȅ\_s޹ +WAcvhh,NfuWzo`AO"u6 E BORcPdi%8Tqjk,xXTLV,M/GpTYvټޥ gR"eAn}\} V:u^שWg|_XzWkF64ª^9ÚprY!;>52 D\ _Okt-W'~qz[;ڟF0qH37 '?ZO"/V't2]4]UtW9k6Q[1>􂜗5=UǺ#bsԝxF9 !ANc|~\I6~0icb FbtOx!jҷ]Qoé;;?|>R75XiDۿſl[& 1#Pk{:Id{Th=l9#x=k秇#sqQUh +!:n2l Ϋg:^x;>IߑxKN]or5 +#~k?L35<ʈXޟ|p=O4~{GgۇTqge^y6$լ#$W)mY̸1g$f5+_~Pl[,vŃ`a1/cPKh;0b<۲0Ld'+@`̶h +:ȎCPNk6 +C-J#|I m +0&5Ps8b!"Vj=|ENH#D 5L}䷊8u*6;xM7ܬ,fuKP1NFR2$=s#֛)Ս=,ö`ۗKL1FXZe. D#٠)TmP*1ĵV:\o}3_$VVpk[>sĎk}TdʱI/v֠&yE;*OAPESZ +.2hUxVBQ%ѓ*ӂB=AZB`H|ରc' 36OE +GM9]aKE[sQ~Q>2Oĝe;4WEd3wDBTsT&K%SG^og"VSbr`DE0lk)d]hm1@ԴQ +[F'H%E-HK$!Lo>NTh@ƑcCJTcJr%uD:8c & /<ng3Y-BURAT՟ B>N2 h\GzY٩b<<3jaKUʡΨw}N!܉t)P*L' }iqYTbh΀ww R#S$6Hpk (iJ \Ud\hsy m, +P}hT +Lc4[́i}X~UPƶ@R"q{bKO͎c#\:QKS&X&nHYq %iDu騵[DrN~,'oD I\X>y[vYkʮǴ4S]R$IʹH̕U7ՌBx;0n B +xIŻn=e]2P.Rڅ,Km5C_39Rl'n"(SuU8J6ƋsVܥ`s?+LY t`>Tپ`b)P,mO$Az2[E -H{H,;tLq5yBMXvޅ7Lw%̟Yu*W0.|JLLl-Y,eFd)r-&gcQ6坋HkJ]*i*,1o8VNY)f.|w7_"@Ӕh2V~&;B-;B%;. +Q(v'WlPpKt^g)>_ڶ@[$ě@C\8%kEئxe2jiĴIb#D#b"L%.qRh[yzx+ulQTqW"QA,b{u%VY6}5JԆ򾊞-$|c͕-xZF|cP#9[jQ}]75ul*&.U(:[_z9Zް@U8TSbE)IԸ`UEduTs0T*t"˘ +jv=a5w;ഭʥ-U +lpؒ,ygJp$wQRv5;6:J#U=SFO%=x}uozdg֦|dǔ=Aw@-E܋E)NQdt 5y]ew?(UεYYVsVWlqU-o`Mu Xid,TT8SUw@376y4Tmdꃛwo k1 uСVr&+n[KFJ*6.2vAa{anU$˸jniV]f-юf6~RgAʧ{" +<͚ѭ*-oRi\y?Wdp̰%}8,ND@6x)M{V~hҗ%M/j6!:Z&yj&pY7b2_U-O2~S-̓Ռ[mT.ۏƲo +7h O!1*b.˧. `ĺOhy+x7÷3a_Sg!_wgYģ:߼T3[{|y⋀U\ܿQL?O^>*;`g)®֐ }Ǽx0@tp j9s#Վcwz{5CpYD + #$&'U`n}3Xq" +=<y~bjCǦ=zm/hv7?V*As*?ib 8{;kͫ{\K5M^_8E PDJkz9껴&{=2 z 5uazfڿrOO/Oo_Akc&S4iAq6E? `rW 1IZ +U4 VOJ0â`2DSS%.g%EyF+ŀ]Ґ/E=!am"2 F,1ŊLf4mk⬋NyGDX-Yh7d]\uqs]1B(xтpȌaan:j]aZTmMmG,i@)SUn.[np"'ἽSS_*e %Rהp}5r(cL6RgRPF&ͳU@'T}/_ϗ0 Igao6%͂C wS8hEwÒU;Pj]M1OjC]-J RTXJ +a,7ZlװCߡܦێmsKg9wmpO!B;uw#eM %^I0J| Om׮E.F/ k!.&U5|{|Ye7#Z0+ɯM)#!Z-B 9&UX|ӕGRUhۛ`J2` +endstream endobj 6793 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6794 0 obj <> endobj 6795 0 obj <> endobj 6796 0 obj <> endobj 6797 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6798 0 obj <>stream +h;YoǙ8[]wbЀ-:2CX%*A~gUush A^XL}Uͫ~~p}wU/1M6) i-L>BW=̳ 3C-,|3 _BZFK]>#.>y[%8忮ɇ w2d?\_J|qx:B` ! i8P@m'G&Sq Z~Pc09OGNsz\ɰQn{H==GN6Mچ&Oї[73%y&RG):À8`j8ـp)"̔ib6a= hK< C iB<^!' z[A|*a@ٙ#ߟVSPTex4҄Fqxxjyb)PA/F P IЊZ)uZlt025  xSm֎uIrHpH^oÇNܶ<_&SI?G0C%/DCڧdAX?áu0:2@e%o<<('T؂a!ް`~Eb<B Nfryjt~6myЕ,vN4j@@˖^<<^]l@P(Yu:76 + o^ÿBT>xμvE"3eG#W%e~ya'CQg߇Z9!@O@haڋ1E Gͺa^Z kYS绰IX5Bo= +WNViz0H>AjLd81LbBq=NKV_xۂ)bEpAnhPѡ9* [ +؀N:T}N"<@l-#cFFBRi X̐L9eFo%~&$0б!A:nOt&"_"3%#q.őVT?c'E&3V?%~h9JSj(Gl +MnU09IPLlEݿ|OץϣQV:AcUjۼ:*Σ%' ssoPz_JsV#59bӑf0ϣpmJnE RoӞjn8-41&2!I}^4x6n%,Y i.0KUl lZ"pH&YH @ۙ,@ۣ j{bԤĪU.B q_YQH<A-{ ʪrψauj9묞"0;!>C+UIB Gc z !qL)wWzCTLՔe{n蒢57shjh-)] 3R x̱+ m krm9|&/vUԁeN4 Mt4 +;bD]bĮv-;pUkJ '}}SQ ,klb1ruLu9Ɯ5jƕ(yUkj]@`)AX=ĩm]u>sztaи6ЌUdW0]iEf(_P`YԻ"If$!A$+PI5pP61[Vr;iCȺt@{׉$8rYesGH*}TKx8iw<4׾ ښĜ7cuY2 wbҒ*G%.[a%I,Y QPA {>>wOu>˻=J?P|qG?_O34=w#M[yw ^O6X5b / eރuop?SoGAKyd6O=dE[chDiwF8,I@3N?`_ O{3=~ -:~<b-g_$Kv:C&?ިF8َRzڼhI1՘dDjo Ҏh)0 3Wnk^@ Ht`m6ֈsOEE(CD~s`yz;o|e.KR-*i4.Z6aUi)L+͍ötd+\j1}<36~j}s]׮^gzgDZ|fYOg\܌@^AJ?UQq1&&X߱l4ƵXw3'.WGEFݨ[t[`WV/ܽ4;`V"_"?kkS_j ׃zLںL`E={[")Ep{k`!+ =Njቌ^$Ȍ!겇 ^_}MVLaXy=%cyMF:J6-~.6JwIb5:lӯOnDnUm7&[)aQzfܫ6 K[c۽lFjP#\#M޼%_$%OEQӄj6HOvQgDT1Ou^^)sĒP޳4A^}V9ÜMfz^I`$k!9X㦜8lVxԈELְ?@:COCS}|7qEn>~9C]P`M} @1jܫ(>OVO!\fj1@l0q# -S ?+K"q@2$+sPl2L և!`ٌXzmSt9#yqRE-hz*X];^2ǥEtdjH'%HSM&Rc u.РT5u-imOZS*i-D7ey +dշD@lFzw +K~ .&?Q~ǣAe0` F)õbg=?p z4ٶLƸ@֐z[A/:ȋhYggq03Ჾأ[Գ }YSw=tv+ +endstream endobj 6799 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6800 0 obj <> endobj 6801 0 obj <> endobj 6802 0 obj <> endobj 6803 0 obj <> endobj 6804 0 obj <> endobj 6805 0 obj <> endobj 6806 0 obj <> endobj 6807 0 obj <> endobj 6808 0 obj <> endobj 6809 0 obj <> endobj 6810 0 obj <> endobj 6811 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6812 0 obj <>stream +h޼[Iׯc qgH |]9d45b6_-\"*Sh3ӻ7?߼od_\sJS1sOnf7ctB7o͇]zB- ЎEv9쒢 ,;߉= |;$(vi9~gڟ^zA>K.L3mNxa#X$bn8VIY̓n9tߛ_oqSƏ]R4\2=oo cŹ-4a:4Np+ɧI.b䄗Jp{T'&92/ar d08['Lٜ~~}74Lk-Swmn[4fbL;mпݼӯןz~ptןt fSeFl S)s*BNΙ90Ofwh3Za6/P/ $,Hmajvu qX&ɚVry.aim̰˜Bi=b{A9;]fg8(u;AOo7'b /PRuCmb6s Ұ f2 Izv`{|ZEvP8 &1 Qk.H,~3-i34wDxچEZ`;#=z'M @Fh%-{o'sm ^xܚ]x`e +s`h;V]evh~mWq$f}K8!^a3Ŕ2l;ͤ7سyLBs3%~ZM`i%%+jNT1 u۬y,C\As=KP~ul;xvh̭+5~8w2nۥ[ϟnM -bGۘy|k/D 1y 2*̭ 0[huʹYQAz1uI) [/KayM BYf̗煨RW5id{x3qHO<ʁNSFv6k1SDfI e]>FJIiJ8p: jcEF[d1p*!D7ƹժVp{Yn3"+zx2 pN+@j*C}u)NuKA}\Z132ebc8.&695>S4Yv_um&:7T-/>2.Ay6q~Y k]똑_L<{d|؜T eф_ 8d2Ӧɛz126Yc%k&yZ-TƉ@Z|+*_ +8o 4F1q!8ƞ- ۝N.1;qr]u|]VW^wd]3ra~:dωW¼8pA.ߴciq>J}Dη?QGz򤃞y|`: +t7, [Ow8,b' U4ʴ3/Б gl$-G#hOG8G1|>EnG}ƻy: O.|SYJcMUڥ{ha}==Au=}rqUE3sbˆ"?LϰO9 83xb -wa %G@H}tzQ=!D񴖦ڷZH&zHwf.gj1TF:4 QSB'Iv䃤<ʻY=`Ԧyٵ[Or"C&j !0ŋu%\] p6СQ('lrI6혠r aT=Z܃ӄ"reg +}csW>AGW +^K?[CSehIKBub{f.Ji,:[9ƚ-Cg5A=iutMU$wwzL_N"v8 I , ֆkY8_e{Xڏh š8Q9\?s9jq嬡 YN!)1D2{P ؝Ȑ%*v?"J ] j}mi +v^obeK02y}ݬ5* ~]&ßO؜(x(Wb^n[u2Ӯ@]f=3aEZ6"a('N7'_,*>끸PS=ɔ ׎ۇ6t[;ŭQW +.k^fVmw T%TץqUiǩ)ۨ>ٿ(`;xQ7!6eVeo9*'ӎAF+6qc5z]e,E#rh8mZo.it k $okeâryV*Uf+ ߵxҊmmff'UTY ؜`xYk=%Jq5ZM+fx'tA`84/L+ƶVZuAv zNa=dUY+줋.fL{d\=iꒊ2—f# +!mxlew;Ş ^EuPF֙&?cR nvC2jBXZ0^ jH?jIK O ,uM^*cf+&}xGٌxJ×TX1O$1FÑrdZ +@tc2T2pA,^S2 XtsܤT$\\O>̐o۰/2%)-fRr4l^8`a_Bx②U vKXX u0-Z[?\l +-1;mjMןƳK:+1C/'zvj6To>C=4<NX5h(t5taV$Fۀ~NEch*^6i}8GLHvDliX:uڮh7]wOvݲojiXNn\ה)Qh9'BHH`}̀Z6?`-Ņ>O'S`m`Lpxi7*z"ݤ01zeuh\z%ȁVћԮћo:KB1єз{EA9QR[IʑIv"q[+R\PN1^z'“M~́^зb(pl5`t}2Nsr{8#<#>=t] +H3Ç)@u@Z+ŕ1*Tj Ùg @ vO`G.-u;rƊ?vă~L>z8Yuxyۑ."[\q +P?ds1dz! +' + r枔(; RޮL^k_ }NgSNXo ~xsVnANWij_BpNMnO4(貺*K]wΪHas{Loӈ mތ@ˣVyݽ$5CVjI9ﱻjo O2ǦpqTwmu*D7ԡ_C+qߙ +[j +FIU,BeՖ5VumE?ْ/+,_!5,%kq̆вC>Q!WxMl~31'T7Pu:"zz-2?r Px JWdf#!9CW3fGic Kvi;GgkvqZǨW9+qj}98Yumok"˨r}oS)?o~Btk +!;,+\CXEZ+{J&Tkh3 Tm&ђ([@kJ/@gn Y_26 +endstream endobj 6813 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6814 0 obj <> endobj 6815 0 obj <> endobj 6816 0 obj <> endobj 6817 0 obj <> endobj 6818 0 obj <> endobj 6819 0 obj <> endobj 6820 0 obj <> endobj 6821 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6822 0 obj <>stream +hn$>_Ǒ6$ Z#@a4Uh%[+@>{zz} tX$]n?pypqUCʄ!Flpi35&c|GM@qYeIU |v~g?0jmaڸu30a9N+\INK?\n ~t9Asap6 "-)9NX:0fHYH:{#D̰NsSPc){]kh0A!e`~^i޽0|!(uo`sq"Čg7n{-`USFІC09)pg K# `v!#@x ŕLT٥ +N*\G`W sRA8{;U4с`-U@xpA6*1٤= +*\'+ O +sA]+⿇G GxByg#~HOh;#ih *NϨ@j@t:R)H(&BtP@Ace8"Ghpe5 + tbazHa|ɩc p;[&i(a~(# +E?HhS},z_E)z(u8Gش.b{Ď` Aht9T"`JTh!N~Ga ܓ޼'MFY:$:] Ɏ6OB*p5 27WkU LY:Ze>DFO!_:( ++|#S~eZtIRo,$Q +0L [ ffI4$s%)jMt|DXZ`(3_+9bJ(_,cy I~ViZSA,%t=9a hBO;*v:T+2QxeÀ??%;$em<},ř*Ǖ + +F E-h8T4ZOl?" M6E78E*: ՞qaLN"]~{-t]1@6ye*2,(}aHY ʆtl#zkυ`F\sBA~C= ][M6ul⭴T|)Nm(WgpCWO.lhN&JLJ7-=3\~{wE>\Z fd nOg8,6ҙ}8jT8AF^!kVχ3ܷ7g;쁀p'zGo6hqW:V> U8fNV*kػg5~'~N,sq{v:p*  򗄒LO(`&T۫uBvRJ15(0HqB'6+mV3+>0n/30ۻ|w <3lW(Պ7x { (/ |l=Bڮ=\B0/L˜K"*fp"e0'YDdjC%m^ߑЫ/OS;HD=J+] J36^yҒ'x2ٙhܖ?r0*\]W$yш.S^m +ɻiݹvPCs S]_3ZRԵ$F +]ʴ{)tc#0lfF:ƏžnU$,ո7KZ O?[9S5zJWqk [O^0r7/Suz ݄An}DɩM12n:kВ-D3EUp-Oii0Ђȇy3_!.ԝxEVeJ!RT_^SX{&5E%W*.BS&Z)wY3reR>tSԔ)Z{vG>fT l!,X6Yѯm-sΤ#V.C=R"Ќ|hzcQ|qȼ%jlPږzLA|3P + b|5ƪ6Z,ŮDndma$k(!YJsv Ek-#,Pli5xpe؋'xKwNҊ4EVd$Cv.kAQ3*jWGM]9DMQ3G]6_DNXJ 9]jl慱)MX ./H"ewY\ +ȗKH7 $+"L" /Ю`7cs(fBW].5#~'q5AUmaEX'Y=r+PqrWw~5|Uw%P΢hc|wSS^'l,:E\4?ƥz?OYuGeVE3]e8 +jܲ|=˳@Lp%W%X$K{,mKMU <֗ + 6-7:ġp6z=e_HQ{Nq9V[%ஜq㺲U&Q rҒOq6oBJ83^koAL5OA2'jvc1qhkR ,aGX9ik +c~jY2~X.XǰЂ/ta=WJ!Wy47."7x4+)~+[oMփOUA|8"]"ai7p8O ׵턯6(렫j3 ҃QP%G N68UhH1 +R*Թs֫=sϊgiZ6i2XO} eu+[ۛ uV .S*.geO~Q(GC ++3 m!vb8M['=~Ԉg+3\2FYX|*];*BR>MAdjecO,h!^-6949ksbF_ !"tf}[mb ڭt +endstream endobj 6823 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6824 0 obj <> endobj 6825 0 obj <> endobj 6826 0 obj <> endobj 6827 0 obj <> endobj 6828 0 obj <> endobj 6829 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6830 0 obj <>stream +hَ$} wnF=x A$F`tN0=3^|qx  qDQ(")ݻ//^]^NwSOL}]Rsvw{wҮ<@NjoJY +?:pOøCO82wP-_#)0Lz;0=G *Mk}?a7bn@]&3poj/@:V𣇮76.4tNj Ya>S8 :.Egp·,I^t,A[P*ΈTN=j=puf=ab<~;?w蘺߼fS+uSpIw +78И H =ܯ^?+Ur +ahݥԇ$,pGwz\GJRR{io铍r46^k3 +СGR[M9V8}rCiR Ѻ@m-Q}b AdVj`6}@1q ra^ J;nhjz4to@_(o?G} FQTvvn6یh45҄FHTu H  @=VԊi%`qqB0xEjjl bS:nL|,&$Gb* vah>\:E+J^HiYH6qAx>F]E:x4ˬ˚G-5C(ꧦq`h }"_Ov P=?fӶyO"jRMö[j[KmhSJ{5EeR6mhX%P,[|ÂqTdkp aF |߯,p˧j44Pjk,zc 8lz/nVJװGH=iT8 p*8f2;F QoipPm% d_ BXqx%q)q/!͞sW8 0s5C9z+`$7 Ĉ2R8wV{z3Ш?׶.O\':3@e:ёQS`C"r k~լ;&x17p%/?jG ߲kT0{V8# +UDeyZDR1%% Ʀ^\̬ o^-skXTp銵QL? v}Uu&hbIn,Ao;Cڬ䣧Yv~sl+\VSvIL݋7zqDm +B%L'͚ пébBa%?}E3)!.T=/#8mBu4*b;3vd{&Փiڴ+Qhm,a"_qq/`gA2*]Pd9CZ+/o@WxrgjoVj'۟D5i3e S*""MH({ >^wk:yz>WGƂ7@Z tU |;\udc R@HY_kt#MqGz'@:"Ҭי5<}DΈDV# Ѹ*5e$*##{䴁pq-j-*]#b `V1 q~$ Ʈ9Ӣ3Ⱦ<+׊%䥽([ "XDlԇt2>7QDҪ)JmÒΰt,<aUeKxzcC#&_(.vq ~"g|Wz^Zd6|`^{?aJʝMwLevv]&H 3CR ZUJf7`cTF.vj]-xR3sm?cBYSQm4ӷ3߱ۗ z)uyy|l ֡\r}?vw<>2}5]` ~oyO?eLQ XGHLNNn:p0m["1vnؾ@ ?33eVߜNF\N.4.la0.P`Alh~ec b㐺~3 +%jH2:&%-6")릅J49TK^c>Uy>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6832 0 obj <> endobj 6833 0 obj <> endobj 6834 0 obj <> endobj 6835 0 obj <> endobj 6836 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6837 0 obj <>stream +h[ͯ _1G;G#`18A9$}@AR6b)ߗ)ia[#%_˧÷Wv0!9)16)͓8M:_ϧira 蟖-|iq !-G[JFui#5M%XMo>x;fwp3u8θ%8f24!Ѻ0<||<<djv-"V14zOl:fݖ\u c \tc &5Bk(¦l9I#5,fPq9 LpW?^~oi&CC2 AgfoFfaÑK ^|?||Ƿ#8\?){SOWAY!XX<$DJNc~(JٕM\>Z7zq.Aɏlᘇ+tG#Pg)2j`R3@,GWCk,́)Ҝgi~20}X@`9yGcdwl+1:hŀqqmLjlmL\0ht)iy=G OGB~[o~rPw +c'h;) L씜QpWbrP)|)pA-)1!A)RJI2bLp26Q.E$ERXx+6qI* +M\" i(-F*hrBƂ Xxjt|b}֛M:}J~X,*ӆ^![K1FnE 5E6<N< cN` EC0xC -")܌ΐLMa}-?2ee] +3JZ=<."]ro ʕMf9:/G~DGPNX|,ڨGZddcmd:oAitRS]MufJ?ur +=VDVPoWjԘq7+#͊"pҗLbf ]mBMeo3j}~xB-]ܩ) 21` +`Y(D‘4X|3!# -p$N ŏɀNV}H%D3^]4HIv՝dFKI:󠫚4 +kV2"a3Ь  j[x%ҦڡRaEޙGy";Rd8;c, Oz*!nXH mʠ" <ì\]'4;.&Q;,a&=VTNB8/*Oĸhu0xJ-&:Mݴpz ֊zM:v5R֪L*rȘbH妤 TSPqER}Â;EDN@3fՌ)Y9Hhq'hc5y SRTY{X-UFbIrHF5.cN\'Yy)!h!ekAN+?X-eɣ6? iKj6 r컳 <9"B)w*T<B~Sr/~z18^o//ÇX_?O~#Ē$Bd=vKkIRm@*^Ndžq{'Ɲhq|ֺ8n:#8 Aث׎IN;iMߺVWf@K hh%+X0 OllQB`3IV\apCsNO6R;7Mlh hy]ͩdʚd$H2O(;g 'Ewul98@<|P#o/6- o +B#$`{ظͩj@T>knR/QE7V Z k;r [ ,/ +멬;V/ +7%w.'{ A@%fYG9iC wR0ai +nC/f/׳qQgBЧX>[QqAΥ9- +ffѵ"-['>e /F}Rc&/AITOJD&,#h~;Bh{W b8{-D5 T# L.w9/lcxroU5*{Exou<|klS:k;tG=Rt^zsa/FJuS͇wk-1ꪘ+Ѐދ˸OJY`Xϓ̺Rq `kU`r[3Ifl@dN `>{>vR:fXP5VIe6&!6LKfkkgEiD"ԘSz6]å +qz;a EbKP I`>bs5)79H HorbP+^| K7&bwz.H }B8ENA_ {ݸNQw}]0`f]tY%7}&Rͻ1Jɕ\ \ [A%V/HImԝdꕆiI>|fap:A2OE1GPw1ħO̝Yi?],Yu\JxwE^\;z3]W]B\}N uNW`46q^bdOwnRRz׼n՞]{v٬t[`HZZn| J*(DN:i`o}V*vwe}ab4w)⵪HS S=Mpg%oGfuϱ^.V/}N ZnT;}F8ʳ>LX<]~xvoZYǵhv$$l* #eR_ӗ],zKI} +endstream endobj 6838 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6839 0 obj <> endobj 6840 0 obj <> endobj 6841 0 obj <> endobj 6842 0 obj <> endobj 6843 0 obj <> endobj 6844 0 obj <> endobj 6845 0 obj <> endobj 6846 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6847 0 obj <>stream +hnί#i`Z]{@ v 0dS Zf!%AӵWok^ofzۛW77f2EW&TM7.f^㧛n~xs,.gncҺ ^&c0se5LJmen[j毈|e|mRˌ##k J˺0TvB@,{1\GVܿc٭7^i2>aŹqqN8 +݆G$=6r)2-AZ* +UV4)sɄXwvۿ45L~XaHxܛA7LAS( %FZ8 \iOv8>xCif*eEPHueO$ӣlBƺZ-?/pЍ6il|y'$m@ՆXXK5d\|m0yzxcd;Dj[hW3G#PZ8w9A fʴ@Yzm4UagQmw3Q G">,ocfk ]]f[$.fLJ6:`lg牣@H @A+jԵ +ǰ6 (qa4H+`O #b[;&?j #q+oFB;qh䖛~MIHW~"Jã0C<0 9O)sJ~ YW JFF|b'DMKZx1 @o .#2,$ށ1'453RCö#6OM>=lnVHZl@^/M +-~}pI+RǤWrr'XIW=,  WeB Etm#COi +aY*+M:ˣ ~YGp>+k˰VbhZOPm ^ۈi,Ճfx~gBhmUqrrGnLH:={ S:6LyQY02*r"ӕ+7W$t.o>~Hs6I~sd@z/na&L\~n(] +&j3J?F +rT H*Q|2~Ś=z7f%e +sB;)La)S!ѿ^gu+#1"#{$<4z?y5⠴#W: 3Xp].#2[鷥?HqAɥ>Ɖ8iՌT&dv0i6hbl@zgar2m~)6¢tK9M[@ yT]F+uBb i5<]X^bJXWB}PcK2X ρzV")Xa[s9,VTI?<ОزV(C+n%a+ՌɢbjlU|vshmG2c,@nJRI!ba&qlI0о;~ 9H}Gu+\K_r2sjJpd R13*/ϐ:r@;# 3GGPJO1f:.d=vYaHz,W Z5Zg_? Lc*_CtP$ɁM*yq,,[mwrĖ聅jR +rhk#%L4NUUXSarp,k+jtzW']͟~ jISρ*h)$[@2 Ormݑit항߮\-Vɬ[rZb|溠G7g ih I/*϶Y- ֳd9x-vmkx@]#L,{d{;;B"_gÎxp?~ƀ׭[et'?BF_$~IpځU Q~x͘kB4YO^y0)\x)VrMVuI`,4vWmU}hl_Q $CXͽ9|&vlQ /)3ɝ-q!qpߝ,D`N8)Bw :q]]mvL@ Ef nF:9׭t"w\P 2] 2& o~v&(`.[2rE m^hn H xa\cyb? w=c|\Gx<؀Ȍ6AiHk!e +OCȘ,d,l;E+}v#tayCvFe6gh<;ٝJ˃b\H//̷?X^!oK:baO^0< V?"b+mW~QYGh1nE΀5W5r 9Պ c12^ϘZb#w(xEഢNzSWܑiLD՞#;FVN/OcSƩؗmmᬩ]rކJ;;|z>Wu#51ϙSFJIEpO^<6ͅTuhko\ *`BmulUk +r 0LS +endstream endobj 6848 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6849 0 obj <> endobj 6850 0 obj <> endobj 6851 0 obj <> endobj 6852 0 obj <> endobj 6853 0 obj <> endobj 6854 0 obj <> endobj 6855 0 obj <> endobj 6856 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6857 0 obj <>stream +h;ˎ$ۀ556Fy-Ƌ̶$ XH=d0`0 3}rݛ.9L !lboݼ,/xӲX,.;;l磝rsG.w"!`з_<68lwfcB"&b'b +g4AL7cI 6<.朦׻we#ms.2-a)/s¦LkLƟG磟=fͥeR¤K#,m0noPu "qrӔ ~2~6 |o߽LoL髯'4#cPf33rg?t7~||yO|~Lq7o>/>>0} "<>*q|<Xfg3}Զ6{m ;FlyIf"y4pw0/{p]IH`mΗ9pj/A49Tۈa\=1P;wnE.<$q3x@l@2c 2D|ו&br<{' Ly? }# 'ӈHva΋2ds |6mb#[Z u|I(M; 5CV0܊keOpmԽL`TenbZ +&7'kcy}YONQ -;p7($%0ĬOzxo%hI~E~*QGnPPgXQ9IJ Q=2hCѥ@ sOE275rYGmWۢ voNP[{pzmmUG,EeE3nU~&GFچZNCxq?K]\7_BbK/=S e;8z{y2rSāӖIp AQC_jq<(G0;!1hG<;a(Pv&=*!;b[CI/2EFR_,9I2eG<<a;dwP@,ضl‘h^zy3ttҫBLԳݽ?ݜ́f}\×/ui_w:ꢨd#,}k Vt +;LBߐ9͹Ysokx,߶^8fm+^cт{bٛ^ui15Mx(F?bcfy65KTF>}?'<(*AkK6{@&cN|a^ʭ] +\W`yGLȤĒ*oGX_ +8;V.v]65q4 Ml+uJv"θvL1`R螇/ٵ`L0^,/h"fcw +cgb QvPunL+dr梅* +{3y6)ǕT70ܳ\UYRX\\G 0>i10;ZCw~~?}q|2T7mn=X-tCB1WT7aw=򀩰٣%{Mah;MB6¶B¬d1Ȩ = Hrol뙴^wVNv`zeo0 +t{]iU;q. +!89*U=65\M]AEÂ"& Mz1ZWLvS9Cz}z$NޘZ67yݐBm g&5z'`T @E-' zm({NB{/# Ta sjQ|6X'+4_*%r{)zPn77 څ^;7[ +p޸[+X񴞱:"kv>bX! +O+!trP}S_zrx,+$@5S5>XR +A;!y/[--#F&ˑkݪVQK@iRҁ +^h:($QU%<˛EyttnөwR,JF+ּx[U1ETX+Q (1{}.3*&$y^{ojE]B]Vh7BR+Xzſ1{9@[[K|[erUjjځWyǽq>R|B}_xj4tpw5f+6V+yeKKup'  4!eQ.$C'67zt'wWp3^]}@m@N}0A5Rdkbŝi˩Ӷ%9L.s,;gܪg!ra8j;لk\tbQwY.kN4ݚeV5^ Y+Qٞ47aeW5|k]nHb4Xl#_YFdװ mUl(ev1}`#' +Ց I5D3tlbhouǠʥwtNKN=L|q_<^P*5fSx㯫!V>(&8{u6(v0j>1LWM#<uS0 +]%Վ>B凊J+ҝKTW_쐁‚Xf67PJ +IOh m Sa.#VF\c-[H_lŖ&%[j_&%6LEbyWpB;}JS&?.IDbٚ26e +wykո+ٔUX%0/t?ԬBG$ f9rDt>O~!+ 1ܼ, @^l,; 6Enً9=SY&r4˄@}ekR&^D5[$׌9K.1q$;R~a;rmسq^-<]8z5^Pݣ!KBP1KU" Q_ch~ T7 A)X^G6[+U.xUED ~4mB*UD}m^%`K VYg17gu?kVH p}vHb9aI6_ءa#l28UE쩯\TCn(3nU-kQ͆(]!#lM;tJ7NUZMOJ~&a.p:Ku\>P6 +0^&} +endstream endobj 6858 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6859 0 obj <> endobj 6860 0 obj <> endobj 6861 0 obj <> endobj 6862 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6863 0 obj <>stream +h;ˎ$q:  +y€d7COʹƌ]YݣaSEf U??ӓC]|.KΗ.1aqYW/O7=^5$[ase{LYWqGFqj4vu{t5'4|mnYgw連}Ex=ûL K)q ^|xuKt@P!-=}+]ƕq_l`mJpyͯpXa~mOKW/Kkӧ=a}K1Bv9=D,_RZ` -+ɞ6- iK_wx/{W߽+ÅW5ٴQ.8^R.<ӿ>OOO?|O?.?/fڢ눎e͗o.v֖r}_//y8_\J<~aBQ\.7x..f_rIf*,q}@ԦqLxk=b1puɱ :fp\z-g]}]觺%xp{g/`7hþQK4p}wZPloH?W k>:@sGKfk]@,8Ȍt˝x K؇q$Ez]u<љ).5w:x8B#Aa\hiQV#5wK4| U:|R~] +ڔ ~3ut'0g~:ibxMƯ ADGqީ-NXP,I]?q}L/GzKy\K`UmT@!cF%uYO y{h B/cK`}ؠvǰv MW>*`uSVk&.>}e7e= , + >X P݇9'xl H(lNRq!\"nݝCeKԟ^)EdX;@oft{}]SirL?|v:U-D} <8?KvJVo/P |?葈qA.pyw8zy앮N٬Ǝ G\Gv}AtO]ݑ "v:ϯ[TwRa0 +B[wG (BG8yNh.Drd&%ɳ"#a3`( Ua7o''@\-z=d nTڿl'yc_UT[~!l :IMh@ߟsoH Wر H4{b.Q +<9S.N)Aϑq6SаQJ4 0_ >cn.+y+ӆnR( +ڀv MIinZ~r0b $5PZ g *( Q?Ѫ vDT~P:L_~ć/[LqǷ5PVi+#]_SDؤI #vDBrs~`,@ܡY˳@HfV_|QW8 ֨x1R&oDOps +Va'+}!GT%USj-Ey+Wŕ{Yqje5X' + S|oy;*-&磈'#l/`31g? ˖:Wh)R蔓H2_o僿e="KZw+G9G:&_V + py\;4qF,Βץ(G0 R?gy6@Z#_ +Z$FŊ'Y @5ɢsc=0䕝5g`2Cր"}0kCdZ^S\$[Og7o+rwGI?J cS$*eԃ +ݳ$BlV^<nrrةڜka*Et+C&ѺS%݂k#T SuFy0.p\gjb׎@Y2F@%YUk񠇑ţHet[=U ^,;l BS% TP0Zc} I13%ܫZ^EC!k3:Jo YƉRx>ѤCFSċL$-G%q`s5):yE١Hפֿ}ѐ5wtA ^l E}yzgTvOhՔr&\ؼo⡦8ˊ6TLes ׈Zz۶j%da$ՌܩYrrvc5x3Z-v^1 &J?SE=m[:a} + U3b3)i,ٺٳ:YąE؋ۗ-1M;*](Q 4/Ǥ<ea9I4Sg`?ʰR`X8d#MFhQE[6+XRˡ/'C^ yR|&.BғWOZی4.TshS ovͳe"M{-FĽ"RbcG_GrD=aʦ2o$OwIEmpvk(TlCSsjx_ϒe_eĩd2$'BҤ~ɐ)~o -mw?`U +endstream endobj 6864 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6865 0 obj <> endobj 6866 0 obj <> endobj 6867 0 obj <> endobj 6868 0 obj <> endobj 6869 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6870 0 obj <>stream +h[Ioϯ#iʘ @8fh(3$[쿟ԫhgAM?77_]o^\_A 74&?L=0j?`G'3\LÛ8M&qv&,4ʌԴ3cvWZϟ z\}yomӦX=Z"y5c#t:evnĝTi7`iCQ0ڐR>672mc8KKei4ZbL!K%Wnt̪ciw,H*2G8$"w*F?A\2Å: &ɏqivt?(7*^|/)_}r3,J5Y^zU~l&Z54]rr a͋^{q{xǏ qJVl A! 58 - N4dpۆچzT6®d8E5 4ar'i9a!Ro['{ {`{t +TMNU0'l`J1hVZ:U2DS |Q;[dH$ a_+MX=zYn(j O#q5> 孭.D#v&mh= BU4QqԈA3H!݁N;K*IW( Z^Q+>^m5%WBaNl(M!Rqw51P:'<V|h5 +mͣ[fe3P`$(ɓ@Gˣbѻ"z^yЫAه!~C˶n#v5ϣhtc95D2X@0 1*6]b/(L7;қs)0܌FNVw͓-Զ\Ks; SkN/mҮFVl`QhY}>#&786r վ7} ~9J2`@ KeM*夜3ȡK,l ՐEM^d!Ȩ.3%%p=$M =Ƅ@s<pS8SmqQNQ`GeYQ‰|Nd 2;)Mh +`&`2=,;N@؎Lܶ +ziC&gx43%]=^D?E[N uhvž= ؎~KpM&EGU$C"@ۆ-c lJO1 z9Ѩ׻*֦<kS +iă}]E*290Ec#}ML]-%=5Bo/ L/αLCbo xvN[wuY: Qgk^]WCc Nӻ]/3yVu>;ly82| u1k +gi .:2WR: LJ#34uȵ]ty'(Ş˕ 9Ay +Gl;·2;%zBlT]ӑ &+76,);u>ƹJE~B-Z bCoB3X_|w:߾wIޭ.%.}9\_'ǻ>^"?Ԏ.u~ʎh\l)" (9< AnC,`RN9T&@&L,cbRV5"ڑzjʌ8.>nj nedb3n@XE8meͽb% +#]J\:;#[e +h̉ }b;HT}(*((eTYf튞p)1m8@;fFe:p +X-W$[k ͐Bs$'z3~a8?;-^CHnDA(a9BqE. igGqpmĔI_ƥ\q\Uiu5kHfOeLn1͵.dSH딝Xo]k<,gq))8mSDyv{ܮ­cYb(,uj IS;&H)nY4.U}Dnҙp2r =]/kn*0ւߘS( E +¶ȶNOl +y/3dp>}%9v^eD q-t`O+1,ЍߚIMl9г7^mxvb$l ,Rٗ,<ǷYH*WU--$`g6lXAhçۋۖ5Ȫd6%g3M\)L+)7=7EfE sjoڂ^`D4Ȧ%<tQ&D9 +"`뼘7ѴES~J)sȮVqbBbe)6XB] +{3mS #}F&^O5MH8)E=#6d-Yg ňLM1%6.=jAFa.}4 _kK]xUˈUlb s`<FĄ>U{HEMn ]jG%(HvˮGo@Wb-au`J _N$G e6Ɨ;w7Ȃ޳5EQI2ADʕkܞK8KoJ:QO'I6xM\S_"~=i)5uHh# |:m-}hq#3չﭼ^xW6,Qcck/c[P#O#J(B2,"woP"zf6X6ըlE|='&#Q ҿJ0g|EO%Š  R5tQIQ@JmٗBaS5[X12vU&kza-yUPsZ5Iꅵ֬Eג.[/&[v #:Iމ5\Iw8oË$YZۤIoxUGV`#G/ȗVVS `F4%mH-9=9V#pdbeG[{[Mөkr \NkYאkPR+/SVdf!Kr0ۧj^tMן"ܳ~A9%@Or_[Ip7c+K_toO_^^oGs%p|~-.NNïOKo/+'0~^~spwzOyp~ ?.Guq>?b+^pp%wyp{?oߍ{ Bl?YxE <[:xP?8k~ߝl$yPjU{K|A (ϋy-_p&,'*_sG: <>rzkPF H4 sImHKogEj)H%%cV Ph 򅣖k[p4i?N*$&!@րe\\s66s?V>.o[W# +endstream endobj 6871 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6872 0 obj <> endobj 6873 0 obj <> endobj 6874 0 obj <> endobj 6875 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6876 0 obj <>stream +h;ksFr+𑼄XpXծs{oWʾrAX"˯O? +\I*إ3?3NjL*Sc56MbU7f構o/k1i +^b!:nv2m pf6Ǘ~. v;l]S믛F|[wQ@*%_qDx:IQe]Xm +!MDˑEoa x6<+k`,7zo7pcVu]UO]Vۋ !aź:HP zH>*'%Ky ڂ\Vbz{j`խl 2L^: Oz+kP|uu#4fU71m:Вj%-/^vCkzM 1ڧ&VHឺ/VC+RNڎڎڶ6!H{e]Uݹ-_7'GM=!qO ؎LmAא k`Õl;6@=9؃䭌g[[m]MfAD(@w=Am fjiζxXkA<HSf;\k 쿃WGxC~[PD}%Ar FiTϥvbFE"n49܆D"5mayAו +D6lWjskT D9B +˱w@><kR [ [O g9 Sz 4-jO%`-[~~\9 -^.Abw|by2.|u] xd_q]`ɳ藠 5naw}cB,S[:vvq,͖^W-..6W߿zo/af6X鷕nYۈ[OF<G| }Zߖ+ 0zx>wOV/1w%xE@0D[V@8 7[޶))3;Q畀߿{o)e b׺X&6VDeJy[I uZT;|ؒޠ/Q!56dY^쁕ypWPz:< +bCfq[䆍&=vPE^TJE:as: ܢ%{G=0 p=77;Ђ[ĶÒ 'n;%5Jvl |30AbwAPgo`XPvW[ff}Dxh50$8giq!K@o?Tx:Gb^`ϕWh;śQG%X3{`5ic?ly F"u}v8yAj$ނ6!xӂN +;M zy^ca%IyF|#ɺҘuui?f_:&tkG9hkNF!W^%}m.% kLR<8t79s5sgpS!\Wg?EB|BV "ڕ tdk +3m }Ker"n̏VŹ]8= %|gQp* Z5-dX@\3J}Aj @Z}mv9h Y8I$`N6K2|Pc7o&={- +޲P eO҅5Mxkr9[fJ* 7kKNDji?bE';<1!&h~tXFkˎe{?|V]o L𐀉ҫ}F L(ԭZ S]X3X8JX+5JXe4 )KQ/{cЄzj>2j-ܶb%l0CC#ܲ]`fNI7XVsw|i8*f'ǓV6aB1j<4?~n1HQr јM-^sxSR(ѝT61se/Kvi'lr'.NyM]3i@vwB)Yv썠g1e=g=Xu<7\Gx<)7_}4,/X23 WN|kԘ)[Mymb]9:Lf DYZ_7 HxcO'gE>ڗ{?SQ\rK(c=럅hz/G \^j,}pk Wmd3YUPM`ST11gS Sϰ~(lQJd^(pSxK;qW)d-[ɤP&=Gd<)]J-%e?hۖڄ4C)qd'kxw['L:g59=XJy,Qе׃V"_vSf sLv8o|&a9;F~TLOBV7g3S2:%K 1R*bϑkF1Ucr{*vnސJKF=[[˭ Mu ٍet~_!B>ʣg@۳;0B5+ÆQؓQg 14&j_i=7HtT8tq"7?w7z +endstream endobj 6877 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6878 0 obj <> endobj 6879 0 obj <> endobj 6880 0 obj <> endobj 6881 0 obj <> endobj 6882 0 obj <> endobj 6883 0 obj <> endobj 6884 0 obj <> endobj 6885 0 obj <> endobj 6886 0 obj <> endobj 6887 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6888 0 obj <>stream +h޼َ#]_яq7i( c#@3@yh5IfwYK$6U(Xww/oWͤUV9L3G!*i<}\y60Wwl<nqt*_z^J5Кyl7 f##L_rF9 y-"c="S@8mp% :/A~w#fӤ9OŜz\=<lqj1NyV1 +,h {]^yCm=pKH {D8TH3uO? aA)ed~^i}rק;(O|{'>Mgà + 3i+3m0ջOǻקOaz} \ibsГ7Dhxbf峛7ӳ--K{krVeԜ2tIitF8ԓR[k7/kH5=^J&RmN*\{`W sRvmVoRFjmiW hI ;(oЌ&&ú4Zd745L +B^+O@GBzg'?ħ';i`QySSlgd\ 6nЌH>;tuR^{M4bZcXlt/0255 xbmԎ籃ɩc3v$/pn͛Ў6<eVJ爄!Aρh&"5|T?5Wt:_->Fh?O6GFj#D]P9 + X*az 8 qE[$=qE47j&aە3XɎm[> SQSZ&`&<̆CYB +%˲g8>BGFO[9&t;OȨL):@4?NXpܳF78;yC siZg@ݙ/QH#sU<%"/H|;0lI#g=`A#\p]:arCMB""m%k_XE\c,N] ~wq,_H1ho@Hx>!(0 jWG9NVCz5[d^ЮX?t)X2Z4W9"J0^Nƫ^7~}tįio- r ziAٚ L߆?u&9=|#؋ulUZ(h8 ,0Lfj[&iˇsW4C]$e /:3'r?bQpA"a3ęU YQ;4TyI"&gnuD{hbn8 3=Gڶu]v3Z7t2|DSFC?%b֣-t_9voYd-j\sG"ܡ' NB˔N {Cscy!wŜ[sL;m0l ,ۛ$uyEf(gjjU1t,.-=( +]\E'i 4=/kT<4MI*-Z/ 9{XXaI$Y[Ϝ4bF"vh! {E+dUz$J~*1 [L-*$9wݸΤDl WNZB +G+҆[ Kbn/rG)c,{vIvȹk{hG1x@k6F'YN;4{*&^IuVJa],-^ ^[%^%0\3+Q alؚ# bqU+zzN z|ãg\Of;YD&> 3[#1Uk1xσ_%\1%YJ-֪ +SnAfPL8OD,,F͐@)Zn݀i-}aCT[XDC>#F-Bɇk99&y:`D(a!҂&z^407h2SElF<W[sqWp.{n?c@ו26CXL@b]Yu%x5s~zJ?&8X/׾9p<8d3Vwr!.h貕 rFώ_8+`rP $@2!΃YXhzP/FD5(}_<}ʾ .qƋE*WmwоmF*R-/l8@qys` @Ȟ-'ȒX%Pgp au.yP״rA$ 1qJeg^8%/iK}KuAC[ĺ|^v^F(խXm7,T !r$:PxkʕEnwqopqj`ai#8C`\ee]B?&a˜k7e&ˑ|& ^4zF~PL1u@ ` I$Hd2XJ{p4m0Uw :]oHyg{ss0 `o7I7v[;{]a8XF;UdA#c 97 kڸsթ^V$vU ]KCIԀsr]1xDԗ Ȓa SʔK B 4f/n' QLn/&> +䰐ϙ.%tUs(@`&)]O("@,|wr]ĴLaHg[MXj[te/ +r9Sadv*(i5ǥVKT4Z(psnlRjKhRȟ]"ާtTW8*Rp\yN}pAu Yj )}8e^tvH >iI#J>6˃Ac#I N2< +< O-zeFf"_9*FBڔF{#WśҦE%JDo^{m)"~CVʭf8CKlpcj"Q4tQ~(.d"mzXڛЬԡ+fIrTt+pXhլ. LcD/vzq{`A*bWoJdb[$عy<֒vuC=ɩP BZ)*T ׌}o([ffs!f`,u6<|wVKRDL;%|{5e)keT&2];߀n)wWkf/B%;{0=;}y"O/(Z'7XeI\w/1㳌 r?vq hL`9U4sVofm6zQ.\?.\H_hȭC_wU|lgun9Շ> 6jf Qy1Mx8ÌYjh;v&DypVp53rE'~捅9P.HaQqde[/Zm@K4[ "OeӞGPOYvw)`cEI|;99v=WqIs|q!β[CB|l-B;7\U1>`37ut0MY$mQy/8>-̾eEWL+wlE!/A!y3 V +PY܅" +ZP]{0<)u ɳw(gWh*ksNnhT3&[iR khCr:~`_m@NzMsr 4=o@JeoI 6V|^d:ە h"?F!,v &>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6890 0 obj <> endobj 6891 0 obj <> endobj 6892 0 obj <> endobj 6893 0 obj <> endobj 6894 0 obj <> endobj 6895 0 obj <> endobj 6896 0 obj <> endobj 6897 0 obj <> endobj 6898 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6899 0 obj <>stream +hޜ[YoI~ׯGr+{fck0=EaO6% -B &(2hX.r#w$d@GF, d9 M +`[Wܼc%h[H3Š]mHXK2Y{ +62SDP lDu !0p!J,k fwD3W b+L5GmG48<KM||6a:F<_|CQ5hILEKÖv T,q*(.=U` oZutKRŎ)w>#%ŷg`+_3#sd?n&h~ҘBX<6v6tGQޭQ'ևgT={z<"v$ S3VvJGiw/{akdArdZ5+ 6{v#@2+@j"-=}pWx.zޓwAQsۂrTϠSh"0s rraYn%S T]'|_ Vs\.S)m0ҴvIwKJpX%*X.CpQN~àVĚr^)1tTAZ"̕mʯUWE鷝%Yc/n͖Uvh.Fʩ~Kڥءf:js!GQ?t_k$gha'9-c`a/2"UZdq6y\;IY"Z7 Q8.!m]xvWu?ٰoxRz\"kI(ګ +UAd_v]i?_$2Xic=<= +T|ZlR⼰*rgR,fJq]s^dcψރEZ2ҹ2&[aiptM:؈E +@;Gn+ۭeBiBiteEiX#5T(ݞOU{_#싽9Ӊ^pVZ跘wJcpnH{t!1 tnv3[[̵ 5e4&? dLR=pD_#-3 P~ٮ9^u,{49MŀN+\iGǐmI)T?yU\q;%wJ.8W~۫ȇp6n2E -V S '=]5c{ɵ,o{4ܲ$p73'l'XƊ#6;s }]6)u\ A.}nP = 5`rL\'<,gGB` +4FYǻ/.a@5N \Ȍh9(K۽fqʊm *e~*!P 0yI&7РVNC`R)zRܵ(!q/qגJ˶lQ_neY堍.6\&u]lgFf8!1ŨXSqm,ZWG+#["-Gk#Ϯ#rd.2sq+zS*4:c.6 Tze4smC_ZT8l@DyHc\/6O/xtȥ o^ +Z \ިA ߩ6ེ^lJr; "qPm˭H{G[_aZG.,^K͎k_^Xr_,MvK;uB)x b@;ߤFX]I\|6GlBAݶbBV.xC'(ݞBT휐gX9,21Tj}jWa#\wW%Ђ3Uq:T kNX#S{KBQ8Ao NW"R+^ ?IMzDYLsaJgf:OyőYrMMp(_TF%ΣXJ-!reFk" +ɾ7-ZȹPme5߮bnV? I]KsYW#?WQJ|Airga=% }. jv]rۨP{ QN۝|%U3@Ua.F!` A6ZOr-پ:SrYz]_hJcu9|voAsdsE=~6iS Db.S[b̮×\)|:'Xi ;TwIhB෹GHU܅ /MMuyouӴ0} Di/ㅬASk0a_A`:I +nUyLul o?~cqj{ԝ8 "_HۭjGw|[ÍɫлZlAp=3,aW" ſ:3h-OoyP:A.G'Cgz% @nKgRJcNlBrjfߒEo  4:f}\^P#,/L, CbY@In»0w) ˳Cl,_nxz?@y?pz|޽_ %e7;'vp!lautsqxpȆ!7#U{/eޠi",E;N_#`rb?cD_pGDVgb +-A|s?ף __e/Ǐ?'];_x侩Ǔ 9x +kuM㸖H`{sU +endstream endobj 6900 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6901 0 obj <> endobj 6902 0 obj <> endobj 6903 0 obj <> endobj 6904 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6905 0 obj <>stream +hn_1g `'rr aq~? I> ,wU]z󗿛OoOonobwJ\4KJ^rᤗNJk /07Z񫇡dTֳ)wD Kp",ӗ_=y|Hqt qkPL0=K. L^uETJ^>>ޝem 2"-ȩh=J)z* 0k.mt#c`!uF.3G"& b 2`'_K.*fb2><滷|π~L=Z?Z~(f(A,#ӛ=>Ƿ?=_>,a7o? t瓎˧ BPf IH@'VPBYdhhl AgΪ#t6 p,ge|:4Rqt46c2ca{:&U|nc0YE_ j`M38N,~geM5N5*:a C$8wT6 VE2mPlC}}*x O +rB]+ G GxBy[o#_M.`|OU zFER# aPC W9O*I:7chh0*@h`peħ6"mOYW96A@Y]QV+U0]:BLW3`j?8:gWy)DߝM=I7p :QQoʨPA %~ɨdj!eX9=R\ۖ#$s5L5a7ԁOT1№ڢi;w ۣo"Wپ;BY ޤxoo%|0DZ'HD +! zCo$c'yN׬qYAٰi{"T +IeYEۅ\Ma#z@rh/JpMn~WWHyOy:Gq5viX(bfn{C\%|k2xheC:oMLحC 6AIL34HYT{!StfP,84ݺ098߬Eb.i=L/cc6nJ)̺}^TpƷK 2O2cJ +*`'( A1c +nЀo@:)9e [Uq.M`{h1%SGGנ#y vlG1]m.NIL{+[;l}W`[*g2p hu 9H r"^ÙƚvC{nó;}^_Sr۱4d ݃Z]cIjg WMrCUZ]j;Q6t:5PwqlFRgq?oHIXH$ǀ l 1ɵ֐*- M)%, ]qn)ls|wzna`jOO rkpN,Y6d4EpUwh#Q3MhE.n4 VW {IDEy״A|ExA2W|=01>i-(Fq>)P1j-6[tJrPk;tЛ+fk/K y94iƲS Dw)DFhd&WE,^1WQ8jjWqth!ڭj.ysߤS/NnnoEPN߁Z*Uq^Y$λԟay] [⼓otW18R~C녏Q{7@t_ncSq*KomoJ4oɘW6㧀nWKسil-PJ;be*MucK`7LU2ub]{]wk/]/]gᯨyi ;i}ĢVۭukT k[{wC<昕Ip_.R=^r}KV~+.[ޤOtlp=_ +ki[ˠp;M>y14\ {sVwea1;xbskй?wwE~)]LicV`Ǽj +pB!IA# +_s|-|t8w͏>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6907 0 obj <> endobj 6908 0 obj <> endobj 6909 0 obj <> endobj 6910 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6911 0 obj <>stream +hZK7W98|?!0ǁٿ_Ulv5bbL|>:g3P&e1M=r8*W@~:i>ϤŨiF 8M&`Te6ӏN|mC ;. |;k+Da~irYV?1uAj.Jj7Di"Q#@ڿ+hel$R7Ÿ?S—ɓ2)JӧûC=ౢ*v}* t\НzA4$GZـRPъ,a-$oTcU{IFpSTd2V6{xO~~xmM.ӫ7aS4Bzn=,&OJc o<=?~y? k?gL 'Wth3b,?VPĦ?=W1ʄPuʃ*.JgoLWLYer$#Gǰ`ub u5d*>w&Ks2Bpƨd;+k"8ըf 1Z;No"l zjUULz M+ ?㧡ߐ#~- dzhw8q m5"k6 hVTjr5 +A: @Ga(*`Oh 6N\Ƞ!YA%>u#b6&rH}D۱X*@ѤPI`+(~?(S6BבE'4~|蒇^D9"z=UkW S<>M<3cŒ}Vgk'|-"^H 47b?$ˠټ-VOj3RÒ#7a^Pȕ91v{dhwku6)2,'_p|vxԧS`_CB"("m㠞x\UE?`c*LɃ-NM|t3/ owuR|IZmF&PPPNP$L=#TnS51/c2CakUp@$uNhEcݭWx+]>CY*s b/h$9VЮ٫xj\Yؐf', il[r0-,ꬅ +NKE3D3ʂpOֵ2r mXBO-(͚ +S1@l=6R‰b>P>[^Ŵzy1efl\x3ufgJb mpvV" +=îXij)ߵ)8t{b(dħ6qa2NSdM4PŔ& 0~F|Œ637:(jTNPAFH"-I!QVY#!HsKz1N ijXF̆tT BJ,16U{! ]CӢ)kqˉ=o9^QGLH|(xꎚk%Pk1,23Aj%󖭽5ʢʸiAvD- +ZER3Sqbf5…tifg-G;ќV "ΗoΧߪ^ȵB%1b*uB{^ybesDw˦tlz<(pZptWKgpZ3mrZ$ðQ-(ytO5jPQR_5hofv[`% , ,6kkg2nGdAJm1G*'-gN5jT~eT+s+)LMj_%qK"q %H,U̶b7R!qE)'ЪǡjM\g@nk_Ŷo%MI8S׽M[>a 6IQ2,JV22zY@, i;wۭnŸo<}cwb׷ +2|jV'&nܷ ,L5('^c۵"WGy +r~`N,zӝ1(G oMw#Cݞ3 NHWs| ZGf)T܋MPԭ_z8cso` +p_]|͵=v]ءh>mAƪêӜްl#V1q5Xk }^Бg:!b7薖\{ +F,wqڽxz.YW(GlGVq;djOp{dp%=]LC BO#qEWbF/3zg( }gV\;{c +ib0\*wYTh>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6913 0 obj <> endobj 6914 0 obj <> endobj 6915 0 obj <> endobj 6916 0 obj <> endobj 6917 0 obj <> endobj 6918 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6919 0 obj <>stream +hɎ_QMwh va5H-)$zX0r +Qod^vziÃzWMM Gƥ)`|~7OovfL>AχyqCh_v^)wNКy7sxh>>É0m>-z.8b.w_,i;@ivS[&|u2!ZO;A6SjeZL*SML3,[H`SkeKL +cCJXmÒLĕ#< P)Sd'?~<Ԧo{ dJ/ݷfdkF㦽pF۽緿?Ƿ>|{>/^~J5Xb_s>`!0ya<&0owv(&`{S}V0sp &cC윙RONֆu;DCz9wrPZVbRN0lg@ooq6QYOZ#9,!_Nx ģ #qxrp6~Co ~\+0"\*cB m#OVblz-62#P 6idB +HDž!mtXS y zIP1n%GdI V&-tB80ڡ@p;1}nHOo%%6ľW"2,6t +ݒ$ ki͖1Rr&UTF/ P,VRàOA856Wa[x8HJ4B(@<):j]QhWRWsQ b&0eHľY62=^EA*Z{BL~Hw仗xO5ݓpzH]8{ >,w0}~Ϗ{{> 'c>z) +5TRMMRK&{4t63Zn\,/G޳x+ƪ0UUR\ɬ+bBH.ҕuAAKj/֖LFR ̅b?g}?5xN]| b1M C:u~F!rAJeJzqmBx|"ZGFlP W)aO (Zvj;1$;f$ImWd/8iafQ1f3 nifuqp̱%Ocv+u̱s"Պr!,7t:hJx(;8[y QM<=WOOOO^ڏ^ګ·g}c$~~͢I:xffm_nYry%Kمr0n2Q2Ҵ^Ъ1wӺhu>< W=g\r^Qr+;xYHX0ؐ0$9f;UZF#?kObX't<4π[kx\ (Dn!|)?gM[p-x5>W8O3Dmm衆Y4+3`-XwݟHNv`;ی +endstream endobj 6920 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6921 0 obj <> endobj 6922 0 obj <> endobj 6923 0 obj <> endobj 6924 0 obj <> endobj 6925 0 obj <> endobj 6926 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6927 0 obj <>stream +h;Ko$Iw:v#uM갳 $,}C=c̊ODdD>GGdF;"~zzͻ[=& +K q aHjtN>Fnк懣RGA7|^=aKp)4L+N |mit0c +eH0F;eGq} +nGHXP` *.qo%;` |_ 4ƦŔrsr0Ԃ];$^rяdZ Ua=i=` f ڏ}|Nz7UP`@b'-ѿܼ<޿ +'Ur +xh=4(?}rmKmKm3j}0vtaL6Bˍj lH&OvfF Cg@lKm ֵ5V!iq%=j3lG8A1F (I ; f H@3N@24uhT&冦iD= Gۀ OO(9;e35.vlf[ .fЌp6:`lG눣@H @A+hjشa(qaH+` bS:&7N>:nGb`׼ 0 +&ܲ×QtAʫ@wQ~کԙPxjSW3^eU?ix䑚!(ʧ&8xPMԄ1EPaNg}AZzEm\DS3ZYrv~Γ]mA=E5EeR+v/mbl8%Pl'#TkmBÞ_={UY{[8@qڣFw.{Vek03QpA[}*~! +PP,`l\Ayþ/ځ ޛ0{@qDŝ؅vSr 2qmS]pbW~N) bpW1tF%?ueF}G!_#Ey -(,TDEZ0F:b?PeهcO5d"zX/epX- 或A[SP/ m:BsΜ.ܼoH׻o!%~aƾ,(B +2n idZ +uq-UiK-*JombC V$T f7Rx&$- aZBAa&{(|)愪Gc η+X#Fc1E7R!1[ `Ҷ vǸ{?킿= 1TaB`v70v?ϗAg3 ?aD/ AjavӞ] (tURϬ`m2;֞Xi :4 m̉N@B(SwHf dPYDd5< l1[keמuB臠qvVMd/;N>Gek+()I֠+hc=Ir*]=K.kCl4pDz*JPKd|!5d$To?IuDNpSJXf(䞱눁蘷wu7mMrcʩq!Je؇D] z(y,B J XQkGm ׁe7ˁ1l&k`<f"u[mADv ۓe=M@+,0p0S흭w-;'j3oEAu4^hW1+iLwͣۻz0f*iQ(k1u `eCn؇/חso,m**n +hj]Isqe:@l]5,9CJ*4)D/d0ZQHf4%%z2]}f +%jQ&I<ߨ}(v.&rM֏*Z[+ >mϑpW]4 8&9<7b7 کoLr)ULZ ,|1/t}qU4̸;d=WBǮBքJGD-S)NH@۞6^gefX4|o)qr\=Z$PX,[]+$*w)7e SeQ.nKVk8f=0GqzP s߉"V%+ŕU?S?yADB䂁$߄I sQZԠҮwEA+?ТccnjU-LAFq):J%5;HZo,DE$uS]5Neb4dTft ])aDËbdXKPkk'LzWmd,eD;fBr>d_sU2=4lV ?&ٯYtR0, $0U5a։ K\JB1%hn`(I)C{ +kP/<^( AXY&',2C%yoUt2%F_ū1Ǩj.ŕI'۬;3ZNvzX/mmW̺zD|-VaM.fR m!$prvNA'R ŵ5d*ķkBgǹ">C n4=>]/矆=Jux_y}Qv򜿟g. `Z[:K^;_ha=^b 6<6.Ƽק=X鉟ițRrl(?ƒO_?牪zng=m8ݿ]^ ś9|FnڋZۗ% R_r˛/)Hw J*o!0(u6V0 j2p\ +eZeyDx(%4t JLF'G6zlGNr|J@8 + lt bJ@ޯ ];Pk"aY\$Kq62bv /M%-">Լ=srf2O\.FF~%,~ SS"c9_a(ξpLG^kdHͥR{*)M%}"|抓J + C8އ|T.3Ĝ47bܼ֔2kˀ$~+ֻZ0ǖh3ϊ|Y٧/e=&\CH/pk +endstream endobj 6928 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6929 0 obj <> endobj 6930 0 obj <> endobj 6931 0 obj <> endobj 6932 0 obj <> endobj 6933 0 obj <> endobj 6934 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6935 0 obj <>stream +hɎίje#@ 5H-)筵Mhc`K߾Uiw_v^ݹNwowY4qi9_f?}ӻgиsa}POX4u/;y; +Gh<p9<4?>É0m>.8b._,iw;@ivS[&, yYqv'(8f73PI%tZfioL.pqGz-)2"+)m[F K2CWpů H’LbJ\O6x«>ׯӫ^; ˿wX~v(=t_Wj%70??}O>}~34ͼK yNӗ#, /G%Lě郴==1J{ ,>C+ e8-&cC윙RONֆ!=xO;lPjVbRXjjaNi=΀ZlN&yÀ8`d\DIH3`qE ڄ&N61pRq28  t/ ~C|ZℲ3GF;qZTx4w҄b)PC/F P IJZ9wض3ނàԴH,Iȵ X +W;>$MkǑޖN#Gx4qO]2I?'}KLXIo%|Hm< g8n'=BGF>P3%E ě@2ʉ`,v`je4alH,7غ?q&ķS!12O-A ha'KߊEJduU ^<^]l@P(Yu~I :;G6؊ uϏ?=kS%*p+\7EY04PǶt~@hsmK| y·/-`t0a]MmZ@ux8AeuRxhwdq5^R1c/B-^Y.ˣ΍j.۔WFEyߪ'``=qx(@ Z RZw|9j1Pĭ ycI=oQ8Ԙ{L!޷9aќbVpZoJ*gYM)7Gv(!r&eJM¤Bd#Sk=y(Y we+ D6t*w^bPķՙ%u頣SQN2C  ֣EtJ?jAbR#vdA! +/7TLpRgyZp*jEMR]U]u{jfI9%/0DqpyƸR$u/DG% GACl*m7@ 'աvPEtl>A1]#ʥl™kObP.c_NѧP afa~ޥaFAUn,W˖sa{[)ᛤVq Bժ˧06Q;"ٲj'R>w"Ռ5-73,7j>tnT׶l }:ۄ%SK 괲稄Y>M0:aU&^!}# \t-Xq ]?njJ;a[5 ̋,^u/G=$H/\9b|#d?UuҗNɦ؉ O\|cCjU9=kyO\ƟLid?PÞqf To;^ArdU`-.%sYi@#UER,.XOrvF1zyHԐ.(ج+ +W[$:: F,Iw6lf\UޭƕVR4:}=?Rh&0̔hQ;+[$EI]DQlBm9`ew/5mΤFm7HC,E臿E?ӧ|\]zl9s&O"z\G2G aJJِRsO{tK# K]h|ʅxPpY0ZU[)4$"ʝ?2X(#Bԙ9StL/cmԞu~ٟHz]#3ړ/k^׭&V|k{߄f@=oVEU75RAj퉁}v%-H{jEjbeI'tv+ާ>MsoO=K 猂kN1 NfÀ$ FU)WI +ZWlX.`M_^(w"(KQ fI9_+)群RYrVrF~꤯0vOKG%KE^0//!Yѱ *qSZ۳Pzʒ5Z@;[|j@ //=`N^%X+4X5OlP/,35N@oY|[| +endstream endobj 6936 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6937 0 obj <> endobj 6938 0 obj <> endobj 6939 0 obj <> endobj 6940 0 obj <> endobj 6941 0 obj <> endobj 6942 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6943 0 obj <>stream +h;Ɏ\qw$ AR>>t";\^!y0 C UEFٯovwbwwu1..55wfcr?ޜ>?S\ڂ-CC8#@;Vn۲lIѮgͮRǻ3ka!_>HSSۭ6Fi_uZ +) uڐln5r艙{ +,vԶjS;D!=``$k a-k +ރ ;Yfeu6QYO5ỳ8 քd4s!mz Aj K <ӊj{CN~Z t_Ho? G">wfk ]Zf[".fI6:`lW@H B:9Nz ٠E%N##|ZbM DMXk:x1X0 #X\HhH#-FbThjVo(<9c+Y*i5ytؽ*PBO +FI!a+"#ۥ=k/ ī8 01qحڈ>>ݹ|ƃ`f"э~TC]oDC|qb?@VFqhEՓ?N y8ν!b|z! [`Gxռ% t3ABj6O]юCpmS4܀OkCd&:ݮ@,(( 09DZ %>}Dj: + 9%.7-5:e$<&Kiy(vۨWÎSͦ.VFCQ`QNzxq@LNډp{&ayiXK .->#hD,$N(xּEl0sa+CZiC"d#CG + V&=˘q,hZLO02=rAt*MY8cB7VH 4s4v]63C.gr-h1(Ι5+1 kO{LM: 8X +o>D3g~uw7P) ~i*$ճuNL_.qI1&Sŝ E,7a0,U2lc\>%[bn/q5JXt2+eD2;X zhaVѪT@`g\SU㾖ndž,LnCw17v.~"~g>9`~sc=7@po/K3(Meµ}&ahziÔOhV-ڕzP'mG>+; MOZpC`VCQVb=W >sATA,*1Mx[=?m%)&!6ǧ\jZ?ݣH"upsO_]Ÿq,C)-I䗴ei|ί1ǜYD(XzΚٽ8onLv9ă>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6945 0 obj <> endobj 6946 0 obj <> endobj 6947 0 obj <> endobj 6948 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6949 0 obj <>stream +hikdqd}axM ۂ|!Z<|@nWzzzLz9IlmRvv7Y)и/{W%s[vv6b>.;C]-㕅߀gonxjaE_qfv>&gq3egINK_oHL~tfcsbizȑ{L--bR c2f\lKg]u-g" XOBrx12A$6.9M)M&'gmxۧ^g7I0r(=dz 2>L;i!ڼtw{8_~ >4E# CzQ65{.fz;;n6B* e8Ӭ]әYCRODlKmv!= +<řLK :jZ#o @m-` qpRo3$l3& T9\qCS4~7S7ƙI{Sʎ |_ 6sV~` F\ iB#[\x<հ:b)PB/&Dh P I +Z1v c\lk LMX0<0a irsvЙp98EQhGnnͬsD‚ U ڻH 6Oͤ:^EǨ$WhOE8yfE G2ʉ0(6`e4. ;$W$=qE47SMö+jñ̓m[> S$-{pzmw UFá,m +%˲g8> ,>*nbג}96.ێkp>"pىO_QAzQ(QxG0- .)!_ ~1A]T-E0cջ8vC:@tLcA `ʾmW(R8Tme Rh˶&70V-я ['K# +K Amc!E Iv2G'Fԁym-gQ s +`=d,&˟xX뛰58V #E0 =e: <˘rn1i3˘ \ u: |N&=P{p n __?ّr3|u})__;4 `x;Yo;>6Wɪ '@=#3p*De;("Tй큳ŦHE[v*d$|qGssqeaZ :1>U2y`Ooq5xhaq8-ӿ/i#°iYMk jH%K?-^?`bT}MXAZ&ϭT`yw ;/i\W A{Ѽ`*‰O;qW,A(107mUJA`#,kJ;zR8NRPۂ>'ZsKip!ԹO+{!y\s&k\̚r)] ,m>Ƅ25%yKޤ-&25I|892ƯO/X>s ]ۂ~j(TLȢA ͘zO+섓Q%1JqNCu#iP֍Gc](xZ)2 W ҅ n,^T'nR *1ij |J#7tvNH/kJIX̼pjb_Nk:mUٯ|)Eꏞn\PUfm`ͨBQ6e9דJ);D>O.aV ""O&i2;v&%|Xhu~QVzn,,A cVE.^+1M?>qMSJ &*sOST|ii*?ME?>M}çه<_14+| d5JHaX:yh!0ؘ?<,<\08F +%tcO4)Gt q܎3l̿pW/}Y1&۟Qz剮}4z׿E,7`D5+Ul+܆>2w eD^F'+ oWI$5ۊ^^qVtWt7ty|V |uu~z:V秷3xmm~yLUdzxonݮLൕmQ⋯r3jSe10{8KnfN鹉u=5=â `{. +endstream endobj 6950 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6951 0 obj <> endobj 6952 0 obj <> endobj 6953 0 obj <> endobj 6954 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6955 0 obj <>stream +hˎίs1F>8Y .k(lXrOz8ֲ ~Vu1ӷ_<^=xCiӇ ,T;~w8eO$[i;j;jل usq Z~^O`C.09G8hi9=b;:jPCCz,%wi.>60yj`N=Np1sgk"q +"pR '#L6(6&}}mj&sP4^W߁ mAW>O Z(9 } v ]SlFE"frV(뀥'!Zm<ZP+%*ŶY@ UAZK|jMv asuЙ  v-7tMIHW~"JWWÔ_>)Ne/*ytyKek)<ٷ@ [6*|kdPUdlS#G*6Bw7[>QAZ|d31g`KSCOŒ]{ ˮ=B3-va֜% 0p=.w_Z4c&><pf)HP,D#bd[bJ DZ .wѓhDnCH}FhJ0U\N=! }`Q'd6RT".<֎:b+M,= <3oݱe]~!Ua}-jD6#\ڢ1NgD }G>7fLfj0C=u)6@|mM5l^u s$]L?!#4Un]H&2Sg}"tg05 FƤߥgY 4sW~ȮwN 0APЋe0bwښFr[RVpc'q?Ջ,#lX26@F%ge7ee]ձMD sSEYjn "ٞ*'E 483 <,&65Q,`[Jrɀq_|_% 1d,J\"J5IPߒ#Scz,x& i`CG3Epaݎ@p k$+ta2ljU@T2i̶.:>H#A.UV:0?nDSt_GJJϞj{[$cC5̰ˉK:F"8-@U{LebX+[iԳ4TdB{w  m?¹aU-{cKF;`iZ&c:&3OAoga3AzV7)%zܹ(3&0cH iҾc Ub@]ڌ-LK'mY$F9ikə8RF'/ܪ;lfwc.ϝ|U}r{ "l[K7H;9"^Q6e@VaawcjߗNW9&_'S*zSwm@ժL5f1P I,)Vzf*}.acޔەww9^zc~~rrr* +DHTiĝ6Xz"*/纐Z_'MY@%<>l +3_+:% +ʤ*ez|ȖU;Kҗ&We_"'W n k0)]N*EдgSZt7Q[ȋT\CCr6IRѧ݀%JS>v1JV]ZdXEP`hQuy{R7ARpDC/ޛ PbnpMv=WkB"Hsה:џ> bD:rUb%[x]jZTUr jIz%R]j#wحT(Wc*d/YZ +VzHRVu?pcǴlsY7c#G2)MYÄWW~:O=Btﲍx/Ϫ LKK S^erlʖmi6iЮ>u+LZ }vo7K3D$ș[7_šk3Y2*| %3=޶cMѶ_sY'V9q5 +qCR +CɵbmSC)\z[[ fcҩ 4P98dK}KbZ ^v<Y,Q=URd%m"Mx?idq3E2_SYv*K]ȏZtIjl|WYK {nk٨RﶣanwleMK`$a#w}\%ׄ+k)cf"ɻǪ&}y/7|eQ5\$?O"*n݄T23Ɵ={N˛VFrD-5;tt]eޟ?HǪ'c{j-t&I=]>Xb7,PZs㌴툻-(]7 +b DXAⓧSԫS5 <8%9b*Xi7Ñ7RySVz^!.hft=Ji(I{oGG\f`WRPDnyy0 ‰_] r졻؝67qtP7ĈC-sRs^L +l=ٶw%eɕ&8Ap U<|Qxޮ(MsvXjja㼝wԇujʮ2gGX$]\o}!Ŧw.l$PmܥALvyM1-Y;lBy%[bur6kG5?Q mL#hU[D=Km׍*Y-7,Vˇ D;-E"IcvÌ7 +v6JSkºe)5MRNSSe5g]EA +ZY`{IBYPjI\ji㯺z)^ؖ$^tecMw޴wMٓW|ʢۋݾںv}Pә6u&C틒u zmX{CG+\膒[`TžH;>RmȶEⰕ z-"G)y^'zYQRe.ҊY|+ڈCa5*͵q ̞p3uiXV`Z4_u{O鷝xh0'>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6957 0 obj <> endobj 6958 0 obj <> endobj 6959 0 obj <> endobj 6960 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6961 0 obj <>stream +hWMo7เ(;(P z(rU9p!Ljo] z+ +A"|=r폿8 PmMᣝ-'s8ow3c`9 0p3neȍtb7Cz&K۔n[ XOC`b.0r)(Lv1Zى IEZ|cP1}ؐk-8 6l|hP8UgChaX9EkiMQF,ft[Gi]iX$s2 J &[L7-q[?ywd.7gޚ.I.{f ),kl64f?۟/Nj`1#n] %x " cFds 䄝5͍9u{l)Ǝ7ma[} +2T[X1:R (8yDaC#=g[C1$<5eކfXɫVcC12N6I`f.A2Ac0AHu^lchOVa\[FOG$xh4O5{J4ꢩ?˳$.iE`!@Gs̵>hJIQОTX: 熹ͦ2XY H]FחK-q=Ş%9{gzF3qO3')Ya(inrS΂qSA4"QW~q}`F5S!uc=NpI169v\L >c.}5j0˷3_y+9iÍ/(J&r:w}/5jLp# aU]±^Y(?Ξhջ3L( +Kt킽:z$( +z{Ľ,c޵xՆqZɵyґo70X +v͎p5J5uD[}6Q5K(jǵ̌ &_>q5;{\l9-<9jII=Y:܎ٓ\m@9:wH*N7O: Us#›ip#' (DB')raRS8XΠ4=uK+ҧ5APڽWSƤ2-}S):ŹɿJ4q#_ -HRܿJqMA5A4Gs~ZG Kb>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6963 0 obj <> endobj 6964 0 obj <> endobj 6965 0 obj <> endobj 6966 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6967 0 obj <>stream +hɎ_QgMw N!a5H6,;mdŚiKG`X^zzË[=!O3' +aʳrn<9p8 zBog5w' +ي {4$̠#&(R}j e}R8,4J +!^&\I/H8?xkɻ5 ˰Al5R 1, l9^=DZ&dc/tݙJlQ1=l[丶33WlG&\a zhaF_@(bZٰDgqkh"c_^UǢ}"p>6d(M7G7\nNl;1Lh9z&02&A0.ↁT9ki1(sg 2om71z׊Ә` ņ03\&]X{HyCjhJ:CCjT{nF!o-3Yag$ˣ{^bk?w_M*P+7$ߜD`K=$'O|fh|[|ASWm ZGg&:c0籿)k!TZ.vN9mMsgp:ؼXJ9 +Gz*w(X~c՝k`^ԗ1Q`UKZ3ڳCi:15KIz"r0SY#w'gd:S1}#rh<\.%0$ q>d;0ZLf-#hCӖCq0LS{VO g=^"u챖eSAvҳz1 I)/Wr.3eQ$Xr${X5uf Xd%M(+3t1rJ"E+IvM^Obs(tnZΩ-آޮ]~,{`Ex2=pҐ\L Uv_\-᪹s6ljvKꕥ vvܒl=S@,77 +Dyr&uh,C^R9> X,,<" $4Ne sි̷`n+rb|YߟZاSRTN__4xVclx..A>T[;,L"#KѵUnMgLM{7ql]T^ m7J>ңpkπܯ &gzhtdG>rTKVْ[9DKT ewA]rvrsXnrsŁGЬ,d«mPv3u\X"|P2HlӹBN5l+n}y]ֽtݘJĐAoBuٚ +dşi}+ : E^64ldh/ y1\VR'7];48u=ô T>ǀ7i˃#[gTPLN!tOL]>9D\^{`'| N5FT]X]_-~b C\'҄㺻 캽>Fe} <'|bĴ~VX`O(;oct +/|J,1 jJÝȡR1Uih1=uڨ^f]ߍpW\e>e?2e=!=Sz0}px}@ kx/nj`\h:P Ph&9:Y-nfOC\46@3B@O̢ ^u~c.KGo</TpNHgKCRqEJA1r&_Y/3['c{! 0"GfE' eKvK/b]1'H1ӫlEQLC1|L7I1ܬL驷hR>n t]*pf~칃`?^'< +3|?3d/ZDc |H>zG\Qb.JAJdaxH˶je 4 2\\iJ]!<9wxzeWP9 +|d +c%|Zy+1sKw `/!>$Çc| !tOC1|L>g,5>>i'[#+-Zcz:`chm4~+CC\\Ȭׄ0TUTXb|~{0~J^Z>TvC҆c0|Lc|de<>$ $c|H<=O#R! |DQ_# xH3gn2)s>dN^yj#&"vouue[W5m[O ӷpxBA6zMx)MTqOKg)Qs:jpTՕ xk +^H;9f/ Y& $ X4s iJ;,ߙ`~'0;( +_ fi u¢xj +endstream endobj 6968 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6969 0 obj <> endobj 6970 0 obj <> endobj 6971 0 obj <> endobj 6972 0 obj <> endobj 6973 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6974 0 obj <>stream +h[Kϯd`(>/`1KF>8^#JPbIQ~A=ÖƖ#^~ݓk;.&"De#(_bw?_i֐$o)-@k',}+C3b3}<; +|L(3yA;xE#irwS&e]yRsNۻ]QY(vkb-1US +@̴W4gd+OwPYslԭP&/Fak$gMZjԳWPM!TRV &Xiٛ^ݽ~?=5ho=_N@#]OL1f|NBwOܿy/[wa:C+ 0;bGtL>!t| g7}ӎi[۫"Rt2p'e vV`;yNŽDǴ11ch$Uha +`4!:z{cT5ikjTpІ$8jjQ' +d3& TIB% +6ʃ I<ʢ5ldDO*nِhԠ-.H IHTQ>KѸ2q)3iX¶MDqF&AOGB[aLdX 2l{xR4bzLo&_>F3^O'mS8LP}8i--"Uqvhpd#Х>17S n3Sæ#*}4E4aS>NR68{ٻT-Q)BQd9Y%(jC'ʓ'׆?}r2\%9NIO/yGIA$hL@p}׬׸NxcG/߼~&{d!:y=7/x_cms%1@AZ%E& Ǽʵ@nIFp4G2Miǃesz1{7DE;Pc6xA +pջ|ِ(sձTBR +U'jcM*fLm}@ P32siBeh/c`t Ѵkdp\ػV!XMTUWnqH*biSF,`AS֙n;R/^_R-3$@`DE ZPQ#TJ\{/j1\֣'% +< +S}o-ZT,S n; f kBBڰSӉ'b;}Ug,m,LT^`,f849&À`)3A㊜8on$Z! &R6.nP6.8c}G>5 $c,[͉Q椸^(Rz's[ss]пG-)f` #]ϸ39ceOEK("=ÀQd^]# [nH |`,k nN=[yyZMknk-Qښa#NS `U,#LJKQS\vTN&V|BI+: +#z`XC0x~$-GgƍH +w;Yg ,w4eRo|͖cW0e(CmTKU@QZuJ՟[Z οdGK[+XOsp-YM͒uƃKKVYbt}u`sk1oXg3}mUPZ맛a`]k)XS4 tۗMXz +VKO+B uf{yч +vs }w6cq=sL2-JK>b>]׺>> +#k͙N6zh %z@vA˄?x~ԃlк_hm?r ̀jsoDg%}ݙ+Wf<@FQ<_0GYmR_??i)[876OsH"HZW\0VXoVW(_!x +n)S\׋*g09|ע^abyO6txd+=?} e<"ؒԧ<7ҟ!~q8Ѣ@Az^ "xBj}ynp7X##PRe6B+%siHYIϳ !) 4C;/NyE$”=` +SK_1+FmN}=Edh/{xͨdM,v/UUCR'f:CGP;_|0:tP0E*o9lSz@XD'[c)|u !߱?؝9.ZL|8QN/g$%kV5#(ҥF_w4<KmG Ӌ_0Dk^8[δfٌYxeYPLz3-|ޗ,ɖLq4Ez M!|b;}N+:谢+`%*hC9? +VCN޲t>:N /AU7ҵAxtptVx>zJv,\0ڀݙ}Q>њ^|݁aæ)]%Ɔ!7b _E-dp1"\erɻ;8ӱ!&o6pn[ +Ɠ~G* B:D)oW"FwIɷNp +IVXg;{\) s PaH92س^ja`[̧6l5H>hχgangZtz#8y~bgu&b8˳ + |Xv^GR  07d}ւvF̺yKy0q`-~s< 1{G=#aHC0r)iijRu?Ts)F;ҽWH_CnaA+|'|M8 ڕ? +vas9 ja~d/.Y}n6Ӆ=9.g5n1 +wϖe.?^c?kPPWC +,/5 ߇6,+.a1>Cو[i)ɼ[dO]K0LJ/cMO cK__]t?3z@1l P7WLڭ4.mnZungK%8@"#S| +endstream endobj 6975 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6976 0 obj <> endobj 6977 0 obj <> endobj 6978 0 obj <> endobj 6979 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6980 0 obj <>stream +hެZo _#a@=l;@E`4O/I4lOuۏߝwv~<¿\L[&F~<.n+P~6$0 \ُxu)KS"Z]ݏLÕmw&⇋nʐ'- ?5-wVJ4vA]DcT\6|JYɈJF^3<'RĦsʉmpذ.]%ޝ[?nƇfbin6JLfShy{cz,ޠ ؕdCDNAsjSI "n77޾9\oوgG?l?CQW Ҷ#S8 tׇ7>~z˧{9oϠ-:24>oG֚ɍE( 85ōg{b:ƥAivոA7olFR#6"uc<6w9bZJWMMGTkAzGL2:ՙ` ࠩ3 MF3櫐F!a7U&N8"P'ƃ`Gd?䧖6Kz?nlo&72y$-1:piMQ0dQyGF0G@eGT)@ig!NVX:@MMEH'<ép4:igs`\+hWdcu'<8[S.5S;™5my <3b|:rML0}= { &7L~D}E[&Km)bA1u:Q'C /}2J2] z|#Js=ʫA@Ba` ԧ}$5KH%tyrϻpevIAe(`RK4@9vQ-ޡcSŕʽZ^:k%x}]r }b,<F9簅J{hq@Pw}P(2^xr JQQ|TQ*7bhPg@4!4|!:T ;^] Ƿ$ԭ편* 2#ܟ4r4zVd iaяl{Ơg`)9@mCi[D%fY"ErF,}).&nO:#戉DLrC9cɵn}޿Ÿ<5#BAghwwUԝԣI)4eG}{! +vl7#Ko7#hh BRr+r; : SIY&R:&6̵œqbwgM9ӉfE%EBBI\WkuH$x$F4EUPTY|Rޒ 9R4CW/ tOtgDYdv> A"$T֥L(0Q4|$ 4I?rE^FO 佬̷,s~=IГW 7 J M +gq͈_nfG- ̮&u[^-Ϲ9' {w'BCSj +*< 7 uJ߄qjaYA*NM̟t fh炈pdh=ֈ1i%(#Mv6656s_af9-{Qڮ +_GiLu\TiF??45 nqh`PP:,-D_8~Wږk;WO ]#^i\q$_$B%ϐ<΃Y:]Y4/FeZ|!bOiկO^ե>.YљGˢdds]\Y<ьfŹ)=TI*w|bEWE 6G=_8IKպ#APH6t­(%7:M qrZz[5t|q.#|QA#&>v}!ޤ׌ 7!Bv[(~O4"Sq}[LSJ#=zQwQ*^:\[=^>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6982 0 obj <> endobj 6983 0 obj <> endobj 6984 0 obj <> endobj 6985 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6986 0 obj <>stream +h[ioG~E4^Q"1&@D!3`+!"` $ɿsnUooRF +Bk=/LbLwbQT?Iإuǯ{PZ +hz2lKFj_/~}4[srF%.an\I+t1i#7ƵY 4^<>^@v ;e])S>ŢɫQbg﫨Musrx&Lٚ .'CymUvƈ˕#r ԶssTi GNװ/Q.}g3 3A[;v|t?z O6hOӫC|ֽeoJP[_og'ߞ=?}a.VP ԈH굼NVNtӝU&^Z<[Z^lpJB笌* +O2lXt&U|a OA<>a;1*Y^&J'`1ȐS t[)LPly}hm:kH<)*QBg5qGy[o[S mG˿LV8DT\5r54Fq\GtBOaFMPZH+I:m{4tDHagbM^吆{ߦ.MShڶm-׽[(S #uND[[SEC{do"(({5k,:LL1P#bpN* "R5ah1ějx F9SujDtl}&mvKWI вejmѮ%7rB-U/`_\^1 +6NCtc|]Kp^Cr3@㐯B˜&\l2SY8Y>4eH5×$˷o3" AbZ_9N[4>`5*|KqC[Cc'I͋J իI8 s$pEܢR@-m(Љ %6=kʒ@E7Sd +ZyIqrS[߯GmSFVG0z;B޵1~<8\C#ϴ$8` nr6=az~̮ڂiG7; h29 biZrPTYV?I>1_CNU|d\!#X#l$y74^M">ЫP#c-jvr28i#?KMY<9z];JZ:><;z-wtLG;=seFfS]ef$2t@(d"Q"qui&w|`!p*|d"R!to?ҸϠ* 鹨Y.SNj$ 1$+W{?5ZWSkځ*j]J0wY}81_'Lm`Љ)C͠gUHO&x9ڃ˓׿U:{zfn"Z-('4aQ3t`:&@6`D9z:x~yzq>NdnU/V1 F3 2f8 \t1@U,bSHw.ϭ}y PGD޹μF9"]!fCOXys{@6s7DєIE낊tOO==r:W +2(4DT 9j +R]ng!DA-|{VXlV";Q+S/>{H#m3Bc g}\.O߾A*A "J#=w&.˱^%.cF\b-;Ǐ|<ξ9P$g8~J+36fבîtJw瀽a*ؐQWs;" ҾEيk(0I2lܻ,Ri +w[2q)lڲ> +tcX_ǹ {~fk:s>FT +@.Xa&,(V0^R*wPMwK=ֈ 㼹ّdz)wK[G!,qGw%sfnG +Kn<,"⃮[n DxKD 8u-VRJ] B<)q>}==7?enG~K\ޢvY`{{QZ, w/mڷ hw!!; +r()\6Eݗ(l'W Z%Mr4g\6Opb)GD)gC2Qۖ"ܬ=$?sKޏvQy+#2 x3f_ZIwSPq :Ꝛ__x\<ړ30s1Dc(T=ؕbEnʏ7)11#Mu=gC1;Tk'"lќ `.qR_XK6[i iPVƅDS*E/#_k;Ǘ^ yM"M[G ) "G`p@^<zp[cW>FSFekDvsxkDfuw.3DUZX9ڏv@FyâNf|P8{` +hLΤ핑KbQSP/TVqF7GԻj^O+h_KU~OwkOFsp]ny2bG?=Nٿ+wYsq[mT Up U+yyNMxP2r7yOTV>Lxg~bwB-&P1& p"|zeق`&[d/ ar)>cu$ +tͭ^v[]vO.{˂*aFo1/_-V;3/>AKAMHt/>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6988 0 obj <> endobj 6989 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv43847V4.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6990 0 obj <> endobj 6991 0 obj <> endobj 6992 0 obj <> endobj 6993 0 obj <> endobj 6994 0 obj <> endobj 6995 0 obj <> endobj 6996 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 6997 0 obj <>stream +h޼[Y\ɕ~_q yuc0[ 4y*H-[5D.=fD)3~D[w׻l->5mk[X?m_붹<-$۠se?CXڨ {D(eW9a϶5Sku3q^[/iR*6pVk~1Vp zo)ޥ{J|SQ: /С`$Ow2tLF(aL=P̻?wp/>\]VZkKkurz'Dvy;y-f8R>z4OғӕfCDLA>}?ۗ ׼֭EG nimMP'twۚZ\H}RTTKI:-(u> m9A纺l~ݲP +T@]rL:x[9bec5>u`έg]T.ЪnZ`1 nN׌dmJ4_aިE Bz5E.8*Vx^=#|uߐQ҂ѿޟ,6t[ ȷL\ŠX"ZeuR]C$!Ԃ;e<JQSj=e7lJEҋ==\AךJ3r$.VEP(.{n\ +wk +22>.DijSxZ/7H- 쳦E%N#-|:bM$DMX[zx1 #:\H˴x'b[JĨXԬ1KQQsl)U*ZwyoV:"\Gp@B + O +Fm%_RBFφ=̢=!- Kl^}KL. <䈞pGpw7y ձwꫩ}Go.:_e̽_6pCP5-`V/n66[Wi1 {݌5-̀Ɂp`7V׊ +!-"`j$u^I+LuE|Ҩ#7.Ģ'XE}\tVhX]i<?K(NnOfKDŽh(@J*z(:sJv)ˤAvVr6A;;+;pCbs:3lTn0C""XcMzob"//VO>|B{OU~<CqxXr/?rx CO,Z>X  ʰ7mRK/Q )(k]l!bv ;Ѝn 7x3i4L "*e&"aGꪶ`Ȱ/!: 3?UR@u$IC~TtbK*L{lQ؁7nSlbuLIp/c,Pۉ`Ō؁%w2,f`=yěi:u<+8&ٸ,wT7漥$orśHlI-ɜ=>߯hKxmjHSppvi疱;gR\;*eeA҈eP T*hi9lP2z'qԚҭCWr!bH`ơih;(ėX4cM+oO &M2g$Q?qЃPnu Tܥ $i|YWk| ']xjS@{LD3p5!n9&Ȧ oJ2: $i0SH/a'0C|'xR!;w*zc8U6e㖾uH;QjB.Ąc9 ֣vMWk2snā$:r [IB"+1qH.ڨS=yUr׮dC|k]`%H]!։-N}Pm*i"yO 0=LwYR>MhᶦZFFS3g.,Md/v[atQZ.(O22BS6n~ 3Ϫ*[sh9@m̟3Ћsu(1i:ԲLxw-pHx6x5a*az5Wt ]A#€<at;T3% KWON*փ2D3tjkAuD^upy[K{zi9W~8^J,kP)nİ2TrVcW0=:>q2f7= -ZdΛT`Gº ww笨悤4ܚ1f/ BTi^σXul +#cHa6Maw=4RAKHF%a`b[rEoqJ?j/臨 r 75@V9&.$B}]xjt+tbDmיzBћx6'nWL'#!˽W7x|>d RQLL6ؔX+*o܂7ܷ#m9 ^;%E'MhyO6Y ;L*(+ُ42jbuuN8~+ACѤm8k7.te0+> h@eH#Mb ͟ ?<~CaE FMۇ)k%Y$ ܾշWY=Oڻq wE=/eXox~yP,jѕ|Ͽ*oDsQ|MsO;X6 3bCu /y}Lhx=1r{%}&9dʈ̆ `i7 _ȼV̹̏))\ +*s>eo(|ymЄq;dJnxlǑ*}o32G'10iʯ\qΘ>.6ŋ*owzAy/K>mMQcqE'{G5c~drq'K~#a3G{\pyp +*&ȫmAOmWqu2uHn_kcwx6&[tV& 1Dσ ,r.A0ǁghzk7~E/:cGx\G$V( ؏Wm\Ł~ܱPp0N]$p6zL^.vR]{؂%߲/tZea3rUC B_UxpKb믆ɫd4٧9#wf>%Q-D ©g%㹗y s[tiä᭽UڛM\r?"/% +JMA*ZCP5q*cZn3˪@V`FҷG-x&7 IWimGTPiWէE7o̻'K NV`зg@Wߢ^ݦƏ.CL+1o43ҁ4+" ߒ#ߢosޜ#]s+lRp+s` +endstream endobj 6998 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 6999 0 obj <> endobj 7000 0 obj <> endobj 7001 0 obj <> endobj 7002 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7003 0 obj <>stream +h޼[KInckJe#BV36`` ݀թnfn2d00 ChUEf<$HF3/w~{`'3=\%)%?2r7/ <}X,s '6~ia?vums] }_)D;#q O뤋VcZf=B{cbN|cSٺR4TJ^Nw;W{2;o6gbr"|n5[Svla]H뱵LvH#|1s le5ӝ/qS.s͠8 ۟>~2;kaa৉Fţ굡;~Pl5==|ӗOs}>/ś*>800SxHDD.s(~jնMY7{ l7%iy6>D[X>0ն1~ls s`{mN34 #L/V5''N1sgkbm[fbC$vjaqsD6) ܄0&-y5LmfPU- |oo|4GS R|m粄Nq5h&g p*;rgHڛ:ڸ< $hES[)VXl^pk @&>IGV<69$p/oIDZ۶lJBƂ Xyj|5AXR{Ay_&ʴabݫۡ7O#E 5U6<N< sI` DC0^ .wdfX*|Bs3;dj*T۰-lξtEBΩвEե]kq6*QYۯG~FGPOX|l|ڨ_ \@ET  DLNaL}t,$jӧmE\ %# n"jZ BHHI ~7WI qf7 +dM'hbIOP?0tsc_!N;WG9VF#S2^YhPg>4#p#U*Qp:Ȫ:n }2c 7{qSA +¢ ^ŝQ@PҊI~V$Y޾ٟMxŠy`;^i%wq}r? + +WYőQ޵;LG2-f9o4|ϊ*"_7{]B0$S'ܓT-8>}kw# \TɐxWX- +xNw:4gO[4 +Dt9sIY>zmWG2Ti"v62=hTVAnRefyΘn_]0n~#"twuHnql1;prԺAҕ]q=Tv%k5:+ !V|~$=y5\ʑnF?qK3-%udbr4# p n۹%/&nX8)4eU#=sjP=OgYٵsx (awW%KpBj\%yi:FQ=z-\[ΘJe4[%/Nraip?lU;d%.\B Cz z\f8`%%Zn +Yz Rұ`d,xe N&"!yKЖ4TnZT;h;2 ~kUe֑464?\W/`#bPUϰ#Sڍ`lH!ŖUKu5 \N(BtyF.Re{ЫwtX{/_Nf xP6x~[2~_>_jCs:y:@_O?>7oj(fɜ +s7ۗo8o/!Nz?='~~za~$sA#n gP]&DBr#A!Y(Zvф dd ̂#b2GV1$ +6R$x#!5)F՗! 82 ƩYҥc^pZՁW39(I>U<&TS$~H̨S,8t:EcN 2o);JSq)O:W~ vd>CƤ{d9K=n*L=#̊TH(P^[FW-! -*+xbW}tGo2poBǚrQ3K 6>D7.VUC!rHVxG=C~ !tj#Wq_%hlUPbMAǀjVvۚrWؘ$X- # rCE^5= rd~r Baf16k84 M85rw٫s#m!N9[|뵊]Ϲ톤nO!{V:!)I_JPsIK"5؃:s4yk؈u"E|R.RO춫+f9oEg1MaKSS 72|)‡^+^D2&Ek# Hjb) lT/KҺrM{N%vzas\T!smr[WPD*t;*B_V!sx ro4~5S +rV`fT* T3¶6FױgZHުsF>Cd\!Ɵxi[Jwvfufn$ CО Ѱ4(tp sQzѳI.(*kʕ*V V)+tWVբ調)@q\ylFo"+y?ؠz( clC웻4~\ڴ©^!9l>?&ҧ0M>\;vL˵ cu"\k\ze@3^gٌm֭f}:I`^_S4,$՟8*K~(JQFWmz *}A)e_Y5v#[' 'QY縴 ⺞qs#o!ٛB + FsU͂æȅ i՗P~b/}[UuGai?d:GU53Tu7Ϡ!~MdEr;B]]X5J ICH~QaB25cxiD͏W1?Z5} ]x~wK RxADjpf$e~@FH燻`} +endstream endobj 7004 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7005 0 obj <> endobj 7006 0 obj <> endobj 7007 0 obj <> endobj 7008 0 obj <> endobj 7009 0 obj <> endobj 7010 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7011 0 obj <>stream +h;n$Inw}E+'i, ^ûîiV[RϬ$d0J=/FC]oFd|_o~{pY -eyX1) nǛ8M.G(|4T4zu3&jie7;7{.#~up*/KT@x=;.C)q soE ]w>漌3vZv:}up˛ctDiW⣈;B:ʞ(a%O35PPn $~wPò,˲|ÇRqv?籘x*vxmѭÞ,A'1zqx'uzUpKu~x>~t6|⦅/qnvӱ3 !-iÎK uOOǟN??=<~:<_p|4\}^06vòyapD՟nv~"ˁʁ~t)qyݸ8N_e8Byt18eOá&Z3@,@eڕc9Xr3LK #ᅦ~JlS#E(n*PE. KG[*,\@B 4D&@p-[<Ӭ(IŗЫ@\! !aFSETlNGnFjC ELY /8 +RUx+mŅwsↄ~"U`US:8&/pTQ%3Z"%- +IX9y3XHtSy>};?wǷ .LϏOo>~qxL3w|vO_j/r;<~B导[Ƞ ;|w{g%1Da&j;qcL^k@8V°j2@WVB糝 ^';0wLRL1Z 'XLWsB@QGXY+p{YwL}O=ց"LlyݟkT̪uʃWr."*"BlMUКk`#ֺ۵1h : " 邔=@p*׭ +xZǼZ*9xU˛ְSkXiʜi7KWr(uzU#Vʊ hRUϗ4T",bG5# +e<;QvX_2Xq%0>$[MBR0% ܆cIe7#/\S;1B</*%dؘ݇RjSuY*[NrM%9ɤ1 8K#Lϝ$$TB\vTďRAd͂$VұT&)@y:.V;Sg,x3F_{N&CnॡrGs^ κ=$w, +װOMk՛LZjV*nyG̢I#ބ?2~F[].}( ^dQgc6gLk-QKL++d.K5+> yDds +'@vS|QT~P{էI:tC,erTe+-ȴXlu!*`l5M5cgA1J) +zX0"NenV[۾:8v+1ٲ',YsixJ0ħ|W,Jp/[Re|A?J.DKQ1Uح{ "8jHE<ɯpgqmL}_:.acx}}ǏUC~jMddk-`&0w\3|:X:5zV8'ҥHw +V㔆R`SH!kʑvBAgS_5Jt˶VgiBZcS ~0gCe]4 Lɜ_pɩI%͞1}5u)h&46m4ZFijNS’HtJDwaX\ЕrJ;sic/o/x|&GWOaQBJTܡ&;:[ؘ_Q Sl-Utn(.|7N=D/(g}a*OpMMyU9ǧQ|KJ)<@P@>w^R.聆' {n6 +l4a{Bյ% M!gݕiO$@;g:v>l#66SF7[̸Ƶ;JZJUhq4EL8JR* +IIfR6yNdF(5Sqt+L~ da-.,$EuNM qђwk2~a.%Al:t}Я΀(Hd/ +xݑXaFfgc S{7w>I-UN_7%ASamV-qU.rҾF6l=K=?)bb¯ս}ĔW]Z XM⌦ʄEZn[/qRҮntm _))]N): [$s.&cjF~Pޑ?' +;/.\ZGsE$ "2qj,wChAWs׼^dB&׼cy])`ZS=_-@O_N/<'i~|İہn" ?<}Qz5E>CAeٞ"m2A< sLP-GI(u'×;0OnFǷ,h;^08}Vyu~ۉ1];jzz{{_UGЎ| *@59+r⏏o2׿4|y<=Í<?ZKOғ$Y0\po3^|@Z|8}^?sZOPϿ!K=Whߞy`=ZT1pAMxONOtݯJ_fh.E4w'u_ `lC73!69c~OyA./%]TXìFSk?êvy:a]Sw?ہSrQ$ڴ^=J;›4;0p?AGhۧӝUIz$2(CQlHP`%5MSZt11U'>ƅކFup>8ÉZ;1]=.?gɒ4WJ玂g*<8,U^9YR7 +"+)c y7!Ao(e6._ʎwykʫ2uAM&A +Nc/GnC\ +\ AHok5"%"nc3&"7λf Q= 2}d2F{ a%"\ı[ Hյ'f:Aҹmd]M҆3EFI$$x=%Ӈ0j,Uř[h!!]I4Nen^s&0k+^9϶,ٰ罵 #j`I]BLɃsg֋Pœl-ׄ9/q`k  ݪt}voO}ǫo9\_iwC{a|K`,/%ɭRirVzd܊\(g"ıc;Xul/v:Z}#?ܼ%/2Ɗ RV^0 /f +` 8KJfN + `~I:͈)y'?vy~[NLk?9Y>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7013 0 obj <> endobj 7014 0 obj <> endobj 7015 0 obj <> endobj 7016 0 obj <> endobj 7017 0 obj <> endobj 7018 0 obj <> endobj 7019 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7020 0 obj <>stream +h[Ioϯd`J/|pL!A +()mP'àk{-~ӧ7W77v1á CL%%\nywO5٠qÛ.iUFE_l@#ˀ߯G2p [e/ݩBڭG>`m`I+#'d]~÷7Ke])eQ>}ԪةYmgar"گ^ tzOL,,luLVd4D%fd=:Mv߅u'<v9-6B#&|ƍ93'Fiܠh4.$2< EV|jO +h4GG~67DE~#EnH/\cg,Ab9S̩8J'wqJO^z^y\?Sa:G @h! HJd~MNj]b>`pfp" Nt4KJ<,{8RS}١\b7=/ރYt%{AqC!&//o? !x%W/۟x_8z,/!u_ex ljŇYVt (T}w+6[i( Amҩd{it<'Q_*&Q<ٹ3a'rԞp֗d)9ې>z$-$ŮCLY;'᳻JVNӶhC8j`-w@POz}oۨjUǕHBNb>@HdMӰ b[(uͿTI6q'ǁњ5 +"03 +4j!lwȥ1C:"ē4w[&a;*blU0"^Y\ ̬džDC9vZqܸz*OSV J$]F|k1z++ Luw~]:\'ێ":="t֐jAz&u.>/ܰ ԆqD@0Hk(RNuh!({4֋lEZxpn,L{ LoӍG3][&d!$s)Vl~Lfn(k8$\agQ=x-0ZƟ'F0GK/턗YxiFuPUMAio11L;W5KUJXAU+aI{g2=B6̾㌙)?%M Ә { 1uʜ5Ak*ЩgooX\!2^BƣU[ϵ` 6 6t¢i㥹ǜUu͎~w,O,/_6DaRNc%ݍ=َnʊך_\>6^J{;UeȜ\64}=!=򂼬åsZ(>mҐUS-gf]iJ|H\DǿK Rɟ3$!Ex1N{mES} =kSTTT +jAsU~ ˾UALM& یxPYfu&&Hs +@zڅX/dF@I$sE+^z/v˪c,=ݓZDM1_[湰M9GOKЋv~o6H/{H%Gᵊnחx9$lHk{]?z8@l$;=etgfB5q=f8eëւ\\m|s3׫ ǖ]& m˰cO2j3s" {҇\/>9GjCEeYERt!Sag +/.91*N[۫5:櫹:|P7~svKc.CiSS2BΓ08\|BdJ&7{t'd;~H)hSiz >@b^>@Թ'VN*c$AmD#RAzĀB+Ee IK+UzǙZad5KFS1~N|/D_tuDM-j:2d'f;\BQ;do*XІLBǰ%92ςhS!oͷka7-^ +C03[ulF&1 #uϔQ076\?6Z.Hn[9 'hPPӦ6KtzwW]reZ?Jcm\ckQ6][ݾbmpm9VdrQNun2 u5ۚRH)2N#KYxf5ʥR> +,(`U`_<Us`ж`0`0 7NIciP/s_0bg +T(TqEOys,ѧ;0zIA( 3-揈 bS-.kI['m @RwxQb(n.riZDn; +qwG\]X? /i +endstream endobj 7021 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7022 0 obj <> endobj 7023 0 obj <> endobj 7024 0 obj <> endobj 7025 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7026 0 obj <>stream +h[Io\7xMs_ CfC0- bg2"V,6M7v^f`ve,6&R^fw{vǤuŬ4 Pdl79 +,QmʶiGwV|U2}6.)y` ;z;5L׽1ifAj^x%DJ'"}]#n chU;b!aW< +4Ynu 7Bv Z%EYWJYOnW"p=c* ۉ+vxҞؤ_@ǥy@H&ޒPHUuzQ +͐b2V.{ݯ/qp4ݲu(mкM[uD`@۽}o_gx..wL 3˻#6x",X* +i97*,uxxl )W:|B e9bqVGfc&$Hxl`؇vF8:ʙNI;LVї>[ m QgVD[V8(;BOo"hqoCRX/Iⱍ$,FPq˩4GGޏ]vn3-2 uAqt "5V9#f7bL @FEãQzFÈ YyhWO}yɫR`:V[qh[)S:BבY4ܿ|蜇/^DqzTkO K<&hHq?Ŀ?XP#s|gxs ² 576sP^E(<[ZHB2SrCQ{, o/{פ[8FI+xuM̹ɉ. t4e>m2b #iAT$o("ޖ A75:b&ynJTfb|j mVbڶ(Xq" I~HiI)>+6R曕e7|f!%- \㠞5Vlu:D(#-1+֓;r IL"l1YRREY;ꢅ`ôL7@^;Kymp?mG(G1!%6S9t4K8^ĥ=\1bDT7ͷȽ&=&JZ?n;Y_>T?Rc 9( +KׄGz(/i?m`)JI/ޣ쫥 \)$ %R+ȕħP+xOzleGG`,f qS9 (*n/C_ÇOC>sl4VL+MŨ_z3grƷK6(:ToAx-#E?7[҉ h*{7 t =]9FO /Z<^ele}mg{֋yt~%fjk')yxO 7VP‘8xDś4.:O H.[^{,>hQZ:ziVM0^Yz(7]wuuى-fVlZ#{\C9]v<|m};~|6 mtrӓ<}|L_:5OLd;6E)?C(LP + +O sapҟLWvR!Gƭ|[Y_kh7$isC-$v0x0yybFBMﺫѧ]9O|{Pkx'G9NQN>Ib>zõWj;fV_P|YUCuklݾL>礣zU}P;d)??O8a,1R̥ 0 +endstream endobj 7027 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7028 0 obj <> endobj 7029 0 obj <> endobj 7030 0 obj <> endobj 7031 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7032 0 obj <>stream +hێ[]_q蘗 '(P i!îkX'߹rzED09pnW||}ؼ:d%Nf`nc7=q懝1>9`#xM ?-6v'*[+òAhu ~:P'2~us_:'ӟ# 4"z"6n=lPM lfK) Њm^09 $qn` 8)92dl xw3iכ_n?~B`gf(avV[F/W{ow~ww{ܯ^ +|6,0N +!])8$2;NCu3=hss6mo'llo^88"&:F==eBC{AmeNO34ȭ6JACZ;'Gyv6rYT=BʐǕ:\w] I faE6 +UIuNwdnED⠕]qk{V&0  h u"-Dkq,4ׄ@&w(6!P[&Eyyy5pyY??ϫϟ~Y%<ҁ%$*(=5Sa(Jc|E/~nRUuՈgkR[0J*PI%pe|I8mno8E$9>bE,flrtzTLLi]p6be!Rї +ֵp`n4nh%}ѠDgSMTЍ ++j/*#IIs;AѴ[A[aߛu&@\&r&lZvO)bࣀvOIDۀ:1RAb ϧFKx2-9[As75-ǘtۑfu8BZ TH'WJ"$%\GKh,giٝc-4;QFIcw +pnszSz{țe#;a B?,ν\v@^ZK3/L4^RDE1x$A4AP^$\!?%;yB&tOEl(5(0DIs8ʫpqQ{>xx$"}DhiE?qQ`%P'z#Q"v_Dt +k ČGK +;謡L,bG +;G///OFtW +be|0kM/R~!5u_.E +Dz^{o^d\,KFXݓ\=3* +L-E( 8o[)Cx.+? WpݱVޖ/[YG9jH zۙ ^JfŢluO }:e֕(nu`j2gK{>>/jP~>z'nV@Ar0HoʟvߟԵ`w]E;Z(i|8i }<jr,QBj,3Rj@6߃Hk~<Ͷpȗ٢*fe-ǐ2kuJmiO32۸M!V +~TiV9vn1E؍9tSرO賡ynZ}E#iwSm=ª tFV\͚aUw+pkcz>Cwڮdޫ'uÙX̉ҵT򐃊~Z=7&{y4D@K76"7ScEU4U;B=1ThkjEܛptS-,G泻nzQtM>5XzOºǬ +11ec iesAB"UԽb*k/wKt-u, +-u,i^及G `L D;n>vKZNTk?EISB{%L]HeOQҫ/d3Qޞv{~~ +m\fDMCthv4"Hq7ԫ5!v`H$Ls(XpzҨF FpY&h=ЃPCzO`0{eϾ`>1 |Kg%2ph_0pg n|6l> _z> w>Eepf_6]Q?|>9fpfD,\%}> s1E_'O.lM:ɓ [\g?ȧO.=l+Q +endstream endobj 7033 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7034 0 obj <> endobj 7035 0 obj <> endobj 7036 0 obj <> endobj 7037 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7038 0 obj <>stream +h[Yo~_1m}b@@/#f@R6I?u5YBLdکWnWgۭ԰\A¿4hCZiJ?BJeo7R?ƵZUDJ {X]bZqwJ$F%,^4l:'ۿ:+g~ +YkPؠSUGs$"vVX=wwn~Ë +~"-.:Bp)@CG@*l6a q9k-/l+XCMJi6r|PM$=|"th^U'7#^? 'VS9t&(@pt? ynٻ7Z8|WjȒJZEU_ B%a)d?׻7]}{X*24{Ր) 5߬Z +@3\gmB96‚ZkL +ҰQ(amZHIZ\H{Ct֕1r148"XiPQxj ̪Ol-HXZ)4F'Z+C* p`2 *+հnqzk f4@ұ B4UL("pM2BR5\C~Jnȑo}f]Mf'/d@3 D28 \@[a,y ib^ иP^BG%PeV8!*+ +m.C=׵z@dEt6Кp: + $ht(Ёi\ϔ>J +1Lo4\X/[U˃^R!fz9dKy̹&TK RP@ԁ *\Gގ9,5(v"!m }M1DsgLz,k<Sf49WRsoX!0 g|SÂ}285ؗrվsw 9{wcphHKެ\ގBi\+#ڙGJpGvTߔpT>kV{{kVyj{|"A#/K]=CY1Z0 +" Fb):lhbܠ_%Db{,#= V۷4c7A< @,S]L=A9*7@1#.+m䡛,vbn+5%sJtiФ L h4>fCFGU~v6͘ H7)Mx[8BZrPzV9ǵ44B3MQA!(_ >>ԕ4k6sH+-[Qx9ZZcУMaQc^ }d_N(c{I,ް m%%ba qNH |3bn =*| QY_WH +6O +ۭҧ| KO3C"7i5`|ӍxRKT2׺}%J neYܪpɹ5;f* P3ֲ.1%ZvN]q5.Pm怶i;L0|;nAT*HK:IR-|֤<]RMQvcai=}5ΐ>d]^[IAWmA"{ЏcyT̅vWV[c]]]|e%5{ZlRPkPd0 }2leJ*T(i*F[L + [T2Mp4XCS)t~XEԦa>ՠeAwu9pKVւO( sN҇oQMy钠UZ$,Wq<ӨSl$k2POʠ3:]8z&z.['mljEHg'S`ۇ݇_Na&{p + dp0ܾmSؘNLίOϹ)%wܞ_NQw0~pu?t[FriPϋ''' MW4&ܟM,aW<}}x½W<\<$П'GOy} Q," +z>RЄ:ф}EhhB}I4@ {,K_l~ꂏ%X wP/"l5ܪ]y3y*;3yΊ!|cOmigzZ_k_f B%Myi]Vz)g+*!UꮨNMQpxbrq5H W임7&Ctr#ǮTZ+³5U 2}WgڶM2r˟^G8[dG631#b5e6PYp9m?oN{/a5isھ9%Lg>d}c"h-w ;s̶7Fv[5ݷI+=(d#i0o +Tv.7QܶkTL 6: F3O ]Zåd>(H- O>Gce,k 7ׅQlxV;lfq]}s}rrA?Z|&'7 +78za<>N*De*x#Lȯ a}?uϐ&ntf\ ʾ #ZjmQB>Rlk|| 5Pk}i|L*y|'}oۤwC?fOF`jiZ~U%8y;:fMS'Ҋ\ +=C!}^ʥ&SŹ+h .LYI#!QS]?L zO{A#VPcf +FȖ eMfe;ЖCY,6 ir&ʺ?if*+mciaSLy3h|5ua=DBḿo%tPʔ ҎeX|mkQ5^.j<_cޢV\˼e9-1oYcNfN ֤^UM@Wu|>6q|̞έLfb>6U?925sl-ܒ%1PGfTn=|mYn-*Kf>3P0I뿐F'qq +0 ` +endstream endobj 7039 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7040 0 obj <> endobj 7041 0 obj <> endobj 7042 0 obj <> endobj 7043 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7044 0 obj <>stream +hɎI^_G{Jg񌐐@Z0U=yX=A@V2"/ow_^L728->bmRˋnݼ,P{swťe~sBXAE_,@!Ie׽nn8NP/A;4HA'Zܺs¯q _i'cZf='d]xݷ7;b?&Oui<}=^2;3,D.ggFښbs\XSKG.]e^6 D+\6y\as#rs]_ky<2g? 30^}w?M~ڥL_zWff(z20yjOn5XN1sgk"qA "R 뎳 #L&(6kü^0zs\0T5 0 y=[ [4 t/~C|*aBY \0su|FEb#BbrVP(Н'%Ԃe\0 JP)T?elUAbO|ERZv isVК 04rʉ˖[#n6%!aAHK$H .Oä+7)Fe/N&=ZbҊj7dua.IlR `hC3oXtu? 1Bo!|Bs3;<5D:,{-2, s+})d*在V-xx^]Kް(GHd9'ё)R@NkȨlSmAMfIK]n!gB5pz=qd/h57/s~߼q%}ӧ{n^$u'o>}KrO_o<=UL\ࢸpE11_#4Y@:M3Da&Hb$j0!:p@)Z-F;PdvH-. +-, e<1{ RŃ"B:ֽp6q9*I6y E#넌xpY`@!Q-"[Y1D?EJ1Vp,@e5DKs'ȼU4`n0|d F 'j +#[\u3CH+L gVVt㣝!L3t|BN`C#zpBjaT3E6t`G ɉlb{ƎP~V[hwlϗ֘ @YBrQZ<3l.N(At!m4V`J,S@ Aؘ~D?=}uݛw1, +ZfeH(qB^N(+qX)#BhˑT..vR:ջjd#D˪bax jNŽ@G"ޚVy@z]71bPi0 u^US;1ҎW"JmRE(u|6Y[ sFa)QS@Xj M& D4ݚV `FA ~iGTX|lctt +*z]kGU2=>飖zxǴ찇;s+JZLuՌUcnTTF3Zۛ^~56pb>k䁈dΝhS P'#%>b%%[gImۥ]$#t ׁ =:}' BqS鑏bvCrٟ#[0RڎvyE9"7bc( s7&>EIN*,RGGfIQ4Cy5t#o9skF+dm *>̵OuIsU]:ύ&=uGmzYլ™ FYG[Tx,$PǒMz2ES iȊ=[38a˶ +^y8J,@$~u%XA;3 aqJKS>:iHIX8z*>nui~??GI%=U˼Kn!V1X1{?lHܛz016Q,+[ᕀ5gd}ig8Fܛ Fl^0*xF!>&wM|:] \߄)(Y8.}0f3U#cN +m5+۪˭;A^i*0[ԧHAcZZah4GkBh>-5'Ɋ\5&a1Ә_iigQ@fKD(OP}yS"t=Gr.3ѧ\r0ir~̣Xx$_Me$MǢIv\##[9%ƙk c>{茣T֓pκ9R Xzp T L߱jVVw"\M͞g;>vBmׅڝJhԃ ?\zzSg _BӸqY*hۤgxBCO;{QD44/ikx6q Uϐ+ arM781,RIctFHIT };#”fXxRӱ02墎QǜPAjޤ0ijVeWTpDlZRsw&8Ib@QoEGO,Zhr͑5t)*1 _Mǡi faUHb7HۊxĽ⬰ +)fD靗+eXTvIs?aG呋͑| 49{/MsH ~LPUiF6B/+=s10K'Q + m__vb |9X#JC3[.gC1|㏂(s +SǷbޑR Ńvt%|GlߵnC>e|LVa5T`ːWX._XX5#~W`cj~:[m'y|[ U{\]ibV,?/4Q3{>92xlu>by _Ftkh鹽xϺ/fŞQNʞ _ÂXZ5 1 *]XqKf>gSēPF zY|bxbևontk !sYl(̏9 Ć|{JP3 mM>rS YjË.b5f|W|ݍKc<S\)GZs#Hw9#FKN'mF'[@!xmm|@-|m +?r[~ 7যkн|u4suiy]FM4^k6k>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7046 0 obj <> endobj 7047 0 obj <> endobj 7048 0 obj <> endobj 7049 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7050 0 obj <>stream +h[Kϯs~>X699H#`eÒ| {fz7"iX,ֻa?gnrݡMm򹘜fM6Lovp4ֺ8ݞк7ֆE72uZA4"]Lmv&i z݁Z/ۿz״,K,穔hBUcֻ]v+>Lam +vl0HLF3>1ΉihTRQTUnTF:uRV0H~*ru2>&KkuzpwPK3͟Á_)+t]{o'wm1>aLX$zR +NoEgVUWqr8/Ğ}o_;;}ͤF-ǁ?Mhk)5Xt쯯_Ͽݛ|4Ϟ=83EǂD0OL5.Lp֤'v^ہہ޸}D,hZ(hEc7ЦWbo=HO"sඃn19cj,sbm`jrlTԥ3w5en{39b -za'no2,'h&1oM`èlRd@#M3'!G^#XO-Md9N0ojFluAۭIoH,k *uX 5 +A#M @GheǭRV .7#rӑXF36hj*y"rl.TM +EH 4K+L?k +!̢KG'OCP))-*ނ5Ms3g}:VMdk'VTO5y.Gd,wbĊB NTXrԎ}-C[RUTmP?-A}YX`*Ȱx|`gKb_C^V"Ez9C*`c&M%bY~[E`ʒcmXtD<8ВY QաU luCvbD29ik P(K6${|M<1,)> Y; +wq +VnN*keN EY1Z鬹WZTeh0˿kn/RڔIK NnORq-bXK; +&zwR0zY~&W]{I"]:)t٭ЈEatRi>+U~nr.y' ϒ`xi 8vH,'5I, {c%;cB[G"H9R]}EI%9{ш/O.¯FbL'4,1jX g2c!ַ]G3|yʇKdhPNО9**Fj,)i'J~.g"Qős2K2*V'UXQ kËL|1w,Sx?A +A"+|мQ 9/C9f/ QOz! ++ b  BCTCC}<g=dBtnz H\`o9iO ?"EIFݿ>m?.| D)/cAً!I5ƉFR +_W64(eo~>Y~~?]ο_uï-[Sqws>ɸnBfFJJGl=r#j4_MG?/aАW؈*lO?DJYGϤ.β^n3zKWJgE~ )r#X<^I͟(?V\I>ӠO48;%׷UgḊ0{5^9ޯ›@h7#D$p0n䠮DX?~I+#\`J^KX40kE!$;w݌zOy.aKNiʩuNS]pӍ,w`0J0|ħ}%}>Y_[_e\N©i4_ۆӸ4^pS+񊯔{@? O'#I $n$~\?^<^..'|+nZI4trIwm Z6pWv7+d)OvD9WIsc_sr#6ˍTcQf=_I%%Z6I{#ܹ|,nVZz\y(U%m_wQeQ餇Tӄͻ;$5rd[#bE0:6!a=J/Lej^RWYՑj5! ,!`B +hWdd~[sXop8p7(Y~ *#uD^G>/"78 +_OZ wpGr=!ōΩ+|z [S<]#.=1b2w5VM{2('2X# t8rw_#ՎHw t-b l"&*3;`+v`$ +endstream endobj 7051 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7052 0 obj <> endobj 7053 0 obj <> endobj 7054 0 obj <> endobj 7055 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7056 0 obj <>stream +h[Kϯ賁o N!awk(Xٰ8?_Ulrfz+@XbXw5/v_woG3x*i?~Q0MvN3F'ygٹ)H$H AOtw^˴$k4Zå:' E ׅf썊t[؈i/:[i.Y9mYEc:_wwl&elyR.朦w]ї]U6^TEEp"`ҭ-^ewjЭ@:oyI$"EiY`F SP({[A)edg^i#޼w?21ZO_{BgG'Fpim앙"4?޽᧏?i߼'(\i60LN Az},#`3+Ķ +l /X就6rjNP^Nv5_I $8Xv#|]AdMK+K N*FUcNZGo>2:0leZ AqHj wPӾ +l3&^ TAc]WAP`r@3@2)*@x =miG|wfw}7ڨ<)#%ٙ ، `%>l;Tc:6)4i1 +L$0P?%XψLh2@L <MN%D_ &4Yp6d_wJHw6G-Mu]->F~g0mS0 P䡚m *Ǣ`LULRⴸ.\+)=[EJ7jf*0"X&;AC>Xɽ{8po0[אe6),+1!>BhC'ȓ%iBgo}ImEp2-6EJJ겷3Wܬ]G S|H$fǬЗ6B/F:W͔=PSB5NJakJNҤ~H|^d+;jdLBɜ71c4ߊJUsX[gـhc:&N#Ey +ζ4RGD_!,P력B'Eg\'1 Jߗ΂Ħ%> +^PE…btQH''Vh]3Ų^yb.=u,^nAb>~fGkZytvϪa4 Ob$ +,Ebkn2"d^[0G ΟL-1p+9+9)|%jFt2{x_BQ2ʹ_jra5_'?RZ"w#u1eJ!rLguVqJJ!ӓO\Wͅ +n>[t)䑌2/Jbg]%*h[YjT8{Eys!g5MȺ5Sqm cZpJ[± +]{Y5] cIJc?e5"*%*Ihڬ5_lwÚS7؋5tNVm)'\Mj/q: %"wusS_48`;[nf50':N}*4uD7H{㜆\iRC'|8pp9h$97g zh伭nXG#t#5MM=*mFinN/l訇@m oWrx'Ia+I^Y +-<G/ >'W3$Wwi,4c9e +0 t5Ks-0O +ssVʾI]Tn"8Go u*쯄kigm4>S޾@'iGT@-,!J/1hgxpizh6G__k4\ ܱ vp%6 [3k献kߗ58Gꐩ"$u"YD"_Р* &gZ]tnrt]svv]e%:3|GENK5 l7s!X^vD#:V)H!W8Pߜ;bð_Zi륩am/$N7-?4d7}@,$#:"X.&b垆XʙQŜeŕ3 CMyC)-3Y&}@|r0X`Y%for=+؀譤A)>fʐtH4эH~IrAPӥt"3dԡ҄]]Ayo{HG? r%( JA^4z], JN) ʐ"z*M=\/zz7pÿɿ7[/mɎ;/MN^Лܝ>Bmj$uAooFoHq jAq-[CdЏ4Y7{ql}HZ $ޘ7+ȯg5 +Oe]~e/b7*$ +endstream endobj 7057 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7058 0 obj <> endobj 7059 0 obj <> endobj 7060 0 obj <> endobj 7061 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7062 0 obj <>stream +hn>_ `` Ch"5vO=d+V0Xd$k.w5y\jPf Ҡ}I +kw9l#s'q'Sa:WElI mU;%oJ +:Xo4|5~UyW9B\aR!z9dKXꆢy H44L-Ae~U?8K'I9 jQ,REö-[jCmlhRr1v USVmƭѰ)CDb' dpdkP}'7?_X#s̲er$pRL ;6ɺowMQjN@;xOX'5[oʭ”U;?K 3.%Y gicS-Bp$@ϗFWFWz6$&SrL[| peҢII8sc"oT |HsZ2q`Bv|w<)ow;JD˂PM/vU>w`NkEJ}vQ6췵 ن{rh::puokwb?u:@Vj}}: F*m ̙ׄ7F~;bN뽚٥C6;@H/exmm ,,Tg|//-wO+ !_%`gW0IU)gu2*;ɇ!VXdTrꏀeLu)C:ye>"RTq>>%rͰ;haHpKdzrȉn` + #> $C(>_q?@(Te =Г QLaPo:X2s%6đ#r"a[B ߲wg8mpqHїSs/n7M\ݾmF-iu弇Z09~@&mrQH1K)g5\ @Ҡ7\,{5Chٕ^6cm[@E5V~@'ӬؗªGrVL ?5ݧ#2xsˮ-V:G|'іٱ(  {-6Ίكc XL c%ej'`@ձ-c?]k}; nV1bb.!j%1\F,ED0[]AED,*~C*= :A_rf_Yҙ |mhL+c[_#FFrZIx# /F$ɍ#/F?'#y_ +endstream endobj 7063 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7064 0 obj <> endobj 7065 0 obj <> endobj 7066 0 obj <> endobj 7067 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7068 0 obj <>stream +hn>_gA N 0ʂ%EiIllvWwY~txuYEhKJ^rJk轿@߇']ի#n4Hp~Qz4<-8 N9~ :ݩFڭG=`oxZOj.0ǤG] i2>zvI0yQ֕RS)yxx:xGƙFHt"3 +D#mA_XL*;!By1!h&Ҁ _y:U^rQ/6,&(cyݛrkk[^y} [dE|Q@PQZ8 ?|>{{).O@p7>ø|B`,! i*ogi;j;j[eB:*.A+ =֑tMڰd}i=p9`;zGcTʚHmjTt0 pQـp[ fʴA6a=kVhK熡@TaZY 3|:z^ FxJXPv4]@mUa)`F< YiB88v-|9(SI#/Djxu&}h.DCڧd:"ph6,Uyf2j7duA$`e4al7,l$f$q'47!a3-ldσesQZ&ZDUfRBr'WH +m`q߼<0atRA%wSD\>8 |`8 ƀ` ~x8 +.Tm"D'=C<@x0j .0_G&aM'2p^E$Nŵ Y#1}p 10 *0ܸh;@_\'NJ|'T<@ d+Pe +ŠVWpH'H3}-n4RGZetx]& }cy` ]1"$iQsC,b-Dn_o)O?K,w %%d ګuw𣏕4ckK{-+A}z1,RioG p_ag +8cףXmQc IFt5DUFV(_;:.f.uulVSz ; }:s ~vs;;^exlo,-;'{Z[@v=KVe\97XP榳4ؕSEm7`5hP3O_BEyq{0O/nXX'F1=i퍼XNa;$݄o$7%U}i0G=˒扡o#\w;Q4ÝA=%U)#n.@ ]B׾I=Uwԭ0͊1;K3TB{E^aݐQxڿ,3z]ڍls\aQ]d,`E^lT- (=2p8'Խ̵˨LUå¥q*ܫF"JdAc7r~%!;* R~ IOc0 ޲M{~ C2BڭWjqi9Wi%\'T i{!R \3DsK.1Q8Ҵwk]IO%Z$JS=wLP2d\\ +oUl}U yHM>Y~J$]crK2=ٱ骋Ds큕].ۅ0ޞERUGNtoU>pټX߳3_[Z.&ˡBj[L&q3KevYC̰`ܲDUH?jZ68;G!g{9^7$}էQ$(Nus<+RM\WQ{hE0o(ևeӪzO|˞; P#b=GO\7y0[uԍ!`lO;W#Oc2|ڦgj\Za{=ӵ0Iƶ9f-pDğl) \1'Ax ys#, +endstream endobj 7069 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7070 0 obj <> endobj 7071 0 obj <> endobj 7072 0 obj <> endobj 7073 0 obj <> endobj 7074 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7075 0 obj <>stream +h[K6@4C`rHv={wz /؎w~U$%J-i+1 GUo_^_Nu׷IKAx%)~qC/T>tï4jQ;Q"$7QKW;%9*a ľVi|NTmK;ɫ",2=@h01K ;hءJz>HPIKΐ쥻sGIp2IK!OP/WTao9.*<*:rTYHs4"d0'k&-ub'I)u†b|=v&>zrJKy=Z0'ǑM&i6A i` +;v `xuO+~+JZ;?^i%xZח5_o>{w~^߾~v^o|wz bE{s!&OV]J§"BN/šRd;^>R6\6\B9Wʽ6B^$PBFo!u'tBYi!frԸk" t4)[Wy T>4IlʠPQx'5T^sY+ã* Z04Hc[ Oj!2c-|m-N\P\9 xQ3'ҷ#GQSu9z?fFlw)d7VP F" +0l:TAZa,[4+&D&@k6B+.Д˴TV8Q3"+ +&a(GٸZzcR"2y'L<&LZ.Qɑ!}cz?,(\V +!\BWhV1 U}b'b`>I=j 2U#rYlKMX!u9Bb5 Bя,4g&, +tXTEǚ:4&4jB~a +aA ACqFfJ|٫WG~enyuW`^MGF1 + 9"'HDFfs&>)V̉-\FMeOpԤ*㚱q4tA&O*`bv;fIiL ?_<:4gYlɉjWZ hMJ?a@NYe53d[6r15+mژکޒ j >#a!%91=8 +w_d{e^'G +y.e_!$ ?P[`]kXh|S2lKCbYɬ|3+&ii@3~Vv倶}1f` r#nq`7-؄V.!?l lbԱ1sTdZͥҢbCZibVYk@_PKxc 3hݓ:*)U!!nbRE@2–ͥŲ>yi,V"Hb%,axtivXʖ`Z&OSb_Z},ATwqe.I!15w ,[Ɣx}b[GURp+7H pA8f! +ϞHhZ\wLɤT_ 9 +Cl;/T=G>g. ‡|5uqcT^gѳ(Ɔo6]yϺ x= *ت鞬eɷPa2}6pBs4kR=v-#F{/TxD|<06 +)hڼ׸A?3""(mbU\8|7&ñ^},Yd.c,sBH9N7aTwvE`JAi>2x jL-C9^#oKL&}E#d N."tgJU99\?zݼo+dt_=Fs0n:lkP=88Q&ѕ8o@le❒q1 itC+f& +?ޒRMt#)@1KG]ES}&ص9q?$X,5_gL 9!I'奛MrPKÕ±75|PؼAX.| 3(i$Iؘ6ǭyMń0OO,f dҹB;޲ +&;,p14zVŗw|+8~Ub^*9M=ܷܺ]!`a{]6#hm;np\6z˟ut<^mo-ˉ] {E{>М:6\zejX>lV.R>\֮|>585w.V WkU-m3]qFL"EDg\Ι{~3/|nٿW\܃nv.]>_r_r4-dw^!Mwel^fwڥM7콷 _^4=2xm޻]IdDM|-Qʥ.ýXܿmRM06VV-B{@V_u:OgrJWl/^){=_ԓ|am)81/|ast4NI/kģű=LiiiHE/q DWxjy?wݔ|wS>%Eȯ'࣪pޤ)O$:FP(z=sn̔yS;o#ػ~/g|OJC5]/͝L.Hz?/"_I "oK7\b> J~|3=6+.s._w_$GZˋ/!Cƻ.߷JVj +q_DZ7,፰iϿؠZwχCJhmOzWڼ#޸IkC(.vu4rHJP#5uhhhta`Zp!@n__;+Sύ3 N[WHm@]%ͭ+.lL7wX/aADhآu򄵽enn_6ڍK p Ju tnH;K`%ݐ wXզru !A.A@pǏ@-rn_'O)gV*6_:j-Ju RN-;a`Ϸ]s0&VgyM>UVQӾj[ +DF,+`0UDa])`;褥{X:X:ԔWsVt(LIAr~^nMؗvpK`lU\4< vqhdXmb%fWbl:1[/9cM ۪Fm]dYl-bZ  +: +endstream endobj 7076 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7077 0 obj <> endobj 7078 0 obj <> endobj 7079 0 obj <> endobj 7080 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7081 0 obj <>stream +hޤZIoϯcb/`|pB #jL +$皟WZH _oa}vtnzź]>mN~0 +O?WK}Y`e.q\9)弼O\:v_NZ<| 2/d 񯙵P. 6W ƸTOte2PY!p)BOǭG蛋iI 0 +b!6fx$hd i>Dk)aUgpgӡ%յE@\ +&7gӞmQ\vpF=oo~|_޿y7=}Cݮ@Ώ|up`EJK&v}G`]y#loND' 20P7+L. +EkΥ7"]!#!o"쁴gbs#waEaos|t\] \M0q4ł|GアiJjWɮd&(WehkAo13ѡcH<i }+8CG7|Ǟ;*O($#9d;iv]dRd`jiH26H^!SD{)^ 8;!`i(Ѝȣ~ra4T,8 W}H=V}1Ճ?P uZámHyKd26|c& +darHr ٭Tnn\ +l@C:+h iy0*] +FsX#Fu#*ADLg%S;,$6H|ƺ^("$.aXpV +%`B$(>+*3hO.~!a)!QIDE,b9d7Hy*X"KB\WS! 489tbDC z +A ܳP5ةÆ^<\ ?;7빤dQ<+xH #jjK 4v4#&d&Ewӫ7 ].&fW1Է/:Z50IþUˊWg`na%av7oL[gL-- s1͙$Mcɞ< +<oySRiWsm'՘(t, ~?"&,Rk507a~D , X*E!A7h -ԍON!sx=4vN6(ͻx[]$6c 0Xo"vŃjib^Z"OӲ afgIO&m4}h}ђk-YB[K&KĐlOPh[O7-3EI^X#Er,Q-J`2@Fس%c*$d 3 8" uL%mLNhƃF)a6r m*]DMb)EM'3=!L J{x,j$2J{hOc!+c;Хڙ \fl,-PIVb9Dܩ 8jVyĬ,d0 лAZH5,N4U _j`<8.ڡyכ?Ք*\7fqWD Ejd<$n2Y՘tH52! SmZT}SX-*H& OE1]apRSXHnYgO;:Ȓl)&\80!F .0/(M> KR&v궂N:f*J7P(ay0`m>IHf:X݋=O)}bSX H!UϮd 2CT"&&F +OJ%c1B: JB^YmCI ` TEπA}[-RKc,Wt!\g'"Pw ?r.;,t!MIK/dz3E2SX&_Ѭ +3qs"HVB֡$^I %iMci DKZuj&gb{ˏ75GJʖTi |[G&KL8xpùBn&)Pr(zr3'WV,V@VԶ `6 |~) t=#v^BcY-c35 Ⱦx5R0 h dI  Obq _q?)>BG1go ,t3͞4SR!u; V:qU.v.eEeҢw7)>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7083 0 obj <> endobj 7084 0 obj <> endobj 7085 0 obj <> endobj 7086 0 obj <> endobj 7087 0 obj <> endobj 7088 0 obj <> endobj 7089 0 obj <> endobj 7090 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7091 0 obj <>stream +hޤ;IoGvw( Пj_#;Aaf`@Ɂ؎sO۫&Gv Pݵz[?_po~{x뛃} l)=|sNs>mh=w ?_ϧ [pFv|dwx{/q,֮z<߽Fҡl=61v1ȞO^yW}!ggX5R@BD pM @iN֟'\ ]@_%"#ݨ@&"dqi 1=IWUVX.0V\jghF}pva۶{T{oOw/w"{qX^,rcxQբ/2y/ꍜK9G&HM{l(o/_|;@JKO'%Pj0y˧_?ǟ>}yO'e 'ON ,h.(A3 ##s)=Z +з LnOh +CO`!K۰SV]a!Ԭ +|KzF+w~?ێvv{0q4{A66a=MڄՠT&9qSi2GpSjP?bC -NbF"n<iBG܆D"ItBh#x@F*ZNZl{0qjz$Uk#X絃)-W p;R& h(+n׻|AλBOqf_=s>A`kn;ӠM5,EFQ?=&ē* `Db<H#+2;RLb˙*=z'a;i3c6ON<MJU  +}֎[T DEB ++@>x j[LO?/X5@v,,$ =yBt,e5 h~\&?dt \ogNt)錗w@8hQB +牂y\&D0-®ƲPeMA8TGQmXBX@Jb:GbM"IVU5 v MnJh:!2`̕"d,e!2f'f=IQW-÷Api4d˧xĴ= ;iWq{_}_Z +w<A@&<&mO0sP?" :S1g_{fYYB,1dɵ`ǤDtbӦ]AeR Dq%`9p9ֵyˈa03Ht <O޹2tFSdDʏ5>̙Z1>KolN|^Ϛ{;,,H?6Sw &Nwq&T4J˺j=`6-&bЛ5ūX?PǙgoRS6OMER}ɐAAj0dl '}dΙSF@sϐ'T40V\S%ۆtuyEկ(:T)",Q&vh,&^ @Tz=#d4YC,7Ԣt{ᓸ2Fw*ơK \ѺY6oFsp}0ed +? qO'G~. \ +a [GObա}.:ĪF#~?-MJnZ:(SVg>oc9ݹAYï_OhIvhWYzF"[vӬ<@gRkUؔT)j@ja]|q6_]i)E"󧊍Y Ars^wQ#y&5 qo=xUƉ,*|ɁYw:52 +rLFtR6%rj,j 5Xq?c6y+$xeW2S5#<$f=)w7&QLRw0twE^ҢƤe^b#@фk8[cqRG^ ax3"Lk x{Z/|qgNv ߍl7ʌ݁F`1|aPFy .%QJӝ{U}O.e!]ְۄ3OZr5K#nBb ; ;FQbY1نc᠏Y&G,:vxXB +9L1(olA|-Ϝ$#2Gl g?߽ҥ3+:nt Xu;XVR-2W 9#&LQΖqc ]Bѫ>UT«yh0OfJ2e<+w(c{?'0RY>6Xu< Qt 9 ZlNU6k2YɤLk\zf,aވ_m-Y~Jut}!je5Bdl FjXANefbBJS9sqU+a?ȭ- Xh}M?* +乚0)O \)Xk #E`T.B: E+XDQLCy63 d<\"~bD u6~9zԃ_eX*TA{J4L^A5xrUJzݼ ZAk6=(V$ydIrXZ1>c ++eQ 4?^HgY +S'#q u|ڈ9P\ѝC zWB e\ MNʦo>٤I8`*/{Jh9~oś%UkE5][~9[k#qmb +,I9!aL0RngGsrAx#ʱN֚,un|_Hg|f6Ʋ@gMt"qku6S]jbyn Kh~.WkY}^vk#ђ_9u@'?B1AH#'pv>}@'ψո-3 C\V OkoN!v3À…0p1&XUy1ȶuo8~Wkk"*!@=Je-z m8o?J0U Ϗ6nDoJ*2]+6Oߤp\:DBrͧ2UW_I|AjC&g qGOs:i8)@EĄj?j``hpwz0|GGQ|Z*z4P>.:_~ufdG͙Y +6scMV{!i,hM4Kw@jdOtWr1=`h{?_0@?'ZyB^_‘:Ի&i:;a/u܅=7&Ė?Mo!Ȟ\OƄ`VK +endstream endobj 7092 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7093 0 obj <> endobj 7094 0 obj <> endobj 7095 0 obj <> endobj 7096 0 obj <> endobj 7097 0 obj <> endobj 7098 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7099 0 obj <>stream +hZ[o~_1OŪҼ_ +A-AںM"y0`YɪR*w+9!<$|̳tyxqxv~'5_,H~>0QBN !RꍔN/Hi#~H$7'++1;]g2k>J_?NVJ 'x6-46w0;M.ىm3Jpp[ \iD2-+dTҴqzHrODj{mm]]hAmVA$[3Tަփ]hbvx+DVZU o0͠CbjvķF;U $k󱮭M^F, IU1l-4ԿãgOomu{dvJn"ߑonfh-tSBzf3γi74ѥF26U`W&& z'MPHhyŭVy.%#27) 65A)t;؛.c*oKE-3}X)NBuo'V5Ml*5Ê^yՐCP]r*ش-{,Nq2J6}I R( +Tdp #X]G@tܱݜcK@FmXuԶ6Ģv&yФbZ1nN{Xl]Mje),c>A|yAцO-G}zu5 +!`5V?*Er5zCx*-T`\?})Z~L|*2}m>W6< ;r&Cy(Dq'F4?59i\V4UG"R$^vz +8T9)\UREgmܭ-M5|qTUV +jpΪ@Hlkf Sk[fhl*Uo3&U q<%Ub_Wz;N.?I؁XWrD f+渢 P`cD-eQ=K<adǎ<h0=d;뻡]kȷ0{y4Tp;c|v>˱'۶<%QVڬ؎ +.TiCǐl.J-oP^#j b pz`1?ΎV5!A/ FV¼y{ݎ:[jY=tp`Ff-tZIgUc"fUʞ{.kTw79^lNLtt 2cV͂cT>uD6tq֪R׽ucVtw/n3N Z#'3U郮&ޱD7D_l=spvV$#Y9 +tt>,2z;.3:[n(Z*2PȥDQl˷:|o^f1W<ɵj$S=k JVչ V>QﶵĹR.dyF1D%FJ)^Ԅpuc/0(EI +6:XP86H3Ӝ IuϑC2'3GOV왱٭zLڨ^PU'bs(VXxN)}ZXCxOSN2U_1Ze|]xr%^ gSH`gg7"G:Nu5U{n?n +<&[fv!L36o ^9pRLG@(+ +=g{ʏۋtsQ hUG-@YnnBH|+V}FCtg VcA>ʣG#`ǖQ$;UXLsz6)wvWOxD6'3^^87xcJ!+KbcjsVäEycUtkiEqQ :@tzk"Y z0ޮY2('1Dp6 J7uf< ɤ).8]"!N[B' βF-m|f#@ϐZ"{L(fXЮ:iz/1ޠ_/828/o8A2,m?nxPX5Ny߼)@A8׎t>7 tIg^,o9nWI勨6'z{*x=tj7}d%>v@Ց(JPN{̺28x>z\]IM>:*|d*R brBcçW|!LTyY}v:<`b0\S9a{8n6oH\<<톖{ԙfj!dWkƴᝲ[:sgǁGHIJ;na;no}-Fza!M|kX؎x-4`cp,X576]ûd?mo3QY&+6~a $]8=E82$3jsH3{cP W0zߐ "G*Reݡ +֋|ӗwGP xNe@[=R4$F̋m3A]Ja…g((~:y!Bꤏ8qZD-dK˫˫.{,]-oy@1/v%qE(<  N+J4a( /U}}/Y +[Dla}APJQʬ<;Y+{my.6S>Ͼl}':qWjQD`Afn_筝 幡ͧa/NS>qwzήGAGT"6(-6AU|IW* _]=ϐ~@q(Ͽ}1*`'9ItX<D-qXH,ƢNXrI0oD\^m"В#똔jſdK9t\QPf8'z[ 8C %ϋ&*_ELPc.CS[5R}RqH:kؠ+L?(Y>pZWA */1O(&/XK3(QƯg"6`IY;"p$JK˳ g=KߍGYl-=P_> U9)~,UNOU$xW=R鰬Sa4k@4;pa$i]a@.\Iﬞw );gp3 #q ;]D9.+5`.JIEr5Q2Cd[:{u]7Ḭ5}sq/H>IE@6 +p46OBJk#:j򞍠{Vo&ju6#Mc[HK/4}[F.ge-p0<3[Ge S +endstream endobj 7100 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7101 0 obj <> endobj 7102 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv46198V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7103 0 obj <> endobj 7104 0 obj <> endobj 7105 0 obj <> endobj 7106 0 obj <> endobj 7107 0 obj <> endobj 7108 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7109 0 obj <>stream +hZo7_O8-ګw}ʎZnm%7Cr+NG; 9窻_\NuIKAx%)x7լR*],]|~&q*NhH)°]ʰ')sq3CK6a藋_]gLk߅`kXzxdy²Yfih%DqA6 #U'#WJMQhJxl 8ƹ=“f@ұǺQY8I 4-4ĿgO$o C#~XOud9-az?jF uA)Fͤ7Zˍ. dhVT +텱Q`60|:C!4P{`%ĉT$+ĆGf:dEta3vl.MhR(ag}La&T +$WI^zXx4qxTYn;?\Pʀ=) iiJ+u9[*vdkQ^wU9r\Iy]rE*WB~ ̬ r}sb+:)SNEAա)sVT)ՙYh*KODkqS,uzv_mq \`RedP)L bvM>[]Rz(fadj~{(5_!oY`BMJ6")jQ .g+ay{9E.4vF(O[غ!eI"vj[w54>eiϼ)³,BC,X̝u S\)gt|%rXW5:GSK\WOiQftakIc'˭!"p3f=pucvGaQRʨMg'jF[=?ژ8>Hu[_^/]d8yo;ӝuo59CFkIEÜPc 2n;clAq>{|ϥ DQ"qS:|ߢI[ 2l1/hn*Ꮅ6O"R4PO5lvuEMlavUWpÕK5$T6epMGKӠqŠ,=z{PrA4 +.˾g<.HA75W/7ChԄrƐ{I3xvĊBo J?y4%w1o_}B\{h5pTضGDA,d[ݾϠʗxkMY/9 xT G_/2"+[&xաBg +q߄⓹`|bOt%<O$hz=2vEtS m>+CF(\3Ќq ehE={C +`'p*(h죢RYo\L=2PFPw&/JMOY TPN# =[q8vF#)RcAhygEI4ꔿ7o +DM[+u*mGA&qv"kqu4dEʟa]Ƿ͡]֚/ql[c{yDPb"$2$U#?{ +4NM]Sqk129 #e+9nط$H%VtjگNԊT&GDo54S*!jGƄ07\l9,gDc[^W+iYo7勒8OT"\/(Fog=+,k'is;m]zbuf|B@(l #  +endstream endobj 7110 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7111 0 obj <> endobj 7112 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv46199V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7113 0 obj <> endobj 7114 0 obj <> endobj 7115 0 obj <> endobj 7116 0 obj <> endobj 7117 0 obj <> endobj 7118 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7119 0 obj <>stream +hެZIoW40ڗ`0N>!9 +(;d皟VU/CI!P=zW_f|yMvԹ?Ҕs}1~{cnfc,t>C7?qgclL(fw֓w -7-rX3h0t!I8ydl<"09C!KJ>TePN/sla(hܔc4;_kk-ӻˍasuv xD6AuI!筃s+=rɖoh~wM؃Tlr%y 7m&4Թз:_ο}9;}_aIFZPcy衍Ϡ%kt6C7z~׿<ۧޜw0t~ M ZgAY):XLjKix6\=>gyo&E۴qRݣH3SVPK `h s`JDC#0˪ )x$H +-LesF_R,2T%Sk +%WGz+tnUzæ<+lL~@HK%_|k%6p1uSBU0c%x#`8.!bOiX!zˆp d2DQΐCB@򰁰98OB03% `,xY"]q#$:rS^N!S9"erBi奃KV>!U&\Zdܸ5;' ń`בY6!4 HH q i6E-/wፁK9.xAUtO eJb1EPh'$W[^dUJ(wfD#QR5&ztv|6&c +{']29K{ؿx/ɑjO ܰI +BgwY@#-ItFRopt8a\։q={kIFQ{J=;= xN[y9f`6xf "W@(Kfrcv9yEvO>ł LQj6fwzvW;v`iw|~DNT DxTэR#f=7CZ?jͫnaFBaT;0^s5?/CfSP3J͊(ց5}ZASAJ36PyK I5&E*;rLJ܁Jʼ FdE2RzXKw dd?ӂjsc*}+>Xw ʹ^4RZЈWXʶXÊ'z(duATNcN! 8'n\L[C\J]M:d?N/Z@VݍL6{1밾i3y wpd<Ԇ&pnQs !LH8 nfs89Vt,usF52< !I/Z q’5`m5Tl Hg 5 [62V/USfX4jV/p7_e A8؎%}frܵ0El=9~hHL]+mWlϚֆ a\}``~liW05{!CPvCʽ; \"c `dLP{ E>S KoDIA=6ic'EYqt,Є洛~(QAr?C5Nܹð`;6ع=$!p-a.3|RAEy&IB{:|";8fta`w $%kO׎=hr:{6jM`a oO|ܸ"Z]w=kOHkUZXA,NkN~J &0n.sUS}i)to$Cہ~}w\mb0b}PvPgusoq$ f<ٟ>.g/gNm61s'UA5PP<0D{ZFe^FFSVɴڑhǏ]_ph.23W8~ +:az̊ClfMeȪ_{% +wd#.|)7e +ʵgO섀lK2*>ծm[o#vޚ'uw#|0 PɶOoiI:xUiS=`hSlMGءC#M嘔z=XdQ֋I48 kqǀ $ٱ;XZC bhZl $ x֓&|\tΚp\^Qyg!PsXUfblWR= IƠˑvm.{ȭ({{ЀRuJGc^Us_JJUiga^v;C_.[ވz/(>NE/;#^0~vz@&)ջ=V{h6/W+ oi& +,(z +,_*2佽l>>?\1swч +CuT|=}37xwQ{E#JH.U_aVO?[z|Dqn* +#Qyh4\OmER(QOHXZ1ִ^u,lDr{6+ +#5l +{iE0q- U b\q!h-u/N,s[a$%pػԁ.#E.u./}?o4Nr^H e}1$~``؈>_[|p%!$>77e 8 Y{z%|h;藍s/ TKk{) ~5AۼvnvҜcLn3Ks[Èa |v1&ޗ +,0Aa50X_2s +endstream endobj 7120 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7121 0 obj <> endobj 7122 0 obj <> endobj 7123 0 obj <> endobj 7124 0 obj <> endobj 7125 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7126 0 obj <>stream +hެ;ێ\7r8Zxֲ&h<0,ؿ= Ć=MX{yw~nRrӝ;9?93a';};}+oG>G/[O_ n0PkbccWxiA9mh/ %%8:{ᏪR.D-\? V4P`џG ]@6aݞ`k_!.:gFZEBErO`Yf@#W7ZF<]8Ta ~R~yw|'0ua淲U3NcjQ@y ռFʥ#Y Ch 47x_O~xx?]µyq?~ i Dr>?^ݛ?O> ~r +;\O*HMC[B=\~n rCzx/HH} qKqB+my l nO6WM\DlHmai0' l0#B +u멍6m+XØ6{]a{Goۂ/>Ҫ~+b@ADv`[A26a>Mڄ T} r↧iӐ[򿇟; Oz>8e3b.voѰVjy ҄F X-&(2B/ȼ U_ *:'A`5Th7=5K(XHA5Q^,p `?g iw&LJM=尝1R'm&S*} C617Ve4l*R(X5Ia>W3x led ŰoC_: +j +YX:8NO:3{Bl39ȠUU[N9w[x\YxM;\Fh٧`XS'-~`#H(ʒEW_U "5Ef%]?cgE)A^~&HOJScTSaDʣ2sjF$ o +v RЍ#Tys Zؔ}CFϣ@*Sf" v] !|)x+ +#D(er|Ľ#4V@*c"͖ d씖AW  -* +R_z"QNF+heUps&e\ـzKwK|Hk4\.`Ҥ2 +*Ľ|pR&:h[٬"Sph#8'YRӛ><:zz,/0U(_I㬍a@Dxu8\jհ61>j4RbUR i:I:)y ЌKWB%tʍaMM)lHe ~NJ]`#d U + &sX|]LeTM=RaG}㤶T.T<ȉbOîVv!3,3x]/{{kY3 HCz\ +@QniFsgL${-cQH9Իe{0jn]ďE5*2Iub|Qc&Ix%ka ٱ1n?VfH0y;Ɠ#YG ڄh1{JuyPImZ;x2kcQth]@v&^ ̟r*=Fmـ=>Y7-v% /ɨ5Z%LDjOAJ.+qU (Sʠd,1 ?h4}QB* LNa̡%aH Pġ!e4\[DIGɓLX Twclﳅ(vj%,N[t\B£oh~"5Cz0IVX +]M$HiE즲ݛ7/~dqNg;=OG&Mtefijȶͬ҆jꢒkz1,{_=B> b-> J}ܮUllˌM,(Oف$o`QHԉ=+XϚ }DV"7tl.v-1@jSܪ53V64ҳT{.Nbx>㜦dP0K9YN,UeOuXY?> D:}23EjjXI*X5UoÌ##2SLMg'ذӤ[͔Jo(e->g16d{_f=c^`D}NzFFD}L6ɎOyzRjZ и:T{ZYJCwRzq~VyZrFΒ@o܏KnrOZ ûYtr3`,5v,L' cFL$ȼbHHȲ;y0ٌ[,FDWKRX~ ! A hʡ3=b`_q{A\1X,lf7S`<84b]+W7=ݨycLm1V8$״BPrzjuj<"&"#ÄL \ KƩA38zj2U ]J5^n[BK0%aK8"t$,%&E6~$7&^p>~dQrB?"$&%2^qz /72`=od;bg/#6 U"Z޳#j;t95LN#yВ4U;D^KAإ/Z8"IffQ*kdOuN<*k?]2[@Ɯ4÷2C+[0ø9(xr0p^x Ss?:m("-u<|c_4_EjɄiC>gM/69Zd!k/( (rB 2Ri;_1h>qZmħ=OC0lJ2({sKv;L:^'U|Ybn9-y?01"&e J0T2c[ -OW6Jb;y)t5fˉvZ?05 M&4&GMEWw{dq 3{/8Kɑ?/%Yy4f6:+aѤ57+~c2OyK?M*eTg>x2t"x2trZYp=4VdzyfPfq4k|O9xP*G%qP5fr\mǑqwx`rNx6I~W ?~1~x5-*_¸5KǤ\frYF-l3S[ս1|_|n+oak<Chѻ6z! +t+ʱ]/|K!n`5I\lVH:2^!(:7[V? 7ҤjpEhH¥݊Y͂jA5 +HO68)|6)uqgW^  JL?f;J΃a_ n瞆c/ACwoаo& \e-HM`GVIdYZ+8,­m[<"nQ,a' `03Ck""^hyH  $*!u7$wnH7R[[L$KuUԑoH  CJLk]9+ICҮ%)~5ؓMa*V_f cl;V72!.|o֩l/%s +-z~18H^H-N(׼i'nvJdG/ͤz) @ N7q1r&2 +O9j\s' +<%ΒLk ۯu6T؇ͿcSHd g\>Ït>)CG?dRI*# ]t#+)S?7Lo%^ )>}{)Җ+9J[<& 3 d U3f /~5|GxUj钙 8ܴ +endstream endobj 7127 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7128 0 obj <> endobj 7129 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS19854V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7130 0 obj <> endobj 7131 0 obj <> endobj 7132 0 obj <> endobj 7133 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7134 0 obj <>stream +hތɎίs^%#@ C =4,XR[ɑe 8ݯַo䛿#l~>px[z ;=\?qh]>%QG||>O2i]W~!xW'b"$|Nx PuEa $=zJj#K,wd#Ao.p=(etv"lwA͑R :f|\$Ph%y¸ۺ&`uCS؊ s%P}szqmkݵAC}Bvdw/ۗOo m?{{7tg4Ve gQ!o_>~z˧]>#Ý)PKQ $esU$v(.l#Ñap!g]BĎNJPr|"vͅT:poGn$DCH{8e;CG 93IP]Om#4WR#xk5m\c=PJ yH#t4L@܏&q+bɡ6d zG>W,7Tw}:9 +nCFP4 .&)r2(}d($J`ꈟ%]'vT` fLR ./)` Xkc}A\&"\-^$z_icVkl5`=J{=^:͛3/ eX8\`@O"íCRե3g,YRq1Ld H8d+nUUA_#fHfE; +$f6e>,gQ!&@dw 5g#E&Q?iՁ"`)ˈ9Bg#xS>=k+eTi/7-#!XΣFμ?e'3G]HyYF^I5*rMf<`ѺL +I>|L8K ɛMA?͞$rǙB[c**U`AI*W)*ogLUuߙ4]u*˅l 'l/Af-j+7{6! E[Q<0J&77WqGYLVf3\*L\4|zU !UI 蠯5nUngRZ"6OD1?\HXGboX+ڂ?PzxHDۭf@ ըYt/X&1F 8(ךetUe?ֈĶ3B3ަn6śzFjg}#}kg,Ri`;&m4w2XI眦m\n3PMw-Ju{3X2/}A=.7iP1)d0q`,׺cU^elKt U`0F,iU2<5U;f7 ϙ>'Ler3X1w3|ӟoK[w!5/JlL1v-jRv%IKx=ãՄ&DC$9$zEkzC0]S9yFWz4[wDj &39;SQ;?p cajoFLrfe6IZ]"2C{]%Lè +qW u@eE|ͅ $S Hz]v]Cn~X2Wq4{^Fz8oc>M!_xmeW-oUQ pzhA4ud%G +5N bԯ`}='[9¼pf(Glp3 Qs oj^0봹b;gѳ}!fT(*qsK7V3+O%w%ӔjR ίn~(a۩eB8DIhȖ+Tk=lՓיI1ZnK]=@ 0ɢI;s{]ܭ5ΦyޕT+J Ӽke|5ݳK_ĊՎ z,T$.JݝxSը\I_|1H:s|}UaC . oW FCPe:显9ky46d=].ܒOĭ! ?7{nn?s`+w +endstream endobj 7135 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7136 0 obj <> endobj 7137 0 obj <> endobj 7138 0 obj <> endobj 7139 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7140 0 obj <>stream +h[o[οb?AH)ⶉ0X%%m#}3ޒ8S=fwgyxwד&g3-NP„(CYIMR)lվR0:L4Չz¡st0) +9?Q$ui!ς{ͽog&|MWPP6AMkXxD`dQv2j c%G>Vm5}[04zø?ZwcK|"_pф>܂B=Ǘu)2bʶ!XeJ-nqõ n|Rb^&2"K'!9 bI\-'ʁ22yOAn9 KL Q xl 0Ms(DzV?`M,&AhRrZ<yhG뙨+rtvY:q INKgHMc󯗫ruyuv\_-~~x7*;̈́vR|B\.E2Bs%=uUjrrH}OhMe='UX*f +c2r_6lo{=BN& +dpy0i~Zh;I|b8n +&N62fLA6ujUwCw0.XF_ :E6d|^([@ C soH[SdK0R luQb2y!tc@VPL)xjXx0js0wX\ N-Pc2Jϊws$BF*0`Jiԅ~ +˒U9BZA{>p2TG?}V +E5r[ rlN zZqCþ[[ p*1zdda@uta60hv@fL # 78v2n=ޠO鬴߈u@Vm1K LֳrNvWUo#t۴]tW`p #f +N +| +ݢ +xd!dxtcܔ`p v݅$MEw ݽ[WuK,TFk\La!K y|_mĨH~HX3.h$MVp媈A&8u݉S<߭`񺷻vv9mig5i=3(PngV#:7jI={y Sm@MDv (j>XsXfí󢹿f,:Ooׯ);b䍎3mkgvL}.æ)w:fp=5b{$ ,3}vD:uYh``* kN8e)l?0ǦncB ۶[IWaQ3ӻZKy:)@9菪e;JJÿF?RŠշddž|XnC.e DpI9^t1@%Ɯ +i &S2c(/\ 雥 +>pAČ鎂E2n xXa5zL\VN#On.-sm>gl`!"3;Bd (#([Cb=.:BF*n!R'(C, .PJ* +S%2RnqaE8VE i#. 'k +'dD{>PMeƠ'b\>P.w$%SIN[_ ]*,Ϻ7\ZA{Oģzewe<;>.t"cby6 d8S3Od6ajQHqf%;_<IE$F#R x^lի/ٸ'NwbyR]Wxrt*>r\./yh"[;*r mzi6\n^=M=MvdOu[jD + R$ zJI ؂OGA1jK6,%K uA0bAӗ)a+yDp792CK.1P[*Ap@%b+q'7†9o:lŻQ쓇BŻv(>u 3= QS-}= lT$:i<6+fDn7J\,⚘KF^'K5j10Ɖ=zԏ"UQq?~1o;}ZqF7"`v%jӚK?)a=$-56R%uGf ZRUhL6+eG7 i*OGpSR]zN]0Dqc{TFkN7+OƁ'#;\WܧW}#fL=ܵcG7ٖW5H+ݭn@2wX"Ik`Ȫ>$R^e$]ӛo>;g̀-Zl-br3ќUOA3iZ4^e;".t{vzbUHOƹ;{xw}uh84W}~{4_śՉX/?Ej+른<5R߱}=!kqM q#➟"1.6-n'Nٚl5lgV8S + AJ?w)G +ǏP8~xRcl~1ps?1+uc}23ԍ xQ7&?o{\UuGՍN.++$qc'c81frxhQm[Q;,lԎ,1~%+_v$>ڱR%p;I&V>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7142 0 obj <> endobj 7143 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv40108V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7144 0 obj <> endobj 7145 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS49608V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7146 0 obj <> endobj 7147 0 obj <> endobj 7148 0 obj <> endobj 7149 0 obj <> endobj 7150 0 obj <> endobj 7151 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7152 0 obj <>stream +h[[#7v~_QfUS" $v@yԒv=3NsnJ=c'AX"᛿N ?<|y{Vj=ߤ1aCv4q278M +:qiir +d#ueƎzowft3;OnFtaxѻ I + 3HL&M LGha 0SoS~`qvE(66FG -x.e䵂U¯ooQqI) )|#l1=푽I྄~U־qyciw\B~W1(q[~яY ~._ 7611: ʍJs7_=?xz|:_~g~/dQbM_~7)YER#|{ar0'z] mCmCm=*礽f@fL&@ˎST#tVk$‡Jپm]Chۓ1 Øl,mBT +Qj Q+Om ͪFo L ,>վٟ3oR@OQĄjkh՛;3A܏OkăSpUqƳ睝șO僳/qF%ԉiO#9GԉbJy=Y@KpG57=iAK,Uz>)!< +\BȀ[FEbP ?Yqm'ip' z{4|NuhDz0ZЎQJEP$ +9 +Khݚ#L$̸QXu5A@ʑ0K$9E:un>v+q59/S0SD "m:_a?Ǯ`(ՖZIIiLjZ(I%%L@ 2J?wM#}$cAc~IxI fG={6p^9F"LeĤtN0ҜOǸ=O l9 r8KOgK*"d-_!bx#0nFbqMP IJMVf:V7`P SV{NTIȲ/U9yv׷4|斪V +gɔlX.( ~BiUɍuȷd&6Sѣ&1%K>2 K񊅋D9b[@S1#`<K8du<х߳?KRRit8Fio)%aI+v60(sޥ(̃J{'A=1 Rm`2XI n%p{[.ޖ ל)Kҡ7bdpqfnNKl1$-7@[8O% +vйu; ,wUkF +6u.knBLcS"v|xi?rGM}ʁqFr,wψJ@< Evjf(iL30\m,mJJp;9fHr3Jmv94Yz,efS~ȆqJxA`eTF&& p& N2/]G-O,;?T-e=Y%'RvPF10GOЄ;m03*>51ELwSdOIL`lM$%TiBQy$b$$qɂjԠbqs5/& ,)!TS.L@R#gy>l#_p5a"38TW眭0IՈn1u~Nqʭ;WQNJreYhc2H#s;wgyݬ8Ki-'n#XmgR(eٴfpT0Z&a<5$\$Ҵ)YlrVS `)Q`SyJ96s7sdy Jtǰ; R,!yS= exo̿aN[}7kjXDٌѮK͸)Y9nt8]^;ی(~E)EfB Ҷ laV'D[_%*0l +xRߚl/;l/mE81E +uC1=_͡Mle"TH C5Ͱ<QC 87B? c,i8m~B'rL.R.juG bwJMKVmGn #|bGVG񊪹@v ofVvFz ±}xY//I/A]ޮa?̴̰z>ی*UC˫Z˻c (DlEN4Ѱӏp-Ι+jnq/uضc$TΎۇMV5kK y6z&a`}ogjmY?<Ťͺ +W{_Sf⢽7.-ʒLG_1g74gDIiVVʛ6X2+[MsqnbuߍdSɺE`4z#W.n҅i1mmBl;˭AwL6 UMBv8+8HȌ:,w"/5trDL*GX>?*ՙxH8;5,m(!PR4b@ls_e|_lԳ@fFu])BiBhKSvuAz_BB`B;~ 6 fB$6ָ`~fJJ~zJ} !0%lApyk#y^];GpgI֕ w9똧X iDu īr! L|΀eZMtuR)&<0? +5 ˉ~ \Zƒջgº#Omdc ZI5H[#7JW%eoy +#5yEv8p L;JG3%țN>d}kp^O@YPxEy~|9=8WБ7j(|(dmJz\`pU9(A \FOP˥\g|wqJBӋS EkO>=~eJVmKpp. I Yٔg*:㔝s8*PfKTWnKԴ-n ]{B6k7dݾ}RvN%ebϻn`\;CZŀ'N[$[C׺mV+59Ug,uWԩ$E_}- +E׈/vcD%f.bY/̹\ĝR%( vp0TP~Xzo:|r:USz_ӌgJRے +rH|qb"}Y.dCux;Kݞr''`yH'!m +\98:^'R\% xzӋsG{1֣A[hA*9 +hggx>kp)UrXkv/Epq96}!kS>p{XK'rehlTqz/[+Ȅ* eT0aJ|2rYQybbo/(Cffdő,iԲCv 4YdjmQwy=Ρ0?O ӡ8].Um-ޖ`;{IEuW%O:#?0S4M7H KK%^X \vlD-%'j녉sׁ3(P ĎQ9eZEզR5}AZ+3Jz a vwhVMs㋁XDE'B0j}ق@*~<w+5[-\lp%1)\lW "Pצ2`H.ߌ]>fx*C Fn;4FlE}{ib>koZF#i`%y|J|BJ)(L1mb%`',޵RsURu84) $VmqKl-ۦAڵ:JISM 9\mBpI8q.5Ke7aŅPY^@ %4s7/k. +~`!| Vji^?HI-oIWjòٱ2hY|)u*ZkrЉ*ݶEՕc M47הԜS\< %50.會P]N*Kr$T* b O 3W}>z21ƙ+2-s f0y̤-Qt{7BT5_wEj +endstream endobj 7153 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7154 0 obj <> endobj 7155 0 obj <> endobj 7156 0 obj <> endobj 7157 0 obj <> endobj 7158 0 obj <> endobj 7159 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7160 0 obj <>stream +h;nIv~$3fvI0L HE@Q]]"mi?}ϭn͖<,2N:sW݇WoTE;C}tWCbZW_/~]q7@7fz j@pVfFTqvz6OK C|G( }X#ƃG eۇ5%OЧhMhB`GBUhhiN~Y\om֮] .:\  !65\KY +fi5apqF臫 ?jzmb]oCc8\=LC5ίUXOr ⍔)G&asGMPlb?N 4rҼwSKuwygzL5X\4d c"uxn{|{|ߟnw~{y;h&qӪQPA;NچچںWI{MoUMQ/!v;UH?tP]$v#o齼ETK `c0<a .F $ގ145QREöM;jCmluˍ2Uc:tMոU 2 +a}Rx0ot <2~ϗ Zu `xret4Zn j8u/.evw?u˕_||wܿ鶇[C+]4A OKfwwhþٟÛqO?Kz*.et-iq_?>[t8<P4`nQ@/ $.2%x~?/aZ|H_KONPZFC3dAcxdPoۇn׏ xBsLTH18z"I4.q7ɽ>SwH7ca}Ӌ=< 7<F C_J0T*aK}P|=m=<_u>ݞNi%ɣ`PQbY= + hHzZn#57 +'td@0F]sDT( aAEObaBuQk0w_cNw )@D,`D``_Q+@tx"\Ac\|?Pg]f!0#(N#bŅxmB1LYp?3?>eޠ1;'d[o UPcV/.N(}!͢fw#ՌzO;ERLJ%=Qt'k|d2,}BP ?(Mf+-~{-|ƧRRaɇ$L7#'YI zk ה{kT1EԐukmSE|vViA $1c:' ZTyRjhHºCn#\ߤs3ŀi̐6f)7gJU@-*d$`0&opUM n8BŮ䮑.k=e;ƹLd;k +5i$9HDmojƪ38s)QˑdK5'e4-xtΚ8e#h&*J,5aqط\J.4MVEݸ @6 +UZYe^+ȞVQV6^ts +k7GsPQPR9(JŅ7iPXg"Q_I=ҹeMr/b, ~ur)q][N=z>`N>RƧ+{`[u0>K6) Vyֵ~;&)=N"˔%~]FYUu4q 6l*//}^kO_ 4mƷʚνhz04^::mqx&sbi\(%%bogوًMSoB2)I,Q\0b~쌵뜠&2Ҙ $YS_,4خl RS-5m$%.؝x!p/WM[-97 P`֢qmie攰`:1 cJd? X̀jPF{\h(خ炭kb^%;T& gr0U~%LՔm63:?$1`T>P`tT>!Uk`71W3*PǦ r+V 9t^Qv{w[:R|S9<9QqrтɛP\j*/IϸRx]g90Ë"HM={t^pRtJ^@;zZok巉@sd%bj3EDA%K5?US/"HZmJT-#{&nSeP]נJDwI9 $J\ケT%stlLEU4BkG7}UoH6>(0W +dr]H>̇"^\)s& ˷J+gJ8Nks 2|ib̛m9X_Ɣ4չA7sV\ѥ-|b7k\St֘0ZqT |NK6[W9AUcUWwU:H|h dJ5`Uj!aĚZȸlk⽔*$h&/τ@ n`xxQރ.ɕ#FJG$Ox~䊥f:RLvgo3Dk˵ T6CwjLB>Hޢ=vdbYX7A}}A';EPIVK9I~$oVKlP&![yr,'7L*B{9+0sjt_n8\]@e^;ZjtؿYpa``c>!V)Ld*E%@XVvɐu0O aˡ} Ym394 Y@(Xe}ͮ=:W|?D=U])ܥ=(SyZ0FAIrjq_MPeBzgdV:ˋYϖ2K#?,w[GEs)/}_5E-Uz%٪Ḃ&eӄ@ + ۄIDZD|W 찖oIşA& 5^ƌW70RY!KY({!ZtJfxȎw΂SٮN5|M/2w_>J[\Ur V(u:^ IJ`f +'T8YpEC>qųpExVǻEEvU2W` V\HX톤O +crcH;<ʌ2jDk YV jnDZ:Y8xI 09-Ě!6K|nײ9LoƬӭԙ7:KRhh{u02Z- +յT8l4G +M'%R٩gO +58 Oa=J՘, yoXQI+}<L+q*oS\dGU%YiݶrnnF sXؓ\!nhK^1K=/["f:K1VT%)bFA?+\/K …a8zK_[M +r; +}yǓ[7LHR|ȭA nQ=u58gGMl=mY11Di{nB&&iXEU)/m󚧃WhJK;Y_GB+{ {j]2 ar +endstream endobj 7161 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7162 0 obj <> endobj 7163 0 obj <> endobj 7164 0 obj <> endobj 7165 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7166 0 obj <>stream +hZKo7ϯ&{1 I,a  i12b;߯dG%l H"YdH7'vxap_Mn<4F_N߮f5c1y3&ZfcB7bA{]mhtǸsBׇjܮ7im?~fLɧO0OtIl܆q"::#4µRhw˻*l._Gz2ǧ+Ѹ!c0:?M0)d;v0vd0!<X읂&OS rGXG/2"`J,C9w`@C#\AK‚NBn 'D +:lMa,1扶c{V6INF@~u5)`a$$zXa`QKkZ}lMЫ'lgٛAUoi[6f0%% 6$_vT2FÈ!_ĺ_IѰG[)܌ފN-Pk29Ƞz(EUdu 7uĪS"g)omE.u9~q?|p>[@0-]fɆj镊 _gD+m K _du\>1WR<@JN<׏K}HD7'yc[,J$MUOBM*,[1WjXh"|9 a$V|-ugVb:/ThG+PCy^0"tŠZ]\Ϫf%ו]N6J׈lZךTٰtks%{*PQMV;R5_QʜPIQ/vTk.SZ/!SM7|%Td }:km2j׬> +LFѵl϶FrشQ; D.wseհk- ѽFVfDMxs" +˱ Gr*vkґA#U;q_6j 5jG"x,RI ?\揄ߞ֎Bt+{GJ܈햺5R(.^1uEV,6\*S ZTP.\ W*zeP۪]ܧzZI׋DO- _JT*X:S1O7j`]ʼS]WqȚo<Z_wC ʉ\dB+ՂjSwpСKHThElR 0ka8|C]qCr S]LOQ?W8Xծ]blAɫ5@|U\ͼzښd5,hbw6ՠ5Y1 +f9r-">.un섣ءuU'r+Z9]8O{^f? xzk[{?у-'Tn>Q ρEf2RJgSχt)4 j[Cf d3-S{ő~ѐ8S n輓[~b8W9q9!Lރ5Y_2ș!X/ Qyym gFJ*#]=:<?|<\\}ngG9xA)U&;Wn  0f_\a H0BӰ#]zۃ7^2(SNOݞsy7A Atv8Gh| ڒ'~l}zѤ5_2Sb>ȣm+l8Tn~oǫǏW7o>!=22_A1{я!2$D=٣w77(}wO7'/{o1G3Y!k=]Բ] ^>) 2%"Ģq^KOXdH_-JJpN|89zu&QSA>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7168 0 obj <> endobj 7169 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS19847V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7170 0 obj <> endobj 7171 0 obj <> endobj 7172 0 obj <> endobj 7173 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7174 0 obj <>stream +hެ[]7n>8SIԫ0:ivS .( +{Φpv?Νɠу")D}O߹o~7o7nvu))m؉ؾ9h{Лswϭ:zñ*ɕ^ ?h nM=9z' ߽&E?iiEG҆2YWmS!ey􎎱*DZy]7C^KGxX2%˲V⭽t):QGc\AxgMG9y` W*nRzs>+Cu)Z|1wWǗi8eyX/?G.=ye>7(GYc7푱{y]/ˏi7Yl;kSOH!b g/}?~|x/^ygQ )yشjS54c,7rV~w1|a'Fא(2(~$/ù%fm)<p +; La-|$3`&J<•=Q->eμs{[vY)^)yXNh"T_y^j fI'rao#= b)8S$X̊]K %")@j2:fcl@Q&dVy'pG %'PT= |+>ЁV &K̽AD\<0P^&כ G&柡N);噉O3`svf?x>kܚnGSO'!x>8 {F_8C3r*?+¶QjN(QΤCXl%W!_g ^\ZoT XAO|ˁ }Gr`ibW_c;= +ۘVDžeO<^}%AdnYNF2{Nl8V?RcX4˼7/]1'QҏؘnEmX[A8P+ѻGdzF5a]Dof G.Q>AA;Ȗ}t؈WzUsKll@2IFJCH@OZC>l"tcW7dEy->#ke<` '*RLh*{O׽#ͷug4O“]N:Bwu MFL\gN|y<܇  IO'쪾uO6(Ա?}.iҤI͛nҌ2Az;$=hd*xS^]lnu !Hp#ԅzណڼAf`T'VЫs{_Uu{iw2qhFhQ)}G|0yi{ZsMbǑ#(|]tb2Ӊő^VY$}hzGRᎪ6<ݎn`)lz,X\N}-Ÿb8d G9$o;hspj[5AFc[^CQCX|ߎw ](XMy Sm +G%;45XcL98:~ަ.hө0;k+=ӭUE>qkSAg>21Km[vww'ך~+,z~pj$ukwSv#rژb/),ajJ`)N +#qßpN)aܡy:(j-u +@EƩb$| "&>|y8XkпE!ƵOpB}Kd' ĞXia;SPIVi3i70(SP`Hɼ(b^E^LuZUsc/`M8Cv] +&Gw$0V܆ ;5MC#{p;]foGY3NBv#5Ul)JT?dEt̵=ҒSXSN3©$e_Pa(d`P`84ɯ`&(L%9s3(Y0rjȄ+WH5m`H3X9gvDvJH|CjEujf Ѓc H=_痏0#Gh_*i Ѯ+QS2Oǯ =^C*{ ~0$ϒ|yW t'&y]tGQRk4hĥbcC(tp:x>;yQ-9)N`^$UGGw`ϞO v5z?Mh§K)c?, 5,94]wĠOb/}rϫӟW?NhD)]O䜖ɕ-ngIL m&k, SL``x^ z#ns +fFܢ zjp<ZaW1(=bH\4NhG|'op.7!)A]&CIC&DySD jgq/q RgǯKyC [@n` d/W{lӰ򀥘&8F8u& g;Zpjn3Wr%/p _)x؉vr}DrY^h0!3N'L= :~52ѕIt&xꪁ·K9 dE (0^$32 +*tA HM DwV eU;R*褳mHRnDy㲲GɃj2KX32ByWtA,o(K`F3U$(qY@`wyTKPf5-X\!Q6L^L1&B4Ke+.u*y4B45D {ȥi#DCږ4h;Br"tCHH^j86$Ys@b.f1uHr.G9%le/ׅ"b&y `&$]}yz,qLrH5K4=hfЂ2[mm]9'6̅S@@vM-͟LItv ++iCWHF9sKCP]"x1!&걜឵qv79RXӾ%O@ֿn/ b/rpO/p56KIeQyEX{<oe{ESG, &5گdT3.2xTpeyGw 3?ئv@Z@ro~oKiKs  (cV5 <2|Y:(lPRZhAwV@4]dvQGen߱O>xV]~|;|7,^GW6\ *{Z]oXms^V%!C%m7s +[Fo7v׮~Owcn۶v&m \BsceR)D]P˒em]6`//3z+e=ye3={Ye=\|Lu%q΄,Ѽ8U>eMd$EsMĉ+iNU-s +-* ȀZZCpb85 UV.KZ+8ޛw]kZk ʥ@%Fo=pǖ*F#1Cq?!0)Va)J +е.K+J,[a35QE.ZR][ϡзCu,w$+wTu>(kbUޔiRNTXT*=5BP}r&ܛ`EzrF,`ig SOGYVAbgFfz5prqj/>-cCE,7ͧW޻Jw {yr:tRB6 !0b}u'3Igը5^UVW:JN@/N2/|0Nl'oΩrX0Xb1 _m0j<妊и:9)烻I ,H2YKPu2$R adbL~Et#opA "%NJ~Eh-oD>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7176 0 obj <> endobj 7177 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS19848V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7178 0 obj <> endobj 7179 0 obj <> endobj 7180 0 obj <> endobj 7181 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7182 0 obj <>stream +hެ[Y$Gn~_Q T*h4ɆՃV{0zJZ=wDds h ?2_w~}_-Ci9O@?:NeWR8}z:-<ۧ$=sgE[3;ﶒKd,"_0k>?#0;QE2r>H8eԞ!ضT<*|ÿW@.*{?l?{1{Xwtik/UAd1}OFaʷy,xvW 3ۺV:-{ ׶.C[K@>o>p//?_ +!ï|ugAzzPcׯ=mo G5}}?}O0~. i@Kt `\z8H/`OrOڛ;#ё>%`XJkSՅ͕@ KOtDDO+!O+r;"K&ij*`dˠkk!ɳ`̎<ӾL;*-zSOC:)hX8g*7*t6B f7v7R5,*SY|ӑБ5iTƝLׯoV켍qQ+֧.~ J?# #NNir QV 3+3x!CQa72@HtD:`:_,l c˘ !"nCe<59#aJ2Yxwy;aHTvP=w#|yfv'ިvC{,(8n(uxVg+YNCj ulkYhSZi&q37M*:8LG904G@N@^ՃON,{WC=Dwn%=,%?eb'NJ s9Q$Ep4<Ex^y˅7,;ߚGg% ڇ.#~p2_g1I)1-3)W#-eO!TrwsJbPxUq%JDZP{)H` XNO&w.HbLAFf& Dr+#dڱ16p<x5r/'w?̋5)n͙iFuX;>c7k.3O +\]a7mՖZ|iGgGxNіe3mqIvip6eXmfhi:Jم]r6$&!geȐ,ݸa<7XI,Y G8E*AIbiCd/e;WL@$d߮iFY!LTJ?CDVAq9C+$1XVLE|uCӪW}Q{h#}XRMѓ< fL\dکJ`q@%x恭Ya}\ +1dLYI'G3qƝ!;Nr}ܟ-Vx40o4XՕSd2&sȍgM,H8"U@J0(ĴA:1O!2mQ\(R#N|59,c|^qqlhrd*`LIqy~V["\p,uqaۙ + Zp YXtcm.8l0~Q_ m+xwT=?Ot~~XIAXO3;'3vOb|^U,OV7*)iLu(3~")ʕ-DԯDPq>kj,HQL1[zV +k YM x|!rYSiyՀg1E`6m &iID <,if4J/tXdm![:(q)X)F.<)`܋mzVkxX>f{͋Sh"}4`Wgfgmpq:gVxt`kxu dSY 5`T՜AZNNYUA_ +3_4fʴ_$W\XϘ8Nȥ |˶L$? )U2:1X%XhW_ !vvTM )~ W%-CrG~HxC;L_I$p4$2}'`y kxRf`Xѭ._pu3!ЎC pg_{K? +z(X- $1o14kHG/m\ϐԖ$,,G`(A-%@G)_,~߿ATWW P 4ЧUf,N@u?W8pO5M+*Bkw~ҏog-K|s?d1o‡l8nZdջ&` +NTQ\ +/ڎE\?߶W^&K+hmɋ51^ʞ)eir[Ś\ ܣ=ʻvkr\&yIE:/B4= ++/rkr xI+/Kr)Ś\@oG~s)"~(Di.)7pj*ao<_lhГ|Eyk.!|J{4G6lڜ4"d֯UrKKv!'qbMpJ+/gm¼\"@ /+'E{681j?ڟsSn5 Ǜ4?bo54%8YEK:k;dMK>-M.{R9G?)-0*B{nѮ!-\7aeC1Mњb[P ;m bL3D]hC r`N5 -0^ #0)0[^FoJ(jb^yBL Pf\J_&y'h ەܡј(UTķbߍGi rDG=S! Aw2w:*'e@஛68,mO}lƠykNR3FIKW3t}e@/v5R__0 cz0waK^:- a<⠅Lܶ*fxqSSE0FKO x#}SnطHg{Ŋr@'w,"cuJ)`?=C8S-4 7 8:#GhO-X1H22숑͇#&vgh_ 90|| W@ +IlDpPzQ[r^Wi 7bZKhj!9#I< WU~g8rXcsKz1_Ki!|R09p)dg33?զD8 -L[a_~ ɤ<&GqtB3MS=Ҷفh´@/!y:K8 ~"ZA,BX%arl4!0ǁ&=OٟTqƩ`P|߁PT~ZB +AR`@¤/WpSMho2f4"j=a&Ked3^ Fͽܐ5I"Wh/7?z2\%fW}K<2# !WLXw-@Otv~RcA NS+}Jٝ)#LrŁn>lstIpw/#*[V7v4Fi@X-n۟ɐ&O/)G]17}t_=\pC/O`DcE< nJ$}~Cr=߿wXGII +ŋb0yQ( =싩qK@W.e!09?A+sx= q]@0}qzhNL-xx\P ^vTuL&{o4IA͙p~hRW枲5)VcR-It) ϛ' hO'M +I+34gԆ9?g҈I[=xYІ>K){ +-~.~¤oΤä#"nO +`$wG|bs2rU/bzX(QP1єzOyPhB @AdEd9ƏZfFDvun)u&K59 [6¾7+s#sLzsVPNnmW>F ݎ}:N <躀4ahq|&WA! +1LAF+)[=l*:@oW$2(:k65ᓕifaDyB&{M!\}PyE'O6Bt#095,iq M&cK6m%,V 2xs@O +u\+w( r#(9(ӑ3p g@]I㸵\5X4 +SFb~v5e9<'e Q@^χY`]GlT/PBlo>,Fގئp|[D7HZ"sa`#A)r ާ>GF {OIՙ"#6#*~øūrLt~#,ttA>m9wdtJC5,/Y%"ݭ"Q1u= +xyG< n䎏bHE HV0ohWWrCLs#U3ʈ \ 6?i@P[d,=1|̅7Vafq0G61S5-v/x=e i<ģh[!\hZE10{P3?g&pN2R% ܩ|QBEvC5E*A+v88F` g̲$`?ai9I6=IK uu{' +jᏯq}Ӹ*QIE\["7%ݕrb,1b/hvڛ*H8K-oan7:\xI8t*t) E压t/2HQQz3{.%ooT\97$BL{Xѹ`p)F' AW5Y? ]IY~R!頍PaQ&hYX"g!$ӅJ̨F*p8dNO[~M&.a bR {raλ @#5,iEQZ+tb`? +؊h E s!ׄ_|K'$U$CE܀kC!:~1h{P!B~׀qA}AmAU7?}EϾ0d(zAEyAij:l!QQ +Tv* VHz=8 >stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7184 0 obj <> endobj 7185 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS19849V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7186 0 obj <> endobj 7187 0 obj <> endobj 7188 0 obj <> endobj 7189 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7190 0 obj <>stream +h;ˎ$7r:*'&Dv$0؃Cwk!cJ|;`03:ـ1;_/<󳻸]V.>%K[pyi麬;m]C?Wn״xuKkoʩQ՜Ұ-?*wXz{g3K2~>_JK5Bfx{FZAK,:kDX|_{'PU(2AP%{C#_>ݮ8;M o2-֞yB.1:XC_ 5HUF9az:+R}^Ňezv4o5/ GféYGUȋO0]IKD|`o\XWn)nIM[j +LsqiqO^>!_秿?\x[#MC:p+%5`˕K {/o_^~᷷?}~|aOɗ/emuD\qڒP.{5p_| C/^KW`] +V@vC纸ao~Yá&090c9X^3p&_aKMk`U}r][ߺx{ٻWuKpة}g/`'hJüQ0i%E*^=- \`Rz/_o(Ftj邜w`?Y2 j nSS<.I$ub( X +<@( ]/bJ Xv+ {!$hgP^+RSъ'\Ui 4ʅʞZ3巧ŵxA̯>^:3Tt"u)R_/LYE8[b܊:ibx8xV$S f ~C\wdK*5KpDR1(/B/SHR<˵V%,wDX]˝ʽaS7~?a$ZR?k!Ϸ up)fbP?: ă~]MwE<006ЎM5&!Mg- +Bݩu}HK]:$5 TWW?7AՀ;1!:A6IoiwܑMjfe=QGVTAvŊ7O_=qjV3^|d` pKduҰ* 2oA7v1h`Q5Ƽ5W"T4rO9ःE-H5B^2sҲɠ5梧ߐd"![n`$/T{4mq!'KYӻMupi ,sh0&Q=ۘ9N:U|_b8*_Nx$ sn/ u;K,Z%4XcS~G#Ȥ*;ë8U0hQDMQd B%,`%2\(*M)HIӴSbe 'r='Lx|o>(DX1Q%W5"Ga]Q.mFlW=ӆf+DI8]Fe9$h_*C€J0G`XIM_{Ґ(-y8%AbBbT#1*.L "9KIܓ$hU,Gu1?{iyyY(Ѓ+CN3hXH:kQ'wug c]é=O}a㼎M0:^I\cLve;wj?TUD0JR?!ʈBb Erĸ'ىҺ2 2 +%A 0̨ntvCkNknz!9q@B.Q3I8i=9!zYYFsX&h%"[ =m4|;>9?YFD̨/ĆbiSUƾ222a7WNX)1y0 4 6 |z&;ʩԇm >\M+L"Áw-G1;?s8Y4q4z9x~qeJGY^u*:8 A7+)Y)RX\CdqHt=?-P3;pf{q'7|+E'f! ;zJ&-F {-@mA k" ;ߑ3gKnDB +sH\;Ԡ)h! YQc[u+mG# +*9£ǚR;BQnu)P9]?9nG'=^ ĵ镀*dz#dHRT|D+x9;[>Ku|(AEgSFK|*%ru f\Awf{=ADtnݙa6v'TN aI ).6kQwqhb̜hOFsC8~&[ql%x)iwc9u<Ƙ -uL2z,-/#:zcs>8@}0bL7υN[FHÂqǂ6-dwR{N] ۺ~G?17Ɇi&a v/@!Ŭ *_w l̜)UPWp#7JM.WIІELoL ̦<]6uMTstU͒ 51@*&L)3- =dLxչ+JǃYDFkwblEWFN_piTL>do q)]H>I@gis"Oq"qV*;e'CB\\ǩgM::DZYd]fP[knʉl4ؕ7+>\1"='e,O# + +mB4tn -InR)}.Dlߧ> ת9g=~?%jP@…mou&X ݈5%Վ`eiL-S Ro R8J4l|FKh3X95R:9q|6[7U\Y>MgnbTS Qyl#b^lxR0mV +?8nxtjh*:JdWM7P)*Isɰ (#ʙY,VMPMw0bt QfUNL7NR@'3CW&a2.R@ W/Yhl&J7p5-%Y>ys8lY@5׊FѾ:^Ÿ{-BFt9.^kٗdMRe\vFjmit5Qer.Cw,20H~NѮ~W9ƇkNϟ/fb112c d?H`!GFڀM +qn:&Wt 瀁ɧ3vrXR$ &$4#~߶#Wh- PHRRPd9]Ah< yٞ޴Hyx< 㹱u+LmW3mSw}V#yMcL^+3$\'cafaX݅o>Wí_ѽ!=9=MeCɰgI]sI#3vz[c'|l~kw^>ѢLșmi^v§UqEP. +g=hp=^1ܶx6Y +b~4q;c}61>O,1SpSG f0wFsRdr*j Ժ<ȅI 'ZN)|>Mv>)HwcbW$|~Zm1 +Q}FÍ w@l[xGp\sn$_31-ϵSn["F8ttGӸI eʬn3:ϒlnVG-Y{NlD)V酊Mʍ%O/{Y]|=PiNߋ*7*!gl_ Ϧ[pz3㽘m{[F֤ߛm1`;HK>2fcNdm߻wAiy#Svy!N\&(9p jӣcL_Q*+iL8 +J¦)l3|zx ST~)o:_秣<<7n٧Ve} y1i@/0n3Le +׬/c%q31wbDpr +뷗5?0o:+H@8{U#).PO_tir>w*â}˚$Pque=MA9f[_}2h.ί#ewz]嚎ݕalj_4j +CM,Fu@]ILJ`$ i#@ƐEF\R9QV6ɺiAGI ħ$Q |9a7 SFag_Є\slACLts/:v +!+3iVF3[H6g+d4J Gs^BR:W#nTĶXf{g㴝"!8g;/w>|b>Ȼj +vW>=67YœPdRg1*G$6z Uxpø{?a78uR/ hH\KߞoxV?nدw$`CmuHX6B hs7uRts+?`юL7Ƕows;m 0#( +endstream endobj 7191 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7192 0 obj <> endobj 7193 0 obj <> endobj 7194 0 obj <> endobj 7195 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7196 0 obj <>stream +hެ[K$qϯ-k+ߙ@Z {f34}Owd2zk r:++ߑ_|_]>|x/}(o tkKM?w+inL--rRڿ=}O/|??O?gemwh]SI3Z\>q9`9`/.%._}X"L4X"زVa/ ˚=6'0.>аssq.$}}{eijZ :r][]ƲwGuKPJ=;/>y{Ʃ/Օ4_(Ehd%E*8,5- Ьa?O>¯>zs?xN-]A@=`ι\cAE(3u0%D4?@iKMEp(/nGIrLpiq![fxOG[tp})nz_aP6]Dp9\ 9smPgQrASAՠC#]k̴'K⃕ +9,B`ĶyxwwdZbze0:ʸTV9|feCt L7fgyĴ "f~ r%=KrO~Xٺ[*Y9m :Ɖ]$udܒGA;F\>}Fmu<{Z>v3;e,CivNjQX݂bf}XtcYOv[3ƫS]g-6! vbHAcE+Ea8TݓА +vP8~!e< Btp; r^H{:GW,H$-y?/Ǜ)=u3}x%-6F2 f5y?šy._k{ֹJD$2ED+C;q^[bDm[UH[*!m^u8[ZMޛ` s`,ՌVu"dpê<@0* 膜'u9' wm]/v2h~%mr_muC/)9:Ig&H<6,R7.+mIϜ3:)of墣m7㟲{[Qe=s\r(6~\Z Uqkbu'ơnwpbG8M `! +z^:jH^0}(Y( o}G/,ݬŵst`(;/OLwj|UF=֕U $N.j`z̛HqB3*2RTըP0xS=܃c*n{Ǭ雚dũUN!;rIN z#7ۙl^.-(bt=( +!3w_<3@-yH#̗^ xMlPD< eiC2ntjhWJcl$+ݪ.o6򦓭$^ITμކٗmHۤA>k#˘qvdw{XƘXFY߬hɞl + +`ᗐ"yFYwN@1YLp>YoGXΞѝVu3Kާ']cY%4l%8(C[mR(A!A9V*cþY' Y9~NȄ]/4Wcnj׼̊a嘱#0܏B95/18kP3 WMrF ;p8/,+~Y/|'| ܋ Ls0L_4l8q\tH8xHhD7\P`PtkpKU$.|~gq4{裿 +=.HՀvFz9HJ=VY{HW۸devYME[\ߘ^ܢSo; yaE=]QGLRKPPh(')ht{LVK=fmydಉUwB&iǚb'eILqb1>gYo4>✢k1Oy8nwNT"*d 3H4JB $4+Xyle,R(oJh]r;C*n%)M Cv|D%+  +ZƣW+O╳DV,v:Wss 0MjHbii> +JidE10'%7K×. ,2g4RWl~8^4Z8j;S SDYz$IH@7=!PU 74+kfT˧S탙 +p*HXĽ '&,INҍ@PlθE6NaJ>pո`Sh S5 Caff *iOmU=>Ý'9(73H:adB%`]pFqK + iɜ);u"G,N b yFL6HJ.bp"~8gU +F!W~wF Ej,1b(aL@X _tPLb7wu^piq,`8g aA~v gb{ˊp̔:+-_ 5WPkخ +fq>Jqp%m)| 3c_g\ZNRrb**CvJIsy(&B1!lSj`H8=ɱN-ǯD,>٭q9S6`FwVD*8F.O _YEɈI'f%/Օen#=~tUvSd&b:34@heߝ"I+~ 4Ou}^: ys&a䣗>rsnd!lS)(h ^7)L%>|39uf٧@GaHpOS'-9kGj*9MBޚ|9Ws҈ur8u%gBZ;%Br, 7.:NjvA HL2 +.27qG'@p; $9xnْ\PDqR,cZ_7iǣC^& GricT+2% >)<IZ6 ^SYGswW<#Q_q% &#rgy "-"[*Vc~pe2'OT=sXemKXqR֠܎)Ͻc(΋!9R/':PbLFĻ)mƆDi;cPMhCDU #_R:Ɯhѹlڔ}d +O2gՖ/s2=aWx*ĚYFBhkFvI2\BNB]t],Txc &CR|@<1CeY2m\A*w٦$fv)C;o$cMɮi #B#f8/$y US2%ʸ<>~v*9S^_/0In"fv /g;bDow8a:UQ= mQb0fݎ?(}P?Id> ӓlA@4ɛvsG:^=?cmST'}}}^ e4V?'<" >i3$aڧ:6F>59-q3끖׬H*͝~qCdS2z$/$r!mї b3 tЮudYlD)l&w?AIwIѐ~ԁ鼌U)nRnu㙕>JUIu؜k`xlt:( D&̞jn;Q΁^KJџH"2Q J*! TgU^:l5T%s׶#co4*09.l╳=q2$I6-+-eqw}UD;0Q|e `P3IyGo׎3|* M 0}:+gLO'}I +endstream endobj 7197 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7198 0 obj <> endobj 7199 0 obj <> endobj 7200 0 obj <> endobj 7201 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7202 0 obj <>stream +h[Yo[~T7;Y2;`b},K Ǟrh޳q6_gxHB'\JIV#ʄ8887ZudTN8j.Pb?s? K#5aerSzsԃWKT[,]Q!Fr`6Ajx Hq#v9w솸` Ki1<J.Aa^]uk %CݩV/8;~"mº._ ..:=Z-Y"lj*420j\lDqUfLhT_:؜\9D$0tfƧ0n8*K?;zdCu^;@œZͥ6ͧf`gAagØ&FZyܴV9! Q?R5hzCnlllȚF(aL~ZC4h`ofP#$`7LΗ9Xiq&R-rU5I7z@e-`"S'HȌ&&"y])hP\;qAS4sa(oS7|䔽BT^A@9N(@Rʭ"eHt R ֑DjA5 2nmdcW@Ų36F^H\E xZq; erCVОp9R" h(# .Yd9"_AGc ;EOfy3A01QGXU<ڍR1iE$G0(5Db0"6p' yGRoOb"j&aٕ-2wvhs_IJ9Ej5UdrVeJoؔ%P,[|ÆQ|cdkQۄNC-*..;XmŅ|$gu,>ؔ!B" `#9$OPviS><.YJfsݙHdp)FTT H!(BLhޓ'rwXAqق>V(lE:,a+ +ь m?_+ 6d@/&QT&rS;gH#BG_FchҬK97JT rΔ^^a5Sܭ@rp؟b`mVYn@Tm7JiTIeq-)_e +@dTea-BFP&m nU0D&J 5'gYb<b߁ -mA*2 St@̢w5ة$2[<`]>U8_ &.uwiz]eк:dA|ݍ Jq@!T/ڪB6+ga_[rZ]p_..Agvi}H:ĸi5%g}iΦ1*VR?I; Lubm[['`74]7Id:GXh]#HKFu֢i4Q\RxZ\G]='NrV'Y-=b|a9G]gp5К6rEWdzo?s z<It9קsk2|BmNaoil>>QN]mJSƘ|͵/v2:%OR1*T}gGu}󸺺P5fRy2xǍoW68{cB +=ybY1=+f5_D/=Fy^\ i4| Qɍ 'nv7[n>< +]텑wk09SQݞ_ 9|y{2RHo_8EMTDowAI=A2ؐ6P %&|nb? u0X02 u8|m7t~0|$o^ЦXOblJgL3?*3 l /D3nXo h|RM-(3zz 1a+c +vzPxJ+9N}g;Vwץ`3!<`UL"m3 T =&">FE,X8\腁wۛObG~9} _q6l\)Yv{8%EsWvl& ,#>Cn Lo<Ή/yH1`lF zLcZZln-%Jp=@M7N\@}ޛ1\א"0<{L䱠:|Iq_4BIͿh/t<"Co^[y)jw~a.|_M+":' :x\_9BPO3 ]&LKKOx +endstream endobj 7203 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7204 0 obj <> endobj 7205 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS19850V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7206 0 obj <> endobj 7207 0 obj <> endobj 7208 0 obj <> endobj 7209 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7210 0 obj <>stream +hޔ[K+7rޟ_e@}oz1 ,&9,,c8YOZ:*V}O_ݟ֖O+7eTJ\B]Ƿe]tA߾krk +߶s\’.%~`3]ihn |z\ܺv߿턅NW'ϳ^4N'LޠQG!S?}u7VYb>Pp-赃]߽1TCkZ=FnjaK{#!{7m]kΝ/>Y4Nyw[9FܯcPök^`i7e-SmK'_AN.-cOt?ӧ?~}\ON4ҭK,=?o 5N3әZ5ۧ~O_~?0o~ɧ/pڢ)ͧ_n0yNtquI-oN_F;_\J>D 켴P:ktv51Ih;vL<=0Go }&_aKMT}wvn)Ż<ޅ[r7a'vayUW꘠MFn%&FiQa׋7#G/gSuwh5 ;`c_ %xjBKpػ1}hbZ ñ *pQʣaOb&tϠ)<2?<{ y};\89 +mo3鷷ŵ8j3T'9z⓳wٗ~Eetbۡ7_F3gz% !p9]XZe04k!ѡfZbf yvцm6v24JR֋@@7+V[ް07K7$m[s~}648ȆlĿ\w%X+ЍAng:>Эu+aXa3tdkq~U#q 0F8

J,[2t92kD5 I}^>bPlOyqjb{Jpro}xDώQJ2^6b} %6%M[|iiA*LϷ]6oF'08ca(SaǺ/W5 mwye~?^_Vj *b+{w9Aocr&OdE, O~b z:!J1C,@xAR(B銜A{L8S =y$6/_'_'_c'w4p$w6m=DzxA!V̕ظǙ3&lOؒE%Q2M+>ugz\36,J.֚*ZVKK{tbÐ}N <7WBhx jd(M,Sw +)qh|qj=9Zi4+jlC\S4ucgqp;$`4F"bBW!_A) Y+Q VL2w9{<5"AM/zpS<w(+B`r95HcuM5wTG{czl&&FE\Atԣ,RzHN"bdc7'G.h F 9C/9_^J:P5ӽՔȣm6cAAޕЄ3|dHQGzn$)EL!pS,qߟ:)e]c6z񜟙F3C1(1aTІD-1CNA`g [p7OA9M˧j{c<}@Yn+]t4SBzA:ttP!"詉MjWIt!(cYH,B̞%'Ό}5NN4W'N.EPBI063|x$8zJt`U6ԝ2Ef M$4,pX#߀LM }=ůh|FݳRjϐxGj uBDwNhHPJ5y*%IEnn +I䘅%ױIq"v Zw.wÃAqJg4Xs&ݜD^i"rr[x[K>5`/f!FqZA8ey(xξ,5ec=l5"igLޜ xO 6=q퐂>ɧ\\#<00J``0ȧNxQN-N X̮ @y6 +(^$x6M4j89w.M"W4%*|7?œpu66G`TP4k + Iސ L=ʦ5qQ]g&MA(Bg +|(أˇ\-#6$|NnsWY>\CB66Êh|7[THhazY[ћbK s} Jٕ謨/3gL ;ڲZx+ρn}Klm/Ta8T| maSOf@jkLgIŎ{͛a J^ErT[;v:^}6kv5=i|UhQh~[Fc-J|Q(9dtuI3|N4j2Sj6Q 27Iw.Hc ZlwϾB4S ~ŋv/?x %):&x_%0(2}o/onG쬺D2]č$q8 \^V cJl}m~r1)wZ֍YsL[7P~ja?np>N>wdR#p +@*`1y +endstream endobj 7211 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7212 0 obj <> endobj 7213 0 obj <> endobj 7214 0 obj <> endobj 7215 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7216 0 obj <>stream +hYmo7_r|).-b mAqPU!W˗!w-7Np0!9!3~ݎNs_2)ŤcTh"jdԯ6ƒ/Ak0?6Mv)#S@Ri&6`uᕋ3_BLݐ=Soe뚾Ī2@iUJ}Z&;e&Tn*N_Veb]lϫV_R'2XKKY rYdӢy'Io!m~>{OH{`>eݐyۆܒOpe&w6&;e|6N%nZnq2m +YhJ8<ڪRt,MW2 wFĪ4 vچD@6 3-Eic$:tB[=B'8`*ӳ$tYG*vXw#L'obNY;vˮVGldqRsG tk)rGr# *bV>Fr;\qxvpUtCTb1kffE"oQ]#Aۈ`R m'(.c>o4c6P) */ O# i`J=q&9~@ۉ8Z7٠S]Hے^#|&Փƫ7\щ`) og/54mf#dmӊiH<ɑKj +>I=e0Am5c:z#BT'}R!7F$P {Oqơ(Ŏk_f$P +l<]ū)nA䡓Jhy] uV=1I+\o3(RXXM;ʶE$7-G5G͠A%<`@EϠc !) K+)"48%`İyƯf`t'Uɺ鬭MǡNO+L~;s܁Ԇ4SM!֤VՁMXy^H1zΤ6+^߭p.{A2p.'Y,tZg0Y f=LrVɚ ;2޵T Ț=+(!U&Ո { n0c3O޽U46Nɞ=ujYə"P`$%u]QAY=VLj8jy`h` \4XJtbKx@AŲ9O"o;u`O8 ďz|98< o/ 5[u++eY[4˔ӎ_6bјDKȄQ|d_Qنj\7fU]:؋qL ƤhYsOpUnZpJZvyH"T,R#ޕB[6W鄫v}>g9~Ds~IWe4pn6!xop{痘8ӱG\MDQ-KbQIa_ٿ=xp.yT?y_?]b\lݳAs]]Bہ/;~m@V㩾!ܸWڌ,?L>`d&t2qǞ垿93gOpĩwRB^ؔtXL +RxEŃ]$'*PJ4*uA0ݏ6Tꇔȟ0UHCJ0':_&mRẈg,HSdAh~eslU0?&LjAJhLU>Oub)(5~Q?7h8 WJE;w@&#| g/>|D@#;͐}~ +Ct|L>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7218 0 obj <> endobj 7219 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS19851V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7220 0 obj <> endobj 7221 0 obj <> endobj 7222 0 obj <> endobj 7223 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7224 0 obj <>stream +hYkkcG_%g&DbeFlo,gTu߫+YVvGu3RnG_GUףKT?QƩȨ_G%إ1π%k{ɳn_e4ϸ5LƤeKߌ 4vPї~ ꍉtRڒSIGBm`-80(6w$Hі~$ƾvzۿxJP;F~7{ +cv?㢸Om$|JW;/.%F$ApHB4 +{F 4lB >' @2 {ZkYնJ9#՜/P_R^s#$P + tR[H"u+[j/tXl8fM\:Ru4 !u:kmT;e:w}yW_AA_kX4\_6fRMTҐJ'ucSt J I«K@"4FKFdwȀIE*aBֺ mt1ܖтjٽ; bf0 S<7;) ڎtAS@e9F E#8@ 0 1잳3*9ؿolkY7u~TNVo/g/6*xFXT72u>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7226 0 obj <> endobj 7227 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS19852V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7228 0 obj <> endobj 7229 0 obj <> endobj 7230 0 obj <> endobj 7231 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7232 0 obj <>stream +h[Y~_Yt!-ZΥn zFu=3_$*نdf ]\<n8('(&cn]ᇋIi[n~㯅^O.Vj DmS['28+H/Ѓ]y^kj[=2St ez ޛI5a,a<#Ҥ3fNh'S&Em% +&f1[FK18륾nHHyn^оU&R?y1+J^m1.Qcg +ѳ PǏ ätq1 .';7;K=}r'e1SA޴sF1_i5^N)A $U?{0;F}3R;u}W{ܐ`@ad=\}׿_ͻonսnﱲID#yߢ#OC?ܾנx%& :mmm5IksR)jD1aamjNqw> Hm-6,(AmҘFR~&6z09*7XޥW&%<L$ıRu; &G4} +ה&zbI Zntғţg#h<2sv m{`Ġ.v 9f:7ǧH-*7шÑJ`;i'x mZZNr^Km)p#}禤‘_wxۿ`b2S5tL. +IpthVK-=|1i_A#֛w:Gv֝!l< 8y/C>x9v(ǫ_rӹSx\M Sy8^>1tF&¥`r?^Zmج2Xͤe:R;GmSo5Iul[6䮹<URkWR34)",n|ct|[k@ԲtU9g_^YlO7 +h 1B5i;I8jTy+R'\a/1H h+{\@ yNTAґkt &Lc e{<^}`wQP=h6ag݁Dnx0^?<@RR1ƻ3|Mp8/pw?&}zx=fW/^ q@gK|=u. gkn~G7qD0Vbjp4ޑf.(?} q?>~p~|9-y}0Aobӫ>;2ƐثW/>#!-{ó*4 ,,G/fȊza_ 8`7n#Nx8Mpn6yC.n$aF\k<}_>`6f@@Xy[̍{Ї{ +S s<<42=qOC3jVtt63RqXTvҘ#4ˬ*#N7uo$ `Iz%ш˵[x "${Ĕ's^ҾztШ +OIu h + Jc@Pco GZJ4H·$e   (|_(Ԧ 0Қ|BFt!%+ +RڡJ:K'Qd=Ϥ[&DeLv'Ċt {ɣAP:@b&(BſϒEA7p9e[jBxNܱKG)do263`ѧjPy+yVf>ڜ8~Ԣe +c! Ɣd’g? ӱbh,,=:dC٤naL+r(n䊇uiX$r:)ȌeFW\d3tF/ 8nHk͸o/wa8G>.~8H+X;m_Fm,91ܹŲޖwKkz윻l bAX8Q^.3 ddG})ngvܾ|pˆmkťBäFt\l1GEC O`;-)3Nǚw=3S}rgO#[gܴڇ;J5ѣV4Js6 +q&q]=Y.ܧs݊KKPw%$Z/'GQaߎI4>k̼Xk6::()2 /%UTe9Ql.eO-%wf8~f$( %–Z vxP~ ΆJSrl +iK1mw+2y-z);!~Iyں +R{)*ƭ|+Vtw$7x`64N(\a, mpVmY!3zudJǕJG肜fBH4(f9|#&|<eKQ9VК,r3 PvE5-h?[7E:OݏÛDj^f +bU%z*QPr7ޯR_å{gAs4,z#mMƻZEܿ|p1#YACBF?t.Ev)߳B3B<Ӛ,1" AlѴneЩmX*VfCP2Yx}wK'`(?IK6 SQ&|( h@ϒ?;n`4(bEK*)E0pBw*RBN m:2RqnMAY*ܑ"*FLOH#W#wJPK˃AB@^X]: Xd֤;{Iq= +8񳃢 VBrig1\72G広 ^uLͧ6$lw|;>r +H3SnUDҡ 'ɰШ~!K,B-Qu!KFĂM*Ʌ9J$KLQ7=MF;݄ Gݨ@?#M) ؅"sc?U`4|n0~Fx9'|0b LJ_,pK0  /߿bP_剿؈*zwZ \.XT>a{Z^4Zagm>QTkj(z8fmcF``MBل(ҳގˬ866BZP.' CY-CYs @ RFqh:ZlE)Y|Xh_K=Y,(¬ 6YNe%gս B ×M7E6Ao>ݣnr>{8UBT;>nMW={E]"ꤝTj$fDS9"kEfsUGhoVb}K}l̙qrux.I}*_,`#`BQ1Ƕ~O]ww_+/Q]}U~|O3;WܸTn\d(ovY c7nEK Mb@tn:cPAseKOlanesS=v6^P[瑱TsTQJ٫ckO/;t>lV3Mm cDӊ'+Z`ťe RGk{ O^胘"e_ ymty訉_U +8* Iqg !Ώ{"A#k8&ZO [ @֜=Y*(FrP-41*i(JA+r-Ͽ2*MhGHOsYg =;Q)-y6O<ʱn׮bk/[c4 Ʒcv!f;#@uh|8i}8롺{c0*^jT}T 7*f~FMG; ++'`Fu87dn4;XzaC̪hU4&oʭlN;.l1ᎥE P݊F Q^CG)Ba'9KQ")6#@XR(` P?[FQJvy.pnՈ\PWA])ηU:uLW:#-su%Vt_47)\å7ZqD4B]F:P׹Oքܺl4_2>;=K\c޺!&npԯ6 ~5.Z<d4#W>Umi`C#ghVt)PUX6G * + \[Kn&SbNTZ5hjT@KH8?@uBן.X\j b@.5]K#Pϙ"9n]8 +p=E#@*ԣ=7Yia +k+ + S$ͫQ_#@btBDXV0tnjH݂j[@TMLOm]- otir4Ws{GVPTk}:ŝiSVRR3ɖ>=Pvu.Y-f&[6ݑm[ 0N ^WG#Hegr+ͺ$׶45 the0 R.K*6sz6 8^"R!a Ci=*DJ5VRg{ +Wy'pe [u)(CuPP B nfJ%_w+^A[eYHٝ_+mPֱGʧe] '*uY<"j#-o8Iŷ` ٮ .b~V‰XVۺX,=&E~%{y&p&6PO>bYkDBXZ֜q' I~pDt4܃Q P{:bUV[ vGv}UtpiBPe1&YLYesES-o +!%pue-8!ʛ6`^SB6>G +,~͠ +Ku[Md(r-2 P[⪶Bd̝s9NQA5;wA+NOy FNQ(P$zJa թi jT?#e6aČ7])OTjfL2({`?!(ioG'];5{zvVf'5D˕kW^6yk^ZPoБ븈l,zFZ E:N*E3Em5gPe,XJS %l [ 0&_Ujjr>ȑMܗ|'7zk+a!.N>l˴n^iùj]1,vebm48S&6.'ȝ@1.Zz)wD9Dyç!Gww؟m8F$c@G SҦjkZXkQ.jEOgw}P%JRWA4!5 (>! +5C7meP&!,%[B)jK bɭJ$lcQ/d/OV0٪ mZLz<@AGQ=U̳$O65v;tAxv;l6ѻղѰ& pu +5jNy;\_}{+ fr~u迮=x>G+\wVp4 +~ +Rm3|9I-z2Y7`@"(nכR ,t U{}M ++ גI!tsB 쌘! xMWx FfE l,CiDou$KhJՏ?B,2E~%IP,ǧkpvBFo'(Ѱ2KQ]9o8 IP80w#y&6CAqAYg(32rsգP΋kr*N UŚKLUWt Fw$尚eV&۾G@8"-z>u2VJ$kg_^w] hpbŹؠ8/&%^@u4d5}l+EHQi +endstream endobj 7233 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7234 0 obj <> endobj 7235 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS19853V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7236 0 obj <> endobj 7237 0 obj <> endobj 7238 0 obj <> endobj 7239 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7240 0 obj <>stream +hZio_)\}* r KB +Hݗ:#@ ҇ߜj⫳ٙZ],A(A6)+.y!ؼpՑRfD\·vrJ4mqesw땖{GOg-+"DDxBk'3 j ^'. Gkbqi2.$ ]e .tobTFD|$9g!]9bQ\f^4zn fEz}N|3+ϒm^H ybdv*hvrustrd,we HY&'L 6e݊c\_o२'rd誟x;MNKHg/XUdwu~{ayr+ps*;ꃕqA(t7JD۷%}vu#*l X@Jf97.;#U0|3g,Z9|Qg pBi 2aI nؓ#[i-$ mV- +. ppjwnU#&55e0o@3@}vyIgoC'ȓ&m g7r^E@4*e)_Ԃ }MƔg|;\9R PR䬈i)~1=dC: 5zu* Pҿ->΋rT8K Ҳ{]h=ϕnH%M+e6MqKsA0ktQ>s^tOT*h( J]$k s^ZMCc;-} nf^.j \׈3:_MtLIQ;@sSf. {ql/ +ȨC3YrTy-<7 [MhRrNufתGJUoSZ6ʱZo/^ ;:ȕs\.)SlT:潃+:lsx9j~xrck*hfH-TRma]ni5RL:z抵U) dƹMWt׎ip(] 픙nؤsSlrJ]n9P+ET3N?r;Qy$eխM k*!߸mٻzߔgyv SJx +ey]5!l&xNH8eZheDTaa$=>8F{Oߚ?==9VsAqzy-˛'%thc?ڗ> ٞ/ܛT614g#_I=ɏk$|#DBہ z+0T,G4ijEo0UgcFafk?b4?3v6pğ-B]_$.9äTyg 3h +uj?c8*WcZRcB^nCH6\C? h{*Jx ȻV>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7242 0 obj <> endobj 7243 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS19855V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7244 0 obj <> endobj 7245 0 obj <> endobj 7246 0 obj <> endobj 7247 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7248 0 obj <>stream +h[ksu_1wUa*)$"T.e8 i3=IU>X =x~9ɓ3=I80d5:pD lF.:(e=~^?nhV'tqCF9<2kkiT~ +|& 1Ѧ59V>ݸBX'3.9bCx = +%v~(w731 vf݂Xĸ˭M4%1LhXx 2m +=bZ앹lkMٍ0.MM]$.NM Hfzq|!Bd"9q MK۔PZvx2W5 i<4=y?iFCjLyQϪWC5iU?4ijϕ4CO-qؚ cUZ S؍tq\ JۋټCP3Z]LEsl־.]鴹oTvk&@;Om1u4˖!lxLe!i63O5ڂQd!gDMfbߔY8sy䙚]M̧_Buk''>uDFԕC{'6M#|OLJE;䐽{KyT3|mכiFNim* zǒ#2H%HKۋQe^ukȝPڼ.J͠JN +@6Њ|K eRycBg^y IHy˞CH~Y뼾i 9:Pnގ(A~ve0ݢ,TzM}2E^Ɖn1w>9t]]QIF6\CQyXv)E)a5ԏ- pb4ku*0#+?\캉_% 3"hyDtu3?BPE'^}9Y,-Nu%(?ﷆu'ҳ$+ˡFPl 5'rieh0ߝWw"><Ωjl \sB2cIZ=W'J^ +TJA/\k;͖N`H0PdDz&0TjT( %6k/XHuuޞ +6{S7ko7O5%B"M$G<GxEDXi[:b~| +C(2\AG<K_Ԍ{VO. +EEwRgu0l:"8d`V}vNEaFq(u +U.U09Wzj߮#x^[}n 'D'UsxI'jj{՟^>hH;9#` tݯ0Ysg- 1cyzFvRTp$| +]šP_# E gp< Gm]_F{*D+AT4CqL-"0auE^)<̗NvLi/ՆE5<t׹qᣨ\@g.͛m +M=A^<HcHy)TMY5!*kyRs'I{5V>{х.֨??~xfz>iW)v˦iUN-ȲpeWL o7GݯbxqZ4^kG5μHbaV-trOQȪ8wm;˕3qf;^W)tLի3Mr KMGI~: 6ȒdK`!˦r1yUoW0d@2d<^fv"zҹ}o7cNň ~GEcDn}nVPg@K6-*-AM:m%AF'&Iv5fK$m;y@>x?Oͫi4zZSDH>խpc$q)OAw <z8ɉIaqmy֔(XiC5Kd"IL#BSY¯5 !!(G1ʵdegVyPD\bW9~}dSwg!}CMroҡ!q qgs3V]j ^Ƭo0ak^< ,1ب; #L+@Dx.EI+7%Eԕ6Hʗ]Zgh&W}$/7uqH@b3aG9p_|@(!rR*(:VLi<t cObU}N9̫i;Rv7,U&˱T@cDԳ [rJ %B%31nqO)%h@Rn! x!PXN-G7V/gV-] +q\Rl81JNd9`x绕GMv >"&K.0 t\L~ظί䑘!splJ%Վ't{qw=n~3a{?(ɋp!2`o32i^Ad2Q͛ SjprYYپ4 +r`. S< xMFɌ&'+C=LrQ)/{@ 7UЅϹ]mdꯢyjۅscBʱ:B ,hcEbBmzlY? FyhhmP9.9qr:5"TcOVn-R˳֔TbU/rm=ઘFHYi;VDXJ~t +~(EgP 2831cssRңl.Z89fM#&'$,?F;hpāغ~-_̇&GV;MR v#O_:,k)ocL永j(|41s8 my><<J(v<@S@ؒ)"w ՠ&"[ABEB_vߑzu+]6GQK~ A'PtAJ/ E,#kNVhMt5| E逢[R(/CGQTAcq1ZNV.ӟuꝾ&hWtT/GOҳ * +endstream endobj 7249 0 obj <> endobj 7250 0 obj <>stream +hbd`ab`ddqw,LL ( JM/I,I*f!CG_~~#f0cw/O(Q04&`\GL(8'*W+x%%)8((V(J-N-* S WHT UոZ)@\YYZ4 =hGP_IQbJjnbQB>H9 +y +@B2A`Bb^>Д|-y%EzA & ̌L[~XP}+.0^uG_ܵT%{vɯ]7w %{W˭Oo*ڒ(G֊үN'x+NpYB},|cH7CٶOZuJjCO쨨[ 'c%Vs"fK7U=)YY4_)#yKR4;nwi{)ko호b"܂צy8q=~ `('C +endstream endobj 7251 0 obj <> endobj 7252 0 obj <>stream +hTn >stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7254 0 obj <> endobj 7255 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS19856V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7256 0 obj <> endobj 7257 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS19857V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7258 0 obj <> endobj 7259 0 obj <> endobj 7260 0 obj <> endobj 7261 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7262 0 obj <>stream +h[K$ ϯcbk~>xr0r6\CR$%UwFFtT(>?RW]ëGPך?%ե%b,>Xx ?|D ٘P3+ {~[%n ?/->lYVkreypy`6~Z$dYBM<,jV rɲzyu9e!j֥'b;yj[v2?q0Mjsz嵆ma˚B'wJ ;Xfeu6QYO5yŀH8"#nBTW a M&W5ְ=0 e:`[j;!]phS ꎡ3(דZM\*9WfШ!فL-@"Nzx +joi qh $h%KVXl 4Ȏ)S"@&!k^O)>x;? m +kYОp9طmQέZoj-ښ$za!VW_mzrmYXi"GិL{QC-&΃q-53x* plS] gdf4#I*dt7MX ԆmaZc+풩שB@Q=mí۰)ODffO&b 9VDIK|5zFl? nLA=TSh`9xghxQM$ql_prx#i]`M7 ,7rB$qP4B0&L@Ѿ\ =lHۢǎ: 1ɩ4J2(La-WqNnDDAvB!aOgiqk^JA`_ڍooX\ƕ!5&dr .!9)}0,60ab>0. N%VVB5JQ*g&,^(^I=$0{ON<2;($#ċ^ z/`dsh:fQ¯74N1}` >^ Ļ\9ecA(S&)h;O'&#ϝ^Ɏۆ$ESf J*sɸUM 9+GQXWڣ%򠍰D!w0jQ0 5bޮ!"\1,\`w깿GK? 昹! Sk_eԶ(MfXyZtoK:t{@'5:xquTғy|+M<it<]GZ0072adLHM`W5()=ckB$!" fZ:1ܑF銕h{OcF Q䚤u+}ߴQ m[""ҍl46HXj)PY <KoeS\'o##Ѷ37*Wb@w`"9XJ 6q _nE9ZW.߄"Ezu*bwz#K*LHh0}Pb$6S)\>(mY2~=FL$4LNv \[xL>EWqkf߻9N2!(/u; !(q)WuknPq{B(ivy˦c9c/mRd@ko`L\Pw8df<#7|qg1nj 8*Ƽw7*oϐpi|ӱ*!_QT!E\Uц"%ogyPd7Y`d?bDVR\Vܜn:y7*68<Ťr8DT`Qkxw7E؏kFAɐ"͢OZ1 @s嵕Ӄ*"UxJISf>%&I0 !23M8Q!hB,OmZ=WxoZ^c_ӍAU g&5i35%,3"6 5-zaă,i׃󐄰I P'n?ހZ +rnglׂ;UUkY܎*_w5q:ںH'.<%M,OGuXT{<{Ӷtt#ӲVj04' jɓy?7y`Bq~}@ +d1Ӛ,0cHqI3lseiMxwqڡ1CEoi\@Uu$akqi0l%J DغM5ؤK9!I)*[)'4wK T:nz,IE}b~x6y̗ +޴`zzJ5jBs8+DBgA V&dM_F+1VgQDL7ldzJkKAiANp\ꕪ򀃘)Jg*((lRJ HeӾ+uMh:l1o#$fG/# q`}Z~.g=_@Pv[+JH96imDRmS`pT㶜]@ޘ';鷁<;2=iU> y=bylFUƊ޵liDj&hWfn[pv 'rM+mznǭ 5ᔨ8E}w2p F`JS%Eq1NNNhx'm&(Gs/ +b2go_wN99wܠ:3]{X)-R"8XMF0.8uo vlErϖql?B)|Bh1bgW/v'aq$w{sq™; @Q B&"8Rg"I w%6}i"=Bo툫Վ?<#$Gcx8g ZbǍ))y>6S@=z<ާ'H' y4U涘+}q>, NG~8?zͲ^YY7BMQݓ` gzJRegs~xg-W3Jo)K$XAif/.r_w +| +^4/s=1H gN0N0gå 9Vjpb_i<~4Z׋p_ץtX9p@oͿB@˨2ܾ#Ը0/}Yjl0`(+ )*F&8]v/N$B%GqL,c}~ +O/a~g~RXM?6g{K֛G2v9~^;,>4@Bw[B?@wW{V\ R)ya6Щα+͗1L,LWvʱ4:MZ!N5xCk⒇;>W84jur6UЅYckF M#rpx٬KQ~sjDp;~\EqD($}!Oېԝ>OqSRmqۥ.OqS~q ! + +endstream endobj 7263 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7264 0 obj <> endobj 7265 0 obj <> endobj 7266 0 obj <> endobj 7267 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7268 0 obj <>stream +h޴[Yo~_яQC@ X<@$ŋk40dlX+v.l귗U Ӌ]ެLjcܠwwag:6ggԾgkc}̫3 a\<9l8{/D~]/vKIz+Dr<1{ucYZs8ݞW4!@׎tes:]'6r5\ .H'!=-]~SP>ׁWWƌ665~c4jkZ*oSV~w~ΗR^R)߮>s,}9i2_^ S{@.>|7%'Sj?4虸îu( +E?վOc˪%QJDt*i4}J>I)Ik7s4ɵvclOiVU#jpMzB_RCkRd>F[ #},QTQjzoJJ}^uԇ{!>u=:}UQl+S4,_=80gRP_Cb/PL=r^%$lOd-RӞ\)/,ʹPQ +jG a#H0paa=1Dߵv5W-5ʴ)ota^[<+ ABE꼠0,? h\V7JEWqE1nȐmWü*R6gh l<0/n VGlVYUIiUS*R~l%Qn ۔*4 D`[uݴlr} 3Xt +<[XUnTU瓨Frͤgm~>%`W^B!wU  0P5tnQ5l?X @M +Wg!Vohz=YMLD=V* @E $ǣx&B!pl¤g9ʈ{7sք kS+J;9A]#U~݅-@T/ڼNϝ~>±8*]3YcfĄ!YzL^Bl}y[6pH0ZiHEqfr鐞$gƀ& +? +P rQuQ ǒq`S X=Bghf 8?շp5#kYyBJx5Q a,":ҡ9\/)PM(cP.fˠb0YxIBb/Y~xsqo|z}ӧze{}>n7{*ns}xu؜ +.=yԐQCяѡ l_Kl}KIqgm~u m +2ԥy5}-GdgokH$fk:XF*՚Z@ +o +vs}Wv{sw~gNU̻tH,OE:;5OeD:DeC"G,da]&L+# 0 f{^=4[$"`stsE\p*lJm~1F Z7;ę\Q:5i*h5x)VlV I Vw_ZC$pnG=> +>ujrܛmr.34P`D"VKEHDX"KA +>;w-NGq1|cyFn|+u{1RD񗴘)&^OQ/(DRDĊO3X_/Hbbn~r^eqtLbk ]iDŵ_uFQVtG]:XD ׼&tPO#C.` cy`T&BGGhЮ +08[,f6| +?>֭Z{sa)swSly7ۣa ;w~A+G/Hx *}AFLѝ>a} ,j7vvT +&} 뼾<6U9JC,gU$LMWm!R`~yxX33΅Hs3x甞e_QA0ʁR{߮ݴϛힻJzt=@l lyp 9K/9PS/2wq_^d +ya8i~@3_'P}VLEItTڈX%օ!+g/ʚeQՉc@ydNp"|?]k3x-ǗF>0C8W!n/N9v|F_o#ֳIy\2K|83/iN^ Z{O@ܤqQ~yGs T."m84ݛT"#Cܮ)84q{{L>yv{qα'_# aJ ~Kq@mmr@xYM좨ˋo F50UX[E6Om~ 4s~$#g{qN\z\l# Jg/q&$BxeY O^!C!<*R >6N]ۓAsܣl$N=rnuE^]S0B˽lXA>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7270 0 obj <> endobj 7271 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS19858V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7272 0 obj <> endobj 7273 0 obj <> endobj 7274 0 obj <> endobj 7275 0 obj <> endobj 7276 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7277 0 obj <>stream +hެ;n$qzl +;Sh4ձJ4 Fٜ=ñHOwyT7-ͪ3#"㮯~L~ys͍tsU%)%?2}@#n~nYqY_Zv{7]gnri72Â[7p_%g孙s} +IzqW7~k}vyPr2N d|us`\a4[WJfJJpȹء1dCMYf fxIz~ssv ycw[.%8޵_a .<09uđ5^<2g? 60OǗ߿6߼+ |dY8=a qa`adi:~]PD>JQQumdO^9G8hi8Ta 1~,sH9DL6Z&їZ[ ok̜,>lM5V5st qpR 玳 o 8QM4AY0Zsv炡iRa?«w#!S BG ?sYT=f RBqpj`RZ {C'kHR4TJ+2fT4,O#p +[+>DM~! +:.G6`1 +e˭Knr5@$%DWaЇ +z+7)e/h6LJ{tiH)n<<\N sI` JPCxä}A`<B LfvqjtXZHe8FWR2T9Q%[zz-v-Uzám +)/p|3 +6X + xW2* +_0%۲Mw ~\| B3J|\ _)+?|~9zVsټfzx3>x>]!6g~~Dϧ=^N{y] Tir}WoO +5_ok$J  +|nwLǵhk0/ivQ&Ӟoہu]x _@Al^>=<~xik xoc\ -b IL@QCGz9=~/'5׬q]mh8]; bz`Nf2.p@:G#׾x s_@<J\p@ct3׭q9 tEb'CP5 ֗#kA $Xb1q/o2 UW0%CAOOd1GT5+>I$Dܳ-JVk9 +~ٓ2Y_M,ƗQ'9pl Y&wWrhMY`d6d} 뷂rzf{\+6ܩ#X_P3 +n\"Gp !v{QR5ڙt?m5!2R .B$TpzUnZ +&<Rn'd:7nbY,Zԉ+jNNGYo=Pn4"-LvyZU'Bx_~]l ̍*%+@,/@{߂PPTv+1_ħٝS?,p>N8t_q~S`<\CzCP=褐]v?95[+HBi'[pMj5I(`fzae\>S_ƪtq`-M]+tۈnTVqP09voǕΝ̆]q$䱪e bsAksQ5np߫rv0mv +ڟOc!~?j]݈BpT$Ʋ^Dxۭ` д|`w(%c UYt *CgĶܺq.3n.%Ы'[upK]42 6rҏiqߵ|1L^-yƷsi4M"beh +kSXBy$R#kI;RYFRؽm.ԬTvvp^(G+*ދ6_ھ&c*Z+(xVSv J"8 59Tav[RJ3 +P3Oy iAf=ZuԀiM)әRٌ9^f*aPp|#8v؂1L5fGL%Y֏@(rѾd>L?LOu׺z aB7N/'J&Ahe/֓VAk׮%|fӛSHʡUl4{l$tY[ot*}W°粬`#PίumAXH|obcxMD˶bGjJ"3Wۘ?eFZDbT]/Hq'B)쮩6uZ/̶? d_I}lR$"h_ϰ{t-?W'uU{7ljy@׃UN8ٔ U|k$wVrQSh~E;=@a u4܃]Ă2cߋ tm +PXx,mD@k5Qg Wڼ1q^l^lIy~},Y?8sbX*li4MQ׍?25V:7O~$S73:C} @#ToBj&۬ZnWHcZBf[3WVL1PֽE-}%i՜CAދfJCVW}6ObڂqIkeITD*"/>~ +Wk]H5wuf.Qi;S>}UQh ӫŋөYu?`'xB3J{ CyBvu:`lX5fzs0L/qhݞO/о<ف{;.xf~u%GB_NӁ*d=N2}&眵8tn~"SDq2 g{Kԁ^"Rw'9&=rj{k{R*!iCHO/SB1%|5Xo7/ps_[LNMpZ Ihؚ$6uLUKxn0~Tzn”<ή 9;?a.aVY!SwUDShi SJ|T*YQ7tKh!`UGUPW~aU96W0> +W)-x2hO.[X ^;E!JEmt>;ZoNbb3;.ئP@S/SDxt~1]OrsLMi"N̫5dYoo1o؁OOîNlv3ZS!"H 0W{&!zLE^B—~HDۦR Cw݃ -6Dc=;&wuȕ _ _Gf+m9]a\1\/u}>d0StŨP:vۯC^S5.pZDg[9=LY))Q*_6:Of'[IF'NKDW6gYEh N]C QP:qv 1~|-s+ 92bvbavEAOh>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7279 0 obj <> endobj 7280 0 obj <> endobj 7281 0 obj <> endobj 7282 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7283 0 obj <>stream +hZoG_яdZ,K78P$sAQYtgHQr=B?뻫zZ;F+nΒj AqUMN|>{ѶעtN|cЫ;ZOn:]I4s6Ս0nK-C?5&! kl'Tm {b'[g]/Bq#Z oOU5bA:tixu<<1v~i-{LZXyuFr\]xi{ZZ-| kmjosĪv1Ņ֌5 mS9["S)%ոR˳&qBXeL5s$7]M0|7IZ_jR9e:ҾF6;0x+c|P߽:T^[G{I]7jLS>$C4ѿ[gէa_.5mr"x7B0OLkRR&!=wMx Zg2l6>c&MkN 5$5.7Ӵr(=,v=8nഄ&X&T{Ɯ!8M4F[U7bAD885;NnȌ#H+ + VèRx'fxj\46Kiă"ioqfbX:;P3-i3rk2 YچUjPX -za&#@A3J O[8qaq5 +*qpxڱ>`crMc`h;6]e( +8 +ld4dէFHrw%jS}<&!u/VeŷسbXsG G>5Ʊ5| "^ap?'oټ={VjE%G+akNmBK3E54+5j ,Eegä6z5@yR& w* pu<3 ^p¡Os3-v%? aZ?n8ک$t2j.jav٧-t"c`1Lb;/;cN͘hwVqz[X_j2 +Y2_Y4F1B68K~QEchj>UKRZb՘ѫwWߏqAbD^݂cYE{qdhRw5$PY!j JZҶKJmEȄ@c05L=,n +GڨbU5_,tR d~(v9hh!OV?>R` abIV+ؚ#\o =H0'4a,HP3#ND2Ni5Y,I + M2IJ]HNCi1 RVJq}3p1X?՞-߲ޘ+ڳuVhGڰUYkc"~ ,x7;" A-H FLń|#N갽fz!CZnx5/d*KB +Met\C([v5jy_L HfN^S<;Mn~$mrX|I&C[2F&+8wץ3Zu ޫYc_ea4o6=J ?|y߯ZsH`Zg-TM:ͤZ,Ke ڻҖ+pX &~JFz +}RTN *,c-sì?6dy 8o$V>\dLe`H$uX>!vƯy-*S1t$l"'ʯ,ژ X JEo觾 s8(8թgrК@/6\`PyE,ޞ{zzAfm@/It"NUv)HFeXu)nFNl@/Mڻ!synRtoYj1`6U1m۔A>d‚ԿJp@%H؋ ZX%e&_a۬wpTΆ|DN^uEk.?Ͼ& OsY4dn4<ٜa<Ȏ)[۰j4K y& Y1@6-7:o/7bF|*Lʅge܅bOT1^TNc9k$ 3S'/*KyN5=2qP +3|‰Sf˿+6'̈=WG! ‡*(K8A: @3}.>68TҁEʡ]ʐ x]]iLPT6&S$CFgIqvgGX<$DFr}_uM?9ӹ{$Gc6Ө\狓$,e"w+:J:2IQt@U`5[>jN,l,T6}2O,R,]b)djcjO vD'wQ " QX %isP}#>R|KG> +C`0A + оG:dt߳0n8'O. lukD +'P ; / _ma鮫p8S2yʗ4^Cg })_z,-H=M914~YL$X٨S^ʆ5d8Ł9лz<-·<)eoftmɷ;jş?qq$k}g =SjOx~^82|݀Nfs27>2!LXrG)4jVzĄzOuKD_\#c//[U{c'ʌ+%B& *w +rNB? +%7 G@ `h& +endstream endobj 7284 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7285 0 obj <> endobj 7286 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS19859V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7287 0 obj <> endobj 7288 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv41066V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7289 0 obj <> endobj 7290 0 obj <> endobj 7291 0 obj <> endobj 7292 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7293 0 obj <>stream +hެ[Y7~_JLPG0k^@CwIeȐlXzo7q0ՒfBL`_M?{?rkr}JsK-w8h|?^ş%9++&ht?Sӱ7,FSKNhx$ rr8# Kz|q[+ϋ!qXD #T BAp zV^㥯[ދ%DFhdXM0>ЄF+goX|"W)ZSyNA: +w70%yGC^^2렂YGU\`恓iT L^4T{AF@hz5pӒc R:n s( + fFr=kN%BVdA8XڳjjhY>$7}#,Nd(Q282bU.\ 2i9O"QxnB."GR(Mʹ,tC4"+E 8` ^! Xڊ 8TULjoNZdmOAe^c}V uk % 47dٕȬiN¼=U"w@K|bC1ʃ|DÖ4,~h&tHfLR>T= q#ݮ箥ꑚ~^;A&F̨ZqAryb1p-# F'c 7Vp$djm*4Bpm/Vj3?vDK P9[䈇=WZ Ms\ld:-6q +d885 AXtp#F(M2'ԁ2;4%@dӨԉ+%oЧ' " ]9ao!SuN>X㊡Oϭ`'zz"Ƞa +뱫Vmڦyr"3ڱ<[Dr_)mfvڝQIwxe ADϺQJrĊl A^o(K*m~8R-I ꀓqEԆ42T0 a"QA` & 59)4}~UNqs/}!/tA 0ZFh׵ ~UKm6;ʬv{}"cGְGmNڬ\8-e<b{xۓxf7xG]#YQ1&ФHs7:.ZgL\U5y*Ո]Sj_j-ݒH๭ 3(p]GN&I7CTع!Ěq>t<\(DsL٧N-IUGL5S-5$n=\mks Įhm.lt0M+fsɋI=jaQN&4r#s(c><>DS;AD_1#1ZF`[bT8㓝!G!Y:fClp-v5j&nw2ȡlA6KmWxvw(iqe n :B>QPZSUx̑Us*w{u.!B"Lht#(+_;Hz\Bf>y\xӓk#='j4 Pts$k66ak,SYSYSYSY e er0u0e0I}qu(?GOn&v;T@E?ݖ$[qsqJ*@EITH@$į(HR7k Fxu lHpx]^fdɉdU `m_ NEᓰoI[ +H!,<3.uɕfAB *X3$!m;k!Ŧ$aƓt&vg< ~6fmEvYhGjgc 9ь&$dFy}Da;QӘcl!ߖlQOS v6DEk ֬b#iɖj3|-}=e*O>Av!p `bC:nݛ!).bw!wC=}:78Qc!\% 777'&?=)?qو|4ݥRi^չ3Dq x/?smX\nuqqo>K`-ui-O}Z>p2n}.DaFbkrz佾{ ЋC\'? qJ`b۵ScN%Oſ'x^}̄:ʘ>KZ,jCe} j7_ +Xg_ ՍD &OӽC.bAPJnuڄ&ҧ)(]8RIRßoׯ?%&Ix}==o|9n9,C +@@O브\c_TǷ||r BW]^g)q +ik&׹ c>0i~EEG.A؊WH>EDhx$8xX4R`]|K2r|V{߾2$M3B[wDhb.LNbXPnݗja ;#-Ddg:`eIdBs un #D$ek 2Vkm&zG01$B(YZoh*~J.Я-\ޟ3J*o^3[bh g{NeYˠe5fZ8ϕXv,7Ԗ<747 +?gSz 9''V}jĎ7Ȓ`L<~~~B}w>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7295 0 obj <> endobj 7296 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS19823V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7297 0 obj <> endobj 7298 0 obj <> endobj 7299 0 obj <> endobj 7300 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7301 0 obj <>stream +hZko[7_r| _ԋDqHvci-`8rVc̐J#q[l%yw3ޯFO*槣 b1b4jadDcIO@?^?6 MFmf+ACcb!L{5yuUd~.H\fMdLnD&WebYlϳTRǀ2XK'22~<Lx-?Io!mlzOJ 9:e"ݐyۆVYrXeN7q-U6)D4lJcΗRTJVYR]{Qrv_~᪱3<@dإƇ{ȱO:§IVHSt&2F٠?8J:zl:\xtү:Gdg +ZMůjq18\~X\].O%xOWQp2m +YQ4%x qx>UXI|ax3:o$VY^hm8 bMt i- E`r֖"洉Nc$:腶 4GqgN.Bf#bN^0p:9Qhgjux͠A'u8wNGVLY;:TU +gH.XƖ?ãgOoGEF;s;kffE"oQ]#Aۈ`R i'(1 +4c6Gg*U ^]˴5¯ƅ+RObzDp8R? g]vlPЩҮHےXּzRijCy׈/8<3)H1>zEBJqɀ#Ɏ&-a @%NN@Vl(}Яa; } dxP 쥉[o/o{[ w".8=Ogю[;7;i#"̰1m[V$8iV6 ͖Mژ9ı+J6 mVt}BJwfq Oۊk_^ֶd"+mP٪mmK 'P+hL^M +xեksM  `88;0"ߪo$hePfkD61v w0$`3w_6xmgqoN +q&'7䈯c1tͤ`amY|9c5{=z7CPaq(dxhb@{X"e+ZSnCN> U}O)֬ >R2C? .o/aQp6KyhoƘe/{f %YSM/O\Dž:~rZHy(lq%fz0{K}eC}P$"&t}[?nl +\7Jo)8<[=@Í a=X KJm3!!k 1a/b]{[s W {}Tgwuw;Da%`H`7KjNaإj".F:SNg@ D|?Xٻ۵=p`$=3|PWmi3WTvmdݲ|/JT7"gR4R?pG LkCf1-4{9;O_y@bOZB7 +T|hCeJ$ѸǦG{+ҲO~/fN[7R@ľaMBDŽO[E n{&xaw-/|kO|pu 2Jhu-߭C a?Z#N~'p;o] +0C +endstream endobj 7302 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7303 0 obj <> endobj 7304 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS19860V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7305 0 obj <> endobj 7306 0 obj <> endobj 7307 0 obj <> endobj 7308 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7309 0 obj <>stream +hZnG}W#7hr$0BˉYBD^HQ"aT~_I|/VZ]2'/1iUJ^lZDCx7y4&'c|3``}½N'!~Іqxp0#xt #/똟(x]X,A6o}41~0W QPUOM1X/ _,~y͈+G#D@ҔӀA9dva_*(huo.oCkS?;$bY?O%4{Ґf(A[5kw۳ë7g7KuWQ-W6œVjPTuj-+m29Z_ߜ^lG\GP]+ x-b P8 0(Ԁ)>t_'~_s -qp3Ƕ jDQ%lel$I5X1^N:m#8n7}Cy֟Oj V5m3=?1RN;gU}"Oӛ՛jmZ=q`u8|D&0H=F3=g'{]]+&Uf1XSGMˬ7(0<@KI{h|S$Q wF$%I$<¹gXJG.7vOӖ0 2MhVD/~r^M!-2,\[2b3,43RG@E=0R>#{RCm! +m!3jeBI)WhhQP̬op@nEQh };Liͫ|*4.6e$#q3ieC^NhrެUgA[`X&>kX2b#tȌ#uïwS+_ЅTn,RteB& ٌamA&ŶH鶉dwO@ Q&QbȕaM@1E|)IX{7HP@|/NA\gOg3x:Dӓo} I  58|}gjuqLzu}Zpnv^Ng7O/ӧ'{|a7]lE\JH0!m͑+|r/ -L<dT-$}tjK#v NRLwKt%J{ƷvjK/IU|*9{$aV.sR.-LtD@g-p3?X" +YF"k F\bê`s1@{t5ɦ̃o!?Ju a};9\/_rM_-h1o~]C< ΃lCub#`qbXg+fJR2V6A|pR`# n\+P ^/QwsR?6ox3~B-6_Š +|Kb<2-$7&C&zI[?쾖Q! 8ޔZ+oIJBkq"{Ҍ#!ZB_+GyLǝe`Ͻ0 m:~(嚳#G^W(`T\3Iۣc^_]cZ7~o)!{K@yTi}3?]}2]7JZgZȗ+ڭ\ſ  >hͨķTVCQ +Ix7hK޽r׉|4a]HB%S}uW!;4?N+$X@D쪸fwo~GYY!d l\`0ƿ1[|# f@fuS{ٙsl4喝B`gVG?/D _m@B腧`s +endstream endobj 7310 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7311 0 obj <> endobj 7312 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS19861V3.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7313 0 obj <> endobj 7314 0 obj <> endobj 7315 0 obj <> endobj 7316 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7317 0 obj <>stream +h޴[[s~ǞEʖ.J,rr0&ZH!pkLE{7Rl4g_]ٗg./  ?ɹ!31;NBH3\^uB[/_lVD"AܖVg {!'J犯5[?.DzUw.ཙtTbHL십S*OxL0E m% +| xE,ʆ\%hTOٵŖcJHy._mdqe-ǁVf>?W +$F)W[ZL[)$/a?2 1a2>0~<+:Eu؏MNe6z^O yR輝‡zsFsIʏqwɂ83ʓ={ꟷó_*嫗gC)y趍? `!@`#zؖgo7?_~xvpjg/puM"m< +x.Z1N.pu^C㕘,&pS:ujIZ[['S-3 b$$J&` NoX8l qjbR~&6F09*7l{,o+IIJ4F&I8Vn=!jrd!!*&MRP¡s㽆Dfۦa6E8Ģ#T}06e ٥ͣjof ]!=`'cT` e/3 +}BԷj!2kˈɄx=@l um23 +`0JjzHR;D8PIX;@eCIަB4 Wв(0b G`#t^a7<>߾~go!azx:^\nUu)2LB T\4}fȷ[5XcN֑bjK#O^a 퀅CI?$h^`B~bб'Wig5_f@?XOlo67z| wwݎ7 4?Qv +~]s|=o`gwƻ03fˉv|P _l _@qќy7`7 j~*X RDTU2@8m'̉' S~ n\:=~A__$[>>-ߍrL3_!!Wձf-{P#W9 +L{#RCFJ.:9ї҄8^| O _ g_](V$RH@Vy3!JtKoyr&2jvbfRh> @t>c@T\#yt9%.1ğ G,dℤ*mfom cB &qYDн=x¨LWC@nc]$qJ;:,qiL F ^)#Q8p±=Ě_[1.OXoM@O\3J,Qy性C`DeUS3<]'J(κ|'[A!%\(z)@KڣEI[ ,*;E"Q[^Ϧ\DFUUsZUmf)~M.HM#5X V4JnVCezJr&)EOACSnV^_0N)7`e~-񀦏 Kk4*>j1?WU#kwbA}\敎ZA~+Ĭ2g:,zfՑF EzuEK*S3NRNSNu:M(wI'kDSiGR9ѯygWJ OTur[^%u ѺZ- l<eaՅE6dQe~L}'S`H,*b4ƸlUDh{].X_+ .'C7[[x%R].5zWgk%j)TFJ .bX_};ʅU_!׋=R= w{GFl#XTCfq6jkpwGVGQ3C,Sú>i:Tf4=}| Th8FN\: ?<.pI5~?[]7 uf[/S(=//Vkd5!+HCBэWKM}7Jwz|;>\oYw+o`ʯ\_㐱 dC&}4.%4v"JK⌚Y},+ӈ] a*k tMkJ6*ǟ ?Z%`^Ԃ<:u]uyiL`ƫӜkW켵, +hY>Gv+`O # +9$pA(.NT>!;#>0z*d;t˼i\ +ObD8fLs^Sk֡ϭSs +ˬZbWςmxPn漚2M,g݂"}UP /F"NJp`-/fjC +/l\.oz~k=yĴOw/)-G"k20ӌ^] +R2忥-hO\$@B mW|qf$(t]F~jmB76~daQ˸`ݱCŐdS!\+;1%ySd[UFpYPym('/ ܑ_I+;/m r>,/TܤlL_w:{i"dtr餫@է]+yE>h4vl).@R.~;Y,M(YYub<(>AN7*SuVtѯoQu~s r~O0oar$梂/K#3 t%7"n (j)["~0l'=(YVA"~[owBA~,-KH9͟τ'gW my(n]^(z&Y3D8|Xy._Y328VUkj9G-'ZBP'uXJfa)UzɏF)]0yp]0"%ܵ)O}oj[?ǯ?qL,qLREmdFݝ)b-dF'[c>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7319 0 obj <> endobj 7320 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS19862V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7321 0 obj <> endobj 7322 0 obj <> endobj 7323 0 obj <> endobj 7324 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7325 0 obj <>stream +hޤZKϯc`Z7 4` ' `; +V6,95?=&ٳk U7z~U=oW|Ã_p;eRJ\C-ߝms0 +ٷ_-9++<Lz98z kbxiivO8+?5 I~x I}'&ͥK\ lWhpTcӎ;:]vrFhg n*>/N/.e|z<\YBN$ٴmh(w_s";Wk=q՜<_dZUF83Aۮ7y-qxAaPSlyKmkoK<ͻ7_>woO?t[Dg[?,߃VfjiYZ8 ?O~~>}O'y~[ZWXAY%y8<!,׏42ۚZ\H6˳Rه5a絅nז+Ln-{Z=p.TX\1alo /kڰ5f=p9`έ㳮ej{T#p zw^}B=q«Ri6a= M^S䆣iUe(;ސ>z{%ArjiAI~m[Z92Of ^h!فLH"Nwx4V)C}7dGYY X 3x +osiS\k*AwH_ގID]y4s+,?V +2Ye}\:f}2փ_ ׀/uo~Cm۴ud䙚9(j#Dy0NaO%" CcL)x"DLmyrVTڵШ7ozD8$]Wp@Df'_1%VBIA>_~zFb7Q"8? P Xz G@C%16h:"%'==: +~] Yڗ<JPٰNS$D%G2kOD_jFUwyI?2"w1EBx* +LE1pn)8<&&wfo`LVl +hta2DiƣM:~EFVm`=BVHW|^ c6m:QoFUnIx9`EO$AYڈAL1kWЯ%U߬~5%TqUtMt YVfz>֖S]# V#!iHr/7db lcDUGQdE{ಞ_nD'ʸ /3.lI0 kiDpmSMn_=Q@c8,ꧣV9լCXs.l @CpH)LYMa y:,~Zt09%a#32c؎3َ-`K9 A4`$ױJѡ.D("`9@4gtw8>:EZ S6-{?.=LT /[7] 9:ݎLb\'(Cecﱼ"}{A¢ F"Șն#IU1}TP:o6W&}X,6aԛ*XwIQW1ӓ1„(Q;!ݝ?Xm +J 08ch*1 Dۈ`G7G?Kq/k*A{!aUtN?)q +eoHK"ƒ:#%;;+*PKa-zݿgqPC]Wŏɬ;N'%Y~+繼z?%dܫV?pgzIӓrB~ AV .K:ϓxB +eT*nCO: $,L;:'88 0۳IgC%3N9TNuїroȿp"_Y#ي1b:әݳ}1C9 6F:zł=xP|ɊztVC؊1y5s͍A[t\mBNӯBT-䔡#n.[#SAV$Zq`a6lW+܎v̺l"z 9k`r( :0=SF0 SRcä3S%~_v\,AƗw>V씞^۹bGԓ' 1LYyu7~5kzr~l4ixPtE.uJdm;^N&Z,D9<>/RU'ڴmYLm6f9M50+\PPo I=L`Zxx^hߥ+mq.I*&e?%>V?l\pf6c"=M \+I +o㏑לnc1>4 ~v P+0㘃hg껰HcUΖJ|̅{t?xc 7t>̓nVX_+R|!>A薞@1qNi} !dUEeX嗲4U޾W?H']VmYiS)|1|[!PltoQi䷆/Oy?e(?1Q<]|yWjǻo=Sw5_->stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7327 0 obj <> endobj 7328 0 obj <> endobj 7329 0 obj <> endobj 7330 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7331 0 obj <>stream +hYmo_)4aSJRkmFASˀQ>3wiov8d@vNAFt˳'>jyȳz[ 4 ԼJc[]\tkt:ʈ/46,9'q\ ›, Yc~h3&jM 4B{Mv^ I<~ԥZ9ڻ6^dHr$|FXR4_~~1]-w˹:'*;͆vQCk FI\J[-Fj++jd*i| Y̱8If +1cI`$:X5j|+ Z"Ӓ$ev .w#UcMڌqFk }'it`h˻j,f,H@f1lRKr]KAһBh&Llii`5=Îx"{b:Q7God{n&"mFYnM%AdK۰R muQb14r>4S1 +/Z!3M3Vpt&'p1صlGCAB2 +e9]#dyNhS}gy8镌QoLDužT/ԙ!YOͮqHMcAū+:M~8]Ƚ'[zm޳\R#..l9]KؕIO)pؽٹZWP%3 Tk@DyrMlj/  ܅PKs;э 3JŸQE ™8򙗂=C]27[42Ԯ% >.K|iD@l|UDNTUwakCy%?--)6uXHdի)؀0Y4Ep^[+kq^_A:ɣ,U- dWT+0s`׉ +*GhKmm!-bCYjʍ`Ec@=dFvpST} fP}Z,E)~t p1n$#4wó)xxRM8g|>+771tA:dwJjbm뀋*i&Eߚ,>H= 9@H(<<wby_V7UM"h ]wTqJZ⡫¹&;OR [;PjĆ;F`uTQPnNۧsk@vwT+ >RKo 7L747Km*z/~) 35y!;nnxpKht8JR|o`*h<SIvRܠp v|4Ѐ'IAC/kfWbg:ȘR\d'SAv@(Sjï_é O$ٞ-1o|YotZcưHw qdž緇cWZ ^PN druQ&,KF)@fZE$=隍~k~B,D`f"pIT:jnb.#~L@uκR@iz:_s + +*n2Lp<; )qu{'.N'ӣ\ !Vi=ˑBYZ2iFg"hSn|{s|BW 1[פ7U,j/|VdS)"lx)>ZE]|5ó7<, Ivnrn 6} 2}&=Eؓ UɥUA}BP.9Bi:R h<(XYLۃcڃiQW,z~[{]DaG?8 `,nI缍K\D, =Cz=.`3d[.\[7V˹ud}ìFc$XpB@-hmX}!.?CayN^`A Qk!&׊^Zݗsd}V/[Z)6iexzkA?\Xw.p#ky=' eմQ*k: Io151[.XX_2 7ت u^aA'acob?H +endstream endobj 7332 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7333 0 obj <> endobj 7334 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS19863V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7335 0 obj <> endobj 7336 0 obj <> endobj 7337 0 obj <> endobj 7338 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7339 0 obj <>stream +hZio?.L7V!â"&!\*4VMR_W=LI g:_nϦ-,s +?4AMʊǁR)3σO23oT%<=(F OCY\ Oe +S>)vqn@+"ω1K|Kz_X~d&>u-. v׼{]ťQc\I:P֗Љt1*#": ilYHsNf>T1~Rf_4zn !8ΣƳﬣJ yyʉFruZ=a +2H3,0ÁA&LN{Kmʀ׳>ί᫱1Qgǃ_1RԙZ92푸&%鳗F4n:8V&}(e2mҍҁFfA9bIjp:#U0<-ؗ[&,ZUvb*5-d.u4f$] v-DGZFC$LmyW-E6 qAO|xlRKb>u-2 B3Ag0UL#]K/r8ӽ2xd;f07+62+/2c==v$litU +IZ5OM' 7@T=*2h@E̤&aA'.v$D +5,VؚL>v |&ڎeh4 +:ڔP(+> Α #!ѫwEWW]D;C;djI1앨Wش[֋8gd,Tn<|AXl0CF q.ED ܳ޼gMHFZ]tYtD^0c]isNtk:er<vh֮8eȲlKJ$={">Q4 =}(B[R+(6[\r1NcN5"?⬤kF#y f|]3zHߦdmG}̍Jcp.PpE +`#[3fo[XC"QS󥧂BMճ6P lrgZU)>To^,KaFTA7ԡjOC jֈhanR.n|@ 3e`nWE̠3Y\Ďs y኿ > 28@̒f F"_MtNL&9񤎛Op,x%޾C𻉡 +wD5աv{' ,$4~n7lq/2atTH [X MJc)[tӹ"d?pȤaؒ@^C 8F9BT80DԀ: +2ӑRspuA3hzVXYlݬt<UrےY)GX5/֛Z{LĐ>`@+p?ma^:C&8fnq|6~ _kH zjS[l I.h ,jk9R.e۲;`NMNO@'I/'ǓcAځ,HiCȌ}p\$Q%}|ZK4^3njmTᔖQ,ƇcG(%lnBpmګrJA?z'Q4?hvMD-&5e@4jF A(t|D /xO"\+O#MPTƷmnvqi.o混4u o񩑓AęOOzN[lI@@y>+ ;.鰳a{}֝|Yn6GWP>?ֽ-& +[]X#6@Qp醺#Z"eL2_MLj"5_-v<]*_~PrC@3턲N4K92([|#@p7yW-vK4(C @>!ZOw/LzbR~> +%2ܥ z*vNRb-E^{|y ~א @H0o_ؚ ~Eܰ3SMWYlwhTIƺ[bEȥ 4ddd w(y?ZX5k=@5PlfdxZSZ]M[w$jQn݈ MLa#DŒ8LZ/_'GP-NTPK)phQӿpT'7xk!K^ܬ21붋nqdյQǣ˥DW[2#kBztDއ *Y6,zD"Cie""Xn~<R ^_:^tAta+^` +jgg14 +endstream endobj 7340 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7341 0 obj <> endobj 7342 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS19864V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7343 0 obj <> endobj 7344 0 obj <> endobj 7345 0 obj <> endobj 7346 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7347 0 obj <>stream +hޤ[ks_{4PŪeKl|)ګ(9$8~Ϲx4zg$e}q\7j⫫WWjPՏioC'kg3\]Oinкwgߌ +nx"[|"EۥV^EԔHy\Mun4k9_];%LZ!;gϞ3^&|oev +*OxmIf*Ss_{#hi!^}!Kd&]}}AUP֗q\~v쇹Ll6CyKFp׹)MF2W𬇀?*6)a!8^xQv G)T{z/W4ÔllmPq67U&.oX^)hV^ZUM 9qTczyS f X6Jln(ipM q' ǣ3'[Cd9{Sp.vf]`rKd8lTa[輒hsZ^I+0ܗm5È?ÍKSQVZC/D]h/dMNEc<6vm2/JrPA$GۣʒwM "y(?c Ud5{iz_R?li|5<^1tEgprPnvmF@W3Tض^H;ѤbZ1W-zes5Z(#bl ǂ}spbk@l9njmo_*`3 PЂ`5漤. -Tug 8I|TIfsTb-qR )$2/PFB<3 ˹c% ~Nq/_Sg([{#zSLVOx}7꿯vr2˝ (xʍ/_gNB⨞mXXAcቱ/%0"J0veuI(&g:/A_^q307ݤ_xVp0Ґ u3CbLm֖I ՑUg+;t>}{tԒ xO*43$T{I)` +~qfed=UK +j꓆s鎧F<kZeb剙jpnF-BސH+tՖ 0 4IeZNjA稱޴fמN܋u (14^xO vvhxͥ&DԸ7YUEt}ůnkj%A%^( ɥDc2Bow?9q} Y5;baU#sA6mo5`Zg AE+wؿ4$}療b=:,C#w=ԍ;WkD5vKc~H#bJ4CJ˩V5[i 26_a} š9â&:X8ixT?RR4~+mGRțؙgL(.Qs/w[tP[=\7D/rW.}MVa@ +WWt}*閫70ؕ=:+}QtpT+$/.%l{g,eѶb)#]X_rg$.MFDBϚhGrDȱv[&̫ẢPԋc{:aK[rTPAW̪( $T) ,OJ"UH?oUcfke0I\hwlDw8!UaL6e`ʌhYt\0h|p@8~Y;ޥnUVDrH: +L@[\9rUV ƺ!Ey)UO q!f|7Zwk列{lt4Hb'WIvnY^mOޣȄ )NH1rھ|2/1<<>Xh蔸TXjs1זyKUcGz8k'BB9jyUe17fA]@ԀTۏW_H|u& 63(ZUQ t 9Qn 6 LtwF 6M"T^7ÎKH +annݜM HA9AN[Dt+IX_az!O98c|gFwx[KFy[eX@.hbmEdE=rܶEErqδm}i*5~1s'C6A`u/..C=h @g1p% wr^bS3 ;'ے*6y6\xGSf(;Pޱ'8?Ʃ{,rgD,`zuK}CG~';cejf~êTSDoVs?.pAa:aRc}8v-:(jX΂*RIV1¹em\?|pmtHE* b+]ߞQ:XK.愎W::⮞F-C4:398'paY͝k9r* zxG CggyߎrՄɛcnO~ꌢ[F'ݚS7VeYسF RVhl$kex, 隲wegkDG.Q5 -gmcoWIωC/dx#VExUR0ENq8sN?/kB0JW* hgC ;:C6WoB̂-pfo:z]5rV{"c)Y_sy +Yf!^>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7349 0 obj <> endobj 7350 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS19865V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7351 0 obj <> endobj 7352 0 obj <> endobj 7353 0 obj <> endobj 7354 0 obj <> endobj 7355 0 obj <> endobj 7356 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7357 0 obj <>stream +h;Ɏ%q:x5{&P t݀zC"ik.鞖A =r=##>/??㣝%N 16N)M?<,_e10yt]{[`/- 0d߷g{چ'}gbfwvi=eaAC… :3fp IF +T}w7z><{h{'0/bHi~D`L! i@̡x3}MҾX7{2%xty6>vv^7&b;:jǶk:\ɦ\09R л3'<[m]f@C0wm@-q@TMʴ@Y0ڄs熡44l_@G֟#TOho"!S2$_`ӺlTB%o<<('\؂n!ް`~Eb<B NfvyjtBm@ %@hN?7Ήk1ԛ{Պ)Q[+qdxl^:U0cA: 7庝mm} [ђ݀B2^_D Q5bqYo/p Mq4.mȥó3l,;Uw8cġeӀ7F29̉0X/>q*.\Za1cto!Lu@@XGK@@8F#(Yg2hm8msZ=sK$.lCG,cM;qpum/{U!0Y+MW"{=8D3)]E:m)Qm>lFOl]Wf*#3-jk)Y{!CQ B=wpCohH$ƚA~^ +X?UN"IazVBEZwjz_ J<i2^Cb=G H,l4ѳKB[~aj\^6Qh^o0KlS/SosZwI^-y<,ꋱ9*$Y}  + + ;)+ya4Ep_n腄^Zpf07ќo0r}ނ%F?φ2'?@ 88d%ˤ' ^H1o ƂPș MBjX}c:ӓ¶P4yflA_-A+{9ndzyf-ggr 4:dԝ:T.7=k oF{f4{#֛f3,\g `Mv7'^b7F_o,n?qQ&Lc0Vx |Gqw&_>׍{ {epInyAءuýH}'g|4Urș8=p*`]?C9Eث}UX4 Uv^oݬNiDX󠘱1}>F xtS;"AmsT[|r5ƢQ[;\* (. ƞ;=IGcO +F$q@aM9ֻIБhz,:cҍN>uA1WaK(rNB4n9+#uxSM-oII쀌pe2$j6Q +IچSH{$k`s5IeR6nD,F#JEm0:f'6Ns8vl8Ahrrq*` +,kXe:da0  v!,7B׵8H߸6{@{3&5pljԭAτ4hϵ{gOR={9g`Jup`,cX(:Q[n u2^'X4 +t\HpcG\/8C9Nk/h~PX]O~ҷ`\VP'\MKF1-0ь ־92e66kݮFItnl0;~DpqFMhdA 834DM =4LvҹH-YPL>n.7E)NYv _).,,;^-&U,s|D9JmjbͻXHm0BOG[fsd Ð}wo-&_h?z,ڲ:Ty>oЦp~h6";VoZ"V0Zy+TF"izŝ^S80_DG@hXAǐc R@{">L/#|+vGs(`Z7Awxñtwy_[ކ˃Ѝ;̶|kUp+OjVJ5XIkoҰalgb>3< Zpi \(u_#P2f%YoTmvz[ǂ)4,9&N (]}Ҽ1wc^#Wؔ4<,]z̍lu@]KA˨oD lLJ7a5dN,1~kgoC0s0e,}9_Tp;wu^]:fEﮝW~:˫Z+))@!Z|vQo[fg0̮7+ۀ2-o,;$PMev"RfoPfW3M`zY3MQ5&א *”eD ] Kژej`,SXQ2D w`p [sfry^w<6ؤܐ~aӤqsYNW5p=9]̧` +endstream endobj 7358 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7359 0 obj <> endobj 7360 0 obj <> endobj 7361 0 obj <> endobj 7362 0 obj <> endobj 7363 0 obj <> endobj 7364 0 obj <> endobj 7365 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7366 0 obj <>stream +h[Kqϯ#)~>6d@Y@n4]Z_YU=l@,Yx~lwR^R:T`Ý9c{socͧc\<[^aX[ۖіRۓ]H}E9jc3ߑ^.55!ҨFMBchK3a,\(iq<*##$-¼.ZSG;cӔ/&=[l;{21$^'V<f<2g~`QF F ܯ^_`gC-ai{uIIȇz AoV#/:.gh A pe!b$@l'Om aj(ss`ۤ6Ǚ\^j( #lYR jOOa{GkoYMvӪvIbA$v` vKB6ix7HFRy5,5pO 8^=Q~T5P?i1#i╘Qn{MhTː@]| #=<4ڸVΪU6րW| ny" 7{R.G`ն +ڮM-f+r$b}8/m +7K X`9 g< yO͔-%x0Mf5`;b$AfSu vu}Z;$\[ް)ODbfOFp)ft" +_* +- +0̐Qb<^ 6RL@! / a%d=ǕO$q=[$gT)vW~Ziـ݃K\"CnM-p| +iUB!|{(;fyPeA `d|>, ."S<=Ag"|"i*OwxPc4b=`c $aB#ghO "4@ Y1XMviJtVDO@is[ghlhX^`%,̤ǗF_\~} ^ƾxO/!h=K{=_>ՏavΙmi$/}Kȋ/v_<~X 6+-q?/1,8eBSoAVoӥEF"UAs95ٗUoB i(-ՠfðNŜcU`J̇ԡ'D-߰VĢdK܇ &,]K"?DF4ΌEtjҦW}+/$+"{"5f<i2Lo@Y;x)Via4O8 Oq&hYv +G^ڎ1R81F ܁)1# `WTfxn  Gv=, Uaƥ35:H͹Kd[DPx$rPweqb#4}ϼd|»'3zh N=,ԫ69ۣZ%G +) 9ؿFh9xq)HaGRI1@6@~m+f>& /Ũ4;pGa؞*L$h@!vѢhx฼#!{wIvM61mv+yʐe {)fSo~ضuVBe"(e{l1JF}ޙɓ PY#e^61b4zS>r$lY^ R]s2en[p= $%6M8ڡJIOP4ːtNRi TxT4%ޒ/F4B[ ۩5S Lm!BTU]c;[H^f&&e/[[cYgA![attlEH}a<+JPЗ~[L*9Z9Fm[1k9b@PJ|WVe1:h&} ?MC~ّX'I9Lwj2n미ZyWN zVg¼?M^ºL"Mdw]WINJg=Y'n3Ydqfǽ1W}r _VG9b)~] +ꃫn 5çZ֩ fV' e '1I F'<|0|~a۱/^t~bm)BTVSQ* fr$;OW;I )o A'7I^u$5z$Tfj\tA'Qa3!j"wf,e'RoUG>HRuԕ:x;uO6V-gܒyOضZmockwQl Ql{Vǭmހͮoc6v}꟰kwmjƮz%om7[LJEifL:ŚӝeaCSJK*Vz6E|r$I'ۺ +'H<xO+MdXkQ S|~P>?=sӇWu1Mp;ݩ +endstream endobj 7367 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7368 0 obj <> endobj 7369 0 obj <> endobj 7370 0 obj <> endobj 7371 0 obj <> endobj 7372 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7373 0 obj <>stream +hޜ[ݏǍ߿wVw50 3/p=̎w} +dɱd"Yf?͟~pOy{'7=ܭC.S)qu wݼ,_w;.,KrW%VMdgSӱ7,F~yN7c{NWNwnsZpɏ ,Omi.:a-._*/"hv%Rv WVqSWهu]9uӯw/wLVW?Էr|Bxle +\ߝy%tHDyVr5'OtK*lAZ[q5l{ j_6kT׹Wɥͷ/ޗ<}ۻ@wtKDm]0}>@ʹO.a5_ߟ?}_]_a7o? >/ktt|ytp xnJ&OQTg9qs9P9P.%.|#,0@)Ku [ 4v%{o`^zS#ssq,$cc`ym̀#2jz:A`oT.Ьnj`2!.vay 'ܪ+X}"q[Q4B7<ãg#2蚀P 2$ƺ?Ⱥߑi!Otn)Iłf#a9J=a[Xnc -]\ ze(ղGٵLq6hQYOW~FED $>lQrm؞\w%X(,rO)N.a乊/؏Q%nKqR> yaiW!D>ʾx#!i3Zl1-<3ƃ\ +K!lyBSx2S1 Ld9!;bS.,J~> JV_D )˾4s&'vO0?O(`IpTNVE[hҫufjYzF^z: jCgA8䪒YNU$4@.fvfv-/Rv"5^A0 +ۭvuH<U:&e+@Wx<3㈦`AtAKd+}uH$ZJAVG)7%#,o9].l"ndwbL{E:`f= +\d'QMFm 4#;y30Qq6Is$&Mab0VY6kMwƤ؛t/0F]X-e,x+3T[ܞ3S&':Mxwb[`(=k> X/Eٶr@ -, csM]6qg^ܚxڹ"^{.<~ 3m^^3H4M3al3Kefzr3h`JEqz@Rs۴V|{ՠx iA * +^GFѪ` +zjp܈qȅ zVa"2WaU#~=:=mbp7Fi-w%6,5_wXN2՛mBB4XAޚ>Ǩ`_ߦ_+D@B[ߎ˜Y̺w]#lIb~ś3MTA]Ii;l!;ncv} ɟZ.&L%t`(O=$|,)],1V,,Һ>3=8B51lkC12Bڨ{i<(q8̻kf^Zop,2/WR=p`DO pA&ZFO''WIUy.U>l4B >dg/C5!leu @>3ܶ*"DunvG#( A L*ld/fv +j޲pC8zPb7EE#jT7YN +Y.G1A-lbzlYMm^0nxr|v;y_*5jc9d3Cgԓz=KH8Rx9n$ܪ6c͎v'WغǘA_V[|wXN*qOSʺfSL*T:\ +c\WNw9w]c].png,ɳaRr;IKk[1ճ `MFY*$Hɼ݄ +K5/Xnf +WCX^k -F+[ǻ1j҆ō~W=ݖ42_qؗDD KrP +r_=7ִh{bUS8uzP8wv777OVLk6f jwr=uv`co=㊍\ۨ˂Sֹб[5#EYpjÁY_k?jUs{;ghv[y;" {A:6/L(FơhQ6d׹ns;[ղn=vgGbXȋ8nDnUsRﴙJaH x2<U7|\5`_7KkFLg?%]z`C҂]-f1AKh̾ko?YkVlyMuLŹ")ۈCkV:-ǽYM@AQ:fj` iU {YiE$)R*P Y5 j87d1s(n+M {pat٧Z~H`N r\lX49lcudzI kfX I^G3nHFGPd;<&Îb5ޔ /hσP?;yOs8Ia:Rȣ{JmaYD c1MZ|l'T~U"gM&b{uu.\z􋨖DQU٦=)Uoz |wzk=6<C<$ d55=>&6dq2}_ A?MPZ_}?|cm?M`:o0yךO3?J{* 4>>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7375 0 obj <> endobj 7376 0 obj <> endobj 7377 0 obj <> endobj 7378 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7379 0 obj <>stream +h޴[I\ϯx}}lr0rL +$6ތd!ݚ^,UOy|xh<b࿺הj_?<姇j Jyl1P |9A-X2Ԅ=c--)ڵbŮ< KOT_^'51vi90HIHq'r +|fԹPhy-PUKnUHZynJSG;\>^N8;M Ln o dbHNV<f|2OR`QFF7ZeʴJ(8lܒ-|uYC,rC05QXܬ{$=}WaAs!H/dF%,,6bo?s9/|W"# 6=ؿi4 +bÛ>緿Ͽ}|w[>o~Jl55Xbt şn06KkBB^n$ޙ5ܐ.VOί:g( re!jP3l6LR`,sz嵆ea˚BXBka{'koYMTvӪvMZ`1 ;urt5!\hJ+x7"y + Ó^=|ߐ}%S Jn z?  N?3[SP˽"eH-P@' +P 2oi qpFPJJ T<ek@+6E^Ey8x?W0Ĭ'\4(3&.֌|AΛD q_-s>*_`Y3:l;"o`M5.Mh7)I+ʧ $񠚨 k_ON f`~G^FCb +M-%a9{*{Oeױ rT(V2íJoؔ'P6G9ژUIzq*X ̚(6YQf"FtL E8K7S7!Jv-DZ,tr2=6CE*wGVVZ .s c]he#"ڞ@,e|&[| [ޔ ]˨P鉢 +fʳWA M0+QkΕQT)]HPfpR='2 +4 j/Vae3j0XgC:Γqo٦QյqN'A6jx!!y9%I[p -YоfljWxBGs44 ܹRՠ́G[նMvNm Qlala]IakJ48ywݡ(}b]xFͪl`ȒJO=a7a0iru ͳ8t~iMX 0tXfxh)e K^xoIU&K,g 0 {h4ߏ]>L L s$|سV@ B,c [!U vqM0̴iejRx:S<0q`R+^BUy¾XֽI_P|dA^XyꛕovJy!7,2JD@.ٶUKwhҰJ_d"u䤓ViBv4}JjC,Qsco@r>ĽНKp3$M7ъ4jC!&1A f{f:ȑkeF]|YϮ4M[G_#I֦nTޏ+Iu4{QA}xMiuU-[|bh Q=fh UIJ-'^2wXJNGAgQGkѴ*qSYLB}>q%>!P%Do8Ԩq9++%_3^>5esP굞 x,ېIdGl*uԂ /2xeF-q|C9{\O7%Ȕ#aKcmx']^M EyZeCtQN43?W|֫M)7ozSIOR7Ry3M5(t1u?~5gյK \H/m`nhh^t *8mKxrX 5 PMbL败X+AHm#<3G!Ko&woS5 `Py.QΠ>WXrYx%sg [{Pɦ]/Q8ָv )="$}.X YXX fn/ +[l7'A;*6DT.7*SŖ-mcE"w$Zj1j)xb"{C"/sPq:r" 0(xkʺOyPRe ,,fN *,Fg^VsmzeL9!$P +>opg?ϗT嵑.MCH쀢$ +.υ YxCjw¦di7Avnݸ9K.:C՛ (޻ +MB18uc Jl > ɮ~ޤ0Cl +P!~Y`^C` M(2wڐ˄eZ<w<)qI MG[۩x3 b3h G?6Z^!-  +GG]x}F03U.^|/v. +<{g<ѹ^'Y)u݆'?M|1c -ׁSC.Sj tѧ7qhH&1H[Жg%V,#f ͑\3 k%~j@z /! CZrM*]^n~@f;ۄqGu<}1)K#X|e1Zi?}/nEJ; m'ٷ_ ۛkIT8y1wh^elEҰa3| Gsrf((>| .dlU A_ +SԢ#^]Q.ri~Wry-.^).;$it%&.$ZNۥ$LH#Ng3`&/]=Bh}#h1]|(>S#l֌;FW#5jk0ӏ޲i>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7381 0 obj <> endobj 7382 0 obj <> endobj 7383 0 obj <> endobj 7384 0 obj <> endobj 7385 0 obj <> endobj 7386 0 obj <> endobj 7387 0 obj <> endobj 7388 0 obj <> endobj 7389 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7390 0 obj <>stream +hެ[Yoɑ~篨Ǧ.} ,jl,aZ-r,d3EdQMĪ##"#~+=ٓk3,9L +%ل)F7ۤt}_f4:PŅR栔r O. +Zwvۗn ux*gX Eԏr"a"h͙B.zk5.lJ֗f]DO3Q)4sfsN3asi&lEBZ$T#jY4[K{ymJ/KI oiR3(N0a4r`inP3Ü&o6Ógo߼y<4<}vyo |=Hilmc 49=>L[)Q3Z}n|{{CYeY|0}8` BГ7XG!"N{nL}vf岙R;;(Y%':YݙYQu&a nYv!5sPY2LK:VU5^Cmg\6z-X <$±S}x{ڪ'&"c^W=[ٻR\=PU #YëwooL{e`9e?(wSyLv3 .i55RD![Zej;["'-jL;c!4bJT TĎ8(sQ [,iw +&7'[c}uY&KٔPJvl9c$znbVզ }c=u\->Fy&¢mZ?UHCVPͲq8tJD G3lEu/loLX={dnfL5ʮ︌mQtv rjBd2KV76e(,[|H7z>mT$ IS yMYjʛxcFqZlݞ4tmA_AmY_Lx 9/HhNvii$M"рͭꖺJ`eZ,F2MIv:Rl:)^eּ@ +|ۉK NP+V=(qX]wl~?{>ϰn^ݜ#o7*0^㔄s_?L(o>9}}@j΋C)mtfD/,7w =_MxKϻWw:d36Ҭ;sP' mi +څV ^:T +jPfe",{mJ-v24]tW2bGGL,\TXB&EM9'vuu3]\̨4 +JF|i# fwU8xXVkn5SGj:MX&5eVy v^8١/oi/UI<COw7y^mY:˾=l3` 4P֏ύL7> 9+6Qate=c/U[S -YZ/:lHKF8j֭ mK4kMjWHǮ6\T|uɆe4j㡼3ɦ\NbvjhG/ײwp'_1 +ڸtR@kC=8M[BHUt;]N s1` kTWQ09צwOx,8q{r מaӝ)Vǎ6*45\\ v5:v0i$ڶ >h w=da.'8XP]xm- 31`Ů= "IDՂolApfɮ8SxbׯYY|b#È*X=.b. +ksxAo Pa6DiX"4&+_)7ߝ#s7(͛;NG|+MX`HE, d(W& ^/.^p:G5hWDb 7Ө}h;V􉨉}"]&azkU +֙aan>,%*/)?pa)HrAi^}:P#]At*I'!MTZ_:Gahl^j K1fZ-7P"Q5y. ZT L-Do58s2t[BCZ =d-0zIG@Qۂ0~~\mŒ}}ޑ=ڽu}m/ 2n*W\Q>|)s~(̑W6[#|պdNx92nɜʵ{sRX/ *DI9_E92nɜG#5ŷþ;>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7392 0 obj <> endobj 7393 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS19866V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7394 0 obj <> endobj 7395 0 obj <> endobj 7396 0 obj <> endobj 7397 0 obj <> endobj 7398 0 obj <> endobj 7399 0 obj <> endobj 7400 0 obj <> endobj 7401 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7402 0 obj <>stream +h޼;ɎGv ?5MH9 wE3b.ZA3-q3 56:@!FzM6^ypUip4߅5iGԂr"$EMTr(]X;s&45zXb]?%wI?tUg^w|BR#!4#Ml}!FIX̰lg0~"k#X@1f{'10#ouhm8^Ip&y]4C󛶣 YVVW@9m:n%H I"@7PGAF??||`oA~yo waA9r%= ?"?=ނnKPoB|H01k%-Dy(=i|[yLN51L:ģFp'1瘳A"*ĠW'ĠCӐǔA2Ӗ>)2eG tHL15ɔR)e^8l,6"TǁmcQ.4Ɛd?IWh]z"O*$ɩPZ%ٳsdg$nI t%P!)zCJu ̩U:[g1*kR._8tE}*e#+'|,mD"EW/´1m=K]YLwmsQ7kNܓAWzo=&ծb`)'Ƥv^#efGׄkCHBU\K*jUsGY\zPІhX% GR4XԤ8YLzIŘ+""@w:"!I0kKO&FTJ`Z$dzk2fӓ9 6 +2z[tX̱Ǒh[ Pgjo(Hq<ѮItmp!B(C%(ɂEE/8@ Ɏޝv,/ +NtB3)G]k݁0`i ٔc:1y~ |(ڢVyt-#[nf΄ˤEB·@[LqzբAVP *r.cP`#LÁr(W0)ƁEl(d( p1> YF#1!0reAl +Z?n;FġT^K}.XXz`VlC9,o|R؋#Y@{-a<;%/[ 6_iX6^@HFb.:\ b" ',;H3 9R .Uilw܄`g4ܤIm kنjK[nt..ECh9sOHKw 4Y%dsfQFR}Tպ!OE5ȥǍ* 65x4h#w*͑zVDi/3އ3u}<)|-.ptN$ctk.lc.K.1;!gyZu ףU [~Y\ἳQU6xKf/<A F8qeno4Nr +/*.?Zmm9F;ZY%åFڰr+Nn"W +Rz=p'1^,9]o;*;$msxw.-,wӻOӇ'꼿-HA`|>" O?~?N=||O.h<_ox>>/?_ַFrY]ܻßϷ# X<]eSo~K?:CT^ePvz鏷kz5?~lo[İ_Fn>l#ň=ֳo+LN g!qÊٚ蘉&,"+-: nvdZF瑻MlJ3%~iUU-a$hnZNC[?Q =w GOW%yH\U_p/׻Ve,亶_*eؽpl\ʆWیhxX-$P*URɉ/W;6Yc2'ik'~}s*U>a=sc/+^VbZB3粓 +춼<|~UYhzu!X-HR%B`@kX*l*(1[WAhJ%WS h/iү X;L|]9dy*oo\e@>><݄*{p\?'Z2pqi/+fcOю'Tl<Osq8fțq\8g` +endstream endobj 7403 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7404 0 obj <> endobj 7405 0 obj <> endobj 7406 0 obj <> endobj 7407 0 obj <> endobj 7408 0 obj <> endobj 7409 0 obj <> endobj 7410 0 obj <> endobj 7411 0 obj <> endobj 7412 0 obj <> endobj 7413 0 obj <> endobj 7414 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7415 0 obj <>stream +h[Kqϯc.Vv^2hk!͙Cr]?x棺zH[ 8ΌW'3|ͫ[;f8L48G'7~oi2P 8Mg*|?/?#.n Zq5<|ƮiXftGXK˿㍙&yᔰS3a3$e⒩fxҋ!eXI3|{{banaiFq]9푽$H[s}I~s'3I!䍅:q,ɹ.k,$&+qLe@..Š7~cfoFfhJyOw__>?q8?i4gh{a`adi8;a$iGiGi;$}n08)?NlO3TΣVg)Zj90.dh(m>hcLOtؓMsIC k,`̘,~њHikjaGpqfMB{kZΥ<' %pM#*4ý- ro(omJsڧ9 ;;h;Sf05iq4H&g% 8w;:O[ +t jo!qx `  RjR3̏bLH#eJO% #X +[2 &?J #}uvw҉ӖK#h愂%AOd5|u|5,PDxE&¾:}J~d't=Z`oȫy aBE8`0O3IԸ4.>'е_@ݴbp(#oEi5o dւ% ,` 6&*f`f)E|12/s妯9cm +OO؉dԵp,:2gd?& pe4ˤS; QizW: ]p[ {% ) +80e҆[i$}Ձ#aH*;E5kv]^6ԕR+ O8S2Ѡ3uMwl׳Ogq +AaB Uj찷hi|dU:i +i;[!{SX\V IrPj/a"hi|Hhy`^S +6CM3C9߉SQ$N;؝HvNE*U–2( +r"M1rh:N2F7.zmȮ4$85TmZ3HAM829iWA}XcU hˆ"sfU V7Nv$>P~˦TqpZEbc>OY|haTQ{_B-@jEZms5 $%q 6 -@T2D +`ZŅaf+. {-dy~_$nȲyƼv%_1YL&Xy}?jh%2hPg{Mڬg8W)#.PzUl21s)w<=',v0SWڽ߇1'qq鎾x.Q^+ NPvXR+{PX !:ٙtmiY£^HF2{5LBxl:(lTS\a%T'ǩ >"iskZ܃RC*Dlf0鉴$ig)l.aq_>@tϏҥHV5ƈ5r`6DCP3Oà ɲpX #䆞YlcC%zyJ +k4JQ&VqW,w}ۘf(1)k)Z&hX +Qu'[[OPaFIMR?Xq@fBړ}3pPh[ +N`Wg /+Dy u[ҽU.L^w $vX~񛡖KG~1sPvj6W-vծP":"N /ekCEp2tAxlUKۢ GNΚUڡ㸝4ͼԹJD~cwlAxbPVT 2JReMz*}*]|`gD=iL]=2Li/OG LNRG ȌLZ^3>Et\断$K0fhqeI]rp s [ιʽ܆aDb̽(%k&)H!+ Dh(tqDr$E2|ZZMluz #i )TYm˅T,U;xzť d#az6A ek 0 .U:58Ų.h1J-] v扷ȓ&txsVaݮT4%4Q胰7ZkjM $-m~5 (Ե#.S D՘Ea*FU+AT" +qI%(`WT!(lɿo]ɂw]O%j[3%? 8#E}N-WM);}cL?4;Vx(T[!B&MX*R/#0M By+Ǥx< 2AudM.q/"ȫ~8!ӵ虿d2k[ɂ]rS/660ӎ_Y~jcb\dԚokF^J-➋C)JZj4DVWmҪ_>yr't /1pU؍h.oCҊQ逮 Gus&)a>'7$=8]ʏUMP o$Υi&n'iW<s +c{tkZ1-_ȂY=qk@9Nhv`%4:D b W?m*䵶e +|&Y2c*)ݘN8Ʋ} (Ao{1Pͭfs6KMQ8Q/y7# +N(SsHFJבQYpȻ .b/i.QG |J=9kKW_%ROK+FK86/S<^?t +stȻpR,%6g jy EHDxv n +]Cp]?/æH!FuT/+nhM)3`r--#+$Wb03Z 8fW8XCG%8|;Xr~j ܯ Ece$YAkt=9 6f}Ø&J'Kq`l`skGf۽vи-{tM]#n\ ;-5vjG&m2\_emj{zfu1շRMT?O ?1 7fB68 i ?$e(O:Y#۵\\nC,ooo(a3ظ<"h?R2e8妘`Xmkf0jk|bꤸu3/4Knh_Nr04K$7sFB})Yc/)T2hF2d&KZX-Wi9NVɕe6kK!RKbKS' 0ghR +endstream endobj 7416 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7417 0 obj <> endobj 7418 0 obj <> endobj 7419 0 obj <> endobj 7420 0 obj <> endobj 7421 0 obj <> endobj 7422 0 obj <> endobj 7423 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7424 0 obj <>stream +hތZIoW 0c0N>&9" KrOZzf(5]{Ub_?]}{w.v{הj__׫j ^# ͇]\zm!ЎUڶvhJ3v wnOnįS~ךez.-9868vAH+aB=υivCnbX}Ñgx:OԽ}|7[/!=ր}wEr !tyAtHӫ_hr#S YGOa]v-~R3-ywDz"êJ-]}`By Ѧ@Gh%˭V{+ #sӒ{/6{ȱ8P"P4),m'IZ~rښII,K"%%"zfJuћEo@fy|yfJ:JiY5-I֬ux1,Eaď`p/$hؼ#-FVTjVoE%G/29Ƞs+]yu{@:6+Qu6)2,/_q|vxgrd_CV$EץI=x\W{ Xx:~rpzCY7#}I=Bd)=F'iSᑒ7%C`pB[{9R9>H:嶡t>*sP0@hM{)9oh͋.vöL m,~- B16qXPdQFCDff$7H)г?@E4 +UjKh݀s|V^'%DACDQ!瑖[vɧaW\]xC ^?];鏫owAn? j*4ʼD_n׏@5Z + Y4m)tB' +1S{Ju/nWoDI}5d'ԆWB\U^^r +FOii9IQD8;M#Ȕ8<̔9W{\oq?230K[36t+)Ȟ?k]7M.^|x@,X:=@fmVxܩqn4`Τ5&nG"םiKYĸ58i: ,7L1rFJц]˶^{e{|FLpL:D6fGU'n$K.-\fzQ_K杼K5?8LEmLٶq [DEan[.2e<[UpSE@49~8}|ZkqEdac˚Q9MF@-{H8oo4n!VD묜|ß:[ůƺ/8IueLvjhlac-ZN3ZlE"|#瀟J;i%̺Ufy\27F-K!ĵmg.dsQ{ۥ:(uuY/xsbnvOeHbN䏂]ԭ}׉Ut{K, +U88 b]T p}Pf ewY/|D֙"hiޞ#E.^lZkO42yA0]rMr|No})a|C|Q~b?c]aśM@a`u;f? لnCg3H}AUrl#B*435Vٛ]JLh,Uᙃ7: iYZ.}HdKۊ$%6$v&(7vܰxOژs=wEՂ߇YoU(`Q"h|߈e8y'A\AӸ>|e><\;_̚Ձg|v2뷣)_Y<8!pa 0MWr +endstream endobj 7425 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7426 0 obj <> endobj 7427 0 obj <> endobj 7428 0 obj <> endobj 7429 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7430 0 obj <>stream +h[sοg}+SJE$J]f׍`fJljFw70~QۓoOk4&/$FEv4QqDNF)/8#)N/Hi#~@$/OvԏԌb/2;J_?Nj4{Gp4]8oO'0C%c^rvLN ha˺z K+`tm4qhRt+BE>=??*QmH)ɛB܏MI3TPfOM#(ȬY_Bݿ(+IkǔWcnf:OWPA0Rn8ac6H# bxbiVyʍJgO_ݝxLhķONWTҒ6_whjF-֥EɃ닻۳onn. p?8e)Ncr"|KV0ouinnQ9WkmFdZvQKqTcwz^p&b Rv޶(o4pP[&dckc +0qzC8j幭Y z0hH N5Ghjh*DFtM^[=zln(nОF*G _Q3'=|JNHzL҉)LF `ti üO;,% BDv@j&BZ c (a*sSZB,Mv.'Vyp8vm{}ndT)a!$DzV0hb{T\<@{WCAM^b҆։*{sMK/IbXy('˜B!*,P6Ī,/l",s27QIGm[ƶm4oXv ܫ@S/6sWV 46exQ$Y&|YGr$786X|j9~X˞tΘÂ#O3Qs29x#n"V#,}IwP-.@g?)6!Ij|L +g vK\ [j zHR)Cl'%"{T:ضnZ, KpuA1mfU\p|9k1tDm .Q-.yRُhQVk-Dg +6 0aU)ZFO (<,hXF#wVA&sZECXX,w6Hx2 +DGడh„#LN'G1$7*E~ЫLk; U\:^谔!X0zdĕlC|xaiI0Qk$>aB$QЍX5lj"nCKyA w@^dYcqKI<2O7_c)s Bp7TPՍ%:1UʮJ.H V„h- U?yR|"l(#̂LŔ(]N8EvMCdП׮H##f Gn,R!o18fbB0S:1 gT=acNJ'Z#>X >'OŻɳD=JhVz^ŷ<\"T&zFߨ*T],w;A#P:pL}puP={<,V1\K='&T>Ykӫȑb"`˰op +A[9c1"bGEvK̸'\gqDS fUx:kH&uLYCO:}~-Eb1UV& 'cw7ۻ˟ſ1z($;x\,oLU@AΠ!!A#hO+gv4h3=O l-W)0Bz`q- 5vBJE. 3}Ivj_$tWSMZU)Dj5GULC_+4Um',UI:x3h>a`2vƐDi.Ej@_ݭC,͉UE,H%a* 8( (4Ѐ"4T-v`mYO0 pw-ɂA!#F g$ў + \z5<\#E~5Wn +b>4e[qw +hsn{ӗAh +mo?!XZA.T!Q;6H!"RF)H!^vmSA3nDZMעdZ!nwى7'ЭE9^ӭa 3-gⰖD2uZҭEMk EK%n36=<"yRS=?`qx@v'UT +I"yaTSA=h(e$krEG+ؒa{RBdOVt\^qhܬnVB.Vk([9efEu4it~LXrB1 خ`;^)ȎrTit<臂 +A4V|dx(~) "BRp¥wMVtfg11N@] npG z)nH䐄<0wL\i;]l -' [Cc: `K+.=uJ%>#:{$ll5 +Eקx5N֗"@b1Apw/ di$Qg1ar--A o+2$t9@Dd +-<2 $~‡&B20 _|H{N fBSĨ$';bJ zd{ۈ~9o䘘4H:ӟIIhB!@Kҽt6 \L)L6'x6(&R@*Db$*c22ZRqq5Up){*{oS%P*YK\싦]ڪ ծV٪ Ǭ1`ª#]+ |t٣-<蠦Z +,iD]aN dґV{tjG&l ~>L-Ҕb),Y`S5\35ݗr"*c.vGVғfڸEp# z^XiPaR{PUb{^tfED\rc k"8J^6- _k2.}jՑSQ4~u 24G+юQ/+ Ml ]qe̾hR22 ęzZf槟n4ZGEĠF2is?r-( ?m߽kxXWrh)9]ڦ([:7 qЈ 2CTA7r= +Jt[#;J UrRvE7E+n}ܬTKׄW-Sٮ%Ղ}j%R2ėvL_DDMy+rXm sNR4歞YC`6M++~:3irm-d$5_I}O: g:8tazQ3p]Q_j&+oB Ywes:ڙs]. K˩`T!ۃ-kWa谩v`IH&~JF9ߩ#HicsH.l6-2urK/Dh){ XK!!`EPT3HsKN4}lWkVAyZDte0.cя4o?2堢  +*'լc%}]V12d @4'muFP4#V*͈9D|2i)vR5#\"3'z !MmCy`> %s@O5] + O?-MKc?ZǙp7)://yG K}nCl[(e 5-} 騮`sAJD{3B +"j̨z5\j;#r>P~}g,Ucp72Hs+6,:{QhLci|Lԏ4q{8_q$1b%đh5#R}B@T*/'^}#÷?{K{R؃Y}`< +endstream endobj 7431 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7432 0 obj <> endobj 7433 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS19867V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7434 0 obj <> endobj 7435 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS19869V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7436 0 obj <> endobj 7437 0 obj <> endobj 7438 0 obj <> endobj 7439 0 obj <> endobj 7440 0 obj <> endobj 7441 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7442 0 obj <>stream +hތZ[[~ׯ8:>8AyH@>hUb7s%6)4!97s?ϻowoˮ-keyime_ ﻟm0 rܧèHm4ODSc՜ѭ0-C8z"꟏C~,`祔\#[F}䣅帖%`OW VBLOqzP>{\ 򝶄B pnpow(~ brN N1ڞd*<βqʮy*q$CkmYci.whaB<^- e9ax |uy:KIkk n'-gx.f_i9#"bDǤ{Ȉ=2p'_kakc;u.]Sݚa AdnkF1W%a=`T?Ȅ#BpeՃ_ G`xSK ZF`z?X5C mQo/$-1:PnI `@Q{i70NCYJb$21ŵNxSP4*´TXV +l%e}\H5ձS<(ok$R78<̢̼}:RM$DOX[zx1X +!~DdžCLw"DCԑ䐎Jp,,ZG;MxUy.)4paTVd *>}6w  k9pv!_ 2#8}|L2W'" qbIL1Z$4*Nqp1mEc rT|b#;UsaL|RCCI +Dò!!NOA(J*fY:6$Fb$gn 8+`1CfY̌]nn%8)b#uq! ອB"@W*aM9ZCa>ƓaxЕmE?eh{י+M\>e"7&ūAV5|껃Xb]~jjg5'^J9H޷,^e~(&!mymP4"nTD|퉋e sߧq=(xQn;Ktl<mV{ =7?%Y5rV5,<3IԈˇ_N_ vzx^p+kh%[C=a7+ûo@~_^>F~y~ $͇B'ڛ*c4I64rd<˩2L!r&K1c<ƈ pYc%v|4p芆m + isn@͕"ݩ[5n )$Y\3*XStA4A;""A`Pxa3 A[l;My@0pԨ7ԜI+#gE"882$iRb wa 5+٩ƂӼ{-ĢNYCVĮ85hHl5ʆsu|R6e)R_L''ci +Gpkxd j,vhv] M%~RV9D8O!~Ǟg0 >'\F2ث RUsؘg J/*NCn! ~D%ucr41%-?mEUjw1Q;DܾL+XV3#SFΚmQrCC<f(7M|&L7Ҧ1+wb4Z/h[c\<4+5G25})yP 5+џܾU+NjD)JC{mim4h6:07˕3ܠР=DgAn75S̴k4~d&B>{_hjT_Ro?X 3miLwtejp 0 Kax7[oIV6Sr?,SRUc'7GuԝHzofdu==L`O(d(.Z܄5[p@7md fdSsMz'E,6C`=ޤۮ3a]ߐhQ@h"*鐮oE&9칛_aS,Uj'gx`[ƨSmVY*Z)[{[ +G=Zvӫ`_U#~z7>5iUW7LmeEP8kނ ƺ ;k!,ʋQzUm{o~앴s6,;4i2Golz[m[g v 7jxnUzѼѴQswP;$?>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7444 0 obj <> endobj 7445 0 obj <> endobj 7446 0 obj <> endobj 7447 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7448 0 obj <>stream +hZko7_ry&znn6n GQR_璜,+akuyR>fArr\jAbfdB'? !Xi2bnۉTyaaRz#lħCJ[t.tyOeGCьy\;˅_NHIkxz<$e9bY?Gq-IX%'Ul9x_m/ޭo/VsoXR%K}R/nV/H8]JzKVd߈MMM$;*|/F2)'18ȫA FWB2N|JPW] +KESwi'A)A2e@bsT"z=B/69./x/7Ei(Pd]Z}x?A¦W>ފlj9>Pe+T{({!qB&D8P'UϚlpF[T^}p`Ɏh, +#u'18@N@9 C:}t +L'8~v&&`j1l~ӟ' Ćr cmc0⇓9-(-$.ַey ;э#w^r~ *>d.XcXNGH`(|Fy](MR@ CgX!36B@%G`.ǘ 7,5 0Fz{_2HƯlS[؉]v*{-СRCV{2IOj|_̿;0a*rJ#Tlz}u^=®Ɋ:Y F=X nr[O#3P^==0XwjΘwPJIS`wp*fHzg8 Fx._-%RӗR= HMViTx!mc-dFb4׏NTghdWj\E许s?5 Ah8<; bLrΚ8 +[Mm⫅R_jJ\d)Jm8>T,߅С/ } XFiԗjK#w_wO_H"_ L .ӓ;TG9c,F:c!9Am>>ݾ/ a$j3U*'[| lG$]c*0Ӄ;(c6<ȋj[o.߯Fݷ<:3;m; `q +endstream endobj 7449 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7450 0 obj <> endobj 7451 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS19868V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7452 0 obj <> endobj 7453 0 obj <> endobj 7454 0 obj <> endobj 7455 0 obj <> endobj 7456 0 obj <> endobj 7457 0 obj <> endobj 7458 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7459 0 obj <>stream +h޴;ry fL1\$"˻)'EJtqHv7q3sHewx0}F_]N_]A WN0Ӡ}S=&#MxlpF )2BkxqElo֌iF3mE\4mNVYFx9XWu AH8.v8p5 gȣ ?0K, ^0\yՔq"atquäMJilH)w'N=L^ONϯU/,uf>7Rjή jrMtΛ=o?= Ͽ9:W'U{~5$T5aJ1`*x| ê,/n&v6Q6,UD9[1464SyE`S+v/cbƣ24R(X&k|Á}spkpW=ߜÿd_CЮ D#NTuvPG0qE1юa}}.Zv]'I5^* Mygi<294ʈY( +yMAҪz mk -耫+thK,10f$uY l3kXc>G"\ +4vx? ~Уݔk~q>p4^p +`rl0?"hG>`7> *.Gh3KdP +6Y a6&$-q,oc~D2|{Z(v}Y}eAIfawoyL'im_A]42D<8\>^e~bncR1.)E],Bw-$4 Ri>¯Hnl>~~K0+"H +EO% # 2#υH?-,x +YiĻ`h5,7l3 4y۔gRV|A z6flM@v9Z9yyNYם))g3MJe[Cr%A-إU_ +L!"-0"te㲴)'}3EH})tױ5 !cI`E h U͵;E=}˛CӶ̖"J%db$g|W7Ez1w:i aYh+B O&52iKH6<1}X 3 XT S( +[- 3D;B_BAv)2U^?S (JDѣ"ņ l,ZzJ74qו='MY;wT'B!Xdĵ[Jz5jk246The)4(f`Ŋk3( @s Mʚf(%<bחsB`*fg˥s$U졬bnzSAIF `,,!KLOm fBclPd;UEkNj0>&zXHL^2ܽ|d蕖/]E5SEיa'z8C{&euW òmPjCgCʴe&k \h4٩PcWa#沓wK +8iK:uN}WUE曠^iBluN|7RkGb~M?PҪ7*\1g(g*bDKj IsOG$ϔ7S_d,FM*#|BRvJ-THdqa)М0.Ms՜ F.䠼(p-a%YN5PDԿN6F]MY1~UYzwݩz"ln kRE2W0Q/@y7]Z_`⿯?v&x..L +ziT-}sFz%Ao2Կnpqc=rPM+ rUf\Ll)^AX0HGXʩ؉E+} 6&7d* LfpHYZ9ե 4¢>D\< o=bynCD $ĪV/Q@Z}!ǂ ceS +UC\*!. L=ӱd_a.}:y3y_gxaiHr4x%*Ջt8/_zC8f;Wy߿?OoW~l$IZ |l{ox9|5hm+Z_ggw5FF-_2"=@9i_ 9iFr'0^(@bx_^XU}6 o'6E,/5=+;fQ,jdQ;Y QHKZBW`E!FMTӴʉK8 ؂l{CG@z37إ@LC]f>B۷LU~_f>ȇBc6z']@K;:NhP 3v(6,QU آgZO]8J䖵GIᵁJeY$E0XW~\+ʽst T%10"|uE45*fA3A[.(T0L`AQUa_(H! uimAp=baFX/{2+ +&0g\^@DTzd֍#HŲV0%*x%(f! iAZb 776G95,tH1Hh5.Hgz kq2 +H"1 u=]E1JA׍>HK1rW@7x^l]z ^ *yDϘwGDb+~ثaU_uJMZs\\6cbP}sC6kyy t[]zgӭ{.΀vcs;Oc2,.Xl0dռ"z$k~g#N^/ RnnGltxM?'9+$5: +~HX@沐' bV4+QB\*%LHEAEZI=2,Avm24IN'Nn|x5"3GN  B) b+!q%[.^ ͈ll J,rukMvhe#i8e~J-)n2KCA;V1:5.@}#d4^1jϜ2dy6>H bm$l6ëM`9(Jpڋy3alYcA=!0{M +qܴG aMI㳡"B03A\Ňi$*->[wҢJA3cs w3-; X]Rs,FO*1h^XV-x=C^f3" *pkEkNbۥ:Vfu:UASm:x];ӬNDcIttz.> z't8Vy,% 1l5cU+D : kp9/'EX3HSd_a.OÛ1 LF$OT zu)Yɲibԋp!c }#{8Y{5N|5=N<,jwؾ E'R'79-hTf&;hT1ص;]8{ǺT˕,Tq{䵪V^DTAi?LL4?'tՖ}9}9-Z%=h@D*Ze/iΠI !dc*VIC`7Ȭ^oԂJT.h @(0#mlnnAɮi3H`Ymu^r'ǼnuWK7_ ,\ #,y62gBz-h& _' ZoݎQc2mQ@{; +|>7Gb=|;$@g:CZgԺ7PMAR#w3vj~gĠa_JgJ`ہ9p7MByNI.`$h$Mh"׬/2a}SAc(uiA ;l}?ȡ[kaXr`j [B1`CQt+{E: tKC'!Lt8@ڬfSyb&X߸{XZkK4!,qkmnt9kMZ*]cU } 6 +򭭁 ؠ`[ֶLQ'6_EG#䀢9XzZP_5 έQb+b#HÂ.w8]A{]4ΖR` *OL8~w䂞D#9͛~8qL=u;W hѐaluõVry4]u=v] j;7f=tGA kWY BG堰k3y<({՟z JfPڝxz] JJPڶ` +)(myOݬ;m1ҳw8E0\\h{@UmeNزgmZ& +s#3YV~"6XZFaN4mN<_tw Aٗ j ~j.TWՅMmͺiv8b&Iqs6˲B +U;4+)'P(1d#$*^ +b7c MPQ !6`\W|؎ L=:") +Ń@LΩl72yhk'ѨOc[C?Tb="J(d +ʄCJ}sRv]!pڳc=a #dPV1IR()ΦPt $㷾$q. &<IH"ŧ"MǕ״P'X'nhZ*adQDC9oaqVX8X}vU3R7BFdR@] ~LJo#ۣ +endstream endobj 7460 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7461 0 obj <> endobj 7462 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS19870V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7463 0 obj <> endobj 7464 0 obj <> endobj 7465 0 obj <> endobj 7466 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7467 0 obj <>stream +h[YsǑ~ǯY!Q\mX7l? m_f==p~p0ή;RN?ܟ}suJMrzw&|Ytzx&!$o0B!/ ؛E b1= +_7j/r%8Z_WgR, +B[BL^#$Ԥ0K$<1gS7 &Vzń2A`mZKXb2/c djaZ1N1Y&szM.Q dPbOM (Ȭ_|ٿX苽eK7u&dpV1FҎA0b00w7 u1D)%I$"Ux}azs_))!MGi0r5myDg^~~xO>ݽxpfϞ߻_D4)u ^Cr +[G~(h&!55"ҋb%jYDtH;u|'E;c)86̑(AcҜfR~&1ސaq&;XU&;4^+ Jj^U.N  qTanQVPcK[>Q2ה!^x& $hO DkWDoeTd|v"jN18l0Z!Q:;TEf)(qb/Ei`FNn_z02% <1`)Tad`}{X^o4VK#=t艰"pL{31qC\,quys1vPqxF@NJI7٩T8䖔Mߺ 'rƸC8\_fXGOy[˪|]$lRx:^g4 N9LR(CO.dL0m{*.EHׅRГUYF[4'K 0 +0eG"-U!!6،aY^g2:-O,)'<*Ʋ& 9Ob4H,7 5nw)ᘲGJ !hNe +J$VZ(ZcJ8 YyIf9$C^S6R݉ØʤorFJSY ƒfSL(ED.#c}h'.Ê2l\b}Y)HF,\; &Mi(Q7Ekă MSDgUj|mY$;oFf33 +HI9?F V!ӭXn6}Vd }1uIXerc1%`E:&l|hE xaG 'h.An@Mcy'Wn=eso))i9M(bcQMll{*݅8n1$*ˮ,>$o|.Fńb3H3 " +镠x pyDw|*#|n6g]}vn*p˟wZחcs]$ܔJ<<$\6m߶(J́!U2 V()ب02kU}L?>~v|`vF̿aqˊM հ"h/QfR$#Ϡטf㈝wCst yx'%KscY!z2+ݎhsn.2%Wa*pQ9#n*Qm*1 iM2C$46djt&9PM9r Iʲ _^Xr釻8_c'̗w )6&}& 䈙*y;b@.X2H.X/4 Ԫ{::PzpBV[$,#鲿]`L Zkm3UUWdBҺjk f&䰠JNlꝲ2K_5@P.mePM"%huŒ$gd:b¸Y1ZV^F+,:ۓͥ{(5Xӓ'Pt8)hX&R*&>'K$XPd|2zxcm&I.<(dF(H HK} b=qN {+oB3JW!FGz=A^AiX9f +c͕"ƴ{ l#f)&=5kZЌ;aӚF-miYkˆ7GLtL'dgڼEZ2:%`79+bcl/)ۈe<$F|mi=R3 y@6MirごF B?nH3&$c{8{Ãq;ljod݁ͽ;~ NY  +VBIKR4j3fTB/nD;fXv+8lQ):.PeHJ/D aU +YX$L" 40'Ւm `i?Sb~%~=/n{n,( +!^gܐ䂲\NRubKϴZ9qCv`wCAî| B֕X[J[@c]Hg^vH 2剭&H+ZR&<4nȴ cr(< `xL &12HO }Tu#1h1g7LO2ifE SyQӮntIɒUmQ"󼧄;etCCMW;^}&K! U:GB;Jؤ`.0YҨB%S:}Y!xw6U$^9V- ˻ue#Z0ރ|'z7 2$n:Z*6K=:U-#_uf lF#KSx}QjU[bQ)Wri_z;JSR?:뀟PRҧWKXW^|y֙ե(kTߎ 7s0G"V> sɱnJV^LKqH[466̑ؖ1pL'/]zA7>씂 V7#Y/SI'^i O ]dLTu}]X( h ˻QBH;.CѺ4 ̻.L}Rsh`.5z<Ȕjs2׎ 9yH棙c;RFz`ѣԇGɱQt+ȑA61d+N>E뛅 +jv(; Ű+ɑ*Hf ] +DKh`fdKPDWCc=#دeRN4"yNum#Bn:osWȣsf][%IlK/oХ-r ,5Y9:R%WńV8Tc̝ +l:Y] +v8k녫`^8A6D#j4K8셳b^6'f1zYġn+&b//O4`u:6gt ےY!:&ԡI;h0(J6؆ç)϶iiiiiMզ|{iSțJ薑K͎ц8.R_GKa#tQۛzޛJ7O-()'vk5K]zHHnS{1F=O|}#ݓbKr$@ƴdiCsN(jb$7τ=Pj#dp"qiLO6R˖䠘47olU,TP\v_ǭRQҀ[33nM8$NҩBbl29boT._%lc=)/ib4Zŵ+V\5jn=֏En7sSQ qVJ:dF\yx;TuixJ ݧ|4ej|7iܓ;ݮ[w]_utҗRtjht} }QԟE2)lT3ЧVIH"EɭvEUu~ɳ Wʸ]!Wvꋗʦ`{nq(q\-?SVbijmXq wzwx2-Ӷ|vY__ eO_"hBz|Ƞa}|"]uBsk9>zn]IܓX -cqk|l9,t'fW͎&'*PAPxS=D7Sw %!"bFY|I+"K4?@<DŽO9,5L0՚%Qb02T*amVX\@Rl1$F +%q=QK.0tIp>_8 /hXЙaGOu>>vB,׿TﶬFXe}5ڑڒ܂V1 3\6 b c3e7=DzH|Y(o2Bs%,YE$ga2R+@?\ 'Z1 +endstream endobj 7468 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7469 0 obj <> endobj 7470 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS19871V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7471 0 obj <> endobj 7472 0 obj <> endobj 7473 0 obj <> endobj 7474 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7475 0 obj <>stream +hZKW9[n Naw4,XRzwU[rꪯz˯_?<<3^#Eblڴ>ISYfnqʪyq^R˷Ņ{_\r p?Lu=\V\ӹf5==.dXfW5j|M>OzZZBY|v>fo}˛߆ûak½yOopBZoKQ(o÷緟^>}~KY/ [{Tl0Gһ+]X2 EHt$:8] +Trk fl%thɕ[LDD=Ć!-@z-fĕBu=5aon-1m ]An.BtvD@8H@~|WP fm@MI&%a68U.'&<(._3PQG";41xX8VȊG܆L&, + +>i"(PUDu`"W8!QW`TG}9Sr-Wk p;r&`h4(Е|;8+|5R}ZH=z|6̓_Q*&jC"_aO[5/y$Yz2M"'* b02vCHC+w&LJCMIsH'_h3M +*B#Fq*AHLcE>ħ֚AB*!;<| \ 0ي BNCb00P3s&I2%vRvH1EJMp|uB(ʜsғe:X }FG0@b<]Q!Yd;j$a>xiP!bQp"}>ZKzz"ґ%.-q^- L7a _a@{Fa>A, c@ϾKnu 27gż/*=u5:tcHY%26E4*Hc̍m~uG4$N45u< +a;zr&!*kT!YEr߉(;MΣK|Pqn1)`;H`t}t Y9xd`׊&K 'okh/;BAؘw+ $9h)1f8m٭4*_şˑ'IWaQy);jS݊92]kR;xYJ YЍ( Xa9hmA#:}8Q(9 I$!U=Z7`^US5&?>qfV3ik![ 0%.dxpr?8"sm*:AB}g3_-v->W=bFi.D4u!w% P +-jh"Clh(%`8݆lql΋H&6RyXAуŚ\*0Hd.MpOi +l(] {>b_SKgz7Dž=g`ze@$z]mB6^uVw\bBI-%A7>RӾp|,\+=DA^q*Zrodxa#{|0|7Sm+BB+ bV7ǡ^FP\Ua?J)R-B24.fZh"lJO+|O +vn"Z*@\ꕨA. r^Ů`{Fշx[BkJ&vՓc*KlWeij6J)ycF"6"Uݽ#ja7L71$`lBڂ7tPJt +t^Xᵝ9hXt wp)N:~=$+<$FW[)a\w +?Pȁt/O +9 #^{:e ңC zS\@};QĘ}ß&6,i=]}ok񀵈/Aʘ/4mz= Rb MRer1/#x #jHI- oK" u/vatYU]gFY*tQi `c| Z5i)-1&8d*_ +GZbHA{,qVR N1UN] h=O A/6"^fuodYsgnM:ߞ_vV ~m%P(|AZv[g;!$.SbVZ~xߒliQ#&QLUw_c.Znp kk-zp +endstream endobj 7476 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7477 0 obj <> endobj 7478 0 obj <> endobj 7479 0 obj <> endobj 7480 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7481 0 obj <>stream +h[[su~ǯYG;w$VI+b$qL)$>w2= Kvzܺە~p4%?'>L! /NjioQϳgg@2Ns~}a&Bbo2;~Uսث|;ұw׿P!_́Cb;Д{aqP(lxyYGoS}aٻK+6kM,J徔)f"e//Y?*6)a!8|EasINIReI._ݔQ{N84m璊i2{yFD +aPe3~ +Y`|^84E;yϾpg^jחAŷCfKUj rMܤ})3w7oǷ>>g~ç9Y%)-*bAjpPka6ûR6R6R֓rLO4G_0/ T+o"*썔uF g4lI)ʨmjoЫM\ް0RSV^ZUM :9pTc~ҎƎSU!JIZD}kk'S#%izã3'[[euJnjf7$c4:s,#{C1]($~d +Ý%' BTD36"䕔BJ uYdG, rŻ &;E yU+E9_}.ᗋI@BH ƣQeֻz +u5}j/YP!C^FUuӋo>7啃EJSA+?i'uJe_ԁ=oENiy@e{Q<Ϭ-ͦ 6t7hQ>tNSH3`&\mu +5S[h ̔+bпѻ?qMh)n" k13f0Xv CmLIM"3I- U:XhugV@+ 1voE*>o7}~'5W~7?o>ۻTQwvbV.L~ỗ;`/w0~M27??|x77woǫ\zq +쀈f]G˚`?SkhiYwר`,kiDP]=A]5t^7t#0L|0T K=d. ͧ|f~x ~ͅFY$f=1*e-䨉{9.<*uz1BM=۔-/,0M,PEaT yE!7; ;>Ïwov> ջ,i7x7ܼ7!i8, f7\ojëzGH/wxg×;: :A9◯&؉M4]Ðww//J? W6Gt`9݋ #~e3F㫗78`0>q |38>ܨ h t?=}?І_*mbKJfs t6>KiB׽89)SlZ%.+mN2ABp m5(:dk]> 7LՉMl Lcr 6eonAyamU8,vSQpnca3IS=KUV$ +UFg3#Ǜ߿K?=m.ژp%!`DvHY3QkjIh07Bn cw-뇑Q??d=}d{XLf+%CԊ0|d6[-[xl'c'#< K}xp+?r>*o %:pS'\@ߴ7y)oЌR3^8攃(nz?v-$gWuzUͭJ.6aa=\o>27EvڍE6%IHS6#L&qs㠝bf( h ;'IE7{Vsi`I8&Uq>?WlQjcjXHZ[% ♑Yd.OJ-5c$nl?Qsw,Cᅐp43FJ8_wWowOxρB㥤^CXdbA)Md 7M^VAybm,C#k%:`h\Yvmcz#( +c֚ǎ3 r>e񞙡rpE9͕JZj&1!+}ᘤ +Qec{-g Ȕ[t;M]G7DM b|ָzn(q30Ǜ7o>m)qE{mAM9O ))S L2sYrv ~{dD9@X钁c6xf4lCI6x[yxܰ/^9 P +׿:iutoy!I]̄OARb!X>g /vŠxLL#Ë~]]v^]:<OJ*#*Ad֌tW0r[h_inOǬ0:u[D-&>R0#XP0x~0rUŤVn@tur6嚤Hs繶NRflUkU\yWx4a'y?;LLߝ;quBic^BlX6KWJԝoC&>b)3l u9:xp84lB5qpJBpb11k3C,4;j{7L t=@]=q.SܑKLJ:wOIޮNe[\7y:Ʃǫ1UN B9̺g `Zn=K )zsquG G}POIXQN_0^ǐsª&wu!`X֧bMKu΅ZɘUfINgPtlw~L8a2#q#i3: 1үq^!I p̉\Đa֟.&*㴚k*˭]$= ^ӯwȃ֏9䂧و->P9q2 8f6qL1ٷXneWg멆_8{c]o|u ![ +֙0/7K^ ,jwڨgDԆۮPf_~{P zyz^NAtBb%L^>;+Ak;nX ժ +0 +endstream endobj 7482 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7483 0 obj <> endobj 7484 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS19872V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7485 0 obj <> endobj 7486 0 obj <> endobj 7487 0 obj <> endobj 7488 0 obj <> endobj 7489 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7490 0 obj <>stream +h޴;ێƕ|J2m ,։cOczZlF#G3s*6GfrSW=\w{͝cs7}Cn ݻ]? .v'h|~B?7v&l +GDhn:ܔgy<>[&gw;j"^ s7C!.vc?}>Na=Na]ZuO4Z@Y;?v8, #2sݾA)1>Xl5IYfy5d5XaUgv/ooÃFqS0sqr#0=̟r?VӑYf f%==ȽOܘވsk7nO3>4s?O4K٫7N???>wz=7o w2 ;upC,>uiv79?:S~)w'8Y?\tpx<ϳ0v >]{w>sar d z3C4z=Lvv vLxXC5~ag]JG8ι~;ej{hWo`3 'p |p>#qf?iúQ0j}p3 \`Rxt x'ķFG~NsswkMf]@y +n-^ИnC:( + ]3Amw*KH?Y dJjBTE7bȑICv'r)V)E9 [/)Q!w0, 6 +JiBj :l8]P椠C& MS!Lt~c%u &X +:I# LFt5 :+ Ƣ= (ySFn/.$GdszBb w6o@-(=τY #7GZAƫct,3 ajY`1iq *DQGpuX,5ԯYʎs?!NA g~3L 6&2h\kLA/xIqaY +7i|rAg;.zIZ\ yqh^d{Wo OD<WdrףvF@c O7&u`a ɇ(eQP*kx<+NJl$:%ܠF}kU!)Y$&-D񎯔 &dd5Qq; +Y( \ w}g`_eS3l`KXxL:U 婹(ıfόu)$~^Ul Bm۝ ^97o\Y9UULbjD\Za2⟚!UᜋɉZ(Jn q\(5Xf +˵>S]a?$w ͙Mߊ*fuPUN&r-iQB}b0Yfٚk8#s$&fЫ9\2]tuչE)%;=3`0 ? w -2-Y5/qݖk=[K.\,Bi0Ԧ)K#ܚ:¶,!teY-yelTO=N.@or%Eۗm&DaPϿmt鶻yLxY66SŔ-͹{7<=C‘6݇8m/L _,`vzu 8*3 rJf qf. `ІkKHb.r ~^W|'N}V=-"{_< 9}o~,=vGj_#E#F$B6I;jv;~-f7Hm|m@?yMwMB7?t7*D⎯^n?^>P{:rܼ~ #w=]<_v'x ^|A@֚  +x#LJ|˾[\*lOOgnwOǟəa6 9Dt"G> )CĄ3ӑݝL _(PyG}__m7=3 (]9+1?0<.~QV[Jf'(D<u|w܂^V[K& Wb6B7l_C 7(Ho +`^ $.!/o|*Ui-{LbV^Se}`Q{/a+Nt)ZR~jͼTByMWm=UC,$j@pQ-C֘bt2QyhJXq\t?0Z, +VrpS0ti֚$pKn<ڻISY5pT>25|#=.HE{ڍ{Kq:U,bkk͑-,)ΡWk,-N%0ɴ(g1NȮK⒋C`:ZUwi;,dk#j*n(^rOx)TJ|jMy3IZI-* $,?2UG v6Yew `Ż@@bM7ï&tH &9Cq +:Yj`ָZRdcM)/ʚu65)ۺaiB|2RNkmWG L弔 %J(KA\)T.ST-GYUxfliaYSYAHR&i%6!ni;[Fuqp屐j?hqIM+õ˱qoƗS|5FRɚLVUJ'Wɾ;0δ&JM7^{]Rg`;t(NlKe:+5kX QguQVW~>fޯTc\(jjE +\k]aWMNr7[NOfQh`vÅ,⺀#U7֚S:0Y*/|Sy T^X4M`˚Q`\Kت( ΦE1b=l2Yk%PN\ ɵW17=R@k2z%Pٵ&ZR;MVل"CLXXi쳪ɾRmbbqNA4%\,̦5vKc}!c[]A( +T ~TڒDG4|=O,,~{Q/&۵UJӾ2L^Uff+]a_|&wBCK,ږDM ko˹dP +R +q+囍Ņ]) |Ɩ^=â\,KDMvwີ̦U934&4ǟWu^B4+F>=cZHtK"%\Cgϓ䳣$ðpvf1㵋iNcNn #JL[J=˷KuXzSuzr1ʝ|i:WՐ?몾R+cUWi԰I\'ILf8j$q}](aGj9.˔Qaۛ`7< +endstream endobj 7491 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7492 0 obj <> endobj 7493 0 obj <> endobj 7494 0 obj <> endobj 7495 0 obj <> endobj 7496 0 obj <> endobj 7497 0 obj <> endobj 7498 0 obj <> endobj 7499 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7500 0 obj <>stream +h;Ɏ$u:=S(ACڰd5Cu[cHx=Aꈌ[?_~ûx +ǗuZiڦXO)-s:=~zO}9;4ϗyy.y 29O_i*>$xXή~uZ0 ۵?CZfڑq@*yc^2eh{$",K'8Su=MrA bnyjΈ7;ŹCwk=q+,Ds0k'AZK v!uZN:-S(S?~t>k>z!p*6/MNOp穬D9}vvvB)>4e8yZSV%/o=a2\vqkR]Cc;]Cz" WmZbmz`cރ;0Cv v SM6]XظUC[h5.ڄn&̞j\mT275N*LC\O 7BxO:#rBڙ;Dii$gD\%4nl)Jk}wǝR&$m Z5P5Z|< gGXܬ +Hh<-Y #z{0vv䯕[E@$@  b,P aZ谟O6eIi#_>RV7hyaZ8 Cr`Yf"Bx+0)i a;k#Z?շ"S4 WOv6a7Ue4\*ѡ +'P[!nX~{G+228)EU"kR/BVuVdZ?/I飦rZts||>pݐO|]JKv P4!hePg~N]^Ϭ4-4ƖzxYm v#palD} XITg}Sdg %*~2gADi:4~np3^:!ڮ` jф@*l\"/{ 8(5/ +tC(G0B3@Оv^2fe. aP࿗k2;Q(b0^[`~Ga/v8mƋ K飡ʾF3@"@Ji|\&^c(K=ckEl`@,* 3+E jo2hM83 ++2*z0:xQCn9[F צcłC*!yhLDD,OG87=t]"@ |+Z#U~x!b]@=ahbR^. +FtgB7B-^yd}&4K'.vXm@db9QrI<2IP;(Uf&wK2~=L'%ꞎӠoI1u<j;װIjW:lz\hJY(wei=ab 5mܶ_iRGG sFv$eBʶrGzCܐ^CAEɪq{c;lO i,|4%E6[μ۬?΢ԾA ѨUf= hrٞqgVE1>G?m8[zTjl{&^/k:@IBۀ47> wX)*[KIg cзյ0Sl6Ҭ1T7ҬAT]:PX1GFMGI cB(*{kǬVteC'*hTBARtwgm];^mTUt:'[6iA/e,vj/]dT8{uŘ/ ~KbX*YByhUQkJN^^#id'b%WNGzUqi6Gnz8yJ&N(hzfШB >`AM< I>G-LjX܊d)YM'7`H0|,k(\ eB2SJP_޾ĻiD!_H##L@2H,l##qK/LeŤ!T8pǁs̈!QSzKW +\/b}jS8U*y}8O5/| =2nTYd7;ic>rZn}lY +!Ӵ |IMs!X6bLwV7UI@_y<0ϯiՈ +,*B3 oڠ\[JXD_,Uz"-#V]no܍bva]tyD-V{UMɼ˂s&qDJXFD]y; $dޫ ~;ƌcVH7P&Zt>`zB[G. ʯaTo܆ы]Ђ|`A.L;T! l=Dա4v=͈Ʌ\0 HmU=Fq9%wNl&\VfjSɱ3BwԵ.TNcI>Dƭ/2$se 8k@TeJhR]˓$ǝŐgz<xQd4 zCP.PKSY\[Ě y>)穒QrE0yHN~RIu=^ҫ#,@C Tylt6j9CNпh 䯛.toɡIiجҘ,P% Oi1GnFn^*i1!.5l7%Eݭp<٫QM RJG_egs1v1@תR);eEzTIUeq$#PHzu+O| q[׺}{=mq*~jlK~kl{t}\nz+WsZ5$r56S2ns|0M3w/6!d cZj>rb׈ jK$6؟Ta 荬8eMbm,.^Qy5PW[q?Mh5JN>[kgޜGbF>N)^;e"=1_ Q2T4ipk=-,f6Bcy뛿2r?uZhŭbWr9>;H.uA AnJvƑK$ RKO/I]ǒdpʗCa*.n蔬S/vE3X WPC.ҳ{ȏ YAu>$.n2@/frZ`/SR4f[xs-?"6o")I[)IJyç,7ޢjrs$a,Z, +1g셡\W\e78<_Rŝbʫ=q7NP3&\̵zN{@ݽNmWդ]qEWީI< 1uX\ +qXڗˣ,W߻S}nxhHQ`66^ØDiDήdap 4k2!1|9YU4h{!t}>; +ٳ*itW?|(˘C0=g:жqjĽZaQl:;${jm#9:pg*^W.^RZGb}2YKi^|?-΋ h!e{ %ڿ嵿؏K^Tڮ1X 9dԚM8a4bz3cM͢ +JóX0Ye2򊳯Бl5 k!sɒAak I_ap3Ѩauܜi|ȃ =7VI %t2:T}s/~XqjS[-|wRtN5ettd>UnaCJEez)m$o+ʕ_zPZue'MϔmLw_g(&/5fa-2kqUΫ:xR -H̳,hKFxK}:Q{<YrPXa[EXFO.^ l-ξ+"Q O~΀Iw{LgJV{ +'ܻJӼ֣'6Ƴq M k`L9ìmL "#r>d-OBD +endstream endobj 7501 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7502 0 obj <> endobj 7503 0 obj <> endobj 7504 0 obj <> endobj 7505 0 obj <> endobj 7506 0 obj <> endobj 7507 0 obj <> endobj 7508 0 obj <> endobj 7509 0 obj <> endobj 7510 0 obj <> endobj 7511 0 obj <> endobj 7512 0 obj <> endobj 7513 0 obj <> endobj 7514 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7515 0 obj <>stream +h[[od7r~ׯ8 }N8X@yz$GFJZ*VY<}4;,wX'3rŻ+3L +iq*⦫O~^㧫,.I}-Ԛ6aPlqor f.hfj,UNXtSKy/_K-شSJ~vv;^"o4oωoPg}[2~I2ǍkڼT{C#[}8q,wR=u]}to@"pU`>W78Zn(,ZN<[ݱg-R;()l])e}*%OϷw|Cb0>9,z85ѽy`(W_g`h򁽑r"*_:^7&9nʜd30dl,-_>>N>N/ O<,צ6az=xB\fhŻ}~ s{ l^7>` mRXx i:}vM}]-Z {f%(y>ty6>D[CMHTa ea( sp9DL6V&їV{ oo̜,~ٚXָX (Z8w>}9"`) R0"*<L-f.0 oz@j;!-0|{zO%L9Kwf]p%;uxo".Y.B8\^\B:7u M-JGclxAעAZԊ=aRg*XX rH%7~1#H%VRܾ|hK|˜P 9%IL| f p^= uy)uTm,UAo BG{[f :,N"_*%,8,/6iC4,CLQsWUq5"YMe) ?z̈C[$é(9dfhY =57)c{' +Sf!439)1UU_>K{=i/%;{]U/{sz_Iφ"%)+Kl&-# GQ.QKj35˸p}~bz%X%-0ԟIZ{CGpE@7td$H2[)XB4ˍO!t7펡V-xHڨl2b˚k]Z~gxa9@}MNuۉ?k&uvc-.0FD DV<)p$R7;T!WF÷`^ AsC'nx=Qwgcw&T 5W4c00,JҦ{aXbV"Du-7fm` rRmf>])J4#犑?y'J{Yµ*U$p +:5_kR-h +>@"Lxt)SYUr/q <ؕ`jDI,Otx~qu\4 ioxء'ތ{Z V" +n'Q2viH)gȧ Ma{tv4%⤵zA^gd(PݳӶ]f6iXEsyl0okT\} {39y_$R1f"vgрk%6HHUYsU9(srlwj;`kφfZq 2,rC]*H|0 ⪀ b鄃R7ie_8e"]<4WǮ45P$͌ گAHJ,g6~$YZN`)u x >AGΚp-֠^xQI0XԁiNA$h33 +!G:!- &EBfV:Mެz* '& HؑhiϤO)$obzGP +z*EJ;y 8ZqrEEm~vym QslyaXEE;W9B)i.ȿ@J#Ș`sBsȆAis1slioq:s@`3$OudqD_-8"YXEo-RVgG5Nd+`<7>ށ:}Tk:]N//ּbh "+<÷\nd)2]$Y,.As 0Hu`^^o3~^MOTW-_oȳݥZp[6z+p\tM)Ps Vv ZB"qXz GMGHޫjMgGeo8pAfY1A\$g +nէ>TXV?AhJӕн_Uz BNYoFݝ+^BM`XBmނ^ ' (Jb9cs̟+ؐϳߔ㋔ňY8V"^B}YX$lF<^ZPr(?dkE-RA(N^eOуhPLk:  YնCwdif}щßܴ%9Hw/ xzTKxL|{nſ˥t .._^qzZ;]Ǐ?Ԯ7Ԡ'j^[*}^*A?~/(aZf\_!.ZvIC8=ln]Y0]:n%cR@aW!'ǎ݋D {:t.[u(ڏ9gFJg-M!1>VLݍ3ԣ ξ=zU#!wĔ"f +/t|VkDl! o&n9Ǥ{o5T2x}KNy3-yavק8<[)b4&ʩc0aelجzF; $v,0>} hm=u4L0~hse b +IDz~zx~)=|[J甀_v K!}oVPH2J;kfu3=p_g8۵!a5PΏӬD>>=skjsڭ%$EoFs7r^>鮺BVS%(^6}AFjӍAc~fZtkgS51^fT0 /w{ Ǘp{@$jH =gH_%&ͷە>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7517 0 obj <> endobj 7518 0 obj <> endobj 7519 0 obj <> endobj 7520 0 obj <> endobj 7521 0 obj <> endobj 7522 0 obj <> endobj 7523 0 obj <> endobj 7524 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7525 0 obj <>stream +h޼Z[o[~ׯ8rQѼ_n)k}y±؛wnIJ})G!97|3<, f%䢲_l{[LP ׯ~8>,^Y _0~F{Xis4{@epF||ak_ztVL.,lXB fyU&ioSۨ/,x9+#pgCK=&b;:ju 鱰u5d*>60YE_Zj{1*YʚHmkjTt0 pQـt[8Y5)ڄM-e<7 5' +Pʂ3PH4驄mGӿ*:,cvQqԈA39+Mh@UΓJAz M6rh*@6@H +25 + tSkšgKRDB(( +G H#1\t%o55+e3ADNRZOY"ٷe468xWog ΢N#Y f˼1EqO]'XYΠ7ҼN֝Jt]G°V7S&sj^2Ho)aiЙPT5PNU8`չqT-SL'ӈ8b!4v0)OhN 㶻#]CD?RO +患]Rfbi=ᳫ_Ao?X%uWҠ-꾫gPZ:?WzynO=4Б}>r-A\ 4;z΢B2Qj?o3}}[]doրVϴ A!a QvӬpK&/WOW}ǿ[~@s} +#v=\$(}YxoNB1`nh,Y3^YG{%*RWڙ0ڞhf?PݴW/1uP/%6GhƒSIcdn PPU蚍>/?=?O+d}8>~"{zG4^> XM:yH;n +^ Fh8}ӍÜ2fAw' ߯S~<"^$pn<=2Qc;p3s VN ;jHF˥"/O/G8<8op:~ +,i}|=_Af/{58 =?zˏ{ft|^/}ZnɏxY +*+5!7ͽ`zL:&z0Eg"FL9Nًw7+$_B)gqιʥI xMK}y)MdQyq'gmPeohngpeU;dqrmG L ϠE[Zr bbK Ue@XB h$-Sŋc|"S3Ւ&7xf嚒3V8QQFL﫸A8L Xa Xk/\$1jWC;`(sAAGLYn#Y.G-[̘O"Lwl¸oo%JxY[bmL9smQ#WfN:LQ2+ۜimKy 7{6!jwGʁ|1=; {;ݼlXF Z`CsZ-F(>a 6*tφ h 'bc +_|)fQ0$q^_w]OeW*Lj1'ӒbM;C1 l%/Mks_:N-NS˥>4xmx-FǍQuҬ`c{ L쁔+z̉=h+5ЪBk +)Jj0Rv&m;VLEׇ E!)2EGiqo. Q9R"[PX"|3ZWTjk۳r8c+#KzX^g]a.vNs*z&$_'!bn&< (@ +-r.hb*Ww[j{!}Z\/-h*҆suV=oZk+/K6 QwoLz XMi.Hxq=Rntrֈ׮V5ؗT՟jbWKB$ʄ#=Ƚxx|:ռ @*6j.΄uN┽&~96!&'_,S2YGav҅i1{]>C\pWa[єol am %lݐ_eNn٤IrJ Ov3·=Hjq;9,ZBLۼn}GWYkTױ2`ɋe)z6e0^6kˤIcu)G*ӥo͝KO4DbEl"L0)3:1W͛QoŸߞ]BѹeIeqQ9a_o4oǸ&VoA?*eb')%a'V\5G:{sso5Ez&Я5 uHfٖR |鮱RP wbsmkݷ0 2' *cb^.ٝ|-P˅#;d(<ُ||؋tzM>o!۔YMl Viko6!&K6W Ӊnr/~| _ ~/TtONWK"'t,+b&Ci=UfI$.Guŀb|n\lҘ2Q SHasya_Zces:=$ܻMztR+ \ +endstream endobj 7526 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7527 0 obj <> endobj 7528 0 obj <> endobj 7529 0 obj <> endobj 7530 0 obj <> endobj 7531 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7532 0 obj <>stream +h޴ZɎWQ6Qa:‡@c(Z$-_,TW7aaWW.?~]r|Wuq))-լ!ܿ3ˏw3J޽9# ͧC\jm&PUʶhJ=Nv GL՞J\_^5 ]Zr/B5QlQ<=,$5:J Z/OU>r Ti>o8sow:wxtfJeޤǺ5`k.!:Q#W| 3UGre1a9lLqUgBToa㖌[Z벆\kY><=ߩC.15OIYG捪&zɫ.59>ԛ8qK_ljZ +fqN{=iyk.-_gvёZ[ؿq RT,B?߽ç<~wO>=/0rˌZi˩ƅ43TYp.H?XYwZDzZEZP#=jL PJK9O +d,Wj%^A$!"'+^La-1 +-Ⱚ,A@QRvҚ_V[3:B7Y4>}V8;!7k Xל`YTkY4w-/\LI[I?-&4֚O% (.' 2Vb2[eQ9 t\Ejdnu]Pru֎{hL)><6L39!Q) $o{X0z,50&B(J11?@U-pHYb\B+#饇N(ѷcj^0N +?٢dp-)gx )X?sPA} Piu|N48}+ɸS\)Q BN%*B  DH$6 7<{N`lzүBpWgZ㒍_7-fQ@5],>u+o"h%O))Z9UNlPHluL$! f,Ԥ`kN\y`TeWDXPsE^Lm)Մ ׶`φԙ톁QJ: =Nxi9!e +/-M ஙQUn[VI5ԆՕy`_v i^oY@ '~m {O2l,y *Z%[yt(2׹S˫Nn{(͜P.x.&뾩>t%pvyYH!eq3tcGhT響}J0!_Re#G/c`JOM,B+9 >fߝ(Nu͠lG&t"ޤ8U()>OqJ]Mfi/V !Լ(o#F~;$vho75s*:R&+U$ pZ'z27wT]=SԀ{zB_ۚ_[(k$elns ϴ<klm Yoi0HOKZ@꼝y*q\ }vƷ`,/eBe%;}`(Hll+^NRH$ukVGbLJB- - W&k1aSMC!pBN-waf'rG(*/N4 ɻpLdKDÛө}(+m}VKJr4vj h^4 } +H/_:pGn}6h(^s :h6h7"Kl(iy6J= Y6)HvMsCBnIah8牝I)]]Etp7B,wx4DWtЅ/e +.P~ҵ)R.ulTx(HNDH5*_nCe~%|MU,h:O-.$NCrʌ(0DB+P-u<8G"Ñ\ 5rl^1vK.͒5^I{%cLZ=H-> wKGp.7\8(Qw[Ty\r)~҄Nfy<_fl(z/!Khp`aӑ]DyᅓJv#0o^tWj6Cs8IHwlHuɁb$oHTOj5L9r}H3(-\hHM;3=^rG̭+rs({lr8{uE$ӄmх̈́_J*#ftIs(-;PW4M7ĴŒzύF(3cgRt!iEM$[WrayzU8$j<^؈4 -BݽȽ&.}Ecvbv;]Aiʩz@88YaRC[8wR5t m9}%=·J5Y:JfFI%$ˀ|In|RH-a`7L<. +@gv |iإ rC5Y0Ԉ5{sFR֝$Ng,Zg_c>֍ [܎'}UC`Gȋ+1| RxPvhdqx.'9+tC>qBw/VnMyL=j;4JUﵳ8v6$uǺ~>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7534 0 obj <> endobj 7535 0 obj <> endobj 7536 0 obj <> endobj 7537 0 obj <> endobj 7538 0 obj <> endobj 7539 0 obj <> endobj 7540 0 obj <> endobj 7541 0 obj <> endobj 7542 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7543 0 obj <>stream +h[Y\u~_q{ eU4`Q" !E3C /YkeH: @9T͋?|goyqw&;,&GʳKSa3p3c +w|1ecB] |0 n7Kq:5~04nvk |%.$ 1{&m&0(d*RԇE+niu%څ#e4[؅-K~uwl4nc4;,4,ez869/nhg YGd8HY\vC-dK6Bk;&A Zl˸ÒmG溿 jx4,s +ouŗ~:}^|yŗ/o_O2ҚCu~3=-͸Mk)a3ŷ7?_{Oǧׇ~1MG`l`I|iz<@N1 y:D g渄d3mR^;? l=/>C)̦X-:نsIC K5b9y*[r:8&gry^Bea˜Rk`U }Jr2;쬧Ugxo&EqRݣH*$dHpY, vT"2 ,.gdf4#I*d[%a9h a[X΁җbR.Z]U(W2IV7lQYۧ#?!H K%.uꛗ^$6 pn#xbk,.6LCE{bœ ;F$&N| ?B0Q 4[6# ++DG;Nxf)PW81&lk,w31r:QR>Xk)B&Nn +<[6WfNDܭ)m\8}E`NJib!B [C(IbZT%W sЯRMX $(YvI@dpsڐS?cPJ9.n mhf6L݀G#sfn =-fO&[J'c.8d ? -,IHÂ!Jߜss1ge*v6uF* 2C|i +}iuIr2snmJ)-tIMfq]6[Y0AvIl5DrG}2Wp +qeF?7r>-vId4EP> zK`*48kOY%K(9MV%B劤@'8t9;,-G-txCO>/5-tMPI[Hp H+ø8Lg?2# ]Imt< 5Q у~PjF/ +\'ۯqȻwWa~8.]_]گ Ϥ!X~u8CgVkG8,[nnGvzy9>v*Sigگ@ڇ708X$z;Bw叅` +8O3Q]EHra+!+I@M`ʒQ\z 2^1)GMs]n Ɩeή47 ]棔ėqjw&/g\iB3g:4練[%50t޷ 1gDɊ񾦯ĘIfC2\͡-d +}Ww߷r63ξKwכTIQMٌ({ZZ(4Y] 4S{L]l: nr~tO]gV_ߢ*~~ΫRd5}QZ_?Noq޿+m5~-q&wM[S$O :HD- 4{8>~>--V;x8@㞿"Ar lfމ4Cܬ=h8Ko&pd G7GEO'Ngkio?#u.<[cL}>` _[dϣ pHEI +4Zeje|jw6,qq B(ȁʖ#.wKo}[iۅ>T,Rz6fb~X.rw,6X>MFy]sf4etNnTwItRnx4 DIZg++ܑ#9p;y!7pIɨ}R#U{QG)k%bqI4'Dz=j&uu^mTmz'tzcQ,4,'n S[&:۲q'ujDTNa|ᩲNgZR|l8w C"%@;4]vz +blcծML{ +#9hkARu oɝԠˡn15Dy 3[)ٮ\}}_ˎFe}PuWԊBπ=&bABd"үzX$3븂l*mRŠO;:V&L~v 2,wC+`.003 +\#rwii4H{R:ѪPX#ncQs<-11 u.yXG5:"b`0OW) '/{YY[f|٠N-ۄӶtmj)auvB}J0q<8 oࢯ~D׿o`V#ӈ/ $a[bóz;v?N9VxN +|x5/_yV;=|}EDFERrEF"W˄ő(R:qdM~4 Ǒ6#`nT,(Ԡزf\=)&n*e Ϝ/%rL?vJԞđi&wm{ ݏ4%um?A :3 m;oTPdYǶv퓄4ݞ;" 'Nj=u< J|TPɅm_$/JОI0jTuI~us.VME7YE‹*<{=\s.m7}՜75o+kH_6cnn`8o>njO5cy4c x2|k(trA=d`_OsѸѸ8Mkg}Wå,qYh!O llugl-Aj ܯWKૻ`f +endstream endobj 7544 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7545 0 obj <> endobj 7546 0 obj <> endobj 7547 0 obj <> endobj 7548 0 obj <> endobj 7549 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7550 0 obj <>stream +hrLv^}~sF4_u6Uss7o] lE+p˹$>a a95s^psMhV ?_eqNwj`"\eݹ~x6HZ{X z&D"ͫ7 Iݩc[RYq,~T@+{mXqU`>E*6$aQF0aq zƍV77W^6bh:MCs]wy9۹b8 +K9?s%6n=ʝ403 9-s$k7Aj `A7ri^>l~=W_^Kh' #Eqm:Oc[2h1ĺ?ן^}[n?wt4Gm6@Y{-ځ?n` Dk6 /΀ܐ6wV+e' \NZ+A7[ WO4(9=ۀ}Sn3b.m?bq,".Zd +-m4(0RA+ȼ#GYAs=A=~3N@^h@nypW70n0.5MUyhPÒZT!_AF%8 jH9oa/:A9'2&l|kYM% _6|E5$T5.W ;CgZ_0r'6mFiST#X)ʗ$I_JL+R +b@>)<;C!Oiy5}A V ^Gh] _BP"4r,g:pzqݥODT[^ +GSJEbѽ `_ +2a0ihtc` |!Q8` `V(ыh +=D,Hք %vXRÑ ,.S}'@ +3toX8841]ELLT'" s( ߥ,}`X91[%n븇m960Pr؆EZz$`ȿ٘&R5ǭY^9 ety򘩙"s#ާw0X*V`UajTAu9B͝ofӻ]x~oW3Xڵߚp|w:D 7]rAqNz[\B3tmp!%IY*<2}8vO;d _sG~w-sCf0vHNerY a5H au< gwͷk4 cA̽( ;(@C8|-0zh}r[IfSz4_p5 {9վwԲ-mwvZM+ 6! Cק{ Q",eau&$2_Lׄj6ɶmj<~k;_=ciG΃#r%IzƟO(ɖD9)_qkb1/)DY5VRW& \ݑlA:z\UiyVaѤd{} +̐D^/ +z nfOT :ibf6D`82ZBDk"-(Hkbqë؇b%[E24GKal6`^dZ }l]R -1JSX7Z +HMzRG}BCb*TIK}iZCGG$Y}Zam/-t5,R3φ&mFb J(}fz׼?quۂޅʃO/5ct}ۖ~l~|?κʘK 6DBI+[%LMf\[5 +GEr +QrH쩼y!Wh?qu8xFqc ll&-u$M bdׅJ Y-SaL4^4a3ŰxB2k/1q +)sp^3c&ID"q:gPն0TTr|VsFn0#&lFęgfX1R +b K#bNVee,5+:ji%Oc?^; zꂜ!F絋s,Ku20ea$ܸp7a${TLPmLUr+zjirg<|bx<*j&!%>/u(Ԋ d&Dl@*r. ڟP,H! +Wu3?lV pQhT\UjAu\“2ڟ%$>''ٯ0H'䢸ybs/$WU/ +!EWA_i!gH0> 2ƆQC$.|[*V%XHmC(KuVEBX|c>R\s%&!ɰԨ1 %b9~BQ.z"lDB|$-1!YBK*9,+(NNR?jGDnŕNq~Oz36MnʆXGwն~j:{J6Wv9JDm"j빐c8_6{"2e/l˺DUb[$)U3Bs17-K5KA,*h|1G?0mJQÅ饫7tuoT:[}YL Kai'RU8EMfхXt㼶OႠp+b4GSR0DfNLUg,ܗI䪴E#6t97I5B90.{{NɁM勭I.#xK,$~h/ +O])/>(&VzMRK-Ly@uƌ+f1uvxD0@W"&m"b$1"-ƱOnUNXboݒ9P\e*d zJvJ}(HKURvR|YBįR\>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7552 0 obj <> endobj 7553 0 obj <> endobj 7554 0 obj <> endobj 7555 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7556 0 obj <>stream +hZKs7W8LIqYe˪l9q0z5JDʿ~%a/[*ihtn`t0y\,Z(4zAj/BڈݤLd]+b_v +~C]OCjx_/fV9.tn]0k{m <`[̔4snw8 /1QFP0rHȧfє[X٠^[OYz+Z=qq16(-PZʤnZOj9k-xnWͧr7wqY=n"zqXD0B aqAlk+6bhC!ZK\gH dcPVQkGRKH{CRvH[y <=4IXh)-1kA:z3dR+OVVUC4ՠڡCUUĠ10LluSKgPDN\p7[[]^IFx'wjY80MD1p̈N$uv`SJcɤVp{EF pzT\!GTĆBpBBi p9["`i(Ёiͽ)#>Mj NמW˫b]ʃ] b갯E2} Nd#uRϖHS/z"Xy؜d"U2Lu8tC ]B`ܑݜ#KـF6U6[A-yN)D@8P黇 Mըj J +=o@} vD|Zs%sTL@`(APGN]N)$Nt4@S9uIҀi +.-0# LS>&^y(Gb7T *gX#灷FdXXTj/ +(Jے MK:")!Ҿg%4 7,*~INH8JS=Ji٢) ֨FfM;RmAM]TtꩿXO}=˒5sKnh !||oՋ)ֺbw+P0U_C;E\+nH~ +j% ~I~ul?ic/`%7`/)(@2#_7GXdp6k~PTx_x)q]~lBRy fWYڛخ=0zyMzmYA&"xL|"yM*SXzʮ +XN![4Ն4kw +EGޡz#ozC]?/O`WwgOEŶŇͽh3'1=}{W _ +XTi.̂IBܥdlpx.7zSb |bVFqؐI@PLXqJ:y0~5y7Q^SWB@:5vj8p +`xg>E>TFpm .H.CJSlԴ Oc. pt^2L+4EAV'KZ|>lx((HeQuP!d)NgrɘQRT`CN%'JOutlH#b@⡔Q*H bD8l$XM3CB4'[n[R1}[]dB)Fбgdn2s8 +&`xv;$ }4._<gXB'_Ń5R{K@mVկIy31kRpr86ǹ?)09*_ZLǛAyjgNqM/М-]bK  pYۿ Łht%30~\a?2(1賠(nˠ.`1=Tے-LhFTeprm@̊tݦ}wvJRէ\wTI.˓f_~. ^3z٪֐ϟoxݦ]**i|>5. }B~00TAh9^Hn|>?'vnn4?BnM:`B1eƌI͓1ɝbS̟S;U797;T}/(˻\Ù/H?` d\F;w|7K%_QD\Ɠ t EqOq9q@W']Q@7Z[@̆Fy.r|{KHPK"B|:9򴠰CYYYt>G6Ug/J]Te{17o5]O + W/F $ ^=վvա{uV7rZ'69ͺ'ש=ESp?җ<_7s ^YiQ\m8.7x%~y}ZmI#*}J??qzTS w| JX|>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7558 0 obj <> endobj 7559 0 obj <> endobj 7560 0 obj <> endobj 7561 0 obj <> endobj 7562 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7563 0 obj <>stream +h[Ko$GrWԱ[0k*YvH0ְX =>t73484؟ab34:`#v>"3222򋈬w _zwsc3]̓iq 78M7{(|i3M. &-aPk2&ja˵1qƞŌ̅k{vXQ?o 8Gf6)e9"r\]=O-,1m-ugX{\et +Y 0)=QRkvC¿Dt0ai7]*P><^9blrZ5* T^F#WufhL}sh<63 9;7Gx}БAvaz呡2s;o DN;(L]\kGSj 1rBr^\KGG]ySN',|$۔[@Ӓ-75r0BF&W5ZĻ3u*4hYТ\w+ ʣ^abSPv/+e +=-Lѝց#nbM:9=9>7x7ʵw#w;ZtP| /w b}BUS F!n-y1 сjd$ve,ʱTfd; ܈8D8S6v Zڊd,ojTK̑(N =|x{+^yn{t<{j&y,a^<(R Szb/)zvU(4(k0BGDWVy/KHɡ3tA;Aɸ ucqBKƐZytSId0q) 1dz +FEȐ[g_6 g b/z dn~#P!°jd#UzWe(r(3&p_A02e#r/X80>y%d?N}ubRp9V%v]-ޖZCdB{CNѲ^#%h4./tL"c2`~. =BRR\nYT^ijRiyPZFLчÒV$g0TJnIpi\e} +_M1w(K͵dnٚ M͚Os=TgF㐞;`_u/n4(;n%BvF-mHg %si'T_ڔy2ld ǔ>SF hxVDdig̅4ߘXe˛黹B\n'd{J{k`!>75%lN>)A>kxADJxvB!<;aL8!hi=j ^vlwkv΂|;m ٵ@ޚ]/ ˓K=Xy17_"Nh.-͗؆ߘ/l"#%fVLlO2uJ.\Vmu,Or5;JإHv&ַbY}4w$;|]//|Rδ{S[ %%Tt~YÛawX8rkTnٹ(éFBŹ>}40YB1h6GoC )ߑJ")Ŗac*-* mԳjȍFӉ﩮e*R1pJt04znVú-r\DXQ]zQptdDBby2 aBqS +%f&t{#V$9IG9\ MIhL~ =i⽜j`h_gkg%4l[mIU^ N/4;; +ưz;fxʹ4z +EFʒƯ1d*f*Y8l}|PNtA4<^ .h T`Ը˖&q՗c k1{5Fv#k Xwa wmbaģ-\1QSP*[ةI5}vC;t:ݕ+q5ʹO5 U㸀뵬׬cZ=`|stm-draٰ$]lux/@NJl%ٻoU܆\cn/!,Isr\c؛z$<NpokǏOF 7 eݿrŧ4֠OjJq͑P3ѫ4J`npּ_F^ְׁ'Ò~`^X[Ï_+2Ig3MtҹԞzyzh~~|:<}(2JaJt,?߁ޭÇe;pyW̼:Oϯ[.={_:_V89ZuŒ8טQ\2ߏ;,C:~>~a-0 JjEqmQpkTDУ2cc)>N-B4QQɓe|8Z_J)6ì+K0 ܟg}O3ԟj#ս  X˼#MoSةtTS*/!#$&Ha~S2- m` ؖk^ lL * @IP)tN<E' qT@]Yly{k[]%gxz uqeA$1 $B +yt]͸ID82wt^bef>d[\t[.Z~.!,Cl-Q}h qDL<<MyW#A,C6JVm;JԘLŗ^{(B/~xi [cfX㓛LE %|mCX-9֚U+܀ιQ' Mz v'k3_kD¶Z/"14+A2b&~3/aYz-[u?t$ZĪY>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7565 0 obj <> endobj 7566 0 obj <> endobj 7567 0 obj <> endobj 7568 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7569 0 obj <>stream +h[Yo#~ׯG2f@!`ˋvf<-P.3_:RC;>nwR{j}jVB*tw M^^^B7}ƾ|ߛ{\]N`Jw41nfLU^5]Zv-/_]ɾsG_#cBp~ˬI2]@>a~&3 &K=bյ2:<ԱZ*_ ++#)B! 8]Գd'&HTszi+ڒ䥂1S["9+*lA +Lˡ]:_-{ 꼾R fxe1n0B `oBN*naڟī*[׷W"A׹"`H)q)ڿ_z3=lNxa:Gq_>:1>>I+uqԅVG&?PD FnC5њhIk#}tg.hANS]uJ舴DKiZ4F,Q0ҽ15|̐i!ΙK`V mR]KyߡSYe4d CdV`ݮSV-.UjH$qM"wTȍ;kD:0U膺~J r_(oeTI<‡@UsF HU$!݁N%iC*Ij(h\nPPN}E" G`le"% + tb|&B傇tքӑ%OFV\U'G{G7D ?J͢->#{@e,ET}aHGˉ5D:kB%ƐĽऊ*pɦYi{2pKz4e<7SIC$hXp5e5҃Z (j00{I +[â41yX>m -68񑲨 *WooߣJ )1pOmrѕr'VXDwd ر+X$w௕ag%:G%P>w6``!MNyCt}i;cD %zJUChpyEB#. %7zL,eav"Qv +`_ꚑEP2 ;b[%0D E'ǎU{l@T!豛]v [J.N/ť#!, +061 TݎG+ܬ`&_\R9+!8| P@E B%ddBFaG5/fjJ;1Vd+* A1)46 ŶTe5ˤ*fhjbyW8 nvlLW=G7T.1PYe4)I(^4aaɂMb0_`mjrWt%YG[V*+i1xOF|4uVF5DhIȦ";8,1%9Kƴɶ,Dŏ]-2͋Ty\Z|@{S /9.x߿apA`!A? o n |1-ћ/Qh;(\Ekiݰ_"JY<.!]\LL8݉T=D6L~\^$>a})t6'b aМ!3!b_/o-G,Y xZq:0"7n5n~K6 +Y8&I'r;8n{NC,<}j;#,@߭.Ræ"=YLP3WkqI_YJZ2,/ħqh$(h,[F!qiOW qX<1/l:BO{qǧ#ZR;1ҤonȈ-$D'e^o7$M3i)nbVP[zx7q~:H?gD}2M\t5KıeȲ9Yq3ӆi5^ߊ4>}GQ ~Ʀ_ig|?/VpC w {xDDvqW'q7}Yζ yX:Т%ߜm|.t/g% Fjy>ȑy1Ͽ412LhDK)M*DiqLȢo: g #9SQ%`J|rt*Jg"Qh4 +І'(qGJy3ox_&N6iDyIQ,ǨnEfzM6H%noYZDɫu;|.ٹdu1BQrQ@+xivgdw>Ϸlu\ʎQ?"S9ݕ{]{2,Tw]rvsH[V<$WOGyȉsa8̥8{pV{]<2%鑌XWޞ'i'xn +1Rvv#+83߳x7gl mq3\XƳQh;c_{fu4ə, l9oUm PY ?(؝ ;`9L}EmTS r3&V%j"c!V e,1B!. O⯎& ǖAV veQܜ gI9ɘ g +9dž{JAX xgaI8JƪڸэƵٸ@'g[&)61lz0gNfV[^aVZǸ Cـ谜MgB4 +'LV+edeoz_@ 7Q\=m4\jId1xzyu.1 ɛ;d"$u5Jy)h6kl¿dE}و.{W|%.lا:ƒjmS}H)|T?;k4JLmJ2YTM.I}UzI+9Gw w\2N +@91,_ڕdgAb{n1ݪsi8st HlsPAR, ZWPj󟘆u(oxK7@!^x=:OaN}Ŷi8qڋ]$Ot#-wZJoeqs/-6O/Uh\&FS^}\R{ɓ`N㩺^X:޼ͷ_~u?/FRx>>%!.p6gzn|ǎo;@uO/>H"[&hD)BJeTȯoAד%:'~R#|1B +endstream endobj 7570 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7571 0 obj <> endobj 7572 0 obj <> endobj 7573 0 obj <> endobj 7574 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7575 0 obj <>stream +hYKo#W(7! vW$Y;ر2U".`s_anj(_Q.e*F`~^iؠPo#~ :jQ;exVбm)Z]hncuҙSr9а'j?#{]W$&vIj$x4vt\X=V 0`Lkpՠ/UvY/;̛[ ]Cz|G⃭@gÌoCf_,̡JcUjX}.aT;(|)EKԗaQ# `]΃H:O)Y2ݹYzEQ''Gz#q՟v!(7 i:Qv糺ydAꓪ-3*dHAłVJ4f[|Is]FlĀ2<Bt`M5YYT+sSLʢDK,?|-&xA`B$$pDW%tNz{eؒalmaHTӾ3c7m fp;yX=:gsU}TSfx) dHvG2h8T\{ :O{rX]4.ĝiiĬl-Zdwk-‘GH(fϫuFC˻:-wϟVtY>@]^鬾=)v +j42C+z~Ag;he/e\}rp=/l%]oR.NORzn`iz#nI%E}V)v5eXH-ߺ\|ڽ+aWe%]C VOzz',nWEFUGҝ۟cjjY[dCp|S ?֬Q'C7}R1V#gfS_g,O#洑b%@0Nʏ \xc<תwfggY4y;n^)jӼn Zj[^{5/p=ﶇY{M65omE,YYׂ 02zzD{!& 0[zZ+e l! ;ܲ n٥z=}\<*"`ou(.QJ X5F(L =9+K 1Y [|/Xv% +endstream endobj 7576 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7577 0 obj <> endobj 7578 0 obj <> endobj 7579 0 obj <> endobj 7580 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7581 0 obj <>stream +hn[_qϾ(P )j}6˥.iY}) 9}?͋NfڿU}I8M=QZX|Nk{:KZ h~^Bg®/7a>ϸQnuiU Q޿B(9Q3a p> +Ɋ/unS|g |q6@IoN >LuITJ>76f%dDB,M +8H٢\RM!,8o,G&`ϝŮ!W +M^RJs$5UrQO6M&(cyWy0u:M?z 6Mh[m?>fop3촕ߏ7w_~agx9Np7$>8}>FL! i:'jH6ӽ2!xkV`>ye:⬌@U:Z3p/d؈hl_}gȌ3p#$Ta*fVkrqƨd3+k"qtQ."@`I5):pCح-m +HUm(kew#|C~[oW>HN%L;@~^ڪT=f7Ix 2Aqxdj]<8`F#h $ECQx/jdGR`44,Om#x +&M^фב݆/IDaxly7ʔ%AHܾf}h)Ὁ WOtIDvl9aE 5$O:ƉJ[T"2 .wdfФI't7!=,b@WQȲU96-zxII@#P|?68 +( q_?/7ĞA65T 3F~bv"w5K, 73xr +S 5dElJ$J'Jv}f)#er.+)ü/3ADTس`t6̆iIKѶTe +o ]Dr2e[68Bv,CWoWdBG6 W‚+Q ;N πCeM-VUy)ϻk v[oXʥٱCF+*K+oDjxPSCGf\|mz2$x)5A.[ P ymXHY:FGy<Ԗ;:n< 6dlSCi-EH%$"*ctx䳐ǵH3rW Bͤf}Ciw%7AUr ߥDy6J*JVMҍ@Biaejn!Y9\өMy봓muW}E+ezC$[Gj%HE]+"WSYVPBnvjd1^JaH!gI& + }knU]ǭGNbb[&䆾$(@1-=A< +G['8ygmJ]b، -)<]Vi }E"+ξ^U8KɲOkdQa:gNQe=#K][i=^M8=c +~D#LESr7p#ܫ h `Dy 9}r:GO@04'ӠKUvmR]xlèNԘډjF79%sf~ }OTpl  ?R$dUzO]B]eq"a\"RKO;g i2TX鋫pG&qw2fSwg Z9۳(D7|D ð9jP+O|E_y|aO7qCO<I ۜ'l|˶Gj_[Վ#j;~6xa{;:_l`ۼؙAN VQ{}gt}fwƌ?˧ +_ɄӋɸ_u?Bmu +?w ~+1]_,>w?.fI+sużdU.sw(R7xm^հ+9?hP'q=Yr]I}GDTMX-w[pa={p|YC֮طF2 *+bxcl[kRsoRhC{g\ԙW^: WصÁ_ikXZYѪZQcNV,flؽ q4VUN2(kKʣCX_,(*<*MeĹK!GzNYE/8l,HFMs覞s]"pi +Zҋdck~\_|0\S"BKK}dGݹW*0v 1߽yog^w4Tbܘz~K?zMT20 2̷q* +v4yMg A[ OEJ$m/7W?}|8z Wkpt{0n>L˧kӗ_1d\lp/^iu-t [|jG.pa9 +?fZӤcꕉko}^-ljŒaEðw -e{Ϡn?b]v]4pⱖ߲f +1p3йyY9 R !/P;}[ ֏{[6Ȗ_Rr;Ȧk^7GQTޢ\E%a &՟*UoUm¡椝1z&h +kZ>:pq7%-o]K"s5IN-<}Zϋ[ +<Pe]+Vv7%W{IzRH:~>BLYB:tգ! +HW?}y̡~_ +endstream endobj 7582 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7583 0 obj <> endobj 7584 0 obj <> endobj 7585 0 obj <> endobj 7586 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7587 0 obj <>stream +h;ko$qWGMIC{K Igw.Owa;zM|uyssc3m02ؘ2Ony7qnкin\ǤyF &ck! +M&`Ƃ3=>]>vغ_n BX"@CJ~tF7bgBc'>{z P! Ek@ei:MyŒIIx|A] }<zvMe JZ6”on6 LFJ)S)ypmD<cqqL8*K /T5HmRez#EΑ'7If @MlLedo~:ex[<|͏ fA?3< T<Z[i0yLJۧ/X8agT!FZ|@T΃/~:2dA?κjTh72@eӐhG~۱cIdOh'"@k 5]tɉkR0oޘb%U#9!4tm]< @ d Ec/n [ fS8)$K.NLo ]dNM)v^NQɝgL @Ҿxe A!Tc߂ĥ w0g2YE/z`.au2=pMi9# k|~ڂz+^ig,h?qe<=Z v\7'yRZ aW%Z k הŋP+[].Le)<ղg]?Q yE|qXn4]m3Ӗ3 !<381F0ZŨWݧ +NlwZjfZK´&i$s܏*,z_G ]yԽ=''z#Z)l,R +ldДᴐobcOl p[nBgXf5=naZYͼ&<.Y⽗Ui[[_G##ETf:^sejpTFg_FQ絕mYViکUSv7c{ +[?xC%^!t[Mm8`ܪWH!`jHu`_i-kZC_8Ok1i׋Z1fZ&ԭi?bh]DFnrO/ަ4/E_<p{p //{W6 ,?s=^ф3fV=OOY׋W^#p<<> 瑇剟韆8|8;g@P|5r7K~g"aU70>e'pW` Kj~Gyx^|w7B0xiueQm?tf̽,|!i~uJ^?^oH}nPS5'ء(:0Kn1)jMkev_z+JnY J\=K4ƟתGJ;W5u%z28ͺj]>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7589 0 obj <> endobj 7590 0 obj <> endobj 7591 0 obj <> endobj 7592 0 obj <> endobj 7593 0 obj <> endobj 7594 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7595 0 obj <>stream +h[[o[Ir~ׯ80a=ewhZ' f>(xH@WAeʉ*WHH"P"#vay3!p%ђ*pA7t!M+qsܠ_Wt:fa-7hkmƘ&!ŕMtȹ\:p/ H} Qp&hQBu3$ i@yfwt `vMp_q :=~\iI.B-~:<˕[<wg(nq\BT#>b).>q^>Î=B_x[pDžOO<~F|^5hD +4'S{ť!Q|)Ґkn_h - [Ҟ)|x3@ewA-W5UO߇#}}v'{.o*:B@9p~^]o2/; +/(^p pyi`'UrTԂbq>)-ey+rN +щ ]` 7]3QbN[S7` + +S YkeܖJ}fSL!ꑹ/ ɳy/PEm' +/IC8P_ETvK6|.GµQ丸mI!5P`RP85%W0xy_*_ +vm=eE0BfDMNSkԝc\S +V{FOUtx-tH_jv"t'^5/#ZpIs`DaԀ—hEPRkԩi[n`x@R ܐ m3lu,q}ӌn:@3_ϮU5U8MmƦs*-G Ph;pjo[gWչ_]p)oxQGϊ,^kt8nz{l+;Wm8?{j?;;QIX`cssQc<~xLJ \Ip (2,pص|Z|m³ nN 5ԭy#y2lVH( TXUNPl$٧Rz O`,CPv~q|? $IIN8{8,AGI}%YFQ8h3a%NN7TaԨ]ulVALˆRi'EFT0MDY_ЈwbOvUZl2w2nݺR7PDL7PƼelvURo9.-4Tmt"i;* %h~1C6al&_mݭuMiMOͧ%T"|1uVul ɼTF}'q6w"qJ뛦c٥<XIdG^e +=ӌD{:xTJ!kz{\=3vwJϋL,PeClϻZnEGA=b&~ ƈFظ..A֋-3LA߶5CظU V +MՐlLD٤;?r"3nSRnSCe )cg:-IUmk3f%7kżה$rO^oI(`xۖꐖMB5YKnS|*MS5>VVrݾLC 9Frj#?mRDbQѡR|ÛuL/)=2W8Զ/>\.⇷߻-flNdGs'h=/5UR,?>rpǟ6?v<>FHMb|Kpo~JCs-)v8b8.;CKW".S.ᣚ~qN߻jU]Iu_= 4Ԋ)7dk.ABm&J堙eRʘg1l؋bN4TTC+h +}tOEayPOQY| e`a=*'Ԗ?-(`yzVݡ[8 Uy:t(lLj\c"yӲ|`:U9 J""MŦ5]??WNtg}xMu聻W{s)|I"ßt1zZbPc\z .9L>ٯ&hz+{cX- (!hBDi~^ӿ=nB"CH #$BbSkšwo7?"ɏW%㢈YW#$I) +Ҁ6PaRz~3գ8Nh{> pCu(k,q IflŶ)\?Ër(X.yS϶=.Y̟w LezTԦ*}&%exYj&'L*ͅ+n}vlY'r[@ -@k^;T"47#)#_!m󕩑kxW|E@ES++1GE|u^'*Cז|CuIm,!S"~qаݰDIFْI#(>7{0 7n3Pn +=`>/Nv;M=s_ќۇtfh0h +a_o'0=ڐMqViV(1^;lR`itC[S_;|_;wI>6ukzt6St)S;oa^>{&ݐr``8X=#"|G{u=A=[a4lF;89s`}~i(K 鿆;q]L.C-~X*/:>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7597 0 obj <> endobj 7598 0 obj <> endobj 7599 0 obj <> endobj 7600 0 obj <> endobj 7601 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7602 0 obj <>stream +h;n$Grzl.5yv=h$25vE?=Mgfw숌<)j_ NwqGVO?_}qsFOzʓy2!!LY);|RWY)#n~q@NReg8hLmN9E亸v;b]iͿ"s mm"bwt4x b8k*(]}ulh2Lm}-/$-vҽbDt:ՖS`?[SVwXaUȻV5lT +(Ci66<.朦98Oard~9 mx` W_ȳ]s0tH9gr/.7D={&M&La|j5}ٴt_O !g`i-ѿ]Ϗ>^sπ٬Ӆ.?a! H)9d!NǏ8ިYmKۖ;;k?gf4|5Ӭ]̬)ˡGI0=VsvaNspփ4Jh[Ns0p6s@21 I҄&u5ti N3(X7= #|ߐQSr*z1pvNfPnC))WWٺr@H ,6"2wK+Ʈз&#&\3[cg.P`=y^!؝{inOzG{4aO{K,~*+ev!T1b+Y95蒝)+ʹS>wfuf T_L5izL; +xP`%V˵ٷ9@) `k˻uQ05pxD͗[|L_>]~=F,nT%Ay~%cS@fWU&\w#VgiaTx$1T $h@37`a3-qsUW*ʶUnlD?\M" +F@8HkO#Ze*`KC(c V1px́wX^c[ DR4V XC8؎܍~<]^փnmkP#/_\Qo]_/ǽ/wPW%:o` ߟJF %XPtp:):ZnE;P'ky[M' #r>_Z#*Z :0* -r:{D$yK"/RS{j +Xj.WxylهrXݙScXͶ(&J$MR=2 ׼8IZcy325_u~#= ]r,[Q2vҐur r9 Z tt;J}"~!HOּ-y~M]NT c) WR5-Xj|.w|~fd%ZQ)Ēli4[QD\%eU iJ0 AW)J7=C%>oq`<I8Q8ɯk KGF#h+KZZyV  +ӧ5DWs[J%M#ob2*IMbݺOG[˟-W#רEJP^>$[p^JFL$UҒ)I7`X@ೖU+a(.wKb᧓x qCs}NЈE@!rëRh-)C +4QrCZ9 c\=P'(Eᰶ"o2X{uQZջEd\bY (meJvD%N `}Mz[K=J53h0CeoU6EAz2 /3TmeǓ(KPJrW;l7@De/!feɉP_WiL! TrO^ +ЃV1U3mͲpxAEN¤Vۣ;SԲGWk]UOE1ݕ]R:@4GﱜP2 (wBR'GzB7I}GKFM WFm.[Uo"/5ۂaSV}_=ˣ n[ <ì܍ROW2m?pw: ӻ `"$璕 Kw i{ OdH{&oēVQՏ>109.y4L8*.S(C& m?xҫ,.>,GI~ҏoݰ"~EAڣ84dB(-H61T +NSy\#ևw7ȪNϧ鮔y:~L2O//OO @m⽾d?+1Y9r~qXJǘ;Hݫ9Wo~<2j'oCu85:aƄA'{mc!Pn%^?MKS/U&ZU&Z2Z' JMUSHUkN GjLSk?MK8܏TGPJ"!XE?#ʎ5\/AgKbηWz-p,Nq'pnBĊ/b:5[QU,}䌎b>7A5SHjzXuMU 29տ-(>fIf%_NV?AR_Ŀ$]qs_dxsnh&sͥe_*ȳ[܋;?6H8.km硽yB +B FJJ n񶼐Fѕ:n:a:4=4jZufKbV嵮b"^FɒP*Y{ u=N{oPH(o~SnueA/GUkH⦇g^8^ZH/S}Ϳ{ >yhT۝nEz}٘UEn4e 8R|vw |Ք11. z HJ[_%^QS1t;EsŇ[!*f%\xI + [㖣Cs#Ϋ/IT/Ajk8 +E :gM4m@4=D ()L!%H㳚CXRb5_5$ҫ1zGMRcX?h|bd9r"I>K'CsGK7Q!4|M_;V{i%?=/ AX~P2fG& +꯶uJ)ϡpIaLs@ʗ.\:5Tbi^uzNŶJeN6 (v?22P91ˋ___^ni7nO3[u! +endstream endobj 7603 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7604 0 obj <> endobj 7605 0 obj <> endobj 7606 0 obj <> endobj 7607 0 obj <> endobj 7608 0 obj <> endobj 7609 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7610 0 obj <>stream +h[[od~_q`sx? :ccHby0iųЌl#?#S7ɾ0=ݼU_7iݝt)i#eҔs0~ta3Oߘy69Zy |G2ú u&Zn!tu={Nиn;gcg$}y Iy{&5t +Yz%\*+Ԋ[Z]f ˺ua Pײ^-.M~u6ne8_JLȥ,q6s;l7H#)h(\o~Fu9hKvIFoa .eL6# r5nBIfb0mX|t΃}?`IF9Э憐KK4nJ 79>_x|az߼'`K$>4}:@N1 y:|M,a"LRTTv(&a[S|R0bWt^ v̜ Xjlm!9Xq&M a]L +Ek`U }V Zk8쬧UIZ`1!;ud\D[y [jüaIhg,pOT?O ӟD#|JPwfw hgqQpĈA1{'E(@5>HjA- 2 JR)T>e03#8T,IZ ,ӊDZ)%f=r/oˋQP\vܚ7Ɩ%Aωx&b5)^M W6ϓ~Eu8UݣH#SVPK p8,, F`84 U[#23Τ#I*d47[%a9#a[X΁}KqR^2:U(ҫGյLuU Dj3_`t :?G:m`QR'~ yDr~K\ܘ)Q܌%߳`~\\๛Ӧ*ڠށ{WSC@AlA@16Cd#K0{ >C߯z=(izHd$.Rb]bb@z'm%"zqInSkšY3"pi>>b8ݍ #H/+#AՑxedK$W +Xn mڎδ_oGvvkN1ZK5i.~AmR%ޣl>zq5?H4@FߘD샢Mx O1-9 mK@ֲAr?.Em)+6IxJaNRX\w2w4 +[iHO"dscuC<2\E +"YCu+ԥ?9ynm(ŐI⤍ݗ86Ʊ-0gM0M/%qjE<*RKZTk{Ş{igZjZ?j.ͥ8%-O+grnl\rJFm`۬2c9>]zU*5\pb.+Aw/NUr蠇+øT`)}6*+8]z5-epNVfp=;h*f֓ݥ8F>|(#jn aSSVU :Jg\wTD.X ԭ:w┐3n`&fUTr !y8n0YetVc`lK+nZ*Z| B'JDQؙy'@{Ѐ\R|beup2Q`: LE rvlTС b~)=.@H}GRA.,quCFN5XV.Qs(Qfs3p.w/췊an{9QW#^k.-.Ǝb_V^ޡ{LTs%rsU"yD|J{t"|N 9vLP7GZs5|ֈu^32J㡽lc[]4uRa?$HdѥW=7XLIG6ٵ F +wꌂ8#M/.⧢6,5qȹ(UIEǪʖerFyx@ǫFSb[5%\ Dyۛ}z9vl[7߽4ݿx]Z ?oNjs󻟠st8? 3uf!co-<_iz#eW~ӭ dm +Nihwokz̴OG.֔sc%^p^\343:H_hx 8:x ~ȓ= +<ݚp[rtݘ[k7W0J???r|׹?ގ!CHL Ӵ^ύk7BY oFzQ aYZK0ǮY=SfN[o+9q$MfOX+&v٪I0~DI-vuɛ`7s=4zɚF+~dP.\828j $ȱBê+(y6[P/8{P5 +CEM[(7.ZMҪۇ*N 9C4Nfͤîi?KvŗR] KyʻSu^!I~OJ_^zU Z_j@Mm!*=7r-y9Vl' ORKxuQQ~FIB&թ1, ++~sD ~ +endstream endobj 7611 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7612 0 obj <> endobj 7613 0 obj <> endobj 7614 0 obj <> endobj 7615 0 obj <> endobj 7616 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7617 0 obj <>stream +h;َHr|6(M.Xk` ?~hg{4ϰGf,I3c,V1yDFD~xzy{t=_MMCۏWCզ#nzonϤ&z͈!aw3` Gw0t܀nCn H mcHP#CD dߧ-OgT#>$YЅXGCy v m`n__!Dy@. k8pYfY5y ʫN[i KcƮnitub +{Ov揱Otdz:uêQHX.>Z">7b[\5K$fG376{ӧw_]VL3xܛntC n.L݆[ӫOϏ#SOp~Ɉ xhMS'!uǏ8}wm۶7!p{c]M?-_ alӡ'$a"mi kp5=DZJ6 3G?ij`Xzxcdw쭉m˻>:xp8sG`1/0Q0҄T (恈P? ԧd +ꇎ ?ji}no?M&WoB?%Ư5oqra2BȄ EM*8c^\n`O/TS=*?@N5wx]ۙʣP.Op|H!|@a+ !Ɗyy~:=~>uOԼG~wwOo|nc'p}dsa>;65:O,F{!2r~5&- kϖ:^xGO<Ҁ=ڟnj@sNYc@lLq,(Ľ]8`6x@iiA l/]I&Y߬&z IW 8~i}L9X"둶ݑjHQRU\1Xdc>E)['YZ3icH|60a=eb/ 2XR@sl{bYƲ2-^&x95z]7\.w0t smbܮ#tc@o v5sqs%f^q3_Gz*E.kYL١-L-Y$6abĤ +s\"6$^UvОAcj|XoF$҉"4ݶ +IY] {b@ *L._Kl'lqNCc|5j?%3$m1z+zڲ$2K=UN oxi(3nUwiL(L%X@ϲ˩\wN T#V;սc=+Mey?UzVeTK>CdXi@~D!%HJo*)\ͥs˃J0_ s5: .Rj4! a_ L%ScePc + {-ǧ9+1H9⑙h$:A-zI˱\.O/x%E]Ȫa;1Ux2\ۣ.,+%oW#<_ưYdJb~-bU1;ytjU;6ު+=j+eƹ;<9kroWRXHֆs6|se K"4*;N%%qhgEO]*Λ)4a79@>"lu p`̧{T Sݩ=kNք߿|%z ?8zWtoua z0zpRiz7zoPEA~*2j*'{ 5i^3ܗn"mi3FhcrMn$uT9I(9z~XH5g-;Y֚ZJ-֖XW)dgT5*4c^c\88"^WyyE[ד@߮iT= 6Հ)0Jꯄk~)?, %rəJ"mU͞<55SU +OibAV+MIgU'QkQS_߸Oˢ/\N ޵u)fA, VFSbkV/'\\!]I ̣rMP?I} [A +s.YD $:aWIXe"k>m,S2QKi=Ejcw*b :BhImΕ\gbU;06s58UTB`t@+UmMOb\\ɸF)-qD`|eՅ UEvY4樍ul(u.BIKW'ȧg)`}܊ ЂsU̶Jcsbe5@ܪ5<3ܱg0k< +O}RAn;v . eF+Ǯ^[nfafn̩*|9U.)03h+K^n*7 +E+]\q/n((UzE(%#B5FjjU+֧e@Y8}”ERvQa,1]IZa[Ucq5/ɵ/!+}DO+fz@UWo"P^jKSF9J"b [̾6I$g[@c/yFDP8Z˪JwSj,R^o4l+ 2fhweV5\D{S(Eys- }Y,r:).2kº~uׂ6k vNCRRKnlsCM6w㛉d3a[jZAilA/(m?ZرV1/_ʼn4WvT rr`KpwUtPRAFV/Dj?.^[GD4}ª!;qFK$(oL}1Pi'^++UNUhyU[Paj%^ePzc\#NM>ePw\߮Ty~jʎsͨr/7!`*4kDj e4~.2^~O7F,#L{2^LO +endstream endobj 7618 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7619 0 obj <> endobj 7620 0 obj <> endobj 7621 0 obj <> endobj 7622 0 obj <> endobj 7623 0 obj <> endobj 7624 0 obj <> endobj 7625 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7626 0 obj <>stream +h[َ[Gz8Axtj0lAf@.`SlKOmc#yk-d" E^_W~|ͫ;;%N /16N)MwnǛyY t>Bכ%K3|~gֽîu}W8 ݎ,s n[ܘ}p垷f ,G($ƥRwVx\2C^8i6@I;ظ)l])e}*%Oa3sC;KȈX<"A咔~s?⼱w{.%>7Bh/3E؄=A&8@͕ jxK˜d3dl,wxNW߿θo_ dYGq:~KZGAY)XX<$Ddb9?lRvTvT A[f%(y>ye:B<:;/pu&@,GGecXA s`y<Ùlϵ #L/V5',' ok̜,~ٚHe UbC8Pj8ۀ`I5)f-xkFіy +H +Pֳz[T„п#(ߟA۹,a*䌂$F\ Y)B8\d25y)pA-PF + @HPJ)uX ; LET=XAR p9" i(-F.闛ٔ%A/x'b5|u~5PYR{Ayi_&iäGH{*(dI8撄< `84U_ 23,I't73,SCò{*YXΞ]K!P)D*lLҵHm +5˱ L~@@K%6vG!| A-T aH2]& aq\B[Ц?;(ڨ8)K]7CZ^H,ndPBc+lÜ /gw `0fg‡%(3?14b,7La$1!N;Ѱ D 2x:tX@Ùb׭$Ap\/T,hWwoHvfPXC{=h @H;A!j@ک#3~;;p` +j»\|ZLiWS!rLɁur40:7< wdɪ [p)dl *ؼGÄy[0PpmPMDQ~DK)>1|^$/]fό=@)Uj,ZL]*Έ±9 DwCqχ\[>_a tjiy{qMJP#/&PEEŰtWMPzpclu#b3{D뀨uڻNtyQ)[D5C /}HjÂ@XyIx[MC*afc&V(X0h,6~RڲF{=KZ": ~D,8Y惥q\X>H[ /ӈ9n\ b*k8lM;TI .à \VJk<8_4pal\FCUjuSfo*4Afbl6 ++ze8!S.ڳes>nHx,e6mJ˜7w6o}=Mq|ys:t  +Iu:r5LuV NҜLo^-`j`KldGj c;Tm%kQքK~;VHV^;Yȯw5t9zWp8}qwWUN"}xnxu| "[`S/0*EDzs,ODqS>%cZw;*s]]9k9MF^zYW]𪈵KơLk&%Ec.t@NkHf,4V󚿒*dmD>#[i2; 4y^. +^JhqY|{ ĝr^Dng ˧mSm-"4ηVK 9ʼ:#ל~zc5h){%Ϯ7\a x(hF^S }Y)K],93̵=#Н 0* wU a(>aH0ÁDԳGqSr'P9׃ʞeq3!y>=<⯷׷-x*Np"9(QpK'ocv+& +BP+0G@ckjN}+Nzza_6u^uB -|EQ>Ģ-4.e^v_Ý,Ĉ(O4' y/߫qJ6RO: WfQY{bıfRoI AdXUlahci;z /c}mn^/qݶkCW)>3Zۯ P~Qm[ KY],2P/l: +l \hfh<_Y?lzizv#K=p}qip}f07_ s}|m%噕)177kfu3:0G]R;OUjU!@$:i&/]{\JQrG+N'ǭdoVCd<\帇?hY w8qDNok׶ԏ g/lISq?OK0Ӣcs()qɡ#>2+*uo<8CT2M} S IjCH\<Š5=5_r-c]Zw\*&֚fcilmq=U9IF-G$AP *IzstЗ[;$J\-B.-7&/t{^63ݶ q>=+=f}BܽPR'NE?GT\F es>2|L/T0&杝ߩkL_ # a{}s-}0^ݘOY/kOeg_!!{8̹{ܧQxe4Wɳx7ٍߜd8eċn98;̗n0XdjV9y:^Y]͏?J򣄰{eyrKZq嚇 w[{n[+k +endstream endobj 7627 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7628 0 obj <> endobj 7629 0 obj <> endobj 7630 0 obj <> endobj 7631 0 obj <> endobj 7632 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7633 0 obj <>stream +h[n7)8 +v?},@H"`$yh![$'ϱUfȲ"YdMzɫs=$#Bpd~:٪qn8tɏgh=~#GiANE#`iVF^LZ9yȮ6t?FBAHmS6 DidBSL*oh3.94kP% \B1n+ pXvO[SyfuB|o &P Z^Y&li,MXXXU)Y+%px4CCAs9~wr}R$ @U٬:)K. {^jtѫ`DPo39Vh7Q+jJn0 J3h^}uw7B_Wz3L=:Z[P _ a!A3zɫw7߼=\ ՛0\=`gjN3]?\M!gr!!WoF7lm-Öaڪl# ƤpIi7`->JK"2|AdNK3K N*ZƘ4*z&et`h˫j,z8Hcۨ@l1٤ + +J`ړsIZG 2xHsFw31 vb&"-FVnMdK˰ R ju,Q0Ң:0ml24C1vPyKaę+bx@0vT5h9VUe +8 +l7dNΑ +!ΏY4^mjZ8!#U Uzf8Xꇪys`Shk9:n<{3:m2cgVb( u a +Xcf:R˄롐5`;;ı?[g V%8RK%.`P2gzcU% 4W!}^$5u]G1lpqvVLz.ZcNMEu\kL[r!3R (y8T9X?^Ol} q7tz!v/ɴDZk\pmVGCKJ+g0TEidc=ϓ}zbr9:MXD簴m򅩛uSNtxx֏rq`ZUz_@ g}kõLM/6(f=T:a?^bW%MqkZ>y#^3>/0Z-9V8U8=uEh|RG$ +E}3dƓ=2Ҷ Eov0b~Ily#Pev*Mg/><[Q~saj-W?b- kmGw~$ױ`ɬۗ[K)K~̒G7\΅`%$63eH*2L֥>U"I*݀mIK +ZL⪗)s;0cOf(Y#z2+ *Θ}<{fx#RNf<ɝmd+Ry"[M%]*NkBP\~BlM阯zKB—B +啍DQ) n._BYl'1$doY^.ZQ,vP{l ]%*ͮ.%!PexT[·w_W-bk^٨ 5w(v*s M-2/,h0 U6/}s\6P,i^/i4mn;$Y.}AyM?;lW^gQ^ t+\_:_pl1 $ oA{n,!̷c3(EBԢbFsk }6!wtngy՗=!1;z,@/}O`c螮ru:+/s Ci"ayfbyYTdl70uEbX#r喧nKziK_tY9} 9"?Nw>FvN*?tY$S lZ[ 逽I[`Ӡ/ʏ=1xw~|@bRw&ڡO)c$,Y9FXjé91\ A?OVys23s>>yv宸oN}Օ.T-%cĮNrg;oSlK:n1h5;a\|QF$nq >2ܷ,-ZNFs\ײ-ʎxV򡽬ǵrXX8׈E~ћ/͋~ ̱邕9x՚Yǁy +h;Hp* ]j&Q=9qa(Cdp +endstream endobj 7634 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7635 0 obj <> endobj 7636 0 obj <> endobj 7637 0 obj <> endobj 7638 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7639 0 obj <>stream +hZ[o ~?bg4K/(P >H'lj +F,7A}?3G(peHΞ? ?<^vWpx+AĤlRe۝~) &~}w=j >0E8ׄ +#ӼqAƽQZ#vi;U D>"E":VD3aX@:w`ޗ6auǽe h]LOa5j;$vovU͂&U XT ymV fOvImA{5o,,yeh+lr94 Q7(辿 7UrQ62ޞ}~i ËW/w?nF{X!wڿ}5foJPvWt?ܽ=}pw>`q8>@Jo|8<A-,TH-#`U(~` v ;2!TxolK Y;tL Bc}hk5QtMaP/}\ iQ3+k"8jTttHc"mդ zjmUhO + +2P=^ Cx#}[o+ˈ۩|G#*: cv3;"LV@qćmgBp{Äi0hJi'Ԥ RlS1=⤰}~9U m ,M2%b$zY~`UjDVн#ݧd&롚^i_6 x;s`Kj6}IJ +8@pqx#K4;x`԰ g"X&{A2BΉ; [l]K[)Bg9s+J$?66eQp8U6=UfLMYC2tp1ZNDlkЊ"ӬR4`9k%ϫ ru]0.eu!x[s('yGA g{Q_xЄAE=$NiX_OX,JlXG+UISj)IL|_7_jh8TSn]*]fUP\µ:#lXWJ,>i$;3 WUò޴z^Ѐ9gU~q_8W[HMdX,W>y<5*(IWB N Gl ֊A}|ڢs|f9r}xOsuԼn>v^r߱ީt.O8lyݚO:Z.{vyҘH%g 56.R?NQ$#6>Pu>+"s\]fZ=8ƕ@Mi߮_{D-֩`HX $t2#_ +rfMBAZ4tKJX넮p[':akVQoR;#+9;9'rg2Op%ww:g_Ksj;/Mof/MM{I+-%/Y'x3zw@)z +hAO1]d ΓlOu/ouT:omͯ_7cm"_/mPVzqJÙ^ˈC Jq yS|-Jk? kSM-ng u-QòIR!G%Qǹ5Ӳ '\xN={ޛZ(WmW0Jt&Ц՛W?%xz?)PkޒH ǩDa݊C;Ǻ=-O]RZ4>6מy$5w gSw8nۿ]MgtÅ>mEn0D0I*GN>_[HPo-bY4tP۩GS%h ʴ4 ,L]ʯu}Kpg:y$n ji$'.>n27*rt F']]EI_Nm ;F٨M ?ds揻m]M[mbAos)wEoͭ6gAopαzc#xcָlj1oH}VOWЏJGDmj[Yq/J壋o\;5cl^,cjhbӲ 4߄KM{w㧶F3IW62M|$ + zVoXy̞T}ȼ|J-Bݍ:M?e}N7 +z1MS/F7akߋ$^|4P`c +endstream endobj 7640 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7641 0 obj <> endobj 7642 0 obj <> endobj 7643 0 obj <> endobj 7644 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7645 0 obj <>stream +hˎ_jbrH@A]#~E6=]Yv,قfY*E?Loͫ;3&O 'qaboni^㦻 {e|x>IZD=}II9S<kKnD/(sB2= lPM/(^=L$9 +Y%GOOA=Ă%|Eyk*^wDcQJ̤yC!W.H.<^=CZ-ς,jyW \S\hUYhS Jx)I 6<.朦w7O7ǡs-ǧ0f8)K;\u +T5$y袟zX/ID3{&MPi&g2٫/}?k(߈IG2Twӿp$*&Q߼o}7߿2Cܯ^wټdgX.w<1m琕8]רVۖۖ0};;$4g%e;ٸGyp Aе/8 j/ApZq.60i.78>i}C음#onpY8Pr=yLc8h%ni9Wz}u+Zb&Z0Px>@wTLtq`)zr&sA^gb.̫hyHe:EB`ƛBvضr+(!m@-3:ЕՉ;js#Y₲(YNDG~KV /AEtv Z1TuZ,0m!v*7' N!td1Ϻt. +K ˉ*5P*?4 .<ǹp+ ?T^r~ش$HLq# q 7q7v8\GHCq#lp0o2U9PWx>mH`w?\%vm޶"h66BkZy4Q.F<489RD *͊ȯ:ί_q)Xa1x)P7Sx<>nJVI(/2I"dH&ڊt*ưP@]'F3Spz(Zj >%RK4QN.ZsR()NZQ;,:%R=iSmF[7mfʗ!wv6*pRY( DaP +*6+*RG +u.R +Ӎ,FYD!E#,JFV`ˆ#$ A١fJ%{F\nՓD G LtolB*輬U0#[PJ[TA{I6U6vdmT`$J#PFDt67ڀ;4եAqN^-͔-K\Wle"S."T%FGniSջT?A+&dcRouj yƠs‚1lh~M<;ok-)og9{8 *DRTIg8tjaϋT;m{ +Ea!w\Pb,3Fvc}zG[:a W+ E&3O&xCFw~^w,b/Tpo(MMlFLFG'by{+^| ΣIlP ,) |F$p)lGMlNߟU;k==ΚC|R)ѳTFt`IY؞Pd`5ӫ@2ձdVm,cqbᯄ ؕSH_] fuWu>bKXWҜ"Y'&x3cG`bDgDh\K`r6+Fbp!}]wdq#U-煿=ܜ ]c[aDJr KEgg.Af@#qJR} EClb s,(*tVV\.g͉WL}hת\ +ĘBVqwWlcɼHܠ\1FiS5ǶB&2)CD[Fѿ(Ŏeg_\O' \ ކ;qo|&3 CƧEEv/*Ս1_l\x9@Np)7mЄ,/NT +BsGƄyvtÇ(zWQTVfWI5<ݢ {3Y);7"8l{Wr9xaoΉݼIMY5_튁?=X+R`>zKIW=AJ+:ր9@/"Tr-r!65rH7RO'Gj-9u*mzCmL]Y PKQ*)H-Zc.GWkt| 3ٿ3+Bt7vk\zdnl!G!}Bm0.ŃҧrysB-4Weh{1  M5psjJ}%^byk&~дj{GgڑzHH{9q*8o7NMy`g1} +zC.5o課 WC ֳ K9T o]k{MǶO]Gi/p\Ql]Dr23$&oB?KY,<7.+h"cՅWN $4j(ENʉnbق+RNR% nrBw$a1W8c(KO/rк7O +Mޥ\E5ZtS 4o8rv)]g"p)n[wuBfPMם$&8ݖpkK!+ރmM,s]zKX2R^Xp>zQZE»XYՇ?kyf~ACX'8(>zEyO_O;~M/yۺ{LqDžm>A))>svoۯ?<ۯcr~nM27'_HU(a={SeFI>{;%9;Fm/Zv\]>찖?/ bb/WcZG9Uܽg'_w:G*u$~|B#ܳ3|&"᳨O`0ZJKc.wtʧ1I6jzwHe=(Jw7Or09 + Ul$P}; +Vb09ЌK=tkNa9c>f:0p)2w>Zd ( xT6## @x`9J2ȟE'ZxK Q('OcG\@:"fgȑn'`?,i1zh% I }z7ACp_:L ̌gp@#f3ЗF@0aw o>@_tck:pU N=&Vp 0[!09"!>`@:P8HӠ)!>`@:P8 ʎVpЇ|; @e!}5"Pc k  r?q0  ( XCԌ@x>X0  |lzL##<ۡyסj tS<M5Jԉx@P`p0 FR]v:䨢s +w1KXQ=j‡*B0GkL`\n+-!OC>fO,U8mL'6C8w- x +(zxo܍J*R؂M}2Kx܎}DScTP;>N^#"m8m]l: ǒP0 ˅C0t( 2IT  EC|,"`>QP6%QP6FC+y~P6&_Iz_ GQP8>‡QH8 + 1 iP8ǹ?f^C +endstream endobj 7646 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7647 0 obj <> endobj 7648 0 obj <> endobj 7649 0 obj <> endobj 7650 0 obj <> endobj 7651 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7652 0 obj <>stream +hYo\7_`dQz(`:NM쿿?Rz_cA[(DR͏eiws:yC~WmMR>ن9}9ag#,_v Kq{ 6%|ז1/uߴ"=phQv?vlND>%" wDxd[EN0pW$x:NN{\B (Ķ&hAE*ftd|CXεa~PV7QPsOMuT/yԟ/Q-OaD%EvYQd6ZÒl^((KzoF# w\-T[x3-LJO_O>@X"'_ߘOdaXf!AOw_=>?=~`>d/0uI݇(MB8D|A&zls""ll7Aᠰc>X`{[Cƫfb%:S@(p + +83<v g[L0(u5e8C=^zJ +{ ++fM=NGGQrQ՗=&_6rH"TA&d ;b$짡ʈF#߀yho"=8.e79AQqm`u),0'%,1%R(T!_)Љ9QVX LᧉF4:v/Л&xpnoԠ`,,E]R۳QSc4f8^ܰ=%5st;l:f=UcLc%BI}8rl 9E&ƌNuzX|-m"<$ҷ7u?HT@:> p`-dzKAZBrLƪ螱) +=(~C_I&$& {ʧѻ:ؤ͹bѱBDi0NfDv()~Nغ֨1T 8H'MQI/""C^\)8]1Ǿ15CɤJ"rז|MwfN*IkE\$"#1)qÑf:>P^&/MᎩ k5=^2"/Ji<n>?/de)[2@G6ӲKzF$=kȦ(\xծU +/ʀ,M)kpɄHs Q"i,{af 7}qX U<#mg>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7654 0 obj <> endobj 7655 0 obj <> endobj 7656 0 obj <> endobj 7657 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7658 0 obj <>stream +hޔYKoϯsi}X` #-k8?&{$ Y]$w}7tw/קS_K(u-enMN9ߧb9F}CH@δoٷqƬC~vH=/(oy^XdCYjMkl,5 +|u˫,*TKke(%䲞ԀMrсILe&{CDEX,4huNE~XX*lemc;bt&-?`hJ6 Rob}YS-_OO'σkZ'v=ZXC*7p@c$ +"Mki{e߿/w? E8Kx6Z~,i ¼-Ch/gpf8<+}[YozdT]Yʣ~-]D?uy:,95XV<7emnau%;# .h@{H=vSkOhm-aM#HWPZnk#a i ւf1k zhJ?월nnלDN+$ O`GB{D$#ѿBP!۽B^À1 Dx \A5&(2(ļ'FQPUDuy4r"= +\@ 6|`JkH'<%|8 +te:la*.?N +1wL4|f-7L֊ZCn;8v͋Fi#3D"\(!51^ž*x X3~$ρC̎;r&Gf]rH'h^x2MXnfPёtɹUՠT$0"g|)Aatr RCw/  +̀ ELa`_̀/Z!jF;zV[eC 7w,zt¯e $12UHݰ /E*hO3 z.1U eXhӌO O0MDm&їEHG<]f~ۣN,3dtd}y Kk!́8cV隚/ck+ t.W2d>AWSl")WE5kd ?8Ǩ6/H"9.8"KǺ1ك(_P~XnR!_Fx΁JK z&'PhVpy ^B+5x:gQ^X?'L%]g`N ӡ1$rd=tV +;/IgSPKٽZǴ"/eT Ú:.q0H0Jf)VI_?/YG>T +//8ܴ))a<+9^||CJy1o$m܎.*eͷgNc=C}Aw%;lQ.SI$b2ؕ,oRk"̼~ڰւNo}wD@X0 t**3ɪ-ʋDlp%Xi$LPMՄ8i#MƆfіϠORm 2:S1քQ.^Yhvgqۅt4 ,n]Ƶn +#:r*WqK1)%| 9+\<Ñ@ 烏ˇ5pՓs30 #p7'9Ijbٓa,؁N܃U|6MDh8VCXe+GDfHcŌ8gMzԗz^`Shp*m]kS3U8q9VzNTKpP2n{\~ CN9; 0F3!Y+3E~4 +[]d;-n v@eDGcPBcDvi$'.7}+#MLs"G>+RS6׏RH0Z`Ff>A8xIC៏Dm0@(k t ̫|$I@*7MA*?tjTfʠp[Hϐ_ME:$L 1Lbj=M803!.p ANnDÚk.ɛ 6S!MDD:60R'S:,fDw<OɇzY@p=GRlmu +endstream endobj 7659 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7660 0 obj <> endobj 7661 0 obj <> endobj 7662 0 obj <> endobj 7663 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7664 0 obj <>stream +hެZKoW11w7؃e'@ȁ\ʆ%ǹ槧=Lg=ۿ-/n{ik!祔Ͷ|n[|wn[rෞEJo(i!ܘcxИ1yiXe[P%RNqmGnQ&I ^tp208Ll{;ؒ[4 Ow7/~\]VZkKkuxt#rpܵ=ЉY~"pXa5Qp(3w/tHk;9Ok'W؃xޘvu>ak#k;_ zzH|mqrqNn?~ז/zs |HETizbF7SK_Bkx~ޝ0훏y9[˖gAY%yX<DYokjq!,B~u) }aB*[u k: = XZ* D:3!-@zz{=ɩuggPo'AmiAۯa3 +.q5 KBCI'@3!Q TX522HSxkxHZS:.GvH% +taTX~Y]+XPdq!VcXR]})~[D,jӦEu#oYޢ:M$D[X[{T"2|Ht?_i#O$HRYc:bQgXHs/CTeе[o +ozDXhǣJo8TMf'_1%G*$A>_v.%ѓ&*a?[PO%o);nM"CWuw 9LSPC* +ǓŧS!po6 O)Z"*ÑON92uJhfaӔrb\ [H@U,--xQNK|,]!i9#8EzۀMI ѪV:xZ AL"+[E;"S!JS0GQuX7TiW5yPfIXcb$;Exs"4..QXJ;$ᄾAcAEm"U1 +eYxOdb9'gRؽ4mu[cfe|p}dV4Os>bI(ûlP2ӧqAr7Fl.ҾN]{6!D xNOӾ<)4ׅ8;:h `8gzry Fi4G>)w (ڝʙRU]P'W0(wR ;Y e] t,p@(΂ +}_<똆mhe$J2@1g^vd#28~7Pc%.ɉk}W:EWI;1_Ȩ+&;GN3)x>^u~8)*ȞkN~>ҝ}n2]?_4j^oLv hK!Rp4RƑjjo?X,KW 5;n\QgTWhY& &hDKf=Y!H_rY.+c#T|&{ԱH)& lAӔap4]UG.^8&b"i\CFˉ _$WԬ7vpN$aTS-$ה9B#Xf ۸ NquL#jA{~?BN8D\뽏?Ek!:v=2B(qWp08546=RWW륋T SiZtΎJ UGڌe0V&7i:[cvZ:A2ׂ?]CYi+kѷ7ErkA+m vZUxoj.dV폢cjøֱ{TXs-E%bY%䠀BC*S5"ԍZ4$_nL)_<%j2QqD YS n ^>ُ%&0)&j׍Aם|֝:`?9 ߚ|L  +|JCM.qf9 +endstream endobj 7665 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7666 0 obj <> endobj 7667 0 obj <> endobj 7668 0 obj <> endobj 7669 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7670 0 obj <>stream +hޤYKϯcb`(|p2F]Cʂ%ŹYYB dbWݯ|v[ΏXk4kba9?Xr:ڐg1\YxJ)ZA&՜inu&CgCD3H^Edz>/DH 'ɸ(B[3K2x!u=MRq=Q33avO3AfgcY Zūr>p*EZ(šM=35$z>ȕblRb|h-&xP/|wY>bW? ۢcCbF(OJP{~8zkR It`^OI&B,k(nhq1C7ol̎Tdv;:xAͲg|1-AUc#8aMF.P)~.3]S38 $qBr{ TޠIcIp#XlR1A:\v##ˈSK Eޏ]var3-0%x%A@ǰRiMQ2`14)@w>SLTxKčʙtd+$AbyFci?MMe NtǩrM]2 +Z!"F6–cщӰ<)TQLouřc״cmtɜuӱk"G<&ӊ#`oL#D'K#NL;RbGB'.ul9ciYe2JUYgPqٹTP*PXAn||0ϖw eDϓ{@ [ke(&Lbc.i1@vYꡫ^ +-SAϱiJGӵWwF cn,@.9$?P0F< +p D>`QV5b^^qKi պt^|o̪ +77/ +t$0ub62 j;usp@ȐiVRRн\dzvf\J{蛄O#Q(1ڝm̪ɝ3{]qP_U8 g2`&Δ#ð1uM; B ܻ( ҮVԤt5[+2L""I/!NJMEFozru(+eô5c LUVTlPtՊp֍t!M'l|ƚj}jolGE87Eפ0E͚f)M +`-}揗sv; :"ȉq9=GXp> +/ݾ;҆ƒ)jFʆbX-) tiEaw%Hُ$"XȒ5"Fb y*oil7#jtj rYF;D{wL6ˤ[= 6bPTޣzo}_I'kX $ohQ\r,{@7Ro^Zy9 CzCujvɧQCA !!jJͦ&pY>np'DRe"cЁw3oGtqRDͷ[Mk)zx=(ɭ[ҝT4!.ܯi M^I%WVx91l2"&u5Rp}ڣۮ.scsxTiSWe:R|g%)XnHdA(>^w ۯP2UN?0D(L>̺ JH+#Qw#2yܪW2"ݜxXMߍ/~ ˭-;7fYGL<<6q+Dl>U;4ƾ}\ 6//'/ # +endstream endobj 7671 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7672 0 obj <> endobj 7673 0 obj <> endobj 7674 0 obj <> endobj 7675 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7676 0 obj <>stream +hޤYKo ϯS*ֻak/M!AH /5v,֣% @ H,Y|պopw>󡚚6yIٸ/ov0z/9`6gų! b<τŠق-KI/OSH) PDE%ɧ`}[AwIHǮ|:2y sMky0YŶTp+->}<Ke@ 3nxؼ6^ÒL^dUM4*u߿; R ҍ8h2fѸpק=O_?lݗ]@⾐mھ\@/hǬBQ&ְo^`g(FΛ ([Onl.Bv+8WV +N^`Cg6n=Dżb9BI|$摜 f5CR4@jQ뾱1S!s1OILpP94+*\`@pŻUPʋPY| (نPdO⟟~yr*[BQoRo,4<4F /8Fb)96p/VOqH;ߛY *m:1tlcGz'WQ}zg.Wy''"aMhIZ9PWdkE6T8E5"?L~aSdoc V~UO:/g{(U,+bFe-22fX?DSbj!h&o3nT3`yu2)m&RYOCQ=c;Џ"/QW+Gq#b?"\2ՄCSv2!TQ-YŔ:?ZRP +f9EvLKby`l@a=@`ez2Y +]Ñ{n:ܔOe\5f&+u9Mo W5(Xf|ӂV҃Qs4d=Vۊuq0W i]/zSH.yiر}p\$"tmM~w߸M;Ϡ3JhgՈ>YRk]cpxVȊ~$N)xjUw% J+6teFphe,bCc\ezAn.t? VJރx (+;C-ZF2ױTE{P_N_ BԎa!o F^?TO{'CƖܯ5VJsJن_*!٫`A]`=O4HF=HKi߷eft*m9Zb$(Zm)hkjZB9&,+T_48+- mp?Ww^iٝij[q5׿?HGIw1u΃fa]ޏ׏hRXurC'x+&ҮtCBlNvfĨ,e+;)WϹ5L1gf1{>;^j/{~Xj4{X&{^Io^~ UlR=v\W8MLMM[C}sr,jk. 3F^㹛d"a?*v~-⋺=] ʹu#rSRkw[ }F>6,<0m仕LOրbDXhtv/? rp%sX] ] ?ȥ]}T#.Ё|?ٙYv_EjcBټ|הծbt(C?u{v ma =Ck8}_O / bm?/ MK@k)[T˥uenz7Uޱ[c*xGo7xSFxӊP:-ݢ- +0އi +endstream endobj 7677 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7678 0 obj <> endobj 7679 0 obj <> endobj 7680 0 obj <> endobj 7681 0 obj <> endobj 7682 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7683 0 obj <>stream +h[YoG~篨9@*Lhd=" jz5$%Y?}<&°YGd_Df=J??p}{A9/(pd~>وqfޡu/-HXTjzmLm"Rϛ&(wkj_'zUWDH Z{#tHT`)[+y"1 +QxFJtqhQ60unx6mJA8$~xz]GuuEb:檤PqRJPv{7ڍ‚(T Ti'O>ٿ0QxkJTv֤IX0$-~EVPiSiz/z1C t'fc)bhzriD*AІ% +Fj2xDie7 XpR|S lI&w^vKЋLӔ%mv醐8&ss^<⦎1= ([]XВ`!/HCo3+>߼ F3{?C|Og4-!Fg@`B-+S<%F낗o:s[,r6AjJbLܔlt YveL 3]5ܡ)!m0H#K8NilD2Cݐb1=l0|Mfȳ@28EdjsLS,R%'%PYǢ+0ha2X kvVxuaְP%mJNӎsHJRdSiR[au*'3iuSv!P +dFZg2b rE)MSTJ>sǼ've TaZAvڦwBLp䌲yؼMQZaGdpM|pUf]"Jbr5$QdL65QYC{zOH!ȳv~<uQIBPxނ"$(8dAD(RN&;.|]o.e6mW%s|M۳ }AL>dOnJ7ܗݜJfxQQN<m'<?y߄,b%lTZu?;mv( O[ |hjw6e˭@7K6o r`[s6o;ԅŅZ*6Nza2qbͼl]inVaլ˸t0.]yT,WM2ջW>h4T|9/f 5  MZjpaYaFȲ(?zYU."6ӌ#M.fSkj{-4oSӯ)7@UBn[e0`D#`^=w^ٌ$5ӘheɕWYQs|\{edFGl=mJۙ[,<|n([lJrQ%mwV{uӑ3 )fΪ,S z@t~њ9rw~TXcH.֣m^Ku(Ž>JUt69Ґr`4\%' ;:"HIm@ yZ9]D +Kba?y[Io{>RF(%H:^&PAx9 +%Z.&gwuMuEτCEߥBUU]:0O.B;|vX|~Z lYz)ane{WLuR,E(3FjiUsdyښdl +OdK5Hg|2.bC;lRuK/ uݞ yRTs̡,W?.$P6 w3lr+":z##< (*6.fg>ɛ8Ҹ)-(%wdaO/w@dHƊp}7~uwb70ȗ@t{ex|Ў[ܕuSK2"&u3T Bz~7L_(@<%2HADxHdihg]iuV 1"r"rClwKT|j6?}G]ъsC".x9R4]\Ze㸣d~Bs0¡+"v$8A84+ArjKe" +R@? +<$98 㦧oa~z=Q>Ɋ#SOXBlLch8 +є ` i)Y"V%֦/嬙:H]7@ "ޛ s["C`y!cc.)Z.P jKx}3$ +JOwDy0sT՝러@yhsB`8 g14?Ld890Fhv ɭ%rʈ4qyl%dQTf03 +QxQho.~T)')DY)&UeyZLTRWɂVpG1e,T>E%Oĕ{sy#4|%b#"x+Rq@`!^؍.h2=EYR<ؠKӟo~Qy(cd ׻o+XIh:& HJw>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7685 0 obj <> endobj 7686 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv40854V3.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7687 0 obj <> endobj 7688 0 obj <> endobj 7689 0 obj <> endobj 7690 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7691 0 obj <>stream +hެ[͏ _1o< +@zzx/qa;(f:6P}S$EHj_;3wwd]K?bmRˋ-ӏw8;=^W(e fY~ -B\#Tzpux*#U zаEg+6P6?UxO^i;d:v`m 9%"{K *yLnݷwN ~LfJ)S)y|w#9v\DhHM~$̰YikVU3{BNa8m.Rzj%c6svTjyie8':Ro5z3/ )9fP;mꛟ/~O~7L4,tz9{37C NTW}~{?Ûwϟ>L`W?>/OK>^` L!i]PRaa&*=vKP ty6>Dጠk9:,Dz<Xtu&ⳔasEj`U}r;3'[lMIJ5W5st+S n; 3eEz.9"[`iUaUֳOSUmO~PN%LUwAv.KNɹ +.jPLR +uPv SΣHjA rA= $(ET}ml-^ph*@&>IGV*ގM~!I.6mt(S+[MͦXP%"O4a=Hޛru)e"/L&=bZ5Ԡl<<z撈, `84 n?غ_*3 +Pn!|fv js-a[:.LCZQ(٢RFںU rHT,|㑟EOOXZ +UkϷz 3]m`pĨS +W1tݘVe"[qGf P6E[ +[j/&l6*Uy[Rp"h:\ \g6{g(ɄRZ|GnjduNhHZihNdnY[ v \Q`ihˆɛv *ܹŐ +bL`OJ. VWbOT0gR5dbA͠1rh3U7. A=]N0M')aAOȾ6Z59w SmhiZ5[mnJNDx6#=.*yKvjkwڈPPJ?I^p%X}ZDrעUà,yb9mf,]yd-̽EŐ=Y`U^D`,  ck5+QaR,P4)u'r}A!⺿wj:{?>|R!ct| +׉]`l0!D0vp"b_Vx//\(b[w@) |A#88dG 8PH(A9|>ީ#jU +kc#eE6Dž~PGx^ ΟLfZ\b6b 45u6#v)p4m& }6fm,q_*9[#lu/V۝7O`4 +BBkoFm{`w +jhg}83۲[@zJ.mWG蛀}Y)PO;,dH[[vlSĎYU + +@=^ -,huWMH_Uޘc#QFH6$3nf(ѝ8wN߯%>{0:irCu t:a6J;On,#Tax6c N'ҭ@[k?u#C.b{; w@6X 97}s7/2.׌cK!P4% [Ox F0Z`Y`c`<] CsoG+}=vBBjkhrK$VX-sPm;Osjc<>{Q{HcXًEͻ?WiI~E39>:a$ox 8yØ_a*{7)}K*ֽ~hԳ9B]+s9,=Z1}tZ-R^bF=y&ߜ烽/5dR2Jyh@yvv3gԪF$ CZdcu ^er벬TRԔ;pukOϏ T6>(-Eo{+VB?7pG/4f`Q"cO&h:ub6pij}9]5 qV_ u;,GSIlb33z9*F¯}$c_)Ȗ +T@O(f^/cz&*hf[&;ƒ$>8?aJĿ$l?ea]oA[y̶i +C[pSIaB!qι\Bp׶W{~}*̋^]4W}b }t(s)>^OWNۓ!%&#(QEUv! L.FԱ&5&=LޞIc^}|eѡQ + +3$A +Dzx_nϝ( "xJb \InmSu|22&mC_HzJ⪄͉Ykpet{nߒޗWr.Eof /Oo}>d̶1Des%q{flxJK +k<AsȆF:N07kՋ'4% +9}n?L;ŽH=g`?:Hv%-[J`:z3C:HrcW8J2MDOqJi|H/z+ar!JL[ǷlJtF)h=ձq~!;]{A5#/\4S5V2ḊVGmH+QςKx#ɴ΃ق/0ă@5Vu2/xrOd/),_ vگCdEŷG}l]\EXw7>{3sҝS(QixM2UL0K&Fk܇NN t[Ac=~2G+&~VNg^??o=t%drΤ_3YSS}C' jӭwzn'M'Q_9Ӝ9DɳD1Jsw??}fRֿ~PyCw` +endstream endobj 7692 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7693 0 obj <> endobj 7694 0 obj <> endobj 7695 0 obj <> endobj 7696 0 obj <> endobj 7697 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7698 0 obj <>stream +hZKo$Wq&6d0h ^ہ؀c99̴Fk%ʖfSO=:\ A.>bG[3{p}{U ~`cc4z?j]i2~^wir~'h?&ͻ0Zh5p:Mw&`Ƃ#=dM~lv4] "X"/ CJ~tEײa4{ER,eL8 50$\Ɠ$Dm\ u<lǞe>KGG^e:pN2kUt4{% +sy;Kqyc` ]ɦ +xA~㘺~:w٭{QO/``BSh-M$36C liy7=.NÛZggo~w4ǵyK0C(N(ޟt8|zxtp:?-~93h6N2OSʣfEDH@W;;p/# ^Au ^]ʏS67ay4>nvdttD+!-x =E鐓Mc01R[`UcrkA:z;cdGk"8ZՌA,DASp.Bvh3ebPlV_$̆*u<iӣëw#- ?0`L@}ӻ1Dxd׹ɋY!(!ׁK H;:OC:h74hThJ +s6lݐʉ4h+pO +  +&?jQXXGCNL[LєvAOL4\_ [>T˃?biLX4$L? ֬\àGH=1J/Ƨ!xxؚƒľ2x 7tCBm& +@n v!!핾'9yNWz*d*tNkk<eKV49ע2r$_@}0oJ):6vdC +$[(+2U,`#K xQ#] +S:J,V-Ƽn $/x@GTtPtDLZdi^W5nE<(&==F` g<8IA}338r$$eUE%ۑ K"wkx GdrhISq.TaXAGQ8bQPM U%I[ +co>2l9.Iz1;J&t^59LĐ`[n;0QvnkѨAl ؙHZ$zhxZ1)f FeaZhd uu݇mkX>&&?&,(Ɯh Cp#OX oG6Ϳ,Lrf9 :K fzTᦖd4ildAc֔kDueEVn;G#j3,16;vm_6[~6f5Q-GHP^'@P"4Wϧowpd/n̛Cچnws׻󰍛ws 7Lc6 Ni `xs^fx d_##zF [GÇ#> ' _[q3P \B"(%7.7/ l)É:6v3qQr{d&oi;<_|Li+LB7U^ @2Qv 4J |ysO +Q15܆Ux׻kis>&kX0ؙDvKl>Iiܭb61 j}]:j}|_9l/ `C!?fH\ waϧO-•Bmv[2RPvǦ37g$%ޚ6hM' P09(xՀ"GEJk+z! >)A!R뛥ȁ2xO;-v] +XÑnJ@^bSNe8iϴF0 +_8`H0k^j$}RY5)md~ F}3vt  a&SUy|GZgKW4O?߽{dcsJ<Q7sw4Kf[_2qP""9P֡}_ֳy!?i" cVsswwYKP]qmIlbnj{}Q>2{N"Lll;BP̤;׃6j[Nе[7Df(?ir>k ~~(@^~ixAWVkmA2kNU ,%{~::~WXߔ&47j*j5ʬu-kCghLw+HH=&ڿZ5;J sbeAO̿QA +endstream endobj 7699 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7700 0 obj <> endobj 7701 0 obj <> endobj 7702 0 obj <> endobj 7703 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7704 0 obj <>stream +h[KsTeA4ިrxe\VJԊrh/Efvvwv9DŇi<ק~=?YEĤmT)yqjfԏ3ml/@fc\qЄukDoHΣޢ1`c)Sq>i݊u B._)t4fPїU ͉t|RڒUIG,!Q:͔A#1|}Gbu !X& W4P#XVةžcg{fh c?pQȫL6Dq6%lW;/&&Z$A0HB4 +W2MW,$`z#2 M^T٢Sm퍕rXpV{DոuЫVܡ{cݧD+Loh6Dֳ2Jb/>X%5[df2L P8CqюMITǴ:NWTmjs^;([zOu-FC('br5 ė\H76d|[W 3*y] xmV VjpOś+44E*1IYF%R5RI?~ywp,EAlv+]IlՉ頃\?IEV\WHԃ4RFIU9Uc%^uk0 7lsaP:If K񚝤fK4PK.ZWcj'-[i-Y=sT?OxB6B2FA $z})Ƭ=ԈYyH{mWsyBGAޝvQ1lƊtgu dA/ux_* +#][zPbLksd}%bc|:Y{NnmF&a0P F9ۻzs~urզ 6"(@U2o;ݿ/_/*ìr$)4Wu׬Y%J | boo/./D?җT=e2o.^)d/2{q~w?q!(QExc냓COog-۟6?=! T4PNTƨwO-@@& 䙮%d$\ϘtI SSVY +yITp G2C +@ i޵Aԁ;F '+Od׬#*r 0 :z/j Ups6#-mF6vG+{ Qd-X$[K. ·WL[Js0G2 oUf` E H0λCbi`10XN,`>5D>ybt.)>,:a,2D1$=|l/ i Q @m#@7'Z 8']Z '{^kiv"@W8ٰmcak6L7-`=JFf{> ADg&/o `+!Lajm\tNsX"KovD/Dz @v-{d7hr +V(`{;!ҞivZ+1bު&ţ5vk +oM'yp[%'U柞fe,D82K? L3D\}x-#,j <@ ]:JVK`qï]wp=.aGd? lmH^Y!=S>?ХV-o;f`ߖ &+ɶڐ*Dj֓!+5/ ON0|Il^DAJ[UUxF#-mn KY~;j0oʽhωhhV + wqh9CL;Rkq~R@gy`?U4TDwݻ~ &쁁&_F7㇇)e= 60m5%Cq=׭`^k ~~'yi +3Q䗗+2׵|zůg 1]^+0ƍ=(O nzĥs♲sY[N^G|j!7ku \$+Ewt mc-`7]I>tc5IN]mw^o,W&[ $A(S\+o ?S2܄dѫ=@m\mCNXg픞jXGPKys ԟ^ ++(/( w# OpJsug2琷zC +0g +endstream endobj 7705 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7706 0 obj <> endobj 7707 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS33194V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7708 0 obj <> endobj 7709 0 obj <> endobj 7710 0 obj <> endobj 7711 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7712 0 obj <>stream +h[Yo$Gr~篨Gp*,рWk`m숆 !%.F3~Owd\Y]I~5;+8sn~wttN N>9i]0tL?eqq@[3ϕ!J Vi9ym-'7A;gߥ}KqOm;~}JsjXpmZOivGZ"-TΥ5ku$C!^ʹ=nIY>hsZ.\j{Cfx,Q3GbILSLEk R`F6^k])Rlzlc;.&ԓS#DkGIWهu]9uǛ>=̫CbSݩZ{]?R>pDd"K?7'X:8 +39ɾ?=>:o>O-M]fzF`:X{:pUC_nz>||ec<]>e ˒Oovpl^y e9eNkN > +Tby×TKȇ_cЇ2m.Tm뮍"RВ_@ rs;AuTO?ɱ5=K;󠄗M ٳxmawMxw_ZYD=e$yL[^+iŸ2XDxh%$1R}; bUer+y!qfXOɭUL"}oo?i/Yu3qu2B wR+!z}8-O tB10ab ;?IWk 0Uإӡv }DB޸Rl+]k:! +{D}?H-ފ޶ +1b[ ^]YV>&zMty++kwҬ? +D`H#4qw$A:9XE: +-5 (px-2p+7|0bqկMAN(!NW7oI '2$}FuxOo[o'8i/Y{ty"!Dkj\ ' +nV6^cKs1s]T]y䨵&;#0﷔(fyϪo&(!+b WrQv鴩uynvre$ܮ( oL +SO[ +o-n:&_No* odLRe;o{.ėpVAq:^}YUlJht@iQۿ/ww~ sk폏ǷyztKo?|||{g^`eprt4~z^>xvˏ#q!rǼ놩:nqaˇ8;fm[Xjayzwҧy??~5 +m/Јج4\c$ Lw=YB;['=E#z|?T*'ݚ|[nQt p߈aO/gҶo$Ix]=?{:}"cw/`oi;酆xiBn5ycȨ%/`@F*Qh#g7"BV 8]Y{Pvq@*=Pv$7~Dڷm3)xXgTv5uLDrGVBo@CoרkH=}Sa}:8tT*YЈd@JNd 7ꂪXGpDķ v45<D׹vZf4"$ XIͪЕ\[B>q7Cq}(vH!<,l#AFLjb?!鍲 ̑ '$y#kz׫f -X`.3[M _!3ګGl:ʸcvE f#VJ|۽%{V$Ky?w62.l{jf=j@|򲛎pUGPLӯ.խdUc1wՒQ2VZd eѢgJ0e]WZ6E-?I5f|9+J9S9۱kE&!wĺN] t)3X'yeE6I'G +ԜrE1BR/k$h#=dc!:TIK +ƽˢ7Q%mX?=zMi|:w⮐x1Mf*,lQX,!4^VXI _׹]ׅ iLbu<0ZTGbĢ9ћ6apСH S (3_~T;w@c7>`c o| +?rYV͏,Z:\'JM|J'2qݸ/&wru_!kۈ Ie5B*#in;D*Eeg5d٤A+{uC6bx´՜"-F[0g&FHRi6x#P02<@" n f'XjJƗ?w>xqB*Q"$ !lTEtM&<+uZz#2A7;!ǬMÛ[Ff)\֋DME:-4]\ع7[l S=0z>62&7DƁb]0[&e^Sx7q8wRO;%/{i6{fg:oMjfF͡a\KƸ>8fϯcZdR՘홮٧=6Eu=qjN֡Z`WMG|T +0got +endstream endobj 7713 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7714 0 obj <> endobj 7715 0 obj <> endobj 7716 0 obj <> endobj 7717 0 obj <> endobj 7718 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7719 0 obj <>stream +h[[[Gr~_q9B%XKˉCqwHISӇHQ UWWUW}|wf9py}VT#&e㐒W.k7\ޝr_@1k~ ͋ 4PFR5 ʰ=q8o Q*H?JO,B- C«r J;+-F,+^-s@%a[`l%jJㄎI//:{syrvHAYWJOq}v}&zvX*v*4B֟(h%ΉC%".AIU+]qLFe^6ayR@/f3_@C.*f08-wxan}^}e-w_ 2h&Cm?7 +JPvK g/^.7_=><ܭ7h|jWxCIaԅC&ҰЉ*?n[);*;*[eB:偱*.A+ a2>py&@,GGecC!5h`YG鐒M0d}i50>yr͍Q߬TѬFE-0ZXwT6 VE2(6"a` + +& +Pʂo7PI<S ڎV`|?MmUa]gT\$5lPLJ +<;ЩvRZ0{C+mJR4TJ+bh{a+SѠ@'>"t)lV5yCj&mx4jʉ˖[#ۙ2%`HP:@Oۧaч&zgdo"աS2 0i#j{ibҊjH7l6'U؂f!ް !!MIr"GPr}q@ZJR S~ ad4l 4H5*]@"jV|Pq O]rAE WBd B+kٝ^% SY^S˦p0k u;^@\#JuR5e}łj<_1`L_j_^rURZbtq0`C17`X' (,DҫNPU}=~h0S!^l'6s8qV!0tJL?GmJ^G %1# EFE~lj ;@%qB0?i+nI[Uۈ;/KCӋ gg\ۋEy߁p1| Sۺhq6Miވa׭Ң22l ',)|OD@AU^RK +IJո2Nj>> KvdVx/Qnc#pٸ" -W4@sKWFho=q/s}o6[թ-jlm '8H]@} <]'IA^*݀[nLZ6\Bi0wD<ñ ,QNE/"0&H/ߤoܓ*p_5b4a'g|ވ2dZ8ξ4w!f,]w PCn Z2bBaэ(KQC8&\j"=CŹ4x1 ^eL̵jW4L}3!Cd+fA3ǣCj d!M0MA{h53w"HV:*`Y#: n`<:k4nzBs`9z1==>h{@}7sxPMGdz x$q*!*CG˽Z )LI\tҩ܍ΟLCM1JhD߶3qْM#LRh_G9TkW zH cG衿\"UfQUS:bIw^;o ( Ah鐭<]{Iu xgH5^תB杹0(93^&#zdþvGB#\D@fg]p<XCܐ7δ9(!gRbV_|Z|3]O&i16;Yh'oOr$Wj__\!>*"JD:2XX>24vRVIR0M +* +`tœӲe8) r[%9!+_rt+  P8Im&SN'G%'-9l /7?Ȃt ~E,\ř;x 9cp?yde"˒]bLc료B,5$jRy4NP"h`"/ J\rKbDPuY7H o;Mz)4^;eE6oòȓ%E;/vѭϖ>5k HfeSv>3Wbd^s4`x{uSF{0|Qp"*Zcj'dm'w"73ҧlɴO\8zUBZLʛFj} +_-d69뢊5xgp,> Y IY|xE\ߋEwA>^60ey~5_N߾͙?LH@ +:s("LSMo!F.'&>/rNŋ^pҌ.VLJp!aoïn7s1(ņR7*FzK2E *Y;}wMH!W)C)')v'r(-tGWÖPX$@,iN47ռ&\'R ƃwy|KN<]#.f?}s;@ޏW6B灶b+,~ANE#o,q#s Hc ?'\,x( oz5,W5 &O"Q Ҙru=7r`S-?sLn@Ii'hQ.dmnzcI=-42!tqx@g ta?`3c+w T  ǧ{, +hzy|*y=e'ȴj Թ&پ¹(h +`j:M^9h{֕~}}:X;f붡[Q9դxy_0P؍/Ei,W&#'L@}'P:wz{N/Os y1Kӽ_.f$wd=gy2gS*HYWHwpcfg%c:f6oZa_YBbuSv]~M]d$<>ǻ(ZtJ_$D|>?;7_ O=**:GD~֯| $?^$?ɏa]/x+((P~:ʏ翢]B/`.G#?Y`=%UQԲp".suـiX>=/i3O.9ʤ+jɮ;+md>cg `sFq +ԏ~|]M3q OJܽ3te.^p j]ZaKS=/-Ƀ +^pti!Rۢp'Х-D_._YHx㊯CeuL9ݭs<Ao.w? +]ο_.G˓h(ty:.翢]B/x+(ty:.޿ ]>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7721 0 obj <> endobj 7722 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv31887V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7723 0 obj <> endobj 7724 0 obj <> endobj 7725 0 obj <> endobj 7726 0 obj <> endobj 7727 0 obj <> endobj 7728 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7729 0 obj <>stream +hޔZKWQkww@ F>b.kXI$?!WA ~Wj[7|vO6-M>9-sK8/󟇟O- Ul-43"S㶫՜p_bw@ߑ^/-3y*%Ρ2@pH5$2@Rɭ!dh R.I#]#>l$]d$9pfYOٙdE:TdhiY#R +k X.2' > +PNi:}z<<D +<wߏ2,G)yV፺f?}V>vY@Q ")jҥ+ަ95mqgrKχLxCpӷ߽9d["KLJj5SjQZ8 ^|o>>O.'y|K˒XK 467!Lp˜Z^gijjSч9Y@+Ku bh& w=-TBl@maӎI{`{ɼg|[ֆ96S̩wtn.?]wNus0 7p zt9#Ri6a= AMS䆣ice(GhSKjB.z?bg n5 bFe"4C:v$ + :h!h #heGRVx-Fp\95 +D5azyA皊uН8R! h( =fnZA Lqj_s>A/~ B u/~3m4md䙚9(#Dx0M' ?cL w"D]L͓#6RҮF|#&z̆K" ++7><\ŷDa +[ >7 nB%z #txA)|z+G(1fӨIk-^7}$ +a9y"`$s?CNY oPCdtx xML:Ⱥq;LӚBF>5T@y"@gxX*L! T8%!ğNBDUXybeB2L d`w-̼ q&Au]42|^uLxG65ш !ke̵XM6̆T6_Y}TRXyuJ+4֎itL yS P%N@xҗwG__yHfP_OwܫX%(o%Y tz?G<?ݥWӅ{.@Շ}Iʵ:%Pk.۠Xq3[2S{4[##L?sz{jp7Ut|"NKt"oPFNRdf=4 S_BIL-}!K =U yv奴sTxGPj, xJ ԀR p~BW)xҦx'yK%qv/` ͿIW) +e:D6Fř3N0kcZPӆ'EOҒOޛj;Br\; HqB}l5NNx +P'oTɽVU+y]M<]CHErjrJVT,>[4$v@©Thڴą),̢3oF= ^$tV6_KNu+? q:"3'K=7\whq&FFި.X[d^{Y3+ V\:,&/#"B%%o68#}y1ju&(bުC}=ѝK 8d[c%uGLu3`5-IXd;(&U`xׇe&ů/oS"]vzЋK^ i˿ؤ|U#k=ڣ@b᫵UOpq%c;n1ߣ}T3lKw{&_ek֕{G\i^Dέ[d VQ@0VySa,PXM+p,6ӂfɌo4C)vSt n0V8$<$Xuv)O}nQ/FYׇ{i( Yu)7П)S_v@]4 4`L= Hr%,"rDy,$J/hB߆bIC +~ ^+xLiL** +7Qavօd>zgKLtO{M O;7Nꉿ<7#eu']l6;ڋcy +!÷bPe^\>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7731 0 obj <> endobj 7732 0 obj <> endobj 7733 0 obj <> endobj 7734 0 obj <> endobj 7735 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7736 0 obj <>stream +h[Kׯȣ4@o(|].0Cwm䙫Y-k 4]|/7W3j'3]Oe.qZ#)%?L?eqvޠpyYY5BX\FT=~[T,Gن5}a":.А\{'PֳI6-kk[. ƦXJ5Aq4I/׿_xzs^l])e}*%ON'vbvd!"yeaw繮YWyf”PkMJX29;a#vqGhg^l6XG b7|OO6@Nb7r_7zk{ |7H*8,c#rf %v:S6CNo˻_O><}6}߼g8y)4 C*/,,ۇ<oTvZ&*=vKP + :m5n0kecX sqNWgi.>KFIGV*ޏMC\طEӕPNX_O),I=%S;j4xAxMz)~D_`Q6L,{m;c*7嬺0DlR`hf!ޠfXƷ|fvyjղVm2v.LCSk"PEեܸkV7l5d9o*?WGOiXZ +FşfAd#2Ƀѱ0쯪m"V?QNTϭ ,OAz%ZӜ؛?#Ĕ7gʁWx}Yye0?.q=ojݖn䧳e',ݑ~Kj0kXCQF$5 +f" ȗŭU.7=8o/?m DQĀuU\Ƴ[4};55|Q)Ty͖LiAZ%K"֔ت>]̍h6Z\c).DG#^5ؔ7CjR^ݿ͍bbV6j=P;qaے{FQHpTT% Y'mڊ=!9>9X ij$7|yofh(먥 T PzUv[֪9^@˻RfzBXIEFBkЫZ$@>]b9Hڍ%H Vz>'c@l P[]D`[Y@m/)Ш"i^7Ux]+anC^P JaE)p5)oݑ#OIKʾIvvc\KJՖgt*å^9] pR'8DgŽ!tΚNJiP)V-`PYX4 K, wY;RS9, +bH"lb3p=F C;Pӓw^ZŚ[خUe3^w`. U8WcH*JƉ htoFt9^&.Lvb5x#p`?l*],1VHuBn̰lGݝ*բ{#Wl&\gƈMLøt# сc,$<FWU\)m , T{n!J5=Ӷؾ 5=9Դl* 6(iѾGT&ϒE,6Kw̌*h">. +l/]׽.bM`d`8yh$-Up`t5VJ|Jhsi_3t\s?DzPc`GЮB,6;Jr/k/nMw*E5ZܘB5 1DQ$k:c0|>;36[ߤn-]6[g*1##V;ݭBw +=FuWRZ\l7eRͽLjϣ~Q& GTLT [r8je!(p-7`k_dNnG\xjVAUfa% ++y ᆜ +,3Lp3W9mݚFLry0^$_i$IBe=g,Kn4-uzAaˆ +сmp*6Ty%o=m8-hwQ7%u>H[V"͊=_ϿS?S?0c95c1#IepdNe{^Kw%u ؍nqk6"\9$lЌn/mKk뻆Eێ(ylBȳĐ:*S1Iv\CsdqE|7袉2}zTrv.;@M.P@E boBnU(ui:0KxI #t>MwgZ=`nuv-I z﯇Lgq0MƆ@?<JylVv(&*L8ߓ-,~V4b?m|͏q{ѲGLݾ'-pv$L/II*$-9|sc.`![O޻h/C'[}?̟"؍Abgח:}^Ӊa/؟oZnW3NW*9v/(kOHAU^Us! 0͇|7S)I-4s掖߿پfBeWnʑ79+>(ynu";L~gSfDC,TO ..%eHl(AYRQRQT-_8yo5"7w-7|A-ի.˭RTqjeb1@m@ȦO}_7U܏ Kd/E~>6^iuh0AM&yثPCQd|f|u."HS)UB~@WbF6/s)Bē&=Lg %x9;Q͑bp.,ms^K[%?Q~z^v `{g֨VAJx$W2ӷ ݦ,}a֮c]6<ۂxy+e !졅A%;%,I/E rDoW[$2=bs,tga8JdfU]yN]~h8x /ØoZ]O -M(SnGbYaWsG$5<4Տ *Q IxX [RjFAi oQhB`=˭/qSR{[p4t-=`1n-HW+I:idm(Y*Z!Z% 0ӝ]}hX2933 +t>.; 99m +R߀Fy=/AF s1씥du3~9IkeuEL϶]p^1U7gX嬺5NוKvE,=87ð-6d,k*u,`0G7\E}ǴzDzX: %myg!CяFA y=[v=?k\>1,k[Y8sr7W:^ߧk|$~Wmߐ|av૿'(WOa>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7738 0 obj <> endobj 7739 0 obj <> endobj 7740 0 obj <> endobj 7741 0 obj <> endobj 7742 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7743 0 obj <>stream +h{]Ǒ;E?Rv;kA܇bx,`yMZ\IȬ&%ٖG.ftUeeeFF8__~NiSRi].9/˲|zhw%!-;e9Zeŝo%v><#~Ny?0㽬UCF멵|I]P.ᕆڐZ]Kml[ #Ipg/qJy+%y}C)sUvpnDSpmYCi꥿B~ORаbIRjO~ĴۺW^|WA.knziDZ +uy>]>kφM%F)8 S \kZz))\F_/˘R:ӯ~߭/OdX2ޭGOKz65鱗j.]wOo?OW/,kܖzGil]}?q˥zzr9QNmKq%۰L_S3)_-zz%j/K|~)Mt{rMه䥪τbOٞR:o@ny.-oP)ǐpɮl1ph]MO0xf`}hORK|6=D'km1ZNМ=vfMlמvˌu\EĖ& ْ%eMd_M4=`kdR ZI OBm͔S +[ܦhWs qtʔ/ D{^b 5IZ%a^MG0Kgښf̗95Mr_읳rǯ+Okxۚ Fxbhf?r_3r, ջpJBSsIAK8s(5.u/Ʃ&u>e.nħQb%>>˷½fn +RBXw[w@O-G`WS .to;\!T),GV 8P/ɜKgo(l{+ ÔLJaKpoõo,z)k`&YjJf~U0Op_ͻ9 +_,l77zzFқ?~}oN_~}z'g)/>߿|fF<<}gg/k%T;W߫sߛ7_/_.mU^`Sc 1Ʋ!Ho}}|6Ewa&T bݿs`ƾԯRK~,ThPvG˴9hX]|;G}y`3P9)wjw.mC ^y(|.@ v۫9gınݝ[*ma -"ܯ>locʥ2Bfج׷fG 7._?hҾݚk.T"H}2=Z˭օot]0\߾V۶KaLNsOW +v33ۧovf_9Vl2Q-Q:ŋ4SH:갻 s݁zuchl#?ln0'058QX8~ mvsܮl=~xӮ!x'Ǚnfb;nŜj9`hOo$§6?{ouPR6wfKG'_<3 2?lxf*T8ι#Ȝb ? HGx-vM\no#?}};8% +;¡ +u~Maqp1nZ|/G@5>eڶ\#(W;0)&!&e~ZIӍ-0;+xsPG -Xitd)yMö0my3m*IsT?Ujp簹݁_BESu$^ww磾riR/Z7Py:y9y9y|ܹN[x>H.~Ǜ W}ͱ}/kooP|5oGOt>7%wot4a_ 6͌-Y뉰ڃ[X-+O 08>`^uNj#yv}OnC1rW[[0}~豀m;4,ol<&xK!?|3 +]|r6i~Ѧ7# 8KxgM"Q=8M-vm;4^K]Svrtr=-ui=Lc>oJ:_ja~F`Gx7szz@]l>nfgZnYdWg߮ic6yt ٷ:lCxGT͎,+(D:wdՕ+dݣfK=˲ 1@x흶|Gq9"ϸyhVۈ)=y|Epyuo<^?㺴mcn wؔasSmS%_3fǺ>>+?3F|$."i6RzЏ$Kǹ yGsZQз4T~LT"ʣKB3B{=u7<Տch3#a&_î-q9=y MCmK$"3Ke2RY̆n PFeڥ<=lUEǢy WƱ؅Yzs SGͥz5k6n">Gh6XKI:+'tanA[wspCOV.v{sRi)Km/FTA B'¸/ŐXlL}QBa-c 򥤺H=CmT*[<]̮<_baek^UkZiQN9+e/p-ſz1S0T>A]LPh~Rۮlk`,`KXVje +Dk(oc*D%;_XGLn\`iD_'e ]fͬo1+~TjdalK*z 6CKM7͸eZgރrdguOD?[pϡ[Kyͳ/N+̈́\K:U[rY~lk\MFdDV-χ2.t!r%Q)-erG1\67j;`^^PmqdSfuWa%zltJ9HMgJb5HlІ`sYAkcRY*7A}H2p uPŠކxA' +msjWkћ-z<@"d/:<>sI 83S)$!!m TAm(3BғK{/eMIH=޶[ p¿O7`Cu uS+v8,5X+Gvn#[{Ȇ: e9d}j֚` e9*NQ13ja <(]*x0ITܑdzXBS;҄Qa@'=e:FYpcxW¾ +P_D4 `b"p.bAֲ5^\l{)"^ A;t5CKBbHK^GpJ я]Ru1ѓځG X<;v{SM@K hSBT\0w$ mٚߘ57 +ܬIDPl=*xƀsݒb;!y.j'ivցGPڏ/KHK]:2i :xˣhC+h̎SK"0p@X((cX[쟏o +(䍰P\Poo>hJ= ѳJ MaMqYHmtϕ$]hv^\g!YgZx'~Br8d60-n߲Dž0 +]Y +X 0T04JU;i9rTݯm:7,)\.HxGZϐJjC+++$D&Ɗ1Ac%0z2T۝/A‰(hՅ' v"eVYhoo8+'7 (|jͩ}6'" f3½Hmvϔu74R {" gxvAҐt-hK>=$c0BzrvPl< >O4gcOM+h[݊UJn{L7vV$'.b[_٠JTWT(XjYsk8 ż >3<w x߽R?*8z%k"cJ}%N?j5+@yT@/3 l41DžQvrPcfݮ0 ސ =i<ѣTQ?@dL0Y*(7^XMyP篏ljٗv/phK ^`2n&9S[قDh0;ћx;8nոOe'nx' +/ȖRv2`Ig S["6aܔtfMLFv]ˢZzߐY77ͭ}|m!:uTШ06iV="DsB?~qp`*L4ku !p>$ 1>L+/JEbR +pzaĄT%:.V" ЙA{ C8h { ]rEI79ގ$3-O(\ \Z|O @?&BV2@C:D9V=" 5OUb-z#/ B}s|-_ڕKR!⬹ENqR]8e"#FvUv}W]sU G{]q1Dm# ,0Bb9=M?|MZ%7sl3y&#er/lgt%HZ]|,/*XBVn +DlBb[uC; "k8NOFa#߿;5=IѾDL 1ǞZ C8ow&06},0y ;݅TƁV +#a& +Hג0`:.Q ~Agˮ͠&ߎnGrXB4@Pq"ݺ M݅]ռ|׀Yyp8e? d%q1z2dJt|t=܎.ΐiM$9/P Zbm7"%x Hp@D H"bWۚsVO/*I(̹EȤ}z!'iK4 /T_PU|@B.r13nÀow2-0iwDž:ST7RXv=HVmWU5"Be-^CG-,rH~y; Mm7F,=W mHb]5iDtL% i螀,1$_Y@F/:(`_RLQKl'Xo31!m&cŚ>JV9}h®K?TD[?6"ph>yZ E7퇀]d#*l3U\3@27@4Ј>7 + ȶv3(da0,!t[.Q2:1,J 3u晵Ka +SP`Rf/!JSyMc +XPakNS831nܤ3Ie$coVLmaI )EX /øUŦ#y%I19欨/$d%I7>W|*$e$)JT'R$TIRS*IR,Ls+I$پJ[ +M`ԙF%0ҺSS[;$1G$1j5YŁSJNbH RC2 \KPa0a̖tB; ^'$ pVTn90M1Dz)zN>{]:PrS]`~(2J|ݺsҤ؞Kk'ې^Zt2׀S3()|4UBH͐jjPdEXҽ2vohzmVO9L'Ćk޵fVgӺ(- +TV>ǮIҚ=C} -z 臧Ci*qD[l4t?xHwHU5nc OrtGclG&bNHjdg.du.`,nTly!,8lH+Ņ*H98mڷTt.,yRo0n&eA "(Y*Sx:AOUqLo`a߲‘H{ +Z4A!Sh# qj.-6:]R5a|I,Z ZYEd-3.$ +c@"+DN^Mq3ә3I,<18wG ƩjE]u$\YLy"DsjGg?$F>xBpE^,1%9y$h#SC+`EDKYW:GJtQ74Pn;8I)la)W@qPYWXGJIv2I39U-TFC,!>=z8;m0k6yd~RHFEUah O%RML32js$KK{Bqι-zh1]4-/myh+pJ.$Y'4nbĒ9Ĉ +TRzmq9]ͩCYP3rJx JP3ea?޹z3 1J ŨdjqW3Ro󝧹qs !F &PCAQHP*NҲXA`U@M6#;H,[bVʗM [ޚܻ1x< D_$hUj+>Q,f"o1q# B^k&\BdW1(-)\%2-g4GTrr:(xN v^M6aIy i +>*x^oe$߉x܊^%ػfnYɓ,:ԁלOp}|ω+zbYb¹uK,m9ݗ g3 v9~XM(wju\edC2S仅}lxR.z$̦VʟDHS68nxLtghpdPϜ֏N6sv9']-՟NveǎbCFEfebQ%84/L"6`N#DšDU8kguYscfb L?AQUP98 3tzpsq~4JD,Oat@큲u@8=B@գP:W8f` ,Sg]DΏPHbgzq6VhMeXLR/ `#n}0/lɣ7xX1?i 44?IeXQ{s5ʯZzH[q̸lr)2h~AlMaYR_SکuIw)?<]IS޽,k~Ƙ me5!D/ <(]1|hQ\=#١g3BwL6aP@ao0v% ay~na0X bx+Iۮh;)1Ou8c(;#zG2gɁ i@4,؎'M^Ns%Nܢ9ɱg* 3k"丳p0!Rc|*~q[S/9H A8FP^r)S*^zYэy3q/:6q]Bּ-?ZONDgzSu3|>)ޚEpUDVfXm1뺯it=!q؀/(ZB}X 2'_A]^li u6#lPoa.O, y0 4ENE`^\y{YV(FB=EČڭ :Bp2 U)Q +R0i^Pc%~ s S;aQqAHDUK*ei28-QܵLqFH"A@6+Q@9܏JWIN¤#Z Vm Fb7,^I{O;b9,:EelF*-٤Xf%!~Jۃ$Vh#Ca(@jϕI2r#z LVPbix*6nv a +x馞UW} + +0ny\>JQݛbc,Bsa8S8tFӭ)㲁rQW;s@#gٽv&VۜX'c;_, 3r BNo8t[мzer3 _]LDA~),CU$nE*R5RlIV[CZœ|XLrg*4mH<͖(ӸNf>7W*a1 Ca[L_+ 1}GiNjyflCG m +edvy5~ޗ!gfabbOk*@$R0 +![!H'}MkgCSZmL`LҘQM|c\!m]lZߗ&'[bF5mRK*][ &!ڊڽf9 3:D3A%EЙ;+Ble x`7t8l]lg#d#<|hȭܿ7K3/Dz!^_ý0'_I`J="$>ĸ +"JOGa0ˡ@M 1E FFdB |HMTk0Pê1Q+yƪR7o9 L]ǕvX{I8c`?c`lXs:`7qvL)ȩ;=x?xP%1/=ʫYL=qNJ Du)嬚L37%;rk=n@3coQEMFGRfڿ}=U V*`0(렊:Ul~؂` $gd!P<֖ 4dUf[WORdOյ1R)2˜cRs9\8(K%s=GIɮ/5J0UZϨ7Dオz3>;֓]^W@ +mP#lH#¾Mca %<mm߳@3$x2@[Jc0BDU3 !E PR +1=)e$,<Ɖd%U$PY“cN;7LjViΝV +Kv"VEj,'5xEk_eBqem0:lcێI.=p_c.1F/54"$H]G95Ba>lZ3!!Cr1Gx&Bك8rO)j ;Pvg @߉"M4e#Ugω[ ѶK6g#٣94DA2f8J{k~bFQ*qX|oG?f dU1p5`fMz(רx}n #A4P:\L7No&cyF.Œԙ^kkOL4r/;9ڊ~vo9c==Hs7`Pq%ZD dT9A<NJaH8^R0?v!SɈJNoeA^T:ѯk'MzMpx vnk,q}&Suۿ4M,Z(܏>PUx +Rd!d dS#* +kRIaYGhC:dE`h%xz-Kip -$`bWnjEp-Fa3p 2wx Kx~mE$FdvßcIDU,pXNMAdQA%/UO"-X hf+M-rX<Π&F_ ?|Ì떶ZQD(~ʢocXD&QQd@A# Ab _﯄:ѧe|*d2רM$ȲYVTTԱK//CBK~|~cBn*S$3"ٻ!$/{/ػ%^p Jɧj{JyΫzSN1utPOPUG#w[G=St|7/'10l$sqS!>nR˚]Ypc/plql:>q% Q5| @`_vקߩ!/FR) uT9ۏI B [CTҊ2(̈́De4VӞ1UHwWv ,"t4җ~y$*ˁtWvz9\fwDγs|ֳzRJZ=U?X~K?oJ:uQT\m@"/qj $/ՕVQe M}l냄RðNI1Al  JH ӳRTՓv^[xe5eC$ 5~L&#;BJRİk'gh`j,٣+H5^ ZKS[܍#MިY@8TOw75gI4s/tS:yj(lg \=/kdUa+6V 2ɳl8LU=*,i,$6x,'*|oٜͧ'9#YM BN 0 jz ` *4<7K؁wdtP]v< vD+IV$iJ(T1Vb"|e%."&*f܉S.3_qE4`C$txLV:Zd"8XK-K#Wk;9ڵ]rKУ/NpZpZUZJ*,'ȯj?1"}ocDwFYo٨FDzޔ)]0rb}KУ8阉Ű* 9-瘡`˩gI޽c4!p*Uwj1fHVffG7Nlx?VGf6i||TO,v9~1m;;NEr|2u-vRRB9rK{Rx%s󽒶{F~( 9Z'&juObAHn:{5qHb b_9w%/C8AQ6ƴ͉t΅\RT~i~,RB)zΤga 1z+P]hNqQyeT&)Ոg`|kO>HBp:J#٢E'F.kB5p* ڞ\G36Dx:E0[T&GmDH)4zBP(|:agz#\^t1dAV+!*Z=L$q +jPQD_Tzq~N2SlN:*E1 &r3M$eXM.kR$XA8ם\%-*6]gf*;e]zdS|"T203% Hx:1w#p>R(Me?Pca1WB7e/#qcHaFW3:X;E߱䃫anGFR3_ G1/츁(fR7 W⩳LlÍb,%K)H{!.`=; ܝͩ\YN(0JMKź祯4_~584I*}ry[ӊK4h3D6Ưq'بU .wȒ(Ӛ &DžDJ`BGV~*ĿaBR&Px)%>J?a<'p(y@EXp1.`Cʴ +ILN@N?82#F#\X/<\(r2QXHL8fzDΨFU/YxQ9jARbU46ػJ/c i=NӯvM2W(i,qq<3{+PO7(Y +',Pp|0XCWAk=9GFp yLYr+Ts{ޔК!bF"-H,3OP-RH{MQ6QSŹQ4r-XȀaaXY1F`D1V@v*qGQcf+K<{>!*P/EX:lp5EJM8$L@yS5s œ(e>2%2n͆G&IΣ ȅvj2uz>_pmDeB%(NZ;%" M!vZ'`] Y%rWh"iAv~FL!3J<.Bl]w0^8~kkѰ;\߬'s P[3j=;='v:ua?/j4-X\hilR2u}il}{(Okt^?I1 ߬zRW) %]iNޏ#Av+%M~QhGNhGaZL^C4Z%eL=DRwbKā JQpB'3aSmvOZЪiH:lYqOH)BW= GJeZ50% mpv8CU=\.+u3e*py\t[cQf3Ұ*nL!EcjNhe bF0_:k:QuM%xBq{)o3ܠ5I3Ǻ(CWqT)h %{B'p5XA,O[ A`j*$qF!Ay2C{1)JmoLCTf}BgV(^ V! +ɩx`߉aM̳})XA 6"h5S",g<E;&Fwǀ \p|5mցVg9N +ploڌ ?MϹ4rt|~:ѸZ@l$$b޶̄}t6݇z+f)d?QG:/xp}VDXMbI!\>*44z\u9Zb,"&Ex,y }Xԛs6 2@F:?QRg5fzyLB$ƫIIHE0ch]%S^A06҈ΆY<6 h8SvYW5M㻛6BB<] qUUy*W }^zHCz^eGJG)U:lԆ +lO:q{Oːj+ ބ]2*evRny(rEV"vt[p%wBFiYT+ +jtO&ٿϖPz2vܫǓF<^x2 ޲W@w?w`52{ө+|]d%O[y;6hR<->^YƂ{>Mic/M,+AJS ZjޓV9Q5s@م +f L9)Wlmcu cqVЎ Hocx O`8*7kNjb&9<3,fg_ 0a`c4)uoUo{4MG} lЅ͌G/dtºjt4Y44}h O,;0baXulgz'͸}\ܬMg/1\ZaQf 3POw7@_JX --;۾.>7PI?dy_$Qrdw`܁i =v3aL/KlJHʯ:ulB4:fp%e+ûwufy&vBzRU室&q9}:nQ/63YQCrn6I?E)g1R I&N|+Ͻ$yzrp.͕̂t1)n- +?aY6ppbxKtIշx3|F".LE`hZ,X"$o[ݔw2KcZ0>tSW$x9Ml@Њqo$Hs^/kϬe|g&VcvZc*ATю-5S6%"FJ5Ávj͔P8Y"mnx#/ui"<˒q 79wgtnQ`'C*!cFŞ +SSLq6P,cI9qW0?~ЀsX4Wɬ}ƒ)ǍUh9Z|;TRޙ Q&GO%#GKˊ\EJ"Ǐ9k3\)џ@J#)џHJgDFR"Y@JBEJR"sIPkt\ɷslR3"?pi:r.-2Z8R/u[ + GVC^ZXw}>.-dɯhsьs'G6Q.MьՔi yRZ8*BEĿ%Fojy%jg4?:*Tʗ 9RNjO|B>/-R+%QRzb*OKݏ~UNQ5h]ZR٪oTK]އ:&8/-HU,qUZ" EK\UDK$aMKH#'\Vu9 P56Q $$׳ֿ܎7tngadR8vCY/_ogJHϱs]s%Hk9zKMLM]BIJ7s~o׮Oij5Ee9bKJ"_]LgAw0%N +81\pR:C!by΢992ld1mTJUU"Tc A^PWD0d*OX7"6r'~\>uS5^i".n1KV|XP(]PO + +Bp +/$ +Wy|F Ƚ 9@8vǨΡ'P\+ꫧ.]iD f4K:|CMwL}Gȓ%<nu~1m"V_|k/oM.y +dS5ƕb>~@6?l= 40w%@%@?0#'Tm-aF,ZA{jQ]q,ݿA4UcgЮhۢM{捴gᇎ6Iܖ6"J$mlU*͡Yr[y6L?dO$[a ـyz":@}ު~':-k`32ZeS=`Hd|7Ut‚b8jXYB)؆}Fra1A,VP;/Oc޷w@sڹo_inț4j83Wɖ4dJ^$P+% + svp::T2/(NvR/ +rsD1# +DDA)ѿīJBDPz[E9D%#UU?/C$•/vD[Q6?,h)::.!? N4zJ4. A%-P,+;,-lnO:m}Üjsh1"ɰ +"pP&*C=]s(Zϝf시z2Mц:n8.x2FVFe13EQӪ 0? >9`g}tq4j9l7TE8M]`[s/M\Ndž܍ER ԕuGKb:Jveɟkz5FfO2whY6xbcJXy RM|ӊ/O9i#|PrmY{BG#Sa(rnr}FSWp< ++h!fi!jRtNJxX;iV0x9^Ue 빝.1ndV V7VfmfUT9f"@3?a Hf7 +ӓY>֩UUEZfDeF[w%$^ޢaYlz,^2AƄ~E &릡ɛ u樣"BwTX/S" OR<#G ~"e79# ~a5$.}<J> ACO8D'2݈x#9 ̒ۇ@uC*5.dmAE?R9/*W` |/DV"eC|2{4! +DSrY}%9D﨨\%)0񤷃p?hy0PTUX&BwԷ='Gq&Țt6N/*D/gu/+  g3D+<8>T- jLL pb@)QfaFk;۾a!`V#[Ыbaνuc3`ge3#@}f }8'/uhJ,ƶ"}b^)o5Ŭ ԩ< +/J3.m)Λ/~g RPpozeyDEX9xyI*'3m7IFgcV-AY +}9P=:M¼ gVPa"@(C5`Jryd2]&5LYW5u!0{[Zؽk' mY4g0Sfar§(RCXR!pڮ8F] +55ϝHTy Hg&/"Gpl lU> yz/q, +Gؚe+(P%"}w'tCft27D,+OΞt48&g21-{T +s] +ww FMWx2O:zF\.L!`Ĥ}v C??y1F!W:)bzx.;Z +|AkT7!Ҟ@B+1LH2CX]yOzu-2̕CF L+Q¨H@\|FnC _ϣWsR-VA T溩$XAeY 泬tn6,;o3Hca=DW(p"+Kb*L g6BR\v"= +~&%.4Oyw_ZEF'o!zyg8(k\\%'1EM(X ASN1.PB~S $'V.@c&+N(N7Iq*xGHYڶ!ߑ %Ji0F0 9nIFbW vb_*8&* +zH^TTن"BLehmw +5Z;59E&;nJF/&YI|SO侲4xƫ|՞מ7Y|.s9t.>o{>@) {gPE rjX" +要IgTӠwndK7Yyi M,QTҤu5yR7#ڨVM +6;V͜T1hȠs90xl)T6n@\h}56;)j"N:3мޕiC-Mbi]̒OaiMYrVrU)A-jD_-cU2k]576`& Ƿ~.ז/!sɣ3Ͽd?QD/%8vBo] ߚ|+½zA +"ձ\*K9_˯|]~wW>\m3i+f^1K֨! G6UGs1XȌi*񏯚Wւ7>5 ],'ʰMZJRvψTՌ&a)UD3~Rs.]A#,Ku5 gЛӲUSZ +"!مѤE"Kq>{"X=uh}}fNlzQf,>„8q[U`(W㦇pepeM 1)W &H̪ ;MDݮ&=Uʐ:BތΦyWIz}97v`LRTuJ|YAV~s^>7!G,o +h"qk4zΞxj#mE&%܍!Uq7cWtFhCeQ-7S7!>؎`iJl#;NnFJ2lvrJ9|zju86"Dt$7ъ% l ` + $LG#@&[/7?S6);S#4I=I2v ma]"HazLh{X\A@ʞ X3`utLW`-4 OJ]#D\~s,] ҁ9FQl`GAu+ƌZp;-M&O>Zv[Ĝֲ }tn$Ĵ5rRSb} ̒o`DٍZGze1[ T2T:v jH>^NPBgZ,<< \g-f[W%lW( ƾGu0;G9[|uw@%v(k)Rh!cqҷT~(phf,?/"v!>o_@ك)s<hvto7 )7T%"}GiA ȾFjkɒg$vGǘkIƩV"$mus#QOH1,z߂M.6;A8aJp1.z|iU5P/bALӴ}+!XWBt%DWBStCKpW1zr ݟPg:pw#t\`YXrv̫2T-F`P)߫a0tXˋ:srb^}T(:k0u/CrxTa5̬Z2_pj}/U:6=>[y5ԕ Rv.Ҭһ}m[z1W\@T0jkUCjzڥmG>+.7w1y1ZUu檪^UիzUUFUuMz7DmJ;D1clT#a6J_*SM1">܅Kȟ[q±Ҋay 9m׈띦#{hbxqaT~%;k鸕ɉ'7L(cUpT(_SdӫzZS)tmfFݚ^-rYW/@L8e 6)CI,2})C etd(1uZCMn~-9_K 3j҂|}oQ "3tޭ(V|_O< cm)*46u$o104<ތb|y{Rcm +A*@Ǵ!AD!*5;E *G 'LyRt{=q0~pRBHtsul21=aiଊs*ȀW-32.ijl{Z/|7&W=<0 L(\.2f'oI?Ur"a (e\eX0dޟ +FU: +:Sѧ\e.-RZ4MFYcX2@QUpervPEyV8W#ƅ>X!QI jJLGPFV6V'bè{D+ƏZOFPK~! KܥsHBk@.8TbaoxŤyivCL+,*_ǽ 8vdea2rلj*$K&<y¥Z$N3$ErRAu$yZ Ue$.ql..(]k|#أnȏq5¼Fx &▢ҁ"6 ՄWS)nrl@m [X>e +(MkD6L 4ghݶ|b>s5J$ buz+/*4\# Avj" j-g`՗{C_~,Sa ը$%6qA|kTJdQUA,68#蛀Z$G|w[Q}훩(DZP/ ,jJofAowKH}-LIh:BadjiN_p>Snˠ=sMZ$LGrkH,$V]_ae9xx]#0>jDFad˻άkOp62_CfT>\ݎ!׈mL-,W֬=^ ^-74pr2Q~k?6cgBpn]N>f| j&.ǭ ֖Ӷf'/ޫޫ)Ю&|+ba?_KOOO?czޥ0X3Ycv]] wiM#h}I9kF➻J>_ (K 'ʠjRH@e>4}IYF73rןbAKVH!c3WiA> ۦL*cfgv;^# GV^T[ S}ktaFuuu`"Q~@=Ixv|a?S㻾g~{JWz}Jc9 #?~~|\4XoP3]kSM YO2q۲ bXNq-~ddD;D/)a쀈?^-h{n(WS, ?Lڕ/y?x3)<#h=xp-'6TW FXga)~)_ >4'~KΧ'gpxuy1"JY;`On(ڝr}&Rc_oFM)TG'IL\Y-E +C({1qm*$;}SB:BI&iޛX137!L勇S] M*v6 (gݫC@VIuRX il~>Tys՛/b&&l"+~^)'Qb;4 ޛPU Y%6$VlG-F:Rػ5N6z[ $챕m%d%l%J?n%It7J* +q/S\g.rSLuG@u>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7745 0 obj <> endobj 7746 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\ai17121b.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7747 0 obj <> endobj 7748 0 obj <> endobj 7749 0 obj <> endobj 7750 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7751 0 obj <>stream +hެ[[o#DZ~ׯGg$s଀K9%^q6$"}v{.]A ?\͍psw ŇQ!;8b~fo?^ɩik<ڍ +#==*mwHҭKK"Vxרi[2LV$JJ\& vLWRamf^R#&Re&;V6̀ Ĝ*|T_O7vPqI) )"AC1wq.eiH2q3-]/VZQᾗvQ4OԂm\)H>#N/lLJh94xi;6 / 2,.+~3&6d|*9w ,jt{3tt ڮYkfoϓޖT|ܩULʤʰ>̇HۆH5onE'zO`)7eeWq J +1הX032aY2[' +xZoVyR2 +C+z!o$, +{nri0@.j%l /~勔֛exzvX??_6F]K9v6\-O\V%w@ȟ/>I5aI_s~/q^l3a|%) S톌bO.),RR,d-j^樳D"Vl>g~>pY/~6gy9&2\qYH ΖcUчhuWRMMڀ嵐oFLyu +b d7 TW>5Śxr_YՊ+檩"!7/͸s}U wJף kշTe][s2 U r%8 ^N1](ULw}-|)%P3Zo&neՒKH[JoB &6[_taǘWbC~(7xڷi }`tr : zffe|V~3U-$:3E}+.+es!q%o2^ܰIDtCRFFB8-eU:o%gCdR[ Z *ZVa<*ӶLu<l_Phb%1oyt@lCv(+b$y}~}0 ++v..gWč)I +lum iXW!S`uf-޺(\&fT⏭PX~N(>ol:)NI\BCZ Ͳ$!1ָq!pJr +]]iu^- KKs )kV޳v^zUP_s štWV CAk7 5 $Sp1dt@ Z@DFhsZekU.T5Lz],I,kgqdCKrA=f5}8Z/^,`aPDI.3s'ΠUQW|@-0WeFG*'/4sTgVW 4}fݹ(w5+0Wi.&D]wGFŖ\{BUw7&SޅÛZ Ƀh %Yoܕ/sU8Kr З~\IqU*Qv*~̀{{,vT@=:'PozfbEwX($AV rT>GMU2$mC[kSד~oĖ^L -oֺjlf)taU#\݌k,=N9Rmdt8ZU2n PSQ[Gc!]ɽz밭j6ڪ?j{srʞHV%*o +s?ڼf9xU+kdtڵH*PR +yW@ukԺ^*,EW)_7E."64*-*uK"B&q"%`b ږ+ݔ|`񼧣ׄ%?DЯ1 ֡Oz #|G?>LftzS]#2!Kja_c.y0ăΗ.h`]tOOx|1narJC;x"Āz"]vH;!5 +Kk|Zx:bEDϦ +< +W=#zҝܖZp餚9091xCi1]rF +8` [˥H@LX,>淸x˄&^(@"W75T 1z$px<E]ί +1s.PO|B)}qE7bN|==o6TTasD?Wk@s76ǟPݟ?h|,RcL!q#p6:"^4^!.B;x>p.tc`m%(">2G: ^.KX]KH=^ЏڎM0Khr'DYR%.bIKO`hK9 +sU`[dg]^Ly]a/h-p!^`xmsH/xK9^z8(m#/RCz8Az8Gn# P%ß PCz;N^(2+/RA:/PN^(a2G/P#m3^p+ cpBq F\]#/PusJqL[|73~xl/Y$ + V ) @tG $!ce+tht~k {Nt;i}311A?hGm:VKZ祁0hߑzF;'R@m +endstream endobj 7752 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7753 0 obj <> endobj 7754 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\ai15471b.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7755 0 obj <> endobj 7756 0 obj <> endobj 7757 0 obj <> endobj 7758 0 obj <> endobj 7759 0 obj <> endobj 7760 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7761 0 obj <>stream +h;ɮ$quP=)z |POh{4Xz=#Wdr 2owׇ=>y|t'wz|~'˔Ss8=~|O~8Oǿ?xWs<[s#"S[ֳ[rrSőMJSXj8xxuM*TrSa!v X$e#>K૎3$oo \5vY2:Ӗ3|p+^ԲF<-\c=6q~1aY#_ٟ +qizbu9}yXpw䩘;>y ,o?*&`đb#"Kǿi@S%srp6{>w߽}+3qozֹ'%/TOgngׇ7|߽~k>ݾɦF.:9`"N@2tغ?><O_OZ;6`=%n}" +<8͋zer14gߦCO*ԳDlЎIk`{δf|j\ 32Xvu0f=.psSw˭]h) "pR@'2^Y@4a> Rk <ӓ?{_xQ~6OSM'wE3c.v]A3-7,f,s56 uRN!6Ewm"#heZVh. L\3txWX 3(ƎFLqZRюv&ܮ]i@4"څڞfjho~4 ttIox穠"P\ĈaO]5iˇ̙"}(X9a׃c A~DG2͍SC[J Q#vs؎!6 1TJ ORW-_-uD] ʣP+1<7x "l¿`]\d%,/Q"m& T28GĨŸ-X!7K:mwdx +ЌV2HcDV/P/Z^ڼ .=@&4CNh*EEx`TKFL<~׎M /|d1!ȶVbPj'qfU͝b%}onp 7.΋@t$fLG@$W8? _v0^o 5Qg)RS^7q rsW\^bېpk/bUODp p6~^\7CHO<:Jk6&W K!w%`uacFoa<hmžZ<5t1Lʷs9 ћL dJ2=}Zb1gnzn04D_{A41-tĪYVf٬DT]LCmE>+j]lp2_B֯BIkQ ʵa`FSOL:c"" T"uKX>" Zr4[.΋5ƒ9YAJ't^=U.@|W*(qeafϳ#$зkm3# N! H F*.߈Oo*Ȝ2w"Sׯ[&hfXuxV>Oa/V'E:ɺʺJruQDYm~PHĸ2IؐD݁i5\}/7nxCYjf/bZL+|tI@y7 YEb @]#j"ɆU:dNrB.dًj&ك B&XGP%rETu0*ҫb7j,U.|{6N|T&mdV@8@<SĆְ%}#=܉1q +h+~ovfÏ~xO?^:OsO?_v_a:& #C]"moIy~|޵?_~::ݨ#v>> ).X)h6D:(c\F3wS7^ J;g4xP ]&mg6زQn-W96i!+CT "UH4c8+v/\a4\hr KH=(M\^P@VfV"1EFy0T9I[%EI("WX^hXUάʠ7/^N"bGAq’7yWkljJC]<U?egO7L0jFH_k`Τ|ZٟFP]WZYxl{X,4wyFVU)&Yfu(aঊ(66hea3?ip{(!="+:̥u lά&lj[QQҿ( )]:^SGE9 "{H$n$H"]RGL2f+<6 p' zPaHmOr/L3=QpjP!г!h(B\7u.ƚڅcƑ&*uP"*"s@iQIZljk22&9}j-[V~vqk*"ɾ$/9ξmׅ=H(shWwk|ȬPgc*B^jp +FJd\*FCb}v2GهlƜ= vPoHkFziY.Jm|P\T/I쨿P+[j1u322m4 IJtT%Π)lNd`>5'Ȇ@)^8x̺i5`EBZNtO,ԋ[',l.\qo !~)Ŋ]LF؃ڻ&b|Pk&u!F8XFO֪س(^.#LM3Icӓ> iްKv3S} o"{3T5dr\ +M!qsj S,--6hiE xT/c- ]7IGޞ8vb&To)1F8 +V%k[O4pQ<=b*&lIHMJ[m"$mVP|& Gz.{:S[=FmhSy/kI_}[qn֡nMƎ_ٖ*Úȯxh& +oNLK.Mm!W8NՍ,ViR*~DnvTR,bҽe4 +,woe5`U"l •I옢Js` +/l)k۲0g)EcwxB*p5q8xI( {Ki`WX(ĮI;٪mAo=2'yZZN{_7Vmsie7Db!TC6o4&LrlNeJjb6T73 +݌;=U2:^qs`o5-gj2&|ڰ{ܰ{Tfϗ!cمܡ0K2xxɊ +mE:fG< lzW*dfEd hp6fIں88\ѹJVe`DtmdMXȤڐu\f$R9"Q1%f%/Cť٥Va:ES-hjVkBeܻ >;C(0ĨMb / '8\A : n7ķ`"CVz?#z(1k7kE˱oڤ8Zv2Anc`}>Șidg֕`I]UwH#Biz GQ6[vsX1\KevO8[/OyO|̓uIH}o;16MBKOiulv~IiAy\'%m_]={| |)g 3`zEb_jRR9Q-g/mSTc]ՐZo<?HV(6)uP6q=jAM!7q^ w[4[? +endstream endobj 7762 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7763 0 obj <> endobj 7764 0 obj <> endobj 7765 0 obj <> endobj 7766 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7767 0 obj <>stream +h;Koqw9.oGcK +la\J (2&i 姧zfIy^wu>?_Օpu{1s&W48G'7\}49;\q;hi +f>g0a?fN:Qfru -tF p3ҰecyH H^~w=o.⤲JMݦk-l`kSSNx/yCѺyѧy@pq80 ~LyᲅvD!mX쩭kjmwt#3Moq a ?Ň<6Cii»ǿ|== ~:Շw4Gۺ7#`3aÖ[8 xtxvzxttw`wp|M!OS0CpxH D_NcPh3sە+m;nv]l7GG#ΎSe9'BlGW=iO;4>60y~=p9`;ƌgm+1:8½hmLjh0S.6Kþ^zvaJ42hw#|C|[o#|:a@ޙʿ#0:Bq€3.2iLrs +퀦/$L:7e!(@$hESZ) Zl doa4,O #h +[;M~!Վr'< !@i(-Fjh愈&AOCE=PܛtuL40'8nr/y9 ( 4 @8 X] -B)P݌MMAKmiͺ2/vNeV5{x8 u-^gå\ +9ˑp"#?"mi_6w.L [w.(`{btjźO".3vBe4QS,ud +6sb /3g5p)"{b/Y ?p0Vg#/bT]ʀ\o `ulN3^Wkrm=WluV 9lɻ+H A'vıC1n> F)%;K62LBq4E0qo 2|<'~,sˈSO %&!6-,3cDR0CihUVDM$aP?MÎ GD(c~ʄaN%fc5vo K3Z9oWӳ)d(`۰`“Ⱦ@qhKE|9$)VEH(s٢ Y|֚UDQZJ2vZq! y(l={r ժ\fJPbC%F0K2Rt-dZ ^} h/@G:v˵!D1>q1(':PG֔@6u?̒w,+K `z< B3o>~-liӚ-A(F=^)VH\uY[]#A=~_omw)RZt߬<5"b+s-pWV\\oӡPG$Lxy1cָY$P;ڇ8J J _Nnܮc:m){c\] +{+W&cq +qk}WS?[N8$'鎦18 ۭM!ߟp׼ڗTm9z_z$f m{lBǥG鵰>bVnʱ +Gl:p:hA҅k9'VRo;X 8gjI ]JYylQ}57U3t4!CtI%E~NCR6uRĄKrݫ3n'jmD6e=Б(y׺oEMC ɹD%COK1Aic./I;gh&Ag++ 2錺Q$MG>SMLQ|=A):Tc9"αUMAìL9bHol! ȣOa>.3zl3ENIBw 0BIGOX\49Ъ!Oͣ& TTw;7wT}\~:%n[Y9b@1 +`iDAn7OV!EY)dB,D%_H5M:mD{<,ÅM'T U Oj~-Q= 3ZeǓ )FW0:]hi%nK[ +u9DŽO+kCH"LqxunYx^u 1iG +{if1V¼iܟS}VTbLBɠ!OQ ?sZ#]K6"uaѢ@g4U +ܛaS: H$;[S_7T * ҉YSP`Nj[ښLKR9(yų e5qzH:'9; ?*V:ߔxZgu^3YέHkׁX?{Om?l+"R#Ȋ6ǧ8KއgxpTkT2ak)YIkK4wv|fYY j5 ơdD\2͙%ZQ +ħ-+}yO)R[:vXK7ΫlzE[CaW3ix_Kigݴ~}K g_D$pfB:|?ń9~z%] +~;qY~ +"k~$ueH]1WU7f=X ̀B8vuRgu+Ϩ,Y]9Bx{fYۥUk\\5_|MEIFcc~k|Y]t3ةZxVGg2Zx  YZT 2,zߦg޽1W7h}o^Kx>%|Z8A Qfg%V*Qu.;a&O}mOۚLQJ&E 2igZ*(4qF Y2gL*WU-҃ʵY<:)[j)/iWYL-7MVu+(\b%3l1< Bc' E(^ioRVKR-V^YjUQ)Nqoy96Cm-ggҪ6C`nO?\֦;J r%= vz w70t]0.Bgvx 6ݷE2O42iS>6~ӟ.ppoK9@z7OˈwS>~aX7iV_\!DD\Bu&% + qyFaؽTu̸×pG|4 jI]Si}@aF 4^nχ^ )NW 82|jQu;H 97 PYa?Ф +endstream endobj 7768 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7769 0 obj <> endobj 7770 0 obj <> endobj 7771 0 obj <> endobj 7772 0 obj <> endobj 7773 0 obj <> endobj 7774 0 obj <> endobj 7775 0 obj <> endobj 7776 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7777 0 obj <>stream +h޴[o7G&s\dg|Xo:#6Ȳso*{ZvrCk.~Rûo7/ՠM&/ ڇ!Mof7N 6od?gG΍KS-,]e;Sc-5cΖ>ilr馔~K^%hhb]5,~7}]b]*,)Ɛ*h`rl_8OaWaoXr{؃bRȣz_E}ATVu*̚IˍJpu)pc1;]:N7ă]#hDGYIzTèMJimH)OƤ?1dZͽ[uǮRp+g& w`5ivgP@K]'{aixRo_^n~Q&]wo D lr5yt|||x{zzGG?ag㔬*a:.! f%;:cٔ)e8u簼f,Wd)* ǐQY{u_\_"teoJY|E<:#0& =TMfU&/`{;Ơ8jKY+SfU7PaO3`!T0"JxtT)=pY[>Qʿ+[#ϲFS)!sT  N;E#9/'b0PH&OSTjGcˉ! |W#3W(%X^jKr5RTVp$6p{P ? +31ʞt]4Z' +P˺Z2ͨRtɔ|! +ᧉSU;<3Ɛ!~9yT7`})z?U9[8f c +H_ O :7T2nLK7v؜+eC5QHU\.[*ߗ1\Z N\ĮXj($\.V5lʔEe2'~||Sp宁%j/K{bDnD`oQjԺESΨMf A{65}[uy}*uP<"@:C8TO# ARھ A :Cr-8(Y^],$%JuX!&Fkpt80FՒUeYR9 v(`R22Vj!+EzP0ڰF<*P?-@->ɵy. + &QYL̢@ ?l$3HVp[$dHVl5+8$`xrj @quեZһ7F6y7wQ +s\? p<}|}s%r_A ,ݕdnaJ}z=oGfω&)R4y%gjXpqBqsy5gd+V!P&pϋiGyp'6m +wx-rzc]Rꢬ{hǛO5/w댰`KM>8 !+K*u:7;H7ż$Y OxbY ]*:oEo",RVT%wx?w,{/'Ȉ&koH{ԌԻDŃa6'NX!jI _CTx(]tvj: +]3\",@P>4"=@z? XHcŽ?*)\]")ngDtE^:Dl `d4|{y8A3EjPp\f9!#2b[jP={PMb\G%P-SQ oVN۶`Zm,χUOd)S8cVn+MhHO2 +"ްKIU-kmtyȪnIW2{cŞZ7!d-y;ARZ.Lفa ,YKV8yYJױe9² +|رa Avׁ3̎VX#]zHN<UaueO`+#@%6"͸/,`gob۶ݾa $M %9i9of3^ Ívv9R7 +߂d,Ir0s秛fͽ_JIݼϬE%aeuq578H{v40]J#o, LL&j.| s.߅;}zW\˰r/{ls/I(*^9=vgː-2,U- 5ЌYi"B0ȱF uZSc|l'T0T4RSܹվ*v)⬪8\ԛyJAdSLҰK^qy0Z"v5@]u3A8ctʈgʗ>@ydh*$xH5Bs)HSW_r6S/i#8E& +cܩOeX]dfۙt=l}.A*}nLҏئ({j. zx,y`#ǎEjfR3F(KȒyvM_BO_d(w XT93uET4A Mi俜Af3#Bo(gδQd 汗uLu11&dY?# %uGԾYtGW9ȷj DҠ \Q,Sh, {dz ˙(6ό*{i-$|]kݲMF'sZncU&Z̴ͅ$&5(Dj=TS9"pJF5$3҄ +>QClʷB9 <2,]VWB gVS ŦeMi6Rt$4șJh¡{k!q l +(tn9P>8 hi/ҾEl5oJ>t-C5BgXyP7$B^ Q|`HuE8g#/Eٙ-wuᶟ.vjxdW mWֶL +mK},+ܨph}=vn- +g`&fa#9Ye=ag"-9vIj+kP-*14agcJ0l$gc.ڿzȬ(W٦n%JYk~HeE=E ؚwhߡ +t* +S]槻Y#,}kxGmӶOEPzO0W(20&N4wYzPϠss8<=`OcwۻRP xT3¶/ nUHDp`.3AG$3޿m{2UC=hA>#vVH:'ǣW4WB.% +Ɋ֤Y˾{ɲEȟ@2 9 MP^nWw)i =fL֗ 5Iẋ@Hj@1ddtyt$̦%JIk3!K[aZx޾]n۪tG +H%):_**8jP快~czxşcmPl>:KyGW ZA{P`z`kkU6pgT.jS7Pfpx!3+R1 j᮵ʴΦ, jSѦp"۪gu{??WWo͟.𚴵a10wme[n0zPd>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7779 0 obj <> endobj 7780 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv40855V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7781 0 obj <> endobj 7782 0 obj <> endobj 7783 0 obj <> endobj 7784 0 obj <> endobj 7785 0 obj <> endobj 7786 0 obj <> endobj 7787 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7788 0 obj <>stream +hެ;]o#7(7 ؝$;%AYdmg{pXE[-lX*Lu?=Tw~uу]7q0t翟p +8 N o߸vέ:-wګN8G]NϝNy$MukOmibFA8񔰶}:2phj+@&AhE޵53F{S"H +:a8*Ͽ><.]MJmH)vC~,T?f^z,n8رrh)R;Fw Vqlg̯k]L} r#<Wf0H!OK,JW4ڸT`VM+~y.525 xbCipBqI ˑU^8vm2Ǔ^!Aho;"5ߡ`oȫY Ȏ VvRv)*ocWٝxx~a5ltUȫ::.h`t.dMRKv_(0}": R1g˞'3}pivMN#xEr7"^5U a N[-A߷ +#r'hކ&fr; aǀ QZi RZ( J7f ,  evC A5K5 +%2E-oAvRTaWiP0Uo3BBi@+G"epk0 4KϲpɚEd'q%.k yGZꕠj tLJ%`_,`_N ~-l3XvP ÈG2<$ODYUrB?!hÃL ڼ))oEYFtlOF_u2Q]aX\6E)7s[["YE!@0^Hb~ +e*汙J,h/<3څeaWݗH@cH! +,52Y$\l +.FBgK6Ρ lC'Sg%zY(g!THi+$$l;=GDt/BjJً_hGBO`;T^SCI4"ɊbM aF B,.G+[W 2 I1(~O +!& (*Uc}'ٖj Ԫ)Rc$`!\,.[ĺRq׎l5UV64$CU+_=U*ùذm-ՎEK9MZH>JHONJ quTJ]6b$DTU\gO( Jh?>4X:s4fC_Xr80 >(}b$Õ%%.^P lc +S4x`z($5ED0&Tc0d/%a0Ca_X,D!ö1b8O6gAaclod [V.]1:j9.**ģy$TiBuō|yF(ns%nsx͕x-;dOuӀ+0v Z:j7)9^EDf{dn~@=81T' +!.N}SϷ%R:PE:G9`j +FS9HГ@S6(ȦtgPXu +ζvlL0P k µEyL2d;*.c?@Q0z-:b2xq}B СbZ<׀nۧ{C{о=^ܢ;_68v9˗bƵ"+/1-Y\Pn򋧟s׎Zq +V^c]tKԳn +q[<{bYZs%/Eyuy& #~䮟ПŸ;ϴsU?k^h© |yҚ6@!v$w<-L|j;9'ߏ':O,&h[^Sܚ@EEZm%ͼʝЂoyj"jm 0%iިy2ZZZH8єsS]Ձ@Ķ|3Q\Fګ{dRx/m[Pcm@y֤o''7フ⟑Ǣ^j &>u並I <$ihfAi8QRPB4Rݿ%#yZahE Ƣ +aɸIDՠK\c*@ɾ@a<^xY$Fsr<ofjy3*L@yݨNP%6+7G fWzOCtW ZA"G$ M LNDsSpQ0 l1QٍrS)␉y8#a0fzSs;zCڝܜw+s3bcf~I35^0;JQ+EG<CMV}4jTd{n,>OŤLXӃUѣYEiS0`u5PO +H/x#^m>ok( Rhr i\D!!|jС;NMwT5h{$ATROVzm,%RZ\JS./hڑHG5E d%"V`fθ&mg7AmwbP;{:M|9bV(ra 97rbW]syá5 ti?.6x8;;b|/0~`T/`?wH@,|%GEf=3P']m0t'Chgg|a>t?'v/U O;ymc{F}s9!Wt-n;懳F-Z䁈j3PXfhسAңcM/MΚ`[qQ۞n +P6Q־9 䄩:HguvOiC~c"|a6Az6gf6mˋ b1NBaaJ P@jDZXo՘2z2:Zp ey9k)R?`!iD3CUKLxqRe eb( P&9k)@vDw2Hapָ71^I36#ʀ'#;#=3鵔 ~"R&PHz2Q鵔dhS z)=HG(-r@ z&f~ț.t7# 2虼fH( ̘[P^KpLXaCZKCj&jGzȢgoᣎJ"A+5k -%P<3Ct/oAGS(LDl/! &1^KTޙ ifBb ɛp i𓝷;Gz-aU);!LX۩{t7tjܢX '8eFW{eŸ Z U2F`:=Q%7Hex"?Xzנ/G5qG*"Ƹ +TZF-XmEh#!XhA/>nn]v77Y<0 E_4*i3Fz.Y]Hqg?,S,7XGu{>5muxuż ++,nښ\D|W¦0= j} p[2Bm]B:S\y)m._8I|0 Yzdɷw{!kBAl;381MŞ\혭_| %)i]"] +R5*Q5wU, +vs_Gm +endstream endobj 7789 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7790 0 obj <> endobj 7791 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv31152V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7792 0 obj <> endobj 7793 0 obj <> endobj 7794 0 obj <> endobj 7795 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7796 0 obj <>stream +hެ[Yo\Ǖ~篸WD?D d0CJ$+y>Yjn"u0/O~yLf|}R48e~q2rrO~:_ncvf^h"mc0sW[3{صűvuͭ/HZw.QHm㔒]ADm͹(KM#b D4(X;vl\ ; m>xv u= ΎRhhN$:Gxiz!%Uqcp9.oW*E]@ʋ<֕R٧RjA\88a9ia\.mu^kbk`dZdiM2s5e~3 +߾v⇗y7ۗ'IWnYik${yBiOm0Fu/7wWn?޼|{͇w`x>Nl^7,h8a!'EIHO6vCNێێzX7{{u -?//P&Dd,vt6X#H6 +KV9P;1s7Dn[AD88;Nn;GLk&VèJ</ if2l!;|E04멄,gv0G5úݠf[d-24D8BêJ gBy &h@GhEíVyf&.4 WMCJ|jML uܭ;ؘCjcs*HhR(IVFd6%\a#$%ĒƧӈCp2<2+QiHŶOشs@` *#kTr>Q'7Ŷ:Gs4ݲR$<̱JeO-K *R*NJPLBÉJ-H& +`]*p闐-2#k/@|X,uű׹W:L[H$_b`ZS9 uN"ri鄚vґCluYg*®@X^Gv(TjvV8ΫIypuA>ӷixk6zQ=S]xS6 aVۮ%;[,]^o7T6on䵪>I|^#apMB\X(VqTM94n@#rR؁,k:E{UW ,5]f4-B0 {Ja 1&lF;q󛡠4UKq|Sڍ Apl3Ul3w!d $m6jWqW8qAV##vOdImqllt4xd_kM"w³WcI! I7kV6J21T7ߊcܧaUK#9٨6 +O5t9`] Qa}1D=dbo/>x+wbԎ[4ž!ѡN?b"C!e{zN8";m׵\䯳ܪ% =tfVSPLʾ!arU^VYOĞ|C0[v +Wc+HR6 k,F&a51 2_8gY"f&>Ai7 +@RAtCz)*NN\U v7P`sW6JWސYy9R0cw>$[uD]cmMV/ +WlQ}Z7:25Kzn5$؞לjT#݃j|Gx{07qf fnp +c}Bv*MzIЀ5)[ ltfgS-" + +z0]Q0P)PZuX!PVBs +JK*uSi6w[f,r12.44vՈT[hY@PÆVfeD9"8,- VWe$aܒe7$9}X½aEB[誚 qC3]ҮEf|fP<ĵ'T$"F3L[z\?N ń(pf@KkE7]5xpU\z2ӷtN[%ܕ &lzQ&C-% >L 6u$Wj)I;8[3D=#FH#}<Jnt@*y7VtYwƕjgzkD馣< YX(_uy>7;8[0\Nߝӫ3 +ȧܸ=o~ndH}+M7o?LCw.AOP@OMhd ,e?ikz`b]d0~ˏ#XAd(WYX:_<31`4ޙLH=jVek3PXM`//&]#"?S=駟.,ηRCH09ҭ8Ӂ^UZGhn?)CraM[|j9 sjs\&3QfDp-uLR J>=y`lJ'n1껓FT(σtV2?^5:;3:k"w(=)#l桩X]da͋TN͙f q)rў#3L )V\^ LYA 9"2_b陂AluH mZ0`R6Я+m4yuEY}| +np{ԅkπ] nqvf0}9g~HXHV䉆#1t{?9NMa9ӿm}8TŁ~f΁ +JݘUYZeY_~6ַF\t]x +endstream endobj 7797 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7798 0 obj <> endobj 7799 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv31153V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7800 0 obj <> endobj 7801 0 obj <> endobj 7802 0 obj <> endobj 7803 0 obj <> endobj 7804 0 obj <> endobj 7805 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7806 0 obj <>stream +h[K$q㌀|g%mЁ9Cs;Ȍ^z)Ha1۝GDF|W~ӓr(sꗘf⦧we0/ +O9|b^`_g^l!uSY`H Wñ[T,z֡aubiضhHZ\N{'NuJ$l˥&s0K +cS,T8$y:=/vJa4[WJfJˁsC{#!62a+3C3].aXcFJV29; èNMأyie8'u@ؚ| P|e~r2pux=4k|'ffmQw{` Jt6COWx~{~oGt.|^7|>-q + H 3 DH]meO6[*Zvlg6vKP | +l|yXdj?h0t8MsY09"5>`9gl9:hqpR 玳 o;Gfub3a<htoS xX!g 𾭷>*Jw +@h;%LStFJF\ Y*B8\hj`pjMe<> TX,^fxʵh&>IGV*ގCz&\ ۴EHQ(V5~9̦$X`%ֻSj|5\=Pݛtux)~D_`Q6L{8cVPSi+ķ0DlAR`h f!4A-J)P4zuX\~[p,,ξ5K!P*T[0lau)WZ<*C),|'?"S $>R>mToGY7G t4ee#D +k^ +;Txa]k"hGήg:WZ\DŽkb$,uDoUJA^G;:{=REr +CZhv5In(uk@〨k\ʍI꽴c{c+#Wv*N:0[ԡ1]q>[g!o'^\$o$L-ib>H>EKЋnE ^W}E^23lu]ZS9v!=+qfNwЮX+`Dۖů-=ʸ*X@WW>ʊ`LřeXAwu(Ԯfm^i6CLI:;$g ɋ#qqD1B1*$<>IT8.N#HrjX94ڡ0mzV~P04@ʃTs_Dz" /,<6_˒s,i5 +[Bv)Z@%Bĥ},w/j165I Cs7gx9 R]Tw9m3hD:whSE9ٰWWQ(^jjTA62X9r`\+B= &r%$]h_&D5хAdr?@L ~5beOhjȖ4~İ R(8tN +o9g<]j[赍Bj}OՏjp7NG:ԍ|fUn;acc{1LF=1zjzWS\>h ~JסW%%q._#,sc"EQRxZ KUv T NHiWz.V@x;6<,{ ^%|lh{62qF+$‹rK?3o  o7o= F4!fvEѡ.y^U<%pݘ2281`02ڇl |FT:DSCA-rHo-+m~[#I=pEJ2s8&jF d^oR~%ц5ҥI>1w,H\ҟ٤OȮ Y`Ts,fCHa0 [M#d5ɷ}`Qzp* 'Lu0|Jq XT&,7NBÛƃ:Mm6,]*;mAtvGjFeơ\e[LI| ,=2w9p D=5cV{ 8BA֋FAMYW^?^pGe\ ':l= WcP)n w#!1> ߵD\_NQ Q,'d:EitCl$>VVbpo{!i~M"w}}IJqήSW(?uP!\3amO ʐeޅگ 7Y]C.8s¡[;SϜ(a *'n WF#qiB{7Lw$O\#M(F" 3(8֎hABpn&C$Nw%LxehTt< ZSktvVCzq1wʉfxiYቈ7' ydUnpks'dL~~T yPw\nܣ:)1j61 wt!]UWfwq=hPc a8U 75N'fm؏zyLIG)BI!}i#&=[;ky{$haV$($U7^Q< +m-qn->Ml2wGc1kazd WHC+/.?>?_?>a1>|z?cGئM2ǣy(c 7ɝnmk`wT)yC6%K8nxǵh]zTo~tf>d^$Ѳ<`7B Rc'5 z= #*c䍉9$,+ۭ ^H,]颲 yXNb+>ɻ%{^ +'*3%|.jw{фU+GN\%(0r =lGǁ$UkI;s{&zY|at?X[{oiH0o7kѼv ])v R>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7808 0 obj <> endobj 7809 0 obj <> endobj 7810 0 obj <> endobj 7811 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7812 0 obj <>stream +hZI#W(Q wA@fIb౒ =tKv/3-?=o#%'ƠG|\>wu8{l2js=JÿlL]*{~lim|e 3i Z# {xCfc0]ƞ۵<ReKCjG_7 VrdLۨRk`Ydx:tf,2R9w !D 9$Lb%Y CDQƓJK2MIF``UT·hhZ{f%ֱW8ziiIׯm3X/JCSmfemUӫκ|ʹWz&VvKpB;y⮱ +.r-;8:''(^4a;JL^GХ^=Óz|T߾*iǵy貎W +\[-fhqp}89n۽z_yju:{CIG < +mxlBR{-B Һ[.;3d}g@򥱝CMH\@#@|>9Hs:ɦ.0]c [%}gM$G.:h@8HjA~|.0/$ʵs<ҝA`%ԷG,E~N9(Mzߵf` νǩvdE\ 䬐@dː'"Ԃ4 +{lT4DPH 8c3r" +LS%{bkݴw}Hd],ʋѠ@'-F8LNWԼzHPt}-|#z%LU^Úu֠4rGdҊi4<&.'ѯ' ?a!}D]Ml!|P9&59}vh + Oj?esV4עr:A| 0O@{ R 66y;S``Oq \Q@&q:&Ih!w:-G%G"D$J7;m6R,:fnUYI'Dր*{xl-đ4tCM\Qdex2DX(Cjhrz(=*JEdO쑉 ޢAB XDžׄa[ K;!gC`>40P' ~dT4"+M(Z5UlO2,u0E*p+DjP ʃ[d.+%2a]L +keOa7fuW|Dmw:(URe5[8MiɓJ8B.Xvm[D"͙x4[4TTOhRw_l,M IgN6u)36SqOU p_CShg?aKv?Tzʲ,Sخv^"V'?0l@6 HeHKp38> ^,.7  |ac\2Lĕ4L~G3sl0a4\qQ=}~R8nc<_apC\p4>uJm'.J'udfhnX20FD/:8 ~ 97 @~@֙\r5@ip'ZRIֽ GXmxPwϋ09bJOj7@Y-q+y=7H,M4a.χb|EQ%|}P㠎q`Y?XrDeJfۯ xCE2vs}U+Eݞ>nSǦG= #X_ KBac +k'NܤlσOUMsw+l۟_rfrc:<"c -Ko(WdƙJ1$8q5xYZM&,Npcn2iWAh^P !\rOU %cQx9UZMG*Nѥ +ã "jiioJYԬWmVe +i)4P⟘T@L +{+ة؂ o#Vq Wr < vV'^cv aրo3wA~Jk1;cۭ_eك TG^V.Т!Ra =a.G;l_ |n>wU*D?^.{^_:>WßW_愾}\yw̝u1-=!Rw?fg3-o#ȳAt8KuO aԴueA a,v$֎.8x-+8/ƚOV"33cFg;ͫ_I(O<0ar9IzJωӳ&= ch"2WoyJϹ^@WV4[9vr-5}XjOi5^bUME t%i̤mˡThJre4>Gե6Af7t%|&t„YB;b sQxg\y(ޕ_~ZFZ7ziݿ +L;/b&y_/q,…cPBTn T Ӿ0@i.vuA? 'vS_{e9<T;3 d($?zE뎠,鼗_D-7)p + + %ٛ+/#K&|;Cه0'3!`r!$mzj8/ެX"6'Bkja:wRɗD+4ITBtuQ>/?ЅϟZ^'%.ܢrv]{Hk]9uxҀ6 /'8^*w\ ._>>IM8}ԕ#ܥAx7L^cJ֤.VVJ/ דbiអ>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7814 0 obj <> endobj 7815 0 obj <> endobj 7816 0 obj <> endobj 7817 0 obj <> endobj 7818 0 obj <> endobj 7819 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7820 0 obj <>stream +h[KǑϯ#iLQS|>>f K|g㝙=( İ+ߑ_DV?_֖ C.K)q u 7LJuۂ_PxPۖܶ+6{Z43TF/ t՞8{=,Ο' M{ca"dH\Lb'j~r2a38ĻL]alɭL.<_?.e| rv"t"Bm+ldwZqM]v~Jk5Vz⒫9O!ڵ_a 7.: đכAOb/5.B.û/?{bY~鶈*CO6wX \[/')a3?w_w__`w{`H|ly +A ( $"D 5LAʁʁ~u)IBR\ז+tv-{5.T\1Ra,o 8/k05f5>`Nέo]T.ЪnZ`1!;t5#Ria<u^S䂣iUa(?g#j8 ]xQ QTGp8 #t&t +(9y=is lXqHV:FPa' uASƎ~bQ_tpiw2. +"Z\IPR>iPsR-LGGzu")L~!Ņ9o\\d崱tвVP78NlDvpHO'i &$`;<ֳ׋]M$ 2K_tBYQ%9#2i,/Mťe|ϱS䗣!@=` g.8Xu2H[}r`5і꾝L6B / &_/02ǃ`? +;.%$ +X)dv57!ʛF]i1ãm,Ymi cbUeW*EOɴpTBZ̲k"R (.2%QW MHk3ŕM]Fie98{XenStD^nMz"ʁY3^'t |0hm̺(bhsb. S_50 L2o0iydA6PEm(bEH7 ɏO v +0r_;&ܳaH#DZc1}^patA1byF@DfoS{$xOUYHNmV} `p1 ȝt%}+[ax;/SI0+l``25F2(M!s؝֜$D>ڄ/pFHN')I3+ލc^yc\8߿f(?[CJbo!0Qϣu7D:`dSEV5OGpbѧ9}#pk୹}ܔ0yps70;i&F|{Aͼkðe6|7S J*p艦<W*?@iʮi!59*JRIn5V%r8ܝ<_ṭvMcB"L\)& åO*ыGn""Ӕą\4:jz΢ztFDqByFt݋CVlV xDp4`nFs.ESlN|f,`h P+6T@QaH4t`a-c2L b UΉ9A"=6`Zx;&la%R Xk -{_fI 9]T~:{vs^'iVJSclE%MkQ̠7 +S<=I᭬%7K:fGzwNJ +,ſCxMR{tҀmttn ư82RsWt,7"l^s 8Zw)͒f;u 64Ԇtt:$e3GK>x &16dtuvQ_l_: 2QP@#x^mmDGߘs\<ː,埫AB ^Rwr/%(VJ2|7x9W%}UH3{4gFe` +MR=Q2s/i(еѫ_R.S?`̄Qw^M0qJN|Q%<׉f=.O +U2fۈyB#ZY=^S5W0EaE1uˇ 0uLO -] &$Fl QVɨcNmXKVSoONC5B 'z^dnxq.f'~b/GM56L%.)6g2"[-g4ՠa񛀽8mlH*حVy{%@>Kէ0^sYc66ܳ>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7822 0 obj <> endobj 7823 0 obj <> endobj 7824 0 obj <> endobj 7825 0 obj <> endobj 7826 0 obj <> endobj 7827 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7828 0 obj <>stream +hޜn#h=]{u@c'Hp" ;"= +Qt[5b%`eG%E&,wBj`36 xi7_?tx:u>_}'0I3y|1+<a2eXׇo?<<^?<ۗ8_q!F4ex$ qҰ駛0ux1H==8e y<6;Nq g2qt46X)2LlgN!l@lx'HCD^GbVq#7|39!_AGS$8 .GÜ +ƄBC2 +5 EYyaiH44L-aׂeް~F^;B AftEjs8eHch̛=/YB2ΉVmYk똄kT D9B +˱@><R [0_x-r$*|Ð7QZÏL_8x2Jy__Xv̷w5`{0o_jo_}?aE7jnbEkJl\[(@? \:\%RFGr +WyDŽ O_W9vxy|x@޽#+ÞoWnz/+0$F4EGTO "D &p +>p(y+' 14~]p'jtq8wGnV;:B&2N2|I cbz@N)=fM,F!,̒* ,m\ʵ _.  ʷü_FR7~ KFb%jc/Y:#C7F]NH3e:W0&(a ֧^8X@Uz:.<j=lHK(ʽFT EZQh#tm_s5+pÄoTE6]. tZ+jc$'+`zju[,A޵jL6r?P mq>}6^b˴& Qm١1S4ݲ#L&Qe &qrMʚRۦ-=.ehB\JC;^%&X#8^~9j2Vӹw.ZQjRϥ*/򨅉1oN*CK ~f8DG[Ԭ!7duJX|3-[*ݨM'yNPPJN7lU";w^Chz}lu.a {!<%{j>j>M$l53`ZmyiGƆQU%0k[Xl m/u(3*ZI/k,R{ܡ],T1jGdN}ϧb$Ʀ_dii 2A$3n.;%[GEm[(Y5¸2FhcY,c'B1祠,w`AD{nHP{]oDVZ8ZDQfnoPIdOfaIEYA0WzLPٍQM'YF[D W-"_]Xeᇠ2M[BKPZMqY#wsN뭻}s ǫAP׵0_1OKP&PUF8x<'b bZ%&X]E}J[L +,]Sa_xJPnbc։Rmϖ j#)XueO]-~7OsٮFZRsV:pFˠ+iWyVxy> ܛK&A\j6Pitj,YcJe\^iY0WF5 ,~ +V8Sq`1߃x{O9AnZ3n~1/ZEfO;q ל T1h\/y8nR5-,~NgZM:3V\Dlj{P~iUGdAyM@޺[RCeGIh|+K֛H#S.} THMνت(Ulw Z;EnPƒZ^"b9bryFT=Cb!GBү44&չDMĚ,v]8/U&nŜvzYIJ$Y +MP'UeyQ*^E'/#m% ɻ.KTz'ֵ:Y2 +wɵV9<)oΚ/z b]3>WI5&Y4ﳡ:0Mh_\}_K2x}f9,$=$cN>4!+R1$ћ^7Ї)YSY@&f`u"v%,nN(rWeeڨn),FkoQoBw AMN%ՠU:H]W$kfermq J`} y*_XI4fbvԚzn>d=sHĬ"0fӢ,jcl\mpCdK:, _bRO8ds$}/b!-txYDG=W?vw +10c:+i,q$b9'62K_``y,mD䎶(BwY*V*Ve +A:w.Td5rEL8K3g噭pˀy "P=-h 4nDfA%za07CKjVspIn#m>˺ Oq2T'Fpz{r@kBѺ0=GCT. U].P~l 0'Az +endstream endobj 7829 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7830 0 obj <> endobj 7831 0 obj <> endobj 7832 0 obj <> endobj 7833 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7834 0 obj <>stream +h[I%qׯcܙ< J{U^FWt ̬IN_,_c?}xNfz|[5N WiqJ./nz|L?AwP̲ ~W͗0h2S^`V{ P2XWԳ X'.q3VxOS*dh0e冧vLm{`lZgMPicvySٺu]٧uǧ;lΫ + ]!]޺pzwY.ܙ?8]NaƖ)ݰdr vA޹_ң|Ų s:`r |zW)srZۗO?}^[:}ݷwo'i_Xd0rfj5v:Q4C^O~xO?ݦ0o?i՛z}>-q@rf +6}m;V?ջQղe;|nӼ%?//o6g#Ku8&R}j,QK9]ɦyY09ŹV5'RNp1s7ZUb@òq8sنo;Bfuf.xsFѮy ʙf`UVz@w)BoY?0Y0߯󺄩=jPLR ++Ի;5ݹ01 (ԁP.'(. JRJpl)Z)ע)Ă;I=R񮯨T3* .7]n [#lT LRHJ{?URß.˟Ip/DWWhi_&iļWC-j1Fj-j8[D `hC3ouA\[|*fvTҕZc2vV] +R9j!dWVr][JPnp7듟"P_HR +&Fu?['?[l.e%RAEG}PSPWU0pP+~RW|\ R4盪^ )]8 wmwyxV ~\.EG9BKتXu(wxr>fJ7e% İRxBE'BFLcip- I\4&AxNhoB+L>_U uD1\S1leEDIB7c7ܐbHrYqPcjms( FWX`Ȉ6^; 45׀cMY[fb+5:E/K(WMU>_fFl/*kJwgx!aT=Ð-+ GbȑKD[!hmGڼ\_d<0'zۿL4z( *Lb7%R^-Nؑ&T[_-L=|" +RF \SDk-FxCI ^[q67==J.Ub 7zq%>)\r +\(xAh![hKZ#_~(au|1ޘ=`7=i۴^~gB+S8'QŬ9hd:bQT(J'E)S ,)Sߣ< +րUNU\o6Ӄs~<+C69YiyV>IP =nwЭfۜJpNr81~_/Z.Ac vɔR S݌W j}.FQ&Du!UTwi j0Ф{J'swaV ?LP/ צ|\zoڣz% Dxg)|`YW5Tڹ\yV#5u!tԯSPЕor\ߜɞzt;tB+RT'nxVY!cIX5q'6HŊkߡO2A qS]xE-dh[90`pA~fZ1ͪ٦e" uyVzsfoS +g{SvOHxbZI<կ +9굒q崻rAS'ݲLA5pqf1Bѭ2vމP+j5zv|m/lҬb-'5ql\kwDqY( ;M}-MiX8"- Y'Z;^uR2L6?Hd fyq ڞFP.,[TdpCZ <,Eay[-K5do_/(7zQ108%lz'~ lfoxC^6$>t{HoiБͶڪ4d h(r4ִag=H_+w/mmv@S8y ^y牱[% e2ΨsTj\r%c(q_e]{l(<>lOQ[N9GIQIHK ]xmd^ +eŔH=M cr43f|8Vɚz$퉛L@˕ht$ a4vWyLy|EfPU֯ X Nw'b2Y튨fS"h#lMb+dfَV\Ert\.TRq, Uk oD9#){~C*imdgEi.?.7uovLsUr)3 "[{1uCDK H~qx8Jz'Ҳ|1!8j,Qehylİ4 w菵fD@F확U^W>?PKrsfEܷC iP?J Ԕ<\ѹ uYoKB_-P).W'4QFKGU>I;SNq + pL>$M%(&|`qơs93*~Ok;$e #`~Yv-!qOZXaI'ׅca;aR߉eC (DCvIv 13SC<߫b:>wekf_JE4-W6 +Fth%E.*=3K 'Y +\-ꓠqB) ujoZ5ܡ1MG }5p2^9]huASAxgt +4RȜUel훈Lg + +UK&nQF;IA(2M2Wze:JD.壑i]$9+#VB^B'fEI:XA2,BŬx gm#{SnegTe٨o Fg{?t/lh1:H %|آM|(LŨgUQ82Y{T|wl'QAny e:gk4vJP0ʼ9/X }HC8 z>HMfŋS*Çq*hU:[<+_*%-T}e!ueӥ!/\T9HC|q uUK1&֒r9v!\_A'ZJ] Y_] +W+޽S l2my|W/pѿp-ܟG#r־nOLX|Lv~C n0X:.N1zIq̌$(o{5.^@;<?%ƚ?Vj8{yB5G>vV~%)ZA}u'd:w[Ϸ~nQ.︝I5Y>ixKUۇkٜ[% +%L}ähiLPmN&=aq"L>#r\"~Q:]ÞGgЕ=IP< !31;ξ.eyfOT{ޖxdx,;+ӿM~?}ŻsG-m8ϊ+_xpzq{Th_і;pqeg/}t3#x؅:dҾa?}-ߟa+?8rҒ&N?tRtN :=NIo}ӗ=4'Gjr;pue:0"s~]:L!qqVKFv88lSy=}pW/P'LJk,Es{ᇇ7履X >MCD?b~(~QZ9=F țDS|J;>Kx.0qzizYs??l:=@t?먺k'?hn+v-k7+Gzݗ=N|>R?\g# +endstream endobj 7835 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7836 0 obj <> endobj 7837 0 obj <> endobj 7838 0 obj <> endobj 7839 0 obj <> endobj 7840 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7841 0 obj <>stream +hޜ[Ko$GrWԱilTFv$65&]c]qE@$%A7t3ю!hEdݿ>ݝpw3761aF'7=LǛ8Mw+~a\'LZaPk2&ja8cbFkjj?^+sdqHɏ.3@HpOFs`T )yvCb tP+R. $D˞\i ?l3=p(IX;LCӀw^  MgR1peoit>./v 3X/Bíd{wRanai|]vae;qLp܅v87ѵSרO .p-+8*'%P-YIf @I#ƬbJ5aZ(-Db~YѵJ1:9Nag#_Hxm$eƙL1QS(gZ9 =J?kwE߰woܨ5nDGAREfx6WdNt쟔U<Zjԩf#T4˰RtFfpp{]hľd@^ 0L;V>jvS+ +VX8ӮT4(^jɗJRSu,mm=4徛حu݆5L`LCјEESl=KY-w,= o{qK˖NhW$4IhgŽq pSɈbL,=;ohhҪҸ T)U¹lΗ^h +2IU$OO j24G +P=YB$b_ioۗTP% ,ya;: U]b@_Յq՗bx~Hs0p<Y0lM5ct3 sƆ4KzZuAj.B)UTC;\&zY{?Y$ V*a5-tK]umڒZ e:Td"'mzl+'BCZS$[Ns ӋՏJM'Yk%C;)3!8Q~-t˖T-JFo.g-kU]apJjM6d*$l@lgn6шjĢt mAЄZ!QZvhA҃ͪ'D^܂rX(zixGժJծ>չhR= ݫ'5ZFF$6'IY(ĔYV֌Y̡+ַ5 +p] ǕX0SkÓU +\Jă6WձunȘI (H+]}Ի{։C=2& +^]ѐie#ŪiO" iqH)Ǎ}LA1TDCU5^;t*1iL6_!aSuI`WJ+bێ"zLћ[&DB 1͍&5x#n8\֞Xݝ`V!c=}j *;Jߵ` LHoѰrcKT\r$ɛ$:se46ǒr>hjj}ЙxmD{M8 -'@. #ν5ZaؒAk4g$] x9 +.΂c+iBҵ `.yNuעe5$9j-A,KZ恓.[YBKSӒP\u˴G%Mkwm]{4^h&Cn+4d^":K=k+j3g#K=;S`:WQMV+xHc|7vP:JEvT v٘r_F4B{yN%!Nx~ب$}6FЄ6MpZ&9 Mt5שbS7x=syP56?A5_͜< }7KD6aRM?+x}W}l|pV6AeSoF5|)'>3I$rj1xD qo%/lBv1]wW,} )el9h[stnFSS8-Tw/54"\^Ƙ斸 4.*"!|X +P-wwhB[Fɩa`6_{X܅AUF>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7843 0 obj <> endobj 7844 0 obj <> endobj 7845 0 obj <> endobj 7846 0 obj <> endobj 7847 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7848 0 obj <>stream +h;nGz$ak23H¶r3"mZ2mVK7)3Å!k?us?_igO./rwT#[uys֫g][.7PxC{n ~44x Pz•~{p쵆oA*??HOꗁ&v +2 KץspN&ϓb'ZzB$lwmamYFR *yt_t G36:Slw&tvn̨IL?!^;,nH8^#HwkzSJk.!xәFoa '.a!t l7e%R78e`H; 2}O n\DuY4Մ:,\2l qMm2TCVSJ&`R&ܪMY +9˲'>| 4>_Xlgf?apws,mjU]A}|ުû~~0ۼ[ݯ64zK2>@Vs AOs՟\#QgߩJnP-}q#[Bri7sq7WB)ng@țyG8_0<ba>٥8/@갽BEv??NpApA=;Cz @]oW=$t3n KZn޷i eQ{?uV0%fƔ|>3 /gzK@=gA͌&?.3 d {@AyhZqUw,*4j +ś9`nz Fbs_PxnaaMWTI(>xC`XG_)V俬) +UݕaUWEM Zzk-V6! mzG n . F"}dlS43`k.d-)[hߌ%](# ,YMXcV:Osffc!dRx6Ac9ch|5}:$H-`6y}^ߵGoX,U%FdK[ߜB΢0(82t%GWLwiݟ5./nt$,MS\bOLIԱͼDE77|H\X7,] 2|ǑTcI׮Dm72n`(P +NQ" IE(69yBSzKn(A[:!] l"GtplyluqmID6u#wUfd9+٧ ?DZ1$ WGTulp_'7U[v[U5I*,`ꢀ[2\aC8Rr#}D"j://$ l +Ğ"ɖ8,}F vA!@¾Cp΄YJcUP\ρTf, -S1WNIIIvU8-l)6}<3kXfbUR/ Ӕ]#&G̓xA29]ҵ< #prK3yy|izٙ!@xAΣc.ofQhQ@;`>-&4MV~1nU\fAn13kCgq +]spWFr͖k^+IXyB!m۶#D *PC-0 +jp\xREN +nbY)T~y{;R|cbC}7suO ßOs<ө0֎yX(2a$M.u*kmP୻ rlҌĘ^g2ǯqVOc5֤DKV`&z5w_uHg;0Թ>5RFk.-bGi yC ɢX7q'cvz2& \  [ yGpU֣JU\wZY7A ~س>-{ 3B%𮆞|Tby*t[#[KqFC=D>UtazpJ4zԀqžmA(" &ѠިF +R`Y|^A!H؁ *L +Y͇I$-ATSuNIY'IZL$2Q,Q,L5mL>vGjfnt$#i996{JMn6P̗;2h3o([6, C7$" o˝%Z + +xb9SoTT[Vnh< C[r.Qf<"Sٴ˱+pCi"+3(%{e/*ΚQPRj+J^L *!|.욼n`䬄YNCoj깔rkeb]1ltTxyIƋ:NL3":D3 ՎejϔJ IX 8SP k|>ʏ*l5.Vq$%a 44 ZLJ|`.p'^oVqxuMps~۠SwrF:5mU(²l*9aތ;Q +DX@ۻWi4nmOC#2.g GP.T9IERkz_bʈ<6;M.f4!J/A|"3crYfɿ"F+v˒)?Xh5tDO+4F4DZj`s:2>RdzNCMˣy "ueL+}!hM~=JXNM蚯7,W/zxQa=mZYEoA뉚nEC5gr'*֧d'7媁wv|jT vԒsI+Wr[{&SnGl=̈́WIGStF%H]FϾg:M%{0Vsy֫upB;{Dr:ALZiF'\uΡro+X337# +A=镕H5WIݲv24$9kfA.;+ٹ}>[,ףNloP2IaY* 9obޑ{B +92-M&uB|z65)|!GaǼos+#hn?0a#u𢑞%[;lo~ w?(Y'wxy ۼ|qT.#`Xal#^Q +wPWvqy +[uz8{Nҭ1ņr3Dk~nNՊ^>2!|<b@UcmӍ*?qޟiOx)oLyU6YOR;^9?p HT.%VMX t'oI6;yXvh6DeLM+""~&cђN_8Wߊm;eZҳ %wܿhkj_qQثуGcR_C}l|]M>͂x}ʄYY]oai^?=Ymz7 >8i|y~sbɋ#("XPx/SRz E>*.ߡ?_| й^+@p#hҎ.nr _E''t.ͺ1FOzvxgڻsy*}l.b'aH]*?245tc46zzcM:`aZZLG:4ʗ/!F#,=Ρ[g\8,kŐI_;u}_cEX<Ӂ_7Nj[jqF磥[#غhj"үyv -=\f7GqHx<;_O>.k9A 82历A|(t*9? ۺ OlG^ص\1!Ӊńv8hYLTS-6BO=op[hg?+Cd. ]_llD1>2Lh McLУa{wR1p]I#ڳW} /c_8 /w$%&TԎL^_oVץDҁy𥰁bg9#~Ae–,MƤG=SebcQkԊ*ۅ5#w_LBDVvqa̸ـ%0x*@=VX/'la]_'0 ~3|bGI69 ==U~ x{f ql;9[06/::0>`a42 +endstream endobj 7849 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7850 0 obj <> endobj 7851 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv31154V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7852 0 obj <> endobj 7853 0 obj <> endobj 7854 0 obj <> endobj 7855 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7856 0 obj <>stream +h[[\~_qۃ㣻t +H`x;`Q]v<趓v%)NUӥ;ERGJ_?\=4.ʴe11Ne_ty{L6?]tˋeq-P 3i ZPPMnL{^m^,cTOHez+qJ.W`gmE% +$XʜkK#ܟ(~m9m {n Z?!nz*଑wKVE``Ud·hhJJ-l/ps04eegN <֕R٧Rtw8>c)v\8n8J^utk5bK\[T/M^If@Mlř ?}~zuMx_0뛉GuF-A +6C??zxݛݛts?~>Ny)}Z~ai3$iKշg̡teGeGez\X7{ %(yʴy6>DKá&Za 0}9X^bL6g-V3'lM5V5stpة}GdLa^/E JU|-*f8,0 %=[` 4Q~T„{P{11i:1"IbrP(!сH P;;OF:74ʸ< #(ECRX,qf0T4+OZՊ9$=r.VQPNlkk%7z6#%D.OS9 X !d뗉:kDh7rCӐhx0oI),Ϟd_p +O[ !N8[;v=y*̎'h` cGl+^Jy>'nvQa+P{t)vu`:!qÁi +;$@"{&!UlCe#dJ A)CLWaW2CƶDK[1\=ioe K:gA6)} Nqq,0?tl vF8aI+{B/\% ;)% +cn"_LC wFI% d"+$ C8êndȬTcmQaUafwքWk^Cqv`jcaYG^<? 46$Ķ(?ejc)O2RRmзEy7&%G˄XW}FQ%2dJ;YyU [8jӦ;FP, +=-h^|6}Wb"ar +`o|=E 34Fug"|gIh/NaS^VV*n=kAǬ}P"M jJZDص_K71#}%ci#CdôEE:~-CY*vaxxKu5K:6#~'j[ aAT ;BtHbmƑ[C֫+>J#CG_oVgqD*(A)sĜڹ w$8?o'V2ȯ0WA_Z_ʠ/xv}Ta$E#2n?{#:U!1ڴr֙:ֈ}z%_ àQtUf"! ٚWc99`Y<}nXxeSox2q:l!ĩZDJouB U$l|va LN;AؼohVdv+3[:9? ,1/1dAD#,I +^*_-'0d% Qsk']s!ŇݐWcWBуI_m%'9}pA`Mkу.$jjF˕)cj34c\5@^:@](EP'}9˶ޠ6*Ik;l͆wEިtI1]@>+y44K?l0v*x/.ёiG%jT}hS]3DDBj#S +d|`wвryߧMbX<ڡzy%@8yl`Fk0B%%1$a[Q&5֑ + J?7L1mq2zvs.6iY59l?DZ5Ҏ1֫|dr:# fh'> !W1B'bnЮF=N;a(%U:[y$Ʀ5 fi7qDiVGwZ +'5tEAG+y/%.N3[q9|TR99qNnq +gH%wW( 8)8}$.H ^t1n<|F;Dp4"GM1)}M_tԹfC}_8CayNFT5Wvy:knX{vS|s65a: #ƕ9YzPb2ߋ'?\%y6'xu/,~>30)L= >>}AT'  +@? p%[?|Ov:zsG,I IL@I3wC>O7x ּ my`smC>[dկI:>}AKDNjۣ¦OZ%qqҁ/Ob:nKb:i1}<誃>~q]}JSB=>[ϰx; 0Չ#QGP %h؛+`&1aHM>Y}} s ñڞ~;e8 "xFg.)֣?K~}<ѴP=y"B38hG/' 6RoOP:L_з@Oﮩ?DB?ݻwë[G_ϓ57wt`\ߚa@o@N9P89|w뵳 ;ͅJ KM܀S^ _$X?i?[҇wR9h`YNѻٔlv.`Ϛ-6J< Ҕ8`|o?W8q,QfYxBnd} +RWҲ:Eu+}Ľ Ёb궩_CgDgE!Wxvsrď}/\}3.8Lx1Xpe됓tg!|D'`vOg,5kf`"FR+'={ݛw_~w> M9sa1>Zokv_!/';w#z7ȠOƯ²_W-]?)+vwS[@oSf¯ǽ}LS EnA1pPOb¯ |||D?aɥD68XJÄYXR8)U6'ck>wr@Okl +endstream endobj 7857 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7858 0 obj <> endobj 7859 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv31155V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7860 0 obj <> endobj 7861 0 obj <> endobj 7862 0 obj <> endobj 7863 0 obj <> endobj 7864 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7865 0 obj <>stream +h[K$㌁II\v>>t # dx̬i1;^d}?/?>_x{hkK.K)q u wuۂ_PxoPۖܶ+|6:hHVP26•=q8z*T&844]2M -$C%1:)v֫\NN&1mu=L`P +cKnf&tAq*~^_?>7puY}h-k,OkS;Љ +Y,⚨8ԙ{F/]NiMXvW+=s՜'FvW#l$eWgk^ f7>_j[k\|\s_}w}HiW]d"4=?jrniVow~y_/-/?^a (uaT\ЉBY>K9P9Pٯɇ5an'-W\W3p-{5.T\1Ra,o 8/k05f5>`{'e*{hU- N=WnfY*M|"ya}k\pT@V0U^=3|uP>zJ4驥mgW0Mk҂{AϨLjՠX"ZuHwS!JAj 2rTPj@Ų`5lLEbESxS1giE uH6ڊ؃f!ѱ~Fa 3U^iilmU"W"g%=`bQjӠI`$jM)]BgQlU@OoTi=i}W9o$۶/TR29apcd kS @ infg7 'rEqn>% QET,]G^U@"lP*h5 6&P]15_e /|: 8f2Ywg~~JU"E{?!ߩٓ=}s6.+Ɖ:Hxڙ-Ϊ%EoT +2R̚w = @;5>#'wpȮpKǿ>Щ/B״O+EDh3wI r#GЕ̾jrDί87ꞞhCNF{l-C Eƕ'ɜjLAS!0]h`MUz%hh2Ur<2|[;Ca5.Mgz 8"lS|m % +$ƁvnP^z9.^OZzv#qMSUL:n gc8qč[+%3VeM.,+޿s*I:BKD`npmo#1~6 qI#H5#qesDD~p~<~wkׅn8ܠتIFIGF4̦bX1t4Lk3yV {-3J)mt!6Be|p $c C>z->}-\gp#TMR"Y/c#gjj2ϻ& fBo2,p\~HLaš OT`P ޲$'iK"#^͟'Yc0&X1uqzÚ6+t)!Vw(3e%ReM6F T| ߈W1IeG6LqyyF.tf!C؁jJ"~]=s&Lq`)i&M6ἇ2MBf8%L88!{eOvelvXU%L.Ve"K߮"F8Sěμ΄D3+K|lI`L;Wc>ÒoPPi3nnaʴ\/L7k#6lz:߶Kp'W1A_@UoD"@ߕ> grafd') t݇9][h$K7=ɾ۸oѪs` BP#oTݣ`xΒ[waGKpSm!JVX8,]T(ˮtpKh/zm\Vڥ+ItywMs` 1gou]Qivj2j|qU%;& yn*1IS&hŶ l0Gntµ!a*_Z{n{wì{0IB8{:&oy>9-<7ǫr8OYwQ r%4m˦5^C]e`?-t~'MkxՍ2պӗwtŇlӅݢAȹ|y*M]%L]¨"Y -Ѓ/}'Tqt߀Sy"0]73;y#Kͤ1u#Й,M] +j\`Ք:&lzM\zgM<̞GY;bH7MpEPde 1c= ^8 G"ξ)T-'ۨF ͢Uaol]Q:5Op<7y +c}}5/8Y%'N~7rʖӝRڃ~kexgo1pٌ,Uw_ +«|%`W.Axҍ|uk|yn)27 y8?4 r&.)?C,hOm;L$,]g@Nܜ*9NwwrF˼X2 ,+?GaR} fPf~T ue ړGrZ61=_*wds3$Bj q)*Y+R&[,Z}t/۳2#n.,THKBpyd=#o4zVi]2yxq >}wz +s<}s24&ŕMIo}:5=ٽֽd-x#ނgE][5$|n!xqǟZj/щ,/ w/3yOx,:T` Gb41D!A%"Ӳ]/YD'OvspTm![>'/`bI'g@4 Kl28L]=d 2Z.t +*[.ME娢N7dss.)ֈ7}1xi `OkC*G[v 'yJ *;5ͭa+v S{jYBXDw&QM +endstream endobj 7866 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7867 0 obj <> endobj 7868 0 obj <> endobj 7869 0 obj <> endobj 7870 0 obj <> endobj 7871 0 obj <> endobj 7872 0 obj <> endobj 7873 0 obj <> endobj 7874 0 obj <> endobj 7875 0 obj <> endobj 7876 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7877 0 obj <>stream +hޜ[Y$q~_Q="x!2 q ?P~nNڃ]Q鎈. ;UyFQG7|Ãp[ >1a01nqquW~ 㧧_>=O07p '%:"t,S>a ؼp~O4%$;njjícm8Np pbqʞÓTb;j;];&xSsɗqa}:3'.pscw.Ъnb@A8ù3 ۏ,3MY0҄TvS G <G?:/FGC9gd1p2sxonf X.CWW`ct@O 6eZQZ`{u,BkPtH+X 38LU"px.\[antKA LQ~YJK|Xi(~'XSgMp߼fDxMq)L_o &7]e\ܯH4{'bAU3W!PveXl+^J~Rd>D,0R|#['EӬJh5!`"(1k +D:73*mTwȪ17YYJfۓgi` Z+YPk0>c`(Y}1Ȭq=&HBiQ5.@|1ycar`BqJj%,Tb\#G}` '݀B_E /R,AT¨ߌ]iʫ))ĖnHn +urݚxҌ&1M?olT̘ * 9Q5G{nI#hlt6ULn|0 xvMMŪjU[QBJ4M,5S4ʃ&ίluC@iCHk'C\kHBy òUp {\qYo,k0K~\?Xﲕmh1G]C9̯PTJo"\ε $QAju}*vHP.VY^%#^ m8ok/6늄 + }Ɉ8A^+n(*:VH7mA~HE\{(+6$鼨fuqV_L{ A鈩bZ +EAeڣۃ!7Y,}GD"$)h2:EVDo*u;n@dIK$A)QxzjŮv`<`UP3W@RC7{wDnc }-yvҬ'9&|,.zyx9փ^6~S;U3^8=S*pyVva֝uUPc^%8vܻ](0a՗B-X_YƟApp{nsl*uH7*RJ,6I gj0IwȰx qQ;; YehKS]d94uZjs;c']{$/,7Ҵ6-AJd]q]I|msUlPT|r5`".Bȶ5D<"9fEJcZ26<)L٫hN5[mSٰlp2Wxl]6B-qA7VS G0zJ%O8`gU[sPJMv܅ ]1-8wa^ v #YN/Jp[x:N`p/-QG?wjէ*Щ;(g'lCm &mqNW qsߧ؈x\vvEaG1F,lCw=1sՎRk~Q@BbP_Lk P-h EiJkףx dY]8,+ FlY ++4)~K!(v'79,TĖI)xs2yf94EsQ\h۶t^d6 {T[b@JnhZlS(fə@='4zCFْz6ޔ9"lGk6WQTbb.B8:"XqCy·hF (EU2}rk8iUDܖx뤜"IMKԴ;hk˩$pc@-BP]4h4JrQ㋐^pQ\[Wt;ReJ"KQ+{۹[h"~ouBnnA2j&%VZNh9 Ufrwaf9Cv7t+Z(9H=^ ]lH2bAg,M74ٻ\5r[O`5Ns +N HpvZW3 ;y4Ձ&glO_>Xl ZQHU aC1IC.hzD{y {Fe6~P ei5Y|.܂/ۢҹPkћoAR@+Vv1lRn|00t>l +HVYVeܿO"2|U(*,ʂ5*zX*}ƺ gV$v|(usuw}(03|,TEK2Y+~k=YEsH@ _ZI ou݃S3杶lYP&(1HXQz`ذoy!yٖb ug[4fЍNV;7WZjWT@5rΰQiז%'d8BptdrU =vT^ 7aV:Vm٠]r֋ޑ6S +otV6ߌPbbБU븞&AK^h@)b0:_]!zgЩ06w`$.v]p+,Ka }tx]۸ɕ+Y+?x[.^ŸOhvw @a t ?=c/&w]70 Gj8eG q:='Z~)U_W_e8#vpԮ>9=}>k/3_oenƳDOo}6\.ַq=֝>5rkSiiN :(^ע9et0˶(I͙"sr{}};gCFqran\'#gH7_##<yD~`B8W^r7tz`w|O>=0'#}?? /ح჉[pb^ 0l + +endstream endobj 7878 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7879 0 obj <> endobj 7880 0 obj <> endobj 7881 0 obj <> endobj 7882 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7883 0 obj <>stream +hZKoWQV?_FEk IcE{PҮH{~pmC BbWFՕZ\%PxIW3%ϤRֈ%?forZ)Z;;^81܅I),)n<mN_;̼]1źXDh^pA2}W:ͦ<)/mgwS 6*Zbm):耿\8j=+#tؔRa5{7v(8L7^L 8l\2O6L_HY{ilB蝑wުXNC<#<Z s@^=`nϷ("&I4eN4w,\R+b.KI#i mJ0F^ma}={_nXnpl> +ʋ a΀9*BQ%6bSiii#s+ eI5$&'b!fZk=jL+_dMbKcSj{UcN0p2him檥3I q,1C$/5$VKoR;Y:*IUm- ԿASszDmȴ,#;*p{62)'G۱3g327JHdJK٤ФE/^煠| `$P^g* _Y˴V{q3YY tHaڎM#{Bۑ첿ܺ0٢CMLXpVY$ѴmzתV<{aW˺AuD5v['ǩ#Lz_GCu e S +6TdXp #.>2ݜ˖FZ]l꘦dbL2hSr.t yԴʤ{t8BgrDۆϔcK}u??34D؇5[T3-*ș:|.mEMnfa~ .LMJ4iլ<^Ž:ׅLyr6;4c [vmnsSOz(R\#0'][F[kVY=  WLq̰J D +:쁈1 \#5i T='VOm @\݆p9GÈbW\0OB7Bϛ˿caBZ!x%o C}gNMN+=Gdo5}Yo))n`G@aأzgvY5cJ5НO@]d5tg,cIdlM4- ҝfzvkGC=&|#' K@2c}. ?Za3pπ+joz:_!P{BH(33n;\lWBE\?FX|EYo͟O_m]펃&.(F˅G!Kt+PT?ӳR .uu9NجrTq„vVb{ޏkbuP4spW]Ymj~sp5Ld+AV?'=5<'b!5 +C!4[D}8qԇ|6xq<=N2>'bSEm!`z")l艘60X6yIjġEu:vVK2@7?GMk@NND^V]D?!:!4հTU\1 :7- @;a@8'7vF6}=,ns>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7885 0 obj <> endobj 7886 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv31156V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7887 0 obj <> endobj 7888 0 obj <> endobj 7889 0 obj <> endobj 7890 0 obj <> endobj 7891 0 obj <> endobj 7892 0 obj <> endobj 7893 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7894 0 obj <>stream +h;n\ǑH`.Aq[&hfJ󸟾UU3CJlN~>~L?|t}(dcc2{2pz_/ެonIU-pv(mfer f.8fcf?\[,]a^%Vm㔒]P"#0u + Xʜpk`J!<ЀMBYPӑ``TvSw%c= ,x"p?DKWPs^ qyc?`hJ@N <֕R٧Rt8\080{<sS/ú H1% "BID&l$3O6Lhia^ٷϭ e®4dzҕ%ك)i-^<~xOw?߾MK;X#fAHuXeO!p{e,W% l(&yCOH'BlGGmah {p=ĺÝlچ&S ɭ [3'lM5N5st0psD2)fizKVP<_ ːӳO mA'O%L(9 ہ}׳1Hpdױx4܄Fqx Xjy(A/ȼFPGЊZ)uյ6 (qa04H+`OڄՎ9$ 8 CPhڶu4֖~MIHW~"JOJy`_愎\C2Č_L5L"y Q3FE4O0`c4a7Up`~AZ;B Ffv}Gm]':J +r;'*вkkU H9 +U/>)< [R ]76vysw Ά&O-Ah$:He'̑ +E)lSxbC u{~5u=kE[EᄹS| ` ٴhli-&`ZUX05@Z%u%ԯ55}S*p ނ8Q*_/q&pC ~LBǁP!rD$N:5 _Сˀ@6$0D N]t>8eЩpW%S)QV %;X2B+IE$ɨ3 R 8w"b*e["gmWMi6ʊ@mQ" oK^89Ewwsclr Q 3ϻ.E{`h%l@|̢"$$$Պ8Mv{[20 .4 M6"$.V7w8qK΁vP8Su,B/w̭dC vݤ ԉ/ +}e A @ . +B]K$T_lCB0\h81d+sK3@LI4=8$f>dJzY~B)챉dʮ:gaٝxD!ڂ=[uv'Rm V5U8톼3:iNO|4.TmcY]fCdy&}[C~T}1g.7mL˦ +iAܞl qThuBN`bFsR%n .'1b=M2Ub *?oDZgNXb!#;WDY9 S[  ľwZmH,3Ú!nY'k42g어._qkr4*zj`T;!&vcFZC?|EvfT*S6j,GV/ +!h_K,nC8ei;koY3-,97c>Wc,MT!6vϜ&; 6x)_(8: i +Jc!vzx/툃q eS1֟ >A%|#?7#٦vIF-vl*EV]'$iJh"$ q8ey |;; @ykg4jcٛeO?ޑ!YUEQa(8lZFlh)VFH[ }N v^IGqWEX}V5Jf6l0pNJOUf#ރ7Y0m|WJ&H5xR?ZhGK5lDfH0#yyn6'z2eƎACf>[xAq$TI8P/kk/GvسZ]nZ >rFTf, ]2&B,5ܧW:j+Uzy8&#Q'܎RQ`s:<$r-9 01,T<}y`>^Y[5ޓ#VOY Fbo=~+4/_lg>ǯ ]3(4bà ą> +PA1|9A_O~g@Ls +ӯ:^yFvÙ5++fw6i 2>i_+ŠAK-|gV{LHiu"k^"smS<=bt6nYT;-[VismÌťڹaiccA6|ʙ.O/3;E6"< dB<[[7߿_´ s* Tqߟq43dD ;rW:9F?ܰ q}W0ȃD 蝍Q /AV&BTREFOf1Xz @Hi{r.Ǐ +c0C:h,ŏ$d*<L~ uw׍rǖx ʑ8.TDpDɳLOi'sFtP>lPИ!Q.Tf&ңcV!qCFN^'bM>H 8IϷ~?L}?ݞ  )Bq#N#./$$wg\6g~A;=y_ y@Z| փۯ~f/z8z?=’'~NϞ:_W~nw!{}I>4@5KR'p/23皿Ӹn Hci +endstream endobj 7895 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7896 0 obj <> endobj 7897 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv31157V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7898 0 obj <> endobj 7899 0 obj <> endobj 7900 0 obj <> endobj 7901 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7902 0 obj <>stream +h[7%cE8$lƹ{G Yy%ٹWEv[<tHUzOWZ[ O&Fh1y;2_B&IY1(n FLfhL~I)r3<3K/dgU{0Ii5 H/#vNkV,$4 xd4XW$;!lbmdldƐ3c.xtDϋ_&|;ʈNBsŜXoUەua_^Veٍ%I#k" KOpZuiʎF0sia +2v6H3,ӁːHY&'LB + v2n#46h͋?0q!Lt:n3qENNKpg/u7ry\-nb&Vrl Kf񹨂X0!Yh ; NlMm[n[nҁ6JO0/']Tt@.C&R;Xnkmb*0(Km3tU5Ƥ-k-gFnmyU-Ep`AOt 3&FMjib &wA{PUL#YKU;7q}e`9e/HwA~ ȬlG$bЌ&:,;T\iB5ODv@BB N; \jkG613b,7YR.Vjf]Ӿ6E2ؕN-N{MhU6KVhl2QYH7z>m$ aSU %iVeL _uJۯ:yM\p**=$N(86)iC_ SnvaKrdxxGa`@ov_h%/`w9=%A}lлB5BPΌ9#W!e;eӊҬdNNquFi ÿNFP6@!y$Sd#w (mpa+vwt91z(N|'f +zwpJ~N(a)%؄aYڄAuq?{W*KFl*%)y }@BEeԇz_?SC7zәX: 'F{V0/hY;e#> ɖhu:03= 6  +R_5&JGQm5u@u@S@Y{: dxs4kvW\Bxa Bx)2|yvW~ρ5"׏wwL !*s*qkk2kdXC k ; fdEY -clF&cS8ZFx?N^@>[죷Wc11tCU:S =1W3XE'+1tܛ:Jr +%8#pjU:VZ6d\/U%/YZvLXEǔS![[Z1 $Et C6u]u詐RRfmgLb:ʷ7*_lW55m1qS7KS<b",:cYV+ 籬V@XE* =>cFͧ򡉚C(ڨs5d=5d=MzOPz2jzjeЄ=><̇LJ<OPz*<6Ԑ&d!ExMyZn\W de*I#xOZ';rXuvpxE 2y-c(WhP~Rѵ:w&mE):_@%sl;ݠu\xKxy?.~/?$ޣ{2LSӪKsN{sb=w3¡4$߽J|Xg79S{YMַ>C,Je7tJ1zM\_vAثg^?ac4"JtGyCCơ^llyY-ofޔ>|YƖ2fh8 jq95] cIݹ}'^+oWr$Tjf>)}ʸT ?/ϗ_?_faEy?8;7@g!Ơq~0T PNM ǂOg{E_ Tt@䶗š|ٕosw)ȡ+NWs;`K40;QVJ +endstream endobj 7903 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7904 0 obj <> endobj 7905 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv31158V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7906 0 obj <> endobj 7907 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv34709V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7908 0 obj <> endobj 7909 0 obj <> endobj 7910 0 obj <> endobj 7911 0 obj <> endobj 7912 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7913 0 obj <>stream +h[YsGr~ǯǁbY&‚ZZ A$8(o2\印ALWuYY_fU~xdw|;SuQ_e/49B[WK+@%ATaYGjy];*kܒK?GLo]"@r!Q "Ǵl/T]fDDY=/XW*j0giq]7Vmm5X ̬ڥ) jŭ}a Yu45~e),ap@c;F-=`e2HBu?2t1Ʈ7>l{j}ӝvOkH]]??΃*)T-/]J񲷠&t*@q: ^4٫.7WwݫׇJ;}o=04w꺬}Ew] -5)*Y~kC1Y(y@`ɂuN asB8Wی\X& oz&; %@7 (|.Lcmlum +<*zkr5M7{KVlDgd0e2: Ru>uDe(R[MTmv)cxW$i`l _&|ȳ0Z9H;zz'+s%+S7BPe+Kз&.|_Jz7H&ڈ)ΚN*Q>wlA흊hḾ$9L5]u+@]ɼ][%XH <,мaPjVQs2xdNB9gu9{:*24jjh.Cc 3֯d*`MiZ [A3ȟI®T53|O,i'S_gӭH3V OfAMEB|՟73AM' \€YUS66u92?lEI!V&ðN SZ[<;% >tVybȪ̺Ad ؔltE<.ˣ]|Z`e=(-(w!O^LF'1nZW9F[UDF=g 'R#rfpcqާ{es_8o[|}]w~'~s{qq]^ +p?QnS.~@C]l)J05?Ҵ>EOql GbzP9!o`@r1!3C,czey҉Eow݆n+~dVxw~ _$+R;gY[ ,qGɗH%5vNvUA*ovndB77pűdcՀe#|"'M-&[q = 62j)a"b}kp61~3md$j-9ZY` *ʼnM SVۺD2S4sMjIa`ɰ*#p}{EX wH [Tt6 DJL`@s*VvdҲiP(K' +ZL"Y|O[)8^.Z7Ryх5YWcT2Mbk~bq4xd۱oPJUM8heWǠnTc@1X7mlj̴_+d &~K*dt nk.1&LaVjInbϡWԖD 3-ojۗ]s dؽY YK?պZy"'ib˱rP-st!heOɛ؎^u)4A=6h~1-b(r{{BQ/xhhmu@Vv4( +IuϭGF?9.UfuaR:8(~j$/pL B =B;ܻg#ʤKKrxh҉9ʧ.!5UV(Y0 vh79ޢ<TIBҋ[ ټܐ\g NtT͋ݘ(íQh]W6,_q +FT46^/wuc}vt{*㑢KZ&؎~TsWDCU^ ]s7c t#(%9_}Kr?]I Ξ{ҐHZ VJ0nߡïe]2wvy>oOȧx2Q[/u>|AW^DaYq,LwO,8j냏{ڏn (Bi56G$&侈j_Ig5NE<,@.[K<]A΄N0NB ,;DJ F:Ik(Mw;ZQZ +HD+h4Uܧ0SQ-`6-~cUcy-i4K'U[`CJ(1#m0BT^T:}3Ţ՜0r5QGk?x ?P?ؖ\Nvm '[k,Bc|ikQ`.N%^vǧۑA2uim m'F$Tt(',Cs C\P]٬;nn )}{ES䋡Ovcj6tcf|n7(1Íqc\CNSC\1P15Di4OWR?O +$zz!)$tEt麨R\.ֺm{Ϩ"z`K`Ι 6plɀ|&{-L:X"d LVbf5Fjf,}䦫HaAsI.`C^R<^Ϥ/H˝>JF_O3!>c҇Iz-`P:}_@&QBP9LԎ[D2CTUjJ[k(%^mGmrM#}%4򎹆1{9jkq SrpXuI(J>Sr'פ}"hG\{Jڎ]w)aƑ;n);O;c3:qcg,+gd:fxOLG/T>,>YPr> > ΰa'J{**VmV}* +V} +V\(XƒXl(XYl(XunObC-ĪOeCbC4rm +4A +h^ E?j#P&;I<ImAy"!9, |nS)fҤA H3nq$}LKEC 8a`uߝ=&+#{D`CXOZɎ霣yM*ݎ}KqYՠvKMd5v$6-5֛MD8io%PoQI j9,c%6GoQ/( +U5bseed4!S6=O9C[7qX莓} ,3dX^G E7髅%tU_4nOemRsӼV5)gSG_Zi^. JS_4&Gs|?rqtwrsG` 3<\TA#(^OJ>hpC|=twKC,Kzg~q[}P0} tϻhӾc#}ᐴ>yjO6a%G?a h.]/_$;`I_}4};c_twⶻ8ޝܝt?\nǢna +͔݇t*L\5 x}oog7חvt4fe2K}Zo.Afʣ!RNO~t&/uO<0#  x '8q{[1k7v /;6eJ o)T.Yo6kl5&pm%@ELjF;A$K T҈SKNi,mPIr*L 20PE~:J@lHh/#zcl⍡3d󆾜&5op:}u]fBy +endstream endobj 7914 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7915 0 obj <> endobj 7916 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv34710V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7917 0 obj <> endobj 7918 0 obj <> endobj 7919 0 obj <> endobj 7920 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7921 0 obj <>stream +h[[s~nJ;܁S4bIrbTY~X.pWR<~n\3+RQ3w}s)^oO8y~q'N/w MCI/^t}XqS4C[fg3N⃵g]CɝǔiWe$MQxWt*|GT{ yZY1P4)t4u4Ql!3 1LTkL~Ȑ:p_ُ<|x :c3> ''Y;}O"YI~Yx@,nњ$8$ypZj2dpVujD^ƅD}2) 4%0} '&B".RHSϿڬޭwJ;'ɿ1F䙲7io=9ف6NEng|׷ͻn{Y~bj w}4g|vB + /Vw2Q}g,q۪ۚۚBEGt}xyQ08t8P)=44㶱FQA% )Ej3d蜉J C=[HyE)鸭Ue4`1 +tNY[u4}`Q|5ٝSI bɺS`-^%x#~++)ZAﻑU{+nLs,FZ MUn5òL%aP{& + $M+4ڲE S$fA&&;x +U;nM c}2-IDWZZ;dX( w{#xաz[Y)t&{/"ǢE喛寤ecXad ] +* S-!F&ե3m +nYnֲ'wid*u6}mE4ؤ:-hتUDj 4#EG&Q ޲S˒$T/_>fH~7 +h 00+S6˜pA6Ϡa]$HC^Np)OQL2T.a" N$C_1ʮ\s +Ю˭*L +'#n'5IR OKtfs6)RMRLbL;Rb渣 ryVF?T,gA)32)/H.BN%o~7YC.vj[u5LZ\4&Ã^Vmd?;bh? YzUSi.^9V˖0_ǜ@4U4\%ze`rXIX7L2VT]j@#tiןւNad,$&&d0~ ɫߵziHOHw~Fq>ֱ%KR)sƖTH@^t~*;i؍$3OCX}J沺ّ'G@'`:a5(qʁOFaAmD p- E}˔ʨBy +Q<r[?;|PUjLY12Uѓ 7sx=5K̕ x]qC̱c߿kmś廵m!Xb]sjΐ޿Y ) "S#{C<3oP.V\lvha/9Q;vٳ ϶ofd,1(/%r7ܵݬ)vފ-fs/V +n{Xk\9uYZ똖= }{Kj e- +s svkΖB8 +Xw:+%Ɓ]~<-8s$Mk"čm3'^-AfE(!T̤m@z}/w- `fܮYyNCv!.2S  +*$K\њ['|`}Mͩ77Y7sJ}ȇ{߁f:êg\3Ȉrn Sn6,ZK܋=kx.gi +[m披՛4~C!C_!WM^, X@RYM2-gr/|<]1Ib'Iviŕuk0zɆ̙'Ty v>";,+KՒY4#Z@Ṉ> +Wfuzs(u?s_a>=xcPMi3_D .a 3luLlbaԸ]LжwIw!F1Ǿ0Ͷ˛u5. ђ]ـ}LI$lliCOSu6a`zܲOCMsIt\KNg@0OKڼ f;^/u*K׮a"B&RK!![XV'-ѾIqa +] GaXZe0wm+ڗ?]X.dЮH~8؆-Ϛ]O-N iG_gxg>0eT҆sYd Y!IZs͡2KC5>O{]jݫpȮϸl1^aT\x , +]6Mo"R6iOm]6ڡFhn THŚBà^C~iѯ+#֭Rkt@zZh +$c̱#С:u.YU>ڵUZp/_FgZ&]Cp C{UZ#S +-i[,>-csS=,2b;Z,Pv4CӨ4) +h/-D9Gv8:'-Sm\b)*$B)ONM$NbaZϣ,Kףfzҧ'"el:)ˌ.UIRflZfGF>c;hkRK&R5NӈtPJ%5!q8]!ށ.ƧAѳ"}Ҩ>sY7}}Q.It{ Erszne0LPqo}7ERPAzn*;G7B~w|Aȓ_MtMAd:\t.R<g6$6|q.$;-#!R{KÏqu2Y"L3'ia^O*!-ŏR(.c{ZnW2E&e_rU&%X|'_^st2Cv;vi\5\b^k +S xLq `(dgd(TSk-%xHX RE1X UAIMBOz(ΞԜ̷FE-1 vwt5g*=P خ;O.kpk1T"qZ ȏ*aď!!:Fo1usU;XbL";~ RԄE־O9Yi0k!n:(q%jԟ|=&8~S,p +qA{*== - gfb~~(iQ,"G1u$ńQ  !g"lo!Mg4?>1U>1 p8PDbcA,=m'-ndC sl⃧ER|0vo?2=-11>4>ڟ%f&6~ }3A 2P bC`ehנ&R^x~mGZ]JϰwvCők&-kd2F!&c ~bJ_a +j`Vz`\69+>`V+[lGUV!U{y/eĺN5+'%#|iu%!|,JB>Ԅ>CB cP'$5!lф|( PCv'->>5!|JB9Ð|pSI!c>D?9kǂ=!x)4DH :Tj,4hTq Tn-7i-?xzR>䉲܁'VZ +?Ɩ&4; +9`F'*lƸ-/'hdҦis *,c[#ǚ|bDԅkB=zxĎyꧨ^8ň龭Z\krnju5V\S: +7cN}: `+gbVn;%/V мv.Fh[(wdMIdO/ţ허v^_k=l.i5$^mWRl٥/fۜW2Y˿NЩ !bKW/3ABqn\? PZe_ytG+< S=f~! +TtDz|{~.lt<$B]P +lޖB@ZE)Iu'G=tmӢd)rM-` ȀVxU(Ւ} n$#%])3NX=>]FFPjeDbn+j!u1Į{4K +endstream endobj 7922 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7923 0 obj <> endobj 7924 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv45359V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7925 0 obj <> endobj 7926 0 obj <> endobj 7927 0 obj <> endobj 7928 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7929 0 obj <>stream +hޤ[YoIr~篨Gp**fl~ "4(KR37tGdY]-<*2"2?_^x{ n}Z -eyX1) ᗫ8M.'hva?M!?W4zxflM GDhn>ܜy<1◠O<udm?#L$ 硔8G{Zit{"HJ^0$ xBy|,<]F|iO:qOrЫaɛkW<2KFgz%`:pT]xFoEz8N-H!8|8yL~LV𑙆$x{\Pò,˲Ka0c1Q +v:uݩk/'Xs=)8*AJ Ztp?,? xe~x>}tmx>y>7EFrZҀ3'P?[13i/s0bF*E|4K܄5Ut RԎ!V#<wu"qh #heW[\l xnpW X 3 ^<2qNE=몺xx+vL0z5 _AGSC4| ~u!^`4<h(~XSWMh^ }6O?Y%z t3zF:-g*ȑJ=.O9pPaF76z*OT6|HQ(t]߅r:3ijg<cpjplL!pn },h +6 + +_04(wC!1ww9ύ*b=Χy-`ZDpBpBV =Kh{7~#c+xFɼ6+pá'4ҊL̓|ѐ_fv"e_nERVrdԬJmYڃIE&uYՉ8X:u[e5)ލTv0ʳ&r8~o[\$ v&=B)j +4{ +R _r =}.x $pן/#}_nv s_t鎾ux>ݠ:]HM~|y\_0ژֵ^^pA h?toQ/?zDpj` 9 Hrzۀ4_ex{ @gghX܏<ãv8-d{U% xw|"kEFlO\{pk3=~ێuwܭ$;0 Au#ur>>p/݀+hwJn(\1?oN8!%$kB,ʈ 8~e3⪊R: ^4h-s3:zZui4Phȑx :]la7}Bcbl+ 6g3w8xV'4)hK z$PTUCl$Rܑ}G\j]0xU >.X[ n2[Ak4%~f- #rIՃDsCRKH~&!oagT=Q8ĩDrS]6qۯ MrٓEOesΙ7<g$9%q9Π'Y6&[n(bn +`&D*ZD4PA +yB8`: H*qd'I~lh;]` ?\]MgeœΨb|prWT +Cը픬ZjqRF3OC{WTUM"b'FnQ"EZ;WknB +<o9_e5jX-;ڤC,F +EM$'Z2J4%9I߁eLeXr(z-A|ZwlQX8F;f&V+Qj0u;u3:(Ʀ;^تՉ(djˊ]E0UXf% =i[ a/(&sW.\Kac|(#30N8p4قn: +"= }VjNT ;жx{&9K--V"qO\na@;p:9w܍Ds -ҭ:l;d J~D;R>i<ZM2ό!3/Otw&aI5Z$No\W9v\)IܽW翌];U,|ER,8@.:'9M̭㥖k +jwrҗ NFơ@?aQj'6jӑm-,y^gys <lU"G>jɾƾM0C$UN/|傋q[K0UNЎ-y%%qƸ {}!HA}ӂGg%Xin>Rr\t&vѱ<@w#͖b1i֓-slbl,xq':8yCM+z7 秥96c&8-J=NtKZI\| mPMXo3d^ :6`$EfTWúSNkv<R )8 W UXNQ,;'AAbo G^Uw(Qc܅^rT +$,rnbrvԣt6h`iYe᭠Z8`f0GG$FLo_3f/g,635B*CźڞLG\lz{&t4ۇ>7E ͖KPHn:_JhPpfQM>Dr%,hYh[ՠN5jܯgmLA^)(/H+UZj]2 SZħnr%:7W|$vd},f䴯oE QV"|F|~b괫>GNcTzTw ȔvFܸDIYtG3̦Z婥 01b-Ԩ 4IrZA tp}Ģ`J] +!D۔ogr[‚ݣdJO[fJ7\,Y`Q7+{+0s4,+ %\IuTmyY/:Z5W2Fab]MiZ-TK$_z;.fHˬZ$F_ZS&5P-Wa +F +.p'K(贮I,t+rI2I>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7931 0 obj <> endobj 7932 0 obj <> endobj 7933 0 obj <> endobj 7934 0 obj <> endobj 7935 0 obj <> endobj 7936 0 obj <> endobj 7937 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7938 0 obj <>stream +hެ[Yo$Ǒ~篨Gr3֣0Vɵ=4[, aG7" F3/"^}m7/xsNf(s16N)M7o/ż,N7hvyYY] a7g~!0'^8uh:-qx䅙CMeO7#]mڶ f%hyty6>D[X>0ն1~l s s`{4Ùlچ&}l'8Ƙ9Ygkbm[fb@C8¹lLNPl&y4ams0gATaz@Gi7~!T>0,ߏ\0g+q5h&g p;ੁW%<7u $hES[)u6 ^נʵiX #X +UCL\8EQh'j[z_/fSIJ{?URO!%=p M:}J~ ,ӆId2`476$v|] ݫWYU #n3{~07uYvN iS  m rb$"|Nһg&8&SpOF)rC ++)cy9VJ|@H&"3cGӂY #wWA=.핛%X?LW8Y0:zu_Q\ǟhr9]m+w ;^޿>7w:XT +g]T,0MD˛0C^8vU-IæMlOii2dבֿ C?\ Q~9B幨& "!7 ͙C|̒MALS=hiY[3ڪK(ވMե6LFD02u}V+>qC|IV">$'SB Y~ 0:|GCinѰ1P';xURs/'{vV21߱:ndHWMm7.XQW]:7 ;=;:=+~+Iboє2du;Fir!uf-'#0g7Ml&N$I4WWjj, +kT˅rŹ +iYZ^uA *ꡄNSedr:߼.*򸨹F#٤砦7WFT-6ǯglގ~GL3upLW2mL̄5tEl܉SNPV̋~FɸM[̼U,eN Q \n+Z< vZ%drhʳwLH֭-鳺10:*HweX@\OWstxDҦp2KPgv0V;{yQxίXJ¶\ +Q|H.DǛ^q~:dtn:*t(K V8ˡL'[Ƹ!1Oj%Qۧ&@\ol~g USX`Hun.K}Clii..9킗0D.bےGHw̲!Ϭґ2h1:{GLn"ű.> ]E^/WUލP0 v}gkLwJ^Tۢ\]:ȸd2.ޯ̨+0~;,Kt%|6q_0*Z9q24cfwYAsyI-Yc 2 c5rl*gM8l6&Xvp+¼ ^ߊrCoqF;LDGp rb<2F:?qX'QlWeXj;h?k]YF=; \|veӪuSA]H$}k:8E@05k5fV<}@bsuO|2Nm< sN%MJ7FԻֻGRvKHܲe+v;&:>Ix[<3]]] (|G8 #sp<̠aG +? +r`As_Y:Z95`ґLj1f>ZP'LrX]7̭d!V׷kpZ4urGq'/7eH .ӾOn\–b xA?LMʦ)}43Co͉0iV#Ԫ8ս.R{߶f6 ^=\>wvgbW+g8 +IjrW]xl܉Kw4t;tlAwU]Q=={3}|~azx7Ӈވ-c!v`v}OZ(`RMBMc nFd} +endstream endobj 7939 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7940 0 obj <> endobj 7941 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv31162V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7942 0 obj <> endobj 7943 0 obj <> endobj 7944 0 obj <> endobj 7945 0 obj <> endobj 7946 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7947 0 obj <>stream +h[Io%qWԑ4+*kfdȀl"ȇd^nJckUg2`—{fd,_D߻ݗ_߼wna2<,74NJ?| >\YOi͵4"B9-X5ϣuZҿc]KK?`>1}հZg*TXR2ڬ.A x+m0H!q?&]&9PGؿ}ʾUQ[{Dp0k=:^mԺ5š\XOuMW?F^e?o'?aaYaeY B=C9Euj-Ն\3]G18\ HAlD@Tgzu7ō Vs 388K'{?<~|~77QX]O_fdn}}8aVCn_/g7_p;%vбLyri7POcZˡC+íce8Np p,cqʾu//3tZ0h aZr3ԑ|8szyq/06|;97_Σw mV750`]8þ3I]s=XfaHE Dp1^pP4cnG~~@{ZP)gj\~1P2ur:KX4Jv (d@ur@}pGPʮJQֲ/zΩ]=+X38ڞt\<' +˾^ +_nFz@#܎>g'_9i,UhG? xɣ(k޷bX[ӵi֗0. D _YwjזRX*WrV{+âKiƮXKLP򋦎s][ְU +ۃ Jjo T-zgu=, +p&{Ŋb0KS!N,bLF悎`{ӋPBK&z,]VI.z؄ c o&pum U}(}.lNt(&dT'<+UK%z+S4$^١X6%UWjrV+7[Xegӎ\7ko-]aP7Raw#C8[5|O6n#ŕ5̩Ii)\$"/S{yoT?;;=vīx0+Ř+Iv WRPCS!<)ICWT&`fDO,5ۚXd,k5::Y$m+*%M@2{uŐp+j5pewA5+ zA`TSï4VbGݨ5uum (Y9^TC9ox +n~!`݋ +Dc(/EORG/Cꂩp+ʜ[]fU?Wp i^$YpBF`=;bRL*lI,U.L$#1(ʼ5n! +g֜o{ ?QjĎ+/G*o^zhYmS񵺎=Bl"ăەJ8v\<B:XO 唸6Yaʐf7ljأYJR*_slƧ@Q"V|JiSGZ)BPE̕0K5~eK?t)x*}AX4e{VZ_a܋̸qChBUH0E|H`ꨛ"<#joV#XVDa40e KcDyz=d]WA.;xU[8.M'}:14'4dUe8+8\̋VDx?u7Uo$~.ݯPWufQ.v;=*?g^1.k|wG_xnWW˫1A[]ڙ׉UbX;U=T<~Ք +:ADD6~+*_IwvP)$BhG/s 7نumJQp0 [s>o|(W0 Ȼ#gQ=w{R3몭; iUSA $m\&G).yYE7r3b]+8oTgb&8QNc` OU8oTI|ba_ _ЏBsLgSIKtO:"T7ax;xZdB =;\C6㲰߾'LT&PNB{cβtS!cE[4JЇ7c 'FV|u)2*tw5J7v'{[lmfPё?M5x>ZU.MphFߢVX#GZ>(WP-Y_U O 3̻yM`\Eyh5eaϋi;nVCTnt#-Hc_ ހ-GR 1D# +ܬ.=ʆWB֕hB¢j:Rfy'&c::*f,EpMW\k~X긢tR|"7m Gg|U2tJ|\O3A0܃ւI(b39BJEU?IR#\+|e=CGNwIۢ޶q[uX&'- ~[ +I9mB;M&qE\rGy.W}QGq$s^a +f`и}j")xn=TI>|iY|:pm2KΓ?t5]_$*At*H]і_ԘWք9vevZ2JpedX hZ@Jh(x qlI).B*F DfR{{sy.$pTϬ1RyL8JѨc6+ +3iarI +ܣ{QnY%Ŏ6\["Rp:Dm `Hp:TaT&⛦I9:O@|E#$Y?J'e#LvV1Y6+`2R8vV({9[{QCEB{Ⲩagc=7jⴼ'b}i` ʔJJpa7pYNYͣS_E +H߫JEAEaQCU! C# W;ӲMW0J)k?(6J`bk *U8k\cSjH/O!q?l2eq"+v[LuAu-cWR&m7O#  +0dkߊ*S [(n,Ia&Uqr~\W~XfʪSߢr6t'ݙRۤPmEʾ(Uy 4i8j|a0vעNZ0rgk ū +֤S,? φ_Dz 轢^,ޅt9`ɬr/e\*5 퇋pyn$F@WY +H3q>D p;-JcpSd?\Z]#4F;a@O]˵ n>_>q ۿΈo?"zx{iŗ2<}|hS<|'ڻ%|CBkeh8sX}B# `K y8[ſg8N5R \\b

A.5׵ +]w +Qi4=/mK30xlWŽ֍ww{gPPLVKp?8.➶ɕR*So2'9N4ɓ *& }ccKE%sgkvl}d3T6T̮ 8ϸzD ƮMɑ'^rI Fg1FTB\^ ܓOflw::=(3>9^0z\M@>NQaH-W*FJJ0 z+&TGNJ8/u;+T%D2*oGm@ +endstream endobj 7948 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7949 0 obj <> endobj 7950 0 obj <> endobj 7951 0 obj <> endobj 7952 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7953 0 obj <>stream +h;kǑ+#@,9 ;PK&w)WU]]]Crm*=W׫k.><ξ]\^t؏=إ{]Άìg-4.1{f`ow߼!:=wSJg֑8G]ȝ\?H֑ OIkߏ=/^A4UF"GjUsK )#D8^$w?ξ%1DZ}=ftNfa3oz@xqOd 7a }J몴Lv^DMbc8S#X^ ~5̏.} r2]ye]ݷ_~4G.S2uw ٛn-| o]^?\־x#Fo}> {D`t!1 0xpQQ&n/=G!~CK=&b;:jmca lp%gi G] ɭ ['&RG>:x pޱ}D2)͵ a]_0v}a8 0 y[ <|:z+#С o m?ó32.q7h&g >;p{牥@I &B1cLV4JIFŶ25  x4axMafAtN m&i(Si6z3&$, ~D{ey4AH\|&_>%h?t6eCWe77Ԍߢ'Ég؂bנC)A}Ab<B Nwkڀ`_^QBΉZhQݥMܵ*ʙ}:=6 + Q7~0C'nʎ> {di֞C ;fUiFbݺW*bf?iEn a| +eX >DI;t7)ڲ#Li^}q/h )񾴧at#?fb myz: XI` k9nE"㹫Pit,?mQ@Of zօ*":idF& J,=UYU.D_#"G pU6𴱈S]rhKVg5\uӄ*wg(̪*t +Q^iJQDQc#E7i K[e>Dʈ(p1DH<ˑTPO:`1#K$W92+%*$شjm%ݨn0e k_FTIO( qӬ@` Q:TTлl1'z9ЧxG'Lp)Y}"~4aMg: M4&'$HAE0`DfK[آPc2-GhL\?`f_bFM333_j`VFuO$x^9ޣIgA5 l*#WaAs=M{ɀ +/іUO`HX#Ą~ŒrX;I&ׁ.3MtA-^>25kGyM9=Y`&R!k0 +ILLJI25@3aPiT&rr6 +E*Brba,ljH"R'@!<ՅT`'Չ(yûTXh/]=Ome 7NމkTGlӂB^)0*w>N[9GCWa>JO@N5)g$C1ARÌi.`"gV2KeLT2Dw~rqzk[ ?uw|i2-q~[ծQcsu )X[Uw]?ob5;Po/\Pe][p-4LX%r vnhf3m>|-oMh `ۿw,ːvl!PQ=ɓonv7 % +vgyy't_o~.P?TvX +”\0nX9sa/pV +\S˚k7Q{ܱtTEQqQ@d'v+!|cz6Z%=$zP cIlVtBZ=KYs%ٲZ^ۑ޶õq{7ܲf ^GhD!U_5jqF-I,1"ٔ^.T8 c%N N6ȒDN*I2"3"s/AU6JXAd~z fRQ^a`%[3k6լWKl>Ϥ:7cT[97)W.$|X5QQ'u1}99qJ)ιYm D6h噅D(eЧdd>YBMUMkSSBlo 3+9WG7IJs )ĠAŜ.FjW,@c[TؔzY@l\Z\Wb@fTЩx+^'bgԯZʾb  9$4%k1 f9ȕkxf{^ƪ875A8Ԟ[ [,I<۠NmQ>ڊDv]Mrmtdawɺc&pd֎*׎F'GY׸Qmb>lqb&C$J^jQpSօl'r}MfU5PF*atj# fX?<=u_}-0_,)!@[~CK|o?ۘ[:b(C j}2Ów!RK!2!tjzY0:WR87Av[EBZS2]cE1V(Ёcna~( Qcw$!t2CKI/硰rQ< cQ;CTs"*MF~+P'V-R}Vq:5eX]bI +.N}5\Bl_"ImJ85%|ӄXf[֊jUΙs%O_U>]kה\cTl ^Shli!8-u|ءKUZfsq%^MaR i5Я] +b<THhV`Q](t|㘸%d|ǵaK.ޫGj4I"IWL]' 5s [iO(eĤ9&gs[E.YRYJ 2*iD%(R:!6 +z؍v3^YJIN)?q9Vore+l'sT][簟.[h +UcG.kd̛)J⪲K_&Ĕ,qBj:+ߤt|~ߡV!䇥dT|X7}!J`TVzwff\8:buwAdoEan-| oM.b}]Ť78h?x}|;to^Y\k(8 +N ivfq߫z=cmgWZ1G7ݻB݇Ǚ`bBm&,07*6-}%XV05HTοyA͂Y"=B:+"?dv[zq;`%XnH2;O=?a:L CSJcC$kPy> | MfGùGu+=![@@wv==!>XKaɆ4 .DpIY `,o$%nl L20} U=oKۀ7"0՝ +Ž&>9['{Fh^8h $gQ>?<\}Z_yZ*p<qsϞ JԻAY=6[$)Ϊ_ꙄSIRn#6kxǔʍdgM |{H,RB>fȣQx {8ٷa) ?8~Ӎ '&%txg b9 Fp> +WIsl-”s}6@pQ\|lI5)Ni}'IY B/&΋'U4 2hY/PKa +,&.#K.,-ąELeKA}/u0_+Ea%+Dki 434 ,zƒj^L% mgVPB7'(V +endstream endobj 7954 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7955 0 obj <> endobj 7956 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv31163V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7957 0 obj <> endobj 7958 0 obj <> endobj 7959 0 obj <> endobj 7960 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7961 0 obj <>stream +h[KqϯcC],Gv8$GHv})<$%r;L$zH9|tl,Qx%D>L4ӏo~swLf{)48e~qe8/ +_n?- 0[j2Z-Lo~ֺ|0D=q(}O%)`H%ڿ޼ۏ?=xN`7o?i +Mh8}^#,m&X47G̡ʮ]-é@u_]l/CVhg#K;| }ղ0}1苅16ÑlR&h,'Xј9Ygkb-[fj`2A$Vjasm2Sa\E LU|+Z5pYla߰ #J#T„V`?ca ]Snj)dPLR +4H P;;_O6WyS;BwJRJTfK\Dy-+8#(+CuM8]e I@ZٶJnr3p_GpXOuӴpl2'T[Lt )9jk1FE4h|xxh-H<:1`7q_r_p/R;c O(jfgڑsX\~ej5] +R9ZkdKťRkXD!cv ,^xX0ߒBk ்x~P @l[`7k%T˅gMr 2i<1Ա*i߬ꨶǦgo͠Q7dpw!3Ƞ +e$  +О >OԪvC WrvQ5 rzjߘnC*Unِl*7Y2v{j;:#FeőS3Z_G7l$CةNF.ha~j T*Aee pAzZmϨi:^Zs4˯4Og2;t,pjAJycrۄQtQ~,\!I{;=>Ȃ~h4J ^yLՑ7Η5aS~eUxc3i:l Z斚Gρ7ׅo[zնbn:8pr~SH&4Pe^s) q@&ŠZlggs'QT`}Wq0+3UcG&YX$0"ĩҷ +q`X~w'_6Z +WT*Lj([ȷzt6zwSXd@GȮ,ۭnEo r{F8W(oJ6W v+=iAYd`$kK_d=1&VU]Yɽ0؅s2BJzgPU&c 뢦19Q9 +tJJJrV;3\FHka! "s1Ei2BtK!KH,vTeBu4װ a-'CčEI$Ȉ$FC PzNU.Zg,&-Q_簳,D*UU~ܪ|4F;ĚGM #8o% ڒI_7[L4`lWuca's o eYk 3tK*;( ^}_WEWFvdUZ;=05S^E"iVX>' gA8+Ҥ0tP |Gu[bUS<5ȸ&7\YYfgUcwyqcKdg4rߓ-l9LblBk,!vNG2ȼ43c?H(+}HD &m6Kq /1nJrג1®;mMvCu'U UW($l)a91F%o{^INQS=qӍ3#P[W9ݛ d9Y2:zJ(?lףg Ot;f1F*cM1tjK7 B2 tR9+ +Ɛ@`)J'6h95TfJ$#TCX{O2qXG=1'KMO# +8J 'X: x߬x2="]ݦ܍}@52"+ kD"h$ҬYr%*#wT)hr{@>t0]wFX_{KWĩw"?{K5׽wxvQx")BX][`nXk~qE\nm&_Ӎ8f>Pf}HE1`jrA:6T][2|G8+ȍ"Y-V9:՝<"1uu{2dKSq 2Lc[r>8'IiwiKL"qѨތhva{p II8qӐzkqX >^ٙyn{j{a?Yt bljl3wl(r^  xq>L|ZK-V=OxxwyL_.??|˧'l3|h4k=}(B[`><~8,@ÿ )~\>= i۹nO/um}yY>ԑ*mHAb\6铃`jtT`Q37_Ã5O!IG{] ù e BpQ)#I\cs+}N10=Zs{ܕqVIbL96eJ8b.tʛFwkG6cQyq%\HcCQ(UO۝6Leǜ]2U ]}H΁ = +n 34w,|&%,Jmq fpXcq4O lT؂=S$=ӓ`<%' +2:?K;: ۰=J8Tzt}j H6$pЪ9/],4O5Sz_3l7uޢu(BY0uD͗ 90O_5D_9t/$4- ljڵ*ahش75'z\0SVgՓZYh +Yubs6[7k`6@.v~k8:z=$װO[Z-;&~؟,ZDk! E`Q4&fLB4%j[8\[ + *zr[qz v Cyw )jɉɻs`GZNJi{JH +Ez35 gd5E;׳j]׬=]TC6hԐڳ=yuuQ%*d輑}Uy|ݦT9 ;[eY:UdGR#*3My_傮!:|U_{ a?8 )e+&f_WJ[urHƗڰv8?j^Eی/\ r45\>>=E^2pomvC̦)^$461^~Fg6e#?dτ1e69& +-rtfأyCήJ:+vOud3!So + ?<}ԉ,$S +x6)5 tSBM# +>QaRbDf }};]q݃N]i~> + n="r-5Iq䓳`a!Zpm$PQVҫa)-;{HWaʣ-~/ճPy}F5gƉ}b{fok=vqzybj8jm"O"I!k) [ֶx^|r$(vWrI#ۻ` +endstream endobj 7962 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7963 0 obj <> endobj 7964 0 obj <> endobj 7965 0 obj <> endobj 7966 0 obj <> endobj 7967 0 obj <> endobj 7968 0 obj <> endobj 7969 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7970 0 obj <>stream +hޤ[KGckJe#vd a=؃R$u ̖m,VedƓ ?>|N?ǧOONOeZi!S)q +uO采i?=ݠW(yNn ~49ee>C2ݤ&6ZWx2\Kcf2b]&em/bΥSDMVwY 6_۪Ӟoжetq*^?}z:Tò,)e//އ;-~޶[ K{wpL83+pfqNS7@iwҵ\O~XЪ'A4_Zq5O,[Ϻ!.㧺L5|<9 o~ퟟ^>|zw>t7 ?#tkzֶg`LK% _/˻?ç|@oOӼDG˜O?ݠ!l;%“('{)-D{s@@e?|a08/o9ݠr\̰:?Ssxқ + c9&xsn}ɗiU)Ewvn*]wFuSa֝'p~Hf=< + + X^O> G#>-鄼37` eN'<5}ƍ˴8K\p;SӝB-Jx l!qx `J1bp G{zIqSj*ք]vwʥ}[)~yR$H9H kOJzWh2k@ڗ:o j$G/3Eu7x'i)L` & 8|]c]d/H4'ڷhbAq3ʰ,,ʱ} -M\ }PekvR6,*ФB; ,A +mO_|w_PG=Lv@> +dE/ Y4K3gRa5bXSD~, T*U7,!&X3m ) @MQ/! #AQ@-UtVSS:MISqڨ_¦ZHeFݩRXy+!/FV0R7<ɆK-Ժ^Yr/ "O$_/䝥D,LKCԿۼ@, +K8ݚb[tV{ڢf!*ө-1i;V057@R%> iTmmt*NS:QV1,]dDa˝#x>0GF"'1Ɛ-F*sNiSV+j]ޭͦdOZ,sEFe5DRf;s\K9Ͳ8F&@{YYtfOͨ %TeʲZSȉ"!b&@}'f(<#orD zH"SDZ)Zlhwe~ج #D~إ/Nmg~c=wݶ&I0RivĒtv ̀]G"IG7LtMR}7k|qKJփu8l1 n> 9 C+F ߊR~ ֺ+m~EG%Ad,Ӥ7z\$׭XzH ?W{X=n{IS=i1Miݸ29!w7+ZuCw]] +[NaSv=Pi؋qepDNބ78fQl䰓lU/|%7Ct֝ɖԸŎPu^4 ͇IH)l_ Vau*ʺq "P?J2Hr qQNQ64fff7Ҫ KP4|$zk+f z20Kwvj0-R6 x{'"GFqTy#8aEUD!nRl]vII]z=#7+M~ PL:v h1 `M֐@F,{ciUj|D\yW]Z&uż*/l``{ێ 3U6gO˃Ρ&u7C]n(15: E|!TOjskm>0g6wfܔm_;(夏Jfn+bQ \4юu{8{hb!F䀄`q!Gx,H0 +@Tи7nڅ|Lޤ TӗscBfa~|'uq,v=b&;bj_Odz7 o?>Ӗ^vw7h7=>H޵zo<~|Mz|3 7-yȪ~'l|9弊K,F9xsgMF9}ra{MڂD5\85ŅD cۇocx i: uKQ/]Yu٧@̸ِ9iΣ>lO%``'a;]h"$Xdg9{*S̒?/ڦdN$.ޏQfE'[BxcЈ{ 醁dIkuL~Cj<{8rQ_ C\r񈁓Ae=b΢{DA0$} ," "#q0(7c?;z%љ T|$Y%Rc$BzMd+IbBfӪѠ.4#kj%aYGpDa!ere>~jY!jS"[8&&b4wاJ0"zp_6,qB  X?gֲɿDGc n\ sA +sddmM&z%W=,QY>6 ̀Gؔܶl ]RAi-a\ezY Q_ .s>`o "F=ޮb`+zwtël_űU"AuN|@AdEM5JdsS6?9QϹtxnf^'2ϭgXp@M 4bE7Ȼ1M +hy6)lIʮPw0^ԶWΦ>O.q"\t;έ! j>-H8-Pq&z,nƯlYۖ~;>p]WYX 5rhrZÝuj_0[ Y=FUo24^ΆMЏ&D2wnHJ@8-ZW(Ws/Z̈֙7 5}s{8+o$*שq`H/i&I?`Kv/EKƲ*m4bg1OCmo07q*OPa~W-p;ȳq|.ݗc*jїw3IO {;ܜee?luwue%,lGg׎Bykot- +,& +rG5"^{[ v@$sѸPlHZJ +[PpNǸ(T ~ N*lRZs&1ۖSMV[3s;hLj*QC$Scz 9ge=zx4H 6[lg Iqʴv-Pj99qeuj'& X6+:w~%B4QS`@jR.'$KQYGJ$j\Veb +:i={kCCjsXفDIt^2}TIuXv5ވc:KcmMB.K/Iii  T%SA3h8}5Kb+u )JY@ GUeCC11Jt1 >7&Td`QUM´0erF$۱ַYR&;=Q޵3qtFQ8)6F68^nM{H7(J1tWh[l>|I˦29E]4?MK +6?ike t,1{߮L-]iѢKu}ʶH-lqvN0"}p##aXW~Rp^ P?T6u" njR9 +_A;I51@( b(DIW#Vj0GqH{ALk`[7 ғ$p_ZrL̻0W|տ {LꁥtkEL.L1IMڸlY_ 6FrrxT;U8Bi9R= dS\`}nX0aĆ D^:sxc6(J^'UY ͞q\TU +G w뢷o;@U}E˞bҩN݀VI.n=msPˬ6]~cvi6p]'%]+b?2NL&Z4!~* L +UJ#[тѧ]Q֥.'_Yd^r|5Vu^]tK19$bjˆ]`ԯ2NcY,1 +MVw.E q9.x.np̥ $Խ5->j\ "|sۧ`4 +endstream endobj 7971 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7972 0 obj <> endobj 7973 0 obj <> endobj 7974 0 obj <> endobj 7975 0 obj <> endobj 7976 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7977 0 obj <>stream +hެ[Ko$InWd3ޙFoϬzCTB4I`d1`Zɨwg7|xջ7j&o|.c21Nat5 48t/i + qeMZ7ci&Zv~ܸ`۽#~6X<@=?7quy(%a O-֭–J^`7ܬ. +;t $eM1}=#$ΐ +8kD,u{Q#48XIa'Znyw8~it}¼cG&^e%7W@y}XecYyx>]_-v8øu;Xp;6ܱk LW282A$&.Z+1nqquw?<t:{J~tSĵЭ>|=lwuz<>rzpaw_p|:)/GC86/2?Qƴāuxrr2zJ\0Fk(P4; װ G<.f8i8ԤRkf@?td0\ 8/g-79.Z:3,8ֹx;e*{hU7-P7'p |cF26L,~"ya40բkQ407Q>iiIrDd1p2sxonb PX.CWW`ct@B2wT)-:n!^T9 +$-B kc_A93r.VEBԲ薂tAOH4|Y?]|R%Ai,h4H? |A8N-T̙[?]M$DI`hzC3*⿠~AZ;ѵD 1z((G*@9ưRy(B^J~au-z<*C2VIx}SI$k`"z~{Oh zچlOن[`2UFHMlR h +19TӍ-vj&ZL8L.vAM8VlLxOVց({`懊d .9~m;rMo qe(G1t}|31h$U@Hi+k#܁3$ G$@ +( *V#o o=q <?\ LAUg}-@N鮨SzH"U!@:,= 4>O%HB(d%=Sd\ֿgh-D2!-6w !0`0i 6U?kN[ +{ld߂MEPYh5wSnQqpfV4 LeV <s ZoڵheMI#pIzns$J^ϝ^iBx + &MHU㪶Uq%];FgIH׺z=XY$$`^ҥhcUb/͚18%4:ځ+&vhq̖kԝJ%C""imE; +,>Q@8C--Ls.u;;ʡ_JsГ^ ad)Ϩ0ĺ"6[GA2}:cbxhE'I$|Phɣ9TèsgQpnjbŜ_fMu`}ic:xl؉831@H#wXԜAZeo17|8xѽ ^:ͭFMKhq&A*u3ЙUh|U$!%EY fV@R2RMŞ.=~c +NAKwLuϝk*:rof4Wq_ݎOV<{8`+sl+ܘ̭W=Ghys;ThռkXi;ջ5)!+`E[.CW +R/uӗrn[PW_к $RB&NѮxq\PdVUAEȊtܡ29x1bC} YuMK_Oc8Y oMN$HoPxL_5HTm; %&f>/-%k.m9QgűtnVw}0n>oWU-E +gfR.s:WV6i+Ս-BH&ݖ[TD|oEqzu[u=Ȏyudfg)rs vDp&ٛĦ$iʰn3pH,E)v}bc66Yf5I5,9ƃw63vdeHL(0Kj\ + u.JyRUz( o%Y.*o/Y͋0D_\[ڨ2l;~o?bSt'g0^FMz +Ƞyї694G8E tȃ߰}ɴg6Pw{hp[|^$ +[ @EаZ%rf|n\R& V4UobBgYMv V4֟p&c1EӋƂO՗zy6(^`0Rƽd$[r}^[qv*b`St181k( oEn(/݉rUo:DY)W7mj<.w qE-QGZzǦk>ߦ%qȬ&&$V/4xvF [qg7:w*(Ӵ<%b26؇Tڻ!in:Dxd2I6j0ܭEC8#/2iH֗xg3~Z9tk !7ϓ2]fiO$d0S[R7ȃ%›hc{(s Gڧ Hk}4)c]Do=4a[ϓ$u vw6]K=6!p8P~ݏDvoרa:ȃЈ7i\LRZ!cn6 4 wo?aCY%fg]<˞4.d + R +&2>7x Ƹ[Hfze5՘Z֘ڥj3yư;?;v2z>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7979 0 obj <> endobj 7980 0 obj <> endobj 7981 0 obj <> endobj 7982 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7983 0 obj <>stream +hZkkBׅ5 Bc$ޞS$qkό^j{b}GHs3 RO^,&U&E ~!&mJkSQM1ΪۯAfc, !uψA':JfUl1`c[)aecb#/44|]ow"aW&knCl6pmMI0HC ??L^.&*ჲ֕R.'&ubW 9 ew3gg Sς<KӲ>Tr VEDn]JS^0GF +2X:7L#N'*u73RR/&J5N2Cz~>#' kUF4f~pj}T{\I瓉~ F8}A*XR"L'PߨF;VSY=(M&|xE-8kYmv\`d::*CG؃i랎wI{u5ya:AN?Ta,84;jXn#b,;w$u_ :i*x$~"#>O%(#?KG[]LP|ō|l#ASyq),0'a5@E +!?PU^UXO=׫M^щxT٣SmrDSIlX DWbjqюOILǴkuksY([qzOw-VC)'Bqdz ԗ+o +rې + |8Wgz̰cb ꪕ-> J#U~1ײ![vq5`s7q %ᜓի,":y`&td!m z (2hGr̼ qNBf[EJ- +ֳ}6ZGҸyMМJVPXyөHoYAfgQrvH~.~^?+ rz']Xn +pڣ.E(]/l@Zd): *˸DPRw}qL~^q@憋_:Ե s& +g +0 u7pX[%zU紨*Jc$Z앋.7 g(=QuոiQp@P%ƴigOJ(G(fB~za xkޱi_bHi݈綠$p#aV!aճrqϱ{(E֫#9hqp{M?0f\&3 (B±^Fx5{cW;eүA g-`ELڮ_[2ŽݓNN\=mck6&3(y,6\,,ߜW.=(vRU +C}FOu_&ptU6'NDp]s”Dh{M,cpl/IѤ Q8LNn~yvD$^~}zP\]~H !Y2_vBVò=|8_w\&-2^"]G:.]%v ^vrˣ=r~'GG.קn: Xulm^ٺ6s%sO)Y!Y}U'خ#Y]#,֮GY:,vl'>Ag.n>d~kR+̸ҡ~Ens=,-!wh֐UFw WKGu kЏ K 5m_3\9͞k,߸ɣHw}oV;|" G!|-P;NN mri:l937w텭v dc5ipB*=l >=\i`.B뀸Ѷ959qJɀ=䭏r~5CdE7j ;'7j +endstream endobj 7984 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7985 0 obj <> endobj 7986 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv31164V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7987 0 obj <> endobj 7988 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv31165V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7989 0 obj <> endobj 7990 0 obj <> endobj 7991 0 obj <> endobj 7992 0 obj <> endobj 7993 0 obj <> endobj 7994 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 7995 0 obj <>stream +h޴[$7n>E} ҵwա |/8{n>UcKJJ)և ?ݝpwY -eyX1) wO7v&#qq7M!+m=ԺKS}-"Be7nɍ ߻1CwP[ Ld"hRf iݧD"H*yYƂ͐XM2)u0HRDe3-Nߤ#Ij{XCfZQ3%3MI4ت.# xبv-HY>o}8s0F7 YI[ ?nFeXe>n7zk~<`k^w⚅b +D V!)ti߸,? d~9~y:= ʃ` ètSĹV? pJb>i\7?=~>}8|?|+lF2ah7I(V?l4%\j>y Jqfe8Byt18e_CM*T3CG,PCWIc`y4f|8kzyqA`΍:;L|g맱!P\i`O0~X9[OWYē0.׃cA ADG2MUSe[JQ#sXR~jGz[J3w\[%X0+s=.[âB% ++Љ_`Â}SIRBFφ=|  P`;%.p 7" #; +mG~/M8ZZ7 =VC2H{ ʓT΃djbq a&:~@hR̄ 8@3 zޭػXaZ({1ADeQ1ɕt!CmͲwP&q1*nD8MhM4lx݂UxLDuf 'SJp+qH2 > +IR M[! +z{'E!5P)í|*ЕH_B t S\${E>Δ;t\?{)},QCYm 0{' |;P|`(Dx")m@P!lR,BЭmK86m o/m!FX /qc2.:[Ais|ŝ<<=#6o `s7wh3<NOyxi@bԾҞn}y COHO/1lN3 ~|~mކַ|zƦhӧ*7` F`6.p )9~zضy>§=wm9:4Y\fLe$\tLc-H7!#.[ʔVY\w K}i8FT@M3Z7+ +ei J#{A>=ae`Tk8׼g:4po> Ï* ~LoO416LsYd)bۍlT%tDbGc<=DfPO֘(*Ae'SE8_UV Fx'c*\Y٬@HR#P~oWo}AKvWj+m4]8e&jW,*Au^E blX]6<YL75d6ޫ`QLkIClZRL{((g͢`[!<.+3T,u,8`'XիF4  #y$ӈ}C9Ҩ 37w.͠`ƒ\"?#Vk+3tZ+9Щ D6}tKzk9a+_͏8D$O{oQ+–)kzߢ'ʙiMsKu]5`VYj{d|7'4/hМ~7h\Mf @лVr_Iom dsɜZZ>)tAŏ^m,O6hB$E{2rqo؅61KF.{S9IkO{\vvn?+4؝qbTQer(geV&Fp'MZiQC Uh Sa4}rY#h9};hQ_D5[!^ f#ܵΖ/x<W39arR!W>^όXj:5"Csq-³Vt'γ18=`s$DIj 'OcE%3d۪qbkFvk;GV{Bsgȭm0dwI,lLiPK8zk*ψRwcf6&Tx +jh$ǿ2.V-ػr2DBQ=KQi+fWRi*G\~[5h] ]W\!936\rr`dA/v ;,};wQ]̚WMX]RUpm:Žmy:o,l_C\wQgϩ1;-?0BXN uNA󛎝h>W;acFssףq|pz=?&$eYеET+k'VǽKcMY8' rw \`gV& *KDkdl{`6o#ґLZ(DBa"U?>K*_/*վ鮞^=uvMh~MT'~@Rw(|Xͭ%fs1ˮDsnzMtKګ.DzW/.˔ST.Tk7/.9E/Rg Mojcda>ht~ar˱$d,p4K&i`g) +T+Ռ(CxUrǓǖfZ}A2̀B?uxXȝSuu-k|\&3b?JϤjK\x}LlI3g~^#,z]*Ihd +5'B1?.VKBP݇Fژ#_C7N]5O! 5#9xj᷂Ϛ;tao3Y/1.SM;3M1߈uWN"sKY˗'iH~$OkhgE]k]W^V-k((F*qNz?]u +}Y͒=HgΓod6v8Tbo+je00T'0_ZFUT;Jy|nVf˙򐛫ZG"SBZK~JhPgYBn&u~M`1Hs/E25sj$tYŧ\>Mlu4'`db^mv +c&ϐnӢYJy%i,a+IKM]&2%ئsըDƷҽ:2o|PHLd1\sk4UrD9nz&ii7UmZqj\!, _bա3H3ķ|-"]d՝ǥ;6הzVg 0>} +endstream endobj 7996 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 7997 0 obj <> endobj 7998 0 obj <> endobj 7999 0 obj <> endobj 8000 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8001 0 obj <>stream +h޼[mo$_GMo<(7p` hV:KWO&{zv8^ b ٯV ~uJj9KcDFhdgl&=5~>{wA8MNMDprDCۗ^[C:M=yL<(,ƹ<$\1]k3Bxh.*Y,ԦkY53DĔ=T&Q{׫?}}uFr菊èMJimH)yOދ +UV/+/M#-u1')Z{uֵTN[^EY^N*V 4]i܅DDOKv` wmmG\no-1 ԲDKݒz|9zZ'y8=yIh{ml߶O4@{BӀci>Y-o4Q+m ϪFo MF2RMv[b 6CdIҤDז&N47LAף&O$GykO`;'Sh=CqՈ٨Mj$yXwSEƲJI+HmۀD-BJğE[M^V概H'6&u>51P0 [$ihAZzigJ%#'ϲ~X*'-WهfOCVDVn(o}~ U6O{aL! XRePGׄ!V_º@nbw7XS6nFDE-;nӲЖV^Զ\Cs;~APK<,^۬]޴(LD-?‘пn#GAWF?_saf jb3p%]~V…~8vm̕-\Wߢp4o&]߻{< _}K?wf8ڏƓΧ̥Dq'\>(l?}43f}1<~?spuih()ov yx,ytw'< ڈ])D"KtmU?zw1O+.֡L|+aT(ϥ ,]Ef/e$򽈷=1Q_g=[is+)k 'ysTuNt5 HB>;R}GIEь&buH`rC 8֗눷Xc~W/fl%[x㇬^ྕb!ňe!obO-q3~[f1°d*rV-68vlެ6c/#zpxt ^fMd\hDYyfvf3D3H`Rʒ(@!5jU_>LJޜ89;c+bgWt"]x]bN3aGZ1&BT]tQQhn:cseȌ ubމ"/. Ny<n꣌vY_vU$WTnV _vUΕ,~z*%tYts4&@B*sȄ.f(d;NdՔw7)}vW<R6 5Ȋgh9ug0t +P<2HG„cEQ +{ªb΋틕l.!ﺼ9&^.MhJ֡gy{ +s1G,}6:+nD@Y &j! MXDzgQDՍ.@&ŌE$(B3廋c};Tݼ)FlU[;>]*OqM3FXֲ쏥&g Dnѷ > +i1 AƏP i/%KB^%r_8P5E>ͨMHЉRY27Pc%r*qYU*<{LԤs۝P{(O`BU/RyrF(VE<3YDH [0,^6~8Bb;nM= +\vBSUJ$%YN1r6GƜ?jTHK_TjJחʮ'ǽ̄&[}ʧU_9J1&3]BRqFDvpcB K}#s]6aOT;hK֟aNTȨ]uε[8$:/~WhIO 1H^>q~~9T]Uͷ돰vFdrG.f'XO4"sMFSMd LR͛,OyGP##}* +JW +dYjļB3A;g/K!?!)IE2X2;')g<0/e-A-#g nM<ځDl+D0*]Mۮ HrVJ2"sm]>ό RM[)zU$Qρ vI%2I65|PbkH],aU]\Vm4S*GXSAϣȥ 9WTt['Vi~mb]MnSVr(GѢ-_WN,$ʩ7Td,T4=X!5$0)1}SvmΔfE[kqGJ*QJ?ҧ:rل~}Q-4ӀD`lzBD;|ɥ]ggs)T\}bZGt/MqI&k7\;EE_+*'Z'%zߊ͡ZhI\1_TyD)[ikH.X=~I*%:pQ5oxUQ!tA.+ap~[/خ[V(G_f8l+1nL-@.Gdt'geEqLi{>@xYYe\ -D>zKqe2!BČpgp6J˜\10n/!? +pk2.81(5˰ڿoE +0Wˤ%h5i/9$Ȟ7ڤBYkMm+b%n%qgG%wwq&+&ۼMڃ[+xm?sNڼ1E桉d( > {G_|ŵnň cTd4bDVGlGFc MR|<l[Z!1\rZfp9UX1bE'V1ayZVZٖrIȎSt tm ȎA^UgPLx tvM<ݯR +R/虒-r)s/o&|k 5mU$0Ps:!Q-{CWllW :5H'(e{!)Ӻ42$f1|U?&:!$1AND?Y/760L[#&i=z<Tpoj%щR̺6)& ) uɇ'5:uM3"m bΘ0tPA=lɨ3!"5rEMaLV92U2~+ҳ^-`a-9&2,"g$tO >AjvDuP=z> +|DŷVu;P'#Vz_H葖葖N.aazpz<|׃#u['rЀ(yP*)yFv@v\s\6bP%aE$T8FK\\`0=#hgp/#%>ȢɒмDM"٢I;F@e ^g*5BoJDsoKPAs[o+0\ .t 9m ǩX-L~=I#{[@8Rk9CfDZJ6i+E +1Ji1ءbjHizjs0P[ ÜugK>rl:NHw8*1K5c)Mؗ@0Ii= 3x;j"BC\'A. 68Ksah( BD ,1p6M $"rIG#cDNpFY H!syv`TXB@䨗DMMs,AN GY1 XZY'p]EmMRhI{Z2€ %YeA +g3L~TQ PCSA +Q=]eOdL\Th2]G꘎^<aes,k H<k>$ +ٺS.T+iTԨRֵ-eѬ$ 9/KaޕBPB W&]$WSK%y{I; C%d8ySɮ=]󇌭-gGB.g8FZ?!4q{lj-%R< r)=(9q\~( H84E!4-9afHSJCA:H ww@I^xr5͜zNZOeY <ƀ` W8Y;pkϠnܶ0m#p仃 /uT' +ԩ`\~`瞚 98M n#tHmLpn$H48Yla"Ў O'3#S}&<#V0;ֱ[2 +֒ m)&Qc7&M|ZM&~nl7vxd7n q_Z ˱|%"dj* 1R"%JPlO0g#2^skEs?~q%Fq.\|tլMy>@(G/"kE9lEiVRy\L6D &-?&K%%&}U"NQSӨQn!on=ZCw7qt4|cax~3= +?4]49(~w}G3}o8;%j\ICadjx?'7`7o~ڇH훷ppU8*(:|"Slד`弘q}w3x|x%)D^j y~r8' +oW_}_aJ9ÙU\ :E/Q/0Hx%^zH4|Qmi (ܥ匚E&q+klHҨzo *Rj1X?eƐM.2=r^pƥL:Ern+͇L9$|}>=jpM蝆|?E1DiC~ (~O9}9 (ŶK~t= pEԒې)O*| +ʱ=KX%n1")O*#/svy{;|t7lHM-NL,bBSU7` +endstream endobj 8002 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8003 0 obj <> endobj 8004 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\ai17192b.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8005 0 obj <> endobj 8006 0 obj <> endobj 8007 0 obj <> endobj 8008 0 obj <> endobj 8009 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8010 0 obj <>stream +hެ[moǑ_1ẃ!Vv`w `"e()h .I[<5#A^q&x3c 8=:y_YHv'k3d6v)ލJ5v/i9WT4HIy/-𷺹&`m @1fQT%S U: ..b?u 3(JeWg`?fzizinnϲ=O=揱OtJB]c+z.V*N%EK.$P3 xiuϿ_X7_8X< k]ϺC.LPn!>usx͋<>?bg0y#i=&bܴ頱q$nN;١^ ;zY{}u /0u{ {#f!Z'! G'X>CTl'?V3G?'X`8?!1};Dq,pbzBmFA0ٱ >xSc4J`=~PSh:j z߶b3vATp3E\ `r6&eDt"Q0)tDm2@)5t.a3'+АWObQ&ߏ!'.'b.ASVF\YoDBG! +}'O7֟F9*!@А˂fy^[xx&-R毅~57Ng2 A'9uחnj0U٩+,µjM9!'l_  +ml/9t[=g0@ |N uŒ%KreN/<.G\[Iѕ&L/MI@ TeFgz$5܃$79lcn ˯^{w[{.8ݼGׯu?uбM%6Rm HȐH~D%a -{O:6n2ߏ2E^|6{A<*Ɍc:$Y9Lp(P~7}/4o2N9Ak:ٖ,2dٜ4D-!/Y(s]i~wcnh^W$}RG j\TʲV4TPSffN*{+zCKR1L؊kOCkg&IpOn0Ug/"Jꄆ EWR`,Vn%,dM+*ޅL%YW 9PdNLe+M ]8DzX$AFCGX. +dxּ#Kі +I鐁A I𥮛5r*UQog'&StpeMv\4~>4Y5d5#USFd,ry@Y)B623g/FF=-P>geXè6S­[pf]{tb?␯hB_QPVO T-WTKm`Ѻ"./-q7h,+13Y䢍;_EO;w%^DZ |Y#46 (C=FQ8mrZ]2 +fiUSvk0vE2*rx`bl\2Ӌ0=ƒOg,O<1$P ~ 6{dar ۹CM\BS^^``QRa}9~qkc?fMu9cL"5,X} s>\Mg#%RgyhL1ŇϜqB|ZZnLx#^Z$*.!Ri͕8^̊dWLSռq-/ Y5=/,ޖ[(=Mq)paQҔ:8Es8il7lN%zd[]IVƞšA3,gjuI!xA\/m^ciDCМ8"qo\p/d\a%@˪hB;! fiM웘[aLۚ0Rv! #crF, GnGE~ZR}}9摷`?\?AfLC2Op/젥v{~$uJ. +If H$o^瀧GN-CzfF!!ӂrёUOؒ6&8I#@O)S'H :p`L'!th@hfXU@Q +`&>zA#aߌ[AQ_X胋G4+@!PZGqKn.S7cK 6 9yVul?r#*!cqPRAG_j/ L/恮HOEx qlh0Uf`2h0`(to +\,Q8|[t6,o]^0dЏl0p.wE!CO9.FxTV]PFZio{̌ح~*J[nV!jZ(D1*CO( QQXCe{+w$H 2+E~f- ^0('9!3RiD0f9ݨ!Oo+% +KZ%n#k7k(M]^ex6N$Z?l$ҫ"֋:{Gm8v5A#͑i+]qU 2؏vNdr,!O!>x-Y,k (lòxX7-\ _w96 Oa_Dž5,[i_}_YF7`cK>6.|lx'#.<:9'r.ֶ.vl]l87ܓ.5.֝DPW\l\ذtNs+( S}G.R&4Z%_A(eWK" flJ:vήph<7ܨC"5N$k<\Y;Wtc[ѹct|SэϩNw'Lv)WvQ*1k\@y&̱0K$ ʟz ("81J4pPya0'% q^ +g=x+^o,~AL { b齧w fKHT~)!\6yrOC _xxX%D™kaZ\SH Y$m ~NOW$*Q&[ֵ#&޵1^ެ*0jI)ڃ#lуs UJZ->S9z:It"kb^>| JRJzTwN}jzh^ Va̵:OO?W4KM]`[t`:&/9VkR0·u33p )vTJ"eX$)=74af?vqYLdvdI}X]Vkw3J@Sd UNf$R +^lN|7a9[p/4'@ 2YzP,P?H+h58qkc[Xվ_uYaYD퉺h$'GN,'>[rZe| ~6~s/-nO<|晘r6ܲsK/?wU(ǔa+O8r&B wI;3PڣA8&| 'c#e+b F#MY R)K3}ƸAcqt28{>oYfzlx\vz_Ւ(k]FoqG\>[9~S S_ܰ2fFfZw:#C#GW`C͏fIjZZRF!eޚ(CC|Fs7Y?^h 28JJϕyC?=>~RWdQr:ʸ(nvI\Gi F./ ('(H<P[=&g<㵭MQ-'j[`ץ厦i;B !M6 dGrj YIo)x3 nE)4.9D99KvPD I` sn6*\ߡ>>+|g%(PR$ 2O}`$\ܰDs}4,B_^MOJsaS/ W/zmFvpZ>v|y|~xǛ.__D]hs-O7JLmO]z&ֈ}߿n_Xk!xxFc&2:n/[o>x;,Z+'scea% %;ݽ?iW+6xdPŌ,;gĜ6,D"7-6?fԚFBmKVF<a<8anxZOX{E~Vx}SR>a連CyϙOaG|4t#VY 7cJ׼#olGԨw,Of{>)_'u#xM!HP d@qD5SgU_~o!*ƆXJrmx= {O~c֋+~97/J,ay`&F J$L jzqX6vIP#ؖD(}tf4&Cqi w(zX$cgJҝe9^yMzjEե%ͤSleRu|7l0q_[m(Fk*".dfaP;sQž"ݵY{Q8o.%[MN[{xbiFr48ޱAweey'L؟!,lق&HĖW5G->cV X,"]۝gTyVFj-;=ݓ1zb cpO h]4Wi`ᗤWiCe{~UV/t/f-Oq-$yluAvE[uM,M t oo%‹t $oӐO) +ŽY5x{2H$nsbԤ{ Zn^\]Jjpbߔx5&v'K:WyՌ`~HxcL㒘10i53EX0qd%Qv 0 +endstream endobj 8011 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8012 0 obj <> endobj 8013 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\ai17193c.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8014 0 obj <> endobj 8015 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv31169V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8016 0 obj <> endobj 8017 0 obj <> endobj 8018 0 obj <> endobj 8019 0 obj <> endobj 8020 0 obj <> endobj 8021 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8022 0 obj <>stream +h޴;[oDZ#Y_xP'. )b RҦ0,rsşӧ՟W/dUQ%NїSJ^t~VJkg#4?젙Fky*gNϝVÒ2n3rg<}}erbA.jlhi[Û,M6sK >Kh:}L??^ztvJa+LʧR]18Wfa3h +D! `` *`P[릶L*;C`ybC8h^j994 +Gpï|O'A 'u‹>y^|Һ?}rXnF{t=rF5C N[n0cw>{z8}_' bO:N0SpxH Dixb +OěێڎVNylKJg@2arVG*--8z2,vt6>calXtMڰd}i=p9`;z[cT58:ը`"*"̔ib4a= UMV׆@TaZY |5ߐ`S ʎGf0g7x4܄Fqxxj\<(Bh#$hECVZl WpT<5azKa[ݼɫR 8CQhڶu4֖~])SI#ODjrj*C#=pڛ|uHLmۆId;jȣ(xIA9QTIL` YKxSE4 x @ ͍r}Gm@ uy)sQZ&ZDgRBrU O*БHc+ 'Ɓ?_>j\PqH:qRr"; mƑuӮ!5\ ++;و3I"n. + +> 'p%xB$#HHAC (&r`#B302}vE c?~@{`A8pt= A‹Bэ03lNiT+@ +n0j 0Av"d ~Aqo4 +p>9 z{ Y*t2$2|j(݇DC'Kƭ~ Ѡj Cc.]j[9|_ Bd]]42XJv[ +"Qs 4A\ + + ||6󸯨ɞ !#0,$:Jws@3`E@$ /kZPHL~"<*F +E!c|#KJj}@v0rpd=}7ûup+qXÑnBU],u5e2Ş.P˚HodٝݒB6s4];3>~8-*?irr^-KmƷݩͳR,PjrjSy$wHyGwSe1(k\CǢ{dBչ۲'U+f=.15qivCлza6cu/JZ6gR3;C:"ެV0OؖA4en aYT<16R{"/Z4E[.Zu@=mSXx]FipW[:Tff_U0ĠG>8MIy<f߲WCWf74|{\ݟuBp@=I +vK.*〸z[Lo/EiG+/ x3ܘ,1#.Ȇ ۽k2B5q=$n hLd#'V}1(@2h}d9m# +goH&}X&u_wv_#l{&+Ȳ8n +E6M7KBJ0~煔-:v +fǚa +BimrfXcLbK**5?Ibc'lll4٠=w #1ሎ5ixΩAK=說 C]Tq5C"Cam]d´Cԅ]H ;TPB5f!r!=TyAFkC/0oL)qD%St[`ƌq!H(!Πi+cɗBͰ0k6A΢"4x<ϾZ׫,E>ڛI`#'1T%G  +0 O-oB>H%*JR%av &mQ9 hR7#c s +v3仿;ĚGޕjfWr|yW`vcp.$}{5| b藝\C$̌͸TI>@o-ɇ/u`A|VOYXЯT[C[C &? ̆5F`,Zh喌Y3daO,K"/W/|V@ tKN+-oi/ 5ߕ^>k >_<(=ˈ#H+DR@p@EW뫇L T)B=X߼^] . LΏ/6;> u ` ;Dᥧ쀊iR;!+)3"MO+>&b.W^gk~2 +g]My{w^|oW=>.3s //\ v.[ϗYj_% t!ťpq喗mEDLcѸ񩰦 )`le!]eZyt `_Xl86ʄD z=+1+/u=9Kȶ)=|L ~GfnuYQOƝ{u2 t8pr@x9pi<_ ׿( i`U'Fgo -xz _2 3x?p,q-~7^'/Nt[QQg?+ȩ8lp%;]u`5؋Ŗ5 )HArk /:^ q?k@y_ } +endstream endobj 8023 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8024 0 obj <> endobj 8025 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv31168V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8026 0 obj <> endobj 8027 0 obj <> endobj 8028 0 obj <> endobj 8029 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8030 0 obj <>stream +h޴ZY#Ǒ~_X {$Ç60V~<*YiVwd*x՛F %6WIHKB0x/FlxTVlvhm~zw-q/э?*WnUZhEۥVqR;5$yV׀mn3D.gDk/Bjl4͵+#Nas̪}^2 , + +MbаPC&f@yW昸փ`ж0DY +\Z(mRJb!("<= I:pB8Oǝ8#v6d3q@l64֧BBg~Zi9d۫x*mmmHݹ^i3X}5-;Ȩ 1$8(7=H=.p[?LUG8 aaH66 TM*̉cRj~㠕VWU7b jCOn=xb $kkkP&i$=h G|5~2a9%'Hs$A g 킴S4InH.M4eXt,Q0Ҡ:mdW +k%a$80\97 +"51#4`eCtuh9VU"4 :2ՠR BG3`N2]< !P DhjdEk6NTݔ'nz_FI?Ʋ4 +5<^@a_8K'Y9 jHsڶm dM[.ҎGutbfjjM&dO><6L!LQˑ }'/߯K, +[CjP=&0MM4Tiv[pIV8Qq%\PQ9ZZN#(%/_-O@AӔnSN8o359Csl9;fH7oi7б 󎔏R_^O_ 2ŗK(ui8,W +~b;;Ӹ]|Ǎmn|||=,\/^n6 {&p/^f|dNJ]MlOi=PFtf {z8~82a/xR@>m*LQeY o  {/ z!#jA}/\Xlvw + +Blz<1y.IVL$8~/=ٞK`<zG [@7_.rxxھ`GV8ӠR3wKd.؛8u$Y{S#2甁Zϛ?s L9#8 SvKA?jzu^kf5A|;Y<`,:2]벑".dKe#Qʠ,x]}H`rJ72Uqܞ{-SAPURrJ|(h]-< +' e). +IY_.\+"Jy+5cTu(u+yWH } S]َY¨mC+0ʑS5NK;U{wqQFUogtDeQ:L#|$_8[8Z8PBWF\N?I?= +gJbI5~ E$GͲa}'[s_*_ic)LKr"gdpDʇ +%EA6M + 3_.4S¯zK[؉Hއ.NJ̓ӪPŘKj%2U)[O$W]R Jy{KpBy,y ס~s\,k -5j.#"ǧÐ4,ޣ(| nd3ûuˆjɁW;>6:35*`\[t4)ԉ^Hʢ -ɠb8Orw<8^+1P]MdЇ;*)y'x"CO=mX.ߠ HXt=k+]5U +5{ Fz]W rd{=+z慐Iʼ- ]=Mݫԭٚ4-5hcEVv (2RNhI͈5Z{^ـ 9(osFɏƠXO&ۘsO1w{h)o]wvL `-5BPuyZ֎hd3Ԉx]Ԫ%h &t]3/6j+ ++ &4l\<=(hFa+My>#dTLƿ֟|Ips+ pw1'~F|%}7"FH: h^X8@C,zWo_ +ՔwY0H4LSM ^|uѨeefH$D;+-Q+h([?ib4i{˗pjw z + 0(HW + +t zn8X{>%yٌs; jmOSQiYcn62ؾGʓVVsڅ4xY }‘!Po@C!]j"秭XE(z@덇xb#E3[,xAӯE@%A!?) XJ. zLR|!(~]խtdXKёVӞtvd ?=eIZP,dE)2vʢYG7@P{wu/% nP,|XX?S[ ۟ VV)(f6J`KyxeS˜qQAؗuvFx >QoO?.a2Jzq͚ŝ \tR3Gsy%+hGkDGbEsb"Y/B +h~SW7u;s W_ +F +),Hax"L_#XW`%9HB|F_h~ R>"t, }9>?=aHmϏg ?e+8<_g#_DT^:/WK;x[0$d} QEO +[ܣjq/>.-/.I9 EDO|{a}da(GgʝX~e衦IlJ hCbR'kl$(R4\ |}ĊH[>T(T42H'̈l(pِx4~42?x +endstream endobj 8031 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8032 0 obj <> endobj 8033 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv31167V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8034 0 obj <> endobj 8035 0 obj <> endobj 8036 0 obj <> endobj 8037 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8038 0 obj <>stream +h;Ɏ$u:Z*'c +yА6`@ `]3-PIWߋċ̬1=[~w.oOmi\/%5\Z/yZ57huMn]~--Rږ:#wƷPgL\^o;}ir8V^&'/)[\ڍ:beSԗꬲ]o{ ҫa^ﰶN}:]}\|קoΫqZ,V/?~~z{b<8y_>?~~|_]G_,ktą$—(}p%x鸹|v~q)qbץ/]0..fx_rs{OΡs;&ك{<5ӞweijVشNu0lxչxw T#p//KF05K4_ a(MXdt"5\o UX^< o#ig݁4!/mM qOf h:bG)@2@/ /@6$A+*Ŵ܏bۭ{ {!'hg^;RSю&< !i( =fj/Ok D_s}tPß꟎@w¨_P6]sxKọH&vD^XZa{T2X0 2$:"]?Ⱥ_i:Rꘊua;JKoóM# f[RnG|tmwz|*φG~)@<T$:VBL?#O?@9&n-VU@8q_Y͑Ν2)#4;1++ў ue|_׭TlFNv? *x ?_+ɜ@t[6[H`LE#vvK,ӪE B o("b،s܉7J./VXs,"N"yjGZ\sdQC֨V7?};p#>L'>͕#hEFˆVG,vHJ6]i'd{:md[\$@DE@s53f + +t+Vt@H)tvt'9}RZNi˜ S\RE:KE ˁFTDNĜ=/zw#EuEtM:=:y%qI6 "W+ue;TA qC O翚k/C;A3*|^ ~#.W# \o]Z U<^wj=Ś21LۼƯSVh2Z1 1}`,%]yQ ")X" __/CQ3AЖ/'DNԜK 0;&1jp!qo&wa C$<}W{J0LCbO%:D=Ul:p6 +m; x^3ԉepɸ˨ܨ}NUeh,4VV2c-胲<2O@.trFYEvUM ˻+7q噳W8X1$$c$0:eΤNV1ۉM(ɕ(U3;,nZ=LūN3 #}qQI(()t3wdf$s̵SϚLl0X}_Z-Y!T1 q/Z?7IjMs9:^zp& ` nnjKлW9m|(QRA/ &֐{ W +KWD5GU2+P7Cev&T\~.*P sLzRB* ~7gv4|gGע`Ř%d"MJe&ܫάӘ#e=;G{bEMk=iq0(Doij 7>ZςɾL&c H*ґO+"4q46 M R +J~KQ ;:X`%5s\iZ3HEP*=5,W +*(PscuC9c踰؜thk9&oX{5eWJW_PX9ʿs #LU:lSΏ hQ4 D:)GYnQo&K^E46n\I;Nrgl'.ʥDj4KڪiD'lʑd&FSYa23ҳ43Yf8u/ N_TLE1oMaR*hFn uMg0cɂvQ˔r3Ess_WGQ!)Wوka%{3.l/ZbU.'f4gbmL<^"U0PQn4..QP(XTR6!F!u>xʓ-&Tu25]vO] hJQXVb1FT^I:\ 6A k(W}ȅ)#()#zim mN* wgMU՚Фjwsmݘ򂔰rUپ#zǴ23~+W_h'1O<fI2NA70;V|&Ɇ\r o&HmA [J<弞XnUd6 6lE:Qi52~sHbQl}Ǜ"@@v.˗raGy2erxUtH3߮Nalƒʪv4rpNjCmyЙ-)Cuqm@f%bʴSQ&86R5*|NvOvkFF )׻d[3ӷ3\1.ی/oD͠<ښJɖMl뎵5m|S} +'U4|7Eb"YE]tʻDY NqY; X",}ԈV}?)a>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8040 0 obj <> endobj 8041 0 obj <> endobj 8042 0 obj <> endobj 8043 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8044 0 obj <>stream +hޜ[[o#7~GiUU\Nz]8}-y,{gϹ,YfnosȏwiW\1inWOjlԵwyꚻEu77k(|\T?_.Bk X {x(e3,f {.M#Q,]cT@~ۦ,0mcus ; Oy]\3*ǔ!D(5r.I V[.?lE +H5xR<%P5`/ fE!=DCgVzai,v K +֋Дn@˝mz1CZRjZߧ44J Cy;bW +pnΣK]>@ @ZvpqtON^n~Ciz&oХ}{XlPz` 0)4 ,wi:d6!aSY J {oaL[Zk"q4i 4'ȷm#"Eta48Uʝ`2X`Z4 z/ԷGO~N)49Y63c.v\ef[$+dP읕"it`RܶΓEAj 2 +klhU){<˦EB9 +L\ +r&$NGbaV re˭K|՚ԣ^GP]$4 nȟ5ok{LzST5bTCGHcVOC4q%Zxb1@ v\geȽ-21ԴΰI i^TvsKu) 2TCO6lLƵ(1x'<@k ~m% +x \O70݀? mbfugiv g!`7s0sP`3~͸|Iŝtx_O ]—5=ܩyH.SCv1; kݰ|y-Okd9Qvp pqu'-|n3iLC3:u K#yFyn`cuZ㮬z~e>ĿgGvOÓ wҊ~D5aoU7<~{YmOu{_1;Z2Fܝv+xxk7o'&9ޕ>HMt\e+ު^cQ/?~lnw4nI㖻=,}P %q񚃹yf. =p +8T ){y95+ tpYsxzي:ZB0`gڱE +/$H}u{=?1@c8j#y?RqӀyOƟOB V{C "4h +3V@͈'h4<3(uW9~yaW5ߣh~zTh;aĸq3;; +P80eg{"ON4A'%UcY&iY3SpBzj'$')z-j+ +d +εZAKвЮ`+ה[:gL% P/X13t` N熟xr :חQqf( |z9c;X=Zϸqdk, =QnmZ& `\ת[Hǩ̺1ccU@Pr."o ːuL]!xv6 To"9 (4UՐ6ḱv 5XJ-Jo VXx- p.U1ܔcU]TV籲ϵ\ksH6#&Z׈ŒC)O0q_Q*ʅ˥LO[C]1K1O\]}š,VNtFŪzv;]t})wFYky|;rTIJ~' +S3+\es]Ac *KB/*&}h _kUFFМkjQ0Vw=PJUn/K] +eգvٷ ˞/"X +|.^pDCrRlʕQFoR&T6^/$ +s+? ¼[4Ƌq77o'&&]ٲ #o܏vr:D[S6Tcw2e9[ 'ٓAį6xh5]^3Η!$6NNzK`3< V zr2 Ӓk2)̲>ϕT _"ܢѶr#\SiJ:^y  :䌯!?(sHbZ__ڲL hm]٤IBs\2r7qJ}*: Ն(>_-=r,A,T7=J6EM[afF ٳ[I}WU +ȏEU>$"AEG +$" +endstream endobj 8045 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8046 0 obj <> endobj 8047 0 obj <> endobj 8048 0 obj <> endobj 8049 0 obj <> endobj 8050 0 obj <> endobj 8051 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8052 0 obj <>stream +h[n[ϧ%rK +H8HP'%7 )V"H[ /bdIn sf/sٝ=O=bɉZ A(K6)+N.JH'S'&VMxC/5*?3.OԝZƻAaGCm]a`.n͈~vNR\E FܵmǺ"Ycׅk Y CΌPmţ#~?|?d9+#": ilYHsNz68T=z+Y/*UEUyYI0˺KG:@{b쥧HZO[ut +HJT8*j2id1H= ꖿv:p)I0H!NS}9Z'ώވ>ʑIO_+rrZB>{iĸBTO^.&b~}~9[^O5p?9Z1]@ReY}. StBHZx}DD1 +(qQa˰eH}J2I4^S4NRTpw`\.IHp kVa*0(K-:r[Q5ڤZh虤сa-e`!N x@b11lR?DoLnK + $LH@x9mi_F}g<>A4 =|5m 34&;]֪ίfəԼx XGl70E[)fq2ҼA5ab2"5~w~>&D%4A0PršuU\Á肙]{x)d[C>Z"+<)cYA?[eЍWLY(Ҷ/όQ@S"1aU[( A0QH:98 $אL*ɡE fT +urK"8J½pad]A#얒 vvKXE5bgVd +5jxכ5ñm, LӚR2mbjg=LK}s.!o81䬫qm;Lpuv]:C7Lj?A7Nte+ zS'eFYM5ĶJ]^3lawsƴ=s80xW]@-}WDBd̫"6y%[!/q;IJ&fvÕJj"/;nxGhW/]a+fCAT׉|1m=W={mйB $S i߲_ VAul>GNYn?W}u֒i瀠GnZ8thZRUm}Kg^]msy T9b\B>g0_2gfx2";| w!7ɛl!&\y3Z(n&\tq~*>]1 F0,姧M,oZ2ĿumU3ZO R3uiЍ#Ňo\rۯNKXʹE"ؖ`~Gڷ/K#JhrϗtPplߗ]2M?c*ޗ_ ꔋ4b!G(FA/#9"V%5Y2DXWU 2F(jQ,P#D! -ߜ4M,a~-}QGk#wm#o;iLE2v )r c@|,ԑ' S|v-O*ftBБJn}8Qa w3 +qc{*hAXLNO=6t`,cd4*Y~̎DTZ&jg Ʈ y \`voB<#.`43aptl&Qq5TkھZr\zQ^mGĢvTQě  FE$Za/{a+2:[\^n)y}=[Kmkz>bKmD{}IN>Km[[( Rk9Kj&hF% ߆~wz1WV}'TgSj.IkK^h8kk^d۔41_Qr:nJe28|6J&M28 +eI:,`ه2q]C\Y/٩Lgo/)N'ˉУ13:>*JFxe 9ۤm#F +m"m*Da[Kkj,ҴQsY$F-ː4\R{&x&jҔPIq_$: +O ,}AXHg_@*J|WiNMkUk64ӴW;FF Vzdg1~(]M2?p)Xp0d?>}ZG=UCEU#{n=UέSM~rvᚪѴ|k1t5UC1N`TC55^jc1~L#?̋ؠ>^^b'桡./biػvy}]^D-6wɋX:y:76=8a1jD,f `}4%&$-k9?jp>$ݰcH7|$[øn8$n0KaXtƌ 2(ؽzG}]! irkLAW+v=/H=*ilLOj,',IOuηU(~#ŕʊ 퀏o)>tHizt-צi-rw7C=f)UTZQkW{mU,Mѵܒ;N;[%nPq=F:LJhBZj~N{aٙ2ºia/|5.W JW^ATBI&>UM/h9g>uY]Z\:>GSnA +endstream endobj 8053 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8054 0 obj <> endobj 8055 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv40856V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8056 0 obj <> endobj 8057 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv40857V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8058 0 obj <> endobj 8059 0 obj <> endobj 8060 0 obj <> endobj 8061 0 obj <> endobj 8062 0 obj <> endobj 8063 0 obj <> endobj 8064 0 obj <> endobj 8065 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8066 0 obj <>stream +hެ[KǑϯ㌁.VV>XRE\S\o3 b؝Uo{7绯<>MuZ:\朧uc\nvwq?~8.KHcϕ!^ar՜ܼb瓛#~Im>@=Dz;I/@S)qGGZOivG&IJ^׹`7$A !ҟ@ۈޜIIZCY'fiK2 E:;rLJ-\8i,}B=9Ga%;NNs,ZO˝=̫߿5ϥ65`LWD $n7'fk|boӛ?R7od["C6/>-ļNiўwo;<}~Ǘ޽?n>ogټcYai7UH(;eNkN/ԆSOId8/':mй.f؛i8~47 酮"*#썢Q5LrS}H ^OtlW8wa0=EnъzM:ǓmFܳɭ땓;ſ*A78v|7bi3GMe +QX5zd+#J!C A(@Ȝ#a\0yp0}?>ww;ק'O:OAd:M *RPܑrv㴽|K?yD ^΀ljds0 8  [LX=È#1l cޢLX}B-:# ł}V:=4Wm + 2ruσQ? F5ʢ<=}Nw9_ v4z7AVU:=]`+p≵ ^JD587tqik\MEvchbUZs!}؊38CTR)cI]U{ĸWv 9> h$(6*)W|G d3J;)jz||'TJ=@m/0QDXv}?ww l W^3)?M/۬;3R{#ߜCp]oᥳ˒?o&3n +#o ({Jry}}޻hK#Pseq$Bj+]8ZhPaT:rv](,P/#mM_bHEDv'xb +4$RSI5fSL0(6##IP9J/BDbvˑyƴ +Ӏ/ g[m+-TatǙ}ש4^H(ɇmeymD#I.Ej͞AG\A['R'SakG hүĵRE r7&T*CgAg޺y%_)}h6jXm59D-D̿(-n)yq-vڱPpSOu.[6lwJMg7-n@}ny>9TTen !i3׏]Np$kEʩ>&'vX0_:XxZ`6T3ԎIJkyN?K 26&w-ðOhݼbXZY>tY!K i+NuΞp3ց [̼aF I,C6w?fw-ݏ9"OLo -\^H̥3IJ׿ ǘ _tӯ:4JϏz E?&Y\#*nh0/&XVł,=O_l6XU<֗ H,A )At֋ցbZC_Ine/Uv62<( j+H\I݃cH-.^ʜ #y\3c1aۮ+ٱ[70y=nCh0(YM +&U:۩*zS4f0t ! eC'0ʻQ%%DC V + k8Jʳ; g~:+!= HUDUw~#DQYa>1,q4CJp v.o*d:o%axoZJF٪>82"_ˮi] dU,4fȅEtNӜ.V+1E;v nw]QۥgscAtm'ŗDH@*~.'0Ďunn8 5%GSd9MXU 蹾w4OΠvddv>_5%)uO[?yKiMSS1aG3;i( nV5{l'RRsէsxң{PyDGҦ +;gNXylS-@M]gK8[iLsPߤJq;'Tp:裪fk?4X45d{hmt]x/qh*).L=)!ZƯ79m kBu?E(-j"tSHOoE ,|_~}E߁{ wKA':$xһ2uH`/=~ׇ)zq3`P +endstream endobj 8067 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8068 0 obj <> endobj 8069 0 obj <> endobj 8070 0 obj <> endobj 8071 0 obj <> endobj 8072 0 obj <> endobj 8073 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8074 0 obj <>stream +h[Io$ǕW4Pٱ/Fq0`[4|0| 44[cɪ,a03h+#c^D~vwy<յ?zHyui9<~3Vc[Px_P,DkL8orOk/ x֖[=óI^F8~5 ty Z~QSX_ ؈Vt2f38y]{`Ym7Zi$86_;qK[Z벆\kY{{>p=lwngZa!OW +%V< Ktk7@i{ng.ْ[ݴZ+#De[as WjӻPKk + r:noç7_}tHOk4w= r vjWPzy{ӏ/}O_~yK ٤3t /L,"/TKނ[e0 JR)Ta}րUUEbOBnEhRm~As{A{H^`ߖ'N#G6q/?ޭf$, $}XK{LH\ܡMWvڛEXo`6l\Th;RFŔ%o<('Z؁Aj!`~DbFCo1BFsz{~@=E' dOP2@4؄_`{ [t O{Ckz +o/`A-qa^7 ZδLQ"9'4@͡*h?TZMe @Бi: "0do0voBE@hwM#*Ԫ ,<%$F?[sj&t)F|%:(<̛շ*W3 ͸L j'5`U V +gN`VQyQ;qVC;(F -V]> iT+*bH$t\ +B&{7>\[M=9UQBۧƢ(.}vA [ήYWQ44zE`ͧ^T: V[nѴ&&) HqB!j }yR~C>COmd1REqv9l +(E7Ѿgx"Im%PшOu4;Ɠ)S046nJfK(Mm;3]8X KqkcGZvIa`k2tO z`oÉ&&BL3 +`xrl0A;.xbN D Y= 0> gRVB_bӁs ofr&G"#5r@ e˾ʱxin(HqOR0 0K%qI|B#_E$ҘSR8%B, Q[(5rmɤf@g5ē"yJR |1Y~a RtgkjӸ̮^QeVP$ٓ3OFx ‰ޔ1h[۱S!U@0iR&֙#.cDDIN%/Z2! ol4o2`zL"x|]>2vh2"r]4CF 4?-pLvǑpW5֘Y<)PsteUQ[jtW>xz*DA=/mLf@p2DZC@ eC_rb( Ip"Spb n[^S, ؃N;`TθH'M4h4 Seb +ZKA +oiTY@.IW-?e-NehP}f 1lkΔ`i Qn+9 +gZp4׍kƝ3.[=}֡Yk'IAg9v Vj塡_Oƌ(o2q;b]$\aZY׺86R~4`i1UQ̢PrIM̕$!Z!RAYhesm{?&VM}ِZ1QYA-ZªUuqiði9iz< XP,#/!᧳ _(^x‡ 8{뢋OKSNKQX@hI̱&'ZN<>_a (oïkp 8I1*Ld`i#"ŕ,"K"ҵђ$)8*8gO[~!hsG%6MnC@9f; zH̲OtmTM +Es:L ެ ltF.ـ}9C%,v3#цd@(4R Z6S΁Q1IC 7n}Ho[z/)-8+YfPwQw78>Wπu/~ Wvj|Lfh0,}9z5ݟ7h=ï??5Chx#z3_o/q=teFx7^&-ˉ=g)8|/RUX z\~!]'Phw,'> Zpu%]/-F:  hh7J"Ǝ}\TAuC m\Wqlf!>0<֧K6<c1KmQ[{!L#FS :&n0 S߼S& +$oǦCUejuX1}ZڿKXٹzw2.#1;U9;_N,  vxP1NCs2;fo lw_RKU_ٹzwv썷n]m\??4ܟ-ߍG^3~n#ڞ{r~oy8~fK;>'_l_,FwWGͬyiķ'W^iM]2eCqaiX +endstream endobj 8075 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8076 0 obj <> endobj 8077 0 obj <> endobj 8078 0 obj <> endobj 8079 0 obj <> endobj 8080 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8081 0 obj <>stream +h[Y~_я3Fռ`[[A쬡`xw >u镒ayYcH;tūKәbolL}8/60]tapۄBX {x(&6&`{^L#VY;`T_+cdK.3]͖YdVDZO 5%BsOˀAB +2 /?!fx*QIX;CӀw + fEx؉H3+I}%J}zEHy]޺qާqB~vϱO 9j%B]'Umײx2od܌}`8YZ՛ǻsjyC'f87n +_K3]ZxvㇻCczFoH> {:!,m:8 + ;Q}}GJQQ7{u J_Ps69Ԅ5 ä샎!5yL#ԏ>2PG?@\k`ycd7D*[hVG-0HZXw;AmQ f4hZj0t炡g2toAi_(o #С LV`]1FͨHZɠ"FӐ@' Ԃ"2.}thRS=ŲGl(AYJ|*EavZAR5td.fI@ѨP('.[n\rݧހ\FPC$$ .OÒE}dN?eЩj喊1J+ڧ!xxpM~L"_ 'foprPa HQ>!ΰJ I^˷TvsRB*在{[0{)r-.Uzâ1GX>9<,7@*~ml?^ q5}$& ZC o le4Ce찱\) +0Ŝ S F+vZ[[L~#u{,n782% Cqq n:<x_RWf\z=wܯ[o縞 e +& l/:d""~"YĖ{3#JIA (l:0iP01Qm  ɍ^MTfIPS3uȑDaMS70i Ѣ>V e ZqGLp%qĆ_Dr襃Ʊ4fjɥe:|Ej| b #7:C8|{ wNZR0; FhY1AK#: #XtD"P{9#&&Gr/+^NL˒&n,&pgy<dzl2}! ZqdrTWf"mhbZ;YBs Oxˆ:εK_0DL_Y) \wն +Y~|~.8E[(ݶxy LT/&}AX} +㺂IY:+C'fX+fT A{Lο`N94kebC0;!C=6~/(K%heD3B:^rCKz"0δEXhTYv|RH?jk]P i&Hz'ѯimF-~^8єq;4[hzeO{ +Ra5{]#ҥ,l3%8 pրTӚ'׿3Պ&B*I)}Dp.%XsG' /D+IR 5xߴXgf{H-r4σm]c/6:ͣВz>0)Kч JN@noF$.=[+}a.0N;eD- ws̬V" #?U\+H2d)"cyF$;X3/ԆI_; ^XkBkդyٔ +=޳`䗆$uɍÑӘ5䎚7 Q-rŇ@+;5e8ĔHR4a.moc~׵mmgp//c|= ,sO1Z^uȬ C3чC'Y%?u/L7AC챳DzH&q nzjmcMyޖfΥ +zZ5o\Ym-`_j$&/Gb{2ܜc]=SVii2C\>$q/xئ}^Fؓ͞Yi4y 3aH Q$z-dhHR˫VRX8&If2~u1Ϧǭ(* %_5IVkIP+ќVLڻ,mNȵH%JǴ́c9]=s/sk*wzE^%IgK*&] +Bcd -C=>(#ȇ$ǖzoƶ m/ ½o~Wɰ[6\U2ۙFEIz+Fܯ?QK@j(wxQ^t!HρTy"o):nS)4%R(bU>E&'j+x3#S% h%G r:Ӭn(7(jqZ%Բ.J$Ęb9+ì6ʧvTɞ[ ,\W6{}sT$-o_Dܾ}g/PiRJ<; [z̃o/Γ'?ܷ>rKLwXӼ u9i +0}ruz9')אrvGv!VUo\Pg[+ȿܚ[^<^N85W7_,+\8[`C??&4:d_=#vIpֶ7.ﮤgp Ok4r|1kxn$k W?A~uIva,_>w?)ӏk!Yzi>[r%nms/2WY~]jk}:|&_\'U߽}>>=~Ty&K)nyk\7_Vp5_K_ x +endstream endobj 8082 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8083 0 obj <> endobj 8084 0 obj <> endobj 8085 0 obj <> endobj 8086 0 obj <> endobj 8087 0 obj <> endobj 8088 0 obj <> endobj 8089 0 obj <> endobj 8090 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8091 0 obj <>stream +h[Yɑ~_Q1,U^YA`,.faQ06ݾfk7<_Lwys1 c]\wy1t.apA?.~^C2 C0w9gڄ@A>^2M83&6ZWB(?JMj6#u4y +vAč5gx/kXZq2l1pūv0tL{A8NDEic"%\|wyrlänqRw_\>p9,lS[hd yd󦡇ޭz7 +L*s@fSW2i BhZ/k'NԮ0}-rq^_)sz'.M}Mp ;\ͻؽ[>u{/𶓖fx*o8ɛZ)[I +/o~mov7on >{AC  ( +`OЇw7ݝmoBʺV"|?$ A?l?CK9 bzt6ƷiɱtؓSNC O9F5P'LGXʘ>ZL5#q4G%0'+mӌ:l$~&u?)W無 +p{ ⿃zi +hOC'W3nHۈA2:+IHLǡ=50yR\8BW6 RTUjq[Lބp)iPX'>$TAS؜qfi} +1gКp8:/nÃNB:rr)}QpHPH}Ȣ]|Ef}u(M0h6tzh9RrGqR<әˉw؂-ŠCᣋ @픏nzgxO ^wea+{.tS +IJ:E*@@N0zNZ\ԆE9,w~ӕH趁TO;VDRd2paˣ1W@?O*6( 0R][U!LX;j-a%]2^ vm7QJGؠ@ + 7G)6׎H^xO$ F)TeĞ7ADZLCZ9J(S+4PPTԴ‰Xs `GӕiP?R`kUqKdP˥l&pҊaW wLl=J&.W0E. xGN +Ԃ뢎auSф,{)3eKnthL6w&/2rVng n-]&6/|dNǃIzwFvs14wF +踹n〷V8 g1%q6,RHqW^o(d]uHіXU+-62Gx5Ӕ5@UiPՌBiQT堭&CJhH:rnޚ7\+skoeNdR +ͱQl(; 4!8yS!CVZ[QXAHcá:nr 1WXHz0UyU)>hWKۗcwY-;l06Kwy^ SWɷaGr`2qg)Wt ̟?R3u 7F.oJ4悛 V XMxbeO߾3)6R UzZzť9T;)RtSUuJY3 AM'r+qDcR>BL6Q,vD#xj"EC\rN? '|ދMT.)0:LzWh0:eF}v*6d!̮Uʂ4EI3.u[+S] SÜA\(zMh? #ؒx\`Zi".==S-Ye<G))yna wG"G+|9+moAR}ke)n{ˑM;#+ _[b :]ܴ@oĔ=.;-=Rv OƋ#0)ngޠ0ڕL2&"#P8ST|iTAN_J0lv!tlS:`CNO8"J7*HU۩<6eCR$K]Wp" c20%GħsbTLJT΋7/+"Am.ڢrR0x(A-Jm@|yZ4/ΕGsVlI-l#F(_bw:a}H"iIm5\JWuPYE ,榜1_Rml}́)[Bbv%Fab!lrPWf;5C+[FOa[9_S7yRcuhMJi.;ug|JWuNq>WIGghVj OVSM]esJnUա6l_I:w@V<ǹBk;)vqeĖ7wˇ^KʭKW%7j[nNtt#0(%~̇!xOپ.OY5Ltι(dB]MI|3;2;÷Y%N"7'D^NzaԪ ;Ókٓrwqipi_Fi!@V%΂=,t:e"z߼&We5Wut㺎K~ /a}.fB5RM_jIQ6Tl|MhLy42&#_A\3Yh] q 9o%./XMd>CFʱ1,їTLZjVsH[\r7I*6}qxkfki6)G.Y $^Jn:uh͎sE]WZ|qUm=rdBc5օ8,I SB!$ + 빦˦L" 8qUԓT|-2dfAKs +QA9aɱ q6hm9 $(JxXCnZU^g:gz믫0:h+?&vIϟsU°.E|qX=XxXhef-wb/NHORn'~9ATb]2PaR%NЀf}6!h?2dֹ~4R~wpZV(Uژq]VU4?ZV#έPڏkՏkmBM{bw,dE3^j5_ O?>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8093 0 obj <> endobj 8094 0 obj <> endobj 8095 0 obj <> endobj 8096 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8097 0 obj <>stream +h[[k%~ׯfpM $<mnZ㫾TׁjRz\3O`>O9?wtV6/5:t,K~BCX<.MtL?eN5Nd')**î${} Jq^VatbyɞÛT + PI7π=2׸2pcmo`Tuw\<]g2 4s/0H'+ zsF14JTjCQs\pT5`, wz OO(o4GCTӄWPm0ݮk0یiq0(p:RCAx :!qhGPʎJRq[,gr*:lI,38^|_2yM5p.FA`qC\kR~]-(WIq"IcXۣcɧ&y_悎\Cq]$4j'*,_Q?mM$DKkz@<1h@#:V\geZHm[JQ :?Q9*sCJS)PjG[6R6,*ФP[|ÂqMa)F_|(aq`ڰ% cn~ +2',Лm,~'J6ܷB|o;}u4_"s38LF{QB0;y-B*n< bHaSCZI.%* bX1Ź$з&Fq{qT1.CI d$G1-2JVIL9U猺t" +=A`A[-ǾTih$8 Rծ珬5PTQXR+j*3-@GT]FZ^Lq\F ={BcuA3QU Uuc bWY!!srsiu[`rE;u>!K0"I a + ׯzuҴ5Y7zJFl^(4e>V!e 6.0liTvZ5CGڂֵLv"{ }ҏ 3YW7_zyp|↺l׃{:#LǾfŤ\Ίhxy92k +d%yȎm:x`/;J4ݱ{h'W:8R)sY9հMFhm=Wΰ]v34J}jx3LܯE v*8ʙ⳼4Yk=ʐ`DPW2`pR^ᢖW_5Wˢ*P 4!\YdMMуe",U\^ywUhkZ[^>rˑHyCd t'h`y8!_vecN.@fZ I6 +:DYYswЁ 8b3"ﯛߋ/VܬS-q( +وV,}J4l"qU~ݻЍBt%pgn4^a[SO.gvbu8: hlqjlvl +&qigoIF?Dܯf! ԮnFvu*_ː9h☹v8[׋F xQbϚ'>gK:GJ,EbaucOQ*)CGժɦB:`R/Iս*~Z>'pȼj6=Fh>gɌRtH$ޓ~=K}o)YmC,[sTc yySڵՠ-,:DI 0qh .FD'KZaAJ{pgX:T"'+K>hj>WX}{{[X B +=y X!+ȗXEfcMv;絗Qs+~&ceԌ '©#yFOsҹ[=?Et|)i'B6iMb6}5bpL@)(z ؕRlfmC|+-_m@t#ͽd)Gܤ)ӉY;Glr? [s~T< )2`gЪAg 쬏 8lE9kTTd&5id]}BK^sma nwWI⥛ rAӳ +n lөheO!~i! "Sc,2u,lԆN+6KĕMMhMHYIΏZQW% <\tC!9nu;{H!_#OręO9}:@oN|p]9qq&ś8?ɪ|mg{(YH}ϹV~}}iϴMaX YzL4(yJF5iQ+^`nzI`/&#.[&,={nGZg jnf9q]2Re +P9}~I?~нn~f|/ gviI ,CE*w9\p Q[_/eCeXO4!}C` H鐉d6OJZM'z]RXL$Uۘڛ:T‚vhm瘾YHwhʣіFt{II\ȬtގӋ GqzWFNtĢ! X;]TΙx`e9]%L_GwJhV陼n㔤 Vkq\c@!(BXxRN>mKJ,We0XnYdX'|k=-sX /?p4]|3^Ƿvd[==gbg`4^dyKa]!݀|{tcΝW |jG[? 렧D=' MX\nBeBx=hfe(z'\ΰZЖ߆6? +g$uTS ^%ܶ?1 w3 jbL\+ۤ;Y;B[HOx7܈^H8̩=QUX[vJLTt%RF#li@.w\hd5v?\_?G:rqNmFoxOD{>tCKq;*'b[{9Ax b CYg9#4fN8l7_ [G +endstream endobj 8098 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8099 0 obj <> endobj 8100 0 obj <> endobj 8101 0 obj <> endobj 8102 0 obj <> endobj 8103 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8104 0 obj <>stream +h:َ㸵|ZHQ +| L }' ]0*[vKW32_T"/A:\ókt(&o*U?|n*˺(bwS7yQF-,n~XEao=wy4Zip[8G=J~%#iWeZؑQs2m̸ZY<,hjS-Պ ,V%UJu5 0ÏUnʦiTn}ݬoD'k%Ms2@2B r&7B0f Gu=r3S;w$&25(N޾;,/nVo?ܢ<7Jf¢Jiߨ=(rmutˍ +ۏݶ=ovufS'`x^4V/*uZDB+g`s ;"wU$$$9- 6͛d k׹Pg24Z`_ja"UIv[֐k \Tf+70u^&} țj{untE% xroW@״@c|XfiY4HS +PֹoS7ƚI8ɩq +uKP?mp +~]&rFU$F @_hJ܇d2Հn^Z)pVP{MF +4A'P\ugn8jd +, aikcфۑݚ7ID *כ\7 J/*Uj,.ur-i\֩{Dl *E $K:BxaK%"`Cfſ`"3]A +HnΑGseuo ;&\-S=&U GkT DjVgx_贁Gȡ$T|>?n&6*_(jV1.roy;Wk$ 8FXn]wQO(d2ތ+bZ:3?~I'\Mֱ d!ūA +\@ў6bkmIx;.2TJlaQ4Unu2o oZF%5*;%ʎsݣ:$V3@X=;4aG Cbue> ^e1=rCoyH~6á1TY^Mo#K?kE-X1u"!fiXϙ8&pk){ik˔BXR5fUA^01U=QD+Php6IU֘.:ԺZ^3=fdQ%.@ Eǘ$ųZBm64-uoZP?l  -cb2T"^qe ;V'$'崎V$hvo_3D >CkpĨ-a;%_W ѨA}iȣ)SImo5{(vU=1Mc+Dq6PotMŤ gr"&W`)&z'F'F +^3Y:E evwunG+7{ngc+-f xUى7^ |> d#%qLX uj1nt"]w 7lͤm!O?4DƟYG +@L٭(r#܃9ի!`Ua¿NJz~ͱ[_p"ppsoQ@KQV#q:O-;UKiثGdA|*se6#hVwhox9PɁUlF ą!:a$)}ޜPY.!,EiE+!bwXuoK! +h"zax"5ʺ0hԤhV @+fHͮS+&kv:;%y>1{ P/X3_˾`Ib3Xr3 +/d/7rdžkK,`% cvU!{(>^Z3\ncΧl oE!^?&S4)\+cHn&P!svsa3*\>r^KW1kfca9tlI L:P 2ώ3ggP:%_J\˒c{ Z>x1HcA/ɸ$a|DV xlUgC!]W\3JPDYe^_K c>i}ro֧ߥ\cd٩ũ^92>IY\JyOw#a+Vi/!4,Owb(8 'L'B1{n9p?`pw,*]{TNCnXų= %G +a(u4#A +w-GxHZXْpBz3m9GO]W҆7gvl2a?1/0D<0*|C jSrZ8v'r*ax'uTDe!Yʮ:wY1gۜv(\@uGIA/G@ _!LaЦ m01XlM2Vd0tY-"v-`!_e, f0yhg_1A@1obo͞Կ=G/ev6*d}Jؽmf\Ln`{vG]*h$׃4E(֣\>vLq` _yd|$Fx }vx~KJ1} Оc9mTyL8ɛzW`鵪=@,=:oοUajXH +|<+H~)2B'~uH1b%]BpX">s/ h5/{&4.!uf4kLHË. >X'@kph^#i/#o"z**^WO5qZd[!q{b0|l|m :{pIO E +se˸"-`}`k Xp!\ vJR~[H!qebYexnSA9<Pws=]IJ)= |"je6yC/BhQc"9"Ex@p>]qu%2ipT)RHp<  N6M&cI.8.ܙzرk1b%o׍='qCjQ@SU3ySjCYs`utjA:)p<%`n~;Ncz?G|}>0h +OPՏDUVUg +{męjwSDeܥޡ^}7MJҝ't%/ + }Ukw˜n/ M# z-rj(zV m 5F5”.%z.o}HX$&փaOԫYv +^g?m UÃoy'}:<ηc=Jt@wsDŻͿ. +endstream endobj 8105 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8106 0 obj <> endobj 8107 0 obj <> endobj 8108 0 obj <> endobj 8109 0 obj <> endobj 8110 0 obj <> endobj 8111 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8112 0 obj <>stream +h;َ$X%r7i4 +$c kϴyQYoLf# Qe0d07hO/W\1nnJ711ve\wp5t0l7@3Ϥ"ZMFh °˅1`?b%d$o~Z/Y`.%߻\"S^7" +,XJ2kKosOˀAB\2-/bF05 O#O<4EPxEEa'"MKϬ$]2X.,k?`Eh,n@ʃ֕RާRr]^.0{Ԑ.䌮#zQ>@ 0\ZVPqTOJZ4aydܔ>fP΀,-Oۧн;՟aԻN(qn&]T?~=)=?vݦo޽n+ ڧ!v/ M5?\-Ї;:ݽ`G0z/=@_؆ms69-`acH1"p$s>R[`V}؂p-[ Ѭ00HZXw=AmQ f4@YAq@ JUj>x  NA򶠈I<S j@m@~n3c.]͸ov'09+ 4u흧A:h7D0.@R`i6h0lO R&j #u0+O +pb262W) +:"w$it~|M O5$3~d:xX0nߐ5pSٞ~{ +q@`l N&0 K4F AǎQ<~%8N/Qp V +qԷ̙E!i%cvf}g0AD}(ʀ5GJi+L o|Y|i;^c,ŷxґ`dXt:;'/2NC˓Y2#r5!k7_Q+C(VcB٭AB8wjĕ~d +SǸKwp<,]UxC""X`4ʷhAvÿnrƥ>h[YfRU]:JIT0$rpU426Rա )tby  3yTT 8a4,kV,Ehx S@֙&<{jNnj{Hq^<8ѽf|i4q5ZPja8G]2㟮(.e|c%\3{ah0HB[t%X0 s'_!@K Rãsװ$?mҷ90p Y~ +i@;R-$~DY"-3B/##ֻȁɑe#$aUT̰ڋF X)*ϔ[-%@;0ITrxƥDž+Wցѝe.81= X[FF|c &tf:|28Ico`'LH0 :2ȡ.i.O)\c,GMƨ?upY;>cP@lXsْ0 +d`DH\-d:?EՈKd,fb_$VEr@Ė\fZ'B8\"yBWi}IDD#9UrA+9r}iv_^/cNf-}K, ;dD7Yzh:w>9^o,ep} U$ 㗦bW{f1D-ajFhnCV'Q<Eh6g$y;e-t?ۚvi2#9^";)BճMs8V,\zgKr:E8u] W(}@sㅃsc;ERט/N3'&M:|&ujt0-M+H px}\9/u#\ZkҎD>lƩN)&LPxv[+TBrҗKV(<Үsn4֊Xc=Ÿ"\aۖE@\f氍~vCv;YEϱ1{r/|޵\Q6^:VXC,\Ta8-Vf¨}Y߽?t/_\=Gqo]N [S'7ÉC?^mpn6;Ǿ˭HU39eآ[Lتg(:,L,۠18 sN"jw$9Rmv&_)﷓TVXN \ZՖ*1+y$6ly $lOGڄxZ7c$ƫ1\Dip+M JƊ5(-B`7RV qFm9a?v%YdIM>9Nu}.im3SӺ?-"3@A ^5z dgں]ӡQ}Rzt%50}聯Fu}<]JƯ<"eޟF<շ-F[DʹcU_22o(s2mfL"kJIiO rp.Eh&O;TF*_cw=M%\Uy2mQq>},7 +rS9#^g Ȑm#E1_h|!c-tsD巃P"O;lI3bE򱴺m*3L-$w%:FHf[0:_3~ v1w;?o_OݚVۯqPsƿ lK~o&/a*9 UEa9a*]4V-NO4¡{y}a=I"ZrL??WX]9)$]$]p'<}ڣ +Ah5!rPϙ0 Cm]1v2<ζIjf\1[ݳ2& C< |UڨD, 水4R(,*[Wn{~)-\2U +3՝֘ ÏwRn/K߽8df\Z3c>[Jj+> 8+PWy a=k12w/إv*I3"q ~|KuB܋wxL9kH.J왁էnA)qS3A W-y=q1w"fby|34Lbooz_IJNg 'r)^چZ}k`{([<ҍr3ѡFF*nth~AOI҄`-.}>?:a␡Yfnmsɳ4;pQ~O.g?uSzֵJ⥛'wٶ)ȽS{'K0#ǿxD+dr3f3 !?#l,ŠUKp{1nux䏓85w螷ΝV⋶mKOZvpnuȩ{ ^v?*Fs1Q={8#.>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8114 0 obj <> endobj 8115 0 obj <> endobj 8116 0 obj <> endobj 8117 0 obj <> endobj 8118 0 obj <> endobj 8119 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8120 0 obj <>stream +h[oIn_яa}4pg/ rܮ<ylHO7~"YnKraU]$~O?ǫ?^n/WS?n!.%߻qpr +}~q ~9^0#F\/tp[Be`Ǐ2w sɌ)`]iO2(6]K4  6i0\e'4+41 F~:KcƮni|ub>{n?=0 ̼iawD! MwX6R:RɌ16kv#_aLflw8> bOAz]W_^ 8ލS?Ύ rZj͟?lwo?v EJ] yj)q _ۿ]|wxOOcN@~i :C &}~Y{kb.[򬦏d@C\8¾coLc`?hҸ +&pO=*tC^ޖǼF|B3'64q1gbrPΓy<5RZ{;Bwhr)%U`}f7k8ʹhXJGTܵY|?T*p,/oCPNT6Ru^fJHX$3}I n,H +運DCڧd*퇎Y?eЉ\ߢe'~JL` Y]^D]+3 YC[S>!L:,{)2l K7R+ǔ"PrŭrkؔˋBrt'~>=?|@c) 'Fş+(LfF]r@ +;6OM q$c*m0X S6AgSaM #3<`3s没wg6AeSeTK0Vf](j(f$5l +蒇 +Q7ACj{5o7(pPQgSAWD&υ.OdD7q_ԉjG[y9j Fq;Tx!< <-?[N7e⺩R1yUyR^Џ#d8j"U_Щp}iW.$ZVdd3zt6YjyrI|΃C W` g^YsT%8*Cj2>;.t<ͅSMz*8Չ9Q=.`%aX|+~k8*رGS!kSf-ϞY7A/ +bz`K29(A&A$J&-J 50x&-/SZ7mf .0$:=/AD9(Q?L=YҸ2\N֦Q\ҡ(lO5"Y˒-#,N19(eʶ@L+s:T='c"F>2鯼eORL{DXhȁ|{;zr -+5&1UMStB\ ~:ov)t 8eח?Ź{^C'8a77L__*JQ|X鮩|Ӈ*t Ȟ74oG82}<Oڮoc?5Ѕ;lTk4T9rږnV h_4YT\qe5Y>/YӸ 2$l.sA6;⋴Efd󗸢4ɧܑ 8Mj Y =iR[ز5vV.HM.ߋ;$=yd6M;6]s2{M cRŲrj:Boڎ9Nǖ[Q`o!nZ*XCQ 2'$4[]uQkCB;R_!K`u5YhVĔamtjPd9FVY*[JzB-r1sH O7>J-@*_:ѓY.<, Ux§u3ٽd9[ dր,Y> +ubX4-ޢrZp1 *bK,6޵>m^"%s[$QNa͕ i/ ]xd(j84U`ruЩIrJFHzI͑)~aP-ҫS;]aY*T¹xKZrĹ&FqDqCy&P45)U +h)ѳfڏtw;kRʅ'V< +.3ٝfI@,wve&tc>h:խ&4Қ TB}C/·sENъ*R5@[@)zz <¦D#œks ͟7 +[6@M p jU'e]L3x8KV*ϗ|e s}`IٍmIMf LOTK_@oCwqU=hןO'.???s|~A?vǏOZ;V;J,?7Ȗʚ9eWF8@EIرCv12~"ev_/;܂PJ|/GQ[QF Q$ׇA "cA Vze-` +Fbn9qb:ΠT-8*G?Ϥi/fi漄Ls.T̒P{J54z}|&ևRӌU了o5q(;^Ťz(FJoQy9aR>HR^SM`l*z+N_ 'cF('TvĤC'\2&QrEI;j;01&H_bNsF\!e%)GmhJ*.o6XkUo +T_ +{~ayh2٤O|O͞MVBqII+uڎB*"p2&[,>BU Ib գ׵Y*@PSgbTfcs\m9K{--0~Z^IF0nj-pٜR $\S`+&Y ~jHv3$P3yZT4;a JUԩޕj)(7$ Is-ArȮJfdL6sQy~v[jC [-fۆ , GǮ:.XlC{,0XK +DAT/k Yƕ;̶0#KFJKa[׎Y筩Aka*Nu:+TTYr?_O%/ ~ % +/DT eEOx JRUJT,_4sf )Ţ79 zuX]-+Z+ }n(Iwh,uBڞsэ;I6)%9SF.Gɾq)-j#.ے\ۆLvҥ]/Bd0m 8 N" + @ 4{|.a*嫵_lX|L%pQQ_rLۊ״2Dop𺜭"Xp*SQ44g 1 +i_q~񷂆a ؇Qn?(QqddI xnҸ}tIYdu#* Tx^ķms3 ව=͊~E^\9ud C"1IsZ>8)~kkn=׆7g\ǿ6kr:D>0Lp |β`tOA7Q3cj^o}H}a1c:nzؓ/Uy"oflLU"Ukrzd*%-. ƣc~NgU/Mf8a~uCi3S 2M)ZWm\Իcl7ؤ o)%hvCcQ},'ݤש/0@$ ?H2r];p?UJĄv$VZf)9mSm +#YjqA]pQ +j-zS;n tj͹sxׯ[ג:=lxUjBˎ 줌/H&sᴚ|sR$)oIf,AZH |9.IG^9a"gI6mPf̔ӡΛ#f=j1\w|욿d[?N}:vruzM~nsS^! 4BZ_fGZ?k-rJJ*j'uMڝPfis= ۫`5x +endstream endobj 8121 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8122 0 obj <> endobj 8123 0 obj <> endobj 8124 0 obj <> endobj 8125 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8126 0 obj <>stream +h[[o~篘G20;ق F)XEB"Β,iw\sf|ջ䛋ˋ t?2!6!mkd޴vb EZ[ht\}cU'Zh1rSpR7_Brkl4_ 5of_iTAǼ.}" +,uMaȬ!Fe<rNbkx er  6i\&Zb GdpɊ0Wtz>M-tF-(c St90YbCC.3'v1Y%lÝhw2eNy*I`2-m9MKB,~G]+XD +EwfDm2l50tYؤm4EGeb)BNRN#\>?dHALֆDıyD9tJ賧f"U{h0#[ak<;D? yE \?.18RzYFv\WSBrW^ٳ]I:[;´xe/!oj?%Tq ܉5Pv;-ucIK]6;Uv0!{x4|5*BYY-n +fu%Q4?DBb6 $x1Pf+9~: .cY +cdn_9SY*zy5QJԴ;xo$y5A)+]3h8V~wV}o r9щDr,[-ԝTr[Ñjp{Mr9mcڣgg?Oۯ9Nc̎sa6Gtb>39~F*]RKp?OuXXÍ&Bػ A?..Nw 1\TI#ɒ[ e HbnP2 *ύye"@p +-IOBaf|`aJ~*)0B.G"ڝܹC.Pp[Ѭem}}]ғ(alYAr/(_ T1CLmWGTx!D-9I1:VwYe}uUflyzo/#I >c)<rt4_ 3d:AT[~Bb)dN9Hm=\7v.q2h] qEj֭J%2Z_ʿ/)< + g*⤞2nCa1\y@֒FⰪӨgH!m|0 s.L#̹V[k\U6dXSG+M`-' OB|&Rx1l>ǝkU3L.ߡa@pr>Z.CTXm4\:Ֆ$$%qY;{k -V|y@u `'wLK6zbiGI}Igyƞ3Eʮs-I'i܌$IX)`tOF(_>u_(u-u0PRwI2,+՟]?A!,NC%b%ӟ\\ōyv(Ho0iG:'ѕo=!,,#*wr]`e%4_}P ?lj5=g.l^ 0ߦα*ά\lIF7z vt488~;nn9=l}ApM?7[n~JZ:=\czm_jL8&zu1ЉrӸ 36(2?MiC: 7̚0#L&(ןfoj>ϸMϬu=EdL4\NSdbV[iMV~P~O?ѻ?fQR3}{+{$vUp÷[V 'Rǝz'l+44Js6 s ?$>E|g:~_A 4}^⍺x8.{a߂qz vt;~di՝a%[<K sUp}?Kf_+~A}!jbN~;cbG-N{XCⰻ>ޭmSa> n Fe_?I@9 +WqS<\oaX\A?f`od8}9m'l?do +YۭxJD]/}!$@9"{F>!ɻƍB䁹a -!butd7] r\~_a0l#Dr<'j?CK70m^~ +endstream endobj 8127 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8128 0 obj <> endobj 8129 0 obj <> endobj 8130 0 obj <> endobj 8131 0 obj <> endobj 8132 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8133 0 obj <>stream +hko~f& kwVעVr"+KNPEhp w?\vqfЍj&t|hoBiW]svb ΩkMUpnFin:@N#GYCN2P6 +Z,9A sۦkV&ϓ B-|dl݊Wm L`ݭ7h&A22 +w-@Νnشڤֆb6WrۤGpVDykaY4Qq3+PaHZKk-ӭ-dyE$m+ ^ 0M&6FG0F85xv~~쟎͛7O,4 +_~풅ȞexWʽXO{n5{՞Ai +Lq9&sb*<-qB r$K9K*`HQd+t!kĥ5=4`v.2]kJn"%;m紃V"NJq9C61_2iؠK;!r ub +apx`[H8Zz0ѪGnpMƲa 7rB4ɺg~܃ͅsn@cq,0/2mHW'H&Hh]U- 3IWjDV@UIcL/oْ(Uh3 [lخ0ě+#h1 <ʀ e/(>cSe96,~‘:YZ#S񀺢j;Q E~b"kg 뱁4bVg[Z#*n`XF]eyt,`L^:SqҲUn}4d3R\V\g=6++yވ@LCzGU{'jj@fX:X֕0H֠DS 2Q Ǫݣxq)6i ^ b01[U`)3> B3!K&G%aF96__E`PI]&V]NkIm՛1+ s9qT2DSA.SKi +m+0$wzo{Њ*,VEC\FcAGӳjQTYϗܖ4Kʞ|a;#={zP'h7t?+?D o&(W! x]oJ1-`Vjx~? ݑG|t`Z%OwҺkL=͟ݾw=L[㙛c6L4mx)Fgw(lݤD[;y43yɛ> !_AK}ѕw~v:*(fHK*|Iى__PmCaǿxV3'T~^s)&c}Os WZ@57)"Ɍt8ڞ415ߔ٢9kuN.Ua;U=w~d*룞33? m悜LaN-oVj4$Ҟ9`W)Sp&JK:,TrVHGY>X2[vdWءh' 4Ѽ0=w})Ku\0qS=/i\Ti+6hꈢ./@.Ձ3u (@*8X4S5^6dǍ̅%ڎ-Wb.Rar6XHu/OwOg5Ryfͧ9fURtz~t.G_U b[v|y&&7;uL1_W^rg/vA"/C=FQAsOB9(N?:sD(Uߗs;M#6er}ĉ Cy84 +4a>ORHv̅ȶJX|~8~==O +9;AdʔD3T~7X@.߈5X*HʥRڋw9u J"Ӛ +}Aߒdt'ReIA9e؀csLzdJ9ro7'"\@ 8{w{;TӨRYaqh"3b4Wbez,YXG*|mêj\F^Hߢ]ℿ]?/h*~i4pk*cw:4{5"' hl@Dwi-WT=wFr:-H *Y9e1b0=r\/ww*޼pRKzJ7$ۛ?OQ[6874>-,trŽ)PxV zP3&ۗ%{XKkKgTrX2?K=R +"ޥ̷\L.hP2pij4p;fJ&t2V\1|ι-g9f5P@9qVؗA×G\Y~>eۙr:LrVܦmБ  9$|AНN;P]܁W<:X:\g[@ Q1Q3lJ+-^ Q9;eǦ4_/z3Xy<6_Lqz2f-ٍ9Zw| ] +`/M/6Dd$ +r/ AߦiIt +H_s1xrk-<4myP( +B+Ab& ;;]َ\d +Q(Sŀd5.5.eJKᝨm _-_ +ev7 +!\. 2 %ٿ]_̃ig] c8 gAk==?R)EQ4O5/4^Tm4Ptz+_Bh<c|IN 0 ?$crL|sap&Vjj +-Frh&H PYwI`/(iH {D78/ %cAEdԦi Ko[*ZCh髝jb0!^)d yfYS5 +U:ĹgQWP|5hg +U T3U9qqUØ /*Mաyp o`Kqj! z# }0f5$!3@g>bx\X#^|gT +endstream endobj 8134 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8135 0 obj <> endobj 8136 0 obj <> endobj 8137 0 obj <> endobj 8138 0 obj <> endobj 8139 0 obj <> endobj 8140 0 obj <> endobj 8141 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8142 0 obj <>stream +h;Yoy|6M {%p59yH^O,Rk쟟ffiliNbiV(ۛw3f7u6>nz> ݏ7~nк3iޅB5+&nqޙ1O8n6LJX&k#v;IW +d|mRjYu3 *4 !Dh#B.HßpM8ʛ`mgZj,yKzht^_Q fϠ$=qk;K;`iHJFw7v ~M>M=n7B~g'|اj:Rίaר@Eo,X(.MoOL}gG`.-oӥ{7}77U?v2 橻<})=؅ XI _?ݼt|r=yN7h=a"m:8 ;>P}|GKQQw~u ZF@;7>l?DKӡ'$a"д}5"p%ɏ 3G?`;v[m]M8¹# mh0H Lv&̇u6a60ՔsPԃ4tohOo #! ̠*2#"Q7frVИnCw( +t d_A'4`):!{UCG7ԌQ""'DI$b055oqPr_a DP>ayn[ae;F_\Fb H\M.Bz' %O@<6a*l9.ʘ-P:׋?"8.()?ڠx-V`@.c"ǙjR.zK 7dfF:Nt/gf.8*JV;g  ^w0@|D\E Le˄h_b EOQmt?VV0Ca#&M"g; b߁TUҾֲ+ϢH͈nw]! D4/q&-j|(IyEXJEXg]jrtCX}'8녮pDu%$OkG3~Zc,f:|r1g4vǹ\fuUCUV{uc3ZXL }qfp:{bp5"BvET{X}:*ձ?k>Ys0] baeڊyQ%r[ +֕ޛc#:S wW"SlyEظY3$aN 1R?E+~X׏lK\]5VygUɻeUXAz Qma*"0Mm=͡&+\ê(d8rNռ)pKJ K>Hl|Dٺ!PS(6ܾW@]fm +/WFV9X}T+sZ SKCojfLb3Å,㾑/4;MZFhb(jYTT,q̮?1,p3cscKlKcKH´m^R*JZ(/rE/C$f[cp⌹lX +qDW]yW3}E1Ey|?bXhX*V&p\G(M8A6\+g|֥BQ j2Y88GZh85p7DMN"fee#J|h%mKg-:ma-մ`5\^ISMj⠆f\ܤk"g1 F2Ӡ + ˄nQiԘd=fjUSE\5:fV6~D͉Cai\DBUmr9J8gC^ uu!///Yߺ +`mH8&&BI4MaW?UE,G}rzYAb8HѪcf+,Q.jQǘPkf%aCӛ*MTg]]ɩr2",Lc6&>NCpNэ9Bz@zԽN!f=jEmJ +6$GPKAKtpYϋt jF39jGikAUwz}KRѡJ-z+'"tFROd<"FK}8I!T=J87 c^M MU Ur؈ћD&tWjvW򜭴\KWp6.焺qo;W{mxdFtKLF=MsYϑs3gw^*BZ8(HM`;~M :R$Wa۶MoU.x nG?e7 xn>{|?&6ZNzaF,&~8ut>=K` $:l vi$n{]S7 ::éO9+t=~ N}p0nD 70 ꫭpsnmW/z'ĐI-r CKf½[8ܓ;`@Ew{x H$mZZZ;l.[ wVQ"C<  +0I~ևA%T(P007\~9`D=VRq^-wӓƲ "AbO~8%7'*CK:~^ƀ A戏{ j#+47e[EĕRidW<9z$N*W|]kd +zK x[|6RAwZUsڇ]-+7UDL]ݑRejWHBJW}R,X+C岡ÒvXVkb52WfX-CV+2bj4d94W͕I[ˁh|kɊWLZ ~:}+W +-F#jNHaF +U*O~_._M2P@w>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8144 0 obj <> endobj 8145 0 obj <> endobj 8146 0 obj <> endobj 8147 0 obj <> endobj 8148 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8149 0 obj <>stream +h[[o~_1RХw2X 8A DE>WZr$=;+-0΋׏V/̠UV9 # CN4n5WjPmiG iJCJҕJw={ñ TR CIChb0YIeHpL.b'Z{i$G&0qccșf&Զ̣#O;꯫oV ~t9AsUvU6v."dQfIvkkPfvzWkz_K;.Qf]%6ayNbAoZ3eJn0 rN^|}wwx4%# _}r+ H=:Tic99>{eu)a3zvtp`/ð1;Ms@B>"ⰿn lll*UJNI/0/{蜔vvg Xj rTXiq&UvaN*\k`U }RrVoRF*miUX xN ;(nȌ&&IüN0Zkg4pO +T£g# +.GּH% +eíKvxR:Gd,( ~ {7Ѧx:\->Fx?E#,ZmR1ҊI6tmAXlSP f!N_u~$$7IR.QVL5NʷTma;;n/TrjB@^=^$][-aSBͲlO&0cɣ$ׄN>|1J"SN*\C8 D'*K8.a@AHI`3C [\܆ c 30I0)SjA4r> m~C<[?@@ a}@A92"p Lg[.4EI[Q3TҚjW_u'6E潍1.,%'78|q[ޒ BMǎ00c(4?6 GDk=D߄_P0MƏ#h?hָF7PY~bd:iYoDl)$ԽnRCLB+Dvu-"EpZ7LA&&6qf7E4]k8iWd-Ωb7%WT ~Q,*i0KɶSb:XE9 M8^\Ւdq/6}Aq S”]*Xj,irC3Di>6^p@- HC=p%9 -W.[[<޻o3Z4_-艇FK. ٍ݈y N޲Hu]fmy`2PĆ5|LՋ^#1g&L+\!KB-&G< u:xxDy}0n5cFN1`y'sA0ΥNwg:3?3:ݜp˒V y( p(et!;2Kc5w=>ju`. bX}Cz?O OsxgylCL#t*uݗޖSA?]X;k:a +}çRT0? R}0Z:Y&-yr(ʏ\avLL5M\CZv8YGTG)~],.bTpmZ𒑝7W|B2ԷNJLpޜc8\'(@ Į:k@f2G!eҙ# 6 9΄lf1^P1Գ܇{ S,=r,VK/{'y15ȯ*WNӗ.?=~6E;nx&l$lL|Bn` + 7> +o}00"+vkcA>@Q~J] l6Ficو/aOglmu=SS#Mq#ʽULO㌤0#v^:E!b,d}w,a4=s1O4kjlݾeN`ðGs_U?h*}&/zApPma֫eMG]|trŷ/UO|My|*߽}[o~0ՁTڞ~㰻DSf +R<qʋWWؾpi}xKEaD3< vKG {#3ׇ~D\V?+U ]f}pM + @ׅ4@/qB {= oTd"ě%C+߼,(ĵydN]zNg1@Q>,lp>A ;;0c0I^)M"˨>{ + ,sSwfpc1 >^ZmI.`1r=h|8ɣ eX 7l*Un |i}Q嚊[]uA}FHb,uICd0m1y/g `P;*Ox=8Iʲ1UKC|PՕ*÷@|hcmV9E]8q8娓T̛d*j;?j +endstream endobj 8150 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8151 0 obj <> endobj 8152 0 obj <> endobj 8153 0 obj <> endobj 8154 0 obj <> endobj 8155 0 obj <> endobj 8156 0 obj <> endobj 8157 0 obj <> endobj 8158 0 obj <> endobj 8159 0 obj <> endobj 8160 0 obj <> endobj 8161 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8162 0 obj <>stream +h[K9rc`:|%3y+`UkKZwH[lCԕdF|d|zś+Әp16Ƕk\su5..ۮ3tswP L^B+lF.a{i>vĖ[z|s]jG-_WZ{&h71 L5,\Ӻ 0L*ql#6Cb 4'\2`Ч +e/. `TQ{OJ{iP/çfEx؈ƭgRbZ¶o Ա6n6`0 Eɬwu\l Mk8M8qq){XC;{?mTQ +;νJ]$~zV6pkY@Q <)A" ۫Dfl1K˓q|85o0m#=MqnzvA͇&ͥ5ś~:N~ogXYۍ}yx\i@cQHtOkگ͝A!HҺY.Bɷ`064Z{XmRw kQـ}>1XzH6rzk`VmR˻4֚8մ70p ZXwzt۶G6qF;"q}*BoP17n炡Pҭg#mxX0),^ݟ?/H*paX`-Jr'= zB㷱cgõ +H^+!= @}L2 {o[bB=>!>MG\1Ct'$0#HÇ6YD5k$l5V hRnOz1 ь ͙7&մ0bp´}-jd&b s.s1c+*CX&2IG.)WUĿ48sgVl gl+3jv3PI=d5L~KtJU~(JX;B8;WɿO O1Ta5Sq$o&ou"/8vkCܸE/^. 1 +'T<*`H̶i>Tn³@@ +71ؚ +n~z<X_F0UvCzXsXyu{el0r|7Ǜ}xvxFRd>s鉺&O@6>J=p[~>5k6X=LW+ޯ=tk~'{Zw'+_=GM68fad>nծaU="ۛ=4(שׂAMr/0j|xhW.DoXCSt8VIgeʬ4CI4zN{?g".nd ~ҫe݇~%(;W؍ }`%?bէGҧsi$xK +I&jZ$?9^eʔ H-3h+.\U ݃g%Ya3مSU#z 'u%]mI{9Rp HMTпԸ}Bj\JHMJ:dS^KA֓LDzö`3vEaeٕ0F^2f%J9$[4V"q"+ܙN +gM)C(KBb6+4{I*!f%oWZ6UFW^;PO)cj( ` Fs8(]lm(hIY l,(+LE0AeW72L$fT% +7hgL)s,iC%^ҭ(#'|G~H&ph)::my[89x'ɸe=T"G&jK`bkt2ۼ(wD(~8w^jg||(6ܹ춍dF{%`+`ʞ& +A؉ޜO3іܥ$5p!PhRb!*gUN#ڪT'疤)V/%x3+o?rˁc(0 -Ġ' * t倪GloOX# !55rpDC1OdN$;WOQH$6iHPsqy*t>Ea~Zkbz]^y|ʟ?@j8W1vNnpc B-0BU| " +@+&8 Rڨ]>8G4FB/#?GE57 im HL%xpu$?.'jKLA9IsoKZ8:v%o>b05 cyKX! +cx!>AwHw*z?'o$ +5`ۅ +ʗm4j_ʉ {gdœ9fA Qkx\A$.H1qyϘ;Eg omA ;}'cD#_"M Z&݌!7v +qH؊ZB5|mDJkK;(V +4@q w|Y¹Q+++W$f-CĠ5(De~|ra=Elz%Mry^Ԛۨk.߂-Xٌ'oV%e5mumk {YHrTAG Vw@?䫋S rvWw~F~V)u TO qqۼY84a}])Ay%}QlXQikF::Ӗ6lITeHbuMY\ oajVA pnt ]}:3aR +t`gYbHe8N) P#Yx'6~P0rW=84N)|x +RN=xdu;Za%b\B,Oa ,%LŭM0h=C |5>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8164 0 obj <> endobj 8165 0 obj <> endobj 8166 0 obj <> endobj 8167 0 obj <> endobj 8168 0 obj <> endobj 8169 0 obj <> endobj 8170 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8171 0 obj <>stream +h[[~_я=jIa1-q afړ(;#ߟ͞0ix)V"~Nw?zusc:]eC72)<^ OWjnPk(az~3WoTN*]KK쎭vm2H7?%u@$ʌB)`?/]Ʃ|ePlD]kYkd18ڰU[`Q7i$"A2͏7y0]:elιS.机JtXfFgjQ!O%ݭΉCiXY{$Nef !K+B g.4_a +*6 Ğ\7N\w): ; 4ؽGy񾓞zphu]7rrZ4}tk)!z=/r,0 +nt=~ñۍ?\XI^J(:DFпɯ( (&@cyTB^/ԕ)?`RO;lFu `_2p!r)iǚ1eyGr +9ͻj d@]9\n|0{G}[y\I%z +~O^_Anꢋ*L1}v-{gTSa-1뙻ʈJi(I5bgg$apHjZٮhR'br:?N Ķ?i(mrYɽNYkx~IL7MnEeۜBXeڃzbB]r+,z̛&i%>it-6N9&s%jM +6! %cOA-F_bM#N6[͘_8,5Yٹr`I%O>B6~I xGbGm&/iK٭5jBfF&>E>ݶ= *tcV0{r3II6AtCCfWֱ~`aC_fOmp/GfY:mIN*V3Xϝd +7ۊm;#9亁_9K0=aMo|b2>6#Fz݆T!/UVP2*c_F&D lN{of +s5INS#m7S8wtƵׅטr4Tc,L0[/)4&.(!iAV`lYg_ 0m_tO,q; NYAԲN.Alj3Iױr&Ez CXEO{O/]띞. O~V|8Xo;@Ôa:Z + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8173 0 obj <> endobj 8174 0 obj <> endobj 8175 0 obj <> endobj 8176 0 obj <> endobj 8177 0 obj <> endobj 8178 0 obj <> endobj 8179 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8180 0 obj <>stream +h[Y~G0G J`<\Rxw)s)ﻮ>eĒ@0곮f/z0z9y\jr7I2!v!wV-&z=w}ZnZקּ=4shR=uOLa1CK8rНÇP&or!-$˿"FR`6A:;05ׅȬK1Ejp\Ɠ-$۱pok-AoU'eсdEpCî:\ԸpJ",B7\Zaa:q44%rZRR) 객&bdNaLG+ӹ̮#w 茇"(װ8rEK4QwIq]7ۻQ=9h#y>VQ2S2/='pm5 +ɳv7u=ju}rb&(V! Qmn27}St^խЖhK4X{v(_0CR!-@ŕL + 3J aP[ \.:F[UwBlDARrtlƁHf$̇u]&a68U*;DL 5> m#?dzNOmo  ۘȊ!H!ӁI5pYGEZh4hs=ʉԨ+0.Sn L|, $nGb`W :2m70eջISD@w4 v(5O"^p5D]U+1|{UʞGH-!H/&8x8xE"X z7tCpB{='yOrCMg5Tv%ZyNZ2U!R)Iw8ؽd\hSXO|h>z:kpM!kBc=]@LcW[f:P +)`B3]{9/=K|+RbJzfN^Jrlƃ`H\k( d(kU6m7x_Bo+\szz~-ͦnɲfAk iCUE(^NN0GrbjÉ<'V[~y)ir~oQOy263NɨtXP Fmfc%c&bliW+24M Z 5T:}hQn>#EUF[pc^M$$c0y60KgtAO WsL CzA#pKbѣؒŊg:L,'F*[^x#&3sq'pt"[ZW'ft{3tCB3|#! ቡAIpB 0 |8^_k8֎]u8=- P-K4yFk1*{zb燧P\m+$\!]>nM>PVE]2;2pzMwb(>ɵƎ +lKf<d8Q>$%~ʌMrtW9ZeU̇,Q?tb%0H"݀\>Z/BaލZF{3kjN).Gq>t9̈^-YxNyȫEyʲ<&O:5s˧ce%\krrqCF)^.%<$GZs9;du %kŻ)%(Zy TqSѳJP= n*9?=x&(Hr=X +W70+KB`F>Hr,iswy{.汏;[ٯ?"#os?56L .dž& Ɔ500u'#S(i%W.84>'9V?rO95"S[[ERL%sH''^( Hu%R8_ʺUAn7UK|CNlmY5YusGǵQ˙X9cؤ/Ռ(Zxc:j:8gp7T iK^4fi(='N)@"iQ@kNԤCm`F8zC[]^WZF9lskοI(o3Kv7Nͣx5vf0ݩ?c~x3wv+ũA-oplxup̐wpy6]x /a9* wkfܽ}8Zؘi4tAU|F?m7-Q[ݾm^JN~"?*IvK`@n7~;?MX25`,N)Xusg-Zs_Ǭ7d3W{%e7ܺ[Dc+_udi7ݥszXՄk+_ל$n&/USTV|D7鵰ҐgmaTu)7\@1PnJAX#\mzl-.ȋv%ZBłoh)&)[W˷ ,D-t)l` z,]~ac2w&R|QRO_/V이Bk*^Tq0nMۗþ_ܱur/F4ua*?wBCМrYeen?a7>} |F=Lωc*lIHF#6yqR`hII97`l"ÄlBF6է?bß1EC)=* +ܢr:ݩ VeW*qDw+(SG#[D b<N0@H.JD0T} +endstream endobj 8181 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8182 0 obj <> endobj 8183 0 obj <> endobj 8184 0 obj <> endobj 8185 0 obj <> endobj 8186 0 obj <> endobj 8187 0 obj <> endobj 8188 0 obj <> endobj 8189 0 obj <> endobj 8190 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8191 0 obj <>stream +h[YFr~_ǪLf2BW5Vj ?TTkkwy9d>4nxw6;݌84C?ڡ }k>ܴ]uut;ɷڈtRN JО8{o Tz ~hbe[2$Lw\Lb'z$l=-L}mwq *M/E;ݿpw&86 t#tv8n;ڪIhL?!صpXmk"f^vOX7mt%o[["σM؃|䲉 І8< 7f7ś856C6rw߿>>/ͻ?g?~`C##M琥ymh3-ܦ}k[)a3ݏw//燧ph0ކv3D>y;@ 4>&BsxZ?h CX6)SeM\HE>Ɱ nrm!UЙp98EHQ(.[n7޴f x$x@wjt@+wokww5BMFy#-TiE5DG<B;` JHC=\84 qYWL{D)Pܴa:,;-?Re츱˒2T1PM %;`T&Z&%['@k@D= cLdGm_ʷ|4Ȏ8+TVv Qh'ᙃusJ+) +wd($C"5&sJVBց8JDTi^'px,DUI=}1&7Gp-vD̮/qhBFgLbݐvz_*(ql( EF6>Ib ³b$c +F .b<A*+I]#Z !Ģ `)bB~`7]aZ1]7StGdcgSsy_~܂u6w[ Ni`osy~4o?Ηb9jN- 1;v^.4˶o#[͑ P ᭹4M=onugʢ ~؞¶PŅ +^.TqNMBBЗxQmlɩNP)]'[sl133)w~ {9s<ݗ ^FYo*%aDLCX_P|S*~y]X-%W@ + q'zhW|Kl8OT.Ġ#`-3 Dc>@*Kᓙ ]2Qbp^"~-zi6+Cl5P-Iٗ\*q +-7PFb}%;GWޒuNEcgƹEQ*Q6[ᤸc>(#2>:tO1;]mU.o`X7U5'Js}s5 " +UFb>ߚWΡ:yIU/u(Tuf[8)Ž~S>$ VY7gM2g ƨk+ׇ3.:9SNK+g_mb般 ؜h>0ota3DgI-K)ojP39ijcY >RW|;tRĬAC76wa}&G nP4Ir+ +S7'Oʈr밣2Qoт . hid1IZ#Y&i 0DVL$#dM/Ovlmt D +_^K #޾{ucx?/y[BFLs4|n/iD[d]H5:,3C?+ -=|Y]QǮXQ&1uk}v:*7*J@;TW +kf4_fL5SːE+KUqOG_eQ7X=kp`8) =hQl̢ʹ~6xP-?QA[ٟak~ݼoxG#FgY I.<=m7XI?ЎYx{t"Giq˞ʇ7r[zυg8ǷKs,28$l^8:fp## ydIWݳZ{g=h,ܳ8 ^+=!–-hկ>_]O{u-S1myx!_+:amzUarr.|0.j+W(ܾwI֮Iڌ, *| '?c_Jr9SyRʐ2x +~CX ̗0:l^[5)>L'6xbuTATQB ++=j͈fmGTT#M hj(6? cy(9ɰ#8o1Z4@W}|חַcщ兩~9)R)MR?a*X*6PF-i^0Vrȉ`(o.{ *;EGO[= Ԭ#'(hV2B'hgjJڀHcW4f~n +M7u dW_1fiqeZOP\U? +n Jk +hw#Ync 0kcn/S$a{doM4BMɑ$ q'":o'TB9RPReIл|PoIj I}!K~V_p +.M3R}FRw1nNQ{r̐N;uc4IR8ʯ2RZVX UuY`DLRfG AMpՉj쌺T]; NKvՒ_+%T(;mw?VPN5[7=77n~ʟ]9_/S֕wߜ_ibu~e/T?|~9o=fQyEF`m`Ӓ`4}|+ +endstream endobj 8192 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8193 0 obj <> endobj 8194 0 obj <> endobj 8195 0 obj <> endobj 8196 0 obj <> endobj 8197 0 obj <> endobj 8198 0 obj <> endobj 8199 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8200 0 obj <>stream +h;nɑz$R]e4 +Xk] x ?~hy$%#2"2#%ͼ`wDMoMgۋ11v{?b_a0>B_7@7Ϥyz f֐pvmygL?̛~,e#v<3z_ex)Kn$`g9fO R'9׀MB?5-]#e>!X}n஑gdHG jgىWx0p*Iyi= +s=1l^87ζvOI<.3vu4uO4vϧ ~;]1I-Wi FyP%@%G"&Iԏ#Ng{{Ƿᇷ]:^ig]Yu%20iw;n0Oݧۧ织ݱ{߼}niҦC~١2vvr^=n=|?3L&f!ڼzBb;6 XC=dS?a3l'Θ>Y;ܶSMaAnj}D4iLv&}4a5T&SީfeҽO mgwB3@z  ^{zf|_frИEzM^mɭTkh-L<04+xJGP tܷ|?T:L.NCAmi4Ru.z3%+b~˘n,? a>#A'T:~,N(/߆Gs3FE4i|x`M~J_ _ 7 B2 C~CwdaK>miMF^1Q[ZvΏk<.2PHX8~g )d^5mT@ c%hP lA!"^@',̛2 ^Z@Qԡ U$/6xzubywl ٢H +C7@- 3}P)(jr6X=`lAyu;/pR"GbHRև9yuV 2`;AV9ǺC7@&U:ḅ*Fok;6edS1W5xc +;䐥pn0c~[<;s#6HtnGm=+X={ج A^3lB%T/ʡ3BV2W DPҗF.s2 +˜s`QEdE1DډPԴE vHWށkʒڜf"r=PI]XF6&NX̋԰a[Yh\f ሷPrCqlʽ ^) +Ja` +У?`ՂGȵ N"]#lŗvvɤFB,'"xm3cqr4ünJ"Z%\-ˋ,"/d"D +"㸥+FVuJ"'gV;UAJ̨C+)Z`Bs^\- YQXrK=>%qW(50= >@ƅ$6,kU"%0߬L'v 7;Lh3+3REuc7AH8!+G`bfQk!rc@ =PIKr / +3!^ѲRUc+;HF(BX<ѳŘgbwZ*,/kJ+J 71,BЎʰ3K3B诒'IMsPl /)0EI(Dԕ2?J,L $},i/txm":…m$oGw3|eOY2jS+\{te._OWv)$輾 꽻/񉚏-k;<nx£_Nǿ=R{8{gÞ1wtO 'tx slȿhpŸHzcIm2-GʌEV؃b0+v9A8WU06^2XjUv Y"Ionlǂhi/>^_>B"+2V G\"!~M$JFWc}a؆j6e%E5( +CnW3d& ad<6[JU=6}+oRXM"X1BVW%tkNcն1 /Cp="]tIdblVi(kaر jZzJSP{)˙8WQyoevِ5uPsrY,d-yH= yë>*(}JFdž}k=9-0y9ʫ*Dv*&,t)Y6XJ. +8ZHw9܄e6,2 lHq <AUP5p?yMMha3rO[E1_Y# dkUAwI]ƢV ﹉T>1L?M{% b,ZZAL Ϝ~%BW7FZ*'÷ErZaЂ֒s8 iWmnM;4LG(vZgdêӫ0tHl%WL8Fc!!=ct,x24|3JٵAbv `8u+ Zfן&cӏٌل&\ނBϴ|}79~ w/kv/m*l+T\`+y_OoWK\¶GwtjhϟNewx|=||74DcW#F8[Y o= }:dTO-y^ZL}1hFΎПOWS?]z-(ew0p',Bn=# ozOrDvJW$Q_X,z>cx_5א%nL"}Z"q¶k%㖶nR 5=+RZ $#J쾩H|3(S:p<.b*$!lc撣? q%[O$3S^fٖ"vGH9Cc9ok&whd-L,: V)muUJomtUdo<4ja\YiL!im'*OLG>5So6$DDL5Irmp$42B5Գ,TK+U{B-1F9Y. {~뤨T|lȳs*]/vItGT +flm1 9ָȖVsF5Y2bDPܸH_f +o\kDA.~M߬3590orGAʦ(z+B蠝u)OΞY/GYbu +lBRF5ŧb˼U:|V`vznKfYʈ*d˖JVRN} Cƚ5mٱA𥺙qbO6#3յd }lki0w'w֩* *0uK.{)11X&Hj]\Ut5|3be>-*gFtԁXC(XS5y,cO<8k4%<ہDc*IdT^X^B.=]I^+ ak?|_guQ4X eHFђwQ gݛ_DNfLVP|->ïqlh[|֚n8G'8JD*\1I7bj׿,P +00'^Ԯ]F|׮X^,LkG0%ٔ00]CSQי[UjbSި=IB0ok8vKe. |ȰYS-!u>TLjA:NYM?1i5ŌKay_ǚ$[QEWpR+ VL&n'LL!iߎ5_tqnXqnsyW/?+l, +endstream endobj 8201 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8202 0 obj <> endobj 8203 0 obj <> endobj 8204 0 obj <> endobj 8205 0 obj <> endobj 8206 0 obj <> endobj 8207 0 obj <> endobj 8208 0 obj <> endobj 8209 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8210 0 obj <>stream +h]o \~h,`Dd9IINydncvvfv/lf:m ^R6.u9K~g~`h>9|&h =LƸӑ8G]$/O2u"ġ4]IPE +nA+RDS먼^ZAr_=> 4 zc3| ܻ.Ö8? CgBgȁafp~DxCo`$5Qp(3{%2-iC茛lhq`  2aI&7ęo=$ޕй +Y`>?W{4wxLTisMkquKzz__׻pz0C$=`"ea`񘅈ndzБl=`gl/7[g鋅'0ov0Ι>9-.p[pCZ@O#&Ja-&Ɣ [Zkg1&5C,HZA-MwP@s=(hY +X +Wn Mk #}}[^$8371/3c%Ax:b5R_->VփM Wَ;}VSݣH )I/j%y8x̐, F`8t Ǔ=)x$H +͍ejuom!̃wbL*@nh#&:ܪMy" +5`t :#6E<]j^ߟGg>{`C}A^EՓl)`ZN$蜭L:)g`d:8$@8T=#M_{ !0X; r2Be!!^{'PI J"D(sh:IП0saT4pұ\:&*DXа(=^pko$a9J &$0󐄴Vr9C4ρP%!zlQ9iPI[vk_+@9p|tkHU*B UZZxQ8~LwPpx@jK( EMQ#"f!DʦeCC{GiEuA>$~N +b̛p2aM&vHv<ǍY ǸAK8?pgRvkh%#F,ÀT>  +Ki tH3 :?t_co}f2w n};v_ݻۭ/0w{-xQVh㌴}E~![^Cwu}q/Lվmkbh@&XD$^w{D:#yz~ˀFAw鎚193 |,0=Gc` + ~G*/V>\35D|7~ߏ[+>v_hΙG0WkLCXӳNmՠgjٽZz;p5EԥvLN^gRX-Hu;#ihlY +Qe4 k +=^fNAY4g=Юӣ7O.9i~,B ytC Y`P9ћf<twEtWl)a(:@ cINNϧ 9u;tgR>@5^ի6ҫO+!б:\af:a,]HI*1&>Mk,\j˜EToGkI4RlXbRy4' 5!Zt#.F#WV59@oWZ=Ťl0*Q`\ V c7e #:vR7fVYn[I{Tc勤XV꛼ijެw`}bvmջrjLcNk}ӦAQDkLSGeG 9 +_NaɁ8Cs@@m ++I_j7nr &[[jxh?00ղ)#PphlFN/tZYrrt'UR<(q/'~J:"Ng lc1j2t& +endstream endobj 8211 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8212 0 obj <> endobj 8213 0 obj <> endobj 8214 0 obj <> endobj 8215 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8216 0 obj <>stream +hZK$k|>̴fĚY jB+22oW;rxsNC RSC0~|8q6Ɔrt1>c06qv (*--)ڹdziEڐJÞg2˟I_5]r/5^z=*Tʩ94RbJeILm ,xULXCt{kRz6VD0 hJB*$& 䶄sˉx ͣH\)r2lfkretx>5A_ҜrH.NWᚚ] : 8A hQ[xVMK\ALt"?__7߾sI) $[Ho_M?a0/S/O//?|׏G~S`!4}E p8:3&ޯӋža0G> +)pC\ffc$f) $8y-·b#<6Ixz\C0(lS}R-e2;vIs@,HcN͉5saՕ|CA}Zӌ2`*|U8q0qHgy1;X& +\PX>:|uǮɦ+R[Cn]=ρ¡$ !3}N`vЋ .5ؼi%ԳS$& \~k)(.B~5D[u=ɔnwCT䦹 [ClQ9 +9N)"979+1R0|?0@2 UU=Է(M}Mҽm U2lKТg w_wZ\>K$1ɓfC)A}Oj{y4 =X>Ge}g;Ҕ.'&,^"+]@MՕ,>FyXFӣ3@T ފ +t+CӹMqJDU6%_>9pPɭJ[Art&K1{gr(,vxN |{ -{j$KwU|3#I)urq} VNz` |'J~s; +ϱj۶N8%7 !PΥq8Kjm\\H[ G zN1;ovEx{մwi4cl1*r"݇WQkҦ,bCfG-~p[t@gvUwY%٬%zƉZvڹU)c;8"BH ,v,Jb%iGO()GfG&-2g "S&6Ip)LQa\B=XЍ L/Y;} n%+zO2ndAH5`G`w`1K=lf`(2vGjtؠ6ڸz-Q%g~퓨swvGSBp}.{YӢa"54lb{l/0y/Ni/qચ޿\i{Þ /7֔T۷,I{ +G>ÒrѕKܕzzae;e76$ }s7e# +rxެ!,CB=m-Jnw@OMs$^U4 1_5w)MԚbhMFWHOWDAZ dIOEB 5ܥ=$$gԽGvbN{e%$$Zu{u_hDR3/Ҝ9Qwߌ*[oAg#4Ko,HuVvDȯ$o*!*wdn(&4*XpVQ.羗vg/Su M]TFOwI_-_-_-ߍַDQ+V}ByHlzZ񥙾E'gAM;ˉ#=m>mq)nm{ Q۷!qK]ri,ufPڢ&T64ivM(=])~Dڥ;]N"]]_ٗ.=ү.=ұ'f.1lvܵٗ=ҷx7fWibVYZ!mۮOn}&c  +endstream endobj 8217 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8218 0 obj <> endobj 8219 0 obj <> endobj 8220 0 obj <> endobj 8221 0 obj <> endobj 8222 0 obj <> endobj 8223 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8224 0 obj <>stream +h[Y[u~_qI#W < lq/r7A~Fs./5$F` N:W {5||p}w Fhdǫix5N +?_}B1NSd3ܨCJ{7tcK{ICaeXYdH1mZ!b'ZzF btë60b lO|JDR?] +1Cm#EWue%2n!LIgGۣP7UOgf\OK68 400"A>hfbXQ,7kEhPSٽ̑# UL2\ !03Vei)ș&](;5 97l,뷶Y/zM u%L*6daN@mC &g4cIc@ca +ѺhHc%"hlEsC `X%ޜ(L굤1!iϽ2f]N'WѶCa*TIL"4^tc k!*+wEdI;tBYM 2K%k"}Z]L.9Չ'w$Kms04 ert,R7H +y3_: `>GuV&2el2["i,s@}~!o~]@g +2;7:fT{Ɋk(Mw̫E0öޕrBrX6 )Ǣ xnl| mQT{j| [BFX\74~i +8ch_ wP1N^-`ёAY FߍX;bv-fl//+_/uݎ~lo+~F@J^h̏}ITX.¸(H5;k<;.jR5$w9%VHV 7m" pmcA6, /wl*ˊ@Н4I 9bS fs7&uV6ZK@鐏h({EۜOkMƜW'g|Q>'UxY'ZBSbWۖgb R:PJ|GGfgK9S tЮ*NTi;r0|H!g~ͧ]9C\uSㆂ~n;VD]h"Nދ.#|@Nꩄ5{G_rJ.-?7 +7}76tGfd+RrY9B;kȪ@Owm ++ׇɒUwQvQ(7>|;jJo6ԕ$:8Uwzޫ|]1%ͶjL'>xӷTZ IKQ2I=Bc,^R +Ba5z6v^nhJF4~qt:y~Y@ыks\e, +WP.?١k і-8?skxv)2QmWnMoiR밸mf6=~Ѫ ?Tv ;]cgn#r V9Kl ib.7K~U;sWHgGAXB]O҃}0(",c|f΄2*\̯ _[2߮_!{.2]!ՉU\ eXǵԑ{GZ/2oTV2TwZo8oO_֊:[x;h9#p˃p4^7wR.X Xgbf] \$n&n~ ܝ\|_)_oջAUo۟s Iڞְ'.g}0c/~6 +%.zOUQrÏ/ + x_fxzgH|<%<?0?62\F]`yk<+vDCJay<>'<>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8226 0 obj <> endobj 8227 0 obj <> endobj 8228 0 obj <> endobj 8229 0 obj <> endobj 8230 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8231 0 obj <>stream +h;ێ[qHQA ֮ `C$spw$vᐒm,@}{WU7ӏ|x՛kg>\M¿\dm0W|Z ֺhwкr絵!nϕ* z݈-KC8#B;MvfƜ0̛zX<;Lj?#^(@gSJX#s\7ipkFQJ4D Ce>@R֎YՑ`SfYOٙdE:`WdIl"RM5ج<-72'?$|(?\_7>hi2C,4J@0qX?tQ +rL]+\zVPqTHJZtisHMqClaƏ8/=oh._'zkd楫~eJj>4jpFzn=~޿}{|nw `y(1:H3yS!Mѐ;ijjSʇ!Z@+vt b&h͞CO*3Bl@ma֎IaHضa0űa:3l oP<~w 9lDāRtghL~&Qjᨁ4 `, %=x`|uߐQArAͱo^A@:12I7f ^ИnC:v$ + :h!V)]kx-#p\95 +DKm wR8 #u+oFBphV07+rfb}4i1S<P zkDPQ#jd䎚9(#Dx0Ma*_O$KDNJL;R"AłfEs؎ھvɑԷ(K=U^;"^$\l *RX-~`-l )l%|܉߿g9T~)H@!|RXͯtk/G1Bֈz ,8i*in`z - CX3탹YrG|yfX{0+:~KwŰs( ۃAnx!~1Ծ{ٛgpH=_?Ac? s|lv@'?$F,pR d:;dUFX7Iw@,kdp3LFyqo$.->`q|s?,ݟ{7ۇK!ߞvq_~ 8u7↓?G@y==Dmc~ @ܢOAE(#Æ#Y4MB-%X<('݁ϴ{L:⇓1(5Żafij8D-#6, +3b?wG`/~ ʈ1"r;j-!nu+VjIA5{%y)S|{R;I@8ݞ8u`T&/bH˂$pGa-ښ$ᯓPX> $@g%JNVOoÏ^K;wDrN U3g+NbWS8m'q'2H#%EZyjnW-IYEsY[9}n Q;wBN_tTtJS{n!bQ / 1.j0hh9IM8KaA DRa GaK-!h+W S@eU5+;)Me61>uGH IsvVEV&aXi@WG@d͓3HZE (ks'e@DdT",lk`j>B[¥جV-(!JJZ@/R.\'%ك(=:pIit ^+{0,L;ail+@M n oE*] +Lb4n +mH8L(3йqUe{Ms~(ML=v$x҇:SGU&S?7g#"SA Mf9ll,c?g2,OtVzOm #Fe9=CNB">AGVTPx" _='WB Xi{/ӷR>R\t&6!ۧ#) {ssO?I-z0Y<>|&L_IRT +rxzG~}>mw}yz{aon 4@ r"wo|47{ KD.?.Ƃ``*`Q )x_,o^w2 j>x-ֲI+Iً +UY97րz~V!ņ^]3HTWN#{yK~<ѩjZ52WZ߳&֓I$zK +{/$9t5֧b6 z貘b&qZX4rݯ1 )\8R-dzYNۢna4[ދdpΠKN>h'ZT\֧nyf jfy%D1:!mK 5!c3>ojAP|*xIz;?:'3ݝ櫊$Tl.N,3S6Yu +R=vevGųoD^m(̯!\%I<JM1*fv K94d@O)1؆Y3^{sćyrSsa i6J&ČXyOZ p*_]\ qd/;W[P'Uymg$ow0ewBC[)ߜ vp/!ʯv$0N국aet| %/=c{R)T%i|~.f#x%1-_dNmިZZh|!wVWæ:B8r +Rnjf0c>ZC{:'5e̫;Ϛ!zy׎:5Ө(Lc// +mR^-NiKr]?32I~qz=E>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8233 0 obj <> endobj 8234 0 obj <> endobj 8235 0 obj <> endobj 8236 0 obj <> endobj 8237 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8238 0 obj <>stream +h[Y#Gr~_QB2BR]=joO,YqckFͼ"3#"#z?w3O?Soc8н~_~^Cq`M 4GK`Wk-TF !(=ihD"G3 IOk^+QDCsY!r6x@dƦ8MD8c;`M>M;v6,B#"d𦡇͒V=ΉCdڬB8mcm6Bk~#&Al?DKá楚b9:*۲JCj,CJ6sF~50>crſcoM5f5}tqS nGd,3D`aJX?~}U%C<,pAČ:)7nrCr3n +c +8do8L@Ox>YLn}M9v\OuT$IaN9-j ܱ\tl52e>1|@;ǝqt.r>P +4XҀE?Ρd&NAXDocš1Ϧ pʍb} F$6wAS X#8NFFɉ#CO빘IKiOP';zNi#paS")` ^/N(0,:!\O(3MЃ` KSAYӘ- H#+0tW]N1:N(*ƒ|<ZtgT2KaنI:I'Pa8J9Se +!NNZZ 1+U9K~. MD3yHC8ߘR=  +ԀYIe\'Lj7.OXʖ=/Bt>[bWϼ hyD3Fq68تgհ Ԇ cGjywv]Z\Ƚ`Z6 ̑&oT<ҋ0~V R^p^s@.*p( +K/AF,D6At=8hA@92߬%vUk%'$XЄ:<W$VmX@Ԙ +1V0H͖ED@Cq46$8?lbr0A{"lvrjy32 R(h `) un]7./q((NxےU\23/@Un1-VbP/YoT,z_t:Ϲj(W>Qer7Ν")m[(=/=l(L3(Sߒe\DQ6Kc@>Q^d#0-> B ~.úJxMJa6 Y0;° +R> f/QPxdP^ѵNzM}Yu|m9Q&5f +;rȨLT!ahQ :lF68u`cjlj;*-f"f$T46 + 8XCG*jy:?*rf/U}6V35є}H4Iti~dme2ɱHG|:*L7V;-+;+JxG +;= ꬄ2Q5j ))r"6fbjm +S#L&*G|@p2Gt]$kcCǕd "P0iEد(9 ZfMK 6JUw٠g%s[l7hS&^jV.PfMrDcr`NV]\K>|#bM,#~U3)氩Q:Da} ֨Wh#t( +2Zs)%XV.Λ]&V4QMMkhrTi SP.Csq_'}@d+ f_MoCY}yj8R݄^қ^ +BT|~tّL +c94IxƌݤqkúG[n +!cx-S K8l`㤍6 *(6!6_1۽6 +rW5ңK $ /]k|<,&W5L}f}tӅ 57,W^,NyJWjcmAK{ K=ƮyK3Eh9MN~huOK֋\zkbK`-AOK(}4<>cYlKcwBoD~IZ +taW3>>!8.1^5oԽpdי',?|<+9yD/u$zx[FX2x +Y3a{^^imK~\zx:l<,~fVt=ۺ3sft/®wK}(5I|—eg%Ѐ_C +0Uwp`eWem&ژʔ:̖q6 {.e¶J3kТ:%-ń+F LycJ/섍%L$FlI/u|3oh[x0HZm4pq!Zc"9 2k]cyXDabu2}>|",W$,˙ 5*L`9%.L-1Tj@} +I*96!W?% 'r{J.rN49LO&@M=I`V*S /6tP#KW ޫ*EU fk%`%y~F \[n}=.06!ƃA[{EoI[s/SK: J#씊+_᡾:yP_}uM$vr~FV<ؼɵ_"q]W0 ]L2d>lONy{z;_IWS;ESG'P{Asn>|o\vގ'Y+|c揧n+N'#}r/Q%Mf?^᷎͵xĩ3s7gw6]tM epsO>(x^B팟y"^b\ҽr "v)SZeW.kԯXG劝1⋳J +*fOAXk9UjwM-6{]8_=3߶G:WΧ㚅{]uuf^ӧO>[nJ&^7z3 +Gu6O kρWƗu/~6)HOӸԊ˟ڴ/N\ }ׇ8Ls7@W.$f4[\sR~&`m2έ s21M5mAAЄl5CJg.]qim ZADqy&aRV(| ĘAr{A2TH08J'}4nrԄ(=sH>ݘ8 ύVQ&Mu_.bu AOe]iCt_#m>$_,Z>@*1ʇ c] -] @0r()1>ƺ"#OLrz!~J")أX-7ܤ\t}&ܥ$}bfsAY!e - ٘'`AkvȭF/K͢yrUmʺ@0X9wjZa`i,7gAhm9<Җ6G9@ g?̽6Pۮt@i>0x/pE|EvͫhfNpg[;8ٵkv64ߚ+K뭹z{0溥沧ṋfxF) Kd2sf7 VW[45M/X8nfjZޙN)S +endstream endobj 8239 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8240 0 obj <> endobj 8241 0 obj <> endobj 8242 0 obj <> endobj 8243 0 obj <> endobj 8244 0 obj <> endobj 8245 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8246 0 obj <>stream +h[{o#q_b${ p' 8EQ{Jҝ ĩg?]!`,~wWWW?WoMg뻫٘i\wj_ma0>@~ 7@6gnz f@EXC:L6ncL?a͛i, vTR~/8_+S]Jw#&,N.fS”R>a5*3 $D -rI8HI0P=KkGP`-"?DMT.aq}67RǍ;V2鿽*KcƮnixuw%将~rh?>Uq\[]n?})zĵ@hi?q5f3|tx&u_f867]dc&`n#),_޼;>Oo?O~%vXY?L}brx\c$SHeءvvv]Az~u RF Swco|~CNH3BCLGGiI}H>0=DaO6sZ~90:ctm߱&RG>:(8qXuG#F`&=5 \ 4Ý-> ~ m?OSsws `Uیiq0H&g% 0uf;O; +t ]fJHW#JçaʇLy TC2C'?)j䁒1J)򧡭p4$SZxc47̸?OH0{ڶh|BQ;[jr~sʞ T(M%=&* e;<Ӵ*aQ&O|:`ܾ!:k0p#j{[Ϩ HVXaZ-Џ@& .Hܢ6Eݪ^7bm=8Ҍ7X Կ0D ASHy(=07<`1e H-Uu)#mhԤ1e`":$:Tz#Q`<m>"EP(C1 x[ڼ9vA"m= g8H %g ++ 5⭡ϩG`px<Ŧz0zRP*g$1L3 ߥOcxaKC8a# |Oǔ>Nvfl? nL~DdDXpZn&Sc9jNt,$`4A4 Ya>V\8 (x0`P`Pô"3k]L7S"`a9 ~Ç!P%*YreJW/lY쌺&0&d W|Y5m|NA⑁X06lFj7`fYʨ[eR9^^4^ +^XYj9"l!iΊZD0ʖ AAsRȁ1,Ee)Z_-GY:Bv +["C.U +NhSoP9[xWNt|&%R2gbM FmRyV"EqJήIVTOViGSN/1 +)c9l(͟6 +Y=W~YjФ*TsxY 'UPᲳTqnMI(Hld`.Ѱ 036. ˴#m")jl"'1 Oj䕼|,XsO歼6_DIP%A[ i +ǹPneáWLLaY;ee +L%Lur(Ȟ8/H:ZbQ&ʐK )ބ0җPN9*ИH +2OZue"/SiPk*҈2ٵ"_쓩0%\P(8!/"aI;_Qtz679 cf[D|\"z.Cbk5;UE9+,Qm7/E" 6"E,"O-ԛefPm +mS +~Okt߯7 lCvd?v'@ջ5[]]uW}N?=_~OKwxzY +oWXȪ{ؿ/WA`a{Yʾ$נ/Wy H+[i.Ho.N(j@=? G;las`Aߺ-n{[Ȱi6)x97-W|z|9vxzu*OpPax8lpc&xD/ eNtƒjry?_Tר=Z mjz\F,Q] yL&)'Be_Q8WPkj|9Jw*:߉!:B4Lc81PvJ@,;Aˇ + +a5z+. +պ??=:t 衱u1ӭx\_ݿt7 e( >_']=>u>.\c3O;=uaZ}ƹ+=wì |j6'sp$ɇuX ?^UZ|ZY2{v +Y֬ރ qկ#|1 +ǎS>~}ؓ>TBSs@ji[Hع7"GɄrZ[ 9wjV֖(8Ǟ?B1㣩9ܶNRc +^1d8Cj!9D~ B/Nh[SE.wZ)1ZʃATرa~T~ɹfkL!Gz ap8&5д `.鞇|.{Rbt". /Gww +y\xƕQ@F>&P.;.~/Bа9tS^NNZA{9De7zӂ].r:k妖DGh]BK$sn] +d썅Fwym7Ue<^Kto}edz_~PR@Ĩ$P ~z3ʓxFVB?߮qxËSJmg<ۑsi[\n?!r\^z;RǞ .O<)w9{6RGν%o1Q +׎EEo7sL_դsX^jl.<6kGt;ŋ ⒮_%Ҳ<\!"fy%%qfJ@_ i 0zreHE)"1d,G0/=ҮL +3g<}WLFӊd0$ |F-\ 6ЎR<èAe>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8248 0 obj <> endobj 8249 0 obj <> endobj 8250 0 obj <> endobj 8251 0 obj <> endobj 8252 0 obj <> endobj 8253 0 obj <> endobj 8254 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8255 0 obj <>stream +h[KoɑWԱiwh`]xY# jܡD俿jRi 4wDF|eԫxc/|}f9?bmR˓?\LqP-43Mgwa4"ݘ=?4 5KR~[xa&6 dDJMΏxϝK6ZiwebJo :sЁK<mSg _C_.w}?^_>OvHanaix`9{X8=аI~,ya(YWdfnx&70vtC%csz)J &+qLKvZW_^$>y~r0*.w4/*MM>"goF0W\*/^|?}=~xp|z; ןp >N7(>8|>@CHCI_L4(v4!pʺĮ%(q*-6'0.>аò1/ } }OWzi}20y~'0:>)˻2fLͣ58Ռ LVjaqێlL3e`YRcVBY +͊G ?M ~[o'0ݙ(_;AqP~v",02dj`(RIOA 6rYA9 $(E 󣶥l&8{sy Gl'-BjsHTC}u$]$ +DeKo#b4s* JR~~.OC[tAgD+{{? , n 7X 5(:qN, px 6Ru_f J9\8r@uJIfņC 5eQ£,}@1mC?I ++Ǽ(=;]i>8(p!=ғUm/=Y bfVfRkvIu\AP݂o; 5nF̤_ܤj]7; Ugg=40Syt푕+zN +UCܓ,z&O}EC΂q8踈 +>qBi6vNDVX<='bND&=}yC=6Q*gO&yFj$rztHE) (g\8GF8b9zvv + |,]Nf2ηo#-NU"ZOMVVhD&c`dvbo=\<.R˥vEKy`7o.nK0LysqoGp ڱy>D>=<>tt;J, ˝[YE9Ze7Of=<7Exg.= we|YzglDise@}NQf 'X$zMle/Ǒ^|=>T^P5<*D,opSt@@6X8*(A~=}tf ~v!%T@}-PlySwyS;{t: Vxd\`fD#-5"fD:ZAښh }gTik;/ U$АIQqv6[aЏТ#AF{.><>R7}d I&e$EKRհ҉6H\6$8(P! KqN"aA*YTTLW,OF Y5Ι6[gj4j2^ 3٢ ~5 ==d[4 +tJ)UjlkhJ[8L.@f:DZr(ur:T92ukhc5Wun(;)D|=̪N@%Mg0\E"DذN"yHz1q[g]WΏܽ;)t$d;^.Ohxc$AZn#ePʭ?W)OmҷkFtn=|[g4}z6 -vG0Ll2}Ӹ% ZI&6ݺ@ +dR]Ye]5 N31-7}RfӜLK +:ze>0Q9;Y(Γb_}!V}k5.6toH0\qY1r+)ʄm_ND$uf^O$dA;Zġ@7C;Olyhf[?w&_ 5g-Q\O`]q  +`99^GLza[u Z gZ Jr5$ b'[x3˼Y 2Rjdo;(z$ 3 K\|%N&68LDj$(֬RE$TzYȅ̗㛟R.뽻F~,rt4nR!hA3o=GzP}GmF\<]WЪAR\V).],R\RY(.x~HKRtQB J2OI+ւpkVߩ3Ԗt稭 <;^„a%^zG@sqPEx껅h8ς,VK|{%f:;zǐ(Ntʋh]jY'z+@jjL\tޞatl7UDFfW=*gUv $&|Y(tc +d AzFwgA]۷6z'=tGq%N!ޣ*5dD iG]*ռP"QP:^ۦ3H7Ч,شr; pHDN =TE # ӓpZ>QE%^Fk +v+/ D{A6y}-SB{[^L@P@fpĞ~qV ]C +-N봫HZD xs%Rm :v= %;ĬdhuwbV TϦ$lђ8(WS v\lqB+UQ4ٷС3W%uӆJz'mC;jb&b GK=G-Osj"*%I| :[/Ջ_i c޺fu:a.5ovҺ&?(I~)Fx`z6ZvȜ+'O?0oGF(')t]~.A |n<>t VI:m(ys5|?Z"T-޳J-Tdc$EC3rɬ)[X4n#Jd@ovv{a֩n-5n ζS ~15y/M묒(K[S!:ִ,/9[~EJBbjZ419ց.3e∾| )Y${QInA7r`lVP1ߘŨyx6;cH%^|vN:oJ 1ߕEjj?СfH&_@^7i`ʿ̋EɬHtT!|1ӬLJcGҝb~e.*hfN φWn<36;k0PU9U30R?J^\͛o]R)z|T$FR' [dg\Acݳ".SW[b\ꅒaߒ|anS ^ԑLOIS1GBSy莫ٝYR.anSM@o;8Q=YINVAMZ5mЭ0Uu]TU.ΐq#=t0pvh؏uF#el N9h*S=fwu^ՖㄤX|z}-rʴcg9i\EOh? |V1h,գٮ=RL&S22Hq HX_Շ ّ,}ccZԇI676O=\vOeIH%TnQp ~z:Ս.O% {Bn럦6-[:v(xif$cD5Ȭz( Cvq9q||"6_1=S#1-t/x\V>wSQPv8`p +endstream endobj 8256 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8257 0 obj <> endobj 8258 0 obj <> endobj 8259 0 obj <> endobj 8260 0 obj <> endobj 8261 0 obj <> endobj 8262 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8263 0 obj <>stream +h[Y#q~_Q<2ƀL zX]i&e{ǕWس bwfddGO|kըp5474ڇfZk;\?\uMu6{(]m:۸VCQPvUۨ;fZcTIܯ-lZ&ۚw 67\uZ-VaKCnVAǝK:L| p)hM NSg2{{^P4`/d +VE|؉孄xo-αhHtfVWɤ +&Vaֆap%pvv6ܜF]}~Rtő ,1A"r:=0N{az<5jh~wW?ìwTŵy&ӯGx%67k7)a3|t?^ݾyw'k*" o{C8j KPPn9)oi-l (ٶ5 :Φk5.pM ȇl]Cj4́gҡl0BCUs oT4VZZU@ ,čI5u cü6a40Ր:rAQcaxӭço#|!50b=䜎f]pCok{tR`p:RMk,(@-𼢁P;WT +( =e#D9 +ĆTNu1m{R #vѰ*/ +eͭKyj#HmCOӧOŔwpHߵ!2F.5ӬG{*z/ȟėAAɍPfV1AȽ"-]GڜEMk_"a=2whz*>PN%=aaTxT 2)d,/~Ӄu[5%テuA,J& E(H=|G qvHjA5rJ`hZI GZyg8З+ +`l(@,bD1|i(P2˥ 47i>;#P`#"n/7vȎFN\> +,#1<-@ܽɔBİB^EApVWx6[5~7'sq00l q|(f »JDG$z#-4xЛw"SĒYu^qg[GiwEq'RFPhx8Qg/xw= eJ M~ţA!$DJC+H&B@{c"#{9F~gd&-]# $IH48aCzaIGاaA\K"7ՌYv$Ė9#}f_d,sacP:<6&u%('_2S"ʇB'7*?ŧ0{5T(8|>Z1z~5lr>|CF]z4HyA¡tfmn=e]dC|HanBxro_Jo%^C`UH|TJEZRI +#̞_z$S +e\ +ZEx,eɫ=2e9wv`R`Z7UjX;aDX-Xxʛcf…CJGf EP|ޫտ>QNz DМLW0[X5 +uau4_~幞O0f|d&6ij(=hii|^֬dwE;}} ݝcL]qz~nԬRPxߍx̐> f_R=olUpW +Z+EГ$ArAŨBU;.Yc NSHW eטוh =楛!Jx0 냸M:Jlg#E7/dE=aYvG\fWq7%sTRַIҼ¢.>12ZF>E_Q [#h4$_3ubUM[-wiF +%zmR pHH-Ҙl/)mrE Zd^ۅ}1ٷ5%[i:Uaw3],g Kd:C +agy 4׃rEu&m[%j9LB +Љٛm IE=YX\d]eV1GOn+\v}l廊;([* +K M=UҾڷ$ [ީvHjhy7*O綥͜l"g i3PA2W|CC?+!放 gG,Z.벵U KlOH]hZ&0ے%|6қ<\=VٜHd@IX[̜oAADL.aWzJjJޢJE%X^5sU*$Xy17V+Q;c4CF!X(i#\@- `_Ok":⊯~x1櫚sܯ O +ZT&`Đ[##D <{՟.#+Q!90=7'*'^`-vS~' iFl "8eK\w^]1j {(A1x(:2X ]uCk6>%(j_B{u>F y=Ps^Zlnj+j) BҩWs` +>gg]/4L vRDz䬃aUZ˗EGyNlA0Udx)7SEȝ`6%NJѢI-45'4a'Qan!Fb&u; vv #!v3I/P ^ +VUrD "q~hI󬣇x[ +K"NR~R7D-C΀z PR)P'Cn[\Ey#ϙd_6Br2"}*Wy(/:Jevaϓ=X '5؛y%9)J'։_Ż>MAw;|g@x9|~p +tq JO'RR.4RUG~|o%4DD{YX A[.$J|e_Uy!Je␬@`aTRҥHj[X([ A8Tz֝9vݗh_p@GtE.Re1ǻ 油svQr/D~;ii` t4uŔ+c0ebr.jߪI87uRZ:f3 V!x ̧5anW)Fge1=X۫VHn%WhMcJFdqG+;lK#o6"uЅ\Jg.[vBz7q6CpayZzV&GKAd}M  bSQA(i?>ߒMʵbS*{37ǵ ۾v ]ưt16ae曻8sa6#7m-׷\fNJ.!8z/ yȗ2gFph{lzxJ +h8I֮|.W6oʵ|Eu2W/#S IgY +a!Wg7[qhg_5{0To-BE{(2 lؘ?ˌQL!~3Mxm +H IˉPKVi[ c" LQċ~Go^-K,ތNP5+Ls13XqZFB‰u Ś>3>Eefd\2. tY@-m.UKte<N/p +!j7h%Յ"6\aFFoʼ_m;S"ё DජschsÝpYmҟF d]P"V ܦJaR +\͜j<&j͊lYv|ް- 6oK~t)aY(-T`B#!2CiS9\4T=TX7wS3̝^{qB@}SKWb|G֘_B`tLJ ZcǏ`|;9N_eޤDu2KlB99$&rzt]fCz|}؎BG\@ `|NԣcR/1CXe-yU{#U}(ejqX@qc~>=7}.,U?ʊ1BwO3.?K=L/O\q ׬W^k(4ꑢh[``$ +'&/f5W~)NfzCR`]sr-* BڠO&Z_mZUldX4՟ /bT|E t.8昷O Ar9IoL.߯ѥ T'ްK?F'zb`Ju-gYf +0 +ĉ:cAE .g,tHz'uOwQ$ v$)HɷrjB<^<:TsC%_K pOP\N_&()- M?AtSYҁy BM  +05> +endstream endobj 8264 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8265 0 obj <> endobj 8266 0 obj <> endobj 8267 0 obj <> endobj 8268 0 obj <> endobj 8269 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8270 0 obj <>stream +h[[DZ~_1dMߦg@"K:H r"reߧ}%>AK4xq6>۱o:G_ھѷn\sqw5ڮsBw+(]L-|9Ck!u;g^*uC2l'^Be/44{2LWd kߎ+^&I M$l%&s0BvG8D?.M34u86843vV,B#"dƮ͒[\23B[6` plSKfmm] #lfw8m,6# rs_n==#Hv@!yۮ/~FFΣJ4okAoZfCks)a3t{p~oO!@P Q@&kMs+eGeGeۚ|n]끰vtJB5ٶ- XjQ_}9XzL6RFj`U}\;7?֚8ZմX xN-om@m#8a^EvL`{jAUaʺ[j;!AW>HNchPw:m.4xWדq5(Fg:$;r[IIBwP)Ƣ4}<˦7b3e*dT=X +*n +&! +.G6H% +e˭=\5cDƂ 뻞xb5|uCj!x:}&kD, mGZnҊjH6t'v` JDC0xê}Df=8Z8m܃=1jt.-}xԾK]Zs@߰Z܁qx +n&Tv Ȉ\YU(p 5t`]Cn%Sm((sd \F!**6[N-\BaOڬT&s%2:cmdH]~*}HZ)JdŖUapJC ^gqVEup<0ȄҞpw`b0JX]Kg%@Ŏ _G ^7K "J%57xE?d45׷wi4Sh~uIFF`JoOGwl0/T 8f%Xq9py,qK).ऴЧr W͏f#$ .r5 P%YR8}޵V@?c9؛3<g\in0k; gzvO4GeJe:5A+ ֨V\_guDiNqiΥփbq&{[[^Pk & ;;O}]{q'kt#y:[L~Pc,$ZdO3q cQ07Hĩg"%ās1-c8hu }v9HeQw:ԉP\UO ORrqUA@|q2x4pb|T, 0kúVʈve!m$Bpt): Nh xN(e_NX!Yk*n8}3UXM:uJJ3 |D/W86#iټo9;jHeB1MbN65FX48IFg0zPRP^Ph!ǒNĂ{5|-.2N)Sd' :0;ฉLGL)]#J]e!^~*6Ρ^xօl.9d\wRSdmUp A&$ u:^05Pl k/F*fɌk@`ƶ1V +s"2*ĝɬr*&N@^G&i|>LdIzUXQEР:>%PGIz-7hgwo~фmL0 ҵّu{aonq\;XxX+, ,I4z'ᦻ+Kݿ !8 )UGja8?n eq +1""!ow׻H״xQw5Fdp17䀮fvmwpT_~*ʇ pb&.Yޟu +,8ϞJsis#UF%$ 0\ QH729Fl{TUp6rNrNkq:lrkg%p'$#~`W%*:#6mY*26ӖxGV$$@_.;dAQ3#$ڤJQfZA44W)Sdc +W٤ek[y&g>Ɍ?/ nKX#x?&BS&9U:LnNBzTYaWY4%I$SSuӼߐ)=b|yI+g\I|.stn5Q헤#Pp%rhl Gc/7fɭZ'Qz"&+F"neSϘh| V߱1;P?r9xoH&WmNn%%(r'iF$%ʽ1A)Ye*۶kK:^ބU),N_v@XOM}/?mR$ޕKҝQWuR!'j#veyѱjr'^MdY#>;7&LHĿIrrb%y?lց IQE(MD3/?T5POAbvޡX3jٖrFrUW*ƀ׮&3L~=_9 7]|H,Lu:knq V(3/O WfJܛ'0'`gIHEA)%Q`1\]Hn=&KC!&q~)Jz{ q秛wgw?x 1L|=~K| +GYH/T@vw,#I|^|5.%xW#ŞJn>Э?22S30y[.?!ōp(.~z/( \y8`+}zf.a$#|~q\n#">pqSFa^b'Jo`^m4I;=×89Rkd#@K *TNUy5of55e+ⓩi ;ذHW0u@ez.4e^r v\ʉD&&OO{ݽ+ rG/3WK5rj!B_vm ; J;vl&Kn[_t! ce}*e:ShR1iJ^Oݤ8GsDGx;T_qT!ZFsud)M=ǮxC !#_r| 3Hxթ% +]`; "h<"1 ;U'}FR5Oڇ(ߌkV׼~њVo+s{IK=_Y>yo`Z6"o<:&4Y1IXs+T:"wn5 nXײZ}k+u7RA]r:i1% Bؙ[<4+ uo]˶D2"4'MRj+\5wJ'_*0Ttw,( >ȨԪ|ߌ 1)Hkh_IFYZ Wta͏f"5);b=@q!誦y=ya®JĸP/KN(o[nCV^]C +rt +endstream endobj 8271 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8272 0 obj <> endobj 8273 0 obj <> endobj 8274 0 obj <> endobj 8275 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8276 0 obj <>stream +hZY~_1CMA@IdcKJ ܘ˕!W@ryypjլW_lM;k{Ӭռ{eZOW?/8C7Qa9w^5`!a"հ;EyT]p,K5vIjI Z&ۙFǴ.]L" +$cp`]#28:rNװ[\qkq +F|]'fٞdEi@:'ҰLJHWXnX˹1Rw`mi(JfpM5461Ʀ!ơ9nW";tQOaP-G)y8.#uI贃0WXREK喫mP6ziRa^ܯ6Ssmj}WuJ[<ڟj`%5ApFzf>>n[7G߬f]"Fa xiՀ($f}GwWsw.چKPPt}5Z جa)n뽦 P[K{H={N:t +ys`PzzswЩF0 7pozt#0Q a_*ɝP;u`, %i`> :F!9Eנo C-fpƠ] 8J(7ORà&4cHt RvƒDzA-6^md-BՊ@Ŷ#+B^HlM!ܱw2np!wН8R ! h(5znUb@ {O q͐se΃`} *|g]]4n##{jz/DcI4QLn`me1 .ЮJ|!{9"<%h됤 *ykNV jAgb|@NKT.]xW45JN,\:IO!p"( +̎"\4(ewBKCdiuZՁ FV V>u)zד-+-iVKN+BwW;}#DH +:sF{'aZlٔG xbc@]I(69j0B](*U^)sE[C XPDVt‰/ӵ/,FJ",ZgD'Dg*1FXsJH+O@9b[Uh1_^q))Lۥ6c+U0R"qcH>p(s f7D`9gG*n']:w W M= %l*S3 >ۧT:-N:T/+ɜ"%d^H]\0rʵB6kArpl"9DG`#z{jO3i'Wxٌ}~L8^&bSRJv_|&8F\Eq-ia(Un%^tf{ 7Ävp(f;09(*7J *cŝqV?>$l˙ RJL!VVdn lkz 0QOLjKv ^3Uى4 +8Or)Fɗ}vXL„yvԠN +vz9J 8=H'(WrDf $%`v&PF@uH@ԅWx}2*t籛{@K}ډ_N(j0n_\rՂ)W?smTN`{%nc,?s%&=wyn{&&1bsqXb* lٺE[$:r(E84aD~](.q^o, }d(,D5+x +*B|LyLa}?ϰ:~7#4b]7ܵ6]6]sdO<&&Ma̐_L_f 0O?&~&@6x@h_?/r[~N ~amdf[]mngP d[y۬so3L="L ofPڿ nOi^m-`q 8e\},#zML-FRU ՊjzC v.s$I^ ٮ&D Q|*O Db#*M+@WݖHUF̈́UU[rUay")BR̸iKU*u!L9 RNT,՟GRs8H+K)M3e5[_Hzj;a煻.q|s,UsT+8gM:)s2Mj%RjOʆ)H'[&j}o'0Y^N ?=4Q8r%EB>I̩9nYã>ɛ~1x҆O 뚙o= i@{9lmc@jDMÀʿMH=Ag4~xqqx/]w.IqF1OČiM`}w9:KZդgIrVAqVʂ>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8278 0 obj <> endobj 8279 0 obj <> endobj 8280 0 obj <> endobj 8281 0 obj <> endobj 8282 0 obj <> endobj 8283 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8284 0 obj <>stream +h;koɑ+#wO@zC*@(${q="| p0~Tuz?~0w./mg˛c7?zK.ۋ~.'h\ty?sgޅ@>3BN3wIg"8κw Q:?e&]$> $hႀ-wx/)N"2+6F,Als`m  pI&Mq  Aq$?/>\^%x֍>c7v6B#*dơfIwDš̕PvIer #D m[sS B po;#hc}g3dg@'qzxxv}x MA7Ͽ7=H3FZ8 xp9~;{|:^S߽ ROC'.L,,@'v;Mw'mGmGmۛ@ئ]l  &~֥ ؎ 8=DMsi}cU s1O&RG>:@H8pjۀt>̔ h6zmtX&sPyT u[|9 =CFѶϮ3*.q5h&g :;Щr{I I`6%A+jTFam{#VAaN|*MSqv5>T:'\6h5 +mˣ[vћ1`HPC$D .WâE37P)YC'`т6tj{ĎQ3FE 5O6B?&O%*a!ް뾡0@Ho!|Bw;:5$:l{mQ6O<ƺJ;' e<<^ڤ]l`QhYӖ S[5O+|{m!]9@ -=X1p#>=D#ʠ8dgme>x3?́~'OU?|:Y`b\J1'{Y;kӁy`5ty=1v]xB1BCpSp ]xg@FU.?epx3A8ǝ (j'`k PjW[KR$IMS/pRD?Vb\qӿn#h:][05PW9Km7Hu++(.4]h'a1YjXbFՈo6/xrtȃ*;8юl2tVP 5ife;G(nͤƻs[㞕X\vBi+f~!]1B8PaM@(mO3,0dlj-F聓G۴0&I(dhLJ8BlvTG[3"E!ovvO 5U6=3D+ڑt}/I,ЁL=&g%. Ũݴf<)OraBnЪ  +ETcA[U@8 \N+2N"ZfM$WzuEel= D%1x?.Kڶ6rEfU3L}wsFždT·Ⱦ9 -O=!ǚ4ӫ%+=͇v5\6J/ K۬xVaUxCA61FV*a9;|E`Rd#]A0w.?VMZط TCb8-KE,o^Ohމ| ۑ]TPO4Su\2SHkAfޖxK&J(s8S./ᑟH_$ PCb#bWġ1fa,嫀D:>C%:|K|f%,$[uqU W׸5V/~fI.p>;+y{W׏gy}x|n x?]+|Y!r`Aw>MW!%0mxRJ/4xm@ }߭17[}\S=PGFuOK8}^ÆHn=q{ b('ڕ_bYÊTP +AkOk6(-Qd/uegnxqz?BsмOlOV~Ε#oNe7|vR +nnl h 8*l +n`(f.\vo 3U M4m:3)!\Un*g ϸD,9I:S x0GjQZ]܈9E!`-4XFWsպrQՠ|&sj׷mx)s\8ۖ$$԰¶B%R84sCu۰QVT'|@QB_jAUn&JIUL]6gb;գVjZe+J:gwT=g_f.qNV1\(?!9"nM"bsV'gEV[e\pF_\xwk[J'hI 3eh/Sa)D4pdB&Jĥe0Rx\TtQJ*J{vP֨ۃA +CKۇ *1:)g[$-Y+QRu>$9Ty/fX-W> el&h~Y)ܨU$ol`W\U|kTБ{cJ.si˲ri|'qci]^R}Uo^݊Uuu"iŅRk"JbwL1M;yLj]2?^}~, pjkZr 6e&eUPURQCͺ͵7k_(4Lla֝*:`Cl2֤=@V4jX%A +jЉf2=4SߨUKz?I:dNJz~\s9/\z%JNKΥ&K'9La9gu:9EItN.so_W?2l8Wن. (߬\.7Arav( y)UA>}.zWΡ,;܁a^W_rt.}iReGs2_63g+MS6j7S7K?8=LQz^}qSݻy.,jbʁɷF'9ĕ޾+Diȵ9Ӊ*r¯lšK9zI]tg#8\>"L|wÆ#!ʾj:v'K3Ia p4%$ͥˎ0~铧ؽÄ9}C'#go 6YV.aNb-7@P)Mc񣞑"9uHvױgd9yFiÂ!֔rx!m}ب;K6 SdE+n^;~@}H,a]LL`[Mh9 s ҖK + 2 #'3Ƒ;/iǑe}&49l65m7H"~ځCr9PfdUgځUp0wSX;KlMu;:^'zϾF6އ\ +xO)Vt?Ơ r%'xgXN,1>c:n4CUKȖ!"+&/3[#HFJ2 n}Z6nWB4]Sa(j8>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8286 0 obj <> endobj 8287 0 obj <> endobj 8288 0 obj <> endobj 8289 0 obj <> endobj 8290 0 obj <> endobj 8291 0 obj <> endobj 8292 0 obj <> endobj 8293 0 obj <> endobj 8294 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8295 0 obj <>stream +h[ێG}ﯨGr`*UZ ?@r[Ff60` AʬDFDFztśKәb7u6>nz]] ݧU? w;(]va= .IU-ԚKa7+3` [~ܘޯZ:\e^k~L2>6v)ލL5,Һ Y3L*4 !D(R.i0HoV ͋7a'ol5<p(Yu)Iz:Q״LJK~\Giƍ> P//˃뭛}{_\_==c(;u1 0\ZVPqTOJxip5wv do{}7?޺^F餧<]W?uKFj>vaVRoo7wͮ{߼} V7h=#,m:8 Q}|G2H=)=|?~A Sco|~CMH\3BG,GGe)ǐ c`y<Ñl'?jz~@`9V[lYMɀH8º# ml2HLvE\ޠT6炡Pҽ£g#mxX0oH),X߿/ Jб>tY-0@T˸ .TdcCܢ7fn""'A72`/0' +gLf1 b(7 BRZ>z)`TF# szl +⠓ +a7&Զ,Qm53 CQ։9 dJʎ;ڽ;246GC13 GG(fT%S$W& :eIZH$}&X;Ռf0cIlTl_OpJsYd-\SI96S&٥ƤN6b$B͚:d[7)\Ȍ_ݞEةwպ@>-F.A*)1HH/m}}6e 0GѼx(Vu10`K#e]=3l;qodWRVPL`~V2(( +bjRH^ਊ+J';DZv3Tv<9.l$^5A1=B;b0ݘNC[Lˎ:fe?QuUwwPorTddJ jbqbKsRI(u@O,_XWd=^F74ȢRfxs *ȆX}*'ئdwKb7z v_ {:xm.D#TE3\i +#t +ĺOdP4LmU֜#3+(\Mz +Ljks`h/ ^08Og$V[@KYjZWeow_FެOɽ(TH=R@3 ASp8%&B6t%t8pbL?C^3} M/)St2GWA%x(nZgN'7CԤdf8)(&%9jm\^zN֬zvK$ IUwpE} ?_ +n{|Н3ocǹ=EsL +ynoqei?\w:aX"0  _&@ +g.5\ˀ:Kc>]/ +˨y.3@Gnxof.~NYe-*A6z.rG xpIW~wԦlރppOE$v[hvqnDi+g1Bp}~B>EJi8ܠZ0襁EDfWWMzSOrSͩ9|&f=6]JaEcrmAq-BU9Je--}So$Jd^!_U)Y$Дԩp̮&$(J\+ Y7/]ז]B!x,=˫Vz3D?xD'Mt"@J}Q&VIjS(={~>Lk9xBآg\Jjs38dCөi;i ©d4)ُb'bF9 iX7-q])ȋ*Y bkhkkIb9BacU@4+=Pn~ 9uJE(&DCa-Ё4@$QKu <"htP ƃnܖa;{^?>uF7·U7"ھatK@`lA؄ЌA}{>aPBㄽ%h"G`x(w=B*P e2N RSa#mQdMӖZajrM}?GC?%Js9,rs\YLRQy/3Lg|k$M 'f5j 5BCsJ$nI#3\@V +kHfNmU +kBۤ0.X$-qVo.x4v'h86"¡V$۞ԋgklǜ$v3, V]97][Z/okGi`Mu!Kב<rUC"4*!F$ozx[gTcz13-I]°rf#n>XGMXæYh@bSC.U>FVtդ|+EŌ245D0戬ܖT1vk9T9rO3}ɷD}>t-f2zqJswAW>b Sr  +[ܥy|W1W ע|,\|w'Q!Ԕ*l3$Ewjb?U"`[?ls D:`k +֯8Qe"Ѕ+sWΐM)Ziʯ-<{@oqM0Al2pKH]vizr&/B8ta48? fkVREIRE)%&~{ɗQS.Q]7KԴO-}i0']6sfZtxTI+p+S7Ođ50KpŹHಚಔ%eO$,%e~qNpA#\3uG̢6΂&LЂ҂Vrll)O#&R[-g30 a]sQ:6 uxo_I ,/Q7aϷZVFNkf\ʎm^MUo[T]!GdjP0Zs$ P?[VK|}qpYݮ:c(_dha~D.ۚtʋhL\jf R|a]r/q}.P/HS[NfTDFfSV29&o<r$T@Nvj\~k_SjQޱFH3n'I(勸v/:GPջ&ݮX+_y1$^G_ޘM@ӜjȘg{϶N5ah6KʗpCgЯ h]c+&Fq8|Oesng SI9P3Lt{*;?}vbPNgγgוy;]2&?)_Mg"3$FC +Hiv"@m?BB +0W +endstream endobj 8296 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8297 0 obj <> endobj 8298 0 obj <> endobj 8299 0 obj <> endobj 8300 0 obj <> endobj 8301 0 obj <> endobj 8302 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8303 0 obj <>stream +h[Ko$9rWQe'Pg`5Z0Tz%M; Yɀ1QM_j?^> 4RMY c0rjjF=P W~>>?>?><|><W?^㔬g PӰ 0>=.!He&6݌(q +pqT8yC k" IJ7Ta,Oip&dc-GoSUw4V>2yU5z-7'pn?j֣G26C$a^E=zjRPgUaSo#Bz՟y'SrΔ;h= 5jP FS +:Nlw46_)P@-'g%r)QJ2jr.*$܉ =H +]+Mv.Ԋ|&\. [EFJYV_Jfz5$Hg!~XBzWIxý}~'XN|jyE9T廱q[S kTte0dUu "1ݔ{s.ߔ (nFʝL:,[.?2 ˥-&ɒ41V]J:Iz-xT 2ySYO~DE.6XrxW{q??#X3) C0@p(X v) %##KԕT宸Kxlq ahe)ĂS0np / jX]8 aN5.rs> Ec2AL䖦Cr+AQkQ\|C;t^@E[y"U6FQoϸȸysvbz\;@J>?/O<-T>Ȅ'0YL +64 =n%ήny(5}ml㕭q ޽n2g ^,a >/uuyLmյnsWe?P4) ɍ +FQ@SySE]D?ʷ`؇.F&|)(\LaVEnr\]!G[^C'4$8il'bҠs@ۜtF/Z:XmCy۞X,Ο= a_;В_' -օ䮩5<<ӝH`^93(јT +eW Qqu^$oq 6(?2 9EÕ%*u"2bV᧍b*-E\.E!d +!Db0.-ESC"vh1o+zMՋLJ%b >Top'x ,-%+X c2ūxnDG›CД;XS!,ȴ%ob3Mp|91jQeSn;84Fh¢!oԄUPQЬ-Rzs_Ԕ} B,S9^@sX86%>FcXw`Dp` +B8mdE]-6KjƎ.u$"HFU!pYG諦YҶ4 uvgFU*̚s@& ^~Kq,JGws]v.=UnB@J7@$!C*`,s!/O8 v9$V LX_3H_ 94va+9dSdM\ @s[q U\KƐn*>R 2a\$F|+,bCd7Ӹ%e ZU픦*`'J"GoykK8Q:=iS\iexF5:'^9Fwkň:}^fH0Z?X2*0f 5;klg@oҔ dJ2%i;-$$2;U"dom IULeLY[{侓΢^;Yf$|,g(PA_]&X/D.<^<\y3:k>iހBg+5[B$oz(Da##]5kF:tEK%Ų=e0J4oRġA.P$P`ݫn0o r9˕RYnvc`Uطu͙ n=2T<-{z&5/4Nq{^OA@3RlNy;H-lQ΍i.CQ0NJ7A/:z)vUz<[t#PUd&‡┝FmtqՆ $}nQHvNCqۋM^ˆ( 4wؤ{oW;h5MCiU=?t3;x.TS9껝DΦ|B.y52q=cͳy?/oъwCpQI$>ycMp \`~`vp}||Ooo__`x}Jp58{ꑗƗ5Busaux]~)9 kf]JSO$BKY ^OE1ѷԩRAe쏹; I]"e^u8Ж2= knf[ f*}tVHm-b` fjpWJ}BMUYyMY.[F[tz,;py"޴2K\SCpď4M| .x Cp}i׷xP#!2>mQ+>?|~ Tꀓ65Sr`7?;9eW=&72够-]~f1IۺX -~Rn7;vRww}&XSԜwkqNybKN>V:?fz:lW>q/_pZٲ{\blvT͋@'D.gE"^C>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8305 0 obj <> endobj 8306 0 obj <> endobj 8307 0 obj <> endobj 8308 0 obj <> endobj 8309 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8310 0 obj <>stream +h[q>8<VٺsJ.[W>ru$ `8('$jEntxk_2>4ޫmk~jǫUӶکӺmm-T:lV]cVG,Ԅ=:nV:N7=ƭ: NUvXm'r[MdDBpL5l \ӺfT )ovCb5tPp;\6`Χ +Y6ܞ7[tZsCg驀zOJ=/4 ؋zRUu8va㘔M\qc Po˭Q>tT}߫ƅ8\D +{hz3m7R(ss=6W 1LT$-^ns蔉8J/ /ݗpVo8ө_'NH:\:)<V+)a3tp=}=?n0w'v'YN]h:` l7hvTp2mNyURTTwW6}JiOCv96y؛iZoh8tk" IJT`Rc`,8 Mb.\j,J&ўF[ZU7B ,Da ĕ=AM @f4Aob*xץ"ss\T=5pX`J1{;!AW>HN}PsZC)f0Ơ] >B(7ORŠ"zː@m##-ԂkeREx,u f0T+ =8+ +R&. +.Gb`U^rV%^5W|Nᫍfw 'X6!GַJšyN%ͣH=VOMqp4$4}x"1Ӭ?ˮ%Hl]GrMMc5TRR;;n}Y r j>@v8X=I*aSBŲ|{>x0 5pSXPi|!oXF9,aX20]E&VX.P7u +6`v?6}'4啁FB3~OıSk+`Bh=4wGy>3 v + p&8@*>1jGt;>6*p>"[C^imZcx;Ю! +mLgd81 >ՙaKFiG3'Jm,(uRHSl xNjEm,Ic9lAێZP3UF +Y F2&l t:op? +c,2e2ͦ uGF}5AjI|&׈tpbِO qu}MVX`.m%QBBeW +VNv=&!_n*,"Bl+NV (ڰY9N`n$i-d|< KMqxoR)h:o֞;>ofJF,c J$X- +i]ҀIf5|I7R"aT"-S3T)>eM)6$&!-ڱΈX(8 7kh f2O5 + !'A7IЕJhIg= +ٮ|!ȸ$]& %E۴C[,$Ԗ{%sHn0rhz_d[9!?d!H#ߺ"[fF\X0]Cd~ӬӜD,9v_I| +>mRt&m>#"& @OɼwKd8*7K^m|0'e{Ώo_d %,q }xnA}Xqq[|AwpTL{Dxz>>m%%dDXèd(/-@eC~|@:,N/iuwRdz:q[\z4KL +,{*mݩd_wpj>u]y-"vӋn nˠEu>|ŸIya„GeF*-Y`?-n2p++>{P_#.˥G1şo@p?y~[M0pn<aAf!T&\Bj +X>,qI _۫ߪErF5Of_pٴ@SDË8ݨ{bʂ>g%@CfȊS|%e8[]5po?s$@pd }t(b^Q)XQщ3.~X5_ +>\KGZ{oK\Nޗ\xO:Pp\!)+Y*g6m_Ût8e()uC38WaCbn`³K܀K8m@Ȇ@gp'8.jX +c:bEbZ~™M @*=*a!@@Y_[BRñn !6oS7o|hS"$2HʄBɂuS hzr>E\04IM }ipRNeGB2b9yL'?{ YV E0Y# b}a%זt퐛iNJ+'^ +է~z gztxNR6Jupd(YeףH2Ie.JRD}Ivt&q==P?1p4}U7'-F7tWc/^/t\@Ry +р[L,eJp*'L>XlF2]/1/C evP(]^UiP]LRzcӣtwRIaJļ歟EtrCg8+U|Y)jku] ZN}c,ӻ~.{)[&teKSis(lrMqr ӚJBcdͩ53X͹QLlᬜ wѐyp8,!0aO\d' vԽf`/0$0L+&̞</4yzMtcMC^8W<;2KFT"]ΑLꛮNvep|yA>}* H<"ٛײj7RZטȨĥMB.bDd0k\rGc"[?J7?2#v.:^?SS=vU7%PIz-SgO]qOl{biWi/m4"љu + hhN$t_=s#< @]o<HKP3Knx<+bbRy3#0S|9L:Nӵ2 B-1d7UFH=/.~G:Gc鮼Etmt]]qwmc_.·nȍӥGK(vq/;^&}O/=wIRn=Hˏ`&b5"әŇa?:E~Žh:r 0w0ZK~Ewxt.50Ya iにY?815A.>^E:B=)JfiTepݧ4}\Z#$DI%]/A^@Ii!b:))K =?jwY6׏|z|2>Q-KjG͞QqS$b(iq=Cb3%~tl`vШb|kB +݋xs; ٽwc&f :+gszs8,fTZ%ϖt1j?>= n_u}.~'l{^_u nc gr۸۸n\yn.al`l\EP8zz7MϿ.q\Μ| `S `NNP8<R-gРhKJn3f/pɬ:K]z@oF#^zCiPH;&ɒ?1ũmѦn0_~ђ5 `5zީz7_,cyf 1=5ʁej)VӍK-?}:'/65T`zLCtL(G-ϗ&y fB'M/XOqӫ]f_=&0>(?#o. +endstream endobj 8311 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8312 0 obj <> endobj 8313 0 obj <> endobj 8314 0 obj <> endobj 8315 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8316 0 obj <>stream +h[Yɑ~_Q1,U^Y X Z6wMht&{W^Ţ4z 򎌈"2?tͫZ7YovG[7ք4Ǜif%C9uv k48jPi;•n{pu *{tn6Ȱ" 8 +ke8)v_-L2 a2/dw[a *yWϛs?*4604FvU;PY~"ka$EkPfVV :Nm*rIVW!c;&A<Bз ,7i & mvjqw<7޿7FF΢JE#(rnYH 7>6/OOχmaWO}=ng}7- ,T4,#5Lt׺6$AʆʆʺUIyMkE;%vA/0oh9;vPRMX uٺ8h]sIv!a +moT*r =loT5VZZUX xN5oCu#LhAX0EzH[g{jAUaʺT |/7hQ$4u?[PTй~0Qp=W7ZP C* 5D +4P jh qx @HP/Jc:8{6QBfLOEރЩ⡮ mmp>UОp9طE@(Q({.knd_nZ5xd,( !Vç S1]b=H +Ur5{U}׈;X4M뚨{iybK+j"Xy8x 5X* uphb. dH9hnZXXeTma;[n4CYrAJ9xjI!R=,$][ް)CDf>l|NX|,9꾐߿ 3lW $`nEŕ  43_W<6W`]N( B/xf+D1C Eg3!©= PH 1!I+Д~g[uRV[L%R1i Q5͜d/+Ak48AH** Y!WʸyU/7ʖcMciϸ@{#^( kǒIl5;%&*`F|Q.Ȥ5<22đr +P쐈]DjA4xTD3-qDM-O&f7Wn`h3xu..Y;rfnʡhF|M*0  {,|_*vւbPKqHX< b.Ӟ '"k6||4r5zþf5 S9Ѳ5;e7mMI &ȲR2^#O-į1-]";$eqAiZ4l +^~ +i|eS6W5Q3:vir)JzڼNE(f[X6)L 3F٢.΁ʣեi_bL׃έPFcoX1&,P͒F*YMzFb!՗4Ml2R2RYH) +*ыz&bO 1NVTbeT2%+=4p Zid ]dKW_Ǿ{Q0ԥTQIf@1SI:*N|;i> `@@hg a(M:&cηvnl߬6s30{vìÌw'zn6;#鱞$ŧcs85t8М?sas!^[3#`5d*;s~{`Ǭ $[HԄP*Bp=˨(&(11ȉV1 +Ji[ǀ9yIpG*a![1V%824/gÁ0SLõD +;q'p iK$G hRUD12Y-tQ]O8>jQxV!m DDSDWu&mUoH#:Ҁ _+kK86W/CuDܕX&z?0qN%qoaaCfY }e݂fMBP +,mGy +oŵ򃐔ۉ5+9瘥u,LeiT4ᙝٕŖ?٧–PQq—Wx-mPe#ຕ6DW<ʋd4Nde=4Ҧ0}Jʡ_x!UݖtyS,KX7_d6OwH sSc:T7ܰ>޿;PR)- jNOxc,9xJ+;?! 4Jd˽_λLz<Ǽ_G};?ZX-LϵsQs=y6I$In}qa{- &'gEYٯsL98 +sL;~+m@mOn/sc1à%m,#zML-FR8x,u 38:!Ͱ#&a|v.:pH~*:g`0$E!#g.^Tmq| L,O!&;2<1Cr`*ƑuF&ca_{U=o. |gGhont!#U]eQϷe*7Z ե@ʼ_<=Er0ò2De}s64/<[3(u}+-8lXN@[_D(lSeuTX"7768 KRVҡX ߓ}Q*ߕӚJuۯL[=Koz*BNU +x0zo˦He8R5U^Le]"/HS*s|fG@ k m;}xAjw4?/a ˠB Q'|ώg?Oi] tnneAݜJUY^ 8p <[åw|[Zs# /χ36s~<6 8[qquM5ё\ݵ*aJ bsf_Gtw/Rp>Dٽ4q +rg`ݜ8'-x.v&Zrfߍc@R Lb#@/#>jЏ_;#OO6\3K"% 1L Jx;ﶰyNDN`fgx'r?#y8E %Gg.*4 l)BBx7ng897rz?9k +endstream endobj 8317 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8318 0 obj <> endobj 8319 0 obj <> endobj 8320 0 obj <> endobj 8321 0 obj <> endobj 8322 0 obj <> endobj 8323 0 obj <> endobj 8324 0 obj <> endobj 8325 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8326 0 obj <>stream +h;َ#ǑX4̚;S X`5mxl6{ԫ>ݜ7dK֣4wd|wjPUf/ ڇ!͓zge=q3 +۵4pKVqV;5%yUp,. mh&qxd@k?`'jhu&aT)XS<4!t ak˕`̇;8lO zBVHY4; +p- [ˠ|خ5-od[=9;h+HCR2__g=PqI) )puw%TqÔrG?f9R]eug@ŤlXd.\*MPh#0Π{870|7W]YfguY? O %%`a--^;9|rx87~ؿͦ9YEajI@z\ mCmCms^k3Y hi +> i8)nzDXmo@?tmңalϞ4Sa +ڃ[+5qS[+C8Tý= ­'h0C a_*ɓP;M , )=i@|UC+D䜙%3(c.v!30h d"TDQ@^yE @A+jдkfàʩW@J{0 t<Lv.GT>vQ-3|T +W v LWWŘw@ LCP ̲2md䁚("XxM)' à?bſ .Lll@U3$U9l~1ɖMj[.Ri@tjMxU 22aOp}x0od >o߿-W@>؂XY8/;rb3:ao@*FE'шU]L5K,[5P4 +d!:$9wKU7}<:7,AwhX=űR+>LjN /GxPǦb_ Q'Ѳw"VF񍐌,S6OeIp~4_ʲ<"{upffhh ( ƃ8[epF6m$̈́"/8dIG +uFu q-.yyQ& _)p@g!@ +pȾ'xoy\gQ3Qz8aVI:n#C#W\|_m{n/랠\x$0;$x4'`@;VY8[^1IjH/5Cc{Pet~qwЉTX&fjmʩD/x5(gDݝG +I9(S0܏'0kEy3Un1ŘU/  %pm@CvA3͠+#=v'"qY,5Z5Š35̂/QI"{rI Yew< xxy8dvfbDC ahE6qqeax=x4sIp=9_ɍ`) |g(䗟{Ư핹N .Ph 2B!#v_qᗟJ!`Gl(=b ]w(z(hP q {"?^۟7??cO|{|18ynV\ +7|Ӫxd31:7>#|! cǧb^|0|=pGē+mJb~jZunXS|{Gct׽^3K'_.~nfS hܡ.dّ'3_\ᆱ}w znSs8}\k{v`{GИiMKK\BR%7ӥoet횓gWC(RRXk\dl≻v\;\*ڼ9>3ki`{IN~<cRdk; Qd\YyRL: ՀC_D$($VE R ޶y5#TC9pCAayX{)HD+/lB&Rasimtx)/sInYoN!nڭ[~@#9Hm/WYAi['U|5J#xϺ֔=妀?Ϋ37ESɻNf}:8գEsegWYn %`n ֦^YgKjXQ{,Ysr8 :lNf?1̡M؛H2V'.z7)@7V(z\ Ã*gmO4Vet̵ȈYMժʞ>]Ȇ>ý_jX2s9Ԏ^U+&z9,@De[캉}NHs9!&:sb,[V΅`}Rۙ%?=07U@}˃ʈQB'JoctMdۂ E:Ɯ}͉ϥ#Ll#L7{q̒s:qԘUTZG pJe>'rcs ~˃%G Wizz㿸(z"7f7ZSs 敛l:|6x ?n;ߩ]Xϼ?ȫU2V;mtO¢ x39SXkgϱ@d2Пw(=c) s%;Z V &kSci%}OToRX06:bmD Z뜪i8M'b<bOe$+#edEX3W ͨji ]vYnwgb`'D]61[j/j;ZW0y!sQZI_*e5K(:\%vhvXb%IJ:EB9s#k/#XilST,I. d$aKMrXsB6\&0qw&.OX >H Ka"B) L 0;R%죱Z.u \ރ(ȱƥlsP9 ,QdCd٧T2SfNFqSM;n[pCdi +*W+vE҉#2; mmuk-k`0izyzz;Ik+Xa'!4D/x1|pKpyL +., +ɍ/ _WZ9Y,u1M2xdYIixYLzo@!7_<߂2~yUSy0K<~y}J%/w[i[Ś_$[h3tNX?Xqn,7?\^>7__תfu̠-)joIȞc3 +)#u)jDWfVPjz2 gM5I9LlռK{8%)c$.~&W']8c'dwRX $;jj95Q/bzU~*Ӆ"ų܎WΓ_}8 ٵE*sm˕`$R0Q.V^mνrc}Rcdl<⎓MON6/,KҜy×7]MiũKǶ/3a,W9g.ѕyuRcr[iǻJ1b?@O2Vv;Oyw'r<tG>C]|\)x8|8>q;쎟mP]B* +i,{e/_ }^{Ũ.s)RT>ps~>| +줰Yy0/IuuwNfx)ᰂH}㏗Ḣb?)<_ 7˦ÁJ-A 1FO +8Zj| )40#s\a⧇9<pɎ6ps\JIkc]6Om)2=u?2u{l%q[ӈ/q\ꕳUA} w+wRojy;.QFGCF}$Aɷ&q zzz3 >_w}JSɔ.jsN^ϽЯ?șrvwNN]`BF +endstream endobj 8327 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8328 0 obj <> endobj 8329 0 obj <> endobj 8330 0 obj <> endobj 8331 0 obj <> endobj 8332 0 obj <> endobj 8333 0 obj <> endobj 8334 0 obj <> endobj 8335 0 obj <> endobj 8336 0 obj <> endobj 8337 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8338 0 obj <>stream +h[Yo[7~4n.0MAbbdYN=V[I~F^RqCZĝ^wa; ޯT:t= J=q8:*Tzq =i_ 2,[eH\.rs2y;+WZ&98 ֟-m`2 (06h&jJme仳soT/=ؔ\LiPqdvf2yĻUk"g\vq^c PZoKKzt9=D؄=zhO8.Vđol9=q 8 NRi /۾Ջ_gͷ/O~WJFޡHU[ZI wכ˻뻇j`/>>9Msq ! }MD;"ިk)[*[*N{/啱d#\xImit냡PR,vm<}9-dbP0B]p c #ou ~сF[ZUwB ,4čI ;tM 8 a^0 &Νw\T3u 0 y 5 E'O+mA~lm{?؊ȸ@lՠ"uwS #%-Ԃke<0 JAS)ƪ`<˺K LEX=RRqV4nTЙp98EQ(G.n \ISD‚ @wH ?P~j&/.^EǨGJXâeZq嚊!H+J&8yPNԅ.E!PfYt=$=qEj&a5XXΎmK~R""P22qQ7ҦP,|whH3z6@|,y|P_he=lLE Tp[Ay2hJY Vy QCOAd!;% Uv?zt,`,[[_ ~η=Dn' 7:v.5nMNۆg@Pw4(0NYk^sɚڰo9V67#{48t_q"η 3 BYI86, h=ÑŚ8<TArv^4zk0 k=;|yAV%ƯDԃ9=>/1UCem1Yp\~_/Wу#'q3dn)VCvJ5iG),\otHGTv M @:CBJ;Biz/.d6[&@ B;FI_;]=d}ݽ۫K+K9/Թ ݈EM:/|@߁7|= V3ZS$SK~/wK0wۼYW#X/m_=a)>iC|4$7<~#AFX($_ #cD5_HG#O~METE!$X2 M*r)L dgMawcHm P9f#daMsl}hx8 Z*'3ܱ%bbVP͙>2gqSaƖ!5cd볅Ml֫XeJΑv&.mT)<5yeVVCT,JL,Udm-[?n/& w9-%KH6 +d +1YTN;M=_.k^- 4%'] G%wEC#2mف!=@̲&$:&[vr#WoĻg𢠍w"ͶCEx.1n`t:FQg-'{ғx#VħAZ +(Qa%J $!P4g[*F#%}d6/fq:q}g~)8 TT@R_ Y^W%bN +:[FJcJywݥ*q5+Rsfc. _z @z~ZRL<]ǹ6C+Ң&22YYcd(. +9*a_~P7b-w0'd4eX J9!̥<<$:BRh ٩*԰j0F +b+|'0ÌȐCsa*1 +pʞ1 )¹2Jy=&aMg= 7O{ZٌW|B6g\2``"=+o0('\EBF:XqtJcz2PKrK};E +xF+rcݯMh5=gh%}Aӟ8Uu_k YI쓃IN/q8sU?p o.bk/?NuiRs-;0&̽( zP<zY5WQdX=ӗr5k^|uwtvJVߎOIüȗeXXnh.E\oy~e&1*ߤCp8kfQChބD%kF|Uỷnq4i.ℹthc׊r&s Ӵq6_޿9h&GhI1rd%VVJ3pD}dAxXcpc2uoJ.z.dgS^gre&jݼzEDթ!4 W9JugU/,}bg2+ +>iex3Ӭ xޫ'GOķ4/rE锤ud|}Ez'hj )aB'KcGkhNI83{uʿ q 5z[]]w!wg'0] +endstream endobj 8339 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8340 0 obj <> endobj 8341 0 obj <> endobj 8342 0 obj <> endobj 8343 0 obj <> endobj 8344 0 obj <> endobj 8345 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8346 0 obj <>stream +h[Ko$WQ +0 }H i,hwaIk#>d3ڇq a4M,Ū=^?}quvyue3\ݝa2ؘ2Onzs6 v4?\t|&&ͻ0Z5Kr(\6yޙ \-TjG-?VKdqHɏ. (p/FgYT)RƄPXM"%4 $DxrB =!ئ{*`QIY:,CCV: WQQu6"4{%8=1,1N7َEi@˓|<֕RѧRx{vw&tX1sSÎв3r/\.?=*Fʵl`h@ti|M2ciʘ`3`@۷7eWg?Bp̺vI`yL{I @O?ݾzax/_=3 )ڧ)O`~shRvTvTUA;Fb%?N7,C8GhjB XCWA }`yܧÞlϵ &їZh,'Θ1YΣ58Ռ 0S `'(#L:(6k_E*< pN#l`Õ- > 6TIFu*a@˙]`Kv2EZE Y)B8Ԁ󴢠H`=khRS* bL SѠ`I|Eh⡯ ccVМp82 иPN\L\rOg) +6"ixt>|EP4&<hHfQ4O0f5 jy43z#4*.& +RBއp0f}d|>6v>Tţg}RO~aI/Z_d} 0+kma$ mH4I,VBɮ3piߛuipaz//L7iDw:>'_Џ8il0(E({ʍ!Cp[ϐn%<ÀWC{leW205ʶf929.Pmڶ6{gh}`nEiy'\^S^@UsK{d(D+pb}"R SF̨[*0QJ,k4eh'5> ”k|J[sNU>EH v[m&o,D6NAK=ۡ[=䍑u,tyO#~ Ꞝ;<1v`Nkk,GxsQTmLt\XEI3'sd賈g#2.Q8if R>|-0ɹ%ZTq uϖ1V7) +h{ԮSgII"S)xgKwG+Nu9ǎW}L5zJoKL}#71f\֓,~,3&z-R^fp,UE]ħe*Ww 5& jRʖly[NpN".R֚@؂Ԓb綫 BndJ*7 MnBhD%X +^!n,Fq: FMS!8'>CK=R^d2/BnB1rxf#u yb878_m7p\,bi-w$|+:\^eP|HďPjsn;epy\#No] -k*}J\doS뜌mI[z+tLWu@psxwß@+}ktFG m.䍱ff3r yKlGf N^Eu37ӑiy7/vϳ^?ނ~,T'.qi@(#ȹok(=^8aWa] 47Q= *̶[0тZ+aڄ‡y>|]@`(PVg6uu]DeA`r~[;5My];1pJ{m[76I"SFS0{h:5m-aKE}# Ҏ^/ +HV%v_S}A^7@(hP,{XhAVV_ķMW4skVQp942 Nmy7/,З6/F_ +oF;+2g7`N.6ιۂ~Za]R_>2s{1x/ 6Z0(:B +/z⥷I#naLrh6p c|jdcwh9v6s'Gf N?FT' v,z'MNː(T*l\im/ZwnA#1-](dz +苨.M$xl|%mrŴ\ hPRc`wyʬ^DWL|!/3mjoC1kq\-C5/SkęV-F\Aq?R;vHwҸޫ-7"- fhQ +ŮHy‘0g%sߍůR$ؿ}|{ 9 2OϷÛϟ[~.~~};{˵ $X+~ͅo/)`ҏA1Ky#$/gw`r +endstream endobj 8347 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8348 0 obj <> endobj 8349 0 obj <> endobj 8350 0 obj <> endobj 8351 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8352 0 obj <>stream +hZKo$ϯpo2 ]/q|rF]%ڕ-k*MK: A.Y֫~wWf*?2a)F;XûGk=VL8=ϴJN%z 2GȠיDN.n0ʠ7Cɤ~xa +YQXBwN 8W$&mn"GjHmb X!g^QԶ#~=w> +ziPbi?W*/&ńbb<*˶(ړ G6Ӑ@gfk㕧hZt)Ne:A:/D,N)8( +7+a!e`rP qx8 R\ZH7/p䴂6} V9^<|:pxX՛0p5f|.ax؃![lca"M̨|vf-e2lccmԘ4P^v5<@Hp kzF1X1ȚV2Qe +Tp`W9i!8B*z&et`h˻j,0 :$!AO|H `3&^ TAc]WAP`r@3@2)*@x=mi#lp;CG?Ovfg2\`3n5-öM5UֱIIQfB$ P 82Z ̠&e&.6n +n&me_ M`i((lVJHw6W-Mu]->F=~GlږC=`n `C5ƱpYP9Td P8иCץ>2n޳\FY-6լ:]oXd'HO)24d=vo0[אe6y3!>yEӆ Oӄ}~ӌr~( .ҁbВPK%,հqxCvZbnK`KO% P:% +e())s:cB-T|,HwymFM@}S/}l'Jktqx9PVTJxS]k/Kcju1mgiT;\ +8S$Qp<(uc[wJweDБR\`6[KXD)\[]$|li]TvTE2=$xlr: 8袋bfcJ75ׅCa!w:.'11ǚW%"}^1:7[OCt2(8mEC ΐJ!V8eY| CYqXq\->|freB=;QyޱWg}~:`4ʰhh^v@X{Nfp;w纷gt캺UfUr@WNFc')B^m+>8h!{t O^Dj4]a݌vaw]K ETr$pt *(%7,|b/<pq!F06]N}I6.N.h?mog};NdME|+<q:RYⷵ;Rs3gwlIFQ:w(-&8͜%KWҶE/g i뛠 M[(ꧨT *[(&P;),EL\ЋԞvdYI: +4O 4]@NSK1WD J}x{ֻ,.ŽuvT-n-إJCL؎UB9ȫ^Y3Ҍ$vyW. tdvj#HY7ɠG`;<ДwhhyKyq2ASԝZ/9֤֝0L ?=+|O$*F~pE5cUXTqv]j>.tm?Rh2Gg^M-f^(rECx%qԄ&JLJ(#/ +aW?֮Z2ua5%hbK ּDK-SRLMV%.(O#iKXB Iʄg-,&mŨ!-83;abTQֽzWȋޑwg#9t1QsV:? C!$7>]>LeaZSwX.^^g5V921ȋuk>Í5H2 ~/[;\ZO7Wj& F@Ժ' % +endstream endobj 8353 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8354 0 obj <> endobj 8355 0 obj <> endobj 8356 0 obj <> endobj 8357 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8358 0 obj <>stream +h[I%7rׯȳI#  a||.W 2Z#$߱rLZF U\AͿY/wobwwe࿲ؘonyn[f~\|tW kx(ec0kof^?Yդ>+kߵDf6.)evy3*b)kjȬ* + 94 $DǓ$`Z= KkGyXj'i``Tizf%qbV|kЃ"4T%ˇ;fL^VJ)S)yݝh0=縦9joںs~Xmײx2" ׇ$ব/6,diy7_|?>_?ޙ/_|~EZRgadfP ܽ?~߽o}o7`fV!A'hI,6a!-Oo.v[C 彔A!Hb-W- j(TΫf-Zj_B/b9:*CCX[>dZ|eha}_`Turӻ&jM5F5k]`0 230v|5͔b=JC +W ? 9/Cԟ#!=lz53m:5"ibrVP(!ՁJ p:OA: +6o!q@GPJ)uq[, qA2r*ħZޏȘChN8QyP4*ʉ˖Knn5%\FP[$$ ?]? K>TɃ'քBC2M"`kXh6ByOiH5,&$' dް w @ ] ԐQ+{&җBRΉlLʵ8U r_`a¨-ZkPN=_s$$08+0A‑= ƀ C@=J}:8, N9.|Orl@ v}` P`VᑻS(]7$.:.B&qԯKW𨞇ǹB4t bFgיܐK*^31'= +FjǠD +EDNR!0ɘ85, C +:”(p*o| aM`HߪfpM0F xbGdЁeAL X?K[:]5T8I2%]&ڒh_͍u^aZ1`p, e2!3qͺAJ61nDI^D .0W:d#m!"C))ݩ{j5*5@㮏+]9q:fw}:vW~<+1n^5mF KOA + 6PSTc^wA^ `ƇڦUz1=rDB _k/^m }Ӻ4ن-!Y{N)Z~<"p{G{7E.52eL(^y@-R~"O2ЭgvWu5k9,o>('Vx >_lb_0ŌVpLOK(P$`("8ʊG{M$lQA-a!l Nbj ?Rc1XFڧMvs}=G 38CbQJ~ A>6ʴ'wwf+L؆Rb M`ێt-#>;`a^hIGbLF^T;y}ͲA#D `s3oq?9ڛ, řS.2'ʨJGCz=L[EZt +ڃzɺ %8M7]{lqXosgvKq'Jy_:vcXR=d6㧛)e\Mm\ *6\Eǡ G,Hv<}%ؽ/!70 lK,%ӛMN o<]8[@ܜDׂuǹGDOę] K3C$evAZG=P`3aHO?N׈&颻9D˾= {ޛQ\ ʷ'\kw ! D)1ۉճfsb| 5:pMC8Vuni8]|`L=خ]a}Bp61lk]qx\q([q:uqzYbw(m(΢4gHP?V'kv4mp_ZZrhpC•q2˝uDHjǪ1aL"0 H.:t,7ⱟ&6{֘+)X .ܮF1ktTHӖ0}B'υh&Ň}Iqu)X7JGJj!xd):),GsA,/>Wd [;\KX27Ɛۡ., f-(2Wljni".w*P7&)+n[TQ8 +Ul[mcjjIq{C73ՉYwGNrzYQ6M^یmhe &-PGbu!r|Q~A[7BXQ)1aGq%i7R/_U$~j`SAWNߎw<Þ "4@@q0MZ72f|HyڎbzrjRפ(7t?p'Nq/ +|gۆ$_ a%OqlJb0 _R;&/&.u)A9án?ÎN iC: rTt又kSt;vf^čHϩW^6V|Eg P}+B_I~YO;U6 @nq+x ŀM0^hY^e# 6r;ܪ̨mu(wum^VDS隸w7n5_Ļ,n{S_{;!L&nEuw&VdαFT}f$#\o Qc`@)*䐑>!)i +YJ98e `{CtT ]pF+X+nWR)#RAoD]8i{_˿o}x7`mCMC؋3P~sV.ȕ~s"W;XI]I1JoɕHn&S5u[=D3>A+=Z|]tPn-΂2({Ie~0 +>-?w@._$0l8奧ېkptdL~Np'"k˂>yy3"In;/܋΋_ɢ^ԭ$\k;`/c@ _+<]g/qC 1q)[̧گ}eJ:;$܉ %F[ x\.;.bP]x8GYYi,|o0GwfN}~Y\ϱ"MQtrzS^rx%%PYww̑C_Q|P.wc?UvOU ],P'虒4l UIҾ/*Maˉ#f5N=Ɣ`UcÓz'?JA0X~@V_+mdP#ܼi=KnyhGJ;e|* x:_H1]74EN>eoɱV1$;dOܡIP:;/4'G3|k9.в;ңgQ6w +_c#%=vW8^yMotO݉[0Σ;qjWb1WbUR'wZ4t7NЕ4[%BTT^0)$:ċW?¬iA ݻ(\}IzbxWb\AnP=l&rrc<,Co5áz=xm*%WJoK_HPlK2u} h7p]Hv6Ŋm?'P76 =:I($ʲI Y'/=/1%Fbz=$kB. ȼmu|59OyowJnz֮Ak2n:uT%a74ҿ$<ڎPɭPe|2*v3t-ob bL!%2$#iJFf1ulӔrؚ7bE3>=6XA@%%W)*9^JLnOyR99?{YGh/V}s$(gЄ +_ø,`9\m5҉ + ֜4Y׽OU7-0U 3~h'?@Y/_q+46X'p +LɟcM;a}ȶR?n{\wE}1rK۠ښqo͢EAh ^ +4KHu_{wW 2!(aD$لOpN&#XVt@9fimDSNag#2|DȴɈ9A(aP׎(9K^lBDk<g YTՌg7AQ*+!S%,DYE*e\dLѹq?: m^UH N =uiv㬱ŔV?*Ӛ5"n푄Q;ebt/f&bf\1c13q*f!OԹ>3ZvmLquy1xey"q&N%ę<w.ndQir&M ! qC߳/乘lW )&NA$P`+ Cy- + y2;G鶷 +S͆tuYtZ*LGdtGrsDD\jnW\3usx1Tх:\a:'3u>:"6T9m=$-]W7fvСXj6ñD6X[qtgdx]c[=VkV٬<\ڳn>ߏ +n۔Y#C[/nԔmojRp"`}% +endstream endobj 8359 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8360 0 obj <> endobj 8361 0 obj <> endobj 8362 0 obj <> endobj 8363 0 obj <> endobj 8364 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8365 0 obj <>stream +hZIod ׯd-u @>L995vÁƸ_WAfI&Hðߣ(RDROwV}zj)De#/1iUJ}6^7F}hcS6 :Y̻-!tg Az0 g29Ϻû`l6SH. +cʍXEӅFvu j;S$ìd s3wUky0mM$( Z؄ݟ|ƩJ;_JQR)Yo6uuq3|um.k+FCYV8a :,mtW!cp\5b +<0G& +2Tш x\3)œNzr7uw7A5!]I_LVÚԶAn?߼<>>߿>+x_| צQ2Q}:a_X Y3:R`/iBk`[]|Dd'W&:!֕ BZ:6a+OϜ\҅f #XbNGNPokNY;v˪VG  Yphw.NG6LY;zZGW:PF}W#ގ*2!~*Aq9 9b⽟(n&x^G|Z=KaIQBo8 P4 +䫴 [W,ec'#2MsHÀI@o[٣S] +yymIlX D=)15^}^m5}L/FճSj7Xt`T=Qaa9B$9y/蒚2UsH 4r33 ~ A8aK ˮ'7W隬N'(,ŬXv֫ڱg*[VpEp_5g'a#r}\&uڌ3`T %Fujk g9ı q1RwG@ +3e1s8t^EO弊(|S{fB"mNr}FDI:!R9?,A[)cH.Y7^gdu֢vZ:ju85cӬnuEƙvMZc,uţX1tíUEZ:#u@=HN>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8367 0 obj <> endobj 8368 0 obj <> endobj 8369 0 obj <> endobj 8370 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8371 0 obj <>stream +hެ[K9rȣ@o(a5 a`UӽC̎`<VKA(U$"~o閿LJwnqC[6˚Ҷ5-,ou\\oz߇:o[H٠srJ^WGFvjvrr5'6|zqkMgawo?;޵e">/5T iĵD"HƾPL0~O;e8M +%Lp!jL2&M2>@tG05u~?ɟv%U'”B2rZ $!Nv +, :듰~_o"@\s#~ReV^X86k^鱎'Ȣah +i͞t 7=n +>55mqtsqiu{O~|˻?1߽#qmzұw0Xr>xx~?}?>g_rvn-he^~@:-huA muu1e߇CO*Sa sm.hj$sp9e3L-VmWީwrn-]mB_խ9X 8NAOkF6 ҄0o&j"5\oVpb0 %z`7~!=(4WSK j@b  j0bF.E\ %xnB\D5.Q`d^yB762VvUi5 bm+:ohBMĢMx=Ca.-{庺xXA@]iVX~{X]+W;9 ?C՟8 WXcm[Kq‚`M5-y}7CoOQ?]MXb041Hqpr!/;u 58vomz9l+UZS-߬vDX]]oæB' ++7~7x0o+1l%|lXh% P@( = "S6/}nxRvIP:TXLLHB|g~B] װ!;/J!5p99b* ILӌl}H)Ezﰁ~`6%C=@W[͛3 tcޓRQGkQEUkI0a +{Q>}Lsf s~b>|q +GEM,É; 4+7ƨ1[~0Lxbr`)顛ǛD ;jWVμLNT`1 ܄$IY̜ejC6) d7} +1TKZ I'$ #"Oz$ϋR9ZY<0AY >m07ZM3ƟL؏3pNFT33:Ec~% /d!O3ܗj*z% o7L2ϫ`ӥ{\$7E_t(q hdQ_d2B=`tHDu5H9QI,6}˄ץ­d؎֗js1%g#Q4jgLE@a҈aKHȨO*Gr+h(jspN|Sry;Ap-:DX=<7*rѕW_zۇ +/ӛ\/dpMࡌ!KZ9;p-)Qסk/|1CgB^:z?;` P{e3'+$SЙD4{SwU[a샺'G G҅d 1+<# ^`C`}FtUlE(䱜_=_l$}cNLy+A[sK ڠF!Uqs±TPHB}t7ԐXeIrt\SUz@'àD?+R%#eC1(uÅMZpo/Ӊ:Yl < (K\O7pw6. %}5 ?v"#C ש:b'-R#򠘳&i40Shr/dr`"bʘ# J&d|[;A/IZbїQ|?4y_gi{`=A%3T7 H/!oyu0XekGk _k IyK'Ԙv-S,#2/j#âcrD,Pe4uOgzYi:VRbr;:΁#Iۓ&IIrN*~\0d6Uۙvw/|SۥA%t}5L~YV1y|[,YG hJ=D- +C&|( +?!.Iyf`M\Q,(lSYc!*s'^BCN5oVe9锻/̶:j;WKh +怌CQx\ܫnUO +endstream endobj 8372 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8373 0 obj <> endobj 8374 0 obj <> endobj 8375 0 obj <> endobj 8376 0 obj <> endobj 8377 0 obj <> endobj 8378 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8379 0 obj <>stream +hެ[K$7rȣ@$$PÎ a||^,_G[Td>?=_֖ ї\VROu(=ӷm yb/iPJ J~kR&-@{/qmVT{Ӝqy*k1<)[ERt9NczrCjX:/+DKQBBVrenq>KꞈKon|RBG|T::\A{8kXr,큪qn,`5Wf.e"aWkS{.E.V$REɆFT\Inݡ[/_=F62}G؄=^V ͺ *[^RZ+|o?/?~0G-X*V[4SK_.\fhӇ}w~?~?~w,?>'8uk@! $D'~[S f@@e|a@em@)[u ז: = Xj* rTv.d0 8/kU05Ǧ5>u`.έg]T`pUfP ,gN=;>!~x @f4AU0RkM;)iQa97lh-- L{ ȸLlՠX"ZuwS!K$Ԃ;e0 JQ L(52 TtxXX3X + +&h #y}p9 +˾^ +/Ok~tqW׏>9{Ͼ7~[,ӦEd-3:M$D]X[`e04C3ؐ`~L x"D\穣rg*ö;-C\ z(f#Z&z*M" +%+to}R _iX|,%|l?2# о; #Z7'8.w oRI_wg̮~c CctH# fL?G0́E⠴ @??>q`gB'\&ouuj܆7&5wC.$P + +"Lc]>yb3xтUD!KPr2#$6 + nEt(:2w 6Q8;"v=)su: 'MS3Onf$W9 +@w\K;G* I>xićw c ` " 0:l!s2my#rd̈"'_Vʄе5}'2ef"_v„Eel5$hާl[-=E3!YlV@])0#ap2ѵ+sqCL^c8LlԎ]$ЁiyYO+45Q  + 40Gxn2ӧvRbѬ(gTXq ] u |;keƄb"ʡ۩6nB{җ~4O5n=~zsMM&Me$˛)Ot:WzLMVm&j!)ڛ05&)3 G{`uӫ\0wcnjփ׏:"I"jgj`x5?y`{H6$@;omu$+@Q`&Ӟ*,ɝYxcd' "RS7\S=dՏr& ӕ5e~;i\:#jզHdWo]D373O:q{+V1둖tf1І:2x"֐ !cTІV"lfbA|^]dq/ lS~}sz^f +vCj*."C8&_ϠlsH)V lȚ0>h?v=_5+髶ʇW 2^R[P(F8b2xPQAn@lXd]2!FӈmK&mSԥ}4Z]8z;860șl-¶&)ϯ2_bÝ\:$׉sl1U;^G!2֨*h *M/jv]N@Ȭի65cqd(G"a[n0n63|s4YlJE3D(gOSXr9%œ3˨"3Z Z3BpLủ,5d4Ev) v$1)*F) hXG:5S?p|2'_JLs`oڡ+a-K +Y77_בo5F1ŹtG֔ aǏa '<\q +rM-p3vbj(WIWmR,d# h6?OwM(|3?/EkQy1R[4 wyN~(QB3 J.2I0o:+{3G5ydv3ãH՟f>d笯=fֻedNE=D `m)=&z\2tzɁL NCl–=o]+{iL&XBK/n!xqzm&_\F1fC퉝Vsd 3/PRxNͤ#Pi0櫏rgIAni@F#ldL<:$eaG=5nZf [ihwǝnW%MJBE +z ¸@A@zyά(qЌF}uZc.*q-v38=^mJIk^q1j4ƑpRNv6S}؍HҬ{AltNq1 ID#vyZ<Q<4P+V蜼r@qJ٤+p1 4+O p(}o"ָD' +v=.AjyD2V|Pw?ECtɭ}\n +r=Xʣf^S fR~Fclz}Q~`:ϯ&:f #AG[X4lOL/^tN-r#M|rGRepQZ%L'I*]VCHVA$hhNﭣ}+-F۾U' =Vf^rC1ܒ &gTLbBPg 6$aW.;~FZBP{.PMƄ"MO}RwjKE3'*q$T=1'Ҁ!5rWAz1 =fxb['\cunu'v nM'Jը9NA-IQXVH +=u +F~c\Owp6e\b_ZMNqEyOTl1)axpzvvag?nlxxB{^M2I'f~:9{*Ѭ\ Ze}W;Ԓy]o\h)|qu<';J\l3'y1?1L4&y"dž\w:n/xɲR$U{] +6k%FF^8r|6Py vwh0w_o@(O@MOv!Ct|Ӏn ̮Br'SyW:HҮaI^p"7@ ^\j7W^%#XHδ΂.:=H(=JdhT@lHwӽ-"g&l*,/#+Xoz3% U/0Uwķu,X4eMHP6& |s;M[l#І?6dIDŽ?1&[9u1@+t4ls[qg;ɼH:HIL WRL*s6]ꧾmrV;U4cs7q:DM#N1ڍOA]{4*``Dumq89 KK4yޗL>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8381 0 obj <> endobj 8382 0 obj <> endobj 8383 0 obj <> endobj 8384 0 obj <> endobj 8385 0 obj <> endobj 8386 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8387 0 obj <>stream +h[Yoɑ~篨G@>G;< y) q~yTue@ά<""*z۫gWWzI˓ qajvNDMN6RMW;~\)Obg^ph\:]lt +^ϙFгO]vmy$~=k9B2&L1٦B56^zt^H,$cl9n/6)e.Xo/ +ݰH_L"z@<\ 5:SenN|#PW{wc;xi'e9\q\}Ǭ]*fWNI$ =UR)Nlly]9MnNnOD984g~)qNmvP5GX.9c":3tX*:ce+&ك<'7ݜ)=燛ǧ٫K㬟oXnZ9ڻLݴCL&a=FZOvǛ맻_n.?tpn7}.?i'Uv Yqx:rC{Qnb0Krrུ7dml#ZnVI/ĐYYcIH`mcU(kZZ9ژ\n=UcL=Ԏ8F9fl8)~'Dd dj󱮫M̆R6x447L3g㧦#~ dDTQ.H;';Xi-mâH5cyѦ @FhͭVye.yhMMH\lM Qu/;X|l|&ڎ`ײ ME;)OCi闓YH|U`ֻ96p7CGXH61z5ljFs3yJY45I0(5x"1L78]' +Vob""R͜{n[2ؕ6-dS䧦Z&{kp UFP"Ų3Tlkb$5aW mhKƿ$ 9Ą%a]j.PN)2Ҹ0~kX؜k-N >eìy/T%YXZQJșAg"FѯN0$ aWʯ"S>4.B_dH#ئfnE "#JRgDu!f\Đ@HTPk]Ѫ˕Bi +ZۍLl$Wt_j{ʔPZ: >?zHt= :6FM`Q,&& +yf}D8X *; <[`leP{#RqAJ5c+<$yZQ_j6pW:*Ӎ=V !A;8Ǩ;uCޕjUgI:_,&N\J-:{ [ +>UC-*[VM=~]n5i~Ms Hٕm=Hu@͕*,=Qp-nWbzAVݐ L:0鷲>@[5׈uSeY7U~sBKSR0͔Vw(Tw2r!1?W)kbԄlؙ,<.RQԑt{Cxu% =Ğ4/jlmIO_}΃p;!P !5-J q` 0Z46YNu-FJ(S#G *DĠ\a )pi,UyL5T8JE՗TOSfûgwo!*Mn6 l;'zG w"9z-6wQ"]ˡZ-.7(~ܹrX"i+W{n8ً*bxv^*Zl",Ay#똍T|/&뼔c8c,T wokI4tІfI>ssce-k T7O(źtfMW]K{XGd-q/Q[bC!wݵ%O3\7%j܅cᵰ`b|_T;~oEEʿ(!܀p[ 얀ƨbFZ)!vchƊ`FY/Zq"Qv5)Rx]y((S^|qVL+[/opx/)K!Ctƺ$  h.&^ %R/Hl1MNu]56 aʢBGet1v$x /}! ++=Y@ +D؏:+n){ͭ!]O:5]Wмwq[HVpmU =%U]6 `]t`A# Y孌H/lZTIUZI׽b͵?~Ă7`GDjQ*- ֬ՒlY<\@qrX=qilNbV'qMڱyw#R.DjjMXtjW{֨Us6hCTXWI^X #GkztEBU^@?:ޜTK\ܣ8#V3m2L5.u-kB+M8陟3ϸ9pUᦴtH1CˋeE'_^8`'c:rTӳ.K*]|Wܺ;VT|;xw!/ڛ3?|Fefלo-j/R"ޝ[\1k)-ԛry' 5r*/q>eNzq0fðB#)ɒgJͱCynа=jˍo2jWPu*q*x{00ܥYUڬ꺾͉.4zx3$oZiӢT~]4]jIOL%Ew~EPzG t~% +<9xaQ +zT p<2⁸ +\U!d*ix]U +_!wmBcfCe4ȡu! +)|5F1s>_FRśZmwɻ*:5J{!x9dѕS֮g;{.P33ʟC|JuN}f,I/˨kovwrZ_Lox=eUIkq]亁h96$ӭ׏L}aCtXld=FQ! 9HXH./ #l~z +avQ1$v{TًC]v-(LP2w L픇1!}OQ{2d7m0# %ƄLp-tJk:/X~[|Ot;: +L7xv޼,Bzy +rs7߷+~Kr.Cd ~fU^ܾ^ДO-En/)UB 4@Ox b DJq#ؐqˬi96з_8Z'yZR=0Q3@E/0QP9$RM Lڐx͞W)P(v+Dŀѣ }S,A_8f]tbL@ /z0q&Us"!,.# a]:,t @nX!@tAʩ=(> 07X4mj9r +e 賯HA {~HV=rX ["MlyͤYaFe&#{ +\PA}!MK +PxPRq{͞t(^SsXZI dj|̇zjJo],-vTH 1}_GIՇ,F QѤ@ߢhi]>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8389 0 obj <> endobj 8390 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS30117V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8391 0 obj <> endobj 8392 0 obj <> endobj 8393 0 obj <> endobj 8394 0 obj <> endobj 8395 0 obj <>/ExtGState<>/Font<>/Pattern<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8396 0 obj <>stream +h[ݓ7n߿w]57y55';W|w+ dWe%$EΟHgWUrr;l~/pm7.~sNfy(sяf⦛wb7/J7^/aft<={v~.Xc_nx搽oR Ǿac<RcҺշDte6F3B8Ϲgd,ˇ@`wjrW="W舋o!ՁD%>Y;l&_ PN <֕R٧RUêb]UVR k5H\9]--FBK\WU؂$PXy\abOZ׫a ]<2g? {e2a66xyz.Mߠۉ{n]wPljvoܿw?=Na/? >/hS>#ea`a򐘈4Q.s(~"L\vTvT ;fKK6W#4γVg%Z_`^#1~, c c`yuL#4[z4փDCާd:Em0r摊1r-j!xy؜撘, `8T .ldfXH-OhnfgL ^ʏTea6] +r9'M!dV2IR5,QY˧-?#@ ,>JڨݫFk y@?0 1nL0DǾ̾@@őۙ +F߂ph`RKj9FCt Lx",[=v4`&Uxe_Í# a4@, +aDzQB#P!ZFO @^kB:T%ŭڊ,IfV @ c0fa1r\SH`1Ё6M@*#Z}zUdF=GKv<֞Zeth0ʝ-`W1UZa yBI}L?T~ߪvۀHjEX+[YFRY^A,{Dz2՛kLn@3SY,/dXʚj!ѥds8t,]iu]Aً#T[J;+UHk06u QwSYTQc*;z YTC5& nGIm9TS~-e`OY6^ Bt@N.`KNqq֡՗MY0Vˁ-La'i%#Kw#C z`dQ˃gM=ۃUY'\vd +!p|nYV> XQ^ǁͺ v3DjiM@k;[Pڨ1]G^V2<@T{45e`euV?`g^l`o oV'[ƯR)vSШ HU5 +G㡃;n`}!* +!Z5f<4a+XߢXEm' iU\ aUNEؙEI*N{~]!dHɶ=;ћ +9Z_MϨkh +vL&5c3ԤȺA4WZdN-x?oHN,`Ye'ɉUYIf[aw%bK`=GAM\Vv8WIB ӿ_}l2Y7ŶU^18'jn;edq:c[2&5C57Vnf CBYZuR9*}9f큝BbM.bJEË-TAe!'I! \\pZyábxEd?#V*pܦ2Q + +8JLpgl}:z j ܪC"[ذW_O*cv,aŬ7}> x0-EcGV)89zgJCh'Yf9\n&Xp;X@n+-ڏVc֟ZJ__אdtmW`dQ94j#0%&<*GTvfex6Jɗ@O-H; |J: ILL&S-; +:9lz̈Q$9vWytYGlٰ"/h0 Q3έlv;A[ Nݡzu +m +Wj1\I{H{~3ݲɶ] ۪ep&,_E>\*w7&?q$ׄ&!k@W&"thd.ӿ} y+vAB/tɣ 2儓_ޜ/i^uY~~fgX5 0!4gc8l1 ΍4g0@S-|= +Y.C='TCH $#T #hdn-2EvD=cm8|p/^qb~1T O>8փ5Y|iUW-fA?~??}BX107?~ rĬY ,P'z6׭I`J[8Wer`l|]uUZbAPym]4]4WCS^`%>w\ + Wc?|3<#)1sB)g=͔n˜z愦V)9zK2{B#w'aHgWLNRź472EYR 1v8K(G%><'`>|BQF5ժ@nןl:Oٸ;]~P IfY0S[V ˙r +|u+-sGG:YX@00bl?a#`*(%}?v|>2ϲ;NJ M'8! +x$3l-fZ%؃'ц̋3ʠ=9r"f2 m(X%ѻ⅞ |h yGZ_VKHҞw`"Y +z=IیF8d 8 Y;$P*EDn ,VN:FAm`x]s GIF<)GDaAiɓ^e5杸}uѮ$3^bP+tnbgO+n_]q%Z/w0 !fFРSs3Yj sZ6^9i+'R~ +endstream endobj 8397 0 obj <> endobj 8398 0 obj <> endobj 8399 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8400 0 obj <> endobj 8401 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv39623V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8402 0 obj <> endobj 8403 0 obj <> endobj 8404 0 obj <> endobj 8405 0 obj <> endobj 8406 0 obj <> endobj 8407 0 obj <>/ExtGState<>/Font<>/Pattern<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8408 0 obj <>stream +h[KsɍEw#3C !eڤh |TUS^V1agU>D]J o?n\^_A w4L_CFk'3\?nf7N ZܼOqo?;7jx"&z=,]m;Scž75Z< ֟jwL>?hhb i=13T Ihi!`$,ww&pgn:sڛf:AJ= m'ylSC4'?Vs+"!{Cohq@JvJr&X=;% 맛WS Ex` 9e~wANzGa&46 :I GA2N Q;.cppVfQp_FԤ1AGAQ<޾{._֤ۗ/6Tŵ]owp ;nkxۇ}p>ܗ/>v6N*b4O06VCJOLBNq$ 66]p;mF dd8EA i8A8*aozą$@l{Cm&k['s s`{yN30&KF8zXUAX`;vJA8j婭U ŀH8~AOn=zd"Mt&y4a4(U*GgsCQ4a(QG֠h?$Ԝ;؊=hH;EӈI4܄F2 DX(0SyE32W +i% /ŶF4oAMP݃C L  #uѰj^vm2çͨR@ 'Oq~X~yW8Bx0o +81l9վw^d_6^/ +Ӊ!đ&b $T~o!tni*DA hUnDnK:3@W RZiD HlLHsVDFu`NW~ڽq@;Z|)P`G:_ dvK&d1!CPpA^h7PQ ?+k$YRQUzNndElDBŽMI-=vN7=FVA)>GW* KZ` +杰fF:5M1$0yH!|`64# +w,/(RD!\hd{v2Dw 0UխJ(ENk$+MlL,ѓ$ AU\ցǰ&sh2erxc_lQ1ay3T`8Ym9DDEG{Nlk h? ``Q"#| ^ݞ߿3ư v6no vxpߞ7ۋ~\ 7<>rw0EoѱiVJLTi ʜg}1ޮoT+}ZQSXz;d;73 (u2'903Wz0 +'}tsj3;VS3Sĺ^!bɩL +1 >oOqKݳF\K:.ǚY IbU05i4)JfTFb*YBub]Q?Zn(53m^I4\fZ1E?'ZRWigt~=m&;vNIg3ࢪE-I$^kjL~fL50&bu}]XO=l.,4TV-IXp rH#&}OYWc=Io$j[V @^dŀ4 pYqwZw]9fo`|fħ˅EqLu1~B?_5&-?,rWQrAnV3[{,x^m"uE(r67_HMHre9IѦfYYGD$:Pݽ,tD7m{\Y)˾8dJJnq

\n ZW\U_,O)u* +֭M麃,k{wirqgJPf1n,cj 6ch--|geMQH;*Go5bAk+X$L, ,B1:`lUs|Y\޼+ᇙ| HA]iL܅*]Pͽ]90̲$ԇgK3]UPC4!4Eavvlk@8I Oӡ"XMQE#N-Ty3aA||.Þ|p@u+O!k2D E,ȷVeycVB2tvջǪѿ +ise,QW}^V$pYl/X]dc>ag JIRφ,Fs m@5&1(W)RVO q&b[”]'Eeu]mH +E\[N+]X"=eELWԔ朽g_ZPq@5HΨdvMs%j-bgX ]p<'0J ^eDJijJ="h(%Uva_NwBO.+2OI&{vIAG:Y]|!^c0:DXgt"p WGz6Ԡ +\;hGbO|ߩNnxwy}nPфC)$SL4Wvӌ^"Gx; +pW9֙;kl8N5,LfU>/4@Zd+TlhZ7/x_jRQ-ausgښ +gOEI&Զkw \-R}e]-O:5RiQ@(>e3j M2jyJW^Txw %l*y+%/Ù +Mɉ&l2WK]+t.qz.ɹK"YՏ &!z3Ko3~v5ql?Q<]{Y}wo|SfJ .(e5v/u{JRKyH=?eXniRwgBo\fk\QTdƟ͑}`g +xR:kMU+Us?93&rN' J0ZCm[wRv:.{] +iN_ȹZT9 \]b(%9z~7Ư̄_;kYL:<|){(k$'94dqymrj4 ^ՊlFC}3N +V7U-ζbro<SetZ~r%M`Cy\] OmSovO꾴ۗZ ؐTMS'kawכ_6jfC@l;@ O tGj%߷s _[h]φנfD$|# r}_"px0?H;@<"Dto>ܟ@I/?\'fx53ϛ]G8TaaR~4f`+d12 >SXuFoEo9ӿ{|X#x{Ń0ނuŷgV!OWbN:E>UlHnE;p:i῰J܈a3=qW(_ +-{x\Otkt+)0F[@̱>yO*ؠ #)E;̯>ʻ1xїG4L CM6R.^%e}Іn޾p|z/bePSrƂxF TZ"Vya-O`MERY*(CXɠf+Ͱ#pw Cˀ]Wh%~_l%0L 4i.VטwߠqS,S mXeOf)phLI|QZֶG\GYNvUX3pp<pTwgҴ/ ;Yvƹ],cc:S1h|rh{pS3l`XRxH8`]"6c܊ Q<  "GN e0!q6v>b_,,Plf3YstI/7Z,qFPѠ H(Czf\\q6M @KA-F0jћw$x8Lr t ;/.03%Z_\p@@|w  ~6 +\)Mot ]vM3(& hiviC `EF/xJpDѥCh' +6u鹼 [}U;ʢr3QY81ƯHT_&rQ}; iߊ>lP +7NXXD8>[FO!vzioRt[C6F8/*p.d`q`>[mKfQ(0 R!a>l7V|t}`Y +endstream endobj 8409 0 obj <> endobj 8410 0 obj <> endobj 8411 0 obj <> endobj 8412 0 obj <> endobj 8413 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8414 0 obj <> endobj 8415 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv39624V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8416 0 obj <> endobj 8417 0 obj <> endobj 8418 0 obj <> endobj 8419 0 obj <> endobj 8420 0 obj <> endobj 8421 0 obj <>/ExtGState<>/Font<>/Pattern<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8422 0 obj <>stream +h[IoIW4TLFa`I=Z%ڮk&IY5=Rfo2t><;]\_Nt׻YusW~Pl>̖06h]eA5ZƠZޢ5~w5(<{{SG{꫿]uz BhZk.Ӟ9'$xl#h+5]1btDdѕ}2pOdAW&RY]njzf8 uC 0G!W"+ݴPK&<=y?_ wT!.=ngY8 GQD(ZI解XH6p}Һ-᭑dl2" {#F4D3!qݏ1K l: `{{I]酌.}|7֢׳`K+ŠIeY߯{ע5M0얩E}p{_~ d ! ÍK@nsztǼnS[q[q[˜^Jkrh~O/tL~rBj[m!M#HA=$]/m:*0j;wr[ѩP% p`*!eo y HX}unbuoe({cCpp!XF%WA#ވ_F-MmxT@KV<4N/m$Tl (,u>}V :O-CSچ?~~.1'%@:+q.c:v +p BnB !;-)1Cޅ"RXW#܊QH/AE+º(u +R7G$N] `8@`} }j!PDaYxl©$\AT J:M$X$/gS2,Gu01̂qFn k?(29, phvuw4` 9Xh +M&Մ1-|3bhp;-L֋ > `-H@$+x_ݮ?o6nݻbi?,jz~ww]tJS$,DRae76' kkxdTbdžHn _ rՈ ,p v6n78Y[[׍9[$fy}"rh((aT07JZJN8MG|D4}$dş1uDR[ +mY3,1*CוlL]yf5V1^64̚lO|%4 a< N[#^6>-ƁHK Y~-ҫUlR)pcg*dCZJ9DM18i%zްQnNʉvBC"5"yvvuG^k"~DSNcInq̱6>6W|ܑ9қ! )j)F=piTȴ{=_ *̻ݯIf[y[?7k8yw5v74[,ڷ H;z)eIl ~ H6p{_f[wq>=|v9?=u R*`6/[xɝo$es b~Pm4->~yԹ `l i[`ǽAZyO#ֽߧI[>//oS, qK1 OK~[ ~|EU$-qb=?_>oͷC|3߿[g(rR)"P~q8ZGs(.QvCLWwRHsY  NĹ#74Hr*$8ʃJo.=6JlAXʜ(\v]Ns.fHJ="bO(D4HQ D=Sq<*Z8gHɞːK,-(u'3ԨM\'d,UՐ+m*PGZt|:>oefWtW8PW̡D>V36 8LayUJ\"Ӣ_%zJ(8#{B}iu$ٟH(lr +3K)J-"vk*G"x*%;#ܺq%!K5NZIv["gR.jF[b* k@"l+ q:(7@¸p,gʎJbL&at! " ZHoRzZߪi JG)U%okj\h͋T)YG^'xl2bddH&7+[JJIJg*m2E=lF:et F=`D^lkqI.H+y{j?W @(E_'i=O8ƿ W`^ l:~^8 +/>~T{70/+I`:<ߏ%}ޤoYN+z]x}jCWau:a|w#O6'c;~wOF\P8A^""\Ξ_9DXSƈNyO1Niyi|rsuS;p=7p8TY"1g+=a'ӬJ=*kX05p/")X #sPQa(W?}mn6g&aGua{}\2xV B\tj2[8ϴ6CdR¢]%jJʃώoB=I#4 &%uVt{3{5Bވw{͈nT\|5P[@5Coz98 &_B3iMd +NP+)tgtI_8BN{Ke8msk0Opl i/ؕǿt8h2X ӨZRQ_ݚr&H`jiu|M7Je:.Llw|6iB^q.n^unI"}X$Mo9]|g&gʘ\K&T^@ۘDߛW?Ҧ$7 s0{~?k%0a:Շ a&Zxx+; чaK2OexNhyE?FwgᨌˏUۅ&Xu\o ľ@T7[~!Q!}/Z,'r.c`g?m2ȯ5 Xc}hn.-6,OML-] DtG i}:S |񓛰T=paV4TM8 \ }*nJ)8Ą|q)X&Df@vMҴ$hwTwN؈Mt괻Gck$ #i\qxzA9y2l0˗FY|8 FO,llOx toVUH&_3RR)Oij*> endobj 8424 0 obj <> endobj 8425 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8426 0 obj <> endobj 8427 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv39625V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8428 0 obj <> endobj 8429 0 obj <> endobj 8430 0 obj <> endobj 8431 0 obj <>/ExtGState<>/Font<>/Pattern<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8432 0 obj <>stream +h[KoɑWQ~>X3k yFCb}@cy,ie"2Q ʬ|DFDF|u+=zEɄ80e5;tBM?_f(]⧽ROx٠V'*)~E->NN9S˗=;zȭV.rK.Dz +MbtMjl2/$RA1D6DN0e4!~_z{(Ժ }ҕ[jEx‹V; 5:]elVR3HPG{yͱJ ZLϟo^ V.]w~FL;)M>cL;)k可n>ۻ^yc_>}{lVif4dGtizyYH W5&6 ӝ-- Kyg@n6f4~!<8*KMBG*e (;_ǐ1BH&٥VFrmRrvZo\6zo08Hc]fMEǸJ[ٻR\50bF GM#XFHs;B^bvA9A$RPHliDAlKk2-dR\q(eWRY7\+VDeZݲ &VkX] f-@$Pc)6>^:G+t8Mi<uoϰ^͑|mcԝj+FS<^bShk<&9Gᯁ颸?GWޞ= E25E9GeWw\˥+/mK>IW)oMLaVfZƢ,EeˎX>ox,ħ'F%O x{_6 +=z)u0=Ƀꢫ>݋Ǡ_-I6v 7[GrŁ;Y%O +:a[i2b2)>XSw }9ңN + +n[Ef*wlR18Zyc2_AÄRؙT[amfb`Kksz-,i4qQ*zZ5qydWbՀF;!X %Ov᲌'rn}.f8 g$bxM}j211B+HQkWmG>XYǒ]Ik'z?Ӏ="ERcڂikq<(bxxi2{́]Ȱ ֝w)c.-CZn4uZKp999­OaR`+/Bf*_c"xe );5UY +3>5vGkmܶ hf8f]LM74A}ש8jOYk!5; !hFlgP;P*2,ԍONjFem¢g!p +f([<6 +A +j:O-4QGm)s ,"$'"K;a7n.!zIT6OlY@'=mB9Cڙ\v cQ#jO2%d7P,MJiDۀɀu&N7~ Qԉn<<,}.O@ Rg#\#-"#4%r1Xe nG(ٱJO9ò.PA ^<LG_\۩㡼_ӛFƌ7ܠ>WQ9w| GP+T@rG*yU'vxKusDݭ-v2giÀxU%6V7 \}B:yl,%ƥ)+*:f +8qnz89j0+6A/acm$桬e?%逴RYaGV g[ }4 B}iv"S[)Aд9uM|[1ceXKۂT=mӡ,$H'CA6>6c`o\6∘w}s-k2ㅚÈQA=4Y%}6G+yPs6 +D:IQG5*a 2 5F?vM;ZBjBhY$ : Zڊv1E&jeà F8& &$ rɨyJh'-\LY`tEۮ@qdV޸[#SHww7R+okk8ktYA}]m*M]o{I >Bf B1j;DmF9{6nQg3`X1c&K-xR1υd&v\U9&_ۡ(ֵhՅ6/xB߷h/ͧ{Zj,i71olW[s/o5{$Mx Q/*jLwĪڍM@gد"52ItڶP L]4쨷V-yF!$kp͑~ +|+8c9D4X H\̲qM3YЈUFI0H-8ԏɏ~גqI1ߟL9`vLѵV-ms'E4{4N)T +CMmk}"/!oR|,ggmS2NJKйZ^2ʦ-o9{Y%컳Ԏ#"ܸL϶<ڣc˼mu{``[WAVOwoBOi=\oKa1POB:m9xk\e:YĎ˅#o/e~pSbZw%vs*zE´q,Svvn9y_/: ;@׾7]jݙ_M'/=katcs:хOvz>g/.wejj1L!JS2;:h !g2ʮˣk9)D3l5e5G@ɏ ^MzV:#ckv [\<>3>JY~,tc&deٵ,&=y ]_LZuaAhn$"#|_ -@t7)FZݢFE<5^Rs)WJǻ_sE×&ik|7^ϦL$YJDFϯ~y*~)(h s MJZklU 6Djlg05_cR" u]xnZVYe/5F09^6 V:#TFx((s'bdmg +*ATtm-j)v'BPPVnO" 50~ҠG.K@ChJ3Y]:I/!xЁBQDh.ƁT`(fg"ܭh!8JjZ\M1`tK2˸dTSе"̄7WB<%f\|]|􄈮iن K_Nx5O9xB,}OQɉʆKHצ* 6NCJ&ȴ <3`UwX g`ƛܼ{yXwhђfy#% 2s_1Uڳ(0! ((h):K$=y~S !Tn>Iˆ3c[+ +_=k}7PHWǻ_OpuuP;͠?9Y9Ƿ5M#`[ ${gc+ZL;7`W۶ jN>qqsm>Y(捞MvsG/vDMBSt̏^R(榁?5}RP *֐ ѐMC .N8^Gj +01F%Ӿ lJY6(rda%h{1pc^q +#9ODC8J } X4/Ƴ/ +4z9g +ʿ,8[d*icU,>3$ +Y]гP_>G BЇb}*:`߈\pF +l/kȊp{,39bih 5G;x&,ld,"ҾNe!~&v"^0s #8꒝o't[/3~Eo#X{V"sRk٣Z{g)\ޖ8/>l Nm- +A Xl,{Zhe_L2YY+MWA<_6sxbY{O|Єst{3 nji"t¥k6[4:tZ|m滱 m|,#%e0KLhʭ*  ]@)HҦBcMZP(z¿=0SB}Lr!ccPKfh}.$k2f<æK_oY8iΝ/.pѭ܃,WZqe`IG5@ ֦&ޜ1,l,׻4@4ֶ~eaZD/h-kS*:;ܲ@_9YEVPP }|zcU0ƋtٓפIKznHsUJSzTJ8 E=m%;9/grgJg.lflf{[M\]ԂAlBJ.x^ir4dms4}Uє򕯇gyWԮ,O$$uw[O uk!uV$kYQdAC~ Wt&͊Ug^ȏIr^..gm=(Zo0b FxtG0; F(72~T+Y3G?wuz/M>x~`wU"Snn/<}DiJyn( +iFHD޺G?L+ +endstream endobj 8433 0 obj <> endobj 8434 0 obj <> endobj 8435 0 obj <> endobj 8436 0 obj <> endobj 8437 0 obj <> endobj 8438 0 obj <> endobj 8439 0 obj <> endobj 8440 0 obj <> endobj 8441 0 obj <> endobj 8442 0 obj <> endobj 8443 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8444 0 obj <> endobj 8445 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv39626V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8446 0 obj <> endobj 8447 0 obj <> endobj 8448 0 obj <> endobj 8449 0 obj <>/ExtGState<>/Font<>/Pattern<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8450 0 obj <>stream +h[KϯP]>mI3{|iO0ɕ|ODfaH$ex;wW/ood2/i2R]r/Oon6B_1vqPJ. J!IJw؅yoEjopK@W@)H +RN?{_YT!5I ,[;{krVBBƎa.:C 3[]tW!׏ró;"+t$a#6::;X\Oo, `4[z +D)Ï-,E~Y͋W,]UX_bE"l#v8[{}-ْF&BKRg«^Xnز`kA’2e.arteqVxOyW.8WWo&niM@mMw>~+͸M;.g><}xëzÇwo;i:f )MN13y:&q eOeOe7s~@n^|RM [#T. ff570.)S0kqM}zy E–9Evl#9j`0!3u04t9!\)B{7HZ-Zy,pN3*4õ-> @hZ%N(;A͋nq-#xIoA-52 JR Ld+-@_me0]ّgPe*ZdIZ , &1 GuXi\Q(Zvk%?|5%#cAH&DG_VGe=9{3TM .gdf4$-FZ5:,)?RZ9ԏ~KpS.L_ +ҋGѵLp\&(,_u~HIc)JK| XPq @gN:@v ۣXA +(_'Vr='O9X_iUpn;?pAÁׄ3uZƒS_}ߠN5"!/kd`/A +ek5=±hR] +:x&@|&5f$y5f2x(c{wWYfi$nm[A ]f"`&h qQWE@D`:\~YVZ;rg$Qp'm'Y`Y:&YWDE$ 4yj:0-^B[gZ.l%R6F>fjQ*Z^DK߲pyct& &Vƾ0KJsi>ك׶\/X75^ir(\o2X,wMK(+4=3wI($u$Qj'$Qۥ JsCxi(PtP޳aZ]2-4V6\ /=DMZT_* +,5Y]/>%i~X&Q V \蕆-5[,W)㭥gF+ű7+WcEXZ340347^-On{G~ib͹k`޾.=o,v綍&p!@ۙZA]>8>%d1X-z'|%NM*/b ԡ;`>xh  NTJk݋)-ItwK]K0R*ة˪Q_~ȏD3:\ؼ}l}lf HhZMk(Z^k6u, I8v\a\ӍqWh' /{OYKEw> +SVƁxZSՖL?pƌկ,uӜ>˽h uz[.{^[5֜1枰@g'Ҿ9w(k6xTdTa^BLYUS*gh9|֍{;k~EIُNվP~Hi(#k,&j:OجJ![cL>55dؤNu@cKGJp/pBwInz2uO:כpo ͜z5 "u"K(䑦h'P˨*Up"!X=KdkTd¡mj~6MKl>Knau%nj,C]wA6oK>T'stlFEؓ^"*U.g6XJ4G;swuoDɮpvu?. ~t\g೏>'L;@fc#\VC +mӉTVYͨ~ S[o|mom( ׇCV[^eKHq[_PvY +6[tPhj]<}KcDR5=mFT.EWN+N*:H@oDZz_tn̦RN]u#5h1lY#bu$OыI]2Ym|K=lq~X?f`-%xљOHNX],シ%qP,Vo=(\83TB'R1t)0Q>e?@iBYF5m6wܕ;rp|$ycErę98᷈mMsn-o\wXV$rPx{g#8x]efX f'⢴$SM$ fJ@G=xUqyG a6_&?3,_^M?ˀ /Y>us4е/`a:YF0 M Uc?]7?17?<}@X[%B/ (!g$Ѿ8Z0`тs`N}F<ܧYԸce. k)db@A:9`Z|tO0nr_s5| s cy':0#qґmP +"+ݺ{˴g}ؽ 7 +kT_</_iA;%VZX

t WožLJww~o7ЃaoWa1LߏW7Zx&C٥6ƈ!;D >X:wB둙7`B7 ډF4jw*4͆Lφ@[wG+3i]jf'`hl{'ts͙n8de6f֑-~WQ UݢaH04 ݥI-\2~ ۞U㙾[G` GM.(`͠P!NUfƒxPΒ;HNn .n(A1`RȏVK +g%1k&In߀/*#_üGy-IL-Nـ dC*ك!8!+D@3)[՟ IҀt/قI5=PcِRFnup:ŃK6H`zɘj/gX-Bg[4"^0zo~Kr?}Y-県ƀii#ωk|P㚇&>1bt zyWFL[Q98{.9<87V$85".#\{ G1w^]B ZCbmP> endobj 8452 0 obj <> endobj 8453 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8454 0 obj <> endobj 8455 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv39628V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8456 0 obj <> endobj 8457 0 obj <> endobj 8458 0 obj <> endobj 8459 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8460 0 obj <>stream +hެ[o7~_яn&N6=87X +8w}U"=;4dXUXdL?}˫+3L 48e~q2tկo&vaxk2Pj\̞[g,qK.xW +sez6N)5^zsW+`y ab?/ag3"6;9k[3jWniPd“E_{ 7,:]f@bvO3 Hn9YɔKZ) q&K}P/7UT΄I%1ݯ.N ?&Oui<EzHh.v[9iNֻWVDT hR6UD&KVElW$3pS'a u_;xqz>MϠz?IOxvݵbzB+)O`L;)Q5jx_?ݾz=h|!NټoXe>I9a!MG~x%LRv\v\- u[l 5y6>bnv^xR}ёq>( ycAK4Qi.>2z"G(^<_1^h86Q P4)T˶ZrӧٔDrȢK.GS%gD̉bmS2]$_0f&<\țD6îpu&EEM5XYaT5v#%.Um/hlGZ:Y0zp4Uu +p6uUJ"g?5"fq}a;8/+^^&,]Io[XH3dOIwbbʡФҭo*iv&BE`{d3WK5/"ȤjLxj՜j%0D~s|'$Z.==HK1a@BLPpืKN.{ +~Nk]}_%*eHVctl#>;6݀ZR⬺'ClfCqks1bϲ6W$@3.Tb0O nlť@,c |C^m_Njh.!Y|Zyfr"PmC," :c`;$ՖH;O tN   UMA Fey&RD1!2FgAYq+!ȏݰIv(!WHNbհ|\# +o}dgno`W)uQST׼RҀKQ#m=Ժ1vs覓rMM'FubvéL8$SK81@'9:0,~5B'5hwavtJSm{Fz g:y-~nY9~:xn}c'36WV}ےS+=+`nX 5>WAOZr~8"GS0K]+SKlǎv?PT޸qrVÆԙΜc֨ۂ߈5ER__G-;:,ocC~?ny vvd+u:WAoNSQR P&Kyf=`V?s֖dh{ӨKGu-^R=b{g+'-xzIَ:m@b9]CΦs4i[32UN&6gH>Ti{h}TmSW-c`Gowoo맷qG$5 mv'^MO?rHz? y5+w|>f͆.ë &KRKw D×_H:}k?Bkk-/Wʃ3)^Bs^Gz/T;Z+nZfL%򒊙;SV?oT:9=D_f/.lJ^+s21V4vyt; x:L g0|]0`s#! +San:'CBf &/zᛝX=0޾]@#/jPo.#T8 }n(!VhS#\(xC뿝Ք B$d}ZYwǏ[uUC[$̚>3VאT !Bq)^rnRt +!7qu.CO'S,}LDۤJjWuFߨ1HE }cM |@i-`@ 7y~t$Yb?Zrhiې-'u(*PqK^דgIf{ARNKˋDzD߰CjŽ>:o6P,rB.<7UB:#hb{yfLW69b^S}K)ZE l j:]H(@^WhI j&=Wy_b/Ȇrm-Z  + +@X; > :H߮ZãlmHXgX[P=6 TH :m6vQ$l_ ,kH Whn=A7z6.ZKʏ~^h0YyR_%Y_LpHN>4H_P +endstream endobj 8461 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8462 0 obj <> endobj 8463 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv35526V6.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8464 0 obj <> endobj 8465 0 obj <> endobj 8466 0 obj <> endobj 8467 0 obj <> endobj 8468 0 obj <> endobj 8469 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8470 0 obj <>stream +h[[s~篘G2U;S bڹ8#Vv"iJaJ|$9q(UJE4F_>4z^^? tyu`;lLt6KXٷB(+Wk,-ƿW$WWzsA]}? +xNEx +B"\&\3NH󱱎f#!Ҹc7u!E2%DtZl.[+ŗ.rY3Ӭ7 +ewDx+1shKӒG~7g(:?w=Bk=:K"Qd(ZIOGbreڸVyKӧݧIj})Œ@{nipY l_רBg:w>^wQW:iz OO݋/A}b.BŮ~BZML&5߳{xs7o={_\{dx/}(M{qCh/dg7.Mu?  ޤ2ҘTހ5Nl尤{%"Bw}/A/,pwqcG*[e)MjiPYHS%p}оEUb_kpy){{ˀFFE`C8pݶCp3>?չ{ 4ZSh{@GIG|"~jx~9S0Ɏ(| 6 Lд{3mmѰ"qxpO%NW9^rG, +H pd%DRžTF%GU$fhWܢRfX҄6ָRkX^p2;M;eXRݯg BBy;f5>*_ed)]{iq_9Yy/-dMe޼ᢵ-I,󨜤 }p*mv5p|6D(?ں_F7cx#s+T2먬s qYTu|B[2>uMe-V<4^ʼ@KMqQ'E\>|Ow -> m/osHӀӎUY29b#]L?\ҽWf +e?| (TS<[ob!.i~$A9e2Irބ%R<).v˺?iIQ+U:fC퇆h _M՗`.Yg/-ͯ'J?**m[[B62ЫKK]^HC#OWf.Ub15ZS9R]Qm}mFpE=M8CyahךBoI$"|+q&ݶʟذsYz1nU.G`.q3.mh:SOFL鍆Y "lr\Ȱ;a讹ؑQ6 ;zO׫ &-E'ϋ s:n;Rfb60EQ콟hѫ I<:R5KVY kӦrSIU6$l]6sKqC#1{TW5"ԇ-goA\ذQ}O'~B J7n5֬1 i4>hSOjD]jƘnD7FQ15 E"NzsDJ*Um +6{HdD%UDi/v&83viݚȫkE(( +%gOA1 + +h.PSC#јP(S| -g0Phl4T6Z.ةHA'.Y +*( ) +:H q0vh) rV͏mnjm3^FF! +ɮ +bcu5:;>J?mFGCQ] WFh&#d- ƛy +._@F\ecY SR\]%ĮhchU.0Tj r\Smzlw̢39 .:3R t NTٌ Heߦ,5UK4 `8ZUuӺ);55¬6@~~ +)2x0Ãpeϴ(@@ڣjWL<7>P PjK,ͲH^1R0޿S R@WAh; +Ha-@@'+ح' +240 +Fz +-R` z8^Ew@dG2_pY 09̗tݬna=,$~h,0޿S8S6VM_)vs=Zz@5 vE8jW Mt{p02Jʍ b9aT{(4 +쟄44 !!p"E:O^;Ǵ dP>SQ 鷉 4rzG`@ cuY鳓E{>F{n\g1`~A 6 X7Dơsi)@5@ 0 )} 207,O!˼v(E􅠐.* \IzOA]AਡKs3ET̆ EQyŝQa:Z 2?h+̜G)Xޠþ?;ȃO5h?Q6G?kROvB?U\B_!qz?ҳS(iz?Z^]'xm<5ÿj3e]ݳwjF+9*TO<?Uŏ?T3f4N迯gk+ja#GOKɩ]Ya?#w&fw2e $dPze.?k?tQϐmN%'Id6#@5@;b@k˞Q9]o+55 ~0[AOvVHZ Lr-:Y%= L0ZY1+-h.d\Q`@ S\x-0t,zJOOLh&. +YсGX R@4,ŕz`cV U|Lb4U'7}ft]޸U$I˼T-wK@珘Vy{\$|z-]]9\d/-}|?ҳ/X{gJ#~/Hk'BR^uԴݕ  dkb]{pzᦆzQLI=euL gz&zJճImC(0F9ar&$0:ha#* ̨H`mw_hq=TeXً?f|èAV$_B t,`&P#{qJդ.>&\CȲ\MR[02Air/{t10_{Y(דrC|URrJ0[zXe3 鎝},Md*,EZN#Cy=g"K`aTΤJ KTBQ2 ̨شO2)b{|Tlڳ}iHHFŦ}IH`&R$e1$%*J 24Ԅ|FD2]5uv \2܊N8TH_aScP! 6 5Np(nx$ +! B[z&Lqj|Zʦ12ị,sh Vx`@җ ɽك,t|8s4Ͽ j<-z3\/m[:3D[ lHϖ!Lm +aҰ N@zx^ݤt;n;l+jaʥ)'67̟ldmͮDLx#WXUl,{udRPEXQFl6boC%k7`AB7B.HHu&~[:JD;$O[E*iIRP:)3| YI' +a aa."A9raa1$$ $vSHƐF&8Hg*&8#@;fRg8Cu&Ɛ{ĩ4zbxA+Դb=D 3#(+PLi!ظ0SB`xS^DGֱ1" `b *ab 2Xr"t,X.r R,Y.r Bi OQe:k4e=plN?@lݬHN_O! gHG1#eZ<rSJ5)ĝr ;hIBȕx[bgBtŴKmY0eД Odk͎2Vܺ~`A6 d18.c:dG QLVmUL@v[oC)oB3=oբOp5~#) Z~.0sp=Ӓ|~;NU~}ۤ6nw}HUI?$\]q8% `4ܨ6I<. 7+Yk_ sp*zlnX;[;!K!.!VX+ѨvJE>+?F-wsb~5eQcw&otd!@ ݻ WQν\p +endstream endobj 8471 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8472 0 obj <> endobj 8473 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\ai17154e.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8474 0 obj <> endobj 8475 0 obj <> endobj 8476 0 obj <> endobj 8477 0 obj <> endobj 8478 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8479 0 obj <>stream +h޼[[od7r~ׯ8"}NcgwĀR4+c.ّԝdA`k^UŪ߿q˻Nj]_v[/ڲm9/m[crb[]msq>B?-$5aVo]FFrj\vs5'6y{pkćk#TJ޵e&hR*S ϴZL" +$y_# /Jxy IA\7SoNzܔj:+! M7}O!T:9-ᬈ\lP8koZlV2e% k;)ə +, oIY2_<Ed` tAn~)Z[XZ绋 4͟~5ehgk?O+"h +i͞u VN6z,j+^)nM@M[k\|\\Z^}wW߿1w߾+HKEf FXIuI Vϲ~x7O{>?׏y9>֭EGY a8i&$^mM-.dRTT]HI;d +U r]]07nSsx +9Pف 1iCX2'_ksn-]wFuk"0S]=A @fAUZ֠T*)rQ紂f(ãg#CrjiA#ރv[ QnA/E(Ð@]C$#w8\ #(eGRR-ݶ"x *:$+B >ۋ R&0i GaTr篙KaZA L qCGǜOy ւmo0<|yOŜ+#DxXV,H &7|+. F˴z'[J$XԬHqQr䏡TkJat+p=NUjäx7>-x0o+81,%<_ÿ?/86@ +^^$M775kk4&6 #呁 ~}>x.(>QSχSj" @A@a'2ctԢpe<ʒL"@7 +6Pt"AAM~ s#a,#z;lhp\"0<`~_7Wj+Xg\]!ɗˇT~ۛ}~D~}xz\_n4B=,ՒZ]dW|F.뻛4p;"_ÿ,O?B= X@>]+`Rw&^ Whq\I~{ +f.>p +}ǟ׫9P? R-HЂuH2j;q]*ƥpnGA^OU2J01;kjU hi|(#IE\v~/!xZDYĢ}7 +3b +RmZ*Szda6 h:B$`XMKY>F +mfͯq\P JF6586NFk؇ ֟G_:AY qk/Vd7h[D!rU) 7*'8 2Te}Nj~2E%4d%bpcP%A>(]KdB\dRʆնɟ#RۺrP Ÿ|Fsq¢#1~ІktGSzjLJ>Ū㴦m^h`OY={KoHi-btS–IA@. *Pα=a-<ݱ-`%-)T!/(qIco(!jf-u-ajY{'ɊϰaXgI{B@wCLMu3+%&w"3B q+2jd$.ωKX穹ioGeѥPЏ;F@mjzF +{sn{ioox*t +L&aD>IJNSXeH%d CyFp <{+!fB)z:gf8 َ=mAI)ϞI=$=ŅY7F`e}<$j&uc1/`BfˀF=pRX}I- +8]tIN!W S3Ez^+n#G\40D!RPA i|l@b洓 + +p j<} <пqLN 5WǪ0NX +1dqܐ}i7}8 +vuˆ>pf?lvug_̨|hL:Ca44kf,I(#Jlim*Z83M29 XENRɉ 놹3Y dQ,+m`47V:89ڙdي9U}7,NWNzTQPZĦ*;FǦ1Òc'}S58jϑ70X)&8[&?K''%ceD 5s/6h`<h!q,`sxG#lӉ:[nUmH_lבI;Sw7U?C.'b͇ W75]2rx$f3=9s55&KS:b8k:L~g"H `?_C#"DDZ<-aHhjKMv *S&q*1b8·ʖ;[+R6SZΜ IsC/@Ξ >[Sg~'-cϓL9_ʊP6gS&(ԂN9/Hlr$q98f7ykcdб ۳5A2lh;KG}4PN)3x㸣+ N7(jʌ ?eB@'&eC]ŠT{4o301NFL)0\3Y!ʛҌ+"qd{Q)`. aykZw8gSI^ՆqYUY9Z"*-QZUk,A9gM믶Qp:NX9HQKlFǦX؏6D$vtDCqYD$۴e3yH{g3cMAha?sH3ɐxFKyE;9" +w 7z2,D_јfa+f[/U5t0xd X]d;.~3~ +l73"}kŤxh3mluuϱogh"hnD}*AqZЈBj܍{4i l G8q3S2_r4k^=9>ٔp1ŞpS" A4J\g`̡֓=o4nXCKIzҫgǞ^Lca7BrGlP~qh l0n-Ǔν :t֛5?dIM[]\NVi|v=oIo)$zVhg׏&hxʓ;Q IqljtMaPp*,ׯ3rG{ M!ɢHb4;$|kؒe I۞1<"ɲVwj:%F9bifJ)/uQ|o9K;&>ɔ͇_MLCbvy@>Vm5<1 #hjxcl8 cE<4mci3Pu'I8IF>U헝hFsFѢd//$CSe_)7>{;$N@GI/cJܞX<(FI1^[N2L;_7Η 63-HrJ eqw$3Sd]Sٙg`2e]{IvxNxf&_j~`@dJe;'sFq]TC$4~nnu7wӜWG )(nj/T3ѿL4sǭSXkJ%Y]eO9_>u[x/y+{UTq}%0 |?Nhl*wwT@4Hu?/][Y.]+l@t Kۮ^qo\K⻺ksTjT$ko*n_K֫872ƛo.XӟۋWwQF(wolj3p;id"H +]v{VKn&ƝýZWrJ]i|3W}u*::6Tg|{q ^2|Xp߷$>qM8gUr. +ͭ39@3ZhU5(H:9PZ8NgErŻ(B\%HW' {@ɇ_'8xUk\hxDaDvii i(})#a)c(tu2ke3xxT = mė.1j+tGKv`5qhp<7WGا80uM,..~ûwoOzcؔy?}@W]D>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8481 0 obj <> endobj 8482 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS19589V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8483 0 obj <> endobj 8484 0 obj <> endobj 8485 0 obj <> endobj 8486 0 obj <> endobj 8487 0 obj <> endobj 8488 0 obj <> endobj 8489 0 obj <> endobj 8490 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8491 0 obj <>stream +hެ[K$cJ%LP]j`kX3#?'3FZ`!|`~ߺ~ӓ?a|G.χROi]+][ߝ9yrJSlZz9)RߍKshru[__~3^ʔj Ƨ?4R +Ct1]W< ѓP<ҺW|ͷp})BHpL8%NUzS9/pږ-^Rǂ rhLG}:g:\Nk'⼯a +pbgۅFm6WoOf(폫ɇeYS,R^n"XV5-~Gr]ZWKۿlYmSqպ^jN~}5WA'ЩqY jYV+wc@=aד~hWF7LKD%n?>|_}x͛p6|5nʇֱ;$&O(^SZ⡟=C/^K';MK(mrur1iξwo_ڼKmC/;rL<}m ( 0/[WfuM/P.my'o˽원Yݔ>m;O>~ʰ R\l۸"z45Vm'߶}w ۷?;O?%wߵ1ߟ2D{ r?FKTl%<ڙFb?Ҷ}mlzV5hJRZZ}MtͰejWlV;Xؚ&)|x?~dl* pvp\6c)~~R`cϹ}ַS.s 8@G?Iet`ˡ3~6|p&Z6U7.ɺa3p1_>Wl0=&KSr!@(ૐNX:z4WF +WB$/t둬)">NoP;}ٟ~w!.8 ad8~=|߱͡Q?S~?aUmT};̟_(= \쨢L[ ;VɘAd4ԕr^d=glb)SV+<.ʚ#A=Uz~WwBBA6  \2hzz!f+s1UH@TFa]om(;ZT읯:K(ę=Z/ԅ;QW-&AG _U%+){O3#RE],U(pj.=AU*`eXmDEMݩ Lr[7* X'&D1l +V`I!8 DīBYQ{ 9n(<&/YLXOO-B>I8 IQdDgź[1b"Ͱ+1\`lWF,43Rё2=:cޘIԳQ؅Ǖ55=d+c.wsY6`0T%8='PV/y9 JAo,YҠr/j/ĴL^xEXJÿEa_8s>E"5!HIH|T?)h\3?{Q3TvҸf1=Y3HP H9oҝϞe*_ZwM2]V" -qvvG~lBi4:ir4΄1+ UQ ꍴtI{7mj`ڗ2\y6FiY՜" "'vwu%qKϗDV6$ v%lj\/bO1#NƧIw1/˝IWf }\~9O5wVOblOra lŤݸuFkeqǐĘWQ6l\l@ۨZm-u*iC܌nZ|+l|7$MلkzJ(8& Hj״R%@冾Z"浫X4ɣ9VYԅ*a FWj>*7a?XJRj )27^ wz0T5wouFV ޤ;XXʠ*II?E.ΦDlP>Wb̲j;{k0^T݉`b l)!;g2W{Exp2)hi +^[[{֞ `aIڲ1mSX*IT\Nߝ='@pe\rCC_ԮVVA,j!U:EE"jteUzN15hÛsk{BaڦSȡ-歾=m /gQM ++4aȯ0%+1+gfRҞ0 9r>Hwigre&[8+N1 uy?-܍lJdT< D0~`ha˻q95n,Mvԉcu$+^kB焸9`4 U =`3)*g:Im˃i۝Ұ:.fuD@6/촢e&U>:RbpB\KAÓ+sImqJ^/n8fFN$\m[kw4[);dT݃{Yr_)ШB}]Ł*eleR&V6Hdw,[rb>6}v5}$,1S@CǾ*k}q%ߵt1ne޽'̨.V\gוu.v(:L>IwƋ/N?p+JlFH\eI+˹U`MJdDQgnv^v8UA>O ӆiJƙFV 9n^q}Ƅo<&#i,Zs'$M\vn%$hH4Rg)|ZBM/_>N-c fW9_r8͎bpx^0bbxmqw W2uĪ +g t ^LE#A*f{,e?vR弾Gc͓F—_VOxNahVM%w)ݏ+x)LH M~]z_هw6rlJ܍Ӛd-"Qe2h7+uƯ`PʘO]| Rkw0>C)?&]QʞM1{B;ƆdD4T&C.x[7+à>(Mb:P4cC >pR{%֓}w!+㰷'8OQQ!>_Pm7"c!O61S3ߌgcv'r2]SC8nbURl%($Q䧼Mӗo6g`3ru7c"9c +ha&XG_ Qm(ٮeE϶} ǍLٳk8t!Ϧ v0,=&di~Gn7S89T$rhX.3>gEEII\2*mWtq# Yc4 #yuM}uhޔٝvaG%l^d N6/MlCDbMS`$C\@tV}Γfs߬g(iEb"}<7fCvĒR{/w/M^#S)WQu>ɘϼ+PI СH>VSwoHm}4Sk=0=,3Lj!Y/)@'r܁y)ZD)--̺iKyM[hǴ/{bp!WD߬,qF7 + I̮_l,R7”`4+Eeϒ>|Д!9[0/("0KER[6:^x'tMvioV<\Yk~mMYۋt ^#`&'~dz~FJi pUG_$t#fVwOL(L&-, b" OG$eb=k-@'a9ײky)~VKIi.\9V & ?!Q0Vp!&ɃLU&ngTv@J\ >3R9h^;&454n~n D!؋8oP 3 Ɥb'唔<唳y0DXIl% <6O57#ŝo%9G:AstB)Kzl0|WA2FIUU!խZk EӮA#?=6<>66k/4$4G\BAURM0KxS:Y1*JS-8|t0T{ Dz +endstream endobj 8492 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8493 0 obj <> endobj 8494 0 obj <> endobj 8495 0 obj <> endobj 8496 0 obj <> endobj 8497 0 obj <> endobj 8498 0 obj <> endobj 8499 0 obj <> endobj 8500 0 obj <> endobj 8501 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8502 0 obj <>stream +hތ[Y$7r~_Q*E!$6K3]H {ɸj ¨L EW9zΜC9_9٘Oe]_LJyYWOnPz/[gvZkimj Pzlr f)f_\3UYwծl~ou׻ؗ\m<ak/}}$ko ?vmeupmjD][K|C=־PvtvߺiPwՖ[+i$n` 6v^]8\ǻo:QWko=EɧźRi|/ZC׋g-8.%NcfTUd)K'6O&,ɾۯ_>}9}o~;=ܽ?>C^R>tR _|~y?_vt ;[M;hx|is*eNٮK(X]+VZg:/%(e5 {m5! k9V64Xtu$3Kk`Vmr흍YbMlek\, N.v +t@'uv`)T0"*x L+=-Ġ[s_-"lk?J8UY7 k~]S\-[A19E(WiWWj`F ͛u A)VJI +,e.yCE+zVp%>qGQ+>mOuF.fE reۿ^rSR=WzklGO|pw~]ReIѯ'QÉ(|hkOӮ7Y_R7]7|M'`rճ k#Ю-vQ>UV8ӯԴeO\+ƾtEBƮXΩ}LPESٹ.֭bkؔk/a[!VK^Q]Ϸ* F? d]΢UiIYo ̤5Hn-AqM hR~]AfpB *e]h_3}yFUY774 1zjgS׶߂hUV<9 t}"rYhZ].颏__?@<@7\Z|IIJG\|Vx}9}|y^Op09>^ۇĶa!?pӨiT2ˬovӐTL-aŠrY:&M]Sἁ\a(Hx'9 BH]m +yT8d Ϩ3A +\uv;Ӓ%Rm=JU o8桖2HH9nr_WOFB dȢSjEj:omM^ԐPoGț~RUq9̄ ,~.inhٺ%nmX!8gnCoB=!h{9-OpV`X?=-? y/j'P?=e#fsm>6o(RLN].Lui~Bxq Y} TYꑨbU>m/@Vlz6[¨<uk7PU1587zze S "j,0cU!c`PeOiTی钂(kR+\vmny,,Zp`4H2ׂ˗V}-Q-js/?Rv[_WCɎGЇt쟣"fze(ߑI'ҳ-ͺ36MZLء02&hK|-:#Eɕ2ȕGEf~m臦T>GP)(PA(}ȲRfAdD=e5q ڄ_*&G蚱7ܞ +y[>ҼhƝ쁛ޕ@>'Ӥk$RJ;Ҫh \)m[ =ɝxl%+n9dD&+G +pU<0;w^ݽNL=4M M< FKR9p&ҥ?8w{ @*9Qu;X%Y‘@x nd+ YHb6hhCsU$@"TYOs= ۗ#ઋ$uaoB|yk7*b6M0 ""(] ,MXHN O$u.V8M ]ef4kLi~h)5%.^K;ҫƛSZuCmYu +0j߻pԊ JO-qte!o~".1t}'#v4vPoۇq itD}˴i3ӊCwZȺtkԚFQ8|AQVhJ] CFEہJ;+yE.k0q)GW#nx݋f?yN,Gm) +EچN</=8u{; d +Ϩc_kAB%;'M]>Z/!aI5<(T NVk$j }2hx'qGΪ{c3n#F[Hޕ|`6 .aGYU qF !1>Ð7߷ #9Jy-M4FZx]̀A<&ѯAp뀄t%pQvE9f:U]Fc9 "HYBϸ71.wmiBZɾGms$HjX.fAy]^ .F\iI:b*%2sOXlC10sNy-8ԭ@0C5CDr N +uA{)ʥe]Hxc 2'S=ee6n.GjHN$m֡Qy\tG1dz'''EkEeϓc7;R<' \Z~qh$`&Wnܠ_ƶcPt AB7C/+֯ԈTKN$v}#O^֠z43CYkΎ(cofPyH@R0LGrU +U)4 xX%*qVp<m2*ChjEK0u;"t4^i!F  +!M&p4B{4Zd*;*sËe$taSai{&!GA7vQN8p?BPog61jTxONmhJHC< +(wj9!jMOWo:M(AT;pSYEy0 ~Dob]qb(ד1W +Uxw静M*"R!v ϱ-`t)䃠f@RWP!tFav ޞ?ZusAO N7DV|fϊ벐w°/ئ\Ie\A/\7?mE9XlvR϶mSOp҅ǗV}x} O?<֪O^qOc GlrgA>[Y ^q1{BV{pUS+|-k{UuR @k!D C |]EqNT0GiWcrkMer@_4=1Tㆲ,(y0yĞǔSV&qtXP1&XI)2f~Ӫ$;[Ov ޔT 4+;^$n}!)pebӰTv& ݾxrfmm bHYx![^Y{ : 07ITjb '/oA<3GEll&ȝcܳ/2FLyE-Jl@uĘրi8$O!%atOn9gU( P_{$?PU9zEe%Tcּ@L ~f"2d$jK85٠(R&05j. ;HL0pD֛ʻ)/(%-(#" J`z&*= +zGb爔Ez3d.)~nM[MӃglrDHaG;gLu\8zp>Mf^FD1ëXu>K XVdwΰr8z,(٬/S)$L.C:Jf=5JgE'<}2t'wMs[Y^r5İjvsvM5ˑh8ě(oĤYҠQl.o%QoYdҜ%4!\C_UY`Խ3d+CvCԀNC_'A"D$k̻b悓 ӔRQT!vs2ǓFxݢ墱6K:Ӹ S}IS+%T}S.[ TTEW^gPNj\\Ilȟx !Ǐ"!>.@\ye+ވ{:$)1 +t~TbW.#(7p^ê_#m hp^^^'`ТQ+8,XXK4K))\zz (K%ڽ?b`_:c(!ͻۄˑ&M((FeSV&?Dn/!A?D0U}/I!'I=<<~sr=z~z}a!~z~WI"yn4@{9VqXAQH3)Newa&5Cᔘw^VP=0nݒz Ppg8f}r$է7 A\2#iyqb$aLaz\Zt +'3@.WrqJg)pWm% =`^ +endstream endobj 8503 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8504 0 obj <> endobj 8505 0 obj <> endobj 8506 0 obj <> endobj 8507 0 obj <> endobj 8508 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8509 0 obj <>stream +h[[u~_яu2&`JJl,ffwɥ]R[~zNչԩ^B ک꺞:u_7Û^n/Wyq#!%?yrixs@ ۟O.J!@|1B{w;˷[wz4;XWWi.K)2~4I͓i=j~G0PO3r۰N篆Gb7#P30aGxO߿}~)' 8eo7 @Y!X<$ZD8;!ʮ]-vnݘ]_ ^x;;NP֚:rtl>TcaR"H6RfRh3RN1c]&BX`B)V~Y~$})@{\]}J~'T ^}y[1¡<܅1'"IEG]> YdݧB0UB'S73x=2lǏ.R+TZa(٬RkV5lErx3l^( +/PNڨ?1pO blVR8QLy߫h"+$hg*Z?=zAB6E(qU6gQP}5@oZ"+N%U{f21gTb)۫T7i-p+0Mk) SMY}OHM5%}1!)ue&{@_ j- MDOU(Wt1VR6NfMBf<_w ؽvqnF&۬T>yu9+f[eG7F8 _%eZPn^qeZ>뱂.v1qIYF_ p<"Q:!0rщ d#rB{Қ~* mmGaﱾteHtCR/zJu,.U~ک󲽬6ʒeN9,%KdUuڻ{yt1n9 y=-;oȼQ;?"yhs5/Rv4m=Se!ĹlܐbdR;vlSc>6η1ϤI]1u}[g=%jJ35xOݶۛh x9I=ҵam7-"Lm> 0Ub1bh1fm >$Uن'sZV8xϺ!ײ +ݾkmHRA+Ȫ1U>qU%Ϟ)[t +qh&m$Bjps#%`#@YG\46_FMUQb,}Lۄqll~^odEM;(.bLҊz-a53fe̵'BJ+D~QԪub~TL uRK нM\v;J2ͼ'Ndٱy;tv=/O'i-%Ƽj} DD#n.֠fQjdրIRY",VOVI0ɳbW;5o lPv]H(&X*H BW8=7T=xq_/YqDӖOqlQ:4Bno&" |I䚶ԛSYa`b.0%IfWz^hQMY2/b[nugC/e0J/_V4ᔝN ipbk)B!f!3룅'ELbc%׹w3-Uaݫ& +O_r)+r_8?Ev״ߋ A.}yR0Tx'RH| {6GT;PS jq.RYAo"0JU= =PM̓ge-gqT,W9JWp-RI|U@-Ր ݬ?qWjF*SOHI ='a!.aVQDk(,{,P4L.8&>jh=RI qWFU$֓v wز a7|54Nqr/ VGU+X8Fj8xSpJSAP>bY_ȱEi85e+Y"v4p$@dgwlۖft.:A,]c3L([*LxqqoBFW=ҭ;jٌP\>p'?k ,dB+콎jŤR6~P1_lW6BV=/CUV#}Z2D@Lve}gꗭ-ؚcխ4_in/[ NNoG[Gn;F!އfP\ +M[!\@XD-m5OZq$ lN "fg8;<4Jo(]|Bk76 F5RPF. :^G<#`$` )>Nm٨QICXpr:%;e&﬒j-cvϔZ֧d~&IElGM _ @TUVFKRQ?CWno=E@Jb\,77;g3]?<9u={WߔK~=<< kU8Gw~N8 +B12v~?C{~zx?{g<>o뷧{.tVįoryzǛ/`bpzx~r}yx)8g?05r3||U"@=NiUh|[^8ׇ+^'qwoJ\[vh|nb%|O0-,}G܀nk;u' gδb3MM7e]5PχRj۔cr7#p'N?r暺egqi. ȈJ.HKG3WC ~zUCX;BW}o?ԑ>y|w<^ , +\/z;n$o%J3ձ7zҵ`h/B-]`,˓V6T,_e0zxٞGx ң@X|-ui. E'nډofyښ{8sEᕲ5i#Ŧ:y땡k Ui sLB'Zul6Lgb, 9K!XE)7n%`:?G}/EDX"}Kd;xDRc +(%HbNrF/}AB-/+|>nA[؉{o#R} +q~غEׯ%9lXy5\oO{X(A;ۯDMϾ{Ro_UYR9f)Ƒɼ|,gހ8F&Q M'5_8иΏW0΋}Û7pcSq8m-馷\sqsy(7~;1#l/X^ AEwE E au 04] ʾ*F]kuֈC  +T5SH©JK '),ade,NC (KKkxE"Z)X>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8511 0 obj <> endobj 8512 0 obj <> endobj 8513 0 obj <> endobj 8514 0 obj <> endobj 8515 0 obj <> endobj 8516 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8517 0 obj <>stream +h[[7~_QO ;)p'dlҍ`>8?}I:g*](T=󵙾{Փ3L W&TM7ü,O7ghݼz~\&adl- +{xhR&&`=_m|+,;cG=_^%Vm㔒]T #'?c% +$Y=-"tDNt;9kNZBM'C ^D|gBE{xʓ߮V +"Ĕ] G0+2L|vL򢞫Y"K" T~~s\l])e}*%Oo=\=qNj82ZzЈ(F?f`hf͢T< dԔ9fɄغؓ~:ݏ'ϞZgOxY<]d1{Ф<3?|s˟7/_߽{<<}[ټo蠁qz{yܴJcat~M__2'2 +n;j;j,usq Z~^2s7;/pxR}a 4}99:Ùlϭ #L/ jOO`{cdoԶѪfbpH8ANn;G< 3e,Mzih:׆i#Ðӳ? s_xQ~T„g5ރtKvȷH\Š&4euRG <74ڸVJU:fxC5 ħք|m^HОp9 EPhڶm-7|5\AFHG':iriɇv G }mS2藉m0n+joQ> Ɠăj&%Zx15og@l ٙRC'm/Wvڵ/]ѭy(sla&Z*M9" +U/}Rx0oIt 2ڨÀß.`eB'$]C!8ܶ%=.O2~ه'Q Yrǎ'|Q+޳oN-TI}9&Q1BdP W#/gG3ecsN^VR?pnSj +$~lxPH#gV<>t%ʃ@UAv<|t|Hı/@YK%$YN!C1WvLwi[7h&GŦs <Ѓ#i(^ -SWhE Z +si,8goKWF2.0QȦ˄E p'zS lRYY#MFR-h{#2lv@]s h ̃?D˪%{vn |iґI5ܳNc5xJ4%v l`!Wjn;kLh &.4H(%K- N* Kf|kj̍_ +bՊBޒR̜cS~ݖGFzwΝLˆJn'j@IL=] o ς2 jHbƭ/01w2SG19-dEM-d-f,@.Vv:>|&TdKRqZK :==LĊȋ-r^Y%/t$,q">uEYۀ-p[u٨A ]{ME-Nc4) of!Ġ K]~{"+Rf?̗]zh4i4b +|piYpky.ڬ +lq/\.P-y UUt" +QHG0O]86*W*^#!BZNفGYN;ޗh,4D@Uu-5c`T4v6.ǝڐp#JيEI<.dUrz5FT-:%Js7kAZQ>[롊11i,P;N[Zmշsw(5s@"Ӂur~Cs@2ѽRhbq ɳUW1!oBWYģ/^~{ '8vy|x nX,W +d5d¹n"pCu^^+.r)2tm:4_ Ll* @PSCpH֩[ubs"h*G[ ɭ #$)xu<`D #,!U<p| CubWZ/}t҇wG>3m˵ JI`K!1]\RbjUof( C.NTS+ Lr4^vp+~vAJFAW4Kڷ FQ_ 1qg#[n.T'lC3Sa _|?ᜦJw1Sb]"t[+usM3(>ZM]+`g2tϠL}wCkCeqm$$X +~Aio$x602dl,Y"y)u`16C{&A1;:2ܔ,= %c9Tg.z&ixy +:_?cG Mh*9sgA+z\WKrThѽ T7\BN(`9.^Z)Rc7}IM+e<gab6ܼoиݸ;KL|# #ipF7M~%c>..ۛ ~rΫ̓ʛ`<\M$W}{|uxLӶZpei󬮅eF6}nʵ+9ѵnKAnhfd HYVtr!mfeK! CaIfgA}Lٻn?1 ]6%e0ZOBpX/Ͱ͚V|.+]&qwo[h t |{޻=S]W1ṹ1=DV>{7Wƿ+k-cgW4tR3 +ϐ-J7x/xrnܲ'R1"!2Y_=S(Tow8 iR-s϶Z.fR=vPՆ7SK}W72\rx'];g_k"* Z8<4ew13<ܙ<6847YI,KE~qqPmi|zs nkʐh<[4E,bU+ /T?'AͿIʼL%Gtog^8(]zߦyqxA է@WWSƲB6lMxIQsC3^ѷ2.+TM/ BJQkl_`AìW7ap +`XBڡ BZVo3~ng~(IBz+vu I,Ȳ/;MKl!%g0Cl64ѡ~bL +u]4Ru?!_-%)0p8=Sd<&`O'Tݔ z?X(EWfh}A Z< =Rj~ G!5/.OuefŠiՁ1DfZ{lMf xZ`aEN?Xl l~b{^wvp&\w<[oX\;F2kJa$Yt?p6@{.IBSOX*{"Oou Lε2 &ޑN G@t/},Ϣշ+G rS ԙOhdl=l+.㭐b* XАc Ko2`2%,@M.bNʁBslЙ]NJB A"Jop@ s5*gHo(ʞ. a8DAiڴ-~Kk7;<%"P5""d3̒L?c,î8/8̃u*=zvmJ(m`Q!SߋX0eI5ZZXǹC~gY(5~lY9M@go ˧9<2lXC0cF1WNUYLU#c>5a돤jM ˺d)j@xO @ UW=?ջy0~ɠ89%+6g^< +I+Epy&fm7v(3ƶ~ \P +endstream endobj 8518 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8519 0 obj <> endobj 8520 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS19590V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8521 0 obj <> endobj 8522 0 obj <> endobj 8523 0 obj <> endobj 8524 0 obj <> endobj 8525 0 obj <> endobj 8526 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8527 0 obj <>stream +hޤ[Kϯ`Z7 `' `3 +J$+${fe&$~翹ݗ7W~qӡ-/G>/5-,p\A +~8m[u=#=ik 0Ǹ6{Ӛʚj @ÛU$O>M'Y_iBO>y{}p})FHpJȼ9zk9 =zNDN s9"tG#z%t|:59P7p*>@6quY}h-k,ATTk8kbjjE*Ul8{_>uWk]jN~t=ѮU>$&R +e8 v> &t-umqleqiu_x?>|g~nhm!~ TZMFm5f/)rQϴ43,\F!9lI~m[Z92wf ^h!فLH"Nw4x4j@6 QV0ej:d$k<siT΄ۑoFBphVX~=d,( ~1T{td)>{Ay_ڲiQݣj,dI8V< &`8 U_+23mI*t7kp,SGvjñ/G ml*S] zSh6GݭMxTy(Ԭ6d+$6J( yϷ߽5&?%z v>EHŢӖsEΎ#r _ujNVebFUN +Ud`4yX&gO{X}{#.hFOX$0{X)P:v.Ĝ#Q +y'qV3Hq +@ wD;+ _`|9p$DyVR65C>ړ'D:!OŐM[Kr60}]E]G~iĸ.GYi7>iCS_a8 v# evʀEC CP(eÚOty #3<)^/ٰgQp(ڧ=uu_h ƌ7Ǵ'F;Yb$D7+_1fdz"k4VYW0Ju%QrLcHң3r0-y$U|~)Ufqhq˃>ʫGI){1 +{'JꢷB +irdLzLj,|盈!N + E>ZћK@H7Xnhn %4"n^NJ,i7J}([Y̰19.1H**<DmA*s@WUDHR^*څVƒC\n qN}oׁA!Pj a;ګCb!LIc:`.,̠띵MK.o| ^x4X*Z :-H,]u^NH4s]VOgҥw.즸^Q*2!a8YӺ CMQ1!='Y\npF'dëv+4TM |1`;uW6˙g+L==={Fm)9 @SM +fmt= +=MldjjO=k OrF X"ͮ}!Z?&%5fNp~GKޚGGayWQXOE͂$p ]GKv~I-yJu +[8H=إKXMCӤ!4FA|84|="1}tɮ[ ֫lr{[i&ƈ.C0mq=O7dO |a51%?{ux:c hNz *B$(}8`zo+^a+WC8fL>~42k]T++Ŷٕ2Hpt =MozU6֭(ocy%vSZK\>8MoZlC87+2]ZVi蠫R ]#FfCj)ڶM{aʒi6n>'׷Bm3]LB*t|WQl9{z:@@ӿo ^Hr~xklm@KȋǗ^\'j[>wo_}r'sm c6pSbUۇ, +endstream endobj 8528 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8529 0 obj <> endobj 8530 0 obj <> endobj 8531 0 obj <> endobj 8532 0 obj <> endobj 8533 0 obj <> endobj 8534 0 obj <> endobj 8535 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8536 0 obj <>stream +hޔ[K$㌁J%$e{|`졫%Yd{OffF]d7_/}}].+.>%K[pye|r]Jm]C+W߿FRŇezBab>m?򵾞NDf ?`QF';䷟!)nI0xd&~RmK)N~ƯЧ.,yc6(Lo|5qH<~Vh}=h<14zkѡW_˴NcRKW5Kpn\/G.F+G|-JR֋<@7+z\ߧJaRa V`Ä%FRٞ[-  p^a4 +l3MsE;EFC?y78Wƺ0FZ  j +"2cǑ RQ@37X +/h7@՞S4M>M0}Д|NIw։GP3hݘ6T9s} A{`>jpAș6v(+Bql FMI{DS ͺ9?.hWh"mp4 ֠H?VA@}Q\*3}gi`W6K"oN,gPG1U( $('{;#9~FND䕎WTG!b^}X." +IpvW@njƒܢɕ񴽡yϛ؁( 1>f>G㼜e#W9*r"5EB&rGsѥSizmCVWHj73WP%%5UogިZC-[YH9V쥳zaNc-PwX ZƱh4~X3V=",P{Ge\6aGo,91GW+'y>O^~+;#5 +3CaXxt.LΥmzT:v@ 1qyɧ?|+ f7F^po${o |-_ 1p& +8v$un̮!-"j Qz,Dc C5]8zST̀&(P֢خl#jVuڮaf`(\T Dh i]BPI +A`߃ldk~(fU'@F评 h~\R~ ໗~+̮iboVt_IP+:-Q a6Ka=y M!y)6yu$q0(Ni@R}&aSca&\7#^uKtcI3v7hDz0Y*,GUo?ȫzHLe_iűF^Q{"8 4(5!UVPǢ]#@o2aH"s+ HƯwI] YAJ,BߊU7`wz߯ٹ5hPq$zW?*WUS ->sfD<-M"nlto17۰RT +TbDV)"_9NGKթWѩY;ƳSbj }+\Pdl??㍠-\ ɂщdmq Bu^@g_ysDZ &~* +C-|&6;jl-jj +5%pZChvvt%9Aiu"?yBOcYTA3 +o: yS"&X(,b +I&^થV~Sj>`0fOqdk%njƫX؏kOufa&La##,KI\Mw9X@~QO 5+=ޝ$QXbb~s֪wk[{t xц6;]SNހ:̱:od#Z)`+4<["K(4a9`1c\{Wx[hhvmB̕M*7EgN%+r!lTw_AP".aDA @YbцRcrH'CdIu۾o٘Vz4Y{VDg/gkeA$k6=DlA S6MM)VD4%v,{S4&#'z@ g`a^J{"IӦ) }ṈcDH,ѣnz\(_jc 茑%k[7v>D@҃Uo0F0 t32 sܦJl@R9DvJ/զL`sgFm2.ea%R|0{&z OYiUԵkTe_, +5,{f +ar BAaw4U=N`ħilf٪SWmne)zVފ~L;|_)P=ɴ5 =K}Mfqrl)+oARl]kAŬ:ZfY`olى&>i21C7MN* `ejIx2_WdNZXMrȱOP.6!R0)1c8`&bALèeMLu6Iw# bPVI: +<lsW~<|4 u``̚ prWw& 7\$OLĄmOs.hG(\~!bP9KG)։"UlBD$0IU z&Db Y  [5dry6&h- waQPYa +GW+LnЎIVlwb턨݅NDҪԷͯqJZZ-_ 5PD +L6C}dmD|,1͇GsZx$V$Iۣq()QuGiAm?D +;_l%SV2Dׄ +.!O72Me*) &R{߇ٻYS(-XjN_zz u >|P(  Bx6rf},hJP[b>z^rf-t2oFi>2]bione21}'/O|h}r<36F_lE;4>PAxbvQJ?M2HR mNkssrryLbƴqLYw>t F|V&O]DF>{ih77ID$3WјZ2@.wwg坠lI;v@Kīy qXq-fNi:p&jWI-2ⅵNyd$^c>TZH16N%}h3q!zOy{s,ߌq}h矷26~AIT/eɥʅ,s> R2QoӀjs$O8nuZUZ9 [%8nR8,Nwf,v;r1 jlC;'YBxCu#PDŢ sca0䘳2O`Fvs俒>ɾ|qJTE\8B='GV.I +i^ D{YI$̰{hc΋M&_{rNCq/9"YsI3fO/ݎ/mbg/1;h˭nszRc~hS]nn[ʆyc{}9 pn:J}Iw +sMJò4bmI[Pˀ`La;JoBytb;G 66)o'wlv~@x;^Π:!M'܉kZ9*;;y*uF˒ΓĄ(ܡ &!zY<ei|#~8"1}Ķ*-q LF۔Lmɮz0mV-*oκLj^($Ui8I^t;p\5&*]{-͖:GU>3c(0n&ҭ/ Gl}+:a;SUs2Gpf>j /0_fs*yc| +v s޲ {v/'4 +endstream endobj 8537 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8538 0 obj <> endobj 8539 0 obj <> endobj 8540 0 obj <> endobj 8541 0 obj <> endobj 8542 0 obj <>/ExtGState<>/Font<>/Pattern<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8543 0 obj <>stream +h[Y~_*X H#أnx H^ݒg?}/Hf2Kל$ Fqo/כ/.O]^A/OàOBMbtM'jfTJEA)7~thy|ƀs{{qcF/z0_.GOJDXo +SP6 vr]_<qBйӴ0m,ӹ|z^llĚ p=?:Oeu6&ђcJ7ak 4?l:W yyPfi99틓'UD{jfHUDU\+8>jvj=/-7մm\*++\a_~5ЉaLCcrI+6eo~pZ9f3KN~4æoqrɋg^}7o_]xvx ܄a{*;-4fB`r+q^ Ĩg7oڶҶ67Ǝml#ZnTIӨ]̨уy'Cnv=0Vd]B1<`V1ia;byhF gc`2Аcیd1 lRk{u`4x44рWx|Dz(8G@Qo fh3f ՞lg2.9њD#[#O5{-pIh--ȹ_m.Er[YO\)qiq5q:[IirXڦ eNF# !!UڻAHGG]H'҃hjIL{5T+L:C=YN}s%[J8ylN1J`MUYO=!N_HLD{ᔋT7ՅZHǶk+icYloT?孙-{p}j w ZGcQVdٲ3/[~Ang˓5ϗ7Y@:1|sh&Bqer9ThF©o{Ĉ-}풣Ku6J*%NyC]̏ˤ}_+O!GA1vǶ)0TP."0#,D"Hjބ:* s 2N,uf^WQIJ Kf2dy?Qȴ]7}񼎔6QiC"q"wv8=l +9<-/lLGf&2FW- ɀRRyr[O9=%ٸsĆ4,yX\!4z }?!c,lJq* JEf6:v +0,nDoLZ/6O1[iĚǝ"KfTWգÎX, Q5LT kW uVua!mkx!\il4".dƣ`hݞXx1'Бt0@ΆL.sWK7\& ؄ut/g HoSǣ}K`ꁈhB5Iq.c{,e$K,гpCGshC+nO=L=؏sV*Ym!#ydee}f ;*!Hs忴X Dh6VeH*@T$SqIUMf`wHJ>ɠsSy\ǍfP^ipBb'X35&pq־OCyC~}qQۯG&0cRd Fq?A$\מ'o|{fbI 7)=f[̇;Mk8"p?Q/wԧKތ +j4t: >c p +ō\.-̖v @vG~ ~ȕZpD3*FVpkP`r2!A#$Hb[B 2mp(?& p~-8ˑ5a4nkd>Ƴ8V\̟bPfu7rT<$}G xJN#mΗشϫ0 ?k]9@W/.'YBa=ȩ'[Ptɜ$yM|.9r>XRye:y>-g!+]Do-U2f^6Zj(ıiw,;cAZTzn( X no=̘pRֿki |Gwc1=3Ewl`ÔrA1}0[NwRIQb_1)R*/6s$i0!ȺJ.9l~h4%g*4]8HcHVkF*IOa-~zS=Gb˺z6fԗaA +S<fqU:`CFie 4 YgYBEc~A2bAɋ+Y<-a~^4.N +dhE]8lhw4ن~&3.Vb.:qꬖZ5aV%)? ne!uMXe|KK%SN[5!Q&)NR[t6`@avRujv/W'ޑ:Eh#heh} 3-iV5 4oh: ts2opi1ĉG0o款W ]EѢN}hQkhVߖ7UY|sG7`T!DtH!Yh^PV4S=pTp&T9lq2D7\J>˒xIB_s+_ϖNތL{osaFg +{xJ_Hi6(Wb xJE 8&@::d;m١ [G[ˮj#a(%*7]^+MooH8Tex0,ގP +.nL>N} &"4tJ`T^>0' BŇ>?&}Њ5RꪔI 5=#ů1v*]~a-?wcpe8+e wR>kt-]S n (8v^C>Iٻǜ{wLd}bU~6qR3bj}|Id1aI}\\jA!"v6SrǤH`=GqwQ}~ƚ(i8s'covg5NGwCF;+Maҫ>XQCnmNjL#W:/$4;fk#5(fK}(EԈ@B̢|;@ĥ7oj8p44+׆/X؊ֲ}YQփ"XN%턓̵Xiu6ɍ`WJY+MV,&`ImzT%b ;G, #+(VaU+L%a֦\hd/QbJ(81H=辥|1#$^l48,t3/[+0 +Z.%Gl7؞@=ig0PԽG`8=`z>BcԦQ1 +awFa3#4'JUfTX!3o'eӑT+Pr?'!L ˒pe3)ml!?a0k3žĔAu R ==}d?{a2汷e_|yl-j:j`$bO7jƬ؁ WJf P8&mV=\ἱ3qAbQc?dlhh+DRH ,ð;.5\#a,&[k,k8ӰNo5c> +4vT]=&IrU{sQRQdJ%N2XoBʆB_=2DSr1#R(+5xB7 yIqS@IZ#ZFl%Fb;䁷0KKK mUQrxaHe:=җJK`!`<+>n2|#Ϧ&>H q=(o8 bqcK )eJsTRfK zQ<#R{|݋pwNh(yoY\ WpK<OrnfבsFϏ?ާƋAG}d53O U)Bv}{(֐cdaOO| |`Ѩ5d?VnGbUO*b+S0eAc9Tt+X( 5TՑj8faGA$ؓ}AH8H{zio%RV%DbmS&@R:Me6D6o8G9bk|'t( +dSw©UN3\;.fʊ1(U`$|' MƨzUUIxy,!i6lATv*f!.ƮQqF\rD t8ҍy0ؒF9y‹UhSiHJ%p}TEV\dgIGT.vbFIbyȡ{gF0t| hɳۓkJ*KIFTDQeIEQ" LEE1K^-:ƦoLcP֟b\I, I#d Ua(e}w.5K^~_FU a%7.Ulyȶrjz2/EV80P5"4ƜRZ}u|Vrv;ǰx;;uঋU%XG?wA1Y\ᕜRn7˳Xԣ<oIҧut%I6{yeBXJ]9 yc8:fHElptLu8LqvL.J8eIήde(WtWoNtk^N [@Qf}54j>N܃dеYICs!n}42ow\i. ?Bz{R?X4.ЊWR,:{d[S/lkC6f`TlBS ~ ?D8$kA f{|nD>stream +hޔU7-5G]rW]s 7>v`%\ +endstream endobj 8545 0 obj <> endobj 8546 0 obj <> endobj 8547 0 obj <> endobj 8548 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8549 0 obj <> endobj 8550 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv19266V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8551 0 obj <> endobj 8552 0 obj <> endobj 8553 0 obj <> endobj 8554 0 obj <> endobj 8555 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8556 0 obj <>stream +h[Y~_Q}ƒ$9cu#-gtK~O;Uźnwkd[dól3;W'w`O`.113d7cp~'O#twqt赅-#8"m%E;V|~ߎA^HO%;֤ @4F_j*^z?垂$J|j mx d&i4{:6 +mxMLH/_'y_ A^>m?[-rW.Avqf9?!2~lFkrexFh} %?D8]t9)AYrYd;F@SWu݇/~ջ.$7|0ˡ}iMn~5 I*CaZ|;w/x7/^{bx>xhjh2 o/!6Mۡ1B.dkD% ^wΏ`3Za4dц|vҶPAvaM9=grym|a˘B{Řcv-IzYՎ  8v +% vc"f.2Auej{&Sy64J ң/h 1" _:|~΂MkVhB8JY$Qxsڡہ] !(E{cm3 h>u6+sbr,8y}i|NNȉ>5¶M6,6j%49f'[%4d$ H [F ɚi:l3 #<ͪ 6B9}\;K-`sa4l=l6MB%AQpŢ 7oL=: +bQC286k܁Plj/i6`Mmd} Mӽƨf2/ծ-]~\f chF6hi2i?.\bnSש /m Y)Ds$. e6w#lXնk)34q[1?%e|YN+xˮzlZ#qXMVӌ4AO<8&R={HyXP;|qV8>6PM8-nƙ +k +5 $JŞQA#>;J7\AlU1;0N/O߽|-;{m\j_۸w`r%KG>xVҾ. Ula'L>͂93b龽klW5N UýLz5G:0|ى<uJAǝ/nnas= u`q|c_HU'ճMڰzqL]oiZ~M?gͦ>{ -2qqi*rdN1e3$vc\-=.ؽ<9hҮ0an2|]-4 >aP50 -b xCv 3 8mKKu\P? E/v'QԹ ]W1Ӥ#͂/u]ʼn>qkno]ps;?DpE8z$\@%+9@ՁǠN@AԈo/N<F=b%lΕxV<隩b.3AG: ځ!pdHʬ߮/^ f8re&zru?2w GB +C W3z4dk \˛2KᐏV/zbMɫ"xwGQd-wQCޔ)f ƍO q2Sz8N`z g j/?(Ht\~co톎&Y Ɩv%8ܞҫN{ڂo|r#9ݑ)w^ͷO|OAr8K6pV["c! V8P\-*HJ!L^}0di5tCn1^o~_~VPc>>#p\SyXHADu*Ou p*꒘~1~H4Dq6U<6;1Y֌wӦd陗!W5-+(jF~6ԮTI:q[s22qXJzcLV;$뀇@ ra ln]˘BApД~K!~GŵA',#,܆6 s8ThrdզSW*.=yC=YG ]c]qL˶'wKA%iTkVך0֋hi[z趥=[(41uk];cl( qf'h*H:yBdQ!nrHlν2z,ɵJPR;eL% f42ZxstA҇!t%+UY~RJs߁L.I˕~^ +V3 +cPjrP=/09 Ip+u,+``+fUqBZm IyQ i%P~6aa\Y/qG~v.#{5!(9\dF`:6*0+UCnxh8RnLѰï^؀35KOOx-[w͢yo?Tjس%|)h +"8eh4VG%M}ަ)kVMR$:A +Z*Y XN^4S|罖Fi)X=\xRͪx+ 5.q ~\pRVQnUVawUV!Q*)fDЪh$Y-g= ++lJVWQSrz\GE@,%jlA;a$X+RYA OJ^صmЙtZ)6>UO1Dږށ`^9973&4I䭍~INmEj;~xg_CS36Ėgߩo~ܟyvş^IJݐֱSғSOE;ɤΟHCKΥ8lK1uquҹT\ +-&@,X ̂v`RN/Q5q/&jԵ`l "4tg|ECjWYt)Y%ndD\;S&_v -Z'֞Z{2km 6{x[sJkQ[̨-fim-JrMEȎ]:!]^L tpݔ:=I7Ei1;uqEIk-K*cZ-鬫׆@`{->L:9 q?af[ns+׵-Of+ 1gFR v.6FF +Sm:@Bd~yccp8*Ȣ޻.\.`rI[E* -;aziڨl;(w %^Jq٭'*E7n#TWȞZ=.EQ[);QTy:~zިp(ɭ;x<@Hڬ5rk}ܪb5+}~WG1#옸`h8HZ˕4MCo@P[o +:T%7КyCGiF07ؙt$łNp`"vk(#4r?+ܳ]Q}m HB|PP> +UѰB*8AJ !<|Ǒx|,;{#u]"_0~u-ned,m8!9YzS+3`13pjҮ]˙s +&u'뛪  5|VwY~twvndۅkD8Žl< ;xU9hzɄ[撦ǵ'!ӗ.6(|k1}ۚGy&De@8fIu 7UrB2i)EI)NLQی;ɵ >7- RbWX%V\Hj#)NjjM˘%"\ǓV4 ˦ka4FH(h\d Ll'Ad}Y6 ޢR˂58ou/-gʱ,3"/ c4/L{Z(]suwKDRB{LXSz:"t{4 +خojR8VR3Y$y2i2~H7G/X%^{ɥT9I_^m(BZo<=)S5G(K(GjwĂ&3/ 0^}y'Mg 0XO l9ѹ׬8[a|C8y 7QBgQluE8$fqp*S]mFP[%tεBJ/r ۅGPaН? yHh([ +RQ|+X~pي}bĪFU1?bLFCHՐeqeSpf3.Ø.*ͤŚ218yg m~/[ !9zWG1kR.QNp*IqӭDM_= XfÒLjw`4M7K0 y9iͩSȊx3գ(3蘂77¸O݌BLD,]Kdk\E`f[(HnAq͙o%̊7kZ.X204<=x2V5E9VWz~\2AFǨUgxodR+T-=#h8n&=gb=ʼnˡA!e}PJݛ=ip'E!ʝͦ/fiFrGNӁ'muŋ +Sl*ȒDa~"B!bE=v_K/WJ1„LF% YXeuzcw=uhSEM{ߤN-f'יfqvM(tVA'^jUPjrWi>t{aYwsFwWIV#i.F('UjNxbw+;ksq!H7DvϜ'+ z 7uR\ 9bP$"@0\_l$ I+xJMo^+[|x+JaahͮJhITI!_ صN-bG` {2iR` E8BA3+`o}Q;3{U撇ہk+w7V ut tt[_ gc&R>j;%cTmzZX{hћLΉY +fi+:)vl8e爑>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8558 0 obj <> endobj 8559 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv32123V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8560 0 obj <> endobj 8561 0 obj <> endobj 8562 0 obj <> endobj 8563 0 obj <> endobj 8564 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8565 0 obj <>stream +h[[~_яe! IA YyRV.޷}E6<Ȓ$i^XU,Vw}?;奙t$9L +#ل)F7ۤtDM:JiP=lPʥJޣtu s@9E=۹9--ڧk0;oO쓳 PQ sW;8Jf(V316D^':ssjk= sWx,u:XBeosEq g<砳TVhc-9ϬTsnm@Ӊ22SďNlly]9Mo:7.'Sn+Cwmjz-AMl]-=o޿o޾xW[}]ށN Mazw`y'oNJD^Ixb쳛7ZRR6wl#JnVI:YՙY#QR0`/s9XVi9sv1B9jUOZkXXN9 e%Gz; 8Vj0OHLMZyR9:ޕ4CT1 ߠ#Ho| +>e?Qv}=0Y)C' FBC1ZS(dK8;T:a)(iQ 2eLB)h)AE Xgle)j K <:߯tmګ iM3;L.縘 +!uF')_z()1jJ4|g%k%'Z-=cjΘ2S X,0jA Ujr\U-b5TL 7jVʉ_XdDjsq4w:bR(*9BJN`]O {ēJ=FSpfhMVVivVB}@>iZ;-6!AW2)GBi*gt'w.j6jXCRqwح ǔMYŘ],wYʷnMiǢ@]m2L4+4{rx +~!RY0C^"M|UM8~6̗Ś2"UG/BCu8'Ň2@(5upkoapqVgie~bbkwV4u:QuU=J>x;Q5,X@b1vY^>FeM>QKi=f&{=@~lׅT&$f_4uXӕ=x + V:ZN\1LNmN߼zu^oXӷ/J^/߳;p("1R6 E=DEM/3ڋ4 aV4b%H}ݎ֩pஜ0Oce  +.LnA{A +ƜN:֋]40ڊS`Yxo.Y8Iv8_8lh"BA?[Nz8 +xMOyl484oO0 +Ǹ`S(]8tZ& FV[Lc}'<×Xv"F%R}ZQiCJ&SkAJ !U*g+muڹ'U"`HeRhܧOჸ8ժt A< NjL`͓?Niú2lVhDeL;c64-}騠+-9`g0`*.=NOtU LQ3&}J~uqQگ26y'2ـCRK]8&]jKG9B_d- %h 1G=2Q"&*%a ez0OL]`#T0 i&#ȤAYmpE3ihJ)? \<`d-1rd?B$ ،l106P%0τi_ +rdM λ[k%[fᰵygÒo 2pحgm(^QyY6R5-%ja.|'MEu78/d v̔>sȆ3d*ou:Γ.}Yg;p+=P=j/b^dž}Z!:Vs@r阁)R.w^`n~ฅʪﺪ9y3ip Ԃu/AF-<ƖFjUf^ՎJ?p\oS7qyi~2}~단(7ǪStq] +홡oJIiݬ\*^`9͑)wսCU|ǔ8WpV[aCJaOQhdw}Z6Xar]ur{J>FX5p8hՑ%uwVq2L 1cEH*/a$Fp%#H`?*$,/;$їl)`zWHv]HvlZ|;( Co:A6(>yiϪ%L/; j|E^KyAr^nמ!Hhܭ]/!H}L{fr]K4 +Ejc/: JZ5' 16S.v nǏ3`eb0BɟV+afW3a7`;'0 J_9dkզ9dNl# 9(XdWzͤ$y >`| uVit;XCفxʲ:- \IoM %!@3j,[iiC.qb289\T&*^TslGƤ5`Xh{d06Iq`|IL0lq{IZ O6QSZc&DM?;wv< + {y_,~D-0ZԊՏ:? ܹΏ mPdΏ+}Rs^c>=+Tbmx1mm&n?VSז]Ĺp Byb$r3"QRQ!%UT1vWMBxǟH>3d+ƮAUc8R.Mc/]Ɩ +kl`^c/W]F Ʃ:]TƮqNc@ժ-몲(Ę_*.L +}ZQPZ .UY֥C.K&c1N- g |tc%pUۭ|`w+ӁFv($++Ss%e x˷ŏWLǰ|;?LLǸÙ=~OT>z+j$cD õ <|AL/5TRG23CO6K|y$¢D\|`֕`&0FN*~CMikւjϢ51C(atR8:N !A95K\{[umf!B,E3BzTe] $=BHz5ˌiB Bru8&f)B+Fo;Bv5KQUSqkoյ;tbg]KizX>J_l7S4~: ťY7"e,=ciF>c4ފe}~ne5U |RdDL݄-܁o)* n7LZ'h9 \ +^b޹<{>:qK:8V䎫.7qG׀VuF12Dܻ yĸP`)z`F>By -7| ŧѱ,!X7 4<9>!hbF~2 FDI7 a"?9o1*Yn-=Wυ>un!smO1;Z}].oԢC_HRu+@%'pm2OSnĩ@'.Xn%zH]hh?.k2TRZ,W!mc9]? nyHy d F(F[H DJo/nbƙCй ୕wg&f3FX-&f2|c~5Whl,xXy|ǔT&Gx1G@601ٌbk5lG,#t +G2^yb=[צON>>L]cHB76o[wC@ #]ȹ\<9[~xs^ŗ{yR$A:dUO~6 v9WFLjj^z2Q(ݔ/C2p2C߃wn74#v^hR00N2}]$5w&rSOKj pԌI)I^5o^98\Q0>*#.XZ + Z ^farQN^rP'N%\'QIs+1$xEs% #}h3_>YIZ}W.$/\Үj9jZ.7;1|v_>b] 7*E[ ?İٖ^e.DRkLď$ŧyzݲa/N?^0th:w7gi)<(*%kNYֱx4=3Lfyپ<[x/x W|:y;x۷w{/ mZ_AE+2Ubh|WcEB::Uk(_ +ۑDBܵߤcm|d,Z)0yX@T{woϦ7߿}r=Mg={4-{.LW.?Yt'6`v_X] V>8:*5ʇ@JUW'BuLZߥ<%,*H2ҿv + Qj# 4LƳi;C|agZkmM!UFt'wH(&I4M +rIO+LQOf[F =7菢ʺ]n|Hyߡ\||mFra'}&=WĝyyXKFfuzW6t"PtxjN>8{E,>[5uyf~p x`?Fe#o +p=V6xI2Am55l~|W$%T9J+K|_ ] i*Sf!d-$n٥ܼĦjI´yF}E KJ{nH޳r +>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8567 0 obj <> endobj 8568 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv32124V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8569 0 obj <> endobj 8570 0 obj <> endobj 8571 0 obj <> endobj 8572 0 obj <> endobj 8573 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8574 0 obj <>stream +h[[q~_ǥ8K٪;[S,?+ҡkI$-1?==88KmI`0wO_<ߝpRSC0~|uf?Fcl.кc!eGcն-[Rcgv 0}.W2@Z~ǚt|]r/klUnx׋0E*\ Om6<88~v@F ϺI Si?E D/F@˧m6EJCn;;qf:<{Ch;T,x n83qH@'Лg +WYܕD~rM 4necȵg ۾%?G0]t9)xxXRX/d;F즎% 6Gt\?tLGY_KkO5pRb k/_7~߾bߥN6Lû+|vuLm!W10H[KKckuh_W\FF|CZCh=sm9c en [܃U-ƔoMv˪vLo ȍ㤠CpnLLP]󆩉ATu<Ơ + igkx"qz=GT@1 +Ef{P]L%"C3{ךhTeu@nGG/hʇhdsת؞~˶5#7ҴPuDZs 8D(YN&mᛳLFyaHї* y ͘k똳]@ox5Y0QfJ- +jPGmq(/"ay DQx JHDץ=}h`ڰ!C땲I ?=WTBn\oETG qZ&P#<*7"b\ʆbRw26_EA5l 4֬tM=.M!$A;jTtCpPs3Tf+Ls,z̟lQdSPnCA + h[KrbFDC(yߐ/A(ֳ3kz@!׊ +yNz`m-vie|p&v2,_,yPv.m5Ul6~B=q0 _5GoiIDܐi[ TgmP7B^ Gh^{lkOBY1y/_;mH9~>J?A1mahe,[w>E7')@nr 7=%BsI.\0ة6#41Yxȿ7kNN]xil^6ig#ۨR)]YE*ObkO=4!;ȽY qR8y~qvK[Q<$(i2ZU.2>,j#eIO:̒mNWx02"=hhy0lAx|Уf,DaƀeEl{niM5MڮX5"}6q P2wXGKv3,9ZYlQJ\z2/3 5Ɯ?\*!?aIzhv@ս{DjP9F+46׿s/t`:._ۜPa٬\61h_,"@b̫Ӆ}1d΃fW B/7 1@6;!y//z.n8΋vP` yz9LW>5 N+4M}b̸;np' R2̰y7@dχ~,! _C*La@~ Q'K4 bj72R/Geân 6L1 (Ogu?TmbF LF0QBdXCAqdPI:s9+`Isc?!YNJ@AN}aY iYɟ3#]!Du5Q]MTi(9?G9tHL*Fb23jfgW3we2RsmwF%f^!Vh_.2 +ޯW~BZfB]V l-+eT)L|VH +"+^! +kihFKE\ 6,r] i5Z1c.ɷ@ytj(0lД0Q  cq %`:鯊9xn=0=*N/f}d# . |dO^S 4|hsG]9Ak} 7O3E QA%;u&Fl.]{9e<v!+ oGd0 *_Y7\>+LEQ[ya'b{\Xly{R-Jy9Pm~ع\?\'MNZD̋I_j:C{G灪VE14#˸r̽v(l˚$ݘ {،U8XebWMJ߳lh5mB r]m6۝zj(dEv'T}Z5dk:v +iɧm\נ2.mW{DeLN؆&]Y}] +ӈ,Uc-ʼn1'P b9I"4,3 Eg Of)EC +<ߩ²JKLXXSu ߱>6}kaRKAZIJ^z2EC!Ⳳf'Yd>P\~h%` +k/lJ4KJc "Z +lgEJva-hi%+ðF"Ҝ ŴV垱P~AbvdaT餃Ѣ=S?ueJ법Lb'w a,VۣAhžly=4D~56~A2VJ؍ NEY)n$M=pR=3zrf"$$n;16ihtFMYk6J@C0b(RU^RqV LxRaFpκwV ET2)_M +{ z$wW,Ǘ'Zhd2PvLmYFKFm'YQC :MV&Rg!S1?)&.$cLI ʹ\I>JLw8S!uEGIv Yo^"||(*'$0$}ˋe</YcPY^ e\W!hOjxOm#oZMd95*Iu S\zfx[h*b8([Y\CG (NIX%e~.\(T`Vfr&&y/FA*Mm+̅AiO`9RI:]8d&[iWtq'|I'*+ٚ1kvD߻rgӴP&I Vz1j(bt׶I܃@qAV pnt AЍ1,6H@π^= bq=`yз LM8 ĠŃƾ;~c3 N.*6$M~k"ozދM 8R 'NPdqk~ng6N0}~~R8a<|h38$z"1ƿ%ySn]j)- + eT1{{%! ~$ݩl0..nppw"[s7a?gVv-/ొ{W:6u*sIc$ Ǹg}1AuƭUlͻ)dYfgƬSuMjߞT0hYo>-RXLZ__O$i}nPۼK{ҍܨZ\'r)5/#It/פ:b'yTaP/g[K}]avʨS2bLDX/ j7)`YB6F)$4Y8=%Z(WNt axXY2 CA]AKDbs"f@g>D8R[BH5m.TJ,GFGX^L#,'W(_ Yl>-4#qrFÃ2X/~}1жAqt- BŰ۪TYcO7)G^srPfuZ9)RgO±0\P`{YD ϸ,}`m -\QO :d12*ƩDF{JyvDV8`J"#DXS~f,.?{d5F9 +CkqJU~M/luNe@v&|܁Ǽ + 5|jn_G¶`&1$+=vbzڦfH~w + j:z;Ǜ;uZqI~ K]G$t*6U{?ep4B5fۈs|BB 7}p %OIGi?jY/6cM ~*C|x-Pk%^sU.[#K(9". +m܇ P% 8H%M]eU(/r47bT7NO&&;_=[T\mTkoqS"мi]0txzz,:Ιa J> +#GG3řO{&6p}J@c[ VD9x`PuARs zqJG 0m AW8:y ʻk9ѥiQ`BgRe[|2&2W\<=WϮC1އcχ7o?/ݍocC]i=zP}&oߠ jLϋ> ^i׻66*|WZMR]>Pf,{_z|z7Wi`<1@Ƙ&xb9ӳLThc&LMO|r^+/wzYV,Ҩm I 1 I()ӣ{\>;ɇsm:LS{ܢA000!KpZ(N$,),>S4Z{\[/x2V1S$B=LqmyrboT:vGːdM(-0q;0(H%-G9jX%{7Y=9M{%z7+45$YwQ% aTM6J2-^<1ω: BW +(% f.j; SGS\Ԕ*-rLb+F,(ҀETN +oaviE{d&td+IEeSibQVbNJ~IծdXNY{𝨥}` ne`ԌL@}$jNHaN>w+Lx}5̟v1@wu||cJŕQ.k +R:e(&߳e7D70On~c:^ coJEJJqjseOR})fkO;$8M +1ZB{\eZNN%h`NWY 5mѳ>fdA!(fS4J|B:g]6A+[ދx(;.˺IKP'~,dU?f>s{-Y#;4XB9̠dRuOZ5N0T~IO'DI"ݘb]j3MZ`ilun*л8511DS۽L? nZKeֻiٟx)L\w)WׄEOl0 λ3W`̩|:(^`Z;e4.n(a sw(| RqlQT!4FȂ<&Gp8 M~e\h4rTG.|ÅA),л5י*5ۂl?Fj mUz]%,*1ؙz[O Lx$=LֈyK)0;"^,a:e|Z{bM-\:{F)8B/e/~N ӎ.zx\b;1OYX3lSi[9a]莵5DwGn }Lwr}NӝcSn'fl +\]Y1rdVoy/eދUS;B +ު`OUR{K+<8̻TDiIs|Sz +NRBY$w^D|阙NpG88fn#;~#xw{`ة*hEV>O~K`te &fїSu&F)_ӲPއd2<ٵTru-nSwDTi=g' !P *һ2}d$u5*l, "R2oqx1eGSm$PZyE{,v.)T +6׶iW.1RXx ͚:Gn/N)Qj/B օ5j9\ l-wٲ .vK: 1%3Lf]GZ0jeJ&[Ʊ~lVb!S7ZYQu\&Mdػ 0Ȍ4jYRiuʘR8K-2y,sp?2=%O +@oHN,*Lݍ:o̶qz)txHREAQ'NԻ#ɀE:g.Ʋ )z<{%3LurprGj-+-: |@.n>!,i-K`e]a%s3W#-~p, _f` +endstream endobj 8575 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8576 0 obj <> endobj 8577 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv32125V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8578 0 obj <> endobj 8579 0 obj <> endobj 8580 0 obj <> endobj 8581 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8582 0 obj <>stream +hެ[Y#Gr~_QoKfMedx]c lL}vsF֛#Ȍ,G!XygEd>^}s}f916) ׏Wj3NJ?_&&J!@1B{w'Am8,ڛwu4+ʔV.] [֙y?nK3ަT7lh\ϺcnL ]>QtCTvmeW'>}P28bntca簺ml˔g +D`CѺyѧyETlv.Er5<T۾pljJ&`Gt24ȁf:`H|TqCAWFcûoO[ͷi&_nؿ*a6\*w?/ax߽>N7>8` 0 !&px0y3_fN $SDI .OC7ho"ڧdY?u0q1rkP(E91-X*f @ph n?غυaBȷS>s3:C<5HRR~2F7R<9a%;kz-#wm9*C9T,G:?QH)/P86*|?~صܡik"zrD&l{]}j"dC0ARGD_h $vh%TAPTO?b3z;|(y@a EQzBr]$u+ +[t +fG>=3'gιb` DWKK!L E88hN-[;MYजY5 /rddCNlAef$ݞ e|E`mjVdz7 (X0pdrb QQҩ Sb +Ƞ@ @ phs |O)8c J.kfE0_gF.hRRkGAD5@CV BT6%%,ь-5Zrӵ2oQd-.+Ef$iIĝIʯ|gЫrw/S3p!s邱zOq#ljtVa9:w6QQT<"➪JE:\~2}y%ڽ%]fEpә*0P->6\?T.*E}kq1IQ:MG +s[\rOmr5n@p;0SY( +ɼ̣*;uI{mZhXg +e +S,{>Vo%!v4. w;@M˗inv5|u𝞧ɔJ֞ߚ߀b ++haf<{E}6p X4 +U X02'K|[k ^fҹ w/Т"`BmhaVnz(T˩hZ(ݡz"MlIԚsu*mr3eI2X qf碙g[abJH\%l/5;JtL l@\۠@INoKtCT g ٗ;&?n.?|HĥR@va.RK/û2drwi)ǖ9NBMDJD ##lI, 9D*^[\oaIT^=yt!kaEu<<#1CUʬzU"T.21/ZEo/*p♒ =qUf}j\s='Y )EH/)YknՖO+zoVÉ4+fdouZR!t̗ -Ls5^ j¸AZ2_h|p]@Ӭzhgk[zX_xş NK>_M/{E/vS3qZ}" 5ƹK-tfsZ}.0!$iLTvA "–ج~eTsOᆒ1VPK!ʵx I䀲SfhPwjp*mAQ[c׼}p}nPSR F-%4fWyeM\0YYw:"le'o#c/2!zl{lj G юZ8waqwgήC}h`:#ϡ բs/ۨ%l] ) @ ]$CntU&ެߒNS@1AE{t!Mxoܑ"Pj#kcufN_FVTI)M H|ՎLŷXE{)pO +n˥<ݐ©=L\Mײu")A'$#I=gћ=qmRS׺3r k勞\)|&,3F![N ZA@]$I O;}f\Um`{sq_gg3ΫǴx\X= 'sN/',>޿?Suєp8|į=P-F3eVSY<vp߿KBkqx~5QqyaM\t뼸@.S ix8^ ]7O ϷeX镚Jz &ZD[y@{CRBӰk_x?ʎi8>)v5~39=a-pZ;h~c'DݮnD2>" r¨ }\aax9>h f>=3r]@It?p:)jzw"-jScXgx-uyn_N?A퇏0h*K=I›]d⼨[8|8ׇBb;: \TSvB#nqБ~h'',#7 +kSCW2y^Zfw*~+⇲%ze>T{K\i.H(%XZӺHG|}8?e$by=@J TYjyg' . +endstream endobj 8583 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8584 0 obj <> endobj 8585 0 obj <> endobj 8586 0 obj <> endobj 8587 0 obj <> endobj 8588 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8589 0 obj <>stream +hޜ[K$hII#Q ,|:=mI$$EfVx!$`<?~ygs1קrYr1-1^ʺxOoOe]?ky=H~`h).JU]odԔ% cdi~o?<F_׹W/qbp%8=+kx}~O~~x-k12^~CX|]Mthxu _J|ƶkm !`jR\_l/lC9/GX]h$$Ç]kPACXtu$3 ?Y ,j̒lkbk[ڬfdJ8AN*v @fmb35{S*y 7Lk5-೺Ӌ>¯o H?S *9kof ]%;ub:4؄Fquu]o; +td޴]PiTy6R74Z-= A[SY$uCz巧ŔT +2R9zi.O9X.ڲd7~9yp!k7[3F|[ӴMh֓pנ?[J˰6mBhSU53}KM\m{jnmZw+2~[-[txmsm]*EFT,O| ۷ +u#்j{e 6q[hm3`A/7p|~`;a`@=F`~\lpf\4$s'PRT0%G[̻oy96z[nC҉kdW"4-5ܜewb$hR$Ǎz<#B6G5-NZnⶼÝ/~2D'jEm ް+,.Lnĺ+Į [`3rzͳ$0 zE<1O2A-8>V^jxMJ;ZtoLH~K2;%kf*B?{ jcq鶠3蔕Oʾ=xE8iJpݿF+DPEZ+I-bm?;e'jMa3l¡ת\ڍMPQ80a3 QtݹP!$4$J778N8zc6ʨ$H{aCcxw:2͞h&D7vDfKQ~ Yb9 &5 㦇UM1Hѫ̚APZav a|j5QS4C[fqb6F0'Fg"b6~MVc[5]7 (2^VKzTΞ듌GrgfOVsH4Ј4(C 芃U9-eu⧛?S~n~ﺘwvp.}?+ }ƨ"50}Ij֣lo8v \ruȫq +?bk-4V㓯z%ojQԣj U J+U2Hdp?{atPA{1HI'.J؟a"lkg$nvXQ5Soys^%g_dQኽ s}6ұL#OM?U\%G;nw]/\D-eB8PL49DdbWk?EyUhëՆG8rtŔ# ML/bCw7$w5ge8zH2{lrHV`EYWCiP^ipADYRZF猪'ڕVK\?s*h6if$Vf%wOZa*>W<4=u!)h̡}@/4y7#| +6+G]4T(rud9AqcRV9B:2`c71;xs`mG0J UE/M eE}\L 7?.G$X>X-_ g@Qh;YHz@1a # :!F!DHbP/=tx0@wU,J@7iV txA5O39Ӓ ̪|gGKƌ՞ Ot2^!;xN3q۬*<ꥶQx)hkwu(@G2M- GA1 h)u)`Vrqv[筕u' HqSŰ -A>Ck *[~M dff ƴ6kwz>::<9.JywbVԫ2P5ϣiQ]VϒJj1$Β2Ŕ2NxJXIJߔ7N7 E|<]oe,7oȽό bd}\Uy&)L"YK;zy2Qpcř&U%*MpbwPb78xyur*ٶ8U[{z`}j*(7A#ʒR"](/vDDY`i >dtB/9A M ǕމByna1Q=!%D#7 ̟0"ME)" -fωC:XEpHְ̬5 +'hQ8KaX3ee tftnAVYc(e\|S@]Q:Pt VȯbX]q[0&T~TZuva"!VWӤgb7~}"ث.Ggpa-D Jc}*0}$9}ҿ*.`kݸ0i0m(|=zR?܊KЛb 7x̺.0CAKB.T 4D{Cd6_c_3L924SbxM Ia,}hT%'8ƕ@>!q96?%{[V)'(9O ,nUmC"$JP+WAEc%Jh\T,J6bUhrR:}󝘃Lf'rI -@Eاj4:&os6;_[58u`$o*_`A)欌T BʺZ0wD hmNmpe,/x PE1oY}+[1!ٕbvR{ᵡk} nf%m񜕼՗r5J7ȓ + +8– 7|ݎjQku)PI+Te+φ(yN\*wo~9ZXkyұԧ<ҫIt6%żnڝ-] +RRfӪ Jo34lQi6PoaT̺79IQߡ ZzU._6fh\M|P8gu@)\+%24>篵æġnZ iXᔺs;ܼh%=0Cʛ _{PV6,q'A'NI5/,pf#[WSDh*IzCW{]K`Q˭­a(DYɎ +Dm457X}`ΪC?$}WoΚ]]x|5)Y-IFuJ$/,^S9#%gRl;KmKäqբ ̜{_r큣u|=K71Uߍn0k.sƲ6q)$NKf_Z'wPАx`tpELU|Gpڴ5k^ EKUA.strzݠ/ ZMQ"J߇Nq*3$&}GE7{=W.TU.u2 K)+0nJV'mqN'oHrqʫ%0^aOPφ!M ^_ ϶C,KdI!d-aSfCQqSJg^\A*,\5.FH8n@nSѠ/_zWHN +ʗi|QIWngvK5WIUu% [ċgZuF5}q*{|g{y>]j[TUD, Œ7Wtƫ!QLY'/M1XT$ !)GLF'RBR򉩥,+ })wvlwBi^c#r 0 +endstream endobj 8590 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8591 0 obj <> endobj 8592 0 obj <> endobj 8593 0 obj <> endobj 8594 0 obj <> endobj 8595 0 obj <> endobj 8596 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8597 0 obj <>stream +hެ{I板"eTplolRZI9T@>el",csD26ݿP<'߽|/퓸DwY?{XLX''e]^=˿?a][W]ū-r|nnWX"= nz'~ 'H}c*<1=F]mWenq3j]@{_ 1t%Ե2=_Y>.j[pJB-(Y Mc+d)gSȿ~Y`T,/ 'odIqUK]*sWbW[1KJ/ZX^+ՋՔ0彐VD >O=+ x.b\`z\=p q petz?=ǯ~x8/.KI[ZE,Zp7m\=Ƨ}y뻿y>3/7|Y#(>>]_6|emjv]x͋G|9, +N/9yNV +ke|Gt4_"z_8Ϊе]ZaF%Gšh_q2C"Wqnі֋m@2}q\׋ӱXH/hM *~FghSoGEQO9E{!YGd?vKD8g:8H7:_E44Br|"+i$xHx_lWK5/(|hLK|ݡsX ^MVi7kYJgx{euzC |]MKo EeG\>B-Kj|tW;q>9dzGm7xh|[[Wށ˿]~-W<$ưYC`V=X\1"Uj_q$MG'`-mOTQrr-[; 7TGҨL8\\l_ndQyݷ[Ғ/{_J_!q:~=ҎᒫӣJ6e8չkj!yvb8kHfLBK77VƫrEEfwJ,/ +̭u ŧ}HBIXEeSRn +\CVK؊a,ѮB9A&O2Vy"=LC.P#wą)BEG2 :2̘o,$_̅ /`ak\xєO%UwGXtRi;j*-,Bm^\ӋomHz8IkW̆ + : d+zv00NtyW|ʴ>b!j))I(䐹÷ug%u+. -!4,ogz?9vo TJK.X%>iLUkTnX d"7j@]ry өfb 37ŧJ>8LOŸΣX^Uҧ x/tJ!anT$[z׊=өF79W 64 j#EصNդ{0bM, +1L+TZcZvȨ,Un&ֹ! #9eNS`ƿ˯Xbd){u+ٵ?)Vz''3uoخD\@:C yƷ(d9y,J?v{!l| wBPvb^IYJ>+U_ :i>F>,|D#7b ֜"Qfvl-7}vN<|sphOU9Ⱦj\l朤6d[^r|ٍ 7YQŸaă؉XR_eʣ&w Rς~e|N9} XSGY|FFJ&('uu+U_ЃFMӎڦ!?x U6Фmkq{ݍ&1m- +1㙇Ŗ713W:\d WeK]oK-{R [~;9q>c|RE_=+󱋉J%_嚄Zin\Τ%t o>(PZ~nꡛgwp^t:H0>y5KL % bͷ6-IsɄw%L?[?4/>4@9l.r.!4VlA1a*:@DG V 3/|VfAC6uշQ!8{WoC-?T#I2^[ư_iM7(ޥ٥NԺ=jBkOtlD)RO'NcvՔ4-`;Lm {ˡ.bozi*Dk=[ ܅p"Ȍ;R 5^*XoIW кWżIv`MLM [VjzgF{"dN!gˡ>Av]!AE~'D6fꁷmMJSz볢 Հ1t/ J+ +kXvvqQYM\yIQ5%w>>V6fo7jU--G,@::f.7I5o|mGi>4"RYb%7$=]Щ$9ZuaL'Cז/nW._ .N&-X.ӳ?`B<ã}̀Zn}, +UmI F>JPwM4e_l1QӁxۛ[ $sI62*]jvC#m_ SAPTqůF@UP߰ZYPJ3-AyJPM6UjBV;[$[yWͪ@_nQk"z7BV%Ҭ$ Ca|&V޴] 8 )]| S={/Q~55Nע Ȃ mj+x +I^׷D"U EWU䚐R_ [C^H[G +|^Mߔrs=!J'B- u)jͯTH9;i6`MdV(_[m5jisDIcKrsGy!ҳA wid6\'"eiLO'k1pۻ#3ŝmMWKy4<w?<#MccBHDuE%hի;|-}y뻿y>3ROל$2x'9h eĕ҇[ه^Lj,ӗ'DAbÓ>xw8o_P.ˏh)H_Qwh*V$ſ53r0LFz+=vBq߽x>78Tie%H^H>HǴE&eq'n1TEϾ>_FUV.}ÿ=/ۄ*}lk|$t|Z$+he weq +we,3WPCRS2޾q;N͉l!("h Hdk:Zpzy5=(ہk(KD쟘|Ŗ4eQzz^כ6޻[j,k4cc11=zBv;&eTg119C+wvǩ"p(+pf#dYͩ7;>3&"}J|kz^q HX{Q~ZK޺n *W)j$[SQv\S8`l-~ԑ +8+*!#='7fGӁ`uEޠ g0! -.HB'|cWg ָs?E82*nhZuijmT::th]iq3JQ1z_7F4[_-zG]v"6^TBΚߙ#t<:35;38-)[bs;:hK۽k0#qD/}t7ϸ`V쑽;d +- I?"X K2QOP#k {ܠ'RmW/vEufȾ; +42J<CÔ;&&FB"" 6".7 +L0"w?.!AAtM Tf|6'Ǻ2!! V\)Wg<#Lq+_$rBO?|/΃){fP޳XZh}RXh9O'}ڥ0ɾڻj6"FYhy"d=B;=js`Pb>ЬIױUxv6VI&PZ(5G<:;9T.q|qЗ|>>{;luj秡, ݣȁbNτP=5  pB9?>-e8N@ʎw̞ӁLN?ף)OK3<1=6vN#6hVZ"4nmovgIR40Ԯ3Զ3Ԧ]8NO +ӻ]qO<x'F:26{Km#jC%t݈7iSq9= xg<_vNOP)v'H挐bugA&Q2<ះbvG줭v j'<*gZyșrvo=w DQ &rv*[aj7OJ0)u>LIoLIa607vdu]Vߛ9%WcW6wWҒsҫ*}R$aJY0UfO֝JJQZp+chgal}͠ᑣ62dl֧YrWE^n$]-wLZ?iζIQ[j:na'&>f15gG/GymLm{{~ 0.o5qoNPhzCVFB>SfJJiDd!&s]\ic##hЃEUR#>A3Ⱦ4 ^09C:n IQ]|/hd-!M)畸확6j[=EKi[!9t©PFvQgvIVtU98oCE\)͑GGܠư'Oq>Y;^ +6(ĊrIǀhCso`oܿ0nuWC@&F܁|pJe(dWupϛWcfe1W6l<:G}ظ5zؙflgJX P :Шz 7m7-q^C%\t(tQ s2(D-! W#q# %QAá$jup! Rc6-5-;ahh{9}QԩAtLΙԵ4,g5YcrFcہW8p֠Nru gzӱƁ՘.W]]*8āȣH@șrNR5z8&ǽYKְ.]O0W?nL?~4}Fezb([c?b&*3QduTTSG9DD8;%5(p"lu +.csP*tWVdž&`…XXr{A]Ud c&jU: CgwGiL]>dj2-}g;5Gۦl ecM*+]p4iZSX UgM;$mҴ7jgmTXᧅ.uZPЌ454}0F50k=PkmXkS [dm׫pZL.*7֖z sd^izoUczXj S{nftaw Lht] $́5`VNj`rW:.5%mVj)yY(+ S |>% ۮA4w HS& ae5j/[Aju~jp\A*v|]lu+`]+YbcAIdS{ASRNAN:.6>{ CU)Hx6ء"ȱcIZ!ܨF>XB3jV0BОjZHpQhO@0E|7qbq@"]6~{ѓ|ߨ:#.s}SKV ITQC\|?4uYtY|::MU ʧä0Qw?^h;.؉D).X+RۑXXw"iwIIJKD\CFLqt>s5KiV,PK{+cRĄXx<1>}N͉T3/ȗu4 ޕ/ig╬Ha!^pKT f; mt썳ڠ>݃=6 p8m31v: sTu'f m ] ; 9 mQznG΁nӲꀉy>?UFd蔇sgNL[T2~?}]lR?P=>J=T,k6 9Us Qu3H\D.x*#]fumagc؍gv1@Ȕ~>?TVRfNmRvhI<2- R3)m4TՇm<끍v] a +&Uv#gh5W& 7w tB裩~~nCdо~?R[lW%ah3t3pS0صMefjeK2LWْDS粲Egln>+=NG9Yv.U:re9хˎe LZ +'ABrp,ef"2YgIi\^ +j5GpHUdQ +;6ݡ3Uh3=sMw-~kӮK0 VZVUkQQ۩WQ.@Ԍ5-֬UsD픾'jFTҨ%ײJIֹ@s/sKkRlW5*TqQ/?*%R G +?;x⢀Ayrrx|w("7m`y&*='^~맋r3ʑ4X `H&\8d\WEW{wrޥRQkc){IJʦA*\t]g$EYd8]c =nU+dqƝrwI%;Ny2uE#t?>՗o>_?}ϟ~F~㗷x￞>uQry&k^/ٳ?ͽ6$JCCfMyt~I8OK!1u;EaxȢY󒿼>ĵT0 l>1V~E(&yIe|sDfO(뛻_<z{ދLSۓٕ~whrLبP%HO zVٓcC{>568 F~0e7)&d5ڧ!R6Ȩ9ZVlḰ)@$K]>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8599 0 obj <> endobj 8600 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS19838V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8601 0 obj <> endobj 8602 0 obj <> endobj 8603 0 obj <> endobj 8604 0 obj <> endobj 8605 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8606 0 obj <>stream +h{[qHXbZDlɃrRL)O9Uշs^/l_~ l?MҦ}ؽߒڭUf{Am?\vn<*eSvO!RK+aRnC|@D=>n:M}3=6܁[߾g.ݓS8inb5NX'8'<g>w΀nz WH{xP:ړ>A 6$WGvH.c(EXiU.?i5vI{țtؗ?˯_j߾|3Ra+#AYvzicQEIK(=ۥ5×z/?˟>量~ ig=+Ug鷟q . [JOe +a{ȏ?>\]Cinn#/8WmvӺl]Ex i{qqmzW^p|B~q 6 +UFV>4DI=8mjO}bB˻A߸k`{oc4q\)#мip!2cmxkkG#Syw675n ~kdۈsYQ#wih1ӹy>E6ѥd3|txݍō4yx i$xFD+XjIyc7 +Ćmn>Ps.?M:e<+vƟ&w޵C\lڴ}V^7UUՔ7}yK |49E$aOFWN :o|Bf\/*^:؜"5 #9jmc;$r -n-$wXzkjZj鍋2<)b,%>Yqt|*854brtW{q<_}G#pءY;_uhE]1.(5m4i%퐡GF6ו֛d ؕؼm]%(]PpO)w[!'yJ2s?!gc:)l^ j(S^7m zSN>mn)#yR*T`\w{S?/V ?|QO ,aS9B\?3& E0ʟ02~2'Q6P(^N.e Ǿeޙ6 Jlޏ(}3Pa@ڌXlyEc,3M)"kH]TBGDHUl='=:@TŖF'ZtŏXC.^-+ + 4(GRT +o>Oy[P/u^ +ZV4&UM~tc< ڛPA⃱﨤k2p)V6;wV((ǹd|mW?,,i] .uGkOZ,c˾04sզ(aulJΉ+/F>? C5K~Bg=Lt;NEģS"'tt.+BKOBCoϷm~ؾk™ףx$q]4Ϻ1իjˣex> +jr6@j:bpd l3j(_t fD^S׬/M7N[ R!$?8 +^UxzC =svX&2ʉ۾JOoBRj߾{*72!$V慪nt +}?>Wtg t7-zbӀsoeNs+U#@5BCg6m꩜K +_kePd܃fˇ]=Fޡ@U|q)20g`+ s*eaoPjsVw00K:wu<>Ӈa!#a msGF`!./p/ 2d/>aüxŅbQ^l߽~G7?}QWBo/, -F0XeZ8wXꃵfX:T!oꆖb +kF\,[a!CHI&`b3hb-wk(9XeW |3/^_u]U;*r#yS @vƗ7Pa :rT^kIF'2-F^|d<FP"Evٜ"si̱=0t$#jwE LlAݶ"1Yx.`l k8,r ڃ5fV4k?R%zG !{hJXY=z4_΍Nd_O|eLMG P$J( ѥ"2> bG+^g[@%'fئ[t`Yix+tmh0n.$s%֎f׀vƘ,IOVy\UM9+חVpx[e"tK+v<4xO[3#a`]* nDvZ0O(-+Gz]B3?-R^1{{L0$8vPbP%̜tf](ԥ< 7:ݡfdG7RxRttd.0Crq9$ij ,Wjx^?w6)ߎ_kG׮040AngiH0hi <&U--p|+:tgz7{nUqv%l?fww;t1kPংxr%ZAOؚ[t9͉ '0p[."Mh ^r3:.-.Yy/]~)?+ QMM2PJogf(hQf>.{Νғ>,rQHeYW-,G0A.j,q ZbXʺd?nK8‚ۦ Z̏k*.:K$T2Qͫj1 -VuL5$!0Ē3c(Fe5iQӕt +IA =h¶^2=PzMť"2MnJ;3K~)U]{"ɀ!E]gyf8Qxrf!dQeR]3Qƍ +P{D[|/wөk +Or^F'``9kW-?u=T"0)ϊ, <ɖOȌ5|O~P'+lT x*.n&qM)>[OKDGnVE߼-(þ&׻6ٴ@hVKrK}SO[eiqwZfFt}8p5rBa]U>|LBVf-.X&!ֆ vV9CG~Wѷ#Q%]eE.Vn(^xƣwL@F]l2qq]~-{Uzb /ry#k.P5ߩ4'*]ZP:ּpe)n)Pe/9ӼVIŨӵT (k$ƠCt)Lꃴ-6"pO7yn~aWؕ JYɾ)v&rr{"5~A"1(L^ $dW2Δ%iϓhlzQ zm#GgϙpiYꗔ]˗LreIYI;JGNzd)PȠkҾ`D?I> AfJZO".DPngλ:}cȀ?ߒ:Xҡr&FeDRMv◔={bߕ? d6iry˧/^r(_?_~/ؑ) GF9_ihT˘.a AGPBńp>z~Olo> XAxg!](08wg[XU%^@p$v;B2uj{fcDr)d7!ۃ2Fa!_ $Ő5OSf o2kG}$Wcې4%v +Yi۟Nh,zv ğ)YylQ_~9Fk)!l=X6#SjQKjɻ4KwvJgvCp*oue(B;;i]4oں~}\D]nw4;|Oh)V;MY)Ig\jy^uejz֕e糺aP)'6X"gU\ɋ qAtɽ2#:AZ 6/AV| + u0'h1p >  ŪLu!+QXTl95ARAJ* ܺ{ +]Przcgrb +K9-2S-tA4e3P,/?>r;Cqr{Ht7a6 l?}N(%oxJ2A .5lFUkeOX%TFPEo%0PEP0osڧQG]a qnʧa8usxzw|9G`8" K87'O\4F‡HG+s;&GPBE]ЬCSZP4Na:Mh: @^HldVX(!,&hIѥ1M1 NqZD-f@-QZ``$_8 q 4I[,%M`fI-KڜJ>+aFB>~ĚAbZX!Fȫ^0NVz d69˫/pk[633BB(7%v!J hW6d\=Kӽsx;\'D.l?7Cڧ3 +koW狒ńLJkѤM1w.{ Aw䙚;붆nw%WD$ ԀטT󤄫]Փ2'e3ܕXz" +f(NQޛ?"-"FxR2mCnAlzhlgac:<.$Mn*1 + )W\E78 p8h)5QpA2#Tn#n0nR)P 8=DER)/cܻ +: xt2LlWN.>.daA-QPP"fxXD p}vnJTsNt>iBNT$3A5BRJR1)BUyP؞P2wƤvCO16"SkU!gθWTC2D;uM 8C.jLRW݃$Oށ|`I{YRI$Υa(3_-ћ= *s$[\VUa-d"@.灙hoh"kcBm1i.:H.-r/h3 _4f+?*EN+i)31-EK%o/R$/PR' +D5VbbH5RʔaG7ĬKOƔI&!Q?D7ܜT©Bk,)y8=22cuȲ{1=FaN"_񘍴m-/%c3J^iYFHS:aci@YVڍ1s%Ƣ*3T9-Vi%z̴U‹doDF'h,T~RdV Z?hs6rn)D>ŝSPw^2{\Nmjie9*]x=6EJKwԂB@\3]K6+I[0ChQ3d؅|03mxhǑY¢0:na\ U< feKw2&DxI%;"BrJJ+;˨"]z,wm㮑ɜvH1ҊEfw$9.쳙߁_I8#.W 7 ȫйhM 1ʗ-v|L݉6d}J猦|.t;w{)Օd&ypDOILM} j7W +wsvJhk-B1"J 3av( aJn=QReTo/.`ru1 2)\D''z*bUe:EDW~ /(]jBAiEJ nT/st;_37Z:&ս}!][H#/!|@rRe[N.%,|U.CVxX#gSWvޜZ(7jU +^|d'~5Zf<$k@?+ߓT,zK7}7U&cJmT*Oʹ"= ;̀TTiuRݑia+ Zz!qhE {XB:,q%*|Q|&a pWšn4볣J{Vyw 2=΁&O*q +><< DX`&JX͍%z0b攸w"B kE=-a $`0B$lD5>2DԄnTZeLG< ,d!dZTLLW|21/BMfbgia;tP*%}-CqC mj[Y|ǀ| :ㅖi Boᅤuo+xٝ sFnFYTPH:#xV9:TWp0_N iuC&51[[`5B|kA)%9_b)Z +h7*4*˪Ub窖ͅmzRRwO -LXev"O2lgONC$n"q\;,f51%\pa Pp)Of`!ʂVS.F$hfU+jVz`XPq.0+  R`A. qFkBpYZ1S[7"R  H+̸A +`L+\܈p߈P +Q1yc)b7$+1[^WzfA~{~镈[,\w KeY +9iy+?T =E"n>~6m"n)SR'J%:ܞӣEjY'Vj9:9'07_0L8 + K׃ kfrO1!nv2fA̢ nm6Z)_;+V7TBqk윻7+S.W±,9.25oA`aX) vN"HyWzΤ5A a5BX=1Kɉ;P1-K0he xXe<e ?("r(,o JLa(1x%]j#[@hrvVh*+i): r!Pr*G1U,S}:gwsS',ls۩dgoSL]kTrI*ˁq/Ɵ$#b0N5II7U|,xl.NNEN bUgO`H Qp/vǿ w4wt;"|䤨;-ʡCDhʥ{wMWcNMU&J(xW:#bhKm}q =ʈ-.pv@a%nS`JŹ-=P>+W:EAMU~$TNmwR doi%\6 ţ. z))A +S=| k ™$܌ꃁ)BAwH +4B6|x"n'IB?ID(:1d8Mz{&Sՙ͉j*~2 `~2$I $q.?9)T=3@誺WVx$wz~xPizwֻO?R"h<Q*'{0tJBqpIQ4J +B?¦?ުHp-j~'Β:s"(nq`M,ŵZxqA@mXosR o9PP9mGq-3TW3Ϡ,:h>Ux.JLPiǻY_,ẆWTe9o(٦lgum)$Qz1X\AGZXYq>dfCgН3c揷a%^lַ_B =? uxjQ9頼?}_㫯J +P&Be1HʲV-n^ :(ѐ*lk`3r)ldMlon-~O‘_}a ]%-: +$\h';: 9!LsOy@OĎ,U +endstream endobj 8607 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8608 0 obj <> endobj 8609 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS19835V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8610 0 obj <> endobj 8611 0 obj <> endobj 8612 0 obj <> endobj 8613 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8614 0 obj <>stream +h޴[K7ȣ@o梐f={.Uh![bxx0ZL/|oi|~ӻg;kWiqJ./nzit@ +},..)J!@麝=ܩ8wkԺ"ݘ~Js},,o8~gXQJc/շTa۔x!B6?gtƑ,-X[)}jKuz^J-k]9m,˔0w'`N ~<֭:>k~=ݟEZ=j^mW߸ w5BZ~Ue~reeʥV29;ۺH];mG'~Emlռ?+8)spW&fc[w~_w?|ߠ {ŗֺ#\ ktRڿ=/~}㧟?pg7t ՛z|Mq|p ,,L."Mj]ˮ]-لu%(y~ +l|yv/0oc)GW_,QKlc2M3s+Y ld̜lgkb-[reV3G' hX;8PmXLLEz*B9ڕX-#i@G ?W=5Lw +.aZAgι\XfbrPX]#J: +lojG(khj DVX_[ B4UESgyIaC&!񇺧2]طiIrjejc+鷧٬~~?]?M#}`)>p>%#_&<&aDW5k1F-jp9]ׄ ȠkC5oAV࡞[|*fv+eO叵 *طJR9Z %j0;ڲUl ruQ\+l^(?z@R('mT:ʿU N+ ͟>r׷'Ûp-7'87OjXjpi߂Dz3_o翶O~nOuvSvT9[čor3!1*[u(PϮZ^uP,JEy|K?$#@'6b  Vfی Q &:uLTg^H1\H-m="{\rSԗxnp=&tpҘַl:eNxAd# +Tׄ%횄.]^"(ƒV&k"FﮧQ@+sALE;MlM"Wyk>IRuzhv#"N`faK-EK7I $N-4Z7{$+T%EPB.*$$f#Ҳ4"0 660T+XZu_!InJ$=] oB"KخO@{Sq2RbWat ŹeCͣ\*w5<ƼF-5/;6WUn侗Si靾yhq 4^<>HHs/ gy?u$u,z!XfvFy|ݬ[TM2zT +x5Ht=[U;+zx+־Kw]<щ9-Eg+pze=dL( +Jxl}b!ea *K/R 1ŮW)s$RܪpqD U= ݝZًErP2s*|z4E&d_4zP@|giC[.-mk6.N)f\ zѦrߢ׺|WTcEJ #ZQ%?͵4a*5qyV'Aͳ ,l:w5bbnAQ[w,;,['<:ծ@|}N5'HGxG*qY n|NJ|1MGۥizFj*=v8,C)qoU3n\|{ypx)٩`FbFt@ʚʯyQգ^酒na!"k0zVd{08 PB;Fl7,tG c$o4Z(ٙuĵԾߗҏSGY9eԹdyWi. +SdyMպF-aaoH"ٱhG )QmEnR]_솹nK,}Q "6T{aŃzB/{%q^bǸC 9͐BH8j[*@Rxr4Ő;'5gi './V7TѮ#5 zPBOΉ}HҤA-&տ[^N*W:JkBx,e (% /F@1ԇfQinō/h5|lo$}P^2&#HL +n{C';C$cC8Pk461()u ad Mn/N}LbcJ)K2ߓccs%I@tA(eXU9\;$ +P ]U'jGP!}{>2xV|`D>jeIڏ@$2)aKf& wgc^D v\d1 Ws2ANxY +K Of;9h8Tkʙ3qUHsPw>eS@L:R3M  Qb}50e`ݿ МӕmVO D6YyU`1>869O+:Nrqvvqzpђ\+aNJWND88"J9a!.OD\NRz땰ÒAiPm +]rU>>uMo^kxmu,ۃ/x&,{+H00Ea9b6):EZh1u$|R=JbG}**Mk94=(@ЪD%5E4 r1K~}[OQeXP(Q}*Y91МTh0}0>Vmp`o.7bĽ%cpgP^=HyG:UDzf&c$9$!5>d;vuͅCb׼ +G 2{w{HIi%hCQ"|62aPPOARPű|%,/ +Ivi@3MF# w >+z4 @o'QAuL R42uRS?=rb +ګ!rÑ/2i-ue5|(u 3w8~ +r9E9GdRJ qI'{ɴH^~t_7A.9[fL֩t2E +endstream endobj 8615 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8616 0 obj <> endobj 8617 0 obj <> endobj 8618 0 obj <> endobj 8619 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8620 0 obj <>stream +hެZ[o~ׯG2;B!(nq@ +E@Q+ E:$eo93KJv603ss勿|WVZ-n/j/)bJm\kUo/fMj+@Nj/z:g1A-O +'u7.x$Zy=׍yU -FoL/`kl'\aS^.Ea,9&dCf_v>3,_Zo­!V^1htT27:sf3jbvi07 hb* ^S[$u'5Mc׋o~_6?+WVHִiV4la*&BT{) ja˰e}g6l͚d# ״fHj]]liQF:l$8X5B |G pi Mr]CwMpƚn!8BM4F[`1b 1I?!MH `3v  JuqA6tc ^5Cx#}8bye`;%sZ}763= N؊D `&%2l:T:(i1 +׼0 @g64C1d/m(xD`P`+9ԁ;Bue"r.T M62ES$GHm`;Śƫy#oH651AʆoAbxKg6 g?5ƱhIhR5xboL#~8-K#Ƚ']۳ټgCHZLYsoaYdҦ1仼5]YSIcp^a6!Qje)r,+'>A|>"nax2&+Cn((ْ(\pypJQa!|N +"gmx)G*5+x* +](rQ6SIa vSXҲ5,"Ìf_Yꋪ'@,|]2ʫcfb\*AWXP&p O1W6,GnPXy~aI8kT]\jGTAr\I.>cDC[LR9&"jae0cH5uSR\Nf>ȋL7Akcg<_W~?wR 0;d$nqM^3tﮟОlW߿F+̑AWtK~n(4&~vQ[Y䠎;u-C/;SI1>!!P‰YKyX1Ln䗓՞!<پ)u/m+rEXޕi¹RȏzG}Ɔ+!JApjz/aJs;D(q7W^sA܊64xo`dymBv-e =>d#F qB睠-ܬmjz80V1U+:+9" 4`^nz(ڹcO(X" +*>a'Nv"y&O%78-X?KwެYv83V578jLn6\a- -L7TYE_0%zxǏQ@ϮA]i7\uٝvVW1v +Q@AfIѣi2{=F5ݮy{ƒq&|'8F}yT;yOWo恷CV~)||VEgm7[H" =YV;k("yN1U&뙣p%PT)+z/7 f߬;QVP2z1]ooFxD UZғ} d <A`Eohʺ ^"pX^oc4y2ynAp"_^89i1C%>)וr_=*f $/̜M㼟ӗsohFs6㫠DqӠl8VzKMEZ|cߖڮ4!.DOkDGY?tԼZl%=isw^ve3AZSRecnY | ac?0_9Fpr K0¦;%wCi9Juzџ*_ǃm?&c^#$! .5^,r,c}dy*M\;YmW~tu!11L1Cn);+f-g) +2_p yygw7Zqz Vc~˞:ӪWDЭϤrȭQ"֒gjqB/ڠ]P6$A}}0@mU'?f@M.2J~]{v!G D?Rrnq{y^1 +qDa2X$t}AnP5ItD\ֈa$t9+TW]ƋY.o].cuLH䒑n)*nДlte\N{7b;.DdH !5UHÍfɟc`  u >q)%(HY}VlVSXҏl.$%rJ려ӵ"TH֗S):2EʹK.w)T ^%$OgOY|& F!E#~TZ <:#¹h!4дRkR_;;f&("dSܓRR9RBs$f>Կ:$D"9Z٫lbSQpQ] E<1'!sye,jYQ r.o],8"$Qx3m<$g>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8622 0 obj <> endobj 8623 0 obj <> endobj 8624 0 obj <> endobj 8625 0 obj <> endobj 8626 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8627 0 obj <>stream +h[k9^"?Vߏ*ff[ۣj(f 焝yybFڇBE~~ÛO'N]]AWOàO^BLbtMWNd(]tJ٠K磟Jޣt}>)^%eݞn]nLwN䓳DRH{߯cjf\ h3`i˽nСL !Vτ)-k=S_ x9/u/{],ewsMʸgf:gTV$;Y?RͱY0N|N  ؜0s>ޜ>"RcUS6"]JW*WsEDB6֪pKe)f^>KeEzW/ٳ]`oG0!)$AIݼ<{ra\ Ãˋۡ񴕮2KNO~2XK;?\|^1OaO*;-i +çktĆp/ &w{bdoZRR6Gc')ۈTxyyF4i:3`;j0$td9X)k` U(cZd]Z\^j0Fa9byS4| e%YpGLp`a2t) 3& 4㺹S0yi;M-s\䅠\` UJ>ErE D @k+f{|YջRp€1,Lxj@i*y58c/^2(4UCgvnc!q2TjxzTNNu_\zɆS +'+@"Ӌ5{v%ҕw鳅vC +8$ +8fp95Q h#I`'b#aUA3zAt3Z&< ?dXCghb<=j0dl ?}[6\xhVpS! .zC-%Bl募^ _|ܼˇ'n ڵ5S0V(=yzy0͖~`Ve#*M{C<@KijpdĘ[4m.ކ0h!h +rR=^I$vƁ ȵmA21G(@?rvzx6*3s6&/t_|4xjx Orơ.!1rƫR]j#U9#ad)}~` ^>و<|TvP0`!,/'[3VR!h6={,dl^* ˊa%Bܹ&Whzujar44{19AS~p}?{9z#K{r2 ( m>f \Q/+OjPS +1>X +D֣mnR±]..Se>NAi#N:7W<%| /?<}٣e6JOE, Z >9%|vҸAl2W~H +{$<̀vwž :Uewvh3v0*N&ipp]]%vK0; A Yz/YnQ|`Cm'TO7 +:cqU~f[aj5sю[5 +g^}ōY^΅:A ,zUs5HpTyͮA@-B?nXɤ`.4YF U%ɳZnPG<qlPQ T&^\̋a _ HPp 0"1ƈT2MjQkӂC5eW͝"Bܟ*KE `܏{ а7ϾYϸ)@9\3/2С>#]Gn]ݱFG 9@pӝ̾WP< Ii S{STMS9Zt ^ĘJ575Оנd1HzwPydB`IVs,;1l~IhS7*Lvj +dxXI9%G' +@3H,L0AE.LaMCi:, H& 2:{:6mv6ԇ;0a= Bj aiqaDXw'Gx)ֲ0Hfw7,JRȾQ1DcZxL%nFDb~.ZܨPS +mv_p@w Q; 0V S:Rн&"Hnu0ʥ^ҺٝBalȋvʀ4C ,R Jz/N՛Uٰ\VdųMUN^ +E]Yɾ]z:L,AkVFs?6[W1jbڑMg[vvaE t溦>E;IsBGǭ/Bn?mq5N5oeD3IؕCdx嗊CN+{68 w7BB +\(P^ +_:J Cxyt8"el>' \mdpbek̟WX0EZ"Jb +׬`&Ќ`m嵭+b鞏ŘʧdGgvCYX4AEJa_@`wi +5Ƅԩ v1}eDeWFj~pd4 eUM%lfjM1v"kv_o'daJulg|NWM3) +ަ +]D Lg$NS+bMWjqNƁ‹OM5 p7tW[Ov*&/F]wA.F]g4MKKԯy[7u!I Nj/ x+T+p^>E^Cʝ_""M/bcg\ 83v_ֽ-Se ?G: +lKuN+ܷWdTנoO|^wGϕPcL+ a3:.aq0o>nEx)SPJhGQ~͠K[q0`mnc`n"ǰ +dƈmh#--#",آss&l59xoW`} J:۱%0kq3ٸ- 2)pe\ka>V.:8?AALQiɐvҖ +) ;&Vxx;IpukQqE5211b5lr~V~'+0bجI.O%yԻܿWv`Ung P=#>Uc +︸Q20@y:866I(6JZD^EWF *+>תqZ9qB2eA;JkɯXZS°% 릌kl ܼC,( %Ud}QM~v|V ܿl̠b}KRu:7rL*{ζH[,uJ`cJAgv&\ \ypboV +g/C % jwc3ѦP'd)7l*eǐgA\@o]LѡiN+ +WKdЊ }?KH+ Sf`Z +-:|ooD.>,S̫8\fHd%OLd|=o~VsdWB ;o$x)oP#vdH" .rLWyuWRD^,Qm5Hh++/omgj Ƌһva5u ߅]!:fdVA7upAO^ܞEKZP]=dS%GBrkMVy kξi0JNǾ>&N \  \Mz;f%b:]*>%+ *]#imuM2B fb y"Vy.3d?6DY*.:sAyU:#4- +O+/y*]4'nIT$.XI/j>\7/nC7^g 0e + +endstream endobj 8628 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8629 0 obj <> endobj 8630 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS32126V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8631 0 obj <> endobj 8632 0 obj <> endobj 8633 0 obj <> endobj 8634 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8635 0 obj <>stream +h[K$7rmro(a%ـ=>TN/dVXIFYcB!$dvhi~y)s|}OG7_ ֈsOgA%5˕[ÿ|۟?~?vՏ+[m4ex\$=%x!p@@m}a@ui@+.ku]6\3/k9f|YZچ/\]rlfuЧ'.sK.ej{hVo`2A$V +|'H_2nY* |&|FiTM;/)i%I/t~~{`DI4:.9+3{.8V9f 4(Ko6VVp_GpL[/3T'y8'[.mm[Jqc  +s"G73Ett48D%ai׃O7]g\?(q/JRU\?RG;(Oڽs/CTSnBo|avmz\*E" ++to|xX0Z1l%<9o~wh f@O[WFB4݆nR Dݭ)GL/'bWp)z߭/ؓ 3_hӿ1!T3 ,`qӏ UEГcp*DRIH-90(PAhS۽S XR/O >Uu`˼t Ǿ~;,B\X0ɠDbErKr).vned[lDX ų*{?Hx>"r@z#F,Ji"ʟ 1 +nQۉJil%jƗvFcO/:, 3Hbﴅ>D`x"ptFu P\ H%L6[DE'XT2OVTM"9#ﶯmݫ4G~jH;Pl;n$D_h>[.h&1Dh8Σڊ }`Ǜ9:6 %Ն2k0S(GޙhN,R D1Y:s˩$tHlfL7?e{/e& nuNl{!{(0_TdD^I/Xh|^N/+UUXdozO:˒no<* jq-BR5fgx[, ]o{|bhE\vyS?%c3IYqU[I],TƻUJ%b@uɴ$I#vX)g嶗i/61CBLiGcB>uヒeXXGwL[EJ~vQ^ݻdkeziՀٲ}< y>Km!Tvǫ!d]A8P-?ŦbUͮ +5ym +r!(&O7{2~W& a\OK˹>a,V.LFFqnO@~xГӤ| xyGdbMi 9!3'PCP&R궮V@GZWʊUX3wZME)ǩ+;#7Y㦈 S{-ġ͇zJ2&t׸.whמ [54 f$mC'£j"S0$#ۦԜy'r^90@D+ ثD#8 +ˑ ;Ɗ +>Žqcv@'LЏho šjySn7m}]c1 i.mh8rl[L@|Y6f 3p2cI=*ѷ_ XR:-ϝNnt5a2^9݈6Dx)n#@3oG[d VɽqE:$_ S b,3V\:<ۮ|TE$ EQ'@_WTwɋ/=U/gofܧ$;Dۙ]'nFt:h<ȏH&ꋶ١F g &X)k桄k`f!\!PweNvVp:DOkA~QIfE <`8; n0XE +MЀy<;Pf=C{@M1۬y9S29ixU%otjPp{nHXqr9'))İQVY0[irYxu\'YE ._?Sm۞|YUG95?n௻0Ŝ;nZ;0"\\[MwWs UNe&)`ܿ$,07=Sn*rLĔLIK$IMs &8 +:\~ԁd6tG,Y14TF95Ih4;?$QW:w'꤮@*p-'א_6{tŦ9G2|-(#-c$٥ v$3CI3WF#CK'/H- +*t3Ύ uuh{lVWkevX猵l{#H +zXw[ĦbNrf,螄Wz3 U2¤I9׫Foq?ynrjeN=q4Otf;#z+ܩS/km7iмyqlnX|;?vX;,\@2Uuiة)İL킘nx#=W4N*9Blt5Ѕ}[IrϢ9MjJObVlps:jna}&$o&}crc%""CtduP@=tP~ ~E|ԅ~Kaf`B|[锤{R)FJ-9k}- ጙ +1Wb4VCWkIL5LY_cz + ud$>E@Qe)ǣ9fgj)L +̽2e&9oifˌq3'MT@u㮙}!J`ݝH R NI=HGkSƛͰ c$4}C H!~^'Uֿ6ǛT!UWT}as~=3UYjX_?Ց90fc>pfB$4js563zQ˱=[ΞR&?#[Wl9rF"sw}&b[$2c-Wȭ R.%=jN"g!Œ%o%J"sdr3z1gW{Vy!wx(QkIr9j +w%会<"n{뤲(o]UԪTb9%ͮ + Az93YD{/U8$k7nj -STQ\Σ]0nlFNX#!(-SuqpDIyvԩIUeI_۾(NZUG]1WgGF>齜}kSeXlkph6rp!HQ(ZJvʠY9 bb@t7@",lOCNleĴMS695b~a&Hk4:Pѥ;rB4qՒ:]\'ESvHL>#mgQUw \wrqGb?gѯWW+9BT4c0?fs B 5OJ1T<v~Q 8U1动їk[VIM +x}67e}RJѪ{I{{ ah1mj0܏6q  d!8qk.BQPs1̄sJ!& [Rw$6;ENjo!t-/83nMo^_[O +endstream endobj 8636 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8637 0 obj <> endobj 8638 0 obj <> endobj 8639 0 obj <> endobj 8640 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8641 0 obj <>stream +h[Kȣ@~:46`{>sh2Z-igd&*UZd F0|Wz7Won̠<0(Gh+5rhкR6(vGh0}k)vqcF/zk7Ob7/s}uMu?q7ڴlr veZ8m궑B[7 mux% _zX^7f]#(}8='mS'Iv<1͵Ŷ4'N (3D4朇ŜHyl w]*_eӶ&M[ZoJKh콍K#9\O=-1L8A,'+Ø +6ew×/ (3|տ1Pgj(mef?  bُf_˻_^||/OXa}G7q < =x>Ma^^L}vPVVfac1ۈU4jU02=+= VZeF1Xmʚ+8f6f4@#h=F4mU0Аxxیd6cIX׵&fi]ihii<рx|DzHx{=G)͘2T{9#M4%9;vGHAI^h 92W եH8BI,S4:Mб>N o]yh6m(-;z5IX0 I Bj<4=Bz?x:\-iiz +@exOЩoB}Kr6NxIYs6T0Ճx ta]]+0s^NErZHǶki-`W^ܷ|Sk;Eyk&@=Om9]CTh eeS,[d>}G/ϖIׄ|~6jh8~3٘Zj]q@R 4ڗj j3968;8dۋz9psP/i}8]khۨͫڮYm/[4kUzs#{gq3nn\[u؄͝go]]+nhjJ]MVېiצfm,D'9z1)b8o֛/[=B8fy#:(XE?Gyp79䥯؂b*.:Xd s`7mB]d%KSQ..X ©>Ml),$챂H <ߤ܈xB:8v"UAd,X !Bxi3?iSS'F1?@famٲTuݔѮ߶.rUWAE+̀XEInBi,)v`틴c?!Bqvҥȧ(sT% +AR2 Zl*e,> +s4 Zs2,Fkagu<#X(9ʶ!rmc"E7mE0^HB钙U3kbˆf< a4>:MlSJrP*Ʊyž-]СtIڴV`*n1^4yc`?qɍ-Z{W}WEM(u W<5VCaULʻ3`\fAЭTSN|c3e +lʸ:_# eݙPGx*\K3Pt%Ò NYzoxߍ 6Ր.jZi@L}g; O3${ 3C-|Oq#OUu;E\xwݛznө^oMAv #r7u(Q[d۩"4dZޖ0;-6 f:帴f"-մQt k +A-ʰMqZtޏ1L?b?gBhU?? vqx3޼zW7au8:"BY{z(KLn +pbER$A%kaH[ƾ&}ը8 ÐG !8w*^bQGIpk + eXU`kh^ko6`|ٳ0#m,5cDk-]e\Dr}Ae[Y"hLy.q]GQy;~^Xj# +BYF1*1Ji@=CpɴD=N1a$65sl@ e 6L4{-r{*b8,=6IUp"pJ8k)*r"X>OǗ>®l"4 i=ex"\iNтZm1]iuB260K&I^r> pXpJYXr‬Og@t:}R{E'AUw"\%ppw*\{+p!} '/>*6 5 sñ?_bKa&dP U/7ѻ" WNtw>\x-՜ +~>\ԧ m:UΏ(J$^#oc岨x!JarZ$x'A ܍r+ї50-J4$z /u 1"cvֲ㩿 f]TҙkĮ-kTJTG)Ó](2'uK=xXf50zI{gMKb^N˝}& ­#4.0!:+q% F:U|rT1`J6k.7\%Y.ȣ;֒<{񗚿7 fRRO&M(^nG*`{^߂Vr=b!p E,|Cz<4a I} J8D˺Z^P-{ 8KR%`VP{V9D2ȱRTT dA8~Bm޼2|OTv &?azF`}:=qղ#cw:|߱]5߂|5^r,)6)PLدkA' x*Hr,Kꌴcr )0iߑT..Vُ>)wVh53z^ɗY.%.˚oC>EC 聋\_Sp7K%il/74U~t;:ԣax?TN^v>c<iP3U?co.GXlGF)%Ɇ>BKhIYA*d-g_>~>~nc5 __S?Om)i4q4+R6ۛʪ\Uʮm}0 7eª/`M^B[/te6 ~ [616h\fx< Rށj˃ v RqU"vp/ uf}h\]:b +L(QNҚLǩ>,%\GT>0ƲWC+pzR̹"ys}5PY;{&\hiu ٟ7w02Ě N[LS<_aBOaV,•a]j9b{;]pL'IokDCԢN<{0(:9I(ߪxWmW,y,sH:W. Lt`p~'SG L_ZR [ZiQqA?~x1x $?De <d$we^n-Hl 02'P{ZNů"8Ϥ$1X };[pY[ [<R]F@0s S)-e`#ye +x,W Ai;wsQ&YT6Sh vY^4+YT! $2G{_<Ѹ@4#j{Da0<ScwH\uP0 +R{a:0zYjqRm>JaawG #3kl9s m5\CJksq\G }(OC|7.|G]qf )*.V[ȎKB΍xEl|Jewp6*q@,.# 5*K\-m&O |GYBnIgJzEʌ؊Q'ό/p?ew-/'rӕ7]+@p;uvÕ>Iܞ@?&ϫe8yfsY`I Գ^93[nۓ$7O]: A^| +k$R<]i:rmMTr>"`Yٞi=`SuIl#3s g]FyߔG]&=cSmr_8(1Ș\.-|ǼLߓylXxANB+eŰ̒i8X 0ڕL倩QO@Jj`q +endstream endobj 8642 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8643 0 obj <> endobj 8644 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS19591V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8645 0 obj <> endobj 8646 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS19592V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8647 0 obj <> endobj 8648 0 obj <> endobj 8649 0 obj <> endobj 8650 0 obj <> endobj 8651 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8652 0 obj <>stream +h[nɑ}W#5@*A`$]ywm`00Dlo{N䥲I ^Tw'2L n^=??Wa¿4hF4Nf8p4 V4);oP:t4 Oӕ5jUdi&(*TN=/NheZkRWz3Bj ^zjxI̤$/ lnߞPiNNr_gN3d  + 0/S+ԈxZ&_ȕ6P:j 2hqE/Vg:_]tj0dN* לv8?"'=|8ڤцp=z{T!1v~ p*y#|0aFaYɬX2w_MP5iv9(7*{w/zx1PFrƊckr')jx1 u7?ʆ~,$DmΉl*U"9m-_I)67ԗ\,CK9iPҩ[Yj E2y'/ S}SpXrT> l4=|8$:D]NCKt]46M) _ V]C:=<MCi` XBhB1s& 5!Od!DcDӘA0c Ԟ%BVNeMu&jO o({4YQL&U\0W h^+^Ʋ@*` +2+A TT}9l^#>sJaÚ6f3R,IkER4lSy2&'ڐ X Z1T5jIcJU'uԒ0i%Uˆneeq٨!dF׍Z#F*fcEf>(PVP& +?yIW!meTj%V]tqʝ*p2iȰuH]\zW,RmI{BFqYU*J]Tv)Jy[J-+)MTz0MVa*j 5R+ݦ/زD&֨XѪ;]+wEF.dmNz2jzvW=tq@ d;_&'1RoUŁ-$ɐ9Ax`6ijCt5GXsUv-t*R_DxMJ-jf1Q&fd4Yj0Wy3WbnpZer&pm4YUi^{uKQs\@ADs, Nx,J=㤪؁hmBC}yM,Q#o *݈2|s~@iRAgZ|8S)Jd usRm6s=)=^1Zsq{2в(ϭIӁ^M=Y0rPYԝjij45()SKn%}Nk‚E)1QTVۜ})-0bX8"]ZdV3}ěQZo~3e_Ka1PӃhk'30D]. ;{8{^KJsMfvz*]:*qִ8x\'5:5.Bf x9PeΜ˺ӎn*}[<2=s䚘a}g3.D)$Ay_.|U +TRB t> AHێ>|gf 1)g`xz<@ ؞{ c0E:4$%{ܯ9mOTy#ĩkCR%|+'~"lUr-:;@95 +x/Y讗X]]1dn&+0Qޚ$Uhi_LI<-z2rCnfk@ O p^o 6_ ߕR<{2uv0 ٰ8ca⧙ +wy]E *ps p5^5^b=0jt4˯h{swgwuӢ괫y3ɚyW=178o6T>O?|2NF1U<@y|BcgR^xc$M7wç˻pqx[cwwۛg v͡^*tYY6> wC^7{ɣ{bcv߁8<[yx:{q;_?w~kиY_a}h,`!|,죻^О/BtJ#2ժCܶz={(t3C!F^./}ClK1XxhRV^_fw}ƻ2A}g}W5 .7Y~ɕ?/m(7i+reeZX /yx2zҨ'2!d/j]:4N#iٓ1#vf~Ǔa/Od#~l®| &>؏?f>? ,x9;27#S3:ΑizOmH!TG6_:2TuE<8hʘFsyz2Ȑd|ZK! h~K>ihff-6 fY|cjZ7!3Fna=sn1;ż.W*ܢ팠5cLi! c:Eg@X⻰?ӀLVdo$V}g$f?kZp=qMGx/VY5M7 _(7fCwmF.7+qDK͗Vxe A=I˻˯{ɓ( k)aO ɤ I B!T_KЬB F|-mx"φ==_ZF|ɗƁoOWU-i<؍.X|ɗRr^{nn> x5pn}0p|`&͆i &tf;6gۊ_]\ owk_N)]^`q*嶙ǀU\^4;(hNI o`Ĭ jdlfLWYlo֗r2 o?lol.~lowpmaY//ox1}\vyK]d\t×7@u^vлSr̅qo6OHvQ<"׽ bݰȗ " ȢHW~܄A|9R^͓Tv>8{oTyu/Wjx֛Wg˫05f[ pa;gZ0~iSDF +endstream endobj 8653 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8654 0 obj <> endobj 8655 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS19593V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8656 0 obj <> endobj 8657 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS19594V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8658 0 obj <> endobj 8659 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS19599V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8660 0 obj <> endobj 8661 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS19595V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8662 0 obj <> endobj 8663 0 obj <> endobj 8664 0 obj <> endobj 8665 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8666 0 obj <>stream +h[[o\9~8D]Q`v{;~ d'vHݫʗ*gS%#(#z+Z~rkr}ŇU%rB-]lVZ\|JٸݸբZƯ-kw_[nYoO4r׋h hȤ0I :sSC({SAj:FJ<֮k,VƋX4 =<܆Pf)|;?+^i谺Amc;BZG15sYE|}Pz ڤՆH~֤YhWVW YDB#NdI0kܢ^pSF?7dR8s/ps}//%>h_0{AX܅BDXvD%,mmWr7ڬmdZvU eJփ;*e8zD 7&sۺ:Gј9 ϤÚllmzZV%{Ag\5yik9^Vb!N5vL^=d($k1M^N i0O+TxW ?+wX'~!ºӴzM- =ayl#f04HבÞ]-$ z$f`$-J/6LbqGYžКxR0w6ƺ:'^N|S^;;vm2+ED&E豋Ȟ<հC.{WXM떪{Ny MSP8|5,U2 u8ÆXʪtJɾ9';ePSq6?4ilX6l tStb֖jyL!53 NN,>>??q#X b;aC誓ҩxkWwo7}A q'}VAuRWZS*U +V`.*,]e@XRߍuDg +Gc$!Zu_h\VOQ1!:ZϤ+oƧ`MÙ!|Zn7g`)H͹ղ'vJ׍ y3x 'X0ᢀZS]fn:[s|S<פ= + U6X2' yWd60/Ń:Э֝eTSF4沣I*hnL놙T1M?퇲I7ՇmD(;I) +' 밧o=0BP+'}vmUX(_;) !(uQRۚۡAf!F+Oyg wErfh>Maj;m%fpevÑcqv;Zf' rDӦN4Yh +ι ln 3@rZE2z6jpG]FY6TCOl0>UM&ObQ)M`hVzEF}e6R5[_q>Prx(PAQnK# O +9aC8NS&Nَ]6E/1$v+0J5C5[rYd=o<A(s,hWfFߋmnIlSjOf5MB!m.T_S08+3ҫ'M`]p&笆$뇬a8n:s73LlvZXTvڐMubnbSGBy F)҉0HW8Åz\g}fàRv?xkKqHiMTHO'J0 n)k=iXmIyn+'KyZ+[x +@:Xmj&IF|Ey_*|[va̬{h B)d%t(|":b7QdzK%+bم֔{BO1gj3Y"50?8n :Yrle7u s.媈q@l#-US6Ɔ +6,#κ9Ln d*1C1 E&ٺLxslWX +0[)UM$pfJ 9-F'bu8fHDY8Y]{&A^lM;\4UP̾SҬwRؗ.sQϞG s9Sƌ`fQ};;>]Ჟbh\vV[lj}rه:p +6g:nƙ?{%6C=lD{zv-56[]*G{* 5&9rm5Kn4M@br' Q5rN`RIXUعgD[|3ok9TF ,qUԆ{}aqK qu0@z1ɯI9^R]`Ro7 +p]ջa2s[X/xۿ\iыNrE)&W4H1\,yigV, Fž屵LVy$Z+S?J1ge:&S^AWrʡԖ6:.d N7Ro~2`6w]ĝyte^ JDx5RWv&#`R"|f|94MeY; J*oƀ# 0B,kɇztQ Bx8pX:M߅N"c#Ml*5Җne{ޚ$IGhMgyEiRf,cJ07+1PIH^ D(gb +.c6Og׮&D,'ˈp{DlV`_gVu>c}̐]އrcI$Ms,ʢz4t7H@xʞ# NCoٌ99)Z  qB[@g'i^#5IT.K)y85xyyzz}x#rVnnryսlZ\z^a]Wo4"goyaML/Yퟛ(#:y3^.w"{B|_#AUR=!_qbȯ)J|7W~7|lȰ HxN~| ܾzF^dbzbox=?ҊqwX`Fm~'+ˁc9raa!` ?"H`LVw!7qpwz|~?Ǝ`Ʋ9ɟh +r 3yNI=1ʉs/1\_:ΫB6qW:pכp۬'hցXȗ<_`@:95?nh@f\ 8lxIR2/-'fU;pTR_N:2%TLrPm^)ĀE׻L + M8'?u%3#3 /@#rEdPfyxz9-8r:ZH&U?]x /IY&&F1.X0zF5>3kcKd< 0cbM^4uc՞=놲nzI&)>|, ψ(ޔVӣ?%sX+r)u^4XR9vCD&{]Ahgܹ: 'qaP@a ;䤦rc+m4d{ui-4=n2}U$s/Gmcp;|b1Hthxe&cw,=W*4o>f" ٣FBj+} Z|Z4b)ŧ?C3PE߷W 8E̕jp.Mt2 LjOSR 0R Gʰ=ѕ(:)5$[ 2V伛TxiZH߾>mSl"t)=cأ75i%ʝ]&T^b{u[D8N,P8%@L6ؚ<9Åz~aGq|34q11' |vLM~q>?$ G@efOys$eo ɞ<&k^X߿<c!|y27`%n߀( CEĆ@qq@ +8|@x:8n9~}FOfg4ܫ^b(]؀it ?%3_^0)8IL7z lA#c;{CC: ǰ8q tQgq8qSM_Ue OqdFQ Ȧ06Z Xz8U) +ь I~089tp= X;tz.M|Y{⹈. +)x8UMq!L->ܼobaW/xOww5W 8S{?cр T/H%֖A ^,S +endstream endobj 8667 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8668 0 obj <> endobj 8669 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS30100V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8670 0 obj <> endobj 8671 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS30101V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8672 0 obj <> endobj 8673 0 obj <> endobj 8674 0 obj <> endobj 8675 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8676 0 obj <>stream +h[MǑϯ#e J659XƐ\\?}ߋ̬陮km5Y""/^]҃._LcCVsW.fTJ_/~TzStnhPKJ>CRi)x=f|գ㏛s2JK)tGk*cd& 1ѦB56/iݺ1] ɘd"*$\m#qo[meiPvR_ć,^VR#3kzg6U bjF{݌qZU]2hn+}}qf;#;aoWo _-F17e%[@Ω~uTf0sFsNۋ;84fScםw/ʼnMx4)2S:Ŋ$󔈰^z& &A6Gmd/t?n?~^~e\V÷߽;F}?ԞZ9]n1943lj/|{/>o/a*;-^ :b\rC$T5Q }-[)[)C危Y1ۈUm QQ#QcIrRPAmZc0*1-G2q.Mei .O5UMkXXF1MAF[U &I8V + 6c @fL2@6VDoUޕ4Bwz4`=~j6Sh٧Jn z? }ndmENbQȖaK5#-j!Z: `P +ZJ1v J_Q&%.NE4Qf_V0A8UȚ8el47Xʦ| d_.F# +!UֻA86M?u἟8M|jyQϬWCx9Q$OVSK1ekH<&O˜c寁ƫ;gPr^x{6e\.[s,VR.]hs_v嫙%{p}*.ƢEg,_<SYcs#ׄn{ +ڂhC hR{&W q];%& tСV݀Ժ'Up8AzSMvmh +*mje&mM#^A.Z!0m5$*(WZy0p,WZDKYԗ +JEk J(yUf +VIFob\aicoxm 6KB2+\>(a@O]U{;#ZAܾ5ZhoJ/'6a".dly/g/ܺ뤅ƞzE2E +$})[۰ʽyjwXVƙo!ՠ^iy:Yڄ1LN& f܎ꐓ#uy8BN|٨CLnJ7oaRaH\OME7A6<yiL`[UY1<9۩]BӤONb8mZc6Ly +p꺘2`9JcSr̞ccuۻ&im:oǻiQA.6 >tvj"U',{+ϣ6rlN535THRO7~=3ۦ$E5ʭoQ*usWU:NSNHwlA~|S[{W#D +dg"Vti Ɋe/&㐦NۍpTf"L~THq~ *>O2*@-gzFJ`e/S#= +R͓2?ԮBw@;6-ZgGL&Fm}Yt_HmuբͣvPC3`-9i9y؏k0Ε{g )1e-1l{pI럲*vzvz??߆ ¶x79iTQӨy7iA|}j?$UE hAwds Bߔ@~N + t!$ wKtj%n +|5]Ĩ1p./q e^W}PQIn9i̚Cl=d:QNը ){᜘;/ €yHk㲰ӗQI/qe_O@z^cyW%(g6;CqPõW' +u@ː #44$ TލQ !6 +N$:hG:PLҒ*)%2:Ӡb;g>0LFȔLiRi|D*>H|1Jg[ zߢ:cǷAP'L҉GO/^HXhR:Mf>x/᧑ը!kH0!sIs(U$42Q@3zQ`g3Rcu$xtlp8m2H|.`D.Ĕap]_c%!%aYW29u xO3;#c@yfc=[tc&6yP'<ᅆH0!ڒN30wr/QTniѣ<+Z (k38BkQK5"}.hA,O4Rkƹ4dFhjnȼdZp+a8 OA R>8ԱG]\c5.Z5Ġ5r&NXu4A-աPXO(ıs922_H1rS zcK%SC= Vep^^=4rA!Xv\gyʊk:wDaEϖ+rEo]y`0@8%Xߏ/"|xO)"o6ի.^|+06EK 6o]6֨ W7~şPhHBMLXA mϋg@snpxSu, {o8͏u8`~ut0ɚ0򆒷f9+$õ[ ]KL'>q*J&/;SJHؽsB,r3$IM~e_r l︡7%NkVvpf}FF;䱌#_˔ߢg%RkHxjw~̀QJƒ|Z(V3 }%FϤ{ |ͬ" L<>Kԫ(A|.VY3x Z$G +!JE-.Z$3 ^*_1J#c XBPE~b2|@ N>`w>;&-zϜlMyǗoSWaW|d6|.#\X H4Ԏ2[w9􀕐3|p0|~녧'vpjo +ZQk ~}5%=,|֞_H=tV24c܉$ʭ=Ӧ;X5IS@& Zoۉ4',g f8GԤ_ڒ7- Hp +Q3ڒ43DOYR^`5eoiz.tYO@ўzF 5f+<)NL% Mݫ}MVT/6nz'dsb갽 x[n6z/= kaL2M. l6yɀ4pR(НZgdV5zAL|fp 1.-HvK8@rP=~p G)"]D u$?9"\y + !b`x|=) yTM6@Hs!Xko`s-䨿X?_SN}@/32@9ڒ|ӶH+H>MiBS֠680BvU +]e^zxN+~-!ἂ=W>3q]d+@#ݎ&+g+0`qlLM+]hp}rVO=Fs20m郇o _/CS#t"٬9F$;˥Lɫjn0uETc~<[9~@}ME4OUV^f=F,#7|g%b&|Kxm&ѩq %%.Sc7FQ@D]ظ,w{tgΤ2: I0bi f%gv |Lx. |a( ~=0PӇ?H.!=By뇚`.syG(`CU>KƁʂb,I b$}Yp"|(.VH/ԅ1L`y_1K ^Q g-DD^19S= ijLJ^RoJ{Qj2f0"cuÈ(`qQ>eD[7N_^IˈKkfat2E>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8678 0 obj <> endobj 8679 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS30102V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8680 0 obj <> endobj 8681 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS30103V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8682 0 obj <> endobj 8683 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS30104V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8684 0 obj <> endobj 8685 0 obj <> endobj 8686 0 obj <> endobj 8687 0 obj <> endobj 8688 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8689 0 obj <>stream +h[n\ǵ}8.< D $n ~hr|z5:M^i^2԰jz5|=9=ՃNgI$?H?|!Xa4Lfs!BiُGR/%PZ-^xſZbnEoԞ'cO5 HƧ/tBuDҵ{e L!FUB-ׅpV/bA6,K^᥶+QEA#Jh!j[fSOg0?*B lH)7HDғٺTlZŮgYIF6xUc"ĭZY.0]'jHEqa^:g`?Åf6yDA9tnꟗ뫻͇cm޾;7C驤%o]_b*iD7߯/w_7f5`7Ƿ~XBB&X}&?ܮ +!]iLB!" Kh)e llr "2*ҰB(N 5wG 嚈TJiٺ:F1 H62z(M*c ؛+%Qh幬hV%<\{ C"jvD2C"z Sk,ITэt-4~CEiSrَV0&"I7$h:=n1ߦx˸P-ntSC-i7bׯmd {q2X6*Tmi~/mkWG'@cpgӀ^'^=pֲdPe -&خ ppt/.~VqUP`fʳrKa_ǜN"a+И)9N:2 'ϐ`S`Ï?ٛߟh:†u8 d[T"v×@@*鼝My V}XȽYSbeR8lM wL, S2Aa{O&`n}fQz< /n|[wûޭoH|v'9q^~}>n6WٿC:(<8(v`xX)hwnHC [EfRm𗫋w?8p}[i~^^?_|7vjsY-<dA?f}Ƒr7+v0]~[A#i1AH[H'*WìG7 +Fу\?pH)sLB*_(b%T{Fh {@ 7&(~z-=iç >1Q0L7 pad(E=;xQ"YSGiʘHn3gc21z=K`]JE{ɔtF&f +.zސ\_ I{v?SآkCq󡩁mOjHUGL8JҐaa! 1b{"&97v0[Ąi@, ݕ9dvݧ!"좌L՘}3ÞPU |>tuNְj#iv~Ǟ'X_K41`̗怎to?\>A'Y 0B@2W~EW3Luf 4vtA` qbvMVWajSy :N |4ִ>r*̏B]er +sǰ]d% xXŔo.n|1zV_o#}kM%-Y> IaM@T&F!9ѣ#c}oq&u|tcO%_E" ^EK戯U~~4Hr9UO4ts0tr1`&t<~H/*⠰߱t/.yĿ6wzHAwDz +~d1t@1HâDak0'Im GaJC۸SE~jXFȃ#$Oe赆Mzc41yx.}P=ʯxԃvw&DoE$lO~LP.=[|r:ANz1SG64=?T~U1%O,=zOLb(b*>Pp/GPP+/^yrG'f֪.*hWNR~6VLqa"\?+%z!!g&(m= DtiF!]Qyw r!nBVGORLU:~, S`2QЩzI$i@Occ8hu-/bng 0=Z/G!@QE~X~aT$͠%r0_)#9aњ'L1LIWOcJ8Uha8zW2IBn6=䃄N!lspn7"|^N'-|i +Et[(?? wK>8rjr"Ozu?h8p%I|O7-VC7GM=^N@@&gl]`QhtW5ڃk,b^K?/dKrh8[_[l>|d5u tX2[X 9Y߅EUGGWn; ^Xg8sxo_|Hu3DR2:s-Ak=ti'wэz;p+0LcYG5VɼYuFS+Jꂫq}IoMysUM/@P3 +\iN_P# fH1JtY_.7WO/gtm%}&z9N^rے;@>CuڝJޜ=<_6IJҫa@ 2Bа@i ?L4E1VRRggzӥuwQ\u#@MF'Y/hEyZ +endstream endobj 8690 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8691 0 obj <> endobj 8692 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS19596V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8693 0 obj <> endobj 8694 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS19597V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8695 0 obj <> endobj 8696 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS30105V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8697 0 obj <> endobj 8698 0 obj <> endobj 8699 0 obj <> endobj 8700 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8701 0 obj <>stream +h޼[YoIr~篨Ǚ xk, 0d/9%a%yfőG5Dz ȸ#2/˧.^\^.gu1WR3r[a\PTs%B>)„A1f&6lx.c z2Tiёh›Sltx>OUWGEKCV@@'z[sߕnDim;e>3_[A v\bFzs-t%$4/H㖌[Z벆\kY>ޜݞ)Z;ag2˴|:`"6OKkB^3kaaisswίZ}F+X u9`pYmH؛[Mr<ob7<-LЦbo`P$ k 1Ö5`U1evv֮oYMvvM=X $ıS.ANo&"̅TWZ7&fCj +#iՁwx : qƅ$D慄Ͱ.p?;mQ=-ìK-]}`o!'M J[9O +d.Yx oMKKBM OQ۾`aI=r,."`41,m'IZ~l5]!#DyaaJїhSL|fk뚳72`5.Mx7s͔2kKlMCN vޑ < +xUF2hNɞ|cT|Ǫ!"խV'ignd" +,L0= Mk%Q$Kxq'w>b~\kZȿjd?\gzC>hhf47 T Ȥ!@Om<}f/\ zkH!ͯl0)d ċZ+6%4T1=2lK +DacϘ^y9}{5F +e(jdg+p,Syʀ0+)z2t8K^@f <3x{s7>WYdu ѭA},^/i1ΐNS@o5WmK[&CScWMF *g:P 앣iIG KS.T*;ItiYTlS8Q ~amBaaݩz[$*. y؁ArLA7m?vPKza`'iNꢆF}D8aߖR9(7n[<^ ̢FR!QFoZy>@gS@,N[viv!l_6 HvqFWSYHMtӂdF0kjm˙SwAs<vhI71)}^T4Mj%=R"aH  z둚k]Q]}鞤|T:FNY"֪ \e+JZt8T4OvI%2u\;ljVڸx9l4+ GШya2 B(աS&{6iN zP}`8G=k#zkF=WcU|Vd7W0Adre*2dtMed{j@]Cx"izOaZT[&^vq\k)Gu6lbO!urVj;\=ĉ,C7&Ev*S۫G6?c^ iے +.N8}򥲟:<9{D:7VٳQgF]`xb|g@*R` ^ 2RSzEa5/<_Շ/7?g/~k {=Yx! _!t^o|?ڐd}g?UÏ.LdAY?ru8|||rݫ?_~|{8kۈ, @>3|}akr]f +lȆkbH"Ub/wThW*[ ɲo };6 . Xc 0%(Vw1=g}cL'b츲/L~D;NjǸ9q!!ˆlTe W)DL!ɚ$_^[e[e]5.6oU85!K.?5UT{{5zY^M<;Fh&XoIF>eH9pCBOZhobFIǶ S߈ɏJ0%/c5 FȩHz=D^6T ) +*+ yN +a20w81C{M|iU Sn!! +$uGe`Lkrv`5R2` d->'CLr4T@Jb鋝tGJ% ͼ*_)} d8HAB,$~1L\ͬ1 vL'oXzNMZj`g(Thʃs}im1|艪DXt #4$Z O[131@&R|:$-?b<䤰>dU@Q_kїKsU]p4 rw @{1 +endstream endobj 8702 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8703 0 obj <> endobj 8704 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS19598V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8705 0 obj <> endobj 8706 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS30106V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8707 0 obj <> endobj 8708 0 obj <> endobj 8709 0 obj <> endobj 8710 0 obj <> endobj 8711 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8712 0 obj <>stream +hZYo[~篘G2(G/@4i4XS6B! -r+Qy:1JF\U2l6R{_ṱҁ6rR%' +.;#U0##  avQG XrL٥dpV5!82z&it`V- C"D2cI ~2-@3@խNgMgLfbS"˲gW^R m'ȓ&4a^ʀN")(ڛ\8 +-@ ?.HP:EdTB(SXW5K(t-@}eMN2Oq~aM`-rvQ:dtPՓ9\1)Ȉż˦t +ExnRBHQ*RvUR#uYUВK0_.kS؂LP+$] {+ +%%p Np{n]ͭALӗ3XdnoiN,L˚LݻuYRGě6q+7u]-\Oof=:qC.zd3l[ݿ*Uy7Q؀ۛ~3-HvD[my'$3RE6p(3HR͌$qz}v^NyCyo[z}'p:"NvSpZO%$HGwڡt:x`0ՙ_ * FkDrlpkg>6"Ď^wP|VW{ ݇<[I-@3Ħ+^XaBsȭ˭ @ӀJ2HgWLƑcƯ'ӓP@yY +ӟND4q<{5ͣ*6I!J gJ N_Pt,1!*8zk ;W\.4C#n#foQ?>gzdfi{>@!;G-T=ib ٧?x|kd!;#?wU#޼ml~sN>gImӡ@2iS'ΈJK!"-®A3q?{.>^# y-?nX/ +$v4z-k3I*[R+$Cַx[R:#|OH#2 J;my!)3xgM}q8$6UwH? c~0o9&@|t2 T)؄Q@5ϥ !F!?VyKA@VjCPކ,G +X ux'-00=/1#BE=4:ˮ;ϩ^4Fl'څUF&l,…)l4L{qOX +К/|]eaTg'}QWig{ Y-$yD-z C<F=e 5.BwN;ӃS|ɺqA>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8714 0 obj <> endobj 8715 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS30107V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8716 0 obj <> endobj 8717 0 obj <> endobj 8718 0 obj <> endobj 8719 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8720 0 obj <>stream +h[[s~篘GTrJ)9:CVH.RJ$qr)n)h4}g:UۏG_=;;Sή / VHoVBJe ~?OT8^9UZ_QKJEH. +l'~:Յ^|&@CV:[g3 Ihy" DlnW)#4n^繯3ǙZC2"C_ O/'x*Pì< ?hUL.P2WlW"U%Vuϼ/V 3`;^0]e|jE_/miNw6R!GAhR )QIOc|"tiu=^;J?GB; Nxe k5-N /5ID;JɞxOóW'W/NCU FpzUikѳ^ޜ׷>\_ G?\|ʄLV1~xX<-Z ) + aeJKX% 7mm YpW V"2*bpQ(6-<2$b ᶂ +Zk[WqjKq¤H66F(M YB孔AoZynkexV%LX)~!'D2CdIx൵: gsCq$0vZhG<5>2}Jn ɑC.vf7ϻH.M4ix밥 + +cyGH(d^@itGhyŭVyy,mME–КqGY0A&Ec< 66:eߎJ +!KϬs&G9籉[X/E6z9auC<^MysM[O[cYq4$ +54^1 u7^CXx$ms7R5¨9Gm[76۹/M[.Mҩ[7WRKo,0Q$X&ǂidp|pQFWn{^:?`Фp8Ik&Nņ8/nlܚŞPUx* [tny~n؝SU=Hd6ܮz֤a&ڥ,PEta,5_cf[|Mάe!OB-X."RW/K"y2V8|"̜&U`)yQ`|^[2K*Dawk+ĝ kSZH#3[ޑ2<?ΐTCöאʊG'Owy>&ݏ-*լDsۢ{n;%˨qp|y+|v,]&qΣZoh&l_o}Y 6┟g{TWzX4N==@rN ^x2achМP,q7"H.?,vsy'Xv:/a}|c'p nEb63 6!-lIxZ˽ T+C>JTBnWwTr#'X~>eT +I㠷d/d,’Eޕo _KK dθ '=mfDѦ sIA*((֬ T}П^as4!.}[!@JHn&/;[ ` KK-C8 |NFaM7{pLMe3 +P9t^4J^+B\@:< ã0tQ!Otxh]|G6EL%e\ [.a)>!*h>eG(d8mOL )9B> u)C]4MbpugU82mƘ^%A5,وKQM$}*dSItܧO-1Rcj؃g?k/<<]8v?~0Y|}sϏwo?o:^u-~~n }}|j緗RT$ Cjz"K?/-.9+C ׼Ww'JҦYf( pCpyv7ۈz`"Sr nz:C/9g_mŻ #,[5E~?ۧةd t.~';|-$W&IEM]#T< 1R{HY}ʥx\~BJF?`YDΊYmVPk&FW}ES2CI'¡{H{Gpx":`;\ODJMQqx4DgT. C؇xx"p ͹v8cNP\JGD!',U.E7? jB{' ! ǚ' )q4P]z?,`I +hH' Vr@PiW *~NZw%ߺZXJ{$ؗ;)hvIYA7U\Vֶ>))=HSoBɒEms3JTr)\J%RɥTr)\J%RG\*y?F; +s@T(4T4_,Ip_+T9d1峊%43`OQܣakQjg eX8sxJ dSGHN"6*W3R ۈAF<.㹣1{n08պm}4ΖPKR[6HRE꣍Jsߕ*!VQT%^xW1ޮdВ=yN! +NaZ?eƖNPS$QQ=8Fz"cv*'U*@V*R@0 Qn'Ze${;ŗ!jwUt>'7JȫmcW.x䲯)ڝ[ˉz~۹T>_RT*CNZxp #`qVa Y*R4AK*oq}C/Cdh?  +endstream endobj 8721 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8722 0 obj <> endobj 8723 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv37520V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8724 0 obj <> endobj 8725 0 obj <> endobj 8726 0 obj <> endobj 8727 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8728 0 obj <>stream +h[rS̥':l(.XɅG%٢lo^kpn409CʺRQg0@w_/Ξ^\IOgyaR!.&L1&egjzs6/Ji(]rR6(nC{9,%w]KʢfdKrhw>Ob0h*4 wM?'|ByGѦq/cw"CřD ܒZwa2˺pa y<bT@:kpC{Keu6&Œk-FӉ~32SďNblyZ\9MήDEJ=Vd3Ң]ED2ZJ6mZiͅZ}hR)x^M]ϽKeETE-XY&ȥ[ Xjl3Ò&W&mJ~z{3㕟~ُx3IOun}Xrz7}f)Q5j<{_W7?_={۫n~.L;0|Qi)Lwt@Hz(-W@&F->e3Jrr,{).l#JnQIӢ]̢xqMBG*eXvҐ74BiKvC%`T6i}CZ/oZ\60r4^C8VjO6K 6`11lR-?ZD%/ޕiz1`-5=x"~s)tGAfP Ӟl'g\`1h(FkB42՘bx eZm 2WRK;₭EM̂L\lE4_6^h8[A i(ʱM d#1JBWy&f5mj7C^c+$WS=^r1% ,:I{aQl`DdpTÆ8]T+gyϒrbufQ-,*ƮTܗ|RNkMSLaVfZƢ,O4˖=| 9=6X|*y~M3 hlqDg0i`F*s;2x|97` +&À ;pTtM@.%&aiصʂ P)?4:I:b;Fx6oiv̒}שȁV-PJ7hO.^!8 +m-[BltX5/>%ԷѱQ:ǫZ*JYTdِ\VԂ)GjCOO ziّFHWA1g#O8(#G:H$e#3 Xλɚž+gjm +b'g:^MZmO:cAf~LI;O<$sJd1űć>0˪Ijf`++%3=y2s:L_m{ٴ.$7BK ^>AJi ֖j4d #YLpͨmV'!) +V;b~rqɎwɝWXE?^FYڔF ^\M?Iyub2!Di +48T6&EHiDvDeD[~4Էbwl*ܰG뿯Õù^oՊ:7i؝dsn!q#҈~ZVVsMJhO\TpzR'CoYH4U6_W}gVӘݑ)|M2 j nS4@x%(h +=|C'QxK*jvh#?+R- 9 Zk +:] D6iK@g&'v\Q-M^z(΃C&=+t_Imî(h姿@&pf?`=+W{ ^&+ Y5Ra❂D#3eWCmqjcMHza/0֞;m8Ө W"Bs +& tiCiNOJo1H!څ.NaWG'n䖇af,NSl`G+m,?)G.cF!ћv fpe͐^'Op y[S8vND7]"!Qj柤lmk&Uݡ`xV)LuԴ]5S.B}5Gjvk^Oî(;熔RqHwǎbyR[aȕeUF mouQn~- 6nयڹAK*Izy3J3 %žJ8zdJ"vd5@mn4\]1/DKҺ]=r!at}'%U ۑ[s}P1-)J9tt/] bβ ީJkԈI13pGv9 @5l%?nf*[}kSk{K*#I4 +ע#Gq%'bCfy~LyM,_Q@Mb9߉o2JYHS]>M'M}(^|o3A5Vn"枫|}&QzcWmKWD+P'+Sd'T$.ťCzO@'/_Y7l={%^=+VgFLvz9}^=+CW P',٫ƔA@7G.t ^.\qہ06s "A7)Ƃ}-נ=j=x@8(梗h`BXDJ dDDRњC_FwO߽3tGJ +N9YEV7s! SyHvr=j:=0nwu5qyњ9yjBxFvK&~FAOnJ\qm|T5PDN!ҼXen|qt )VT)hGd5ۿݛ7>ޒ_G-؀YL{;}dibp\ÍX7۪6k"pKT@|"I's.G}h(#rPL+ja04Tu>>ʆ/kP*OR6`zV(gvOM^߼?\ջ?E0T`]Kp.۾" cqҠQX6@#XW*3 XM?}Pۆ .mH4~_BOPCp!0iE;=GO^>:AS)=%(,(|)i u=b6up`"a9 +{41 ]zh2 س!_lĵ6uOV{w3]$ |Qbӆ@99d܌uu + Ⱦ{Ik)iF_ ah6{9+:!G}cef$3N[9Ph^V3b҃O7+Ԙ xKc_?ȪHSA77?߼ HA2/gO">\1dwC ؙlq?>([Pkf6]?ϫ۷w;jӸ0_1#`΀L[ D(LB>Y un#&o@*Nd3sFެm11M}сo z#oL3SDF^*#B rm"/ }*/q^mdX_^d 9+r9];'H> t"eR}XANŵ=i8D8%Ft-;FPCL?}r}ILȐXV(T;e΀dNL&>?JOѴ$pNb) -ƼHmCG}>gJ㖔JO== qۙ"ǟ0jo,<7Y@[;|-5 $hWڀ%tؠ;шMVL<&|Dnex$I0¾/aw攩Kߘ_؜<B m۽82t9;Kd|S˚?61,&fǠ[Z؅ę{}ogSu#do}39⮣NT "zu_~c{i{u5]L] dfL?G.:.- Ă=6 +H8>}p _O4){0_h^@Ɲ8=: vMNx.@ 0~C6*@ NjR^jnO]aS0cJX\SHHYr6 +Ն`Po:=ߙBeW`Z-'*wE 2JzH/Sv.gO>y\O.Ss%_u +endstream endobj 8729 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8730 0 obj <> endobj 8731 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS30108V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8732 0 obj <> endobj 8733 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS30109V1.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8734 0 obj <> endobj 8735 0 obj <> endobj 8736 0 obj <> endobj 8737 0 obj <> endobj 8738 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8739 0 obj <>stream +h[Kd`(|p@J!Cav~jNI{gW+Xq{!f&d=*>_//]^-7m->Ҭц]8k]\.Oкˣ!B7zHCزGDhmW׃99piu&'G?~״[iR w  7M=y%kB O2<ެO;C2)5t)x5x*t)  7~>Mv%<m";c29+`J?` G;=)əv b}R+k*'oI⚖񡵶XZ˻닛 4?a~ͦLQt~gȪaxd|r%YaIQIY/g즙_A7س?~~{O˳d?׋t6<{0Xr>?^u΃`5cm3z-٩E5N#OP3gyH44L-"Db051Xqpr /%N$HP1HqQoyp䇡ͭTek|#MxT +)Tdp`-l  +}W%shÁWWn EGQ|o'??='J>~z@S6xS ESЌ(Z 7{! < n߬7F76B?2)K'kTp2"qdAu B+b(&p%øY0iW,V=^Lsx=a+e"M1MxVl :E0u)חa"ƁPސH<uỈq'I gЧNl\c/ a ~= Y\)mikRO%Ywf}hYOA1;2 $XfЏJ +M~,F$Ɗn+sRwkY6+7 @~z rƍ9e43.G #ZuBy',,ņg2p3^}x=3A g:f:.II@,2pUCwI`t &.-#F8 a((,eJD=`0 Ax1lF ٸ蠧Įe۬ʍ$K JPDq1>J2{(7:re3i2FKu^v{F7V)Ub Sd6)a("1}vz`drivzܹ5Dł(vEʅ3"xuw`Glik 6591 8lEճ":z"U^?A}5 J6f0ݢ0%LDD;͏tebS2 jSDMqvuvi yQ캛9f<=߰RFT$zMU&/COlrQfͩwݳc +ah:qGc%Gbq LkO[ur9oLt7ǚiDJCOR}Tci>*y,f;@L4(7VuNF[5i~3g/t|ܤx+lsN)l^(8(J%M9(tMo~u(m cIq'4Al;Zxz}!qZt4./ B=۬ٶ.O5QpSpתrip5!}af0L$rVFaI`&M7'׳5mEIlr(fʍC Y ЧkUJ9P;`.r>I x.zTq_mwO;rߩ n/cd3BBYI늒Q_Ns5n3+^SRCS >'w&2^8F +ZJ<%naWJDF4iOҡ,L,:SZ +={в_ŋ큃sAj٬ GAV.*_smtd6,K |ѻ<ˣ۵&;v}4p7fj&6(eU?*{캏7$+^ ߇r@ 2"Vn PI^3b<Ĵ@^/ccL{i11eP\}GO^R/*nB虜~!c귋bЛB*T:ǫάWݵ(^͛~حJp>W RWcZc1 +WQp<< S{Uxmmr'_D;scrlu\Y@ mtnݍ\8E/ |4'74^h}El宋#o}E7ow7?^[O6ِ25=Omx>)ˇHWS' ff|}/4()V2J,t՚T%Ib jK#T K'v}0R=09PInRMg n:PiSZ)])+qeCܣoFZV҂J z3eHm_N0'm8o.(|NvgaWǾX/ݦ}7[w*jo\t$' _ˏ?Vi*7 On1^ ,_sw[~4C :\tL{2^ŏC]f*?C\(+ĬC'>A#-!J|;_S@T~ 5;)p㇯t?!(~2|;+#}ķ L%֙\p,ŷy9|;mog}ķo- +endstream endobj 8740 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8741 0 obj <> endobj 8742 0 obj <> endobj 8743 0 obj <> endobj 8744 0 obj <> endobj 8745 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8746 0 obj <>stream +hZKo#W2Vw1 V]WZ!(go PWnŗfc7,s +!DiI %~XR/(eR.W^:jX @97RzdƾTGOZwcdM(}rdܼ^(*(({\kjĎOfyBiCi3:嶕wI316ALZ; Y'ypS튕-<*GP59rh֩h$+-z̯-5ڂX'7Vj(#"|$9g!]9śCV2IAfth12XbCx> +QBu\*a dzj/8Wt7nA&LN"ڔׯo7WY|'x+xVL]BKNK^b +Wwon־~up*;M4q?DpB o,D[%}v|#L[-Fj^+FTI7/']TthԒ`"5HPִ2h .aL[Jk ~'it @CZ0ࠩ462@̘hlR%a>* e0 B:I*LC_K?g#< Dx}$@(|MmdV^dHv~Fr#r2Z$"T:r)XB+^DQ pPA)r2W" K9P&R'.65 &ȱ> ^@o]ѣ@B +e sDH* SãMQfz#j1J0mzQGpρ70 sdT2 9]g4WpO~<"iu&!*} B v2"L{ɻUѠ%Y|)%n$?z6Hy|o^xr33 Xк!nV=wo?4WP_,jq)6߿Gj]Ҭ/4}u޾Z^5&xfu/ Xq9Rm'/Wj +rAYr۱Q[0}EJ k$o*Kemu +*p/q]TT #JF}R*Zཡ:#Kf߷z1ud^Cfj Y6,T&eX6FXÝ԰;[PƔ2lKWEcɫGjY:(E5{SذN$’j;j{KBlX~,#*{X -{'A$z2EwIn +ZpGpe \)#W <8USA"@ejXz=9P 3 gX:_ב9p @@$c 6҈bV0N#Bx):} VnP8Dd ƂP8ݝlC(E*hMXn1X%y(}yc"7%4bM4Aw +L$`σJIpfZR yPYCy\g8@=5j$;e!3ynNu`gL34z~RWI 6H s 3G$2g n 7pxTig̑9xx`YJ򄇒QJV[)* +]Ew7baC3! ѦMsXY6Ǯ[ i^ܕx \fct+0n#ݐxb}(Al܀k/:z@>Qb /@7D-aTo/0Qw$Wh/p8F`55oO‡ +.Od aen&5^ѐikW]L1< E s + ;ҏY2 ^U> mxa(=ӱOېV|e}O}0XC#ԱDÚjzt/|:Bg{͗gumtmz3n?A&:y>6氉AhC qN pL=[ac/떟tR^{ߔu=8՗SSM,P#zK폽[}Q]Ddl11p5ێbU]t \_>mgks8t|bLk/j]r:7K0]L=GTR1d~ojCnz,VPߴId~~/Q1kL? +j?* fV.Jf8{N8aNo<3BRpOkuTN8q2 9Wy~unn@B~Cn]4os @Y44,lp8`TTY&yƛ)i姽:(=NnfmdiWfqf-6 +endstream endobj 8747 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8748 0 obj <> endobj 8749 0 obj <> endobj 8750 0 obj <> endobj 8751 0 obj <> endobj 8752 0 obj <> endobj 8753 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8754 0 obj <>stream +hޔ[K$JIPK {0PU;ȣo0/ff!3O݇N^i|jN~yZO?=uu˺Vx szNҊzF՜z-qGKw,4ޥ1󩔸:F x5.28 +CF(dpE_g#ͤծyIQ7mF)t_5cƏ#)5~pXhd >z^̊ cI0k;)3K ,g.}_c]c&oI}cw 6r\=->NK,秗'Vhi~y)ZӉ,ah +i~>dQ)Aa?}6- FӖOl\Z}ç?~y?aSNC?K,׿~X#zJ NL|x?y3wٲpa/|v֖htZDyi@).kuP..f_sxxR^TT۠'56Coɗ*e%&OWu>;;Że t+3?g>n 0R+{h7rjRyIqPbYu_}="1ܧN]rV͠A`[ feKTB :R]B dPgJaSj0m/u`-Z"EFyyq~*-ysݡxut7exG)V_3.}r-֋<@7+z2nS0Ɖo0}<0}kIxR}6? Btzϰ %WG*&669 93ZW?LXB1Z/0nm,[ 4;> wv{XwQkMK@ NʁjCUћxxV:P15Fyxd0] 1#btHw +$dA=:*yZ8&\|IhPƪü84ɮ/|]=RWRՇj2Y>.-OAbA ##}m1<[3Gzr +bqQ( p=; +ohcd :[h6͍EE-` +O-Ʉ-8Ypu@'VHJOVЪmDc^U?]')Χf4e +!Z wu}p7x!qcKϙݵQ'd>I!wϳ)SpI$U/4&i$*N]h/f HR}a! / ^UĆĜӮR:!5n_'p!M-Wƚ5e =ȧ 5~ e>Yͬ+^YTM3 dDم5<0ߠ0_tjv[Ћ6V{&i`}N) ! vBͶӋ孧Dzޫ4UvwZAe\HDM-NT's$$iY9bWj"^Y rg<$ Nl8]TD2i1|RIB'7,JY0::Akhx[5cNoOi¼aG=HDSư$!CAbIž6HwdH>QI 7Tۯ.^a Q#f܋j<%8XYh4I6-[9 em׳*,BgRW7UJ5*[X5^ވ!;Em0~ʃd>Ve%Q%.y fQGlU<1_f}x1%ClU=×ӨX{(<sѭ +Ǘ? ;w}\9.O=~z?~ݾ|~-; v !x"<̋HEU0 QaubpS_ 4ף!?(?"{8P;B o_D_X O|$l鑍i/"ZLؚfg,[j@Y- R Xޘla<)ǀHe/&C[?\&SZݲ̤z2bM*ՏԳ5*oV硚hoWUGozȯtVGVcj*ILlS 8Kۍ7VIv8E Q]8Ռ>5jnƍcd0ɀW;˴Ai˻3)u +Vˮe,}tzrEhk| 6x3?H zCj&JlVΜ`Hș^ya  x6)v9DcMq@`Zxa#7"P{R]rꎢҿv'hӬ汿ya62%wyA}Ew=-ʰ%E247cB1߉K7\X̞[20=.CLg26QqvI7 0M%҉itD( ߮t2+7Aoi@MebuTޚApX {܁D7>aTw_Y2}mMYboi$~&Wl'^iaܶT=ɪ4ѡ]_YW8.[/ԃ]ީ} *wa{N)N {_bhCI=9>X|.s(m4aW42LhNk,s23v.RI/Q9y2]- ڎ;IL!W)!>LtgguEZNi,ݪ^}f/d4h$6&c31_W I؉IpZ!3]lOqIUei־Mu-%F"ߜ~xܦ+( !RۄdׁU!?-m:r:T= *^*,Wuݛ#êm1NP\ S%󞓘Admesz<0l<'WY0ؤ5<`L:޷I0 f8x8U+%aFe4>͸+ +W!r)pQX(JƟ4MV"rNӑ*]ӓ6~QfEQYpFxʞ'&xw3;wb@: t$*$mcE%nm'/;hjOy,Ao q9{^ur,EOj1nQ&܏#2rNq|U] ]&SdY=qqb+Fayo[qh6¯r0Ĝ iYB_Ts0}E}X5򓝥CT`çD)YW{{w(7FM`oBuAeGȋWw#-F~ʼnl]F(G5'z¢y'ς6QO7wij܋8%:ښZ'Ų̠2'Hj(70?۔eFP*jFՆ؆M\6"iwM FFuIm5P`XL0nꥊ]MrG9:b=6qenqyZ8 K! +1ۗbA"=owIA 6[ύ1x3`z'I";d;=۠VlB݊A<JYA]L]첱WhXR>4 _vp3Jaf.^[> YʤKˑm~/t;d IxᲔ~tCMlcj7},JH#$\6ɗonW::(DdkصokOjt{s4]{̹q_U"+ɓl&N! @V"U//"+~٦T{% Wɼ>m#@qqc\ܛ<ذMd.M9x>%̕t(o5Guys,I˻d?G2^|&bǡ>n4}9nr+nKv4Ƙw P krVRe1 ڰ0g(<7>ꝣ9zHǷ M@s(EJXcSk*}1Sfxo&Me㉇qWl 5i'vߞ5.GμmW"C]d8UO w͆Jӌv/3l{ϑr|EhR$;H?p4u20h啀 K*eG+){4=2%?*6ʣ<7X Nvw/g(䠠s^gbg͕D) B_ՙ-lHn +y7kUq6rN)ex'>(`77EyXŀN=mʌ3Bk=̕oˍkPcryr;/B ȏ4L%VE;*tWET6gO˔AꏛLB &Mڀ{u){صwp|_oXkpCIj?ߟ?~ w|z|݂DڜJC PMֹ@|s+rk"gH)q'6b&$O1he_V7M%ĨL`MH۰ρՒlN:H;ǽg;cG)!sit\!wa wISTSSM~Fhܞt,|*=P!ƦP[x?O>*z KHKO otgD&< -l~Tn +&pO:_ >d&)+JsOv IMx1#`sa ulf? FB9rjИb~yŦXޢitMS[{+r)Tl&KeDoMSq䁆(3]s˃h[hYk0\%C(eSg7.C改oM4+OGm͝=hcw>>W4/EOzg;b&iGK,ˀIGO_D(Y +endstream endobj 8755 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8756 0 obj <> endobj 8757 0 obj <> endobj 8758 0 obj <> endobj 8759 0 obj <> endobj 8760 0 obj <> endobj 8761 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8762 0 obj <>stream +h[K$7rcJIP=lX|g=hgFګFbVH{1d$_<-?|'|֖ \VR击uNPzm yb=>5B)%(yP\ԇc\Un=}ix+k1O)[ERxo:И=yCjXޝEF=jm~刻k_5ؿ8تTq}S8vWNRz%WsLXVa~N+p.f.pT]lyKmkpWVG/yן>-_k[뻿@Ƿ t[6>J\ +ZZH%ڿ}?xoO?6|Zt@,ܒ@ƍ\kM)\ + +W>>ΏF҂'`?M׶h3\LjAOE(3u@b?Ro]e\^8$(eK "Ԁ 6܎UEgyIŻE&ȋ& ۍID\Fُl?~ uԌ{\q) +|lDVR + Ӏ BWƟAG8rtCm_~|§L4\:sFיe(}ժJ4`17h# +χ屾('串m#ET;n5wQ$᝸*ٚ_H{ %Q6ᅖ"mq "#'^<nGҹNjm:oúe"2p*f5}N!ᕰw 3-&ܾ(wHpS/u2BaTL3c r]ezd7_P,`$1xZrt;fb5d6$ՠ=}kDp+8l؊b΄#x._F+F.}LJ[2%V܏Golq[S%<7gBjWe\$™x6 Yi+dn&1GSk$pC㸡 +> bGk +.w3O߾vޏM_aM2?y66dF|N Z/>$rxo|z}*ߌ͋yr@qIɉ.~f B&뚩P,aeL-p@U\4T2 YƩ{uʶ, +/uXPD24v&p,mdW瞔г; +-PסݛaM!N}d`hgNL9q"ô.KTTDPn~'-%2;OJkШ1g;gW?#&`X\]0WƋ1ePy*$HPrY,8L`5)͈V ovVFCp4`.?.br1ٻ#[igX^lKsoL<#.lãRã(=pfxbu\a>lM./ג@]%Y%ՠI9X2U(:ޞЋS nVd>z:4 "ϭT# +\ϋUY76E& +]*vDjUM@2C4Z +*i(D@ +Ī&z.$Y`hv^\,UYlj+ȲV}̬ݼb4z{a{}DA{Q~D + H$_"@:{D7sdm:^wֱ/~VAQgw<2w4(9? J4L'Μ&{73]穢ʺXGKY-s 19UK}!+#;ܥKp"Ao[  8#PL@GL vYO$$*8+i"ap.ZRu,~A@N[4 v1 xzg{GiEyBΌj/wTYC.t'ƣQ Qڵ]7UEW Djk)vθb9nK97/i>biǞxPvU|5m)Xc5ZC4de&RqQ}Aڻhw9]qtL~vptO>Bh.oï&F0#1p +^flq'1OoJ5yޛ=v^ 7O0O-ی<ss,ߐs2kqUU͖"N|am>ӧW-u-}Y +}|?ďmu%hO˛t.?>^qD^=%#4 {{Z,<|b]Հ+/ MT ̈ 3bw)I!Af.)a.NN42 @1r (E16i"M"yU…!ֶx @C3U_â[~eKiqE&KoF8bnEdFPyV)c\ZMy +`QH߭ų?1vsb-@+ (Z0 ,*PsI`%Dg26:i3#DgOK:˒qI ~ uW2!ڑ$nvqMfjYenT:hgY҆VJGI(sTt9<ɨ./"N'T"`fC%]+. q1uuX +R]+WOƦ$:d"嬸6LzC>Ӗ$o5{f yN&(v<8#l +1ab.uK +=Ks1&,'[u +0_wz𦑮]' +Lc "7 kO gyRf &v3]6$`2;uI¦`dq-#N,G H>72Ҷx2!3%\$$hMbrob;N#WԸBW iح;VLL! {FWgDFLM{"8\KN2lc̤=Ԙ&PDDݹLBO2.9f35ue+K~NF䛡ӟkOH1v+aF`$TG&Ay8Q%l4Z48bbB}$RLQwe:>˸%QVmX,k~ +WIB@00g)˖oOpt1p#g)߼81}0v$]ّ:f QG-sy@;2Ю⑓=dO},Ha|e?!9cx6QGـu6ӁB>bC>mDݥ>]g!E{z }t59rn~kk˼0q.(.W R5횻zv 9rߪQw$ŝ +\bΆNeQÜ1mc>ּ=+YXH aO)4̨z--/+P +_Ň+)Z'N-h]]*tGEσ 2-Ϥ{|mXkԼd`2vْ~O_>@F?=?_~yxw?z_7|xxOϯ>>F_vc\VX9CnjWfsSv&c~2%/7ILטbwdDDIT'70Ow`I>Z +endstream endobj 8763 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8764 0 obj <> endobj 8765 0 obj <> endobj 8766 0 obj <> endobj 8767 0 obj <> endobj 8768 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8769 0 obj <>stream +hޔ[[7r~_яRjً$ y0p=Fx%ɺg!n^b]*?߽7i48wi^ ,.^LliJ am&_N&`浴.f凓ڕ^HFrD8g@] =?s# +$Y}E$?d+ee%wi5 к֖%ˇ“~!5uv_aPVU-}Bn#p9͉WKZJkC+\ؙ`;(vk+˖D``silbLfuf5Opwм;qN{hݽ};$6p)6STmYlrJ&95d3dllwۯ?~ ߽;nžfe}_pNT>׿߽/~{|ӻ_>ۦO0}Me4e>o_mu$iP_;eJ㳫Ϯ>,'fd%x mX kmoBjo2t,g*{7(Klc2M3?CW~hMyN1soWg5st&a rRs,l2S6#q==BoSʚfPbЭl)ۂ J#HR@=Hob +ԭ-5@|Q` v粀r`)zZַM_%f9 󚐿4t o Û&~+ KP-Q>U3;ӶTΕgOs5[Ss_-غ5*Αd' XbSŗ9 }5јqAY6YMTc_[MZG/_q`L@1L:z`!PŃ#RU'/iαa"8/>;$4{S釕{v5h· /qQԦk?/f.\LW]b&$-T"RjlTw/] & +UPm ҧKUeaduZks0p_݉Qu9rUZ<Ч=/"9$rf%.i_D3$|FN(y7e]4纶OX{vz +WF`گ*^h$dbw"OGy fQ`ci? ~}RbՄEX[W +Ȼ5 ^GжTDO/%:ma K.0oatSEvŁؙ#Avݢ ^^2y-A%υ +0)Ezbke*PCwEm[9,uz\pzQkz-Ny0'd  iVCGuԞλ3Lo$[h4I[[[nm- _e'E9z۫[!uI v, +Y|>!%NN!?bu!'P''s`[J;7$5uc`d$1HݷXKRGY,3,ųJ5zb|.BLr#&+9cH3S@S4V8'$0 ++e QRTcĆpLai T M#fh<(Q/3W5YC")iF#>49Pq89Hym`S. ʗP`6?EX }*76u*NC,v qT7=+A3Mj"M8|2dG\ć XRAG}08~8 ϐm:p_/NS7݊ k.JGwQ+1Kyj>csV^Twʨʏ0z1%mpZ=Ď4Y6d3}Nf-vz4zؽ7a2ʑAʼn>Dz%0a i>/^X@M(9QU$GvƦ4)8ԈzNoW,C bGM#sߢDq#E:_) +_Kpr#"C1DEƒqADO fa'irrʉ1ԠtnWύČ@&W窱 崬nԏ5R.0Gn* 1#GP[.2)|z#yv%M4HNY"r@M( Gnu "*7Kf0B=@dN+%1 =&9x4\bvZsTs@!3BvC_N9)!AoZqU]5Wi2}^m+6/!)1+oO(YSzi/!:⥤1chr@fKG faʜo{-!C1ƜnCw57},TCψpb'La`^(3/)|FgnXNR^W&9V6!B*=+eePOvĔS Q6 ,B$ kP)~:RCIu(.BVSjH K{I89Df2Un*]A{3W'ꐸa<;*nTn =wN6uNS| /U%TB퇕f_9!pSx'27k +.RTrVD7tL_MїEUKIr`ʘpe e衔e*A̾[QqCHFir;CAARs&#bB0 Vb[qʩ{ZHn** ntZs ߹#h2MၶbDޅCimJpP?ړ9׵{ e$epא1N9>=l/V ҅0LR@1@"KQ(rkHb~@Z9ul֊7xn~6g=T:aM:`NuDS9aU*$TedkdlTKJZJoz1$iWT?  gIc؛ҾA MVB7H%Z@Ӂ`}jJ/d*6HiqBrIP 0|lgm4S +~GNaII^U,80O)@KF8TG@3˃RR}8N"[ Jw-xR_J|FC;Â6R}Вo`"HQ b :Rw +jq尉Q*C]/h0xWtâ\UqS]6V+f{ <>ίе rכ?+7*"-WJ]SO)2yؼ՚v+X֣aݽ[=C]wd܄wZ$$Sd}q̆1>zVpQ/ew.ΥOh]*3w"]U~y:¢s\eU5L- ,/d@^x8/Xwk#A@[j߫Hz/"B$^_`4`e*<. n" +Q޴_b s#k{:w!/e` 4jYFޟ<҂7/{*o^­Av]Y]Et4j5qBuBX?(sr+եxt8JNDd8Գg*VATqL:@hK9" 3zz"Ƃ,{>+xnHEcηicV ;#IA p2y}ԣxձ6l7"<*gIdzU12m\ }^\s +;TM&WUԋp,yY"`)ڌ\|nyazw%I]`硊Ο}_YFM6oԸ "[.l\OcK$ +)F-^#%nܮ>˜<$}z:S ?Ɖ}y9NV;}>A(XX/?B25ګ4a_~WCz'Ѿ<~=O|yޞ?s1prɔ:Uk Bm]|5 ZVrodTyEvJԚJvNt*AE4{R|3o켋8gBERaFrO; 5 cGTpv{:N۩`>W;d?7|_$3}9.BA~~,woвh +V_`ũ + \'(dzXq}L!_R 2FGrжzOӑ? Dx8.5ןN^HȩZ~ഺUJuJJ],X˳z\0$|}]9m.fvy,v\{uIJEC݆W.csMPGBAթ{@!x 4ƊY P$ǹNim/#qfUdJU5tF[Fsͫ[bT0Ҁ\,fneZwQ,Qnnvt{/53kJ$v+{hN_8S W1;O=y\uy&-n,UHeH:dQr׮ zp*|6)(6uEqCu*wz?,87.K`-%CgRmh!qRA%J}nX\nvRd 2(&rz1n |V8dGͧM䁇!vFwp|w]ֆͅ]$uHRz ]:T, խYoWc6T5Iv1R9HߤQNJ$D\CVAˬT⌥8$V:fDlLQ#څot`aFtғT%Vt B6*^q/9Mފnu}1k\%lT1U[^;Iv԰}PJa멫jASJK '+y~)o{X (i'CD.R" +MrE56Qd1QW +-/(A(E( +endstream endobj 8770 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8771 0 obj <> endobj 8772 0 obj <> endobj 8773 0 obj <> endobj 8774 0 obj <> endobj 8775 0 obj <> endobj 8776 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8777 0 obj <>stream +hޤ[KoIrWԱ@*YFF36.;bVD""GoȌjrkTWV3ţ/f|ͻ[;r3s&WbmR˓n?LǛ8MJ'(_4|؅C)(8F(y.Ma2޵nLޤ1d`?RKU }Þ4<3'wcVRYFoS8 :1^qL{Zo zOrٞp눓oy&`C1f7:pp5m,`d-#|{$0!h<8E[ѕ1/c c`yuL#4>KzUӁ:^*j_k3Ɍ)RSD;WœPTA9J$gBHȘE+|cBR㶂޲(JvQ.ZԭI +oV "XE?ZMq(ݩC$Ǎ GhPOZL^d#En5R SU 9p^Ԥhȫ ]+&*~\͢=~8^e<$ϕ*G]-0HfO9G` 2=("|R"JHW)fA@4Fm&[l適sȼtnr6@BdR-^Q-is+ljf*c󝊰\\e-ADMW8 JQWrPIR3j֐={$NbTZq]-l"e3Ij ܒ=ڎܿc|pi'/\3(<]9Dc$DUuI`#h 2a'CCSL$Yh`17j"pzΚ8/AwjX O fK $iLaRF4l9+煃dP4p>? _“<<F9-&S,1 [+uV:vvDȇʯTPvT(E Va<&ζ5R s_/Csb,=3a[ Jlp♫eUtwe.;< ,S쯜x;<;"Y-<G9f)>EU$C̫htI BT"FQ}簘n^&pyBm~ckNa),rW#tM$l>-(Z'H*7Tk:>pF? w &j/qMcǃ8B^JN.Gy˄_ /ŋA\ZO1ǃ8!6"$ofvl6{ 5iiVF&y~|y?=aty`VO#LeX8_gx Ϙ +d i~`a}=?/q0qbkI)g8][8(ngwer<6DZv#Wd>kadI5)~j:TuEH9VK)DXcVVZSSGD K?4$-ʯ<ʌ[SkNR +b![:}rr*v!yr?h,*idLs+p:WEb4xoE* \55, c;P2ը\.:JZ҂Bj|K%"lȤՄ.z!9mB,tL +O,-ʝJ2w;X/cC~6Sr~͹szwZ ҪV +*_K hRI,K^H/vIV^(;-N݄Lp`+ I@P$MgFM`jV[:WyeMێ^oYnvHFtC;]gLѾ*8#.R/Wx b@, ,`U<,uU!pfub/]seú$˧i^D=#yFBE֋^t2QWpr$_H'c +s:?TQ=\'%%6+n" Uf2$ϔOz$SgVIk$%ŖDr6IG f1kJܾ}5E[?B_){4Z={d_QՀLρgtNK=6 k`j" +QĔHͬϔ.u;OCvى&H{sg$NXN3Q(Q:Z&kD1\| LQzC,'7c|v e4"AW̠ &ˁc,J+KNՓk?tlSy'Am3- mWHnPyxYjFSQEfK^- i* f)DBq`%lZ,u@7vya3V$ִ-\YmEM|x|e_E/otʹ, M߫~+v=-+",>T?KV&uөJ_TZdd(U'>&rB4C/RD+_Lw$wmBfmv*.oSuǔ^Z}d}@JVIg#FpMI7r]gV/,Ւ(,EY}(EĠDіE" [v܁꓁;ѸfgQbx AҎ);e6mGk&݅o[ WuIߩA5>d?}f p }ȦfFr$LFhIWROb=9HtIʽAa%k#[3ŧ:5ZCtaԗM$ra6Jo^0j<Ӥ•KDE)ph;颾ˠAXDNsgG1\)~|z~-[;ý5Q_}kpy8~o^OXsu>aL5l'`g +@?"nXm`$0NCvrKm8ODe;;j7?wgRkd *-aV-RؠWQ3n?%7??YGܽ</Ƨ?a +endstream endobj 8778 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8779 0 obj <> endobj 8780 0 obj <> endobj 8781 0 obj <> endobj 8782 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8783 0 obj <>stream +h[K$7rI@+  a|U^H,}G#AfVkt4Qo2_<]_^_> +ՋeR%5\^zY/x.}~_א +ܮimXZ +[D(n]ݖ[*|GoS=|XSޥdRJ\V <moKlK%yE(d^0."7﷫0)H[^ڦpkw3HuXgBU>GǫsʃM%-+{eo֒` [;)3K gx>ѯvFWqεw/pCRv _tZbEZ{#P3Z|JZo4\7K$\B#%jŋ߀6/.-η>}~.O^?\[#ݺ^[N.\\j˧~_~凟>/0o~͗ǯeA]˯MKKryDzuI5^H$\p9P9Ph!%._}X",Pus^x[\̰7SwJAG,@eg4c116f|Yjܴ =ܶX ֿ`-m.Sٻ@%qSk:u%12FTIøQj%VpT=- ĠOBFCT)g@z  nn\3[[ɠX"jiJv n2WyG@;RvT*Ŕ*,Ų[PmAEgWy×T #r0k./ʥ}ͭ.,[!&pKfm Mg#=RBU=.q8x$REeK_ڞQ}o}$-zu44 }Ճk*G\LɲKlHΊ$J:S v_GT˝()6L bM,з VJR!(g~&E씧r[ v2 JȝB-T֟Hx) bmGى`ڽ70\jȀVv%g;\f/Nq Sr:C+ |K~H(|d1cq bm7\Cibrz2ZOrvuġeX[fI4Cߤ[A^HU@XgReѕ oXw5&^df㱝`A:ʘ&ECfm;~f62(olŒ)V(#Ifa v#g!ĂK!($d:GP)n0Ol"IpuܬZ9"&nSN)v~樖Sfa|[C &set= M6ϜMe8V!%fC-:?l2"k(bUfw$@i1=_TyM`/`poO;3Z񰷵xq="4Bo3s|Sy"Es]Rno;X z&wz1[mJ[k,L 驍Җղbc€6!ޱ9+M +?f,X\p\NLpָ$"I:m%8: j;S~,ՏcM|ʅ[MވN]qmm4biY!&_QOV@Pa[bvLA^%0]YM,G?k.>O*[&&D-øAQR Vc<SM޺Vd,SkoxS"%}]2uwt%zGihHbOmHn .0L7Õj抗q}4-eʹPWugVr6 +>PkB !onHXR7GqVa:fV¨Qh@NADp[|ν 0¾%xjhm]ðZdVԑt?!daǸzc4٨u0* `F9#q;t0"yɭqƔYwVr7jdֵNS{&{nMOC7:?q8-YaH )1CG 1cL}K'6XDd7%g>̋By{6c$=LPK-T?ho3@mD.io~0úLVE:&q*cل* Azi{Ti{GWH]牠%+O5$minsmn>r@#.6NZb@sM,f/Y~|Ƒ>nR>!40EsIv#Eܜo96\. &KF{@}yp +%cn+vꨭQt$*hb&OK>e (/G\e?r|oFM)C@F\GO~•&7~L[ܦXj5CC_ +[X8ԇ͘FaA~U)`+䣟WwJ;/E$Hv `37ISny%R̜{; +y ez3K$GnNAc+Eq-]&UWUC`!5L,FfA8+bvߞ W&P}P*}|LPRC?;!-(! +B)t: /$Ɉպ-z)fE9$*Ӑt2&b1d]"׀ߕBc복Pisty 䓠˜;M 3LN<"_Sd4N&el[OQYv6L<'O!afPX;TXpPt4`\-{O{fM'uӎ^|s=Rod烁Z)H 1@'t@h6x((׀wCJZ4չ!$l47 $zs|iJ23QfT7-9ם +6XO)Wșw`?CdJgIhίE|ԛTT b_J}!P*e"ԳE*~)@ ;$d g'KF=%y:d\mH0ې`!Eg!΋OɊkT'jAEA(3=80dFŦ{vy e( "HunirøS=/$j:4!R ̈́Xyl١u֘u2^[o'i43hQii@0y 6bvs9Zz1J~ki_$/:bfv\{W# :%ɤ2yGldJϞgL7ռ̹ӎ>~Z{ܜgґ(]AJ 3!;NIRv{sۘ?t<1@Rܒl#X'kؤC,vB[7{,ݞ(Sbi:|qnu=F1ݔ<0h5{N3]^@w +q|:W !,G{R?do̶&k3kfl&׼KR_5Y8 +XIbH=%$ۂ,1uu,vLjN{d aCnFO9t3+gaeg'Ӵ!MdWeOx6AM4`ߤuB"tOOͮ\AWzǬ^ͪ}Zej.sO|"i&4۵dJK=qP +Ţl^oTYgePىMp",w{3&J]2\ m%R:x?6N3Km|1 U 8-<^'s!4垛tx/|@mmQI-5D)k^g?wKkw)JEw _}MVgT]fL8rp$~&RZ2T|XgoGh=?Jxkמ.%tkhM/|5zp5!E%Q +_~×;.uXgwsI>:S1Fb}bPTV}MS1_n$ +n5yB"I狛b) @7Sɓzils41n]cք,(S1k\֥D I!cRɻ%)?X阘n&ݣi鍻y ³h==P al6ߗ V@vͤ,eC9=j7Tt~v|xpt\p 0sv +endstream endobj 8784 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8785 0 obj <> endobj 8786 0 obj <> endobj 8787 0 obj <> endobj 8788 0 obj <> endobj 8789 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8790 0 obj <>stream +hޔZKϯd`(sdrr +V6,9O=IHV b7{~|=eJuPZo? {XO|.a+gl] +R¿'k|LXٻއ93uCu4޽; ))DEzim>rNWz5lW{;{LG.AF\\=)Ƹ^ evL-OUrgktiБp -HݴwHVxZh;pw@U ms{K}z<<TEdrv]AKTK%Q+V:&H2$}" zVh%am^hfJ9l(AZ2(Ã9&tHZڠl!2ͻ_/ۛByoæ+Odm84=;؎ڢaoϿ~O.'e| wCm* .D,–U#LƲٞ .#Db+9킓 w|^=x.4\HBڷS=pj"{F 멍6͕GpN=Ԯ1W~P +;$‘S@Lt+t HfmAfM\&kjW.'inOU?cgG|p{dF利uE$bӰY#h=9,;i@r]L,RɈb8 3@!anZjtա)s3eLRM^Sxw6ut0Ot 4IU EZqBt$tݧcA>G)~CAFZü{=:͛#,EGIC&Σq-^= fpF.Y3-gTn\ "WGdgn#[ԖIc_[Rmʣ0[WHxhtXTdH|Gf6$ ?Q㞀&?5;nAx8 8H Jl@ +V`ptZH FX@'jch۱)t +1}c{`$TQVdRk/MtW,nZ%6#`LޏB h[cD@}ĭ;l)3nYqp1Zs&+&~]=PSmwf~o ug V>bVW[FpEܮ =F/bhZ7< Cs+(,=,Kx?Kz'/]Ȫn'c5¼} 7hBg>/Sң(AkFRf-ŠbnF\qAwdXݥגgwqܪPItoLHJi)lav0t$=gI T5,b0 +)\ Wny58ڛ)!̠ff8"ڻ.cPG)AN/.49éYÙzzUźby[a.^am澪>tCX`ɻ E3Ӄm7NLy0/#½2~/"FN$Q^YUԌo+4*zDZVh yebl@RU0 1u \6=h\Lϯp +:? ߼v[5~aPJ5 N^_K +BkI:a0?ۄ{V-- v&̈^mN|.NuLG#If#5TfA"^, ,_CBY}w^kTU ++pH~4oG +-mcV 0ũ2YS<&ffx5s` +vj E~"໖ˑ^ɐ%̷^欔G1V"6`XixT=trrIUF^;=B AZo@`7.MOŌWq9/Q2 +l;@GEoVv/m^4K/@۬^&:5AMs|[AX@T+,ӢWzBm"ow)p>_S;,4a<Ƌ/g`skJm]NlK1}9 vH6|m9isX&H]AO'Oϓ +endstream endobj 8791 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8792 0 obj <> endobj 8793 0 obj <> endobj 8794 0 obj <> endobj 8795 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8796 0 obj <>stream +h[[o\~ׯ8AN> HoЇ(VUBRIIڟΕ=kA@a{x gү~ _?_|zu f(`cc4z?4|}j/&IM-Ԛr(\6y193ߚ㇫kT;,]SOWBz;$m㐒]f`[9[?K&I͞rQFKwX Nm.op[_w x(47AC mW!4T&pWD.I(;C :v3+2Lrvv&gf{ H"0לX_] ';$1y+ Opq{!vXq;qLpt?<;Q5>G 0] +ccppfI񔐲^w2f? 90ˋq68|닿¬w4ǵy覎'$!8=FJ xǧwsz3l7he066C)c,BBNc(~ 0KQQt!)o=KP ʰy4>8EKá&$0Qـ }9X"p&s-KU ɭ 1fLhM5V5ctp)& v 3eجEz-hPR;sP4a(7Q?F!90Lg^`A@%N(HRŠ"eHt RԎΓDjA 2nJP)T<e3hނy"{ek LZHˑXXA@l5r ]$+r~z?irxӘז1%X? " ֬A5v#-TQZQ? Ɠē0$`Db047/a"$HP>aFWR2T9Q%[zz-p-nUzæ>x0oJ81,؉/_ÿ_ h8$57't( LJ΀g6xJ0` +!- u=f/Iq‚ߓs +-DHf #0P lIeuRqQpګb}nUr,! *5hbO4L-9p4<-hBj#ϔuGNr aGo"s=z03D%n AC)c DBg3Lh[Zlmޣf;J] _]!j=/MnoAu{^IE t fK3: [|.AXZxH L6m!^TO}e 11[ضiIJԋ$@yJNgLOSK ZtJdACaܰ%Yz"[IN FSx@TbIo!3lрir)3TE=aڝi\fzZ!Ƶ9OQ4g ,JP + H|_{D>kv-DZnt™ixN)݁S4Qv2>9q8 xfo,|Gw, XyH%X0Nj`טgXmz÷Kex|q?v8e7`)=rA*p>!g9I@Ua3$kp{N42R21零jg\Cå>Wl"—n|=ڕmܖj tlRtcfP\.$hmrߟ7)1րVoIa_|5GSbqkA5m+ obFrArWB(mK+ܪ:z0!DWuUL[N|:SF?+9T~Hj`wSۊ++{α/n!nMъ5k ZP}?o<_/vr0`ub +J 8CЀ?zA9Lj^߼B*Qy7M+201,f݃z(~pμ: LTd:tė_|]JVWr'q + whar("r(BSKB>C<Rd`p1k>mY1 +-~G\ "z%sʔwjen)lI0/E`Zo"|XA Sdul]cYf=dVĪj YtPo' ׇ~$_`*ãK!o^hviqsLfͮ!d/7|韼h4>> 5#zzuxKSiet?es.}lLIbovFii#o 4 i0  y0Rf 1c6iZ@ +n5XaMoB݋HbxxfZ:gyz~APSoB{9@X:Af%v,fmyxKjg'۝S edf[nZ + Yw"|XQx  3Kwr39)~d#kc{E#k)}~sI;Kmm +؜rGgdg9boqY +ΗNCB15jE:d1 +@'ح-/0|ĕ)r_$y(Q녗_EȤTS 6NwVgA^yRmv / lJ hnSӓ8W0 lXXtjP\t:o;볖6vX:;3ܢOH$Od)/ 0 +endstream endobj 8797 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8798 0 obj <> endobj 8799 0 obj <> endobj 8800 0 obj <> endobj 8801 0 obj <> endobj 8802 0 obj <> endobj 8803 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8804 0 obj <>stream +h[Ko$9rWjNIC 1Ƭ=,|J%uҮ>RYz{a@]I2IFE0ӿ?.>vzP"G>! pwIAkݷ^NdvF -砵ne-Jk20n;&v{]ǻ5v~Fw?])SDR +{\wk* >QZf`k>^M_ :4ZB!(!_hkXx1\28uDN!NY_O::IۘQZG3<15ԍk+d)ϻ PI~TFmRJhCJqx<\^qjLڥXj^%jE* +ȟ%6Yȭڗun5q#^A'casię-yW.lcbt[/|apz>v|wxx,Z[)s&A.Qn0>??<'8%@𴇉p xjp6w+ itt6= Fa1-;NQ// {x9zN4z`_0P[)۷5G؞|^J:҆*ަ*x'l`o4Q+Om NwUf C$8CQ @f@Q0ֵ҄٣ש<: +G ⿇G GxBykpy$)ug|ZirCMsxpwf0H3U@h,)H@/F EV\lPaSBaPOK}A>օAŨR@'OM,*)pe> 6-˺At{jzϣƒ΃q-)5x*>2@0 >Ī/Qn"wtnIـf4*"aJ6Զ\܎FuQhԪKNW#60e(,m>d#786rx}s>?3gQ@F7R@,тR8p|w @xwF #Fn!QoC"Hn("h KA6B-Ћp~KÜJ@=LyԆv B/E32ǭ IB$ QB.Ȅ \vwh/QI +" +8 eLYvK&]&*q܎LOHm1!mM(W239UW!C0-N (T<8an4ѫyj]fVaL,yi'$j }lD0ƣ{5ڂP\(sEB3i$zl/K] g}wd1{[s[sݞavVXk&01ms&DB. 4ɖEnޠ洊ѩYQ4Ѧ~7mL )$fb1.fevՔ {HL_tҺ(\̖+]ʩ]}>duHbdU5Z S,-ӈiF=Z9v2i#pX7Cs־4I3 +oʴK$11Dϴub)h8)ǹf]h΢ yG!u4X*qGOYЫ.EܐK00]lP ރ˽5ʨBi^GQY%'AP&~~3a\VG oĤJX+fHx @XfY(owʁy-e4|-C"Ⱀ#+AuzZrzp֛֛d 28{vKɵo]]u @jd|,b4Vpzx^7{s=/ tLw BJ`v_H&0.e>H2J!' r {N͘اQsYԈ)Bwe +mUN 쳪 8 WNmQ$WⰉƫej*W% ɐH*ېs !b/`&'~N&Ϧi$pg9@:.p@|wٗ Qe*z`d;?;v,Er\McMK+VKB\MY3z:=N~<\N%%tO/\3\zxC_79oq6pzw?bEJ\Iw8{MޱםwݢwᜟwI~ϻXK2 ~^|vQ1oE~28G:J +0Mf_v덅eV눂(oG7(tsG纐QN|]4ks{WLPF`ɟG1,3/͊?Moj7öIx`oR/k^Z1sG]?6S?T0o$З$}K2ʖ HXjMz_B`6Ě%h<)kJŁO,5ʘ]s؈c+R/=aװFz86+w^/V\LSDe¤3|7)4;Jag_dE-G)!à:c)> `HeϽ);(LTŠ-OM0U5,HӬTLm|P2nG +tFܗ={'¢9NJEzwj"R1|Jr)]9:z^ Z]CXsd~.pi}.rܐk |q:q pʃׯ/Mq|S^R*)*=.;ͅ[Q!ZXŒq^֠+K:7/֧K2" u%\FKIfm1ݻyzbdǾ"Kv>R=HWۋ)Yۺ&-|,u[r7\~~\5K&ɹs|6RS.p=߳>|U#^NM3AfDPL}$Xw_@cV7ǧ+vGˁAoyoahGy3O{q d:KqRMFﲑkϘLJ:X]пk}MZG دq}Ow;z}{oBbO_YX4*oyg[g7e׺,Fza~J";2rƳ'ĵjצwJ&M&{%l`R\V:>ЭޫoV.ʢE*/SlI~leYBrMn}m1ҙtwZPJUl{;u֦\{O4:˅lV%GЗ8|.ؕSW 5gɍc)1Z¤I\ +Vj?$[/llk ;|l6md_AvllQIl-d-qbaŖ2Ef ~0IfdHe|?s5~Cc! ;dҠg!fuVtDegyV\k#UsJ㗥R[{Dpq  +<7WA]%0z^"&"f]sA}/k@7(1\jd8Q哧fIjӊĠ0|Let_~812";=#DYS۵e&2'7e&_p35viTP}R$5?:ՙ.kH.;W/Lbߐ+nMoV/_'o +r3g7C{ZU5T(B*ዙSE-ϦȷZ&L3ٓN(  y%?Aw4z*QՒ98eN_s{.j&?U}ɭi΀7EpS>=IB$AJ~]( +endstream endobj 8805 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8806 0 obj <> endobj 8807 0 obj <> endobj 8808 0 obj <> endobj 8809 0 obj <> endobj 8810 0 obj <> endobj 8811 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8812 0 obj <>stream +h;nIvw~E T*c0 +yhvÐtCXhPdH~kDd-0> <#TUoF_ջ f_ae11eܰt5 64?4t&͛0Z5[ Pm19Yc .K㰧-sxd@8Gjx ǼeT `|^yc 2&861lynp3CoMfK0qiBE= 4D:{7GĊ> dQw7cX K6)LݏDnv{Ƅ>%gNݟvW >LFJ)S)y|F8Ph,x8n92_uu^܈F_F ] +c,cpYoYia!6Ɍ)c |ػ_>^w뫿4dzy馮"foF;PFZ8 zO3%l7Dhe^GP'tH% vvYAF`m8e2a2|7;Nr {2,vt6mt鱰{:ɦ\۰1R{Tsrv6ƌgԶѩfF0 o" mLjd0S ڄ&*u<7 5,CN_ ~:7Aԯ#|JPr&sf ]]f[$.aLJ1:`hG牣@H B;T/~2dA?u062HektgRJ$@)[y6sz]oRoj[]}|6^5x̫[dx(Gzt0?pᎿ.ȭӰ˓~~^j\#t!iP!e^`Czz~0Ff=+ nwɣq5蜢s_Qt55h82hNj#1x5\GpL +y*u`Nl8viv /~]J]g@% DVRDIۅ'֜Ddkǐ]mGW6{\-!_x-^tE@mܬ ; +xGE87grlAMg +W1̽=,\fSE9*rl[:Q!&4D Ʊ ֩lEfx{R/tN50'm;E-ٛcP S<9g# +j'nVMVr5ZN2Mp']Ifhns6B:O8)`Gt1_:Sb-1NpL臆 hQs5]L A + TlɻTxk*SsX>yIElu1 ָfѧR%GQ#$12w8ǤLJ97_{M3H8G8ӟ9h=,ŠT2FA;O:vˣ)f DD\qdwXB ZO4nv |c}3[`^qiՆb_r,"w炶E$$._-XW:eAkZV)x!Nr`KRݬ,`Rԃ2g|\:4pн0LKuk)LDMLtH& $Ͷ [M+_tey@KX)_E+>a% PH}EM"{ˡ>(Cb _(|ҜgK6Dž五ymi ̯eD`}mS2ilq^#fRKyׄ@ܶv717 2e$Ae;MDL*-aBpL:KKmq +I'aU{S9 +yط/}r,ꚳIIIf{+@^t +sYSqr|oT: bѤ&ǾVlꫥBgXdK"ATt_ ܧz"*<O쭬U}2e"i- 85] LD͛,4 2V[pLfZMtKZ^@N6,Kwq_g6 JSpVOKdge,q\u,;ŧr'uPKjm9UF1gLP`Ҝm*:Ϭ*hmKţNmIwh ^;7iꫤ~ϙ]zuVf^b޻1 &_܀m>^5Y^(6B֕k :?ˎ&-"6L 61ld Q$XQ+׷ 1y%}=(h6h`Vx9U[5!%sE0(QjPo3Ee_T9z?Dry|~ư:|^'L>s=\z2򓑅VSdO1WW5zݗ?KJ{1_> u&e5(.Mv{aMNa9Kc~ͱ@n|\5nV?_G}xe+)d>"3 v9 M@_fxxޯYO?Gأjv5ShҚI ū: +$b$[M&k}!,p!a]c4*Ri6m,I,RV A)kvһj ]%+\cj+w?OxS)b5$9^ $f@N\~vd26' Q5|: +tQXi5-z3SQD:ŹJ(wBٳXʤo F=:DS[ͼo8bCmaJl(wKsLZ.0,rKIQ8wRTDMzAYV#:3(f7g׫5>T/ ++݌;}X^*@w琪K?-75_m`Q^$hO+={g~I:KYYXV>Z~>g&u2B=bC~Pey^xw J/>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8814 0 obj <> endobj 8815 0 obj <> endobj 8816 0 obj <> endobj 8817 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8818 0 obj <>stream +hެZKoWq&o2!^# 6Y9 FB,y'3#& ydX*V}UwLxջk;%N fOWݼ,Zh]|~Y\\]=Ba9B{`ܭ;?{~w7Wʒ#}B_)O>XYFa۔*#(##Ϲus q  y N[g{@WopҚywcmvCQ7628V3+0N ~LfJ)S)yrq\0eĺشĮ +ϳYI6#}dwku-cFw}/p zwA/qfAkp|srl20/Om0e7&iܿf G,{34C vaջo^~:z|0}?  )N +A])XX<$a"MO4:H7ӣlBκc-?//Lx9G؝hi:ԓa"1~l4 l/i:d\|ma}=wrv팙<[mfpwZwm@Q fDجMt6am/sP44lAhO(o '\G!=0,Av.K +:="WfrV(!݁N|wR^0{C;cJV4Z׵8 G:6֎DZ |lHˑ /FB;qh䖛~MI(X0I~"QãѰC=hٛzu(L2X mGFҍ'Éga.IlS`j0otu?0BHo!|Bw3;:5$:l{m?Rm~+}+d*hV-yxXI*oæ1> 6 + χ?1J#1HoJA5V^r7⼃ +±?sг=#n@İ,er/]4(rM'",08h ~uH^Z=3Br/`{yX?$Vke rFje|hwҩ*ڐnʼnE6UO;RޭV#V ʼnwD Ņ@w8&al??ݥisEx|>N[L6/͗e|ۂIʹm>o\EDmO cH7j}oc`* +!%dExxW|?}z;Rvy9fkN5D‚!\(Ձm棎 OPݱʭbH4KlVGal^ҫ] ^)`}#Ik\#S!ZTV[c'GL$ǁ֭U3.bY|@gOnHWMo8hjjjFK<q[{uփ^*ɰ^ })bBثfLgOYAfZ&R=Ɗbcz bw5}߿̛j$8@"v߇WlGm2Es3(0x B,darznxdSv]9us=L-_r~{NzTkICgŶ[FWNk|D˼ບrYbt˲Ouikz)]LڙZgm%ǏDH=nφ`4꼩:6xˆ!)1)oNBWlЙ`?o}0V Ō2e4$hDRMA@:[m_~U0aCnC؉CGF=9XE<)v{Mt?vEDU8+p *WvU6,0{Q۫+zG@:ĨIȸO(ծ 4zW^V׊x5;3x Q)_ԥ93?GTUu8xFN"F18$5KÁ!aW&cܖK"-[<ZV֮a_vʜRg|"t֞岡y5> #-¢Ρ6}+l GN!P֥>!vifR_Ρ9@ab}0_W;K1 vMΊΜTQ.Vʬ2۲Js?0R)&knZ^Ah'MU@E'CxcP^R ͥh&]6@WoN=[V5q@!X*FU0ưjieeVZFI1 +Ub3ll>>?{ wN@x7[~yzX(sdZy*a>ol6@t0 c0,54Ps*,al<&¯1j},B}LP22HELO,8}U] vɊ8 +B!^`rsnaN^ Ky~B@'PK9.7W¾ſKS>S =gڋDž L_:l;4ެ E*B`x_~S^"# 7oL]tMXD'[We{'L0r,v GfFdhm©g 2bp +ZV]ǪvZm;$O}wo%dV57O% +C9*v|l~ϐ;\ؽtU>7 ӓ!ei+X&7of\ʿ*! +?ͨocn˟o8ti t%%R?ы*v a۩ׄZGw/ /ߧWE5z1Z{j=,O̫oklhIszVcOvjJn?HM *%_ شI߉tߔ?ƪwV-*ɲ~ Y#~}\G>atNwu&$A%RQuZ*Pe/N.{e#J^{Ja,:A_"^$hrIhOL2>y Gxl^CPsM0}yi[)  409=ԟiʼ-CN4oOHG~ ;7g~n#uA-@7[h-d{E"q_xQNi^wp!+x4hBV^`$AҬґOO1vp;'^o ^I4 +endstream endobj 8819 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8820 0 obj <> endobj 8821 0 obj <> endobj 8822 0 obj <> endobj 8823 0 obj <> endobj 8824 0 obj <> endobj 8825 0 obj <> endobj 8826 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8827 0 obj <>stream +h[KoɑWԱ@*ߙFFc,EadaR3[ 7(vSceƀӕȈ/"R>\x}Lf*48e~qe|߮>[gaf &ci& +M>L{fUڡaJyHzdmRL5l ]9*/~2dI~5aRɣH#cVOCGIjMKZxrb047,Pr"/BB U !akQ;{nt/,C*P2ŭJoؔ#Pۧ F K~mzAr{-HV%6mld,w& +6(V/(mғY־b ܬ m@b.T!AP_h@mw!R!lO!2"4CB + +dLaQN4 gw'1%oN8wM {f#{vmJhIt*e r$7pn]Y`QrJ#ZR]"I}'aA&!BeӚBԀvlPy})nh[0q ka*wHE@!˕mHMd-0a]RnhE)8)17jaHuKNĒ8CZEB#{ ]^goG/=s?.u"SlgFt7IjO[6y;AgcΕ|ysHI$E0 HDμFa.В^< !# +l/ eZj,\O!U֩;o.Tqvz|lj +;yq(y/ls&禲-Ñ55a0hS lʾ)$ 8mݸgyb > ,rA!HU5>I945׹ɫƋYh%Z3|Dj 7JCmE3̊|:MW KDf]a%˦؞UbLͱkZLF 7ek~?$TK*뜶rV^%$#N(gzʋ@`YEEe_)*JQyARTjVԟ (P9@%bIe,IPBe4IHMjcdq5)ʋY +t^9bX00 GY8$({ +ρ Os;+MYZ/nڡ VHCX)(SR\ :t̷%N K0`-IƫMf(?K G:o* |Zڟ8Sht/ᛍ-1f)Xc0C^bCf48xt,4 yضDn ܆qhF}{g08Sk YCX2Ǣo7v)/oP[o4gN\l5Vf?4R%_]d0HB jF o lEmv nxne.u~@&!F+]C(\Jys'Ѽ .:S:0(t/tB}xd]2I#oj^眪XyQ?`YĖC̊ OrtD+XR3ECFoB7y@VQty-9`oFNcRQcpT b ߫;je4}흙6zT{"84N1r5?aJ>ukbwĮ*0¬ێ$~G"N1*4>O3{ RphE($A Ivc7n>`ѯf'ڶ=Yg_y'0UT [ToPk!NT|Km&}"A}Ң?|ď_n1kéLm~jڿh9ƸvhWMӒ[k;D?XLZ:n67RoLp,uml:w`-]ky7jEi Wh鄐6[;w-|L ~)#^x%7'M:r;;oq>hw .QFM7_WqLkxↇ_O''G44: +Ǜ/Q|{P18I_eZZ7SUk95*Qi +֗MAio0Oi:?urFzʨ5Wr%n\왔R.7_m-g"<`H}@c@QOE_yaUWu5^?|ހf8MTGcr|j7Ykȥԧ by:B +C8V*K}8A5Ae8 C fm$=svPC,ycj׍I*/^> iW +endstream endobj 8828 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8829 0 obj <> endobj 8830 0 obj <> endobj 8831 0 obj <> endobj 8832 0 obj <> endobj 8833 0 obj <> endobj 8834 0 obj <> endobj 8835 0 obj <> endobj 8836 0 obj <> endobj 8837 0 obj <> endobj 8838 0 obj <> endobj 8839 0 obj <> endobj 8840 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8841 0 obj <>stream +h[[o~ׯG2;CpI-(>Dsےtd4}j`ܹ9w.;ptūK="FhdˏpsIAi_/_OdfF %破߬d-]dlVvLsvWۻ9_o/)")Hq[˜ +BNz&?>q2BG;(r{i8DZΩ+1Æ_i 'gYM4t¼]DLc +M*IbF7(J9Uu +LIM;QRV%9QĬ3,[S[h'˩ Qډ7Q iakX[ N/Fr責&2qHY8p {!_ B@KI`#~vPW#@.C{Ct&7\ZxPG3ft[Q*QR? XO5?o>" U.kpgbi#1["жѬJ|v|w-y*<twȲh۝N0B Z~aI, P0WRcyۇ%Hi`Ÿwh÷atVq%[ eYʒFgb``X_zea\ O怬HJt8LQ+ [vȤXƊγ kb^,ʃl25:k1 +1UC So]9+e7fK^qVSVxO4'ܺ%e71BdLZ3vD$Gd +to2GZfHVA=3 R?'k^~?p.ҶE3 LFÎjY[ +tU"3> G+1.2RuOU١-$MɲH b(1QDĄ4H 2 "gʬձf|?!6ËYRp"j=ۥIS)WK#+>)ҊU#B8/·y|S&>t qf&qԻWtJ-E<|Vj-b@!&1e[Z-gu *+D=ɇsd/###\0C8i٣eΊG\k:Z1Gʤ;?f y 1w2[l3sמsF@Clv=bHbG@ْx/ÐBJxeԋ׈z1pO]o?=W`t3d{r?,-{hoR/~XKv#,'ѝ@4s8u Ac4ʉI5Pm)3~Ԝǃ`hVZ^6$Ԁ+bZc%,mjuhk!Ex]ϗ3y3BºTP^Z9D+^jLdv:sD%ۄ1` Hiid0%͟d,۲Pj @ 3P f /grb&ɠ$4lYT]mAU%az[#ʑs1QVB}Iz֦9N>ms8c?u= ۚ11c7'.%t;`vl;vxZըK,~t5aBDG֢M?)4gc ؎IYt`NGmЗ* O~EHxJ4+Ce1b>1  _0(L] ~(E}lzBza7Dq:^U_xcipzىҬ3/zӸ/5'}]rY*[ +5yF|N` hYq]j%ϖt Y-4jζ& CLq )iݰs2F IS<_77!b=<<3oLl$ x}'@M&g6=ܩ*cmfl,SeywrOtxj E@M`d3y@8 G( t$Mdݐ{*4{~>+;Mr݊ґ>\q@7'}ll2c@Vi|ïjk5*&$j~@mk+}RT["km陏#k뿧Z tsgMqLF:|)ZeIU"iؓon|#i3tihG7 +endstream endobj 8842 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8843 0 obj <> endobj 8844 0 obj <> endobj 8845 0 obj <> endobj 8846 0 obj <> endobj 8847 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8848 0 obj <>stream +h[[ocIn~8RUY2ݛ vq<Ȳlka[ܝɯYdݎxIn,E~d>ӏ{d0taipÂvԸ'|5]<47'% _GBY["ܬQ٨ҨQYoRXft*nv +hO_*_aC#eopmcW8I +t+.a3ӟx:/î;ܟ>];D? tyai pK~Y^t$t\ֱctZ.ZA{( A q7%zpj IJӱ,5ec\`,8b0!a ™!Re[I) tJ4bA$v +zr'Hd'THETѠTC,ܓ#PBGVk>ۡTOރv+1\".E0h\&D*ZM(0RC-輌32}U<e 4Poy"1>rs[ L" `UZVG%}rW|"M9 _u_%qf΃gX vcfvIn9VOEcē U`Xb0쇑?oKGQlFAFhI"sX6Z2u6ԨdrUe}j0z.G**MH*?ぇ zoY'%O*?/5 + yd{7Q=5|HS a~}JRۑhp`]~S~& ^щM|OB.N AYxA"^p P[XHF3\#=+d = f_-"g KEI(O2Gi"?:yb +(ǂAgZc"SSrKrPK5bo H!Bn),x\=rqDxw_K0(rB-}{ӗn lq~oKau]ӓwg?/\%`EcG|r}w8w緯_xb4e.&0f[)RdkwS:M.ҙ̩;- &ݪ22$&E8 @vLo1d)sZhG tccybsRD QN5ӳ٥#rZ k%h>L͔^)x|Nč`[Y!Ę_ 'w{F%[3bQ@BjC}S 'P k[6 e91T1pI(ZfFk !r%UTj@cA+. $ӥ9 VzҐ+G0 +JM(HtbNPhe5}hGO8/TGn'RM @9d3A[G܂Lim%˚vE '6STv@:u +#6.slIցE> D]ofF[ ber8UTorDaa@Be{vprRkr8Xm=>w.җ8o\ޟEr˘= 'P) p; rŲ_)ux| V)(8cwn7/PtIdsxALJP"钝'zIe ;3G,i{!APeRlb,RE~04#옞)1usUkVLmhX\%̾~'OI+xSALo\)S<dU3N*I/R,@dSqCRe҃&+mUְM0Ҡ)P1/6ӣP1SהhÆOx); +@$|K`Dr 8; 9#[Y6Ȱٹw;i"lآ,`m&Vd6lmahl ͍&67lkl3G67[$^ɦOsKO-mV~.fkƠ]Jך~ Z(.';Xl uNX+cj]eVH7}M|fպx܂P04c*9mq]CUD˚nFMLWI:1+Ά4g`fXGaxKb/G$71eI_O]b,O6m9 %_c.׉ח>`N%"5c Ì4eI,vMU +Ŏ3v;}U-jPk@.r|}S ,ɧgؙ6mW<6c287'KcC}J5 ;޸_5{eTc¬Q r+4}ĨrfQ46mj]̕ d~uu^Sĉ,Aҳ(5fSmd9P9;8; Cc_c0G) rDq7zt %u]t~sto`EY/4uǪRi%cޞiy;ra]OmO/8vI)@AoiOoO*9 ^T +ӳ2R(Y_ʯWD҇$ؽa` +endstream endobj 8849 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8850 0 obj <> endobj 8851 0 obj <> endobj 8852 0 obj <> endobj 8853 0 obj <> endobj 8854 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8855 0 obj <>stream +h[[ocq~ׯ8d`9}6dg8XgEI48Ҙ}׭o:hȾWWUWU|pt Fhdw|IAi _~ZOdrsP+?z(Y O4h7ʎ b>nN;?5@w@>8֭eNY' =,vS5VP1*O41~ k!!o\uN_уm遹l"𓶅39@"JhFsj[ KXMECa&46NTaWc];kbJ?jE* +ٸ?J(}$w%ӣ_a $zwA.qdAn.plcbt2(7*>|y>|G_`~jxx誌 pĢU#p%7a%%lֿ}ayv޽sx d- ,4,gjit$ eCeCe=*礼f@jL&@ɎST K:QY5 Xj" IJ7TVeRa,O48ca +Z[)5qSYUh`1!;հo?jt#ic.x"N,pO#* CY +[ _F 9%7Lo NzLh9<Wb0ZPH!فL;K"NW4ʸ< $(yE%0>e0]#pY J{T +&. +.GVH% +eͭKfnT) cAI'ہX _M,_փo^yAއ*AD?eZ7dݣHˁK+j"Xy8x, :`84 U[32MI47Q,SEòa[XΖMjK.P)@(tjLոU 2Dj3`tGt$ptcɡ$SF>?#Q}ܣGLMvRšH(Ѹb<'ƒRy9]i09wR>!hT}B yDn}2ߕjZX\2԰Q|଀1ɴ!J)9AVY-A6r$bC9¶m-ԃ_JG}9^V܆@W 2\pcH$wgӬǗ"Y1A8J 矬?>pR?$B<U(;CH6lߘmu!$L0vhH5\m2u@ %+/gF,Vp~-CBZAkXQ7s'q{+;WMtGEÅkP(K lU&C{er#*0mS(zgkM&Z]mG@j+]jn5ζc9B n sln6nnN 5A,Sn[)ٍ5B1"nW1Xk X\d+ qtBpD"iZ9$ ׮e#hS}u=A(dom"(K =6d(3MͨLO9kQ̄B㦈gFoM/7l(D@ͨS !Zj8ժmF&Dc2kT.#2D73,Dڇ+WZ9qY SlKu0Ml _rdIqk `[4EUMRe8/8*Ä uB-`AiEt9L菊Ƅ$kArqVmVKtDi'öNKsJ\BX nV^I.a , Zr,WJX +nl=oOE&`p@m92e$_/+\/#?òA>|*0_T=/SMY#n>4[ ɬnd̠sX nZ6JuSk[+X5M3k BHٍN&9Z ~5US&luբ͆NGY RsaMBcwW}X]OruC[M3K)-1M$ 6bhRQ+zzn]Az + &C˽К9<(74bEm&S۟UiQ4*ӻN"!GUa~-b9_lu5]ӯ 7!9NNVPD>9BG>[dqgZ_*[ 9l'S3mPr5[].>:RCbdjes7CloUOu[npY'A7tnvlwɚ#\1(;ed$@:SnqAg;U: es$d "=KLh5(xashc^< Y1ǒ/طF +R=DjVe. qծ[O3{Kn.sLYZ0d:ܡ C{]/-5G W+;܇{((Ь>Ö~\0vKf1w%ҹx\Qa kW/w{7pc~ynIOTa,yxX ݻ޾}= a]f L`*~yYS^= ֽF ^@t +B/kM鯌Q;28#ؽ%|pe dW݋)3#JPbGzƓSR|B=OH cdQ2ԃ/25lK:I9 NJhKKfUF8OPL4˕xdpՈhI~4PIfueoSuߞ4.1PS3_5lL7evsȊjGYϪc9*< ][FS$'p֕k:Ğ". -mIl>[]bg-גl`0\&1[;jkY1txYqHʲta~hǁ3?yz4aͩ/ϋ55ΥQ5`-JwC,lW.\a-(CP +2EpSˈ2M@\n2lIkAX3jCoy;Ӹڦ'xmdK "G;,+D93mffn`foo.lD難-h _Qܜ<+7Gsz, lYx;e'vYM~,*|i|꼱}zZbPptWd=73r qIMimhL@>=`.IFD7)Q$/`w[1Av.7xvYJVQyWPySunu˸&.wbٟ:na&g cN˷]jwv'm C~6_rvg%V:ym/ω U׷J`s[)'nͿ@=Ti3~YV8olY~*PYlH>tmߕ/QLFԺ"&pnjrd{aZgUtyMTui|6aZsQ_F"6O`Q5^y 0ʹaM(0UcvczTEeeYDm.ڱ&8kt#QJLEDuMN>ӥZw@0C;H@,^ ^ n>vg6/${P9h8-1[@d)c1 +-ô_BԽx?|9}}7, }KO{|GS-"}]38׹S˳ ӰgFA3}p nqR(W>nuDS-j̮Ơ6j(@NusyOÏ/{Z,_Nçw {~'SZdx@t\ Gڳ6"ޯ͠5_Y{n ,2eԗYj6AF^X߄ _𵵽LWYE) H[899?䱸痬< b>gF4yzc uū*/7Ԣj5<',gD/`Kڳw"HHZlɦ8 Dho_/=2}*,9T.0p$%.=>emCϛ&*G˻;:y%1Nu=6,۩O7 Ϝ3z,r=ܨaZ O LRgoz.25YpFud5 d4~Vz./ V] K*rKR_c^g/GS.݁pb__$wkYӋ ÃLo\|Bfzz>E l>;tFV;jy *iy +endstream endobj 8856 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8857 0 obj <> endobj 8858 0 obj <> endobj 8859 0 obj <> endobj 8860 0 obj <> endobj 8861 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8862 0 obj <>stream +hZY~_я`KN8N,?yeK:˕ Cr%;#0㫚y;kޞn>]ܼZ,fɦٸ.5]grۄzxiۛYӶ67޶B3g|G.igm2\m!KmrQXuo;fiיB{v:M,2s}|' #k 2<3G2y[ jaJ#-%eBY 7$:w>˳"! g/0 ;]m55J D!h'{{ q&}Tѷ+UܚOBx%lv?[E$i9&{Es?H]xt.Eta2j\Rl::V K*Lʺ'&&7q=覱7{~=% IksD,FG"NzQ?-]M DKhr:xrc05G?8(ؒzGBBWxWjIrHh皊LO>rv/4]ãh8'P<[|Á !"u|kkr'Ip~'! +01 C$Fd\'xϽL(NXqnxzn{# dn s]տ2\5\&AWJЀx2AJ􉌹Q`2"KYwq;e]v:*؊YXpz=rNgH'=NAy˿RL,>')''Z $6;m7<pQl)ʆvAq`u#_k +fAu@J ״ MpevLЎ-"6ɂЂ"3Mn\ҹ$ܠFʚZ*Ɋ pr: [C5d^:GKF$zN NvU~l󭜀Ӆ5 +`;%o=2~{=oe}Y }Il7+M!~Npg4͍5V6 pjx<N:_!R] qkv%"b=Alwy%GhVȕ.96~)WAmeVrƍ_i2@m (cAKA?J]Zޥ_wՊK8q^fe/Y4ă<ɖ 2}O ,b8isKz2KE@p,>5Gyd7m'`0w}c`4A;,WB_N-?1cf`fm@NZKa1֘| dOr93??W5wk"F{Jp w mʚF** PT,)zfzC*yYMyNuN_^_AgK'T?u* j< iGq! k토c3K֏! -?!{4dqMF-e83T xjrpr#9l}Qϊ2r% +@!|RaÊ( +_I5Ӎ=iH_b`zp>Bt\Ҧ^lyJQ4>NGʣu)sOMM7,QJ^uT{)p$J5NaW(\ l4r`xERR +_ 媄TYMr+Zgٲ+a/\wfÕ6w<%Ngۛ >2n~k%a1`_Nֽ+pZeJV2%p⏀ $Xd}|z ~;L[]@ x 6 +-rjmϼ`pۃ ;l9%hiHP)>vΨ4EGK `iURTC#& R g= +IX6C@DAzGjUKZj̾^W +/lozdBclXһ,:[."*'H5[~ J#EƨⲘ+Զ:}NgxO̲y+Hy/qzAC^NO|^@'U=S#W7uW? M5ctiXBb0pgL2f^ IZgy(kǖ ?e7,_|Lm@9jAH %5⧛,iGw[yנ ݔxN{E| $4RʟNG@ր1L"I)-vzUR\v0^uu}K SŠKη;"$>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8864 0 obj <> endobj 8865 0 obj <> endobj 8866 0 obj <> endobj 8867 0 obj <> endobj 8868 0 obj <> endobj 8869 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8870 0 obj <>stream +hY[o\~_K~)}.CkUR#1 skcc}8^Ə3ԫ?~UU5)HYrʨ6Ƃ:Y|aOƄF@&@uAW>z{9k?YeKqfQL!QHpMxִ>ɓ =,5: vA .C] pofA_t]dyhz4be;r$#.4iWD;x:W䱸Mk[,MnЗWaB2>(|Uk-Ḻ^>-]EV + +<&`o{I'!I[{ԥPcm",{WD#b@m^/K 2SfobBMRu eNzsx^Eo^~fZX VÚFԶQիo?z|}{ppsPXǤ065Xv)&! 17!:|b|⌎5(mg3[u`[]})_mCvNx:z/L$:y K:ľFqXhdMO+k( [t +u`W1e!:C:;lbhW$84h.N'2̅tn$fc2A:i*oѴԆ"{;da?ը(v ; ~Z8jg~&%v#2{H>;B\E[4c'J)@DU'st2G8LZ2| 1<)]vp4ccmlOGAgpP^Ҷf2,Lo>(65azxm_=>g;ިzMDzQcuɔ"Բo<']s3R5aj+K~%cFo1B&ފO-[289K蒙F@ruH6Jy"˙Pȧ OT$O??̀]m\̋,nXvm/!6ap#]QxIuJlj#S-,C6ÔA΃R(y7^M+-$(L%#!V_ +wV/Iyν efJ} H5Zסj[f "N`n\'+XHCܐ/ +o) \Ï`#hX_F9&uNDzMn^pH ;A +\58QR{d9^28 +Ep˞f4kኟͤ|΅a1,;; tI(`<%|$9nz&Lr|6ѝ28Eul@>tkgTB~A9.pv߈B k~7O#+;dxʰ^PR,iGO$"ZiB- ::6z5x1 {iY& UhO2jt\H5 $)ͱ˥=p\Gȵԡ!ΟVcVf9b޴<-gH!x|zf.6a,Dx'T7M$:B#&Ll1lȽzC+'RAN#[^ػ~jҞBn%%b +6ICgOg#?S2vN`B13wgh弴!T[[n|"JOF n>?i&|S;ƝڐI=~!]N>2)ן?>ԧg{<)Ԇv7oQ])looEMkYlKU%F +.F޸$KT\ +gOnvnj;3'rz?_ Pz)9YeS$Lz\ >ޓ|Ua@^}"q;Rq~g=eLyW(}YƞV\(JMJyJuu\*:;YAC[q.fPp ^zqI~.ڟ_=[<pNOwZs,xxi )ȭ)D*vpTR<;T#AB|ִtgp_$ݵ㵈_Xk^ގ֩'9ɓ@_7D|vGҴ?v7_H~~ P|]:-aY' Q% {L4r.O,$eck2ʗ/'46>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8872 0 obj <> endobj 8873 0 obj <> endobj 8874 0 obj <> endobj 8875 0 obj <> endobj 8876 0 obj <> endobj 8877 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8878 0 obj <>stream +hَ}w ռI`0y035%E6Ӝ]ÉA [;]]_=\R٬?(;kYD(F#e<  +u  .jJn2 ts^iÓ_^|x^^]w߾ރ!&&z@/W/z__~xw?9Ma/? V41dO'E)g;zjgf峛%Lo[Axgr@NerjN~A y:A㤴 6`;$pkpA|C9G2Qe* =tRf&-o*M@іf*XdA$V +z 'HQdDd +a\W@ Jkc\'P£g#<,7GOA !_%Abdb=#A4XGqئ!(k-1AK\h +YKQ®dP)GmfN-ʐ4' _*#:nMɠ w7&\۹jl- EEHMj r?o0t(jK$͐Wff 6Y\,#ad`N;B%g{jSdChmXYLcZ3L)VI.HK;ʈs]o5M0\s ]-}rIB(o@ׄ+*.Y]wv CUuWM }YkvR„*-+5fȘeå l"R"j~ֈa2TYY;XC[ʲvU%qnwDHLx 9d0?WA XX0d\sZ| +N+8ం +v+ϭs+܊>y!W(Ac /we=Iȕu*LXs- 7I;nu2oL-FN`LUf9!={X&- +[ a4 qa u%:5~qWr !Us3L:4;]qzR'0j2+Z0˟Qk,alckEÌg0)`2TLηBu!8D&f b15` =EPx)kf6JƏXVK#5q9g\qTBj޴ӢGpgy'j#+]枹>(]vTj G2]{8dJ3Ȃ!# e,6 m Aѻ3jV[$)^ +n?ӕYzbZxt!oC Ab#ls9dNI]- r3({>2`d8ٲU)ȍ8~~X8v|-Q pKa~[cq3xXY^ J s-i%GeQ'F`<_jeRVm7X"F. +aՎRppQ ~$@ Ps^*O5Agz_YO *p]q1sΘe7UԚeu|дr#o+ &u8X>@\+u!ˉO>Rc} _-Kʯ.z-gU-nd/Pe]C}Oܺs oF@߭&XɪbCPBXL>]_{ ɊW6 6uǀ0AKǬT;m6nicxhm9|v|eݮ/%@1#9 7O/ R6<m"<km\>BhG[>ͅg_jנ HLܺi +u +`~X +! w̽٣-X0(_c2MSys:64H0 .;tp+]^66η=`n+Fܡ/㙩髖;f_6J 7nʳ?Nώ;8x"\ВIw[n SsD`4 '0?)nR'kRMW79!ﻫQ?9Ux..c5ˤϮD8U_g[a^ܾńPѐtNxxWZ(!$Q9%N_ݩAA@!vw +QůGw%}B +^d{X 8֍s^5&rŻNm3g5_l}L#oi3! -wAJ=m ˎ3ZlDZ.iH , + (U(;/Ewx5ޅo܌ֽgXb/y/qf| +Bޠ{ϾU6'!?c{> +t2WC2~\FK3YIW|G}|?^#=J: %U*k"רnM"Gz9㕻 Bء =`3Nm94݂2[C~3~rFn +~YY!oyFUg +C +~\!s]/Wtf8g5\P;t8k=\kcpmv7õ'Rk'6kgt=JCdP+=l׆xk]7 []G쨊TGz'H?һAٱh=GaH.ECQ+3I+u!Z>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8880 0 obj <> endobj 8881 0 obj <> endobj 8882 0 obj <> endobj 8883 0 obj <> endobj 8884 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8885 0 obj <>stream +hެ[Kϯ`Z| ` ' `31lXrk~zIV"4b=*~᫇Û0zXLCs(SiM?sNh=9vٯGtւ-7isz,NMFD\hו28ca엮y' vCB)ds)=cy3 %J]n9RJrŝY&zۜMӓ}*ϸF0G=<2}(zo4_o*.L~|eTM׃é%lY h!f8)'C*c@Gx 3tGa؅۾ [9 δ~ vHKԖ)4oxϗͷoCu뷇_`Ifz*yǟ[3p3/yQZ w=?ekyL-ɓRuex rs"tyO 漤d3=K;R;R;>giCvXf< +ؗ4}ڶS5M5 +qP%ކ%- aLo]xG&o/>Ү~Ϡ4D8X搑0dY-M&m칄s↧iUi(93!H4iꎣ?P6@hWH4k ҄qsL$Rd&BOfBVԪմb;Y T{x޾ m_kAgH_ܞ7ID]p+NfTd,( }[YR}F}~M"zeGǑgj"dH8 +x*Lp~T_23;RLr˙$*9z'a;ip,lĝqd[Za`&1} !@3%%8.#ɑHr@ PQJI℔X 696*bh* |UO;eYμ8WICu`8U]g)g/pRqR U Di>bXlU;OYA?JWK>: 1҉]JbUfT8[@Ra:sx[)R dLOM73UfN 3NpZ?@^Lԕu +Qɋc_4dU%U;r9B$^d>>!SwW/nnHD!]=`QUJDIVO2@GlK]0Hd+ga Օp(8=וȊ}xOݏjssç>=wވI-`UGqYY% VdL_r'恶W} V:@JW +ܚ+de r̫`Iι 2GG;ۻ"zJdpƖǔe-)i#\^=ۊ{ϺuY-$ WlGd UBvc/PHE7٩Q9n-J|O؇"I0^Ek*^jm4iCB3%Eܨ(aUW_E1ilwi֡=7Vk'9H4`pR%+*9бf)JPΝAaЈC-{ .qqs!b^1N?qʗ:D x=)󡱨N{iH}Qhh] *q6J{c?*|v9>x5%1S\N֡ PUx'?qWݭ4u ZG*>fX4CN+#Z<p +[JG()alPɩ3y\OAuRZjJ_Hſ0q㵒驛Ar+ep ݾGP y5y9=@3b/ne|z8]"|PxUu=!^r⩫Fw&m3ym΢,yl^*kYM'H `oEmH3U#>%x~ Fh +"^՚:4oc$X \ƒlٲ{$M2/qM9Ya[PD'#kܣOg%TE.e=.Xf?*gB6q +~Fr;]%VH+V%;-,Ԇq ŽԼ|OY[*F͂>&ǨE|]Qp+Op5)X+{jӨͱpC/Ke=*z9֤M~{44U=HC(jt%O^6ڱ_#[оb0Jcfe7Mf[mA6QXv;tކN11^x7Qlpv+Jaa 7." q>7vﻓoQ3c^dg&ӧf,6@l\~zj n^^׆셵}/96tdA +endstream endobj 8886 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8887 0 obj <> endobj 8888 0 obj <> endobj 8889 0 obj <> endobj 8890 0 obj <> endobj 8891 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8892 0 obj <>stream +h[[sq~篘GUg4U,VyN)+$[ɯ׍e\H9R*  z^~?p~} Ҡ}4Z;4pI|/G>&kQtF*Rk.h*TN קj`[^ikCKn|3Bkx +qC4O2RwzxQC+꣖]6 +$o +3:_{}'dtRCxu mMy#.56 tME=n`C4e]Iwk +A3l؜8lׂ{uO2ݜ %&\2]fς`ݨGՀӘmZbCèMJimH)wWGG"6I/1>1tIṻn3E^{t^gNN(M%мFl#$}P΋vՇ3@>; d,j-2.A?Wg7w_=ܽ[wٽ8%6L~_c 6OVCJOB5TOKv`3Hpp[9i-Z8E_! kq M@j{m6k[W7sP{yNC30&k#TM VU RPlMqs[+ëtoF;طzD"O@/MǼ41B*ln(nОFXD #NgODo A,#~O $9[C S4oH&2:TX(i2x ڴ-BJ@/ĉ{V` p닛 &X% -⢱j^&r[^[f+]!#D3ƣQeʻJyw~y4A?a:n熛K/ɧbXx&i˜W 0ԁ* .h&olseѨRŔ-n lsI}E*WWy@K^:,Vmf +46e),5>a0o +u .Z_;z}߉/E5~7dk('q*RMcR~9JS' X; xřmQOPhMy#;K Cx[ǿy wJ߽r_:6,&.b@}SC`/O-@z"wMe3|d0޽!U!M\hN䅛2&\tkٳ uue63vPj/;hľN-¹҅enOb}$<X,idK͛E&GPCTpl.;!r xi$,Hˎ]e&{WԔDf&b%ᅠ(VQrLcKU2+ZfŹ?zUIAf2Hd<ٵFٗڣ0^5i\(cBЫ YL*r:J ZrIS\:uϢC't =ِ %9ʪu򫫎='2N>Ou Cej['[s5ţD윩S̐#*n{8,] n6i5Q+%/7v򱭲2Ar4`V.pQѠk+Vd ٝP1)q8s5)-TPo ӏlou"0AסVf :luZ<6;1C/}ţHo\zuBPQUy=6Yʦ%{Q1/]$6߅jU9LRf,*WXY|nt˽٢/7ʘ-<< L5TEg&Md-ˍȂOT5gB$T]݊2g?QzYQ̐uDfk}"adƥ}Uo-bS2LZwW## !t{lb?s 벇rXy!SoE9zD9.݆4o@~3쯊vdl:J$ᤧ+~TeQ%c#V4{&\g# lE`0D6v]ѐ1T r!!'EŐ뺽_oGWmI/I!kosEcK2T0nː*CؓTzHnif D&]Z-Objdk`9S`R4E4 ft@3kϘ *ZC({U\pD/϶al(,eL,Hy([BQt] :d.۞nnb:!ƾH̙.B>_|Lrbkn\;P}Dh0kiDL ~Lw !-hץ-,yeM%uKp`>4|}Ig(gYBXaΫ{ARB.K/EIs(m3|'g&3py^W?Q2Yҟĥيʗ)鰣b_F gԜrnk#Sy4)+lSMI9.aq V9t[B[l|(`3 ״+Kq5aKQ ҜlKo } gɖUQ7l]cctч0iLPqdd0ض|mʧGrgF%d8{"`]o0\V^U|We'?LQc9nz>ܘ=uf5Oݚ -Y٨ƺZD&/J)E\uKwcE+~.u T# h#S?u(g{h}k_dj3ٛA7g t`ß9MuKېwB.] +3Q91!S]FC}Aƒ/^4U~s s t0`Q`\)i`zSe+en ؔ/<];e+=4{ɮ2sZ{uKX5^JW`5HC2 lK~Tt\.ç:ѪNeᣑջaT냰1;VȔNR\U7 J-tCB|[=Hl]OĦp+!Vy3\pww>O+&?\Xr!Z1=`%:0DXGz3~3O` `(A5aA+ h7 ÂdH4$6h&o8P +M@V 7 s(ʣ| W?j +oԽIu'~xwpuGcF(+* _|sv҃kZ=MzJ1q'RWpTMmR7lPe(mofq`u(0 H> +Ux'^LǘNKSŬ+$apv#q6s~7 f ҘL>קlG*2z"˕"_Db}E" +-q i#W {[tbBDv|@:03bTuUva T:3B E廇*ޝSs~4 + z* T@,HGG@6NJr_=/$n`A"QY̫w͉0`PD{dӌCFXFG@V fv N]siJnS! s$raa:0 dh$BPN6r?\|x;nw`='=&aB%<k2K9WOCXGFRO\(. 8*Ld`v 5T4Q@Xl +W~QyÇTGJI-m:?'Hܞ@I;[Qxrb;ɩs'#ZQkl6| 0;zo ٯf+"~Ԓk +S<vWӘ6FM!@.vus~xwaJٽ{H0Zjjo)n +ȳQCDmjiu SH{N})*"r7]?^>{ٔe-{}e_lfAUىRqR1R3 ^,kfd0>謍إl#TN@k$أWGAX4SYoJqwKWof J*$4*jG? +Xn+f'qN9u:4>H#Î +Gg,|P|7TFڐ]6$ѓFydKlc[P#"?F*czkW(Y罨|U菱*; +6s9ygʇxܳOA?&4Pڙ3(SJ(lBҵԠ5O|QC{4OA P UڈVϏ )O4`R`Og :-,$̖ڵWAd$Y&-H͜Ո`SJ6 Ea /##Jr,#O-Y*kv%5g*tf=(8d')lxU1<Ϟe/S*pkayĖ(48Sծ.YzR2!*ڣ9Wz^g"1}vsCƤ'(FA'mW=EГ,}ln2cUGC莼2[A3q`y*ȈϬOy4y&"_6\WI{/X.ȃ3X>}uڰg4!ނ{$YB8q4U.~: {=d'hgېW#>-1~ +\90c4 i[@q$d?nm8O*U88 *P20Tlxȵf!J8Sz6* <,h.N158tR]As֙^ǧMZ!9\ހ,#偳5 n*qj/VLWU.-H%`嚪DI]o;4q ]Cf+=KeۤKKSn kͶC(>M>@hbh:b_mLYHf3LpRLC@y&3&\r>#!K„}P+0L;-c $[Φ=0ABA-J8Ld [Ni*:l+5g UZ=N>K*S_)=g=vfTNo4Zq[!RHVfmmPCvިbsˋi_pe#s"cfqYI׵iX-`뮈k6\慸2pa- zQa5I`Ӳ諳7o#lo8Vqv)W@yBSj˫otR]GfQ\ +z}C&ܟa/aBcrG8U2j!x-@!m\ ˼5rxˋ\8Sҧ"T _SmTyi4NؓA[r@8eFW]5CЁOlPˏ~w{0\]rd*f:1~V~ǮsezRAPir3auΑ{OWO_>_-0JG/4!!%q:"*=V h3 +Pg%3? G2" +endstream endobj 8893 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8894 0 obj <> endobj 8895 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv66262V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8896 0 obj <> endobj 8897 0 obj <> endobj 8898 0 obj <> endobj 8899 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8900 0 obj <>stream +hޔ[K$qϯ㌡|g>mc@V^R#;23^U+XN+_D|_L?|~û;kiqJ./nza~xxeI^~y,x /•Zr*|lˏ9CF7ʇ9Ix373u/,^\e1 ޏf>C?sOVNYcۻirX˜p$Q?襤)y_L۞8xgwl8>k̥ .qؕIyflxޛyw/ *1y[u}Z<^n(J9z^mIA)l".3̴_=SEH2m]:+cuJ.59֡{u"mUbvmr]asR,_ /7u|Z†0SyH84]~`O2Ouox굫v6!u=ϫKp% Nx9 0;;/[d\GWޱF^bkӕlW0y~;Ыw) l@7zm BS3sgʸ20S 6%|zhW~y]zQ4geg ~~:FSi Swcv^0`S\6.m,er/buw;;_V]{S?2r `*zZa|rm8{ky G^X'>%ASXQ teH|ΩtWmZ'eG:k۞v妟f $eXOuӴwDWW>%#kL t͆dN|1"2yM4n|`1UtA\3,UCݷNTLSS\{PaZ庽C꫐SΩ>,peW-z뺻L߆I:"Y_\ ?z@㗫Pvڨwbz|dß- V4fH\ыܟZPް+[+Zj@^1rPDD V(R,@^̋f=p†S5^D[뱘J0(2= ,n&y"KhWlw=MBΨNN4}og }mgFee`af(/€7DF/ j!޺`qۏ۸Rsk\ceYrVHJb JL\pW+-Xzi`;c6C"6*شѯfQz{+;"Xpz,Vi`BጹcÃ(>$p-HsܝYg(eMOիvA)&4BaS@ɈxM_ + 6Q\@xfilE6{[M۔a-;h$w`@Nȑ,1i^%E1jT;}3Vw=H!~C~4rdIڭWX/F`KB12Ҹ;xo~t5pnJ MþBQ6 t,)")bIa>P JI:|2hnIM:Vj,S <-ןֵ/r)B'>A>/}ޏ*]mM~5r+X$kR ^FA(uwJB2uwV6/s-f;$ +8[)}ɇaڶlͅ78(UqkgHI[l>PV#պNSjhzstt:ty.#TiEI%tv<-K{NmIjJ9qj\Ø_.&\tQn( $hz_Ѵ.&DJ_L j}w h"tsXp @EU7\A4mTVFg{;A>v2 ?INGq!QHz|@A4NH#*뾓5fQ!݉lSw'=@E'+wD+ñhadYD; '" ؅~h$6_yh +ll0@j#C+1 +&SWܰ@e@87 v; S\Jq3 +e/ +WcU( +$_Nm5 !\TgAtw݇e,¢l;OOr>ae5hkg 5o(ga׆ Vg7f+Myi^rf j@2Uۡqʅ\_E_ri@ vhȁiRʠ$뮛ڭKM"ٔ3,!@uU<`|Vt<*N*<¦E198AX 襆#`Ur̤!-ObK)J-s,*@ccj *2XBj6rS»D.&-ٍ^emH%$s6k1qN9C?+OQ o$hIk|e +1%̹FV0f/1)A%Lk;ms4;aWj󵤰}8Yx.-y/]MZ3uY26Xa)&ʩg +pJMVI$t/jūtbB_9ɋ@,b6CdVXPWBrM#3;cn[ a/.EVv[0MkATPV|"}Jmdl$sj3ڋz +RNxÉF&?-r1 :"d0>&):v,9e9GoZ̕qN˘#e?욻t"g'Bpcg6Lx+١TM~8UDo/uE|A{+k1[R,3 v2*R0byf K+?~$+ӑAWœlӹˮn6y/H4A84K"0vf+h-8bSP-eh"!h9 :hѳ[1rVL[f Wф:v%NМP%Kю_id..civӻۘfV]~ahۈ:/[qs 16 mUY.ECnFEČN}0ЊQ> ~}chOQӒd . +\1VMEu$>ʔvt(.|G!k{|鑟MѸ[Y;Jx'}L4V:NĮ=Ф=u9W%H JE2<~]rKb 80J.] +]-$EGRbREFw"sM؋`|}sεDi )K'L ̌ñ]s:RET [b,T[(L6BX?.We-a;wTJJ.(/ 6+Tŧfu ڨF\Fσ9JQg=۵Fse[%6]ģN܂ cp38 5TG_}PW']BQS 5#Y)G蹱4ja`nCy?M;;uc̳MĻƑO_V.Q2 ֛ToQƭg׀F=Ҏc(g/0V8 BDHԼ)eYueVJq8ݺ]M픔c߂M,̇e$TadX^4yWׯKJ^8ޜ(n&3TWlÛٝp$'a/~?ǡ[iruG cLP8OSƾ]ʫ+$֟rp.1]b2ƒt"V@ 1Ⅺ="F'u$I8w_4?1R܌ٻ;DdӰ:D]ܵ wd@fKSi~}X_s$}Q$:E +&YUUW}[[4ɐ@=5E,{̑.*Pq+L<U|2jB2)"Toe'DfWqYXHXl霤(ҭ *bW +7]()UA ،>{֮;|Je[2w ȊbL^%9\tYSQ50=g܎ȨDFDh7nކr]Mb]ӹ#tel!'tiJu(K1&YPetHՒȆ"m5oT+ &u$VQ +ltum}}5.uO,pNcf,d"YrQ tWGI/kA<D^x{@5>ŋv7#c%g@u8JtllW%M1"6^҆¬ȉ}V$W*].ݻxfl+Hi4. wrDJgE@+매cu +Φq7Ҿ6lsxϔu|HEXNNh$0>X:+Uow P/8+IwbfFv~A6ek@G%~#>!P|{ϝѢQվ\J(:{zmA'ym9"㔍uǑYjv.;U(km?Rvb.š5/iz$IT˫YޫOjp݌B=Rn=X0.{L<0/oL5-JTyB,d-/CYۍj{bUVRZlD&pry|/=] V{ן_ӏf婐6T + Ykp+|Sm)㧏ӧt>]_8y?0]N??{mO0O__OQ:[ /ӥrzN7/ʇy9|𔦏`ޮ?BKOO^VivaQ>B+* 3=}-Mw//@& +endstream endobj 8901 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8902 0 obj <> endobj 8903 0 obj <> endobj 8904 0 obj <> endobj 8905 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8906 0 obj <>stream +hެ[Ks$WԱ۱]Sx}HލC^3bM]G&)+|O/TǖסаQU@"ׇ͇[3z3761aF'7~o4?^uͷir1cF OM.*_xhM>Lsr2/?wؕ]mz-;α\~6)FuxJb!< +~FgGg꤮nʻ . +F x,_Ox,=M_e8B[R_ee~n YWX.0D1yEOwӮLwL\hfoᣆ,6]Ns dLFyF9/7dg|s^8\woW$~?`ͣ 0\ +ccNx+1mfVy~8}0 Mϗ>=< ~g|O0=ܭׯgýC.lO7燏><~zx{y /0qinOS^/_my$>kj1~fx¶mWv4!``聬8-?N_8yy kmOBjO2t,jۀ@>=6+#4>szQ3:ӎԝ+mOvǾtn]S}kegfv=\[_â\%0k7~  .7P + ்xG v1pOU+^v/?>?r|ǯ~v _'_}Ui`xP*n" +uox}7\ίv~?h@K#9 0m۰?p~u;v:F\ .ls2<`7pJlm޷^:myޗ vog}Hn㾼96@9W1 :i~@p|=Xmo~W?=>/K{ =ߖ};xݾlyi?>5I K-%?cM־/o>/bZp? Ơa _ߐ0DA6!l ! + Bm Nlh74؇Юnƅ +VrY(9-ijx6lB]0#Qp-Ӱ6F]w@>em p۱eFc|c8 +M,}$A 0؟)ھI&״]hTm܉)x{a(8AͷCr͎z 9C{u]IbDъ18ƣPge +R9u-ߪ5{eZG тx~Dk~}]L'1 qs؉Xc^xVn^D6x4n-rTx̿cuP1.+e%\aL˅˹dH4,v .նD> Pu{Qܿ!&G<uUP_gIߒY;Ka7Z_XuO̠oI;y%x%6oBN?"r+(hB\ә}QPŨGF_=ԅ~>M1}j/ ' wsQ|O&\6r";X-=Y.5Ңu+Gպ"DH{/?G5A' NU6ƶugHW9zm`rB3mQ#6d',~l7{ JN\5О~!P]DWk:agf,NX8&z'9J/^ߕgu3^rMdq/MnW + d\\]iT8A~\(`FW.Xc´Vd&>mSסմ54W7Bj4& A׵iQf'1۴gqgH/c+_6ZZLXӯ7%XIsC'IH|+k"Z^ iPGbl$BmBbC- 1jn5(m*؞x>ZNm&Rg2G1&ˎtI8!c8O1 2qp6G,{@& k&ND9KEDBȋܗ)a _fZ`G%<޻߲q[r;HVlf@7(#H2WR@bwV硳F] YX"S4N%DĐ l&_zZW.EF5m^N,{At15 +Q1Y)f8*4ؚMXLQliN@.˕-&QDns6QRofnrffmV^,mwMUJ+Y1<&:D )wu[bz +! 1ڴk(;" +*6lAZ^W#YQ)w +55t7ke:mjV7P ȱ%UGP[ШP@A33@$QFͻ/$(eg8!skI,`/T8+ґHlc&9 +rYθuZ|Bfhw>P@ ǭ~aVߡYtׇʔ]ۭ}^-Dz=f17,cP&fxmJV8MŨ粈ÐN4!N~ ߼ u( pF$1vA1]N?Ac <֩¬UzYRZZ9:M!z|ucߍTy` nÎWx@6I`aJ=83 ^UeUi&A؃EF?i#+ѸE.j +TˑBj{{bߨ E + [A2 ATдM)wq5eZsAvbAAgN%?#1 05T&zQu:{G' Y.Y}F,5mDx̝I$;4:D;1fʡ K +.ZP 1#uQvZ;q9fuPT/DQ*{=8&JfQ­U[ZcQIv]f͠cKիb/v:J܅WЙ7:A8>*-N8C5;lxBI%iY"Gm=ɡ3x~yHZWr~8s7;>']0~lVᩖ&JYrThprhAA&0bs}\<óݢr3Y)Of<7B$L +ˢCIdT(Be:ytUXܲ}w)XGIx-qeiTv_I}6'a 2*$)@{Y_5Q m=soY;vK~E.-iJEon T$LR)Ƀg,ܽMUIZZǿ-~ֳ\3Qu ۄsNuN~ꌴꃥ.Qe~]#q`\M\Hf@paz:׷7'IUP +endstream endobj 8907 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8908 0 obj <> endobj 8909 0 obj <> endobj 8910 0 obj <> endobj 8911 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8912 0 obj <>stream +hެ[KuϯelyY"’ NBbuېqelsγ4b=;9o./^_]^/۲ +,>_JKk^r]u-\˷ukrU|֮jjr'nsf} -*h/~mjLвn `"?s]J3 2zB,27c҄ v<-ǞD3In%w7n-)ցgޕgi]"ik]- m 4+KL >L~G];6}De\,>lvYbٶzD êQ +I! ߶..~M\&uʥ>kZp]㕫9Bp[.^7AVXRۛvX֧A^▗zRWЩ?>__wx ش_ʻo5v3mi+]/_W?~O?.?Aߟ9_?Æ/]?X|/paTh?3뒶xgsBס_~]_}X"LlU\/lvy@㺀pf_;0nSvCv.1qtCzgh=l5&w`Tmiwu`m|[r.QJ;JAoy/mL+_oKx{~KxE[ +^&Yu~w_#Ե ,~J$|W?55#7ݫEUyQ@3"޿HWo廬%=aٝ O_(*C/*gݦALw&w +`6F=t v hC|\pF|cqߞnm=w ^ב9tk'tw˾r j +A&6 $[ۮp"@jOw)ci$mfI#4k rо?Gmd|!eW\p:&2pk|6hU09:ռQ3 4LTP$ +GM +@&T0Ykcތ%k[HCt5I74QbaSaÄ4 '#vFf ϑM_O'cH&u<zڄ$47Uck!u"̤;73[+i9N&G;$b]VU 9:3:!@AqzNvMmB"b0IWpF%E oo#5PBQ$h0!ja0[˖T0ʄ]0 )=^E1Ӫ?_1 0g@A=Ԩe(J0K'Φ|G=5Qm)͕=P&:$[yF4Ҿ-t#mijtHZ;{aG\mn0+Kos#f?|zqePtecN#q1'OW# ?eUu~S~`s> #3_8E ȢNƙZ0-.z4L]9Ѷ#$.6eA ;}SJf_!Pei"smj0s!n} `=Cm>'OƙϭrvgY,ΩU=XS-㎃AHtAm~ +U-Ȓ +HpYNʝ*P!p;E!NVCI6ʹri#6>7PK{8h Jɠe ;vbt|#ND-L(PE$s|P2-D⤋ _UPԿOͦuI",s}5- >2()H cu ordX-3cغlf@=΁揶v +6& [[>"Q1]UB;/r椩1ZvB?I07揜c_Pd!" GIۙX~)n)iqtBQpfm-j*> (8P' L bpU8#VvAV ҏƕeAc8 -Y< qe%ԔN֙r&[pip3G⍮6dM$%e8x~+ ͈L_"BP扴0[C&6Xo8l)\((vF'S尨 o .9O@k3B4})9cXՉ2U=J+7͚kaT3ToOߕфHFoDaeG,Ojii T@T,y6:%@p"+#$e$ j#oVuQ2Kf{ a<ը,:KU>ӿ̴z+ID3~,(wHnb~٠>*DmMyP'ZxHB4~#MM&°DAlcNf%i83I=*8M3q0_Mɂ(;CF!Qi0ޱ4Wi8`M}go6ˤIo,<D^3w$M6cE̚pn!`>tpIcXZ. #X`VL2(q~`Q|/k̛\ 7#jLaʘdDtHQ40dZT:f<gժ +򛒳tb>Uw؅O$a٩ˉ7R!s6E515 ZUIm_ɭYK ?ךIMV d$}j5pEy nvnhcFi%,D@ȻxB;'cM`޴G2ׇVVefBt q$bs%moSa5MY:T(1~n1SF*L~,RH8g&[vrlqlL:WBD[:|ea>%0lM H4*rh䤋iX*0](b`{ NQek + YX鎟 ojI!_t'Lz{ⲁdoO0IށɶO͵*IHh9z5nRjD 85̐8qӧ{"R?wD6*loR6&!lFE@FN%NũBw|XIj&";G#DυpEdZK2*嬘E̲1{ ,%^, d +$Źxx0_Or.|k #\.f_5As +M* i^s;s,Ǣv?6~Bk#)mAIBW&Sبv5Xl.$7&aS2He,?G&~ \͚ +e_ީPPP~k$N(pSyLMwf:x9&[tPI͠tlc 6CϔAk0J>2[I +-8l7XʪJ~ӑWdO#;? =_Rwq=Qv҃^&lNSbkChm[+FygnԞ?)\%X[U>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8914 0 obj <> endobj 8915 0 obj <> endobj 8916 0 obj <> endobj 8917 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8918 0 obj <>stream +hތ[K6r8-o +`4E>c8?Ea\G,V}_^yyq7w{y%۶.1z.^O?[5ϕ9-޺ڞjNnZ~$L|C{zO^.[$@ϷR꠺QF Bp\ꘓ~;sp}w[{ j#o"Pޖszu7-*hpЅ>=z[һ-KkYizcBR L&H>"gjN$ѶGn'HI_:w4\ ve}grg +50z?^~z b\->lv[bٶzl3п楨u{gs2kk^|JZ w$z\ms[бlK7_ovɾo[BoxÞnm ׺F6g|j뿞/|~_ao-ʖuot,kvhw۶%oHBuI[usϡ?>?D yB_8vu k˚}oRo*tl9gM?]3?4wDTl +Xa /<,ZRkSj}V_ ubljZ-q qEWA65(;nS|E +ohk<ڶw 1tLRp] ı4}Ȥq7m߰osw~hM*j ue,7|S JBKGǀ/j .oapPvc:݈cֆ:#!=COa଴1V;Ք8ii).%!y^q'h\G:wUo +3e"A/{%0=na([`#KF0= \1rb+v a zxq+P7?vǾkbcj .Qפxqs{#Ve@ S[0H~4y=&!hįAO|g{"/],i8Z3[9tM;CEoH\ď;w:Է0~b!GMFd"?C +5*5~$߈J 7W57@Β`\B#֣alQ0<+-39jidk.ES ɴ`e= hInĕ*ˉzv3"?5,4eܼ!rFd~`ĶZ+Jʜ =H[}Y}+<nI'udB02ghǦOڍJ#&%q y4JOqD*@tm:۸i3wۀiӛkΏ_F`UO]YCa7d]wJ ozWIkAڇ_>Up =\d6-"*{'2u] >)l*r-f.GM|B)@]X}B'9)k͞I4Kr\'E2p.H+ $ ̫[ns,%R"d#Ao}Pa7 Ut8Nɳn 3φ.xЅ$+τ=HvYT# OChmإꓵԘ3`I$]H4m +`O(% +k'33+ UٜF>Xnʸn9A 3Կe.ɲcp˄9b~GiPݾ:~dܛ[O zs{ӇRz/+d4c F1<cA!O?RIB̘ڬzUJ,պqXqDs,{Y{|2"*2.KGFr?mN!-ümA`6Z},'s;;6F6=s_iq<⽝#/xd¦2n񱯒8uM]L#J#6!KQQUgdśP<#?e-ڃAM1]/,%R"'ZYֺ&Nx5&^,LXngLlޚ_gU=oS Uyj&~=/kF +TdqyV otG$mݵץ\M=EhZ}+|TX/ռJlQKgf6@fbEP]hj:liNv:LʕQ;,QJ&heF荼8|VNȗaknӐr`~S1F |dH\Z)0}^r⳷l .d5:To@$ղAsr^ |p`:8JLv>K¶SރSjhK~}cjFS/uL:?[EJX+Rum gGAPF}. r?d=/g|=(`!s?}ڸ3:S9)QTT"JT)VG͔Q F"6#orl;*Lv9~3Ω?s=:\؏q!AurDQKMGiľ7VRB΂[Ht]@kX;^}yt`kr7j]:v+n8/g.Ey{1܏gFrx`E6pBЙ[ +,tǨcj^5BYʼHDLRXL{(CaeG1z9瓫(]]%GӣĞ[ +Z,3Rceb̪ClrXEӽt>X҃D o'QRY,`0WUup܁m*o\]%|O*|imѭi;0N!GYȷ)o iW'#lx "1EOVsY@D!P|*,^ YVTa6*s)8l>ݴoʭ"%PtUՕlpTUwmY=ǧcY3?K&I RтytYHn]݂YIƉ/]!V*Q$SKeSDct7z,NQ|DW.<5339 _d΀M4[9 1>(d̙6mfbO@0$pJ|s"ћ#/Bu#6#Se@L]2q8(E ++G*@w2ҝW +I&0R qFHm$̼ 8(SgL"9xi>"㜬s YJZcN a ߤo1Q'm$U}h_uV#N0Wz!CQL ABM[lő|Ȥ "W*#ZH7OY*JZ Q +Vo $Njqp;ђo/Nsb=ܮWsES o7S$!u;O& +6 hya2lY8R.3.| +INJtp7nyk" ~5HPkaU1~ +b=qYz%PK \JA#jZ:{9oۄC}!lTu$7C9|Yپ˭S|lx2Q\<7ZP \A(U)MR%]${.NM];jtaC, YzR dK5$_HA<'I+d%4Rhi5i:B3/|^FĤc/K6zrPZ%2Xy sŸBL͑ƶ )-,*vʨ }8z8W`<*I^ 'RsZ,b*>9D*"e :6q<ݾ2,$2^9^6 "EN +LKu1ixu)U;z*3Vvp-UP"L*X"B-NcEs%B'_"c_L0oݚbV/cgRtAt)VćAHL^yxPc$dT43R c*j; NpxEjRgUbTA|EjMjv/! a%ӥΞռ,:4212$ XɓQbQ V*kc&'3.w%Y]))rUeB֡8"Ջ(f <,0쾘êd)i_cNjqY5CZlJ6vأN4# v0}'('2YI.60"Wp%Y_7Gh"Şw]=8NmpNg36A,$d4$e$KaLy0ݎ^۸G|>(8<`˾K ^䯤Te)w1"}mg3b ! AW#ҕkĿo(!=RkVb`8+XT9^};="zT_OFmSnXC'DeSZe#{SʼnSED}! ?15I+_%A}Q()Y%bޛ):G6E~)D(R ǡV_:tOl>nKXBJ:X/4ROїR?fs7`]ek]d1?aJKj*f|U!aEC׽]j<ǞrYIetdhC}sZ yoST,KT\J0X% ,:!C؛,IBDX*cS +05>4j VdS("V $ ǝK,/\a"B3 Z.؊/?=} [Z +endstream endobj 8919 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8920 0 obj <> endobj 8921 0 obj <> endobj 8922 0 obj <> endobj 8923 0 obj <> endobj 8924 0 obj <> endobj 8925 0 obj <> endobj 8926 0 obj <> endobj 8927 0 obj <> endobj 8928 0 obj <> endobj 8929 0 obj <> endobj 8930 0 obj <> endobj 8931 0 obj <> endobj 8932 0 obj <> endobj 8933 0 obj <> endobj 8934 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8935 0 obj <>stream +hތ[[n~_яAuIN 'V#ysbU$+S]wxw\ݧOv0ç6OU&;$c0Z704yx>]j=zmW_V$vZYC3@*0HRJ鶖L-Ph {,Kve#آp\&"s ղV WqCN hkkwݏlp~㇫ߠ@=V֮7axanPջ8_ン>XbH6R&f5&/XNQϟ~uT \q6YґxT! q_eF +sX1j""@4h@|64jO=#6pjBVEt(e)>. lTXZ0lyK1^P37wRmپLCk芄|,XQ 펐`K0{5ʹ7:PLgu,3ѡTLc̕+0DQ|&n3җF|fUK + * 桘 +z$Sc첞lb54C+N27=n)Uj:TCz1n\ Ȧ@$g b#@5 166ۍ.sJll].[a#w|CBbKpR˜fHF(QLƵ4} D5IPײxV_X Yjma͖+NQtM'z#ym\]MYL̙Do }6d=:^Y(V͆/jTk4by9R5˪,Zo.k^LՈز6}.`h3'8IwrrO*_7(?+rp[X|.tcS PB ^fu;b]]LzQՕoA .-D9i,dPR%6[46@u(ߣqP6I&F ^!~klUyǩ wK8 ai^&[Yt'jXb:ATMЃ4aa h+iU:{Q +SF{<MᩅxAPB-W[iQ =PZmcI.=hXT|k՛1{gM2b4S"oՇ%ymR|N;~B}|n:qW!򞩘(4sSzpv}97Ǫٰ9[ "ۘCBmc/.U~;ri%zw~B-[zbt0BBK*\3"Z}m &i&`XpkkXQxsAl.8J]qK n{bԮay(70鷯הHי;b;=-?Ծ?aZ6<|}y9턁`5G5fo8<=]ׇ|*տ})J|Xc7 ?GwC=}>)|ONϥ:껯k-?p{h:겖GT^:ޅ:a>z5^"#avw+2[%mbYGPlan0ٯ!VQ;+k +Hʽp[Ee+ٚivJU^e.֍8~桓8PE&W. 3~A7ku/Y5ǥ7iӰp؉T58PSqh˪i ads{AثQzj=x5*ɅF\}LB[6"fv™[lުMWN&T"Qoӱw=w"—^²] jXKSKP&]5?_->Q/#v\7#ߠ. E}ZF*4F(E|QfdT,RH2\?#j~,I[,ZQjYOS/R6fA\eˣR΂. >YrBZȍ MRw ΣcVQXoRk *-YYR2Uy_^xxHc쳄bϫcb'n鶜FÅj4Z3"FP>yRM62;WDIPDU' kZim ϡ: )|y֓Xdm{hjivFͩwm.5 O0Dqn/qX^x5ڍK2tzT=] +`qgk9ő>s~"|mZ$ӥÿbbLǺb3v/s1Z-~}}XZMb\4zŐyiim`{:saH朋y@o']:c7-?;5 +sĠGf4]:\lEhF%D|n\{5CMe Q#u+tZrofk7MO~Iʥs_ydɦ.CT*ћ_N~m:5&h Vy}n-ٍKy |yyRLuJ3ꇨB/A9*(OJhl\v:U6 T + +9ŋEr/# ZG-HHi׉8IP2k,qְV&Il>ƯY[ߎvۆn΁>iIJa#طI)%C( +vO5)ct>ҧ2UK11^Vt^ijno~3+]:NXIv~VidAS;Y~*j(+Ыł|J+WeffRV+q(Ij|gk>3uxaC_HKFR8k +|kH9H?fʖ8e0Խsh/GWgFJ]hT\nmp9hӥzp=BٙB-qYj~̳~!"=HbgSarĺkO)cx?SmqO8J4*.Z}a,NsBF"lN|||9_p>-1ѯ6#ػ9wi4Z K$'(T%Ff #Fpm[tk:ԀݝK!`S<~}{_k`brgp͇Ґhm[{iVcN0t~N='ukV- +T.plM,^EntC\Ç$ĨqzdfYKXk>`sG{fykT򕛠hW86u)np:rB8k/[ +sY儱g#teunًmR¶0(+h=qOլ?}8b&=8[> QI;P`b=PB@/YFV%BCMgd^:,<V.g3*~$ƹ tv!nŭ57Ax-bLJqmĿ}~PW}?DCy@,:' yo 3wOA3 GTe= +To 8U@(Q m\Vq/r +8brA1ȿ>&nsUfw\/ˏP \,|`@+RƩJؚ?IX$$IOW/rd +endstream endobj 8936 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8937 0 obj <> endobj 8938 0 obj <> endobj 8939 0 obj <> endobj 8940 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8941 0 obj <>stream +hެ[o7? ع[ M h('[YIIϿ*HH70 zW7~O:?ys~'=ߜI<f甝?駓Y)?(e=1O홟 < [tmk[N9Vx|ɏL[W_^C9TmmT#*"ōXXpvsT<.X]6H>l# SȂٞ UaD8)uS”2yqd2(G+#> 0@ Y!="wJv2ݞDp$:6v;$=]/J^n6 rf!8?l݉XM?|}~fNlly]9M2,a~ +s즣kn +l<E?S-$r qAl: D={&M&O`fo~4O_{{OXvZ9ܻN={=}c4 gq:vC?O||mv7=o>i*;] +&ȴrC&P15jMLwԶmK{j;; l6B*i jN0ffLO|OLv my zb` lP״svI0C9,O`W cR{i8PF۲gw!85w;AP @fLe~j|XqfQe<{W4<"LCM?59/C䟅FSʿw!zusQoh7f)jvhi)ؼ. A+Ҋke ŶVp3vC)M(M yp7>(^GyPx특صnFB;ֶ rAɫPD"iiU^$1ѫ9bs^Mx{ʪ~b+P]i@h'aΑk`yC7/j(Et5UHێwmmivܷ|Nh[ݥ]kU LB'>è>}9k°QׄN=_łUxL rLW"w\OM/MPQKޗ\xlQBGyxk^Ú  :#!@3wVʺN$b{"mtwA4 v$ +b mں:hSg +{ƒm<8* zEiVV.A30? LTbxy:*YK;YGNE坶wYX8#61ϭsG7H}Uh&n,hecrEtxKRdENF50bꀦ0qP|)tce\Lݒlg^uãb?$B+bX# +XVHEI`w~3KAqYWh(O heŪNQTՆ2j+ jP4+|NdڠN))-@ΆZ1LVֿ9DF=L9W0"w]EXt;~֑\Չ3"@ꈅG#Xɣ3cgMh&KN΢ۈ# .!B,!cnbB) F[L]d*Ӧ)i︕YIxEB37DAv OP_'A07˳8J5uX3( i4,OFjރK>ĝD|2%=ߐղPBT uahոMt.U +qvR^!54dܥ:|PEe{T@֪%GwT;|v\w6VzQ@Jc D=f.5,-ry"]hD[K'6f"K ~ӑ8’vpA@>X\Y1 wCGg[XÈPߙjH磎F\{5LqV7dg{861_!Z:FIJ;j"}lV6 r5+l{UO폯- i6*0?(^KM*U}kE~p#m\BZ$' LJ$49c:G/lz6CJג +yDծ8iy''Ճ<_峍f,9^M-v-ŷjj), ~ky>a 9pHF*j}l [qq1`m-m@Ao J=ɯ}ٍ6>MNY>i ZF0˔U|(d@s˲a |Ǎ(?]ʳƐh#~<^~z_gdCנ8b(~t`#@.ӭӿ^o4]z +R9{zx|EXŇRQ RA\̾]%GWcB +~'3DB?bF}ggg7e8 4КaH<؉16PA` @W>iG/TYϯ8w~Dbs˩~KX@ yJDŒ Iʻ{WMSE_UTtsP4Qz]f`׫Yu:Ɍzhi[p85J zܺ jS@8fSI8 + Nܬ !̅#_lGw0Mv;ḍ_qvM44 ˔0qTW-kluKWAgΛq-̜uX`C J},Xfpp/AYy*yX ]YLJVp#dh,ypy:\ !>R^^_?'@? @ԋ tq _Nդ+ ^^z{鞐}Q=)U Sk_TwZBd;@xoʕx#9!BSjfԷQH~/]g/ѠYm0I뗃q' z2o@4ÒpN" SՒ;e{9Ueej7X"fBp,b\7'`wu6?Q^3-1 +endstream endobj 8942 0 obj <> endobj 8943 0 obj <>stream +h|TklW^;ε6PAf"TA )-I*")m#;]̾_]ٙc K\[-mh!W PQuL'ww-VMKKՓ?~ĉo M}O"pʞ Q׻խBB=iQhh^hjNh4'wiNj4TjӚN hF?[]Ů6m־ڳ~}TXV<;$U|ˮΟyW9!>!šZZV]Su*m5 ?v~ ~F|~0:ݣdؼ7l=} (ma6X\/ @Οߠ.=(s_Z ܌-AZ ?݇{]Du6K]ҥt>4<yv0t]ru+ +&whuEYdOn#kstJ (VM3T'r>>jvhP }eg!2Vp@8e A{h 3i3 FBJűx+i!"D!n;?^+Z"7a"iKѴ]p}_D@RU[ +ISY.2L&ų@G腉|RLfs9N`I.k 2B o͘yٿ+2O<'T&pz R^M ?R\tb{j%tijtGc%Dj!܂. QD_`DyVDl|IC*%?x9D^T\PXwn^׾CgЬo)*6њFzَu.nV$R~V_̈yu"l u)U;͇4n88/w`ږ߶h'fvy@+Hԃ=K%v:6׊YXp(fހXFAO$h$V$Hb0JG&=0H8ޒAxUkEIj+kfD~02"&s4`,SQ uJhG3!Xτجrs m64Gz/؏}z~uǍwo>w.m?iY==H`iɊY;'r}3<5sg]saTOo#6" 'M+&UXςl6lz|R(ZC7RU\,[WC:꬙IecI9dYX'3e)7Nl&8髹wCM)M3`F`X2>FbBg) !ȩߔ'NaD"H&c{>bX<7ISA> +hdp> BsK22L1՗RȂ?P4IU2H,t6 +`0.Mò |rKT~NёH`n|\+[ȭ +endstream endobj 8944 0 obj <> endobj 8945 0 obj <>stream +hTQMo +q=v?c6ЏYxZmIa3y +Gﮗ5h$ [m @i9.NX$aĮ2MyͰyc|&wߜBM Kz$ (l/_}-]fs+i,) ? @>*nśIBa! 6#ED<;ѥLDWt &%l<}krrB +lokd? {1 +endstream endobj 8946 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8947 0 obj <> endobj 8948 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MSv32129V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8949 0 obj <> endobj 8950 0 obj <> endobj 8951 0 obj <> endobj 8952 0 obj <> endobj 8953 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8954 0 obj <>stream +hޜ[I,7r㓁J%w&HsO>>T$ kf֓0Nc"|_^_|}wy},Ӓ/32|)%N|:\.w(˷b9re?|a0\[.wh\' N؝{w/:r\h aV3|X =\r\ M/\`{WƷu.w&xTpM_85O>u)ceX|"q#GB +]O#t7#j}Ӓ.vo鲀Asܯ<6O;S˝BW +'+vО\RTifx{K܋I,\8NM+S}OmN/o7&n7 +2~Q +_&v@$>^QPGp})N~0).D{};XsFM4i)x8^tMpP <|'uLs'-~S4v37kH叽 j8ʰR˵Z%h0;Ul +}Qx l? Ion盿~[QV?rO+ +Rӏ" .߆NHTt|Ԁ"sccEƒq-9ś}Tà`ђtݣl΂oِ}Q m3 +P3x/ Y;cy SSQ)Kײg~~Gkz{$R)s+/t) eҪPN^L4L!Ó|U{j7vĒJhk{L@g^^X;({9NbdH}&|cmm82ml^'K~Ԋ35v"Rc:8G9oJIW@m긹Qu+f̵Q$Շ>]zCA8]]oF=AL[DsZHF$0:3Hr)1 +Sc~lGjC5SPJдe@Hۡr38BfPQ<Wcljƹc;alx61ɛY9r"Vch3ZU[tI 2,ePL"挿srw0F1Tc^ ǘ2lSk+Zʉgf l Pv@zbD{u\`2]nebz)m:O<#Zx@͕s %[#@|~leUHr$dj(TGi/D3G)$no2Qrt˳>ґ{FUYquPc-N@~m&Gf3̂D\(ST)i,e^p#/aTM1c*1i8,حra[r H/Le,;K~QDe5YbagÆ8@v|QƯEZՖ댲s?P`W𰑯$8/u]׃ tk -%5f8-w`{Qw[ޕR[M Vth9+<+,xD0C2'@)e0JݫL}{NI~E +dž#@#B+=meY_J'3N695aǞq5W7;P*CoI-(#L$ +AĮʺ|QP.9GÑA!E` "hpW|h-z|(#]Az5r3nV"v0-2Kfi3)NAX +X F(8f>t"`:*luDt:ۤݤ)L݆sViii3QJ D ]hIZOPQe!g0Pgi9.WZP؁!R򌙲@Đ~=Q@gR.pB@;KLUΰ!YXRjZCELXgǁDhP]'a3Z& +"tAnvI2abЬb<_&R30d%3m94RqaJw};)w7 + Fk]!G 3q6nM%V<cm=IG(oi$/$Yr+m3[CEOt)It?KTؐ*`Ga`t<9?17`(R +q +0sTW 7ʎ tb$eb#mgکGl]b`IVEv!&D-3ێҪueFeNo!ƒ4 ej-E +`_R7 +Y<'vPy!J%Ty )'k`R:/ryMr=˲P6ҍHTR ZplB=SVA넸G:v19 ts>ӶE#Sx,R,\SF Q$EI)8 $: +.H| 7ɸMr^Nep@ gIhmq+m]ϢXkQ8 ^wk D<7vS\њa9gR|vRmՙ3Y6NP$sDM' wzU4MG* &Dx9O3XH`qM$,hZVSu+?:I bŮ?q4WhTD+l^n9 +-SzWoJۘObb]-j@JX26 gm*n[g;Gg࠲S{՜]g&/y(Q~lYz,=8ڼ|E]Uka#]v11OAKB>Sn.R=.O<dk;Fո[g\/$YSŒ+*51Qtl2Olo9HABq5]"u5ھpNdc6k0=ƍ9=1]1,zKo6 ri[ogQd0j8 +%m)p>MkK d嫎Oً N0z ,Go.U*96Rtr6vSmLD8{Vf@Maoa5نE:mQv,̳ϣna +s"~IU;D1O)32k=y#FcN(qPа$A֒͝I9:@B-9j77m鐌&^[YDh|׋#9}n4aq<$Wjg1k'aeMYUr,I YF.ubKef 0+/ngތˡtЌf)7% NάqXݍR3pLZd/L:nJλX4֣Eʞ<f.[ ~:3ct5 +e՜Z"Clw*O_ 'I*T0vy 8hCyJb!|d'.f&)VQvrfVD/-/$UͺϽ|Uf?Uc;ֱ)c +ei1Ϥqw68.0c2MryZT1 +S=0CA_MN݆{#AE.s +1yQEԳ}) ʰz_ˢ,]JGu43AJ}($.JGdqI:JMVqG P)iᄨvqݽl@HyyկBMiFvHwZW@޹%$ѣz qѸ`Q4xH8xsL^!io=min{!ϩiώ /y&Lmt6G]OK/ʴy +6-ia &9PV]u` 0P +endstream endobj 8955 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8956 0 obj <> endobj 8957 0 obj <> endobj 8958 0 obj <> endobj 8959 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8960 0 obj <>stream +hެ[I,qϯm{PHـdtsZ(B,_kV͐6qr勈O?WwqvYsYrl.??\uu~v_א +ܮiOE納gWoWWsrZ>nnGxӽ?뿶z\󥔸:VVbY, ˂R(\IC[kS|mP˾)1e~am yEcЧgo ]zטei-+M/4:ml$U/>a_bx發\n~-Ǒ $/}MJ<h:U8;#ĴW8o^/}XW/۶]X^~zy یew_RT̽峹_=/>p%-;v=9t즸%jƋTc_?oOw|W tklsWt \^K.^>׿|o_߿ˏ?}~q 3lY:cYtͷM˶-y%_K0/s~q)Շ%² +[@8pة}gnFXf}aHjK$"tk'x o#jsҥq{Q3h.8ur?6<ЦGG`KDϻ3S)i卾٭ptOtVp$#4ϠM?]3?4wDUl +}Q¸l_xp;~@Ǧ ß=,V -̳Ղ3.]P  x4M ) +c3\׹8 ijُowjnI3P)2>x+aXL*ev/ͪ6@,,\C]:[NE$ >P"^a`+5OaxأoրћQ0:`^p}UHU!p5m[ 0f[}7+3]"m۵֟ l|1mwͮwxȨvec1ӠLDcy~A&gclv"29nכM`AqBo w(oi轣uo7.-ڝd>䵓߫Ǎs⛏ÁsiDF%T,٬AqސX^gcs$txΰT`4$ e7O=)=R^R\D%Ki Ð︬X AϺdy?҉BR`'aANf(bw7 M1 + ['Ʋ;eE փK⨋2o.:ua`urЈ)KqIBܲ=TPV!ɐ5S DηNDlؾvbK|:{ohf3zU%=J#>P<ǿΧoDlToG2zw.[hDGã_1=W-'рoªA-"~߭9LrQ1١='sArI BԹ{@7`Q^V~ȨVб:{'%w"@$Kt,EJ1 ~:|ψ];zX6Xc0ڦ?+PdDSV&s,B*'Pi +Qӱ`UdEy 'r}ߨ=_ mNmuFh ~UQΏia%MzS;PSݍ]LM ?ՔP{ߖxr)NNtxyxkeݺl=NuZo [ q v~U^Bv=_$z!Zyy%7ғN&YBC].\a2FU#!,B˕qvlңdqUealz¤baEVU-aʮDU!Thz3viڞaSHn. +7(!Xq&Ӟ:e}вs ۖ`|cGM$I ;qÐq4nCJA xm7sm]"UcXA<&b:By gcD=`v:urs u[>v5CtzM(wuL]dU&Ok mMCA5c?ncJa80G pKZc7ح-X$/:CRE %P N9;hplRFqL$( O&9v]=NVv*|~&>` sBLxpVo &*`v]N‘EN'Lx] +LLҷϾ?Q G',>̆dId4("(imq)8y;U;Sw)mŘŠ:>W +|e{Z@(>i=G~ṵ.w wtrKa&qx[X t+GͿay1@eAWn6<Ђ1`$]&V~WkJ?gף`|; 9vEJU=Af1:& h2A7K(Dl\f@&̀&$2]Z҄<LNC8iU% 6+ loT@5Z< T~JUƹZ-l^G'FvG @%^c֏#ŭ5 +Eqv7,lAwj?E)`]%yɜFįho(/&~p'd+1Q&VOc­bi~r7Hc/B+Li5JϠsQ()Y +VNLF+z7rvrT +:QGYn%$z J1!p=6HVuD/Ļ^aI0!%A Hrlw%彶(l@tQ$5lxEABwJDl5tI:@*rg9&׻v.B.w%~;4J`=e¸h9}gd#gRL>~()-!f{FVGP#w*)}(!LYfI =ln90Q{z/Mz'eyYtHYݒ+gaakR-|`-,Q~2#;bJ/nbTu~0!CL h/TG0c2P6=X0:'|EGީ lbbPDc93V5@* D 1dS7;ޮe<8r +*K]h4̚ASz!@E}^'|mňjV +HO-tO +8ss7rA7d9L&%avBN:dVޜي!`(te+QjN䝆,3#x&$+ 6-~¾ϊXR1V"Ie OԶɊc;8ˬ,Iy|{V.Ʃϳmgpd7 xtLQ͗\#6-JzՄ19&X8\m*4߫b̄"8hTr0}~SҊdݨ9mdRE] )^F +*6v2)Y~bK,t(2<S fQj40i2akKdNuf~&ˏ94MI77Ģ&C\U4bOiG4ř}TM{k`n }#_DгAPn0Su[jɻ]ׅR0a]j0H00sy*aS$?e]Y5*(&-EDbXp v + x%Nj8c*X|~8HcAE_ʽfA8]UK t1VBuВ>ߌPjYүc~krx3r7 "35["|ܘ fq#jZapl,ʴx0 I$r *"\7쏸GmR5;F#S|J Q"hwk4~P3Mc|]-V1f$+G=dfduhcTf5`Cxn&.7L%uL` I>'G, [~AV?͖NrpI9r;cZ<ca6YSE +12#A>G)=:XjYDU>+TIxmFu9) 𸙜[]UZ]u{2T;)aϜ&;Wa\+;y6|ɬvSDGa D}'s&I!XH=t6#D3^;\3R<*&]T Q+?Ò:=t]*OX/9`4V &3^a0pcţynT1\'J%<-?'^圥r\9qpU:I:"f.6Tn*5xԧrAo.Ϳd +$uBA +#N͖J*'LNCĀ4S\T՟{ԗPr!^QV;*q&/hBVՅ9QtTp0Q .+M %)jYddr =ji'gG<,Ihouid=ڔXf2Bk8M]vt,GmPRptgYyB\Lm٪N%^LJB0'v9DWgMg9}En%Y$F'umj0Fӿ6=u ,$M"֫` hkY|٪)rx=VXG%(8!);GxN x<+dݴ8_?EMTdR8IAtdRN#r]V-4LTcдh $-b\cYϨ8a#.yI .(\\6 >ě0CzڞNS*ԺA[ɑLb`.X8V܀ńp$~eShL4I;L\>#vL:#(*pIs:cFhM -ew$ӓ}r˶3v:z +qI-K Qum$IqcE}~O@U{ +rTXƊth)/z$ѤIe Vf)+*2}V5Q]5`} 6fKߩ@qo3x߇/qwV2RBB eS.X-. >>r Sڨ|,U i?nY`6y)$`8%/#Z# ;KQ?LGmO h6l6dwH\Hf39 /tRNCCYpo#zZ~ap^ F]]RUS=VH]u<~ ~ +endstream endobj 8961 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8962 0 obj <> endobj 8963 0 obj <> endobj 8964 0 obj <> endobj 8965 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8966 0 obj <>stream +hެ[ˎ,qW60w&Hڀ-d_@ ‹mƥ;2YC0z32Dĉ/W>|z?r|Pp~{|է~xO +/UUW_g eonnuz|]d|Yf/@xǾgd0X! 3KOI.جn9Z$'cwܼ 4{vyUwܓOOW7~е9~qr%@&>}[]w>˷^@Tv)CkZBa[sBGR"H f:įץRy/?Ïghɗ/ޢ˞/Cؐ>~ `*qUj0>_^(K $3h +/774LEn9v;w ^{|*\V‚XxK ?C>.>Y{a_C_R~ߡSi6]Xtɗq3=!p8YZh A }1><}KiT,]lឺt:q rćU)]2z͊GzSaRa KV3`oݐK 4~J}'f?u5#Ga +"d$AL@[NdkۚHsmIp,M;& l3`j;_a|AE h y1r  ;N nMӌME0pfX(vm5W1񂍅RcãHLw'nņep&nq mʹ :hg q^X{\0}`l +־:÷ш{G vr 1lEtėX ޳s#HYkNXܠJaR Fx 0D9jΎ*TY_8 Td fs7GRⲺej[Bw^&Jj|ޅdX3` +=++kG]S`_ⵖ> ~x-,50ʯzCg𩻮W;3h_ŮрP+ H4XxJ f-V&tۋQnuzq3{W+, +LAĈ2‘YK7_6qA  QJ?bٚc3a'#l[azc$8hjXS(˛1+echH'#^i]y[n>j{O٘fmGJw۾OĬ1*"E(FvUOĐM,6.,ΗoVAs2޿ p3J;3Pp=cOPJ!]͞Y=V|$D> =H6\L3(#ػ3S58F6jEGTӛL=~7qYVf [/_@F|g,0oV+hX!}p $)hmꃸ -=s'eq5Q֮]u &Rn=#;ѲyqQwTYK]?qb5NIi*wtɌ~*#FI6qJ=L*ϧ-V4i _7tK{`RqP0 Z:\ #i0r "'}gVOzJ.]Yta p.z8QzKgzE`9 K#5;K6ɔ!nGs`Xùۯl䯠>b;9dQ&?v!Ap:ь<;ewHq[} Ȱ 5?f;N{ğO>9h I"n:ہGv_B<)塐٭{t}զmQ)} +/]孌ܕyCQ3"ʭUF hz|*x뤃gF0Bq~ě ?Aa*. +KbcNe8 霜`zWy$NU2kX !ƙjX)C 9]xSZWo[-2O.G`Lu@P'&gd-Kn;s7F3%nD.Ǜ חl Zzn ((If%j\ +٥ɊSSK@)CW5 OPg.םD^smpRǛr~jP KS?ۀfsԚr.3csh!/wqLŰ,V]x$V7X{Uv|\ 6!YQ%YTؖRB=-ݟhn> +ĵ rFj + Rfuӥ9ZޜWD*nR:Qncהx3NR{M9=3?L˔(Ф9)gSV p9i|xFKb0zoaDʤ%_7ɉt@&XhvdAR$-Q)ͩBcf]k$k뮿>߷pv'd2)ҶPB:!bL~07D1G>r\p\}_>(]a}mD.rqrr|֦q3*F N].<*6S88i(ʀsڭFM<͹JjQkȸ_DI$#mgX:Mtg>HIIv#"7I/O)Mp&H 7vM'{[tC#1WIʈ3Mp UuZCG M):DM{y(?۸JxQ+NJG2U 6 0&1xgJEh7 +'D2GA؄,{Dۀ>Kmb4a%t159 b7]Xm0( ?&-/ ,jbLTL(Nb FMjn3vQ$>g' hT;8xvd& +Ih)w_HSr|Բ03-$)ٜd!NH$^OpdWOP,L씚LFLܭs> Q~3$?`ԓi*D})Mh~eԉf˼XRsF26(!l9zL\lAzrnW2Uzַ2.N⎝g&@c6&hr.~Kp1-ԙ #o-1&p˜d,?,D9^_;9UоH]MƏu˴剃. rd?ɩyN6#=F׮ϏZ*ӣLLrs91-_0IfE^EbQ" &PI m1 AJbɽe{ȜLuܐz "HߛVrnCI˨UMT #KXhnxPדqz䈈=bLv=Cs!m]Nsgr=O7/{*kgɡqHZr*ssEbTZp1!;/M0 QWT=V+UX1\8bsoX[>'!/a4+9ތKQ.o3Q;hX5q*aHPXQװ2;YS em[ΠTQλB;RsatGO)HǪfpz$8 vX\:/$k&╥HĪ^y6īd#ɦLdri9 حm6U5'Uk/Kȇڛ 9L{{dRQB3_׳MԁhbѐDpmu^i{i`nL'wSB&|PJ_4,S)qΊe{s˒rcr C;A m [Gё'Pej +0S"Vf(4\W'g}`?P(FU<ҵFٗ..AIHqV4Ysh^O/٭!~URpI,>)LTe^¢W9{+iQŧ$)0}r#WŤ^i5UةӰdS3febIgyLoco.d(+M>=) +F.aQDjXiexRhÿ(rIV~ d剿LQ];JiVto:jC虋['%=? ['.@VB>V0 }NgY"~m3Tg +H$-9C_~{AɞY,b+i*CxoʖkQh,#?pq:ky )-$" V !` :.D O*pHL(0M]4[~$#jַߵ"/+4wbpX 6t::rpfҖTtF K%>AxfF%\m^B[(S x2ꤩ.eyTmLCjÈ&{WBl'iihVfdHڂ>-⤴Pq獹ʻhP\:(euYƸ3EXjf]I=*?fyw>"J`oG$JQ|;57)^rTl@ +F9ysG4~!eǺ8$uZ$dYޞ.0hnͻ|{48Y]CR1MŰ)\(;/9ѱ< y~kQr P M]("S }~Og:nhUx[MVҫUţZ8z-b;5#nU>$QUs^?M;a>dV/D5kKfb{9USt.Ѭyhl1mIY6sV +0Q +endstream endobj 8967 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8968 0 obj <> endobj 8969 0 obj <> endobj 8970 0 obj <> endobj 8971 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8972 0 obj <>stream +hޜ[K$7rJ%IPv>,|.M/$VXIwfHF]$|;+\˟^_z} pyxXR륯Kk^r]5ZۺVx ~-Kau=2Kvװ>z>aGzyH]z%X/%mⵍba›.8/ EY54ƻʏ 973*OZoczlc ~194Fύ?ӌs7R6^ KIewR4ߤ7:}qqA+\%O4sSYNRz_y~f[^}}X]z%޷ϟ^>^l=,|qouifp;_h}2%FXɱi'-I˖/qJ8ꛟ㧿z_ǒ˟0͖"5̼:]R7 +)|=60xZ5Vkay8v +Lk=Y&M^AEy?R4y04>7%W#pBݰmVs'y2O~M~<"'gG.mh ] +ߔY˅)o|Z0&OFAэ A~䀄;Bqe]浕2/*!jJ<<)6v2u* (-udƱU JsQr|O [[*lʸo5/Cx%ß#,vgh6[j<>mlMZF+b [js}@3vP`ĩf_iUwsYVV}*6B@!N`l5Uy̼}5tK`A*~T}6fduV``OKfFDsN(ۉ4Ls3\5j/?>~FV n#_~vJeD&3lt|ž6W%IIvnr( 66kc%奐1W"$J~6"M27=$wz^&$N +ukjvYrd|T=;28;,Յn#aXRcNᅸ&k{h(CE-Eطl/RB€?Pс])by \Uו9H(ԍ h'& GӅIxIFLYGmmMEdj\Y@y= q݋FW JD|8*)$P u% rD$0`nnXaI6|kQY:?yƕ +mTyJ! a/9sy2HT W6yâ$8p,8](A%2q7L|&Y6Yƚr}(̨ŔQ :s%rDO;C w{Tw948 VdS3 +cigj)F&݃ U^a016Y UnOnQ;L&@`])ty<9ѥ+owQOcN9P] SK:ucwUvv0^%A y% $Co],H>ydL-ͧTsPi)>lEywrj'!&ExOI2d'׈5Pa.Ir86So&Z hh*JW8).[-h,HM!I]}:l ;v:$9fh|cz_uZ`D `j?V6+ oA/rM j +.|ySKxՒԄxhxfh#;B_a&(0/ʣ18l"qcL'Іr0"TIqwgaF`Z82)]Ģk:@R?6`dnWyVSDrj tt/Ҹq/ f𕇌d aPD?̘".-"r6 4o<Bv3BoOD (3a*jɾ3~ ?ch"zVފ<yem\ug~q>U=n2僉r/TC_dzf EIՂNGo lŠlXCx +.0̧^ {28bp918͚MKhpEU vI \; xn)߾`rhDVE +ޔȨn:3!$VөvcL :G|ނV5\^t΅8EJt2QotG?w%u-uqj& 0@v3Tq\܍ʉ|QTΆx3A:W G̀6٢?e_=M{Q;qsĿT ~M.Pޜ=BJ2Ĕ%n~RcaFkx'`4Gg{>~7H:[bJ]LݻwڸFwȗ֡uX+lu]NǪy<;FWm^&:Hu%(|ȵM,t-^`3Q7ň3F `(/wSj$Y=_YbY9XۅL,>EHÞjrF$0b,&yg` A 8tWR+),"AmIdvy;-rW&g$kHVLm ;+Jȅq*aJ+qjKk7HDd7/3M4[wpߑ<ժ' +-UXYDyAX3-ڨ9UIό7ӕ~[طM8þ6*6f9[7I .\pXzVQ/gDȄA.a*G).w,~@5N?YT]vqؤ2DeJLU+5s̹s2 +'*d1wV7PKDs`h\ͱ ףF ˑBU2#䔌O+֚U~5֛ӓ74Yktz&>"14D{m_c/+i "B0N|>f'^ maix  )jTq\&ĞI]$Q=TpQ6td 8@EL4KvsD+o3#񴪲K) SHҢ`V2WUc)|@cڊB͡GR+&!qy=ɕ.77nC8S'QV?P>v"^%T̬u1(:@:FAF+YkLY1ZhVvFG FjfM>CxScsٕ!ʫbqdܥ)6e> sOakBݷHU[ )n[qH!xR:޺L`1:UT j&bpE1z-:TC#L,ۻb=g%p.e&P(t~z'詚]rrRSaV}abAHk%_LEb*"ZctcyXnjrvN)\ Zpgdtk{Vc q9~;9`@ݺÏPQO 50UGlgNi;zp,r-Jwɿ*]bԕL&H.{ NpЃ{ 5LJ$M&.#1o4qqF˲ͲX=gpږr +]zJp(˚4XpF,zoaSK]G +cuilf,ej ,Daa +P\*d6|fMR|Sߛv*巑.io___& +endstream endobj 8973 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8974 0 obj <> endobj 8975 0 obj <> endobj 8976 0 obj <> endobj 8977 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8978 0 obj <>stream +h޼[I$7vׯȳ$Hs>dt $FI}sy+#!}a.O/^_\^^Re?bZlWwye庬.Zzۺ5Z_%JZ]"=Ylm}h'X߭O}of@Bۺa>a% ߩ'+Ѭtl96'I5}؜^θ*}쉫y ڵљ蹃12i{a1Ά*߿ԭm}ן^~x}K?&_J)ŧR//o/ Jz)V)4 CAʺԙvkg53uL]@S)dr OɅu}^XF2&E$1ਦqu=j/%_rY\ԵO˧?gC]?}??^Kv*ǧW?z7K]Pb/W(ZO_?_k۟-^_M>xQ?\HϽ]P+]/^ W_v]K5[\Tᬳm>'~1^}6mGdR|r%BOjI+:ƶ߼X{{5K=Tu*4}u\bC]b[:̔{f,k%B//6jbw]W[o-X>piU6.e RM@vbžZLBk{jp֕ti{?6v &R4(:m+ҪQEOTǪ),=ti2$zԺRmF'uێre;j(?_SR[*$m_R?]?X@K_wڛXյOگvJ͆ ^|I{R, +~C_u?b xB)Y{jҵ^jR)s굖lkTkT:)$ˍ3__!O[)6E{Jp~p/A^JV*%2`ḭZV>n95o0nL6)&y<P0GS]fMIxgn1'%aӧӠp} +^di뽵/|HPۋRے#[#}W` +DynqG}T˧g`R\FGZA"DʐH7a iHpPNw4Fu(n9 OXnn] "+ $M5N-(@\2.0RhrU2[BɎ@*7\o7hЫz;C4\=ɱ|,fEAI|K 9|42N603p+$ot&;2Qˇm)o!QѷdW5ü;n3Ο| l[Un‘z/G@uQ@uap)\!ɐ t0ƳTG}PZx qV/BBx\jtg6yj O?U5P>5_SlkwTí R6$?CU_W35s% 7Lh[j[P*ZǠo_|؍JmT$a&?! S!#aI1 X;2JmY=;qNm=yK +?xnY`'B9W$`7!0ͣ8)oVeDZƎ #?](4aYrθ3OT]Mč+',HaE}A_1?[Ġ$yZ?$nhS _9 ,ehl9bGq }Ir)[ɈM*TRU^Mxp`Vv!l05xA1&+LtUoM7 t3-x:XDO@QhmA<́@Yͩ˚ >e~Dj f!#y3!0AB"#8IzDJAmH0i)A!s;!jLdfC|Ǟ1D+-h}z},5D>}д iFP3'񕮐IuwYa& 1d7Z_, b r2/Tl;$l9+ג<ʔA؉sH&2!G_Y:)+M[P1sNTfL =9D=:* #*VR+l9tO$F|(:q F@ +g!C0c`e@~@fĨ,&S`! +=rTFZ#^CD)MjĠ,X~'IM1z w\gz՞Gsc29Idf +NISc!7 + 23y2 -8ᨊ%lt}6ezJ)&NVw4pGP*ENQ:sCvʶ`D U*@ |N"v82DZ0~ ]As +d!=ap̀#Xs<Ox*IЛ/pj)Uf bUƿF,0jsTWV@G$">xNQMٛIG&Fz(M$n1$b*;J?;%z"颂a IcP!M> %:&'&Τb\sY{/ټPnGf֢DX'$%J$E ̔{H*w{]BYۑs&M3p+OtLM$n!hQ٩.ij7YL؟@:}D`JIMAHAE6ET hڝ -+C~#;r,rE(#@ڲ}n#m-! V/L)w d"I0m$rګh/eE ȰM[;kdzlI0_k w'-Z4M[&BX09*:z;ɍ˩YK'qu$b2ۺ +E)Amzc U3ׇ x1wp EڜO:OpU%Vu0Hv.Rmľ ھ[➡l;7rmdsؤ,$Ax9AD3uTO xQD^/g Lb0qܦeh0@v]zB3 U^KC"Be̸}4xǓay ckK_x H,ۊi3,Zt>XF? eZRhCp(hf{*z{X",wmD ﶏ]&lt3cmr" +ytOq- 6t{ͷ眒%EWPqFO[[&:$ +)S +eX-s=])z%at\t>A(JKDBkҸgPLAR *1UCf"]Gu4l!<oa$g%-GDqW³bDNգD͒N2x(ng:8@BQB󑍪<^rW9Nx5mtE' $(Ap)*RRC贒<&r3i]%hQbfŘZ) yHZp1 @Aca o#vcZ x*0Ò= ?U#Ѩ>2J(ힼm-07ăw/=k΂-` McG9Ɛ^K8b&h AጄIi ?aą+&{cx[W03b] +: STQ^flsN kH45Ra)ǜ*e$F$4e&J\@87GW$2IEl>t50c;gS7K9cD0$bwDÎ.X=٭~Q;RvO) HX …[NϒU}.3hSRSYGӣq*?@{J$tĉy;I)OQ!*Cu9+|i!eU{|H>Hh8'#$!tU lfZ.M_EѸ672Eԯ*NW5/~rJd7a-82(EЀ da )%=8eU= S7q;݋hۯ +zrG4nfʓđ ̠hWF2)Xq'Gs0/0UQ_e\7ϒCv nx,gnh!]'7'NR!IGd.VRĮzƮIWO.^yGߧ-r=Pg̜Q7%i8'9o#{f +8 >PqG@#VQ%k1ykN |Xڅ?d$i +YДwc(1,BpGuK=s{hǭ=?0UlvP6i;}m~eCwD48^*^FKwv{vSvz؂@(H|=>Fg1=D"1O|n^~奼(B@BLD_|ㄞ`J9ߥ[f툓S=P~C 9*5+kT ""oΖ; lwOܵ.[rB٢&4` cR^ƺcOMvŜ#򔪄L yqy]i]" o|~UNty>[l4h1D +yr3^O~&p4 +PDD^p3&F{q3F^88Dwtg2 *yz%k@FvyPn#%LCƵ"wcA'ߩJRY וyZ>*eչz;5;!U}i.#iSE:ryFxGh bB,ڼ o 0C=ѩcl`?A~#3<2a#jl~x}_L( +endstream endobj 8979 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8980 0 obj <> endobj 8981 0 obj <> endobj 8982 0 obj <> endobj 8983 0 obj <> endobj 8984 0 obj <> endobj 8985 0 obj <> endobj 8986 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8987 0 obj <>stream +h[IW9K]{@`$0$UhI <{g_{s/~?eJu,}u)qyuXG>-7n}i]c+fo8Zi +W$cGJ]6}hG7BzzaRkr1HZA,x'NL|g>҈{Qڐ ]ILؓ# |,'v+xlѩ{Z [hkʰʦ׏cP3#=0 N +n +ӝBp^[NPRwE",U*$2o>a]|7705,{K~q?<z:mG ;*jxv!q5b'b,eR|ٳ?/Ͼ}2?/ӯ G?,?[~ٖpf:<ˋ?ˋ?^my g?{,̭=ytkYlGһ+]H +0KGGs1D(y jނ[K$W~`#Kgȓgx-|fēBu=5\Iݞִ;zp 8Hz@D8pvtWP @fmtZ a?t-v9yrajK3>~$-g60?j-NjF"^ a#^CzDAFx +6i#QӨy~'8 e*IՆ@ D\ב/EBa\yx(. vU+J~-$clѳI޷DZWN͋Zq#3/iX̢}zRM"DOp|D<l o<./(˼ygR[ΤT1ԸY$4Ƽ8d(7*Vi6=(:ncRn@Ve50(4߁}rx`շL) GCͷ\@T\^jg9Z_A$ߕǔCA|A+߃40!|a8S9x9R) @+Lv|&xn:icccQ'>. m|Ev98J%NEăS&+66WCMwlLXhB[ {!M_zdvaWXfS6? H"H5;<*Ѡ +L^Lz" T Pdi=1p,N/K-ʽ1\Ɇ[X)nV OciZ!TUd0,ZE b +MLOk @1S(8N3` E E +<P\skԤCÑ^EFRO86fa˜Θs6cNfU %TYβ=ba: +xh.鈡T),d4[Mȹ囷I][%7 3)iU-mӤ"9t).}1+ pSQ}Hkq&HZ¿B}*`LFɽNpW>C]M'E^j']%>Q O#}d%:}.F5A=IFjY9쉽 +-qf/]H̷+Ȭ@W@5h53>I|VdY2 s:~$"qSWD `|5=KU~ JS$Jjj;>\֯6} L BY EVğ.*i+~."P]Ӗr jͺn,m: yGuF 5I-$wythjE>FNx!,jP2'BB:ca (BXc +41 dx'hCVp52ݙ3S%Iy9΀vP YvV"I"{Oʒ7Is$bdB Ram'2A+K^<+n@cDVXz;ѧy1 +)X69F`eFV}<ȃbMsEBЀ&(km(>ݠP# +ʨT iiEe4l vkju@EG;b4PU7^h! =m eثaj+H>pe +",w@5ChgPAwz=َ%3; (AB-t|l03Զ4'Xpa͹*`U(Bɾl$QXC&$Nr NwT˧*D + hZV'Oȣن۴T85F-Ea:Y90¬`G MUXX 5L6(y b8yiz k)kwh;^2 +of hoe̦{j}{|܅@ ` OqOMJ7 +꾬޼>COx۵$}HГnЧ^YE41:8Xgo$'&( )E̝؁}IOBjzl|Icmކ%Vh#7\iݳ ;Hl``᫋®奈Fx-O@,Ru:]F .KÁ-) +F "#&wwtX79РPb;ފpFo0߈ skЅ["--Cz 4 +1C;'4m/.48l)eQZoҒ +7u2?f +$KIߤHzOMD婶?Bv_󣭳A,<5O.4XwfT_Fj T-K(nmUMr|UmH16v-Dft0cGu\&(4˛+UŗRTM'Nij|-k,?rV2ߦxnO.`?&[㋍m~}/,x Ļ$? Hp.y.9Ρ:˳dXw#i`3z=XG7 +Qצt+B %^<[u%a6,ݒDdƏ, ši>ᏁØ˔yi<65hiwW>~J0 +endstream endobj 8988 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8989 0 obj <> endobj 8990 0 obj <> endobj 8991 0 obj <> endobj 8992 0 obj <> endobj 8993 0 obj <> endobj 8994 0 obj <> endobj 8995 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 8996 0 obj <>stream +hޔ[K$9nׯc%#y؆=>dT6z=7tSIQ53TJ'Ezf_{~xl'3=\#)%?28˲ +y% P*k~ /J_lzwqrZdjQ; a[]}<}fq{ߖ,T៓|⏴L"3Y5'-8amm~Ph%Q^5)y %L奝yPcz2ku 'bMel ?<{S~o?>?,vJi2>/bv=;|o\h  e"U3z D\)̍VJ/dr 84ȱMF"s`7>gj9OO6Ý ֶ~|_w~D=l]Oabfjf;T?׿?/~}_>|zˇ~8]xWRL!"tL2'<#lBɺNsq J~^@2]q9awv^PbMcj,QKlc:MsY9"506r H[ٚekjfT@;{s uv ̔qb3?h4oXճ-#47~Uz[o'90UY+0ߟsYT@dι\cA19KE(W35yUq3; js#a[] +R9'j!dfKO֭RkؔEUr>^* +x@R'mT㟾'y a%eS .U:ކвpz )iY[C>FƻsQ'hMR=,؍9mߠm_ +6ZjME@_ް:/0P",2i'"!60[ix6u0R^ %'U.W { b]VPJ0B83wPls'(i'DN +>=СUf^KL[F'78*[uյ;:|f>FswHȖˍZv8k;\㒽,oX8.6_+C/IIQ,2331bxQ™#e=Fm(?SPtH|@nd9d&4tP׃7: +sEpJŇܖ9-OZJ6Nz2qpE]  FP|pՋ]:܀gv%c+2Z+bUmW~n5{hh&mT[-ң1~ЕK-UIzt|ȕX_-f]Y<[ПWC%P4OG Sk;Y;Yj ݖMC0u UijV>۝6P̨duK?#H~Co:bs7x<65{/#g:Lz$#nzdݧ(mW֩a#ȴai?o!C gХT=r׮%iob,Ha2\Max#|$]ΰ^1.M.mnegŊ{G1$Wjnu\` *5T8\AP ٛb  WbyrĔ~ +%6aU1]fo&_ + p5UEamk5hVqGYJx 98٥K0ELO"%;ˌKۈjI. Pꎿ,~ +OQf`Tڇ=M R"< a;iD *o}I݊?+Aѹsc/d>Qم\xF;mG/ղz Deo"E]}k.lbb94W(6viD^Wvۧm tR40 IWAepX>5Htj7;Luw9Cf'Y.ʧX + tc^eS~QαS ܭ'f '1kl7Sh-\c']ES`^<em C3GA^visKȔՎŽyrƸm.ژcQ< onȊd FC O2hqKWTnjJUXq J 3G bz pp Y:"DkAyN,JbݼHxl`/2UkdQ)@ XK(k$w0wA Kv`x.njد1?0qjּF}"76m'J l{Vs\tр: n@V 8FT5Is&ɝ2Fg#s8~#sߥHr1Q? (.Kt[B wzW}] +7z]j@饳wf*νQuŢHSϑ .tX[;p}^$̿H8x_*H*IxԀO*'ľMq] ӱ *H!!Do &lMFr YŌră?xΚ1bOa콴ջ av] W0,3iw>)+^DAQijP \#ƍw{HV wa$A<#<֋\TXY'Zfa9ӆfikU&3K|{ +qֽҝ5ډ]ZȼҰ;=4P< +boI =fՄR W Eh1,}7 h5bQs̢bI"{=6;(*Ku䘷vSԡEk8`A$(?l-ɾd; 4סg6Npչcٯ%Ҽ(5ue$ǟlܲ1R7!!{릁e0#&>bFdaG'UlɁ79m$qA^=ٛg}Wϊ 1&>e'z;KFV-}7SP!J|'<[t%-]:I ;SvILx{2Z?\SOL):T]ު<W*#G㸍mqy cc +SnS{!o@Cjc GSIĥ&c[/q|kq)\8@?{0Axvf 馘r(}z6O(H+&H+yYmwmo~.dY8UIX1ZM- WƠ3{ \5Ra #ZI?YX?0g.ɇnp|ia=;L'ʮ$ϤE,YGW AeqV]1)av*XlHCacǡ=z'n?^YPܒ=$,ppI^9ۃuN \깨 ެ?uRk-GØ!G-ܧuwn1Avt0ї@kP(saEF|W:M /qgbpW;D*.۱j-GFɎS#xܓd4vJ ݔJϏB@֭u&`MVQݡ xr>JPRW;`! y)(*I|#ٶ-:hvM.lUdC*K<J01& +*5ZQw#FG}$2zdz'Fr"EgeFcgqހUhTH Ge߶%_5Gͬ~U=ѓ+B'%O3]ԫq>'a*G&w|FW1:lDQ +T7%@4^dDQMRomw}ʼnJICl?ZUnOu|Qea W.\/Mܕo잰~žj#(h]:f̀X/W30VpHYtfON EdjryѧU3c< +&4y4v~|~5C +endstream endobj 8997 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 8998 0 obj <> endobj 8999 0 obj <> endobj 9000 0 obj <> endobj 9001 0 obj <> endobj 9002 0 obj <> endobj 9003 0 obj <> endobj 9004 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 9005 0 obj <>stream +h[K ϯsiu,d4ò,]˰D!Hbz?>{8zxp[mO[|.kK<|}ؖ붹<\ÛӶ7x r>[WQN]=]ɭ G^ndy^l]!][$RJ\CT#[Ai'xb6 H>l+CFҡ`ŔM|'`7(XɌɛ=|}l]%LI=DղRG,+ۥ$dRV|?|~PQ8m_<@-6quY}h-k,j}?̯y-f:j޻u+y +i;k,$$z>FOSܚָ +8?~˫/_ª_-i)3΂u6;F +?=PyGL/ 1_X_Wx@ 1p`ö7KQZ`U7g_$1, `0nSP$*w"08"/4:2+HzyUrfF#ÿL0n_Lt*H$W͝3=Nx"uܩCFxѧzPt i1uʢ[{@{+#qj5!?"jqӅM)Hd,Elv,`[F[@Bt'8dΨ24$!L^E\gn?y~KDbo@舼ʫM}&LDF_8^zߞΞF Ს2ηM9ɣDLYڎ M^͎ettĬL$ p礩,;.@.$Qw%ىÊbЬLN703zAQeŨ,#72̘! Y=;>da/y0yߔoLK|zrը D ThUYMqZ>+i0A^~ٽ19bPڣJ Hd9,Khd} UwZ[Z G}ys+2ㅾ,Ě:/rU ьkom^O\%̰lӕ\{"̈5ԛy0P%H`BN7*o4tq!H2F=IM4z4[ pVWpU:o&%8j݌ՠ-I"K}i"vqe=)Գ*vRzF_x~|CkUNT2wP4YM`anud'@MsCu$uD;x8p_z&+.Yv,|a``Dz?OP~zuljRl!n yuB2{"ՈU׌[ 05%r4"<Tq8/K.M}R1c_*dD-Ů248R=FOI-~#X`$N!.662 HQT/fLkSfl"l4 IZ MhRGPuWZn/egJuq\W(T60,>hwpF6rg?C>iNO`8 +U}T7JjagkQv}6MvF֤H씵L6ca# +qSAW4[%H$O+}Oڻu@-`in̚4'K\ݠ.i]2izXBi]3yM}zT'_oIy,plv&GRh>1Gl,:1a&Yq[)slqFVhrȅkȴ0X!AZEaZ-%xf}HaV0 &v=2і^0$I'h)a˂:x=MrrS^ƫD W^%Cvp")e!z{bf;#\̎!8$pSxq*ݕ%nq(W-DLUzSd\V;pj*] |쟔P/_t Liw;>H @Xn y7䖼Յ ۏ sqS*'r[D5,>n"͔ަ~ OFu[_kfkD| 7b_]x!1hL8ҨF'wdU>mXVTp1ZD # +(NjcG:f]5  fT}hSπF)G`.߂z7jTu(Y c\p0QE<ZͰk՞^ZHmB*gJghepdJWAO1J@V[po +GzPғN.q{3='۬' E6?s5ak(@RPӊ*x]NEXe1I!VS22&w6Nz;^X:*9#kl(0eF`/(ɏ.+"k'!m ggݾJ~8h2t:2!fa%;Ov# ो7ۖ +ű֕5f8BI{Y!p;'+(j \FV 'CnMg#n,tu賈M׋$w7׏CL4T,CEf.l 8*hZht~_̀^xbC@z(ed;|ↁP|d>Ӧ~U*v[UfQ_"ﵾQ9ON[iQoEpFKK_4 +1>y0`4F`3ZK[^ /O4SZ?}Ioz*$C=yZCGGII^_a'9b~>BpW){H}s =Jc_P?RbjR +>eM%e_Cyxx:\JlJ~s€zCs~z2+䗐1{[7 't5~l)x<=TǗ>7`@̦` +endstream endobj 9006 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 9007 0 obj <> endobj 9008 0 obj <> endobj 9009 0 obj <> endobj 9010 0 obj <> endobj 9011 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 9012 0 obj <>stream +h[K$Gnȣdr2@;  ]^#Y&$1$`-xG0||ds_zûG-/G?rY}^Jk[Xxؖ>\mx<|w6hޒ]#J KKؖ_֚xsK[mשG8!J}a zYe1l$QX/n۸>ÿ[-"+y&oi}qLl[hwKJn&)FY=; Z5>.~m9Z .R_bZ] x걽RzXeK?.e||yx}`Vpsc.,׶NJ쇬cTZ-=9y:RHDc8#m]A:qleWzšb#{o4S{-umq‶wx͏o?/ާ?}0G-C/:i< +L-~p ?~?~_>O@ukŲ; pKx*Ņf@@e|aBR\/-w\W`N8_i8TSa ssq.x0 8/kU05Ǧ5>u`.ǿu.Sٻ@P~I\ۯ,&hJüQ0z;i5^pT30 z@o#Bz'= l/Emiij0q5(p;S]C+Jw4x|pIPʎJRXvXp'hg^+>M +S +:.Gv}iQ(^5RX~yX]+HX`$q!RPOJz7h2k@ڗ~EuڴqsVPGwq[X[a{T|e04dyb]?Ⱥ_i#Oto)Młf ߩ#a9JXXco ͖R\Z2|au-z<*CrVoɯH%k7}6:j|)϶mҺ]je-&%,~ձ̦ Fs(j(z523`ǬJ-aE3^>(; ) >*Vz{ۃh*pT; %4HyHM`ί|gL4yu(|_Nc-{[7l]XڡY ߲lj({lLCnEcߔ+9!.ds9bCx+_uCܭ۷{gu|↽ʑ, & BV]")Oargk_lf7^܈r+(q}ix4y!i@3͌. ѷ֌&n9Ȗgʅ^D'όrtN ,{wAcz,gCUlmd[N¾wC7vJMލP/UyoD߿쩋0XVM47*8K,NurC硉'Ud?7v + >ѯ|?1wn=ylI dY˫*Y+SDQEdjYbGacf+kWz:ʄ(ʥLu%y1'pfXUD֝z]M(?06<'&Rbd^S2jc<[ȤHF +75VNS+<#OU]^0]m|aͺs̘DC#K;}L1 +O@i6)| #ƌtԯT!x֭Gg/a$3tkĎBvbHe`1`*KAiPS_m̖Dp:!T3_d3p5z-5}ɲ5ewx(֊*+.gNjk*c(f" `@zWQT[7RûA/>{Av8rY…rO<}]( kUtorJualfV&H/L]NN7$%ϓ}f̙b͔]&Dyw7Pr埍ʈAw㹟Yy]=vfеѵ*]#/"iUji-J0qu +iƆO +>uꭘ՘oPMG5[f5(_ӫisSRX̒Ĩ_,<KZ߂#1&W\Mjg O`:AW5(dg |6:HBYx*dT>mq\B)D}i-kBY9+2"絖p MO&*5*V_? 2 ;Ɛ u.6fO04a: +Mz#OV'vU0[BS̡Yꈯ'ZosMXo@A aXX` 4Tॷœ$^LX81X{$s2hw}₞[.ÇVJ6k4lc@-sƊ hZ'o +h83kscoXU*CP@А-.cױ\䊲FʙpWj+*霙6'cH3ܯ#KIvÆ]$H@eClj&sɘSn,UmEiĢ:\] 'WL٠fAK@ [M 6_nS.qsI$&f3հm=fۡ${._y%6(D*TfA?Er _R=]?Et8iv>g*RKXjrCcvCXvԔO,RIfÀ)1ٖŬ7}lb)NfË@p[=ݟAgt0,UN2P%aM h2BW?Ĕ(^G6p&^{(N1%ݸYU_eLbeGERp&28"MMDY2$Ld "c]>~~čaأςˆs)L!}iz\W|'e6: }^ w)e3u +Nb'&dфB4GNH~$ɎD +s|'\w甀wWjX +*BGZBa.+qOAl}tKnFҧ$nL&SFTVPM3xlV +I'`G! Ú { Lf0DrލH +fqJ`sYddK(JM䞑L8ڶ\X<} % 6L4rpeu7}ݠ4gݯnVylsۥl}p,9 VC_=7 1RȕfGOh=xU(:|̊)\M]”z1Y6b$vֵ}XYzlu޲]l|`J{fyD4|Դ=`gѸΎ=Dя#Uev5dCE$H9~ϖi󎢉mA>V%5ž< w/_h2[C&Jz>7K?N|:'_Ǘ>wc|~_Òg3J v,ZϊُOnrMeG"4jm[yL:˝v5[ptĂ4Sa'a_c% V$u ?Ym]R/ )ڙv|r]RuN?- ^8lM'.Z; ޺Y*5<}( +wqƍSHos 5!V~`k=g1+.O.s3i>4V=23k _,h4IF WL氽?A^}Bӝr&Jh}{:ġ xa?|W~KW +L.~ kǗ[F#VJ0Qpi~ɗlV[K%:DЎ4=mG#'ciLnUӝL ? +endstream endobj 9013 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 9014 0 obj <> endobj 9015 0 obj <> endobj 9016 0 obj <> endobj 9017 0 obj <> endobj 9018 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 9019 0 obj <>stream +h[[,q~_яRӼ`, ~1Y8?U ݳ:a &bW?nq-˚Ҷ5-,>m˟.붹{庸xXF#C]7S+,{U\AF܏>.g'=yW;m-hZG- Y"w={3gEt5K<\M k+|4s ^Mp #:\?(YwlK3*T5kpROQ{;ަ:CTUn{|aumwz*MN +V`Æ}[I VBF_ {?-`·e F{B[pZ]\b^9 h]Ъg ţ忕ƠMN o[+4 v5g4cyc*J` Ȝ@@#h&a ǎC6%P@OdK LBFW1n,+$nܘhD$j1!0Bu>Vn(2!lٳRGy:͖QA8hHi!.(/?_:A[01NL_:!{k$26 + C0yP%M7*y-

#zBrI2 @\)N:@A/"Dz]8+kZr #Z L6߃}@ T6jިFŇt@u@1e.hE>ZͰL*f@ѫ& UXa.e,_^EhCӹ,=@2szvbG +8v5Yjd)`zDc{Qt3y%C` 8V+TA+@S7M昦YE&@]u IgRN7OT}N7F&I īA&#@JĕC.&%Usz' /Qqz53P4G)f6_ L$y>oQF L*U +4B |bJG; 8dPJ)~hyW_fDz3`;g0N3nXvӅ[zd7q+k!d.2-A{ֽq~mSm~O}4L>b:zW'^[u!EO5ú*&}1jh~TjMxﭪ_;-uՐJy`웷H<Rh_5uuVՙ$=V\b'O%͎uNvJQ@@!Xar|b +zi@u#eHdMN!릑rҙ6'qh6Mg׭Gk]M^N~S;8k%>!6Wy^qq'-Se:+_8 YTd =ɒFm|,xuB}郤!#|ra`XʙI1y6hcV_ZTLnu.uFZNK!syyyZ"3בѱRu/|HŌjeG]G* G=ÅbRТh W"Ѭ]0Յv +f/:rl\KsrEaf:'2#ƉvrC LD4ֺ!Cn(" kU: 45X6Cm Մ^rS#]=./S 4}&̖`6yJ9m'oxKP9}t>Xdw1{PԱ8WZʆ&Whai-I>:aF|SV5I"$Wh:Ǯ<,1js1o_*a>#W':TmV8>Tfݽl>)QƳG1t ^-<&Š 6rSvUc6qKiضM>+=~Kt؆>RuOJҴnd%.?*cRؗǡrM&iX3'B]= OQ9xdm*F6t]ei&.,I`}L9-L' 17S#G6v{$"wiׇ,PXR)j.W|G8BV[䯇 )@MS1Ͷd\=$QC0 5EG}2)1ŦUZA. lȣl,?9Su̶ZAl$kpQJ7εJ,%ATObdR{#<[Jj!{&MqqN)j%mkRNUXQUy=^ijgq&-'NdBQ#)(TnA'!*J fʋ.u\rϝt3aҤY7"W:ό+"У^4~"Xyw܊)jt3Aڶ\&rW1Rʃ2mRYF|=7" +_u0_ኤ˰$~kpE:d{W yyh6ȒݓH0ܒVHtU/w)!I3VMNc&cX΁oE0~0i=D~BeR)Ć?^E>RFv_HS45klz.Cpb+~˹i%~%Jbkx՗Q={NPUDUY9홿ZY>t"fD>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 9021 0 obj <> endobj 9022 0 obj <> endobj 9023 0 obj <> endobj 9024 0 obj <> endobj 9025 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 9026 0 obj <>stream +hތ[K$7rdro(a%=݀չ]  |_<_]~חO.|Y#K)q u _^O/e]ryݡ/?+4RܡzRK/󗸹fZTl; U=F[2-KoYizf FV_bJ\f|㙼\϶}?_)_ tkrvr˯pkt P3Kj?/؟/ Ų˗:paTp2*L/l.F9_\JXDXui@).ku.;4 0'/k;|yǗ +{9Qv.rL4~0F/yH,-V.CWY l@.Q.Y +(ӌN\S__r',1@ƍTK/)΂X^<3t7~uzX#ҥ:ہf/mM*u8>KXB }qvp8(+wЯRTf^v+ܽ֫*Ă3<0 de*aO7$pD\fbX9ԍr ȠkC5uA38IuG8)b `ޑ +e vWK$HD5<[cecq{B;QOWmGb ]ݏ"#AG1aG!ATN7Ă>ƗbpVc[f [B]M&tc/H&wuscg6LkXA64iط.lxd,"4MlpW;%wJ$\HCM'mrltAѲc!@ʓnW'Nw"0qXMa,vyO7FێhǓnӠwїZ234ﳛ`5N:{ +xilljU9U8g+t)(,ǹN9b#Ӕ6~b +t;.Kݑ`] qFִcLT|Z ~Ŀ0k(0igTj1,UKuηMG~ Yw"T' \ԥ2{, J7\";X%?}XA!_όUхNb#aۨA*u;+} a!T~'& rL"Z!zXf񄁘7=6>00OQv3 ^mok.rW{ON{ͨTM*1=Winֶyn\ >xad'D 2qLMbߵ0xw$<~DD;Sx&} qӦFbŠIBթQR @ԙVIvI:ۛ2iAGQO$Tl'Qw1'L_f7䲉XSUf,3i^ 5HmI(Jrݻ` yX{)X zI_zҕ A=Ӕxƥhu-.lO$b]SzWujL6NT F$ǐVV߄2L4bࢻ#:NduUNjf +mx;D#Vu [.Pbbe&V +bhw`,~c RYͧZ1?"7;6'1nyrZԜ:fr*!ⱎ|7r,f,&D9F[8R-?DYb*pN'v^VxKՀerLK{&Ƒ7kAM -#"/KS^bnM)VgTֽS1'qzpa6ҟsdh/?Jµ,M.J'󣈙c$T¢i #&|.W❉4򌈮:`,ď⣸z4E(zB*ev`3Cj-n7:"42T!ʜ Xçe$ k""e+?S58YkSL݃kxc#ެ s7'c?+06u-8ežxo GmYSkF<sй3/|1[!Mkdj"B US>.}5M9<&i7~s pPJ2_T{hLu;`]UF hIVFX}F _͢vQtxwLqD1HjpXpe 6.>`y'k#;J]vvvjNDGƻ +ZN9[k/l?Zl2CV&b +C+FAΰӃPkRմ3V 7#PK$b6TZ-Ab1'rM +PEEމ"֧reNDFW_J5T褒@M ]ܞGQ61YBqSo"n bbfʣpo8쐲75%[U0Z&5gP! +{Ita g$14@]DP~d;I $^|Wy +֍z g'16O=s0iZRPz(} +Xz*RQ J>θ17Q@/f pЀbo0*},&Q|W3tE@ LP +p"^σTWB+E(uǬY'?<j4]?NN[iI* )$Py8}oP"YHX-JH}܉,65!\6d@!F.2~9P)ژMAϲZ=$cJZLG+KLYR%d*լ{nhxQ%AC @0iUD JL$-mS0!((ąQd3u + g,٧ O|>I'%H^!?fv xSz4Q= +U}'OseڐtfPSA WL~+G HMerq`v3 +Sɮu WcΕNK;1&)EAaTu*p}vZj{$&D |*SW*2u'nުp$L_gR %glѺk9$3qD 8铓,& w%׊`#aZ.#۬ūd1#S)(0ZLM9cf@1`t^^dk=)GM@IUKbI]-]ft S=w s&taI9#cS{oΧXI;z zLYdkIUy\dTWdVC>c U+dxthYuI*eC> Q+Ozt6z)O M>alIJf8-S6m+M9uG1&N); ); +§(E!۴cp$;PncӴ1YEիP3؇ Uzu0Uhfeg#}'׮NVm¾6ȆQŶ+9D1 +HJIELƘc ir 8b trbagN-3ř21%s{gtTܝyE_C6it|]"~|K!hFI.sCF洏qgACݚ WTC)VHٙASr]Z>M= >B[(LBdMpEfXDJDұsR4&*xn)|mpH6arY eR@Ťǖ?I.WLR&; +&ώ@b}я;v>'P0=H,[O!6̞Eɓy3"@7wɗPV0a>/=FPa$V=eBFzF ":0vށ'`LY + g;~5ͅCσp:nц06 )ۡWrbTȺׂ"L5 F3}WL|~?B/GNj%68y'&3-xl(M8=MX>$֬ p)Q,`Lx곾?!G\woݺy3{\{r0VL!ӐYʤ}cJ(Q c^PŴ +*4c'?ލ- +endstream endobj 9027 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 9028 0 obj <> endobj 9029 0 obj <> endobj 9030 0 obj <> endobj 9031 0 obj <> endobj 9032 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 9033 0 obj <>stream +hެ;ˎGr:bhAa +^q>, 5bHjɑ{GDFDFVPCG烈}xMnziss2Ǹ2| u,!viVl-43"Smmvngnuvyj@w։Zgx@<6 Xpo@Cp [אt)1e9^!^0c%2t3 \ 1v.L}!d0IOL0|[wF +3C{F`grj4 !USR<-=[,~*ǭCucu<]m8>WkYna]݇¯w}Jo 27om7'k +>9o׏O^7zS\{+tk_O k\TApFqǧˇߞ~~ǧ/ۯy:K˒gXK9WL b98gw>5hyY2 $%{Z=b;j;PhC;&ك{<%=\mX9Ǫ=p9kvǿ]wNu3h &On?gDYV҄TU')iːҳ?ço#|!=0|Tӄg`?[2j52#2Qf Ш!I@;HDwxV)Un!8 q$E0=E2Lw&enfyaD/4wEWڰ]l,G)) JITQA"ĸr]5AI!'=4m+sT'`틇!6=ݧ2 4[* i2!wǃճQĒm,58*-Xhwedz#72F5  B88̧2cK^mRH/U=%#XY?~+;sɤD4'I ؍[Т*ŖdfJK5S/O LJ\6?=5|~:}xtmSL'ģGj|j;J_9ܷ?)?QxyyB󪗿 w-_< m֧__ /O Di/P*7<~LDu5~w? +0U?Ҿ yrX/tߖX\3@ms֝:*[Mmj-A;ⰼ40ː⋹[PVCOUH(F*4 M'eo(M]W~L$4}ȍٌa'j$iӰaJXx߸ǎq'(hhRSr(,s +rEAMM'mUdfɦhMoRacFD&h p0*Cy޸喍6')}xzᬭؗpHCU7d +ovJb!R hj;HJ)GƘ+i?ȞP䕜M 5j:]X S%ZbT1ѐk|+6yEE6وx3mNsX{YhAkCi6ywD Y$rI%)EC) +jk=HSW7ޭ4XDrwKqt(a^.7rGxw3F6GFYL I>(,5N8TrBp5j; [T/Rr\ 6c䦽ަC\RƱ}4jp*;[f&b{O1. +KC<9Vt1Խ(arLY(aI" +]yT_q++(n=Ob.`"! ӭ!î.\Ypy@atj %8[c +zOMzVdč2Wh{DnC/;B!J +gʨ6`gx1JC-E;@$51uwԏQ44E($ПD͋,4md69fsD1eUtUwO3d/֚&StNID IN6=n4R5cg^B#74ܛCl4mMCk4du Sv-]g-^6oVl&Lp[uw G_Ye# ^e5oH dֳ[J{nkvٵ*NX#;Hž !Y +i2 +* 5ojhZϱ8J\-|Ej/H*Qol^ҿ:V;7@?:L{so&;dEz'Qʸw_b6ܝ>PB27Id҆#i=aY)B?/_> 8[kş(b3x_gaǾo[[jd26s]!ߘ㷏oqԠm6 +endstream endobj 9034 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 9035 0 obj <> endobj 9036 0 obj <> endobj 9037 0 obj <> endobj 9038 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 9039 0 obj <>stream +hXn\Wp)^l0I"ԑ1vϩyod1Z}V:uX,͟/?73OGuPZ>!_GBh|t!@J<a)_ :K+&'~x:+C:+n<Ðz[ eoӄ8RDBW|rBnSin懵4NIm۷31'u/{(t׀XH9{'*As> 1S1=ϑddKvC.>&*ϑS.6ޞJ 6FwOtWFcR7GB?^1%XoR쵐`:B;T]@X.@P+Mvȣ=;S.[R7.~gw<oa;g#cȼ+uqܯ؊=G4($VC每}y?SuO܇/Pݧ "! +ả.EPed'q&'c)&) ǎ~)#pwr": +o:\1k99!r:g♨1"v_|U#lՆ{UdIV +{FG7ꩰ+7[ )bT>;ǨЗ= +"o-ngXtM[䞄cgk5-34Jnp&T*K5jP}a0K[)ܸ5Qc9OYdŲgUJ&&ZZDcO՗,%լTYI@=$ߊ6T| +gTwygU?d]G%CJP)XZ2BA lK\,SÖEmP}8Ԣ 2H/"HߠaEXMC3_oߣ?}7yZQn^ŁPV=#h3pef lrȬL6 "S +qX0V^nP41H+>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 9041 0 obj <> endobj 9042 0 obj <> endobj 9043 0 obj <> endobj 9044 0 obj <> endobj 9045 0 obj <> endobj 9046 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 9047 0 obj <>stream +hޜ;ˎGr>b;hA0zLsA^IawfVw)Az/s}pV|.K·.1n=|;. {wZא +?WcZPjx-q6spth@a+ IH)[B(ėOﶞUfB ͅ%4&Ypf6HTyS@ Ģf|p\n˝,q=fJ sHg< !5_?aw?>܁XPŇazNĆ8y)rq9>~~헏/͇ٲб;& 3uuI->I;P;P/.%i}X"u\Z(ЊZ6&4p˚=-TBl@mmjǤ{H=f3N,-Vk +Wރ(ǿu.Sۻ@,}~3 헌d0K P aߨMX Bl"75,",CN/ ~: t_Ho? FC|j递gln5 lFe"4C:v 8 + 2h!V)Cxn%n8 i,Ś0=i auNxS`42څ۞G3;] +2_3>3T(-үKAݖR\'zƯp*y|f25$T5aiE `iz0؏Xp`~GZ;R"Fłf Yr؎D͓#6RҮF|#&zDUfRB + '}kIk°=?= $vqm+q~ Z%;tF +8Rt! HCo-X7Ep Eq$Z|qDܵ́ɂ?Ake4,+hDAuR N3 +َ^#Edpa"Re%l E~ LM~t/ 7/M>sqT;]0%\lĵ"OmLDN8, hF&-nlȔK&89~!.QJ;stv +`_M#X.^6tc C+Floϳ-![*slLJL!uHLOkb^nPFx%hq%hyCJ=0 K +]` niE { `CS`mv3 I]`TTF.m;gח!zb3XF]?xc%SAYdT_;t=\g4pˉǖ /:p}GvNZÏ @ICikܻS(i%;Q_~A ^]wtgYᐇ hO%91AM  CtULlV@7[p v~_~>'?~y7|gh!"v-p,jҐЈhTvTm +%fc]^E;VA|cnUiH6XgxjB15]A 26aX&34ao_ݕńjk^Y!X8tհiCwz2F2s)3F1ŋLqvt.ţg:` +mIqxtW"wauvK pUl/ԼƯgFuqHj1O9])F-Dw8IõJr&m2 ^Φ%oL +H|3aY"M|fW u,012RnNB̓\VI ;1~gSOa#S?7ۤ92Ȟ ubc%٧4*C|nJT1 :մC)zһ #9z Y1C,*U鄴J2|I: CN+j$ëT4929WF̦IWCUlaDN#ްyK}x/4髽/{Ꙟy6'\ogc3t}Lz.൛ӄXniIr`} 1wn,o=&>$]N.迍B\r}P_z<3SsGOj]V)fOm3PhT[kG;V9t^j{^8-ƈ;VFkQ*iTܯ +qnԣ*YbhE2Z@Q=1N]p4j|-^ +5Isk+[R;tsY  [ױ5EKԝ9Ym{WTD+GɞQV-Tc 6c += LKBLEgGXX9FJTI;"T%E*3F@?Fu򔸬-HgUiӰ +mJ*Dݱ%܃!BQzM + 1!30Î /B~#\0b{,mZF iaRo8vB4zjtچUE'/m>#4GyM[| UG&3LX|ňh;s:(uJͻb0u$:ޱ hؑ +籆z4 g8Ӟ@bBIu"96 #WzJ-OmU'o^xwCQr/r\= ʽ5ֳw= gI3.>$t".w߱X;@mCQ[A\B;a]kuU}![9U23_]CW!n,rEA @苩rT:zH2z&R'G獃eƹ1[KyҲ.2x SyƩ 0]Oy hk­#F` T_'o}P=T@ 97N(?|b/*'$zy$V½eo°44S0''N-k +=ƘzyN//}%;{ABܴ ;lZujKk m$^1kWN]]O_W--Kl!$廃 .9YwB_ Z+B[doMw()V`Qk[tSJG~KV9dgn^D0>O*䭧- f= ^J|+ + R ++bXf񻈩&흦+[)%ukR]ΰ0.>/LW"VR.ye%TW8Nf{ |ۀ6ԡh5bP^1OPyO\Ϗt.4kܼ> +UA.֒t=ތFlUJ*+Prebe+wl.067>6qqrsIoW|Aχjb-J\-Sj4eRm_+,Bq_]|^ϔ8iY_Cgk\>,E'jQ/X7X#Ey(1Cb8 ?+Ϟ5H1Wam5UH}ޢ)/z+kL>\օq8#tzUb4}(g>IxZp?E~Q +@/a1!q~EιH[ou,1{WQ˘ti~~kͅNn쟣d"zvh6S:88mɗє_' +endstream endobj 9048 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 9049 0 obj <> endobj 9050 0 obj <> endobj 9051 0 obj <> endobj 9052 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 9053 0 obj <>stream +h[K$7ׯȳsRo :xl|nfx#B!)3`tW +}i>~>|xUYi2>OχRmb _YfUϐ֙ xs:j驖LK.G"]:6aR&1#{kך|srl35|?mz[W~fx*(foff(aZ=o~ˇ_>ۧ8]>xC{a`a񐘈4]>R]PD{3}ಣM\~n@\\lW t3('pg%Z5.dl>\ca,/p&ⳖasEk`U}rr <[lU +$?)8ۀt9̔iba<hvCiUa׳z_F}*aBYv.K +}ƍ\BqrgiKAjA 2r6 JP)T:fW2 + '-BHaXAXVO m"ӸPNlkk%7~MI(XPI~"QW*z+7աS2M[:mDn@5xy8xX 84Γ_Qa!oQ :nfg?Prk+})d在ժB@ɖ^=o@@910y5} z6]+z[e#Ӂ֙6WȠ:j.ɑj֡{#݊!uE /i}X<;7\8sdAծhbܕ"Kg#/DSN&nO)Ct.H#2m4z =2րKeO{U2*Ko#+6ٓe~ߌ68?xRM\-iIwbǛC~l|ߕjbӏ0ʨLkH7SˁIO!+k + zl!2z,j%r("IjDB|=B rԲK'_p5prL$mԡMۜ+ٯnF"caFll"ޱ`G+fYƩi%:_(GѪԥj=dgY/bűtK1fzwfF43Δ 1t^s -X%v^Yݓ|=YV^c L-/oݰ:hblq-IwZ91~JM6ĖlC(Mw!( w>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 9055 0 obj <> endobj 9056 0 obj <> endobj 9057 0 obj <> endobj 9058 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 9059 0 obj <>stream +h[M$Gn$#=݀KS -fVXI$i 6QWdw0Gw߿<}xy1Y^Oe࿲ؘony-~z^zn6&]jɵWr(lZjŬ~W#==:-B_'љ67]-[]lC'f^^]X6AzuouIkLfG7u} y\`a +>K呬'pl=7Io|or+;!$9@3&> 5Գvۗ'. ֕RէRӧM_C$W kn=^I^XjtmXu%J l)MBjY̦/6/v>|?|/ˇ?|*O^X|7}p{P..Xߞ>ۧ_~?_>'ǟrVnś>mq auf)eۗPˮ]+ՄgVz^KP c( *n0ͮ[9< ?аke +M}>>jyOW{i->sZF_ jNOj9 \l[՚ָ6YApmR 'uvu`)cCp5^0P״FfW ~~ s*an z  Nd'[lXbrP(ӎlWۉF:x +2oZC(;ghZ)%Q*0޶`{ZԽ#P=ų~Є RH¨}8zPNlKn tW +2Rw~mv~?M;oT-wYS2c~1װϭ#i&p5MXKĠiנ?[J׺akڱʧjVgsk^R9JH0:ںT rmRU\.<,ߖBk`j)ԃ6EKr bU#kV@02֍_:V:ޱZB{lÆƖPRzP\s~_d:!j3\5.#6.q5(5Z^*&H5j4c U밯;\6YJb=F/mYa` }YC +{ +^j4V[BFmiғ?m_b`p8v>mƁGm}C eb@{ v]R T;w1O_Cm{ܚ(efc̨n1بI[x֔GmƧMu/-;v8ź^P$\o GjK q2c%kDP}Pw0NqyȽ{7!I>%1lw9/z8hiXyAէ?ƾ]Nxi뇰[c(tb $tGߝQJ'}T֦:7?DF wd7Gv)]ǾD\-7PZKqh8zvOxbH< 7|4H64ʆ9ԡIDTն4o_ooŇꖦeQZuH,{쭣O$P.4ŠX[]L~6OZv\$;Wa-ʍ7ȶ[fkF8e?!`ÐuERۥzdd>Q a҄a\uĴMM~Mtz[BuP:v nR{MXjC[5h$%{^#0mO!aW bKTvI8-㰑톺˛GGۤ.c$ +Mٛ3XCuU\vK7 mJݡw)@CfIcD&H9s[G}$pm"jP L[ z L>ϬN+-_9GipcrH1mIݴQ6o+BDU;'Ap`%3A@eJ:;\]s1_S\X>W| ]G\`R?hi?i='&5z}A}(@0 0 +JBD&. ŤQ/8aiCW\֞`ƥFDc^2)1~u10& ~x-rF-n0"CjFfq tWz\0>5Dȃ:Oԝ^Yfdm7I2lmfD;H I#hC=ZاM=wNN;T`dp;11J;Ha#r߼!f"c ='p60GOǯ`!G޷i亃;h6cmږ@;0;Du@l }܌0s 3g6x|ы8̀ZV ʼykaˁaҤ(/Pg &M&A@@m<Oܡ 7 uܭB#p2j ֐wi+Y oCHW@;lj^5$LexH᧋@@q;qF0Jh +)d Oc+I]=\g-fDNgb>oR$A"eʽv-0eve I]FrrEc}Vߑ{?FzFNm`PGn붊T&ZVJ_%8 [S:\ OZ$V +T&hۇ)Q[0ԉhVuN{F;N8{ϱq$^\8.:x'׵¥Pby.&o>):mnp[:v> t4…/OEfʵ3DC!*^ .ö& T8$m& ^Z}V*Jn$|8D Ś7{Yr.SxAU~ +zņ.3v^Z깯=pޝ*N(Q7pmll~8RmG$K]M7;V{$ Xug.O.Mgzcj#wC5`V8< -eDZл"*`Fo'O/ hA aeBOjiz)R ŧS-!oxXiykz(希Z((C7j]}WPXK|ڸ6i r],&i ȣF&k%b XSzؙfJ]J]x$kejr0TmdtBlivdu~qWq~W,%sO ^A(j('s_p,N$\~ Q424C4Yuk`ׅ򅬂'Vi&"ǽLSp [M&[嬌8'ih;/>ROΥ@0%5UV_rك7"z9n3Y 9|Q%2y}"[:BqW Bh~5"AWgΗ9}SWT"_dr@:HX*[) J>#;pZԊ dj; [tU9ŸPb ʅ`R E'B0):?DT7rL<" _nW"}+1FQEb$/ _Y[W!M_K1*+br_e#-@D"D.r}N&w03Syo'?h dZfόJscT`:҃ߜ\e.?O#JpǎeP0vYPkO?YGeqP6d'`:>'sj10~P4~pM0Ѩ|#OVmPWxl}@.4_àBu!κ:pMpQ(la(od5R1vhE8:$TBk\/{:L?21((8edJ| |(?Y2'ۘ +VX+-e1v5pm忾L`CH=|ڑ̟`PhHM.JN$!HnۣgæZӞe{mmߢCgЯ&EAuѾH{9*vb^pJP)Q7 +r૏k mO?U+ +[!A +endstream endobj 9060 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 9061 0 obj <> endobj 9062 0 obj <> endobj 9063 0 obj <> endobj 9064 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 9065 0 obj <>stream +h޼[K$7r|@+  a||*M-dVXId<٣F]7_|/.o/]ޞ/mkG.ϗR.o?엿n=+֟j&5=)QD؛*9BQ5&(YzJK3{04Knz= !Ìwɫ>qe6,[-#C/%5gco@3~{k"Ưv16 .`W__b\ duy^@Tv)CkZ4ì)p _7.zn^:Oci}>S +i1Ԫ泫cx5oEMy~Klyڶ/™8X[? |]>Ro^`M~*gWbnL-mO3|˧_~ǟ>ˏ/o~͗ǯޢ˞/>"lH wI:OQ.o؛|9gՇ-^ +n 0RGWznGe߸|piQj}7~~1F3K}h=]>c{oXGxh3pǖJx bFEx36 Ouxt}`ObG(ASx~ž2~1Իv龣\泟_| +_6J_X{k/cgͥO˰})N~)7.${c:xv ucoy8,l{TeP5g!/fڇo)-n,]e<ô,SXk_= <#B={cHq1luTUqG1Y%dcOsgϹ[YgJPOn+Ohk- t +yLbmL0|놂ۂӡu6},XLiv$,Q֮$Vfp:U'tɩ%yQz=5L|Ys\Ӥt]58Ԓ 5^F5Z{r =δ>U1ڃ'cL\jrLgE"+wu>ѫ{L>}ų(Ӫi?F +л&qMDHo t0Gbb|W!1 WYav 5%P:g{2L PP,@0Y>nHmbU#tvPfD?|?sJ %Rɦ4ma$)յo3M%Lmy8-c)EhusK6Ϥ.-J cUTz\x| +<+ 9XwwwW/ J!MWeWl/KJVg.Vi2JB͘dA4I4!z܃ +_%c+vZO0̣sl'B$>ﺊ ktӮ'їhp8ב0uu yݦ'6Augn=YfƖWJl}c6tMRƫ4Nߊ*cHqhB# ;oz8J R#34|jAG-m`jݴͷߏ!I;V&= HMtj P`oHZ.9y^`*I7^E/^F|xOd0D U½!%5 FnzHjFMX?n4tS;b;[ϩȳO +/Oz-UO0ҎD (JJ&`Xv.h*7f2]k+YШ DԷ}sR5qeӻc܃z,[Oj=]7z8P؂R`UNw(s/ rN^|;-uNݦtL"̪Ƣ#I;w!xVHZBJ7^[e ߹*_M!~ذHW}yg0_69?).xz#id'C?p9 ¯D\!6P (HeZNt DTiG`hM"U%VJBBf0ǑxxjiHw3ŁwL$$pF)LA~e3WvgRHt_,k  F9V̨wyw,P +"FBXKRnQ^7rUUkʼipm&iȩN ѱ$TF>Fǽ\NRe=D;]*4LX@= MBP|O0 >?QvUP'&Ju^Jޒx j+qʱ Tbv[Bf!qn7K5tdJbTͩ40s*&V;D7xk|bʀ&Ȋf8X"*RdQ ;ց(w5!6A +<`A QFt=h7*RJp4:\ٯlu(aIൗG|=Bhr7ıj +D;%vWNC*UF9S[wk@̧ +jmAkPwơIέ_{z$6M`NKB{$$6jo= +f°޾G09VW~<.nh܌^{x-f*iQN ǸPB`:JvPÃ;H>ͭ_|ZYGG$_&Q5=U5΍19)\=e6rNʏAtt]pzѩK0@djvgq\vk8_?oѝ,EXRDaIzhB.IarLs".bsJlm@R7S/_A+azr mP''! #9ȭI#?U{GUC%EGؤ>m'@ %~aP ,s*S%tRYQɉ Bo!$kR)왤H#2 D&8eKDJwo|QBgC(M 6UwVw?2]rw内u?pZ5Pl|`aBw`H 7߮:x10k94v86($2XG[],yu+VZ`-̳ʰNfM,a湝+ G׌b4)gx$G%hL̍FZ+@eZ@`{#;*nox8 xp.Y[wf4ycHo%ya+4X~u [ez/e:@u;݁>ETHjJ,9zmL;&&`\ds"?zCyK^Ú/f`ݍʌ(O } 8 ,hw+8OzTaKWVKRUAU&nKKɭhϼ8gu/&;^#_4sa޾ &ۺ t9?@LC|h8A.$TD՛I"S탪ΎK=ཱ=5 LPso25錺tB̬p(f:Ԯpb( |Чӫ(͕oOE?4LJ'J̫c3w9S@5%Z+æy Ɍ*Qd:&X%K8t̗%oD%Z\* +8R|5Ju +6d"zgz!d B6.#+u3-8œL6Bz8injrdԃɣk&IcYE.i$Ru$ͼ1 Mh*wޚt]*#UA/xH4(nt#.UeniI^J4]X:5QzSH@L(fj&+$ل-r258 fqw5Bn`uuGh0nb8gL}Pnq匰oˇh!4 yIyvI_%#j[$3w(qȷpJ 9vrL n!v|p(J FIb%E`p吰CulBoqs%pJ/tm2ty),SMt7<ךڜ *$ EB^}o6 AMDic!;m^8Wx#)cnGQ]>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 9067 0 obj <> endobj 9068 0 obj <> endobj 9069 0 obj <> endobj 9070 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 9071 0 obj <>stream +h;ˎlq^s$%#@/ tkFqe~Xc$ gX*~t~~ӧwqvYv,9_ںĸO廧e]]<kHof+xhuޅ#"|F߮ޞ]- G>nny4/zwi@ϗR*A!‚p\*)\4 +>2 +VLY["@G|4zcaJ,8ccltT~L@E:xםٓ.7Oc~e`H>,*e!|$9XYNB⚯p/_?U8ߞdK?^Zk%姷'&0楘Hv:u=Wz?̋O\IKDx$ZP:MqKhRW,x?>r|Jǯzg54Y.^R^<vC?>_W?~x`O_/dڢ눎e͗0v֖ryЛM/]\>wߡť>,z^Z(: .\`8_thIZ*L6}$kp5{ʹf|YZ 3\]rl:SG ~8޳.]軺$}I=; ~ɈԾR?|X7'j:xI>\3- a߀G@=tAY kj0׌-fYOhWW%~@Oo<|e׿J1_ V`ݠ{C\Ģ0kG+HPi5e|#"4}^@ ɧE8&CXr :l4FpVd{!J;֧l9ٸࢠu$7si ^aý +C| 3eM@XNCu!XV;txi`y60h3@ 20_NBX@_3M»`1MXT4ɫ{#H;$B9FQKX9% ٓuzul#V?Z ~2Հ3WAt!ы62K6 d"1Q' I&^mi45^7tgKܿ`'dMP9|K%RcB#y(i[8&6ݑl ZL*|IǚB^Y!?F^g *( Ws}INz'’\`I4bA7,ډe_v+j(4H ʫX&!grOg, w-CTL$s +mt{ +, c3ֱvAr݊b/jː[IkAxx}(HLTG3VOW 3Ɛʩ +F p5Jm.ss,n@]JO`Wn) Cf];|e{We-0Yj@|WFeM@0 n`.6R<,;LƂC`RN[@ͧ^Sc7L ".=dzlp%*,͉|20A 1 Gi\<& Sbq%t)Q^}co%?ڱ\E0díH~Qp3ٽ,?naJԢRMAUnIbq/pd-|1bXP\d[ddE?`.ߞ-K=sӾv#k 炐}n#)FѾgs%0em',؇kv@ij*>\ͨ4M/uߋs>ݧ}ߘj@yw8`<;Z7Qwa7LfvOu; to>;8aj8u]Ì}waN޳ctK8{"޲.ha6sX޳}gNٖ^m7G"5b4e>F6sc.#BN|㭂 D=ڂ$N*,Bb3;Lo3GuW'J4[:h`sI}D<1񺬕(#*9 +Vͭ˙!7n[*K `Ek"Xp@d5Dms34(՚=79bOEM$˻~jV +ʙט71%R y佢W/I.Ĭ[,qg>PQ\{tB"kJ'0 gÉ-?“+ptH%2+&pDm&~-j ~Kq Ɇ ,2tjhb"h~s_RCR70QLJ@$ĩe0p*NnF:XUzz$~t +m>n.yFM:VOy^=k ʠ)&:}㊂ջG*s>gZБlAL?zݑ!e Z2h"C3u +ތHf@ &'MFV4:J?:4;;8w!)Qmw6Vv&lϴQ;Z,Mѻ좌r{F?]GYBJnuSFo'f-wsUB4vBBy]m嘮m=4pbP߈S.[VlllbբW2Q $Hi&7$uFMrj͋=UAWy=zm7owY۹z=%Yc!o?(CB1b +"9.$Xܝ3 q[To9wFLy,w={2@ƻDR3CyNo6rbJ W}(EcIFl٧BgC@HqnS#Z]mwaK$kJjS)1&RMO ChYtnhT!?j%9xVQ XYT%܄ Q^1Et=֞˚ǘyCp '{mR#16ɒ)# 8.zW6~%B`$Shd ðC9'PL=Q e~ؐ{N6f+rE]`KW"2ykD_9SqKޜt2!Mr#DoIi +,(oqC ժY"}"9!f!PlEYoK\7O+FB LW^ Nǐ+|qagc*p1 9OqF([߭ODKewcM8j<`zP3#&x=.XWk$E%yJTW'a#%E:S(8RP%TP!wջDWTضJbeSHxh zl 6?gTrq %Ga$5]alHM)ɉ3#u0G9&^.##{'>U<6l IpU>\!XP#7aZjħ>ɷˠvԧZ喝8hr #IhD<9/D^ +M'%D71{!m`W Wu&l;ptwS:g릮MQO:"&c8R}IS&%LL|ar.y;dYvj<6`@Ԣbʝa vG6v(a+Q:gŒ'q$tW~zޗD[F~8I(ƚj֔$vhԏB7eO]UqK֯&vڬ4sJ)r IBjma9 ɲu]K yy-L%w-Zk}Sr"iKۈk)a~xa[=博E:ᄶDػz&pGB~,$(]B[o"|⟌te-qEihiʖ1?L {a;} :K8KUäL&%[u6-lZ=X'u~9/>w +Ǎʦ/[$˱_ חsX2rڇW|`K"?U~ݤTm-vCMXiEgsK4Qd֭5oM⨢c1'i%ɳI͋LIfi$`y3f7+1A%F6EUNj t75 ۻp 7li'Kg/g +HlurK~RbW[m&N- T}IZ_ +endstream endobj 9072 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 9073 0 obj <> endobj 9074 0 obj <> endobj 9075 0 obj <> endobj 9076 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 9077 0 obj <>stream +h[K$7r|3BV  ]Z,}x2G6vG]$|#"]ӟ_>ܟe˗|)%.zkܠ_O_^PJj+w e~w?g}k;hB.4Mcլyf P{^[y^C^0ɫoQ{N[$7}7ԝ]Rδ*ؓoOV9yq?/O />G׶<}K?^m,l[4ì͛C +JAm]`].zMܭ_[ez{ʥQr5'ߧR_cc:ի}x5/EMy~SR/u[j +g`m۟ovo|Joy4-۩Mw85V3mig,O~7?/?.@ߟ5_n‚/]߾X| aC^KTpr=뒶x{sˡ`:a` +Va *f5w + [9^v.rL>G+yZO,[\.9nN'\`zo]eB[P/ 4}0S87y/- +=78 +ڜUhz_kaW[o=c?}ti@j6/ۚ.>}נX"оpJx +bzC(czU`|m+^QE $.B /A&Е>./0o7>;vexG)\~ZV‚_s_xK ?Cn,}⥇]|.þ8Y[Gt!7_z1g|$]pl؃- ^=Etm1<}KT,M,=u}Z9RK/ôZyTet)UlZ[%iu.mX&dq7~?K3$ߒiJYwf298ܰN%2DF %4KBZ̥C VUm8zѢ1Vִk-]%+QvO-z) + p*RFSM2@'fu>,po F},"vsMdD\F8HN^ 5L u@H`[OӺ8"QVmwF^ځTXi +Ljͱ^57NQ`u}CK3?S+ cC\su-B؁' 2_E$.rEϳ`{~YpܽݛӪ/i}綇u#ڱ#<{C~0~T-N$诵~ +Hpo8Ը]cm0jy/"D;$t?0Qt.^Gܖl ,XbIC-.8<ӞV\7KO<8r>gx= pz(),(wRJxEkdTehj:FU7Ҏ+l"#'ύPv\Ӳ ^#9Z;hP联HJhUQ)ZJJ-&ֽ02#Ϸ#=Wǥ߷xt!GZl;dq}_!{_璶-tM[;K%CU}i99ͧErMaTH/5YVr] p?SocISj`ׯDQJV[Y {^>)*dԀ 18d55VYq'KFuZhr1ةdoWmptQ'ɋ=,u40p]I7ĝI63#eO(DäWŨؐ跫؀\6ʴD^gV"P&k8Z2JD=cL :nposQHjW$ 2]褱?{`uP&b0,6aOղ]/i)\Yάȿe4\Cm` Ahs6hq~:QQmT`zS_Ъ}SrRhI1I\LTj‰11t)gꫨqQќjLr$՚7/~?,=0^)U7Pl:49D=nyփ#lvTT'ĊÍ@U +'cW'ni^Eatߑ' @ZwB,q8ezDŽ[O0CrZ(& [NGi, )@+=]D 3aP 5uF0Dɺ'SsZdrUI2J~ a6'^k]Gj% 5f1*ԂZ*`k !sv_R1˝|$j(' + {,%]WN:*m':|;sA$mh6MNBM M' !  +f.r +uS%z!rT۲{_HpN/=RGP\L QsM)+=8[n_t5e(:3q̉k=K*:drv[+9$N}V؎0<)K;<\dBf,u8$ewė d1Fʂc~W8f +cd17sL3e@7TLNA_%L9k|(gfo똩c#.\e5s3>{&F3B쌵M΅b: DƲY:/Ş(I!pQ(zd){ {C}m +d1e nZCux7 >0^m  +gxuX^m^&BHRitƜygJÕJWsV +iq :ASu⇹URD/ V/햝>/&@.!M t*+TvI1ժmo(wc)zn_Ĉ<i̤ +/_GؒԪ8P+O>a|jܾ&u#p^@s7vjGhӋD?PmlfBj& UݞB.J%$eXߡ,׮w y.>Ux 291LI&vٸ~T@K x|9dtkd0~&+}'GjL0vʙV}QCgKEBI&<6#f}oUQg7Ѓ˚ŠBKB6|4†]\^[&/|X?O2D'ͭ|c|(3i NbjetrOts/^Ԁ(Io{,YP!HugP5=`Ou]g}g.4#RИܣqĘt.IDE%I0̿LVszzki/99eR܁d.$ehBRf"3D 2_*԰Ofk ^>Jb;Ӕ͇ G9s_ic:3yzf H{Hw#(sϛN92"',g5:&^< 0u[:I"TIlGǂo(a8 +&%w0 + \W7{пK|6cS#-f9pO A&.nD17F̡ _]ԣON<;7_;6aDŽOKm+!#$ڏXŕ 'w+sm㈿ukWuE"%Yj3R!YjtpI3Qn822ϢwIl*Sߘ9ˡm#h(~l ͬm oc7?j>")6; o(9I|'F47u)wl +"Tlx/TXT-c-f4`ClTipɵ):A r?' +:]ꁐ(Ξ^ _m4jެiBHzzOxl&y 4=o im Jo0^MS=]\ Y8iLxlPW{':z6A;;ު5^aNK1_d+?2Œ Ot5WT2cKsi7]P[ {6]ןAXƦ_a5S.RުPit`UD| ]b3 +endstream endobj 9078 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 9079 0 obj <> endobj 9080 0 obj <> endobj 9081 0 obj <> endobj 9082 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 9083 0 obj <>stream +h;ˎ$7r: $ꠑ`nR cŽdY53Bu%`#_Ý~חN42|Z)9^}O?yvz}q ?W.4yhu}FDN }z96vqS\oC[3Ӓ TJB%siw`aP \ᦡZ_v S֖#v˼#*hr0E8Ԙ`di#lߗix $վ_)ÿH'7{2ilٯn8l{ޛE,7"4 X< V+IH1Mnjavy^_,f*ò,)e/&oa~S1ԭ{_Y'`b'I8@[B4M YO`f?Ӈ|)w|;ˉg9iY翜l]#e=xt }/3tN6KtX|,S^r~O(`N;wo?_qp  gӜ=NT~;hwLxX}ϙ m%_%VN9.:S{K.po]]>}#pR@' n?T\Q?|X7'Zt"}8hg@"´vӓ<¯o(?FS^3h.s2b >K Kh:v +ohDnh<w_W)khnv30ҺAk+E?ax؀R)m3\gDx` R$LMon??.ӌR‹)8RkQ?wM#u~SJKvo\ߎʣPj8>2<]\E_.`-/2ڍւZ0X4fk"]-iDR,8kf-qLWa{Æ)55掬19OrpvE⛖/OA0r3% A-huNCkmƟlg'\b#c{k#ia[fVl]twtkGE@9d@0^$&|߲,%0W}0̸Ňl‘N@ f!fb7ŁZ.@(#O P /qh7rboY N;Q1-D@Dޅ9N<o> + +"0(U8::.gZk{_SAy +`H<ͅvӽCi+e)ȍ473Я:jF4?#*8E|+#2Xy K&bw)ЎPyPĀu\d~ɼo&G0ȭ2nm?Vc-T8;DSFoHi^,>]^ȶd볻c2No+m/rU'&Z%v15V5yAz!L# @F?hN?ۍ+$n ܫ̺ 4bѿu#ͯT]BC2ɓ/(7`$Z*ȕHo{HB U1-O5׉3CG1d*J륫L`Q9By@a7u.W$5#WӯDzpz硝*j0LґŃYSLԱ|3 @0fz.kݮHЋ_ .fI4o`q!F[Ҡ Gpl2&4Kg|բ7zq\C%<]den6c5@M+1oMVӧvf5u2B;K<:އyv"Lybx@ Ɵo*\LN*ɸ0R1Y$@t+ v=-\ Ma#p GC.461GFºqot4y)xE\C0 +*c˾qT5@*if(d9^à= $6Ӟ`֤:s:oA2q8Ż\'WYSR)=XI6Ee}f:|(6z\psIc.ƭKė +gQ*]yNo1qRGFҧfφ1L(jMnO6fpL+Ih6 `D|PrF#Pg/83v/[ mQ>FUK$),$/*.>:{HK@@OjEd.c= 1Xb@QQ֑v"0ݡQd +m!slhee^]grfQ>ZWZ,E*v }o) -FE׍9C=a ;"ל^4d/JkJS/nft 6{lBy0{5t&!1}Zt[!Twpo PNjG5f謙gvם2|xM@'{Ɛv +X7wuޕt6Q%p`G`DMxeprKrg ^bsvtf!e +c![bŔZR>ҦXv=:*# C[*UzR%o7ޮb5v$[*6^uhIWJі|eK̠׿]+ց/>@ȹ$pj㴄!5 +7,_W'*JC[D̮;l%TImguWi0.Awk>t+^buț_eIˏ#w)wW/~w!(6f+H`<UO;Bt#Wo 2]WV%PKsq +%l>tB{Qw]ujFf|e sZժeqCeAgR,5y |R 81jԭj۰Mynă):x>RԔ`M.2n=46|qQq)R1ɠԗL4Ifmg]NKMG+ՐX6&!FpJn P5PJ£XHoCA;8uՖvzIXnܻ}Q(5 +Ԟ`t + t!rlxݥ8'#rS}Q6G]`(&RO Pz>P\yPTMB'TwҥRnZ=zZ񅑝0D%㈲mȇVq;o< +̲wp([-gci9T,٘t KGǥk^;ܯ + {Ub4w6D8]M +f?"c›|D +.5\*ړs,Юm83{+`V0M/8}vv}xml9"wNח\&&l[L Tʧ/w Qגk ߥZͼaaw{LSԩ{0;Y>ߞypK3p\U<ĒX2`=3,˸5t uOv|mwG0"m;?=jǛscSd~4`>;dg~sB@9&wfnafcvj<+ +*L5l7x:t<]>V|n xV'q,_:.?H_"cAMub}WULD^j$RXs֗=Go#B7>G >stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 9085 0 obj <> endobj 9086 0 obj <> endobj 9087 0 obj <> endobj 9088 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 9089 0 obj <>stream +hˎ#>_mI@ @ CH16Xۈ8bUjr Zoޯ?۟x~<=e#祔mnVojت±=V?. [liF%2Fsa - fY`\$8/m۸?'bAfIޜ.}[rsj&I#tߛl7#n`,Pٮ'Fǧѯ v1A>ʕߞO@_>Cx9_.eĤkxBTIm+I!չIk:j[I!tuW>83b[oJ@ּ@\i؇}cX)֥Wl}n_})/?>~Zx"re_zҵ=bnhV0z_^??}nˏ?|ZtXtą[Ve}GŅp|vv_]J>Fim@+[u k &^-{Z=p.TX\1alop'_akM{TsvHu.Sۻ@ + 7kF05K ҄o&^o:yM75M+*,C\~: p_o;ᩥig7 'Dmiij0xFeB#<7C:" Bh IʎZVv^a`ej:$m k繃 de*Ao^ݮFBZA L ~?]}Rek@ؗ췅QmZ9<9(R#Dy`N䅵I(  C@ ~A`<R"Lłf ,lɱf[RnB^ ZYp ʳQ.:7x>/ $>b}6WgK :/@tJQVWɨre(rq?Ʈ-}h|aFNVD\e3o5Pn#$Neda +tg' Yu9o7!nבW/0S \@(>Oh]^);㚖Xbu GW|ny=X\1*ۈ j^4zSeP-Tp!JT2kh6WiX|t84GX":Jsw=I;l|,RA΁ox2 ;c+ỸKyJ+ҍgBdGː^pZ;ުv0j2 {[\:!JKƐ#W̜T;Z/R__|GˍٳkP"jO(OA,t`X't~o"%nCiqB8Fxeݳw k]B762tk dR!I/, {΃ۏw:z;<鹼-!CDS_f{ (ڹbww'XRb~,ȋT«b׏Qv;hʨL'B)&l TB.@,R@،ec*Ywۋ wt9Iq NիaZE%y#{~0b6I2C2UeMufc +j/wΗi4~PrUZR?.^ +d zQ7KqW 77wh:H6/#zI)VM9:xP~R +{SATW\uf`$L 3qDp#zplxN4Dbr krjpR"N[%2,{%2`'_~mgz>U\JC'+,w&4g5;S2P9GuƻGGOV@*+M@T2f(5\qh:B@,!{ eyRhtUֽA-(:bdi;6b7b@Hb)B8WI!%k-n=4DH;mp~wL?1*>x?&qUj MFa(f2huꓱhLNcգtǎŷu2v.4Ҷxp]k#Hy~8ol~pvHBnsgcGkߛcqtsctpi}l{xc}pV>z|j¼׾6Fewc-CljqR5dlMoDa RϿ&?W׼Q_-'8KtWR@. 6#K܂UPT5-Q7J&EXLI,IdTaA^1V3_0M({C(cXN63Jqn=y;]ӓbf3]ɡBAUrEHcaeƚU5'F6laŁ$Ux,{1u"I:3&V^~'c!9 +r/AH2'qUPimO _qx) <+l|(U똳63Z!8 ?;w6wT0J;^K‘xPy][cPՕYsYUB'K9UݹnݣVV^:_]aH M,ԂCĥ;*ǠqҺneV%RMVB`( +endstream endobj 9090 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 9091 0 obj <> endobj 9092 0 obj <> endobj 9093 0 obj <> endobj 9094 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 9095 0 obj <>stream +hɎ\>_wlrri +$SpB,YUEּ_^ߛ,Owe,6&R^ݝ^;)_/кݫ.GC7gz +Bڡpdr FyY uYj@#v' +D&6.)y2Swbas'ث|fEn-mԑ)1r܂ZO]ye"tRAO4PpdiFB'؀l0DFz! +2c[k +Ifyl%/BI!Dedenfl t&\Y&."L]50B%ɋ(Jӝ ÁpU94 n/ )@o8;0oW0Z +"4[;LtԁfV[ #x24w6BG'cwۭ6{j(O~$]ȠènO߀ntw?qe%1Qkt7(R乍L6N$ݞES"`dZrgVv"kaR8 +vN!A|ޚ 1:B`6 V.+# +p1BYT,.;GtWtwtC3W:HE~bv +Vг]]{c1Q:Z\;( 2VnY+ !p3b `cF,f*{{;3p'0=ghۛ4n\UL,siɃ& 䉛N v~׊ڊ_c|ܜm晈S>Bh!7^n_ 5Hmr^G8#Q&\ĹP#uO6Y[=hj+߬ԫn SBcڋb z";'<I>Ii(CA?B4hTP󪅿k8J?i@&T.'ݧоJUz-qα5G!EK3?l4-ax[gABT᪏ϙZKkjaq|AG>im/Xs}[32oc.*;0y~]2+_Ȣ{7B,WZ 4Nfn' m2r:*5!?& ܊l +H3gelSMh6^1f:㫒hk8hs8;>aR5FX$"(1 |:+\;\ omDMkWu{OOxΐ]&QGۨ9c?zOe|W`#)W̬nRGK-iHG6p*O0Js((v0P+y1Kl1:VsPTl#oŽ8V$oSU΅6{w/aJ/;풨WKOUiIQE%eAN ۜ_>^b}>O7IXAdDl+9g4Fpi,zG'S-^1iA78B'# +y3y6͍n|{>n"TsJUQX?f^EUI&^(wUbmVm/}K@0&}T۵H<>-^mȰEi̴V@# P 4<<8Ia,ڬjY/Ε37Uv\02a62$2ME=.0s޶,VfKa8P~{KܫN݉&uL@&nѭF4 M1][Z)jTv\h`]M)I|ӈ2UXcvJ@ {ޯA,wX6! K<NGG-c.x l;ǵGwbT~4ʏ|v-õpmuGK3he.8%!.UuCp]Ujwk>|XW]L@k,蘁DXaMڬE Kdd: +endstream endobj 9096 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 9097 0 obj <> endobj 9098 0 obj <> endobj 9099 0 obj <> endobj 9100 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 9101 0 obj <>stream +h[Is.wh N!a6lXreFRw{/nݛkk#祔n[mpÿw;l4oJ%lK7[M:d=W7;/~\]VZkKkunwމ(q;zm~jg)t","m[$~(zDΝdp2ձJO\r5'OG +h #hڏ$ˮ5e8 v -umqtjq@[|_۷>|O0"#Q+y5ZZ6CO7~_޽Ǐ?~S^N֢#Ų CnIOE6QjmM-.ěYʁʁ~u)Iyacn/-'\WN8_i8TSa ssq.ǤsH9e3L-V+W^;6]wVu+(P~IAoy ׌dmJ4_aިEf߬"L+* C^ '~O--(;9}71گmKKPgd\&6jP,K +-:;੃!KjA 2TPj?e5lUCbOb"t`)U<$M`+S +:.Gvp9 +eϭKaeV $H-BP1铑x._Ҿi- iӢGǑg*,(xIA9QV, & 84 ;O6D|K8 58#a9jp,,sȍTekVo%F񈰺*P6XT~EGDK 9>۷wȨlMK-?I6n.%ʃ:p +W{g#cXaοOE" +2;oeepl*k '!Db8u[8I7ov^ +#Y!҅enخp-j\>A:v2![BnFLd8us4i +82]]>?4IA,YfW=V%zu&~((6z/`g&Ϗ W8p[İ+W79kAe*]wƓskP R2D/&uwAlׯ\l8j|a4k^E%RsrQ4 QcLvL0<}<]u`zLp>[1Y4D 5-(L&CAJrsko#FE+i; wG."d.D:'vrjY'+ U9~K~ bH?6`aP\S#v)5> AMgްbŸ 6u'IyX;v0|g|}bxҲ UrgkO0X2pxA~e&]8i^*Nc3T7` IX%;*ض3C -dbFqB\"[sM1s=x- y@ݥnc}WSw$ntȐp])c9O%A@FjE{) rwbz;]Ԙ%*I)]7G @Tzq<:Gl}AsڕZ@3a$F7ਙ'w蝄 ?FGyf+l0D.t9lϩ7]65ITY;N(j Oz,2-E'򫅳=b'"rV?S =C7wP7ϼ lW=C4g~D{u Hش Y̰1BB+#-]+k]dwbnއjť&SXf?%;jOe| No*>rnG!~;Kd1W-7u㼞Q 4fS= ផ/nrGD70v 7WM}uB42j,hQ$Ƕf_ Rocn<ȱEEþKrv Mn#Yo?=_TlCH` B[ 3tx. *`v"b9"#I1ʐڋRǀtV'oAsZ}kpe6t bxx=qW@"{F/C?zfQn>9VDNE ǟda \NpXv.2$MKD ŽI_+/iqƋ`ȷ+04  +HAVQ5;L?ԈH-s^˞z7/zuhp#(FdHzf si\B J"+!H4"ȗ0mqdGBvs,Pm}IY~k$%)onYӋp}yq,4>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 9103 0 obj <> endobj 9104 0 obj <> endobj 9105 0 obj <> endobj 9106 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 9107 0 obj <>stream +h;ˎ$q> 4%aAa9CPXIӿGFfw/XN;22ӝ/O^^ɝ^ޟi|jN/?o}wr3"Sdz9xn^qغ;ޭe>J[5Bx q|:>spЀ;V5df옲 x~<3ӌ3p!nKdυ%}iL0*ǏmERw_0ezB,2`Ƌ͙ pay[nwW$ۑբRW ,+$N1m +Փ>5~=^Oz|hXZޞޟlhߚ_a}[1ˑrcx,7`b'&M͵NtдƓ@'Xt؇~o?rHǯ>>v+lZk5_Sjgn0}z_>ǟ헟~?|9?ͶE˞O?_a!\/Nm1tw}K-9}v~s)qه-X[ Zq۫ tumϾ/TBlԎI{`{ϴg|Zچn96S̩쀱=w Top{go`7@&}4a5U[pw@"2|?O gwj鄔@z  ^`-WàY&4Zc:v ( 2@/м @7VvUi5b AC\ĢMAy4wtbv;q\[O˹L@L:ʢW~SȜWo@\ V"F尴\>B3y~^|K"mEiɝpOO=%ȈgoQG2Q>[<!w!xg L6I 0ly 6oIeos6|Ý &٤ XnU~AO.b/o0i$VRS +s*^WܰquTY_&rSgjz6ⳓ~G*4``JV@N +3cc-6b``@qW1L1(pJI*IV+$*U#[Ռ!(Z,"c=q|0,:Yj 鬪Xvզ78M$*^?>Kʥz+= gLFZF21LKi}թByoNm̮cS/ *gؕhIO" "cGSzEr8>M5&^u̞ Ɔ*dMc.)a Y"A m: $ԬQh-DC4hgr'-9N9 VlPU <ЕhX<ķh4';d_֨{1)*+GQГ{07Tǁ|&C_X&2^0_O!:9Y$$)1I#yM4܎ؘؗJoصzŶ\0i7Ź!} vo 0?#8{"ܫ4r60R݋$݃\'y ?R Jt!/#EBdb eN&p^S;؟JҐ{ֳu4o*^l^"2*V>q{2N+)=:CHW7"+l&q ֔eXvƀPiuuW~4B*;uHwU]$'NlƮ'2,{wiN1?G;3ѱ{zQ@d) Aiy<ȋn񰲤 + F0G8y"Z9ެ]dEtOwb}Ϩ ieђnldjPD׋WlT <% stfi@m!nc[,n9#5n. շ`%J]朲e5R鑑ZZlQΣ N< +mI &afִ~\0"yIbG7cn)Ed֨dǠg&V9_ȭR*lμJTHRcց&~ _I :8YI6%~̭Є>l=Il"#MNC"M玜W̪?NBbig4!QtFtI +\?hj$0 ]X 7)kǛԋV'23m6D\IRURgԆX&:;ŔR8ou ȢXٓj:. '"^&wOz)>S~#UJ:?еeX nIgbo!B.k(ZN#E^=;=ʹ!yqYEj:,.%i&ORVCOiu )5J,VK,>ҍMPn].&$ᗤ9,5ٜjWIVKLjN+k=%1) '(VLX#~QomM<,G'|USpf'#xʘqQAr@dJ Z_l1mنTlDZbsny6j{įmϲ.},#ƙnk>hhJ#7ćpÆb]a\<@ 5Rݪ^aa3: VTC5]&<9NLȹFly 6h"5d1IZzLo.=:EHhHc3w^<*Ɲ`z)bʘ`jB7A&n# +h$FRf]҈ۥ&3GM$FZ/iXdp4 +ढ)4Cd#G׷:+@9kcMa˟J([K(1`:Ƚ.>KH +\:l7KL]6yVI!W P>(E |0 +ö_-{ZԾ̹}2h v4QłX$ :vc\kcOHrR1U!dW9dF4±i$$f-Ga٧ NM>[7;yʚnOfҋU=G e?@8'+L< j(GCCK)ZReϕ&^n\&OyJO~s(ǾWQsl +U"{vv>T7ʡjl֓dֿ:CKKjEngSy,[#XGm<,Zؤ $Wc0gQp`t7z}ScHB!oQ:?Oag]c^/ÒxT(_?O +:U%kEnu6c<]BfU?Y ;QD/p9y.++*ST3IYd|#c^y|[K?oF<`M5W#u<ma#dȪ,y +Rci3B1h^̝$KƝYQXufIjߕ2OZhW| KW) JIO ea}:@*,죍h֕lY{d5{#'l)ҙ>԰mq(snֽ#ri8T7F$0xy|*Z$OOfz7e pje)?JAc{Q윻{T0xt>rW$Gev1zرt댲v\;c7Q*oibAX\ߖkctd6-6T7?m AM>l \s7RZuE'1e˂+`G\A fCD!@Ǖ{0vQOQMr7|j20TZ׽aK_#t+*]x-e)l?Zܚi]2R. e7w^wtY0;>hWsPo1PJ$׳OnV$T3 $@f]Yr)2u ;gv'_I+}^U( HaHJ V[Q<ߔzbȍ&vTZ% +!\n z|Ŝ$9ʃ0$ם( /GPUw6ʷ&HMT96 +LH=uŇ[,AT9)AUw$jޒOby+o?R_5UN|*[ +[ZƧ{+V_ ny?XƼ>cZMnE쑅fI+b<jxY_nkj#)LNp@Y>pAr _(/tHv14*;~y3ʮ -Sޞewsǀ?X]\t̷Ay~XN]}gL7ƺ1|]:ϠCV0ԡKkΰ^(l~pvHqT|\L]Ì/ܬ1_G胓#x-Nkh7h}s[{|.>87!W*҅p c{4)fr}-cA=̈/gv/" +0UQ +endstream endobj 9108 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 9109 0 obj <> endobj 9110 0 obj <> endobj 9111 0 obj <> endobj 9112 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 9113 0 obj <>stream +hZK$`j+ߕA`A‡ִX3+]YwfVZ6,>e+ߑ"nÛG?vs!穔8u 2xxe)Z:|\^;=Dh+*VlXl=fC%0c%:t3 \`hoXtPȌ;wg +uS; %!z=+u!rqʕ2 0z|:=8zZhsp3?C\\9χf|x|wG<TeSNiutDxn=W?:BVAѿpSR?T=GZB!uօ[nӕB"tGa mkKwA\_~mLki'MMxy›w?__7߾)wotKDo_M?)Ti0rx{zx~SR#Ų@PnJOE( L2',@@m?8/_`^0yA9v~^R + c;&Cz<%weq6pc8`x]wNu3p~!`7y sF6e _ aߨMX=g_m"75N3*,CY #?$&ԝ]A纤BXC'g\&1i,K59$;rIBofB:JZv ^a0ej:d$k [A2;q/poLJQ.< J_2>Njx =:f}2փ_ ׀/5/~Cm4ud䙚9(j#Dy0NaO%" Cϓ~CfWҽ#@ eN(np4`;8ВC፷I)3hɧ" (E(x.&%$]E@ 3unTi0@Q4 cQKC@pl^4.CTq!" PY{%@ +*S{, 0֯8{6rC<#2NI/B\;I~?av[:7t k BnQBW$tEX3iD]nLuUf"]OET}Edr.i/_>+BB;ͅ& GfH"y9EuhK/:A2F3Dsjs/ןTَVR5"w,+xJܔ뉤yp%aD呠L3)'N @r{I b=9M5YR;3[H!]j u1[=)^M^ege&xT("%{7NQux^QgX8tf9; +5gY##J/mUNLtsʞn<GB ;W)xd0+ LDo1$,u +߬,+뱣qq2-ΗJ{Q T-yfOY/l/zkM?)-,8p>ikyq Yw`Nk")cFwnSIE0P +idP}{Y{?^U^)Sn+6s2Zg es R +q}=rl{89N|˃9`{ +tWX1ȷ!7誳i% P"kOd\ ɼ#ilEJu_/w ;A6JijW˩.ulZAтL̝.{:C w30 )I*/|_z5pi[E!}G"q9;T3BrV*ړx%-U2U#|T޴tAB3,22ߤ @f+'ӨKtP E} G2k rjқ֗(tdCfS*>;5Mj#tMY,7rzLW5Sk`e +4^GQ&EB-p&B#U#}_7j4Wo#e+eȶ|kн܈|B#~iEZR +Lf&N~ /7NQbZ6XWKyǾbSI> Gu6*+ ;Tr2ҼPdE[=@ϰSޅXeز/jO|3b>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 9115 0 obj <> endobj 9116 0 obj <> endobj 9117 0 obj <> endobj 9118 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 9119 0 obj <>stream +h[Kϯ9hŷ4t'a3m8X#O^,JMK`1Mb=*On/==MO:-N>9.sKXoeqqzB.-se{Lnm_کRۭۣ[srsm=,<ǡ^?4z=;L$/@S)q+Q(^J ^:q^yu\ᢡڻ֊׶ 鉛S'(o[1_~2XGئ!}a zs4F׋7o0e Jz !yd]ɛ5|ԷgnW$7HղR[ ,+ $dTfW +AE <̶\=|j[هZ4R:p{`@\=_\v8`_Yg`Ic&N8`y_A'\ػ/~}ާ/|#4Qw`k\TGnw|w??w~߽%O_`gRCFDz+ ͷM9W&L1_Tfm?ǹ8/OCyao~^I*d8Oق=򻕓82_dbݪgVQ@:h|X櫓d˝XR:@V#52$jMl/Dв@C +|ܒ8:S@ QWJC +Űdw}6Ȃ.x$Bdܐ`D +iHBU:JRؖ;GQP<#:Frcl#[u*%n3n)b< >ta/A7ddn\q!0B3[Uqe"jY=BsX>@~&($9lF,$'5vG> 7A. ŃM錡bg,I ycظeh -GbMw*Ts,v0 +!!p˼C =@(Rw[Z"16 - nt%'Z::J>K>4%MP+ M8+L^2I(s#SmH^2nE2c_DR +Q*2WtܞSi&w+9B{p4"(\ߧD%OG!^K!)=^2˕* +*ĉ=a1\8 +*P NtP!,$<J/ī! v'&w@$NUOV̑_N;XM0Y=+ WOv e"*QG4pAK"7寧oFq,\bvЋ^hDu(R&Zw]ZNE:Ƌk("܉h> nrl2^^0L[6HHpb##WK:2,%߮#5Ǽ@UzZmYh{"ĿQ7#ih17{^^yJ;ˬ=j +-MwwQqכw*gF5Ei[R#~ؔi_C-'2 2'$bZؼY(yuԚ~.Cd#:ֵȌ5Ϗ>e} ^ia/w֮oN*%^nRܝ\ Y-SrL 0K wPhË9C>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 9121 0 obj <> endobj 9122 0 obj <> endobj 9123 0 obj <> endobj 9124 0 obj <> endobj 9125 0 obj <> endobj 9126 0 obj <> endobj 9127 0 obj <> endobj 9128 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 9129 0 obj <>stream +hZK# WqƀzՆw |p, #Gr֘gv7?$b4c=b=Y||d_~1owplqяFç4َ4u4A~  P3R) /76]7"XBS} Gfپ-39o4#s|łOlSɪ=T5M+ĜDC.Z\/>He:8ͣ&̈kX V&yƇ8&6zoP؟i͏ dLFyF9/eæTlb 5-}x^|:?}ކ>?. kW8ސ|DP !1iX>QNc@vD;hB`zk聱8l/oG0N8hi:Ԓa" =탬-@zeM+4>WfUG@ +[&ʐj #{s h5 +t*-Pn͜P`$()@.ן>TуߐWO4O~Maۣp#1r/Z!xypNqN,` H*݀!d(0[)nFgN i/#p,`_:ݬy*9QyxؽҤ]Gp(GLe3\~@O 6*{$2 @ Fh9s@1^d˲A"*ffaK{AA0GZ(0/cd !_ 0U dM'&B,,usK۩6"v rl5!UL]k]*ΰh"\ÞiG(2N +`ru!?)e1-*Va8Kd(aiy|XLKZBg]W8޻TȥrڢLU߭^QXZѸZI)RIRUd46t~W=ҳG +[Som&jŅZ807ز\12nZ bF͝U(7בoc__#*QC8X/:\h. *ond'tQ~T&R\,)Pw,vńs{z1{H  SZ~ꚯZrˑ洷?h|ĺHJT+@TSvuf;e&śQoy( +zQjt 杻3t]!}s] ʐk^p +-!o &Ͼ16*][A3NBfoyA-e(O̲ +J;`v3r.EC5#`԰)l][i.߰k̘nŖEݥ9RJɵ>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 9131 0 obj <> endobj 9132 0 obj <> endobj 9133 0 obj <> endobj 9134 0 obj <> endobj 9135 0 obj <> endobj 9136 0 obj <> endobj 9137 0 obj <> endobj 9138 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 9139 0 obj <>stream +hޜ[KǑϯ*ߙF{0ݜhP-RڿY#ڐHvU;Ewwsß{~6'sz= +iT՝~XO?=<-j +Oy]]?+Lڞbimj ϡg'c0K-YʶէK{뵸ޥľm)%W]WX<엌/xg|tMMVnZM!+[)~ZdlQ; }ХuZ2cz<7n0Dxy#._x&+'<7ۦW嗶ޫ-֕RNO/$;9.It.{|V^b mXɺoq'͔F}7,VSO6 }?~z/O?|/ {׹{'?8}2B^<=S _^?|?~ϯ_p=cx~-kOk<}BG|ݴ9ĂKH5]P G|vٵgɺòGמ 4o,Qtu$3?C Y M}N'my&gk\, ypة}Gnz ̔ø7UK$"t7X8p𫞷BmONrHA{um5{dGx(NӮjۍA:x 4oZGx<wOѴS٬ĥ~M=+Gx_|/1T +_=XO]/SkOȮThS;i24~]ReIɌ_Ox+ɣQ^ ~cį>M(XrR7]7|M'7YwhB(YWjgO۳s7+)d9lav~nkV5lʵEUr l19*kH^.f}D߈֍kᆍU}5lr?,˻{|}4~>A?]XB~%L`4!i隙Î+d.r&4U2bl _xv`fZ`Bk&BtjyO+WfNgP/5z:ӌGEEu撶Th"p2b͔qztdcm]wZ !$)ǦtO8#&WɎ$_yAɱX#lSW}`A3jbel]N}>\ UmMI;!",i͐m܋|}@ܸ + %zS[]nR ? ZD6N}pX-r+J|@f wV5kAVRAB +d9AYky&cu9k&~4FϷzJmW$>t:m[^H Aè6/Gc9?6/f,ln$[d%S_4#q* d6s(wiaB?$c(ivM2dh1w,'NH$֣z>>]~?o޷_^۸;{&}TuǿЧӯ_^~z5}>}~ȅ=ǐD-r_}0L`}-&!V]80$? 0=/$5,a!9%i$nIW*]F ՠҋBÚ;m j-und=Uvb0oMct#d1M;,YQv3hP5"1glwI> I@Zv YHBiy ]S9K>)~ @P%Y0S uܴq4[%_4E 6HUYkQPw=?P(ߵɋk! GE$Z +fT 1~V# @Π,=bQ *A +U!!e -cAK,ވ]hvju\Ww !)HaZ8nՖ/b&<ߙJ)|ioܳ]"h2gLriAjaқa~TӾ![|&R09k^8el8mHkiK< m:+ja;D0:!6_Ԡ35f };i?G D@z`8MrDg׍l߉.;]v,<)|bP[H؄ R;D$>A#3"06¢#a +)*ai@7@qEuKh6)d҅D.ȑࣻt>O.AocdZH +R?Y`EԀL ^r hO>؍Y`SjTݿIz1'2UÖB:: tc8/he@*ؘx;ԗSЕj{m|!AGw\Hk>P~&g>EpP/ 5:A!N\xȻ. *N16!3969h2J)P?B9Gc7Sؐѧn (IPpNI#!B݁fGW2ҶRf޻[r F׹9^{{TKSwԬ C*VԺ\\5wmgDzK'Y#a8y{w#* +vYj"OC%̶3C'K{V:8ܶb=Gosku O`RcR~y8 #{_MejXKUH_6ЅXh_xM0!"Ԣ|$E +JkҴ㢉B |ҁ=CmDv<\56e>E!0CW0S&jrO0C/%uWu+^!PCWH6ps' |NtQ7<i@8|(ڴ6U˩:RT.Ojmt:c@_mYi +&S"Pb H3l`ٹ9ۻ9YNbخs>YQ&sf$#Rov yn@98lfI˦u,RBn+ VmSE'YeQJiG~|]Ed7Xئ2\70ؿ ŰYR:GTE=i^FY * ˱$x{$ ,#,ḞRKXDG-%΄f5"8yBZ< t'3bx-#"dԽ|nS?4>"!jviy@Şu!u")K2|4.Yq*b(C𨴨GU +\f;L37$:VCN℆h_60l2 [Q~Ӹ &pRȑpʱW;K;)YPJ!rNJ{ {|o#S𶖬ù_SWbJ? .Ӌ9B#MJ.rx#rK=i/:{\_2[yTXV&MU!= GV}?v%q95VR9DW*"1v꫶e_Oqj -)g50dIbZ ~ 6݉\jـ<يFv6ʃ53 +61go + ʑz;<%sөB⏘9ϣ6_K̋900?/tm #Fu< +%6L~H +8(m*r%Ee'NCJs]]N)ē}:gX<{=bQ2vè7By" ]N_T:v㽬Qt0agRLJy'vrE@ycCYbFd!a4-;Hxސeñ:'5O6I^##qcp1`bnzwQdu1J>w*:&խ3Zf5s9n?HW*o<]ȊoѽmXuLQȱ ť>7YO.aX92~HSܨ5l?b@qZ߉ۑJD^(˃\w/q[NQ2]ޥ4x\zA[BX#5#G=s~WV+Q!صBr5 Q 磲3ɭ:[S%{*$lthUsz&[Ѩޔ%-J2pV\2Yzeh+ _$ +1Sy$LſmsQ6QH,UH:;6ozlH\m3nv&c +3t* +*5=)uz Sf 6}h\l5mǙafe .Һ6xh'}czAbTiGf1,Vh$ݬw߁?y&Fv1;I4]AnZ + ખȐIBULS0!5&71Y:ƪgw]1 TPF{ qpy^|gsס ƱtjҹKJb$O:6H~R2|3q@fW]Gd$a +qf+c{k#.2t?H a"ϡ)mGߵKU[H1u墢8;\E8EE.03.ȶ57rYͱ 0+4vo[0hnnRn t*[\tiF[۸cTYkW)m&()?ޤF¢.wVm6{NUAp')bn_]hVPO6?-BKCQ^9~2ؔ6t*t;Jpo|=C# +!ҽuv/ImEUy^qxPy=9(6COkVQВM0 b/XGz +endstream endobj 9140 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 9141 0 obj <> endobj 9142 0 obj <> endobj 9143 0 obj <> endobj 9144 0 obj <> endobj 9145 0 obj <> endobj 9146 0 obj <> endobj 9147 0 obj <> endobj 9148 0 obj <> endobj 9149 0 obj <> endobj 9150 0 obj <> endobj 9151 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 9152 0 obj <>stream +hޜ[K7cJB2f9{.U{[3 2 2ZmÐ+_w~{h|LK<_d!%?/o_>^_`w?|W8i^iRha!"Ky +?T>Qնm;}n㴸-?_8p mIK;6mx zbaҞ#H6M҆/L_ jܞv H[ɚXָ:RO4uS78PmXr`= _O.<6Lm=MYd?OS~9¯r[Y*p(3.|meT@v΅p,52Or'+I$<7ChkDV4j-> wo)pkӔ$Mx=SrʐAS $@BQh'l[r&r$XQOr@go"ՕOɴD&aÁynz>f[8Tp9]DlAR C@W-Y[90Wn!TJT ԣ+mO *m|c[t+d9^+ -h0+um* ruQ_T ?z@V(6*-:56!98C#%Ho|) u9.Oհ]ulyCQMY:uXf,6K + = #A(T4 _۰!B, X/@/=Bc]s@3'>Պl%x +8貺 + +h蓦XWP׃:qt*:L ò28-"sG@Ȋp2z#lÙqS\'~wڟ1W݋)d1?[|vmHr$Orh>g/j4DY73SHn ++/fZGs5URO3ix=8oG*8_y)/=C +dPH-|+-51cO7IV ,R,sudl{tYќɯ~Ij.'\:)a犂dSHh]7ϼ:zL>M3Ɋ2wעǥmżg64}`ida6]\i87p| j]8|(MTDcޑ.])νOػ6F +RMvIQ9T$BVmz͊W">\q\, +v x%FXWuAMY.gۍt% kBG,LZs*^a@7J2 S'UyNF"G`j>$N0b<̲zMH|FQkkƙFxӝ8 "asi5eFp~: q`QPΚFr`zc-xaAp- Y#3G#MH푛V(aBl6@\NP fߓRtU;)8dHщ.U< HERYׁY:i2m9bo$~Jyc(ˍmdhl n_h>ް=c$g+BT gEud0zys,nܫ=Ϻ6(}{bqp}Sf +=7V# ֬s;M;pm<ߧ[Vg~*2J}TV76!z@\ExJΰ;Pa)t~<UnPp"o/km\W+^ FdƼ-<:R >ڒ"V[Y&+R ?AS +XOJ[Jt/LdռTXBhGs4(ٶ#@u IbyeI7J:5|g^fBKC.ъhaMq/ xXi0Z(gdŦ'+f6eJQ85^tߚXQ|kt%E"޿8{<5||Ǘ/_)|dk 4gY +}r~|_ʽrxzNl&]JhR)Y3߸*c7wuƼm7y76:Պ@LSxf%̘"hf8kb`hw`ȭ8FjrU*tqU*5rj:UMjnr8 +%afΏl>v*,A|~K@9`px2؇ Xīsnk5WU>@']%KA՜EOd5AS_e Lw7p<cxH(EuEmq=9K.ҲG\㝄e6jDk(1WU7*ynU=iLO̼~f$7pߐgeG'Pmi7D+C7Cxz^vN%eɸ]j2<ٛa,Vbxv<I`;QT.UОrRϔ + w ]2z}Q-55x-,9I1&-Z[Ͽ`銿$}~'_gM*u|=  7z=IX&C֩Y@ێBo17H;0J\> +_qQ`jbI\Z1bwqN/spwro=4x5EET틓7R=8jiG3)Y'GՃZ\DHU| +ǍgV:rN":.cL#nU%߫!Ke z0ҶN6vV +n9۬CU~B1. +p .j *III2vɺUK9:P(GwR핯MqeYh>Eyu%Jf$E· +\Zͤ^d^^eo`hiyKFEEM᝚3ب&c$qѩ)tŒՠ ln}ս7|p%d8KWF ^EV-8:G#-LqWwQ TTGB"^K6P=0L_:[ uXe-\և! RrFX( +2 ,ULtw/ٵ{=;j7<$JH t# YK.#a{Y-M>>7f A0hTA[OW? !}sܞ_wΑ+{ ˂G̼.FQkNAq%{Uaz+ T([K +iwn@ywMiY܄M8CG%^]Am^u2{%SSZS2`Ep"]n4o_*(#b~2!? > ɷI"y,O*nh/m%QD C`'YB vIYm:Vռ5ɻfYmlorڦ;!$^q52A`׆cPk;Inޗ}+Ծ +1p[c*4O쾱C \}}v 0uમy +m6WQ/^S;1ul _dJn9 o #r&xk +_8) +endstream endobj 9153 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 9154 0 obj <> endobj 9155 0 obj <> endobj 9156 0 obj <> endobj 9157 0 obj <> endobj 9158 0 obj <> endobj 9159 0 obj <> endobj 9160 0 obj <> endobj 9161 0 obj <> endobj 9162 0 obj <> endobj 9163 0 obj <> endobj 9164 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 9165 0 obj <>stream +h[K$7rc|B"+ a PUS%1F$#AfVȀ0bf775/o^^ԤC/Mڇ)-^><,ӯ(;\_e1-f OṶ_XhT*n*z政ljk}OHֹz5wN.9Ek?`g󊗐W mv8;gzʤ&/\we/yejNhe{_-=4kRfR٦Is35n;įy nr,dމոdSphMPդ9IGItO._?\?6ˏځZlv}#u qr dqzV~ o߯O>p~?]%YUm/ϛVSJO0]> z]SQ0{l6g-,yN&@KT!M8 7=/^ą$B(mO4ۋc<sCO`V$lY`7ZʔY >yN5ug22C,d&q-570UggkCF 哞5=T7~ezk`DY9%7eY`cǜ͗S̓A3Mh$)GG`DϫyYUi Z WZ@S~ 4U ܄=X< +3Vr= +hNڡu}kL? +#/S44JyǔW9d˝T#2/0'&⼲|4Ƿ?U9[8D3KœW AXU7n)ʱ9WʆjfꑪBܶ~_Ɣv֗&ɖ1Z:I0;U6eʢ2c* _6o r x~ˏf[@8= biaŊDWJl XDt40aS)}O_vޒf)SX-~̆w}I^ vau6[][~Sz:[}W~^L Z=6uZ.+<D2Y"٥38^^͢WOJu-.йxZ07:Gʋ/KP k=SlGYW 'f.)`Ynrm]!Å#{gs v~-Rbw!398UUpB<-.2dFҕ;%|typ^v4NϧdYϞWGWB[C(kan!VOF/9ơSV6HXgI Ai[wL>}w<#i+ BWVR[E7Bө#sI`>D"֤_ܝH`.FjaLp_-bN-eG&(xꥋtnĺ`48zkLTu `U=+ (t"ng^tc"fd#Y󻶩2Gb̄Ur>Z~x"Pϩإ bX_Q ˎ LG2zU~K)_3/l q94P,7J И t`E?+ T!7l%bO"bQ-J1=K6NB MuB)8~4&ԕ +bwI=lfVe5_M|]'xՀ w2Ŏc!GdVآvȂ]^P<*2J2t v;hKsy!ݼ(J1ELt^E:t?I Qx6ՂUD')G7v]}es]by+-pgO EԎKft#Y25 !1vC3,BӋPSe5e)$z-}Yic?Kǵ]62Iel@o +~k-r$8 XH~@|<=ex>>(ӧky{v|}[LO<^?TۗT||;}r6ӻS9AA +S柮bl/׼h8}>}P goVBȟgu?9tN89PN)ȴ+;6n1˓?RR Ay#mXoB+ړ 8R xJ J+P~A^V {J?!o_nq88Gsߘl/$.t1t k@ r?ox+Tc<2MED4ur$}H1g%]TVd Q_/ׂ% yd3,Ne#zbz540;Sp TI:ʄ)Fw8dD9f[P_>]+??]i|2 482ޔUpܣ }n +U f +:(RR@5&26W*ㇽoo, B H# kj?-mPDZnѬy24Vh*J[WXרGo>Wc)B ԡq&4{rQ#16:vZ"Bq]1]%f_tG'8R[F7^La0S oxr [`%I @"xGH7Ƚ.]ju@9DTӼ}:i -vjLpIO3^Q'7-G[t_{o{| Qϔ1m= $j9Q*MȔ'ڂ|׆|j`Z%8&fWwnuBf=Ce;P6 ;ojDbN`4g' !>^)ыܛUGuv ig-&6..p؄4]\DY0kn8}̩GpT@z X^>qDu:b^+,d&Rn'ҮAk2qe=;pHILuj9rf}D )7Ӂ;4w!ܩ4!_*6 P1˶K>p !XD}HYz{41νVќ4'ĂEY"r$+9G_>wG2ZسO`\:D<GJ TC-DD:o"}v.bú}/aޝ1T)J:,=*=VH? <@ė~-\bN_F1^9s=3]rL@M˳mH=|,OTY TFSC4XΥ+5Zlg ӗjm7åCM^䫲i+/O 폟J+_\82 ⣫\/S\_S_}.amK;6#U!=ԊA+KylT ^k+DʧO[!9]/,j9җrh) كnU*G ٟ/LJ08#6(23x'rĊFvG}J眝۴߭ǟ>Sb!Csl|?Lmwy m9th{*2ddŸ+ysR\ 揝+pn78bk Z+XzQ0\v-K}nsŗ_4Ҹv-BGE[EmO|OLBSb㟉R%vt,C zъzsrrPƓԖYeQC(PpwC;ֳ+v\E +#3{G2)pƣ ԺRRy +r= o{*whX kdUwO'0x9!9[ f%ӌ6ahrAjI ysEquQ2qdױ0pzW+{VdnY e.HZbn $;Ft @&FA1,̈́v,1iRpa7YDҠM2G&>9v,{#Gzi)u0"9Y+ YZM5? Qg&ҳr6q';BcI{+ElEP&eL^J&|Fy j Շ/N in! FWIzY%iVIrJqB'UFEXLb3]TGiUO%jK?Aݢw%Blm-ti|iwh# <\wB尸GG=W ]X"ԫtZsnH<34.z@k7Qz򔲶tc!Ɠc%~ +Wv?U.a"G]Y\V[sK;?HVL tt[Hd>eWP-*=*k7E$,S 7w|Ch^P[m'd=%j2HuP63JXSÝ.ju:h3EɨD|s׻6]QExUtVW;:Z"{/$Ŏ|, +T!1DM*;}y@*IbIžȘ-s#a~$Hu4<`GU/q7L- })],ק8~~y_A +endstream endobj 9166 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 9167 0 obj <> endobj 9168 0 obj <> endobj 9169 0 obj <> endobj 9170 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 9171 0 obj <>stream +hZI[Wsw NAg # 臨'>ˆ콺֯sO_<<<涇C55m -`|~{tOႭ~8Y6'b+\UUEcR gg< ??2 ZH6sq / gfYcqy|uVNz"!6d$Tl@c;)%iaz/3+v+CJ!3Wb@<x ;C{!Q.Cy(H4^x?>PU,l?\ ZfBl_OU%[ +˸hS-TMYHi((h[JWywd>oo??_>^/_v 7 ٦@HnǬDP&`Maclb HT-?yubP9v`l^=x.\H\X!=pj${z 6pŤP{pN=xCoY mpOu +9oPip)1D7Dl@2s *ohM\m> AUe$kg;!@4˩ƍt *T!I$bӰ=h9,;Cr,R^T{ M7 3@!a+9n<*'k,^a4en:b$ =絃 }e̽DDZཝ&b;Kd4IoJBy6f5~uYR{Px}۸537SQPDz hd fe0R҈ a!Yuu3e,YR!1މLڡעL2܊Ejd؂:G{ tULi\+?G6Ԋ$ 4Sbʲ/d&n9 YZxa[ߍn7HC%Gic#`$JMn0nmL +6rP|Ι!@TfF}` 12Q8Apt}"g-^@“ i׬`7L(>wvawh7mY>h`Z"$_ϫhB|}T-i\]BR !LNP4ݙN;^DȽ6ZmDQ2w)~'URz=!hGu:JlBn\J, Xd&x%d7i'unTnSsEpUu<)$mtYDӆ1e!;dc*BUlb[Խ]}zjAAt̴[QM #5Q&De,' G=U\ CzC>(ZVT`w 3 Cn7csFJ&% Va-̵Fs_ \M2>M%;7NH6m5ZOP[ΤE$N5k  -*v!^;%wJnLNIQNъ-\g)NI.ݯLAnD٘',򮱙Z-}SpO7B{=Za{v@hFPMsqLW~~]FP"79;ڪq`u>zRĄizp!Dz1/w: Z"꫸,e'+UXN-lle~v,1X|gai90z`א-RAl1`ښHքU)DRF£"@!G)8]oNPKcM xZ8%LEN~2җ.ՙwj"|~B0 r.L+JJdqQ1HnS- [;iPN73\憟4=xvV+J/ZU#5&.uJfخXGXH,$0|\zcgo8Oރʈ~UpEBr XQHW,[^YJ9 v +džCgfk~ zT<,8}=LiE'I9>y{\-rcT.{tb +ߞg>A*yQ7*E19'IOJr}8jOK*%^VKbY5I`;o]&[AFf\3i,5/2l&:uscb>&6c#_;Ig+$IO m\oyJV;=A%ZZPŌԦTS`BiW 4_S27TafKz3_75uIb{曵 ܧoȧܪ셩3]_'/ƿu G~3~X]I=  ae=Fe̡m ="&PhT/,NLtee BTl4PYQxhpTBz3-b7Pp՞09C&jVr]2&\+/OęZ-AZUiC,dJ588/1W^au;\MpY!b~n;~N_r{>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 9173 0 obj <> endobj 9174 0 obj <> endobj 9175 0 obj <> endobj 9176 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 9177 0 obj <>stream +hޔXn[7+.pi- +dV@E".q{fr!Crȼ{q]dow85s9l.Ι:GO;>rXإʐ#0B5'od^;`;0t#П_X^-ȼ>R Uf]aWaAp +m +{s aXp37E)PLyDH*Ò/n~PѭƄo~%vMIuo@W0e|~#B,㰋o&'.n^o)K'"ikA ]%l"VeyYMjEtqiw헻_N?gs ͬkбl>Yi2ܺŜdiM-)0A RlXmU/ EC7o]Tt& 8Ax`e/:a`P9;ua@؞+YT"84;#NXno3b*8;|Ѝ66EHɢ"=m=%vĊc)2GԒqwBٺ n5l~EfA-0q\Jֆ(!v$YP&J@ ).čHl+$ zƋR*sCtbv.\ \z +]#lyш u.I-~-V;sRMfDhO̹r|&J#59l+ݾ{ 1G$ \FʶLN;RG¥RX8{CX/G= m Q;\|FG s=oC Bq`%0ϕ$'Ďz}7\OZ,tkǓP 6~x)?w 3$oO]ݥ_YwEv}o|Y{8Zx_@_|<(8W +i7SIA7;ɩpWɪAkK<vtQ% 1}V{o fjK{CV;^Q1{@z`köyWb<*=<‡gs;CpN';>CoJ˃0E1s䮡!tVy3 }jm{9OTʊ+R.$1ގFg/${` +endstream endobj 9178 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 9179 0 obj <> endobj 9180 0 obj <> endobj 9181 0 obj <> endobj 9182 0 obj <> endobj 9183 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 9184 0 obj <>stream +h;َ9r}6PM<c`wj:f՚1 #,i<Ъ Lo_{{h'3=>ߕi#)%?2˲ {_h^9#JKK/J?awqe?t0k_R=̼|fq 矗,T +'Yɪ5 Ԧ5M3{"Hn5*y!%qgrjg5jl8LZ`i33BL:?0gwpc{}rb?&Oui<}=)v\ި6$+ ;䇤g*!@)]ֱVJV29[B1s~Q) 6#[7U%ye~dux/.L~|mC,w߿+ |7HxmNM*foff(aӎJ {w^^z/ߝ0/q:xSϧ%N/gga`a4?8̡ʮ]-ل@uvsq J~^_@^9@;;/P֚ ]-Dz<XKls:ɦ,ea}X@k`{;ol.`~Nlmh0Sa^E=G[|+Z=@0 zi_o|V᧞S R8" ;uxp#,PSHjMe^8$(ESK)RX,^fʵhYp&>IGV*ޏW$uO\طiIB9mlJB Xq流jtY>MC})pq_&:iĴWC-k1FjE +5l|yx8 ph|.WDfX*zn!ԓ L;SSQe r[+2 rN +A@MVr=][ް)WBr~3 +?zۀc)I|~5QS?$ڀ.1jI^DU qdHdVD!VMjJ?ҜZQp$*}V !47I;_嬄m=*{˥Y9 HKx~~{xe?=Q3ռKa˱u;߽Liqizf}Ym"u'3||0_P|@ZhE&h]黩BSIDryGA@9 da?ÏOO e?_s:/"J N0hַӯpt⫺W XV!4s+B͒6nh$j,4MXwK2gHJsfv=CU蠲R/ ˡK@sS7щ_uQֆ=64 ~1kx1 GiZx'@yo˵'?Ye.N(79 [HuaDFB_ݬU79#~VfP_')dEմ@iw +ʍ*ҹኹ{2,FI˰^",`Gd1(jeyȝKs&<{bex}Sdx4:U4B[Kn@iLEX!iB2}MK4[SaliOFsJ&Wߩ@ +(u"{̛oմAF#壖S_aIՁ= 髑. svxkݞ/$)肈]eGP!&A+_CCXkIjn ?B2z8J֥$;`uLIEGqaHXi5k=MVU5*Nx0 |Q4+Ta" ]ZJ x`VĞh5i22ę(7ưdMT(ķh@Vz^y/,O55WvrC4YĥOwEp@@o{e +qaa|mCAi%wCO:L*OjaH@oQ]TMPRS?)L;xQfb'R܄otG<n%.A_>7~~{qamLo~p?}@CN㽭 q@»)cm<[08Q7Zu +QּOhU=ISy+UpKi#*/a]N9LipڌfS(hQܸENmMusDc;ڙo<|]5# lM*&G`fJ&&̓E7YzrESW^zQ>Y(hVw^{ {Dv丩s_zF~pd(ߗf/iesG ՚t]Rð於VNU)QҎm+rӜR*}&۽vMO Z(n?rʇlhI ;`AaPDa WPѺصc_CzMMP7-QDJsw +ÉC hͻUj_X|mшhhcP{a0h0]Fj2wOMyfMg)ogfK1/d_L˿݆k 1]0wNсSyM[%!vHAʺ_h3hϢ]?;H]xE{QYSй;1Z,{M`6o$7W?t*zN00Y99XJ|)q\ Է\S.U&g$? PaT$M]JvA[ڥvbNҿn|W0/nȤJN;|}YEF@lګ]I&M +5f0o3416P'Ha˽hvV\NRo9lFG8",e)eX: kţA 1)3,~e$ݒiҵ=ݸyp+7.ԥ{jvUsHb-s$݈Ioš.+ Xhoc9a% Gac~Gȱ@wuE+ ̸E(JȢDp4Y]v%<۰%za+?x=Z%9V*tpl1ލq,8vZ:rH "ϲiq*6\<&*G5|81mJ`b +CYQ;R$y.bg=%g!xlZ\0?huŋNtbגH?`GV8Z~ް;9{!fܜ l ,oL|ԇVgyh{K ľ^-e-ir.ϔف^9OKL3L4 4'2 +$[^lbnޑ/Ӯp5=#~Ä`f^Ӵ.;xww~ÒɢYQ場|eSG1zT1Lݚ>k()lnIQ"&a7zܮcj9j\L877R Rk-毫X#]C Cu8p1&A]-s#i(NrX.AJsZbYN(he6ZMl]@U@#KKTDt-= +ƌl&M Sy_<80d=-~|?sZaUV Hۃ耏a(a\5ڶYGqܶ9ԼtkmyqF ׻C7iفnn7vkL]MNͷU"^X! SuzklZfsfjssnkn@ommV⮛^'\GGz}hˍ=fP7tT kv ׏,VJzD*C:ңwd}hv K%BvHKqi2Q$6$6c Q3P/~ RprL^ foN*2o伲kMQD_1.g$Bz0zɷ`Rg #Spd,= YDiHEȵב 54$Yܔyat=ByVf2x\rhl0ðeq&׊sR^_(w%1BǑjBt\6\.贮VA!`Am41%aFLjIJݚvU' 5'F3J`IiO4)~n6V?>aeyX{!5(Pݠv[|ԧד;ɠm^'~v{p#GcGYf.*xSjh ^9otR37w݇18q(S.]q&>rߖ0{bQRk|{+axp%3 o^ ) u]Aa^0ygCg3 xұ~ebbwBʑ~B:ڄy$yRI#Y=]Z|KpbWNhEalX62-ʮöJdį)kC<(/h`ʛkUbn\+0$Rr[,gz; dݟtqiG:e0ii\uXcKx>#.0(U)eu'jZ%SoWWC:v+\_\4ZPɳ?-d8gH7q5$qBS&Ui1/JGR IqC 64bڈc5+livpNoGk! 'STu[U/}6vbzjs=W^X{1[!gITΩ{X/_kdkc^ +8(Uk;u: 08O +endstream endobj 9185 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 9186 0 obj <> endobj 9187 0 obj <> endobj 9188 0 obj <> endobj 9189 0 obj <> endobj 9190 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 9191 0 obj <>stream +h޼;ˎ$q:4%aЁ9#PXIӿGFVW ),f妿􇗧//nr:-o|.sӺ1.aziO9T!^ +B܁ /8 _Pb-pmXw܆lS߶|neQ`40 zYe> 1Tz 6L^@ExӕY.7O}xΐd[Tt#BxK@s0ų`eљ!٭|G <̶ܷ>}dú˺ק'&ja|s1Ñpjѽy_Y}g`bNN睸;ލFЬs@,xZW?׿<}G2᫏OYx["MCum\^)pg.a3~/Ï}ݧa'ټ5DDz; ݴs^2ݿopM25NLZ9]J\~a8//:ݡsd߆CM*TSa she m($sp9d3LkZ9Z:S{ l[gr+{ڪnxS@'3,MEF)h U;)Rig@`vNkr'{ =1vK\pvtpCl' + P 4@(A)V*ŔVb-pWlӊqG{Xш R*Z5r*- +BeOJa xWA Pi U?a>)]=C2\_&>Y$v-Z1gnEthbxx0~=p<>1 #:"\/˴4NRj 98:R0(OB+SHaTy(ki^J~au-U + ($@7~ jw Dl?~`X\p)]BQEk.Y KJ@jSRWTxljף#|\۾k9R0Pud[ન xdy "C߉y#,o$RP\.MY7B:u`<շfzRQ^a[S6jPD_'=YM!= 2tn 2g"́v9ϡ[3M%\8wRYNUTu:<; ]YlbI)N6v$1!)˦A1FpD*2'I, ܦ$VݐQ}NoOЦɒ\HNzc[C{ndO=Ϛ7SK%tjipzYk_nMH#_rQ +_sa\Ώƌc{j#ެ^9}%Cf4X*ʹB,~劄yoTVh_iS_<Sm )puZlՓ]ގ 6V%%~ܒZt5P+͈aڢmCr^nxcpSWaіR3"CyM3(M-gĥ j]RY@4pfyfb$ZC +bV#BQtG\ \*oڕk-_x#Dq\&+훪ټ9bp8Gj%2cQ8ib""W{(r"%^쌀w FP)}e'tN$=m"+з0xfE*) (%2% +vKUw'd603{BjįBv zu7vpHP|R$1+u=$/9m3s9֏ZU ÃUq@cvw&!5?Ӕ3XKw&g)D~X7i`reLf ؈<%+|0%^*H[mGEs wscr^>\/׋ق]/ +# +̶b9R+Rרߚ[g!לH28v 08RFpW pn{H }]%M#7nMK7/y .`gP +u+:k5VL=\W8lÜӸT C;).,.cu|qhKC5@Xs8ֹAǩQhsk)c[&KAȽjiUys?$YDfTXQ˷R+y+RVm%ȥqk5Y !4k$o#=59Gj+XҊ2/?6NtV9Gm<\tq :gmrS>7aǯp{lnlm|vC|zrtlԟmc2Sl̮[ۚff W6һ˻AƈdJKRhI&-WK 5T\X< & U'Qn21#"Nw +Am0EZbXu]u::s}M?Ϻj?FF߃`Rh&8i 8͛üy8uk 82S#Fϰ+Dp}G_޶0(8[pARW"3wƧ$l1>v a ؽ9L!ZbWٱۍGj}.B=FP/o'PYlB=Z {uG{wi)īAV/ ^N%ᇫ,|@n9-De$3|'$$ %L6p &"YDqR(ތp%$4r>䫗QmIJ*g'KDx|­Yu/0kMӜ~uIo&(#tHNo|#0o!Lj uq_GⰎWS1N. :ZV)—.i. Rcc>#23I7}A[{hT |i=B37}ye o܉FlH>SDwIõA ]%W0jF{*.>I=tb6샘[: p }sXɺ CUrd#)/D =gt@%l 񢹣H7L! r Cd}TmT^Fs`7M:W+dis>@R>3yl1c/9Øm|M6¤wF@_-֍g&ۉ#Y. & Ҽ2$xh@ƒ1 +E1uRѝ$eL9OwT+(r.EwXEuxlrƤv:8v٪{RP[s*I}.4Sx \O)LӤ@I3 R8'S^/Fc0%?h*xxMݺOR5 +|U:_#_??!baNz4sYjs/ORcvIy yP¶7ODH|x'ݻEx/O_/0a%C9"H[Oi3=q^C2h!N0hhZDh)Ѿ]YeLJTk}<`y{޳voY{t{~R|>B=C.Ym\nW|[hãhvKynj=P)FL1FS$+|X甝ёFg`5 ?>JP80# ]222u\o;]$Q*^$̭^ma&ܘ# nub̠Ԩ}.a+61@Vw$ϻy̭ %p^WL& 9ôE)E?p٩Քŀ{I>9#zL $ ]k{O׍ححNQ4#C>Y-?>=bͳȞr w^= J#cXgV_I<.ׁw%aZ{uL,u4EzdTy9O #oNLx!-[Ux|k"3;`V:A[>sr@J]|@yXb9tpl.n6Ck4dH jɑAUx\(GD`]执:=Y6?dc5S2Oo]eU$עBR;Ԧq*q;]< Щ!r +P>_w7<0̺oQαdt ?cqqg4Gn#'?t k_k^Ϝ1%!8v`5(޸~ $L)mu׊0}Ia5.8m=.Oo_nr,Mgܯ|W]1L-{"P㎥/,@kϡusft@)3&Fbo2{x.͠S%IUVBA]©Cn|0 k6hTϪsCH,Kb\}kxyGHA(Z7ݾR]t޺7peEPeuEC9].) [Uq% d2fIQY&l&~yr>5N 3-5ہ zm ڎ/Ry1oS\"*!FL:b7VɇV;N0fu`[5 +endstream endobj 9192 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 9193 0 obj <> endobj 9194 0 obj <> endobj 9195 0 obj <> endobj 9196 0 obj <> endobj 9197 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 9198 0 obj <>stream +h޼;ˎ$Gn:J*'#=j# 7 .=& _ÝNoOmi?eTJ\B]ǧyY׵oPz. +kr:B)ޠ԰Tm -?޶s5leQ`4Q_BCc{VY~L$jŷuu+g +z!id0UWfMi}̩!N I-͒R (ňX: UkߓuPvv.#h}`K=Ŵ7Oc{>O~\=->NK,/OoOJ^;:΂m]Sb?d=G\TtcjNP +h 8ҏı]%"(5/ #-YpԞbK=նxm}ᛟoO>OŝǧN<ҭOezֱOpkt P3әK {ﯟ_~׏?~|n_` |Y[t}aCp/)yX<n?R_ˁʁ~q)qBR\N7\`N/k4j`]09Pٹ8c9X^s3L,-V-WQHu.Sٻ@P~!S87p%#Ria<v^RGiVa׋O@GBz`ڧN;+eh5>eF\ %x.B\K@B1cT)5Ų[5lLEĂ=E=Zy nYVN "ӸP.{kpiq aIk&>COIh2k@J[¢:m: :9s+rp8,,0=H*2 2<.7$fZ[JSY{tXRLe@ ˽s썡R<˵PWo="e]ro@*PYӑ_P%i;>̖m_; XB[]q'Gz8n2J.F6SIH&~I08`ߑP>:ط_KoCFY*H 5̑+Hde,`t )ר3:0оtku#c j72D!״/RSK߃-;/0-qy`ZmpyuH,\ MȕdW ߭88- @ZU&fas/= C$k -$nSv١z/o\`΋  xw.gb k3SukU*M4w]IߨY<]qv{T/㥝C#MٻsJg{G5M9i}5CBg0jVZֻGg#uTȁPp*<7:GBoL)'L 7&{h vW20mra#BCCWUihD=1c"sߌF}16 ~Y&,ɜb,  ZunSsV)V>dV덐y1o 5@1w i"&RƝ:{@iWy~vhi3ꒅݐR톈U6kE0}+81Q@4U|zóvLUI ;ȁ[>HݦmnqIT< #gQYqed`g:ԙ*.(Toz;%_ 8VKBQ%ɱq>c +IvML2re҅eVlY/NjbW݁e7;bݙ{lM6\6l=Zbv˸j`0kڳ q\}%a2~N\ovu6ФL9kL.8Y%F-u*VN\HU3E,Ki36{<AJWb809>퍥2Dt# +$$Z  _#|U㨋8RFG%|1"ntoa5V2,nO@e;Y)/v)iS/hC.Tn ;nKh u1b$,;tԘ\7@LK{ӑTssܬd(gG$ +p-(wƍ׫:",SmwlJutO +]5آp\7 5& j)H +wB2:;=kneMm!(|;ua5̀ jqޚu]kЦGPCO$hYL _=>B1.\ A VM\/׋ق]/ +# +̶b9RM(')ɱ #L\޺@E9SʺIyjS8n;1:qq>v8.%ԑ o怷{זklזGkV/[΃1xlo}4{3>ե=^>X2N-5rp| -ݽm)6n{`4nR<@K5q ԛ;}Uك?u@l4d M*X!#o25⻾[d{Y #=(18/R>wa;V1mK\YY1KFesSm3ladS~P.w5x i{*>;yxQxw0@$yaU)"5ʻl&\4Yd$„L+]j'y`)R$Y/s>8?Q„^[$8yz'~Y6O$~:"4_6 siǔs!wD0{uN19{YlY(QEnsSx~&:%Vd:}#oˣ՘I;u2o4 <{1ʗ$.:Y9=1jO<1IH$4>m;_swЍ,ˣ+#76OG@m`\ +1ڑ4RK9}hR43Ov`cNmYWȄT.mq$o}1<-.$t#^guF+Mz!sDMõC@l]aW 9ўǪ\KΤ&~' MIIH8bt۠hu:]L)/VDғu~߹ M`]')x>yLhI)}TiTmvs+`7M\S/ %͠g/:1d2dcW<b"&tH~'Rld?NGv⽇⎴IEHm3beY-q0t%'Ɉq7mzcVOIsa:ф9*tpm\} 4*2I= + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 9200 0 obj <> endobj 9201 0 obj <> endobj 9202 0 obj <> endobj 9203 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 9204 0 obj <>stream +h޼Ɋ$_gCdPA#a0 CwMIh~{e[ =Ux ?=|1Laz|}ئmSmuږ9%M>,yYBz˒ +- v99BoX.z90o8z s/-i?!Q :֩BhPFЪZZlxa= + Inք,^c1hҬD8B#Aݸyr+MG$]^.D[CҺx1w'O ].VOڏ[H[rwgVMII5s@Nt?CL %B Wyu> gAC<WiUp6W3b? oAfΆtAL]h?FrǓFHZtvHuY ndS"!Dtx |a(_hzŠ,]G(~"HeGv=%#iZ|ɘh8 7#ጕ*!~oo[ +NSӽ`ItSEEf t +Z5Kߝ\sx։y_=\4fk + )^Cx8z6ˁf뚑d_K{{6W` i1ݪ&!+h$, #m"EU ‚ѴX(H SB4ɘ)c(=BBb |1Bvv6E *-c@C9`W#|EL fTV7pxICXq*LT.Id7N,+sջ*ԙnF𧍁*4JWTi+ʵNzn}A$L! +{&sI'zHqvyUk{^9 ^l|"Z~Gn]6ݷQc@7'EF sA1>iPY WtC_MDQqGIۖSǡUSeS)m_ӽ*( +mH@yZ$>Ym٥1|JYAbN ^;nBxF| )J*]Bʇs9+B߫rMË20Kn̟푑䨍=+Z)lW{Q2dzQ܋*,X yIeHbI4s4{,hV`b0A; 1G쩁Cq}[0*x5 a$sͧjsoxo84/e}m/Ζi'n1֗˒?Pm7 tƇ[7)r8Eh'V]@zG+?!3$v`@tvIb#xwl`gy`F]t#@Hfbׁ6|8{jqtlzU"X4l6 zK=!岞rMx<99Z-Yw&<'}f0сJ9C/ɔ6eIYW,^ㄠ%PaI*5Q{T~0Y Ob~_!3y?/wK댬0Gqb㫐2_C)jх. ).-P;8C^沬 /}1 +D cDq7DdZZ5YΌB&]u1ycuy7 +$[8GKk>0Fn,k)ʂ R<*H$s8X۞N!8]8嘬q]#8FC"3xғyZ1o/weL{ܓ= >0tNvh+XGU^'aXهAu:~w}gnXmrIY)+#띕:x2mh)ﬔuK`ӓq]Oq;?35Wto[es+j[>uJR2ܐ-:9 +w!uu8Mԁj9=.pry +K8.Zݶyq>vrjϚD-R(%%:!NsߡPI-TSg\CHںNC$xڠ$x2XvA3:qP攲y #;ҁBWc'۶n졖MG&FRD= Ӣ{iQApJ>ʌ vZMqpɄ*Ut9]>KE6j?jY.m_ RKp͋/3 bV)B}]OxK>Ulp9Isu WSa@9M՚d.ۍ?. 뱅aşE_-)|>*O#;m <{MA1S)׮YA/IAogdN*o&fu֙(E[Seܻ?BOjIJo{YVV+ +Σ琕dgiOlֿى-Uu9vH:X*Ak䋎Q+._YS׀X2n/$m_ +jˏ +{*{6F}^[o4q\ѝdh,W +{)mhkۙpSϓN g-̓oӺZcN{Wq[3 /FZ-ʝ{z^7r%0 +Rz䂜;:~u͜ƺ:YMu7)^nݝ}- uͺyfal=p:m9_!Z[jmcݠ 0[ +endstream endobj 9205 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 9206 0 obj <> endobj 9207 0 obj <> endobj 9208 0 obj <> endobj 9209 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 9210 0 obj <>stream +h[Ko$7ׯȳNI@ô +`jYmxc^ߟxIf&Vlu3Ljw/5OwzPC&0j?`G'3rq0C& ONZZ [[Hs{R/OG9M7M(=p NC2#!4:gL:FiRN* ~ ]M"L4dIچچzTIhac1-;NQ'0/ 9p:=N^pxғ mۺ<<0'sI1X0BT + hVZZU`T6'9Q;ܷ="MtM܄ѣשt冢iUa(Q?W߁ ._iArJn@ݙ{P5cܐ DSI4҄F2d`$RँBOfBW +j%ŶY J{<> m_By@gH_܊IDe?J J<jjb WAͼiݐu#O^dcI8< :`8't)#9GhTmsXΖ&-ec . +-jzit5Uzá m +5˰'8> <>J>_ÿk|Hh XEI*'HIO[y䈍cXd T 3>0 9>u[y#.gK`$!k!p pܵf\0NC0: Hռ4Ef%ucfS?Ԝ + LfS'O(BtCQ8\/%6/1/e=5i~5!L` }G#R0S8+&W1bL)ca[\tBp%DŒRwkZ42'd/=yQ@Iؼr&aSKLT86i_TI@fFxŬσ/Фkfϣ=`tSܝ͞68-ޒ FGTIb + WU^v[n2#<\xw)Шh530؂*TAL:k5yMk̋~Fb 1y3GN`{.Qx{[=,"} gaIOݤSpMSLԍd>GԜi5goPpcziIl.O1dVR)SIwZua%stqEh  "NS;2uJy:l~<1L. QiT=hYaZXp_@Q$dU|*'5'>eO$;ć^& p(1iY['Yf/--:f%[TF@c&r5l- ,2ѹYCٯdbq'TwMf~{jop));GO/sɂIxޓҟ3#s P[uxmX> Lj7`(z1z6y"\GT09lL*ʆ 4Ab'.#c88w|W"LakAbs}߃>{ׇA w1X] dh@~,*wAT@%y5l (Y@ +8a^9Fa*-Q+Q{*XwT`K=T=@F1"tknH盛+Ez&g!Mv3S.\3c+)EjM7gx.7`¥PR(7kS.xz>@M~cڳ.ל;v<>8tD_v3_[@ns~)3 S!|?t<ld: x0U 1_Jp V <\e*5*A ?~.&׊Lڌ?Eo#p|*}7 qJ0{~玌奲:?O~*Cwl_P03 + +&h&U,ŹfE|k B9պ9"ħ3 + țs{~Gv,9Xk^`}3%ԳKkMJ+ Ra9z8p5 =ݚo+ +&(ש(X/h6k*p*ƋRaiB )G +˼TpTzp-+vYᑯ,^`zqY(ǣ ש(\2o y8G3yK( *.V +5*d4G5pԛF XK*msH8`j|U_{rM'>a870kf>^AO(i2*R8rk$%0yؒg$0HG*ޘCv/;3r4^Ϝ͚pRy=cjBڭP`U +e4bѬBO>_?cF Fnśo׹0A_yXE\C~p`Nٽ-e?h ˍPe9eM inbK#Kż&@̻s,h4(֓fQdW% +g͠8{Wcrhq3ͫu}aVyd-%j,g݋%UBt$tn}ոAϪξ)v\Dlu\f;{04|=)ڊE(O>*TSWGt;,͗.v/z[z5!rJG9qVm ZϹ ZK%mG +Fq},b%!AݥkHec&/JqM +|yɷG#.6;6n*~´tSCA^pe|5)Ȣ8» +~̍6@y XQMo,CاoX@ Ή\oc; `S !+mz|tV{Sz~<6. wƷ a6庽UI[ I}|!45 v?~i>V((,ʅ4i 9د.4LC9J.4stsr/ɅBdvQ n9|79 ǨߴbK,nے.M-mI7lt)iPO}JuM'XBO\q}} 6S?8iɂԎ1ezA"ffȥt䤏EcCD0AgZ/*rp{g0N]>?>ܐ#~JD_ +.y7X>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 9212 0 obj <> endobj 9213 0 obj <> endobj 9214 0 obj <> endobj 9215 0 obj <> endobj 9216 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 9217 0 obj <>stream +hYKoﯘd`~,x )(XR{fvwև Arꙻ?_wwwǣt|N>eT!a:~nou4O޽6DZ,ˇ}40d8V]9]Iљʔ3ufK^X = +Y_55}r&jB0{'9JɦwcNlF 1BМM>ݳ{(YX:Yh"Ag1GjH,~ 17 ˅ +;Ic'س)߼Ka:5M#i&! `1 Iqv7B :it8cq~d|Nre{޵Q<7՟_ v%^U`r4kL%%gC2TDhSMdݽ|ǧOߦi/ajﭬO8օp.+oewo~}z}p@ݛi:}eVrh6M_O`lj56t(8ޚXi348Ԑ?P m+1J#)PV0.x`&XϦR08\1X4e^a8üT ޢ8,;!OXooj"8~ȥIUm2`H3'G"G$N5N9V~NHaF@v!ڵE9nIț7@ !u‘y'>yU ;C\#c_!$zA U) 6v.&4pV+6)_w]a$I _"ANʾV;Jb@QRcӐ:CXI.XkKevv׳FQ+良0_< 嬡19"--̕Ӂo1M(꣋HWo>z(KP>)J7ާW$cHPe1("E"-5(@8/dR4Ш0nxRQ gT7.8:^dԨ!9tMjဴpܦ $QhJ%Ggg܂"gIÆXu2L/C3C'&D:K_dK Ew}+c:Gvw-`(z{mJߩv[ڭ1Q0QR`*MJq~(6x!I%r,Bc0A\o"0%#.o WC"$]?qo?\9[w}GqAd\`w0Ob%[vkY6<3 [Z=#WQ \'RiMjxfk}Q_q)ѣcf᢫q]&7ii(Kŏqmn Hh'[4|7*~@?*}\5H+ҒNz3FnF_Vwʥ!E;?:<0AE_(QލKYVZ^Piɵp~NN>ypьj;ܠ]ʛ-͗uO@t΍לx1_r=sTU_=<ˏ,[naoA./>\9kU[/]rL8 P;Q*C'}3mdѦ2衽Un@fFQmB):bHA~Y-rv8Fk6i,2-(s 4/_-+>Eͯmn*\tCC2)b$,7 |y/Q`.QZro2Ͼ\+^]J/I C0\aN6Zw? W +endstream endobj 9218 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 9219 0 obj <> endobj 9220 0 obj <> endobj 9221 0 obj <>/Border[0 0 0]/Rect[74.76 87.44 89.76 98.66]/Subtype/Link/Type/Annot>> endobj 9222 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 9223 0 obj <>stream +h޴[[q~_яg`pN"g#B]/o驯E\V0lVug|?}xiyxx?<=~w^޽|o^}}WךC!ե%b;|s߽k3Zݦ_eSMլ!+TUqxI˖6aȌ:"VVS,De!j o +}vܶ6l!*M\^k(M_زPLo4kv-zծS F<4SGNۭ l 2sam7h^xA +|WGHGz]piS t'RojRS?K,FF]kRzò#Z"wEJ `$$j%˭V%[!۫&SH&!&'}ssp/4o+!Qjgi;M_V[3KJ֛ļ }VX;m{HޛРm\Tx:#7SjP˲ d`G>p&.'_03Vr%22m׹KK^Zhf:LAӤ<b&"9G+B$_~I~mԈ.O-y&U1&Y.| 3Y2fu,d$YKAHUޝFC=?GśCVo_-Fm\$A$3t1Yꃌ9I:mc'";!Ad#3驵S2P& ׹*' z?!HN~-a{mK*O\sB4U٬rk\R!@"ud[eCc`71W2Ly@0;~%i)^Gy̻3첊0^'UE xK-7b K'AyMy޼;c1fi)Ck&D,})AՉr$ }Aakf|3$8'8Æ; $o{c{ hԗz.΅hȻXЊc4U+z݋" %no?Asݳ;Q'䮺fa|VΦIAX S$m:X6Y'*,İFlj2' +hVHvҫFVuR"OA4i4>=,"j-C'k]S#j3&!<۬ʻM>\?ܺד2!/"HQUm]#k;9S(s/XONzK>Gkd=#iba3n8(jRהgp/=0lecuq&v9أ%C|V 9M.4<ʏ)ߐ%BsӜ)D%xTb&լi,~$pw[Sw Ca{FhCB´3pa; esϵ +FZW't6+O]qTol_ +q!Wv'%?1h=qV#R8I@FsmF2<bn5cWר/ѧ+bP!mJvS(r-)Nea۠l =ҝݬTkvMmM]!h왗?1JN%Qtoy06Okc@X;zi- V/"W#lՀ-[5d\$O= :7j{;*1:D- ^NY]+Ejv $ ZKS?VYUQфu1 +RvŬi*ֳ"3RElӎ$+eQ[n -?.MtMغ]:~{KQ9ASTׄ]^_Pވ tӚ(F둖ilcZH*?kX6зc.T5ptNg()vavĦuR)0 +=|=;>/KD=qEz3}}x^p>ШB=$Ν\hTDj?Qe>Z/zu+t'9J*}`_˗p~Wd]TJ؎wh.KkX(au􎲓'V$?kDy(t86 k`ZB0 i!l#aKD>`\Ƨ B\iXWIWS6Ii;a +,)gɤ9lN)ES}b Ja|4PiYH-<$XL )xlpXty +g˕I#6I=VY.2OLxh3Hv 4/x"'+&ЀpH7rE5%iF4]v>txp +[ΈZtM:0% ۱#:g%ZSk:@2#WG窝恪s8Q EDӗ$2N}GU͌f)r:[W W6|aJQ(_]:Nxk5"֓ domהZrL=<*ǻ)y +`a 

<u8?+$]^FQ8g"xWJsL(MD&rM!gPg} >2nzOUQRƠ +-vRBLp~v͡uX)h4!ܭlb܄KQfsɳ9f!>C,4C(C,ϸ1pVi/#Iڋe c+_C1M\2z=cW3:geΘ)N 5l.bG+uNZ;N}d]4(أZ(~?|tsx'm_{AubM\1 ҇IY+U +ʡQ@;Zmi+@oE!>|ɐYwfVԎ,o7%_߾ r?g/d,cq,20諯Vߏ\_Έ-3) 9 bdpV0?}z_,|O4LyxoO2 |4.R2" C[!(;f;z~7˯ђRR.+4 ,2}J;R#qNVˆj"烰~"8,>p͟k:|ەY|x}FP7_2zý\$)3hQ V8P3yVxh|L`x3iRH.?XGӇd +d3b"r0L8[͍4eHJN*QH%#:&|m_HdL46Rƒ\)Jk.\\UglX/Y[\}@dYN#1nf+b$dy ! +ĬB1o^~l#k{Į-#(Ϩ*SD<_3 `ܣ7z}ܣ84 `l +}*r ;SW ù]6Q?hA+sB:Mm¦%,Ųtq7hM[v^g]kF-k[+Bi0;SH?+AM˵cw=dUlRFjUj9φz!kJ6nxN0F8= 1"4Cّi] ̟ g풒.P[c#GTJ. FжMϨ5z#*y/RD\0RRhn穥7UqHL2b}fa ]˼޶R,*D|0j8kou m{#2RYIL\Qys8ye84dh*ϗ<+ͅg@pkdчsexI *؊;:٣Z(GQ=]\Ul;* 5jSXN\SJ34i4YH iܴ`>4 -%`)F FM1BsxM&׽"9}!oӷ;6گ¶r)QOؒ`7i9i5,avӝ!gj ޮ):vrSrtIWF"v35wfGGJJ6f&_7`-#ͨ:9!yJ4qE\ #w$u՗*ߠ7 +|?4mEynG^rja1>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 9225 0 obj <> endobj 9226 0 obj <>stream + + + + + + + C:\FM_Print_Source_Files\bruno ballarin\Banque\Drawings\MS19240V2.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 9227 0 obj <> endobj 9228 0 obj <> endobj 9229 0 obj <>/Border[0 0 0]/Rect[180.54 609.62 527.94 622.94]/Subtype/Link/Type/Annot>> endobj 9230 0 obj <>/Border[0 0 0]/Rect[123.96 597.62 527.94 609.62]/Subtype/Link/Type/Annot>> endobj 9231 0 obj <>/Border[0 0 0]/Rect[512.94 87.44 527.94 98.66]/Subtype/Link/Type/Annot>> endobj 9232 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 9233 0 obj <>stream +hޤ[[o$G~`])lXnCao/7rU{չ~TOwyOwwa7o..}p}{Q 48i~r4،dp=C_]M 7A5Ϥ&jMDMC9.ݘ fRVYjj*w_+K- l!%?̻q}r $*MX\074H [ވi;>PX =m*!tYoq,W &ua^r.nq=n9ssݚ4ӥ0F$Ax!"ˈ7$3MlV &b<rP 2L桛:? wك!a#%l^\e2n`70S3 Pl! U?\l4Ҁ^ʎʎv4!Hyca[%?NP:g- &@,GGe(sH9hM5V5ctqpR 'o;F$l3eجEz-hR;sP4;ސQ_i >0Losf0o ]]f[$.bPLJ +2:`ݎGjA 2uxhRW*=e3lHET=I~YAR3r$.VEP('.[n\rÏ) +2"Dixu|71k)cJ~Yg JFZ|b'DMKZx1 +V~xÂ##2L$ށ1'453RCò=2wJ_ +YJ9'jUdK/VebţJo8M`9'#Ha) #icǞ_}C߾2}oŸ85H)DX͹y?}nH~Z2o3(D*w8z'0O +q̾^^p>pUdh䆍Kz +^L猻ۢuj+!߱'-vý&5f$A&p6C@VqntZeWA$CGks +8)3i4fWYOo˱̕r0ܼI.TTIhtBA.$K*2Bp6OZd# [g,"/a +z@X(.%T*TBWʼnPyHu`Z:BElz[!ރH_wP_竜 WM[Y0FǃX&;>Ue(2v̋Jdt]0U{ehw;dlE?bt,⨝/Miv})jU*c`_:0hհۏ\Þ_pŸzd}wLGT[?mU]f>yOÇ=Wq37? vW_sF{^%DEJ)eNբt5#/su%g|8k16o5χ^ /n6΁&  +<8#"y '=$׈dXn}q A&'ۅZ=J0YVoQ,jpY?:QD (T֛`#Uȿ>,I3$-*Dh %X}_gauG} s#,6f8ˎ|NV ` veYe_ I3ȖS|5 1MAp=4,\M+|xftlNg?Z]cOA5}OT6;}%T,B3Jw~G$g2\sS!Xt{֓#Y]Y!>5D7 +"hyEHԟ7fչ}#27QOwz&='bK}͍Fi9֢S-NUpҒIH~qh etM,ΛYݬ1P)[/WdҲc\r*{:Sn▤w"Q;@anQLYfrSoWf:ZϚSa + _δ~RTJ "ن_-ACG*oDZl\Jx"x.jiO `(${_-[٫%#0EhZ^ES< ==#n2 TgxW/oU,%@ dmZQ.3@h5dN\B/CFfUO*f}>^j=Xl.C.":+Li}n.tCu9!/&J?+ +B&wU?!@Awl7w_ Ns5ahBfhaĻJڤY C%IDA[#fj>^~)&K_`|`֮E_fUĊoIJɬ6Ld]5+K5Za^LweպY3dWgv:k]Z]^:l4/gq Zԭ\_Tj /E{aQ;=ty?зot#(ST3tWûW. M4@$I7&jx{)8eubw}5dC|N~2iW>#ՙ +~z[+_:`\>SݦsjA(2o4n~.O2,k}"ץ?Tu oiѿ=י ^QX&( +)-0P@չ eipƃJIO +6IzSNIo"E¯- +m6" 2rc궢DDP&Α7QO&mI3f^j{q&iBoгq#t>tCBq0&@NSVM).vqĩ.sd{}Hq&$ᅥ1ښǽ  |6SJEM*x*>{85K 'Cg';q>U7OÍs҄gd(-JcueSO~qX~,(}ZbFW`GCQܩv$q +endstream endobj 9234 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 9235 0 obj <> endobj 9236 0 obj <> endobj 9237 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 9238 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 9239 0 obj <>stream +hެn#]_1R :` aKnh%[+o|zk(N OwyXowLJ曷o.>|n9\㜇 %硔8:4|'|?/ޭɗi~iRݤ1BgN0:2v&?]6q,kY1-wi=&zm͟.c*`yK$N0WI+&?x:>a >NstľX<|B` 0e}4ǁx3s;P;Pۏ.%n|#Pǩ:xab8eOˡΥ + vLxSn{ɗqU۰1Y{TsjvV΍㳎ej{T7#pL=Gn?f$Y*m0*MXFi1Y')4~.ףëw#!}J0ƒ4eg Fq0x4K܄w5H,Jwڈ0 ZQӚnݛqTr>|ҡ]\pqK qUݕ_Ot.1LH7x` "FߏI ` +ɑۺi/WoöG|hضpDk#}oCKϾHxAfxx×o}Xin 6څ-V(O%ڦa ȟidn[LؓE.$6i +$SPN߬gq̈mG)ܯq%Bc) CCP*+ŧ0l  jfUD&L,8(s=]7/ʶ95] +) 0^#_FȦmG}¸63Ϭ,rg;W$,fA{R h lK,$xk( blID7N_Ed懶o;@l`CXihV[N 6ȝdw-+Aebnwlq n! 5w"$x RŽ_R6-:_N^5|@z$56M<$mi|l-TfG]h"u[r㉏ +0ʨ* .|*]ؿO +?^}W3syz|d>=?>]\~j=?mU|~im~B#O5+Oƫ_,= " $d,&U?=",xd I]e,BZNe63^lU{Q9ω+XaSU':+uZONm0^*5 `zcOcꮺǂa8b bs.uY/A_w)OlL݉1T$ 龢gd' mڻG-(ӛRuCGd3Dbf38](ZCD*s %y e>֞;q~p03HF~:!r"ֶڴh'@LG!nLfwՕXT]#ǎE1; +kܱe)+kt P#Њ&CVL@9!Fv(AV,)o|G ȬaVw#Pܠm:m[<#fLJ.i`nZ"nW\dy2sxAN5Ӽ0xZ 6Sdv7`lqHA$l%c{ZC ^7{k#Ҙ=vh %3zQnZN2ZԵ)%pD6yI\P*OL_ (oRi4ng XyOdg *-P45ԔE] +/fm1=׊n6yȓҢ(g#?r‰Ta­n!"oK''_eN,]7.㓘?a '%X% vW z%\wj"OAVHVيsJTOF8ZZ` w +K emK]H^*7N1R$-+i58M-xќAw^DާeԩP`8${cX]ΑH43k~/+_}^#2CUYd`K݊)neVdx.0*.#G5N59@ٸbEhɋiu^Pєw(-AN|n&G72"^+b$3sK\e'.e!*Z^̭*}@Jnp@裀<8|' Rd I.fS!W@;sp(_,z,Q^Sr~¨mNRG"kۑlQ%ŤGa6,_z@,4Ը]b'n{s=,nfdb\|OǦ$uTn+o<;[sJǚ^#F3U{/󺏟6Spq{q} ZF&^dڋ̶7ks@3z _:C|@lI+8b&,lUʵe ~Y:yN>A3Xャ܋ /=b)7LVKJR|b_'aRN=]y 0݄ǷZ'LhMTisIyE ts ȬST 䞰NY63"ZWHݶP ԙyq tb,.ڙaCՋQh^v!܁5MV(eV;C.6neX >|^lWtJ + +B^IqV(PyZ;`l.v?uM[PRZ?S +endstream endobj 9240 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 9241 0 obj <> endobj 9242 0 obj <> endobj 9243 0 obj <> endobj 9244 0 obj <> endobj 9245 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 9246 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 9247 0 obj <>stream +h[Y~_яRԾ!LH!`pjF(h%&>g.#`vumS?~pwoo>~۾zOnnbǛ..55㗻w7fy}[a;Bכ^?6o:xk uXm˶%EVy핣غ?:wI ڥ%T?<ӺE +kjw/ifЙ.6&$2f(&lCghqJay!|}wtdeY.khpx#Zi?/it<8=)@RCfuqMY +J C₿xlԵbjovw?/߼pu'X"3 7OݵP +ʲ줅woAyx퇏o=||o_|Jl55Xbt&-0KkBB^3ka! XJSSۭ6Fi_} +)~A u9ڐln5tx3)0SۂMu y` lkz\嵆0Ö5Ɣvlvkp8s'ۭ dB TW aݠM JU5nXjV JzuhOoD#j\Ps wv37.v-~3-q3hf q$Q`&B62VyhU b0iW ['pɮx; e +k3v.vM@(Phgn;M/7 +:7X4<-s>6rfZꚳ7mոi-5S^OK `h k_O$Sc7`Yq_pr /!$IP!YeZR{jV,2U%Sk-WG{kpUFá<+ 39A$VDAKx-r$*|``9]nFGn _]yw{*߼0>R.DAմ8w kj..=QhYӼ0V[_?mZzp"\t8b-rXzzGX:Ά"V3M1 !v }dzox-:'K΍ +jCAjka , _D@y+a1* ˼aEΎa6(7E)RyeF.l;%$G`q&rq㤋ke: +𱽮k c|2/DaB,!\! D7M.A"Y C1 Arw9ѧk ؼD>v~A^GiV5D\g}rkI[0>ȩ8@E YaaxAkoWG6 n>OгKquHI+ I,TD?lAIk7'Ns&af-uapx*t'-hXۼA]%/2JE[eͱߗ ^ލ@,T;Jc.DIc,#P|&idT.C$̖.0SZ`&v N7Se/rgw"]C\J[--6¼RقAޡ3AASJO眠n#uH$C/wh'\lzf+l17 3xt}'IƮ y$I]l[OD?_DOc#.L=UBKG$c_w*08γ</HbWt4S8*CD 9(@3aR&E³2ikBѠ 䞛*`)K 6Tp/7Hm/aa(; nF5:($'iK_HO6~jM;۾R : |:XjfpE +rSmOʃc5xIm1j6`yLUCЖKXDqErI|TgҳVꭝnZn-}Nq4 (hqޭ '.a>ZNƭx 6TKSV" +љP cM㰈!v*%UX#(E/E0m2}mٴIzϾMdbaLT㵵9 !i'd'% @褙Iӕq^MG#Mvz *i>nzΜ_セ _^G/mt~ W3\nNIX[.ȐX4pWt0;LFweNS^!vYӠ=IJ=G%:5A/@)@Tyq5SD+vxv [Lw Bq촎YB;gE +ů(kԣ' H 0n볷Ш=X>{ e4w<4@($\똾8iY~yn=ǸSY)ޑpsR[}5St01,0tlYa9` x3u] p<5vL"(0V: x0fF]h/#KPx{i{u凋jh.aZс*z_~Cn%Bh]lVՅHUD;_DY 7 AohBz& }qQ>sDn,5c%ߥwfZF{jCu?w7U=a;noAr7CȮu6˦9|ppl#.N_s~n2/B)j$^7ߋEr3Xjd1⹳rM +˷#OwxX.iO?4ʩa +"+Pji诇}3-;qVrb\>,KOK|18`sz`>jť3ղ'&~?#)bO.3qZE0ɟD.'.Ke袴۸.+OiUפ"{\Ht|<v:9q0ѩz7|uFGs\ y[Ddz +endstream endobj 9248 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 9249 0 obj <> endobj 9250 0 obj <> endobj 9251 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 9252 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 9253 0 obj <>stream +hެ[Yq~_Q3Xyg,Rd{I;~cEή7"FGdYC1ʣ㋣^ۧ>~ͫ릷o~pOnz8߬\fR7f^}nY|YX/-K4GAEJ.89#W=vÿD?T*M[K:Bj3.Nq0Wۇ?NNs,ZO c^tXNi]gSwh˺OsZz9ik~vMf8ʹO\fhͫ|zOOOϟ'y:~5v},y|B.ܔl߼n7fZH_[aWm H|׻2?9wZf _P޿]s>?OkϷZyzp RZLE*P*ǻtbL +]퉫@] YPWn?w:}7)];D{ %CͺA8}A1QJX*  :BJEzፆpȿuh]4J0Kr65<5v6 EVi\-mmn{)Rh q_a;я3W}{8)Aw9b]ڷ =Cæm2Tr aepHgaj<#x|nuk /m@ШS/ǑR^o- +0 <߸B#@_q>o拫K͙}ΝFzEl[BTDqd +umNuXȇ~)\C?rM\#;vKl#~7׹ %3 +jVi+#%xju DsuI +ӂ@m~l(h3W5hGi޳e+HuWJTƥMDiIs1ڤ J#9/w ]c(]䘂J-x/x:50mC ],uj:&hSvQ! +h2f:䫁;5.эG^Id) t{=ABD_qk\ ۩M$R݈|sXbMMu5*ϨZd`+ȼb*0GOM9j@j +VCinkerY rBB~d-f3"YV,= bQz /0 +Š-EEܗQf\ <^ ԩ9ِ5= Ȉ{[-nQVܾ?V^KFZCB_hu1v8Tbw#ٸ> af`Hk3;|19?r~gu~ߣ%2*nG<ۧ?<7ܡ }~ %E6M"\/;!G#/$ t[1N3v hyTEXE/)g5yUp74e,h4֝]W ;@ xG΂[L$9YcyKPS;{esVpTnE p ے5e(˘~dBm7ijӚ f%8,X'"$\5BcDVvf0W +uJWwbL]C絣~00;]BQWGe@ލ +!,sXKzJdgmƣH eu. !LeHF;%Tp$U*9 uGj6 A٨oһzY3Ҋ ۙa^ bWQWE*i* .s uA}!\1^z(C sz~& Xۣ 7(y/i[8+HI1kY+ `Yv_[@u&m `=YK1zEv*/BP"0K߄up{ [a@ZM9YԞ% SO3{tt\*^Mdqx@"lK(в@/BuCd(>dtb`LH)"EoJQȧ>K\lH]1.g#rzzAs鞥OsB᨜ ><G˞gkء4k*>]9sMʹk]{1Lw,ZoSBeK?9 $7eϞk̓R.SzyԸBU\]È [E͝=~]"<火\.iBKبB]fӃHPJLB+t/bqy=knU7GnR6 Wj`OU+߄8'ɡ}$54.66f=cw'JZcIuU|5|I͑tEܐ +CV5p:T-UNU>KgO7 *M^^$~,WLxF=^z1AՠmyNb?~,K[R~YS48/xq^WDuJ籭!bM dǴ="w5L%}߼3Q^_$ 6x?/ +jW 6ݍBl]!_ԑbN VApkib)MIb^{kFzjIC4-2TP!F}{'_+F":7lM7!PviO&RT9٠W^$[wݣ6X$rZZct1F0|+$uwGC n >.l؍ޓ- rpn>s$$Gb&xgybʏK>tn. pٽZ1Er)Cܻ$$@�Wfp4e=s4Pƨ_ʗ3$ݯK%庿m_`:y;uD{)at!4U>4_Hܿr1#sEa;+iBˆ; 7dj7l +xO<$)l7azqf~Qlǀb#/N[^3|O|#RнC=Bo +U\'.RhAp+y9 m`1SW|t_ uF.sə'̑S0 2ȍaXؑfTOL8:4hN(-?=\l'L^4o&ON7kk،`L}3W/QՖ+`Y>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 9255 0 obj <> endobj 9256 0 obj <> endobj 9257 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 9258 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 9259 0 obj <>stream +hޜ[I$ȣ-=k$ ,Cu[EdtO3"5222~>|||:_N_O߸>xpڴm9Omc\n;p=.KHkǕfo]B]8"B;5n\ GW7G|8䨯<뀭Gj/x^/[#穔8ʧq8g1`דtKĽy] 8uJ e:H ?7?~־c?EGeӏgK979Boۻ_D0vv]J>0G8@+Ku lh w=M7 +hЎIא7ỳ+2X 3\slvu0no]zej{hW7=P7p rsF21Kڄn&j6xNx|= <:|:ۃ #~O-M(9 wg37.vc3-q3h pbi@oAM6^uxUJjpNDix S>]Ee.Z\HLUӤG7YzQ>&ăj&̭}=X<L+`?cL w"DM!PG o*S] zhKGݭMxU +t(padRx"l%dܱ˯^_/*?A8ִW'N烿ϰz2V4E8GxV0,>qI`zx/[J=|zPWbZf@ + *`NvH%"a hHZP.pAp¿1ʞ@F: G{ׅ_$3^'iHҨ$mTݜ.Vsz|JwYR HH@2iPO`Ё nTXA&EaY"1Dt(' idH&d_~jE@6.x6}?jްr,xYtHrI>r>n$2YweM'.rJyG=2l?RKR8A&'+ $ЄzLBi)|PбўUzLssc?N"\8Xx r+F/ +soQ_yMhqY&m!t,zkˑ#&IL(8S%i$הr\i}%) SzwQQn0Jyg3DaB͑݃r7n⨆P핅{#HgNAT{iU}pW;micR +m.y hOl#hIlJШ,:/Sdh"#kjC M* v+ZF"{dkl9_K|R>3':ZufЊ| +],,U;Yy!ă,Bۏ)E82!AyDmS#+kߓazCF[\W~؋OSvVs%ʇCqTނvJ?fnNcD"tb +[vHxj,;=\Q:v;=+$6&95Lex8ܹ|͉ȭ<8|4 &s^LipSy-_ H$FOPӓY`;lxܰw3Mop3I4ܛ4%(V=pnznvV]rT}wj-1 e8(IFM I;qKJb_y:dҭa+ݥ3L{5m+:ͤs@%CO?wDG ۤ˛7̡qVBBv:-Uь~Y%|vP_{+BK{+W$:Иc&{@X/wiW;.d,dQ,2Q%:jyM$'n!P #N7hضqnH~-h۩Ӱuptm?QQ;x[lEu69TFvqOJn6utiU*Cf5Vs!&j8aF"c_fF^hDICr׿-"F4. [͔ U8e\WF쏣RIVvEE-:@CygwnT7Uw2a cV⫘0 +&{|UJɫ;QkWi/1`S}WeWqebro +%(F;C4YƐ[d E5%M+My[Y$F1-'@2\Caqb|@(PAW1eYrFN;Hds &ɌaPRؽ%o[& 7^^LQr[F,#>r ,Lq֯BH}|}@Qa8k ͨK|Iۍ0;ۇPyPF5rNו0OkP_x3zl7Wz@7N񢚀 DsJQ*oe}Ih$~v1)41Y!ᢢ:Fbو5+oZ't1Or^ء8 hc#,PԷZ*=ԚZ2ָ +2l졳CgT[dۅ퓈ÎtJpxM=k2 +j9FR\e6,կ^k/Af/u1+۲ +Œ,Gڔ- }5fb|[y:DCTFrx'K,m(VWKiV Rx7nyq|Q?~_?ZԊw^QXVsTv[+rK]l?MP*S[[%j/w-ܥ:BJߐ_USMhwߦ6/|b8؃~71K_Z>+0mzت)3n? Z>ŭ"I')b +endstream endobj 9260 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 9261 0 obj <> endobj 9262 0 obj <> endobj 9263 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 9264 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 9265 0 obj <>stream +hޔ[Io[vWܥ^ݚ<3! u ȢESVwv9sU]&k:wNn4w|oǏO_>~vo7nyG.S)qu ݯ7f^ ~/eeYbOZTiP 􃊌A.8=<׽Tr=v:ݿD?T*=%fp!ъelU??ru}XucY:}=<ȉ=e^rB,i]Jm|`.viNXJ\r5'? wWD؄=i岫 kKw@|$&yS]'_K￞??M? e0qn(<Y>: AVjP^iMed]~CFpk'90z%] &C$ ~6)s'XNWXHt!.Yo6Coo>i9I ]p`oA"PyuJ2] 2h.{}RGK8?qmpNLg*e~Fg]UhX+$,PySɤ2i  Z\-A%>,w"0GΌ%P#p3 '?E֥VuUt06:[0gZ@Zh m*FIh֢jڛ,F< +*h&g2K;yft!{tg}?:t柞 'pkup9?n0ykLZa$ +F51n14Nn,LC(6^t ;~[*`&u%k7-)/oz+%+.co6ob}0}9סcH~pIq҃~$ ZeCTpD.la|, gyXS9npXUy/.衳 +~+T3J*W ؗLZ9EUՊ 8(D߂h5 oٚ*"H[wB3Ʃ߀DO0h44eE0qV,7RԸϠtN0#2R“(cNvqwL&(bX%Dx`맨7mCn4AŰha7 GsѸ:s+WOR_G]Eg^ HDuf '[lX+j_9_ݞ)[H$D:66PMw)(X:K1Ը +(-0ԸK `dAF-(` Y´ Q,kwfAz#-ICKiڿ@.a7 q.=#ZjW I +X^P)%`4DXqgB]lWdvRvevJ@Y Z!r6 !2/jĪ--7HK1N x`9Ka2O xU# -.> d#bix[\.g5V*]X4 6AEzLzr X\&ت AǙ+C0 Q;sTEBS4 ++x;khiG²Z4wL3=;h=斫0i7KX^O]5\R(Sr..I/d@2˜!q̶VK|6Mfy5;O'V EӲb!obLeI3Ծ>Pt"9'Âg8m@*{Yx 9o)WȣWd%2Ծ䇰5Ql/#Hş/1@2փ0JZュ S-R!˚xvPUޙa,ݱfCc0N=޴ft 'hbC^ֈ.$ <͉y6'Jkdi͜9g|Բy#zAE= hIei?>t+x(JN(UF0 8UFOAz׮vbK2rꨭWdz3^,!zU#ynǠn֣|L|߮ ЀE4u]`ЋF}R]f"uȰF"r5 ,$P)AeE]SıITW8l]؉:Y4x͖D{MErx=:TM`8E6 +W2 [ 6)MT,@ʼnʣmnEF2YN͗V&N'%}ˉ0sęP̝C{3[Tyslk3.7vhZk"{-\u[63'C"tO?CQ:0޺.+yPZ48A@6MqaNh(Fx0EO5{nCݺ eؼZ@զt-lW*ZR/ǒzۗߟ8 Zuiė ^ގBP [4vpZx-2nVzm;L˖@@HUvp;Қ}m4{{BL#Qx$L&" DLGՁNMKK,\xMRۻ.YW)rc+Aq0iB{.TOr JNbfŠY۹HХb)$5)- &-n_WZ]+6LZX? ѷwpJO[toSǷ7O=q㧧\8{+mZgOF&|~~:>mkߞ\v<>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 9267 0 obj <> endobj 9268 0 obj <> endobj 9269 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 9270 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 9271 0 obj <>stream +h޴[YGr~_Q3FZrm؀ wC;j7tGdFDFVu͐ ㋣nx|:w:}onn'3r󇻛ۻ;3L W&TMwoa^㧻 yqY\ TL:ld,- {x(&&`=/'3{qlmjZϻZ\b2M8gۮg\7<Zua.dmyMxSۈiv N "6Ƕ)ٺR4T`/O77t2n9I sYF"_h2ӥ0Gۮ/[xm O`7e~b2a6-v>}n|ccY&ſì'ik>ePXZ~s@>__'͗8]xS/ڧ%N_.06S)s,4]>7̡rʮ]-ل@umdty6>D[CMH&@,GW8n(sP96ÙlR&U ɽ w0fNٚXָX n7'ptskm\'(6sü0H9V0g{/7ҳ? {_x=ŸN%LH9Kg ހKvb}E\ Y*B8\><tP 4o@(M-Jb,A8֢'I=HRaT3r\,rjeZc+כٔ +47z~7 ?]|7y9j)sJ_2/&zjP1R+ҧO+k"'%Zxb0<6.ܯxa곅P'53IM9,{.eju] +R9jdK>ţRo8Br 2<oIh",|kz?g\{) 8E:@Gu'> 7Kӥ:ta;ފ1V\h58lnw6y'շ=WJ3R!7QX2ZӺBsUX@fs?* _ӠaPh.68aJ{vgKW~x&faBObc;ٮ,2;< T,e9#-`h,p-kǕEV`Izq#, ʹbx +M&?ncb1ew6P~mx**@U\w:e ]e+x:B +Y(f).EF<1hJ*DkCjC8ʁRx#m`8.)H'ZUUҔ~9uIdSqM Օl¹kKit\k}ݩ?nQ5hH֋ǁrCh~n. _ F@ =lK6CǝyqO!8 k,h Fi\P" әI hW%0 l5٩T> +( 9A^͊g A)+>yS&~u@>I9qta+4 «ڢj$P XǙI/6fgn3wOeo }gU|٨g 4WaIV]Tˡ|ϯ~xz}>4,85$JifNGO@R]B~Dq [P(} i|׳{u7|4tˇ/y ;`٫-/,9]vyaRێPʠ4!cq;+MSE|͋LFԠ^UdJX6"Ӫg9LVˆyr"/+4B;=^;͉D(;I\"Y\E ^ʶǸ(CHso&ؕ&~AeB0L}Y5[䚱G=Y[ +F Oܞ4>7m +u4U)7 ΚHD GZFĿ]_eSۖ2EPa1&9+r7+̏pz©bAW y8x Oug|6-v $8H*'`c^t6zw\!Щ gUtV$޾БI|"BTb`eDlknʩr߱jQ{ +VBuI*X|Q 'l$:J)Td9UR ZWSVz?UN*3vg2.ȫap%!tHHi4 t#,+(I&::ǦUU JkU2;PEzcbܓh$J5xXĿlQN&䷷=񠽍[3} QIg%wdwUQ: cTZ',6SɳY ܠo]ޣ +a6VSw.Yi*~sנD cZRҘL"b#bϱ#z NitٺhZ~goˢcYFȓ1ռ&|zYU懼{؎N(k@5h ;1҂kgնsrD^mݽ%%s,%;P*ͽ3hb⥤E@JR[5Y4EyVrF)sN/;a2UϽާ˫枛vYY}NGkQ+`y'꥛JnO"Suh K*o9Uot]!u3|WB=27Cݶf*pWTW8R'T}ͤ vB ve%lwc*XTۍ4:anճV|U$ITX.F conas`8f*uQd8=tu_mn#>AKΔw58lBCbޅD=#>x܉Y{QU)h*z*',"WJ* R[ht-ǟ,|_=0$<$H=:;w}5ҭT&%sR@څ%k D0%}sv^-93KF9It-QVe 7]ÚݒQ^ {.3fPxMhaH TE_WDf6鸧pJ~ҦVm`eߪgӖD_N +endstream endobj 9272 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 9273 0 obj <> endobj 9274 0 obj <> endobj 9275 0 obj <> endobj 9276 0 obj <> endobj 9277 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 9278 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 9279 0 obj <>stream +hˎ>_G)po KN xfGd˲'V)V|]">y8?N?ͻ7_|wvztiqi9_f?ݾ띙 ߷0.s(9c4:iyБ~`t1|ǽ3#8ۿ3!8޾$\""xH;V-V~}f7eedN&Z~y  52jJ\O6x޿8|e&ԥaIV9}[?L@gJk4nK a?AG7o?~xs>?05X_s~:BN1 y:Ma"Lv(&b{S}V0sW3L.Ɔ93'Gˡ < v +CzGH.Jk +[L +ރ 5bMvӮ$#JН3 hB+ڄ7hVjlbd>;qG |/ }Tㄺ3ӿ3(߷ A;S8UTrF%#MTRnBz܇d2D + joi!4VC~v۫8 LMܚ0=pqALuM my4JڙێGؚ$9DO_ڧez[xo#s$a6N{D$XV]|/8G[$oYXGjYɁ}[RiL)\#MuHK4 6ai!Jl0\A6KW!c!P50ACNqG2tPc?B8d%_qͺh]im]pΊ#CعQ*/(J­e"[(A;KPsZ58JTCCjdCZ=R4L*wvmg<,a!ۃUx ]H\ӷNt-k|KzkQOsYԒBqN@!Q"ŊpeP%:ȃ}5qBf.=!_<̾T]G7#):za_W/>EDtzG''#3Vub8,.~&rXcr/'rmwOngp.w]Z񅧞"DFлeMk5RsM2hW&Stw|+0CMAV@I(*Xl=t&R̩cqXjѪf68FMG>Ped[-hVNRr)PXRU.48EhޅPu)>HO6ySK5n)#%Ke:pwێ:=QQ[.:eg{^VuDHLt!J<(@m2m7<"?"51XLrR(=cMsipֹfa86,oU9X@\ү{ ,)K46.`=h] +?@\' yڇhB QAA%)26jNt +ήlh6V]o~#qNiY:t8WĜдn:7Wu͞)2? С#1 +8b+NS-G7^c1:c%4{P.F'?ga +VKV{'sj0?Sx['roJqq %>. +hT<^cALԅy[9E2tН͍8, XcDvbSEDCstS!B6b;}9!d|f Ybj/&&Cʪy.)8M&2tqKu8RUJ;RRnX3ӗѦ?dǝS@pŇ#I$z>Pڰ<>k3gz6K|h&FBWl/WY|q 9w"/1bYt$!yRps1sk[ua o8pAiXD.p(Mlyx [ris o`ۋitsmh2D͸*mKHv_ln-Û{j6exsos5m[{GWLgp8hxuw|k9> 0X ״|\s6q bytg*aQ|~XSvmrXlaW6Z)Y%p={?<(B2djRk^9x{nCCP.^\O f]|-P=HbNFV,<ܢ垰J4vɗ"H5U\R b׬FYWllۗp>\/+_EZ)F/ҁK?ŧh -8>P~vg{H?O&?lϗZ^0>(ƙswV-_j0IJUe,-9~<,+}#o-'d%:p?e g2y U;%]'.TE- "l_W-{C//D)ūٰXKϕGwjRx Z]Wq>iLݍ&'(>}4|soa5@cgw`}lpo]Zl8r^_h\ݵ*mpYXRBT +' ~h]yQW:+Hy,^id$Ʌ y7 ++O>=8d~׍ΑO~D \K4;*ˋW/ +#p.8fpU-W=Z+ƾ7d.Zr:_#3hfs^Kc% [ݜËȭ0=ԻPKYO>܊jϩFEyMSNy)*SIJjZz5FB>_ O +u]ֹKA:RM#=R:"P6..lwx֨k媮%M3P1UҗZ]蚩F课568q^Xx?&0㹏+Qi'н=sGN* ?԰n5DgeW֣'%x9 +endstream endobj 9280 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 9281 0 obj <> endobj 9282 0 obj <> endobj 9283 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 9284 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 9285 0 obj <>stream +h[Kqϯmk*ߕ@ ^AYCڥпw3kȕN;22"Ȩ뇗t>?>ϗ|޶߼}Ͽwӏ??Mnzzy2=݋ +q4PkX*Ǽa }ùFA2~>t%3KAh9#slwSܜ:q+ܭgRaNRfh27_>~ç_p~ϰycYqnuUH(Uz8eN5NG)**٥$sN OJq^VtbyɞCM*\@,@e7c9X^2p&_W+5>kr흜ǿ]wVuspة}gd&~"ya4Us\pT=ͨ<?O A'jPr +ti5tnjq1(p::8R!҉#Ԃ;eR)]y<n% ƑyG{XA5=r$.VE@\5s)L<̮+r~8gXc'[X:I~5m4n#sVOGGIA5QZ, +`?cyDǖT,hjHqQsPRZeBJau+zܪM" ++W>)N5YfP$(7! zC{pUy;SvmUb:SDx_ dGBswi\@&ԵԤ5 (dƢuZ\J|ź*bMk >n4 촺uXOzs'6/RB +m#vs~*Osq˺Sl^];Â~Lk j{EeToU@*+kZ;E􊄾قEo`' =hXS30i okySE*1],̟ \c/zưE [4LeZ.hCWg\d㵫OVr5iEwbG;cݔ=3[ߢᶁ7zW!=_wVsکxxB"p1Forjy90m%Hqs_ﮯ[7>&~-f빋k=}ЯtݏLr;s,NNWra܉:X$0fG-soqF Mz7;.s A( Tuλ{ɾJPzǡJ/C[yvj9c-}{ZZ{jG}b%ӓ%:łw=sgb8/s>02]}Rf'S}ï145tRJ6,ʸ݂F [Efeuw{~g̫l2=F3h =C-RTSw DUـ,[eGJ[rlQ KJBjG+gYUɮ|y^?m*Gl~|`֘&!I C:`r@)>y5뇵CE/D  VLFߜ#a;=PLwY0 s}Mp8Qf'+Y1}X,dxmia*i93̗o/,-9$&q}5̰<,by9wnn$u +(KĤK?9ݻ\q/sؗ-ChԦ}z"$ңnSQz`(r\Y-,BU:yRLS0MXD, +C,ᔁ[h$sh4~Qhl+O[TjbQGrFvu"E@[^d֝>1B>-`_ y]\pf +i^B:K,o|{ {ug~iOF֧3 7< \xO +h[2L,Xnqr=_rpȷT$. +;5} +22y k\<0I3?f%e"j^6͸<>kMkW(>f7:ߎ0nԒ+u{xD;w GU bb'>jQs%h0@.nruYe[ w6noM8|YL;gOy-ig(ĺ)5}RjNj W=h!lz.IJD`R*;Q@sNebըs_,5ȧi 9d:KhělHa@I\/O}oL-v^bC|;>fKڀr鳾;j.~TpxdtWC%u7.>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 9287 0 obj <> endobj 9288 0 obj <> endobj 9289 0 obj <>/Border[0 0 0]/Rect[341.88 502.52 474.3 512.3]/Subtype/Link/Type/Annot>> endobj 9290 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 9291 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 9292 0 obj <>stream +hn\}RBYqCRh`rs|v8VW_~fݛ_X\;3vfqLEQ%NCL)%\nڼZ釅߯Ik'h:(~&"N>;Y ~:J+\/rt-S6yvnV2иh H M=a&_j1yR֕R&S)yzY.c^QbuaDLE+YJKgV~~SˠXmkUv`hp9%@cGsTc1{y7/E,|*O'A XW7_ MiGaegki2eXiq{w7/ܿy{up`o{ WxCIA! 3 $Di@'VPDehhl AK–#t6Wge|:4?}{Ȍ=p#p'Td}i3p<8{KcT7+k"qtQ +2DS |GemUD1):|!`hKVyR蟻ZY=<|9zFCz*aBohSH]gT\$5i0L9;ЩrRY0{C0F @I0F)u1.+ LCԆ!R6q?N5yCjG|>4q#7[(S +E#O$jxt=}h7M:}JfDmۆ#+4QVB Ɠ̓s/D" P!xæ!ֽCaMHo!|pa}1{^t,2ΉVm3қۘkU O.")AQ@M_;| -QTIW`%|nRt8ؽgѧ@P5 &ض{2 q+zN~"!bzuH2^xK|eu݃H(a(7+l_!r}=ZHK CBlabttե(I1SA|3Sz &" *3ֆ5Pݱl8"-c + 3LҚP \16!$JT/c\zr)gh;P%y.b+3tJlprU;Jr׸`>r<یIFu×2z`#uᗷ/o~j ~e˼*"9vpH29m +6<: C´as_ Q%(NE~1LB X +0w$`5%om*~=i]өC =ObDbX)Z_c@9xnn5lUXZ˶2VC`[-U<2n+~T77wod9D=viܫo &ڿxP<*Hx>YYRs}.<1uxOFs#%,Drs:z1 +^mssW} +%dB熓J z Ύp&لI]dWFf%M8nn>NC' [mL>2d~1y !o]_H|)4oϳJ*OͭY w }(5-)WsC +/ol(R&22>9HlscDmB^Ve§s4B;x&XI]^ >@AQ],$g(}^ T˟(Gj|FwwCXxj:| _V@ +endstream endobj 9293 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 9294 0 obj <> endobj 9295 0 obj <> endobj 9296 0 obj <>/Border[0 0 0]/Rect[348.42 205.52 480.84 215.3]/Subtype/Link/Type/Annot>> endobj 9297 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 9298 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 9299 0 obj <>stream +h[[o\~_qK~)HhI@>RBYq߹r"ۨ4A HCr8Ù7ã/nwi7ow7wo/V~eޯڮ.[3i{*2٘TS{훕~XO=P۟Wov~54uPZMFJS@´*8r?ˮ1j~hvH]_Q_+YeJ8ˬBR9TUi]Pŕ m_6fV4"Й38C6!%Od"// +vJa+Lʧ_W.Qb?Gv\ݍw/ VҗKAE&Ax!7jQ)*fpd2]t 0Yo&4ڣlf]7|1'O@Lkz\]bՋۻ7W7x>N27dht6S)*Q!M7fZ'ӭЎhGU&)j!P^lP= kJGKd`D:: CCZ,́<ÙlRF*Z@1 `ykcT5hkI5*:a`ATVja*@͔ibs%n0D +=,voho XA~*ant3Dxd7ɋ( 䬐@buR*ɣ`H Q) Tiap$Ҡ%>5Gdn L^Z QXBPӖ{#SnR$+Z^G2հCLURTJ^Ox 2۬aG["c^OC5q'ľO< . ;B GPaҾҷD;G4H,BDPAzɹ*aQr ,6<,ݧSO| I{3HpqYh[s  RZ@73~s`+b1;ǝ0}U.S5N8kJ%C'D&7tVu]fTk0oūwXl}//'5ֲZ*3,n +R-VPˮ_.ԫlW{h lrM_E: ^`-l+hdfeR-,KnpAfSuʤ)4x_lm4JqAUC]3t]-Ƃy]]h,LsU!XAbZ _:jt_Jt2It~/:Gz,kyyx_1̨7.# Uzh42E>R&UJ':1+maB3}nI5* lG3-H̖cRUjD@AQ +;J5I;X[$"3>𖱃F,XAֆ pMfUeZ} #!.7Cii)3H4BSvi$(0"$ O+>o2W@ }v68:X&aeD1t!/li2ں 6ϋGH gF 3 (F4++=7C!,@m~g!8?@NYK];4: iچL3T<5)A Ls`3|vG6Ib \tL¹X_T)LeHz*Hc $ (u(g8uXl8"²RACPm`R˅(}P{/ZZ $_w"* r\/y^Y &GZm_ʉm[r3"<4:9/ bLgEɷ]<ޒWݽu:l{ԮKƠfQ~pmYR4-*iO*-f:>-BL\O@6mX ϑO!J Z496 (Q0̀/I_`O`]bںcYӠLÚ!fwM˧B=]\Kx:t*{qIp5& 8v8v/8u%89{t solh>~!isrGwyώ}wH$]lJ%|{ޏ@Ι͖/[hP9$/'I'&%?~_'eqOaͅoSZ5 `g|DD][w5%xYہw#-`T>LalJݱ:!wѩu۸c)nn@_~QP^Dlո'K:˷{j[/~V8}G|Aysp*o's(/¡*89i*yWW(p~6A+ٗ ><{˛ۛ_߼Go -`t{uI)+N +/b{*PoD]R䲑e23re|p+LR?fZy XnEl -u1*b,ɥZJ˂DžQe +<; 6鵔wy}V_=cAڽw5 9 >`~'mLjzc48-V67? 鱹M}`I)sȫTя *HmB0$D59ѯ@FM`~|&~|-?z=c煆q.>& {B<`ɴe0;^nX]M~}whnWk E[\`l*p1 -Br9wƞp TK,ai&X- K\(SEmFo`O +endstream endobj 9300 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 9301 0 obj <> endobj 9302 0 obj <> endobj 9303 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 9304 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 9305 0 obj <>stream +h[m b>X_9(Z4@A?ܭφN>$fwgm1b{oF(Q$\ͻn淟yūw/^~rfzvNfy)IĤlRe==(MwNku<*F;TDď]%N{ҎZV9U6Ƣ}!exe $ M@0ʜl0#mɓ2)JӛͳM}Ԫ]eDSUME+EK[Ec6?o۠XKwR29b",{keFDPlr94L8 +y_'#6D\T0d2V\=y}wշ6e3/ S4ړv|&{PӶ ϛ?G~͋޼8Lo8BJo|>8=![)X R"MLMVm3=ԲU&ZZ<۪J^iL.jchJG\Hl_}h}>'Ty.d}k0Ak01*YfeM5G5*:P0tHc۪Hj)sV?nm`@sR>Pn C#}[o[S 8w C[Ut +*dfPL" +8l;@\<tfDf@FB).4 +^*WECʂM|hvxXV7yC+xN4 mdX,rj~(S)NBבu'V5n]o>̪7yM&®tS5Ơsajө.X䡆m8i--  +⍸.J YW|5~G1AmE7KK"ye{LRpDb%TsC]H0DCbak3h$chsw4pqި?&!Ԃ[xL9G}E)ѷ{2iɄA}Uչe&$S2Ny d88۹ָ͈z2T|<'>)>n?;/#=GQygQ~G  ʏ@Q@x J@DDDQꊹͷo[?~ߗ=E}d=w}^#߁~\`pnW8##l}^E:KP"I}D ̶XXz!pݧ.ih{KnqszpuHA폫 AiDeF,@- VŒa?՗=u_ꇣKy $4v@wyw5 >+.>"hVx?hL?&z = nî[#o1G9l@6)Ir|=iۚj ^W㗷΍j{>4Ԣ:t Z-){C{{K +PwźU7:i˹P{ԓW4 =d'tS3vf֓9T8`os޺tcSʐFL;((wVX;-ݮvP:;H <3:F&:m3o3ޞk87($s#至ҝy=:83s,jM>|Bke2%ޏ* +kqT +6Ѣkdi3=Ηx+Z֍=k>T(0KW +)OpYU +yo$ۂՋ"5m:P9~є^k@.`{ܖ^]OٖRT :!lu$iH[wqu=S&|c.?f~t}E.ٵ'˞8VC[t *._8ZA #QrhӁG%$:H!e)茤;/vd`/FvL餬0WG4ڕYWY{>(yC WNZKB_e_b*;_fHp֙lJ~M*}M|>xkmtq@/DR), wڀ>]4l# zwӷUqY; W}/օ!مNᅾ*|xA\e,DnUj& W^_b*=jEԔx7yڬ-լdұ#Eփ1g-v +nu^]2!R?mly +endstream endobj 9306 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 9307 0 obj <> endobj 9308 0 obj <> endobj 9309 0 obj <> endobj 9310 0 obj <> endobj 9311 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 9312 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 9313 0 obj <>stream +hZoοb?#%#pQMMiJP!KN"!fgw;;7{gyx族lo7wMbq-?-^lgZlY(„(CYI %kvbROaج4Չ (\`Nkiö[ 0l zЏ+s("6AMEjII౬/ b+*^fm.ykWH:4E2ܶ(@& &P5zW7(rʈ46,<WWd6xOArk=z5(?x  ACq"o6!md0 Km +w)ş@FԕZ9]F!C$3E+Dh`Zs|ى>4*;͆vQiP"gr!X%}vwe2lkcXkSJpC;LNR݌TrXF,;n;Ҩ#4VдDD]`Ip՘#[k-$ mf M @f11lR b=jU&K + $݂<- GMϰ#>a?e/(r! odn&"1 l .ՐVZ!-F&hGf(!^YKVęH j\bbz@J6xc7:; M l +6Ȋ s$"F*`KѦQ:3,cԽ镨WQ<֦bn b)>5qckN9Vd1,E'4%p$dK8={vjť-Gk[eLvi.p5]<2y;kH:JY˖>ox(LS^ID'Gׄ{^࿳7wT2xu)T?VcdH/(?'C{\+_XGe.zF OaFi$~G?;c&jIQR(T9"EE"rajݪV OYL8`3O7oW +օE _"{2p8m,k p۰ SKk L ]*2L$lMEnV|XIǕQD-&8م]HmZZg;gX&:CdLBǼ'ƷakgșSNk`¯&2c3]5j"qgf$ S}erNsܮtbP s<|0 !_Nw +8^v0X,b6"Zb{T(UyŻ Gs|Eٯ>5+T”8,BmEmKNԦk XSQ2uϧJFNŃ]D>wLvGO&6T.3$$RDts,aXqix΅C4}|v%D͡5qs v6ʽ1`+WʦHtt'xYql΋'Z'ZeAL1iKhPڤ",DѮJгQ̨L{{~ϟ k_vv-5۶(Zߊ/ov{rr"-n)7+zY +nֺ᭭}%- z+[Ŋ˿_ߗ?VU殈^PVU[mquAU2̰i=;Xo>iSSì!M-WWF` >B:sS. j⒖ãcϴ^>`;^]Ҭ{{yB1m7UDl{\7Qxku4R:k; 55w3um}yۥqA3T tS +ZGm*krE ٚfcMr3iSݙ@73xGN:t֎t Dm$;g,f=k#\$xjv H}q R2Lt/+ۉ -0EV>s ^Qf)*B +endstream endobj 9314 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 9315 0 obj <> endobj 9316 0 obj <> endobj 9317 0 obj <> endobj 9318 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 9319 0 obj <>stream +hZI[W,d 8P0`IQ~CJΆA0UWwuumu?fۇÃpU1)rYNo?Jk~&}>JBu:*|y͔?/zD {)$Ǟ 2-^gm`Rkhv0[—ɛ)JۇyW (|(]b{Sm/V/Zy/F'D'[>Y#PN= +er )2QbGǖ.+Qi4r^%墲,̜7_=iMo߾~nuўbQ?}(X3춯uw㧷^~Oޞ}cNap7>O/,&*;f'Vu7sӎiL[<۫(t6vB笌XU:Z-icJd D(2II;&Ko}h!:ay{cT5ikjTt`2ؐJ- U5SfFbVo|i#6T+|%mƦ#57̮i6* ,goZ\`yiײ*MFN楄&,BHH_A0ub,ёӐľU<Y梵{0v.zKVZx΋b4"ӉC1n!* t{TYvfVԸ5E2DwAA +8Wm(LaIK|h 05-z`i"vÅރʭGpѬZF\L}nY Pppֈ{ lSXnIv80GI9U[5-Ĕ)Z'Q `ٵlsBf]`ښ&yIh^Pl4C&:S_J[*~gIG`8D8NE/\9tѴE~K\vp7i0.-|/ŨӹZSA5 e$E(S5<5}haS mh^!M=Ye؀[дiZ;E:[X~ƹM38E3Q?JT{jO;2.;dkqi&8Z2z׃o"*+1B(,Oߛh#L}\ ՌK=}=-iTG PIja%8o|;#Mt o.ĥMxSAwFY s}a6mEύT7{#D7659tԆ>~J#*4qfOJ󷄆Kj$qL̨-)hUg5y`@MȲ~ΘJ#R+?6.WtWp @*rvԮvTlT Ǜթ4ҨlY*ƹl'eεt}kFJ/ uxK=m54?.΃>65K1[%w Gsӕ<ֹ~_Mf6 β#+V{?ޯwu{Нq)x9@[{N7w)}7E.9<1{vFG"փ~?P{?sdrT'렆Gܡx"P*/ͫy̱${ ii+.E~G` (,H'z`3^,։P3Vg{ +&T\MEF#5A?̸e695VBxW}J< +(x5Pn@4b & vhy :؂ ´[+N:oj7 +R5qjF VvK[+\[/"\1µܫpyM Ytkn繯 0 +endstream endobj 9320 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 9321 0 obj <> endobj 9322 0 obj <> endobj 9323 0 obj <> endobj 9324 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 9325 0 obj <>stream +hWn7Wl`8\  N!A KyU^F[ >|$k}Ego>owvƛЌO3!ihv73uΓv8~Ǘql,NMלms?zK}JKZLضnf_ޘϨJ(jRCMG/jo{{zYKlD7ܺ odM)sqSx%- z|AC3{lSFlD3L {#Ligt0vYuFmTg _m6Ǟ0.o-Ū9bƐAvĝQ'w7K- BziFQyM ,.1"#c!7p}7Vxa|C^)~@.T1L![ x M+Myx_bK0I],Oh 壶9CLz?1q2_$ ]PűH!fs757Q_NUJȄHֳ1x_/n' Y>K|OZW5-EZ$J(EWcziG#HWh]>_Bbyz90wOYzo?4ZU3V߿j_ 3be +endstream endobj 9326 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 9327 0 obj <> endobj 9328 0 obj <> endobj 9329 0 obj <>/Border[0 0 0]/Rect[222.06 631.58 370.92 642.8]/Subtype/Link/Type/Annot>> endobj 9330 0 obj <>/Border[0 0 0]/Rect[222.06 618.56 312.48 629.78]/Subtype/Link/Type/Annot>> endobj 9331 0 obj <>/Border[0 0 0]/Rect[222.06 605.54 514.98 616.82]/Subtype/Link/Type/Annot>> endobj 9332 0 obj <>/Border[0 0 0]/Rect[222.06 581.54 343.98 592.82]/Subtype/Link/Type/Annot>> endobj 9333 0 obj <>/Border[0 0 0]/Rect[222.06 568.58 344.46 579.8]/Subtype/Link/Type/Annot>> endobj 9334 0 obj <>/Border[0 0 0]/Rect[222.06 555.56 387.96 566.78]/Subtype/Link/Type/Annot>> endobj 9335 0 obj <>/Border[0 0 0]/Rect[222.06 542.54 493.98 553.82]/Subtype/Link/Type/Annot>> endobj 9336 0 obj <>/Border[0 0 0]/Rect[222.06 518.54 348.96 529.82]/Subtype/Link/Type/Annot>> endobj 9337 0 obj <>/Border[0 0 0]/Rect[222.06 494.54 300.48 505.82]/Subtype/Link/Type/Annot>> endobj 9338 0 obj <>/Border[0 0 0]/Rect[222.06 481.52 385.92 492.8]/Subtype/Link/Type/Annot>> endobj 9339 0 obj <>/Border[0 0 0]/Rect[222.06 457.52 433.38 468.8]/Subtype/Link/Type/Annot>> endobj 9340 0 obj <>/Border[0 0 0]/Rect[222.06 433.52 491.34 444.8]/Subtype/Link/Type/Annot>> endobj 9341 0 obj <>/Border[0 0 0]/Rect[222.06 409.52 319.02 420.8]/Subtype/Link/Type/Annot>> endobj 9342 0 obj <>/Border[0 0 0]/Rect[222.06 396.56 344.28 407.78]/Subtype/Link/Type/Annot>> endobj 9343 0 obj <>/Border[0 0 0]/Rect[222.06 383.54 351.6 394.82]/Subtype/Link/Type/Annot>> endobj 9344 0 obj <>/Border[0 0 0]/Rect[222.06 370.52 399.78 381.8]/Subtype/Link/Type/Annot>> endobj 9345 0 obj <>/Border[0 0 0]/Rect[222.06 357.56 452.64 368.78]/Subtype/Link/Type/Annot>> endobj 9346 0 obj <>/Border[0 0 0]/Rect[222.06 333.56 417.72 344.78]/Subtype/Link/Type/Annot>> endobj 9347 0 obj <>/Border[0 0 0]/Rect[437.7 333.56 524.94 344.78]/Subtype/Link/Type/Annot>> endobj 9348 0 obj <>/Border[0 0 0]/Rect[213.6 322.52 293.04 333.56]/Subtype/Link/Type/Annot>> endobj 9349 0 obj <>/Border[0 0 0]/Rect[222.06 309.56 370.26 320.78]/Subtype/Link/Type/Annot>> endobj 9350 0 obj <>/Border[0 0 0]/Rect[222.06 296.54 331.5 307.82]/Subtype/Link/Type/Annot>> endobj 9351 0 obj <>/Border[0 0 0]/Rect[222.06 283.52 398.58 294.8]/Subtype/Link/Type/Annot>> endobj 9352 0 obj <>/Border[0 0 0]/Rect[222.06 270.56 460.2 281.78]/Subtype/Link/Type/Annot>> endobj 9353 0 obj <>/Border[0 0 0]/Rect[222.06 257.54 364.44 268.76]/Subtype/Link/Type/Annot>> endobj 9354 0 obj <>/Border[0 0 0]/Rect[222.06 240.56 273.54 251.78]/Subtype/Link/Type/Annot>> endobj 9355 0 obj <>/Border[0 0 0]/Rect[222.06 227.54 466.86 238.76]/Subtype/Link/Type/Annot>> endobj 9356 0 obj <>/Border[0 0 0]/Rect[222.06 214.52 371.94 225.8]/Subtype/Link/Type/Annot>> endobj 9357 0 obj <>/Border[0 0 0]/Rect[222.06 201.56 299.52 212.78]/Subtype/Link/Type/Annot>> endobj 9358 0 obj <>/Border[0 0 0]/Rect[222.06 188.54 496.2 199.76]/Subtype/Link/Type/Annot>> endobj 9359 0 obj <>/Border[0 0 0]/Rect[222.06 175.52 462.36 186.8]/Subtype/Link/Type/Annot>> endobj 9360 0 obj <>/Border[0 0 0]/Rect[462.36 175.52 524.94 186.8]/Subtype/Link/Type/Annot>> endobj 9361 0 obj <>/Border[0 0 0]/Rect[213.6 164.54 377.94 175.52]/Subtype/Link/Type/Annot>> endobj 9362 0 obj <>/Border[0 0 0]/Rect[222.06 140.54 381.42 151.76]/Subtype/Link/Type/Annot>> endobj 9363 0 obj <>/Border[0 0 0]/Rect[74.76 87.44 89.76 98.66]/Subtype/Link/Type/Annot>> endobj 9364 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 9365 0 obj <>stream +h[O#G_'y~ div=\@|klb䯿zt6tBS==_u_-jǻzΫt1^\Hq{=b|Wхr{Ph1+0/‰{?Eahhr-6/r=JGHT2Q{F2x᱓o,;{=rc}v{9\%`B 4HtW(K+]ȍ/ ^+RYo2ꍕ5V10T-9%|,JjEakC]2%t +Bq%.=kixgW@nk9L B#T/RV?SA?[ͽMy9hӖ6Wb)ޟC}-zN?Z91Y4g2:&miF"D\ZҹƆy=P&/oP^)&088NSt;s%H;MO- +@p<ƙK!wlZƄi ̽+VRSe4@8H@n+|ܡMhRD0I$ܝ;U6skDL9:W\J=[\Ev*@)oM*/ +JZAw쌆sdF|^HQj|l*\2)hRC+F pr(;T H^ݰ, D +4 M&7 $>4Zhϴ^ǔ{% +'Ato.uh.%6)Kvը{eBDfZ+8gFs=Tm <,N\ y飂Dh22vC 1]C{@eڂܒݬ%K&גm*IuHDψ;u٥lF:xUCʮ{xzCuGPBҼK|{K ">R-uҦW1i\mv|[+#N6))%3I >>c_I1x 8h(\!]DhhNO qTXQy# wyQkV[C9r6,*l M װZC lP#袯r~$7Hhhj[%Q14PXb5=v(˃hr#\Xp 5W ݆ Q2)`%ԣĭ'%00"Eii n EKƖ:Q6'@@FH9AQs̯E-.DF" +'Щł0ьKaJ @9o5$'VQ 5[ 4G&ǎxS;Z%C p9M#9*!. NC]Oqz yP9JCprlqIpE| #cdŁK9аbMЭ4 eq` C&nk;i +i髫eWιjmia7v Lvi(ֲ).9pxw3N+ɹ-継ꫫt!._~CHx/KzXhl=M]W„n4WNw5Wj!4:s](Xh`9<ՏiQo]21 |ʃj1׋%߲mY7 j 'Zˬ޹ +1t',cl0m2?^]imQ!M0UeKV'G[&0>g%,zٷ;Bv&wZ(A&ک2ZIud$(=YҎG0E-n&boؙN6vD"!ڍs%!J/^R y^n.ȷ1YUf'NKCU? 9W0`oIS!;?:Xv$,_p;\vb *2Ⱦ3)=P+S=unz'<8#QL. .qoꘋsIP/2:HncBGoP2v;]v{Jtȁ>dK@ֹ M?75׭גpwĦbYݤ ~`sf`ӓ*I` 0l$f +n*G+ +f69.@J<$ۥqZrN62zRokkKfƷJD|/Iqjt|[iA˸&X:mqp|Cp2bt8,@`) pB Ff5}UCҽ$"nga7d8}Wj28U_۩y_ sB<]\wr c/9bYx}e8ϓ0XC8nkC:_HΧp63: Z``+/1ʮsD㞇DGMt8='7ߍ=+^դoHOj$Y^l#lrNM7kK]ӦZN鿔8D-/ւ2 ѱp^b*~R~y׋U +8mX}0+nRCuӟv')(t2{ܘ8O*Ia^.Ux<ЈAWQl\ܲW3^`C>8`t$憦霯+Mv6pª/||M;`(+n9s@Kդ| $OwƆgf [tXjdFu]c_+&;Twǝ=cW[D^jvEs -,HY0B^Hik_ʑ . N쵸^/5ƇPS'pǷR= t[GY5TZWc=ayvq  tBF%+:вG\tVn@L6MO27Ob5`ji +KQ#on֏ ec=] DVb_}&mw Qnv+MA +endstream endobj 9366 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 9367 0 obj <> endobj 9368 0 obj <> endobj 9369 0 obj <>/Border[0 0 0]/Rect[222.06 703.58 404.88 714.8]/Subtype/Link/Type/Annot>> endobj 9370 0 obj <>/Border[0 0 0]/Rect[222.06 690.56 524.94 701.78]/Subtype/Link/Type/Annot>> endobj 9371 0 obj <>/Border[0 0 0]/Rect[213.6 679.58 295.02 690.56]/Subtype/Link/Type/Annot>> endobj 9372 0 obj <>/Border[0 0 0]/Rect[222.06 666.56 486.48 677.78]/Subtype/Link/Type/Annot>> endobj 9373 0 obj <>/Border[0 0 0]/Rect[222.06 640.28 352.62 653.78]/Subtype/Link/Type/Annot>> endobj 9374 0 obj <>/Border[0 0 0]/Rect[222.06 629.54 402.06 640.82]/Subtype/Link/Type/Annot>> endobj 9375 0 obj <>/Border[0 0 0]/Rect[222.06 605.54 450.54 616.82]/Subtype/Link/Type/Annot>> endobj 9376 0 obj <>/Border[0 0 0]/Rect[222.06 590.3 524.94 603.8]/Subtype/Link/Type/Annot>> endobj 9377 0 obj <>/Border[0 0 0]/Rect[213.6 579.32 251.04 590.3]/Subtype/Link/Type/Annot>> endobj 9378 0 obj <>/Border[0 0 0]/Rect[222.06 568.58 390.6 579.8]/Subtype/Link/Type/Annot>> endobj 9379 0 obj <>/Border[0 0 0]/Rect[222.06 555.56 429 566.78]/Subtype/Link/Type/Annot>> endobj 9380 0 obj <>/Border[0 0 0]/Rect[448.26 555.56 524.94 566.78]/Subtype/Link/Type/Annot>> endobj 9381 0 obj <>/Border[0 0 0]/Rect[213.6 544.58 409.44 555.56]/Subtype/Link/Type/Annot>> endobj 9382 0 obj <>/Border[0 0 0]/Rect[222.06 531.56 509.28 542.78]/Subtype/Link/Type/Annot>> endobj 9383 0 obj <>/Border[0 0 0]/Rect[222.06 507.56 439.08 518.78]/Subtype/Link/Type/Annot>> endobj 9384 0 obj <>/Border[0 0 0]/Rect[222.06 494.54 482.82 505.82]/Subtype/Link/Type/Annot>> endobj 9385 0 obj <>/Border[0 0 0]/Rect[222.06 470.54 452.34 481.82]/Subtype/Link/Type/Annot>> endobj 9386 0 obj <>/Border[0 0 0]/Rect[222.06 457.52 428.1 468.8]/Subtype/Link/Type/Annot>> endobj 9387 0 obj <>/Border[0 0 0]/Rect[447.78 457.52 524.94 468.8]/Subtype/Link/Type/Annot>> endobj 9388 0 obj <>/Border[0 0 0]/Rect[213.6 446.54 405.42 457.52]/Subtype/Link/Type/Annot>> endobj 9389 0 obj <>/Border[0 0 0]/Rect[222.06 433.52 497.58 444.8]/Subtype/Link/Type/Annot>> endobj 9390 0 obj <>/Border[0 0 0]/Rect[222.06 420.56 428.88 431.78]/Subtype/Link/Type/Annot>> endobj 9391 0 obj <>/Border[0 0 0]/Rect[222.06 407.54 524.94 418.82]/Subtype/Link/Type/Annot>> endobj 9392 0 obj <>/Border[0 0 0]/Rect[213.6 396.56 281.52 407.54]/Subtype/Link/Type/Annot>> endobj 9393 0 obj <>/Border[0 0 0]/Rect[213.6 372.56 347.46 383.78]/Subtype/Link/Type/Annot>> endobj 9394 0 obj <>/Border[0 0 0]/Rect[222.06 359.54 397.44 370.82]/Subtype/Link/Type/Annot>> endobj 9395 0 obj <>/Border[0 0 0]/Rect[222.06 346.52 442.92 357.8]/Subtype/Link/Type/Annot>> endobj 9396 0 obj <>/Border[0 0 0]/Rect[462.6 346.52 524.94 357.8]/Subtype/Link/Type/Annot>> endobj 9397 0 obj <>/Border[0 0 0]/Rect[213.6 335.54 368.94 346.52]/Subtype/Link/Type/Annot>> endobj 9398 0 obj <>/Border[0 0 0]/Rect[222.06 322.52 370.8 333.8]/Subtype/Link/Type/Annot>> endobj 9399 0 obj <>/S/GoToR>>/Border[0 0 0]/Rect[222.06 310.52 487.56 320.6]/Subtype/Link/Type/Annot>> endobj 9400 0 obj <>/Border[0 0 0]/Rect[222.06 285.56 398.58 296.78]/Subtype/Link/Type/Annot>> endobj 9401 0 obj <>/Border[0 0 0]/Rect[222.06 272.54 441.36 283.76]/Subtype/Link/Type/Annot>> endobj 9402 0 obj <>/Border[0 0 0]/Rect[512.94 87.44 527.94 98.66]/Subtype/Link/Type/Annot>> endobj 9403 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 9404 0 obj <>stream +h޴[nr蟜wR+ >|6@Ԉftf(y7ۦnMrf(ցao쮪sbӵ7Sgg'_mv8?:Vۣ.N./R 1AUE\aQnN].rgEa=/8?Z]"UPp@i]Ώu+치aRvԁ+z*6Ar[s|?.xws/i4-a./p#]9wyyq xy2͹GΤy//`QTUUŪ*զ99p E^v_PtkG27:m"Kbf &sSj2]s|UۖYrutHmL0xhxagBAi0L_0|[A8y2Gu:#G)3RB`Dg9/g%ʚu|ϠTݬobS\¶eÄNK3^wIJZJ͊;]?2Q72ck>7+ER+#R*qshko_۹z3 ׳c=éq6!}09N±0 'V H TXqo}^`=F'Gz}R+֞~B"5bca{@qqW>0|Hf +hśo>z uusCm†No݃L,h بV?t[խ{ ]?Hl)'0=F091a(vL)+0R] C`ݩXD]k&͵F_n&*.]|BEAG 1m4 Lb%1fǧ;UG7VN ie6yFlmqS`._&{/>̍ƈTFBPLcy hCm8N2Ѹ +'p~99CR:u\Ϛ?>TG.x9a?7+i=ť J䊩%u[ߦvK@"8!S[O@Qy*黯 u=C#<%%S!<"p D-k lbDDnV-Zq3{ϋ?̓u>+r> r>U;B[lȒH8FNpB(F?8p]<6h  [ S˅;i9w\?lᬻ<TK,#)<)<\3VFܒ'Fp&$=oлd3ÛL[MrBe1l|{7#>]qq\IgWRоr@Q2cF) +KO%]]ZHk-g*8Q\0yBij{2ۓF[J.cA +GTa2q"/: +s0* +)d MKڎU2|a(ѢKG5?8g"' gط \ܖJs. +B'Vbno=]bS.a +hr')Zb_6K->_[ծVn7\Ww\ +LQn"] qpCۻf.0tC~Yn[KQ!]bT3)S\=ct\ͤ6꾥;!ږOjF;MH?3lH|0>$:iph&0CE|S/o/tudr)~'iga]9ޗο&ǐ +IgL&#Ssgc +xO/F ̵zǵ7K9W>Z-A3~3.=}p|xPBzb6D̙NKѡ<2A‘_"HRhҗrNޙ0_ 7'~7] ?GGYjm4m6fobyHLlʇWZ~D:M>,N] +endstream endobj 9405 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 9406 0 obj <> endobj 9407 0 obj <> endobj 9408 0 obj <>/Border[0 0 0]/Rect[250.02 703.58 438.36 714.8]/Subtype/Link/Type/Annot>> endobj 9409 0 obj <>/Border[0 0 0]/Rect[222.06 662.54 350.94 673.82]/Subtype/Link/Type/Annot>> endobj 9410 0 obj <>/Border[0 0 0]/Rect[222.06 649.58 370.92 660.8]/Subtype/Link/Type/Annot>> endobj 9411 0 obj <>/Border[0 0 0]/Rect[222.06 636.56 355.98 647.78]/Subtype/Link/Type/Annot>> endobj 9412 0 obj <>/Border[0 0 0]/Rect[222.06 623.54 404.88 634.82]/Subtype/Link/Type/Annot>> endobj 9413 0 obj <>/Border[0 0 0]/Rect[222.06 610.58 348.96 621.8]/Subtype/Link/Type/Annot>> endobj 9414 0 obj <>/Border[0 0 0]/Rect[222.06 597.56 385.92 608.78]/Subtype/Link/Type/Annot>> endobj 9415 0 obj <>/Border[0 0 0]/Rect[222.06 584.54 433.38 595.82]/Subtype/Link/Type/Annot>> endobj 9416 0 obj <>/Border[0 0 0]/Rect[222.06 571.58 340.98 582.8]/Subtype/Link/Type/Annot>> endobj 9417 0 obj <>/Border[0 0 0]/Rect[222.06 558.56 421.32 569.78]/Subtype/Link/Type/Annot>> endobj 9418 0 obj <>/Border[0 0 0]/Rect[222.06 545.54 416.04 556.82]/Subtype/Link/Type/Annot>> endobj 9419 0 obj <>/Border[0 0 0]/Rect[222.06 532.52 439.2 543.8]/Subtype/Link/Type/Annot>> endobj 9420 0 obj <>/Border[0 0 0]/Rect[222.06 519.56 452.88 530.78]/Subtype/Link/Type/Annot>> endobj 9421 0 obj <>/Border[0 0 0]/Rect[222.06 506.54 401.58 517.82]/Subtype/Link/Type/Annot>> endobj 9422 0 obj <>/Border[0 0 0]/Rect[222.06 493.52 390.6 504.8]/Subtype/Link/Type/Annot>> endobj 9423 0 obj <>/Border[0 0 0]/Rect[222.06 480.56 415.86 491.78]/Subtype/Link/Type/Annot>> endobj 9424 0 obj <>/Border[0 0 0]/Rect[222.06 467.54 397.92 478.82]/Subtype/Link/Type/Annot>> endobj 9425 0 obj <>/Border[0 0 0]/Rect[222.06 454.52 453.84 465.8]/Subtype/Link/Type/Annot>> endobj 9426 0 obj <>/Border[0 0 0]/Rect[222.06 441.56 418.38 452.78]/Subtype/Link/Type/Annot>> endobj 9427 0 obj <>/Border[0 0 0]/Rect[222.06 428.54 415.74 439.82]/Subtype/Link/Type/Annot>> endobj 9428 0 obj <>/Border[0 0 0]/Rect[222.06 415.52 475.62 426.8]/Subtype/Link/Type/Annot>> endobj 9429 0 obj <>/Border[0 0 0]/Rect[222.06 402.56 521.82 413.78]/Subtype/Link/Type/Annot>> endobj 9430 0 obj <>/Border[0 0 0]/Rect[222.06 389.54 501.3 400.82]/Subtype/Link/Type/Annot>> endobj 9431 0 obj <>/Border[0 0 0]/Rect[222.06 376.52 356.46 387.8]/Subtype/Link/Type/Annot>> endobj 9432 0 obj <>/Border[0 0 0]/Rect[222.06 363.56 377.46 374.78]/Subtype/Link/Type/Annot>> endobj 9433 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 9434 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 9435 0 obj <>stream +hZmo_/Wqp9M?P4c# +E9.Eپ;°363hy7weՋӶ+M7fx}y1~7y̗K%XMp"?j8*'73-LOfieN,+N~ef3zlTٴ@Q +%T@eVYTcc'OV V,21*5 r(UΤ^CzI3,'\EtQ"5(rՓIPBd-XRc`h,XIZ(Ԋ);&EfvHXܥ~ +݃~np)\Hs#T^ M˶?ԛ^̯/:/0a O s؀F`M[TYzkp]]P]S֞_율v`4+$U0A, +6>E@R[A؈u5њhJk=S:5 ,-ʤY. +DTک4s%Nvh)1ml\#ptxM+)&h!ԙbԛIz 6"zD:zC%acpYH  R`*d b$.~B{DcڌnRcIdL%i5Ѡ3SkC:$\NI \ iiGCK恀l);kL@:`A0JU eN(~ ؑ9&VIuFrSWXLat +Q*1cBSj72Sv}WrJ4=NadHl(2r'ѢIʟAlQqd(gC!φ. l *bu* +s\]M(hƊgQi37X"uYTn6  +mx)>lbuc`Uj.R1=2ZDzRg :B1UesO*aX 3]gfT)d# r\g +‘ ?ORM?w!Zhxfwe7xdElŌ"TB{"g1NyK͢h`+|? ]ѩR|2B$,Amx>r-k=!ؤ 1c"ς(>* ++߀&KΧX%S5)YjOۚ]zEF/P#-\!\8KuͼyM5r'*j7V@F7`( G'zbN}{5rQ<&hO7S8.O:di!a_NTڵ)y Ec z_^[&u[MѪ?s82JAwAO~@=wvz MԌz7CJ^ִ 1 +QB\BZ{E+W쪖MUa-;5|_>Em>.?UUv?;6|vd5>B + ׻~7u @SǢ!%„oÌ&Lk~vݞ۩DZ.n׌W@IōN~mnCkmK0̣c +$`\{ +/7?.N*f0 k rMY(0Lf}㖉f +䞾쁶vl'/OWNˍP2Xn:gP^bٵji A *sclru-O}z3 KǍCi]n +l}mc"GA] [^]9|=g_YRy NOtըcPŎT+_" +n 2G-y_.(UF_aC<uOcwTU7G +7?`+I4Nꣶϓ""N]S2%6[f|#KO%k(x. S%nB-]j@z;XOHĿlŮf߆_K]ͯLѪ'UcURǸ1Xf.յmBe028O^`^ 3o%vtጔ4tFrhŌ*BUpG^}+۸J_1V;ә^P`7or0tg>\AW nQ~N_1(F/,%_<,A'筂^c + 5&rtl +SX;l}8Ы +WZ]-K9ߖ}/ei/b=p/cPQV7* q/^XS?,MﰌWhR=}exU!uf x o(( +endstream endobj 9436 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 9437 0 obj <> endobj 9438 0 obj <> endobj 9439 0 obj <>/Border[0 0 0]/Rect[512.94 86.66 527.94 97.94]/Subtype/Link/Type/Annot>> endobj 9440 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 9441 0 obj <>stream +h_9rSsX 伇 !c^8z)[-lzXbJdbχӛ7O_??{?ӯwx{xzRLOv/1דsZ8=|'NOj<_HRxtV;|Orǧ;TPBv!JT}. oҧxMZuO:>T|4' +EW!~+=^?3m' t|$|}&΁0!j^yRF__*/o$qZ$A8w*0} F'hTҊ'Bo˗?aBW;~% 4ӯ$Fa?ˤ]% zJZ>-mLmLm%}Phֽ訥@4a:ЇV%qb|œ`l[LmY-c;b[;1~r"hI:WWӕvx© +0 +"ݡHq +e⸕Q 4LM&I aa܀Ԉ$S3-HV4FzIɑ߁S>!hl43j:TKc7ihJF+P%E"]%! R;>@ QBj9 omd%BMԄ+&}O^>LZx bw EΝD jkN .6^OIf͛U4 K +98^NKsV3KO.w#F' "EL2c$jHt쇆?ߢ.Lx4mƤ.0O)$Ŷ>?6bjM yEti{jӡ&WG]>MiP,?Igol}l8l6=m{_?Ga+,httwD,,1Eis}0R]WO/?ez{{[zeδX+,__KQ?jns(zBD%EJL-bg=}pO.68:UhJ Ţ7s߿PE/UD#Ey3a狖0t`T1mte;]-OW.9u<]\m̠] bUNUSUa|{NAXi|ѲF kl+*x*m7[<`W-;h@w W6m`e;X V:0jy\įA]}ʵD.ʼnV`ӫF(AQA)(b~a=l3ڢAHdxS#' SE.nm֋5_l=ϻPFN}(PVbYjEVXw VuX6V+c58ܕr"< |1be`\n*0ʘ^j셶~笹Za;W +/ȦA>T33b>T5&/c`"J/ht`P (Vxas>5ڍ1x\9dN2LJ· ,bh:CtԝphWsѮ}n͎M|[+a4i'U8!+Sw[:!8:!2 hxJDj.}F˺F_=֝ +oǔNkX;({F!SSj>GK`୲;VUxZ;/s2W&b2LY0Ew^_W+c,_&"{ze/-LLEh}*\nRψJBe z/bv)X /Cr3g2;jO~=k5[~Jz>MU^%X(ϯԊ>d3͖ϯ 73ۮU6m\e;WJWL9Ԯ4dz\d'{{ ?ݤ9>h ++ m\R7]c(^o)""Dj6bLDPaː99?FyˉcE9sGEH*s| !BŸ5;{1 +)|;T WCԊ8`< +V-`ly&u/v_x'>P+a(g/V ̔7 +MV*ܭK8yʵV`_c칄gsWZY (P,a)rjcڔKp |Vt7P\؛ B:Og{v+;޴ ۪ZqKnt +żR,EGoc -K}+Xryҹm{@,QEׅ-2@;D9n>w*.[.$oTyyYo|, <7:{::ytD@2 +(:FR/ Z[ C(ڰ٧u0bMJ#W5GY|'5'ܰ cs.˸7z/̚T[Yn:f ǬykV<q<0ˮ $m{SsИ Acu~\+.fG .*VyX/AhۣEcLq'6sAl0HE fB^3tRÛ/%.Ò}aE<ȚS#^s{bJu+18G bpKVd?o/z5e8{|ͫ-.o%Yfm7e9o,r*xs9S1ufƙrVug:g%Úyϛ\g&!T ֞jA pz^"L?Y{y#G+Gt-tenad;r7>bVZqP󠺿_ 0(p{b%sJEkRM_pb9ȵ'ҸP@{ `RM!F./&Nq%%qm4t#;=|~W7\`'`$-.-H~d 0N +endstream endobj 9442 0 obj <>stream + + + + + + + E:\Banque\Template-Guidelines\Framemaker\FM-Plug-ins-ST-logo-2020\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 9443 0 obj <> endobj 9444 0 obj <> endobj 9445 0 obj <>/Border[0 0 0]/Rect[74.76 87.44 89.76 98.66]/Subtype/Link/Type/Annot>> endobj 9446 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 9447 0 obj <>stream +hݏq%߀30` j tgr=$gX+A&b}͛O㏟ۻOwOO0]M&A;9}';=?w{̓VIi< Fh=ӿ#aGI1N݇qRD#T-cR3ǥ|W!w/>[aHWOwsKgA^IsN % m +'|I|^nLt"L!`&8ߓB~<?VKkiT$͢'ٿ86ZJ'o㗏?a~x? C% +B.d;~?F3eLm K08{ǖ2(~9e 7_ (NRn{|r-L^DNmPA8OWW /WR+%(-ӗ5sCFz'XҵOQ8)78}c?YON; | "J;E4AzNsY7lz KQ~P ++*řxWY -rq|lj+nO97U,ԉ&~ݡӅOLӅN ;AM'bmﺹ_>M,B^lJ2+4-P=޻ܞ?_E[k VP ^"mGWj浡/>]Km&1dmZM+v:hI`gESqw ;+2vW6 &C_Ju+vB;fuUn  šZZwWNeg~mw|>/ɰFIVܯa]u:bNKݜnp7\m=w mNۄe<#\r܎PX5A.E##!WmFN5A.9#*X! +9f;=x9)K@ĚΙdaL׏GN\ڨ *5(SfĆ)ǾZL1i1Uv:T)3cJӕv;LKֻmL>SdW}!ݎ]wh'nk`ن#9و37Tn?tX!ds™Sו#&WC6cuma4t|Nb)">5t|j`AUcg6 T):m'q;L58ɰcvt̬c(R2Y,zҗA bD8mZIJwY +^äТk5hy~ےk:-tHVl2DW]IqJJ6Tmq#' %‹0肗hܼ+8#kPZ$#L-x=jHj'C$/dk],YP*wNNj'CL &VNRrrg^cXCdu o&:NR{"V@WUI44E:NR6 H'5TthrJKW_ӕU$5}tg%w%FtFBat_+OÈ0OѲ) #en#:GNJQE:Ge탛#FJ?PHDj k^xS nIܦs\};'X2sܩuV]syr kwSm`D]MI:h8GάWnH FRpǍNS:iS6P +9h=-t=pt8WwS`׹C\i7YwE$~FStNvrx2}/ }Ojc{%}t}oT?a^piև1{%|ta-ѕPG~qώ/o8ު>nt"D;x^ 7s{dm)]hgRQ +D*z2~Hí8r])֑F(XH.R"[[wiBܕ{]hgSS%ahhа4v9-@{Ik?1{'gоRpߗ2t)N@2M" %a`z;KVڐۇ+F0}CJv:F4]^PUKys+ (2bc-ˌEv:IS:h:*ˤ ˔ȇ\vmnTye,ٍ"e@;R12te #cG,REϥrc%M#!#7Tː`ejwA|ü4r0pA +g*[:yz9cQf򾜾 fZVyV {EOj+ FJ{v"+YjECY@BlU_?eT焯PZ,c55c9׹a2T`db;P-s,w5QEU ЖT[)ڶVY#RmX]12k"U90B=- +*[?6[6h`y׏_SOß?:zxz NLQf &*1OUS/lb+_<—vn9rҾ3-9-e&Rv41 +r$k1j_b"rZI'mRx C#2TYǑ2e9[C$4]ґe; c\z!v K``)F3N!xK찉F^aZu!R Ʋc%vw1v7 ,;h)o6wˤ!\W&Vq씣b!v,nŽ]veR+?c1,;~\ +;l;Lܕ}eoemK[b07c0LN؍r)xC86"2ʗz]~_.G2_.o4rc6WKBь +ߚ6w0ePPcahQl~;/4eX<_.G3Ǝ47_n{/&f/{6Ow._o_Vka˪9jv˳e5|<ίxf/Q&ܕ}eb_c`mI_9e_X'_VeK&_.G3Ǝr`ˍ~aʘC&_.G3Ǝr`ˍ~!|䗕C&"_.G3Ǝrdˍ~ivWװ +endstream endobj 9448 0 obj <>stream + + + + + + + E:\Banque\Template-Guidelines\Framemaker\FM-Plug-ins-ST-logo-2020\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 9449 0 obj <> endobj 9450 0 obj <> endobj 9451 0 obj <>/Border[0 0 0]/Rect[512.94 88.4 527.94 98.48]/Subtype/Link/Type/Annot>> endobj 9452 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 9453 0 obj <>stream +h_7rSsmU  Cr9pj! +dvۧaU;{j&Ūz?Oo߼߿|||ݽ?7?ݛO?%Uz Y0(]\چ&4hO.ַyO~:է4O[MLMX0pzuJ6ݛ|o?7~ti3ISN?>QE4z6_hNyO_222,ڭ|S,*hy'qX4xaQrubz%PTv˚f*{~vLLOD.eL\V5&r%=޽֋.AcnU/5F#:No +n K@!? B8>=לT{q/?^Y :;-)UK3 wG \>GhO=z(EӜYLQ#lE*DL䩣)MQHļ^ #*9KH[릲V$%bM0u+/E% _ &/;2.@D _˰uk O?-:4HyЛSiU#o/#Oz$eixEm^jOglwsħSc24JXHn3FU-7&a +ni,x::\*sK.#cXlتn]@%%ZBzR;uGz)oZ#YJ6M}+_oݿ~uR#-TM4+M")=H#-%X-&OwMI;٬MWR&;QghJM[oݟ +={^)ϚTM?{=?5gg\Ǧpc^-lLh$ҹ]~7vP]O5p7ˌa!!Ruc'2.ˊטyy4Scdn7qS_l$P2^Fz>gEf| ̂}ToNV-*TkVxA,x~,NHT=KPa.Vfs߁G 4,00zYa+B~Ef` 3 T,u6@]م!ʊu#!l:Ƃ@(zWQgRg6HK& } w^ѰՇOC구x.r};{L0=YtIoA9Sud[VlM/By@;?0{ 2.G bݓڂPw@`w)ҡʻkmhǴ@fyųb<˻5;HfsDV+M3AA09kXL9s68w"_5;dƖ3v8SpCR,0AU.qt,uR{^RJCUqaJQvc:=a\(Q+*6A!`?8/Azj{ ^h#՘$ujqjOle9  9 ʊeDcvtpPV-\:'7w1SocnFQDݘIԍyŨ{%nH)EԯL3yA#܌cZ:$v w+٠2 w+6ĖTv-zYcch5}jG1jcM1R4(55k HU]vXcN2nbљ%ƇX++f:'`nbY f`YMvPoXc"CY0ɚa" ns0yo0l* &mnx/p;bVR$y :(AӸ.v]w#1Դ.nWAnxUn7/_y3Λ3ӊ!#w`/{>qFJ 5 +n{qO.oÍ#` S=iZq)i$Ƈr3&w&`?`&@ K/KQe'Q0&}v4ͻ =-pFۋϹ@4i(QFUB7Ш{ +ƙ *@C\3j7pIG"Lpgw<њ-o2$U2t4&Í] {pcN|5wlpm q7νmt0Lw.TG;S c *.js2%(` wNGw75S>TMqfɑ4=1ɑ-.#G.Jr9֣=&-1 :TѠ?<&徕Wx&V0Ow™(6{O׶D~b5Φ?h +zNSodb/ oyD՘qtZ!oYjqV6=%~g ;G~qW֊xӥ$@p9c2Q~^2'ʊugHGx-p QGq$ίǹki({!tp.9oEC`ҐxDw'lΙދ<,A9%pJ_Z'- h Xfa3t('5eC8Oj8Nj 9Ypwp6əаh $ЎR8l{L{Lu *[-ΜG4\ D-\Τ=("J>ݛhuT'vӝcw6 +`L2fd R*ZdpG#~|ܬԶݔJ  ΋G;WG<´Ӆj|=rYq=Z5zE֣UzGz؏tc3u>qZi:ztӅF=d6ʹűէjw֮Fa` 7O~A<]8خ $@|աܶo%u8Y!q{,ESm機#[hq=v^Lʺ:BӅ,Е1(T^{6,bTv_wlVNd^9KmuHǗ>)IQ=05{H^!v3:Hs7dҐ:HzTp!"qJ yජgT:H3Y# N([ZeװĒfĒH %L'Kf;/'^}%(%j"J\"֣?)nw'X01Rbvy"ӟ{ f-poPM1 Iك!x$M7L<䍰NCI1{venG;`43xD4[u[hgu0yYXe 0 f +endstream endobj 9454 0 obj <>stream + + + + + + + E:\Banque\Template-Guidelines\Framemaker\FM-Plug-ins-ST-logo-2020\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 9455 0 obj <> endobj 9456 0 obj <> endobj 9457 0 obj <>/Border[0 0 0]/Rect[84.78 88.4 99.78 98.48]/Subtype/Link/Type/Annot>> endobj 9458 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 9459 0 obj <>stream +ho6o f,pЇ=$dC6fs[?R8vk{A02A,gQtۏ_O~ +fu_9QcP1:mjac6HywFƸHt_oo*$朕v177LWP{u-\׵- "%kgU'A +5czKd;R;t 5=6.T:9kݛ|T6؁?⭪`{S?MݓMkT*q1|}LJۃzw:|"kt ErGjډJ٩uWe[d[d}hmu$M&euhtMNgr&"::X6rMuvI.gUk# o #w +:X*Ȇq)D۠sQ6u3RAtIuGu_(IƾH濣Cc#aXH_O+fǔ}hxizHvgv\(nHHBNںR=Ey|H +PRu,{/s1E6^؟kON>'ʘ FQc'cW:ɪ 9a 6 NSӡM!tɋ@~lFUj֫#{e8䮈!R&o\anNtH3Uuz28C\My_<"O7BS(c"ӰX.v]CɧZK)@yEŻCWӠle{>-9F3>K=Ah)Rr??]s~{e ݆3͒gds_5}fW#f]e?4Mñ;"( cwUMc]l'LQ`0-$B'd LѲ6BUBǀg24~ +G3;ih¤)}č9Ef˶(.;~~'vc^gaoIt :AW @+:t|9kxk_Vkl W $.cky#u?͚vہQz'탌ȀWeBZkzJe:@ŗr"bYF,F_3͊۾Aʈ!ٶuy"QQ7ƚK8F,M8=?R/DM2άٶ>|p^Z0txwؑw*.vmLvlW6lʩluFA*ʳnli7P9ؐAa!Zc'reQ*u\A8q%Ij&w5mplI9oZ]wJXefV豅fgMðQچE|ؠ㠓Uu0> ZNJTAԴ4Qu=4!"!'c; 0 1ѫYf1#g]ɫ(*u tLxDþ-1 9Ljx$D 2">VD*GT#gᕈBdIbBܖKB.칰һ5%XBmСR/KNRVUP9pVY(7 Beދ2pMeO˲1&gcN,$f2K4ؑe8Y46ltP&r5QF(Mw,\:wMtlɬ^C֭K֟ja&4i jrfY~&#vy +BAC܆z'^<,եvopM]ow(k6f?;-_D*H%~olWjڻrG5H }rfh" \axz2#(˖|Cΰ%qeRacRա)U]ŗrذ| (\5|y`(3jZ@*wƆ `+5 +endstream endobj 9460 0 obj <>stream + + + + + + + E:\Banque\Template-Guidelines\Framemaker\FM-Plug-ins-ST-logo-2020\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 9461 0 obj <> endobj 9462 0 obj <> endobj 9463 0 obj <> endobj 9464 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>> endobj 9465 0 obj <>stream +hޤˎ_G)vE,dv&K!Y$3J!|b_?}xw<ܵesYs^ڶƸݶzwZ׻_-$0ϕV"aW9ֈ?κY<0hA ߵ2}^Jk#3{Jhx _ +quY}h-k,S1oky_Zv`i='Sd~>p`>0zZz'JSܚָ +JY\Zx߾,? X/mi'j%50rba>>}y󻏯? p߿glZtX|FvKkknBY.hokjq!_\^RbB([uЖ ,d=mTH@ߟx;΀|Y[ +WUkAx'o]{[s DARrgۯlJ~TM)v2x.whՃ_ߠGx?dd  j0fFe" - 2kdQPdQyGF ʎR Ԁa!n8 a@Ģ ,LqɄ]2>.it]I5F귵`ok)n~[Ti#ixyӑi"y<M< k+_-[!~DAeȽ-%2T,jIi(+!>R B^ ߬wD0ף +:V'tA`4V5H%4٘\i%3죤:..dO>hё lNhk!"`֟ i}cT* 1Z4{6) +#G.4NUG䦁 5"@]̳D%+dLEXB[F*`OJD*chBh\ -M算1u$s?uix !Wi0º0 I~)7h2qyaɓ3J\$e H!N,#xqh)gIњNJ<&kA+y44T p{O IxT($T?xiAJQPgÄ&4|'0(qDqϾ03f]3nҌ@$K$|j(-Ġe9&舷&%S4zeJxP4.'{A}b跰]1*`z +s(0UwSU?ô̄Rx@z]}IVsR>Je֯HIsnh;]^5Q7#)LML^l bN׮ec cH3&=Ve6)*׍$?'ނz1_ˋ[ +"[@y=y0Y/wć'kQkC-7ݙ& z?d*~g3]S{."M JN(7OL(/[\'Z~(ST<ՕS%n,VTJZ U.x4ZC {XK_AOݹ=VnnF.6֣7v}'ռ8gۺMT8=#հ510*KvaXh: nRfn㈛[y-ļ:C*w3, OHX;hZOⲼr1S5 re~ε?.V(uq!b/JL$WEa+vd٦#ɩ"գ(*^T7>rP?,M5m,%FsgI6K&/WV &NK!^zbYFKr~jSWAs]I1C"q/FQY +6)=MWbMv~8RfNV)ح,egΧs=,WT3o4cL3c]El\ma0 +P3}Ag9+k +;kעoK#ѕ:9">]}dȣѦXUBq%մYbg)|+f Ml& ++jH"H@:YNsK<@m*4>O2xU%nk4'[AouWf} |~_ҡǷ@͇/G{[C}_o:)l8‘=Wsc1|u啕SGSQӫni)3v.G\@xwvxCЇ4rˢǮ25ZTy@ AҡQ fAhM6;=[TJ+&[n"9,Qg&&Bh?I/a>;"3eꐗ;D8X[Uhk$91& 00g& +“"Y2qfSbtn^uxjyM=OS.h_P,/v_?Ibe?Wʔ˭SK =x +x{D1zO`<"d̯rI~ b3M:^-6g1I/`Z~_M'n 5?,wÔ떑~ǡ<A?n˦BW/Vڃ&ATA~0dipcbj5VE ^ +endstream endobj 9466 0 obj <>stream + + + + + + + C:\Program Files (x86)\Adobe\Adobe FrameMaker 2017\startup\ST_logo_2020_blue_no_tagline_no-invisible-frame.svg + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 9467 0 obj <> endobj 9468 0 obj <> endobj 9469 0 obj <> endobj 9470 0 obj <> endobj 9471 0 obj <>stream +h|yix并"iHR'gL) %4 +ټ./bv6.ݲﻃ@B !)]8=32.;zy~Za}κuyW W¦C'Ky"n?F{_ʟGG}fΆu +?剙Iu3G d2G8̆굻ˡ|ٕc99999NNdݺ999 9$guׅ}ϯ/Xx}?=C6nÇ EVDcܴ1 +O +?\o6nnشmӞMG77]-m#ߘ--Oo1m +m=ukb?;<ͥooߎ}otΥ+w8oW{ow_i0v"?=^~;KyDnRV)'=ݘF SRs :xjiu!%U*6 kjV2`i.B 8q5p-_ Z> 'z+YbvNvp7q̭D$+QR(cJzo Ul<)I]OYž0FD9C)Ky*(7S ȔۤFUZW=ΠlqS?sD=I <Wo|?LDgoBwV_?y.9{0m[(nw]#{eN/A#Çab{̓vu{}w7*5Y~ S`OZT~Xrd  ߰ml2kT iTMiaZY%IoY!|8 w0b#=ZasBKo͌%xC/DtwXk(YW +hk#`@dvRqH7r d>P+uj%EkgCSnӉO&L^nfj~>uu`x5Z=~Yz yr`t .\'C^T +U]1'L5AtY=*U4c bQ(&T$f< &`އz YG; 7R)*H#`Ҡ>{`X5kq,s5V՚&>Ev;EةÐ.d +GQg,M)8cÉĨd{} *Ey_$ª*G_VUsed e`Io(C-c#ҨiZR)AZGWɼx @ܥsMZɕcfpw&zD> <8l<4ˈӳekv͑k$ŊG:2Fm&);3;T*FrZam3$&(wNzx;D$!odjD%-gXH +EzpV˒ )*ԨI9|_*iT2UFӹ|(: +D /9Tbr}*PE"?}Ol:Oi2AUM ]bIKppoЕ\ s cSYH_HzAܬJI>~O]h `Vήn:%U*MFo/P'[Xŧq ,bR7(QBՐiTJڡ3:fx;B]TC$>$2.^S =B)̰ND:(3= 2o7͗ @eGȁcnV̭'4_:D +ȑ6x$7話AfnU 8=I]m3D~m?\EjG_ONkH*D'0BF~}{9B7fאA̩'q w<&VohV9jJ=WD[h+0E@?xtT' yh63*`߯Vߢd%:f %WM//2&]e^zޜYyj{fٜ^<}.zh"b-uŝX.'.C÷4+(ovJ!?C#(B̌DCؐ(UB)9 +?-.8]. {FfOcs⛿ +43Ay%L#{ØoMxW݃j#¹nKpB]=gXկqK "5Z@qtr{k,ˤ/IҗBudS5VrBc{ׁq4~lrj^\V +ٸszWMg?6❆{詖$i)MMHAad4vzV/BMϢ3Swqhp-0*Wi+= +!YM j u!!*IWz;!ב)oF)(g }T}$"Fe+KgNaA< ]ǑjKlE5$6 /GO_BfCYw)u-nw0 +X SrvNʦ8+!b9ǠlKyG3dWaGvow g:#J7)DVh4r2);rAH iB&l~l}r>\miRQ5/d6V»}ђ73afm%*I3)ޘ .Ŕ#qz]I@:EzON`qkRe笵Ijn5KOmB!!g(l"1̇dVv%LܹMúJ<7,L`T ;ִZ5i:Cr =kOEێҪ\ G,+pzbGfvkԡ:֤@ ] +L + ulٓЮ._޵ >e$%˻uD%/ߖ-h mkAm/@n d#A23&>..94N:K u:0}-k&xq4s#Nr`2(!\&iQqUId*!Y d,c.o{06+!7h#g81^W!݌>;>X;ez=dj :H!m|WRAhh7r़+:/>yFO% db@J` W]%۠$!H$v%Rٲ tr:t) C@0Aq"Ǻv갇S#>';ӡmAg4hZT-6IlfmjJ+5 BGW Y^93m֣pPZFdhlF:;<ﱔ(Ή\Dzn[!9[6dKqQ+F.t:0o9l6c/A:BhWu;qg;r&'n!,RJ9hq͐Ŏ_ AO Z1iuhIʛʛXRVޢ8#r// OfBBAp-†XWU=Uz CU>+bKX$\)BeL)>/+!E%XVcg!f~䚏Ϣ(s. Z,F\Ȱ!Znt`m/?ĸM=u[< ά9(EzQW$,mXw+ dLs[[iVV5BS=LQ +w 5m Jp({O +A]C-$ +NR\M9iNh/%hX!TL;9&wi|-!nj'HŐpK6d>S Ǿ߇?, ћEA(6Z"L|؏ IEGlٿM𻚫y7_?Rb'\׏9rN}hM?_soL_d +endstream endobj 9472 0 obj <> endobj 9473 0 obj <>stream +hTn0EYRc )H,P1r‚6R;\]q4 GhZS;J" u[ itF쎦!M|0rz@]k.0;G$~afY56B +\to|ڟF_` +]a.MMDHTUXe b VJsϪ37I׼G+ԞL[H/~2"^^ iB5wo7au:GKrrohj +endstream endobj 9474 0 obj <> endobj 9475 0 obj <>/CIDToGIDMap/Identity/DW 1000/FontDescriptor 9480 0 R/Subtype/CIDFontType2/Type/Font/W[3[313]11 12 383 17[303]19 20 546 36[600 589 601 678 561 521 667]44[373]49[667 708 551]54[557]56[656]66[546]68[525 553 461 553 526]74[553 558 229]78[498 229 840 558 543 553]84[553 360 446 334 558]90[742 495 498]]>> endobj 9476 0 obj <>stream +hTRn0 >v$auZi0QC~I@g=ěv7۫#д8U'<uSu@0bME.9n|-*_;F3,*?>]8%DEW١#r I_`B+`2U>ʉujԗѭң$!WҜք'TFNs"i/v +e5iD+%# !MrAIAT)f + +"+B0ik,M_ע&ks h5^_鍟S( +endstream endobj 9477 0 obj <> endobj 9478 0 obj <>stream +h{y|TU:cU@Ab@àA#I! +ff +P H( +PJ76ЂS7J+8a4eygJQ}/ɗq)DԈ*I+GꞶ/s_nBhAܛ}KxDbϦL.lş"!A’%:2yҧ Y%75 +SfHdb3#N}jKjoXAki3mlt.m'U?#aZ |LӋ +m-.5VU?PGI%LnQ9G!ZuS]RCѻm^m5]m)uw)7Lb>PU˴=EK = Mgmu<>yRjoȴk9GzDݥe[հ]յrIM1e4 㱊րt?f :AwkE{R +q[)w(nE oJw1ȩo)ත>Wk׏t#*oOhޣoiY3gO6uҢ'M̟0>3zTƎ=o޽z^~=Ү{]Rs)%ڷk{%[lԼYĄ&y.5U.JuVW7999U/=R&Y1EÔg k(05+IaZ7&)d?{jOstMe4dJ=]PBڊ%:E8Ԝ5*wnVS +DIi^VE渚.%lf]^pFajl UoJIa>Fm!-%{hlF_XG!)#{J"92+$y7 4;45<)W eco(~fd :6hp(ۏQXLtu]>()uN+vfO󅖕V6S01 +K%%vYтA d{a^{#!2N[0}ž0HړPqOE=e> Rb?wQ΀3bI/ÈWM௰Or(1s<ٛjo՝fD&D3&B.e5Jը0y|UUE* t@\`(Cʁ񱇆bXEz J/ޤs;a +oRD R1Njan;NYv#&c Hxh2!MGE#g"^ ;{zz=2.B>Vے|$Am~xlQJ6()qzQxd`C^4pjr 6>LO4&vzGYi(?4ޟOe;m&(J@K- +JXIAEe`Z HE'RQPMɣ Ys +! ddR.R +J3{;A3љEIy(GXe$ -[ w $Hߗ+ g N ٤SQX_a43ȟ9nr˟ )c*C])*`DHYdYP[P{\j:1 +<(\Y\~㼮!;R ǡ8YR<#8S1x/S ST.K `.uӄug=)Kġm B𢲠=Hx؏#rAzvHH^$Ҩ' ݍ@A·D&@݉FhQǨ0:m4ŌDyyXhQ 0$ dFYnegwMj;Ȼ ibݱEp(n| xGTSþ2Pf8o5TAACCQXְp}%ANgy)QH8>Ei '0 +rlarx7\t\@'{[d(D˥(<ϜP[rdMᙩgmPw'\+ +`*#Xp@ݟ\U !fnb `saqX0h>Q \XpC"_XY|"o+FKfK,WC~6V`JPWw"ޱxl"B/|! ;a\ +'[3#f+.DJEbuĎ-H',BBi=ÛrnҶ^gl :;VVMR͆Mb`AVjD N]}&{Ӵ-J5Nst>>20M +?P}KK!|p;1@1yԏgv|}@3\9t:A+ݔit8'J4MPNJ +x2< ˖evZTֿۨ/JKAPb}um;z9Ui5N}jj+sJUi67Q8zB?Q U"ivq[6$(Wr~3o'~n9 ژ~6Цyǖ|싴-hYDKtn~'ܽbrͤ*M') ϝkWn'n&9 =emlzR_$C4c[6[%۲i|,Dti@ ^A^ux|28 ( 6ړ2cz{F /-ً4O@wMǀ?qYNQ= s0 c\'XN2y`<;%MtUpcY}Q/$7)Si{VP[{|B/`KEB +]LX4fo2j_؇kfk{A6Zޏu01Iy%r{LQ/;aC_l3|Hl4S8Ub`)NYhwk;l:] ([aUuz0z|R&Mt!{90 KD^` knSз9N3{XEg ߣ6$v(I]xe~pE4V65^L2N3S1ڙЛːSE(Ge ++\u,\狆hzm;cv{c1ilr91HiH:D&4M\2*q R@>Hlk-꟭-Xs'Jy300 +mP7t?spZ'kk!;-~uok[r'k1iK*APg=e͓cw1k|@s4VFzZuxG4Dj)|dW-zkqw)yHY D#T1}X?Q;Ÿ1Ǽc^o^cڐ_܂'sC^|O>[[Q~\.x*m%s_)OЖo%3;|]?ox*Mzܟ#z7돫Q28;? + J˄Lyݖς~/SAWYpF\GSW{GeP{˿~yzP +2t3c/I J}]ȶ!?AH #D%q>Vk N`>YVDc~y^A[&ߢl3[!d}'h6.חfC؄3}z6+(}iХ:t~yuAޥ(EZ[#nO-d{怾na a x,4KRy@Q?bZb~9y6Ό@]8>`i$@[%@A?OF9{m5:jeþkl?+vmG{OS#m)Rz2/F&9kWJ8# W.5Oym3tu>T)J6;KP\e{v,,5} w[=i1ducЄ(*d#K}Ҁ ꌋbi:?Ik~m_1cv-UOw5o6X]1/EFr8\ TC&\>M:Jz-SvQ6:]"mFmmCclΚg8#<㔔8> ;٣ae֣M7LJ{jj[|jǯ+[ts>Knn }eXzg{ ;*͡g:ulhhCg3 {%wvyC]{PuqKܒσ/!hF7) > <3зO q>xߣlɆip6}'$ +ml\\w:6_ 5Ն߆8 Xx``&0p {d帠M6;r/zD=%<BC =leæB>*nH~ ĮLg3BF?@9P"1Nʭ4@ձs7y4Z 0]<mfqFB&xNJܑYtZ` t;xbnŽI?Ծu hS@\&X sk_k, Pj%^mm]zCT[g\~ f]WrD +Y&&</cr޽A0@x #zJξBLi|,UX ]پvFN~!t{m?ߡ'P8{}:trkv/Drl #z: {3}m_9v3^6>yx?f'[Ÿ.F|gSkOOנOqGX~vdٗHTA7^9̇s7ܐM:{q7"ݐ 1V{tc yF;|z~amNP~[Hi.%gwHk ;B uO>m16P:{23 }%=v8T_O|]}Tܽץu%R CP s.l\}CAWĽ\б%/2"uVV!ޗ`Ox IOx=0 GJWFYvJFgQlwwSjgA!Ov. Pg碌}hˈϢ\G{qiЏb%2sgg(rͧL)ru$( pA+{NCk^ܯ.2@:I-]^j|i@/dwUnmށqmg~ts)€w(}/߹Fθ)AܷzK_se=p:Y+"W|/R>9}صRŚ@{1|H]-A\i6Ww8\^J`"A@O$ʺx.[$vhITP$U,MRw!;ȊM|_?C(+t> +@Or|v>Ng u-=өkW惘ɣM@p]"WİOSG+b e=g ~i,43<aY->#l=ha=Йex0.Ymoed2"*ŝ@*Tjiji$U,q1Lĭ:$n: u7_oN]x.A{C*r!BG?|'.zN96)El!}9yQoePP'v! r՞@2 Ro#p7GeO .\p +1ܝ$ v+_q\_ U'rsHt#!EY"i\('rH9q'R_{MCs{+(zwA֡sUIJ2W@6P;/,Z|wMNk7gQFN NR%т2FIVS+읰;UqCs :e l +{uwOߴib/yO^oӘ쵫]CˍCoD3kjwSpotSD =;E~7ދľh A{r+ W[&k Tk3~`2uU5wȤA.?PWKF|5)b#[/罘u{MyۊޑZ,CE~Tυaya nNTEK2X _;b̲`_ߖ:kxgg%yroaNO}zAG}xotCNGHYu}pRGc~{5pQkwL wQJ~7J.8C~0Ž/ܙ27|)2 +*?JE70o;ڭFvgXU1׾i@OAwEԚ>,̰eG'=N,OAؓM_y*>fƻLw6]j~Aԝ4O8LVwQ SS7.Qeԃ#4){5[P&Ӏh $W2+FRN唃$/pW6be#c)?YoA.!6ֲ1cajW?s_:tr&<ZG}.̃L|/p ^;Ӌ?<]Oi']ܭrs]Fy.C={2Y[>Oo}+68Gڮuo"(9u>MkW˰?|lw6`ԪA[YV1SG46{m5IA;:I {6D0Jq?HgI Z]lcD0NQi]lj@_ޤ* yAy#%TJpK+]9"yyVy[G>&jk^)_kChYqG]j%q`9 +ŷBwfЉJOi6zZD|۷{=l/Y?/  `=SJ>|fCsHQGw@Oqx}:R*& Mlv@@G)l<=#bMHE?DmG +!aڏch. oE0JR Mt6F)|7w۹|aG'ovi: +x}X| M6N,Yls7quܕ :>彣_Σ/hY|c^<6} CSi }51# Y)zMAiMo_E0^1R7>+EhQoboD~./X\?lQaH.^qJЖ$W=縰UJr 6\"ywQGi9ث0l[8~?J|o+i; 276F{^ |7Ne!صH~n/ pf}%!{2`/el^;]R}G1n5+0?(o:)IZ+ "{4W{xCta c66m`==e# +X72=Zw]}cUF`7|'*\ߑj}[yP!7"GwS v,>0 a w2?}I|'1Fx!{XX34e-[؇fYW+b%1P\ E"J6t=K(5'ي]E,l̰u /C( 34/.ÍsWQI3% s4=&Dkusuq[Bx =9S&VB}0-4^Ϛ_%'?/ kc~?C4>Q4r0ؐ$O;(r"1'J~`M= x}Ɗ>vEfns9z*Zq ʝ|r2+PtZwK[T[G#yXPNnߪ {ʕϡ_TW6P4O X;Uy=]C ǀYЇ m_oy JA:{*Bf1eU o,K]CgBbF^kc۳49/7ȻD3Am~vlSKt+AD~;LW^KyeMhLO +% QQ`.|ʬ glRfoMߤޠN~pls +I X6e6m7QYsѡ# +o o*蟀oR%qTךukz_%Uv%,Kvdˋd#Ktl9B!y,I;yd ! cc'06Na#5瞪j |Fv,|>܏8x]f =0wovȍƚOo]b46$Gvl6FF}(B'׍Cv{feFH{]]V;ݯOZcWgW{K (!rd7;2` +m#CksGAv Oc' _q2v~}慌 ae۟ɟa@^ O>Ѡ,1U9YUybBFhi4ʨLtb\(d$B~%d"ZYLNx.2A 9B31GEg'q#imb6h@w|a-{X2>ijwv19͖B7`1|npZh"&0C7eGܩDdZ[HJ#^3֕u9m>Q4(y1E|Բ֯^۾>~/Ӿe<cc"'z|SKjZOo|&͝BWyxZXb}*pASEo1dMUvw:֥n3f-9 a,lw G-}O\ WY{ARzY"% h|M%̩֖(UĪ\m߇҉Wy>ceHK.kfұ~__7@8dϝtkfc{9o4k%j1'P ynng͆GVlGDac( +9q| ]cclzЎج=6[6)hhVlzC$AЫ.z)lA`jh\bbsmo )h̾y39 5kmKI{{:U Z>ږlo7g)+*.[ +_]zvasu]r;_ݯ , MLX-f 8x1%,q6٦2FD.ts(ύi; hvÓ|4vꨊ*. 4x3{˛oϜIK^$\[@O>i#BdFVgl.g˪nYTZnWc)bWE<%qM)L /T~Uy~S VQ"6Y6Lyn]CY;a:Y!k}h}lדGsi9F5jF+583J{ O=&48|>MiZr~OU /swRCGOuv ДhLARy*/qT$i|E줬Uf僯>hl3+˲y*,'ر`q57Vx嚍^͝h۲ ySwv^|} ko Dl˵!_uuuNVx0D uJ%W75uO\^p97yzX'4 5MM)iFVt)M z"rZIJsQPƣTQCeQ-٨Zo/^6!+Q+~4XAJϊx+Qq}y:>FS, 4z :c 6 S3hj*A#l:u8p^D>Zrͪ Ws[[ֵ:K:s~uo.ٱ8 ճ9fjRoX{%7EΉ)-\_Z?Uz>?}~ 3g4T: S Q."|k1(Zi1^Th}YQ6`1`^05>DiؠjE#4LOUB fHՅf!4+hVIBbK mj:Bӯn#N>50U!Vhx&\B.LX8U΅ Wqr[r>N#Ӧ٘\eiDOC+1:/l`Zx#o0̨AfF I9&rCt }rrdO^l^4M @4FVStTdIҥE6\d\Etрɒ).X^&ZW_BlYv_g7lY֎ה_RR}`[s#=Ǻ*+ })$5S A805@'ǩTZJĕ3Xlk+d'|R,\H4qѻjsb4_>z#vM)ҍ_w)|t?)[E_ O-gUivY=;|;PرL^'_W&Ri4q&9pf5E+rpJ\jn7O>4 ͇126M&C&0h|Z.f,ļ6ҤKZ> Q) p +3eJeUU6ۜf.:75~lҋN'~X;W?8syil|RK6]NodG=rOl,]Ym}e ]f-+ .^'^וqc5ee78g.τ1in"QL-PZdt *N$B@Eu*@*AV_w Xej68X3 Of&Z+4$qik C)*dj Ʒ30`NX +W6WGy8HLJ~LV#.w7zF(qzHK|+•|Xk.݆aV:)Whuz]/ֱ+}%Ds kJ ߻p:O.ZwʡY֛VD621,c(!sdÙ8VsL2ڴUWTo;O=+}s;U~0{֬;g//:i\SEuBN&LB Y&g*o_/AN'CvjS=daz]ZoLor:!'h\(-UUHOo a@!Ns!#u:M0p\7*e\mmż^B/&5y:چL^ғh`QDKlWiPN;&'=\h\U'd7ܞ ,Nݘhj_sńI}uƎW]yOff>!X5ֺfeDWkK<&U~jՉ.i]V -''ѫ '<iaFl7| 4(4'RJEy^!]>:UOR|l4:Bmk˰u@3A-JS+i;Hϑ-[_vJ(BРOTG;Ȏ^vv5=8KKg5[- + "G zp!G0+bҷb]i@bAQ7oiQNA+aKBX4t2v&\fnn 7/oM}.F6}/lOGwo*? FjSw9uY1]oq?eԴ''_YXy1˕â 8 M-"DqZT^9c #9wgT]ȢY.tpՋTa#o^rj*vsytl46X%lqP&72Lv8" `RFnڍ2noj;hAa!f8 ΍ +7 +X 8I6ft Ü)䕕w /LPO|["qФ$!: 6 +)LJ1+m gl0zS)l[2M$00é3`0tUB>Cq0!sUZ^8)G9q t Śy1BNF8ʸbsf<%k&˅ +'H[wvwgzpֵ-msؚwъ؆0i">"Uuwe@s^gnmhl7^1b{h,V5dBi)7yT0)R;:T2ce!`&.8 ,KT&R)J Q {1o%F%Ia *r`G.4Kssѽ_'RV\_ /m[UßL,y$uz%Rfw6O[ӛ!er ϛVrz0?dvSB$  MpL|]#DB͸f/vQP-ۃP@)4pLD#qNxJB[$eKҙ,,=ߩ1|NL!FƘqQYfs9J,2V苬v_ 3vct#~H71ޔ` WP`v#ui`毘>/Ky/_=޸ig@|d`񉧁 C[8[%V& ΐg^U2F3X2%ْ6Y#r@$jq΃XLB&jxz^>$Oija -$ㇱ<8E/]ڛ3t&ZKXzD9„0#O*wZ!tPE*A)h_ Xxdiީi82&&WYDaN^(-b\]&Qn#?Ia2NK#ʎqr6('"ԍ "ũT'Sxi$Ғ( +]yDGOKKSZ0_S1YB&o \`dKn/lj)`tf_7Rvv쐴B,I2&劰pњÒoF +vanX*łH_n`5,r'#;娼]YnID[jӥyKYӥn)IE3)L'}<]|=NemofM3ٿ+.~/WͿ΢oΛJDc]gtUkmw]93EϏ/Njk(@DċVzash%dL(v%C_J/&xQċ"^D`bīH2r '3ocbwG fDcY5Q`PĔVĔVaT]Cs ȌNCv9RΔ?cϠ۔n8aDufmFB8TXxŘf:cJL?n2[BJ$mDn5YwDDZ,ΆK}QqwWV +NNNM]S\Ydi%qɛyΗ.KMR൷ ϫvx\xp$N$/uϞ3)[N]U伽,DT,\9I6Q0J5`2$BB /%ctn&Mܭɀ[-_!sT2e2 *qE/ŷ:j R> +f#6dЉ~La~ O 9C-p{uJA")ExSp5OeaQ: ͕N𭅏ZmsX77ܲ_f_6_ o/4 +±<>o~[X53%Jiys3-e3 ܲXTJ_X>ƪ8t|=/9M%%ЄsIk6Q8*׆^H}K6nv9ΞxigKx˙XfV9Y9E.VA"ZL+rk>cWnq+8.]qh2(;dTqe%ӵeA1iUΪ~OYɮ .S'.c).M\^|[v? y]ƛx[6s怗gʷHP(=/56 +zz׻qkxSd'qJ8JȒ:~'vQҦP(i( +JpKBAh+TU!--E%Di˙s]cws=s̹sf$Xh~/otw5±卹7XVBFysHm(xƋ=Ǹ7./[cxX1/2V,bkXJ36KN᡼͎Y}vo]vis-wNcX7~G9$oh_aٟYgTVgB(ӹ?-c?)W\e|R̩SJ:U+L'U7*v<jy-1dSƬ9]h!C@~u0͂!Wx1auNm:;%a{;?`{Ms6M4'b+=]BWʒ߭#.5(-W. 5-=6-#X8CkK٘&wuz~˵#n'2=%7Çk.N}AZ!j?sZ눲_nJjtڸ+~ض_y!#upL;K\qGչs|%x0&g4%I iCu48 ka=bYTTwImQاԽlavXTFA9hOJSikrP ˾ +^if6H( MU Bи&h[EEsB)xk(L"/2y±U_֨Wo=}?Z̧X9s%sr? @~5f嚱Žz]֒j{5$6M- ŰLI%`"RImY\J~1|AaӟF**&I̶ldWԶ@$_h o^1KD+AHl9*)`W>jqW)D#_?WnxR|ݰJ8"msj]r\]NF0eذOI,@yN㬣y==6׳sRԜ]4c,|ϤezHljmm\Sj& +WIc1]ֹzj*-dj:jL(DO@§寥@UAW$'i K*d jE&+2+z9i+Lϸ5槩 *z&y92aƛWPwL=+tEM]Q6ܺ,ݿP߹ n8ߠ0 `u!GOḃ(>eDCLqgwH +UO8) ly"']ytU ީ ?,x?xthiKkH.(&`KK1ǥ\ZCKH3A*]Zi=ɣw v9 0 G 8?&sYH@4@#܋X|$L!aӶ!uѱSƐ:Ӂ8`OqsQx}?z!,fJn,K#5B$gM< ЌTu6"5ό"ݍ1Gܼ(3TV>F5#?$t!SI+34AoT_OS5HK`('.1znCؒHփtLyy>E-;xm\~'P +բx:0Ho< v =@ev#镡Gd` B.N.*^t[RA]Ks>ju.kc^/Qc1 +endstream endobj 9479 0 obj <>stream +hޚ A `s +endstream endobj 9480 0 obj <> endobj 9481 0 obj <> endobj 9482 0 obj <> endobj 9483 0 obj <>stream +hTn0~=`BJ%ġ?jލPb,޾MflyQKӎ\8Bp'*lZݪq]Yu'yFJSeSq G?du]k\dvhF Acx,o2[z^`B'M(^F1U>c3Dz:=|k?3q&\r E: 9ŤwB@E:]}}p-59Gqq,Aoe{{طOK +endstream endobj 9484 0 obj <>stream +hTXw|GY@6em ^'lb`I"G< I`@I4D0Nzn|5۫w{wc^uW{3r+gƌ nXM\_S}b-[ygLSnyѽvw^vt3ϙ~93g͡g<<&'gœ h*$;磜s}62c'Ϳg=XXIy֧_b7'7ٷp {3_,ggϞ-m}evf9IV~p{O7ѹs>><y[?<߽[+oX2op++|"ՙo3Xn\30n psG}о?ozP>8b|%X95줶Ͼe$.|9|3uS'i'ko[o[,o4WMUr}LW"A\w k7JuJR;QOBnM e?;FӠ<5iUKWoYK0 E cc]c7wEO 1'.E ?O/g@v¥sH\iEI3bTx&#O V@X,,V20C0cgWǎ3#gǴ](U, ~<Jw7Pe&DaPSm($m)Gý-BE&qrӋ +Z+h訟G2?d'RHǧbikMp2ߺ%MoKIl698\†++@3 6#$g գgަ>}{wv|W:Y|/BqF \@L.To$&(q2-<^b_kJAmkh[B.M0 "NlwzBx|;z|Gvt>V?[,+a,x<s%ߤq3.]vTzcU)rD(vĩd8_j9H2r2T/䈽sHDl\wYKly{C>~oݡC_3p>;Jk+t9Uƅ(3::wIS4U)ܱ/bXeW۷Z[Q]TVˋv\+¸OU98x$ 7dSģɄ$(U)iRjRGŨbx^`a2DOa0@ yѡng<bIR=v@ES5.w,O LIUVS[p v +a@gGZ[L9` )6jZDxu8 fh)MC;Ud^ojTZKfum +`'_Zm9$0T*w cX,5أ&ϳU{qRėSZYffk',RHo|?R<͜ }k"|(vnfܽX'6?{FSƋqZy\o]Z!f+P(7!_uF' F spIgdAi#Չ!8u[p)}4 J5yl#y p0 ߰V _Q͂{08o;#4 LDH%yoř7YC7Y7^cy$*]X6pX>1O,8;X%ʗ?Q?}s +sZ[`&M諛yڶ /dj\ IjUdnZS\HEHu餬/oYAo,K+J +rT#t( VG}L=b`ۅ{lȋ~_-uVT!'=1cMG{6tJZTiF$hN1:sQ\6_n~Aj736r3I83 ŲMx:LuK,-!]6[~"X qx}({Kץ/45ȚԎC$ W ?rdDheԿyYf2piW-K{ +cڜdFkv*:V=o|2,X\}^0$ /\epw%ZÏTpW͎i) V'Bʯwp]&"%6zE#ި(j^O-F&JNސ~K]Pw#x98B7 ʻhyJyr/0}d8i_>J wH.A{%Xjo&:W8|uШ(gC;hb9-UQEΰ7OU[NܛT!9 +落"VZKi+% IYW1^.z>w2"K_pif1{{KiniRqeT3b*؉7[/|<`ÛObpm&7,4(vyx8 t2 ɚ.L3F et:5^y`90k1Fz&Yp55l|bD3ҏ恳lM?˂08_,<,xo2o?t,$p,1?ڈu*jvHJ_j1ud2ţyQY+D#D711Z4m^;*':P'\7Yܡ+ +iTRQč3ΡpFxZM$*7Q2#6~>0~I!YojNp_T$T*k +IHU \1)#.á( &:zxȤ2^Cf* Ld=mA'vdoڴG|)=$}І1؄hz:NO, tm%wJ%Z h8T9/aT1rN|{ChU R#tF]u?bG]q>Q%Z]_okAz۱kuRO`"1? :Jb`E%٠Qw,{H/#>,r `6NK +#YQ^6izu RsmY[-\nkŤQ𹣎.ܑ[e_(ٝ|< g Yr1rw|&yqi-"m&A5K- c6@ ү4YBgnr\$kjw^7|>K{ "bô-UjPA_Ÿ vE[Gw0/Oô9ljS;v.ypw!eGE&{g+D eC;]*l6͆F%YMondg";&o n'<ސ=m&ӭHZJ jX `{VsuV7](nPXt[5L[C>hQ~w8L6E[TGjpaBشqU=$<`6uB/plTߤ2H*+ȅZj.B]8/[{99i|r7YϷQ ẋp~ƋVѲ'ۆw(B(l]+V /cFKzc\:6;i3D'o훠'mD=2N["%4XJDOu1&(ߛeO TU;!bڡ3DP,v#\,ux#ˉ\!I~)Vr>f+U5*y _)*pLI/Enӕ ɬGɡj$JI Cˢ-뒄Q"YkRv)9(<^pdJuZ](~lj n"9EoODMbA.<m$mK8.t,*2(J"3B'KQv߻S^$}1u//J{C/{]Z;nmiq8 Par:]h渨&GwwBSŭb PݐfOՄ[MG:RըhMTMqntvi HK]hHNKMlh%k&8 +UmƮqF 7Ũ~274i(6s{oHP%P^V' IN\k"JՌap}<> 3rp2ez{l>X8_B/bp'W@+ >= +^VEUh[aNr#mc17'x%Ą}6p9NoG|z=pn% wEًZ5 jm`n|9O!fC{J$TPsعo.*_ Ɓe% +endstream endobj 9485 0 obj <> endobj 9486 0 obj <> endobj 9487 0 obj <> endobj 9488 0 obj <>stream +hެ{`TE{޻ - JC P$I _ATEP@AȒ"EBb=3nXVXs̙3gĈM'RtJ:EjQc7 Ѫ0"D!cU0tOe"%<2rҐlm ΍"1_BءH(^?:ȡM\;QqѨ13s=vQǖzew5֕c2ljߑCo+>6xlԋ*I%*:B +(GQ88o8'|#9{ d:ƢYJzVӻtբt rTnhfTzPgQ@!@X 8ۓPgVVLB3JlVog3`GP)*C5:¦lt?BVAEi,}G_-N'FQM]"F }XN,~ +zmvjATZS2u~4V:mqiE#:ֱ_s58? LC i;#Vuc7LhL!8+ʲ^lvH1C(՘ƃh}DWf>6O5MҮnAbՠ $e"ʥm.Oн"Ro4h`JZvIПW+Iiʞ(gbgMO+:6-e[UvMЪi-1˚Wۢ]}_/xGo_uVo,RœEU| (+y(A֏b\ wh;~{s:#V&z1<^b G-T+պh)#LmvHo7y ސ'|g d1V9Zq,eufO2>^= + xv҇tR9 +N  Vc g1Эl8Ȟ,.dlgnvfqva?eM*jU5V[ զ7S-k'1Wq zV?v8 ;.)?kf6"1iQc.nV0SJ3V9+֚a=gjauqy\b5XEVT_Z?,փcY,h ցjikeI)Ju %5Y+^Lvb}1&!ؤH1k^,-R{}6Ci&A`R,gbUXSZst(URk^R!)J 6hC6Bt|gEF7^ :J9hcdst^S<+h(%gh|.vNo2q:c5ANZVI{.An/s7Z_WmE}3X4j[ott;F}4]ӵ|&C;hO?)vnLqv>6M8MU8qH`X/[`~1vkcE؋(Oe@GRQ6 +8~y_acz Xa/^jG wh35ĞQk[qٽKv[V|&oZQv}4դ}Wv O#u-7kwlƍ6_nڵjֈz_*V(_lҥJ(^he\W1IvnoTGyȸ'  ^7^NWܷG!A%%YNzwT?p'Q*R p'Ue$oCۢ EB=CІ"A[3v+ߊV>\mdWOM隚6<""N% '[*BT7ar84۽!fg֜0^ Ϡ^=#MQ6m-? +hTbp=+0fer{wvM ̍jۥgCs+#}9{P=I2%}I  n"r+U R;G':ܓѶ2mR^xwsl+iKsCNh<RecBq2ɑ=' $NGYP jyayCӳštYkT󸳮S2zA +|[V-V"&_Vo;U\/Rg%nIS#h )u|_I[~*ם}IIJ:+O\XrM[c=ޫuKC/BzҔqWg`RхIF@>HM\TsuхV +Z+hx3wb*7 ΓT"0혱 Q \EVp)s@-Wm5[=)$㩙OXea#nѝ]dz\A/t탎 Уt.XԯTꡣSi}mAT + `nӅvz*>σϘ` roݿN_Gi㤍vN`z>+^! +ݶ׏feZ)SG.zz6#=짍{ }Hʞm>lh7oy5rEDj +4BʛwS",Oi2Ϭr=U؞,*$V9N?r]QW/؉t_ A@ r>vSu!I23M|CK?P@:O@9,*4q;;iگT1 4YY}8l5 lo +&;{u[`(:b{8bԦgy}lk +tr5ݰ~éyMc{O +vO? y~g1(cz06ƒKoG^ +F8W-j*YmL׿FXlvU*%>C-Qg3?RgC1AM૳JzE40%Gx?>DZ6ZAs@GLIPmܬx@nH gSw4λ:;i7Qg&Ғg#nݯ?w- ؿII4xhz;uG^z=O6*Reia=r]̄IߩK{;JO& %m *_Ov0QroaiCK|C(Ӌ+ " +n3D埤{՞f@V5~ tI);:=W;uly{vu؂mYX + =@[1uּN^<Ci! E}cL,*.]>Ѭ_M9X7@3빒 kѵ`y#XnwW!gRk +}MQ>BQ_\Ӛ%7^[_ +Nw =_ `>t5GtpGjNOuWíz+u=eSwS'h9TcohY[i.Bfn)7`>߄Im[!G;14^K+W'|4S{:q>^b>[Ty%Iv$&I frȠ!h(*U0Qui9j/h>=,hA0Pv tAnGb0PWz@ՃW +%M;wJ +ңS` s:|IΑ@z] w{]`"^ŀN% >Is]FuG8 a}@ +0 @1S_9~iP|m/df~Ob)Oؼ }w[D~UR.݁*@@~*!,_|e}d߇νhOaJ팛tK*m:'*Ww.cu1~F?ڎ27㟋KrSpiZ_LH᳠ wezl}ŨLyֵτ١(l|=`ƞ6s/v5GN"iQW=`A~$eM fc% +vt~"? )K/wVFS`c;A1 yVPgt[>2j(,fU:οy:3]?ޑ] '#k8z)IAtBP=5,2ƂVu)lߏ=5;&uMq =]3Z[;TB<ϐOӿ߫:gBnQyFZlSC~s +MFoQVRB> ޡ `ӻzh*esO"[`0tFP?7j.AK/s}wI.0g1uWc<)»bp~^AC琢%r/oSwcywƽjw=K^Pm]}g)7=fAYCY7 +y]R`( *X]+7}vro6X~C+PG~d۰V}5C6So ay+.qG.{};No}ك&Kŗf2΢;}Rt^'%O3mP^Wl!ύ}n#_wI~wDm%n/8}c-4T9}D~k~!<]必r{Z|n|I-TYK]gmx0 δ7h/zoFd:ۀFyI4/C_3P:6HJQw14->yz#6pFLQB˦瀞zwX84L `8-g8z Xrt@8S&}_jhZC:(>TA_GXeS"eFE*kTMlRYs|ǀ3~}s _4TA: #ZkQ3;u'e[ovga~:BGhcԤh M5*" k9'KGz9ν$WV_= -a:wW8o%JsU+}kGrj 0(_F\A-M=JY;{ |MXrOhϋDu+Bw2[1Jgz4m@W\F:5>@U-U%)48 |Y;E&0te>zG^` R%tISMMA@( mfht3o89O(W^{۽|{* Fʎo.[-}J褺_,eyϤU w՛8Nj=@- 9G4ʰ~9pҠMrDo7rtj<Ei8׽!ϭ,#Ko|_*}Z}A2}!Ov;}oM|' kQ0~74s|@L+O 1]7F92m|M'(,,*SS>FJ<-sbO y5{ +/o@ᅠVoB[Z |,=Mס=,@}Oeҟb ؘX5!4(E}P~Q&5Խ|yzW7gEZ_|+ϗ|x)Θćf~18$SI>u~XJ@$ɓ'@y #9N5nܗCK,I [ C0aۤL)@aٞwqF|1LsT|/G.(yҐmūz苵.ۗs +~dj[&{ ~cUҊ{Wڞ:= +q? +ٖH|{Q_֪FGw9RhXu]5,z~LoYc"m+1Ny냤RoX@8ּPNG o!lmM Fƕ͘ |u6]*ج_6+-E,V/FeqڪgzagnI'ݷ>s6&^TDۘ+q*)r]3W>Ⱦb8H9=[J1@ϿE$Ii]+}%X +t~<;9 FZ~M>GUq1.׉ЧwN2cDq8-{.4e5Π5jVCݿ-*ZiEt~m42c<{i s 86MfIh֔ՔyDNQV ,zZQs'@WspMW0-V)A/(s5_#ekGU6*ZlA/:beWgYTy?!!\oYעڟ8CLrer>y +}|WjKb +?6* <)/h7m9:`` nu~);Ѧ({˟KUR ٞw;< ގ,݆[z +ЛAJ{'p:>P + Pni+uS{fOcd\ kAyOiq+d= j[`l +[:"dK{pۃ_;Ȗ]K৑ +~Y4`۲ 5" #[ Rq:Z8" `S$9:x h>|<&\ikC=QpoGDF"UAB7e\ځ-b bkZ F\5Gl[3Dt!$E$A$"!/#LRc3hu¶$oKMF67&ƶ]JmR0^zۺnA7meu`Ym|XFȊ/g'<7s8i 0nf'h/  +kl|F{jGkش] ; v[n+g6msFCphn{z1g'ު=T=v⯪cʆjbkT7?CL8 6Gc +75.`0mQU01YͷBWكP6ΎZ(ܔjZ +aH~QغP[CF|7$teH5 ćCfox6jv6 m7'іg7uϐmhSƶYP+Q4 a`α`k`®0*4Rtut:gЭ%Jětvgp«;9j~eϟ},ZVU"TVvfnŪ6sneQjme7U6,L[2L & H`B7zPM&m*1[xn^*L&t 0l00H 谵 5¿`@ EYE(Yz74$"G w9MxbChq +!2HM~mAd*궈w[;ȗn +̎ۍQ@݄{.z|~|J_9~6 +Cΐ36쿳/ɣou;6c$MxdB:/dWnA} +!zg +_}{_#LFS&Ԅd~-%|0~- w&x "$ L}J)lS C"yPr@fө3U4 d^x)={/BCWʖG} +q#jtKp-_N+G~5r.\ax.ޓ9, +R ّ[XkUC}#}5Z^Iֻ_p v)]jcӾ /_R5ܚ+t.Gst;M ڬ^zoܥ;mMp'ev;I30U=u*_$HE^B qwN<`5\]hտll\*zo6>ssz8Nk;5O\_;doeJ\qe+{\9 'l(.8h7#':IiIiIɈܬAɈ:nTB}\rI-/Bx|qyiKֹ_.}s72:%R&8y@+*QG?-Hݏ^;mnuY!]3&\]>e 0uA<0qyx+̸.6㺠VKMs~r6om|7ϛ<&&fO-Ó_JDIEL*McxzԆ8fܹBu8\#|dfnlni 0Yu247sOC f<,\D0yO>d3yZ6)"wR_U\P=[pd_Jف|{a?s a4!:1 +g5S 'CSPPr~(l;>DG!56f˅-^=E@Ao3+W ._ٰB)73cS)C ؔA ԛM d%ij"cb"O3~(}*~:m~Uɓ4`=:`1 ˼k/6r꟯xq/]{KRg_;?!Z0GI:E [HBP/}c\t:m!\ɽ$ʊ).P\NB 30ĔCu"b"-|.*V*_HeC>/C; SAvb5k`Vx϶)P7C6jn^x_I>gYY&,˱vr(/aejQcnӺs{ytI'vԻΘԑbL;o;z5֧.-KCkp@].y>/XN6ӟ֎wζ wTL$å2TaN jxU*l\DAL1. +{x^ ov9t +)e,Z6qY)`^,se}||.AW࿷A?#vNi8uʜuh>q}3?|2Ғ3|x59i5t3?9tq2?2mfJmf~tu\B_ЯGDKYZɥPl;aOU'>;u`i{Š;̫`$f@uc5<h q-q$]2'ǽU2oAo= =O|=BhEE}ʕO]Ӵ}l~pB\p?|,sǛIη[-/Z^C>j>L/ +2G̹%]*4]JUHq]F$=/BxO>.$tꜞ+U2>⏌W Ľ!ԭ|~">|~!:WH}+ +5$^0A:23c,2nQ~ObI='i3%Y\+A&E.!lS2I+W^]:~.5N;p^mifвB샇.LCc{!kW|`%%Ä2X]`u%ü2!-8 ͐BZ [PdC)ړ{r|ams p{q(Vb;u%z85ok98ǖekHTb+JRKm\>uAIe#$om^wژSeۥGtv~\yKEq4én8N B DDbXq:ul899(pT8xAdiCu5+>lw:&s b`^QG.woalAS +}WDrTxbfiNv},'ZSĢ!Oz +~J4Q9s~~U>G^Kr,./Kq_/,W ,Aդmv.M9rJ SDX| "VQJYlŴY5vjS~$<ݳ-(=qhʐiE~1|5gIL늖 +/Xq%F2,?NAM Olx^sF5%]*k"D'rqrUq &, mz~(|D(@eYV8=.Wc䠰%fIa8L/Ht2')!=%,//I&Iب~z@< A= cj,>CO HKERuf[Y%WR 3IDU8e%\)xxʊd̘dU$)<'%E&L4]Ayx9  ;L6Zg(9W&q;#ŀhw ЈBQ*ʗK> ޛX 5n] Ck~gvF4[F c6b򱿮&+Sm!\|3gm ^ƝG?߮iGA)֞6=@*]g)2N1m5GbM3b#ov_㾍dҊ;G]a@bam(aO +t:;x7 &a)LpM +ԦOWu*t(0'L ˪=[`$H0'̪[CiV [~C.Bp^`Cw'ZJ6St:m 5Z$"ȖfBQ +lp|ix +>RlWg[76>|- ¸)w<xzC iyU; +Q&|v}k*}/V'h<E ҶA3:VD9 8&i9@#1yytB8@"@VDb6[%KIb4*k U݆19c#7u_n]^Ē [f-~o{b~ctO~n岱i٘Crby?=nM@ϖrR{X69߾_;b?cw٩,qp7EB;@dرahȣ?o2`6ɦlaixT$ʭNt0N]t:MT^kUr+>`8gV X r1X|]u{C&4#2o?s,x`l;Xg(D`!}ʂR"VarY(jol眵KbrdWDMjw>5T c7َ):_}ܦ!OE:6Җ0堷+oשiWAY9vOqc7Tǖ\fqpM75_G!y)ewqFXz0^qvlYԢ:8kVwO?>tl.YսWg)  +kYK&.n_ٌ`MO:Kq8Z䷖0ХfƗ!wJ>#ùpnx;{y;P͹QS7.'0ywK)Y5ypkCfNyç>V/.y׎vߚ? 5P3 +J/9$Lz2a%ӟ71 y1 CȈ,;'tR4p^pH;{Sw Oاq}x?T i ) +KKӞVK0ĿTX*.ՅA*n<ΔRARlΡ)~258 !U^/ P/%NE"ϩԋPNMVq*GU /je K U{m̉ۅD@"n&ҐIAV{༢K)jvq彝:) 517ң</p}yL88@ bTYm4x-galUݥE9H̢&bJk OuH[c Rn/>@?7ñqKvö-)VæsK.PVc ]^!OAB^Vs¢-PVVڜ[Ol rS <* (5 ںf{;Z'Xw3F`S pB~x1!rt1;\;w$=Ղ:陏л9.{珲+9JWGEmn;zRo$fuו緷.]Ooyo>tSRf/ +endstream endobj 9489 0 obj <> endobj 9490 0 obj <>stream +hTRn@ >aa#R(R}I{ŤHeY-䐿i"cزWmGP7'imq Txi-D֌itH| #vGz0,ӳ<ԋѷsAvhG(&P= oAOhnqpA_ BlS,HDQ5d!ׂWWɄ" e)%r$5;jU +A<ǒAp"ď\H3I5˓J-){⑲GL> endobj 9492 0 obj <>stream +h{y,Wyz +24W%j`$1%l<={o޻kګkmzۄ$ĉs!T?3$kő޺[~ S7`nxo}򁏼7;;wW7j6Ûow{e/S77Ɠ;vS73f^)rj[Mԭ7L?z?6cS^x慯z|ұT_K>ҧ_v˾7^7|*գϾpxH}t/k3A{~tÛ喷m?~G>n_{^{}r+n{%g_2:y%{{OM1-- K.Vx](^jUIjjbRS$\)J*fhfAQ32L--,?4Bb/n!s:+$JSU04R)2(d;fazC'aߘ á4mvhZ{˘.번d(!Z9:;3yme`m3gƙXz[L$UCM^H5^Wt]T]uC_:^1𰧪a)H!OT4͵: &{[]uqj.Qwke`0,rfQ~<#<-[gZϐo`X h%]3ђ3TPCj`jj>4}'ֺ~;:A j9HĔ^:5 f%Xt/.F4.x˘s|a^78SaVX4b|oJ5YTY8cLʖD|oqLǢ,#ܭ9`kF/48T0j*ywhk0'lWKR@O=YM +ޅa!ɶ\W w1pbi/6iq)@-T2Bq=%=}wNs Mc +إz{i vt~I+mSi-啢RKbETr@KD"w2U–|/hW/]>m`u:u6jjJD5WjhvN.Xk3WųճOu[C&J!PqjY%ƾ!;$L$EhI~YduI %\I$)z D91]+^vK0RhddTH 3!Y) !peؘDS_ޏ>:wvۛpX=꙽>P)nUiŒ%,Q(jJ*)e++RUeL TXZM-v-Nt;.活VUpW9 &MVQˤZJ<_jfia~qzVUA"z0 +5IC У[D7)B-#3bo1â_NL8fwVaQt1cu{P5]iV SǼ=O +pp%d82Tg z%.ysìYT* nËv0յֈN+1Pb6k2 ^T"MBV,P0Ws'RI 9ј : W͡*| YƼ].e"ѤLWYSPD&g9E]e֭:S-*-]` +d(~$o6UW d_nM5nOvmףngX0t6w(D|`+)m +BB15Hdq/tگos{$ ie@:%"nXP9sЀ :hk@0O<>GӮ,C<|%ǷP'{3R(w!Vj2$YT]:]L2QBمP4!TUTeس +>YS!lW(2&e:F^O.wĈq+WJ9|Uɋ%R(41\Y(ʘ\@7Ur*6vmeS% З!/OQ2n@x=_ )m5yLJlDnX^|4N]|.:JEWihUS8Gs֎m~ X4tARZ᫞p#]€ ض $ڇ; c-ѪřɀX`T] Bg3L_eiY]E}i ?k,ZKd7[Šؠ[l= {Cu|mlQ[aa}7m|S]䯏_Fgx+&JmBU<&:|Gۘ^z G8iX 3 A ԤZRC:Vf\3pW^@#n<PN!dbͪ%e-5.Cx6il&R0i~ ;.&b8$@,ϥvSb#Ȅka7l5ZaͰYo"6޶m]U*Q>DhYaZ2]% %ŋV٩NNLDz|sEVfi"0 + d]KM7Ωy06VcYԎ"/t+V +K>bj6n/AYE|/Wu8PuXfJy9/RL>3~'K:.޲"A: P0n | :P-s\ꦲ.Aw.Ӫ4*P2[lX( +"hzVY1ҘK[Po6rTěn&ZTJ '#hBV]!旝pZ +Rg7XuW(~ŹVU`p&` "Aj Cѭ$@WjpN'ai P-őmڽ;zl<=4\_`0tsZ  yd=ɚjM0J:>y3i[+g'A֟1~ݏ<^HtXQɧ'ǘϓ+Yz/2EĻFL=~Yb;x! +Vyq)66Qmeܖ;HYr ciEF#5\A-dP]qP> %7?*U btH>r.Qj0˛yە._/;]2mnkag;¢]J/B -!"&jR=:>n +s5@mˡ5ZStB a~C7r0'j]dr$R(RNhH"z +Ɠc2:>ElI6Tff,,X\\QU*#]ê99/za9#A#ߎЪ6ru3vegH L#VdV$Vs[Ne"AB#+:xqL4P;l $oJm{?c7[k$u 3'FG'N?. DOzq{_HK %%xzC~JEuȆb/4CBdW +^9dZtL(!T~7<}=.|k_7*; Ӷ˗_tsԹps/>\=6`̩Y薀9  +:TK]`o{VG\`G8;&7Q0$Dָ*,ajғMޟNNO. j1f4:>٦mNdt&տpHAA62-%LɥM76&1dc]l:J2xM4lY6$⚽{ 32u;3@@li~- djjFѱm8hyHų{fruܼn+!N2Jc3}lײ4 1At5!Y)er^l*ə,& M {@2?a.ET$M>*:OCGk9/C(ub#cIo҉Ȥ DM#nwR~z;IO&i1\R$|oS!209 1-wF4bxvsӑ;4Y!5GM)}p +6" 3agRY+BÿuVh& C0/M<,{{#= $Ϛ\97P9ћ㯧uGJ}C7f1zEJ%M-S%@T9I@gY. ++$+Dd; ղf5AEJ A6g3Ř>ϧΪ$eV*|2T]J$ %׮ICbk z8h{щi <&RPNMu5J3røbAy/JSj8{z۱0fgR3h.nZ6>/v2eݳ*G*p2+"˳Uc,nPtQ:gojD2>6T"›I C+)b?=`lC )JCFConN ^o9k_<~^='ߝVbZ8Rx$lk\+nava& , +B# oRM~)Yʙ,Jy˃}F(ReAENd@P&!ZBG`r_'xC!OՔR B dl0x5i< zLY0g-,jU +b̟Ÿ'9+|;߫l-'Z-jR-+N% V&-*XF!78D؛s\Uw8$qj͗r]b¼2w?c{ 4sl4d1f%] v\ 7N ([&gهqv(LZA7L9C|ržaAbdj;ò MO֌V +\ߩ{n:]hIEQ0}/6I*чFw)Mvrق!V2rb0- yW+x*ҭe 2&Rmc:[/T#V媄.s:%UH69yNaىv} Z_S 1J5)gh6a\]x`֭: s]_lHmNGCS}с={"XaM7'PǯߞV9C;EfhLgmaGd@ד=TiݡPjSR=33:/ +3}hvN[%N;aʅ\{PpLmЧ3>n=c-^)P3yuKcl,ȯ8 DfUbe՟~^wAk>G=={-y=R"x\=^슙_sϞt@}fOͿf4|?f'2RFȊ +S 6뉤EY ώ \GAZU[vwĕ;=Zۍzn sTʺP4tq?Bu:XI8Ȥvs7hIWߚ9-w&޸z&~<' XȄJT@LXm*e`%K3I !BއX`6]2jFbV [Y~wS3}@3\GPoOԟ13g 2-ȜB`u̱*ٸ|\?{7=<2P1Cyy~ +,N׋b?Z~ty8yFbE6S*d ل_UڧVnnPu6 ;ks΅ʅrN(renaRNY/Q%DD6\7' [a u;}{խFLXhU|E]sdCZe6HYْ{iMF0XXߛjG5L:83 +i^C I{i] @b(rÆwkq,:)MDP!*.@Bb ePLI=Nv㼘f +``AXtXSt\=\;j2E=\;wwΦӓ10{JS:3MdfU`f +f6i5[cdf!3e0D$3Y}vDLT`f85p!L əmڄ]kM8@$wVlgG4/ O`Id* RH T]KwI{QIP/Պ9eAw%j|HM4H7B+03#1b]!t,t=ku ';oHmu"T#Pۍ•BX,AyfGEmO =v{Hnarm̜2\;1RlKlwa5UJĆ<8XxL>~UH{FOiܔ!!v9pb>dhwGz%dŖ2.[/O [͡RRY*ûïBH(o VFC7-{P,xΩ)a3ZC +8|8^=9f +Hk^~aٹ$Bs-$NF9Ir^:lruqYv$db,Iԇ +FJS +ekJe~!eo( XPVO ++GHIސh0λW+>kP1H̲H"=Jp=!s|'(c,AB&EYE8+Zx1%Z~@y%C/HI!&ުgŝ3|4t +endstream endobj 9493 0 obj <> endobj 9494 0 obj <> endobj 9495 0 obj <> endobj 9496 0 obj <>stream +hTOo |9n &60Z/m@~ chYW{tzLyZFpcu> endobj 9498 0 obj <>stream +hj`j`h`@ `  +endstream endobj 9499 0 obj <> endobj 9500 0 obj <>/CIDToGIDMap/Identity/DW 1000/FontDescriptor 9499 0 R/Subtype/CIDFontType2/Type/Font/W[14[564]16[333]32[564]177[500]]>> endobj 9501 0 obj <>stream +h{xUU{  &. %@@ $BR,c"e.:(ѱ 8z#Π,2mWy9R3ˏ^v9$1ՐFGL_h +O[צRig̝[4Y.QTٌбH9Ź!=37"(N;̜I=? NϟVA7%Cέxm7bώC5Wtz5*#ŸNڭDd,01{ZJZKwSJgi' h[iDRSB%O)E#I ZGo${ԉP5S)/v,Bnڅ:ݑ5hz[}y:{It}yֺh/^jG}i M.{1kl/黍+5T G!8mZLЊb+fZM!ސLϴW{[mV?OmQ.kkލ"UtE!2['|G[ݬ7 + f"ڄ^RăbX >kMXͯi%ZBU_~R}1Ԩ06{*BBX A&Hԓ`Ta6]JWu0_ڌv?C{ bH$Y}.fRq~b-${ˁ2Or)~ʗ!Z]^{B{C']-#"cS}'(;NB CkCB[+ +unt9\9x?~0E:xFHa`Ʒ~̆t@1D ox.SL5zD V?h!~OgI,5Qf,4OXfUKbЃr.iqZU.ihjitz}>C_b3 +zY3i7g=gg*k˛i<ڽ2̗~|뢕Vm,c,.n^5WO),m'P3Uэd}Xo)J䧢Z<)kyJzK}20WrD[bŻz +dU\ކL,J/4 q9;G]tDoWb->1L /Yb3$ і>P#劧?6b.1ZADڧ%״(*cEl)F˯xieҕB1wܿ +UvL+49 2y]iJ̳{tKiK6WJ(v`vʪ# ?%m)C4LoB_І LvR'cn !WWIồ֘[4J$z"P"=\ /A;CE2+$] sGEkh,Љ{huaZK4źǚD3hwF`=!cC%VBnћG)}#?xa΁֍Ajh +-!ͥ/oEN:?4RZZ54Ի4zj'hu1$tǀ쩡+*vxIak~﷿~﷿K +VLaqt΄ 6=a{- K6b)51v(7{2'^ h +f`5 9.ZvY :BZ_ٛ_ 6OGalbmb/Kwc<,h/li?=ޤ`CºzG,]Kϛ{ٳfΨ>uQ#s /o޽z٣{Fi]:wꘚ>׮mIJo׼YlL&эy=kRPzL-W ",} cJc2)BT|#xuɥeA&uR>l]I iɏ%&nޣ_ԟ/o]ۂcr^1]kcZ4qD7 wLS.]cU0GA48)M}})0/L W1+(<ᱜ?h} h +'Lɳn!u҂]aDcꚾx c} >(뗁ON]-Sj}451H+ rƴ15nL]r?-Ժ1q3EYc& +N}#A==5ԏ7vb)R/U^qyZ,]2ISEaN+=\b_V!W-//JN>L۬8"'9m +KϮ^t@z,.DՋ+ + +@ybU3kZim֎IЈ_t?sjr[YVNM'K~\R~bLmX1nbX"ߊǤyj; t(WJ@؃m>cҫ'm%Q +Pi0&h6irI"Fcr:¼vXڋXA"ZxJJs͑%zC%G I(s +&jjs:)kj9' + 'n!GL%^x(Y: + +p?VLST(/D +4D/p,T~a͇Y5MOKubsYQĕZ_B)H?qei|0(Wc6eV$ETac}4~{S;qD]-apu(rΝ:ui(&.Uk*zG,]&M?J?Z7/T1Og6FH&:Ex5~%'sGҺhd>k9rrͺc5ɼ̚ &OAȎVmNMLG%Gh +rY +S}#tGZ(ٖuk0r#zsHúp̑1{>d0Zh *BTa #/!OCa;A +Ƙo;0^v=ɹZk)P~M͖%̣pa;P{hadm"nla諗Tw{[H1z UjDLU#>q/ːmGhv>'/ Sxc4 Xh) yO'ū|lx y< !S m Ŧ1rm67v]!6Z;Ʌ( +U@7= \w:_Gm?,E;A! 9aہn\8ӅHvowFdz:z SZxS #"_HJ4~l1\xU޹Ba3?R=`NAw?Ow~ +?> GkC~Ýua 0HD{(aFS `"l;'Qԑ!;D΃5_\8ːCu ~aǻK~ +tW4|F0W.M~2 s +Fl |TsE-@Cx @O"v5CG4z"wUyO\fq)_^wF{ǁ#@>嬆п?.8'm6=88iUzǹRwSfpǿ!%NCU?8auR̟F-ghe~fH8ưdۙW|u{`7e@C 1uC@~ǀ?(۟/] ]Sdl::ЩDL.:ʈſ [AGyr(ɵv0"S ٹiwj]#qJ|sD]D_ [[O.n9~QA8 :Aguh482^x;8b ?VߧҖ:lh>G[ϕ}>Sr?e@s5=Q?D'ZAڋ.  1|'bBZq ͥ*M;٭2tI\,ٙH:tE]l\a֕ +寀87/yZ臍;Iwΐ=K)W@GthJ:&{.ڍS+ˁtQGDF%|Q=QΥ4u3K w*DvWf{NM!_2DŽ.}NdMu{Fz:yyNkLukNGօ9y,Ps/ Gc}s: F WrTvvKAm5CZcwnI< 7Љσf/?fFsU=ߞ:mbXjC1\ 0[A?ྫ *zwפ;?*Rghj#l*;֜CRGуZ#hmh7`Ǯ@ȱ^eVUN:ˣsfOӏ qyq I$;wۍ,zB)x Hg}5x<h@.Oy_Uy@^@8ӔH8ቑ@8@qtgLᩑ@x3g8/|;DH |d$O`_(֭v{[h>{N'ν/&)H=u^s]@c-;~;o)nşS+lSu3;@N'zzćvUgO o^`Z|np x @< ~ }R.ЛzstcMJt]T߆߂hP?_wBIQ<"P%?HCa~ ߎf!QCn:EɹOQ:QfO.BRj+u4PW!}7<U6V16ɭ\^˜Z|w8d8v(sWl7Y;9N4?^ՄiúHS՝(:yrVzgiXLwg;9avt=>?uNx 5+gxrꮳi_iɜ9s=㽗O}&w?ERβX>W̢x~p68obOq2~cp6И PQ Pbqun{Dj1mbB}KhlS5L/^k]1WRN|nrqϾ]h7d(yUZy1Snh]&35I=`GvSSzW?P5uү4y?5#/Q3YC=+|!TOvѼWPy/5r {Z}yue4NO|;- ݕant7hq;&iQ[8u7 2yd!+YvUBw?dy71m:'$%7&A?ĔTgK 2‘A2YI,j)QH+F92 GGmݧ-ZmGVNj+9r(c:-6Ծi;r|p;5y 70 J>NP!0,קK So}[}sս^dM~ؙ{7)=G .lG?=t ut)dRu.kF9ojξi~ǩ} 2 +r=%X9'Y}=]1:B@cs6 |wS}Eg_J3Bk={dަ o)b7 + +Cw(d:裾y˷h, ֮LU'3}19L)=f]왑mooml>lĺ"h{^=;u߇~ziSߢdK1_RGh$07j`?mX z[ض@^)E(q*MRDW [8&? + +j<Iŏ Spy9G8Zv=Od} @}c^|!^CJ/e$oqJpCơU3xܵ}iv=[}I*/<@V/g1oFepWq8Ҫ1loFxuv>4vWQVQ\_χBY3OW}JE6yWy2]9 Sf b }G]௿Y +u \4@6,Yauz%TsiuyIKר!~NMd=ӨfE 5~(;eb/")6wv>z),ȡS~A*ogOyfcT=Vq+mF+O}@ +91ȳi"d__g0^덟o-e4Bc'c 0y|*հD2>y_]E_#^_?Q/E-Wia//}jC﷡1߃ +ٯwBx DrԬWdYHA1*믷BVsdF- r!#;?#b>\I SE; QW(w~d\? c;0#X;a|w;eӓy W>́}ҩ<ͦ`wO_>` +(WaNy@~{[I5g_wŶacRVh70O,,iybFX ٜTpޥsp^'\K| yR~+exAS`U +,;b;%n'/TCB~+g Ls<,z6q85D{[|.um0'*Of9}F3лzk>uOG#LX)Ž!g A_EŻ'p>~I:y~)o9- +5v#5Y#_ uk_8~}Y7h3e9Ǩ1&<ճCsGowbA UTg7ls)~;WXFm_͒ yd8h1 +axN +`ֹ7ۑ6g?&B< =5-;\wh[1 wFڴ}3 =w{Žʂ+2\uͲX|7 +gg!\ 4h]\h^ƲWy-3ԃQq*>C ?zoD5Mk.@Ľ=/B\Z}\E~[Ȼ8 d>xJ_S'廯m{4Τ/jC,Yy9K l9,?w_{By2~>JCu?Q,~C'/n?ْ4? +S,'!e>ߚu4:'Bu@˜?hl'=$OW,yo)b!x==Tj~>|}60qR|w_le޳ s!c  y +w=#2+iG~U1w49νԆc;(:X.'>'uC^@Ek{ 7rMcwIOk®vBZ) +M 崖iTaVh@ZV=+B9sr5t@:{ԟ6S:H\W.>%lr]{ZoyEỉ+y[kzk pd8' +‪1Uu@+hHzN'N^y Ϥoi <8~gu6tHS5g?&:T.ӈcc@ oü{TC7wMyggx߱|Ns`W tEuIyIN҅5 k/q<ƱP<,ip<pKv eAo$]'iVewo9+sl/sX&ðp($ tv-q{tts );GAҾ%BLv){iC LBzi=0gMo&:~| 8"H_A}mK +5Ict_LWGӕw}T)K\4+te lO-*xGw(b[p0ar+&-W#-čJ*( +d irŢ/0K6r>d%+]Jn X{mi}c{V~\VDΚJVN2{c '٭iD 㕓 +;)*~rKjť[?ڨxZQ @o&wP=ɠP?_5I4qP_pRTy<_PH +5ij]o]e.yYbV`a˷ljSld59,&, ;A0MIJz*nTyҚiO]iN>9?t!R>=ɨ]Tv:cUv +c.֜:>#uaZ~cJs՗М;Jo*ZysHozx+_zyCgzOϯJye8A9ucSQeo U<>lolr`״NC0#`lʅ i"_YX0B?zImE 6`BBe0CfVxuf3 +gl0waR&nk˝Ne9n%aME!g`{El"Z$u5@o3wn-I3kBa޾VCkh0qPantjt]O64jFEf '?@,OEY͢'OʲYs[縍6ebǰ--몟IUe%>/+5UrB44 TTT%*+}}-rB\'4D2!Ȉ49R"I ޲ ͩoLRƔ7a=wOE5jZz@sչ*U*wUEUwnB?ȿNUxJOy||OCy_r>Ȓk ꎀ_D#! naoP<3ymyZ=뼊V5lj7[nk''Zrrrr֢jf YvZZ,y{-{J}ȾΝv^mne%ᣑRj Εg }]OCg3L o;J>|/m, +tyLZ½+O6gY޸.}o x&?P:A5G@^d`Wf"IA$ DI&< QL,1BwHJ"وSPgVM'g,cY)fXj +WOѲ G,;k 򓑹}ͬZƎe2qZ`bԩ`G@j(T+~|'PiFaw-inyt{y5ut>W&1+Gj<^]TlvYrvSjZNuV8 Ia A/-A~C铔(xwFՈA iܩrZ{7<)p!膧1k_M5-RC9 @!#ӶĶB*#cbM?[#'l>\K Ya^یBa)UDz΀|z4N;2ݠ*>*-42#MRDoh +^i'Q~L  4˵ғS +Z>u&ۻOOF֨6>O=5CP?>bF{ɄMDFhp.u(:!Ҵ$X|KLJi }uHJ=j mo4VD #vu>F}_?aGF">2mN#谑h0ZDtF@_4FXVjDph,#MceMkhb]@h/Ɉ!!#9DBی?c&&\ y^p15&_m;K9w} +vZ0Xgr ~ɐ8k:f=ۮeoI|{M^vzDŚ/%&Y^ +endstream endobj 9502 0 obj <> endobj 9503 0 obj <>stream +hTQn0+*5$,*UPN%E*2䐿K vfs['h;g%;ۙi> εh-w*S1=m { Cΰ8GJ/an,"<7?ӿ#t.f7CZ5UU:&*8 ;ЪH*qa! S3o\g:-$eYa+ S"v(P#r(ˉHZ%+U[J1;X9aтxK7S%;]e3:9ݶ|4.[S +endstream endobj 9504 0 obj <> endobj 9505 0 obj <> endobj 9506 0 obj <>stream +hޜX{p\U!i}o0% LgIi`'F+~?~C+ɖ,G$u +&tZI:m@` +3 ]gUJL p?펴s;9wtdNN}SOQnΙ-[oﺝ 7ytFF~etёoodGF7\w}'GNx?j飥^%›?E9[ro-[vcm|o*zmg|Vk!V%%2))aai٪LʶI;&,\v(9xn7t#NJwU>g2.WIɒ 6e]TtI' Y0yJ-iy>d[`o~`T8nȄޡA3H0 ZD.l6}O鞆TpTّ(Q,QM24S%,R$RrG]i``F`VY G0#y݀p' +.\vLC8(ٰYD2-4sܸ0! }N'N Nx: ,d"˳|Xc8Iz@. ӧ_~}h\jM7ξN *LeՉc8ꨔȶHe)b 9V?|h>y_9xfZ#YNIC<  a!䀳p9օB~1_/wɽŷF;d @:R\óvZl@.dT +5Lw)Yྣ"SE53ۉ軾Ly/rrCΤy5 3Њ)+6m'ƶhpp.B#62Jk79+z_4^ޘ^S9?QoIȒWXO UZ c#{J |#X{2Ѻ}+5^<*wJ"S'qQz&a.ۮj|8Ch$y\{p7= i:kAőq S2#׋yl !d24ȀB}-]x]_ʯ{4]WU'6GmɌl)!z ?C'l_,ر]C 5Guw Eے51jĤ]3qB8K9ii7'h5wc_߱Oߨ=jcdPԗ~_fff}vf6#cWH><=Iǖ'̬CM.."6 u<6WnFpЄUfEy5sO_'')m.?{aEYFWZR k^ͫ @׀\.5D]l:u8t~{K~lntIgK~ZYwo EDIJh%cBk<̜ɭLKLŨAD8O.֠=PyYpM>gzROVXņ\Eb$YLEQAmRk&A@rc;I+nE4@'/xb!, |vJWfyN5 s0N$gFG5Fom#uQڰr.gr"E" ySDZIRdUPyйR, PdenX@c`4K!,ŖDuWЗihiM.4s:c6|fD@kr.c{^2/Ά͖i,-; + =X QOn5'X'w>{ć2.' uAUuV$V*E,1 K-K:ٻy7tؓxz&;յYvK$󗴗o3jg#"炋/O,򜾡ʚЩ7Z2 ĩgU]4 Z]TAぱuMvmȆbfEW.|`CR/:z~{]ZiLbZ'#@b7șcOMITk<[ ϒjHGI7ԅ8vW3溟fN+.1>6FZvy:l@Go-nK,׀eEZSمJO<\aq9͎B])?{Xmgiy_w Hg&Ĥ*L1©|m' qR<柈OlR=ÞꊃLu@^%^hRTDdd n Ӑ ^Q7ciќ2lER"Jevb^ Q"߹XqZ00eQ&ID6Q:-Vj5NW|G*Pt&xA1)!NUܿ[x$`0 gwꀉolT6a+?=R٥L :{xiAhSd".)*ʢ BCr $vF<5n2LXztqf,n(b^8 +a­4 amb̆Yj'!3vXEiəc.h^!BϤ +LB 4 +x>E idLfz'z^ +f6w>ƝGJN.*LxCF'mF&:> endobj 9508 0 obj <>stream +hb`` +endstream endobj 9509 0 obj <> endobj 9510 0 obj <> endobj 9511 0 obj <> endobj 9512 0 obj <>stream +h\WixUU)QvWiWrq0(Yv:$]oؒ%$e%! 1 TTqAeus[Sl{SXQVVR/=NR/x%Ejq"vm +pM֛ݷ-+e ו1nZ{0`0O,a)ceW #{12᲍eβ%-YRx꥛&~̰oP +ؐ^g_~r^z $77nϭ8yo]XRPy t(=^A) kR@?~G>:'c #c pkk^ڈ6Z?RT, _,`SQjz\A~]ݺM Y'OO=;| +KA.@(=619UU[fSyl~*<8FO~<ǚƪ0ݢ ^+"%O٤~DJk+ %3z!qo,c>u$|ڬ1 }ͲQWP$|} Ԅ>e@ ?7Q!hg.1dl+{lpnEO??1{V5vptTOVQMC+R'Xӣ<1 +bx(3;Ft~0FUyIZnp=SމQz \^+ᙡ{[R <5Н=\ߨJГfUֆXkwaL +Tzjx +F+:.A %G>:aJ,ݸ:U16h SgE0 Q\B>?6}=]î7qUuW;O? RlO;'{\ .m_-4{8'޲R^6ng}_|1p8'rzcn=XWZ  < +.5lѝ0L +7g/PA/k+T`Ӵ3,`'|b(2 h|ɼx,'ykuĺgxwS+*ߎd5.>|oGc7} ߫j +D<#Zb>rYGQ\\xÎOOxxOF=`$S9tȖfpmFI*mrtF'-L>ﴇovG@VVk% +ȈE5JZE' 8H=Lm!]H잣8U#'GECTFJ"##cocAmN#BlŨ߸}3tg{,"RFnTZQaښ;~f5oo46'"T$Q4g7pCR5Ȯƨ-b h֛MwؒD5GT#͇tj' !>7+JBiqf?qSlH:M1".ԢM:] ۫j)LlbB7" }sμ^.1RY^5&qDpNҽH"bU!Gڊ~tcy<ǯ Ua6z1^2WmG7Ev 6Ir +ƈ\Xl}EB*KYV*W^Ƹ\N)+݉HwmF_,9C+gfa F<;}&E/WxZƺ*YՈIh=!4j"Z%P3/{SioUG+hp%;#:WS$-B;IbbVO:B$ +f:7M+t[Qj +%Fsi.mwB?Á3}3]b{r{_n`t6Y,l**<ƒ^]ΌCcQW@©d4N~ +֬mޑ߈56dMD'FՆ &;8fSXihГɰ:cuyڽ]V +n)td$ }7wıQFRrdN)"5-"LvIbt @-PČLGuP*1AY1DRZ/g]:vEYd8ORX8n^KAZm +|=7<Ҝ`*[Jc`KxM61;Gz95NasFJ l:Zubo0VJ|L( "٫AaŸ9BSX"n~v4/hӐ{;EGL9yO[uW +U9kv?4I!63 &FsHrwmM(uOoTU[_mpSeh*G~ğH9Q R_T.vUeVFRIiCMkSrB2Iκϩ̷ys/Nz"Hd=s@7ۺ(jL"k3 I.*"]o/v2L(ND"QX ,6i{i]ܪ&؎oԋvaro H[oM9+o嬣>U  /U:DjH F"6~1^k)C661 B0 &PʕJ#׆/f"2Յ@ 'Yl$c%iࢃ<ҒE-Mضzh5rK^25YÔzZ 0QpZdkdPyA{E:zScDžErii#.uo#E8xZ [}EB~(,›]jB.2dĵ~ KU- +||RYk;1 rTurbd\1&=Aݽ~[h;xJ/N*pE*o>~wwū+3Gajd^g;r5`$䀒'"GB#AC6pҫW2{VEWkkT `f*ohmUfiE2]1j)OKX15x~ۀ@PM9}A7rSJҷ7~>&T$,~~ 'gsY_,Ż"`Ӓ{H} dE;XŁpq/# +endstream endobj 9513 0 obj <>stream +hTRn0{L !"Їwb/)R1!}wmHwfvo ě'h;)3^:ݩi^ q~o*9NG-w2~4\`qLND~af4<7ğ߭"HNf6 +]c.ku h(V}6. +'JTtK8K> endobj 9515 0 obj <> endobj 9516 0 obj <>/IDTree 9517 0 R/K 9518 0 R/ParentTree 9519 0 R/ParentTreeNextKey 448/RoleMap<>/Type/StructTreeRoot>> endobj 9517 0 obj <> endobj 9518 0 obj <> endobj 9519 0 obj <> endobj 9520 0 obj <> endobj 9521 0 obj <> endobj 9522 0 obj <> endobj 9523 0 obj <> endobj 9524 0 obj <> endobj 9525 0 obj <> endobj 9526 0 obj <> endobj 9527 0 obj <>11457 0 R]/P 9853 0 R/Pg 9450 0 R/S/Link>> endobj 9528 0 obj <>11455 0 R]/P 9853 0 R/Pg 9450 0 R/S/Link>> endobj 9529 0 obj <>11453 0 R]/P 9854 0 R/Pg 9450 0 R/S/Link>> endobj 9530 0 obj <>11451 0 R]/P 9854 0 R/Pg 9450 0 R/S/Link>> endobj 9531 0 obj <>11449 0 R]/P 9855 0 R/Pg 9450 0 R/S/Link>> endobj 9532 0 obj <>11447 0 R]/P 9856 0 R/Pg 9450 0 R/S/Link>> endobj 9533 0 obj <>11445 0 R]/P 9857 0 R/Pg 9450 0 R/S/Link>> endobj 9534 0 obj <>11443 0 R]/P 9858 0 R/Pg 9450 0 R/S/Link>> endobj 9535 0 obj <>/P 9858 0 R/Pg 9450 0 R/S/Link>> endobj 9536 0 obj <>/P 9858 0 R/Pg 9450 0 R/S/Link>> endobj 9537 0 obj <>11435 0 R 11436 0 R 11437 0 R 11438 0 R 11439 0 R]/P 9858 0 R/Pg 9450 0 R/S/Link>> endobj 9538 0 obj <>11433 0 R]/P 9859 0 R/Pg 9450 0 R/S/Link>> endobj 9539 0 obj <>/P 9859 0 R/Pg 9450 0 R/S/Link>> endobj 9540 0 obj <>11428 0 R 11429 0 R 11430 0 R]/P 9859 0 R/Pg 9450 0 R/S/Link>> endobj 9541 0 obj <>11426 0 R]/P 9860 0 R/Pg 9450 0 R/S/Link>> endobj 9542 0 obj <>/P 9860 0 R/Pg 9450 0 R/S/Link>> endobj 9543 0 obj <>11421 0 R 11422 0 R 11423 0 R]/P 9860 0 R/Pg 9450 0 R/S/Link>> endobj 9544 0 obj <>11419 0 R]/P 9861 0 R/Pg 9450 0 R/S/Link>> endobj 9545 0 obj <>11417 0 R]/P 9861 0 R/Pg 9450 0 R/S/Link>> endobj 9546 0 obj <>11415 0 R]/P 9862 0 R/Pg 9450 0 R/S/Link>> endobj 9547 0 obj <>/P 9862 0 R/Pg 9450 0 R/S/Link>> endobj 9548 0 obj <>11410 0 R 11411 0 R 11412 0 R]/P 9862 0 R/Pg 9450 0 R/S/Link>> endobj 9549 0 obj <>11408 0 R]/P 9863 0 R/Pg 9450 0 R/S/Link>> endobj 9550 0 obj <>11406 0 R]/P 9863 0 R/Pg 9450 0 R/S/Link>> endobj 9551 0 obj <>11404 0 R]/P 9864 0 R/Pg 9450 0 R/S/Link>> endobj 9552 0 obj <>/P 9864 0 R/Pg 9450 0 R/S/Link>> endobj 9553 0 obj <>11399 0 R 11400 0 R 11401 0 R]/P 9864 0 R/Pg 9450 0 R/S/Link>> endobj 9554 0 obj <>11397 0 R]/P 9865 0 R/Pg 9450 0 R/S/Link>> endobj 9555 0 obj <>/P 9865 0 R/Pg 9450 0 R/S/Link>> endobj 9556 0 obj <>11392 0 R 11393 0 R 11394 0 R]/P 9865 0 R/Pg 9450 0 R/S/Link>> endobj 9557 0 obj <>11390 0 R]/P 9866 0 R/Pg 9450 0 R/S/Link>> endobj 9558 0 obj <>11388 0 R]/P 9867 0 R/Pg 9450 0 R/S/Link>> endobj 9559 0 obj <>11386 0 R]/P 9868 0 R/Pg 9450 0 R/S/Link>> endobj 9560 0 obj <>/P 9868 0 R/Pg 9450 0 R/S/Link>> endobj 9561 0 obj <>/P 9868 0 R/Pg 9450 0 R/S/Link>> endobj 9562 0 obj [9939 0 R 9940 0 R 11382 0 R 9936 0 R 9937 0 R 11380 0 R 9938 0 R 11378 0 R 9934 0 R 9935 0 R 11376 0 R 9932 0 R 9933 0 R 11374 0 R 9930 0 R 9931 0 R 11372 0 R 9928 0 R 9929 0 R 11370 0 R 9925 0 R 9926 0 R 11368 0 R 9927 0 R 11366 0 R 9923 0 R 9924 0 R 11364 0 R 9921 0 R 9922 0 R 11362 0 R 9919 0 R 9920 0 R 11360 0 R 9917 0 R 9918 0 R 11358 0 R 9915 0 R 9916 0 R 11356 0 R 9913 0 R 9914 0 R 11354 0 R 9911 0 R 9912 0 R 11352 0 R 9908 0 R 9909 0 R 11350 0 R 9910 0 R 11348 0 R 9906 0 R 9907 0 R 11346 0 R 9904 0 R 9905 0 R 11344 0 R 9902 0 R 9903 0 R 11342 0 R 9900 0 R 9901 0 R 11340 0 R 9898 0 R 9899 0 R 11338 0 R 9896 0 R 9897 0 R 11336 0 R 9894 0 R 9895 0 R 11334 0 R 9892 0 R 9893 0 R 11332 0 R 11328 0 R 11329 0 R 11330 0 R] endobj 9563 0 obj <>11382 0 R]/P 9869 0 R/Pg 9456 0 R/S/Link>> endobj 9564 0 obj <>11380 0 R]/P 9870 0 R/Pg 9456 0 R/S/Link>> endobj 9565 0 obj <>11378 0 R]/P 9870 0 R/Pg 9456 0 R/S/Link>> endobj 9566 0 obj <>11376 0 R]/P 9871 0 R/Pg 9456 0 R/S/Link>> endobj 9567 0 obj <>11374 0 R]/P 9872 0 R/Pg 9456 0 R/S/Link>> endobj 9568 0 obj <>11372 0 R]/P 9873 0 R/Pg 9456 0 R/S/Link>> endobj 9569 0 obj <>11370 0 R]/P 9874 0 R/Pg 9456 0 R/S/Link>> endobj 9570 0 obj <>11368 0 R]/P 9875 0 R/Pg 9456 0 R/S/Link>> endobj 9571 0 obj <>11366 0 R]/P 9875 0 R/Pg 9456 0 R/S/Link>> endobj 9572 0 obj <>11364 0 R]/P 9876 0 R/Pg 9456 0 R/S/Link>> endobj 9573 0 obj <>11362 0 R]/P 9877 0 R/Pg 9456 0 R/S/Link>> endobj 9574 0 obj <>11360 0 R]/P 9878 0 R/Pg 9456 0 R/S/Link>> endobj 9575 0 obj <>11358 0 R]/P 9879 0 R/Pg 9456 0 R/S/Link>> endobj 9576 0 obj <>11356 0 R]/P 9880 0 R/Pg 9456 0 R/S/Link>> endobj 9577 0 obj <>11354 0 R]/P 9881 0 R/Pg 9456 0 R/S/Link>> endobj 9578 0 obj <>11352 0 R]/P 9882 0 R/Pg 9456 0 R/S/Link>> endobj 9579 0 obj <>11350 0 R]/P 9883 0 R/Pg 9456 0 R/S/Link>> endobj 9580 0 obj <>11348 0 R]/P 9883 0 R/Pg 9456 0 R/S/Link>> endobj 9581 0 obj <>11346 0 R]/P 9884 0 R/Pg 9456 0 R/S/Link>> endobj 9582 0 obj <>11344 0 R]/P 9885 0 R/Pg 9456 0 R/S/Link>> endobj 9583 0 obj <>11342 0 R]/P 9886 0 R/Pg 9456 0 R/S/Link>> endobj 9584 0 obj <>11340 0 R]/P 9887 0 R/Pg 9456 0 R/S/Link>> endobj 9585 0 obj <>11338 0 R]/P 9888 0 R/Pg 9456 0 R/S/Link>> endobj 9586 0 obj <>11336 0 R]/P 9889 0 R/Pg 9456 0 R/S/Link>> endobj 9587 0 obj <>11334 0 R]/P 9890 0 R/Pg 9456 0 R/S/Link>> endobj 9588 0 obj <>11332 0 R]/P 9891 0 R/Pg 9456 0 R/S/Link>> endobj 9589 0 obj <>11330 0 R]/P 9590 0 R/Pg 9456 0 R/S/Link>> endobj 9590 0 obj <> endobj 9591 0 obj <> endobj 9592 0 obj <> endobj 9593 0 obj <> endobj 9594 0 obj <> endobj 9595 0 obj <> endobj 9596 0 obj <> endobj 9597 0 obj <> endobj 9598 0 obj <> endobj 9599 0 obj <> endobj 9600 0 obj <> endobj 9601 0 obj <> endobj 9602 0 obj <> endobj 9603 0 obj <> endobj 9604 0 obj <> endobj 9605 0 obj <> endobj 9606 0 obj <> endobj 9607 0 obj <> endobj 9608 0 obj <> endobj 9609 0 obj <> endobj 9610 0 obj <> endobj 9611 0 obj <> endobj 9612 0 obj <> endobj 9613 0 obj <> endobj 9614 0 obj <> endobj 9615 0 obj <> endobj 9616 0 obj <> endobj 9617 0 obj <> endobj 9618 0 obj <> endobj 9619 0 obj <> endobj 9620 0 obj <> endobj 9621 0 obj <> endobj 9622 0 obj <> endobj 9623 0 obj <> endobj 9624 0 obj <> endobj 9625 0 obj <> endobj 9626 0 obj <> endobj 9627 0 obj <> endobj 9628 0 obj <> endobj 9629 0 obj <> endobj 9630 0 obj <> endobj 9631 0 obj <> endobj 9632 0 obj <> endobj 9633 0 obj <> endobj 9634 0 obj <> endobj 9635 0 obj <> endobj 9636 0 obj <> endobj 9637 0 obj <> endobj 9638 0 obj <> endobj 9639 0 obj <> endobj 9640 0 obj <> endobj 9641 0 obj <> endobj 9642 0 obj <> endobj 9643 0 obj <> endobj 9644 0 obj <> endobj 9645 0 obj <> endobj 9646 0 obj <> endobj 9647 0 obj <> endobj 9648 0 obj <> endobj 9649 0 obj <> endobj 9650 0 obj <> endobj 9651 0 obj <> endobj 9652 0 obj <> endobj 9653 0 obj <> endobj 9654 0 obj <> endobj 9655 0 obj <> endobj 9656 0 obj <> endobj 9657 0 obj <> endobj 9658 0 obj <> endobj 9659 0 obj <> endobj 9660 0 obj <> endobj 9661 0 obj <> endobj 9662 0 obj <> endobj 9663 0 obj <> endobj 9664 0 obj <> endobj 9665 0 obj <> endobj 9666 0 obj <> endobj 9667 0 obj <> endobj 9668 0 obj <> endobj 9669 0 obj <> endobj 9670 0 obj <> endobj 9671 0 obj <> endobj 9672 0 obj <> endobj 9673 0 obj <> endobj 9674 0 obj <> endobj 9675 0 obj <> endobj 9676 0 obj <> endobj 9677 0 obj <> endobj 9678 0 obj <> endobj 9679 0 obj <> endobj 9680 0 obj <> endobj 9681 0 obj <> endobj 9682 0 obj <> endobj 9683 0 obj <> endobj 9684 0 obj <> endobj 9685 0 obj <> endobj 9686 0 obj <> endobj 9687 0 obj <> endobj 9688 0 obj <> endobj 9689 0 obj <> endobj 9690 0 obj <> endobj 9691 0 obj <> endobj 9692 0 obj <> endobj 9693 0 obj <> endobj 9694 0 obj <> endobj 9695 0 obj <> endobj 9696 0 obj <> endobj 9697 0 obj <> endobj 9698 0 obj <> endobj 9699 0 obj <> endobj 9700 0 obj <> endobj 9701 0 obj <> endobj 9702 0 obj <> endobj 9703 0 obj <> endobj 9704 0 obj <> endobj 9705 0 obj <> endobj 9706 0 obj <> endobj 9707 0 obj <> endobj 9708 0 obj <> endobj 9709 0 obj <> endobj 9710 0 obj <> endobj 9711 0 obj <> endobj 9712 0 obj <> endobj 9713 0 obj <> endobj 9714 0 obj <> endobj 9715 0 obj <> endobj 9716 0 obj <> endobj 9717 0 obj <> endobj 9718 0 obj <> endobj 9719 0 obj <> endobj 9720 0 obj <> endobj 9721 0 obj <> endobj 9722 0 obj <> endobj 9723 0 obj <> endobj 9724 0 obj <> endobj 9725 0 obj <> endobj 9726 0 obj <> endobj 9727 0 obj <> endobj 9728 0 obj <> endobj 9729 0 obj <> endobj 9730 0 obj <> endobj 9731 0 obj <> endobj 9732 0 obj <> endobj 9733 0 obj <> endobj 9734 0 obj <> endobj 9735 0 obj <> endobj 9736 0 obj <> endobj 9737 0 obj <> endobj 9738 0 obj <> endobj 9739 0 obj <> endobj 9740 0 obj <> endobj 9741 0 obj <> endobj 9742 0 obj <> endobj 9743 0 obj <> endobj 9744 0 obj <> endobj 9745 0 obj <> endobj 9746 0 obj <> endobj 9747 0 obj <> endobj 9748 0 obj <> endobj 9749 0 obj <> endobj 9750 0 obj <> endobj 9751 0 obj <> endobj 9752 0 obj <> endobj 9753 0 obj <> endobj 9754 0 obj <> endobj 9755 0 obj <> endobj 9756 0 obj <> endobj 9757 0 obj <> endobj 9758 0 obj <> endobj 9759 0 obj <> endobj 9760 0 obj <> endobj 9761 0 obj <> endobj 9762 0 obj <> endobj 9763 0 obj <> endobj 9764 0 obj <> endobj 9765 0 obj <> endobj 9766 0 obj <> endobj 9767 0 obj <> endobj 9768 0 obj <> endobj 9769 0 obj <> endobj 9770 0 obj <> endobj 9771 0 obj <> endobj 9772 0 obj <> endobj 9773 0 obj <> endobj 9774 0 obj <> endobj 9775 0 obj <> endobj 9776 0 obj <> endobj 9777 0 obj <> endobj 9778 0 obj <> endobj 9779 0 obj <> endobj 9780 0 obj <> endobj 9781 0 obj <> endobj 9782 0 obj <> endobj 9783 0 obj <> endobj 9784 0 obj <> endobj 9785 0 obj <> endobj 9786 0 obj <> endobj 9787 0 obj <> endobj 9788 0 obj <> endobj 9789 0 obj <> endobj 9790 0 obj <> endobj 9791 0 obj <> endobj 9792 0 obj <> endobj 9793 0 obj <> endobj 9794 0 obj <> endobj 9795 0 obj <> endobj 9796 0 obj <> endobj 9797 0 obj <> endobj 9798 0 obj <> endobj 9799 0 obj <> endobj 9800 0 obj <> endobj 9801 0 obj <> endobj 9802 0 obj <> endobj 9803 0 obj <> endobj 9804 0 obj <> endobj 9805 0 obj <> endobj 9806 0 obj <> endobj 9807 0 obj <> endobj 9808 0 obj <> endobj 9809 0 obj <> endobj 9810 0 obj <> endobj 9811 0 obj <> endobj 9812 0 obj <> endobj 9813 0 obj <> endobj 9814 0 obj <> endobj 9815 0 obj <> endobj 9816 0 obj <> endobj 9817 0 obj <> endobj 9818 0 obj <> endobj 9819 0 obj <> endobj 9820 0 obj <> endobj 9821 0 obj <> endobj 9822 0 obj <> endobj 9823 0 obj <> endobj 9824 0 obj <> endobj 9825 0 obj <> endobj 9826 0 obj <> endobj 9827 0 obj <> endobj 9828 0 obj <> endobj 9829 0 obj <> endobj 9830 0 obj <> endobj 9831 0 obj <> endobj 9832 0 obj <> endobj 9833 0 obj <> endobj 9834 0 obj <> endobj 9835 0 obj <> endobj 9836 0 obj <> endobj 9837 0 obj <> endobj 9838 0 obj <> endobj 9839 0 obj <> endobj 9840 0 obj <> endobj 9841 0 obj <> endobj 9842 0 obj <> endobj 9843 0 obj <> endobj 9844 0 obj <> endobj 9845 0 obj <> endobj 9846 0 obj <> endobj 9847 0 obj <> endobj 9848 0 obj <> endobj 9849 0 obj <> endobj 9850 0 obj <> endobj 9851 0 obj <> endobj 9852 0 obj <> endobj 9853 0 obj <> endobj 9854 0 obj <> endobj 9855 0 obj <> endobj 9856 0 obj <> endobj 9857 0 obj <> endobj 9858 0 obj <> endobj 9859 0 obj <> endobj 9860 0 obj <> endobj 9861 0 obj <> endobj 9862 0 obj <> endobj 9863 0 obj <> endobj 9864 0 obj <> endobj 9865 0 obj <> endobj 9866 0 obj <> endobj 9867 0 obj <> endobj 9868 0 obj <> endobj 9869 0 obj <> endobj 9870 0 obj <> endobj 9871 0 obj <> endobj 9872 0 obj <> endobj 9873 0 obj <> endobj 9874 0 obj <> endobj 9875 0 obj <> endobj 9876 0 obj <> endobj 9877 0 obj <> endobj 9878 0 obj <> endobj 9879 0 obj <> endobj 9880 0 obj <> endobj 9881 0 obj <> endobj 9882 0 obj <> endobj 9883 0 obj <> endobj 9884 0 obj <> endobj 9885 0 obj <> endobj 9886 0 obj <> endobj 9887 0 obj <> endobj 9888 0 obj <> endobj 9889 0 obj <> endobj 9890 0 obj <> endobj 9891 0 obj <> endobj 9892 0 obj <> endobj 9893 0 obj <> endobj 9894 0 obj <> endobj 9895 0 obj <> endobj 9896 0 obj <> endobj 9897 0 obj <> endobj 9898 0 obj <> endobj 9899 0 obj <> endobj 9900 0 obj <> endobj 9901 0 obj <> endobj 9902 0 obj <> endobj 9903 0 obj <> endobj 9904 0 obj <> endobj 9905 0 obj <> endobj 9906 0 obj <> endobj 9907 0 obj <> endobj 9908 0 obj <> endobj 9909 0 obj <> endobj 9910 0 obj <> endobj 9911 0 obj <> endobj 9912 0 obj <> endobj 9913 0 obj <> endobj 9914 0 obj <> endobj 9915 0 obj <> endobj 9916 0 obj <> endobj 9917 0 obj <> endobj 9918 0 obj <> endobj 9919 0 obj <> endobj 9920 0 obj <> endobj 9921 0 obj <> endobj 9922 0 obj <> endobj 9923 0 obj <> endobj 9924 0 obj <> endobj 9925 0 obj <> endobj 9926 0 obj <> endobj 9927 0 obj <> endobj 9928 0 obj <> endobj 9929 0 obj <> endobj 9930 0 obj <> endobj 9931 0 obj <> endobj 9932 0 obj <> endobj 9933 0 obj <> endobj 9934 0 obj <> endobj 9935 0 obj <> endobj 9936 0 obj <> endobj 9937 0 obj <> endobj 9938 0 obj <> endobj 9939 0 obj <> endobj 9940 0 obj <> endobj 9941 0 obj <> endobj 9942 0 obj <> endobj 9943 0 obj <> endobj 9944 0 obj <> endobj 9945 0 obj <> endobj 9946 0 obj <> endobj 9947 0 obj <> endobj 9948 0 obj <> endobj 9949 0 obj <> endobj 9950 0 obj <> endobj 9951 0 obj <> endobj 9952 0 obj <> endobj 9953 0 obj <> endobj 9954 0 obj <> endobj 9955 0 obj <> endobj 9956 0 obj <> endobj 9957 0 obj <> endobj 9958 0 obj <> endobj 9959 0 obj <> endobj 9960 0 obj <> endobj 9961 0 obj <> endobj 9962 0 obj <> endobj 9963 0 obj <> endobj 9964 0 obj <> endobj 9965 0 obj <> endobj 9966 0 obj <> endobj 9967 0 obj <> endobj 9968 0 obj <> endobj 9969 0 obj <> endobj 9970 0 obj <> endobj 9971 0 obj <> endobj 9972 0 obj <> endobj 9973 0 obj <> endobj 9974 0 obj <> endobj 9975 0 obj <> endobj 9976 0 obj <> endobj 9977 0 obj <> endobj 9978 0 obj <> endobj 9979 0 obj <> endobj 9980 0 obj <> endobj 9981 0 obj <> endobj 9982 0 obj <> endobj 9983 0 obj <> endobj 9984 0 obj <> endobj 9985 0 obj <> endobj 9986 0 obj <> endobj 9987 0 obj <> endobj 9988 0 obj <> endobj 9989 0 obj <>10002 0 R]/P 9852 0 R/Pg 9450 0 R/S/Link>> endobj 9990 0 obj <> endobj 9991 0 obj <>/P 9852 0 R/Pg 9450 0 R/S/Link>> endobj 9992 0 obj <>/P 9852 0 R/Pg 9450 0 R/S/Link>> endobj 9993 0 obj <>9994 0 R 9995 0 R 9996 0 R 9997 0 R 9998 0 R]/P 9852 0 R/Pg 9450 0 R/S/Link>> endobj 9994 0 obj <> endobj 9995 0 obj <> endobj 9996 0 obj <> endobj 9997 0 obj <> endobj 9998 0 obj <> endobj 9999 0 obj <>/Border[0 0 0]/Rect[511.26 343.1 527.94 356.24]/StructParent 384/Subtype/Link/Type/Annot>> endobj 10000 0 obj <>/Border[0 0 0]/Rect[490.92 343.1 507.6 356.24]/StructParent 383/Subtype/Link/Type/Annot>> endobj 10001 0 obj <>/Border[0 0 0]/Rect[468.12 343.1 484.8 356.24]/StructParent 382/Subtype/Link/Type/Annot>> endobj 10002 0 obj <> endobj 10003 0 obj <>/Border[0 0 0]/Rect[374.58 343.1 462.06 356.24]/StructParent 381/Subtype/Link/Type/Annot>> endobj 10004 0 obj <> endobj 10005 0 obj <> endobj 10006 0 obj <>10011 0 R]/P 9851 0 R/Pg 9450 0 R/S/Link>> endobj 10007 0 obj <> endobj 10008 0 obj <>10009 0 R]/P 9851 0 R/Pg 9450 0 R/S/Link>> endobj 10009 0 obj <> endobj 10010 0 obj <>/Border[0 0 0]/Rect[511.26 355.1 527.94 368.24]/StructParent 380/Subtype/Link/Type/Annot>> endobj 10011 0 obj <> endobj 10012 0 obj <>/Border[0 0 0]/Rect[367.38 355.1 505.14 368.24]/StructParent 379/Subtype/Link/Type/Annot>> endobj 10013 0 obj <> endobj 10014 0 obj <> endobj 10015 0 obj <>10016 0 R]/P 9850 0 R/Pg 9450 0 R/S/Link>> endobj 10016 0 obj <> endobj 10017 0 obj <>/Border[0 0 0]/Rect[366.24 367.1 527.94 380.24]/StructParent 378/Subtype/Link/Type/Annot>> endobj 10018 0 obj <> endobj 10019 0 obj <> endobj 10020 0 obj <>10029 0 R]/P 9849 0 R/Pg 9450 0 R/S/Link>> endobj 10021 0 obj <> endobj 10022 0 obj <>/P 9849 0 R/Pg 9450 0 R/S/Link>> endobj 10023 0 obj <>10024 0 R 10025 0 R 10026 0 R]/P 9849 0 R/Pg 9450 0 R/S/Link>> endobj 10024 0 obj <> endobj 10025 0 obj <> endobj 10026 0 obj <> endobj 10027 0 obj <>/Border[0 0 0]/Rect[511.26 379.1 527.94 392.24]/StructParent 377/Subtype/Link/Type/Annot>> endobj 10028 0 obj <>/Border[0 0 0]/Rect[488.46 379.1 505.14 392.24]/StructParent 376/Subtype/Link/Type/Annot>> endobj 10029 0 obj <> endobj 10030 0 obj <>/Border[0 0 0]/Rect[360.12 379.1 482.34 392.24]/StructParent 375/Subtype/Link/Type/Annot>> endobj 10031 0 obj <> endobj 10032 0 obj <> endobj 10033 0 obj <>10034 0 R]/P 9848 0 R/Pg 9450 0 R/S/Link>> endobj 10034 0 obj <> endobj 10035 0 obj <>/Border[0 0 0]/Rect[367.38 391.1 527.94 404.24]/StructParent 374/Subtype/Link/Type/Annot>> endobj 10036 0 obj <> endobj 10037 0 obj <> endobj 10038 0 obj <>10039 0 R]/P 9847 0 R/Pg 9450 0 R/S/Link>> endobj 10039 0 obj <> endobj 10040 0 obj <>/Border[0 0 0]/Rect[357.96 403.1 527.94 416.24]/StructParent 373/Subtype/Link/Type/Annot>> endobj 10041 0 obj <> endobj 10042 0 obj <> endobj 10043 0 obj <>10044 0 R]/P 9846 0 R/Pg 9450 0 R/S/Link>> endobj 10044 0 obj <> endobj 10045 0 obj <>/Border[0 0 0]/Rect[367.38 415.1 527.94 428.24]/StructParent 372/Subtype/Link/Type/Annot>> endobj 10046 0 obj <> endobj 10047 0 obj <> endobj 10048 0 obj <>10049 0 R]/P 9845 0 R/Pg 9450 0 R/S/Link>> endobj 10049 0 obj <> endobj 10050 0 obj <>/Border[0 0 0]/Rect[357.96 427.1 527.94 440.24]/StructParent 371/Subtype/Link/Type/Annot>> endobj 10051 0 obj <> endobj 10052 0 obj <> endobj 10053 0 obj <>10054 0 R]/P 9844 0 R/Pg 9450 0 R/S/Link>> endobj 10054 0 obj <> endobj 10055 0 obj <>/Border[0 0 0]/Rect[372.96 439.1 527.94 452.24]/StructParent 370/Subtype/Link/Type/Annot>> endobj 10056 0 obj <> endobj 10057 0 obj <> endobj 10058 0 obj <>10059 0 R]/P 9843 0 R/Pg 9450 0 R/S/Link>> endobj 10059 0 obj <> endobj 10060 0 obj <>/Border[0 0 0]/Rect[363.48 451.16 527.94 464.24]/StructParent 369/Subtype/Link/Type/Annot>> endobj 10061 0 obj <> endobj 10062 0 obj <> endobj 10063 0 obj <>10064 0 R]/P 9842 0 R/Pg 9450 0 R/S/Link>> endobj 10064 0 obj <> endobj 10065 0 obj <>/Border[0 0 0]/Rect[372.96 463.16 527.94 476.24]/StructParent 368/Subtype/Link/Type/Annot>> endobj 10066 0 obj <> endobj 10067 0 obj <> endobj 10068 0 obj <>10069 0 R]/P 9841 0 R/Pg 9450 0 R/S/Link>> endobj 10069 0 obj <> endobj 10070 0 obj <>/Border[0 0 0]/Rect[363.48 475.16 527.94 488.24]/StructParent 367/Subtype/Link/Type/Annot>> endobj 10071 0 obj <> endobj 10072 0 obj <> endobj 10073 0 obj <>10074 0 R]/P 9840 0 R/Pg 9450 0 R/S/Link>> endobj 10074 0 obj <> endobj 10075 0 obj <>/Border[0 0 0]/Rect[372.96 487.16 527.94 500.24]/StructParent 366/Subtype/Link/Type/Annot>> endobj 10076 0 obj <> endobj 10077 0 obj <> endobj 10078 0 obj <>10079 0 R]/P 9839 0 R/Pg 9450 0 R/S/Link>> endobj 10079 0 obj <> endobj 10080 0 obj <>/Border[0 0 0]/Rect[359.04 499.16 527.94 512.24]/StructParent 365/Subtype/Link/Type/Annot>> endobj 10081 0 obj <> endobj 10082 0 obj <> endobj 10083 0 obj <>10084 0 R]/P 9838 0 R/Pg 9450 0 R/S/Link>> endobj 10084 0 obj <> endobj 10085 0 obj <>/Border[0 0 0]/Rect[374.58 511.16 527.94 524.24]/StructParent 364/Subtype/Link/Type/Annot>> endobj 10086 0 obj <> endobj 10087 0 obj <> endobj 10088 0 obj <>10089 0 R]/P 9837 0 R/Pg 9450 0 R/S/Link>> endobj 10089 0 obj <> endobj 10090 0 obj <>/Border[0 0 0]/Rect[366.84 523.16 527.94 536.24]/StructParent 363/Subtype/Link/Type/Annot>> endobj 10091 0 obj <> endobj 10092 0 obj <> endobj 10093 0 obj <>10094 0 R]/P 9836 0 R/Pg 9450 0 R/S/Link>> endobj 10094 0 obj <> endobj 10095 0 obj <>/Border[0 0 0]/Rect[365.7 535.16 527.94 548.24]/StructParent 362/Subtype/Link/Type/Annot>> endobj 10096 0 obj <> endobj 10097 0 obj <> endobj 10098 0 obj <>10099 0 R]/P 9835 0 R/Pg 9450 0 R/S/Link>> endobj 10099 0 obj <> endobj 10100 0 obj <>/Border[0 0 0]/Rect[366.84 547.16 527.94 560.24]/StructParent 361/Subtype/Link/Type/Annot>> endobj 10101 0 obj <> endobj 10102 0 obj <> endobj 10103 0 obj <>10104 0 R]/P 9834 0 R/Pg 9450 0 R/S/Link>> endobj 10104 0 obj <> endobj 10105 0 obj <>/Border[0 0 0]/Rect[374.58 559.16 527.94 572.24]/StructParent 360/Subtype/Link/Type/Annot>> endobj 10106 0 obj <> endobj 10107 0 obj <> endobj 10108 0 obj <>10109 0 R]/P 9833 0 R/Pg 9450 0 R/S/Link>> endobj 10109 0 obj <> endobj 10110 0 obj <>/Border[0 0 0]/Rect[369.06 571.16 527.94 584.24]/StructParent 359/Subtype/Link/Type/Annot>> endobj 10111 0 obj <> endobj 10112 0 obj <> endobj 10113 0 obj <>10114 0 R]/P 9832 0 R/Pg 9450 0 R/S/Link>> endobj 10114 0 obj <> endobj 10115 0 obj <>/Border[0 0 0]/Rect[366.84 583.16 527.94 596.24]/StructParent 358/Subtype/Link/Type/Annot>> endobj 10116 0 obj <> endobj 10117 0 obj <> endobj 10118 0 obj <>10119 0 R]/P 9831 0 R/Pg 9450 0 R/S/Link>> endobj 10119 0 obj <> endobj 10120 0 obj <>/Border[0 0 0]/Rect[365.16 595.16 527.94 608.24]/StructParent 357/Subtype/Link/Type/Annot>> endobj 10121 0 obj <> endobj 10122 0 obj <> endobj 10123 0 obj <>10124 0 R]/P 9830 0 R/Pg 9450 0 R/S/Link>> endobj 10124 0 obj <> endobj 10125 0 obj <>/Border[0 0 0]/Rect[365.16 607.16 527.94 620.24]/StructParent 356/Subtype/Link/Type/Annot>> endobj 10126 0 obj <> endobj 10127 0 obj <> endobj 10128 0 obj <>10129 0 R]/P 9829 0 R/Pg 9450 0 R/S/Link>> endobj 10129 0 obj <> endobj 10130 0 obj <>/Border[0 0 0]/Rect[365.7 619.16 527.94 632.24]/StructParent 355/Subtype/Link/Type/Annot>> endobj 10131 0 obj <> endobj 10132 0 obj <> endobj 10133 0 obj <>10134 0 R]/P 9828 0 R/Pg 9450 0 R/S/Link>> endobj 10134 0 obj <> endobj 10135 0 obj <>/Border[0 0 0]/Rect[372.36 631.16 527.94 644.24]/StructParent 354/Subtype/Link/Type/Annot>> endobj 10136 0 obj <> endobj 10137 0 obj <> endobj 10138 0 obj <>10139 0 R]/P 9827 0 R/Pg 9450 0 R/S/Link>> endobj 10139 0 obj <> endobj 10140 0 obj <>/Border[0 0 0]/Rect[372.36 643.16 527.94 656.24]/StructParent 353/Subtype/Link/Type/Annot>> endobj 10141 0 obj <> endobj 10142 0 obj <> endobj 10143 0 obj <>10148 0 R]/P 9826 0 R/Pg 9450 0 R/S/Link>> endobj 10144 0 obj <> endobj 10145 0 obj <>10146 0 R]/P 9826 0 R/Pg 9450 0 R/S/Link>> endobj 10146 0 obj <> endobj 10147 0 obj <>/Border[0 0 0]/Rect[511.26 655.16 527.94 668.24]/StructParent 352/Subtype/Link/Type/Annot>> endobj 10148 0 obj <> endobj 10149 0 obj <>/Border[0 0 0]/Rect[380.7 655.16 507.6 668.24]/StructParent 351/Subtype/Link/Type/Annot>> endobj 10150 0 obj <> endobj 10151 0 obj <> endobj 10152 0 obj <>10153 0 R]/P 9825 0 R/Pg 9450 0 R/S/Link>> endobj 10153 0 obj <> endobj 10154 0 obj <>/Border[0 0 0]/Rect[373.5 667.16 527.94 680.24]/StructParent 350/Subtype/Link/Type/Annot>> endobj 10155 0 obj <> endobj 10156 0 obj <> endobj 10157 0 obj <>10158 0 R]/P 9824 0 R/Pg 9450 0 R/S/Link>> endobj 10158 0 obj <> endobj 10159 0 obj <>/Border[0 0 0]/Rect[372.36 679.16 527.94 692.24]/StructParent 349/Subtype/Link/Type/Annot>> endobj 10160 0 obj <> endobj 10161 0 obj <> endobj 10162 0 obj <>10163 0 R]/P 9823 0 R/Pg 9450 0 R/S/Link>> endobj 10163 0 obj <> endobj 10164 0 obj <>/Border[0 0 0]/Rect[366.24 691.16 527.94 704.24]/StructParent 348/Subtype/Link/Type/Annot>> endobj 10165 0 obj <> endobj 10166 0 obj <> endobj 10167 0 obj <>10168 0 R]/P 9822 0 R/Pg 9450 0 R/S/Link>> endobj 10168 0 obj <> endobj 10169 0 obj <>/Border[0 0 0]/Rect[363.48 703.16 527.94 716.24]/StructParent 347/Subtype/Link/Type/Annot>> endobj 10170 0 obj <> endobj 10171 0 obj <> endobj 10172 0 obj <>10173 0 R]/P 9821 0 R/Pg 9450 0 R/S/Link>> endobj 10173 0 obj <> endobj 10174 0 obj <>/Border[0 0 0]/Rect[372.96 715.16 527.94 728.24]/StructParent 346/Subtype/Link/Type/Annot>> endobj 10175 0 obj <> endobj 10176 0 obj <> endobj 10177 0 obj <>10178 0 R]/P 9820 0 R/Pg 9450 0 R/S/Link>> endobj 10178 0 obj <> endobj 10179 0 obj <>/Border[0 0 0]/Rect[359.04 727.16 527.94 740.24]/StructParent 345/Subtype/Link/Type/Annot>> endobj 10180 0 obj <> endobj 10181 0 obj <> endobj 10182 0 obj <>10183 0 R]/P 9819 0 R/Pg 9450 0 R/S/Link>> endobj 10183 0 obj <> endobj 10184 0 obj <>/Border[0 0 0]/Rect[365.7 739.16 527.94 752.24]/StructParent 344/Subtype/Link/Type/Annot>> endobj 10185 0 obj <> endobj 10186 0 obj <> endobj 10187 0 obj <>10188 0 R]/P 9818 0 R/Pg 9450 0 R/S/Link>> endobj 10188 0 obj <> endobj 10189 0 obj <>/Border[0 0 0]/Rect[125.88 129.14 286.98 142.22]/StructParent 343/Subtype/Link/Type/Annot>> endobj 10190 0 obj <> endobj 10191 0 obj <> endobj 10192 0 obj <>10193 0 R]/P 9817 0 R/Pg 9450 0 R/S/Link>> endobj 10193 0 obj <> endobj 10194 0 obj <>/Border[0 0 0]/Rect[128.1 141.14 286.98 154.22]/StructParent 342/Subtype/Link/Type/Annot>> endobj 10195 0 obj <> endobj 10196 0 obj <> endobj 10197 0 obj <>10198 0 R]/P 9816 0 R/Pg 9450 0 R/S/Link>> endobj 10198 0 obj <> endobj 10199 0 obj <>/Border[0 0 0]/Rect[124.2 153.14 286.98 166.22]/StructParent 341/Subtype/Link/Type/Annot>> endobj 10200 0 obj <> endobj 10201 0 obj <> endobj 10202 0 obj <>10203 0 R]/P 9815 0 R/Pg 9450 0 R/S/Link>> endobj 10203 0 obj <> endobj 10204 0 obj <>/Border[0 0 0]/Rect[124.74 165.14 286.98 178.22]/StructParent 340/Subtype/Link/Type/Annot>> endobj 10205 0 obj <> endobj 10206 0 obj <> endobj 10207 0 obj <>10208 0 R]/P 9814 0 R/Pg 9450 0 R/S/Link>> endobj 10208 0 obj <> endobj 10209 0 obj <>/Border[0 0 0]/Rect[131.4 177.14 286.98 190.22]/StructParent 339/Subtype/Link/Type/Annot>> endobj 10210 0 obj <> endobj 10211 0 obj <> endobj 10212 0 obj <>10217 0 R]/P 9813 0 R/Pg 9450 0 R/S/Link>> endobj 10213 0 obj <> endobj 10214 0 obj <>10215 0 R]/P 9813 0 R/Pg 9450 0 R/S/Link>> endobj 10215 0 obj <> endobj 10216 0 obj <>/Border[0 0 0]/Rect[270.3 189.14 286.98 202.22]/StructParent 338/Subtype/Link/Type/Annot>> endobj 10217 0 obj <> endobj 10218 0 obj <>/Border[0 0 0]/Rect[139.74 189.14 266.64 202.22]/StructParent 337/Subtype/Link/Type/Annot>> endobj 10219 0 obj <> endobj 10220 0 obj <> endobj 10221 0 obj <>10222 0 R]/P 9812 0 R/Pg 9450 0 R/S/Link>> endobj 10222 0 obj <> endobj 10223 0 obj <>/Border[0 0 0]/Rect[125.34 201.14 286.98 214.22]/StructParent 336/Subtype/Link/Type/Annot>> endobj 10224 0 obj <> endobj 10225 0 obj <> endobj 10226 0 obj <>10227 0 R]/P 9811 0 R/Pg 9450 0 R/S/Link>> endobj 10227 0 obj <> endobj 10228 0 obj <>/Border[0 0 0]/Rect[126.42 213.14 286.98 226.22]/StructParent 335/Subtype/Link/Type/Annot>> endobj 10229 0 obj <> endobj 10230 0 obj <> endobj 10231 0 obj <>10232 0 R]/P 9810 0 R/Pg 9450 0 R/S/Link>> endobj 10232 0 obj <> endobj 10233 0 obj <>/Border[0 0 0]/Rect[112.56 225.14 286.98 238.22]/StructParent 334/Subtype/Link/Type/Annot>> endobj 10234 0 obj <> endobj 10235 0 obj <> endobj 10236 0 obj <>10237 0 R]/P 9809 0 R/Pg 9450 0 R/S/Link>> endobj 10237 0 obj <> endobj 10238 0 obj <>/Border[0 0 0]/Rect[128.1 237.14 286.98 250.22]/StructParent 333/Subtype/Link/Type/Annot>> endobj 10239 0 obj <> endobj 10240 0 obj <> endobj 10241 0 obj <>10242 0 R]/P 9808 0 R/Pg 9450 0 R/S/Link>> endobj 10242 0 obj <> endobj 10243 0 obj <>/Border[0 0 0]/Rect[120.3 249.14 286.98 262.22]/StructParent 332/Subtype/Link/Type/Annot>> endobj 10244 0 obj <> endobj 10245 0 obj <> endobj 10246 0 obj <>10247 0 R]/P 9807 0 R/Pg 9450 0 R/S/Link>> endobj 10247 0 obj <> endobj 10248 0 obj <>/Border[0 0 0]/Rect[119.22 261.14 286.98 274.22]/StructParent 331/Subtype/Link/Type/Annot>> endobj 10249 0 obj <> endobj 10250 0 obj <> endobj 10251 0 obj <>10252 0 R]/P 9806 0 R/Pg 9450 0 R/S/Link>> endobj 10252 0 obj <> endobj 10253 0 obj <>/Border[0 0 0]/Rect[120.3 273.14 286.98 286.22]/StructParent 330/Subtype/Link/Type/Annot>> endobj 10254 0 obj <> endobj 10255 0 obj <> endobj 10256 0 obj <>10257 0 R]/P 9805 0 R/Pg 9450 0 R/S/Link>> endobj 10257 0 obj <> endobj 10258 0 obj <>/Border[0 0 0]/Rect[128.1 285.14 286.98 298.22]/StructParent 329/Subtype/Link/Type/Annot>> endobj 10259 0 obj <> endobj 10260 0 obj <> endobj 10261 0 obj <>10262 0 R]/P 9804 0 R/Pg 9450 0 R/S/Link>> endobj 10262 0 obj <> endobj 10263 0 obj <>/Border[0 0 0]/Rect[122.52 297.14 286.98 310.22]/StructParent 328/Subtype/Link/Type/Annot>> endobj 10264 0 obj <> endobj 10265 0 obj <> endobj 10266 0 obj <>10267 0 R]/P 9803 0 R/Pg 9450 0 R/S/Link>> endobj 10267 0 obj <> endobj 10268 0 obj <>/Border[0 0 0]/Rect[120.3 309.14 286.98 322.28]/StructParent 327/Subtype/Link/Type/Annot>> endobj 10269 0 obj <> endobj 10270 0 obj <> endobj 10271 0 obj <>10272 0 R]/P 9802 0 R/Pg 9450 0 R/S/Link>> endobj 10272 0 obj <> endobj 10273 0 obj <>/Border[0 0 0]/Rect[118.62 321.14 286.98 334.28]/StructParent 326/Subtype/Link/Type/Annot>> endobj 10274 0 obj <> endobj 10275 0 obj <> endobj 10276 0 obj <>10277 0 R]/P 9801 0 R/Pg 9450 0 R/S/Link>> endobj 10277 0 obj <> endobj 10278 0 obj <>/Border[0 0 0]/Rect[118.62 333.14 286.98 346.28]/StructParent 325/Subtype/Link/Type/Annot>> endobj 10279 0 obj <> endobj 10280 0 obj <> endobj 10281 0 obj <>10282 0 R]/P 9800 0 R/Pg 9450 0 R/S/Link>> endobj 10282 0 obj <> endobj 10283 0 obj <>/Border[0 0 0]/Rect[119.22 345.14 286.98 358.28]/StructParent 324/Subtype/Link/Type/Annot>> endobj 10284 0 obj <> endobj 10285 0 obj <> endobj 10286 0 obj <>10287 0 R]/P 9799 0 R/Pg 9450 0 R/S/Link>> endobj 10287 0 obj <> endobj 10288 0 obj <>/Border[0 0 0]/Rect[125.88 357.14 286.98 370.28]/StructParent 323/Subtype/Link/Type/Annot>> endobj 10289 0 obj <> endobj 10290 0 obj <> endobj 10291 0 obj <>10292 0 R]/P 9798 0 R/Pg 9450 0 R/S/Link>> endobj 10292 0 obj <> endobj 10293 0 obj <>/Border[0 0 0]/Rect[125.88 369.14 286.98 382.28]/StructParent 322/Subtype/Link/Type/Annot>> endobj 10294 0 obj <> endobj 10295 0 obj <> endobj 10296 0 obj <>10297 0 R]/P 9797 0 R/Pg 9450 0 R/S/Link>> endobj 10297 0 obj <> endobj 10298 0 obj <>/Border[0 0 0]/Rect[125.88 381.14 286.98 394.28]/StructParent 321/Subtype/Link/Type/Annot>> endobj 10299 0 obj <> endobj 10300 0 obj <> endobj 10301 0 obj <>10302 0 R]/P 9796 0 R/Pg 9450 0 R/S/Link>> endobj 10302 0 obj <> endobj 10303 0 obj <>/Border[0 0 0]/Rect[125.88 393.14 286.98 406.28]/StructParent 320/Subtype/Link/Type/Annot>> endobj 10304 0 obj <> endobj 10305 0 obj <> endobj 10306 0 obj <>10307 0 R]/P 9795 0 R/Pg 9450 0 R/S/Link>> endobj 10307 0 obj <> endobj 10308 0 obj <>/Border[0 0 0]/Rect[125.88 405.14 286.98 418.28]/StructParent 319/Subtype/Link/Type/Annot>> endobj 10309 0 obj <> endobj 10310 0 obj <> endobj 10311 0 obj <>10312 0 R]/P 9794 0 R/Pg 9450 0 R/S/Link>> endobj 10312 0 obj <> endobj 10313 0 obj <>/Border[0 0 0]/Rect[125.88 417.14 286.98 430.28]/StructParent 318/Subtype/Link/Type/Annot>> endobj 10314 0 obj <> endobj 10315 0 obj <> endobj 10316 0 obj <>10317 0 R]/P 9793 0 R/Pg 9450 0 R/S/Link>> endobj 10317 0 obj <> endobj 10318 0 obj <>/Border[0 0 0]/Rect[134.16 429.14 286.98 442.28]/StructParent 317/Subtype/Link/Type/Annot>> endobj 10319 0 obj <> endobj 10320 0 obj <> endobj 10321 0 obj <>10326 0 R]/P 9792 0 R/Pg 9450 0 R/S/Link>> endobj 10322 0 obj <> endobj 10323 0 obj <>10324 0 R]/P 9792 0 R/Pg 9450 0 R/S/Link>> endobj 10324 0 obj <> endobj 10325 0 obj <>/Border[0 0 0]/Rect[270.3 441.14 286.98 454.28]/StructParent 316/Subtype/Link/Type/Annot>> endobj 10326 0 obj <> endobj 10327 0 obj <>/Border[0 0 0]/Rect[134.16 441.14 266.64 454.28]/StructParent 315/Subtype/Link/Type/Annot>> endobj 10328 0 obj <> endobj 10329 0 obj <> endobj 10330 0 obj <>10335 0 R]/P 9791 0 R/Pg 9450 0 R/S/Link>> endobj 10331 0 obj <> endobj 10332 0 obj <>10333 0 R]/P 9791 0 R/Pg 9450 0 R/S/Link>> endobj 10333 0 obj <> endobj 10334 0 obj <>/Border[0 0 0]/Rect[270.3 453.14 286.98 466.28]/StructParent 314/Subtype/Link/Type/Annot>> endobj 10335 0 obj <> endobj 10336 0 obj <>/Border[0 0 0]/Rect[134.16 453.14 266.64 466.28]/StructParent 313/Subtype/Link/Type/Annot>> endobj 10337 0 obj <> endobj 10338 0 obj <> endobj 10339 0 obj <>10340 0 R]/P 9790 0 R/Pg 9450 0 R/S/Link>> endobj 10340 0 obj <> endobj 10341 0 obj <>/Border[0 0 0]/Rect[126.96 465.14 286.98 478.28]/StructParent 312/Subtype/Link/Type/Annot>> endobj 10342 0 obj <> endobj 10343 0 obj <> endobj 10344 0 obj <>10345 0 R]/P 9789 0 R/Pg 9450 0 R/S/Link>> endobj 10345 0 obj <> endobj 10346 0 obj <>/Border[0 0 0]/Rect[125.88 477.14 286.98 490.28]/StructParent 311/Subtype/Link/Type/Annot>> endobj 10347 0 obj <> endobj 10348 0 obj <> endobj 10349 0 obj <>10350 0 R]/P 9788 0 R/Pg 9450 0 R/S/Link>> endobj 10350 0 obj <> endobj 10351 0 obj <>/Border[0 0 0]/Rect[119.76 489.14 286.98 502.28]/StructParent 310/Subtype/Link/Type/Annot>> endobj 10352 0 obj <> endobj 10353 0 obj <> endobj 10354 0 obj <>10355 0 R]/P 9787 0 R/Pg 9450 0 R/S/Link>> endobj 10355 0 obj <> endobj 10356 0 obj <>/Border[0 0 0]/Rect[117 501.14 286.98 514.28]/StructParent 309/Subtype/Link/Type/Annot>> endobj 10357 0 obj <> endobj 10358 0 obj <> endobj 10359 0 obj <>10360 0 R]/P 9786 0 R/Pg 9450 0 R/S/Link>> endobj 10360 0 obj <> endobj 10361 0 obj <>/Border[0 0 0]/Rect[117 513.14 286.98 526.28]/StructParent 308/Subtype/Link/Type/Annot>> endobj 10362 0 obj <> endobj 10363 0 obj <> endobj 10364 0 obj <>10365 0 R]/P 9785 0 R/Pg 9450 0 R/S/Link>> endobj 10365 0 obj <> endobj 10366 0 obj <>/Border[0 0 0]/Rect[117.54 525.14 286.98 538.28]/StructParent 307/Subtype/Link/Type/Annot>> endobj 10367 0 obj <> endobj 10368 0 obj <> endobj 10369 0 obj <>10370 0 R]/P 9784 0 R/Pg 9450 0 R/S/Link>> endobj 10370 0 obj <> endobj 10371 0 obj <>/Border[0 0 0]/Rect[124.74 537.14 286.98 550.28]/StructParent 306/Subtype/Link/Type/Annot>> endobj 10372 0 obj <> endobj 10373 0 obj <> endobj 10374 0 obj <>10375 0 R]/P 9783 0 R/Pg 9450 0 R/S/Link>> endobj 10375 0 obj <> endobj 10376 0 obj <>/Border[0 0 0]/Rect[128.64 549.14 286.98 562.28]/StructParent 305/Subtype/Link/Type/Annot>> endobj 10377 0 obj <> endobj 10378 0 obj <> endobj 10379 0 obj <>10380 0 R]/P 9782 0 R/Pg 9450 0 R/S/Link>> endobj 10380 0 obj <> endobj 10381 0 obj <>/Border[0 0 0]/Rect[120.3 561.14 286.98 574.28]/StructParent 304/Subtype/Link/Type/Annot>> endobj 10382 0 obj <> endobj 10383 0 obj <> endobj 10384 0 obj <>10385 0 R]/P 9781 0 R/Pg 9450 0 R/S/Link>> endobj 10385 0 obj <> endobj 10386 0 obj <>/Border[0 0 0]/Rect[135.84 573.14 286.98 586.28]/StructParent 303/Subtype/Link/Type/Annot>> endobj 10387 0 obj <> endobj 10388 0 obj <> endobj 10389 0 obj <>10390 0 R]/P 9780 0 R/Pg 9450 0 R/S/Link>> endobj 10390 0 obj <> endobj 10391 0 obj <>/Border[0 0 0]/Rect[123.66 585.14 286.98 598.28]/StructParent 302/Subtype/Link/Type/Annot>> endobj 10392 0 obj <> endobj 10393 0 obj <> endobj 10394 0 obj <>10395 0 R]/P 9779 0 R/Pg 9450 0 R/S/Link>> endobj 10395 0 obj <> endobj 10396 0 obj <>/Border[0 0 0]/Rect[123.66 597.14 286.98 610.28]/StructParent 301/Subtype/Link/Type/Annot>> endobj 10397 0 obj <> endobj 10398 0 obj <> endobj 10399 0 obj <>10400 0 R]/P 9778 0 R/Pg 9450 0 R/S/Link>> endobj 10400 0 obj <> endobj 10401 0 obj <>/Border[0 0 0]/Rect[135.84 609.14 286.98 622.28]/StructParent 300/Subtype/Link/Type/Annot>> endobj 10402 0 obj <> endobj 10403 0 obj <> endobj 10404 0 obj <>10405 0 R]/P 9777 0 R/Pg 9450 0 R/S/Link>> endobj 10405 0 obj <> endobj 10406 0 obj <>/Border[0 0 0]/Rect[153.66 655.16 286.98 668.24]/StructParent 299/Subtype/Link/Type/Annot>> endobj 10407 0 obj <> endobj 10408 0 obj <> endobj 10409 0 obj <>10410 0 R]/P 9776 0 R/Pg 9450 0 R/S/Link>> endobj 10410 0 obj <> endobj 10411 0 obj <>/Border[0 0 0]/Rect[153.66 667.16 286.98 680.24]/StructParent 298/Subtype/Link/Type/Annot>> endobj 10412 0 obj <> endobj 10413 0 obj <> endobj 10414 0 obj <>10415 0 R]/P 9775 0 R/Pg 9450 0 R/S/Link>> endobj 10415 0 obj <> endobj 10416 0 obj <>/Border[0 0 0]/Rect[153.66 679.16 286.98 692.24]/StructParent 297/Subtype/Link/Type/Annot>> endobj 10417 0 obj <> endobj 10418 0 obj <> endobj 10419 0 obj <>10420 0 R]/P 9774 0 R/Pg 9450 0 R/S/Link>> endobj 10420 0 obj <> endobj 10421 0 obj <>/Border[0 0 0]/Rect[153.66 691.16 286.98 704.24]/StructParent 296/Subtype/Link/Type/Annot>> endobj 10422 0 obj <> endobj 10423 0 obj <> endobj 10424 0 obj <>10425 0 R]/P 9773 0 R/Pg 9450 0 R/S/Link>> endobj 10425 0 obj <> endobj 10426 0 obj <>/Border[0 0 0]/Rect[153.66 703.16 286.98 716.24]/StructParent 295/Subtype/Link/Type/Annot>> endobj 10427 0 obj <> endobj 10428 0 obj <> endobj 10429 0 obj <>10430 0 R]/P 9772 0 R/Pg 9450 0 R/S/Link>> endobj 10430 0 obj <> endobj 10431 0 obj <>/Border[0 0 0]/Rect[153.66 715.16 286.98 728.24]/StructParent 294/Subtype/Link/Type/Annot>> endobj 10432 0 obj <> endobj 10433 0 obj <> endobj 10434 0 obj <>10435 0 R]/P 9771 0 R/Pg 9450 0 R/S/Link>> endobj 10435 0 obj <> endobj 10436 0 obj <>/Border[0 0 0]/Rect[153.66 727.16 286.98 740.24]/StructParent 293/Subtype/Link/Type/Annot>> endobj 10437 0 obj <> endobj 10438 0 obj <> endobj 10439 0 obj <>10440 0 R]/P 9770 0 R/Pg 9450 0 R/S/Link>> endobj 10440 0 obj <> endobj 10441 0 obj <>/Border[0 0 0]/Rect[159.18 739.16 286.98 752.24]/StructParent 292/Subtype/Link/Type/Annot>> endobj 10442 0 obj <> endobj 10443 0 obj <> endobj 10444 0 obj <>10445 0 R]/P 9769 0 R/Pg 9444 0 R/S/Link>> endobj 10445 0 obj <> endobj 10446 0 obj <>/Border[0 0 0]/Rect[400.14 129.14 527.94 142.22]/StructParent 290/Subtype/Link/Type/Annot>> endobj 10447 0 obj <> endobj 10448 0 obj <> endobj 10449 0 obj <>10450 0 R]/P 9768 0 R/Pg 9444 0 R/S/Link>> endobj 10450 0 obj <> endobj 10451 0 obj <>/Border[0 0 0]/Rect[400.14 141.14 527.94 154.22]/StructParent 289/Subtype/Link/Type/Annot>> endobj 10452 0 obj <> endobj 10453 0 obj <> endobj 10454 0 obj <>10455 0 R]/P 9767 0 R/Pg 9444 0 R/S/Link>> endobj 10455 0 obj <> endobj 10456 0 obj <>/Border[0 0 0]/Rect[400.14 153.14 527.94 166.22]/StructParent 288/Subtype/Link/Type/Annot>> endobj 10457 0 obj <> endobj 10458 0 obj <> endobj 10459 0 obj <>10460 0 R]/P 9766 0 R/Pg 9444 0 R/S/Link>> endobj 10460 0 obj <> endobj 10461 0 obj <>/Border[0 0 0]/Rect[400.14 165.14 527.94 178.22]/StructParent 287/Subtype/Link/Type/Annot>> endobj 10462 0 obj <> endobj 10463 0 obj <> endobj 10464 0 obj <>10465 0 R]/P 9765 0 R/Pg 9444 0 R/S/Link>> endobj 10465 0 obj <> endobj 10466 0 obj <>/Border[0 0 0]/Rect[400.14 177.14 527.94 190.22]/StructParent 286/Subtype/Link/Type/Annot>> endobj 10467 0 obj <> endobj 10468 0 obj <> endobj 10469 0 obj <>10470 0 R]/P 9764 0 R/Pg 9444 0 R/S/Link>> endobj 10470 0 obj <> endobj 10471 0 obj <>/Border[0 0 0]/Rect[400.14 189.14 527.94 202.22]/StructParent 285/Subtype/Link/Type/Annot>> endobj 10472 0 obj <> endobj 10473 0 obj <> endobj 10474 0 obj <>10475 0 R]/P 9763 0 R/Pg 9444 0 R/S/Link>> endobj 10475 0 obj <> endobj 10476 0 obj <>/Border[0 0 0]/Rect[400.14 201.14 527.94 214.22]/StructParent 284/Subtype/Link/Type/Annot>> endobj 10477 0 obj <> endobj 10478 0 obj <> endobj 10479 0 obj <>10480 0 R]/P 9762 0 R/Pg 9444 0 R/S/Link>> endobj 10480 0 obj <> endobj 10481 0 obj <>/Border[0 0 0]/Rect[400.14 213.14 527.94 226.22]/StructParent 283/Subtype/Link/Type/Annot>> endobj 10482 0 obj <> endobj 10483 0 obj <> endobj 10484 0 obj <>10485 0 R]/P 9761 0 R/Pg 9444 0 R/S/Link>> endobj 10485 0 obj <> endobj 10486 0 obj <>/Border[0 0 0]/Rect[400.14 225.14 527.94 238.22]/StructParent 282/Subtype/Link/Type/Annot>> endobj 10487 0 obj <> endobj 10488 0 obj <> endobj 10489 0 obj <>10490 0 R]/P 9760 0 R/Pg 9444 0 R/S/Link>> endobj 10490 0 obj <> endobj 10491 0 obj <>/Border[0 0 0]/Rect[394.62 237.14 527.94 250.22]/StructParent 281/Subtype/Link/Type/Annot>> endobj 10492 0 obj <> endobj 10493 0 obj <> endobj 10494 0 obj <>10495 0 R]/P 9759 0 R/Pg 9444 0 R/S/Link>> endobj 10495 0 obj <> endobj 10496 0 obj <>/Border[0 0 0]/Rect[400.14 249.14 527.94 262.22]/StructParent 280/Subtype/Link/Type/Annot>> endobj 10497 0 obj <> endobj 10498 0 obj <> endobj 10499 0 obj <>10500 0 R]/P 9758 0 R/Pg 9444 0 R/S/Link>> endobj 10500 0 obj <> endobj 10501 0 obj <>/Border[0 0 0]/Rect[400.14 261.14 527.94 274.22]/StructParent 279/Subtype/Link/Type/Annot>> endobj 10502 0 obj <> endobj 10503 0 obj <> endobj 10504 0 obj <>10505 0 R]/P 9757 0 R/Pg 9444 0 R/S/Link>> endobj 10505 0 obj <> endobj 10506 0 obj <>/Border[0 0 0]/Rect[400.14 273.14 527.94 286.22]/StructParent 278/Subtype/Link/Type/Annot>> endobj 10507 0 obj <> endobj 10508 0 obj <> endobj 10509 0 obj <>10510 0 R]/P 9756 0 R/Pg 9444 0 R/S/Link>> endobj 10510 0 obj <> endobj 10511 0 obj <>/Border[0 0 0]/Rect[400.14 285.14 527.94 298.22]/StructParent 277/Subtype/Link/Type/Annot>> endobj 10512 0 obj <> endobj 10513 0 obj <> endobj 10514 0 obj <>10515 0 R]/P 9755 0 R/Pg 9444 0 R/S/Link>> endobj 10515 0 obj <> endobj 10516 0 obj <>/Border[0 0 0]/Rect[400.14 297.14 527.94 310.22]/StructParent 276/Subtype/Link/Type/Annot>> endobj 10517 0 obj <> endobj 10518 0 obj <> endobj 10519 0 obj <>10520 0 R]/P 9754 0 R/Pg 9444 0 R/S/Link>> endobj 10520 0 obj <> endobj 10521 0 obj <>/Border[0 0 0]/Rect[400.14 309.14 527.94 322.28]/StructParent 275/Subtype/Link/Type/Annot>> endobj 10522 0 obj <> endobj 10523 0 obj <> endobj 10524 0 obj <>10525 0 R]/P 9753 0 R/Pg 9444 0 R/S/Link>> endobj 10525 0 obj <> endobj 10526 0 obj <>/Border[0 0 0]/Rect[400.14 321.14 527.94 334.28]/StructParent 274/Subtype/Link/Type/Annot>> endobj 10527 0 obj <> endobj 10528 0 obj <> endobj 10529 0 obj <>10530 0 R]/P 9752 0 R/Pg 9444 0 R/S/Link>> endobj 10530 0 obj <> endobj 10531 0 obj <>/Border[0 0 0]/Rect[400.14 333.14 527.94 346.28]/StructParent 273/Subtype/Link/Type/Annot>> endobj 10532 0 obj <> endobj 10533 0 obj <> endobj 10534 0 obj <>10535 0 R]/P 9751 0 R/Pg 9444 0 R/S/Link>> endobj 10535 0 obj <> endobj 10536 0 obj <>/Border[0 0 0]/Rect[400.14 345.14 527.94 358.28]/StructParent 272/Subtype/Link/Type/Annot>> endobj 10537 0 obj <> endobj 10538 0 obj <> endobj 10539 0 obj <>10540 0 R]/P 9750 0 R/Pg 9444 0 R/S/Link>> endobj 10540 0 obj <> endobj 10541 0 obj <>/Border[0 0 0]/Rect[394.62 357.14 527.94 370.28]/StructParent 271/Subtype/Link/Type/Annot>> endobj 10542 0 obj <> endobj 10543 0 obj <> endobj 10544 0 obj <>10545 0 R]/P 9749 0 R/Pg 9444 0 R/S/Link>> endobj 10545 0 obj <> endobj 10546 0 obj <>/Border[0 0 0]/Rect[391.8 369.14 527.94 382.28]/StructParent 270/Subtype/Link/Type/Annot>> endobj 10547 0 obj <> endobj 10548 0 obj <> endobj 10549 0 obj <>10550 0 R]/P 9748 0 R/Pg 9444 0 R/S/Link>> endobj 10550 0 obj <> endobj 10551 0 obj <>/Border[0 0 0]/Rect[391.8 381.14 527.94 394.28]/StructParent 269/Subtype/Link/Type/Annot>> endobj 10552 0 obj <> endobj 10553 0 obj <> endobj 10554 0 obj <>10555 0 R]/P 9747 0 R/Pg 9444 0 R/S/Link>> endobj 10555 0 obj <> endobj 10556 0 obj <>/Border[0 0 0]/Rect[379.56 393.14 527.94 406.28]/StructParent 268/Subtype/Link/Type/Annot>> endobj 10557 0 obj <> endobj 10558 0 obj <> endobj 10559 0 obj <>10560 0 R]/P 9746 0 R/Pg 9444 0 R/S/Link>> endobj 10560 0 obj <> endobj 10561 0 obj <>/Border[0 0 0]/Rect[351.84 405.14 527.94 418.28]/StructParent 267/Subtype/Link/Type/Annot>> endobj 10562 0 obj <> endobj 10563 0 obj <> endobj 10564 0 obj <>10565 0 R]/P 9745 0 R/Pg 9444 0 R/S/Link>> endobj 10565 0 obj <> endobj 10566 0 obj <>/Border[0 0 0]/Rect[380.7 417.14 527.94 430.28]/StructParent 266/Subtype/Link/Type/Annot>> endobj 10567 0 obj <> endobj 10568 0 obj <> endobj 10569 0 obj <>10570 0 R]/P 9744 0 R/Pg 9444 0 R/S/Link>> endobj 10570 0 obj <> endobj 10571 0 obj <>/Border[0 0 0]/Rect[366.84 429.14 527.94 442.28]/StructParent 265/Subtype/Link/Type/Annot>> endobj 10572 0 obj <> endobj 10573 0 obj <> endobj 10574 0 obj <>10575 0 R]/P 9743 0 R/Pg 9444 0 R/S/Link>> endobj 10575 0 obj <> endobj 10576 0 obj <>/Border[0 0 0]/Rect[381.24 441.14 527.94 454.28]/StructParent 264/Subtype/Link/Type/Annot>> endobj 10577 0 obj <> endobj 10578 0 obj <> endobj 10579 0 obj <>10580 0 R]/P 9742 0 R/Pg 9444 0 R/S/Link>> endobj 10580 0 obj <> endobj 10581 0 obj <>/Border[0 0 0]/Rect[352.38 453.14 527.94 466.28]/StructParent 263/Subtype/Link/Type/Annot>> endobj 10582 0 obj <> endobj 10583 0 obj <> endobj 10584 0 obj <>10585 0 R]/P 9741 0 R/Pg 9444 0 R/S/Link>> endobj 10585 0 obj <> endobj 10586 0 obj <>/Border[0 0 0]/Rect[373.5 465.14 527.94 478.28]/StructParent 262/Subtype/Link/Type/Annot>> endobj 10587 0 obj <> endobj 10588 0 obj <> endobj 10589 0 obj <>10590 0 R]/P 9740 0 R/Pg 9444 0 R/S/Link>> endobj 10590 0 obj <> endobj 10591 0 obj <>/Border[0 0 0]/Rect[357.96 477.14 527.94 490.28]/StructParent 261/Subtype/Link/Type/Annot>> endobj 10592 0 obj <> endobj 10593 0 obj <> endobj 10594 0 obj <>10595 0 R]/P 9739 0 R/Pg 9444 0 R/S/Link>> endobj 10595 0 obj <> endobj 10596 0 obj <>/Border[0 0 0]/Rect[357.96 489.14 527.94 502.28]/StructParent 260/Subtype/Link/Type/Annot>> endobj 10597 0 obj <> endobj 10598 0 obj <> endobj 10599 0 obj <>10600 0 R]/P 9738 0 R/Pg 9444 0 R/S/Link>> endobj 10600 0 obj <> endobj 10601 0 obj <>/Border[0 0 0]/Rect[367.38 535.16 527.94 548.24]/StructParent 259/Subtype/Link/Type/Annot>> endobj 10602 0 obj <> endobj 10603 0 obj <> endobj 10604 0 obj <>10605 0 R]/P 9737 0 R/Pg 9444 0 R/S/Link>> endobj 10605 0 obj <> endobj 10606 0 obj <>/Border[0 0 0]/Rect[360.72 547.16 527.94 560.24]/StructParent 258/Subtype/Link/Type/Annot>> endobj 10607 0 obj <> endobj 10608 0 obj <> endobj 10609 0 obj <>10610 0 R]/P 9736 0 R/Pg 9444 0 R/S/Link>> endobj 10610 0 obj <> endobj 10611 0 obj <>/Border[0 0 0]/Rect[363.48 559.16 527.94 572.24]/StructParent 257/Subtype/Link/Type/Annot>> endobj 10612 0 obj <> endobj 10613 0 obj <> endobj 10614 0 obj <>10615 0 R]/P 9735 0 R/Pg 9444 0 R/S/Link>> endobj 10615 0 obj <> endobj 10616 0 obj <>/Border[0 0 0]/Rect[370.68 571.16 527.94 584.24]/StructParent 256/Subtype/Link/Type/Annot>> endobj 10617 0 obj <> endobj 10618 0 obj <> endobj 10619 0 obj <>10620 0 R]/P 9734 0 R/Pg 9444 0 R/S/Link>> endobj 10620 0 obj <> endobj 10621 0 obj <>/Border[0 0 0]/Rect[364.56 583.16 527.94 596.24]/StructParent 255/Subtype/Link/Type/Annot>> endobj 10622 0 obj <> endobj 10623 0 obj <> endobj 10624 0 obj <>10625 0 R]/P 9733 0 R/Pg 9444 0 R/S/Link>> endobj 10625 0 obj <> endobj 10626 0 obj <>/Border[0 0 0]/Rect[350.7 595.16 527.94 608.24]/StructParent 254/Subtype/Link/Type/Annot>> endobj 10627 0 obj <> endobj 10628 0 obj <> endobj 10629 0 obj <>10630 0 R]/P 9732 0 R/Pg 9444 0 R/S/Link>> endobj 10630 0 obj <> endobj 10631 0 obj <>/Border[0 0 0]/Rect[357.96 607.16 527.94 620.24]/StructParent 253/Subtype/Link/Type/Annot>> endobj 10632 0 obj <> endobj 10633 0 obj <> endobj 10634 0 obj <>10635 0 R]/P 9731 0 R/Pg 9444 0 R/S/Link>> endobj 10635 0 obj <> endobj 10636 0 obj <>/Border[0 0 0]/Rect[351.24 619.16 527.94 632.24]/StructParent 252/Subtype/Link/Type/Annot>> endobj 10637 0 obj <> endobj 10638 0 obj <> endobj 10639 0 obj <>10640 0 R]/P 9730 0 R/Pg 9444 0 R/S/Link>> endobj 10640 0 obj <> endobj 10641 0 obj <>/Border[0 0 0]/Rect[373.5 631.16 527.94 644.24]/StructParent 251/Subtype/Link/Type/Annot>> endobj 10642 0 obj <> endobj 10643 0 obj <> endobj 10644 0 obj <>10645 0 R]/P 9729 0 R/Pg 9444 0 R/S/Link>> endobj 10645 0 obj <> endobj 10646 0 obj <>/Border[0 0 0]/Rect[358.5 643.16 527.94 656.24]/StructParent 250/Subtype/Link/Type/Annot>> endobj 10647 0 obj <> endobj 10648 0 obj <> endobj 10649 0 obj <>10650 0 R]/P 9728 0 R/Pg 9444 0 R/S/Link>> endobj 10650 0 obj <> endobj 10651 0 obj <>/Border[0 0 0]/Rect[365.16 655.16 527.94 668.24]/StructParent 249/Subtype/Link/Type/Annot>> endobj 10652 0 obj <> endobj 10653 0 obj <> endobj 10654 0 obj <>10655 0 R]/P 9727 0 R/Pg 9444 0 R/S/Link>> endobj 10655 0 obj <> endobj 10656 0 obj <>/Border[0 0 0]/Rect[362.34 667.16 527.94 680.24]/StructParent 248/Subtype/Link/Type/Annot>> endobj 10657 0 obj <> endobj 10658 0 obj <> endobj 10659 0 obj <>10660 0 R]/P 9726 0 R/Pg 9444 0 R/S/Link>> endobj 10660 0 obj <> endobj 10661 0 obj <>/Border[0 0 0]/Rect[361.26 679.16 527.94 692.24]/StructParent 247/Subtype/Link/Type/Annot>> endobj 10662 0 obj <> endobj 10663 0 obj <> endobj 10664 0 obj <>10665 0 R]/P 9725 0 R/Pg 9444 0 R/S/Link>> endobj 10665 0 obj <> endobj 10666 0 obj <>/Border[0 0 0]/Rect[351.84 691.16 527.94 704.24]/StructParent 246/Subtype/Link/Type/Annot>> endobj 10667 0 obj <> endobj 10668 0 obj <> endobj 10669 0 obj <>10670 0 R]/P 9724 0 R/Pg 9444 0 R/S/Link>> endobj 10670 0 obj <> endobj 10671 0 obj <>/Border[0 0 0]/Rect[351.84 703.16 527.94 716.24]/StructParent 245/Subtype/Link/Type/Annot>> endobj 10672 0 obj <> endobj 10673 0 obj <> endobj 10674 0 obj <>10675 0 R]/P 9723 0 R/Pg 9444 0 R/S/Link>> endobj 10675 0 obj <> endobj 10676 0 obj <>/Border[0 0 0]/Rect[364.02 715.16 527.94 728.24]/StructParent 244/Subtype/Link/Type/Annot>> endobj 10677 0 obj <> endobj 10678 0 obj <> endobj 10679 0 obj <>10680 0 R]/P 9722 0 R/Pg 9444 0 R/S/Link>> endobj 10680 0 obj <> endobj 10681 0 obj <>/Border[0 0 0]/Rect[392.34 727.16 527.94 740.24]/StructParent 243/Subtype/Link/Type/Annot>> endobj 10682 0 obj <> endobj 10683 0 obj <> endobj 10684 0 obj <>10685 0 R]/P 9721 0 R/Pg 9444 0 R/S/Link>> endobj 10685 0 obj <> endobj 10686 0 obj <>/Border[0 0 0]/Rect[379.02 739.16 527.94 752.24]/StructParent 242/Subtype/Link/Type/Annot>> endobj 10687 0 obj <> endobj 10688 0 obj <> endobj 10689 0 obj <>10690 0 R]/P 9720 0 R/Pg 9444 0 R/S/Link>> endobj 10690 0 obj <> endobj 10691 0 obj <>/Border[0 0 0]/Rect[151.38 119.12 286.98 132.26]/StructParent 241/Subtype/Link/Type/Annot>> endobj 10692 0 obj <> endobj 10693 0 obj <> endobj 10694 0 obj <>10695 0 R]/P 9719 0 R/Pg 9444 0 R/S/Link>> endobj 10695 0 obj <> endobj 10696 0 obj <>/Border[0 0 0]/Rect[138.06 131.12 286.98 144.26]/StructParent 240/Subtype/Link/Type/Annot>> endobj 10697 0 obj <> endobj 10698 0 obj <> endobj 10699 0 obj <>10700 0 R]/P 9718 0 R/Pg 9444 0 R/S/Link>> endobj 10700 0 obj <> endobj 10701 0 obj <>/Border[0 0 0]/Rect[143.64 143.12 286.98 156.26]/StructParent 239/Subtype/Link/Type/Annot>> endobj 10702 0 obj <> endobj 10703 0 obj <> endobj 10704 0 obj <>10705 0 R]/P 9717 0 R/Pg 9444 0 R/S/Link>> endobj 10705 0 obj <> endobj 10706 0 obj <>/Border[0 0 0]/Rect[150.84 155.12 286.98 168.26]/StructParent 238/Subtype/Link/Type/Annot>> endobj 10707 0 obj <> endobj 10708 0 obj <> endobj 10709 0 obj <>10710 0 R]/P 9716 0 R/Pg 9444 0 R/S/Link>> endobj 10710 0 obj <> endobj 10711 0 obj <>/Border[0 0 0]/Rect[141.96 167.12 286.98 180.26]/StructParent 237/Subtype/Link/Type/Annot>> endobj 10712 0 obj <> endobj 10713 0 obj <> endobj 10714 0 obj <>10715 0 R]/P 9715 0 R/Pg 9444 0 R/S/Link>> endobj 10715 0 obj <> endobj 10716 0 obj <>/Border[0 0 0]/Rect[135.84 179.12 286.98 192.26]/StructParent 236/Subtype/Link/Type/Annot>> endobj 10717 0 obj <> endobj 10718 0 obj <> endobj 10719 0 obj <>10720 0 R]/P 9714 0 R/Pg 9444 0 R/S/Link>> endobj 10720 0 obj <> endobj 10721 0 obj <>/Border[0 0 0]/Rect[128.64 191.12 286.98 204.26]/StructParent 235/Subtype/Link/Type/Annot>> endobj 10722 0 obj <> endobj 10723 0 obj <> endobj 10724 0 obj <>10725 0 R]/P 9713 0 R/Pg 9444 0 R/S/Link>> endobj 10725 0 obj <> endobj 10726 0 obj <>/Border[0 0 0]/Rect[118.62 203.12 286.98 216.26]/StructParent 234/Subtype/Link/Type/Annot>> endobj 10727 0 obj <> endobj 10728 0 obj <> endobj 10729 0 obj <>10730 0 R]/P 9712 0 R/Pg 9444 0 R/S/Link>> endobj 10730 0 obj <> endobj 10731 0 obj <>/Border[0 0 0]/Rect[111.96 215.12 286.98 228.26]/StructParent 233/Subtype/Link/Type/Annot>> endobj 10732 0 obj <> endobj 10733 0 obj <> endobj 10734 0 obj <>10735 0 R]/P 9711 0 R/Pg 9444 0 R/S/Link>> endobj 10735 0 obj <> endobj 10736 0 obj <>/Border[0 0 0]/Rect[120.84 227.12 286.98 240.26]/StructParent 232/Subtype/Link/Type/Annot>> endobj 10737 0 obj <> endobj 10738 0 obj <> endobj 10739 0 obj <>10740 0 R]/P 9710 0 R/Pg 9444 0 R/S/Link>> endobj 10740 0 obj <> endobj 10741 0 obj <>/Border[0 0 0]/Rect[121.44 239.12 286.98 252.26]/StructParent 231/Subtype/Link/Type/Annot>> endobj 10742 0 obj <> endobj 10743 0 obj <> endobj 10744 0 obj <>10745 0 R]/P 9709 0 R/Pg 9444 0 R/S/Link>> endobj 10745 0 obj <> endobj 10746 0 obj <>/Border[0 0 0]/Rect[121.98 251.12 286.98 264.26]/StructParent 230/Subtype/Link/Type/Annot>> endobj 10747 0 obj <> endobj 10748 0 obj <> endobj 10749 0 obj <>10750 0 R]/P 9708 0 R/Pg 9444 0 R/S/Link>> endobj 10750 0 obj <> endobj 10751 0 obj <>/Border[0 0 0]/Rect[125.88 263.12 286.98 276.26]/StructParent 229/Subtype/Link/Type/Annot>> endobj 10752 0 obj <> endobj 10753 0 obj <> endobj 10754 0 obj <>10755 0 R]/P 9707 0 R/Pg 9444 0 R/S/Link>> endobj 10755 0 obj <> endobj 10756 0 obj <>/Border[0 0 0]/Rect[134.16 275.12 286.98 288.26]/StructParent 228/Subtype/Link/Type/Annot>> endobj 10757 0 obj <> endobj 10758 0 obj <> endobj 10759 0 obj <>10760 0 R]/P 9706 0 R/Pg 9444 0 R/S/Link>> endobj 10760 0 obj <> endobj 10761 0 obj <>/Border[0 0 0]/Rect[128.64 287.12 286.98 300.26]/StructParent 227/Subtype/Link/Type/Annot>> endobj 10762 0 obj <> endobj 10763 0 obj <> endobj 10764 0 obj <>10765 0 R]/P 9705 0 R/Pg 9444 0 R/S/Link>> endobj 10765 0 obj <> endobj 10766 0 obj <>/Border[0 0 0]/Rect[125.88 299.12 286.98 312.26]/StructParent 226/Subtype/Link/Type/Annot>> endobj 10767 0 obj <> endobj 10768 0 obj <> endobj 10769 0 obj <>10770 0 R]/P 9704 0 R/Pg 9444 0 R/S/Link>> endobj 10770 0 obj <> endobj 10771 0 obj <>/Border[0 0 0]/Rect[159.18 311.12 286.98 324.26]/StructParent 225/Subtype/Link/Type/Annot>> endobj 10772 0 obj <> endobj 10773 0 obj <> endobj 10774 0 obj <>10775 0 R]/P 9703 0 R/Pg 9444 0 R/S/Link>> endobj 10775 0 obj <> endobj 10776 0 obj <>/Border[0 0 0]/Rect[159.18 323.12 286.98 336.26]/StructParent 224/Subtype/Link/Type/Annot>> endobj 10777 0 obj <> endobj 10778 0 obj <> endobj 10779 0 obj <>10780 0 R]/P 9702 0 R/Pg 9444 0 R/S/Link>> endobj 10780 0 obj <> endobj 10781 0 obj <>/Border[0 0 0]/Rect[150.3 335.12 286.98 348.26]/StructParent 223/Subtype/Link/Type/Annot>> endobj 10782 0 obj <> endobj 10783 0 obj <> endobj 10784 0 obj <>10785 0 R]/P 9701 0 R/Pg 9444 0 R/S/Link>> endobj 10785 0 obj <> endobj 10786 0 obj <>/Border[0 0 0]/Rect[150.3 347.12 286.98 360.26]/StructParent 222/Subtype/Link/Type/Annot>> endobj 10787 0 obj <> endobj 10788 0 obj <> endobj 10789 0 obj <>10790 0 R]/P 9700 0 R/Pg 9444 0 R/S/Link>> endobj 10790 0 obj <> endobj 10791 0 obj <>/Border[0 0 0]/Rect[144.18 359.12 286.98 372.26]/StructParent 221/Subtype/Link/Type/Annot>> endobj 10792 0 obj <> endobj 10793 0 obj <> endobj 10794 0 obj <>10795 0 R]/P 9699 0 R/Pg 9444 0 R/S/Link>> endobj 10795 0 obj <> endobj 10796 0 obj <>/Border[0 0 0]/Rect[144.18 371.12 286.98 384.26]/StructParent 220/Subtype/Link/Type/Annot>> endobj 10797 0 obj <> endobj 10798 0 obj <> endobj 10799 0 obj <>10800 0 R]/P 9698 0 R/Pg 9444 0 R/S/Link>> endobj 10800 0 obj <> endobj 10801 0 obj <>/Border[0 0 0]/Rect[154.2 383.12 286.98 396.26]/StructParent 219/Subtype/Link/Type/Annot>> endobj 10802 0 obj <> endobj 10803 0 obj <> endobj 10804 0 obj <>10805 0 R]/P 9697 0 R/Pg 9444 0 R/S/Link>> endobj 10805 0 obj <> endobj 10806 0 obj <>/Border[0 0 0]/Rect[145.32 395.12 286.98 408.26]/StructParent 218/Subtype/Link/Type/Annot>> endobj 10807 0 obj <> endobj 10808 0 obj <> endobj 10809 0 obj <>10810 0 R]/P 9696 0 R/Pg 9444 0 R/S/Link>> endobj 10810 0 obj <> endobj 10811 0 obj <>/Border[0 0 0]/Rect[139.2 407.12 286.98 420.26]/StructParent 217/Subtype/Link/Type/Annot>> endobj 10812 0 obj <> endobj 10813 0 obj <> endobj 10814 0 obj <>10815 0 R]/P 9695 0 R/Pg 9444 0 R/S/Link>> endobj 10815 0 obj <> endobj 10816 0 obj <>/Border[0 0 0]/Rect[118.62 453.14 286.98 466.28]/StructParent 216/Subtype/Link/Type/Annot>> endobj 10817 0 obj <> endobj 10818 0 obj <> endobj 10819 0 obj <>10820 0 R]/P 9694 0 R/Pg 9444 0 R/S/Link>> endobj 10820 0 obj <> endobj 10821 0 obj <>/Border[0 0 0]/Rect[118.62 465.14 286.98 478.28]/StructParent 215/Subtype/Link/Type/Annot>> endobj 10822 0 obj <> endobj 10823 0 obj <> endobj 10824 0 obj <>10825 0 R]/P 9693 0 R/Pg 9444 0 R/S/Link>> endobj 10825 0 obj <> endobj 10826 0 obj <>/Border[0 0 0]/Rect[120.3 477.14 286.98 490.28]/StructParent 214/Subtype/Link/Type/Annot>> endobj 10827 0 obj <> endobj 10828 0 obj <> endobj 10829 0 obj <>10830 0 R]/P 9692 0 R/Pg 9444 0 R/S/Link>> endobj 10830 0 obj <> endobj 10831 0 obj <>/Border[0 0 0]/Rect[133.62 489.14 286.98 502.28]/StructParent 213/Subtype/Link/Type/Annot>> endobj 10832 0 obj <> endobj 10833 0 obj <> endobj 10834 0 obj <>10839 0 R]/P 9691 0 R/Pg 9444 0 R/S/Link>> endobj 10835 0 obj <> endobj 10836 0 obj <>10837 0 R]/P 9691 0 R/Pg 9444 0 R/S/Link>> endobj 10837 0 obj <> endobj 10838 0 obj <>/Border[0 0 0]/Rect[270.3 501.14 286.98 514.28]/StructParent 212/Subtype/Link/Type/Annot>> endobj 10839 0 obj <> endobj 10840 0 obj <>/Border[0 0 0]/Rect[134.76 501.14 266.64 514.28]/StructParent 211/Subtype/Link/Type/Annot>> endobj 10841 0 obj <> endobj 10842 0 obj <> endobj 10843 0 obj <>10844 0 R]/P 9690 0 R/Pg 9444 0 R/S/Link>> endobj 10844 0 obj <> endobj 10845 0 obj <>/Border[0 0 0]/Rect[134.76 513.14 286.98 526.28]/StructParent 210/Subtype/Link/Type/Annot>> endobj 10846 0 obj <> endobj 10847 0 obj <> endobj 10848 0 obj <>10849 0 R]/P 9689 0 R/Pg 9444 0 R/S/Link>> endobj 10849 0 obj <> endobj 10850 0 obj <>/Border[0 0 0]/Rect[134.16 525.14 286.98 538.28]/StructParent 209/Subtype/Link/Type/Annot>> endobj 10851 0 obj <> endobj 10852 0 obj <> endobj 10853 0 obj <>10854 0 R]/P 9688 0 R/Pg 9444 0 R/S/Link>> endobj 10854 0 obj <> endobj 10855 0 obj <>/Border[0 0 0]/Rect[134.16 537.14 286.98 550.28]/StructParent 208/Subtype/Link/Type/Annot>> endobj 10856 0 obj <> endobj 10857 0 obj <> endobj 10858 0 obj <>10859 0 R]/P 9687 0 R/Pg 9444 0 R/S/Link>> endobj 10859 0 obj <> endobj 10860 0 obj <>/Border[0 0 0]/Rect[133.62 549.14 286.98 562.28]/StructParent 207/Subtype/Link/Type/Annot>> endobj 10861 0 obj <> endobj 10862 0 obj <> endobj 10863 0 obj <>10868 0 R]/P 9686 0 R/Pg 9444 0 R/S/Link>> endobj 10864 0 obj <> endobj 10865 0 obj <>10866 0 R]/P 9686 0 R/Pg 9444 0 R/S/Link>> endobj 10866 0 obj <> endobj 10867 0 obj <>/Border[0 0 0]/Rect[270.3 561.14 286.98 574.28]/StructParent 206/Subtype/Link/Type/Annot>> endobj 10868 0 obj <> endobj 10869 0 obj <>/Border[0 0 0]/Rect[134.76 561.14 266.64 574.28]/StructParent 205/Subtype/Link/Type/Annot>> endobj 10870 0 obj <> endobj 10871 0 obj <> endobj 10872 0 obj <>10873 0 R]/P 9685 0 R/Pg 9444 0 R/S/Link>> endobj 10873 0 obj <> endobj 10874 0 obj <>/Border[0 0 0]/Rect[134.76 573.14 286.98 586.28]/StructParent 204/Subtype/Link/Type/Annot>> endobj 10875 0 obj <> endobj 10876 0 obj <> endobj 10877 0 obj <>10878 0 R]/P 9684 0 R/Pg 9444 0 R/S/Link>> endobj 10878 0 obj <> endobj 10879 0 obj <>/Border[0 0 0]/Rect[134.16 585.14 286.98 598.28]/StructParent 203/Subtype/Link/Type/Annot>> endobj 10880 0 obj <> endobj 10881 0 obj <> endobj 10882 0 obj <>10883 0 R]/P 9683 0 R/Pg 9444 0 R/S/Link>> endobj 10883 0 obj <> endobj 10884 0 obj <>/Border[0 0 0]/Rect[134.16 597.14 286.98 610.28]/StructParent 202/Subtype/Link/Type/Annot>> endobj 10885 0 obj <> endobj 10886 0 obj <> endobj 10887 0 obj <>10888 0 R]/P 9682 0 R/Pg 9444 0 R/S/Link>> endobj 10888 0 obj <> endobj 10889 0 obj <>/Border[0 0 0]/Rect[119.22 609.14 286.98 622.28]/StructParent 201/Subtype/Link/Type/Annot>> endobj 10890 0 obj <> endobj 10891 0 obj <> endobj 10892 0 obj <>10893 0 R]/P 9681 0 R/Pg 9444 0 R/S/Link>> endobj 10893 0 obj <> endobj 10894 0 obj <>/Border[0 0 0]/Rect[119.22 621.14 286.98 634.28]/StructParent 200/Subtype/Link/Type/Annot>> endobj 10895 0 obj <> endobj 10896 0 obj <> endobj 10897 0 obj <>10898 0 R]/P 9680 0 R/Pg 9444 0 R/S/Link>> endobj 10898 0 obj <> endobj 10899 0 obj <>/Border[0 0 0]/Rect[119.22 633.14 286.98 646.28]/StructParent 199/Subtype/Link/Type/Annot>> endobj 10900 0 obj <> endobj 10901 0 obj <> endobj 10902 0 obj <>10903 0 R]/P 9679 0 R/Pg 9444 0 R/S/Link>> endobj 10903 0 obj <> endobj 10904 0 obj <>/Border[0 0 0]/Rect[119.22 645.14 286.98 658.28]/StructParent 198/Subtype/Link/Type/Annot>> endobj 10905 0 obj <> endobj 10906 0 obj <> endobj 10907 0 obj <>10908 0 R]/P 9678 0 R/Pg 9444 0 R/S/Link>> endobj 10908 0 obj <> endobj 10909 0 obj <>/Border[0 0 0]/Rect[129.72 691.16 286.98 704.24]/StructParent 197/Subtype/Link/Type/Annot>> endobj 10910 0 obj <> endobj 10911 0 obj <> endobj 10912 0 obj <>10913 0 R]/P 9677 0 R/Pg 9444 0 R/S/Link>> endobj 10913 0 obj <> endobj 10914 0 obj <>/Border[0 0 0]/Rect[117 703.16 286.98 716.24]/StructParent 196/Subtype/Link/Type/Annot>> endobj 10915 0 obj <> endobj 10916 0 obj <> endobj 10917 0 obj <>10918 0 R]/P 9676 0 R/Pg 9444 0 R/S/Link>> endobj 10918 0 obj <> endobj 10919 0 obj <>/Border[0 0 0]/Rect[123.06 715.16 286.98 728.24]/StructParent 195/Subtype/Link/Type/Annot>> endobj 10920 0 obj <> endobj 10921 0 obj <> endobj 10922 0 obj <>10923 0 R]/P 9675 0 R/Pg 9444 0 R/S/Link>> endobj 10923 0 obj <> endobj 10924 0 obj <>/Border[0 0 0]/Rect[117 727.16 286.98 740.24]/StructParent 194/Subtype/Link/Type/Annot>> endobj 10925 0 obj <> endobj 10926 0 obj <> endobj 10927 0 obj <>10928 0 R]/P 9674 0 R/Pg 9444 0 R/S/Link>> endobj 10928 0 obj <> endobj 10929 0 obj <>/Border[0 0 0]/Rect[117 739.16 286.98 752.24]/StructParent 193/Subtype/Link/Type/Annot>> endobj 10930 0 obj <> endobj 10931 0 obj <> endobj 10932 0 obj <>10937 0 R]/P 9673 0 R/Pg 9438 0 R/S/Link>> endobj 10933 0 obj <> endobj 10934 0 obj <>/P 9673 0 R/Pg 9438 0 R/S/Link>> endobj 10935 0 obj <> endobj 10936 0 obj <>/Border[0 0 0]/Rect[511.26 124.1 527.94 137.24]/StructParent 191/Subtype/Link/Type/Annot>> endobj 10937 0 obj <> endobj 10938 0 obj <>/Border[0 0 0]/Rect[359.58 124.1 507.6 137.24]/StructParent 190/Subtype/Link/Type/Annot>> endobj 10939 0 obj <> endobj 10940 0 obj <> endobj 10941 0 obj <>10942 0 R]/P 9672 0 R/Pg 9438 0 R/S/Link>> endobj 10942 0 obj <> endobj 10943 0 obj <>/Border[0 0 0]/Rect[374.58 136.1 527.94 149.24]/StructParent 189/Subtype/Link/Type/Annot>> endobj 10944 0 obj <> endobj 10945 0 obj <> endobj 10946 0 obj <>10947 0 R]/P 9671 0 R/Pg 9438 0 R/S/Link>> endobj 10947 0 obj <> endobj 10948 0 obj <>/Border[0 0 0]/Rect[384.6 148.1 527.94 161.24]/StructParent 188/Subtype/Link/Type/Annot>> endobj 10949 0 obj <> endobj 10950 0 obj <> endobj 10951 0 obj <>10952 0 R]/P 9670 0 R/Pg 9438 0 R/S/Link>> endobj 10952 0 obj <> endobj 10953 0 obj <>/Border[0 0 0]/Rect[360.72 160.1 527.94 173.24]/StructParent 187/Subtype/Link/Type/Annot>> endobj 10954 0 obj <> endobj 10955 0 obj <> endobj 10956 0 obj <>10957 0 R]/P 9669 0 R/Pg 9438 0 R/S/Link>> endobj 10957 0 obj <> endobj 10958 0 obj <>/Border[0 0 0]/Rect[360.18 172.1 527.94 185.24]/StructParent 186/Subtype/Link/Type/Annot>> endobj 10959 0 obj <> endobj 10960 0 obj <> endobj 10961 0 obj <>10962 0 R]/P 9668 0 R/Pg 9438 0 R/S/Link>> endobj 10962 0 obj <> endobj 10963 0 obj <>/Border[0 0 0]/Rect[359.64 184.1 527.94 197.24]/StructParent 185/Subtype/Link/Type/Annot>> endobj 10964 0 obj <> endobj 10965 0 obj <> endobj 10966 0 obj <>10967 0 R]/P 9667 0 R/Pg 9438 0 R/S/Link>> endobj 10967 0 obj <> endobj 10968 0 obj <>/Border[0 0 0]/Rect[359.64 196.1 527.94 209.24]/StructParent 184/Subtype/Link/Type/Annot>> endobj 10969 0 obj <> endobj 10970 0 obj <> endobj 10971 0 obj <>10972 0 R]/P 9666 0 R/Pg 9438 0 R/S/Link>> endobj 10972 0 obj <> endobj 10973 0 obj <>/Border[0 0 0]/Rect[349.08 208.1 527.94 221.24]/StructParent 183/Subtype/Link/Type/Annot>> endobj 10974 0 obj <> endobj 10975 0 obj <> endobj 10976 0 obj <>10977 0 R]/P 9665 0 R/Pg 9438 0 R/S/Link>> endobj 10977 0 obj <> endobj 10978 0 obj <>/Border[0 0 0]/Rect[349.62 220.1 527.94 233.24]/StructParent 182/Subtype/Link/Type/Annot>> endobj 10979 0 obj <> endobj 10980 0 obj <> endobj 10981 0 obj <>10982 0 R]/P 9664 0 R/Pg 9438 0 R/S/Link>> endobj 10982 0 obj <> endobj 10983 0 obj <>/Border[0 0 0]/Rect[352.38 232.1 527.94 245.24]/StructParent 181/Subtype/Link/Type/Annot>> endobj 10984 0 obj <> endobj 10985 0 obj <> endobj 10986 0 obj <>10987 0 R]/P 9663 0 R/Pg 9438 0 R/S/Link>> endobj 10987 0 obj <> endobj 10988 0 obj <>/Border[0 0 0]/Rect[352.38 244.1 527.94 257.24]/StructParent 180/Subtype/Link/Type/Annot>> endobj 10989 0 obj <> endobj 10990 0 obj <> endobj 10991 0 obj <>10992 0 R]/P 9662 0 R/Pg 9438 0 R/S/Link>> endobj 10992 0 obj <> endobj 10993 0 obj <>/Border[0 0 0]/Rect[381.84 290.12 527.94 303.26]/StructParent 179/Subtype/Link/Type/Annot>> endobj 10994 0 obj <> endobj 10995 0 obj <> endobj 10996 0 obj <>10997 0 R]/P 9661 0 R/Pg 9438 0 R/S/Link>> endobj 10997 0 obj <> endobj 10998 0 obj <>/Border[0 0 0]/Rect[387.96 302.12 527.94 315.26]/StructParent 178/Subtype/Link/Type/Annot>> endobj 10999 0 obj <> endobj 11000 0 obj <> endobj 11001 0 obj <>11002 0 R]/P 9660 0 R/Pg 9438 0 R/S/Link>> endobj 11002 0 obj <> endobj 11003 0 obj <>/Border[0 0 0]/Rect[395.7 314.12 527.94 327.26]/StructParent 177/Subtype/Link/Type/Annot>> endobj 11004 0 obj <> endobj 11005 0 obj <> endobj 11006 0 obj <>11007 0 R]/P 9659 0 R/Pg 9438 0 R/S/Link>> endobj 11007 0 obj <> endobj 11008 0 obj <>/Border[0 0 0]/Rect[369.06 326.12 527.94 339.26]/StructParent 176/Subtype/Link/Type/Annot>> endobj 11009 0 obj <> endobj 11010 0 obj <> endobj 11011 0 obj <>11012 0 R]/P 9658 0 R/Pg 9438 0 R/S/Link>> endobj 11012 0 obj <> endobj 11013 0 obj <>/Border[0 0 0]/Rect[384.06 338.12 527.94 351.26]/StructParent 175/Subtype/Link/Type/Annot>> endobj 11014 0 obj <> endobj 11015 0 obj <> endobj 11016 0 obj <>11017 0 R]/P 9657 0 R/Pg 9438 0 R/S/Link>> endobj 11017 0 obj <> endobj 11018 0 obj <>/Border[0 0 0]/Rect[373.5 350.12 527.94 363.26]/StructParent 174/Subtype/Link/Type/Annot>> endobj 11019 0 obj <> endobj 11020 0 obj <> endobj 11021 0 obj <>11022 0 R]/P 9656 0 R/Pg 9438 0 R/S/Link>> endobj 11022 0 obj <> endobj 11023 0 obj <>/Border[0 0 0]/Rect[364.02 362.12 527.94 375.26]/StructParent 173/Subtype/Link/Type/Annot>> endobj 11024 0 obj <> endobj 11025 0 obj <> endobj 11026 0 obj <>11027 0 R]/P 9655 0 R/Pg 9438 0 R/S/Link>> endobj 11027 0 obj <> endobj 11028 0 obj <>/Border[0 0 0]/Rect[374.58 374.12 527.94 387.26]/StructParent 172/Subtype/Link/Type/Annot>> endobj 11029 0 obj <> endobj 11030 0 obj <> endobj 11031 0 obj <>11032 0 R]/P 9654 0 R/Pg 9438 0 R/S/Link>> endobj 11032 0 obj <> endobj 11033 0 obj <>/Border[0 0 0]/Rect[367.92 386.12 527.94 399.26]/StructParent 171/Subtype/Link/Type/Annot>> endobj 11034 0 obj <> endobj 11035 0 obj <> endobj 11036 0 obj <>11037 0 R]/P 9653 0 R/Pg 9438 0 R/S/Link>> endobj 11037 0 obj <> endobj 11038 0 obj <>/Border[0 0 0]/Rect[372.36 398.12 527.94 411.26]/StructParent 170/Subtype/Link/Type/Annot>> endobj 11039 0 obj <> endobj 11040 0 obj <> endobj 11041 0 obj <>11042 0 R]/P 9652 0 R/Pg 9438 0 R/S/Link>> endobj 11042 0 obj <> endobj 11043 0 obj <>/Border[0 0 0]/Rect[374.04 410.12 527.94 423.26]/StructParent 169/Subtype/Link/Type/Annot>> endobj 11044 0 obj <> endobj 11045 0 obj <> endobj 11046 0 obj <>11047 0 R]/P 9651 0 R/Pg 9438 0 R/S/Link>> endobj 11047 0 obj <> endobj 11048 0 obj <>/Border[0 0 0]/Rect[391.8 456.14 527.94 469.28]/StructParent 168/Subtype/Link/Type/Annot>> endobj 11049 0 obj <> endobj 11050 0 obj <> endobj 11051 0 obj <>11052 0 R]/P 9650 0 R/Pg 9438 0 R/S/Link>> endobj 11052 0 obj <> endobj 11053 0 obj <>/Border[0 0 0]/Rect[391.8 468.14 527.94 481.28]/StructParent 167/Subtype/Link/Type/Annot>> endobj 11054 0 obj <> endobj 11055 0 obj <> endobj 11056 0 obj <>11057 0 R]/P 9649 0 R/Pg 9438 0 R/S/Link>> endobj 11057 0 obj <> endobj 11058 0 obj <>/Border[0 0 0]/Rect[391.8 480.14 527.94 493.28]/StructParent 166/Subtype/Link/Type/Annot>> endobj 11059 0 obj <> endobj 11060 0 obj <> endobj 11061 0 obj <>11062 0 R]/P 9648 0 R/Pg 9438 0 R/S/Link>> endobj 11062 0 obj <> endobj 11063 0 obj <>/Border[0 0 0]/Rect[391.8 492.14 527.94 505.28]/StructParent 165/Subtype/Link/Type/Annot>> endobj 11064 0 obj <> endobj 11065 0 obj <> endobj 11066 0 obj <>11067 0 R]/P 9647 0 R/Pg 9438 0 R/S/Link>> endobj 11067 0 obj <> endobj 11068 0 obj <>/Border[0 0 0]/Rect[362.94 504.14 527.94 517.28]/StructParent 164/Subtype/Link/Type/Annot>> endobj 11069 0 obj <> endobj 11070 0 obj <> endobj 11071 0 obj <>11072 0 R]/P 9646 0 R/Pg 9438 0 R/S/Link>> endobj 11072 0 obj <> endobj 11073 0 obj <>/Border[0 0 0]/Rect[376.8 516.14 527.94 529.28]/StructParent 163/Subtype/Link/Type/Annot>> endobj 11074 0 obj <> endobj 11075 0 obj <> endobj 11076 0 obj <>11077 0 R]/P 9645 0 R/Pg 9438 0 R/S/Link>> endobj 11077 0 obj <> endobj 11078 0 obj <>/Border[0 0 0]/Rect[396.84 528.14 527.94 541.28]/StructParent 162/Subtype/Link/Type/Annot>> endobj 11079 0 obj <> endobj 11080 0 obj <> endobj 11081 0 obj <>11082 0 R]/P 9644 0 R/Pg 9438 0 R/S/Link>> endobj 11082 0 obj <> endobj 11083 0 obj <>/Border[0 0 0]/Rect[376.26 540.14 527.94 553.28]/StructParent 161/Subtype/Link/Type/Annot>> endobj 11084 0 obj <> endobj 11085 0 obj <> endobj 11086 0 obj <>11087 0 R]/P 9643 0 R/Pg 9438 0 R/S/Link>> endobj 11087 0 obj <> endobj 11088 0 obj <>/Border[0 0 0]/Rect[382.92 552.14 527.94 565.28]/StructParent 160/Subtype/Link/Type/Annot>> endobj 11089 0 obj <> endobj 11090 0 obj <> endobj 11091 0 obj <>11092 0 R]/P 9642 0 R/Pg 9438 0 R/S/Link>> endobj 11092 0 obj <> endobj 11093 0 obj <>/Border[0 0 0]/Rect[377.4 564.14 527.94 577.28]/StructParent 159/Subtype/Link/Type/Annot>> endobj 11094 0 obj <> endobj 11095 0 obj <> endobj 11096 0 obj <>11097 0 R]/P 9641 0 R/Pg 9438 0 R/S/Link>> endobj 11097 0 obj <> endobj 11098 0 obj <>/Border[0 0 0]/Rect[363.48 576.14 527.94 589.28]/StructParent 158/Subtype/Link/Type/Annot>> endobj 11099 0 obj <> endobj 11100 0 obj <> endobj 11101 0 obj <>11102 0 R]/P 9640 0 R/Pg 9438 0 R/S/Link>> endobj 11102 0 obj <> endobj 11103 0 obj <>/Border[0 0 0]/Rect[370.14 588.14 527.94 601.28]/StructParent 157/Subtype/Link/Type/Annot>> endobj 11104 0 obj <> endobj 11105 0 obj <> endobj 11106 0 obj <>11107 0 R]/P 9639 0 R/Pg 9438 0 R/S/Link>> endobj 11107 0 obj <> endobj 11108 0 obj <>/Border[0 0 0]/Rect[377.4 634.16 527.94 647.24]/StructParent 156/Subtype/Link/Type/Annot>> endobj 11109 0 obj <> endobj 11110 0 obj <> endobj 11111 0 obj <>11112 0 R]/P 9638 0 R/Pg 9438 0 R/S/Link>> endobj 11112 0 obj <> endobj 11113 0 obj <>/Border[0 0 0]/Rect[371.82 646.16 527.94 659.24]/StructParent 155/Subtype/Link/Type/Annot>> endobj 11114 0 obj <> endobj 11115 0 obj <> endobj 11116 0 obj <>11117 0 R]/P 9637 0 R/Pg 9438 0 R/S/Link>> endobj 11117 0 obj <> endobj 11118 0 obj <>/Border[0 0 0]/Rect[365.7 658.16 527.94 671.24]/StructParent 154/Subtype/Link/Type/Annot>> endobj 11119 0 obj <> endobj 11120 0 obj <> endobj 11121 0 obj <>11122 0 R]/P 9636 0 R/Pg 9438 0 R/S/Link>> endobj 11122 0 obj <> endobj 11123 0 obj <>/Border[0 0 0]/Rect[362.94 670.16 527.94 683.24]/StructParent 153/Subtype/Link/Type/Annot>> endobj 11124 0 obj <> endobj 11125 0 obj <> endobj 11126 0 obj <>11127 0 R]/P 9635 0 R/Pg 9438 0 R/S/Link>> endobj 11127 0 obj <> endobj 11128 0 obj <>/Border[0 0 0]/Rect[370.74 682.16 527.94 695.24]/StructParent 152/Subtype/Link/Type/Annot>> endobj 11129 0 obj <> endobj 11130 0 obj <> endobj 11131 0 obj <>11132 0 R]/P 9634 0 R/Pg 9438 0 R/S/Link>> endobj 11132 0 obj <> endobj 11133 0 obj <>/Border[0 0 0]/Rect[364.62 694.16 527.94 707.24]/StructParent 151/Subtype/Link/Type/Annot>> endobj 11134 0 obj <> endobj 11135 0 obj <> endobj 11136 0 obj <>11137 0 R]/P 9633 0 R/Pg 9438 0 R/S/Link>> endobj 11137 0 obj <> endobj 11138 0 obj <>/Border[0 0 0]/Rect[139.74 130.1 286.98 143.24]/StructParent 150/Subtype/Link/Type/Annot>> endobj 11139 0 obj <> endobj 11140 0 obj <> endobj 11141 0 obj <>11142 0 R]/P 9632 0 R/Pg 9438 0 R/S/Link>> endobj 11142 0 obj <> endobj 11143 0 obj <>/Border[0 0 0]/Rect[125.88 142.1 286.98 155.24]/StructParent 149/Subtype/Link/Type/Annot>> endobj 11144 0 obj <> endobj 11145 0 obj <> endobj 11146 0 obj <>11147 0 R]/P 9631 0 R/Pg 9438 0 R/S/Link>> endobj 11147 0 obj <> endobj 11148 0 obj <>/Border[0 0 0]/Rect[154.74 188.12 286.98 201.26]/StructParent 148/Subtype/Link/Type/Annot>> endobj 11149 0 obj <> endobj 11150 0 obj <> endobj 11151 0 obj <>11152 0 R]/P 9630 0 R/Pg 9438 0 R/S/Link>> endobj 11152 0 obj <> endobj 11153 0 obj <>/Border[0 0 0]/Rect[149.16 200.12 286.98 213.26]/StructParent 147/Subtype/Link/Type/Annot>> endobj 11154 0 obj <> endobj 11155 0 obj <> endobj 11156 0 obj <>11157 0 R]/P 9629 0 R/Pg 9438 0 R/S/Link>> endobj 11157 0 obj <> endobj 11158 0 obj <>/Border[0 0 0]/Rect[155.82 212.12 286.98 225.26]/StructParent 146/Subtype/Link/Type/Annot>> endobj 11159 0 obj <> endobj 11160 0 obj <> endobj 11161 0 obj <>11162 0 R]/P 9628 0 R/Pg 9438 0 R/S/Link>> endobj 11162 0 obj <> endobj 11163 0 obj <>/Border[0 0 0]/Rect[146.94 224.12 286.98 237.26]/StructParent 145/Subtype/Link/Type/Annot>> endobj 11164 0 obj <> endobj 11165 0 obj <> endobj 11166 0 obj <>11167 0 R]/P 9627 0 R/Pg 9438 0 R/S/Link>> endobj 11167 0 obj <> endobj 11168 0 obj <>/Border[0 0 0]/Rect[141.42 236.12 286.98 249.26]/StructParent 144/Subtype/Link/Type/Annot>> endobj 11169 0 obj <> endobj 11170 0 obj <> endobj 11171 0 obj <>11172 0 R]/P 9626 0 R/Pg 9438 0 R/S/Link>> endobj 11172 0 obj <> endobj 11173 0 obj <>/Border[0 0 0]/Rect[140.82 248.12 286.98 261.26]/StructParent 143/Subtype/Link/Type/Annot>> endobj 11174 0 obj <> endobj 11175 0 obj <> endobj 11176 0 obj <>11177 0 R]/P 9625 0 R/Pg 9438 0 R/S/Link>> endobj 11177 0 obj <> endobj 11178 0 obj <>/Border[0 0 0]/Rect[114.78 260.12 286.98 273.26]/StructParent 142/Subtype/Link/Type/Annot>> endobj 11179 0 obj <> endobj 11180 0 obj <> endobj 11181 0 obj <>11182 0 R]/P 9624 0 R/Pg 9438 0 R/S/Link>> endobj 11182 0 obj <> endobj 11183 0 obj <>/Border[0 0 0]/Rect[121.44 272.12 286.98 285.26]/StructParent 141/Subtype/Link/Type/Annot>> endobj 11184 0 obj <> endobj 11185 0 obj <> endobj 11186 0 obj <>11187 0 R]/P 9623 0 R/Pg 9438 0 R/S/Link>> endobj 11187 0 obj <> endobj 11188 0 obj <>/Border[0 0 0]/Rect[130.86 284.12 286.98 297.26]/StructParent 140/Subtype/Link/Type/Annot>> endobj 11189 0 obj <> endobj 11190 0 obj <> endobj 11191 0 obj <>11192 0 R]/P 9622 0 R/Pg 9438 0 R/S/Link>> endobj 11192 0 obj <> endobj 11193 0 obj <>/Border[0 0 0]/Rect[138.06 296.12 286.98 309.26]/StructParent 139/Subtype/Link/Type/Annot>> endobj 11194 0 obj <> endobj 11195 0 obj <> endobj 11196 0 obj <>11197 0 R]/P 9621 0 R/Pg 9438 0 R/S/Link>> endobj 11197 0 obj <> endobj 11198 0 obj <>/Border[0 0 0]/Rect[132.54 308.12 286.98 321.26]/StructParent 138/Subtype/Link/Type/Annot>> endobj 11199 0 obj <> endobj 11200 0 obj <> endobj 11201 0 obj <>11202 0 R]/P 9620 0 R/Pg 9438 0 R/S/Link>> endobj 11202 0 obj <> endobj 11203 0 obj <>/Border[0 0 0]/Rect[124.74 320.12 286.98 333.26]/StructParent 137/Subtype/Link/Type/Annot>> endobj 11204 0 obj <> endobj 11205 0 obj <> endobj 11206 0 obj <>11207 0 R]/P 9619 0 R/Pg 9438 0 R/S/Link>> endobj 11207 0 obj <> endobj 11208 0 obj <>/Border[0 0 0]/Rect[136.44 332.12 286.98 345.26]/StructParent 136/Subtype/Link/Type/Annot>> endobj 11209 0 obj <> endobj 11210 0 obj <> endobj 11211 0 obj <>11212 0 R]/P 9618 0 R/Pg 9438 0 R/S/Link>> endobj 11212 0 obj <> endobj 11213 0 obj <>/Border[0 0 0]/Rect[111.96 344.12 286.98 357.26]/StructParent 135/Subtype/Link/Type/Annot>> endobj 11214 0 obj <> endobj 11215 0 obj <> endobj 11216 0 obj <>11217 0 R]/P 9617 0 R/Pg 9438 0 R/S/Link>> endobj 11217 0 obj <> endobj 11218 0 obj <>/Border[0 0 0]/Rect[140.88 356.12 286.98 369.26]/StructParent 134/Subtype/Link/Type/Annot>> endobj 11219 0 obj <> endobj 11220 0 obj <> endobj 11221 0 obj <>11222 0 R]/P 9616 0 R/Pg 9438 0 R/S/Link>> endobj 11222 0 obj <> endobj 11223 0 obj <>/Border[0 0 0]/Rect[140.88 368.12 286.98 381.26]/StructParent 133/Subtype/Link/Type/Annot>> endobj 11224 0 obj <> endobj 11225 0 obj <> endobj 11226 0 obj <>11227 0 R]/P 9615 0 R/Pg 9438 0 R/S/Link>> endobj 11227 0 obj <> endobj 11228 0 obj <>/Border[0 0 0]/Rect[117.54 414.14 286.98 427.28]/StructParent 132/Subtype/Link/Type/Annot>> endobj 11229 0 obj <> endobj 11230 0 obj <> endobj 11231 0 obj <>11232 0 R]/P 9614 0 R/Pg 9438 0 R/S/Link>> endobj 11232 0 obj <> endobj 11233 0 obj <>/Border[0 0 0]/Rect[116.4 426.14 286.98 439.28]/StructParent 131/Subtype/Link/Type/Annot>> endobj 11234 0 obj <> endobj 11235 0 obj <> endobj 11236 0 obj <>11237 0 R]/P 9613 0 R/Pg 9438 0 R/S/Link>> endobj 11237 0 obj <> endobj 11238 0 obj <>/Border[0 0 0]/Rect[114.72 438.14 286.98 451.28]/StructParent 130/Subtype/Link/Type/Annot>> endobj 11239 0 obj <> endobj 11240 0 obj <> endobj 11241 0 obj <>11242 0 R]/P 9612 0 R/Pg 9438 0 R/S/Link>> endobj 11242 0 obj <> endobj 11243 0 obj <>/Border[0 0 0]/Rect[111.96 450.14 286.98 463.28]/StructParent 129/Subtype/Link/Type/Annot>> endobj 11244 0 obj <> endobj 11245 0 obj <> endobj 11246 0 obj <>11247 0 R]/P 9611 0 R/Pg 9438 0 R/S/Link>> endobj 11247 0 obj <> endobj 11248 0 obj <>/Border[0 0 0]/Rect[111.96 462.14 286.98 475.28]/StructParent 128/Subtype/Link/Type/Annot>> endobj 11249 0 obj <> endobj 11250 0 obj <> endobj 11251 0 obj <>11252 0 R]/P 9610 0 R/Pg 9438 0 R/S/Link>> endobj 11252 0 obj <> endobj 11253 0 obj <>/Border[0 0 0]/Rect[125.88 508.16 286.98 521.24]/StructParent 127/Subtype/Link/Type/Annot>> endobj 11254 0 obj <> endobj 11255 0 obj <> endobj 11256 0 obj <>11257 0 R]/P 9609 0 R/Pg 9438 0 R/S/Link>> endobj 11257 0 obj <> endobj 11258 0 obj <>/Border[0 0 0]/Rect[113.64 520.16 286.98 533.24]/StructParent 126/Subtype/Link/Type/Annot>> endobj 11259 0 obj <> endobj 11260 0 obj <> endobj 11261 0 obj <>11262 0 R]/P 9608 0 R/Pg 9438 0 R/S/Link>> endobj 11262 0 obj <> endobj 11263 0 obj <>/Border[0 0 0]/Rect[113.64 532.16 286.98 545.24]/StructParent 125/Subtype/Link/Type/Annot>> endobj 11264 0 obj <> endobj 11265 0 obj <> endobj 11266 0 obj <>11267 0 R]/P 9607 0 R/Pg 9438 0 R/S/Link>> endobj 11267 0 obj <> endobj 11268 0 obj <>/Border[0 0 0]/Rect[111.42 544.16 286.98 557.24]/StructParent 124/Subtype/Link/Type/Annot>> endobj 11269 0 obj <> endobj 11270 0 obj <> endobj 11271 0 obj <>11272 0 R]/P 9606 0 R/Pg 9438 0 R/S/Link>> endobj 11272 0 obj <> endobj 11273 0 obj <>/Border[0 0 0]/Rect[111.42 556.16 286.98 569.24]/StructParent 123/Subtype/Link/Type/Annot>> endobj 11274 0 obj <> endobj 11275 0 obj <> endobj 11276 0 obj <>11281 0 R]/P 9605 0 R/Pg 9438 0 R/S/Link>> endobj 11277 0 obj <> endobj 11278 0 obj <>11279 0 R]/P 9605 0 R/Pg 9438 0 R/S/Link>> endobj 11279 0 obj <> endobj 11280 0 obj <>/Border[0 0 0]/Rect[270.3 568.16 286.98 581.24]/StructParent 122/Subtype/Link/Type/Annot>> endobj 11281 0 obj <> endobj 11282 0 obj <>/Border[0 0 0]/Rect[137.52 568.16 266.64 581.24]/StructParent 121/Subtype/Link/Type/Annot>> endobj 11283 0 obj <> endobj 11284 0 obj <> endobj 11285 0 obj <>11286 0 R]/P 9604 0 R/Pg 9438 0 R/S/Link>> endobj 11286 0 obj <> endobj 11287 0 obj <>/Border[0 0 0]/Rect[130.86 580.16 286.98 593.24]/StructParent 120/Subtype/Link/Type/Annot>> endobj 11288 0 obj <> endobj 11289 0 obj <> endobj 11290 0 obj <>11291 0 R]/P 9603 0 R/Pg 9438 0 R/S/Link>> endobj 11291 0 obj <> endobj 11292 0 obj <>/Border[0 0 0]/Rect[130.86 592.16 286.98 605.24]/StructParent 119/Subtype/Link/Type/Annot>> endobj 11293 0 obj <> endobj 11294 0 obj <> endobj 11295 0 obj <>11296 0 R]/P 9602 0 R/Pg 9438 0 R/S/Link>> endobj 11296 0 obj <> endobj 11297 0 obj <>/Border[0 0 0]/Rect[118.62 604.16 286.98 617.24]/StructParent 118/Subtype/Link/Type/Annot>> endobj 11298 0 obj <> endobj 11299 0 obj <> endobj 11300 0 obj <>11301 0 R]/P 9601 0 R/Pg 9438 0 R/S/Link>> endobj 11301 0 obj <> endobj 11302 0 obj <>/Border[0 0 0]/Rect[142.5 616.16 286.98 629.24]/StructParent 117/Subtype/Link/Type/Annot>> endobj 11303 0 obj <> endobj 11304 0 obj <> endobj 11305 0 obj <>11306 0 R]/P 9600 0 R/Pg 9438 0 R/S/Link>> endobj 11306 0 obj <> endobj 11307 0 obj <>/Border[0 0 0]/Rect[139.2 628.16 286.98 641.24]/StructParent 116/Subtype/Link/Type/Annot>> endobj 11308 0 obj <> endobj 11309 0 obj <> endobj 11310 0 obj <>11311 0 R]/P 9599 0 R/Pg 9438 0 R/S/Link>> endobj 11311 0 obj <> endobj 11312 0 obj <>/Border[0 0 0]/Rect[140.28 640.16 286.98 653.24]/StructParent 115/Subtype/Link/Type/Annot>> endobj 11313 0 obj <> endobj 11314 0 obj <> endobj 11315 0 obj <>11316 0 R]/P 9598 0 R/Pg 9438 0 R/S/Link>> endobj 11316 0 obj <> endobj 11317 0 obj <>/Border[0 0 0]/Rect[139.2 652.16 286.98 665.24]/StructParent 114/Subtype/Link/Type/Annot>> endobj 11318 0 obj <> endobj 11319 0 obj <> endobj 11320 0 obj <>11321 0 R]/P 9597 0 R/Pg 9438 0 R/S/Link>> endobj 11321 0 obj <> endobj 11322 0 obj <>/Border[0 0 0]/Rect[140.28 664.16 286.98 677.24]/StructParent 113/Subtype/Link/Type/Annot>> endobj 11323 0 obj <> endobj 11324 0 obj <> endobj 11325 0 obj <>11326 0 R]/P 9596 0 R/Pg 9438 0 R/S/Link>> endobj 11326 0 obj <> endobj 11327 0 obj <>/Border[0 0 0]/Rect[139.2 676.16 286.98 689.24]/StructParent 112/Subtype/Link/Type/Annot>> endobj 11328 0 obj <> endobj 11329 0 obj <> endobj 11330 0 obj <> endobj 11331 0 obj <>/Border[0 0 0]/Rect[123.66 412.4 286.98 424.64]/StructParent 447/Subtype/Link/Type/Annot>> endobj 11332 0 obj <> endobj 11333 0 obj <>/Border[0 0 0]/Rect[124.2 424.4 286.98 436.64]/StructParent 446/Subtype/Link/Type/Annot>> endobj 11334 0 obj <> endobj 11335 0 obj <>/Border[0 0 0]/Rect[130.26 436.4 286.98 448.64]/StructParent 445/Subtype/Link/Type/Annot>> endobj 11336 0 obj <> endobj 11337 0 obj <>/Border[0 0 0]/Rect[138.06 482.42 286.98 494.66]/StructParent 444/Subtype/Link/Type/Annot>> endobj 11338 0 obj <> endobj 11339 0 obj <>/Border[0 0 0]/Rect[119.22 494.42 286.98 506.66]/StructParent 443/Subtype/Link/Type/Annot>> endobj 11340 0 obj <> endobj 11341 0 obj <>/Border[0 0 0]/Rect[117 506.42 286.98 518.66]/StructParent 442/Subtype/Link/Type/Annot>> endobj 11342 0 obj <> endobj 11343 0 obj <>/Border[0 0 0]/Rect[131.94 518.42 286.98 530.66]/StructParent 441/Subtype/Link/Type/Annot>> endobj 11344 0 obj <> endobj 11345 0 obj <>/Border[0 0 0]/Rect[124.2 530.42 286.98 542.66]/StructParent 440/Subtype/Link/Type/Annot>> endobj 11346 0 obj <> endobj 11347 0 obj <>/Border[0 0 0]/Rect[136.98 542.42 286.98 554.66]/StructParent 439/Subtype/Link/Type/Annot>> endobj 11348 0 obj <> endobj 11349 0 obj <>/Border[0 0 0]/Rect[270.3 554.42 286.98 566.66]/StructParent 438/Subtype/Link/Type/Annot>> endobj 11350 0 obj <> endobj 11351 0 obj <>/Border[0 0 0]/Rect[181.44 554.42 264.18 566.66]/StructParent 437/Subtype/Link/Type/Annot>> endobj 11352 0 obj <> endobj 11353 0 obj <>/Border[0 0 0]/Rect[181.44 566.42 286.98 578.66]/StructParent 436/Subtype/Link/Type/Annot>> endobj 11354 0 obj <> endobj 11355 0 obj <>/Border[0 0 0]/Rect[124.74 578.42 286.98 590.66]/StructParent 435/Subtype/Link/Type/Annot>> endobj 11356 0 obj <> endobj 11357 0 obj <>/Border[0 0 0]/Rect[130.32 590.42 286.98 602.66]/StructParent 434/Subtype/Link/Type/Annot>> endobj 11358 0 obj <> endobj 11359 0 obj <>/Border[0 0 0]/Rect[138.06 602.42 286.98 614.66]/StructParent 433/Subtype/Link/Type/Annot>> endobj 11360 0 obj <> endobj 11361 0 obj <>/Border[0 0 0]/Rect[131.94 614.42 286.98 626.66]/StructParent 432/Subtype/Link/Type/Annot>> endobj 11362 0 obj <> endobj 11363 0 obj <>/Border[0 0 0]/Rect[131.4 626.42 286.98 638.66]/StructParent 431/Subtype/Link/Type/Annot>> endobj 11364 0 obj <> endobj 11365 0 obj <>/Border[0 0 0]/Rect[144.18 638.42 286.98 650.66]/StructParent 430/Subtype/Link/Type/Annot>> endobj 11366 0 obj <> endobj 11367 0 obj <>/Border[0 0 0]/Rect[270.3 650.42 286.98 662.66]/StructParent 429/Subtype/Link/Type/Annot>> endobj 11368 0 obj <> endobj 11369 0 obj <>/Border[0 0 0]/Rect[126.42 650.42 264.18 662.66]/StructParent 428/Subtype/Link/Type/Annot>> endobj 11370 0 obj <> endobj 11371 0 obj <>/Border[0 0 0]/Rect[126.96 662.42 286.98 674.66]/StructParent 427/Subtype/Link/Type/Annot>> endobj 11372 0 obj <> endobj 11373 0 obj <>/Border[0 0 0]/Rect[137.52 674.42 286.98 686.66]/StructParent 426/Subtype/Link/Type/Annot>> endobj 11374 0 obj <> endobj 11375 0 obj <>/Border[0 0 0]/Rect[129.72 686.42 286.98 698.66]/StructParent 425/Subtype/Link/Type/Annot>> endobj 11376 0 obj <> endobj 11377 0 obj <>/Border[0 0 0]/Rect[129.72 698.42 286.98 710.66]/StructParent 424/Subtype/Link/Type/Annot>> endobj 11378 0 obj <> endobj 11379 0 obj <>/Border[0 0 0]/Rect[270.3 710.42 286.98 722.66]/StructParent 423/Subtype/Link/Type/Annot>> endobj 11380 0 obj <> endobj 11381 0 obj <>/Border[0 0 0]/Rect[129.72 710.42 264.18 722.66]/StructParent 422/Subtype/Link/Type/Annot>> endobj 11382 0 obj <> endobj 11383 0 obj <>/Border[0 0 0]/Rect[130.86 722.42 286.98 734.66]/StructParent 421/Subtype/Link/Type/Annot>> endobj 11384 0 obj <>/Border[0 0 0]/Rect[511.26 151.1 527.94 164.24]/StructParent 419/Subtype/Link/Type/Annot>> endobj 11385 0 obj <>/Border[0 0 0]/Rect[488.46 151.1 505.14 164.24]/StructParent 418/Subtype/Link/Type/Annot>> endobj 11386 0 obj <> endobj 11387 0 obj <>/Border[0 0 0]/Rect[352.92 151.1 482.34 164.24]/StructParent 417/Subtype/Link/Type/Annot>> endobj 11388 0 obj <> endobj 11389 0 obj <>/Border[0 0 0]/Rect[368.46 163.1 527.94 176.24]/StructParent 416/Subtype/Link/Type/Annot>> endobj 11390 0 obj <> endobj 11391 0 obj <>/Border[0 0 0]/Rect[360.72 175.1 527.94 188.24]/StructParent 415/Subtype/Link/Type/Annot>> endobj 11392 0 obj <> endobj 11393 0 obj <> endobj 11394 0 obj <> endobj 11395 0 obj <>/Border[0 0 0]/Rect[511.26 187.1 527.94 200.24]/StructParent 414/Subtype/Link/Type/Annot>> endobj 11396 0 obj <>/Border[0 0 0]/Rect[488.46 187.1 505.14 200.24]/StructParent 413/Subtype/Link/Type/Annot>> endobj 11397 0 obj <> endobj 11398 0 obj <>/Border[0 0 0]/Rect[359.58 187.1 482.34 200.24]/StructParent 412/Subtype/Link/Type/Annot>> endobj 11399 0 obj <> endobj 11400 0 obj <> endobj 11401 0 obj <> endobj 11402 0 obj <>/Border[0 0 0]/Rect[511.26 199.1 527.94 212.24]/StructParent 411/Subtype/Link/Type/Annot>> endobj 11403 0 obj <>/Border[0 0 0]/Rect[488.46 199.1 505.14 212.24]/StructParent 410/Subtype/Link/Type/Annot>> endobj 11404 0 obj <> endobj 11405 0 obj <>/Border[0 0 0]/Rect[360.72 199.1 482.34 212.24]/StructParent 409/Subtype/Link/Type/Annot>> endobj 11406 0 obj <> endobj 11407 0 obj <>/Border[0 0 0]/Rect[511.26 211.1 527.94 224.24]/StructParent 408/Subtype/Link/Type/Annot>> endobj 11408 0 obj <> endobj 11409 0 obj <>/Border[0 0 0]/Rect[368.46 211.1 505.14 224.24]/StructParent 407/Subtype/Link/Type/Annot>> endobj 11410 0 obj <> endobj 11411 0 obj <> endobj 11412 0 obj <> endobj 11413 0 obj <>/Border[0 0 0]/Rect[511.26 223.1 527.94 236.24]/StructParent 406/Subtype/Link/Type/Annot>> endobj 11414 0 obj <>/Border[0 0 0]/Rect[488.46 223.1 505.14 236.24]/StructParent 405/Subtype/Link/Type/Annot>> endobj 11415 0 obj <> endobj 11416 0 obj <>/Border[0 0 0]/Rect[362.94 223.1 482.34 236.24]/StructParent 404/Subtype/Link/Type/Annot>> endobj 11417 0 obj <> endobj 11418 0 obj <>/Border[0 0 0]/Rect[511.26 235.1 527.94 248.24]/StructParent 403/Subtype/Link/Type/Annot>> endobj 11419 0 obj <> endobj 11420 0 obj <>/Border[0 0 0]/Rect[360.72 235.1 505.14 248.24]/StructParent 402/Subtype/Link/Type/Annot>> endobj 11421 0 obj <> endobj 11422 0 obj <> endobj 11423 0 obj <> endobj 11424 0 obj <>/Border[0 0 0]/Rect[511.26 247.1 527.94 260.24]/StructParent 401/Subtype/Link/Type/Annot>> endobj 11425 0 obj <>/Border[0 0 0]/Rect[488.46 247.1 505.14 260.24]/StructParent 400/Subtype/Link/Type/Annot>> endobj 11426 0 obj <> endobj 11427 0 obj <>/Border[0 0 0]/Rect[359.04 247.1 482.34 260.24]/StructParent 399/Subtype/Link/Type/Annot>> endobj 11428 0 obj <> endobj 11429 0 obj <> endobj 11430 0 obj <> endobj 11431 0 obj <>/Border[0 0 0]/Rect[511.26 259.1 527.94 272.24]/StructParent 398/Subtype/Link/Type/Annot>> endobj 11432 0 obj <>/Border[0 0 0]/Rect[488.46 259.1 505.14 272.24]/StructParent 397/Subtype/Link/Type/Annot>> endobj 11433 0 obj <> endobj 11434 0 obj <>/Border[0 0 0]/Rect[359.04 259.1 482.34 272.24]/StructParent 396/Subtype/Link/Type/Annot>> endobj 11435 0 obj <> endobj 11436 0 obj <> endobj 11437 0 obj <> endobj 11438 0 obj <> endobj 11439 0 obj <> endobj 11440 0 obj <>/Border[0 0 0]/Rect[511.26 271.1 527.94 284.24]/StructParent 395/Subtype/Link/Type/Annot>> endobj 11441 0 obj <>/Border[0 0 0]/Rect[488.46 271.1 505.14 284.24]/StructParent 394/Subtype/Link/Type/Annot>> endobj 11442 0 obj <>/Border[0 0 0]/Rect[465.72 271.1 482.34 284.24]/StructParent 393/Subtype/Link/Type/Annot>> endobj 11443 0 obj <> endobj 11444 0 obj <>/Border[0 0 0]/Rect[359.58 271.1 462.06 284.24]/StructParent 392/Subtype/Link/Type/Annot>> endobj 11445 0 obj <> endobj 11446 0 obj <>/Border[0 0 0]/Rect[366.24 283.1 527.94 296.24]/StructParent 391/Subtype/Link/Type/Annot>> endobj 11447 0 obj <> endobj 11448 0 obj <>/Border[0 0 0]/Rect[366.24 295.1 527.94 308.24]/StructParent 390/Subtype/Link/Type/Annot>> endobj 11449 0 obj <> endobj 11450 0 obj <>/Border[0 0 0]/Rect[366.24 307.1 527.94 320.24]/StructParent 389/Subtype/Link/Type/Annot>> endobj 11451 0 obj <> endobj 11452 0 obj <>/Border[0 0 0]/Rect[511.26 319.1 527.94 332.24]/StructParent 388/Subtype/Link/Type/Annot>> endobj 11453 0 obj <> endobj 11454 0 obj <>/Border[0 0 0]/Rect[366.24 319.1 505.14 332.24]/StructParent 387/Subtype/Link/Type/Annot>> endobj 11455 0 obj <> endobj 11456 0 obj <>/Border[0 0 0]/Rect[511.26 331.1 527.94 344.24]/StructParent 386/Subtype/Link/Type/Annot>> endobj 11457 0 obj <> endobj 11458 0 obj <>/Border[0 0 0]/Rect[374.58 331.1 507.6 344.24]/StructParent 385/Subtype/Link/Type/Annot>> endobj 11459 0 obj [10437 0 R 10438 0 R 10440 0 R 10432 0 R 10433 0 R 10435 0 R 10427 0 R 10428 0 R 10430 0 R 10422 0 R 10423 0 R 10425 0 R 10417 0 R 10418 0 R 10420 0 R 10412 0 R 10413 0 R 10415 0 R 10407 0 R 10408 0 R 10410 0 R 10402 0 R 10403 0 R 10405 0 R 10397 0 R 10398 0 R 10400 0 R 10392 0 R 10393 0 R 10395 0 R 10387 0 R 10388 0 R 10390 0 R 10382 0 R 10383 0 R 10385 0 R 10377 0 R 10378 0 R 10380 0 R 10372 0 R 10373 0 R 10375 0 R 10367 0 R 10368 0 R 10370 0 R 10362 0 R 10363 0 R 10365 0 R 10357 0 R 10358 0 R 10360 0 R 10352 0 R 10353 0 R 10355 0 R 10347 0 R 10348 0 R 10350 0 R 10342 0 R 10343 0 R 10345 0 R 10337 0 R 10338 0 R 10340 0 R 10328 0 R 10329 0 R 10335 0 R 10331 0 R 10333 0 R 10319 0 R 10320 0 R 10326 0 R 10322 0 R 10324 0 R 10314 0 R 10315 0 R 10317 0 R 10309 0 R 10310 0 R 10312 0 R 10304 0 R 10305 0 R 10307 0 R 10299 0 R 10300 0 R 10302 0 R 10294 0 R 10295 0 R 10297 0 R 10289 0 R 10290 0 R 10292 0 R 10284 0 R 10285 0 R 10287 0 R 10279 0 R 10280 0 R 10282 0 R 10274 0 R 10275 0 R 10277 0 R 10269 0 R 10270 0 R 10272 0 R 10264 0 R 10265 0 R 10267 0 R 10259 0 R 10260 0 R 10262 0 R 10254 0 R 10255 0 R 10257 0 R 10249 0 R 10250 0 R 10252 0 R 10244 0 R 10245 0 R 10247 0 R 10239 0 R 10240 0 R 10242 0 R 10234 0 R 10235 0 R 10237 0 R 10229 0 R 10230 0 R 10232 0 R 10224 0 R 10225 0 R 10227 0 R 10219 0 R 10220 0 R 10222 0 R 10210 0 R 10211 0 R 10217 0 R 10213 0 R 10215 0 R 10205 0 R 10206 0 R 10208 0 R 10200 0 R 10201 0 R 10203 0 R 10195 0 R 10196 0 R 10198 0 R 10190 0 R 10191 0 R 10193 0 R 10185 0 R 10186 0 R 10188 0 R 10180 0 R 10181 0 R 10183 0 R 10175 0 R 10176 0 R 10178 0 R 10170 0 R 10171 0 R 10173 0 R 10165 0 R 10166 0 R 10168 0 R 10160 0 R 10161 0 R 10163 0 R 10155 0 R 10156 0 R 10158 0 R 10150 0 R 10151 0 R 10153 0 R 10141 0 R 10142 0 R 10148 0 R 10144 0 R 10146 0 R 10136 0 R 10137 0 R 10139 0 R 10131 0 R 10132 0 R 10134 0 R 10126 0 R 10127 0 R 10129 0 R 10121 0 R 10122 0 R 10124 0 R 10116 0 R 10117 0 R 10119 0 R 10111 0 R 10112 0 R 10114 0 R 10106 0 R 10107 0 R 10109 0 R 10101 0 R 10102 0 R 10104 0 R 10096 0 R 10097 0 R 10099 0 R 10091 0 R 10092 0 R 10094 0 R 10086 0 R 10087 0 R 10089 0 R 10081 0 R 10082 0 R 10084 0 R 10076 0 R 10077 0 R 10079 0 R 10071 0 R 10072 0 R 10074 0 R 10066 0 R 10067 0 R 10069 0 R 10061 0 R 10062 0 R 10064 0 R 10056 0 R 10057 0 R 10059 0 R 10051 0 R 10052 0 R 10054 0 R 10046 0 R 10047 0 R 10049 0 R 10041 0 R 10042 0 R 10044 0 R 10036 0 R 10037 0 R 10039 0 R 10031 0 R 10032 0 R 10034 0 R 10018 0 R 10019 0 R 10029 0 R 10021 0 R 10024 0 R 10025 0 R 10026 0 R 10013 0 R 10014 0 R 10016 0 R 10004 0 R 10005 0 R 10011 0 R 10007 0 R 10009 0 R 9987 0 R 9988 0 R 10002 0 R 9990 0 R 9994 0 R 9995 0 R 9996 0 R 9997 0 R 9998 0 R 9984 0 R 9985 0 R 11457 0 R 9986 0 R 11455 0 R 9981 0 R 9982 0 R 11453 0 R 9983 0 R 11451 0 R 9979 0 R 9980 0 R 11449 0 R 9977 0 R 9978 0 R 11447 0 R 9975 0 R 9976 0 R 11445 0 R 9972 0 R 9973 0 R 11443 0 R 9974 0 R 11435 0 R 11436 0 R 11437 0 R 11438 0 R 11439 0 R 9969 0 R 9970 0 R 11433 0 R 9971 0 R 11428 0 R 11429 0 R 11430 0 R 9966 0 R 9967 0 R 11426 0 R 9968 0 R 11421 0 R 11422 0 R 11423 0 R 9963 0 R 9964 0 R 11419 0 R 9965 0 R 11417 0 R 9960 0 R 9961 0 R 11415 0 R 9962 0 R 11410 0 R 11411 0 R 11412 0 R 9957 0 R 9958 0 R 11408 0 R 9959 0 R 11406 0 R 9954 0 R 9955 0 R 11404 0 R 9956 0 R 11399 0 R 11400 0 R 11401 0 R 9951 0 R 9952 0 R 11397 0 R 9953 0 R 11392 0 R 11393 0 R 11394 0 R 9949 0 R 9950 0 R 11390 0 R 9947 0 R 9948 0 R 11388 0 R 9941 0 R 9942 0 R 11386 0 R 9943 0 R 9944 0 R 9945 0 R 9946 0 R] endobj 11460 0 obj [10925 0 R 10926 0 R 10928 0 R 10920 0 R 10921 0 R 10923 0 R 10915 0 R 10916 0 R 10918 0 R 10910 0 R 10911 0 R 10913 0 R 10905 0 R 10906 0 R 10908 0 R 10900 0 R 10901 0 R 10903 0 R 10895 0 R 10896 0 R 10898 0 R 10890 0 R 10891 0 R 10893 0 R 10885 0 R 10886 0 R 10888 0 R 10880 0 R 10881 0 R 10883 0 R 10875 0 R 10876 0 R 10878 0 R 10870 0 R 10871 0 R 10873 0 R 10861 0 R 10862 0 R 10868 0 R 10864 0 R 10866 0 R 10856 0 R 10857 0 R 10859 0 R 10851 0 R 10852 0 R 10854 0 R 10846 0 R 10847 0 R 10849 0 R 10841 0 R 10842 0 R 10844 0 R 10832 0 R 10833 0 R 10839 0 R 10835 0 R 10837 0 R 10827 0 R 10828 0 R 10830 0 R 10822 0 R 10823 0 R 10825 0 R 10817 0 R 10818 0 R 10820 0 R 10812 0 R 10813 0 R 10815 0 R 10807 0 R 10808 0 R 10810 0 R 10802 0 R 10803 0 R 10805 0 R 10797 0 R 10798 0 R 10800 0 R 10792 0 R 10793 0 R 10795 0 R 10787 0 R 10788 0 R 10790 0 R 10782 0 R 10783 0 R 10785 0 R 10777 0 R 10778 0 R 10780 0 R 10772 0 R 10773 0 R 10775 0 R 10767 0 R 10768 0 R 10770 0 R 10762 0 R 10763 0 R 10765 0 R 10757 0 R 10758 0 R 10760 0 R 10752 0 R 10753 0 R 10755 0 R 10747 0 R 10748 0 R 10750 0 R 10742 0 R 10743 0 R 10745 0 R 10737 0 R 10738 0 R 10740 0 R 10732 0 R 10733 0 R 10735 0 R 10727 0 R 10728 0 R 10730 0 R 10722 0 R 10723 0 R 10725 0 R 10717 0 R 10718 0 R 10720 0 R 10712 0 R 10713 0 R 10715 0 R 10707 0 R 10708 0 R 10710 0 R 10702 0 R 10703 0 R 10705 0 R 10697 0 R 10698 0 R 10700 0 R 10692 0 R 10693 0 R 10695 0 R 10687 0 R 10688 0 R 10690 0 R 10682 0 R 10683 0 R 10685 0 R 10677 0 R 10678 0 R 10680 0 R 10672 0 R 10673 0 R 10675 0 R 10667 0 R 10668 0 R 10670 0 R 10662 0 R 10663 0 R 10665 0 R 10657 0 R 10658 0 R 10660 0 R 10652 0 R 10653 0 R 10655 0 R 10647 0 R 10648 0 R 10650 0 R 10642 0 R 10643 0 R 10645 0 R 10637 0 R 10638 0 R 10640 0 R 10632 0 R 10633 0 R 10635 0 R 10627 0 R 10628 0 R 10630 0 R 10622 0 R 10623 0 R 10625 0 R 10617 0 R 10618 0 R 10620 0 R 10612 0 R 10613 0 R 10615 0 R 10607 0 R 10608 0 R 10610 0 R 10602 0 R 10603 0 R 10605 0 R 10597 0 R 10598 0 R 10600 0 R 10592 0 R 10593 0 R 10595 0 R 10587 0 R 10588 0 R 10590 0 R 10582 0 R 10583 0 R 10585 0 R 10577 0 R 10578 0 R 10580 0 R 10572 0 R 10573 0 R 10575 0 R 10567 0 R 10568 0 R 10570 0 R 10562 0 R 10563 0 R 10565 0 R 10557 0 R 10558 0 R 10560 0 R 10552 0 R 10553 0 R 10555 0 R 10547 0 R 10548 0 R 10550 0 R 10542 0 R 10543 0 R 10545 0 R 10537 0 R 10538 0 R 10540 0 R 10532 0 R 10533 0 R 10535 0 R 10527 0 R 10528 0 R 10530 0 R 10522 0 R 10523 0 R 10525 0 R 10517 0 R 10518 0 R 10520 0 R 10512 0 R 10513 0 R 10515 0 R 10507 0 R 10508 0 R 10510 0 R 10502 0 R 10503 0 R 10505 0 R 10497 0 R 10498 0 R 10500 0 R 10492 0 R 10493 0 R 10495 0 R 10487 0 R 10488 0 R 10490 0 R 10482 0 R 10483 0 R 10485 0 R 10477 0 R 10478 0 R 10480 0 R 10472 0 R 10473 0 R 10475 0 R 10467 0 R 10468 0 R 10470 0 R 10462 0 R 10463 0 R 10465 0 R 10457 0 R 10458 0 R 10460 0 R 10452 0 R 10453 0 R 10455 0 R 10447 0 R 10448 0 R 10450 0 R 10442 0 R 10443 0 R 10445 0 R] endobj 11461 0 obj [11978 0 R 11977 0 R 11976 0 R] endobj 11462 0 obj [11975 0 R 11974 0 R 11973 0 R 11954 0 R 11964 0 R null] endobj 11463 0 obj [11965 0 R 11963 0 R 11962 0 R 11961 0 R 11960 0 R null] endobj 11464 0 obj [11939 0 R 12067 0 R 12068 0 R 12069 0 R 11940 0 R 11941 0 R 11942 0 R 11943 0 R 11944 0 R 11945 0 R 11953 0 R 11952 0 R 11951 0 R 11950 0 R 11926 0 R] endobj 11465 0 obj <>12067 0 R 12068 0 R 12069 0 R]/P 11862 0 R/Pg 5329 0 R/S/Link>> endobj 11466 0 obj [11938 0 R 11937 0 R 11936 0 R 11935 0 R 11934 0 R 11933 0 R 11883 0 R 11925 0 R 11924 0 R 11923 0 R 11922 0 R 11921 0 R 11920 0 R 11919 0 R 11918 0 R 11917 0 R 11916 0 R null] endobj 11467 0 obj [11915 0 R 11914 0 R 11913 0 R 11912 0 R 11911 0 R] endobj 11468 0 obj [11910 0 R 11909 0 R 11908 0 R 11907 0 R 11906 0 R 11905 0 R 11882 0 R null] endobj 11469 0 obj [11869 0 R] endobj 11470 0 obj [11881 0 R 11878 0 R 11879 0 R 11880 0 R 11877 0 R 11876 0 R 11875 0 R 11868 0 R] endobj 11471 0 obj [11844 0 R] endobj 11472 0 obj [11843 0 R 11842 0 R 11841 0 R 11840 0 R 11839 0 R 11838 0 R 11837 0 R 11820 0 R] endobj 11473 0 obj [11836 0 R 11835 0 R 11832 0 R 11833 0 R 11834 0 R 11831 0 R 11830 0 R 11829 0 R 11828 0 R 11793 0 R] endobj 11474 0 obj [11819 0 R 11818 0 R 11817 0 R 11816 0 R 11815 0 R 11814 0 R 11813 0 R 11812 0 R] endobj 11475 0 obj [11811 0 R 11810 0 R 11809 0 R 11808 0 R 11807 0 R] endobj 11476 0 obj [11792 0 R] endobj 11477 0 obj [11791 0 R] endobj 11478 0 obj [11780 0 R] endobj 11479 0 obj [11790 0 R 11789 0 R 11788 0 R 11787 0 R 11786 0 R] endobj 11480 0 obj [11779 0 R 11750 0 R] endobj 11481 0 obj [11778 0 R 11777 0 R 11776 0 R] endobj 11482 0 obj [11775 0 R 11774 0 R 11773 0 R] endobj 11483 0 obj [11772 0 R 11771 0 R] endobj 11484 0 obj [11770 0 R 11767 0 R 11768 0 R 11769 0 R 11766 0 R 11765 0 R 11764 0 R 11749 0 R] endobj 11485 0 obj [11748 0 R] endobj 11486 0 obj [11747 0 R] endobj 11487 0 obj [11745 0 R 11746 0 R] endobj 11488 0 obj [11721 0 R] endobj 11489 0 obj [11698 0 R 11699 0 R 11700 0 R 11697 0 R 11696 0 R 11693 0 R 11694 0 R 11695 0 R] endobj 11490 0 obj [11692 0 R 11686 0 R 11687 0 R 11688 0 R 11689 0 R 11690 0 R 11715 0 R 11716 0 R 11717 0 R 11718 0 R 11691 0 R 11685 0 R 11684 0 R 11683 0 R 11681 0 R 11707 0 R 11708 0 R 11709 0 R 11710 0 R 11711 0 R 11712 0 R 11682 0 R] endobj 11491 0 obj <><>11715 0 R 11716 0 R 11717 0 R 11718 0 R]/P 11516 0 R/Pg 9228 0 R/S/Link>> endobj 11492 0 obj <><>11707 0 R 11708 0 R 11709 0 R 11710 0 R 11711 0 R 11712 0 R]/P 11520 0 R/Pg 9228 0 R/S/Link>> endobj 11493 0 obj [11680 0 R 11679 0 R 11678 0 R 11677 0 R 11676 0 R 11675 0 R 11674 0 R 11673 0 R 11672 0 R 11665 0 R 11671 0 R 11670 0 R 11669 0 R] endobj 11494 0 obj [11662 0 R 11663 0 R 11664 0 R 11661 0 R 11660 0 R 11659 0 R 11656 0 R 11657 0 R 11658 0 R] endobj 11495 0 obj [11655 0 R 11652 0 R 11653 0 R 11654 0 R 11651 0 R] endobj 11496 0 obj [11650 0 R 11649 0 R] endobj 11497 0 obj [11648 0 R 11645 0 R 11646 0 R 11647 0 R 11644 0 R 11641 0 R 11642 0 R 11643 0 R] endobj 11498 0 obj [11640 0 R 11631 0 R 11632 0 R 11633 0 R 11634 0 R 11635 0 R 11636 0 R 11637 0 R 11638 0 R 11639 0 R 11628 0 R 11629 0 R 11630 0 R 11625 0 R 11626 0 R 11627 0 R 11616 0 R 11617 0 R 11618 0 R 11619 0 R 11620 0 R 11621 0 R 11622 0 R 11623 0 R 11624 0 R 11613 0 R 11614 0 R 11615 0 R 11612 0 R 11611 0 R 11610 0 R 11609 0 R 11608 0 R 11607 0 R] endobj 11499 0 obj [11606 0 R 11603 0 R 11604 0 R 11605 0 R 11602 0 R 11601 0 R 11600 0 R 11599 0 R] endobj 11500 0 obj [11598 0 R 11597 0 R 11596 0 R 11595 0 R 11594 0 R 11593 0 R 11592 0 R 11591 0 R 11590 0 R 11587 0 R 11588 0 R 11589 0 R 11586 0 R] endobj 11501 0 obj [11585 0 R 11584 0 R 11583 0 R 11582 0 R 11581 0 R] endobj 11502 0 obj [11580 0 R] endobj 11503 0 obj [11701 0 R 11703 0 R 11704 0 R 11705 0 R 11702 0 R] endobj 11504 0 obj <>11703 0 R 11704 0 R 11705 0 R]/P 11506 0 R/Pg 9308 0 R/S/Link>> endobj 11505 0 obj [9595 0 R 11323 0 R 11324 0 R 11326 0 R 11318 0 R 11319 0 R 11321 0 R 11313 0 R 11314 0 R 11316 0 R 11308 0 R 11309 0 R 11311 0 R 11303 0 R 11304 0 R 11306 0 R 11298 0 R 11299 0 R 11301 0 R 11293 0 R 11294 0 R 11296 0 R 11288 0 R 11289 0 R 11291 0 R 11283 0 R 11284 0 R 11286 0 R 11274 0 R 11275 0 R 11281 0 R 11277 0 R 11279 0 R 11269 0 R 11270 0 R 11272 0 R 11264 0 R 11265 0 R 11267 0 R 11259 0 R 11260 0 R 11262 0 R 11254 0 R 11255 0 R 11257 0 R 11249 0 R 11250 0 R 11252 0 R 11244 0 R 11245 0 R 11247 0 R 11239 0 R 11240 0 R 11242 0 R 11234 0 R 11235 0 R 11237 0 R 11229 0 R 11230 0 R 11232 0 R 11224 0 R 11225 0 R 11227 0 R 11219 0 R 11220 0 R 11222 0 R 11214 0 R 11215 0 R 11217 0 R 11209 0 R 11210 0 R 11212 0 R 11204 0 R 11205 0 R 11207 0 R 11199 0 R 11200 0 R 11202 0 R 11194 0 R 11195 0 R 11197 0 R 11189 0 R 11190 0 R 11192 0 R 11184 0 R 11185 0 R 11187 0 R 11179 0 R 11180 0 R 11182 0 R 11174 0 R 11175 0 R 11177 0 R 11169 0 R 11170 0 R 11172 0 R 11164 0 R 11165 0 R 11167 0 R 11159 0 R 11160 0 R 11162 0 R 11154 0 R 11155 0 R 11157 0 R 11149 0 R 11150 0 R 11152 0 R 11144 0 R 11145 0 R 11147 0 R 11139 0 R 11140 0 R 11142 0 R 11134 0 R 11135 0 R 11137 0 R 11129 0 R 11130 0 R 11132 0 R 11124 0 R 11125 0 R 11127 0 R 11119 0 R 11120 0 R 11122 0 R 11114 0 R 11115 0 R 11117 0 R 11109 0 R 11110 0 R 11112 0 R 11104 0 R 11105 0 R 11107 0 R 11099 0 R 11100 0 R 11102 0 R 11094 0 R 11095 0 R 11097 0 R 11089 0 R 11090 0 R 11092 0 R 11084 0 R 11085 0 R 11087 0 R 11079 0 R 11080 0 R 11082 0 R 11074 0 R 11075 0 R 11077 0 R 11069 0 R 11070 0 R 11072 0 R 11064 0 R 11065 0 R 11067 0 R 11059 0 R 11060 0 R 11062 0 R 11054 0 R 11055 0 R 11057 0 R 11049 0 R 11050 0 R 11052 0 R 11044 0 R 11045 0 R 11047 0 R 11039 0 R 11040 0 R 11042 0 R 11034 0 R 11035 0 R 11037 0 R 11029 0 R 11030 0 R 11032 0 R 11024 0 R 11025 0 R 11027 0 R 11019 0 R 11020 0 R 11022 0 R 11014 0 R 11015 0 R 11017 0 R 11009 0 R 11010 0 R 11012 0 R 11004 0 R 11005 0 R 11007 0 R 10999 0 R 11000 0 R 11002 0 R 10994 0 R 10995 0 R 10997 0 R 10989 0 R 10990 0 R 10992 0 R 10984 0 R 10985 0 R 10987 0 R 10979 0 R 10980 0 R 10982 0 R 10974 0 R 10975 0 R 10977 0 R 10969 0 R 10970 0 R 10972 0 R 10964 0 R 10965 0 R 10967 0 R 10959 0 R 10960 0 R 10962 0 R 10954 0 R 10955 0 R 10957 0 R 10949 0 R 10950 0 R 10952 0 R 10944 0 R 10945 0 R 10947 0 R 10939 0 R 10940 0 R 10942 0 R 10930 0 R 10931 0 R 10937 0 R 10933 0 R 10935 0 R] endobj 11506 0 obj <> endobj 11507 0 obj <> endobj 11508 0 obj <> endobj 11509 0 obj <> endobj 11510 0 obj <> endobj 11511 0 obj <> endobj 11512 0 obj <> endobj 11513 0 obj <> endobj 11514 0 obj <> endobj 11515 0 obj <> endobj 11516 0 obj <> endobj 11517 0 obj <> endobj 11518 0 obj <> endobj 11519 0 obj <> endobj 11520 0 obj <> endobj 11521 0 obj <> endobj 11522 0 obj <> endobj 11523 0 obj <> endobj 11524 0 obj <> endobj 11525 0 obj <> endobj 11526 0 obj <> endobj 11527 0 obj <> endobj 11528 0 obj <> endobj 11529 0 obj <> endobj 11530 0 obj <> endobj 11531 0 obj <> endobj 11532 0 obj <> endobj 11533 0 obj <> endobj 11534 0 obj <> endobj 11535 0 obj <> endobj 11536 0 obj <> endobj 11537 0 obj <> endobj 11538 0 obj <> endobj 11539 0 obj <> endobj 11540 0 obj <> endobj 11541 0 obj <> endobj 11542 0 obj <> endobj 11543 0 obj <> endobj 11544 0 obj <> endobj 11545 0 obj <> endobj 11546 0 obj <> endobj 11547 0 obj <> endobj 11548 0 obj <> endobj 11549 0 obj <> endobj 11550 0 obj <> endobj 11551 0 obj <> endobj 11552 0 obj <> endobj 11553 0 obj <> endobj 11554 0 obj <> endobj 11555 0 obj <> endobj 11556 0 obj <> endobj 11557 0 obj <> endobj 11558 0 obj <> endobj 11559 0 obj <> endobj 11560 0 obj <> endobj 11561 0 obj <> endobj 11562 0 obj <> endobj 11563 0 obj <> endobj 11564 0 obj <> endobj 11565 0 obj <> endobj 11566 0 obj <> endobj 11567 0 obj <> endobj 11568 0 obj <> endobj 11569 0 obj <> endobj 11570 0 obj <> endobj 11571 0 obj <> endobj 11572 0 obj <> endobj 11573 0 obj <> endobj 11574 0 obj <> endobj 11575 0 obj <> endobj 11576 0 obj <> endobj 11577 0 obj <> endobj 11578 0 obj <> endobj 11579 0 obj <> endobj 11580 0 obj <> endobj 11581 0 obj <> endobj 11582 0 obj <> endobj 11583 0 obj <> endobj 11584 0 obj <> endobj 11585 0 obj <> endobj 11586 0 obj <> endobj 11587 0 obj <> endobj 11588 0 obj <> endobj 11589 0 obj <> endobj 11590 0 obj <> endobj 11591 0 obj <> endobj 11592 0 obj <> endobj 11593 0 obj <> endobj 11594 0 obj <> endobj 11595 0 obj <> endobj 11596 0 obj <> endobj 11597 0 obj <> endobj 11598 0 obj <> endobj 11599 0 obj <> endobj 11600 0 obj <> endobj 11601 0 obj <> endobj 11602 0 obj <> endobj 11603 0 obj <> endobj 11604 0 obj <> endobj 11605 0 obj <> endobj 11606 0 obj <> endobj 11607 0 obj <> endobj 11608 0 obj <> endobj 11609 0 obj <> endobj 11610 0 obj <> endobj 11611 0 obj <> endobj 11612 0 obj <> endobj 11613 0 obj <> endobj 11614 0 obj <> endobj 11615 0 obj <> endobj 11616 0 obj <> endobj 11617 0 obj <> endobj 11618 0 obj <> endobj 11619 0 obj <> endobj 11620 0 obj <> endobj 11621 0 obj <> endobj 11622 0 obj <> endobj 11623 0 obj <> endobj 11624 0 obj <> endobj 11625 0 obj <> endobj 11626 0 obj <> endobj 11627 0 obj <> endobj 11628 0 obj <> endobj 11629 0 obj <> endobj 11630 0 obj <> endobj 11631 0 obj <> endobj 11632 0 obj <> endobj 11633 0 obj <> endobj 11634 0 obj <> endobj 11635 0 obj <> endobj 11636 0 obj <> endobj 11637 0 obj <> endobj 11638 0 obj <> endobj 11639 0 obj <> endobj 11640 0 obj <> endobj 11641 0 obj <> endobj 11642 0 obj <> endobj 11643 0 obj <> endobj 11644 0 obj <> endobj 11645 0 obj <> endobj 11646 0 obj <> endobj 11647 0 obj <> endobj 11648 0 obj <> endobj 11649 0 obj <> endobj 11650 0 obj <> endobj 11651 0 obj <> endobj 11652 0 obj <> endobj 11653 0 obj <> endobj 11654 0 obj <> endobj 11655 0 obj <> endobj 11656 0 obj <> endobj 11657 0 obj <> endobj 11658 0 obj <> endobj 11659 0 obj <> endobj 11660 0 obj <> endobj 11661 0 obj <> endobj 11662 0 obj <> endobj 11663 0 obj <> endobj 11664 0 obj <> endobj 11665 0 obj <> endobj 11666 0 obj <> endobj 11667 0 obj <> endobj 11668 0 obj <> endobj 11669 0 obj <> endobj 11670 0 obj <> endobj 11671 0 obj <> endobj 11672 0 obj <> endobj 11673 0 obj <> endobj 11674 0 obj <> endobj 11675 0 obj <> endobj 11676 0 obj <> endobj 11677 0 obj <> endobj 11678 0 obj <> endobj 11679 0 obj <> endobj 11680 0 obj <> endobj 11681 0 obj <> endobj 11682 0 obj <> endobj 11683 0 obj <> endobj 11684 0 obj <> endobj 11685 0 obj <> endobj 11686 0 obj <> endobj 11687 0 obj <> endobj 11688 0 obj <> endobj 11689 0 obj <> endobj 11690 0 obj <> endobj 11691 0 obj <> endobj 11692 0 obj <> endobj 11693 0 obj <> endobj 11694 0 obj <> endobj 11695 0 obj <> endobj 11696 0 obj <> endobj 11697 0 obj <> endobj 11698 0 obj <> endobj 11699 0 obj <> endobj 11700 0 obj <> endobj 11701 0 obj <> endobj 11702 0 obj <> endobj 11703 0 obj <> endobj 11704 0 obj <> endobj 11705 0 obj <> endobj 11706 0 obj <>/Border[0 0 0]/Rect[162.3 472.88 265.08 484.88]/StructParent 110/Subtype/Link/Type/Annot>> endobj 11707 0 obj <> endobj 11708 0 obj <> endobj 11709 0 obj <> endobj 11710 0 obj <> endobj 11711 0 obj <> endobj 11712 0 obj <> endobj 11713 0 obj <>/Border[0 0 0]/Rect[123.96 216.56 179.52 228.56]/StructParent 98/Subtype/Link/Type/Annot>> endobj 11714 0 obj <>/Border[0 0 0]/Rect[238.02 228.56 527.94 240.56]/StructParent 97/Subtype/Link/Type/Annot>> endobj 11715 0 obj <> endobj 11716 0 obj <> endobj 11717 0 obj <> endobj 11718 0 obj <> endobj 11719 0 obj <> endobj 11720 0 obj <> endobj 11721 0 obj <> endobj 11722 0 obj <> endobj 11723 0 obj <> endobj 11724 0 obj <> endobj 11725 0 obj <> endobj 11726 0 obj <> endobj 11727 0 obj <> endobj 11728 0 obj <> endobj 11729 0 obj <> endobj 11730 0 obj <> endobj 11731 0 obj <> endobj 11732 0 obj <> endobj 11733 0 obj <> endobj 11734 0 obj <> endobj 11735 0 obj <> endobj 11736 0 obj <> endobj 11737 0 obj <> endobj 11738 0 obj <> endobj 11739 0 obj <> endobj 11740 0 obj <> endobj 11741 0 obj <> endobj 11742 0 obj <> endobj 11743 0 obj <> endobj 11744 0 obj <> endobj 11745 0 obj <> endobj 11746 0 obj <> endobj 11747 0 obj <> endobj 11748 0 obj <> endobj 11749 0 obj <> endobj 11750 0 obj <> endobj 11751 0 obj <> endobj 11752 0 obj <> endobj 11753 0 obj <> endobj 11754 0 obj <> endobj 11755 0 obj <> endobj 11756 0 obj <> endobj 11757 0 obj <> endobj 11758 0 obj <> endobj 11759 0 obj <> endobj 11760 0 obj <> endobj 11761 0 obj <> endobj 11762 0 obj <> endobj 11763 0 obj <> endobj 11764 0 obj <> endobj 11765 0 obj <> endobj 11766 0 obj <> endobj 11767 0 obj <> endobj 11768 0 obj <> endobj 11769 0 obj <> endobj 11770 0 obj <> endobj 11771 0 obj <> endobj 11772 0 obj <> endobj 11773 0 obj <> endobj 11774 0 obj <> endobj 11775 0 obj <> endobj 11776 0 obj <> endobj 11777 0 obj <> endobj 11778 0 obj <> endobj 11779 0 obj <> endobj 11780 0 obj <> endobj 11781 0 obj <> endobj 11782 0 obj <> endobj 11783 0 obj <> endobj 11784 0 obj <> endobj 11785 0 obj <> endobj 11786 0 obj <> endobj 11787 0 obj <> endobj 11788 0 obj <> endobj 11789 0 obj <> endobj 11790 0 obj <> endobj 11791 0 obj <> endobj 11792 0 obj <> endobj 11793 0 obj <> endobj 11794 0 obj <> endobj 11795 0 obj <> endobj 11796 0 obj <> endobj 11797 0 obj <> endobj 11798 0 obj <> endobj 11799 0 obj <> endobj 11800 0 obj <> endobj 11801 0 obj <> endobj 11802 0 obj <> endobj 11803 0 obj <> endobj 11804 0 obj <> endobj 11805 0 obj <> endobj 11806 0 obj <> endobj 11807 0 obj <> endobj 11808 0 obj <> endobj 11809 0 obj <> endobj 11810 0 obj <> endobj 11811 0 obj <> endobj 11812 0 obj <> endobj 11813 0 obj <> endobj 11814 0 obj <> endobj 11815 0 obj <> endobj 11816 0 obj <> endobj 11817 0 obj <> endobj 11818 0 obj <> endobj 11819 0 obj <> endobj 11820 0 obj <> endobj 11821 0 obj <> endobj 11822 0 obj <> endobj 11823 0 obj <> endobj 11824 0 obj <> endobj 11825 0 obj <> endobj 11826 0 obj <> endobj 11827 0 obj <> endobj 11828 0 obj <> endobj 11829 0 obj <> endobj 11830 0 obj <> endobj 11831 0 obj <> endobj 11832 0 obj <> endobj 11833 0 obj <> endobj 11834 0 obj <> endobj 11835 0 obj <> endobj 11836 0 obj <> endobj 11837 0 obj <> endobj 11838 0 obj <> endobj 11839 0 obj <> endobj 11840 0 obj <> endobj 11841 0 obj <> endobj 11842 0 obj <> endobj 11843 0 obj <> endobj 11844 0 obj <> endobj 11845 0 obj <> endobj 11846 0 obj <> endobj 11847 0 obj <> endobj 11848 0 obj <> endobj 11849 0 obj <> endobj 11850 0 obj <> endobj 11851 0 obj <> endobj 11852 0 obj <> endobj 11853 0 obj <> endobj 11854 0 obj <> endobj 11855 0 obj <> endobj 11856 0 obj <> endobj 11857 0 obj <> endobj 11858 0 obj <> endobj 11859 0 obj <> endobj 11860 0 obj <> endobj 11861 0 obj <> endobj 11862 0 obj <> endobj 11863 0 obj <> endobj 11864 0 obj <> endobj 11865 0 obj <> endobj 11866 0 obj <> endobj 11867 0 obj <> endobj 11868 0 obj <> endobj 11869 0 obj <> endobj 11870 0 obj <> endobj 11871 0 obj <> endobj 11872 0 obj <> endobj 11873 0 obj <> endobj 11874 0 obj <> endobj 11875 0 obj <> endobj 11876 0 obj <> endobj 11877 0 obj <> endobj 11878 0 obj <> endobj 11879 0 obj <> endobj 11880 0 obj <> endobj 11881 0 obj <> endobj 11882 0 obj <> endobj 11883 0 obj <> endobj 11884 0 obj <> endobj 11885 0 obj <> endobj 11886 0 obj <> endobj 11887 0 obj <> endobj 11888 0 obj <> endobj 11889 0 obj <> endobj 11890 0 obj <> endobj 11891 0 obj <> endobj 11892 0 obj <> endobj 11893 0 obj <> endobj 11894 0 obj <> endobj 11895 0 obj <> endobj 11896 0 obj <> endobj 11897 0 obj <> endobj 11898 0 obj <> endobj 11899 0 obj <> endobj 11900 0 obj <> endobj 11901 0 obj <> endobj 11902 0 obj <> endobj 11903 0 obj <> endobj 11904 0 obj <> endobj 11905 0 obj <> endobj 11906 0 obj <> endobj 11907 0 obj <> endobj 11908 0 obj <> endobj 11909 0 obj <> endobj 11910 0 obj <> endobj 11911 0 obj <> endobj 11912 0 obj <> endobj 11913 0 obj <> endobj 11914 0 obj <> endobj 11915 0 obj <> endobj 11916 0 obj <> endobj 11917 0 obj <> endobj 11918 0 obj <> endobj 11919 0 obj <> endobj 11920 0 obj <> endobj 11921 0 obj <> endobj 11922 0 obj <> endobj 11923 0 obj <> endobj 11924 0 obj <> endobj 11925 0 obj <> endobj 11926 0 obj <> endobj 11927 0 obj <> endobj 11928 0 obj <> endobj 11929 0 obj <> endobj 11930 0 obj <> endobj 11931 0 obj <> endobj 11932 0 obj <> endobj 11933 0 obj <> endobj 11934 0 obj <> endobj 11935 0 obj <> endobj 11936 0 obj <> endobj 11937 0 obj <> endobj 11938 0 obj <> endobj 11939 0 obj <> endobj 11940 0 obj <> endobj 11941 0 obj <> endobj 11942 0 obj <> endobj 11943 0 obj <> endobj 11944 0 obj <> endobj 11945 0 obj <> endobj 11946 0 obj <> endobj 11947 0 obj <> endobj 11948 0 obj <> endobj 11949 0 obj <> endobj 11950 0 obj <> endobj 11951 0 obj <> endobj 11952 0 obj <> endobj 11953 0 obj <> endobj 11954 0 obj <> endobj 11955 0 obj <> endobj 11956 0 obj <> endobj 11957 0 obj <> endobj 11958 0 obj <> endobj 11959 0 obj <> endobj 11960 0 obj <> endobj 11961 0 obj <> endobj 11962 0 obj <> endobj 11963 0 obj <> endobj 11964 0 obj <> endobj 11965 0 obj <> endobj 11966 0 obj <> endobj 11967 0 obj <> endobj 11968 0 obj <> endobj 11969 0 obj <> endobj 11970 0 obj <> endobj 11971 0 obj <> endobj 11972 0 obj <> endobj 11973 0 obj <> endobj 11974 0 obj <> endobj 11975 0 obj <> endobj 11976 0 obj <> endobj 11977 0 obj <> endobj 11978 0 obj <> endobj 11979 0 obj <> endobj 11980 0 obj <> endobj 11981 0 obj <> endobj 11982 0 obj <> endobj 11983 0 obj <> endobj 11984 0 obj <> endobj 11985 0 obj <> endobj 11986 0 obj <> endobj 11987 0 obj <> endobj 11988 0 obj <> endobj 11989 0 obj <> endobj 11990 0 obj <> endobj 11991 0 obj <> endobj 11992 0 obj <> endobj 11993 0 obj <> endobj 11994 0 obj <> endobj 11995 0 obj <> endobj 11996 0 obj <> endobj 11997 0 obj <> endobj 11998 0 obj <> endobj 11999 0 obj <> endobj 12000 0 obj <> endobj 12001 0 obj <> endobj 12002 0 obj <> endobj 12003 0 obj <> endobj 12004 0 obj <> endobj 12005 0 obj <> endobj 12006 0 obj <> endobj 12007 0 obj <> endobj 12008 0 obj <> endobj 12009 0 obj <> endobj 12010 0 obj <> endobj 12011 0 obj <> endobj 12012 0 obj <> endobj 12013 0 obj <> endobj 12014 0 obj <> endobj 12015 0 obj <> endobj 12016 0 obj <> endobj 12017 0 obj <> endobj 12018 0 obj <> endobj 12019 0 obj <> endobj 12020 0 obj <> endobj 12021 0 obj <> endobj 12022 0 obj <> endobj 12023 0 obj <> endobj 12024 0 obj <> endobj 12025 0 obj <> endobj 12026 0 obj <> endobj 12027 0 obj <> endobj 12028 0 obj <> endobj 12029 0 obj <> endobj 12030 0 obj <> endobj 12031 0 obj <> endobj 12032 0 obj <> endobj 12033 0 obj <> endobj 12034 0 obj <> endobj 12035 0 obj <> endobj 12036 0 obj <> endobj 12037 0 obj <> endobj 12038 0 obj <> endobj 12039 0 obj <> endobj 12040 0 obj <> endobj 12041 0 obj <> endobj 12042 0 obj <> endobj 12043 0 obj <> endobj 12044 0 obj <> endobj 12045 0 obj <> endobj 12046 0 obj <> endobj 12047 0 obj <> endobj 12048 0 obj <> endobj 12049 0 obj <> endobj 12050 0 obj <> endobj 12051 0 obj <> endobj 12052 0 obj <> endobj 12053 0 obj <> endobj 12054 0 obj <> endobj 12055 0 obj <> endobj 12056 0 obj <> endobj 12057 0 obj <> endobj 12058 0 obj <> endobj 12059 0 obj <> endobj 12060 0 obj <> endobj 12061 0 obj <> endobj 12062 0 obj <> endobj 12063 0 obj <> endobj 12064 0 obj <> endobj 12065 0 obj <> endobj 12066 0 obj <> endobj 12067 0 obj <> endobj 12068 0 obj <> endobj 12069 0 obj <> endobj 12070 0 obj <> endobj 12071 0 obj [12572 0 R 12573 0 R 12574 0 R 12575 0 R 12576 0 R 12577 0 R 12578 0 R 12579 0 R 12580 0 R] endobj 12072 0 obj [12567 0 R] endobj 12073 0 obj [12562 0 R] endobj 12074 0 obj [12557 0 R] endobj 12075 0 obj [12545 0 R 12543 0 R 12553 0 R 12554 0 R 12555 0 R 12544 0 R 12540 0 R 12541 0 R 12542 0 R 12539 0 R null] endobj 12076 0 obj <>12553 0 R 12554 0 R 12555 0 R]/P 12524 0 R/Pg 1603 0 R/S/Link>> endobj 12077 0 obj [12538 0 R 12537 0 R 12536 0 R 12546 0 R 12549 0 R 12550 0 R 12551 0 R 12547 0 R 12548 0 R 12535 0 R 12534 0 R null] endobj 12078 0 obj <>12549 0 R 12550 0 R 12551 0 R]/P 12518 0 R/Pg 1611 0 R/S/Link>> endobj 12079 0 obj [12425 0 R] endobj 12080 0 obj [12513 0 R 12514 0 R 12515 0 R 12516 0 R 12517 0 R 12512 0 R 12499 0 R 12500 0 R 12501 0 R 12502 0 R 12503 0 R 12504 0 R 12505 0 R 12506 0 R 12507 0 R 12508 0 R 12509 0 R 12510 0 R 12511 0 R 12494 0 R 12495 0 R 12496 0 R 12497 0 R 12498 0 R 12485 0 R 12486 0 R 12487 0 R 12488 0 R 12489 0 R 12490 0 R 12491 0 R 12492 0 R 12493 0 R 12484 0 R] endobj 12081 0 obj [12475 0 R 12476 0 R 12477 0 R 12478 0 R 12479 0 R 12480 0 R 12481 0 R 12482 0 R 12483 0 R 12474 0 R 12473 0 R] endobj 12082 0 obj [12472 0 R 12467 0 R 12468 0 R 12469 0 R 12470 0 R 12471 0 R 12462 0 R 12463 0 R 12464 0 R 12465 0 R 12466 0 R 12457 0 R 12458 0 R 12459 0 R 12460 0 R 12461 0 R 12452 0 R 12453 0 R 12454 0 R 12455 0 R 12456 0 R 12443 0 R 12444 0 R 12445 0 R 12446 0 R 12447 0 R 12448 0 R 12449 0 R 12450 0 R 12451 0 R 12442 0 R 12420 0 R 12421 0 R 12422 0 R 12423 0 R 12424 0 R null] endobj 12083 0 obj [12415 0 R 12416 0 R 12417 0 R 12418 0 R 12419 0 R] endobj 12084 0 obj [12414 0 R 12413 0 R 12404 0 R 12405 0 R 12406 0 R 12407 0 R 12408 0 R 12409 0 R 12410 0 R 12411 0 R 12412 0 R] endobj 12085 0 obj [12399 0 R 12400 0 R 12401 0 R 12402 0 R 12403 0 R 12390 0 R 12391 0 R 12392 0 R 12393 0 R 12394 0 R 12395 0 R 12396 0 R 12397 0 R 12398 0 R 12389 0 R] endobj 12086 0 obj [12384 0 R 12385 0 R 12386 0 R 12387 0 R 12388 0 R] endobj 12087 0 obj [12379 0 R 12380 0 R 12381 0 R 12382 0 R 12383 0 R 12370 0 R 12371 0 R 12372 0 R 12373 0 R 12374 0 R 12375 0 R 12376 0 R 12377 0 R 12378 0 R 12369 0 R] endobj 12088 0 obj [12368 0 R] endobj 12089 0 obj [12367 0 R] endobj 12090 0 obj [12366 0 R] endobj 12091 0 obj [12363 0 R 12364 0 R 12365 0 R null] endobj 12092 0 obj [12362 0 R] endobj 12093 0 obj [12361 0 R 12335 0 R] endobj 12094 0 obj [12358 0 R 12359 0 R 12360 0 R 12355 0 R 12356 0 R 12357 0 R 12352 0 R 12353 0 R 12354 0 R 12351 0 R 12348 0 R 12349 0 R 12350 0 R 12342 0 R 12344 0 R 12332 0 R 12333 0 R 12334 0 R null 12346 0 R] endobj 12095 0 obj [12331 0 R] endobj 12096 0 obj [12330 0 R 12329 0 R] endobj 12097 0 obj [12297 0 R 12298 0 R] endobj 12098 0 obj [12280 0 R 12279 0 R 12278 0 R 12277 0 R 12276 0 R 12275 0 R 12274 0 R 12246 0 R] endobj 12099 0 obj [12273 0 R 12272 0 R 12271 0 R 12270 0 R 12269 0 R] endobj 12100 0 obj [12268 0 R 12267 0 R 12263 0 R] endobj 12101 0 obj [12264 0 R 12265 0 R 12266 0 R 12262 0 R 12261 0 R 12260 0 R 12259 0 R 12219 0 R] endobj 12102 0 obj [12245 0 R 12244 0 R 12243 0 R 12242 0 R 12241 0 R 12240 0 R 12239 0 R 12238 0 R] endobj 12103 0 obj [12237 0 R 12236 0 R 12235 0 R 12234 0 R 12233 0 R] endobj 12104 0 obj [12218 0 R] endobj 12105 0 obj [12217 0 R] endobj 12106 0 obj [12216 0 R] endobj 12107 0 obj [12214 0 R 12215 0 R] endobj 12108 0 obj [12213 0 R] endobj 12109 0 obj [12206 0 R] endobj 12110 0 obj [12212 0 R 12211 0 R 12210 0 R 12195 0 R] endobj 12111 0 obj [12205 0 R 12204 0 R 12203 0 R 12202 0 R 12201 0 R null] endobj 12112 0 obj [12194 0 R 12193 0 R] endobj 12113 0 obj [12186 0 R] endobj 12114 0 obj [12192 0 R 12191 0 R 12190 0 R 12185 0 R null] endobj 12115 0 obj [12184 0 R 12171 0 R] endobj 12116 0 obj [12183 0 R 12180 0 R 12181 0 R 12182 0 R 12179 0 R 12178 0 R 12177 0 R 12170 0 R] endobj 12117 0 obj [12169 0 R] endobj 12118 0 obj [12168 0 R] endobj 12119 0 obj [12165 0 R 12293 0 R 12294 0 R 12295 0 R 12166 0 R 12287 0 R 12288 0 R 12289 0 R 12290 0 R 12167 0 R 12281 0 R 12283 0 R 12284 0 R 12285 0 R 12282 0 R] endobj 12120 0 obj <>12293 0 R 12294 0 R 12295 0 R]/P 12164 0 R/Pg 4947 0 R/S/Link>> endobj 12121 0 obj <><>12287 0 R 12288 0 R 12289 0 R 12290 0 R]/P 12164 0 R/Pg 4947 0 R/S/Link>> endobj 12122 0 obj <>12283 0 R 12284 0 R 12285 0 R]/P 12134 0 R/Pg 4947 0 R/S/Link>> endobj 12123 0 obj [12066 0 R 12065 0 R 12064 0 R null] endobj 12124 0 obj [12027 0 R 12063 0 R 12062 0 R 12061 0 R 12060 0 R] endobj 12125 0 obj [12059 0 R 12058 0 R 12057 0 R 12056 0 R 12055 0 R 12054 0 R] endobj 12126 0 obj [12053 0 R 12052 0 R 12049 0 R 12050 0 R 12051 0 R 12048 0 R 12047 0 R 12046 0 R 12045 0 R 12000 0 R] endobj 12127 0 obj [12026 0 R 12025 0 R 12024 0 R 12023 0 R 12022 0 R 12021 0 R 12020 0 R 12019 0 R] endobj 12128 0 obj [12018 0 R 12017 0 R 12016 0 R 12015 0 R 12014 0 R] endobj 12129 0 obj [11999 0 R] endobj 12130 0 obj [11992 0 R] endobj 12131 0 obj [11998 0 R 11997 0 R 11996 0 R 11981 0 R null] endobj 12132 0 obj [11991 0 R 11990 0 R 11989 0 R 11988 0 R 11987 0 R null] endobj 12133 0 obj [11980 0 R 11979 0 R 11966 0 R] endobj 12134 0 obj <> endobj 12135 0 obj <> endobj 12136 0 obj <> endobj 12137 0 obj <> endobj 12138 0 obj <> endobj 12139 0 obj <> endobj 12140 0 obj <> endobj 12141 0 obj <> endobj 12142 0 obj <> endobj 12143 0 obj <> endobj 12144 0 obj <> endobj 12145 0 obj <> endobj 12146 0 obj <> endobj 12147 0 obj <> endobj 12148 0 obj <> endobj 12149 0 obj <> endobj 12150 0 obj <> endobj 12151 0 obj <> endobj 12152 0 obj <> endobj 12153 0 obj <> endobj 12154 0 obj <> endobj 12155 0 obj <> endobj 12156 0 obj <> endobj 12157 0 obj <> endobj 12158 0 obj <> endobj 12159 0 obj <> endobj 12160 0 obj <> endobj 12161 0 obj <> endobj 12162 0 obj <> endobj 12163 0 obj <> endobj 12164 0 obj <> endobj 12165 0 obj <> endobj 12166 0 obj <> endobj 12167 0 obj <> endobj 12168 0 obj <> endobj 12169 0 obj <> endobj 12170 0 obj <> endobj 12171 0 obj <> endobj 12172 0 obj <> endobj 12173 0 obj <> endobj 12174 0 obj <> endobj 12175 0 obj <> endobj 12176 0 obj <> endobj 12177 0 obj <> endobj 12178 0 obj <> endobj 12179 0 obj <> endobj 12180 0 obj <> endobj 12181 0 obj <> endobj 12182 0 obj <> endobj 12183 0 obj <> endobj 12184 0 obj <> endobj 12185 0 obj <> endobj 12186 0 obj <> endobj 12187 0 obj <> endobj 12188 0 obj <> endobj 12189 0 obj <> endobj 12190 0 obj <> endobj 12191 0 obj <> endobj 12192 0 obj <> endobj 12193 0 obj <> endobj 12194 0 obj <> endobj 12195 0 obj <> endobj 12196 0 obj <> endobj 12197 0 obj <> endobj 12198 0 obj <> endobj 12199 0 obj <> endobj 12200 0 obj <> endobj 12201 0 obj <> endobj 12202 0 obj <> endobj 12203 0 obj <> endobj 12204 0 obj <> endobj 12205 0 obj <> endobj 12206 0 obj <> endobj 12207 0 obj <> endobj 12208 0 obj <> endobj 12209 0 obj <> endobj 12210 0 obj <> endobj 12211 0 obj <> endobj 12212 0 obj <> endobj 12213 0 obj <> endobj 12214 0 obj <> endobj 12215 0 obj <> endobj 12216 0 obj <> endobj 12217 0 obj <> endobj 12218 0 obj <> endobj 12219 0 obj <> endobj 12220 0 obj <> endobj 12221 0 obj <> endobj 12222 0 obj <> endobj 12223 0 obj <> endobj 12224 0 obj <> endobj 12225 0 obj <> endobj 12226 0 obj <> endobj 12227 0 obj <> endobj 12228 0 obj <> endobj 12229 0 obj <> endobj 12230 0 obj <> endobj 12231 0 obj <> endobj 12232 0 obj <> endobj 12233 0 obj <> endobj 12234 0 obj <> endobj 12235 0 obj <> endobj 12236 0 obj <> endobj 12237 0 obj <> endobj 12238 0 obj <> endobj 12239 0 obj <> endobj 12240 0 obj <> endobj 12241 0 obj <> endobj 12242 0 obj <> endobj 12243 0 obj <> endobj 12244 0 obj <> endobj 12245 0 obj <> endobj 12246 0 obj <> endobj 12247 0 obj <> endobj 12248 0 obj <> endobj 12249 0 obj <> endobj 12250 0 obj <> endobj 12251 0 obj <> endobj 12252 0 obj <> endobj 12253 0 obj <> endobj 12254 0 obj <> endobj 12255 0 obj <> endobj 12256 0 obj <> endobj 12257 0 obj <> endobj 12258 0 obj <> endobj 12259 0 obj <> endobj 12260 0 obj <> endobj 12261 0 obj <> endobj 12262 0 obj <> endobj 12263 0 obj <> endobj 12264 0 obj <> endobj 12265 0 obj <> endobj 12266 0 obj <> endobj 12267 0 obj <> endobj 12268 0 obj <> endobj 12269 0 obj <> endobj 12270 0 obj <> endobj 12271 0 obj <> endobj 12272 0 obj <> endobj 12273 0 obj <> endobj 12274 0 obj <> endobj 12275 0 obj <> endobj 12276 0 obj <> endobj 12277 0 obj <> endobj 12278 0 obj <> endobj 12279 0 obj <> endobj 12280 0 obj <> endobj 12281 0 obj <> endobj 12282 0 obj <> endobj 12283 0 obj <> endobj 12284 0 obj <> endobj 12285 0 obj <> endobj 12286 0 obj <> endobj 12287 0 obj <> endobj 12288 0 obj <> endobj 12289 0 obj <> endobj 12290 0 obj <> endobj 12291 0 obj <> endobj 12292 0 obj <> endobj 12293 0 obj <> endobj 12294 0 obj <> endobj 12295 0 obj <> endobj 12296 0 obj <> endobj 12297 0 obj <> endobj 12298 0 obj <> endobj 12299 0 obj <> endobj 12300 0 obj <> endobj 12301 0 obj <> endobj 12302 0 obj <> endobj 12303 0 obj <> endobj 12304 0 obj <> endobj 12305 0 obj <> endobj 12306 0 obj <> endobj 12307 0 obj <> endobj 12308 0 obj <> endobj 12309 0 obj <> endobj 12310 0 obj <> endobj 12311 0 obj <> endobj 12312 0 obj <> endobj 12313 0 obj <> endobj 12314 0 obj <> endobj 12315 0 obj <> endobj 12316 0 obj <> endobj 12317 0 obj <> endobj 12318 0 obj <> endobj 12319 0 obj <> endobj 12320 0 obj <> endobj 12321 0 obj <> endobj 12322 0 obj <> endobj 12323 0 obj <> endobj 12324 0 obj <> endobj 12325 0 obj <> endobj 12326 0 obj <> endobj 12327 0 obj <> endobj 12328 0 obj <> endobj 12329 0 obj <> endobj 12330 0 obj <> endobj 12331 0 obj <> endobj 12332 0 obj <> endobj 12333 0 obj <> endobj 12334 0 obj <> endobj 12335 0 obj <> endobj 12336 0 obj <> endobj 12337 0 obj <> endobj 12338 0 obj <> endobj 12339 0 obj <> endobj 12340 0 obj <> endobj 12341 0 obj <> endobj 12342 0 obj <> endobj 12343 0 obj <> endobj 12344 0 obj <> endobj 12345 0 obj <> endobj 12346 0 obj <> endobj 12347 0 obj <> endobj 12348 0 obj <> endobj 12349 0 obj <> endobj 12350 0 obj <> endobj 12351 0 obj <> endobj 12352 0 obj <> endobj 12353 0 obj <> endobj 12354 0 obj <> endobj 12355 0 obj <> endobj 12356 0 obj <> endobj 12357 0 obj <> endobj 12358 0 obj <> endobj 12359 0 obj <> endobj 12360 0 obj <> endobj 12361 0 obj <> endobj 12362 0 obj <> endobj 12363 0 obj <> endobj 12364 0 obj <> endobj 12365 0 obj <> endobj 12366 0 obj <> endobj 12367 0 obj <> endobj 12368 0 obj <> endobj 12369 0 obj <> endobj 12370 0 obj <> endobj 12371 0 obj <> endobj 12372 0 obj <> endobj 12373 0 obj <> endobj 12374 0 obj <> endobj 12375 0 obj <> endobj 12376 0 obj <> endobj 12377 0 obj <> endobj 12378 0 obj <> endobj 12379 0 obj <> endobj 12380 0 obj <> endobj 12381 0 obj <> endobj 12382 0 obj <> endobj 12383 0 obj <> endobj 12384 0 obj <> endobj 12385 0 obj <> endobj 12386 0 obj <> endobj 12387 0 obj <> endobj 12388 0 obj <> endobj 12389 0 obj <> endobj 12390 0 obj <> endobj 12391 0 obj <> endobj 12392 0 obj <> endobj 12393 0 obj <> endobj 12394 0 obj <> endobj 12395 0 obj <> endobj 12396 0 obj <> endobj 12397 0 obj <> endobj 12398 0 obj <> endobj 12399 0 obj <> endobj 12400 0 obj <> endobj 12401 0 obj <> endobj 12402 0 obj <> endobj 12403 0 obj <> endobj 12404 0 obj <> endobj 12405 0 obj <> endobj 12406 0 obj <> endobj 12407 0 obj <> endobj 12408 0 obj <> endobj 12409 0 obj <> endobj 12410 0 obj <> endobj 12411 0 obj <> endobj 12412 0 obj <> endobj 12413 0 obj <> endobj 12414 0 obj <> endobj 12415 0 obj <> endobj 12416 0 obj <> endobj 12417 0 obj <> endobj 12418 0 obj <> endobj 12419 0 obj <> endobj 12420 0 obj <> endobj 12421 0 obj <> endobj 12422 0 obj <> endobj 12423 0 obj <> endobj 12424 0 obj <> endobj 12425 0 obj <> endobj 12426 0 obj <> endobj 12427 0 obj <> endobj 12428 0 obj <> endobj 12429 0 obj <> endobj 12430 0 obj <> endobj 12431 0 obj <> endobj 12432 0 obj <> endobj 12433 0 obj <> endobj 12434 0 obj <> endobj 12435 0 obj <> endobj 12436 0 obj <> endobj 12437 0 obj <> endobj 12438 0 obj <> endobj 12439 0 obj <> endobj 12440 0 obj <> endobj 12441 0 obj <> endobj 12442 0 obj <> endobj 12443 0 obj <> endobj 12444 0 obj <> endobj 12445 0 obj <> endobj 12446 0 obj <> endobj 12447 0 obj <> endobj 12448 0 obj <> endobj 12449 0 obj <> endobj 12450 0 obj <> endobj 12451 0 obj <> endobj 12452 0 obj <> endobj 12453 0 obj <> endobj 12454 0 obj <> endobj 12455 0 obj <> endobj 12456 0 obj <> endobj 12457 0 obj <> endobj 12458 0 obj <> endobj 12459 0 obj <> endobj 12460 0 obj <> endobj 12461 0 obj <> endobj 12462 0 obj <> endobj 12463 0 obj <> endobj 12464 0 obj <> endobj 12465 0 obj <> endobj 12466 0 obj <> endobj 12467 0 obj <> endobj 12468 0 obj <> endobj 12469 0 obj <> endobj 12470 0 obj <> endobj 12471 0 obj <> endobj 12472 0 obj <> endobj 12473 0 obj <> endobj 12474 0 obj <> endobj 12475 0 obj <> endobj 12476 0 obj <> endobj 12477 0 obj <> endobj 12478 0 obj <> endobj 12479 0 obj <> endobj 12480 0 obj <> endobj 12481 0 obj <> endobj 12482 0 obj <> endobj 12483 0 obj <> endobj 12484 0 obj <> endobj 12485 0 obj <> endobj 12486 0 obj <> endobj 12487 0 obj <> endobj 12488 0 obj <> endobj 12489 0 obj <> endobj 12490 0 obj <> endobj 12491 0 obj <> endobj 12492 0 obj <> endobj 12493 0 obj <> endobj 12494 0 obj <> endobj 12495 0 obj <> endobj 12496 0 obj <> endobj 12497 0 obj <> endobj 12498 0 obj <> endobj 12499 0 obj <> endobj 12500 0 obj <> endobj 12501 0 obj <> endobj 12502 0 obj <> endobj 12503 0 obj <> endobj 12504 0 obj <> endobj 12505 0 obj <> endobj 12506 0 obj <> endobj 12507 0 obj <> endobj 12508 0 obj <> endobj 12509 0 obj <> endobj 12510 0 obj <> endobj 12511 0 obj <> endobj 12512 0 obj <> endobj 12513 0 obj <> endobj 12514 0 obj <> endobj 12515 0 obj <> endobj 12516 0 obj <> endobj 12517 0 obj <> endobj 12518 0 obj <> endobj 12519 0 obj <> endobj 12520 0 obj <> endobj 12521 0 obj <> endobj 12522 0 obj <> endobj 12523 0 obj <> endobj 12524 0 obj <> endobj 12525 0 obj <> endobj 12526 0 obj <> endobj 12527 0 obj <> endobj 12528 0 obj <> endobj 12529 0 obj <> endobj 12530 0 obj <> endobj 12531 0 obj <> endobj 12532 0 obj <> endobj 12533 0 obj <> endobj 12534 0 obj <> endobj 12535 0 obj <> endobj 12536 0 obj <> endobj 12537 0 obj <> endobj 12538 0 obj <> endobj 12539 0 obj <> endobj 12540 0 obj <> endobj 12541 0 obj <> endobj 12542 0 obj <> endobj 12543 0 obj <> endobj 12544 0 obj <> endobj 12545 0 obj <> endobj 12546 0 obj <> endobj 12547 0 obj <> endobj 12548 0 obj <> endobj 12549 0 obj <> endobj 12550 0 obj <> endobj 12551 0 obj <> endobj 12552 0 obj <>/Border[0 0 0]/Rect[162.3 606.62 311.16 617.78]/StructParent 8/Subtype/Link/Type/Annot>> endobj 12553 0 obj <> endobj 12554 0 obj <> endobj 12555 0 obj <> endobj 12556 0 obj <> endobj 12557 0 obj <> endobj 12558 0 obj <> endobj 12559 0 obj <> endobj 12560 0 obj <> endobj 12561 0 obj <> endobj 12562 0 obj <> endobj 12563 0 obj <> endobj 12564 0 obj <> endobj 12565 0 obj <> endobj 12566 0 obj <> endobj 12567 0 obj <> endobj 12568 0 obj <> endobj 12569 0 obj <> endobj 12570 0 obj <> endobj 12571 0 obj <> endobj 12572 0 obj <> endobj 12573 0 obj <> endobj 12574 0 obj <> endobj 12575 0 obj <> endobj 12576 0 obj <> endobj 12577 0 obj <> endobj 12578 0 obj <> endobj 12579 0 obj <> endobj 12580 0 obj <> endobj 12581 0 obj <> endobj 12582 0 obj <> endobj 12583 0 obj <> endobj 12584 0 obj <> endobj 12585 0 obj <> endobj 12586 0 obj <> endobj 12587 0 obj <> endobj 12588 0 obj <> endobj 12589 0 obj <> endobj 12590 0 obj <> endobj 12591 0 obj <> endobj 12592 0 obj <> endobj 12593 0 obj <> endobj 12594 0 obj <> endobj 12595 0 obj <> endobj 12596 0 obj <> endobj 12597 0 obj <> endobj 12598 0 obj <> endobj 12599 0 obj <> endobj 12600 0 obj <> endobj 12601 0 obj <> endobj 12602 0 obj <> endobj 12603 0 obj <> endobj 12604 0 obj <> endobj 12605 0 obj <> endobj 12606 0 obj <> endobj 12607 0 obj <> endobj 12608 0 obj <> endobj 12609 0 obj <> endobj 12610 0 obj <> endobj 12611 0 obj <> endobj 12612 0 obj <> endobj 12613 0 obj <> endobj 12614 0 obj <> endobj 12615 0 obj <> endobj 12616 0 obj <> endobj 12617 0 obj <> endobj 12618 0 obj <> endobj 12619 0 obj <> endobj 12620 0 obj <> endobj 12621 0 obj <> endobj 12622 0 obj <> endobj 12623 0 obj <> endobj 12624 0 obj <> endobj 12625 0 obj <> endobj 12626 0 obj <> endobj 12627 0 obj <> endobj 12628 0 obj <> endobj 12629 0 obj <> endobj 12630 0 obj <> endobj 12631 0 obj <> endobj 12632 0 obj <> endobj 12633 0 obj <> endobj 12634 0 obj <> endobj 12635 0 obj <> endobj 12636 0 obj <> endobj 12637 0 obj <> endobj 12638 0 obj <> endobj 12639 0 obj <> endobj 12640 0 obj <> endobj 12641 0 obj <> endobj 12642 0 obj <> endobj 12643 0 obj <> endobj 12644 0 obj <> endobj 12645 0 obj <> endobj 12646 0 obj <> endobj 12647 0 obj <> endobj 12648 0 obj <> endobj 12649 0 obj <> endobj 12650 0 obj <> endobj 12651 0 obj <> endobj 12652 0 obj <> endobj 12653 0 obj <> endobj 12654 0 obj <> endobj 12655 0 obj <> endobj 12656 0 obj <> endobj 12657 0 obj <> endobj 12658 0 obj <> endobj 12659 0 obj <> endobj 12660 0 obj <> endobj 12661 0 obj <> endobj 12662 0 obj <> endobj 12663 0 obj <> endobj 12664 0 obj <> endobj 12665 0 obj <> endobj 12666 0 obj <> endobj 12667 0 obj <> endobj 12668 0 obj <> endobj 12669 0 obj <> endobj 12670 0 obj <> endobj 12671 0 obj <> endobj 12672 0 obj <> endobj 12673 0 obj <> endobj 12674 0 obj <> endobj 12675 0 obj <> endobj 12676 0 obj <> endobj 12677 0 obj <> endobj 12678 0 obj <> endobj 12679 0 obj <> endobj 12680 0 obj <> endobj 12681 0 obj <> endobj 12682 0 obj <> endobj 12683 0 obj <> endobj 12684 0 obj <> endobj 12685 0 obj <> endobj 12686 0 obj <> endobj 12687 0 obj <> endobj 12688 0 obj <> endobj 12689 0 obj <> endobj 12690 0 obj <> endobj 12691 0 obj <> endobj 12692 0 obj <> endobj 12693 0 obj <> endobj 12694 0 obj <> endobj 12695 0 obj <> endobj 12696 0 obj <> endobj 12697 0 obj <> endobj 12698 0 obj <> endobj 12699 0 obj <> endobj 12700 0 obj <> endobj 12701 0 obj <> endobj 12702 0 obj <> endobj 12703 0 obj <> endobj 12704 0 obj <> endobj 12705 0 obj <> endobj 12706 0 obj <> endobj 12707 0 obj <> endobj 12708 0 obj <> endobj 12709 0 obj <> endobj 12710 0 obj <> endobj 12711 0 obj <> endobj 12712 0 obj <> endobj 12713 0 obj <> endobj 12714 0 obj <> endobj 12715 0 obj <> endobj 12716 0 obj <> endobj 12717 0 obj <> endobj 12718 0 obj <> endobj 12719 0 obj <> endobj 12720 0 obj <> endobj 12721 0 obj <> endobj 12722 0 obj <> endobj 12723 0 obj <> endobj 12724 0 obj <> endobj 12725 0 obj <> endobj 12726 0 obj <> endobj 12727 0 obj <> endobj 12728 0 obj <> endobj 12729 0 obj <> endobj 12730 0 obj <> endobj 12731 0 obj <> endobj 12732 0 obj <> endobj 12733 0 obj <> endobj 12734 0 obj <> endobj 12735 0 obj <> endobj 12736 0 obj <> endobj 12737 0 obj <> endobj 12738 0 obj <> endobj 12739 0 obj <> endobj 12740 0 obj <> endobj 12741 0 obj <> endobj 12742 0 obj <> endobj 12743 0 obj <> endobj 12744 0 obj <> endobj 12745 0 obj <> endobj 12746 0 obj <> endobj 12747 0 obj <> endobj 12748 0 obj <> endobj 12749 0 obj <> endobj 12750 0 obj <> endobj 12751 0 obj <> endobj 12752 0 obj <> endobj 12753 0 obj <> endobj 12754 0 obj <> endobj 12755 0 obj <> endobj 12756 0 obj <> endobj 12757 0 obj <> endobj 12758 0 obj <> endobj 12759 0 obj <> endobj 12760 0 obj <> endobj 12761 0 obj <> endobj 12762 0 obj <> endobj 12763 0 obj <> endobj 12764 0 obj <> endobj 12765 0 obj <> endobj 12766 0 obj <> endobj 12767 0 obj <> endobj 12768 0 obj <> endobj 12769 0 obj <> endobj 12770 0 obj <> endobj 12771 0 obj <> endobj 12772 0 obj <> endobj 12773 0 obj <> endobj 12774 0 obj <> endobj 12775 0 obj <> endobj 12776 0 obj <> endobj 12777 0 obj <> endobj 12778 0 obj <> endobj 12779 0 obj <> endobj 12780 0 obj <> endobj 12781 0 obj <> endobj 12782 0 obj <> endobj 12783 0 obj <> endobj 12784 0 obj <> endobj 12785 0 obj <> endobj 12786 0 obj <> endobj 12787 0 obj <> endobj 12788 0 obj <> endobj 12789 0 obj <> endobj 12790 0 obj <> endobj 12791 0 obj <> endobj 12792 0 obj <> endobj 12793 0 obj <> endobj 12794 0 obj <> endobj 12795 0 obj <> endobj 12796 0 obj <> endobj 12797 0 obj <> endobj 12798 0 obj <> endobj 12799 0 obj <> endobj 12800 0 obj <> endobj 12801 0 obj <> endobj 12802 0 obj <> endobj 12803 0 obj <> endobj 12804 0 obj <> endobj 12805 0 obj <> endobj 12806 0 obj <> endobj 12807 0 obj <> endobj 12808 0 obj <> endobj 12809 0 obj <> endobj 12810 0 obj <> endobj 12811 0 obj <> endobj 12812 0 obj <> endobj 12813 0 obj <> endobj 12814 0 obj <> endobj 12815 0 obj <> endobj 12816 0 obj <> endobj 12817 0 obj <> endobj 12818 0 obj <> endobj 12819 0 obj <> endobj 12820 0 obj <> endobj 12821 0 obj <> endobj 12822 0 obj <> endobj 12823 0 obj <> endobj 12824 0 obj <> endobj 12825 0 obj <> endobj 12826 0 obj <> endobj 12827 0 obj <> endobj 12828 0 obj <> endobj 12829 0 obj <> endobj 12830 0 obj <> endobj 12831 0 obj <> endobj 12832 0 obj <> endobj 12833 0 obj <> endobj 12834 0 obj <> endobj 12835 0 obj <> endobj 12836 0 obj <> endobj 12837 0 obj <> endobj 12838 0 obj <> endobj 12839 0 obj <> endobj 12840 0 obj <> endobj 12841 0 obj <> endobj 12842 0 obj <> endobj 12843 0 obj <> endobj 12844 0 obj <> endobj 12845 0 obj <> endobj 12846 0 obj <> endobj 12847 0 obj <> endobj 12848 0 obj <> endobj 12849 0 obj <> endobj 12850 0 obj <> endobj 12851 0 obj <> endobj 12852 0 obj <> endobj 12853 0 obj <> endobj 12854 0 obj <> endobj 12855 0 obj <> endobj 12856 0 obj <> endobj 12857 0 obj <> endobj 12858 0 obj <> endobj 12859 0 obj <> endobj 12860 0 obj <> endobj 12861 0 obj <> endobj 12862 0 obj <> endobj 12863 0 obj <> endobj 12864 0 obj <> endobj 12865 0 obj <> endobj 12866 0 obj <> endobj 12867 0 obj <> endobj 12868 0 obj <> endobj 12869 0 obj <> endobj 12870 0 obj <> endobj 12871 0 obj <> endobj 12872 0 obj <> endobj 12873 0 obj <> endobj 12874 0 obj <> endobj 12875 0 obj <> endobj 12876 0 obj <> endobj 12877 0 obj <> endobj 12878 0 obj <> endobj 12879 0 obj <> endobj 12880 0 obj <> endobj 12881 0 obj <> endobj 12882 0 obj <> endobj 12883 0 obj <> endobj 12884 0 obj <> endobj 12885 0 obj <> endobj 12886 0 obj <> endobj 12887 0 obj <> endobj 12888 0 obj <> endobj 12889 0 obj <> endobj 12890 0 obj <> endobj 12891 0 obj <> endobj 12892 0 obj <> endobj 12893 0 obj <> endobj 12894 0 obj <> endobj 12895 0 obj <> endobj 12896 0 obj <> endobj 12897 0 obj <> endobj 12898 0 obj <> endobj 12899 0 obj <> endobj 12900 0 obj <> endobj 12901 0 obj <> endobj 12902 0 obj <> endobj 12903 0 obj <> endobj 12904 0 obj <> endobj 12905 0 obj <> endobj 12906 0 obj <> endobj 12907 0 obj <> endobj 12908 0 obj <> endobj 12909 0 obj <> endobj 12910 0 obj <> endobj 12911 0 obj <> endobj 12912 0 obj <> endobj 12913 0 obj <> endobj 12914 0 obj <> endobj 12915 0 obj <> endobj 12916 0 obj <> endobj 12917 0 obj <> endobj 12918 0 obj <> endobj 12919 0 obj <> endobj 12920 0 obj <> endobj 12921 0 obj <> endobj 12922 0 obj <> endobj 12923 0 obj <> endobj 12924 0 obj <> endobj 12925 0 obj <> endobj 12926 0 obj <> endobj 12927 0 obj <> endobj 12928 0 obj <> endobj 12929 0 obj <> endobj 12930 0 obj <> endobj 12931 0 obj <> endobj 12932 0 obj <> endobj 12933 0 obj <> endobj 12934 0 obj <> endobj 12935 0 obj <> endobj 12936 0 obj <> endobj 12937 0 obj <> endobj 12938 0 obj <> endobj 12939 0 obj <> endobj 12940 0 obj <> endobj 12941 0 obj <> endobj 12942 0 obj <> endobj 12943 0 obj <> endobj 12944 0 obj <> endobj 12945 0 obj <> endobj 12946 0 obj <> endobj 12947 0 obj <> endobj 12948 0 obj <> endobj 12949 0 obj <> endobj 12950 0 obj <> endobj 12951 0 obj <> endobj 12952 0 obj <> endobj 12953 0 obj <> endobj 12954 0 obj <> endobj 12955 0 obj <> endobj 12956 0 obj <> endobj 12957 0 obj <> endobj 12958 0 obj <> endobj 12959 0 obj <> endobj 12960 0 obj <> endobj 12961 0 obj <> endobj 12962 0 obj <> endobj 12963 0 obj <> endobj 12964 0 obj <> endobj 12965 0 obj <> endobj 12966 0 obj <> endobj 12967 0 obj <> endobj 12968 0 obj <> endobj 12969 0 obj <> endobj 12970 0 obj <> endobj 12971 0 obj <> endobj 12972 0 obj <> endobj 12973 0 obj <> endobj 12974 0 obj <> endobj 12975 0 obj <> endobj 12976 0 obj <> endobj 12977 0 obj <> endobj 12978 0 obj <> endobj 12979 0 obj <> endobj 12980 0 obj <> endobj 12981 0 obj <> endobj 12982 0 obj <> endobj 12983 0 obj <> endobj 12984 0 obj <> endobj 12985 0 obj <> endobj 12986 0 obj <> endobj 12987 0 obj <> endobj 12988 0 obj <> endobj 12989 0 obj <> endobj 12990 0 obj <> endobj 12991 0 obj <> endobj 12992 0 obj <> endobj 12993 0 obj <> endobj 12994 0 obj <> endobj 12995 0 obj <> endobj 12996 0 obj <> endobj 12997 0 obj <> endobj 12998 0 obj <> endobj 12999 0 obj <> endobj 13000 0 obj <> endobj 13001 0 obj <> endobj 13002 0 obj <> endobj 13003 0 obj <> endobj 13004 0 obj <> endobj 13005 0 obj <> endobj 13006 0 obj <> endobj 13007 0 obj <> endobj 13008 0 obj <> endobj 13009 0 obj <> endobj 13010 0 obj <> endobj 13011 0 obj <> endobj 13012 0 obj <> endobj 13013 0 obj <> endobj 13014 0 obj <> endobj 13015 0 obj <> endobj 13016 0 obj <> endobj 13017 0 obj <> endobj 13018 0 obj <> endobj 13019 0 obj <> endobj 13020 0 obj <> endobj 13021 0 obj <> endobj 13022 0 obj <> endobj 13023 0 obj <> endobj 13024 0 obj <> endobj 13025 0 obj <> endobj 13026 0 obj <> endobj 13027 0 obj <> endobj 13028 0 obj <> endobj 13029 0 obj <> endobj 13030 0 obj <> endobj 13031 0 obj <> endobj 13032 0 obj <> endobj 13033 0 obj <> endobj 13034 0 obj <> endobj 13035 0 obj <> endobj 13036 0 obj <> endobj 13037 0 obj <> endobj 13038 0 obj <> endobj 13039 0 obj <> endobj 13040 0 obj <> endobj 13041 0 obj <> endobj 13042 0 obj <> endobj 13043 0 obj <> endobj 13044 0 obj <> endobj 13045 0 obj <> endobj 13046 0 obj <> endobj 13047 0 obj <> endobj 13048 0 obj <> endobj 13049 0 obj <> endobj 13050 0 obj <> endobj 13051 0 obj <> endobj 13052 0 obj <> endobj 13053 0 obj <> endobj 13054 0 obj <> endobj 13055 0 obj <> endobj 13056 0 obj <> endobj 13057 0 obj <> endobj 13058 0 obj <> endobj 13059 0 obj <> endobj 13060 0 obj <> endobj 13061 0 obj <> endobj 13062 0 obj <> endobj 13063 0 obj <> endobj 13064 0 obj <> endobj 13065 0 obj <> endobj 13066 0 obj <> endobj 13067 0 obj <> endobj 13068 0 obj <> endobj 13069 0 obj <> endobj 13070 0 obj <> endobj 13071 0 obj <> endobj 13072 0 obj <> endobj 13073 0 obj <> endobj 13074 0 obj <> endobj 13075 0 obj <> endobj 13076 0 obj <> endobj 13077 0 obj <> endobj 13078 0 obj <> endobj 13079 0 obj <> endobj 13080 0 obj <> endobj 13081 0 obj <> endobj 13082 0 obj <> endobj 13083 0 obj <> endobj 13084 0 obj <> endobj 13085 0 obj <> endobj 13086 0 obj <> endobj 13087 0 obj <> endobj 13088 0 obj <> endobj 13089 0 obj <> endobj 13090 0 obj <> endobj 13091 0 obj <> endobj 13092 0 obj <> endobj 13093 0 obj <> endobj 13094 0 obj <> endobj 13095 0 obj <> endobj 13096 0 obj <> endobj 13097 0 obj <> endobj 13098 0 obj <> endobj 13099 0 obj <> endobj 13100 0 obj <> endobj 13101 0 obj <> endobj 13102 0 obj <> endobj 13103 0 obj <> endobj 13104 0 obj <> endobj 13105 0 obj <> endobj 13106 0 obj <> endobj 13107 0 obj <> endobj 13108 0 obj <> endobj 13109 0 obj <> endobj 13110 0 obj <> endobj 13111 0 obj <> endobj 13112 0 obj <> endobj 13113 0 obj <> endobj 13114 0 obj <> endobj 13115 0 obj <> endobj 13116 0 obj <> endobj 13117 0 obj <> endobj 13118 0 obj <> endobj 13119 0 obj <> endobj 13120 0 obj <> endobj 13121 0 obj <> endobj 13122 0 obj <> endobj 13123 0 obj <> endobj 13124 0 obj <> endobj 13125 0 obj <> endobj 13126 0 obj <> endobj 13127 0 obj <> endobj 13128 0 obj <> endobj 13129 0 obj <> endobj 13130 0 obj <> endobj 13131 0 obj <> endobj 13132 0 obj <> endobj 13133 0 obj <> endobj 13134 0 obj <> endobj 13135 0 obj <> endobj 13136 0 obj <> endobj 13137 0 obj <> endobj 13138 0 obj <> endobj 13139 0 obj <> endobj 13140 0 obj <> endobj 13141 0 obj <> endobj 13142 0 obj <> endobj 13143 0 obj <> endobj 13144 0 obj <> endobj 13145 0 obj <> endobj 13146 0 obj <> endobj 13147 0 obj <> endobj 13148 0 obj <> endobj 13149 0 obj <> endobj 13150 0 obj <> endobj 13151 0 obj <> endobj 13152 0 obj <> endobj 13153 0 obj <> endobj 13154 0 obj <> endobj 13155 0 obj <> endobj 13156 0 obj <> endobj 13157 0 obj <> endobj 13158 0 obj <> endobj 13159 0 obj <> endobj 13160 0 obj <> endobj 13161 0 obj <> endobj 13162 0 obj <> endobj 13163 0 obj <> endobj 13164 0 obj <> endobj 13165 0 obj <> endobj 13166 0 obj <> endobj 13167 0 obj <> endobj 13168 0 obj <> endobj 13169 0 obj <> endobj 13170 0 obj <> endobj 13171 0 obj <> endobj 13172 0 obj <> endobj 13173 0 obj <> endobj 13174 0 obj <> endobj 13175 0 obj <> endobj 13176 0 obj <> endobj 13177 0 obj <> endobj 13178 0 obj <> endobj 13179 0 obj <> endobj 13180 0 obj <> endobj 13181 0 obj <> endobj 13182 0 obj <> endobj 13183 0 obj <> endobj 13184 0 obj <> endobj 13185 0 obj <> endobj 13186 0 obj <> endobj 13187 0 obj <> endobj 13188 0 obj <> endobj 13189 0 obj <> endobj 13190 0 obj <> endobj 13191 0 obj <> endobj 13192 0 obj <> endobj 13193 0 obj <> endobj 13194 0 obj <> endobj 13195 0 obj <> endobj 13196 0 obj <> endobj 13197 0 obj <> endobj 13198 0 obj <> endobj 13199 0 obj <> endobj 13200 0 obj <> endobj 13201 0 obj <> endobj 13202 0 obj <> endobj 13203 0 obj <> endobj 13204 0 obj <> endobj 13205 0 obj <> endobj 13206 0 obj <> endobj 13207 0 obj <> endobj 13208 0 obj <> endobj 13209 0 obj <> endobj 13210 0 obj <> endobj 13211 0 obj <> endobj 13212 0 obj <> endobj 13213 0 obj <> endobj 13214 0 obj <> endobj 13215 0 obj <> endobj 13216 0 obj <> endobj 13217 0 obj <> endobj 13218 0 obj <> endobj 13219 0 obj <> endobj 13220 0 obj <> endobj 13221 0 obj <> endobj 13222 0 obj <> endobj 13223 0 obj <> endobj 13224 0 obj <> endobj 13225 0 obj <> endobj 13226 0 obj <> endobj 13227 0 obj <> endobj 13228 0 obj <> endobj 13229 0 obj <> endobj 13230 0 obj <> endobj 13231 0 obj <> endobj 13232 0 obj <> endobj 13233 0 obj <> endobj 13234 0 obj <> endobj 13235 0 obj <> endobj 13236 0 obj <> endobj 13237 0 obj <> endobj 13238 0 obj <> endobj 13239 0 obj <> endobj 13240 0 obj <> endobj 13241 0 obj <> endobj 13242 0 obj <> endobj 13243 0 obj <> endobj 13244 0 obj <> endobj 13245 0 obj <> endobj 13246 0 obj <> endobj 13247 0 obj <> endobj 13248 0 obj <> endobj 13249 0 obj <> endobj 13250 0 obj <> endobj 13251 0 obj <> endobj 13252 0 obj <> endobj 13253 0 obj <> endobj 13254 0 obj <> endobj 13255 0 obj <> endobj 13256 0 obj <> endobj 13257 0 obj <> endobj 13258 0 obj <> endobj 13259 0 obj <> endobj 13260 0 obj <> endobj 13261 0 obj <> endobj 13262 0 obj <> endobj 13263 0 obj <> endobj 13264 0 obj <> endobj 13265 0 obj <> endobj 13266 0 obj <> endobj 13267 0 obj <> endobj 13268 0 obj <> endobj 13269 0 obj <> endobj 13270 0 obj <> endobj 13271 0 obj <> endobj 13272 0 obj <> endobj 13273 0 obj <> endobj 13274 0 obj <> endobj 13275 0 obj <> endobj 13276 0 obj <> endobj 13277 0 obj <> endobj 13278 0 obj <> endobj 13279 0 obj <> endobj 13280 0 obj <> endobj 13281 0 obj <> endobj 13282 0 obj <> endobj 13283 0 obj <> endobj 13284 0 obj <> endobj 13285 0 obj <> endobj 13286 0 obj <> endobj 13287 0 obj <> endobj 13288 0 obj <> endobj 13289 0 obj <> endobj 13290 0 obj <> endobj 13291 0 obj <> endobj 13292 0 obj <> endobj 13293 0 obj <> endobj 13294 0 obj <> endobj 13295 0 obj <> endobj 13296 0 obj <> endobj 13297 0 obj <> endobj 13298 0 obj <> endobj 13299 0 obj <> endobj 13300 0 obj <> endobj 13301 0 obj <> endobj 13302 0 obj <> endobj 13303 0 obj <> endobj 13304 0 obj <> endobj 13305 0 obj <> endobj 13306 0 obj <> endobj 13307 0 obj <> endobj 13308 0 obj <> endobj 13309 0 obj <> endobj 13310 0 obj <> endobj 13311 0 obj <> endobj 13312 0 obj <> endobj 13313 0 obj <> endobj 13314 0 obj <> endobj 13315 0 obj <> endobj 13316 0 obj <> endobj 13317 0 obj <> endobj 13318 0 obj <> endobj 13319 0 obj <> endobj 13320 0 obj <> endobj 13321 0 obj <> endobj 13322 0 obj <> endobj 13323 0 obj <> endobj 13324 0 obj <> endobj 13325 0 obj <> endobj 13326 0 obj <> endobj 13327 0 obj <> endobj 13328 0 obj <> endobj 13329 0 obj <> endobj 13330 0 obj <> endobj 13331 0 obj <> endobj 13332 0 obj <> endobj 13333 0 obj <> endobj 13334 0 obj <> endobj 13335 0 obj <> endobj 13336 0 obj <> endobj 13337 0 obj <> endobj 13338 0 obj <> endobj 13339 0 obj <> endobj 13340 0 obj <> endobj 13341 0 obj <> endobj 13342 0 obj <> endobj 13343 0 obj <> endobj 13344 0 obj <> endobj 13345 0 obj <> endobj 13346 0 obj <> endobj 13347 0 obj <> endobj 13348 0 obj <> endobj 13349 0 obj <> endobj 13350 0 obj <> endobj 13351 0 obj <> endobj 13352 0 obj <> endobj 13353 0 obj <> endobj 13354 0 obj <> endobj 13355 0 obj <> endobj 13356 0 obj <> endobj 13357 0 obj <> endobj 13358 0 obj <> endobj 13359 0 obj <> endobj 13360 0 obj <> endobj 13361 0 obj <> endobj 13362 0 obj <> endobj 13363 0 obj <> endobj 13364 0 obj <> endobj 13365 0 obj <> endobj 13366 0 obj <> endobj 13367 0 obj <> endobj 13368 0 obj <> endobj 13369 0 obj <> endobj 13370 0 obj <> endobj 13371 0 obj <> endobj 13372 0 obj <> endobj 13373 0 obj <> endobj 13374 0 obj <> endobj 13375 0 obj <> endobj 13376 0 obj <> endobj 13377 0 obj <> endobj 13378 0 obj <> endobj 13379 0 obj <> endobj 13380 0 obj <> endobj 13381 0 obj <> endobj 13382 0 obj <> endobj 13383 0 obj <> endobj 13384 0 obj <> endobj 13385 0 obj <> endobj 13386 0 obj <> endobj 13387 0 obj <> endobj 13388 0 obj <> endobj 13389 0 obj <> endobj 13390 0 obj <> endobj 13391 0 obj <> endobj 13392 0 obj <> endobj 13393 0 obj <> endobj 13394 0 obj <> endobj 13395 0 obj <> endobj 13396 0 obj <> endobj 13397 0 obj <> endobj 13398 0 obj <> endobj 13399 0 obj <> endobj 13400 0 obj <> endobj 13401 0 obj <> endobj 13402 0 obj <> endobj 13403 0 obj <> endobj 13404 0 obj <> endobj 13405 0 obj <> endobj 13406 0 obj <> endobj 13407 0 obj <> endobj 13408 0 obj <> endobj 13409 0 obj <> endobj 13410 0 obj <> endobj 13411 0 obj <> endobj 13412 0 obj <> endobj 13413 0 obj <> endobj 13414 0 obj <> endobj 13415 0 obj <> endobj 13416 0 obj <> endobj 13417 0 obj <> endobj 13418 0 obj <> endobj 13419 0 obj <> endobj 13420 0 obj <> endobj 13421 0 obj <> endobj 13422 0 obj <> endobj 13423 0 obj <> endobj 13424 0 obj <> endobj 13425 0 obj <> endobj 13426 0 obj <> endobj 13427 0 obj <> endobj 13428 0 obj <> endobj 13429 0 obj <> endobj 13430 0 obj <> endobj 13431 0 obj <> endobj 13432 0 obj <> endobj 13433 0 obj <> endobj 13434 0 obj <> endobj 13435 0 obj <> endobj 13436 0 obj <> endobj 13437 0 obj <> endobj 13438 0 obj <> endobj 13439 0 obj <> endobj 13440 0 obj <> endobj 13441 0 obj <> endobj 13442 0 obj <> endobj 13443 0 obj <> endobj 13444 0 obj <> endobj 13445 0 obj <> endobj 13446 0 obj <> endobj 13447 0 obj <> endobj 13448 0 obj <> endobj 13449 0 obj <> endobj 13450 0 obj <> endobj 13451 0 obj <> endobj 13452 0 obj <> endobj 13453 0 obj <> endobj 13454 0 obj <> endobj 13455 0 obj <> endobj 13456 0 obj <> endobj 13457 0 obj <> endobj 13458 0 obj <> endobj 13459 0 obj <> endobj 13460 0 obj <> endobj 13461 0 obj <> endobj 13462 0 obj <> endobj 13463 0 obj <> endobj 13464 0 obj <> endobj 13465 0 obj <> endobj 13466 0 obj <> endobj 13467 0 obj <> endobj 13468 0 obj <> endobj 13469 0 obj <> endobj 13470 0 obj <> endobj 13471 0 obj <> endobj 13472 0 obj <> endobj 13473 0 obj <> endobj 13474 0 obj <> endobj 13475 0 obj <> endobj 13476 0 obj <> endobj 13477 0 obj <> endobj 13478 0 obj <> endobj 13479 0 obj <> endobj 13480 0 obj <> endobj 13481 0 obj <> endobj 13482 0 obj <> endobj 13483 0 obj <> endobj 13484 0 obj <> endobj 13485 0 obj <> endobj 13486 0 obj <> endobj 13487 0 obj <> endobj 13488 0 obj <> endobj 13489 0 obj <> endobj 13490 0 obj <> endobj 13491 0 obj <> endobj 13492 0 obj <> endobj 13493 0 obj <> endobj 13494 0 obj <> endobj 13495 0 obj <> endobj 13496 0 obj <> endobj 13497 0 obj <> endobj 13498 0 obj <> endobj 13499 0 obj <> endobj 13500 0 obj <> endobj 13501 0 obj <> endobj 13502 0 obj <> endobj 13503 0 obj <> endobj 13504 0 obj <> endobj 13505 0 obj <> endobj 13506 0 obj <> endobj 13507 0 obj <> endobj 13508 0 obj <> endobj 13509 0 obj <> endobj 13510 0 obj <> endobj 13511 0 obj <> endobj 13512 0 obj <> endobj 13513 0 obj <> endobj 13514 0 obj <> endobj 13515 0 obj <> endobj 13516 0 obj <> endobj 13517 0 obj <> endobj 13518 0 obj <> endobj 13519 0 obj <> endobj 13520 0 obj <> endobj 13521 0 obj <> endobj 13522 0 obj <> endobj 13523 0 obj <> endobj 13524 0 obj <> endobj 13525 0 obj <> endobj 13526 0 obj <> endobj 13527 0 obj <> endobj 13528 0 obj <> endobj 13529 0 obj <> endobj 13530 0 obj <> endobj 13531 0 obj <> endobj 13532 0 obj <> endobj 13533 0 obj <> endobj 13534 0 obj <> endobj 13535 0 obj <> endobj 13536 0 obj <> endobj 13537 0 obj <> endobj 13538 0 obj <> endobj 13539 0 obj <> endobj 13540 0 obj <> endobj 13541 0 obj <> endobj 13542 0 obj <> endobj 13543 0 obj <> endobj 13544 0 obj <> endobj 13545 0 obj <> endobj 13546 0 obj <> endobj 13547 0 obj <> endobj 13548 0 obj <> endobj 13549 0 obj <> endobj 13550 0 obj <> endobj 13551 0 obj <> endobj 13552 0 obj <> endobj 13553 0 obj <> endobj 13554 0 obj <> endobj 13555 0 obj <> endobj 13556 0 obj <> endobj 13557 0 obj <> endobj 13558 0 obj <> endobj 13559 0 obj <> endobj 13560 0 obj <> endobj 13561 0 obj <> endobj 13562 0 obj <> endobj 13563 0 obj <> endobj 13564 0 obj <> endobj 13565 0 obj <> endobj 13566 0 obj <> endobj 13567 0 obj <> endobj 13568 0 obj <> endobj 13569 0 obj <> endobj 13570 0 obj <> endobj 13571 0 obj <> endobj 13572 0 obj <> endobj 13573 0 obj <> endobj 13574 0 obj <> endobj 13575 0 obj <> endobj 13576 0 obj <> endobj 13577 0 obj <> endobj 13578 0 obj <> endobj 13579 0 obj <> endobj 13580 0 obj <> endobj 13581 0 obj <> endobj 13582 0 obj <> endobj 13583 0 obj <> endobj 13584 0 obj <> endobj 13585 0 obj <> endobj 13586 0 obj <> endobj 13587 0 obj <> endobj 13588 0 obj <> endobj 13589 0 obj <> endobj 13590 0 obj <> endobj 13591 0 obj <> endobj 13592 0 obj <> endobj 13593 0 obj <> endobj 13594 0 obj <> endobj 13595 0 obj <> endobj 13596 0 obj <> endobj 13597 0 obj <> endobj 13598 0 obj <> endobj 13599 0 obj <> endobj 13600 0 obj <> endobj 13601 0 obj <> endobj 13602 0 obj <> endobj 13603 0 obj <> endobj 13604 0 obj <> endobj 13605 0 obj <> endobj 13606 0 obj <> endobj 13607 0 obj <> endobj 13608 0 obj <> endobj 13609 0 obj <> endobj 13610 0 obj <> endobj 13611 0 obj <> endobj 13612 0 obj <> endobj 13613 0 obj <> endobj 13614 0 obj <> endobj 13615 0 obj <> endobj 13616 0 obj <> endobj 13617 0 obj <> endobj 13618 0 obj <> endobj 13619 0 obj <> endobj 13620 0 obj <> endobj 13621 0 obj <> endobj 13622 0 obj <> endobj 13623 0 obj <> endobj 13624 0 obj <> endobj 13625 0 obj <> endobj 13626 0 obj <> endobj 13627 0 obj <> endobj 13628 0 obj <> endobj 13629 0 obj <> endobj 13630 0 obj <> endobj 13631 0 obj <> endobj 13632 0 obj <> endobj 13633 0 obj <> endobj 13634 0 obj <> endobj 13635 0 obj <> endobj 13636 0 obj <> endobj 13637 0 obj <> endobj 13638 0 obj <> endobj 13639 0 obj <> endobj 13640 0 obj <> endobj 13641 0 obj <> endobj 13642 0 obj <> endobj 13643 0 obj <> endobj 13644 0 obj <> endobj 13645 0 obj <> endobj 13646 0 obj <> endobj 13647 0 obj <> endobj 13648 0 obj <> endobj 13649 0 obj <> endobj 13650 0 obj <> endobj 13651 0 obj <> endobj 13652 0 obj <> endobj 13653 0 obj <> endobj 13654 0 obj <> endobj 13655 0 obj <> endobj 13656 0 obj <> endobj 13657 0 obj <> endobj 13658 0 obj <> endobj 13659 0 obj <> endobj 13660 0 obj <> endobj 13661 0 obj <> endobj 13662 0 obj <> endobj 13663 0 obj <> endobj 13664 0 obj <> endobj 13665 0 obj <> endobj 13666 0 obj <> endobj 13667 0 obj <> endobj 13668 0 obj <> endobj 13669 0 obj <> endobj 13670 0 obj <> endobj 13671 0 obj <> endobj 13672 0 obj <> endobj 13673 0 obj <> endobj 13674 0 obj <> endobj 13675 0 obj <> endobj 13676 0 obj <> endobj 13677 0 obj <> endobj 13678 0 obj <> endobj 13679 0 obj <> endobj 13680 0 obj <> endobj 13681 0 obj <> endobj 13682 0 obj <> endobj 13683 0 obj <> endobj 13684 0 obj <> endobj 13685 0 obj <> endobj 13686 0 obj <> endobj 13687 0 obj <> endobj 13688 0 obj <> endobj 13689 0 obj <> endobj 13690 0 obj <> endobj 13691 0 obj <> endobj 13692 0 obj <> endobj 13693 0 obj <> endobj 13694 0 obj <> endobj 13695 0 obj <> endobj 13696 0 obj <> endobj 13697 0 obj <> endobj 13698 0 obj <> endobj 13699 0 obj <> endobj 13700 0 obj <> endobj 13701 0 obj <> endobj 13702 0 obj <> endobj 13703 0 obj <> endobj 13704 0 obj <> endobj 13705 0 obj <> endobj 13706 0 obj <> endobj 13707 0 obj <> endobj 13708 0 obj <> endobj 13709 0 obj <> endobj 13710 0 obj <> endobj 13711 0 obj <> endobj 13712 0 obj <> endobj 13713 0 obj <> endobj 13714 0 obj <> endobj 13715 0 obj <> endobj 13716 0 obj <> endobj 13717 0 obj <> endobj 13718 0 obj <> endobj 13719 0 obj <> endobj 13720 0 obj <> endobj 13721 0 obj <> endobj 13722 0 obj <> endobj 13723 0 obj <> endobj 13724 0 obj <> endobj 13725 0 obj <> endobj 13726 0 obj <> endobj 13727 0 obj <> endobj 13728 0 obj <> endobj 13729 0 obj <> endobj 13730 0 obj <> endobj 13731 0 obj <> endobj 13732 0 obj <> endobj 13733 0 obj <> endobj 13734 0 obj <> endobj 13735 0 obj <> endobj 13736 0 obj <> endobj 13737 0 obj <> endobj 13738 0 obj <> endobj 13739 0 obj <> endobj 13740 0 obj <> endobj 13741 0 obj <> endobj 13742 0 obj <> endobj 13743 0 obj <> endobj 13744 0 obj <> endobj 13745 0 obj <> endobj 13746 0 obj <> endobj 13747 0 obj <> endobj 13748 0 obj <> endobj 13749 0 obj <> endobj 13750 0 obj <> endobj 13751 0 obj <> endobj 13752 0 obj <> endobj 13753 0 obj <> endobj 13754 0 obj <> endobj 13755 0 obj <> endobj 13756 0 obj <> endobj 13757 0 obj <> endobj 13758 0 obj <> endobj 13759 0 obj <> endobj 13760 0 obj <> endobj 13761 0 obj <> endobj 13762 0 obj <> endobj 13763 0 obj <> endobj 13764 0 obj <> endobj 13765 0 obj <> endobj 13766 0 obj <> endobj 13767 0 obj <> endobj 13768 0 obj <> endobj 13769 0 obj <> endobj 13770 0 obj <> endobj 13771 0 obj <> endobj 13772 0 obj <> endobj 13773 0 obj <> endobj 13774 0 obj <> endobj 13775 0 obj <> endobj 13776 0 obj <> endobj 13777 0 obj <> endobj 13778 0 obj <> endobj 13779 0 obj <> endobj 13780 0 obj <> endobj 13781 0 obj <> endobj 13782 0 obj <> endobj 13783 0 obj <> endobj 13784 0 obj <> endobj 13785 0 obj <> endobj 13786 0 obj <> endobj 13787 0 obj <> endobj 13788 0 obj <> endobj 13789 0 obj <> endobj 13790 0 obj <> endobj 13791 0 obj <> endobj 13792 0 obj <> endobj 13793 0 obj <> endobj 13794 0 obj <> endobj 13795 0 obj <> endobj 13796 0 obj <> endobj 13797 0 obj <> endobj 13798 0 obj <> endobj 13799 0 obj <> endobj 13800 0 obj <> endobj 13801 0 obj <> endobj 13802 0 obj <> endobj 13803 0 obj <> endobj 13804 0 obj <> endobj 13805 0 obj <> endobj 13806 0 obj <> endobj 13807 0 obj <> endobj 13808 0 obj <> endobj 13809 0 obj <> endobj 13810 0 obj <> endobj 13811 0 obj <> endobj 13812 0 obj <> endobj 13813 0 obj <> endobj 13814 0 obj <> endobj 13815 0 obj <> endobj 13816 0 obj <> endobj 13817 0 obj <> endobj 13818 0 obj <> endobj 13819 0 obj <> endobj 13820 0 obj <> endobj 13821 0 obj <> endobj 13822 0 obj <> endobj 13823 0 obj <> endobj 13824 0 obj <> endobj 13825 0 obj <> endobj 13826 0 obj <> endobj 13827 0 obj <> endobj 13828 0 obj <> endobj 13829 0 obj <> endobj 13830 0 obj <> endobj 13831 0 obj <> endobj 13832 0 obj <> endobj 13833 0 obj <> endobj 13834 0 obj <> endobj 13835 0 obj <> endobj 13836 0 obj <> endobj 13837 0 obj <> endobj 13838 0 obj <> endobj 13839 0 obj <> endobj 13840 0 obj <> endobj 13841 0 obj <> endobj 13842 0 obj <> endobj 13843 0 obj <> endobj 13844 0 obj <> endobj 13845 0 obj <> endobj 13846 0 obj <> endobj 13847 0 obj <> endobj 13848 0 obj <> endobj 13849 0 obj <> endobj 13850 0 obj <> endobj 13851 0 obj <> endobj 13852 0 obj <> endobj 13853 0 obj <> endobj 13854 0 obj <> endobj 13855 0 obj <> endobj 13856 0 obj <> endobj 13857 0 obj <> endobj 13858 0 obj <> endobj 13859 0 obj <> endobj 13860 0 obj <> endobj 13861 0 obj <> endobj 13862 0 obj <> endobj 13863 0 obj <> endobj 13864 0 obj <> endobj 13865 0 obj <> endobj 13866 0 obj <> endobj 13867 0 obj <> endobj 13868 0 obj <> endobj 13869 0 obj <> endobj 13870 0 obj <> endobj 13871 0 obj <> endobj 13872 0 obj <> endobj 13873 0 obj <> endobj 13874 0 obj <> endobj 13875 0 obj <> endobj 13876 0 obj <> endobj 13877 0 obj <> endobj 13878 0 obj <> endobj 13879 0 obj <> endobj 13880 0 obj <> endobj 13881 0 obj <> endobj 13882 0 obj <> endobj 13883 0 obj <> endobj 13884 0 obj <> endobj 13885 0 obj <> endobj 13886 0 obj <> endobj 13887 0 obj <> endobj 13888 0 obj <> endobj 13889 0 obj <> endobj 13890 0 obj <> endobj 13891 0 obj <> endobj 13892 0 obj <> endobj 13893 0 obj <> endobj 13894 0 obj <> endobj 13895 0 obj <> endobj 13896 0 obj <> endobj 13897 0 obj <> endobj 13898 0 obj <> endobj 13899 0 obj <> endobj 13900 0 obj <> endobj 13901 0 obj <> endobj 13902 0 obj <> endobj 13903 0 obj <> endobj 13904 0 obj <> endobj 13905 0 obj <> endobj 13906 0 obj <> endobj 13907 0 obj <> endobj 13908 0 obj <> endobj 13909 0 obj <> endobj 13910 0 obj <> endobj 13911 0 obj <> endobj 13912 0 obj <> endobj 13913 0 obj <> endobj 13914 0 obj <> endobj 13915 0 obj <> endobj 13916 0 obj <> endobj 13917 0 obj <> endobj 13918 0 obj <> endobj 13919 0 obj <> endobj 13920 0 obj <> endobj 13921 0 obj <> endobj 13922 0 obj <> endobj 13923 0 obj <> endobj 13924 0 obj <> endobj 13925 0 obj <> endobj 13926 0 obj <> endobj 13927 0 obj <> endobj 13928 0 obj <> endobj 13929 0 obj <> endobj 13930 0 obj <> endobj 13931 0 obj <> endobj 13932 0 obj <> endobj 13933 0 obj <> endobj 13934 0 obj <> endobj 13935 0 obj <> endobj 13936 0 obj <> endobj 13937 0 obj <> endobj 13938 0 obj <> endobj 13939 0 obj <> endobj 13940 0 obj <> endobj 13941 0 obj <> endobj 13942 0 obj <> endobj 13943 0 obj <> endobj 13944 0 obj <> endobj 13945 0 obj <> endobj 13946 0 obj <> endobj 13947 0 obj <> endobj 13948 0 obj <> endobj 13949 0 obj <> endobj 13950 0 obj <> endobj 13951 0 obj <> endobj 13952 0 obj <> endobj 13953 0 obj <> endobj 13954 0 obj <> endobj 13955 0 obj <> endobj 13956 0 obj <> endobj 13957 0 obj <> endobj 13958 0 obj <> endobj 13959 0 obj <> endobj 13960 0 obj <> endobj 13961 0 obj <> endobj 13962 0 obj <> endobj 13963 0 obj <> endobj 13964 0 obj <> endobj 13965 0 obj <> endobj 13966 0 obj <> endobj 13967 0 obj <> endobj 13968 0 obj <> endobj 13969 0 obj <> endobj 13970 0 obj <> endobj 13971 0 obj <> endobj 13972 0 obj <> endobj 13973 0 obj <> endobj 13974 0 obj <> endobj 13975 0 obj <> endobj 13976 0 obj <> endobj 13977 0 obj <> endobj 13978 0 obj <> endobj 13979 0 obj <> endobj 13980 0 obj <> endobj 13981 0 obj <> endobj 13982 0 obj <> endobj 13983 0 obj <> endobj 13984 0 obj <> endobj 13985 0 obj <> endobj 13986 0 obj <> endobj 13987 0 obj <> endobj 13988 0 obj <> endobj 13989 0 obj <> endobj 13990 0 obj <> endobj 13991 0 obj <> endobj 13992 0 obj <> endobj 13993 0 obj <> endobj 13994 0 obj <> endobj 13995 0 obj <> endobj 13996 0 obj <> endobj 13997 0 obj <> endobj 13998 0 obj <> endobj 13999 0 obj <> endobj 14000 0 obj <> endobj 14001 0 obj <> endobj 14002 0 obj <> endobj 14003 0 obj <> endobj 14004 0 obj <> endobj 14005 0 obj <> endobj 14006 0 obj <> endobj 14007 0 obj <> endobj 14008 0 obj <> endobj 14009 0 obj <> endobj 14010 0 obj <> endobj 14011 0 obj <> endobj 14012 0 obj <> endobj 14013 0 obj <> endobj 14014 0 obj <> endobj 14015 0 obj <> endobj 14016 0 obj <> endobj 14017 0 obj <> endobj 14018 0 obj <> endobj 14019 0 obj <> endobj 14020 0 obj <> endobj 14021 0 obj <> endobj 14022 0 obj <> endobj 14023 0 obj <> endobj 14024 0 obj <> endobj 14025 0 obj <> endobj 14026 0 obj <> endobj 14027 0 obj <> endobj 14028 0 obj <> endobj 14029 0 obj <> endobj 14030 0 obj <> endobj 14031 0 obj <> endobj 14032 0 obj <> endobj 14033 0 obj <> endobj 14034 0 obj <> endobj 14035 0 obj <> endobj 14036 0 obj <> endobj 14037 0 obj <> endobj 14038 0 obj <> endobj 14039 0 obj <> endobj 14040 0 obj <> endobj 14041 0 obj <> endobj 14042 0 obj <> endobj 14043 0 obj <> endobj 14044 0 obj <> endobj 14045 0 obj <> endobj 14046 0 obj <> endobj 14047 0 obj <> endobj 14048 0 obj <> endobj 14049 0 obj <> endobj 14050 0 obj <> endobj 14051 0 obj <> endobj 14052 0 obj <> endobj 14053 0 obj <> endobj 14054 0 obj <> endobj 14055 0 obj <> endobj 14056 0 obj <> endobj 14057 0 obj <> endobj 14058 0 obj <> endobj 14059 0 obj <> endobj 14060 0 obj <> endobj 14061 0 obj <> endobj 14062 0 obj <> endobj 14063 0 obj <> endobj 14064 0 obj <> endobj 14065 0 obj <> endobj 14066 0 obj <> endobj 14067 0 obj <> endobj 14068 0 obj <> endobj 14069 0 obj <> endobj 14070 0 obj <> endobj 14071 0 obj <> endobj 14072 0 obj <> endobj 14073 0 obj <> endobj 14074 0 obj <> endobj 14075 0 obj <> endobj 14076 0 obj <> endobj 14077 0 obj <> endobj 14078 0 obj <> endobj 14079 0 obj <> endobj 14080 0 obj <> endobj 14081 0 obj <> endobj 14082 0 obj <> endobj 14083 0 obj <> endobj 14084 0 obj <> endobj 14085 0 obj <> endobj 14086 0 obj <> endobj 14087 0 obj <> endobj 14088 0 obj <> endobj 14089 0 obj <> endobj 14090 0 obj <> endobj 14091 0 obj <> endobj 14092 0 obj <> endobj 14093 0 obj <> endobj 14094 0 obj <> endobj 14095 0 obj <> endobj 14096 0 obj <> endobj 14097 0 obj <> endobj 14098 0 obj <> endobj 14099 0 obj <> endobj 14100 0 obj <> endobj 14101 0 obj <> endobj 14102 0 obj <> endobj 14103 0 obj <> endobj 14104 0 obj <> endobj 14105 0 obj <> endobj 14106 0 obj <> endobj 14107 0 obj <> endobj 14108 0 obj <> endobj 14109 0 obj <> endobj 14110 0 obj <> endobj 14111 0 obj <> endobj 14112 0 obj <> endobj 14113 0 obj <> endobj 14114 0 obj <> endobj 14115 0 obj <> endobj 14116 0 obj <> endobj 14117 0 obj <> endobj 14118 0 obj <> endobj 14119 0 obj <> endobj 14120 0 obj <> endobj 14121 0 obj <> endobj 14122 0 obj <> endobj 14123 0 obj <> endobj 14124 0 obj <> endobj 14125 0 obj <> endobj 14126 0 obj <> endobj 14127 0 obj <> endobj 14128 0 obj <> endobj 14129 0 obj <> endobj 14130 0 obj <> endobj 14131 0 obj <> endobj 14132 0 obj <> endobj 14133 0 obj <> endobj 14134 0 obj <> endobj 14135 0 obj <> endobj 14136 0 obj <> endobj 14137 0 obj <> endobj 14138 0 obj <> endobj 14139 0 obj <> endobj 14140 0 obj <> endobj 14141 0 obj <> endobj 14142 0 obj <> endobj 14143 0 obj <> endobj 14144 0 obj <> endobj 14145 0 obj <> endobj 14146 0 obj <> endobj 14147 0 obj <> endobj 14148 0 obj <> endobj 14149 0 obj <> endobj 14150 0 obj <> endobj 14151 0 obj <> endobj 14152 0 obj <> endobj 14153 0 obj <> endobj 14154 0 obj <> endobj 14155 0 obj <> endobj 14156 0 obj <> endobj 14157 0 obj <> endobj 14158 0 obj <> endobj 14159 0 obj <> endobj 14160 0 obj <> endobj 14161 0 obj <> endobj 14162 0 obj <> endobj 14163 0 obj <> endobj 14164 0 obj <> endobj 14165 0 obj <> endobj 14166 0 obj <> endobj 14167 0 obj <> endobj 14168 0 obj <> endobj 14169 0 obj <> endobj 14170 0 obj <> endobj 14171 0 obj <> endobj 14172 0 obj <> endobj 14173 0 obj <> endobj 14174 0 obj <> endobj 14175 0 obj <> endobj 14176 0 obj <> endobj 14177 0 obj <> endobj 14178 0 obj <> endobj 14179 0 obj <> endobj 14180 0 obj <> endobj 14181 0 obj <> endobj 14182 0 obj <> endobj 14183 0 obj <> endobj 14184 0 obj <> endobj 14185 0 obj <> endobj 14186 0 obj <> endobj 14187 0 obj <> endobj 14188 0 obj <> endobj 14189 0 obj <> endobj 14190 0 obj <> endobj 14191 0 obj <> endobj 14192 0 obj <> endobj 14193 0 obj <> endobj 14194 0 obj <> endobj 14195 0 obj <> endobj 14196 0 obj <> endobj 14197 0 obj <> endobj 14198 0 obj <> endobj 14199 0 obj <> endobj 14200 0 obj <> endobj 14201 0 obj <> endobj 14202 0 obj <> endobj 14203 0 obj <> endobj 14204 0 obj <> endobj 14205 0 obj <> endobj 14206 0 obj <> endobj 14207 0 obj <> endobj 14208 0 obj <> endobj 14209 0 obj <> endobj 14210 0 obj <> endobj 14211 0 obj <> endobj 14212 0 obj <> endobj 14213 0 obj <> endobj 14214 0 obj <> endobj 14215 0 obj <> endobj 14216 0 obj <> endobj 14217 0 obj <> endobj 14218 0 obj <> endobj 14219 0 obj <> endobj 14220 0 obj <> endobj 14221 0 obj <> endobj 14222 0 obj <> endobj 14223 0 obj <> endobj 14224 0 obj <> endobj 14225 0 obj <> endobj 14226 0 obj <> endobj 14227 0 obj <> endobj 14228 0 obj <> endobj 14229 0 obj <> endobj 14230 0 obj <> endobj 14231 0 obj <> endobj 14232 0 obj <> endobj 14233 0 obj <> endobj 14234 0 obj <> endobj 14235 0 obj <> endobj 14236 0 obj <> endobj 14237 0 obj <> endobj 14238 0 obj <> endobj 14239 0 obj <> endobj 14240 0 obj <> endobj 14241 0 obj <> endobj 14242 0 obj <> endobj 14243 0 obj <> endobj 14244 0 obj <> endobj 14245 0 obj <> endobj 14246 0 obj <> endobj 14247 0 obj <> endobj 14248 0 obj <> endobj 14249 0 obj <> endobj 14250 0 obj <> endobj 14251 0 obj <> endobj 14252 0 obj <> endobj 14253 0 obj <> endobj 14254 0 obj <> endobj 14255 0 obj <> endobj 14256 0 obj <> endobj 14257 0 obj <> endobj 14258 0 obj <> endobj 14259 0 obj <> endobj 14260 0 obj <> endobj 14261 0 obj <> endobj 14262 0 obj <> endobj 14263 0 obj <> endobj 14264 0 obj <> endobj 14265 0 obj <> endobj 14266 0 obj <> endobj 14267 0 obj <> endobj 14268 0 obj <> endobj 14269 0 obj <> endobj 14270 0 obj <> endobj 14271 0 obj <> endobj 14272 0 obj <> endobj 14273 0 obj <> endobj 14274 0 obj <> endobj 14275 0 obj <> endobj 14276 0 obj <> endobj 14277 0 obj <> endobj 14278 0 obj <> endobj 14279 0 obj <> endobj 14280 0 obj <> endobj 14281 0 obj <> endobj 14282 0 obj <> endobj 14283 0 obj <> endobj 14284 0 obj <> endobj 14285 0 obj <> endobj 14286 0 obj <> endobj 14287 0 obj <> endobj 14288 0 obj <> endobj 14289 0 obj <> endobj 14290 0 obj <> endobj 14291 0 obj <> endobj 14292 0 obj <> endobj 14293 0 obj <> endobj 14294 0 obj <> endobj 14295 0 obj <> endobj 14296 0 obj <> endobj 14297 0 obj <> endobj 14298 0 obj <> endobj 14299 0 obj <> endobj 14300 0 obj <> endobj 14301 0 obj <> endobj 14302 0 obj <> endobj 14303 0 obj <> endobj 14304 0 obj <> endobj 14305 0 obj <> endobj 14306 0 obj <> endobj 14307 0 obj <> endobj 14308 0 obj <> endobj 14309 0 obj <> endobj 14310 0 obj <> endobj 14311 0 obj <> endobj 14312 0 obj <> endobj 14313 0 obj <> endobj 14314 0 obj <> endobj 14315 0 obj <> endobj 14316 0 obj <> endobj 14317 0 obj <> endobj 14318 0 obj <> endobj 14319 0 obj <> endobj 14320 0 obj <> endobj 14321 0 obj <> endobj 14322 0 obj <> endobj 14323 0 obj <> endobj 14324 0 obj <> endobj 14325 0 obj <> endobj 14326 0 obj <> endobj 14327 0 obj <> endobj 14328 0 obj <> endobj 14329 0 obj <> endobj 14330 0 obj <> endobj 14331 0 obj <> endobj 14332 0 obj <> endobj 14333 0 obj <> endobj 14334 0 obj <> endobj 14335 0 obj <> endobj 14336 0 obj <> endobj 14337 0 obj <> endobj 14338 0 obj <> endobj 14339 0 obj <> endobj 14340 0 obj <> endobj 14341 0 obj <> endobj 14342 0 obj <> endobj 14343 0 obj <> endobj 14344 0 obj <> endobj 14345 0 obj <> endobj 14346 0 obj <> endobj 14347 0 obj <> endobj 14348 0 obj <> endobj 14349 0 obj <> endobj 14350 0 obj <> endobj 14351 0 obj <> endobj 14352 0 obj <> endobj 14353 0 obj <> endobj 14354 0 obj <> endobj 14355 0 obj <> endobj 14356 0 obj <> endobj 14357 0 obj <> endobj 14358 0 obj <> endobj 14359 0 obj <> endobj 14360 0 obj <> endobj 14361 0 obj <> endobj 14362 0 obj <> endobj 14363 0 obj <> endobj 14364 0 obj <> endobj 14365 0 obj <> endobj 14366 0 obj <> endobj 14367 0 obj <> endobj 14368 0 obj <> endobj 14369 0 obj <> endobj 14370 0 obj <> endobj 14371 0 obj <> endobj 14372 0 obj <> endobj 14373 0 obj <> endobj 14374 0 obj <> endobj 14375 0 obj <> endobj 14376 0 obj <> endobj 14377 0 obj <> endobj 14378 0 obj <> endobj 14379 0 obj <> endobj 14380 0 obj <> endobj 14381 0 obj <> endobj 14382 0 obj <> endobj 14383 0 obj <> endobj 14384 0 obj <> endobj 14385 0 obj <> endobj 14386 0 obj <> endobj 14387 0 obj <> endobj 14388 0 obj <> endobj 14389 0 obj <> endobj 14390 0 obj <> endobj 14391 0 obj <> endobj 14392 0 obj <> endobj 14393 0 obj <> endobj 14394 0 obj <> endobj 14395 0 obj <> endobj 14396 0 obj <> endobj 14397 0 obj <> endobj 14398 0 obj <> endobj 14399 0 obj <> endobj 14400 0 obj <> endobj 14401 0 obj <> endobj 14402 0 obj <> endobj 14403 0 obj <> endobj 14404 0 obj <> endobj 14405 0 obj <> endobj 14406 0 obj <> endobj 14407 0 obj <> endobj 14408 0 obj <> endobj 14409 0 obj <> endobj 14410 0 obj <> endobj 14411 0 obj <> endobj 14412 0 obj <> endobj 14413 0 obj <> endobj 14414 0 obj <> endobj 14415 0 obj <> endobj 14416 0 obj <> endobj 14417 0 obj <> endobj 14418 0 obj <> endobj 14419 0 obj <> endobj 14420 0 obj <> endobj 14421 0 obj <> endobj 14422 0 obj <> endobj 14423 0 obj <> endobj 14424 0 obj <> endobj 14425 0 obj <> endobj 14426 0 obj <> endobj 14427 0 obj <> endobj 14428 0 obj <> endobj 14429 0 obj <> endobj 14430 0 obj <> endobj 14431 0 obj <> endobj 14432 0 obj <> endobj 14433 0 obj <> endobj 14434 0 obj <> endobj 14435 0 obj <> endobj 14436 0 obj <> endobj 14437 0 obj <> endobj 14438 0 obj <> endobj 14439 0 obj <> endobj 14440 0 obj <> endobj 14441 0 obj <> endobj 14442 0 obj <> endobj 14443 0 obj <> endobj 14444 0 obj <> endobj 14445 0 obj <> endobj 14446 0 obj <> endobj 14447 0 obj <> endobj 14448 0 obj <> endobj 14449 0 obj <> endobj 14450 0 obj <> endobj 14451 0 obj <> endobj 14452 0 obj <> endobj 14453 0 obj <> endobj 14454 0 obj <> endobj 14455 0 obj <> endobj 14456 0 obj <> endobj 14457 0 obj <> endobj 14458 0 obj <> endobj 14459 0 obj <> endobj 14460 0 obj <> endobj 14461 0 obj <> endobj 14462 0 obj <> endobj 14463 0 obj <> endobj 14464 0 obj <> endobj 14465 0 obj <> endobj 14466 0 obj <> endobj 14467 0 obj <> endobj 14468 0 obj <> endobj 14469 0 obj <> endobj 14470 0 obj <> endobj 14471 0 obj <> endobj 14472 0 obj <> endobj 14473 0 obj <> endobj 14474 0 obj <> endobj 14475 0 obj <> endobj 14476 0 obj <> endobj 14477 0 obj <> endobj 14478 0 obj <> endobj 14479 0 obj <> endobj 14480 0 obj <> endobj 14481 0 obj <> endobj 14482 0 obj <> endobj 14483 0 obj <> endobj 14484 0 obj <> endobj 14485 0 obj <> endobj 14486 0 obj <> endobj 14487 0 obj <> endobj 14488 0 obj <> endobj 14489 0 obj <> endobj 14490 0 obj <> endobj 14491 0 obj <> endobj 14492 0 obj <> endobj 14493 0 obj <> endobj 14494 0 obj <> endobj 14495 0 obj <> endobj 14496 0 obj <> endobj 14497 0 obj <> endobj 14498 0 obj <> endobj 14499 0 obj <> endobj 14500 0 obj <> endobj 14501 0 obj <> endobj 14502 0 obj <> endobj 14503 0 obj <> endobj 14504 0 obj <> endobj 14505 0 obj <> endobj 14506 0 obj <> endobj 14507 0 obj <> endobj 14508 0 obj <> endobj 14509 0 obj <> endobj 14510 0 obj <> endobj 14511 0 obj <> endobj 14512 0 obj <> endobj 14513 0 obj <> endobj 14514 0 obj <> endobj 14515 0 obj <> endobj 14516 0 obj <> endobj 14517 0 obj <> endobj 14518 0 obj <> endobj 14519 0 obj <> endobj 14520 0 obj <> endobj 14521 0 obj <> endobj 14522 0 obj <> endobj 14523 0 obj <> endobj 14524 0 obj <> endobj 14525 0 obj <> endobj 14526 0 obj <> endobj 14527 0 obj <> endobj 14528 0 obj <> endobj 14529 0 obj <> endobj 14530 0 obj <> endobj 14531 0 obj <> endobj 14532 0 obj <> endobj 14533 0 obj <> endobj 14534 0 obj <> endobj 14535 0 obj <> endobj 14536 0 obj <> endobj 14537 0 obj <> endobj 14538 0 obj <> endobj 14539 0 obj <> endobj 14540 0 obj <> endobj 14541 0 obj <> endobj 14542 0 obj <> endobj 14543 0 obj <> endobj 14544 0 obj <> endobj 14545 0 obj <> endobj 14546 0 obj <> endobj 14547 0 obj <> endobj 14548 0 obj <> endobj 14549 0 obj <> endobj 14550 0 obj <> endobj 14551 0 obj <> endobj 14552 0 obj <> endobj 14553 0 obj <> endobj 14554 0 obj <> endobj 14555 0 obj <> endobj 14556 0 obj <> endobj 14557 0 obj <> endobj 14558 0 obj <> endobj 14559 0 obj <> endobj 14560 0 obj <> endobj 14561 0 obj <> endobj 14562 0 obj <> endobj 14563 0 obj <> endobj 14564 0 obj <> endobj 14565 0 obj <> endobj 14566 0 obj <> endobj 14567 0 obj <> endobj 14568 0 obj <> endobj 14569 0 obj <> endobj 14570 0 obj <> endobj 14571 0 obj <> endobj 14572 0 obj <> endobj 14573 0 obj <> endobj 14574 0 obj <> endobj 14575 0 obj <> endobj 14576 0 obj <> endobj 14577 0 obj <> endobj 14578 0 obj <> endobj 14579 0 obj <> endobj 14580 0 obj <> endobj 14581 0 obj <> endobj 14582 0 obj <> endobj 14583 0 obj <> endobj 14584 0 obj <> endobj 14585 0 obj <> endobj 14586 0 obj <> endobj 14587 0 obj <> endobj 14588 0 obj <> endobj 14589 0 obj <> endobj 14590 0 obj <> endobj 14591 0 obj <> endobj 14592 0 obj <> endobj 14593 0 obj <> endobj 14594 0 obj <> endobj 14595 0 obj <> endobj 14596 0 obj <> endobj 14597 0 obj <> endobj 14598 0 obj <> endobj 14599 0 obj <> endobj 14600 0 obj <> endobj 14601 0 obj <> endobj 14602 0 obj <> endobj 14603 0 obj <> endobj 14604 0 obj <> endobj 14605 0 obj <> endobj 14606 0 obj <> endobj 14607 0 obj <> endobj 14608 0 obj <> endobj 14609 0 obj <> endobj 14610 0 obj <> endobj 14611 0 obj <> endobj 14612 0 obj <> endobj 14613 0 obj <> endobj 14614 0 obj <> endobj 14615 0 obj <> endobj 14616 0 obj <> endobj 14617 0 obj <> endobj 14618 0 obj <> endobj 14619 0 obj <> endobj 14620 0 obj <> endobj 14621 0 obj <> endobj 14622 0 obj <> endobj 14623 0 obj <> endobj 14624 0 obj <> endobj 14625 0 obj <> endobj 14626 0 obj <> endobj 14627 0 obj <> endobj 14628 0 obj <> endobj 14629 0 obj <> endobj 14630 0 obj <> endobj 14631 0 obj <> endobj 14632 0 obj <> endobj 14633 0 obj <> endobj 14634 0 obj <> endobj 14635 0 obj <> endobj 14636 0 obj <> endobj 14637 0 obj <> endobj 14638 0 obj <> endobj 14639 0 obj <> endobj 14640 0 obj <> endobj 14641 0 obj <> endobj 14642 0 obj <> endobj 14643 0 obj <> endobj 14644 0 obj <> endobj 14645 0 obj <> endobj 14646 0 obj <> endobj 14647 0 obj <> endobj 14648 0 obj <> endobj 14649 0 obj <> endobj 14650 0 obj <> endobj 14651 0 obj <> endobj 14652 0 obj <> endobj 14653 0 obj <> endobj 14654 0 obj <> endobj 14655 0 obj <> endobj 14656 0 obj <> endobj 14657 0 obj <> endobj 14658 0 obj <> endobj 14659 0 obj <> endobj 14660 0 obj <> endobj 14661 0 obj <> endobj 14662 0 obj <> endobj 14663 0 obj <> endobj 14664 0 obj <> endobj 14665 0 obj <> endobj 14666 0 obj <> endobj 14667 0 obj <> endobj 14668 0 obj <> endobj 14669 0 obj <> endobj 14670 0 obj <> endobj 14671 0 obj <> endobj 14672 0 obj <> endobj 14673 0 obj <> endobj 14674 0 obj <> endobj 14675 0 obj <> endobj 14676 0 obj <> endobj 14677 0 obj <> endobj 14678 0 obj <> endobj 14679 0 obj <> endobj 14680 0 obj <> endobj 14681 0 obj <> endobj 14682 0 obj <> endobj 14683 0 obj <> endobj 14684 0 obj <> endobj 14685 0 obj <> endobj 14686 0 obj <> endobj 14687 0 obj <> endobj 14688 0 obj <> endobj 14689 0 obj <> endobj 14690 0 obj <> endobj 14691 0 obj <> endobj 14692 0 obj <> endobj 14693 0 obj <> endobj 14694 0 obj <> endobj 14695 0 obj <> endobj 14696 0 obj <> endobj 14697 0 obj <> endobj 14698 0 obj <> endobj 14699 0 obj <> endobj 14700 0 obj <> endobj 14701 0 obj <> endobj 14702 0 obj <> endobj 14703 0 obj <> endobj 14704 0 obj <> endobj 14705 0 obj <> endobj 14706 0 obj <> endobj 14707 0 obj <> endobj 14708 0 obj <> endobj 14709 0 obj <> endobj 14710 0 obj <> endobj 14711 0 obj <> endobj 14712 0 obj <> endobj 14713 0 obj <> endobj 14714 0 obj <> endobj 14715 0 obj <> endobj 14716 0 obj <> endobj 14717 0 obj <> endobj 14718 0 obj <> endobj 14719 0 obj <> endobj 14720 0 obj <> endobj 14721 0 obj <> endobj 14722 0 obj <> endobj 14723 0 obj <> endobj 14724 0 obj <> endobj 14725 0 obj <> endobj 14726 0 obj <> endobj 14727 0 obj <> endobj 14728 0 obj <> endobj 14729 0 obj <> endobj 14730 0 obj <> endobj 14731 0 obj <> endobj 14732 0 obj <> endobj 14733 0 obj <> endobj 14734 0 obj <> endobj 14735 0 obj <> endobj 14736 0 obj <> endobj 14737 0 obj <> endobj 14738 0 obj <> endobj 14739 0 obj <> endobj 14740 0 obj <> endobj 14741 0 obj <> endobj 14742 0 obj <> endobj 14743 0 obj <> endobj 14744 0 obj <> endobj 14745 0 obj <> endobj 14746 0 obj <> endobj 14747 0 obj <> endobj 14748 0 obj <> endobj 14749 0 obj <> endobj 14750 0 obj <> endobj 14751 0 obj <> endobj 14752 0 obj <> endobj 14753 0 obj <> endobj 14754 0 obj <> endobj 14755 0 obj <> endobj 14756 0 obj <> endobj 14757 0 obj <> endobj 14758 0 obj <> endobj 14759 0 obj <> endobj 14760 0 obj <> endobj 14761 0 obj <> endobj 14762 0 obj <> endobj 14763 0 obj <> endobj 14764 0 obj <> endobj 14765 0 obj <> endobj 14766 0 obj <> endobj 14767 0 obj <> endobj 14768 0 obj <> endobj 14769 0 obj <> endobj 14770 0 obj <> endobj 14771 0 obj <> endobj 14772 0 obj <> endobj 14773 0 obj <> endobj 14774 0 obj <> endobj 14775 0 obj <> endobj 14776 0 obj <> endobj 14777 0 obj <> endobj 14778 0 obj <> endobj 14779 0 obj <> endobj 14780 0 obj <> endobj 14781 0 obj <> endobj 14782 0 obj <> endobj 14783 0 obj <> endobj 14784 0 obj <> endobj 14785 0 obj <> endobj 14786 0 obj <> endobj 14787 0 obj <> endobj 14788 0 obj <> endobj 14789 0 obj <> endobj 14790 0 obj <> endobj 14791 0 obj <> endobj 14792 0 obj <> endobj 14793 0 obj <> endobj 14794 0 obj <> endobj 14795 0 obj <> endobj 14796 0 obj <> endobj 14797 0 obj <> endobj 14798 0 obj <> endobj 14799 0 obj <> endobj 14800 0 obj <> endobj 14801 0 obj <> endobj 14802 0 obj <> endobj 14803 0 obj <> endobj 14804 0 obj <> endobj 14805 0 obj <> endobj 14806 0 obj <> endobj 14807 0 obj <> endobj 14808 0 obj <> endobj 14809 0 obj <> endobj 14810 0 obj <> endobj 14811 0 obj <> endobj 14812 0 obj <> endobj 14813 0 obj <> endobj 14814 0 obj <> endobj 14815 0 obj <> endobj 14816 0 obj <> endobj 14817 0 obj <> endobj 14818 0 obj <> endobj 14819 0 obj <> endobj 14820 0 obj <> endobj 14821 0 obj <> endobj 14822 0 obj <> endobj 14823 0 obj <> endobj 14824 0 obj <> endobj 14825 0 obj <> endobj 14826 0 obj <> endobj 14827 0 obj <> endobj 14828 0 obj <> endobj 14829 0 obj <> endobj 14830 0 obj <> endobj 14831 0 obj <> endobj 14832 0 obj <> endobj 14833 0 obj <> endobj 14834 0 obj <> endobj 14835 0 obj <> endobj 14836 0 obj <> endobj 14837 0 obj <> endobj 14838 0 obj <> endobj 14839 0 obj <> endobj 14840 0 obj <> endobj 14841 0 obj <> endobj 14842 0 obj <> endobj 14843 0 obj <> endobj 14844 0 obj <> endobj 14845 0 obj <> endobj 14846 0 obj <> endobj 14847 0 obj <> endobj 14848 0 obj <> endobj 14849 0 obj <> endobj 14850 0 obj <> endobj 14851 0 obj <> endobj 14852 0 obj <> endobj 14853 0 obj <> endobj 14854 0 obj <> endobj 14855 0 obj <> endobj 14856 0 obj <> endobj 14857 0 obj <> endobj 14858 0 obj <> endobj 14859 0 obj <> endobj 14860 0 obj <> endobj 14861 0 obj <> endobj 14862 0 obj <> endobj 14863 0 obj <> endobj 14864 0 obj <> endobj 14865 0 obj <> endobj 14866 0 obj <> endobj 14867 0 obj <> endobj 14868 0 obj <> endobj 14869 0 obj <> endobj 14870 0 obj <> endobj 14871 0 obj <> endobj 14872 0 obj <> endobj 14873 0 obj <> endobj 14874 0 obj <> endobj 14875 0 obj <> endobj 14876 0 obj <> endobj 14877 0 obj <> endobj 14878 0 obj <> endobj 14879 0 obj <> endobj 14880 0 obj <> endobj 14881 0 obj <> endobj 14882 0 obj <> endobj 14883 0 obj <> endobj 14884 0 obj <> endobj 14885 0 obj <> endobj 14886 0 obj <> endobj 14887 0 obj <> endobj 14888 0 obj <> endobj 14889 0 obj <> endobj 14890 0 obj <> endobj 14891 0 obj <> endobj 14892 0 obj <> endobj 14893 0 obj <> endobj 14894 0 obj <> endobj 14895 0 obj <> endobj 14896 0 obj <> endobj 14897 0 obj <> endobj 14898 0 obj <> endobj 14899 0 obj <> endobj 14900 0 obj <> endobj 14901 0 obj <> endobj 14902 0 obj <> endobj 14903 0 obj <> endobj 14904 0 obj <> endobj 14905 0 obj <> endobj 14906 0 obj <> endobj 14907 0 obj <> endobj 14908 0 obj <> endobj 14909 0 obj <> endobj 14910 0 obj <> endobj 14911 0 obj <> endobj 14912 0 obj <> endobj 14913 0 obj <> endobj 14914 0 obj <> endobj 14915 0 obj <> endobj 14916 0 obj <> endobj 14917 0 obj <> endobj 14918 0 obj <> endobj 14919 0 obj <> endobj 14920 0 obj <> endobj 14921 0 obj <> endobj 14922 0 obj <> endobj 14923 0 obj <> endobj 14924 0 obj <> endobj 14925 0 obj <> endobj 14926 0 obj <> endobj 14927 0 obj <> endobj 14928 0 obj <> endobj 14929 0 obj <> endobj 14930 0 obj <> endobj 14931 0 obj <> endobj 14932 0 obj <> endobj 14933 0 obj <> endobj 14934 0 obj <> endobj 14935 0 obj <> endobj 14936 0 obj <> endobj 14937 0 obj <> endobj 14938 0 obj <> endobj 14939 0 obj <> endobj 14940 0 obj <> endobj 14941 0 obj <> endobj 14942 0 obj <> endobj 14943 0 obj <> endobj 14944 0 obj <> endobj 14945 0 obj <> endobj 14946 0 obj <> endobj 14947 0 obj <> endobj 14948 0 obj <> endobj 14949 0 obj <> endobj 14950 0 obj <> endobj 14951 0 obj <> endobj 14952 0 obj <> endobj 14953 0 obj <> endobj 14954 0 obj <> endobj 14955 0 obj <> endobj 14956 0 obj <> endobj 14957 0 obj <> endobj 14958 0 obj <> endobj 14959 0 obj <> endobj 14960 0 obj <> endobj 14961 0 obj <> endobj 14962 0 obj <> endobj 14963 0 obj <> endobj 14964 0 obj <> endobj 14965 0 obj <> endobj 14966 0 obj <> endobj 14967 0 obj <> endobj 14968 0 obj <> endobj 14969 0 obj <> endobj 14970 0 obj <> endobj 14971 0 obj <> endobj 14972 0 obj <> endobj 14973 0 obj <> endobj 14974 0 obj <> endobj 14975 0 obj <> endobj 14976 0 obj <> endobj 14977 0 obj <> endobj 14978 0 obj <> endobj 14979 0 obj <> endobj 14980 0 obj <> endobj 14981 0 obj <> endobj 14982 0 obj <> endobj 14983 0 obj <> endobj 14984 0 obj <> endobj 14985 0 obj <> endobj 14986 0 obj <> endobj 14987 0 obj <> endobj 14988 0 obj <> endobj 14989 0 obj <> endobj 14990 0 obj <> endobj 14991 0 obj <> endobj 14992 0 obj <> endobj 14993 0 obj <> endobj 14994 0 obj <> endobj 14995 0 obj <> endobj 14996 0 obj <> endobj 14997 0 obj <> endobj 14998 0 obj <> endobj 14999 0 obj <> endobj 15000 0 obj <> endobj 15001 0 obj <> endobj 15002 0 obj <> endobj 15003 0 obj <> endobj 15004 0 obj <> endobj 15005 0 obj <> endobj 15006 0 obj <> endobj 15007 0 obj <> endobj 15008 0 obj <> endobj 15009 0 obj <> endobj 15010 0 obj <> endobj 15011 0 obj <> endobj 15012 0 obj <> endobj 15013 0 obj <> endobj 15014 0 obj <> endobj 15015 0 obj <> endobj 15016 0 obj <> endobj 15017 0 obj <> endobj 15018 0 obj <> endobj 15019 0 obj <> endobj 15020 0 obj <> endobj 15021 0 obj <> endobj 15022 0 obj <> endobj 15023 0 obj <> endobj 15024 0 obj <> endobj 15025 0 obj <> endobj 15026 0 obj <> endobj 15027 0 obj <> endobj 15028 0 obj <> endobj 15029 0 obj <> endobj 15030 0 obj <> endobj 15031 0 obj <> endobj 15032 0 obj <> endobj 15033 0 obj <> endobj 15034 0 obj <> endobj 15035 0 obj <> endobj 15036 0 obj <> endobj 15037 0 obj <> endobj 15038 0 obj <> endobj 15039 0 obj <> endobj 15040 0 obj <> endobj 15041 0 obj <> endobj 15042 0 obj <> endobj 15043 0 obj <> endobj 15044 0 obj <> endobj 15045 0 obj <> endobj 15046 0 obj <> endobj 15047 0 obj <> endobj 15048 0 obj <> endobj 15049 0 obj <> endobj 15050 0 obj <> endobj 15051 0 obj <> endobj 15052 0 obj <> endobj 15053 0 obj <> endobj 15054 0 obj <> endobj 15055 0 obj <> endobj 15056 0 obj <> endobj 15057 0 obj <> endobj 15058 0 obj <> endobj 15059 0 obj <> endobj 15060 0 obj <> endobj 15061 0 obj <> endobj 15062 0 obj <> endobj 15063 0 obj <> endobj 15064 0 obj <> endobj 15065 0 obj <> endobj 15066 0 obj <> endobj 15067 0 obj <> endobj 15068 0 obj <> endobj 15069 0 obj <> endobj 15070 0 obj <> endobj 15071 0 obj <> endobj 15072 0 obj <> endobj 15073 0 obj <> endobj 15074 0 obj <> endobj 15075 0 obj <> endobj 15076 0 obj <> endobj 15077 0 obj <> endobj 15078 0 obj <> endobj 15079 0 obj <> endobj 15080 0 obj <> endobj 15081 0 obj <> endobj 15082 0 obj <> endobj 15083 0 obj <> endobj 15084 0 obj <> endobj 15085 0 obj <> endobj 15086 0 obj <> endobj 15087 0 obj <> endobj 15088 0 obj <> endobj 15089 0 obj <> endobj 15090 0 obj <> endobj 15091 0 obj <> endobj 15092 0 obj <> endobj 15093 0 obj <> endobj 15094 0 obj <> endobj 15095 0 obj <> endobj 15096 0 obj <> endobj 15097 0 obj <> endobj 15098 0 obj <> endobj 15099 0 obj <> endobj 15100 0 obj <> endobj 15101 0 obj <> endobj 15102 0 obj <> endobj 15103 0 obj <> endobj 15104 0 obj <> endobj 15105 0 obj <> endobj 15106 0 obj <> endobj 15107 0 obj <> endobj 15108 0 obj <> endobj 15109 0 obj <> endobj 15110 0 obj <> endobj 15111 0 obj <> endobj 15112 0 obj <> endobj 15113 0 obj <> endobj 15114 0 obj <> endobj 15115 0 obj <> endobj 15116 0 obj <> endobj 15117 0 obj <> endobj 15118 0 obj <> endobj 15119 0 obj <> endobj 15120 0 obj <> endobj 15121 0 obj <> endobj 15122 0 obj <> endobj 15123 0 obj <> endobj 15124 0 obj <> endobj 15125 0 obj <> endobj 15126 0 obj <> endobj 15127 0 obj <> endobj 15128 0 obj <> endobj 15129 0 obj <> endobj 15130 0 obj <> endobj 15131 0 obj <> endobj 15132 0 obj <> endobj 15133 0 obj <> endobj 15134 0 obj <> endobj 15135 0 obj <> endobj 15136 0 obj <> endobj 15137 0 obj <> endobj 15138 0 obj <> endobj 15139 0 obj <> endobj 15140 0 obj <> endobj 15141 0 obj <> endobj 15142 0 obj <> endobj 15143 0 obj <> endobj 15144 0 obj <> endobj 15145 0 obj <> endobj 15146 0 obj <> endobj 15147 0 obj <> endobj 15148 0 obj <> endobj 15149 0 obj <> endobj 15150 0 obj <> endobj 15151 0 obj <> endobj 15152 0 obj <> endobj 15153 0 obj <> endobj 15154 0 obj <> endobj 15155 0 obj <> endobj 15156 0 obj <> endobj 15157 0 obj <> endobj 15158 0 obj <> endobj 15159 0 obj <> endobj 15160 0 obj <> endobj 15161 0 obj <> endobj 15162 0 obj <> endobj 15163 0 obj <> endobj 15164 0 obj <> endobj 15165 0 obj <> endobj 15166 0 obj <> endobj 15167 0 obj <> endobj 15168 0 obj <> endobj 15169 0 obj <> endobj 15170 0 obj <> endobj 15171 0 obj <> endobj 15172 0 obj <> endobj 15173 0 obj <> endobj 15174 0 obj <> endobj 15175 0 obj <> endobj 15176 0 obj <> endobj 15177 0 obj <> endobj 15178 0 obj <> endobj 15179 0 obj <> endobj 15180 0 obj <> endobj 15181 0 obj <> endobj 15182 0 obj <> endobj 15183 0 obj <> endobj 15184 0 obj <> endobj 15185 0 obj <> endobj 15186 0 obj <> endobj 15187 0 obj <> endobj 15188 0 obj <> endobj 15189 0 obj <> endobj 15190 0 obj <> endobj 15191 0 obj <> endobj 15192 0 obj <> endobj 15193 0 obj <> endobj 15194 0 obj <> endobj 15195 0 obj <> endobj 15196 0 obj <> endobj 15197 0 obj <> endobj 15198 0 obj <> endobj 15199 0 obj <> endobj 15200 0 obj <> endobj 15201 0 obj <> endobj 15202 0 obj <> endobj 15203 0 obj <> endobj 15204 0 obj <> endobj 15205 0 obj <> endobj 15206 0 obj <> endobj 15207 0 obj <> endobj 15208 0 obj <> endobj 15209 0 obj <> endobj 15210 0 obj <> endobj 15211 0 obj <> endobj 15212 0 obj <> endobj 15213 0 obj <> endobj 15214 0 obj <> endobj 15215 0 obj <> endobj 15216 0 obj <> endobj 15217 0 obj <> endobj 15218 0 obj <> endobj 15219 0 obj <> endobj 15220 0 obj <> endobj 15221 0 obj <> endobj 15222 0 obj <> endobj 15223 0 obj <> endobj 15224 0 obj <> endobj 15225 0 obj <> endobj 15226 0 obj <> endobj 15227 0 obj <> endobj 15228 0 obj <> endobj 15229 0 obj <> endobj 15230 0 obj <> endobj 15231 0 obj <> endobj 15232 0 obj <> endobj 15233 0 obj <> endobj 15234 0 obj <> endobj 15235 0 obj <> endobj 15236 0 obj <> endobj 15237 0 obj <> endobj 15238 0 obj <> endobj 15239 0 obj <> endobj 15240 0 obj <> endobj 15241 0 obj <> endobj 15242 0 obj <> endobj 15243 0 obj <> endobj 15244 0 obj <> endobj 15245 0 obj <> endobj 15246 0 obj <> endobj 15247 0 obj <> endobj 15248 0 obj <> endobj 15249 0 obj <> endobj 15250 0 obj <> endobj 15251 0 obj <> endobj 15252 0 obj <> endobj 15253 0 obj <> endobj 15254 0 obj <> endobj 15255 0 obj <> endobj 15256 0 obj <> endobj 15257 0 obj <> endobj 15258 0 obj <> endobj 15259 0 obj <> endobj 15260 0 obj <> endobj 15261 0 obj <> endobj 15262 0 obj <> endobj 15263 0 obj <> endobj 15264 0 obj <> endobj 15265 0 obj <> endobj 15266 0 obj <> endobj 15267 0 obj <> endobj 15268 0 obj <> endobj 15269 0 obj <> endobj 15270 0 obj <> endobj 15271 0 obj <> endobj 15272 0 obj <> endobj 15273 0 obj <> endobj 15274 0 obj <> endobj 15275 0 obj <> endobj 15276 0 obj <> endobj 15277 0 obj <> endobj 15278 0 obj <> endobj 15279 0 obj <> endobj 15280 0 obj <> endobj 15281 0 obj <> endobj 15282 0 obj <> endobj 15283 0 obj <> endobj 15284 0 obj <> endobj 15285 0 obj <> endobj 15286 0 obj <> endobj 15287 0 obj <> endobj 15288 0 obj <> endobj 15289 0 obj <> endobj 15290 0 obj <> endobj 15291 0 obj <> endobj 15292 0 obj <> endobj 15293 0 obj <> endobj 15294 0 obj <> endobj 15295 0 obj <> endobj 15296 0 obj <> endobj 15297 0 obj <> endobj 15298 0 obj <> endobj 15299 0 obj <> endobj 15300 0 obj <> endobj 15301 0 obj <> endobj 15302 0 obj <> endobj 15303 0 obj <> endobj 15304 0 obj <> endobj 15305 0 obj <> endobj 15306 0 obj <> endobj 15307 0 obj <> endobj 15308 0 obj <> endobj 15309 0 obj <> endobj 15310 0 obj <> endobj 15311 0 obj <> endobj 15312 0 obj <> endobj 15313 0 obj <> endobj 15314 0 obj <> endobj 15315 0 obj <> endobj 15316 0 obj <> endobj 15317 0 obj <> endobj 15318 0 obj <> endobj 15319 0 obj <> endobj 15320 0 obj <> endobj 15321 0 obj <> endobj 15322 0 obj <> endobj 15323 0 obj <> endobj 15324 0 obj <> endobj 15325 0 obj <> endobj 15326 0 obj <> endobj 15327 0 obj <> endobj 15328 0 obj <> endobj 15329 0 obj <> endobj 15330 0 obj <> endobj 15331 0 obj <> endobj 15332 0 obj <> endobj 15333 0 obj <> endobj 15334 0 obj <> endobj 15335 0 obj <> endobj 15336 0 obj <> endobj 15337 0 obj <> endobj 15338 0 obj <> endobj 15339 0 obj <> endobj 15340 0 obj <> endobj 15341 0 obj <> endobj 15342 0 obj <> endobj 15343 0 obj <> endobj 15344 0 obj <> endobj 15345 0 obj <> endobj 15346 0 obj <> endobj 15347 0 obj <> endobj 15348 0 obj <> endobj 15349 0 obj <> endobj 15350 0 obj <> endobj 15351 0 obj <> endobj 15352 0 obj <> endobj 15353 0 obj <> endobj 15354 0 obj <> endobj 15355 0 obj <> endobj 15356 0 obj <> endobj 15357 0 obj <> endobj 15358 0 obj <> endobj 15359 0 obj <> endobj 15360 0 obj <> endobj 15361 0 obj <> endobj 15362 0 obj <> endobj 15363 0 obj <> endobj 15364 0 obj <> endobj 15365 0 obj <> endobj 15366 0 obj <> endobj 15367 0 obj <> endobj 15368 0 obj <> endobj 15369 0 obj <> endobj 15370 0 obj <> endobj 15371 0 obj <> endobj 15372 0 obj <> endobj 15373 0 obj <> endobj 15374 0 obj <> endobj 15375 0 obj <> endobj 15376 0 obj <> endobj 15377 0 obj <> endobj 15378 0 obj <> endobj 15379 0 obj <> endobj 15380 0 obj <> endobj 15381 0 obj <> endobj 15382 0 obj <> endobj 15383 0 obj <> endobj 15384 0 obj <> endobj 15385 0 obj <> endobj 15386 0 obj <> endobj 15387 0 obj <> endobj 15388 0 obj <> endobj 15389 0 obj <> endobj 15390 0 obj <> endobj 15391 0 obj <> endobj 15392 0 obj <> endobj 15393 0 obj <> endobj 15394 0 obj <> endobj 15395 0 obj <> endobj 15396 0 obj <> endobj 15397 0 obj <> endobj 15398 0 obj <> endobj 15399 0 obj <> endobj 15400 0 obj <> endobj 15401 0 obj <> endobj 15402 0 obj <> endobj 15403 0 obj <> endobj 15404 0 obj <> endobj 15405 0 obj <> endobj 15406 0 obj <> endobj 15407 0 obj <> endobj 15408 0 obj <> endobj 15409 0 obj <> endobj 15410 0 obj <> endobj 15411 0 obj <> endobj 15412 0 obj <> endobj 15413 0 obj <> endobj 15414 0 obj <> endobj 15415 0 obj <> endobj 15416 0 obj <> endobj 15417 0 obj <> endobj 15418 0 obj <> endobj 15419 0 obj <> endobj 15420 0 obj <> endobj 15421 0 obj <> endobj 15422 0 obj <> endobj 15423 0 obj <> endobj 15424 0 obj <> endobj 15425 0 obj <> endobj 15426 0 obj <> endobj 15427 0 obj <> endobj 15428 0 obj <> endobj 15429 0 obj <> endobj 15430 0 obj <> endobj 15431 0 obj <> endobj 15432 0 obj <> endobj 15433 0 obj <> endobj 15434 0 obj <> endobj 15435 0 obj <> endobj 15436 0 obj <> endobj 15437 0 obj <> endobj 15438 0 obj <> endobj 15439 0 obj <> endobj 15440 0 obj <> endobj 15441 0 obj <> endobj 15442 0 obj <> endobj 15443 0 obj <> endobj 15444 0 obj <> endobj 15445 0 obj <> endobj 15446 0 obj <> endobj 15447 0 obj <> endobj 15448 0 obj <> endobj 15449 0 obj <> endobj 15450 0 obj <> endobj 15451 0 obj <> endobj 15452 0 obj <> endobj 15453 0 obj <> endobj 15454 0 obj <> endobj 15455 0 obj <> endobj 15456 0 obj <> endobj 15457 0 obj <> endobj 15458 0 obj <> endobj 15459 0 obj <> endobj 15460 0 obj <> endobj 15461 0 obj <> endobj 15462 0 obj <> endobj 15463 0 obj <> endobj 15464 0 obj <> endobj 15465 0 obj <> endobj 15466 0 obj <> endobj 15467 0 obj <> endobj 15468 0 obj <> endobj 15469 0 obj <> endobj 15470 0 obj <> endobj 15471 0 obj <> endobj 15472 0 obj <> endobj 15473 0 obj <> endobj 15474 0 obj <> endobj 15475 0 obj <> endobj 15476 0 obj <> endobj 15477 0 obj <> endobj 15478 0 obj <> endobj 15479 0 obj <> endobj 15480 0 obj <> endobj 15481 0 obj <> endobj 15482 0 obj <> endobj 15483 0 obj <> endobj 15484 0 obj <> endobj 15485 0 obj <> endobj 15486 0 obj <> endobj 15487 0 obj <> endobj 15488 0 obj <> endobj 15489 0 obj <> endobj 15490 0 obj <> endobj 15491 0 obj <> endobj 15492 0 obj <> endobj 15493 0 obj <> endobj 15494 0 obj <> endobj 15495 0 obj <> endobj 15496 0 obj <> endobj 15497 0 obj <> endobj 15498 0 obj <> endobj 15499 0 obj <> endobj 15500 0 obj <> endobj 15501 0 obj <> endobj 15502 0 obj <> endobj 15503 0 obj <> endobj 15504 0 obj <> endobj 15505 0 obj <> endobj 15506 0 obj <> endobj 15507 0 obj <> endobj 15508 0 obj <> endobj 15509 0 obj <> endobj 15510 0 obj <> endobj 15511 0 obj <> endobj 15512 0 obj <> endobj 15513 0 obj <> endobj 15514 0 obj <> endobj 15515 0 obj <> endobj 15516 0 obj <> endobj 15517 0 obj <> endobj 15518 0 obj <> endobj 15519 0 obj <> endobj 15520 0 obj <> endobj 15521 0 obj <> endobj 15522 0 obj <> endobj 15523 0 obj <> endobj 15524 0 obj <> endobj 15525 0 obj <> endobj 15526 0 obj <> endobj 15527 0 obj <> endobj 15528 0 obj <> endobj 15529 0 obj <> endobj 15530 0 obj <> endobj 15531 0 obj <> endobj 15532 0 obj <> endobj 15533 0 obj <> endobj 15534 0 obj <> endobj 15535 0 obj <> endobj 15536 0 obj <> endobj 15537 0 obj <> endobj 15538 0 obj <> endobj 15539 0 obj <> endobj 15540 0 obj <> endobj 15541 0 obj <> endobj 15542 0 obj <> endobj 15543 0 obj <> endobj 15544 0 obj <> endobj 15545 0 obj <> endobj 15546 0 obj <> endobj 15547 0 obj <> endobj 15548 0 obj <> endobj 15549 0 obj <> endobj 15550 0 obj <> endobj 15551 0 obj <> endobj 15552 0 obj <> endobj 15553 0 obj <> endobj 15554 0 obj <> endobj 15555 0 obj <> endobj 15556 0 obj <> endobj 15557 0 obj <> endobj 15558 0 obj <> endobj 15559 0 obj <> endobj 15560 0 obj <> endobj 15561 0 obj <> endobj 15562 0 obj <> endobj 15563 0 obj <> endobj 15564 0 obj <> endobj 15565 0 obj <> endobj 15566 0 obj <> endobj 15567 0 obj <> endobj 15568 0 obj <> endobj 15569 0 obj <> endobj 15570 0 obj <> endobj 15571 0 obj <> endobj 15572 0 obj <> endobj 15573 0 obj <> endobj 15574 0 obj <> endobj 15575 0 obj <> endobj 15576 0 obj <> endobj 15577 0 obj <> endobj 15578 0 obj <> endobj 15579 0 obj <> endobj 15580 0 obj <> endobj 15581 0 obj <> endobj 15582 0 obj <> endobj 15583 0 obj <> endobj 15584 0 obj <> endobj 15585 0 obj <> endobj 15586 0 obj <> endobj 15587 0 obj <> endobj 15588 0 obj <> endobj 15589 0 obj <> endobj 15590 0 obj <> endobj 15591 0 obj <> endobj 15592 0 obj <> endobj 15593 0 obj <> endobj 15594 0 obj <> endobj 15595 0 obj <> endobj 15596 0 obj <> endobj 15597 0 obj <> endobj 15598 0 obj <> endobj 15599 0 obj <> endobj 15600 0 obj <> endobj 15601 0 obj <> endobj 15602 0 obj <> endobj 15603 0 obj <> endobj 15604 0 obj <> endobj 15605 0 obj <> endobj 15606 0 obj <> endobj 15607 0 obj <> endobj 15608 0 obj <> endobj 15609 0 obj <> endobj 15610 0 obj <> endobj 15611 0 obj <> endobj 15612 0 obj <> endobj 15613 0 obj <> endobj 15614 0 obj <> endobj 15615 0 obj <> endobj 15616 0 obj <> endobj 15617 0 obj <> endobj 15618 0 obj <> endobj 15619 0 obj <> endobj 15620 0 obj <> endobj 15621 0 obj <> endobj 15622 0 obj <> endobj 15623 0 obj <> endobj 15624 0 obj <> endobj 15625 0 obj <> endobj 15626 0 obj <> endobj 15627 0 obj <> endobj 15628 0 obj <> endobj 15629 0 obj <> endobj 15630 0 obj <> endobj 15631 0 obj <> endobj 15632 0 obj <> endobj 15633 0 obj <> endobj 15634 0 obj <> endobj 15635 0 obj <> endobj 15636 0 obj <> endobj 15637 0 obj <> endobj 15638 0 obj <> endobj 15639 0 obj <> endobj 15640 0 obj <> endobj 15641 0 obj <> endobj 15642 0 obj <> endobj 15643 0 obj <> endobj 15644 0 obj <> endobj 15645 0 obj <> endobj 15646 0 obj <> endobj 15647 0 obj <> endobj 15648 0 obj <> endobj 15649 0 obj <> endobj 15650 0 obj <> endobj 15651 0 obj <> endobj 15652 0 obj <> endobj 15653 0 obj <> endobj 15654 0 obj <> endobj 15655 0 obj <> endobj 15656 0 obj <> endobj 15657 0 obj <> endobj 15658 0 obj <> endobj 15659 0 obj <> endobj 15660 0 obj <> endobj 15661 0 obj <> endobj 15662 0 obj <> endobj 15663 0 obj <> endobj 15664 0 obj <> endobj 15665 0 obj <> endobj 15666 0 obj <> endobj 15667 0 obj <> endobj 15668 0 obj <> endobj 15669 0 obj <> endobj 15670 0 obj <> endobj 15671 0 obj <> endobj 15672 0 obj <> endobj 15673 0 obj <> endobj 15674 0 obj <> endobj 15675 0 obj <> endobj 15676 0 obj <> endobj 15677 0 obj <> endobj 15678 0 obj <> endobj 15679 0 obj <> endobj 15680 0 obj <> endobj 15681 0 obj <> endobj 15682 0 obj <> endobj 15683 0 obj <> endobj 15684 0 obj <> endobj 15685 0 obj <> endobj 15686 0 obj <> endobj 15687 0 obj <> endobj 15688 0 obj <> endobj 15689 0 obj <> endobj 15690 0 obj <> endobj 15691 0 obj <> endobj 15692 0 obj <> endobj 15693 0 obj <> endobj 15694 0 obj <> endobj 15695 0 obj <> endobj 15696 0 obj <> endobj 15697 0 obj <> endobj 15698 0 obj <> endobj 15699 0 obj <> endobj 15700 0 obj <> endobj 15701 0 obj <> endobj 15702 0 obj <> endobj 15703 0 obj <> endobj 15704 0 obj <> endobj 15705 0 obj <> endobj 15706 0 obj <> endobj 15707 0 obj <> endobj 15708 0 obj <> endobj 15709 0 obj <> endobj 15710 0 obj <> endobj 15711 0 obj <> endobj 15712 0 obj <> endobj 15713 0 obj <> endobj 15714 0 obj <> endobj 15715 0 obj <> endobj 15716 0 obj <> endobj 15717 0 obj <> endobj 15718 0 obj <> endobj 15719 0 obj <> endobj 15720 0 obj <> endobj 15721 0 obj <> endobj 15722 0 obj <> endobj 15723 0 obj <> endobj 15724 0 obj <> endobj 15725 0 obj <> endobj 15726 0 obj <> endobj 15727 0 obj <> endobj 15728 0 obj <> endobj 15729 0 obj <> endobj 15730 0 obj <> endobj 15731 0 obj <> endobj 15732 0 obj <> endobj 15733 0 obj <> endobj 15734 0 obj <> endobj 15735 0 obj <> endobj 15736 0 obj <> endobj 15737 0 obj <> endobj 15738 0 obj <> endobj 15739 0 obj <> endobj 15740 0 obj <> endobj 15741 0 obj <> endobj 15742 0 obj <> endobj 15743 0 obj <> endobj 15744 0 obj <> endobj 15745 0 obj <> endobj 15746 0 obj <> endobj 15747 0 obj <> endobj 15748 0 obj <> endobj 15749 0 obj <> endobj 15750 0 obj <> endobj 15751 0 obj <> endobj 15752 0 obj <> endobj 15753 0 obj <> endobj 15754 0 obj <> endobj 15755 0 obj <> endobj 15756 0 obj <> endobj 15757 0 obj <> endobj 15758 0 obj <> endobj 15759 0 obj <> endobj 15760 0 obj <> endobj 15761 0 obj <> endobj 15762 0 obj <> endobj 15763 0 obj <> endobj 15764 0 obj <> endobj 15765 0 obj <> endobj 15766 0 obj <> endobj 15767 0 obj <> endobj 15768 0 obj <> endobj 15769 0 obj <> endobj 15770 0 obj <> endobj 15771 0 obj <> endobj 15772 0 obj <> endobj 15773 0 obj <> endobj 15774 0 obj <> endobj 15775 0 obj <> endobj 15776 0 obj <> endobj 15777 0 obj <> endobj 15778 0 obj <> endobj 15779 0 obj <> endobj 15780 0 obj <> endobj 15781 0 obj <> endobj 15782 0 obj <> endobj 15783 0 obj <> endobj 15784 0 obj <> endobj 15785 0 obj <> endobj 15786 0 obj <> endobj 15787 0 obj <> endobj 15788 0 obj <> endobj 15789 0 obj <> endobj 15790 0 obj <> endobj 15791 0 obj <> endobj 15792 0 obj <> endobj 15793 0 obj <> endobj 15794 0 obj <> endobj 15795 0 obj <> endobj 15796 0 obj <> endobj 15797 0 obj <> endobj 15798 0 obj <> endobj 15799 0 obj <> endobj 15800 0 obj <> endobj 15801 0 obj <> endobj 15802 0 obj <> endobj 15803 0 obj <> endobj 15804 0 obj <> endobj 15805 0 obj <> endobj 15806 0 obj <> endobj 15807 0 obj <> endobj 15808 0 obj <> endobj 15809 0 obj <> endobj 15810 0 obj <> endobj 15811 0 obj <> endobj 15812 0 obj <> endobj 15813 0 obj <> endobj 15814 0 obj <> endobj 15815 0 obj <> endobj 15816 0 obj <> endobj 15817 0 obj <> endobj 15818 0 obj <> endobj 15819 0 obj <> endobj 15820 0 obj <> endobj 15821 0 obj <> endobj 15822 0 obj <> endobj 15823 0 obj <> endobj 15824 0 obj <> endobj 15825 0 obj <> endobj 15826 0 obj <> endobj 15827 0 obj <> endobj 15828 0 obj <> endobj 15829 0 obj <> endobj 15830 0 obj <> endobj 15831 0 obj <> endobj 15832 0 obj <> endobj 15833 0 obj <> endobj 15834 0 obj <> endobj 15835 0 obj <> endobj 15836 0 obj <> endobj 15837 0 obj <> endobj 15838 0 obj <> endobj 15839 0 obj <> endobj 15840 0 obj <> endobj 15841 0 obj <> endobj 15842 0 obj <> endobj 15843 0 obj <> endobj 15844 0 obj <> endobj 15845 0 obj <> endobj 15846 0 obj <> endobj 15847 0 obj <> endobj 15848 0 obj <> endobj 15849 0 obj <> endobj 15850 0 obj <> endobj 15851 0 obj <> endobj 15852 0 obj <> endobj 15853 0 obj <> endobj 15854 0 obj <> endobj 15855 0 obj <> endobj 15856 0 obj <> endobj 15857 0 obj <> endobj 15858 0 obj <> endobj 15859 0 obj <> endobj 15860 0 obj <> endobj 15861 0 obj <> endobj 15862 0 obj <> endobj 15863 0 obj <> endobj 15864 0 obj <> endobj 15865 0 obj <> endobj 15866 0 obj <> endobj 15867 0 obj <> endobj 15868 0 obj <> endobj 15869 0 obj <> endobj 15870 0 obj <> endobj 15871 0 obj <> endobj 15872 0 obj <> endobj 15873 0 obj <> endobj 15874 0 obj <> endobj 15875 0 obj <> endobj 15876 0 obj <> endobj 15877 0 obj <> endobj 15878 0 obj <> endobj 15879 0 obj <> endobj 15880 0 obj <> endobj 15881 0 obj <> endobj 15882 0 obj <> endobj 15883 0 obj <> endobj 15884 0 obj <> endobj 15885 0 obj <> endobj 15886 0 obj <> endobj 15887 0 obj <> endobj 15888 0 obj <> endobj 15889 0 obj <> endobj 15890 0 obj <> endobj 15891 0 obj <> endobj 15892 0 obj <> endobj 15893 0 obj <> endobj 15894 0 obj <> endobj 15895 0 obj <> endobj 15896 0 obj <> endobj 15897 0 obj <> endobj 15898 0 obj <> endobj 15899 0 obj <> endobj 15900 0 obj <> endobj 15901 0 obj <> endobj 15902 0 obj <> endobj 15903 0 obj <> endobj 15904 0 obj <> endobj 15905 0 obj <> endobj 15906 0 obj <> endobj 15907 0 obj <> endobj 15908 0 obj <> endobj 15909 0 obj <> endobj 15910 0 obj <> endobj 15911 0 obj <> endobj 15912 0 obj <> endobj 15913 0 obj <> endobj 15914 0 obj <> endobj 15915 0 obj <> endobj 15916 0 obj <> endobj 15917 0 obj <> endobj 15918 0 obj <> endobj 15919 0 obj <> endobj 15920 0 obj <> endobj 15921 0 obj <> endobj 15922 0 obj <> endobj 15923 0 obj <> endobj 15924 0 obj <> endobj 15925 0 obj <> endobj 15926 0 obj <> endobj 15927 0 obj <> endobj 15928 0 obj <> endobj 15929 0 obj <> endobj 15930 0 obj <> endobj 15931 0 obj <> endobj 15932 0 obj <> endobj 15933 0 obj <> endobj 15934 0 obj <> endobj 15935 0 obj <> endobj 15936 0 obj <> endobj 15937 0 obj <> endobj 15938 0 obj <> endobj 15939 0 obj <> endobj 15940 0 obj <> endobj 15941 0 obj <> endobj 15942 0 obj <> endobj 15943 0 obj <> endobj 15944 0 obj <> endobj 15945 0 obj <> endobj 15946 0 obj <> endobj 15947 0 obj <> endobj 15948 0 obj <> endobj 15949 0 obj <> endobj 15950 0 obj <> endobj 15951 0 obj <> endobj 15952 0 obj <> endobj 15953 0 obj <> endobj 15954 0 obj <> endobj 15955 0 obj <> endobj 15956 0 obj <> endobj 15957 0 obj <> endobj 15958 0 obj <> endobj 15959 0 obj <> endobj 15960 0 obj <> endobj 15961 0 obj <> endobj 15962 0 obj <> endobj 15963 0 obj <> endobj 15964 0 obj <> endobj 15965 0 obj <> endobj 15966 0 obj <> endobj 15967 0 obj <> endobj 15968 0 obj <> endobj 15969 0 obj <> endobj 15970 0 obj <> endobj 15971 0 obj <> endobj 15972 0 obj <> endobj 15973 0 obj <> endobj 15974 0 obj <> endobj 15975 0 obj <> endobj 15976 0 obj <> endobj 15977 0 obj <> endobj 15978 0 obj <> endobj 15979 0 obj <> endobj 15980 0 obj <> endobj 15981 0 obj <> endobj 15982 0 obj <> endobj 15983 0 obj <> endobj 15984 0 obj <> endobj 15985 0 obj <> endobj 15986 0 obj <> endobj 15987 0 obj <> endobj 15988 0 obj <> endobj 15989 0 obj <> endobj 15990 0 obj <> endobj 15991 0 obj <> endobj 15992 0 obj <> endobj 15993 0 obj <> endobj 15994 0 obj <> endobj 15995 0 obj <> endobj 15996 0 obj <> endobj 15997 0 obj <> endobj 15998 0 obj <> endobj 15999 0 obj <> endobj 16000 0 obj <> endobj 16001 0 obj <> endobj 16002 0 obj <> endobj 16003 0 obj <> endobj 16004 0 obj <> endobj 16005 0 obj <> endobj 16006 0 obj <> endobj 16007 0 obj <> endobj 16008 0 obj <> endobj 16009 0 obj <> endobj 16010 0 obj <> endobj 16011 0 obj <> endobj 16012 0 obj <> endobj 16013 0 obj <> endobj 16014 0 obj <> endobj 16015 0 obj <> endobj 16016 0 obj <> endobj 16017 0 obj <> endobj 16018 0 obj <> endobj 16019 0 obj <> endobj 16020 0 obj <> endobj 16021 0 obj <> endobj 16022 0 obj <> endobj 16023 0 obj <> endobj 16024 0 obj <> endobj 16025 0 obj <> endobj 16026 0 obj <> endobj 16027 0 obj <> endobj 16028 0 obj <> endobj 16029 0 obj <> endobj 16030 0 obj <> endobj 16031 0 obj <> endobj 16032 0 obj <> endobj 16033 0 obj <> endobj 16034 0 obj <> endobj 16035 0 obj <> endobj 16036 0 obj <> endobj 16037 0 obj <> endobj 16038 0 obj <> endobj 16039 0 obj <> endobj 16040 0 obj <> endobj 16041 0 obj <> endobj 16042 0 obj <> endobj 16043 0 obj <> endobj 16044 0 obj <> endobj 16045 0 obj <> endobj 16046 0 obj <> endobj 16047 0 obj <> endobj 16048 0 obj <> endobj 16049 0 obj <> endobj 16050 0 obj <> endobj 16051 0 obj <> endobj 16052 0 obj <> endobj 16053 0 obj <> endobj 16054 0 obj <> endobj 16055 0 obj <> endobj 16056 0 obj <> endobj 16057 0 obj <> endobj 16058 0 obj <> endobj 16059 0 obj <> endobj 16060 0 obj <> endobj 16061 0 obj <> endobj 16062 0 obj <> endobj 16063 0 obj <> endobj 16064 0 obj <> endobj 16065 0 obj <> endobj 16066 0 obj <> endobj 16067 0 obj <> endobj 16068 0 obj <> endobj 16069 0 obj <> endobj 16070 0 obj <> endobj 16071 0 obj <> endobj 16072 0 obj <> endobj 16073 0 obj <> endobj 16074 0 obj <> endobj 16075 0 obj <> endobj 16076 0 obj <> endobj 16077 0 obj <> endobj 16078 0 obj <> endobj 16079 0 obj <> endobj 16080 0 obj <> endobj 16081 0 obj <> endobj 16082 0 obj <> endobj 16083 0 obj <> endobj 16084 0 obj <> endobj 16085 0 obj <> endobj 16086 0 obj <> endobj 16087 0 obj <> endobj 16088 0 obj <> endobj 16089 0 obj <> endobj 16090 0 obj <> endobj 16091 0 obj <> endobj 16092 0 obj <> endobj 16093 0 obj <> endobj 16094 0 obj <> endobj 16095 0 obj <> endobj 16096 0 obj <> endobj 16097 0 obj <> endobj 16098 0 obj <> endobj 16099 0 obj <> endobj 16100 0 obj <> endobj 16101 0 obj <> endobj 16102 0 obj <> endobj 16103 0 obj <> endobj 16104 0 obj <> endobj 16105 0 obj <> endobj 16106 0 obj <> endobj 16107 0 obj <> endobj 16108 0 obj <> endobj 16109 0 obj <> endobj 16110 0 obj <> endobj 16111 0 obj <> endobj 16112 0 obj <> endobj 16113 0 obj <> endobj 16114 0 obj <> endobj 16115 0 obj <> endobj 16116 0 obj <> endobj 16117 0 obj <> endobj 16118 0 obj <> endobj 16119 0 obj <> endobj 16120 0 obj <> endobj 16121 0 obj <> endobj 16122 0 obj <> endobj 16123 0 obj <> endobj 16124 0 obj <> endobj 16125 0 obj <> endobj 16126 0 obj <> endobj 16127 0 obj <> endobj 16128 0 obj <> endobj 16129 0 obj <> endobj 16130 0 obj <> endobj 16131 0 obj <> endobj 16132 0 obj <> endobj 16133 0 obj <> endobj 16134 0 obj <> endobj 16135 0 obj <> endobj 16136 0 obj <> endobj 16137 0 obj <> endobj 16138 0 obj <> endobj 16139 0 obj <> endobj 16140 0 obj <> endobj 16141 0 obj <> endobj 16142 0 obj <> endobj 16143 0 obj <> endobj 16144 0 obj <> endobj 16145 0 obj <> endobj 16146 0 obj <> endobj 16147 0 obj <> endobj 16148 0 obj <> endobj 16149 0 obj <> endobj 16150 0 obj <> endobj 16151 0 obj <> endobj 16152 0 obj <> endobj 16153 0 obj <> endobj 16154 0 obj <> endobj 16155 0 obj <> endobj 16156 0 obj <> endobj 16157 0 obj <> endobj 16158 0 obj <> endobj 16159 0 obj <> endobj 16160 0 obj <> endobj 16161 0 obj <> endobj 16162 0 obj <> endobj 16163 0 obj <> endobj 16164 0 obj <> endobj 16165 0 obj <> endobj 16166 0 obj <> endobj 16167 0 obj <> endobj 16168 0 obj <> endobj 16169 0 obj <> endobj 16170 0 obj <> endobj 16171 0 obj <> endobj 16172 0 obj <> endobj 16173 0 obj <> endobj 16174 0 obj <> endobj 16175 0 obj <> endobj 16176 0 obj <> endobj 16177 0 obj <> endobj 16178 0 obj <> endobj 16179 0 obj <> endobj 16180 0 obj <> endobj 16181 0 obj <> endobj 16182 0 obj <> endobj 16183 0 obj <> endobj 16184 0 obj <> endobj 16185 0 obj <> endobj 16186 0 obj <> endobj 16187 0 obj <> endobj 16188 0 obj <> endobj 16189 0 obj <> endobj 16190 0 obj <> endobj 16191 0 obj <> endobj 16192 0 obj <> endobj 16193 0 obj <> endobj 16194 0 obj <> endobj 16195 0 obj <> endobj 16196 0 obj <> endobj 16197 0 obj <> endobj 16198 0 obj <> endobj 16199 0 obj <> endobj 16200 0 obj <> endobj 16201 0 obj <> endobj 16202 0 obj <> endobj 16203 0 obj <> endobj 16204 0 obj <> endobj 16205 0 obj <> endobj 16206 0 obj <> endobj 16207 0 obj <> endobj 16208 0 obj <> endobj 16209 0 obj <> endobj 16210 0 obj <> endobj 16211 0 obj <> endobj 16212 0 obj <> endobj 16213 0 obj <> endobj 16214 0 obj <> endobj 16215 0 obj <> endobj 16216 0 obj <> endobj 16217 0 obj <> endobj 16218 0 obj <> endobj 16219 0 obj <> endobj 16220 0 obj <> endobj 16221 0 obj <> endobj 16222 0 obj <> endobj 16223 0 obj <> endobj 16224 0 obj <> endobj 16225 0 obj <> endobj 16226 0 obj <> endobj 16227 0 obj <> endobj 16228 0 obj <> endobj 16229 0 obj <> endobj 16230 0 obj <> endobj 16231 0 obj <> endobj 16232 0 obj <> endobj 16233 0 obj <> endobj 16234 0 obj <> endobj 16235 0 obj <> endobj 16236 0 obj <> endobj 16237 0 obj <> endobj 16238 0 obj <> endobj 16239 0 obj <> endobj 16240 0 obj <> endobj 16241 0 obj <> endobj 16242 0 obj <> endobj 16243 0 obj <> endobj 16244 0 obj <> endobj 16245 0 obj <> endobj 16246 0 obj <> endobj 16247 0 obj <> endobj 16248 0 obj <> endobj 16249 0 obj <> endobj 16250 0 obj <> endobj 16251 0 obj <> endobj 16252 0 obj <> endobj 16253 0 obj <> endobj 16254 0 obj <> endobj 16255 0 obj <> endobj 16256 0 obj <> endobj 16257 0 obj <> endobj 16258 0 obj <> endobj 16259 0 obj <> endobj 16260 0 obj <> endobj 16261 0 obj <> endobj 16262 0 obj <> endobj 16263 0 obj <> endobj 16264 0 obj <> endobj 16265 0 obj <> endobj 16266 0 obj <> endobj 16267 0 obj <> endobj 16268 0 obj <> endobj 16269 0 obj <> endobj 16270 0 obj <> endobj 16271 0 obj <> endobj 16272 0 obj <> endobj 16273 0 obj <> endobj 16274 0 obj <> endobj 16275 0 obj <> endobj 16276 0 obj <> endobj 16277 0 obj <> endobj 16278 0 obj <> endobj 16279 0 obj <> endobj 16280 0 obj <> endobj 16281 0 obj <> endobj 16282 0 obj <> endobj 16283 0 obj <> endobj 16284 0 obj <> endobj 16285 0 obj <> endobj 16286 0 obj <> endobj 16287 0 obj <> endobj 16288 0 obj <> endobj 16289 0 obj <> endobj 16290 0 obj <> endobj 16291 0 obj <> endobj 16292 0 obj <> endobj 16293 0 obj <> endobj 16294 0 obj <> endobj 16295 0 obj <> endobj 16296 0 obj <> endobj 16297 0 obj <> endobj 16298 0 obj <> endobj 16299 0 obj <> endobj 16300 0 obj <> endobj 16301 0 obj <> endobj 16302 0 obj <> endobj 16303 0 obj <> endobj 16304 0 obj <> endobj 16305 0 obj <> endobj 16306 0 obj <> endobj 16307 0 obj <> endobj 16308 0 obj <> endobj 16309 0 obj <> endobj 16310 0 obj <> endobj 16311 0 obj <> endobj 16312 0 obj <> endobj 16313 0 obj <> endobj 16314 0 obj <> endobj 16315 0 obj <> endobj 16316 0 obj <> endobj 16317 0 obj <> endobj 16318 0 obj <> endobj 16319 0 obj <> endobj 16320 0 obj <> endobj 16321 0 obj <> endobj 16322 0 obj <> endobj 16323 0 obj <> endobj 16324 0 obj <> endobj 16325 0 obj <> endobj 16326 0 obj <> endobj 16327 0 obj <> endobj 16328 0 obj <> endobj 16329 0 obj <> endobj 16330 0 obj <> endobj 16331 0 obj <> endobj 16332 0 obj <> endobj 16333 0 obj <> endobj 16334 0 obj <> endobj 16335 0 obj <> endobj 16336 0 obj <> endobj 16337 0 obj <> endobj 16338 0 obj <> endobj 16339 0 obj <> endobj 16340 0 obj <> endobj 16341 0 obj <> endobj 16342 0 obj <> endobj 16343 0 obj <> endobj 16344 0 obj <> endobj 16345 0 obj <> endobj 16346 0 obj <> endobj 16347 0 obj <> endobj 16348 0 obj <> endobj 16349 0 obj <> endobj 16350 0 obj <> endobj 16351 0 obj <> endobj 16352 0 obj <> endobj 16353 0 obj <> endobj 16354 0 obj <> endobj 16355 0 obj <> endobj 16356 0 obj <> endobj 16357 0 obj <> endobj 16358 0 obj <> endobj 16359 0 obj <> endobj 16360 0 obj <> endobj 16361 0 obj <> endobj 16362 0 obj <> endobj 16363 0 obj <> endobj 16364 0 obj <> endobj 16365 0 obj <> endobj 16366 0 obj <> endobj 16367 0 obj <> endobj 16368 0 obj <> endobj 16369 0 obj <> endobj 16370 0 obj <> endobj 16371 0 obj <> endobj 16372 0 obj <> endobj 16373 0 obj <> endobj 16374 0 obj <> endobj 16375 0 obj <> endobj 16376 0 obj <> endobj 16377 0 obj <> endobj 16378 0 obj <> endobj 16379 0 obj <> endobj 16380 0 obj <> endobj 16381 0 obj <> endobj 16382 0 obj <> endobj 16383 0 obj <> endobj 16384 0 obj <> endobj 16385 0 obj <> endobj 16386 0 obj <> endobj 16387 0 obj <> endobj 16388 0 obj <> endobj 16389 0 obj <> endobj 16390 0 obj <> endobj 16391 0 obj <> endobj 16392 0 obj <> endobj 16393 0 obj <> endobj 16394 0 obj <> endobj 16395 0 obj <> endobj 16396 0 obj <> endobj 16397 0 obj <> endobj 16398 0 obj <> endobj 16399 0 obj <> endobj 16400 0 obj <> endobj 16401 0 obj <> endobj 16402 0 obj <> endobj 16403 0 obj <> endobj 16404 0 obj <> endobj 16405 0 obj <> endobj 16406 0 obj <> endobj 16407 0 obj <> endobj 16408 0 obj <> endobj 16409 0 obj <> endobj 16410 0 obj <> endobj 16411 0 obj <> endobj 16412 0 obj <> endobj 16413 0 obj <> endobj 16414 0 obj <> endobj 16415 0 obj <> endobj 16416 0 obj <> endobj 16417 0 obj <> endobj 16418 0 obj <> endobj 16419 0 obj <> endobj 16420 0 obj <> endobj 16421 0 obj <> endobj 16422 0 obj <> endobj 16423 0 obj <> endobj 16424 0 obj <> endobj 16425 0 obj <> endobj 16426 0 obj <> endobj 16427 0 obj <> endobj 16428 0 obj <> endobj 16429 0 obj <> endobj 16430 0 obj <> endobj 16431 0 obj <> endobj 16432 0 obj <> endobj 16433 0 obj <> endobj 16434 0 obj <> endobj 16435 0 obj <> endobj 16436 0 obj <> endobj 16437 0 obj <> endobj 16438 0 obj <> endobj 16439 0 obj <> endobj 16440 0 obj <> endobj 16441 0 obj <> endobj 16442 0 obj <> endobj 16443 0 obj <> endobj 16444 0 obj <> endobj 16445 0 obj <> endobj 16446 0 obj <> endobj 16447 0 obj <> endobj 16448 0 obj <> endobj 16449 0 obj <> endobj 16450 0 obj <> endobj 16451 0 obj <> endobj 16452 0 obj <> endobj 16453 0 obj <> endobj 16454 0 obj <> endobj 16455 0 obj <> endobj 16456 0 obj <> endobj 16457 0 obj <> endobj 16458 0 obj <> endobj 16459 0 obj <> endobj 16460 0 obj <> endobj 16461 0 obj <> endobj 16462 0 obj <> endobj 16463 0 obj <> endobj 16464 0 obj <> endobj 16465 0 obj <> endobj 16466 0 obj <> endobj 16467 0 obj <> endobj 16468 0 obj <> endobj 16469 0 obj <> endobj 16470 0 obj <> endobj 16471 0 obj <> endobj 16472 0 obj <> endobj 16473 0 obj <> endobj 16474 0 obj <> endobj 16475 0 obj <> endobj 16476 0 obj <> endobj 16477 0 obj <> endobj 16478 0 obj <> endobj 16479 0 obj <> endobj 16480 0 obj <> endobj 16481 0 obj <> endobj 16482 0 obj <> endobj 16483 0 obj <> endobj 16484 0 obj <> endobj 16485 0 obj <> endobj 16486 0 obj <> endobj 16487 0 obj <> endobj 16488 0 obj <> endobj 16489 0 obj <> endobj 16490 0 obj <> endobj 16491 0 obj <> endobj 16492 0 obj <> endobj 16493 0 obj <> endobj 16494 0 obj <> endobj 16495 0 obj <> endobj 16496 0 obj <> endobj 16497 0 obj <> endobj 16498 0 obj <> endobj 16499 0 obj <> endobj 16500 0 obj <> endobj 16501 0 obj <> endobj 16502 0 obj <> endobj 16503 0 obj <> endobj 16504 0 obj <> endobj 16505 0 obj <> endobj 16506 0 obj <> endobj 16507 0 obj <> endobj 16508 0 obj <> endobj 16509 0 obj <> endobj 16510 0 obj <> endobj 16511 0 obj <> endobj 16512 0 obj <> endobj 16513 0 obj <> endobj 16514 0 obj <> endobj 16515 0 obj <> endobj 16516 0 obj <> endobj 16517 0 obj <> endobj 16518 0 obj <> endobj 16519 0 obj <> endobj 16520 0 obj <> endobj 16521 0 obj <> endobj 16522 0 obj <> endobj 16523 0 obj <> endobj 16524 0 obj <> endobj 16525 0 obj <> endobj 16526 0 obj <> endobj 16527 0 obj <> endobj 16528 0 obj <> endobj 16529 0 obj <> endobj 16530 0 obj <> endobj 16531 0 obj <> endobj 16532 0 obj <> endobj 16533 0 obj <> endobj 16534 0 obj <> endobj 16535 0 obj <> endobj 16536 0 obj <> endobj 16537 0 obj <> endobj 16538 0 obj <> endobj 16539 0 obj <> endobj 16540 0 obj <> endobj 16541 0 obj <> endobj 16542 0 obj <> endobj 16543 0 obj <> endobj 16544 0 obj <> endobj 16545 0 obj <> endobj 16546 0 obj <> endobj 16547 0 obj <> endobj 16548 0 obj <> endobj 16549 0 obj <> endobj 16550 0 obj <> endobj 16551 0 obj <> endobj 16552 0 obj <> endobj 16553 0 obj <> endobj 16554 0 obj <> endobj 16555 0 obj <> endobj 16556 0 obj <> endobj 16557 0 obj <> endobj 16558 0 obj <> endobj 16559 0 obj <> endobj 16560 0 obj <> endobj 16561 0 obj <> endobj 16562 0 obj <> endobj 16563 0 obj <> endobj 16564 0 obj <> endobj 16565 0 obj <> endobj 16566 0 obj <> endobj 16567 0 obj <> endobj 16568 0 obj <> endobj 16569 0 obj <> endobj 16570 0 obj <> endobj 16571 0 obj <> endobj 16572 0 obj <> endobj 16573 0 obj <> endobj 16574 0 obj <> endobj 16575 0 obj <> endobj 16576 0 obj <> endobj 16577 0 obj <> endobj 16578 0 obj <> endobj 16579 0 obj <> endobj 16580 0 obj <> endobj 16581 0 obj <> endobj 16582 0 obj <> endobj 16583 0 obj <> endobj 16584 0 obj <> endobj 16585 0 obj <> endobj 16586 0 obj <> endobj 16587 0 obj <> endobj 16588 0 obj <> endobj 16589 0 obj <> endobj 16590 0 obj <> endobj 16591 0 obj <> endobj 16592 0 obj <> endobj 16593 0 obj <> endobj 16594 0 obj <> endobj 16595 0 obj <> endobj 16596 0 obj <> endobj 16597 0 obj <> endobj 16598 0 obj <> endobj 16599 0 obj <> endobj 16600 0 obj <> endobj 16601 0 obj <> endobj 16602 0 obj <> endobj 16603 0 obj <> endobj 16604 0 obj <> endobj 16605 0 obj <> endobj 16606 0 obj <> endobj 16607 0 obj <> endobj 16608 0 obj <> endobj 16609 0 obj <> endobj 16610 0 obj <> endobj 16611 0 obj <> endobj 16612 0 obj <> endobj 16613 0 obj <> endobj 16614 0 obj <> endobj 16615 0 obj <> endobj 16616 0 obj <> endobj 16617 0 obj <> endobj 16618 0 obj <> endobj 16619 0 obj <> endobj 16620 0 obj <> endobj 16621 0 obj <> endobj 16622 0 obj <> endobj 16623 0 obj <> endobj 16624 0 obj <> endobj 16625 0 obj <> endobj 16626 0 obj <> endobj 16627 0 obj <> endobj 16628 0 obj <> endobj 16629 0 obj <> endobj 16630 0 obj <> endobj 16631 0 obj <> endobj 16632 0 obj <> endobj 16633 0 obj <> endobj 16634 0 obj <> endobj 16635 0 obj <> endobj 16636 0 obj <> endobj 16637 0 obj <> endobj 16638 0 obj <> endobj 16639 0 obj <> endobj 16640 0 obj <> endobj 16641 0 obj <> endobj 16642 0 obj <> endobj 16643 0 obj <> endobj 16644 0 obj <> endobj 16645 0 obj <> endobj 16646 0 obj <> endobj 16647 0 obj <> endobj 16648 0 obj <> endobj 16649 0 obj <> endobj 16650 0 obj <> endobj 16651 0 obj <> endobj 16652 0 obj <> endobj 16653 0 obj <> endobj 16654 0 obj <> endobj 16655 0 obj <> endobj 16656 0 obj <> endobj 16657 0 obj <> endobj 16658 0 obj <> endobj 16659 0 obj <> endobj 16660 0 obj <> endobj 16661 0 obj <> endobj 16662 0 obj <> endobj 16663 0 obj <> endobj 16664 0 obj <> endobj 16665 0 obj <> endobj 16666 0 obj <> endobj 16667 0 obj <> endobj 16668 0 obj <> endobj 16669 0 obj <> endobj 16670 0 obj <> endobj 16671 0 obj <> endobj 16672 0 obj <> endobj 16673 0 obj <> endobj 16674 0 obj <> endobj 16675 0 obj <> endobj 16676 0 obj <> endobj 16677 0 obj <> endobj 16678 0 obj <> endobj 16679 0 obj <> endobj 16680 0 obj <> endobj 16681 0 obj <> endobj 16682 0 obj <> endobj 16683 0 obj <> endobj 16684 0 obj <> endobj 16685 0 obj <> endobj 16686 0 obj <> endobj 16687 0 obj <> endobj 16688 0 obj <> endobj 16689 0 obj <> endobj 16690 0 obj <> endobj 16691 0 obj <> endobj 16692 0 obj <> endobj 16693 0 obj <> endobj 16694 0 obj <> endobj 16695 0 obj <> endobj 16696 0 obj <> endobj 16697 0 obj <> endobj 16698 0 obj <> endobj 16699 0 obj <> endobj 16700 0 obj <> endobj 16701 0 obj <> endobj 16702 0 obj <> endobj 16703 0 obj <> endobj 16704 0 obj <> endobj 16705 0 obj <> endobj 16706 0 obj <> endobj 16707 0 obj <> endobj 16708 0 obj <> endobj 16709 0 obj <> endobj 16710 0 obj <> endobj 16711 0 obj <> endobj 16712 0 obj <> endobj 16713 0 obj <> endobj 16714 0 obj <> endobj 16715 0 obj <> endobj 16716 0 obj <> endobj 16717 0 obj <> endobj 16718 0 obj <> endobj 16719 0 obj <> endobj 16720 0 obj <> endobj 16721 0 obj <> endobj 16722 0 obj <> endobj 16723 0 obj <> endobj 16724 0 obj <> endobj 16725 0 obj <> endobj 16726 0 obj <> endobj 16727 0 obj <> endobj 16728 0 obj <> endobj 16729 0 obj <> endobj 16730 0 obj <> endobj 16731 0 obj <> endobj 16732 0 obj <> endobj 16733 0 obj <> endobj 16734 0 obj <> endobj 16735 0 obj <> endobj 16736 0 obj <> endobj 16737 0 obj <> endobj 16738 0 obj <> endobj 16739 0 obj <> endobj 16740 0 obj <> endobj 16741 0 obj <> endobj 16742 0 obj <> endobj 16743 0 obj <> endobj 16744 0 obj <> endobj 16745 0 obj <> endobj 16746 0 obj <> endobj 16747 0 obj <> endobj 16748 0 obj <> endobj 16749 0 obj <> endobj 16750 0 obj <> endobj 16751 0 obj <> endobj 16752 0 obj <> endobj 16753 0 obj <> endobj 16754 0 obj <> endobj 16755 0 obj <> endobj 16756 0 obj <> endobj 16757 0 obj <> endobj 16758 0 obj <> endobj 16759 0 obj <> endobj 16760 0 obj <> endobj 16761 0 obj <> endobj 16762 0 obj <> endobj 16763 0 obj <> endobj 16764 0 obj <> endobj 16765 0 obj <> endobj 16766 0 obj <> endobj 16767 0 obj <> endobj 16768 0 obj <> endobj 16769 0 obj <> endobj 16770 0 obj <> endobj 16771 0 obj <> endobj 16772 0 obj <> endobj 16773 0 obj <> endobj 16774 0 obj <> endobj 16775 0 obj <> endobj 16776 0 obj <> endobj 16777 0 obj <> endobj 16778 0 obj <> endobj 16779 0 obj <> endobj 16780 0 obj <> endobj 16781 0 obj <> endobj 16782 0 obj <> endobj 16783 0 obj <> endobj 16784 0 obj <> endobj 16785 0 obj <> endobj 16786 0 obj <> endobj 16787 0 obj <> endobj 16788 0 obj <> endobj 16789 0 obj <> endobj 16790 0 obj <> endobj 16791 0 obj <> endobj 16792 0 obj <> endobj 16793 0 obj <> endobj 16794 0 obj <> endobj 16795 0 obj <> endobj 16796 0 obj <> endobj 16797 0 obj <> endobj 16798 0 obj <> endobj 16799 0 obj <> endobj 16800 0 obj <> endobj 16801 0 obj <> endobj 16802 0 obj <> endobj 16803 0 obj <> endobj 16804 0 obj <> endobj 16805 0 obj <> endobj 16806 0 obj <> endobj 16807 0 obj <> endobj 16808 0 obj <> endobj 16809 0 obj <> endobj 16810 0 obj <> endobj 16811 0 obj <> endobj 16812 0 obj <> endobj 16813 0 obj <> endobj 16814 0 obj <> endobj 16815 0 obj <> endobj 16816 0 obj <> endobj 16817 0 obj <> endobj 16818 0 obj <> endobj 16819 0 obj <> endobj 16820 0 obj <> endobj 16821 0 obj <> endobj 16822 0 obj <> endobj 16823 0 obj <> endobj 16824 0 obj <> endobj 16825 0 obj <> endobj 16826 0 obj <> endobj 16827 0 obj <> endobj 16828 0 obj <> endobj 16829 0 obj <> endobj 16830 0 obj <> endobj 16831 0 obj <> endobj 16832 0 obj <> endobj 16833 0 obj <> endobj 16834 0 obj <> endobj 16835 0 obj <> endobj 16836 0 obj <> endobj 16837 0 obj <> endobj 16838 0 obj <> endobj 16839 0 obj <> endobj 16840 0 obj <> endobj 16841 0 obj <> endobj 16842 0 obj <> endobj 16843 0 obj <> endobj 16844 0 obj <> endobj 16845 0 obj <> endobj 16846 0 obj <> endobj 16847 0 obj <> endobj 16848 0 obj <> endobj 16849 0 obj <> endobj 16850 0 obj <> endobj 16851 0 obj <> endobj 16852 0 obj <> endobj 16853 0 obj <> endobj 16854 0 obj <> endobj 16855 0 obj <> endobj 16856 0 obj <> endobj 16857 0 obj <> endobj 16858 0 obj <> endobj 16859 0 obj <> endobj 16860 0 obj <> endobj 16861 0 obj <> endobj 16862 0 obj <> endobj 16863 0 obj <> endobj 16864 0 obj <> endobj 16865 0 obj <> endobj 16866 0 obj <> endobj 16867 0 obj <> endobj 16868 0 obj <> endobj 16869 0 obj <> endobj 16870 0 obj <> endobj 16871 0 obj <> endobj 16872 0 obj <> endobj 16873 0 obj <> endobj 16874 0 obj <> endobj 16875 0 obj <> endobj 16876 0 obj <> endobj 16877 0 obj <> endobj 16878 0 obj <> endobj 16879 0 obj <> endobj 16880 0 obj <> endobj 16881 0 obj <> endobj 16882 0 obj <> endobj 16883 0 obj <> endobj 16884 0 obj <> endobj 16885 0 obj <> endobj 16886 0 obj <> endobj 16887 0 obj <> endobj 16888 0 obj <> endobj 16889 0 obj <> endobj 16890 0 obj <> endobj 16891 0 obj <> endobj 16892 0 obj <> endobj 16893 0 obj <> endobj 16894 0 obj <> endobj 16895 0 obj <> endobj 16896 0 obj <> endobj 16897 0 obj <> endobj 16898 0 obj <> endobj 16899 0 obj <> endobj 16900 0 obj <> endobj 16901 0 obj <> endobj 16902 0 obj <> endobj 16903 0 obj <> endobj 16904 0 obj <> endobj 16905 0 obj <> endobj 16906 0 obj <> endobj 16907 0 obj <> endobj 16908 0 obj <> endobj 16909 0 obj <> endobj 16910 0 obj <> endobj 16911 0 obj <> endobj 16912 0 obj <> endobj 16913 0 obj <> endobj 16914 0 obj <> endobj 16915 0 obj <> endobj 16916 0 obj <> endobj 16917 0 obj <> endobj 16918 0 obj <> endobj 16919 0 obj <> endobj 16920 0 obj <> endobj 16921 0 obj <> endobj 16922 0 obj <> endobj 16923 0 obj <> endobj 16924 0 obj <> endobj 16925 0 obj <> endobj 16926 0 obj <> endobj 16927 0 obj <> endobj 16928 0 obj <> endobj 16929 0 obj <> endobj 16930 0 obj <> endobj 16931 0 obj <> endobj 16932 0 obj <> endobj 16933 0 obj <> endobj 16934 0 obj <> endobj 16935 0 obj <> endobj 16936 0 obj <> endobj 16937 0 obj <> endobj 16938 0 obj <> endobj 16939 0 obj <> endobj 16940 0 obj <> endobj 16941 0 obj <> endobj 16942 0 obj <> endobj 16943 0 obj <> endobj 16944 0 obj <> endobj 16945 0 obj <> endobj 16946 0 obj <> endobj 16947 0 obj <> endobj 16948 0 obj <> endobj 16949 0 obj <> endobj 16950 0 obj <> endobj 16951 0 obj <> endobj 16952 0 obj <> endobj 16953 0 obj <> endobj 16954 0 obj <> endobj 16955 0 obj <> endobj 16956 0 obj <> endobj 16957 0 obj <> endobj 16958 0 obj <> endobj 16959 0 obj <> endobj 16960 0 obj <> endobj 16961 0 obj <> endobj 16962 0 obj <> endobj 16963 0 obj <> endobj 16964 0 obj <> endobj 16965 0 obj <> endobj 16966 0 obj <> endobj 16967 0 obj <> endobj 16968 0 obj <> endobj 16969 0 obj <> endobj 16970 0 obj <> endobj 16971 0 obj <> endobj 16972 0 obj <> endobj 16973 0 obj <> endobj 16974 0 obj <> endobj 16975 0 obj <> endobj 16976 0 obj <> endobj 16977 0 obj <> endobj 16978 0 obj <> endobj 16979 0 obj <> endobj 16980 0 obj <> endobj 16981 0 obj <> endobj 16982 0 obj <> endobj 16983 0 obj <> endobj 16984 0 obj <> endobj 16985 0 obj <> endobj 16986 0 obj <> endobj 16987 0 obj <> endobj 16988 0 obj <> endobj 16989 0 obj <> endobj 16990 0 obj <> endobj 16991 0 obj <> endobj 16992 0 obj <> endobj 16993 0 obj <> endobj 16994 0 obj <> endobj 16995 0 obj <> endobj 16996 0 obj <> endobj 16997 0 obj <> endobj 16998 0 obj <> endobj 16999 0 obj <> endobj 17000 0 obj <> endobj 17001 0 obj <> endobj 17002 0 obj <> endobj 17003 0 obj <> endobj 17004 0 obj <> endobj 17005 0 obj <> endobj 17006 0 obj <> endobj 17007 0 obj <> endobj 17008 0 obj <> endobj 17009 0 obj <> endobj 17010 0 obj <> endobj 17011 0 obj <> endobj 17012 0 obj <> endobj 17013 0 obj <> endobj 17014 0 obj <> endobj 17015 0 obj <> endobj 17016 0 obj <> endobj 17017 0 obj <> endobj 17018 0 obj <> endobj 17019 0 obj <> endobj 17020 0 obj <> endobj 17021 0 obj <> endobj 17022 0 obj <> endobj 17023 0 obj <> endobj 17024 0 obj <> endobj 17025 0 obj <> endobj 17026 0 obj <> endobj 17027 0 obj <> endobj 17028 0 obj <> endobj 17029 0 obj <> endobj 17030 0 obj <> endobj 17031 0 obj <> endobj 17032 0 obj <> endobj 17033 0 obj <> endobj 17034 0 obj <> endobj 17035 0 obj <> endobj 17036 0 obj <> endobj 17037 0 obj <> endobj 17038 0 obj <> endobj 17039 0 obj <> endobj 17040 0 obj <> endobj 17041 0 obj <> endobj 17042 0 obj <> endobj 17043 0 obj <> endobj 17044 0 obj <> endobj 17045 0 obj <> endobj 17046 0 obj <> endobj 17047 0 obj <> endobj 17048 0 obj <> endobj 17049 0 obj <> endobj 17050 0 obj <> endobj 17051 0 obj <> endobj 17052 0 obj <> endobj 17053 0 obj <> endobj 17054 0 obj <> endobj 17055 0 obj <> endobj 17056 0 obj <> endobj 17057 0 obj <> endobj 17058 0 obj <> endobj 17059 0 obj <> endobj 17060 0 obj <> endobj 17061 0 obj <> endobj 17062 0 obj <> endobj 17063 0 obj <> endobj 17064 0 obj <> endobj 17065 0 obj <> endobj 17066 0 obj <> endobj 17067 0 obj <> endobj 17068 0 obj <> endobj 17069 0 obj <> endobj 17070 0 obj <> endobj 17071 0 obj <> endobj 17072 0 obj <> endobj 17073 0 obj <> endobj 17074 0 obj <> endobj 17075 0 obj <> endobj 17076 0 obj <> endobj 17077 0 obj <> endobj 17078 0 obj <> endobj 17079 0 obj <> endobj 17080 0 obj <> endobj 17081 0 obj <> endobj 17082 0 obj <> endobj 17083 0 obj <> endobj 17084 0 obj <> endobj 17085 0 obj <> endobj 17086 0 obj <> endobj 17087 0 obj <> endobj 17088 0 obj <> endobj 17089 0 obj <> endobj 17090 0 obj <> endobj 17091 0 obj <> endobj 17092 0 obj <> endobj 17093 0 obj <> endobj 17094 0 obj <> endobj 17095 0 obj <> endobj 17096 0 obj <> endobj 17097 0 obj <> endobj 17098 0 obj <> endobj 17099 0 obj <> endobj 17100 0 obj <> endobj 17101 0 obj <> endobj 17102 0 obj <> endobj 17103 0 obj <> endobj 17104 0 obj <> endobj 17105 0 obj <> endobj 17106 0 obj <> endobj 17107 0 obj <> endobj 17108 0 obj <> endobj 17109 0 obj <> endobj 17110 0 obj <> endobj 17111 0 obj <> endobj 17112 0 obj <> endobj 17113 0 obj <> endobj 17114 0 obj <> endobj 17115 0 obj <> endobj 17116 0 obj <> endobj 17117 0 obj <> endobj 17118 0 obj <> endobj 17119 0 obj <> endobj 17120 0 obj <> endobj 17121 0 obj <> endobj 17122 0 obj <> endobj 17123 0 obj <> endobj 17124 0 obj <> endobj 17125 0 obj <> endobj 17126 0 obj <> endobj 17127 0 obj <> endobj 17128 0 obj <> endobj 17129 0 obj <> endobj 17130 0 obj <> endobj 17131 0 obj <> endobj 17132 0 obj <> endobj 17133 0 obj <> endobj 17134 0 obj <> endobj 17135 0 obj <> endobj 17136 0 obj <> endobj 17137 0 obj <> endobj 17138 0 obj <> endobj 17139 0 obj <> endobj 17140 0 obj <> endobj 17141 0 obj <> endobj 17142 0 obj <> endobj 17143 0 obj <> endobj 17144 0 obj <> endobj 17145 0 obj <> endobj 17146 0 obj <> endobj 17147 0 obj <> endobj 17148 0 obj <> endobj 17149 0 obj <> endobj 17150 0 obj <> endobj 17151 0 obj <> endobj 17152 0 obj <> endobj 17153 0 obj <> endobj 17154 0 obj <> endobj 17155 0 obj <> endobj 17156 0 obj <> endobj 17157 0 obj <> endobj 17158 0 obj <> endobj 17159 0 obj <> endobj 17160 0 obj <> endobj 17161 0 obj <> endobj 17162 0 obj <> endobj 17163 0 obj <> endobj 17164 0 obj <> endobj 17165 0 obj <> endobj 17166 0 obj <> endobj 17167 0 obj <> endobj 17168 0 obj <> endobj 17169 0 obj <> endobj 17170 0 obj <> endobj 17171 0 obj <> endobj 17172 0 obj <> endobj 17173 0 obj <> endobj 17174 0 obj <> endobj 17175 0 obj <> endobj 17176 0 obj <> endobj 17177 0 obj <> endobj 17178 0 obj <> endobj 17179 0 obj <> endobj 17180 0 obj <> endobj 17181 0 obj <> endobj 17182 0 obj <> endobj 17183 0 obj <> endobj 17184 0 obj <> endobj 17185 0 obj <> endobj 17186 0 obj <> endobj 17187 0 obj <> endobj 17188 0 obj <> endobj 17189 0 obj <> endobj 17190 0 obj <> endobj 17191 0 obj <> endobj 17192 0 obj <> endobj 17193 0 obj <> endobj 17194 0 obj <> endobj 17195 0 obj <> endobj 17196 0 obj <> endobj 17197 0 obj <> endobj 17198 0 obj <> endobj 17199 0 obj <> endobj 17200 0 obj <> endobj 17201 0 obj <> endobj 17202 0 obj <> endobj 17203 0 obj <> endobj 17204 0 obj <> endobj 17205 0 obj <> endobj 17206 0 obj <> endobj 17207 0 obj <> endobj 17208 0 obj <> endobj 17209 0 obj <> endobj 17210 0 obj <> endobj 17211 0 obj <> endobj 17212 0 obj <> endobj 17213 0 obj <> endobj 17214 0 obj <> endobj 17215 0 obj <> endobj 17216 0 obj <> endobj 17217 0 obj <> endobj 17218 0 obj <> endobj 17219 0 obj <> endobj 17220 0 obj <> endobj 17221 0 obj <> endobj 17222 0 obj <> endobj 17223 0 obj <> endobj 17224 0 obj <> endobj 17225 0 obj <> endobj 17226 0 obj <> endobj 17227 0 obj <> endobj 17228 0 obj <> endobj 17229 0 obj <> endobj 17230 0 obj <> endobj 17231 0 obj <> endobj 17232 0 obj <> endobj 17233 0 obj <> endobj 17234 0 obj <> endobj 17235 0 obj <> endobj 17236 0 obj <> endobj 17237 0 obj <> endobj 17238 0 obj <> endobj 17239 0 obj <> endobj 17240 0 obj <> endobj 17241 0 obj <> endobj 17242 0 obj <> endobj 17243 0 obj <> endobj 17244 0 obj <> endobj 17245 0 obj <> endobj 17246 0 obj <> endobj 17247 0 obj <> endobj 17248 0 obj <> endobj 17249 0 obj <> endobj 17250 0 obj <> endobj 17251 0 obj <> endobj 17252 0 obj <> endobj 17253 0 obj <> endobj 17254 0 obj <> endobj 17255 0 obj <> endobj 17256 0 obj <> endobj 17257 0 obj <> endobj 17258 0 obj <> endobj 17259 0 obj <> endobj 17260 0 obj <> endobj 17261 0 obj <> endobj 17262 0 obj <> endobj 17263 0 obj <> endobj 17264 0 obj <> endobj 17265 0 obj <> endobj 17266 0 obj <> endobj 17267 0 obj <> endobj 17268 0 obj <> endobj 17269 0 obj <> endobj 17270 0 obj <> endobj 17271 0 obj <> endobj 17272 0 obj <> endobj 17273 0 obj <> endobj 17274 0 obj <> endobj 17275 0 obj <> endobj 17276 0 obj <> endobj 17277 0 obj <> endobj 17278 0 obj <> endobj 17279 0 obj <> endobj 17280 0 obj <> endobj 17281 0 obj <> endobj 17282 0 obj <> endobj 17283 0 obj <> endobj 17284 0 obj <> endobj 17285 0 obj <> endobj 17286 0 obj <> endobj 17287 0 obj <> endobj 17288 0 obj <> endobj 17289 0 obj <> endobj 17290 0 obj <> endobj 17291 0 obj <> endobj 17292 0 obj <> endobj 17293 0 obj <> endobj 17294 0 obj <> endobj 17295 0 obj <> endobj 17296 0 obj <> endobj 17297 0 obj <> endobj 17298 0 obj <> endobj 17299 0 obj <> endobj 17300 0 obj <> endobj 17301 0 obj <> endobj 17302 0 obj <> endobj 17303 0 obj <> endobj 17304 0 obj <> endobj 17305 0 obj <> endobj 17306 0 obj <> endobj 17307 0 obj <> endobj 17308 0 obj <> endobj 17309 0 obj <> endobj 17310 0 obj <> endobj 17311 0 obj <> endobj 17312 0 obj <> endobj 17313 0 obj <> endobj 17314 0 obj <> endobj 17315 0 obj <> endobj 17316 0 obj <> endobj 17317 0 obj <> endobj 17318 0 obj <> endobj 17319 0 obj <> endobj 17320 0 obj <> endobj 17321 0 obj <> endobj 17322 0 obj <> endobj 17323 0 obj <> endobj 17324 0 obj <> endobj 17325 0 obj <> endobj 17326 0 obj <> endobj 17327 0 obj <> endobj 17328 0 obj <> endobj 17329 0 obj <> endobj 17330 0 obj <> endobj 17331 0 obj <> endobj 17332 0 obj <> endobj 17333 0 obj <> endobj 17334 0 obj <> endobj 17335 0 obj <> endobj 17336 0 obj <> endobj 17337 0 obj <> endobj 17338 0 obj <> endobj 17339 0 obj <> endobj 17340 0 obj <> endobj 17341 0 obj <> endobj 17342 0 obj <> endobj 17343 0 obj <> endobj 17344 0 obj <> endobj 17345 0 obj <> endobj 17346 0 obj <> endobj 17347 0 obj <> endobj 17348 0 obj <> endobj 17349 0 obj <> endobj 17350 0 obj <> endobj 17351 0 obj <> endobj 17352 0 obj <> endobj 17353 0 obj <> endobj 17354 0 obj <> endobj 17355 0 obj <> endobj 17356 0 obj <> endobj 17357 0 obj <> endobj 17358 0 obj <> endobj 17359 0 obj <> endobj 17360 0 obj <> endobj 17361 0 obj <> endobj 17362 0 obj <> endobj 17363 0 obj <> endobj 17364 0 obj <> endobj 17365 0 obj <> endobj 17366 0 obj <> endobj 17367 0 obj <> endobj 17368 0 obj <> endobj 17369 0 obj <> endobj 17370 0 obj <> endobj 17371 0 obj <> endobj 17372 0 obj <> endobj 17373 0 obj <> endobj 17374 0 obj <> endobj 17375 0 obj <> endobj 17376 0 obj <> endobj 17377 0 obj <> endobj 17378 0 obj <> endobj 17379 0 obj <> endobj 17380 0 obj <> endobj 17381 0 obj <> endobj 17382 0 obj <> endobj 17383 0 obj <> endobj 17384 0 obj <> endobj 17385 0 obj <> endobj 17386 0 obj <> endobj 17387 0 obj <> endobj 17388 0 obj <> endobj 17389 0 obj <> endobj 17390 0 obj <> endobj 17391 0 obj <> endobj 17392 0 obj <> endobj 17393 0 obj <> endobj 17394 0 obj <> endobj 17395 0 obj <> endobj 17396 0 obj <> endobj 17397 0 obj <> endobj 17398 0 obj <> endobj 17399 0 obj <> endobj 17400 0 obj <> endobj 17401 0 obj <> endobj 17402 0 obj <> endobj 17403 0 obj <> endobj 17404 0 obj <> endobj 17405 0 obj <> endobj 17406 0 obj <> endobj 17407 0 obj <> endobj 17408 0 obj <> endobj 17409 0 obj <> endobj 17410 0 obj <> endobj 17411 0 obj <> endobj 17412 0 obj <> endobj 17413 0 obj <> endobj 17414 0 obj <> endobj 17415 0 obj <> endobj 17416 0 obj <> endobj 17417 0 obj <> endobj 17418 0 obj <> endobj 17419 0 obj <> endobj 17420 0 obj <> endobj 17421 0 obj <> endobj 17422 0 obj <> endobj 17423 0 obj <> endobj 17424 0 obj <> endobj 17425 0 obj <> endobj 17426 0 obj <> endobj 17427 0 obj <> endobj 17428 0 obj <> endobj 17429 0 obj <> endobj 17430 0 obj <> endobj 17431 0 obj <> endobj 17432 0 obj <> endobj 17433 0 obj <> endobj 17434 0 obj <> endobj 17435 0 obj <> endobj 17436 0 obj <> endobj 17437 0 obj <> endobj 17438 0 obj <> endobj 17439 0 obj <> endobj 17440 0 obj <> endobj 17441 0 obj <> endobj 17442 0 obj <> endobj 17443 0 obj <> endobj 17444 0 obj <> endobj 17445 0 obj <> endobj 17446 0 obj <> endobj 17447 0 obj <> endobj 17448 0 obj <> endobj 17449 0 obj <> endobj 17450 0 obj <> endobj 17451 0 obj <> endobj 17452 0 obj <> endobj 17453 0 obj <> endobj 17454 0 obj <> endobj 17455 0 obj <> endobj 17456 0 obj <> endobj 17457 0 obj <> endobj 17458 0 obj <> endobj 17459 0 obj <> endobj 17460 0 obj <> endobj 17461 0 obj <> endobj 17462 0 obj <> endobj 17463 0 obj <> endobj 17464 0 obj <> endobj 17465 0 obj <> endobj 17466 0 obj <> endobj 17467 0 obj <> endobj 17468 0 obj <> endobj 17469 0 obj <> endobj 17470 0 obj <> endobj 17471 0 obj <> endobj 17472 0 obj <> endobj 17473 0 obj <> endobj 17474 0 obj <> endobj 17475 0 obj <> endobj 17476 0 obj <> endobj 17477 0 obj <> endobj 17478 0 obj <> endobj 17479 0 obj <> endobj 17480 0 obj <> endobj 17481 0 obj <> endobj 17482 0 obj <> endobj 17483 0 obj <> endobj 17484 0 obj <> endobj 17485 0 obj <> endobj 17486 0 obj <> endobj 17487 0 obj <> endobj 17488 0 obj <> endobj 17489 0 obj <> endobj 17490 0 obj <> endobj 17491 0 obj <> endobj 17492 0 obj <> endobj 17493 0 obj <> endobj 17494 0 obj <> endobj 17495 0 obj <> endobj 17496 0 obj <> endobj 17497 0 obj <> endobj 17498 0 obj <> endobj 17499 0 obj <> endobj 17500 0 obj <> endobj 17501 0 obj <> endobj 17502 0 obj <> endobj 17503 0 obj <> endobj 17504 0 obj <> endobj 17505 0 obj <> endobj 17506 0 obj <> endobj 17507 0 obj <> endobj 17508 0 obj <> endobj 17509 0 obj <> endobj 17510 0 obj <> endobj 17511 0 obj <> endobj 17512 0 obj <> endobj 17513 0 obj <> endobj 17514 0 obj <> endobj 17515 0 obj <> endobj 17516 0 obj <> endobj 17517 0 obj <> endobj 17518 0 obj <> endobj 17519 0 obj <> endobj 17520 0 obj <> endobj 17521 0 obj <> endobj 17522 0 obj <> endobj 17523 0 obj <> endobj 17524 0 obj <> endobj 17525 0 obj <> endobj 17526 0 obj <> endobj 17527 0 obj <> endobj 17528 0 obj <> endobj 17529 0 obj <> endobj 17530 0 obj <> endobj 17531 0 obj <> endobj 17532 0 obj <> endobj 17533 0 obj <> endobj 17534 0 obj <> endobj 17535 0 obj <> endobj 17536 0 obj <> endobj 17537 0 obj <> endobj 17538 0 obj <> endobj 17539 0 obj <> endobj 17540 0 obj <> endobj 17541 0 obj <> endobj 17542 0 obj <> endobj 17543 0 obj <> endobj 17544 0 obj <> endobj 17545 0 obj <> endobj 17546 0 obj <> endobj 17547 0 obj <> endobj 17548 0 obj <> endobj 17549 0 obj <> endobj 17550 0 obj <> endobj 17551 0 obj <> endobj 17552 0 obj <> endobj 17553 0 obj <> endobj 17554 0 obj <> endobj 17555 0 obj <> endobj 17556 0 obj <> endobj 17557 0 obj <> endobj 17558 0 obj <> endobj 17559 0 obj <> endobj 17560 0 obj <> endobj 17561 0 obj <> endobj 17562 0 obj <> endobj 17563 0 obj <> endobj 17564 0 obj <> endobj 17565 0 obj <> endobj 17566 0 obj <> endobj 17567 0 obj <> endobj 17568 0 obj <> endobj 17569 0 obj <> endobj 17570 0 obj <> endobj 17571 0 obj <> endobj 17572 0 obj <> endobj 17573 0 obj <> endobj 17574 0 obj <> endobj 17575 0 obj <> endobj 17576 0 obj <> endobj 17577 0 obj <> endobj 17578 0 obj <> endobj 17579 0 obj <> endobj 17580 0 obj <> endobj 17581 0 obj <> endobj 17582 0 obj <> endobj 17583 0 obj <> endobj 17584 0 obj <> endobj 17585 0 obj <> endobj 17586 0 obj <> endobj 17587 0 obj <> endobj 17588 0 obj <> endobj 17589 0 obj <> endobj 17590 0 obj <> endobj 17591 0 obj <> endobj 17592 0 obj <> endobj 17593 0 obj <> endobj 17594 0 obj <> endobj 17595 0 obj <> endobj 17596 0 obj <> endobj 17597 0 obj <> endobj 17598 0 obj <> endobj 17599 0 obj <> endobj 17600 0 obj <> endobj 17601 0 obj <> endobj 17602 0 obj <> endobj 17603 0 obj <> endobj 17604 0 obj <> endobj 17605 0 obj <> endobj 17606 0 obj <> endobj 17607 0 obj <> endobj 17608 0 obj <> endobj 17609 0 obj <> endobj 17610 0 obj <> endobj 17611 0 obj <> endobj 17612 0 obj <> endobj 17613 0 obj <> endobj 17614 0 obj <> endobj 17615 0 obj <> endobj 17616 0 obj <> endobj 17617 0 obj <> endobj 17618 0 obj <> endobj 17619 0 obj <> endobj 17620 0 obj <> endobj 17621 0 obj <> endobj 17622 0 obj <> endobj 17623 0 obj <> endobj 17624 0 obj <> endobj 17625 0 obj <> endobj 17626 0 obj <> endobj 17627 0 obj <> endobj 17628 0 obj <> endobj 17629 0 obj <> endobj 17630 0 obj <> endobj 17631 0 obj <> endobj 17632 0 obj <> endobj 17633 0 obj <> endobj 17634 0 obj <> endobj 17635 0 obj <> endobj 17636 0 obj <> endobj 17637 0 obj <> endobj 17638 0 obj <> endobj 17639 0 obj <> endobj 17640 0 obj <> endobj 17641 0 obj <> endobj 17642 0 obj <> endobj 17643 0 obj <> endobj 17644 0 obj <> endobj 17645 0 obj <> endobj 17646 0 obj <> endobj 17647 0 obj <> endobj 17648 0 obj <> endobj 17649 0 obj <> endobj 17650 0 obj <> endobj 17651 0 obj <> endobj 17652 0 obj <> endobj 17653 0 obj <> endobj 17654 0 obj <> endobj 17655 0 obj <> endobj 17656 0 obj <> endobj 17657 0 obj <> endobj 17658 0 obj <> endobj 17659 0 obj <> endobj 17660 0 obj <> endobj 17661 0 obj <> endobj 17662 0 obj <> endobj 17663 0 obj <> endobj 17664 0 obj <> endobj 17665 0 obj <> endobj 17666 0 obj <> endobj 17667 0 obj <> endobj 17668 0 obj <> endobj 17669 0 obj <> endobj 17670 0 obj <> endobj 17671 0 obj <> endobj 17672 0 obj <> endobj 17673 0 obj <> endobj 17674 0 obj <> endobj 17675 0 obj <> endobj 17676 0 obj <> endobj 17677 0 obj <> endobj 17678 0 obj <> endobj 17679 0 obj <> endobj 17680 0 obj <> endobj 17681 0 obj <> endobj 17682 0 obj <> endobj 17683 0 obj <> endobj 17684 0 obj <> endobj 17685 0 obj <> endobj 17686 0 obj <> endobj 17687 0 obj <> endobj 17688 0 obj <> endobj 17689 0 obj <> endobj 17690 0 obj <> endobj 17691 0 obj <> endobj 17692 0 obj <> endobj 17693 0 obj <> endobj 17694 0 obj <> endobj 17695 0 obj <> endobj 17696 0 obj <> endobj 17697 0 obj <> endobj 17698 0 obj <> endobj 17699 0 obj <> endobj 17700 0 obj <> endobj 17701 0 obj <> endobj 17702 0 obj <> endobj 17703 0 obj <> endobj 17704 0 obj <> endobj 17705 0 obj <> endobj 17706 0 obj <> endobj 17707 0 obj <> endobj 17708 0 obj <> endobj 17709 0 obj <> endobj 17710 0 obj <> endobj 17711 0 obj <> endobj 17712 0 obj <> endobj 17713 0 obj <> endobj 17714 0 obj <> endobj 17715 0 obj <> endobj 17716 0 obj <> endobj 17717 0 obj <> endobj 17718 0 obj <> endobj 17719 0 obj <> endobj 17720 0 obj <> endobj 17721 0 obj <> endobj 17722 0 obj <> endobj 17723 0 obj <> endobj 17724 0 obj <> endobj 17725 0 obj <> endobj 17726 0 obj <> endobj 17727 0 obj <> endobj 17728 0 obj <> endobj 17729 0 obj <> endobj 17730 0 obj <> endobj 17731 0 obj <> endobj 17732 0 obj <> endobj 17733 0 obj <> endobj 17734 0 obj <> endobj 17735 0 obj <> endobj 17736 0 obj <> endobj 17737 0 obj <> endobj 17738 0 obj <> endobj 17739 0 obj <> endobj 17740 0 obj <> endobj 17741 0 obj <> endobj 17742 0 obj <> endobj 17743 0 obj <> endobj 17744 0 obj <> endobj 17745 0 obj <> endobj 17746 0 obj <> endobj 17747 0 obj <> endobj 17748 0 obj <> endobj 17749 0 obj <> endobj 17750 0 obj <> endobj 17751 0 obj <> endobj 17752 0 obj <> endobj 17753 0 obj <> endobj 17754 0 obj <> endobj 17755 0 obj <> endobj 17756 0 obj <> endobj 17757 0 obj <> endobj 17758 0 obj <> endobj 17759 0 obj <> endobj 17760 0 obj <> endobj 17761 0 obj <> endobj 17762 0 obj <> endobj 17763 0 obj <> endobj 17764 0 obj <> endobj 17765 0 obj <> endobj 17766 0 obj <> endobj 17767 0 obj <> endobj 17768 0 obj <> endobj 17769 0 obj <> endobj 17770 0 obj <> endobj 17771 0 obj <> endobj 17772 0 obj <> endobj 17773 0 obj <> endobj 17774 0 obj <> endobj 17775 0 obj <> endobj 17776 0 obj <> endobj 17777 0 obj <> endobj 17778 0 obj <> endobj 17779 0 obj <> endobj 17780 0 obj <> endobj 17781 0 obj <> endobj 17782 0 obj <> endobj 17783 0 obj <> endobj 17784 0 obj <> endobj 17785 0 obj <> endobj 17786 0 obj <> endobj 17787 0 obj <> endobj 17788 0 obj <> endobj 17789 0 obj <> endobj 17790 0 obj <> endobj 17791 0 obj <> endobj 17792 0 obj <> endobj 17793 0 obj <> endobj 17794 0 obj <> endobj 17795 0 obj <> endobj 17796 0 obj <> endobj 17797 0 obj <> endobj 17798 0 obj <> endobj 17799 0 obj <> endobj 17800 0 obj <> endobj 17801 0 obj <> endobj 17802 0 obj <> endobj 17803 0 obj <> endobj 17804 0 obj <> endobj 17805 0 obj <> endobj 17806 0 obj <> endobj 17807 0 obj <> endobj 17808 0 obj <> endobj 17809 0 obj <> endobj 17810 0 obj <> endobj 17811 0 obj <> endobj 17812 0 obj <> endobj 17813 0 obj <> endobj 17814 0 obj <> endobj 17815 0 obj <> endobj 17816 0 obj <> endobj 17817 0 obj <> endobj 17818 0 obj <> endobj 17819 0 obj <> endobj 17820 0 obj <> endobj 17821 0 obj <> endobj 17822 0 obj <> endobj 17823 0 obj <> endobj 17824 0 obj <> endobj 17825 0 obj <> endobj 17826 0 obj <> endobj 17827 0 obj <> endobj 17828 0 obj <> endobj 17829 0 obj <> endobj 17830 0 obj <> endobj 17831 0 obj <> endobj 17832 0 obj <> endobj 17833 0 obj <> endobj 17834 0 obj <> endobj 17835 0 obj <> endobj 17836 0 obj <> endobj 17837 0 obj <> endobj 17838 0 obj <> endobj 17839 0 obj <> endobj 17840 0 obj <> endobj 17841 0 obj <> endobj 17842 0 obj <> endobj 17843 0 obj <> endobj 17844 0 obj <> endobj 17845 0 obj <> endobj 17846 0 obj <> endobj 17847 0 obj <> endobj 17848 0 obj <> endobj 17849 0 obj <> endobj 17850 0 obj <> endobj 17851 0 obj <> endobj 17852 0 obj <> endobj 17853 0 obj <> endobj 17854 0 obj <> endobj 17855 0 obj <> endobj 17856 0 obj <> endobj 17857 0 obj <> endobj 17858 0 obj <> endobj 17859 0 obj <> endobj 17860 0 obj <> endobj 17861 0 obj <> endobj 17862 0 obj <> endobj 17863 0 obj <> endobj 17864 0 obj <> endobj 17865 0 obj <> endobj 17866 0 obj <> endobj 17867 0 obj <> endobj 17868 0 obj <> endobj 17869 0 obj <> endobj 17870 0 obj <> endobj 17871 0 obj <> endobj 17872 0 obj <> endobj 17873 0 obj <> endobj 17874 0 obj <> endobj 17875 0 obj <> endobj 17876 0 obj <> endobj 17877 0 obj <> endobj 17878 0 obj <> endobj 17879 0 obj <> endobj 17880 0 obj <> endobj 17881 0 obj <> endobj 17882 0 obj <> endobj 17883 0 obj <> endobj 17884 0 obj <> endobj 17885 0 obj <> endobj 17886 0 obj <> endobj 17887 0 obj <> endobj 17888 0 obj <> endobj 17889 0 obj <> endobj 17890 0 obj <> endobj 17891 0 obj <> endobj 17892 0 obj <> endobj 17893 0 obj <> endobj 17894 0 obj <> endobj 17895 0 obj <> endobj 17896 0 obj <> endobj 17897 0 obj <> endobj 17898 0 obj <> endobj 17899 0 obj <> endobj 17900 0 obj <> endobj 17901 0 obj <> endobj 17902 0 obj <> endobj 17903 0 obj <> endobj 17904 0 obj <> endobj 17905 0 obj <> endobj 17906 0 obj <> endobj 17907 0 obj <> endobj 17908 0 obj <> endobj 17909 0 obj <> endobj 17910 0 obj <> endobj 17911 0 obj <> endobj 17912 0 obj <> endobj 17913 0 obj <> endobj 17914 0 obj <> endobj 17915 0 obj <> endobj 17916 0 obj <> endobj 17917 0 obj <> endobj 17918 0 obj <> endobj 17919 0 obj <> endobj 17920 0 obj <> endobj 17921 0 obj <> endobj 17922 0 obj <> endobj 17923 0 obj <> endobj 17924 0 obj <> endobj 17925 0 obj <> endobj 17926 0 obj <> endobj 17927 0 obj <> endobj 17928 0 obj <> endobj 17929 0 obj <> endobj 17930 0 obj <> endobj 17931 0 obj <> endobj 17932 0 obj <> endobj 17933 0 obj <> endobj 17934 0 obj <> endobj 17935 0 obj <> endobj 17936 0 obj <> endobj 17937 0 obj <> endobj 17938 0 obj <> endobj 17939 0 obj <> endobj 17940 0 obj <> endobj 17941 0 obj <> endobj 17942 0 obj <> endobj 17943 0 obj <> endobj 17944 0 obj <> endobj 17945 0 obj <> endobj 17946 0 obj <> endobj 17947 0 obj <> endobj 17948 0 obj <> endobj 17949 0 obj <> endobj 17950 0 obj <> endobj 17951 0 obj <> endobj 17952 0 obj <> endobj 17953 0 obj <> endobj 17954 0 obj <> endobj 17955 0 obj <> endobj 17956 0 obj <> endobj 17957 0 obj <> endobj 17958 0 obj <> endobj 17959 0 obj <> endobj 17960 0 obj <> endobj 17961 0 obj <> endobj 17962 0 obj <> endobj 17963 0 obj <> endobj 17964 0 obj <> endobj 17965 0 obj <> endobj 17966 0 obj <> endobj 17967 0 obj <> endobj 17968 0 obj <> endobj 17969 0 obj <> endobj 17970 0 obj <> endobj 17971 0 obj <> endobj 17972 0 obj <> endobj 17973 0 obj <> endobj 17974 0 obj <> endobj 17975 0 obj <> endobj 17976 0 obj <> endobj 17977 0 obj <> endobj 17978 0 obj <> endobj 17979 0 obj <> endobj 17980 0 obj <> endobj 17981 0 obj <> endobj 17982 0 obj <> endobj 17983 0 obj <> endobj 17984 0 obj <> endobj 17985 0 obj <> endobj 17986 0 obj <> endobj 17987 0 obj <> endobj 17988 0 obj <> endobj 17989 0 obj <> endobj 17990 0 obj <> endobj 17991 0 obj <> endobj 17992 0 obj <> endobj 17993 0 obj <> endobj 17994 0 obj <> endobj 17995 0 obj <> endobj 17996 0 obj <> endobj 17997 0 obj <> endobj 17998 0 obj <> endobj 17999 0 obj <> endobj 18000 0 obj <> endobj 18001 0 obj <> endobj 18002 0 obj <> endobj 18003 0 obj <> endobj 18004 0 obj <> endobj 18005 0 obj <> endobj 18006 0 obj <> endobj 18007 0 obj <> endobj 18008 0 obj <> endobj 18009 0 obj <> endobj 18010 0 obj <> endobj 18011 0 obj <> endobj 18012 0 obj <> endobj 18013 0 obj <> endobj 18014 0 obj <> endobj 18015 0 obj <> endobj 18016 0 obj <> endobj 18017 0 obj <> endobj 18018 0 obj <> endobj 18019 0 obj <> endobj 18020 0 obj <> endobj 18021 0 obj <> endobj 18022 0 obj <> endobj 18023 0 obj <> endobj 18024 0 obj <> endobj 18025 0 obj <> endobj 18026 0 obj <> endobj 18027 0 obj <> endobj 18028 0 obj <> endobj 18029 0 obj <> endobj 18030 0 obj <> endobj 18031 0 obj <> endobj 18032 0 obj <> endobj 18033 0 obj <> endobj 18034 0 obj <> endobj 18035 0 obj <> endobj 18036 0 obj <> endobj 18037 0 obj <> endobj 18038 0 obj <> endobj 18039 0 obj <> endobj 18040 0 obj <> endobj 18041 0 obj <> endobj 18042 0 obj <> endobj 18043 0 obj <> endobj 18044 0 obj <> endobj 18045 0 obj <> endobj 18046 0 obj <> endobj 18047 0 obj <> endobj 18048 0 obj <> endobj 18049 0 obj <> endobj 18050 0 obj <> endobj 18051 0 obj <> endobj 18052 0 obj <> endobj 18053 0 obj <> endobj 18054 0 obj <> endobj 18055 0 obj <> endobj 18056 0 obj <> endobj 18057 0 obj <> endobj 18058 0 obj <> endobj 18059 0 obj <> endobj 18060 0 obj <> endobj 18061 0 obj <> endobj 18062 0 obj <> endobj 18063 0 obj <> endobj 18064 0 obj <> endobj 18065 0 obj <> endobj 18066 0 obj <> endobj 18067 0 obj <> endobj 18068 0 obj <> endobj 18069 0 obj <> endobj 18070 0 obj <> endobj 18071 0 obj <> endobj 18072 0 obj <> endobj 18073 0 obj <> endobj 18074 0 obj <> endobj 18075 0 obj <> endobj 18076 0 obj <> endobj 18077 0 obj <> endobj 18078 0 obj <> endobj 18079 0 obj <> endobj 18080 0 obj <> endobj 18081 0 obj <> endobj 18082 0 obj <> endobj 18083 0 obj <> endobj 18084 0 obj <> endobj 18085 0 obj <> endobj 18086 0 obj <> endobj 18087 0 obj <> endobj 18088 0 obj <> endobj 18089 0 obj <> endobj 18090 0 obj <> endobj 18091 0 obj <> endobj 18092 0 obj <> endobj 18093 0 obj <> endobj 18094 0 obj <> endobj 18095 0 obj <> endobj 18096 0 obj <> endobj 18097 0 obj <> endobj 18098 0 obj <> endobj 18099 0 obj <> endobj 18100 0 obj <> endobj 18101 0 obj <> endobj 18102 0 obj <> endobj 18103 0 obj <> endobj 18104 0 obj <> endobj 18105 0 obj <> endobj 18106 0 obj <> endobj 18107 0 obj <> endobj 18108 0 obj <> endobj 18109 0 obj <> endobj 18110 0 obj <> endobj 18111 0 obj <> endobj 18112 0 obj <> endobj 18113 0 obj <> endobj 18114 0 obj <> endobj 18115 0 obj <> endobj 18116 0 obj <> endobj 18117 0 obj <> endobj 18118 0 obj <> endobj 18119 0 obj <> endobj 18120 0 obj <> endobj 18121 0 obj <> endobj 18122 0 obj <> endobj 18123 0 obj <> endobj 18124 0 obj <> endobj 18125 0 obj <> endobj 18126 0 obj <> endobj 18127 0 obj <> endobj 18128 0 obj <> endobj 18129 0 obj <> endobj 18130 0 obj <> endobj 18131 0 obj <> endobj 18132 0 obj <> endobj 18133 0 obj <> endobj 18134 0 obj <> endobj 18135 0 obj <> endobj 18136 0 obj <> endobj 18137 0 obj <> endobj 18138 0 obj <> endobj 18139 0 obj <> endobj 18140 0 obj <> endobj 18141 0 obj <> endobj 18142 0 obj <> endobj 18143 0 obj <> endobj 18144 0 obj <> endobj 18145 0 obj <> endobj 18146 0 obj <> endobj 18147 0 obj <> endobj 18148 0 obj <> endobj 18149 0 obj <> endobj 18150 0 obj <> endobj 18151 0 obj <> endobj 18152 0 obj <> endobj 18153 0 obj <> endobj 18154 0 obj <> endobj 18155 0 obj <> endobj 18156 0 obj <> endobj 18157 0 obj <> endobj 18158 0 obj <> endobj 18159 0 obj <> endobj 18160 0 obj <> endobj 18161 0 obj <> endobj 18162 0 obj <> endobj 18163 0 obj <> endobj 18164 0 obj <> endobj 18165 0 obj <> endobj 18166 0 obj <> endobj 18167 0 obj <> endobj 18168 0 obj <> endobj 18169 0 obj <> endobj 18170 0 obj <> endobj 18171 0 obj <> endobj 18172 0 obj <> endobj 18173 0 obj <> endobj 18174 0 obj <> endobj 18175 0 obj <> endobj 18176 0 obj <> endobj 18177 0 obj <> endobj 18178 0 obj <> endobj 18179 0 obj <> endobj 18180 0 obj <> endobj 18181 0 obj <> endobj 18182 0 obj <> endobj 18183 0 obj <> endobj 18184 0 obj <> endobj 18185 0 obj <> endobj 18186 0 obj <> endobj 18187 0 obj <> endobj 18188 0 obj <> endobj 18189 0 obj <> endobj 18190 0 obj <> endobj 18191 0 obj <> endobj 18192 0 obj <> endobj 18193 0 obj <> endobj 18194 0 obj <> endobj 18195 0 obj <> endobj 18196 0 obj <> endobj 18197 0 obj <> endobj 18198 0 obj <> endobj 18199 0 obj <> endobj 18200 0 obj <> endobj 18201 0 obj <> endobj 18202 0 obj <> endobj 18203 0 obj <> endobj 18204 0 obj <> endobj 18205 0 obj <> endobj 18206 0 obj <> endobj 18207 0 obj <> endobj 18208 0 obj <> endobj 18209 0 obj <> endobj 18210 0 obj <> endobj 18211 0 obj <> endobj 18212 0 obj <> endobj 18213 0 obj <> endobj 18214 0 obj <> endobj 18215 0 obj <> endobj 18216 0 obj <> endobj 18217 0 obj <> endobj 18218 0 obj <> endobj 18219 0 obj <> endobj 18220 0 obj <> endobj 18221 0 obj <> endobj 18222 0 obj <> endobj 18223 0 obj <> endobj 18224 0 obj <> endobj 18225 0 obj <> endobj 18226 0 obj <> endobj 18227 0 obj <> endobj 18228 0 obj <> endobj 18229 0 obj <> endobj 18230 0 obj <> endobj 18231 0 obj <> endobj 18232 0 obj <> endobj 18233 0 obj <> endobj 18234 0 obj <> endobj 18235 0 obj <> endobj 18236 0 obj <> endobj 18237 0 obj <> endobj 18238 0 obj <> endobj 18239 0 obj <> endobj 18240 0 obj <> endobj 18241 0 obj <> endobj 18242 0 obj <> endobj 18243 0 obj <> endobj 18244 0 obj <> endobj 18245 0 obj <> endobj 18246 0 obj <> endobj 18247 0 obj <> endobj 18248 0 obj <> endobj 18249 0 obj <> endobj 18250 0 obj <> endobj 18251 0 obj <> endobj 18252 0 obj <> endobj 18253 0 obj <> endobj 18254 0 obj <> endobj 18255 0 obj <> endobj 18256 0 obj <> endobj 18257 0 obj <> endobj 18258 0 obj <> endobj 18259 0 obj <> endobj 18260 0 obj <> endobj 18261 0 obj <> endobj 18262 0 obj <> endobj 18263 0 obj <> endobj 18264 0 obj <> endobj 18265 0 obj <> endobj 18266 0 obj <> endobj 18267 0 obj <> endobj 18268 0 obj <> endobj 18269 0 obj <> endobj 18270 0 obj <> endobj 18271 0 obj <> endobj 18272 0 obj <> endobj 18273 0 obj <> endobj 18274 0 obj <> endobj 18275 0 obj <> endobj 18276 0 obj <> endobj 18277 0 obj <> endobj 18278 0 obj <> endobj 18279 0 obj <> endobj 18280 0 obj <> endobj 18281 0 obj <> endobj 18282 0 obj <> endobj 18283 0 obj <> endobj 18284 0 obj <> endobj 18285 0 obj <> endobj 18286 0 obj <> endobj 18287 0 obj <> endobj 18288 0 obj <> endobj 18289 0 obj <> endobj 18290 0 obj <> endobj 18291 0 obj <> endobj 18292 0 obj <> endobj 18293 0 obj <> endobj 18294 0 obj <> endobj 18295 0 obj <> endobj 18296 0 obj <> endobj 18297 0 obj <> endobj 18298 0 obj <> endobj 18299 0 obj <> endobj 18300 0 obj <> endobj 18301 0 obj <> endobj 18302 0 obj <> endobj 18303 0 obj <> endobj 18304 0 obj <> endobj 18305 0 obj <> endobj 18306 0 obj <> endobj 18307 0 obj <> endobj 18308 0 obj <> endobj 18309 0 obj <> endobj 18310 0 obj <> endobj 18311 0 obj <> endobj 18312 0 obj <> endobj 18313 0 obj <> endobj 18314 0 obj <> endobj 18315 0 obj <> endobj 18316 0 obj <> endobj 18317 0 obj <> endobj 18318 0 obj <> endobj 18319 0 obj <> endobj 18320 0 obj <> endobj 18321 0 obj <> endobj 18322 0 obj <> endobj 18323 0 obj <> endobj 18324 0 obj <> endobj 18325 0 obj <> endobj 18326 0 obj <> endobj 18327 0 obj <> endobj 18328 0 obj <> endobj 18329 0 obj <> endobj 18330 0 obj <> endobj 18331 0 obj <> endobj 18332 0 obj <> endobj 18333 0 obj <> endobj 18334 0 obj <> endobj 18335 0 obj <> endobj 18336 0 obj <> endobj 18337 0 obj <> endobj 18338 0 obj <> endobj 18339 0 obj <> endobj 18340 0 obj <> endobj 18341 0 obj <> endobj 18342 0 obj <> endobj 18343 0 obj <> endobj 18344 0 obj <> endobj 18345 0 obj <> endobj 18346 0 obj <> endobj 18347 0 obj <> endobj 18348 0 obj <> endobj 18349 0 obj <> endobj 18350 0 obj <> endobj 18351 0 obj <> endobj 18352 0 obj <> endobj 18353 0 obj <> endobj 18354 0 obj <> endobj 18355 0 obj <> endobj 18356 0 obj <> endobj 18357 0 obj <> endobj 18358 0 obj <> endobj 18359 0 obj <> endobj 18360 0 obj <> endobj 18361 0 obj <> endobj 18362 0 obj <> endobj 18363 0 obj <> endobj 18364 0 obj <> endobj 18365 0 obj <> endobj 18366 0 obj <> endobj 18367 0 obj <> endobj 18368 0 obj <> endobj 18369 0 obj <> endobj 18370 0 obj <> endobj 18371 0 obj <> endobj 18372 0 obj <> endobj 18373 0 obj <> endobj 18374 0 obj <> endobj 18375 0 obj <> endobj 18376 0 obj <> endobj 18377 0 obj <> endobj 18378 0 obj <> endobj 18379 0 obj <> endobj 18380 0 obj <> endobj 18381 0 obj <> endobj 18382 0 obj <> endobj 18383 0 obj <> endobj 18384 0 obj <> endobj 18385 0 obj <> endobj 18386 0 obj <> endobj 18387 0 obj <> endobj 18388 0 obj <> endobj 18389 0 obj <> endobj 18390 0 obj <> endobj 18391 0 obj <> endobj 18392 0 obj <> endobj 18393 0 obj <> endobj 18394 0 obj <> endobj 18395 0 obj <> endobj 18396 0 obj <> endobj 18397 0 obj <> endobj 18398 0 obj <> endobj 18399 0 obj <> endobj 18400 0 obj <> endobj 18401 0 obj <> endobj 18402 0 obj <> endobj 18403 0 obj <> endobj 18404 0 obj <> endobj 18405 0 obj <> endobj 18406 0 obj <> endobj 18407 0 obj <> endobj 18408 0 obj <> endobj 18409 0 obj <> endobj 18410 0 obj <> endobj 18411 0 obj <> endobj 18412 0 obj <> endobj 18413 0 obj <> endobj 18414 0 obj <> endobj 18415 0 obj <> endobj 18416 0 obj <> endobj 18417 0 obj <> endobj 18418 0 obj <> endobj 18419 0 obj <> endobj 18420 0 obj <> endobj 18421 0 obj <> endobj 18422 0 obj <> endobj 18423 0 obj <> endobj 18424 0 obj <> endobj 18425 0 obj <> endobj 18426 0 obj <> endobj 18427 0 obj <> endobj 18428 0 obj <> endobj 18429 0 obj <> endobj 18430 0 obj <> endobj 18431 0 obj <> endobj 18432 0 obj <> endobj 18433 0 obj <> endobj 18434 0 obj <> endobj 18435 0 obj <> endobj 18436 0 obj <> endobj 18437 0 obj <> endobj 18438 0 obj <> endobj 18439 0 obj <> endobj 18440 0 obj <> endobj 18441 0 obj <> endobj 18442 0 obj <> endobj 18443 0 obj <> endobj 18444 0 obj <> endobj 18445 0 obj <> endobj 18446 0 obj <> endobj 18447 0 obj <> endobj 18448 0 obj <> endobj 18449 0 obj <> endobj 18450 0 obj <> endobj 18451 0 obj <> endobj 18452 0 obj <> endobj 18453 0 obj <> endobj 18454 0 obj <> endobj 18455 0 obj <> endobj 18456 0 obj <> endobj 18457 0 obj <> endobj 18458 0 obj <> endobj 18459 0 obj <> endobj 18460 0 obj <> endobj 18461 0 obj <> endobj 18462 0 obj <> endobj 18463 0 obj <> endobj 18464 0 obj <> endobj 18465 0 obj <> endobj 18466 0 obj <> endobj 18467 0 obj <> endobj 18468 0 obj <> endobj 18469 0 obj <> endobj 18470 0 obj <> endobj 18471 0 obj <> endobj 18472 0 obj <> endobj 18473 0 obj <> endobj 18474 0 obj <> endobj 18475 0 obj <> endobj 18476 0 obj <> endobj 18477 0 obj <> endobj 18478 0 obj <> endobj 18479 0 obj <> endobj 18480 0 obj <> endobj 18481 0 obj <> endobj 18482 0 obj <> endobj 18483 0 obj <> endobj 18484 0 obj <> endobj 18485 0 obj <> endobj 18486 0 obj <> endobj 18487 0 obj <> endobj 18488 0 obj <> endobj 18489 0 obj <> endobj 18490 0 obj <> endobj 18491 0 obj <> endobj 18492 0 obj <> endobj 18493 0 obj <> endobj 18494 0 obj <> endobj 18495 0 obj <> endobj 18496 0 obj <> endobj 18497 0 obj <> endobj 18498 0 obj <> endobj 18499 0 obj <> endobj 18500 0 obj <> endobj 18501 0 obj <> endobj 18502 0 obj <> endobj 18503 0 obj <> endobj 18504 0 obj <> endobj 18505 0 obj <> endobj 18506 0 obj <> endobj 18507 0 obj <> endobj 18508 0 obj <> endobj 18509 0 obj <> endobj 18510 0 obj <> endobj 18511 0 obj <> endobj 18512 0 obj <> endobj 18513 0 obj <> endobj 18514 0 obj <> endobj 18515 0 obj <> endobj 18516 0 obj <> endobj 18517 0 obj <> endobj 18518 0 obj <> endobj 18519 0 obj <> endobj 18520 0 obj <> endobj 18521 0 obj <> endobj 18522 0 obj <> endobj 18523 0 obj <> endobj 18524 0 obj <> endobj 18525 0 obj <> endobj 18526 0 obj <> endobj 18527 0 obj <> endobj 18528 0 obj <> endobj 18529 0 obj <> endobj 18530 0 obj <> endobj 18531 0 obj <> endobj 18532 0 obj <> endobj 18533 0 obj <> endobj 18534 0 obj <> endobj 18535 0 obj <> endobj 18536 0 obj <> endobj 18537 0 obj <> endobj 18538 0 obj <> endobj 18539 0 obj <> endobj 18540 0 obj <> endobj 18541 0 obj <> endobj 18542 0 obj <> endobj 18543 0 obj <> endobj 18544 0 obj <> endobj 18545 0 obj <> endobj 18546 0 obj <> endobj 18547 0 obj <> endobj 18548 0 obj <> endobj 18549 0 obj <> endobj 18550 0 obj <> endobj 18551 0 obj <> endobj 18552 0 obj <> endobj 18553 0 obj <> endobj 18554 0 obj <> endobj 18555 0 obj <> endobj 18556 0 obj <> endobj 18557 0 obj <> endobj 18558 0 obj <> endobj 18559 0 obj <> endobj 18560 0 obj <> endobj 18561 0 obj <> endobj 18562 0 obj <> endobj 18563 0 obj <> endobj 18564 0 obj <> endobj 18565 0 obj <> endobj 18566 0 obj <> endobj 18567 0 obj <> endobj 18568 0 obj <> endobj 18569 0 obj <> endobj 18570 0 obj <> endobj 18571 0 obj <> endobj 18572 0 obj <> endobj 18573 0 obj <> endobj 18574 0 obj <> endobj 18575 0 obj <> endobj 18576 0 obj <> endobj 18577 0 obj <> endobj 18578 0 obj <> endobj 18579 0 obj <> endobj 18580 0 obj <> endobj 18581 0 obj <> endobj 18582 0 obj <> endobj 18583 0 obj <> endobj 18584 0 obj <> endobj 18585 0 obj <> endobj 18586 0 obj <> endobj 18587 0 obj <> endobj 18588 0 obj <> endobj 18589 0 obj <> endobj 18590 0 obj <> endobj 18591 0 obj <> endobj 18592 0 obj <> endobj 18593 0 obj <> endobj 18594 0 obj <> endobj 18595 0 obj <> endobj 18596 0 obj <> endobj 18597 0 obj <> endobj 18598 0 obj <> endobj 18599 0 obj <> endobj 18600 0 obj <> endobj 18601 0 obj <> endobj 18602 0 obj <> endobj 18603 0 obj <> endobj 18604 0 obj <> endobj 18605 0 obj <> endobj 18606 0 obj <> endobj 18607 0 obj <> endobj 18608 0 obj <> endobj 18609 0 obj <> endobj 18610 0 obj <> endobj 18611 0 obj <> endobj 18612 0 obj <> endobj 18613 0 obj <> endobj 18614 0 obj <> endobj 18615 0 obj <> endobj 18616 0 obj <> endobj 18617 0 obj <> endobj 18618 0 obj <> endobj 18619 0 obj <> endobj 18620 0 obj <> endobj 18621 0 obj <> endobj 18622 0 obj <> endobj 18623 0 obj <> endobj 18624 0 obj <> endobj 18625 0 obj <> endobj 18626 0 obj <> endobj 18627 0 obj <> endobj 18628 0 obj <> endobj 18629 0 obj <> endobj 18630 0 obj <> endobj 18631 0 obj <> endobj 18632 0 obj <> endobj 18633 0 obj <> endobj 18634 0 obj <> endobj 18635 0 obj <> endobj 18636 0 obj <> endobj 18637 0 obj <> endobj 18638 0 obj <> endobj 18639 0 obj <> endobj 18640 0 obj <> endobj 18641 0 obj <> endobj 18642 0 obj <> endobj 18643 0 obj <> endobj 18644 0 obj <> endobj 18645 0 obj <> endobj 18646 0 obj <> endobj 18647 0 obj <> endobj 18648 0 obj <> endobj 18649 0 obj <> endobj 18650 0 obj <> endobj 18651 0 obj <> endobj 18652 0 obj <> endobj 18653 0 obj <> endobj 18654 0 obj <> endobj 18655 0 obj <> endobj 18656 0 obj <> endobj 18657 0 obj <> endobj 18658 0 obj <> endobj 18659 0 obj <> endobj 18660 0 obj <> endobj 18661 0 obj <> endobj 18662 0 obj <> endobj 18663 0 obj <> endobj 18664 0 obj <> endobj 18665 0 obj <> endobj 18666 0 obj <> endobj 18667 0 obj <> endobj 18668 0 obj <> endobj 18669 0 obj <> endobj 18670 0 obj <> endobj 18671 0 obj <> endobj 18672 0 obj <> endobj 18673 0 obj <> endobj 18674 0 obj <> endobj 18675 0 obj <> endobj 18676 0 obj <> endobj 18677 0 obj <> endobj 18678 0 obj <> endobj 18679 0 obj <> endobj 18680 0 obj <> endobj 18681 0 obj <> endobj 18682 0 obj <> endobj 18683 0 obj <> endobj 18684 0 obj <> endobj 18685 0 obj <> endobj 18686 0 obj <> endobj 18687 0 obj <> endobj 18688 0 obj <> endobj 18689 0 obj <> endobj 18690 0 obj <> endobj 18691 0 obj <> endobj 18692 0 obj <> endobj 18693 0 obj <> endobj 18694 0 obj <> endobj 18695 0 obj <> endobj 18696 0 obj <> endobj 18697 0 obj <> endobj 18698 0 obj <> endobj 18699 0 obj <> endobj 18700 0 obj <> endobj 18701 0 obj <> endobj 18702 0 obj <> endobj 18703 0 obj <> endobj 18704 0 obj <> endobj 18705 0 obj <> endobj 18706 0 obj <> endobj 18707 0 obj <> endobj 18708 0 obj <> endobj 18709 0 obj <> endobj 18710 0 obj <> endobj 18711 0 obj <> endobj 18712 0 obj <> endobj 18713 0 obj <> endobj 18714 0 obj <> endobj 18715 0 obj <> endobj 18716 0 obj <> endobj 18717 0 obj <> endobj 18718 0 obj <> endobj 18719 0 obj <> endobj 18720 0 obj <> endobj 18721 0 obj <> endobj 18722 0 obj <> endobj 18723 0 obj <> endobj 18724 0 obj <> endobj 18725 0 obj <> endobj 18726 0 obj <> endobj 18727 0 obj <> endobj 18728 0 obj <> endobj 18729 0 obj <> endobj 18730 0 obj <> endobj 18731 0 obj <> endobj 18732 0 obj <> endobj 18733 0 obj <> endobj 18734 0 obj <> endobj 18735 0 obj <> endobj 18736 0 obj <> endobj 18737 0 obj <> endobj 18738 0 obj <> endobj 18739 0 obj <> endobj 18740 0 obj <> endobj 18741 0 obj <> endobj 18742 0 obj <> endobj 18743 0 obj <> endobj 18744 0 obj <> endobj 18745 0 obj <> endobj 18746 0 obj <> endobj 18747 0 obj <> endobj 18748 0 obj <> endobj 18749 0 obj <> endobj 18750 0 obj <> endobj 18751 0 obj <> endobj 18752 0 obj <> endobj 18753 0 obj <> endobj 18754 0 obj <> endobj 18755 0 obj <> endobj 18756 0 obj <> endobj 18757 0 obj <> endobj 18758 0 obj <> endobj 18759 0 obj <> endobj 18760 0 obj <> endobj 18761 0 obj <> endobj 18762 0 obj <> endobj 18763 0 obj <> endobj 18764 0 obj <> endobj 18765 0 obj <> endobj 18766 0 obj <> endobj 18767 0 obj <> endobj 18768 0 obj <> endobj 18769 0 obj <> endobj 18770 0 obj <> endobj 18771 0 obj <> endobj 18772 0 obj <> endobj 18773 0 obj <> endobj 18774 0 obj <> endobj 18775 0 obj <> endobj 18776 0 obj <> endobj 18777 0 obj <> endobj 18778 0 obj <> endobj 18779 0 obj <> endobj 18780 0 obj <> endobj 18781 0 obj <> endobj 18782 0 obj <> endobj 18783 0 obj <> endobj 18784 0 obj <> endobj 18785 0 obj <> endobj 18786 0 obj <> endobj 18787 0 obj <> endobj 18788 0 obj <> endobj 18789 0 obj <> endobj 18790 0 obj <> endobj 18791 0 obj <> endobj 18792 0 obj <> endobj 18793 0 obj <> endobj 18794 0 obj <> endobj 18795 0 obj <> endobj 18796 0 obj <> endobj 18797 0 obj <> endobj 18798 0 obj <> endobj 18799 0 obj <> endobj 18800 0 obj <> endobj 18801 0 obj <> endobj 18802 0 obj <> endobj 18803 0 obj <> endobj 18804 0 obj <> endobj 18805 0 obj <> endobj 18806 0 obj <> endobj 18807 0 obj <> endobj 18808 0 obj <> endobj 18809 0 obj <> endobj 18810 0 obj <> endobj 18811 0 obj <> endobj 18812 0 obj <> endobj 18813 0 obj <> endobj 18814 0 obj <> endobj 18815 0 obj <> endobj 18816 0 obj <> endobj 18817 0 obj <> endobj 18818 0 obj <> endobj 18819 0 obj <> endobj 18820 0 obj <> endobj 18821 0 obj <> endobj 18822 0 obj <> endobj 18823 0 obj <> endobj 18824 0 obj <> endobj 18825 0 obj <> endobj 18826 0 obj <> endobj 18827 0 obj <> endobj 18828 0 obj <> endobj 18829 0 obj <> endobj 18830 0 obj <> endobj 18831 0 obj <> endobj 18832 0 obj <> endobj 18833 0 obj <> endobj 18834 0 obj <> endobj 18835 0 obj <> endobj 18836 0 obj <> endobj 18837 0 obj <> endobj 18838 0 obj <> endobj 18839 0 obj <> endobj 18840 0 obj <> endobj 18841 0 obj <> endobj 18842 0 obj <> endobj 18843 0 obj <> endobj 18844 0 obj <> endobj 18845 0 obj <> endobj 18846 0 obj <> endobj 18847 0 obj <> endobj 18848 0 obj <> endobj 18849 0 obj <> endobj 18850 0 obj <> endobj 18851 0 obj <> endobj 18852 0 obj <> endobj 18853 0 obj <> endobj 18854 0 obj <> endobj 18855 0 obj <> endobj 18856 0 obj <> endobj 18857 0 obj <> endobj 18858 0 obj <> endobj 18859 0 obj <> endobj 18860 0 obj <> endobj 18861 0 obj <> endobj 18862 0 obj <> endobj 18863 0 obj <> endobj 18864 0 obj <> endobj 18865 0 obj <> endobj 18866 0 obj <> endobj 18867 0 obj <> endobj 18868 0 obj <> endobj 18869 0 obj <> endobj 18870 0 obj <> endobj 18871 0 obj <> endobj 18872 0 obj <> endobj 18873 0 obj <> endobj 18874 0 obj <> endobj 18875 0 obj <> endobj 18876 0 obj <> endobj 18877 0 obj <> endobj 18878 0 obj <> endobj 18879 0 obj <> endobj 18880 0 obj <> endobj 18881 0 obj <> endobj 18882 0 obj <> endobj 18883 0 obj <> endobj 18884 0 obj <> endobj 18885 0 obj <> endobj 18886 0 obj <> endobj 18887 0 obj <> endobj 18888 0 obj <> endobj 18889 0 obj <> endobj 18890 0 obj <> endobj 18891 0 obj <> endobj 18892 0 obj <> endobj 18893 0 obj <> endobj 18894 0 obj <> endobj 18895 0 obj <> endobj 18896 0 obj <> endobj 18897 0 obj <> endobj 18898 0 obj <> endobj 18899 0 obj <> endobj 18900 0 obj <> endobj 18901 0 obj <> endobj 18902 0 obj <> endobj 18903 0 obj <> endobj 18904 0 obj <> endobj 18905 0 obj <> endobj 18906 0 obj <> endobj 18907 0 obj <> endobj 18908 0 obj <> endobj 18909 0 obj <> endobj 18910 0 obj <> endobj 18911 0 obj <> endobj 18912 0 obj <> endobj 18913 0 obj <> endobj 18914 0 obj <> endobj 18915 0 obj <> endobj 18916 0 obj <> endobj 18917 0 obj <> endobj 18918 0 obj <> endobj 18919 0 obj <> endobj 18920 0 obj <> endobj 18921 0 obj <> endobj 18922 0 obj <> endobj 18923 0 obj <> endobj 18924 0 obj <> endobj 18925 0 obj <> endobj 18926 0 obj <> endobj 18927 0 obj <> endobj 18928 0 obj <> endobj 18929 0 obj <> endobj 18930 0 obj <> endobj 18931 0 obj <> endobj 18932 0 obj <> endobj 18933 0 obj <> endobj 18934 0 obj <> endobj 18935 0 obj <> endobj 18936 0 obj <> endobj 18937 0 obj <> endobj 18938 0 obj <> endobj 18939 0 obj <> endobj 18940 0 obj <> endobj 18941 0 obj <> endobj 18942 0 obj <> endobj 18943 0 obj <> endobj 18944 0 obj <> endobj 18945 0 obj <> endobj 18946 0 obj <> endobj 18947 0 obj <> endobj 18948 0 obj <> endobj 18949 0 obj <> endobj 18950 0 obj <> endobj 18951 0 obj <> endobj 18952 0 obj <> endobj 18953 0 obj <> endobj 18954 0 obj <> endobj 18955 0 obj <> endobj 18956 0 obj <> endobj 18957 0 obj <> endobj 18958 0 obj <> endobj 18959 0 obj <> endobj 18960 0 obj <> endobj 18961 0 obj <> endobj 18962 0 obj <> endobj 18963 0 obj <> endobj 18964 0 obj <> endobj 18965 0 obj <> endobj 18966 0 obj <> endobj 18967 0 obj <> endobj 18968 0 obj <> endobj 18969 0 obj <> endobj 18970 0 obj <> endobj 18971 0 obj <> endobj 18972 0 obj <> endobj 18973 0 obj <> endobj 18974 0 obj <> endobj 18975 0 obj <> endobj 18976 0 obj <> endobj 18977 0 obj <> endobj 18978 0 obj <> endobj 18979 0 obj <> endobj 18980 0 obj <> endobj 18981 0 obj <> endobj 18982 0 obj <> endobj 18983 0 obj <> endobj 18984 0 obj <> endobj 18985 0 obj <> endobj 18986 0 obj <> endobj 18987 0 obj <> endobj 18988 0 obj <> endobj 18989 0 obj <> endobj 18990 0 obj <> endobj 18991 0 obj <> endobj 18992 0 obj <> endobj 18993 0 obj <> endobj 18994 0 obj <> endobj 18995 0 obj <> endobj 18996 0 obj <> endobj 18997 0 obj <> endobj 18998 0 obj <> endobj 18999 0 obj <> endobj 19000 0 obj <> endobj 19001 0 obj <> endobj 19002 0 obj <> endobj 19003 0 obj <> endobj 19004 0 obj <> endobj 19005 0 obj <> endobj 19006 0 obj <> endobj 19007 0 obj <> endobj 19008 0 obj <> endobj 19009 0 obj <> endobj 19010 0 obj <> endobj 19011 0 obj <> endobj 19012 0 obj <> endobj 19013 0 obj <> endobj 19014 0 obj <> endobj 19015 0 obj <> endobj 19016 0 obj <> endobj 19017 0 obj <> endobj 19018 0 obj <> endobj 19019 0 obj <> endobj 19020 0 obj <> endobj 19021 0 obj <> endobj 19022 0 obj <> endobj 19023 0 obj <> endobj 19024 0 obj <> endobj 19025 0 obj <> endobj 19026 0 obj <> endobj 19027 0 obj <> endobj 19028 0 obj <> endobj 19029 0 obj <> endobj 19030 0 obj <> endobj 19031 0 obj <> endobj 19032 0 obj <> endobj 19033 0 obj <> endobj 19034 0 obj <> endobj 19035 0 obj <> endobj 19036 0 obj <> endobj 19037 0 obj <> endobj 19038 0 obj <> endobj 19039 0 obj <> endobj 19040 0 obj <> endobj 19041 0 obj <> endobj 19042 0 obj <> endobj 19043 0 obj <> endobj 19044 0 obj <> endobj 19045 0 obj <> endobj 19046 0 obj <> endobj 19047 0 obj <> endobj 19048 0 obj <> endobj 19049 0 obj <> endobj 19050 0 obj <> endobj 19051 0 obj <> endobj 19052 0 obj <> endobj 19053 0 obj <> endobj 19054 0 obj <> endobj 19055 0 obj <> endobj 19056 0 obj <> endobj 19057 0 obj <> endobj 19058 0 obj <> endobj 19059 0 obj <> endobj 19060 0 obj <> endobj 19061 0 obj <> endobj 19062 0 obj <> endobj 19063 0 obj <> endobj 19064 0 obj <> endobj 19065 0 obj <> endobj 19066 0 obj <> endobj 19067 0 obj <> endobj 19068 0 obj <> endobj 19069 0 obj <> endobj 19070 0 obj <> endobj 19071 0 obj <> endobj 19072 0 obj <> endobj 19073 0 obj <> endobj 19074 0 obj <> endobj 19075 0 obj <> endobj 19076 0 obj <> endobj 19077 0 obj <> endobj 19078 0 obj <> endobj 19079 0 obj <> endobj 19080 0 obj <> endobj 19081 0 obj <> endobj 19082 0 obj <> endobj 19083 0 obj <> endobj 19084 0 obj <> endobj 19085 0 obj <> endobj 19086 0 obj <> endobj 19087 0 obj <> endobj 19088 0 obj <> endobj 19089 0 obj <> endobj 19090 0 obj <> endobj 19091 0 obj <> endobj 19092 0 obj <> endobj 19093 0 obj <> endobj 19094 0 obj <> endobj 19095 0 obj <> endobj 19096 0 obj <> endobj 19097 0 obj <> endobj 19098 0 obj <> endobj 19099 0 obj <> endobj 19100 0 obj <> endobj 19101 0 obj <> endobj 19102 0 obj <> endobj 19103 0 obj <> endobj 19104 0 obj <> endobj 19105 0 obj <> endobj 19106 0 obj <> endobj 19107 0 obj <> endobj 19108 0 obj <> endobj 19109 0 obj <> endobj 19110 0 obj <> endobj 19111 0 obj <> endobj 19112 0 obj <> endobj 19113 0 obj <> endobj 19114 0 obj <> endobj 19115 0 obj <> endobj 19116 0 obj <> endobj 19117 0 obj <> endobj 19118 0 obj <> endobj 19119 0 obj <> endobj 19120 0 obj <> endobj 19121 0 obj <> endobj 19122 0 obj <> endobj 19123 0 obj <> endobj 19124 0 obj <> endobj 19125 0 obj <> endobj 19126 0 obj <> endobj 19127 0 obj <> endobj 19128 0 obj <> endobj 19129 0 obj <> endobj 19130 0 obj <> endobj 19131 0 obj <> endobj 19132 0 obj <> endobj 19133 0 obj <> endobj 19134 0 obj <> endobj 19135 0 obj <> endobj 19136 0 obj <> endobj 19137 0 obj <> endobj 19138 0 obj <> endobj 19139 0 obj <> endobj 19140 0 obj <> endobj 19141 0 obj <> endobj 19142 0 obj <> endobj 19143 0 obj <> endobj 19144 0 obj <> endobj 19145 0 obj <> endobj 19146 0 obj <> endobj 19147 0 obj <> endobj 19148 0 obj <> endobj 19149 0 obj <> endobj 19150 0 obj <> endobj 19151 0 obj <> endobj 19152 0 obj <> endobj 19153 0 obj <> endobj 19154 0 obj <> endobj 19155 0 obj <> endobj 19156 0 obj <> endobj 19157 0 obj <> endobj 19158 0 obj <> endobj 19159 0 obj <> endobj 19160 0 obj <> endobj 19161 0 obj <> endobj 19162 0 obj <> endobj 19163 0 obj <> endobj 19164 0 obj <> endobj 19165 0 obj <> endobj 19166 0 obj <> endobj 19167 0 obj <> endobj 19168 0 obj <> endobj 19169 0 obj <> endobj 19170 0 obj <> endobj 19171 0 obj <> endobj 19172 0 obj <> endobj 19173 0 obj <> endobj 19174 0 obj <> endobj 19175 0 obj <> endobj 19176 0 obj <> endobj 19177 0 obj <> endobj 19178 0 obj <> endobj 19179 0 obj <> endobj 19180 0 obj <> endobj 19181 0 obj <> endobj 19182 0 obj <> endobj 19183 0 obj <> endobj 19184 0 obj <> endobj 19185 0 obj <> endobj 19186 0 obj <> endobj 19187 0 obj <> endobj 19188 0 obj <> endobj 19189 0 obj <> endobj 19190 0 obj <> endobj 19191 0 obj <> endobj 19192 0 obj <> endobj 19193 0 obj <> endobj 19194 0 obj <> endobj 19195 0 obj <> endobj 19196 0 obj <> endobj 19197 0 obj <> endobj 19198 0 obj <> endobj 19199 0 obj <> endobj 19200 0 obj <> endobj 19201 0 obj <> endobj 19202 0 obj <> endobj 19203 0 obj <> endobj 19204 0 obj <> endobj 19205 0 obj <> endobj 19206 0 obj <> endobj 19207 0 obj <> endobj 19208 0 obj <> endobj 19209 0 obj <> endobj 19210 0 obj <> endobj 19211 0 obj <> endobj 19212 0 obj <> endobj 19213 0 obj <> endobj 19214 0 obj <> endobj 19215 0 obj <> endobj 19216 0 obj <> endobj 19217 0 obj <> endobj 19218 0 obj <> endobj 19219 0 obj <> endobj 19220 0 obj <> endobj 19221 0 obj <> endobj 19222 0 obj <> endobj 19223 0 obj <> endobj 19224 0 obj <> endobj 19225 0 obj <> endobj 19226 0 obj <> endobj 19227 0 obj <> endobj 19228 0 obj <> endobj 19229 0 obj <> endobj 19230 0 obj <> endobj 19231 0 obj <> endobj 19232 0 obj <> endobj 19233 0 obj <> endobj 19234 0 obj <> endobj 19235 0 obj <> endobj 19236 0 obj <> endobj 19237 0 obj <> endobj 19238 0 obj <> endobj 19239 0 obj <> endobj 19240 0 obj <> endobj 19241 0 obj <> endobj 19242 0 obj <> endobj 19243 0 obj <> endobj 19244 0 obj <> endobj 19245 0 obj <> endobj 19246 0 obj <> endobj 19247 0 obj <> endobj 19248 0 obj <> endobj 19249 0 obj <> endobj 19250 0 obj <> endobj 19251 0 obj <> endobj 19252 0 obj <> endobj 19253 0 obj <> endobj 19254 0 obj <> endobj 19255 0 obj <> endobj 19256 0 obj <> endobj 19257 0 obj <> endobj 19258 0 obj <> endobj 19259 0 obj <> endobj 19260 0 obj <> endobj 19261 0 obj <> endobj 19262 0 obj <> endobj 19263 0 obj <> endobj 19264 0 obj <> endobj 19265 0 obj <> endobj 19266 0 obj <> endobj 19267 0 obj <> endobj 19268 0 obj <> endobj 19269 0 obj <> endobj 19270 0 obj <> endobj 19271 0 obj <> endobj 19272 0 obj <> endobj 19273 0 obj <> endobj 19274 0 obj <> endobj 19275 0 obj <> endobj 19276 0 obj <> endobj 19277 0 obj <> endobj 19278 0 obj <> endobj 19279 0 obj <> endobj 19280 0 obj <> endobj 19281 0 obj <> endobj 19282 0 obj <> endobj 19283 0 obj <> endobj 19284 0 obj <> endobj 19285 0 obj <> endobj 19286 0 obj <> endobj 19287 0 obj <> endobj 19288 0 obj <> endobj 19289 0 obj <> endobj 19290 0 obj <> endobj 19291 0 obj <> endobj 19292 0 obj <> endobj 19293 0 obj <> endobj 19294 0 obj <> endobj 19295 0 obj <> endobj 19296 0 obj <> endobj 19297 0 obj <> endobj 19298 0 obj <> endobj 19299 0 obj <> endobj 19300 0 obj <> endobj 19301 0 obj <> endobj 19302 0 obj <> endobj 19303 0 obj <> endobj 19304 0 obj <> endobj 19305 0 obj <> endobj 19306 0 obj <> endobj 19307 0 obj <> endobj 19308 0 obj <> endobj 19309 0 obj <> endobj 19310 0 obj <> endobj 19311 0 obj <> endobj 19312 0 obj <> endobj 19313 0 obj <> endobj 19314 0 obj <> endobj 19315 0 obj <> endobj 19316 0 obj <> endobj 19317 0 obj <> endobj 19318 0 obj <> endobj 19319 0 obj <> endobj 19320 0 obj <> endobj 19321 0 obj <> endobj 19322 0 obj <> endobj 19323 0 obj <> endobj 19324 0 obj <> endobj 19325 0 obj <> endobj 19326 0 obj <> endobj 19327 0 obj <> endobj 19328 0 obj <> endobj 19329 0 obj <> endobj 19330 0 obj <> endobj 19331 0 obj <> endobj 19332 0 obj <> endobj 19333 0 obj <> endobj 19334 0 obj <> endobj 19335 0 obj <> endobj 19336 0 obj <> endobj 19337 0 obj <> endobj 19338 0 obj <> endobj 19339 0 obj <> endobj 19340 0 obj <> endobj 19341 0 obj <> endobj 19342 0 obj <> endobj 19343 0 obj <> endobj 19344 0 obj <> endobj 19345 0 obj <> endobj 19346 0 obj <> endobj 19347 0 obj <> endobj 19348 0 obj <> endobj 19349 0 obj <> endobj 19350 0 obj <> endobj 19351 0 obj <> endobj 19352 0 obj <> endobj 19353 0 obj <> endobj 19354 0 obj <> endobj 19355 0 obj <> endobj 19356 0 obj <> endobj 19357 0 obj <> endobj 19358 0 obj <> endobj 19359 0 obj <> endobj 19360 0 obj <> endobj 19361 0 obj <> endobj 19362 0 obj <> endobj 19363 0 obj <> endobj 19364 0 obj <> endobj 19365 0 obj <> endobj 19366 0 obj <> endobj 19367 0 obj <> endobj 19368 0 obj <> endobj 19369 0 obj <> endobj 19370 0 obj <> endobj 19371 0 obj <> endobj 19372 0 obj <> endobj 19373 0 obj <> endobj 19374 0 obj <> endobj 19375 0 obj <> endobj 19376 0 obj <> endobj 19377 0 obj <> endobj 19378 0 obj <> endobj 19379 0 obj <> endobj 19380 0 obj <> endobj 19381 0 obj <> endobj 19382 0 obj <> endobj 19383 0 obj <> endobj 19384 0 obj <> endobj 19385 0 obj <> endobj 19386 0 obj <> endobj 19387 0 obj <> endobj 19388 0 obj <> endobj 19389 0 obj <> endobj 19390 0 obj <> endobj 19391 0 obj <> endobj 19392 0 obj <> endobj 19393 0 obj <> endobj 19394 0 obj <> endobj 19395 0 obj <> endobj 19396 0 obj <> endobj 19397 0 obj <> endobj 19398 0 obj <> endobj 19399 0 obj <> endobj 19400 0 obj <> endobj 19401 0 obj <> endobj 19402 0 obj <> endobj 19403 0 obj <> endobj 19404 0 obj <> endobj 19405 0 obj <> endobj 19406 0 obj <> endobj 19407 0 obj <> endobj 19408 0 obj <> endobj 19409 0 obj <> endobj 19410 0 obj <> endobj 19411 0 obj <> endobj 19412 0 obj <> endobj 19413 0 obj <> endobj 19414 0 obj <> endobj 19415 0 obj <> endobj 19416 0 obj <> endobj 19417 0 obj <> endobj 19418 0 obj <> endobj 19419 0 obj <> endobj 19420 0 obj <> endobj 19421 0 obj <> endobj 19422 0 obj <> endobj 19423 0 obj <> endobj 19424 0 obj <> endobj 19425 0 obj <> endobj 19426 0 obj <> endobj 19427 0 obj <> endobj 19428 0 obj <> endobj 19429 0 obj <> endobj 19430 0 obj <> endobj 19431 0 obj <> endobj 19432 0 obj <> endobj 19433 0 obj <> endobj 19434 0 obj <> endobj 19435 0 obj <> endobj 19436 0 obj <> endobj 19437 0 obj <> endobj 19438 0 obj <> endobj 19439 0 obj <> endobj 19440 0 obj <> endobj 19441 0 obj <> endobj 19442 0 obj <> endobj 19443 0 obj <> endobj 19444 0 obj <> endobj 19445 0 obj <> endobj 19446 0 obj <> endobj 19447 0 obj <> endobj 19448 0 obj <> endobj 19449 0 obj <> endobj 19450 0 obj <> endobj 19451 0 obj <> endobj 19452 0 obj <> endobj 19453 0 obj <> endobj 19454 0 obj <> endobj 19455 0 obj <> endobj 19456 0 obj <> endobj 19457 0 obj <> endobj 19458 0 obj <> endobj 19459 0 obj <> endobj 19460 0 obj <> endobj 19461 0 obj <> endobj 19462 0 obj <> endobj 19463 0 obj <> endobj 19464 0 obj <> endobj 19465 0 obj <> endobj 19466 0 obj <> endobj 19467 0 obj <> endobj 19468 0 obj <> endobj 19469 0 obj <> endobj 19470 0 obj <> endobj 19471 0 obj <> endobj 19472 0 obj <> endobj 19473 0 obj <> endobj 19474 0 obj <> endobj 19475 0 obj <> endobj 19476 0 obj <> endobj 19477 0 obj <> endobj 19478 0 obj <> endobj 19479 0 obj <> endobj 19480 0 obj <> endobj 19481 0 obj <> endobj 19482 0 obj <> endobj 19483 0 obj <> endobj 19484 0 obj <> endobj 19485 0 obj <> endobj 19486 0 obj <> endobj 19487 0 obj <> endobj 19488 0 obj <> endobj 19489 0 obj <> endobj 19490 0 obj <> endobj 19491 0 obj <> endobj 19492 0 obj <> endobj 19493 0 obj <> endobj 19494 0 obj <> endobj 19495 0 obj <> endobj 19496 0 obj <> endobj 19497 0 obj <> endobj 19498 0 obj <> endobj 19499 0 obj <> endobj 19500 0 obj <> endobj 19501 0 obj <> endobj 19502 0 obj <> endobj 19503 0 obj <> endobj 19504 0 obj <> endobj 19505 0 obj <> endobj 19506 0 obj <> endobj 19507 0 obj <> endobj 19508 0 obj <> endobj 19509 0 obj <> endobj 19510 0 obj <> endobj 19511 0 obj <> endobj 19512 0 obj <> endobj 19513 0 obj <> endobj 19514 0 obj <> endobj 19515 0 obj <> endobj 19516 0 obj <> endobj 19517 0 obj <> endobj 19518 0 obj <> endobj 19519 0 obj <> endobj 19520 0 obj <> endobj 19521 0 obj <> endobj 19522 0 obj <> endobj 19523 0 obj <> endobj 19524 0 obj <> endobj 19525 0 obj <> endobj 19526 0 obj <> endobj 19527 0 obj <> endobj 19528 0 obj <> endobj 19529 0 obj <> endobj 19530 0 obj <> endobj 19531 0 obj <> endobj 19532 0 obj <> endobj 19533 0 obj <> endobj 19534 0 obj <> endobj 19535 0 obj <> endobj 19536 0 obj <> endobj 19537 0 obj <> endobj 19538 0 obj <> endobj 19539 0 obj <> endobj 19540 0 obj <> endobj 19541 0 obj <> endobj 19542 0 obj <> endobj 19543 0 obj <> endobj 19544 0 obj <> endobj 19545 0 obj <> endobj 19546 0 obj <> endobj 19547 0 obj <> endobj 19548 0 obj <> endobj 19549 0 obj <> endobj 19550 0 obj <> endobj 19551 0 obj <> endobj 19552 0 obj <> endobj 19553 0 obj <> endobj 19554 0 obj <> endobj 19555 0 obj <> endobj 19556 0 obj <> endobj 19557 0 obj <> endobj 19558 0 obj <> endobj 19559 0 obj <> endobj 19560 0 obj <> endobj 19561 0 obj <> endobj 19562 0 obj <> endobj 19563 0 obj <> endobj 19564 0 obj <> endobj 19565 0 obj <> endobj 19566 0 obj <> endobj 19567 0 obj <> endobj 19568 0 obj <> endobj 19569 0 obj <> endobj 19570 0 obj <> endobj 19571 0 obj <> endobj 19572 0 obj <> endobj 19573 0 obj <> endobj 19574 0 obj <> endobj 19575 0 obj <> endobj 19576 0 obj <> endobj 19577 0 obj <> endobj 19578 0 obj <> endobj 19579 0 obj <> endobj 19580 0 obj <> endobj 19581 0 obj <> endobj 19582 0 obj <> endobj 19583 0 obj <> endobj 19584 0 obj <> endobj 19585 0 obj <> endobj 19586 0 obj <> endobj 19587 0 obj <> endobj 19588 0 obj <> endobj 19589 0 obj <> endobj 19590 0 obj <> endobj 19591 0 obj <> endobj 19592 0 obj <> endobj 19593 0 obj <> endobj 19594 0 obj <> endobj 19595 0 obj <> endobj 19596 0 obj <> endobj 19597 0 obj <> endobj 19598 0 obj <> endobj 19599 0 obj <> endobj 19600 0 obj <> endobj 19601 0 obj <> endobj 19602 0 obj <> endobj 19603 0 obj <> endobj 19604 0 obj <> endobj 19605 0 obj <> endobj 19606 0 obj <> endobj 19607 0 obj <> endobj 19608 0 obj <> endobj 19609 0 obj <> endobj 19610 0 obj <> endobj 19611 0 obj <> endobj 19612 0 obj <> endobj 19613 0 obj <> endobj 19614 0 obj <> endobj 19615 0 obj <> endobj 19616 0 obj <> endobj 19617 0 obj <> endobj 19618 0 obj <> endobj 19619 0 obj <> endobj 19620 0 obj <> endobj 19621 0 obj <> endobj 19622 0 obj <> endobj 19623 0 obj <> endobj 19624 0 obj <> endobj 19625 0 obj <> endobj 19626 0 obj <> endobj 19627 0 obj <> endobj 19628 0 obj <> endobj 19629 0 obj <> endobj 19630 0 obj <> endobj 19631 0 obj <> endobj 19632 0 obj <> endobj 19633 0 obj <> endobj 19634 0 obj <> endobj 19635 0 obj <> endobj 19636 0 obj <> endobj 19637 0 obj <> endobj 19638 0 obj <> endobj 19639 0 obj <> endobj 19640 0 obj <> endobj 19641 0 obj <> endobj 19642 0 obj <> endobj 19643 0 obj <> endobj 19644 0 obj <> endobj 19645 0 obj <> endobj 19646 0 obj <> endobj 19647 0 obj <> endobj 19648 0 obj <> endobj 19649 0 obj <> endobj 19650 0 obj <> endobj 19651 0 obj <> endobj 19652 0 obj <> endobj 19653 0 obj <> endobj 19654 0 obj <> endobj 19655 0 obj <> endobj 19656 0 obj <> endobj 19657 0 obj <> endobj 19658 0 obj <> endobj 19659 0 obj <> endobj 19660 0 obj <> endobj 19661 0 obj <> endobj 19662 0 obj <> endobj 19663 0 obj <> endobj 19664 0 obj <> endobj 19665 0 obj <> endobj 19666 0 obj <> endobj 19667 0 obj <> endobj 19668 0 obj <> endobj 19669 0 obj <> endobj 19670 0 obj <> endobj 19671 0 obj <> endobj 19672 0 obj <> endobj 19673 0 obj <> endobj 19674 0 obj <> endobj 19675 0 obj <> endobj 19676 0 obj <> endobj 19677 0 obj <> endobj 19678 0 obj <> endobj 19679 0 obj <> endobj 19680 0 obj <> endobj 19681 0 obj <> endobj 19682 0 obj <> endobj 19683 0 obj <> endobj 19684 0 obj <> endobj 19685 0 obj <> endobj 19686 0 obj <> endobj 19687 0 obj <> endobj 19688 0 obj <> endobj 19689 0 obj <> endobj 19690 0 obj <> endobj 19691 0 obj <> endobj 19692 0 obj <> endobj 19693 0 obj <> endobj 19694 0 obj <> endobj 19695 0 obj <> endobj 19696 0 obj <> endobj 19697 0 obj <> endobj 19698 0 obj <> endobj 19699 0 obj <> endobj 19700 0 obj <> endobj 19701 0 obj <> endobj 19702 0 obj <> endobj 19703 0 obj <> endobj 19704 0 obj <> endobj 19705 0 obj <> endobj 19706 0 obj <> endobj 19707 0 obj <> endobj 19708 0 obj <> endobj 19709 0 obj <> endobj 19710 0 obj <> endobj 19711 0 obj <> endobj 19712 0 obj <> endobj 19713 0 obj <> endobj 19714 0 obj <> endobj 19715 0 obj <> endobj 19716 0 obj <> endobj 19717 0 obj <> endobj 19718 0 obj <> endobj 19719 0 obj <> endobj 19720 0 obj <> endobj 19721 0 obj <> endobj 19722 0 obj <> endobj 19723 0 obj <> endobj 19724 0 obj <> endobj 19725 0 obj <> endobj 19726 0 obj <> endobj 19727 0 obj <> endobj 19728 0 obj <> endobj 19729 0 obj <> endobj 19730 0 obj <> endobj 19731 0 obj <> endobj 19732 0 obj <> endobj 19733 0 obj <> endobj 19734 0 obj <> endobj 19735 0 obj <> endobj 19736 0 obj <> endobj 19737 0 obj <> endobj 19738 0 obj <> endobj 19739 0 obj <> endobj 19740 0 obj <> endobj 19741 0 obj <> endobj 19742 0 obj <> endobj 19743 0 obj <> endobj 19744 0 obj <> endobj 19745 0 obj <> endobj 19746 0 obj <> endobj 19747 0 obj <> endobj 19748 0 obj <> endobj 19749 0 obj <> endobj 19750 0 obj <> endobj 19751 0 obj <> endobj 19752 0 obj <> endobj 19753 0 obj <> endobj 19754 0 obj <> endobj 19755 0 obj <> endobj 19756 0 obj <> endobj 19757 0 obj <> endobj 19758 0 obj <> endobj 19759 0 obj <> endobj 19760 0 obj <> endobj 19761 0 obj <> endobj 19762 0 obj <> endobj 19763 0 obj <> endobj 19764 0 obj <> endobj 19765 0 obj <> endobj 19766 0 obj <> endobj 19767 0 obj <> endobj 19768 0 obj <> endobj 19769 0 obj <> endobj 19770 0 obj <> endobj 19771 0 obj <> endobj 19772 0 obj <> endobj 19773 0 obj <> endobj 19774 0 obj <> endobj 19775 0 obj <> endobj 19776 0 obj <> endobj 19777 0 obj <> endobj 19778 0 obj <> endobj 19779 0 obj <> endobj 19780 0 obj <> endobj 19781 0 obj <> endobj 19782 0 obj <> endobj 19783 0 obj <> endobj 19784 0 obj <> endobj 19785 0 obj <> endobj 19786 0 obj <> endobj 19787 0 obj <> endobj 19788 0 obj <> endobj 19789 0 obj <> endobj 19790 0 obj <> endobj 19791 0 obj <> endobj 19792 0 obj <> endobj 19793 0 obj <> endobj 19794 0 obj <> endobj 19795 0 obj <> endobj 19796 0 obj <> endobj 19797 0 obj <> endobj 19798 0 obj <> endobj 19799 0 obj <> endobj 19800 0 obj <> endobj 19801 0 obj <> endobj 19802 0 obj <> endobj 19803 0 obj <> endobj 19804 0 obj <> endobj 19805 0 obj <> endobj 19806 0 obj <> endobj 19807 0 obj <> endobj 19808 0 obj <> endobj 19809 0 obj <> endobj 19810 0 obj <> endobj 19811 0 obj <> endobj 19812 0 obj <> endobj 19813 0 obj <> endobj 19814 0 obj <> endobj 19815 0 obj <> endobj 19816 0 obj <> endobj 19817 0 obj <> endobj 19818 0 obj <> endobj 19819 0 obj <> endobj 19820 0 obj <> endobj 19821 0 obj <> endobj 19822 0 obj <> endobj 19823 0 obj <> endobj 19824 0 obj <> endobj 19825 0 obj <> endobj 19826 0 obj <> endobj 19827 0 obj <> endobj 19828 0 obj <> endobj 19829 0 obj <> endobj 19830 0 obj <> endobj 19831 0 obj <> endobj 19832 0 obj <> endobj 19833 0 obj <> endobj 19834 0 obj <> endobj 19835 0 obj <> endobj 19836 0 obj <> endobj 19837 0 obj <> endobj 19838 0 obj <> endobj 19839 0 obj <> endobj 19840 0 obj <> endobj 19841 0 obj <> endobj 19842 0 obj <> endobj 19843 0 obj <> endobj 19844 0 obj <> endobj 19845 0 obj <> endobj 19846 0 obj <> endobj 19847 0 obj <> endobj 19848 0 obj <> endobj 19849 0 obj <> endobj 19850 0 obj <> endobj 19851 0 obj <> endobj 19852 0 obj <> endobj 19853 0 obj <> endobj 19854 0 obj <> endobj 19855 0 obj <> endobj 19856 0 obj <> endobj 19857 0 obj <> endobj 19858 0 obj <> endobj 19859 0 obj <> endobj 19860 0 obj <> endobj 19861 0 obj <> endobj 19862 0 obj <> endobj 19863 0 obj <> endobj 19864 0 obj <> endobj 19865 0 obj <> endobj 19866 0 obj <> endobj 19867 0 obj <> endobj 19868 0 obj <> endobj 19869 0 obj <> endobj 19870 0 obj <> endobj 19871 0 obj <> endobj 19872 0 obj <> endobj 19873 0 obj <> endobj 19874 0 obj <> endobj 19875 0 obj <> endobj 19876 0 obj <> endobj 19877 0 obj <> endobj 19878 0 obj <> endobj 19879 0 obj <> endobj 19880 0 obj <> endobj 19881 0 obj <> endobj 19882 0 obj <> endobj 19883 0 obj <> endobj 19884 0 obj <> endobj 19885 0 obj <> endobj 19886 0 obj <> endobj 19887 0 obj <> endobj 19888 0 obj <> endobj 19889 0 obj <> endobj 19890 0 obj <> endobj 19891 0 obj <> endobj 19892 0 obj <> endobj 19893 0 obj <> endobj 19894 0 obj <> endobj 19895 0 obj <> endobj 19896 0 obj <> endobj 19897 0 obj <> endobj 19898 0 obj <> endobj 19899 0 obj <> endobj 19900 0 obj <> endobj 19901 0 obj <> endobj 19902 0 obj <> endobj 19903 0 obj <> endobj 19904 0 obj <> endobj 19905 0 obj <> endobj 19906 0 obj <> endobj 19907 0 obj <> endobj 19908 0 obj <> endobj 19909 0 obj <> endobj 19910 0 obj <> endobj 19911 0 obj <> endobj 19912 0 obj <> endobj 19913 0 obj <> endobj 19914 0 obj <> endobj 19915 0 obj <> endobj 19916 0 obj <> endobj 19917 0 obj <> endobj 19918 0 obj <> endobj 19919 0 obj <> endobj 19920 0 obj <> endobj 19921 0 obj <> endobj 19922 0 obj <> endobj 19923 0 obj <> endobj 19924 0 obj <> endobj 19925 0 obj <> endobj 19926 0 obj <> endobj 19927 0 obj <> endobj 19928 0 obj <> endobj 19929 0 obj <> endobj 19930 0 obj <> endobj 19931 0 obj <> endobj 19932 0 obj <> endobj 19933 0 obj <> endobj 19934 0 obj <> endobj 19935 0 obj <> endobj 19936 0 obj <> endobj 19937 0 obj <> endobj 19938 0 obj <> endobj 19939 0 obj <> endobj 19940 0 obj <> endobj 19941 0 obj <> endobj 19942 0 obj <> endobj 19943 0 obj <> endobj 19944 0 obj <> endobj 19945 0 obj <> endobj 19946 0 obj <> endobj 19947 0 obj <> endobj 19948 0 obj <> endobj 19949 0 obj <> endobj 19950 0 obj <> endobj 19951 0 obj <> endobj 19952 0 obj <> endobj 19953 0 obj <> endobj 19954 0 obj <> endobj 19955 0 obj <> endobj 19956 0 obj <> endobj 19957 0 obj <> endobj 19958 0 obj <> endobj 19959 0 obj <> endobj 19960 0 obj <> endobj 19961 0 obj <> endobj 19962 0 obj <> endobj 19963 0 obj <> endobj 19964 0 obj <> endobj 19965 0 obj <> endobj 19966 0 obj <> endobj 19967 0 obj <> endobj 19968 0 obj <> endobj 19969 0 obj <> endobj 19970 0 obj <> endobj 19971 0 obj <> endobj 19972 0 obj <> endobj 19973 0 obj <> endobj 19974 0 obj <> endobj 19975 0 obj <> endobj 19976 0 obj <> endobj 19977 0 obj <> endobj 19978 0 obj <> endobj 19979 0 obj <> endobj 19980 0 obj <> endobj 19981 0 obj <> endobj 19982 0 obj <> endobj 19983 0 obj <> endobj 19984 0 obj <> endobj 19985 0 obj <> endobj 19986 0 obj <> endobj 19987 0 obj <> endobj 19988 0 obj <> endobj 19989 0 obj <> endobj 19990 0 obj <> endobj 19991 0 obj <> endobj 19992 0 obj <> endobj 19993 0 obj <> endobj 19994 0 obj <> endobj 19995 0 obj <> endobj 19996 0 obj <> endobj 19997 0 obj <> endobj 19998 0 obj <> endobj 19999 0 obj <> endobj 20000 0 obj <> endobj 20001 0 obj <> endobj 20002 0 obj <> endobj 20003 0 obj <> endobj 20004 0 obj <> endobj 20005 0 obj <> endobj 20006 0 obj <> endobj 20007 0 obj <> endobj 20008 0 obj <> endobj 20009 0 obj <> endobj 20010 0 obj <> endobj 20011 0 obj <> endobj 20012 0 obj <> endobj 20013 0 obj <> endobj 20014 0 obj <> endobj 20015 0 obj <> endobj 20016 0 obj <> endobj 20017 0 obj <> endobj 20018 0 obj <> endobj 20019 0 obj <> endobj 20020 0 obj <> endobj 20021 0 obj <> endobj 20022 0 obj <> endobj 20023 0 obj <> endobj 20024 0 obj <> endobj 20025 0 obj <> endobj 20026 0 obj <> endobj 20027 0 obj <> endobj 20028 0 obj <> endobj 20029 0 obj <> endobj 20030 0 obj <> endobj 20031 0 obj <> endobj 20032 0 obj <> endobj 20033 0 obj <> endobj 20034 0 obj <> endobj 20035 0 obj <> endobj 20036 0 obj <> endobj 20037 0 obj <> endobj 20038 0 obj <> endobj 20039 0 obj <> endobj 20040 0 obj <> endobj 20041 0 obj <> endobj 20042 0 obj <> endobj 20043 0 obj <> endobj 20044 0 obj <> endobj 20045 0 obj <> endobj 20046 0 obj <> endobj 20047 0 obj <> endobj 20048 0 obj <> endobj 20049 0 obj <> endobj 20050 0 obj <> endobj 20051 0 obj <> endobj 20052 0 obj <> endobj 20053 0 obj <> endobj 20054 0 obj <> endobj 20055 0 obj <> endobj 20056 0 obj <> endobj 20057 0 obj <> endobj 20058 0 obj <> endobj 20059 0 obj <> endobj 20060 0 obj <> endobj 20061 0 obj <> endobj 20062 0 obj <> endobj 20063 0 obj <> endobj 20064 0 obj <> endobj 20065 0 obj <> endobj 20066 0 obj <> endobj 20067 0 obj <> endobj 20068 0 obj <> endobj 20069 0 obj <> endobj 20070 0 obj <> endobj 20071 0 obj <> endobj 20072 0 obj <> endobj 20073 0 obj <> endobj 20074 0 obj <> endobj 20075 0 obj <> endobj 20076 0 obj <> endobj 20077 0 obj <> endobj 20078 0 obj <> endobj 20079 0 obj <> endobj 20080 0 obj <> endobj 20081 0 obj <> endobj 20082 0 obj <> endobj 20083 0 obj <> endobj 20084 0 obj <> endobj 20085 0 obj <> endobj 20086 0 obj <> endobj 20087 0 obj <> endobj 20088 0 obj <> endobj 20089 0 obj <> endobj 20090 0 obj <> endobj 20091 0 obj <> endobj 20092 0 obj <> endobj 20093 0 obj <> endobj 20094 0 obj <> endobj 20095 0 obj <> endobj 20096 0 obj <> endobj 20097 0 obj <> endobj 20098 0 obj <> endobj 20099 0 obj <> endobj 20100 0 obj <> endobj 20101 0 obj <> endobj 20102 0 obj <> endobj 20103 0 obj <> endobj 20104 0 obj <> endobj 20105 0 obj <> endobj 20106 0 obj <> endobj 20107 0 obj <> endobj 20108 0 obj <> endobj 20109 0 obj <> endobj 20110 0 obj <> endobj 20111 0 obj <> endobj 20112 0 obj <> endobj 20113 0 obj <> endobj 20114 0 obj <> endobj 20115 0 obj <> endobj 20116 0 obj <> endobj 20117 0 obj <> endobj 20118 0 obj <> endobj 20119 0 obj <> endobj 20120 0 obj <> endobj 20121 0 obj <> endobj 20122 0 obj <> endobj 20123 0 obj <> endobj 20124 0 obj <> endobj 20125 0 obj <> endobj 20126 0 obj <> endobj 20127 0 obj <> endobj 20128 0 obj <> endobj 20129 0 obj <> endobj 20130 0 obj <> endobj 20131 0 obj <> endobj 20132 0 obj <> endobj 20133 0 obj <> endobj 20134 0 obj <> endobj 20135 0 obj <> endobj 20136 0 obj <> endobj 20137 0 obj <> endobj 20138 0 obj <> endobj 20139 0 obj <> endobj 20140 0 obj <> endobj 20141 0 obj <> endobj 20142 0 obj <> endobj 20143 0 obj <> endobj 20144 0 obj <> endobj 20145 0 obj <> endobj 20146 0 obj <> endobj 20147 0 obj <> endobj 20148 0 obj <> endobj 20149 0 obj <> endobj 20150 0 obj <> endobj 20151 0 obj <> endobj 20152 0 obj <> endobj 20153 0 obj <> endobj 20154 0 obj <> endobj 20155 0 obj <> endobj 20156 0 obj <> endobj 20157 0 obj <> endobj 20158 0 obj <> endobj 20159 0 obj <> endobj 20160 0 obj <> endobj 20161 0 obj <> endobj 20162 0 obj <> endobj 20163 0 obj <> endobj 20164 0 obj <> endobj 20165 0 obj <> endobj 20166 0 obj <> endobj 20167 0 obj <> endobj 20168 0 obj <> endobj 20169 0 obj <> endobj 20170 0 obj <> endobj 20171 0 obj <> endobj 20172 0 obj <> endobj 20173 0 obj <> endobj 20174 0 obj <> endobj 20175 0 obj <> endobj 20176 0 obj <> endobj 20177 0 obj <> endobj 20178 0 obj <> endobj 20179 0 obj <> endobj 20180 0 obj <> endobj 20181 0 obj <> endobj 20182 0 obj <> endobj 20183 0 obj <> endobj 20184 0 obj <> endobj 20185 0 obj <> endobj 20186 0 obj <> endobj 20187 0 obj <> endobj 20188 0 obj <> endobj 20189 0 obj <> endobj 20190 0 obj <> endobj 20191 0 obj <> endobj 20192 0 obj <> endobj 20193 0 obj <> endobj 20194 0 obj <> endobj 20195 0 obj <> endobj 20196 0 obj <> endobj 20197 0 obj <> endobj 20198 0 obj <> endobj 20199 0 obj <> endobj 20200 0 obj <> endobj 20201 0 obj <> endobj 20202 0 obj <> endobj 20203 0 obj <> endobj 20204 0 obj <> endobj 20205 0 obj <> endobj 20206 0 obj <> endobj 20207 0 obj <> endobj 20208 0 obj <> endobj 20209 0 obj <> endobj 20210 0 obj <> endobj 20211 0 obj <> endobj 20212 0 obj <> endobj 20213 0 obj <> endobj 20214 0 obj <> endobj 20215 0 obj <> endobj 20216 0 obj <> endobj 20217 0 obj <> endobj 20218 0 obj <> endobj 20219 0 obj <> endobj 20220 0 obj <> endobj 20221 0 obj <> endobj 20222 0 obj <> endobj 20223 0 obj <> endobj 20224 0 obj <> endobj 20225 0 obj <> endobj 20226 0 obj <> endobj 20227 0 obj <> endobj 20228 0 obj <> endobj 20229 0 obj <> endobj 20230 0 obj <> endobj 20231 0 obj <> endobj 20232 0 obj <> endobj 20233 0 obj <> endobj 20234 0 obj <> endobj 20235 0 obj <> endobj 20236 0 obj <> endobj 20237 0 obj <> endobj 20238 0 obj <> endobj 20239 0 obj <> endobj 20240 0 obj <> endobj 20241 0 obj <> endobj 20242 0 obj <> endobj 20243 0 obj <> endobj 20244 0 obj <> endobj 20245 0 obj <> endobj 20246 0 obj <> endobj 20247 0 obj <> endobj 20248 0 obj <> endobj 20249 0 obj <> endobj 20250 0 obj <> endobj 20251 0 obj <> endobj 20252 0 obj <> endobj 20253 0 obj <> endobj 20254 0 obj <> endobj 20255 0 obj <> endobj 20256 0 obj <> endobj 20257 0 obj <> endobj 20258 0 obj <> endobj 20259 0 obj <> endobj 20260 0 obj <> endobj 20261 0 obj <> endobj 20262 0 obj <> endobj 20263 0 obj <> endobj 20264 0 obj <> endobj 20265 0 obj <> endobj 20266 0 obj <> endobj 20267 0 obj <> endobj 20268 0 obj <> endobj 20269 0 obj <> endobj 20270 0 obj <> endobj 20271 0 obj <> endobj 20272 0 obj <> endobj 20273 0 obj <> endobj 20274 0 obj <> endobj 20275 0 obj <> endobj 20276 0 obj <> endobj 20277 0 obj <> endobj 20278 0 obj <> endobj 20279 0 obj <> endobj 20280 0 obj <> endobj 20281 0 obj <> endobj 20282 0 obj <> endobj 20283 0 obj <> endobj 20284 0 obj <> endobj 20285 0 obj <> endobj 20286 0 obj <> endobj 20287 0 obj <> endobj 20288 0 obj <> endobj 20289 0 obj <> endobj 20290 0 obj <> endobj 20291 0 obj <> endobj 20292 0 obj <> endobj 20293 0 obj <> endobj 20294 0 obj <> endobj 20295 0 obj <> endobj 20296 0 obj <> endobj 20297 0 obj <> endobj 20298 0 obj <> endobj 20299 0 obj <> endobj 20300 0 obj <> endobj 20301 0 obj <> endobj 20302 0 obj <> endobj 20303 0 obj <> endobj 20304 0 obj <> endobj 20305 0 obj <> endobj 20306 0 obj <> endobj 20307 0 obj <> endobj 20308 0 obj <> endobj 20309 0 obj <> endobj 20310 0 obj <> endobj 20311 0 obj <> endobj 20312 0 obj <> endobj 20313 0 obj <> endobj 20314 0 obj <> endobj 20315 0 obj <> endobj 20316 0 obj <> endobj 20317 0 obj <> endobj 20318 0 obj <> endobj 20319 0 obj <> endobj 20320 0 obj <> endobj 20321 0 obj <> endobj 20322 0 obj <> endobj 20323 0 obj <> endobj 20324 0 obj <> endobj 20325 0 obj <> endobj 20326 0 obj <> endobj 20327 0 obj <> endobj 20328 0 obj <> endobj 20329 0 obj <> endobj 20330 0 obj <> endobj 20331 0 obj <> endobj 20332 0 obj <> endobj 20333 0 obj <> endobj 20334 0 obj <> endobj 20335 0 obj <> endobj 20336 0 obj <> endobj 20337 0 obj <> endobj 20338 0 obj <> endobj 20339 0 obj <> endobj 20340 0 obj <> endobj 20341 0 obj <> endobj 20342 0 obj <> endobj 20343 0 obj <> endobj 20344 0 obj <> endobj 20345 0 obj <> endobj 20346 0 obj <> endobj 20347 0 obj <> endobj 20348 0 obj <> endobj 20349 0 obj <> endobj 20350 0 obj <> endobj 20351 0 obj <> endobj 20352 0 obj <> endobj 20353 0 obj <> endobj 20354 0 obj <> endobj 20355 0 obj <> endobj 20356 0 obj <> endobj 20357 0 obj <> endobj 20358 0 obj <> endobj 20359 0 obj <> endobj 20360 0 obj <> endobj 20361 0 obj <> endobj 20362 0 obj <> endobj 20363 0 obj <> endobj 20364 0 obj <> endobj 20365 0 obj <> endobj 20366 0 obj <> endobj 20367 0 obj <> endobj 20368 0 obj <> endobj 20369 0 obj <> endobj 20370 0 obj <> endobj 20371 0 obj <> endobj 20372 0 obj <> endobj 20373 0 obj <> endobj 20374 0 obj <> endobj 20375 0 obj <> endobj 20376 0 obj <> endobj 20377 0 obj <> endobj 20378 0 obj <> endobj 20379 0 obj <> endobj 20380 0 obj <> endobj 20381 0 obj <> endobj 20382 0 obj <> endobj 20383 0 obj <> endobj 20384 0 obj <> endobj 20385 0 obj <> endobj 20386 0 obj <> endobj 20387 0 obj <> endobj 20388 0 obj <> endobj 20389 0 obj <> endobj 20390 0 obj <> endobj 20391 0 obj <> endobj 20392 0 obj <> endobj 20393 0 obj <> endobj 20394 0 obj <> endobj 20395 0 obj <> endobj 20396 0 obj <> endobj 20397 0 obj <> endobj 20398 0 obj <> endobj 20399 0 obj <> endobj 20400 0 obj <> endobj 20401 0 obj <> endobj 20402 0 obj <> endobj 20403 0 obj <> endobj 20404 0 obj <> endobj 20405 0 obj <> endobj 20406 0 obj <> endobj 20407 0 obj <> endobj 20408 0 obj <> endobj 20409 0 obj <> endobj 20410 0 obj <> endobj 20411 0 obj <> endobj 20412 0 obj <> endobj 20413 0 obj <> endobj 20414 0 obj <> endobj 20415 0 obj <> endobj 20416 0 obj <> endobj 20417 0 obj <> endobj 20418 0 obj <> endobj 20419 0 obj <> endobj 20420 0 obj <> endobj 20421 0 obj <> endobj 20422 0 obj <> endobj 20423 0 obj <> endobj 20424 0 obj <> endobj 20425 0 obj <> endobj 20426 0 obj <> endobj 20427 0 obj <> endobj 20428 0 obj <> endobj 20429 0 obj <> endobj 20430 0 obj <> endobj 20431 0 obj <> endobj 20432 0 obj <> endobj 20433 0 obj <> endobj 20434 0 obj <> endobj 20435 0 obj <> endobj 20436 0 obj <> endobj 20437 0 obj <> endobj 20438 0 obj <> endobj 20439 0 obj <> endobj 20440 0 obj <> endobj 20441 0 obj <> endobj 20442 0 obj <> endobj 20443 0 obj <> endobj 20444 0 obj <> endobj 20445 0 obj <> endobj 20446 0 obj <> endobj 20447 0 obj <> endobj 20448 0 obj <> endobj 20449 0 obj <> endobj 20450 0 obj <> endobj 20451 0 obj <> endobj 20452 0 obj <> endobj 20453 0 obj <> endobj 20454 0 obj <> endobj 20455 0 obj <> endobj 20456 0 obj <> endobj 20457 0 obj <> endobj 20458 0 obj <> endobj 20459 0 obj <> endobj 20460 0 obj <> endobj 20461 0 obj <> endobj 20462 0 obj <> endobj 20463 0 obj <> endobj 20464 0 obj <> endobj 20465 0 obj <> endobj 20466 0 obj <> endobj 20467 0 obj <> endobj 20468 0 obj <> endobj 20469 0 obj <> endobj 20470 0 obj <> endobj 20471 0 obj <> endobj 20472 0 obj <> endobj 20473 0 obj <> endobj 20474 0 obj <> endobj 20475 0 obj <> endobj 20476 0 obj <> endobj 20477 0 obj <> endobj 20478 0 obj <> endobj 20479 0 obj <> endobj 20480 0 obj <> endobj 20481 0 obj <> endobj 20482 0 obj <> endobj 20483 0 obj <> endobj 20484 0 obj <> endobj 20485 0 obj <> endobj 20486 0 obj <> endobj 20487 0 obj <> endobj 20488 0 obj <> endobj 20489 0 obj <> endobj 20490 0 obj <> endobj 20491 0 obj <> endobj 20492 0 obj <> endobj 20493 0 obj <> endobj 20494 0 obj <> endobj 20495 0 obj <> endobj 20496 0 obj <> endobj 20497 0 obj <> endobj 20498 0 obj <> endobj 20499 0 obj <> endobj 20500 0 obj <> endobj 20501 0 obj <> endobj 20502 0 obj <> endobj 20503 0 obj <> endobj 20504 0 obj <> endobj 20505 0 obj <> endobj 20506 0 obj <> endobj 20507 0 obj <> endobj 20508 0 obj <> endobj 20509 0 obj <> endobj 20510 0 obj <> endobj 20511 0 obj <> endobj 20512 0 obj <> endobj 20513 0 obj <> endobj 20514 0 obj <> endobj 20515 0 obj <> endobj 20516 0 obj <> endobj 20517 0 obj <> endobj 20518 0 obj <> endobj 20519 0 obj <> endobj 20520 0 obj <> endobj 20521 0 obj <> endobj 20522 0 obj <> endobj 20523 0 obj <> endobj 20524 0 obj <> endobj 20525 0 obj <> endobj 20526 0 obj <> endobj 20527 0 obj <> endobj 20528 0 obj <> endobj 20529 0 obj <> endobj 20530 0 obj <> endobj 20531 0 obj <> endobj 20532 0 obj <> endobj 20533 0 obj <> endobj 20534 0 obj <> endobj 20535 0 obj <> endobj 20536 0 obj <> endobj 20537 0 obj <> endobj 20538 0 obj <> endobj 20539 0 obj <> endobj 20540 0 obj <> endobj 20541 0 obj <> endobj 20542 0 obj <> endobj 20543 0 obj <> endobj 20544 0 obj <> endobj 20545 0 obj <> endobj 20546 0 obj <> endobj 20547 0 obj <> endobj 20548 0 obj <> endobj 20549 0 obj <> endobj 20550 0 obj <> endobj 20551 0 obj <> endobj 20552 0 obj <> endobj 20553 0 obj <> endobj 20554 0 obj <> endobj 20555 0 obj <> endobj 20556 0 obj <> endobj 20557 0 obj <> endobj 20558 0 obj <> endobj 20559 0 obj <> endobj 20560 0 obj <> endobj 20561 0 obj <> endobj 20562 0 obj <> endobj 20563 0 obj <> endobj 20564 0 obj <> endobj 20565 0 obj <> endobj 20566 0 obj <> endobj 20567 0 obj <> endobj 20568 0 obj <> endobj 20569 0 obj <> endobj 20570 0 obj <> endobj 20571 0 obj <> endobj 20572 0 obj <> endobj 20573 0 obj <> endobj 20574 0 obj <> endobj 20575 0 obj <> endobj 20576 0 obj <> endobj 20577 0 obj <> endobj 20578 0 obj <> endobj 20579 0 obj <> endobj 20580 0 obj <> endobj 20581 0 obj <> endobj 20582 0 obj <> endobj 20583 0 obj <> endobj 20584 0 obj <> endobj 20585 0 obj <> endobj 20586 0 obj <> endobj 20587 0 obj <> endobj 20588 0 obj <> endobj 20589 0 obj <> endobj 20590 0 obj <> endobj 20591 0 obj <> endobj 20592 0 obj <> endobj 20593 0 obj <> endobj 20594 0 obj <> endobj 20595 0 obj <> endobj 20596 0 obj <> endobj 20597 0 obj <> endobj 20598 0 obj <> endobj 20599 0 obj <> endobj 20600 0 obj <> endobj 20601 0 obj <> endobj 20602 0 obj <> endobj 20603 0 obj <> endobj 20604 0 obj <> endobj 20605 0 obj <> endobj 20606 0 obj <> endobj 20607 0 obj <> endobj 20608 0 obj <> endobj 20609 0 obj <> endobj 20610 0 obj <> endobj 20611 0 obj <> endobj 20612 0 obj <> endobj 20613 0 obj <> endobj 20614 0 obj <> endobj 20615 0 obj <> endobj 20616 0 obj <> endobj 20617 0 obj <> endobj 20618 0 obj <> endobj 20619 0 obj <> endobj 20620 0 obj <> endobj 20621 0 obj <> endobj 20622 0 obj <> endobj 20623 0 obj <> endobj 20624 0 obj <> endobj 20625 0 obj <> endobj 20626 0 obj <> endobj 20627 0 obj <> endobj 20628 0 obj <> endobj 20629 0 obj <> endobj 20630 0 obj <> endobj 20631 0 obj <> endobj 20632 0 obj <> endobj 20633 0 obj <> endobj 20634 0 obj <> endobj 20635 0 obj <> endobj 20636 0 obj <> endobj 20637 0 obj <> endobj 20638 0 obj <> endobj 20639 0 obj <> endobj 20640 0 obj <> endobj 20641 0 obj <> endobj 20642 0 obj <> endobj 20643 0 obj <> endobj 20644 0 obj <> endobj 20645 0 obj <> endobj 20646 0 obj <> endobj 20647 0 obj <> endobj 20648 0 obj <> endobj 20649 0 obj <> endobj 20650 0 obj <> endobj 20651 0 obj <> endobj 20652 0 obj <> endobj 20653 0 obj <> endobj 20654 0 obj <> endobj 20655 0 obj <> endobj 20656 0 obj <> endobj 20657 0 obj <> endobj 20658 0 obj <> endobj 20659 0 obj <> endobj 20660 0 obj <> endobj 20661 0 obj <> endobj 20662 0 obj <> endobj 20663 0 obj <> endobj 20664 0 obj <> endobj 20665 0 obj <> endobj 20666 0 obj <> endobj 20667 0 obj <> endobj 20668 0 obj <> endobj 20669 0 obj <> endobj 20670 0 obj <> endobj 20671 0 obj <> endobj 20672 0 obj <> endobj 20673 0 obj <> endobj 20674 0 obj <> endobj 20675 0 obj <> endobj 20676 0 obj <> endobj 20677 0 obj <> endobj 20678 0 obj <> endobj 20679 0 obj <> endobj 20680 0 obj <> endobj 20681 0 obj <> endobj 20682 0 obj <> endobj 20683 0 obj <> endobj 20684 0 obj <> endobj 20685 0 obj <> endobj 20686 0 obj <> endobj 20687 0 obj <> endobj 20688 0 obj <> endobj 20689 0 obj <> endobj 20690 0 obj <> endobj 20691 0 obj <> endobj 20692 0 obj <> endobj 20693 0 obj <> endobj 20694 0 obj <> endobj 20695 0 obj <> endobj 20696 0 obj <> endobj 20697 0 obj <> endobj 20698 0 obj <> endobj 20699 0 obj <> endobj 20700 0 obj <> endobj 20701 0 obj <> endobj 20702 0 obj <> endobj 20703 0 obj <> endobj 20704 0 obj <> endobj 20705 0 obj <> endobj 20706 0 obj <> endobj 20707 0 obj <> endobj 20708 0 obj <> endobj 20709 0 obj <> endobj 20710 0 obj <> endobj 20711 0 obj <> endobj 20712 0 obj <> endobj 20713 0 obj <> endobj 20714 0 obj <> endobj 20715 0 obj <> endobj 20716 0 obj <> endobj 20717 0 obj <> endobj 20718 0 obj <> endobj 20719 0 obj <> endobj 20720 0 obj <> endobj 20721 0 obj <> endobj 20722 0 obj <> endobj 20723 0 obj <> endobj 20724 0 obj <> endobj 20725 0 obj <> endobj 20726 0 obj <> endobj 20727 0 obj <> endobj 20728 0 obj <> endobj 20729 0 obj <> endobj 20730 0 obj <> endobj 20731 0 obj <> endobj 20732 0 obj <> endobj 20733 0 obj <> endobj 20734 0 obj <> endobj 20735 0 obj <> endobj 20736 0 obj <> endobj 20737 0 obj <> endobj 20738 0 obj <> endobj 20739 0 obj <> endobj 20740 0 obj <> endobj 20741 0 obj <> endobj 20742 0 obj <> endobj 20743 0 obj <> endobj 20744 0 obj <> endobj 20745 0 obj <> endobj 20746 0 obj <> endobj 20747 0 obj <> endobj 20748 0 obj <> endobj 20749 0 obj <> endobj 20750 0 obj <> endobj 20751 0 obj <> endobj 20752 0 obj <> endobj 20753 0 obj <> endobj 20754 0 obj <> endobj 20755 0 obj <> endobj 20756 0 obj <> endobj 20757 0 obj <> endobj 20758 0 obj <> endobj 20759 0 obj <> endobj 20760 0 obj <> endobj 20761 0 obj <> endobj 20762 0 obj <> endobj 20763 0 obj <> endobj 20764 0 obj <> endobj 20765 0 obj <> endobj 20766 0 obj <> endobj 20767 0 obj <> endobj 20768 0 obj <> endobj 20769 0 obj <> endobj 20770 0 obj <> endobj 20771 0 obj <> endobj 20772 0 obj <> endobj 20773 0 obj <> endobj 20774 0 obj <> endobj 20775 0 obj <> endobj 20776 0 obj <> endobj 20777 0 obj <> endobj 20778 0 obj <> endobj 20779 0 obj <> endobj 20780 0 obj <> endobj 20781 0 obj <> endobj 20782 0 obj <> endobj 20783 0 obj <> endobj 20784 0 obj <> endobj 20785 0 obj <> endobj 20786 0 obj <> endobj 20787 0 obj <> endobj 20788 0 obj <> endobj 20789 0 obj <> endobj 20790 0 obj <> endobj 20791 0 obj <> endobj 20792 0 obj <> endobj 20793 0 obj <> endobj 20794 0 obj <> endobj 20795 0 obj <> endobj 20796 0 obj <> endobj 20797 0 obj <> endobj 20798 0 obj <> endobj 20799 0 obj <> endobj 20800 0 obj <> endobj 20801 0 obj <> endobj 20802 0 obj <> endobj 20803 0 obj <> endobj 20804 0 obj <> endobj 20805 0 obj <> endobj 20806 0 obj <> endobj 20807 0 obj <> endobj 20808 0 obj <> endobj 20809 0 obj <> endobj 20810 0 obj <> endobj 20811 0 obj <> endobj 20812 0 obj <> endobj 20813 0 obj <> endobj 20814 0 obj <> endobj 20815 0 obj <> endobj 20816 0 obj <> endobj 20817 0 obj <> endobj 20818 0 obj <> endobj 20819 0 obj <> endobj 20820 0 obj <> endobj 20821 0 obj <> endobj 20822 0 obj <> endobj 20823 0 obj <> endobj 20824 0 obj <> endobj 20825 0 obj <> endobj 20826 0 obj <> endobj 20827 0 obj <> endobj 20828 0 obj <> endobj 20829 0 obj <> endobj 20830 0 obj <> endobj 20831 0 obj <> endobj 20832 0 obj <> endobj 20833 0 obj <> endobj 20834 0 obj <> endobj 20835 0 obj <> endobj 20836 0 obj <> endobj 20837 0 obj <> endobj 20838 0 obj <> endobj 20839 0 obj <> endobj 20840 0 obj <> endobj 20841 0 obj <> endobj 20842 0 obj <> endobj 20843 0 obj <> endobj 20844 0 obj <> endobj 20845 0 obj <> endobj 20846 0 obj <> endobj 20847 0 obj <> endobj 20848 0 obj <> endobj 20849 0 obj <> endobj 20850 0 obj <> endobj 20851 0 obj <> endobj 20852 0 obj <> endobj 20853 0 obj <> endobj 20854 0 obj <> endobj 20855 0 obj <> endobj 20856 0 obj <> endobj 20857 0 obj <> endobj 20858 0 obj <> endobj 20859 0 obj <> endobj 20860 0 obj <> endobj 20861 0 obj <> endobj 20862 0 obj <> endobj 20863 0 obj <> endobj 20864 0 obj <> endobj 20865 0 obj <> endobj 20866 0 obj <> endobj 20867 0 obj <> endobj 20868 0 obj <> endobj 20869 0 obj <> endobj 20870 0 obj <> endobj 20871 0 obj <> endobj 20872 0 obj <> endobj 20873 0 obj <> endobj 20874 0 obj <> endobj 20875 0 obj <> endobj 20876 0 obj <> endobj 20877 0 obj <> endobj 20878 0 obj <> endobj 20879 0 obj <> endobj 20880 0 obj <> endobj 20881 0 obj <> endobj 20882 0 obj <> endobj 20883 0 obj <> endobj 20884 0 obj <> endobj 20885 0 obj <> endobj 20886 0 obj <> endobj 20887 0 obj <> endobj 20888 0 obj <> endobj 20889 0 obj <> endobj 20890 0 obj <> endobj 20891 0 obj <> endobj 20892 0 obj <> endobj 20893 0 obj <> endobj 20894 0 obj <> endobj 20895 0 obj <> endobj 20896 0 obj <> endobj 20897 0 obj <> endobj 20898 0 obj <> endobj 20899 0 obj <> endobj 20900 0 obj <> endobj 20901 0 obj <> endobj 20902 0 obj <> endobj 20903 0 obj <> endobj 20904 0 obj <> endobj 20905 0 obj <> endobj 20906 0 obj <> endobj 20907 0 obj <> endobj 20908 0 obj <> endobj 20909 0 obj <> endobj 20910 0 obj <> endobj 20911 0 obj <> endobj 20912 0 obj <> endobj 20913 0 obj <> endobj 20914 0 obj <> endobj 20915 0 obj <> endobj 20916 0 obj <> endobj 20917 0 obj <> endobj 20918 0 obj <> endobj 20919 0 obj <> endobj 20920 0 obj <> endobj 20921 0 obj <> endobj 20922 0 obj <> endobj 20923 0 obj <> endobj 20924 0 obj <> endobj 20925 0 obj <> endobj 20926 0 obj <> endobj 20927 0 obj <> endobj 20928 0 obj <> endobj 20929 0 obj <> endobj 20930 0 obj <> endobj 20931 0 obj <> endobj 20932 0 obj <> endobj 20933 0 obj <> endobj 20934 0 obj <> endobj 20935 0 obj <> endobj 20936 0 obj <> endobj 20937 0 obj <> endobj 20938 0 obj <> endobj 20939 0 obj <> endobj 20940 0 obj <> endobj 20941 0 obj <> endobj 20942 0 obj <> endobj 20943 0 obj <> endobj 20944 0 obj <> endobj 20945 0 obj <> endobj 20946 0 obj <> endobj 20947 0 obj <> endobj 20948 0 obj <> endobj 20949 0 obj <> endobj 20950 0 obj <> endobj 20951 0 obj <> endobj 20952 0 obj <> endobj 20953 0 obj <> endobj 20954 0 obj <> endobj 20955 0 obj <> endobj 20956 0 obj <> endobj 20957 0 obj <> endobj 20958 0 obj <> endobj 20959 0 obj <> endobj 20960 0 obj <> endobj 20961 0 obj <> endobj 20962 0 obj <> endobj 20963 0 obj <> endobj 20964 0 obj <> endobj 20965 0 obj <> endobj 20966 0 obj <> endobj 20967 0 obj <> endobj 20968 0 obj <> endobj 20969 0 obj <> endobj 20970 0 obj <> endobj 20971 0 obj <> endobj 20972 0 obj <> endobj 20973 0 obj <> endobj 20974 0 obj <> endobj 20975 0 obj <> endobj 20976 0 obj <> endobj 20977 0 obj <> endobj 20978 0 obj <> endobj 20979 0 obj <> endobj 20980 0 obj <> endobj 20981 0 obj <> endobj 20982 0 obj <> endobj 20983 0 obj <> endobj 20984 0 obj <> endobj 20985 0 obj <> endobj 20986 0 obj <> endobj 20987 0 obj <> endobj 20988 0 obj <> endobj 20989 0 obj <> endobj 20990 0 obj <> endobj 20991 0 obj <> endobj 20992 0 obj <> endobj 20993 0 obj <> endobj 20994 0 obj <> endobj 20995 0 obj <> endobj 20996 0 obj <> endobj 20997 0 obj <> endobj 20998 0 obj <> endobj 20999 0 obj <> endobj 21000 0 obj <> endobj 21001 0 obj <> endobj 21002 0 obj <> endobj 21003 0 obj <> endobj 21004 0 obj <> endobj 21005 0 obj <> endobj 21006 0 obj <> endobj 21007 0 obj <> endobj 21008 0 obj <> endobj 21009 0 obj <> endobj 21010 0 obj <> endobj 21011 0 obj <> endobj 21012 0 obj <> endobj 21013 0 obj <> endobj 21014 0 obj <> endobj 21015 0 obj <> endobj 21016 0 obj <> endobj 21017 0 obj <> endobj 21018 0 obj <> endobj 21019 0 obj <> endobj 21020 0 obj <> endobj 21021 0 obj <> endobj 21022 0 obj <> endobj 21023 0 obj <> endobj 21024 0 obj <> endobj 21025 0 obj <> endobj 21026 0 obj <> endobj 21027 0 obj <> endobj 21028 0 obj <> endobj 21029 0 obj <> endobj 21030 0 obj <> endobj 21031 0 obj <> endobj 21032 0 obj <> endobj 21033 0 obj <> endobj 21034 0 obj <> endobj 21035 0 obj <> endobj 21036 0 obj <> endobj 21037 0 obj <> endobj 21038 0 obj <> endobj 21039 0 obj <> endobj 21040 0 obj <> endobj 21041 0 obj <> endobj 21042 0 obj <> endobj 21043 0 obj <> endobj 21044 0 obj <> endobj 21045 0 obj <> endobj 21046 0 obj <> endobj 21047 0 obj <> endobj 21048 0 obj <> endobj 21049 0 obj <> endobj 21050 0 obj <> endobj 21051 0 obj <> endobj 21052 0 obj <> endobj 21053 0 obj <> endobj 21054 0 obj <> endobj 21055 0 obj <> endobj 21056 0 obj <> endobj 21057 0 obj <> endobj 21058 0 obj <> endobj 21059 0 obj <> endobj 21060 0 obj <> endobj 21061 0 obj <> endobj 21062 0 obj <> endobj 21063 0 obj <> endobj 21064 0 obj <> endobj 21065 0 obj <> endobj 21066 0 obj <> endobj 21067 0 obj <> endobj 21068 0 obj <> endobj 21069 0 obj <> endobj 21070 0 obj <> endobj 21071 0 obj <> endobj 21072 0 obj <> endobj 21073 0 obj <> endobj 21074 0 obj <> endobj 21075 0 obj <> endobj 21076 0 obj <> endobj 21077 0 obj <> endobj 21078 0 obj <> endobj 21079 0 obj <> endobj 21080 0 obj <> endobj 21081 0 obj <> endobj 21082 0 obj <> endobj 21083 0 obj <> endobj 21084 0 obj <> endobj 21085 0 obj <> endobj 21086 0 obj <> endobj 21087 0 obj <> endobj 21088 0 obj <> endobj 21089 0 obj <> endobj 21090 0 obj <> endobj 21091 0 obj <> endobj 21092 0 obj <> endobj 21093 0 obj <> endobj 21094 0 obj <> endobj 21095 0 obj <> endobj 21096 0 obj <> endobj 21097 0 obj <> endobj 21098 0 obj <> endobj 21099 0 obj <> endobj 21100 0 obj <> endobj 21101 0 obj <> endobj 21102 0 obj <> endobj 21103 0 obj <> endobj 21104 0 obj <> endobj 21105 0 obj <> endobj 21106 0 obj <> endobj 21107 0 obj <> endobj 21108 0 obj <> endobj 21109 0 obj <> endobj 21110 0 obj <> endobj 21111 0 obj <> endobj 21112 0 obj <> endobj 21113 0 obj <> endobj 21114 0 obj <> endobj 21115 0 obj <> endobj 21116 0 obj <> endobj 21117 0 obj <> endobj 21118 0 obj <> endobj 21119 0 obj <> endobj 21120 0 obj <> endobj 21121 0 obj <> endobj 21122 0 obj <> endobj 21123 0 obj <> endobj 21124 0 obj <> endobj 21125 0 obj <> endobj 21126 0 obj <> endobj 21127 0 obj <> endobj 21128 0 obj <> endobj 21129 0 obj <> endobj 21130 0 obj <> endobj 21131 0 obj <> endobj 21132 0 obj <> endobj 21133 0 obj <> endobj 21134 0 obj <> endobj 21135 0 obj <> endobj 21136 0 obj <> endobj 21137 0 obj <> endobj 21138 0 obj <> endobj 21139 0 obj <> endobj 21140 0 obj <> endobj 21141 0 obj <> endobj 21142 0 obj <> endobj 21143 0 obj <> endobj 21144 0 obj <> endobj 21145 0 obj <> endobj 21146 0 obj <> endobj 21147 0 obj <> endobj 21148 0 obj <> endobj 21149 0 obj <> endobj 21150 0 obj <> endobj 21151 0 obj <> endobj 21152 0 obj <> endobj 21153 0 obj <> endobj 21154 0 obj <> endobj 21155 0 obj <> endobj 21156 0 obj <> endobj 21157 0 obj <> endobj 21158 0 obj <> endobj 21159 0 obj <> endobj 21160 0 obj <> endobj 21161 0 obj <> endobj 21162 0 obj <> endobj 21163 0 obj <> endobj 21164 0 obj <> endobj 21165 0 obj <> endobj 21166 0 obj <> endobj 21167 0 obj <> endobj 21168 0 obj <> endobj 21169 0 obj <> endobj 21170 0 obj <> endobj 21171 0 obj <> endobj 21172 0 obj <> endobj 21173 0 obj <> endobj 21174 0 obj <> endobj 21175 0 obj <> endobj 21176 0 obj <> endobj 21177 0 obj <> endobj 21178 0 obj <> endobj 21179 0 obj <> endobj 21180 0 obj <> endobj 21181 0 obj <> endobj 21182 0 obj <> endobj 21183 0 obj <> endobj 21184 0 obj <> endobj 21185 0 obj <> endobj 21186 0 obj <> endobj 21187 0 obj <> endobj 21188 0 obj <> endobj 21189 0 obj <> endobj 21190 0 obj <> endobj 21191 0 obj <> endobj 21192 0 obj <> endobj 21193 0 obj <> endobj 21194 0 obj <> endobj 21195 0 obj <> endobj 21196 0 obj <> endobj 21197 0 obj <> endobj 21198 0 obj <> endobj 21199 0 obj <> endobj 21200 0 obj <> endobj 21201 0 obj <> endobj 21202 0 obj <> endobj 21203 0 obj <> endobj 21204 0 obj <> endobj 21205 0 obj <> endobj 21206 0 obj <> endobj 21207 0 obj <> endobj 21208 0 obj <> endobj 21209 0 obj <> endobj 21210 0 obj <> endobj 21211 0 obj <> endobj 21212 0 obj <> endobj 21213 0 obj <> endobj 21214 0 obj <> endobj 21215 0 obj <> endobj 21216 0 obj <> endobj 21217 0 obj <> endobj 21218 0 obj <> endobj 21219 0 obj <> endobj 21220 0 obj <> endobj 21221 0 obj <> endobj 21222 0 obj <> endobj 21223 0 obj <> endobj 21224 0 obj <> endobj 21225 0 obj <> endobj 21226 0 obj <> endobj 21227 0 obj <> endobj 21228 0 obj <> endobj 21229 0 obj <> endobj 21230 0 obj <> endobj 21231 0 obj <> endobj 21232 0 obj <> endobj 21233 0 obj <> endobj 21234 0 obj <> endobj 21235 0 obj <> endobj 21236 0 obj <> endobj 21237 0 obj <> endobj 21238 0 obj <> endobj 21239 0 obj <> endobj 21240 0 obj <> endobj 21241 0 obj <> endobj 21242 0 obj <> endobj 21243 0 obj <> endobj 21244 0 obj <> endobj 21245 0 obj <> endobj 21246 0 obj <> endobj 21247 0 obj <> endobj 21248 0 obj <> endobj 21249 0 obj <> endobj 21250 0 obj <> endobj 21251 0 obj <> endobj 21252 0 obj <> endobj 21253 0 obj <> endobj 21254 0 obj <> endobj 21255 0 obj <> endobj 21256 0 obj <> endobj 21257 0 obj <> endobj 21258 0 obj <> endobj 21259 0 obj <> endobj 21260 0 obj <> endobj 21261 0 obj <> endobj 21262 0 obj <> endobj 21263 0 obj <> endobj 21264 0 obj <> endobj 21265 0 obj <> endobj 21266 0 obj <> endobj 21267 0 obj <> endobj 21268 0 obj <> endobj 21269 0 obj <> endobj 21270 0 obj <> endobj 21271 0 obj <> endobj 21272 0 obj <> endobj 21273 0 obj <> endobj 21274 0 obj <> endobj 21275 0 obj <> endobj 21276 0 obj <> endobj 21277 0 obj <> endobj 21278 0 obj <> endobj 21279 0 obj <> endobj 21280 0 obj <> endobj 21281 0 obj <> endobj 21282 0 obj <> endobj 21283 0 obj <> endobj 21284 0 obj <> endobj 21285 0 obj <> endobj 21286 0 obj <> endobj 21287 0 obj <> endobj 21288 0 obj <> endobj 21289 0 obj <> endobj 21290 0 obj <> endobj 21291 0 obj <> endobj 21292 0 obj <> endobj 21293 0 obj <> endobj 21294 0 obj <> endobj 21295 0 obj <> endobj 21296 0 obj <> endobj 21297 0 obj <> endobj 21298 0 obj <> endobj 21299 0 obj <> endobj 21300 0 obj <> endobj 21301 0 obj <> endobj 21302 0 obj <> endobj 21303 0 obj <> endobj 21304 0 obj <> endobj 21305 0 obj <> endobj 21306 0 obj <> endobj 21307 0 obj <> endobj 21308 0 obj <> endobj 21309 0 obj <> endobj 21310 0 obj <> endobj 21311 0 obj <> endobj 21312 0 obj <> endobj 21313 0 obj <> endobj 21314 0 obj <> endobj 21315 0 obj <> endobj 21316 0 obj <> endobj 21317 0 obj <> endobj 21318 0 obj <> endobj 21319 0 obj <> endobj 21320 0 obj <> endobj 21321 0 obj <> endobj 21322 0 obj <> endobj 21323 0 obj <> endobj 21324 0 obj <> endobj 21325 0 obj <> endobj 21326 0 obj <> endobj 21327 0 obj <> endobj 21328 0 obj <> endobj 21329 0 obj <> endobj 21330 0 obj <> endobj 21331 0 obj <> endobj 21332 0 obj <> endobj 21333 0 obj <> endobj 21334 0 obj <> endobj 21335 0 obj <> endobj 21336 0 obj <> endobj 21337 0 obj <> endobj 21338 0 obj <> endobj 21339 0 obj <> endobj 21340 0 obj <> endobj 21341 0 obj <> endobj 21342 0 obj <> endobj 21343 0 obj <> endobj 21344 0 obj <> endobj 21345 0 obj <> endobj 21346 0 obj <> endobj 21347 0 obj <> endobj 21348 0 obj <> endobj 21349 0 obj <> endobj 21350 0 obj <> endobj 21351 0 obj <> endobj 21352 0 obj <> endobj 21353 0 obj <> endobj 21354 0 obj <> endobj 21355 0 obj <> endobj 21356 0 obj <> endobj 21357 0 obj <> endobj 21358 0 obj <> endobj 21359 0 obj <> endobj 21360 0 obj <> endobj 21361 0 obj <> endobj 21362 0 obj <> endobj 21363 0 obj <> endobj 21364 0 obj <> endobj 21365 0 obj <> endobj 21366 0 obj <> endobj 21367 0 obj <> endobj 21368 0 obj <> endobj 21369 0 obj <> endobj 21370 0 obj <> endobj 21371 0 obj <> endobj 21372 0 obj <> endobj 21373 0 obj <> endobj 21374 0 obj <> endobj 21375 0 obj <> endobj 21376 0 obj <> endobj 21377 0 obj <> endobj 21378 0 obj <> endobj 21379 0 obj <> endobj 21380 0 obj <> endobj 21381 0 obj <> endobj 21382 0 obj <> endobj 21383 0 obj <> endobj 21384 0 obj <> endobj 21385 0 obj <> endobj 21386 0 obj <> endobj 21387 0 obj <> endobj 21388 0 obj <> endobj 21389 0 obj <> endobj 21390 0 obj <> endobj 21391 0 obj <> endobj 21392 0 obj <> endobj 21393 0 obj <> endobj 21394 0 obj <> endobj 21395 0 obj <> endobj 21396 0 obj <> endobj 21397 0 obj <> endobj 21398 0 obj <> endobj 21399 0 obj <> endobj 21400 0 obj <> endobj 21401 0 obj <> endobj 21402 0 obj <> endobj 21403 0 obj <> endobj 21404 0 obj <> endobj 21405 0 obj <> endobj 21406 0 obj <> endobj 21407 0 obj <> endobj 21408 0 obj <> endobj 21409 0 obj <> endobj 21410 0 obj <> endobj 21411 0 obj <> endobj 21412 0 obj <> endobj 21413 0 obj <> endobj 21414 0 obj <> endobj 21415 0 obj <> endobj 21416 0 obj <> endobj 21417 0 obj <> endobj 21418 0 obj <> endobj 21419 0 obj <> endobj 21420 0 obj <> endobj 21421 0 obj <> endobj 21422 0 obj <> endobj 21423 0 obj <> endobj 21424 0 obj <> endobj 21425 0 obj <> endobj 21426 0 obj <> endobj 21427 0 obj <> endobj 21428 0 obj <> endobj 21429 0 obj <> endobj 21430 0 obj <> endobj 21431 0 obj <> endobj 21432 0 obj <> endobj 21433 0 obj <> endobj 21434 0 obj <> endobj 21435 0 obj <> endobj 21436 0 obj <> endobj 21437 0 obj <> endobj 21438 0 obj <> endobj 21439 0 obj <> endobj 21440 0 obj <> endobj 21441 0 obj <> endobj 21442 0 obj <> endobj 21443 0 obj <> endobj 21444 0 obj <> endobj 21445 0 obj <> endobj 21446 0 obj <> endobj 21447 0 obj <> endobj 21448 0 obj <> endobj 21449 0 obj <> endobj 21450 0 obj <> endobj 21451 0 obj <> endobj 21452 0 obj <> endobj 21453 0 obj <> endobj 21454 0 obj <> endobj 21455 0 obj <> endobj 21456 0 obj <> endobj 21457 0 obj <> endobj 21458 0 obj <> endobj 21459 0 obj <> endobj 21460 0 obj <> endobj 21461 0 obj <> endobj 21462 0 obj <> endobj 21463 0 obj <> endobj 21464 0 obj <> endobj 21465 0 obj <> endobj 21466 0 obj <> endobj 21467 0 obj <> endobj 21468 0 obj <> endobj 21469 0 obj <> endobj 21470 0 obj <> endobj 21471 0 obj <> endobj 21472 0 obj <> endobj 21473 0 obj <> endobj 21474 0 obj <> endobj 21475 0 obj <> endobj 21476 0 obj <> endobj 21477 0 obj <> endobj 21478 0 obj <> endobj 21479 0 obj <> endobj 21480 0 obj <> endobj 21481 0 obj <> endobj 21482 0 obj <> endobj 21483 0 obj <> endobj 21484 0 obj <> endobj 21485 0 obj <> endobj 21486 0 obj <> endobj 21487 0 obj <> endobj 21488 0 obj <> endobj 21489 0 obj <> endobj 21490 0 obj <> endobj 21491 0 obj <> endobj 21492 0 obj <> endobj 21493 0 obj <> endobj 21494 0 obj <> endobj 21495 0 obj <> endobj 21496 0 obj <> endobj 21497 0 obj <> endobj 21498 0 obj <> endobj 21499 0 obj <> endobj 21500 0 obj <> endobj 21501 0 obj <> endobj 21502 0 obj <> endobj 21503 0 obj <> endobj 21504 0 obj <> endobj 21505 0 obj <> endobj 21506 0 obj <> endobj 21507 0 obj <> endobj 21508 0 obj <> endobj 21509 0 obj <> endobj 21510 0 obj <> endobj 21511 0 obj <> endobj 21512 0 obj <> endobj 21513 0 obj <> endobj 21514 0 obj <> endobj 21515 0 obj <> endobj 21516 0 obj <> endobj 21517 0 obj <> endobj 21518 0 obj <> endobj 21519 0 obj <> endobj 21520 0 obj <> endobj 21521 0 obj <> endobj 21522 0 obj <> endobj 21523 0 obj <> endobj 21524 0 obj <> endobj 21525 0 obj <> endobj 21526 0 obj <> endobj 21527 0 obj <> endobj 21528 0 obj <> endobj 21529 0 obj <> endobj 21530 0 obj <> endobj 21531 0 obj <> endobj 21532 0 obj <> endobj 21533 0 obj <> endobj 21534 0 obj <> endobj 21535 0 obj <> endobj 21536 0 obj <> endobj 21537 0 obj <> endobj 21538 0 obj <> endobj 21539 0 obj <> endobj 21540 0 obj <> endobj 21541 0 obj <> endobj 21542 0 obj <> endobj 21543 0 obj <> endobj 21544 0 obj <> endobj 21545 0 obj <> endobj 21546 0 obj <> endobj 21547 0 obj <> endobj 21548 0 obj <> endobj 21549 0 obj <> endobj 21550 0 obj <> endobj 21551 0 obj <> endobj 21552 0 obj <> endobj 21553 0 obj <> endobj 21554 0 obj <> endobj 21555 0 obj <> endobj 21556 0 obj <> endobj 21557 0 obj <> endobj 21558 0 obj <> endobj 21559 0 obj <> endobj 21560 0 obj <> endobj 21561 0 obj <> endobj 21562 0 obj <> endobj 21563 0 obj <> endobj 21564 0 obj <> endobj 21565 0 obj <> endobj 21566 0 obj <> endobj 21567 0 obj <> endobj 21568 0 obj <> endobj 21569 0 obj <> endobj 21570 0 obj <> endobj 21571 0 obj <> endobj 21572 0 obj <> endobj 21573 0 obj <> endobj 21574 0 obj <> endobj 21575 0 obj <> endobj 21576 0 obj <> endobj 21577 0 obj <> endobj 21578 0 obj <> endobj 21579 0 obj <> endobj 21580 0 obj <> endobj 21581 0 obj <> endobj 21582 0 obj <> endobj 21583 0 obj <> endobj 21584 0 obj <> endobj 21585 0 obj <> endobj 21586 0 obj <> endobj 21587 0 obj <> endobj 21588 0 obj <> endobj 21589 0 obj <> endobj 21590 0 obj <> endobj 21591 0 obj <> endobj 21592 0 obj <> endobj 21593 0 obj <> endobj 21594 0 obj <> endobj 21595 0 obj <> endobj 21596 0 obj <> endobj 21597 0 obj <> endobj 21598 0 obj <> endobj 21599 0 obj <> endobj 21600 0 obj <> endobj 21601 0 obj <> endobj 21602 0 obj <> endobj 21603 0 obj <> endobj 21604 0 obj <> endobj 21605 0 obj <> endobj 21606 0 obj <> endobj 21607 0 obj <> endobj 21608 0 obj <> endobj 21609 0 obj <> endobj 21610 0 obj <> endobj 21611 0 obj <> endobj 21612 0 obj <> endobj 21613 0 obj <> endobj 21614 0 obj <> endobj 21615 0 obj <> endobj 21616 0 obj <> endobj 21617 0 obj <> endobj 21618 0 obj <> endobj 21619 0 obj <> endobj 21620 0 obj <> endobj 21621 0 obj <> endobj 21622 0 obj <> endobj 21623 0 obj <> endobj 21624 0 obj <> endobj 21625 0 obj <> endobj 21626 0 obj <> endobj 21627 0 obj <> endobj 21628 0 obj <> endobj 21629 0 obj <> endobj 21630 0 obj <> endobj 21631 0 obj <> endobj 21632 0 obj <> endobj 21633 0 obj <> endobj 21634 0 obj <> endobj 21635 0 obj <> endobj 21636 0 obj <> endobj 21637 0 obj <> endobj 21638 0 obj <> endobj 21639 0 obj <> endobj 21640 0 obj <> endobj 21641 0 obj <> endobj 21642 0 obj <> endobj 21643 0 obj <> endobj 21644 0 obj <> endobj 21645 0 obj <> endobj 21646 0 obj <> endobj 21647 0 obj <> endobj 21648 0 obj <> endobj 21649 0 obj <> endobj 21650 0 obj <> endobj 21651 0 obj <> endobj 21652 0 obj <> endobj 21653 0 obj <> endobj 21654 0 obj <> endobj 21655 0 obj <> endobj 21656 0 obj <> endobj 21657 0 obj <> endobj 21658 0 obj <> endobj 21659 0 obj <> endobj 21660 0 obj <> endobj 21661 0 obj <> endobj 21662 0 obj <> endobj 21663 0 obj <> endobj 21664 0 obj <> endobj 21665 0 obj <> endobj 21666 0 obj <> endobj 21667 0 obj <> endobj 21668 0 obj <> endobj 21669 0 obj <> endobj 21670 0 obj <> endobj 21671 0 obj <> endobj 21672 0 obj <> endobj 21673 0 obj <> endobj 21674 0 obj <> endobj 21675 0 obj <> endobj 21676 0 obj <> endobj 21677 0 obj <> endobj 21678 0 obj <> endobj 21679 0 obj <> endobj 21680 0 obj <> endobj 21681 0 obj <> endobj 21682 0 obj <> endobj 21683 0 obj <> endobj 21684 0 obj <> endobj 21685 0 obj <> endobj 21686 0 obj <> endobj 21687 0 obj <> endobj 21688 0 obj <> endobj 21689 0 obj <> endobj 21690 0 obj <> endobj 21691 0 obj <> endobj 21692 0 obj <> endobj 21693 0 obj <> endobj 21694 0 obj <> endobj 21695 0 obj <> endobj 21696 0 obj <> endobj 21697 0 obj <> endobj 21698 0 obj <> endobj 21699 0 obj <> endobj 21700 0 obj <> endobj 21701 0 obj <> endobj 21702 0 obj <> endobj 21703 0 obj <> endobj 21704 0 obj <> endobj 21705 0 obj <> endobj 21706 0 obj <> endobj 21707 0 obj <> endobj 21708 0 obj <> endobj 21709 0 obj <> endobj 21710 0 obj <> endobj 21711 0 obj <> endobj 21712 0 obj <> endobj 21713 0 obj <> endobj 21714 0 obj <> endobj 21715 0 obj <> endobj 21716 0 obj <> endobj 21717 0 obj <> endobj 21718 0 obj <> endobj 21719 0 obj <> endobj 21720 0 obj <> endobj 21721 0 obj <> endobj 21722 0 obj <> endobj 21723 0 obj <> endobj 21724 0 obj <> endobj 21725 0 obj <> endobj 21726 0 obj <> endobj 21727 0 obj <> endobj 21728 0 obj <> endobj 21729 0 obj <> endobj 21730 0 obj <> endobj 21731 0 obj <> endobj 21732 0 obj <> endobj 21733 0 obj <> endobj 21734 0 obj <> endobj 21735 0 obj <> endobj 21736 0 obj <> endobj 21737 0 obj <> endobj 21738 0 obj <> endobj 21739 0 obj <> endobj 21740 0 obj <> endobj 21741 0 obj <> endobj 21742 0 obj <> endobj 21743 0 obj <> endobj 21744 0 obj <> endobj 21745 0 obj <> endobj 21746 0 obj <> endobj 21747 0 obj <> endobj 21748 0 obj <> endobj 21749 0 obj <> endobj 21750 0 obj <> endobj 21751 0 obj <> endobj 21752 0 obj <> endobj 21753 0 obj <> endobj 21754 0 obj <> endobj 21755 0 obj <> endobj 21756 0 obj <> endobj 21757 0 obj <> endobj 21758 0 obj <> endobj 21759 0 obj <> endobj 21760 0 obj <> endobj 21761 0 obj <> endobj 21762 0 obj <> endobj 21763 0 obj <> endobj 21764 0 obj <> endobj 21765 0 obj <> endobj 21766 0 obj <> endobj 21767 0 obj <> endobj 21768 0 obj <> endobj 21769 0 obj <> endobj 21770 0 obj <> endobj 21771 0 obj <> endobj 21772 0 obj <> endobj 21773 0 obj <> endobj 21774 0 obj <> endobj 21775 0 obj <> endobj 21776 0 obj <> endobj 21777 0 obj <> endobj 21778 0 obj <> endobj 21779 0 obj <> endobj 21780 0 obj <> endobj 21781 0 obj <> endobj 21782 0 obj <> endobj 21783 0 obj <> endobj 21784 0 obj <> endobj 21785 0 obj <> endobj 21786 0 obj <> endobj 21787 0 obj <> endobj 21788 0 obj <> endobj 21789 0 obj <> endobj 21790 0 obj <> endobj 21791 0 obj <> endobj 21792 0 obj <> endobj 21793 0 obj <> endobj 21794 0 obj <> endobj 21795 0 obj <> endobj 21796 0 obj <> endobj 21797 0 obj <> endobj 21798 0 obj <> endobj 21799 0 obj <> endobj 21800 0 obj <> endobj 21801 0 obj <> endobj 21802 0 obj <> endobj 21803 0 obj <> endobj 21804 0 obj <> endobj 21805 0 obj <> endobj 21806 0 obj <> endobj 21807 0 obj <> endobj 21808 0 obj <> endobj 21809 0 obj <> endobj 21810 0 obj <> endobj 21811 0 obj <> endobj 21812 0 obj <> endobj 21813 0 obj <> endobj 21814 0 obj <> endobj 21815 0 obj <> endobj 21816 0 obj <> endobj 21817 0 obj <> endobj 21818 0 obj <> endobj 21819 0 obj <> endobj 21820 0 obj <> endobj 21821 0 obj <> endobj 21822 0 obj <> endobj 21823 0 obj <> endobj 21824 0 obj <> endobj 21825 0 obj <> endobj 21826 0 obj <> endobj 21827 0 obj <> endobj 21828 0 obj <> endobj 21829 0 obj <> endobj 21830 0 obj <> endobj 21831 0 obj <> endobj 21832 0 obj <> endobj 21833 0 obj <> endobj 21834 0 obj <> endobj 21835 0 obj <> endobj 21836 0 obj <> endobj 21837 0 obj <> endobj 21838 0 obj <> endobj 21839 0 obj <> endobj 21840 0 obj <> endobj 21841 0 obj <> endobj 21842 0 obj <> endobj 21843 0 obj <> endobj 21844 0 obj <> endobj 21845 0 obj <> endobj 21846 0 obj <> endobj 21847 0 obj <> endobj 21848 0 obj <> endobj 21849 0 obj <> endobj 21850 0 obj <> endobj 21851 0 obj <> endobj 21852 0 obj <> endobj 21853 0 obj <> endobj 21854 0 obj <> endobj 21855 0 obj <> endobj 21856 0 obj <> endobj 21857 0 obj <> endobj 21858 0 obj <> endobj 21859 0 obj <> endobj 21860 0 obj <> endobj 21861 0 obj <> endobj 21862 0 obj <> endobj 21863 0 obj <> endobj 21864 0 obj <> endobj 21865 0 obj <> endobj 21866 0 obj <> endobj 21867 0 obj <> endobj 21868 0 obj <> endobj 21869 0 obj <> endobj 21870 0 obj <> endobj 21871 0 obj <> endobj 21872 0 obj <> endobj 21873 0 obj <> endobj 21874 0 obj <> endobj 21875 0 obj <> endobj 21876 0 obj <> endobj 21877 0 obj <> endobj 21878 0 obj <> endobj 21879 0 obj <> endobj 21880 0 obj <> endobj 21881 0 obj <> endobj 21882 0 obj <> endobj 21883 0 obj <> endobj 21884 0 obj <> endobj 21885 0 obj <> endobj 21886 0 obj <> endobj 21887 0 obj <> endobj 21888 0 obj <> endobj 21889 0 obj <> endobj 21890 0 obj <> endobj 21891 0 obj <> endobj 21892 0 obj <> endobj 21893 0 obj <> endobj 21894 0 obj <> endobj 21895 0 obj <> endobj 21896 0 obj <> endobj 21897 0 obj <> endobj 21898 0 obj <> endobj 21899 0 obj <> endobj 21900 0 obj <> endobj 21901 0 obj <> endobj 21902 0 obj <> endobj 21903 0 obj <> endobj 21904 0 obj <> endobj 21905 0 obj <> endobj 21906 0 obj <> endobj 21907 0 obj <> endobj 21908 0 obj <> endobj 21909 0 obj <> endobj 21910 0 obj <> endobj 21911 0 obj <> endobj 21912 0 obj <> endobj 21913 0 obj <> endobj 21914 0 obj <> endobj 21915 0 obj <> endobj 21916 0 obj <> endobj 21917 0 obj <> endobj 21918 0 obj <> endobj 21919 0 obj <> endobj 21920 0 obj <> endobj 21921 0 obj <> endobj 21922 0 obj <> endobj 21923 0 obj <> endobj 21924 0 obj <> endobj 21925 0 obj <> endobj 21926 0 obj <> endobj 21927 0 obj <> endobj 21928 0 obj <> endobj 21929 0 obj <> endobj 21930 0 obj <> endobj 21931 0 obj <> endobj 21932 0 obj <> endobj 21933 0 obj <> endobj 21934 0 obj <> endobj 21935 0 obj <> endobj 21936 0 obj <> endobj 21937 0 obj <> endobj 21938 0 obj <> endobj 21939 0 obj <> endobj 21940 0 obj <> endobj 21941 0 obj <> endobj 21942 0 obj <> endobj 21943 0 obj <> endobj 21944 0 obj <> endobj 21945 0 obj <> endobj 21946 0 obj <> endobj 21947 0 obj <> endobj 21948 0 obj <> endobj 21949 0 obj <> endobj 21950 0 obj <> endobj 21951 0 obj <> endobj 21952 0 obj <> endobj 21953 0 obj <> endobj 21954 0 obj <> endobj 21955 0 obj <> endobj 21956 0 obj <> endobj 21957 0 obj <> endobj 21958 0 obj <> endobj 21959 0 obj <> endobj 21960 0 obj <> endobj 21961 0 obj <> endobj 21962 0 obj <> endobj 21963 0 obj <> endobj 21964 0 obj <> endobj 21965 0 obj <> endobj 21966 0 obj <> endobj 21967 0 obj <> endobj 21968 0 obj <> endobj 21969 0 obj <> endobj 21970 0 obj <> endobj 21971 0 obj <> endobj 21972 0 obj <> endobj 21973 0 obj <> endobj 21974 0 obj <> endobj 21975 0 obj <> endobj 21976 0 obj <> endobj 21977 0 obj <> endobj 21978 0 obj <> endobj 21979 0 obj <> endobj 21980 0 obj <> endobj 21981 0 obj <> endobj 21982 0 obj <> endobj 21983 0 obj <> endobj 21984 0 obj <> endobj 21985 0 obj <> endobj 21986 0 obj <> endobj 21987 0 obj <> endobj 21988 0 obj <> endobj 21989 0 obj <> endobj 21990 0 obj <> endobj 21991 0 obj <> endobj 21992 0 obj <> endobj 21993 0 obj <> endobj 21994 0 obj <> endobj 21995 0 obj <> endobj 21996 0 obj <> endobj 21997 0 obj <> endobj 21998 0 obj <> endobj 21999 0 obj <> endobj 22000 0 obj <> endobj 22001 0 obj <> endobj 22002 0 obj <> endobj 22003 0 obj <> endobj 22004 0 obj <> endobj 22005 0 obj <> endobj 22006 0 obj <> endobj 22007 0 obj <> endobj 22008 0 obj <> endobj 22009 0 obj <> endobj 22010 0 obj <> endobj 22011 0 obj <> endobj 22012 0 obj <> endobj 22013 0 obj <> endobj 22014 0 obj <> endobj 22015 0 obj <> endobj 22016 0 obj <> endobj 22017 0 obj <> endobj 22018 0 obj <> endobj 22019 0 obj <> endobj 22020 0 obj <> endobj 22021 0 obj <> endobj 22022 0 obj <> endobj 22023 0 obj <> endobj 22024 0 obj <> endobj 22025 0 obj <> endobj 22026 0 obj <> endobj 22027 0 obj <> endobj 22028 0 obj <> endobj 22029 0 obj <> endobj 22030 0 obj <> endobj 22031 0 obj <> endobj 22032 0 obj <> endobj 22033 0 obj <> endobj 22034 0 obj <> endobj 22035 0 obj <> endobj 22036 0 obj <> endobj 22037 0 obj <> endobj 22038 0 obj <> endobj 22039 0 obj <> endobj 22040 0 obj <> endobj 22041 0 obj <> endobj 22042 0 obj <> endobj 22043 0 obj <> endobj 22044 0 obj <> endobj 22045 0 obj <> endobj 22046 0 obj <> endobj 22047 0 obj <> endobj 22048 0 obj <> endobj 22049 0 obj <> endobj 22050 0 obj <> endobj 22051 0 obj <> endobj 22052 0 obj <> endobj 22053 0 obj <> endobj 22054 0 obj <> endobj 22055 0 obj <> endobj 22056 0 obj <> endobj 22057 0 obj <> endobj 22058 0 obj <> endobj 22059 0 obj <> endobj 22060 0 obj <> endobj 22061 0 obj <> endobj 22062 0 obj <> endobj 22063 0 obj <> endobj 22064 0 obj <> endobj 22065 0 obj <> endobj 22066 0 obj <> endobj 22067 0 obj <> endobj 22068 0 obj <> endobj 22069 0 obj <> endobj 22070 0 obj <> endobj 22071 0 obj <> endobj 22072 0 obj <> endobj 22073 0 obj <> endobj 22074 0 obj <> endobj 22075 0 obj <> endobj 22076 0 obj <> endobj 22077 0 obj <> endobj 22078 0 obj <> endobj 22079 0 obj <> endobj 22080 0 obj <> endobj 22081 0 obj <> endobj 22082 0 obj <> endobj 22083 0 obj <> endobj 22084 0 obj <> endobj 22085 0 obj <> endobj 22086 0 obj <> endobj 22087 0 obj <> endobj 22088 0 obj <> endobj 22089 0 obj <> endobj 22090 0 obj <> endobj 22091 0 obj <> endobj 22092 0 obj <> endobj 22093 0 obj <> endobj 22094 0 obj <> endobj 22095 0 obj <> endobj 22096 0 obj <> endobj 22097 0 obj <> endobj 22098 0 obj <> endobj 22099 0 obj <> endobj 22100 0 obj <> endobj 22101 0 obj <> endobj 22102 0 obj <> endobj 22103 0 obj <> endobj 22104 0 obj <> endobj 22105 0 obj <> endobj 22106 0 obj <> endobj 22107 0 obj <> endobj 22108 0 obj <> endobj 22109 0 obj <> endobj 22110 0 obj <> endobj 22111 0 obj <> endobj 22112 0 obj <> endobj 22113 0 obj <> endobj 22114 0 obj <> endobj 22115 0 obj <> endobj 22116 0 obj <> endobj 22117 0 obj <> endobj 22118 0 obj <> endobj 22119 0 obj <> endobj 22120 0 obj <> endobj 22121 0 obj <> endobj 22122 0 obj <> endobj 22123 0 obj <> endobj 22124 0 obj <> endobj 22125 0 obj <> endobj 22126 0 obj <> endobj 22127 0 obj <> endobj 22128 0 obj <> endobj 22129 0 obj <> endobj 22130 0 obj <> endobj 22131 0 obj <> endobj 22132 0 obj <> endobj 22133 0 obj <> endobj 22134 0 obj <> endobj 22135 0 obj <> endobj 22136 0 obj <> endobj 22137 0 obj <> endobj 22138 0 obj <> endobj 22139 0 obj <> endobj 22140 0 obj <> endobj 22141 0 obj <> endobj 22142 0 obj <> endobj 22143 0 obj <> endobj 22144 0 obj <> endobj 22145 0 obj <> endobj 22146 0 obj <> endobj 22147 0 obj <> endobj 22148 0 obj <> endobj 22149 0 obj <> endobj 22150 0 obj <> endobj 22151 0 obj <> endobj 22152 0 obj <> endobj 22153 0 obj <> endobj 22154 0 obj <> endobj 22155 0 obj <> endobj 22156 0 obj <> endobj 22157 0 obj <> endobj 22158 0 obj <> endobj 22159 0 obj <> endobj 22160 0 obj <> endobj 22161 0 obj <> endobj 22162 0 obj <> endobj 22163 0 obj <> endobj 22164 0 obj <> endobj 22165 0 obj <> endobj 22166 0 obj <> endobj 22167 0 obj <> endobj 22168 0 obj <> endobj 22169 0 obj <> endobj 22170 0 obj <> endobj 22171 0 obj <> endobj 22172 0 obj <> endobj 22173 0 obj <> endobj 22174 0 obj <> endobj 22175 0 obj <> endobj 22176 0 obj <> endobj 22177 0 obj <> endobj 22178 0 obj <> endobj 22179 0 obj <> endobj 22180 0 obj <> endobj 22181 0 obj <> endobj 22182 0 obj <> endobj 22183 0 obj <> endobj 22184 0 obj <> endobj 22185 0 obj <> endobj 22186 0 obj <> endobj 22187 0 obj <> endobj 22188 0 obj <> endobj 22189 0 obj <> endobj 22190 0 obj <> endobj 22191 0 obj <> endobj 22192 0 obj <> endobj 22193 0 obj <> endobj 22194 0 obj <> endobj 22195 0 obj <> endobj 22196 0 obj <> endobj 22197 0 obj <> endobj 22198 0 obj <> endobj 22199 0 obj <> endobj 22200 0 obj <> endobj 22201 0 obj <> endobj 22202 0 obj <> endobj 22203 0 obj <> endobj 22204 0 obj <> endobj 22205 0 obj <> endobj 22206 0 obj <> endobj 22207 0 obj <> endobj 22208 0 obj <> endobj 22209 0 obj <> endobj 22210 0 obj <> endobj 22211 0 obj <> endobj 22212 0 obj <> endobj 22213 0 obj <> endobj 22214 0 obj <> endobj 22215 0 obj <> endobj 22216 0 obj <> endobj 22217 0 obj <> endobj 22218 0 obj <> endobj 22219 0 obj <> endobj 22220 0 obj <> endobj 22221 0 obj <> endobj 22222 0 obj <> endobj 22223 0 obj <> endobj 22224 0 obj <> endobj 22225 0 obj <> endobj 22226 0 obj <> endobj 22227 0 obj <> endobj 22228 0 obj <> endobj 22229 0 obj <> endobj 22230 0 obj <> endobj 22231 0 obj <> endobj 22232 0 obj <> endobj 22233 0 obj <> endobj 22234 0 obj <> endobj 22235 0 obj <> endobj 22236 0 obj <> endobj 22237 0 obj <> endobj 22238 0 obj <> endobj 22239 0 obj <> endobj 22240 0 obj <> endobj 22241 0 obj <> endobj 22242 0 obj <> endobj 22243 0 obj <> endobj 22244 0 obj <> endobj 22245 0 obj <> endobj 22246 0 obj <> endobj 22247 0 obj <> endobj 22248 0 obj <> endobj 22249 0 obj <> endobj 22250 0 obj <> endobj 22251 0 obj <> endobj 22252 0 obj <> endobj 22253 0 obj <> endobj 22254 0 obj <> endobj 22255 0 obj <> endobj 22256 0 obj <> endobj 22257 0 obj <> endobj 22258 0 obj <> endobj 22259 0 obj <> endobj 22260 0 obj <> endobj 22261 0 obj <> endobj 22262 0 obj <> endobj 22263 0 obj <> endobj 22264 0 obj <> endobj 22265 0 obj <> endobj 22266 0 obj <> endobj 22267 0 obj <> endobj 22268 0 obj <> endobj 22269 0 obj <> endobj 22270 0 obj <> endobj 22271 0 obj <> endobj 22272 0 obj <> endobj 22273 0 obj <> endobj 22274 0 obj <> endobj 22275 0 obj <> endobj 22276 0 obj <> endobj 22277 0 obj <> endobj 22278 0 obj <> endobj 22279 0 obj <> endobj 22280 0 obj <> endobj 22281 0 obj <> endobj 22282 0 obj <> endobj 22283 0 obj <> endobj 22284 0 obj <> endobj 22285 0 obj <> endobj 22286 0 obj <> endobj 22287 0 obj <> endobj 22288 0 obj <> endobj 22289 0 obj <> endobj 22290 0 obj <> endobj 22291 0 obj <> endobj 22292 0 obj <> endobj 22293 0 obj <> endobj 22294 0 obj <> endobj 22295 0 obj <> endobj 22296 0 obj <> endobj 22297 0 obj <> endobj 22298 0 obj <> endobj 22299 0 obj <> endobj 22300 0 obj <> endobj 22301 0 obj <> endobj 22302 0 obj <> endobj 22303 0 obj <> endobj 22304 0 obj <> endobj 22305 0 obj <> endobj 22306 0 obj <> endobj 22307 0 obj <> endobj 22308 0 obj <> endobj 22309 0 obj <> endobj 22310 0 obj <> endobj 22311 0 obj <> endobj 22312 0 obj <> endobj 22313 0 obj <> endobj 22314 0 obj <> endobj 22315 0 obj <> endobj 22316 0 obj <> endobj 22317 0 obj <> endobj 22318 0 obj <> endobj 22319 0 obj <> endobj 22320 0 obj <> endobj 22321 0 obj <> endobj 22322 0 obj <> endobj 22323 0 obj <> endobj 22324 0 obj <> endobj 22325 0 obj <> endobj 22326 0 obj <> endobj 22327 0 obj <> endobj 22328 0 obj <> endobj 22329 0 obj <> endobj 22330 0 obj <> endobj 22331 0 obj <> endobj 22332 0 obj <> endobj 22333 0 obj <> endobj 22334 0 obj <> endobj 22335 0 obj <> endobj 22336 0 obj <> endobj 22337 0 obj <> endobj 22338 0 obj <> endobj 22339 0 obj <> endobj 22340 0 obj <> endobj 22341 0 obj <> endobj 22342 0 obj <> endobj 22343 0 obj <> endobj 22344 0 obj <> endobj 22345 0 obj <> endobj 22346 0 obj <> endobj 22347 0 obj <> endobj 22348 0 obj <> endobj 22349 0 obj <> endobj 22350 0 obj <> endobj 22351 0 obj <> endobj 22352 0 obj <> endobj 22353 0 obj <> endobj 22354 0 obj <> endobj 22355 0 obj <> endobj 22356 0 obj <> endobj 22357 0 obj <> endobj 22358 0 obj <> endobj 22359 0 obj <> endobj 22360 0 obj <> endobj 22361 0 obj <> endobj 22362 0 obj <> endobj 22363 0 obj <> endobj 22364 0 obj <> endobj 22365 0 obj <> endobj 22366 0 obj <> endobj 22367 0 obj <> endobj 22368 0 obj <> endobj 22369 0 obj <> endobj 22370 0 obj <> endobj 22371 0 obj <> endobj 22372 0 obj <> endobj 22373 0 obj <> endobj 22374 0 obj <> endobj 22375 0 obj <> endobj 22376 0 obj <> endobj 22377 0 obj <> endobj 22378 0 obj <> endobj 22379 0 obj <> endobj 22380 0 obj <> endobj 22381 0 obj <> endobj 22382 0 obj <> endobj 22383 0 obj <> endobj 22384 0 obj <> endobj 22385 0 obj <> endobj 22386 0 obj <> endobj 22387 0 obj <> endobj 22388 0 obj <> endobj 22389 0 obj <> endobj 22390 0 obj <> endobj 22391 0 obj <> endobj 22392 0 obj <> endobj 22393 0 obj <> endobj 22394 0 obj <> endobj 22395 0 obj <> endobj 22396 0 obj <> endobj 22397 0 obj <> endobj 22398 0 obj <> endobj 22399 0 obj <> endobj 22400 0 obj <> endobj 22401 0 obj <> endobj 22402 0 obj <> endobj 22403 0 obj <> endobj 22404 0 obj <> endobj 22405 0 obj <> endobj 22406 0 obj <> endobj 22407 0 obj <> endobj 22408 0 obj <> endobj 22409 0 obj <> endobj 22410 0 obj <> endobj 22411 0 obj <> endobj 22412 0 obj <> endobj 22413 0 obj <> endobj 22414 0 obj <> endobj 22415 0 obj <> endobj 22416 0 obj <> endobj 22417 0 obj <> endobj 22418 0 obj <> endobj 22419 0 obj <> endobj 22420 0 obj <> endobj 22421 0 obj <> endobj 22422 0 obj <> endobj 22423 0 obj <> endobj 22424 0 obj <> endobj 22425 0 obj <> endobj 22426 0 obj <> endobj 22427 0 obj <> endobj 22428 0 obj <> endobj 22429 0 obj <> endobj 22430 0 obj <> endobj 22431 0 obj <> endobj 22432 0 obj <> endobj 22433 0 obj <> endobj 22434 0 obj <> endobj 22435 0 obj <> endobj 22436 0 obj <> endobj 22437 0 obj <> endobj 22438 0 obj <> endobj 22439 0 obj <> endobj 22440 0 obj <> endobj 22441 0 obj <> endobj 22442 0 obj <> endobj 22443 0 obj <> endobj 22444 0 obj <> endobj 22445 0 obj <> endobj 22446 0 obj <> endobj 22447 0 obj <> endobj 22448 0 obj <> endobj 22449 0 obj <> endobj 22450 0 obj <> endobj 22451 0 obj <> endobj 22452 0 obj <> endobj 22453 0 obj <> endobj 22454 0 obj <> endobj 22455 0 obj <> endobj 22456 0 obj <> endobj 22457 0 obj <> endobj 22458 0 obj <> endobj 22459 0 obj <> endobj 22460 0 obj <> endobj 22461 0 obj <> endobj 22462 0 obj <> endobj 22463 0 obj <> endobj 22464 0 obj <> endobj 22465 0 obj <> endobj 22466 0 obj <> endobj 22467 0 obj <> endobj 22468 0 obj <> endobj 22469 0 obj <> endobj 22470 0 obj <> endobj 22471 0 obj <> endobj 22472 0 obj <> endobj 22473 0 obj <> endobj 22474 0 obj <> endobj 22475 0 obj <> endobj 22476 0 obj <> endobj 22477 0 obj <> endobj 22478 0 obj <> endobj 22479 0 obj <> endobj 22480 0 obj <> endobj 22481 0 obj <> endobj 22482 0 obj <> endobj 22483 0 obj <> endobj 22484 0 obj <> endobj 22485 0 obj <> endobj 22486 0 obj <> endobj 22487 0 obj <> endobj 22488 0 obj <> endobj 22489 0 obj <> endobj 22490 0 obj <> endobj 22491 0 obj <> endobj 22492 0 obj <> endobj 22493 0 obj <> endobj 22494 0 obj <> endobj 22495 0 obj <> endobj 22496 0 obj <> endobj 22497 0 obj <> endobj 22498 0 obj <> endobj 22499 0 obj <> endobj 22500 0 obj <> endobj 22501 0 obj <> endobj 22502 0 obj <> endobj 22503 0 obj <> endobj 22504 0 obj <> endobj 22505 0 obj <> endobj 22506 0 obj <> endobj 22507 0 obj <> endobj 22508 0 obj <> endobj 22509 0 obj <> endobj 22510 0 obj <> endobj 22511 0 obj <> endobj 22512 0 obj <> endobj 22513 0 obj <> endobj 22514 0 obj <> endobj 22515 0 obj <> endobj 22516 0 obj <> endobj 22517 0 obj <> endobj 22518 0 obj <> endobj 22519 0 obj <> endobj 22520 0 obj <> endobj 22521 0 obj <> endobj 22522 0 obj <> endobj 22523 0 obj <> endobj 22524 0 obj <> endobj 22525 0 obj <> endobj 22526 0 obj <> endobj 22527 0 obj <> endobj 22528 0 obj <> endobj 22529 0 obj <> endobj 22530 0 obj <> endobj 22531 0 obj <> endobj 22532 0 obj <> endobj 22533 0 obj <> endobj 22534 0 obj <> endobj 22535 0 obj <> endobj 22536 0 obj <> endobj 22537 0 obj <> endobj 22538 0 obj <> endobj 22539 0 obj <> endobj 22540 0 obj <> endobj 22541 0 obj <> endobj 22542 0 obj <> endobj 22543 0 obj <> endobj 22544 0 obj <> endobj 22545 0 obj <> endobj 22546 0 obj <> endobj 22547 0 obj <> endobj 22548 0 obj <> endobj 22549 0 obj <> endobj 22550 0 obj <> endobj 22551 0 obj <> endobj 22552 0 obj <> endobj 22553 0 obj <> endobj 22554 0 obj <> endobj 22555 0 obj <> endobj 22556 0 obj <> endobj 22557 0 obj <> endobj 22558 0 obj <> endobj 22559 0 obj <> endobj 22560 0 obj <> endobj 22561 0 obj <> endobj 22562 0 obj <> endobj 22563 0 obj <> endobj 22564 0 obj <> endobj 22565 0 obj <> endobj 22566 0 obj <> endobj 22567 0 obj <> endobj 22568 0 obj <> endobj 22569 0 obj <> endobj 22570 0 obj <> endobj 22571 0 obj <> endobj 22572 0 obj <> endobj 22573 0 obj <> endobj 22574 0 obj <> endobj 22575 0 obj <> endobj 22576 0 obj <> endobj 22577 0 obj <> endobj 22578 0 obj <> endobj 22579 0 obj <> endobj 22580 0 obj <> endobj 22581 0 obj <> endobj 22582 0 obj <> endobj 22583 0 obj <> endobj 22584 0 obj <> endobj 22585 0 obj <> endobj 22586 0 obj <> endobj 22587 0 obj <> endobj 22588 0 obj <> endobj 22589 0 obj <> endobj 22590 0 obj <> endobj 22591 0 obj <> endobj 22592 0 obj <> endobj 22593 0 obj <> endobj 22594 0 obj <> endobj 22595 0 obj <> endobj 22596 0 obj <> endobj 22597 0 obj <> endobj 22598 0 obj <> endobj 22599 0 obj <> endobj 22600 0 obj <> endobj 22601 0 obj <> endobj 22602 0 obj <> endobj 22603 0 obj <> endobj 22604 0 obj <> endobj 22605 0 obj <> endobj 22606 0 obj <> endobj 22607 0 obj <> endobj 22608 0 obj <> endobj 22609 0 obj <> endobj 22610 0 obj <> endobj 22611 0 obj <> endobj 22612 0 obj <> endobj 22613 0 obj <> endobj 22614 0 obj <> endobj 22615 0 obj <> endobj 22616 0 obj <> endobj 22617 0 obj <> endobj 22618 0 obj <> endobj 22619 0 obj <> endobj 22620 0 obj <> endobj 22621 0 obj <> endobj 22622 0 obj <> endobj 22623 0 obj <> endobj 22624 0 obj <> endobj 22625 0 obj <> endobj 22626 0 obj <> endobj 22627 0 obj <> endobj 22628 0 obj <> endobj 22629 0 obj <> endobj 22630 0 obj <> endobj 22631 0 obj <> endobj 22632 0 obj <> endobj 22633 0 obj <> endobj 22634 0 obj <> endobj 22635 0 obj <> endobj 22636 0 obj <> endobj 22637 0 obj <> endobj 22638 0 obj <> endobj 22639 0 obj <> endobj 22640 0 obj <> endobj 22641 0 obj <> endobj 22642 0 obj <> endobj 22643 0 obj <> endobj 22644 0 obj <> endobj 22645 0 obj <> endobj 22646 0 obj <> endobj 22647 0 obj <> endobj 22648 0 obj <> endobj 22649 0 obj <> endobj 22650 0 obj <> endobj 22651 0 obj <> endobj 22652 0 obj <> endobj 22653 0 obj <> endobj 22654 0 obj <> endobj 22655 0 obj <> endobj 22656 0 obj <> endobj 22657 0 obj <> endobj 22658 0 obj <> endobj 22659 0 obj <> endobj 22660 0 obj <> endobj 22661 0 obj <> endobj 22662 0 obj <> endobj 22663 0 obj <> endobj 22664 0 obj <> endobj 22665 0 obj <> endobj 22666 0 obj <> endobj 22667 0 obj <> endobj 22668 0 obj <> endobj 22669 0 obj <> endobj 22670 0 obj <> endobj 22671 0 obj <> endobj 22672 0 obj <> endobj 22673 0 obj <> endobj 22674 0 obj <> endobj 22675 0 obj <> endobj 22676 0 obj <> endobj 22677 0 obj <> endobj 22678 0 obj <> endobj 22679 0 obj <> endobj 22680 0 obj <> endobj 22681 0 obj <> endobj 22682 0 obj <> endobj 22683 0 obj <> endobj 22684 0 obj <> endobj 22685 0 obj <> endobj 22686 0 obj <> endobj 22687 0 obj <> endobj 22688 0 obj <> endobj 22689 0 obj <> endobj 22690 0 obj <> endobj 22691 0 obj <> endobj 22692 0 obj <> endobj 22693 0 obj <> endobj 22694 0 obj <> endobj 22695 0 obj <> endobj 22696 0 obj <> endobj 22697 0 obj <> endobj 22698 0 obj <> endobj 22699 0 obj <> endobj 22700 0 obj <> endobj 22701 0 obj <> endobj 22702 0 obj <> endobj 22703 0 obj <> endobj 22704 0 obj <> endobj 22705 0 obj <> endobj 22706 0 obj <> endobj 22707 0 obj <> endobj 22708 0 obj <> endobj 22709 0 obj <> endobj 22710 0 obj <> endobj 22711 0 obj <> endobj 22712 0 obj <> endobj 22713 0 obj <> endobj 22714 0 obj <> endobj 22715 0 obj <> endobj 22716 0 obj <> endobj 22717 0 obj <> endobj 22718 0 obj <> endobj 22719 0 obj <> endobj 22720 0 obj <> endobj 22721 0 obj <> endobj 22722 0 obj <> endobj 22723 0 obj <> endobj 22724 0 obj <> endobj 22725 0 obj <> endobj 22726 0 obj <> endobj 22727 0 obj <> endobj 22728 0 obj <> endobj 22729 0 obj <> endobj 22730 0 obj <> endobj 22731 0 obj <> endobj 22732 0 obj <> endobj 22733 0 obj <> endobj 22734 0 obj <> endobj 22735 0 obj <> endobj 22736 0 obj <> endobj 22737 0 obj <> endobj 22738 0 obj <> endobj 22739 0 obj <> endobj 22740 0 obj <> endobj 22741 0 obj <> endobj 22742 0 obj <> endobj 22743 0 obj <> endobj 22744 0 obj <> endobj 22745 0 obj <> endobj 22746 0 obj <> endobj 22747 0 obj <> endobj 22748 0 obj <> endobj 22749 0 obj <> endobj 22750 0 obj <> endobj 22751 0 obj <> endobj 22752 0 obj <> endobj 22753 0 obj <> endobj 22754 0 obj <> endobj 22755 0 obj <> endobj 22756 0 obj <> endobj 22757 0 obj <> endobj 22758 0 obj <> endobj 22759 0 obj <> endobj 22760 0 obj <> endobj 22761 0 obj <> endobj 22762 0 obj <> endobj 22763 0 obj <> endobj 22764 0 obj <> endobj 22765 0 obj <> endobj 22766 0 obj <> endobj 22767 0 obj <> endobj 22768 0 obj <> endobj 22769 0 obj <> endobj 22770 0 obj <> endobj 22771 0 obj <> endobj 22772 0 obj <> endobj 22773 0 obj <> endobj 22774 0 obj <> endobj 22775 0 obj <> endobj 22776 0 obj <> endobj 22777 0 obj <> endobj 22778 0 obj <> endobj 22779 0 obj <> endobj 22780 0 obj <> endobj 22781 0 obj <> endobj 22782 0 obj <> endobj 22783 0 obj <> endobj 22784 0 obj <> endobj 22785 0 obj <> endobj 22786 0 obj <> endobj 22787 0 obj <> endobj 22788 0 obj <> endobj 22789 0 obj <> endobj 22790 0 obj <> endobj 22791 0 obj <> endobj 22792 0 obj <> endobj 22793 0 obj <> endobj 22794 0 obj <> endobj 22795 0 obj <> endobj 22796 0 obj <> endobj 22797 0 obj <> endobj 22798 0 obj <> endobj 22799 0 obj <> endobj 22800 0 obj <> endobj 22801 0 obj <> endobj 22802 0 obj <> endobj 22803 0 obj <> endobj 22804 0 obj <> endobj 22805 0 obj <> endobj 22806 0 obj <> endobj 22807 0 obj <> endobj 22808 0 obj <> endobj 22809 0 obj <> endobj 22810 0 obj <> endobj 22811 0 obj <> endobj 22812 0 obj <> endobj 22813 0 obj <> endobj 22814 0 obj <> endobj 22815 0 obj <> endobj 22816 0 obj <> endobj 22817 0 obj <> endobj 22818 0 obj <> endobj 22819 0 obj <> endobj 22820 0 obj <> endobj 22821 0 obj <> endobj 22822 0 obj <> endobj 22823 0 obj <> endobj 22824 0 obj <> endobj 22825 0 obj <> endobj 22826 0 obj <> endobj 22827 0 obj <> endobj 22828 0 obj <> endobj 22829 0 obj <> endobj 22830 0 obj <> endobj 22831 0 obj <> endobj 22832 0 obj <> endobj 22833 0 obj <> endobj 22834 0 obj <> endobj 22835 0 obj <> endobj 22836 0 obj <> endobj 22837 0 obj <> endobj 22838 0 obj <> endobj 22839 0 obj <> endobj 22840 0 obj <> endobj 22841 0 obj <> endobj 22842 0 obj <> endobj 22843 0 obj <> endobj 22844 0 obj <> endobj 22845 0 obj <> endobj 22846 0 obj <> endobj 22847 0 obj <> endobj 22848 0 obj <> endobj 22849 0 obj <> endobj 22850 0 obj <> endobj 22851 0 obj <> endobj 22852 0 obj <> endobj 22853 0 obj <> endobj 22854 0 obj <> endobj 22855 0 obj <> endobj 22856 0 obj <> endobj 22857 0 obj <> endobj 22858 0 obj <> endobj 22859 0 obj <> endobj 22860 0 obj <> endobj 22861 0 obj <> endobj 22862 0 obj <> endobj 22863 0 obj <> endobj 22864 0 obj <> endobj 22865 0 obj <> endobj 22866 0 obj <> endobj 22867 0 obj <> endobj 22868 0 obj <> endobj 22869 0 obj <> endobj 22870 0 obj <> endobj 22871 0 obj <> endobj 22872 0 obj <> endobj 22873 0 obj <> endobj 22874 0 obj <> endobj 22875 0 obj <> endobj 22876 0 obj <> endobj 22877 0 obj <> endobj 22878 0 obj <> endobj 22879 0 obj <> endobj 22880 0 obj <> endobj 22881 0 obj <> endobj 22882 0 obj <> endobj 22883 0 obj <> endobj 22884 0 obj <> endobj 22885 0 obj <> endobj 22886 0 obj <> endobj 22887 0 obj <> endobj 22888 0 obj <> endobj 22889 0 obj <> endobj 22890 0 obj <> endobj 22891 0 obj <> endobj 22892 0 obj <> endobj 22893 0 obj <> endobj 22894 0 obj <> endobj 22895 0 obj <> endobj 22896 0 obj <> endobj 22897 0 obj <> endobj 22898 0 obj <> endobj 22899 0 obj <> endobj 22900 0 obj <> endobj 22901 0 obj <> endobj 22902 0 obj <> endobj 22903 0 obj <> endobj 22904 0 obj <> endobj 22905 0 obj <> endobj 22906 0 obj <> endobj 22907 0 obj <> endobj 22908 0 obj <> endobj 22909 0 obj <> endobj 22910 0 obj <> endobj 22911 0 obj <> endobj 22912 0 obj <> endobj 22913 0 obj <> endobj 22914 0 obj <> endobj 22915 0 obj <> endobj 22916 0 obj <> endobj 22917 0 obj <> endobj 22918 0 obj <> endobj 22919 0 obj <> endobj 22920 0 obj <> endobj 22921 0 obj <> endobj 22922 0 obj <> endobj 22923 0 obj <> endobj 22924 0 obj <> endobj 22925 0 obj <> endobj 22926 0 obj <> endobj 22927 0 obj <> endobj 22928 0 obj <> endobj 22929 0 obj <> endobj 22930 0 obj <> endobj 22931 0 obj <> endobj 22932 0 obj <> endobj 22933 0 obj <> endobj 22934 0 obj <> endobj 22935 0 obj <> endobj 22936 0 obj <> endobj 22937 0 obj <> endobj 22938 0 obj <> endobj 22939 0 obj <> endobj 22940 0 obj <> endobj 22941 0 obj <> endobj 22942 0 obj <> endobj 22943 0 obj <> endobj 22944 0 obj <> endobj 22945 0 obj <> endobj 22946 0 obj <> endobj 22947 0 obj <> endobj 22948 0 obj <> endobj 22949 0 obj <> endobj 22950 0 obj <> endobj 22951 0 obj <> endobj 22952 0 obj <> endobj 22953 0 obj <> endobj 22954 0 obj <> endobj 22955 0 obj <> endobj 22956 0 obj <> endobj 22957 0 obj <> endobj 22958 0 obj <> endobj 22959 0 obj <> endobj 22960 0 obj <> endobj 22961 0 obj <> endobj 22962 0 obj <> endobj 22963 0 obj <> endobj 22964 0 obj <> endobj 22965 0 obj <> endobj 22966 0 obj <> endobj 22967 0 obj <> endobj 22968 0 obj <> endobj 22969 0 obj <> endobj 22970 0 obj <> endobj 22971 0 obj <> endobj 22972 0 obj <> endobj 22973 0 obj <> endobj 22974 0 obj <> endobj 22975 0 obj <> endobj 22976 0 obj <> endobj 22977 0 obj <> endobj 22978 0 obj <> endobj 22979 0 obj <> endobj 22980 0 obj <> endobj 22981 0 obj <> endobj 22982 0 obj <> endobj 22983 0 obj <> endobj 22984 0 obj <> endobj 22985 0 obj <> endobj 22986 0 obj <> endobj 22987 0 obj <> endobj 22988 0 obj <> endobj 22989 0 obj <> endobj 22990 0 obj <> endobj 22991 0 obj <> endobj 22992 0 obj <> endobj 22993 0 obj <> endobj 22994 0 obj <> endobj 22995 0 obj <> endobj 22996 0 obj <> endobj 22997 0 obj <> endobj 22998 0 obj <> endobj 22999 0 obj <> endobj 23000 0 obj <> endobj 23001 0 obj <> endobj 23002 0 obj <> endobj 23003 0 obj <> endobj 23004 0 obj <> endobj 23005 0 obj <> endobj 23006 0 obj <> endobj 23007 0 obj <> endobj 23008 0 obj <> endobj 23009 0 obj <> endobj 23010 0 obj <> endobj 23011 0 obj <> endobj 23012 0 obj <> endobj 23013 0 obj <> endobj 23014 0 obj <> endobj 23015 0 obj <> endobj 23016 0 obj <> endobj 23017 0 obj <> endobj 23018 0 obj <> endobj 23019 0 obj <> endobj 23020 0 obj <> endobj 23021 0 obj <> endobj 23022 0 obj <> endobj 23023 0 obj <> endobj 23024 0 obj <> endobj 23025 0 obj <> endobj 23026 0 obj <> endobj 23027 0 obj <> endobj 23028 0 obj <> endobj 23029 0 obj <> endobj 23030 0 obj <> endobj 23031 0 obj <> endobj 23032 0 obj <> endobj 23033 0 obj <> endobj 23034 0 obj <> endobj 23035 0 obj <> endobj 23036 0 obj <> endobj 23037 0 obj <> endobj 23038 0 obj <> endobj 23039 0 obj <> endobj 23040 0 obj <> endobj 23041 0 obj <> endobj 23042 0 obj <> endobj 23043 0 obj <> endobj 23044 0 obj <> endobj 23045 0 obj <> endobj 23046 0 obj <> endobj 23047 0 obj <> endobj 23048 0 obj <> endobj 23049 0 obj <> endobj 23050 0 obj <> endobj 23051 0 obj <> endobj 23052 0 obj <> endobj 23053 0 obj <> endobj 23054 0 obj <> endobj 23055 0 obj <> endobj 23056 0 obj <> endobj 23057 0 obj <> endobj 23058 0 obj <> endobj 23059 0 obj <> endobj 23060 0 obj <> endobj 23061 0 obj <> endobj 23062 0 obj <> endobj 23063 0 obj <> endobj 23064 0 obj <> endobj 23065 0 obj <> endobj 23066 0 obj <> endobj 23067 0 obj <> endobj 23068 0 obj <> endobj 23069 0 obj <> endobj 23070 0 obj <> endobj 23071 0 obj <> endobj 23072 0 obj <> endobj 23073 0 obj <> endobj 23074 0 obj <> endobj 23075 0 obj <> endobj 23076 0 obj <> endobj 23077 0 obj <> endobj 23078 0 obj <> endobj 23079 0 obj <> endobj 23080 0 obj <> endobj 23081 0 obj <> endobj 23082 0 obj <> endobj 23083 0 obj <> endobj 23084 0 obj <> endobj 23085 0 obj <> endobj 23086 0 obj <> endobj 23087 0 obj <> endobj 23088 0 obj <> endobj 23089 0 obj <> endobj 23090 0 obj <> endobj 23091 0 obj <> endobj 23092 0 obj <> endobj 23093 0 obj <> endobj 23094 0 obj <> endobj 23095 0 obj <> endobj 23096 0 obj <> endobj 23097 0 obj <> endobj 23098 0 obj <> endobj 23099 0 obj <> endobj 23100 0 obj <> endobj 23101 0 obj <> endobj 23102 0 obj <> endobj 23103 0 obj <> endobj 23104 0 obj <> endobj 23105 0 obj <> endobj 23106 0 obj <> endobj 23107 0 obj <> endobj 23108 0 obj <> endobj 23109 0 obj <> endobj 23110 0 obj <> endobj 23111 0 obj <> endobj 23112 0 obj <> endobj 23113 0 obj <> endobj 23114 0 obj <> endobj 23115 0 obj <> endobj 23116 0 obj <> endobj 23117 0 obj <> endobj 23118 0 obj <> endobj 23119 0 obj <> endobj 23120 0 obj <> endobj 23121 0 obj <> endobj 23122 0 obj <> endobj 23123 0 obj <> endobj 23124 0 obj <> endobj 23125 0 obj <> endobj 23126 0 obj <> endobj 23127 0 obj <> endobj 23128 0 obj <> endobj 23129 0 obj <> endobj 23130 0 obj <> endobj 23131 0 obj <> endobj 23132 0 obj <> endobj 23133 0 obj <> endobj 23134 0 obj <> endobj 23135 0 obj <> endobj 23136 0 obj <> endobj 23137 0 obj <> endobj 23138 0 obj <> endobj 23139 0 obj <> endobj 23140 0 obj <> endobj 23141 0 obj <> endobj 23142 0 obj <> endobj 23143 0 obj <> endobj 23144 0 obj <> endobj 23145 0 obj <> endobj 23146 0 obj <> endobj 23147 0 obj <> endobj 23148 0 obj <> endobj 23149 0 obj <> endobj 23150 0 obj <> endobj 23151 0 obj <> endobj 23152 0 obj <> endobj 23153 0 obj <> endobj 23154 0 obj <> endobj 23155 0 obj <> endobj 23156 0 obj <> endobj 23157 0 obj <> endobj 23158 0 obj <> endobj 23159 0 obj <> endobj 23160 0 obj <> endobj 23161 0 obj <> endobj 23162 0 obj <> endobj 23163 0 obj <> endobj 23164 0 obj <> endobj 23165 0 obj <> endobj 23166 0 obj <> endobj 23167 0 obj <> endobj 23168 0 obj <> endobj 23169 0 obj <> endobj 23170 0 obj <> endobj 23171 0 obj <> endobj 23172 0 obj <> endobj 23173 0 obj <> endobj 23174 0 obj <> endobj 23175 0 obj <> endobj 23176 0 obj <> endobj 23177 0 obj <> endobj 23178 0 obj <> endobj 23179 0 obj <> endobj 23180 0 obj <> endobj 23181 0 obj <> endobj 23182 0 obj <> endobj 23183 0 obj <> endobj 23184 0 obj <> endobj 23185 0 obj <> endobj 23186 0 obj <> endobj 23187 0 obj <> endobj 23188 0 obj <> endobj 23189 0 obj <> endobj 23190 0 obj <> endobj 23191 0 obj <> endobj 23192 0 obj <> endobj 23193 0 obj <> endobj 23194 0 obj <> endobj 23195 0 obj <> endobj 23196 0 obj <> endobj 23197 0 obj <> endobj 23198 0 obj <> endobj 23199 0 obj <> endobj 23200 0 obj <> endobj 23201 0 obj <> endobj 23202 0 obj <> endobj 23203 0 obj <> endobj 23204 0 obj <> endobj 23205 0 obj <> endobj 23206 0 obj <> endobj 23207 0 obj <> endobj 23208 0 obj <> endobj 23209 0 obj <> endobj 23210 0 obj <> endobj 23211 0 obj <> endobj 23212 0 obj <> endobj 23213 0 obj <> endobj 23214 0 obj <> endobj 23215 0 obj <> endobj 23216 0 obj <> endobj 23217 0 obj <> endobj 23218 0 obj <> endobj 23219 0 obj <> endobj 23220 0 obj <> endobj 23221 0 obj <> endobj 23222 0 obj <> endobj 23223 0 obj <> endobj 23224 0 obj <> endobj 23225 0 obj <> endobj 23226 0 obj <> endobj 23227 0 obj <> endobj 23228 0 obj <> endobj 23229 0 obj <> endobj 23230 0 obj <> endobj 23231 0 obj <> endobj 23232 0 obj <> endobj 23233 0 obj <> endobj 23234 0 obj <> endobj 23235 0 obj <> endobj 23236 0 obj <> endobj 23237 0 obj <> endobj 23238 0 obj <> endobj 23239 0 obj <> endobj 23240 0 obj <> endobj 23241 0 obj <> endobj 23242 0 obj <> endobj 23243 0 obj <> endobj 23244 0 obj <> endobj 23245 0 obj <> endobj 23246 0 obj <> endobj 23247 0 obj <> endobj 23248 0 obj <> endobj 23249 0 obj <> endobj 23250 0 obj <> endobj 23251 0 obj <> endobj 23252 0 obj <> endobj 23253 0 obj <> endobj 23254 0 obj <> endobj 23255 0 obj <> endobj 23256 0 obj <> endobj 23257 0 obj <> endobj 23258 0 obj <> endobj 23259 0 obj <> endobj 23260 0 obj <> endobj 23261 0 obj <> endobj 23262 0 obj <> endobj 23263 0 obj <> endobj 23264 0 obj <> endobj 23265 0 obj <> endobj 23266 0 obj <> endobj 23267 0 obj <> endobj 23268 0 obj <> endobj 23269 0 obj <> endobj 23270 0 obj <> endobj 23271 0 obj <> endobj 23272 0 obj <> endobj 23273 0 obj <> endobj 23274 0 obj <> endobj 23275 0 obj <> endobj 23276 0 obj <> endobj 23277 0 obj <> endobj 23278 0 obj <> endobj 23279 0 obj <> endobj 23280 0 obj <> endobj 23281 0 obj <> endobj 23282 0 obj <> endobj 23283 0 obj <> endobj 23284 0 obj <> endobj 23285 0 obj <> endobj 23286 0 obj <> endobj 23287 0 obj <> endobj 23288 0 obj <> endobj 23289 0 obj <> endobj 23290 0 obj <> endobj 23291 0 obj <> endobj 23292 0 obj <> endobj 23293 0 obj <> endobj 23294 0 obj <> endobj 23295 0 obj <> endobj 23296 0 obj <> endobj 23297 0 obj <> endobj 23298 0 obj <> endobj 23299 0 obj <> endobj 23300 0 obj <> endobj 23301 0 obj <> endobj 23302 0 obj <> endobj 23303 0 obj <> endobj 23304 0 obj <> endobj 23305 0 obj <> endobj 23306 0 obj <> endobj 23307 0 obj <> endobj 23308 0 obj <> endobj 23309 0 obj <> endobj 23310 0 obj <> endobj 23311 0 obj <> endobj 23312 0 obj <> endobj 23313 0 obj <> endobj 23314 0 obj <> endobj 23315 0 obj <> endobj 23316 0 obj <> endobj 23317 0 obj <> endobj 23318 0 obj <> endobj 23319 0 obj <> endobj 23320 0 obj <> endobj 23321 0 obj <> endobj 23322 0 obj <> endobj 23323 0 obj <> endobj 23324 0 obj <> endobj 23325 0 obj <> endobj 23326 0 obj <> endobj 23327 0 obj <> endobj 23328 0 obj <> endobj 23329 0 obj <> endobj 23330 0 obj <> endobj 23331 0 obj <> endobj 23332 0 obj <> endobj 23333 0 obj <> endobj 23334 0 obj <> endobj 23335 0 obj <> endobj 23336 0 obj <> endobj 23337 0 obj <> endobj 23338 0 obj <> endobj 23339 0 obj <> endobj 23340 0 obj <> endobj 23341 0 obj <> endobj 23342 0 obj <> endobj 23343 0 obj <> endobj 23344 0 obj <> endobj 23345 0 obj <> endobj 23346 0 obj <> endobj 23347 0 obj <> endobj 23348 0 obj <> endobj 23349 0 obj <> endobj 23350 0 obj <> endobj 23351 0 obj <> endobj 23352 0 obj <> endobj 23353 0 obj <> endobj 23354 0 obj <> endobj 23355 0 obj <> endobj 23356 0 obj <> endobj 23357 0 obj <> endobj 23358 0 obj <> endobj 23359 0 obj <> endobj 23360 0 obj <> endobj 23361 0 obj <> endobj 23362 0 obj <> endobj 23363 0 obj <> endobj 23364 0 obj <> endobj 23365 0 obj <> endobj 23366 0 obj <> endobj 23367 0 obj <> endobj 23368 0 obj <> endobj 23369 0 obj <> endobj 23370 0 obj <> endobj 23371 0 obj <> endobj 23372 0 obj <> endobj 23373 0 obj <> endobj 23374 0 obj <> endobj 23375 0 obj <> endobj 23376 0 obj <> endobj 23377 0 obj <> endobj 23378 0 obj <> endobj 23379 0 obj <> endobj 23380 0 obj <> endobj 23381 0 obj <> endobj 23382 0 obj <> endobj 23383 0 obj <> endobj 23384 0 obj <> endobj 23385 0 obj <> endobj 23386 0 obj <> endobj 23387 0 obj <> endobj 23388 0 obj <> endobj 23389 0 obj <> endobj 23390 0 obj <> endobj 23391 0 obj <> endobj 23392 0 obj <> endobj 23393 0 obj <> endobj 23394 0 obj <> endobj 23395 0 obj <> endobj 23396 0 obj <> endobj 23397 0 obj <> endobj 23398 0 obj <> endobj 23399 0 obj <> endobj 23400 0 obj <> endobj 23401 0 obj <> endobj 23402 0 obj <> endobj 23403 0 obj <> endobj 23404 0 obj <> endobj 23405 0 obj <> endobj 23406 0 obj <> endobj 23407 0 obj <> endobj 23408 0 obj <> endobj 23409 0 obj <> endobj 23410 0 obj <> endobj 23411 0 obj <> endobj 23412 0 obj <> endobj 23413 0 obj <> endobj 23414 0 obj <> endobj 23415 0 obj <> endobj 23416 0 obj <> endobj 23417 0 obj <> endobj 23418 0 obj <> endobj 23419 0 obj <> endobj 23420 0 obj <> endobj 23421 0 obj <> endobj 23422 0 obj <> endobj 23423 0 obj <> endobj 23424 0 obj <> endobj 23425 0 obj <> endobj 23426 0 obj <> endobj 23427 0 obj <> endobj 23428 0 obj <> endobj 23429 0 obj <> endobj 23430 0 obj <> endobj 23431 0 obj <> endobj 23432 0 obj <> endobj 23433 0 obj <> endobj 23434 0 obj <> endobj 23435 0 obj <> endobj 23436 0 obj <> endobj 23437 0 obj <> endobj 23438 0 obj <> endobj 23439 0 obj <> endobj 23440 0 obj <> endobj 23441 0 obj <> endobj 23442 0 obj <> endobj 23443 0 obj <> endobj 23444 0 obj <> endobj 23445 0 obj <> endobj 23446 0 obj <> endobj 23447 0 obj <> endobj 23448 0 obj <> endobj 23449 0 obj <> endobj 23450 0 obj <> endobj 23451 0 obj <> endobj 23452 0 obj <> endobj 23453 0 obj <> endobj 23454 0 obj <> endobj 23455 0 obj <> endobj 23456 0 obj <> endobj 23457 0 obj <> endobj 23458 0 obj <> endobj 23459 0 obj <> endobj 23460 0 obj <> endobj 23461 0 obj <> endobj 23462 0 obj <> endobj 23463 0 obj <> endobj 23464 0 obj <> endobj 23465 0 obj <> endobj 23466 0 obj <> endobj 23467 0 obj <> endobj 23468 0 obj <> endobj 23469 0 obj <> endobj 23470 0 obj <> endobj 23471 0 obj <> endobj 23472 0 obj <> endobj 23473 0 obj <> endobj 23474 0 obj <> endobj 23475 0 obj <> endobj 23476 0 obj <> endobj 23477 0 obj <> endobj 23478 0 obj <> endobj 23479 0 obj <> endobj 23480 0 obj <> endobj 23481 0 obj <> endobj 23482 0 obj <> endobj 23483 0 obj <> endobj 23484 0 obj <> endobj 23485 0 obj <> endobj 23486 0 obj <> endobj 23487 0 obj <> endobj 23488 0 obj <> endobj 23489 0 obj <> endobj 23490 0 obj <> endobj 23491 0 obj <> endobj 23492 0 obj <> endobj 23493 0 obj <> endobj 23494 0 obj <> endobj 23495 0 obj <> endobj 23496 0 obj <> endobj 23497 0 obj <> endobj 23498 0 obj <> endobj 23499 0 obj <> endobj 23500 0 obj <> endobj 23501 0 obj <> endobj 23502 0 obj <> endobj 23503 0 obj <> endobj 23504 0 obj <> endobj 23505 0 obj <> endobj 23506 0 obj <> endobj 23507 0 obj <> endobj 23508 0 obj <> endobj 23509 0 obj <> endobj 23510 0 obj <> endobj 23511 0 obj <> endobj 23512 0 obj <> endobj 23513 0 obj <> endobj 23514 0 obj <> endobj 23515 0 obj <> endobj 23516 0 obj <> endobj 23517 0 obj <> endobj 23518 0 obj <> endobj 23519 0 obj <> endobj 23520 0 obj <> endobj 23521 0 obj <> endobj 23522 0 obj <> endobj 23523 0 obj <> endobj 23524 0 obj <> endobj 23525 0 obj <> endobj 23526 0 obj <> endobj 23527 0 obj <> endobj 23528 0 obj <> endobj 23529 0 obj <> endobj 23530 0 obj <> endobj 23531 0 obj <> endobj 23532 0 obj <> endobj 23533 0 obj <> endobj 23534 0 obj <> endobj 23535 0 obj <> endobj 23536 0 obj <> endobj 23537 0 obj <> endobj 23538 0 obj <> endobj 23539 0 obj <> endobj 23540 0 obj <> endobj 23541 0 obj <> endobj 23542 0 obj <> endobj 23543 0 obj <> endobj 23544 0 obj <> endobj 23545 0 obj <> endobj 23546 0 obj <> endobj 23547 0 obj <> endobj 23548 0 obj <> endobj 23549 0 obj <> endobj 23550 0 obj <> endobj 23551 0 obj <> endobj 23552 0 obj <> endobj 23553 0 obj <> endobj 23554 0 obj <> endobj 23555 0 obj <> endobj 23556 0 obj <> endobj 23557 0 obj <> endobj 23558 0 obj <> endobj 23559 0 obj <> endobj 23560 0 obj <> endobj 23561 0 obj <> endobj 23562 0 obj <> endobj 23563 0 obj <> endobj 23564 0 obj <> endobj 23565 0 obj <> endobj 23566 0 obj <> endobj 23567 0 obj <> endobj 23568 0 obj <> endobj 23569 0 obj <> endobj 23570 0 obj <> endobj 23571 0 obj <> endobj 23572 0 obj <> endobj 23573 0 obj <> endobj 23574 0 obj <> endobj 23575 0 obj <> endobj 23576 0 obj <> endobj 23577 0 obj <> endobj 23578 0 obj <> endobj 23579 0 obj <> endobj 23580 0 obj <> endobj 23581 0 obj <> endobj 23582 0 obj <> endobj 23583 0 obj <> endobj 23584 0 obj <> endobj 23585 0 obj <> endobj 23586 0 obj <> endobj 23587 0 obj <> endobj 23588 0 obj <> endobj 23589 0 obj <> endobj 23590 0 obj <> endobj 23591 0 obj <> endobj 23592 0 obj <> endobj 23593 0 obj <> endobj 23594 0 obj <> endobj 23595 0 obj <> endobj 23596 0 obj <> endobj 23597 0 obj <> endobj 23598 0 obj <> endobj 23599 0 obj <> endobj 23600 0 obj <> endobj 23601 0 obj <> endobj 23602 0 obj <> endobj 23603 0 obj <> endobj 23604 0 obj <> endobj 23605 0 obj <> endobj 23606 0 obj <> endobj 23607 0 obj <> endobj 23608 0 obj <> endobj 23609 0 obj <> endobj 23610 0 obj <> endobj 23611 0 obj <> endobj 23612 0 obj <> endobj 23613 0 obj <> endobj 23614 0 obj <> endobj 23615 0 obj <> endobj 23616 0 obj <> endobj 23617 0 obj <> endobj 23618 0 obj <> endobj 23619 0 obj <> endobj 23620 0 obj <> endobj 23621 0 obj <> endobj 23622 0 obj <> endobj 23623 0 obj <> endobj 23624 0 obj <> endobj 23625 0 obj <> endobj 23626 0 obj <> endobj 23627 0 obj <> endobj 23628 0 obj <> endobj 23629 0 obj <> endobj 23630 0 obj <> endobj 23631 0 obj <> endobj 23632 0 obj <> endobj 23633 0 obj <> endobj 23634 0 obj <> endobj 23635 0 obj <> endobj 23636 0 obj <> endobj 23637 0 obj <> endobj 23638 0 obj <> endobj 23639 0 obj <> endobj 23640 0 obj <> endobj 23641 0 obj <> endobj 23642 0 obj <> endobj 23643 0 obj <> endobj 23644 0 obj <> endobj 23645 0 obj <> endobj 23646 0 obj <> endobj 23647 0 obj <> endobj 23648 0 obj <> endobj 23649 0 obj <> endobj 23650 0 obj <> endobj 23651 0 obj <> endobj 23652 0 obj <> endobj 23653 0 obj <> endobj 23654 0 obj <> endobj 23655 0 obj <> endobj 23656 0 obj <> endobj 23657 0 obj <> endobj 23658 0 obj <> endobj 23659 0 obj <> endobj 23660 0 obj <> endobj 23661 0 obj <> endobj 23662 0 obj <> endobj 23663 0 obj <> endobj 23664 0 obj <> endobj 23665 0 obj <> endobj 23666 0 obj <> endobj 23667 0 obj <> endobj 23668 0 obj <> endobj 23669 0 obj <> endobj 23670 0 obj <> endobj 23671 0 obj <> endobj 23672 0 obj <> endobj 23673 0 obj <> endobj 23674 0 obj <> endobj 23675 0 obj <> endobj 23676 0 obj <> endobj 23677 0 obj <> endobj 23678 0 obj <> endobj 23679 0 obj <> endobj 23680 0 obj <> endobj 23681 0 obj <> endobj 23682 0 obj <> endobj 23683 0 obj <> endobj 23684 0 obj <> endobj 23685 0 obj <> endobj 23686 0 obj <> endobj 23687 0 obj <> endobj 23688 0 obj <> endobj 23689 0 obj <> endobj 23690 0 obj <> endobj 23691 0 obj <> endobj 23692 0 obj <> endobj 23693 0 obj <> endobj 23694 0 obj <> endobj 23695 0 obj <> endobj 23696 0 obj <> endobj 23697 0 obj <> endobj 23698 0 obj <> endobj 23699 0 obj <> endobj 23700 0 obj <> endobj 23701 0 obj <> endobj 23702 0 obj <> endobj 23703 0 obj <> endobj 23704 0 obj <> endobj 23705 0 obj <> endobj 23706 0 obj <> endobj 23707 0 obj <> endobj 23708 0 obj <> endobj 23709 0 obj <> endobj 23710 0 obj <> endobj 23711 0 obj <> endobj 23712 0 obj <> endobj 23713 0 obj <> endobj 23714 0 obj <> endobj 23715 0 obj <> endobj 23716 0 obj <> endobj 23717 0 obj <> endobj 23718 0 obj <> endobj 23719 0 obj <> endobj 23720 0 obj <> endobj 23721 0 obj <> endobj 23722 0 obj <> endobj 23723 0 obj <> endobj 23724 0 obj <> endobj 23725 0 obj <> endobj 23726 0 obj <> endobj 23727 0 obj <> endobj 23728 0 obj <> endobj 23729 0 obj <> endobj 23730 0 obj <> endobj 23731 0 obj <> endobj 23732 0 obj <> endobj 23733 0 obj <> endobj 23734 0 obj <> endobj 23735 0 obj <> endobj 23736 0 obj <> endobj 23737 0 obj <> endobj 23738 0 obj <> endobj 23739 0 obj <> endobj 23740 0 obj <> endobj 23741 0 obj <> endobj 23742 0 obj <> endobj 23743 0 obj <> endobj 23744 0 obj <> endobj 23745 0 obj <> endobj 23746 0 obj <> endobj 23747 0 obj <> endobj 23748 0 obj <> endobj 23749 0 obj <> endobj 23750 0 obj <> endobj 23751 0 obj <> endobj 23752 0 obj <> endobj 23753 0 obj <> endobj 23754 0 obj <> endobj 23755 0 obj <> endobj 23756 0 obj <> endobj 23757 0 obj <> endobj 23758 0 obj <> endobj 23759 0 obj <> endobj 23760 0 obj <> endobj 23761 0 obj <> endobj 23762 0 obj <> endobj 23763 0 obj <> endobj 23764 0 obj <> endobj 23765 0 obj <> endobj 23766 0 obj <> endobj 23767 0 obj <> endobj 23768 0 obj <> endobj 23769 0 obj <> endobj 23770 0 obj <> endobj 23771 0 obj <> endobj 23772 0 obj <> endobj 23773 0 obj <> endobj 23774 0 obj <> endobj 23775 0 obj <> endobj 23776 0 obj <> endobj 23777 0 obj <> endobj 23778 0 obj <> endobj 23779 0 obj <> endobj 23780 0 obj <> endobj 23781 0 obj <> endobj 23782 0 obj <> endobj 23783 0 obj <> endobj 23784 0 obj <> endobj 23785 0 obj <> endobj 23786 0 obj <> endobj 23787 0 obj <> endobj 23788 0 obj <> endobj 23789 0 obj <> endobj 23790 0 obj <> endobj 23791 0 obj <> endobj 23792 0 obj <> endobj 23793 0 obj <> endobj 23794 0 obj <> endobj 23795 0 obj <> endobj 23796 0 obj <> endobj 23797 0 obj <> endobj 23798 0 obj <> endobj 23799 0 obj <> endobj 23800 0 obj <> endobj 23801 0 obj <> endobj 23802 0 obj <> endobj 23803 0 obj <> endobj 23804 0 obj <> endobj 23805 0 obj <> endobj 23806 0 obj <> endobj 23807 0 obj <> endobj 23808 0 obj <> endobj 23809 0 obj <> endobj 23810 0 obj <> endobj 23811 0 obj <> endobj 23812 0 obj <> endobj 23813 0 obj <> endobj 23814 0 obj <> endobj 23815 0 obj <> endobj 23816 0 obj <> endobj 23817 0 obj <> endobj 23818 0 obj <> endobj 23819 0 obj <> endobj 23820 0 obj <> endobj 23821 0 obj <> endobj 23822 0 obj <> endobj 23823 0 obj <> endobj 23824 0 obj <> endobj 23825 0 obj <> endobj 23826 0 obj <> endobj 23827 0 obj <> endobj 23828 0 obj <> endobj 23829 0 obj <> endobj 23830 0 obj <> endobj 23831 0 obj <> endobj 23832 0 obj <> endobj 23833 0 obj <> endobj 23834 0 obj <> endobj 23835 0 obj <> endobj 23836 0 obj <> endobj 23837 0 obj <> endobj 23838 0 obj <> endobj 23839 0 obj <> endobj 23840 0 obj <> endobj 23841 0 obj <> endobj 23842 0 obj <> endobj 23843 0 obj <> endobj 23844 0 obj <> endobj 23845 0 obj <> endobj 23846 0 obj <> endobj 23847 0 obj <> endobj 23848 0 obj <> endobj 23849 0 obj <> endobj 23850 0 obj <> endobj 23851 0 obj <> endobj 23852 0 obj <> endobj 23853 0 obj <> endobj 23854 0 obj <> endobj 23855 0 obj <> endobj 23856 0 obj <> endobj 23857 0 obj <> endobj 23858 0 obj <> endobj 23859 0 obj <> endobj 23860 0 obj <> endobj 23861 0 obj <> endobj 23862 0 obj <> endobj 23863 0 obj <> endobj 23864 0 obj <> endobj 23865 0 obj <> endobj 23866 0 obj <> endobj 23867 0 obj <> endobj 23868 0 obj <> endobj 23869 0 obj <> endobj 23870 0 obj <> endobj 23871 0 obj <> endobj 23872 0 obj <> endobj 23873 0 obj <> endobj 23874 0 obj <> endobj 23875 0 obj <> endobj 23876 0 obj <> endobj 23877 0 obj <> endobj 23878 0 obj <> endobj 23879 0 obj <> endobj 23880 0 obj <> endobj 23881 0 obj <> endobj 23882 0 obj <> endobj 23883 0 obj <> endobj 23884 0 obj <> endobj 23885 0 obj <> endobj 23886 0 obj <> endobj 23887 0 obj <> endobj 23888 0 obj <> endobj 23889 0 obj <> endobj 23890 0 obj <> endobj 23891 0 obj <> endobj 23892 0 obj <> endobj 23893 0 obj <> endobj 23894 0 obj <> endobj 23895 0 obj <> endobj 23896 0 obj <> endobj 23897 0 obj <> endobj 23898 0 obj <> endobj 23899 0 obj <> endobj 23900 0 obj <> endobj 23901 0 obj <> endobj 23902 0 obj <> endobj 23903 0 obj <> endobj 23904 0 obj <> endobj 23905 0 obj <> endobj 23906 0 obj <> endobj 23907 0 obj <> endobj 23908 0 obj <> endobj 23909 0 obj <> endobj 23910 0 obj <> endobj 23911 0 obj <> endobj 23912 0 obj <> endobj 23913 0 obj <> endobj 23914 0 obj <> endobj 23915 0 obj <> endobj 23916 0 obj <> endobj 23917 0 obj <> endobj 23918 0 obj <> endobj 23919 0 obj <> endobj 23920 0 obj <> endobj 23921 0 obj <> endobj 23922 0 obj <> endobj 23923 0 obj <> endobj 23924 0 obj <> endobj 23925 0 obj <> endobj 23926 0 obj <> endobj 23927 0 obj <> endobj 23928 0 obj <> endobj 23929 0 obj <> endobj 23930 0 obj <> endobj 23931 0 obj <> endobj 23932 0 obj <> endobj 23933 0 obj <> endobj 23934 0 obj <> endobj 23935 0 obj <> endobj 23936 0 obj <> endobj 23937 0 obj <> endobj 23938 0 obj <> endobj 23939 0 obj <> endobj 23940 0 obj <> endobj 23941 0 obj <> endobj 23942 0 obj <> endobj 23943 0 obj <> endobj 23944 0 obj <> endobj 23945 0 obj <> endobj 23946 0 obj <> endobj 23947 0 obj <> endobj 23948 0 obj <> endobj 23949 0 obj <> endobj 23950 0 obj <> endobj 23951 0 obj <> endobj 23952 0 obj <> endobj 23953 0 obj <> endobj 23954 0 obj <> endobj 23955 0 obj <> endobj 23956 0 obj <> endobj 23957 0 obj <> endobj 23958 0 obj <> endobj 23959 0 obj <> endobj 23960 0 obj <> endobj 23961 0 obj <> endobj 23962 0 obj <> endobj 23963 0 obj <> endobj 23964 0 obj <> endobj 23965 0 obj <> endobj 23966 0 obj <> endobj 23967 0 obj <> endobj 23968 0 obj <> endobj 23969 0 obj <> endobj 23970 0 obj <> endobj 23971 0 obj <> endobj 23972 0 obj <> endobj 23973 0 obj <> endobj 23974 0 obj <> endobj 23975 0 obj <> endobj 23976 0 obj <> endobj 23977 0 obj <> endobj 23978 0 obj <> endobj 23979 0 obj <> endobj 23980 0 obj <> endobj 23981 0 obj <> endobj 23982 0 obj <> endobj 23983 0 obj <> endobj 23984 0 obj <> endobj 23985 0 obj <> endobj 23986 0 obj <> endobj 23987 0 obj <> endobj 23988 0 obj <> endobj 23989 0 obj <> endobj 23990 0 obj <> endobj 23991 0 obj <> endobj 23992 0 obj <> endobj 23993 0 obj <> endobj 23994 0 obj <> endobj 23995 0 obj <> endobj 23996 0 obj <> endobj 23997 0 obj <> endobj 23998 0 obj <> endobj 23999 0 obj <> endobj 24000 0 obj <> endobj 24001 0 obj <> endobj 24002 0 obj <> endobj 24003 0 obj <> endobj 24004 0 obj <> endobj 24005 0 obj <> endobj 24006 0 obj <> endobj 24007 0 obj <> endobj 24008 0 obj <> endobj 24009 0 obj <> endobj 24010 0 obj <> endobj 24011 0 obj <> endobj 24012 0 obj <> endobj 24013 0 obj <> endobj 24014 0 obj <> endobj 24015 0 obj <> endobj 24016 0 obj <> endobj 24017 0 obj <> endobj 24018 0 obj <> endobj 24019 0 obj <> endobj 24020 0 obj <> endobj 24021 0 obj <> endobj 24022 0 obj <> endobj 24023 0 obj <> endobj 24024 0 obj <> endobj 24025 0 obj <> endobj 24026 0 obj <> endobj 24027 0 obj <> endobj 24028 0 obj <> endobj 24029 0 obj <> endobj 24030 0 obj <> endobj 24031 0 obj <> endobj 24032 0 obj <> endobj 24033 0 obj <> endobj 24034 0 obj <> endobj 24035 0 obj <> endobj 24036 0 obj <> endobj 24037 0 obj <> endobj 24038 0 obj <> endobj 24039 0 obj <> endobj 24040 0 obj <> endobj 24041 0 obj <> endobj 24042 0 obj <> endobj 24043 0 obj <> endobj 24044 0 obj <> endobj 24045 0 obj <> endobj 24046 0 obj <> endobj 24047 0 obj <> endobj 24048 0 obj <> endobj 24049 0 obj <> endobj 24050 0 obj <> endobj 24051 0 obj <> endobj 24052 0 obj <> endobj 24053 0 obj <> endobj 24054 0 obj <> endobj 24055 0 obj <> endobj 24056 0 obj <> endobj 24057 0 obj <> endobj 24058 0 obj <> endobj 24059 0 obj <> endobj 24060 0 obj <> endobj 24061 0 obj <> endobj 24062 0 obj <> endobj 24063 0 obj <> endobj 24064 0 obj <> endobj 24065 0 obj <> endobj 24066 0 obj <> endobj 24067 0 obj <> endobj 24068 0 obj <> endobj 24069 0 obj <> endobj 24070 0 obj <> endobj 24071 0 obj <> endobj 24072 0 obj <> endobj 24073 0 obj <> endobj 24074 0 obj <> endobj 24075 0 obj <> endobj 24076 0 obj <> endobj 24077 0 obj <> endobj 24078 0 obj <> endobj 24079 0 obj <> endobj 24080 0 obj <> endobj 24081 0 obj <> endobj 24082 0 obj <> endobj 24083 0 obj <> endobj 24084 0 obj <> endobj 24085 0 obj <> endobj 24086 0 obj <> endobj 24087 0 obj <> endobj 24088 0 obj <> endobj 24089 0 obj <> endobj 24090 0 obj <> endobj 24091 0 obj <> endobj 24092 0 obj <> endobj 24093 0 obj <> endobj 24094 0 obj <> endobj 24095 0 obj <> endobj 24096 0 obj <> endobj 24097 0 obj <> endobj 24098 0 obj <> endobj 24099 0 obj <> endobj 24100 0 obj <> endobj 24101 0 obj <> endobj 24102 0 obj <> endobj 24103 0 obj <> endobj 24104 0 obj <> endobj 24105 0 obj <> endobj 24106 0 obj <> endobj 24107 0 obj <> endobj 24108 0 obj <> endobj 24109 0 obj <> endobj 24110 0 obj <> endobj 24111 0 obj <> endobj 24112 0 obj <> endobj 24113 0 obj <> endobj 24114 0 obj <> endobj 24115 0 obj <> endobj 24116 0 obj <> endobj 24117 0 obj <> endobj 24118 0 obj <> endobj 24119 0 obj <> endobj 24120 0 obj <> endobj 24121 0 obj <> endobj 24122 0 obj <> endobj 24123 0 obj <> endobj 24124 0 obj <> endobj 24125 0 obj <> endobj 24126 0 obj <> endobj 24127 0 obj <> endobj 24128 0 obj <> endobj 24129 0 obj <> endobj 24130 0 obj <> endobj 24131 0 obj <> endobj 24132 0 obj <> endobj 24133 0 obj <> endobj 24134 0 obj <> endobj 24135 0 obj <> endobj 24136 0 obj <> endobj 24137 0 obj <> endobj 24138 0 obj <> endobj 24139 0 obj <> endobj 24140 0 obj <> endobj 24141 0 obj <> endobj 24142 0 obj <> endobj 24143 0 obj <> endobj 24144 0 obj <> endobj 24145 0 obj <> endobj 24146 0 obj <> endobj 24147 0 obj <> endobj 24148 0 obj <> endobj 24149 0 obj <> endobj 24150 0 obj <> endobj 24151 0 obj <> endobj 24152 0 obj <> endobj 24153 0 obj <> endobj 24154 0 obj <> endobj 24155 0 obj <> endobj 24156 0 obj <> endobj 24157 0 obj <> endobj 24158 0 obj <> endobj 24159 0 obj <> endobj 24160 0 obj <> endobj 24161 0 obj <> endobj 24162 0 obj <> endobj 24163 0 obj <> endobj 24164 0 obj <> endobj 24165 0 obj <> endobj 24166 0 obj <> endobj 24167 0 obj <> endobj 24168 0 obj <> endobj 24169 0 obj <> endobj 24170 0 obj <> endobj 24171 0 obj <> endobj 24172 0 obj <> endobj 24173 0 obj <> endobj 24174 0 obj <> endobj 24175 0 obj <> endobj 24176 0 obj <> endobj 24177 0 obj <> endobj 24178 0 obj <> endobj 24179 0 obj <> endobj 24180 0 obj <> endobj 24181 0 obj <> endobj 24182 0 obj <> endobj 24183 0 obj <> endobj 24184 0 obj <> endobj 24185 0 obj <> endobj 24186 0 obj <> endobj 24187 0 obj <> endobj 24188 0 obj <> endobj 24189 0 obj <> endobj 24190 0 obj <> endobj 24191 0 obj <> endobj 24192 0 obj <> endobj 24193 0 obj <> endobj 24194 0 obj <> endobj 24195 0 obj <> endobj 24196 0 obj <> endobj 24197 0 obj <> endobj 24198 0 obj <> endobj 24199 0 obj <> endobj 24200 0 obj <> endobj 24201 0 obj <> endobj 24202 0 obj <> endobj 24203 0 obj <> endobj 24204 0 obj <> endobj 24205 0 obj <> endobj 24206 0 obj <> endobj 24207 0 obj <> endobj 24208 0 obj <> endobj 24209 0 obj <> endobj 24210 0 obj <> endobj 24211 0 obj <> endobj 24212 0 obj <> endobj 24213 0 obj <> endobj 24214 0 obj <> endobj 24215 0 obj <> endobj 24216 0 obj <> endobj 24217 0 obj <> endobj 24218 0 obj <> endobj 24219 0 obj <> endobj 24220 0 obj <> endobj 24221 0 obj <> endobj 24222 0 obj <> endobj 24223 0 obj <> endobj 24224 0 obj <> endobj 24225 0 obj <> endobj 24226 0 obj <> endobj 24227 0 obj <> endobj 24228 0 obj <> endobj 24229 0 obj <> endobj 24230 0 obj <> endobj 24231 0 obj <> endobj 24232 0 obj <> endobj 24233 0 obj <> endobj 24234 0 obj <> endobj 24235 0 obj <> endobj 24236 0 obj <> endobj 24237 0 obj <> endobj 24238 0 obj <> endobj 24239 0 obj <> endobj 24240 0 obj <> endobj 24241 0 obj <> endobj 24242 0 obj <> endobj 24243 0 obj <> endobj 24244 0 obj <> endobj 24245 0 obj <> endobj 24246 0 obj <> endobj 24247 0 obj <> endobj 24248 0 obj <> endobj 24249 0 obj <> endobj 24250 0 obj <> endobj 24251 0 obj <> endobj 24252 0 obj <> endobj 24253 0 obj <> endobj 24254 0 obj <> endobj 24255 0 obj <> endobj 24256 0 obj <> endobj 24257 0 obj <> endobj 24258 0 obj <> endobj 24259 0 obj <> endobj 24260 0 obj <> endobj 24261 0 obj <> endobj 24262 0 obj <> endobj 24263 0 obj <> endobj 24264 0 obj <> endobj 24265 0 obj <> endobj 24266 0 obj <> endobj 24267 0 obj <> endobj 24268 0 obj <> endobj 24269 0 obj <> endobj 24270 0 obj <> endobj 24271 0 obj <> endobj 24272 0 obj <> endobj 24273 0 obj <> endobj 24274 0 obj <> endobj 24275 0 obj <> endobj 24276 0 obj <> endobj 24277 0 obj <> endobj 24278 0 obj <> endobj 24279 0 obj <> endobj 24280 0 obj <> endobj 24281 0 obj <> endobj 24282 0 obj <> endobj 24283 0 obj <> endobj 24284 0 obj <> endobj 24285 0 obj <> endobj 24286 0 obj <> endobj 24287 0 obj <> endobj 24288 0 obj <> endobj 24289 0 obj <> endobj 24290 0 obj <> endobj 24291 0 obj <> endobj 24292 0 obj <> endobj 24293 0 obj <> endobj 24294 0 obj <> endobj 24295 0 obj <> endobj 24296 0 obj <> endobj 24297 0 obj <> endobj 24298 0 obj <> endobj 24299 0 obj <> endobj 24300 0 obj <> endobj 24301 0 obj <> endobj 24302 0 obj <> endobj 24303 0 obj <> endobj 24304 0 obj <> endobj 24305 0 obj <> endobj 24306 0 obj <> endobj 24307 0 obj <> endobj 24308 0 obj <> endobj 24309 0 obj <> endobj 24310 0 obj <> endobj 24311 0 obj <> endobj 24312 0 obj <> endobj 24313 0 obj <> endobj 24314 0 obj <> endobj 24315 0 obj <> endobj 24316 0 obj <> endobj 24317 0 obj <> endobj 24318 0 obj <> endobj 24319 0 obj <> endobj 24320 0 obj <> endobj 24321 0 obj <> endobj 24322 0 obj <> endobj 24323 0 obj <> endobj 24324 0 obj <> endobj 24325 0 obj <> endobj 24326 0 obj <> endobj 24327 0 obj <> endobj 24328 0 obj <> endobj 24329 0 obj <> endobj 24330 0 obj <> endobj 24331 0 obj <> endobj 24332 0 obj <> endobj 24333 0 obj <> endobj 24334 0 obj <> endobj 24335 0 obj <> endobj 24336 0 obj <> endobj 24337 0 obj <> endobj 24338 0 obj <> endobj 24339 0 obj <> endobj 24340 0 obj <> endobj 24341 0 obj <> endobj 24342 0 obj <> endobj 24343 0 obj <> endobj 24344 0 obj <> endobj 24345 0 obj <> endobj 24346 0 obj <> endobj 24347 0 obj <> endobj 24348 0 obj <> endobj 24349 0 obj <> endobj 24350 0 obj <> endobj 24351 0 obj <> endobj 24352 0 obj <> endobj 24353 0 obj <> endobj 24354 0 obj <> endobj 24355 0 obj <> endobj 24356 0 obj <> endobj 24357 0 obj <> endobj 24358 0 obj <> endobj 24359 0 obj <> endobj 24360 0 obj <> endobj 24361 0 obj <> endobj 24362 0 obj <> endobj 24363 0 obj <> endobj 24364 0 obj <> endobj 24365 0 obj <> endobj 24366 0 obj <> endobj 24367 0 obj <> endobj 24368 0 obj <> endobj 24369 0 obj <> endobj 24370 0 obj <> endobj 24371 0 obj <> endobj 24372 0 obj <> endobj 24373 0 obj <> endobj 24374 0 obj <> endobj 24375 0 obj <> endobj 24376 0 obj <> endobj 24377 0 obj <> endobj 24378 0 obj <> endobj 24379 0 obj <> endobj 24380 0 obj <> endobj 24381 0 obj <> endobj 24382 0 obj <> endobj 24383 0 obj <> endobj 24384 0 obj <> endobj 24385 0 obj <> endobj 24386 0 obj <> endobj 24387 0 obj <> endobj 24388 0 obj <> endobj 24389 0 obj <> endobj 24390 0 obj <> endobj 24391 0 obj <> endobj 24392 0 obj <> endobj 24393 0 obj <> endobj 24394 0 obj <> endobj 24395 0 obj <> endobj 24396 0 obj <> endobj 24397 0 obj <> endobj 24398 0 obj <> endobj 24399 0 obj <> endobj 24400 0 obj <> endobj 24401 0 obj <> endobj 24402 0 obj <> endobj 24403 0 obj <> endobj 24404 0 obj <> endobj 24405 0 obj <> endobj 24406 0 obj <> endobj 24407 0 obj <> endobj 24408 0 obj <> endobj 24409 0 obj <> endobj 24410 0 obj <> endobj 24411 0 obj <> endobj 24412 0 obj <> endobj 24413 0 obj <> endobj 24414 0 obj <> endobj 24415 0 obj <> endobj 24416 0 obj <> endobj 24417 0 obj <> endobj 24418 0 obj <> endobj 24419 0 obj <> endobj 24420 0 obj <> endobj 24421 0 obj <> endobj 24422 0 obj <> endobj 24423 0 obj <> endobj 24424 0 obj <> endobj 24425 0 obj <> endobj 24426 0 obj <> endobj 24427 0 obj <> endobj 24428 0 obj <> endobj 24429 0 obj <> endobj 24430 0 obj <> endobj 24431 0 obj <> endobj 24432 0 obj <> endobj 24433 0 obj <> endobj 24434 0 obj <> endobj 24435 0 obj <> endobj 24436 0 obj <> endobj 24437 0 obj <> endobj 24438 0 obj <> endobj 24439 0 obj <> endobj 24440 0 obj <> endobj 24441 0 obj <> endobj 24442 0 obj <> endobj 24443 0 obj <> endobj 24444 0 obj <> endobj 24445 0 obj <> endobj 24446 0 obj <> endobj 24447 0 obj <> endobj 24448 0 obj <> endobj 24449 0 obj <> endobj 24450 0 obj <> endobj 24451 0 obj <> endobj 24452 0 obj <> endobj 24453 0 obj <> endobj 24454 0 obj <> endobj 24455 0 obj <> endobj 24456 0 obj <> endobj 24457 0 obj <> endobj 24458 0 obj <> endobj 24459 0 obj <> endobj 24460 0 obj <> endobj 24461 0 obj <> endobj 24462 0 obj <> endobj 24463 0 obj <> endobj 24464 0 obj <> endobj 24465 0 obj <> endobj 24466 0 obj <> endobj 24467 0 obj <> endobj 24468 0 obj <> endobj 24469 0 obj <> endobj 24470 0 obj <> endobj 24471 0 obj <> endobj 24472 0 obj <> endobj 24473 0 obj <> endobj 24474 0 obj <> endobj 24475 0 obj <> endobj 24476 0 obj <> endobj 24477 0 obj <> endobj 24478 0 obj <> endobj 24479 0 obj <> endobj 24480 0 obj <> endobj 24481 0 obj <> endobj 24482 0 obj <> endobj 24483 0 obj <> endobj 24484 0 obj <> endobj 24485 0 obj <> endobj 24486 0 obj <> endobj 24487 0 obj <> endobj 24488 0 obj <> endobj 24489 0 obj <> endobj 24490 0 obj <> endobj 24491 0 obj <> endobj 24492 0 obj <> endobj 24493 0 obj <> endobj 24494 0 obj <> endobj 24495 0 obj <> endobj 24496 0 obj <> endobj 24497 0 obj <> endobj 24498 0 obj <> endobj 24499 0 obj <> endobj 24500 0 obj <> endobj 24501 0 obj <> endobj 24502 0 obj <> endobj 24503 0 obj <> endobj 24504 0 obj <> endobj 24505 0 obj <> endobj 24506 0 obj <> endobj 24507 0 obj <> endobj 24508 0 obj <> endobj 24509 0 obj <> endobj 24510 0 obj <> endobj 24511 0 obj <> endobj 24512 0 obj <> endobj 24513 0 obj <> endobj 24514 0 obj <> endobj 24515 0 obj <> endobj 24516 0 obj <> endobj 24517 0 obj <> endobj 24518 0 obj <> endobj 24519 0 obj <> endobj 24520 0 obj <> endobj 24521 0 obj <> endobj 24522 0 obj <> endobj 24523 0 obj <> endobj 24524 0 obj <> endobj 24525 0 obj <> endobj 24526 0 obj <> endobj 24527 0 obj <> endobj 24528 0 obj <> endobj 24529 0 obj <> endobj 24530 0 obj <> endobj 24531 0 obj <> endobj 24532 0 obj <> endobj 24533 0 obj <> endobj 24534 0 obj <> endobj 24535 0 obj <> endobj 24536 0 obj <> endobj 24537 0 obj <> endobj 24538 0 obj <> endobj 24539 0 obj <> endobj 24540 0 obj <> endobj 24541 0 obj <> endobj 24542 0 obj <> endobj 24543 0 obj <> endobj 24544 0 obj <> endobj 24545 0 obj <> endobj 24546 0 obj <> endobj 24547 0 obj <> endobj 24548 0 obj <> endobj 24549 0 obj <> endobj 24550 0 obj <> endobj 24551 0 obj <> endobj 24552 0 obj <> endobj 24553 0 obj <> endobj 24554 0 obj <> endobj 24555 0 obj <> endobj 24556 0 obj <> endobj 24557 0 obj <> endobj 24558 0 obj <> endobj 24559 0 obj <> endobj 24560 0 obj <> endobj 24561 0 obj <> endobj 24562 0 obj <> endobj 24563 0 obj <> endobj 24564 0 obj <> endobj 24565 0 obj <> endobj 24566 0 obj <> endobj 24567 0 obj <> endobj 24568 0 obj <> endobj 24569 0 obj <> endobj 24570 0 obj <> endobj 24571 0 obj <> endobj 24572 0 obj <> endobj 24573 0 obj <> endobj 24574 0 obj <> endobj 24575 0 obj <> endobj 24576 0 obj <> endobj 24577 0 obj <> endobj 24578 0 obj <> endobj 24579 0 obj <> endobj 24580 0 obj <> endobj 24581 0 obj <> endobj 24582 0 obj <> endobj 24583 0 obj <> endobj 24584 0 obj <> endobj 24585 0 obj <> endobj 24586 0 obj <> endobj 24587 0 obj <> endobj 24588 0 obj <> endobj 24589 0 obj <> endobj 24590 0 obj <> endobj 24591 0 obj <> endobj 24592 0 obj <> endobj 24593 0 obj <> endobj 24594 0 obj <> endobj 24595 0 obj <> endobj 24596 0 obj <> endobj 24597 0 obj <> endobj 24598 0 obj <> endobj 24599 0 obj <> endobj 24600 0 obj <> endobj 24601 0 obj <> endobj 24602 0 obj <> endobj 24603 0 obj <> endobj 24604 0 obj <> endobj 24605 0 obj <> endobj 24606 0 obj <> endobj 24607 0 obj <> endobj 24608 0 obj <> endobj 24609 0 obj <> endobj 24610 0 obj <> endobj 24611 0 obj <> endobj 24612 0 obj <> endobj 24613 0 obj <> endobj 24614 0 obj <> endobj 24615 0 obj <> endobj 24616 0 obj <> endobj 24617 0 obj <> endobj 24618 0 obj <> endobj 24619 0 obj <> endobj 24620 0 obj <> endobj 24621 0 obj <> endobj 24622 0 obj <> endobj 24623 0 obj <> endobj 24624 0 obj <> endobj 24625 0 obj <> endobj 24626 0 obj <> endobj 24627 0 obj <> endobj 24628 0 obj <> endobj 24629 0 obj <> endobj 24630 0 obj <> endobj 24631 0 obj <> endobj 24632 0 obj <> endobj 24633 0 obj <> endobj 24634 0 obj <> endobj 24635 0 obj <> endobj 24636 0 obj <> endobj 24637 0 obj <> endobj 24638 0 obj <> endobj 24639 0 obj <> endobj 24640 0 obj <> endobj 24641 0 obj <> endobj 24642 0 obj <> endobj 24643 0 obj <> endobj 24644 0 obj <> endobj 24645 0 obj <> endobj 24646 0 obj <> endobj 24647 0 obj <> endobj 24648 0 obj <> endobj 24649 0 obj <> endobj 24650 0 obj <> endobj 24651 0 obj <> endobj 24652 0 obj <> endobj 24653 0 obj <> endobj 24654 0 obj <> endobj 24655 0 obj <> endobj 24656 0 obj <> endobj 24657 0 obj <> endobj 24658 0 obj <> endobj 24659 0 obj <> endobj 24660 0 obj <> endobj 24661 0 obj <> endobj 24662 0 obj <> endobj 24663 0 obj <> endobj 24664 0 obj <> endobj 24665 0 obj <> endobj 24666 0 obj <> endobj 24667 0 obj <> endobj 24668 0 obj <> endobj 24669 0 obj <> endobj 24670 0 obj <> endobj 24671 0 obj <> endobj 24672 0 obj <> endobj 24673 0 obj <> endobj 24674 0 obj <> endobj 24675 0 obj <> endobj 24676 0 obj <> endobj 24677 0 obj <> endobj 24678 0 obj <> endobj 24679 0 obj <> endobj 24680 0 obj <> endobj 24681 0 obj <> endobj 24682 0 obj <> endobj 24683 0 obj <> endobj 24684 0 obj <> endobj 24685 0 obj <> endobj 24686 0 obj <> endobj 24687 0 obj <> endobj 24688 0 obj <> endobj 24689 0 obj <> endobj 24690 0 obj <> endobj 24691 0 obj <> endobj 24692 0 obj <> endobj 24693 0 obj <> endobj 24694 0 obj <> endobj 24695 0 obj <> endobj 24696 0 obj <> endobj 24697 0 obj <> endobj 24698 0 obj <> endobj 24699 0 obj <> endobj 24700 0 obj <> endobj 24701 0 obj <> endobj 24702 0 obj <> endobj 24703 0 obj <> endobj 24704 0 obj <> endobj 24705 0 obj <> endobj 24706 0 obj <> endobj 24707 0 obj <> endobj 24708 0 obj <> endobj 24709 0 obj <> endobj 24710 0 obj <> endobj 24711 0 obj <> endobj 24712 0 obj <> endobj 24713 0 obj <> endobj 24714 0 obj <> endobj 24715 0 obj <> endobj 24716 0 obj <> endobj 24717 0 obj <> endobj 24718 0 obj <> endobj 24719 0 obj <> endobj 24720 0 obj <> endobj 24721 0 obj <> endobj 24722 0 obj <> endobj 24723 0 obj <> endobj 24724 0 obj <> endobj 24725 0 obj <> endobj 24726 0 obj <> endobj 24727 0 obj <> endobj 24728 0 obj <> endobj 24729 0 obj <> endobj 24730 0 obj <> endobj 24731 0 obj <> endobj 24732 0 obj <> endobj 24733 0 obj <> endobj 24734 0 obj <> endobj 24735 0 obj <> endobj 24736 0 obj <> endobj 24737 0 obj <> endobj 24738 0 obj <> endobj 24739 0 obj <> endobj 24740 0 obj <> endobj 24741 0 obj <> endobj 24742 0 obj <> endobj 24743 0 obj <> endobj 24744 0 obj <> endobj 24745 0 obj <> endobj 24746 0 obj <> endobj 24747 0 obj <> endobj 24748 0 obj <> endobj 24749 0 obj <> endobj 24750 0 obj <> endobj 24751 0 obj <> endobj 24752 0 obj <> endobj 24753 0 obj <> endobj 24754 0 obj <> endobj 24755 0 obj <> endobj 24756 0 obj <> endobj 24757 0 obj <> endobj 24758 0 obj <> endobj 24759 0 obj <> endobj 24760 0 obj <> endobj 24761 0 obj <> endobj 24762 0 obj <> endobj 24763 0 obj <> endobj 24764 0 obj <> endobj 24765 0 obj <> endobj 24766 0 obj <> endobj 24767 0 obj <> endobj 24768 0 obj <> endobj 24769 0 obj <> endobj 24770 0 obj <> endobj 24771 0 obj <> endobj 24772 0 obj <> endobj 24773 0 obj <> endobj 24774 0 obj <> endobj 24775 0 obj <> endobj 24776 0 obj <> endobj 24777 0 obj <> endobj 24778 0 obj <> endobj 24779 0 obj <> endobj 24780 0 obj <> endobj 24781 0 obj <> endobj 24782 0 obj <> endobj 24783 0 obj <> endobj 24784 0 obj <> endobj 24785 0 obj <> endobj 24786 0 obj <> endobj 24787 0 obj <> endobj 24788 0 obj <> endobj 24789 0 obj <> endobj 24790 0 obj <> endobj 24791 0 obj <> endobj 24792 0 obj <> endobj 24793 0 obj <> endobj 24794 0 obj <> endobj 24795 0 obj <> endobj 24796 0 obj <> endobj 24797 0 obj <> endobj 24798 0 obj <> endobj 24799 0 obj <> endobj 24800 0 obj <> endobj 24801 0 obj <> endobj 24802 0 obj <> endobj 24803 0 obj <> endobj 24804 0 obj <> endobj 24805 0 obj <> endobj 24806 0 obj <> endobj 24807 0 obj <> endobj 24808 0 obj <> endobj 24809 0 obj <> endobj 24810 0 obj <> endobj 24811 0 obj <> endobj 24812 0 obj <> endobj 24813 0 obj <> endobj 24814 0 obj <> endobj 24815 0 obj <> endobj 24816 0 obj <> endobj 24817 0 obj <> endobj 24818 0 obj <> endobj 24819 0 obj <> endobj 24820 0 obj <> endobj 24821 0 obj <> endobj 24822 0 obj <> endobj 24823 0 obj <> endobj 24824 0 obj <> endobj 24825 0 obj <> endobj 24826 0 obj <> endobj 24827 0 obj <> endobj 24828 0 obj <> endobj 24829 0 obj <> endobj 24830 0 obj <> endobj 24831 0 obj <> endobj 24832 0 obj <> endobj 24833 0 obj <> endobj 24834 0 obj <> endobj 24835 0 obj <> endobj 24836 0 obj <> endobj 24837 0 obj <> endobj 24838 0 obj <> endobj 24839 0 obj <> endobj 24840 0 obj <> endobj 24841 0 obj <> endobj 24842 0 obj <> endobj 24843 0 obj <> endobj 24844 0 obj <> endobj 24845 0 obj <> endobj 24846 0 obj <> endobj 24847 0 obj <> endobj 24848 0 obj <> endobj 24849 0 obj <> endobj 24850 0 obj <> endobj 24851 0 obj <> endobj 24852 0 obj <> endobj 24853 0 obj <> endobj 24854 0 obj <> endobj 24855 0 obj <> endobj 24856 0 obj <> endobj 24857 0 obj <> endobj 24858 0 obj <> endobj 24859 0 obj <> endobj 24860 0 obj <> endobj 24861 0 obj <> endobj 24862 0 obj <> endobj 24863 0 obj <> endobj 24864 0 obj <> endobj 24865 0 obj <> endobj 24866 0 obj <> endobj 24867 0 obj <> endobj 24868 0 obj <> endobj 24869 0 obj <> endobj 24870 0 obj <> endobj 24871 0 obj <> endobj 24872 0 obj <> endobj 24873 0 obj <> endobj 24874 0 obj <> endobj 24875 0 obj <> endobj 24876 0 obj <> endobj 24877 0 obj <> endobj 24878 0 obj <> endobj 24879 0 obj <> endobj 24880 0 obj <> endobj 24881 0 obj <> endobj 24882 0 obj <> endobj 24883 0 obj <> endobj 24884 0 obj <> endobj 24885 0 obj <> endobj 24886 0 obj <> endobj 24887 0 obj <> endobj 24888 0 obj <> endobj 24889 0 obj <> endobj 24890 0 obj <> endobj 24891 0 obj <> endobj 24892 0 obj <> endobj 24893 0 obj <> endobj 24894 0 obj <> endobj 24895 0 obj <> endobj 24896 0 obj <> endobj 24897 0 obj <> endobj 24898 0 obj <> endobj 24899 0 obj <> endobj 24900 0 obj <> endobj 24901 0 obj <> endobj 24902 0 obj <> endobj 24903 0 obj <> endobj 24904 0 obj <> endobj 24905 0 obj <> endobj 24906 0 obj <> endobj 24907 0 obj <> endobj 24908 0 obj <> endobj 24909 0 obj <> endobj 24910 0 obj <> endobj 24911 0 obj <> endobj 24912 0 obj <> endobj 24913 0 obj <> endobj 24914 0 obj <> endobj 24915 0 obj <> endobj 24916 0 obj <> endobj 24917 0 obj <> endobj 24918 0 obj <> endobj 24919 0 obj <> endobj 24920 0 obj <> endobj 24921 0 obj <> endobj 24922 0 obj <> endobj 24923 0 obj <> endobj 24924 0 obj <> endobj 24925 0 obj <> endobj 24926 0 obj <> endobj 24927 0 obj <> endobj 24928 0 obj <> endobj 24929 0 obj <> endobj 24930 0 obj <> endobj 24931 0 obj <> endobj 24932 0 obj <> endobj 24933 0 obj <> endobj 24934 0 obj <> endobj 24935 0 obj <> endobj 24936 0 obj <> endobj 24937 0 obj <> endobj 24938 0 obj <> endobj 24939 0 obj <> endobj 24940 0 obj <> endobj 24941 0 obj <> endobj 24942 0 obj <> endobj 24943 0 obj <> endobj 24944 0 obj <> endobj 24945 0 obj <> endobj 24946 0 obj <> endobj 24947 0 obj <> endobj 24948 0 obj <> endobj 24949 0 obj <> endobj 24950 0 obj <> endobj 24951 0 obj <> endobj 24952 0 obj <> endobj 24953 0 obj <> endobj 24954 0 obj <> endobj 24955 0 obj <> endobj 24956 0 obj <> endobj 24957 0 obj <> endobj 24958 0 obj <> endobj 24959 0 obj <> endobj 24960 0 obj <> endobj 24961 0 obj <> endobj 24962 0 obj <> endobj 24963 0 obj <> endobj 24964 0 obj <> endobj 24965 0 obj <> endobj 24966 0 obj <> endobj 24967 0 obj <> endobj 24968 0 obj <> endobj 24969 0 obj <> endobj 24970 0 obj <> endobj 24971 0 obj <> endobj 24972 0 obj <> endobj 24973 0 obj <> endobj 24974 0 obj <> endobj 24975 0 obj <> endobj 24976 0 obj <> endobj 24977 0 obj <> endobj 24978 0 obj <> endobj 24979 0 obj <> endobj 24980 0 obj <> endobj 24981 0 obj <> endobj 24982 0 obj <> endobj 24983 0 obj <> endobj 24984 0 obj <> endobj 24985 0 obj <> endobj 24986 0 obj <> endobj 24987 0 obj <> endobj 24988 0 obj <> endobj 24989 0 obj <> endobj 24990 0 obj <> endobj 24991 0 obj <> endobj 24992 0 obj <> endobj 24993 0 obj <> endobj 24994 0 obj <> endobj 24995 0 obj <> endobj 24996 0 obj <> endobj 24997 0 obj <> endobj 24998 0 obj <> endobj 24999 0 obj <> endobj 25000 0 obj <> endobj 25001 0 obj <> endobj 25002 0 obj <> endobj 25003 0 obj <> endobj 25004 0 obj <> endobj 25005 0 obj <> endobj 25006 0 obj <> endobj 25007 0 obj <> endobj 25008 0 obj <> endobj 25009 0 obj <> endobj 25010 0 obj <> endobj 25011 0 obj <> endobj 25012 0 obj <> endobj 25013 0 obj <> endobj 25014 0 obj <> endobj 25015 0 obj <> endobj 25016 0 obj <> endobj 25017 0 obj <> endobj 25018 0 obj <> endobj 25019 0 obj <> endobj 25020 0 obj <> endobj 25021 0 obj <> endobj 25022 0 obj <> endobj 25023 0 obj <> endobj 25024 0 obj <> endobj 25025 0 obj <> endobj 25026 0 obj <> endobj 25027 0 obj <> endobj 25028 0 obj <> endobj 25029 0 obj <> endobj 25030 0 obj <> endobj 25031 0 obj <> endobj 25032 0 obj <> endobj 25033 0 obj <> endobj 25034 0 obj <> endobj 25035 0 obj <> endobj 25036 0 obj <> endobj 25037 0 obj <> endobj 25038 0 obj <> endobj 25039 0 obj <> endobj 25040 0 obj <> endobj 25041 0 obj <> endobj 25042 0 obj <> endobj 25043 0 obj <> endobj 25044 0 obj <> endobj 25045 0 obj <> endobj 25046 0 obj <> endobj 25047 0 obj <> endobj 25048 0 obj <> endobj 25049 0 obj <> endobj 25050 0 obj <> endobj 25051 0 obj <> endobj 25052 0 obj <> endobj 25053 0 obj <> endobj 25054 0 obj <> endobj 25055 0 obj <> endobj 25056 0 obj <> endobj 25057 0 obj <> endobj 25058 0 obj <> endobj 25059 0 obj <> endobj 25060 0 obj <> endobj 25061 0 obj <> endobj 25062 0 obj <> endobj 25063 0 obj <> endobj 25064 0 obj <> endobj 25065 0 obj <> endobj 25066 0 obj <> endobj 25067 0 obj <> endobj 25068 0 obj <> endobj 25069 0 obj <> endobj 25070 0 obj <> endobj 25071 0 obj <> endobj 25072 0 obj <> endobj 25073 0 obj <> endobj 25074 0 obj <> endobj 25075 0 obj <> endobj 25076 0 obj <> endobj 25077 0 obj <> endobj 25078 0 obj <> endobj 25079 0 obj <> endobj 25080 0 obj <> endobj 25081 0 obj <> endobj 25082 0 obj <> endobj 25083 0 obj <> endobj 25084 0 obj <> endobj 25085 0 obj <> endobj 25086 0 obj <> endobj 25087 0 obj <> endobj 25088 0 obj <> endobj 25089 0 obj <> endobj 25090 0 obj <> endobj 25091 0 obj <> endobj 25092 0 obj <> endobj 25093 0 obj <> endobj 25094 0 obj <> endobj 25095 0 obj <> endobj 25096 0 obj <> endobj 25097 0 obj <> endobj 25098 0 obj <> endobj 25099 0 obj <> endobj 25100 0 obj <> endobj 25101 0 obj <> endobj 25102 0 obj <> endobj 25103 0 obj <> endobj 25104 0 obj <> endobj 25105 0 obj <> endobj 25106 0 obj <> endobj 25107 0 obj <> endobj 25108 0 obj <> endobj 25109 0 obj <> endobj 25110 0 obj <> endobj 25111 0 obj <> endobj 25112 0 obj <> endobj 25113 0 obj <> endobj 25114 0 obj <> endobj 25115 0 obj <> endobj 25116 0 obj <> endobj 25117 0 obj <> endobj 25118 0 obj <> endobj 25119 0 obj <> endobj 25120 0 obj <> endobj 25121 0 obj <> endobj 25122 0 obj <> endobj 25123 0 obj <> endobj 25124 0 obj <> endobj 25125 0 obj <> endobj 25126 0 obj <> endobj 25127 0 obj <> endobj 25128 0 obj <> endobj 25129 0 obj <> endobj 25130 0 obj <> endobj 25131 0 obj <> endobj 25132 0 obj <> endobj 25133 0 obj <> endobj 25134 0 obj <> endobj 25135 0 obj <> endobj 25136 0 obj <> endobj 25137 0 obj <> endobj 25138 0 obj <> endobj 25139 0 obj <> endobj 25140 0 obj <> endobj 25141 0 obj <> endobj 25142 0 obj <> endobj 25143 0 obj <> endobj 25144 0 obj <> endobj 25145 0 obj <> endobj 25146 0 obj <> endobj 25147 0 obj <> endobj 25148 0 obj <> endobj 25149 0 obj <> endobj 25150 0 obj <> endobj 25151 0 obj <> endobj 25152 0 obj <> endobj 25153 0 obj <> endobj 25154 0 obj <> endobj 25155 0 obj <> endobj 25156 0 obj <> endobj 25157 0 obj <> endobj 25158 0 obj <> endobj 25159 0 obj <> endobj 25160 0 obj <> endobj 25161 0 obj <> endobj 25162 0 obj <> endobj 25163 0 obj <> endobj 25164 0 obj <> endobj 25165 0 obj <> endobj 25166 0 obj <> endobj 25167 0 obj <> endobj 25168 0 obj <> endobj 25169 0 obj <> endobj 25170 0 obj <> endobj 25171 0 obj <> endobj 25172 0 obj <> endobj 25173 0 obj <> endobj 25174 0 obj <> endobj 25175 0 obj <> endobj 25176 0 obj <> endobj 25177 0 obj <> endobj 25178 0 obj <> endobj 25179 0 obj <> endobj 25180 0 obj <> endobj 25181 0 obj <> endobj 25182 0 obj <> endobj 25183 0 obj <> endobj 25184 0 obj <> endobj 25185 0 obj <> endobj 25186 0 obj <> endobj 25187 0 obj <> endobj 25188 0 obj <> endobj 25189 0 obj <> endobj 25190 0 obj <> endobj 25191 0 obj <> endobj 25192 0 obj <> endobj 25193 0 obj <> endobj 25194 0 obj <> endobj 25195 0 obj <> endobj 25196 0 obj <> endobj 25197 0 obj <> endobj 25198 0 obj <> endobj 25199 0 obj <> endobj 25200 0 obj <> endobj 25201 0 obj <> endobj 25202 0 obj <> endobj 25203 0 obj <> endobj 25204 0 obj <> endobj 25205 0 obj <> endobj 25206 0 obj <> endobj 25207 0 obj <> endobj 25208 0 obj <> endobj 25209 0 obj <> endobj 25210 0 obj <> endobj 25211 0 obj <> endobj 25212 0 obj <> endobj 25213 0 obj <> endobj 25214 0 obj <> endobj 25215 0 obj <> endobj 25216 0 obj <> endobj 25217 0 obj <> endobj 25218 0 obj <> endobj 25219 0 obj <> endobj 25220 0 obj <> endobj 25221 0 obj <> endobj 25222 0 obj <> endobj 25223 0 obj <> endobj 25224 0 obj <> endobj 25225 0 obj <> endobj 25226 0 obj <> endobj 25227 0 obj <> endobj 25228 0 obj <> endobj 25229 0 obj <> endobj 25230 0 obj <> endobj 25231 0 obj <> endobj 25232 0 obj <> endobj 25233 0 obj <> endobj 25234 0 obj <> endobj 25235 0 obj <> endobj 25236 0 obj <> endobj 25237 0 obj <> endobj 25238 0 obj <> endobj 25239 0 obj <> endobj 25240 0 obj <> endobj 25241 0 obj <> endobj 25242 0 obj <> endobj 25243 0 obj <> endobj 25244 0 obj <> endobj 25245 0 obj <> endobj 25246 0 obj <> endobj 25247 0 obj <> endobj 25248 0 obj <> endobj 25249 0 obj <> endobj 25250 0 obj <> endobj 25251 0 obj <> endobj 25252 0 obj <> endobj 25253 0 obj <> endobj 25254 0 obj <> endobj 25255 0 obj <> endobj 25256 0 obj <> endobj 25257 0 obj <> endobj 25258 0 obj <> endobj 25259 0 obj <> endobj 25260 0 obj <> endobj 25261 0 obj <> endobj 25262 0 obj <> endobj 25263 0 obj <> endobj 25264 0 obj <> endobj 25265 0 obj <> endobj 25266 0 obj <> endobj 25267 0 obj <> endobj 25268 0 obj <> endobj 25269 0 obj <> endobj 25270 0 obj <> endobj 25271 0 obj <> endobj 25272 0 obj <> endobj 25273 0 obj <> endobj 25274 0 obj <> endobj 25275 0 obj <> endobj 25276 0 obj <> endobj 25277 0 obj <> endobj 25278 0 obj <> endobj 25279 0 obj <> endobj 25280 0 obj <> endobj 25281 0 obj <> endobj 25282 0 obj <> endobj 25283 0 obj <> endobj 25284 0 obj <> endobj 25285 0 obj <> endobj 25286 0 obj <> endobj 25287 0 obj <> endobj 25288 0 obj <> endobj 25289 0 obj <> endobj 25290 0 obj <> endobj 25291 0 obj <> endobj 25292 0 obj <> endobj 25293 0 obj <> endobj 25294 0 obj <> endobj 25295 0 obj <> endobj 25296 0 obj <> endobj 25297 0 obj <> endobj 25298 0 obj <> endobj 25299 0 obj <> endobj 25300 0 obj <> endobj 25301 0 obj <> endobj 25302 0 obj <> endobj 25303 0 obj <> endobj 25304 0 obj <> endobj 25305 0 obj <> endobj 25306 0 obj <> endobj 25307 0 obj <> endobj 25308 0 obj <> endobj 25309 0 obj <> endobj 25310 0 obj <> endobj 25311 0 obj <> endobj 25312 0 obj <> endobj 25313 0 obj <> endobj 25314 0 obj <> endobj 25315 0 obj <> endobj 25316 0 obj <> endobj 25317 0 obj <> endobj 25318 0 obj <> endobj 25319 0 obj <> endobj 25320 0 obj <> endobj 25321 0 obj <> endobj 25322 0 obj <> endobj 25323 0 obj <> endobj 25324 0 obj <> endobj 25325 0 obj <> endobj 25326 0 obj <> endobj 25327 0 obj <> endobj 25328 0 obj <> endobj 25329 0 obj <> endobj 25330 0 obj <> endobj 25331 0 obj <> endobj 25332 0 obj <> endobj 25333 0 obj <> endobj 25334 0 obj <> endobj 25335 0 obj <> endobj 25336 0 obj <> endobj 25337 0 obj <> endobj 25338 0 obj <> endobj 25339 0 obj <> endobj 25340 0 obj <> endobj 25341 0 obj <> endobj 25342 0 obj <> endobj 25343 0 obj <> endobj 25344 0 obj <> endobj 25345 0 obj <> endobj 25346 0 obj <> endobj 25347 0 obj <> endobj 25348 0 obj <> endobj 25349 0 obj <> endobj 25350 0 obj <> endobj 25351 0 obj <> endobj 25352 0 obj <> endobj 25353 0 obj <> endobj 25354 0 obj <> endobj 25355 0 obj <> endobj 25356 0 obj <> endobj 25357 0 obj <> endobj 25358 0 obj <> endobj 25359 0 obj <> endobj 25360 0 obj <> endobj 25361 0 obj <> endobj 25362 0 obj <> endobj 25363 0 obj <> endobj 25364 0 obj <> endobj 25365 0 obj <> endobj 25366 0 obj <> endobj 25367 0 obj <> endobj 25368 0 obj <> endobj 25369 0 obj <> endobj 25370 0 obj <> endobj 25371 0 obj <> endobj 25372 0 obj <> endobj 25373 0 obj <> endobj 25374 0 obj <> endobj 25375 0 obj <> endobj 25376 0 obj <> endobj 25377 0 obj <> endobj 25378 0 obj <> endobj 25379 0 obj <> endobj 25380 0 obj <> endobj 25381 0 obj <> endobj 25382 0 obj <> endobj 25383 0 obj <> endobj 25384 0 obj <> endobj 25385 0 obj <> endobj 25386 0 obj <> endobj 25387 0 obj <> endobj 25388 0 obj <> endobj 25389 0 obj <> endobj 25390 0 obj <> endobj 25391 0 obj <> endobj 25392 0 obj <> endobj 25393 0 obj <> endobj 25394 0 obj <> endobj 25395 0 obj <> endobj 25396 0 obj <> endobj 25397 0 obj <> endobj 25398 0 obj <> endobj 25399 0 obj <> endobj 25400 0 obj <> endobj 25401 0 obj <> endobj 25402 0 obj <> endobj 25403 0 obj <> endobj 25404 0 obj <> endobj 25405 0 obj <> endobj 25406 0 obj <> endobj 25407 0 obj <> endobj 25408 0 obj <> endobj 25409 0 obj <> endobj 25410 0 obj <> endobj 25411 0 obj <> endobj 25412 0 obj <> endobj 25413 0 obj <> endobj 25414 0 obj <> endobj 25415 0 obj <> endobj 25416 0 obj <> endobj 25417 0 obj <> endobj 25418 0 obj <> endobj 25419 0 obj <> endobj 25420 0 obj <> endobj 25421 0 obj <> endobj 25422 0 obj <> endobj 25423 0 obj <> endobj 25424 0 obj <> endobj 25425 0 obj <> endobj 25426 0 obj <> endobj 25427 0 obj <> endobj 25428 0 obj <> endobj 25429 0 obj <> endobj 25430 0 obj <> endobj 25431 0 obj <> endobj 25432 0 obj <> endobj 25433 0 obj <> endobj 25434 0 obj <> endobj 25435 0 obj <> endobj 25436 0 obj <> endobj 25437 0 obj <> endobj 25438 0 obj <> endobj 25439 0 obj <> endobj 25440 0 obj <> endobj 25441 0 obj <> endobj 25442 0 obj <> endobj 25443 0 obj <> endobj 25444 0 obj <> endobj 25445 0 obj <> endobj 25446 0 obj <> endobj 25447 0 obj <> endobj 25448 0 obj <> endobj 25449 0 obj <> endobj 25450 0 obj <> endobj 25451 0 obj <> endobj 25452 0 obj <> endobj 25453 0 obj <> endobj 25454 0 obj <> endobj 25455 0 obj <> endobj 25456 0 obj <> endobj 25457 0 obj <> endobj 25458 0 obj <> endobj 25459 0 obj <> endobj 25460 0 obj <> endobj 25461 0 obj <> endobj 25462 0 obj <> endobj 25463 0 obj <> endobj 25464 0 obj <> endobj 25465 0 obj <> endobj 25466 0 obj <> endobj 25467 0 obj <> endobj 25468 0 obj <> endobj 25469 0 obj <> endobj 25470 0 obj <> endobj 25471 0 obj <> endobj 25472 0 obj <> endobj 25473 0 obj <> endobj 25474 0 obj <> endobj 25475 0 obj <> endobj 25476 0 obj <> endobj 25477 0 obj <> endobj 25478 0 obj <> endobj 25479 0 obj <> endobj 25480 0 obj <> endobj 25481 0 obj <> endobj 25482 0 obj <> endobj 25483 0 obj <> endobj 25484 0 obj <> endobj 25485 0 obj <> endobj 25486 0 obj <> endobj 25487 0 obj <> endobj 25488 0 obj <> endobj 25489 0 obj <> endobj 25490 0 obj <> endobj 25491 0 obj <> endobj 25492 0 obj <> endobj 25493 0 obj <> endobj 25494 0 obj <> endobj 25495 0 obj <> endobj 25496 0 obj <> endobj 25497 0 obj <> endobj 25498 0 obj <> endobj 25499 0 obj <> endobj 25500 0 obj <> endobj 25501 0 obj <> endobj 25502 0 obj <> endobj 25503 0 obj <> endobj 25504 0 obj <> endobj 25505 0 obj <> endobj 25506 0 obj <> endobj 25507 0 obj <> endobj 25508 0 obj <> endobj 25509 0 obj <> endobj 25510 0 obj <> endobj 25511 0 obj <> endobj 25512 0 obj <> endobj 25513 0 obj <> endobj 25514 0 obj <> endobj 25515 0 obj <> endobj 25516 0 obj <> endobj 25517 0 obj <> endobj 25518 0 obj <> endobj 25519 0 obj <> endobj 25520 0 obj <> endobj 25521 0 obj <> endobj 25522 0 obj <> endobj 25523 0 obj <> endobj 25524 0 obj <> endobj 25525 0 obj <> endobj 25526 0 obj <> endobj 25527 0 obj <> endobj 25528 0 obj <> endobj 25529 0 obj <> endobj 25530 0 obj <> endobj 25531 0 obj <> endobj 25532 0 obj <> endobj 25533 0 obj <> endobj 25534 0 obj <> endobj 25535 0 obj <> endobj 25536 0 obj <> endobj 25537 0 obj <> endobj 25538 0 obj <> endobj 25539 0 obj <> endobj 25540 0 obj <> endobj 25541 0 obj <> endobj 25542 0 obj <> endobj 25543 0 obj <> endobj 25544 0 obj <> endobj 25545 0 obj <> endobj 25546 0 obj <> endobj 25547 0 obj <> endobj 25548 0 obj <> endobj 25549 0 obj <> endobj 25550 0 obj <> endobj 25551 0 obj <> endobj 25552 0 obj <> endobj 25553 0 obj <> endobj 25554 0 obj <> endobj 25555 0 obj <> endobj 25556 0 obj <> endobj 25557 0 obj <> endobj 25558 0 obj <> endobj 25559 0 obj <> endobj 25560 0 obj <> endobj 25561 0 obj <> endobj 25562 0 obj <> endobj 25563 0 obj <> endobj 25564 0 obj <> endobj 25565 0 obj <> endobj 25566 0 obj <> endobj 25567 0 obj <> endobj 25568 0 obj <> endobj 25569 0 obj <> endobj 25570 0 obj <> endobj 25571 0 obj <> endobj 25572 0 obj <> endobj 25573 0 obj <> endobj 25574 0 obj <> endobj 25575 0 obj <> endobj 25576 0 obj <> endobj 25577 0 obj <> endobj 25578 0 obj <> endobj 25579 0 obj <> endobj 25580 0 obj <> endobj 25581 0 obj <> endobj 25582 0 obj <> endobj 25583 0 obj <> endobj 25584 0 obj <> endobj 25585 0 obj <> endobj 25586 0 obj <> endobj 25587 0 obj <> endobj 25588 0 obj <> endobj 25589 0 obj <> endobj 25590 0 obj <> endobj 25591 0 obj <> endobj 25592 0 obj <> endobj 25593 0 obj <> endobj 25594 0 obj <> endobj 25595 0 obj <> endobj 25596 0 obj <> endobj 25597 0 obj <> endobj 25598 0 obj <> endobj 25599 0 obj <> endobj 25600 0 obj <> endobj 25601 0 obj <> endobj 25602 0 obj <> endobj 25603 0 obj <> endobj 25604 0 obj <> endobj 25605 0 obj <> endobj 25606 0 obj <> endobj 25607 0 obj <> endobj 25608 0 obj <> endobj 25609 0 obj <> endobj 25610 0 obj <> endobj 25611 0 obj <> endobj 25612 0 obj <> endobj 25613 0 obj <> endobj 25614 0 obj <> endobj 25615 0 obj <> endobj 25616 0 obj <> endobj 25617 0 obj <> endobj 25618 0 obj <> endobj 25619 0 obj <> endobj 25620 0 obj <> endobj 25621 0 obj <> endobj 25622 0 obj <> endobj 25623 0 obj <> endobj 25624 0 obj <> endobj 25625 0 obj <> endobj 25626 0 obj <> endobj 25627 0 obj <> endobj 25628 0 obj <> endobj 25629 0 obj <> endobj 25630 0 obj <> endobj 25631 0 obj <> endobj 25632 0 obj <> endobj 25633 0 obj <> endobj 25634 0 obj <> endobj 25635 0 obj <> endobj 25636 0 obj <> endobj 25637 0 obj <> endobj 25638 0 obj <> endobj 25639 0 obj <> endobj 25640 0 obj <> endobj 25641 0 obj <> endobj 25642 0 obj <> endobj 25643 0 obj <> endobj 25644 0 obj <> endobj 25645 0 obj <> endobj 25646 0 obj <> endobj 25647 0 obj <> endobj 25648 0 obj <> endobj 25649 0 obj <> endobj 25650 0 obj <> endobj 25651 0 obj <> endobj 25652 0 obj <> endobj 25653 0 obj <> endobj 25654 0 obj <> endobj 25655 0 obj <> endobj 25656 0 obj <> endobj 25657 0 obj <> endobj 25658 0 obj <> endobj 25659 0 obj <> endobj 25660 0 obj <> endobj 25661 0 obj <> endobj 25662 0 obj <> endobj 25663 0 obj <> endobj 25664 0 obj <> endobj 25665 0 obj <> endobj 25666 0 obj <> endobj 25667 0 obj <> endobj 25668 0 obj <> endobj 25669 0 obj <> endobj 25670 0 obj <> endobj 25671 0 obj <> endobj 25672 0 obj <> endobj 25673 0 obj <> endobj 25674 0 obj <> endobj 25675 0 obj <> endobj 25676 0 obj <> endobj 25677 0 obj <> endobj 25678 0 obj <> endobj 25679 0 obj <> endobj 25680 0 obj <> endobj 25681 0 obj <> endobj 25682 0 obj <> endobj 25683 0 obj <> endobj 25684 0 obj <> endobj 25685 0 obj <> endobj 25686 0 obj <> endobj 25687 0 obj <> endobj 25688 0 obj <> endobj 25689 0 obj <> endobj 25690 0 obj <> endobj 25691 0 obj <> endobj 25692 0 obj <> endobj 25693 0 obj <> endobj 25694 0 obj <> endobj 25695 0 obj <> endobj 25696 0 obj <> endobj 25697 0 obj <> endobj 25698 0 obj <> endobj 25699 0 obj <> endobj 25700 0 obj <> endobj 25701 0 obj <> endobj 25702 0 obj <> endobj 25703 0 obj <> endobj 25704 0 obj <> endobj 25705 0 obj <> endobj 25706 0 obj <> endobj 25707 0 obj <> endobj 25708 0 obj <> endobj 25709 0 obj <> endobj 25710 0 obj <> endobj 25711 0 obj <> endobj 25712 0 obj <> endobj 25713 0 obj <> endobj 25714 0 obj <> endobj 25715 0 obj <> endobj 25716 0 obj <> endobj 25717 0 obj <> endobj 25718 0 obj <> endobj 25719 0 obj <> endobj 25720 0 obj <> endobj 25721 0 obj <> endobj 25722 0 obj <> endobj 25723 0 obj <> endobj 25724 0 obj <> endobj 25725 0 obj <> endobj 25726 0 obj <> endobj 25727 0 obj <> endobj 25728 0 obj <> endobj 25729 0 obj <> endobj 25730 0 obj <> endobj 25731 0 obj <> endobj 25732 0 obj <> endobj 25733 0 obj <> endobj 25734 0 obj <> endobj 25735 0 obj <> endobj 25736 0 obj <> endobj 25737 0 obj <> endobj 25738 0 obj <> endobj 25739 0 obj <> endobj 25740 0 obj <> endobj 25741 0 obj <> endobj 25742 0 obj <> endobj 25743 0 obj <> endobj 25744 0 obj <> endobj 25745 0 obj <> endobj 25746 0 obj <> endobj 25747 0 obj <> endobj 25748 0 obj <> endobj 25749 0 obj <> endobj 25750 0 obj <> endobj 25751 0 obj <> endobj 25752 0 obj <> endobj 25753 0 obj <> endobj 25754 0 obj <> endobj 25755 0 obj <> endobj 25756 0 obj <> endobj 25757 0 obj <> endobj 25758 0 obj <> endobj 25759 0 obj <> endobj 25760 0 obj <> endobj 25761 0 obj <> endobj 25762 0 obj <> endobj 25763 0 obj <> endobj 25764 0 obj <> endobj 25765 0 obj <> endobj 25766 0 obj <> endobj 25767 0 obj <> endobj 25768 0 obj <> endobj 25769 0 obj <> endobj 25770 0 obj <> endobj 25771 0 obj <> endobj 25772 0 obj <> endobj 25773 0 obj <> endobj 25774 0 obj <> endobj 25775 0 obj <> endobj 25776 0 obj <> endobj 25777 0 obj <> endobj 25778 0 obj <> endobj 25779 0 obj <> endobj 25780 0 obj <> endobj 25781 0 obj <> endobj 25782 0 obj <> endobj 25783 0 obj <> endobj 25784 0 obj <> endobj 25785 0 obj <> endobj 25786 0 obj <> endobj 25787 0 obj <> endobj 25788 0 obj <> endobj 25789 0 obj <> endobj 25790 0 obj <> endobj 25791 0 obj <> endobj 25792 0 obj <> endobj 25793 0 obj <> endobj 25794 0 obj <> endobj 25795 0 obj <> endobj 25796 0 obj <> endobj 25797 0 obj <> endobj 25798 0 obj <> endobj 25799 0 obj <> endobj 25800 0 obj <> endobj 25801 0 obj <> endobj 25802 0 obj <> endobj 25803 0 obj <> endobj 25804 0 obj <> endobj 25805 0 obj <> endobj 25806 0 obj <> endobj 25807 0 obj <> endobj 25808 0 obj <> endobj 25809 0 obj <> endobj 25810 0 obj <> endobj 25811 0 obj <> endobj 25812 0 obj <> endobj 25813 0 obj <> endobj 25814 0 obj <> endobj 25815 0 obj <> endobj 25816 0 obj <> endobj 25817 0 obj <> endobj 25818 0 obj <> endobj 25819 0 obj <> endobj 25820 0 obj <> endobj 25821 0 obj <> endobj 25822 0 obj <> endobj 25823 0 obj <> endobj 25824 0 obj <> endobj 25825 0 obj <> endobj 25826 0 obj <> endobj 25827 0 obj <> endobj 25828 0 obj <> endobj 25829 0 obj <> endobj 25830 0 obj <> endobj 25831 0 obj <> endobj 25832 0 obj <> endobj 25833 0 obj <> endobj 25834 0 obj <> endobj 25835 0 obj <> endobj 25836 0 obj <> endobj 25837 0 obj <> endobj 25838 0 obj <> endobj 25839 0 obj <> endobj 25840 0 obj <> endobj 25841 0 obj <> endobj 25842 0 obj <> endobj 25843 0 obj <> endobj 25844 0 obj <> endobj 25845 0 obj <> endobj 25846 0 obj <> endobj 25847 0 obj <> endobj 25848 0 obj <> endobj 25849 0 obj <> endobj 25850 0 obj <> endobj 25851 0 obj <> endobj 25852 0 obj <> endobj 25853 0 obj <> endobj 25854 0 obj <> endobj 25855 0 obj <> endobj 25856 0 obj <> endobj 25857 0 obj <> endobj 25858 0 obj <> endobj 25859 0 obj <> endobj 25860 0 obj <> endobj 25861 0 obj <> endobj 25862 0 obj <> endobj 25863 0 obj <> endobj 25864 0 obj <> endobj 25865 0 obj <> endobj 25866 0 obj <> endobj 25867 0 obj <> endobj 25868 0 obj <> endobj 25869 0 obj <> endobj 25870 0 obj <> endobj 25871 0 obj <> endobj 25872 0 obj <> endobj 25873 0 obj <> endobj 25874 0 obj <> endobj 25875 0 obj <> endobj 25876 0 obj <> endobj 25877 0 obj <> endobj 25878 0 obj <> endobj 25879 0 obj <> endobj 25880 0 obj <> endobj 25881 0 obj <> endobj 25882 0 obj <> endobj 25883 0 obj <> endobj 25884 0 obj <> endobj 25885 0 obj <> endobj 25886 0 obj <> endobj 25887 0 obj <> endobj 25888 0 obj <> endobj 25889 0 obj <> endobj 25890 0 obj <> endobj 25891 0 obj <> endobj 25892 0 obj <> endobj 25893 0 obj <> endobj 25894 0 obj <> endobj 25895 0 obj <> endobj 25896 0 obj <> endobj 25897 0 obj <> endobj 25898 0 obj <> endobj 25899 0 obj <> endobj 25900 0 obj <> endobj 25901 0 obj <> endobj 25902 0 obj <> endobj 25903 0 obj <> endobj 25904 0 obj <> endobj 25905 0 obj <> endobj 25906 0 obj <> endobj 25907 0 obj <> endobj 25908 0 obj <> endobj 25909 0 obj <> endobj 25910 0 obj <> endobj 25911 0 obj <> endobj 25912 0 obj <> endobj 25913 0 obj <> endobj 25914 0 obj <> endobj 25915 0 obj <> endobj 25916 0 obj <> endobj 25917 0 obj <> endobj 25918 0 obj <> endobj 25919 0 obj <> endobj 25920 0 obj <> endobj 25921 0 obj <> endobj 25922 0 obj <> endobj 25923 0 obj <> endobj 25924 0 obj <> endobj 25925 0 obj <> endobj 25926 0 obj <> endobj 25927 0 obj <> endobj 25928 0 obj <> endobj 25929 0 obj <> endobj 25930 0 obj <> endobj 25931 0 obj <> endobj 25932 0 obj <> endobj 25933 0 obj <> endobj 25934 0 obj <> endobj 25935 0 obj <> endobj 25936 0 obj <> endobj 25937 0 obj <> endobj 25938 0 obj <> endobj 25939 0 obj <> endobj 25940 0 obj <> endobj 25941 0 obj <> endobj 25942 0 obj <> endobj 25943 0 obj <> endobj 25944 0 obj <> endobj 25945 0 obj <> endobj 25946 0 obj <> endobj 25947 0 obj <> endobj 25948 0 obj <> endobj 25949 0 obj <> endobj 25950 0 obj <> endobj 25951 0 obj <> endobj 25952 0 obj <> endobj 25953 0 obj <> endobj 25954 0 obj <> endobj 25955 0 obj <> endobj 25956 0 obj <> endobj 25957 0 obj <> endobj 25958 0 obj <> endobj 25959 0 obj <> endobj 25960 0 obj <> endobj 25961 0 obj <> endobj 25962 0 obj <> endobj 25963 0 obj <> endobj 25964 0 obj <> endobj 25965 0 obj <> endobj 25966 0 obj <> endobj 25967 0 obj <> endobj 25968 0 obj <> endobj 25969 0 obj <> endobj 25970 0 obj <> endobj 25971 0 obj <> endobj 25972 0 obj <> endobj 25973 0 obj <> endobj 25974 0 obj <> endobj 25975 0 obj <> endobj 25976 0 obj <> endobj 25977 0 obj <> endobj 25978 0 obj <> endobj 25979 0 obj <> endobj 25980 0 obj <> endobj 25981 0 obj <> endobj 25982 0 obj <> endobj 25983 0 obj <> endobj 25984 0 obj <> endobj 25985 0 obj <> endobj 25986 0 obj <> endobj 25987 0 obj <> endobj 25988 0 obj <> endobj 25989 0 obj <> endobj 25990 0 obj <> endobj 25991 0 obj <> endobj 25992 0 obj <> endobj 25993 0 obj <> endobj 25994 0 obj <> endobj 25995 0 obj <> endobj 25996 0 obj <> endobj 25997 0 obj <> endobj 25998 0 obj <> endobj 25999 0 obj <> endobj 26000 0 obj <> endobj 26001 0 obj <> endobj 26002 0 obj <> endobj 26003 0 obj <> endobj 26004 0 obj <> endobj 26005 0 obj <> endobj 26006 0 obj <> endobj 26007 0 obj <> endobj 26008 0 obj <> endobj 26009 0 obj <> endobj 26010 0 obj <> endobj 26011 0 obj <> endobj 26012 0 obj <> endobj 26013 0 obj <> endobj 26014 0 obj <> endobj 26015 0 obj <> endobj 26016 0 obj <> endobj 26017 0 obj <> endobj 26018 0 obj <> endobj 26019 0 obj <> endobj 26020 0 obj <> endobj 26021 0 obj <> endobj 26022 0 obj <> endobj 26023 0 obj <> endobj 26024 0 obj <> endobj 26025 0 obj <> endobj 26026 0 obj <> endobj 26027 0 obj <> endobj 26028 0 obj <> endobj 26029 0 obj <> endobj 26030 0 obj <> endobj 26031 0 obj <> endobj 26032 0 obj <> endobj 26033 0 obj <> endobj 26034 0 obj <> endobj 26035 0 obj <> endobj 26036 0 obj <> endobj 26037 0 obj <> endobj 26038 0 obj <> endobj 26039 0 obj <> endobj 26040 0 obj <> endobj 26041 0 obj <> endobj 26042 0 obj <> endobj 26043 0 obj <> endobj 26044 0 obj <> endobj 26045 0 obj <> endobj 26046 0 obj <> endobj 26047 0 obj <> endobj 26048 0 obj <> endobj 26049 0 obj <> endobj 26050 0 obj <> endobj 26051 0 obj <> endobj 26052 0 obj <> endobj 26053 0 obj <> endobj 26054 0 obj <> endobj 26055 0 obj <> endobj 26056 0 obj <> endobj 26057 0 obj <> endobj 26058 0 obj <> endobj 26059 0 obj <> endobj 26060 0 obj <> endobj 26061 0 obj <> endobj 26062 0 obj <> endobj 26063 0 obj <> endobj 26064 0 obj <> endobj 26065 0 obj <> endobj 26066 0 obj <> endobj 26067 0 obj <> endobj 26068 0 obj <> endobj 26069 0 obj <> endobj 26070 0 obj <> endobj 26071 0 obj <> endobj 26072 0 obj <> endobj 26073 0 obj <> endobj 26074 0 obj <> endobj 26075 0 obj <> endobj 26076 0 obj <> endobj 26077 0 obj <> endobj 26078 0 obj <> endobj 26079 0 obj <> endobj 26080 0 obj <> endobj 26081 0 obj <> endobj 26082 0 obj <> endobj 26083 0 obj <> endobj 26084 0 obj <> endobj 26085 0 obj <> endobj 26086 0 obj <> endobj 26087 0 obj <> endobj 26088 0 obj <> endobj 26089 0 obj <> endobj 26090 0 obj <> endobj 26091 0 obj <> endobj 26092 0 obj <> endobj 26093 0 obj <> endobj 26094 0 obj <> endobj 26095 0 obj <> endobj 26096 0 obj <> endobj 26097 0 obj <> endobj 26098 0 obj <> endobj 26099 0 obj <> endobj 26100 0 obj <> endobj 26101 0 obj <> endobj 26102 0 obj <> endobj 26103 0 obj <> endobj 26104 0 obj <> endobj 26105 0 obj <> endobj 26106 0 obj <> endobj 26107 0 obj <> endobj 26108 0 obj <> endobj 26109 0 obj <> endobj 26110 0 obj <> endobj 26111 0 obj <> endobj 26112 0 obj <> endobj 26113 0 obj <> endobj 26114 0 obj <> endobj 26115 0 obj <> endobj 26116 0 obj <> endobj 26117 0 obj <> endobj 26118 0 obj <> endobj 26119 0 obj <> endobj 26120 0 obj <> endobj 26121 0 obj <> endobj 26122 0 obj <> endobj 26123 0 obj <> endobj 26124 0 obj <> endobj 26125 0 obj <> endobj 26126 0 obj <> endobj 26127 0 obj <> endobj 26128 0 obj <> endobj 26129 0 obj <> endobj 26130 0 obj <> endobj 26131 0 obj <> endobj 26132 0 obj <> endobj 26133 0 obj <> endobj 26134 0 obj <> endobj 26135 0 obj <> endobj 26136 0 obj <> endobj 26137 0 obj <> endobj 26138 0 obj <> endobj 26139 0 obj <> endobj 26140 0 obj <> endobj 26141 0 obj <> endobj 26142 0 obj <> endobj 26143 0 obj <> endobj 26144 0 obj <> endobj 26145 0 obj <> endobj 26146 0 obj <> endobj 26147 0 obj <> endobj 26148 0 obj <> endobj 26149 0 obj <> endobj 26150 0 obj <> endobj 26151 0 obj <> endobj 26152 0 obj <> endobj 26153 0 obj <> endobj 26154 0 obj <> endobj 26155 0 obj <> endobj 26156 0 obj <> endobj 26157 0 obj <> endobj 26158 0 obj <> endobj 26159 0 obj <> endobj 26160 0 obj <> endobj 26161 0 obj <> endobj 26162 0 obj <> endobj 26163 0 obj <> endobj 26164 0 obj <> endobj 26165 0 obj <> endobj 26166 0 obj <> endobj 26167 0 obj <> endobj 26168 0 obj <> endobj 26169 0 obj <> endobj 26170 0 obj <> endobj 26171 0 obj <> endobj 26172 0 obj <> endobj 26173 0 obj <> endobj 26174 0 obj <> endobj 26175 0 obj <> endobj 26176 0 obj <> endobj 26177 0 obj <> endobj 26178 0 obj <> endobj 26179 0 obj <> endobj 26180 0 obj <> endobj 26181 0 obj <> endobj 26182 0 obj <> endobj 26183 0 obj <> endobj 26184 0 obj <> endobj 26185 0 obj <> endobj 26186 0 obj <> endobj 26187 0 obj <> endobj 26188 0 obj <> endobj 26189 0 obj <> endobj 26190 0 obj <> endobj 26191 0 obj <> endobj 26192 0 obj <> endobj 26193 0 obj <> endobj 26194 0 obj <> endobj 26195 0 obj <> endobj 26196 0 obj <> endobj 26197 0 obj <> endobj 26198 0 obj <> endobj 26199 0 obj <> endobj 26200 0 obj <> endobj 26201 0 obj <> endobj 26202 0 obj <> endobj 26203 0 obj <> endobj 26204 0 obj <> endobj 26205 0 obj <> endobj 26206 0 obj <> endobj 26207 0 obj <> endobj 26208 0 obj <> endobj 26209 0 obj <> endobj 26210 0 obj <> endobj 26211 0 obj <> endobj 26212 0 obj <> endobj 26213 0 obj <> endobj 26214 0 obj <> endobj 26215 0 obj <> endobj 26216 0 obj <> endobj 26217 0 obj <> endobj 26218 0 obj <> endobj 26219 0 obj <> endobj 26220 0 obj <> endobj 26221 0 obj <> endobj 26222 0 obj <> endobj 26223 0 obj <> endobj 26224 0 obj <> endobj 26225 0 obj <> endobj 26226 0 obj <> endobj 26227 0 obj <> endobj 26228 0 obj <> endobj 26229 0 obj <> endobj 26230 0 obj <> endobj 26231 0 obj <> endobj 26232 0 obj <> endobj 26233 0 obj <> endobj 26234 0 obj <> endobj 26235 0 obj <> endobj 26236 0 obj <> endobj 26237 0 obj <> endobj 26238 0 obj <> endobj 26239 0 obj <> endobj 26240 0 obj <> endobj 26241 0 obj <> endobj 26242 0 obj <> endobj 26243 0 obj <> endobj 26244 0 obj <> endobj 26245 0 obj <> endobj 26246 0 obj <> endobj 26247 0 obj <> endobj 26248 0 obj <> endobj 26249 0 obj <> endobj 26250 0 obj <> endobj 26251 0 obj <> endobj 26252 0 obj <> endobj 26253 0 obj <> endobj 26254 0 obj <> endobj 26255 0 obj <> endobj 26256 0 obj <> endobj 26257 0 obj <> endobj 26258 0 obj <> endobj 26259 0 obj <> endobj 26260 0 obj <> endobj 26261 0 obj <> endobj 26262 0 obj <> endobj 26263 0 obj <> endobj 26264 0 obj <> endobj 26265 0 obj <> endobj 26266 0 obj <> endobj 26267 0 obj <> endobj 26268 0 obj <> endobj 26269 0 obj <> endobj 26270 0 obj <> endobj 26271 0 obj <> endobj 26272 0 obj <> endobj 26273 0 obj <> endobj 26274 0 obj <> endobj 26275 0 obj <> endobj 26276 0 obj <> endobj 26277 0 obj <> endobj 26278 0 obj <> endobj 26279 0 obj <> endobj 26280 0 obj <> endobj 26281 0 obj <> endobj 26282 0 obj <> endobj 26283 0 obj <> endobj 26284 0 obj <> endobj 26285 0 obj <> endobj 26286 0 obj <> endobj 26287 0 obj <> endobj 26288 0 obj <> endobj 26289 0 obj <> endobj 26290 0 obj <> endobj 26291 0 obj <> endobj 26292 0 obj <> endobj 26293 0 obj <> endobj 26294 0 obj <> endobj 26295 0 obj <> endobj 26296 0 obj <> endobj 26297 0 obj <> endobj 26298 0 obj <> endobj 26299 0 obj <> endobj 26300 0 obj <> endobj 26301 0 obj <> endobj 26302 0 obj <> endobj 26303 0 obj <> endobj 26304 0 obj <> endobj 26305 0 obj <> endobj 26306 0 obj <> endobj 26307 0 obj <> endobj 26308 0 obj <> endobj 26309 0 obj <> endobj 26310 0 obj <> endobj 26311 0 obj <> endobj 26312 0 obj <> endobj 26313 0 obj <> endobj 26314 0 obj <> endobj 26315 0 obj <> endobj 26316 0 obj <> endobj 26317 0 obj <> endobj 26318 0 obj <> endobj 26319 0 obj <> endobj 26320 0 obj <> endobj 26321 0 obj <> endobj 26322 0 obj <> endobj 26323 0 obj <> endobj 26324 0 obj <> endobj 26325 0 obj <> endobj 26326 0 obj <> endobj 26327 0 obj <> endobj 26328 0 obj <> endobj 26329 0 obj <> endobj 26330 0 obj <> endobj 26331 0 obj <> endobj 26332 0 obj <> endobj 26333 0 obj <> endobj 26334 0 obj <> endobj 26335 0 obj <> endobj 26336 0 obj <> endobj 26337 0 obj <> endobj 26338 0 obj <> endobj 26339 0 obj <> endobj 26340 0 obj <> endobj 26341 0 obj <> endobj 26342 0 obj <> endobj 26343 0 obj <> endobj 26344 0 obj <> endobj 26345 0 obj <> endobj 26346 0 obj <> endobj 26347 0 obj <> endobj 26348 0 obj <> endobj 26349 0 obj <> endobj 26350 0 obj <> endobj 26351 0 obj <> endobj 26352 0 obj <> endobj 26353 0 obj <> endobj 26354 0 obj <> endobj 26355 0 obj <> endobj 26356 0 obj <> endobj 26357 0 obj <> endobj 26358 0 obj <> endobj 26359 0 obj <> endobj 26360 0 obj <> endobj 26361 0 obj <> endobj 26362 0 obj <> endobj 26363 0 obj <> endobj 26364 0 obj <> endobj 26365 0 obj <> endobj 26366 0 obj <> endobj 26367 0 obj <> endobj 26368 0 obj <> endobj 26369 0 obj <> endobj 26370 0 obj <> endobj 26371 0 obj <> endobj 26372 0 obj <> endobj 26373 0 obj <> endobj 26374 0 obj <> endobj 26375 0 obj <> endobj 26376 0 obj <> endobj 26377 0 obj <> endobj 26378 0 obj <> endobj 26379 0 obj <> endobj 26380 0 obj <> endobj 26381 0 obj <> endobj 26382 0 obj <> endobj 26383 0 obj <> endobj 26384 0 obj <> endobj 26385 0 obj <> endobj 26386 0 obj <> endobj 26387 0 obj <> endobj 26388 0 obj <> endobj 26389 0 obj <> endobj 26390 0 obj <> endobj 26391 0 obj <> endobj 26392 0 obj <> endobj 26393 0 obj <> endobj 26394 0 obj <> endobj 26395 0 obj <> endobj 26396 0 obj <> endobj 26397 0 obj <> endobj 26398 0 obj <> endobj 26399 0 obj <> endobj 26400 0 obj <> endobj 26401 0 obj <> endobj 26402 0 obj <> endobj 26403 0 obj <> endobj 26404 0 obj <> endobj 26405 0 obj <> endobj 26406 0 obj <> endobj 26407 0 obj <> endobj 26408 0 obj <> endobj 26409 0 obj <> endobj 26410 0 obj <> endobj 26411 0 obj <> endobj 26412 0 obj <> endobj 26413 0 obj <> endobj 26414 0 obj <> endobj 26415 0 obj <> endobj 26416 0 obj <> endobj 26417 0 obj <> endobj 26418 0 obj <> endobj 26419 0 obj <> endobj 26420 0 obj <> endobj 26421 0 obj <> endobj 26422 0 obj <> endobj 26423 0 obj <> endobj 26424 0 obj <> endobj 26425 0 obj <> endobj 26426 0 obj <> endobj 26427 0 obj <> endobj 26428 0 obj <> endobj 26429 0 obj <> endobj 26430 0 obj <> endobj 26431 0 obj <> endobj 26432 0 obj <> endobj 26433 0 obj <> endobj 26434 0 obj <> endobj 26435 0 obj <> endobj 26436 0 obj <> endobj 26437 0 obj <> endobj 26438 0 obj <> endobj 26439 0 obj <> endobj 26440 0 obj <> endobj 26441 0 obj <> endobj 26442 0 obj <> endobj 26443 0 obj <> endobj 26444 0 obj <> endobj 26445 0 obj <> endobj 26446 0 obj <> endobj 26447 0 obj <> endobj 26448 0 obj <> endobj 26449 0 obj <> endobj 26450 0 obj <> endobj 26451 0 obj <> endobj 26452 0 obj <> endobj 26453 0 obj <> endobj 26454 0 obj <> endobj 26455 0 obj <> endobj 26456 0 obj <> endobj 26457 0 obj <> endobj 26458 0 obj <> endobj 26459 0 obj <> endobj 26460 0 obj <> endobj 26461 0 obj <> endobj 26462 0 obj <> endobj 26463 0 obj <> endobj 26464 0 obj <> endobj 26465 0 obj <> endobj 26466 0 obj <> endobj 26467 0 obj <> endobj 26468 0 obj <> endobj 26469 0 obj <> endobj 26470 0 obj <> endobj 26471 0 obj <> endobj 26472 0 obj <> endobj 26473 0 obj <> endobj 26474 0 obj <> endobj 26475 0 obj <> endobj 26476 0 obj <> endobj 26477 0 obj <> endobj 26478 0 obj <> endobj 26479 0 obj <> endobj 26480 0 obj <> endobj 26481 0 obj <> endobj 26482 0 obj <> endobj 26483 0 obj <> endobj 26484 0 obj <> endobj 26485 0 obj <> endobj 26486 0 obj <> endobj 26487 0 obj <> endobj 26488 0 obj <> endobj 26489 0 obj <> endobj 26490 0 obj <> endobj 26491 0 obj <> endobj 26492 0 obj <> endobj 26493 0 obj <> endobj 26494 0 obj <> endobj 26495 0 obj <> endobj 26496 0 obj <> endobj 26497 0 obj <> endobj 26498 0 obj <> endobj 26499 0 obj <> endobj 26500 0 obj <> endobj 26501 0 obj <> endobj 26502 0 obj <> endobj 26503 0 obj <> endobj 26504 0 obj <> endobj 26505 0 obj <> endobj 26506 0 obj <> endobj 26507 0 obj <> endobj 26508 0 obj <> endobj 26509 0 obj <> endobj 26510 0 obj <> endobj 26511 0 obj <> endobj 26512 0 obj <> endobj 26513 0 obj <> endobj 26514 0 obj <> endobj 26515 0 obj <> endobj 26516 0 obj <> endobj 26517 0 obj <> endobj 26518 0 obj <> endobj 26519 0 obj <> endobj 26520 0 obj <> endobj 26521 0 obj <> endobj 26522 0 obj <> endobj 26523 0 obj <> endobj 26524 0 obj <> endobj 26525 0 obj <> endobj 26526 0 obj <> endobj 26527 0 obj <> endobj 26528 0 obj <> endobj 26529 0 obj <> endobj 26530 0 obj <> endobj 26531 0 obj <> endobj 26532 0 obj <> endobj 26533 0 obj <> endobj 26534 0 obj <> endobj 26535 0 obj <> endobj 26536 0 obj <> endobj 26537 0 obj <> endobj 26538 0 obj <> endobj 26539 0 obj <> endobj 26540 0 obj <> endobj 26541 0 obj <> endobj 26542 0 obj <> endobj 26543 0 obj <> endobj 26544 0 obj <> endobj 26545 0 obj <> endobj 26546 0 obj <> endobj 26547 0 obj <> endobj 26548 0 obj <> endobj 26549 0 obj <> endobj 26550 0 obj <> endobj 26551 0 obj <> endobj 26552 0 obj <> endobj 26553 0 obj <> endobj 26554 0 obj <> endobj 26555 0 obj <> endobj 26556 0 obj <> endobj 26557 0 obj <> endobj 26558 0 obj <> endobj 26559 0 obj <> endobj 26560 0 obj <> endobj 26561 0 obj <> endobj 26562 0 obj <> endobj 26563 0 obj <> endobj 26564 0 obj <> endobj 26565 0 obj <> endobj 26566 0 obj <> endobj 26567 0 obj <> endobj 26568 0 obj <> endobj 26569 0 obj <> endobj 26570 0 obj <> endobj 26571 0 obj <> endobj 26572 0 obj <> endobj 26573 0 obj <> endobj 26574 0 obj <> endobj 26575 0 obj <> endobj 26576 0 obj <> endobj 26577 0 obj <> endobj 26578 0 obj <> endobj 26579 0 obj <> endobj 26580 0 obj <> endobj 26581 0 obj <> endobj 26582 0 obj <> endobj 26583 0 obj <> endobj 26584 0 obj <> endobj 26585 0 obj <> endobj 26586 0 obj <> endobj 26587 0 obj <> endobj 26588 0 obj <> endobj 26589 0 obj <> endobj 26590 0 obj <> endobj 26591 0 obj <> endobj 26592 0 obj <> endobj 26593 0 obj <> endobj 26594 0 obj <> endobj 26595 0 obj <> endobj 26596 0 obj <> endobj 26597 0 obj <> endobj 26598 0 obj <> endobj 26599 0 obj <> endobj 26600 0 obj <> endobj 26601 0 obj <> endobj 26602 0 obj <> endobj 26603 0 obj <> endobj 26604 0 obj <> endobj 26605 0 obj <> endobj 26606 0 obj <> endobj 26607 0 obj <> endobj 26608 0 obj <> endobj 26609 0 obj <> endobj 26610 0 obj <> endobj 26611 0 obj <> endobj 26612 0 obj <> endobj 26613 0 obj <> endobj 26614 0 obj <> endobj 26615 0 obj <> endobj 26616 0 obj <> endobj 26617 0 obj <> endobj 26618 0 obj <> endobj 26619 0 obj <> endobj 26620 0 obj <> endobj 26621 0 obj <> endobj 26622 0 obj <> endobj 26623 0 obj <> endobj 26624 0 obj <> endobj 26625 0 obj <> endobj 26626 0 obj <> endobj 26627 0 obj <> endobj 26628 0 obj <> endobj 26629 0 obj <> endobj 26630 0 obj <> endobj 26631 0 obj <> endobj 26632 0 obj <> endobj 26633 0 obj <> endobj 26634 0 obj <> endobj 26635 0 obj <> endobj 26636 0 obj <> endobj 26637 0 obj <> endobj 26638 0 obj <> endobj 26639 0 obj <> endobj 26640 0 obj <> endobj 26641 0 obj <> endobj 26642 0 obj <> endobj 26643 0 obj <> endobj 26644 0 obj <> endobj 26645 0 obj <> endobj 26646 0 obj <> endobj 26647 0 obj <> endobj 26648 0 obj <> endobj 26649 0 obj <> endobj 26650 0 obj <> endobj 26651 0 obj <> endobj 26652 0 obj <> endobj 26653 0 obj <> endobj 26654 0 obj <> endobj 26655 0 obj <> endobj 26656 0 obj <> endobj 26657 0 obj <> endobj 26658 0 obj <> endobj 26659 0 obj <> endobj 26660 0 obj <> endobj 26661 0 obj <> endobj 26662 0 obj <> endobj 26663 0 obj <> endobj 26664 0 obj <> endobj 26665 0 obj <> endobj 26666 0 obj <> endobj 26667 0 obj <> endobj 26668 0 obj <> endobj 26669 0 obj <> endobj 26670 0 obj <> endobj 26671 0 obj <> endobj 26672 0 obj <> endobj 26673 0 obj <> endobj 26674 0 obj <> endobj 26675 0 obj <> endobj 26676 0 obj <> endobj 26677 0 obj <> endobj 26678 0 obj <> endobj 26679 0 obj <> endobj 26680 0 obj <> endobj 26681 0 obj <> endobj 26682 0 obj <> endobj 26683 0 obj <> endobj 26684 0 obj <> endobj 26685 0 obj <> endobj 26686 0 obj <> endobj 26687 0 obj <> endobj 26688 0 obj <> endobj 26689 0 obj <> endobj 26690 0 obj <> endobj 26691 0 obj <> endobj 26692 0 obj <> endobj 26693 0 obj <> endobj 26694 0 obj <> endobj 26695 0 obj <> endobj 26696 0 obj <> endobj 26697 0 obj <> endobj 26698 0 obj <> endobj 26699 0 obj <> endobj 26700 0 obj <> endobj 26701 0 obj <> endobj 26702 0 obj <> endobj 26703 0 obj <> endobj 26704 0 obj <> endobj 26705 0 obj <> endobj 26706 0 obj <> endobj 26707 0 obj <> endobj 26708 0 obj <> endobj 26709 0 obj <> endobj 26710 0 obj <> endobj 26711 0 obj <> endobj 26712 0 obj <> endobj 26713 0 obj <> endobj 26714 0 obj <> endobj 26715 0 obj <> endobj 26716 0 obj <> endobj 26717 0 obj <> endobj 26718 0 obj <> endobj 26719 0 obj <> endobj 26720 0 obj <> endobj 26721 0 obj <> endobj 26722 0 obj <> endobj 26723 0 obj <> endobj 26724 0 obj <> endobj 26725 0 obj <> endobj 26726 0 obj <> endobj 26727 0 obj <> endobj 26728 0 obj <> endobj 26729 0 obj <> endobj 26730 0 obj <> endobj 26731 0 obj <> endobj 26732 0 obj <> endobj 26733 0 obj <> endobj 26734 0 obj <> endobj 26735 0 obj <> endobj 26736 0 obj <> endobj 26737 0 obj <> endobj 26738 0 obj <> endobj 26739 0 obj <> endobj 26740 0 obj <> endobj 26741 0 obj <> endobj 26742 0 obj <> endobj 26743 0 obj <> endobj 26744 0 obj <> endobj 26745 0 obj <> endobj 26746 0 obj <> endobj 26747 0 obj <> endobj 26748 0 obj <> endobj 26749 0 obj <> endobj 26750 0 obj <> endobj 26751 0 obj <> endobj 26752 0 obj <> endobj 26753 0 obj <> endobj 26754 0 obj <> endobj 26755 0 obj <> endobj 26756 0 obj <> endobj 26757 0 obj <> endobj 26758 0 obj <> endobj 26759 0 obj <> endobj 26760 0 obj <> endobj 26761 0 obj <> endobj 26762 0 obj <> endobj 26763 0 obj <> endobj 26764 0 obj <> endobj 26765 0 obj <> endobj 26766 0 obj <> endobj 26767 0 obj <> endobj 26768 0 obj <> endobj 26769 0 obj <> endobj 26770 0 obj <> endobj 26771 0 obj <> endobj 26772 0 obj <> endobj 26773 0 obj <> endobj 26774 0 obj <> endobj 26775 0 obj <> endobj 26776 0 obj <> endobj 26777 0 obj <> endobj 26778 0 obj <> endobj 26779 0 obj <> endobj 26780 0 obj <> endobj 26781 0 obj <> endobj 26782 0 obj <> endobj 26783 0 obj <> endobj 26784 0 obj <> endobj 26785 0 obj <> endobj 26786 0 obj <> endobj 26787 0 obj <> endobj 26788 0 obj <> endobj 26789 0 obj <> endobj 26790 0 obj <> endobj 26791 0 obj <> endobj 26792 0 obj <> endobj 26793 0 obj <> endobj 26794 0 obj <> endobj 26795 0 obj <> endobj 26796 0 obj <> endobj 26797 0 obj <> endobj 26798 0 obj <> endobj 26799 0 obj <> endobj 26800 0 obj <> endobj 26801 0 obj <> endobj 26802 0 obj <> endobj 26803 0 obj <> endobj 26804 0 obj <> endobj 26805 0 obj <> endobj 26806 0 obj <> endobj 26807 0 obj <> endobj 26808 0 obj <> endobj 26809 0 obj <> endobj 26810 0 obj <> endobj 26811 0 obj <> endobj 26812 0 obj <> endobj 26813 0 obj <> endobj 26814 0 obj <> endobj 26815 0 obj <> endobj 26816 0 obj <> endobj 26817 0 obj <> endobj 26818 0 obj <> endobj 26819 0 obj <> endobj 26820 0 obj <> endobj 26821 0 obj <> endobj 26822 0 obj <> endobj 26823 0 obj <> endobj 26824 0 obj <> endobj 26825 0 obj <> endobj 26826 0 obj <> endobj 26827 0 obj <> endobj 26828 0 obj <> endobj 26829 0 obj <> endobj 26830 0 obj <> endobj 26831 0 obj <> endobj 26832 0 obj <> endobj 26833 0 obj <> endobj 26834 0 obj <> endobj 26835 0 obj <> endobj 26836 0 obj <> endobj 26837 0 obj <> endobj 26838 0 obj <> endobj 26839 0 obj <> endobj 26840 0 obj <> endobj 26841 0 obj <> endobj 26842 0 obj <> endobj 26843 0 obj <> endobj 26844 0 obj <> endobj 26845 0 obj <> endobj 26846 0 obj <> endobj 26847 0 obj <> endobj 26848 0 obj <> endobj 26849 0 obj <> endobj 26850 0 obj <> endobj 26851 0 obj <> endobj 26852 0 obj <> endobj 26853 0 obj <> endobj 26854 0 obj <> endobj 26855 0 obj <> endobj 26856 0 obj <> endobj 26857 0 obj <> endobj 26858 0 obj <> endobj 26859 0 obj <> endobj 26860 0 obj <> endobj 26861 0 obj <> endobj 26862 0 obj <> endobj 26863 0 obj <> endobj 26864 0 obj <> endobj 26865 0 obj <> endobj 26866 0 obj <> endobj 26867 0 obj <> endobj 26868 0 obj <> endobj 26869 0 obj <> endobj 26870 0 obj <> endobj 26871 0 obj <> endobj 26872 0 obj <> endobj 26873 0 obj <> endobj 26874 0 obj <> endobj 26875 0 obj <> endobj 26876 0 obj <> endobj 26877 0 obj <> endobj 26878 0 obj <> endobj 26879 0 obj <> endobj 26880 0 obj <> endobj 26881 0 obj <> endobj 26882 0 obj <> endobj 26883 0 obj <> endobj 26884 0 obj <> endobj 26885 0 obj <> endobj 26886 0 obj <> endobj 26887 0 obj <> endobj 26888 0 obj <> endobj 26889 0 obj <> endobj 26890 0 obj <> endobj 26891 0 obj <> endobj 26892 0 obj <> endobj 26893 0 obj <> endobj 26894 0 obj <> endobj 26895 0 obj <> endobj 26896 0 obj <> endobj 26897 0 obj <> endobj 26898 0 obj <> endobj 26899 0 obj <> endobj 26900 0 obj <> endobj 26901 0 obj <> endobj 26902 0 obj <> endobj 26903 0 obj <> endobj 26904 0 obj <> endobj 26905 0 obj <> endobj 26906 0 obj <> endobj 26907 0 obj <> endobj 26908 0 obj <> endobj 26909 0 obj <> endobj 26910 0 obj <> endobj 26911 0 obj <> endobj 26912 0 obj <> endobj 26913 0 obj <> endobj 26914 0 obj <> endobj 26915 0 obj <> endobj 26916 0 obj <> endobj 26917 0 obj <> endobj 26918 0 obj <> endobj 26919 0 obj <> endobj 26920 0 obj <> endobj 26921 0 obj <> endobj 26922 0 obj <> endobj 26923 0 obj <> endobj 26924 0 obj <> endobj 26925 0 obj <> endobj 26926 0 obj <> endobj 26927 0 obj <> endobj 26928 0 obj <> endobj 26929 0 obj <> endobj 26930 0 obj <> endobj 26931 0 obj <> endobj 26932 0 obj <> endobj 26933 0 obj <> endobj 26934 0 obj <> endobj 26935 0 obj <> endobj 26936 0 obj <> endobj 26937 0 obj <> endobj 26938 0 obj <> endobj 26939 0 obj <> endobj 26940 0 obj <> endobj 26941 0 obj <> endobj 26942 0 obj <> endobj 26943 0 obj <> endobj 26944 0 obj <> endobj 26945 0 obj <> endobj 26946 0 obj <> endobj 26947 0 obj <> endobj 26948 0 obj <> endobj 26949 0 obj <> endobj 26950 0 obj <> endobj 26951 0 obj <> endobj 26952 0 obj <> endobj 26953 0 obj <> endobj 26954 0 obj <> endobj 26955 0 obj <> endobj 26956 0 obj <> endobj 26957 0 obj <> endobj 26958 0 obj <> endobj 26959 0 obj <> endobj 26960 0 obj <> endobj 26961 0 obj <> endobj 26962 0 obj <> endobj 26963 0 obj <> endobj 26964 0 obj <> endobj 26965 0 obj <> endobj 26966 0 obj <> endobj 26967 0 obj <> endobj 26968 0 obj <> endobj 26969 0 obj <> endobj 26970 0 obj <> endobj 26971 0 obj <> endobj 26972 0 obj <> endobj 26973 0 obj <> endobj 26974 0 obj <> endobj 26975 0 obj <> endobj 26976 0 obj <> endobj 26977 0 obj <> endobj 26978 0 obj <> endobj 26979 0 obj <> endobj 26980 0 obj <> endobj 26981 0 obj <> endobj 26982 0 obj <> endobj 26983 0 obj <> endobj 26984 0 obj <> endobj 26985 0 obj <> endobj 26986 0 obj <> endobj 26987 0 obj <> endobj 26988 0 obj <> endobj 26989 0 obj <> endobj 26990 0 obj <> endobj 26991 0 obj <> endobj 26992 0 obj <> endobj 26993 0 obj <> endobj 26994 0 obj <> endobj 26995 0 obj <> endobj 26996 0 obj <> endobj 26997 0 obj <> endobj 26998 0 obj <> endobj 26999 0 obj <> endobj 27000 0 obj <> endobj 27001 0 obj <> endobj 27002 0 obj <> endobj 27003 0 obj <> endobj 27004 0 obj <> endobj 27005 0 obj <> endobj 27006 0 obj <> endobj 27007 0 obj <> endobj 27008 0 obj <> endobj 27009 0 obj <> endobj 27010 0 obj <> endobj 27011 0 obj <> endobj 27012 0 obj <> endobj 27013 0 obj <> endobj 27014 0 obj <> endobj 27015 0 obj <> endobj 27016 0 obj <> endobj 27017 0 obj <> endobj 27018 0 obj <> endobj 27019 0 obj <> endobj 27020 0 obj <> endobj 27021 0 obj <> endobj 27022 0 obj <> endobj 27023 0 obj <> endobj 27024 0 obj <> endobj 27025 0 obj <> endobj 27026 0 obj <> endobj 27027 0 obj <> endobj 27028 0 obj <> endobj 27029 0 obj <> endobj 27030 0 obj <> endobj 27031 0 obj <> endobj 27032 0 obj <> endobj 27033 0 obj <> endobj 27034 0 obj <> endobj 27035 0 obj <> endobj 27036 0 obj <> endobj 27037 0 obj <> endobj 27038 0 obj <> endobj 27039 0 obj <> endobj 27040 0 obj <> endobj 27041 0 obj <> endobj 27042 0 obj <> endobj 27043 0 obj <> endobj 27044 0 obj <> endobj 27045 0 obj <> endobj 27046 0 obj <> endobj 27047 0 obj <> endobj 27048 0 obj <> endobj 27049 0 obj <> endobj 27050 0 obj <> endobj 27051 0 obj <> endobj 27052 0 obj <> endobj 27053 0 obj <> endobj 27054 0 obj <> endobj 27055 0 obj <> endobj 27056 0 obj <> endobj 27057 0 obj <> endobj 27058 0 obj <> endobj 27059 0 obj <> endobj 27060 0 obj <> endobj 27061 0 obj <> endobj 27062 0 obj <> endobj 27063 0 obj <> endobj 27064 0 obj <> endobj 27065 0 obj <> endobj 27066 0 obj <> endobj 27067 0 obj <> endobj 27068 0 obj <> endobj 27069 0 obj <> endobj 27070 0 obj <> endobj 27071 0 obj <> endobj 27072 0 obj <> endobj 27073 0 obj <> endobj 27074 0 obj <> endobj 27075 0 obj <> endobj 27076 0 obj <> endobj 27077 0 obj <> endobj 27078 0 obj <> endobj 27079 0 obj <> endobj 27080 0 obj <> endobj 27081 0 obj <> endobj 27082 0 obj <> endobj 27083 0 obj <> endobj 27084 0 obj <> endobj 27085 0 obj <> endobj 27086 0 obj <> endobj 27087 0 obj <> endobj 27088 0 obj <> endobj 27089 0 obj <> endobj 27090 0 obj <> endobj 27091 0 obj <> endobj 27092 0 obj <> endobj 27093 0 obj <> endobj 27094 0 obj <> endobj 27095 0 obj <> endobj 27096 0 obj <> endobj 27097 0 obj <> endobj 27098 0 obj <> endobj 27099 0 obj <> endobj 27100 0 obj <> endobj 27101 0 obj <> endobj 27102 0 obj <> endobj 27103 0 obj <> endobj 27104 0 obj <> endobj 27105 0 obj <> endobj 27106 0 obj <> endobj 27107 0 obj <> endobj 27108 0 obj <> endobj 27109 0 obj <> endobj 27110 0 obj <> endobj 27111 0 obj <> endobj 27112 0 obj <> endobj 27113 0 obj <> endobj 27114 0 obj <> endobj 27115 0 obj <> endobj 27116 0 obj <> endobj 27117 0 obj <> endobj 27118 0 obj <> endobj 27119 0 obj <> endobj 27120 0 obj <> endobj 27121 0 obj <> endobj 27122 0 obj <> endobj 27123 0 obj <> endobj 27124 0 obj <> endobj 27125 0 obj <> endobj 27126 0 obj <> endobj 27127 0 obj <> endobj 27128 0 obj <> endobj 27129 0 obj <> endobj 27130 0 obj <> endobj 27131 0 obj <> endobj 27132 0 obj <> endobj 27133 0 obj <> endobj 27134 0 obj <> endobj 27135 0 obj <> endobj 27136 0 obj <> endobj 27137 0 obj <> endobj 27138 0 obj <> endobj 27139 0 obj <> endobj 27140 0 obj <> endobj 27141 0 obj <> endobj 27142 0 obj <> endobj 27143 0 obj <> endobj 27144 0 obj <> endobj 27145 0 obj <> endobj 27146 0 obj <> endobj 27147 0 obj <> endobj 27148 0 obj <> endobj 27149 0 obj <> endobj 27150 0 obj <> endobj 27151 0 obj <> endobj 27152 0 obj <> endobj 27153 0 obj <> endobj 27154 0 obj <> endobj 27155 0 obj <> endobj 27156 0 obj <> endobj 27157 0 obj <> endobj 27158 0 obj <> endobj 27159 0 obj <> endobj 27160 0 obj <> endobj 27161 0 obj <> endobj 27162 0 obj <> endobj 27163 0 obj <> endobj 27164 0 obj <> endobj 27165 0 obj <> endobj 27166 0 obj <> endobj 27167 0 obj <> endobj 27168 0 obj <> endobj 27169 0 obj <> endobj 27170 0 obj <> endobj 27171 0 obj <> endobj 27172 0 obj <> endobj 27173 0 obj <> endobj 27174 0 obj <> endobj 27175 0 obj <> endobj 27176 0 obj <> endobj 27177 0 obj <> endobj 27178 0 obj <> endobj 27179 0 obj <> endobj 27180 0 obj <> endobj 27181 0 obj <> endobj 27182 0 obj <> endobj 27183 0 obj <> endobj 27184 0 obj <> endobj 27185 0 obj <> endobj 27186 0 obj <> endobj 27187 0 obj <> endobj 27188 0 obj <> endobj 27189 0 obj <> endobj 27190 0 obj <> endobj 27191 0 obj <> endobj 27192 0 obj <> endobj 27193 0 obj <> endobj 27194 0 obj <> endobj 27195 0 obj <> endobj 27196 0 obj <> endobj 27197 0 obj <> endobj 27198 0 obj <> endobj 27199 0 obj <> endobj 27200 0 obj <> endobj 27201 0 obj <> endobj 27202 0 obj <> endobj 27203 0 obj <> endobj 27204 0 obj <> endobj 27205 0 obj <> endobj 27206 0 obj <> endobj 27207 0 obj <> endobj 27208 0 obj <> endobj 27209 0 obj <> endobj 27210 0 obj <> endobj 27211 0 obj <> endobj 27212 0 obj <> endobj 27213 0 obj <> endobj 27214 0 obj <> endobj 27215 0 obj <> endobj 27216 0 obj <> endobj 27217 0 obj <> endobj 27218 0 obj <> endobj 27219 0 obj <> endobj 27220 0 obj <> endobj 27221 0 obj <> endobj 27222 0 obj <> endobj 27223 0 obj <> endobj 27224 0 obj <> endobj 27225 0 obj <> endobj 27226 0 obj <> endobj 27227 0 obj <> endobj 27228 0 obj <> endobj 27229 0 obj <> endobj 27230 0 obj <> endobj 27231 0 obj <> endobj 27232 0 obj <> endobj 27233 0 obj <> endobj 27234 0 obj <> endobj 27235 0 obj <> endobj 27236 0 obj <> endobj 27237 0 obj <> endobj 27238 0 obj <> endobj 27239 0 obj <> endobj 27240 0 obj <> endobj 27241 0 obj <> endobj 27242 0 obj <> endobj 27243 0 obj <> endobj 27244 0 obj <> endobj 27245 0 obj <> endobj 27246 0 obj <> endobj 27247 0 obj <> endobj 27248 0 obj <> endobj 27249 0 obj <> endobj 27250 0 obj <> endobj 27251 0 obj <> endobj 27252 0 obj <> endobj 27253 0 obj <> endobj 27254 0 obj <> endobj 27255 0 obj <> endobj 27256 0 obj <> endobj 27257 0 obj <> endobj 27258 0 obj <> endobj 27259 0 obj <> endobj 27260 0 obj <> endobj 27261 0 obj <> endobj 27262 0 obj <> endobj 27263 0 obj <> endobj 27264 0 obj <> endobj 27265 0 obj <> endobj 27266 0 obj <> endobj 27267 0 obj <> endobj 27268 0 obj <> endobj 27269 0 obj <> endobj 27270 0 obj <> endobj 27271 0 obj <> endobj 27272 0 obj <> endobj 27273 0 obj <> endobj 27274 0 obj <> endobj 27275 0 obj <> endobj 27276 0 obj <> endobj 27277 0 obj <> endobj 27278 0 obj <> endobj 27279 0 obj <> endobj 27280 0 obj <> endobj 27281 0 obj <> endobj 27282 0 obj <> endobj 27283 0 obj <> endobj 27284 0 obj <> endobj 27285 0 obj <> endobj 27286 0 obj <> endobj 27287 0 obj <> endobj 27288 0 obj <> endobj 27289 0 obj <> endobj 27290 0 obj <> endobj 27291 0 obj <> endobj 27292 0 obj <> endobj 27293 0 obj <> endobj 27294 0 obj <> endobj 27295 0 obj <> endobj 27296 0 obj <> endobj 27297 0 obj <> endobj 27298 0 obj <> endobj 27299 0 obj <> endobj 27300 0 obj <> endobj 27301 0 obj <> endobj 27302 0 obj <> endobj 27303 0 obj <> endobj 27304 0 obj <> endobj 27305 0 obj <> endobj 27306 0 obj <> endobj 27307 0 obj <> endobj 27308 0 obj <> endobj 27309 0 obj <> endobj 27310 0 obj <> endobj 27311 0 obj <> endobj 27312 0 obj <> endobj 27313 0 obj <> endobj 27314 0 obj <> endobj 27315 0 obj <> endobj 27316 0 obj <> endobj 27317 0 obj <> endobj 27318 0 obj <> endobj 27319 0 obj <> endobj 27320 0 obj <> endobj 27321 0 obj <> endobj 27322 0 obj <> endobj 27323 0 obj <> endobj 27324 0 obj <> endobj 27325 0 obj <> endobj 27326 0 obj <> endobj 27327 0 obj <> endobj 27328 0 obj <> endobj 27329 0 obj <> endobj 27330 0 obj <> endobj 27331 0 obj <> endobj 27332 0 obj <> endobj 27333 0 obj <> endobj 27334 0 obj <> endobj 27335 0 obj <> endobj 27336 0 obj <> endobj 27337 0 obj <> endobj 27338 0 obj <> endobj 27339 0 obj <> endobj 27340 0 obj <> endobj 27341 0 obj <> endobj 27342 0 obj <> endobj 27343 0 obj <> endobj 27344 0 obj <> endobj 27345 0 obj <> endobj 27346 0 obj <> endobj 27347 0 obj <> endobj 27348 0 obj <> endobj 27349 0 obj <> endobj 27350 0 obj <> endobj 27351 0 obj <> endobj 27352 0 obj <> endobj 27353 0 obj <> endobj 27354 0 obj <> endobj 27355 0 obj <> endobj 27356 0 obj <> endobj 27357 0 obj <> endobj 27358 0 obj <> endobj 27359 0 obj <> endobj 27360 0 obj <> endobj 27361 0 obj <> endobj 27362 0 obj <> endobj 27363 0 obj <> endobj 27364 0 obj <> endobj 27365 0 obj <> endobj 27366 0 obj <> endobj 27367 0 obj <> endobj 27368 0 obj <> endobj 27369 0 obj <> endobj 27370 0 obj <> endobj 27371 0 obj <> endobj 27372 0 obj <> endobj 27373 0 obj <> endobj 27374 0 obj <> endobj 27375 0 obj <> endobj 27376 0 obj <> endobj 27377 0 obj <> endobj 27378 0 obj <> endobj 27379 0 obj <> endobj 27380 0 obj <> endobj 27381 0 obj <> endobj 27382 0 obj <> endobj 27383 0 obj <> endobj 27384 0 obj <> endobj 27385 0 obj <> endobj 27386 0 obj <> endobj 27387 0 obj <> endobj 27388 0 obj <> endobj 27389 0 obj <> endobj 27390 0 obj <> endobj 27391 0 obj <> endobj 27392 0 obj <> endobj 27393 0 obj <> endobj 27394 0 obj <> endobj 27395 0 obj <> endobj 27396 0 obj <> endobj 27397 0 obj <> endobj 27398 0 obj <> endobj 27399 0 obj <> endobj 27400 0 obj <> endobj 27401 0 obj <> endobj 27402 0 obj <> endobj 27403 0 obj <> endobj 27404 0 obj <> endobj 27405 0 obj <> endobj 27406 0 obj <> endobj 27407 0 obj <> endobj 27408 0 obj <> endobj 27409 0 obj <> endobj 27410 0 obj <> endobj 27411 0 obj <> endobj 27412 0 obj <> endobj 27413 0 obj <> endobj 27414 0 obj <> endobj 27415 0 obj <> endobj 27416 0 obj <> endobj 27417 0 obj <> endobj 27418 0 obj <> endobj 27419 0 obj <> endobj 27420 0 obj <> endobj 27421 0 obj <> endobj 27422 0 obj <> endobj 27423 0 obj <> endobj 27424 0 obj <> endobj 27425 0 obj <> endobj 27426 0 obj <> endobj 27427 0 obj <> endobj 27428 0 obj <> endobj 27429 0 obj <> endobj 27430 0 obj <> endobj 27431 0 obj <> endobj 27432 0 obj <> endobj 27433 0 obj <> endobj 27434 0 obj <> endobj 27435 0 obj <> endobj 27436 0 obj <> endobj 27437 0 obj <> endobj 27438 0 obj <> endobj 27439 0 obj <> endobj 27440 0 obj <> endobj 27441 0 obj <> endobj 27442 0 obj <> endobj 27443 0 obj <> endobj 27444 0 obj <> endobj 27445 0 obj <> endobj 27446 0 obj <> endobj 27447 0 obj <> endobj 27448 0 obj <> endobj 27449 0 obj <> endobj 27450 0 obj <> endobj 27451 0 obj <> endobj 27452 0 obj <> endobj 27453 0 obj <> endobj 27454 0 obj <> endobj 27455 0 obj <> endobj 27456 0 obj <> endobj 27457 0 obj <> endobj 27458 0 obj <> endobj 27459 0 obj <> endobj 27460 0 obj <> endobj 27461 0 obj <> endobj 27462 0 obj <> endobj 27463 0 obj <> endobj 27464 0 obj <> endobj 27465 0 obj <> endobj 27466 0 obj <> endobj 27467 0 obj <> endobj 27468 0 obj <> endobj 27469 0 obj <> endobj 27470 0 obj <> endobj 27471 0 obj <> endobj 27472 0 obj <> endobj 27473 0 obj <> endobj 27474 0 obj <> endobj 27475 0 obj <> endobj 27476 0 obj <> endobj 27477 0 obj <> endobj 27478 0 obj <> endobj 27479 0 obj <> endobj 27480 0 obj <> endobj 27481 0 obj <> endobj 27482 0 obj <> endobj 27483 0 obj <> endobj 27484 0 obj <> endobj 27485 0 obj <> endobj 27486 0 obj <> endobj 27487 0 obj <> endobj 27488 0 obj <> endobj 27489 0 obj <> endobj 27490 0 obj <> endobj 27491 0 obj <> endobj 27492 0 obj <> endobj 27493 0 obj <> endobj 27494 0 obj <> endobj 27495 0 obj <> endobj 27496 0 obj <> endobj 27497 0 obj <> endobj 27498 0 obj <> endobj 27499 0 obj <> endobj 27500 0 obj <> endobj 27501 0 obj <> endobj 27502 0 obj <> endobj 27503 0 obj <> endobj 27504 0 obj <> endobj 27505 0 obj <> endobj 27506 0 obj <> endobj 27507 0 obj <> endobj 27508 0 obj <> endobj 27509 0 obj <> endobj 27510 0 obj <> endobj 27511 0 obj <> endobj 27512 0 obj <> endobj 27513 0 obj <> endobj 27514 0 obj <> endobj 27515 0 obj <> endobj 27516 0 obj <> endobj 27517 0 obj <> endobj 27518 0 obj <> endobj 27519 0 obj <> endobj 27520 0 obj <> endobj 27521 0 obj <> endobj 27522 0 obj <> endobj 27523 0 obj <> endobj 27524 0 obj <> endobj 27525 0 obj <> endobj 27526 0 obj <> endobj 27527 0 obj <> endobj 27528 0 obj <> endobj 27529 0 obj <> endobj 27530 0 obj <> endobj 27531 0 obj <> endobj 27532 0 obj <> endobj 27533 0 obj <> endobj 27534 0 obj <> endobj 27535 0 obj <> endobj 27536 0 obj <> endobj 27537 0 obj <> endobj 27538 0 obj <> endobj 27539 0 obj <> endobj 27540 0 obj <> endobj 27541 0 obj <> endobj 27542 0 obj <> endobj 27543 0 obj <> endobj 27544 0 obj <> endobj 27545 0 obj <> endobj 27546 0 obj <> endobj 27547 0 obj <> endobj 27548 0 obj <> endobj 27549 0 obj <> endobj 27550 0 obj <> endobj 27551 0 obj <> endobj 27552 0 obj <> endobj 27553 0 obj <> endobj 27554 0 obj <> endobj 27555 0 obj <> endobj 27556 0 obj <> endobj 27557 0 obj <> endobj 27558 0 obj <> endobj 27559 0 obj <> endobj 27560 0 obj <> endobj 27561 0 obj <> endobj 27562 0 obj <> endobj 27563 0 obj <> endobj 27564 0 obj <> endobj 27565 0 obj <> endobj 27566 0 obj <> endobj 27567 0 obj <> endobj 27568 0 obj <> endobj 27569 0 obj <> endobj 27570 0 obj <> endobj 27571 0 obj <> endobj 27572 0 obj <> endobj 27573 0 obj <> endobj 27574 0 obj <> endobj 27575 0 obj <> endobj 27576 0 obj <> endobj 27577 0 obj <> endobj 27578 0 obj <> endobj 27579 0 obj <> endobj 27580 0 obj <> endobj 27581 0 obj <> endobj 27582 0 obj <> endobj 27583 0 obj <> endobj 27584 0 obj <> endobj 27585 0 obj <> endobj 27586 0 obj <> endobj 27587 0 obj <> endobj 27588 0 obj <> endobj 27589 0 obj <> endobj 27590 0 obj <> endobj 27591 0 obj <> endobj 27592 0 obj <> endobj 27593 0 obj <> endobj 27594 0 obj <> endobj 27595 0 obj <> endobj 27596 0 obj <> endobj 27597 0 obj <> endobj 27598 0 obj <> endobj 27599 0 obj <> endobj 27600 0 obj <> endobj 27601 0 obj <> endobj 27602 0 obj <> endobj 27603 0 obj <> endobj 27604 0 obj <> endobj 27605 0 obj <> endobj 27606 0 obj <> endobj 27607 0 obj <> endobj 27608 0 obj <> endobj 27609 0 obj <> endobj 27610 0 obj <> endobj 27611 0 obj <> endobj 27612 0 obj <> endobj 27613 0 obj <> endobj 27614 0 obj <> endobj 27615 0 obj <> endobj 27616 0 obj <> endobj 27617 0 obj <> endobj 27618 0 obj <> endobj 27619 0 obj <> endobj 27620 0 obj <> endobj 27621 0 obj <> endobj 27622 0 obj <> endobj 27623 0 obj <> endobj 27624 0 obj <> endobj 27625 0 obj <> endobj 27626 0 obj <> endobj 27627 0 obj <> endobj 27628 0 obj <> endobj 27629 0 obj <> endobj 27630 0 obj <> endobj 27631 0 obj <> endobj 27632 0 obj <> endobj 27633 0 obj <> endobj 27634 0 obj <> endobj 27635 0 obj <> endobj 27636 0 obj <> endobj 27637 0 obj <> endobj 27638 0 obj <> endobj 27639 0 obj <> endobj 27640 0 obj <> endobj 27641 0 obj <> endobj 27642 0 obj <> endobj 27643 0 obj <> endobj 27644 0 obj <> endobj 27645 0 obj <> endobj 27646 0 obj <> endobj 27647 0 obj <> endobj 27648 0 obj <> endobj 27649 0 obj <> endobj 27650 0 obj <> endobj 27651 0 obj <> endobj 27652 0 obj <> endobj 27653 0 obj <> endobj 27654 0 obj <> endobj 27655 0 obj <> endobj 27656 0 obj <> endobj 27657 0 obj <> endobj 27658 0 obj <> endobj 27659 0 obj <> endobj 27660 0 obj <> endobj 27661 0 obj <> endobj 27662 0 obj <> endobj 27663 0 obj <> endobj 27664 0 obj <> endobj 27665 0 obj <> endobj 27666 0 obj <> endobj 27667 0 obj <> endobj 27668 0 obj <> endobj 27669 0 obj <> endobj 27670 0 obj <> endobj 27671 0 obj <> endobj 27672 0 obj <> endobj 27673 0 obj <> endobj 27674 0 obj <> endobj 27675 0 obj <> endobj 27676 0 obj <> endobj 27677 0 obj <> endobj 27678 0 obj <> endobj 27679 0 obj <> endobj 27680 0 obj <> endobj 27681 0 obj <> endobj 27682 0 obj <> endobj 27683 0 obj <> endobj 27684 0 obj <> endobj 27685 0 obj <> endobj 27686 0 obj <> endobj 27687 0 obj <> endobj 27688 0 obj <> endobj 27689 0 obj <> endobj 27690 0 obj <> endobj 27691 0 obj <> endobj 27692 0 obj <> endobj 27693 0 obj <> endobj 27694 0 obj <> endobj 27695 0 obj <> endobj 27696 0 obj <> endobj 27697 0 obj <> endobj 27698 0 obj <> endobj 27699 0 obj <> endobj 27700 0 obj <> endobj 27701 0 obj <> endobj 27702 0 obj <> endobj 27703 0 obj <> endobj 27704 0 obj <> endobj 27705 0 obj <> endobj 27706 0 obj <> endobj 27707 0 obj <> endobj 27708 0 obj <> endobj 27709 0 obj <> endobj 27710 0 obj <> endobj 27711 0 obj <> endobj 27712 0 obj <> endobj 27713 0 obj <> endobj 27714 0 obj <> endobj 27715 0 obj <> endobj 27716 0 obj <> endobj 27717 0 obj <> endobj 27718 0 obj <> endobj 27719 0 obj <> endobj 27720 0 obj <> endobj 27721 0 obj <> endobj 27722 0 obj <> endobj 27723 0 obj <> endobj 27724 0 obj <> endobj 27725 0 obj <> endobj 27726 0 obj <> endobj 27727 0 obj <> endobj 27728 0 obj <> endobj 27729 0 obj <> endobj 27730 0 obj <> endobj 27731 0 obj <> endobj 27732 0 obj <> endobj 27733 0 obj <> endobj 27734 0 obj <> endobj 27735 0 obj <> endobj 27736 0 obj <> endobj 27737 0 obj <> endobj 27738 0 obj <> endobj 27739 0 obj <> endobj 27740 0 obj <> endobj 27741 0 obj <> endobj 27742 0 obj <> endobj 27743 0 obj <> endobj 27744 0 obj <> endobj 27745 0 obj <> endobj 27746 0 obj <> endobj 27747 0 obj <> endobj 27748 0 obj <> endobj 27749 0 obj <> endobj 27750 0 obj <> endobj 27751 0 obj <> endobj 27752 0 obj <> endobj 27753 0 obj <> endobj 27754 0 obj <> endobj 27755 0 obj <> endobj 27756 0 obj <> endobj 27757 0 obj <> endobj 27758 0 obj <> endobj 27759 0 obj <> endobj 27760 0 obj <> endobj 27761 0 obj <> endobj 27762 0 obj <> endobj 27763 0 obj <> endobj 27764 0 obj <> endobj 27765 0 obj <> endobj 27766 0 obj <> endobj 27767 0 obj <> endobj 27768 0 obj <> endobj 27769 0 obj <> endobj 27770 0 obj <> endobj 27771 0 obj <> endobj 27772 0 obj <> endobj 27773 0 obj <> endobj 27774 0 obj <> endobj 27775 0 obj <> endobj 27776 0 obj <> endobj 27777 0 obj <> endobj 27778 0 obj <> endobj 27779 0 obj <> endobj 27780 0 obj <> endobj 27781 0 obj <> endobj 27782 0 obj <> endobj 27783 0 obj <> endobj 27784 0 obj <> endobj 27785 0 obj <> endobj 27786 0 obj <> endobj 27787 0 obj <> endobj 27788 0 obj <> endobj 27789 0 obj <> endobj 27790 0 obj <> endobj 27791 0 obj <> endobj 27792 0 obj <> endobj 27793 0 obj <> endobj 27794 0 obj <> endobj 27795 0 obj <> endobj 27796 0 obj <> endobj 27797 0 obj <> endobj 27798 0 obj <> endobj 27799 0 obj <> endobj 27800 0 obj <> endobj 27801 0 obj <> endobj 27802 0 obj <> endobj 27803 0 obj <> endobj 27804 0 obj <> endobj 27805 0 obj <> endobj 27806 0 obj <> endobj 27807 0 obj <> endobj 27808 0 obj <> endobj 27809 0 obj <> endobj 27810 0 obj <> endobj 27811 0 obj <> endobj 27812 0 obj <> endobj 27813 0 obj <> endobj 27814 0 obj <> endobj 27815 0 obj <> endobj 27816 0 obj <> endobj 27817 0 obj <> endobj 27818 0 obj <> endobj 27819 0 obj <> endobj 27820 0 obj <> endobj 27821 0 obj <> endobj 27822 0 obj <> endobj 27823 0 obj <> endobj 27824 0 obj <> endobj 27825 0 obj <> endobj 27826 0 obj <> endobj 27827 0 obj <> endobj 27828 0 obj <> endobj 27829 0 obj <> endobj 27830 0 obj <> endobj 27831 0 obj <> endobj 27832 0 obj <> endobj 27833 0 obj <> endobj 27834 0 obj <> endobj 27835 0 obj <> endobj 27836 0 obj <> endobj 27837 0 obj <> endobj 27838 0 obj <> endobj 27839 0 obj <> endobj 27840 0 obj <> endobj 27841 0 obj <> endobj 27842 0 obj <> endobj 27843 0 obj <> endobj 27844 0 obj <> endobj 27845 0 obj <> endobj 27846 0 obj <> endobj 27847 0 obj <> endobj 27848 0 obj <> endobj 27849 0 obj <> endobj 27850 0 obj <> endobj 27851 0 obj <> endobj 27852 0 obj <> endobj 27853 0 obj <> endobj 27854 0 obj <> endobj 27855 0 obj <> endobj 27856 0 obj <> endobj 27857 0 obj <> endobj 27858 0 obj <> endobj 27859 0 obj <> endobj 27860 0 obj <> endobj 27861 0 obj <> endobj 27862 0 obj <> endobj 27863 0 obj <> endobj 27864 0 obj <> endobj 27865 0 obj <> endobj 27866 0 obj <> endobj 27867 0 obj <> endobj 27868 0 obj <> endobj 27869 0 obj <> endobj 27870 0 obj <> endobj 27871 0 obj <> endobj 27872 0 obj <> endobj 27873 0 obj <> endobj 27874 0 obj <> endobj 27875 0 obj <> endobj 27876 0 obj <> endobj 27877 0 obj <> endobj 27878 0 obj <> endobj 27879 0 obj <> endobj 27880 0 obj <> endobj 27881 0 obj <> endobj 27882 0 obj <> endobj 27883 0 obj <> endobj 27884 0 obj <> endobj 27885 0 obj <> endobj 27886 0 obj <> endobj 27887 0 obj <> endobj 27888 0 obj <> endobj 27889 0 obj <> endobj 27890 0 obj <> endobj 27891 0 obj <> endobj 27892 0 obj <> endobj 27893 0 obj <> endobj 27894 0 obj <> endobj 27895 0 obj <> endobj 27896 0 obj <> endobj 27897 0 obj <> endobj 27898 0 obj <> endobj 27899 0 obj <> endobj 27900 0 obj <> endobj 27901 0 obj <> endobj 27902 0 obj <> endobj 27903 0 obj <> endobj 27904 0 obj <> endobj 27905 0 obj <> endobj 27906 0 obj <> endobj 27907 0 obj <> endobj 27908 0 obj <> endobj 27909 0 obj <> endobj 27910 0 obj <> endobj 27911 0 obj <> endobj 27912 0 obj <> endobj 27913 0 obj <> endobj 27914 0 obj <> endobj 27915 0 obj <> endobj 27916 0 obj <> endobj 27917 0 obj <> endobj 27918 0 obj <> endobj 27919 0 obj <> endobj 27920 0 obj <> endobj 27921 0 obj <> endobj 27922 0 obj <> endobj 27923 0 obj <> endobj 27924 0 obj <> endobj 27925 0 obj <> endobj 27926 0 obj <> endobj 27927 0 obj <> endobj 27928 0 obj <> endobj 27929 0 obj <> endobj 27930 0 obj <> endobj 27931 0 obj <> endobj 27932 0 obj <> endobj 27933 0 obj <> endobj 27934 0 obj <> endobj 27935 0 obj <> endobj 27936 0 obj <> endobj 27937 0 obj <> endobj 27938 0 obj <> endobj 27939 0 obj <> endobj 27940 0 obj <> endobj 27941 0 obj <> endobj 27942 0 obj <> endobj 27943 0 obj <> endobj 27944 0 obj <> endobj 27945 0 obj <> endobj 27946 0 obj <> endobj 27947 0 obj <> endobj 27948 0 obj <> endobj 27949 0 obj <> endobj 27950 0 obj <> endobj 27951 0 obj <> endobj 27952 0 obj <> endobj 27953 0 obj <> endobj 27954 0 obj <> endobj 27955 0 obj <> endobj 27956 0 obj <> endobj 27957 0 obj <> endobj 27958 0 obj <> endobj 27959 0 obj <> endobj 27960 0 obj <> endobj 27961 0 obj <> endobj 27962 0 obj <> endobj 27963 0 obj <> endobj 27964 0 obj <> endobj 27965 0 obj <> endobj 27966 0 obj <> endobj 27967 0 obj <> endobj 27968 0 obj <> endobj 27969 0 obj <> endobj 27970 0 obj <> endobj 27971 0 obj <> endobj 27972 0 obj <> endobj 27973 0 obj <> endobj 27974 0 obj <> endobj 27975 0 obj <> endobj 27976 0 obj <> endobj 27977 0 obj <> endobj 27978 0 obj <> endobj 27979 0 obj <> endobj 27980 0 obj <> endobj 27981 0 obj <> endobj 27982 0 obj <> endobj 27983 0 obj <> endobj 27984 0 obj <> endobj 27985 0 obj <> endobj 27986 0 obj <> endobj 27987 0 obj <> endobj 27988 0 obj <> endobj 27989 0 obj <> endobj 27990 0 obj <> endobj 27991 0 obj <> endobj 27992 0 obj <> endobj 27993 0 obj <> endobj 27994 0 obj <> endobj 27995 0 obj <> endobj 27996 0 obj <> endobj 27997 0 obj <> endobj 27998 0 obj <> endobj 27999 0 obj <> endobj 28000 0 obj <> endobj 28001 0 obj <> endobj 28002 0 obj <> endobj 28003 0 obj <> endobj 28004 0 obj <> endobj 28005 0 obj <> endobj 28006 0 obj <> endobj 28007 0 obj <> endobj 28008 0 obj <> endobj 28009 0 obj <> endobj 28010 0 obj <> endobj 28011 0 obj <> endobj 28012 0 obj <> endobj 28013 0 obj <> endobj 28014 0 obj <> endobj 28015 0 obj <> endobj 28016 0 obj <> endobj 28017 0 obj <> endobj 28018 0 obj <> endobj 28019 0 obj <> endobj 28020 0 obj <> endobj 28021 0 obj <> endobj 28022 0 obj <> endobj 28023 0 obj <> endobj 28024 0 obj <> endobj 28025 0 obj <> endobj 28026 0 obj <> endobj 28027 0 obj <> endobj 28028 0 obj <> endobj 28029 0 obj <> endobj 28030 0 obj <> endobj 28031 0 obj <> endobj 28032 0 obj <> endobj 28033 0 obj <> endobj 28034 0 obj <> endobj 28035 0 obj <> endobj 28036 0 obj <> endobj 28037 0 obj <> endobj 28038 0 obj <> endobj 28039 0 obj <> endobj 28040 0 obj <> endobj 28041 0 obj <> endobj 28042 0 obj <> endobj 28043 0 obj <> endobj 28044 0 obj <> endobj 28045 0 obj <> endobj 28046 0 obj <> endobj 28047 0 obj <> endobj 28048 0 obj <> endobj 28049 0 obj <> endobj 28050 0 obj <> endobj 28051 0 obj <> endobj 28052 0 obj <> endobj 28053 0 obj <> endobj 28054 0 obj <> endobj 28055 0 obj <> endobj 28056 0 obj <> endobj 28057 0 obj <> endobj 28058 0 obj <> endobj 28059 0 obj <> endobj 28060 0 obj <> endobj 28061 0 obj <> endobj 28062 0 obj <> endobj 28063 0 obj <> endobj 28064 0 obj <> endobj 28065 0 obj <> endobj 28066 0 obj <> endobj 28067 0 obj <> endobj 28068 0 obj <> endobj 28069 0 obj <> endobj 28070 0 obj <> endobj 28071 0 obj <> endobj 28072 0 obj <> endobj 28073 0 obj <> endobj 28074 0 obj <> endobj 28075 0 obj <> endobj 28076 0 obj <> endobj 28077 0 obj <> endobj 28078 0 obj <> endobj 28079 0 obj <> endobj 28080 0 obj <> endobj 28081 0 obj <> endobj 28082 0 obj <> endobj 28083 0 obj <> endobj 28084 0 obj <> endobj 28085 0 obj <> endobj 28086 0 obj <> endobj 28087 0 obj <> endobj 28088 0 obj <> endobj 28089 0 obj <> endobj 28090 0 obj <> endobj 28091 0 obj <> endobj 28092 0 obj <> endobj 28093 0 obj <> endobj 28094 0 obj <> endobj 28095 0 obj <> endobj 28096 0 obj <> endobj 28097 0 obj <> endobj 28098 0 obj <> endobj 28099 0 obj <> endobj 28100 0 obj <> endobj 28101 0 obj <> endobj 28102 0 obj <> endobj 28103 0 obj <> endobj 28104 0 obj <> endobj 28105 0 obj <> endobj 28106 0 obj <> endobj 28107 0 obj <> endobj 28108 0 obj <> endobj 28109 0 obj <> endobj 28110 0 obj <> endobj 28111 0 obj <> endobj 28112 0 obj <> endobj 28113 0 obj <> endobj 28114 0 obj <> endobj 28115 0 obj <> endobj 28116 0 obj <> endobj 28117 0 obj <> endobj 28118 0 obj <> endobj 28119 0 obj <> endobj 28120 0 obj <> endobj 28121 0 obj <> endobj 28122 0 obj <> endobj 28123 0 obj <> endobj 28124 0 obj <> endobj 28125 0 obj <> endobj 28126 0 obj <> endobj 28127 0 obj <> endobj 28128 0 obj <> endobj 28129 0 obj <> endobj 28130 0 obj <> endobj 28131 0 obj <> endobj 28132 0 obj <> endobj 28133 0 obj <> endobj 28134 0 obj <> endobj 28135 0 obj <> endobj 28136 0 obj <> endobj 28137 0 obj <> endobj 28138 0 obj <> endobj 28139 0 obj <> endobj 28140 0 obj <> endobj 28141 0 obj <> endobj 28142 0 obj <> endobj 28143 0 obj <> endobj 28144 0 obj <> endobj 28145 0 obj <> endobj 28146 0 obj <> endobj 28147 0 obj <> endobj 28148 0 obj <> endobj 28149 0 obj <> endobj 28150 0 obj <> endobj 28151 0 obj <> endobj 28152 0 obj <> endobj 28153 0 obj <> endobj 28154 0 obj <> endobj 28155 0 obj <> endobj 28156 0 obj <> endobj 28157 0 obj <> endobj 28158 0 obj <> endobj 28159 0 obj <> endobj 28160 0 obj <> endobj 28161 0 obj <> endobj 28162 0 obj <> endobj 28163 0 obj <> endobj 28164 0 obj <> endobj 28165 0 obj <> endobj 28166 0 obj <> endobj 28167 0 obj <> endobj 28168 0 obj <> endobj 28169 0 obj <> endobj 28170 0 obj <> endobj 28171 0 obj <> endobj 28172 0 obj <> endobj 28173 0 obj <> endobj 28174 0 obj <> endobj 28175 0 obj <> endobj 28176 0 obj <> endobj 28177 0 obj <> endobj 28178 0 obj <> endobj 28179 0 obj <> endobj 28180 0 obj <> endobj 28181 0 obj <> endobj 28182 0 obj <> endobj 28183 0 obj <> endobj 28184 0 obj <> endobj 28185 0 obj <> endobj 28186 0 obj <> endobj 28187 0 obj <> endobj 28188 0 obj <> endobj 28189 0 obj <> endobj 28190 0 obj <> endobj 28191 0 obj <> endobj 28192 0 obj <> endobj 28193 0 obj <> endobj 28194 0 obj <> endobj 28195 0 obj <> endobj 28196 0 obj <> endobj 28197 0 obj <> endobj 28198 0 obj <> endobj 28199 0 obj <> endobj 28200 0 obj <> endobj 28201 0 obj <> endobj 28202 0 obj <> endobj 28203 0 obj <> endobj 28204 0 obj <> endobj 28205 0 obj <> endobj 28206 0 obj <> endobj 28207 0 obj <> endobj 28208 0 obj <> endobj 28209 0 obj <> endobj 28210 0 obj <> endobj 28211 0 obj <> endobj 28212 0 obj <> endobj 28213 0 obj <> endobj 28214 0 obj <> endobj 28215 0 obj <> endobj 28216 0 obj <> endobj 28217 0 obj <> endobj 28218 0 obj <> endobj 28219 0 obj <> endobj 28220 0 obj <> endobj 28221 0 obj <> endobj 28222 0 obj <> endobj 28223 0 obj <> endobj 28224 0 obj <> endobj 28225 0 obj <> endobj 28226 0 obj <> endobj 28227 0 obj <> endobj 28228 0 obj <> endobj 28229 0 obj <> endobj 28230 0 obj <> endobj 28231 0 obj <> endobj 28232 0 obj <> endobj 28233 0 obj <> endobj 28234 0 obj <> endobj 28235 0 obj <> endobj 28236 0 obj <> endobj 28237 0 obj <> endobj 28238 0 obj <> endobj 28239 0 obj <> endobj 28240 0 obj <> endobj 28241 0 obj <> endobj 28242 0 obj <> endobj 28243 0 obj <> endobj 28244 0 obj <> endobj 28245 0 obj <> endobj 28246 0 obj <> endobj 28247 0 obj <> endobj 28248 0 obj <> endobj 28249 0 obj <> endobj 28250 0 obj <> endobj 28251 0 obj <> endobj 28252 0 obj <> endobj 28253 0 obj <> endobj 28254 0 obj <> endobj 28255 0 obj <> endobj 28256 0 obj <> endobj 28257 0 obj <> endobj 28258 0 obj <> endobj 28259 0 obj <> endobj 28260 0 obj <> endobj 28261 0 obj <> endobj 28262 0 obj <> endobj 28263 0 obj <> endobj 28264 0 obj <> endobj 28265 0 obj <> endobj 28266 0 obj <> endobj 28267 0 obj <> endobj 28268 0 obj <> endobj 28269 0 obj <> endobj 28270 0 obj <> endobj 28271 0 obj <> endobj 28272 0 obj <> endobj 28273 0 obj <> endobj 28274 0 obj <> endobj 28275 0 obj <> endobj 28276 0 obj <> endobj 28277 0 obj <> endobj 28278 0 obj <> endobj 28279 0 obj <> endobj 28280 0 obj <> endobj 28281 0 obj <> endobj 28282 0 obj <> endobj 28283 0 obj <> endobj 28284 0 obj <> endobj 28285 0 obj <> endobj 28286 0 obj <> endobj 28287 0 obj <> endobj 28288 0 obj <> endobj 28289 0 obj <> endobj 28290 0 obj <> endobj 28291 0 obj <> endobj 28292 0 obj <> endobj 28293 0 obj <> endobj 28294 0 obj <> endobj 28295 0 obj <> endobj 28296 0 obj <> endobj 28297 0 obj <> endobj 28298 0 obj <> endobj 28299 0 obj <> endobj 28300 0 obj <> endobj 28301 0 obj <> endobj 28302 0 obj <> endobj 28303 0 obj <> endobj 28304 0 obj <> endobj 28305 0 obj <> endobj 28306 0 obj <> endobj 28307 0 obj <> endobj 28308 0 obj <> endobj 28309 0 obj <> endobj 28310 0 obj <> endobj 28311 0 obj <> endobj 28312 0 obj <> endobj 28313 0 obj <> endobj 28314 0 obj <> endobj 28315 0 obj <> endobj 28316 0 obj <> endobj 28317 0 obj <> endobj 28318 0 obj <> endobj 28319 0 obj <> endobj 28320 0 obj <> endobj 28321 0 obj <> endobj 28322 0 obj <> endobj 28323 0 obj <> endobj 28324 0 obj <> endobj 28325 0 obj <> endobj 28326 0 obj <> endobj 28327 0 obj <> endobj 28328 0 obj <> endobj 28329 0 obj <> endobj 28330 0 obj <> endobj 28331 0 obj <> endobj 28332 0 obj <> endobj 28333 0 obj <> endobj 28334 0 obj <> endobj 28335 0 obj <> endobj 28336 0 obj <> endobj 28337 0 obj <> endobj 28338 0 obj <> endobj 28339 0 obj <> endobj 28340 0 obj <> endobj 28341 0 obj <> endobj 28342 0 obj <> endobj 28343 0 obj <> endobj 28344 0 obj <> endobj 28345 0 obj <> endobj 28346 0 obj <> endobj 28347 0 obj <> endobj 28348 0 obj <> endobj 28349 0 obj <> endobj 28350 0 obj <> endobj 28351 0 obj <> endobj 28352 0 obj <> endobj 28353 0 obj <> endobj 28354 0 obj <> endobj 28355 0 obj <> endobj 28356 0 obj <> endobj 28357 0 obj <> endobj 28358 0 obj <> endobj 28359 0 obj <> endobj 28360 0 obj <> endobj 28361 0 obj <> endobj 28362 0 obj <> endobj 28363 0 obj <> endobj 28364 0 obj <> endobj 28365 0 obj <> endobj 28366 0 obj <> endobj 28367 0 obj <> endobj 28368 0 obj <> endobj 28369 0 obj <> endobj 28370 0 obj <> endobj 28371 0 obj <> endobj 28372 0 obj <> endobj 28373 0 obj <> endobj 28374 0 obj <> endobj 28375 0 obj <> endobj 28376 0 obj <> endobj 28377 0 obj <> endobj 28378 0 obj <> endobj 28379 0 obj <> endobj 28380 0 obj <> endobj 28381 0 obj <> endobj 28382 0 obj <> endobj 28383 0 obj <> endobj 28384 0 obj <> endobj 28385 0 obj <> endobj 28386 0 obj <> endobj 28387 0 obj <> endobj 28388 0 obj <> endobj 28389 0 obj <> endobj 28390 0 obj <> endobj 28391 0 obj <> endobj 28392 0 obj <> endobj 28393 0 obj <> endobj 28394 0 obj <> endobj 28395 0 obj <> endobj 28396 0 obj <> endobj 28397 0 obj <> endobj 28398 0 obj <> endobj 28399 0 obj <> endobj 28400 0 obj <> endobj 28401 0 obj <> endobj 28402 0 obj <> endobj 28403 0 obj <> endobj 28404 0 obj <> endobj 28405 0 obj <> endobj 28406 0 obj <> endobj 28407 0 obj <> endobj 28408 0 obj <> endobj 28409 0 obj <> endobj 28410 0 obj <> endobj 28411 0 obj <> endobj 28412 0 obj <> endobj 28413 0 obj <> endobj 28414 0 obj <> endobj 28415 0 obj <> endobj 28416 0 obj <> endobj 28417 0 obj <> endobj 28418 0 obj <> endobj 28419 0 obj <> endobj 28420 0 obj <> endobj 28421 0 obj <> endobj 28422 0 obj <> endobj 28423 0 obj <> endobj 28424 0 obj <> endobj 28425 0 obj <> endobj 28426 0 obj <> endobj 28427 0 obj <> endobj 28428 0 obj <> endobj 28429 0 obj <> endobj 28430 0 obj <> endobj 28431 0 obj <> endobj 28432 0 obj <> endobj 28433 0 obj <> endobj 28434 0 obj <> endobj 28435 0 obj <> endobj 28436 0 obj <> endobj 28437 0 obj <> endobj 28438 0 obj <> endobj 28439 0 obj <> endobj 28440 0 obj <> endobj 28441 0 obj <> endobj 28442 0 obj <> endobj 28443 0 obj <> endobj 28444 0 obj <> endobj 28445 0 obj <> endobj 28446 0 obj <> endobj 28447 0 obj <> endobj 28448 0 obj <> endobj 28449 0 obj <> endobj 28450 0 obj <> endobj 28451 0 obj <> endobj 28452 0 obj <> endobj 28453 0 obj <> endobj 28454 0 obj <> endobj 28455 0 obj <> endobj 28456 0 obj <> endobj 28457 0 obj <> endobj 28458 0 obj <> endobj 28459 0 obj <> endobj 28460 0 obj <> endobj 28461 0 obj <> endobj 28462 0 obj <> endobj 28463 0 obj <> endobj 28464 0 obj <> endobj 28465 0 obj <> endobj 28466 0 obj <> endobj 28467 0 obj <> endobj 28468 0 obj <> endobj 28469 0 obj <> endobj 28470 0 obj <> endobj 28471 0 obj <> endobj 28472 0 obj <> endobj 28473 0 obj <> endobj 28474 0 obj <> endobj 28475 0 obj <> endobj 28476 0 obj <> endobj 28477 0 obj <> endobj 28478 0 obj <> endobj 28479 0 obj <> endobj 28480 0 obj <> endobj 28481 0 obj <> endobj 28482 0 obj <> endobj 28483 0 obj <> endobj 28484 0 obj <> endobj 28485 0 obj <> endobj 28486 0 obj <> endobj 28487 0 obj <> endobj 28488 0 obj <> endobj 28489 0 obj <> endobj 28490 0 obj <> endobj 28491 0 obj <> endobj 28492 0 obj <> endobj 28493 0 obj <> endobj 28494 0 obj <> endobj 28495 0 obj <> endobj 28496 0 obj <> endobj 28497 0 obj <> endobj 28498 0 obj <> endobj 28499 0 obj <> endobj 28500 0 obj <> endobj 28501 0 obj <> endobj 28502 0 obj <> endobj 28503 0 obj <> endobj 28504 0 obj <> endobj 28505 0 obj <> endobj 28506 0 obj <> endobj 28507 0 obj <> endobj 28508 0 obj <> endobj 28509 0 obj <> endobj 28510 0 obj <> endobj 28511 0 obj <> endobj 28512 0 obj <> endobj 28513 0 obj <> endobj 28514 0 obj <> endobj 28515 0 obj <> endobj 28516 0 obj <> endobj 28517 0 obj <> endobj 28518 0 obj <> endobj 28519 0 obj <> endobj 28520 0 obj <> endobj 28521 0 obj <> endobj 28522 0 obj <> endobj 28523 0 obj <> endobj 28524 0 obj <> endobj 28525 0 obj <> endobj 28526 0 obj <> endobj 28527 0 obj <> endobj 28528 0 obj <> endobj 28529 0 obj <> endobj 28530 0 obj <> endobj 28531 0 obj <> endobj 28532 0 obj <> endobj 28533 0 obj <> endobj 28534 0 obj <> endobj 28535 0 obj <> endobj 28536 0 obj <> endobj 28537 0 obj <> endobj 28538 0 obj <> endobj 28539 0 obj <> endobj 28540 0 obj <> endobj 28541 0 obj <> endobj 28542 0 obj <> endobj 28543 0 obj <> endobj 28544 0 obj <> endobj 28545 0 obj <> endobj 28546 0 obj <> endobj 28547 0 obj <> endobj 28548 0 obj <> endobj 28549 0 obj <> endobj 28550 0 obj <> endobj 28551 0 obj <> endobj 28552 0 obj <> endobj 28553 0 obj <> endobj 28554 0 obj <> endobj 28555 0 obj <> endobj 28556 0 obj <> endobj 28557 0 obj <> endobj 28558 0 obj <> endobj 28559 0 obj <> endobj 28560 0 obj <> endobj 28561 0 obj <> endobj 28562 0 obj <> endobj 28563 0 obj <> endobj 28564 0 obj <> endobj 28565 0 obj <> endobj 28566 0 obj <> endobj 28567 0 obj <> endobj 28568 0 obj <> endobj 28569 0 obj <> endobj 28570 0 obj <> endobj 28571 0 obj <> endobj 28572 0 obj <> endobj 28573 0 obj <> endobj 28574 0 obj <> endobj 28575 0 obj <> endobj 28576 0 obj <> endobj 28577 0 obj <> endobj 28578 0 obj <> endobj 28579 0 obj <> endobj 28580 0 obj <> endobj 28581 0 obj <> endobj 28582 0 obj <> endobj 28583 0 obj <> endobj 28584 0 obj <> endobj 28585 0 obj <> endobj 28586 0 obj <> endobj 28587 0 obj <> endobj 28588 0 obj <> endobj 28589 0 obj <> endobj 28590 0 obj <> endobj 28591 0 obj <> endobj 28592 0 obj <> endobj 28593 0 obj <> endobj 28594 0 obj <> endobj 28595 0 obj <> endobj 28596 0 obj <> endobj 28597 0 obj <> endobj 28598 0 obj <> endobj 28599 0 obj <> endobj 28600 0 obj <> endobj 28601 0 obj <> endobj 28602 0 obj <> endobj 28603 0 obj <> endobj 28604 0 obj <> endobj 28605 0 obj <> endobj 28606 0 obj <> endobj 28607 0 obj <> endobj 28608 0 obj <> endobj 28609 0 obj <> endobj 28610 0 obj <> endobj 28611 0 obj <> endobj 28612 0 obj <> endobj 28613 0 obj <> endobj 28614 0 obj <> endobj 28615 0 obj <> endobj 28616 0 obj <> endobj 28617 0 obj <> endobj 28618 0 obj <> endobj 28619 0 obj <> endobj 28620 0 obj <> endobj 28621 0 obj <> endobj 28622 0 obj <> endobj 28623 0 obj <> endobj 28624 0 obj <> endobj 28625 0 obj <> endobj 28626 0 obj <> endobj 28627 0 obj <> endobj 28628 0 obj <> endobj 28629 0 obj <> endobj 28630 0 obj <> endobj 28631 0 obj <> endobj 28632 0 obj <> endobj 28633 0 obj <> endobj 28634 0 obj <> endobj 28635 0 obj <> endobj 28636 0 obj <> endobj 28637 0 obj <> endobj 28638 0 obj <> endobj 28639 0 obj <> endobj 28640 0 obj <> endobj 28641 0 obj <> endobj 28642 0 obj <> endobj 28643 0 obj <> endobj 28644 0 obj <> endobj 28645 0 obj <> endobj 28646 0 obj <> endobj 28647 0 obj <> endobj 28648 0 obj <> endobj 28649 0 obj <> endobj 28650 0 obj <> endobj 28651 0 obj <> endobj 28652 0 obj <> endobj 28653 0 obj <> endobj 28654 0 obj <> endobj 28655 0 obj <> endobj 28656 0 obj <> endobj 28657 0 obj <> endobj 28658 0 obj <> endobj 28659 0 obj <> endobj 28660 0 obj <> endobj 28661 0 obj <> endobj 28662 0 obj <> endobj 28663 0 obj <> endobj 28664 0 obj <> endobj 28665 0 obj <> endobj 28666 0 obj <> endobj 28667 0 obj <> endobj 28668 0 obj <> endobj 28669 0 obj <> endobj 28670 0 obj <> endobj 28671 0 obj <> endobj 28672 0 obj <> endobj 28673 0 obj <> endobj 28674 0 obj <> endobj 28675 0 obj <> endobj 28676 0 obj <> endobj 28677 0 obj <> endobj 28678 0 obj <> endobj 28679 0 obj <> endobj 28680 0 obj <> endobj 28681 0 obj <> endobj 28682 0 obj <> endobj 28683 0 obj <> endobj 28684 0 obj <> endobj 28685 0 obj <> endobj 28686 0 obj <> endobj 28687 0 obj <> endobj 28688 0 obj <> endobj 28689 0 obj <> endobj 28690 0 obj <> endobj 28691 0 obj <> endobj 28692 0 obj <> endobj 28693 0 obj <> endobj 28694 0 obj <> endobj 28695 0 obj <> endobj 28696 0 obj <> endobj 28697 0 obj <> endobj 28698 0 obj <> endobj 28699 0 obj <> endobj 28700 0 obj <> endobj 28701 0 obj <> endobj 28702 0 obj <> endobj 28703 0 obj <> endobj 28704 0 obj <> endobj 28705 0 obj <> endobj 28706 0 obj <> endobj 28707 0 obj <> endobj 28708 0 obj <> endobj 28709 0 obj <> endobj 28710 0 obj <> endobj 28711 0 obj <> endobj 28712 0 obj <> endobj 28713 0 obj <> endobj 28714 0 obj <> endobj 28715 0 obj <> endobj 28716 0 obj <> endobj 28717 0 obj <> endobj 28718 0 obj <> endobj 28719 0 obj <> endobj 28720 0 obj <> endobj 28721 0 obj <> endobj 28722 0 obj <> endobj 28723 0 obj <> endobj 28724 0 obj <> endobj 28725 0 obj <> endobj 28726 0 obj <> endobj 28727 0 obj <> endobj 28728 0 obj <> endobj 28729 0 obj <> endobj 28730 0 obj <> endobj 28731 0 obj <> endobj 28732 0 obj <> endobj 28733 0 obj <> endobj 28734 0 obj <> endobj 28735 0 obj <> endobj 28736 0 obj <> endobj 28737 0 obj <> endobj 28738 0 obj <> endobj 28739 0 obj <> endobj 28740 0 obj <> endobj 28741 0 obj <> endobj 28742 0 obj <> endobj 28743 0 obj <> endobj 28744 0 obj <> endobj 28745 0 obj <> endobj 28746 0 obj <> endobj 28747 0 obj <> endobj 28748 0 obj <> endobj 28749 0 obj <> endobj 28750 0 obj <> endobj 28751 0 obj <> endobj 28752 0 obj <> endobj 28753 0 obj <> endobj 28754 0 obj <> endobj 28755 0 obj <> endobj 28756 0 obj <> endobj 28757 0 obj <> endobj 28758 0 obj <> endobj 28759 0 obj <> endobj 28760 0 obj <> endobj 28761 0 obj <> endobj 28762 0 obj <> endobj 28763 0 obj <> endobj 28764 0 obj <> endobj 28765 0 obj <> endobj 28766 0 obj <> endobj 28767 0 obj <> endobj 28768 0 obj <> endobj 28769 0 obj <> endobj 28770 0 obj <> endobj 28771 0 obj <> endobj 28772 0 obj <> endobj 28773 0 obj <> endobj 28774 0 obj <> endobj 28775 0 obj <> endobj 28776 0 obj <> endobj 28777 0 obj <> endobj 28778 0 obj <> endobj 28779 0 obj <> endobj 28780 0 obj <> endobj 28781 0 obj <> endobj 28782 0 obj <> endobj 28783 0 obj <> endobj 28784 0 obj <> endobj 28785 0 obj <> endobj 28786 0 obj <> endobj 28787 0 obj <> endobj 28788 0 obj <> endobj 28789 0 obj <> endobj 28790 0 obj <> endobj 28791 0 obj <> endobj 28792 0 obj <> endobj 28793 0 obj <> endobj 28794 0 obj <> endobj 28795 0 obj <> endobj 28796 0 obj <> endobj 28797 0 obj <> endobj 28798 0 obj <> endobj 28799 0 obj <> endobj 28800 0 obj <> endobj 28801 0 obj <> endobj 28802 0 obj <> endobj 28803 0 obj <> endobj 28804 0 obj <> endobj 28805 0 obj <> endobj 28806 0 obj <> endobj 28807 0 obj <> endobj 28808 0 obj <> endobj 28809 0 obj <> endobj 28810 0 obj <> endobj 28811 0 obj <> endobj 28812 0 obj <> endobj 28813 0 obj <> endobj 28814 0 obj <> endobj 28815 0 obj <> endobj 28816 0 obj <> endobj 28817 0 obj <> endobj 28818 0 obj <> endobj 28819 0 obj <> endobj 28820 0 obj <> endobj 28821 0 obj <> endobj 28822 0 obj <> endobj 28823 0 obj <> endobj 28824 0 obj <> endobj 28825 0 obj <> endobj 28826 0 obj <> endobj 28827 0 obj <> endobj 28828 0 obj <> endobj 28829 0 obj <> endobj 28830 0 obj <> endobj 28831 0 obj <> endobj 28832 0 obj <> endobj 28833 0 obj <> endobj 28834 0 obj <> endobj 28835 0 obj <> endobj 28836 0 obj <>stream + + + + + RM0454 + Public + RM0454 + STM32G0x0 advanced Arm®-based 32-bit MCUs + Reference manual + 5 + application/pdf + + + STMICROELECTRONICS + + + + + This reference manual complements the datasheets of the STM32G0x0 microcontrollers, providing information required for application and in particular for software development. It pertains to the superset of feature sets available on STM32G0x0 microcontrollers. . + + + + + STM32G0x0 advanced Arm®-based 32-bit MCUs - Reference manual + + + 2020-11-20T18:54:14Z + C2 v4.2.0220 build 670 - c2_rendition_config : Techlit_Active + 2021-12-14T02:28:03+03:00 + 2021-12-14T02:28:03+03:00 + Acrobat Elements 15.0 (Windows); modified using iText 2.1.7 by 1T3XT + uuid:8b106eb7-64b4-4fcc-9f07-ccec63f8f9eb + uuid:648d1f54-2f2d-4487-8fd2-3601929eb632 + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 28837 0 obj <> endobj xref +0 28838 +0000000000 65535 f +0000456065 00000 n +0000456440 00000 n +0000456571 00000 n +0000456704 00000 n +0000456834 00000 n +0000456967 00000 n +0000457100 00000 n +0000457231 00000 n +0000457364 00000 n +0000457494 00000 n +0000457627 00000 n +0000457761 00000 n +0000457895 00000 n +0000458026 00000 n +0000458160 00000 n +0000458293 00000 n +0000458427 00000 n +0000458561 00000 n +0000458692 00000 n +0000458825 00000 n +0000458959 00000 n +0000459093 00000 n +0000459226 00000 n +0000459360 00000 n +0000459494 00000 n +0000459627 00000 n +0000459761 00000 n +0000459895 00000 n +0000460029 00000 n +0000460163 00000 n +0000460296 00000 n +0000460427 00000 n +0000460560 00000 n +0000460690 00000 n +0000460851 00000 n +0000464317 00000 n +0000467531 00000 n +0000467568 00000 n +0000467964 00000 n +0000468097 00000 n +0000468228 00000 n +0000468362 00000 n +0000468496 00000 n +0000468629 00000 n +0000468763 00000 n +0000468897 00000 n +0000469030 00000 n +0000469164 00000 n +0000469298 00000 n +0000469431 00000 n +0000469565 00000 n +0000469699 00000 n +0000469832 00000 n +0000469966 00000 n +0000470100 00000 n +0000470232 00000 n +0000470363 00000 n +0000470496 00000 n +0000470630 00000 n +0000470764 00000 n +0000470897 00000 n +0000471028 00000 n +0000471161 00000 n +0000471292 00000 n +0000471425 00000 n +0000471559 00000 n +0000471693 00000 n +0000471826 00000 n +0000471960 00000 n +0000472094 00000 n +0000472227 00000 n +0000472361 00000 n +0000472495 00000 n +0000472629 00000 n +0000472761 00000 n +0000472922 00000 n +0000476900 00000 n +0000480114 00000 n +0000480151 00000 n +0000480573 00000 n +0000480706 00000 n +0000480840 00000 n +0000480973 00000 n +0000481106 00000 n +0000481240 00000 n +0000481374 00000 n +0000481507 00000 n +0000481641 00000 n +0000481775 00000 n +0000481908 00000 n +0000482042 00000 n +0000482176 00000 n +0000482309 00000 n +0000482443 00000 n +0000482577 00000 n +0000482710 00000 n +0000482844 00000 n +0000482978 00000 n +0000483111 00000 n +0000483245 00000 n +0000483379 00000 n +0000483514 00000 n +0000483649 00000 n +0000483783 00000 n +0000483918 00000 n +0000484053 00000 n +0000484188 00000 n +0000484323 00000 n +0000484457 00000 n +0000484592 00000 n +0000484727 00000 n +0000484861 00000 n +0000484996 00000 n +0000485131 00000 n +0000485265 00000 n +0000485400 00000 n +0000485530 00000 n +0000485693 00000 n +0000489272 00000 n +0000492487 00000 n +0000492526 00000 n +0000492945 00000 n +0000493079 00000 n +0000493214 00000 n +0000493348 00000 n +0000493482 00000 n +0000493617 00000 n +0000493752 00000 n +0000493887 00000 n +0000494022 00000 n +0000494157 00000 n +0000494292 00000 n +0000494426 00000 n +0000494561 00000 n +0000494696 00000 n +0000494830 00000 n +0000494965 00000 n +0000495100 00000 n +0000495234 00000 n +0000495369 00000 n +0000495504 00000 n +0000495638 00000 n +0000495773 00000 n +0000495908 00000 n +0000496042 00000 n +0000496177 00000 n +0000496312 00000 n +0000496446 00000 n +0000496581 00000 n +0000496716 00000 n +0000496850 00000 n +0000496985 00000 n +0000497120 00000 n +0000497254 00000 n +0000497387 00000 n +0000497519 00000 n +0000497695 00000 n +0000501883 00000 n +0000505098 00000 n +0000505137 00000 n +0000505532 00000 n +0000505664 00000 n +0000505799 00000 n +0000505934 00000 n +0000506069 00000 n +0000506204 00000 n +0000506338 00000 n +0000506473 00000 n +0000506608 00000 n +0000506742 00000 n +0000506877 00000 n +0000507012 00000 n +0000507146 00000 n +0000507281 00000 n +0000507416 00000 n +0000507550 00000 n +0000507685 00000 n +0000507820 00000 n +0000507955 00000 n +0000508090 00000 n +0000508224 00000 n +0000508359 00000 n +0000508494 00000 n +0000508628 00000 n +0000508763 00000 n +0000508898 00000 n +0000509032 00000 n +0000509167 00000 n +0000509302 00000 n +0000509436 00000 n +0000509571 00000 n +0000509701 00000 n +0000509877 00000 n +0000513767 00000 n +0000516982 00000 n +0000517021 00000 n +0000517464 00000 n +0000517597 00000 n +0000517732 00000 n +0000517867 00000 n +0000518002 00000 n +0000518136 00000 n +0000518271 00000 n +0000518406 00000 n +0000518540 00000 n +0000518675 00000 n +0000518810 00000 n +0000518944 00000 n +0000519079 00000 n +0000519214 00000 n +0000519348 00000 n +0000519483 00000 n +0000519618 00000 n +0000519752 00000 n +0000519887 00000 n +0000520022 00000 n +0000520156 00000 n +0000520291 00000 n +0000520426 00000 n +0000520560 00000 n +0000520695 00000 n +0000520830 00000 n +0000520964 00000 n +0000521099 00000 n +0000521234 00000 n +0000521368 00000 n +0000521503 00000 n +0000521638 00000 n +0000521772 00000 n +0000521907 00000 n +0000522041 00000 n +0000522176 00000 n +0000522311 00000 n +0000522443 00000 n +0000522606 00000 n +0000525127 00000 n +0000528342 00000 n +0000528381 00000 n +0000528784 00000 n +0000528916 00000 n +0000529050 00000 n +0000529185 00000 n +0000529320 00000 n +0000529454 00000 n +0000529589 00000 n +0000529724 00000 n +0000529858 00000 n +0000529993 00000 n +0000530127 00000 n +0000530262 00000 n +0000530397 00000 n +0000530529 00000 n +0000530663 00000 n +0000530798 00000 n +0000530933 00000 n +0000531068 00000 n +0000531203 00000 n +0000531337 00000 n +0000531472 00000 n +0000531607 00000 n +0000531741 00000 n +0000531876 00000 n +0000532011 00000 n +0000532143 00000 n +0000532277 00000 n +0000532412 00000 n +0000532547 00000 n +0000532681 00000 n +0000532816 00000 n +0000532951 00000 n +0000533081 00000 n +0000533257 00000 n +0000537413 00000 n +0000540628 00000 n +0000540667 00000 n +0000541054 00000 n +0000541188 00000 n +0000541321 00000 n +0000541456 00000 n +0000541588 00000 n +0000541723 00000 n +0000541858 00000 n +0000541992 00000 n +0000542124 00000 n +0000542258 00000 n +0000542393 00000 n +0000542528 00000 n +0000542662 00000 n +0000542797 00000 n +0000542932 00000 n +0000543064 00000 n +0000543198 00000 n +0000543333 00000 n +0000543468 00000 n +0000543602 00000 n +0000543737 00000 n +0000543872 00000 n +0000544006 00000 n +0000544139 00000 n +0000544274 00000 n +0000544406 00000 n +0000544541 00000 n +0000544675 00000 n +0000544810 00000 n +0000544945 00000 n +0000545077 00000 n +0000545253 00000 n +0000548932 00000 n +0000552147 00000 n +0000552186 00000 n +0000552613 00000 n +0000552747 00000 n +0000552879 00000 n +0000553013 00000 n +0000553148 00000 n +0000553283 00000 n +0000553418 00000 n +0000553553 00000 n +0000553688 00000 n +0000553823 00000 n +0000553957 00000 n +0000554092 00000 n +0000554227 00000 n +0000554361 00000 n +0000554496 00000 n +0000554631 00000 n +0000554765 00000 n +0000554898 00000 n +0000555033 00000 n +0000555165 00000 n +0000555300 00000 n +0000555435 00000 n +0000555569 00000 n +0000555704 00000 n +0000555839 00000 n +0000555974 00000 n +0000556109 00000 n +0000556243 00000 n +0000556378 00000 n +0000556513 00000 n +0000556647 00000 n +0000556780 00000 n +0000556915 00000 n +0000557047 00000 n +0000557182 00000 n +0000557312 00000 n +0000557475 00000 n +0000561277 00000 n +0000564492 00000 n +0000564531 00000 n +0000564966 00000 n +0000565100 00000 n +0000565235 00000 n +0000565369 00000 n +0000565503 00000 n +0000565638 00000 n +0000565773 00000 n +0000565907 00000 n +0000566042 00000 n +0000566177 00000 n +0000566311 00000 n +0000566446 00000 n +0000566581 00000 n +0000566715 00000 n +0000566850 00000 n +0000566985 00000 n +0000567120 00000 n +0000567255 00000 n +0000567389 00000 n +0000567524 00000 n +0000567659 00000 n +0000567793 00000 n +0000567925 00000 n +0000568059 00000 n +0000568194 00000 n +0000568329 00000 n +0000568463 00000 n +0000568598 00000 n +0000568733 00000 n +0000568868 00000 n +0000569003 00000 n +0000569138 00000 n +0000569273 00000 n +0000569408 00000 n +0000569542 00000 n +0000569677 00000 n +0000569809 00000 n +0000569985 00000 n +0000574669 00000 n +0000577884 00000 n +0000577923 00000 n +0000578358 00000 n +0000578490 00000 n +0000578624 00000 n +0000578759 00000 n +0000578894 00000 n +0000579029 00000 n +0000579164 00000 n +0000579296 00000 n +0000579431 00000 n +0000579566 00000 n +0000579700 00000 n +0000579835 00000 n +0000579970 00000 n +0000580104 00000 n +0000580239 00000 n +0000580374 00000 n +0000580508 00000 n +0000580643 00000 n +0000580778 00000 n +0000580912 00000 n +0000581047 00000 n +0000581182 00000 n +0000581316 00000 n +0000581451 00000 n +0000581586 00000 n +0000581721 00000 n +0000581855 00000 n +0000581990 00000 n +0000582125 00000 n +0000582257 00000 n +0000582391 00000 n +0000582526 00000 n +0000582661 00000 n +0000582795 00000 n +0000582930 00000 n +0000583065 00000 n +0000583195 00000 n +0000583358 00000 n +0000587242 00000 n +0000590457 00000 n +0000590496 00000 n +0000590931 00000 n +0000591065 00000 n +0000591200 00000 n +0000591334 00000 n +0000591468 00000 n +0000591603 00000 n +0000591738 00000 n +0000591872 00000 n +0000592007 00000 n +0000592142 00000 n +0000592276 00000 n +0000592411 00000 n +0000592546 00000 n +0000592680 00000 n +0000592815 00000 n +0000592950 00000 n +0000593084 00000 n +0000593219 00000 n +0000593354 00000 n +0000593488 00000 n +0000593623 00000 n +0000593758 00000 n +0000593892 00000 n +0000594027 00000 n +0000594162 00000 n +0000594297 00000 n +0000594432 00000 n +0000594566 00000 n +0000594701 00000 n +0000594836 00000 n +0000594970 00000 n +0000595105 00000 n +0000595240 00000 n +0000595374 00000 n +0000595509 00000 n +0000595644 00000 n +0000595776 00000 n +0000595952 00000 n +0000599617 00000 n +0000602832 00000 n +0000602871 00000 n +0000603290 00000 n +0000603424 00000 n +0000603559 00000 n +0000603694 00000 n +0000603828 00000 n +0000603963 00000 n +0000604098 00000 n +0000604232 00000 n +0000604367 00000 n +0000604502 00000 n +0000604636 00000 n +0000604771 00000 n +0000604906 00000 n +0000605040 00000 n +0000605175 00000 n +0000605310 00000 n +0000605444 00000 n +0000605579 00000 n +0000605714 00000 n +0000605848 00000 n +0000605981 00000 n +0000606116 00000 n +0000606248 00000 n +0000606383 00000 n +0000606518 00000 n +0000606652 00000 n +0000606787 00000 n +0000606922 00000 n +0000607056 00000 n +0000607191 00000 n +0000607326 00000 n +0000607460 00000 n +0000607595 00000 n +0000607730 00000 n +0000607860 00000 n +0000608036 00000 n +0000611708 00000 n +0000614923 00000 n +0000614962 00000 n +0000615381 00000 n +0000615515 00000 n +0000615650 00000 n +0000615784 00000 n +0000615918 00000 n +0000616053 00000 n +0000616188 00000 n +0000616322 00000 n +0000616457 00000 n +0000616592 00000 n +0000616726 00000 n +0000616861 00000 n +0000616996 00000 n +0000617131 00000 n +0000617266 00000 n +0000617400 00000 n +0000617535 00000 n +0000617670 00000 n +0000617804 00000 n +0000617939 00000 n +0000618074 00000 n +0000618208 00000 n +0000618343 00000 n +0000618478 00000 n +0000618612 00000 n +0000618747 00000 n +0000618882 00000 n +0000619016 00000 n +0000619151 00000 n +0000619286 00000 n +0000619420 00000 n +0000619555 00000 n +0000619690 00000 n +0000619824 00000 n +0000619956 00000 n +0000620132 00000 n +0000624152 00000 n +0000627367 00000 n +0000627406 00000 n +0000627833 00000 n +0000627967 00000 n +0000628102 00000 n +0000628236 00000 n +0000628370 00000 n +0000628505 00000 n +0000628639 00000 n +0000628774 00000 n +0000628909 00000 n +0000629041 00000 n +0000629175 00000 n +0000629310 00000 n +0000629445 00000 n +0000629579 00000 n +0000629714 00000 n +0000629849 00000 n +0000629984 00000 n +0000630119 00000 n +0000630253 00000 n +0000630388 00000 n +0000630523 00000 n +0000630657 00000 n +0000630792 00000 n +0000630927 00000 n +0000631061 00000 n +0000631194 00000 n +0000631329 00000 n +0000631461 00000 n +0000631595 00000 n +0000631727 00000 n +0000631861 00000 n +0000631996 00000 n +0000632131 00000 n +0000632265 00000 n +0000632400 00000 n +0000632530 00000 n +0000632693 00000 n +0000636400 00000 n +0000639615 00000 n +0000639654 00000 n +0000640097 00000 n +0000640231 00000 n +0000640366 00000 n +0000640500 00000 n +0000640634 00000 n +0000640769 00000 n +0000640904 00000 n +0000641038 00000 n +0000641170 00000 n +0000641304 00000 n +0000641439 00000 n +0000641574 00000 n +0000641708 00000 n +0000641843 00000 n +0000641978 00000 n +0000642112 00000 n +0000642247 00000 n +0000642382 00000 n +0000642516 00000 n +0000642651 00000 n +0000642786 00000 n +0000642920 00000 n +0000643053 00000 n +0000643188 00000 n +0000643320 00000 n +0000643455 00000 n +0000643590 00000 n +0000643725 00000 n +0000643860 00000 n +0000643994 00000 n +0000644129 00000 n +0000644264 00000 n +0000644398 00000 n +0000644533 00000 n +0000644668 00000 n +0000644802 00000 n +0000644937 00000 n +0000645069 00000 n +0000645232 00000 n +0000649212 00000 n +0000652427 00000 n +0000652466 00000 n +0000652901 00000 n +0000653035 00000 n +0000653170 00000 n +0000653304 00000 n +0000653438 00000 n +0000653573 00000 n +0000653708 00000 n +0000653842 00000 n +0000653977 00000 n +0000654112 00000 n +0000654246 00000 n +0000654381 00000 n +0000654516 00000 n +0000654650 00000 n +0000654785 00000 n +0000654920 00000 n +0000655055 00000 n +0000655190 00000 n +0000655324 00000 n +0000655459 00000 n +0000655594 00000 n +0000655728 00000 n +0000655863 00000 n +0000655998 00000 n +0000656132 00000 n +0000656267 00000 n +0000656402 00000 n +0000656536 00000 n +0000656671 00000 n +0000656806 00000 n +0000656940 00000 n +0000657075 00000 n +0000657210 00000 n +0000657344 00000 n +0000657479 00000 n +0000657614 00000 n +0000657744 00000 n +0000657920 00000 n +0000662179 00000 n +0000665394 00000 n +0000665433 00000 n +0000665852 00000 n +0000665986 00000 n +0000666118 00000 n +0000666252 00000 n +0000666387 00000 n +0000666522 00000 n +0000666656 00000 n +0000666791 00000 n +0000666926 00000 n +0000667060 00000 n +0000667195 00000 n +0000667330 00000 n +0000667464 00000 n +0000667599 00000 n +0000667734 00000 n +0000667868 00000 n +0000668003 00000 n +0000668138 00000 n +0000668272 00000 n +0000668407 00000 n +0000668542 00000 n +0000668676 00000 n +0000668811 00000 n +0000668946 00000 n +0000669079 00000 n +0000669212 00000 n +0000669347 00000 n +0000669479 00000 n +0000669614 00000 n +0000669749 00000 n +0000669883 00000 n +0000670018 00000 n +0000670153 00000 n +0000670287 00000 n +0000670419 00000 n +0000670595 00000 n +0000674750 00000 n +0000677965 00000 n +0000678004 00000 n +0000678431 00000 n +0000678563 00000 n +0000678697 00000 n +0000678832 00000 n +0000678967 00000 n +0000679101 00000 n +0000679236 00000 n +0000679371 00000 n +0000679504 00000 n +0000679636 00000 n +0000679771 00000 n +0000679906 00000 n +0000680041 00000 n +0000680176 00000 n +0000680310 00000 n +0000680445 00000 n +0000680580 00000 n +0000680715 00000 n +0000680850 00000 n +0000680985 00000 n +0000681120 00000 n +0000681254 00000 n +0000681389 00000 n +0000681523 00000 n +0000681658 00000 n +0000681793 00000 n +0000681925 00000 n +0000682059 00000 n +0000682194 00000 n +0000682329 00000 n +0000682463 00000 n +0000682598 00000 n +0000682733 00000 n +0000682867 00000 n +0000683002 00000 n +0000683132 00000 n +0000683295 00000 n +0000686905 00000 n +0000690120 00000 n +0000690159 00000 n +0000690594 00000 n +0000690728 00000 n +0000690863 00000 n +0000690997 00000 n +0000691131 00000 n +0000691266 00000 n +0000691401 00000 n +0000691535 00000 n +0000691670 00000 n +0000691805 00000 n +0000691937 00000 n +0000692072 00000 n +0000692207 00000 n +0000692341 00000 n +0000692476 00000 n +0000692611 00000 n +0000692745 00000 n +0000692880 00000 n +0000693015 00000 n +0000693149 00000 n +0000693284 00000 n +0000693419 00000 n +0000693553 00000 n +0000693688 00000 n +0000693823 00000 n +0000693957 00000 n +0000694092 00000 n +0000694227 00000 n +0000694361 00000 n +0000694496 00000 n +0000694631 00000 n +0000694765 00000 n +0000694900 00000 n +0000695034 00000 n +0000695169 00000 n +0000695304 00000 n +0000695436 00000 n +0000695599 00000 n +0000699736 00000 n +0000702951 00000 n +0000702990 00000 n +0000703425 00000 n +0000703557 00000 n +0000703691 00000 n +0000703826 00000 n +0000703961 00000 n +0000704095 00000 n +0000704227 00000 n +0000704362 00000 n +0000704497 00000 n +0000704632 00000 n +0000704767 00000 n +0000704901 00000 n +0000705036 00000 n +0000705171 00000 n +0000705305 00000 n +0000705440 00000 n +0000705575 00000 n +0000705709 00000 n +0000705842 00000 n +0000705977 00000 n +0000706109 00000 n +0000706244 00000 n +0000706379 00000 n +0000706514 00000 n +0000706649 00000 n +0000706783 00000 n +0000706918 00000 n +0000707053 00000 n +0000707187 00000 n +0000707322 00000 n +0000707457 00000 n +0000707590 00000 n +0000707724 00000 n +0000707859 00000 n +0000707993 00000 n +0000708128 00000 n +0000708258 00000 n +0000708421 00000 n +0000712200 00000 n +0000715415 00000 n +0000715454 00000 n +0000715889 00000 n +0000716023 00000 n +0000716158 00000 n +0000716292 00000 n +0000716426 00000 n +0000716561 00000 n +0000716696 00000 n +0000716831 00000 n +0000716966 00000 n +0000717098 00000 n +0000717232 00000 n +0000717367 00000 n +0000717502 00000 n +0000717636 00000 n +0000717771 00000 n +0000717906 00000 n +0000718040 00000 n +0000718175 00000 n +0000718310 00000 n +0000718444 00000 n +0000718579 00000 n +0000718714 00000 n +0000718847 00000 n +0000718979 00000 n +0000719114 00000 n +0000719249 00000 n +0000719381 00000 n +0000719516 00000 n +0000719651 00000 n +0000719785 00000 n +0000719920 00000 n +0000720055 00000 n +0000720189 00000 n +0000720324 00000 n +0000720459 00000 n +0000720593 00000 n +0000720725 00000 n +0000720888 00000 n +0000724779 00000 n +0000727994 00000 n +0000728033 00000 n +0000728468 00000 n +0000728602 00000 n +0000728737 00000 n +0000728871 00000 n +0000729005 00000 n +0000729140 00000 n +0000729275 00000 n +0000729409 00000 n +0000729544 00000 n +0000729679 00000 n +0000729813 00000 n +0000729948 00000 n +0000730083 00000 n +0000730217 00000 n +0000730349 00000 n +0000730484 00000 n +0000730619 00000 n +0000730754 00000 n +0000730889 00000 n +0000731023 00000 n +0000731158 00000 n +0000731293 00000 n +0000731427 00000 n +0000731562 00000 n +0000731697 00000 n +0000731831 00000 n +0000731966 00000 n +0000732101 00000 n +0000732235 00000 n +0000732370 00000 n +0000732505 00000 n +0000732639 00000 n +0000732772 00000 n +0000732907 00000 n +0000733039 00000 n +0000733174 00000 n +0000733304 00000 n +0000733467 00000 n +0000737788 00000 n +0000741003 00000 n +0000741042 00000 n +0000741485 00000 n +0000741617 00000 n +0000741752 00000 n +0000741886 00000 n +0000742020 00000 n +0000742155 00000 n +0000742290 00000 n +0000742424 00000 n +0000742559 00000 n +0000742694 00000 n +0000742828 00000 n +0000742963 00000 n +0000743097 00000 n +0000743231 00000 n +0000743365 00000 n +0000743500 00000 n +0000743634 00000 n +0000743766 00000 n +0000743901 00000 n +0000744036 00000 n +0000744170 00000 n +0000744305 00000 n +0000744440 00000 n +0000744574 00000 n +0000744709 00000 n +0000744844 00000 n +0000744978 00000 n +0000745113 00000 n +0000745248 00000 n +0000745380 00000 n +0000745514 00000 n +0000745649 00000 n +0000745784 00000 n +0000745918 00000 n +0000746053 00000 n +0000746188 00000 n +0000746322 00000 n +0000746454 00000 n +0000746617 00000 n +0000750354 00000 n +0000753569 00000 n +0000753608 00000 n +0000754035 00000 n +0000754169 00000 n +0000754304 00000 n +0000754438 00000 n +0000754571 00000 n +0000754703 00000 n +0000754838 00000 n +0000754973 00000 n +0000755105 00000 n +0000755239 00000 n +0000755374 00000 n +0000755509 00000 n +0000755644 00000 n +0000755779 00000 n +0000755913 00000 n +0000756048 00000 n +0000756183 00000 n +0000756317 00000 n +0000756452 00000 n +0000756587 00000 n +0000756722 00000 n +0000756857 00000 n +0000756991 00000 n +0000757124 00000 n +0000757259 00000 n +0000757391 00000 n +0000757526 00000 n +0000757661 00000 n +0000757795 00000 n +0000757930 00000 n +0000758065 00000 n +0000758197 00000 n +0000758331 00000 n +0000758466 00000 n +0000758601 00000 n +0000758731 00000 n +0000758894 00000 n +0000763068 00000 n +0000766283 00000 n +0000766322 00000 n +0000766678 00000 n +0000766813 00000 n +0000766949 00000 n +0000767084 00000 n +0000767220 00000 n +0000767356 00000 n +0000767492 00000 n +0000767628 00000 n +0000767764 00000 n +0000767900 00000 n +0000768036 00000 n +0000768172 00000 n +0000768307 00000 n +0000768440 00000 n +0000768575 00000 n +0000768711 00000 n +0000768847 00000 n +0000768982 00000 n +0000769118 00000 n +0000769253 00000 n +0000769389 00000 n +0000769525 00000 n +0000769659 00000 n +0000769792 00000 n +0000769957 00000 n +0000772939 00000 n +0000776155 00000 n +0000776196 00000 n +0000776794 00000 n +0000776929 00000 n +0000777064 00000 n +0000777199 00000 n +0000777334 00000 n +0000777469 00000 n +0000777605 00000 n +0000777741 00000 n +0000777877 00000 n +0000778013 00000 n +0000778149 00000 n +0000778284 00000 n +0000778419 00000 n +0000778555 00000 n +0000778690 00000 n +0000778825 00000 n +0000778960 00000 n +0000779095 00000 n +0000779230 00000 n +0000779366 00000 n +0000779502 00000 n +0000779638 00000 n +0000779774 00000 n +0000779910 00000 n +0000780046 00000 n +0000780181 00000 n +0000780317 00000 n +0000780452 00000 n +0000780588 00000 n +0000780723 00000 n +0000780858 00000 n +0000780993 00000 n +0000781129 00000 n +0000781265 00000 n +0000781400 00000 n +0000781535 00000 n +0000781670 00000 n +0000781806 00000 n +0000781942 00000 n +0000782078 00000 n +0000782214 00000 n +0000782350 00000 n +0000782485 00000 n +0000782620 00000 n +0000782755 00000 n +0000782891 00000 n +0000783027 00000 n +0000783163 00000 n +0000783295 00000 n +0000783473 00000 n +0000789065 00000 n +0000792281 00000 n +0000792322 00000 n +0000792931 00000 n +0000793066 00000 n +0000793200 00000 n +0000793335 00000 n +0000793469 00000 n +0000793604 00000 n +0000793738 00000 n +0000793873 00000 n +0000794008 00000 n +0000794143 00000 n +0000794278 00000 n +0000794413 00000 n +0000794548 00000 n +0000794682 00000 n +0000794817 00000 n +0000794951 00000 n +0000795086 00000 n +0000795220 00000 n +0000795355 00000 n +0000795490 00000 n +0000795625 00000 n +0000795760 00000 n +0000795894 00000 n +0000796028 00000 n +0000796163 00000 n +0000796298 00000 n +0000796433 00000 n +0000796567 00000 n +0000796701 00000 n +0000796836 00000 n +0000796970 00000 n +0000797105 00000 n +0000797240 00000 n +0000797374 00000 n +0000797508 00000 n +0000797642 00000 n +0000797776 00000 n +0000797910 00000 n +0000798044 00000 n +0000798179 00000 n +0000798314 00000 n +0000798449 00000 n +0000798584 00000 n +0000798719 00000 n +0000798854 00000 n +0000798989 00000 n +0000799124 00000 n +0000799258 00000 n +0000799393 00000 n +0000799528 00000 n +0000799663 00000 n +0000799797 00000 n +0000799975 00000 n +0000805364 00000 n +0000808580 00000 n +0000808621 00000 n +0000809248 00000 n +0000809383 00000 n +0000809518 00000 n +0000809652 00000 n +0000809787 00000 n +0000809922 00000 n +0000810057 00000 n +0000810192 00000 n +0000810326 00000 n +0000810461 00000 n +0000810595 00000 n +0000810729 00000 n +0000810863 00000 n +0000810997 00000 n +0000811132 00000 n +0000811267 00000 n +0000811402 00000 n +0000811536 00000 n +0000811671 00000 n +0000811806 00000 n +0000811940 00000 n +0000812075 00000 n +0000812209 00000 n +0000812343 00000 n +0000812478 00000 n +0000812612 00000 n +0000812747 00000 n +0000812882 00000 n +0000813017 00000 n +0000813152 00000 n +0000813287 00000 n +0000813421 00000 n +0000813555 00000 n +0000813689 00000 n +0000813824 00000 n +0000813959 00000 n +0000814094 00000 n +0000814228 00000 n +0000814363 00000 n +0000814498 00000 n +0000814633 00000 n +0000814768 00000 n +0000814903 00000 n +0000815038 00000 n +0000815173 00000 n +0000815308 00000 n +0000815443 00000 n +0000815578 00000 n +0000815713 00000 n +0000815848 00000 n +0000815983 00000 n +0000816117 00000 n +0000816252 00000 n +0000816383 00000 n +0000816561 00000 n +0000822235 00000 n +0000825451 00000 n +0000825492 00000 n +0000825732 00000 n +0000825867 00000 n +0000826002 00000 n +0000826137 00000 n +0000826271 00000 n +0000826406 00000 n +0000826541 00000 n +0000826675 00000 n +0000826809 00000 n +0000826943 00000 n +0000827076 00000 n +0000827241 00000 n +0000829303 00000 n +0000832519 00000 n +0000832560 00000 n +0000833167 00000 n +0000833301 00000 n +0000833435 00000 n +0000833570 00000 n +0000833705 00000 n +0000833840 00000 n +0000833975 00000 n +0000834110 00000 n +0000834244 00000 n +0000834379 00000 n +0000834514 00000 n +0000834649 00000 n +0000834784 00000 n +0000834918 00000 n +0000835053 00000 n +0000835188 00000 n +0000835323 00000 n +0000835458 00000 n +0000835592 00000 n +0000835726 00000 n +0000835861 00000 n +0000835996 00000 n +0000836131 00000 n +0000836266 00000 n +0000836401 00000 n +0000836536 00000 n +0000836671 00000 n +0000836805 00000 n +0000836940 00000 n +0000837075 00000 n +0000837210 00000 n +0000837345 00000 n +0000837480 00000 n +0000837615 00000 n +0000837750 00000 n +0000837885 00000 n +0000838019 00000 n +0000838153 00000 n +0000838287 00000 n +0000838421 00000 n +0000838555 00000 n +0000838689 00000 n +0000838823 00000 n +0000838957 00000 n +0000839091 00000 n +0000839226 00000 n +0000839360 00000 n +0000839494 00000 n +0000839628 00000 n +0000839760 00000 n +0000839925 00000 n +0000845778 00000 n +0000848994 00000 n +0000849035 00000 n +0000849662 00000 n +0000849797 00000 n +0000849932 00000 n +0000850067 00000 n +0000850202 00000 n +0000850337 00000 n +0000850472 00000 n +0000850606 00000 n +0000850741 00000 n +0000850876 00000 n +0000851011 00000 n +0000851146 00000 n +0000851281 00000 n +0000851416 00000 n +0000851551 00000 n +0000851686 00000 n +0000851821 00000 n +0000851956 00000 n +0000852091 00000 n +0000852226 00000 n +0000852361 00000 n +0000852496 00000 n +0000852631 00000 n +0000852766 00000 n +0000852901 00000 n +0000853036 00000 n +0000853171 00000 n +0000853305 00000 n +0000853440 00000 n +0000853575 00000 n +0000853709 00000 n +0000853843 00000 n +0000853978 00000 n +0000854112 00000 n +0000854247 00000 n +0000854381 00000 n +0000854515 00000 n +0000854649 00000 n +0000854784 00000 n +0000854919 00000 n +0000855054 00000 n +0000855188 00000 n +0000855323 00000 n +0000855458 00000 n +0000855592 00000 n +0000855726 00000 n +0000855861 00000 n +0000855996 00000 n +0000856131 00000 n +0000856266 00000 n +0000856400 00000 n +0000856534 00000 n +0000856669 00000 n +0000856803 00000 n +0000856968 00000 n +0000862882 00000 n +0000866098 00000 n +0000866139 00000 n +0000866757 00000 n +0000866892 00000 n +0000867027 00000 n +0000867162 00000 n +0000867296 00000 n +0000867431 00000 n +0000867566 00000 n +0000867701 00000 n +0000867836 00000 n +0000867971 00000 n +0000868105 00000 n +0000868240 00000 n +0000868375 00000 n +0000868510 00000 n +0000868645 00000 n +0000868779 00000 n +0000868914 00000 n +0000869049 00000 n +0000869184 00000 n +0000869319 00000 n +0000869454 00000 n +0000869589 00000 n +0000869724 00000 n +0000869859 00000 n +0000869994 00000 n +0000870129 00000 n +0000870264 00000 n +0000870399 00000 n +0000870534 00000 n +0000870669 00000 n +0000870804 00000 n +0000870939 00000 n +0000871074 00000 n +0000871209 00000 n +0000871344 00000 n +0000871478 00000 n +0000871612 00000 n +0000871747 00000 n +0000871881 00000 n +0000872016 00000 n +0000872150 00000 n +0000872284 00000 n +0000872419 00000 n +0000872554 00000 n +0000872688 00000 n +0000872823 00000 n +0000872958 00000 n +0000873093 00000 n +0000873227 00000 n +0000873362 00000 n +0000873497 00000 n +0000873632 00000 n +0000873763 00000 n +0000873941 00000 n +0000879685 00000 n +0000882901 00000 n +0000882942 00000 n +0000883524 00000 n +0000883659 00000 n +0000883794 00000 n +0000883929 00000 n +0000884064 00000 n +0000884199 00000 n +0000884334 00000 n +0000884468 00000 n +0000884603 00000 n +0000884738 00000 n +0000884873 00000 n +0000885008 00000 n +0000885143 00000 n +0000885278 00000 n +0000885413 00000 n +0000885548 00000 n +0000885683 00000 n +0000885818 00000 n +0000885953 00000 n +0000886088 00000 n +0000886223 00000 n +0000886358 00000 n +0000886493 00000 n +0000886627 00000 n +0000886762 00000 n +0000886897 00000 n +0000887032 00000 n +0000887167 00000 n +0000887302 00000 n +0000887437 00000 n +0000887572 00000 n +0000887707 00000 n +0000887842 00000 n +0000887977 00000 n +0000888112 00000 n +0000888246 00000 n +0000888381 00000 n +0000888516 00000 n +0000888651 00000 n +0000888785 00000 n +0000888919 00000 n +0000889054 00000 n +0000889189 00000 n +0000889324 00000 n +0000889459 00000 n +0000889594 00000 n +0000889729 00000 n +0000889864 00000 n +0000889997 00000 n +0000890175 00000 n +0000894757 00000 n +0000897973 00000 n +0000898014 00000 n +0000898614 00000 n +0000898749 00000 n +0000898884 00000 n +0000899018 00000 n +0000899152 00000 n +0000899287 00000 n +0000899421 00000 n +0000899555 00000 n +0000899689 00000 n +0000899824 00000 n +0000899959 00000 n +0000900093 00000 n +0000900228 00000 n +0000900362 00000 n +0000900497 00000 n +0000900632 00000 n +0000900767 00000 n +0000900901 00000 n +0000901035 00000 n +0000901170 00000 n +0000901305 00000 n +0000901440 00000 n +0000901575 00000 n +0000901710 00000 n +0000901845 00000 n +0000901980 00000 n +0000902115 00000 n +0000902250 00000 n +0000902385 00000 n +0000902519 00000 n +0000902653 00000 n +0000902787 00000 n +0000902921 00000 n +0000903055 00000 n +0000903190 00000 n +0000903325 00000 n +0000903460 00000 n +0000903595 00000 n +0000903730 00000 n +0000903865 00000 n +0000904000 00000 n +0000904135 00000 n +0000904269 00000 n +0000904404 00000 n +0000904539 00000 n +0000904674 00000 n +0000904808 00000 n +0000904943 00000 n +0000905078 00000 n +0000905213 00000 n +0000905344 00000 n +0000905522 00000 n +0000911490 00000 n +0000914706 00000 n +0000914747 00000 n +0000915329 00000 n +0000915464 00000 n +0000915599 00000 n +0000915734 00000 n +0000915869 00000 n +0000916004 00000 n +0000916139 00000 n +0000916274 00000 n +0000916409 00000 n +0000916544 00000 n +0000916679 00000 n +0000916814 00000 n +0000916949 00000 n +0000917084 00000 n +0000917219 00000 n +0000917354 00000 n +0000917489 00000 n +0000917623 00000 n +0000917757 00000 n +0000917892 00000 n +0000918027 00000 n +0000918162 00000 n +0000918297 00000 n +0000918432 00000 n +0000918567 00000 n +0000918702 00000 n +0000918837 00000 n +0000918972 00000 n +0000919107 00000 n +0000919242 00000 n +0000919377 00000 n +0000919512 00000 n +0000919647 00000 n +0000919782 00000 n +0000919916 00000 n +0000920050 00000 n +0000920185 00000 n +0000920320 00000 n +0000920455 00000 n +0000920590 00000 n +0000920725 00000 n +0000920860 00000 n +0000920995 00000 n +0000921130 00000 n +0000921265 00000 n +0000921400 00000 n +0000921535 00000 n +0000921670 00000 n +0000921803 00000 n +0000921981 00000 n +0000928583 00000 n +0000931799 00000 n +0000931840 00000 n +0000932296 00000 n +0000932431 00000 n +0000932566 00000 n +0000932701 00000 n +0000932835 00000 n +0000932969 00000 n +0000933103 00000 n +0000933237 00000 n +0000933371 00000 n +0000933505 00000 n +0000933639 00000 n +0000933774 00000 n +0000933909 00000 n +0000934044 00000 n +0000934179 00000 n +0000934314 00000 n +0000934449 00000 n +0000934584 00000 n +0000934719 00000 n +0000934854 00000 n +0000934989 00000 n +0000935124 00000 n +0000935259 00000 n +0000935394 00000 n +0000935529 00000 n +0000935664 00000 n +0000935799 00000 n +0000935934 00000 n +0000936069 00000 n +0000936204 00000 n +0000936339 00000 n +0000936474 00000 n +0000936609 00000 n +0000936743 00000 n +0000936874 00000 n +0000937039 00000 n +0000941995 00000 n +0000945211 00000 n +0000945252 00000 n +0000945411 00000 n +0000945535 00000 n +0000945727 00000 n +0000950392 00000 n +0000950496 00000 n +0000974295 00000 n +0000974563 00000 n +0000974771 00000 n +0000975069 00000 n +0000978285 00000 n +0000978326 00000 n +0000981515 00000 n +0000981556 00000 n +0000981715 00000 n +0000981837 00000 n +0000982015 00000 n +0000986246 00000 n +0000989462 00000 n +0000989503 00000 n +0000989662 00000 n +0000989785 00000 n +0000989950 00000 n +0000991646 00000 n +0000994862 00000 n +0000994903 00000 n +0000995088 00000 n +0000995220 00000 n +0000995453 00000 n +0001000236 00000 n +0001003452 00000 n +0001003493 00000 n +0001006669 00000 n +0001006710 00000 n +0001006895 00000 n +0001007029 00000 n +0001007209 00000 n +0001010248 00000 n +0001013464 00000 n +0001013505 00000 n +0001013664 00000 n +0001013786 00000 n +0001013952 00000 n +0001015779 00000 n +0001018995 00000 n +0001019036 00000 n +0001019195 00000 n +0001019319 00000 n +0001019525 00000 n +0001025866 00000 n +0001029082 00000 n +0001029123 00000 n +0001032299 00000 n +0001032340 00000 n +0001032553 00000 n +0001032678 00000 n +0001032805 00000 n +0001032932 00000 n +0001033057 00000 n +0001033183 00000 n +0001033309 00000 n +0001033431 00000 n +0001033611 00000 n +0001037045 00000 n +0001040261 00000 n +0001040302 00000 n +0001040542 00000 n +0001040667 00000 n +0001040793 00000 n +0001040919 00000 n +0001041045 00000 n +0001041170 00000 n +0001041295 00000 n +0001041421 00000 n +0001041546 00000 n +0001041671 00000 n +0001041794 00000 n +0001041974 00000 n +0001046015 00000 n +0001049231 00000 n +0001049272 00000 n +0001049620 00000 n +0001049745 00000 n +0001049872 00000 n +0001049997 00000 n +0001050122 00000 n +0001050248 00000 n +0001050374 00000 n +0001050500 00000 n +0001050626 00000 n +0001050753 00000 n +0001050879 00000 n +0001051005 00000 n +0001051132 00000 n +0001051258 00000 n +0001051385 00000 n +0001051510 00000 n +0001051637 00000 n +0001051762 00000 n +0001051887 00000 n +0001052013 00000 n +0001052139 00000 n +0001052265 00000 n +0001052386 00000 n +0001052566 00000 n +0001056580 00000 n +0001059796 00000 n +0001059837 00000 n +0001060149 00000 n +0001060274 00000 n +0001060400 00000 n +0001060527 00000 n +0001060653 00000 n +0001060779 00000 n +0001060906 00000 n +0001061032 00000 n +0001061159 00000 n +0001061285 00000 n +0001061411 00000 n +0001061536 00000 n +0001061662 00000 n +0001061788 00000 n +0001061914 00000 n +0001062039 00000 n +0001062166 00000 n +0001062292 00000 n +0001062415 00000 n +0001062595 00000 n +0001066346 00000 n +0001069562 00000 n +0001069603 00000 n +0001069816 00000 n +0001069937 00000 n +0001070064 00000 n +0001070191 00000 n +0001070318 00000 n +0001070445 00000 n +0001070571 00000 n +0001070697 00000 n +0001070890 00000 n +0001075823 00000 n +0001079039 00000 n +0001079080 00000 n +0001079257 00000 n +0001079380 00000 n +0001079504 00000 n +0001079631 00000 n +0001079824 00000 n +0001085512 00000 n +0001088728 00000 n +0001088769 00000 n +0001088937 00000 n +0001089058 00000 n +0001089184 00000 n +0001089377 00000 n +0001091937 00000 n +0001095153 00000 n +0001095194 00000 n +0001095353 00000 n +0001095477 00000 n +0001095656 00000 n +0001099432 00000 n +0001102648 00000 n +0001102689 00000 n +0001102848 00000 n +0001102970 00000 n +0001103163 00000 n +0001107855 00000 n +0001111071 00000 n +0001111112 00000 n +0001111325 00000 n +0001111448 00000 n +0001111574 00000 n +0001111700 00000 n +0001111826 00000 n +0001111952 00000 n +0001112078 00000 n +0001112204 00000 n +0001112397 00000 n +0001116959 00000 n +0001120175 00000 n +0001120216 00000 n +0001120429 00000 n +0001120550 00000 n +0001120675 00000 n +0001120801 00000 n +0001120927 00000 n +0001121053 00000 n +0001121179 00000 n +0001121305 00000 n +0001121485 00000 n +0001127244 00000 n +0001130460 00000 n +0001130501 00000 n +0001130723 00000 n +0001130846 00000 n +0001130971 00000 n +0001131095 00000 n +0001131220 00000 n +0001131344 00000 n +0001131470 00000 n +0001131596 00000 n +0001131722 00000 n +0001131902 00000 n +0001138122 00000 n +0001141338 00000 n +0001141379 00000 n +0001141583 00000 n +0001141704 00000 n +0001141828 00000 n +0001141953 00000 n +0001142078 00000 n +0001142203 00000 n +0001142328 00000 n +0001142508 00000 n +0001148001 00000 n +0001151217 00000 n +0001151258 00000 n +0001151534 00000 n +0001151657 00000 n +0001151782 00000 n +0001151907 00000 n +0001152031 00000 n +0001152155 00000 n +0001152280 00000 n +0001152405 00000 n +0001152530 00000 n +0001152654 00000 n +0001152778 00000 n +0001152904 00000 n +0001153030 00000 n +0001153155 00000 n +0001153281 00000 n +0001153474 00000 n +0001157900 00000 n +0001161116 00000 n +0001161157 00000 n +0001161406 00000 n +0001161527 00000 n +0001161652 00000 n +0001161777 00000 n +0001161902 00000 n +0001162027 00000 n +0001162151 00000 n +0001162277 00000 n +0001162402 00000 n +0001162528 00000 n +0001162654 00000 n +0001162779 00000 n +0001162959 00000 n +0001168626 00000 n +0001171842 00000 n +0001171883 00000 n +0001172042 00000 n +0001172165 00000 n +0001172358 00000 n +0001178061 00000 n +0001181277 00000 n +0001181318 00000 n +0001181513 00000 n +0001181634 00000 n +0001181759 00000 n +0001181884 00000 n +0001182008 00000 n +0001182133 00000 n +0001182326 00000 n +0001187364 00000 n +0001190580 00000 n +0001190621 00000 n +0001190933 00000 n +0001191056 00000 n +0001191181 00000 n +0001191305 00000 n +0001191430 00000 n +0001191554 00000 n +0001191679 00000 n +0001191803 00000 n +0001191928 00000 n +0001192052 00000 n +0001192177 00000 n +0001192301 00000 n +0001192426 00000 n +0001192550 00000 n +0001192674 00000 n +0001192798 00000 n +0001192923 00000 n +0001193048 00000 n +0001193172 00000 n +0001193352 00000 n +0001197592 00000 n +0001200808 00000 n +0001200849 00000 n +0001201071 00000 n +0001201192 00000 n +0001201318 00000 n +0001201444 00000 n +0001201570 00000 n +0001201696 00000 n +0001201822 00000 n +0001201945 00000 n +0001202071 00000 n +0001202277 00000 n +0001207135 00000 n +0001210351 00000 n +0001210392 00000 n +0001210569 00000 n +0001210696 00000 n +0001210822 00000 n +0001210945 00000 n +0001211125 00000 n +0001215292 00000 n +0001218508 00000 n +0001218549 00000 n +0001218708 00000 n +0001218829 00000 n +0001219009 00000 n +0001222579 00000 n +0001225795 00000 n +0001225836 00000 n +0001225995 00000 n +0001226118 00000 n +0001226298 00000 n +0001229747 00000 n +0001232963 00000 n +0001233004 00000 n +0001233235 00000 n +0001233356 00000 n +0001233481 00000 n +0001233607 00000 n +0001233734 00000 n +0001233861 00000 n +0001233987 00000 n +0001234113 00000 n +0001234239 00000 n +0001234365 00000 n +0001234545 00000 n +0001239853 00000 n +0001243069 00000 n +0001243110 00000 n +0001243287 00000 n +0001243410 00000 n +0001243535 00000 n +0001243660 00000 n +0001243853 00000 n +0001249373 00000 n +0001252589 00000 n +0001252630 00000 n +0001252798 00000 n +0001252919 00000 n +0001253044 00000 n +0001253237 00000 n +0001258349 00000 n +0001261565 00000 n +0001261606 00000 n +0001261828 00000 n +0001261954 00000 n +0001262066 00000 n +0001262178 00000 n +0001262290 00000 n +0001262402 00000 n +0001262514 00000 n +0001262637 00000 n +0001262762 00000 n +0001263007 00000 n +0001268569 00000 n +0001271785 00000 n +0001271826 00000 n +0001275002 00000 n +0001275043 00000 n +0001275364 00000 n +0001275490 00000 n +0001275602 00000 n +0001275714 00000 n +0001275826 00000 n +0001275938 00000 n +0001276050 00000 n +0001276162 00000 n +0001276274 00000 n +0001276386 00000 n +0001276498 00000 n +0001276619 00000 n +0001276745 00000 n +0001276870 00000 n +0001276995 00000 n +0001277121 00000 n +0001277246 00000 n +0001277372 00000 n +0001277498 00000 n +0001277624 00000 n +0001277817 00000 n +0001283280 00000 n +0001286496 00000 n +0001286537 00000 n +0001286696 00000 n +0001286819 00000 n +0001286999 00000 n +0001291583 00000 n +0001294799 00000 n +0001294840 00000 n +0001294999 00000 n +0001295120 00000 n +0001295286 00000 n +0001298963 00000 n +0001302179 00000 n +0001302220 00000 n +0001302397 00000 n +0001302523 00000 n +0001302647 00000 n +0001302770 00000 n +0001302950 00000 n +0001306893 00000 n +0001310109 00000 n +0001310150 00000 n +0001310372 00000 n +0001310498 00000 n +0001310622 00000 n +0001310746 00000 n +0001310872 00000 n +0001310997 00000 n +0001311123 00000 n +0001311248 00000 n +0001311369 00000 n +0001311549 00000 n +0001317163 00000 n +0001320379 00000 n +0001320420 00000 n +0001320588 00000 n +0001320711 00000 n +0001320836 00000 n +0001321016 00000 n +0001326062 00000 n +0001329278 00000 n +0001329319 00000 n +0001329478 00000 n +0001329599 00000 n +0001329779 00000 n +0001333676 00000 n +0001336892 00000 n +0001336933 00000 n +0001337092 00000 n +0001337215 00000 n +0001337381 00000 n +0001340698 00000 n +0001343914 00000 n +0001343955 00000 n +0001344114 00000 n +0001344235 00000 n +0001344401 00000 n +0001348629 00000 n +0001351845 00000 n +0001351886 00000 n +0001352063 00000 n +0001352190 00000 n +0001352316 00000 n +0001352439 00000 n +0001352619 00000 n +0001356321 00000 n +0001359537 00000 n +0001359578 00000 n +0001359746 00000 n +0001359869 00000 n +0001359990 00000 n +0001360170 00000 n +0001364157 00000 n +0001367373 00000 n +0001367414 00000 n +0001367591 00000 n +0001367716 00000 n +0001367841 00000 n +0001367964 00000 n +0001368130 00000 n +0001371746 00000 n +0001374962 00000 n +0001375003 00000 n +0001375171 00000 n +0001375297 00000 n +0001375418 00000 n +0001375584 00000 n +0001378646 00000 n +0001381862 00000 n +0001381903 00000 n +0001382071 00000 n +0001382194 00000 n +0001382320 00000 n +0001382500 00000 n +0001387607 00000 n +0001390823 00000 n +0001390864 00000 n +0001391023 00000 n +0001391145 00000 n +0001391324 00000 n +0001395474 00000 n +0001398690 00000 n +0001398731 00000 n +0001398890 00000 n +0001399014 00000 n +0001399220 00000 n +0001405558 00000 n +0001408774 00000 n +0001408815 00000 n +0001411991 00000 n +0001412032 00000 n +0001412254 00000 n +0001412375 00000 n +0001412501 00000 n +0001412628 00000 n +0001412754 00000 n +0001412880 00000 n +0001413007 00000 n +0001413133 00000 n +0001413260 00000 n +0001413453 00000 n +0001418559 00000 n +0001421775 00000 n +0001421816 00000 n +0001422011 00000 n +0001422134 00000 n +0001422260 00000 n +0001422386 00000 n +0001422511 00000 n +0001422637 00000 n +0001422830 00000 n +0001429196 00000 n +0001432412 00000 n +0001432453 00000 n +0001432639 00000 n +0001432760 00000 n +0001432885 00000 n +0001433010 00000 n +0001433135 00000 n +0001433355 00000 n +0001437104 00000 n +0001440320 00000 n +0001440361 00000 n +0001443537 00000 n +0001443578 00000 n +0001443782 00000 n +0001443905 00000 n +0001444028 00000 n +0001444154 00000 n +0001444280 00000 n +0001444406 00000 n +0001444532 00000 n +0001444725 00000 n +0001450648 00000 n +0001453864 00000 n +0001453905 00000 n +0001454064 00000 n +0001454185 00000 n +0001454391 00000 n +0001456896 00000 n +0001460112 00000 n +0001460153 00000 n +0001463329 00000 n +0001463370 00000 n +0001463565 00000 n +0001463690 00000 n +0001463816 00000 n +0001463941 00000 n +0001464066 00000 n +0001464189 00000 n +0001464369 00000 n +0001468880 00000 n +0001472096 00000 n +0001472137 00000 n +0001472323 00000 n +0001472449 00000 n +0001472575 00000 n +0001472701 00000 n +0001472822 00000 n +0001472988 00000 n +0001476670 00000 n +0001479886 00000 n +0001479927 00000 n +0001480104 00000 n +0001480227 00000 n +0001480351 00000 n +0001480478 00000 n +0001480658 00000 n +0001485991 00000 n +0001489207 00000 n +0001489248 00000 n +0001489461 00000 n +0001489582 00000 n +0001489708 00000 n +0001489834 00000 n +0001489960 00000 n +0001490086 00000 n +0001490211 00000 n +0001490337 00000 n +0001490517 00000 n +0001494674 00000 n +0001497890 00000 n +0001497931 00000 n +0001498135 00000 n +0001498258 00000 n +0001498385 00000 n +0001498512 00000 n +0001498635 00000 n +0001498762 00000 n +0001498885 00000 n +0001499078 00000 n +0001504059 00000 n +0001507275 00000 n +0001507316 00000 n +0001507556 00000 n +0001507682 00000 n +0001507809 00000 n +0001507936 00000 n +0001508062 00000 n +0001508183 00000 n +0001508310 00000 n +0001508437 00000 n +0001508563 00000 n +0001508689 00000 n +0001508815 00000 n +0001508995 00000 n +0001512930 00000 n +0001516146 00000 n +0001516187 00000 n +0001516400 00000 n +0001516526 00000 n +0001516652 00000 n +0001516778 00000 n +0001516904 00000 n +0001517027 00000 n +0001517153 00000 n +0001517279 00000 n +0001517459 00000 n +0001522263 00000 n +0001525479 00000 n +0001525520 00000 n +0001525814 00000 n +0001525941 00000 n +0001526067 00000 n +0001526193 00000 n +0001526319 00000 n +0001526440 00000 n +0001526566 00000 n +0001526692 00000 n +0001526817 00000 n +0001526942 00000 n +0001527067 00000 n +0001527193 00000 n +0001527318 00000 n +0001527444 00000 n +0001527569 00000 n +0001527693 00000 n +0001527817 00000 n +0001528010 00000 n +0001533406 00000 n +0001536622 00000 n +0001536663 00000 n +0001536912 00000 n +0001537039 00000 n +0001537166 00000 n +0001537292 00000 n +0001537418 00000 n +0001537544 00000 n +0001537670 00000 n +0001537795 00000 n +0001537922 00000 n +0001538049 00000 n +0001538172 00000 n +0001538298 00000 n +0001538478 00000 n +0001542838 00000 n +0001546054 00000 n +0001546095 00000 n +0001546326 00000 n +0001546452 00000 n +0001546578 00000 n +0001546703 00000 n +0001546830 00000 n +0001546957 00000 n +0001547078 00000 n +0001547205 00000 n +0001547331 00000 n +0001547457 00000 n +0001547637 00000 n +0001552345 00000 n +0001555561 00000 n +0001555602 00000 n +0001555851 00000 n +0001555977 00000 n +0001556102 00000 n +0001556228 00000 n +0001556354 00000 n +0001556477 00000 n +0001556603 00000 n +0001556729 00000 n +0001556855 00000 n +0001556981 00000 n +0001557107 00000 n +0001557233 00000 n +0001557426 00000 n +0001562417 00000 n +0001565633 00000 n +0001565674 00000 n +0001565842 00000 n +0001565963 00000 n +0001566088 00000 n +0001566281 00000 n +0001571153 00000 n +0001574369 00000 n +0001574410 00000 n +0001574569 00000 n +0001574692 00000 n +0001574872 00000 n +0001578618 00000 n +0001581834 00000 n +0001581875 00000 n +0001582043 00000 n +0001582164 00000 n +0001582290 00000 n +0001582470 00000 n +0001586328 00000 n +0001589544 00000 n +0001589585 00000 n +0001589753 00000 n +0001589876 00000 n +0001590002 00000 n +0001590182 00000 n +0001593970 00000 n +0001597186 00000 n +0001597227 00000 n +0001597395 00000 n +0001597516 00000 n +0001597642 00000 n +0001597822 00000 n +0001601617 00000 n +0001604833 00000 n +0001604874 00000 n +0001605033 00000 n +0001605156 00000 n +0001605322 00000 n +0001609274 00000 n +0001612490 00000 n +0001612531 00000 n +0001612690 00000 n +0001612811 00000 n +0001612991 00000 n +0001617026 00000 n +0001620242 00000 n +0001620283 00000 n +0001620460 00000 n +0001620583 00000 n +0001620709 00000 n +0001620835 00000 n +0001621015 00000 n +0001624596 00000 n +0001627812 00000 n +0001627853 00000 n +0001628030 00000 n +0001628151 00000 n +0001628277 00000 n +0001628402 00000 n +0001628582 00000 n +0001632226 00000 n +0001635442 00000 n +0001635483 00000 n +0001635660 00000 n +0001635783 00000 n +0001635908 00000 n +0001636033 00000 n +0001636213 00000 n +0001640003 00000 n +0001643219 00000 n +0001643260 00000 n +0001643437 00000 n +0001643558 00000 n +0001643684 00000 n +0001643809 00000 n +0001643989 00000 n +0001647871 00000 n +0001651087 00000 n +0001651128 00000 n +0001651305 00000 n +0001651428 00000 n +0001651554 00000 n +0001651680 00000 n +0001651860 00000 n +0001655650 00000 n +0001658866 00000 n +0001658907 00000 n +0001659084 00000 n +0001659205 00000 n +0001659330 00000 n +0001659456 00000 n +0001659636 00000 n +0001663327 00000 n +0001666543 00000 n +0001666584 00000 n +0001666743 00000 n +0001666866 00000 n +0001667032 00000 n +0001670510 00000 n +0001673726 00000 n +0001673767 00000 n +0001673935 00000 n +0001674056 00000 n +0001674181 00000 n +0001674361 00000 n +0001676938 00000 n +0001680154 00000 n +0001680195 00000 n +0001680390 00000 n +0001680514 00000 n +0001680627 00000 n +0001680739 00000 n +0001680852 00000 n +0001680978 00000 n +0001681171 00000 n +0001685069 00000 n +0001688285 00000 n +0001688326 00000 n +0001688485 00000 n +0001688607 00000 n +0001688813 00000 n +0001692531 00000 n +0001695747 00000 n +0001695788 00000 n +0001698964 00000 n +0001699005 00000 n +0001699200 00000 n +0001699323 00000 n +0001699449 00000 n +0001699576 00000 n +0001699702 00000 n +0001699828 00000 n +0001700021 00000 n +0001705270 00000 n +0001708486 00000 n +0001708527 00000 n +0001708686 00000 n +0001708807 00000 n +0001708986 00000 n +0001713105 00000 n +0001716321 00000 n +0001716362 00000 n +0001716521 00000 n +0001716644 00000 n +0001716823 00000 n +0001719046 00000 n +0001722262 00000 n +0001722303 00000 n +0001722462 00000 n +0001722583 00000 n +0001722801 00000 n +0001729002 00000 n +0001732218 00000 n +0001732259 00000 n +0001735435 00000 n +0001735476 00000 n +0001735635 00000 n +0001735758 00000 n +0001735950 00000 n +0001740217 00000 n +0001743433 00000 n +0001743474 00000 n +0001743759 00000 n +0001743880 00000 n +0001744007 00000 n +0001744133 00000 n +0001744259 00000 n +0001744384 00000 n +0001744510 00000 n +0001744632 00000 n +0001744757 00000 n +0001744883 00000 n +0001745009 00000 n +0001745135 00000 n +0001745261 00000 n +0001745387 00000 n +0001745513 00000 n +0001745639 00000 n +0001745819 00000 n +0001751816 00000 n +0001755032 00000 n +0001755073 00000 n +0001755403 00000 n +0001755526 00000 n +0001755650 00000 n +0001755774 00000 n +0001755899 00000 n +0001756024 00000 n +0001756148 00000 n +0001756272 00000 n +0001756397 00000 n +0001756522 00000 n +0001756648 00000 n +0001756774 00000 n +0001756899 00000 n +0001757025 00000 n +0001757151 00000 n +0001757276 00000 n +0001757402 00000 n +0001757528 00000 n +0001757653 00000 n +0001757779 00000 n +0001757905 00000 n +0001758085 00000 n +0001764547 00000 n +0001767763 00000 n +0001767804 00000 n +0001768044 00000 n +0001768165 00000 n +0001768290 00000 n +0001768416 00000 n +0001768543 00000 n +0001768669 00000 n +0001768795 00000 n +0001768920 00000 n +0001769046 00000 n +0001769171 00000 n +0001769295 00000 n +0001769488 00000 n +0001774658 00000 n +0001777874 00000 n +0001777915 00000 n +0001778155 00000 n +0001778282 00000 n +0001778409 00000 n +0001778534 00000 n +0001778659 00000 n +0001778782 00000 n +0001778908 00000 n +0001779033 00000 n +0001779158 00000 n +0001779284 00000 n +0001779410 00000 n +0001779603 00000 n +0001785565 00000 n +0001788781 00000 n +0001788822 00000 n +0001788990 00000 n +0001789111 00000 n +0001789236 00000 n +0001789429 00000 n +0001794777 00000 n +0001797993 00000 n +0001798034 00000 n +0001798247 00000 n +0001798370 00000 n +0001798494 00000 n +0001798620 00000 n +0001798746 00000 n +0001798873 00000 n +0001798999 00000 n +0001799125 00000 n +0001799318 00000 n +0001803665 00000 n +0001806881 00000 n +0001806922 00000 n +0001807081 00000 n +0001807202 00000 n +0001807436 00000 n +0001810944 00000 n +0001814160 00000 n +0001814201 00000 n +0001817377 00000 n +0001817418 00000 n +0001820594 00000 n +0001820635 00000 n +0001820794 00000 n +0001820917 00000 n +0001821136 00000 n +0001827063 00000 n +0001830279 00000 n +0001830320 00000 n +0001833496 00000 n +0001833537 00000 n +0001833696 00000 n +0001833817 00000 n +0001833996 00000 n +0001838959 00000 n +0001842175 00000 n +0001842216 00000 n +0001842375 00000 n +0001842498 00000 n +0001842664 00000 n +0001847076 00000 n +0001850292 00000 n +0001850333 00000 n +0001850492 00000 n +0001850613 00000 n +0001850793 00000 n +0001854977 00000 n +0001858193 00000 n +0001858234 00000 n +0001858420 00000 n +0001858546 00000 n +0001858671 00000 n +0001858796 00000 n +0001858919 00000 n +0001859099 00000 n +0001863892 00000 n +0001867108 00000 n +0001867149 00000 n +0001867317 00000 n +0001867441 00000 n +0001867562 00000 n +0001867742 00000 n +0001870725 00000 n +0001873941 00000 n +0001873982 00000 n +0001874159 00000 n +0001874284 00000 n +0001874410 00000 n +0001874533 00000 n +0001874713 00000 n +0001878150 00000 n +0001881366 00000 n +0001881407 00000 n +0001881575 00000 n +0001881701 00000 n +0001881822 00000 n +0001882015 00000 n +0001886394 00000 n +0001889610 00000 n +0001889651 00000 n +0001889828 00000 n +0001889940 00000 n +0001890053 00000 n +0001890176 00000 n +0001890342 00000 n +0001893535 00000 n +0001896751 00000 n +0001896792 00000 n +0001896951 00000 n +0001897072 00000 n +0001897238 00000 n +0001900618 00000 n +0001903834 00000 n +0001903875 00000 n +0001904034 00000 n +0001904157 00000 n +0001904323 00000 n +0001907177 00000 n +0001910393 00000 n +0001910434 00000 n +0001910602 00000 n +0001910728 00000 n +0001910849 00000 n +0001911029 00000 n +0001915131 00000 n +0001918347 00000 n +0001918388 00000 n +0001918547 00000 n +0001918670 00000 n +0001918836 00000 n +0001922798 00000 n +0001926014 00000 n +0001926055 00000 n +0001926241 00000 n +0001926368 00000 n +0001926493 00000 n +0001926619 00000 n +0001926740 00000 n +0001926920 00000 n +0001930243 00000 n +0001933459 00000 n +0001933500 00000 n +0001933677 00000 n +0001933803 00000 n +0001933927 00000 n +0001934050 00000 n +0001934230 00000 n +0001937587 00000 n +0001940803 00000 n +0001940844 00000 n +0001941120 00000 n +0001941245 00000 n +0001941367 00000 n +0001941494 00000 n +0001941619 00000 n +0001941743 00000 n +0001941866 00000 n +0001941990 00000 n +0001942114 00000 n +0001942238 00000 n +0001942362 00000 n +0001942487 00000 n +0001942611 00000 n +0001942736 00000 n +0001942857 00000 n +0001943037 00000 n +0001946563 00000 n +0001949779 00000 n +0001949820 00000 n +0001950033 00000 n +0001950158 00000 n +0001950283 00000 n +0001950409 00000 n +0001950535 00000 n +0001950659 00000 n +0001950783 00000 n +0001950906 00000 n +0001951086 00000 n +0001953028 00000 n +0001956244 00000 n +0001956285 00000 n +0001956489 00000 n +0001956615 00000 n +0001956741 00000 n +0001956867 00000 n +0001956993 00000 n +0001957117 00000 n +0001957238 00000 n +0001957418 00000 n +0001960632 00000 n +0001963848 00000 n +0001963889 00000 n +0001964075 00000 n +0001964201 00000 n +0001964326 00000 n +0001964450 00000 n +0001964573 00000 n +0001964753 00000 n +0001967844 00000 n +0001971060 00000 n +0001971101 00000 n +0001971287 00000 n +0001971413 00000 n +0001971539 00000 n +0001971663 00000 n +0001971784 00000 n +0001971964 00000 n +0001975123 00000 n +0001978339 00000 n +0001978380 00000 n +0001978647 00000 n +0001978773 00000 n +0001978900 00000 n +0001979025 00000 n +0001979151 00000 n +0001979276 00000 n +0001979399 00000 n +0001979524 00000 n +0001979648 00000 n +0001979773 00000 n +0001979895 00000 n +0001980020 00000 n +0001980144 00000 n +0001980267 00000 n +0001980447 00000 n +0001984357 00000 n +0001987573 00000 n +0001987614 00000 n +0001987818 00000 n +0001987943 00000 n +0001988068 00000 n +0001988193 00000 n +0001988319 00000 n +0001988445 00000 n +0001988566 00000 n +0001988732 00000 n +0001990546 00000 n +0001993762 00000 n +0001993803 00000 n +0001994007 00000 n +0001994132 00000 n +0001994257 00000 n +0001994382 00000 n +0001994507 00000 n +0001994632 00000 n +0001994755 00000 n +0001994934 00000 n +0001997252 00000 n +0002000468 00000 n +0002000509 00000 n +0002000695 00000 n +0002000821 00000 n +0002000945 00000 n +0002001071 00000 n +0002001192 00000 n +0002001372 00000 n +0002004326 00000 n +0002007542 00000 n +0002007583 00000 n +0002007760 00000 n +0002007886 00000 n +0002008011 00000 n +0002008134 00000 n +0002008314 00000 n +0002011618 00000 n +0002014834 00000 n +0002014875 00000 n +0002015043 00000 n +0002015168 00000 n +0002015289 00000 n +0002015469 00000 n +0002018859 00000 n +0002022075 00000 n +0002022116 00000 n +0002022374 00000 n +0002022499 00000 n +0002022623 00000 n +0002022749 00000 n +0002022875 00000 n +0002022998 00000 n +0002023123 00000 n +0002023249 00000 n +0002023373 00000 n +0002023496 00000 n +0002023622 00000 n +0002023748 00000 n +0002023871 00000 n +0002024051 00000 n +0002028156 00000 n +0002031372 00000 n +0002031413 00000 n +0002031617 00000 n +0002031741 00000 n +0002031866 00000 n +0002031991 00000 n +0002032116 00000 n +0002032241 00000 n +0002032362 00000 n +0002032528 00000 n +0002034580 00000 n +0002037796 00000 n +0002037837 00000 n +0002038041 00000 n +0002038166 00000 n +0002038291 00000 n +0002038416 00000 n +0002038541 00000 n +0002038665 00000 n +0002038788 00000 n +0002038954 00000 n +0002041169 00000 n +0002044385 00000 n +0002044426 00000 n +0002044603 00000 n +0002044728 00000 n +0002044854 00000 n +0002044975 00000 n +0002045155 00000 n +0002048267 00000 n +0002051483 00000 n +0002051524 00000 n +0002051746 00000 n +0002051871 00000 n +0002051996 00000 n +0002052122 00000 n +0002052248 00000 n +0002052374 00000 n +0002052499 00000 n +0002052623 00000 n +0002052746 00000 n +0002052926 00000 n +0002057042 00000 n +0002060258 00000 n +0002060299 00000 n +0002060476 00000 n +0002060600 00000 n +0002060724 00000 n +0002060845 00000 n +0002061025 00000 n +0002063676 00000 n +0002066892 00000 n +0002066933 00000 n +0002067146 00000 n +0002067273 00000 n +0002067392 00000 n +0002067515 00000 n +0002067641 00000 n +0002067767 00000 n +0002067892 00000 n +0002068018 00000 n +0002068198 00000 n +0002072520 00000 n +0002075736 00000 n +0002075777 00000 n +0002075936 00000 n +0002076057 00000 n +0002076223 00000 n +0002080035 00000 n +0002083251 00000 n +0002083292 00000 n +0002083451 00000 n +0002083574 00000 n +0002083740 00000 n +0002088366 00000 n +0002091582 00000 n +0002091623 00000 n +0002091782 00000 n +0002091903 00000 n +0002092069 00000 n +0002095020 00000 n +0002098236 00000 n +0002098277 00000 n +0002098436 00000 n +0002098559 00000 n +0002098725 00000 n +0002103229 00000 n +0002106445 00000 n +0002106486 00000 n +0002106645 00000 n +0002106766 00000 n +0002106932 00000 n +0002110287 00000 n +0002113503 00000 n +0002113544 00000 n +0002113703 00000 n +0002113826 00000 n +0002113992 00000 n +0002117704 00000 n +0002120920 00000 n +0002120961 00000 n +0002121129 00000 n +0002121250 00000 n +0002121375 00000 n +0002121555 00000 n +0002124371 00000 n +0002127587 00000 n +0002127628 00000 n +0002127787 00000 n +0002127911 00000 n +0002128090 00000 n +0002132643 00000 n +0002135859 00000 n +0002135900 00000 n +0002136077 00000 n +0002136199 00000 n +0002136323 00000 n +0002136449 00000 n +0002136669 00000 n +0002143106 00000 n +0002146322 00000 n +0002146363 00000 n +0002149539 00000 n +0002149580 00000 n +0002149739 00000 n +0002149862 00000 n +0002150055 00000 n +0002154614 00000 n +0002157830 00000 n +0002157871 00000 n +0002158030 00000 n +0002158151 00000 n +0002158330 00000 n +0002164014 00000 n +0002167230 00000 n +0002167271 00000 n +0002167484 00000 n +0002167607 00000 n +0002167732 00000 n +0002167856 00000 n +0002167982 00000 n +0002168108 00000 n +0002168233 00000 n +0002168359 00000 n +0002168539 00000 n +0002174993 00000 n +0002178209 00000 n +0002178250 00000 n +0002178427 00000 n +0002178548 00000 n +0002178674 00000 n +0002178800 00000 n +0002179033 00000 n +0002184693 00000 n +0002187909 00000 n +0002187950 00000 n +0002191126 00000 n +0002191167 00000 n +0002191344 00000 n +0002191467 00000 n +0002191592 00000 n +0002191718 00000 n +0002191951 00000 n +0002199034 00000 n +0002202250 00000 n +0002202291 00000 n +0002205467 00000 n +0002205508 00000 n +0002205676 00000 n +0002205797 00000 n +0002205923 00000 n +0002206171 00000 n +0002213022 00000 n +0002216238 00000 n +0002216279 00000 n +0002219455 00000 n +0002219496 00000 n +0002222672 00000 n +0002222713 00000 n +0002222881 00000 n +0002223004 00000 n +0002223131 00000 n +0002223311 00000 n +0002226101 00000 n +0002229317 00000 n +0002229358 00000 n +0002229526 00000 n +0002229647 00000 n +0002229772 00000 n +0002229952 00000 n +0002234312 00000 n +0002237528 00000 n +0002237569 00000 n +0002237728 00000 n +0002237851 00000 n +0002238031 00000 n +0002242441 00000 n +0002245657 00000 n +0002245698 00000 n +0002245857 00000 n +0002245978 00000 n +0002246158 00000 n +0002250241 00000 n +0002253457 00000 n +0002253498 00000 n +0002253657 00000 n +0002253780 00000 n +0002253960 00000 n +0002258385 00000 n +0002261601 00000 n +0002261642 00000 n +0002261801 00000 n +0002261922 00000 n +0002262102 00000 n +0002266253 00000 n +0002269469 00000 n +0002269510 00000 n +0002269669 00000 n +0002269792 00000 n +0002269958 00000 n +0002273812 00000 n +0002277028 00000 n +0002277069 00000 n +0002277237 00000 n +0002277358 00000 n +0002277484 00000 n +0002277664 00000 n +0002283249 00000 n +0002286465 00000 n +0002286506 00000 n +0002286701 00000 n +0002286838 00000 n +0002286973 00000 n +0002287099 00000 n +0002287225 00000 n +0002287359 00000 n +0002287552 00000 n +0002292118 00000 n +0002295334 00000 n +0002295375 00000 n +0002295543 00000 n +0002295669 00000 n +0002295801 00000 n +0002295967 00000 n +0002299042 00000 n +0002302258 00000 n +0002302299 00000 n +0002302476 00000 n +0002302601 00000 n +0002302727 00000 n +0002302860 00000 n +0002303026 00000 n +0002307237 00000 n +0002310453 00000 n +0002310494 00000 n +0002310770 00000 n +0002310906 00000 n +0002311043 00000 n +0002311178 00000 n +0002311303 00000 n +0002311428 00000 n +0002311552 00000 n +0002311677 00000 n +0002311801 00000 n +0002311926 00000 n +0002312051 00000 n +0002312177 00000 n +0002312303 00000 n +0002312428 00000 n +0002312559 00000 n +0002312752 00000 n +0002317555 00000 n +0002320771 00000 n +0002320812 00000 n +0002321016 00000 n +0002321141 00000 n +0002321266 00000 n +0002321391 00000 n +0002321515 00000 n +0002321640 00000 n +0002321773 00000 n +0002321939 00000 n +0002324801 00000 n +0002328017 00000 n +0002328058 00000 n +0002328217 00000 n +0002328348 00000 n +0002328514 00000 n +0002333861 00000 n +0002337077 00000 n +0002337118 00000 n +0002337277 00000 n +0002337410 00000 n +0002337576 00000 n +0002341255 00000 n +0002344471 00000 n +0002344512 00000 n +0002344671 00000 n +0002344802 00000 n +0002344968 00000 n +0002348491 00000 n +0002351707 00000 n +0002351748 00000 n +0002351934 00000 n +0002352070 00000 n +0002352204 00000 n +0002352330 00000 n +0002352463 00000 n +0002352669 00000 n +0002356486 00000 n +0002356581 00000 n +0002368824 00000 n +0002369082 00000 n +0002369315 00000 n +0002369634 00000 n +0002372850 00000 n +0002372891 00000 n +0002373158 00000 n +0002373293 00000 n +0002373418 00000 n +0002373543 00000 n +0002373668 00000 n +0002373793 00000 n +0002373918 00000 n +0002374042 00000 n +0002374168 00000 n +0002374294 00000 n +0002374419 00000 n +0002374545 00000 n +0002374671 00000 n +0002374802 00000 n +0002374982 00000 n +0002379436 00000 n +0002382652 00000 n +0002382693 00000 n +0002382870 00000 n +0002382995 00000 n +0002383120 00000 n +0002383253 00000 n +0002383419 00000 n +0002387317 00000 n +0002390533 00000 n +0002390574 00000 n +0002390760 00000 n +0002390897 00000 n +0002391033 00000 n +0002391159 00000 n +0002391290 00000 n +0002391470 00000 n +0002395438 00000 n +0002398654 00000 n +0002398695 00000 n +0002398890 00000 n +0002399027 00000 n +0002399153 00000 n +0002399288 00000 n +0002399414 00000 n +0002399547 00000 n +0002399727 00000 n +0002404048 00000 n +0002407264 00000 n +0002407305 00000 n +0002407464 00000 n +0002407595 00000 n +0002407761 00000 n +0002411145 00000 n +0002414361 00000 n +0002414402 00000 n +0002414597 00000 n +0002414733 00000 n +0002414856 00000 n +0002414993 00000 n +0002415119 00000 n +0002415252 00000 n +0002415432 00000 n +0002419484 00000 n +0002422700 00000 n +0002422741 00000 n +0002422945 00000 n +0002423071 00000 n +0002423197 00000 n +0002423323 00000 n +0002423459 00000 n +0002423593 00000 n +0002423724 00000 n +0002423904 00000 n +0002428133 00000 n +0002431349 00000 n +0002431390 00000 n +0002431585 00000 n +0002431711 00000 n +0002431836 00000 n +0002431962 00000 n +0002432087 00000 n +0002432220 00000 n +0002432386 00000 n +0002436808 00000 n +0002440024 00000 n +0002440065 00000 n +0002440224 00000 n +0002440355 00000 n +0002440521 00000 n +0002444154 00000 n +0002447370 00000 n +0002447411 00000 n +0002447579 00000 n +0002447712 00000 n +0002447848 00000 n +0002448028 00000 n +0002450691 00000 n +0002453907 00000 n +0002453948 00000 n +0002454413 00000 n +0002454539 00000 n +0002454665 00000 n +0002454790 00000 n +0002454916 00000 n +0002455042 00000 n +0002455167 00000 n +0002455291 00000 n +0002455415 00000 n +0002455538 00000 n +0002455664 00000 n +0002455790 00000 n +0002455915 00000 n +0002456041 00000 n +0002456167 00000 n +0002456293 00000 n +0002456418 00000 n +0002456542 00000 n +0002456666 00000 n +0002456792 00000 n +0002456918 00000 n +0002457044 00000 n +0002457169 00000 n +0002457293 00000 n +0002457419 00000 n +0002457545 00000 n +0002457668 00000 n +0002457793 00000 n +0002457918 00000 n +0002458042 00000 n +0002458165 00000 n +0002458290 00000 n +0002458415 00000 n +0002458537 00000 n +0002458664 00000 n +0002458790 00000 n +0002458970 00000 n +0002463567 00000 n +0002466783 00000 n +0002466824 00000 n +0002467163 00000 n +0002467287 00000 n +0002467413 00000 n +0002467538 00000 n +0002467662 00000 n +0002467785 00000 n +0002467910 00000 n +0002468036 00000 n +0002468161 00000 n +0002468287 00000 n +0002468413 00000 n +0002468539 00000 n +0002468665 00000 n +0002468790 00000 n +0002468915 00000 n +0002469039 00000 n +0002469166 00000 n +0002469293 00000 n +0002469420 00000 n +0002469546 00000 n +0002469673 00000 n +0002469800 00000 n +0002469993 00000 n +0002474852 00000 n +0002478068 00000 n +0002478109 00000 n +0002478340 00000 n +0002478461 00000 n +0002478587 00000 n +0002478714 00000 n +0002478841 00000 n +0002478967 00000 n +0002479094 00000 n +0002479218 00000 n +0002479343 00000 n +0002479468 00000 n +0002479648 00000 n +0002483613 00000 n +0002486829 00000 n +0002486870 00000 n +0002487074 00000 n +0002487197 00000 n +0002487324 00000 n +0002487448 00000 n +0002487573 00000 n +0002487697 00000 n +0002487822 00000 n +0002488015 00000 n +0002492140 00000 n +0002495356 00000 n +0002495397 00000 n +0002495601 00000 n +0002495722 00000 n +0002495849 00000 n +0002495976 00000 n +0002496102 00000 n +0002496229 00000 n +0002496356 00000 n +0002496549 00000 n +0002499139 00000 n +0002502355 00000 n +0002502396 00000 n +0002502564 00000 n +0002502688 00000 n +0002502813 00000 n +0002503006 00000 n +0002507325 00000 n +0002510541 00000 n +0002510582 00000 n +0002510759 00000 n +0002510881 00000 n +0002511008 00000 n +0002511135 00000 n +0002511315 00000 n +0002513781 00000 n +0002516997 00000 n +0002517038 00000 n +0002517197 00000 n +0002517320 00000 n +0002517538 00000 n +0002522318 00000 n +0002525534 00000 n +0002525575 00000 n +0002528751 00000 n +0002528792 00000 n +0002528951 00000 n +0002529072 00000 n +0002529265 00000 n +0002535054 00000 n +0002538270 00000 n +0002538311 00000 n +0002538470 00000 n +0002538593 00000 n +0002538786 00000 n +0002544781 00000 n +0002547997 00000 n +0002548038 00000 n +0002548197 00000 n +0002548318 00000 n +0002548511 00000 n +0002553753 00000 n +0002556969 00000 n +0002557010 00000 n +0002557169 00000 n +0002557292 00000 n +0002557485 00000 n +0002563188 00000 n +0002566404 00000 n +0002566445 00000 n +0002566604 00000 n +0002566725 00000 n +0002566904 00000 n +0002571542 00000 n +0002574758 00000 n +0002574799 00000 n +0002574958 00000 n +0002575081 00000 n +0002575260 00000 n +0002580837 00000 n +0002584053 00000 n +0002584094 00000 n +0002584262 00000 n +0002584383 00000 n +0002584508 00000 n +0002584701 00000 n +0002589873 00000 n +0002593089 00000 n +0002593130 00000 n +0002593289 00000 n +0002593412 00000 n +0002593578 00000 n +0002596871 00000 n +0002600087 00000 n +0002600128 00000 n +0002600287 00000 n +0002600408 00000 n +0002600574 00000 n +0002602499 00000 n +0002605715 00000 n +0002605756 00000 n +0002605915 00000 n +0002606038 00000 n +0002606204 00000 n +0002610275 00000 n +0002613491 00000 n +0002613532 00000 n +0002613691 00000 n +0002613812 00000 n +0002613978 00000 n +0002617191 00000 n +0002620407 00000 n +0002620448 00000 n +0002620607 00000 n +0002620730 00000 n +0002620910 00000 n +0002623884 00000 n +0002627100 00000 n +0002627141 00000 n +0002627300 00000 n +0002627421 00000 n +0002627601 00000 n +0002631104 00000 n +0002634320 00000 n +0002634361 00000 n +0002634520 00000 n +0002634643 00000 n +0002634823 00000 n +0002639361 00000 n +0002642577 00000 n +0002642618 00000 n +0002642777 00000 n +0002642898 00000 n +0002643078 00000 n +0002646776 00000 n +0002649992 00000 n +0002650033 00000 n +0002650192 00000 n +0002650315 00000 n +0002650495 00000 n +0002656118 00000 n +0002659334 00000 n +0002659375 00000 n +0002659534 00000 n +0002659655 00000 n +0002659821 00000 n +0002664966 00000 n +0002668182 00000 n +0002668223 00000 n +0002668391 00000 n +0002668514 00000 n +0002668640 00000 n +0002668820 00000 n +0002671340 00000 n +0002674556 00000 n +0002674597 00000 n +0002674774 00000 n +0002674896 00000 n +0002675021 00000 n +0002675146 00000 n +0002675326 00000 n +0002678783 00000 n +0002681999 00000 n +0002682040 00000 n +0002682199 00000 n +0002682323 00000 n +0002682502 00000 n +0002685767 00000 n +0002688983 00000 n +0002689024 00000 n +0002689183 00000 n +0002689304 00000 n +0002689470 00000 n +0002692874 00000 n +0002696090 00000 n +0002696131 00000 n +0002696290 00000 n +0002696413 00000 n +0002696579 00000 n +0002698801 00000 n +0002702017 00000 n +0002702058 00000 n +0002702226 00000 n +0002702347 00000 n +0002702472 00000 n +0002702717 00000 n +0002708139 00000 n +0002711355 00000 n +0002711396 00000 n +0002714572 00000 n +0002714613 00000 n +0002714781 00000 n +0002714904 00000 n +0002715031 00000 n +0002715211 00000 n +0002719634 00000 n +0002722850 00000 n +0002722891 00000 n +0002723059 00000 n +0002723180 00000 n +0002723306 00000 n +0002723486 00000 n +0002728958 00000 n +0002732174 00000 n +0002732215 00000 n +0002732392 00000 n +0002732515 00000 n +0002732641 00000 n +0002732766 00000 n +0002733001 00000 n +0002744783 00000 n +0002747999 00000 n +0002748040 00000 n +0002751216 00000 n +0002751257 00000 n +0002754433 00000 n +0002754474 00000 n +0002754633 00000 n +0002754754 00000 n +0002754934 00000 n +0002760325 00000 n +0002763541 00000 n +0002763582 00000 n +0002763741 00000 n +0002763864 00000 n +0002764057 00000 n +0002768695 00000 n +0002771911 00000 n +0002771952 00000 n +0002772129 00000 n +0002772254 00000 n +0002772380 00000 n +0002772501 00000 n +0002772681 00000 n +0002776965 00000 n +0002780181 00000 n +0002780222 00000 n +0002780381 00000 n +0002780504 00000 n +0002780670 00000 n +0002784701 00000 n +0002787917 00000 n +0002787958 00000 n +0002788117 00000 n +0002788238 00000 n +0002788418 00000 n +0002792180 00000 n +0002795396 00000 n +0002795437 00000 n +0002795596 00000 n +0002795719 00000 n +0002795885 00000 n +0002799125 00000 n +0002802341 00000 n +0002802382 00000 n +0002802541 00000 n +0002802662 00000 n +0002802828 00000 n +0002807673 00000 n +0002810889 00000 n +0002810930 00000 n +0002811098 00000 n +0002811221 00000 n +0002811346 00000 n +0002811526 00000 n +0002814578 00000 n +0002817794 00000 n +0002817835 00000 n +0002818003 00000 n +0002818125 00000 n +0002818250 00000 n +0002818443 00000 n +0002823022 00000 n +0002826238 00000 n +0002826279 00000 n +0002826438 00000 n +0002826562 00000 n +0002826728 00000 n +0002831198 00000 n +0002834414 00000 n +0002834455 00000 n +0002834614 00000 n +0002834735 00000 n +0002834901 00000 n +0002837094 00000 n +0002840310 00000 n +0002840351 00000 n +0002840519 00000 n +0002840643 00000 n +0002840769 00000 n +0002840962 00000 n +0002845575 00000 n +0002848791 00000 n +0002848832 00000 n +0002848991 00000 n +0002849113 00000 n +0002849319 00000 n +0002854920 00000 n +0002858136 00000 n +0002858177 00000 n +0002861352 00000 n +0002861393 00000 n +0002861624 00000 n +0002861747 00000 n +0002861872 00000 n +0002861997 00000 n +0002862123 00000 n +0002862245 00000 n +0002862370 00000 n +0002862495 00000 n +0002862620 00000 n +0002862745 00000 n +0002862938 00000 n +0002868013 00000 n +0002871229 00000 n +0002871270 00000 n +0002871447 00000 n +0002871568 00000 n +0002871693 00000 n +0002871819 00000 n +0002872039 00000 n +0002884221 00000 n +0002887437 00000 n +0002887478 00000 n +0002890653 00000 n +0002890694 00000 n +0002890871 00000 n +0002890994 00000 n +0002891120 00000 n +0002891246 00000 n +0002891481 00000 n +0002899231 00000 n +0002902447 00000 n +0002902488 00000 n +0002905663 00000 n +0002905704 00000 n +0002908879 00000 n +0002908920 00000 n +0002909079 00000 n +0002909200 00000 n +0002909366 00000 n +0002912910 00000 n +0002916126 00000 n +0002916167 00000 n +0002916326 00000 n +0002916449 00000 n +0002916615 00000 n +0002921860 00000 n +0002925076 00000 n +0002925117 00000 n +0002925276 00000 n +0002925397 00000 n +0002925563 00000 n +0002930066 00000 n +0002933282 00000 n +0002933323 00000 n +0002933482 00000 n +0002933605 00000 n +0002933771 00000 n +0002937952 00000 n +0002941168 00000 n +0002941209 00000 n +0002941368 00000 n +0002941489 00000 n +0002941655 00000 n +0002945234 00000 n +0002948450 00000 n +0002948491 00000 n +0002948650 00000 n +0002948773 00000 n +0002948939 00000 n +0002953051 00000 n +0002956267 00000 n +0002956308 00000 n +0002956467 00000 n +0002956588 00000 n +0002956754 00000 n +0002960580 00000 n +0002963796 00000 n +0002963837 00000 n +0002963996 00000 n +0002964119 00000 n +0002964285 00000 n +0002969063 00000 n +0002972279 00000 n +0002972320 00000 n +0002972488 00000 n +0002972609 00000 n +0002972735 00000 n +0002972915 00000 n +0002975576 00000 n +0002978792 00000 n +0002978833 00000 n +0002978992 00000 n +0002979116 00000 n +0002979295 00000 n +0002982841 00000 n +0002986057 00000 n +0002986098 00000 n +0002986257 00000 n +0002986379 00000 n +0002986610 00000 n +0002990951 00000 n +0002994167 00000 n +0002994208 00000 n +0002997383 00000 n +0002997424 00000 n +0002997583 00000 n +0002997706 00000 n +0002997885 00000 n +0003002192 00000 n +0003005408 00000 n +0003005449 00000 n +0003005608 00000 n +0003005729 00000 n +0003005895 00000 n +0003009244 00000 n +0003012460 00000 n +0003012501 00000 n +0003012660 00000 n +0003012783 00000 n +0003012949 00000 n +0003016434 00000 n +0003019650 00000 n +0003019691 00000 n +0003019850 00000 n +0003019971 00000 n +0003020151 00000 n +0003023104 00000 n +0003026320 00000 n +0003026361 00000 n +0003026529 00000 n +0003026652 00000 n +0003026778 00000 n +0003026958 00000 n +0003030218 00000 n +0003033434 00000 n +0003033475 00000 n +0003033634 00000 n +0003033766 00000 n +0003033932 00000 n +0003036522 00000 n +0003039738 00000 n +0003039779 00000 n +0003039938 00000 n +0003040072 00000 n +0003040251 00000 n +0003044538 00000 n +0003047748 00000 n +0003047789 00000 n +0003047966 00000 n +0003048097 00000 n +0003048220 00000 n +0003048345 00000 n +0003048565 00000 n +0003056866 00000 n +0003060082 00000 n +0003060123 00000 n +0003063299 00000 n +0003063340 00000 n +0003063533 00000 n +0003063666 00000 n +0003063793 00000 n +0003063917 00000 n +0003064097 00000 n +0003069142 00000 n +0003072352 00000 n +0003072393 00000 n +0003072569 00000 n +0003072700 00000 n +0003072879 00000 n +0003079037 00000 n +0003082253 00000 n +0003082294 00000 n +0003082497 00000 n +0003082630 00000 n +0003082757 00000 n +0003082882 00000 n +0003083007 00000 n +0003083267 00000 n +0003090260 00000 n +0003093470 00000 n +0003093511 00000 n +0003096686 00000 n +0003096727 00000 n +0003099902 00000 n +0003099943 00000 n +0003100119 00000 n +0003100250 00000 n +0003100457 00000 n +0003106825 00000 n +0003110041 00000 n +0003110082 00000 n +0003113257 00000 n +0003113298 00000 n +0003113466 00000 n +0003113599 00000 n +0003113724 00000 n +0003113944 00000 n +0003119422 00000 n +0003122632 00000 n +0003122673 00000 n +0003125849 00000 n +0003125890 00000 n +0003126049 00000 n +0003126180 00000 n +0003126346 00000 n +0003129581 00000 n +0003132797 00000 n +0003132838 00000 n +0003133006 00000 n +0003133139 00000 n +0003133266 00000 n +0003133498 00000 n +0003137665 00000 n +0003140875 00000 n +0003140916 00000 n +0003144092 00000 n +0003144133 00000 n +0003144318 00000 n +0003144449 00000 n +0003144575 00000 n +0003144768 00000 n +0003149712 00000 n +0003152928 00000 n +0003152969 00000 n +0003153128 00000 n +0003153261 00000 n +0003153440 00000 n +0003158691 00000 n +0003161901 00000 n +0003161942 00000 n +0003162118 00000 n +0003162249 00000 n +0003162442 00000 n +0003166366 00000 n +0003169582 00000 n +0003169623 00000 n +0003169808 00000 n +0003169941 00000 n +0003170066 00000 n +0003170259 00000 n +0003174347 00000 n +0003177557 00000 n +0003177598 00000 n +0003177757 00000 n +0003177888 00000 n +0003178123 00000 n +0003183306 00000 n +0003186522 00000 n +0003186563 00000 n +0003189738 00000 n +0003189779 00000 n +0003192955 00000 n +0003192996 00000 n +0003193181 00000 n +0003193314 00000 n +0003193441 00000 n +0003193661 00000 n +0003198974 00000 n +0003202184 00000 n +0003202225 00000 n +0003205400 00000 n +0003205441 00000 n +0003205644 00000 n +0003205775 00000 n +0003205901 00000 n +0003206026 00000 n +0003206153 00000 n +0003206346 00000 n +0003211706 00000 n +0003214922 00000 n +0003214963 00000 n +0003215139 00000 n +0003215272 00000 n +0003215452 00000 n +0003220225 00000 n +0003223435 00000 n +0003223476 00000 n +0003223635 00000 n +0003223766 00000 n +0003224000 00000 n +0003231301 00000 n +0003234517 00000 n +0003234558 00000 n +0003237734 00000 n +0003237775 00000 n +0003240951 00000 n +0003240992 00000 n +0003241151 00000 n +0003241284 00000 n +0003241505 00000 n +0003249851 00000 n +0003253061 00000 n +0003253102 00000 n +0003256278 00000 n +0003256319 00000 n +0003259495 00000 n +0003259536 00000 n +0003259704 00000 n +0003259835 00000 n +0003259960 00000 n +0003260167 00000 n +0003266911 00000 n +0003270127 00000 n +0003270168 00000 n +0003273343 00000 n +0003273384 00000 n +0003273543 00000 n +0003273676 00000 n +0003273895 00000 n +0003281446 00000 n +0003284656 00000 n +0003284697 00000 n +0003287873 00000 n +0003287914 00000 n +0003288117 00000 n +0003288248 00000 n +0003288374 00000 n +0003288511 00000 n +0003288648 00000 n +0003288841 00000 n +0003295009 00000 n +0003298225 00000 n +0003298266 00000 n +0003298442 00000 n +0003298575 00000 n +0003298768 00000 n +0003302443 00000 n +0003305653 00000 n +0003305694 00000 n +0003305879 00000 n +0003306010 00000 n +0003306135 00000 n +0003306355 00000 n +0003312705 00000 n +0003315921 00000 n +0003315962 00000 n +0003319138 00000 n +0003319179 00000 n +0003319338 00000 n +0003319471 00000 n +0003319692 00000 n +0003326416 00000 n +0003329626 00000 n +0003329667 00000 n +0003332843 00000 n +0003332884 00000 n +0003336060 00000 n +0003336101 00000 n +0003336305 00000 n +0003336436 00000 n +0003336561 00000 n +0003336686 00000 n +0003336810 00000 n +0003336934 00000 n +0003337059 00000 n +0003337292 00000 n +0003342968 00000 n +0003346184 00000 n +0003346225 00000 n +0003349400 00000 n +0003349441 00000 n +0003349618 00000 n +0003349751 00000 n +0003349875 00000 n +0003350001 00000 n +0003350194 00000 n +0003356127 00000 n +0003359337 00000 n +0003359378 00000 n +0003359537 00000 n +0003359668 00000 n +0003359889 00000 n +0003364394 00000 n +0003367610 00000 n +0003367651 00000 n +0003370818 00000 n +0003370859 00000 n +0003374026 00000 n +0003374067 00000 n +0003374226 00000 n +0003374359 00000 n +0003374580 00000 n +0003380131 00000 n +0003383341 00000 n +0003383382 00000 n +0003386558 00000 n +0003386599 00000 n +0003389775 00000 n +0003389816 00000 n +0003390001 00000 n +0003390132 00000 n +0003390259 00000 n +0003390520 00000 n +0003395037 00000 n +0003395124 00000 n +0003399072 00000 n +0003399320 00000 n +0003399528 00000 n +0003399827 00000 n +0003403043 00000 n +0003403084 00000 n +0003406259 00000 n +0003406300 00000 n +0003406468 00000 n +0003406601 00000 n +0003406724 00000 n +0003406957 00000 n +0003411746 00000 n +0003414956 00000 n +0003414997 00000 n +0003418172 00000 n +0003418213 00000 n +0003418398 00000 n +0003418529 00000 n +0003418655 00000 n +0003418848 00000 n +0003424131 00000 n +0003427347 00000 n +0003427388 00000 n +0003427556 00000 n +0003427689 00000 n +0003427809 00000 n +0003428029 00000 n +0003434121 00000 n +0003437331 00000 n +0003437372 00000 n +0003440547 00000 n +0003440588 00000 n +0003440764 00000 n +0003440895 00000 n +0003441142 00000 n +0003446418 00000 n +0003449634 00000 n +0003449675 00000 n +0003452851 00000 n +0003452892 00000 n +0003453086 00000 n +0003453219 00000 n +0003453345 00000 n +0003453472 00000 n +0003453679 00000 n +0003459719 00000 n +0003462929 00000 n +0003462970 00000 n +0003463129 00000 n +0003463260 00000 n +0003463479 00000 n +0003468322 00000 n +0003471538 00000 n +0003471579 00000 n +0003474755 00000 n +0003474796 00000 n +0003474955 00000 n +0003475088 00000 n +0003475254 00000 n +0003476948 00000 n +0003480158 00000 n +0003480199 00000 n +0003480367 00000 n +0003480498 00000 n +0003480632 00000 n +0003480812 00000 n +0003485644 00000 n +0003488860 00000 n +0003488901 00000 n +0003489060 00000 n +0003489193 00000 n +0003489359 00000 n +0003493283 00000 n +0003496493 00000 n +0003496534 00000 n +0003496693 00000 n +0003496824 00000 n +0003497004 00000 n +0003500821 00000 n +0003504037 00000 n +0003504078 00000 n +0003504237 00000 n +0003504370 00000 n +0003504550 00000 n +0003507273 00000 n +0003510483 00000 n +0003510524 00000 n +0003510683 00000 n +0003510814 00000 n +0003510994 00000 n +0003516168 00000 n +0003519384 00000 n +0003519425 00000 n +0003519584 00000 n +0003519717 00000 n +0003519897 00000 n +0003524552 00000 n +0003527762 00000 n +0003527803 00000 n +0003527962 00000 n +0003528093 00000 n +0003528286 00000 n +0003532798 00000 n +0003536014 00000 n +0003536055 00000 n +0003536214 00000 n +0003536347 00000 n +0003536527 00000 n +0003540418 00000 n +0003543628 00000 n +0003543669 00000 n +0003543864 00000 n +0003543991 00000 n +0003544118 00000 n +0003544243 00000 n +0003544368 00000 n +0003544499 00000 n +0003544692 00000 n +0003547883 00000 n +0003551099 00000 n +0003551140 00000 n +0003551326 00000 n +0003551452 00000 n +0003551577 00000 n +0003551703 00000 n +0003551836 00000 n +0003552016 00000 n +0003555291 00000 n +0003558501 00000 n +0003558542 00000 n +0003558701 00000 n +0003558832 00000 n +0003559025 00000 n +0003563414 00000 n +0003566630 00000 n +0003566671 00000 n +0003566830 00000 n +0003566963 00000 n +0003567143 00000 n +0003570765 00000 n +0003573975 00000 n +0003574016 00000 n +0003574175 00000 n +0003574306 00000 n +0003574499 00000 n +0003577803 00000 n +0003581019 00000 n +0003581060 00000 n +0003581291 00000 n +0003581417 00000 n +0003581543 00000 n +0003581669 00000 n +0003581795 00000 n +0003581921 00000 n +0003582047 00000 n +0003582173 00000 n +0003582299 00000 n +0003582432 00000 n +0003582612 00000 n +0003585546 00000 n +0003588756 00000 n +0003588797 00000 n +0003588973 00000 n +0003589104 00000 n +0003589284 00000 n +0003593211 00000 n +0003596427 00000 n +0003596468 00000 n +0003596644 00000 n +0003596777 00000 n +0003596957 00000 n +0003600889 00000 n +0003604099 00000 n +0003604140 00000 n +0003604299 00000 n +0003604430 00000 n +0003604610 00000 n +0003607098 00000 n +0003610314 00000 n +0003610355 00000 n +0003610568 00000 n +0003610693 00000 n +0003610819 00000 n +0003610945 00000 n +0003611071 00000 n +0003611197 00000 n +0003611323 00000 n +0003611456 00000 n +0003611636 00000 n +0003615665 00000 n +0003618875 00000 n +0003618916 00000 n +0003619075 00000 n +0003619206 00000 n +0003619386 00000 n +0003623292 00000 n +0003626508 00000 n +0003626549 00000 n +0003626708 00000 n +0003626841 00000 n +0003627021 00000 n +0003631198 00000 n +0003634408 00000 n +0003634449 00000 n +0003634608 00000 n +0003634739 00000 n +0003634932 00000 n +0003638298 00000 n +0003641514 00000 n +0003641555 00000 n +0003641714 00000 n +0003641847 00000 n +0003642013 00000 n +0003647613 00000 n +0003650823 00000 n +0003650864 00000 n +0003651032 00000 n +0003651163 00000 n +0003651299 00000 n +0003651479 00000 n +0003655216 00000 n +0003658432 00000 n +0003658473 00000 n +0003658641 00000 n +0003658775 00000 n +0003658900 00000 n +0003659080 00000 n +0003661948 00000 n +0003665164 00000 n +0003665205 00000 n +0003665364 00000 n +0003665496 00000 n +0003665675 00000 n +0003668957 00000 n +0003672173 00000 n +0003672214 00000 n +0003672391 00000 n +0003672524 00000 n +0003672661 00000 n +0003672798 00000 n +0003673031 00000 n +0003682090 00000 n +0003685306 00000 n +0003685347 00000 n +0003688523 00000 n +0003688564 00000 n +0003688741 00000 n +0003688872 00000 n +0003688997 00000 n +0003689122 00000 n +0003689315 00000 n +0003693957 00000 n +0003697173 00000 n +0003697214 00000 n +0003697373 00000 n +0003697506 00000 n +0003697727 00000 n +0003701968 00000 n +0003705184 00000 n +0003705225 00000 n +0003708400 00000 n +0003708441 00000 n +0003711616 00000 n +0003711657 00000 n +0003711816 00000 n +0003711947 00000 n +0003712126 00000 n +0003716293 00000 n +0003719509 00000 n +0003719550 00000 n +0003719709 00000 n +0003719842 00000 n +0003720063 00000 n +0003723675 00000 n +0003726891 00000 n +0003726932 00000 n +0003730107 00000 n +0003730148 00000 n +0003733323 00000 n +0003733364 00000 n +0003733523 00000 n +0003733654 00000 n +0003733875 00000 n +0003736952 00000 n +0003740168 00000 n +0003740209 00000 n +0003743384 00000 n +0003743425 00000 n +0003746600 00000 n +0003746641 00000 n +0003746800 00000 n +0003746933 00000 n +0003747166 00000 n +0003751775 00000 n +0003754991 00000 n +0003755032 00000 n +0003758207 00000 n +0003758248 00000 n +0003761423 00000 n +0003761464 00000 n +0003761623 00000 n +0003761754 00000 n +0003761933 00000 n +0003766434 00000 n +0003769650 00000 n +0003769691 00000 n +0003769850 00000 n +0003769983 00000 n +0003770204 00000 n +0003773936 00000 n +0003777152 00000 n +0003777193 00000 n +0003780368 00000 n +0003780409 00000 n +0003783584 00000 n +0003783625 00000 n +0003783784 00000 n +0003783915 00000 n +0003784136 00000 n +0003787215 00000 n +0003790431 00000 n +0003790472 00000 n +0003793647 00000 n +0003793688 00000 n +0003796863 00000 n +0003796904 00000 n +0003797063 00000 n +0003797196 00000 n +0003797402 00000 n +0003803257 00000 n +0003806473 00000 n +0003806514 00000 n +0003809689 00000 n +0003809730 00000 n +0003809898 00000 n +0003810029 00000 n +0003810154 00000 n +0003810387 00000 n +0003814910 00000 n +0003818126 00000 n +0003818167 00000 n +0003821342 00000 n +0003821383 00000 n +0003821542 00000 n +0003821675 00000 n +0003821896 00000 n +0003825331 00000 n +0003828547 00000 n +0003828588 00000 n +0003831763 00000 n +0003831804 00000 n +0003834979 00000 n +0003835020 00000 n +0003835179 00000 n +0003835310 00000 n +0003835531 00000 n +0003839295 00000 n +0003842511 00000 n +0003842552 00000 n +0003845727 00000 n +0003845768 00000 n +0003848943 00000 n +0003848984 00000 n +0003849161 00000 n +0003849294 00000 n +0003849417 00000 n +0003849539 00000 n +0003849772 00000 n +0003855715 00000 n +0003858931 00000 n +0003858972 00000 n +0003862147 00000 n +0003862188 00000 n +0003862347 00000 n +0003862478 00000 n +0003862696 00000 n +0003867699 00000 n +0003870915 00000 n +0003870956 00000 n +0003874132 00000 n +0003874173 00000 n +0003874368 00000 n +0003874501 00000 n +0003874626 00000 n +0003874751 00000 n +0003874876 00000 n +0003875001 00000 n +0003875249 00000 n +0003879451 00000 n +0003882667 00000 n +0003882708 00000 n +0003885883 00000 n +0003885924 00000 n +0003889100 00000 n +0003889141 00000 n +0003889309 00000 n +0003889440 00000 n +0003889564 00000 n +0003889797 00000 n +0003894051 00000 n +0003897267 00000 n +0003897308 00000 n +0003900483 00000 n +0003900524 00000 n +0003900700 00000 n +0003900833 00000 n +0003901053 00000 n +0003906393 00000 n +0003909609 00000 n +0003909650 00000 n +0003912826 00000 n +0003912867 00000 n +0003913044 00000 n +0003913175 00000 n +0003913298 00000 n +0003913424 00000 n +0003913659 00000 n +0003918381 00000 n +0003921597 00000 n +0003921638 00000 n +0003924813 00000 n +0003924854 00000 n +0003928030 00000 n +0003928071 00000 n +0003928247 00000 n +0003928380 00000 n +0003928586 00000 n +0003932228 00000 n +0003935444 00000 n +0003935485 00000 n +0003938661 00000 n +0003938702 00000 n +0003938879 00000 n +0003939010 00000 n +0003939134 00000 n +0003939259 00000 n +0003939494 00000 n +0003947145 00000 n +0003950361 00000 n +0003950402 00000 n +0003953578 00000 n +0003953619 00000 n +0003956795 00000 n +0003956836 00000 n +0003956995 00000 n +0003957128 00000 n +0003957349 00000 n +0003962706 00000 n +0003965922 00000 n +0003965963 00000 n +0003969138 00000 n +0003969179 00000 n +0003972354 00000 n +0003972395 00000 n +0003972571 00000 n +0003972702 00000 n +0003972908 00000 n +0003979431 00000 n +0003982647 00000 n +0003982688 00000 n +0003985863 00000 n +0003985904 00000 n +0003986080 00000 n +0003986213 00000 n +0003986406 00000 n +0003991202 00000 n +0003994418 00000 n +0003994459 00000 n +0003994635 00000 n +0003994766 00000 n +0003994947 00000 n +0004012473 00000 n +0004015689 00000 n +0004015730 00000 n +0004018903 00000 n +0004018944 00000 n +0004019129 00000 n +0004019262 00000 n +0004019386 00000 n +0004019579 00000 n +0004024805 00000 n +0004028021 00000 n +0004028062 00000 n +0004028221 00000 n +0004028352 00000 n +0004028558 00000 n +0004033265 00000 n +0004036481 00000 n +0004036522 00000 n +0004039697 00000 n +0004039738 00000 n +0004039924 00000 n +0004040057 00000 n +0004040184 00000 n +0004040311 00000 n +0004040438 00000 n +0004040671 00000 n +0004045253 00000 n +0004048469 00000 n +0004048510 00000 n +0004051685 00000 n +0004051726 00000 n +0004051903 00000 n +0004052034 00000 n +0004052160 00000 n +0004052285 00000 n +0004052518 00000 n +0004056381 00000 n +0004059597 00000 n +0004059638 00000 n +0004062812 00000 n +0004062853 00000 n +0004063038 00000 n +0004063171 00000 n +0004063296 00000 n +0004063489 00000 n +0004068683 00000 n +0004071899 00000 n +0004071940 00000 n +0004072125 00000 n +0004072256 00000 n +0004072381 00000 n +0004072603 00000 n +0004077323 00000 n +0004080539 00000 n +0004080580 00000 n +0004083755 00000 n +0004083796 00000 n +0004083955 00000 n +0004084088 00000 n +0004084296 00000 n +0004087805 00000 n +0004091021 00000 n +0004091062 00000 n +0004094237 00000 n +0004094278 00000 n +0004094464 00000 n +0004094595 00000 n +0004094719 00000 n +0004094845 00000 n +0004094971 00000 n +0004095193 00000 n +0004100908 00000 n +0004104124 00000 n +0004104165 00000 n +0004107340 00000 n +0004107381 00000 n +0004107540 00000 n +0004107673 00000 n +0004107910 00000 n +0004111861 00000 n +0004115077 00000 n +0004115118 00000 n +0004118293 00000 n +0004118334 00000 n +0004121509 00000 n +0004121550 00000 n +0004121744 00000 n +0004121875 00000 n +0004122001 00000 n +0004122127 00000 n +0004122349 00000 n +0004127410 00000 n +0004130626 00000 n +0004130667 00000 n +0004133842 00000 n +0004133883 00000 n +0004134069 00000 n +0004134202 00000 n +0004134324 00000 n +0004134448 00000 n +0004134573 00000 n +0004134767 00000 n +0004140963 00000 n +0004144179 00000 n +0004144220 00000 n +0004144396 00000 n +0004144527 00000 n +0004144762 00000 n +0004151348 00000 n +0004154564 00000 n +0004154605 00000 n +0004157781 00000 n +0004157822 00000 n +0004158016 00000 n +0004158149 00000 n +0004158274 00000 n +0004158398 00000 n +0004158592 00000 n +0004163181 00000 n +0004166397 00000 n +0004166438 00000 n +0004166597 00000 n +0004166728 00000 n +0004166936 00000 n +0004169627 00000 n +0004172843 00000 n +0004172884 00000 n +0004176059 00000 n +0004176100 00000 n +0004176294 00000 n +0004176427 00000 n +0004176552 00000 n +0004176679 00000 n +0004176901 00000 n +0004181178 00000 n +0004184394 00000 n +0004184435 00000 n +0004187610 00000 n +0004187651 00000 n +0004187828 00000 n +0004187959 00000 n +0004188086 00000 n +0004188210 00000 n +0004188445 00000 n +0004195014 00000 n +0004198230 00000 n +0004198271 00000 n +0004201446 00000 n +0004201487 00000 n +0004201646 00000 n +0004201779 00000 n +0004202000 00000 n +0004208012 00000 n +0004211228 00000 n +0004211269 00000 n +0004214445 00000 n +0004214486 00000 n +0004214671 00000 n +0004214802 00000 n +0004214929 00000 n +0004215151 00000 n +0004219650 00000 n +0004222866 00000 n +0004222907 00000 n +0004226082 00000 n +0004226123 00000 n +0004226291 00000 n +0004226424 00000 n +0004226546 00000 n +0004226743 00000 n +0004254546 00000 n +0004257762 00000 n +0004257803 00000 n +0004260976 00000 n +0004261017 00000 n +0004261193 00000 n +0004261324 00000 n +0004261545 00000 n +0004266820 00000 n +0004270036 00000 n +0004270077 00000 n +0004273252 00000 n +0004273293 00000 n +0004273478 00000 n +0004273611 00000 n +0004273734 00000 n +0004273928 00000 n +0004280680 00000 n +0004283896 00000 n +0004283937 00000 n +0004284122 00000 n +0004284253 00000 n +0004284379 00000 n +0004284601 00000 n +0004290582 00000 n +0004293798 00000 n +0004293839 00000 n +0004297014 00000 n +0004297055 00000 n +0004297223 00000 n +0004297356 00000 n +0004297480 00000 n +0004297715 00000 n +0004303069 00000 n +0004306285 00000 n +0004306326 00000 n +0004309501 00000 n +0004309542 00000 n +0004309710 00000 n +0004309841 00000 n +0004309967 00000 n +0004310189 00000 n +0004316046 00000 n +0004319262 00000 n +0004319303 00000 n +0004322478 00000 n +0004322519 00000 n +0004322714 00000 n +0004322847 00000 n +0004322973 00000 n +0004323095 00000 n +0004323220 00000 n +0004323346 00000 n +0004323568 00000 n +0004328975 00000 n +0004332191 00000 n +0004332232 00000 n +0004335407 00000 n +0004335448 00000 n +0004335616 00000 n +0004335747 00000 n +0004335869 00000 n +0004336063 00000 n +0004339779 00000 n +0004342995 00000 n +0004343036 00000 n +0004343195 00000 n +0004343328 00000 n +0004343536 00000 n +0004348602 00000 n +0004351818 00000 n +0004351859 00000 n +0004355034 00000 n +0004355075 00000 n +0004355243 00000 n +0004355374 00000 n +0004355510 00000 n +0004355745 00000 n +0004361329 00000 n +0004364545 00000 n +0004364586 00000 n +0004367761 00000 n +0004367802 00000 n +0004367961 00000 n +0004368094 00000 n +0004368315 00000 n +0004373600 00000 n +0004376816 00000 n +0004376857 00000 n +0004380032 00000 n +0004380073 00000 n +0004380232 00000 n +0004380363 00000 n +0004380584 00000 n +0004384602 00000 n +0004387818 00000 n +0004387859 00000 n +0004391034 00000 n +0004391075 00000 n +0004391251 00000 n +0004391384 00000 n +0004391606 00000 n +0004396198 00000 n +0004399414 00000 n +0004399455 00000 n +0004402630 00000 n +0004402671 00000 n +0004402856 00000 n +0004402987 00000 n +0004403112 00000 n +0004403293 00000 n +0004408469 00000 n +0004411685 00000 n +0004411726 00000 n +0004411902 00000 n +0004412035 00000 n +0004412229 00000 n +0004416793 00000 n +0004420009 00000 n +0004420050 00000 n +0004420209 00000 n +0004420340 00000 n +0004420534 00000 n +0004425397 00000 n +0004428613 00000 n +0004428654 00000 n +0004428813 00000 n +0004428946 00000 n +0004429140 00000 n +0004433668 00000 n +0004436884 00000 n +0004436925 00000 n +0004437084 00000 n +0004437215 00000 n +0004437396 00000 n +0004442085 00000 n +0004445301 00000 n +0004445342 00000 n +0004445501 00000 n +0004445634 00000 n +0004445828 00000 n +0004450801 00000 n +0004454017 00000 n +0004454058 00000 n +0004454217 00000 n +0004454348 00000 n +0004454542 00000 n +0004459238 00000 n +0004462454 00000 n +0004462495 00000 n +0004462663 00000 n +0004462789 00000 n +0004462922 00000 n +0004463116 00000 n +0004468334 00000 n +0004471550 00000 n +0004471591 00000 n +0004471750 00000 n +0004471881 00000 n +0004472075 00000 n +0004477441 00000 n +0004480657 00000 n +0004480698 00000 n +0004480857 00000 n +0004480990 00000 n +0004481170 00000 n +0004483611 00000 n +0004486827 00000 n +0004486868 00000 n +0004487027 00000 n +0004487158 00000 n +0004487338 00000 n +0004490872 00000 n +0004494088 00000 n +0004494129 00000 n +0004494288 00000 n +0004494421 00000 n +0004494601 00000 n +0004499622 00000 n +0004502838 00000 n +0004502879 00000 n +0004503056 00000 n +0004503182 00000 n +0004503307 00000 n +0004503438 00000 n +0004503632 00000 n +0004508123 00000 n +0004511339 00000 n +0004511380 00000 n +0004511539 00000 n +0004511672 00000 n +0004511852 00000 n +0004516915 00000 n +0004520131 00000 n +0004520172 00000 n +0004520331 00000 n +0004520462 00000 n +0004520656 00000 n +0004525592 00000 n +0004528808 00000 n +0004528849 00000 n +0004529008 00000 n +0004529141 00000 n +0004529322 00000 n +0004533803 00000 n +0004537019 00000 n +0004537060 00000 n +0004537219 00000 n +0004537350 00000 n +0004537531 00000 n +0004543493 00000 n +0004546709 00000 n +0004546750 00000 n +0004546909 00000 n +0004547042 00000 n +0004547236 00000 n +0004553428 00000 n +0004556644 00000 n +0004556685 00000 n +0004556844 00000 n +0004556975 00000 n +0004557169 00000 n +0004561782 00000 n +0004564998 00000 n +0004565039 00000 n +0004565198 00000 n +0004565331 00000 n +0004565525 00000 n +0004568523 00000 n +0004571739 00000 n +0004571780 00000 n +0004571939 00000 n +0004572070 00000 n +0004572250 00000 n +0004575152 00000 n +0004578368 00000 n +0004578409 00000 n +0004578568 00000 n +0004578701 00000 n +0004578882 00000 n +0004584023 00000 n +0004587239 00000 n +0004587280 00000 n +0004587465 00000 n +0004587590 00000 n +0004587721 00000 n +0004587915 00000 n +0004592936 00000 n +0004596152 00000 n +0004596193 00000 n +0004596361 00000 n +0004596486 00000 n +0004596619 00000 n +0004596800 00000 n +0004600820 00000 n +0004604036 00000 n +0004604077 00000 n +0004604236 00000 n +0004604367 00000 n +0004604547 00000 n +0004608770 00000 n +0004611986 00000 n +0004612027 00000 n +0004612186 00000 n +0004612319 00000 n +0004612499 00000 n +0004616615 00000 n +0004619831 00000 n +0004619872 00000 n +0004620048 00000 n +0004620179 00000 n +0004620373 00000 n +0004625014 00000 n +0004628230 00000 n +0004628271 00000 n +0004628430 00000 n +0004628563 00000 n +0004628757 00000 n +0004631937 00000 n +0004635153 00000 n +0004635194 00000 n +0004635353 00000 n +0004635484 00000 n +0004635678 00000 n +0004639160 00000 n +0004642376 00000 n +0004642417 00000 n +0004642621 00000 n +0004642745 00000 n +0004642871 00000 n +0004642996 00000 n +0004643120 00000 n +0004643245 00000 n +0004643378 00000 n +0004643572 00000 n +0004648429 00000 n +0004651645 00000 n +0004651686 00000 n +0004651863 00000 n +0004651987 00000 n +0004652113 00000 n +0004652244 00000 n +0004652438 00000 n +0004658691 00000 n +0004661907 00000 n +0004661948 00000 n +0004662107 00000 n +0004662240 00000 n +0004662420 00000 n +0004667106 00000 n +0004670322 00000 n +0004670363 00000 n +0004670522 00000 n +0004670653 00000 n +0004670833 00000 n +0004674818 00000 n +0004678034 00000 n +0004678075 00000 n +0004678234 00000 n +0004678367 00000 n +0004678548 00000 n +0004682276 00000 n +0004685492 00000 n +0004685533 00000 n +0004685692 00000 n +0004685823 00000 n +0004686017 00000 n +0004690551 00000 n +0004693767 00000 n +0004693808 00000 n +0004694024 00000 n +0004694157 00000 n +0004694351 00000 n +0004698520 00000 n +0004701736 00000 n +0004701777 00000 n +0004701936 00000 n +0004702067 00000 n +0004702234 00000 n +0004704659 00000 n +0004707875 00000 n +0004707916 00000 n +0004708075 00000 n +0004708208 00000 n +0004708375 00000 n +0004713646 00000 n +0004716862 00000 n +0004716903 00000 n +0004717062 00000 n +0004717193 00000 n +0004717360 00000 n +0004722187 00000 n +0004725403 00000 n +0004725444 00000 n +0004725612 00000 n +0004725745 00000 n +0004725881 00000 n +0004726062 00000 n +0004729135 00000 n +0004732351 00000 n +0004732392 00000 n +0004732560 00000 n +0004732692 00000 n +0004732817 00000 n +0004733011 00000 n +0004737223 00000 n +0004740439 00000 n +0004740480 00000 n +0004740639 00000 n +0004740773 00000 n +0004740981 00000 n +0004747891 00000 n +0004751107 00000 n +0004751148 00000 n +0004754315 00000 n +0004754356 00000 n +0004754533 00000 n +0004754664 00000 n +0004754787 00000 n +0004754913 00000 n +0004755107 00000 n +0004759714 00000 n +0004762930 00000 n +0004762971 00000 n +0004763130 00000 n +0004763263 00000 n +0004763487 00000 n +0004767799 00000 n +0004771015 00000 n +0004771056 00000 n +0004774231 00000 n +0004774272 00000 n +0004777447 00000 n +0004777488 00000 n +0004777647 00000 n +0004777778 00000 n +0004777999 00000 n +0004783446 00000 n +0004786662 00000 n +0004786703 00000 n +0004789878 00000 n +0004789919 00000 n +0004790078 00000 n +0004790211 00000 n +0004790435 00000 n +0004793788 00000 n +0004797004 00000 n +0004797045 00000 n +0004800220 00000 n +0004800261 00000 n +0004803436 00000 n +0004803477 00000 n +0004803636 00000 n +0004803767 00000 n +0004803991 00000 n +0004807651 00000 n +0004810867 00000 n +0004810908 00000 n +0004814083 00000 n +0004814124 00000 n +0004817299 00000 n +0004817340 00000 n +0004817499 00000 n +0004817632 00000 n +0004817853 00000 n +0004823591 00000 n +0004826807 00000 n +0004826848 00000 n +0004830023 00000 n +0004830064 00000 n +0004830223 00000 n +0004830354 00000 n +0004830578 00000 n +0004834494 00000 n +0004837710 00000 n +0004837751 00000 n +0004840926 00000 n +0004840967 00000 n +0004844142 00000 n +0004844183 00000 n +0004844342 00000 n +0004844475 00000 n +0004844699 00000 n +0004847831 00000 n +0004851047 00000 n +0004851088 00000 n +0004854263 00000 n +0004854304 00000 n +0004857479 00000 n +0004857520 00000 n +0004857679 00000 n +0004857810 00000 n +0004858018 00000 n +0004863896 00000 n +0004867112 00000 n +0004867153 00000 n +0004870328 00000 n +0004870369 00000 n +0004870546 00000 n +0004870679 00000 n +0004870805 00000 n +0004870930 00000 n +0004871165 00000 n +0004875675 00000 n +0004878891 00000 n +0004878932 00000 n +0004882107 00000 n +0004882148 00000 n +0004882307 00000 n +0004882438 00000 n +0004882662 00000 n +0004886173 00000 n +0004889389 00000 n +0004889430 00000 n +0004892605 00000 n +0004892646 00000 n +0004895821 00000 n +0004895862 00000 n +0004896021 00000 n +0004896154 00000 n +0004896378 00000 n +0004900148 00000 n +0004903364 00000 n +0004903405 00000 n +0004906580 00000 n +0004906621 00000 n +0004909796 00000 n +0004909837 00000 n +0004910023 00000 n +0004910154 00000 n +0004910281 00000 n +0004910408 00000 n +0004910534 00000 n +0004910769 00000 n +0004915572 00000 n +0004918788 00000 n +0004918829 00000 n +0004922004 00000 n +0004922045 00000 n +0004922221 00000 n +0004922354 00000 n +0004922578 00000 n +0004928498 00000 n +0004931714 00000 n +0004931755 00000 n +0004934930 00000 n +0004934971 00000 n +0004938147 00000 n +0004938188 00000 n +0004938373 00000 n +0004938504 00000 n +0004938630 00000 n +0004938852 00000 n +0004942636 00000 n +0004945852 00000 n +0004945893 00000 n +0004949068 00000 n +0004949109 00000 n +0004949285 00000 n +0004949418 00000 n +0004949626 00000 n +0004954884 00000 n +0004958100 00000 n +0004958141 00000 n +0004961317 00000 n +0004961358 00000 n +0004961517 00000 n +0004961648 00000 n +0004961872 00000 n +0004967565 00000 n +0004970781 00000 n +0004970822 00000 n +0004973998 00000 n +0004974039 00000 n +0004977215 00000 n +0004977256 00000 n +0004977415 00000 n +0004977548 00000 n +0004977772 00000 n +0004984010 00000 n +0004987226 00000 n +0004987267 00000 n +0004990443 00000 n +0004990484 00000 n +0004993659 00000 n +0004993700 00000 n +0004993876 00000 n +0004994007 00000 n +0004994201 00000 n +0005000813 00000 n +0005004029 00000 n +0005004070 00000 n +0005004246 00000 n +0005004379 00000 n +0005004575 00000 n +0005021671 00000 n +0005024887 00000 n +0005024928 00000 n +0005028101 00000 n +0005028142 00000 n +0005028318 00000 n +0005028449 00000 n +0005028629 00000 n +0005034493 00000 n +0005037709 00000 n +0005037750 00000 n +0005037918 00000 n +0005038051 00000 n +0005038176 00000 n +0005038398 00000 n +0005043522 00000 n +0005046738 00000 n +0005046779 00000 n +0005049954 00000 n +0005049995 00000 n +0005050181 00000 n +0005050312 00000 n +0005050437 00000 n +0005050561 00000 n +0005050687 00000 n +0005050922 00000 n +0005055173 00000 n +0005058389 00000 n +0005058430 00000 n +0005061605 00000 n +0005061646 00000 n +0005061841 00000 n +0005061974 00000 n +0005062101 00000 n +0005062227 00000 n +0005062354 00000 n +0005062481 00000 n +0005062675 00000 n +0005066028 00000 n +0005069244 00000 n +0005069285 00000 n +0005069444 00000 n +0005069575 00000 n +0005069796 00000 n +0005074364 00000 n +0005077580 00000 n +0005077621 00000 n +0005080795 00000 n +0005080836 00000 n +0005081021 00000 n +0005081154 00000 n +0005081280 00000 n +0005081515 00000 n +0005087614 00000 n +0005090830 00000 n +0005090871 00000 n +0005094046 00000 n +0005094087 00000 n +0005094272 00000 n +0005094403 00000 n +0005094528 00000 n +0005094763 00000 n +0005099151 00000 n +0005102367 00000 n +0005102408 00000 n +0005105583 00000 n +0005105624 00000 n +0005105809 00000 n +0005105942 00000 n +0005106068 00000 n +0005106290 00000 n +0005110566 00000 n +0005113782 00000 n +0005113823 00000 n +0005116998 00000 n +0005117039 00000 n +0005117215 00000 n +0005117346 00000 n +0005117567 00000 n +0005122750 00000 n +0005125966 00000 n +0005126007 00000 n +0005129182 00000 n +0005129223 00000 n +0005129408 00000 n +0005129541 00000 n +0005129667 00000 n +0005129861 00000 n +0005136793 00000 n +0005140009 00000 n +0005140050 00000 n +0005140218 00000 n +0005140349 00000 n +0005140476 00000 n +0005140698 00000 n +0005146202 00000 n +0005149418 00000 n +0005149459 00000 n +0005152634 00000 n +0005152675 00000 n +0005152852 00000 n +0005152985 00000 n +0005153112 00000 n +0005153238 00000 n +0005153473 00000 n +0005158938 00000 n +0005162154 00000 n +0005162195 00000 n +0005165370 00000 n +0005165411 00000 n +0005165588 00000 n +0005165719 00000 n +0005165855 00000 n +0005165992 00000 n +0005166214 00000 n +0005172055 00000 n +0005175271 00000 n +0005175312 00000 n +0005178487 00000 n +0005178528 00000 n +0005178704 00000 n +0005178837 00000 n +0005179045 00000 n +0005184881 00000 n +0005188097 00000 n +0005188138 00000 n +0005191313 00000 n +0005191354 00000 n +0005191530 00000 n +0005191661 00000 n +0005191883 00000 n +0005197630 00000 n +0005200846 00000 n +0005200887 00000 n +0005204062 00000 n +0005204103 00000 n +0005204279 00000 n +0005204412 00000 n +0005204620 00000 n +0005209769 00000 n +0005212985 00000 n +0005213026 00000 n +0005216201 00000 n +0005216242 00000 n +0005216428 00000 n +0005216559 00000 n +0005216685 00000 n +0005216811 00000 n +0005216938 00000 n +0005217176 00000 n +0005221733 00000 n +0005224949 00000 n +0005224990 00000 n +0005228165 00000 n +0005228206 00000 n +0005231382 00000 n +0005231423 00000 n +0005231627 00000 n +0005231760 00000 n +0005231886 00000 n +0005232011 00000 n +0005232246 00000 n +0005238653 00000 n +0005241869 00000 n +0005241910 00000 n +0005245086 00000 n +0005245127 00000 n +0005245321 00000 n +0005245452 00000 n +0005245579 00000 n +0005245706 00000 n +0005245928 00000 n +0005251321 00000 n +0005254537 00000 n +0005254578 00000 n +0005257754 00000 n +0005257795 00000 n +0005257980 00000 n +0005258113 00000 n +0005258238 00000 n +0005258476 00000 n +0005263729 00000 n +0005266945 00000 n +0005266986 00000 n +0005270162 00000 n +0005270203 00000 n +0005273379 00000 n +0005273420 00000 n +0005273623 00000 n +0005273754 00000 n +0005273880 00000 n +0005274006 00000 n +0005274132 00000 n +0005274354 00000 n +0005279550 00000 n +0005282766 00000 n +0005282807 00000 n +0005285983 00000 n +0005286024 00000 n +0005286200 00000 n +0005286333 00000 n +0005286555 00000 n +0005291883 00000 n +0005295099 00000 n +0005295140 00000 n +0005298316 00000 n +0005298357 00000 n +0005298551 00000 n +0005298682 00000 n +0005298819 00000 n +0005298955 00000 n +0005299149 00000 n +0005303256 00000 n +0005306472 00000 n +0005306513 00000 n +0005306681 00000 n +0005306814 00000 n +0005306950 00000 n +0005307144 00000 n +0005312118 00000 n +0005315334 00000 n +0005315375 00000 n +0005315534 00000 n +0005315665 00000 n +0005315859 00000 n +0005319966 00000 n +0005323182 00000 n +0005323223 00000 n +0005323391 00000 n +0005323525 00000 n +0005323658 00000 n +0005323852 00000 n +0005328710 00000 n +0005331926 00000 n +0005331967 00000 n +0005332126 00000 n +0005332257 00000 n +0005332451 00000 n +0005336693 00000 n +0005339909 00000 n +0005339950 00000 n +0005340109 00000 n +0005340242 00000 n +0005340436 00000 n +0005343598 00000 n +0005346814 00000 n +0005346855 00000 n +0005347023 00000 n +0005347149 00000 n +0005347280 00000 n +0005347461 00000 n +0005349989 00000 n +0005353205 00000 n +0005353246 00000 n +0005353405 00000 n +0005353538 00000 n +0005353732 00000 n +0005359252 00000 n +0005362468 00000 n +0005362509 00000 n +0005362668 00000 n +0005362799 00000 n +0005362979 00000 n +0005365772 00000 n +0005368988 00000 n +0005369029 00000 n +0005369188 00000 n +0005369321 00000 n +0005369501 00000 n +0005372348 00000 n +0005375564 00000 n +0005375605 00000 n +0005375764 00000 n +0005375895 00000 n +0005376075 00000 n +0005381157 00000 n +0005384373 00000 n +0005384414 00000 n +0005384573 00000 n +0005384706 00000 n +0005384900 00000 n +0005389572 00000 n +0005392788 00000 n +0005392829 00000 n +0005392988 00000 n +0005393119 00000 n +0005393313 00000 n +0005397470 00000 n +0005400686 00000 n +0005400727 00000 n +0005400886 00000 n +0005401019 00000 n +0005401213 00000 n +0005405505 00000 n +0005408721 00000 n +0005408762 00000 n +0005408921 00000 n +0005409052 00000 n +0005409246 00000 n +0005414700 00000 n +0005417916 00000 n +0005417957 00000 n +0005418116 00000 n +0005418249 00000 n +0005418443 00000 n +0005424345 00000 n +0005427561 00000 n +0005427602 00000 n +0005427761 00000 n +0005427892 00000 n +0005428086 00000 n +0005432567 00000 n +0005435783 00000 n +0005435824 00000 n +0005435983 00000 n +0005436116 00000 n +0005436310 00000 n +0005440270 00000 n +0005443486 00000 n +0005443527 00000 n +0005443703 00000 n +0005443834 00000 n +0005444028 00000 n +0005449065 00000 n +0005452281 00000 n +0005452322 00000 n +0005452481 00000 n +0005452614 00000 n +0005452794 00000 n +0005456041 00000 n +0005459257 00000 n +0005459298 00000 n +0005459466 00000 n +0005459589 00000 n +0005459720 00000 n +0005459901 00000 n +0005463777 00000 n +0005466993 00000 n +0005467034 00000 n +0005467193 00000 n +0005467326 00000 n +0005467520 00000 n +0005471756 00000 n +0005474972 00000 n +0005475013 00000 n +0005475172 00000 n +0005475303 00000 n +0005475483 00000 n +0005480321 00000 n +0005483537 00000 n +0005483578 00000 n +0005483737 00000 n +0005483870 00000 n +0005484050 00000 n +0005488154 00000 n +0005491370 00000 n +0005491411 00000 n +0005491570 00000 n +0005491701 00000 n +0005491868 00000 n +0005494833 00000 n +0005498049 00000 n +0005498090 00000 n +0005498249 00000 n +0005498382 00000 n +0005498549 00000 n +0005501345 00000 n +0005504561 00000 n +0005504602 00000 n +0005504761 00000 n +0005504892 00000 n +0005505059 00000 n +0005506602 00000 n +0005509818 00000 n +0005509859 00000 n +0005510018 00000 n +0005510151 00000 n +0005510318 00000 n +0005515456 00000 n +0005518672 00000 n +0005518713 00000 n +0005518872 00000 n +0005519003 00000 n +0005519170 00000 n +0005523828 00000 n +0005527044 00000 n +0005527085 00000 n +0005527253 00000 n +0005527386 00000 n +0005527521 00000 n +0005527702 00000 n +0005530243 00000 n +0005533459 00000 n +0005533500 00000 n +0005533659 00000 n +0005533781 00000 n +0005534002 00000 n +0005537618 00000 n +0005540834 00000 n +0005540875 00000 n +0005544051 00000 n +0005544092 00000 n +0005544269 00000 n +0005544393 00000 n +0005544519 00000 n +0005544645 00000 n +0005544839 00000 n +0005549137 00000 n +0005552353 00000 n +0005552394 00000 n +0005552553 00000 n +0005552674 00000 n +0005552898 00000 n +0005557087 00000 n +0005560303 00000 n +0005560344 00000 n +0005563519 00000 n +0005563560 00000 n +0005566735 00000 n +0005566776 00000 n +0005566935 00000 n +0005567058 00000 n +0005567279 00000 n +0005572399 00000 n +0005575615 00000 n +0005575656 00000 n +0005578831 00000 n +0005578872 00000 n +0005579031 00000 n +0005579152 00000 n +0005579376 00000 n +0005582539 00000 n +0005585755 00000 n +0005585796 00000 n +0005588971 00000 n +0005589012 00000 n +0005592187 00000 n +0005592228 00000 n +0005592387 00000 n +0005592510 00000 n +0005592734 00000 n +0005596386 00000 n +0005599602 00000 n +0005599643 00000 n +0005602818 00000 n +0005602859 00000 n +0005606034 00000 n +0005606075 00000 n +0005606243 00000 n +0005606364 00000 n +0005606490 00000 n +0005606712 00000 n +0005611585 00000 n +0005614801 00000 n +0005614842 00000 n +0005618017 00000 n +0005618058 00000 n +0005618244 00000 n +0005618367 00000 n +0005618494 00000 n +0005618621 00000 n +0005618744 00000 n +0005618966 00000 n +0005624002 00000 n +0005627218 00000 n +0005627259 00000 n +0005630434 00000 n +0005630475 00000 n +0005630634 00000 n +0005630755 00000 n +0005630936 00000 n +0005634483 00000 n +0005637699 00000 n +0005637740 00000 n +0005637899 00000 n +0005638022 00000 n +0005638203 00000 n +0005642964 00000 n +0005646180 00000 n +0005646221 00000 n +0005646380 00000 n +0005646501 00000 n +0005646668 00000 n +0005650457 00000 n +0005653673 00000 n +0005653714 00000 n +0005653882 00000 n +0005654005 00000 n +0005654128 00000 n +0005654309 00000 n +0005657665 00000 n +0005660881 00000 n +0005660922 00000 n +0005661090 00000 n +0005661211 00000 n +0005661336 00000 n +0005661517 00000 n +0005665266 00000 n +0005668482 00000 n +0005668523 00000 n +0005668682 00000 n +0005668806 00000 n +0005668986 00000 n +0005672088 00000 n +0005675304 00000 n +0005675345 00000 n +0005675522 00000 n +0005675644 00000 n +0005675770 00000 n +0005675895 00000 n +0005676117 00000 n +0005679815 00000 n +0005683031 00000 n +0005683072 00000 n +0005686248 00000 n +0005686289 00000 n +0005686466 00000 n +0005686589 00000 n +0005686715 00000 n +0005686841 00000 n +0005687035 00000 n +0005691241 00000 n +0005694457 00000 n +0005694498 00000 n +0005694657 00000 n +0005694778 00000 n +0005695002 00000 n +0005699267 00000 n +0005702483 00000 n +0005702524 00000 n +0005705699 00000 n +0005705740 00000 n +0005708915 00000 n +0005708956 00000 n +0005709115 00000 n +0005709238 00000 n +0005709459 00000 n +0005714698 00000 n +0005717914 00000 n +0005717955 00000 n +0005721130 00000 n +0005721171 00000 n +0005721330 00000 n +0005721451 00000 n +0005721675 00000 n +0005724929 00000 n +0005728145 00000 n +0005728186 00000 n +0005731361 00000 n +0005731402 00000 n +0005734577 00000 n +0005734618 00000 n +0005734777 00000 n +0005734900 00000 n +0005735124 00000 n +0005738840 00000 n +0005742056 00000 n +0005742097 00000 n +0005745272 00000 n +0005745313 00000 n +0005748488 00000 n +0005748529 00000 n +0005748697 00000 n +0005748818 00000 n +0005748944 00000 n +0005749179 00000 n +0005752789 00000 n +0005756005 00000 n +0005756046 00000 n +0005759221 00000 n +0005759262 00000 n +0005759439 00000 n +0005759562 00000 n +0005759689 00000 n +0005759815 00000 n +0005760053 00000 n +0005765490 00000 n +0005768706 00000 n +0005768747 00000 n +0005771922 00000 n +0005771963 00000 n +0005775139 00000 n +0005775180 00000 n +0005775339 00000 n +0005775460 00000 n +0005775684 00000 n +0005782758 00000 n +0005785974 00000 n +0005786015 00000 n +0005789191 00000 n +0005789232 00000 n +0005792408 00000 n +0005792449 00000 n +0005792608 00000 n +0005792731 00000 n +0005792925 00000 n +0005799429 00000 n +0005802645 00000 n +0005802686 00000 n +0005802854 00000 n +0005802975 00000 n +0005803102 00000 n +0005803283 00000 n +0005808364 00000 n +0005811580 00000 n +0005811621 00000 n +0005811789 00000 n +0005811912 00000 n +0005812039 00000 n +0005812261 00000 n +0005817426 00000 n +0005820642 00000 n +0005820683 00000 n +0005823858 00000 n +0005823899 00000 n +0005824058 00000 n +0005824179 00000 n +0005824387 00000 n +0005828967 00000 n +0005832183 00000 n +0005832224 00000 n +0005835399 00000 n +0005835440 00000 n +0005835617 00000 n +0005835740 00000 n +0005835866 00000 n +0005835992 00000 n +0005836173 00000 n +0005839312 00000 n +0005842528 00000 n +0005842569 00000 n +0005842728 00000 n +0005842849 00000 n +0005843016 00000 n +0005846631 00000 n +0005849847 00000 n +0005849888 00000 n +0005850047 00000 n +0005850170 00000 n +0005850351 00000 n +0005854234 00000 n +0005857450 00000 n +0005857491 00000 n +0005857650 00000 n +0005857771 00000 n +0005857938 00000 n +0005862611 00000 n +0005865827 00000 n +0005865868 00000 n +0005866027 00000 n +0005866150 00000 n +0005866317 00000 n +0005870419 00000 n +0005873635 00000 n +0005873676 00000 n +0005873835 00000 n +0005873956 00000 n +0005874137 00000 n +0005878343 00000 n +0005881559 00000 n +0005881600 00000 n +0005881759 00000 n +0005881882 00000 n +0005882063 00000 n +0005886308 00000 n +0005889524 00000 n +0005889565 00000 n +0005889724 00000 n +0005889845 00000 n +0005890026 00000 n +0005895036 00000 n +0005898252 00000 n +0005898293 00000 n +0005898452 00000 n +0005898575 00000 n +0005898756 00000 n +0005903793 00000 n +0005907009 00000 n +0005907050 00000 n +0005907218 00000 n +0005907343 00000 n +0005907464 00000 n +0005907645 00000 n +0005910879 00000 n +0005914095 00000 n +0005914136 00000 n +0005914295 00000 n +0005914418 00000 n +0005914585 00000 n +0005919401 00000 n +0005922617 00000 n +0005922658 00000 n +0005922826 00000 n +0005922947 00000 n +0005923072 00000 n +0005923253 00000 n +0005927671 00000 n +0005930887 00000 n +0005930928 00000 n +0005931105 00000 n +0005931239 00000 n +0005931364 00000 n +0005931488 00000 n +0005931682 00000 n +0005936016 00000 n +0005939232 00000 n +0005939273 00000 n +0005939432 00000 n +0005939564 00000 n +0005939744 00000 n +0005942134 00000 n +0005945350 00000 n +0005945391 00000 n +0005945568 00000 n +0005945701 00000 n +0005945838 00000 n +0005945973 00000 n +0005946208 00000 n +0005952722 00000 n +0005955938 00000 n +0005955979 00000 n +0005959155 00000 n +0005959196 00000 n +0005959391 00000 n +0005959522 00000 n +0005959647 00000 n +0005959772 00000 n +0005959909 00000 n +0005960044 00000 n +0005960279 00000 n +0005965383 00000 n +0005968599 00000 n +0005968640 00000 n +0005971816 00000 n +0005971857 00000 n +0005972034 00000 n +0005972167 00000 n +0005972293 00000 n +0005972419 00000 n +0005972613 00000 n +0005977302 00000 n +0005980518 00000 n +0005980559 00000 n +0005980718 00000 n +0005980849 00000 n +0005981073 00000 n +0005985378 00000 n +0005988594 00000 n +0005988635 00000 n +0005991810 00000 n +0005991851 00000 n +0005995026 00000 n +0005995067 00000 n +0005995226 00000 n +0005995359 00000 n +0005995539 00000 n +0005999790 00000 n +0006003006 00000 n +0006003047 00000 n +0006003206 00000 n +0006003337 00000 n +0006003561 00000 n +0006007182 00000 n +0006010398 00000 n +0006010439 00000 n +0006013614 00000 n +0006013655 00000 n +0006016830 00000 n +0006016871 00000 n +0006017030 00000 n +0006017163 00000 n +0006017387 00000 n +0006020573 00000 n +0006023789 00000 n +0006023830 00000 n +0006026999 00000 n +0006027040 00000 n +0006030206 00000 n +0006030247 00000 n +0006030406 00000 n +0006030537 00000 n +0006030761 00000 n +0006035004 00000 n +0006038220 00000 n +0006038261 00000 n +0006041427 00000 n +0006041468 00000 n +0006044643 00000 n +0006044684 00000 n +0006044861 00000 n +0006044994 00000 n +0006045119 00000 n +0006045245 00000 n +0006045426 00000 n +0006048677 00000 n +0006051893 00000 n +0006051934 00000 n +0006052102 00000 n +0006052233 00000 n +0006052369 00000 n +0006052604 00000 n +0006056452 00000 n +0006059668 00000 n +0006059709 00000 n +0006062884 00000 n +0006062925 00000 n +0006063093 00000 n +0006063226 00000 n +0006063351 00000 n +0006063589 00000 n +0006068872 00000 n +0006072088 00000 n +0006072129 00000 n +0006075304 00000 n +0006075345 00000 n +0006078521 00000 n +0006078562 00000 n +0006078756 00000 n +0006078887 00000 n +0006079013 00000 n +0006079139 00000 n +0006079361 00000 n +0006084440 00000 n +0006087656 00000 n +0006087697 00000 n +0006090872 00000 n +0006090913 00000 n +0006091072 00000 n +0006091205 00000 n +0006091429 00000 n +0006097865 00000 n +0006101081 00000 n +0006101122 00000 n +0006104298 00000 n +0006104339 00000 n +0006107515 00000 n +0006107556 00000 n +0006107715 00000 n +0006107846 00000 n +0006108070 00000 n +0006114447 00000 n +0006117663 00000 n +0006117704 00000 n +0006120880 00000 n +0006120921 00000 n +0006124097 00000 n +0006124138 00000 n +0006124314 00000 n +0006124447 00000 n +0006124641 00000 n +0006131163 00000 n +0006134379 00000 n +0006134420 00000 n +0006134596 00000 n +0006134727 00000 n +0006134910 00000 n +0006152622 00000 n +0006155838 00000 n +0006155879 00000 n +0006159052 00000 n +0006159093 00000 n +0006159278 00000 n +0006159411 00000 n +0006159537 00000 n +0006159731 00000 n +0006164989 00000 n +0006168205 00000 n +0006168246 00000 n +0006168423 00000 n +0006168554 00000 n +0006168681 00000 n +0006168808 00000 n +0006169030 00000 n +0006174242 00000 n +0006177458 00000 n +0006177499 00000 n +0006180674 00000 n +0006180715 00000 n +0006180909 00000 n +0006181042 00000 n +0006181168 00000 n +0006181291 00000 n +0006181526 00000 n +0006186627 00000 n +0006189843 00000 n +0006189884 00000 n +0006193059 00000 n +0006193100 00000 n +0006193277 00000 n +0006193408 00000 n +0006193533 00000 n +0006193657 00000 n +0006193879 00000 n +0006198378 00000 n +0006201594 00000 n +0006201635 00000 n +0006204810 00000 n +0006204851 00000 n +0006205010 00000 n +0006205143 00000 n +0006205380 00000 n +0006209090 00000 n +0006212306 00000 n +0006212347 00000 n +0006215522 00000 n +0006215563 00000 n +0006218738 00000 n +0006218779 00000 n +0006218973 00000 n +0006219104 00000 n +0006219230 00000 n +0006219356 00000 n +0006219578 00000 n +0006224451 00000 n +0006227667 00000 n +0006227708 00000 n +0006230883 00000 n +0006230924 00000 n +0006231110 00000 n +0006231243 00000 n +0006231368 00000 n +0006231493 00000 n +0006231618 00000 n +0006231812 00000 n +0006237367 00000 n +0006240583 00000 n +0006240624 00000 n +0006240783 00000 n +0006240914 00000 n +0006241135 00000 n +0006248181 00000 n +0006251397 00000 n +0006251438 00000 n +0006254614 00000 n +0006254655 00000 n +0006254858 00000 n +0006254991 00000 n +0006255116 00000 n +0006255240 00000 n +0006255362 00000 n +0006255543 00000 n +0006259104 00000 n +0006262320 00000 n +0006262361 00000 n +0006262520 00000 n +0006262651 00000 n +0006262859 00000 n +0006265497 00000 n +0006268713 00000 n +0006268754 00000 n +0006271929 00000 n +0006271970 00000 n +0006272147 00000 n +0006272280 00000 n +0006272406 00000 n +0006272532 00000 n +0006272726 00000 n +0006278483 00000 n +0006281699 00000 n +0006281740 00000 n +0006281899 00000 n +0006282030 00000 n +0006282251 00000 n +0006287455 00000 n +0006290671 00000 n +0006290712 00000 n +0006293888 00000 n +0006293929 00000 n +0006294088 00000 n +0006294221 00000 n +0006294401 00000 n +0006297099 00000 n +0006300315 00000 n +0006300356 00000 n +0006300532 00000 n +0006300663 00000 n +0006300884 00000 n +0006306745 00000 n +0006309961 00000 n +0006310002 00000 n +0006313177 00000 n +0006313218 00000 n +0006313403 00000 n +0006313536 00000 n +0006313659 00000 n +0006313881 00000 n +0006319433 00000 n +0006322649 00000 n +0006322690 00000 n +0006325865 00000 n +0006325906 00000 n +0006326065 00000 n +0006326196 00000 n +0006326363 00000 n +0006328233 00000 n +0006331449 00000 n +0006331490 00000 n +0006331658 00000 n +0006331791 00000 n +0006331916 00000 n +0006332138 00000 n +0006334897 00000 n +0006338113 00000 n +0006338154 00000 n +0006341329 00000 n +0006341370 00000 n +0006341546 00000 n +0006341677 00000 n +0006341885 00000 n +0006347453 00000 n +0006350669 00000 n +0006350710 00000 n +0006353885 00000 n +0006353926 00000 n +0006354102 00000 n +0006354235 00000 n +0006354443 00000 n +0006359262 00000 n +0006362478 00000 n +0006362519 00000 n +0006365694 00000 n +0006365735 00000 n +0006365911 00000 n +0006366042 00000 n +0006366250 00000 n +0006371645 00000 n +0006374861 00000 n +0006374902 00000 n +0006378077 00000 n +0006378118 00000 n +0006378294 00000 n +0006378427 00000 n +0006378621 00000 n +0006383388 00000 n +0006386604 00000 n +0006386645 00000 n +0006386848 00000 n +0006386979 00000 n +0006387115 00000 n +0006387251 00000 n +0006387387 00000 n +0006387568 00000 n +0006392069 00000 n +0006395285 00000 n +0006395326 00000 n +0006395494 00000 n +0006395627 00000 n +0006395763 00000 n +0006395957 00000 n +0006400007 00000 n +0006403223 00000 n +0006403264 00000 n +0006403423 00000 n +0006403554 00000 n +0006403748 00000 n +0006408314 00000 n +0006411530 00000 n +0006411571 00000 n +0006411730 00000 n +0006411863 00000 n +0006412057 00000 n +0006417017 00000 n +0006420233 00000 n +0006420274 00000 n +0006420442 00000 n +0006420568 00000 n +0006420699 00000 n +0006420880 00000 n +0006424797 00000 n +0006428013 00000 n +0006428054 00000 n +0006428213 00000 n +0006428346 00000 n +0006428540 00000 n +0006433986 00000 n +0006437202 00000 n +0006437243 00000 n +0006437402 00000 n +0006437533 00000 n +0006437713 00000 n +0006440659 00000 n +0006443875 00000 n +0006443916 00000 n +0006444075 00000 n +0006444208 00000 n +0006444388 00000 n +0006447691 00000 n +0006450907 00000 n +0006450948 00000 n +0006451125 00000 n +0006451250 00000 n +0006451376 00000 n +0006451507 00000 n +0006451701 00000 n +0006457038 00000 n +0006460254 00000 n +0006460295 00000 n +0006460454 00000 n +0006460587 00000 n +0006460781 00000 n +0006465694 00000 n +0006468910 00000 n +0006468951 00000 n +0006469110 00000 n +0006469241 00000 n +0006469435 00000 n +0006474179 00000 n +0006477395 00000 n +0006477436 00000 n +0006477595 00000 n +0006477728 00000 n +0006477922 00000 n +0006481698 00000 n +0006484914 00000 n +0006484955 00000 n +0006485114 00000 n +0006485245 00000 n +0006485426 00000 n +0006490805 00000 n +0006494021 00000 n +0006494062 00000 n +0006494221 00000 n +0006494354 00000 n +0006494548 00000 n +0006500031 00000 n +0006503247 00000 n +0006503288 00000 n +0006503456 00000 n +0006503582 00000 n +0006503713 00000 n +0006503907 00000 n +0006508937 00000 n +0006512153 00000 n +0006512194 00000 n +0006512370 00000 n +0006512503 00000 n +0006512684 00000 n +0006516451 00000 n +0006519667 00000 n +0006519708 00000 n +0006519876 00000 n +0006520001 00000 n +0006520132 00000 n +0006520326 00000 n +0006524308 00000 n +0006527524 00000 n +0006527565 00000 n +0006527724 00000 n +0006527857 00000 n +0006528037 00000 n +0006532348 00000 n +0006535564 00000 n +0006535605 00000 n +0006535764 00000 n +0006535895 00000 n +0006536089 00000 n +0006541034 00000 n +0006544250 00000 n +0006544291 00000 n +0006544468 00000 n +0006544594 00000 n +0006544719 00000 n +0006544852 00000 n +0006545046 00000 n +0006550204 00000 n +0006553420 00000 n +0006553461 00000 n +0006553656 00000 n +0006553782 00000 n +0006553907 00000 n +0006554032 00000 n +0006554157 00000 n +0006554288 00000 n +0006554482 00000 n +0006559690 00000 n +0006562906 00000 n +0006562947 00000 n +0006563106 00000 n +0006563239 00000 n +0006563433 00000 n +0006568278 00000 n +0006571494 00000 n +0006571535 00000 n +0006571694 00000 n +0006571825 00000 n +0006572019 00000 n +0006576368 00000 n +0006579584 00000 n +0006579625 00000 n +0006579784 00000 n +0006579917 00000 n +0006580084 00000 n +0006584091 00000 n +0006587307 00000 n +0006587348 00000 n +0006587507 00000 n +0006587638 00000 n +0006587805 00000 n +0006592446 00000 n +0006595662 00000 n +0006595703 00000 n +0006595871 00000 n +0006596004 00000 n +0006596140 00000 n +0006596321 00000 n +0006599083 00000 n +0006602299 00000 n +0006602340 00000 n +0006602508 00000 n +0006602639 00000 n +0006602775 00000 n +0006602969 00000 n +0006607682 00000 n +0006610898 00000 n +0006610939 00000 n +0006611098 00000 n +0006611231 00000 n +0006611425 00000 n +0006616079 00000 n +0006619295 00000 n +0006619336 00000 n +0006619495 00000 n +0006619626 00000 n +0006619820 00000 n +0006623211 00000 n +0006626427 00000 n +0006626468 00000 n +0006626627 00000 n +0006626760 00000 n +0006626940 00000 n +0006631829 00000 n +0006635045 00000 n +0006635086 00000 n +0006635245 00000 n +0006635376 00000 n +0006635570 00000 n +0006640472 00000 n +0006643688 00000 n +0006643729 00000 n +0006643888 00000 n +0006644021 00000 n +0006644201 00000 n +0006646968 00000 n +0006650184 00000 n +0006650225 00000 n +0006650384 00000 n +0006650515 00000 n +0006650709 00000 n +0006655451 00000 n +0006658667 00000 n +0006658708 00000 n +0006658867 00000 n +0006659000 00000 n +0006659181 00000 n +0006664372 00000 n +0006667588 00000 n +0006667629 00000 n +0006667788 00000 n +0006667919 00000 n +0006668113 00000 n +0006672957 00000 n +0006676173 00000 n +0006676214 00000 n +0006676382 00000 n +0006676507 00000 n +0006676640 00000 n +0006676821 00000 n +0006681216 00000 n +0006684432 00000 n +0006684473 00000 n +0006684649 00000 n +0006684780 00000 n +0006684961 00000 n +0006689559 00000 n +0006692775 00000 n +0006692816 00000 n +0006692984 00000 n +0006693109 00000 n +0006693242 00000 n +0006693423 00000 n +0006696990 00000 n +0006700206 00000 n +0006700247 00000 n +0006700406 00000 n +0006700537 00000 n +0006700717 00000 n +0006705042 00000 n +0006708258 00000 n +0006708299 00000 n +0006708475 00000 n +0006708608 00000 n +0006708802 00000 n +0006713064 00000 n +0006716280 00000 n +0006716321 00000 n +0006716498 00000 n +0006716622 00000 n +0006716747 00000 n +0006716878 00000 n +0006717072 00000 n +0006722082 00000 n +0006725298 00000 n +0006725339 00000 n +0006725534 00000 n +0006725659 00000 n +0006725784 00000 n +0006725909 00000 n +0006726034 00000 n +0006726167 00000 n +0006726361 00000 n +0006732385 00000 n +0006735601 00000 n +0006735642 00000 n +0006735801 00000 n +0006735932 00000 n +0006736112 00000 n +0006740455 00000 n +0006743671 00000 n +0006743712 00000 n +0006743871 00000 n +0006744004 00000 n +0006744198 00000 n +0006748160 00000 n +0006751376 00000 n +0006751417 00000 n +0006751576 00000 n +0006751707 00000 n +0006751901 00000 n +0006755657 00000 n +0006758873 00000 n +0006758914 00000 n +0006759073 00000 n +0006759206 00000 n +0006759373 00000 n +0006760959 00000 n +0006764175 00000 n +0006764216 00000 n +0006764375 00000 n +0006764506 00000 n +0006764673 00000 n +0006769138 00000 n +0006772354 00000 n +0006772395 00000 n +0006772563 00000 n +0006772696 00000 n +0006772831 00000 n +0006773012 00000 n +0006776689 00000 n +0006779905 00000 n +0006779946 00000 n +0006780114 00000 n +0006780236 00000 n +0006780363 00000 n +0006780585 00000 n +0006786285 00000 n +0006789501 00000 n +0006789542 00000 n +0006792717 00000 n +0006792758 00000 n +0006792944 00000 n +0006793068 00000 n +0006793194 00000 n +0006793319 00000 n +0006793446 00000 n +0006793681 00000 n +0006798444 00000 n +0006801660 00000 n +0006801701 00000 n +0006804877 00000 n +0006804918 00000 n +0006805248 00000 n +0006805370 00000 n +0006805492 00000 n +0006805616 00000 n +0006805741 00000 n +0006805866 00000 n +0006805991 00000 n +0006806116 00000 n +0006806242 00000 n +0006806368 00000 n +0006806492 00000 n +0006806618 00000 n +0006806743 00000 n +0006806868 00000 n +0006806994 00000 n +0006807120 00000 n +0006807245 00000 n +0006807371 00000 n +0006807495 00000 n +0006807621 00000 n +0006807746 00000 n +0006807927 00000 n +0006812595 00000 n +0006815811 00000 n +0006815852 00000 n +0006816065 00000 n +0006816188 00000 n +0006816312 00000 n +0006816435 00000 n +0006816561 00000 n +0006816687 00000 n +0006816811 00000 n +0006816937 00000 n +0006817118 00000 n +0006820329 00000 n +0006823545 00000 n +0006823586 00000 n +0006823763 00000 n +0006823887 00000 n +0006824008 00000 n +0006824134 00000 n +0006824315 00000 n +0006827478 00000 n +0006830694 00000 n +0006830735 00000 n +0006830930 00000 n +0006831054 00000 n +0006831179 00000 n +0006831304 00000 n +0006831428 00000 n +0006831551 00000 n +0006831732 00000 n +0006835069 00000 n +0006838285 00000 n +0006838326 00000 n +0006838530 00000 n +0006838655 00000 n +0006838779 00000 n +0006838905 00000 n +0006839029 00000 n +0006839154 00000 n +0006839275 00000 n +0006839456 00000 n +0006842928 00000 n +0006846144 00000 n +0006846185 00000 n +0006846344 00000 n +0006846467 00000 n +0006846648 00000 n +0006850955 00000 n +0006854171 00000 n +0006854212 00000 n +0006854407 00000 n +0006854532 00000 n +0006854657 00000 n +0006854783 00000 n +0006854908 00000 n +0006855029 00000 n +0006855210 00000 n +0006858510 00000 n +0006861726 00000 n +0006861767 00000 n +0006861935 00000 n +0006862058 00000 n +0006862183 00000 n +0006862364 00000 n +0006865430 00000 n +0006868646 00000 n +0006868687 00000 n +0006868864 00000 n +0006868986 00000 n +0006869111 00000 n +0006869236 00000 n +0006869430 00000 n +0006874190 00000 n +0006877406 00000 n +0006877447 00000 n +0006877642 00000 n +0006877766 00000 n +0006877889 00000 n +0006878012 00000 n +0006878134 00000 n +0006878258 00000 n +0006878492 00000 n +0006884464 00000 n +0006887680 00000 n +0006887721 00000 n +0006890896 00000 n +0006890937 00000 n +0006891096 00000 n +0006891217 00000 n +0006891452 00000 n +0006895188 00000 n +0006898404 00000 n +0006898445 00000 n +0006901620 00000 n +0006901661 00000 n +0006901838 00000 n +0006901961 00000 n +0006902087 00000 n +0006902212 00000 n +0006902420 00000 n +0006907708 00000 n +0006910924 00000 n +0006910965 00000 n +0006911124 00000 n +0006911245 00000 n +0006911412 00000 n +0006915511 00000 n +0006918727 00000 n +0006918768 00000 n +0006918936 00000 n +0006919059 00000 n +0006919184 00000 n +0006919365 00000 n +0006923613 00000 n +0006926829 00000 n +0006926870 00000 n +0006927047 00000 n +0006927350 00000 n +0006927472 00000 n +0006927596 00000 n +0006927790 00000 n +0006932656 00000 n +0006935872 00000 n +0006935913 00000 n +0006936072 00000 n +0006936196 00000 n +0006936404 00000 n +0006942433 00000 n +0006945649 00000 n +0006945690 00000 n +0006948866 00000 n +0006948907 00000 n +0006949093 00000 n +0006949218 00000 n +0006949344 00000 n +0006949465 00000 n +0006949589 00000 n +0006949783 00000 n +0006954194 00000 n +0006957410 00000 n +0006957451 00000 n +0006957637 00000 n +0006957760 00000 n +0006957884 00000 n +0006958007 00000 n +0006958131 00000 n +0006958312 00000 n +0006962240 00000 n +0006965456 00000 n +0006965497 00000 n +0006965656 00000 n +0006965777 00000 n +0006965944 00000 n +0006968745 00000 n +0006971961 00000 n +0006972002 00000 n +0006972179 00000 n +0006972302 00000 n +0006972429 00000 n +0006972556 00000 n +0006972737 00000 n +0006977067 00000 n +0006980283 00000 n +0006980324 00000 n +0006980519 00000 n +0006980640 00000 n +0006980766 00000 n +0006980892 00000 n +0006981016 00000 n +0006981141 00000 n +0006981349 00000 n +0006987150 00000 n +0006990366 00000 n +0006990407 00000 n +0006990575 00000 n +0006990698 00000 n +0006990825 00000 n +0006991019 00000 n +0006996713 00000 n +0006999929 00000 n +0006999970 00000 n +0007000129 00000 n +0007000250 00000 n +0007000417 00000 n +0007004498 00000 n +0007007714 00000 n +0007007755 00000 n +0007007914 00000 n +0007008037 00000 n +0007008218 00000 n +0007014154 00000 n +0007017370 00000 n +0007017411 00000 n +0007017588 00000 n +0007017709 00000 n +0007017836 00000 n +0007017962 00000 n +0007018143 00000 n +0007024696 00000 n +0007027912 00000 n +0007027953 00000 n +0007028112 00000 n +0007028235 00000 n +0007028416 00000 n +0007035078 00000 n +0007038294 00000 n +0007038335 00000 n +0007038494 00000 n +0007038615 00000 n +0007038809 00000 n +0007045091 00000 n +0007048307 00000 n +0007048348 00000 n +0007048507 00000 n +0007048630 00000 n +0007048824 00000 n +0007055065 00000 n +0007058281 00000 n +0007058322 00000 n +0007058481 00000 n +0007058602 00000 n +0007058782 00000 n +0007064262 00000 n +0007067478 00000 n +0007067519 00000 n +0007067678 00000 n +0007067801 00000 n +0007067982 00000 n +0007074311 00000 n +0007077527 00000 n +0007077568 00000 n +0007077727 00000 n +0007077848 00000 n +0007078029 00000 n +0007082737 00000 n +0007085953 00000 n +0007085994 00000 n +0007086225 00000 n +0007086339 00000 n +0007086453 00000 n +0007086567 00000 n +0007086690 00000 n +0007086816 00000 n +0007086943 00000 n +0007087069 00000 n +0007087196 00000 n +0007087323 00000 n +0007087504 00000 n +0007092088 00000 n +0007095304 00000 n +0007095345 00000 n +0007095540 00000 n +0007095661 00000 n +0007095788 00000 n +0007095914 00000 n +0007096041 00000 n +0007096168 00000 n +0007096349 00000 n +0007100155 00000 n +0007103371 00000 n +0007103412 00000 n +0007103589 00000 n +0007103712 00000 n +0007103839 00000 n +0007103966 00000 n +0007104147 00000 n +0007108432 00000 n +0007111648 00000 n +0007111689 00000 n +0007111857 00000 n +0007111982 00000 n +0007112103 00000 n +0007112284 00000 n +0007116416 00000 n +0007119632 00000 n +0007119673 00000 n +0007119868 00000 n +0007119991 00000 n +0007120116 00000 n +0007120241 00000 n +0007120366 00000 n +0007120491 00000 n +0007120672 00000 n +0007125007 00000 n +0007128223 00000 n +0007128264 00000 n +0007128459 00000 n +0007128580 00000 n +0007128707 00000 n +0007128834 00000 n +0007128961 00000 n +0007129088 00000 n +0007129269 00000 n +0007133856 00000 n +0007137072 00000 n +0007137113 00000 n +0007137272 00000 n +0007137395 00000 n +0007137562 00000 n +0007142255 00000 n +0007145471 00000 n +0007145512 00000 n +0007145680 00000 n +0007145806 00000 n +0007145927 00000 n +0007146108 00000 n +0007150146 00000 n +0007153362 00000 n +0007153403 00000 n +0007153562 00000 n +0007153685 00000 n +0007153866 00000 n +0007158398 00000 n +0007161614 00000 n +0007161655 00000 n +0007161868 00000 n +0007161995 00000 n +0007162121 00000 n +0007162246 00000 n +0007162372 00000 n +0007162493 00000 n +0007162618 00000 n +0007162743 00000 n +0007162924 00000 n +0007167181 00000 n +0007170397 00000 n +0007170438 00000 n +0007170642 00000 n +0007170767 00000 n +0007170893 00000 n +0007171016 00000 n +0007171139 00000 n +0007171266 00000 n +0007171393 00000 n +0007171574 00000 n +0007177366 00000 n +0007180582 00000 n +0007180623 00000 n +0007180782 00000 n +0007180903 00000 n +0007181070 00000 n +0007184536 00000 n +0007187752 00000 n +0007187793 00000 n +0007187952 00000 n +0007188075 00000 n +0007188242 00000 n +0007191224 00000 n +0007194440 00000 n +0007194481 00000 n +0007194658 00000 n +0007194779 00000 n +0007194906 00000 n +0007195033 00000 n +0007195214 00000 n +0007199407 00000 n +0007202623 00000 n +0007202664 00000 n +0007202841 00000 n +0007202964 00000 n +0007203091 00000 n +0007203218 00000 n +0007203399 00000 n +0007207951 00000 n +0007211167 00000 n +0007211208 00000 n +0007211385 00000 n +0007211506 00000 n +0007211633 00000 n +0007211760 00000 n +0007211941 00000 n +0007216011 00000 n +0007219227 00000 n +0007219268 00000 n +0007219445 00000 n +0007219568 00000 n +0007219695 00000 n +0007219822 00000 n +0007220003 00000 n +0007224326 00000 n +0007227542 00000 n +0007227583 00000 n +0007227742 00000 n +0007227863 00000 n +0007228044 00000 n +0007232473 00000 n +0007235689 00000 n +0007235730 00000 n +0007235889 00000 n +0007236012 00000 n +0007236179 00000 n +0007240544 00000 n +0007243760 00000 n +0007243801 00000 n +0007243960 00000 n +0007244081 00000 n +0007244248 00000 n +0007245737 00000 n +0007248953 00000 n +0007248994 00000 n +0007249153 00000 n +0007249276 00000 n +0007249443 00000 n +0007254472 00000 n +0007257688 00000 n +0007257729 00000 n +0007257897 00000 n +0007258018 00000 n +0007258144 00000 n +0007258325 00000 n +0007261878 00000 n +0007265094 00000 n +0007265135 00000 n +0007265294 00000 n +0007265417 00000 n +0007265597 00000 n +0007268443 00000 n +0007271659 00000 n +0007271700 00000 n +0007271859 00000 n +0007271980 00000 n +0007272188 00000 n +0007275926 00000 n +0007279142 00000 n +0007279183 00000 n +0007282359 00000 n +0007282400 00000 n +0007282586 00000 n +0007282711 00000 n +0007282837 00000 n +0007282960 00000 n +0007283086 00000 n +0007283267 00000 n +0007288058 00000 n +0007291274 00000 n +0007291315 00000 n +0007291474 00000 n +0007291595 00000 n +0007291789 00000 n +0007296792 00000 n +0007300008 00000 n +0007300049 00000 n +0007300226 00000 n +0007300349 00000 n +0007300476 00000 n +0007300602 00000 n +0007300783 00000 n +0007306977 00000 n +0007310193 00000 n +0007310234 00000 n +0007310420 00000 n +0007310533 00000 n +0007310660 00000 n +0007310781 00000 n +0007310907 00000 n +0007311088 00000 n +0007315135 00000 n +0007318351 00000 n +0007318392 00000 n +0007318551 00000 n +0007318674 00000 n +0007318841 00000 n +0007322123 00000 n +0007325339 00000 n +0007325380 00000 n +0007325539 00000 n +0007325660 00000 n +0007325827 00000 n +0007329307 00000 n +0007332523 00000 n +0007332564 00000 n +0007332723 00000 n +0007332846 00000 n +0007333027 00000 n +0007336393 00000 n +0007339609 00000 n +0007339650 00000 n +0007339809 00000 n +0007339930 00000 n +0007340111 00000 n +0007344732 00000 n +0007347948 00000 n +0007347989 00000 n +0007348148 00000 n +0007348271 00000 n +0007348438 00000 n +0007351606 00000 n +0007354822 00000 n +0007354863 00000 n +0007355022 00000 n +0007355143 00000 n +0007355310 00000 n +0007358463 00000 n +0007361679 00000 n +0007361720 00000 n +0007361879 00000 n +0007362002 00000 n +0007362169 00000 n +0007365523 00000 n +0007368739 00000 n +0007368780 00000 n +0007368939 00000 n +0007369060 00000 n +0007369227 00000 n +0007372555 00000 n +0007375771 00000 n +0007375812 00000 n +0007375980 00000 n +0007376103 00000 n +0007376229 00000 n +0007376410 00000 n +0007380369 00000 n +0007383585 00000 n +0007383626 00000 n +0007383785 00000 n +0007383907 00000 n +0007384087 00000 n +0007387171 00000 n +0007390387 00000 n +0007390428 00000 n +0007390623 00000 n +0007390747 00000 n +0007390873 00000 n +0007390999 00000 n +0007391123 00000 n +0007391248 00000 n +0007391442 00000 n +0007396126 00000 n +0007399342 00000 n +0007399383 00000 n +0007399560 00000 n +0007399681 00000 n +0007399806 00000 n +0007399930 00000 n +0007400152 00000 n +0007404312 00000 n +0007407528 00000 n +0007407569 00000 n +0007410745 00000 n +0007410786 00000 n +0007410963 00000 n +0007411086 00000 n +0007411210 00000 n +0007411332 00000 n +0007411554 00000 n +0007415380 00000 n +0007418596 00000 n +0007418637 00000 n +0007421813 00000 n +0007421854 00000 n +0007422031 00000 n +0007422156 00000 n +0007422282 00000 n +0007422403 00000 n +0007422597 00000 n +0007426601 00000 n +0007429817 00000 n +0007429858 00000 n +0007430026 00000 n +0007430149 00000 n +0007430275 00000 n +0007430497 00000 n +0007437420 00000 n +0007440636 00000 n +0007440677 00000 n +0007443852 00000 n +0007443893 00000 n +0007444052 00000 n +0007444173 00000 n +0007444340 00000 n +0007447474 00000 n +0007450690 00000 n +0007450731 00000 n +0007450890 00000 n +0007451013 00000 n +0007451249 00000 n +0007455322 00000 n +0007458538 00000 n +0007458579 00000 n +0007461755 00000 n +0007461796 00000 n +0007464971 00000 n +0007465012 00000 n +0007465189 00000 n +0007465310 00000 n +0007465435 00000 n +0007465559 00000 n +0007465753 00000 n +0007472752 00000 n +0007475968 00000 n +0007476009 00000 n +0007476186 00000 n +0007476309 00000 n +0007476435 00000 n +0007476561 00000 n +0007476755 00000 n +0007482340 00000 n +0007485556 00000 n +0007485597 00000 n +0007485756 00000 n +0007485877 00000 n +0007486097 00000 n +0007489602 00000 n +0007492818 00000 n +0007492859 00000 n +0007496034 00000 n +0007496075 00000 n +0007496234 00000 n +0007496357 00000 n +0007496552 00000 n +0007503958 00000 n +0007507174 00000 n +0007507215 00000 n +0007510390 00000 n +0007510431 00000 n +0007510590 00000 n +0007510711 00000 n +0007510906 00000 n +0007520184 00000 n +0007523400 00000 n +0007523441 00000 n +0007526607 00000 n +0007526648 00000 n +0007526807 00000 n +0007526930 00000 n +0007527110 00000 n +0007532845 00000 n +0007536061 00000 n +0007536102 00000 n +0007536261 00000 n +0007536382 00000 n +0007536562 00000 n +0007542237 00000 n +0007545453 00000 n +0007545494 00000 n +0007545653 00000 n +0007545776 00000 n +0007545998 00000 n +0007550469 00000 n +0007553685 00000 n +0007553726 00000 n +0007556901 00000 n +0007556942 00000 n +0007557101 00000 n +0007557222 00000 n +0007557402 00000 n +0007562538 00000 n +0007565754 00000 n +0007565795 00000 n +0007565954 00000 n +0007566077 00000 n +0007566285 00000 n +0007568753 00000 n +0007571969 00000 n +0007572010 00000 n +0007575185 00000 n +0007575226 00000 n +0007575385 00000 n +0007575506 00000 n +0007575714 00000 n +0007578100 00000 n +0007581316 00000 n +0007581357 00000 n +0007584532 00000 n +0007584573 00000 n +0007584732 00000 n +0007584855 00000 n +0007585063 00000 n +0007592698 00000 n +0007595914 00000 n +0007595955 00000 n +0007599130 00000 n +0007599171 00000 n +0007599330 00000 n +0007599451 00000 n +0007599671 00000 n +0007602584 00000 n +0007605800 00000 n +0007605841 00000 n +0007609016 00000 n +0007609057 00000 n +0007609216 00000 n +0007609339 00000 n +0007609587 00000 n +0007614533 00000 n +0007614593 00000 n +0007615206 00000 n +0007615416 00000 n +0007615716 00000 n +0007618932 00000 n +0007618973 00000 n +0007622148 00000 n +0007622189 00000 n +0007625364 00000 n +0007625405 00000 n +0007625564 00000 n +0007625685 00000 n +0007625865 00000 n +0007630085 00000 n +0007633301 00000 n +0007633342 00000 n +0007633501 00000 n +0007633624 00000 n +0007633844 00000 n +0007637785 00000 n +0007641001 00000 n +0007641042 00000 n +0007644217 00000 n +0007644258 00000 n +0007644426 00000 n +0007644547 00000 n +0007644672 00000 n +0007644866 00000 n +0007650979 00000 n +0007654195 00000 n +0007654236 00000 n +0007654395 00000 n +0007654518 00000 n +0007654781 00000 n +0007658978 00000 n +0007662194 00000 n +0007662235 00000 n +0007665410 00000 n +0007665451 00000 n +0007668627 00000 n +0007668668 00000 n +0007668827 00000 n +0007668948 00000 n +0007669181 00000 n +0007675126 00000 n +0007678342 00000 n +0007678383 00000 n +0007681558 00000 n +0007681599 00000 n +0007681758 00000 n +0007681881 00000 n +0007682101 00000 n +0007684953 00000 n +0007688169 00000 n +0007688210 00000 n +0007691385 00000 n +0007691426 00000 n +0007691585 00000 n +0007691706 00000 n +0007691914 00000 n +0007695082 00000 n +0007698298 00000 n +0007698339 00000 n +0007701514 00000 n +0007701555 00000 n +0007701714 00000 n +0007701837 00000 n +0007702045 00000 n +0007707678 00000 n +0007710894 00000 n +0007710935 00000 n +0007714110 00000 n +0007714151 00000 n +0007714310 00000 n +0007714431 00000 n +0007714611 00000 n +0007718165 00000 n +0007721381 00000 n +0007721422 00000 n +0007721581 00000 n +0007721704 00000 n +0007721924 00000 n +0007724473 00000 n +0007727689 00000 n +0007727730 00000 n +0007730905 00000 n +0007730946 00000 n +0007731105 00000 n +0007731226 00000 n +0007731446 00000 n +0007734258 00000 n +0007737474 00000 n +0007737515 00000 n +0007740690 00000 n +0007740731 00000 n +0007740890 00000 n +0007741013 00000 n +0007741221 00000 n +0007746863 00000 n +0007750079 00000 n +0007750120 00000 n +0007753295 00000 n +0007753336 00000 n +0007753513 00000 n +0007753627 00000 n +0007753741 00000 n +0007753862 00000 n +0007754029 00000 n +0007759392 00000 n +0007762608 00000 n +0007762649 00000 n +0007762835 00000 n +0007762949 00000 n +0007763072 00000 n +0007763196 00000 n +0007763320 00000 n +0007763514 00000 n +0007769144 00000 n +0007772360 00000 n +0007772401 00000 n +0007772569 00000 n +0007772690 00000 n +0007772803 00000 n +0007772984 00000 n +0007778759 00000 n +0007781975 00000 n +0007782016 00000 n +0007782175 00000 n +0007782298 00000 n +0007782465 00000 n +0007786882 00000 n +0007790098 00000 n +0007790139 00000 n +0007790343 00000 n +0007790464 00000 n +0007790590 00000 n +0007790716 00000 n +0007790840 00000 n +0007790964 00000 n +0007791074 00000 n +0007791296 00000 n +0007796006 00000 n +0007799222 00000 n +0007799263 00000 n +0007802438 00000 n +0007802479 00000 n +0007802674 00000 n +0007802797 00000 n +0007802910 00000 n +0007803023 00000 n +0007803149 00000 n +0007803275 00000 n +0007803482 00000 n +0007809221 00000 n +0007812437 00000 n +0007812478 00000 n +0007812700 00000 n +0007812821 00000 n +0007812934 00000 n +0007813046 00000 n +0007813171 00000 n +0007813296 00000 n +0007813421 00000 n +0007813546 00000 n +0007813672 00000 n +0007813866 00000 n +0007819406 00000 n +0007822622 00000 n +0007822663 00000 n +0007822849 00000 n +0007822972 00000 n +0007823097 00000 n +0007823223 00000 n +0007823349 00000 n +0007823543 00000 n +0007827234 00000 n +0007830450 00000 n +0007830491 00000 n +0007830650 00000 n +0007830771 00000 n +0007831007 00000 n +0007835980 00000 n +0007839196 00000 n +0007839237 00000 n +0007842412 00000 n +0007842453 00000 n +0007845628 00000 n +0007845669 00000 n +0007845846 00000 n +0007845969 00000 n +0007846082 00000 n +0007846195 00000 n +0007846376 00000 n +0007849856 00000 n +0007853072 00000 n +0007853113 00000 n +0007853272 00000 n +0007853393 00000 n +0007853613 00000 n +0007856472 00000 n +0007859688 00000 n +0007859729 00000 n +0007862904 00000 n +0007862945 00000 n +0007863131 00000 n +0007863254 00000 n +0007863376 00000 n +0007863496 00000 n +0007863619 00000 n +0007863841 00000 n +0007871885 00000 n +0007875101 00000 n +0007875142 00000 n +0007878317 00000 n +0007878358 00000 n +0007878517 00000 n +0007878638 00000 n +0007878846 00000 n +0007885930 00000 n +0007889146 00000 n +0007889187 00000 n +0007892362 00000 n +0007892403 00000 n +0007892562 00000 n +0007892685 00000 n +0007892852 00000 n +0007896021 00000 n +0007899237 00000 n +0007899278 00000 n +0007899437 00000 n +0007899558 00000 n +0007899766 00000 n +0007906069 00000 n +0007909285 00000 n +0007909326 00000 n +0007912501 00000 n +0007912542 00000 n +0007912710 00000 n +0007912833 00000 n +0007912957 00000 n +0007913138 00000 n +0007918925 00000 n +0007922141 00000 n +0007922182 00000 n +0007922377 00000 n +0007922498 00000 n +0007922624 00000 n +0007922750 00000 n +0007922876 00000 n +0007923002 00000 n +0007923196 00000 n +0007928546 00000 n +0007931762 00000 n +0007931803 00000 n +0007932043 00000 n +0007932166 00000 n +0007932291 00000 n +0007932415 00000 n +0007932542 00000 n +0007932655 00000 n +0007932767 00000 n +0007932879 00000 n +0007932991 00000 n +0007933118 00000 n +0007933244 00000 n +0007933438 00000 n +0007938992 00000 n +0007942208 00000 n +0007942249 00000 n +0007942444 00000 n +0007942570 00000 n +0007942691 00000 n +0007942815 00000 n +0007942927 00000 n +0007943039 00000 n +0007943233 00000 n +0007947265 00000 n +0007950481 00000 n +0007950522 00000 n +0007950690 00000 n +0007950815 00000 n +0007950938 00000 n +0007951119 00000 n +0007955017 00000 n +0007958233 00000 n +0007958274 00000 n +0007958478 00000 n +0007958601 00000 n +0007958727 00000 n +0007958853 00000 n +0007958976 00000 n +0007959097 00000 n +0007959221 00000 n +0007959402 00000 n +0007964446 00000 n +0007967662 00000 n +0007967703 00000 n +0007967871 00000 n +0007967996 00000 n +0007968119 00000 n +0007968300 00000 n +0007972347 00000 n +0007975563 00000 n +0007975604 00000 n +0007975763 00000 n +0007975884 00000 n +0007976065 00000 n +0007979327 00000 n +0007982543 00000 n +0007982584 00000 n +0007982752 00000 n +0007982877 00000 n +0007983000 00000 n +0007983181 00000 n +0007988541 00000 n +0007991757 00000 n +0007991798 00000 n +0007991957 00000 n +0007992078 00000 n +0007992259 00000 n +0007996579 00000 n +0007999795 00000 n +0007999836 00000 n +0007999995 00000 n +0008000118 00000 n +0008000299 00000 n +0008002636 00000 n +0008005852 00000 n +0008005893 00000 n +0008006052 00000 n +0008006173 00000 n +0008006354 00000 n +0008009985 00000 n +0008013201 00000 n +0008013242 00000 n +0008013401 00000 n +0008013524 00000 n +0008013705 00000 n +0008018006 00000 n +0008021222 00000 n +0008021263 00000 n +0008021440 00000 n +0008021566 00000 n +0008021692 00000 n +0008021813 00000 n +0008021994 00000 n +0008027149 00000 n +0008030365 00000 n +0008030406 00000 n +0008030574 00000 n +0008030697 00000 n +0008030822 00000 n +0008031003 00000 n +0008036572 00000 n +0008039788 00000 n +0008039829 00000 n +0008040006 00000 n +0008040131 00000 n +0008040256 00000 n +0008040377 00000 n +0008040558 00000 n +0008045174 00000 n +0008048390 00000 n +0008048431 00000 n +0008048599 00000 n +0008048723 00000 n +0008048846 00000 n +0008049027 00000 n +0008054164 00000 n +0008057380 00000 n +0008057421 00000 n +0008057607 00000 n +0008057729 00000 n +0008057851 00000 n +0008057973 00000 n +0008058094 00000 n +0008058275 00000 n +0008063219 00000 n +0008066435 00000 n +0008066476 00000 n +0008066644 00000 n +0008066767 00000 n +0008066891 00000 n +0008067072 00000 n +0008070726 00000 n +0008073942 00000 n +0008073983 00000 n +0008074142 00000 n +0008074263 00000 n +0008074444 00000 n +0008077293 00000 n +0008080509 00000 n +0008080550 00000 n +0008080709 00000 n +0008080832 00000 n +0008080999 00000 n +0008086434 00000 n +0008089650 00000 n +0008089691 00000 n +0008089859 00000 n +0008089980 00000 n +0008090105 00000 n +0008090286 00000 n +0008092422 00000 n +0008095638 00000 n +0008095679 00000 n +0008095838 00000 n +0008095962 00000 n +0008096129 00000 n +0008098893 00000 n +0008102109 00000 n +0008102150 00000 n +0008102309 00000 n +0008102431 00000 n +0008102611 00000 n +0008106256 00000 n +0008109472 00000 n +0008109513 00000 n +0008109672 00000 n +0008109795 00000 n +0008109975 00000 n +0008112920 00000 n +0008116136 00000 n +0008116177 00000 n +0008116336 00000 n +0008116457 00000 n +0008116624 00000 n +0008119129 00000 n +0008122345 00000 n +0008122386 00000 n +0008122554 00000 n +0008122677 00000 n +0008122803 00000 n +0008123050 00000 n +0008129592 00000 n +0008132808 00000 n +0008132849 00000 n +0008136025 00000 n +0008136066 00000 n +0008136225 00000 n +0008136346 00000 n +0008136540 00000 n +0008141300 00000 n +0008144516 00000 n +0008144557 00000 n +0008144725 00000 n +0008144848 00000 n +0008144974 00000 n +0008145181 00000 n +0008148391 00000 n +0008151607 00000 n +0008151648 00000 n +0008151807 00000 n +0008151928 00000 n +0008152148 00000 n +0008155462 00000 n +0008158678 00000 n +0008158719 00000 n +0008161894 00000 n +0008161935 00000 n +0008162094 00000 n +0008162217 00000 n +0008162411 00000 n +0008168363 00000 n +0008171579 00000 n +0008171620 00000 n +0008171788 00000 n +0008171909 00000 n +0008172033 00000 n +0008172293 00000 n +0008177687 00000 n +0008180903 00000 n +0008180944 00000 n +0008184120 00000 n +0008184161 00000 n +0008184338 00000 n +0008184461 00000 n +0008184587 00000 n +0008184712 00000 n +0008184893 00000 n +0008188598 00000 n +0008191814 00000 n +0008191855 00000 n +0008192023 00000 n +0008192144 00000 n +0008192268 00000 n +0008192462 00000 n +0008196950 00000 n +0008200166 00000 n +0008200207 00000 n +0008200375 00000 n +0008200498 00000 n +0008200624 00000 n +0008200834 00000 n +0008235954 00000 n +0008239170 00000 n +0008239211 00000 n +0008242385 00000 n +0008242426 00000 n +0008242585 00000 n +0008242706 00000 n +0008242928 00000 n +0008248180 00000 n +0008251396 00000 n +0008251437 00000 n +0008254611 00000 n +0008254652 00000 n +0008254829 00000 n +0008254952 00000 n +0008255076 00000 n +0008255199 00000 n +0008255393 00000 n +0008261383 00000 n +0008264599 00000 n +0008264640 00000 n +0008264799 00000 n +0008264920 00000 n +0008265114 00000 n +0008270118 00000 n +0008273334 00000 n +0008273375 00000 n +0008273570 00000 n +0008273693 00000 n +0008273820 00000 n +0008273947 00000 n +0008274073 00000 n +0008274198 00000 n +0008274433 00000 n +0008280256 00000 n +0008283472 00000 n +0008283513 00000 n +0008286689 00000 n +0008286730 00000 n +0008286916 00000 n +0008287037 00000 n +0008287164 00000 n +0008287290 00000 n +0008287415 00000 n +0008287650 00000 n +0008293536 00000 n +0008296752 00000 n +0008296793 00000 n +0008299969 00000 n +0008300010 00000 n +0008300169 00000 n +0008300292 00000 n +0008300527 00000 n +0008305121 00000 n +0008308337 00000 n +0008308378 00000 n +0008311554 00000 n +0008311595 00000 n +0008311772 00000 n +0008311893 00000 n +0008312017 00000 n +0008312141 00000 n +0008312349 00000 n +0008317850 00000 n +0008321066 00000 n +0008321107 00000 n +0008321266 00000 n +0008321389 00000 n +0008321583 00000 n +0008324900 00000 n +0008328116 00000 n +0008328157 00000 n +0008328334 00000 n +0008328455 00000 n +0008328582 00000 n +0008328709 00000 n +0008328917 00000 n +0008333488 00000 n +0008336704 00000 n +0008336745 00000 n +0008336922 00000 n +0008337045 00000 n +0008337168 00000 n +0008337294 00000 n +0008337488 00000 n +0008341562 00000 n +0008344778 00000 n +0008344819 00000 n +0008344978 00000 n +0008345099 00000 n +0008345293 00000 n +0008351416 00000 n +0008354632 00000 n +0008354673 00000 n +0008354841 00000 n +0008354964 00000 n +0008355090 00000 n +0008355284 00000 n +0008359720 00000 n +0008362936 00000 n +0008362977 00000 n +0008363145 00000 n +0008363266 00000 n +0008363393 00000 n +0008363615 00000 n +0008369095 00000 n +0008372311 00000 n +0008372352 00000 n +0008375528 00000 n +0008375569 00000 n +0008375728 00000 n +0008375851 00000 n +0008376073 00000 n +0008381382 00000 n +0008384598 00000 n +0008384639 00000 n +0008387815 00000 n +0008387856 00000 n +0008388024 00000 n +0008388145 00000 n +0008388270 00000 n +0008388451 00000 n +0008392793 00000 n +0008396009 00000 n +0008396050 00000 n +0008396263 00000 n +0008396386 00000 n +0008396511 00000 n +0008396637 00000 n +0008396761 00000 n +0008396888 00000 n +0008397014 00000 n +0008397140 00000 n +0008397334 00000 n +0008403251 00000 n +0008406467 00000 n +0008406508 00000 n +0008406667 00000 n +0008406788 00000 n +0008407008 00000 n +0008409961 00000 n +0008413177 00000 n +0008413218 00000 n +0008416394 00000 n +0008416435 00000 n +0008416621 00000 n +0008416744 00000 n +0008416870 00000 n +0008416997 00000 n +0008417123 00000 n +0008417370 00000 n +0008422373 00000 n +0008425589 00000 n +0008425630 00000 n +0008428806 00000 n +0008428847 00000 n +0008429006 00000 n +0008429127 00000 n +0008429377 00000 n +0008433706 00000 n +0008436922 00000 n +0008436963 00000 n +0008440139 00000 n +0008440180 00000 n +0008443356 00000 n +0008443397 00000 n +0008443565 00000 n +0008443688 00000 n +0008443815 00000 n +0008444050 00000 n +0008449731 00000 n +0008452947 00000 n +0008452988 00000 n +0008456164 00000 n +0008456205 00000 n +0008456364 00000 n +0008456485 00000 n +0008456720 00000 n +0008462340 00000 n +0008465556 00000 n +0008465597 00000 n +0008468773 00000 n +0008468814 00000 n +0008468973 00000 n +0008469096 00000 n +0008469290 00000 n +0008474379 00000 n +0008477595 00000 n +0008477636 00000 n +0008477822 00000 n +0008477943 00000 n +0008478069 00000 n +0008478195 00000 n +0008478322 00000 n +0008478569 00000 n +0008484318 00000 n +0008487534 00000 n +0008487575 00000 n +0008490751 00000 n +0008490792 00000 n +0008490960 00000 n +0008491083 00000 n +0008491210 00000 n +0008491404 00000 n +0008499127 00000 n +0008502343 00000 n +0008502384 00000 n +0008502543 00000 n +0008502664 00000 n +0008502886 00000 n +0008509524 00000 n +0008512740 00000 n +0008512781 00000 n +0008515957 00000 n +0008515998 00000 n +0008516157 00000 n +0008516280 00000 n +0008516474 00000 n +0008522908 00000 n +0008526124 00000 n +0008526165 00000 n +0008526351 00000 n +0008526472 00000 n +0008526595 00000 n +0008526719 00000 n +0008526844 00000 n +0008527038 00000 n +0008533056 00000 n +0008536272 00000 n +0008536313 00000 n +0008536481 00000 n +0008536604 00000 n +0008536731 00000 n +0008536925 00000 n +0008542181 00000 n +0008545397 00000 n +0008545438 00000 n +0008545597 00000 n +0008545718 00000 n +0008545954 00000 n +0008548986 00000 n +0008552202 00000 n +0008552243 00000 n +0008555419 00000 n +0008555460 00000 n +0008558636 00000 n +0008558677 00000 n +0008558854 00000 n +0008558977 00000 n +0008559102 00000 n +0008559224 00000 n +0008559405 00000 n +0008565199 00000 n +0008568415 00000 n +0008568456 00000 n +0008568615 00000 n +0008568736 00000 n +0008568958 00000 n +0008576829 00000 n +0008580045 00000 n +0008580086 00000 n +0008583260 00000 n +0008583301 00000 n +0008583469 00000 n +0008583592 00000 n +0008583718 00000 n +0008583956 00000 n +0008591116 00000 n +0008594332 00000 n +0008594373 00000 n +0008597547 00000 n +0008597588 00000 n +0008600764 00000 n +0008600805 00000 n +0008600982 00000 n +0008601103 00000 n +0008601229 00000 n +0008601353 00000 n +0008601575 00000 n +0008606208 00000 n +0008609424 00000 n +0008609465 00000 n +0008612641 00000 n +0008612682 00000 n +0008612841 00000 n +0008612964 00000 n +0008613186 00000 n +0008617605 00000 n +0008620821 00000 n +0008620862 00000 n +0008624038 00000 n +0008624079 00000 n +0008624238 00000 n +0008624359 00000 n +0008624539 00000 n +0008629700 00000 n +0008632916 00000 n +0008632957 00000 n +0008633116 00000 n +0008633239 00000 n +0008633433 00000 n +0008638308 00000 n +0008641524 00000 n +0008641565 00000 n +0008641742 00000 n +0008641863 00000 n +0008641990 00000 n +0008642117 00000 n +0008642355 00000 n +0008646238 00000 n +0008649454 00000 n +0008649495 00000 n +0008652671 00000 n +0008652712 00000 n +0008655888 00000 n +0008655929 00000 n +0008656124 00000 n +0008656249 00000 n +0008656372 00000 n +0008656498 00000 n +0008656625 00000 n +0008656752 00000 n +0008656933 00000 n +0008662203 00000 n +0008665419 00000 n +0008665460 00000 n +0008665637 00000 n +0008665761 00000 n +0008665882 00000 n +0008666004 00000 n +0008666185 00000 n +0008671074 00000 n +0008674290 00000 n +0008674331 00000 n +0008674499 00000 n +0008674622 00000 n +0008674748 00000 n +0008674929 00000 n +0008679317 00000 n +0008682533 00000 n +0008682574 00000 n +0008682769 00000 n +0008682895 00000 n +0008683021 00000 n +0008683146 00000 n +0008683271 00000 n +0008683392 00000 n +0008683573 00000 n +0008688388 00000 n +0008691604 00000 n +0008691645 00000 n +0008691804 00000 n +0008691927 00000 n +0008692094 00000 n +0008696370 00000 n +0008699586 00000 n +0008699627 00000 n +0008699795 00000 n +0008699921 00000 n +0008700042 00000 n +0008700223 00000 n +0008704805 00000 n +0008708021 00000 n +0008708062 00000 n +0008708239 00000 n +0008708364 00000 n +0008708489 00000 n +0008708612 00000 n +0008708793 00000 n +0008713675 00000 n +0008716891 00000 n +0008716932 00000 n +0008717109 00000 n +0008717235 00000 n +0008717361 00000 n +0008717482 00000 n +0008717663 00000 n +0008722844 00000 n +0008726060 00000 n +0008726101 00000 n +0008726260 00000 n +0008726383 00000 n +0008726564 00000 n +0008730096 00000 n +0008733312 00000 n +0008733353 00000 n +0008733521 00000 n +0008733646 00000 n +0008733767 00000 n +0008733948 00000 n +0008738642 00000 n +0008741858 00000 n +0008741899 00000 n +0008742085 00000 n +0008742211 00000 n +0008742336 00000 n +0008742461 00000 n +0008742584 00000 n +0008742765 00000 n +0008748059 00000 n +0008751275 00000 n +0008751316 00000 n +0008751484 00000 n +0008751609 00000 n +0008751730 00000 n +0008751911 00000 n +0008755741 00000 n +0008758957 00000 n +0008758998 00000 n +0008759220 00000 n +0008759344 00000 n +0008759469 00000 n +0008759595 00000 n +0008759722 00000 n +0008759848 00000 n +0008759973 00000 n +0008760099 00000 n +0008760222 00000 n +0008760403 00000 n +0008765239 00000 n +0008768455 00000 n +0008768496 00000 n +0008768682 00000 n +0008768807 00000 n +0008768932 00000 n +0008769058 00000 n +0008769179 00000 n +0008769360 00000 n +0008773988 00000 n +0008777204 00000 n +0008777245 00000 n +0008777431 00000 n +0008777556 00000 n +0008777682 00000 n +0008777808 00000 n +0008777931 00000 n +0008778112 00000 n +0008781653 00000 n +0008784869 00000 n +0008784910 00000 n +0008785114 00000 n +0008785240 00000 n +0008785366 00000 n +0008785491 00000 n +0008785617 00000 n +0008785743 00000 n +0008785864 00000 n +0008786045 00000 n +0008791686 00000 n +0008794902 00000 n +0008794943 00000 n +0008795129 00000 n +0008795254 00000 n +0008795379 00000 n +0008795504 00000 n +0008795627 00000 n +0008795808 00000 n +0008800592 00000 n +0008803808 00000 n +0008803849 00000 n +0008804044 00000 n +0008804168 00000 n +0008804292 00000 n +0008804416 00000 n +0008804540 00000 n +0008804661 00000 n +0008804842 00000 n +0008808386 00000 n +0008811602 00000 n +0008811643 00000 n +0008811802 00000 n +0008811925 00000 n +0008812092 00000 n +0008815201 00000 n +0008818417 00000 n +0008818458 00000 n +0008818635 00000 n +0008818760 00000 n +0008818886 00000 n +0008819007 00000 n +0008819188 00000 n +0008823931 00000 n +0008827147 00000 n +0008827188 00000 n +0008827356 00000 n +0008827479 00000 n +0008827604 00000 n +0008827785 00000 n +0008832779 00000 n +0008835995 00000 n +0008836036 00000 n +0008836204 00000 n +0008836329 00000 n +0008836450 00000 n +0008836631 00000 n +0008842459 00000 n +0008845675 00000 n +0008845716 00000 n +0008845893 00000 n +0008846018 00000 n +0008846144 00000 n +0008846267 00000 n +0008846448 00000 n +0008852005 00000 n +0008855221 00000 n +0008855262 00000 n +0008855448 00000 n +0008855573 00000 n +0008855698 00000 n +0008855823 00000 n +0008855944 00000 n +0008856125 00000 n +0008861216 00000 n +0008864432 00000 n +0008864473 00000 n +0008864650 00000 n +0008864775 00000 n +0008864900 00000 n +0008865023 00000 n +0008865204 00000 n +0008870624 00000 n +0008873840 00000 n +0008873881 00000 n +0008874049 00000 n +0008874173 00000 n +0008874294 00000 n +0008874475 00000 n +0008879294 00000 n +0008882510 00000 n +0008882551 00000 n +0008882710 00000 n +0008882833 00000 n +0008883014 00000 n +0008886972 00000 n +0008890188 00000 n +0008890229 00000 n +0008890406 00000 n +0008890531 00000 n +0008890657 00000 n +0008890778 00000 n +0008890959 00000 n +0008895847 00000 n +0008899063 00000 n +0008899104 00000 n +0008899308 00000 n +0008899432 00000 n +0008899558 00000 n +0008899683 00000 n +0008899807 00000 n +0008899931 00000 n +0008900054 00000 n +0008900235 00000 n +0008905628 00000 n +0008908844 00000 n +0008908885 00000 n +0008909062 00000 n +0008909188 00000 n +0008909313 00000 n +0008909434 00000 n +0008909615 00000 n +0008915042 00000 n +0008918258 00000 n +0008918299 00000 n +0008918467 00000 n +0008918592 00000 n +0008918715 00000 n +0008918896 00000 n +0008923756 00000 n +0008926972 00000 n +0008927013 00000 n +0008927172 00000 n +0008927293 00000 n +0008927474 00000 n +0008932129 00000 n +0008935345 00000 n +0008935386 00000 n +0008935581 00000 n +0008935707 00000 n +0008935833 00000 n +0008935958 00000 n +0008936084 00000 n +0008936207 00000 n +0008936388 00000 n +0008941777 00000 n +0008944993 00000 n +0008945034 00000 n +0008945247 00000 n +0008945373 00000 n +0008945498 00000 n +0008945624 00000 n +0008945750 00000 n +0008945874 00000 n +0008945998 00000 n +0008946119 00000 n +0008946300 00000 n +0008950584 00000 n +0008953800 00000 n +0008953841 00000 n +0008954018 00000 n +0008954144 00000 n +0008954269 00000 n +0008954392 00000 n +0008954573 00000 n +0008958371 00000 n +0008961587 00000 n +0008961628 00000 n +0008961787 00000 n +0008961908 00000 n +0008962089 00000 n +0008965111 00000 n +0008968327 00000 n +0008968368 00000 n +0008968527 00000 n +0008968650 00000 n +0008968817 00000 n +0008974677 00000 n +0008977893 00000 n +0008977934 00000 n +0008978102 00000 n +0008978223 00000 n +0008978349 00000 n +0008978530 00000 n +0008981048 00000 n +0008984264 00000 n +0008984305 00000 n +0008984464 00000 n +0008984588 00000 n +0008984768 00000 n +0008989369 00000 n +0008992585 00000 n +0008992626 00000 n +0008992803 00000 n +0008992929 00000 n +0008993055 00000 n +0008993177 00000 n +0008993357 00000 n +0008997962 00000 n +0009001178 00000 n +0009001219 00000 n +0009001396 00000 n +0009001519 00000 n +0009001644 00000 n +0009001770 00000 n +0009002005 00000 n +0009008002 00000 n +0009011218 00000 n +0009011259 00000 n +0009014425 00000 n +0009014466 00000 n +0009014634 00000 n +0009014755 00000 n +0009014880 00000 n +0009015150 00000 n +0009020682 00000 n +0009020820 00000 n +0009020958 00000 n +0009024174 00000 n +0009024215 00000 n +0009027391 00000 n +0009027432 00000 n +0009027609 00000 n +0009027732 00000 n +0009027858 00000 n +0009027983 00000 n +0009028290 00000 n +0009034947 00000 n +0009035085 00000 n +0009035222 00000 n +0009035359 00000 n +0009035497 00000 n +0009038713 00000 n +0009038754 00000 n +0009041930 00000 n +0009041971 00000 n +0009042148 00000 n +0009042269 00000 n +0009042395 00000 n +0009042521 00000 n +0009042803 00000 n +0009047286 00000 n +0009047424 00000 n +0009047562 00000 n +0009050778 00000 n +0009050819 00000 n +0009053995 00000 n +0009054036 00000 n +0009054195 00000 n +0009054318 00000 n +0009054679 00000 n +0009060552 00000 n +0009060690 00000 n +0009060828 00000 n +0009060966 00000 n +0009061105 00000 n +0009061244 00000 n +0009061383 00000 n +0009061522 00000 n +0009061661 00000 n +0009061800 00000 n +0009061939 00000 n +0009065155 00000 n +0009065196 00000 n +0009068372 00000 n +0009068413 00000 n +0009068572 00000 n +0009068693 00000 n +0009068976 00000 n +0009075288 00000 n +0009075426 00000 n +0009075564 00000 n +0009078780 00000 n +0009078821 00000 n +0009081997 00000 n +0009082038 00000 n +0009082197 00000 n +0009082320 00000 n +0009082552 00000 n +0009087990 00000 n +0009091206 00000 n +0009091247 00000 n +0009094423 00000 n +0009094464 00000 n +0009094641 00000 n +0009094762 00000 n +0009094888 00000 n +0009095014 00000 n +0009095236 00000 n +0009105043 00000 n +0009108259 00000 n +0009108300 00000 n +0009111474 00000 n +0009111515 00000 n +0009111683 00000 n +0009111806 00000 n +0009111918 00000 n +0009112140 00000 n +0009117787 00000 n +0009121003 00000 n +0009121044 00000 n +0009124219 00000 n +0009124260 00000 n +0009124455 00000 n +0009124576 00000 n +0009124700 00000 n +0009124825 00000 n +0009124950 00000 n +0009125074 00000 n +0009125255 00000 n +0009131975 00000 n +0009135191 00000 n +0009135232 00000 n +0009135436 00000 n +0009135559 00000 n +0009135685 00000 n +0009135810 00000 n +0009135935 00000 n +0009136059 00000 n +0009136184 00000 n +0009136365 00000 n +0009143427 00000 n +0009146643 00000 n +0009146684 00000 n +0009146852 00000 n +0009146973 00000 n +0009147099 00000 n +0009147293 00000 n +0009153947 00000 n +0009157163 00000 n +0009157204 00000 n +0009157381 00000 n +0009157504 00000 n +0009157626 00000 n +0009157749 00000 n +0009157984 00000 n +0009164630 00000 n +0009167846 00000 n +0009167887 00000 n +0009171062 00000 n +0009171103 00000 n +0009171280 00000 n +0009171401 00000 n +0009171527 00000 n +0009171652 00000 n +0009171833 00000 n +0009175647 00000 n +0009178863 00000 n +0009178904 00000 n +0009179090 00000 n +0009179213 00000 n +0009179338 00000 n +0009179464 00000 n +0009179590 00000 n +0009179771 00000 n +0009186539 00000 n +0009189755 00000 n +0009189796 00000 n +0009189964 00000 n +0009190085 00000 n +0009190212 00000 n +0009190509 00000 n +0009197720 00000 n +0009197946 00000 n +0009198056 00000 n +0009198197 00000 n +0009198337 00000 n +0009201553 00000 n +0009201594 00000 n +0009204770 00000 n +0009204811 00000 n +0009204979 00000 n +0009205102 00000 n +0009205228 00000 n +0009205487 00000 n +0009212819 00000 n +0009216035 00000 n +0009216076 00000 n +0009219252 00000 n +0009219293 00000 n +0009219461 00000 n +0009219582 00000 n +0009219709 00000 n +0009219968 00000 n +0009227305 00000 n +0009230521 00000 n +0009230562 00000 n +0009233738 00000 n +0009233779 00000 n +0009233947 00000 n +0009234070 00000 n +0009234197 00000 n +0009234456 00000 n +0009242971 00000 n +0009246187 00000 n +0009246228 00000 n +0009249404 00000 n +0009249445 00000 n +0009249604 00000 n +0009249725 00000 n +0009249919 00000 n +0009255061 00000 n +0009258277 00000 n +0009258318 00000 n +0009258486 00000 n +0009258609 00000 n +0009258734 00000 n +0009258928 00000 n +0009265025 00000 n +0009268241 00000 n +0009268282 00000 n +0009268459 00000 n +0009268580 00000 n +0009268706 00000 n +0009268832 00000 n +0009269054 00000 n +0009280800 00000 n +0009284016 00000 n +0009284057 00000 n +0009287232 00000 n +0009287273 00000 n +0009287441 00000 n +0009287564 00000 n +0009287689 00000 n +0009287938 00000 n +0009300816 00000 n +0009304032 00000 n +0009304073 00000 n +0009307248 00000 n +0009307289 00000 n +0009307448 00000 n +0009307569 00000 n +0009307750 00000 n +0009313733 00000 n +0009316949 00000 n +0009316990 00000 n +0009317149 00000 n +0009317272 00000 n +0009317466 00000 n +0009321224 00000 n +0009324440 00000 n +0009324481 00000 n +0009324649 00000 n +0009324770 00000 n +0009324895 00000 n +0009325117 00000 n +0009331593 00000 n +0009334809 00000 n +0009334850 00000 n +0009338025 00000 n +0009338066 00000 n +0009338225 00000 n +0009338348 00000 n +0009338528 00000 n +0009344434 00000 n +0009347650 00000 n +0009347691 00000 n +0009347850 00000 n +0009347971 00000 n +0009348208 00000 n +0009353991 00000 n +0009357207 00000 n +0009357248 00000 n +0009360423 00000 n +0009360464 00000 n +0009363639 00000 n +0009363680 00000 n +0009363848 00000 n +0009363971 00000 n +0009364095 00000 n +0009364378 00000 n +0009369410 00000 n +0009372626 00000 n +0009372667 00000 n +0009375842 00000 n +0009375883 00000 n +0009379058 00000 n +0009379099 00000 n +0009382274 00000 n +0009382315 00000 n +0009385490 00000 n +0009385531 00000 n +0009385690 00000 n +0009385811 00000 n +0009386035 00000 n +0009391529 00000 n +0009394745 00000 n +0009394786 00000 n +0009397961 00000 n +0009398002 00000 n +0009401177 00000 n +0009401218 00000 n +0009401377 00000 n +0009401500 00000 n +0009401753 00000 n +0009408073 00000 n +0009411289 00000 n +0009411330 00000 n +0009414505 00000 n +0009414546 00000 n +0009417721 00000 n +0009417762 00000 n +0009420937 00000 n +0009420978 00000 n +0009421146 00000 n +0009421267 00000 n +0009421393 00000 n +0009421660 00000 n +0009426883 00000 n +0009430099 00000 n +0009430140 00000 n +0009433315 00000 n +0009433356 00000 n +0009436531 00000 n +0009436572 00000 n +0009439747 00000 n +0009439788 00000 n +0009439947 00000 n +0009440070 00000 n +0009440294 00000 n +0009445299 00000 n +0009448515 00000 n +0009448556 00000 n +0009451731 00000 n +0009451772 00000 n +0009454947 00000 n +0009454988 00000 n +0009455156 00000 n +0009455277 00000 n +0009455401 00000 n +0009455623 00000 n +0009459185 00000 n +0009462401 00000 n +0009462442 00000 n +0009465617 00000 n +0009465658 00000 n +0009465817 00000 n +0009465940 00000 n +0009466172 00000 n +0009471731 00000 n +0009474947 00000 n +0009474988 00000 n +0009478164 00000 n +0009478205 00000 n +0009478364 00000 n +0009478485 00000 n +0009478709 00000 n +0009484366 00000 n +0009487582 00000 n +0009487623 00000 n +0009490798 00000 n +0009490839 00000 n +0009494014 00000 n +0009494055 00000 n +0009494223 00000 n +0009494346 00000 n +0009494472 00000 n +0009494680 00000 n +0009498615 00000 n +0009501831 00000 n +0009501872 00000 n +0009502040 00000 n +0009502161 00000 n +0009502287 00000 n +0009502468 00000 n +0009505593 00000 n +0009508809 00000 n +0009508850 00000 n +0009509027 00000 n +0009509150 00000 n +0009509276 00000 n +0009509401 00000 n +0009509582 00000 n +0009516005 00000 n +0009519221 00000 n +0009519262 00000 n +0009519439 00000 n +0009519560 00000 n +0009519685 00000 n +0009519809 00000 n +0009520003 00000 n +0009525831 00000 n +0009529047 00000 n +0009529088 00000 n +0009529256 00000 n +0009529379 00000 n +0009529503 00000 n +0009529684 00000 n +0009536691 00000 n +0009539907 00000 n +0009539948 00000 n +0009540125 00000 n +0009540246 00000 n +0009540369 00000 n +0009540495 00000 n +0009540689 00000 n +0009546819 00000 n +0009550035 00000 n +0009550076 00000 n +0009550235 00000 n +0009550358 00000 n +0009550525 00000 n +0009556040 00000 n +0009559256 00000 n +0009559297 00000 n +0009559465 00000 n +0009559586 00000 n +0009559713 00000 n +0009559894 00000 n +0009563424 00000 n +0009566640 00000 n +0009566681 00000 n +0009566840 00000 n +0009566963 00000 n +0009567144 00000 n +0009571547 00000 n +0009574763 00000 n +0009574804 00000 n +0009574981 00000 n +0009575107 00000 n +0009575234 00000 n +0009575355 00000 n +0009575549 00000 n +0009579852 00000 n +0009583068 00000 n +0009583109 00000 n +0009583286 00000 n +0009583411 00000 n +0009583537 00000 n +0009583660 00000 n +0009583854 00000 n +0009588599 00000 n +0009591815 00000 n +0009591856 00000 n +0009592015 00000 n +0009592136 00000 n +0009592317 00000 n +0009596480 00000 n +0009599696 00000 n +0009599737 00000 n +0009599923 00000 n +0009600048 00000 n +0009600174 00000 n +0009600299 00000 n +0009600422 00000 n +0009600616 00000 n +0009605218 00000 n +0009608434 00000 n +0009608475 00000 n +0009608706 00000 n +0009608831 00000 n +0009608958 00000 n +0009609083 00000 n +0009609208 00000 n +0009609333 00000 n +0009609460 00000 n +0009609586 00000 n +0009609711 00000 n +0009609832 00000 n +0009610013 00000 n +0009614250 00000 n +0009617466 00000 n +0009617507 00000 n +0009617675 00000 n +0009617801 00000 n +0009617924 00000 n +0009618105 00000 n +0009622784 00000 n +0009626000 00000 n +0009626041 00000 n +0009626209 00000 n +0009626335 00000 n +0009626456 00000 n +0009626650 00000 n +0009631807 00000 n +0009635023 00000 n +0009635064 00000 n +0009635232 00000 n +0009635356 00000 n +0009635479 00000 n +0009635660 00000 n +0009639490 00000 n +0009642706 00000 n +0009642747 00000 n +0009642924 00000 n +0009643050 00000 n +0009643175 00000 n +0009643296 00000 n +0009643477 00000 n +0009646463 00000 n +0009649679 00000 n +0009649720 00000 n +0009649897 00000 n +0009650020 00000 n +0009650146 00000 n +0009650271 00000 n +0009650452 00000 n +0009654923 00000 n +0009658139 00000 n +0009658180 00000 n +0009658348 00000 n +0009658470 00000 n +0009658595 00000 n +0009658789 00000 n +0009662790 00000 n +0009666006 00000 n +0009666047 00000 n +0009666215 00000 n +0009666339 00000 n +0009666464 00000 n +0009666686 00000 n +0009673255 00000 n +0009676471 00000 n +0009676512 00000 n +0009679688 00000 n +0009679729 00000 n +0009679888 00000 n +0009680009 00000 n +0009680203 00000 n +0009687280 00000 n +0009690496 00000 n +0009690537 00000 n +0009690696 00000 n +0009690819 00000 n +0009691013 00000 n +0009698136 00000 n +0009701352 00000 n +0009701393 00000 n +0009701552 00000 n +0009701673 00000 n +0009701853 00000 n +0009707878 00000 n +0009711094 00000 n +0009711135 00000 n +0009711294 00000 n +0009711417 00000 n +0009711584 00000 n +0009718348 00000 n +0009721564 00000 n +0009721605 00000 n +0009721863 00000 n +0009721984 00000 n +0009722110 00000 n +0009722235 00000 n +0009722361 00000 n +0009722487 00000 n +0009722613 00000 n +0009722739 00000 n +0009722863 00000 n +0009722989 00000 n +0009723114 00000 n +0009723239 00000 n +0009723365 00000 n +0009723546 00000 n +0009730235 00000 n +0009733451 00000 n +0009733492 00000 n +0009733651 00000 n +0009733774 00000 n +0009733994 00000 n +0009739692 00000 n +0009739836 00000 n +0009741706 00000 n +0009741961 00000 n +0009742311 00000 n +0009745527 00000 n +0009745568 00000 n +0009748744 00000 n +0009748785 00000 n +0009748953 00000 n +0009749074 00000 n +0009749201 00000 n +0009749382 00000 n +0009756959 00000 n +0009760175 00000 n +0009760216 00000 n +0009760375 00000 n +0009760498 00000 n +0009760678 00000 n +0009767895 00000 n +0009771111 00000 n +0009771152 00000 n +0009771311 00000 n +0009771432 00000 n +0009771612 00000 n +0009779054 00000 n +0009782270 00000 n +0009782311 00000 n +0009782470 00000 n +0009782593 00000 n +0009782760 00000 n +0009789540 00000 n +0009792756 00000 n +0009792797 00000 n +0009792956 00000 n +0009793077 00000 n +0009793244 00000 n +0009800548 00000 n +0009803764 00000 n +0009803805 00000 n +0009803991 00000 n +0009804117 00000 n +0009804243 00000 n +0009804369 00000 n +0009804492 00000 n +0009804659 00000 n +0009808364 00000 n +0009811580 00000 n +0009811621 00000 n +0009811807 00000 n +0009811928 00000 n +0009812055 00000 n +0009812180 00000 n +0009812305 00000 n +0009812499 00000 n +0009818644 00000 n +0009821860 00000 n +0009821901 00000 n +0009822087 00000 n +0009822211 00000 n +0009822335 00000 n +0009822459 00000 n +0009822582 00000 n +0009822749 00000 n +0009827121 00000 n +0009830337 00000 n +0009830378 00000 n +0009830546 00000 n +0009830667 00000 n +0009830794 00000 n +0009830975 00000 n +0009836925 00000 n +0009840141 00000 n +0009840182 00000 n +0009840350 00000 n +0009840473 00000 n +0009840600 00000 n +0009840781 00000 n +0009846573 00000 n +0009849789 00000 n +0009849830 00000 n +0009849998 00000 n +0009850119 00000 n +0009850246 00000 n +0009850427 00000 n +0009856629 00000 n +0009859845 00000 n +0009859886 00000 n +0009860054 00000 n +0009860177 00000 n +0009860304 00000 n +0009860485 00000 n +0009865177 00000 n +0009868393 00000 n +0009868434 00000 n +0009868593 00000 n +0009868714 00000 n +0009868881 00000 n +0009870863 00000 n +0009874079 00000 n +0009874120 00000 n +0009874297 00000 n +0009874420 00000 n +0009874545 00000 n +0009874669 00000 n +0009874863 00000 n +0009880066 00000 n +0009883282 00000 n +0009883323 00000 n +0009883482 00000 n +0009883603 00000 n +0009883770 00000 n +0009887726 00000 n +0009890942 00000 n +0009890983 00000 n +0009891142 00000 n +0009891265 00000 n +0009891432 00000 n +0009897009 00000 n +0009900225 00000 n +0009900266 00000 n +0009900425 00000 n +0009900546 00000 n +0009900713 00000 n +0009907286 00000 n +0009910502 00000 n +0009910543 00000 n +0009910702 00000 n +0009910825 00000 n +0009910992 00000 n +0009917409 00000 n +0009920625 00000 n +0009920666 00000 n +0009920825 00000 n +0009920946 00000 n +0009921113 00000 n +0009927857 00000 n +0009931073 00000 n +0009931114 00000 n +0009931273 00000 n +0009931396 00000 n +0009931563 00000 n +0009937433 00000 n +0009940649 00000 n +0009940690 00000 n +0009940849 00000 n +0009940970 00000 n +0009941137 00000 n +0009945616 00000 n +0009948832 00000 n +0009948873 00000 n +0009949032 00000 n +0009949155 00000 n +0009949322 00000 n +0009953371 00000 n +0009956587 00000 n +0009956628 00000 n +0009956787 00000 n +0009956908 00000 n +0009957075 00000 n +0009960937 00000 n +0009964153 00000 n +0009964194 00000 n +0009964353 00000 n +0009964476 00000 n +0009964657 00000 n +0009970896 00000 n +0009974112 00000 n +0009974153 00000 n +0009974312 00000 n +0009974433 00000 n +0009974600 00000 n +0009977990 00000 n +0009981206 00000 n +0009981247 00000 n +0009981406 00000 n +0009981529 00000 n +0009981696 00000 n +0009986268 00000 n +0009989484 00000 n +0009989525 00000 n +0009989720 00000 n +0009989846 00000 n +0009989972 00000 n +0009990098 00000 n +0009990224 00000 n +0009990345 00000 n +0009990526 00000 n +0009994225 00000 n +0009997441 00000 n +0009997482 00000 n +0009997677 00000 n +0009997803 00000 n +0009997930 00000 n +0009998056 00000 n +0009998182 00000 n +0009998305 00000 n +0009998486 00000 n +0010005335 00000 n +0010008551 00000 n +0010008592 00000 n +0010008814 00000 n +0010008941 00000 n +0010009068 00000 n +0010009194 00000 n +0010009320 00000 n +0010009447 00000 n +0010009572 00000 n +0010009698 00000 n +0010009819 00000 n +0010010000 00000 n +0010016685 00000 n +0010019901 00000 n +0010019942 00000 n +0010020164 00000 n +0010020289 00000 n +0010020415 00000 n +0010020541 00000 n +0010020668 00000 n +0010020793 00000 n +0010020919 00000 n +0010021046 00000 n +0010021169 00000 n +0010021350 00000 n +0010028044 00000 n +0010031260 00000 n +0010031301 00000 n +0010031460 00000 n +0010031581 00000 n +0010031748 00000 n +0010035364 00000 n +0010038580 00000 n +0010038621 00000 n +0010038780 00000 n +0010038903 00000 n +0010039070 00000 n +0010040929 00000 n +0010044145 00000 n +0010044186 00000 n +0010044354 00000 n +0010044475 00000 n +0010044602 00000 n +0010044783 00000 n +0010050667 00000 n +0010053883 00000 n +0010053924 00000 n +0010054092 00000 n +0010054219 00000 n +0010054342 00000 n +0010054523 00000 n +0010060427 00000 n +0010063643 00000 n +0010063684 00000 n +0010063852 00000 n +0010063979 00000 n +0010064100 00000 n +0010064281 00000 n +0010070158 00000 n +0010073374 00000 n +0010073415 00000 n +0010073574 00000 n +0010073697 00000 n +0010073864 00000 n +0010078252 00000 n +0010081468 00000 n +0010081509 00000 n +0010081668 00000 n +0010081789 00000 n +0010081956 00000 n +0010087388 00000 n +0010090604 00000 n +0010090645 00000 n +0010090813 00000 n +0010090936 00000 n +0010091062 00000 n +0010091243 00000 n +0010093829 00000 n +0010097045 00000 n +0010097086 00000 n +0010097262 00000 n +0010097394 00000 n +0010097602 00000 n +0010105819 00000 n +0010109035 00000 n +0010109076 00000 n +0010112251 00000 n +0010112292 00000 n +0010112526 00000 n +0010112728 00000 n +0010112930 00000 n +0010113064 00000 n +0010113258 00000 n +0010117786 00000 n +0010120993 00000 n +0010121034 00000 n +0010121210 00000 n +0010121341 00000 n +0010121535 00000 n +0010125705 00000 n +0010128921 00000 n +0010128962 00000 n +0010129157 00000 n +0010129284 00000 n +0010129411 00000 n +0010129544 00000 n +0010129725 00000 n +0010133845 00000 n +0010137052 00000 n +0010137093 00000 n +0010137270 00000 n +0010137401 00000 n +0010137595 00000 n +0010143165 00000 n +0010146381 00000 n +0010146422 00000 n +0010146599 00000 n +0010146732 00000 n +0010146912 00000 n +0010151073 00000 n +0010154280 00000 n +0010154321 00000 n +0010154498 00000 n +0010154629 00000 n +0010154823 00000 n +0010159680 00000 n +0010162896 00000 n +0010162937 00000 n +0010163114 00000 n +0010163247 00000 n +0010163441 00000 n +0010168633 00000 n +0010171840 00000 n +0010171881 00000 n +0010172076 00000 n +0010172199 00000 n +0010172325 00000 n +0010172456 00000 n +0010172650 00000 n +0010177044 00000 n +0010180260 00000 n +0010180301 00000 n +0010180478 00000 n +0010180611 00000 n +0010180791 00000 n +0010185980 00000 n +0010189187 00000 n +0010189228 00000 n +0010189396 00000 n +0010189531 00000 n +0010189662 00000 n +0010189856 00000 n +0010193471 00000 n +0010196687 00000 n +0010196728 00000 n +0010196914 00000 n +0010197050 00000 n +0010197183 00000 n +0010197364 00000 n +0010201026 00000 n +0010204233 00000 n +0010204274 00000 n +0010204451 00000 n +0010204582 00000 n +0010204749 00000 n +0010208077 00000 n +0010211293 00000 n +0010211334 00000 n +0010211539 00000 n +0010211664 00000 n +0010211788 00000 n +0010211921 00000 n +0010212102 00000 n +0010214970 00000 n +0010218177 00000 n +0010218218 00000 n +0010218377 00000 n +0010218499 00000 n +0010218666 00000 n +0010221678 00000 n +0010224894 00000 n +0010224935 00000 n +0010225094 00000 n +0010225218 00000 n +0010225385 00000 n +0010226878 00000 n +0010230094 00000 n +0010230135 00000 n +0010230600 00000 n +0010230736 00000 n +0010230873 00000 n +0010231010 00000 n +0010231147 00000 n +0010231283 00000 n +0010231420 00000 n +0010231557 00000 n +0010231694 00000 n +0010231831 00000 n +0010231967 00000 n +0010232103 00000 n +0010232239 00000 n +0010232375 00000 n +0010232512 00000 n +0010232648 00000 n +0010232784 00000 n +0010232921 00000 n +0010233058 00000 n +0010233194 00000 n +0010233330 00000 n +0010233467 00000 n +0010233603 00000 n +0010233739 00000 n +0010233875 00000 n +0010234012 00000 n +0010234149 00000 n +0010234286 00000 n +0010234422 00000 n +0010234559 00000 n +0010234695 00000 n +0010234831 00000 n +0010234967 00000 n +0010235103 00000 n +0010235240 00000 n +0010235372 00000 n +0010235553 00000 n +0010239697 00000 n +0010242910 00000 n +0010242951 00000 n +0010243407 00000 n +0010243543 00000 n +0010243680 00000 n +0010243816 00000 n +0010243953 00000 n +0010244090 00000 n +0010244227 00000 n +0010244364 00000 n +0010244499 00000 n +0010244634 00000 n +0010244769 00000 n +0010244903 00000 n +0010245040 00000 n +0010245176 00000 n +0010245313 00000 n +0010245450 00000 n +0010245587 00000 n +0010245724 00000 n +0010245859 00000 n +0010245995 00000 n +0010246131 00000 n +0010246267 00000 n +0010246404 00000 n +0010246541 00000 n +0010246677 00000 n +0010246813 00000 n +0010246950 00000 n +0010247086 00000 n +0010247221 00000 n +0010247357 00000 n +0010247492 00000 n +0010247850 00000 n +0010247987 00000 n +0010248124 00000 n +0010248258 00000 n +0010248439 00000 n +0010253175 00000 n +0010256391 00000 n +0010256432 00000 n +0010256816 00000 n +0010256952 00000 n +0010257089 00000 n +0010257225 00000 n +0010257362 00000 n +0010257499 00000 n +0010257635 00000 n +0010257772 00000 n +0010257909 00000 n +0010258045 00000 n +0010258182 00000 n +0010258319 00000 n +0010258454 00000 n +0010258591 00000 n +0010258728 00000 n +0010258863 00000 n +0010259000 00000 n +0010259137 00000 n +0010259273 00000 n +0010259410 00000 n +0010259547 00000 n +0010259683 00000 n +0010259820 00000 n +0010259956 00000 n +0010260092 00000 n +0010260229 00000 n +0010260360 00000 n +0010260541 00000 n +0010263626 00000 n +0010266839 00000 n +0010266880 00000 n +0010267857 00000 n +0010267991 00000 n +0010268158 00000 n +0010273108 00000 n +0010276331 00000 n +0010276372 00000 n +0010277529 00000 n +0010277661 00000 n +0010277828 00000 n +0010283161 00000 n +0010286384 00000 n +0010286425 00000 n +0010287881 00000 n +0010288014 00000 n +0010288181 00000 n +0010294065 00000 n +0010297288 00000 n +0010297329 00000 n +0010297776 00000 n +0010297907 00000 n +0010298074 00000 n +0010300358 00000 n +0010303581 00000 n +0010303622 00000 n +0010303781 00000 n +0010303892 00000 n +0010304073 00000 n +0010307751 00000 n +0010310958 00000 n +0010310999 00000 n +0010311134 00000 n +0010311212 00000 n +0010312362 00000 n +0010319931 00000 n +0010320457 00000 n +0010320853 00000 n +0010321493 00000 n +0010321903 00000 n +0010322302 00000 n +0010322437 00000 n +0010345395 00000 n +0010345495 00000 n +0010345746 00000 n +0010346281 00000 n +0010346726 00000 n +0010347086 00000 n +0010352665 00000 n +0010352973 00000 n +0010353371 00000 n +0010353619 00000 n +0010373055 00000 n +0010373195 00000 n +0010373588 00000 n +0010374114 00000 n +0010384216 00000 n +0010384650 00000 n +0010384972 00000 n +0010385107 00000 n +0010385423 00000 n +0010385565 00000 n +0010385661 00000 n +0010385927 00000 n +0010386163 00000 n +0010401641 00000 n +0010401799 00000 n +0010402182 00000 n +0010402701 00000 n +0010402960 00000 n +0010406704 00000 n +0010406891 00000 n +0010407086 00000 n +0010407196 00000 n +0010407533 00000 n +0010407750 00000 n +0010411876 00000 n +0010412272 00000 n +0010412805 00000 n +0010413378 00000 n +0010417035 00000 n +0010417174 00000 n +0010417347 00000 n +0010417439 00000 n +0010418304 00000 n +0010419209 00000 n +0010420150 00000 n +0010421091 00000 n +0010422032 00000 n +0010422969 00000 n +0010423833 00000 n +0010423927 00000 n +0010424021 00000 n +0010424115 00000 n +0010424209 00000 n +0010424303 00000 n +0010424397 00000 n +0010424491 00000 n +0010424585 00000 n +0010424668 00000 n +0010424751 00000 n +0010424885 00000 n +0010424979 00000 n +0010425062 00000 n +0010425176 00000 n +0010425270 00000 n +0010425353 00000 n +0010425467 00000 n +0010425561 00000 n +0010425655 00000 n +0010425749 00000 n +0010425832 00000 n +0010425946 00000 n +0010426040 00000 n +0010426134 00000 n +0010426228 00000 n +0010426311 00000 n +0010426425 00000 n +0010426519 00000 n +0010426602 00000 n +0010426716 00000 n +0010426810 00000 n +0010426904 00000 n +0010426998 00000 n +0010427081 00000 n +0010427164 00000 n +0010427915 00000 n +0010428009 00000 n +0010428103 00000 n +0010428197 00000 n +0010428291 00000 n +0010428385 00000 n +0010428479 00000 n +0010428573 00000 n +0010428667 00000 n +0010428761 00000 n +0010428855 00000 n +0010428949 00000 n +0010429043 00000 n +0010429137 00000 n +0010429231 00000 n +0010429325 00000 n +0010429419 00000 n +0010429513 00000 n +0010429607 00000 n +0010429701 00000 n +0010429795 00000 n +0010429889 00000 n +0010429983 00000 n +0010430077 00000 n +0010430171 00000 n +0010430265 00000 n +0010430359 00000 n +0010430453 00000 n +0010430575 00000 n +0010433351 00000 n +0010433410 00000 n +0010433467 00000 n +0010433535 00000 n +0010433607 00000 n +0010433740 00000 n +0010433873 00000 n +0010434006 00000 n +0010434139 00000 n +0010434272 00000 n +0010434405 00000 n +0010434538 00000 n +0010434671 00000 n +0010434804 00000 n +0010434957 00000 n +0010435090 00000 n +0010435223 00000 n +0010435356 00000 n +0010435489 00000 n +0010435622 00000 n +0010435755 00000 n +0010435888 00000 n +0010436021 00000 n +0010436154 00000 n +0010436287 00000 n +0010436420 00000 n +0010436553 00000 n +0010436686 00000 n +0010436819 00000 n +0010436952 00000 n +0010437085 00000 n +0010437218 00000 n +0010437351 00000 n +0010437484 00000 n +0010437617 00000 n +0010437750 00000 n +0010437883 00000 n +0010438016 00000 n +0010438149 00000 n +0010438282 00000 n +0010438415 00000 n +0010438548 00000 n +0010438681 00000 n +0010438814 00000 n +0010438947 00000 n +0010439080 00000 n +0010439213 00000 n +0010439346 00000 n +0010439479 00000 n +0010439612 00000 n +0010439745 00000 n +0010439878 00000 n +0010440011 00000 n +0010440144 00000 n +0010440277 00000 n +0010440410 00000 n +0010440543 00000 n +0010440676 00000 n +0010440809 00000 n +0010440942 00000 n +0010441075 00000 n +0010441208 00000 n +0010441341 00000 n +0010441474 00000 n +0010441607 00000 n +0010441740 00000 n +0010441873 00000 n +0010442006 00000 n +0010442139 00000 n +0010442272 00000 n +0010442405 00000 n +0010442538 00000 n +0010442671 00000 n +0010442804 00000 n +0010442937 00000 n +0010443070 00000 n +0010443203 00000 n +0010443336 00000 n +0010443469 00000 n +0010443602 00000 n +0010443735 00000 n +0010443868 00000 n +0010444031 00000 n +0010444164 00000 n +0010444297 00000 n +0010444430 00000 n +0010444563 00000 n +0010444696 00000 n +0010444829 00000 n +0010444962 00000 n +0010445095 00000 n +0010445228 00000 n +0010445361 00000 n +0010445494 00000 n +0010445627 00000 n +0010445780 00000 n +0010445913 00000 n +0010446046 00000 n +0010446179 00000 n +0010446312 00000 n +0010446465 00000 n +0010446598 00000 n +0010446731 00000 n +0010446864 00000 n +0010446997 00000 n +0010447130 00000 n +0010447263 00000 n +0010447396 00000 n +0010447529 00000 n +0010447662 00000 n +0010447795 00000 n +0010447928 00000 n +0010448061 00000 n +0010448194 00000 n +0010448327 00000 n +0010448460 00000 n +0010448593 00000 n +0010448726 00000 n +0010448859 00000 n +0010448992 00000 n +0010449125 00000 n +0010449258 00000 n +0010449391 00000 n +0010449524 00000 n +0010449657 00000 n +0010449790 00000 n +0010449923 00000 n +0010450056 00000 n +0010450189 00000 n +0010450322 00000 n +0010450455 00000 n +0010450588 00000 n +0010450721 00000 n +0010450854 00000 n +0010450987 00000 n +0010451120 00000 n +0010451253 00000 n +0010451386 00000 n +0010451519 00000 n +0010451652 00000 n +0010451785 00000 n +0010451918 00000 n +0010452051 00000 n +0010452184 00000 n +0010452317 00000 n +0010452450 00000 n +0010452583 00000 n +0010452716 00000 n +0010452849 00000 n +0010452982 00000 n +0010453115 00000 n +0010453248 00000 n +0010453381 00000 n +0010453514 00000 n +0010453647 00000 n +0010453780 00000 n +0010453913 00000 n +0010454046 00000 n +0010454179 00000 n +0010454312 00000 n +0010454445 00000 n +0010454578 00000 n +0010454711 00000 n +0010454844 00000 n +0010454977 00000 n +0010455110 00000 n +0010455243 00000 n +0010455376 00000 n +0010455509 00000 n +0010455642 00000 n +0010455775 00000 n +0010455908 00000 n +0010456041 00000 n +0010456174 00000 n +0010456307 00000 n +0010456440 00000 n +0010456573 00000 n +0010456706 00000 n +0010456839 00000 n +0010456972 00000 n +0010457105 00000 n +0010457238 00000 n +0010457371 00000 n +0010457504 00000 n +0010457637 00000 n +0010457770 00000 n +0010457903 00000 n +0010458036 00000 n +0010458169 00000 n +0010458302 00000 n +0010458435 00000 n +0010458568 00000 n +0010458701 00000 n +0010458834 00000 n +0010458967 00000 n +0010459100 00000 n +0010459233 00000 n +0010459366 00000 n +0010459499 00000 n +0010459632 00000 n +0010459785 00000 n +0010459938 00000 n +0010460071 00000 n +0010460204 00000 n +0010460337 00000 n +0010460470 00000 n +0010460603 00000 n +0010460736 00000 n +0010460869 00000 n +0010461002 00000 n +0010461135 00000 n +0010461268 00000 n +0010461401 00000 n +0010461534 00000 n +0010461667 00000 n +0010461800 00000 n +0010461933 00000 n +0010462066 00000 n +0010462199 00000 n +0010462332 00000 n +0010462465 00000 n +0010462598 00000 n +0010462751 00000 n +0010462884 00000 n +0010463017 00000 n +0010463150 00000 n +0010463283 00000 n +0010463416 00000 n +0010463549 00000 n +0010463682 00000 n +0010463815 00000 n +0010463948 00000 n +0010464081 00000 n +0010464214 00000 n +0010464347 00000 n +0010464500 00000 n +0010464633 00000 n +0010464766 00000 n +0010464899 00000 n +0010465032 00000 n +0010465165 00000 n +0010465298 00000 n +0010465431 00000 n +0010465564 00000 n +0010465697 00000 n +0010465830 00000 n +0010465963 00000 n +0010466096 00000 n +0010466229 00000 n +0010466362 00000 n +0010466495 00000 n +0010466628 00000 n +0010466761 00000 n +0010466894 00000 n +0010467027 00000 n +0010467160 00000 n +0010467293 00000 n +0010467426 00000 n +0010467589 00000 n +0010467722 00000 n +0010467875 00000 n +0010468041 00000 n +0010468189 00000 n +0010468337 00000 n +0010468467 00000 n +0010468597 00000 n +0010468727 00000 n +0010468893 00000 n +0010469050 00000 n +0010469207 00000 n +0010469355 00000 n +0010469512 00000 n +0010469660 00000 n +0010469817 00000 n +0010469974 00000 n +0010470104 00000 n +0010470234 00000 n +0010470418 00000 n +0010470548 00000 n +0010470696 00000 n +0010470826 00000 n +0010470956 00000 n +0010471086 00000 n +0010471216 00000 n +0010471364 00000 n +0010471494 00000 n +0010471624 00000 n +0010471754 00000 n +0010471884 00000 n +0010472014 00000 n +0010472144 00000 n +0010472274 00000 n +0010472422 00000 n +0010472552 00000 n +0010472682 00000 n +0010472812 00000 n +0010472942 00000 n +0010473072 00000 n +0010473202 00000 n +0010473332 00000 n +0010473457 00000 n +0010473539 00000 n +0010473619 00000 n +0010473701 00000 n +0010473781 00000 n +0010473863 00000 n +0010473943 00000 n +0010474025 00000 n +0010474105 00000 n +0010474187 00000 n +0010474267 00000 n +0010474349 00000 n +0010474429 00000 n +0010474511 00000 n +0010474591 00000 n +0010474673 00000 n +0010474753 00000 n +0010474835 00000 n +0010474915 00000 n +0010474995 00000 n +0010475077 00000 n +0010475157 00000 n +0010475239 00000 n +0010475319 00000 n +0010475401 00000 n +0010475481 00000 n +0010475563 00000 n +0010475643 00000 n +0010475725 00000 n +0010475805 00000 n +0010475887 00000 n +0010475967 00000 n +0010476049 00000 n +0010476129 00000 n +0010476211 00000 n +0010476291 00000 n +0010476371 00000 n +0010476453 00000 n +0010476533 00000 n +0010476615 00000 n +0010476695 00000 n +0010476777 00000 n +0010476857 00000 n +0010476938 00000 n +0010477017 00000 n +0010477098 00000 n +0010477177 00000 n +0010477256 00000 n +0010477337 00000 n +0010477416 00000 n +0010477499 00000 n +0010477580 00000 n +0010477661 00000 n +0010477742 00000 n +0010477823 00000 n +0010477904 00000 n +0010477987 00000 n +0010478068 00000 n +0010478151 00000 n +0010478232 00000 n +0010478315 00000 n +0010478396 00000 n +0010478477 00000 n +0010478560 00000 n +0010478641 00000 n +0010478722 00000 n +0010478805 00000 n +0010478886 00000 n +0010478967 00000 n +0010479050 00000 n +0010479131 00000 n +0010479212 00000 n +0010479295 00000 n +0010479376 00000 n +0010479457 00000 n +0010479540 00000 n +0010479621 00000 n +0010479702 00000 n +0010479785 00000 n +0010479866 00000 n +0010479947 00000 n +0010480030 00000 n +0010480111 00000 n +0010480192 00000 n +0010480275 00000 n +0010480356 00000 n +0010480439 00000 n +0010480520 00000 n +0010480603 00000 n +0010480684 00000 n +0010480767 00000 n +0010480848 00000 n +0010480929 00000 n +0010481012 00000 n +0010481093 00000 n +0010481174 00000 n +0010481257 00000 n +0010481338 00000 n +0010481432 00000 n +0010481513 00000 n +0010481596 00000 n +0010481679 00000 n +0010481807 00000 n +0010481888 00000 n +0010481969 00000 n +0010482050 00000 n +0010482131 00000 n +0010482212 00000 n +0010482365 00000 n +0010482518 00000 n +0010482671 00000 n +0010482753 00000 n +0010482907 00000 n +0010482991 00000 n +0010483073 00000 n +0010483168 00000 n +0010483250 00000 n +0010483345 00000 n +0010483428 00000 n +0010483582 00000 n +0010483665 00000 n +0010483819 00000 n +0010483903 00000 n +0010483985 00000 n +0010484080 00000 n +0010484163 00000 n +0010484317 00000 n +0010484401 00000 n +0010484483 00000 n +0010484578 00000 n +0010484660 00000 n +0010484744 00000 n +0010484859 00000 n +0010484942 00000 n +0010485025 00000 n +0010485108 00000 n +0010485262 00000 n +0010485416 00000 n +0010485499 00000 n +0010485653 00000 n +0010485737 00000 n +0010485819 00000 n +0010485914 00000 n +0010485997 00000 n +0010486151 00000 n +0010486235 00000 n +0010486317 00000 n +0010486412 00000 n +0010486495 00000 n +0010486649 00000 n +0010486733 00000 n +0010486815 00000 n +0010486910 00000 n +0010486993 00000 n +0010487147 00000 n +0010487231 00000 n +0010487313 00000 n +0010487408 00000 n +0010487491 00000 n +0010487645 00000 n +0010487729 00000 n +0010487811 00000 n +0010487906 00000 n +0010487989 00000 n +0010488143 00000 n +0010488227 00000 n +0010488309 00000 n +0010488404 00000 n +0010488487 00000 n +0010488642 00000 n +0010488726 00000 n +0010488808 00000 n +0010488903 00000 n +0010488986 00000 n +0010489141 00000 n +0010489225 00000 n +0010489307 00000 n +0010489402 00000 n +0010489485 00000 n +0010489640 00000 n +0010489724 00000 n +0010489806 00000 n +0010489901 00000 n +0010489984 00000 n +0010490139 00000 n +0010490223 00000 n +0010490305 00000 n +0010490400 00000 n +0010490483 00000 n +0010490638 00000 n +0010490722 00000 n +0010490804 00000 n +0010490899 00000 n +0010490982 00000 n +0010491137 00000 n +0010491221 00000 n +0010491303 00000 n +0010491398 00000 n +0010491481 00000 n +0010491636 00000 n +0010491720 00000 n +0010491802 00000 n +0010491897 00000 n +0010491980 00000 n +0010492134 00000 n +0010492218 00000 n +0010492300 00000 n +0010492395 00000 n +0010492478 00000 n +0010492633 00000 n +0010492717 00000 n +0010492799 00000 n +0010492894 00000 n +0010492977 00000 n +0010493132 00000 n +0010493216 00000 n +0010493298 00000 n +0010493393 00000 n +0010493476 00000 n +0010493631 00000 n +0010493715 00000 n +0010493797 00000 n +0010493892 00000 n +0010493975 00000 n +0010494130 00000 n +0010494214 00000 n +0010494296 00000 n +0010494391 00000 n +0010494474 00000 n +0010494629 00000 n +0010494713 00000 n +0010494795 00000 n +0010494890 00000 n +0010494973 00000 n +0010495128 00000 n +0010495212 00000 n +0010495294 00000 n +0010495389 00000 n +0010495472 00000 n +0010495626 00000 n +0010495710 00000 n +0010495792 00000 n +0010495887 00000 n +0010495970 00000 n +0010496125 00000 n +0010496209 00000 n +0010496291 00000 n +0010496386 00000 n +0010496469 00000 n +0010496624 00000 n +0010496708 00000 n +0010496790 00000 n +0010496885 00000 n +0010496967 00000 n +0010497062 00000 n +0010497145 00000 n +0010497300 00000 n +0010497383 00000 n +0010497536 00000 n +0010497620 00000 n +0010497702 00000 n +0010497797 00000 n +0010497880 00000 n +0010498034 00000 n +0010498118 00000 n +0010498200 00000 n +0010498295 00000 n +0010498378 00000 n +0010498533 00000 n +0010498617 00000 n +0010498699 00000 n +0010498794 00000 n +0010498877 00000 n +0010499032 00000 n +0010499116 00000 n +0010499198 00000 n +0010499293 00000 n +0010499376 00000 n +0010499531 00000 n +0010499615 00000 n +0010499697 00000 n +0010499792 00000 n +0010499875 00000 n +0010500030 00000 n +0010500114 00000 n +0010500196 00000 n +0010500291 00000 n +0010500374 00000 n +0010500529 00000 n +0010500613 00000 n +0010500695 00000 n +0010500790 00000 n +0010500873 00000 n +0010501027 00000 n +0010501111 00000 n +0010501193 00000 n +0010501288 00000 n +0010501371 00000 n +0010501526 00000 n +0010501610 00000 n +0010501692 00000 n +0010501787 00000 n +0010501870 00000 n +0010502024 00000 n +0010502108 00000 n +0010502190 00000 n +0010502285 00000 n +0010502368 00000 n +0010502522 00000 n +0010502606 00000 n +0010502688 00000 n +0010502783 00000 n +0010502866 00000 n +0010503021 00000 n +0010503105 00000 n +0010503187 00000 n +0010503282 00000 n +0010503365 00000 n +0010503519 00000 n +0010503603 00000 n +0010503685 00000 n +0010503780 00000 n +0010503862 00000 n +0010503957 00000 n +0010504040 00000 n +0010504194 00000 n +0010504277 00000 n +0010504432 00000 n +0010504516 00000 n +0010504598 00000 n +0010504693 00000 n +0010504776 00000 n +0010504931 00000 n +0010505015 00000 n +0010505097 00000 n +0010505192 00000 n +0010505275 00000 n +0010505430 00000 n +0010505514 00000 n +0010505596 00000 n +0010505691 00000 n +0010505774 00000 n +0010505929 00000 n +0010506013 00000 n +0010506095 00000 n +0010506190 00000 n +0010506273 00000 n +0010506427 00000 n +0010506511 00000 n +0010506593 00000 n +0010506688 00000 n +0010506771 00000 n +0010506925 00000 n +0010507009 00000 n +0010507091 00000 n +0010507186 00000 n +0010507269 00000 n +0010507424 00000 n +0010507508 00000 n +0010507590 00000 n +0010507685 00000 n +0010507768 00000 n +0010507922 00000 n +0010508006 00000 n +0010508088 00000 n +0010508183 00000 n +0010508266 00000 n +0010508420 00000 n +0010508504 00000 n +0010508586 00000 n +0010508681 00000 n +0010508764 00000 n +0010508919 00000 n +0010509003 00000 n +0010509085 00000 n +0010509180 00000 n +0010509263 00000 n +0010509417 00000 n +0010509501 00000 n +0010509583 00000 n +0010509678 00000 n +0010509761 00000 n +0010509916 00000 n +0010509999 00000 n +0010510080 00000 n +0010510175 00000 n +0010510257 00000 n +0010510412 00000 n +0010510495 00000 n +0010510576 00000 n +0010510671 00000 n +0010510753 00000 n +0010510908 00000 n +0010510991 00000 n +0010511072 00000 n +0010511167 00000 n +0010511249 00000 n +0010511404 00000 n +0010511487 00000 n +0010511568 00000 n +0010511663 00000 n +0010511745 00000 n +0010511900 00000 n +0010511983 00000 n +0010512064 00000 n +0010512159 00000 n +0010512241 00000 n +0010512396 00000 n +0010512479 00000 n +0010512560 00000 n +0010512655 00000 n +0010512737 00000 n +0010512892 00000 n +0010512975 00000 n +0010513056 00000 n +0010513151 00000 n +0010513233 00000 n +0010513388 00000 n +0010513471 00000 n +0010513552 00000 n +0010513647 00000 n +0010513729 00000 n +0010513884 00000 n +0010513967 00000 n +0010514048 00000 n +0010514143 00000 n +0010514225 00000 n +0010514380 00000 n +0010514463 00000 n +0010514544 00000 n +0010514639 00000 n +0010514720 00000 n +0010514815 00000 n +0010514897 00000 n +0010515051 00000 n +0010515133 00000 n +0010515288 00000 n +0010515371 00000 n +0010515452 00000 n +0010515547 00000 n +0010515628 00000 n +0010515723 00000 n +0010515805 00000 n +0010515959 00000 n +0010516041 00000 n +0010516196 00000 n +0010516279 00000 n +0010516360 00000 n +0010516455 00000 n +0010516537 00000 n +0010516692 00000 n +0010516775 00000 n +0010516856 00000 n +0010516951 00000 n +0010517033 00000 n +0010517188 00000 n +0010517271 00000 n +0010517352 00000 n +0010517447 00000 n +0010517529 00000 n +0010517684 00000 n +0010517767 00000 n +0010517848 00000 n +0010517943 00000 n +0010518025 00000 n +0010518177 00000 n +0010518260 00000 n +0010518341 00000 n +0010518436 00000 n +0010518518 00000 n +0010518670 00000 n +0010518753 00000 n +0010518834 00000 n +0010518929 00000 n +0010519011 00000 n +0010519166 00000 n +0010519249 00000 n +0010519330 00000 n +0010519425 00000 n +0010519507 00000 n +0010519662 00000 n +0010519745 00000 n +0010519826 00000 n +0010519921 00000 n +0010520003 00000 n +0010520158 00000 n +0010520241 00000 n +0010520322 00000 n +0010520417 00000 n +0010520499 00000 n +0010520653 00000 n +0010520736 00000 n +0010520817 00000 n +0010520912 00000 n +0010520994 00000 n +0010521149 00000 n +0010521232 00000 n +0010521313 00000 n +0010521408 00000 n +0010521490 00000 n +0010521645 00000 n +0010521728 00000 n +0010521809 00000 n +0010521904 00000 n +0010521986 00000 n +0010522141 00000 n +0010522224 00000 n +0010522305 00000 n +0010522400 00000 n +0010522482 00000 n +0010522637 00000 n +0010522720 00000 n +0010522801 00000 n +0010522896 00000 n +0010522978 00000 n +0010523133 00000 n +0010523216 00000 n +0010523297 00000 n +0010523392 00000 n +0010523474 00000 n +0010523629 00000 n +0010523712 00000 n +0010523793 00000 n +0010523888 00000 n +0010523970 00000 n +0010524125 00000 n +0010524208 00000 n +0010524289 00000 n +0010524384 00000 n +0010524466 00000 n +0010524621 00000 n +0010524703 00000 n +0010524784 00000 n +0010524879 00000 n +0010524961 00000 n +0010525116 00000 n +0010525198 00000 n +0010525278 00000 n +0010525373 00000 n +0010525454 00000 n +0010525609 00000 n +0010525691 00000 n +0010525771 00000 n +0010525866 00000 n +0010525947 00000 n +0010526102 00000 n +0010526184 00000 n +0010526264 00000 n +0010526359 00000 n +0010526440 00000 n +0010526595 00000 n +0010526679 00000 n +0010526761 00000 n +0010526856 00000 n +0010526939 00000 n +0010527094 00000 n +0010527178 00000 n +0010527260 00000 n +0010527355 00000 n +0010527438 00000 n +0010527593 00000 n +0010527677 00000 n +0010527759 00000 n +0010527854 00000 n +0010527937 00000 n +0010528092 00000 n +0010528176 00000 n +0010528258 00000 n +0010528353 00000 n +0010528436 00000 n +0010528591 00000 n +0010528675 00000 n +0010528757 00000 n +0010528852 00000 n +0010528935 00000 n +0010529090 00000 n +0010529174 00000 n +0010529256 00000 n +0010529351 00000 n +0010529434 00000 n +0010529589 00000 n +0010529673 00000 n +0010529755 00000 n +0010529850 00000 n +0010529933 00000 n +0010530088 00000 n +0010530172 00000 n +0010530254 00000 n +0010530349 00000 n +0010530432 00000 n +0010530587 00000 n +0010530671 00000 n +0010530753 00000 n +0010530848 00000 n +0010530931 00000 n +0010531086 00000 n +0010531170 00000 n +0010531252 00000 n +0010531347 00000 n +0010531430 00000 n +0010531585 00000 n +0010531669 00000 n +0010531751 00000 n +0010531846 00000 n +0010531929 00000 n +0010532084 00000 n +0010532168 00000 n +0010532250 00000 n +0010532345 00000 n +0010532428 00000 n +0010532583 00000 n +0010532667 00000 n +0010532749 00000 n +0010532844 00000 n +0010532927 00000 n +0010533082 00000 n +0010533166 00000 n +0010533248 00000 n +0010533343 00000 n +0010533426 00000 n +0010533581 00000 n +0010533665 00000 n +0010533747 00000 n +0010533842 00000 n +0010533925 00000 n +0010534080 00000 n +0010534164 00000 n +0010534246 00000 n +0010534341 00000 n +0010534424 00000 n +0010534579 00000 n +0010534663 00000 n +0010534745 00000 n +0010534840 00000 n +0010534923 00000 n +0010535078 00000 n +0010535162 00000 n +0010535244 00000 n +0010535339 00000 n +0010535422 00000 n +0010535577 00000 n +0010535661 00000 n +0010535743 00000 n +0010535838 00000 n +0010535921 00000 n +0010536076 00000 n +0010536160 00000 n +0010536242 00000 n +0010536337 00000 n +0010536420 00000 n +0010536575 00000 n +0010536659 00000 n +0010536741 00000 n +0010536836 00000 n +0010536919 00000 n +0010537073 00000 n +0010537157 00000 n +0010537239 00000 n +0010537334 00000 n +0010537417 00000 n +0010537571 00000 n +0010537655 00000 n +0010537737 00000 n +0010537832 00000 n +0010537915 00000 n +0010538070 00000 n +0010538154 00000 n +0010538236 00000 n +0010538331 00000 n +0010538414 00000 n +0010538569 00000 n +0010538653 00000 n +0010538735 00000 n +0010538830 00000 n +0010538913 00000 n +0010539067 00000 n +0010539151 00000 n +0010539233 00000 n +0010539328 00000 n +0010539411 00000 n +0010539566 00000 n +0010539650 00000 n +0010539732 00000 n +0010539827 00000 n +0010539910 00000 n +0010540065 00000 n +0010540149 00000 n +0010540231 00000 n +0010540326 00000 n +0010540409 00000 n +0010540564 00000 n +0010540648 00000 n +0010540730 00000 n +0010540825 00000 n +0010540908 00000 n +0010541062 00000 n +0010541146 00000 n +0010541228 00000 n +0010541323 00000 n +0010541406 00000 n +0010541561 00000 n +0010541645 00000 n +0010541727 00000 n +0010541822 00000 n +0010541905 00000 n +0010542060 00000 n +0010542144 00000 n +0010542226 00000 n +0010542321 00000 n +0010542404 00000 n +0010542559 00000 n +0010542643 00000 n +0010542725 00000 n +0010542820 00000 n +0010542903 00000 n +0010543058 00000 n +0010543142 00000 n +0010543224 00000 n +0010543319 00000 n +0010543402 00000 n +0010543557 00000 n +0010543641 00000 n +0010543723 00000 n +0010543818 00000 n +0010543901 00000 n +0010544056 00000 n +0010544140 00000 n +0010544222 00000 n +0010544317 00000 n +0010544400 00000 n +0010544555 00000 n +0010544639 00000 n +0010544721 00000 n +0010544816 00000 n +0010544899 00000 n +0010545053 00000 n +0010545137 00000 n +0010545219 00000 n +0010545314 00000 n +0010545397 00000 n +0010545552 00000 n +0010545636 00000 n +0010545718 00000 n +0010545813 00000 n +0010545896 00000 n +0010546051 00000 n +0010546135 00000 n +0010546217 00000 n +0010546312 00000 n +0010546395 00000 n +0010546549 00000 n +0010546633 00000 n +0010546715 00000 n +0010546810 00000 n +0010546893 00000 n +0010547047 00000 n +0010547131 00000 n +0010547213 00000 n +0010547308 00000 n +0010547391 00000 n +0010547546 00000 n +0010547630 00000 n +0010547712 00000 n +0010547807 00000 n +0010547890 00000 n +0010548045 00000 n +0010548129 00000 n +0010548211 00000 n +0010548306 00000 n +0010548389 00000 n +0010548544 00000 n +0010548628 00000 n +0010548710 00000 n +0010548805 00000 n +0010548888 00000 n +0010549043 00000 n +0010549127 00000 n +0010549209 00000 n +0010549304 00000 n +0010549387 00000 n +0010549542 00000 n +0010549626 00000 n +0010549708 00000 n +0010549803 00000 n +0010549886 00000 n +0010550041 00000 n +0010550125 00000 n +0010550207 00000 n +0010550302 00000 n +0010550385 00000 n +0010550540 00000 n +0010550624 00000 n +0010550706 00000 n +0010550801 00000 n +0010550884 00000 n +0010551039 00000 n +0010551123 00000 n +0010551205 00000 n +0010551300 00000 n +0010551383 00000 n +0010551538 00000 n +0010551622 00000 n +0010551704 00000 n +0010551799 00000 n +0010551882 00000 n +0010552037 00000 n +0010552121 00000 n +0010552203 00000 n +0010552298 00000 n +0010552381 00000 n +0010552536 00000 n +0010552620 00000 n +0010552702 00000 n +0010552797 00000 n +0010552880 00000 n +0010553035 00000 n +0010553119 00000 n +0010553201 00000 n +0010553296 00000 n +0010553379 00000 n +0010553534 00000 n +0010553618 00000 n +0010553700 00000 n +0010553795 00000 n +0010553878 00000 n +0010554033 00000 n +0010554117 00000 n +0010554199 00000 n +0010554294 00000 n +0010554377 00000 n +0010554532 00000 n +0010554616 00000 n +0010554698 00000 n +0010554793 00000 n +0010554876 00000 n +0010555031 00000 n +0010555115 00000 n +0010555197 00000 n +0010555292 00000 n +0010555375 00000 n +0010555530 00000 n +0010555614 00000 n +0010555696 00000 n +0010555791 00000 n +0010555874 00000 n +0010556029 00000 n +0010556113 00000 n +0010556195 00000 n +0010556290 00000 n +0010556373 00000 n +0010556528 00000 n +0010556612 00000 n +0010556694 00000 n +0010556789 00000 n +0010556872 00000 n +0010557027 00000 n +0010557111 00000 n +0010557193 00000 n +0010557288 00000 n +0010557371 00000 n +0010557526 00000 n +0010557610 00000 n +0010557692 00000 n +0010557787 00000 n +0010557870 00000 n +0010558025 00000 n +0010558109 00000 n +0010558191 00000 n +0010558286 00000 n +0010558369 00000 n +0010558524 00000 n +0010558607 00000 n +0010558688 00000 n +0010558783 00000 n +0010558865 00000 n +0010559020 00000 n +0010559103 00000 n +0010559184 00000 n +0010559279 00000 n +0010559361 00000 n +0010559516 00000 n +0010559599 00000 n +0010559680 00000 n +0010559775 00000 n +0010559857 00000 n +0010560012 00000 n +0010560095 00000 n +0010560176 00000 n +0010560271 00000 n +0010560353 00000 n +0010560507 00000 n +0010560590 00000 n +0010560671 00000 n +0010560766 00000 n +0010560848 00000 n +0010561002 00000 n +0010561085 00000 n +0010561166 00000 n +0010561261 00000 n +0010561343 00000 n +0010561498 00000 n +0010561581 00000 n +0010561662 00000 n +0010561757 00000 n +0010561839 00000 n +0010561994 00000 n +0010562077 00000 n +0010562158 00000 n +0010562253 00000 n +0010562335 00000 n +0010562489 00000 n +0010562572 00000 n +0010562653 00000 n +0010562748 00000 n +0010562830 00000 n +0010562985 00000 n +0010563068 00000 n +0010563149 00000 n +0010563244 00000 n +0010563326 00000 n +0010563480 00000 n +0010563563 00000 n +0010563644 00000 n +0010563739 00000 n +0010563821 00000 n +0010563976 00000 n +0010564059 00000 n +0010564140 00000 n +0010564235 00000 n +0010564317 00000 n +0010564472 00000 n +0010564555 00000 n +0010564636 00000 n +0010564731 00000 n +0010564813 00000 n +0010564967 00000 n +0010565050 00000 n +0010565131 00000 n +0010565226 00000 n +0010565308 00000 n +0010565463 00000 n +0010565546 00000 n +0010565627 00000 n +0010565722 00000 n +0010565803 00000 n +0010565898 00000 n +0010565980 00000 n +0010566134 00000 n +0010566216 00000 n +0010566371 00000 n +0010566454 00000 n +0010566535 00000 n +0010566630 00000 n +0010566712 00000 n +0010566867 00000 n +0010566950 00000 n +0010567031 00000 n +0010567126 00000 n +0010567208 00000 n +0010567363 00000 n +0010567446 00000 n +0010567527 00000 n +0010567622 00000 n +0010567704 00000 n +0010567859 00000 n +0010567942 00000 n +0010568023 00000 n +0010568118 00000 n +0010568200 00000 n +0010568355 00000 n +0010568438 00000 n +0010568519 00000 n +0010568614 00000 n +0010568695 00000 n +0010568790 00000 n +0010568872 00000 n +0010569026 00000 n +0010569108 00000 n +0010569263 00000 n +0010569346 00000 n +0010569427 00000 n +0010569522 00000 n +0010569604 00000 n +0010569759 00000 n +0010569842 00000 n +0010569923 00000 n +0010570018 00000 n +0010570100 00000 n +0010570255 00000 n +0010570338 00000 n +0010570419 00000 n +0010570514 00000 n +0010570596 00000 n +0010570751 00000 n +0010570834 00000 n +0010570915 00000 n +0010571010 00000 n +0010571092 00000 n +0010571247 00000 n +0010571330 00000 n +0010571411 00000 n +0010571506 00000 n +0010571588 00000 n +0010571743 00000 n +0010571826 00000 n +0010571907 00000 n +0010572002 00000 n +0010572084 00000 n +0010572239 00000 n +0010572322 00000 n +0010572403 00000 n +0010572498 00000 n +0010572580 00000 n +0010572735 00000 n +0010572818 00000 n +0010572899 00000 n +0010572994 00000 n +0010573076 00000 n +0010573231 00000 n +0010573313 00000 n +0010573394 00000 n +0010573489 00000 n +0010573571 00000 n +0010573723 00000 n +0010573805 00000 n +0010573885 00000 n +0010573980 00000 n +0010574061 00000 n +0010574216 00000 n +0010574298 00000 n +0010574378 00000 n +0010574473 00000 n +0010574554 00000 n +0010574706 00000 n +0010574788 00000 n +0010574868 00000 n +0010574963 00000 n +0010575044 00000 n +0010575196 00000 n +0010575280 00000 n +0010575362 00000 n +0010575457 00000 n +0010575539 00000 n +0010575623 00000 n +0010575705 00000 n +0010575859 00000 n +0010575942 00000 n +0010576095 00000 n +0010576179 00000 n +0010576261 00000 n +0010576356 00000 n +0010576439 00000 n +0010576593 00000 n +0010576677 00000 n +0010576759 00000 n +0010576854 00000 n +0010576937 00000 n +0010577090 00000 n +0010577174 00000 n +0010577256 00000 n +0010577351 00000 n +0010577434 00000 n +0010577588 00000 n +0010577672 00000 n +0010577754 00000 n +0010577849 00000 n +0010577932 00000 n +0010578086 00000 n +0010578170 00000 n +0010578252 00000 n +0010578347 00000 n +0010578430 00000 n +0010578584 00000 n +0010578668 00000 n +0010578750 00000 n +0010578845 00000 n +0010578928 00000 n +0010579082 00000 n +0010579166 00000 n +0010579248 00000 n +0010579343 00000 n +0010579426 00000 n +0010579580 00000 n +0010579664 00000 n +0010579746 00000 n +0010579841 00000 n +0010579924 00000 n +0010580078 00000 n +0010580162 00000 n +0010580244 00000 n +0010580339 00000 n +0010580422 00000 n +0010580576 00000 n +0010580660 00000 n +0010580742 00000 n +0010580837 00000 n +0010580920 00000 n +0010581074 00000 n +0010581158 00000 n +0010581240 00000 n +0010581335 00000 n +0010581418 00000 n +0010581573 00000 n +0010581657 00000 n +0010581739 00000 n +0010581834 00000 n +0010581917 00000 n +0010582072 00000 n +0010582156 00000 n +0010582238 00000 n +0010582333 00000 n +0010582416 00000 n +0010582570 00000 n +0010582654 00000 n +0010582736 00000 n +0010582831 00000 n +0010582914 00000 n +0010583069 00000 n +0010583153 00000 n +0010583235 00000 n +0010583330 00000 n +0010583413 00000 n +0010583568 00000 n +0010583652 00000 n +0010583734 00000 n +0010583829 00000 n +0010583912 00000 n +0010584066 00000 n +0010584150 00000 n +0010584232 00000 n +0010584327 00000 n +0010584410 00000 n +0010584565 00000 n +0010584649 00000 n +0010584731 00000 n +0010584826 00000 n +0010584909 00000 n +0010585064 00000 n +0010585148 00000 n +0010585230 00000 n +0010585325 00000 n +0010585408 00000 n +0010585563 00000 n +0010585647 00000 n +0010585729 00000 n +0010585824 00000 n +0010585907 00000 n +0010586062 00000 n +0010586146 00000 n +0010586228 00000 n +0010586323 00000 n +0010586406 00000 n +0010586561 00000 n +0010586645 00000 n +0010586727 00000 n +0010586822 00000 n +0010586905 00000 n +0010587059 00000 n +0010587143 00000 n +0010587225 00000 n +0010587320 00000 n +0010587403 00000 n +0010587557 00000 n +0010587641 00000 n +0010587723 00000 n +0010587818 00000 n +0010587901 00000 n +0010588055 00000 n +0010588139 00000 n +0010588221 00000 n +0010588316 00000 n +0010588399 00000 n +0010588553 00000 n +0010588637 00000 n +0010588719 00000 n +0010588814 00000 n +0010588897 00000 n +0010589052 00000 n +0010589136 00000 n +0010589218 00000 n +0010589313 00000 n +0010589396 00000 n +0010589550 00000 n +0010589634 00000 n +0010589716 00000 n +0010589811 00000 n +0010589894 00000 n +0010590049 00000 n +0010590133 00000 n +0010590215 00000 n +0010590310 00000 n +0010590393 00000 n +0010590548 00000 n +0010590632 00000 n +0010590714 00000 n +0010590809 00000 n +0010590892 00000 n +0010591047 00000 n +0010591131 00000 n +0010591213 00000 n +0010591308 00000 n +0010591391 00000 n +0010591545 00000 n +0010591629 00000 n +0010591711 00000 n +0010591806 00000 n +0010591889 00000 n +0010592044 00000 n +0010592128 00000 n +0010592210 00000 n +0010592305 00000 n +0010592388 00000 n +0010592543 00000 n +0010592627 00000 n +0010592709 00000 n +0010592804 00000 n +0010592887 00000 n +0010593041 00000 n +0010593125 00000 n +0010593207 00000 n +0010593302 00000 n +0010593385 00000 n +0010593540 00000 n +0010593624 00000 n +0010593706 00000 n +0010593801 00000 n +0010593884 00000 n +0010594038 00000 n +0010594122 00000 n +0010594204 00000 n +0010594299 00000 n +0010594382 00000 n +0010594537 00000 n +0010594621 00000 n +0010594703 00000 n +0010594798 00000 n +0010594881 00000 n +0010595036 00000 n +0010595120 00000 n +0010595202 00000 n +0010595297 00000 n +0010595380 00000 n +0010595535 00000 n +0010595619 00000 n +0010595701 00000 n +0010595796 00000 n +0010595879 00000 n +0010596033 00000 n +0010596117 00000 n +0010596199 00000 n +0010596294 00000 n +0010596377 00000 n +0010596531 00000 n +0010596615 00000 n +0010596697 00000 n +0010596792 00000 n +0010596875 00000 n +0010597030 00000 n +0010597114 00000 n +0010597196 00000 n +0010597291 00000 n +0010597374 00000 n +0010597529 00000 n +0010597613 00000 n +0010597695 00000 n +0010597790 00000 n +0010597873 00000 n +0010598028 00000 n +0010598111 00000 n +0010598193 00000 n +0010598288 00000 n +0010598371 00000 n +0010598526 00000 n +0010598609 00000 n +0010598690 00000 n +0010598785 00000 n +0010598867 00000 n +0010599022 00000 n +0010599105 00000 n +0010599186 00000 n +0010599281 00000 n +0010599363 00000 n +0010599518 00000 n +0010599601 00000 n +0010599682 00000 n +0010599777 00000 n +0010599859 00000 n +0010600014 00000 n +0010600097 00000 n +0010600178 00000 n +0010600273 00000 n +0010600355 00000 n +0010600510 00000 n +0010600593 00000 n +0010600674 00000 n +0010600769 00000 n +0010600851 00000 n +0010601006 00000 n +0010601089 00000 n +0010601170 00000 n +0010601265 00000 n +0010601347 00000 n +0010601502 00000 n +0010601585 00000 n +0010601666 00000 n +0010601761 00000 n +0010601843 00000 n +0010601998 00000 n +0010602081 00000 n +0010602162 00000 n +0010602257 00000 n +0010602339 00000 n +0010602494 00000 n +0010602577 00000 n +0010602658 00000 n +0010602753 00000 n +0010602835 00000 n +0010602990 00000 n +0010603073 00000 n +0010603154 00000 n +0010603249 00000 n +0010603331 00000 n +0010603486 00000 n +0010603569 00000 n +0010603650 00000 n +0010603745 00000 n +0010603827 00000 n +0010603982 00000 n +0010604065 00000 n +0010604146 00000 n +0010604241 00000 n +0010604323 00000 n +0010604478 00000 n +0010604561 00000 n +0010604642 00000 n +0010604737 00000 n +0010604819 00000 n +0010604974 00000 n +0010605057 00000 n +0010605138 00000 n +0010605233 00000 n +0010605315 00000 n +0010605469 00000 n +0010605552 00000 n +0010605633 00000 n +0010605728 00000 n +0010605810 00000 n +0010605965 00000 n +0010606048 00000 n +0010606129 00000 n +0010606224 00000 n +0010606306 00000 n +0010606461 00000 n +0010606544 00000 n +0010606625 00000 n +0010606720 00000 n +0010606802 00000 n +0010606957 00000 n +0010607040 00000 n +0010607121 00000 n +0010607216 00000 n +0010607298 00000 n +0010607453 00000 n +0010607536 00000 n +0010607617 00000 n +0010607712 00000 n +0010607794 00000 n +0010607949 00000 n +0010608032 00000 n +0010608113 00000 n +0010608208 00000 n +0010608290 00000 n +0010608445 00000 n +0010608528 00000 n +0010608609 00000 n +0010608704 00000 n +0010608786 00000 n +0010608941 00000 n +0010609024 00000 n +0010609105 00000 n +0010609200 00000 n +0010609282 00000 n +0010609437 00000 n +0010609520 00000 n +0010609601 00000 n +0010609696 00000 n +0010609777 00000 n +0010609872 00000 n +0010609954 00000 n +0010610108 00000 n +0010610190 00000 n +0010610345 00000 n +0010610428 00000 n +0010610509 00000 n +0010610604 00000 n +0010610686 00000 n +0010610841 00000 n +0010610924 00000 n +0010611005 00000 n +0010611100 00000 n +0010611182 00000 n +0010611337 00000 n +0010611420 00000 n +0010611501 00000 n +0010611596 00000 n +0010611678 00000 n +0010611833 00000 n +0010611916 00000 n +0010611997 00000 n +0010612092 00000 n +0010612174 00000 n +0010612328 00000 n +0010612411 00000 n +0010612492 00000 n +0010612587 00000 n +0010612669 00000 n +0010612823 00000 n +0010612906 00000 n +0010612987 00000 n +0010613082 00000 n +0010613164 00000 n +0010613319 00000 n +0010613401 00000 n +0010613481 00000 n +0010613576 00000 n +0010613657 00000 n +0010613811 00000 n +0010613893 00000 n +0010613973 00000 n +0010614068 00000 n +0010614149 00000 n +0010614304 00000 n +0010614386 00000 n +0010614466 00000 n +0010614561 00000 n +0010614642 00000 n +0010614796 00000 n +0010614879 00000 n +0010614960 00000 n +0010615041 00000 n +0010615195 00000 n +0010615276 00000 n +0010615429 00000 n +0010615510 00000 n +0010615664 00000 n +0010615745 00000 n +0010615900 00000 n +0010615981 00000 n +0010616136 00000 n +0010616217 00000 n +0010616369 00000 n +0010616450 00000 n +0010616605 00000 n +0010616686 00000 n +0010616840 00000 n +0010616921 00000 n +0010617076 00000 n +0010617157 00000 n +0010617311 00000 n +0010617392 00000 n +0010617547 00000 n +0010617628 00000 n +0010617783 00000 n +0010617864 00000 n +0010618019 00000 n +0010618100 00000 n +0010618255 00000 n +0010618336 00000 n +0010618491 00000 n +0010618572 00000 n +0010618727 00000 n +0010618808 00000 n +0010618962 00000 n +0010619043 00000 n +0010619198 00000 n +0010619279 00000 n +0010619433 00000 n +0010619514 00000 n +0010619669 00000 n +0010619750 00000 n +0010619905 00000 n +0010619986 00000 n +0010620141 00000 n +0010620222 00000 n +0010620377 00000 n +0010620458 00000 n +0010620613 00000 n +0010620693 00000 n +0010620847 00000 n +0010620927 00000 n +0010621082 00000 n +0010621162 00000 n +0010621317 00000 n +0010621471 00000 n +0010621625 00000 n +0010621707 00000 n +0010621861 00000 n +0010621943 00000 n +0010622097 00000 n +0010622179 00000 n +0010622333 00000 n +0010622415 00000 n +0010622497 00000 n +0010622579 00000 n +0010622733 00000 n +0010622887 00000 n +0010622969 00000 n +0010623123 00000 n +0010623205 00000 n +0010623287 00000 n +0010623369 00000 n +0010623523 00000 n +0010623677 00000 n +0010623759 00000 n +0010623913 00000 n +0010623995 00000 n +0010624149 00000 n +0010624231 00000 n +0010624385 00000 n +0010624467 00000 n +0010624549 00000 n +0010624631 00000 n +0010624785 00000 n +0010624939 00000 n +0010625021 00000 n +0010625175 00000 n +0010625257 00000 n +0010625411 00000 n +0010625493 00000 n +0010625647 00000 n +0010625729 00000 n +0010625811 00000 n +0010625893 00000 n +0010626047 00000 n +0010626201 00000 n +0010626283 00000 n +0010626437 00000 n +0010626519 00000 n +0010626601 00000 n +0010626683 00000 n +0010626837 00000 n +0010626991 00000 n +0010627073 00000 n +0010627227 00000 n +0010627309 00000 n +0010627391 00000 n +0010627473 00000 n +0010627555 00000 n +0010627637 00000 n +0010627791 00000 n +0010627945 00000 n +0010628099 00000 n +0010628181 00000 n +0010628335 00000 n +0010628417 00000 n +0010628571 00000 n +0010628653 00000 n +0010628807 00000 n +0010628889 00000 n +0010629043 00000 n +0010629125 00000 n +0010629279 00000 n +0010629361 00000 n +0010629515 00000 n +0010629597 00000 n +0010629751 00000 n +0010629833 00000 n +0010629986 00000 n +0010633503 00000 n +0010636444 00000 n +0010636495 00000 n +0010636571 00000 n +0010636647 00000 n +0010636818 00000 n +0010636934 00000 n +0010637130 00000 n +0010637201 00000 n +0010637297 00000 n +0010637328 00000 n +0010637429 00000 n +0010637460 00000 n +0010637561 00000 n +0010637682 00000 n +0010637783 00000 n +0010637854 00000 n +0010637885 00000 n +0010637916 00000 n +0010637947 00000 n +0010638018 00000 n +0010638059 00000 n +0010638110 00000 n +0010638161 00000 n +0010638202 00000 n +0010638303 00000 n +0010638334 00000 n +0010638365 00000 n +0010638406 00000 n +0010638437 00000 n +0010638538 00000 n +0010638779 00000 n +0010638933 00000 n +0010639107 00000 n +0010639258 00000 n +0010639369 00000 n +0010639440 00000 n +0010639481 00000 n +0010639582 00000 n +0010639943 00000 n +0010640044 00000 n +0010640195 00000 n +0010640266 00000 n +0010640297 00000 n +0010640368 00000 n +0010640484 00000 n +0010642894 00000 n +0010643018 00000 n +0010643822 00000 n +0010643884 00000 n +0010643944 00000 n +0010644014 00000 n +0010644150 00000 n +0010644265 00000 n +0010644380 00000 n +0010644516 00000 n +0010644631 00000 n +0010644807 00000 n +0010644922 00000 n +0010645037 00000 n +0010645152 00000 n +0010645288 00000 n +0010645403 00000 n +0010645519 00000 n +0010645634 00000 n +0010645749 00000 n +0010645864 00000 n +0010645979 00000 n +0010646094 00000 n +0010646209 00000 n +0010646324 00000 n +0010646470 00000 n +0010646606 00000 n +0010646721 00000 n +0010646836 00000 n +0010646951 00000 n +0010647087 00000 n +0010647202 00000 n +0010647338 00000 n +0010647453 00000 n +0010647568 00000 n +0010647683 00000 n +0010647798 00000 n +0010647934 00000 n +0010648049 00000 n +0010648185 00000 n +0010648300 00000 n +0010648496 00000 n +0010648632 00000 n +0010648768 00000 n +0010648964 00000 n +0010649100 00000 n +0010649215 00000 n +0010649330 00000 n +0010649445 00000 n +0010649560 00000 n +0010649675 00000 n +0010649790 00000 n +0010649905 00000 n +0010650041 00000 n +0010650156 00000 n +0010650271 00000 n +0010650386 00000 n +0010650501 00000 n +0010650616 00000 n +0010650731 00000 n +0010650846 00000 n +0010650961 00000 n +0010651076 00000 n +0010651191 00000 n +0010651306 00000 n +0010651421 00000 n +0010651536 00000 n +0010651672 00000 n +0010651787 00000 n +0010651902 00000 n +0010652017 00000 n +0010652132 00000 n +0010652247 00000 n +0010652362 00000 n +0010652477 00000 n +0010652551 00000 n +0010652625 00000 n +0010652699 00000 n +0010652773 00000 n +0010652847 00000 n +0010652921 00000 n +0010652996 00000 n +0010653070 00000 n +0010653162 00000 n +0010653237 00000 n +0010653311 00000 n +0010653385 00000 n +0010653459 00000 n +0010653533 00000 n +0010653607 00000 n +0010653681 00000 n +0010653755 00000 n +0010653829 00000 n +0010653903 00000 n +0010653977 00000 n +0010654051 00000 n +0010654125 00000 n +0010654199 00000 n +0010654273 00000 n +0010654347 00000 n +0010654421 00000 n +0010654495 00000 n +0010654570 00000 n +0010654645 00000 n +0010654720 00000 n +0010654795 00000 n +0010654870 00000 n +0010654945 00000 n +0010655020 00000 n +0010655095 00000 n +0010655170 00000 n +0010655245 00000 n +0010655337 00000 n +0010655412 00000 n +0010655504 00000 n +0010655579 00000 n +0010655671 00000 n +0010655746 00000 n +0010655838 00000 n +0010655913 00000 n +0010655988 00000 n +0010656080 00000 n +0010656155 00000 n +0010656230 00000 n +0010656305 00000 n +0010656380 00000 n +0010656454 00000 n +0010656545 00000 n +0010656619 00000 n +0010656710 00000 n +0010656784 00000 n +0010656875 00000 n +0010656949 00000 n +0010657040 00000 n +0010657114 00000 n +0010657188 00000 n +0010657262 00000 n +0010657336 00000 n +0010657410 00000 n +0010657484 00000 n +0010657558 00000 n +0010657632 00000 n +0010657706 00000 n +0010657780 00000 n +0010657854 00000 n +0010657928 00000 n +0010658002 00000 n +0010658076 00000 n +0010658150 00000 n +0010658224 00000 n +0010658298 00000 n +0010658372 00000 n +0010658446 00000 n +0010658520 00000 n +0010658594 00000 n +0010658668 00000 n +0010658742 00000 n +0010658816 00000 n +0010658890 00000 n +0010658964 00000 n +0010659038 00000 n +0010659154 00000 n +0010659271 00000 n +0010659388 00000 n +0010659463 00000 n +0010659538 00000 n +0010659613 00000 n +0010659687 00000 n +0010659761 00000 n +0010659835 00000 n +0010659909 00000 n +0010659983 00000 n +0010660057 00000 n +0010660131 00000 n +0010660205 00000 n +0010660279 00000 n +0010660354 00000 n +0010660429 00000 n +0010660504 00000 n +0010660579 00000 n +0010660654 00000 n +0010660728 00000 n +0010660802 00000 n +0010660876 00000 n +0010660950 00000 n +0010661024 00000 n +0010661099 00000 n +0010661173 00000 n +0010661247 00000 n +0010661321 00000 n +0010661395 00000 n +0010661469 00000 n +0010661543 00000 n +0010661617 00000 n +0010661691 00000 n +0010661765 00000 n +0010661839 00000 n +0010661913 00000 n +0010661987 00000 n +0010662078 00000 n +0010662152 00000 n +0010662306 00000 n +0010662381 00000 n +0010662473 00000 n +0010662548 00000 n +0010662623 00000 n +0010662715 00000 n +0010662790 00000 n +0010662944 00000 n +0010663098 00000 n +0010663172 00000 n +0010663263 00000 n +0010663337 00000 n +0010663411 00000 n +0010663553 00000 n +0010663695 00000 n +0010663769 00000 n +0010663884 00000 n +0010664182 00000 n +0010664244 00000 n +0010664304 00000 n +0010664374 00000 n +0010664492 00000 n +0010664611 00000 n +0010664730 00000 n +0010664848 00000 n +0010664965 00000 n +0010665082 00000 n +0010665199 00000 n +0010665385 00000 n +0010665633 00000 n +0010665753 00000 n +0010665868 00000 n +0010666034 00000 n +0010666154 00000 n +0010666405 00000 n +0010666522 00000 n +0010666642 00000 n +0010666762 00000 n +0010666888 00000 n +0010666962 00000 n +0010667036 00000 n +0010667110 00000 n +0010667184 00000 n +0010667258 00000 n +0010667332 00000 n +0010667453 00000 n +0010667575 00000 n +0010667697 00000 n +0010667818 00000 n +0010667940 00000 n +0010668062 00000 n +0010668183 00000 n +0010668305 00000 n +0010668421 00000 n +0010668559 00000 n +0010668676 00000 n +0010668793 00000 n +0010668910 00000 n +0010668984 00000 n +0010669058 00000 n +0010669132 00000 n +0010669206 00000 n +0010669298 00000 n +0010669372 00000 n +0010669446 00000 n +0010669520 00000 n +0010669594 00000 n +0010669668 00000 n +0010669742 00000 n +0010669816 00000 n +0010669890 00000 n +0010669964 00000 n +0010670038 00000 n +0010670112 00000 n +0010670186 00000 n +0010670304 00000 n +0010670423 00000 n +0010670542 00000 n +0010670660 00000 n +0010670777 00000 n +0010670851 00000 n +0010670925 00000 n +0010670999 00000 n +0010671073 00000 n +0010671147 00000 n +0010671221 00000 n +0010671295 00000 n +0010671369 00000 n +0010671490 00000 n +0010671612 00000 n +0010671734 00000 n +0010671856 00000 n +0010671978 00000 n +0010672100 00000 n +0010672222 00000 n +0010672344 00000 n +0010672460 00000 n +0010672577 00000 n +0010672694 00000 n +0010672811 00000 n +0010672928 00000 n +0010673002 00000 n +0010673076 00000 n +0010673150 00000 n +0010673224 00000 n +0010673298 00000 n +0010673372 00000 n +0010673446 00000 n +0010673520 00000 n +0010673594 00000 n +0010673668 00000 n +0010673742 00000 n +0010673816 00000 n +0010673890 00000 n +0010673964 00000 n +0010674082 00000 n +0010674201 00000 n +0010674341 00000 n +0010674459 00000 n +0010674576 00000 n +0010674693 00000 n +0010674810 00000 n +0010674884 00000 n +0010674958 00000 n +0010675032 00000 n +0010675106 00000 n +0010675180 00000 n +0010675254 00000 n +0010675328 00000 n +0010675402 00000 n +0010675476 00000 n +0010675550 00000 n +0010675624 00000 n +0010675698 00000 n +0010675772 00000 n +0010675846 00000 n +0010675920 00000 n +0010675994 00000 n +0010676068 00000 n +0010676186 00000 n +0010676485 00000 n +0010676547 00000 n +0010676607 00000 n +0010676677 00000 n +0010676796 00000 n +0010676915 00000 n +0010677034 00000 n +0010677321 00000 n +0010677567 00000 n +0010677682 00000 n +0010677828 00000 n +0010677994 00000 n +0010678109 00000 n +0010678226 00000 n +0010678404 00000 n +0010678570 00000 n +0010678801 00000 n +0010678977 00000 n +0010679303 00000 n +0010679422 00000 n +0010679590 00000 n +0010679706 00000 n +0010679780 00000 n +0010679854 00000 n +0010679970 00000 n +0010680108 00000 n +0010680225 00000 n +0010680342 00000 n +0010680459 00000 n +0010680533 00000 n +0010680607 00000 n +0010680681 00000 n +0010680755 00000 n +0010680847 00000 n +0010680921 00000 n +0010680995 00000 n +0010681069 00000 n +0010681143 00000 n +0010681262 00000 n +0010681382 00000 n +0010681502 00000 n +0010681621 00000 n +0010681740 00000 n +0010681859 00000 n +0010681979 00000 n +0010682099 00000 n +0010682219 00000 n +0010682338 00000 n +0010682454 00000 n +0010682571 00000 n +0010682688 00000 n +0010682805 00000 n +0010682922 00000 n +0010683043 00000 n +0010683165 00000 n +0010683287 00000 n +0010683409 00000 n +0010683531 00000 n +0010683653 00000 n +0010683727 00000 n +0010683801 00000 n +0010683875 00000 n +0010683949 00000 n +0010684023 00000 n +0010684097 00000 n +0010684171 00000 n +0010684245 00000 n +0010684319 00000 n +0010684393 00000 n +0010684467 00000 n +0010684542 00000 n +0010684617 00000 n +0010684692 00000 n +0010684767 00000 n +0010684842 00000 n +0010684917 00000 n +0010684992 00000 n +0010685066 00000 n +0010685140 00000 n +0010685214 00000 n +0010685289 00000 n +0010685405 00000 n +0010685522 00000 n +0010685639 00000 n +0010685756 00000 n +0010685873 00000 n +0010685990 00000 n +0010686064 00000 n +0010686138 00000 n +0010686212 00000 n +0010686286 00000 n +0010686360 00000 n +0010686434 00000 n +0010686508 00000 n +0010686582 00000 n +0010686656 00000 n +0010686748 00000 n +0010686822 00000 n +0010686914 00000 n +0010686988 00000 n +0010687107 00000 n +0010687226 00000 n +0010687344 00000 n +0010687461 00000 n +0010687536 00000 n +0010687611 00000 n +0010687686 00000 n +0010687761 00000 n +0010687835 00000 n +0010687962 00000 n +0010688079 00000 n +0010688195 00000 n +0010688312 00000 n +0010688429 00000 n +0010688503 00000 n +0010688577 00000 n +0010688651 00000 n +0010688725 00000 n +0010688799 00000 n +0010688873 00000 n +0010688947 00000 n +0010689063 00000 n +0010689180 00000 n +0010689297 00000 n +0010689413 00000 n +0010689530 00000 n +0010689647 00000 n +0010689721 00000 n +0010689795 00000 n +0010689869 00000 n +0010689943 00000 n +0010690017 00000 n +0010690091 00000 n +0010690165 00000 n +0010690239 00000 n +0010690313 00000 n +0010690431 00000 n +0010690550 00000 n +0010690669 00000 n +0010690787 00000 n +0010690904 00000 n +0010690978 00000 n +0010691052 00000 n +0010691126 00000 n +0010691200 00000 n +0010691274 00000 n +0010691348 00000 n +0010691464 00000 n +0010691581 00000 n +0010691698 00000 n +0010691772 00000 n +0010691846 00000 n +0010691920 00000 n +0010691994 00000 n +0010692068 00000 n +0010692186 00000 n +0010692305 00000 n +0010692424 00000 n +0010692542 00000 n +0010692659 00000 n +0010692776 00000 n +0010692893 00000 n +0010693010 00000 n +0010693126 00000 n +0010693243 00000 n +0010693360 00000 n +0010693477 00000 n +0010693594 00000 n +0010693668 00000 n +0010693742 00000 n +0010693816 00000 n +0010693890 00000 n +0010693964 00000 n +0010694038 00000 n +0010694112 00000 n +0010694186 00000 n +0010694260 00000 n +0010694334 00000 n +0010694408 00000 n +0010694482 00000 n +0010694556 00000 n +0010694630 00000 n +0010694747 00000 n +0010694864 00000 n +0010694981 00000 n +0010695098 00000 n +0010695217 00000 n +0010695336 00000 n +0010695455 00000 n +0010695573 00000 n +0010695690 00000 n +0010695807 00000 n +0010695925 00000 n +0010696044 00000 n +0010696184 00000 n +0010696302 00000 n +0010696419 00000 n +0010696536 00000 n +0010696653 00000 n +0010696727 00000 n +0010696801 00000 n +0010696875 00000 n +0010696949 00000 n +0010697023 00000 n +0010697097 00000 n +0010697171 00000 n +0010697245 00000 n +0010697319 00000 n +0010697393 00000 n +0010697467 00000 n +0010697541 00000 n +0010697615 00000 n +0010697689 00000 n +0010697763 00000 n +0010697837 00000 n +0010697911 00000 n +0010697985 00000 n +0010698059 00000 n +0010698133 00000 n +0010698207 00000 n +0010698281 00000 n +0010698355 00000 n +0010698446 00000 n +0010698520 00000 n +0010698664 00000 n +0010698775 00000 n +0010698806 00000 n +0010698837 00000 n +0010698868 00000 n +0010698994 00000 n +0010699110 00000 n +0010699246 00000 n +0010699362 00000 n +0010699393 00000 n +0010699754 00000 n +0010699885 00000 n +0010700271 00000 n +0010700342 00000 n +0010700473 00000 n +0010700644 00000 n +0010700715 00000 n +0010700886 00000 n +0010700917 00000 n +0010700948 00000 n +0010700979 00000 n +0010701035 00000 n +0010701066 00000 n +0010701107 00000 n +0010701323 00000 n +0010701354 00000 n +0010701395 00000 n +0010701436 00000 n +0010701537 00000 n +0010701608 00000 n +0010701659 00000 n +0010701760 00000 n +0010701861 00000 n +0010701932 00000 n +0010701963 00000 n +0010701994 00000 n +0010702025 00000 n +0010702066 00000 n +0010702097 00000 n +0010702128 00000 n +0010702189 00000 n +0010702265 00000 n +0010702306 00000 n +0010702337 00000 n +0010702403 00000 n +0010702444 00000 n +0010702545 00000 n +0010702576 00000 n +0010702607 00000 n +0010702778 00000 n +0010702894 00000 n +0010703048 00000 n +0010703164 00000 n +0010703220 00000 n +0010703291 00000 n +0010703372 00000 n +0010703493 00000 n +0010703594 00000 n +0010703665 00000 n +0010703696 00000 n +0010703727 00000 n +0010703793 00000 n +0010703869 00000 n +0010703920 00000 n +0010704060 00000 n +0010704438 00000 n +0010704500 00000 n +0010704560 00000 n +0010704630 00000 n +0010704748 00000 n +0010704866 00000 n +0010704984 00000 n +0010705101 00000 n +0010705217 00000 n +0010705333 00000 n +0010705449 00000 n +0010705684 00000 n +0010705929 00000 n +0010706043 00000 n +0010706157 00000 n +0010706271 00000 n +0010706399 00000 n +0010706513 00000 n +0010706658 00000 n +0010706823 00000 n +0010706937 00000 n +0010707052 00000 n +0010707198 00000 n +0010707312 00000 n +0010707426 00000 n +0010707591 00000 n +0010707709 00000 n +0010707825 00000 n +0010707942 00000 n +0010708102 00000 n +0010708175 00000 n +0010708248 00000 n +0010708321 00000 n +0010708394 00000 n +0010708467 00000 n +0010708540 00000 n +0010708613 00000 n +0010708728 00000 n +0010708865 00000 n +0010708981 00000 n +0010709098 00000 n +0010709216 00000 n +0010709289 00000 n +0010709362 00000 n +0010709435 00000 n +0010709508 00000 n +0010709599 00000 n +0010709672 00000 n +0010709745 00000 n +0010709818 00000 n +0010709891 00000 n +0010709964 00000 n +0010710079 00000 n +0010710195 00000 n +0010710311 00000 n +0010710384 00000 n +0010710457 00000 n +0010710530 00000 n +0010710603 00000 n +0010710676 00000 n +0010710749 00000 n +0010710866 00000 n +0010710984 00000 n +0010711102 00000 n +0010711219 00000 n +0010711335 00000 n +0010711408 00000 n +0010711481 00000 n +0010711554 00000 n +0010711627 00000 n +0010711700 00000 n +0010711773 00000 n +0010711889 00000 n +0010712005 00000 n +0010712121 00000 n +0010712194 00000 n +0010712267 00000 n +0010712340 00000 n +0010712413 00000 n +0010712486 00000 n +0010712559 00000 n +0010712632 00000 n +0010712705 00000 n +0010712778 00000 n +0010712851 00000 n +0010712968 00000 n +0010713086 00000 n +0010713204 00000 n +0010713321 00000 n +0010713437 00000 n +0010713553 00000 n +0010713669 00000 n +0010713785 00000 n +0010713900 00000 n +0010714016 00000 n +0010714132 00000 n +0010714248 00000 n +0010714364 00000 n +0010714437 00000 n +0010714510 00000 n +0010714583 00000 n +0010714656 00000 n +0010714729 00000 n +0010714802 00000 n +0010714875 00000 n +0010714948 00000 n +0010715021 00000 n +0010715094 00000 n +0010715167 00000 n +0010715240 00000 n +0010715313 00000 n +0010715386 00000 n +0010715502 00000 n +0010715618 00000 n +0010715734 00000 n +0010715850 00000 n +0010715966 00000 n +0010716083 00000 n +0010716201 00000 n +0010716350 00000 n +0010716467 00000 n +0010716583 00000 n +0010716699 00000 n +0010716815 00000 n +0010716888 00000 n +0010716961 00000 n +0010717034 00000 n +0010717107 00000 n +0010717180 00000 n +0010717253 00000 n +0010717326 00000 n +0010717399 00000 n +0010717472 00000 n +0010717545 00000 n +0010717618 00000 n +0010717691 00000 n +0010717764 00000 n +0010717837 00000 n +0010717910 00000 n +0010717983 00000 n +0010718056 00000 n +0010718129 00000 n +0010718202 00000 n +0010718275 00000 n +0010718348 00000 n +0010718421 00000 n +0010718495 00000 n +0010718569 00000 n +0010718643 00000 n +0010718734 00000 n +0010718808 00000 n +0010718950 00000 n +0010719023 00000 n +0010719113 00000 n +0010719186 00000 n +0010719259 00000 n +0010719401 00000 n +0010719544 00000 n +0010719617 00000 n +0010719707 00000 n +0010719780 00000 n +0010719923 00000 n +0010719996 00000 n +0010720069 00000 n +0010720195 00000 n +0010720565 00000 n +0010720627 00000 n +0010720687 00000 n +0010720757 00000 n +0010721037 00000 n +0010721192 00000 n +0010721348 00000 n +0010721462 00000 n +0010721576 00000 n +0010721772 00000 n +0010721928 00000 n +0010722125 00000 n +0010722241 00000 n +0010722397 00000 n +0010722553 00000 n +0010722748 00000 n +0010722862 00000 n +0010722976 00000 n +0010723090 00000 n +0010723204 00000 n +0010723339 00000 n +0010723458 00000 n +0010723577 00000 n +0010723757 00000 n +0010723897 00000 n +0010724016 00000 n +0010724142 00000 n +0010724268 00000 n +0010724394 00000 n +0010724467 00000 n +0010724540 00000 n +0010724613 00000 n +0010724687 00000 n +0010724761 00000 n +0010724835 00000 n +0010724908 00000 n +0010725048 00000 n +0010725190 00000 n +0010725332 00000 n +0010725453 00000 n +0010725595 00000 n +0010725737 00000 n +0010725811 00000 n +0010725895 00000 n +0010725969 00000 n +0010726019 00000 n +0010726108 00000 n +0010726199 00000 n +0010726273 00000 n +0010726347 00000 n +0010726421 00000 n +0010726494 00000 n +0010726567 00000 n +0010726640 00000 n +0010726713 00000 n +0010726786 00000 n +0010726859 00000 n +0010726932 00000 n +0010727005 00000 n +0010727078 00000 n +0010727151 00000 n +0010727224 00000 n +0010727297 00000 n +0010727370 00000 n +0010727460 00000 n +0010727533 00000 n +0010727606 00000 n +0010727679 00000 n +0010727752 00000 n +0010727826 00000 n +0010727899 00000 n +0010727989 00000 n +0010728062 00000 n +0010728152 00000 n +0010728225 00000 n +0010728316 00000 n +0010728390 00000 n +0010728481 00000 n +0010728555 00000 n +0010728628 00000 n +0010728718 00000 n +0010728791 00000 n +0010728881 00000 n +0010728954 00000 n +0010729027 00000 n +0010729117 00000 n +0010729190 00000 n +0010729280 00000 n +0010729353 00000 n +0010729427 00000 n +0010729500 00000 n +0010729590 00000 n +0010729663 00000 n +0010729753 00000 n +0010729826 00000 n +0010729917 00000 n +0010729991 00000 n +0010730082 00000 n +0010730156 00000 n +0010730229 00000 n +0010730319 00000 n +0010730392 00000 n +0010730482 00000 n +0010730555 00000 n +0010730628 00000 n +0010730718 00000 n +0010730791 00000 n +0010730881 00000 n +0010730954 00000 n +0010731044 00000 n +0010731117 00000 n +0010731207 00000 n +0010731281 00000 n +0010731354 00000 n +0010731427 00000 n +0010731500 00000 n +0010731590 00000 n +0010731663 00000 n +0010731753 00000 n +0010731826 00000 n +0010731900 00000 n +0010731991 00000 n +0010732065 00000 n +0010732156 00000 n +0010732230 00000 n +0010732303 00000 n +0010732464 00000 n +0010732585 00000 n +0010732826 00000 n +0010732988 00000 n +0010733190 00000 n +0010733311 00000 n +0010733512 00000 n +0010733633 00000 n +0010733753 00000 n +0010733868 00000 n +0010734025 00000 n +0010734182 00000 n +0010734338 00000 n +0010734495 00000 n +0010734692 00000 n +0010734808 00000 n +0010734882 00000 n +0010734956 00000 n +0010735047 00000 n +0010735121 00000 n +0010735212 00000 n +0010735286 00000 n +0010735377 00000 n +0010735451 00000 n +0010735542 00000 n +0010735616 00000 n +0010735690 00000 n +0010735781 00000 n +0010735855 00000 n +0010735946 00000 n +0010736020 00000 n +0010736094 00000 n +0010736185 00000 n +0010736259 00000 n +0010736350 00000 n +0010736424 00000 n +0010736497 00000 n +0010736587 00000 n +0010736660 00000 n +0010736750 00000 n +0010736824 00000 n +0010736897 00000 n +0010736987 00000 n +0010737060 00000 n +0010737150 00000 n +0010737223 00000 n +0010737296 00000 n +0010737370 00000 n +0010737443 00000 n +0010737516 00000 n +0010737606 00000 n +0010737679 00000 n +0010737769 00000 n +0010737842 00000 n +0010737932 00000 n +0010738005 00000 n +0010738095 00000 n +0010738168 00000 n +0010738242 00000 n +0010738316 00000 n +0010738407 00000 n +0010738481 00000 n +0010738572 00000 n +0010738646 00000 n +0010738737 00000 n +0010738811 00000 n +0010738902 00000 n +0010738976 00000 n +0010739050 00000 n +0010739141 00000 n +0010739215 00000 n +0010739306 00000 n +0010739380 00000 n +0010739453 00000 n +0010739543 00000 n +0010739616 00000 n +0010739706 00000 n +0010739780 00000 n +0010739871 00000 n +0010739945 00000 n +0010740036 00000 n +0010740110 00000 n +0010740201 00000 n +0010740275 00000 n +0010740366 00000 n +0010740440 00000 n +0010740513 00000 n +0010740586 00000 n +0010740676 00000 n +0010740749 00000 n +0010740839 00000 n +0010740912 00000 n +0010741057 00000 n +0010741270 00000 n +0010741332 00000 n +0010741392 00000 n +0010741462 00000 n +0010741576 00000 n +0010741711 00000 n +0010741846 00000 n +0010741960 00000 n +0010742074 00000 n +0010742188 00000 n +0010742302 00000 n +0010742416 00000 n +0010742524 00000 n +0010742626 00000 n +0010742695 00000 n +0010742769 00000 n +0010742842 00000 n +0010742915 00000 n +0010742988 00000 n +0010743061 00000 n +0010743134 00000 n +0010743207 00000 n +0010743280 00000 n +0010743353 00000 n +0010743426 00000 n +0010743499 00000 n +0010743572 00000 n +0010743645 00000 n +0010743718 00000 n +0010743791 00000 n +0010743864 00000 n +0010743954 00000 n +0010744027 00000 n +0010744179 00000 n +0010744252 00000 n +0010744342 00000 n +0010744415 00000 n +0010744556 00000 n +0010744629 00000 n +0010744732 00000 n +0010744794 00000 n +0010744854 00000 n +0010744924 00000 n +0010744997 00000 n +0010745100 00000 n +0010745162 00000 n +0010745222 00000 n +0010745292 00000 n +0010745362 00000 n +0010745467 00000 n +0010745529 00000 n +0010745589 00000 n +0010745659 00000 n +0010745733 00000 n +0010745807 00000 n +0010745881 00000 n +0010745955 00000 n +0010746029 00000 n +0010746103 00000 n +0010746177 00000 n +0010746251 00000 n +0010746325 00000 n +0010746500 00000 n +0010746641 00000 n +0010746763 00000 n +0010746825 00000 n +0010746885 00000 n +0010746955 00000 n +0010747069 00000 n +0010747183 00000 n +0010747241 00000 n +0010747299 00000 n +0010750582 00000 n +0010753992 00000 n +0010757404 00000 n +0010760822 00000 n +0010764460 00000 n +0010767728 00000 n +0010770723 00000 n +0010773718 00000 n +0010776713 00000 n +0010779708 00000 n +0010781396 00000 n +0010781443 00000 n +0010781509 00000 n +0010781556 00000 n +0010781622 00000 n +0010781698 00000 n +0010781745 00000 n +0010781808 00000 n +0010781855 00000 n +0010781902 00000 n +0010781949 00000 n +0010781996 00000 n +0010782043 00000 n +0010782106 00000 n +0010782153 00000 n +0010782200 00000 n +0010782247 00000 n +0010782294 00000 n +0010782357 00000 n +0010782404 00000 n +0010782450 00000 n +0010782516 00000 n +0010782563 00000 n +0010782629 00000 n +0010782692 00000 n +0010782772 00000 n +0010782852 00000 n +0010782915 00000 n +0010782978 00000 n +0010783058 00000 n +0010783138 00000 n +0010783201 00000 n +0010783295 00000 n +0010783358 00000 n +0010783438 00000 n +0010783518 00000 n +0010783581 00000 n +0010783630 00000 n +0010783681 00000 n +0010783759 00000 n +0010783822 00000 n +0010783884 00000 n +0010783931 00000 n +0010784009 00000 n +0010784087 00000 n +0010784165 00000 n +0010784259 00000 n +0010784322 00000 n +0010784402 00000 n +0010784465 00000 n +0010784545 00000 n +0010784625 00000 n +0010784688 00000 n +0010784780 00000 n +0010784843 00000 n +0010784923 00000 n +0010785003 00000 n +0010785066 00000 n +0010785736 00000 n +0010786432 00000 n +0010787141 00000 n +0010787803 00000 n +0010789476 00000 n +0010791149 00000 n +0010792790 00000 n +0010794417 00000 n +0010796044 00000 n +0010797694 00000 n +0010799344 00000 n +0010800951 00000 n +0010802558 00000 n +0010804124 00000 n +0010805665 00000 n +0010807206 00000 n +0010808747 00000 n +0010810288 00000 n +0010811829 00000 n +0010813319 00000 n +0010814794 00000 n +0010816269 00000 n +0010817744 00000 n +0010819219 00000 n +0010820733 00000 n +0010822350 00000 n +0010823891 00000 n +0010825432 00000 n +0010827293 00000 n +0010831632 00000 n +0010835757 00000 n +0010840216 00000 n +0010844818 00000 n +0010849175 00000 n +0010853623 00000 n +0010858616 00000 n +0010863730 00000 n +0010868530 00000 n +0010873491 00000 n +0010878376 00000 n +0010882511 00000 n +0010886794 00000 n +0010891392 00000 n +0010895801 00000 n +0010900121 00000 n +0010904461 00000 n +0010908672 00000 n +0010911681 00000 n +0010914844 00000 n +0010916107 00000 n +0010917371 00000 n +0010918636 00000 n +0010919898 00000 n +0010921158 00000 n +0010922425 00000 n +0010923687 00000 n +0010924952 00000 n +0010926214 00000 n +0010927481 00000 n +0010928741 00000 n +0010930003 00000 n +0010931269 00000 n +0010932538 00000 n +0010933808 00000 n +0010933956 00000 n +0010934011 00000 n +0010934066 00000 n +0010934121 00000 n +0010934176 00000 n +0010934230 00000 n +0010934285 00000 n +0010934340 00000 n +0010934395 00000 n +0010934450 00000 n +0010934505 00000 n +0010934560 00000 n +0010934615 00000 n +0010934670 00000 n +0010934725 00000 n +0010934780 00000 n +0010934835 00000 n +0010934890 00000 n +0010934945 00000 n +0010935000 00000 n +0010935055 00000 n +0010935110 00000 n +0010935165 00000 n +0010935220 00000 n +0010935275 00000 n +0010935330 00000 n +0010935385 00000 n +0010935440 00000 n +0010935495 00000 n +0010935550 00000 n +0010935605 00000 n +0010935660 00000 n +0010935715 00000 n +0010935770 00000 n +0010935825 00000 n +0010935880 00000 n +0010935935 00000 n +0010935990 00000 n +0010936045 00000 n +0010936100 00000 n +0010936155 00000 n +0010936210 00000 n +0010936265 00000 n +0010936320 00000 n +0010936375 00000 n +0010936430 00000 n +0010936485 00000 n +0010936540 00000 n +0010936595 00000 n +0010936650 00000 n +0010936705 00000 n +0010936760 00000 n +0010936815 00000 n +0010936870 00000 n +0010936925 00000 n +0010936980 00000 n +0010937035 00000 n +0010937090 00000 n +0010937145 00000 n +0010937200 00000 n +0010937255 00000 n +0010937310 00000 n +0010937365 00000 n +0010937420 00000 n +0010937475 00000 n +0010937530 00000 n +0010937585 00000 n +0010937640 00000 n +0010937695 00000 n +0010937750 00000 n +0010937805 00000 n +0010937860 00000 n +0010937915 00000 n +0010937970 00000 n +0010938025 00000 n +0010938080 00000 n +0010938135 00000 n +0010938190 00000 n +0010938245 00000 n +0010938300 00000 n +0010938355 00000 n +0010938410 00000 n +0010938465 00000 n +0010938520 00000 n +0010938575 00000 n +0010938630 00000 n +0010938685 00000 n +0010938740 00000 n +0010938795 00000 n +0010938850 00000 n +0010938905 00000 n +0010938960 00000 n +0010939015 00000 n +0010939070 00000 n +0010939125 00000 n +0010939180 00000 n +0010939235 00000 n +0010939290 00000 n +0010939345 00000 n +0010939400 00000 n +0010939455 00000 n +0010939509 00000 n +0010939564 00000 n +0010939619 00000 n +0010939674 00000 n +0010939729 00000 n +0010939784 00000 n +0010939839 00000 n +0010939894 00000 n +0010939949 00000 n +0010940004 00000 n +0010940059 00000 n +0010940114 00000 n +0010940169 00000 n +0010940224 00000 n +0010940279 00000 n +0010940334 00000 n +0010940389 00000 n +0010940444 00000 n +0010940499 00000 n +0010940554 00000 n +0010940609 00000 n +0010940664 00000 n +0010940719 00000 n +0010940774 00000 n +0010940829 00000 n +0010940884 00000 n +0010940939 00000 n +0010940994 00000 n +0010941049 00000 n +0010941104 00000 n +0010941159 00000 n +0010941214 00000 n +0010941269 00000 n +0010941324 00000 n +0010941379 00000 n +0010941434 00000 n +0010941489 00000 n +0010941544 00000 n +0010941599 00000 n +0010941654 00000 n +0010941709 00000 n +0010941764 00000 n +0010941819 00000 n +0010941874 00000 n +0010941929 00000 n +0010941984 00000 n +0010942039 00000 n +0010942094 00000 n +0010942149 00000 n +0010942204 00000 n +0010942259 00000 n +0010942314 00000 n +0010942369 00000 n +0010942424 00000 n +0010942479 00000 n +0010942534 00000 n +0010942589 00000 n +0010942644 00000 n +0010942699 00000 n +0010942754 00000 n +0010942809 00000 n +0010942864 00000 n +0010942919 00000 n +0010942974 00000 n +0010943029 00000 n +0010943084 00000 n +0010943139 00000 n +0010943194 00000 n +0010943249 00000 n +0010943304 00000 n +0010943359 00000 n +0010943414 00000 n +0010943469 00000 n +0010943524 00000 n +0010943579 00000 n +0010943634 00000 n +0010943689 00000 n +0010943744 00000 n +0010943799 00000 n +0010943854 00000 n +0010943909 00000 n +0010943964 00000 n +0010944019 00000 n +0010944074 00000 n +0010944129 00000 n +0010944184 00000 n +0010944239 00000 n +0010944294 00000 n +0010944349 00000 n +0010944404 00000 n +0010944459 00000 n +0010944514 00000 n +0010944569 00000 n +0010944624 00000 n +0010944679 00000 n +0010944734 00000 n +0010944789 00000 n +0010944844 00000 n +0010944899 00000 n +0010944954 00000 n +0010945009 00000 n +0010945064 00000 n +0010945119 00000 n +0010945174 00000 n +0010945229 00000 n +0010945284 00000 n +0010945339 00000 n +0010945394 00000 n +0010945449 00000 n +0010945504 00000 n +0010945559 00000 n +0010945614 00000 n +0010945669 00000 n +0010945724 00000 n +0010945779 00000 n +0010945834 00000 n +0010945889 00000 n +0010945944 00000 n +0010945999 00000 n +0010946054 00000 n +0010946109 00000 n +0010946164 00000 n +0010946219 00000 n +0010946274 00000 n +0010946329 00000 n +0010946384 00000 n +0010946439 00000 n +0010946494 00000 n +0010946549 00000 n +0010946604 00000 n +0010946659 00000 n +0010946714 00000 n +0010946769 00000 n +0010946824 00000 n +0010946879 00000 n +0010946934 00000 n +0010946989 00000 n +0010947044 00000 n +0010947099 00000 n +0010947154 00000 n +0010947209 00000 n +0010947264 00000 n +0010947319 00000 n +0010947374 00000 n +0010947429 00000 n +0010947483 00000 n +0010947538 00000 n +0010947593 00000 n +0010947648 00000 n +0010947703 00000 n +0010947758 00000 n +0010947813 00000 n +0010947868 00000 n +0010947923 00000 n +0010947978 00000 n +0010948033 00000 n +0010948088 00000 n +0010948143 00000 n +0010948198 00000 n +0010948253 00000 n +0010948308 00000 n +0010948363 00000 n +0010948417 00000 n +0010948472 00000 n +0010948527 00000 n +0010948582 00000 n +0010948637 00000 n +0010948692 00000 n +0010948747 00000 n +0010948802 00000 n +0010948857 00000 n +0010948912 00000 n +0010948967 00000 n +0010949022 00000 n +0010949077 00000 n +0010949132 00000 n +0010949187 00000 n +0010949242 00000 n +0010949297 00000 n +0010949352 00000 n +0010949407 00000 n +0010949462 00000 n +0010949517 00000 n +0010949572 00000 n +0010949627 00000 n +0010949682 00000 n +0010949737 00000 n +0010949792 00000 n +0010949847 00000 n +0010949902 00000 n +0010949957 00000 n +0010950012 00000 n +0010950067 00000 n +0010950122 00000 n +0010950177 00000 n +0010950232 00000 n +0010950287 00000 n +0010950342 00000 n +0010950397 00000 n +0010950452 00000 n +0010950507 00000 n +0010950562 00000 n +0010950617 00000 n +0010950672 00000 n +0010950727 00000 n +0010950782 00000 n +0010950837 00000 n +0010950892 00000 n +0010950947 00000 n +0010951002 00000 n +0010951057 00000 n +0010951112 00000 n +0010951167 00000 n +0010951222 00000 n +0010951277 00000 n +0010951332 00000 n +0010951387 00000 n +0010951442 00000 n +0010951497 00000 n +0010951552 00000 n +0010951607 00000 n +0010951662 00000 n +0010951717 00000 n +0010951772 00000 n +0010951827 00000 n +0010951882 00000 n +0010951937 00000 n +0010951992 00000 n +0010952047 00000 n +0010952102 00000 n +0010952157 00000 n +0010952212 00000 n +0010952267 00000 n +0010952322 00000 n +0010952377 00000 n +0010952432 00000 n +0010952487 00000 n +0010952542 00000 n +0010952597 00000 n +0010952652 00000 n +0010952707 00000 n +0010952762 00000 n +0010952817 00000 n +0010952872 00000 n +0010952927 00000 n +0010952982 00000 n +0010953037 00000 n +0010953092 00000 n +0010953147 00000 n +0010953202 00000 n +0010953257 00000 n +0010953312 00000 n +0010953367 00000 n +0010953422 00000 n +0010953477 00000 n +0010953532 00000 n +0010953587 00000 n +0010953642 00000 n +0010953697 00000 n +0010953752 00000 n +0010953807 00000 n +0010953862 00000 n +0010953917 00000 n +0010953972 00000 n +0010954027 00000 n +0010954082 00000 n +0010954137 00000 n +0010954192 00000 n +0010954247 00000 n +0010954302 00000 n +0010954357 00000 n +0010954412 00000 n +0010954467 00000 n +0010954522 00000 n +0010954577 00000 n +0010954632 00000 n +0010954687 00000 n +0010954742 00000 n +0010954797 00000 n +0010954852 00000 n +0010954907 00000 n +0010954962 00000 n +0010955017 00000 n +0010955072 00000 n +0010955127 00000 n +0010955182 00000 n +0010955237 00000 n +0010955292 00000 n +0010955347 00000 n +0010955402 00000 n +0010955457 00000 n +0010955512 00000 n +0010955567 00000 n +0010955622 00000 n +0010955677 00000 n +0010955732 00000 n +0010955787 00000 n +0010955842 00000 n +0010955897 00000 n +0010955952 00000 n +0010956007 00000 n +0010956062 00000 n +0010956117 00000 n +0010956172 00000 n +0010956227 00000 n +0010956282 00000 n +0010956337 00000 n +0010956391 00000 n +0010956446 00000 n +0010956501 00000 n +0010956556 00000 n +0010956611 00000 n +0010956666 00000 n +0010956721 00000 n +0010956776 00000 n +0010956831 00000 n +0010956886 00000 n +0010956941 00000 n +0010956996 00000 n +0010957051 00000 n +0010957106 00000 n +0010957161 00000 n +0010957216 00000 n +0010957271 00000 n +0010957326 00000 n +0010957381 00000 n +0010957436 00000 n +0010957491 00000 n +0010957546 00000 n +0010957601 00000 n +0010957656 00000 n +0010957711 00000 n +0010957766 00000 n +0010957821 00000 n +0010957876 00000 n +0010957931 00000 n +0010957986 00000 n +0010958041 00000 n +0010958096 00000 n +0010958151 00000 n +0010958206 00000 n +0010958261 00000 n +0010958316 00000 n +0010958371 00000 n +0010958426 00000 n +0010958481 00000 n +0010958536 00000 n +0010958591 00000 n +0010958646 00000 n +0010958701 00000 n +0010958756 00000 n +0010958811 00000 n +0010958866 00000 n +0010958921 00000 n +0010958976 00000 n +0010959031 00000 n +0010959086 00000 n +0010959141 00000 n +0010959196 00000 n +0010959251 00000 n +0010959306 00000 n +0010959361 00000 n +0010959416 00000 n +0010959471 00000 n +0010959526 00000 n +0010959581 00000 n +0010959636 00000 n +0010959691 00000 n +0010959746 00000 n +0010959801 00000 n +0010959856 00000 n +0010959911 00000 n +0010959966 00000 n +0010960021 00000 n +0010960076 00000 n +0010960131 00000 n +0010960186 00000 n +0010960241 00000 n +0010960296 00000 n +0010960351 00000 n +0010960406 00000 n +0010960461 00000 n +0010960516 00000 n +0010960571 00000 n +0010960626 00000 n +0010960681 00000 n +0010960736 00000 n +0010960791 00000 n +0010960846 00000 n +0010960901 00000 n +0010960956 00000 n +0010961011 00000 n +0010961066 00000 n +0010961121 00000 n +0010961176 00000 n +0010961231 00000 n +0010961286 00000 n +0010961341 00000 n +0010961396 00000 n +0010961451 00000 n +0010961506 00000 n +0010961561 00000 n +0010961616 00000 n +0010961671 00000 n +0010961726 00000 n +0010961781 00000 n +0010961836 00000 n +0010961891 00000 n +0010961946 00000 n +0010962001 00000 n +0010962056 00000 n +0010962111 00000 n +0010962166 00000 n +0010962221 00000 n +0010962276 00000 n +0010962331 00000 n +0010962386 00000 n +0010962441 00000 n +0010962496 00000 n +0010962551 00000 n +0010962606 00000 n +0010962661 00000 n +0010962716 00000 n +0010962771 00000 n +0010962826 00000 n +0010962881 00000 n +0010962936 00000 n +0010962991 00000 n +0010963046 00000 n +0010963101 00000 n +0010963156 00000 n +0010963211 00000 n +0010963266 00000 n +0010963321 00000 n +0010963376 00000 n +0010963431 00000 n +0010963486 00000 n +0010963541 00000 n +0010963596 00000 n +0010963651 00000 n +0010963706 00000 n +0010963761 00000 n +0010963816 00000 n +0010963871 00000 n +0010963926 00000 n +0010963981 00000 n +0010964036 00000 n +0010964091 00000 n +0010964146 00000 n +0010964201 00000 n +0010964256 00000 n +0010964311 00000 n +0010964364 00000 n +0010964419 00000 n +0010964474 00000 n +0010964529 00000 n +0010964584 00000 n +0010964639 00000 n +0010964694 00000 n +0010964749 00000 n +0010964804 00000 n +0010964859 00000 n +0010964914 00000 n +0010964969 00000 n +0010965024 00000 n +0010965079 00000 n +0010965134 00000 n +0010965189 00000 n +0010965244 00000 n +0010965299 00000 n +0010965354 00000 n +0010965409 00000 n +0010965464 00000 n +0010965519 00000 n +0010965574 00000 n +0010965629 00000 n +0010965684 00000 n +0010965739 00000 n +0010965794 00000 n +0010965849 00000 n +0010965904 00000 n +0010965959 00000 n +0010966014 00000 n +0010966069 00000 n +0010966124 00000 n +0010966179 00000 n +0010966234 00000 n +0010966289 00000 n +0010966344 00000 n +0010966399 00000 n +0010966454 00000 n +0010966509 00000 n +0010966564 00000 n +0010966619 00000 n +0010966674 00000 n +0010966729 00000 n +0010966784 00000 n +0010966839 00000 n +0010966894 00000 n +0010966949 00000 n +0010967004 00000 n +0010967059 00000 n +0010967114 00000 n +0010967169 00000 n +0010967224 00000 n +0010967279 00000 n +0010967334 00000 n +0010967389 00000 n +0010967444 00000 n +0010967499 00000 n +0010967554 00000 n +0010967609 00000 n +0010967664 00000 n +0010967719 00000 n +0010967774 00000 n +0010967829 00000 n +0010967884 00000 n +0010967939 00000 n +0010967994 00000 n +0010968049 00000 n +0010968104 00000 n +0010968159 00000 n +0010968214 00000 n +0010968269 00000 n +0010968324 00000 n +0010968379 00000 n +0010968434 00000 n +0010968489 00000 n +0010968544 00000 n +0010968599 00000 n +0010968654 00000 n +0010968709 00000 n +0010968764 00000 n +0010968819 00000 n +0010968874 00000 n +0010968929 00000 n +0010968984 00000 n +0010969039 00000 n +0010969094 00000 n +0010969149 00000 n +0010969204 00000 n +0010969259 00000 n +0010969314 00000 n +0010969369 00000 n +0010969424 00000 n +0010969479 00000 n +0010969534 00000 n +0010969589 00000 n +0010969644 00000 n +0010969699 00000 n +0010969754 00000 n +0010969809 00000 n +0010969864 00000 n +0010969919 00000 n +0010969974 00000 n +0010970029 00000 n +0010970084 00000 n +0010970139 00000 n +0010970194 00000 n +0010970249 00000 n +0010970304 00000 n +0010970359 00000 n +0010970414 00000 n +0010970469 00000 n +0010970524 00000 n +0010970579 00000 n +0010970634 00000 n +0010970689 00000 n +0010970744 00000 n +0010970799 00000 n +0010970854 00000 n +0010970909 00000 n +0010970964 00000 n +0010971019 00000 n +0010971074 00000 n +0010971129 00000 n +0010971184 00000 n +0010971239 00000 n +0010971294 00000 n +0010971349 00000 n +0010971404 00000 n +0010971459 00000 n +0010971514 00000 n +0010971569 00000 n +0010971624 00000 n +0010971679 00000 n +0010971734 00000 n +0010971789 00000 n +0010971844 00000 n +0010971899 00000 n +0010971954 00000 n +0010972009 00000 n +0010972064 00000 n +0010972119 00000 n +0010972174 00000 n +0010972229 00000 n +0010972284 00000 n +0010972337 00000 n +0010972392 00000 n +0010972447 00000 n +0010972502 00000 n +0010972557 00000 n +0010972612 00000 n +0010972667 00000 n +0010972722 00000 n +0010972777 00000 n +0010972832 00000 n +0010972887 00000 n +0010972942 00000 n +0010972997 00000 n +0010973052 00000 n +0010973107 00000 n +0010973162 00000 n +0010973217 00000 n +0010973269 00000 n +0010973324 00000 n +0010973379 00000 n +0010973434 00000 n +0010973489 00000 n +0010973544 00000 n +0010973599 00000 n +0010973654 00000 n +0010973709 00000 n +0010973764 00000 n +0010973819 00000 n +0010973874 00000 n +0010973929 00000 n +0010973984 00000 n +0010974039 00000 n +0010974094 00000 n +0010974149 00000 n +0010974204 00000 n +0010974259 00000 n +0010974314 00000 n +0010974369 00000 n +0010974424 00000 n +0010974479 00000 n +0010974534 00000 n +0010974589 00000 n +0010974644 00000 n +0010974699 00000 n +0010974754 00000 n +0010974809 00000 n +0010974864 00000 n +0010974919 00000 n +0010974974 00000 n +0010975029 00000 n +0010975084 00000 n +0010975139 00000 n +0010975194 00000 n +0010975249 00000 n +0010975304 00000 n +0010975359 00000 n +0010975414 00000 n +0010975469 00000 n +0010975524 00000 n +0010975579 00000 n +0010975634 00000 n +0010975689 00000 n +0010975744 00000 n +0010975799 00000 n +0010975854 00000 n +0010975909 00000 n +0010975964 00000 n +0010976019 00000 n +0010976074 00000 n +0010976129 00000 n +0010976184 00000 n +0010976239 00000 n +0010976294 00000 n +0010976349 00000 n +0010976404 00000 n +0010976459 00000 n +0010976514 00000 n +0010976569 00000 n +0010976623 00000 n +0010976678 00000 n +0010976733 00000 n +0010976788 00000 n +0010976843 00000 n +0010976898 00000 n +0010976953 00000 n +0010977008 00000 n +0010977063 00000 n +0010977118 00000 n +0010977173 00000 n +0010977227 00000 n +0010977282 00000 n +0010977337 00000 n +0010977392 00000 n +0010977447 00000 n +0010977502 00000 n +0010977557 00000 n +0010977612 00000 n +0010977667 00000 n +0010977722 00000 n +0010977777 00000 n +0010977831 00000 n +0010977886 00000 n +0010977941 00000 n +0010977996 00000 n +0010978051 00000 n +0010978106 00000 n +0010978161 00000 n +0010978216 00000 n +0010978271 00000 n +0010978326 00000 n +0010978381 00000 n +0010978435 00000 n +0010978490 00000 n +0010978545 00000 n +0010978600 00000 n +0010978655 00000 n +0010978710 00000 n +0010978765 00000 n +0010978820 00000 n +0010978875 00000 n +0010978930 00000 n +0010978985 00000 n +0010979039 00000 n +0010979094 00000 n +0010979149 00000 n +0010979204 00000 n +0010979259 00000 n +0010979314 00000 n +0010979369 00000 n +0010979424 00000 n +0010979479 00000 n +0010979534 00000 n +0010979589 00000 n +0010979644 00000 n +0010979699 00000 n +0010979754 00000 n +0010979809 00000 n +0010979864 00000 n +0010979919 00000 n +0010979974 00000 n +0010980029 00000 n +0010980084 00000 n +0010980139 00000 n +0010980194 00000 n +0010980249 00000 n +0010980304 00000 n +0010980359 00000 n +0010980414 00000 n +0010980469 00000 n +0010980524 00000 n +0010980578 00000 n +0010980633 00000 n +0010980688 00000 n +0010980743 00000 n +0010980798 00000 n +0010980853 00000 n +0010980908 00000 n +0010980963 00000 n +0010981018 00000 n +0010981073 00000 n +0010981128 00000 n +0010981182 00000 n +0010981238 00000 n +0010981293 00000 n +0010981348 00000 n +0010981403 00000 n +0010981458 00000 n +0010981513 00000 n +0010981568 00000 n +0010981623 00000 n +0010981678 00000 n +0010981733 00000 n +0010981788 00000 n +0010981842 00000 n +0010981897 00000 n +0010981952 00000 n +0010982007 00000 n +0010982062 00000 n +0010982117 00000 n +0010982172 00000 n +0010982227 00000 n +0010982282 00000 n +0010982337 00000 n +0010982392 00000 n +0010982446 00000 n +0010982501 00000 n +0010982556 00000 n +0010982611 00000 n +0010982666 00000 n +0010982721 00000 n +0010982776 00000 n +0010982831 00000 n +0010982886 00000 n +0010982941 00000 n +0010982996 00000 n +0010983050 00000 n +0010983105 00000 n +0010983160 00000 n +0010983215 00000 n +0010983270 00000 n +0010983325 00000 n +0010983380 00000 n +0010983435 00000 n +0010983490 00000 n +0010983545 00000 n +0010983600 00000 n +0010983655 00000 n +0010983710 00000 n +0010983765 00000 n +0010983820 00000 n +0010983875 00000 n +0010983930 00000 n +0010983984 00000 n +0010984039 00000 n +0010984094 00000 n +0010984149 00000 n +0010984204 00000 n +0010984259 00000 n +0010984314 00000 n +0010984369 00000 n +0010984424 00000 n +0010984479 00000 n +0010984534 00000 n +0010984588 00000 n +0010984643 00000 n +0010984698 00000 n +0010984753 00000 n +0010984808 00000 n +0010984863 00000 n +0010984918 00000 n +0010984973 00000 n +0010985028 00000 n +0010985083 00000 n +0010985138 00000 n +0010985192 00000 n +0010985247 00000 n +0010985302 00000 n +0010985357 00000 n +0010985412 00000 n +0010985467 00000 n +0010985522 00000 n +0010985577 00000 n +0010985632 00000 n +0010985687 00000 n +0010985742 00000 n +0010985796 00000 n +0010985851 00000 n +0010985906 00000 n +0010985961 00000 n +0010986016 00000 n +0010986071 00000 n +0010986126 00000 n +0010986181 00000 n +0010986236 00000 n +0010986291 00000 n +0010986346 00000 n +0010986400 00000 n +0010986455 00000 n +0010986510 00000 n +0010986565 00000 n +0010986620 00000 n +0010986675 00000 n +0010986730 00000 n +0010986785 00000 n +0010986840 00000 n +0010986895 00000 n +0010986950 00000 n +0010987004 00000 n +0010987057 00000 n +0010987110 00000 n +0010987163 00000 n +0010987216 00000 n +0010987268 00000 n +0010987321 00000 n +0010987374 00000 n +0010987426 00000 n +0010987479 00000 n +0010987532 00000 n +0010987585 00000 n +0010987638 00000 n +0010987691 00000 n +0010987744 00000 n +0010987796 00000 n +0010987849 00000 n +0010987902 00000 n +0010987955 00000 n +0010988008 00000 n +0010988061 00000 n +0010988114 00000 n +0010988167 00000 n +0010988220 00000 n +0010988273 00000 n +0010988326 00000 n +0010988378 00000 n +0010988431 00000 n +0010988484 00000 n +0010988537 00000 n +0010988590 00000 n +0010988643 00000 n +0010988696 00000 n +0010988749 00000 n +0010988802 00000 n +0010988855 00000 n +0010988908 00000 n +0010988961 00000 n +0010989014 00000 n +0010989067 00000 n +0010989119 00000 n +0010989174 00000 n +0010989229 00000 n +0010989284 00000 n +0010989339 00000 n +0010989394 00000 n +0010989449 00000 n +0010989504 00000 n +0010989559 00000 n +0010989614 00000 n +0010989669 00000 n +0010989723 00000 n +0010989778 00000 n +0010989833 00000 n +0010989888 00000 n +0010989943 00000 n +0010989998 00000 n +0010990053 00000 n +0010990108 00000 n +0010990163 00000 n +0010990218 00000 n +0010990273 00000 n +0010990327 00000 n +0010990382 00000 n +0010990437 00000 n +0010990490 00000 n +0010990542 00000 n +0010990594 00000 n +0010990646 00000 n +0010990698 00000 n +0010990750 00000 n +0010990802 00000 n +0010990855 00000 n +0010990908 00000 n +0010990961 00000 n +0010991014 00000 n +0010991066 00000 n +0010991118 00000 n +0010991170 00000 n +0010991222 00000 n +0010991274 00000 n +0010991326 00000 n +0010991378 00000 n +0010991430 00000 n +0010991482 00000 n +0010991534 00000 n +0010991587 00000 n +0010991639 00000 n +0010991691 00000 n +0010991743 00000 n +0010991795 00000 n +0010991847 00000 n +0010991899 00000 n +0010991951 00000 n +0010992004 00000 n +0010992057 00000 n +0010992110 00000 n +0010992163 00000 n +0010992216 00000 n +0010992268 00000 n +0010992321 00000 n +0010992374 00000 n +0010992427 00000 n +0010992480 00000 n +0010992532 00000 n +0010992585 00000 n +0010992638 00000 n +0010992691 00000 n +0010992744 00000 n +0010992797 00000 n +0010992850 00000 n +0010992903 00000 n +0010992956 00000 n +0010993009 00000 n +0010993062 00000 n +0010993115 00000 n +0010993168 00000 n +0010993220 00000 n +0010993273 00000 n +0010993326 00000 n +0010993379 00000 n +0010993432 00000 n +0010993485 00000 n +0010993538 00000 n +0010993591 00000 n +0010993643 00000 n +0010993696 00000 n +0010993749 00000 n +0010993802 00000 n +0010993855 00000 n +0010993908 00000 n +0010993961 00000 n +0010994014 00000 n +0010994067 00000 n +0010994120 00000 n +0010994173 00000 n +0010994226 00000 n +0010994279 00000 n +0010994332 00000 n +0010994385 00000 n +0010994438 00000 n +0010994491 00000 n +0010994544 00000 n +0010994597 00000 n +0010994650 00000 n +0010994703 00000 n +0010994756 00000 n +0010994809 00000 n +0010994862 00000 n +0010994915 00000 n +0010994968 00000 n +0010995021 00000 n +0010995074 00000 n +0010995127 00000 n +0010995180 00000 n +0010995233 00000 n +0010995286 00000 n +0010995339 00000 n +0010995392 00000 n +0010995445 00000 n +0010995498 00000 n +0010995551 00000 n +0010995604 00000 n +0010995657 00000 n +0010995710 00000 n +0010995762 00000 n +0010995815 00000 n +0010995868 00000 n +0010995921 00000 n +0010995974 00000 n +0010996027 00000 n +0010996080 00000 n +0010996133 00000 n +0010996186 00000 n +0010996239 00000 n +0010996292 00000 n +0010996345 00000 n +0010996398 00000 n +0010996451 00000 n +0010996504 00000 n +0010996557 00000 n +0010996610 00000 n +0010996663 00000 n +0010996716 00000 n +0010996769 00000 n +0010996822 00000 n +0010996875 00000 n +0010996927 00000 n +0010996980 00000 n +0010997033 00000 n +0010997086 00000 n +0010997138 00000 n +0010997191 00000 n +0010997244 00000 n +0010997297 00000 n +0010997350 00000 n +0010997403 00000 n +0010997456 00000 n +0010997509 00000 n +0010997562 00000 n +0010997615 00000 n +0010997668 00000 n +0010997721 00000 n +0010997774 00000 n +0010997827 00000 n +0010997880 00000 n +0010997933 00000 n +0010997986 00000 n +0010998039 00000 n +0010998092 00000 n +0010998145 00000 n +0010998198 00000 n +0010998251 00000 n +0010998304 00000 n +0010998357 00000 n +0010998410 00000 n +0010998463 00000 n +0010998516 00000 n +0010998569 00000 n +0010998622 00000 n +0010998675 00000 n +0010998728 00000 n +0010998781 00000 n +0010998834 00000 n +0010998887 00000 n +0010998940 00000 n +0010998993 00000 n +0010999046 00000 n +0010999099 00000 n +0010999151 00000 n +0010999204 00000 n +0010999257 00000 n +0010999310 00000 n +0010999363 00000 n +0010999416 00000 n +0010999469 00000 n +0010999522 00000 n +0010999575 00000 n +0010999628 00000 n +0010999681 00000 n +0010999734 00000 n +0010999787 00000 n +0010999840 00000 n +0010999893 00000 n +0010999946 00000 n +0010999999 00000 n +0011000052 00000 n +0011000105 00000 n +0011000158 00000 n +0011000211 00000 n +0011000264 00000 n +0011000316 00000 n +0011000369 00000 n +0011000422 00000 n +0011000475 00000 n +0011000528 00000 n +0011000581 00000 n +0011000634 00000 n +0011000687 00000 n +0011000740 00000 n +0011000793 00000 n +0011000846 00000 n +0011000899 00000 n +0011000952 00000 n +0011001005 00000 n +0011001058 00000 n +0011001111 00000 n +0011001164 00000 n +0011001217 00000 n +0011001270 00000 n +0011001323 00000 n +0011001376 00000 n +0011001429 00000 n +0011001482 00000 n +0011001535 00000 n +0011001588 00000 n +0011001641 00000 n +0011001694 00000 n +0011001747 00000 n +0011001800 00000 n +0011001853 00000 n +0011001906 00000 n +0011001959 00000 n +0011002012 00000 n +0011002065 00000 n +0011002118 00000 n +0011002171 00000 n +0011002223 00000 n +0011002276 00000 n +0011002329 00000 n +0011002382 00000 n +0011002435 00000 n +0011002488 00000 n +0011002541 00000 n +0011002594 00000 n +0011002647 00000 n +0011002700 00000 n +0011002753 00000 n +0011002806 00000 n +0011002859 00000 n +0011002912 00000 n +0011002965 00000 n +0011003018 00000 n +0011003071 00000 n +0011003124 00000 n +0011003177 00000 n +0011003230 00000 n +0011003283 00000 n +0011003336 00000 n +0011003389 00000 n +0011003442 00000 n +0011003495 00000 n +0011003548 00000 n +0011003601 00000 n +0011003654 00000 n +0011003707 00000 n +0011003760 00000 n +0011003813 00000 n +0011003866 00000 n +0011003919 00000 n +0011003972 00000 n +0011004025 00000 n +0011004078 00000 n +0011004131 00000 n +0011004184 00000 n +0011004237 00000 n +0011004290 00000 n +0011004342 00000 n +0011004395 00000 n +0011004448 00000 n +0011004501 00000 n +0011004554 00000 n +0011004607 00000 n +0011004660 00000 n +0011004713 00000 n +0011004766 00000 n +0011004819 00000 n +0011004872 00000 n +0011004925 00000 n +0011004978 00000 n +0011005031 00000 n +0011005084 00000 n +0011005137 00000 n +0011005190 00000 n +0011005243 00000 n +0011005296 00000 n +0011005349 00000 n +0011005402 00000 n +0011005455 00000 n +0011005508 00000 n +0011005561 00000 n +0011005614 00000 n +0011005667 00000 n +0011005720 00000 n +0011005773 00000 n +0011005826 00000 n +0011005879 00000 n +0011005932 00000 n +0011005985 00000 n +0011006038 00000 n +0011006091 00000 n +0011006144 00000 n +0011006197 00000 n +0011006250 00000 n +0011006303 00000 n +0011006356 00000 n +0011006409 00000 n +0011006462 00000 n +0011006515 00000 n +0011006568 00000 n +0011006621 00000 n +0011006674 00000 n +0011006727 00000 n +0011006780 00000 n +0011006833 00000 n +0011006886 00000 n +0011006939 00000 n +0011006991 00000 n +0011007044 00000 n +0011007097 00000 n +0011007150 00000 n +0011007203 00000 n +0011007256 00000 n +0011007309 00000 n +0011007362 00000 n +0011007415 00000 n +0011007468 00000 n +0011007521 00000 n +0011007574 00000 n +0011007627 00000 n +0011007680 00000 n +0011007733 00000 n +0011007786 00000 n +0011007839 00000 n +0011007892 00000 n +0011007945 00000 n +0011007998 00000 n +0011008051 00000 n +0011008104 00000 n +0011008157 00000 n +0011008210 00000 n +0011008263 00000 n +0011008316 00000 n +0011008369 00000 n +0011008422 00000 n +0011008475 00000 n +0011008528 00000 n +0011008581 00000 n +0011008634 00000 n +0011008687 00000 n +0011008740 00000 n +0011008793 00000 n +0011008846 00000 n +0011008899 00000 n +0011008952 00000 n +0011009005 00000 n +0011009058 00000 n +0011009111 00000 n +0011009163 00000 n +0011009216 00000 n +0011009269 00000 n +0011009322 00000 n +0011009375 00000 n +0011009428 00000 n +0011009481 00000 n +0011009534 00000 n +0011009587 00000 n +0011009640 00000 n +0011009693 00000 n +0011009746 00000 n +0011009799 00000 n +0011009852 00000 n +0011009905 00000 n +0011009958 00000 n +0011010011 00000 n +0011010064 00000 n +0011010117 00000 n +0011010170 00000 n +0011010223 00000 n +0011010276 00000 n +0011010329 00000 n +0011010382 00000 n +0011010435 00000 n +0011010488 00000 n +0011010541 00000 n +0011010594 00000 n +0011010646 00000 n +0011010699 00000 n +0011010752 00000 n +0011010805 00000 n +0011010858 00000 n +0011010911 00000 n +0011010964 00000 n +0011011017 00000 n +0011011070 00000 n +0011011123 00000 n +0011011176 00000 n +0011011229 00000 n +0011011282 00000 n +0011011335 00000 n +0011011388 00000 n +0011011441 00000 n +0011011494 00000 n +0011011547 00000 n +0011011600 00000 n +0011011653 00000 n +0011011706 00000 n +0011011759 00000 n +0011011812 00000 n +0011011865 00000 n +0011011918 00000 n +0011011971 00000 n +0011012024 00000 n +0011012077 00000 n +0011012130 00000 n +0011012183 00000 n +0011012236 00000 n +0011012289 00000 n +0011012342 00000 n +0011012395 00000 n +0011012448 00000 n +0011012501 00000 n +0011012554 00000 n +0011012607 00000 n +0011012660 00000 n +0011012713 00000 n +0011012766 00000 n +0011012819 00000 n +0011012872 00000 n +0011012925 00000 n +0011012978 00000 n +0011013031 00000 n +0011013084 00000 n +0011013137 00000 n +0011013190 00000 n +0011013243 00000 n +0011013295 00000 n +0011013347 00000 n +0011013400 00000 n +0011013453 00000 n +0011013506 00000 n +0011013559 00000 n +0011013612 00000 n +0011013665 00000 n +0011013718 00000 n +0011013771 00000 n +0011013824 00000 n +0011013877 00000 n +0011013930 00000 n +0011013983 00000 n +0011014036 00000 n +0011014089 00000 n +0011014142 00000 n +0011014195 00000 n +0011014248 00000 n +0011014301 00000 n +0011014354 00000 n +0011014407 00000 n +0011014460 00000 n +0011014513 00000 n +0011014566 00000 n +0011014619 00000 n +0011014672 00000 n +0011014725 00000 n +0011014778 00000 n +0011014831 00000 n +0011014884 00000 n +0011014937 00000 n +0011014989 00000 n +0011015042 00000 n +0011015095 00000 n +0011015148 00000 n +0011015201 00000 n +0011015254 00000 n +0011015307 00000 n +0011015360 00000 n +0011015413 00000 n +0011015466 00000 n +0011015519 00000 n +0011015572 00000 n +0011015625 00000 n +0011015678 00000 n +0011015731 00000 n +0011015784 00000 n +0011015837 00000 n +0011015890 00000 n +0011015943 00000 n +0011015995 00000 n +0011016048 00000 n +0011016101 00000 n +0011016154 00000 n +0011016207 00000 n +0011016260 00000 n +0011016313 00000 n +0011016366 00000 n +0011016419 00000 n +0011016472 00000 n +0011016525 00000 n +0011016578 00000 n +0011016631 00000 n +0011016684 00000 n +0011016737 00000 n +0011016790 00000 n +0011016843 00000 n +0011016896 00000 n +0011016949 00000 n +0011017002 00000 n +0011017055 00000 n +0011017108 00000 n +0011017161 00000 n +0011017214 00000 n +0011017267 00000 n +0011017320 00000 n +0011017373 00000 n +0011017426 00000 n +0011017479 00000 n +0011017532 00000 n +0011017585 00000 n +0011017638 00000 n +0011017691 00000 n +0011017744 00000 n +0011017797 00000 n +0011017850 00000 n +0011017903 00000 n +0011017956 00000 n +0011018009 00000 n +0011018061 00000 n +0011018114 00000 n +0011018167 00000 n +0011018220 00000 n +0011018273 00000 n +0011018326 00000 n +0011018379 00000 n +0011018431 00000 n +0011018484 00000 n +0011018537 00000 n +0011018590 00000 n +0011018643 00000 n +0011018696 00000 n +0011018749 00000 n +0011018802 00000 n +0011018855 00000 n +0011018908 00000 n +0011018961 00000 n +0011019014 00000 n +0011019067 00000 n +0011019120 00000 n +0011019173 00000 n +0011019226 00000 n +0011019279 00000 n +0011019332 00000 n +0011019385 00000 n +0011019438 00000 n +0011019491 00000 n +0011019544 00000 n +0011019597 00000 n +0011019650 00000 n +0011019703 00000 n +0011019756 00000 n +0011019809 00000 n +0011019862 00000 n +0011019915 00000 n +0011019968 00000 n +0011020021 00000 n +0011020074 00000 n +0011020127 00000 n +0011020180 00000 n +0011020233 00000 n +0011020286 00000 n +0011020339 00000 n +0011020392 00000 n +0011020445 00000 n +0011020498 00000 n +0011020550 00000 n +0011020603 00000 n +0011020656 00000 n +0011020709 00000 n +0011020762 00000 n +0011020815 00000 n +0011020868 00000 n +0011020921 00000 n +0011020974 00000 n +0011021027 00000 n +0011021080 00000 n +0011021133 00000 n +0011021186 00000 n +0011021239 00000 n +0011021292 00000 n +0011021345 00000 n +0011021398 00000 n +0011021451 00000 n +0011021503 00000 n +0011021556 00000 n +0011021609 00000 n +0011021662 00000 n +0011021715 00000 n +0011021768 00000 n +0011021821 00000 n +0011021874 00000 n +0011021927 00000 n +0011021980 00000 n +0011022033 00000 n +0011022086 00000 n +0011022139 00000 n +0011022192 00000 n +0011022245 00000 n +0011022298 00000 n +0011022351 00000 n +0011022404 00000 n +0011022457 00000 n +0011022510 00000 n +0011022563 00000 n +0011022616 00000 n +0011022669 00000 n +0011022722 00000 n +0011022775 00000 n +0011022828 00000 n +0011022881 00000 n +0011022934 00000 n +0011022987 00000 n +0011023040 00000 n +0011023093 00000 n +0011023146 00000 n +0011023199 00000 n +0011023252 00000 n +0011023305 00000 n +0011023358 00000 n +0011023411 00000 n +0011023464 00000 n +0011023517 00000 n +0011023570 00000 n +0011023623 00000 n +0011023675 00000 n +0011023728 00000 n +0011023781 00000 n +0011023834 00000 n +0011023887 00000 n +0011023940 00000 n +0011023993 00000 n +0011024046 00000 n +0011024099 00000 n +0011024152 00000 n +0011024205 00000 n +0011024258 00000 n +0011024311 00000 n +0011024364 00000 n +0011024417 00000 n +0011024470 00000 n +0011024523 00000 n +0011024576 00000 n +0011024629 00000 n +0011024682 00000 n +0011024735 00000 n +0011024788 00000 n +0011024841 00000 n +0011024894 00000 n +0011024947 00000 n +0011025000 00000 n +0011025053 00000 n +0011025106 00000 n +0011025159 00000 n +0011025212 00000 n +0011025265 00000 n +0011025318 00000 n +0011025371 00000 n +0011025424 00000 n +0011025477 00000 n +0011025530 00000 n +0011025583 00000 n +0011025636 00000 n +0011025689 00000 n +0011025742 00000 n +0011025795 00000 n +0011025848 00000 n +0011025901 00000 n +0011025954 00000 n +0011026007 00000 n +0011026060 00000 n +0011026113 00000 n +0011026166 00000 n +0011026219 00000 n +0011026272 00000 n +0011026325 00000 n +0011026378 00000 n +0011026431 00000 n +0011026484 00000 n +0011026537 00000 n +0011026590 00000 n +0011026643 00000 n +0011026696 00000 n +0011026749 00000 n +0011026802 00000 n +0011026855 00000 n +0011026908 00000 n +0011026961 00000 n +0011027014 00000 n +0011027067 00000 n +0011027120 00000 n +0011027173 00000 n +0011027226 00000 n +0011027279 00000 n +0011027332 00000 n +0011027385 00000 n +0011027438 00000 n +0011027490 00000 n +0011027543 00000 n +0011027596 00000 n +0011027649 00000 n +0011027702 00000 n +0011027755 00000 n +0011027808 00000 n +0011027861 00000 n +0011027914 00000 n +0011027967 00000 n +0011028020 00000 n +0011028073 00000 n +0011028126 00000 n +0011028179 00000 n +0011028232 00000 n +0011028285 00000 n +0011028338 00000 n +0011028391 00000 n +0011028444 00000 n +0011028497 00000 n +0011028550 00000 n +0011028603 00000 n +0011028656 00000 n +0011028709 00000 n +0011028762 00000 n +0011028815 00000 n +0011028868 00000 n +0011028921 00000 n +0011028974 00000 n +0011029027 00000 n +0011029080 00000 n +0011029133 00000 n +0011029186 00000 n +0011029239 00000 n +0011029292 00000 n +0011029345 00000 n +0011029398 00000 n +0011029451 00000 n +0011029504 00000 n +0011029557 00000 n +0011029610 00000 n +0011029663 00000 n +0011029715 00000 n +0011029768 00000 n +0011029821 00000 n +0011029874 00000 n +0011029927 00000 n +0011029980 00000 n +0011030033 00000 n +0011030086 00000 n +0011030139 00000 n +0011030192 00000 n +0011030245 00000 n +0011030298 00000 n +0011030351 00000 n +0011030404 00000 n +0011030457 00000 n +0011030510 00000 n +0011030563 00000 n +0011030616 00000 n +0011030669 00000 n +0011030722 00000 n +0011030775 00000 n +0011030828 00000 n +0011030881 00000 n +0011030934 00000 n +0011030987 00000 n +0011031040 00000 n +0011031093 00000 n +0011031146 00000 n +0011031199 00000 n +0011031252 00000 n +0011031305 00000 n +0011031358 00000 n +0011031411 00000 n +0011031464 00000 n +0011031517 00000 n +0011031570 00000 n +0011031623 00000 n +0011031676 00000 n +0011031729 00000 n +0011031782 00000 n +0011031835 00000 n +0011031888 00000 n +0011031941 00000 n +0011031994 00000 n +0011032047 00000 n +0011032100 00000 n +0011032153 00000 n +0011032206 00000 n +0011032259 00000 n +0011032312 00000 n +0011032365 00000 n +0011032418 00000 n +0011032471 00000 n +0011032524 00000 n +0011032577 00000 n +0011032630 00000 n +0011032683 00000 n +0011032736 00000 n +0011032789 00000 n +0011032842 00000 n +0011032895 00000 n +0011032948 00000 n +0011033001 00000 n +0011033054 00000 n +0011033107 00000 n +0011033160 00000 n +0011033213 00000 n +0011033266 00000 n +0011033319 00000 n +0011033372 00000 n +0011033425 00000 n +0011033477 00000 n +0011033530 00000 n +0011033583 00000 n +0011033636 00000 n +0011033689 00000 n +0011033742 00000 n +0011033795 00000 n +0011033848 00000 n +0011033901 00000 n +0011033954 00000 n +0011034007 00000 n +0011034060 00000 n +0011034113 00000 n +0011034166 00000 n +0011034219 00000 n +0011034272 00000 n +0011034325 00000 n +0011034378 00000 n +0011034431 00000 n +0011034484 00000 n +0011034537 00000 n +0011034590 00000 n +0011034643 00000 n +0011034696 00000 n +0011034749 00000 n +0011034802 00000 n +0011034855 00000 n +0011034908 00000 n +0011034961 00000 n +0011035014 00000 n +0011035067 00000 n +0011035120 00000 n +0011035173 00000 n +0011035226 00000 n +0011035279 00000 n +0011035332 00000 n +0011035385 00000 n +0011035438 00000 n +0011035491 00000 n +0011035544 00000 n +0011035597 00000 n +0011035650 00000 n +0011035703 00000 n +0011035756 00000 n +0011035809 00000 n +0011035862 00000 n +0011035915 00000 n +0011035968 00000 n +0011036021 00000 n +0011036074 00000 n +0011036127 00000 n +0011036180 00000 n +0011036233 00000 n +0011036286 00000 n +0011036339 00000 n +0011036392 00000 n +0011036445 00000 n +0011036498 00000 n +0011036551 00000 n +0011036604 00000 n +0011036657 00000 n +0011036710 00000 n +0011036763 00000 n +0011036816 00000 n +0011036869 00000 n +0011036922 00000 n +0011036975 00000 n +0011037028 00000 n +0011037081 00000 n +0011037134 00000 n +0011037187 00000 n +0011037240 00000 n +0011037293 00000 n +0011037346 00000 n +0011037399 00000 n +0011037452 00000 n +0011037505 00000 n +0011037558 00000 n +0011037611 00000 n +0011037664 00000 n +0011037717 00000 n +0011037770 00000 n +0011037823 00000 n +0011037875 00000 n +0011037928 00000 n +0011037981 00000 n +0011038033 00000 n +0011038086 00000 n +0011038139 00000 n +0011038192 00000 n +0011038245 00000 n +0011038297 00000 n +0011038350 00000 n +0011038402 00000 n +0011038455 00000 n +0011038508 00000 n +0011038561 00000 n +0011038614 00000 n +0011038667 00000 n +0011038720 00000 n +0011038773 00000 n +0011038826 00000 n +0011038879 00000 n +0011038931 00000 n +0011038984 00000 n +0011039037 00000 n +0011039090 00000 n +0011039143 00000 n +0011039196 00000 n +0011039249 00000 n +0011039302 00000 n +0011039355 00000 n +0011039408 00000 n +0011039460 00000 n +0011039513 00000 n +0011039566 00000 n +0011039619 00000 n +0011039672 00000 n +0011039725 00000 n +0011039778 00000 n +0011039831 00000 n +0011039884 00000 n +0011039936 00000 n +0011039989 00000 n +0011040042 00000 n +0011040095 00000 n +0011040148 00000 n +0011040201 00000 n +0011040254 00000 n +0011040307 00000 n +0011040360 00000 n +0011040413 00000 n +0011040466 00000 n +0011040519 00000 n +0011040572 00000 n +0011040625 00000 n +0011040678 00000 n +0011040731 00000 n +0011040784 00000 n +0011040836 00000 n +0011040886 00000 n +0011040939 00000 n +0011040992 00000 n +0011041045 00000 n +0011041098 00000 n +0011041151 00000 n +0011041204 00000 n +0011041257 00000 n +0011041310 00000 n +0011041363 00000 n +0011041416 00000 n +0011041469 00000 n +0011041522 00000 n +0011041575 00000 n +0011041628 00000 n +0011041681 00000 n +0011041734 00000 n +0011041786 00000 n +0011041839 00000 n +0011041892 00000 n +0011041945 00000 n +0011041998 00000 n +0011042051 00000 n +0011042104 00000 n +0011042157 00000 n +0011042210 00000 n +0011042263 00000 n +0011042316 00000 n +0011042369 00000 n +0011042422 00000 n +0011042475 00000 n +0011042528 00000 n +0011042581 00000 n +0011042634 00000 n +0011042687 00000 n +0011042740 00000 n +0011042793 00000 n +0011042846 00000 n +0011042899 00000 n +0011042952 00000 n +0011043005 00000 n +0011043058 00000 n +0011043111 00000 n +0011043163 00000 n +0011043216 00000 n +0011043269 00000 n +0011043322 00000 n +0011043375 00000 n +0011043428 00000 n +0011043481 00000 n +0011043534 00000 n +0011043587 00000 n +0011043640 00000 n +0011043693 00000 n +0011043746 00000 n +0011043799 00000 n +0011043852 00000 n +0011043905 00000 n +0011043958 00000 n +0011044011 00000 n +0011044064 00000 n +0011044117 00000 n +0011044170 00000 n +0011044223 00000 n +0011044276 00000 n +0011044329 00000 n +0011044382 00000 n +0011044435 00000 n +0011044488 00000 n +0011044541 00000 n +0011044594 00000 n +0011044647 00000 n +0011044700 00000 n +0011044753 00000 n +0011044806 00000 n +0011044859 00000 n +0011044911 00000 n +0011044964 00000 n +0011045017 00000 n +0011045070 00000 n +0011045123 00000 n +0011045176 00000 n +0011045229 00000 n +0011045282 00000 n +0011045335 00000 n +0011045388 00000 n +0011045441 00000 n +0011045494 00000 n +0011045547 00000 n +0011045600 00000 n +0011045653 00000 n +0011045706 00000 n +0011045759 00000 n +0011045812 00000 n +0011045865 00000 n +0011045918 00000 n +0011045971 00000 n +0011046024 00000 n +0011046077 00000 n +0011046130 00000 n +0011046183 00000 n +0011046236 00000 n +0011046289 00000 n +0011046342 00000 n +0011046395 00000 n +0011046448 00000 n +0011046501 00000 n +0011046554 00000 n +0011046607 00000 n +0011046660 00000 n +0011046713 00000 n +0011046766 00000 n +0011046819 00000 n +0011046872 00000 n +0011046925 00000 n +0011046977 00000 n +0011047029 00000 n +0011047081 00000 n +0011047133 00000 n +0011047186 00000 n +0011047238 00000 n +0011047290 00000 n +0011047343 00000 n +0011047395 00000 n +0011047448 00000 n +0011047500 00000 n +0011047553 00000 n +0011047606 00000 n +0011047659 00000 n +0011047712 00000 n +0011047764 00000 n +0011047817 00000 n +0011047869 00000 n +0011047921 00000 n +0011047973 00000 n +0011048026 00000 n +0011048079 00000 n +0011048132 00000 n +0011048185 00000 n +0011048238 00000 n +0011048291 00000 n +0011048343 00000 n +0011048396 00000 n +0011048448 00000 n +0011048501 00000 n +0011048554 00000 n +0011048606 00000 n +0011048659 00000 n +0011048712 00000 n +0011048765 00000 n +0011048817 00000 n +0011048870 00000 n +0011048923 00000 n +0011048976 00000 n +0011049029 00000 n +0011049082 00000 n +0011049135 00000 n +0011049188 00000 n +0011049241 00000 n +0011049294 00000 n +0011049347 00000 n +0011049399 00000 n +0011049452 00000 n +0011049505 00000 n +0011049558 00000 n +0011049610 00000 n +0011049663 00000 n +0011049715 00000 n +0011049767 00000 n +0011049819 00000 n +0011049872 00000 n +0011049925 00000 n +0011049978 00000 n +0011050031 00000 n +0011050083 00000 n +0011050136 00000 n +0011050188 00000 n +0011050241 00000 n +0011050294 00000 n +0011050346 00000 n +0011050399 00000 n +0011050452 00000 n +0011050505 00000 n +0011050558 00000 n +0011050610 00000 n +0011050662 00000 n +0011050714 00000 n +0011050767 00000 n +0011050820 00000 n +0011050873 00000 n +0011050926 00000 n +0011050979 00000 n +0011051032 00000 n +0011051085 00000 n +0011051138 00000 n +0011051191 00000 n +0011051243 00000 n +0011051295 00000 n +0011051347 00000 n +0011051400 00000 n +0011051453 00000 n +0011051506 00000 n +0011051559 00000 n +0011051612 00000 n +0011051665 00000 n +0011051718 00000 n +0011051771 00000 n +0011051824 00000 n +0011051877 00000 n +0011051930 00000 n +0011051983 00000 n +0011052036 00000 n +0011052089 00000 n +0011052142 00000 n +0011052195 00000 n +0011052248 00000 n +0011052301 00000 n +0011052354 00000 n +0011052407 00000 n +0011052460 00000 n +0011052513 00000 n +0011052566 00000 n +0011052619 00000 n +0011052672 00000 n +0011052725 00000 n +0011052778 00000 n +0011052831 00000 n +0011052884 00000 n +0011052937 00000 n +0011052990 00000 n +0011053043 00000 n +0011053096 00000 n +0011053149 00000 n +0011053202 00000 n +0011053255 00000 n +0011053308 00000 n +0011053361 00000 n +0011053414 00000 n +0011053467 00000 n +0011053520 00000 n +0011053573 00000 n +0011053626 00000 n +0011053679 00000 n +0011053732 00000 n +0011053784 00000 n +0011053837 00000 n +0011053890 00000 n +0011053942 00000 n +0011053995 00000 n +0011054048 00000 n +0011054101 00000 n +0011054154 00000 n +0011054207 00000 n +0011054260 00000 n +0011054313 00000 n +0011054366 00000 n +0011054419 00000 n +0011054472 00000 n +0011054524 00000 n +0011054577 00000 n +0011054629 00000 n +0011054682 00000 n +0011054735 00000 n +0011054788 00000 n +0011054841 00000 n +0011054894 00000 n +0011054947 00000 n +0011055000 00000 n +0011055053 00000 n +0011055106 00000 n +0011055158 00000 n +0011055211 00000 n +0011055264 00000 n +0011055320 00000 n +0011055375 00000 n +0011055430 00000 n +0011055485 00000 n +0011055540 00000 n +0011055595 00000 n +0011055650 00000 n +0011055705 00000 n +0011055760 00000 n +0011055815 00000 n +0011055870 00000 n +0011055924 00000 n +0011055979 00000 n +0011056034 00000 n +0011056089 00000 n +0011056144 00000 n +0011056199 00000 n +0011056254 00000 n +0011056309 00000 n +0011056364 00000 n +0011056419 00000 n +0011056474 00000 n +0011056529 00000 n +0011056584 00000 n +0011056639 00000 n +0011056694 00000 n +0011056749 00000 n +0011056804 00000 n +0011056859 00000 n +0011056914 00000 n +0011056969 00000 n +0011057024 00000 n +0011057079 00000 n +0011057134 00000 n +0011057189 00000 n +0011057244 00000 n +0011057299 00000 n +0011057354 00000 n +0011057408 00000 n +0011057462 00000 n +0011057515 00000 n +0011057568 00000 n +0011057621 00000 n +0011057674 00000 n +0011057727 00000 n +0011057780 00000 n +0011057833 00000 n +0011057886 00000 n +0011057939 00000 n +0011057992 00000 n +0011058045 00000 n +0011058098 00000 n +0011058151 00000 n +0011058204 00000 n +0011058257 00000 n +0011058310 00000 n +0011058363 00000 n +0011058416 00000 n +0011058469 00000 n +0011058522 00000 n +0011058575 00000 n +0011058628 00000 n +0011058681 00000 n +0011058734 00000 n +0011058787 00000 n +0011058840 00000 n +0011058893 00000 n +0011058946 00000 n +0011058999 00000 n +0011059052 00000 n +0011059105 00000 n +0011059158 00000 n +0011059211 00000 n +0011059264 00000 n +0011059317 00000 n +0011059370 00000 n +0011059423 00000 n +0011059476 00000 n +0011059529 00000 n +0011059582 00000 n +0011059635 00000 n +0011059688 00000 n +0011059741 00000 n +0011059794 00000 n +0011059847 00000 n +0011059900 00000 n +0011059953 00000 n +0011060006 00000 n +0011060059 00000 n +0011060112 00000 n +0011060165 00000 n +0011060218 00000 n +0011060271 00000 n +0011060324 00000 n +0011060377 00000 n +0011060430 00000 n +0011060483 00000 n +0011060536 00000 n +0011060589 00000 n +0011060642 00000 n +0011060695 00000 n +0011060748 00000 n +0011060801 00000 n +0011060854 00000 n +0011060907 00000 n +0011060960 00000 n +0011061013 00000 n +0011061066 00000 n +0011061119 00000 n +0011061172 00000 n +0011061225 00000 n +0011061278 00000 n +0011061331 00000 n +0011061384 00000 n +0011061437 00000 n +0011061490 00000 n +0011061543 00000 n +0011061596 00000 n +0011061649 00000 n +0011061702 00000 n +0011061755 00000 n +0011061808 00000 n +0011061861 00000 n +0011061914 00000 n +0011061967 00000 n +0011062020 00000 n +0011062072 00000 n +0011062125 00000 n +0011062178 00000 n +0011062231 00000 n +0011062283 00000 n +0011062335 00000 n +0011062388 00000 n +0011062441 00000 n +0011062494 00000 n +0011062547 00000 n +0011062600 00000 n +0011062653 00000 n +0011062706 00000 n +0011062759 00000 n +0011062812 00000 n +0011062865 00000 n +0011062917 00000 n +0011062970 00000 n +0011063023 00000 n +0011063076 00000 n +0011063129 00000 n +0011063182 00000 n +0011063235 00000 n +0011063288 00000 n +0011063340 00000 n +0011063392 00000 n +0011063445 00000 n +0011063498 00000 n +0011063551 00000 n +0011063604 00000 n +0011063657 00000 n +0011063710 00000 n +0011063763 00000 n +0011063816 00000 n +0011063869 00000 n +0011063922 00000 n +0011063975 00000 n +0011064028 00000 n +0011064081 00000 n +0011064134 00000 n +0011064187 00000 n +0011064240 00000 n +0011064293 00000 n +0011064346 00000 n +0011064399 00000 n +0011064452 00000 n +0011064505 00000 n +0011064558 00000 n +0011064611 00000 n +0011064664 00000 n +0011064717 00000 n +0011064770 00000 n +0011064823 00000 n +0011064876 00000 n +0011064929 00000 n +0011064982 00000 n +0011065035 00000 n +0011065087 00000 n +0011065140 00000 n +0011065193 00000 n +0011065246 00000 n +0011065298 00000 n +0011065351 00000 n +0011065404 00000 n +0011065457 00000 n +0011065510 00000 n +0011065563 00000 n +0011065616 00000 n +0011065668 00000 n +0011065721 00000 n +0011065774 00000 n +0011065827 00000 n +0011065880 00000 n +0011065933 00000 n +0011065986 00000 n +0011066038 00000 n +0011066091 00000 n +0011066144 00000 n +0011066197 00000 n +0011066250 00000 n +0011066303 00000 n +0011066356 00000 n +0011066409 00000 n +0011066462 00000 n +0011066515 00000 n +0011066568 00000 n +0011066621 00000 n +0011066674 00000 n +0011066726 00000 n +0011066779 00000 n +0011066832 00000 n +0011066885 00000 n +0011066937 00000 n +0011066990 00000 n +0011067043 00000 n +0011067096 00000 n +0011067149 00000 n +0011067202 00000 n +0011067255 00000 n +0011067308 00000 n +0011067361 00000 n +0011067414 00000 n +0011067467 00000 n +0011067520 00000 n +0011067573 00000 n +0011067626 00000 n +0011067679 00000 n +0011067732 00000 n +0011067785 00000 n +0011067838 00000 n +0011067891 00000 n +0011067944 00000 n +0011067997 00000 n +0011068050 00000 n +0011068103 00000 n +0011068156 00000 n +0011068209 00000 n +0011068262 00000 n +0011068315 00000 n +0011068368 00000 n +0011068421 00000 n +0011068473 00000 n +0011068525 00000 n +0011068577 00000 n +0011068629 00000 n +0011068681 00000 n +0011068733 00000 n +0011068785 00000 n +0011068837 00000 n +0011068889 00000 n +0011068941 00000 n +0011068993 00000 n +0011069045 00000 n +0011069097 00000 n +0011069149 00000 n +0011069201 00000 n +0011069253 00000 n +0011069305 00000 n +0011069357 00000 n +0011069409 00000 n +0011069461 00000 n +0011069513 00000 n +0011069565 00000 n +0011069617 00000 n +0011069669 00000 n +0011069721 00000 n +0011069773 00000 n +0011069826 00000 n +0011069878 00000 n +0011069931 00000 n +0011069984 00000 n +0011070037 00000 n +0011070090 00000 n +0011070143 00000 n +0011070196 00000 n +0011070248 00000 n +0011070301 00000 n +0011070354 00000 n +0011070407 00000 n +0011070459 00000 n +0011070512 00000 n +0011070565 00000 n +0011070618 00000 n +0011070671 00000 n +0011070724 00000 n +0011070777 00000 n +0011070830 00000 n +0011070883 00000 n +0011070936 00000 n +0011070989 00000 n +0011071042 00000 n +0011071095 00000 n +0011071148 00000 n +0011071201 00000 n +0011071254 00000 n +0011071307 00000 n +0011071360 00000 n +0011071413 00000 n +0011071466 00000 n +0011071519 00000 n +0011071572 00000 n +0011071625 00000 n +0011071677 00000 n +0011071730 00000 n +0011071783 00000 n +0011071835 00000 n +0011071887 00000 n +0011071939 00000 n +0011071991 00000 n +0011072043 00000 n +0011072095 00000 n +0011072147 00000 n +0011072199 00000 n +0011072251 00000 n +0011072303 00000 n +0011072355 00000 n +0011072407 00000 n +0011072459 00000 n +0011072511 00000 n +0011072563 00000 n +0011072615 00000 n +0011072667 00000 n +0011072719 00000 n +0011072771 00000 n +0011072823 00000 n +0011072875 00000 n +0011072927 00000 n +0011072979 00000 n +0011073031 00000 n +0011073083 00000 n +0011073135 00000 n +0011073187 00000 n +0011073239 00000 n +0011073291 00000 n +0011073343 00000 n +0011073395 00000 n +0011073447 00000 n +0011073499 00000 n +0011073551 00000 n +0011073603 00000 n +0011073655 00000 n +0011073707 00000 n +0011073759 00000 n +0011073811 00000 n +0011073863 00000 n +0011073915 00000 n +0011073967 00000 n +0011074019 00000 n +0011074071 00000 n +0011074123 00000 n +0011074175 00000 n +0011074227 00000 n +0011074279 00000 n +0011074331 00000 n +0011074383 00000 n +0011074435 00000 n +0011074487 00000 n +0011074539 00000 n +0011074591 00000 n +0011074643 00000 n +0011074695 00000 n +0011074747 00000 n +0011074799 00000 n +0011074851 00000 n +0011074903 00000 n +0011074955 00000 n +0011075007 00000 n +0011075059 00000 n +0011075111 00000 n +0011075163 00000 n +0011075215 00000 n +0011075267 00000 n +0011075319 00000 n +0011075371 00000 n +0011075423 00000 n +0011075475 00000 n +0011075527 00000 n +0011075579 00000 n +0011075631 00000 n +0011075683 00000 n +0011075735 00000 n +0011075787 00000 n +0011075839 00000 n +0011075891 00000 n +0011075943 00000 n +0011075995 00000 n +0011076047 00000 n +0011076099 00000 n +0011076151 00000 n +0011076203 00000 n +0011076255 00000 n +0011076307 00000 n +0011076359 00000 n +0011076411 00000 n +0011076463 00000 n +0011076515 00000 n +0011076567 00000 n +0011076619 00000 n +0011076671 00000 n +0011076723 00000 n +0011076775 00000 n +0011076827 00000 n +0011076879 00000 n +0011076931 00000 n +0011076983 00000 n +0011077035 00000 n +0011077087 00000 n +0011077139 00000 n +0011077191 00000 n +0011077243 00000 n +0011077295 00000 n +0011077347 00000 n +0011077399 00000 n +0011077451 00000 n +0011077503 00000 n +0011077555 00000 n +0011077607 00000 n +0011077659 00000 n +0011077711 00000 n +0011077763 00000 n +0011077815 00000 n +0011077867 00000 n +0011077919 00000 n +0011077971 00000 n +0011078023 00000 n +0011078075 00000 n +0011078127 00000 n +0011078179 00000 n +0011078231 00000 n +0011078283 00000 n +0011078335 00000 n +0011078387 00000 n +0011078439 00000 n +0011078491 00000 n +0011078543 00000 n +0011078595 00000 n +0011078647 00000 n +0011078699 00000 n +0011078751 00000 n +0011078803 00000 n +0011078855 00000 n +0011078907 00000 n +0011078959 00000 n +0011079011 00000 n +0011079063 00000 n +0011079115 00000 n +0011079167 00000 n +0011079219 00000 n +0011079271 00000 n +0011079323 00000 n +0011079375 00000 n +0011079427 00000 n +0011079479 00000 n +0011079531 00000 n +0011079583 00000 n +0011079635 00000 n +0011079687 00000 n +0011079739 00000 n +0011079791 00000 n +0011079843 00000 n +0011079895 00000 n +0011079947 00000 n +0011079999 00000 n +0011080051 00000 n +0011080103 00000 n +0011080155 00000 n +0011080207 00000 n +0011080259 00000 n +0011080311 00000 n +0011080363 00000 n +0011080415 00000 n +0011080467 00000 n +0011080519 00000 n +0011080571 00000 n +0011080623 00000 n +0011080675 00000 n +0011080727 00000 n +0011080779 00000 n +0011080831 00000 n +0011080883 00000 n +0011080935 00000 n +0011080987 00000 n +0011081039 00000 n +0011081091 00000 n +0011081143 00000 n +0011081195 00000 n +0011081247 00000 n +0011081299 00000 n +0011081351 00000 n +0011081403 00000 n +0011081455 00000 n +0011081507 00000 n +0011081559 00000 n +0011081611 00000 n +0011081663 00000 n +0011081715 00000 n +0011081767 00000 n +0011081819 00000 n +0011081871 00000 n +0011081923 00000 n +0011081975 00000 n +0011082027 00000 n +0011082079 00000 n +0011082131 00000 n +0011082183 00000 n +0011082235 00000 n +0011082287 00000 n +0011082339 00000 n +0011082391 00000 n +0011082443 00000 n +0011082495 00000 n +0011082547 00000 n +0011082599 00000 n +0011082651 00000 n +0011082703 00000 n +0011082755 00000 n +0011082807 00000 n +0011082859 00000 n +0011082911 00000 n +0011082963 00000 n +0011083015 00000 n +0011083067 00000 n +0011083119 00000 n +0011083171 00000 n +0011083223 00000 n +0011083275 00000 n +0011083327 00000 n +0011083379 00000 n +0011083431 00000 n +0011083483 00000 n +0011083535 00000 n +0011083587 00000 n +0011083639 00000 n +0011083691 00000 n +0011083743 00000 n +0011083795 00000 n +0011083847 00000 n +0011083899 00000 n +0011083951 00000 n +0011084003 00000 n +0011084055 00000 n +0011084107 00000 n +0011084159 00000 n +0011084211 00000 n +0011084263 00000 n +0011084315 00000 n +0011084367 00000 n +0011084419 00000 n +0011084471 00000 n +0011084523 00000 n +0011084575 00000 n +0011084627 00000 n +0011084679 00000 n +0011084731 00000 n +0011084783 00000 n +0011084835 00000 n +0011084887 00000 n +0011084939 00000 n +0011084991 00000 n +0011085043 00000 n +0011085095 00000 n +0011085148 00000 n +0011085201 00000 n +0011085253 00000 n +0011085306 00000 n +0011085359 00000 n +0011085411 00000 n +0011085464 00000 n +0011085517 00000 n +0011085569 00000 n +0011085622 00000 n +0011085675 00000 n +0011085727 00000 n +0011085780 00000 n +0011085833 00000 n +0011085886 00000 n +0011085938 00000 n +0011085991 00000 n +0011086044 00000 n +0011086097 00000 n +0011086149 00000 n +0011086201 00000 n +0011086253 00000 n +0011086305 00000 n +0011086357 00000 n +0011086409 00000 n +0011086461 00000 n +0011086513 00000 n +0011086565 00000 n +0011086617 00000 n +0011086669 00000 n +0011086721 00000 n +0011086773 00000 n +0011086825 00000 n +0011086877 00000 n +0011086929 00000 n +0011086981 00000 n +0011087033 00000 n +0011087085 00000 n +0011087137 00000 n +0011087189 00000 n +0011087241 00000 n +0011087293 00000 n +0011087345 00000 n +0011087397 00000 n +0011087449 00000 n +0011087501 00000 n +0011087553 00000 n +0011087605 00000 n +0011087657 00000 n +0011087709 00000 n +0011087761 00000 n +0011087813 00000 n +0011087865 00000 n +0011087917 00000 n +0011087969 00000 n +0011088021 00000 n +0011088073 00000 n +0011088125 00000 n +0011088177 00000 n +0011088229 00000 n +0011088281 00000 n +0011088333 00000 n +0011088385 00000 n +0011088437 00000 n +0011088490 00000 n +0011088543 00000 n +0011088596 00000 n +0011088649 00000 n +0011088702 00000 n +0011088755 00000 n +0011088808 00000 n +0011088861 00000 n +0011088914 00000 n +0011088967 00000 n +0011089020 00000 n +0011089073 00000 n +0011089126 00000 n +0011089179 00000 n +0011089232 00000 n +0011089285 00000 n +0011089338 00000 n +0011089391 00000 n +0011089444 00000 n +0011089497 00000 n +0011089550 00000 n +0011089603 00000 n +0011089656 00000 n +0011089709 00000 n +0011089762 00000 n +0011089815 00000 n +0011089868 00000 n +0011089921 00000 n +0011089974 00000 n +0011090027 00000 n +0011090080 00000 n +0011090133 00000 n +0011090186 00000 n +0011090239 00000 n +0011090292 00000 n +0011090345 00000 n +0011090397 00000 n +0011090450 00000 n +0011090503 00000 n +0011090556 00000 n +0011090609 00000 n +0011090662 00000 n +0011090715 00000 n +0011090768 00000 n +0011090821 00000 n +0011090874 00000 n +0011090927 00000 n +0011090980 00000 n +0011091033 00000 n +0011091086 00000 n +0011091139 00000 n +0011091192 00000 n +0011091245 00000 n +0011091298 00000 n +0011091351 00000 n +0011091404 00000 n +0011091457 00000 n +0011091510 00000 n +0011091563 00000 n +0011091616 00000 n +0011091669 00000 n +0011091721 00000 n +0011091773 00000 n +0011091826 00000 n +0011091879 00000 n +0011091932 00000 n +0011091985 00000 n +0011092038 00000 n +0011092091 00000 n +0011092144 00000 n +0011092197 00000 n +0011092250 00000 n +0011092303 00000 n +0011092356 00000 n +0011092409 00000 n +0011092462 00000 n +0011092515 00000 n +0011092568 00000 n +0011092621 00000 n +0011092674 00000 n +0011092727 00000 n +0011092780 00000 n +0011092833 00000 n +0011092886 00000 n +0011092939 00000 n +0011092992 00000 n +0011093045 00000 n +0011093098 00000 n +0011093151 00000 n +0011093204 00000 n +0011093257 00000 n +0011093310 00000 n +0011093363 00000 n +0011093416 00000 n +0011093469 00000 n +0011093522 00000 n +0011093575 00000 n +0011093628 00000 n +0011093681 00000 n +0011093734 00000 n +0011093787 00000 n +0011093840 00000 n +0011093893 00000 n +0011093946 00000 n +0011093999 00000 n +0011094052 00000 n +0011094105 00000 n +0011094158 00000 n +0011094211 00000 n +0011094264 00000 n +0011094317 00000 n +0011094370 00000 n +0011094423 00000 n +0011094476 00000 n +0011094529 00000 n +0011094582 00000 n +0011094635 00000 n +0011094688 00000 n +0011094741 00000 n +0011094794 00000 n +0011094847 00000 n +0011094900 00000 n +0011094953 00000 n +0011095006 00000 n +0011095059 00000 n +0011095112 00000 n +0011095165 00000 n +0011095218 00000 n +0011095271 00000 n +0011095324 00000 n +0011095377 00000 n +0011095430 00000 n +0011095483 00000 n +0011095536 00000 n +0011095589 00000 n +0011095642 00000 n +0011095695 00000 n +0011095748 00000 n +0011095801 00000 n +0011095854 00000 n +0011095907 00000 n +0011095960 00000 n +0011096013 00000 n +0011096066 00000 n +0011096119 00000 n +0011096172 00000 n +0011096225 00000 n +0011096278 00000 n +0011096331 00000 n +0011096384 00000 n +0011096437 00000 n +0011096490 00000 n +0011096543 00000 n +0011096596 00000 n +0011096649 00000 n +0011096702 00000 n +0011096755 00000 n +0011096808 00000 n +0011096861 00000 n +0011096914 00000 n +0011096967 00000 n +0011097020 00000 n +0011097073 00000 n +0011097126 00000 n +0011097179 00000 n +0011097232 00000 n +0011097285 00000 n +0011097338 00000 n +0011097391 00000 n +0011097444 00000 n +0011097497 00000 n +0011097549 00000 n +0011097602 00000 n +0011097655 00000 n +0011097708 00000 n +0011097761 00000 n +0011097814 00000 n +0011097867 00000 n +0011097920 00000 n +0011097973 00000 n +0011098026 00000 n +0011098079 00000 n +0011098132 00000 n +0011098185 00000 n +0011098238 00000 n +0011098291 00000 n +0011098344 00000 n +0011098397 00000 n +0011098450 00000 n +0011098503 00000 n +0011098556 00000 n +0011098609 00000 n +0011098661 00000 n +0011098713 00000 n +0011098765 00000 n +0011098818 00000 n +0011098871 00000 n +0011098924 00000 n +0011098977 00000 n +0011099030 00000 n +0011099083 00000 n +0011099136 00000 n +0011099189 00000 n +0011099242 00000 n +0011099295 00000 n +0011099348 00000 n +0011099401 00000 n +0011099454 00000 n +0011099507 00000 n +0011099560 00000 n +0011099613 00000 n +0011099666 00000 n +0011099719 00000 n +0011099772 00000 n +0011099824 00000 n +0011099876 00000 n +0011099929 00000 n +0011099982 00000 n +0011100035 00000 n +0011100088 00000 n +0011100141 00000 n +0011100194 00000 n +0011100247 00000 n +0011100300 00000 n +0011100353 00000 n +0011100406 00000 n +0011100459 00000 n +0011100512 00000 n +0011100565 00000 n +0011100618 00000 n +0011100671 00000 n +0011100724 00000 n +0011100777 00000 n +0011100830 00000 n +0011100883 00000 n +0011100936 00000 n +0011100989 00000 n +0011101042 00000 n +0011101095 00000 n +0011101148 00000 n +0011101201 00000 n +0011101254 00000 n +0011101307 00000 n +0011101360 00000 n +0011101413 00000 n +0011101466 00000 n +0011101519 00000 n +0011101572 00000 n +0011101625 00000 n +0011101678 00000 n +0011101731 00000 n +0011101784 00000 n +0011101837 00000 n +0011101890 00000 n +0011101943 00000 n +0011101996 00000 n +0011102049 00000 n +0011102102 00000 n +0011102155 00000 n +0011102208 00000 n +0011102261 00000 n +0011102314 00000 n +0011102367 00000 n +0011102419 00000 n +0011102472 00000 n +0011102525 00000 n +0011102578 00000 n +0011102631 00000 n +0011102684 00000 n +0011102737 00000 n +0011102790 00000 n +0011102843 00000 n +0011102896 00000 n +0011102949 00000 n +0011103002 00000 n +0011103055 00000 n +0011103108 00000 n +0011103161 00000 n +0011103214 00000 n +0011103267 00000 n +0011103320 00000 n +0011103373 00000 n +0011103426 00000 n +0011103479 00000 n +0011103532 00000 n +0011103585 00000 n +0011103638 00000 n +0011103691 00000 n +0011103744 00000 n +0011103797 00000 n +0011103850 00000 n +0011103903 00000 n +0011103956 00000 n +0011104009 00000 n +0011104062 00000 n +0011104115 00000 n +0011104168 00000 n +0011104221 00000 n +0011104274 00000 n +0011104327 00000 n +0011104380 00000 n +0011104433 00000 n +0011104486 00000 n +0011104539 00000 n +0011104592 00000 n +0011104645 00000 n +0011104698 00000 n +0011104751 00000 n +0011104804 00000 n +0011104857 00000 n +0011104910 00000 n +0011104963 00000 n +0011105016 00000 n +0011105069 00000 n +0011105122 00000 n +0011105175 00000 n +0011105227 00000 n +0011105279 00000 n +0011105331 00000 n +0011105383 00000 n +0011105436 00000 n +0011105489 00000 n +0011105541 00000 n +0011105594 00000 n +0011105647 00000 n +0011105700 00000 n +0011105753 00000 n +0011105806 00000 n +0011105859 00000 n +0011105911 00000 n +0011105964 00000 n +0011106017 00000 n +0011106070 00000 n +0011106123 00000 n +0011106175 00000 n +0011106228 00000 n +0011106281 00000 n +0011106334 00000 n +0011106386 00000 n +0011106439 00000 n +0011106492 00000 n +0011106545 00000 n +0011106598 00000 n +0011106651 00000 n +0011106704 00000 n +0011106756 00000 n +0011106809 00000 n +0011106862 00000 n +0011106914 00000 n +0011106966 00000 n +0011107018 00000 n +0011107071 00000 n +0011107124 00000 n +0011107177 00000 n +0011107230 00000 n +0011107283 00000 n +0011107336 00000 n +0011107389 00000 n +0011107442 00000 n +0011107495 00000 n +0011107548 00000 n +0011107601 00000 n +0011107654 00000 n +0011107707 00000 n +0011107760 00000 n +0011107813 00000 n +0011107866 00000 n +0011107918 00000 n +0011107970 00000 n +0011108023 00000 n +0011108076 00000 n +0011108129 00000 n +0011108182 00000 n +0011108235 00000 n +0011108287 00000 n +0011108340 00000 n +0011108393 00000 n +0011108446 00000 n +0011108499 00000 n +0011108552 00000 n +0011108605 00000 n +0011108658 00000 n +0011108711 00000 n +0011108764 00000 n +0011108817 00000 n +0011108870 00000 n +0011108923 00000 n +0011108976 00000 n +0011109029 00000 n +0011109082 00000 n +0011109135 00000 n +0011109188 00000 n +0011109241 00000 n +0011109294 00000 n +0011109347 00000 n +0011109400 00000 n +0011109453 00000 n +0011109506 00000 n +0011109558 00000 n +0011109611 00000 n +0011109664 00000 n +0011109717 00000 n +0011109770 00000 n +0011109823 00000 n +0011109876 00000 n +0011109929 00000 n +0011109982 00000 n +0011110035 00000 n +0011110088 00000 n +0011110141 00000 n +0011110193 00000 n +0011110246 00000 n +0011110299 00000 n +0011110352 00000 n +0011110404 00000 n +0011110457 00000 n +0011110510 00000 n +0011110563 00000 n +0011110616 00000 n +0011110669 00000 n +0011110722 00000 n +0011110774 00000 n +0011110827 00000 n +0011110879 00000 n +0011110932 00000 n +0011110985 00000 n +0011111038 00000 n +0011111091 00000 n +0011111144 00000 n +0011111197 00000 n +0011111250 00000 n +0011111303 00000 n +0011111356 00000 n +0011111409 00000 n +0011111462 00000 n +0011111515 00000 n +0011111568 00000 n +0011111621 00000 n +0011111674 00000 n +0011111727 00000 n +0011111780 00000 n +0011111833 00000 n +0011111885 00000 n +0011111938 00000 n +0011111991 00000 n +0011112044 00000 n +0011112096 00000 n +0011112149 00000 n +0011112202 00000 n +0011112255 00000 n +0011112308 00000 n +0011112361 00000 n +0011112414 00000 n +0011112467 00000 n +0011112519 00000 n +0011112572 00000 n +0011112625 00000 n +0011112678 00000 n +0011112731 00000 n +0011112784 00000 n +0011112837 00000 n +0011112890 00000 n +0011112943 00000 n +0011112996 00000 n +0011113049 00000 n +0011113102 00000 n +0011113155 00000 n +0011113208 00000 n +0011113261 00000 n +0011113314 00000 n +0011113367 00000 n +0011113420 00000 n +0011113473 00000 n +0011113526 00000 n +0011113579 00000 n +0011113632 00000 n +0011113685 00000 n +0011113738 00000 n +0011113791 00000 n +0011113844 00000 n +0011113897 00000 n +0011113950 00000 n +0011114003 00000 n +0011114056 00000 n +0011114109 00000 n +0011114162 00000 n +0011114215 00000 n +0011114268 00000 n +0011114321 00000 n +0011114374 00000 n +0011114427 00000 n +0011114480 00000 n +0011114533 00000 n +0011114586 00000 n +0011114639 00000 n +0011114692 00000 n +0011114745 00000 n +0011114798 00000 n +0011114851 00000 n +0011114903 00000 n +0011114956 00000 n +0011115009 00000 n +0011115062 00000 n +0011115114 00000 n +0011115167 00000 n +0011115220 00000 n +0011115273 00000 n +0011115326 00000 n +0011115379 00000 n +0011115432 00000 n +0011115485 00000 n +0011115538 00000 n +0011115591 00000 n +0011115643 00000 n +0011115696 00000 n +0011115749 00000 n +0011115802 00000 n +0011115855 00000 n +0011115908 00000 n +0011115961 00000 n +0011116014 00000 n +0011116067 00000 n +0011116120 00000 n +0011116173 00000 n +0011116226 00000 n +0011116279 00000 n +0011116332 00000 n +0011116385 00000 n +0011116438 00000 n +0011116491 00000 n +0011116544 00000 n +0011116597 00000 n +0011116650 00000 n +0011116703 00000 n +0011116756 00000 n +0011116809 00000 n +0011116862 00000 n +0011116915 00000 n +0011116968 00000 n +0011117021 00000 n +0011117074 00000 n +0011117127 00000 n +0011117180 00000 n +0011117233 00000 n +0011117286 00000 n +0011117339 00000 n +0011117392 00000 n +0011117445 00000 n +0011117498 00000 n +0011117551 00000 n +0011117604 00000 n +0011117657 00000 n +0011117710 00000 n +0011117763 00000 n +0011117816 00000 n +0011117869 00000 n +0011117922 00000 n +0011117975 00000 n +0011118028 00000 n +0011118081 00000 n +0011118134 00000 n +0011118187 00000 n +0011118240 00000 n +0011118293 00000 n +0011118346 00000 n +0011118399 00000 n +0011118452 00000 n +0011118505 00000 n +0011118558 00000 n +0011118610 00000 n +0011118663 00000 n +0011118716 00000 n +0011118769 00000 n +0011118822 00000 n +0011118875 00000 n +0011118928 00000 n +0011118981 00000 n +0011119034 00000 n +0011119087 00000 n +0011119140 00000 n +0011119193 00000 n +0011119246 00000 n +0011119299 00000 n +0011119352 00000 n +0011119405 00000 n +0011119458 00000 n +0011119511 00000 n +0011119564 00000 n +0011119617 00000 n +0011119670 00000 n +0011119723 00000 n +0011119776 00000 n +0011119829 00000 n +0011119882 00000 n +0011119935 00000 n +0011119988 00000 n +0011120041 00000 n +0011120094 00000 n +0011120147 00000 n +0011120200 00000 n +0011120253 00000 n +0011120306 00000 n +0011120359 00000 n +0011120412 00000 n +0011120465 00000 n +0011120518 00000 n +0011120571 00000 n +0011120624 00000 n +0011120677 00000 n +0011120730 00000 n +0011120783 00000 n +0011120836 00000 n +0011120889 00000 n +0011120942 00000 n +0011120995 00000 n +0011121048 00000 n +0011121101 00000 n +0011121154 00000 n +0011121207 00000 n +0011121260 00000 n +0011121313 00000 n +0011121366 00000 n +0011121419 00000 n +0011121472 00000 n +0011121525 00000 n +0011121578 00000 n +0011121631 00000 n +0011121684 00000 n +0011121737 00000 n +0011121790 00000 n +0011121843 00000 n +0011121896 00000 n +0011121949 00000 n +0011122002 00000 n +0011122054 00000 n +0011122107 00000 n +0011122160 00000 n +0011122212 00000 n +0011122265 00000 n +0011122318 00000 n +0011122371 00000 n +0011122424 00000 n +0011122477 00000 n +0011122530 00000 n +0011122583 00000 n +0011122636 00000 n +0011122689 00000 n +0011122742 00000 n +0011122794 00000 n +0011122846 00000 n +0011122898 00000 n +0011122951 00000 n +0011123004 00000 n +0011123057 00000 n +0011123110 00000 n +0011123163 00000 n +0011123216 00000 n +0011123269 00000 n +0011123322 00000 n +0011123375 00000 n +0011123428 00000 n +0011123481 00000 n +0011123534 00000 n +0011123587 00000 n +0011123640 00000 n +0011123692 00000 n +0011123745 00000 n +0011123798 00000 n +0011123851 00000 n +0011123904 00000 n +0011123957 00000 n +0011124010 00000 n +0011124063 00000 n +0011124116 00000 n +0011124169 00000 n +0011124222 00000 n +0011124275 00000 n +0011124328 00000 n +0011124381 00000 n +0011124434 00000 n +0011124487 00000 n +0011124540 00000 n +0011124593 00000 n +0011124646 00000 n +0011124699 00000 n +0011124752 00000 n +0011124805 00000 n +0011124858 00000 n +0011124911 00000 n +0011124964 00000 n +0011125017 00000 n +0011125070 00000 n +0011125123 00000 n +0011125176 00000 n +0011125229 00000 n +0011125282 00000 n +0011125335 00000 n +0011125388 00000 n +0011125441 00000 n +0011125494 00000 n +0011125547 00000 n +0011125600 00000 n +0011125653 00000 n +0011125706 00000 n +0011125759 00000 n +0011125812 00000 n +0011125865 00000 n +0011125918 00000 n +0011125971 00000 n +0011126024 00000 n +0011126077 00000 n +0011126130 00000 n +0011126183 00000 n +0011126236 00000 n +0011126289 00000 n +0011126342 00000 n +0011126395 00000 n +0011126448 00000 n +0011126501 00000 n +0011126554 00000 n +0011126607 00000 n +0011126660 00000 n +0011126713 00000 n +0011126766 00000 n +0011126819 00000 n +0011126872 00000 n +0011126925 00000 n +0011126978 00000 n +0011127031 00000 n +0011127084 00000 n +0011127137 00000 n +0011127190 00000 n +0011127243 00000 n +0011127296 00000 n +0011127349 00000 n +0011127402 00000 n +0011127455 00000 n +0011127508 00000 n +0011127561 00000 n +0011127614 00000 n +0011127667 00000 n +0011127720 00000 n +0011127773 00000 n +0011127826 00000 n +0011127879 00000 n +0011127932 00000 n +0011127985 00000 n +0011128038 00000 n +0011128091 00000 n +0011128144 00000 n +0011128197 00000 n +0011128250 00000 n +0011128303 00000 n +0011128356 00000 n +0011128409 00000 n +0011128462 00000 n +0011128515 00000 n +0011128567 00000 n +0011128620 00000 n +0011128673 00000 n +0011128726 00000 n +0011128779 00000 n +0011128832 00000 n +0011128885 00000 n +0011128938 00000 n +0011128991 00000 n +0011129044 00000 n +0011129097 00000 n +0011129150 00000 n +0011129203 00000 n +0011129256 00000 n +0011129309 00000 n +0011129362 00000 n +0011129415 00000 n +0011129468 00000 n +0011129521 00000 n +0011129574 00000 n +0011129627 00000 n +0011129680 00000 n +0011129733 00000 n +0011129786 00000 n +0011129839 00000 n +0011129892 00000 n +0011129945 00000 n +0011129998 00000 n +0011130051 00000 n +0011130104 00000 n +0011130157 00000 n +0011130210 00000 n +0011130263 00000 n +0011130316 00000 n +0011130369 00000 n +0011130421 00000 n +0011130473 00000 n +0011130526 00000 n +0011130579 00000 n +0011130632 00000 n +0011130684 00000 n +0011130737 00000 n +0011130790 00000 n +0011130843 00000 n +0011130896 00000 n +0011130949 00000 n +0011131002 00000 n +0011131055 00000 n +0011131108 00000 n +0011131161 00000 n +0011131214 00000 n +0011131267 00000 n +0011131320 00000 n +0011131373 00000 n +0011131426 00000 n +0011131479 00000 n +0011131532 00000 n +0011131585 00000 n +0011131638 00000 n +0011131691 00000 n +0011131744 00000 n +0011131797 00000 n +0011131850 00000 n +0011131903 00000 n +0011131956 00000 n +0011132009 00000 n +0011132062 00000 n +0011132115 00000 n +0011132168 00000 n +0011132221 00000 n +0011132274 00000 n +0011132327 00000 n +0011132380 00000 n +0011132433 00000 n +0011132486 00000 n +0011132539 00000 n +0011132592 00000 n +0011132645 00000 n +0011132698 00000 n +0011132751 00000 n +0011132804 00000 n +0011132857 00000 n +0011132910 00000 n +0011132963 00000 n +0011133016 00000 n +0011133069 00000 n +0011133122 00000 n +0011133175 00000 n +0011133228 00000 n +0011133281 00000 n +0011133334 00000 n +0011133387 00000 n +0011133440 00000 n +0011133493 00000 n +0011133546 00000 n +0011133599 00000 n +0011133652 00000 n +0011133705 00000 n +0011133757 00000 n +0011133810 00000 n +0011133863 00000 n +0011133916 00000 n +0011133968 00000 n +0011134021 00000 n +0011134074 00000 n +0011134127 00000 n +0011134180 00000 n +0011134233 00000 n +0011134286 00000 n +0011134339 00000 n +0011134392 00000 n +0011134445 00000 n +0011134498 00000 n +0011134551 00000 n +0011134604 00000 n +0011134657 00000 n +0011134710 00000 n +0011134763 00000 n +0011134816 00000 n +0011134869 00000 n +0011134922 00000 n +0011134975 00000 n +0011135028 00000 n +0011135081 00000 n +0011135134 00000 n +0011135187 00000 n +0011135240 00000 n +0011135293 00000 n +0011135346 00000 n +0011135399 00000 n +0011135452 00000 n +0011135505 00000 n +0011135558 00000 n +0011135611 00000 n +0011135664 00000 n +0011135717 00000 n +0011135770 00000 n +0011135823 00000 n +0011135876 00000 n +0011135929 00000 n +0011135982 00000 n +0011136035 00000 n +0011136088 00000 n +0011136141 00000 n +0011136194 00000 n +0011136247 00000 n +0011136300 00000 n +0011136353 00000 n +0011136406 00000 n +0011136459 00000 n +0011136512 00000 n +0011136565 00000 n +0011136618 00000 n +0011136671 00000 n +0011136724 00000 n +0011136777 00000 n +0011136830 00000 n +0011136883 00000 n +0011136936 00000 n +0011136989 00000 n +0011137042 00000 n +0011137095 00000 n +0011137148 00000 n +0011137201 00000 n +0011137254 00000 n +0011137307 00000 n +0011137360 00000 n +0011137413 00000 n +0011137466 00000 n +0011137519 00000 n +0011137572 00000 n +0011137625 00000 n +0011137678 00000 n +0011137731 00000 n +0011137784 00000 n +0011137837 00000 n +0011137890 00000 n +0011137943 00000 n +0011137996 00000 n +0011138049 00000 n +0011138102 00000 n +0011138155 00000 n +0011138208 00000 n +0011138261 00000 n +0011138314 00000 n +0011138367 00000 n +0011138420 00000 n +0011138473 00000 n +0011138526 00000 n +0011138579 00000 n +0011138632 00000 n +0011138685 00000 n +0011138738 00000 n +0011138791 00000 n +0011138844 00000 n +0011138897 00000 n +0011138950 00000 n +0011139003 00000 n +0011139056 00000 n +0011139109 00000 n +0011139162 00000 n +0011139215 00000 n +0011139268 00000 n +0011141007 00000 n +0011142692 00000 n +0011144299 00000 n +0011145906 00000 n +0011147513 00000 n +0011149090 00000 n +0011150631 00000 n +0011152172 00000 n +0011153713 00000 n +0011155254 00000 n +0011156795 00000 n +0011158336 00000 n +0011159877 00000 n +0011161418 00000 n +0011162959 00000 n +0011164500 00000 n +0011166041 00000 n +0011167582 00000 n +0011169123 00000 n +0011170733 00000 n +0011172406 00000 n +0011174079 00000 n +0011175752 00000 n +0011177425 00000 n +0011179098 00000 n +0011180721 00000 n +0011182385 00000 n +0011184058 00000 n +0011185731 00000 n +0011187383 00000 n +0011189012 00000 n +0011190683 00000 n +0011192356 00000 n +0011194029 00000 n +0011195693 00000 n +0011197300 00000 n +0011198961 00000 n +0011200610 00000 n +0011202283 00000 n +0011203956 00000 n +0011205596 00000 n +0011207203 00000 n +0011208810 00000 n +0011210428 00000 n +0011212099 00000 n +0011213772 00000 n +0011215445 00000 n +0011217118 00000 n +0011218791 00000 n +0011220464 00000 n +0011222119 00000 n +0011223594 00000 n +0011225069 00000 n +0011226601 00000 n +0011228238 00000 n +0011229911 00000 n +0011231584 00000 n +0011233257 00000 n +0011234930 00000 n +0011234983 00000 n +0011235036 00000 n +0011235089 00000 n +0011235142 00000 n +0011235195 00000 n +0011235248 00000 n +0011235301 00000 n +0011235354 00000 n +0011235407 00000 n +0011235460 00000 n +0011235513 00000 n +0011235566 00000 n +0011235619 00000 n +0011235672 00000 n +0011235725 00000 n +0011235778 00000 n +0011235831 00000 n +0011235884 00000 n +0011235937 00000 n +0011235990 00000 n +0011236043 00000 n +0011236096 00000 n +0011236149 00000 n +0011236202 00000 n +0011236255 00000 n +0011236308 00000 n +0011236361 00000 n +0011236414 00000 n +0011236467 00000 n +0011236520 00000 n +0011236573 00000 n +0011236626 00000 n +0011236679 00000 n +0011236732 00000 n +0011236785 00000 n +0011236838 00000 n +0011236891 00000 n +0011236944 00000 n +0011236997 00000 n +0011237050 00000 n +0011237103 00000 n +0011237156 00000 n +0011237209 00000 n +0011237262 00000 n +0011237315 00000 n +0011237368 00000 n +0011237421 00000 n +0011237474 00000 n +0011237527 00000 n +0011237580 00000 n +0011237633 00000 n +0011237686 00000 n +0011237739 00000 n +0011237792 00000 n +0011237845 00000 n +0011237898 00000 n +0011237951 00000 n +0011238004 00000 n +0011238057 00000 n +0011238110 00000 n +0011238163 00000 n +0011238216 00000 n +0011238269 00000 n +0011238322 00000 n +0011238375 00000 n +0011238428 00000 n +0011238481 00000 n +0011238534 00000 n +0011238587 00000 n +0011238640 00000 n +0011238693 00000 n +0011238746 00000 n +0011238799 00000 n +0011238852 00000 n +0011238905 00000 n +0011238958 00000 n +0011239011 00000 n +0011239064 00000 n +0011239117 00000 n +0011239170 00000 n +0011239223 00000 n +0011239276 00000 n +0011239329 00000 n +0011239382 00000 n +0011239435 00000 n +0011239488 00000 n +0011239541 00000 n +0011239594 00000 n +0011239647 00000 n +0011239700 00000 n +0011239753 00000 n +0011239806 00000 n +0011239859 00000 n +0011239912 00000 n +0011239965 00000 n +0011240018 00000 n +0011240071 00000 n +0011240124 00000 n +0011240177 00000 n +0011240230 00000 n +0011240283 00000 n +0011240336 00000 n +0011240389 00000 n +0011240442 00000 n +0011240495 00000 n +0011240548 00000 n +0011240601 00000 n +0011240654 00000 n +0011240707 00000 n +0011240760 00000 n +0011240813 00000 n +0011240866 00000 n +0011240919 00000 n +0011240972 00000 n +0011241025 00000 n +0011241078 00000 n +0011241131 00000 n +0011241184 00000 n +0011241237 00000 n +0011241290 00000 n +0011241343 00000 n +0011241396 00000 n +0011241449 00000 n +0011241502 00000 n +0011241555 00000 n +0011241608 00000 n +0011241661 00000 n +0011241714 00000 n +0011241767 00000 n +0011241820 00000 n +0011241873 00000 n +0011241926 00000 n +0011241979 00000 n +0011242032 00000 n +0011242085 00000 n +0011242138 00000 n +0011242191 00000 n +0011242244 00000 n +0011242297 00000 n +0011242350 00000 n +0011242403 00000 n +0011242456 00000 n +0011242509 00000 n +0011242562 00000 n +0011242615 00000 n +0011242668 00000 n +0011242721 00000 n +0011242774 00000 n +0011242827 00000 n +0011242880 00000 n +0011242933 00000 n +0011242986 00000 n +0011243039 00000 n +0011243092 00000 n +0011243145 00000 n +0011243198 00000 n +0011243251 00000 n +0011243304 00000 n +0011243357 00000 n +0011243410 00000 n +0011243463 00000 n +0011243516 00000 n +0011243569 00000 n +0011243622 00000 n +0011243675 00000 n +0011243728 00000 n +0011243781 00000 n +0011243834 00000 n +0011243887 00000 n +0011243940 00000 n +0011243993 00000 n +0011244046 00000 n +0011244099 00000 n +0011244152 00000 n +0011244205 00000 n +0011244258 00000 n +0011244311 00000 n +0011244364 00000 n +0011244417 00000 n +0011244470 00000 n +0011244523 00000 n +0011244576 00000 n +0011244629 00000 n +0011244682 00000 n +0011244735 00000 n +0011244788 00000 n +0011244841 00000 n +0011244894 00000 n +0011244947 00000 n +0011245000 00000 n +0011245053 00000 n +0011245106 00000 n +0011245159 00000 n +0011245212 00000 n +0011245264 00000 n +0011245317 00000 n +0011245370 00000 n +0011245423 00000 n +0011245475 00000 n +0011245528 00000 n +0011245581 00000 n +0011245634 00000 n +0011245687 00000 n +0011245740 00000 n +0011245793 00000 n +0011245846 00000 n +0011245899 00000 n +0011245952 00000 n +0011246005 00000 n +0011246058 00000 n +0011246111 00000 n +0011246164 00000 n +0011246217 00000 n +0011246270 00000 n +0011246323 00000 n +0011246376 00000 n +0011246429 00000 n +0011246482 00000 n +0011246535 00000 n +0011246588 00000 n +0011246641 00000 n +0011246694 00000 n +0011246747 00000 n +0011246800 00000 n +0011246853 00000 n +0011246906 00000 n +0011246959 00000 n +0011247012 00000 n +0011247065 00000 n +0011247118 00000 n +0011247171 00000 n +0011247224 00000 n +0011247277 00000 n +0011247330 00000 n +0011247383 00000 n +0011247436 00000 n +0011247489 00000 n +0011247542 00000 n +0011247595 00000 n +0011247648 00000 n +0011247701 00000 n +0011247754 00000 n +0011247807 00000 n +0011247860 00000 n +0011247913 00000 n +0011247966 00000 n +0011248019 00000 n +0011248072 00000 n +0011248125 00000 n +0011248178 00000 n +0011248231 00000 n +0011248284 00000 n +0011248337 00000 n +0011248390 00000 n +0011248443 00000 n +0011248496 00000 n +0011248549 00000 n +0011248602 00000 n +0011248655 00000 n +0011248708 00000 n +0011248761 00000 n +0011248814 00000 n +0011248867 00000 n +0011248920 00000 n +0011248973 00000 n +0011249026 00000 n +0011249079 00000 n +0011249132 00000 n +0011249185 00000 n +0011249238 00000 n +0011249291 00000 n +0011249344 00000 n +0011249397 00000 n +0011249450 00000 n +0011249503 00000 n +0011249556 00000 n +0011249609 00000 n +0011249662 00000 n +0011249715 00000 n +0011249768 00000 n +0011249821 00000 n +0011249874 00000 n +0011249927 00000 n +0011249980 00000 n +0011250033 00000 n +0011250086 00000 n +0011250139 00000 n +0011250192 00000 n +0011250245 00000 n +0011250298 00000 n +0011250351 00000 n +0011250404 00000 n +0011250457 00000 n +0011250510 00000 n +0011250563 00000 n +0011250616 00000 n +0011250669 00000 n +0011250722 00000 n +0011250774 00000 n +0011250826 00000 n +0011250879 00000 n +0011250932 00000 n +0011250985 00000 n +0011251038 00000 n +0011251091 00000 n +0011251144 00000 n +0011251197 00000 n +0011251250 00000 n +0011251303 00000 n +0011251356 00000 n +0011251409 00000 n +0011251462 00000 n +0011251515 00000 n +0011251568 00000 n +0011251621 00000 n +0011251674 00000 n +0011251727 00000 n +0011251780 00000 n +0011251833 00000 n +0011251886 00000 n +0011251938 00000 n +0011251990 00000 n +0011252042 00000 n +0011252094 00000 n +0011252146 00000 n +0011252198 00000 n +0011252250 00000 n +0011252302 00000 n +0011252354 00000 n +0011252406 00000 n +0011252458 00000 n +0011252510 00000 n +0011252562 00000 n +0011252614 00000 n +0011252666 00000 n +0011252718 00000 n +0011252770 00000 n +0011252822 00000 n +0011252874 00000 n +0011252926 00000 n +0011252978 00000 n +0011253030 00000 n +0011253082 00000 n +0011253134 00000 n +0011253186 00000 n +0011253238 00000 n +0011253290 00000 n +0011253342 00000 n +0011253394 00000 n +0011253446 00000 n +0011253498 00000 n +0011253550 00000 n +0011253602 00000 n +0011253654 00000 n +0011253706 00000 n +0011253758 00000 n +0011253810 00000 n +0011253862 00000 n +0011253915 00000 n +0011253968 00000 n +0011254021 00000 n +0011254074 00000 n +0011254127 00000 n +0011254180 00000 n +0011254233 00000 n +0011254286 00000 n +0011254339 00000 n +0011254392 00000 n +0011254445 00000 n +0011254498 00000 n +0011254551 00000 n +0011254604 00000 n +0011254657 00000 n +0011254710 00000 n +0011254763 00000 n +0011254816 00000 n +0011254869 00000 n +0011254922 00000 n +0011254975 00000 n +0011255028 00000 n +0011255081 00000 n +0011255134 00000 n +0011255187 00000 n +0011255240 00000 n +0011255292 00000 n +0011255344 00000 n +0011255396 00000 n +0011255448 00000 n +0011255500 00000 n +0011255552 00000 n +0011255604 00000 n +0011255656 00000 n +0011255708 00000 n +0011255760 00000 n +0011255812 00000 n +0011255864 00000 n +0011255916 00000 n +0011255968 00000 n +0011256020 00000 n +0011256072 00000 n +0011256124 00000 n +0011256176 00000 n +0011256228 00000 n +0011256280 00000 n +0011256332 00000 n +0011256384 00000 n +0011256436 00000 n +0011256488 00000 n +0011256540 00000 n +0011256592 00000 n +0011256644 00000 n +0011256696 00000 n +0011256748 00000 n +0011256800 00000 n +0011256852 00000 n +0011256904 00000 n +0011256956 00000 n +0011257008 00000 n +0011257060 00000 n +0011257112 00000 n +0011257164 00000 n +0011257216 00000 n +0011257268 00000 n +0011257320 00000 n +0011257372 00000 n +0011257424 00000 n +0011257476 00000 n +0011257528 00000 n +0011257580 00000 n +0011257632 00000 n +0011257684 00000 n +0011257736 00000 n +0011257788 00000 n +0011257840 00000 n +0011257892 00000 n +0011257944 00000 n +0011257996 00000 n +0011258048 00000 n +0011258100 00000 n +0011258152 00000 n +0011258204 00000 n +0011258256 00000 n +0011258308 00000 n +0011258360 00000 n +0011258412 00000 n +0011258464 00000 n +0011258516 00000 n +0011258568 00000 n +0011258621 00000 n +0011258673 00000 n +0011258726 00000 n +0011258779 00000 n +0011258832 00000 n +0011258884 00000 n +0011258937 00000 n +0011258990 00000 n +0011259043 00000 n +0011259095 00000 n +0011259147 00000 n +0011259199 00000 n +0011259251 00000 n +0011259303 00000 n +0011259355 00000 n +0011259407 00000 n +0011259459 00000 n +0011259511 00000 n +0011259563 00000 n +0011259615 00000 n +0011259667 00000 n +0011259719 00000 n +0011259771 00000 n +0011259823 00000 n +0011259875 00000 n +0011259927 00000 n +0011259979 00000 n +0011260031 00000 n +0011260083 00000 n +0011260135 00000 n +0011260187 00000 n +0011260239 00000 n +0011260291 00000 n +0011260343 00000 n +0011260395 00000 n +0011260447 00000 n +0011260499 00000 n +0011260551 00000 n +0011260603 00000 n +0011260655 00000 n +0011260707 00000 n +0011260759 00000 n +0011260811 00000 n +0011260863 00000 n +0011260915 00000 n +0011260967 00000 n +0011261019 00000 n +0011261071 00000 n +0011261123 00000 n +0011261175 00000 n +0011261227 00000 n +0011261279 00000 n +0011261331 00000 n +0011261383 00000 n +0011261435 00000 n +0011261487 00000 n +0011261539 00000 n +0011261591 00000 n +0011261643 00000 n +0011261695 00000 n +0011261747 00000 n +0011261799 00000 n +0011261851 00000 n +0011261903 00000 n +0011261956 00000 n +0011262009 00000 n +0011262062 00000 n +0011262115 00000 n +0011262168 00000 n +0011262221 00000 n +0011262274 00000 n +0011262327 00000 n +0011262380 00000 n +0011262433 00000 n +0011262486 00000 n +0011262539 00000 n +0011262592 00000 n +0011262645 00000 n +0011262698 00000 n +0011262751 00000 n +0011262804 00000 n +0011262857 00000 n +0011262910 00000 n +0011262963 00000 n +0011263016 00000 n +0011263069 00000 n +0011263122 00000 n +0011263175 00000 n +0011263228 00000 n +0011263281 00000 n +0011263334 00000 n +0011263387 00000 n +0011263440 00000 n +0011263493 00000 n +0011263546 00000 n +0011263599 00000 n +0011263652 00000 n +0011263705 00000 n +0011263758 00000 n +0011263811 00000 n +0011263864 00000 n +0011263917 00000 n +0011263970 00000 n +0011264023 00000 n +0011264076 00000 n +0011264129 00000 n +0011264182 00000 n +0011264235 00000 n +0011264288 00000 n +0011264341 00000 n +0011264394 00000 n +0011264447 00000 n +0011264500 00000 n +0011264553 00000 n +0011264606 00000 n +0011264659 00000 n +0011264712 00000 n +0011264764 00000 n +0011264817 00000 n +0011264870 00000 n +0011264923 00000 n +0011264976 00000 n +0011265029 00000 n +0011265082 00000 n +0011265135 00000 n +0011265188 00000 n +0011265240 00000 n +0011265293 00000 n +0011265346 00000 n +0011265399 00000 n +0011265452 00000 n +0011265505 00000 n +0011265558 00000 n +0011265611 00000 n +0011265664 00000 n +0011265717 00000 n +0011265770 00000 n +0011265823 00000 n +0011265876 00000 n +0011265929 00000 n +0011265982 00000 n +0011266035 00000 n +0011266088 00000 n +0011266141 00000 n +0011266194 00000 n +0011266247 00000 n +0011266300 00000 n +0011266353 00000 n +0011266406 00000 n +0011266459 00000 n +0011266512 00000 n +0011266565 00000 n +0011266618 00000 n +0011266671 00000 n +0011266724 00000 n +0011266777 00000 n +0011266830 00000 n +0011266883 00000 n +0011266936 00000 n +0011266989 00000 n +0011267042 00000 n +0011267095 00000 n +0011267148 00000 n +0011267201 00000 n +0011267254 00000 n +0011267307 00000 n +0011267360 00000 n +0011267413 00000 n +0011267466 00000 n +0011267519 00000 n +0011267572 00000 n +0011267625 00000 n +0011267678 00000 n +0011267731 00000 n +0011267784 00000 n +0011267837 00000 n +0011267890 00000 n +0011267943 00000 n +0011267996 00000 n +0011268049 00000 n +0011268102 00000 n +0011268155 00000 n +0011268208 00000 n +0011268261 00000 n +0011268314 00000 n +0011268367 00000 n +0011268420 00000 n +0011268473 00000 n +0011268526 00000 n +0011268579 00000 n +0011268632 00000 n +0011268685 00000 n +0011268738 00000 n +0011268791 00000 n +0011268844 00000 n +0011268897 00000 n +0011268950 00000 n +0011269003 00000 n +0011269056 00000 n +0011269109 00000 n +0011269162 00000 n +0011269215 00000 n +0011269268 00000 n +0011269321 00000 n +0011269374 00000 n +0011269427 00000 n +0011269480 00000 n +0011269533 00000 n +0011269586 00000 n +0011269639 00000 n +0011269692 00000 n +0011269745 00000 n +0011269798 00000 n +0011269851 00000 n +0011269904 00000 n +0011269957 00000 n +0011270010 00000 n +0011270063 00000 n +0011270116 00000 n +0011270169 00000 n +0011270222 00000 n +0011270275 00000 n +0011270328 00000 n +0011270381 00000 n +0011270434 00000 n +0011270487 00000 n +0011270540 00000 n +0011270593 00000 n +0011270646 00000 n +0011270699 00000 n +0011270752 00000 n +0011270805 00000 n +0011270858 00000 n +0011270911 00000 n +0011270964 00000 n +0011271017 00000 n +0011271070 00000 n +0011271123 00000 n +0011271176 00000 n +0011271229 00000 n +0011271282 00000 n +0011271335 00000 n +0011271388 00000 n +0011271441 00000 n +0011271494 00000 n +0011271547 00000 n +0011271600 00000 n +0011271653 00000 n +0011271706 00000 n +0011271759 00000 n +0011271812 00000 n +0011271865 00000 n +0011271918 00000 n +0011271971 00000 n +0011272024 00000 n +0011272077 00000 n +0011272130 00000 n +0011272183 00000 n +0011272236 00000 n +0011272289 00000 n +0011272342 00000 n +0011272395 00000 n +0011272448 00000 n +0011272501 00000 n +0011272554 00000 n +0011272607 00000 n +0011272660 00000 n +0011272713 00000 n +0011272766 00000 n +0011272819 00000 n +0011272872 00000 n +0011272925 00000 n +0011272978 00000 n +0011273031 00000 n +0011273084 00000 n +0011273137 00000 n +0011273190 00000 n +0011273243 00000 n +0011273296 00000 n +0011273349 00000 n +0011273402 00000 n +0011273455 00000 n +0011273508 00000 n +0011273561 00000 n +0011273614 00000 n +0011273667 00000 n +0011273720 00000 n +0011273773 00000 n +0011273826 00000 n +0011273879 00000 n +0011273932 00000 n +0011273985 00000 n +0011274038 00000 n +0011274091 00000 n +0011274144 00000 n +0011274197 00000 n +0011274250 00000 n +0011274303 00000 n +0011274356 00000 n +0011274409 00000 n +0011274462 00000 n +0011274515 00000 n +0011274568 00000 n +0011274621 00000 n +0011274674 00000 n +0011274727 00000 n +0011274780 00000 n +0011274833 00000 n +0011274886 00000 n +0011274939 00000 n +0011274992 00000 n +0011275045 00000 n +0011275098 00000 n +0011275151 00000 n +0011275204 00000 n +0011275257 00000 n +0011275310 00000 n +0011275363 00000 n +0011275416 00000 n +0011275469 00000 n +0011275522 00000 n +0011275575 00000 n +0011275628 00000 n +0011275681 00000 n +0011275734 00000 n +0011275787 00000 n +0011275840 00000 n +0011275893 00000 n +0011275946 00000 n +0011275999 00000 n +0011276052 00000 n +0011276105 00000 n +0011276158 00000 n +0011276211 00000 n +0011276264 00000 n +0011276317 00000 n +0011276370 00000 n +0011276423 00000 n +0011276476 00000 n +0011276529 00000 n +0011276582 00000 n +0011276635 00000 n +0011276688 00000 n +0011276741 00000 n +0011276794 00000 n +0011276847 00000 n +0011276900 00000 n +0011276953 00000 n +0011277006 00000 n +0011277059 00000 n +0011277112 00000 n +0011277165 00000 n +0011277218 00000 n +0011277271 00000 n +0011277324 00000 n +0011277377 00000 n +0011277430 00000 n +0011277483 00000 n +0011277536 00000 n +0011277589 00000 n +0011277642 00000 n +0011277695 00000 n +0011277748 00000 n +0011277801 00000 n +0011277854 00000 n +0011277907 00000 n +0011277960 00000 n +0011278013 00000 n +0011278066 00000 n +0011278119 00000 n +0011278172 00000 n +0011278225 00000 n +0011278278 00000 n +0011278331 00000 n +0011278384 00000 n +0011278437 00000 n +0011278490 00000 n +0011278543 00000 n +0011278596 00000 n +0011278649 00000 n +0011278702 00000 n +0011278755 00000 n +0011278808 00000 n +0011278861 00000 n +0011278914 00000 n +0011278967 00000 n +0011279020 00000 n +0011279073 00000 n +0011279126 00000 n +0011279179 00000 n +0011279232 00000 n +0011279285 00000 n +0011279338 00000 n +0011279391 00000 n +0011279444 00000 n +0011279497 00000 n +0011279550 00000 n +0011279603 00000 n +0011279656 00000 n +0011279709 00000 n +0011279762 00000 n +0011279815 00000 n +0011279868 00000 n +0011279921 00000 n +0011279974 00000 n +0011280027 00000 n +0011280080 00000 n +0011280133 00000 n +0011280186 00000 n +0011280239 00000 n +0011280292 00000 n +0011280345 00000 n +0011280398 00000 n +0011280451 00000 n +0011280504 00000 n +0011280557 00000 n +0011280610 00000 n +0011280663 00000 n +0011280716 00000 n +0011280769 00000 n +0011280822 00000 n +0011280875 00000 n +0011280928 00000 n +0011280981 00000 n +0011281034 00000 n +0011281087 00000 n +0011281140 00000 n +0011281193 00000 n +0011281246 00000 n +0011281299 00000 n +0011281352 00000 n +0011281405 00000 n +0011281458 00000 n +0011281511 00000 n +0011281564 00000 n +0011281617 00000 n +0011281670 00000 n +0011281723 00000 n +0011281776 00000 n +0011281829 00000 n +0011281882 00000 n +0011281935 00000 n +0011281988 00000 n +0011282041 00000 n +0011282094 00000 n +0011282147 00000 n +0011282200 00000 n +0011282253 00000 n +0011282306 00000 n +0011282359 00000 n +0011282412 00000 n +0011282465 00000 n +0011282518 00000 n +0011282571 00000 n +0011282624 00000 n +0011282677 00000 n +0011282730 00000 n +0011282783 00000 n +0011282836 00000 n +0011282889 00000 n +0011282942 00000 n +0011282995 00000 n +0011283048 00000 n +0011283101 00000 n +0011283154 00000 n +0011283207 00000 n +0011283260 00000 n +0011283313 00000 n +0011283366 00000 n +0011283419 00000 n +0011283472 00000 n +0011283525 00000 n +0011283578 00000 n +0011283631 00000 n +0011283683 00000 n +0011283736 00000 n +0011283789 00000 n +0011283842 00000 n +0011283894 00000 n +0011283947 00000 n +0011284000 00000 n +0011284053 00000 n +0011284106 00000 n +0011284159 00000 n +0011284212 00000 n +0011284265 00000 n +0011284318 00000 n +0011284371 00000 n +0011284424 00000 n +0011284477 00000 n +0011284530 00000 n +0011284583 00000 n +0011284636 00000 n +0011284689 00000 n +0011284742 00000 n +0011284795 00000 n +0011284848 00000 n +0011284901 00000 n +0011284954 00000 n +0011285007 00000 n +0011285060 00000 n +0011285113 00000 n +0011285166 00000 n +0011285219 00000 n +0011285272 00000 n +0011285325 00000 n +0011285378 00000 n +0011285431 00000 n +0011285484 00000 n +0011285537 00000 n +0011285590 00000 n +0011285643 00000 n +0011285696 00000 n +0011285749 00000 n +0011285802 00000 n +0011285855 00000 n +0011285908 00000 n +0011285961 00000 n +0011286014 00000 n +0011286067 00000 n +0011286120 00000 n +0011286173 00000 n +0011286226 00000 n +0011286279 00000 n +0011286332 00000 n +0011286385 00000 n +0011286438 00000 n +0011286491 00000 n +0011286544 00000 n +0011286597 00000 n +0011286650 00000 n +0011286703 00000 n +0011286756 00000 n +0011286809 00000 n +0011286862 00000 n +0011286915 00000 n +0011286968 00000 n +0011287021 00000 n +0011287074 00000 n +0011287127 00000 n +0011287180 00000 n +0011287233 00000 n +0011287286 00000 n +0011287339 00000 n +0011287392 00000 n +0011287445 00000 n +0011287498 00000 n +0011287551 00000 n +0011287604 00000 n +0011287657 00000 n +0011287710 00000 n +0011287763 00000 n +0011287816 00000 n +0011287869 00000 n +0011287922 00000 n +0011287975 00000 n +0011288028 00000 n +0011288081 00000 n +0011288134 00000 n +0011288187 00000 n +0011288240 00000 n +0011288293 00000 n +0011288346 00000 n +0011288399 00000 n +0011288452 00000 n +0011288505 00000 n +0011288558 00000 n +0011288611 00000 n +0011288664 00000 n +0011288717 00000 n +0011288770 00000 n +0011288823 00000 n +0011288876 00000 n +0011288929 00000 n +0011288982 00000 n +0011289035 00000 n +0011289088 00000 n +0011289141 00000 n +0011289194 00000 n +0011289247 00000 n +0011289300 00000 n +0011289353 00000 n +0011289406 00000 n +0011289458 00000 n +0011289511 00000 n +0011289564 00000 n +0011289617 00000 n +0011289670 00000 n +0011289723 00000 n +0011289776 00000 n +0011289829 00000 n +0011289882 00000 n +0011289935 00000 n +0011289988 00000 n +0011290041 00000 n +0011290093 00000 n +0011290146 00000 n +0011290199 00000 n +0011290252 00000 n +0011290304 00000 n +0011290357 00000 n +0011290410 00000 n +0011290463 00000 n +0011290516 00000 n +0011290569 00000 n +0011290622 00000 n +0011290675 00000 n +0011290728 00000 n +0011290781 00000 n +0011290834 00000 n +0011290887 00000 n +0011290940 00000 n +0011290993 00000 n +0011291046 00000 n +0011291099 00000 n +0011291152 00000 n +0011291205 00000 n +0011291258 00000 n +0011291311 00000 n +0011291364 00000 n +0011291417 00000 n +0011291470 00000 n +0011291523 00000 n +0011291576 00000 n +0011291629 00000 n +0011291682 00000 n +0011291735 00000 n +0011291788 00000 n +0011291841 00000 n +0011291894 00000 n +0011291947 00000 n +0011292000 00000 n +0011292053 00000 n +0011292106 00000 n +0011292159 00000 n +0011292212 00000 n +0011292265 00000 n +0011292318 00000 n +0011292371 00000 n +0011292424 00000 n +0011292477 00000 n +0011292530 00000 n +0011292583 00000 n +0011292636 00000 n +0011292689 00000 n +0011292742 00000 n +0011292795 00000 n +0011292848 00000 n +0011292901 00000 n +0011292954 00000 n +0011293007 00000 n +0011293060 00000 n +0011293113 00000 n +0011293166 00000 n +0011293219 00000 n +0011293272 00000 n +0011293325 00000 n +0011293378 00000 n +0011293431 00000 n +0011293484 00000 n +0011293537 00000 n +0011293590 00000 n +0011293643 00000 n +0011293695 00000 n +0011293748 00000 n +0011293801 00000 n +0011293854 00000 n +0011293907 00000 n +0011293960 00000 n +0011294012 00000 n +0011294065 00000 n +0011294118 00000 n +0011294171 00000 n +0011294223 00000 n +0011294276 00000 n +0011294329 00000 n +0011294382 00000 n +0011294435 00000 n +0011294488 00000 n +0011294541 00000 n +0011294594 00000 n +0011294647 00000 n +0011294700 00000 n +0011294753 00000 n +0011294806 00000 n +0011294859 00000 n +0011294912 00000 n +0011294965 00000 n +0011295018 00000 n +0011295071 00000 n +0011295124 00000 n +0011295177 00000 n +0011295230 00000 n +0011295283 00000 n +0011295336 00000 n +0011295389 00000 n +0011295442 00000 n +0011295495 00000 n +0011295548 00000 n +0011295601 00000 n +0011295654 00000 n +0011295707 00000 n +0011295760 00000 n +0011295813 00000 n +0011295865 00000 n +0011295917 00000 n +0011295970 00000 n +0011296023 00000 n +0011296076 00000 n +0011296129 00000 n +0011296182 00000 n +0011296235 00000 n +0011296287 00000 n +0011296340 00000 n +0011296392 00000 n +0011296445 00000 n +0011296497 00000 n +0011296550 00000 n +0011296603 00000 n +0011296656 00000 n +0011296709 00000 n +0011296762 00000 n +0011296815 00000 n +0011296868 00000 n +0011296921 00000 n +0011296974 00000 n +0011297027 00000 n +0011297080 00000 n +0011297133 00000 n +0011297186 00000 n +0011297239 00000 n +0011297292 00000 n +0011297345 00000 n +0011297397 00000 n +0011297450 00000 n +0011297503 00000 n +0011297556 00000 n +0011297609 00000 n +0011297662 00000 n +0011297715 00000 n +0011297768 00000 n +0011297821 00000 n +0011297874 00000 n +0011297926 00000 n +0011297979 00000 n +0011298032 00000 n +0011298085 00000 n +0011298138 00000 n +0011298191 00000 n +0011298244 00000 n +0011298297 00000 n +0011298350 00000 n +0011298403 00000 n +0011298455 00000 n +0011298508 00000 n +0011298561 00000 n +0011298614 00000 n +0011298667 00000 n +0011298720 00000 n +0011298773 00000 n +0011298826 00000 n +0011298879 00000 n +0011298932 00000 n +0011298985 00000 n +0011299038 00000 n +0011299091 00000 n +0011299144 00000 n +0011299197 00000 n +0011299250 00000 n +0011299303 00000 n +0011299355 00000 n +0011299408 00000 n +0011299461 00000 n +0011299513 00000 n +0011299566 00000 n +0011299619 00000 n +0011299672 00000 n +0011299725 00000 n +0011299778 00000 n +0011299831 00000 n +0011299884 00000 n +0011299937 00000 n +0011299990 00000 n +0011300043 00000 n +0011300096 00000 n +0011300149 00000 n +0011300202 00000 n +0011300255 00000 n +0011300308 00000 n +0011300361 00000 n +0011300414 00000 n +0011300467 00000 n +0011300520 00000 n +0011300573 00000 n +0011300626 00000 n +0011300679 00000 n +0011300732 00000 n +0011300785 00000 n +0011300838 00000 n +0011300891 00000 n +0011300944 00000 n +0011300997 00000 n +0011301050 00000 n +0011301103 00000 n +0011301156 00000 n +0011301209 00000 n +0011301262 00000 n +0011301315 00000 n +0011301368 00000 n +0011301421 00000 n +0011301474 00000 n +0011301527 00000 n +0011301580 00000 n +0011301633 00000 n +0011301686 00000 n +0011301739 00000 n +0011301792 00000 n +0011301845 00000 n +0011301898 00000 n +0011301951 00000 n +0011302004 00000 n +0011302057 00000 n +0011302110 00000 n +0011302163 00000 n +0011302215 00000 n +0011302267 00000 n +0011302320 00000 n +0011302373 00000 n +0011302426 00000 n +0011302479 00000 n +0011302532 00000 n +0011302584 00000 n +0011302637 00000 n +0011302690 00000 n +0011302743 00000 n +0011302796 00000 n +0011302849 00000 n +0011302902 00000 n +0011302954 00000 n +0011303007 00000 n +0011303060 00000 n +0011303113 00000 n +0011303166 00000 n +0011303219 00000 n +0011303272 00000 n +0011303325 00000 n +0011303378 00000 n +0011303431 00000 n +0011303484 00000 n +0011303537 00000 n +0011303590 00000 n +0011303643 00000 n +0011303696 00000 n +0011303749 00000 n +0011303802 00000 n +0011303855 00000 n +0011303908 00000 n +0011303961 00000 n +0011304014 00000 n +0011304067 00000 n +0011304120 00000 n +0011304173 00000 n +0011304226 00000 n +0011304279 00000 n +0011304332 00000 n +0011304385 00000 n +0011304438 00000 n +0011304490 00000 n +0011304543 00000 n +0011304596 00000 n +0011304649 00000 n +0011304702 00000 n +0011304755 00000 n +0011304808 00000 n +0011304861 00000 n +0011304914 00000 n +0011304967 00000 n +0011305020 00000 n +0011305073 00000 n +0011305126 00000 n +0011305179 00000 n +0011305232 00000 n +0011305285 00000 n +0011305338 00000 n +0011305391 00000 n +0011305444 00000 n +0011305497 00000 n +0011305550 00000 n +0011305603 00000 n +0011305656 00000 n +0011305708 00000 n +0011305761 00000 n +0011305814 00000 n +0011305867 00000 n +0011305919 00000 n +0011305972 00000 n +0011306025 00000 n +0011306078 00000 n +0011306131 00000 n +0011306184 00000 n +0011306237 00000 n +0011306290 00000 n +0011306343 00000 n +0011306396 00000 n +0011306449 00000 n +0011306502 00000 n +0011306555 00000 n +0011306608 00000 n +0011306661 00000 n +0011306714 00000 n +0011306767 00000 n +0011306820 00000 n +0011306873 00000 n +0011306926 00000 n +0011306979 00000 n +0011307032 00000 n +0011307085 00000 n +0011307138 00000 n +0011307191 00000 n +0011307244 00000 n +0011307297 00000 n +0011307350 00000 n +0011307403 00000 n +0011307456 00000 n +0011307509 00000 n +0011307562 00000 n +0011307615 00000 n +0011307668 00000 n +0011307721 00000 n +0011307774 00000 n +0011307827 00000 n +0011307880 00000 n +0011307933 00000 n +0011307986 00000 n +0011308039 00000 n +0011308092 00000 n +0011308145 00000 n +0011308198 00000 n +0011308251 00000 n +0011308304 00000 n +0011308357 00000 n +0011308410 00000 n +0011308463 00000 n +0011308516 00000 n +0011308569 00000 n +0011308622 00000 n +0011308675 00000 n +0011308728 00000 n +0011308781 00000 n +0011308834 00000 n +0011308887 00000 n +0011308940 00000 n +0011308993 00000 n +0011309046 00000 n +0011309099 00000 n +0011309152 00000 n +0011309205 00000 n +0011309258 00000 n +0011309311 00000 n +0011309364 00000 n +0011309417 00000 n +0011309470 00000 n +0011309523 00000 n +0011309576 00000 n +0011309629 00000 n +0011309682 00000 n +0011309735 00000 n +0011309788 00000 n +0011309841 00000 n +0011309894 00000 n +0011309947 00000 n +0011310000 00000 n +0011310053 00000 n +0011310106 00000 n +0011310159 00000 n +0011310212 00000 n +0011310265 00000 n +0011310318 00000 n +0011310370 00000 n +0011310423 00000 n +0011310476 00000 n +0011310529 00000 n +0011310582 00000 n +0011310635 00000 n +0011310688 00000 n +0011310741 00000 n +0011310794 00000 n +0011310847 00000 n +0011310900 00000 n +0011310953 00000 n +0011311006 00000 n +0011311059 00000 n +0011311112 00000 n +0011311165 00000 n +0011311218 00000 n +0011311271 00000 n +0011311324 00000 n +0011311377 00000 n +0011311430 00000 n +0011311483 00000 n +0011311536 00000 n +0011311588 00000 n +0011311641 00000 n +0011311694 00000 n +0011311747 00000 n +0011311799 00000 n +0011311852 00000 n +0011311905 00000 n +0011311958 00000 n +0011312011 00000 n +0011312064 00000 n +0011312117 00000 n +0011312170 00000 n +0011312223 00000 n +0011312276 00000 n +0011312329 00000 n +0011312382 00000 n +0011312435 00000 n +0011312488 00000 n +0011312541 00000 n +0011312594 00000 n +0011312647 00000 n +0011312700 00000 n +0011312753 00000 n +0011312806 00000 n +0011312859 00000 n +0011312912 00000 n +0011312965 00000 n +0011313018 00000 n +0011313071 00000 n +0011313124 00000 n +0011313177 00000 n +0011313230 00000 n +0011313283 00000 n +0011313335 00000 n +0011313388 00000 n +0011313441 00000 n +0011313494 00000 n +0011313547 00000 n +0011313600 00000 n +0011313653 00000 n +0011313706 00000 n +0011313759 00000 n +0011313812 00000 n +0011313865 00000 n +0011313918 00000 n +0011313971 00000 n +0011314023 00000 n +0011314076 00000 n +0011314129 00000 n +0011314182 00000 n +0011314234 00000 n +0011314287 00000 n +0011314340 00000 n +0011314393 00000 n +0011314446 00000 n +0011314499 00000 n +0011314552 00000 n +0011314605 00000 n +0011314658 00000 n +0011314711 00000 n +0011314764 00000 n +0011314817 00000 n +0011314870 00000 n +0011314923 00000 n +0011314976 00000 n +0011315029 00000 n +0011315082 00000 n +0011315135 00000 n +0011315188 00000 n +0011315241 00000 n +0011315294 00000 n +0011315347 00000 n +0011315400 00000 n +0011315453 00000 n +0011315506 00000 n +0011315559 00000 n +0011315612 00000 n +0011315665 00000 n +0011315718 00000 n +0011315771 00000 n +0011315824 00000 n +0011315877 00000 n +0011315930 00000 n +0011315983 00000 n +0011316036 00000 n +0011316089 00000 n +0011316142 00000 n +0011316195 00000 n +0011316248 00000 n +0011316301 00000 n +0011316354 00000 n +0011316407 00000 n +0011316460 00000 n +0011316513 00000 n +0011316566 00000 n +0011316619 00000 n +0011316672 00000 n +0011316725 00000 n +0011316778 00000 n +0011316831 00000 n +0011316884 00000 n +0011316937 00000 n +0011316990 00000 n +0011317043 00000 n +0011317096 00000 n +0011317149 00000 n +0011317202 00000 n +0011317255 00000 n +0011317308 00000 n +0011317361 00000 n +0011317414 00000 n +0011317466 00000 n +0011317519 00000 n +0011317572 00000 n +0011317625 00000 n +0011317678 00000 n +0011317731 00000 n +0011317784 00000 n +0011317837 00000 n +0011317890 00000 n +0011317943 00000 n +0011317996 00000 n +0011318049 00000 n +0011318102 00000 n +0011318155 00000 n +0011318208 00000 n +0011318261 00000 n +0011318314 00000 n +0011318367 00000 n +0011318420 00000 n +0011318473 00000 n +0011318526 00000 n +0011318579 00000 n +0011318632 00000 n +0011318685 00000 n +0011318738 00000 n +0011318791 00000 n +0011318844 00000 n +0011318897 00000 n +0011318950 00000 n +0011319003 00000 n +0011319056 00000 n +0011319108 00000 n +0011319161 00000 n +0011319214 00000 n +0011319267 00000 n +0011319320 00000 n +0011319372 00000 n +0011319425 00000 n +0011319478 00000 n +0011319531 00000 n +0011319584 00000 n +0011319637 00000 n +0011319690 00000 n +0011319743 00000 n +0011319796 00000 n +0011319849 00000 n +0011319902 00000 n +0011319955 00000 n +0011320008 00000 n +0011320061 00000 n +0011320114 00000 n +0011320167 00000 n +0011320220 00000 n +0011320273 00000 n +0011320326 00000 n +0011320379 00000 n +0011320432 00000 n +0011320485 00000 n +0011320538 00000 n +0011320591 00000 n +0011320644 00000 n +0011320697 00000 n +0011320750 00000 n +0011320803 00000 n +0011320856 00000 n +0011320909 00000 n +0011320962 00000 n +0011321015 00000 n +0011321068 00000 n +0011321121 00000 n +0011321174 00000 n +0011321227 00000 n +0011321280 00000 n +0011321333 00000 n +0011321386 00000 n +0011321439 00000 n +0011321492 00000 n +0011321545 00000 n +0011321598 00000 n +0011321651 00000 n +0011321704 00000 n +0011321757 00000 n +0011321810 00000 n +0011321863 00000 n +0011321916 00000 n +0011321969 00000 n +0011322022 00000 n +0011322075 00000 n +0011322128 00000 n +0011322181 00000 n +0011322234 00000 n +0011322287 00000 n +0011322340 00000 n +0011322393 00000 n +0011322446 00000 n +0011322499 00000 n +0011322552 00000 n +0011322605 00000 n +0011322658 00000 n +0011322711 00000 n +0011322764 00000 n +0011322817 00000 n +0011322870 00000 n +0011322923 00000 n +0011322976 00000 n +0011323029 00000 n +0011323082 00000 n +0011323135 00000 n +0011323188 00000 n +0011323241 00000 n +0011323294 00000 n +0011323347 00000 n +0011323400 00000 n +0011323453 00000 n +0011323506 00000 n +0011323559 00000 n +0011323612 00000 n +0011323665 00000 n +0011323718 00000 n +0011323771 00000 n +0011323824 00000 n +0011323877 00000 n +0011323930 00000 n +0011323983 00000 n +0011324036 00000 n +0011324089 00000 n +0011324142 00000 n +0011324195 00000 n +0011324248 00000 n +0011324301 00000 n +0011324354 00000 n +0011324407 00000 n +0011324460 00000 n +0011324513 00000 n +0011324566 00000 n +0011324619 00000 n +0011324672 00000 n +0011324725 00000 n +0011324778 00000 n +0011324831 00000 n +0011324884 00000 n +0011324937 00000 n +0011324990 00000 n +0011325043 00000 n +0011325096 00000 n +0011325149 00000 n +0011325202 00000 n +0011325255 00000 n +0011325308 00000 n +0011325361 00000 n +0011325414 00000 n +0011325467 00000 n +0011325520 00000 n +0011325573 00000 n +0011325626 00000 n +0011325679 00000 n +0011325732 00000 n +0011325785 00000 n +0011325838 00000 n +0011325891 00000 n +0011325944 00000 n +0011325997 00000 n +0011326050 00000 n +0011326103 00000 n +0011326156 00000 n +0011326209 00000 n +0011326262 00000 n +0011326315 00000 n +0011326368 00000 n +0011326421 00000 n +0011326474 00000 n +0011326527 00000 n +0011326580 00000 n +0011326633 00000 n +0011326686 00000 n +0011326739 00000 n +0011326792 00000 n +0011326845 00000 n +0011326898 00000 n +0011326951 00000 n +0011327004 00000 n +0011327057 00000 n +0011327110 00000 n +0011327163 00000 n +0011327216 00000 n +0011327269 00000 n +0011327322 00000 n +0011327375 00000 n +0011327428 00000 n +0011327481 00000 n +0011327534 00000 n +0011327587 00000 n +0011327640 00000 n +0011327693 00000 n +0011327746 00000 n +0011327799 00000 n +0011327852 00000 n +0011327905 00000 n +0011327958 00000 n +0011328011 00000 n +0011328064 00000 n +0011328117 00000 n +0011328170 00000 n +0011328222 00000 n +0011328275 00000 n +0011328328 00000 n +0011328381 00000 n +0011328433 00000 n +0011328486 00000 n +0011328539 00000 n +0011328592 00000 n +0011328645 00000 n +0011328698 00000 n +0011328751 00000 n +0011328804 00000 n +0011328857 00000 n +0011328910 00000 n +0011328963 00000 n +0011329016 00000 n +0011329069 00000 n +0011329122 00000 n +0011329175 00000 n +0011329228 00000 n +0011329281 00000 n +0011329334 00000 n +0011329387 00000 n +0011329440 00000 n +0011329493 00000 n +0011329546 00000 n +0011329599 00000 n +0011329652 00000 n +0011329705 00000 n +0011329758 00000 n +0011329811 00000 n +0011329864 00000 n +0011329917 00000 n +0011329970 00000 n +0011330023 00000 n +0011330076 00000 n +0011330129 00000 n +0011330182 00000 n +0011330235 00000 n +0011330288 00000 n +0011330341 00000 n +0011330394 00000 n +0011330447 00000 n +0011330500 00000 n +0011330553 00000 n +0011330606 00000 n +0011330659 00000 n +0011330712 00000 n +0011330765 00000 n +0011330818 00000 n +0011330871 00000 n +0011330924 00000 n +0011330977 00000 n +0011331030 00000 n +0011331083 00000 n +0011331136 00000 n +0011331189 00000 n +0011331242 00000 n +0011331295 00000 n +0011331348 00000 n +0011331401 00000 n +0011331454 00000 n +0011331507 00000 n +0011331560 00000 n +0011331613 00000 n +0011331666 00000 n +0011331719 00000 n +0011331772 00000 n +0011331825 00000 n +0011331878 00000 n +0011331931 00000 n +0011331984 00000 n +0011332037 00000 n +0011332090 00000 n +0011332143 00000 n +0011332196 00000 n +0011332249 00000 n +0011332302 00000 n +0011332355 00000 n +0011332408 00000 n +0011332461 00000 n +0011332514 00000 n +0011332567 00000 n +0011332620 00000 n +0011332673 00000 n +0011332726 00000 n +0011332779 00000 n +0011332832 00000 n +0011332885 00000 n +0011332938 00000 n +0011332991 00000 n +0011333044 00000 n +0011333097 00000 n +0011333150 00000 n +0011333203 00000 n +0011333256 00000 n +0011333309 00000 n +0011333362 00000 n +0011333415 00000 n +0011333468 00000 n +0011333521 00000 n +0011333574 00000 n +0011333627 00000 n +0011333680 00000 n +0011333733 00000 n +0011333786 00000 n +0011333839 00000 n +0011333892 00000 n +0011333945 00000 n +0011333998 00000 n +0011334051 00000 n +0011334104 00000 n +0011334157 00000 n +0011334210 00000 n +0011334263 00000 n +0011334316 00000 n +0011334369 00000 n +0011334422 00000 n +0011334475 00000 n +0011334528 00000 n +0011334581 00000 n +0011334634 00000 n +0011334687 00000 n +0011334740 00000 n +0011334793 00000 n +0011334846 00000 n +0011334899 00000 n +0011334952 00000 n +0011335005 00000 n +0011335058 00000 n +0011335111 00000 n +0011335164 00000 n +0011335217 00000 n +0011335270 00000 n +0011335323 00000 n +0011335376 00000 n +0011335429 00000 n +0011335482 00000 n +0011335535 00000 n +0011335588 00000 n +0011335641 00000 n +0011335694 00000 n +0011335747 00000 n +0011335800 00000 n +0011335853 00000 n +0011335906 00000 n +0011335959 00000 n +0011336012 00000 n +0011336065 00000 n +0011336118 00000 n +0011336171 00000 n +0011336224 00000 n +0011336277 00000 n +0011336330 00000 n +0011336383 00000 n +0011336436 00000 n +0011336489 00000 n +0011336542 00000 n +0011336595 00000 n +0011336648 00000 n +0011336701 00000 n +0011336754 00000 n +0011336807 00000 n +0011336860 00000 n +0011336913 00000 n +0011336966 00000 n +0011337019 00000 n +0011337072 00000 n +0011337125 00000 n +0011337178 00000 n +0011337231 00000 n +0011337284 00000 n +0011337337 00000 n +0011337390 00000 n +0011337443 00000 n +0011337496 00000 n +0011337549 00000 n +0011337602 00000 n +0011337655 00000 n +0011337708 00000 n +0011337761 00000 n +0011337814 00000 n +0011337867 00000 n +0011337920 00000 n +0011337973 00000 n +0011338026 00000 n +0011338079 00000 n +0011338132 00000 n +0011338185 00000 n +0011338238 00000 n +0011338291 00000 n +0011338344 00000 n +0011338397 00000 n +0011338450 00000 n +0011338503 00000 n +0011338556 00000 n +0011338609 00000 n +0011338662 00000 n +0011338715 00000 n +0011338768 00000 n +0011338821 00000 n +0011338874 00000 n +0011338927 00000 n +0011338980 00000 n +0011339033 00000 n +0011339086 00000 n +0011339139 00000 n +0011339192 00000 n +0011339245 00000 n +0011339298 00000 n +0011339351 00000 n +0011339404 00000 n +0011339457 00000 n +0011339510 00000 n +0011339563 00000 n +0011339616 00000 n +0011339669 00000 n +0011339722 00000 n +0011339775 00000 n +0011339828 00000 n +0011339881 00000 n +0011339934 00000 n +0011339987 00000 n +0011340040 00000 n +0011340093 00000 n +0011340146 00000 n +0011340199 00000 n +0011340252 00000 n +0011340305 00000 n +0011340358 00000 n +0011340411 00000 n +0011340464 00000 n +0011340517 00000 n +0011340570 00000 n +0011340623 00000 n +0011340676 00000 n +0011340729 00000 n +0011340782 00000 n +0011340835 00000 n +0011340888 00000 n +0011340940 00000 n +0011340993 00000 n +0011341046 00000 n +0011341099 00000 n +0011341151 00000 n +0011341204 00000 n +0011341257 00000 n +0011341310 00000 n +0011341363 00000 n +0011341416 00000 n +0011341469 00000 n +0011341522 00000 n +0011341575 00000 n +0011341628 00000 n +0011341681 00000 n +0011341734 00000 n +0011341787 00000 n +0011341840 00000 n +0011341893 00000 n +0011341946 00000 n +0011341999 00000 n +0011342052 00000 n +0011342105 00000 n +0011342158 00000 n +0011342211 00000 n +0011342264 00000 n +0011342317 00000 n +0011342370 00000 n +0011342423 00000 n +0011342476 00000 n +0011342529 00000 n +0011342582 00000 n +0011342635 00000 n +0011342688 00000 n +0011342741 00000 n +0011342794 00000 n +0011342847 00000 n +0011342900 00000 n +0011342953 00000 n +0011343006 00000 n +0011343059 00000 n +0011343112 00000 n +0011343165 00000 n +0011343218 00000 n +0011343271 00000 n +0011343324 00000 n +0011343377 00000 n +0011343430 00000 n +0011343483 00000 n +0011343536 00000 n +0011343589 00000 n +0011343642 00000 n +0011343695 00000 n +0011343748 00000 n +0011343801 00000 n +0011343854 00000 n +0011343907 00000 n +0011343960 00000 n +0011344013 00000 n +0011344066 00000 n +0011344119 00000 n +0011344172 00000 n +0011344225 00000 n +0011344278 00000 n +0011344331 00000 n +0011344384 00000 n +0011344437 00000 n +0011344490 00000 n +0011344542 00000 n +0011344595 00000 n +0011344647 00000 n +0011344700 00000 n +0011344753 00000 n +0011344806 00000 n +0011344859 00000 n +0011344912 00000 n +0011344965 00000 n +0011345018 00000 n +0011345071 00000 n +0011345124 00000 n +0011345177 00000 n +0011345230 00000 n +0011345283 00000 n +0011345336 00000 n +0011345389 00000 n +0011345442 00000 n +0011345495 00000 n +0011345548 00000 n +0011345601 00000 n +0011345654 00000 n +0011345707 00000 n +0011345760 00000 n +0011345813 00000 n +0011345866 00000 n +0011345919 00000 n +0011345972 00000 n +0011346025 00000 n +0011346078 00000 n +0011346131 00000 n +0011346184 00000 n +0011346237 00000 n +0011346290 00000 n +0011346343 00000 n +0011346396 00000 n +0011346449 00000 n +0011346502 00000 n +0011346555 00000 n +0011346608 00000 n +0011346661 00000 n +0011346714 00000 n +0011346767 00000 n +0011346820 00000 n +0011346873 00000 n +0011346926 00000 n +0011346979 00000 n +0011347032 00000 n +0011347085 00000 n +0011347138 00000 n +0011347191 00000 n +0011347244 00000 n +0011347297 00000 n +0011347350 00000 n +0011347403 00000 n +0011347456 00000 n +0011347509 00000 n +0011347561 00000 n +0011347614 00000 n +0011347667 00000 n +0011347720 00000 n +0011347773 00000 n +0011347826 00000 n +0011347879 00000 n +0011347932 00000 n +0011347985 00000 n +0011348038 00000 n +0011348091 00000 n +0011348144 00000 n +0011348197 00000 n +0011348250 00000 n +0011348303 00000 n +0011348356 00000 n +0011348409 00000 n +0011348462 00000 n +0011348515 00000 n +0011348568 00000 n +0011348621 00000 n +0011348674 00000 n +0011348727 00000 n +0011348780 00000 n +0011348833 00000 n +0011348886 00000 n +0011348939 00000 n +0011348992 00000 n +0011349045 00000 n +0011349098 00000 n +0011349151 00000 n +0011349204 00000 n +0011349257 00000 n +0011349310 00000 n +0011349363 00000 n +0011349416 00000 n +0011349469 00000 n +0011349522 00000 n +0011349575 00000 n +0011349628 00000 n +0011349681 00000 n +0011349734 00000 n +0011349787 00000 n +0011349840 00000 n +0011349893 00000 n +0011349946 00000 n +0011349999 00000 n +0011350052 00000 n +0011350104 00000 n +0011350157 00000 n +0011350210 00000 n +0011350263 00000 n +0011350316 00000 n +0011350369 00000 n +0011350422 00000 n +0011350475 00000 n +0011350528 00000 n +0011350581 00000 n +0011350634 00000 n +0011350687 00000 n +0011350740 00000 n +0011350793 00000 n +0011350846 00000 n +0011350899 00000 n +0011350952 00000 n +0011351005 00000 n +0011351058 00000 n +0011351111 00000 n +0011351164 00000 n +0011351217 00000 n +0011351270 00000 n +0011351323 00000 n +0011351376 00000 n +0011351429 00000 n +0011351482 00000 n +0011351535 00000 n +0011351588 00000 n +0011351641 00000 n +0011351694 00000 n +0011351747 00000 n +0011351800 00000 n +0011351853 00000 n +0011351906 00000 n +0011351959 00000 n +0011352012 00000 n +0011352065 00000 n +0011352118 00000 n +0011352171 00000 n +0011352224 00000 n +0011352277 00000 n +0011352330 00000 n +0011352383 00000 n +0011352436 00000 n +0011352489 00000 n +0011352542 00000 n +0011352595 00000 n +0011352648 00000 n +0011352701 00000 n +0011352754 00000 n +0011352807 00000 n +0011352860 00000 n +0011352913 00000 n +0011352966 00000 n +0011353019 00000 n +0011353072 00000 n +0011353125 00000 n +0011353178 00000 n +0011353231 00000 n +0011353284 00000 n +0011353337 00000 n +0011353390 00000 n +0011353443 00000 n +0011353496 00000 n +0011353549 00000 n +0011353602 00000 n +0011353655 00000 n +0011353708 00000 n +0011353761 00000 n +0011353814 00000 n +0011353867 00000 n +0011353920 00000 n +0011353973 00000 n +0011354026 00000 n +0011354079 00000 n +0011354132 00000 n +0011354185 00000 n +0011354238 00000 n +0011354291 00000 n +0011354344 00000 n +0011354397 00000 n +0011354450 00000 n +0011354503 00000 n +0011354556 00000 n +0011354609 00000 n +0011354662 00000 n +0011354715 00000 n +0011354767 00000 n +0011354820 00000 n +0011354873 00000 n +0011354926 00000 n +0011354979 00000 n +0011355032 00000 n +0011355085 00000 n +0011355138 00000 n +0011355191 00000 n +0011355244 00000 n +0011355297 00000 n +0011355350 00000 n +0011355403 00000 n +0011355456 00000 n +0011355509 00000 n +0011355562 00000 n +0011355615 00000 n +0011355668 00000 n +0011355721 00000 n +0011355774 00000 n +0011355827 00000 n +0011355880 00000 n +0011355933 00000 n +0011355986 00000 n +0011356039 00000 n +0011356092 00000 n +0011356145 00000 n +0011356198 00000 n +0011356251 00000 n +0011356304 00000 n +0011356357 00000 n +0011356410 00000 n +0011356463 00000 n +0011356516 00000 n +0011356568 00000 n +0011356621 00000 n +0011356674 00000 n +0011356727 00000 n +0011356780 00000 n +0011356833 00000 n +0011356886 00000 n +0011356939 00000 n +0011356992 00000 n +0011357045 00000 n +0011357098 00000 n +0011357151 00000 n +0011357204 00000 n +0011357257 00000 n +0011357310 00000 n +0011357363 00000 n +0011357416 00000 n +0011357469 00000 n +0011357522 00000 n +0011357575 00000 n +0011357628 00000 n +0011357681 00000 n +0011357734 00000 n +0011357787 00000 n +0011357840 00000 n +0011357893 00000 n +0011357946 00000 n +0011357999 00000 n +0011358052 00000 n +0011358105 00000 n +0011358158 00000 n +0011358210 00000 n +0011358263 00000 n +0011358316 00000 n +0011358369 00000 n +0011358422 00000 n +0011358475 00000 n +0011358528 00000 n +0011358581 00000 n +0011358634 00000 n +0011358687 00000 n +0011358740 00000 n +0011358793 00000 n +0011358846 00000 n +0011358899 00000 n +0011358952 00000 n +0011359005 00000 n +0011359058 00000 n +0011359111 00000 n +0011359164 00000 n +0011359217 00000 n +0011359270 00000 n +0011359323 00000 n +0011359376 00000 n +0011359429 00000 n +0011359482 00000 n +0011359535 00000 n +0011359588 00000 n +0011359641 00000 n +0011359694 00000 n +0011359747 00000 n +0011359800 00000 n +0011359853 00000 n +0011359906 00000 n +0011359959 00000 n +0011360012 00000 n +0011360065 00000 n +0011360118 00000 n +0011360171 00000 n +0011360224 00000 n +0011360277 00000 n +0011360330 00000 n +0011360383 00000 n +0011360436 00000 n +0011360489 00000 n +0011360542 00000 n +0011360595 00000 n +0011360648 00000 n +0011360701 00000 n +0011360754 00000 n +0011360807 00000 n +0011360860 00000 n +0011360913 00000 n +0011360966 00000 n +0011361019 00000 n +0011361072 00000 n +0011361125 00000 n +0011361178 00000 n +0011361231 00000 n +0011361284 00000 n +0011361337 00000 n +0011361390 00000 n +0011361443 00000 n +0011361496 00000 n +0011361549 00000 n +0011361602 00000 n +0011361655 00000 n +0011361708 00000 n +0011361761 00000 n +0011361814 00000 n +0011361867 00000 n +0011361920 00000 n +0011361973 00000 n +0011362026 00000 n +0011362079 00000 n +0011362132 00000 n +0011362185 00000 n +0011362238 00000 n +0011362291 00000 n +0011362344 00000 n +0011362397 00000 n +0011362450 00000 n +0011362503 00000 n +0011362556 00000 n +0011362609 00000 n +0011362662 00000 n +0011362715 00000 n +0011362768 00000 n +0011362821 00000 n +0011362874 00000 n +0011362927 00000 n +0011362980 00000 n +0011363033 00000 n +0011363086 00000 n +0011363139 00000 n +0011363192 00000 n +0011363245 00000 n +0011363298 00000 n +0011363351 00000 n +0011363404 00000 n +0011363457 00000 n +0011363510 00000 n +0011363563 00000 n +0011363616 00000 n +0011363669 00000 n +0011363722 00000 n +0011363775 00000 n +0011363828 00000 n +0011363881 00000 n +0011363934 00000 n +0011363987 00000 n +0011364040 00000 n +0011364093 00000 n +0011364146 00000 n +0011364199 00000 n +0011364252 00000 n +0011364305 00000 n +0011364358 00000 n +0011364411 00000 n +0011364464 00000 n +0011364517 00000 n +0011364570 00000 n +0011364623 00000 n +0011364676 00000 n +0011364729 00000 n +0011364782 00000 n +0011364835 00000 n +0011364888 00000 n +0011364941 00000 n +0011364994 00000 n +0011365047 00000 n +0011365100 00000 n +0011365153 00000 n +0011365206 00000 n +0011365259 00000 n +0011365312 00000 n +0011365364 00000 n +0011365417 00000 n +0011365470 00000 n +0011365523 00000 n +0011365575 00000 n +0011365628 00000 n +0011365681 00000 n +0011365734 00000 n +0011365787 00000 n +0011365840 00000 n +0011365893 00000 n +0011365946 00000 n +0011365999 00000 n +0011366052 00000 n +0011366105 00000 n +0011366158 00000 n +0011366211 00000 n +0011366264 00000 n +0011366317 00000 n +0011366370 00000 n +0011366423 00000 n +0011366476 00000 n +0011366529 00000 n +0011366582 00000 n +0011366635 00000 n +0011366688 00000 n +0011366741 00000 n +0011366794 00000 n +0011366847 00000 n +0011366900 00000 n +0011366953 00000 n +0011367006 00000 n +0011367058 00000 n +0011367110 00000 n +0011367162 00000 n +0011367214 00000 n +0011367266 00000 n +0011367318 00000 n +0011367370 00000 n +0011367422 00000 n +0011367474 00000 n +0011367526 00000 n +0011367578 00000 n +0011367630 00000 n +0011367682 00000 n +0011367734 00000 n +0011367785 00000 n +0011367837 00000 n +0011367889 00000 n +0011367940 00000 n +0011367990 00000 n +0011368043 00000 n +0011368096 00000 n +0011368149 00000 n +0011368202 00000 n +0011368255 00000 n +0011368308 00000 n +0011368361 00000 n +0011368414 00000 n +0011368467 00000 n +0011368520 00000 n +0011368573 00000 n +0011368626 00000 n +0011368679 00000 n +0011368732 00000 n +0011368785 00000 n +0011368838 00000 n +0011368891 00000 n +0011368944 00000 n +0011368997 00000 n +0011369050 00000 n +0011369103 00000 n +0011369156 00000 n +0011369209 00000 n +0011369262 00000 n +0011369315 00000 n +0011369368 00000 n +0011369421 00000 n +0011369474 00000 n +0011369527 00000 n +0011369580 00000 n +0011369633 00000 n +0011369686 00000 n +0011369739 00000 n +0011369792 00000 n +0011369845 00000 n +0011369898 00000 n +0011369951 00000 n +0011370004 00000 n +0011370057 00000 n +0011370110 00000 n +0011370163 00000 n +0011370216 00000 n +0011370269 00000 n +0011370322 00000 n +0011370375 00000 n +0011370427 00000 n +0011370479 00000 n +0011370531 00000 n +0011370583 00000 n +0011370635 00000 n +0011370687 00000 n +0011370739 00000 n +0011370791 00000 n +0011370843 00000 n +0011370895 00000 n +0011370947 00000 n +0011370999 00000 n +0011371051 00000 n +0011371103 00000 n +0011371155 00000 n +0011371207 00000 n +0011371259 00000 n +0011371311 00000 n +0011371363 00000 n +0011371415 00000 n +0011371467 00000 n +0011371519 00000 n +0011371571 00000 n +0011371623 00000 n +0011371675 00000 n +0011371727 00000 n +0011371779 00000 n +0011371831 00000 n +0011371883 00000 n +0011371934 00000 n +0011371986 00000 n +0011372038 00000 n +0011372090 00000 n +0011372142 00000 n +0011372194 00000 n +0011372246 00000 n +0011372298 00000 n +0011372350 00000 n +0011372402 00000 n +0011372454 00000 n +0011372506 00000 n +0011372558 00000 n +0011372610 00000 n +0011372662 00000 n +0011372714 00000 n +0011372766 00000 n +0011372818 00000 n +0011372870 00000 n +0011372921 00000 n +0011372973 00000 n +0011373025 00000 n +0011373077 00000 n +0011373129 00000 n +0011373181 00000 n +0011373233 00000 n +0011373285 00000 n +0011373337 00000 n +0011373389 00000 n +0011373441 00000 n +0011373493 00000 n +0011373545 00000 n +0011373597 00000 n +0011373649 00000 n +0011373701 00000 n +0011373753 00000 n +0011373805 00000 n +0011373857 00000 n +0011373909 00000 n +0011373961 00000 n +0011374012 00000 n +0011374064 00000 n +0011374116 00000 n +0011374168 00000 n +0011374220 00000 n +0011374272 00000 n +0011374324 00000 n +0011374376 00000 n +0011374428 00000 n +0011374480 00000 n +0011374532 00000 n +0011374584 00000 n +0011374636 00000 n +0011374688 00000 n +0011374740 00000 n +0011374792 00000 n +0011374844 00000 n +0011374896 00000 n +0011374948 00000 n +0011375000 00000 n +0011375052 00000 n +0011375104 00000 n +0011375156 00000 n +0011375208 00000 n +0011375260 00000 n +0011375312 00000 n +0011375364 00000 n +0011375416 00000 n +0011375468 00000 n +0011375520 00000 n +0011375572 00000 n +0011375624 00000 n +0011375676 00000 n +0011375728 00000 n +0011375780 00000 n +0011375832 00000 n +0011375884 00000 n +0011375936 00000 n +0011375988 00000 n +0011376040 00000 n +0011376092 00000 n +0011376144 00000 n +0011376196 00000 n +0011376248 00000 n +0011376300 00000 n +0011376351 00000 n +0011376403 00000 n +0011376455 00000 n +0011376507 00000 n +0011376559 00000 n +0011376611 00000 n +0011376663 00000 n +0011376715 00000 n +0011376767 00000 n +0011376819 00000 n +0011376871 00000 n +0011376923 00000 n +0011376975 00000 n +0011377027 00000 n +0011377079 00000 n +0011377131 00000 n +0011377183 00000 n +0011377235 00000 n +0011377287 00000 n +0011377339 00000 n +0011377391 00000 n +0011377443 00000 n +0011377495 00000 n +0011377547 00000 n +0011377598 00000 n +0011377650 00000 n +0011377702 00000 n +0011377754 00000 n +0011377806 00000 n +0011377858 00000 n +0011377910 00000 n +0011377962 00000 n +0011378014 00000 n +0011378066 00000 n +0011378118 00000 n +0011378170 00000 n +0011378222 00000 n +0011378274 00000 n +0011378326 00000 n +0011378378 00000 n +0011378430 00000 n +0011378482 00000 n +0011378534 00000 n +0011378586 00000 n +0011378637 00000 n +0011378689 00000 n +0011378741 00000 n +0011378793 00000 n +0011378845 00000 n +0011378897 00000 n +0011378949 00000 n +0011379001 00000 n +0011379053 00000 n +0011379105 00000 n +0011379157 00000 n +0011379209 00000 n +0011379261 00000 n +0011379313 00000 n +0011379365 00000 n +0011379417 00000 n +0011379469 00000 n +0011379521 00000 n +0011379573 00000 n +0011379625 00000 n +0011379677 00000 n +0011379729 00000 n +0011379781 00000 n +0011379833 00000 n +0011379885 00000 n +0011379937 00000 n +0011379989 00000 n +0011380041 00000 n +0011380093 00000 n +0011380145 00000 n +0011380197 00000 n +0011380249 00000 n +0011380301 00000 n +0011380353 00000 n +0011380405 00000 n +0011380457 00000 n +0011380509 00000 n +0011380561 00000 n +0011380613 00000 n +0011380665 00000 n +0011380717 00000 n +0011380769 00000 n +0011380821 00000 n +0011380873 00000 n +0011380925 00000 n +0011380977 00000 n +0011381029 00000 n +0011381081 00000 n +0011381133 00000 n +0011381184 00000 n +0011381236 00000 n +0011381288 00000 n +0011381340 00000 n +0011381392 00000 n +0011381444 00000 n +0011381496 00000 n +0011381548 00000 n +0011381600 00000 n +0011381652 00000 n +0011381704 00000 n +0011381756 00000 n +0011381808 00000 n +0011381860 00000 n +0011381912 00000 n +0011381963 00000 n +0011382015 00000 n +0011382067 00000 n +0011382119 00000 n +0011382171 00000 n +0011382223 00000 n +0011382275 00000 n +0011382327 00000 n +0011382379 00000 n +0011382431 00000 n +0011382483 00000 n +0011382535 00000 n +0011382587 00000 n +0011382639 00000 n +0011382691 00000 n +0011382743 00000 n +0011382795 00000 n +0011382847 00000 n +0011382899 00000 n +0011382951 00000 n +0011383003 00000 n +0011383055 00000 n +0011383107 00000 n +0011383159 00000 n +0011383211 00000 n +0011383263 00000 n +0011383315 00000 n +0011383367 00000 n +0011383419 00000 n +0011383471 00000 n +0011383523 00000 n +0011383575 00000 n +0011383627 00000 n +0011383679 00000 n +0011383731 00000 n +0011383783 00000 n +0011383835 00000 n +0011383887 00000 n +0011383939 00000 n +0011383991 00000 n +0011384043 00000 n +0011384095 00000 n +0011384147 00000 n +0011384199 00000 n +0011384251 00000 n +0011384303 00000 n +0011384355 00000 n +0011384407 00000 n +0011384459 00000 n +0011384511 00000 n +0011384563 00000 n +0011384615 00000 n +0011384667 00000 n +0011384719 00000 n +0011384771 00000 n +0011384823 00000 n +0011384875 00000 n +0011384927 00000 n +0011384979 00000 n +0011385031 00000 n +0011385083 00000 n +0011385135 00000 n +0011385187 00000 n +0011385239 00000 n +0011385291 00000 n +0011385343 00000 n +0011385395 00000 n +0011385447 00000 n +0011385499 00000 n +0011385551 00000 n +0011385603 00000 n +0011385655 00000 n +0011385707 00000 n +0011385759 00000 n +0011385811 00000 n +0011385863 00000 n +0011385915 00000 n +0011385967 00000 n +0011386019 00000 n +0011386071 00000 n +0011386123 00000 n +0011386175 00000 n +0011386227 00000 n +0011386279 00000 n +0011386331 00000 n +0011386383 00000 n +0011386435 00000 n +0011386487 00000 n +0011386539 00000 n +0011386591 00000 n +0011386643 00000 n +0011386695 00000 n +0011386747 00000 n +0011386799 00000 n +0011386851 00000 n +0011386903 00000 n +0011386954 00000 n +0011387005 00000 n +0011387057 00000 n +0011387109 00000 n +0011387161 00000 n +0011387212 00000 n +0011387264 00000 n +0011387316 00000 n +0011387368 00000 n +0011387420 00000 n +0011387472 00000 n +0011387524 00000 n +0011387576 00000 n +0011387628 00000 n +0011387680 00000 n +0011387732 00000 n +0011387784 00000 n +0011387836 00000 n +0011387888 00000 n +0011387940 00000 n +0011387992 00000 n +0011388044 00000 n +0011388096 00000 n +0011388148 00000 n +0011388199 00000 n +0011388251 00000 n +0011388303 00000 n +0011388355 00000 n +0011388407 00000 n +0011388459 00000 n +0011388511 00000 n +0011388563 00000 n +0011388615 00000 n +0011388667 00000 n +0011388719 00000 n +0011388771 00000 n +0011388823 00000 n +0011388875 00000 n +0011388927 00000 n +0011388979 00000 n +0011389031 00000 n +0011389083 00000 n +0011389135 00000 n +0011389187 00000 n +0011389239 00000 n +0011389291 00000 n +0011389343 00000 n +0011389395 00000 n +0011389447 00000 n +0011389499 00000 n +0011389551 00000 n +0011389603 00000 n +0011389655 00000 n +0011389707 00000 n +0011389759 00000 n +0011389810 00000 n +0011389862 00000 n +0011389914 00000 n +0011389966 00000 n +0011390018 00000 n +0011390070 00000 n +0011390122 00000 n +0011390174 00000 n +0011390226 00000 n +0011390278 00000 n +0011390330 00000 n +0011390382 00000 n +0011390434 00000 n +0011390486 00000 n +0011390538 00000 n +0011390590 00000 n +0011390642 00000 n +0011390694 00000 n +0011390746 00000 n +0011390798 00000 n +0011390850 00000 n +0011390902 00000 n +0011390954 00000 n +0011391006 00000 n +0011391058 00000 n +0011391110 00000 n +0011391161 00000 n +0011391213 00000 n +0011391265 00000 n +0011391317 00000 n +0011391369 00000 n +0011391421 00000 n +0011391473 00000 n +0011391525 00000 n +0011391577 00000 n +0011391629 00000 n +0011391681 00000 n +0011391733 00000 n +0011391785 00000 n +0011391837 00000 n +0011391889 00000 n +0011391941 00000 n +0011391993 00000 n +0011392045 00000 n +0011392097 00000 n +0011392149 00000 n +0011392201 00000 n +0011392253 00000 n +0011392305 00000 n +0011392357 00000 n +0011392409 00000 n +0011392461 00000 n +0011392513 00000 n +0011392565 00000 n +0011392617 00000 n +0011392669 00000 n +0011392721 00000 n +0011392773 00000 n +0011392825 00000 n +0011392877 00000 n +0011392929 00000 n +0011392981 00000 n +0011393033 00000 n +0011393085 00000 n +0011393137 00000 n +0011393189 00000 n +0011393241 00000 n +0011393293 00000 n +0011393345 00000 n +0011393397 00000 n +0011393449 00000 n +0011393501 00000 n +0011393553 00000 n +0011393605 00000 n +0011393657 00000 n +0011393709 00000 n +0011393761 00000 n +0011393813 00000 n +0011393865 00000 n +0011393917 00000 n +0011393969 00000 n +0011394021 00000 n +0011394073 00000 n +0011394125 00000 n +0011394177 00000 n +0011394229 00000 n +0011394281 00000 n +0011394333 00000 n +0011394385 00000 n +0011394437 00000 n +0011394489 00000 n +0011394540 00000 n +0011394592 00000 n +0011394644 00000 n +0011394696 00000 n +0011394748 00000 n +0011394800 00000 n +0011394852 00000 n +0011394904 00000 n +0011394956 00000 n +0011395008 00000 n +0011395060 00000 n +0011395112 00000 n +0011395164 00000 n +0011395216 00000 n +0011395268 00000 n +0011395320 00000 n +0011395372 00000 n +0011395424 00000 n +0011395476 00000 n +0011395528 00000 n +0011395580 00000 n +0011395632 00000 n +0011395684 00000 n +0011395736 00000 n +0011395788 00000 n +0011395840 00000 n +0011395892 00000 n +0011395944 00000 n +0011395996 00000 n +0011396048 00000 n +0011396100 00000 n +0011396152 00000 n +0011396204 00000 n +0011396256 00000 n +0011396308 00000 n +0011396360 00000 n +0011396412 00000 n +0011396464 00000 n +0011396516 00000 n +0011396568 00000 n +0011396620 00000 n +0011396672 00000 n +0011396724 00000 n +0011396776 00000 n +0011396828 00000 n +0011396880 00000 n +0011396932 00000 n +0011396984 00000 n +0011397036 00000 n +0011397088 00000 n +0011397139 00000 n +0011397191 00000 n +0011397243 00000 n +0011397295 00000 n +0011397347 00000 n +0011397399 00000 n +0011397451 00000 n +0011397503 00000 n +0011397555 00000 n +0011397607 00000 n +0011397659 00000 n +0011397711 00000 n +0011397763 00000 n +0011397815 00000 n +0011397866 00000 n +0011397918 00000 n +0011397970 00000 n +0011398022 00000 n +0011398074 00000 n +0011398126 00000 n +0011398178 00000 n +0011398230 00000 n +0011398282 00000 n +0011398334 00000 n +0011398386 00000 n +0011398438 00000 n +0011398490 00000 n +0011398542 00000 n +0011398594 00000 n +0011398646 00000 n +0011398698 00000 n +0011398750 00000 n +0011398802 00000 n +0011398854 00000 n +0011398906 00000 n +0011398958 00000 n +0011399010 00000 n +0011399062 00000 n +0011399114 00000 n +0011399166 00000 n +0011399218 00000 n +0011399270 00000 n +0011399322 00000 n +0011399374 00000 n +0011399426 00000 n +0011399478 00000 n +0011399530 00000 n +0011399582 00000 n +0011399634 00000 n +0011399686 00000 n +0011399738 00000 n +0011399790 00000 n +0011399842 00000 n +0011399894 00000 n +0011399946 00000 n +0011399998 00000 n +0011400050 00000 n +0011400102 00000 n +0011400154 00000 n +0011400206 00000 n +0011400258 00000 n +0011400310 00000 n +0011400362 00000 n +0011400414 00000 n +0011400466 00000 n +0011400518 00000 n +0011400570 00000 n +0011400622 00000 n +0011400674 00000 n +0011400726 00000 n +0011400778 00000 n +0011400830 00000 n +0011400882 00000 n +0011400934 00000 n +0011400986 00000 n +0011401038 00000 n +0011401090 00000 n +0011401142 00000 n +0011401194 00000 n +0011401246 00000 n +0011401298 00000 n +0011401350 00000 n +0011401402 00000 n +0011401454 00000 n +0011401505 00000 n +0011401557 00000 n +0011401609 00000 n +0011401661 00000 n +0011401713 00000 n +0011401765 00000 n +0011401817 00000 n +0011401869 00000 n +0011401921 00000 n +0011401973 00000 n +0011402025 00000 n +0011402077 00000 n +0011402129 00000 n +0011402181 00000 n +0011402233 00000 n +0011402285 00000 n +0011402337 00000 n +0011402389 00000 n +0011402441 00000 n +0011402493 00000 n +0011402545 00000 n +0011402596 00000 n +0011402648 00000 n +0011402700 00000 n +0011402752 00000 n +0011402803 00000 n +0011402855 00000 n +0011402907 00000 n +0011402959 00000 n +0011403011 00000 n +0011403063 00000 n +0011403115 00000 n +0011403167 00000 n +0011403219 00000 n +0011403271 00000 n +0011403323 00000 n +0011403375 00000 n +0011403427 00000 n +0011403479 00000 n +0011403531 00000 n +0011403583 00000 n +0011403635 00000 n +0011403687 00000 n +0011403739 00000 n +0011403791 00000 n +0011403843 00000 n +0011403895 00000 n +0011403947 00000 n +0011403999 00000 n +0011404051 00000 n +0011404103 00000 n +0011404155 00000 n +0011404207 00000 n +0011404259 00000 n +0011404311 00000 n +0011404363 00000 n +0011404415 00000 n +0011404467 00000 n +0011404519 00000 n +0011404571 00000 n +0011404622 00000 n +0011404674 00000 n +0011404726 00000 n +0011404778 00000 n +0011404830 00000 n +0011404882 00000 n +0011404934 00000 n +0011404986 00000 n +0011405038 00000 n +0011405090 00000 n +0011405142 00000 n +0011405194 00000 n +0011405246 00000 n +0011405298 00000 n +0011405350 00000 n +0011405402 00000 n +0011405454 00000 n +0011405506 00000 n +0011405558 00000 n +0011405610 00000 n +0011405662 00000 n +0011405714 00000 n +0011405766 00000 n +0011405818 00000 n +0011405870 00000 n +0011405922 00000 n +0011405974 00000 n +0011406026 00000 n +0011406078 00000 n +0011406130 00000 n +0011406182 00000 n +0011406234 00000 n +0011406286 00000 n +0011406337 00000 n +0011406389 00000 n +0011406441 00000 n +0011406493 00000 n +0011406545 00000 n +0011406597 00000 n +0011406649 00000 n +0011406701 00000 n +0011406753 00000 n +0011406805 00000 n +0011406857 00000 n +0011406909 00000 n +0011406960 00000 n +0011407011 00000 n +0011407062 00000 n +0011407113 00000 n +0011407163 00000 n +0011407214 00000 n +0011407265 00000 n +0011407316 00000 n +0011407367 00000 n +0011407418 00000 n +0011407469 00000 n +0011407520 00000 n +0011407571 00000 n +0011407622 00000 n +0011407673 00000 n +0011407724 00000 n +0011407775 00000 n +0011407826 00000 n +0011407877 00000 n +0011407928 00000 n +0011407980 00000 n +0011408032 00000 n +0011408084 00000 n +0011408136 00000 n +0011408188 00000 n +0011408240 00000 n +0011408292 00000 n +0011408344 00000 n +0011408396 00000 n +0011408448 00000 n +0011408500 00000 n +0011408552 00000 n +0011408604 00000 n +0011408656 00000 n +0011408708 00000 n +0011408760 00000 n +0011408812 00000 n +0011408864 00000 n +0011408916 00000 n +0011408968 00000 n +0011409020 00000 n +0011409072 00000 n +0011409124 00000 n +0011409176 00000 n +0011409228 00000 n +0011409280 00000 n +0011409332 00000 n +0011409384 00000 n +0011409436 00000 n +0011409488 00000 n +0011409540 00000 n +0011409592 00000 n +0011409643 00000 n +0011409695 00000 n +0011409747 00000 n +0011409799 00000 n +0011409851 00000 n +0011409903 00000 n +0011409955 00000 n +0011410007 00000 n +0011410059 00000 n +0011410111 00000 n +0011410163 00000 n +0011410215 00000 n +0011410267 00000 n +0011410317 00000 n +0011410367 00000 n +0011410417 00000 n +0011410467 00000 n +0011410517 00000 n +0011410567 00000 n +0011410617 00000 n +0011410667 00000 n +0011410717 00000 n +0011410767 00000 n +0011410817 00000 n +0011410867 00000 n +0011410918 00000 n +0011410969 00000 n +0011411020 00000 n +0011411071 00000 n +0011411122 00000 n +0011411173 00000 n +0011411224 00000 n +0011411275 00000 n +0011411326 00000 n +0011411377 00000 n +0011411428 00000 n +0011411479 00000 n +0011411530 00000 n +0011411581 00000 n +0011411632 00000 n +0011411683 00000 n +0011411733 00000 n +0011411784 00000 n +0011411835 00000 n +0011411886 00000 n +0011411937 00000 n +0011411988 00000 n +0011412039 00000 n +0011412090 00000 n +0011412141 00000 n +0011412192 00000 n +0011412243 00000 n +0011412294 00000 n +0011412345 00000 n +0011412396 00000 n +0011412447 00000 n +0011412498 00000 n +0011412549 00000 n +0011412600 00000 n +0011412651 00000 n +0011412702 00000 n +0011412753 00000 n +0011412804 00000 n +0011412855 00000 n +0011412906 00000 n +0011412957 00000 n +0011413008 00000 n +0011413059 00000 n +0011413110 00000 n +0011413161 00000 n +0011413212 00000 n +0011413263 00000 n +0011413314 00000 n +0011413365 00000 n +0011413416 00000 n +0011413467 00000 n +0011413518 00000 n +0011413571 00000 n +0011413624 00000 n +0011413677 00000 n +0011413730 00000 n +0011413783 00000 n +0011413836 00000 n +0011413889 00000 n +0011413942 00000 n +0011413995 00000 n +0011414048 00000 n +0011414101 00000 n +0011414154 00000 n +0011414207 00000 n +0011414260 00000 n +0011414313 00000 n +0011414365 00000 n +0011414418 00000 n +0011414471 00000 n +0011414524 00000 n +0011414577 00000 n +0011414630 00000 n +0011414683 00000 n +0011414736 00000 n +0011414789 00000 n +0011414842 00000 n +0011414895 00000 n +0011414948 00000 n +0011415001 00000 n +0011415054 00000 n +0011415107 00000 n +0011415160 00000 n +0011415213 00000 n +0011415266 00000 n +0011415319 00000 n +0011415372 00000 n +0011415422 00000 n +0011415472 00000 n +0011415521 00000 n +0011415571 00000 n +0011415622 00000 n +0011415673 00000 n +0011415723 00000 n +0011415774 00000 n +0011415824 00000 n +0011415875 00000 n +0011415924 00000 n +0011415974 00000 n +0011416024 00000 n +0011416074 00000 n +0011416124 00000 n +0011416173 00000 n +0011416223 00000 n +0011416273 00000 n +0011416323 00000 n +0011416373 00000 n +0011416423 00000 n +0011416473 00000 n +0011416523 00000 n +0011416572 00000 n +0011416622 00000 n +0011416672 00000 n +0011416722 00000 n +0011416772 00000 n +0011416822 00000 n +0011416875 00000 n +0011416928 00000 n +0011416981 00000 n +0011417034 00000 n +0011417087 00000 n +0011417140 00000 n +0011417193 00000 n +0011417246 00000 n +0011417299 00000 n +0011417352 00000 n +0011417405 00000 n +0011417458 00000 n +0011417511 00000 n +0011417564 00000 n +0011417617 00000 n +0011417670 00000 n +0011417723 00000 n +0011417776 00000 n +0011417829 00000 n +0011417882 00000 n +0011417935 00000 n +0011417988 00000 n +0011418041 00000 n +0011418094 00000 n +0011418147 00000 n +0011418200 00000 n +0011418253 00000 n +0011418306 00000 n +0011418359 00000 n +0011418412 00000 n +0011418465 00000 n +0011418518 00000 n +0011418571 00000 n +0011418624 00000 n +0011418677 00000 n +0011418730 00000 n +0011418783 00000 n +0011418836 00000 n +0011418889 00000 n +0011418942 00000 n +0011418995 00000 n +0011419048 00000 n +0011419101 00000 n +0011419154 00000 n +0011419206 00000 n +0011419259 00000 n +0011419312 00000 n +0011419365 00000 n +0011419418 00000 n +0011419471 00000 n +0011419524 00000 n +0011419576 00000 n +0011419629 00000 n +0011419682 00000 n +0011419735 00000 n +0011419787 00000 n +0011419840 00000 n +0011419893 00000 n +0011419946 00000 n +0011419999 00000 n +0011420052 00000 n +0011420105 00000 n +0011420158 00000 n +0011420210 00000 n +0011420263 00000 n +0011420316 00000 n +0011420369 00000 n +0011420422 00000 n +0011420475 00000 n +0011420528 00000 n +0011420581 00000 n +0011420634 00000 n +0011420687 00000 n +0011420740 00000 n +0011420793 00000 n +0011420846 00000 n +0011420899 00000 n +0011420952 00000 n +0011421005 00000 n +0011421057 00000 n +0011421110 00000 n +0011421163 00000 n +0011421216 00000 n +0011421268 00000 n +0011421321 00000 n +0011421374 00000 n +0011421427 00000 n +0011421479 00000 n +0011421532 00000 n +0011421585 00000 n +0011421638 00000 n +0011421691 00000 n +0011421744 00000 n +0011421797 00000 n +0011421850 00000 n +0011421903 00000 n +0011421956 00000 n +0011422009 00000 n +0011422062 00000 n +0011422115 00000 n +0011422168 00000 n +0011422221 00000 n +0011422274 00000 n +0011422327 00000 n +0011422380 00000 n +0011422433 00000 n +0011422486 00000 n +0011422539 00000 n +0011422592 00000 n +0011422645 00000 n +0011422698 00000 n +0011422751 00000 n +0011422804 00000 n +0011422857 00000 n +0011422910 00000 n +0011422963 00000 n +0011423016 00000 n +0011423069 00000 n +0011423122 00000 n +0011423175 00000 n +0011423228 00000 n +0011423281 00000 n +0011423334 00000 n +0011423387 00000 n +0011423440 00000 n +0011423493 00000 n +0011423546 00000 n +0011423599 00000 n +0011423652 00000 n +0011423704 00000 n +0011423757 00000 n +0011423810 00000 n +0011423863 00000 n +0011423916 00000 n +0011423969 00000 n +0011424022 00000 n +0011424075 00000 n +0011424128 00000 n +0011424181 00000 n +0011424234 00000 n +0011424287 00000 n +0011424340 00000 n +0011424393 00000 n +0011424446 00000 n +0011424499 00000 n +0011424552 00000 n +0011424605 00000 n +0011424658 00000 n +0011424711 00000 n +0011424764 00000 n +0011424817 00000 n +0011424870 00000 n +0011424923 00000 n +0011424976 00000 n +0011425029 00000 n +0011425082 00000 n +0011425135 00000 n +0011425188 00000 n +0011425241 00000 n +0011425294 00000 n +0011425347 00000 n +0011425400 00000 n +0011425453 00000 n +0011425506 00000 n +0011425559 00000 n +0011425612 00000 n +0011425665 00000 n +0011425718 00000 n +0011425771 00000 n +0011425824 00000 n +0011425876 00000 n +0011425929 00000 n +0011425982 00000 n +0011426035 00000 n +0011426088 00000 n +0011426141 00000 n +0011426194 00000 n +0011426247 00000 n +0011426300 00000 n +0011426353 00000 n +0011426406 00000 n +0011426458 00000 n +0011426511 00000 n +0011426564 00000 n +0011426617 00000 n +0011426670 00000 n +0011426723 00000 n +0011426776 00000 n +0011426829 00000 n +0011426882 00000 n +0011426935 00000 n +0011426987 00000 n +0011427040 00000 n +0011427093 00000 n +0011427146 00000 n +0011427199 00000 n +0011427252 00000 n +0011427305 00000 n +0011427358 00000 n +0011427411 00000 n +0011427464 00000 n +0011427517 00000 n +0011427570 00000 n +0011427623 00000 n +0011427676 00000 n +0011427729 00000 n +0011427782 00000 n +0011427835 00000 n +0011427888 00000 n +0011427941 00000 n +0011427994 00000 n +0011428047 00000 n +0011428100 00000 n +0011428153 00000 n +0011428206 00000 n +0011428259 00000 n +0011428312 00000 n +0011428365 00000 n +0011428418 00000 n +0011428471 00000 n +0011428524 00000 n +0011428577 00000 n +0011428630 00000 n +0011428683 00000 n +0011428736 00000 n +0011428789 00000 n +0011428842 00000 n +0011428895 00000 n +0011428948 00000 n +0011429001 00000 n +0011429054 00000 n +0011429107 00000 n +0011429160 00000 n +0011429213 00000 n +0011429266 00000 n +0011429319 00000 n +0011429372 00000 n +0011429425 00000 n +0011429478 00000 n +0011429530 00000 n +0011429583 00000 n +0011429636 00000 n +0011429689 00000 n +0011429742 00000 n +0011429795 00000 n +0011429848 00000 n +0011429901 00000 n +0011429954 00000 n +0011430007 00000 n +0011430059 00000 n +0011430112 00000 n +0011430165 00000 n +0011430218 00000 n +0011430270 00000 n +0011430323 00000 n +0011430376 00000 n +0011430429 00000 n +0011430482 00000 n +0011430535 00000 n +0011430588 00000 n +0011430641 00000 n +0011430694 00000 n +0011430747 00000 n +0011430800 00000 n +0011430853 00000 n +0011430906 00000 n +0011430959 00000 n +0011431012 00000 n +0011431065 00000 n +0011431118 00000 n +0011431171 00000 n +0011431224 00000 n +0011431277 00000 n +0011431330 00000 n +0011431383 00000 n +0011431436 00000 n +0011431489 00000 n +0011431542 00000 n +0011431595 00000 n +0011431648 00000 n +0011431701 00000 n +0011431754 00000 n +0011431807 00000 n +0011431860 00000 n +0011431913 00000 n +0011431966 00000 n +0011432018 00000 n +0011432071 00000 n +0011432124 00000 n +0011432177 00000 n +0011432230 00000 n +0011432283 00000 n +0011432336 00000 n +0011432389 00000 n +0011432442 00000 n +0011432494 00000 n +0011432547 00000 n +0011432600 00000 n +0011432653 00000 n +0011432706 00000 n +0011432759 00000 n +0011432812 00000 n +0011432865 00000 n +0011432918 00000 n +0011432971 00000 n +0011433024 00000 n +0011433077 00000 n +0011433130 00000 n +0011433183 00000 n +0011433236 00000 n +0011433289 00000 n +0011433342 00000 n +0011433395 00000 n +0011433448 00000 n +0011433501 00000 n +0011433554 00000 n +0011433607 00000 n +0011433660 00000 n +0011433713 00000 n +0011433766 00000 n +0011435285 00000 n +0011436815 00000 n +0011438290 00000 n +0011439765 00000 n +0011441240 00000 n +0011442715 00000 n +0011444190 00000 n +0011445692 00000 n +0011447221 00000 n +0011448762 00000 n +0011450253 00000 n +0011451735 00000 n +0011453221 00000 n +0011454696 00000 n +0011456157 00000 n +0011457632 00000 n +0011459107 00000 n +0011460582 00000 n +0011462081 00000 n +0011463556 00000 n +0011465031 00000 n +0011466506 00000 n +0011467994 00000 n +0011469493 00000 n +0011470968 00000 n +0011472443 00000 n +0011473939 00000 n +0011475478 00000 n +0011476963 00000 n +0011478438 00000 n +0011479913 00000 n +0011481388 00000 n +0011482863 00000 n +0011484336 00000 n +0011485745 00000 n +0011487154 00000 n +0011488563 00000 n +0011489972 00000 n +0011491383 00000 n +0011492830 00000 n +0011494291 00000 n +0011495700 00000 n +0011497109 00000 n +0011498518 00000 n +0011499927 00000 n +0011501336 00000 n +0011502745 00000 n +0011504230 00000 n +0011505837 00000 n +0011507444 00000 n +0011509051 00000 n +0011510658 00000 n +0011512265 00000 n +0011513872 00000 n +0011515479 00000 n +0011517086 00000 n +0011518693 00000 n +0011520308 00000 n +0011521920 00000 n +0011523527 00000 n +0011525134 00000 n +0011526790 00000 n +0011528506 00000 n +0011530245 00000 n +0011530298 00000 n +0011530351 00000 n +0011530404 00000 n +0011530457 00000 n +0011530510 00000 n +0011530563 00000 n +0011530616 00000 n +0011530669 00000 n +0011530722 00000 n +0011530775 00000 n +0011530828 00000 n +0011530881 00000 n +0011530934 00000 n +0011530987 00000 n +0011531040 00000 n +0011531093 00000 n +0011531146 00000 n +0011531199 00000 n +0011531252 00000 n +0011531305 00000 n +0011531358 00000 n +0011531411 00000 n +0011531464 00000 n +0011531517 00000 n +0011531570 00000 n +0011531623 00000 n +0011531676 00000 n +0011531729 00000 n +0011531782 00000 n +0011531835 00000 n +0011531888 00000 n +0011531941 00000 n +0011531994 00000 n +0011532047 00000 n +0011532100 00000 n +0011532153 00000 n +0011532206 00000 n +0011532259 00000 n +0011532312 00000 n +0011532365 00000 n +0011532418 00000 n +0011532471 00000 n +0011532524 00000 n +0011532576 00000 n +0011532629 00000 n +0011532682 00000 n +0011532735 00000 n +0011532788 00000 n +0011532841 00000 n +0011532894 00000 n +0011532947 00000 n +0011533000 00000 n +0011533052 00000 n +0011533105 00000 n +0011533158 00000 n +0011533211 00000 n +0011533264 00000 n +0011533317 00000 n +0011533370 00000 n +0011533423 00000 n +0011533476 00000 n +0011533529 00000 n +0011533582 00000 n +0011533635 00000 n +0011533688 00000 n +0011533741 00000 n +0011533794 00000 n +0011533847 00000 n +0011533900 00000 n +0011533953 00000 n +0011534006 00000 n +0011534059 00000 n +0011534112 00000 n +0011534165 00000 n +0011534218 00000 n +0011534271 00000 n +0011534324 00000 n +0011534377 00000 n +0011534430 00000 n +0011534483 00000 n +0011534536 00000 n +0011534589 00000 n +0011534642 00000 n +0011534695 00000 n +0011534748 00000 n +0011534801 00000 n +0011534854 00000 n +0011534907 00000 n +0011534960 00000 n +0011535013 00000 n +0011535066 00000 n +0011535119 00000 n +0011535172 00000 n +0011535225 00000 n +0011535278 00000 n +0011535331 00000 n +0011535384 00000 n +0011535437 00000 n +0011535490 00000 n +0011535543 00000 n +0011535596 00000 n +0011535649 00000 n +0011535702 00000 n +0011535754 00000 n +0011535807 00000 n +0011535860 00000 n +0011535913 00000 n +0011535965 00000 n +0011536018 00000 n +0011536071 00000 n +0011536124 00000 n +0011536177 00000 n +0011536230 00000 n +0011536283 00000 n +0011536336 00000 n +0011536389 00000 n +0011536442 00000 n +0011536495 00000 n +0011536548 00000 n +0011536601 00000 n +0011536654 00000 n +0011536707 00000 n +0011536760 00000 n +0011536813 00000 n +0011536866 00000 n +0011536919 00000 n +0011536972 00000 n +0011537025 00000 n +0011537078 00000 n +0011537131 00000 n +0011537184 00000 n +0011537237 00000 n +0011537290 00000 n +0011537343 00000 n +0011537396 00000 n +0011537449 00000 n +0011537502 00000 n +0011537555 00000 n +0011537608 00000 n +0011537661 00000 n +0011537714 00000 n +0011537766 00000 n +0011537819 00000 n +0011537872 00000 n +0011537925 00000 n +0011537978 00000 n +0011538031 00000 n +0011538084 00000 n +0011538137 00000 n +0011538190 00000 n +0011538243 00000 n +0011538296 00000 n +0011538349 00000 n +0011538402 00000 n +0011538455 00000 n +0011538508 00000 n +0011538561 00000 n +0011538614 00000 n +0011538667 00000 n +0011538720 00000 n +0011538773 00000 n +0011538826 00000 n +0011538879 00000 n +0011538932 00000 n +0011538985 00000 n +0011539038 00000 n +0011539091 00000 n +0011539144 00000 n +0011539197 00000 n +0011539250 00000 n +0011539303 00000 n +0011539356 00000 n +0011539409 00000 n +0011539462 00000 n +0011539514 00000 n +0011539567 00000 n +0011539620 00000 n +0011539673 00000 n +0011539725 00000 n +0011539778 00000 n +0011539831 00000 n +0011539884 00000 n +0011539937 00000 n +0011539990 00000 n +0011540043 00000 n +0011540096 00000 n +0011540149 00000 n +0011540202 00000 n +0011540255 00000 n +0011540308 00000 n +0011540361 00000 n +0011540414 00000 n +0011540467 00000 n +0011540520 00000 n +0011540573 00000 n +0011540626 00000 n +0011540679 00000 n +0011540732 00000 n +0011540785 00000 n +0011540838 00000 n +0011540891 00000 n +0011540944 00000 n +0011540997 00000 n +0011541050 00000 n +0011541103 00000 n +0011541156 00000 n +0011541209 00000 n +0011541262 00000 n +0011541315 00000 n +0011541368 00000 n +0011541421 00000 n +0011541474 00000 n +0011541527 00000 n +0011541580 00000 n +0011541633 00000 n +0011541686 00000 n +0011541739 00000 n +0011541792 00000 n +0011541845 00000 n +0011541898 00000 n +0011541951 00000 n +0011542004 00000 n +0011542057 00000 n +0011542110 00000 n +0011542163 00000 n +0011542216 00000 n +0011542269 00000 n +0011542322 00000 n +0011542374 00000 n +0011542427 00000 n +0011542480 00000 n +0011542533 00000 n +0011542586 00000 n +0011542639 00000 n +0011542692 00000 n +0011542744 00000 n +0011542797 00000 n +0011542850 00000 n +0011542903 00000 n +0011542955 00000 n +0011543008 00000 n +0011543061 00000 n +0011543114 00000 n +0011543167 00000 n +0011543220 00000 n +0011543273 00000 n +0011543326 00000 n +0011543379 00000 n +0011543432 00000 n +0011543485 00000 n +0011543538 00000 n +0011543591 00000 n +0011543644 00000 n +0011543697 00000 n +0011543750 00000 n +0011543803 00000 n +0011543855 00000 n +0011543907 00000 n +0011543959 00000 n +0011544011 00000 n +0011544063 00000 n +0011544115 00000 n +0011544167 00000 n +0011544220 00000 n +0011544273 00000 n +0011544326 00000 n +0011544379 00000 n +0011544432 00000 n +0011544485 00000 n +0011544538 00000 n +0011544591 00000 n +0011544644 00000 n +0011544697 00000 n +0011544750 00000 n +0011544803 00000 n +0011544856 00000 n +0011544909 00000 n +0011544962 00000 n +0011545015 00000 n +0011545068 00000 n +0011545121 00000 n +0011545174 00000 n +0011545227 00000 n +0011545280 00000 n +0011545333 00000 n +0011545386 00000 n +0011545439 00000 n +0011545492 00000 n +0011545545 00000 n +0011545598 00000 n +0011545651 00000 n +0011545704 00000 n +0011545757 00000 n +0011545810 00000 n +0011545863 00000 n +0011545916 00000 n +0011545969 00000 n +0011546022 00000 n +0011546075 00000 n +0011546128 00000 n +0011546181 00000 n +0011546234 00000 n +0011546287 00000 n +0011546340 00000 n +0011546393 00000 n +0011546446 00000 n +0011546499 00000 n +0011546552 00000 n +0011546605 00000 n +0011546658 00000 n +0011546711 00000 n +0011546764 00000 n +0011546817 00000 n +0011546870 00000 n +0011546923 00000 n +0011546976 00000 n +0011547029 00000 n +0011547082 00000 n +0011547135 00000 n +0011547188 00000 n +0011547241 00000 n +0011547294 00000 n +0011547347 00000 n +0011547400 00000 n +0011547453 00000 n +0011547506 00000 n +0011547559 00000 n +0011547612 00000 n +0011547665 00000 n +0011547718 00000 n +0011547771 00000 n +0011547824 00000 n +0011547877 00000 n +0011547930 00000 n +0011547983 00000 n +0011548036 00000 n +0011548089 00000 n +0011548142 00000 n +0011548195 00000 n +0011548248 00000 n +0011548301 00000 n +0011548354 00000 n +0011548407 00000 n +0011548460 00000 n +0011548513 00000 n +0011548566 00000 n +0011548619 00000 n +0011548672 00000 n +0011548725 00000 n +0011548778 00000 n +0011548831 00000 n +0011548884 00000 n +0011548937 00000 n +0011548990 00000 n +0011549043 00000 n +0011549096 00000 n +0011549149 00000 n +0011549202 00000 n +0011549255 00000 n +0011549308 00000 n +0011549361 00000 n +0011549414 00000 n +0011549467 00000 n +0011549520 00000 n +0011549573 00000 n +0011549626 00000 n +0011549679 00000 n +0011549732 00000 n +0011549785 00000 n +0011549838 00000 n +0011549891 00000 n +0011549944 00000 n +0011549997 00000 n +0011550050 00000 n +0011550103 00000 n +0011550156 00000 n +0011550209 00000 n +0011550262 00000 n +0011550315 00000 n +0011550367 00000 n +0011550419 00000 n +0011550471 00000 n +0011550524 00000 n +0011550576 00000 n +0011550629 00000 n +0011550682 00000 n +0011550735 00000 n +0011550788 00000 n +0011550841 00000 n +0011550893 00000 n +0011550946 00000 n +0011550999 00000 n +0011551052 00000 n +0011551105 00000 n +0011551158 00000 n +0011551211 00000 n +0011551264 00000 n +0011551316 00000 n +0011551369 00000 n +0011551422 00000 n +0011551475 00000 n +0011551528 00000 n +0011551581 00000 n +0011551634 00000 n +0011551687 00000 n +0011551740 00000 n +0011551793 00000 n +0011551846 00000 n +0011551899 00000 n +0011551952 00000 n +0011552005 00000 n +0011552058 00000 n +0011552111 00000 n +0011552164 00000 n +0011552217 00000 n +0011552270 00000 n +0011552323 00000 n +0011552376 00000 n +0011552429 00000 n +0011552482 00000 n +0011552535 00000 n +0011552588 00000 n +0011552641 00000 n +0011552694 00000 n +0011552747 00000 n +0011552800 00000 n +0011552853 00000 n +0011552906 00000 n +0011552959 00000 n +0011553012 00000 n +0011553065 00000 n +0011553118 00000 n +0011553171 00000 n +0011553224 00000 n +0011553277 00000 n +0011553330 00000 n +0011553383 00000 n +0011553436 00000 n +0011553489 00000 n +0011553542 00000 n +0011553595 00000 n +0011553648 00000 n +0011553701 00000 n +0011553754 00000 n +0011553806 00000 n +0011553859 00000 n +0011553912 00000 n +0011553965 00000 n +0011554018 00000 n +0011554071 00000 n +0011554124 00000 n +0011554176 00000 n +0011554229 00000 n +0011554282 00000 n +0011554335 00000 n +0011554388 00000 n +0011554441 00000 n +0011554494 00000 n +0011554547 00000 n +0011554600 00000 n +0011554653 00000 n +0011554706 00000 n +0011554759 00000 n +0011554812 00000 n +0011554865 00000 n +0011554917 00000 n +0011554970 00000 n +0011555023 00000 n +0011555076 00000 n +0011555129 00000 n +0011555182 00000 n +0011555235 00000 n +0011555288 00000 n +0011555340 00000 n +0011555393 00000 n +0011555446 00000 n +0011555499 00000 n +0011555552 00000 n +0011555605 00000 n +0011555658 00000 n +0011555711 00000 n +0011555764 00000 n +0011555817 00000 n +0011555870 00000 n +0011555923 00000 n +0011555976 00000 n +0011556029 00000 n +0011556082 00000 n +0011556135 00000 n +0011556188 00000 n +0011556241 00000 n +0011556294 00000 n +0011556347 00000 n +0011556400 00000 n +0011556453 00000 n +0011556506 00000 n +0011556559 00000 n +0011556612 00000 n +0011556665 00000 n +0011556718 00000 n +0011556771 00000 n +0011556824 00000 n +0011556877 00000 n +0011556930 00000 n +0011556983 00000 n +0011557036 00000 n +0011557089 00000 n +0011557142 00000 n +0011557195 00000 n +0011557248 00000 n +0011557301 00000 n +0011557354 00000 n +0011557407 00000 n +0011557460 00000 n +0011557513 00000 n +0011557566 00000 n +0011557619 00000 n +0011557672 00000 n +0011557725 00000 n +0011557778 00000 n +0011557831 00000 n +0011557884 00000 n +0011557937 00000 n +0011557990 00000 n +0011558043 00000 n +0011558096 00000 n +0011558149 00000 n +0011558202 00000 n +0011558255 00000 n +0011558308 00000 n +0011558361 00000 n +0011558414 00000 n +0011558467 00000 n +0011558520 00000 n +0011558573 00000 n +0011558626 00000 n +0011558679 00000 n +0011558732 00000 n +0011558785 00000 n +0011558838 00000 n +0011558891 00000 n +0011558944 00000 n +0011558997 00000 n +0011559050 00000 n +0011559103 00000 n +0011559156 00000 n +0011559209 00000 n +0011559262 00000 n +0011559315 00000 n +0011559368 00000 n +0011559421 00000 n +0011559474 00000 n +0011559527 00000 n +0011559580 00000 n +0011559633 00000 n +0011559686 00000 n +0011559739 00000 n +0011559792 00000 n +0011559845 00000 n +0011559898 00000 n +0011559951 00000 n +0011560004 00000 n +0011560057 00000 n +0011560110 00000 n +0011560163 00000 n +0011560216 00000 n +0011560269 00000 n +0011560322 00000 n +0011560375 00000 n +0011560428 00000 n +0011560481 00000 n +0011560533 00000 n +0011560586 00000 n +0011560639 00000 n +0011560692 00000 n +0011560745 00000 n +0011560798 00000 n +0011560851 00000 n +0011560904 00000 n +0011560957 00000 n +0011561010 00000 n +0011561063 00000 n +0011561116 00000 n +0011561169 00000 n +0011561222 00000 n +0011561275 00000 n +0011561328 00000 n +0011561381 00000 n +0011561434 00000 n +0011561487 00000 n +0011561540 00000 n +0011561593 00000 n +0011561646 00000 n +0011561699 00000 n +0011561752 00000 n +0011561805 00000 n +0011561858 00000 n +0011561911 00000 n +0011561964 00000 n +0011562017 00000 n +0011562070 00000 n +0011562123 00000 n +0011562176 00000 n +0011562229 00000 n +0011562282 00000 n +0011562335 00000 n +0011562388 00000 n +0011562441 00000 n +0011562494 00000 n +0011562547 00000 n +0011562600 00000 n +0011562653 00000 n +0011562706 00000 n +0011562759 00000 n +0011562812 00000 n +0011562865 00000 n +0011562918 00000 n +0011562971 00000 n +0011563024 00000 n +0011563077 00000 n +0011563130 00000 n +0011563183 00000 n +0011563236 00000 n +0011563289 00000 n +0011563342 00000 n +0011563395 00000 n +0011563448 00000 n +0011563501 00000 n +0011563554 00000 n +0011563607 00000 n +0011563660 00000 n +0011563713 00000 n +0011563766 00000 n +0011563819 00000 n +0011563872 00000 n +0011563925 00000 n +0011563978 00000 n +0011564031 00000 n +0011564084 00000 n +0011564137 00000 n +0011564190 00000 n +0011564243 00000 n +0011564296 00000 n +0011564349 00000 n +0011564402 00000 n +0011564455 00000 n +0011564508 00000 n +0011564561 00000 n +0011564614 00000 n +0011564667 00000 n +0011564720 00000 n +0011564773 00000 n +0011564826 00000 n +0011564879 00000 n +0011564932 00000 n +0011564985 00000 n +0011565038 00000 n +0011565091 00000 n +0011565144 00000 n +0011565197 00000 n +0011565250 00000 n +0011565303 00000 n +0011565356 00000 n +0011565409 00000 n +0011565462 00000 n +0011565515 00000 n +0011565568 00000 n +0011565621 00000 n +0011565674 00000 n +0011565727 00000 n +0011565780 00000 n +0011565833 00000 n +0011565886 00000 n +0011565939 00000 n +0011565992 00000 n +0011566045 00000 n +0011566098 00000 n +0011566151 00000 n +0011566204 00000 n +0011566257 00000 n +0011566310 00000 n +0011566363 00000 n +0011566416 00000 n +0011566469 00000 n +0011566522 00000 n +0011566575 00000 n +0011566628 00000 n +0011566681 00000 n +0011566734 00000 n +0011566787 00000 n +0011566840 00000 n +0011566893 00000 n +0011566946 00000 n +0011566999 00000 n +0011567052 00000 n +0011567105 00000 n +0011567158 00000 n +0011567211 00000 n +0011567264 00000 n +0011567317 00000 n +0011567370 00000 n +0011567423 00000 n +0011567476 00000 n +0011567529 00000 n +0011567581 00000 n +0011567633 00000 n +0011567686 00000 n +0011567739 00000 n +0011567792 00000 n +0011567845 00000 n +0011567898 00000 n +0011567951 00000 n +0011568004 00000 n +0011568057 00000 n +0011568110 00000 n +0011568163 00000 n +0011568216 00000 n +0011568269 00000 n +0011568322 00000 n +0011568375 00000 n +0011568428 00000 n +0011568481 00000 n +0011568533 00000 n +0011568585 00000 n +0011568638 00000 n +0011568691 00000 n +0011568744 00000 n +0011568797 00000 n +0011568849 00000 n +0011568901 00000 n +0011568953 00000 n +0011569005 00000 n +0011569057 00000 n +0011569109 00000 n +0011569161 00000 n +0011569214 00000 n +0011569267 00000 n +0011569319 00000 n +0011569372 00000 n +0011569425 00000 n +0011569478 00000 n +0011569530 00000 n +0011569583 00000 n +0011569636 00000 n +0011569689 00000 n +0011569742 00000 n +0011569795 00000 n +0011569848 00000 n +0011569901 00000 n +0011569954 00000 n +0011570007 00000 n +0011570060 00000 n +0011570113 00000 n +0011570166 00000 n +0011570219 00000 n +0011570272 00000 n +0011570325 00000 n +0011570378 00000 n +0011570431 00000 n +0011570484 00000 n +0011570537 00000 n +0011570590 00000 n +0011570643 00000 n +0011570696 00000 n +0011570749 00000 n +0011570802 00000 n +0011570855 00000 n +0011570908 00000 n +0011570961 00000 n +0011571014 00000 n +0011571067 00000 n +0011571120 00000 n +0011571173 00000 n +0011571226 00000 n +0011571279 00000 n +0011571332 00000 n +0011571385 00000 n +0011571438 00000 n +0011571491 00000 n +0011571544 00000 n +0011571597 00000 n +0011571650 00000 n +0011571703 00000 n +0011571756 00000 n +0011571809 00000 n +0011571862 00000 n +0011571915 00000 n +0011571968 00000 n +0011572020 00000 n +0011572073 00000 n +0011572126 00000 n +0011572179 00000 n +0011572232 00000 n +0011572285 00000 n +0011572338 00000 n +0011572391 00000 n +0011572444 00000 n +0011572497 00000 n +0011572550 00000 n +0011572603 00000 n +0011572656 00000 n +0011572709 00000 n +0011572762 00000 n +0011572815 00000 n +0011572868 00000 n +0011572921 00000 n +0011572974 00000 n +0011573027 00000 n +0011573080 00000 n +0011573133 00000 n +0011573186 00000 n +0011573239 00000 n +0011573292 00000 n +0011573345 00000 n +0011573398 00000 n +0011573451 00000 n +0011573504 00000 n +0011573557 00000 n +0011573609 00000 n +0011573661 00000 n +0011573713 00000 n +0011573765 00000 n +0011573817 00000 n +0011573869 00000 n +0011573921 00000 n +0011573973 00000 n +0011574026 00000 n +0011574078 00000 n +0011574130 00000 n +0011574183 00000 n +0011574236 00000 n +0011574289 00000 n +0011574342 00000 n +0011574395 00000 n +0011574448 00000 n +0011574501 00000 n +0011574554 00000 n +0011574607 00000 n +0011574660 00000 n +0011574713 00000 n +0011574766 00000 n +0011574819 00000 n +0011574872 00000 n +0011574925 00000 n +0011574978 00000 n +0011575031 00000 n +0011575084 00000 n +0011575137 00000 n +0011575190 00000 n +0011575243 00000 n +0011575296 00000 n +0011575349 00000 n +0011575402 00000 n +0011575455 00000 n +0011575508 00000 n +0011575561 00000 n +0011575614 00000 n +0011575666 00000 n +0011575719 00000 n +0011575772 00000 n +0011575824 00000 n +0011575877 00000 n +0011575930 00000 n +0011575983 00000 n +0011576036 00000 n +0011576089 00000 n +0011576142 00000 n +0011576195 00000 n +0011576248 00000 n +0011576301 00000 n +0011576354 00000 n +0011576407 00000 n +0011576460 00000 n +0011576513 00000 n +0011576566 00000 n +0011576619 00000 n +0011576672 00000 n +0011576725 00000 n +0011576778 00000 n +0011576831 00000 n +0011576884 00000 n +0011576937 00000 n +0011576990 00000 n +0011577043 00000 n +0011577096 00000 n +0011577149 00000 n +0011577202 00000 n +0011577255 00000 n +0011577308 00000 n +0011577361 00000 n +0011577414 00000 n +0011577467 00000 n +0011577520 00000 n +0011577573 00000 n +0011577626 00000 n +0011577679 00000 n +0011577732 00000 n +0011577785 00000 n +0011577838 00000 n +0011577891 00000 n +0011577943 00000 n +0011577996 00000 n +0011578049 00000 n +0011578102 00000 n +0011578154 00000 n +0011578207 00000 n +0011578260 00000 n +0011578313 00000 n +0011578366 00000 n +0011578419 00000 n +0011578472 00000 n +0011578525 00000 n +0011578578 00000 n +0011578631 00000 n +0011578684 00000 n +0011578737 00000 n +0011578790 00000 n +0011578843 00000 n +0011578896 00000 n +0011578949 00000 n +0011579002 00000 n +0011579055 00000 n +0011579108 00000 n +0011579161 00000 n +0011579214 00000 n +0011579267 00000 n +0011579320 00000 n +0011579373 00000 n +0011579426 00000 n +0011579479 00000 n +0011579532 00000 n +0011579585 00000 n +0011579638 00000 n +0011579691 00000 n +0011579744 00000 n +0011579797 00000 n +0011579850 00000 n +0011579903 00000 n +0011579956 00000 n +0011580009 00000 n +0011580062 00000 n +0011580115 00000 n +0011580168 00000 n +0011580221 00000 n +0011580274 00000 n +0011580327 00000 n +0011580380 00000 n +0011580433 00000 n +0011580486 00000 n +0011580539 00000 n +0011580592 00000 n +0011580645 00000 n +0011580698 00000 n +0011580751 00000 n +0011580804 00000 n +0011580857 00000 n +0011580910 00000 n +0011580963 00000 n +0011581016 00000 n +0011581069 00000 n +0011581122 00000 n +0011581175 00000 n +0011581228 00000 n +0011581281 00000 n +0011581334 00000 n +0011581387 00000 n +0011581440 00000 n +0011581493 00000 n +0011581546 00000 n +0011581599 00000 n +0011581652 00000 n +0011581705 00000 n +0011581758 00000 n +0011581811 00000 n +0011581864 00000 n +0011581917 00000 n +0011581970 00000 n +0011582023 00000 n +0011582076 00000 n +0011582129 00000 n +0011582182 00000 n +0011582235 00000 n +0011582288 00000 n +0011582341 00000 n +0011582394 00000 n +0011582447 00000 n +0011582500 00000 n +0011582553 00000 n +0011582606 00000 n +0011582659 00000 n +0011582712 00000 n +0011582765 00000 n +0011582818 00000 n +0011582871 00000 n +0011582924 00000 n +0011582977 00000 n +0011583030 00000 n +0011583082 00000 n +0011583135 00000 n +0011583188 00000 n +0011583241 00000 n +0011583294 00000 n +0011583347 00000 n +0011583400 00000 n +0011583453 00000 n +0011583506 00000 n +0011583559 00000 n +0011583612 00000 n +0011583665 00000 n +0011583718 00000 n +0011583771 00000 n +0011583824 00000 n +0011583877 00000 n +0011583930 00000 n +0011583983 00000 n +0011584036 00000 n +0011584089 00000 n +0011584142 00000 n +0011584195 00000 n +0011584248 00000 n +0011584301 00000 n +0011584354 00000 n +0011584407 00000 n +0011584460 00000 n +0011584513 00000 n +0011584566 00000 n +0011584619 00000 n +0011584672 00000 n +0011584725 00000 n +0011584778 00000 n +0011584831 00000 n +0011584884 00000 n +0011584937 00000 n +0011584990 00000 n +0011585043 00000 n +0011585096 00000 n +0011585149 00000 n +0011585201 00000 n +0011585254 00000 n +0011585306 00000 n +0011585359 00000 n +0011585411 00000 n +0011585464 00000 n +0011585517 00000 n +0011585570 00000 n +0011585623 00000 n +0011585676 00000 n +0011585729 00000 n +0011585782 00000 n +0011585835 00000 n +0011585888 00000 n +0011585941 00000 n +0011585994 00000 n +0011586047 00000 n +0011586100 00000 n +0011586153 00000 n +0011586206 00000 n +0011586259 00000 n +0011586312 00000 n +0011586366 00000 n +0011586420 00000 n +0011586474 00000 n +0011586528 00000 n +0011586582 00000 n +0011586636 00000 n +0011586690 00000 n +0011586744 00000 n +0011586798 00000 n +0011586852 00000 n +0011586906 00000 n +0011586960 00000 n +0011587013 00000 n +0011587067 00000 n +0011587120 00000 n +0011587174 00000 n +0011587227 00000 n +0011587280 00000 n +0011587333 00000 n +0011587386 00000 n +0011587439 00000 n +0011587492 00000 n +0011587545 00000 n +0011587598 00000 n +0011587651 00000 n +0011587704 00000 n +0011587757 00000 n +0011587810 00000 n +0011587863 00000 n +0011587916 00000 n +0011587968 00000 n +0011588021 00000 n +0011588073 00000 n +0011588126 00000 n +0011588179 00000 n +0011588232 00000 n +0011588285 00000 n +0011588338 00000 n +0011588391 00000 n +0011588444 00000 n +0011588497 00000 n +0011588550 00000 n +0011588603 00000 n +0011588655 00000 n +0011588707 00000 n +0011588760 00000 n +0011588813 00000 n +0011588865 00000 n +0011588918 00000 n +0011588971 00000 n +0011589024 00000 n +0011589077 00000 n +0011589130 00000 n +0011589183 00000 n +0011589236 00000 n +0011589289 00000 n +0011589342 00000 n +0011589395 00000 n +0011589448 00000 n +0011589501 00000 n +0011589554 00000 n +0011589607 00000 n +0011589660 00000 n +0011589713 00000 n +0011589766 00000 n +0011589819 00000 n +0011589872 00000 n +0011589925 00000 n +0011589977 00000 n +0011590029 00000 n +0011590082 00000 n +0011590135 00000 n +0011590188 00000 n +0011590240 00000 n +0011590292 00000 n +0011590345 00000 n +0011590398 00000 n +0011590451 00000 n +0011590504 00000 n +0011590557 00000 n +0011590610 00000 n +0011590663 00000 n +0011590716 00000 n +0011590769 00000 n +0011590822 00000 n +0011590875 00000 n +0011590928 00000 n +0011590981 00000 n +0011591034 00000 n +0011591087 00000 n +0011591140 00000 n +0011591192 00000 n +0011591245 00000 n +0011591298 00000 n +0011591351 00000 n +0011591404 00000 n +0011591457 00000 n +0011591510 00000 n +0011591563 00000 n +0011591616 00000 n +0011591669 00000 n +0011591722 00000 n +0011591775 00000 n +0011591828 00000 n +0011591881 00000 n +0011591934 00000 n +0011591987 00000 n +0011592040 00000 n +0011592092 00000 n +0011592144 00000 n +0011592196 00000 n +0011592248 00000 n +0011592301 00000 n +0011592354 00000 n +0011592407 00000 n +0011592460 00000 n +0011592513 00000 n +0011592566 00000 n +0011592619 00000 n +0011592672 00000 n +0011592725 00000 n +0011592778 00000 n +0011592831 00000 n +0011592884 00000 n +0011592937 00000 n +0011592990 00000 n +0011593043 00000 n +0011593096 00000 n +0011593149 00000 n +0011593202 00000 n +0011593255 00000 n +0011593308 00000 n +0011593361 00000 n +0011593414 00000 n +0011593466 00000 n +0011593518 00000 n +0011593571 00000 n +0011593624 00000 n +0011593676 00000 n +0011593729 00000 n +0011593782 00000 n +0011593835 00000 n +0011593887 00000 n +0011593939 00000 n +0011593992 00000 n +0011594044 00000 n +0011594097 00000 n +0011594150 00000 n +0011594203 00000 n +0011594256 00000 n +0011594309 00000 n +0011594362 00000 n +0011594415 00000 n +0011594467 00000 n +0011594520 00000 n +0011594573 00000 n +0011594626 00000 n +0011594678 00000 n +0011594731 00000 n +0011594784 00000 n +0011594837 00000 n +0011594890 00000 n +0011594943 00000 n +0011594996 00000 n +0011595049 00000 n +0011595102 00000 n +0011595155 00000 n +0011595208 00000 n +0011595260 00000 n +0011595313 00000 n +0011595365 00000 n +0011595418 00000 n +0011595471 00000 n +0011595524 00000 n +0011595577 00000 n +0011595630 00000 n +0011595683 00000 n +0011595736 00000 n +0011595789 00000 n +0011595842 00000 n +0011595895 00000 n +0011595947 00000 n +0011595999 00000 n +0011596052 00000 n +0011596105 00000 n +0011596157 00000 n +0011596210 00000 n +0011596263 00000 n +0011596316 00000 n +0011596368 00000 n +0011596421 00000 n +0011596473 00000 n +0011596525 00000 n +0011596578 00000 n +0011596630 00000 n +0011596683 00000 n +0011596736 00000 n +0011596789 00000 n +0011596842 00000 n +0011596895 00000 n +0011596948 00000 n +0011597000 00000 n +0011597053 00000 n +0011597106 00000 n +0011597158 00000 n +0011597210 00000 n +0011597263 00000 n +0011597315 00000 n +0011597367 00000 n +0011597420 00000 n +0011597472 00000 n +0011597525 00000 n +0011597577 00000 n +0011597630 00000 n +0011597682 00000 n +0011597735 00000 n +0011597788 00000 n +0011597840 00000 n +0011597893 00000 n +0011597946 00000 n +0011597999 00000 n +0011598052 00000 n +0011598105 00000 n +0011598157 00000 n +0011598210 00000 n +0011598263 00000 n +0011598316 00000 n +0011598369 00000 n +0011598422 00000 n +0011598475 00000 n +0011598528 00000 n +0011598581 00000 n +0011598633 00000 n +0011598686 00000 n +0011598739 00000 n +0011598792 00000 n +0011598845 00000 n +0011598897 00000 n +0011598949 00000 n +0011599002 00000 n +0011599055 00000 n +0011599108 00000 n +0011599160 00000 n +0011599213 00000 n +0011599266 00000 n +0011599319 00000 n +0011599372 00000 n +0011599425 00000 n +0011599478 00000 n +0011599531 00000 n +0011599584 00000 n +0011599636 00000 n +0011599688 00000 n +0011599741 00000 n +0011599793 00000 n +0011599845 00000 n +0011599898 00000 n +0011599951 00000 n +0011600003 00000 n +0011600056 00000 n +0011600109 00000 n +0011600162 00000 n +0011600215 00000 n +0011600267 00000 n +0011600320 00000 n +0011600373 00000 n +0011600426 00000 n +0011600479 00000 n +0011600532 00000 n +0011600584 00000 n +0011600636 00000 n +0011600689 00000 n +0011600742 00000 n +0011600795 00000 n +0011600848 00000 n +0011600901 00000 n +0011600954 00000 n +0011601007 00000 n +0011601060 00000 n +0011601112 00000 n +0011601165 00000 n +0011601217 00000 n +0011601270 00000 n +0011601323 00000 n +0011601375 00000 n +0011601428 00000 n +0011601481 00000 n +0011601534 00000 n +0011601587 00000 n +0011601640 00000 n +0011601692 00000 n +0011601744 00000 n +0011601797 00000 n +0011601850 00000 n +0011601902 00000 n +0011601954 00000 n +0011602007 00000 n +0011602060 00000 n +0011602113 00000 n +0011602166 00000 n +0011602219 00000 n +0011602272 00000 n +0011602325 00000 n +0011602378 00000 n +0011602431 00000 n +0011602484 00000 n +0011602537 00000 n +0011602589 00000 n +0011602642 00000 n +0011602695 00000 n +0011602748 00000 n +0011602801 00000 n +0011602854 00000 n +0011602907 00000 n +0011602960 00000 n +0011603012 00000 n +0011603064 00000 n +0011603117 00000 n +0011603170 00000 n +0011603223 00000 n +0011603276 00000 n +0011603329 00000 n +0011603382 00000 n +0011603434 00000 n +0011603487 00000 n +0011603540 00000 n +0011603592 00000 n +0011603644 00000 n +0011603695 00000 n +0011603747 00000 n +0011603798 00000 n +0011603850 00000 n +0011603902 00000 n +0011603954 00000 n +0011604007 00000 n +0011604059 00000 n +0011604112 00000 n +0011604165 00000 n +0011604218 00000 n +0011604271 00000 n +0011604324 00000 n +0011604376 00000 n +0011604429 00000 n +0011604482 00000 n +0011604535 00000 n +0011604588 00000 n +0011604641 00000 n +0011604693 00000 n +0011604746 00000 n +0011604799 00000 n +0011604852 00000 n +0011604905 00000 n +0011604958 00000 n +0011605011 00000 n +0011605064 00000 n +0011605117 00000 n +0011605170 00000 n +0011605223 00000 n +0011605276 00000 n +0011605328 00000 n +0011605381 00000 n +0011605433 00000 n +0011605486 00000 n +0011605539 00000 n +0011605592 00000 n +0011605645 00000 n +0011605698 00000 n +0011605751 00000 n +0011605804 00000 n +0011605856 00000 n +0011605908 00000 n +0011605961 00000 n +0011606013 00000 n +0011606066 00000 n +0011606119 00000 n +0011606172 00000 n +0011606225 00000 n +0011606278 00000 n +0011606330 00000 n +0011606382 00000 n +0011606435 00000 n +0011606487 00000 n +0011606539 00000 n +0011606591 00000 n +0011606643 00000 n +0011606696 00000 n +0011606748 00000 n +0011606801 00000 n +0011606854 00000 n +0011606906 00000 n +0011606958 00000 n +0011607010 00000 n +0011607063 00000 n +0011607115 00000 n +0011607167 00000 n +0011607220 00000 n +0011607272 00000 n +0011607325 00000 n +0011607377 00000 n +0011607429 00000 n +0011607482 00000 n +0011607534 00000 n +0011607586 00000 n +0011607638 00000 n +0011607690 00000 n +0011607742 00000 n +0011607794 00000 n +0011607846 00000 n +0011607899 00000 n +0011607951 00000 n +0011608003 00000 n +0011608056 00000 n +0011608109 00000 n +0011608162 00000 n +0011608215 00000 n +0011608268 00000 n +0011608320 00000 n +0011608373 00000 n +0011608426 00000 n +0011608478 00000 n +0011608530 00000 n +0011608582 00000 n +0011608634 00000 n +0011608686 00000 n +0011608739 00000 n +0011608792 00000 n +0011608845 00000 n +0011608898 00000 n +0011608950 00000 n +0011609002 00000 n +0011609054 00000 n +0011609107 00000 n +0011609159 00000 n +0011609212 00000 n +0011609265 00000 n +0011609318 00000 n +0011609370 00000 n +0011609423 00000 n +0011609476 00000 n +0011609529 00000 n +0011609582 00000 n +0011609635 00000 n +0011609688 00000 n +0011609741 00000 n +0011609794 00000 n +0011609846 00000 n +0011609899 00000 n +0011609952 00000 n +0011610005 00000 n +0011610058 00000 n +0011610111 00000 n +0011610164 00000 n +0011610217 00000 n +0011610269 00000 n +0011610322 00000 n +0011610375 00000 n +0011610428 00000 n +0011610481 00000 n +0011610534 00000 n +0011610586 00000 n +0011610639 00000 n +0011610692 00000 n +0011610745 00000 n +0011610798 00000 n +0011610851 00000 n +0011610904 00000 n +0011610957 00000 n +0011611010 00000 n +0011611063 00000 n +0011611116 00000 n +0011611169 00000 n +0011611222 00000 n +0011611275 00000 n +0011611327 00000 n +0011611380 00000 n +0011611433 00000 n +0011611486 00000 n +0011611537 00000 n +0011611589 00000 n +0011611640 00000 n +0011611692 00000 n +0011611744 00000 n +0011611796 00000 n +0011611849 00000 n +0011611902 00000 n +0011611954 00000 n +0011612006 00000 n +0011612058 00000 n +0011612109 00000 n +0011612161 00000 n +0011612212 00000 n +0011612264 00000 n +0011612316 00000 n +0011612368 00000 n +0011612420 00000 n +0011612472 00000 n +0011612524 00000 n +0011612576 00000 n +0011612629 00000 n +0011612681 00000 n +0011612733 00000 n +0011612785 00000 n +0011612838 00000 n +0011612891 00000 n +0011612944 00000 n +0011612997 00000 n +0011613050 00000 n +0011613102 00000 n +0011613154 00000 n +0011613206 00000 n +0011613257 00000 n +0011613309 00000 n +0011613360 00000 n +0011613412 00000 n +0011613464 00000 n +0011613516 00000 n +0011613569 00000 n +0011613621 00000 n +0011613673 00000 n +0011613725 00000 n +0011613777 00000 n +0011613828 00000 n +0011613880 00000 n +0011613933 00000 n +0011613985 00000 n +0011614037 00000 n +0011614088 00000 n +0011614140 00000 n +0011614191 00000 n +0011614243 00000 n +0011614295 00000 n +0011614347 00000 n +0011614400 00000 n +0011614453 00000 n +0011614506 00000 n +0011614558 00000 n +0011614611 00000 n +0011614664 00000 n +0011614716 00000 n +0011614769 00000 n +0011614822 00000 n +0011614875 00000 n +0011614928 00000 n +0011614981 00000 n +0011615034 00000 n +0011615087 00000 n +0011615140 00000 n +0011615193 00000 n +0011615246 00000 n +0011615299 00000 n +0011615352 00000 n +0011615405 00000 n +0011615458 00000 n +0011615511 00000 n +0011615564 00000 n +0011615617 00000 n +0011615670 00000 n +0011615723 00000 n +0011615776 00000 n +0011615829 00000 n +0011615882 00000 n +0011615935 00000 n +0011615988 00000 n +0011616041 00000 n +0011616094 00000 n +0011616147 00000 n +0011616200 00000 n +0011616253 00000 n +0011616306 00000 n +0011616359 00000 n +0011616412 00000 n +0011616465 00000 n +0011616517 00000 n +0011616569 00000 n +0011616621 00000 n +0011616673 00000 n +0011616725 00000 n +0011616777 00000 n +0011616829 00000 n +0011616881 00000 n +0011616933 00000 n +0011616985 00000 n +0011617037 00000 n +0011617089 00000 n +0011617141 00000 n +0011617193 00000 n +0011617245 00000 n +0011617297 00000 n +0011617349 00000 n +0011617401 00000 n +0011617453 00000 n +0011617505 00000 n +0011617557 00000 n +0011617609 00000 n +0011617661 00000 n +0011617713 00000 n +0011617765 00000 n +0011617817 00000 n +0011617868 00000 n +0011617920 00000 n +0011617972 00000 n +0011618024 00000 n +0011618076 00000 n +0011618128 00000 n +0011618180 00000 n +0011618232 00000 n +0011618284 00000 n +0011618336 00000 n +0011618388 00000 n +0011618440 00000 n +0011618492 00000 n +0011618544 00000 n +0011618596 00000 n +0011618648 00000 n +0011618700 00000 n +0011618752 00000 n +0011618804 00000 n +0011618856 00000 n +0011618908 00000 n +0011618960 00000 n +0011619012 00000 n +0011619064 00000 n +0011619116 00000 n +0011619168 00000 n +0011619220 00000 n +0011619272 00000 n +0011619324 00000 n +0011619376 00000 n +0011619428 00000 n +0011619480 00000 n +0011619532 00000 n +0011619584 00000 n +0011619636 00000 n +0011619688 00000 n +0011619740 00000 n +0011619792 00000 n +0011619844 00000 n +0011619896 00000 n +0011619948 00000 n +0011620000 00000 n +0011620052 00000 n +0011620104 00000 n +0011620156 00000 n +0011620208 00000 n +0011620260 00000 n +0011620312 00000 n +0011620364 00000 n +0011620416 00000 n +0011620468 00000 n +0011620520 00000 n +0011620573 00000 n +0011620626 00000 n +0011620679 00000 n +0011620732 00000 n +0011620785 00000 n +0011620838 00000 n +0011620891 00000 n +0011620944 00000 n +0011620997 00000 n +0011621050 00000 n +0011621103 00000 n +0011621156 00000 n +0011621209 00000 n +0011621262 00000 n +0011621315 00000 n +0011621368 00000 n +0011621421 00000 n +0011621474 00000 n +0011621527 00000 n +0011621579 00000 n +0011621631 00000 n +0011621683 00000 n +0011621735 00000 n +0011621787 00000 n +0011621839 00000 n +0011621891 00000 n +0011621943 00000 n +0011621995 00000 n +0011622048 00000 n +0011622101 00000 n +0011622154 00000 n +0011622207 00000 n +0011622260 00000 n +0011622313 00000 n +0011622366 00000 n +0011622419 00000 n +0011622472 00000 n +0011622525 00000 n +0011622578 00000 n +0011622631 00000 n +0011622684 00000 n +0011622737 00000 n +0011622790 00000 n +0011622843 00000 n +0011622896 00000 n +0011622949 00000 n +0011623002 00000 n +0011623055 00000 n +0011623108 00000 n +0011623161 00000 n +0011623214 00000 n +0011623267 00000 n +0011623320 00000 n +0011623373 00000 n +0011623426 00000 n +0011623479 00000 n +0011623532 00000 n +0011623585 00000 n +0011623638 00000 n +0011623691 00000 n +0011623744 00000 n +0011623797 00000 n +0011623850 00000 n +0011623903 00000 n +0011623956 00000 n +0011624009 00000 n +0011624062 00000 n +0011624115 00000 n +0011624168 00000 n +0011624221 00000 n +0011624274 00000 n +0011624327 00000 n +0011624380 00000 n +0011624433 00000 n +0011624486 00000 n +0011624539 00000 n +0011624592 00000 n +0011624645 00000 n +0011624697 00000 n +0011624749 00000 n +0011624801 00000 n +0011624853 00000 n +0011624905 00000 n +0011624958 00000 n +0011625011 00000 n +0011625064 00000 n +0011625117 00000 n +0011625170 00000 n +0011625223 00000 n +0011625276 00000 n +0011625329 00000 n +0011625382 00000 n +0011625435 00000 n +0011625488 00000 n +0011625541 00000 n +0011625594 00000 n +0011625647 00000 n +0011625700 00000 n +0011625753 00000 n +0011625806 00000 n +0011625859 00000 n +0011625912 00000 n +0011625965 00000 n +0011626018 00000 n +0011626071 00000 n +0011626124 00000 n +0011626177 00000 n +0011626229 00000 n +0011626281 00000 n +0011626333 00000 n +0011626385 00000 n +0011626437 00000 n +0011626489 00000 n +0011626541 00000 n +0011626593 00000 n +0011626645 00000 n +0011626697 00000 n +0011626749 00000 n +0011626801 00000 n +0011626853 00000 n +0011626905 00000 n +0011626957 00000 n +0011627009 00000 n +0011627061 00000 n +0011627113 00000 n +0011627165 00000 n +0011627217 00000 n +0011627269 00000 n +0011627321 00000 n +0011627373 00000 n +0011627425 00000 n +0011627477 00000 n +0011627529 00000 n +0011627581 00000 n +0011627633 00000 n +0011627685 00000 n +0011627737 00000 n +0011627789 00000 n +0011627841 00000 n +0011627893 00000 n +0011627945 00000 n +0011627997 00000 n +0011628049 00000 n +0011628101 00000 n +0011628153 00000 n +0011628205 00000 n +0011628257 00000 n +0011628309 00000 n +0011628361 00000 n +0011628413 00000 n +0011628465 00000 n +0011628517 00000 n +0011628569 00000 n +0011628621 00000 n +0011628673 00000 n +0011628725 00000 n +0011628777 00000 n +0011628829 00000 n +0011628881 00000 n +0011628933 00000 n +0011628985 00000 n +0011629037 00000 n +0011629089 00000 n +0011629141 00000 n +0011629193 00000 n +0011629245 00000 n +0011629297 00000 n +0011629349 00000 n +0011629401 00000 n +0011629453 00000 n +0011629505 00000 n +0011629557 00000 n +0011629609 00000 n +0011629661 00000 n +0011629713 00000 n +0011629765 00000 n +0011629817 00000 n +0011629869 00000 n +0011629921 00000 n +0011629973 00000 n +0011630025 00000 n +0011630077 00000 n +0011630129 00000 n +0011630181 00000 n +0011630233 00000 n +0011630285 00000 n +0011630337 00000 n +0011630389 00000 n +0011630441 00000 n +0011630493 00000 n +0011630545 00000 n +0011630597 00000 n +0011630650 00000 n +0011630703 00000 n +0011630756 00000 n +0011630809 00000 n +0011630862 00000 n +0011630915 00000 n +0011630968 00000 n +0011631021 00000 n +0011631074 00000 n +0011631127 00000 n +0011631180 00000 n +0011631233 00000 n +0011631286 00000 n +0011631339 00000 n +0011631392 00000 n +0011631445 00000 n +0011631498 00000 n +0011631551 00000 n +0011631604 00000 n +0011631657 00000 n +0011631710 00000 n +0011631763 00000 n +0011631816 00000 n +0011631869 00000 n +0011631922 00000 n +0011631975 00000 n +0011632028 00000 n +0011632081 00000 n +0011632134 00000 n +0011632186 00000 n +0011632238 00000 n +0011632290 00000 n +0011632342 00000 n +0011632395 00000 n +0011632448 00000 n +0011632501 00000 n +0011632554 00000 n +0011632607 00000 n +0011632660 00000 n +0011632713 00000 n +0011632766 00000 n +0011632819 00000 n +0011632871 00000 n +0011632924 00000 n +0011632977 00000 n +0011633029 00000 n +0011633081 00000 n +0011633134 00000 n +0011633186 00000 n +0011633239 00000 n +0011633292 00000 n +0011633345 00000 n +0011633397 00000 n +0011633449 00000 n +0011633501 00000 n +0011633554 00000 n +0011633606 00000 n +0011633658 00000 n +0011633709 00000 n +0011633761 00000 n +0011633812 00000 n +0011633864 00000 n +0011633916 00000 n +0011633968 00000 n +0011634021 00000 n +0011634073 00000 n +0011634126 00000 n +0011634179 00000 n +0011634232 00000 n +0011634285 00000 n +0011634338 00000 n +0011634390 00000 n +0011634443 00000 n +0011634495 00000 n +0011634547 00000 n +0011634598 00000 n +0011634650 00000 n +0011634701 00000 n +0011634753 00000 n +0011634805 00000 n +0011634857 00000 n +0011634909 00000 n +0011634961 00000 n +0011635013 00000 n +0011635065 00000 n +0011635117 00000 n +0011635169 00000 n +0011635222 00000 n +0011635274 00000 n +0011635327 00000 n +0011635380 00000 n +0011635433 00000 n +0011635485 00000 n +0011635537 00000 n +0011635589 00000 n +0011635641 00000 n +0011635694 00000 n +0011635746 00000 n +0011635799 00000 n +0011635851 00000 n +0011635904 00000 n +0011635956 00000 n +0011636008 00000 n +0011636060 00000 n +0011636112 00000 n +0011636164 00000 n +0011636216 00000 n +0011636268 00000 n +0011636320 00000 n +0011636372 00000 n +0011636425 00000 n +0011636478 00000 n +0011636531 00000 n +0011636583 00000 n +0011636635 00000 n +0011636687 00000 n +0011636740 00000 n +0011636793 00000 n +0011636846 00000 n +0011636899 00000 n +0011636952 00000 n +0011637005 00000 n +0011637058 00000 n +0011637111 00000 n +0011637164 00000 n +0011637216 00000 n +0011637269 00000 n +0011637322 00000 n +0011637374 00000 n +0011637427 00000 n +0011637480 00000 n +0011637532 00000 n +0011637584 00000 n +0011637636 00000 n +0011637687 00000 n +0011637739 00000 n +0011637790 00000 n +0011637842 00000 n +0011637894 00000 n +0011637946 00000 n +0011637998 00000 n +0011638051 00000 n +0011638104 00000 n +0011638157 00000 n +0011638210 00000 n +0011638263 00000 n +0011638316 00000 n +0011638369 00000 n +0011638422 00000 n +0011638474 00000 n +0011638527 00000 n +0011638580 00000 n +0011638632 00000 n +0011638685 00000 n +0011638738 00000 n +0011638791 00000 n +0011638844 00000 n +0011638897 00000 n +0011638950 00000 n +0011639003 00000 n +0011639056 00000 n +0011639109 00000 n +0011639162 00000 n +0011639215 00000 n +0011639268 00000 n +0011639321 00000 n +0011639374 00000 n +0011639427 00000 n +0011639480 00000 n +0011639533 00000 n +0011639586 00000 n +0011639639 00000 n +0011639692 00000 n +0011639745 00000 n +0011639798 00000 n +0011639851 00000 n +0011639904 00000 n +0011639957 00000 n +0011640010 00000 n +0011640063 00000 n +0011640116 00000 n +0011640169 00000 n +0011640222 00000 n +0011640275 00000 n +0011640328 00000 n +0011640381 00000 n +0011640434 00000 n +0011640487 00000 n +0011640540 00000 n +0011640593 00000 n +0011640646 00000 n +0011640699 00000 n +0011640752 00000 n +0011640805 00000 n +0011640858 00000 n +0011640911 00000 n +0011640964 00000 n +0011641017 00000 n +0011641070 00000 n +0011641123 00000 n +0011641176 00000 n +0011641229 00000 n +0011641282 00000 n +0011641334 00000 n +0011641386 00000 n +0011641439 00000 n +0011641491 00000 n +0011641543 00000 n +0011641595 00000 n +0011641648 00000 n +0011641700 00000 n +0011641752 00000 n +0011641805 00000 n +0011641858 00000 n +0011641911 00000 n +0011641964 00000 n +0011642017 00000 n +0011642070 00000 n +0011642123 00000 n +0011642176 00000 n +0011642229 00000 n +0011642282 00000 n +0011642335 00000 n +0011642388 00000 n +0011642441 00000 n +0011642493 00000 n +0011642546 00000 n +0011642599 00000 n +0011642651 00000 n +0011642703 00000 n +0011642756 00000 n +0011642809 00000 n +0011642862 00000 n +0011642915 00000 n +0011642968 00000 n +0011643021 00000 n +0011643074 00000 n +0011643126 00000 n +0011643178 00000 n +0011643230 00000 n +0011643283 00000 n +0011643336 00000 n +0011643388 00000 n +0011643441 00000 n +0011643494 00000 n +0011643546 00000 n +0011643599 00000 n +0011643652 00000 n +0011643705 00000 n +0011643758 00000 n +0011643811 00000 n +0011643864 00000 n +0011643917 00000 n +0011643970 00000 n +0011644023 00000 n +0011644076 00000 n +0011644128 00000 n +0011644181 00000 n +0011644234 00000 n +0011644286 00000 n +0011644339 00000 n +0011644392 00000 n +0011644445 00000 n +0011644498 00000 n +0011644551 00000 n +0011644604 00000 n +0011644657 00000 n +0011644710 00000 n +0011644763 00000 n +0011644816 00000 n +0011644869 00000 n +0011644922 00000 n +0011644975 00000 n +0011645028 00000 n +0011645081 00000 n +0011645134 00000 n +0011645187 00000 n +0011645240 00000 n +0011645293 00000 n +0011645346 00000 n +0011645399 00000 n +0011645452 00000 n +0011645504 00000 n +0011645557 00000 n +0011645610 00000 n +0011645663 00000 n +0011645715 00000 n +0011645768 00000 n +0011645821 00000 n +0011645874 00000 n +0011645927 00000 n +0011645980 00000 n +0011646033 00000 n +0011646086 00000 n +0011646138 00000 n +0011646191 00000 n +0011646243 00000 n +0011646295 00000 n +0011646346 00000 n +0011646398 00000 n +0011646449 00000 n +0011646501 00000 n +0011646553 00000 n +0011646605 00000 n +0011646658 00000 n +0011646710 00000 n +0011646762 00000 n +0011646815 00000 n +0011646867 00000 n +0011646920 00000 n +0011646973 00000 n +0011647025 00000 n +0011647078 00000 n +0011647131 00000 n +0011647183 00000 n +0011647236 00000 n +0011647289 00000 n +0011647342 00000 n +0011647395 00000 n +0011647448 00000 n +0011647501 00000 n +0011647553 00000 n +0011647606 00000 n +0011647659 00000 n +0011647712 00000 n +0011647765 00000 n +0011647818 00000 n +0011647871 00000 n +0011647924 00000 n +0011647976 00000 n +0011648029 00000 n +0011648082 00000 n +0011648134 00000 n +0011648187 00000 n +0011648240 00000 n +0011648293 00000 n +0011648346 00000 n +0011648399 00000 n +0011648452 00000 n +0011648504 00000 n +0011648556 00000 n +0011648608 00000 n +0011648661 00000 n +0011648713 00000 n +0011648766 00000 n +0011648818 00000 n +0011648871 00000 n +0011648923 00000 n +0011648976 00000 n +0011649029 00000 n +0011649082 00000 n +0011649135 00000 n +0011649188 00000 n +0011649240 00000 n +0011649293 00000 n +0011649346 00000 n +0011649399 00000 n +0011649451 00000 n +0011649503 00000 n +0011649555 00000 n +0011649607 00000 n +0011649660 00000 n +0011649713 00000 n +0011649766 00000 n +0011649819 00000 n +0011649872 00000 n +0011649925 00000 n +0011649977 00000 n +0011650029 00000 n +0011650080 00000 n +0011650132 00000 n +0011650183 00000 n +0011650235 00000 n +0011650287 00000 n +0011650339 00000 n +0011650391 00000 n +0011650443 00000 n +0011650495 00000 n +0011650548 00000 n +0011650601 00000 n +0011650654 00000 n +0011650706 00000 n +0011650759 00000 n +0011650812 00000 n +0011650865 00000 n +0011650918 00000 n +0011650971 00000 n +0011651024 00000 n +0011651077 00000 n +0011651129 00000 n +0011651181 00000 n +0011651233 00000 n +0011651286 00000 n +0011651339 00000 n +0011651392 00000 n +0011651445 00000 n +0011651498 00000 n +0011651551 00000 n +0011651604 00000 n +0011651657 00000 n +0011651710 00000 n +0011651763 00000 n +0011651815 00000 n +0011651868 00000 n +0011651921 00000 n +0011651974 00000 n +0011652027 00000 n +0011652080 00000 n +0011652133 00000 n +0011652186 00000 n +0011652239 00000 n +0011652292 00000 n +0011652345 00000 n +0011652397 00000 n +0011652450 00000 n +0011652503 00000 n +0011652556 00000 n +0011652609 00000 n +0011652662 00000 n +0011652715 00000 n +0011652768 00000 n +0011652821 00000 n +0011652873 00000 n +0011652926 00000 n +0011652979 00000 n +0011653032 00000 n +0011653085 00000 n +0011653138 00000 n +0011653191 00000 n +0011653244 00000 n +0011653297 00000 n +0011653349 00000 n +0011653401 00000 n +0011653453 00000 n +0011653505 00000 n +0011653557 00000 n +0011653609 00000 n +0011653661 00000 n +0011653714 00000 n +0011653767 00000 n +0011653820 00000 n +0011653873 00000 n +0011653926 00000 n +0011653979 00000 n +0011654032 00000 n +0011654085 00000 n +0011654138 00000 n +0011654191 00000 n +0011654244 00000 n +0011654297 00000 n +0011654350 00000 n +0011654403 00000 n +0011654456 00000 n +0011654509 00000 n +0011654562 00000 n +0011654615 00000 n +0011654667 00000 n +0011654720 00000 n +0011654772 00000 n +0011654825 00000 n +0011654878 00000 n +0011654931 00000 n +0011654984 00000 n +0011655036 00000 n +0011655088 00000 n +0011655141 00000 n +0011655193 00000 n +0011655246 00000 n +0011655298 00000 n +0011655351 00000 n +0011655403 00000 n +0011655456 00000 n +0011655508 00000 n +0011655561 00000 n +0011655614 00000 n +0011655667 00000 n +0011655720 00000 n +0011655772 00000 n +0011655825 00000 n +0011655878 00000 n +0011655931 00000 n +0011655984 00000 n +0011656037 00000 n +0011656089 00000 n +0011656141 00000 n +0011656193 00000 n +0011656246 00000 n +0011656298 00000 n +0011656350 00000 n +0011656403 00000 n +0011656456 00000 n +0011656509 00000 n +0011656562 00000 n +0011656615 00000 n +0011656668 00000 n +0011656721 00000 n +0011656773 00000 n +0011656825 00000 n +0011656877 00000 n +0011656929 00000 n +0011656981 00000 n +0011657034 00000 n +0011657086 00000 n +0011657138 00000 n +0011657191 00000 n +0011657244 00000 n +0011657296 00000 n +0011657349 00000 n +0011657402 00000 n +0011657455 00000 n +0011657508 00000 n +0011657560 00000 n +0011657612 00000 n +0011657665 00000 n +0011657718 00000 n +0011657770 00000 n +0011657823 00000 n +0011657876 00000 n +0011657929 00000 n +0011657982 00000 n +0011658035 00000 n +0011658088 00000 n +0011658141 00000 n +0011658194 00000 n +0011658247 00000 n +0011658300 00000 n +0011658353 00000 n +0011658406 00000 n +0011658459 00000 n +0011658512 00000 n +0011658565 00000 n +0011658618 00000 n +0011658671 00000 n +0011658724 00000 n +0011658777 00000 n +0011658830 00000 n +0011658883 00000 n +0011658935 00000 n +0011658987 00000 n +0011659040 00000 n +0011659093 00000 n +0011659146 00000 n +0011659199 00000 n +0011659252 00000 n +0011659305 00000 n +0011659358 00000 n +0011659410 00000 n +0011659463 00000 n +0011659516 00000 n +0011659569 00000 n +0011659622 00000 n +0011659675 00000 n +0011659727 00000 n +0011659779 00000 n +0011659831 00000 n +0011659884 00000 n +0011659936 00000 n +0011659989 00000 n +0011660042 00000 n +0011660094 00000 n +0011660147 00000 n +0011660200 00000 n +0011660253 00000 n +0011660306 00000 n +0011660359 00000 n +0011660412 00000 n +0011660465 00000 n +0011660518 00000 n +0011660570 00000 n +0011660622 00000 n +0011660675 00000 n +0011660727 00000 n +0011660780 00000 n +0011660833 00000 n +0011660885 00000 n +0011660938 00000 n +0011660991 00000 n +0011661044 00000 n +0011661097 00000 n +0011661150 00000 n +0011661202 00000 n +0011661254 00000 n +0011661306 00000 n +0011661359 00000 n +0011661412 00000 n +0011661465 00000 n +0011661518 00000 n +0011661571 00000 n +0011661624 00000 n +0011661677 00000 n +0011661730 00000 n +0011661783 00000 n +0011661835 00000 n +0011661888 00000 n +0011661940 00000 n +0011661993 00000 n +0011662046 00000 n +0011662099 00000 n +0011662152 00000 n +0011662205 00000 n +0011662258 00000 n +0011662311 00000 n +0011662364 00000 n +0011662417 00000 n +0011662470 00000 n +0011662523 00000 n +0011662576 00000 n +0011662628 00000 n +0011662681 00000 n +0011662734 00000 n +0011662787 00000 n +0011662840 00000 n +0011662893 00000 n +0011662946 00000 n +0011662999 00000 n +0011663052 00000 n +0011663105 00000 n +0011663158 00000 n +0011663211 00000 n +0011663264 00000 n +0011663317 00000 n +0011663370 00000 n +0011663423 00000 n +0011663476 00000 n +0011663529 00000 n +0011663582 00000 n +0011663635 00000 n +0011663688 00000 n +0011663741 00000 n +0011663794 00000 n +0011663847 00000 n +0011663900 00000 n +0011663953 00000 n +0011664006 00000 n +0011664059 00000 n +0011664112 00000 n +0011664165 00000 n +0011664218 00000 n +0011664270 00000 n +0011664323 00000 n +0011664375 00000 n +0011664428 00000 n +0011664481 00000 n +0011664534 00000 n +0011664587 00000 n +0011664640 00000 n +0011664693 00000 n +0011664746 00000 n +0011664799 00000 n +0011664852 00000 n +0011664905 00000 n +0011664958 00000 n +0011665011 00000 n +0011665064 00000 n +0011665117 00000 n +0011665170 00000 n +0011665223 00000 n +0011665276 00000 n +0011665329 00000 n +0011665382 00000 n +0011665435 00000 n +0011665488 00000 n +0011665541 00000 n +0011665594 00000 n +0011665647 00000 n +0011665700 00000 n +0011665753 00000 n +0011665806 00000 n +0011665859 00000 n +0011665912 00000 n +0011665965 00000 n +0011666018 00000 n +0011666071 00000 n +0011666124 00000 n +0011666177 00000 n +0011666230 00000 n +0011666283 00000 n +0011666336 00000 n +0011666388 00000 n +0011666441 00000 n +0011666494 00000 n +0011666547 00000 n +0011666599 00000 n +0011666652 00000 n +0011666705 00000 n +0011666758 00000 n +0011666811 00000 n +0011666864 00000 n +0011666917 00000 n +0011666970 00000 n +0011667023 00000 n +0011667076 00000 n +0011667129 00000 n +0011667182 00000 n +0011667235 00000 n +0011667288 00000 n +0011667341 00000 n +0011667394 00000 n +0011667446 00000 n +0011667498 00000 n +0011667551 00000 n +0011667603 00000 n +0011667656 00000 n +0011667708 00000 n +0011667760 00000 n +0011667811 00000 n +0011667863 00000 n +0011667914 00000 n +0011667966 00000 n +0011668018 00000 n +0011668070 00000 n +0011668123 00000 n +0011668176 00000 n +0011668229 00000 n +0011668282 00000 n +0011668335 00000 n +0011668388 00000 n +0011668440 00000 n +0011668493 00000 n +0011668546 00000 n +0011668599 00000 n +0011668652 00000 n +0011668705 00000 n +0011668758 00000 n +0011668811 00000 n +0011668864 00000 n +0011668917 00000 n +0011668970 00000 n +0011669023 00000 n +0011669076 00000 n +0011669129 00000 n +0011669182 00000 n +0011669235 00000 n +0011669288 00000 n +0011669341 00000 n +0011669394 00000 n +0011669447 00000 n +0011669500 00000 n +0011669553 00000 n +0011669606 00000 n +0011669659 00000 n +0011669712 00000 n +0011669765 00000 n +0011669818 00000 n +0011669870 00000 n +0011669922 00000 n +0011669975 00000 n +0011670028 00000 n +0011670080 00000 n +0011670133 00000 n +0011670186 00000 n +0011670239 00000 n +0011670291 00000 n +0011670344 00000 n +0011670397 00000 n +0011670449 00000 n +0011670502 00000 n +0011670555 00000 n +0011670608 00000 n +0011670661 00000 n +0011670714 00000 n +0011670767 00000 n +0011670820 00000 n +0011670873 00000 n +0011670925 00000 n +0011670977 00000 n +0011671030 00000 n +0011671083 00000 n +0011671135 00000 n +0011671187 00000 n +0011671240 00000 n +0011671293 00000 n +0011671346 00000 n +0011671399 00000 n +0011671452 00000 n +0011671505 00000 n +0011671558 00000 n +0011671611 00000 n +0011671664 00000 n +0011671717 00000 n +0011671770 00000 n +0011671823 00000 n +0011671876 00000 n +0011671929 00000 n +0011671982 00000 n +0011672035 00000 n +0011672088 00000 n +0011672140 00000 n +0011672193 00000 n +0011672246 00000 n +0011672299 00000 n +0011672352 00000 n +0011672405 00000 n +0011672458 00000 n +0011672511 00000 n +0011672564 00000 n +0011672617 00000 n +0011672669 00000 n +0011672721 00000 n +0011672774 00000 n +0011672827 00000 n +0011672880 00000 n +0011672933 00000 n +0011672986 00000 n +0011673039 00000 n +0011673092 00000 n +0011673145 00000 n +0011673198 00000 n +0011673251 00000 n +0011673304 00000 n +0011673357 00000 n +0011673410 00000 n +0011673463 00000 n +0011673516 00000 n +0011673569 00000 n +0011673622 00000 n +0011673675 00000 n +0011673727 00000 n +0011673780 00000 n +0011673833 00000 n +0011673886 00000 n +0011673939 00000 n +0011673992 00000 n +0011674045 00000 n +0011674098 00000 n +0011674151 00000 n +0011674204 00000 n +0011674257 00000 n +0011674310 00000 n +0011674363 00000 n +0011674416 00000 n +0011674469 00000 n +0011674522 00000 n +0011674575 00000 n +0011674628 00000 n +0011674681 00000 n +0011674734 00000 n +0011674787 00000 n +0011674840 00000 n +0011674893 00000 n +0011674946 00000 n +0011674999 00000 n +0011675052 00000 n +0011675105 00000 n +0011675158 00000 n +0011675211 00000 n +0011675264 00000 n +0011675317 00000 n +0011675369 00000 n +0011675422 00000 n +0011675475 00000 n +0011675528 00000 n +0011675581 00000 n +0011675634 00000 n +0011675686 00000 n +0011675739 00000 n +0011675792 00000 n +0011675845 00000 n +0011675898 00000 n +0011675951 00000 n +0011676004 00000 n +0011676057 00000 n +0011676109 00000 n +0011676162 00000 n +0011676214 00000 n +0011676267 00000 n +0011676320 00000 n +0011676373 00000 n +0011676426 00000 n +0011676479 00000 n +0011676531 00000 n +0011676584 00000 n +0011676636 00000 n +0011676688 00000 n +0011676740 00000 n +0011676793 00000 n +0011676846 00000 n +0011676899 00000 n +0011676952 00000 n +0011677005 00000 n +0011677058 00000 n +0011677111 00000 n +0011677164 00000 n +0011677217 00000 n +0011677270 00000 n +0011677323 00000 n +0011677376 00000 n +0011677429 00000 n +0011677482 00000 n +0011677534 00000 n +0011677586 00000 n +0011677639 00000 n +0011677692 00000 n +0011677745 00000 n +0011677798 00000 n +0011677850 00000 n +0011677903 00000 n +0011677956 00000 n +0011678009 00000 n +0011678061 00000 n +0011678114 00000 n +0011678167 00000 n +0011678219 00000 n +0011678272 00000 n +0011678324 00000 n +0011678377 00000 n +0011678430 00000 n +0011678483 00000 n +0011678536 00000 n +0011678589 00000 n +0011678642 00000 n +0011678695 00000 n +0011678748 00000 n +0011678801 00000 n +0011678854 00000 n +0011678907 00000 n +0011678959 00000 n +0011679011 00000 n +0011679063 00000 n +0011679115 00000 n +0011679168 00000 n +0011679220 00000 n +0011679273 00000 n +0011679326 00000 n +0011679379 00000 n +0011679432 00000 n +0011679484 00000 n +0011679537 00000 n +0011679589 00000 n +0011679641 00000 n +0011679694 00000 n +0011679747 00000 n +0011679800 00000 n +0011679852 00000 n +0011679905 00000 n +0011679958 00000 n +0011680010 00000 n +0011680063 00000 n +0011680115 00000 n +0011680168 00000 n +0011680221 00000 n +0011680274 00000 n +0011680327 00000 n +0011680380 00000 n +0011680433 00000 n +0011680486 00000 n +0011680539 00000 n +0011680592 00000 n +0011680645 00000 n +0011680698 00000 n +0011680751 00000 n +0011680804 00000 n +0011680857 00000 n +0011680910 00000 n +0011680963 00000 n +0011681016 00000 n +0011681069 00000 n +0011681121 00000 n +0011681174 00000 n +0011681226 00000 n +0011681279 00000 n +0011681332 00000 n +0011681384 00000 n +0011681436 00000 n +0011681488 00000 n +0011681541 00000 n +0011681594 00000 n +0011681647 00000 n +0011681700 00000 n +0011681752 00000 n +0011681805 00000 n +0011681858 00000 n +0011681911 00000 n +0011681963 00000 n +0011682016 00000 n +0011682069 00000 n +0011682122 00000 n +0011682175 00000 n +0011682228 00000 n +0011682280 00000 n +0011682332 00000 n +0011682384 00000 n +0011682436 00000 n +0011682489 00000 n +0011682541 00000 n +0011682593 00000 n +0011682645 00000 n +0011682697 00000 n +0011682750 00000 n +0011682803 00000 n +0011682856 00000 n +0011682909 00000 n +0011682962 00000 n +0011683014 00000 n +0011683067 00000 n +0011683120 00000 n +0011683173 00000 n +0011683226 00000 n +0011683279 00000 n +0011683332 00000 n +0011683385 00000 n +0011683438 00000 n +0011683491 00000 n +0011683544 00000 n +0011683596 00000 n +0011683648 00000 n +0011683700 00000 n +0011683752 00000 n +0011683804 00000 n +0011683857 00000 n +0011683910 00000 n +0011683963 00000 n +0011684015 00000 n +0011684067 00000 n +0011684119 00000 n +0011684172 00000 n +0011684225 00000 n +0011684278 00000 n +0011684330 00000 n +0011684382 00000 n +0011684435 00000 n +0011684488 00000 n +0011684540 00000 n +0011684592 00000 n +0011684644 00000 n +0011684697 00000 n +0011684750 00000 n +0011684803 00000 n +0011684856 00000 n +0011684908 00000 n +0011684960 00000 n +0011685012 00000 n +0011685065 00000 n +0011685118 00000 n +0011685170 00000 n +0011685222 00000 n +0011685275 00000 n +0011685328 00000 n +0011685381 00000 n +0011685434 00000 n +0011685487 00000 n +0011685540 00000 n +0011685593 00000 n +0011685646 00000 n +0011685699 00000 n +0011685752 00000 n +0011685805 00000 n +0011685858 00000 n +0011685911 00000 n +0011685963 00000 n +0011686016 00000 n +0011686069 00000 n +0011686121 00000 n +0011686174 00000 n +0011686226 00000 n +0011686278 00000 n +0011686330 00000 n +0011686383 00000 n +0011686435 00000 n +0011686488 00000 n +0011686541 00000 n +0011686594 00000 n +0011686647 00000 n +0011686700 00000 n +0011686752 00000 n +0011686805 00000 n +0011686858 00000 n +0011686910 00000 n +0011686963 00000 n +0011687016 00000 n +0011687068 00000 n +0011687121 00000 n +0011687173 00000 n +0011687225 00000 n +0011687278 00000 n +0011687331 00000 n +0011687383 00000 n +0011687436 00000 n +0011687489 00000 n +0011687542 00000 n +0011687595 00000 n +0011687647 00000 n +0011687700 00000 n +0011687753 00000 n +0011687806 00000 n +0011687859 00000 n +0011687912 00000 n +0011687965 00000 n +0011688018 00000 n +0011688071 00000 n +0011688124 00000 n +0011688176 00000 n +0011688228 00000 n +0011688280 00000 n +0011688332 00000 n +0011688385 00000 n +0011688437 00000 n +0011688489 00000 n +0011688542 00000 n +0011688595 00000 n +0011688648 00000 n +0011688700 00000 n +0011688752 00000 n +0011688804 00000 n +0011688856 00000 n +0011688908 00000 n +0011688960 00000 n +0011689013 00000 n +0011689066 00000 n +0011689119 00000 n +0011689172 00000 n +0011689225 00000 n +0011689278 00000 n +0011689331 00000 n +0011689384 00000 n +0011689437 00000 n +0011689489 00000 n +0011689542 00000 n +0011689594 00000 n +0011689647 00000 n +0011689700 00000 n +0011689753 00000 n +0011689806 00000 n +0011689859 00000 n +0011689912 00000 n +0011689965 00000 n +0011690018 00000 n +0011690071 00000 n +0011690123 00000 n +0011690176 00000 n +0011690229 00000 n +0011690282 00000 n +0011690335 00000 n +0011690388 00000 n +0011690441 00000 n +0011690493 00000 n +0011690546 00000 n +0011690599 00000 n +0011690652 00000 n +0011690705 00000 n +0011690758 00000 n +0011690811 00000 n +0011690864 00000 n +0011690917 00000 n +0011690969 00000 n +0011691022 00000 n +0011691075 00000 n +0011691128 00000 n +0011691180 00000 n +0011691233 00000 n +0011691286 00000 n +0011691339 00000 n +0011691392 00000 n +0011691445 00000 n +0011691498 00000 n +0011691551 00000 n +0011691604 00000 n +0011691657 00000 n +0011691710 00000 n +0011691763 00000 n +0011691816 00000 n +0011691869 00000 n +0011691922 00000 n +0011691975 00000 n +0011692028 00000 n +0011692080 00000 n +0011692133 00000 n +0011692186 00000 n +0011692239 00000 n +0011692292 00000 n +0011692345 00000 n +0011692398 00000 n +0011692451 00000 n +0011692504 00000 n +0011692557 00000 n +0011692610 00000 n +0011692663 00000 n +0011692716 00000 n +0011692769 00000 n +0011692821 00000 n +0011692874 00000 n +0011692927 00000 n +0011692980 00000 n +0011693033 00000 n +0011693086 00000 n +0011693139 00000 n +0011693192 00000 n +0011693245 00000 n +0011693298 00000 n +0011693351 00000 n +0011693404 00000 n +0011693457 00000 n +0011693510 00000 n +0011693563 00000 n +0011693616 00000 n +0011693669 00000 n +0011693722 00000 n +0011693775 00000 n +0011693828 00000 n +0011693881 00000 n +0011693933 00000 n +0011693986 00000 n +0011694039 00000 n +0011694092 00000 n +0011694145 00000 n +0011694198 00000 n +0011694250 00000 n +0011694303 00000 n +0011694356 00000 n +0011694409 00000 n +0011694461 00000 n +0011694514 00000 n +0011694567 00000 n +0011694620 00000 n +0011694673 00000 n +0011694726 00000 n +0011694778 00000 n +0011694831 00000 n +0011694884 00000 n +0011694937 00000 n +0011694990 00000 n +0011695043 00000 n +0011695096 00000 n +0011695148 00000 n +0011695201 00000 n +0011695254 00000 n +0011695307 00000 n +0011695359 00000 n +0011695412 00000 n +0011695465 00000 n +0011695518 00000 n +0011695571 00000 n +0011695624 00000 n +0011695677 00000 n +0011695730 00000 n +0011695782 00000 n +0011695834 00000 n +0011695885 00000 n +0011695937 00000 n +0011695988 00000 n +0011696040 00000 n +0011696092 00000 n +0011696144 00000 n +0011696197 00000 n +0011696250 00000 n +0011696303 00000 n +0011696356 00000 n +0011696408 00000 n +0011696460 00000 n +0011696511 00000 n +0011696563 00000 n +0011696614 00000 n +0011696666 00000 n +0011696718 00000 n +0011696770 00000 n +0011696822 00000 n +0011696875 00000 n +0011696927 00000 n +0011696980 00000 n +0011697032 00000 n +0011697085 00000 n +0011697137 00000 n +0011697190 00000 n +0011697243 00000 n +0011697296 00000 n +0011697349 00000 n +0011697401 00000 n +0011697453 00000 n +0011697506 00000 n +0011697559 00000 n +0011697612 00000 n +0011697664 00000 n +0011697717 00000 n +0011697770 00000 n +0011697823 00000 n +0011697876 00000 n +0011697929 00000 n +0011697981 00000 n +0011698034 00000 n +0011698087 00000 n +0011698140 00000 n +0011698193 00000 n +0011698246 00000 n +0011698299 00000 n +0011698352 00000 n +0011698405 00000 n +0011698457 00000 n +0011698510 00000 n +0011698562 00000 n +0011698615 00000 n +0011698667 00000 n +0011698720 00000 n +0011698773 00000 n +0011698826 00000 n +0011698879 00000 n +0011698932 00000 n +0011698984 00000 n +0011699037 00000 n +0011699090 00000 n +0011699143 00000 n +0011699196 00000 n +0011699248 00000 n +0011699301 00000 n +0011699354 00000 n +0011699407 00000 n +0011699460 00000 n +0011699513 00000 n +0011699565 00000 n +0011699618 00000 n +0011699671 00000 n +0011699724 00000 n +0011699777 00000 n +0011699830 00000 n +0011699883 00000 n +0011699936 00000 n +0011699989 00000 n +0011700042 00000 n +0011700094 00000 n +0011700146 00000 n +0011700198 00000 n +0011700251 00000 n +0011700304 00000 n +0011700357 00000 n +0011700410 00000 n +0011700463 00000 n +0011700516 00000 n +0011700569 00000 n +0011700622 00000 n +0011700675 00000 n +0011700728 00000 n +0011700781 00000 n +0011700833 00000 n +0011700886 00000 n +0011700939 00000 n +0011700992 00000 n +0011701044 00000 n +0011701096 00000 n +0011701149 00000 n +0011701202 00000 n +0011701255 00000 n +0011701308 00000 n +0011701361 00000 n +0011701414 00000 n +0011701467 00000 n +0011701519 00000 n +0011701571 00000 n +0011701624 00000 n +0011701677 00000 n +0011701730 00000 n +0011701783 00000 n +0011701835 00000 n +0011701888 00000 n +0011701941 00000 n +0011701994 00000 n +0011702047 00000 n +0011702100 00000 n +0011702153 00000 n +0011702206 00000 n +0011702259 00000 n +0011702312 00000 n +0011702365 00000 n +0011702418 00000 n +0011702471 00000 n +0011702524 00000 n +0011702577 00000 n +0011702629 00000 n +0011702682 00000 n +0011702735 00000 n +0011702788 00000 n +0011702841 00000 n +0011702894 00000 n +0011702947 00000 n +0011703000 00000 n +0011703053 00000 n +0011703106 00000 n +0011703159 00000 n +0011703212 00000 n +0011703265 00000 n +0011703318 00000 n +0011703371 00000 n +0011703424 00000 n +0011703477 00000 n +0011703530 00000 n +0011703583 00000 n +0011703636 00000 n +0011703689 00000 n +0011703742 00000 n +0011703795 00000 n +0011703848 00000 n +0011703901 00000 n +0011703954 00000 n +0011704007 00000 n +0011704060 00000 n +0011704113 00000 n +0011704166 00000 n +0011704218 00000 n +0011704271 00000 n +0011704324 00000 n +0011704377 00000 n +0011704430 00000 n +0011704482 00000 n +0011704535 00000 n +0011704588 00000 n +0011704640 00000 n +0011704693 00000 n +0011704746 00000 n +0011704799 00000 n +0011704852 00000 n +0011704904 00000 n +0011704956 00000 n +0011705007 00000 n +0011705059 00000 n +0011705110 00000 n +0011705162 00000 n +0011705214 00000 n +0011705266 00000 n +0011705318 00000 n +0011705370 00000 n +0011705423 00000 n +0011705476 00000 n +0011705529 00000 n +0011705582 00000 n +0011705635 00000 n +0011705688 00000 n +0011705741 00000 n +0011705794 00000 n +0011705846 00000 n +0011705899 00000 n +0011705952 00000 n +0011706005 00000 n +0011706058 00000 n +0011706111 00000 n +0011706164 00000 n +0011706217 00000 n +0011706270 00000 n +0011706323 00000 n +0011706376 00000 n +0011706429 00000 n +0011706482 00000 n +0011706535 00000 n +0011706588 00000 n +0011706641 00000 n +0011706694 00000 n +0011706747 00000 n +0011706800 00000 n +0011706853 00000 n +0011706906 00000 n +0011706959 00000 n +0011707012 00000 n +0011707065 00000 n +0011707118 00000 n +0011707171 00000 n +0011707224 00000 n +0011707277 00000 n +0011707330 00000 n +0011707383 00000 n +0011707436 00000 n +0011707489 00000 n +0011707542 00000 n +0011707595 00000 n +0011707648 00000 n +0011707701 00000 n +0011707754 00000 n +0011707807 00000 n +0011707860 00000 n +0011707913 00000 n +0011707966 00000 n +0011708019 00000 n +0011708072 00000 n +0011708125 00000 n +0011708178 00000 n +0011708231 00000 n +0011708284 00000 n +0011708337 00000 n +0011708390 00000 n +0011708443 00000 n +0011708496 00000 n +0011708549 00000 n +0011708602 00000 n +0011708655 00000 n +0011708708 00000 n +0011708761 00000 n +0011708814 00000 n +0011708867 00000 n +0011708920 00000 n +0011708973 00000 n +0011709026 00000 n +0011709079 00000 n +0011709132 00000 n +0011709185 00000 n +0011709238 00000 n +0011709291 00000 n +0011709344 00000 n +0011709397 00000 n +0011709450 00000 n +0011709503 00000 n +0011709556 00000 n +0011709609 00000 n +0011709662 00000 n +0011709715 00000 n +0011709767 00000 n +0011709819 00000 n +0011709871 00000 n +0011709924 00000 n +0011709977 00000 n +0011710030 00000 n +0011710083 00000 n +0011710136 00000 n +0011710189 00000 n +0011710242 00000 n +0011710295 00000 n +0011710348 00000 n +0011710401 00000 n +0011710454 00000 n +0011710507 00000 n +0011710560 00000 n +0011710613 00000 n +0011710666 00000 n +0011710718 00000 n +0011710771 00000 n +0011710823 00000 n +0011710876 00000 n +0011710929 00000 n +0011710982 00000 n +0011711034 00000 n +0011711087 00000 n +0011711140 00000 n +0011711193 00000 n +0011711245 00000 n +0011711297 00000 n +0011711350 00000 n +0011711402 00000 n +0011711455 00000 n +0011711508 00000 n +0011711560 00000 n +0011711613 00000 n +0011711666 00000 n +0011711719 00000 n +0011711772 00000 n +0011711825 00000 n +0011711878 00000 n +0011711931 00000 n +0011711984 00000 n +0011712037 00000 n +0011712089 00000 n +0011712142 00000 n +0011712195 00000 n +0011712248 00000 n +0011712301 00000 n +0011712354 00000 n +0011712407 00000 n +0011712460 00000 n +0011712513 00000 n +0011712566 00000 n +0011712619 00000 n +0011712672 00000 n +0011712725 00000 n +0011712778 00000 n +0011712831 00000 n +0011712884 00000 n +0011712937 00000 n +0011712990 00000 n +0011713043 00000 n +0011713096 00000 n +0011713149 00000 n +0011713202 00000 n +0011713255 00000 n +0011713308 00000 n +0011713361 00000 n +0011713414 00000 n +0011713467 00000 n +0011713520 00000 n +0011713573 00000 n +0011713626 00000 n +0011713679 00000 n +0011713732 00000 n +0011713785 00000 n +0011713838 00000 n +0011713891 00000 n +0011713944 00000 n +0011713997 00000 n +0011714050 00000 n +0011714103 00000 n +0011714156 00000 n +0011714209 00000 n +0011714262 00000 n +0011714315 00000 n +0011714368 00000 n +0011714421 00000 n +0011714474 00000 n +0011714527 00000 n +0011714580 00000 n +0011714633 00000 n +0011714686 00000 n +0011714739 00000 n +0011714792 00000 n +0011714845 00000 n +0011714898 00000 n +0011714951 00000 n +0011715004 00000 n +0011715057 00000 n +0011715110 00000 n +0011715163 00000 n +0011715216 00000 n +0011715269 00000 n +0011715322 00000 n +0011715375 00000 n +0011715428 00000 n +0011715481 00000 n +0011715534 00000 n +0011715587 00000 n +0011715640 00000 n +0011715693 00000 n +0011715746 00000 n +0011715799 00000 n +0011715852 00000 n +0011715905 00000 n +0011715958 00000 n +0011716011 00000 n +0011716064 00000 n +0011716117 00000 n +0011716170 00000 n +0011716223 00000 n +0011716276 00000 n +0011716329 00000 n +0011716382 00000 n +0011716435 00000 n +0011716488 00000 n +0011716541 00000 n +0011716594 00000 n +0011716647 00000 n +0011716700 00000 n +0011716753 00000 n +0011716806 00000 n +0011716859 00000 n +0011716912 00000 n +0011716965 00000 n +0011717018 00000 n +0011717071 00000 n +0011717124 00000 n +0011717177 00000 n +0011717230 00000 n +0011717283 00000 n +0011717336 00000 n +0011717389 00000 n +0011717442 00000 n +0011717495 00000 n +0011717548 00000 n +0011717601 00000 n +0011717654 00000 n +0011717707 00000 n +0011717760 00000 n +0011717813 00000 n +0011717866 00000 n +0011717919 00000 n +0011717972 00000 n +0011718025 00000 n +0011718078 00000 n +0011718131 00000 n +0011718184 00000 n +0011718237 00000 n +0011718290 00000 n +0011718343 00000 n +0011718396 00000 n +0011718449 00000 n +0011718502 00000 n +0011718555 00000 n +0011718608 00000 n +0011718661 00000 n +0011718714 00000 n +0011718767 00000 n +0011718820 00000 n +0011718873 00000 n +0011718926 00000 n +0011718979 00000 n +0011719032 00000 n +0011719085 00000 n +0011719138 00000 n +0011719191 00000 n +0011719244 00000 n +0011719297 00000 n +0011719350 00000 n +0011719403 00000 n +0011719456 00000 n +0011719509 00000 n +0011719562 00000 n +0011719615 00000 n +0011719668 00000 n +0011719721 00000 n +0011719774 00000 n +0011719827 00000 n +0011719880 00000 n +0011719933 00000 n +0011719986 00000 n +0011720039 00000 n +0011720092 00000 n +0011720145 00000 n +0011720198 00000 n +0011720251 00000 n +0011720303 00000 n +0011720356 00000 n +0011720408 00000 n +0011720461 00000 n +0011720514 00000 n +0011720567 00000 n +0011720620 00000 n +0011720673 00000 n +0011720726 00000 n +0011720779 00000 n +0011720832 00000 n +0011720885 00000 n +0011720938 00000 n +0011720991 00000 n +0011721044 00000 n +0011721097 00000 n +0011721150 00000 n +0011721203 00000 n +0011721256 00000 n +0011721308 00000 n +0011721360 00000 n +0011721412 00000 n +0011721465 00000 n +0011721518 00000 n +0011721571 00000 n +0011721624 00000 n +0011721677 00000 n +0011721730 00000 n +0011721783 00000 n +0011721836 00000 n +0011721889 00000 n +0011721942 00000 n +0011721995 00000 n +0011722048 00000 n +0011722101 00000 n +0011722154 00000 n +0011722207 00000 n +0011722260 00000 n +0011722313 00000 n +0011722366 00000 n +0011722419 00000 n +0011722472 00000 n +0011722525 00000 n +0011722578 00000 n +0011722631 00000 n +0011722684 00000 n +0011722737 00000 n +0011722790 00000 n +0011722843 00000 n +0011722896 00000 n +0011722949 00000 n +0011723002 00000 n +0011723055 00000 n +0011723108 00000 n +0011723161 00000 n +0011723214 00000 n +0011723267 00000 n +0011723320 00000 n +0011723373 00000 n +0011723425 00000 n +0011723478 00000 n +0011723530 00000 n +0011723583 00000 n +0011723635 00000 n +0011723688 00000 n +0011723741 00000 n +0011723793 00000 n +0011723845 00000 n +0011723898 00000 n +0011723950 00000 n +0011724003 00000 n +0011724056 00000 n +0011724108 00000 n +0011724161 00000 n +0011724214 00000 n +0011724267 00000 n +0011724320 00000 n +0011724373 00000 n +0011724426 00000 n +0011724479 00000 n +0011724532 00000 n +0011724585 00000 n +0011724637 00000 n +0011724689 00000 n +0011724741 00000 n +0011724793 00000 n +0011724845 00000 n +0011724897 00000 n +0011724950 00000 n +0011725003 00000 n +0011725056 00000 n +0011725109 00000 n +0011725162 00000 n +0011725215 00000 n +0011725268 00000 n +0011725321 00000 n +0011725374 00000 n +0011725427 00000 n +0011725480 00000 n +0011725533 00000 n +0011725586 00000 n +0011725639 00000 n +0011725691 00000 n +0011725744 00000 n +0011725796 00000 n +0011725849 00000 n +0011725901 00000 n +0011725954 00000 n +0011726006 00000 n +0011726059 00000 n +0011726112 00000 n +0011726164 00000 n +0011726216 00000 n +0011726268 00000 n +0011726320 00000 n +0011726373 00000 n +0011726425 00000 n +0011726477 00000 n +0011726530 00000 n +0011726582 00000 n +0011726635 00000 n +0011726688 00000 n +0011726740 00000 n +0011726793 00000 n +0011726846 00000 n +0011726899 00000 n +0011726952 00000 n +0011727005 00000 n +0011727057 00000 n +0011727110 00000 n +0011727162 00000 n +0011727214 00000 n +0011727267 00000 n +0011727320 00000 n +0011727373 00000 n +0011727426 00000 n +0011727479 00000 n +0011727532 00000 n +0011727584 00000 n +0011727636 00000 n +0011727688 00000 n +0011727741 00000 n +0011727794 00000 n +0011727846 00000 n +0011727899 00000 n +0011727951 00000 n +0011728004 00000 n +0011728056 00000 n +0011728109 00000 n +0011728162 00000 n +0011728214 00000 n +0011728267 00000 n +0011728319 00000 n +0011728372 00000 n +0011728424 00000 n +0011728477 00000 n +0011728530 00000 n +0011728583 00000 n +0011728635 00000 n +0011728688 00000 n +0011728740 00000 n +0011728793 00000 n +0011728845 00000 n +0011728898 00000 n +0011728951 00000 n +0011729003 00000 n +0011729056 00000 n +0011729108 00000 n +0011729161 00000 n +0011729214 00000 n +0011729266 00000 n +0011729319 00000 n +0011729371 00000 n +0011729423 00000 n +0011729476 00000 n +0011729528 00000 n +0011729580 00000 n +0011729633 00000 n +0011729685 00000 n +0011729737 00000 n +0011729789 00000 n +0011729841 00000 n +0011729893 00000 n +0011729946 00000 n +0011729999 00000 n +0011730052 00000 n +0011730104 00000 n +0011730157 00000 n +0011730209 00000 n +0011730262 00000 n +0011730315 00000 n +0011730368 00000 n +0011730421 00000 n +0011730474 00000 n +0011730527 00000 n +0011730580 00000 n +0011730633 00000 n +0011730686 00000 n +0011730739 00000 n +0011730791 00000 n +0011730844 00000 n +0011730897 00000 n +0011730949 00000 n +0011731002 00000 n +0011731054 00000 n +0011731106 00000 n +0011731159 00000 n +0011731212 00000 n +0011731264 00000 n +0011731317 00000 n +0011731370 00000 n +0011731423 00000 n +0011731476 00000 n +0011731529 00000 n +0011731582 00000 n +0011731635 00000 n +0011731687 00000 n +0011731740 00000 n +0011731792 00000 n +0011731845 00000 n +0011731897 00000 n +0011731950 00000 n +0011732002 00000 n +0011732054 00000 n +0011732107 00000 n +0011732159 00000 n +0011732212 00000 n +0011732265 00000 n +0011732317 00000 n +0011732369 00000 n +0011732421 00000 n +0011732474 00000 n +0011732527 00000 n +0011732579 00000 n +0011732632 00000 n +0011732684 00000 n +0011732737 00000 n +0011732789 00000 n +0011732841 00000 n +0011732894 00000 n +0011732947 00000 n +0011733000 00000 n +0011733053 00000 n +0011733106 00000 n +0011733159 00000 n +0011733212 00000 n +0011733265 00000 n +0011733317 00000 n +0011733369 00000 n +0011733420 00000 n +0011733472 00000 n +0011733523 00000 n +0011733575 00000 n +0011733627 00000 n +0011733679 00000 n +0011733731 00000 n +0011733784 00000 n +0011733837 00000 n +0011733889 00000 n +0011733942 00000 n +0011733994 00000 n +0011734047 00000 n +0011734100 00000 n +0011734152 00000 n +0011734205 00000 n +0011734258 00000 n +0011734310 00000 n +0011734363 00000 n +0011734415 00000 n +0011734467 00000 n +0011734519 00000 n +0011734571 00000 n +0011734624 00000 n +0011734677 00000 n +0011734730 00000 n +0011734783 00000 n +0011734836 00000 n +0011734889 00000 n +0011734942 00000 n +0011734995 00000 n +0011735048 00000 n +0011735101 00000 n +0011735153 00000 n +0011735205 00000 n +0011735258 00000 n +0011735311 00000 n +0011735363 00000 n +0011735415 00000 n +0011735466 00000 n +0011735518 00000 n +0011735569 00000 n +0011735621 00000 n +0011735673 00000 n +0011735725 00000 n +0011735777 00000 n +0011735829 00000 n +0011735882 00000 n +0011735935 00000 n +0011735988 00000 n +0011736040 00000 n +0011736092 00000 n +0011736144 00000 n +0011736196 00000 n +0011736248 00000 n +0011736299 00000 n +0011736351 00000 n +0011736403 00000 n +0011736455 00000 n +0011736508 00000 n +0011736560 00000 n +0011736613 00000 n +0011736666 00000 n +0011736719 00000 n +0011736772 00000 n +0011736825 00000 n +0011736878 00000 n +0011736930 00000 n +0011736983 00000 n +0011737036 00000 n +0011737089 00000 n +0011737141 00000 n +0011737193 00000 n +0011737244 00000 n +0011737296 00000 n +0011737349 00000 n +0011737401 00000 n +0011737453 00000 n +0011737505 00000 n +0011737557 00000 n +0011737609 00000 n +0011737661 00000 n +0011737714 00000 n +0011737767 00000 n +0011737820 00000 n +0011737873 00000 n +0011737926 00000 n +0011737979 00000 n +0011738032 00000 n +0011738085 00000 n +0011738138 00000 n +0011738191 00000 n +0011738244 00000 n +0011738296 00000 n +0011738349 00000 n +0011738401 00000 n +0011738454 00000 n +0011738506 00000 n +0011738559 00000 n +0011738611 00000 n +0011738663 00000 n +0011738715 00000 n +0011738768 00000 n +0011738821 00000 n +0011738874 00000 n +0011738927 00000 n +0011738979 00000 n +0011739032 00000 n +0011739084 00000 n +0011739137 00000 n +0011739190 00000 n +0011739243 00000 n +0011739295 00000 n +0011739348 00000 n +0011739400 00000 n +0011739453 00000 n +0011739506 00000 n +0011739559 00000 n +0011739611 00000 n +0011739663 00000 n +0011739716 00000 n +0011739768 00000 n +0011739821 00000 n +0011739873 00000 n +0011739926 00000 n +0011739979 00000 n +0011740032 00000 n +0011740085 00000 n +0011740138 00000 n +0011740191 00000 n +0011740243 00000 n +0011740295 00000 n +0011740347 00000 n +0011740399 00000 n +0011740451 00000 n +0011740504 00000 n +0011740556 00000 n +0011740608 00000 n +0011740660 00000 n +0011740712 00000 n +0011740764 00000 n +0011740816 00000 n +0011740869 00000 n +0011740921 00000 n +0011740974 00000 n +0011741027 00000 n +0011741080 00000 n +0011741132 00000 n +0011741184 00000 n +0011741236 00000 n +0011741288 00000 n +0011741340 00000 n +0011741392 00000 n +0011741444 00000 n +0011741496 00000 n +0011741548 00000 n +0011741601 00000 n +0011741654 00000 n +0011741706 00000 n +0011741758 00000 n +0011741810 00000 n +0011741862 00000 n +0011741914 00000 n +0011741966 00000 n +0011742019 00000 n +0011742072 00000 n +0011742125 00000 n +0011742178 00000 n +0011742231 00000 n +0011742284 00000 n +0011742336 00000 n +0011742388 00000 n +0011742440 00000 n +0011742493 00000 n +0011742546 00000 n +0011742598 00000 n +0011742651 00000 n +0011742704 00000 n +0011742757 00000 n +0011742809 00000 n +0011742861 00000 n +0011742912 00000 n +0011742964 00000 n +0011743016 00000 n +0011743068 00000 n +0011743120 00000 n +0011743172 00000 n +0011743225 00000 n +0011743277 00000 n +0011743329 00000 n +0011743381 00000 n +0011743433 00000 n +0011743485 00000 n +0011743537 00000 n +0011743589 00000 n +0011743642 00000 n +0011743694 00000 n +0011743747 00000 n +0011743800 00000 n +0011743852 00000 n +0011743905 00000 n +0011743957 00000 n +0011744009 00000 n +0011744061 00000 n +0011744114 00000 n +0011744167 00000 n +0011744220 00000 n +0011744272 00000 n +0011744325 00000 n +0011744378 00000 n +0011744431 00000 n +0011744484 00000 n +0011744537 00000 n +0011744590 00000 n +0011744643 00000 n +0011744696 00000 n +0011744749 00000 n +0011744802 00000 n +0011744855 00000 n +0011744908 00000 n +0011744961 00000 n +0011745014 00000 n +0011745067 00000 n +0011745120 00000 n +0011745172 00000 n +0011745225 00000 n +0011745278 00000 n +0011745330 00000 n +0011745383 00000 n +0011745435 00000 n +0011745487 00000 n +0011745540 00000 n +0011745593 00000 n +0011745646 00000 n +0011745698 00000 n +0011745750 00000 n +0011745803 00000 n +0011745855 00000 n +0011745907 00000 n +0011745959 00000 n +0011746012 00000 n +0011746064 00000 n +0011746117 00000 n +0011746169 00000 n +0011746221 00000 n +0011746274 00000 n +0011746326 00000 n +0011747465 00000 n +0011748940 00000 n +0011750415 00000 n +0011751890 00000 n +0011753365 00000 n +0011754840 00000 n +0011756315 00000 n +0011757789 00000 n +0011759264 00000 n +0011760739 00000 n +0011762214 00000 n +0011763689 00000 n +0011765164 00000 n +0011766639 00000 n +0011768114 00000 n +0011769589 00000 n +0011771064 00000 n +0011772539 00000 n +0011774014 00000 n +0011775489 00000 n +0011776964 00000 n +0011778439 00000 n +0011779914 00000 n +0011781426 00000 n +0011782901 00000 n +0011784376 00000 n +0011785851 00000 n +0011787326 00000 n +0011788801 00000 n +0011790276 00000 n +0011791750 00000 n +0011793225 00000 n +0011794700 00000 n +0011796202 00000 n +0011797782 00000 n +0011799266 00000 n +0011800769 00000 n +0011802251 00000 n +0011803726 00000 n +0011805201 00000 n +0011806676 00000 n +0011808151 00000 n +0011809610 00000 n +0011811085 00000 n +0011812615 00000 n +0011814156 00000 n +0011815669 00000 n +0011817210 00000 n +0011818745 00000 n +0011820220 00000 n +0011821695 00000 n +0011823170 00000 n +0011824645 00000 n +0011826158 00000 n +0011827698 00000 n +0011829232 00000 n +0011830730 00000 n +0011832205 00000 n +0011833683 00000 n +0011835211 00000 n +0011836699 00000 n +0011838174 00000 n +0011839689 00000 n +0011841164 00000 n +0011841216 00000 n +0011841269 00000 n +0011841322 00000 n +0011841375 00000 n +0011841427 00000 n +0011841480 00000 n +0011841533 00000 n +0011841586 00000 n +0011841639 00000 n +0011841692 00000 n +0011841745 00000 n +0011841798 00000 n +0011841850 00000 n +0011841903 00000 n +0011841955 00000 n +0011842007 00000 n +0011842060 00000 n +0011842112 00000 n +0011842165 00000 n +0011842218 00000 n +0011842270 00000 n +0011842323 00000 n +0011842375 00000 n +0011842427 00000 n +0011842479 00000 n +0011842531 00000 n +0011842584 00000 n +0011842636 00000 n +0011842688 00000 n +0011842741 00000 n +0011842793 00000 n +0011842845 00000 n +0011842898 00000 n +0011842951 00000 n +0011843004 00000 n +0011843057 00000 n +0011843109 00000 n +0011843162 00000 n +0011843215 00000 n +0011843268 00000 n +0011843321 00000 n +0011843374 00000 n +0011843427 00000 n +0011843479 00000 n +0011843532 00000 n +0011843585 00000 n +0011843637 00000 n +0011843689 00000 n +0011843742 00000 n +0011843795 00000 n +0011843848 00000 n +0011843901 00000 n +0011843953 00000 n +0011844006 00000 n +0011844058 00000 n +0011844110 00000 n +0011844162 00000 n +0011844214 00000 n +0011844266 00000 n +0011844318 00000 n +0011844370 00000 n +0011844422 00000 n +0011844474 00000 n +0011844526 00000 n +0011844578 00000 n +0011844631 00000 n +0011844683 00000 n +0011844736 00000 n +0011844789 00000 n +0011844842 00000 n +0011844895 00000 n +0011844948 00000 n +0011845001 00000 n +0011845053 00000 n +0011845105 00000 n +0011845157 00000 n +0011845209 00000 n +0011845261 00000 n +0011845314 00000 n +0011845366 00000 n +0011845418 00000 n +0011845471 00000 n +0011845524 00000 n +0011845576 00000 n +0011845629 00000 n +0011845682 00000 n +0011845735 00000 n +0011845787 00000 n +0011845839 00000 n +0011845891 00000 n +0011845942 00000 n +0011845994 00000 n +0011846045 00000 n +0011846097 00000 n +0011846149 00000 n +0011846201 00000 n +0011846254 00000 n +0011846306 00000 n +0011846358 00000 n +0011846410 00000 n +0011846462 00000 n +0011846514 00000 n +0011846567 00000 n +0011846620 00000 n +0011846673 00000 n +0011846726 00000 n +0011846779 00000 n +0011846832 00000 n +0011846885 00000 n +0011846938 00000 n +0011846990 00000 n +0011847043 00000 n +0011847096 00000 n +0011847149 00000 n +0011847202 00000 n +0011847254 00000 n +0011847306 00000 n +0011847359 00000 n +0011847412 00000 n +0011847464 00000 n +0011847516 00000 n +0011847568 00000 n +0011847621 00000 n +0011847674 00000 n +0011847727 00000 n +0011847779 00000 n +0011847832 00000 n +0011847884 00000 n +0011847936 00000 n +0011847988 00000 n +0011848040 00000 n +0011848092 00000 n +0011848144 00000 n +0011848196 00000 n +0011848248 00000 n +0011848300 00000 n +0011848352 00000 n +0011848404 00000 n +0011848457 00000 n +0011848510 00000 n +0011848563 00000 n +0011848615 00000 n +0011848667 00000 n +0011848720 00000 n +0011848772 00000 n +0011848824 00000 n +0011848875 00000 n +0011848927 00000 n +0011848978 00000 n +0011849030 00000 n +0011849082 00000 n +0011849134 00000 n +0011849186 00000 n +0011849239 00000 n +0011849292 00000 n +0011849344 00000 n +0011849396 00000 n +0011849449 00000 n +0011849502 00000 n +0011849555 00000 n +0011849608 00000 n +0011849661 00000 n +0011849714 00000 n +0011849766 00000 n +0011849819 00000 n +0011849872 00000 n +0011849925 00000 n +0011849978 00000 n +0011850031 00000 n +0011850084 00000 n +0011850137 00000 n +0011850190 00000 n +0011850242 00000 n +0011850295 00000 n +0011850348 00000 n +0011850400 00000 n +0011850453 00000 n +0011850506 00000 n +0011850558 00000 n +0011850611 00000 n +0011850663 00000 n +0011850716 00000 n +0011850768 00000 n +0011850820 00000 n +0011850873 00000 n +0011850925 00000 n +0011850978 00000 n +0011851031 00000 n +0011851084 00000 n +0011851136 00000 n +0011851188 00000 n +0011851241 00000 n +0011851294 00000 n +0011851347 00000 n +0011851400 00000 n +0011851453 00000 n +0011851506 00000 n +0011851558 00000 n +0011851611 00000 n +0011851663 00000 n +0011851715 00000 n +0011851767 00000 n +0011851819 00000 n +0011851872 00000 n +0011851924 00000 n +0011851977 00000 n +0011852030 00000 n +0011852083 00000 n +0011852136 00000 n +0011852189 00000 n +0011852242 00000 n +0011852295 00000 n +0011852348 00000 n +0011852401 00000 n +0011852454 00000 n +0011852507 00000 n +0011852560 00000 n +0011852612 00000 n +0011852664 00000 n +0011852716 00000 n +0011852767 00000 n +0011852819 00000 n +0011852870 00000 n +0011852922 00000 n +0011852974 00000 n +0011853026 00000 n +0011853078 00000 n +0011853131 00000 n +0011853184 00000 n +0011853237 00000 n +0011853290 00000 n +0011853343 00000 n +0011853396 00000 n +0011853449 00000 n +0011853502 00000 n +0011853555 00000 n +0011853607 00000 n +0011853660 00000 n +0011853712 00000 n +0011853765 00000 n +0011853818 00000 n +0011853870 00000 n +0011853922 00000 n +0011853975 00000 n +0011854028 00000 n +0011854081 00000 n +0011854133 00000 n +0011854186 00000 n +0011854239 00000 n +0011854292 00000 n +0011854345 00000 n +0011854398 00000 n +0011854451 00000 n +0011854503 00000 n +0011854555 00000 n +0011854607 00000 n +0011854660 00000 n +0011854713 00000 n +0011854766 00000 n +0011854819 00000 n +0011854872 00000 n +0011854925 00000 n +0011854978 00000 n +0011855031 00000 n +0011855084 00000 n +0011855136 00000 n +0011855189 00000 n +0011855242 00000 n +0011855294 00000 n +0011855346 00000 n +0011855399 00000 n +0011855452 00000 n +0011855504 00000 n +0011855557 00000 n +0011855610 00000 n +0011855663 00000 n +0011855716 00000 n +0011855769 00000 n +0011855821 00000 n +0011855874 00000 n +0011855927 00000 n +0011855980 00000 n +0011856033 00000 n +0011856085 00000 n +0011856138 00000 n +0011856191 00000 n +0011856243 00000 n +0011856296 00000 n +0011856349 00000 n +0011856402 00000 n +0011856455 00000 n +0011856508 00000 n +0011856561 00000 n +0011856614 00000 n +0011856667 00000 n +0011856720 00000 n +0011856773 00000 n +0011856825 00000 n +0011856878 00000 n +0011856931 00000 n +0011856984 00000 n +0011857036 00000 n +0011857088 00000 n +0011857141 00000 n +0011857194 00000 n +0011857246 00000 n +0011857298 00000 n +0011857351 00000 n +0011857404 00000 n +0011857456 00000 n +0011857509 00000 n +0011857562 00000 n +0011857614 00000 n +0011857666 00000 n +0011857718 00000 n +0011857771 00000 n +0011857824 00000 n +0011857877 00000 n +0011857930 00000 n +0011857983 00000 n +0011858036 00000 n +0011858089 00000 n +0011858142 00000 n +0011858195 00000 n +0011858248 00000 n +0011858301 00000 n +0011858353 00000 n +0011858406 00000 n +0011858459 00000 n +0011858512 00000 n +0011858565 00000 n +0011858618 00000 n +0011858671 00000 n +0011858724 00000 n +0011858777 00000 n +0011858829 00000 n +0011858881 00000 n +0011858934 00000 n +0011858986 00000 n +0011859038 00000 n +0011859090 00000 n +0011859142 00000 n +0011859194 00000 n +0011859246 00000 n +0011859299 00000 n +0011859351 00000 n +0011859403 00000 n +0011859456 00000 n +0011859508 00000 n +0011859561 00000 n +0011859614 00000 n +0011859666 00000 n +0011859719 00000 n +0011859772 00000 n +0011859825 00000 n +0011859878 00000 n +0011859930 00000 n +0011859983 00000 n +0011860035 00000 n +0011860087 00000 n +0011860139 00000 n +0011860192 00000 n +0011860244 00000 n +0011860297 00000 n +0011860350 00000 n +0011860403 00000 n +0011860455 00000 n +0011860507 00000 n +0011860560 00000 n +0011860613 00000 n +0011860665 00000 n +0011860718 00000 n +0011860771 00000 n +0011860824 00000 n +0011860876 00000 n +0011860928 00000 n +0011860981 00000 n +0011861034 00000 n +0011861086 00000 n +0011861138 00000 n +0011861190 00000 n +0011861243 00000 n +0011861296 00000 n +0011861349 00000 n +0011861401 00000 n +0011861454 00000 n +0011861506 00000 n +0011861559 00000 n +0011861612 00000 n +0011861665 00000 n +0011861718 00000 n +0011861771 00000 n +0011861824 00000 n +0011861876 00000 n +0011861928 00000 n +0011861980 00000 n +0011862033 00000 n +0011862085 00000 n +0011862137 00000 n +0011862190 00000 n +0011862242 00000 n +0011862294 00000 n +0011862347 00000 n +0011862399 00000 n +0011862451 00000 n +0011862504 00000 n +0011862557 00000 n +0011862610 00000 n +0011862663 00000 n +0011862716 00000 n +0011862769 00000 n +0011862821 00000 n +0011862874 00000 n +0011862926 00000 n +0011862978 00000 n +0011863030 00000 n +0011863083 00000 n +0011863136 00000 n +0011863188 00000 n +0011863241 00000 n +0011863294 00000 n +0011863347 00000 n +0011863400 00000 n +0011863453 00000 n +0011863505 00000 n +0011863558 00000 n +0011863611 00000 n +0011863664 00000 n +0011863716 00000 n +0011863768 00000 n +0011863820 00000 n +0011863873 00000 n +0011863926 00000 n +0011863979 00000 n +0011864032 00000 n +0011864085 00000 n +0011864138 00000 n +0011864191 00000 n +0011864244 00000 n +0011864297 00000 n +0011864350 00000 n +0011864403 00000 n +0011864456 00000 n +0011864509 00000 n +0011864561 00000 n +0011864613 00000 n +0011864666 00000 n +0011864719 00000 n +0011864772 00000 n +0011864825 00000 n +0011864878 00000 n +0011864931 00000 n +0011864984 00000 n +0011865037 00000 n +0011865090 00000 n +0011865143 00000 n +0011865196 00000 n +0011865249 00000 n +0011865302 00000 n +0011865355 00000 n +0011865408 00000 n +0011865461 00000 n +0011865514 00000 n +0011865567 00000 n +0011865620 00000 n +0011865673 00000 n +0011865726 00000 n +0011865778 00000 n +0011865830 00000 n +0011865882 00000 n +0011865934 00000 n +0011865986 00000 n +0011866039 00000 n +0011866092 00000 n +0011866144 00000 n +0011866197 00000 n +0011866250 00000 n +0011866303 00000 n +0011866356 00000 n +0011866409 00000 n +0011866461 00000 n +0011866514 00000 n +0011866567 00000 n +0011866619 00000 n +0011866671 00000 n +0011866723 00000 n +0011866776 00000 n +0011866829 00000 n +0011866882 00000 n +0011866934 00000 n +0011866987 00000 n +0011867040 00000 n +0011867093 00000 n +0011867146 00000 n +0011867199 00000 n +0011867252 00000 n +0011867305 00000 n +0011867358 00000 n +0011867411 00000 n +0011867464 00000 n +0011867517 00000 n +0011867570 00000 n +0011867623 00000 n +0011867676 00000 n +0011867729 00000 n +0011867782 00000 n +0011867835 00000 n +0011867888 00000 n +0011867941 00000 n +0011867994 00000 n +0011868046 00000 n +0011868099 00000 n +0011868152 00000 n +0011868204 00000 n +0011868257 00000 n +0011868310 00000 n +0011868363 00000 n +0011868416 00000 n +0011868469 00000 n +0011868522 00000 n +0011868575 00000 n +0011868628 00000 n +0011868681 00000 n +0011868734 00000 n +0011868787 00000 n +0011868840 00000 n +0011868893 00000 n +0011868946 00000 n +0011868999 00000 n +0011869052 00000 n +0011869105 00000 n +0011869158 00000 n +0011869211 00000 n +0011869264 00000 n +0011869317 00000 n +0011869370 00000 n +0011869423 00000 n +0011869476 00000 n +0011869529 00000 n +0011869582 00000 n +0011869635 00000 n +0011869688 00000 n +0011869741 00000 n +0011869794 00000 n +0011869847 00000 n +0011869900 00000 n +0011869953 00000 n +0011870006 00000 n +0011870059 00000 n +0011870111 00000 n +0011870164 00000 n +0011870216 00000 n +0011870268 00000 n +0011870321 00000 n +0011870374 00000 n +0011870427 00000 n +0011870480 00000 n +0011870533 00000 n +0011870586 00000 n +0011870639 00000 n +0011870692 00000 n +0011870745 00000 n +0011870798 00000 n +0011870851 00000 n +0011870904 00000 n +0011870957 00000 n +0011871009 00000 n +0011871061 00000 n +0011871114 00000 n +0011871167 00000 n +0011871219 00000 n +0011871272 00000 n +0011871324 00000 n +0011871376 00000 n +0011871429 00000 n +0011871482 00000 n +0011871534 00000 n +0011871587 00000 n +0011871639 00000 n +0011871692 00000 n +0011871744 00000 n +0011871797 00000 n +0011871849 00000 n +0011871902 00000 n +0011871954 00000 n +0011872007 00000 n +0011872059 00000 n +0011872112 00000 n +0011872164 00000 n +0011872217 00000 n +0011872269 00000 n +0011872322 00000 n +0011872374 00000 n +0011872426 00000 n +0011872479 00000 n +0011872531 00000 n +0011872583 00000 n +0011872636 00000 n +0011872688 00000 n +0011872741 00000 n +0011872793 00000 n +0011872846 00000 n +0011872898 00000 n +0011872951 00000 n +0011873003 00000 n +0011873056 00000 n +0011873108 00000 n +0011873161 00000 n +0011873214 00000 n +0011873267 00000 n +0011873320 00000 n +0011873373 00000 n +0011873426 00000 n +0011873479 00000 n +0011873532 00000 n +0011873585 00000 n +0011873638 00000 n +0011873691 00000 n +0011873744 00000 n +0011873797 00000 n +0011873850 00000 n +0011873903 00000 n +0011873956 00000 n +0011874009 00000 n +0011874062 00000 n +0011874115 00000 n +0011874168 00000 n +0011874221 00000 n +0011874274 00000 n +0011874327 00000 n +0011874380 00000 n +0011874433 00000 n +0011874486 00000 n +0011874539 00000 n +0011874591 00000 n +0011874643 00000 n +0011874696 00000 n +0011874749 00000 n +0011874802 00000 n +0011874854 00000 n +0011874906 00000 n +0011874958 00000 n +0011875010 00000 n +0011875063 00000 n +0011875115 00000 n +0011875167 00000 n +0011875220 00000 n +0011875272 00000 n +0011875325 00000 n +0011875377 00000 n +0011875429 00000 n +0011875481 00000 n +0011875534 00000 n +0011875587 00000 n +0011875640 00000 n +0011875693 00000 n +0011875745 00000 n +0011875797 00000 n +0011875849 00000 n +0011875901 00000 n +0011875954 00000 n +0011876007 00000 n +0011876060 00000 n +0011876113 00000 n +0011876166 00000 n +0011876218 00000 n +0011876270 00000 n +0011876323 00000 n +0011876376 00000 n +0011876429 00000 n +0011876481 00000 n +0011876534 00000 n +0011876587 00000 n +0011876640 00000 n +0011876693 00000 n +0011876746 00000 n +0011876799 00000 n +0011876852 00000 n +0011876905 00000 n +0011876958 00000 n +0011877010 00000 n +0011877062 00000 n +0011877114 00000 n +0011877167 00000 n +0011877219 00000 n +0011877271 00000 n +0011877323 00000 n +0011877375 00000 n +0011877427 00000 n +0011877479 00000 n +0011877530 00000 n +0011877582 00000 n +0011877633 00000 n +0011877685 00000 n +0011877737 00000 n +0011877789 00000 n +0011877842 00000 n +0011877894 00000 n +0011877947 00000 n +0011877999 00000 n +0011878052 00000 n +0011878104 00000 n +0011878157 00000 n +0011878210 00000 n +0011878263 00000 n +0011878316 00000 n +0011878368 00000 n +0011878421 00000 n +0011878474 00000 n +0011878527 00000 n +0011878579 00000 n +0011878632 00000 n +0011878685 00000 n +0011878738 00000 n +0011878790 00000 n +0011878842 00000 n +0011878894 00000 n +0011878947 00000 n +0011879000 00000 n +0011879053 00000 n +0011879105 00000 n +0011879158 00000 n +0011879211 00000 n +0011879263 00000 n +0011879316 00000 n +0011879369 00000 n +0011879422 00000 n +0011879474 00000 n +0011879526 00000 n +0011879579 00000 n +0011879632 00000 n +0011879684 00000 n +0011879737 00000 n +0011879790 00000 n +0011879843 00000 n +0011879896 00000 n +0011879949 00000 n +0011880002 00000 n +0011880055 00000 n +0011880108 00000 n +0011880161 00000 n +0011880214 00000 n +0011880267 00000 n +0011880320 00000 n +0011880373 00000 n +0011880426 00000 n +0011880479 00000 n +0011880531 00000 n +0011880583 00000 n +0011880635 00000 n +0011880687 00000 n +0011880739 00000 n +0011880792 00000 n +0011880845 00000 n +0011880897 00000 n +0011880950 00000 n +0011881003 00000 n +0011881056 00000 n +0011881109 00000 n +0011881161 00000 n +0011881214 00000 n +0011881267 00000 n +0011881319 00000 n +0011881371 00000 n +0011881423 00000 n +0011881476 00000 n +0011881528 00000 n +0011881580 00000 n +0011881632 00000 n +0011881685 00000 n +0011881738 00000 n +0011881791 00000 n +0011881844 00000 n +0011881897 00000 n +0011881950 00000 n +0011882003 00000 n +0011882056 00000 n +0011882109 00000 n +0011882162 00000 n +0011882215 00000 n +0011882268 00000 n +0011882321 00000 n +0011882374 00000 n +0011882427 00000 n +0011882480 00000 n +0011882533 00000 n +0011882586 00000 n +0011882639 00000 n +0011882692 00000 n +0011882744 00000 n +0011882796 00000 n +0011882849 00000 n +0011882901 00000 n +0011882954 00000 n +0011883006 00000 n +0011883059 00000 n +0011883112 00000 n +0011883165 00000 n +0011883217 00000 n +0011883270 00000 n +0011883323 00000 n +0011883375 00000 n +0011883427 00000 n +0011883479 00000 n +0011883531 00000 n +0011883584 00000 n +0011883636 00000 n +0011883688 00000 n +0011883741 00000 n +0011883794 00000 n +0011883846 00000 n +0011883898 00000 n +0011883951 00000 n +0011884003 00000 n +0011884055 00000 n +0011884108 00000 n +0011884161 00000 n +0011884214 00000 n +0011884267 00000 n +0011884320 00000 n +0011884373 00000 n +0011884425 00000 n +0011884477 00000 n +0011884529 00000 n +0011884581 00000 n +0011884633 00000 n +0011884686 00000 n +0011884738 00000 n +0011884791 00000 n +0011884844 00000 n +0011884897 00000 n +0011884950 00000 n +0011885003 00000 n +0011885056 00000 n +0011885109 00000 n +0011885162 00000 n +0011885215 00000 n +0011885268 00000 n +0011885321 00000 n +0011885374 00000 n +0011885426 00000 n +0011885479 00000 n +0011885531 00000 n +0011885584 00000 n +0011885637 00000 n +0011885690 00000 n +0011885742 00000 n +0011885795 00000 n +0011885848 00000 n +0011885901 00000 n +0011885954 00000 n +0011886007 00000 n +0011886060 00000 n +0011886113 00000 n +0011886166 00000 n +0011886219 00000 n +0011886272 00000 n +0011886325 00000 n +0011886378 00000 n +0011886431 00000 n +0011886484 00000 n +0011886537 00000 n +0011886590 00000 n +0011886643 00000 n +0011886695 00000 n +0011886747 00000 n +0011886800 00000 n +0011886852 00000 n +0011886905 00000 n +0011886957 00000 n +0011887010 00000 n +0011887062 00000 n +0011887115 00000 n +0011887167 00000 n +0011887220 00000 n +0011887272 00000 n +0011887325 00000 n +0011887378 00000 n +0011887431 00000 n +0011887484 00000 n +0011887537 00000 n +0011887590 00000 n +0011887643 00000 n +0011887696 00000 n +0011887748 00000 n +0011887800 00000 n +0011887853 00000 n +0011887905 00000 n +0011887958 00000 n +0011888011 00000 n +0011888063 00000 n +0011888116 00000 n +0011888168 00000 n +0011888221 00000 n +0011888274 00000 n +0011888327 00000 n +0011888379 00000 n +0011888432 00000 n +0011888485 00000 n +0011888537 00000 n +0011888590 00000 n +0011888642 00000 n +0011888694 00000 n +0011888745 00000 n +0011888797 00000 n +0011888848 00000 n +0011888900 00000 n +0011888952 00000 n +0011889004 00000 n +0011889057 00000 n +0011889110 00000 n +0011889163 00000 n +0011889216 00000 n +0011889269 00000 n +0011889321 00000 n +0011889374 00000 n +0011889427 00000 n +0011889480 00000 n +0011889533 00000 n +0011889586 00000 n +0011889639 00000 n +0011889692 00000 n +0011889745 00000 n +0011889798 00000 n +0011889851 00000 n +0011889904 00000 n +0011889957 00000 n +0011890010 00000 n +0011890063 00000 n +0011890116 00000 n +0011890168 00000 n +0011890221 00000 n +0011890274 00000 n +0011890326 00000 n +0011890379 00000 n +0011890432 00000 n +0011890485 00000 n +0011890538 00000 n +0011890591 00000 n +0011890644 00000 n +0011890697 00000 n +0011890750 00000 n +0011890803 00000 n +0011890856 00000 n +0011890909 00000 n +0011890961 00000 n +0011891013 00000 n +0011891066 00000 n +0011891119 00000 n +0011891172 00000 n +0011891225 00000 n +0011891278 00000 n +0011891331 00000 n +0011891384 00000 n +0011891437 00000 n +0011891490 00000 n +0011891543 00000 n +0011891596 00000 n +0011891649 00000 n +0011891702 00000 n +0011891755 00000 n +0011891807 00000 n +0011891859 00000 n +0011891911 00000 n +0011891963 00000 n +0011892016 00000 n +0011892069 00000 n +0011892121 00000 n +0011892173 00000 n +0011892225 00000 n +0011892277 00000 n +0011892329 00000 n +0011892381 00000 n +0011892434 00000 n +0011892486 00000 n +0011892539 00000 n +0011892592 00000 n +0011892644 00000 n +0011892696 00000 n +0011892748 00000 n +0011892800 00000 n +0011892853 00000 n +0011892906 00000 n +0011892958 00000 n +0011893010 00000 n +0011893062 00000 n +0011893114 00000 n +0011893167 00000 n +0011893220 00000 n +0011893273 00000 n +0011893326 00000 n +0011893379 00000 n +0011893432 00000 n +0011893485 00000 n +0011893538 00000 n +0011893591 00000 n +0011893644 00000 n +0011893697 00000 n +0011893750 00000 n +0011893802 00000 n +0011893854 00000 n +0011893907 00000 n +0011893959 00000 n +0011894012 00000 n +0011894065 00000 n +0011894118 00000 n +0011894171 00000 n +0011894224 00000 n +0011894277 00000 n +0011894330 00000 n +0011894383 00000 n +0011894436 00000 n +0011894489 00000 n +0011894542 00000 n +0011894595 00000 n +0011894647 00000 n +0011894699 00000 n +0011894752 00000 n +0011894805 00000 n +0011894858 00000 n +0011894911 00000 n +0011894964 00000 n +0011895016 00000 n +0011895068 00000 n +0011895121 00000 n +0011895174 00000 n +0011895226 00000 n +0011895279 00000 n +0011895332 00000 n +0011895385 00000 n +0011895437 00000 n +0011895490 00000 n +0011895543 00000 n +0011895596 00000 n +0011895648 00000 n +0011895701 00000 n +0011895754 00000 n +0011895806 00000 n +0011895858 00000 n +0011895911 00000 n +0011895964 00000 n +0011896016 00000 n +0011896068 00000 n +0011896120 00000 n +0011896173 00000 n +0011896226 00000 n +0011896279 00000 n +0011896332 00000 n +0011896384 00000 n +0011896436 00000 n +0011896489 00000 n +0011896542 00000 n +0011896595 00000 n +0011896648 00000 n +0011896700 00000 n +0011896752 00000 n +0011896805 00000 n +0011896858 00000 n +0011896911 00000 n +0011896964 00000 n +0011897017 00000 n +0011897070 00000 n +0011897123 00000 n +0011897176 00000 n +0011897229 00000 n +0011897282 00000 n +0011897335 00000 n +0011897388 00000 n +0011897441 00000 n +0011897494 00000 n +0011897547 00000 n +0011897600 00000 n +0011897653 00000 n +0011897705 00000 n +0011897758 00000 n +0011897811 00000 n +0011897864 00000 n +0011897917 00000 n +0011897970 00000 n +0011898023 00000 n +0011898076 00000 n +0011898129 00000 n +0011898182 00000 n +0011898235 00000 n +0011898288 00000 n +0011898341 00000 n +0011898393 00000 n +0011898445 00000 n +0011898498 00000 n +0011898551 00000 n +0011898604 00000 n +0011898657 00000 n +0011898710 00000 n +0011898763 00000 n +0011898816 00000 n +0011898869 00000 n +0011898922 00000 n +0011898975 00000 n +0011899028 00000 n +0011899081 00000 n +0011899134 00000 n +0011899187 00000 n +0011899240 00000 n +0011899293 00000 n +0011899346 00000 n +0011899399 00000 n +0011899452 00000 n +0011899505 00000 n +0011899558 00000 n +0011899611 00000 n +0011899664 00000 n +0011899716 00000 n +0011899769 00000 n +0011899822 00000 n +0011899875 00000 n +0011899928 00000 n +0011899981 00000 n +0011900034 00000 n +0011900087 00000 n +0011900140 00000 n +0011900193 00000 n +0011900245 00000 n +0011900298 00000 n +0011900351 00000 n +0011900404 00000 n +0011900457 00000 n +0011900510 00000 n +0011900563 00000 n +0011900616 00000 n +0011900669 00000 n +0011900722 00000 n +0011900775 00000 n +0011900828 00000 n +0011900881 00000 n +0011900934 00000 n +0011900987 00000 n +0011901040 00000 n +0011901093 00000 n +0011901146 00000 n +0011901199 00000 n +0011901251 00000 n +0011901303 00000 n +0011901356 00000 n +0011901409 00000 n +0011901462 00000 n +0011901515 00000 n +0011901568 00000 n +0011901621 00000 n +0011901674 00000 n +0011901727 00000 n +0011901780 00000 n +0011901833 00000 n +0011901886 00000 n +0011901939 00000 n +0011901992 00000 n +0011902045 00000 n +0011902098 00000 n +0011902151 00000 n +0011902204 00000 n +0011902257 00000 n +0011902310 00000 n +0011902363 00000 n +0011902416 00000 n +0011902469 00000 n +0011902522 00000 n +0011902575 00000 n +0011902628 00000 n +0011902681 00000 n +0011902734 00000 n +0011902787 00000 n +0011902840 00000 n +0011902893 00000 n +0011902946 00000 n +0011902999 00000 n +0011903052 00000 n +0011903105 00000 n +0011903158 00000 n +0011903211 00000 n +0011903264 00000 n +0011903317 00000 n +0011903370 00000 n +0011903423 00000 n +0011903476 00000 n +0011903529 00000 n +0011903582 00000 n +0011903635 00000 n +0011903688 00000 n +0011903741 00000 n +0011903794 00000 n +0011903847 00000 n +0011903900 00000 n +0011903953 00000 n +0011904006 00000 n +0011904059 00000 n +0011904112 00000 n +0011904165 00000 n +0011904218 00000 n +0011904271 00000 n +0011904324 00000 n +0011904377 00000 n +0011904430 00000 n +0011904483 00000 n +0011904536 00000 n +0011904589 00000 n +0011904642 00000 n +0011904695 00000 n +0011904748 00000 n +0011904801 00000 n +0011904854 00000 n +0011904907 00000 n +0011904960 00000 n +0011905013 00000 n +0011905066 00000 n +0011905119 00000 n +0011905172 00000 n +0011905225 00000 n +0011905278 00000 n +0011905331 00000 n +0011905384 00000 n +0011905437 00000 n +0011905490 00000 n +0011905543 00000 n +0011905596 00000 n +0011905649 00000 n +0011905702 00000 n +0011905755 00000 n +0011905807 00000 n +0011905860 00000 n +0011905913 00000 n +0011905966 00000 n +0011906019 00000 n +0011906072 00000 n +0011906125 00000 n +0011906178 00000 n +0011906231 00000 n +0011906284 00000 n +0011906337 00000 n +0011906390 00000 n +0011906443 00000 n +0011906496 00000 n +0011906549 00000 n +0011906602 00000 n +0011906655 00000 n +0011906708 00000 n +0011906761 00000 n +0011906814 00000 n +0011906867 00000 n +0011906920 00000 n +0011906973 00000 n +0011907026 00000 n +0011907079 00000 n +0011907132 00000 n +0011907185 00000 n +0011907238 00000 n +0011907291 00000 n +0011907344 00000 n +0011907397 00000 n +0011907450 00000 n +0011907503 00000 n +0011907556 00000 n +0011907609 00000 n +0011907662 00000 n +0011907715 00000 n +0011907768 00000 n +0011907821 00000 n +0011907874 00000 n +0011907927 00000 n +0011907980 00000 n +0011908033 00000 n +0011908086 00000 n +0011908139 00000 n +0011908192 00000 n +0011908245 00000 n +0011908298 00000 n +0011908351 00000 n +0011908404 00000 n +0011908457 00000 n +0011908510 00000 n +0011908563 00000 n +0011908615 00000 n +0011908668 00000 n +0011908720 00000 n +0011908772 00000 n +0011908824 00000 n +0011908876 00000 n +0011908928 00000 n +0011908980 00000 n +0011909032 00000 n +0011909084 00000 n +0011909136 00000 n +0011909188 00000 n +0011909240 00000 n +0011909292 00000 n +0011909344 00000 n +0011909396 00000 n +0011909449 00000 n +0011909501 00000 n +0011909553 00000 n +0011909606 00000 n +0011909659 00000 n +0011909711 00000 n +0011909763 00000 n +0011909815 00000 n +0011909868 00000 n +0011909920 00000 n +0011909973 00000 n +0011910026 00000 n +0011910079 00000 n +0011910132 00000 n +0011910185 00000 n +0011910237 00000 n +0011910289 00000 n +0011910341 00000 n +0011910393 00000 n +0011910445 00000 n +0011910497 00000 n +0011910550 00000 n +0011910603 00000 n +0011910655 00000 n +0011910707 00000 n +0011910759 00000 n +0011910811 00000 n +0011910863 00000 n +0011910916 00000 n +0011910968 00000 n +0011911020 00000 n +0011911072 00000 n +0011911124 00000 n +0011911176 00000 n +0011911229 00000 n +0011911281 00000 n +0011911334 00000 n +0011911386 00000 n +0011911439 00000 n +0011911492 00000 n +0011911545 00000 n +0011911598 00000 n +0011911650 00000 n +0011911703 00000 n +0011911756 00000 n +0011911809 00000 n +0011911862 00000 n +0011911915 00000 n +0011911967 00000 n +0011912020 00000 n +0011912073 00000 n +0011912126 00000 n +0011912179 00000 n +0011912232 00000 n +0011912285 00000 n +0011912338 00000 n +0011912391 00000 n +0011912444 00000 n +0011912497 00000 n +0011912550 00000 n +0011912603 00000 n +0011912652 00000 n +0011912701 00000 n +0011912749 00000 n +0011912798 00000 n +0011912847 00000 n +0011912897 00000 n +0011912947 00000 n +0011912997 00000 n +0011913049 00000 n +0011913101 00000 n +0011913153 00000 n +0011913206 00000 n +0011913259 00000 n +0011913312 00000 n +0011913365 00000 n +0011913417 00000 n +0011913469 00000 n +0011913521 00000 n +0011913574 00000 n +0011913626 00000 n +0011913679 00000 n +0011913732 00000 n +0011913784 00000 n +0011913837 00000 n +0011913889 00000 n +0011913942 00000 n +0011913995 00000 n +0011914047 00000 n +0011914100 00000 n +0011914153 00000 n +0011914206 00000 n +0011914259 00000 n +0011914312 00000 n +0011914365 00000 n +0011914418 00000 n +0011914470 00000 n +0011914523 00000 n +0011914576 00000 n +0011914629 00000 n +0011914681 00000 n +0011914734 00000 n +0011914787 00000 n +0011914839 00000 n +0011914892 00000 n +0011914945 00000 n +0011914998 00000 n +0011915050 00000 n +0011915103 00000 n +0011915155 00000 n +0011915207 00000 n +0011915260 00000 n +0011915313 00000 n +0011915365 00000 n +0011915417 00000 n +0011915470 00000 n +0011915523 00000 n +0011915576 00000 n +0011915629 00000 n +0011915681 00000 n +0011915733 00000 n +0011915786 00000 n +0011915839 00000 n +0011915892 00000 n +0011915945 00000 n +0011915997 00000 n +0011916049 00000 n +0011916101 00000 n +0011916154 00000 n +0011916206 00000 n +0011916259 00000 n +0011916311 00000 n +0011916364 00000 n +0011916416 00000 n +0011916468 00000 n +0011916520 00000 n +0011916572 00000 n +0011916625 00000 n +0011916677 00000 n +0011916729 00000 n +0011916781 00000 n +0011916834 00000 n +0011916887 00000 n +0011916939 00000 n +0011916991 00000 n +0011917042 00000 n +0011917094 00000 n +0011917145 00000 n +0011917197 00000 n +0011917249 00000 n +0011917301 00000 n +0011917353 00000 n +0011917405 00000 n +0011917458 00000 n +0011917510 00000 n +0011917562 00000 n +0011917614 00000 n +0011917667 00000 n +0011917720 00000 n +0011917773 00000 n +0011917826 00000 n +0011917879 00000 n +0011917932 00000 n +0011917985 00000 n +0011918038 00000 n +0011918091 00000 n +0011918144 00000 n +0011918197 00000 n +0011918250 00000 n +0011918303 00000 n +0011918356 00000 n +0011918408 00000 n +0011918460 00000 n +0011918513 00000 n +0011918566 00000 n +0011918619 00000 n +0011918672 00000 n +0011918725 00000 n +0011918778 00000 n +0011918831 00000 n +0011918884 00000 n +0011918937 00000 n +0011918990 00000 n +0011919043 00000 n +0011919096 00000 n +0011919149 00000 n +0011919202 00000 n +0011919255 00000 n +0011919308 00000 n +0011919361 00000 n +0011919414 00000 n +0011919467 00000 n +0011919520 00000 n +0011919573 00000 n +0011919626 00000 n +0011919679 00000 n +0011919732 00000 n +0011919785 00000 n +0011919838 00000 n +0011919890 00000 n +0011919942 00000 n +0011919995 00000 n +0011920048 00000 n +0011920101 00000 n +0011920154 00000 n +0011920207 00000 n +0011920260 00000 n +0011920313 00000 n +0011920365 00000 n +0011920418 00000 n +0011920471 00000 n +0011920524 00000 n +0011920577 00000 n +0011920630 00000 n +0011920683 00000 n +0011920736 00000 n +0011920789 00000 n +0011920842 00000 n +0011920895 00000 n +0011920948 00000 n +0011921000 00000 n +0011921053 00000 n +0011921106 00000 n +0011921159 00000 n +0011921212 00000 n +0011921265 00000 n +0011921317 00000 n +0011921370 00000 n +0011921423 00000 n +0011921476 00000 n +0011921529 00000 n +0011921582 00000 n +0011921635 00000 n +0011921688 00000 n +0011921741 00000 n +0011921794 00000 n +0011921847 00000 n +0011921900 00000 n +0011921953 00000 n +0011922005 00000 n +0011922058 00000 n +0011922110 00000 n +0011922162 00000 n +0011922214 00000 n +0011922267 00000 n +0011922320 00000 n +0011922372 00000 n +0011922425 00000 n +0011922477 00000 n +0011922529 00000 n +0011922582 00000 n +0011922635 00000 n +0011922688 00000 n +0011922741 00000 n +0011922794 00000 n +0011922847 00000 n +0011922900 00000 n +0011922953 00000 n +0011923006 00000 n +0011923059 00000 n +0011923112 00000 n +0011923165 00000 n +0011923218 00000 n +0011923271 00000 n +0011923323 00000 n +0011923376 00000 n +0011923429 00000 n +0011923481 00000 n +0011923534 00000 n +0011923586 00000 n +0011923639 00000 n +0011923692 00000 n +0011923745 00000 n +0011923797 00000 n +0011923849 00000 n +0011923902 00000 n +0011923955 00000 n +0011924008 00000 n +0011924061 00000 n +0011924113 00000 n +0011924165 00000 n +0011924218 00000 n +0011924270 00000 n +0011924323 00000 n +0011924375 00000 n +0011924428 00000 n +0011924481 00000 n +0011924534 00000 n +0011924587 00000 n +0011924640 00000 n +0011924693 00000 n +0011924746 00000 n +0011924799 00000 n +0011924852 00000 n +0011924905 00000 n +0011924958 00000 n +0011925011 00000 n +0011925064 00000 n +0011925117 00000 n +0011925169 00000 n +0011925222 00000 n +0011925275 00000 n +0011925328 00000 n +0011925381 00000 n +0011925434 00000 n +0011925487 00000 n +0011925540 00000 n +0011925592 00000 n +0011925644 00000 n +0011925695 00000 n +0011925747 00000 n +0011925798 00000 n +0011925850 00000 n +0011925902 00000 n +0011925954 00000 n +0011926007 00000 n +0011926059 00000 n +0011926112 00000 n +0011926165 00000 n +0011926218 00000 n +0011926271 00000 n +0011926324 00000 n +0011926377 00000 n +0011926430 00000 n +0011926483 00000 n +0011926536 00000 n +0011926589 00000 n +0011926642 00000 n +0011926695 00000 n +0011926748 00000 n +0011926801 00000 n +0011926853 00000 n +0011926906 00000 n +0011926958 00000 n +0011927011 00000 n +0011927064 00000 n +0011927116 00000 n +0011927169 00000 n +0011927222 00000 n +0011927275 00000 n +0011927328 00000 n +0011927381 00000 n +0011927433 00000 n +0011927486 00000 n +0011927539 00000 n +0011927591 00000 n +0011927643 00000 n +0011927696 00000 n +0011927749 00000 n +0011927802 00000 n +0011927854 00000 n +0011927907 00000 n +0011927960 00000 n +0011928012 00000 n +0011928064 00000 n +0011928116 00000 n +0011928169 00000 n +0011928222 00000 n +0011928275 00000 n +0011928327 00000 n +0011928380 00000 n +0011928433 00000 n +0011928485 00000 n +0011928537 00000 n +0011928590 00000 n +0011928642 00000 n +0011928694 00000 n +0011928746 00000 n +0011928798 00000 n +0011928851 00000 n +0011928904 00000 n +0011928957 00000 n +0011929010 00000 n +0011929063 00000 n +0011929115 00000 n +0011929167 00000 n +0011929219 00000 n +0011929272 00000 n +0011929325 00000 n +0011929378 00000 n +0011929431 00000 n +0011929484 00000 n +0011929537 00000 n +0011929590 00000 n +0011929643 00000 n +0011929696 00000 n +0011929748 00000 n +0011929801 00000 n +0011929853 00000 n +0011929905 00000 n +0011929957 00000 n +0011930010 00000 n +0011930062 00000 n +0011930114 00000 n +0011930165 00000 n +0011930217 00000 n +0011930268 00000 n +0011930320 00000 n +0011930372 00000 n +0011930424 00000 n +0011930477 00000 n +0011930530 00000 n +0011930583 00000 n +0011930636 00000 n +0011930689 00000 n +0011930742 00000 n +0011930795 00000 n +0011930848 00000 n +0011930901 00000 n +0011930954 00000 n +0011931007 00000 n +0011931060 00000 n +0011931113 00000 n +0011931166 00000 n +0011931219 00000 n +0011931272 00000 n +0011931325 00000 n +0011931378 00000 n +0011931431 00000 n +0011931484 00000 n +0011931537 00000 n +0011931590 00000 n +0011931643 00000 n +0011931696 00000 n +0011931749 00000 n +0011931802 00000 n +0011931855 00000 n +0011931908 00000 n +0011931961 00000 n +0011932014 00000 n +0011932067 00000 n +0011932120 00000 n +0011932173 00000 n +0011932226 00000 n +0011932279 00000 n +0011932332 00000 n +0011932385 00000 n +0011932438 00000 n +0011932490 00000 n +0011932542 00000 n +0011932595 00000 n +0011932647 00000 n +0011932700 00000 n +0011932753 00000 n +0011932806 00000 n +0011932859 00000 n +0011932911 00000 n +0011932963 00000 n +0011933016 00000 n +0011933068 00000 n +0011933121 00000 n +0011933173 00000 n +0011933225 00000 n +0011933276 00000 n +0011933328 00000 n +0011933379 00000 n +0011933431 00000 n +0011933483 00000 n +0011933535 00000 n +0011933588 00000 n +0011933640 00000 n +0011933693 00000 n +0011933745 00000 n +0011933798 00000 n +0011933851 00000 n +0011933903 00000 n +0011933956 00000 n +0011934008 00000 n +0011934061 00000 n +0011934114 00000 n +0011934167 00000 n +0011934220 00000 n +0011934272 00000 n +0011934325 00000 n +0011934377 00000 n +0011934429 00000 n +0011934482 00000 n +0011934534 00000 n +0011934586 00000 n +0011934639 00000 n +0011934692 00000 n +0011934744 00000 n +0011934796 00000 n +0011934849 00000 n +0011934901 00000 n +0011934953 00000 n +0011935005 00000 n +0011935058 00000 n +0011935110 00000 n +0011935162 00000 n +0011935215 00000 n +0011935268 00000 n +0011935321 00000 n +0011935374 00000 n +0011935427 00000 n +0011935480 00000 n +0011935533 00000 n +0011935586 00000 n +0011935639 00000 n +0011935692 00000 n +0011935745 00000 n +0011935797 00000 n +0011935850 00000 n +0011935903 00000 n +0011935956 00000 n +0011936009 00000 n +0011936062 00000 n +0011936114 00000 n +0011936167 00000 n +0011936220 00000 n +0011936272 00000 n +0011936324 00000 n +0011936377 00000 n +0011936430 00000 n +0011936482 00000 n +0011936535 00000 n +0011936588 00000 n +0011936641 00000 n +0011936693 00000 n +0011936746 00000 n +0011936798 00000 n +0011936851 00000 n +0011936904 00000 n +0011936956 00000 n +0011937009 00000 n +0011937062 00000 n +0011937115 00000 n +0011937168 00000 n +0011937220 00000 n +0011937273 00000 n +0011937326 00000 n +0011937378 00000 n +0011937430 00000 n +0011937483 00000 n +0011937536 00000 n +0011937589 00000 n +0011937642 00000 n +0011937695 00000 n +0011937748 00000 n +0011937801 00000 n +0011937854 00000 n +0011937907 00000 n +0011937959 00000 n +0011938011 00000 n +0011938064 00000 n +0011938117 00000 n +0011938170 00000 n +0011938222 00000 n +0011938275 00000 n +0011938328 00000 n +0011938381 00000 n +0011938434 00000 n +0011938487 00000 n +0011938540 00000 n +0011938593 00000 n +0011938646 00000 n +0011938699 00000 n +0011938752 00000 n +0011938804 00000 n +0011938857 00000 n +0011938909 00000 n +0011938961 00000 n +0011939013 00000 n +0011939065 00000 n +0011939117 00000 n +0011939170 00000 n +0011939223 00000 n +0011939276 00000 n +0011939329 00000 n +0011939382 00000 n +0011939435 00000 n +0011939488 00000 n +0011939541 00000 n +0011939594 00000 n +0011939647 00000 n +0011939700 00000 n +0011939753 00000 n +0011939806 00000 n +0011939859 00000 n +0011939912 00000 n +0011939965 00000 n +0011940018 00000 n +0011940071 00000 n +0011940124 00000 n +0011940177 00000 n +0011940230 00000 n +0011940283 00000 n +0011940336 00000 n +0011940389 00000 n +0011940442 00000 n +0011940495 00000 n +0011940548 00000 n +0011940601 00000 n +0011940654 00000 n +0011940707 00000 n +0011940760 00000 n +0011940813 00000 n +0011940866 00000 n +0011940919 00000 n +0011940972 00000 n +0011941025 00000 n +0011941078 00000 n +0011941131 00000 n +0011941183 00000 n +0011941235 00000 n +0011941288 00000 n +0011941341 00000 n +0011941393 00000 n +0011941446 00000 n +0011941499 00000 n +0011941552 00000 n +0011941605 00000 n +0011941658 00000 n +0011941710 00000 n +0011941763 00000 n +0011941815 00000 n +0011941868 00000 n +0011941920 00000 n +0011941973 00000 n +0011942025 00000 n +0011942078 00000 n +0011942130 00000 n +0011942183 00000 n +0011942236 00000 n +0011942289 00000 n +0011942342 00000 n +0011942395 00000 n +0011942447 00000 n +0011942500 00000 n +0011942552 00000 n +0011942604 00000 n +0011942657 00000 n +0011942710 00000 n +0011942762 00000 n +0011942815 00000 n +0011942868 00000 n +0011942921 00000 n +0011942973 00000 n +0011943026 00000 n +0011943079 00000 n +0011943131 00000 n +0011943183 00000 n +0011943236 00000 n +0011943288 00000 n +0011943341 00000 n +0011943394 00000 n +0011943446 00000 n +0011943499 00000 n +0011943552 00000 n +0011943605 00000 n +0011943657 00000 n +0011943710 00000 n +0011943763 00000 n +0011943816 00000 n +0011943869 00000 n +0011943921 00000 n +0011943974 00000 n +0011944027 00000 n +0011944080 00000 n +0011944132 00000 n +0011944185 00000 n +0011944237 00000 n +0011944290 00000 n +0011944343 00000 n +0011944396 00000 n +0011944449 00000 n +0011944501 00000 n +0011944554 00000 n +0011944606 00000 n +0011944658 00000 n +0011944711 00000 n +0011944764 00000 n +0011944817 00000 n +0011944870 00000 n +0011944922 00000 n +0011944975 00000 n +0011945027 00000 n +0011945080 00000 n +0011945133 00000 n +0011945186 00000 n +0011945239 00000 n +0011945292 00000 n +0011945345 00000 n +0011945397 00000 n +0011945450 00000 n +0011945503 00000 n +0011945556 00000 n +0011945608 00000 n +0011945660 00000 n +0011945713 00000 n +0011945766 00000 n +0011945819 00000 n +0011945872 00000 n +0011945925 00000 n +0011945978 00000 n +0011946031 00000 n +0011946084 00000 n +0011946137 00000 n +0011946190 00000 n +0011946242 00000 n +0011946295 00000 n +0011946348 00000 n +0011946401 00000 n +0011946454 00000 n +0011946506 00000 n +0011946559 00000 n +0011946611 00000 n +0011946664 00000 n +0011946717 00000 n +0011946770 00000 n +0011946823 00000 n +0011946876 00000 n +0011946929 00000 n +0011946982 00000 n +0011947035 00000 n +0011947088 00000 n +0011947141 00000 n +0011947193 00000 n +0011947245 00000 n +0011947298 00000 n +0011947350 00000 n +0011947403 00000 n +0011947456 00000 n +0011947509 00000 n +0011947562 00000 n +0011947615 00000 n +0011947668 00000 n +0011947721 00000 n +0011947774 00000 n +0011947827 00000 n +0011947880 00000 n +0011947933 00000 n +0011947986 00000 n +0011948039 00000 n +0011948092 00000 n +0011948145 00000 n +0011948198 00000 n +0011948251 00000 n +0011948304 00000 n +0011948357 00000 n +0011948409 00000 n +0011948462 00000 n +0011948514 00000 n +0011948567 00000 n +0011948620 00000 n +0011948673 00000 n +0011948726 00000 n +0011948778 00000 n +0011948831 00000 n +0011948883 00000 n +0011948936 00000 n +0011948989 00000 n +0011949042 00000 n +0011949095 00000 n +0011949148 00000 n +0011949201 00000 n +0011949254 00000 n +0011949307 00000 n +0011949359 00000 n +0011949412 00000 n +0011949465 00000 n +0011949518 00000 n +0011949571 00000 n +0011949623 00000 n +0011949676 00000 n +0011949729 00000 n +0011949782 00000 n +0011949835 00000 n +0011949888 00000 n +0011949941 00000 n +0011949994 00000 n +0011950047 00000 n +0011950100 00000 n +0011950153 00000 n +0011950206 00000 n +0011950259 00000 n +0011950312 00000 n +0011950365 00000 n +0011950417 00000 n +0011950470 00000 n +0011950523 00000 n +0011950576 00000 n +0011950629 00000 n +0011950681 00000 n +0011950734 00000 n +0011950787 00000 n +0011950840 00000 n +0011950893 00000 n +0011950946 00000 n +0011950999 00000 n +0011951052 00000 n +0011951105 00000 n +0011951158 00000 n +0011951211 00000 n +0011951263 00000 n +0011951316 00000 n +0011951368 00000 n +0011951420 00000 n +0011951473 00000 n +0011951526 00000 n +0011951579 00000 n +0011951632 00000 n +0011951685 00000 n +0011951738 00000 n +0011951791 00000 n +0011951844 00000 n +0011951896 00000 n +0011951949 00000 n +0011952002 00000 n +0011952055 00000 n +0011952108 00000 n +0011952160 00000 n +0011952213 00000 n +0011952265 00000 n +0011952318 00000 n +0011952370 00000 n +0011952422 00000 n +0011952475 00000 n +0011952528 00000 n +0011952581 00000 n +0011952634 00000 n +0011952687 00000 n +0011952740 00000 n +0011952793 00000 n +0011952846 00000 n +0011952899 00000 n +0011952952 00000 n +0011953005 00000 n +0011953058 00000 n +0011953111 00000 n +0011953164 00000 n +0011953217 00000 n +0011953269 00000 n +0011953321 00000 n +0011953372 00000 n +0011953424 00000 n +0011953475 00000 n +0011953527 00000 n +0011953579 00000 n +0011953631 00000 n +0011953683 00000 n +0011953735 00000 n +0011953788 00000 n +0011953841 00000 n +0011953894 00000 n +0011953946 00000 n +0011953999 00000 n +0011954052 00000 n +0011954104 00000 n +0011954157 00000 n +0011954210 00000 n +0011954262 00000 n +0011954314 00000 n +0011954366 00000 n +0011954418 00000 n +0011954469 00000 n +0011954521 00000 n +0011954572 00000 n +0011954624 00000 n +0011954676 00000 n +0011954728 00000 n +0011954780 00000 n +0011954833 00000 n +0011954886 00000 n +0011954939 00000 n +0011954991 00000 n +0011955044 00000 n +0011955097 00000 n +0011955150 00000 n +0011955202 00000 n +0011955255 00000 n +0011955308 00000 n +0011955361 00000 n +0011955414 00000 n +0011955467 00000 n +0011955520 00000 n +0011955573 00000 n +0011955626 00000 n +0011955679 00000 n +0011955732 00000 n +0011955785 00000 n +0011955837 00000 n +0011955890 00000 n +0011955943 00000 n +0011955996 00000 n +0011956048 00000 n +0011956101 00000 n +0011956154 00000 n +0011956206 00000 n +0011956258 00000 n +0011956311 00000 n +0011956364 00000 n +0011956416 00000 n +0011956468 00000 n +0011956521 00000 n +0011956574 00000 n +0011956626 00000 n +0011956679 00000 n +0011956732 00000 n +0011956785 00000 n +0011956838 00000 n +0011956891 00000 n +0011956944 00000 n +0011956997 00000 n +0011957050 00000 n +0011957103 00000 n +0011957156 00000 n +0011957208 00000 n +0011957260 00000 n +0011957313 00000 n +0011957366 00000 n +0011957419 00000 n +0011957472 00000 n +0011957524 00000 n +0011957577 00000 n +0011957630 00000 n +0011957682 00000 n +0011957734 00000 n +0011957787 00000 n +0011957840 00000 n +0011957893 00000 n +0011957946 00000 n +0011957998 00000 n +0011958051 00000 n +0011958104 00000 n +0011958157 00000 n +0011958210 00000 n +0011958262 00000 n +0011958315 00000 n +0011958368 00000 n +0011958420 00000 n +0011958473 00000 n +0011958526 00000 n +0011958578 00000 n +0011958631 00000 n +0011958684 00000 n +0011958737 00000 n +0011958789 00000 n +0011958842 00000 n +0011958895 00000 n +0011958948 00000 n +0011959001 00000 n +0011959054 00000 n +0011959107 00000 n +0011959160 00000 n +0011959213 00000 n +0011959266 00000 n +0011959319 00000 n +0011959372 00000 n +0011959425 00000 n +0011959478 00000 n +0011959531 00000 n +0011959583 00000 n +0011959635 00000 n +0011959687 00000 n +0011959739 00000 n +0011959791 00000 n +0011959843 00000 n +0011959896 00000 n +0011959949 00000 n +0011960002 00000 n +0011960055 00000 n +0011960108 00000 n +0011960161 00000 n +0011960214 00000 n +0011960267 00000 n +0011960320 00000 n +0011960373 00000 n +0011960426 00000 n +0011960479 00000 n +0011960532 00000 n +0011960585 00000 n +0011960638 00000 n +0011960691 00000 n +0011960744 00000 n +0011960797 00000 n +0011960850 00000 n +0011960903 00000 n +0011960956 00000 n +0011961009 00000 n +0011961062 00000 n +0011961115 00000 n +0011961168 00000 n +0011961221 00000 n +0011961274 00000 n +0011961327 00000 n +0011961380 00000 n +0011961433 00000 n +0011961486 00000 n +0011961539 00000 n +0011961592 00000 n +0011961645 00000 n +0011961698 00000 n +0011961751 00000 n +0011961804 00000 n +0011961857 00000 n +0011961910 00000 n +0011961962 00000 n +0011962014 00000 n +0011962066 00000 n +0011962119 00000 n +0011962172 00000 n +0011962225 00000 n +0011962278 00000 n +0011962331 00000 n +0011962384 00000 n +0011962437 00000 n +0011962490 00000 n +0011962543 00000 n +0011962596 00000 n +0011962649 00000 n +0011962702 00000 n +0011962755 00000 n +0011962808 00000 n +0011962861 00000 n +0011962914 00000 n +0011962967 00000 n +0011963020 00000 n +0011963073 00000 n +0011963126 00000 n +0011963179 00000 n +0011963232 00000 n +0011963285 00000 n +0011963338 00000 n +0011963391 00000 n +0011963444 00000 n +0011963497 00000 n +0011963550 00000 n +0011963603 00000 n +0011963656 00000 n +0011963709 00000 n +0011963762 00000 n +0011963815 00000 n +0011963868 00000 n +0011963921 00000 n +0011963974 00000 n +0011964027 00000 n +0011964080 00000 n +0011964132 00000 n +0011964184 00000 n +0011964235 00000 n +0011964287 00000 n +0011964338 00000 n +0011964390 00000 n +0011964442 00000 n +0011964494 00000 n +0011964547 00000 n +0011964600 00000 n +0011964652 00000 n +0011964705 00000 n +0011964758 00000 n +0011964811 00000 n +0011964864 00000 n +0011964917 00000 n +0011964970 00000 n +0011965023 00000 n +0011965076 00000 n +0011965129 00000 n +0011965182 00000 n +0011965235 00000 n +0011965288 00000 n +0011965341 00000 n +0011965394 00000 n +0011965447 00000 n +0011965500 00000 n +0011965553 00000 n +0011965606 00000 n +0011965659 00000 n +0011965712 00000 n +0011965765 00000 n +0011965818 00000 n +0011965871 00000 n +0011965924 00000 n +0011965977 00000 n +0011966030 00000 n +0011966083 00000 n +0011966136 00000 n +0011966189 00000 n +0011966242 00000 n +0011966295 00000 n +0011966348 00000 n +0011966401 00000 n +0011966453 00000 n +0011966505 00000 n +0011966558 00000 n +0011966611 00000 n +0011966663 00000 n +0011966715 00000 n +0011966767 00000 n +0011966819 00000 n +0011966871 00000 n +0011966923 00000 n +0011966975 00000 n +0011967027 00000 n +0011967079 00000 n +0011967132 00000 n +0011967185 00000 n +0011967237 00000 n +0011967290 00000 n +0011967343 00000 n +0011967396 00000 n +0011967449 00000 n +0011967501 00000 n +0011967553 00000 n +0011967605 00000 n +0011967657 00000 n +0011967709 00000 n +0011967762 00000 n +0011967815 00000 n +0011967868 00000 n +0011967920 00000 n +0011967972 00000 n +0011968025 00000 n +0011968077 00000 n +0011968129 00000 n +0011968181 00000 n +0011968233 00000 n +0011968286 00000 n +0011968338 00000 n +0011968390 00000 n +0011968442 00000 n +0011968494 00000 n +0011968546 00000 n +0011968598 00000 n +0011968650 00000 n +0011968702 00000 n +0011968754 00000 n +0011968806 00000 n +0011968859 00000 n +0011968912 00000 n +0011968964 00000 n +0011969017 00000 n +0011969070 00000 n +0011969123 00000 n +0011969176 00000 n +0011969228 00000 n +0011969281 00000 n +0011969334 00000 n +0011969387 00000 n +0011969440 00000 n +0011969493 00000 n +0011969546 00000 n +0011969599 00000 n +0011969651 00000 n +0011969704 00000 n +0011969757 00000 n +0011969810 00000 n +0011969863 00000 n +0011969916 00000 n +0011969969 00000 n +0011970022 00000 n +0011970075 00000 n +0011970128 00000 n +0011970181 00000 n +0011970234 00000 n +0011970287 00000 n +0011970340 00000 n +0011970393 00000 n +0011970446 00000 n +0011970499 00000 n +0011970551 00000 n +0011970603 00000 n +0011970655 00000 n +0011970708 00000 n +0011970761 00000 n +0011970814 00000 n +0011970867 00000 n +0011970920 00000 n +0011970973 00000 n +0011971026 00000 n +0011971079 00000 n +0011971131 00000 n +0011971184 00000 n +0011971237 00000 n +0011971290 00000 n +0011971343 00000 n +0011971396 00000 n +0011971449 00000 n +0011971502 00000 n +0011971555 00000 n +0011971607 00000 n +0011971659 00000 n +0011971711 00000 n +0011971763 00000 n +0011971816 00000 n +0011971869 00000 n +0011971921 00000 n +0011971974 00000 n +0011972027 00000 n +0011972079 00000 n +0011972132 00000 n +0011972184 00000 n +0011972237 00000 n +0011972290 00000 n +0011972342 00000 n +0011972395 00000 n +0011972448 00000 n +0011972500 00000 n +0011972552 00000 n +0011972604 00000 n +0011972656 00000 n +0011972708 00000 n +0011972761 00000 n +0011972814 00000 n +0011972867 00000 n +0011972919 00000 n +0011972972 00000 n +0011973025 00000 n +0011973078 00000 n +0011973131 00000 n +0011973184 00000 n +0011973237 00000 n +0011973290 00000 n +0011973342 00000 n +0011973395 00000 n +0011973448 00000 n +0011973501 00000 n +0011973554 00000 n +0011973607 00000 n +0011973660 00000 n +0011973713 00000 n +0011973766 00000 n +0011973818 00000 n +0011973871 00000 n +0011973923 00000 n +0011973976 00000 n +0011974028 00000 n +0011974080 00000 n +0011974133 00000 n +0011974186 00000 n +0011974238 00000 n +0011974291 00000 n +0011974344 00000 n +0011974396 00000 n +0011974448 00000 n +0011974500 00000 n +0011974552 00000 n +0011974604 00000 n +0011974657 00000 n +0011974710 00000 n +0011974763 00000 n +0011974816 00000 n +0011974869 00000 n +0011974922 00000 n +0011974975 00000 n +0011975028 00000 n +0011975081 00000 n +0011975134 00000 n +0011975187 00000 n +0011975240 00000 n +0011975293 00000 n +0011975346 00000 n +0011975399 00000 n +0011975452 00000 n +0011975504 00000 n +0011975557 00000 n +0011975610 00000 n +0011975663 00000 n +0011975716 00000 n +0011975769 00000 n +0011975822 00000 n +0011975875 00000 n +0011975928 00000 n +0011975981 00000 n +0011976034 00000 n +0011976087 00000 n +0011976139 00000 n +0011976191 00000 n +0011976244 00000 n +0011976297 00000 n +0011976350 00000 n +0011976402 00000 n +0011976455 00000 n +0011976508 00000 n +0011976561 00000 n +0011976614 00000 n +0011976666 00000 n +0011976718 00000 n +0011976771 00000 n +0011976824 00000 n +0011976877 00000 n +0011976929 00000 n +0011976982 00000 n +0011977035 00000 n +0011977088 00000 n +0011977141 00000 n +0011977193 00000 n +0011977246 00000 n +0011977299 00000 n +0011977352 00000 n +0011977404 00000 n +0011977457 00000 n +0011977510 00000 n +0011977563 00000 n +0011977616 00000 n +0011977669 00000 n +0011977722 00000 n +0011977774 00000 n +0011977827 00000 n +0011977880 00000 n +0011977933 00000 n +0011977986 00000 n +0011978039 00000 n +0011978092 00000 n +0011978145 00000 n +0011978198 00000 n +0011978251 00000 n +0011978304 00000 n +0011978357 00000 n +0011978410 00000 n +0011978463 00000 n +0011978516 00000 n +0011978569 00000 n +0011978622 00000 n +0011978675 00000 n +0011978728 00000 n +0011978781 00000 n +0011978834 00000 n +0011978887 00000 n +0011978940 00000 n +0011978993 00000 n +0011979046 00000 n +0011979099 00000 n +0011979152 00000 n +0011979204 00000 n +0011979257 00000 n +0011979310 00000 n +0011979363 00000 n +0011979415 00000 n +0011979468 00000 n +0011979521 00000 n +0011979574 00000 n +0011979627 00000 n +0011979680 00000 n +0011979732 00000 n +0011979785 00000 n +0011979838 00000 n +0011979891 00000 n +0011979944 00000 n +0011979997 00000 n +0011980050 00000 n +0011980103 00000 n +0011980155 00000 n +0011980208 00000 n +0011980261 00000 n +0011980314 00000 n +0011980367 00000 n +0011980420 00000 n +0011980473 00000 n +0011980526 00000 n +0011980579 00000 n +0011980632 00000 n +0011980684 00000 n +0011980736 00000 n +0011980788 00000 n +0011980841 00000 n +0011980894 00000 n +0011980947 00000 n +0011981000 00000 n +0011981053 00000 n +0011981106 00000 n +0011981159 00000 n +0011981212 00000 n +0011981265 00000 n +0011981318 00000 n +0011981371 00000 n +0011981424 00000 n +0011981477 00000 n +0011981530 00000 n +0011981583 00000 n +0011981635 00000 n +0011981687 00000 n +0011981740 00000 n +0011981793 00000 n +0011981846 00000 n +0011981899 00000 n +0011981952 00000 n +0011982005 00000 n +0011982058 00000 n +0011982111 00000 n +0011982164 00000 n +0011982217 00000 n +0011982270 00000 n +0011982323 00000 n +0011982376 00000 n +0011982429 00000 n +0011982482 00000 n +0011982535 00000 n +0011982588 00000 n +0011982641 00000 n +0011982694 00000 n +0011982747 00000 n +0011982800 00000 n +0011982853 00000 n +0011982906 00000 n +0011982959 00000 n +0011983012 00000 n +0011983064 00000 n +0011983117 00000 n +0011983169 00000 n +0011983221 00000 n +0011983273 00000 n +0011983326 00000 n +0011983379 00000 n +0011983431 00000 n +0011983484 00000 n +0011983537 00000 n +0011983590 00000 n +0011983643 00000 n +0011983696 00000 n +0011983749 00000 n +0011983802 00000 n +0011983854 00000 n +0011983907 00000 n +0011983960 00000 n +0011984012 00000 n +0011984065 00000 n +0011984118 00000 n +0011984171 00000 n +0011984224 00000 n +0011984277 00000 n +0011984329 00000 n +0011984381 00000 n +0011984433 00000 n +0011984485 00000 n +0011984538 00000 n +0011984591 00000 n +0011984643 00000 n +0011984696 00000 n +0011984748 00000 n +0011984801 00000 n +0011984853 00000 n +0011984906 00000 n +0011984958 00000 n +0011985011 00000 n +0011985064 00000 n +0011985116 00000 n +0011985169 00000 n +0011985222 00000 n +0011985274 00000 n +0011985327 00000 n +0011985379 00000 n +0011985431 00000 n +0011985483 00000 n +0011985536 00000 n +0011985589 00000 n +0011985642 00000 n +0011985695 00000 n +0011985748 00000 n +0011985801 00000 n +0011985854 00000 n +0011985906 00000 n +0011985959 00000 n +0011986012 00000 n +0011986065 00000 n +0011986118 00000 n +0011986171 00000 n +0011986224 00000 n +0011986277 00000 n +0011986330 00000 n +0011986383 00000 n +0011986436 00000 n +0011986489 00000 n +0011986542 00000 n +0011986595 00000 n +0011986648 00000 n +0011986701 00000 n +0011986754 00000 n +0011986807 00000 n +0011986860 00000 n +0011986913 00000 n +0011986966 00000 n +0011987019 00000 n +0011987072 00000 n +0011987125 00000 n +0011987178 00000 n +0011987231 00000 n +0011987284 00000 n +0011987337 00000 n +0011987390 00000 n +0011987443 00000 n +0011987496 00000 n +0011987549 00000 n +0011987602 00000 n +0011987655 00000 n +0011987708 00000 n +0011987761 00000 n +0011987814 00000 n +0011987867 00000 n +0011987920 00000 n +0011987973 00000 n +0011988026 00000 n +0011988079 00000 n +0011988132 00000 n +0011988185 00000 n +0011988238 00000 n +0011988291 00000 n +0011988344 00000 n +0011988397 00000 n +0011988450 00000 n +0011988503 00000 n +0011988556 00000 n +0011988609 00000 n +0011988662 00000 n +0011988715 00000 n +0011988768 00000 n +0011988821 00000 n +0011988873 00000 n +0011988925 00000 n +0011988977 00000 n +0011989029 00000 n +0011989081 00000 n +0011989134 00000 n +0011989187 00000 n +0011989240 00000 n +0011989293 00000 n +0011989346 00000 n +0011989399 00000 n +0011989452 00000 n +0011989505 00000 n +0011989558 00000 n +0011989611 00000 n +0011989664 00000 n +0011989717 00000 n +0011989770 00000 n +0011989822 00000 n +0011989875 00000 n +0011989928 00000 n +0011989981 00000 n +0011990034 00000 n +0011990086 00000 n +0011990138 00000 n +0011990190 00000 n +0011990242 00000 n +0011990294 00000 n +0011990346 00000 n +0011990398 00000 n +0011990450 00000 n +0011990503 00000 n +0011990556 00000 n +0011990609 00000 n +0011990662 00000 n +0011990714 00000 n +0011990767 00000 n +0011990820 00000 n +0011990872 00000 n +0011990924 00000 n +0011990977 00000 n +0011991030 00000 n +0011991083 00000 n +0011991136 00000 n +0011991189 00000 n +0011991242 00000 n +0011991295 00000 n +0011991348 00000 n +0011991401 00000 n +0011991454 00000 n +0011991507 00000 n +0011991560 00000 n +0011991612 00000 n +0011991665 00000 n +0011991718 00000 n +0011991771 00000 n +0011991824 00000 n +0011991877 00000 n +0011991929 00000 n +0011991982 00000 n +0011992035 00000 n +0011992088 00000 n +0011992141 00000 n +0011992193 00000 n +0011992246 00000 n +0011992299 00000 n +0011992352 00000 n +0011992405 00000 n +0011992458 00000 n +0011992511 00000 n +0011992564 00000 n +0011992617 00000 n +0011992670 00000 n +0011992723 00000 n +0011992776 00000 n +0011992829 00000 n +0011992882 00000 n +0011992935 00000 n +0011992988 00000 n +0011993041 00000 n +0011993094 00000 n +0011993147 00000 n +0011993200 00000 n +0011993253 00000 n +0011993306 00000 n +0011993359 00000 n +0011993412 00000 n +0011993465 00000 n +0011993518 00000 n +0011993571 00000 n +0011993624 00000 n +0011993677 00000 n +0011993730 00000 n +0011993783 00000 n +0011993836 00000 n +0011993889 00000 n +0011993942 00000 n +0011993995 00000 n +0011994047 00000 n +0011994100 00000 n +0011994153 00000 n +0011994206 00000 n +0011994259 00000 n +0011994311 00000 n +0011994364 00000 n +0011994417 00000 n +0011994470 00000 n +0011994522 00000 n +0011994574 00000 n +0011994627 00000 n +0011994680 00000 n +0011994733 00000 n +0011994786 00000 n +0011994839 00000 n +0011994892 00000 n +0011994945 00000 n +0011994998 00000 n +0011995050 00000 n +0011995103 00000 n +0011995156 00000 n +0011995209 00000 n +0011995262 00000 n +0011995315 00000 n +0011995368 00000 n +0011995421 00000 n +0011995474 00000 n +0011995527 00000 n +0011995580 00000 n +0011995633 00000 n +0011995686 00000 n +0011995739 00000 n +0011995792 00000 n +0011995845 00000 n +0011995898 00000 n +0011995951 00000 n +0011996003 00000 n +0011996055 00000 n +0011996108 00000 n +0011996161 00000 n +0011996214 00000 n +0011996267 00000 n +0011996320 00000 n +0011996372 00000 n +0011996425 00000 n +0011996478 00000 n +0011996531 00000 n +0011996584 00000 n +0011996637 00000 n +0011996690 00000 n +0011996743 00000 n +0011996796 00000 n +0011996848 00000 n +0011996900 00000 n +0011996953 00000 n +0011997006 00000 n +0011997059 00000 n +0011997112 00000 n +0011997164 00000 n +0011997216 00000 n +0011997268 00000 n +0011997320 00000 n +0011997373 00000 n +0011997426 00000 n +0011997479 00000 n +0011997532 00000 n +0011997584 00000 n +0011997636 00000 n +0011997688 00000 n +0011997741 00000 n +0011997794 00000 n +0011997847 00000 n +0011997900 00000 n +0011997953 00000 n +0011998006 00000 n +0011998059 00000 n +0011998112 00000 n +0011998165 00000 n +0011998218 00000 n +0011998271 00000 n +0011998324 00000 n +0011998377 00000 n +0011998430 00000 n +0011998483 00000 n +0011998536 00000 n +0011998589 00000 n +0011998642 00000 n +0011998695 00000 n +0011998748 00000 n +0011998801 00000 n +0011998853 00000 n +0011998905 00000 n +0011998958 00000 n +0011999011 00000 n +0011999064 00000 n +0011999117 00000 n +0011999170 00000 n +0011999223 00000 n +0011999276 00000 n +0011999329 00000 n +0011999382 00000 n +0011999435 00000 n +0011999487 00000 n +0011999540 00000 n +0011999593 00000 n +0011999646 00000 n +0011999699 00000 n +0011999752 00000 n +0011999805 00000 n +0011999858 00000 n +0011999911 00000 n +0011999964 00000 n +0012000017 00000 n +0012000070 00000 n +0012000123 00000 n +0012000176 00000 n +0012000229 00000 n +0012000282 00000 n +0012000335 00000 n +0012000387 00000 n +0012000439 00000 n +0012000492 00000 n +0012000544 00000 n +0012000596 00000 n +0012000649 00000 n +0012000701 00000 n +0012000754 00000 n +0012000807 00000 n +0012000860 00000 n +0012000913 00000 n +0012000966 00000 n +0012001019 00000 n +0012001071 00000 n +0012001123 00000 n +0012001176 00000 n +0012001228 00000 n +0012001281 00000 n +0012001333 00000 n +0012001386 00000 n +0012001439 00000 n +0012001491 00000 n +0012001543 00000 n +0012001596 00000 n +0012001649 00000 n +0012001702 00000 n +0012001755 00000 n +0012001808 00000 n +0012001861 00000 n +0012001913 00000 n +0012001966 00000 n +0012002019 00000 n +0012002072 00000 n +0012002125 00000 n +0012002178 00000 n +0012002231 00000 n +0012002284 00000 n +0012002337 00000 n +0012002390 00000 n +0012002443 00000 n +0012002496 00000 n +0012002549 00000 n +0012002602 00000 n +0012002655 00000 n +0012002708 00000 n +0012002761 00000 n +0012002814 00000 n +0012002867 00000 n +0012002920 00000 n +0012002973 00000 n +0012003026 00000 n +0012003079 00000 n +0012003132 00000 n +0012003185 00000 n +0012003238 00000 n +0012003291 00000 n +0012003344 00000 n +0012003397 00000 n +0012003450 00000 n +0012003503 00000 n +0012003556 00000 n +0012003609 00000 n +0012003662 00000 n +0012003715 00000 n +0012003768 00000 n +0012003821 00000 n +0012003874 00000 n +0012003927 00000 n +0012003980 00000 n +0012004033 00000 n +0012004086 00000 n +0012004139 00000 n +0012004192 00000 n +0012004245 00000 n +0012004298 00000 n +0012004351 00000 n +0012004404 00000 n +0012004457 00000 n +0012004509 00000 n +0012004562 00000 n +0012004615 00000 n +0012004668 00000 n +0012004721 00000 n +0012004774 00000 n +0012004826 00000 n +0012004879 00000 n +0012004932 00000 n +0012004985 00000 n +0012005038 00000 n +0012005090 00000 n +0012005143 00000 n +0012005196 00000 n +0012005249 00000 n +0012005302 00000 n +0012005355 00000 n +0012005408 00000 n +0012005461 00000 n +0012005514 00000 n +0012005567 00000 n +0012005619 00000 n +0012005672 00000 n +0012005725 00000 n +0012005778 00000 n +0012005831 00000 n +0012005884 00000 n +0012005937 00000 n +0012005990 00000 n +0012006043 00000 n +0012006096 00000 n +0012006149 00000 n +0012006202 00000 n +0012006255 00000 n +0012006308 00000 n +0012006361 00000 n +0012006414 00000 n +0012006467 00000 n +0012006519 00000 n +0012006572 00000 n +0012006625 00000 n +0012006678 00000 n +0012006731 00000 n +0012006784 00000 n +0012006836 00000 n +0012006889 00000 n +0012006942 00000 n +0012006995 00000 n +0012007048 00000 n +0012007100 00000 n +0012007152 00000 n +0012007204 00000 n +0012007257 00000 n +0012007310 00000 n +0012007363 00000 n +0012007416 00000 n +0012007469 00000 n +0012007522 00000 n +0012007575 00000 n +0012007627 00000 n +0012007679 00000 n +0012007732 00000 n +0012007785 00000 n +0012007838 00000 n +0012007891 00000 n +0012007944 00000 n +0012007997 00000 n +0012008050 00000 n +0012008103 00000 n +0012008156 00000 n +0012008209 00000 n +0012008262 00000 n +0012008315 00000 n +0012008368 00000 n +0012008421 00000 n +0012008474 00000 n +0012008527 00000 n +0012008580 00000 n +0012008633 00000 n +0012008686 00000 n +0012008739 00000 n +0012008792 00000 n +0012008845 00000 n +0012008898 00000 n +0012008951 00000 n +0012009004 00000 n +0012009057 00000 n +0012009110 00000 n +0012009163 00000 n +0012009216 00000 n +0012009269 00000 n +0012009322 00000 n +0012009375 00000 n +0012009427 00000 n +0012009480 00000 n +0012009533 00000 n +0012009586 00000 n +0012009639 00000 n +0012009692 00000 n +0012009745 00000 n +0012009798 00000 n +0012009851 00000 n +0012009904 00000 n +0012009957 00000 n +0012010010 00000 n +0012010063 00000 n +0012010116 00000 n +0012010169 00000 n +0012010222 00000 n +0012010275 00000 n +0012010328 00000 n +0012010381 00000 n +0012010434 00000 n +0012010487 00000 n +0012010540 00000 n +0012010593 00000 n +0012010646 00000 n +0012010699 00000 n +0012010752 00000 n +0012010805 00000 n +0012010858 00000 n +0012010911 00000 n +0012010964 00000 n +0012011017 00000 n +0012011070 00000 n +0012011123 00000 n +0012011176 00000 n +0012011229 00000 n +0012011282 00000 n +0012011335 00000 n +0012011388 00000 n +0012011441 00000 n +0012011494 00000 n +0012011547 00000 n +0012011600 00000 n +0012011652 00000 n +0012011705 00000 n +0012011758 00000 n +0012011811 00000 n +0012011864 00000 n +0012011917 00000 n +0012011970 00000 n +0012012022 00000 n +0012012075 00000 n +0012012128 00000 n +0012012181 00000 n +0012012234 00000 n +0012012287 00000 n +0012012340 00000 n +0012012392 00000 n +0012012444 00000 n +0012012497 00000 n +0012012550 00000 n +0012012603 00000 n +0012012656 00000 n +0012012709 00000 n +0012012762 00000 n +0012012815 00000 n +0012012868 00000 n +0012012921 00000 n +0012012974 00000 n +0012013027 00000 n +0012013080 00000 n +0012013133 00000 n +0012013186 00000 n +0012013239 00000 n +0012013291 00000 n +0012013344 00000 n +0012013397 00000 n +0012013450 00000 n +0012013503 00000 n +0012013556 00000 n +0012013609 00000 n +0012013662 00000 n +0012013715 00000 n +0012013768 00000 n +0012013821 00000 n +0012013874 00000 n +0012013927 00000 n +0012013979 00000 n +0012014032 00000 n +0012014085 00000 n +0012014138 00000 n +0012014191 00000 n +0012014244 00000 n +0012014297 00000 n +0012014350 00000 n +0012014403 00000 n +0012014456 00000 n +0012014509 00000 n +0012014561 00000 n +0012014614 00000 n +0012014667 00000 n +0012014720 00000 n +0012014773 00000 n +0012014826 00000 n +0012014879 00000 n +0012014932 00000 n +0012014985 00000 n +0012015038 00000 n +0012015091 00000 n +0012015144 00000 n +0012015197 00000 n +0012015250 00000 n +0012015303 00000 n +0012015356 00000 n +0012015409 00000 n +0012015461 00000 n +0012015513 00000 n +0012015565 00000 n +0012015617 00000 n +0012015668 00000 n +0012015720 00000 n +0012015771 00000 n +0012015823 00000 n +0012015875 00000 n +0012015927 00000 n +0012015980 00000 n +0012016033 00000 n +0012016086 00000 n +0012016139 00000 n +0012016192 00000 n +0012016245 00000 n +0012016298 00000 n +0012016351 00000 n +0012016404 00000 n +0012016457 00000 n +0012016509 00000 n +0012016562 00000 n +0012016615 00000 n +0012016668 00000 n +0012016721 00000 n +0012016774 00000 n +0012016827 00000 n +0012016880 00000 n +0012016933 00000 n +0012016986 00000 n +0012017038 00000 n +0012017091 00000 n +0012017144 00000 n +0012017197 00000 n +0012017250 00000 n +0012017303 00000 n +0012017356 00000 n +0012017409 00000 n +0012017462 00000 n +0012017515 00000 n +0012017568 00000 n +0012017621 00000 n +0012017674 00000 n +0012017726 00000 n +0012017778 00000 n +0012017831 00000 n +0012017884 00000 n +0012017937 00000 n +0012017990 00000 n +0012018043 00000 n +0012018096 00000 n +0012018149 00000 n +0012018202 00000 n +0012018255 00000 n +0012018307 00000 n +0012018360 00000 n +0012018413 00000 n +0012018465 00000 n +0012018517 00000 n +0012018569 00000 n +0012018622 00000 n +0012018675 00000 n +0012018727 00000 n +0012018780 00000 n +0012018833 00000 n +0012018886 00000 n +0012018939 00000 n +0012018992 00000 n +0012019044 00000 n +0012019097 00000 n +0012019150 00000 n +0012019203 00000 n +0012019256 00000 n +0012019309 00000 n +0012019361 00000 n +0012019414 00000 n +0012019467 00000 n +0012019520 00000 n +0012019573 00000 n +0012019626 00000 n +0012019679 00000 n +0012019732 00000 n +0012019785 00000 n +0012019838 00000 n +0012019891 00000 n +0012019944 00000 n +0012019997 00000 n +0012020050 00000 n +0012020103 00000 n +0012020156 00000 n +0012020209 00000 n +0012020261 00000 n +0012020313 00000 n +0012020366 00000 n +0012020419 00000 n +0012020472 00000 n +0012020525 00000 n +0012020578 00000 n +0012020631 00000 n +0012020684 00000 n +0012020737 00000 n +0012020790 00000 n +0012020842 00000 n +0012020894 00000 n +0012020946 00000 n +0012020998 00000 n +0012021050 00000 n +0012021103 00000 n +0012021156 00000 n +0012021209 00000 n +0012021262 00000 n +0012021314 00000 n +0012021366 00000 n +0012021419 00000 n +0012021472 00000 n +0012021525 00000 n +0012021578 00000 n +0012021631 00000 n +0012021684 00000 n +0012021737 00000 n +0012021790 00000 n +0012021843 00000 n +0012021896 00000 n +0012021949 00000 n +0012022002 00000 n +0012022055 00000 n +0012022108 00000 n +0012022160 00000 n +0012022212 00000 n +0012022265 00000 n +0012022318 00000 n +0012022371 00000 n +0012022424 00000 n +0012022477 00000 n +0012022530 00000 n +0012022583 00000 n +0012022636 00000 n +0012022689 00000 n +0012022742 00000 n +0012022795 00000 n +0012022847 00000 n +0012022899 00000 n +0012022951 00000 n +0012023003 00000 n +0012023055 00000 n +0012023107 00000 n +0012023159 00000 n +0012023212 00000 n +0012023265 00000 n +0012023318 00000 n +0012023371 00000 n +0012023423 00000 n +0012023476 00000 n +0012023529 00000 n +0012023582 00000 n +0012023635 00000 n +0012023687 00000 n +0012023740 00000 n +0012023792 00000 n +0012023844 00000 n +0012023896 00000 n +0012023949 00000 n +0012024002 00000 n +0012024055 00000 n +0012024108 00000 n +0012024161 00000 n +0012024214 00000 n +0012024267 00000 n +0012024320 00000 n +0012024373 00000 n +0012024426 00000 n +0012024479 00000 n +0012024532 00000 n +0012024585 00000 n +0012024638 00000 n +0012024690 00000 n +0012024742 00000 n +0012024795 00000 n +0012024848 00000 n +0012024901 00000 n +0012024953 00000 n +0012025005 00000 n +0012025057 00000 n +0012025109 00000 n +0012025162 00000 n +0012025215 00000 n +0012025268 00000 n +0012025321 00000 n +0012025374 00000 n +0012025427 00000 n +0012025480 00000 n +0012025533 00000 n +0012025586 00000 n +0012025639 00000 n +0012025692 00000 n +0012025745 00000 n +0012025798 00000 n +0012025851 00000 n +0012025903 00000 n +0012025955 00000 n +0012026008 00000 n +0012026061 00000 n +0012026114 00000 n +0012026166 00000 n +0012026218 00000 n +0012026270 00000 n +0012026323 00000 n +0012026376 00000 n +0012026429 00000 n +0012026482 00000 n +0012026535 00000 n +0012026588 00000 n +0012026641 00000 n +0012026694 00000 n +0012026747 00000 n +0012026799 00000 n +0012026852 00000 n +0012026904 00000 n +0012026957 00000 n +0012027010 00000 n +0012027063 00000 n +0012027116 00000 n +0012027168 00000 n +0012027220 00000 n +0012027273 00000 n +0012027325 00000 n +0012027378 00000 n +0012027431 00000 n +0012027484 00000 n +0012027537 00000 n +0012027590 00000 n +0012027643 00000 n +0012027696 00000 n +0012027749 00000 n +0012027801 00000 n +0012027853 00000 n +0012027906 00000 n +0012027959 00000 n +0012028011 00000 n +0012028063 00000 n +0012028115 00000 n +0012028168 00000 n +0012028220 00000 n +0012028273 00000 n +0012028326 00000 n +0012028379 00000 n +0012028432 00000 n +0012028485 00000 n +0012028538 00000 n +0012028591 00000 n +0012028644 00000 n +0012028696 00000 n +0012028749 00000 n +0012028802 00000 n +0012028855 00000 n +0012028908 00000 n +0012028961 00000 n +0012029014 00000 n +0012029067 00000 n +0012029120 00000 n +0012029173 00000 n +0012029225 00000 n +0012029277 00000 n +0012029329 00000 n +0012029382 00000 n +0012029435 00000 n +0012029488 00000 n +0012029541 00000 n +0012029594 00000 n +0012029647 00000 n +0012029700 00000 n +0012029753 00000 n +0012029806 00000 n +0012029859 00000 n +0012029912 00000 n +0012029965 00000 n +0012030018 00000 n +0012030071 00000 n +0012030123 00000 n +0012030175 00000 n +0012030227 00000 n +0012030279 00000 n +0012030331 00000 n +0012030383 00000 n +0012030435 00000 n +0012030487 00000 n +0012030539 00000 n +0012030591 00000 n +0012030643 00000 n +0012030695 00000 n +0012030748 00000 n +0012030800 00000 n +0012030853 00000 n +0012030906 00000 n +0012030959 00000 n +0012031012 00000 n +0012031064 00000 n +0012031117 00000 n +0012031169 00000 n +0012031222 00000 n +0012031274 00000 n +0012031327 00000 n +0012031379 00000 n +0012031432 00000 n +0012031485 00000 n +0012031538 00000 n +0012031590 00000 n +0012031643 00000 n +0012031696 00000 n +0012031749 00000 n +0012031802 00000 n +0012031855 00000 n +0012031908 00000 n +0012031961 00000 n +0012032014 00000 n +0012032067 00000 n +0012032120 00000 n +0012032173 00000 n +0012032226 00000 n +0012032278 00000 n +0012032331 00000 n +0012032384 00000 n +0012032437 00000 n +0012032489 00000 n +0012032542 00000 n +0012032595 00000 n +0012032647 00000 n +0012032699 00000 n +0012032752 00000 n +0012032804 00000 n +0012032857 00000 n +0012032909 00000 n +0012032962 00000 n +0012033015 00000 n +0012033068 00000 n +0012033120 00000 n +0012033173 00000 n +0012033226 00000 n +0012033278 00000 n +0012033330 00000 n +0012033382 00000 n +0012033435 00000 n +0012033488 00000 n +0012033540 00000 n +0012033593 00000 n +0012033645 00000 n +0012033698 00000 n +0012033750 00000 n +0012033802 00000 n +0012033854 00000 n +0012033906 00000 n +0012033959 00000 n +0012034012 00000 n +0012034064 00000 n +0012034117 00000 n +0012034170 00000 n +0012034223 00000 n +0012034276 00000 n +0012034329 00000 n +0012034382 00000 n +0012034435 00000 n +0012034488 00000 n +0012034541 00000 n +0012034594 00000 n +0012034647 00000 n +0012034700 00000 n +0012034753 00000 n +0012034806 00000 n +0012034859 00000 n +0012034912 00000 n +0012034965 00000 n +0012035017 00000 n +0012035070 00000 n +0012035123 00000 n +0012035176 00000 n +0012035229 00000 n +0012035282 00000 n +0012035335 00000 n +0012035388 00000 n +0012035441 00000 n +0012035494 00000 n +0012035547 00000 n +0012035600 00000 n +0012035653 00000 n +0012035706 00000 n +0012035759 00000 n +0012035812 00000 n +0012035865 00000 n +0012035918 00000 n +0012035970 00000 n +0012036022 00000 n +0012036075 00000 n +0012036128 00000 n +0012036181 00000 n +0012036234 00000 n +0012036287 00000 n +0012036340 00000 n +0012036393 00000 n +0012036446 00000 n +0012036499 00000 n +0012036552 00000 n +0012036604 00000 n +0012036657 00000 n +0012036710 00000 n +0012036763 00000 n +0012036816 00000 n +0012036869 00000 n +0012036922 00000 n +0012036975 00000 n +0012037028 00000 n +0012037081 00000 n +0012037133 00000 n +0012037186 00000 n +0012037239 00000 n +0012037292 00000 n +0012037344 00000 n +0012037397 00000 n +0012037450 00000 n +0012037503 00000 n +0012037556 00000 n +0012037609 00000 n +0012037662 00000 n +0012037715 00000 n +0012037768 00000 n +0012037820 00000 n +0012037873 00000 n +0012037926 00000 n +0012037979 00000 n +0012038032 00000 n +0012038085 00000 n +0012038138 00000 n +0012038191 00000 n +0012038244 00000 n +0012038297 00000 n +0012038350 00000 n +0012038403 00000 n +0012038455 00000 n +0012038508 00000 n +0012038561 00000 n +0012038614 00000 n +0012038667 00000 n +0012038720 00000 n +0012038773 00000 n +0012038826 00000 n +0012038879 00000 n +0012038932 00000 n +0012038985 00000 n +0012039038 00000 n +0012039091 00000 n +0012039144 00000 n +0012039197 00000 n +0012039250 00000 n +0012039303 00000 n +0012039356 00000 n +0012039408 00000 n +0012039461 00000 n +0012039514 00000 n +0012039567 00000 n +0012039619 00000 n +0012039672 00000 n +0012039725 00000 n +0012039778 00000 n +0012039830 00000 n +0012039883 00000 n +0012039936 00000 n +0012039989 00000 n +0012040041 00000 n +0012040094 00000 n +0012040146 00000 n +0012040198 00000 n +0012040250 00000 n +0012040303 00000 n +0012040356 00000 n +0012040409 00000 n +0012040462 00000 n +0012040514 00000 n +0012040567 00000 n +0012040620 00000 n +0012040673 00000 n +0012040726 00000 n +0012040779 00000 n +0012040832 00000 n +0012040885 00000 n +0012040938 00000 n +0012040991 00000 n +0012041044 00000 n +0012041097 00000 n +0012041150 00000 n +0012041203 00000 n +0012041256 00000 n +0012041309 00000 n +0012041362 00000 n +0012041415 00000 n +0012041468 00000 n +0012041521 00000 n +0012041574 00000 n +0012041627 00000 n +0012041680 00000 n +0012041733 00000 n +0012041786 00000 n +0012041839 00000 n +0012041892 00000 n +0012041945 00000 n +0012041998 00000 n +0012042050 00000 n +0012042102 00000 n +0012042155 00000 n +0012042208 00000 n +0012042260 00000 n +0012042313 00000 n +0012042366 00000 n +0012042419 00000 n +0012042472 00000 n +0012042525 00000 n +0012042578 00000 n +0012042631 00000 n +0012042684 00000 n +0012042737 00000 n +0012042790 00000 n +0012042843 00000 n +0012042895 00000 n +0012042947 00000 n +0012042999 00000 n +0012043052 00000 n +0012043105 00000 n +0012043158 00000 n +0012043210 00000 n +0012043262 00000 n +0012043313 00000 n +0012043365 00000 n +0012043416 00000 n +0012043468 00000 n +0012043520 00000 n +0012043572 00000 n +0012043624 00000 n +0012043677 00000 n +0012043730 00000 n +0012043783 00000 n +0012043836 00000 n +0012043889 00000 n +0012043942 00000 n +0012043995 00000 n +0012044048 00000 n +0012044101 00000 n +0012044154 00000 n +0012044206 00000 n +0012044259 00000 n +0012044312 00000 n +0012044365 00000 n +0012044418 00000 n +0012044471 00000 n +0012044524 00000 n +0012044577 00000 n +0012044630 00000 n +0012044683 00000 n +0012044735 00000 n +0012044788 00000 n +0012044841 00000 n +0012044893 00000 n +0012044946 00000 n +0012044999 00000 n +0012045051 00000 n +0012045104 00000 n +0012045156 00000 n +0012045209 00000 n +0012045262 00000 n +0012045314 00000 n +0012045367 00000 n +0012045419 00000 n +0012045472 00000 n +0012045524 00000 n +0012045577 00000 n +0012045630 00000 n +0012045682 00000 n +0012045735 00000 n +0012045787 00000 n +0012045839 00000 n +0012045892 00000 n +0012045945 00000 n +0012045998 00000 n +0012046050 00000 n +0012046103 00000 n +0012046156 00000 n +0012046208 00000 n +0012046260 00000 n +0012046313 00000 n +0012046366 00000 n +0012046418 00000 n +0012046471 00000 n +0012046524 00000 n +0012046576 00000 n +0012046629 00000 n +0012046682 00000 n +0012046735 00000 n +0012046788 00000 n +0012046841 00000 n +0012046894 00000 n +0012046947 00000 n +0012047000 00000 n +0012047053 00000 n +0012047106 00000 n +0012047159 00000 n +0012047212 00000 n +0012047265 00000 n +0012047318 00000 n +0012047370 00000 n +0012047423 00000 n +0012047476 00000 n +0012047529 00000 n +0012047582 00000 n +0012047635 00000 n +0012047688 00000 n +0012047741 00000 n +0012047794 00000 n +0012047847 00000 n +0012047900 00000 n +0012047953 00000 n +0012048006 00000 n +0012048058 00000 n +0012048111 00000 n +0012048164 00000 n +0012048217 00000 n +0012048270 00000 n +0012048323 00000 n +0012048376 00000 n +0012048429 00000 n +0012048482 00000 n +0012048535 00000 n +0012048588 00000 n +0012048641 00000 n +0012048694 00000 n +0012048747 00000 n +0012048800 00000 n +0012048853 00000 n +0012048906 00000 n +0012048959 00000 n +0012049012 00000 n +0012049065 00000 n +0012049118 00000 n +0012049171 00000 n +0012049224 00000 n +0012049277 00000 n +0012049330 00000 n +0012049383 00000 n +0012049436 00000 n +0012049489 00000 n +0012049542 00000 n +0012049595 00000 n +0012049648 00000 n +0012049701 00000 n +0012049754 00000 n +0012049806 00000 n +0012049859 00000 n +0012049912 00000 n +0012049964 00000 n +0012050017 00000 n +0012050070 00000 n +0012050122 00000 n +0012050175 00000 n +0012050227 00000 n +0012050279 00000 n +0012050332 00000 n +0012050385 00000 n +0012050438 00000 n +0012050491 00000 n +0012050544 00000 n +0012050596 00000 n +0012050649 00000 n +0012050702 00000 n +0012050755 00000 n +0012050808 00000 n +0012050860 00000 n +0012050913 00000 n +0012050966 00000 n +0012051019 00000 n +0012051071 00000 n +0012051124 00000 n +0012051176 00000 n +0012051228 00000 n +0012051281 00000 n +0012051334 00000 n +0012051387 00000 n +0012051440 00000 n +0012051493 00000 n +0012051546 00000 n +0012051599 00000 n +0012051652 00000 n +0012051705 00000 n +0012051758 00000 n +0012051811 00000 n +0012051864 00000 n +0012051917 00000 n +0012051970 00000 n +0012052023 00000 n +0012052076 00000 n +0012052129 00000 n +0012052182 00000 n +0012052235 00000 n +0012052288 00000 n +0012052341 00000 n +0012052394 00000 n +0012052447 00000 n +0012052499 00000 n +0012052551 00000 n +0012052604 00000 n +0012052656 00000 n +0012052709 00000 n +0012052762 00000 n +0012052815 00000 n +0012052867 00000 n +0012052920 00000 n +0012052973 00000 n +0012053026 00000 n +0012053079 00000 n +0012053131 00000 n +0012053184 00000 n +0012053236 00000 n +0012053289 00000 n +0012053342 00000 n +0012053395 00000 n +0012053448 00000 n +0012053501 00000 n +0012053554 00000 n +0012053606 00000 n +0012053659 00000 n +0012053712 00000 n +0012053765 00000 n +0012053821 00000 n +0012053876 00000 n +0012053931 00000 n +0012053986 00000 n +0012054041 00000 n +0012054096 00000 n +0012054151 00000 n +0012054206 00000 n +0012054261 00000 n +0012054316 00000 n +0012054371 00000 n +0012054423 00000 n +0012054478 00000 n +0012054533 00000 n +0012054588 00000 n +0012054643 00000 n +0012054698 00000 n +0012054753 00000 n +0012054808 00000 n +0012054863 00000 n +0012054918 00000 n +0012054973 00000 n +0012055028 00000 n +0012055083 00000 n +0012055138 00000 n +0012055193 00000 n +0012055248 00000 n +0012055303 00000 n +0012055358 00000 n +0012055413 00000 n +0012055468 00000 n +0012055523 00000 n +0012055578 00000 n +0012055633 00000 n +0012055688 00000 n +0012055743 00000 n +0012055798 00000 n +0012055853 00000 n +0012055907 00000 n +0012055961 00000 n +0012056014 00000 n +0012056068 00000 n +0012056122 00000 n +0012056176 00000 n +0012056228 00000 n +0012056281 00000 n +0012056334 00000 n +0012056388 00000 n +0012056441 00000 n +0012056495 00000 n +0012056549 00000 n +0012056603 00000 n +0012056655 00000 n +0012056707 00000 n +0012056760 00000 n +0012056812 00000 n +0012056865 00000 n +0012056918 00000 n +0012056971 00000 n +0012057024 00000 n +0012057077 00000 n +0012057130 00000 n +0012057183 00000 n +0012057235 00000 n +0012057277 00000 n +0012057305 00000 n +0012057468 00000 n +0012057636 00000 n +0012057781 00000 n +0012057928 00000 n +0012058078 00000 n +0012058235 00000 n +0012058392 00000 n +0012058549 00000 n +0012058706 00000 n +0012058863 00000 n +0012059020 00000 n +0012059177 00000 n +0012059345 00000 n +0012059502 00000 n +0012059659 00000 n +0012059816 00000 n +0012059973 00000 n +0012060130 00000 n +0012060287 00000 n +0012060444 00000 n +0012060601 00000 n +0012060758 00000 n +0012060915 00000 n +0012061083 00000 n +0012061240 00000 n +0012061397 00000 n +0012061554 00000 n +0012061711 00000 n +0012061868 00000 n +0012062025 00000 n +0012062182 00000 n +0012062339 00000 n +0012062496 00000 n +0012062653 00000 n +0012062821 00000 n +0012062978 00000 n +0012063135 00000 n +0012063292 00000 n +0012063449 00000 n +0012063606 00000 n +0012063763 00000 n +0012063920 00000 n +0012064077 00000 n +0012064234 00000 n +0012064391 00000 n +0012064559 00000 n +0012064716 00000 n +0012064873 00000 n +0012065030 00000 n +0012065187 00000 n +0012065344 00000 n +0012065501 00000 n +0012065658 00000 n +0012065815 00000 n +0012065972 00000 n +0012066129 00000 n +0012066297 00000 n +0012066454 00000 n +0012066611 00000 n +0012066768 00000 n +0012066925 00000 n +0012067082 00000 n +0012067239 00000 n +0012067396 00000 n +0012067553 00000 n +0012067710 00000 n +0012067867 00000 n +0012068035 00000 n +0012068192 00000 n +0012068349 00000 n +0012068506 00000 n +0012068663 00000 n +0012068820 00000 n +0012068977 00000 n +0012069134 00000 n +0012069291 00000 n +0012069448 00000 n +0012069605 00000 n +0012069773 00000 n +0012069930 00000 n +0012070087 00000 n +0012070244 00000 n +0012070401 00000 n +0012070558 00000 n +0012070715 00000 n +0012070872 00000 n +0012071029 00000 n +0012071186 00000 n +0012071343 00000 n +0012071511 00000 n +0012071668 00000 n +0012071825 00000 n +0012071982 00000 n +0012072139 00000 n +0012072296 00000 n +0012072453 00000 n +0012072610 00000 n +0012072767 00000 n +0012072924 00000 n +0012073081 00000 n +0012073238 00000 n +0012073395 00000 n +0012073552 00000 n +0012073709 00000 n +0012073866 00000 n +0012074023 00000 n +0012074180 00000 n +0012074337 00000 n +0012074494 00000 n +0012074641 00000 n +0012079145 00000 n +trailer +<]>> +startxref +116 +%%EOF diff --git a/datasheets/bst-bme280-ds002.pdf b/datasheets/bst-bme280-ds002.pdf new file mode 100644 index 0000000..0f3ad86 Binary files /dev/null and b/datasheets/bst-bme280-ds002.pdf differ diff --git a/firmware/.cproject b/firmware/.cproject new file mode 100644 index 0000000..c824796 --- /dev/null +++ b/firmware/.cproject @@ -0,0 +1,184 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/firmware/.mxproject b/firmware/.mxproject new file mode 100644 index 0000000..85b7d84 --- /dev/null +++ b/firmware/.mxproject @@ -0,0 +1,34 @@ +[PreviousLibFiles] +LibFiles=Drivers\STM32G0xx_HAL_Driver\Inc\stm32g0xx_hal_rcc.h;Drivers\STM32G0xx_HAL_Driver\Inc\stm32g0xx_hal_rcc_ex.h;Drivers\STM32G0xx_HAL_Driver\Inc\stm32g0xx_ll_rcc.h;Drivers\STM32G0xx_HAL_Driver\Inc\stm32g0xx_ll_bus.h;Drivers\STM32G0xx_HAL_Driver\Inc\stm32g0xx_ll_system.h;Drivers\STM32G0xx_HAL_Driver\Inc\stm32g0xx_ll_utils.h;Drivers\STM32G0xx_HAL_Driver\Inc\stm32g0xx_hal_flash.h;Drivers\STM32G0xx_HAL_Driver\Inc\stm32g0xx_hal_flash_ex.h;Drivers\STM32G0xx_HAL_Driver\Inc\stm32g0xx_hal_flash_ramfunc.h;Drivers\STM32G0xx_HAL_Driver\Inc\stm32g0xx_hal_gpio.h;Drivers\STM32G0xx_HAL_Driver\Inc\stm32g0xx_hal_gpio_ex.h;Drivers\STM32G0xx_HAL_Driver\Inc\stm32g0xx_ll_gpio.h;Drivers\STM32G0xx_HAL_Driver\Inc\stm32g0xx_hal_dma.h;Drivers\STM32G0xx_HAL_Driver\Inc\stm32g0xx_hal_dma_ex.h;Drivers\STM32G0xx_HAL_Driver\Inc\stm32g0xx_hal_pwr.h;Drivers\STM32G0xx_HAL_Driver\Inc\stm32g0xx_hal_pwr_ex.h;Drivers\STM32G0xx_HAL_Driver\Inc\stm32g0xx_ll_pwr.h;Drivers\STM32G0xx_HAL_Driver\Inc\stm32g0xx_hal_cortex.h;Drivers\STM32G0xx_HAL_Driver\Inc\stm32g0xx_ll_cortex.h;Drivers\STM32G0xx_HAL_Driver\Inc\stm32g0xx_hal.h;Drivers\STM32G0xx_HAL_Driver\Inc\stm32g0xx_hal_def.h;Drivers\STM32G0xx_HAL_Driver\Inc\Legacy\stm32_hal_legacy.h;Drivers\STM32G0xx_HAL_Driver\Inc\stm32g0xx_hal_exti.h;Drivers\STM32G0xx_HAL_Driver\Inc\stm32g0xx_ll_exti.h;Drivers\STM32G0xx_HAL_Driver\Inc\stm32g0xx_hal_i2c.h;Drivers\STM32G0xx_HAL_Driver\Inc\stm32g0xx_ll_i2c.h;Drivers\STM32G0xx_HAL_Driver\Inc\stm32g0xx_hal_i2c_ex.h;Drivers\STM32G0xx_HAL_Driver\Inc\stm32g0xx_hal_tim.h;Drivers\STM32G0xx_HAL_Driver\Inc\stm32g0xx_hal_tim_ex.h;Drivers\STM32G0xx_HAL_Driver\Inc\stm32g0xx_ll_tim.h;Middlewares\Third_Party\FreeRTOS\Source\include\croutine.h;Middlewares\Third_Party\FreeRTOS\Source\include\deprecated_definitions.h;Middlewares\Third_Party\FreeRTOS\Source\include\event_groups.h;Middlewares\Third_Party\FreeRTOS\Source\include\FreeRTOS.h;Middlewares\Third_Party\FreeRTOS\Source\include\list.h;Middlewares\Third_Party\FreeRTOS\Source\include\message_buffer.h;Middlewares\Third_Party\FreeRTOS\Source\include\mpu_prototypes.h;Middlewares\Third_Party\FreeRTOS\Source\include\mpu_wrappers.h;Middlewares\Third_Party\FreeRTOS\Source\include\portable.h;Middlewares\Third_Party\FreeRTOS\Source\include\projdefs.h;Middlewares\Third_Party\FreeRTOS\Source\include\queue.h;Middlewares\Third_Party\FreeRTOS\Source\include\semphr.h;Middlewares\Third_Party\FreeRTOS\Source\include\stack_macros.h;Middlewares\Third_Party\FreeRTOS\Source\include\StackMacros.h;Middlewares\Third_Party\FreeRTOS\Source\include\stream_buffer.h;Middlewares\Third_Party\FreeRTOS\Source\include\task.h;Middlewares\Third_Party\FreeRTOS\Source\include\timers.h;Middlewares\Third_Party\FreeRTOS\Source\include\atomic.h;Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os2.h;Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os.h;Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\freertos_mpool.h;Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\freertos_os2.h;Middlewares\Third_Party\FreeRTOS\Source\portable\GCC\ARM_CM0\portmacro.h;Drivers\STM32G0xx_HAL_Driver\Src\stm32g0xx_hal_rcc.c;Drivers\STM32G0xx_HAL_Driver\Src\stm32g0xx_hal_rcc_ex.c;Drivers\STM32G0xx_HAL_Driver\Src\stm32g0xx_ll_rcc.c;Drivers\STM32G0xx_HAL_Driver\Src\stm32g0xx_hal_flash.c;Drivers\STM32G0xx_HAL_Driver\Src\stm32g0xx_hal_flash_ex.c;Drivers\STM32G0xx_HAL_Driver\Src\stm32g0xx_hal_gpio.c;Drivers\STM32G0xx_HAL_Driver\Src\stm32g0xx_hal_dma.c;Drivers\STM32G0xx_HAL_Driver\Src\stm32g0xx_hal_dma_ex.c;Drivers\STM32G0xx_HAL_Driver\Inc\stm32g0xx_ll_dma.h;Drivers\STM32G0xx_HAL_Driver\Src\stm32g0xx_ll_dma.c;Drivers\STM32G0xx_HAL_Driver\Inc\stm32g0xx_ll_dmamux.h;Drivers\STM32G0xx_HAL_Driver\Src\stm32g0xx_hal_pwr.c;Drivers\STM32G0xx_HAL_Driver\Src\stm32g0xx_hal_pwr_ex.c;Drivers\STM32G0xx_HAL_Driver\Src\stm32g0xx_hal_cortex.c;Drivers\STM32G0xx_HAL_Driver\Src\stm32g0xx_hal.c;Drivers\STM32G0xx_HAL_Driver\Src\stm32g0xx_hal_exti.c;Drivers\STM32G0xx_HAL_Driver\Src\stm32g0xx_hal_i2c.c;Drivers\STM32G0xx_HAL_Driver\Src\stm32g0xx_hal_i2c_ex.c;Drivers\STM32G0xx_HAL_Driver\Src\stm32g0xx_hal_tim.c;Drivers\STM32G0xx_HAL_Driver\Src\stm32g0xx_hal_tim_ex.c;Middlewares\Third_Party\FreeRTOS\Source\croutine.c;Middlewares\Third_Party\FreeRTOS\Source\event_groups.c;Middlewares\Third_Party\FreeRTOS\Source\list.c;Middlewares\Third_Party\FreeRTOS\Source\queue.c;Middlewares\Third_Party\FreeRTOS\Source\stream_buffer.c;Middlewares\Third_Party\FreeRTOS\Source\tasks.c;Middlewares\Third_Party\FreeRTOS\Source\timers.c;Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os2.c;Middlewares\Third_Party\FreeRTOS\Source\portable\MemMang\heap_4.c;Middlewares\Third_Party\FreeRTOS\Source\portable\GCC\ARM_CM0\port.c;Drivers\STM32G0xx_HAL_Driver\Inc\stm32g0xx_hal_rcc.h;Drivers\STM32G0xx_HAL_Driver\Inc\stm32g0xx_hal_rcc_ex.h;Drivers\STM32G0xx_HAL_Driver\Inc\stm32g0xx_ll_rcc.h;Drivers\STM32G0xx_HAL_Driver\Inc\stm32g0xx_ll_bus.h;Drivers\STM32G0xx_HAL_Driver\Inc\stm32g0xx_ll_system.h;Drivers\STM32G0xx_HAL_Driver\Inc\stm32g0xx_ll_utils.h;Drivers\STM32G0xx_HAL_Driver\Inc\stm32g0xx_hal_flash.h;Drivers\STM32G0xx_HAL_Driver\Inc\stm32g0xx_hal_flash_ex.h;Drivers\STM32G0xx_HAL_Driver\Inc\stm32g0xx_hal_flash_ramfunc.h;Drivers\STM32G0xx_HAL_Driver\Inc\stm32g0xx_hal_gpio.h;Drivers\STM32G0xx_HAL_Driver\Inc\stm32g0xx_hal_gpio_ex.h;Drivers\STM32G0xx_HAL_Driver\Inc\stm32g0xx_ll_gpio.h;Drivers\STM32G0xx_HAL_Driver\Inc\stm32g0xx_hal_dma.h;Drivers\STM32G0xx_HAL_Driver\Inc\stm32g0xx_hal_dma_ex.h;Drivers\STM32G0xx_HAL_Driver\Inc\stm32g0xx_hal_pwr.h;Drivers\STM32G0xx_HAL_Driver\Inc\stm32g0xx_hal_pwr_ex.h;Drivers\STM32G0xx_HAL_Driver\Inc\stm32g0xx_ll_pwr.h;Drivers\STM32G0xx_HAL_Driver\Inc\stm32g0xx_hal_cortex.h;Drivers\STM32G0xx_HAL_Driver\Inc\stm32g0xx_ll_cortex.h;Drivers\STM32G0xx_HAL_Driver\Inc\stm32g0xx_hal.h;Drivers\STM32G0xx_HAL_Driver\Inc\stm32g0xx_hal_def.h;Drivers\STM32G0xx_HAL_Driver\Inc\Legacy\stm32_hal_legacy.h;Drivers\STM32G0xx_HAL_Driver\Inc\stm32g0xx_hal_exti.h;Drivers\STM32G0xx_HAL_Driver\Inc\stm32g0xx_ll_exti.h;Drivers\STM32G0xx_HAL_Driver\Inc\stm32g0xx_hal_i2c.h;Drivers\STM32G0xx_HAL_Driver\Inc\stm32g0xx_ll_i2c.h;Drivers\STM32G0xx_HAL_Driver\Inc\stm32g0xx_hal_i2c_ex.h;Drivers\STM32G0xx_HAL_Driver\Inc\stm32g0xx_hal_tim.h;Drivers\STM32G0xx_HAL_Driver\Inc\stm32g0xx_hal_tim_ex.h;Drivers\STM32G0xx_HAL_Driver\Inc\stm32g0xx_ll_tim.h;Middlewares\Third_Party\FreeRTOS\Source\include\croutine.h;Middlewares\Third_Party\FreeRTOS\Source\include\deprecated_definitions.h;Middlewares\Third_Party\FreeRTOS\Source\include\event_groups.h;Middlewares\Third_Party\FreeRTOS\Source\include\FreeRTOS.h;Middlewares\Third_Party\FreeRTOS\Source\include\list.h;Middlewares\Third_Party\FreeRTOS\Source\include\message_buffer.h;Middlewares\Third_Party\FreeRTOS\Source\include\mpu_prototypes.h;Middlewares\Third_Party\FreeRTOS\Source\include\mpu_wrappers.h;Middlewares\Third_Party\FreeRTOS\Source\include\portable.h;Middlewares\Third_Party\FreeRTOS\Source\include\projdefs.h;Middlewares\Third_Party\FreeRTOS\Source\include\queue.h;Middlewares\Third_Party\FreeRTOS\Source\include\semphr.h;Middlewares\Third_Party\FreeRTOS\Source\include\stack_macros.h;Middlewares\Third_Party\FreeRTOS\Source\include\StackMacros.h;Middlewares\Third_Party\FreeRTOS\Source\include\stream_buffer.h;Middlewares\Third_Party\FreeRTOS\Source\include\task.h;Middlewares\Third_Party\FreeRTOS\Source\include\timers.h;Middlewares\Third_Party\FreeRTOS\Source\include\atomic.h;Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os2.h;Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os.h;Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\freertos_mpool.h;Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\freertos_os2.h;Middlewares\Third_Party\FreeRTOS\Source\portable\GCC\ARM_CM0\portmacro.h;Drivers\CMSIS\Device\ST\STM32G0xx\Include\stm32g070xx.h;Drivers\CMSIS\Device\ST\STM32G0xx\Include\stm32g0xx.h;Drivers\CMSIS\Device\ST\STM32G0xx\Include\system_stm32g0xx.h;Drivers\CMSIS\Device\ST\STM32G0xx\Source\Templates\system_stm32g0xx.c;Drivers\CMSIS\Include\cmsis_armcc.h;Drivers\CMSIS\Include\cmsis_armclang.h;Drivers\CMSIS\Include\cmsis_armclang_ltm.h;Drivers\CMSIS\Include\cmsis_compiler.h;Drivers\CMSIS\Include\cmsis_gcc.h;Drivers\CMSIS\Include\cmsis_iccarm.h;Drivers\CMSIS\Include\cmsis_version.h;Drivers\CMSIS\Include\core_armv81mml.h;Drivers\CMSIS\Include\core_armv8mbl.h;Drivers\CMSIS\Include\core_armv8mml.h;Drivers\CMSIS\Include\core_cm0.h;Drivers\CMSIS\Include\core_cm0plus.h;Drivers\CMSIS\Include\core_cm1.h;Drivers\CMSIS\Include\core_cm23.h;Drivers\CMSIS\Include\core_cm3.h;Drivers\CMSIS\Include\core_cm33.h;Drivers\CMSIS\Include\core_cm35p.h;Drivers\CMSIS\Include\core_cm4.h;Drivers\CMSIS\Include\core_cm7.h;Drivers\CMSIS\Include\core_sc000.h;Drivers\CMSIS\Include\core_sc300.h;Drivers\CMSIS\Include\mpu_armv7.h;Drivers\CMSIS\Include\mpu_armv8.h;Drivers\CMSIS\Include\tz_context.h; + +[PreviousUsedCubeIDEFiles] +SourceFiles=Core\Src\main.c;Core\Src\gpio.c;Core\Src\app_freertos.c;Core\Src\i2c.c;Core\Src\tim.c;Core\Src\stm32g0xx_it.c;Core\Src\stm32g0xx_hal_msp.c;Core\Src\stm32g0xx_hal_timebase_tim.c;Drivers\STM32G0xx_HAL_Driver\Src\stm32g0xx_hal_rcc.c;Drivers\STM32G0xx_HAL_Driver\Src\stm32g0xx_hal_rcc_ex.c;Drivers\STM32G0xx_HAL_Driver\Src\stm32g0xx_ll_rcc.c;Drivers\STM32G0xx_HAL_Driver\Src\stm32g0xx_hal_flash.c;Drivers\STM32G0xx_HAL_Driver\Src\stm32g0xx_hal_flash_ex.c;Drivers\STM32G0xx_HAL_Driver\Src\stm32g0xx_hal_gpio.c;Drivers\STM32G0xx_HAL_Driver\Src\stm32g0xx_hal_dma.c;Drivers\STM32G0xx_HAL_Driver\Src\stm32g0xx_hal_dma_ex.c;Drivers\STM32G0xx_HAL_Driver\Src\stm32g0xx_ll_dma.c;Drivers\STM32G0xx_HAL_Driver\Src\stm32g0xx_hal_pwr.c;Drivers\STM32G0xx_HAL_Driver\Src\stm32g0xx_hal_pwr_ex.c;Drivers\STM32G0xx_HAL_Driver\Src\stm32g0xx_hal_cortex.c;Drivers\STM32G0xx_HAL_Driver\Src\stm32g0xx_hal.c;Drivers\STM32G0xx_HAL_Driver\Src\stm32g0xx_hal_exti.c;Drivers\STM32G0xx_HAL_Driver\Src\stm32g0xx_hal_i2c.c;Drivers\STM32G0xx_HAL_Driver\Src\stm32g0xx_hal_i2c_ex.c;Drivers\STM32G0xx_HAL_Driver\Src\stm32g0xx_hal_tim.c;Drivers\STM32G0xx_HAL_Driver\Src\stm32g0xx_hal_tim_ex.c;Middlewares\Third_Party\FreeRTOS\Source\croutine.c;Middlewares\Third_Party\FreeRTOS\Source\event_groups.c;Middlewares\Third_Party\FreeRTOS\Source\list.c;Middlewares\Third_Party\FreeRTOS\Source\queue.c;Middlewares\Third_Party\FreeRTOS\Source\stream_buffer.c;Middlewares\Third_Party\FreeRTOS\Source\tasks.c;Middlewares\Third_Party\FreeRTOS\Source\timers.c;Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os2.c;Middlewares\Third_Party\FreeRTOS\Source\portable\MemMang\heap_4.c;Middlewares\Third_Party\FreeRTOS\Source\portable\GCC\ARM_CM0\port.c;Drivers\CMSIS\Device\ST\STM32G0xx\Source\Templates\system_stm32g0xx.c;Core\Src\system_stm32g0xx.c;Drivers\STM32G0xx_HAL_Driver\Src\stm32g0xx_hal_rcc.c;Drivers\STM32G0xx_HAL_Driver\Src\stm32g0xx_hal_rcc_ex.c;Drivers\STM32G0xx_HAL_Driver\Src\stm32g0xx_ll_rcc.c;Drivers\STM32G0xx_HAL_Driver\Src\stm32g0xx_hal_flash.c;Drivers\STM32G0xx_HAL_Driver\Src\stm32g0xx_hal_flash_ex.c;Drivers\STM32G0xx_HAL_Driver\Src\stm32g0xx_hal_gpio.c;Drivers\STM32G0xx_HAL_Driver\Src\stm32g0xx_hal_dma.c;Drivers\STM32G0xx_HAL_Driver\Src\stm32g0xx_hal_dma_ex.c;Drivers\STM32G0xx_HAL_Driver\Src\stm32g0xx_ll_dma.c;Drivers\STM32G0xx_HAL_Driver\Src\stm32g0xx_hal_pwr.c;Drivers\STM32G0xx_HAL_Driver\Src\stm32g0xx_hal_pwr_ex.c;Drivers\STM32G0xx_HAL_Driver\Src\stm32g0xx_hal_cortex.c;Drivers\STM32G0xx_HAL_Driver\Src\stm32g0xx_hal.c;Drivers\STM32G0xx_HAL_Driver\Src\stm32g0xx_hal_exti.c;Drivers\STM32G0xx_HAL_Driver\Src\stm32g0xx_hal_i2c.c;Drivers\STM32G0xx_HAL_Driver\Src\stm32g0xx_hal_i2c_ex.c;Drivers\STM32G0xx_HAL_Driver\Src\stm32g0xx_hal_tim.c;Drivers\STM32G0xx_HAL_Driver\Src\stm32g0xx_hal_tim_ex.c;Middlewares\Third_Party\FreeRTOS\Source\croutine.c;Middlewares\Third_Party\FreeRTOS\Source\event_groups.c;Middlewares\Third_Party\FreeRTOS\Source\list.c;Middlewares\Third_Party\FreeRTOS\Source\queue.c;Middlewares\Third_Party\FreeRTOS\Source\stream_buffer.c;Middlewares\Third_Party\FreeRTOS\Source\tasks.c;Middlewares\Third_Party\FreeRTOS\Source\timers.c;Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os2.c;Middlewares\Third_Party\FreeRTOS\Source\portable\MemMang\heap_4.c;Middlewares\Third_Party\FreeRTOS\Source\portable\GCC\ARM_CM0\port.c;Drivers\CMSIS\Device\ST\STM32G0xx\Source\Templates\system_stm32g0xx.c;Core\Src\system_stm32g0xx.c;;;Middlewares\Third_Party\FreeRTOS\Source\croutine.c;Middlewares\Third_Party\FreeRTOS\Source\event_groups.c;Middlewares\Third_Party\FreeRTOS\Source\list.c;Middlewares\Third_Party\FreeRTOS\Source\queue.c;Middlewares\Third_Party\FreeRTOS\Source\stream_buffer.c;Middlewares\Third_Party\FreeRTOS\Source\tasks.c;Middlewares\Third_Party\FreeRTOS\Source\timers.c;Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os2.c;Middlewares\Third_Party\FreeRTOS\Source\portable\MemMang\heap_4.c;Middlewares\Third_Party\FreeRTOS\Source\portable\GCC\ARM_CM0\port.c; +HeaderPath=Drivers\STM32G0xx_HAL_Driver\Inc;Drivers\STM32G0xx_HAL_Driver\Inc\Legacy;Middlewares\Third_Party\FreeRTOS\Source\include;Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2;Middlewares\Third_Party\FreeRTOS\Source\portable\GCC\ARM_CM0;Drivers\CMSIS\Device\ST\STM32G0xx\Include;Drivers\CMSIS\Include;Core\Inc; +CDefines=CMSIS_device_header:;USE_HAL_DRIVER;STM32G070xx;USE_HAL_DRIVER;USE_HAL_DRIVER; + +[PreviousGenFiles] +AdvancedFolderStructure=true +HeaderFileListSize=7 +HeaderFiles#0=..\Core\Inc\gpio.h +HeaderFiles#1=..\Core\Inc\FreeRTOSConfig.h +HeaderFiles#2=..\Core\Inc\i2c.h +HeaderFiles#3=..\Core\Inc\tim.h +HeaderFiles#4=..\Core\Inc\stm32g0xx_it.h +HeaderFiles#5=..\Core\Inc\stm32g0xx_hal_conf.h +HeaderFiles#6=..\Core\Inc\main.h +HeaderFolderListSize=1 +HeaderPath#0=..\Core\Inc +HeaderFiles=; +SourceFileListSize=8 +SourceFiles#0=..\Core\Src\gpio.c +SourceFiles#1=..\Core\Src\app_freertos.c +SourceFiles#2=..\Core\Src\i2c.c +SourceFiles#3=..\Core\Src\tim.c +SourceFiles#4=..\Core\Src\stm32g0xx_it.c +SourceFiles#5=..\Core\Src\stm32g0xx_hal_msp.c +SourceFiles#6=..\Core\Src\stm32g0xx_hal_timebase_tim.c +SourceFiles#7=..\Core\Src\main.c +SourceFolderListSize=1 +SourcePath#0=..\Core\Src +SourceFiles=; + diff --git a/firmware/.project b/firmware/.project new file mode 100644 index 0000000..53c6ab1 --- /dev/null +++ b/firmware/.project @@ -0,0 +1,32 @@ + + + FilaDry2 + + + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder + clean,full,incremental, + + + + + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder + full,incremental, + + + + + + com.st.stm32cube.ide.mcu.MCUProjectNature + com.st.stm32cube.ide.mcu.MCUCubeProjectNature + org.eclipse.cdt.core.cnature + com.st.stm32cube.ide.mcu.MCUCubeIdeServicesRevAev2ProjectNature + com.st.stm32cube.ide.mcu.MCUAdvancedStructureProjectNature + com.st.stm32cube.ide.mcu.MCUSingleCpuProjectNature + com.st.stm32cube.ide.mcu.MCURootProjectNature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + + diff --git a/firmware/.settings/language.settings.xml b/firmware/.settings/language.settings.xml new file mode 100644 index 0000000..ca12bca --- /dev/null +++ b/firmware/.settings/language.settings.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/firmware/.settings/stm32cubeide.project.prefs b/firmware/.settings/stm32cubeide.project.prefs new file mode 100644 index 0000000..0a508b6 --- /dev/null +++ b/firmware/.settings/stm32cubeide.project.prefs @@ -0,0 +1,4 @@ +66BE74F758C12D739921AEA421D593D3=2 +8DF89ED150041C4CBC7CB9A9CAA90856=EDA52AC5F38E700E3B7C1D02E2738422 +DC22A860405A8BF2F2C095E5B6529F12=EDA52AC5F38E700E3B7C1D02E2738422 +eclipse.preferences.version=1 diff --git a/firmware/Core/Inc/FreeRTOSConfig.h b/firmware/Core/Inc/FreeRTOSConfig.h new file mode 100644 index 0000000..5884833 --- /dev/null +++ b/firmware/Core/Inc/FreeRTOSConfig.h @@ -0,0 +1,148 @@ +/* USER CODE BEGIN Header */ +/* + * FreeRTOS Kernel V10.3.1 + * Portion Copyright (C) 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Portion Copyright (C) 2019 StMicroelectronics, Inc. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * http://www.FreeRTOS.org + * http://aws.amazon.com/freertos + * + * 1 tab == 4 spaces! + */ +/* USER CODE END Header */ + +#ifndef FREERTOS_CONFIG_H +#define FREERTOS_CONFIG_H + +/*----------------------------------------------------------- + * Application specific definitions. + * + * These definitions should be adjusted for your particular hardware and + * application requirements. + * + * These parameters and more are described within the 'configuration' section of the + * FreeRTOS API documentation available on the FreeRTOS.org web site. + * + * See http://www.freertos.org/a00110.html + *----------------------------------------------------------*/ + +/* USER CODE BEGIN Includes */ +/* Section where include file can be added */ +/* USER CODE END Includes */ + +/* Ensure definitions are only used by the compiler, and not by the assembler. */ +#if defined(__ICCARM__) || defined(__CC_ARM) || defined(__GNUC__) + #include + extern uint32_t SystemCoreClock; +#endif +#ifndef CMSIS_device_header +#define CMSIS_device_header "stm32g0xx.h" +#endif /* CMSIS_device_header */ + +#define configENABLE_FPU 0 +#define configENABLE_MPU 0 + +#define configUSE_PREEMPTION 1 +#define configSUPPORT_STATIC_ALLOCATION 1 +#define configSUPPORT_DYNAMIC_ALLOCATION 1 +#define configUSE_IDLE_HOOK 0 +#define configUSE_TICK_HOOK 0 +#define configCPU_CLOCK_HZ ( SystemCoreClock ) +#define configTICK_RATE_HZ ((TickType_t)1000) +#define configMAX_PRIORITIES ( 56 ) +#define configMINIMAL_STACK_SIZE ((uint16_t)128) +#define configTOTAL_HEAP_SIZE ((size_t)3072) +#define configMAX_TASK_NAME_LEN ( 16 ) +#define configUSE_TRACE_FACILITY 1 +#define configUSE_16_BIT_TICKS 0 +#define configUSE_MUTEXES 1 +#define configQUEUE_REGISTRY_SIZE 8 +#define configUSE_RECURSIVE_MUTEXES 1 +#define configUSE_COUNTING_SEMAPHORES 1 +#define configUSE_PORT_OPTIMISED_TASK_SELECTION 0 +/* USER CODE BEGIN MESSAGE_BUFFER_LENGTH_TYPE */ +/* Defaults to size_t for backward compatibility, but can be changed + if lengths will always be less than the number of bytes in a size_t. */ +#define configMESSAGE_BUFFER_LENGTH_TYPE size_t +/* USER CODE END MESSAGE_BUFFER_LENGTH_TYPE */ + +/* Co-routine definitions. */ +#define configUSE_CO_ROUTINES 0 +#define configMAX_CO_ROUTINE_PRIORITIES ( 2 ) + +/* Software timer definitions. */ +#define configUSE_TIMERS 1 +#define configTIMER_TASK_PRIORITY ( 2 ) +#define configTIMER_QUEUE_LENGTH 10 +#define configTIMER_TASK_STACK_DEPTH 256 + +/* The following flag must be enabled only when using newlib */ +#define configUSE_NEWLIB_REENTRANT 1 + +/* CMSIS-RTOS V2 flags */ +#define configUSE_OS2_THREAD_SUSPEND_RESUME 1 +#define configUSE_OS2_THREAD_ENUMERATE 1 +#define configUSE_OS2_EVENTFLAGS_FROM_ISR 1 +#define configUSE_OS2_THREAD_FLAGS 1 +#define configUSE_OS2_TIMER 1 +#define configUSE_OS2_MUTEX 1 + +/* Set the following definitions to 1 to include the API function, or zero +to exclude the API function. */ +#define INCLUDE_vTaskPrioritySet 1 +#define INCLUDE_uxTaskPriorityGet 1 +#define INCLUDE_vTaskDelete 1 +#define INCLUDE_vTaskCleanUpResources 0 +#define INCLUDE_vTaskSuspend 1 +#define INCLUDE_vTaskDelayUntil 1 +#define INCLUDE_vTaskDelay 1 +#define INCLUDE_xTaskGetSchedulerState 1 +#define INCLUDE_xTimerPendFunctionCall 1 +#define INCLUDE_xQueueGetMutexHolder 1 +#define INCLUDE_uxTaskGetStackHighWaterMark 1 +#define INCLUDE_xTaskGetCurrentTaskHandle 1 +#define INCLUDE_eTaskGetState 1 + +/* + * The CMSIS-RTOS V2 FreeRTOS wrapper is dependent on the heap implementation used + * by the application thus the correct define need to be enabled below + */ +#define USE_FreeRTOS_HEAP_4 + +/* Normal assert() semantics without relying on the provision of an assert.h +header file. */ +/* USER CODE BEGIN 1 */ +#define configASSERT( x ) if ((x) == 0) {taskDISABLE_INTERRUPTS(); for( ;; );} +/* USER CODE END 1 */ + +/* Definitions that map the FreeRTOS port interrupt handlers to their CMSIS +standard names. */ +#define vPortSVCHandler SVC_Handler +#define xPortPendSVHandler PendSV_Handler + +/* IMPORTANT: After 10.3.1 update, Systick_Handler comes from NVIC (if SYS timebase = systick), otherwise from cmsis_os2.c */ + +#define USE_CUSTOM_SYSTICK_HANDLER_IMPLEMENTATION 0 + +/* USER CODE BEGIN Defines */ +/* Section where parameter definitions can be added (for instance, to override default ones in FreeRTOS.h) */ +/* USER CODE END Defines */ + +#endif /* FREERTOS_CONFIG_H */ diff --git a/firmware/Core/Inc/gpio.h b/firmware/Core/Inc/gpio.h new file mode 100644 index 0000000..e00fb10 --- /dev/null +++ b/firmware/Core/Inc/gpio.h @@ -0,0 +1,49 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file gpio.h + * @brief This file contains all the function prototypes for + * the gpio.c file + ****************************************************************************** + * @attention + * + * Copyright (c) 2021 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __GPIO_H__ +#define __GPIO_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "main.h" + +/* USER CODE BEGIN Includes */ + +/* USER CODE END Includes */ + +/* USER CODE BEGIN Private defines */ + +/* USER CODE END Private defines */ + +void MX_GPIO_Init(void); + +/* USER CODE BEGIN Prototypes */ + +/* USER CODE END Prototypes */ + +#ifdef __cplusplus +} +#endif +#endif /*__ GPIO_H__ */ + diff --git a/firmware/Core/Inc/i2c.h b/firmware/Core/Inc/i2c.h new file mode 100644 index 0000000..5d0b28e --- /dev/null +++ b/firmware/Core/Inc/i2c.h @@ -0,0 +1,55 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file i2c.h + * @brief This file contains all the function prototypes for + * the i2c.c file + ****************************************************************************** + * @attention + * + * Copyright (c) 2021 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __I2C_H__ +#define __I2C_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "main.h" + +/* USER CODE BEGIN Includes */ + +/* USER CODE END Includes */ + +extern I2C_HandleTypeDef hi2c1; + +extern I2C_HandleTypeDef hi2c2; + +/* USER CODE BEGIN Private defines */ + +/* USER CODE END Private defines */ + +void MX_I2C1_Init(void); +void MX_I2C2_Init(void); + +/* USER CODE BEGIN Prototypes */ + +/* USER CODE END Prototypes */ + +#ifdef __cplusplus +} +#endif + +#endif /* __I2C_H__ */ + diff --git a/firmware/Core/Inc/icons.h b/firmware/Core/Inc/icons.h new file mode 100644 index 0000000..b30073d --- /dev/null +++ b/firmware/Core/Inc/icons.h @@ -0,0 +1,37 @@ +/* + * icons.h + * + * Created on: Aug 19, 2022 + * Author: mcfly + */ + +#ifndef INC_ICONS_H_ +#define INC_ICONS_H_ + +//Humidity icon 16x16 +static const unsigned char humidity16[] = { + 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xF8, 0xFC, 0xFE, 0xFE, 0xFC, 0x78, 0xF0, 0xC0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0x1F, 0x3F, 0x3F, 0x7F, 0x77, 0x73, 0x70, 0x38, 0x3F, 0x1F, 0x07, 0x00, 0x00 +}; +//Temperature icon 24x24 +static const unsigned char temperature24[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x01, 0x01, 0xF9, 0xFE, 0xFE, 0x48, 0x48, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x60, 0x10, 0x18, 0x9F, 0x80, 0x80, 0xFF, 0xFF, 0xFF, 0xF2, 0xE2, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x07, 0x1F, 0x38, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x3F, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +//Heat flash icon 18x8 +static const unsigned char heat_icon[] = { + 0x30, 0x38, 0x18, 0x1C, 0x1C, 0x0E, 0x0E, 0xFF, 0xFF, 0xFF, 0xFF, 0x70, 0x70, 0x38, 0x38, 0x18, 0x1C, 0x0C +}; +//Fan icon 16x8 +static const unsigned char fan_icon[] = { + 0x00, 0x38, 0x7C, 0x7C, 0x7C, 0x3D, 0xDB, 0xE7, 0xE7, 0xDB, 0xBC, 0x3E, 0x3E, 0x3E, 0x1C, 0x00 +}; +//Error icon 14x16 +static const unsigned char error_icon[] = { + 0xFA, 0xFD, 0xFD, 0x1D, 0xED, 0xF5, 0x95, 0x95, 0xF5, 0xED, 0x1D, 0xFD, 0xFD, 0xFA, + 0x07, 0x0F, 0x0F, 0x0E, 0x0D, 0x2B, 0x6A, 0x6A, 0x2B, 0x0D, 0x0E, 0x0F, 0x0F, 0x07 +}; + + +#endif /* INC_ICONS_H_ */ diff --git a/firmware/Core/Inc/main.h b/firmware/Core/Inc/main.h new file mode 100644 index 0000000..3b833b2 --- /dev/null +++ b/firmware/Core/Inc/main.h @@ -0,0 +1,90 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : main.h + * @brief : Header for main.c file. + * This file contains the common defines of the application. + ****************************************************************************** + * @attention + * + * Copyright (c) 2021 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __MAIN_H +#define __MAIN_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32g0xx_hal.h" + +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ + +/* USER CODE END Includes */ + +/* Exported types ------------------------------------------------------------*/ +/* USER CODE BEGIN ET */ + +/* USER CODE END ET */ + +/* Exported constants --------------------------------------------------------*/ +/* USER CODE BEGIN EC */ + +/* USER CODE END EC */ + +/* Exported macro ------------------------------------------------------------*/ +/* USER CODE BEGIN EM */ + +/* USER CODE END EM */ + +/* Exported functions prototypes ---------------------------------------------*/ +void Error_Handler(void); + +/* USER CODE BEGIN EFP */ + +/* USER CODE END EFP */ + +/* Private defines -----------------------------------------------------------*/ +#define TIM17_BUZZER_Pin GPIO_PIN_7 +#define TIM17_BUZZER_GPIO_Port GPIOA +#define KEY_DN_Pin GPIO_PIN_0 +#define KEY_DN_GPIO_Port GPIOB +#define KEY_OK_Pin GPIO_PIN_1 +#define KEY_OK_GPIO_Port GPIOB +#define KEY_UP_Pin GPIO_PIN_2 +#define KEY_UP_GPIO_Port GPIOB +#define I2C2_SCL_OLED_Pin GPIO_PIN_10 +#define I2C2_SCL_OLED_GPIO_Port GPIOB +#define I2C2_SDA_OLED_Pin GPIO_PIN_11 +#define I2C2_SDA_OLED_GPIO_Port GPIOB +#define TIM3_ZeroCross_Pin GPIO_PIN_2 +#define TIM3_ZeroCross_GPIO_Port GPIOD +#define TIM3_Heater_Pin GPIO_PIN_4 +#define TIM3_Heater_GPIO_Port GPIOB +#define TIM3_Fan_Pin GPIO_PIN_5 +#define TIM3_Fan_GPIO_Port GPIOB +#define I2C1_SCL_BME_Pin GPIO_PIN_8 +#define I2C1_SCL_BME_GPIO_Port GPIOB +#define I2C1_SDA_BME_Pin GPIO_PIN_9 +#define I2C1_SDA_BME_GPIO_Port GPIOB +/* USER CODE BEGIN Private defines */ + +/* USER CODE END Private defines */ + +#ifdef __cplusplus +} +#endif + +#endif /* __MAIN_H */ diff --git a/firmware/Core/Inc/pid.h b/firmware/Core/Inc/pid.h new file mode 100644 index 0000000..43401aa --- /dev/null +++ b/firmware/Core/Inc/pid.h @@ -0,0 +1,41 @@ +/* + * pid.h + * + * Created on: Jan 18, 2022 + * Author: mcfly + */ + +#ifndef INC_PID_H_ +#define INC_PID_H_ + + +typedef struct { + //Controller gains + float Kp; + float Ki; + float Kd; + + //Derivative low-pass filter time constant + float tau; + + //Output limits + float limMin; + float limMax; + + //Sample time in seconds + float T; + + //Controller "memory" + float integrator; + float prevError; //required for integrator + float differentiator; + float prevMeasurement; //required for differentiator + + //Controller output + float out; +} PIDController; + +void PID_Init(PIDController *pid); +float PID_Update(PIDController *pid, float setpoint, float measurement); + +#endif /* INC_PID_H_ */ diff --git a/firmware/Core/Inc/stm32g0xx_hal_conf.h b/firmware/Core/Inc/stm32g0xx_hal_conf.h new file mode 100644 index 0000000..2eaed9c --- /dev/null +++ b/firmware/Core/Inc/stm32g0xx_hal_conf.h @@ -0,0 +1,351 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file stm32g0xx_hal_conf.h + * @author MCD Application Team + * @brief HAL configuration file. + ****************************************************************************** + * @attention + * + * Copyright (c) 2018 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32G0xx_HAL_CONF_H +#define STM32G0xx_HAL_CONF_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ + +/* ########################## Module Selection ############################## */ +/** + * @brief This is the list of modules to be used in the HAL driver + */ +#define HAL_MODULE_ENABLED +/* #define HAL_ADC_MODULE_ENABLED */ +/* #define HAL_CEC_MODULE_ENABLED */ +/* #define HAL_COMP_MODULE_ENABLED */ +/* #define HAL_CRC_MODULE_ENABLED */ +/* #define HAL_CRYP_MODULE_ENABLED */ +/* #define HAL_DAC_MODULE_ENABLED */ +/* #define HAL_EXTI_MODULE_ENABLED */ +/* #define HAL_FDCAN_MODULE_ENABLED */ +/* #define HAL_HCD_MODULE_ENABLED */ +#define HAL_I2C_MODULE_ENABLED +/* #define HAL_I2S_MODULE_ENABLED */ +/* #define HAL_IWDG_MODULE_ENABLED */ +/* #define HAL_IRDA_MODULE_ENABLED */ +/* #define HAL_LPTIM_MODULE_ENABLED */ +/* #define HAL_PCD_MODULE_ENABLED */ +/* #define HAL_RNG_MODULE_ENABLED */ +/* #define HAL_RTC_MODULE_ENABLED */ +/* #define HAL_SMARTCARD_MODULE_ENABLED */ +/* #define HAL_SMBUS_MODULE_ENABLED */ +/* #define HAL_SPI_MODULE_ENABLED */ +#define HAL_TIM_MODULE_ENABLED +/* #define HAL_UART_MODULE_ENABLED */ +/* #define HAL_USART_MODULE_ENABLED */ +/* #define HAL_WWDG_MODULE_ENABLED */ +#define HAL_GPIO_MODULE_ENABLED +#define HAL_EXTI_MODULE_ENABLED +#define HAL_DMA_MODULE_ENABLED +#define HAL_RCC_MODULE_ENABLED +#define HAL_FLASH_MODULE_ENABLED +#define HAL_PWR_MODULE_ENABLED +#define HAL_CORTEX_MODULE_ENABLED + +/* ########################## Register Callbacks selection ############################## */ +/** + * @brief This is the list of modules where register callback can be used + */ +#define USE_HAL_ADC_REGISTER_CALLBACKS 0u +#define USE_HAL_CEC_REGISTER_CALLBACKS 0u +#define USE_HAL_COMP_REGISTER_CALLBACKS 0u +#define USE_HAL_CRYP_REGISTER_CALLBACKS 0u +#define USE_HAL_DAC_REGISTER_CALLBACKS 0u +#define USE_HAL_FDCAN_REGISTER_CALLBACKS 0u +#define USE_HAL_HCD_REGISTER_CALLBACKS 0u +#define USE_HAL_I2C_REGISTER_CALLBACKS 0u +#define USE_HAL_I2S_REGISTER_CALLBACKS 0u +#define USE_HAL_IRDA_REGISTER_CALLBACKS 0u +#define USE_HAL_LPTIM_REGISTER_CALLBACKS 0u +#define USE_HAL_PCD_REGISTER_CALLBACKS 0u +#define USE_HAL_RNG_REGISTER_CALLBACKS 0u +#define USE_HAL_RTC_REGISTER_CALLBACKS 0u +#define USE_HAL_SMBUS_REGISTER_CALLBACKS 0u +#define USE_HAL_SPI_REGISTER_CALLBACKS 0u +#define USE_HAL_TIM_REGISTER_CALLBACKS 0u +#define USE_HAL_UART_REGISTER_CALLBACKS 0u +#define USE_HAL_USART_REGISTER_CALLBACKS 0u +#define USE_HAL_WWDG_REGISTER_CALLBACKS 0u + +/* ########################## Oscillator Values adaptation ####################*/ +/** + * @brief Adjust the value of External High Speed oscillator (HSE) used in your application. + * This value is used by the RCC HAL module to compute the system frequency + * (when HSE is used as system clock source, directly or through the PLL). + */ +#if !defined (HSE_VALUE) +#define HSE_VALUE (16000000UL) /*!< Value of the External oscillator in Hz */ +#endif /* HSE_VALUE */ + +#if !defined (HSE_STARTUP_TIMEOUT) +#define HSE_STARTUP_TIMEOUT (100UL) /*!< Time out for HSE start up, in ms */ +#endif /* HSE_STARTUP_TIMEOUT */ + +/** + * @brief Internal High Speed oscillator (HSI) value. + * This value is used by the RCC HAL module to compute the system frequency + * (when HSI is used as system clock source, directly or through the PLL). + */ +#if !defined (HSI_VALUE) +#define HSI_VALUE (16000000UL) /*!< Value of the Internal oscillator in Hz*/ +#endif /* HSI_VALUE */ + +#if defined(STM32G0C1xx) || defined(STM32G0B1xx) || defined(STM32G0B0xx) +/** + * @brief Internal High Speed oscillator (HSI48) value for USB FS, SDMMC and RNG. + * This internal oscillator is mainly dedicated to provide a high precision clock to + * the USB peripheral by means of a special Clock Recovery System (CRS) circuitry. + * When the CRS is not used, the HSI48 RC oscillator runs on it default frequency + * which is subject to manufacturing process variations. + */ +#if !defined (HSI48_VALUE) + #define HSI48_VALUE 48000000U /*!< Value of the Internal High Speed oscillator for USB FS/SDMMC/RNG in Hz. + The real value my vary depending on manufacturing process variations.*/ +#endif /* HSI48_VALUE */ +#endif + +/** + * @brief Internal Low Speed oscillator (LSI) value. + */ +#if !defined (LSI_VALUE) +#define LSI_VALUE (32000UL) /*!< LSI Typical Value in Hz*/ +#endif /* LSI_VALUE */ /*!< Value of the Internal Low Speed oscillator in Hz +The real value may vary depending on the variations +in voltage and temperature.*/ +/** + * @brief External Low Speed oscillator (LSE) value. + * This value is used by the UART, RTC HAL module to compute the system frequency + */ +#if !defined (LSE_VALUE) +#define LSE_VALUE (32768UL) /*!< Value of the External oscillator in Hz*/ +#endif /* LSE_VALUE */ + +#if !defined (LSE_STARTUP_TIMEOUT) +#define LSE_STARTUP_TIMEOUT (5000UL) /*!< Time out for LSE start up, in ms */ +#endif /* LSE_STARTUP_TIMEOUT */ + +/** + * @brief External clock source for I2S1 peripheral + * This value is used by the RCC HAL module to compute the I2S1 clock source + * frequency. + */ +#if !defined (EXTERNAL_I2S1_CLOCK_VALUE) +#define EXTERNAL_I2S1_CLOCK_VALUE (48000UL) /*!< Value of the I2S1 External clock source in Hz*/ +#endif /* EXTERNAL_I2S1_CLOCK_VALUE */ + +#if defined(STM32G0C1xx) || defined(STM32G0B1xx) || defined(STM32G0B0xx) +/** + * @brief External clock source for I2S2 peripheral + * This value is used by the RCC HAL module to compute the I2S2 clock source + * frequency. + */ +#if !defined (EXTERNAL_I2S2_CLOCK_VALUE) + #define EXTERNAL_I2S2_CLOCK_VALUE 48000U /*!< Value of the I2S2 External clock source in Hz*/ +#endif /* EXTERNAL_I2S2_CLOCK_VALUE */ +#endif + +/* Tip: To avoid modifying this file each time you need to use different HSE, + === you can define the HSE value in your toolchain compiler preprocessor. */ + +/* ########################### System Configuration ######################### */ +/** + * @brief This is the HAL system configuration section + */ +#define VDD_VALUE (3300UL) /*!< Value of VDD in mv */ +#define TICK_INT_PRIORITY 3U /*!< tick interrupt priority */ +#define USE_RTOS 0U +#define PREFETCH_ENABLE 1U +#define INSTRUCTION_CACHE_ENABLE 1U + +/* ################## SPI peripheral configuration ########################## */ + +/* CRC FEATURE: Use to activate CRC feature inside HAL SPI Driver +* Activated: CRC code is present inside driver +* Deactivated: CRC code cleaned from driver +*/ + +#define USE_SPI_CRC 0U + +/* ################## CRYP peripheral configuration ########################## */ + +#define USE_HAL_CRYP_SUSPEND_RESUME 1U + +/* ########################## Assert Selection ############################## */ +/** + * @brief Uncomment the line below to expanse the "assert_param" macro in the + * HAL drivers code + */ +/* #define USE_FULL_ASSERT 1U */ + +/* Includes ------------------------------------------------------------------*/ +/** + * @brief Include modules header file + */ + +#ifdef HAL_RCC_MODULE_ENABLED +#include "stm32g0xx_hal_rcc.h" +#endif /* HAL_RCC_MODULE_ENABLED */ + +#ifdef HAL_GPIO_MODULE_ENABLED +#include "stm32g0xx_hal_gpio.h" +#endif /* HAL_GPIO_MODULE_ENABLED */ + +#ifdef HAL_DMA_MODULE_ENABLED +#include "stm32g0xx_hal_dma.h" +#endif /* HAL_DMA_MODULE_ENABLED */ + +#ifdef HAL_CORTEX_MODULE_ENABLED +#include "stm32g0xx_hal_cortex.h" +#endif /* HAL_CORTEX_MODULE_ENABLED */ + +#ifdef HAL_ADC_MODULE_ENABLED +#include "stm32g0xx_hal_adc.h" +#include "stm32g0xx_hal_adc_ex.h" +#endif /* HAL_ADC_MODULE_ENABLED */ + +#ifdef HAL_CEC_MODULE_ENABLED +#include "stm32g0xx_hal_cec.h" +#endif /* HAL_CEC_MODULE_ENABLED */ + +#ifdef HAL_COMP_MODULE_ENABLED +#include "stm32g0xx_hal_comp.h" +#endif /* HAL_COMP_MODULE_ENABLED */ + +#ifdef HAL_CRC_MODULE_ENABLED +#include "stm32g0xx_hal_crc.h" +#endif /* HAL_CRC_MODULE_ENABLED */ + +#ifdef HAL_CRYP_MODULE_ENABLED +#include "stm32g0xx_hal_cryp.h" +#endif /* HAL_CRYP_MODULE_ENABLED */ + +#ifdef HAL_DAC_MODULE_ENABLED +#include "stm32g0xx_hal_dac.h" +#endif /* HAL_DAC_MODULE_ENABLED */ + +#ifdef HAL_EXTI_MODULE_ENABLED +#include "stm32g0xx_hal_exti.h" +#endif /* HAL_EXTI_MODULE_ENABLED */ + +#ifdef HAL_FLASH_MODULE_ENABLED +#include "stm32g0xx_hal_flash.h" +#endif /* HAL_FLASH_MODULE_ENABLED */ + +#ifdef HAL_FDCAN_MODULE_ENABLED +#include "stm32g0xx_hal_fdcan.h" +#endif /* HAL_FDCAN_MODULE_ENABLED */ + +#ifdef HAL_HCD_MODULE_ENABLED +#include "stm32g0xx_hal_hcd.h" +#endif /* HAL_HCD_MODULE_ENABLED */ + +#ifdef HAL_I2C_MODULE_ENABLED +#include "stm32g0xx_hal_i2c.h" +#endif /* HAL_I2C_MODULE_ENABLED */ + +#ifdef HAL_I2S_MODULE_ENABLED +#include "stm32g0xx_hal_i2s.h" +#endif /* HAL_I2S_MODULE_ENABLED */ + +#ifdef HAL_IRDA_MODULE_ENABLED +#include "stm32g0xx_hal_irda.h" +#endif /* HAL_IRDA_MODULE_ENABLED */ + +#ifdef HAL_IWDG_MODULE_ENABLED +#include "stm32g0xx_hal_iwdg.h" +#endif /* HAL_IWDG_MODULE_ENABLED */ + +#ifdef HAL_LPTIM_MODULE_ENABLED +#include "stm32g0xx_hal_lptim.h" +#endif /* HAL_LPTIM_MODULE_ENABLED */ + +#ifdef HAL_PCD_MODULE_ENABLED +#include "stm32g0xx_hal_pcd.h" +#endif /* HAL_PCD_MODULE_ENABLED */ + +#ifdef HAL_PWR_MODULE_ENABLED +#include "stm32g0xx_hal_pwr.h" +#endif /* HAL_PWR_MODULE_ENABLED */ + +#ifdef HAL_RNG_MODULE_ENABLED +#include "stm32g0xx_hal_rng.h" +#endif /* HAL_RNG_MODULE_ENABLED */ + +#ifdef HAL_RTC_MODULE_ENABLED +#include "stm32g0xx_hal_rtc.h" +#endif /* HAL_RTC_MODULE_ENABLED */ + +#ifdef HAL_SMARTCARD_MODULE_ENABLED +#include "stm32g0xx_hal_smartcard.h" +#endif /* HAL_SMARTCARD_MODULE_ENABLED */ + +#ifdef HAL_SMBUS_MODULE_ENABLED +#include "stm32g0xx_hal_smbus.h" +#endif /* HAL_SMBUS_MODULE_ENABLED */ + +#ifdef HAL_SPI_MODULE_ENABLED +#include "stm32g0xx_hal_spi.h" +#endif /* HAL_SPI_MODULE_ENABLED */ + +#ifdef HAL_TIM_MODULE_ENABLED +#include "stm32g0xx_hal_tim.h" +#endif /* HAL_TIM_MODULE_ENABLED */ + +#ifdef HAL_UART_MODULE_ENABLED +#include "stm32g0xx_hal_uart.h" +#endif /* HAL_UART_MODULE_ENABLED */ + +#ifdef HAL_USART_MODULE_ENABLED +#include "stm32g0xx_hal_usart.h" +#endif /* HAL_USART_MODULE_ENABLED */ + +#ifdef HAL_WWDG_MODULE_ENABLED +#include "stm32g0xx_hal_wwdg.h" +#endif /* HAL_WWDG_MODULE_ENABLED */ + +/* Exported macro ------------------------------------------------------------*/ +#ifdef USE_FULL_ASSERT +/** + * @brief The assert_param macro is used for functions parameters check. + * @param expr If expr is false, it calls assert_failed function + * which reports the name of the source file and the source + * line number of the call that failed. + * If expr is true, it returns no value. + * @retval None + */ +#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__)) +/* Exported functions ------------------------------------------------------- */ +void assert_failed(uint8_t *file, uint32_t line); +#else +#define assert_param(expr) ((void)0U) +#endif /* USE_FULL_ASSERT */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32G0xx_HAL_CONF_H */ diff --git a/firmware/Core/Inc/stm32g0xx_it.h b/firmware/Core/Inc/stm32g0xx_it.h new file mode 100644 index 0000000..fc83b85 --- /dev/null +++ b/firmware/Core/Inc/stm32g0xx_it.h @@ -0,0 +1,60 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file stm32g0xx_it.h + * @brief This file contains the headers of the interrupt handlers. + ****************************************************************************** + * @attention + * + * Copyright (c) 2021 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32G0xx_IT_H +#define __STM32G0xx_IT_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ + +/* USER CODE END Includes */ + +/* Exported types ------------------------------------------------------------*/ +/* USER CODE BEGIN ET */ + +/* USER CODE END ET */ + +/* Exported constants --------------------------------------------------------*/ +/* USER CODE BEGIN EC */ + +/* USER CODE END EC */ + +/* Exported macro ------------------------------------------------------------*/ +/* USER CODE BEGIN EM */ + +/* USER CODE END EM */ + +/* Exported functions prototypes ---------------------------------------------*/ +void NMI_Handler(void); +void HardFault_Handler(void); +void TIM6_IRQHandler(void); +/* USER CODE BEGIN EFP */ + +/* USER CODE END EFP */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32G0xx_IT_H */ diff --git a/firmware/Core/Inc/tim.h b/firmware/Core/Inc/tim.h new file mode 100644 index 0000000..7ada743 --- /dev/null +++ b/firmware/Core/Inc/tim.h @@ -0,0 +1,57 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file tim.h + * @brief This file contains all the function prototypes for + * the tim.c file + ****************************************************************************** + * @attention + * + * Copyright (c) 2021 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __TIM_H__ +#define __TIM_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "main.h" + +/* USER CODE BEGIN Includes */ + +/* USER CODE END Includes */ + +extern TIM_HandleTypeDef htim3; + +extern TIM_HandleTypeDef htim17; + +/* USER CODE BEGIN Private defines */ + +/* USER CODE END Private defines */ + +void MX_TIM3_Init(void); +void MX_TIM17_Init(void); + +void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim); + +/* USER CODE BEGIN Prototypes */ + +/* USER CODE END Prototypes */ + +#ifdef __cplusplus +} +#endif + +#endif /* __TIM_H__ */ + diff --git a/firmware/Core/Src/app_freertos.c b/firmware/Core/Src/app_freertos.c new file mode 100644 index 0000000..e2ac221 --- /dev/null +++ b/firmware/Core/Src/app_freertos.c @@ -0,0 +1,663 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * File Name : app_freertos.c + * Description : Code for freertos applications + ****************************************************************************** + * @attention + * + * Copyright (c) 2021 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Includes ------------------------------------------------------------------*/ +#include "FreeRTOS.h" +#include "task.h" +#include "main.h" +#include "cmsis_os.h" + +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ +#include "BME280_STM32.h" +#include "pid.h" +#include "icons.h" +#include "ssd1306.h" +#include "string.h" +#include "stdio.h" +/* USER CODE END Includes */ + +/* Private typedef -----------------------------------------------------------*/ +/* USER CODE BEGIN PTD */ + +typedef struct { + char text[6]; + uint8_t drytemp; + uint32_t drytime; +} MenuItem; + +/* USER CODE END PTD */ + +/* Private define ------------------------------------------------------------*/ +/* USER CODE BEGIN PD */ + +/* USER CODE END PD */ + +/* Private macro -------------------------------------------------------------*/ +/* USER CODE BEGIN PM */ + +/* USER CODE END PM */ + +/* Private variables ---------------------------------------------------------*/ +/* USER CODE BEGIN Variables */ +float aimTemperature, Temperature, Pressure, aimHumidity, Humidity; //BME280 results and aim values +uint8_t powerFan = 0, powerHeater = 0; //Set fan/heater power 0 - 100 + +//PID settings +PIDController pid = { + .Kp = 5.0f, + .Ki = 2.0f, + .Kd = 1.0f, + .T = 0.25f, //4 times per second + .tau = 0.2f, //Low-pass filter (0 - no filter) + .limMin = 0.0f, + .limMax = 100.0f +}; + +MenuItem menuProg[] = { +// text temp time in seconds + {"PLA", 45, 4*3600}, + {"ABS", 60, 2*3600}, + {"PETG", 65, 2*3600}, + {"TPU", 50, 4*3600}, + {"NYLON", 70, 8*3600}, + {"PVA", 45, 4*3600}, + {"ASA", 60, 4*3600}, + {"PP", 55, 6*3600}, + {"SILIC", 65, 3*3600}, + {"TEST", 27, 30} +}; + +uint8_t menuMax = 9; // Max menu index +uint8_t prog = 0; // Selected program +uint8_t menuFrame = 0; // Menu list frame index +uint8_t mode = 0; // Current mode: 0 - Idle menu; 1 - Drying; 2 - Drying stop question; 3 - Keeping; + // 4 - Keeping stop question; 98 - Thermal runout; 99 - sensor error; +uint8_t qConfirm = 0; // Question menu (Yes/No) selected answer +uint32_t time_cnt = 0; // Time counter for Drying / Keeping action + +/* USER CODE END Variables */ +/* Definitions for defaultTask */ +osThreadId_t defaultTaskHandle; +const osThreadAttr_t defaultTask_attributes = { + .name = "defaultTask", + .priority = (osPriority_t) osPriorityNormal, + .stack_size = 128 * 4 +}; +/* Definitions for svcDisplay */ +osThreadId_t svcDisplayHandle; +const osThreadAttr_t svcDisplay_attributes = { + .name = "svcDisplay", + .priority = (osPriority_t) osPriorityLow, + .stack_size = 128 * 4 +}; +/* Definitions for svcSensors */ +osThreadId_t svcSensorsHandle; +const osThreadAttr_t svcSensors_attributes = { + .name = "svcSensors", + .priority = (osPriority_t) osPriorityLow, + .stack_size = 128 * 4 +}; +/* Definitions for svcKeys */ +osThreadId_t svcKeysHandle; +const osThreadAttr_t svcKeys_attributes = { + .name = "svcKeys", + .priority = (osPriority_t) osPriorityLow, + .stack_size = 128 * 4 +}; +/* Definitions for qKeysPressed */ +osMessageQueueId_t qKeysPressedHandle; +const osMessageQueueAttr_t qKeysPressed_attributes = { + .name = "qKeysPressed" +}; +/* Definitions for qDisplay */ +osMessageQueueId_t qDisplayHandle; +const osMessageQueueAttr_t qDisplay_attributes = { + .name = "qDisplay" +}; +/* Definitions for timeCounter */ +osTimerId_t timeCounterHandle; +const osTimerAttr_t timeCounter_attributes = { + .name = "timeCounter" +}; + +/* Private function prototypes -----------------------------------------------*/ +/* USER CODE BEGIN FunctionPrototypes */ +void update_ui(void); //update display main function +void draw_info_frame(void); //draw frame and pics for info frame +void draw_info(void); //update drying/keeping info +void draw_time_info(void); //update drying/keeping timers +void draw_header(void); //update display header lines +void draw_menu(void); //Draw program select menu +void draw_question(void); //Draw STOP? question +void draw_error(void); //Draw sensor error message + +void setPWMs(void); //set Timer values according to requested settings +/* USER CODE END FunctionPrototypes */ + +void StartDefaultTask(void *argument); +void svc_display(void *argument); +void svc_sensors(void *argument); +void svc_keys(void *argument); +void clock_tick(void *argument); + +void MX_FREERTOS_Init(void); /* (MISRA C 2004 rule 8.1) */ + +/** + * @brief FreeRTOS initialization + * @param None + * @retval None + */ +void MX_FREERTOS_Init(void) { + /* USER CODE BEGIN Init */ + + /* USER CODE END Init */ + + /* USER CODE BEGIN RTOS_MUTEX */ + /* add mutexes, ... */ + /* USER CODE END RTOS_MUTEX */ + + /* USER CODE BEGIN RTOS_SEMAPHORES */ + /* add semaphores, ... */ + /* USER CODE END RTOS_SEMAPHORES */ + + /* Create the timer(s) */ + /* creation of timeCounter */ + timeCounterHandle = osTimerNew(clock_tick, osTimerPeriodic, NULL, &timeCounter_attributes); + + /* USER CODE BEGIN RTOS_TIMERS */ + /* start timers, add new ones, ... */ + /* USER CODE END RTOS_TIMERS */ + + /* Create the queue(s) */ + /* creation of qKeysPressed */ + qKeysPressedHandle = osMessageQueueNew (16, sizeof(uint8_t), &qKeysPressed_attributes); + + /* creation of qDisplay */ + qDisplayHandle = osMessageQueueNew (16, sizeof(uint8_t), &qDisplay_attributes); + + /* USER CODE BEGIN RTOS_QUEUES */ + /* add queues, ... */ + /* USER CODE END RTOS_QUEUES */ + + /* Create the thread(s) */ + /* creation of defaultTask */ + defaultTaskHandle = osThreadNew(StartDefaultTask, NULL, &defaultTask_attributes); + + /* creation of svcDisplay */ + svcDisplayHandle = osThreadNew(svc_display, NULL, &svcDisplay_attributes); + + /* creation of svcSensors */ + svcSensorsHandle = osThreadNew(svc_sensors, NULL, &svcSensors_attributes); + + /* creation of svcKeys */ + svcKeysHandle = osThreadNew(svc_keys, NULL, &svcKeys_attributes); + + /* USER CODE BEGIN RTOS_THREADS */ + /* add threads, ... */ + /* USER CODE END RTOS_THREADS */ + + /* USER CODE BEGIN RTOS_EVENTS */ + /* add events, ... */ + /* USER CODE END RTOS_EVENTS */ + +} + +/* USER CODE BEGIN Header_StartDefaultTask */ +/** + * @brief Function implementing the defaultTask thread. + * @param argument: Not used + * @retval None + */ +/* USER CODE END Header_StartDefaultTask */ +void StartDefaultTask(void *argument) +{ + /* USER CODE BEGIN StartDefaultTask */ + + osTimerStart(timeCounterHandle, 1000); + + /* Infinite loop */ + uint8_t key; //pressed key id + for(;;) + { + //Check if there is a key pressed + if (osMessageQueueGetCount(qKeysPressedHandle) > 0) { + osMessageQueueGet(qKeysPressedHandle, &key, NULL, 50); + + switch (key) { + case 0: // Down button + switch (mode) { + case 0: + if (prog < menuMax) prog++; + if (prog > menuFrame + 2) menuFrame = prog - 2; + break; + case 2: + case 4: + qConfirm = 0; + break; + } + break; + + case 1: // OK button + switch (mode) { + case 0: //Program has been chosen, lets start heating + time_cnt = menuProg[prog].drytime; + aimTemperature = menuProg[prog].drytemp; + pid.integrator = 0; + powerFan = 100; + mode = 1; + break; + case 1: //Ask for confirmation to stop drying + mode = 2; + qConfirm = 0; + break; + case 3: //Ask for confirmation to stop keeping + mode = 4; + qConfirm = 0; + break; + case 2: //resume heating or stop and go to idle mode + if (qConfirm) { + aimTemperature = 0; + mode = 0; + } else { + mode = 1; + } + break; + case 4: //resume keeping or stop and go to idle mode + if (qConfirm) { + aimTemperature = 0; + aimHumidity = 0; + mode = 0; + } else { + mode = 3; + } + break; + } + break; + + case 2: // Up button + switch (mode) { + case 0: + if (prog > 0) prog--; + if (prog < menuFrame) menuFrame = prog; + break; + case 2: + case 4: + qConfirm = 1; + break; + } + break; + } //switch key + update_ui(); + } //key queue check + + osDelay(1); + } + /* USER CODE END StartDefaultTask */ +} + +/* USER CODE BEGIN Header_svc_display */ +/** +* @brief Function implementing the svcDisplay thread. +* @param argument: Not used +* @retval None +*/ +/* USER CODE END Header_svc_display */ +void svc_display(void *argument) +{ + /* USER CODE BEGIN svc_display */ + + /* Infinite loop */ + for(;;) + { + + if (mode == 1 || mode == 3) { + draw_info(); + } + + osDelay(500); + } + /* USER CODE END svc_display */ +} + +/* USER CODE BEGIN Header_svc_sensors */ +/** +* @brief Function implementing the svcSensors thread. +* @param argument: Not used +* @retval None +*/ +/* USER CODE END Header_svc_sensors */ +void svc_sensors(void *argument) +{ + /* USER CODE BEGIN svc_sensors */ + + uint16_t tro = 0; //counter for thermal runout protection + + aimTemperature = Temperature = Pressure = aimHumidity = Humidity = 0.0f; + PID_Init(&pid); + + /* Infinite loop */ + for(;;) + { + if (mode < 98) { + BME280_Measure(); + if (Temperature == 0.0f && Humidity == 0.0f) { + //Some sensor malfunction + mode = 99; + aimTemperature = 0; + aimHumidity = 0; + powerFan = 100; + powerHeater = 0; + update_ui(); + } else { + switch (mode) { //update fan/heater settings here. + case 0: + if (powerHeater > 0) powerHeater = 0; + if (Temperature >= 35) powerFan = 100; + else powerFan = 0; + break; + case 1: + case 2: + powerHeater = PID_Update(&pid, aimTemperature, Temperature); + if (powerHeater > 0) powerFan = 100; + else powerFan = 85; + break; + case 3: + case 4: + if (Humidity > 12) powerHeater = PID_Update(&pid, aimTemperature, Temperature); + else powerHeater = 0; + break; + } //switch (mode) + } //else + + //Simple thermal runout protection + if (Temperature > aimTemperature && Temperature > 45) tro++; + else if (tro != 0) tro = 0; + if (tro > 480) { //480 - 2 minutes (120 sec * 4 as this task runs 4 times per second) + mode = 98; + aimTemperature = 0; + aimHumidity = 0; + powerFan = 100; + powerHeater = 0; + update_ui(); + } + } //if (mode < 98) + + setPWMs(); + + osDelay(250); + } + /* USER CODE END svc_sensors */ +} + +/* USER CODE BEGIN Header_svc_keys */ +/** +* @brief Function implementing the svcKeys thread. +* @param argument: Not used +* @retval None +*/ +/* USER CODE END Header_svc_keys */ +void svc_keys(void *argument) +{ + /* USER CODE BEGIN svc_keys */ + uint8_t bBuff[3] = {0xFF}; // buttons are grounded when pressed + uint8_t bState[3] = {0xFF}; //last reported state. We need this to prevent repeated reports + uint8_t read, i; + + /* Infinite loop */ + for(;;) + { + read = KEY_DN_GPIO_Port->IDR & 0x00000007; //Read 3 bits of buttons port (PB0, PB1, PB2) + // check every button and shift its values to the array + for (i=0; i<3; i++) { + bBuff[i] = (bBuff[i]<<1) | ((read >> i) & 1); //Shift button buffer left and assign a button bit from the read data + if ( ((bBuff[i] & 0x0F) == 0b00000000) && (bState[i] == 1) ) { //if we read 0 last 4 times and last report was 1 then the button has been pressed + bState[i] = 0; + osMessageQueuePut(qKeysPressedHandle, &i, 0, 50); //Put the pressed button id to the key queue + } + if ( ((bBuff[i] & 0x0F) == 0b00001111) && (bState[i] == 0) ) { //if we read 1 last 4 times and last report was 0 then the button has been released + bState[i] = 1; + } + } + + osDelay(4); + } + /* USER CODE END svc_keys */ +} + +/* clock_tick function */ +void clock_tick(void *argument) +{ + /* USER CODE BEGIN clock_tick */ + + //time counters here. Happens every second + switch (mode) { + case 1: + case 2: + time_cnt--; + if (time_cnt == 0) { + aimTemperature = 35; + pid.integrator = 0; + powerFan = 85; + mode = 3; + update_ui(); + } + break; + case 3: + case 4: + time_cnt++; + break; + } + draw_time_info(); + + + /* USER CODE END clock_tick */ +} + +/* Private application code --------------------------------------------------*/ +/* USER CODE BEGIN Application */ + +//update display main function +void update_ui(void) { + ssd1306_Fill(Black); + draw_header(); + switch (mode) { + case 0: + draw_menu(); + break; + case 1: + case 3: + draw_info_frame(); + break; + case 2: + case 4: + draw_question(); + break; + case 98: + case 99: + draw_error(); + break; + } //switch (mode) + ssd1306_UpdateScreen(); +} + +//draw frame and pics for info frame +void draw_info_frame(void) { + ssd1306_DrawBitmap(4, 16, humidity16, 16, 16, White); + ssd1306_DrawBitmap(0, 32, temperature24, 24, 24, White); + ssd1306_DrawBitmap(26, 54, heat_icon, 18, 8, White); + ssd1306_DrawBitmap(80, 54, fan_icon, 16, 8, White); +} + +//update drying/keeping info +void draw_info(void) { + char num[8]; + + //Humidity + ssd1306_DrawRectangle(26, 16, 61, 26, Black, 1); + sprintf(num, "%.1f%%", Humidity); + ssd1306_SetCursor(26, 16); + ssd1306_WriteString(num, Font_7x10, White); + + //Temperature + ssd1306_DrawRectangle(26, 32, 122, 58, Black, 1); + sprintf(num, "%.1f*C", Temperature); + ssd1306_SetCursor(26, 32); + ssd1306_WriteString(num, Font_16x26, White); + + //PWM Heater + ssd1306_DrawRectangle(47, 55, 65, 63, Black, 1); + sprintf(num, "%u", powerHeater); + ssd1306_SetCursor(47, 55); + ssd1306_WriteString(num, Font_6x8, White); + //PWM Fan + ssd1306_DrawRectangle(98, 55, 116, 63, Black, 1); + sprintf(num, "%u", powerFan); + ssd1306_SetCursor(98, 55); + ssd1306_WriteString(num, Font_6x8, White); + + ssd1306_UpdateScreen(); +} + +//update drying/keeping timers +void draw_time_info(void) { + if (mode < 98) { + ssd1306_SetCursor(78, 8); + if (mode > 0) { + uint8_t hrs, mins, secs; + uint32_t rem; + hrs = time_cnt / 3600; + rem = time_cnt % 3600; + mins = rem / 60; + secs = rem % 60; + char ts[9]; + sprintf(ts, "%02d:%02d:%02d", hrs, mins, secs); + ssd1306_DrawRectangle(78, 8, 128, 16, Black, 1); + ssd1306_WriteString(ts, Font_6x8, White); + } else { + ssd1306_WriteString("00:00:00", Font_6x8, White); + } + ssd1306_UpdateScreen(); + }// if mode < 98 +} + +//update display header lines +void draw_header(void) { + char header[6], action[8]; + + switch (mode) { + case 0: + strcpy(header, "MENU"); + strcpy(action, "Idle"); + break; + case 1: + strcpy(header, menuProg[prog].text); + strcpy(action, "Drying"); + break; + case 2: + strcpy(header, "STOP?"); + strcpy(action, "Drying"); + break; + case 3: + strcpy(header, "DONE!"); + strcpy(action, "Keeping"); + break; + case 4: + strcpy(header, "STOP?"); + strcpy(action, "Keeping"); + break; + case 98: + case 99: + strcpy(header, "ERROR"); + break; + } //Switch (mode) + ssd1306_SetCursor(0, 0); + ssd1306_WriteString(header, Font_7x10, White); + + if (mode < 98) { + ssd1306_SetCursor(78, 0); + ssd1306_WriteString(action, Font_6x8, White); + }// if mode < 98 + +} + +//Draw program select menu +void draw_menu(void) { + char str[7]; + for (uint8_t i=0; i<3; i++) { + if (prog == i + menuFrame) { + ssd1306_Line(0, i*15 + 16, 127, i*15 + 16, White); + ssd1306_Line(0, i*15 + 31, 127, i*15 + 31, White); + } + ssd1306_SetCursor(0, i*15 + 17); + ssd1306_WriteString(menuProg[i + menuFrame].text, Font_7x10, White); + ssd1306_SetCursor(78, i*15 + 16); + sprintf(str, "%u *c", menuProg[i + menuFrame].drytemp); + ssd1306_WriteString(str, Font_6x8, White); + ssd1306_SetCursor(78, i*15 + 24); + sprintf(str, "%luh%lum", menuProg[i + menuFrame].drytime/3600, menuProg[i + menuFrame].drytime%3600/60); + ssd1306_WriteString(str, Font_6x8, White); + } //for +} + +//Draw STOP? question +void draw_question(void) { + ssd1306_DrawRoundRectangle(4, 20, 123, 60, White); + ssd1306_SetCursor(20, 33); + ssd1306_WriteString("YES NO", Font_7x10, White); + if (qConfirm) { + ssd1306_DrawRoundRectangle(17, 30, 56, 49, White); + } else { + ssd1306_DrawRoundRectangle(77, 30, 104, 49, White); + } +} + +//Draw sensor error message +void draw_error(void) { + char str1[8], str2[7]; + + if (mode == 99) { + strcpy(str1, "SENSOR"); + strcpy(str2, "FAIL"); + } + if (mode == 98) { + strcpy(str1, "THERMAL"); + strcpy(str2, "RUNOUT"); + } + ssd1306_DrawBitmap(111, 0, error_icon, 14, 16, White); + ssd1306_SetCursor(26, 24); + ssd1306_WriteString(str1, Font_7x10, White); + ssd1306_SetCursor(38, 40); + ssd1306_WriteString(str2, Font_7x10, White); +} + +//set Timer values according to requested settings +void setPWMs(void) { + TIM3->CCR1 = powerHeater; + TIM3->CCR2 = powerFan; + if (powerHeater < powerFan) { + TIM3->ARR = powerHeater - 10; + } else { + TIM3->ARR = powerFan - 10; + } + +} + +/* USER CODE END Application */ + diff --git a/firmware/Core/Src/gpio.c b/firmware/Core/Src/gpio.c new file mode 100644 index 0000000..4eff01e --- /dev/null +++ b/firmware/Core/Src/gpio.c @@ -0,0 +1,63 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file gpio.c + * @brief This file provides code for the configuration + * of all used GPIO pins. + ****************************************************************************** + * @attention + * + * Copyright (c) 2021 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Includes ------------------------------------------------------------------*/ +#include "gpio.h" + +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +/*----------------------------------------------------------------------------*/ +/* Configure GPIO */ +/*----------------------------------------------------------------------------*/ +/* USER CODE BEGIN 1 */ + +/* USER CODE END 1 */ + +/** Configure pins as + * Analog + * Input + * Output + * EVENT_OUT + * EXTI +*/ +void MX_GPIO_Init(void) +{ + + GPIO_InitTypeDef GPIO_InitStruct = {0}; + + /* GPIO Ports Clock Enable */ + __HAL_RCC_GPIOF_CLK_ENABLE(); + __HAL_RCC_GPIOA_CLK_ENABLE(); + __HAL_RCC_GPIOB_CLK_ENABLE(); + __HAL_RCC_GPIOD_CLK_ENABLE(); + + /*Configure GPIO pins : PBPin PBPin PBPin */ + GPIO_InitStruct.Pin = KEY_DN_Pin|KEY_OK_Pin|KEY_UP_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_PULLUP; + HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); + +} + +/* USER CODE BEGIN 2 */ + +/* USER CODE END 2 */ diff --git a/firmware/Core/Src/i2c.c b/firmware/Core/Src/i2c.c new file mode 100644 index 0000000..2a601ca --- /dev/null +++ b/firmware/Core/Src/i2c.c @@ -0,0 +1,228 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file i2c.c + * @brief This file provides code for the configuration + * of the I2C instances. + ****************************************************************************** + * @attention + * + * Copyright (c) 2021 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ +/* Includes ------------------------------------------------------------------*/ +#include "i2c.h" + +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +I2C_HandleTypeDef hi2c1; +I2C_HandleTypeDef hi2c2; + +/* I2C1 init function */ +void MX_I2C1_Init(void) +{ + + /* USER CODE BEGIN I2C1_Init 0 */ + + /* USER CODE END I2C1_Init 0 */ + + /* USER CODE BEGIN I2C1_Init 1 */ + + /* USER CODE END I2C1_Init 1 */ + hi2c1.Instance = I2C1; + hi2c1.Init.Timing = 0x10707DBC; + hi2c1.Init.OwnAddress1 = 0; + hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; + hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; + hi2c1.Init.OwnAddress2 = 0; + hi2c1.Init.OwnAddress2Masks = I2C_OA2_NOMASK; + hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; + hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; + if (HAL_I2C_Init(&hi2c1) != HAL_OK) + { + Error_Handler(); + } + + /** Configure Analogue filter + */ + if (HAL_I2CEx_ConfigAnalogFilter(&hi2c1, I2C_ANALOGFILTER_ENABLE) != HAL_OK) + { + Error_Handler(); + } + + /** Configure Digital filter + */ + if (HAL_I2CEx_ConfigDigitalFilter(&hi2c1, 0) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN I2C1_Init 2 */ + + /* USER CODE END I2C1_Init 2 */ + +} +/* I2C2 init function */ +void MX_I2C2_Init(void) +{ + + /* USER CODE BEGIN I2C2_Init 0 */ + + /* USER CODE END I2C2_Init 0 */ + + /* USER CODE BEGIN I2C2_Init 1 */ + + /* USER CODE END I2C2_Init 1 */ + hi2c2.Instance = I2C2; + hi2c2.Init.Timing = 0x10707DBC; + hi2c2.Init.OwnAddress1 = 0; + hi2c2.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; + hi2c2.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; + hi2c2.Init.OwnAddress2 = 0; + hi2c2.Init.OwnAddress2Masks = I2C_OA2_NOMASK; + hi2c2.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; + hi2c2.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; + if (HAL_I2C_Init(&hi2c2) != HAL_OK) + { + Error_Handler(); + } + + /** Configure Analogue filter + */ + if (HAL_I2CEx_ConfigAnalogFilter(&hi2c2, I2C_ANALOGFILTER_ENABLE) != HAL_OK) + { + Error_Handler(); + } + + /** Configure Digital filter + */ + if (HAL_I2CEx_ConfigDigitalFilter(&hi2c2, 0) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN I2C2_Init 2 */ + + /* USER CODE END I2C2_Init 2 */ + +} + +void HAL_I2C_MspInit(I2C_HandleTypeDef* i2cHandle) +{ + + GPIO_InitTypeDef GPIO_InitStruct = {0}; + RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; + if(i2cHandle->Instance==I2C1) + { + /* USER CODE BEGIN I2C1_MspInit 0 */ + + /* USER CODE END I2C1_MspInit 0 */ + + /** Initializes the peripherals clocks + */ + PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_I2C1; + PeriphClkInit.I2c1ClockSelection = RCC_I2C1CLKSOURCE_PCLK1; + if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) + { + Error_Handler(); + } + + __HAL_RCC_GPIOB_CLK_ENABLE(); + /**I2C1 GPIO Configuration + PB8 ------> I2C1_SCL + PB9 ------> I2C1_SDA + */ + GPIO_InitStruct.Pin = I2C1_SCL_BME_Pin|I2C1_SDA_BME_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_AF_OD; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + GPIO_InitStruct.Alternate = GPIO_AF6_I2C1; + HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); + + /* I2C1 clock enable */ + __HAL_RCC_I2C1_CLK_ENABLE(); + /* USER CODE BEGIN I2C1_MspInit 1 */ + + /* USER CODE END I2C1_MspInit 1 */ + } + else if(i2cHandle->Instance==I2C2) + { + /* USER CODE BEGIN I2C2_MspInit 0 */ + + /* USER CODE END I2C2_MspInit 0 */ + + __HAL_RCC_GPIOB_CLK_ENABLE(); + /**I2C2 GPIO Configuration + PB10 ------> I2C2_SCL + PB11 ------> I2C2_SDA + */ + GPIO_InitStruct.Pin = I2C2_SCL_OLED_Pin|I2C2_SDA_OLED_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_AF_OD; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + GPIO_InitStruct.Alternate = GPIO_AF6_I2C2; + HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); + + /* I2C2 clock enable */ + __HAL_RCC_I2C2_CLK_ENABLE(); + /* USER CODE BEGIN I2C2_MspInit 1 */ + + /* USER CODE END I2C2_MspInit 1 */ + } +} + +void HAL_I2C_MspDeInit(I2C_HandleTypeDef* i2cHandle) +{ + + if(i2cHandle->Instance==I2C1) + { + /* USER CODE BEGIN I2C1_MspDeInit 0 */ + + /* USER CODE END I2C1_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_I2C1_CLK_DISABLE(); + + /**I2C1 GPIO Configuration + PB8 ------> I2C1_SCL + PB9 ------> I2C1_SDA + */ + HAL_GPIO_DeInit(I2C1_SCL_BME_GPIO_Port, I2C1_SCL_BME_Pin); + + HAL_GPIO_DeInit(I2C1_SDA_BME_GPIO_Port, I2C1_SDA_BME_Pin); + + /* USER CODE BEGIN I2C1_MspDeInit 1 */ + + /* USER CODE END I2C1_MspDeInit 1 */ + } + else if(i2cHandle->Instance==I2C2) + { + /* USER CODE BEGIN I2C2_MspDeInit 0 */ + + /* USER CODE END I2C2_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_I2C2_CLK_DISABLE(); + + /**I2C2 GPIO Configuration + PB10 ------> I2C2_SCL + PB11 ------> I2C2_SDA + */ + HAL_GPIO_DeInit(I2C2_SCL_OLED_GPIO_Port, I2C2_SCL_OLED_Pin); + + HAL_GPIO_DeInit(I2C2_SDA_OLED_GPIO_Port, I2C2_SDA_OLED_Pin); + + /* USER CODE BEGIN I2C2_MspDeInit 1 */ + + /* USER CODE END I2C2_MspDeInit 1 */ + } +} + +/* USER CODE BEGIN 1 */ + +/* USER CODE END 1 */ diff --git a/firmware/Core/Src/main.c b/firmware/Core/Src/main.c new file mode 100644 index 0000000..19b937e --- /dev/null +++ b/firmware/Core/Src/main.c @@ -0,0 +1,220 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : main.c + * @brief : Main program body + ****************************************************************************** + * @attention + * + * Copyright (c) 2021 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ +/* Includes ------------------------------------------------------------------*/ +#include "main.h" +#include "cmsis_os.h" +#include "i2c.h" +#include "tim.h" +#include "gpio.h" + +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ +#include "ssd1306.h" +#include "BME280_STM32.h" +/* USER CODE END Includes */ + +/* Private typedef -----------------------------------------------------------*/ +/* USER CODE BEGIN PTD */ + +/* USER CODE END PTD */ + +/* Private define ------------------------------------------------------------*/ +/* USER CODE BEGIN PD */ +/* USER CODE END PD */ + +/* Private macro -------------------------------------------------------------*/ +/* USER CODE BEGIN PM */ + +/* USER CODE END PM */ + +/* Private variables ---------------------------------------------------------*/ + +/* USER CODE BEGIN PV */ + +/* USER CODE END PV */ + +/* Private function prototypes -----------------------------------------------*/ +void SystemClock_Config(void); +void MX_FREERTOS_Init(void); +/* USER CODE BEGIN PFP */ + +/* USER CODE END PFP */ + +/* Private user code ---------------------------------------------------------*/ +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +/** + * @brief The application entry point. + * @retval int + */ +int main(void) +{ + /* USER CODE BEGIN 1 */ + + /* USER CODE END 1 */ + + /* MCU Configuration--------------------------------------------------------*/ + + /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ + HAL_Init(); + + /* USER CODE BEGIN Init */ + + /* USER CODE END Init */ + + /* Configure the system clock */ + SystemClock_Config(); + + /* USER CODE BEGIN SysInit */ + + /* USER CODE END SysInit */ + + /* Initialize all configured peripherals */ + MX_GPIO_Init(); + MX_I2C1_Init(); + MX_I2C2_Init(); + MX_TIM3_Init(); + MX_TIM17_Init(); + /* USER CODE BEGIN 2 */ + ssd1306_Init(); + BME280_Config (OSRS_2, OSRS_OFF, OSRS_1, MODE_NORMAL, T_SB_250, IIR_4); + /* USER CODE END 2 */ + + /* Init scheduler */ + osKernelInitialize(); /* Call init function for freertos objects (in freertos.c) */ + MX_FREERTOS_Init(); + + /* Start scheduler */ + osKernelStart(); + + /* We should never get here as control is now taken by the scheduler */ + /* Infinite loop */ + /* USER CODE BEGIN WHILE */ + while (1) + { + /* USER CODE END WHILE */ + + /* USER CODE BEGIN 3 */ + } + /* USER CODE END 3 */ +} + +/** + * @brief System Clock Configuration + * @retval None + */ +void SystemClock_Config(void) +{ + RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + + /** Configure the main internal regulator output voltage + */ + HAL_PWREx_ControlVoltageScaling(PWR_REGULATOR_VOLTAGE_SCALE1); + + /** Initializes the RCC Oscillators according to the specified parameters + * in the RCC_OscInitTypeDef structure. + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI; + RCC_OscInitStruct.HSIState = RCC_HSI_ON; + RCC_OscInitStruct.HSIDiv = RCC_HSI_DIV1; + RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT; + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI; + RCC_OscInitStruct.PLL.PLLM = RCC_PLLM_DIV1; + RCC_OscInitStruct.PLL.PLLN = 8; + RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; + RCC_OscInitStruct.PLL.PLLR = RCC_PLLR_DIV2; + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + { + Error_Handler(); + } + + /** Initializes the CPU, AHB and APB buses clocks + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK + |RCC_CLOCKTYPE_PCLK1; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) + { + Error_Handler(); + } +} + +/* USER CODE BEGIN 4 */ + +/* USER CODE END 4 */ + +/** + * @brief Period elapsed callback in non blocking mode + * @note This function is called when TIM6 interrupt took place, inside + * HAL_TIM_IRQHandler(). It makes a direct call to HAL_IncTick() to increment + * a global variable "uwTick" used as application time base. + * @param htim : TIM handle + * @retval None + */ +void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) +{ + /* USER CODE BEGIN Callback 0 */ + + /* USER CODE END Callback 0 */ + if (htim->Instance == TIM6) { + HAL_IncTick(); + } + /* USER CODE BEGIN Callback 1 */ + + /* USER CODE END Callback 1 */ +} + +/** + * @brief This function is executed in case of error occurrence. + * @retval None + */ +void Error_Handler(void) +{ + /* USER CODE BEGIN Error_Handler_Debug */ + /* User can add his own implementation to report the HAL error return state */ + __disable_irq(); + while (1) + { + } + /* USER CODE END Error_Handler_Debug */ +} + +#ifdef USE_FULL_ASSERT +/** + * @brief Reports the name of the source file and the source line number + * where the assert_param error has occurred. + * @param file: pointer to the source file name + * @param line: assert_param error line source number + * @retval None + */ +void assert_failed(uint8_t *file, uint32_t line) +{ + /* USER CODE BEGIN 6 */ + /* User can add his own implementation to report the file name and line number, + ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ + /* USER CODE END 6 */ +} +#endif /* USE_FULL_ASSERT */ diff --git a/firmware/Core/Src/pid.c b/firmware/Core/Src/pid.c new file mode 100644 index 0000000..5da1b51 --- /dev/null +++ b/firmware/Core/Src/pid.c @@ -0,0 +1,83 @@ +/* + * pid.c + * + * Created on: Jan 18, 2022 + * Author: mcfly + */ + +#include "pid.h" + +void PID_Init(PIDController *pid) { + //Clear controller values + pid->integrator = 0.0f; + pid->prevError = 0.0f; + + pid->differentiator = 0.0f; + pid->prevMeasurement = 0.0f; + + pid->out = 0.0f; +} + + +float PID_Update(PIDController *pid, float setpoint, float measurement) { + // PID = Kp + Ki * 1/s + Kd * s/(s*tau+1) + + // e = error tothe setpoint + // p[n] = Kp * e[n] + // i[n] = Ki*T/2 * (e[n]+e[n-1]) + i[n-1] + // d[n] = 2*Kd/(2*tau+T) * (e[n]-e[n-1]) + (2*tau-T)/(2*tau+T) * d[n-1] + // PID = p[n]+i[n]+d[n] + + + //Error signal + float error = setpoint - measurement; + + //Proportional + float proportional = pid->Kp * error; + + //Integral + pid->integrator += 0.5f * pid->Ki * pid->T * (error + pid->prevError); + + //Anti-wind-up via dynamic integrator clamping + float limMinInt, limMaxInt; + + //Compute integrator limits + if (pid->limMax > proportional) { + limMaxInt = pid->limMax - proportional; + } else { + limMaxInt = 0.0f; + } + if (pid->limMin < proportional) { + limMinInt = pid->limMin - proportional; + } else { + limMinInt = 0.0f; + } + + //Clamp integrator + if (pid->integrator > limMaxInt) { + pid->integrator = limMaxInt; + } else if (pid->integrator < limMinInt) { + pid->integrator = limMinInt; + } + + //Derivative (band-limited differentiator) + pid->differentiator = (2.0f * pid->Kd * (measurement - pid->prevMeasurement) //Note: derivative on measurement + + (2.0f * pid->tau - pid->T) * pid->differentiator) + / (2.0f * pid->tau + pid->T); + + //Compute output and apply limits + pid->out = proportional + pid->integrator + pid->differentiator; + if (pid->out > pid->limMax) { + pid->out = pid->limMax; + } else if (pid->out < pid->limMin) { + pid->out = pid->limMin; + } + + //Store error and measurement for later use + pid->prevError = error; + pid->prevMeasurement = measurement; + + //Return controller output + return pid->out; + +} diff --git a/firmware/Core/Src/stm32g0xx_hal_msp.c b/firmware/Core/Src/stm32g0xx_hal_msp.c new file mode 100644 index 0000000..dfadb15 --- /dev/null +++ b/firmware/Core/Src/stm32g0xx_hal_msp.c @@ -0,0 +1,87 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file stm32g0xx_hal_msp.c + * @brief This file provides code for the MSP Initialization + * and de-Initialization codes. + ****************************************************************************** + * @attention + * + * Copyright (c) 2021 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Includes ------------------------------------------------------------------*/ +#include "main.h" +/* USER CODE BEGIN Includes */ + +/* USER CODE END Includes */ + +/* Private typedef -----------------------------------------------------------*/ +/* USER CODE BEGIN TD */ + +/* USER CODE END TD */ + +/* Private define ------------------------------------------------------------*/ +/* USER CODE BEGIN Define */ + +/* USER CODE END Define */ + +/* Private macro -------------------------------------------------------------*/ +/* USER CODE BEGIN Macro */ + +/* USER CODE END Macro */ + +/* Private variables ---------------------------------------------------------*/ +/* USER CODE BEGIN PV */ + +/* USER CODE END PV */ + +/* Private function prototypes -----------------------------------------------*/ +/* USER CODE BEGIN PFP */ + +/* USER CODE END PFP */ + +/* External functions --------------------------------------------------------*/ +/* USER CODE BEGIN ExternalFunctions */ + +/* USER CODE END ExternalFunctions */ + +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ +/** + * Initializes the Global MSP. + */ +void HAL_MspInit(void) +{ + /* USER CODE BEGIN MspInit 0 */ + + /* USER CODE END MspInit 0 */ + + __HAL_RCC_SYSCFG_CLK_ENABLE(); + __HAL_RCC_PWR_CLK_ENABLE(); + + /* System interrupt init*/ + /* PendSV_IRQn interrupt configuration */ + HAL_NVIC_SetPriority(PendSV_IRQn, 3, 0); + + /** Disable the internal Pull-Up in Dead Battery pins of UCPD peripheral + */ + HAL_SYSCFG_StrobeDBattpinsConfig(SYSCFG_CFGR1_UCPD1_STROBE | SYSCFG_CFGR1_UCPD2_STROBE); + + /* USER CODE BEGIN MspInit 1 */ + + /* USER CODE END MspInit 1 */ +} + +/* USER CODE BEGIN 1 */ + +/* USER CODE END 1 */ diff --git a/firmware/Core/Src/stm32g0xx_hal_timebase_tim.c b/firmware/Core/Src/stm32g0xx_hal_timebase_tim.c new file mode 100644 index 0000000..57273fc --- /dev/null +++ b/firmware/Core/Src/stm32g0xx_hal_timebase_tim.c @@ -0,0 +1,136 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file stm32g0xx_hal_timebase_TIM.c + * @brief HAL time base based on the hardware TIM. + ****************************************************************************** + * @attention + * + * Copyright (c) 2021 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32g0xx_hal.h" +#include "stm32g0xx_hal_tim.h" + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/* Private macro -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +TIM_HandleTypeDef htim6; +/* Private function prototypes -----------------------------------------------*/ +/* Private functions ---------------------------------------------------------*/ + +/** + * @brief This function configures the TIM6 as a time base source. + * The time source is configured to have 1ms time base with a dedicated + * Tick interrupt priority. + * @note This function is called automatically at the beginning of program after + * reset by HAL_Init() or at any time when clock is configured, by HAL_RCC_ClockConfig(). + * @param TickPriority: Tick interrupt priority. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority) +{ + RCC_ClkInitTypeDef clkconfig; + uint32_t uwTimclock, uwAPB1Prescaler; + + uint32_t uwPrescalerValue; + uint32_t pFLatency; + HAL_StatusTypeDef status = HAL_OK; + + /* Enable TIM6 clock */ + __HAL_RCC_TIM6_CLK_ENABLE(); + + /* Get clock configuration */ + HAL_RCC_GetClockConfig(&clkconfig, &pFLatency); + + /* Get APB1 prescaler */ + uwAPB1Prescaler = clkconfig.APB1CLKDivider; + /* Compute TIM6 clock */ + if (uwAPB1Prescaler == RCC_HCLK_DIV1) + { + uwTimclock = HAL_RCC_GetPCLK1Freq(); + } + else + { + uwTimclock = 2UL * HAL_RCC_GetPCLK1Freq(); + } + + /* Compute the prescaler value to have TIM6 counter clock equal to 1MHz */ + uwPrescalerValue = (uint32_t) ((uwTimclock / 1000000U) - 1U); + + /* Initialize TIM6 */ + htim6.Instance = TIM6; + + /* Initialize TIMx peripheral as follow: + + Period = [(TIM6CLK/1000) - 1]. to have a (1/1000) s time base. + + Prescaler = (uwTimclock/1000000 - 1) to have a 1MHz counter clock. + + ClockDivision = 0 + + Counter direction = Up + */ + htim6.Init.Period = (1000000U / 1000U) - 1U; + htim6.Init.Prescaler = uwPrescalerValue; + htim6.Init.ClockDivision = 0; + htim6.Init.CounterMode = TIM_COUNTERMODE_UP; + htim6.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; + + status = HAL_TIM_Base_Init(&htim6); + if (status == HAL_OK) + { + /* Start the TIM time Base generation in interrupt mode */ + status = HAL_TIM_Base_Start_IT(&htim6); + if (status == HAL_OK) + { + /* Enable the TIM6 global Interrupt */ + HAL_NVIC_EnableIRQ(TIM6_IRQn); + /* Configure the SysTick IRQ priority */ + if (TickPriority < (1UL << __NVIC_PRIO_BITS)) + { + /* Configure the TIM IRQ priority */ + HAL_NVIC_SetPriority(TIM6_IRQn, TickPriority, 0U); + uwTickPrio = TickPriority; + } + else + { + status = HAL_ERROR; + } + } + } + + /* Return function status */ + return status; +} + +/** + * @brief Suspend Tick increment. + * @note Disable the tick increment by disabling TIM6 update interrupt. + * @param None + * @retval None + */ +void HAL_SuspendTick(void) +{ + /* Disable TIM6 update Interrupt */ + __HAL_TIM_DISABLE_IT(&htim6, TIM_IT_UPDATE); +} + +/** + * @brief Resume Tick increment. + * @note Enable the tick increment by Enabling TIM6 update interrupt. + * @param None + * @retval None + */ +void HAL_ResumeTick(void) +{ + /* Enable TIM6 Update interrupt */ + __HAL_TIM_ENABLE_IT(&htim6, TIM_IT_UPDATE); +} + diff --git a/firmware/Core/Src/stm32g0xx_it.c b/firmware/Core/Src/stm32g0xx_it.c new file mode 100644 index 0000000..67c69e7 --- /dev/null +++ b/firmware/Core/Src/stm32g0xx_it.c @@ -0,0 +1,120 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file stm32g0xx_it.c + * @brief Interrupt Service Routines. + ****************************************************************************** + * @attention + * + * Copyright (c) 2021 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Includes ------------------------------------------------------------------*/ +#include "main.h" +#include "stm32g0xx_it.h" +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ +/* USER CODE END Includes */ + +/* Private typedef -----------------------------------------------------------*/ +/* USER CODE BEGIN TD */ + +/* USER CODE END TD */ + +/* Private define ------------------------------------------------------------*/ +/* USER CODE BEGIN PD */ + +/* USER CODE END PD */ + +/* Private macro -------------------------------------------------------------*/ +/* USER CODE BEGIN PM */ + +/* USER CODE END PM */ + +/* Private variables ---------------------------------------------------------*/ +/* USER CODE BEGIN PV */ + +/* USER CODE END PV */ + +/* Private function prototypes -----------------------------------------------*/ +/* USER CODE BEGIN PFP */ + +/* USER CODE END PFP */ + +/* Private user code ---------------------------------------------------------*/ +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +/* External variables --------------------------------------------------------*/ +extern TIM_HandleTypeDef htim6; + +/* USER CODE BEGIN EV */ + +/* USER CODE END EV */ + +/******************************************************************************/ +/* Cortex-M0+ Processor Interruption and Exception Handlers */ +/******************************************************************************/ +/** + * @brief This function handles Non maskable interrupt. + */ +void NMI_Handler(void) +{ + /* USER CODE BEGIN NonMaskableInt_IRQn 0 */ + + /* USER CODE END NonMaskableInt_IRQn 0 */ + /* USER CODE BEGIN NonMaskableInt_IRQn 1 */ + while (1) + { + } + /* USER CODE END NonMaskableInt_IRQn 1 */ +} + +/** + * @brief This function handles Hard fault interrupt. + */ +void HardFault_Handler(void) +{ + /* USER CODE BEGIN HardFault_IRQn 0 */ + + /* USER CODE END HardFault_IRQn 0 */ + while (1) + { + /* USER CODE BEGIN W1_HardFault_IRQn 0 */ + /* USER CODE END W1_HardFault_IRQn 0 */ + } +} + +/******************************************************************************/ +/* STM32G0xx Peripheral Interrupt Handlers */ +/* Add here the Interrupt Handlers for the used peripherals. */ +/* For the available peripheral interrupt handler names, */ +/* please refer to the startup file (startup_stm32g0xx.s). */ +/******************************************************************************/ + +/** + * @brief This function handles TIM6 global interrupt. + */ +void TIM6_IRQHandler(void) +{ + /* USER CODE BEGIN TIM6_IRQn 0 */ + + /* USER CODE END TIM6_IRQn 0 */ + HAL_TIM_IRQHandler(&htim6); + /* USER CODE BEGIN TIM6_IRQn 1 */ + + /* USER CODE END TIM6_IRQn 1 */ +} + +/* USER CODE BEGIN 1 */ + +/* USER CODE END 1 */ diff --git a/firmware/Core/Src/syscalls.c b/firmware/Core/Src/syscalls.c new file mode 100644 index 0000000..8370509 --- /dev/null +++ b/firmware/Core/Src/syscalls.c @@ -0,0 +1,155 @@ +/** + ****************************************************************************** + * @file syscalls.c + * @author Auto-generated by STM32CubeIDE + * @brief STM32CubeIDE Minimal System calls file + * + * For more information about which c-functions + * need which of these lowlevel functions + * please consult the Newlib libc-manual + ****************************************************************************** + * @attention + * + * Copyright (c) 2021 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Includes */ +#include +#include +#include +#include +#include +#include +#include +#include + + +/* Variables */ +extern int __io_putchar(int ch) __attribute__((weak)); +extern int __io_getchar(void) __attribute__((weak)); + + +char *__env[1] = { 0 }; +char **environ = __env; + + +/* Functions */ +void initialise_monitor_handles() +{ +} + +int _getpid(void) +{ + return 1; +} + +int _kill(int pid, int sig) +{ + errno = EINVAL; + return -1; +} + +void _exit (int status) +{ + _kill(status, -1); + while (1) {} /* Make sure we hang here */ +} + +__attribute__((weak)) int _read(int file, char *ptr, int len) +{ + int DataIdx; + + for (DataIdx = 0; DataIdx < len; DataIdx++) + { + *ptr++ = __io_getchar(); + } + +return len; +} + +__attribute__((weak)) int _write(int file, char *ptr, int len) +{ + int DataIdx; + + for (DataIdx = 0; DataIdx < len; DataIdx++) + { + __io_putchar(*ptr++); + } + return len; +} + +int _close(int file) +{ + return -1; +} + + +int _fstat(int file, struct stat *st) +{ + st->st_mode = S_IFCHR; + return 0; +} + +int _isatty(int file) +{ + return 1; +} + +int _lseek(int file, int ptr, int dir) +{ + return 0; +} + +int _open(char *path, int flags, ...) +{ + /* Pretend like we always fail */ + return -1; +} + +int _wait(int *status) +{ + errno = ECHILD; + return -1; +} + +int _unlink(char *name) +{ + errno = ENOENT; + return -1; +} + +int _times(struct tms *buf) +{ + return -1; +} + +int _stat(char *file, struct stat *st) +{ + st->st_mode = S_IFCHR; + return 0; +} + +int _link(char *old, char *new) +{ + errno = EMLINK; + return -1; +} + +int _fork(void) +{ + errno = EAGAIN; + return -1; +} + +int _execve(char *name, char **argv, char **env) +{ + errno = ENOMEM; + return -1; +} diff --git a/firmware/Core/Src/sysmem.c b/firmware/Core/Src/sysmem.c new file mode 100644 index 0000000..4353a47 --- /dev/null +++ b/firmware/Core/Src/sysmem.c @@ -0,0 +1,79 @@ +/** + ****************************************************************************** + * @file sysmem.c + * @author Generated by STM32CubeIDE + * @brief STM32CubeIDE System Memory calls file + * + * For more information about which C functions + * need which of these lowlevel functions + * please consult the newlib libc manual + ****************************************************************************** + * @attention + * + * Copyright (c) 2021 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Includes */ +#include +#include + +/** + * Pointer to the current high watermark of the heap usage + */ +static uint8_t *__sbrk_heap_end = NULL; + +/** + * @brief _sbrk() allocates memory to the newlib heap and is used by malloc + * and others from the C library + * + * @verbatim + * ############################################################################ + * # .data # .bss # newlib heap # MSP stack # + * # # # # Reserved by _Min_Stack_Size # + * ############################################################################ + * ^-- RAM start ^-- _end _estack, RAM end --^ + * @endverbatim + * + * This implementation starts allocating at the '_end' linker symbol + * The '_Min_Stack_Size' linker symbol reserves a memory for the MSP stack + * The implementation considers '_estack' linker symbol to be RAM end + * NOTE: If the MSP stack, at any point during execution, grows larger than the + * reserved size, please increase the '_Min_Stack_Size'. + * + * @param incr Memory size + * @return Pointer to allocated memory + */ +void *_sbrk(ptrdiff_t incr) +{ + extern uint8_t _end; /* Symbol defined in the linker script */ + extern uint8_t _estack; /* Symbol defined in the linker script */ + extern uint32_t _Min_Stack_Size; /* Symbol defined in the linker script */ + const uint32_t stack_limit = (uint32_t)&_estack - (uint32_t)&_Min_Stack_Size; + const uint8_t *max_heap = (uint8_t *)stack_limit; + uint8_t *prev_heap_end; + + /* Initialize heap end at first call */ + if (NULL == __sbrk_heap_end) + { + __sbrk_heap_end = &_end; + } + + /* Protect heap from growing into the reserved MSP stack */ + if (__sbrk_heap_end + incr > max_heap) + { + errno = ENOMEM; + return (void *)-1; + } + + prev_heap_end = __sbrk_heap_end; + __sbrk_heap_end += incr; + + return (void *)prev_heap_end; +} diff --git a/firmware/Core/Src/system_stm32g0xx.c b/firmware/Core/Src/system_stm32g0xx.c new file mode 100644 index 0000000..368439a --- /dev/null +++ b/firmware/Core/Src/system_stm32g0xx.c @@ -0,0 +1,304 @@ +/** + ****************************************************************************** + * @file system_stm32g0xx.c + * @author MCD Application Team + * @brief CMSIS Cortex-M0+ Device Peripheral Access Layer System Source File + * + * This file provides two functions and one global variable to be called from + * user application: + * - SystemInit(): This function is called at startup just after reset and + * before branch to main program. This call is made inside + * the "startup_stm32g0xx.s" file. + * + * - SystemCoreClock variable: Contains the core clock (HCLK), it can be used + * by the user application to setup the SysTick + * timer or configure other parameters. + * + * - SystemCoreClockUpdate(): Updates the variable SystemCoreClock and must + * be called whenever the core clock is changed + * during program execution. + * + * After each device reset the HSI (8 MHz then 16 MHz) is used as system clock source. + * Then SystemInit() function is called, in "startup_stm32g0xx.s" file, to + * configure the system clock before to branch to main program. + * + * This file configures the system clock as follows: + *============================================================================= + *----------------------------------------------------------------------------- + * System Clock source | HSI + *----------------------------------------------------------------------------- + * SYSCLK(Hz) | 16000000 + *----------------------------------------------------------------------------- + * HCLK(Hz) | 16000000 + *----------------------------------------------------------------------------- + * AHB Prescaler | 1 + *----------------------------------------------------------------------------- + * APB Prescaler | 1 + *----------------------------------------------------------------------------- + * HSI Division factor | 1 + *----------------------------------------------------------------------------- + * PLL_M | 1 + *----------------------------------------------------------------------------- + * PLL_N | 8 + *----------------------------------------------------------------------------- + * PLL_P | 7 + *----------------------------------------------------------------------------- + * PLL_Q | 2 + *----------------------------------------------------------------------------- + * PLL_R | 2 + *----------------------------------------------------------------------------- + * Require 48MHz for RNG | Disabled + *----------------------------------------------------------------------------- + *============================================================================= + ****************************************************************************** + * @attention + * + * Copyright (c) 2018-2021 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/** @addtogroup CMSIS + * @{ + */ + +/** @addtogroup stm32g0xx_system + * @{ + */ + +/** @addtogroup STM32G0xx_System_Private_Includes + * @{ + */ + +#include "stm32g0xx.h" + +#if !defined (HSE_VALUE) +#define HSE_VALUE (8000000UL) /*!< Value of the External oscillator in Hz */ +#endif /* HSE_VALUE */ + +#if !defined (HSI_VALUE) + #define HSI_VALUE (16000000UL) /*!< Value of the Internal oscillator in Hz*/ +#endif /* HSI_VALUE */ + +#if !defined (LSI_VALUE) + #define LSI_VALUE (32000UL) /*!< Value of LSI in Hz*/ +#endif /* LSI_VALUE */ + +#if !defined (LSE_VALUE) + #define LSE_VALUE (32768UL) /*!< Value of LSE in Hz*/ +#endif /* LSE_VALUE */ + +/** + * @} + */ + +/** @addtogroup STM32G0xx_System_Private_TypesDefinitions + * @{ + */ + +/** + * @} + */ + +/** @addtogroup STM32G0xx_System_Private_Defines + * @{ + */ + +/************************* Miscellaneous Configuration ************************/ +/* Note: Following vector table addresses must be defined in line with linker + configuration. */ +/*!< Uncomment the following line if you need to relocate the vector table + anywhere in Flash or Sram, else the vector table is kept at the automatic + remap of boot address selected */ +/* #define USER_VECT_TAB_ADDRESS */ + +#if defined(USER_VECT_TAB_ADDRESS) +/*!< Uncomment the following line if you need to relocate your vector Table + in Sram else user remap will be done in Flash. */ +/* #define VECT_TAB_SRAM */ +#if defined(VECT_TAB_SRAM) +#define VECT_TAB_BASE_ADDRESS SRAM_BASE /*!< Vector Table base address field. + This value must be a multiple of 0x200. */ +#define VECT_TAB_OFFSET 0x00000000U /*!< Vector Table base offset field. + This value must be a multiple of 0x200. */ +#else +#define VECT_TAB_BASE_ADDRESS FLASH_BASE /*!< Vector Table base address field. + This value must be a multiple of 0x200. */ +#define VECT_TAB_OFFSET 0x00000000U /*!< Vector Table base offset field. + This value must be a multiple of 0x200. */ +#endif /* VECT_TAB_SRAM */ +#endif /* USER_VECT_TAB_ADDRESS */ +/******************************************************************************/ +/** + * @} + */ + +/** @addtogroup STM32G0xx_System_Private_Macros + * @{ + */ + +/** + * @} + */ + +/** @addtogroup STM32G0xx_System_Private_Variables + * @{ + */ + /* The SystemCoreClock variable is updated in three ways: + 1) by calling CMSIS function SystemCoreClockUpdate() + 2) by calling HAL API function HAL_RCC_GetHCLKFreq() + 3) each time HAL_RCC_ClockConfig() is called to configure the system clock frequency + Note: If you use this function to configure the system clock; then there + is no need to call the 2 first functions listed above, since SystemCoreClock + variable is updated automatically. + */ + uint32_t SystemCoreClock = 16000000UL; + + const uint32_t AHBPrescTable[16UL] = {0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 1UL, 2UL, 3UL, 4UL, 6UL, 7UL, 8UL, 9UL}; + const uint32_t APBPrescTable[8UL] = {0UL, 0UL, 0UL, 0UL, 1UL, 2UL, 3UL, 4UL}; + +/** + * @} + */ + +/** @addtogroup STM32G0xx_System_Private_FunctionPrototypes + * @{ + */ + +/** + * @} + */ + +/** @addtogroup STM32G0xx_System_Private_Functions + * @{ + */ + +/** + * @brief Setup the microcontroller system. + * @param None + * @retval None + */ +void SystemInit(void) +{ + /* Configure the Vector Table location -------------------------------------*/ +#if defined(USER_VECT_TAB_ADDRESS) + SCB->VTOR = VECT_TAB_BASE_ADDRESS | VECT_TAB_OFFSET; /* Vector Table Relocation */ +#endif /* USER_VECT_TAB_ADDRESS */ +} + +/** + * @brief Update SystemCoreClock variable according to Clock Register Values. + * The SystemCoreClock variable contains the core clock (HCLK), it can + * be used by the user application to setup the SysTick timer or configure + * other parameters. + * + * @note Each time the core clock (HCLK) changes, this function must be called + * to update SystemCoreClock variable value. Otherwise, any configuration + * based on this variable will be incorrect. + * + * @note - The system frequency computed by this function is not the real + * frequency in the chip. It is calculated based on the predefined + * constant and the selected clock source: + * + * - If SYSCLK source is HSI, SystemCoreClock will contain the HSI_VALUE(**) / HSI division factor + * + * - If SYSCLK source is HSE, SystemCoreClock will contain the HSE_VALUE(***) + * + * - If SYSCLK source is LSI, SystemCoreClock will contain the LSI_VALUE + * + * - If SYSCLK source is LSE, SystemCoreClock will contain the LSE_VALUE + * + * - If SYSCLK source is PLL, SystemCoreClock will contain the HSE_VALUE(***) + * or HSI_VALUE(*) multiplied/divided by the PLL factors. + * + * (**) HSI_VALUE is a constant defined in stm32g0xx_hal_conf.h file (default value + * 16 MHz) but the real value may vary depending on the variations + * in voltage and temperature. + * + * (***) HSE_VALUE is a constant defined in stm32g0xx_hal_conf.h file (default value + * 8 MHz), user has to ensure that HSE_VALUE is same as the real + * frequency of the crystal used. Otherwise, this function may + * have wrong result. + * + * - The result of this function could be not correct when using fractional + * value for HSE crystal. + * + * @param None + * @retval None + */ +void SystemCoreClockUpdate(void) +{ + uint32_t tmp; + uint32_t pllvco; + uint32_t pllr; + uint32_t pllsource; + uint32_t pllm; + uint32_t hsidiv; + + /* Get SYSCLK source -------------------------------------------------------*/ + switch (RCC->CFGR & RCC_CFGR_SWS) + { + case RCC_CFGR_SWS_0: /* HSE used as system clock */ + SystemCoreClock = HSE_VALUE; + break; + + case (RCC_CFGR_SWS_1 | RCC_CFGR_SWS_0): /* LSI used as system clock */ + SystemCoreClock = LSI_VALUE; + break; + + case RCC_CFGR_SWS_2: /* LSE used as system clock */ + SystemCoreClock = LSE_VALUE; + break; + + case RCC_CFGR_SWS_1: /* PLL used as system clock */ + /* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLLM) * PLLN + SYSCLK = PLL_VCO / PLLR + */ + pllsource = (RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC); + pllm = ((RCC->PLLCFGR & RCC_PLLCFGR_PLLM) >> RCC_PLLCFGR_PLLM_Pos) + 1UL; + + if(pllsource == 0x03UL) /* HSE used as PLL clock source */ + { + pllvco = (HSE_VALUE / pllm); + } + else /* HSI used as PLL clock source */ + { + pllvco = (HSI_VALUE / pllm); + } + pllvco = pllvco * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos); + pllr = (((RCC->PLLCFGR & RCC_PLLCFGR_PLLR) >> RCC_PLLCFGR_PLLR_Pos) + 1UL); + + SystemCoreClock = pllvco/pllr; + break; + + case 0x00000000U: /* HSI used as system clock */ + default: /* HSI used as system clock */ + hsidiv = (1UL << ((READ_BIT(RCC->CR, RCC_CR_HSIDIV))>> RCC_CR_HSIDIV_Pos)); + SystemCoreClock = (HSI_VALUE/hsidiv); + break; + } + /* Compute HCLK clock frequency --------------------------------------------*/ + /* Get HCLK prescaler */ + tmp = AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> RCC_CFGR_HPRE_Pos)]; + /* HCLK clock frequency */ + SystemCoreClock >>= tmp; +} + + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/firmware/Core/Src/tim.c b/firmware/Core/Src/tim.c new file mode 100644 index 0000000..f175879 --- /dev/null +++ b/firmware/Core/Src/tim.c @@ -0,0 +1,282 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file tim.c + * @brief This file provides code for the configuration + * of the TIM instances. + ****************************************************************************** + * @attention + * + * Copyright (c) 2021 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ +/* Includes ------------------------------------------------------------------*/ +#include "tim.h" + +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +TIM_HandleTypeDef htim3; +TIM_HandleTypeDef htim17; + +/* TIM3 init function */ +void MX_TIM3_Init(void) +{ + + /* USER CODE BEGIN TIM3_Init 0 */ + + /* USER CODE END TIM3_Init 0 */ + + TIM_SlaveConfigTypeDef sSlaveConfig = {0}; + TIM_MasterConfigTypeDef sMasterConfig = {0}; + TIM_OC_InitTypeDef sConfigOC = {0}; + + /* USER CODE BEGIN TIM3_Init 1 */ + + /* USER CODE END TIM3_Init 1 */ + htim3.Instance = TIM3; + htim3.Init.Prescaler = 639; + htim3.Init.CounterMode = TIM_COUNTERMODE_DOWN; + htim3.Init.Period = 1000; + htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE; + if (HAL_TIM_Base_Init(&htim3) != HAL_OK) + { + Error_Handler(); + } + if (HAL_TIM_PWM_Init(&htim3) != HAL_OK) + { + Error_Handler(); + } + if (HAL_TIM_OnePulse_Init(&htim3, TIM_OPMODE_SINGLE) != HAL_OK) + { + Error_Handler(); + } + sSlaveConfig.SlaveMode = TIM_SLAVEMODE_TRIGGER; + sSlaveConfig.InputTrigger = TIM_TS_ETRF; + sSlaveConfig.TriggerPolarity = TIM_TRIGGERPOLARITY_NONINVERTED; + sSlaveConfig.TriggerPrescaler = TIM_TRIGGERPRESCALER_DIV1; + sSlaveConfig.TriggerFilter = 0; + if (HAL_TIM_SlaveConfigSynchro(&htim3, &sSlaveConfig) != HAL_OK) + { + Error_Handler(); + } + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK) + { + Error_Handler(); + } + sConfigOC.OCMode = TIM_OCMODE_PWM2; + sConfigOC.Pulse = 500; + sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; + sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; + if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) + { + Error_Handler(); + } + if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN TIM3_Init 2 */ + + /* USER CODE END TIM3_Init 2 */ + HAL_TIM_MspPostInit(&htim3); + +} +/* TIM17 init function */ +void MX_TIM17_Init(void) +{ + + /* USER CODE BEGIN TIM17_Init 0 */ + + /* USER CODE END TIM17_Init 0 */ + + TIM_OC_InitTypeDef sConfigOC = {0}; + TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig = {0}; + + /* USER CODE BEGIN TIM17_Init 1 */ + + /* USER CODE END TIM17_Init 1 */ + htim17.Instance = TIM17; + htim17.Init.Prescaler = 3199; + htim17.Init.CounterMode = TIM_COUNTERMODE_UP; + htim17.Init.Period = 20000; + htim17.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + htim17.Init.RepetitionCounter = 0; + htim17.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; + if (HAL_TIM_Base_Init(&htim17) != HAL_OK) + { + Error_Handler(); + } + if (HAL_TIM_PWM_Init(&htim17) != HAL_OK) + { + Error_Handler(); + } + sConfigOC.OCMode = TIM_OCMODE_PWM2; + sConfigOC.Pulse = 0; + sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; + sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH; + sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; + sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET; + sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET; + if (HAL_TIM_PWM_ConfigChannel(&htim17, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) + { + Error_Handler(); + } + sBreakDeadTimeConfig.OffStateRunMode = TIM_OSSR_DISABLE; + sBreakDeadTimeConfig.OffStateIDLEMode = TIM_OSSI_DISABLE; + sBreakDeadTimeConfig.LockLevel = TIM_LOCKLEVEL_OFF; + sBreakDeadTimeConfig.DeadTime = 0; + sBreakDeadTimeConfig.BreakState = TIM_BREAK_DISABLE; + sBreakDeadTimeConfig.BreakPolarity = TIM_BREAKPOLARITY_HIGH; + sBreakDeadTimeConfig.BreakFilter = 0; + sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE; + if (HAL_TIMEx_ConfigBreakDeadTime(&htim17, &sBreakDeadTimeConfig) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN TIM17_Init 2 */ + + /* USER CODE END TIM17_Init 2 */ + HAL_TIM_MspPostInit(&htim17); + +} + +void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle) +{ + + GPIO_InitTypeDef GPIO_InitStruct = {0}; + if(tim_baseHandle->Instance==TIM3) + { + /* USER CODE BEGIN TIM3_MspInit 0 */ + + /* USER CODE END TIM3_MspInit 0 */ + /* TIM3 clock enable */ + __HAL_RCC_TIM3_CLK_ENABLE(); + + __HAL_RCC_GPIOD_CLK_ENABLE(); + /**TIM3 GPIO Configuration + PD2 ------> TIM3_ETR + */ + GPIO_InitStruct.Pin = TIM3_ZeroCross_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + GPIO_InitStruct.Alternate = GPIO_AF1_TIM3; + HAL_GPIO_Init(TIM3_ZeroCross_GPIO_Port, &GPIO_InitStruct); + + /* USER CODE BEGIN TIM3_MspInit 1 */ + + /* USER CODE END TIM3_MspInit 1 */ + } + else if(tim_baseHandle->Instance==TIM17) + { + /* USER CODE BEGIN TIM17_MspInit 0 */ + + /* USER CODE END TIM17_MspInit 0 */ + /* TIM17 clock enable */ + __HAL_RCC_TIM17_CLK_ENABLE(); + /* USER CODE BEGIN TIM17_MspInit 1 */ + + /* USER CODE END TIM17_MspInit 1 */ + } +} +void HAL_TIM_MspPostInit(TIM_HandleTypeDef* timHandle) +{ + + GPIO_InitTypeDef GPIO_InitStruct = {0}; + if(timHandle->Instance==TIM3) + { + /* USER CODE BEGIN TIM3_MspPostInit 0 */ + + /* USER CODE END TIM3_MspPostInit 0 */ + __HAL_RCC_GPIOB_CLK_ENABLE(); + /**TIM3 GPIO Configuration + PB4 ------> TIM3_CH1 + PB5 ------> TIM3_CH2 + */ + GPIO_InitStruct.Pin = TIM3_Heater_Pin|TIM3_Fan_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + GPIO_InitStruct.Alternate = GPIO_AF1_TIM3; + HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); + + /* USER CODE BEGIN TIM3_MspPostInit 1 */ + + /* USER CODE END TIM3_MspPostInit 1 */ + } + else if(timHandle->Instance==TIM17) + { + /* USER CODE BEGIN TIM17_MspPostInit 0 */ + + /* USER CODE END TIM17_MspPostInit 0 */ + + __HAL_RCC_GPIOA_CLK_ENABLE(); + /**TIM17 GPIO Configuration + PA7 ------> TIM17_CH1 + */ + GPIO_InitStruct.Pin = TIM17_BUZZER_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + GPIO_InitStruct.Alternate = GPIO_AF5_TIM17; + HAL_GPIO_Init(TIM17_BUZZER_GPIO_Port, &GPIO_InitStruct); + + /* USER CODE BEGIN TIM17_MspPostInit 1 */ + + /* USER CODE END TIM17_MspPostInit 1 */ + } + +} + +void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* tim_baseHandle) +{ + + if(tim_baseHandle->Instance==TIM3) + { + /* USER CODE BEGIN TIM3_MspDeInit 0 */ + + /* USER CODE END TIM3_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_TIM3_CLK_DISABLE(); + + /**TIM3 GPIO Configuration + PD2 ------> TIM3_ETR + PB4 ------> TIM3_CH1 + PB5 ------> TIM3_CH2 + */ + HAL_GPIO_DeInit(TIM3_ZeroCross_GPIO_Port, TIM3_ZeroCross_Pin); + + HAL_GPIO_DeInit(GPIOB, TIM3_Heater_Pin|TIM3_Fan_Pin); + + /* USER CODE BEGIN TIM3_MspDeInit 1 */ + + /* USER CODE END TIM3_MspDeInit 1 */ + } + else if(tim_baseHandle->Instance==TIM17) + { + /* USER CODE BEGIN TIM17_MspDeInit 0 */ + + /* USER CODE END TIM17_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_TIM17_CLK_DISABLE(); + /* USER CODE BEGIN TIM17_MspDeInit 1 */ + + /* USER CODE END TIM17_MspDeInit 1 */ + } +} + +/* USER CODE BEGIN 1 */ + +/* USER CODE END 1 */ diff --git a/firmware/Core/Startup/startup_stm32g070rbtx.s b/firmware/Core/Startup/startup_stm32g070rbtx.s new file mode 100644 index 0000000..ee179a4 --- /dev/null +++ b/firmware/Core/Startup/startup_stm32g070rbtx.s @@ -0,0 +1,285 @@ +/** + ****************************************************************************** + * @file startup_stm32g070xx.s + * @author MCD Application Team + * @brief STM32G070xx devices vector table GCC toolchain. + * This module performs: + * - Set the initial SP + * - Set the initial PC == Reset_Handler, + * - Set the vector table entries with the exceptions ISR address + * - Branches to main in the C library (which eventually + * calls main()). + * After Reset the Cortex-M0+ processor is in Thread mode, + * priority is Privileged, and the Stack is set to Main. + ****************************************************************************** + * @attention + * + * Copyright (c) 2018-2021 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +.syntax unified +.cpu cortex-m0plus +.fpu softvfp +.thumb + +.global g_pfnVectors +.global Default_Handler + +/* start address for the initialization values of the .data section. +defined in linker script */ +.word _sidata +/* start address for the .data section. defined in linker script */ +.word _sdata +/* end address for the .data section. defined in linker script */ +.word _edata +/* start address for the .bss section. defined in linker script */ +.word _sbss +/* end address for the .bss section. defined in linker script */ +.word _ebss + +/** + * @brief This is the code that gets called when the processor first + * starts execution following a reset event. Only the absolutely + * necessary set is performed, after which the application + * supplied main() routine is called. + * @param None + * @retval None +*/ + + .section .text.Reset_Handler + .weak Reset_Handler + .type Reset_Handler, %function +Reset_Handler: + ldr r0, =_estack + mov sp, r0 /* set stack pointer */ + +/* Call the clock system initialization function.*/ + bl SystemInit + +/* Copy the data segment initializers from flash to SRAM */ + ldr r0, =_sdata + ldr r1, =_edata + ldr r2, =_sidata + movs r3, #0 + b LoopCopyDataInit + +CopyDataInit: + ldr r4, [r2, r3] + str r4, [r0, r3] + adds r3, r3, #4 + +LoopCopyDataInit: + adds r4, r0, r3 + cmp r4, r1 + bcc CopyDataInit + +/* Zero fill the bss segment. */ + ldr r2, =_sbss + ldr r4, =_ebss + movs r3, #0 + b LoopFillZerobss + +FillZerobss: + str r3, [r2] + adds r2, r2, #4 + +LoopFillZerobss: + cmp r2, r4 + bcc FillZerobss + +/* Call static constructors */ + bl __libc_init_array +/* Call the application s entry point.*/ + bl main + +LoopForever: + b LoopForever + +.size Reset_Handler, .-Reset_Handler + +/** + * @brief This is the code that gets called when the processor receives an + * unexpected interrupt. This simply enters an infinite loop, preserving + * the system state for examination by a debugger. + * + * @param None + * @retval None +*/ + .section .text.Default_Handler,"ax",%progbits +Default_Handler: +Infinite_Loop: + b Infinite_Loop + .size Default_Handler, .-Default_Handler + +/****************************************************************************** +* +* The minimal vector table for a Cortex M0. Note that the proper constructs +* must be placed on this to ensure that it ends up at physical address +* 0x0000.0000. +* +******************************************************************************/ + .section .isr_vector,"a",%progbits + .type g_pfnVectors, %object + .size g_pfnVectors, .-g_pfnVectors + +g_pfnVectors: + .word _estack + .word Reset_Handler + .word NMI_Handler + .word HardFault_Handler + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word SVC_Handler + .word 0 + .word 0 + .word PendSV_Handler + .word SysTick_Handler + .word WWDG_IRQHandler /* Window WatchDog */ + .word 0 /* reserved */ + .word RTC_TAMP_IRQHandler /* RTC through the EXTI line */ + .word FLASH_IRQHandler /* FLASH */ + .word RCC_IRQHandler /* RCC */ + .word EXTI0_1_IRQHandler /* EXTI Line 0 and 1 */ + .word EXTI2_3_IRQHandler /* EXTI Line 2 and 3 */ + .word EXTI4_15_IRQHandler /* EXTI Line 4 to 15 */ + .word 0 /* reserved */ + .word DMA1_Channel1_IRQHandler /* DMA1 Channel 1 */ + .word DMA1_Channel2_3_IRQHandler /* DMA1 Channel 2 and Channel 3 */ + .word DMA1_Ch4_7_DMAMUX1_OVR_IRQHandler /* DMA1 Channel 4 to Channel 7, DMAMUX1 overrun */ + .word ADC1_IRQHandler /* ADC1 */ + .word TIM1_BRK_UP_TRG_COM_IRQHandler /* TIM1 Break, Update, Trigger and Commutation */ + .word TIM1_CC_IRQHandler /* TIM1 Capture Compare */ + .word 0 /* reserved */ + .word TIM3_IRQHandler /* TIM3 */ + .word TIM6_IRQHandler /* TIM6 */ + .word TIM7_IRQHandler /* TIM7 */ + .word TIM14_IRQHandler /* TIM14 */ + .word TIM15_IRQHandler /* TIM15 */ + .word TIM16_IRQHandler /* TIM16 */ + .word TIM17_IRQHandler /* TIM17 */ + .word I2C1_IRQHandler /* I2C1 */ + .word I2C2_IRQHandler /* I2C2 */ + .word SPI1_IRQHandler /* SPI1 */ + .word SPI2_IRQHandler /* SPI2 */ + .word USART1_IRQHandler /* USART1 */ + .word USART2_IRQHandler /* USART2 */ + .word USART3_4_IRQHandler /* USART3, USART4 */ + +/******************************************************************************* +* +* Provide weak aliases for each Exception handler to the Default_Handler. +* As they are weak aliases, any function with the same name will override +* this definition. +* +*******************************************************************************/ + + .weak NMI_Handler + .thumb_set NMI_Handler,Default_Handler + + .weak HardFault_Handler + .thumb_set HardFault_Handler,Default_Handler + + .weak SVC_Handler + .thumb_set SVC_Handler,Default_Handler + + .weak PendSV_Handler + .thumb_set PendSV_Handler,Default_Handler + + .weak SysTick_Handler + .thumb_set SysTick_Handler,Default_Handler + + .weak WWDG_IRQHandler + .thumb_set WWDG_IRQHandler,Default_Handler + + .weak RTC_TAMP_IRQHandler + .thumb_set RTC_TAMP_IRQHandler,Default_Handler + + .weak FLASH_IRQHandler + .thumb_set FLASH_IRQHandler,Default_Handler + + .weak RCC_IRQHandler + .thumb_set RCC_IRQHandler,Default_Handler + + .weak EXTI0_1_IRQHandler + .thumb_set EXTI0_1_IRQHandler,Default_Handler + + .weak EXTI2_3_IRQHandler + .thumb_set EXTI2_3_IRQHandler,Default_Handler + + .weak EXTI4_15_IRQHandler + .thumb_set EXTI4_15_IRQHandler,Default_Handler + + .weak DMA1_Channel1_IRQHandler + .thumb_set DMA1_Channel1_IRQHandler,Default_Handler + + .weak DMA1_Channel2_3_IRQHandler + .thumb_set DMA1_Channel2_3_IRQHandler,Default_Handler + + .weak DMA1_Ch4_7_DMAMUX1_OVR_IRQHandler + .thumb_set DMA1_Ch4_7_DMAMUX1_OVR_IRQHandler,Default_Handler + + .weak ADC1_IRQHandler + .thumb_set ADC1_IRQHandler,Default_Handler + + .weak TIM1_BRK_UP_TRG_COM_IRQHandler + .thumb_set TIM1_BRK_UP_TRG_COM_IRQHandler,Default_Handler + + .weak TIM1_CC_IRQHandler + .thumb_set TIM1_CC_IRQHandler,Default_Handler + + .weak TIM3_IRQHandler + .thumb_set TIM3_IRQHandler,Default_Handler + + .weak TIM6_IRQHandler + .thumb_set TIM6_IRQHandler,Default_Handler + + .weak TIM7_IRQHandler + .thumb_set TIM7_IRQHandler,Default_Handler + + .weak TIM14_IRQHandler + .thumb_set TIM14_IRQHandler,Default_Handler + + .weak TIM15_IRQHandler + .thumb_set TIM15_IRQHandler,Default_Handler + + .weak TIM16_IRQHandler + .thumb_set TIM16_IRQHandler,Default_Handler + + .weak TIM17_IRQHandler + .thumb_set TIM17_IRQHandler,Default_Handler + + .weak I2C1_IRQHandler + .thumb_set I2C1_IRQHandler,Default_Handler + + .weak I2C2_IRQHandler + .thumb_set I2C2_IRQHandler,Default_Handler + + .weak SPI1_IRQHandler + .thumb_set SPI1_IRQHandler,Default_Handler + + .weak SPI2_IRQHandler + .thumb_set SPI2_IRQHandler,Default_Handler + + .weak USART1_IRQHandler + .thumb_set USART1_IRQHandler,Default_Handler + + .weak USART2_IRQHandler + .thumb_set USART2_IRQHandler,Default_Handler + + .weak USART3_4_IRQHandler + .thumb_set USART3_4_IRQHandler,Default_Handler + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ + diff --git a/firmware/Drivers/CMSIS/Device/ST/STM32G0xx/Include/stm32g070xx.h b/firmware/Drivers/CMSIS/Device/ST/STM32G0xx/Include/stm32g070xx.h new file mode 100644 index 0000000..702c42a --- /dev/null +++ b/firmware/Drivers/CMSIS/Device/ST/STM32G0xx/Include/stm32g070xx.h @@ -0,0 +1,7725 @@ +/** + ****************************************************************************** + * @file stm32g070xx.h + * @author MCD Application Team + * @brief CMSIS Cortex-M0+ Device Peripheral Access Layer Header File. + * This file contains all the peripheral register's definitions, bits + * definitions and memory mapping for stm32g070xx devices. + * + * This file contains: + * - Data structures and the address mapping for all peripherals + * - Peripheral's registers declarations and bits definition + * - Macros to access peripheral's registers hardware + * + ****************************************************************************** + * @attention + * + * Copyright (c) 2018-2021 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/** @addtogroup CMSIS_Device + * @{ + */ + +/** @addtogroup stm32g070xx + * @{ + */ + +#ifndef STM32G070xx_H +#define STM32G070xx_H + +#ifdef __cplusplus + extern "C" { +#endif /* __cplusplus */ + +/** @addtogroup Configuration_section_for_CMSIS + * @{ + */ + +/** + * @brief Configuration of the Cortex-M0+ Processor and Core Peripherals + */ +#define __CM0PLUS_REV 0U /*!< Core Revision r0p0 */ +#define __MPU_PRESENT 1U /*!< STM32G0xx provides an MPU */ +#define __VTOR_PRESENT 1U /*!< Vector Table Register supported */ +#define __NVIC_PRIO_BITS 2U /*!< STM32G0xx uses 2 Bits for the Priority Levels */ +#define __Vendor_SysTickConfig 0U /*!< Set to 1 if different SysTick Config is used */ + +/** + * @} + */ + +/** @addtogroup Peripheral_interrupt_number_definition + * @{ + */ + +/** + * @brief stm32g070xx Interrupt Number Definition, according to the selected device + * in @ref Library_configuration_section + */ + +/*!< Interrupt Number Definition */ +typedef enum +{ +/****** Cortex-M0+ Processor Exceptions Numbers ***************************************************************/ + NonMaskableInt_IRQn = -14, /*!< 2 Non Maskable Interrupt */ + HardFault_IRQn = -13, /*!< 3 Cortex-M Hard Fault Interrupt */ + SVCall_IRQn = -5, /*!< 11 Cortex-M SV Call Interrupt */ + PendSV_IRQn = -2, /*!< 14 Cortex-M Pend SV Interrupt */ + SysTick_IRQn = -1, /*!< 15 Cortex-M System Tick Interrupt */ +/****** STM32G0xxxx specific Interrupt Numbers ****************************************************************/ + WWDG_IRQn = 0, /*!< Window WatchDog Interrupt */ + RTC_TAMP_IRQn = 2, /*!< RTC interrupt through the EXTI line 19 & 21 */ + FLASH_IRQn = 3, /*!< FLASH global Interrupt */ + RCC_IRQn = 4, /*!< RCC global Interrupt */ + EXTI0_1_IRQn = 5, /*!< EXTI 0 and 1 Interrupts */ + EXTI2_3_IRQn = 6, /*!< EXTI Line 2 and 3 Interrupts */ + EXTI4_15_IRQn = 7, /*!< EXTI Line 4 to 15 Interrupts */ + DMA1_Channel1_IRQn = 9, /*!< DMA1 Channel 1 Interrupt */ + DMA1_Channel2_3_IRQn = 10, /*!< DMA1 Channel 2 and Channel 3 Interrupts */ + DMA1_Ch4_7_DMAMUX1_OVR_IRQn = 11, /*!< DMA1 Channel 4 to Channel 7 and DMAMUX1 Overrun Interrupts */ + ADC1_IRQn = 12, /*!< ADC1 Interrupts */ + TIM1_BRK_UP_TRG_COM_IRQn = 13, /*!< TIM1 Break, Update, Trigger and Commutation Interrupts */ + TIM1_CC_IRQn = 14, /*!< TIM1 Capture Compare Interrupt */ + TIM3_IRQn = 16, /*!< TIM3 global Interrupt */ + TIM6_IRQn = 17, /*!< TIM6 global Interrupts */ + TIM7_IRQn = 18, /*!< TIM7 global Interrupt */ + TIM14_IRQn = 19, /*!< TIM14 global Interrupt */ + TIM15_IRQn = 20, /*!< TIM15 global Interrupt */ + TIM16_IRQn = 21, /*!< TIM16 global Interrupt */ + TIM17_IRQn = 22, /*!< TIM17 global Interrupt */ + I2C1_IRQn = 23, /*!< I2C1 Interrupt (combined with EXTI 23) */ + I2C2_IRQn = 24, /*!< I2C2 Interrupt */ + SPI1_IRQn = 25, /*!< SPI1/I2S1 Interrupt */ + SPI2_IRQn = 26, /*!< SPI2 Interrupt */ + USART1_IRQn = 27, /*!< USART1 Interrupt */ + USART2_IRQn = 28, /*!< USART2 Interrupt */ + USART3_4_IRQn = 29, /*!< USART3, USART4 globlal Interrupts */ +} IRQn_Type; + +/** + * @} + */ + +#include "core_cm0plus.h" /* Cortex-M0+ processor and core peripherals */ +#include "system_stm32g0xx.h" +#include + +/** @addtogroup Peripheral_registers_structures + * @{ + */ + +/** + * @brief Analog to Digital Converter + */ +typedef struct +{ + __IO uint32_t ISR; /*!< ADC interrupt and status register, Address offset: 0x00 */ + __IO uint32_t IER; /*!< ADC interrupt enable register, Address offset: 0x04 */ + __IO uint32_t CR; /*!< ADC control register, Address offset: 0x08 */ + __IO uint32_t CFGR1; /*!< ADC configuration register 1, Address offset: 0x0C */ + __IO uint32_t CFGR2; /*!< ADC configuration register 2, Address offset: 0x10 */ + __IO uint32_t SMPR; /*!< ADC sampling time register, Address offset: 0x14 */ + uint32_t RESERVED1; /*!< Reserved, 0x18 */ + uint32_t RESERVED2; /*!< Reserved, 0x1C */ + __IO uint32_t AWD1TR; /*!< ADC analog watchdog 1 threshold register, Address offset: 0x20 */ + __IO uint32_t AWD2TR; /*!< ADC analog watchdog 2 threshold register, Address offset: 0x24 */ + __IO uint32_t CHSELR; /*!< ADC group regular sequencer register, Address offset: 0x28 */ + __IO uint32_t AWD3TR; /*!< ADC analog watchdog 3 threshold register, Address offset: 0x2C */ + uint32_t RESERVED3[4]; /*!< Reserved, 0x30 - 0x3C */ + __IO uint32_t DR; /*!< ADC group regular data register, Address offset: 0x40 */ + uint32_t RESERVED4[23];/*!< Reserved, 0x44 - 0x9C */ + __IO uint32_t AWD2CR; /*!< ADC analog watchdog 2 configuration register, Address offset: 0xA0 */ + __IO uint32_t AWD3CR; /*!< ADC analog watchdog 3 configuration register, Address offset: 0xA4 */ + uint32_t RESERVED5[3]; /*!< Reserved, 0xA8 - 0xB0 */ + __IO uint32_t CALFACT; /*!< ADC Calibration factor register, Address offset: 0xB4 */ +} ADC_TypeDef; + +typedef struct +{ + __IO uint32_t CCR; /*!< ADC common configuration register, Address offset: ADC1 base address + 0x308 */ +} ADC_Common_TypeDef; + +/* Legacy registers naming */ +#define TR1 AWD1TR +#define TR2 AWD2TR +#define TR3 AWD3TR + + + + +/** + * @brief CRC calculation unit + */ +typedef struct +{ + __IO uint32_t DR; /*!< CRC Data register, Address offset: 0x00 */ + __IO uint32_t IDR; /*!< CRC Independent data register, Address offset: 0x04 */ + __IO uint32_t CR; /*!< CRC Control register, Address offset: 0x08 */ + uint32_t RESERVED1; /*!< Reserved, 0x0C */ + __IO uint32_t INIT; /*!< Initial CRC value register, Address offset: 0x10 */ + __IO uint32_t POL; /*!< CRC polynomial register, Address offset: 0x14 */ +} CRC_TypeDef; + + +/** + * @brief Debug MCU + */ +typedef struct +{ + __IO uint32_t IDCODE; /*!< MCU device ID code, Address offset: 0x00 */ + __IO uint32_t CR; /*!< Debug configuration register, Address offset: 0x04 */ + __IO uint32_t APBFZ1; /*!< Debug APB freeze register 1, Address offset: 0x08 */ + __IO uint32_t APBFZ2; /*!< Debug APB freeze register 2, Address offset: 0x0C */ +} DBG_TypeDef; + +/** + * @brief DMA Controller + */ +typedef struct +{ + __IO uint32_t CCR; /*!< DMA channel x configuration register */ + __IO uint32_t CNDTR; /*!< DMA channel x number of data register */ + __IO uint32_t CPAR; /*!< DMA channel x peripheral address register */ + __IO uint32_t CMAR; /*!< DMA channel x memory address register */ +} DMA_Channel_TypeDef; + +typedef struct +{ + __IO uint32_t ISR; /*!< DMA interrupt status register, Address offset: 0x00 */ + __IO uint32_t IFCR; /*!< DMA interrupt flag clear register, Address offset: 0x04 */ +} DMA_TypeDef; + +/** + * @brief DMA Multiplexer + */ +typedef struct +{ + __IO uint32_t CCR; /*!< DMA Multiplexer Channel x Control Register Address offset: 0x0004 * (channel x) */ +}DMAMUX_Channel_TypeDef; + +typedef struct +{ + __IO uint32_t CSR; /*!< DMA Channel Status Register Address offset: 0x0080 */ + __IO uint32_t CFR; /*!< DMA Channel Clear Flag Register Address offset: 0x0084 */ +}DMAMUX_ChannelStatus_TypeDef; + +typedef struct +{ + __IO uint32_t RGCR; /*!< DMA Request Generator x Control Register Address offset: 0x0100 + 0x0004 * (Req Gen x) */ +}DMAMUX_RequestGen_TypeDef; + +typedef struct +{ + __IO uint32_t RGSR; /*!< DMA Request Generator Status Register Address offset: 0x0140 */ + __IO uint32_t RGCFR; /*!< DMA Request Generator Clear Flag Register Address offset: 0x0144 */ +}DMAMUX_RequestGenStatus_TypeDef; + +/** + * @brief Asynch Interrupt/Event Controller (EXTI) + */ +typedef struct +{ + __IO uint32_t RTSR1; /*!< EXTI Rising Trigger Selection Register 1, Address offset: 0x00 */ + __IO uint32_t FTSR1; /*!< EXTI Falling Trigger Selection Register 1, Address offset: 0x04 */ + __IO uint32_t SWIER1; /*!< EXTI Software Interrupt event Register 1, Address offset: 0x08 */ + __IO uint32_t RPR1; /*!< EXTI Rising Pending Register 1, Address offset: 0x0C */ + __IO uint32_t FPR1; /*!< EXTI Falling Pending Register 1, Address offset: 0x10 */ + uint32_t RESERVED1[3]; /*!< Reserved 1, 0x14 -- 0x1C */ + uint32_t RESERVED2[5]; /*!< Reserved 2, 0x20 -- 0x30 */ + uint32_t RESERVED3[11]; /*!< Reserved 3, 0x34 -- 0x5C */ + __IO uint32_t EXTICR[4]; /*!< EXTI External Interrupt Configuration Register, 0x60 -- 0x6C */ + uint32_t RESERVED4[4]; /*!< Reserved 4, 0x70 -- 0x7C */ + __IO uint32_t IMR1; /*!< EXTI Interrupt Mask Register 1, Address offset: 0x80 */ + __IO uint32_t EMR1; /*!< EXTI Event Mask Register 1, Address offset: 0x84 */ +} EXTI_TypeDef; + +/** + * @brief FLASH Registers + */ +typedef struct +{ + __IO uint32_t ACR; /*!< FLASH Access Control register, Address offset: 0x00 */ + uint32_t RESERVED1; /*!< Reserved1, Address offset: 0x04 */ + __IO uint32_t KEYR; /*!< FLASH Key register, Address offset: 0x08 */ + __IO uint32_t OPTKEYR; /*!< FLASH Option Key register, Address offset: 0x0C */ + __IO uint32_t SR; /*!< FLASH Status register, Address offset: 0x10 */ + __IO uint32_t CR; /*!< FLASH Control register, Address offset: 0x14 */ + __IO uint32_t ECCR; /*!< FLASH ECC register, Address offset: 0x18 */ + uint32_t RESERVED2; /*!< Reserved2, Address offset: 0x1C */ + __IO uint32_t OPTR; /*!< FLASH Option register, Address offset: 0x20 */ + uint32_t RESERVED3[2]; /*!< Reserved3, Address offset: 0x24--0x28 */ + __IO uint32_t WRP1AR; /*!< FLASH Bank WRP area A address register, Address offset: 0x2C */ + __IO uint32_t WRP1BR; /*!< FLASH Bank WRP area B address register, Address offset: 0x30 */ + uint32_t RESERVED4[2]; /*!< Reserved4, Address offset: 0x34--0x38 */ +} FLASH_TypeDef; + +/** + * @brief General Purpose I/O + */ +typedef struct +{ + __IO uint32_t MODER; /*!< GPIO port mode register, Address offset: 0x00 */ + __IO uint32_t OTYPER; /*!< GPIO port output type register, Address offset: 0x04 */ + __IO uint32_t OSPEEDR; /*!< GPIO port output speed register, Address offset: 0x08 */ + __IO uint32_t PUPDR; /*!< GPIO port pull-up/pull-down register, Address offset: 0x0C */ + __IO uint32_t IDR; /*!< GPIO port input data register, Address offset: 0x10 */ + __IO uint32_t ODR; /*!< GPIO port output data register, Address offset: 0x14 */ + __IO uint32_t BSRR; /*!< GPIO port bit set/reset register, Address offset: 0x18 */ + __IO uint32_t LCKR; /*!< GPIO port configuration lock register, Address offset: 0x1C */ + __IO uint32_t AFR[2]; /*!< GPIO alternate function registers, Address offset: 0x20-0x24 */ + __IO uint32_t BRR; /*!< GPIO Bit Reset register, Address offset: 0x28 */ +} GPIO_TypeDef; + + +/** + * @brief Inter-integrated Circuit Interface + */ +typedef struct +{ + __IO uint32_t CR1; /*!< I2C Control register 1, Address offset: 0x00 */ + __IO uint32_t CR2; /*!< I2C Control register 2, Address offset: 0x04 */ + __IO uint32_t OAR1; /*!< I2C Own address 1 register, Address offset: 0x08 */ + __IO uint32_t OAR2; /*!< I2C Own address 2 register, Address offset: 0x0C */ + __IO uint32_t TIMINGR; /*!< I2C Timing register, Address offset: 0x10 */ + __IO uint32_t TIMEOUTR; /*!< I2C Timeout register, Address offset: 0x14 */ + __IO uint32_t ISR; /*!< I2C Interrupt and status register, Address offset: 0x18 */ + __IO uint32_t ICR; /*!< I2C Interrupt clear register, Address offset: 0x1C */ + __IO uint32_t PECR; /*!< I2C PEC register, Address offset: 0x20 */ + __IO uint32_t RXDR; /*!< I2C Receive data register, Address offset: 0x24 */ + __IO uint32_t TXDR; /*!< I2C Transmit data register, Address offset: 0x28 */ +} I2C_TypeDef; + +/** + * @brief Independent WATCHDOG + */ +typedef struct +{ + __IO uint32_t KR; /*!< IWDG Key register, Address offset: 0x00 */ + __IO uint32_t PR; /*!< IWDG Prescaler register, Address offset: 0x04 */ + __IO uint32_t RLR; /*!< IWDG Reload register, Address offset: 0x08 */ + __IO uint32_t SR; /*!< IWDG Status register, Address offset: 0x0C */ + __IO uint32_t WINR; /*!< IWDG Window register, Address offset: 0x10 */ +} IWDG_TypeDef; + + + +/** + * @brief Power Control + */ +typedef struct +{ + __IO uint32_t CR1; /*!< PWR Power Control Register 1, Address offset: 0x00 */ + uint32_t RESERVED0; /*!< Reserved, Address offset: 0x04 */ + __IO uint32_t CR3; /*!< PWR Power Control Register 3, Address offset: 0x08 */ + __IO uint32_t CR4; /*!< PWR Power Control Register 4, Address offset: 0x0C */ + __IO uint32_t SR1; /*!< PWR Power Status Register 1, Address offset: 0x10 */ + __IO uint32_t SR2; /*!< PWR Power Status Register 2, Address offset: 0x14 */ + __IO uint32_t SCR; /*!< PWR Power Status Clear Register, Address offset: 0x18 */ + uint32_t RESERVED1; /*!< Reserved, Address offset: 0x1C */ + __IO uint32_t PUCRA; /*!< PWR Pull-Up Control Register of port A, Address offset: 0x20 */ + __IO uint32_t PDCRA; /*!< PWR Pull-Down Control Register of port A, Address offset: 0x24 */ + __IO uint32_t PUCRB; /*!< PWR Pull-Up Control Register of port B, Address offset: 0x28 */ + __IO uint32_t PDCRB; /*!< PWR Pull-Down Control Register of port B, Address offset: 0x2C */ + __IO uint32_t PUCRC; /*!< PWR Pull-Up Control Register of port C, Address offset: 0x30 */ + __IO uint32_t PDCRC; /*!< PWR Pull-Down Control Register of port C, Address offset: 0x34 */ + __IO uint32_t PUCRD; /*!< PWR Pull-Up Control Register of port D, Address offset: 0x38 */ + __IO uint32_t PDCRD; /*!< PWR Pull-Down Control Register of port D, Address offset: 0x3C */ + uint32_t RESERVED2; /*!< Reserved, Address offset: 0x40 */ + uint32_t RESERVED3; /*!< Reserved, Address offset: 0x44 */ + __IO uint32_t PUCRF; /*!< PWR Pull-Up Control Register of port F, Address offset: 0x48 */ + __IO uint32_t PDCRF; /*!< PWR Pull-Down Control Register of port F, Address offset: 0x4C */ +} PWR_TypeDef; + +/** + * @brief Reset and Clock Control + */ +typedef struct +{ + __IO uint32_t CR; /*!< RCC Clock Sources Control Register, Address offset: 0x00 */ + __IO uint32_t ICSCR; /*!< RCC Internal Clock Sources Calibration Register, Address offset: 0x04 */ + __IO uint32_t CFGR; /*!< RCC Regulated Domain Clocks Configuration Register, Address offset: 0x08 */ + __IO uint32_t PLLCFGR; /*!< RCC System PLL configuration Register, Address offset: 0x0C */ + __IO uint32_t RESERVED0; /*!< Reserved, Address offset: 0x10 */ + __IO uint32_t RESERVED1; /*!< Reserved, Address offset: 0x14 */ + __IO uint32_t CIER; /*!< RCC Clock Interrupt Enable Register, Address offset: 0x18 */ + __IO uint32_t CIFR; /*!< RCC Clock Interrupt Flag Register, Address offset: 0x1C */ + __IO uint32_t CICR; /*!< RCC Clock Interrupt Clear Register, Address offset: 0x20 */ + __IO uint32_t IOPRSTR; /*!< RCC IO port reset register, Address offset: 0x24 */ + __IO uint32_t AHBRSTR; /*!< RCC AHB peripherals reset register, Address offset: 0x28 */ + __IO uint32_t APBRSTR1; /*!< RCC APB peripherals reset register 1, Address offset: 0x2C */ + __IO uint32_t APBRSTR2; /*!< RCC APB peripherals reset register 2, Address offset: 0x30 */ + __IO uint32_t IOPENR; /*!< RCC IO port enable register, Address offset: 0x34 */ + __IO uint32_t AHBENR; /*!< RCC AHB peripherals clock enable register, Address offset: 0x38 */ + __IO uint32_t APBENR1; /*!< RCC APB peripherals clock enable register1, Address offset: 0x3C */ + __IO uint32_t APBENR2; /*!< RCC APB peripherals clock enable register2, Address offset: 0x40 */ + __IO uint32_t IOPSMENR; /*!< RCC IO port clocks enable in sleep mode register, Address offset: 0x44 */ + __IO uint32_t AHBSMENR; /*!< RCC AHB peripheral clocks enable in sleep mode register, Address offset: 0x48 */ + __IO uint32_t APBSMENR1; /*!< RCC APB peripheral clocks enable in sleep mode register1, Address offset: 0x4C */ + __IO uint32_t APBSMENR2; /*!< RCC APB peripheral clocks enable in sleep mode register2, Address offset: 0x50 */ + __IO uint32_t CCIPR; /*!< RCC Peripherals Independent Clocks Configuration Register, Address offset: 0x54 */ + __IO uint32_t RESERVED2; /*!< Reserved, Address offset: 0x58 */ + __IO uint32_t BDCR; /*!< RCC Backup Domain Control Register, Address offset: 0x5C */ + __IO uint32_t CSR; /*!< RCC Unregulated Domain Clock Control and Status Register, Address offset: 0x60 */ +} RCC_TypeDef; + +/** + * @brief Real-Time Clock + */ +typedef struct +{ + __IO uint32_t TR; /*!< RTC time register, Address offset: 0x00 */ + __IO uint32_t DR; /*!< RTC date register, Address offset: 0x04 */ + __IO uint32_t SSR; /*!< RTC sub second register, Address offset: 0x08 */ + __IO uint32_t ICSR; /*!< RTC initialization control and status register, Address offset: 0x0C */ + __IO uint32_t PRER; /*!< RTC prescaler register, Address offset: 0x10 */ + __IO uint32_t WUTR; /*!< RTC wakeup timer register, Address offset: 0x14 */ + __IO uint32_t CR; /*!< RTC control register, Address offset: 0x18 */ + uint32_t RESERVED0; /*!< Reserved Address offset: 0x1C */ + uint32_t RESERVED1; /*!< Reserved Address offset: 0x20 */ + __IO uint32_t WPR; /*!< RTC write protection register, Address offset: 0x24 */ + __IO uint32_t CALR; /*!< RTC calibration register, Address offset: 0x28 */ + __IO uint32_t SHIFTR; /*!< RTC shift control register, Address offset: 0x2C */ + __IO uint32_t TSTR; /*!< RTC time stamp time register, Address offset: 0x30 */ + __IO uint32_t TSDR; /*!< RTC time stamp date register, Address offset: 0x34 */ + __IO uint32_t TSSSR; /*!< RTC time-stamp sub second register, Address offset: 0x38 */ + uint32_t RESERVED2; /*!< Reserved Address offset: 0x1C */ + __IO uint32_t ALRMAR; /*!< RTC alarm A register, Address offset: 0x40 */ + __IO uint32_t ALRMASSR; /*!< RTC alarm A sub second register, Address offset: 0x44 */ + __IO uint32_t ALRMBR; /*!< RTC alarm B register, Address offset: 0x48 */ + __IO uint32_t ALRMBSSR; /*!< RTC alarm B sub second register, Address offset: 0x4C */ + __IO uint32_t SR; /*!< RTC Status register, Address offset: 0x50 */ + __IO uint32_t MISR; /*!< RTC Masked Interrupt Status register, Address offset: 0x54 */ + uint32_t RESERVED3; /*!< Reserved Address offset: 0x58 */ + __IO uint32_t SCR; /*!< RTC Status Clear register, Address offset: 0x5C */ + __IO uint32_t OR; /*!< RTC option register, Address offset: 0x60 */ +} RTC_TypeDef; + +/** + * @brief Tamper and backup registers + */ +typedef struct +{ + __IO uint32_t CR1; /*!< TAMP configuration register 1, Address offset: 0x00 */ + __IO uint32_t CR2; /*!< TAMP configuration register 2, Address offset: 0x04 */ + uint32_t RESERVED0; /*!< Reserved Address offset: 0x08 */ + __IO uint32_t FLTCR; /*!< Reserved Address offset: 0x0C */ + uint32_t RESERVED1[7]; /*!< Reserved Address offset: 0x10 -- 0x28 */ + __IO uint32_t IER; /*!< TAMP Interrupt enable register, Address offset: 0x2C */ + __IO uint32_t SR; /*!< TAMP Status register, Address offset: 0x30 */ + __IO uint32_t MISR; /*!< TAMP Masked Interrupt Status register, Address offset: 0x34 */ + uint32_t RESERVED2; /*!< Reserved Address offset: 0x38 */ + __IO uint32_t SCR; /*!< TAMP Status clear register, Address offset: 0x3C */ + uint32_t RESERVED3[48]; /*!< Reserved Address offset: 0x54 -- 0xFC */ + __IO uint32_t BKP0R; /*!< TAMP backup register 0, Address offset: 0x100 */ + __IO uint32_t BKP1R; /*!< TAMP backup register 1, Address offset: 0x104 */ + __IO uint32_t BKP2R; /*!< TAMP backup register 2, Address offset: 0x108 */ + __IO uint32_t BKP3R; /*!< TAMP backup register 3, Address offset: 0x10C */ + __IO uint32_t BKP4R; /*!< TAMP backup register 4, Address offset: 0x110 */ +} TAMP_TypeDef; + + /** + * @brief Serial Peripheral Interface + */ +typedef struct +{ + __IO uint32_t CR1; /*!< SPI Control register 1 (not used in I2S mode), Address offset: 0x00 */ + __IO uint32_t CR2; /*!< SPI Control register 2, Address offset: 0x04 */ + __IO uint32_t SR; /*!< SPI Status register, Address offset: 0x08 */ + __IO uint32_t DR; /*!< SPI data register, Address offset: 0x0C */ + __IO uint32_t CRCPR; /*!< SPI CRC polynomial register (not used in I2S mode), Address offset: 0x10 */ + __IO uint32_t RXCRCR; /*!< SPI Rx CRC register (not used in I2S mode), Address offset: 0x14 */ + __IO uint32_t TXCRCR; /*!< SPI Tx CRC register (not used in I2S mode), Address offset: 0x18 */ + __IO uint32_t I2SCFGR; /*!< SPI_I2S configuration register, Address offset: 0x1C */ + __IO uint32_t I2SPR; /*!< SPI_I2S prescaler register, Address offset: 0x20 */ +} SPI_TypeDef; + +/** + * @brief System configuration controller + */ +typedef struct +{ + __IO uint32_t CFGR1; /*!< SYSCFG configuration register 1, Address offset: 0x00 */ + uint32_t RESERVED0[5]; /*!< Reserved, 0x04 --0x14 */ + __IO uint32_t CFGR2; /*!< SYSCFG configuration register 2, Address offset: 0x18 */ + uint32_t RESERVED1[25]; /*!< Reserved 0x1C */ + __IO uint32_t IT_LINE_SR[32]; /*!< SYSCFG configuration IT_LINE register, Address offset: 0x80 */ +} SYSCFG_TypeDef; + +/** + * @brief TIM + */ +typedef struct +{ + __IO uint32_t CR1; /*!< TIM control register 1, Address offset: 0x00 */ + __IO uint32_t CR2; /*!< TIM control register 2, Address offset: 0x04 */ + __IO uint32_t SMCR; /*!< TIM slave mode control register, Address offset: 0x08 */ + __IO uint32_t DIER; /*!< TIM DMA/interrupt enable register, Address offset: 0x0C */ + __IO uint32_t SR; /*!< TIM status register, Address offset: 0x10 */ + __IO uint32_t EGR; /*!< TIM event generation register, Address offset: 0x14 */ + __IO uint32_t CCMR1; /*!< TIM capture/compare mode register 1, Address offset: 0x18 */ + __IO uint32_t CCMR2; /*!< TIM capture/compare mode register 2, Address offset: 0x1C */ + __IO uint32_t CCER; /*!< TIM capture/compare enable register, Address offset: 0x20 */ + __IO uint32_t CNT; /*!< TIM counter register, Address offset: 0x24 */ + __IO uint32_t PSC; /*!< TIM prescaler register, Address offset: 0x28 */ + __IO uint32_t ARR; /*!< TIM auto-reload register, Address offset: 0x2C */ + __IO uint32_t RCR; /*!< TIM repetition counter register, Address offset: 0x30 */ + __IO uint32_t CCR1; /*!< TIM capture/compare register 1, Address offset: 0x34 */ + __IO uint32_t CCR2; /*!< TIM capture/compare register 2, Address offset: 0x38 */ + __IO uint32_t CCR3; /*!< TIM capture/compare register 3, Address offset: 0x3C */ + __IO uint32_t CCR4; /*!< TIM capture/compare register 4, Address offset: 0x40 */ + __IO uint32_t BDTR; /*!< TIM break and dead-time register, Address offset: 0x44 */ + __IO uint32_t DCR; /*!< TIM DMA control register, Address offset: 0x48 */ + __IO uint32_t DMAR; /*!< TIM DMA address for full transfer, Address offset: 0x4C */ + __IO uint32_t OR1; /*!< TIM option register, Address offset: 0x50 */ + __IO uint32_t CCMR3; /*!< TIM capture/compare mode register 3, Address offset: 0x54 */ + __IO uint32_t CCR5; /*!< TIM capture/compare register5, Address offset: 0x58 */ + __IO uint32_t CCR6; /*!< TIM capture/compare register6, Address offset: 0x5C */ + __IO uint32_t AF1; /*!< TIM alternate function register 1, Address offset: 0x60 */ + __IO uint32_t AF2; /*!< TIM alternate function register 2, Address offset: 0x64 */ + __IO uint32_t TISEL; /*!< TIM Input Selection register, Address offset: 0x68 */ +} TIM_TypeDef; + +/** + * @brief Universal Synchronous Asynchronous Receiver Transmitter + */ +typedef struct +{ + __IO uint32_t CR1; /*!< USART Control register 1, Address offset: 0x00 */ + __IO uint32_t CR2; /*!< USART Control register 2, Address offset: 0x04 */ + __IO uint32_t CR3; /*!< USART Control register 3, Address offset: 0x08 */ + __IO uint32_t BRR; /*!< USART Baud rate register, Address offset: 0x0C */ + __IO uint32_t GTPR; /*!< USART Guard time and prescaler register, Address offset: 0x10 */ + __IO uint32_t RTOR; /*!< USART Receiver Time Out register, Address offset: 0x14 */ + __IO uint32_t RQR; /*!< USART Request register, Address offset: 0x18 */ + __IO uint32_t ISR; /*!< USART Interrupt and status register, Address offset: 0x1C */ + __IO uint32_t ICR; /*!< USART Interrupt flag Clear register, Address offset: 0x20 */ + __IO uint32_t RDR; /*!< USART Receive Data register, Address offset: 0x24 */ + __IO uint32_t TDR; /*!< USART Transmit Data register, Address offset: 0x28 */ + __IO uint32_t PRESC; /*!< USART Prescaler register, Address offset: 0x2C */ +} USART_TypeDef; + + +/** + * @brief Window WATCHDOG + */ +typedef struct +{ + __IO uint32_t CR; /*!< WWDG Control register, Address offset: 0x00 */ + __IO uint32_t CFR; /*!< WWDG Configuration register, Address offset: 0x04 */ + __IO uint32_t SR; /*!< WWDG Status register, Address offset: 0x08 */ +} WWDG_TypeDef; + + +/** + * @} + */ + +/** @addtogroup Peripheral_memory_map + * @{ + */ +#define FLASH_BASE (0x08000000UL) /*!< FLASH base address */ +#define SRAM_BASE (0x20000000UL) /*!< SRAM base address */ +#define PERIPH_BASE (0x40000000UL) /*!< Peripheral base address */ +#define IOPORT_BASE (0x50000000UL) /*!< IOPORT base address */ +#define SRAM_SIZE_MAX (0x00008000UL) /*!< maximum SRAM size (up to 32 KBytes) */ + +#define FLASH_SIZE (((*((uint32_t *)FLASHSIZE_BASE)) & (0x00FFU)) << 10U) + +/*!< Peripheral memory map */ +#define APBPERIPH_BASE (PERIPH_BASE) +#define AHBPERIPH_BASE (PERIPH_BASE + 0x00020000UL) + +/*!< APB peripherals */ + +#define TIM3_BASE (APBPERIPH_BASE + 0x00000400UL) +#define TIM6_BASE (APBPERIPH_BASE + 0x00001000UL) +#define TIM7_BASE (APBPERIPH_BASE + 0x00001400UL) +#define TIM14_BASE (APBPERIPH_BASE + 0x00002000UL) +#define RTC_BASE (APBPERIPH_BASE + 0x00002800UL) +#define WWDG_BASE (APBPERIPH_BASE + 0x00002C00UL) +#define IWDG_BASE (APBPERIPH_BASE + 0x00003000UL) +#define SPI2_BASE (APBPERIPH_BASE + 0x00003800UL) +#define USART2_BASE (APBPERIPH_BASE + 0x00004400UL) +#define USART3_BASE (APBPERIPH_BASE + 0x00004800UL) +#define USART4_BASE (APBPERIPH_BASE + 0x00004C00UL) +#define I2C1_BASE (APBPERIPH_BASE + 0x00005400UL) +#define I2C2_BASE (APBPERIPH_BASE + 0x00005800UL) +#define PWR_BASE (APBPERIPH_BASE + 0x00007000UL) +#define TAMP_BASE (APBPERIPH_BASE + 0x0000B000UL) +#define SYSCFG_BASE (APBPERIPH_BASE + 0x00010000UL) +#define ADC1_BASE (APBPERIPH_BASE + 0x00012400UL) +#define ADC1_COMMON_BASE (APBPERIPH_BASE + 0x00012708UL) +#define ADC_BASE (ADC1_COMMON_BASE) /* Kept for legacy purpose */ +#define TIM1_BASE (APBPERIPH_BASE + 0x00012C00UL) +#define SPI1_BASE (APBPERIPH_BASE + 0x00013000UL) +#define USART1_BASE (APBPERIPH_BASE + 0x00013800UL) +#define TIM15_BASE (APBPERIPH_BASE + 0x00014000UL) +#define TIM16_BASE (APBPERIPH_BASE + 0x00014400UL) +#define TIM17_BASE (APBPERIPH_BASE + 0x00014800UL) +#define DBG_BASE (APBPERIPH_BASE + 0x00015800UL) + + +/*!< AHB peripherals */ +#define DMA1_BASE (AHBPERIPH_BASE) +#define DMAMUX1_BASE (AHBPERIPH_BASE + 0x00000800UL) +#define RCC_BASE (AHBPERIPH_BASE + 0x00001000UL) +#define EXTI_BASE (AHBPERIPH_BASE + 0x00001800UL) +#define FLASH_R_BASE (AHBPERIPH_BASE + 0x00002000UL) +#define CRC_BASE (AHBPERIPH_BASE + 0x00003000UL) + + +#define DMA1_Channel1_BASE (DMA1_BASE + 0x00000008UL) +#define DMA1_Channel2_BASE (DMA1_BASE + 0x0000001CUL) +#define DMA1_Channel3_BASE (DMA1_BASE + 0x00000030UL) +#define DMA1_Channel4_BASE (DMA1_BASE + 0x00000044UL) +#define DMA1_Channel5_BASE (DMA1_BASE + 0x00000058UL) +#define DMA1_Channel6_BASE (DMA1_BASE + 0x0000006CUL) +#define DMA1_Channel7_BASE (DMA1_BASE + 0x00000080UL) + +#define DMAMUX1_Channel0_BASE (DMAMUX1_BASE) +#define DMAMUX1_Channel1_BASE (DMAMUX1_BASE + 0x00000004UL) +#define DMAMUX1_Channel2_BASE (DMAMUX1_BASE + 0x00000008UL) +#define DMAMUX1_Channel3_BASE (DMAMUX1_BASE + 0x0000000CUL) +#define DMAMUX1_Channel4_BASE (DMAMUX1_BASE + 0x00000010UL) +#define DMAMUX1_Channel5_BASE (DMAMUX1_BASE + 0x00000014UL) +#define DMAMUX1_Channel6_BASE (DMAMUX1_BASE + 0x00000018UL) + +#define DMAMUX1_RequestGenerator0_BASE (DMAMUX1_BASE + 0x00000100UL) +#define DMAMUX1_RequestGenerator1_BASE (DMAMUX1_BASE + 0x00000104UL) +#define DMAMUX1_RequestGenerator2_BASE (DMAMUX1_BASE + 0x00000108UL) +#define DMAMUX1_RequestGenerator3_BASE (DMAMUX1_BASE + 0x0000010CUL) + +#define DMAMUX1_ChannelStatus_BASE (DMAMUX1_BASE + 0x00000080UL) +#define DMAMUX1_RequestGenStatus_BASE (DMAMUX1_BASE + 0x00000140UL) + +/*!< IOPORT */ +#define GPIOA_BASE (IOPORT_BASE + 0x00000000UL) +#define GPIOB_BASE (IOPORT_BASE + 0x00000400UL) +#define GPIOC_BASE (IOPORT_BASE + 0x00000800UL) +#define GPIOD_BASE (IOPORT_BASE + 0x00000C00UL) +#define GPIOF_BASE (IOPORT_BASE + 0x00001400UL) + +/*!< Device Electronic Signature */ +#define PACKAGE_BASE (0x1FFF7500UL) /*!< Package data register base address */ +#define UID_BASE (0x1FFF7590UL) /*!< Unique device ID register base address */ +#define FLASHSIZE_BASE (0x1FFF75E0UL) /*!< Flash size data register base address */ + +/** + * @} + */ + +/** @addtogroup Peripheral_declaration + * @{ + */ +#define TIM3 ((TIM_TypeDef *) TIM3_BASE) +#define TIM6 ((TIM_TypeDef *) TIM6_BASE) +#define TIM7 ((TIM_TypeDef *) TIM7_BASE) +#define TIM14 ((TIM_TypeDef *) TIM14_BASE) +#define RTC ((RTC_TypeDef *) RTC_BASE) +#define TAMP ((TAMP_TypeDef *) TAMP_BASE) +#define WWDG ((WWDG_TypeDef *) WWDG_BASE) +#define IWDG ((IWDG_TypeDef *) IWDG_BASE) +#define SPI2 ((SPI_TypeDef *) SPI2_BASE) +#define USART2 ((USART_TypeDef *) USART2_BASE) +#define USART3 ((USART_TypeDef *) USART3_BASE) +#define USART4 ((USART_TypeDef *) USART4_BASE) +#define I2C1 ((I2C_TypeDef *) I2C1_BASE) +#define I2C2 ((I2C_TypeDef *) I2C2_BASE) +#define PWR ((PWR_TypeDef *) PWR_BASE) +#define RCC ((RCC_TypeDef *) RCC_BASE) +#define EXTI ((EXTI_TypeDef *) EXTI_BASE) +#define SYSCFG ((SYSCFG_TypeDef *) SYSCFG_BASE) +#define TIM1 ((TIM_TypeDef *) TIM1_BASE) +#define SPI1 ((SPI_TypeDef *) SPI1_BASE) +#define USART1 ((USART_TypeDef *) USART1_BASE) +#define TIM15 ((TIM_TypeDef *) TIM15_BASE) +#define TIM16 ((TIM_TypeDef *) TIM16_BASE) +#define TIM17 ((TIM_TypeDef *) TIM17_BASE) +#define DMA1 ((DMA_TypeDef *) DMA1_BASE) +#define FLASH ((FLASH_TypeDef *) FLASH_R_BASE) +#define CRC ((CRC_TypeDef *) CRC_BASE) +#define GPIOA ((GPIO_TypeDef *) GPIOA_BASE) +#define GPIOB ((GPIO_TypeDef *) GPIOB_BASE) +#define GPIOC ((GPIO_TypeDef *) GPIOC_BASE) +#define GPIOD ((GPIO_TypeDef *) GPIOD_BASE) +#define GPIOF ((GPIO_TypeDef *) GPIOF_BASE) +#define ADC1 ((ADC_TypeDef *) ADC1_BASE) +#define ADC1_COMMON ((ADC_Common_TypeDef *) ADC1_COMMON_BASE) +#define ADC (ADC1_COMMON) /* Kept for legacy purpose */ + + + +#define DMA1_Channel1 ((DMA_Channel_TypeDef *) DMA1_Channel1_BASE) +#define DMA1_Channel2 ((DMA_Channel_TypeDef *) DMA1_Channel2_BASE) +#define DMA1_Channel3 ((DMA_Channel_TypeDef *) DMA1_Channel3_BASE) +#define DMA1_Channel4 ((DMA_Channel_TypeDef *) DMA1_Channel4_BASE) +#define DMA1_Channel5 ((DMA_Channel_TypeDef *) DMA1_Channel5_BASE) +#define DMA1_Channel6 ((DMA_Channel_TypeDef *) DMA1_Channel6_BASE) +#define DMA1_Channel7 ((DMA_Channel_TypeDef *) DMA1_Channel7_BASE) +#define DMAMUX1 ((DMAMUX_Channel_TypeDef *) DMAMUX1_BASE) +#define DMAMUX1_Channel0 ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel0_BASE) +#define DMAMUX1_Channel1 ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel1_BASE) +#define DMAMUX1_Channel2 ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel2_BASE) +#define DMAMUX1_Channel3 ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel3_BASE) +#define DMAMUX1_Channel4 ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel4_BASE) +#define DMAMUX1_Channel5 ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel5_BASE) +#define DMAMUX1_Channel6 ((DMAMUX_Channel_TypeDef *) DMAMUX1_Channel6_BASE) + +#define DMAMUX1_RequestGenerator0 ((DMAMUX_RequestGen_TypeDef *) DMAMUX1_RequestGenerator0_BASE) +#define DMAMUX1_RequestGenerator1 ((DMAMUX_RequestGen_TypeDef *) DMAMUX1_RequestGenerator1_BASE) +#define DMAMUX1_RequestGenerator2 ((DMAMUX_RequestGen_TypeDef *) DMAMUX1_RequestGenerator2_BASE) +#define DMAMUX1_RequestGenerator3 ((DMAMUX_RequestGen_TypeDef *) DMAMUX1_RequestGenerator3_BASE) + +#define DMAMUX1_ChannelStatus ((DMAMUX_ChannelStatus_TypeDef *) DMAMUX1_ChannelStatus_BASE) +#define DMAMUX1_RequestGenStatus ((DMAMUX_RequestGenStatus_TypeDef *) DMAMUX1_RequestGenStatus_BASE) + +#define DBG ((DBG_TypeDef *) DBG_BASE) + +/** + * @} + */ + +/** @addtogroup Exported_constants + * @{ + */ + + /** @addtogroup Hardware_Constant_Definition + * @{ + */ +#define LSI_STARTUP_TIME 130U /*!< LSI Maximum startup time in us */ + + /** + * @} + */ + + /** @addtogroup Peripheral_Registers_Bits_Definition + * @{ + */ + +/******************************************************************************/ +/* Peripheral Registers Bits Definition */ +/******************************************************************************/ + +/******************************************************************************/ +/* */ +/* Analog to Digital Converter (ADC) */ +/* */ +/******************************************************************************/ +/******************** Bit definition for ADC_ISR register *******************/ +#define ADC_ISR_ADRDY_Pos (0U) +#define ADC_ISR_ADRDY_Msk (0x1UL << ADC_ISR_ADRDY_Pos) /*!< 0x00000001 */ +#define ADC_ISR_ADRDY ADC_ISR_ADRDY_Msk /*!< ADC ready flag */ +#define ADC_ISR_EOSMP_Pos (1U) +#define ADC_ISR_EOSMP_Msk (0x1UL << ADC_ISR_EOSMP_Pos) /*!< 0x00000002 */ +#define ADC_ISR_EOSMP ADC_ISR_EOSMP_Msk /*!< ADC group regular end of sampling flag */ +#define ADC_ISR_EOC_Pos (2U) +#define ADC_ISR_EOC_Msk (0x1UL << ADC_ISR_EOC_Pos) /*!< 0x00000004 */ +#define ADC_ISR_EOC ADC_ISR_EOC_Msk /*!< ADC group regular end of unitary conversion flag */ +#define ADC_ISR_EOS_Pos (3U) +#define ADC_ISR_EOS_Msk (0x1UL << ADC_ISR_EOS_Pos) /*!< 0x00000008 */ +#define ADC_ISR_EOS ADC_ISR_EOS_Msk /*!< ADC group regular end of sequence conversions flag */ +#define ADC_ISR_OVR_Pos (4U) +#define ADC_ISR_OVR_Msk (0x1UL << ADC_ISR_OVR_Pos) /*!< 0x00000010 */ +#define ADC_ISR_OVR ADC_ISR_OVR_Msk /*!< ADC group regular overrun flag */ +#define ADC_ISR_AWD1_Pos (7U) +#define ADC_ISR_AWD1_Msk (0x1UL << ADC_ISR_AWD1_Pos) /*!< 0x00000080 */ +#define ADC_ISR_AWD1 ADC_ISR_AWD1_Msk /*!< ADC analog watchdog 1 flag */ +#define ADC_ISR_AWD2_Pos (8U) +#define ADC_ISR_AWD2_Msk (0x1UL << ADC_ISR_AWD2_Pos) /*!< 0x00000100 */ +#define ADC_ISR_AWD2 ADC_ISR_AWD2_Msk /*!< ADC analog watchdog 2 flag */ +#define ADC_ISR_AWD3_Pos (9U) +#define ADC_ISR_AWD3_Msk (0x1UL << ADC_ISR_AWD3_Pos) /*!< 0x00000200 */ +#define ADC_ISR_AWD3 ADC_ISR_AWD3_Msk /*!< ADC analog watchdog 3 flag */ +#define ADC_ISR_EOCAL_Pos (11U) +#define ADC_ISR_EOCAL_Msk (0x1UL << ADC_ISR_EOCAL_Pos) /*!< 0x00000800 */ +#define ADC_ISR_EOCAL ADC_ISR_EOCAL_Msk /*!< ADC end of calibration flag */ +#define ADC_ISR_CCRDY_Pos (13U) +#define ADC_ISR_CCRDY_Msk (0x1UL << ADC_ISR_CCRDY_Pos) /*!< 0x00002000 */ +#define ADC_ISR_CCRDY ADC_ISR_CCRDY_Msk /*!< ADC channel configuration ready flag */ + +/* Legacy defines */ +#define ADC_ISR_EOSEQ (ADC_ISR_EOS) + +/******************** Bit definition for ADC_IER register *******************/ +#define ADC_IER_ADRDYIE_Pos (0U) +#define ADC_IER_ADRDYIE_Msk (0x1UL << ADC_IER_ADRDYIE_Pos) /*!< 0x00000001 */ +#define ADC_IER_ADRDYIE ADC_IER_ADRDYIE_Msk /*!< ADC ready interrupt */ +#define ADC_IER_EOSMPIE_Pos (1U) +#define ADC_IER_EOSMPIE_Msk (0x1UL << ADC_IER_EOSMPIE_Pos) /*!< 0x00000002 */ +#define ADC_IER_EOSMPIE ADC_IER_EOSMPIE_Msk /*!< ADC group regular end of sampling interrupt */ +#define ADC_IER_EOCIE_Pos (2U) +#define ADC_IER_EOCIE_Msk (0x1UL << ADC_IER_EOCIE_Pos) /*!< 0x00000004 */ +#define ADC_IER_EOCIE ADC_IER_EOCIE_Msk /*!< ADC group regular end of unitary conversion interrupt */ +#define ADC_IER_EOSIE_Pos (3U) +#define ADC_IER_EOSIE_Msk (0x1UL << ADC_IER_EOSIE_Pos) /*!< 0x00000008 */ +#define ADC_IER_EOSIE ADC_IER_EOSIE_Msk /*!< ADC group regular end of sequence conversions interrupt */ +#define ADC_IER_OVRIE_Pos (4U) +#define ADC_IER_OVRIE_Msk (0x1UL << ADC_IER_OVRIE_Pos) /*!< 0x00000010 */ +#define ADC_IER_OVRIE ADC_IER_OVRIE_Msk /*!< ADC group regular overrun interrupt */ +#define ADC_IER_AWD1IE_Pos (7U) +#define ADC_IER_AWD1IE_Msk (0x1UL << ADC_IER_AWD1IE_Pos) /*!< 0x00000080 */ +#define ADC_IER_AWD1IE ADC_IER_AWD1IE_Msk /*!< ADC analog watchdog 1 interrupt */ +#define ADC_IER_AWD2IE_Pos (8U) +#define ADC_IER_AWD2IE_Msk (0x1UL << ADC_IER_AWD2IE_Pos) /*!< 0x00000100 */ +#define ADC_IER_AWD2IE ADC_IER_AWD2IE_Msk /*!< ADC analog watchdog 2 interrupt */ +#define ADC_IER_AWD3IE_Pos (9U) +#define ADC_IER_AWD3IE_Msk (0x1UL << ADC_IER_AWD3IE_Pos) /*!< 0x00000200 */ +#define ADC_IER_AWD3IE ADC_IER_AWD3IE_Msk /*!< ADC analog watchdog 3 interrupt */ +#define ADC_IER_EOCALIE_Pos (11U) +#define ADC_IER_EOCALIE_Msk (0x1UL << ADC_IER_EOCALIE_Pos) /*!< 0x00000800 */ +#define ADC_IER_EOCALIE ADC_IER_EOCALIE_Msk /*!< ADC end of calibration interrupt */ +#define ADC_IER_CCRDYIE_Pos (13U) +#define ADC_IER_CCRDYIE_Msk (0x1UL << ADC_IER_CCRDYIE_Pos) /*!< 0x00002000 */ +#define ADC_IER_CCRDYIE ADC_IER_CCRDYIE_Msk /*!< ADC channel configuration ready interrupt */ + +/* Legacy defines */ +#define ADC_IER_EOSEQIE (ADC_IER_EOSIE) + +/******************** Bit definition for ADC_CR register ********************/ +#define ADC_CR_ADEN_Pos (0U) +#define ADC_CR_ADEN_Msk (0x1UL << ADC_CR_ADEN_Pos) /*!< 0x00000001 */ +#define ADC_CR_ADEN ADC_CR_ADEN_Msk /*!< ADC enable */ +#define ADC_CR_ADDIS_Pos (1U) +#define ADC_CR_ADDIS_Msk (0x1UL << ADC_CR_ADDIS_Pos) /*!< 0x00000002 */ +#define ADC_CR_ADDIS ADC_CR_ADDIS_Msk /*!< ADC disable */ +#define ADC_CR_ADSTART_Pos (2U) +#define ADC_CR_ADSTART_Msk (0x1UL << ADC_CR_ADSTART_Pos) /*!< 0x00000004 */ +#define ADC_CR_ADSTART ADC_CR_ADSTART_Msk /*!< ADC group regular conversion start */ +#define ADC_CR_ADSTP_Pos (4U) +#define ADC_CR_ADSTP_Msk (0x1UL << ADC_CR_ADSTP_Pos) /*!< 0x00000010 */ +#define ADC_CR_ADSTP ADC_CR_ADSTP_Msk /*!< ADC group regular conversion stop */ +#define ADC_CR_ADVREGEN_Pos (28U) +#define ADC_CR_ADVREGEN_Msk (0x1UL << ADC_CR_ADVREGEN_Pos) /*!< 0x10000000 */ +#define ADC_CR_ADVREGEN ADC_CR_ADVREGEN_Msk /*!< ADC voltage regulator enable */ +#define ADC_CR_ADCAL_Pos (31U) +#define ADC_CR_ADCAL_Msk (0x1UL << ADC_CR_ADCAL_Pos) /*!< 0x80000000 */ +#define ADC_CR_ADCAL ADC_CR_ADCAL_Msk /*!< ADC calibration */ + +/******************** Bit definition for ADC_CFGR1 register *****************/ +#define ADC_CFGR1_DMAEN_Pos (0U) +#define ADC_CFGR1_DMAEN_Msk (0x1UL << ADC_CFGR1_DMAEN_Pos) /*!< 0x00000001 */ +#define ADC_CFGR1_DMAEN ADC_CFGR1_DMAEN_Msk /*!< ADC DMA transfer enable */ +#define ADC_CFGR1_DMACFG_Pos (1U) +#define ADC_CFGR1_DMACFG_Msk (0x1UL << ADC_CFGR1_DMACFG_Pos) /*!< 0x00000002 */ +#define ADC_CFGR1_DMACFG ADC_CFGR1_DMACFG_Msk /*!< ADC DMA transfer configuration */ + +#define ADC_CFGR1_SCANDIR_Pos (2U) +#define ADC_CFGR1_SCANDIR_Msk (0x1UL << ADC_CFGR1_SCANDIR_Pos) /*!< 0x00000004 */ +#define ADC_CFGR1_SCANDIR ADC_CFGR1_SCANDIR_Msk /*!< ADC group regular sequencer scan direction */ + +#define ADC_CFGR1_RES_Pos (3U) +#define ADC_CFGR1_RES_Msk (0x3UL << ADC_CFGR1_RES_Pos) /*!< 0x00000018 */ +#define ADC_CFGR1_RES ADC_CFGR1_RES_Msk /*!< ADC data resolution */ +#define ADC_CFGR1_RES_0 (0x1U << ADC_CFGR1_RES_Pos) /*!< 0x00000008 */ +#define ADC_CFGR1_RES_1 (0x2U << ADC_CFGR1_RES_Pos) /*!< 0x00000010 */ + +#define ADC_CFGR1_ALIGN_Pos (5U) +#define ADC_CFGR1_ALIGN_Msk (0x1UL << ADC_CFGR1_ALIGN_Pos) /*!< 0x00000020 */ +#define ADC_CFGR1_ALIGN ADC_CFGR1_ALIGN_Msk /*!< ADC data alignment */ + +#define ADC_CFGR1_EXTSEL_Pos (6U) +#define ADC_CFGR1_EXTSEL_Msk (0x7UL << ADC_CFGR1_EXTSEL_Pos) /*!< 0x000001C0 */ +#define ADC_CFGR1_EXTSEL ADC_CFGR1_EXTSEL_Msk /*!< ADC group regular external trigger source */ +#define ADC_CFGR1_EXTSEL_0 (0x1UL << ADC_CFGR1_EXTSEL_Pos) /*!< 0x00000040 */ +#define ADC_CFGR1_EXTSEL_1 (0x2UL << ADC_CFGR1_EXTSEL_Pos) /*!< 0x00000080 */ +#define ADC_CFGR1_EXTSEL_2 (0x4UL << ADC_CFGR1_EXTSEL_Pos) /*!< 0x00000100 */ + +#define ADC_CFGR1_EXTEN_Pos (10U) +#define ADC_CFGR1_EXTEN_Msk (0x3UL << ADC_CFGR1_EXTEN_Pos) /*!< 0x00000C00 */ +#define ADC_CFGR1_EXTEN ADC_CFGR1_EXTEN_Msk /*!< ADC group regular external trigger polarity */ +#define ADC_CFGR1_EXTEN_0 (0x1UL << ADC_CFGR1_EXTEN_Pos) /*!< 0x00000400 */ +#define ADC_CFGR1_EXTEN_1 (0x2UL << ADC_CFGR1_EXTEN_Pos) /*!< 0x00000800 */ + +#define ADC_CFGR1_OVRMOD_Pos (12U) +#define ADC_CFGR1_OVRMOD_Msk (0x1UL << ADC_CFGR1_OVRMOD_Pos) /*!< 0x00001000 */ +#define ADC_CFGR1_OVRMOD ADC_CFGR1_OVRMOD_Msk /*!< ADC group regular overrun configuration */ +#define ADC_CFGR1_CONT_Pos (13U) +#define ADC_CFGR1_CONT_Msk (0x1UL << ADC_CFGR1_CONT_Pos) /*!< 0x00002000 */ +#define ADC_CFGR1_CONT ADC_CFGR1_CONT_Msk /*!< ADC group regular continuous conversion mode */ +#define ADC_CFGR1_WAIT_Pos (14U) +#define ADC_CFGR1_WAIT_Msk (0x1UL << ADC_CFGR1_WAIT_Pos) /*!< 0x00004000 */ +#define ADC_CFGR1_WAIT ADC_CFGR1_WAIT_Msk /*!< ADC low power auto wait */ +#define ADC_CFGR1_AUTOFF_Pos (15U) +#define ADC_CFGR1_AUTOFF_Msk (0x1UL << ADC_CFGR1_AUTOFF_Pos) /*!< 0x00008000 */ +#define ADC_CFGR1_AUTOFF ADC_CFGR1_AUTOFF_Msk /*!< ADC low power auto power off */ +#define ADC_CFGR1_DISCEN_Pos (16U) +#define ADC_CFGR1_DISCEN_Msk (0x1UL << ADC_CFGR1_DISCEN_Pos) /*!< 0x00010000 */ +#define ADC_CFGR1_DISCEN ADC_CFGR1_DISCEN_Msk /*!< ADC group regular sequencer discontinuous mode */ +#define ADC_CFGR1_CHSELRMOD_Pos (21U) +#define ADC_CFGR1_CHSELRMOD_Msk (0x1UL << ADC_CFGR1_CHSELRMOD_Pos) /*!< 0x00200000 */ +#define ADC_CFGR1_CHSELRMOD ADC_CFGR1_CHSELRMOD_Msk /*!< ADC group regular sequencer mode */ + +#define ADC_CFGR1_AWD1SGL_Pos (22U) +#define ADC_CFGR1_AWD1SGL_Msk (0x1UL << ADC_CFGR1_AWD1SGL_Pos) /*!< 0x00400000 */ +#define ADC_CFGR1_AWD1SGL ADC_CFGR1_AWD1SGL_Msk /*!< ADC analog watchdog 1 monitoring a single channel or all channels */ +#define ADC_CFGR1_AWD1EN_Pos (23U) +#define ADC_CFGR1_AWD1EN_Msk (0x1UL << ADC_CFGR1_AWD1EN_Pos) /*!< 0x00800000 */ +#define ADC_CFGR1_AWD1EN ADC_CFGR1_AWD1EN_Msk /*!< ADC analog watchdog 1 enable on scope ADC group regular */ + +#define ADC_CFGR1_AWD1CH_Pos (26U) +#define ADC_CFGR1_AWD1CH_Msk (0x1FUL << ADC_CFGR1_AWD1CH_Pos) /*!< 0x7C000000 */ +#define ADC_CFGR1_AWD1CH ADC_CFGR1_AWD1CH_Msk /*!< ADC analog watchdog 1 monitored channel selection */ +#define ADC_CFGR1_AWD1CH_0 (0x01UL << ADC_CFGR1_AWD1CH_Pos) /*!< 0x04000000 */ +#define ADC_CFGR1_AWD1CH_1 (0x02UL << ADC_CFGR1_AWD1CH_Pos) /*!< 0x08000000 */ +#define ADC_CFGR1_AWD1CH_2 (0x04UL << ADC_CFGR1_AWD1CH_Pos) /*!< 0x10000000 */ +#define ADC_CFGR1_AWD1CH_3 (0x08UL << ADC_CFGR1_AWD1CH_Pos) /*!< 0x20000000 */ +#define ADC_CFGR1_AWD1CH_4 (0x10UL << ADC_CFGR1_AWD1CH_Pos) /*!< 0x40000000 */ + +/* Legacy defines */ +#define ADC_CFGR1_AUTDLY (ADC_CFGR1_WAIT) + +/******************** Bit definition for ADC_CFGR2 register *****************/ +#define ADC_CFGR2_OVSE_Pos (0U) +#define ADC_CFGR2_OVSE_Msk (0x1UL << ADC_CFGR2_OVSE_Pos) /*!< 0x00000001 */ +#define ADC_CFGR2_OVSE ADC_CFGR2_OVSE_Msk /*!< ADC oversampler enable on scope ADC group regular */ + +#define ADC_CFGR2_OVSR_Pos (2U) +#define ADC_CFGR2_OVSR_Msk (0x7UL << ADC_CFGR2_OVSR_Pos) /*!< 0x0000001C */ +#define ADC_CFGR2_OVSR ADC_CFGR2_OVSR_Msk /*!< ADC oversampling ratio */ +#define ADC_CFGR2_OVSR_0 (0x1UL << ADC_CFGR2_OVSR_Pos) /*!< 0x00000004 */ +#define ADC_CFGR2_OVSR_1 (0x2UL << ADC_CFGR2_OVSR_Pos) /*!< 0x00000008 */ +#define ADC_CFGR2_OVSR_2 (0x4UL << ADC_CFGR2_OVSR_Pos) /*!< 0x00000010 */ + +#define ADC_CFGR2_OVSS_Pos (5U) +#define ADC_CFGR2_OVSS_Msk (0xFUL << ADC_CFGR2_OVSS_Pos) /*!< 0x000001E0 */ +#define ADC_CFGR2_OVSS ADC_CFGR2_OVSS_Msk /*!< ADC oversampling shift */ +#define ADC_CFGR2_OVSS_0 (0x1UL << ADC_CFGR2_OVSS_Pos) /*!< 0x00000020 */ +#define ADC_CFGR2_OVSS_1 (0x2UL << ADC_CFGR2_OVSS_Pos) /*!< 0x00000040 */ +#define ADC_CFGR2_OVSS_2 (0x4UL << ADC_CFGR2_OVSS_Pos) /*!< 0x00000080 */ +#define ADC_CFGR2_OVSS_3 (0x8UL << ADC_CFGR2_OVSS_Pos) /*!< 0x00000100 */ + +#define ADC_CFGR2_TOVS_Pos (9U) +#define ADC_CFGR2_TOVS_Msk (0x1UL << ADC_CFGR2_TOVS_Pos) /*!< 0x00000200 */ +#define ADC_CFGR2_TOVS ADC_CFGR2_TOVS_Msk /*!< ADC oversampling discontinuous mode (triggered mode) for ADC group regular */ + +#define ADC_CFGR2_LFTRIG_Pos (29U) +#define ADC_CFGR2_LFTRIG_Msk (0x1UL << ADC_CFGR2_LFTRIG_Pos) /*!< 0x20000000 */ +#define ADC_CFGR2_LFTRIG ADC_CFGR2_LFTRIG_Msk /*!< ADC low frequency trigger mode */ + +#define ADC_CFGR2_CKMODE_Pos (30U) +#define ADC_CFGR2_CKMODE_Msk (0x3UL << ADC_CFGR2_CKMODE_Pos) /*!< 0xC0000000 */ +#define ADC_CFGR2_CKMODE ADC_CFGR2_CKMODE_Msk /*!< ADC clock source and prescaler (prescaler only for clock source synchronous) */ +#define ADC_CFGR2_CKMODE_1 (0x2UL << ADC_CFGR2_CKMODE_Pos) /*!< 0x80000000 */ +#define ADC_CFGR2_CKMODE_0 (0x1UL << ADC_CFGR2_CKMODE_Pos) /*!< 0x40000000 */ + +/******************** Bit definition for ADC_SMPR register ******************/ +#define ADC_SMPR_SMP1_Pos (0U) +#define ADC_SMPR_SMP1_Msk (0x7UL << ADC_SMPR_SMP1_Pos) /*!< 0x00000007 */ +#define ADC_SMPR_SMP1 ADC_SMPR_SMP1_Msk /*!< ADC group of channels sampling time 1 */ +#define ADC_SMPR_SMP1_0 (0x1UL << ADC_SMPR_SMP1_Pos) /*!< 0x00000001 */ +#define ADC_SMPR_SMP1_1 (0x2UL << ADC_SMPR_SMP1_Pos) /*!< 0x00000002 */ +#define ADC_SMPR_SMP1_2 (0x4UL << ADC_SMPR_SMP1_Pos) /*!< 0x00000004 */ + +#define ADC_SMPR_SMP2_Pos (4U) +#define ADC_SMPR_SMP2_Msk (0x7UL << ADC_SMPR_SMP2_Pos) /*!< 0x00000070 */ +#define ADC_SMPR_SMP2 ADC_SMPR_SMP2_Msk /*!< ADC group of channels sampling time 2 */ +#define ADC_SMPR_SMP2_0 (0x1UL << ADC_SMPR_SMP2_Pos) /*!< 0x00000010 */ +#define ADC_SMPR_SMP2_1 (0x2UL << ADC_SMPR_SMP2_Pos) /*!< 0x00000020 */ +#define ADC_SMPR_SMP2_2 (0x4UL << ADC_SMPR_SMP2_Pos) /*!< 0x00000040 */ + +#define ADC_SMPR_SMPSEL_Pos (8U) +#define ADC_SMPR_SMPSEL_Msk (0x7FFFFUL << ADC_SMPR_SMPSEL_Pos) /*!< 0x07FFFF00 */ +#define ADC_SMPR_SMPSEL ADC_SMPR_SMPSEL_Msk /*!< ADC all channels sampling time selection */ +#define ADC_SMPR_SMPSEL0_Pos (8U) +#define ADC_SMPR_SMPSEL0_Msk (0x1UL << ADC_SMPR_SMPSEL0_Pos) /*!< 0x00000100 */ +#define ADC_SMPR_SMPSEL0 ADC_SMPR_SMPSEL0_Msk /*!< ADC channel 0 sampling time selection */ +#define ADC_SMPR_SMPSEL1_Pos (9U) +#define ADC_SMPR_SMPSEL1_Msk (0x1UL << ADC_SMPR_SMPSEL1_Pos) /*!< 0x00000200 */ +#define ADC_SMPR_SMPSEL1 ADC_SMPR_SMPSEL1_Msk /*!< ADC channel 1 sampling time selection */ +#define ADC_SMPR_SMPSEL2_Pos (10U) +#define ADC_SMPR_SMPSEL2_Msk (0x1UL << ADC_SMPR_SMPSEL2_Pos) /*!< 0x00000400 */ +#define ADC_SMPR_SMPSEL2 ADC_SMPR_SMPSEL2_Msk /*!< ADC channel 2 sampling time selection */ +#define ADC_SMPR_SMPSEL3_Pos (11U) +#define ADC_SMPR_SMPSEL3_Msk (0x1UL << ADC_SMPR_SMPSEL3_Pos) /*!< 0x00000800 */ +#define ADC_SMPR_SMPSEL3 ADC_SMPR_SMPSEL3_Msk /*!< ADC channel 3 sampling time selection */ +#define ADC_SMPR_SMPSEL4_Pos (12U) +#define ADC_SMPR_SMPSEL4_Msk (0x1UL << ADC_SMPR_SMPSEL4_Pos) /*!< 0x00001000 */ +#define ADC_SMPR_SMPSEL4 ADC_SMPR_SMPSEL4_Msk /*!< ADC channel 4 sampling time selection */ +#define ADC_SMPR_SMPSEL5_Pos (13U) +#define ADC_SMPR_SMPSEL5_Msk (0x1UL << ADC_SMPR_SMPSEL5_Pos) /*!< 0x00002000 */ +#define ADC_SMPR_SMPSEL5 ADC_SMPR_SMPSEL5_Msk /*!< ADC channel 5 sampling time selection */ +#define ADC_SMPR_SMPSEL6_Pos (14U) +#define ADC_SMPR_SMPSEL6_Msk (0x1UL << ADC_SMPR_SMPSEL6_Pos) /*!< 0x00004000 */ +#define ADC_SMPR_SMPSEL6 ADC_SMPR_SMPSEL6_Msk /*!< ADC channel 6 sampling time selection */ +#define ADC_SMPR_SMPSEL7_Pos (15U) +#define ADC_SMPR_SMPSEL7_Msk (0x1UL << ADC_SMPR_SMPSEL7_Pos) /*!< 0x00008000 */ +#define ADC_SMPR_SMPSEL7 ADC_SMPR_SMPSEL7_Msk /*!< ADC channel 7 sampling time selection */ +#define ADC_SMPR_SMPSEL8_Pos (16U) +#define ADC_SMPR_SMPSEL8_Msk (0x1UL << ADC_SMPR_SMPSEL8_Pos) /*!< 0x00010000 */ +#define ADC_SMPR_SMPSEL8 ADC_SMPR_SMPSEL8_Msk /*!< ADC channel 8 sampling time selection */ +#define ADC_SMPR_SMPSEL9_Pos (17U) +#define ADC_SMPR_SMPSEL9_Msk (0x1UL << ADC_SMPR_SMPSEL9_Pos) /*!< 0x00020000 */ +#define ADC_SMPR_SMPSEL9 ADC_SMPR_SMPSEL9_Msk /*!< ADC channel 9 sampling time selection */ +#define ADC_SMPR_SMPSEL10_Pos (18U) +#define ADC_SMPR_SMPSEL10_Msk (0x1UL << ADC_SMPR_SMPSEL10_Pos) /*!< 0x00040000 */ +#define ADC_SMPR_SMPSEL10 ADC_SMPR_SMPSEL10_Msk /*!< ADC channel 10 sampling time selection */ +#define ADC_SMPR_SMPSEL11_Pos (19U) +#define ADC_SMPR_SMPSEL11_Msk (0x1UL << ADC_SMPR_SMPSEL11_Pos) /*!< 0x00080000 */ +#define ADC_SMPR_SMPSEL11 ADC_SMPR_SMPSEL11_Msk /*!< ADC channel 11 sampling time selection */ +#define ADC_SMPR_SMPSEL12_Pos (20U) +#define ADC_SMPR_SMPSEL12_Msk (0x1UL << ADC_SMPR_SMPSEL12_Pos) /*!< 0x00100000 */ +#define ADC_SMPR_SMPSEL12 ADC_SMPR_SMPSEL12_Msk /*!< ADC channel 12 sampling time selection */ +#define ADC_SMPR_SMPSEL13_Pos (21U) +#define ADC_SMPR_SMPSEL13_Msk (0x1UL << ADC_SMPR_SMPSEL13_Pos) /*!< 0x00200000 */ +#define ADC_SMPR_SMPSEL13 ADC_SMPR_SMPSEL13_Msk /*!< ADC channel 13 sampling time selection */ +#define ADC_SMPR_SMPSEL14_Pos (22U) +#define ADC_SMPR_SMPSEL14_Msk (0x1UL << ADC_SMPR_SMPSEL14_Pos) /*!< 0x00400000 */ +#define ADC_SMPR_SMPSEL14 ADC_SMPR_SMPSEL14_Msk /*!< ADC channel 14 sampling time selection */ +#define ADC_SMPR_SMPSEL15_Pos (23U) +#define ADC_SMPR_SMPSEL15_Msk (0x1UL << ADC_SMPR_SMPSEL15_Pos) /*!< 0x00800000 */ +#define ADC_SMPR_SMPSEL15 ADC_SMPR_SMPSEL15_Msk /*!< ADC channel 15 sampling time selection */ +#define ADC_SMPR_SMPSEL16_Pos (24U) +#define ADC_SMPR_SMPSEL16_Msk (0x1UL << ADC_SMPR_SMPSEL16_Pos) /*!< 0x01000000 */ +#define ADC_SMPR_SMPSEL16 ADC_SMPR_SMPSEL16_Msk /*!< ADC channel 16 sampling time selection */ +#define ADC_SMPR_SMPSEL17_Pos (25U) +#define ADC_SMPR_SMPSEL17_Msk (0x1UL << ADC_SMPR_SMPSEL17_Pos) /*!< 0x02000000 */ +#define ADC_SMPR_SMPSEL17 ADC_SMPR_SMPSEL17_Msk /*!< ADC channel 17 sampling time selection */ +#define ADC_SMPR_SMPSEL18_Pos (26U) +#define ADC_SMPR_SMPSEL18_Msk (0x1UL << ADC_SMPR_SMPSEL18_Pos) /*!< 0x04000000 */ +#define ADC_SMPR_SMPSEL18 ADC_SMPR_SMPSEL18_Msk /*!< ADC channel 18 sampling time selection */ + +/******************** Bit definition for ADC_AWD1TR register *******************/ +#define ADC_AWD1TR_LT1_Pos (0U) +#define ADC_AWD1TR_LT1_Msk (0xFFFUL << ADC_AWD1TR_LT1_Pos) /*!< 0x00000FFF */ +#define ADC_AWD1TR_LT1 ADC_AWD1TR_LT1_Msk /*!< ADC analog watchdog 1 threshold low */ +#define ADC_AWD1TR_LT1_0 (0x001UL << ADC_AWD1TR_LT1_Pos) /*!< 0x00000001 */ +#define ADC_AWD1TR_LT1_1 (0x002UL << ADC_AWD1TR_LT1_Pos) /*!< 0x00000002 */ +#define ADC_AWD1TR_LT1_2 (0x004UL << ADC_AWD1TR_LT1_Pos) /*!< 0x00000004 */ +#define ADC_AWD1TR_LT1_3 (0x008UL << ADC_AWD1TR_LT1_Pos) /*!< 0x00000008 */ +#define ADC_AWD1TR_LT1_4 (0x010UL << ADC_AWD1TR_LT1_Pos) /*!< 0x00000010 */ +#define ADC_AWD1TR_LT1_5 (0x020UL << ADC_AWD1TR_LT1_Pos) /*!< 0x00000020 */ +#define ADC_AWD1TR_LT1_6 (0x040UL << ADC_AWD1TR_LT1_Pos) /*!< 0x00000040 */ +#define ADC_AWD1TR_LT1_7 (0x080UL << ADC_AWD1TR_LT1_Pos) /*!< 0x00000080 */ +#define ADC_AWD1TR_LT1_8 (0x100UL << ADC_AWD1TR_LT1_Pos) /*!< 0x00000100 */ +#define ADC_AWD1TR_LT1_9 (0x200UL << ADC_AWD1TR_LT1_Pos) /*!< 0x00000200 */ +#define ADC_AWD1TR_LT1_10 (0x400UL << ADC_AWD1TR_LT1_Pos) /*!< 0x00000400 */ +#define ADC_AWD1TR_LT1_11 (0x800UL << ADC_AWD1TR_LT1_Pos) /*!< 0x00000800 */ + +#define ADC_AWD1TR_HT1_Pos (16U) +#define ADC_AWD1TR_HT1_Msk (0xFFFUL << ADC_AWD1TR_HT1_Pos) /*!< 0x0FFF0000 */ +#define ADC_AWD1TR_HT1 ADC_AWD1TR_HT1_Msk /*!< ADC Analog watchdog 1 threshold high */ +#define ADC_AWD1TR_HT1_0 (0x001UL << ADC_AWD1TR_HT1_Pos) /*!< 0x00010000 */ +#define ADC_AWD1TR_HT1_1 (0x002UL << ADC_AWD1TR_HT1_Pos) /*!< 0x00020000 */ +#define ADC_AWD1TR_HT1_2 (0x004UL << ADC_AWD1TR_HT1_Pos) /*!< 0x00040000 */ +#define ADC_AWD1TR_HT1_3 (0x008UL << ADC_AWD1TR_HT1_Pos) /*!< 0x00080000 */ +#define ADC_AWD1TR_HT1_4 (0x010UL << ADC_AWD1TR_HT1_Pos) /*!< 0x00100000 */ +#define ADC_AWD1TR_HT1_5 (0x020UL << ADC_AWD1TR_HT1_Pos) /*!< 0x00200000 */ +#define ADC_AWD1TR_HT1_6 (0x040UL << ADC_AWD1TR_HT1_Pos) /*!< 0x00400000 */ +#define ADC_AWD1TR_HT1_7 (0x080UL << ADC_AWD1TR_HT1_Pos) /*!< 0x00800000 */ +#define ADC_AWD1TR_HT1_8 (0x100UL << ADC_AWD1TR_HT1_Pos) /*!< 0x01000000 */ +#define ADC_AWD1TR_HT1_9 (0x200UL << ADC_AWD1TR_HT1_Pos) /*!< 0x02000000 */ +#define ADC_AWD1TR_HT1_10 (0x400UL << ADC_AWD1TR_HT1_Pos) /*!< 0x04000000 */ +#define ADC_AWD1TR_HT1_11 (0x800UL << ADC_AWD1TR_HT1_Pos) /*!< 0x08000000 */ + +/* Legacy definitions */ +#define ADC_TR1_LT1 ADC_AWD1TR_LT1 +#define ADC_TR1_LT1_0 ADC_AWD1TR_LT1_0 +#define ADC_TR1_LT1_1 ADC_AWD1TR_LT1_1 +#define ADC_TR1_LT1_2 ADC_AWD1TR_LT1_2 +#define ADC_TR1_LT1_3 ADC_AWD1TR_LT1_3 +#define ADC_TR1_LT1_4 ADC_AWD1TR_LT1_4 +#define ADC_TR1_LT1_5 ADC_AWD1TR_LT1_5 +#define ADC_TR1_LT1_6 ADC_AWD1TR_LT1_6 +#define ADC_TR1_LT1_7 ADC_AWD1TR_LT1_7 +#define ADC_TR1_LT1_8 ADC_AWD1TR_LT1_8 +#define ADC_TR1_LT1_9 ADC_AWD1TR_LT1_9 +#define ADC_TR1_LT1_10 ADC_AWD1TR_LT1_10 +#define ADC_TR1_LT1_11 ADC_AWD1TR_LT1_11 + +#define ADC_TR1_HT1 ADC_AWD1TR_HT1 +#define ADC_TR1_HT1_0 ADC_AWD1TR_HT1_0 +#define ADC_TR1_HT1_1 ADC_AWD1TR_HT1_1 +#define ADC_TR1_HT1_2 ADC_AWD1TR_HT1_2 +#define ADC_TR1_HT1_3 ADC_AWD1TR_HT1_3 +#define ADC_TR1_HT1_4 ADC_AWD1TR_HT1_4 +#define ADC_TR1_HT1_5 ADC_AWD1TR_HT1_5 +#define ADC_TR1_HT1_6 ADC_AWD1TR_HT1_6 +#define ADC_TR1_HT1_7 ADC_AWD1TR_HT1_7 +#define ADC_TR1_HT1_8 ADC_AWD1TR_HT1_8 +#define ADC_TR1_HT1_9 ADC_AWD1TR_HT1_9 +#define ADC_TR1_HT1_10 ADC_AWD1TR_HT1_10 +#define ADC_TR1_HT1_11 ADC_AWD1TR_HT1_11 + +/******************** Bit definition for ADC_AWD2TR register *******************/ +#define ADC_AWD2TR_LT2_Pos (0U) +#define ADC_AWD2TR_LT2_Msk (0xFFFUL << ADC_AWD2TR_LT2_Pos) /*!< 0x00000FFF */ +#define ADC_AWD2TR_LT2 ADC_AWD2TR_LT2_Msk /*!< ADC analog watchdog 2 threshold low */ +#define ADC_AWD2TR_LT2_0 (0x001UL << ADC_AWD2TR_LT2_Pos) /*!< 0x00000001 */ +#define ADC_AWD2TR_LT2_1 (0x002UL << ADC_AWD2TR_LT2_Pos) /*!< 0x00000002 */ +#define ADC_AWD2TR_LT2_2 (0x004UL << ADC_AWD2TR_LT2_Pos) /*!< 0x00000004 */ +#define ADC_AWD2TR_LT2_3 (0x008UL << ADC_AWD2TR_LT2_Pos) /*!< 0x00000008 */ +#define ADC_AWD2TR_LT2_4 (0x010UL << ADC_AWD2TR_LT2_Pos) /*!< 0x00000010 */ +#define ADC_AWD2TR_LT2_5 (0x020UL << ADC_AWD2TR_LT2_Pos) /*!< 0x00000020 */ +#define ADC_AWD2TR_LT2_6 (0x040UL << ADC_AWD2TR_LT2_Pos) /*!< 0x00000040 */ +#define ADC_AWD2TR_LT2_7 (0x080UL << ADC_AWD2TR_LT2_Pos) /*!< 0x00000080 */ +#define ADC_AWD2TR_LT2_8 (0x100UL << ADC_AWD2TR_LT2_Pos) /*!< 0x00000100 */ +#define ADC_AWD2TR_LT2_9 (0x200UL << ADC_AWD2TR_LT2_Pos) /*!< 0x00000200 */ +#define ADC_AWD2TR_LT2_10 (0x400UL << ADC_AWD2TR_LT2_Pos) /*!< 0x00000400 */ +#define ADC_AWD2TR_LT2_11 (0x800UL << ADC_AWD2TR_LT2_Pos) /*!< 0x00000800 */ + +#define ADC_AWD2TR_HT2_Pos (16U) +#define ADC_AWD2TR_HT2_Msk (0xFFFUL << ADC_AWD2TR_HT2_Pos) /*!< 0x0FFF0000 */ +#define ADC_AWD2TR_HT2 ADC_AWD2TR_HT2_Msk /*!< ADC analog watchdog 2 threshold high */ +#define ADC_AWD2TR_HT2_0 (0x001UL << ADC_AWD2TR_HT2_Pos) /*!< 0x00010000 */ +#define ADC_AWD2TR_HT2_1 (0x002UL << ADC_AWD2TR_HT2_Pos) /*!< 0x00020000 */ +#define ADC_AWD2TR_HT2_2 (0x004UL << ADC_AWD2TR_HT2_Pos) /*!< 0x00040000 */ +#define ADC_AWD2TR_HT2_3 (0x008UL << ADC_AWD2TR_HT2_Pos) /*!< 0x00080000 */ +#define ADC_AWD2TR_HT2_4 (0x010UL << ADC_AWD2TR_HT2_Pos) /*!< 0x00100000 */ +#define ADC_AWD2TR_HT2_5 (0x020UL << ADC_AWD2TR_HT2_Pos) /*!< 0x00200000 */ +#define ADC_AWD2TR_HT2_6 (0x040UL << ADC_AWD2TR_HT2_Pos) /*!< 0x00400000 */ +#define ADC_AWD2TR_HT2_7 (0x080UL << ADC_AWD2TR_HT2_Pos) /*!< 0x00800000 */ +#define ADC_AWD2TR_HT2_8 (0x100UL << ADC_AWD2TR_HT2_Pos) /*!< 0x01000000 */ +#define ADC_AWD2TR_HT2_9 (0x200UL << ADC_AWD2TR_HT2_Pos) /*!< 0x02000000 */ +#define ADC_AWD2TR_HT2_10 (0x400UL << ADC_AWD2TR_HT2_Pos) /*!< 0x04000000 */ +#define ADC_AWD2TR_HT2_11 (0x800UL << ADC_AWD2TR_HT2_Pos) /*!< 0x08000000 */ + +/* Legacy definitions */ +#define ADC_TR2_LT2 ADC_AWD2TR_LT2 +#define ADC_TR2_LT2_0 ADC_AWD2TR_LT2_0 +#define ADC_TR2_LT2_1 ADC_AWD2TR_LT2_1 +#define ADC_TR2_LT2_2 ADC_AWD2TR_LT2_2 +#define ADC_TR2_LT2_3 ADC_AWD2TR_LT2_3 +#define ADC_TR2_LT2_4 ADC_AWD2TR_LT2_4 +#define ADC_TR2_LT2_5 ADC_AWD2TR_LT2_5 +#define ADC_TR2_LT2_6 ADC_AWD2TR_LT2_6 +#define ADC_TR2_LT2_7 ADC_AWD2TR_LT2_7 +#define ADC_TR2_LT2_8 ADC_AWD2TR_LT2_8 +#define ADC_TR2_LT2_9 ADC_AWD2TR_LT2_9 +#define ADC_TR2_LT2_10 ADC_AWD2TR_LT2_10 +#define ADC_TR2_LT2_11 ADC_AWD2TR_LT2_11 + +#define ADC_TR2_HT2 ADC_AWD2TR_HT2 +#define ADC_TR2_HT2_0 ADC_AWD2TR_HT2_0 +#define ADC_TR2_HT2_1 ADC_AWD2TR_HT2_1 +#define ADC_TR2_HT2_2 ADC_AWD2TR_HT2_2 +#define ADC_TR2_HT2_3 ADC_AWD2TR_HT2_3 +#define ADC_TR2_HT2_4 ADC_AWD2TR_HT2_4 +#define ADC_TR2_HT2_5 ADC_AWD2TR_HT2_5 +#define ADC_TR2_HT2_6 ADC_AWD2TR_HT2_6 +#define ADC_TR2_HT2_7 ADC_AWD2TR_HT2_7 +#define ADC_TR2_HT2_8 ADC_AWD2TR_HT2_8 +#define ADC_TR2_HT2_9 ADC_AWD2TR_HT2_9 +#define ADC_TR2_HT2_10 ADC_AWD2TR_HT2_10 +#define ADC_TR2_HT2_11 ADC_AWD2TR_HT2_11 + +/******************** Bit definition for ADC_CHSELR register ****************/ +#define ADC_CHSELR_CHSEL_Pos (0U) +#define ADC_CHSELR_CHSEL_Msk (0x7FFFFUL << ADC_CHSELR_CHSEL_Pos) /*!< 0x0007FFFF */ +#define ADC_CHSELR_CHSEL ADC_CHSELR_CHSEL_Msk /*!< ADC group regular sequencer channels, available when ADC_CFGR1_CHSELRMOD is reset */ +#define ADC_CHSELR_CHSEL18_Pos (18U) +#define ADC_CHSELR_CHSEL18_Msk (0x1UL << ADC_CHSELR_CHSEL18_Pos) /*!< 0x00040000 */ +#define ADC_CHSELR_CHSEL18 ADC_CHSELR_CHSEL18_Msk /*!< ADC group regular sequencer channel 18, available when ADC_CFGR1_CHSELRMOD is reset */ +#define ADC_CHSELR_CHSEL17_Pos (17U) +#define ADC_CHSELR_CHSEL17_Msk (0x1UL << ADC_CHSELR_CHSEL17_Pos) /*!< 0x00020000 */ +#define ADC_CHSELR_CHSEL17 ADC_CHSELR_CHSEL17_Msk /*!< ADC group regular sequencer channel 17, available when ADC_CFGR1_CHSELRMOD is reset */ +#define ADC_CHSELR_CHSEL16_Pos (16U) +#define ADC_CHSELR_CHSEL16_Msk (0x1UL << ADC_CHSELR_CHSEL16_Pos) /*!< 0x00010000 */ +#define ADC_CHSELR_CHSEL16 ADC_CHSELR_CHSEL16_Msk /*!< ADC group regular sequencer channel 16, available when ADC_CFGR1_CHSELRMOD is reset */ +#define ADC_CHSELR_CHSEL15_Pos (15U) +#define ADC_CHSELR_CHSEL15_Msk (0x1UL << ADC_CHSELR_CHSEL15_Pos) /*!< 0x00008000 */ +#define ADC_CHSELR_CHSEL15 ADC_CHSELR_CHSEL15_Msk /*!< ADC group regular sequencer channel 15, available when ADC_CFGR1_CHSELRMOD is reset */ +#define ADC_CHSELR_CHSEL14_Pos (14U) +#define ADC_CHSELR_CHSEL14_Msk (0x1UL << ADC_CHSELR_CHSEL14_Pos) /*!< 0x00004000 */ +#define ADC_CHSELR_CHSEL14 ADC_CHSELR_CHSEL14_Msk /*!< ADC group regular sequencer channel 14, available when ADC_CFGR1_CHSELRMOD is reset */ +#define ADC_CHSELR_CHSEL13_Pos (13U) +#define ADC_CHSELR_CHSEL13_Msk (0x1UL << ADC_CHSELR_CHSEL13_Pos) /*!< 0x00002000 */ +#define ADC_CHSELR_CHSEL13 ADC_CHSELR_CHSEL13_Msk /*!< ADC group regular sequencer channel 13, available when ADC_CFGR1_CHSELRMOD is reset */ +#define ADC_CHSELR_CHSEL12_Pos (12U) +#define ADC_CHSELR_CHSEL12_Msk (0x1UL << ADC_CHSELR_CHSEL12_Pos) /*!< 0x00001000 */ +#define ADC_CHSELR_CHSEL12 ADC_CHSELR_CHSEL12_Msk /*!< ADC group regular sequencer channel 12, available when ADC_CFGR1_CHSELRMOD is reset */ +#define ADC_CHSELR_CHSEL11_Pos (11U) +#define ADC_CHSELR_CHSEL11_Msk (0x1UL << ADC_CHSELR_CHSEL11_Pos) /*!< 0x00000800 */ +#define ADC_CHSELR_CHSEL11 ADC_CHSELR_CHSEL11_Msk /*!< ADC group regular sequencer channel 11, available when ADC_CFGR1_CHSELRMOD is reset */ +#define ADC_CHSELR_CHSEL10_Pos (10U) +#define ADC_CHSELR_CHSEL10_Msk (0x1UL << ADC_CHSELR_CHSEL10_Pos) /*!< 0x00000400 */ +#define ADC_CHSELR_CHSEL10 ADC_CHSELR_CHSEL10_Msk /*!< ADC group regular sequencer channel 10, available when ADC_CFGR1_CHSELRMOD is reset */ +#define ADC_CHSELR_CHSEL9_Pos (9U) +#define ADC_CHSELR_CHSEL9_Msk (0x1UL << ADC_CHSELR_CHSEL9_Pos) /*!< 0x00000200 */ +#define ADC_CHSELR_CHSEL9 ADC_CHSELR_CHSEL9_Msk /*!< ADC group regular sequencer channel 9, available when ADC_CFGR1_CHSELRMOD is reset */ +#define ADC_CHSELR_CHSEL8_Pos (8U) +#define ADC_CHSELR_CHSEL8_Msk (0x1UL << ADC_CHSELR_CHSEL8_Pos) /*!< 0x00000100 */ +#define ADC_CHSELR_CHSEL8 ADC_CHSELR_CHSEL8_Msk /*!< ADC group regular sequencer channel 8, available when ADC_CFGR1_CHSELRMOD is reset */ +#define ADC_CHSELR_CHSEL7_Pos (7U) +#define ADC_CHSELR_CHSEL7_Msk (0x1UL << ADC_CHSELR_CHSEL7_Pos) /*!< 0x00000080 */ +#define ADC_CHSELR_CHSEL7 ADC_CHSELR_CHSEL7_Msk /*!< ADC group regular sequencer channel 7, available when ADC_CFGR1_CHSELRMOD is reset */ +#define ADC_CHSELR_CHSEL6_Pos (6U) +#define ADC_CHSELR_CHSEL6_Msk (0x1UL << ADC_CHSELR_CHSEL6_Pos) /*!< 0x00000040 */ +#define ADC_CHSELR_CHSEL6 ADC_CHSELR_CHSEL6_Msk /*!< ADC group regular sequencer channel 6, available when ADC_CFGR1_CHSELRMOD is reset */ +#define ADC_CHSELR_CHSEL5_Pos (5U) +#define ADC_CHSELR_CHSEL5_Msk (0x1UL << ADC_CHSELR_CHSEL5_Pos) /*!< 0x00000020 */ +#define ADC_CHSELR_CHSEL5 ADC_CHSELR_CHSEL5_Msk /*!< ADC group regular sequencer channel 5, available when ADC_CFGR1_CHSELRMOD is reset */ +#define ADC_CHSELR_CHSEL4_Pos (4U) +#define ADC_CHSELR_CHSEL4_Msk (0x1UL << ADC_CHSELR_CHSEL4_Pos) /*!< 0x00000010 */ +#define ADC_CHSELR_CHSEL4 ADC_CHSELR_CHSEL4_Msk /*!< ADC group regular sequencer channel 4, available when ADC_CFGR1_CHSELRMOD is reset */ +#define ADC_CHSELR_CHSEL3_Pos (3U) +#define ADC_CHSELR_CHSEL3_Msk (0x1UL << ADC_CHSELR_CHSEL3_Pos) /*!< 0x00000008 */ +#define ADC_CHSELR_CHSEL3 ADC_CHSELR_CHSEL3_Msk /*!< ADC group regular sequencer channel 3, available when ADC_CFGR1_CHSELRMOD is reset */ +#define ADC_CHSELR_CHSEL2_Pos (2U) +#define ADC_CHSELR_CHSEL2_Msk (0x1UL << ADC_CHSELR_CHSEL2_Pos) /*!< 0x00000004 */ +#define ADC_CHSELR_CHSEL2 ADC_CHSELR_CHSEL2_Msk /*!< ADC group regular sequencer channel 2, available when ADC_CFGR1_CHSELRMOD is reset */ +#define ADC_CHSELR_CHSEL1_Pos (1U) +#define ADC_CHSELR_CHSEL1_Msk (0x1UL << ADC_CHSELR_CHSEL1_Pos) /*!< 0x00000002 */ +#define ADC_CHSELR_CHSEL1 ADC_CHSELR_CHSEL1_Msk /*!< ADC group regular sequencer channel 1, available when ADC_CFGR1_CHSELRMOD is reset */ +#define ADC_CHSELR_CHSEL0_Pos (0U) +#define ADC_CHSELR_CHSEL0_Msk (0x1UL << ADC_CHSELR_CHSEL0_Pos) /*!< 0x00000001 */ +#define ADC_CHSELR_CHSEL0 ADC_CHSELR_CHSEL0_Msk /*!< ADC group regular sequencer channel 0, available when ADC_CFGR1_CHSELRMOD is reset */ + +#define ADC_CHSELR_SQ_ALL_Pos (0U) +#define ADC_CHSELR_SQ_ALL_Msk (0xFFFFFFFFUL << ADC_CHSELR_SQ_ALL_Pos) /*!< 0xFFFFFFFF */ +#define ADC_CHSELR_SQ_ALL ADC_CHSELR_SQ_ALL_Msk /*!< ADC group regular sequencer all ranks, available when ADC_CFGR1_CHSELRMOD is set */ + +#define ADC_CHSELR_SQ8_Pos (28U) +#define ADC_CHSELR_SQ8_Msk (0xFUL << ADC_CHSELR_SQ8_Pos) /*!< 0xF0000000 */ +#define ADC_CHSELR_SQ8 ADC_CHSELR_SQ8_Msk /*!< ADC group regular sequencer rank 8, available when ADC_CFGR1_CHSELRMOD is set */ +#define ADC_CHSELR_SQ8_0 (0x1UL << ADC_CHSELR_SQ8_Pos) /*!< 0x10000000 */ +#define ADC_CHSELR_SQ8_1 (0x2UL << ADC_CHSELR_SQ8_Pos) /*!< 0x20000000 */ +#define ADC_CHSELR_SQ8_2 (0x4UL << ADC_CHSELR_SQ8_Pos) /*!< 0x40000000 */ +#define ADC_CHSELR_SQ8_3 (0x8UL << ADC_CHSELR_SQ8_Pos) /*!< 0x80000000 */ + +#define ADC_CHSELR_SQ7_Pos (24U) +#define ADC_CHSELR_SQ7_Msk (0xFUL << ADC_CHSELR_SQ7_Pos) /*!< 0x0F000000 */ +#define ADC_CHSELR_SQ7 ADC_CHSELR_SQ7_Msk /*!< ADC group regular sequencer rank 7, available when ADC_CFGR1_CHSELRMOD is set */ +#define ADC_CHSELR_SQ7_0 (0x1UL << ADC_CHSELR_SQ7_Pos) /*!< 0x01000000 */ +#define ADC_CHSELR_SQ7_1 (0x2UL << ADC_CHSELR_SQ7_Pos) /*!< 0x02000000 */ +#define ADC_CHSELR_SQ7_2 (0x4UL << ADC_CHSELR_SQ7_Pos) /*!< 0x04000000 */ +#define ADC_CHSELR_SQ7_3 (0x8UL << ADC_CHSELR_SQ7_Pos) /*!< 0x08000000 */ + +#define ADC_CHSELR_SQ6_Pos (20U) +#define ADC_CHSELR_SQ6_Msk (0xFUL << ADC_CHSELR_SQ6_Pos) /*!< 0x00F00000 */ +#define ADC_CHSELR_SQ6 ADC_CHSELR_SQ6_Msk /*!< ADC group regular sequencer rank 6, available when ADC_CFGR1_CHSELRMOD is set */ +#define ADC_CHSELR_SQ6_0 (0x1UL << ADC_CHSELR_SQ6_Pos) /*!< 0x00100000 */ +#define ADC_CHSELR_SQ6_1 (0x2UL << ADC_CHSELR_SQ6_Pos) /*!< 0x00200000 */ +#define ADC_CHSELR_SQ6_2 (0x4UL << ADC_CHSELR_SQ6_Pos) /*!< 0x00400000 */ +#define ADC_CHSELR_SQ6_3 (0x8UL << ADC_CHSELR_SQ6_Pos) /*!< 0x00800000 */ + +#define ADC_CHSELR_SQ5_Pos (16U) +#define ADC_CHSELR_SQ5_Msk (0xFUL << ADC_CHSELR_SQ5_Pos) /*!< 0x000F0000 */ +#define ADC_CHSELR_SQ5 ADC_CHSELR_SQ5_Msk /*!< ADC group regular sequencer rank 5, available when ADC_CFGR1_CHSELRMOD is set */ +#define ADC_CHSELR_SQ5_0 (0x1UL << ADC_CHSELR_SQ5_Pos) /*!< 0x00010000 */ +#define ADC_CHSELR_SQ5_1 (0x2UL << ADC_CHSELR_SQ5_Pos) /*!< 0x00020000 */ +#define ADC_CHSELR_SQ5_2 (0x4UL << ADC_CHSELR_SQ5_Pos) /*!< 0x00040000 */ +#define ADC_CHSELR_SQ5_3 (0x8UL << ADC_CHSELR_SQ5_Pos) /*!< 0x00080000 */ + +#define ADC_CHSELR_SQ4_Pos (12U) +#define ADC_CHSELR_SQ4_Msk (0xFUL << ADC_CHSELR_SQ4_Pos) /*!< 0x0000F000 */ +#define ADC_CHSELR_SQ4 ADC_CHSELR_SQ4_Msk /*!< ADC group regular sequencer rank 4, available when ADC_CFGR1_CHSELRMOD is set */ +#define ADC_CHSELR_SQ4_0 (0x1UL << ADC_CHSELR_SQ4_Pos) /*!< 0x00001000 */ +#define ADC_CHSELR_SQ4_1 (0x2UL << ADC_CHSELR_SQ4_Pos) /*!< 0x00002000 */ +#define ADC_CHSELR_SQ4_2 (0x4UL << ADC_CHSELR_SQ4_Pos) /*!< 0x00004000 */ +#define ADC_CHSELR_SQ4_3 (0x8UL << ADC_CHSELR_SQ4_Pos) /*!< 0x00008000 */ + +#define ADC_CHSELR_SQ3_Pos (8U) +#define ADC_CHSELR_SQ3_Msk (0xFUL << ADC_CHSELR_SQ3_Pos) /*!< 0x00000F00 */ +#define ADC_CHSELR_SQ3 ADC_CHSELR_SQ3_Msk /*!< ADC group regular sequencer rank 3, available when ADC_CFGR1_CHSELRMOD is set */ +#define ADC_CHSELR_SQ3_0 (0x1UL << ADC_CHSELR_SQ3_Pos) /*!< 0x00000100 */ +#define ADC_CHSELR_SQ3_1 (0x2UL << ADC_CHSELR_SQ3_Pos) /*!< 0x00000200 */ +#define ADC_CHSELR_SQ3_2 (0x4UL << ADC_CHSELR_SQ3_Pos) /*!< 0x00000400 */ +#define ADC_CHSELR_SQ3_3 (0x8UL << ADC_CHSELR_SQ3_Pos) /*!< 0x00000800 */ + +#define ADC_CHSELR_SQ2_Pos (4U) +#define ADC_CHSELR_SQ2_Msk (0xFUL << ADC_CHSELR_SQ2_Pos) /*!< 0x000000F0 */ +#define ADC_CHSELR_SQ2 ADC_CHSELR_SQ2_Msk /*!< ADC group regular sequencer rank 2, available when ADC_CFGR1_CHSELRMOD is set */ +#define ADC_CHSELR_SQ2_0 (0x1UL << ADC_CHSELR_SQ2_Pos) /*!< 0x00000010 */ +#define ADC_CHSELR_SQ2_1 (0x2UL << ADC_CHSELR_SQ2_Pos) /*!< 0x00000020 */ +#define ADC_CHSELR_SQ2_2 (0x4UL << ADC_CHSELR_SQ2_Pos) /*!< 0x00000040 */ +#define ADC_CHSELR_SQ2_3 (0x8UL << ADC_CHSELR_SQ2_Pos) /*!< 0x00000080 */ + +#define ADC_CHSELR_SQ1_Pos (0U) +#define ADC_CHSELR_SQ1_Msk (0xFUL << ADC_CHSELR_SQ1_Pos) /*!< 0x0000000F */ +#define ADC_CHSELR_SQ1 ADC_CHSELR_SQ1_Msk /*!< ADC group regular sequencer rank 1, available when ADC_CFGR1_CHSELRMOD is set */ +#define ADC_CHSELR_SQ1_0 (0x1UL << ADC_CHSELR_SQ1_Pos) /*!< 0x00000001 */ +#define ADC_CHSELR_SQ1_1 (0x2UL << ADC_CHSELR_SQ1_Pos) /*!< 0x00000002 */ +#define ADC_CHSELR_SQ1_2 (0x4UL << ADC_CHSELR_SQ1_Pos) /*!< 0x00000004 */ +#define ADC_CHSELR_SQ1_3 (0x8UL << ADC_CHSELR_SQ1_Pos) /*!< 0x00000008 */ + +/******************** Bit definition for ADC_AWD3TR register *******************/ +#define ADC_AWD3TR_LT3_Pos (0U) +#define ADC_AWD3TR_LT3_Msk (0xFFFUL << ADC_AWD3TR_LT3_Pos) /*!< 0x00000FFF */ +#define ADC_AWD3TR_LT3 ADC_AWD3TR_LT3_Msk /*!< ADC analog watchdog 3 threshold low */ +#define ADC_AWD3TR_LT3_0 (0x001UL << ADC_AWD3TR_LT3_Pos) /*!< 0x00000001 */ +#define ADC_AWD3TR_LT3_1 (0x002UL << ADC_AWD3TR_LT3_Pos) /*!< 0x00000002 */ +#define ADC_AWD3TR_LT3_2 (0x004UL << ADC_AWD3TR_LT3_Pos) /*!< 0x00000004 */ +#define ADC_AWD3TR_LT3_3 (0x008UL << ADC_AWD3TR_LT3_Pos) /*!< 0x00000008 */ +#define ADC_AWD3TR_LT3_4 (0x010UL << ADC_AWD3TR_LT3_Pos) /*!< 0x00000010 */ +#define ADC_AWD3TR_LT3_5 (0x020UL << ADC_AWD3TR_LT3_Pos) /*!< 0x00000020 */ +#define ADC_AWD3TR_LT3_6 (0x040UL << ADC_AWD3TR_LT3_Pos) /*!< 0x00000040 */ +#define ADC_AWD3TR_LT3_7 (0x080UL << ADC_AWD3TR_LT3_Pos) /*!< 0x00000080 */ +#define ADC_AWD3TR_LT3_8 (0x100UL << ADC_AWD3TR_LT3_Pos) /*!< 0x00000100 */ +#define ADC_AWD3TR_LT3_9 (0x200UL << ADC_AWD3TR_LT3_Pos) /*!< 0x00000200 */ +#define ADC_AWD3TR_LT3_10 (0x400UL << ADC_AWD3TR_LT3_Pos) /*!< 0x00000400 */ +#define ADC_AWD3TR_LT3_11 (0x800UL << ADC_AWD3TR_LT3_Pos) /*!< 0x00000800 */ + +#define ADC_AWD3TR_HT3_Pos (16U) +#define ADC_AWD3TR_HT3_Msk (0xFFFUL << ADC_AWD3TR_HT3_Pos) /*!< 0x0FFF0000 */ +#define ADC_AWD3TR_HT3 ADC_AWD3TR_HT3_Msk /*!< ADC analog watchdog 3 threshold high */ +#define ADC_AWD3TR_HT3_0 (0x001UL << ADC_AWD3TR_HT3_Pos) /*!< 0x00010000 */ +#define ADC_AWD3TR_HT3_1 (0x002UL << ADC_AWD3TR_HT3_Pos) /*!< 0x00020000 */ +#define ADC_AWD3TR_HT3_2 (0x004UL << ADC_AWD3TR_HT3_Pos) /*!< 0x00040000 */ +#define ADC_AWD3TR_HT3_3 (0x008UL << ADC_AWD3TR_HT3_Pos) /*!< 0x00080000 */ +#define ADC_AWD3TR_HT3_4 (0x010UL << ADC_AWD3TR_HT3_Pos) /*!< 0x00100000 */ +#define ADC_AWD3TR_HT3_5 (0x020UL << ADC_AWD3TR_HT3_Pos) /*!< 0x00200000 */ +#define ADC_AWD3TR_HT3_6 (0x040UL << ADC_AWD3TR_HT3_Pos) /*!< 0x00400000 */ +#define ADC_AWD3TR_HT3_7 (0x080UL << ADC_AWD3TR_HT3_Pos) /*!< 0x00800000 */ +#define ADC_AWD3TR_HT3_8 (0x100UL << ADC_AWD3TR_HT3_Pos) /*!< 0x01000000 */ +#define ADC_AWD3TR_HT3_9 (0x200UL << ADC_AWD3TR_HT3_Pos) /*!< 0x02000000 */ +#define ADC_AWD3TR_HT3_10 (0x400UL << ADC_AWD3TR_HT3_Pos) /*!< 0x04000000 */ +#define ADC_AWD3TR_HT3_11 (0x800UL << ADC_AWD3TR_HT3_Pos) /*!< 0x08000000 */ + +/* Legacy definitions */ +#define ADC_TR3_LT3 ADC_AWD3TR_LT3 +#define ADC_TR3_LT3_0 ADC_AWD3TR_LT3_0 +#define ADC_TR3_LT3_1 ADC_AWD3TR_LT3_1 +#define ADC_TR3_LT3_2 ADC_AWD3TR_LT3_2 +#define ADC_TR3_LT3_3 ADC_AWD3TR_LT3_3 +#define ADC_TR3_LT3_4 ADC_AWD3TR_LT3_4 +#define ADC_TR3_LT3_5 ADC_AWD3TR_LT3_5 +#define ADC_TR3_LT3_6 ADC_AWD3TR_LT3_6 +#define ADC_TR3_LT3_7 ADC_AWD3TR_LT3_7 +#define ADC_TR3_LT3_8 ADC_AWD3TR_LT3_8 +#define ADC_TR3_LT3_9 ADC_AWD3TR_LT3_9 +#define ADC_TR3_LT3_10 ADC_AWD3TR_LT3_10 +#define ADC_TR3_LT3_11 ADC_AWD3TR_LT3_11 + +#define ADC_TR3_HT3 ADC_AWD3TR_HT3 +#define ADC_TR3_HT3_0 ADC_AWD3TR_HT3_0 +#define ADC_TR3_HT3_1 ADC_AWD3TR_HT3_1 +#define ADC_TR3_HT3_2 ADC_AWD3TR_HT3_2 +#define ADC_TR3_HT3_3 ADC_AWD3TR_HT3_3 +#define ADC_TR3_HT3_4 ADC_AWD3TR_HT3_4 +#define ADC_TR3_HT3_5 ADC_AWD3TR_HT3_5 +#define ADC_TR3_HT3_6 ADC_AWD3TR_HT3_6 +#define ADC_TR3_HT3_7 ADC_AWD3TR_HT3_7 +#define ADC_TR3_HT3_8 ADC_AWD3TR_HT3_8 +#define ADC_TR3_HT3_9 ADC_AWD3TR_HT3_9 +#define ADC_TR3_HT3_10 ADC_AWD3TR_HT3_10 +#define ADC_TR3_HT3_11 ADC_AWD3TR_HT3_11 + +/******************** Bit definition for ADC_DR register ********************/ +#define ADC_DR_DATA_Pos (0U) +#define ADC_DR_DATA_Msk (0xFFFFUL << ADC_DR_DATA_Pos) /*!< 0x0000FFFF */ +#define ADC_DR_DATA ADC_DR_DATA_Msk /*!< ADC group regular conversion data */ +#define ADC_DR_DATA_0 (0x0001UL << ADC_DR_DATA_Pos) /*!< 0x00000001 */ +#define ADC_DR_DATA_1 (0x0002UL << ADC_DR_DATA_Pos) /*!< 0x00000002 */ +#define ADC_DR_DATA_2 (0x0004UL << ADC_DR_DATA_Pos) /*!< 0x00000004 */ +#define ADC_DR_DATA_3 (0x0008UL << ADC_DR_DATA_Pos) /*!< 0x00000008 */ +#define ADC_DR_DATA_4 (0x0010UL << ADC_DR_DATA_Pos) /*!< 0x00000010 */ +#define ADC_DR_DATA_5 (0x0020UL << ADC_DR_DATA_Pos) /*!< 0x00000020 */ +#define ADC_DR_DATA_6 (0x0040UL << ADC_DR_DATA_Pos) /*!< 0x00000040 */ +#define ADC_DR_DATA_7 (0x0080UL << ADC_DR_DATA_Pos) /*!< 0x00000080 */ +#define ADC_DR_DATA_8 (0x0100UL << ADC_DR_DATA_Pos) /*!< 0x00000100 */ +#define ADC_DR_DATA_9 (0x0200UL << ADC_DR_DATA_Pos) /*!< 0x00000200 */ +#define ADC_DR_DATA_10 (0x0400UL << ADC_DR_DATA_Pos) /*!< 0x00000400 */ +#define ADC_DR_DATA_11 (0x0800UL << ADC_DR_DATA_Pos) /*!< 0x00000800 */ +#define ADC_DR_DATA_12 (0x1000UL << ADC_DR_DATA_Pos) /*!< 0x00001000 */ +#define ADC_DR_DATA_13 (0x2000UL << ADC_DR_DATA_Pos) /*!< 0x00002000 */ +#define ADC_DR_DATA_14 (0x4000UL << ADC_DR_DATA_Pos) /*!< 0x00004000 */ +#define ADC_DR_DATA_15 (0x8000UL << ADC_DR_DATA_Pos) /*!< 0x00008000 */ + +/******************** Bit definition for ADC_AWD2CR register ****************/ +#define ADC_AWD2CR_AWD2CH_Pos (0U) +#define ADC_AWD2CR_AWD2CH_Msk (0x7FFFFUL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x0007FFFF */ +#define ADC_AWD2CR_AWD2CH ADC_AWD2CR_AWD2CH_Msk /*!< ADC analog watchdog 2 monitored channel selection */ +#define ADC_AWD2CR_AWD2CH_0 (0x00001UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000001 */ +#define ADC_AWD2CR_AWD2CH_1 (0x00002UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000002 */ +#define ADC_AWD2CR_AWD2CH_2 (0x00004UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000004 */ +#define ADC_AWD2CR_AWD2CH_3 (0x00008UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000008 */ +#define ADC_AWD2CR_AWD2CH_4 (0x00010UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000010 */ +#define ADC_AWD2CR_AWD2CH_5 (0x00020UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000020 */ +#define ADC_AWD2CR_AWD2CH_6 (0x00040UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000040 */ +#define ADC_AWD2CR_AWD2CH_7 (0x00080UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000080 */ +#define ADC_AWD2CR_AWD2CH_8 (0x00100UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000100 */ +#define ADC_AWD2CR_AWD2CH_9 (0x00200UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000200 */ +#define ADC_AWD2CR_AWD2CH_10 (0x00400UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000400 */ +#define ADC_AWD2CR_AWD2CH_11 (0x00800UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000800 */ +#define ADC_AWD2CR_AWD2CH_12 (0x01000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00001000 */ +#define ADC_AWD2CR_AWD2CH_13 (0x02000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00002000 */ +#define ADC_AWD2CR_AWD2CH_14 (0x04000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00004000 */ +#define ADC_AWD2CR_AWD2CH_15 (0x08000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00008000 */ +#define ADC_AWD2CR_AWD2CH_16 (0x10000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00010000 */ +#define ADC_AWD2CR_AWD2CH_17 (0x20000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00020000 */ +#define ADC_AWD2CR_AWD2CH_18 (0x40000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00040000 */ + +/******************** Bit definition for ADC_AWD3CR register ****************/ +#define ADC_AWD3CR_AWD3CH_Pos (0U) +#define ADC_AWD3CR_AWD3CH_Msk (0x7FFFFUL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x0007FFFF */ +#define ADC_AWD3CR_AWD3CH ADC_AWD3CR_AWD3CH_Msk /*!< ADC analog watchdog 3 monitored channel selection */ +#define ADC_AWD3CR_AWD3CH_0 (0x00001UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000001 */ +#define ADC_AWD3CR_AWD3CH_1 (0x00002UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000002 */ +#define ADC_AWD3CR_AWD3CH_2 (0x00004UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000004 */ +#define ADC_AWD3CR_AWD3CH_3 (0x00008UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000008 */ +#define ADC_AWD3CR_AWD3CH_4 (0x00010UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000010 */ +#define ADC_AWD3CR_AWD3CH_5 (0x00020UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000020 */ +#define ADC_AWD3CR_AWD3CH_6 (0x00040UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000040 */ +#define ADC_AWD3CR_AWD3CH_7 (0x00080UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000080 */ +#define ADC_AWD3CR_AWD3CH_8 (0x00100UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000100 */ +#define ADC_AWD3CR_AWD3CH_9 (0x00200UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000200 */ +#define ADC_AWD3CR_AWD3CH_10 (0x00400UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000400 */ +#define ADC_AWD3CR_AWD3CH_11 (0x00800UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000800 */ +#define ADC_AWD3CR_AWD3CH_12 (0x01000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00001000 */ +#define ADC_AWD3CR_AWD3CH_13 (0x02000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00002000 */ +#define ADC_AWD3CR_AWD3CH_14 (0x04000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00004000 */ +#define ADC_AWD3CR_AWD3CH_15 (0x08000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00008000 */ +#define ADC_AWD3CR_AWD3CH_16 (0x10000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00010000 */ +#define ADC_AWD3CR_AWD3CH_17 (0x20000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00020000 */ +#define ADC_AWD3CR_AWD3CH_18 (0x40000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00040000 */ + +/******************** Bit definition for ADC_CALFACT register ***************/ +#define ADC_CALFACT_CALFACT_Pos (0U) +#define ADC_CALFACT_CALFACT_Msk (0x7FUL << ADC_CALFACT_CALFACT_Pos) /*!< 0x0000007F */ +#define ADC_CALFACT_CALFACT ADC_CALFACT_CALFACT_Msk /*!< ADC calibration factor in single-ended mode */ +#define ADC_CALFACT_CALFACT_0 (0x01UL << ADC_CALFACT_CALFACT_Pos) /*!< 0x00000001 */ +#define ADC_CALFACT_CALFACT_1 (0x02UL << ADC_CALFACT_CALFACT_Pos) /*!< 0x00000002 */ +#define ADC_CALFACT_CALFACT_2 (0x04UL << ADC_CALFACT_CALFACT_Pos) /*!< 0x00000004 */ +#define ADC_CALFACT_CALFACT_3 (0x08UL << ADC_CALFACT_CALFACT_Pos) /*!< 0x00000008 */ +#define ADC_CALFACT_CALFACT_4 (0x10UL << ADC_CALFACT_CALFACT_Pos) /*!< 0x00000010 */ +#define ADC_CALFACT_CALFACT_5 (0x20UL << ADC_CALFACT_CALFACT_Pos) /*!< 0x00000020 */ +#define ADC_CALFACT_CALFACT_6 (0x40UL << ADC_CALFACT_CALFACT_Pos) /*!< 0x00000040 */ + +/************************* ADC Common registers *****************************/ +/******************** Bit definition for ADC_CCR register *******************/ +#define ADC_CCR_PRESC_Pos (18U) +#define ADC_CCR_PRESC_Msk (0xFUL << ADC_CCR_PRESC_Pos) /*!< 0x003C0000 */ +#define ADC_CCR_PRESC ADC_CCR_PRESC_Msk /*!< ADC common clock prescaler, only for clock source asynchronous */ +#define ADC_CCR_PRESC_0 (0x1UL << ADC_CCR_PRESC_Pos) /*!< 0x00040000 */ +#define ADC_CCR_PRESC_1 (0x2UL << ADC_CCR_PRESC_Pos) /*!< 0x00080000 */ +#define ADC_CCR_PRESC_2 (0x4UL << ADC_CCR_PRESC_Pos) /*!< 0x00100000 */ +#define ADC_CCR_PRESC_3 (0x8UL << ADC_CCR_PRESC_Pos) /*!< 0x00200000 */ + +#define ADC_CCR_VREFEN_Pos (22U) +#define ADC_CCR_VREFEN_Msk (0x1UL << ADC_CCR_VREFEN_Pos) /*!< 0x00400000 */ +#define ADC_CCR_VREFEN ADC_CCR_VREFEN_Msk /*!< ADC internal path to VrefInt enable */ +#define ADC_CCR_TSEN_Pos (23U) +#define ADC_CCR_TSEN_Msk (0x1UL << ADC_CCR_TSEN_Pos) /*!< 0x00800000 */ +#define ADC_CCR_TSEN ADC_CCR_TSEN_Msk /*!< ADC internal path to temperature sensor enable */ +#define ADC_CCR_VBATEN_Pos (24U) +#define ADC_CCR_VBATEN_Msk (0x1UL << ADC_CCR_VBATEN_Pos) /*!< 0x01000000 */ +#define ADC_CCR_VBATEN ADC_CCR_VBATEN_Msk /*!< ADC internal path to battery voltage enable */ + +/* Legacy */ +#define ADC_CCR_LFMEN_Pos (25U) +#define ADC_CCR_LFMEN_Msk (0x1UL << ADC_CCR_LFMEN_Pos) /*!< 0x02000000 */ +#define ADC_CCR_LFMEN ADC_CCR_LFMEN_Msk /*!< Legacy feature, useless on STM32G0 (ADC common clock low frequency mode is automatically managed by ADC peripheral on STM32G0) */ + + +/******************************************************************************/ +/* */ +/* CRC calculation unit */ +/* */ +/******************************************************************************/ +/******************* Bit definition for CRC_DR register *********************/ +#define CRC_DR_DR_Pos (0U) +#define CRC_DR_DR_Msk (0xFFFFFFFFUL << CRC_DR_DR_Pos) /*!< 0xFFFFFFFF */ +#define CRC_DR_DR CRC_DR_DR_Msk /*!< Data register bits */ + +/******************* Bit definition for CRC_IDR register ********************/ +#define CRC_IDR_IDR_Pos (0U) +#define CRC_IDR_IDR_Msk (0xFFFFFFFFUL << CRC_IDR_IDR_Pos) /*!< 0xFFFFFFFF */ +#define CRC_IDR_IDR CRC_IDR_IDR_Msk /*!< General-purpose 32-bits data register bits */ + +/******************** Bit definition for CRC_CR register ********************/ +#define CRC_CR_RESET_Pos (0U) +#define CRC_CR_RESET_Msk (0x1UL << CRC_CR_RESET_Pos) /*!< 0x00000001 */ +#define CRC_CR_RESET CRC_CR_RESET_Msk /*!< RESET the CRC computation unit bit */ +#define CRC_CR_POLYSIZE_Pos (3U) +#define CRC_CR_POLYSIZE_Msk (0x3UL << CRC_CR_POLYSIZE_Pos) /*!< 0x00000018 */ +#define CRC_CR_POLYSIZE CRC_CR_POLYSIZE_Msk /*!< Polynomial size bits */ +#define CRC_CR_POLYSIZE_0 (0x1UL << CRC_CR_POLYSIZE_Pos) /*!< 0x00000008 */ +#define CRC_CR_POLYSIZE_1 (0x2UL << CRC_CR_POLYSIZE_Pos) /*!< 0x00000010 */ +#define CRC_CR_REV_IN_Pos (5U) +#define CRC_CR_REV_IN_Msk (0x3UL << CRC_CR_REV_IN_Pos) /*!< 0x00000060 */ +#define CRC_CR_REV_IN CRC_CR_REV_IN_Msk /*!< REV_IN Reverse Input Data bits */ +#define CRC_CR_REV_IN_0 (0x1UL << CRC_CR_REV_IN_Pos) /*!< 0x00000020 */ +#define CRC_CR_REV_IN_1 (0x2UL << CRC_CR_REV_IN_Pos) /*!< 0x00000040 */ +#define CRC_CR_REV_OUT_Pos (7U) +#define CRC_CR_REV_OUT_Msk (0x1UL << CRC_CR_REV_OUT_Pos) /*!< 0x00000080 */ +#define CRC_CR_REV_OUT CRC_CR_REV_OUT_Msk /*!< REV_OUT Reverse Output Data bits */ + +/******************* Bit definition for CRC_INIT register *******************/ +#define CRC_INIT_INIT_Pos (0U) +#define CRC_INIT_INIT_Msk (0xFFFFFFFFUL << CRC_INIT_INIT_Pos) /*!< 0xFFFFFFFF */ +#define CRC_INIT_INIT CRC_INIT_INIT_Msk /*!< Initial CRC value bits */ + +/******************* Bit definition for CRC_POL register ********************/ +#define CRC_POL_POL_Pos (0U) +#define CRC_POL_POL_Msk (0xFFFFFFFFUL << CRC_POL_POL_Pos) /*!< 0xFFFFFFFF */ +#define CRC_POL_POL CRC_POL_POL_Msk /*!< Coefficients of the polynomial */ + + + +/******************************************************************************/ +/* */ +/* Debug MCU */ +/* */ +/******************************************************************************/ + +/******************************************************************************/ +/* */ +/* DMA Controller (DMA) */ +/* */ +/******************************************************************************/ + +/******************* Bit definition for DMA_ISR register ********************/ +#define DMA_ISR_GIF1_Pos (0U) +#define DMA_ISR_GIF1_Msk (0x1UL << DMA_ISR_GIF1_Pos) /*!< 0x00000001 */ +#define DMA_ISR_GIF1 DMA_ISR_GIF1_Msk /*!< Channel 1 Global interrupt flag */ +#define DMA_ISR_TCIF1_Pos (1U) +#define DMA_ISR_TCIF1_Msk (0x1UL << DMA_ISR_TCIF1_Pos) /*!< 0x00000002 */ +#define DMA_ISR_TCIF1 DMA_ISR_TCIF1_Msk /*!< Channel 1 Transfer Complete flag */ +#define DMA_ISR_HTIF1_Pos (2U) +#define DMA_ISR_HTIF1_Msk (0x1UL << DMA_ISR_HTIF1_Pos) /*!< 0x00000004 */ +#define DMA_ISR_HTIF1 DMA_ISR_HTIF1_Msk /*!< Channel 1 Half Transfer flag */ +#define DMA_ISR_TEIF1_Pos (3U) +#define DMA_ISR_TEIF1_Msk (0x1UL << DMA_ISR_TEIF1_Pos) /*!< 0x00000008 */ +#define DMA_ISR_TEIF1 DMA_ISR_TEIF1_Msk /*!< Channel 1 Transfer Error flag */ +#define DMA_ISR_GIF2_Pos (4U) +#define DMA_ISR_GIF2_Msk (0x1UL << DMA_ISR_GIF2_Pos) /*!< 0x00000010 */ +#define DMA_ISR_GIF2 DMA_ISR_GIF2_Msk /*!< Channel 2 Global interrupt flag */ +#define DMA_ISR_TCIF2_Pos (5U) +#define DMA_ISR_TCIF2_Msk (0x1UL << DMA_ISR_TCIF2_Pos) /*!< 0x00000020 */ +#define DMA_ISR_TCIF2 DMA_ISR_TCIF2_Msk /*!< Channel 2 Transfer Complete flag */ +#define DMA_ISR_HTIF2_Pos (6U) +#define DMA_ISR_HTIF2_Msk (0x1UL << DMA_ISR_HTIF2_Pos) /*!< 0x00000040 */ +#define DMA_ISR_HTIF2 DMA_ISR_HTIF2_Msk /*!< Channel 2 Half Transfer flag */ +#define DMA_ISR_TEIF2_Pos (7U) +#define DMA_ISR_TEIF2_Msk (0x1UL << DMA_ISR_TEIF2_Pos) /*!< 0x00000080 */ +#define DMA_ISR_TEIF2 DMA_ISR_TEIF2_Msk /*!< Channel 2 Transfer Error flag */ +#define DMA_ISR_GIF3_Pos (8U) +#define DMA_ISR_GIF3_Msk (0x1UL << DMA_ISR_GIF3_Pos) /*!< 0x00000100 */ +#define DMA_ISR_GIF3 DMA_ISR_GIF3_Msk /*!< Channel 3 Global interrupt flag */ +#define DMA_ISR_TCIF3_Pos (9U) +#define DMA_ISR_TCIF3_Msk (0x1UL << DMA_ISR_TCIF3_Pos) /*!< 0x00000200 */ +#define DMA_ISR_TCIF3 DMA_ISR_TCIF3_Msk /*!< Channel 3 Transfer Complete flag */ +#define DMA_ISR_HTIF3_Pos (10U) +#define DMA_ISR_HTIF3_Msk (0x1UL << DMA_ISR_HTIF3_Pos) /*!< 0x00000400 */ +#define DMA_ISR_HTIF3 DMA_ISR_HTIF3_Msk /*!< Channel 3 Half Transfer flag */ +#define DMA_ISR_TEIF3_Pos (11U) +#define DMA_ISR_TEIF3_Msk (0x1UL << DMA_ISR_TEIF3_Pos) /*!< 0x00000800 */ +#define DMA_ISR_TEIF3 DMA_ISR_TEIF3_Msk /*!< Channel 3 Transfer Error flag */ +#define DMA_ISR_GIF4_Pos (12U) +#define DMA_ISR_GIF4_Msk (0x1UL << DMA_ISR_GIF4_Pos) /*!< 0x00001000 */ +#define DMA_ISR_GIF4 DMA_ISR_GIF4_Msk /*!< Channel 4 Global interrupt flag */ +#define DMA_ISR_TCIF4_Pos (13U) +#define DMA_ISR_TCIF4_Msk (0x1UL << DMA_ISR_TCIF4_Pos) /*!< 0x00002000 */ +#define DMA_ISR_TCIF4 DMA_ISR_TCIF4_Msk /*!< Channel 4 Transfer Complete flag */ +#define DMA_ISR_HTIF4_Pos (14U) +#define DMA_ISR_HTIF4_Msk (0x1UL << DMA_ISR_HTIF4_Pos) /*!< 0x00004000 */ +#define DMA_ISR_HTIF4 DMA_ISR_HTIF4_Msk /*!< Channel 4 Half Transfer flag */ +#define DMA_ISR_TEIF4_Pos (15U) +#define DMA_ISR_TEIF4_Msk (0x1UL << DMA_ISR_TEIF4_Pos) /*!< 0x00008000 */ +#define DMA_ISR_TEIF4 DMA_ISR_TEIF4_Msk /*!< Channel 4 Transfer Error flag */ +#define DMA_ISR_GIF5_Pos (16U) +#define DMA_ISR_GIF5_Msk (0x1UL << DMA_ISR_GIF5_Pos) /*!< 0x00010000 */ +#define DMA_ISR_GIF5 DMA_ISR_GIF5_Msk /*!< Channel 5 Global interrupt flag */ +#define DMA_ISR_TCIF5_Pos (17U) +#define DMA_ISR_TCIF5_Msk (0x1UL << DMA_ISR_TCIF5_Pos) /*!< 0x00020000 */ +#define DMA_ISR_TCIF5 DMA_ISR_TCIF5_Msk /*!< Channel 5 Transfer Complete flag */ +#define DMA_ISR_HTIF5_Pos (18U) +#define DMA_ISR_HTIF5_Msk (0x1UL << DMA_ISR_HTIF5_Pos) /*!< 0x00040000 */ +#define DMA_ISR_HTIF5 DMA_ISR_HTIF5_Msk /*!< Channel 5 Half Transfer flag */ +#define DMA_ISR_TEIF5_Pos (19U) +#define DMA_ISR_TEIF5_Msk (0x1UL << DMA_ISR_TEIF5_Pos) /*!< 0x00080000 */ +#define DMA_ISR_TEIF5 DMA_ISR_TEIF5_Msk /*!< Channel 5 Transfer Error flag */ +#define DMA_ISR_GIF6_Pos (20U) +#define DMA_ISR_GIF6_Msk (0x1UL << DMA_ISR_GIF6_Pos) /*!< 0x00100000 */ +#define DMA_ISR_GIF6 DMA_ISR_GIF6_Msk /*!< Channel 6 Global interrupt flag */ +#define DMA_ISR_TCIF6_Pos (21U) +#define DMA_ISR_TCIF6_Msk (0x1UL << DMA_ISR_TCIF6_Pos) /*!< 0x00200000 */ +#define DMA_ISR_TCIF6 DMA_ISR_TCIF6_Msk /*!< Channel 6 Transfer Complete flag */ +#define DMA_ISR_HTIF6_Pos (22U) +#define DMA_ISR_HTIF6_Msk (0x1UL << DMA_ISR_HTIF6_Pos) /*!< 0x00400000 */ +#define DMA_ISR_HTIF6 DMA_ISR_HTIF6_Msk /*!< Channel 6 Half Transfer flag */ +#define DMA_ISR_TEIF6_Pos (23U) +#define DMA_ISR_TEIF6_Msk (0x1UL << DMA_ISR_TEIF6_Pos) /*!< 0x00800000 */ +#define DMA_ISR_TEIF6 DMA_ISR_TEIF6_Msk /*!< Channel 6 Transfer Error flag */ +#define DMA_ISR_GIF7_Pos (24U) +#define DMA_ISR_GIF7_Msk (0x1UL << DMA_ISR_GIF7_Pos) /*!< 0x01000000 */ +#define DMA_ISR_GIF7 DMA_ISR_GIF7_Msk /*!< Channel 7 Global interrupt flag */ +#define DMA_ISR_TCIF7_Pos (25U) +#define DMA_ISR_TCIF7_Msk (0x1UL << DMA_ISR_TCIF7_Pos) /*!< 0x02000000 */ +#define DMA_ISR_TCIF7 DMA_ISR_TCIF7_Msk /*!< Channel 7 Transfer Complete flag */ +#define DMA_ISR_HTIF7_Pos (26U) +#define DMA_ISR_HTIF7_Msk (0x1UL << DMA_ISR_HTIF7_Pos) /*!< 0x04000000 */ +#define DMA_ISR_HTIF7 DMA_ISR_HTIF7_Msk /*!< Channel 7 Half Transfer flag */ +#define DMA_ISR_TEIF7_Pos (27U) +#define DMA_ISR_TEIF7_Msk (0x1UL << DMA_ISR_TEIF7_Pos) /*!< 0x08000000 */ +#define DMA_ISR_TEIF7 DMA_ISR_TEIF7_Msk /*!< Channel 7 Transfer Error flag */ + +/******************* Bit definition for DMA_IFCR register *******************/ +#define DMA_IFCR_CGIF1_Pos (0U) +#define DMA_IFCR_CGIF1_Msk (0x1UL << DMA_IFCR_CGIF1_Pos) /*!< 0x00000001 */ +#define DMA_IFCR_CGIF1 DMA_IFCR_CGIF1_Msk /*!< Channel 1 Global interrupt clearr */ +#define DMA_IFCR_CTCIF1_Pos (1U) +#define DMA_IFCR_CTCIF1_Msk (0x1UL << DMA_IFCR_CTCIF1_Pos) /*!< 0x00000002 */ +#define DMA_IFCR_CTCIF1 DMA_IFCR_CTCIF1_Msk /*!< Channel 1 Transfer Complete clear */ +#define DMA_IFCR_CHTIF1_Pos (2U) +#define DMA_IFCR_CHTIF1_Msk (0x1UL << DMA_IFCR_CHTIF1_Pos) /*!< 0x00000004 */ +#define DMA_IFCR_CHTIF1 DMA_IFCR_CHTIF1_Msk /*!< Channel 1 Half Transfer clear */ +#define DMA_IFCR_CTEIF1_Pos (3U) +#define DMA_IFCR_CTEIF1_Msk (0x1UL << DMA_IFCR_CTEIF1_Pos) /*!< 0x00000008 */ +#define DMA_IFCR_CTEIF1 DMA_IFCR_CTEIF1_Msk /*!< Channel 1 Transfer Error clear */ +#define DMA_IFCR_CGIF2_Pos (4U) +#define DMA_IFCR_CGIF2_Msk (0x1UL << DMA_IFCR_CGIF2_Pos) /*!< 0x00000010 */ +#define DMA_IFCR_CGIF2 DMA_IFCR_CGIF2_Msk /*!< Channel 2 Global interrupt clear */ +#define DMA_IFCR_CTCIF2_Pos (5U) +#define DMA_IFCR_CTCIF2_Msk (0x1UL << DMA_IFCR_CTCIF2_Pos) /*!< 0x00000020 */ +#define DMA_IFCR_CTCIF2 DMA_IFCR_CTCIF2_Msk /*!< Channel 2 Transfer Complete clear */ +#define DMA_IFCR_CHTIF2_Pos (6U) +#define DMA_IFCR_CHTIF2_Msk (0x1UL << DMA_IFCR_CHTIF2_Pos) /*!< 0x00000040 */ +#define DMA_IFCR_CHTIF2 DMA_IFCR_CHTIF2_Msk /*!< Channel 2 Half Transfer clear */ +#define DMA_IFCR_CTEIF2_Pos (7U) +#define DMA_IFCR_CTEIF2_Msk (0x1UL << DMA_IFCR_CTEIF2_Pos) /*!< 0x00000080 */ +#define DMA_IFCR_CTEIF2 DMA_IFCR_CTEIF2_Msk /*!< Channel 2 Transfer Error clear */ +#define DMA_IFCR_CGIF3_Pos (8U) +#define DMA_IFCR_CGIF3_Msk (0x1UL << DMA_IFCR_CGIF3_Pos) /*!< 0x00000100 */ +#define DMA_IFCR_CGIF3 DMA_IFCR_CGIF3_Msk /*!< Channel 3 Global interrupt clear */ +#define DMA_IFCR_CTCIF3_Pos (9U) +#define DMA_IFCR_CTCIF3_Msk (0x1UL << DMA_IFCR_CTCIF3_Pos) /*!< 0x00000200 */ +#define DMA_IFCR_CTCIF3 DMA_IFCR_CTCIF3_Msk /*!< Channel 3 Transfer Complete clear */ +#define DMA_IFCR_CHTIF3_Pos (10U) +#define DMA_IFCR_CHTIF3_Msk (0x1UL << DMA_IFCR_CHTIF3_Pos) /*!< 0x00000400 */ +#define DMA_IFCR_CHTIF3 DMA_IFCR_CHTIF3_Msk /*!< Channel 3 Half Transfer clear */ +#define DMA_IFCR_CTEIF3_Pos (11U) +#define DMA_IFCR_CTEIF3_Msk (0x1UL << DMA_IFCR_CTEIF3_Pos) /*!< 0x00000800 */ +#define DMA_IFCR_CTEIF3 DMA_IFCR_CTEIF3_Msk /*!< Channel 3 Transfer Error clear */ +#define DMA_IFCR_CGIF4_Pos (12U) +#define DMA_IFCR_CGIF4_Msk (0x1UL << DMA_IFCR_CGIF4_Pos) /*!< 0x00001000 */ +#define DMA_IFCR_CGIF4 DMA_IFCR_CGIF4_Msk /*!< Channel 4 Global interrupt clear */ +#define DMA_IFCR_CTCIF4_Pos (13U) +#define DMA_IFCR_CTCIF4_Msk (0x1UL << DMA_IFCR_CTCIF4_Pos) /*!< 0x00002000 */ +#define DMA_IFCR_CTCIF4 DMA_IFCR_CTCIF4_Msk /*!< Channel 4 Transfer Complete clear */ +#define DMA_IFCR_CHTIF4_Pos (14U) +#define DMA_IFCR_CHTIF4_Msk (0x1UL << DMA_IFCR_CHTIF4_Pos) /*!< 0x00004000 */ +#define DMA_IFCR_CHTIF4 DMA_IFCR_CHTIF4_Msk /*!< Channel 4 Half Transfer clear */ +#define DMA_IFCR_CTEIF4_Pos (15U) +#define DMA_IFCR_CTEIF4_Msk (0x1UL << DMA_IFCR_CTEIF4_Pos) /*!< 0x00008000 */ +#define DMA_IFCR_CTEIF4 DMA_IFCR_CTEIF4_Msk /*!< Channel 4 Transfer Error clear */ +#define DMA_IFCR_CGIF5_Pos (16U) +#define DMA_IFCR_CGIF5_Msk (0x1UL << DMA_IFCR_CGIF5_Pos) /*!< 0x00010000 */ +#define DMA_IFCR_CGIF5 DMA_IFCR_CGIF5_Msk /*!< Channel 5 Global interrupt clear */ +#define DMA_IFCR_CTCIF5_Pos (17U) +#define DMA_IFCR_CTCIF5_Msk (0x1UL << DMA_IFCR_CTCIF5_Pos) /*!< 0x00020000 */ +#define DMA_IFCR_CTCIF5 DMA_IFCR_CTCIF5_Msk /*!< Channel 5 Transfer Complete clear */ +#define DMA_IFCR_CHTIF5_Pos (18U) +#define DMA_IFCR_CHTIF5_Msk (0x1UL << DMA_IFCR_CHTIF5_Pos) /*!< 0x00040000 */ +#define DMA_IFCR_CHTIF5 DMA_IFCR_CHTIF5_Msk /*!< Channel 5 Half Transfer clear */ +#define DMA_IFCR_CTEIF5_Pos (19U) +#define DMA_IFCR_CTEIF5_Msk (0x1UL << DMA_IFCR_CTEIF5_Pos) /*!< 0x00080000 */ +#define DMA_IFCR_CTEIF5 DMA_IFCR_CTEIF5_Msk /*!< Channel 5 Transfer Error clear */ +#define DMA_IFCR_CGIF6_Pos (20U) +#define DMA_IFCR_CGIF6_Msk (0x1UL << DMA_IFCR_CGIF6_Pos) /*!< 0x00100000 */ +#define DMA_IFCR_CGIF6 DMA_IFCR_CGIF6_Msk /*!< Channel 6 Global interrupt clear */ +#define DMA_IFCR_CTCIF6_Pos (21U) +#define DMA_IFCR_CTCIF6_Msk (0x1UL << DMA_IFCR_CTCIF6_Pos) /*!< 0x00200000 */ +#define DMA_IFCR_CTCIF6 DMA_IFCR_CTCIF6_Msk /*!< Channel 6 Transfer Complete clear */ +#define DMA_IFCR_CHTIF6_Pos (22U) +#define DMA_IFCR_CHTIF6_Msk (0x1UL << DMA_IFCR_CHTIF6_Pos) /*!< 0x00400000 */ +#define DMA_IFCR_CHTIF6 DMA_IFCR_CHTIF6_Msk /*!< Channel 6 Half Transfer clear */ +#define DMA_IFCR_CTEIF6_Pos (23U) +#define DMA_IFCR_CTEIF6_Msk (0x1UL << DMA_IFCR_CTEIF6_Pos) /*!< 0x00800000 */ +#define DMA_IFCR_CTEIF6 DMA_IFCR_CTEIF6_Msk /*!< Channel 6 Transfer Error clear */ +#define DMA_IFCR_CGIF7_Pos (24U) +#define DMA_IFCR_CGIF7_Msk (0x1UL << DMA_IFCR_CGIF7_Pos) /*!< 0x01000000 */ +#define DMA_IFCR_CGIF7 DMA_IFCR_CGIF7_Msk /*!< Channel 7 Global interrupt clear */ +#define DMA_IFCR_CTCIF7_Pos (25U) +#define DMA_IFCR_CTCIF7_Msk (0x1UL << DMA_IFCR_CTCIF7_Pos) /*!< 0x02000000 */ +#define DMA_IFCR_CTCIF7 DMA_IFCR_CTCIF7_Msk /*!< Channel 7 Transfer Complete clear */ +#define DMA_IFCR_CHTIF7_Pos (26U) +#define DMA_IFCR_CHTIF7_Msk (0x1UL << DMA_IFCR_CHTIF7_Pos) /*!< 0x04000000 */ +#define DMA_IFCR_CHTIF7 DMA_IFCR_CHTIF7_Msk /*!< Channel 7 Half Transfer clear */ +#define DMA_IFCR_CTEIF7_Pos (27U) +#define DMA_IFCR_CTEIF7_Msk (0x1UL << DMA_IFCR_CTEIF7_Pos) /*!< 0x08000000 */ +#define DMA_IFCR_CTEIF7 DMA_IFCR_CTEIF7_Msk /*!< Channel 7 Transfer Error clear */ + +/******************* Bit definition for DMA_CCR register ********************/ +#define DMA_CCR_EN_Pos (0U) +#define DMA_CCR_EN_Msk (0x1UL << DMA_CCR_EN_Pos) /*!< 0x00000001 */ +#define DMA_CCR_EN DMA_CCR_EN_Msk /*!< Channel enable */ +#define DMA_CCR_TCIE_Pos (1U) +#define DMA_CCR_TCIE_Msk (0x1UL << DMA_CCR_TCIE_Pos) /*!< 0x00000002 */ +#define DMA_CCR_TCIE DMA_CCR_TCIE_Msk /*!< Transfer complete interrupt enable */ +#define DMA_CCR_HTIE_Pos (2U) +#define DMA_CCR_HTIE_Msk (0x1UL << DMA_CCR_HTIE_Pos) /*!< 0x00000004 */ +#define DMA_CCR_HTIE DMA_CCR_HTIE_Msk /*!< Half Transfer interrupt enable */ +#define DMA_CCR_TEIE_Pos (3U) +#define DMA_CCR_TEIE_Msk (0x1UL << DMA_CCR_TEIE_Pos) /*!< 0x00000008 */ +#define DMA_CCR_TEIE DMA_CCR_TEIE_Msk /*!< Transfer error interrupt enable */ +#define DMA_CCR_DIR_Pos (4U) +#define DMA_CCR_DIR_Msk (0x1UL << DMA_CCR_DIR_Pos) /*!< 0x00000010 */ +#define DMA_CCR_DIR DMA_CCR_DIR_Msk /*!< Data transfer direction */ +#define DMA_CCR_CIRC_Pos (5U) +#define DMA_CCR_CIRC_Msk (0x1UL << DMA_CCR_CIRC_Pos) /*!< 0x00000020 */ +#define DMA_CCR_CIRC DMA_CCR_CIRC_Msk /*!< Circular mode */ +#define DMA_CCR_PINC_Pos (6U) +#define DMA_CCR_PINC_Msk (0x1UL << DMA_CCR_PINC_Pos) /*!< 0x00000040 */ +#define DMA_CCR_PINC DMA_CCR_PINC_Msk /*!< Peripheral increment mode */ +#define DMA_CCR_MINC_Pos (7U) +#define DMA_CCR_MINC_Msk (0x1UL << DMA_CCR_MINC_Pos) /*!< 0x00000080 */ +#define DMA_CCR_MINC DMA_CCR_MINC_Msk /*!< Memory increment mode */ + +#define DMA_CCR_PSIZE_Pos (8U) +#define DMA_CCR_PSIZE_Msk (0x3UL << DMA_CCR_PSIZE_Pos) /*!< 0x00000300 */ +#define DMA_CCR_PSIZE DMA_CCR_PSIZE_Msk /*!< PSIZE[1:0] bits (Peripheral size) */ +#define DMA_CCR_PSIZE_0 (0x1UL << DMA_CCR_PSIZE_Pos) /*!< 0x00000100 */ +#define DMA_CCR_PSIZE_1 (0x2UL << DMA_CCR_PSIZE_Pos) /*!< 0x00000200 */ + +#define DMA_CCR_MSIZE_Pos (10U) +#define DMA_CCR_MSIZE_Msk (0x3UL << DMA_CCR_MSIZE_Pos) /*!< 0x00000C00 */ +#define DMA_CCR_MSIZE DMA_CCR_MSIZE_Msk /*!< MSIZE[1:0] bits (Memory size) */ +#define DMA_CCR_MSIZE_0 (0x1UL << DMA_CCR_MSIZE_Pos) /*!< 0x00000400 */ +#define DMA_CCR_MSIZE_1 (0x2UL << DMA_CCR_MSIZE_Pos) /*!< 0x00000800 */ + +#define DMA_CCR_PL_Pos (12U) +#define DMA_CCR_PL_Msk (0x3UL << DMA_CCR_PL_Pos) /*!< 0x00003000 */ +#define DMA_CCR_PL DMA_CCR_PL_Msk /*!< PL[1:0] bits(Channel Priority level)*/ +#define DMA_CCR_PL_0 (0x1UL << DMA_CCR_PL_Pos) /*!< 0x00001000 */ +#define DMA_CCR_PL_1 (0x2UL << DMA_CCR_PL_Pos) /*!< 0x00002000 */ + +#define DMA_CCR_MEM2MEM_Pos (14U) +#define DMA_CCR_MEM2MEM_Msk (0x1UL << DMA_CCR_MEM2MEM_Pos) /*!< 0x00004000 */ +#define DMA_CCR_MEM2MEM DMA_CCR_MEM2MEM_Msk /*!< Memory to memory mode */ + +/****************** Bit definition for DMA_CNDTR register *******************/ +#define DMA_CNDTR_NDT_Pos (0U) +#define DMA_CNDTR_NDT_Msk (0xFFFFUL << DMA_CNDTR_NDT_Pos) /*!< 0x0000FFFF */ +#define DMA_CNDTR_NDT DMA_CNDTR_NDT_Msk /*!< Number of data to Transfer */ + +/****************** Bit definition for DMA_CPAR register ********************/ +#define DMA_CPAR_PA_Pos (0U) +#define DMA_CPAR_PA_Msk (0xFFFFFFFFUL << DMA_CPAR_PA_Pos) /*!< 0xFFFFFFFF */ +#define DMA_CPAR_PA DMA_CPAR_PA_Msk /*!< Peripheral Address */ + +/****************** Bit definition for DMA_CMAR register ********************/ +#define DMA_CMAR_MA_Pos (0U) +#define DMA_CMAR_MA_Msk (0xFFFFFFFFUL << DMA_CMAR_MA_Pos) /*!< 0xFFFFFFFF */ +#define DMA_CMAR_MA DMA_CMAR_MA_Msk /*!< Memory Address */ + +/******************************************************************************/ +/* */ +/* DMAMUX Controller */ +/* */ +/******************************************************************************/ +/******************** Bits definition for DMAMUX_CxCR register **************/ +#define DMAMUX_CxCR_DMAREQ_ID_Pos (0U) +#define DMAMUX_CxCR_DMAREQ_ID_Msk (0x3FUL << DMAMUX_CxCR_DMAREQ_ID_Pos) /*!< 0x0000003F */ +#define DMAMUX_CxCR_DMAREQ_ID DMAMUX_CxCR_DMAREQ_ID_Msk /*!< DMA Request ID */ +#define DMAMUX_CxCR_DMAREQ_ID_0 (0x01UL << DMAMUX_CxCR_DMAREQ_ID_Pos) /*!< 0x00000001 */ +#define DMAMUX_CxCR_DMAREQ_ID_1 (0x02UL << DMAMUX_CxCR_DMAREQ_ID_Pos) /*!< 0x00000002 */ +#define DMAMUX_CxCR_DMAREQ_ID_2 (0x04UL << DMAMUX_CxCR_DMAREQ_ID_Pos) /*!< 0x00000004 */ +#define DMAMUX_CxCR_DMAREQ_ID_3 (0x08UL << DMAMUX_CxCR_DMAREQ_ID_Pos) /*!< 0x00000008 */ +#define DMAMUX_CxCR_DMAREQ_ID_4 (0x10UL << DMAMUX_CxCR_DMAREQ_ID_Pos) /*!< 0x00000010 */ +#define DMAMUX_CxCR_DMAREQ_ID_5 (0x20UL << DMAMUX_CxCR_DMAREQ_ID_Pos) /*!< 0x00000020 */ +#define DMAMUX_CxCR_DMAREQ_ID_6 (0x40UL << DMAMUX_CxCR_DMAREQ_ID_Pos) /*!< 0x00000040 */ +#define DMAMUX_CxCR_SOIE_Pos (8U) +#define DMAMUX_CxCR_SOIE_Msk (0x1UL << DMAMUX_CxCR_SOIE_Pos) /*!< 0x00000100 */ +#define DMAMUX_CxCR_SOIE DMAMUX_CxCR_SOIE_Msk /*!< Synchro overrun interrupt enable */ +#define DMAMUX_CxCR_EGE_Pos (9U) +#define DMAMUX_CxCR_EGE_Msk (0x1UL << DMAMUX_CxCR_EGE_Pos) /*!< 0x00000200 */ +#define DMAMUX_CxCR_EGE DMAMUX_CxCR_EGE_Msk /*!< Event generation interrupt enable */ +#define DMAMUX_CxCR_SE_Pos (16U) +#define DMAMUX_CxCR_SE_Msk (0x1UL << DMAMUX_CxCR_SE_Pos) /*!< 0x00010000 */ +#define DMAMUX_CxCR_SE DMAMUX_CxCR_SE_Msk /*!< Synchronization enable */ +#define DMAMUX_CxCR_SPOL_Pos (17U) +#define DMAMUX_CxCR_SPOL_Msk (0x3UL << DMAMUX_CxCR_SPOL_Pos) /*!< 0x00060000 */ +#define DMAMUX_CxCR_SPOL DMAMUX_CxCR_SPOL_Msk /*!< Synchronization polarity */ +#define DMAMUX_CxCR_SPOL_0 (0x1UL << DMAMUX_CxCR_SPOL_Pos) /*!< 0x00020000 */ +#define DMAMUX_CxCR_SPOL_1 (0x2UL << DMAMUX_CxCR_SPOL_Pos) /*!< 0x00040000 */ +#define DMAMUX_CxCR_NBREQ_Pos (19U) +#define DMAMUX_CxCR_NBREQ_Msk (0x1FUL << DMAMUX_CxCR_NBREQ_Pos) /*!< 0x00F80000 */ +#define DMAMUX_CxCR_NBREQ DMAMUX_CxCR_NBREQ_Msk /*!< Number of request */ +#define DMAMUX_CxCR_NBREQ_0 (0x01UL << DMAMUX_CxCR_NBREQ_Pos) /*!< 0x00080000 */ +#define DMAMUX_CxCR_NBREQ_1 (0x02UL << DMAMUX_CxCR_NBREQ_Pos) /*!< 0x00100000 */ +#define DMAMUX_CxCR_NBREQ_2 (0x04UL << DMAMUX_CxCR_NBREQ_Pos) /*!< 0x00200000 */ +#define DMAMUX_CxCR_NBREQ_3 (0x08UL << DMAMUX_CxCR_NBREQ_Pos) /*!< 0x00400000 */ +#define DMAMUX_CxCR_NBREQ_4 (0x10UL << DMAMUX_CxCR_NBREQ_Pos) /*!< 0x00800000 */ +#define DMAMUX_CxCR_SYNC_ID_Pos (24U) +#define DMAMUX_CxCR_SYNC_ID_Msk (0x1FUL << DMAMUX_CxCR_SYNC_ID_Pos) /*!< 0x1F000000 */ +#define DMAMUX_CxCR_SYNC_ID DMAMUX_CxCR_SYNC_ID_Msk /*!< Synchronization ID */ +#define DMAMUX_CxCR_SYNC_ID_0 (0x01UL << DMAMUX_CxCR_SYNC_ID_Pos) /*!< 0x01000000 */ +#define DMAMUX_CxCR_SYNC_ID_1 (0x02UL << DMAMUX_CxCR_SYNC_ID_Pos) /*!< 0x02000000 */ +#define DMAMUX_CxCR_SYNC_ID_2 (0x04UL << DMAMUX_CxCR_SYNC_ID_Pos) /*!< 0x04000000 */ +#define DMAMUX_CxCR_SYNC_ID_3 (0x08UL << DMAMUX_CxCR_SYNC_ID_Pos) /*!< 0x08000000 */ +#define DMAMUX_CxCR_SYNC_ID_4 (0x10UL << DMAMUX_CxCR_SYNC_ID_Pos) /*!< 0x10000000 */ + +/******************* Bits definition for DMAMUX_CSR register **************/ +#define DMAMUX_CSR_SOF0_Pos (0U) +#define DMAMUX_CSR_SOF0_Msk (0x1UL << DMAMUX_CSR_SOF0_Pos) /*!< 0x00000001 */ +#define DMAMUX_CSR_SOF0 DMAMUX_CSR_SOF0_Msk /*!< Synchronization Overrun Flag 0 */ +#define DMAMUX_CSR_SOF1_Pos (1U) +#define DMAMUX_CSR_SOF1_Msk (0x1UL << DMAMUX_CSR_SOF1_Pos) /*!< 0x00000002 */ +#define DMAMUX_CSR_SOF1 DMAMUX_CSR_SOF1_Msk /*!< Synchronization Overrun Flag 1 */ +#define DMAMUX_CSR_SOF2_Pos (2U) +#define DMAMUX_CSR_SOF2_Msk (0x1UL << DMAMUX_CSR_SOF2_Pos) /*!< 0x00000004 */ +#define DMAMUX_CSR_SOF2 DMAMUX_CSR_SOF2_Msk /*!< Synchronization Overrun Flag 2 */ +#define DMAMUX_CSR_SOF3_Pos (3U) +#define DMAMUX_CSR_SOF3_Msk (0x1UL << DMAMUX_CSR_SOF3_Pos) /*!< 0x00000008 */ +#define DMAMUX_CSR_SOF3 DMAMUX_CSR_SOF3_Msk /*!< Synchronization Overrun Flag 3 */ +#define DMAMUX_CSR_SOF4_Pos (4U) +#define DMAMUX_CSR_SOF4_Msk (0x1UL << DMAMUX_CSR_SOF4_Pos) /*!< 0x00000010 */ +#define DMAMUX_CSR_SOF4 DMAMUX_CSR_SOF4_Msk /*!< Synchronization Overrun Flag 4 */ +#define DMAMUX_CSR_SOF5_Pos (5U) +#define DMAMUX_CSR_SOF5_Msk (0x1UL << DMAMUX_CSR_SOF5_Pos) /*!< 0x00000020 */ +#define DMAMUX_CSR_SOF5 DMAMUX_CSR_SOF5_Msk /*!< Synchronization Overrun Flag 5 */ +#define DMAMUX_CSR_SOF6_Pos (6U) +#define DMAMUX_CSR_SOF6_Msk (0x1UL << DMAMUX_CSR_SOF6_Pos) /*!< 0x00000040 */ +#define DMAMUX_CSR_SOF6 DMAMUX_CSR_SOF6_Msk /*!< Synchronization Overrun Flag 6 */ + +/******************** Bits definition for DMAMUX_CFR register **************/ +#define DMAMUX_CFR_CSOF0_Pos (0U) +#define DMAMUX_CFR_CSOF0_Msk (0x1UL << DMAMUX_CFR_CSOF0_Pos) /*!< 0x00000001 */ +#define DMAMUX_CFR_CSOF0 DMAMUX_CFR_CSOF0_Msk /*!< Clear Overrun Flag 0 */ +#define DMAMUX_CFR_CSOF1_Pos (1U) +#define DMAMUX_CFR_CSOF1_Msk (0x1UL << DMAMUX_CFR_CSOF1_Pos) /*!< 0x00000002 */ +#define DMAMUX_CFR_CSOF1 DMAMUX_CFR_CSOF1_Msk /*!< Clear Overrun Flag 1 */ +#define DMAMUX_CFR_CSOF2_Pos (2U) +#define DMAMUX_CFR_CSOF2_Msk (0x1UL << DMAMUX_CFR_CSOF2_Pos) /*!< 0x00000004 */ +#define DMAMUX_CFR_CSOF2 DMAMUX_CFR_CSOF2_Msk /*!< Clear Overrun Flag 2 */ +#define DMAMUX_CFR_CSOF3_Pos (3U) +#define DMAMUX_CFR_CSOF3_Msk (0x1UL << DMAMUX_CFR_CSOF3_Pos) /*!< 0x00000008 */ +#define DMAMUX_CFR_CSOF3 DMAMUX_CFR_CSOF3_Msk /*!< Clear Overrun Flag 3 */ +#define DMAMUX_CFR_CSOF4_Pos (4U) +#define DMAMUX_CFR_CSOF4_Msk (0x1UL << DMAMUX_CFR_CSOF4_Pos) /*!< 0x00000010 */ +#define DMAMUX_CFR_CSOF4 DMAMUX_CFR_CSOF4_Msk /*!< Clear Overrun Flag 4 */ +#define DMAMUX_CFR_CSOF5_Pos (5U) +#define DMAMUX_CFR_CSOF5_Msk (0x1UL << DMAMUX_CFR_CSOF5_Pos) /*!< 0x00000020 */ +#define DMAMUX_CFR_CSOF5 DMAMUX_CFR_CSOF5_Msk /*!< Clear Overrun Flag 5 */ +#define DMAMUX_CFR_CSOF6_Pos (6U) +#define DMAMUX_CFR_CSOF6_Msk (0x1UL << DMAMUX_CFR_CSOF6_Pos) /*!< 0x00000040 */ +#define DMAMUX_CFR_CSOF6 DMAMUX_CFR_CSOF6_Msk /*!< Clear Overrun Flag 6 */ + +/******************** Bits definition for DMAMUX_RGxCR register ************/ +#define DMAMUX_RGxCR_SIG_ID_Pos (0U) +#define DMAMUX_RGxCR_SIG_ID_Msk (0x1FUL << DMAMUX_RGxCR_SIG_ID_Pos) /*!< 0x0000001F */ +#define DMAMUX_RGxCR_SIG_ID DMAMUX_RGxCR_SIG_ID_Msk /*!< Signal ID */ +#define DMAMUX_RGxCR_SIG_ID_0 (0x01UL << DMAMUX_RGxCR_SIG_ID_Pos) /*!< 0x00000001 */ +#define DMAMUX_RGxCR_SIG_ID_1 (0x02UL << DMAMUX_RGxCR_SIG_ID_Pos) /*!< 0x00000002 */ +#define DMAMUX_RGxCR_SIG_ID_2 (0x04UL << DMAMUX_RGxCR_SIG_ID_Pos) /*!< 0x00000004 */ +#define DMAMUX_RGxCR_SIG_ID_3 (0x08UL << DMAMUX_RGxCR_SIG_ID_Pos) /*!< 0x00000008 */ +#define DMAMUX_RGxCR_SIG_ID_4 (0x10UL << DMAMUX_RGxCR_SIG_ID_Pos) /*!< 0x00000010 */ +#define DMAMUX_RGxCR_OIE_Pos (8U) +#define DMAMUX_RGxCR_OIE_Msk (0x1UL << DMAMUX_RGxCR_OIE_Pos) /*!< 0x00000100 */ +#define DMAMUX_RGxCR_OIE DMAMUX_RGxCR_OIE_Msk /*!< Overrun interrupt enable */ +#define DMAMUX_RGxCR_GE_Pos (16U) +#define DMAMUX_RGxCR_GE_Msk (0x1UL << DMAMUX_RGxCR_GE_Pos) /*!< 0x00010000 */ +#define DMAMUX_RGxCR_GE DMAMUX_RGxCR_GE_Msk /*!< Generation enable */ +#define DMAMUX_RGxCR_GPOL_Pos (17U) +#define DMAMUX_RGxCR_GPOL_Msk (0x3UL << DMAMUX_RGxCR_GPOL_Pos) /*!< 0x00060000 */ +#define DMAMUX_RGxCR_GPOL DMAMUX_RGxCR_GPOL_Msk /*!< Generation polarity */ +#define DMAMUX_RGxCR_GPOL_0 (0x1UL << DMAMUX_RGxCR_GPOL_Pos) /*!< 0x00020000 */ +#define DMAMUX_RGxCR_GPOL_1 (0x2UL << DMAMUX_RGxCR_GPOL_Pos) /*!< 0x00040000 */ +#define DMAMUX_RGxCR_GNBREQ_Pos (19U) +#define DMAMUX_RGxCR_GNBREQ_Msk (0x1FUL << DMAMUX_RGxCR_GNBREQ_Pos) /*!< 0x00F80000 */ +#define DMAMUX_RGxCR_GNBREQ DMAMUX_RGxCR_GNBREQ_Msk /*!< Number of request */ +#define DMAMUX_RGxCR_GNBREQ_0 (0x01UL << DMAMUX_RGxCR_GNBREQ_Pos) /*!< 0x00080000 */ +#define DMAMUX_RGxCR_GNBREQ_1 (0x02UL << DMAMUX_RGxCR_GNBREQ_Pos) /*!< 0x00100000 */ +#define DMAMUX_RGxCR_GNBREQ_2 (0x04UL << DMAMUX_RGxCR_GNBREQ_Pos) /*!< 0x00200000 */ +#define DMAMUX_RGxCR_GNBREQ_3 (0x08UL << DMAMUX_RGxCR_GNBREQ_Pos) /*!< 0x00400000 */ +#define DMAMUX_RGxCR_GNBREQ_4 (0x10UL << DMAMUX_RGxCR_GNBREQ_Pos) /*!< 0x00800000 */ + +/******************** Bits definition for DMAMUX_RGSR register **************/ +#define DMAMUX_RGSR_OF0_Pos (0U) +#define DMAMUX_RGSR_OF0_Msk (0x1UL << DMAMUX_RGSR_OF0_Pos) /*!< 0x00000001 */ +#define DMAMUX_RGSR_OF0 DMAMUX_RGSR_OF0_Msk /*!< Overrun flag 0 */ +#define DMAMUX_RGSR_OF1_Pos (1U) +#define DMAMUX_RGSR_OF1_Msk (0x1UL << DMAMUX_RGSR_OF1_Pos) /*!< 0x00000002 */ +#define DMAMUX_RGSR_OF1 DMAMUX_RGSR_OF1_Msk /*!< Overrun flag 1 */ +#define DMAMUX_RGSR_OF2_Pos (2U) +#define DMAMUX_RGSR_OF2_Msk (0x1UL << DMAMUX_RGSR_OF2_Pos) /*!< 0x00000004 */ +#define DMAMUX_RGSR_OF2 DMAMUX_RGSR_OF2_Msk /*!< Overrun flag 2 */ +#define DMAMUX_RGSR_OF3_Pos (3U) +#define DMAMUX_RGSR_OF3_Msk (0x1UL << DMAMUX_RGSR_OF3_Pos) /*!< 0x00000008 */ +#define DMAMUX_RGSR_OF3 DMAMUX_RGSR_OF3_Msk /*!< Overrun flag 3 */ + +/******************** Bits definition for DMAMUX_RGCFR register **************/ +#define DMAMUX_RGCFR_COF0_Pos (0U) +#define DMAMUX_RGCFR_COF0_Msk (0x1UL << DMAMUX_RGCFR_COF0_Pos) /*!< 0x00000001 */ +#define DMAMUX_RGCFR_COF0 DMAMUX_RGCFR_COF0_Msk /*!< Clear Overrun flag 0 */ +#define DMAMUX_RGCFR_COF1_Pos (1U) +#define DMAMUX_RGCFR_COF1_Msk (0x1UL << DMAMUX_RGCFR_COF1_Pos) /*!< 0x00000002 */ +#define DMAMUX_RGCFR_COF1 DMAMUX_RGCFR_COF1_Msk /*!< Clear Overrun flag 1 */ +#define DMAMUX_RGCFR_COF2_Pos (2U) +#define DMAMUX_RGCFR_COF2_Msk (0x1UL << DMAMUX_RGCFR_COF2_Pos) /*!< 0x00000004 */ +#define DMAMUX_RGCFR_COF2 DMAMUX_RGCFR_COF2_Msk /*!< Clear Overrun flag 2 */ +#define DMAMUX_RGCFR_COF3_Pos (3U) +#define DMAMUX_RGCFR_COF3_Msk (0x1UL << DMAMUX_RGCFR_COF3_Pos) /*!< 0x00000008 */ +#define DMAMUX_RGCFR_COF3 DMAMUX_RGCFR_COF3_Msk /*!< Clear Overrun flag 3 */ + +/******************************************************************************/ +/* */ +/* External Interrupt/Event Controller */ +/* */ +/******************************************************************************/ +/****************** Bit definition for EXTI_RTSR1 register ******************/ +#define EXTI_RTSR1_RT0_Pos (0U) +#define EXTI_RTSR1_RT0_Msk (0x1UL << EXTI_RTSR1_RT0_Pos) /*!< 0x00000001 */ +#define EXTI_RTSR1_RT0 EXTI_RTSR1_RT0_Msk /*!< Rising trigger configuration for input line 0 */ +#define EXTI_RTSR1_RT1_Pos (1U) +#define EXTI_RTSR1_RT1_Msk (0x1UL << EXTI_RTSR1_RT1_Pos) /*!< 0x00000002 */ +#define EXTI_RTSR1_RT1 EXTI_RTSR1_RT1_Msk /*!< Rising trigger configuration for input line 1 */ +#define EXTI_RTSR1_RT2_Pos (2U) +#define EXTI_RTSR1_RT2_Msk (0x1UL << EXTI_RTSR1_RT2_Pos) /*!< 0x00000004 */ +#define EXTI_RTSR1_RT2 EXTI_RTSR1_RT2_Msk /*!< Rising trigger configuration for input line 2 */ +#define EXTI_RTSR1_RT3_Pos (3U) +#define EXTI_RTSR1_RT3_Msk (0x1UL << EXTI_RTSR1_RT3_Pos) /*!< 0x00000008 */ +#define EXTI_RTSR1_RT3 EXTI_RTSR1_RT3_Msk /*!< Rising trigger configuration for input line 3 */ +#define EXTI_RTSR1_RT4_Pos (4U) +#define EXTI_RTSR1_RT4_Msk (0x1UL << EXTI_RTSR1_RT4_Pos) /*!< 0x00000010 */ +#define EXTI_RTSR1_RT4 EXTI_RTSR1_RT4_Msk /*!< Rising trigger configuration for input line 4 */ +#define EXTI_RTSR1_RT5_Pos (5U) +#define EXTI_RTSR1_RT5_Msk (0x1UL << EXTI_RTSR1_RT5_Pos) /*!< 0x00000020 */ +#define EXTI_RTSR1_RT5 EXTI_RTSR1_RT5_Msk /*!< Rising trigger configuration for input line 5 */ +#define EXTI_RTSR1_RT6_Pos (6U) +#define EXTI_RTSR1_RT6_Msk (0x1UL << EXTI_RTSR1_RT6_Pos) /*!< 0x00000040 */ +#define EXTI_RTSR1_RT6 EXTI_RTSR1_RT6_Msk /*!< Rising trigger configuration for input line 6 */ +#define EXTI_RTSR1_RT7_Pos (7U) +#define EXTI_RTSR1_RT7_Msk (0x1UL << EXTI_RTSR1_RT7_Pos) /*!< 0x00000080 */ +#define EXTI_RTSR1_RT7 EXTI_RTSR1_RT7_Msk /*!< Rising trigger configuration for input line 7 */ +#define EXTI_RTSR1_RT8_Pos (8U) +#define EXTI_RTSR1_RT8_Msk (0x1UL << EXTI_RTSR1_RT8_Pos) /*!< 0x00000100 */ +#define EXTI_RTSR1_RT8 EXTI_RTSR1_RT8_Msk /*!< Rising trigger configuration for input line 8 */ +#define EXTI_RTSR1_RT9_Pos (9U) +#define EXTI_RTSR1_RT9_Msk (0x1UL << EXTI_RTSR1_RT9_Pos) /*!< 0x00000200 */ +#define EXTI_RTSR1_RT9 EXTI_RTSR1_RT9_Msk /*!< Rising trigger configuration for input line 9 */ +#define EXTI_RTSR1_RT10_Pos (10U) +#define EXTI_RTSR1_RT10_Msk (0x1UL << EXTI_RTSR1_RT10_Pos) /*!< 0x00000400 */ +#define EXTI_RTSR1_RT10 EXTI_RTSR1_RT10_Msk /*!< Rising trigger configuration for input line 10 */ +#define EXTI_RTSR1_RT11_Pos (11U) +#define EXTI_RTSR1_RT11_Msk (0x1UL << EXTI_RTSR1_RT11_Pos) /*!< 0x00000800 */ +#define EXTI_RTSR1_RT11 EXTI_RTSR1_RT11_Msk /*!< Rising trigger configuration for input line 11 */ +#define EXTI_RTSR1_RT12_Pos (12U) +#define EXTI_RTSR1_RT12_Msk (0x1UL << EXTI_RTSR1_RT12_Pos) /*!< 0x00001000 */ +#define EXTI_RTSR1_RT12 EXTI_RTSR1_RT12_Msk /*!< Rising trigger configuration for input line 12 */ +#define EXTI_RTSR1_RT13_Pos (13U) +#define EXTI_RTSR1_RT13_Msk (0x1UL << EXTI_RTSR1_RT13_Pos) /*!< 0x00002000 */ +#define EXTI_RTSR1_RT13 EXTI_RTSR1_RT13_Msk /*!< Rising trigger configuration for input line 13 */ +#define EXTI_RTSR1_RT14_Pos (14U) +#define EXTI_RTSR1_RT14_Msk (0x1UL << EXTI_RTSR1_RT14_Pos) /*!< 0x00004000 */ +#define EXTI_RTSR1_RT14 EXTI_RTSR1_RT14_Msk /*!< Rising trigger configuration for input line 14 */ +#define EXTI_RTSR1_RT15_Pos (15U) +#define EXTI_RTSR1_RT15_Msk (0x1UL << EXTI_RTSR1_RT15_Pos) /*!< 0x00008000 */ +#define EXTI_RTSR1_RT15 EXTI_RTSR1_RT15_Msk /*!< Rising trigger configuration for input line 15 */ + +/****************** Bit definition for EXTI_FTSR1 register ******************/ +#define EXTI_FTSR1_FT0_Pos (0U) +#define EXTI_FTSR1_FT0_Msk (0x1UL << EXTI_FTSR1_FT0_Pos) /*!< 0x00000001 */ +#define EXTI_FTSR1_FT0 EXTI_FTSR1_FT0_Msk /*!< Falling trigger configuration for input line 0 */ +#define EXTI_FTSR1_FT1_Pos (1U) +#define EXTI_FTSR1_FT1_Msk (0x1UL << EXTI_FTSR1_FT1_Pos) /*!< 0x00000002 */ +#define EXTI_FTSR1_FT1 EXTI_FTSR1_FT1_Msk /*!< Falling trigger configuration for input line 1 */ +#define EXTI_FTSR1_FT2_Pos (2U) +#define EXTI_FTSR1_FT2_Msk (0x1UL << EXTI_FTSR1_FT2_Pos) /*!< 0x00000004 */ +#define EXTI_FTSR1_FT2 EXTI_FTSR1_FT2_Msk /*!< Falling trigger configuration for input line 2 */ +#define EXTI_FTSR1_FT3_Pos (3U) +#define EXTI_FTSR1_FT3_Msk (0x1UL << EXTI_FTSR1_FT3_Pos) /*!< 0x00000008 */ +#define EXTI_FTSR1_FT3 EXTI_FTSR1_FT3_Msk /*!< Falling trigger configuration for input line 3 */ +#define EXTI_FTSR1_FT4_Pos (4U) +#define EXTI_FTSR1_FT4_Msk (0x1UL << EXTI_FTSR1_FT4_Pos) /*!< 0x00000010 */ +#define EXTI_FTSR1_FT4 EXTI_FTSR1_FT4_Msk /*!< Falling trigger configuration for input line 4 */ +#define EXTI_FTSR1_FT5_Pos (5U) +#define EXTI_FTSR1_FT5_Msk (0x1UL << EXTI_FTSR1_FT5_Pos) /*!< 0x00000020 */ +#define EXTI_FTSR1_FT5 EXTI_FTSR1_FT5_Msk /*!< Falling trigger configuration for input line 5 */ +#define EXTI_FTSR1_FT6_Pos (6U) +#define EXTI_FTSR1_FT6_Msk (0x1UL << EXTI_FTSR1_FT6_Pos) /*!< 0x00000040 */ +#define EXTI_FTSR1_FT6 EXTI_FTSR1_FT6_Msk /*!< Falling trigger configuration for input line 6 */ +#define EXTI_FTSR1_FT7_Pos (7U) +#define EXTI_FTSR1_FT7_Msk (0x1UL << EXTI_FTSR1_FT7_Pos) /*!< 0x00000080 */ +#define EXTI_FTSR1_FT7 EXTI_FTSR1_FT7_Msk /*!< Falling trigger configuration for input line 7 */ +#define EXTI_FTSR1_FT8_Pos (8U) +#define EXTI_FTSR1_FT8_Msk (0x1UL << EXTI_FTSR1_FT8_Pos) /*!< 0x00000100 */ +#define EXTI_FTSR1_FT8 EXTI_FTSR1_FT8_Msk /*!< Falling trigger configuration for input line 8 */ +#define EXTI_FTSR1_FT9_Pos (9U) +#define EXTI_FTSR1_FT9_Msk (0x1UL << EXTI_FTSR1_FT9_Pos) /*!< 0x00000200 */ +#define EXTI_FTSR1_FT9 EXTI_FTSR1_FT9_Msk /*!< Falling trigger configuration for input line 9 */ +#define EXTI_FTSR1_FT10_Pos (10U) +#define EXTI_FTSR1_FT10_Msk (0x1UL << EXTI_FTSR1_FT10_Pos) /*!< 0x00000400 */ +#define EXTI_FTSR1_FT10 EXTI_FTSR1_FT10_Msk /*!< Falling trigger configuration for input line 10 */ +#define EXTI_FTSR1_FT11_Pos (11U) +#define EXTI_FTSR1_FT11_Msk (0x1UL << EXTI_FTSR1_FT11_Pos) /*!< 0x00000800 */ +#define EXTI_FTSR1_FT11 EXTI_FTSR1_FT11_Msk /*!< Falling trigger configuration for input line 11 */ +#define EXTI_FTSR1_FT12_Pos (12U) +#define EXTI_FTSR1_FT12_Msk (0x1UL << EXTI_FTSR1_FT12_Pos) /*!< 0x00001000 */ +#define EXTI_FTSR1_FT12 EXTI_FTSR1_FT12_Msk /*!< Falling trigger configuration for input line 12 */ +#define EXTI_FTSR1_FT13_Pos (13U) +#define EXTI_FTSR1_FT13_Msk (0x1UL << EXTI_FTSR1_FT13_Pos) /*!< 0x00002000 */ +#define EXTI_FTSR1_FT13 EXTI_FTSR1_FT13_Msk /*!< Falling trigger configuration for input line 13 */ +#define EXTI_FTSR1_FT14_Pos (14U) +#define EXTI_FTSR1_FT14_Msk (0x1UL << EXTI_FTSR1_FT14_Pos) /*!< 0x00004000 */ +#define EXTI_FTSR1_FT14 EXTI_FTSR1_FT14_Msk /*!< Falling trigger configuration for input line 14 */ +#define EXTI_FTSR1_FT15_Pos (15U) +#define EXTI_FTSR1_FT15_Msk (0x1UL << EXTI_FTSR1_FT15_Pos) /*!< 0x00008000 */ +#define EXTI_FTSR1_FT15 EXTI_FTSR1_FT15_Msk /*!< Falling trigger configuration for input line 15 */ + +/****************** Bit definition for EXTI_SWIER1 register *****************/ +#define EXTI_SWIER1_SWI0_Pos (0U) +#define EXTI_SWIER1_SWI0_Msk (0x1UL << EXTI_SWIER1_SWI0_Pos) /*!< 0x00000001 */ +#define EXTI_SWIER1_SWI0 EXTI_SWIER1_SWI0_Msk /*!< Software Interrupt on line 0 */ +#define EXTI_SWIER1_SWI1_Pos (1U) +#define EXTI_SWIER1_SWI1_Msk (0x1UL << EXTI_SWIER1_SWI1_Pos) /*!< 0x00000002 */ +#define EXTI_SWIER1_SWI1 EXTI_SWIER1_SWI1_Msk /*!< Software Interrupt on line 1 */ +#define EXTI_SWIER1_SWI2_Pos (2U) +#define EXTI_SWIER1_SWI2_Msk (0x1UL << EXTI_SWIER1_SWI2_Pos) /*!< 0x00000004 */ +#define EXTI_SWIER1_SWI2 EXTI_SWIER1_SWI2_Msk /*!< Software Interrupt on line 2 */ +#define EXTI_SWIER1_SWI3_Pos (3U) +#define EXTI_SWIER1_SWI3_Msk (0x1UL << EXTI_SWIER1_SWI3_Pos) /*!< 0x00000008 */ +#define EXTI_SWIER1_SWI3 EXTI_SWIER1_SWI3_Msk /*!< Software Interrupt on line 3 */ +#define EXTI_SWIER1_SWI4_Pos (4U) +#define EXTI_SWIER1_SWI4_Msk (0x1UL << EXTI_SWIER1_SWI4_Pos) /*!< 0x00000010 */ +#define EXTI_SWIER1_SWI4 EXTI_SWIER1_SWI4_Msk /*!< Software Interrupt on line 4 */ +#define EXTI_SWIER1_SWI5_Pos (5U) +#define EXTI_SWIER1_SWI5_Msk (0x1UL << EXTI_SWIER1_SWI5_Pos) /*!< 0x00000020 */ +#define EXTI_SWIER1_SWI5 EXTI_SWIER1_SWI5_Msk /*!< Software Interrupt on line 5 */ +#define EXTI_SWIER1_SWI6_Pos (6U) +#define EXTI_SWIER1_SWI6_Msk (0x1UL << EXTI_SWIER1_SWI6_Pos) /*!< 0x00000040 */ +#define EXTI_SWIER1_SWI6 EXTI_SWIER1_SWI6_Msk /*!< Software Interrupt on line 6 */ +#define EXTI_SWIER1_SWI7_Pos (7U) +#define EXTI_SWIER1_SWI7_Msk (0x1UL << EXTI_SWIER1_SWI7_Pos) /*!< 0x00000080 */ +#define EXTI_SWIER1_SWI7 EXTI_SWIER1_SWI7_Msk /*!< Software Interrupt on line 7 */ +#define EXTI_SWIER1_SWI8_Pos (8U) +#define EXTI_SWIER1_SWI8_Msk (0x1UL << EXTI_SWIER1_SWI8_Pos) /*!< 0x00000100 */ +#define EXTI_SWIER1_SWI8 EXTI_SWIER1_SWI8_Msk /*!< Software Interrupt on line 8 */ +#define EXTI_SWIER1_SWI9_Pos (9U) +#define EXTI_SWIER1_SWI9_Msk (0x1UL << EXTI_SWIER1_SWI9_Pos) /*!< 0x00000200 */ +#define EXTI_SWIER1_SWI9 EXTI_SWIER1_SWI9_Msk /*!< Software Interrupt on line 9 */ +#define EXTI_SWIER1_SWI10_Pos (10U) +#define EXTI_SWIER1_SWI10_Msk (0x1UL << EXTI_SWIER1_SWI10_Pos) /*!< 0x00000400 */ +#define EXTI_SWIER1_SWI10 EXTI_SWIER1_SWI10_Msk /*!< Software Interrupt on line 10 */ +#define EXTI_SWIER1_SWI11_Pos (11U) +#define EXTI_SWIER1_SWI11_Msk (0x1UL << EXTI_SWIER1_SWI11_Pos) /*!< 0x00000800 */ +#define EXTI_SWIER1_SWI11 EXTI_SWIER1_SWI11_Msk /*!< Software Interrupt on line 11 */ +#define EXTI_SWIER1_SWI12_Pos (12U) +#define EXTI_SWIER1_SWI12_Msk (0x1UL << EXTI_SWIER1_SWI12_Pos) /*!< 0x00001000 */ +#define EXTI_SWIER1_SWI12 EXTI_SWIER1_SWI12_Msk /*!< Software Interrupt on line 12 */ +#define EXTI_SWIER1_SWI13_Pos (13U) +#define EXTI_SWIER1_SWI13_Msk (0x1UL << EXTI_SWIER1_SWI13_Pos) /*!< 0x00002000 */ +#define EXTI_SWIER1_SWI13 EXTI_SWIER1_SWI13_Msk /*!< Software Interrupt on line 13 */ +#define EXTI_SWIER1_SWI14_Pos (14U) +#define EXTI_SWIER1_SWI14_Msk (0x1UL << EXTI_SWIER1_SWI14_Pos) /*!< 0x00004000 */ +#define EXTI_SWIER1_SWI14 EXTI_SWIER1_SWI14_Msk /*!< Software Interrupt on line 14 */ +#define EXTI_SWIER1_SWI15_Pos (15U) +#define EXTI_SWIER1_SWI15_Msk (0x1UL << EXTI_SWIER1_SWI15_Pos) /*!< 0x00008000 */ +#define EXTI_SWIER1_SWI15 EXTI_SWIER1_SWI15_Msk /*!< Software Interrupt on line 15 */ + +/******************* Bit definition for EXTI_RPR1 register ******************/ +#define EXTI_RPR1_RPIF0_Pos (0U) +#define EXTI_RPR1_RPIF0_Msk (0x1UL << EXTI_RPR1_RPIF0_Pos) /*!< 0x00000001 */ +#define EXTI_RPR1_RPIF0 EXTI_RPR1_RPIF0_Msk /*!< Rising Pending Interrupt Flag on line 0 */ +#define EXTI_RPR1_RPIF1_Pos (1U) +#define EXTI_RPR1_RPIF1_Msk (0x1UL << EXTI_RPR1_RPIF1_Pos) /*!< 0x00000002 */ +#define EXTI_RPR1_RPIF1 EXTI_RPR1_RPIF1_Msk /*!< Rising Pending Interrupt Flag on line 1 */ +#define EXTI_RPR1_RPIF2_Pos (2U) +#define EXTI_RPR1_RPIF2_Msk (0x1UL << EXTI_RPR1_RPIF2_Pos) /*!< 0x00000004 */ +#define EXTI_RPR1_RPIF2 EXTI_RPR1_RPIF2_Msk /*!< Rising Pending Interrupt Flag on line 2 */ +#define EXTI_RPR1_RPIF3_Pos (3U) +#define EXTI_RPR1_RPIF3_Msk (0x1UL << EXTI_RPR1_RPIF3_Pos) /*!< 0x00000008 */ +#define EXTI_RPR1_RPIF3 EXTI_RPR1_RPIF3_Msk /*!< Rising Pending Interrupt Flag on line 3 */ +#define EXTI_RPR1_RPIF4_Pos (4U) +#define EXTI_RPR1_RPIF4_Msk (0x1UL << EXTI_RPR1_RPIF4_Pos) /*!< 0x00000010 */ +#define EXTI_RPR1_RPIF4 EXTI_RPR1_RPIF4_Msk /*!< Rising Pending Interrupt Flag on line 4 */ +#define EXTI_RPR1_RPIF5_Pos (5U) +#define EXTI_RPR1_RPIF5_Msk (0x1UL << EXTI_RPR1_RPIF5_Pos) /*!< 0x00000020 */ +#define EXTI_RPR1_RPIF5 EXTI_RPR1_RPIF5_Msk /*!< Rising Pending Interrupt Flag on line 5 */ +#define EXTI_RPR1_RPIF6_Pos (6U) +#define EXTI_RPR1_RPIF6_Msk (0x1UL << EXTI_RPR1_RPIF6_Pos) /*!< 0x00000040 */ +#define EXTI_RPR1_RPIF6 EXTI_RPR1_RPIF6_Msk /*!< Rising Pending Interrupt Flag on line 6 */ +#define EXTI_RPR1_RPIF7_Pos (7U) +#define EXTI_RPR1_RPIF7_Msk (0x1UL << EXTI_RPR1_RPIF7_Pos) /*!< 0x00000080 */ +#define EXTI_RPR1_RPIF7 EXTI_RPR1_RPIF7_Msk /*!< Rising Pending Interrupt Flag on line 7 */ +#define EXTI_RPR1_RPIF8_Pos (8U) +#define EXTI_RPR1_RPIF8_Msk (0x1UL << EXTI_RPR1_RPIF8_Pos) /*!< 0x00000100 */ +#define EXTI_RPR1_RPIF8 EXTI_RPR1_RPIF8_Msk /*!< Rising Pending Interrupt Flag on line 8 */ +#define EXTI_RPR1_RPIF9_Pos (9U) +#define EXTI_RPR1_RPIF9_Msk (0x1UL << EXTI_RPR1_RPIF9_Pos) /*!< 0x00000200 */ +#define EXTI_RPR1_RPIF9 EXTI_RPR1_RPIF9_Msk /*!< Rising Pending Interrupt Flag on line 9 */ +#define EXTI_RPR1_RPIF10_Pos (10U) +#define EXTI_RPR1_RPIF10_Msk (0x1UL << EXTI_RPR1_RPIF10_Pos) /*!< 0x00000400 */ +#define EXTI_RPR1_RPIF10 EXTI_RPR1_RPIF10_Msk /*!< Rising Pending Interrupt Flag on line 10 */ +#define EXTI_RPR1_RPIF11_Pos (11U) +#define EXTI_RPR1_RPIF11_Msk (0x1UL << EXTI_RPR1_RPIF11_Pos) /*!< 0x00000800 */ +#define EXTI_RPR1_RPIF11 EXTI_RPR1_RPIF11_Msk /*!< Rising Pending Interrupt Flag on line 11 */ +#define EXTI_RPR1_RPIF12_Pos (12U) +#define EXTI_RPR1_RPIF12_Msk (0x1UL << EXTI_RPR1_RPIF12_Pos) /*!< 0x00001000 */ +#define EXTI_RPR1_RPIF12 EXTI_RPR1_RPIF12_Msk /*!< Rising Pending Interrupt Flag on line 12 */ +#define EXTI_RPR1_RPIF13_Pos (13U) +#define EXTI_RPR1_RPIF13_Msk (0x1UL << EXTI_RPR1_RPIF13_Pos) /*!< 0x00002000 */ +#define EXTI_RPR1_RPIF13 EXTI_RPR1_RPIF13_Msk /*!< Rising Pending Interrupt Flag on line 13 */ +#define EXTI_RPR1_RPIF14_Pos (14U) +#define EXTI_RPR1_RPIF14_Msk (0x1UL << EXTI_RPR1_RPIF14_Pos) /*!< 0x00004000 */ +#define EXTI_RPR1_RPIF14 EXTI_RPR1_RPIF14_Msk /*!< Rising Pending Interrupt Flag on line 14 */ +#define EXTI_RPR1_RPIF15_Pos (15U) +#define EXTI_RPR1_RPIF15_Msk (0x1UL << EXTI_RPR1_RPIF15_Pos) /*!< 0x00008000 */ +#define EXTI_RPR1_RPIF15 EXTI_RPR1_RPIF15_Msk /*!< Rising Pending Interrupt Flag on line 15 */ + +/******************* Bit definition for EXTI_FPR1 register ******************/ +#define EXTI_FPR1_FPIF0_Pos (0U) +#define EXTI_FPR1_FPIF0_Msk (0x1UL << EXTI_FPR1_FPIF0_Pos) /*!< 0x00000001 */ +#define EXTI_FPR1_FPIF0 EXTI_FPR1_FPIF0_Msk /*!< Falling Pending Interrupt Flag on line 0 */ +#define EXTI_FPR1_FPIF1_Pos (1U) +#define EXTI_FPR1_FPIF1_Msk (0x1UL << EXTI_FPR1_FPIF1_Pos) /*!< 0x00000002 */ +#define EXTI_FPR1_FPIF1 EXTI_FPR1_FPIF1_Msk /*!< Falling Pending Interrupt Flag on line 1 */ +#define EXTI_FPR1_FPIF2_Pos (2U) +#define EXTI_FPR1_FPIF2_Msk (0x1UL << EXTI_FPR1_FPIF2_Pos) /*!< 0x00000004 */ +#define EXTI_FPR1_FPIF2 EXTI_FPR1_FPIF2_Msk /*!< Falling Pending Interrupt Flag on line 2 */ +#define EXTI_FPR1_FPIF3_Pos (3U) +#define EXTI_FPR1_FPIF3_Msk (0x1UL << EXTI_FPR1_FPIF3_Pos) /*!< 0x00000008 */ +#define EXTI_FPR1_FPIF3 EXTI_FPR1_FPIF3_Msk /*!< Falling Pending Interrupt Flag on line 3 */ +#define EXTI_FPR1_FPIF4_Pos (4U) +#define EXTI_FPR1_FPIF4_Msk (0x1UL << EXTI_FPR1_FPIF4_Pos) /*!< 0x00000010 */ +#define EXTI_FPR1_FPIF4 EXTI_FPR1_FPIF4_Msk /*!< Falling Pending Interrupt Flag on line 4 */ +#define EXTI_FPR1_FPIF5_Pos (5U) +#define EXTI_FPR1_FPIF5_Msk (0x1UL << EXTI_FPR1_FPIF5_Pos) /*!< 0x00000020 */ +#define EXTI_FPR1_FPIF5 EXTI_FPR1_FPIF5_Msk /*!< Falling Pending Interrupt Flag on line 5 */ +#define EXTI_FPR1_FPIF6_Pos (6U) +#define EXTI_FPR1_FPIF6_Msk (0x1UL << EXTI_FPR1_FPIF6_Pos) /*!< 0x00000040 */ +#define EXTI_FPR1_FPIF6 EXTI_FPR1_FPIF6_Msk /*!< Falling Pending Interrupt Flag on line 6 */ +#define EXTI_FPR1_FPIF7_Pos (7U) +#define EXTI_FPR1_FPIF7_Msk (0x1UL << EXTI_FPR1_FPIF7_Pos) /*!< 0x00000080 */ +#define EXTI_FPR1_FPIF7 EXTI_FPR1_FPIF7_Msk /*!< Falling Pending Interrupt Flag on line 7 */ +#define EXTI_FPR1_FPIF8_Pos (8U) +#define EXTI_FPR1_FPIF8_Msk (0x1UL << EXTI_FPR1_FPIF8_Pos) /*!< 0x00000100 */ +#define EXTI_FPR1_FPIF8 EXTI_FPR1_FPIF8_Msk /*!< Falling Pending Interrupt Flag on line 8 */ +#define EXTI_FPR1_FPIF9_Pos (9U) +#define EXTI_FPR1_FPIF9_Msk (0x1UL << EXTI_FPR1_FPIF9_Pos) /*!< 0x00000200 */ +#define EXTI_FPR1_FPIF9 EXTI_FPR1_FPIF9_Msk /*!< Falling Pending Interrupt Flag on line 9 */ +#define EXTI_FPR1_FPIF10_Pos (10U) +#define EXTI_FPR1_FPIF10_Msk (0x1UL << EXTI_FPR1_FPIF10_Pos) /*!< 0x00000400 */ +#define EXTI_FPR1_FPIF10 EXTI_FPR1_FPIF10_Msk /*!< Falling Pending Interrupt Flag on line 10 */ +#define EXTI_FPR1_FPIF11_Pos (11U) +#define EXTI_FPR1_FPIF11_Msk (0x1UL << EXTI_FPR1_FPIF11_Pos) /*!< 0x00000800 */ +#define EXTI_FPR1_FPIF11 EXTI_FPR1_FPIF11_Msk /*!< Falling Pending Interrupt Flag on line 11 */ +#define EXTI_FPR1_FPIF12_Pos (12U) +#define EXTI_FPR1_FPIF12_Msk (0x1UL << EXTI_FPR1_FPIF12_Pos) /*!< 0x00001000 */ +#define EXTI_FPR1_FPIF12 EXTI_FPR1_FPIF12_Msk /*!< Falling Pending Interrupt Flag on line 12 */ +#define EXTI_FPR1_FPIF13_Pos (13U) +#define EXTI_FPR1_FPIF13_Msk (0x1UL << EXTI_FPR1_FPIF13_Pos) /*!< 0x00002000 */ +#define EXTI_FPR1_FPIF13 EXTI_FPR1_FPIF13_Msk /*!< Falling Pending Interrupt Flag on line 13 */ +#define EXTI_FPR1_FPIF14_Pos (14U) +#define EXTI_FPR1_FPIF14_Msk (0x1UL << EXTI_FPR1_FPIF14_Pos) /*!< 0x00004000 */ +#define EXTI_FPR1_FPIF14 EXTI_FPR1_FPIF14_Msk /*!< Falling Pending Interrupt Flag on line 14 */ +#define EXTI_FPR1_FPIF15_Pos (15U) +#define EXTI_FPR1_FPIF15_Msk (0x1UL << EXTI_FPR1_FPIF15_Pos) /*!< 0x00008000 */ +#define EXTI_FPR1_FPIF15 EXTI_FPR1_FPIF15_Msk /*!< Falling Pending Interrupt Flag on line 15 */ + +/***************** Bit definition for EXTI_EXTICR1 register **************/ +#define EXTI_EXTICR1_EXTI0_Pos (0U) +#define EXTI_EXTICR1_EXTI0_Msk (0x7UL << EXTI_EXTICR1_EXTI0_Pos) /*!< 0x00000007 */ +#define EXTI_EXTICR1_EXTI0 EXTI_EXTICR1_EXTI0_Msk /*!< EXTI 0 configuration */ +#define EXTI_EXTICR1_EXTI0_0 (0x1UL << EXTI_EXTICR1_EXTI0_Pos) /*!< 0x00000001 */ +#define EXTI_EXTICR1_EXTI0_1 (0x2UL << EXTI_EXTICR1_EXTI0_Pos) /*!< 0x00000002 */ +#define EXTI_EXTICR1_EXTI0_2 (0x4UL << EXTI_EXTICR1_EXTI0_Pos) /*!< 0x00000004 */ +#define EXTI_EXTICR1_EXTI1_Pos (8U) +#define EXTI_EXTICR1_EXTI1_Msk (0x7UL << EXTI_EXTICR1_EXTI1_Pos) /*!< 0x00000700 */ +#define EXTI_EXTICR1_EXTI1 EXTI_EXTICR1_EXTI1_Msk /*!< EXTI 1 configuration */ +#define EXTI_EXTICR1_EXTI1_0 (0x1UL << EXTI_EXTICR1_EXTI1_Pos) /*!< 0x00000100 */ +#define EXTI_EXTICR1_EXTI1_1 (0x2UL << EXTI_EXTICR1_EXTI1_Pos) /*!< 0x00000200 */ +#define EXTI_EXTICR1_EXTI1_2 (0x4UL << EXTI_EXTICR1_EXTI1_Pos) /*!< 0x00000400 */ +#define EXTI_EXTICR1_EXTI2_Pos (16U) +#define EXTI_EXTICR1_EXTI2_Msk (0x7UL << EXTI_EXTICR1_EXTI2_Pos) /*!< 0x00070000 */ +#define EXTI_EXTICR1_EXTI2 EXTI_EXTICR1_EXTI2_Msk /*!< EXTI 2 configuration */ +#define EXTI_EXTICR1_EXTI2_0 (0x1UL << EXTI_EXTICR1_EXTI2_Pos) /*!< 0x00010000 */ +#define EXTI_EXTICR1_EXTI2_1 (0x2UL << EXTI_EXTICR1_EXTI2_Pos) /*!< 0x00020000 */ +#define EXTI_EXTICR1_EXTI2_2 (0x4UL << EXTI_EXTICR1_EXTI2_Pos) /*!< 0x00040000 */ +#define EXTI_EXTICR1_EXTI3_Pos (24U) +#define EXTI_EXTICR1_EXTI3_Msk (0x7UL << EXTI_EXTICR1_EXTI3_Pos) /*!< 0x07000000 */ +#define EXTI_EXTICR1_EXTI3 EXTI_EXTICR1_EXTI3_Msk /*!< EXTI 3 configuration */ +#define EXTI_EXTICR1_EXTI3_0 (0x1UL << EXTI_EXTICR1_EXTI3_Pos) /*!< 0x01000000 */ +#define EXTI_EXTICR1_EXTI3_1 (0x2UL << EXTI_EXTICR1_EXTI3_Pos) /*!< 0x02000000 */ +#define EXTI_EXTICR1_EXTI3_2 (0x4UL << EXTI_EXTICR1_EXTI3_Pos) /*!< 0x04000000 */ + +/***************** Bit definition for EXTI_EXTICR2 register **************/ +#define EXTI_EXTICR2_EXTI4_Pos (0U) +#define EXTI_EXTICR2_EXTI4_Msk (0x7UL << EXTI_EXTICR2_EXTI4_Pos) /*!< 0x00000007 */ +#define EXTI_EXTICR2_EXTI4 EXTI_EXTICR2_EXTI4_Msk /*!< EXTI 4 configuration */ +#define EXTI_EXTICR2_EXTI4_0 (0x1UL << EXTI_EXTICR2_EXTI4_Pos) /*!< 0x00000001 */ +#define EXTI_EXTICR2_EXTI4_1 (0x2UL << EXTI_EXTICR2_EXTI4_Pos) /*!< 0x00000002 */ +#define EXTI_EXTICR2_EXTI4_2 (0x4UL << EXTI_EXTICR2_EXTI4_Pos) /*!< 0x00000004 */ +#define EXTI_EXTICR2_EXTI5_Pos (8U) +#define EXTI_EXTICR2_EXTI5_Msk (0x7UL << EXTI_EXTICR2_EXTI5_Pos) /*!< 0x00000700 */ +#define EXTI_EXTICR2_EXTI5 EXTI_EXTICR2_EXTI5_Msk /*!< EXTI 5 configuration */ +#define EXTI_EXTICR2_EXTI5_0 (0x1UL << EXTI_EXTICR2_EXTI5_Pos) /*!< 0x00000100 */ +#define EXTI_EXTICR2_EXTI5_1 (0x2UL << EXTI_EXTICR2_EXTI5_Pos) /*!< 0x00000200 */ +#define EXTI_EXTICR2_EXTI5_2 (0x4UL << EXTI_EXTICR2_EXTI5_Pos) /*!< 0x00000400 */ +#define EXTI_EXTICR2_EXTI6_Pos (16U) +#define EXTI_EXTICR2_EXTI6_Msk (0x7UL << EXTI_EXTICR2_EXTI6_Pos) /*!< 0x00070000 */ +#define EXTI_EXTICR2_EXTI6 EXTI_EXTICR2_EXTI6_Msk /*!< EXTI 6 configuration */ +#define EXTI_EXTICR2_EXTI6_0 (0x1UL << EXTI_EXTICR2_EXTI6_Pos) /*!< 0x00010000 */ +#define EXTI_EXTICR2_EXTI6_1 (0x2UL << EXTI_EXTICR2_EXTI6_Pos) /*!< 0x00020000 */ +#define EXTI_EXTICR2_EXTI6_2 (0x4UL << EXTI_EXTICR2_EXTI6_Pos) /*!< 0x00040000 */ +#define EXTI_EXTICR2_EXTI7_Pos (24U) +#define EXTI_EXTICR2_EXTI7_Msk (0x7UL << EXTI_EXTICR2_EXTI7_Pos) /*!< 0x07000000 */ +#define EXTI_EXTICR2_EXTI7 EXTI_EXTICR2_EXTI7_Msk /*!< EXTI 7 configuration */ +#define EXTI_EXTICR2_EXTI7_0 (0x1UL << EXTI_EXTICR2_EXTI7_Pos) /*!< 0x01000000 */ +#define EXTI_EXTICR2_EXTI7_1 (0x2UL << EXTI_EXTICR2_EXTI7_Pos) /*!< 0x02000000 */ +#define EXTI_EXTICR2_EXTI7_2 (0x4UL << EXTI_EXTICR2_EXTI7_Pos) /*!< 0x04000000 */ + +/***************** Bit definition for EXTI_EXTICR3 register **************/ +#define EXTI_EXTICR3_EXTI8_Pos (0U) +#define EXTI_EXTICR3_EXTI8_Msk (0x7UL << EXTI_EXTICR3_EXTI8_Pos) /*!< 0x00000007 */ +#define EXTI_EXTICR3_EXTI8 EXTI_EXTICR3_EXTI8_Msk /*!< EXTI 8 configuration */ +#define EXTI_EXTICR3_EXTI8_0 (0x1UL << EXTI_EXTICR3_EXTI8_Pos) /*!< 0x00000001 */ +#define EXTI_EXTICR3_EXTI8_1 (0x2UL << EXTI_EXTICR3_EXTI8_Pos) /*!< 0x00000002 */ +#define EXTI_EXTICR3_EXTI8_2 (0x4UL << EXTI_EXTICR3_EXTI8_Pos) /*!< 0x00000004 */ +#define EXTI_EXTICR3_EXTI9_Pos (8U) +#define EXTI_EXTICR3_EXTI9_Msk (0x7UL << EXTI_EXTICR3_EXTI9_Pos) /*!< 0x00000700 */ +#define EXTI_EXTICR3_EXTI9 EXTI_EXTICR3_EXTI9_Msk /*!< EXTI 9 configuration */ +#define EXTI_EXTICR3_EXTI9_0 (0x1UL << EXTI_EXTICR3_EXTI9_Pos) /*!< 0x00000100 */ +#define EXTI_EXTICR3_EXTI9_1 (0x2UL << EXTI_EXTICR3_EXTI9_Pos) /*!< 0x00000200 */ +#define EXTI_EXTICR3_EXTI9_2 (0x4UL << EXTI_EXTICR3_EXTI9_Pos) /*!< 0x00000400 */ +#define EXTI_EXTICR3_EXTI10_Pos (16U) +#define EXTI_EXTICR3_EXTI10_Msk (0x7UL << EXTI_EXTICR3_EXTI10_Pos) /*!< 0x00070000 */ +#define EXTI_EXTICR3_EXTI10 EXTI_EXTICR3_EXTI10_Msk /*!< EXTI 10 configuration */ +#define EXTI_EXTICR3_EXTI10_0 (0x1UL << EXTI_EXTICR3_EXTI10_Pos) /*!< 0x00010000 */ +#define EXTI_EXTICR3_EXTI10_1 (0x2UL << EXTI_EXTICR3_EXTI10_Pos) /*!< 0x00020000 */ +#define EXTI_EXTICR3_EXTI10_2 (0x4UL << EXTI_EXTICR3_EXTI10_Pos) /*!< 0x00040000 */ +#define EXTI_EXTICR3_EXTI11_Pos (24U) +#define EXTI_EXTICR3_EXTI11_Msk (0x7UL << EXTI_EXTICR3_EXTI11_Pos) /*!< 0x07000000 */ +#define EXTI_EXTICR3_EXTI11 EXTI_EXTICR3_EXTI11_Msk /*!< EXTI 11 configuration */ +#define EXTI_EXTICR3_EXTI11_0 (0x1UL << EXTI_EXTICR3_EXTI11_Pos) /*!< 0x01000000 */ +#define EXTI_EXTICR3_EXTI11_1 (0x2UL << EXTI_EXTICR3_EXTI11_Pos) /*!< 0x02000000 */ +#define EXTI_EXTICR3_EXTI11_2 (0x4UL << EXTI_EXTICR3_EXTI11_Pos) /*!< 0x04000000 */ + +/***************** Bit definition for EXTI_EXTICR4 register **************/ +#define EXTI_EXTICR4_EXTI12_Pos (0U) +#define EXTI_EXTICR4_EXTI12_Msk (0x7UL << EXTI_EXTICR4_EXTI12_Pos) /*!< 0x00000007 */ +#define EXTI_EXTICR4_EXTI12 EXTI_EXTICR4_EXTI12_Msk /*!< EXTI 12 configuration */ +#define EXTI_EXTICR4_EXTI12_0 (0x1UL << EXTI_EXTICR4_EXTI12_Pos) /*!< 0x00000001 */ +#define EXTI_EXTICR4_EXTI12_1 (0x2UL << EXTI_EXTICR4_EXTI12_Pos) /*!< 0x00000002 */ +#define EXTI_EXTICR4_EXTI12_2 (0x4UL << EXTI_EXTICR4_EXTI12_Pos) /*!< 0x00000004 */ +#define EXTI_EXTICR4_EXTI13_Pos (8U) +#define EXTI_EXTICR4_EXTI13_Msk (0x7UL << EXTI_EXTICR4_EXTI13_Pos) /*!< 0x00000700 */ +#define EXTI_EXTICR4_EXTI13 EXTI_EXTICR4_EXTI13_Msk /*!< EXTI 13 configuration */ +#define EXTI_EXTICR4_EXTI13_0 (0x1UL << EXTI_EXTICR4_EXTI13_Pos) /*!< 0x00000100 */ +#define EXTI_EXTICR4_EXTI13_1 (0x2UL << EXTI_EXTICR4_EXTI13_Pos) /*!< 0x00000200 */ +#define EXTI_EXTICR4_EXTI13_2 (0x4UL << EXTI_EXTICR4_EXTI13_Pos) /*!< 0x00000400 */ +#define EXTI_EXTICR4_EXTI14_Pos (16U) +#define EXTI_EXTICR4_EXTI14_Msk (0x7UL << EXTI_EXTICR4_EXTI14_Pos) /*!< 0x00070000 */ +#define EXTI_EXTICR4_EXTI14 EXTI_EXTICR4_EXTI14_Msk /*!< EXTI 14 configuration */ +#define EXTI_EXTICR4_EXTI14_0 (0x1UL << EXTI_EXTICR4_EXTI14_Pos) /*!< 0x00010000 */ +#define EXTI_EXTICR4_EXTI14_1 (0x2UL << EXTI_EXTICR4_EXTI14_Pos) /*!< 0x00020000 */ +#define EXTI_EXTICR4_EXTI14_2 (0x4UL << EXTI_EXTICR4_EXTI14_Pos) /*!< 0x00040000 */ +#define EXTI_EXTICR4_EXTI15_Pos (24U) +#define EXTI_EXTICR4_EXTI15_Msk (0x7UL << EXTI_EXTICR4_EXTI15_Pos) /*!< 0x07000000 */ +#define EXTI_EXTICR4_EXTI15 EXTI_EXTICR4_EXTI15_Msk /*!< EXTI 15 configuration */ +#define EXTI_EXTICR4_EXTI15_0 (0x1UL << EXTI_EXTICR4_EXTI15_Pos) /*!< 0x01000000 */ +#define EXTI_EXTICR4_EXTI15_1 (0x2UL << EXTI_EXTICR4_EXTI15_Pos) /*!< 0x02000000 */ +#define EXTI_EXTICR4_EXTI15_2 (0x4UL << EXTI_EXTICR4_EXTI15_Pos) /*!< 0x04000000 */ + +/******************* Bit definition for EXTI_IMR1 register ******************/ +#define EXTI_IMR1_IM0_Pos (0U) +#define EXTI_IMR1_IM0_Msk (0x1UL << EXTI_IMR1_IM0_Pos) /*!< 0x00000001 */ +#define EXTI_IMR1_IM0 EXTI_IMR1_IM0_Msk /*!< Interrupt Mask on line 0 */ +#define EXTI_IMR1_IM1_Pos (1U) +#define EXTI_IMR1_IM1_Msk (0x1UL << EXTI_IMR1_IM1_Pos) /*!< 0x00000002 */ +#define EXTI_IMR1_IM1 EXTI_IMR1_IM1_Msk /*!< Interrupt Mask on line 1 */ +#define EXTI_IMR1_IM2_Pos (2U) +#define EXTI_IMR1_IM2_Msk (0x1UL << EXTI_IMR1_IM2_Pos) /*!< 0x00000004 */ +#define EXTI_IMR1_IM2 EXTI_IMR1_IM2_Msk /*!< Interrupt Mask on line 2 */ +#define EXTI_IMR1_IM3_Pos (3U) +#define EXTI_IMR1_IM3_Msk (0x1UL << EXTI_IMR1_IM3_Pos) /*!< 0x00000008 */ +#define EXTI_IMR1_IM3 EXTI_IMR1_IM3_Msk /*!< Interrupt Mask on line 3 */ +#define EXTI_IMR1_IM4_Pos (4U) +#define EXTI_IMR1_IM4_Msk (0x1UL << EXTI_IMR1_IM4_Pos) /*!< 0x00000010 */ +#define EXTI_IMR1_IM4 EXTI_IMR1_IM4_Msk /*!< Interrupt Mask on line 4 */ +#define EXTI_IMR1_IM5_Pos (5U) +#define EXTI_IMR1_IM5_Msk (0x1UL << EXTI_IMR1_IM5_Pos) /*!< 0x00000020 */ +#define EXTI_IMR1_IM5 EXTI_IMR1_IM5_Msk /*!< Interrupt Mask on line 5 */ +#define EXTI_IMR1_IM6_Pos (6U) +#define EXTI_IMR1_IM6_Msk (0x1UL << EXTI_IMR1_IM6_Pos) /*!< 0x00000040 */ +#define EXTI_IMR1_IM6 EXTI_IMR1_IM6_Msk /*!< Interrupt Mask on line 6 */ +#define EXTI_IMR1_IM7_Pos (7U) +#define EXTI_IMR1_IM7_Msk (0x1UL << EXTI_IMR1_IM7_Pos) /*!< 0x00000080 */ +#define EXTI_IMR1_IM7 EXTI_IMR1_IM7_Msk /*!< Interrupt Mask on line 7 */ +#define EXTI_IMR1_IM8_Pos (8U) +#define EXTI_IMR1_IM8_Msk (0x1UL << EXTI_IMR1_IM8_Pos) /*!< 0x00000100 */ +#define EXTI_IMR1_IM8 EXTI_IMR1_IM8_Msk /*!< Interrupt Mask on line 8 */ +#define EXTI_IMR1_IM9_Pos (9U) +#define EXTI_IMR1_IM9_Msk (0x1UL << EXTI_IMR1_IM9_Pos) /*!< 0x00000200 */ +#define EXTI_IMR1_IM9 EXTI_IMR1_IM9_Msk /*!< Interrupt Mask on line 9 */ +#define EXTI_IMR1_IM10_Pos (10U) +#define EXTI_IMR1_IM10_Msk (0x1UL << EXTI_IMR1_IM10_Pos) /*!< 0x00000400 */ +#define EXTI_IMR1_IM10 EXTI_IMR1_IM10_Msk /*!< Interrupt Mask on line 10 */ +#define EXTI_IMR1_IM11_Pos (11U) +#define EXTI_IMR1_IM11_Msk (0x1UL << EXTI_IMR1_IM11_Pos) /*!< 0x00000800 */ +#define EXTI_IMR1_IM11 EXTI_IMR1_IM11_Msk /*!< Interrupt Mask on line 11 */ +#define EXTI_IMR1_IM12_Pos (12U) +#define EXTI_IMR1_IM12_Msk (0x1UL << EXTI_IMR1_IM12_Pos) /*!< 0x00001000 */ +#define EXTI_IMR1_IM12 EXTI_IMR1_IM12_Msk /*!< Interrupt Mask on line 12 */ +#define EXTI_IMR1_IM13_Pos (13U) +#define EXTI_IMR1_IM13_Msk (0x1UL << EXTI_IMR1_IM13_Pos) /*!< 0x00002000 */ +#define EXTI_IMR1_IM13 EXTI_IMR1_IM13_Msk /*!< Interrupt Mask on line 13 */ +#define EXTI_IMR1_IM14_Pos (14U) +#define EXTI_IMR1_IM14_Msk (0x1UL << EXTI_IMR1_IM14_Pos) /*!< 0x00004000 */ +#define EXTI_IMR1_IM14 EXTI_IMR1_IM14_Msk /*!< Interrupt Mask on line 14 */ +#define EXTI_IMR1_IM15_Pos (15U) +#define EXTI_IMR1_IM15_Msk (0x1UL << EXTI_IMR1_IM15_Pos) /*!< 0x00008000 */ +#define EXTI_IMR1_IM15 EXTI_IMR1_IM15_Msk /*!< Interrupt Mask on line 15 */ +#define EXTI_IMR1_IM19_Pos (19U) +#define EXTI_IMR1_IM19_Msk (0x1UL << EXTI_IMR1_IM19_Pos) /*!< 0x00080000 */ +#define EXTI_IMR1_IM19 EXTI_IMR1_IM19_Msk /*!< Interrupt Mask on line 19 */ +#define EXTI_IMR1_IM21_Pos (21U) +#define EXTI_IMR1_IM21_Msk (0x1UL << EXTI_IMR1_IM21_Pos) /*!< 0x00200000 */ +#define EXTI_IMR1_IM21 EXTI_IMR1_IM21_Msk /*!< Interrupt Mask on line 21 */ +#define EXTI_IMR1_IM23_Pos (23U) +#define EXTI_IMR1_IM23_Msk (0x1UL << EXTI_IMR1_IM23_Pos) /*!< 0x00800000 */ +#define EXTI_IMR1_IM23 EXTI_IMR1_IM23_Msk /*!< Interrupt Mask on line 23 */ +#define EXTI_IMR1_IM25_Pos (25U) +#define EXTI_IMR1_IM25_Msk (0x1UL << EXTI_IMR1_IM25_Pos) /*!< 0x02000000 */ +#define EXTI_IMR1_IM25 EXTI_IMR1_IM25_Msk /*!< Interrupt Mask on line 25 */ +#define EXTI_IMR1_IM26_Pos (26U) +#define EXTI_IMR1_IM26_Msk (0x1UL << EXTI_IMR1_IM26_Pos) /*!< 0x04000000 */ +#define EXTI_IMR1_IM26 EXTI_IMR1_IM26_Msk /*!< Interrupt Mask on line 26 */ +#define EXTI_IMR1_IM31_Pos (31U) +#define EXTI_IMR1_IM31_Msk (0x1UL << EXTI_IMR1_IM31_Pos) /*!< 0x80000000 */ +#define EXTI_IMR1_IM31 EXTI_IMR1_IM31_Msk /*!< Interrupt Mask on line 31 */ +#define EXTI_IMR1_IM_Pos (0U) +#define EXTI_IMR1_IM_Msk (0x86A8FFFFUL << EXTI_IMR1_IM_Pos) /*!< 0x86A8FFFF */ +#define EXTI_IMR1_IM EXTI_IMR1_IM_Msk /*!< Interrupt Mask All */ + + +/******************* Bit definition for EXTI_EMR1 register ******************/ +#define EXTI_EMR1_EM0_Pos (0U) +#define EXTI_EMR1_EM0_Msk (0x1UL << EXTI_EMR1_EM0_Pos) /*!< 0x00000001 */ +#define EXTI_EMR1_EM0 EXTI_EMR1_EM0_Msk /*!< Event Mask on line 0 */ +#define EXTI_EMR1_EM1_Pos (1U) +#define EXTI_EMR1_EM1_Msk (0x1UL << EXTI_EMR1_EM1_Pos) /*!< 0x00000002 */ +#define EXTI_EMR1_EM1 EXTI_EMR1_EM1_Msk /*!< Event Mask on line 1 */ +#define EXTI_EMR1_EM2_Pos (2U) +#define EXTI_EMR1_EM2_Msk (0x1UL << EXTI_EMR1_EM2_Pos) /*!< 0x00000004 */ +#define EXTI_EMR1_EM2 EXTI_EMR1_EM2_Msk /*!< Event Mask on line 2 */ +#define EXTI_EMR1_EM3_Pos (3U) +#define EXTI_EMR1_EM3_Msk (0x1UL << EXTI_EMR1_EM3_Pos) /*!< 0x00000008 */ +#define EXTI_EMR1_EM3 EXTI_EMR1_EM3_Msk /*!< Event Mask on line 3 */ +#define EXTI_EMR1_EM4_Pos (4U) +#define EXTI_EMR1_EM4_Msk (0x1UL << EXTI_EMR1_EM4_Pos) /*!< 0x00000010 */ +#define EXTI_EMR1_EM4 EXTI_EMR1_EM4_Msk /*!< Event Mask on line 4 */ +#define EXTI_EMR1_EM5_Pos (5U) +#define EXTI_EMR1_EM5_Msk (0x1UL << EXTI_EMR1_EM5_Pos) /*!< 0x00000020 */ +#define EXTI_EMR1_EM5 EXTI_EMR1_EM5_Msk /*!< Event Mask on line 5 */ +#define EXTI_EMR1_EM6_Pos (6U) +#define EXTI_EMR1_EM6_Msk (0x1UL << EXTI_EMR1_EM6_Pos) /*!< 0x00000040 */ +#define EXTI_EMR1_EM6 EXTI_EMR1_EM6_Msk /*!< Event Mask on line 6 */ +#define EXTI_EMR1_EM7_Pos (7U) +#define EXTI_EMR1_EM7_Msk (0x1UL << EXTI_EMR1_EM7_Pos) /*!< 0x00000080 */ +#define EXTI_EMR1_EM7 EXTI_EMR1_EM7_Msk /*!< Event Mask on line 7 */ +#define EXTI_EMR1_EM8_Pos (8U) +#define EXTI_EMR1_EM8_Msk (0x1UL << EXTI_EMR1_EM8_Pos) /*!< 0x00000100 */ +#define EXTI_EMR1_EM8 EXTI_EMR1_EM8_Msk /*!< Event Mask on line 8 */ +#define EXTI_EMR1_EM9_Pos (9U) +#define EXTI_EMR1_EM9_Msk (0x1UL << EXTI_EMR1_EM9_Pos) /*!< 0x00000200 */ +#define EXTI_EMR1_EM9 EXTI_EMR1_EM9_Msk /*!< Event Mask on line 9 */ +#define EXTI_EMR1_EM10_Pos (10U) +#define EXTI_EMR1_EM10_Msk (0x1UL << EXTI_EMR1_EM10_Pos) /*!< 0x00000400 */ +#define EXTI_EMR1_EM10 EXTI_EMR1_EM10_Msk /*!< Event Mask on line 10 */ +#define EXTI_EMR1_EM11_Pos (11U) +#define EXTI_EMR1_EM11_Msk (0x1UL << EXTI_EMR1_EM11_Pos) /*!< 0x00000800 */ +#define EXTI_EMR1_EM11 EXTI_EMR1_EM11_Msk /*!< Event Mask on line 11 */ +#define EXTI_EMR1_EM12_Pos (12U) +#define EXTI_EMR1_EM12_Msk (0x1UL << EXTI_EMR1_EM12_Pos) /*!< 0x00001000 */ +#define EXTI_EMR1_EM12 EXTI_EMR1_EM12_Msk /*!< Event Mask on line 12 */ +#define EXTI_EMR1_EM13_Pos (13U) +#define EXTI_EMR1_EM13_Msk (0x1UL << EXTI_EMR1_EM13_Pos) /*!< 0x00002000 */ +#define EXTI_EMR1_EM13 EXTI_EMR1_EM13_Msk /*!< Event Mask on line 13 */ +#define EXTI_EMR1_EM14_Pos (14U) +#define EXTI_EMR1_EM14_Msk (0x1UL << EXTI_EMR1_EM14_Pos) /*!< 0x00004000 */ +#define EXTI_EMR1_EM14 EXTI_EMR1_EM14_Msk /*!< Event Mask on line 14 */ +#define EXTI_EMR1_EM15_Pos (15U) +#define EXTI_EMR1_EM15_Msk (0x1UL << EXTI_EMR1_EM15_Pos) /*!< 0x00008000 */ +#define EXTI_EMR1_EM15 EXTI_EMR1_EM15_Msk /*!< Event Mask on line 15 */ +#define EXTI_EMR1_EM19_Pos (19U) +#define EXTI_EMR1_EM19_Msk (0x1UL << EXTI_EMR1_EM19_Pos) /*!< 0x00080000 */ +#define EXTI_EMR1_EM19 EXTI_EMR1_EM19_Msk /*!< Event Mask on line 19 */ +#define EXTI_EMR1_EM21_Pos (21U) +#define EXTI_EMR1_EM21_Msk (0x1UL << EXTI_EMR1_EM21_Pos) /*!< 0x00200000 */ +#define EXTI_EMR1_EM21 EXTI_EMR1_EM21_Msk /*!< Event Mask on line 21 */ +#define EXTI_EMR1_EM23_Pos (23U) +#define EXTI_EMR1_EM23_Msk (0x1UL << EXTI_EMR1_EM23_Pos) /*!< 0x00800000 */ +#define EXTI_EMR1_EM23 EXTI_EMR1_EM23_Msk /*!< Event Mask on line 23 */ +#define EXTI_EMR1_EM25_Pos (25U) +#define EXTI_EMR1_EM25_Msk (0x1UL << EXTI_EMR1_EM25_Pos) /*!< 0x02000000 */ +#define EXTI_EMR1_EM25 EXTI_EMR1_EM25_Msk /*!< Event Mask on line 25 */ +#define EXTI_EMR1_EM26_Pos (26U) +#define EXTI_EMR1_EM26_Msk (0x1UL << EXTI_EMR1_EM26_Pos) /*!< 0x04000000 */ +#define EXTI_EMR1_EM26 EXTI_EMR1_EM26_Msk /*!< Event Mask on line 26 */ +#define EXTI_EMR1_EM31_Pos (31U) +#define EXTI_EMR1_EM31_Msk (0x1UL << EXTI_EMR1_EM31_Pos) /*!< 0x80000000 */ +#define EXTI_EMR1_EM31 EXTI_EMR1_EM31_Msk /*!< Event Mask on line 31 */ + + +/******************************************************************************/ +/* */ +/* FLASH */ +/* */ +/******************************************************************************/ +/* Note: No specific macro feature on this device */ + +/******************* Bits definition for FLASH_ACR register *****************/ +#define FLASH_ACR_LATENCY_Pos (0U) +#define FLASH_ACR_LATENCY_Msk (0x7UL << FLASH_ACR_LATENCY_Pos) /*!< 0x00000007 */ +#define FLASH_ACR_LATENCY FLASH_ACR_LATENCY_Msk +#define FLASH_ACR_LATENCY_0 (0x1UL << FLASH_ACR_LATENCY_Pos) /*!< 0x00000001 */ +#define FLASH_ACR_LATENCY_1 (0x2UL << FLASH_ACR_LATENCY_Pos) /*!< 0x00000002 */ +#define FLASH_ACR_LATENCY_2 (0x4UL << FLASH_ACR_LATENCY_Pos) /*!< 0x00000004 */ +#define FLASH_ACR_PRFTEN_Pos (8U) +#define FLASH_ACR_PRFTEN_Msk (0x1UL << FLASH_ACR_PRFTEN_Pos) /*!< 0x00000100 */ +#define FLASH_ACR_PRFTEN FLASH_ACR_PRFTEN_Msk +#define FLASH_ACR_ICEN_Pos (9U) +#define FLASH_ACR_ICEN_Msk (0x1UL << FLASH_ACR_ICEN_Pos) /*!< 0x00000200 */ +#define FLASH_ACR_ICEN FLASH_ACR_ICEN_Msk +#define FLASH_ACR_ICRST_Pos (11U) +#define FLASH_ACR_ICRST_Msk (0x1UL << FLASH_ACR_ICRST_Pos) /*!< 0x00000800 */ +#define FLASH_ACR_ICRST FLASH_ACR_ICRST_Msk +#define FLASH_ACR_PROGEMPTY_Pos (16U) +#define FLASH_ACR_PROGEMPTY_Msk (0x1UL << FLASH_ACR_PROGEMPTY_Pos) /*!< 0x00010000 */ +#define FLASH_ACR_PROGEMPTY FLASH_ACR_PROGEMPTY_Msk + +/******************* Bits definition for FLASH_SR register ******************/ +#define FLASH_SR_EOP_Pos (0U) +#define FLASH_SR_EOP_Msk (0x1UL << FLASH_SR_EOP_Pos) /*!< 0x00000001 */ +#define FLASH_SR_EOP FLASH_SR_EOP_Msk +#define FLASH_SR_OPERR_Pos (1U) +#define FLASH_SR_OPERR_Msk (0x1UL << FLASH_SR_OPERR_Pos) /*!< 0x00000002 */ +#define FLASH_SR_OPERR FLASH_SR_OPERR_Msk +#define FLASH_SR_PROGERR_Pos (3U) +#define FLASH_SR_PROGERR_Msk (0x1UL << FLASH_SR_PROGERR_Pos) /*!< 0x00000008 */ +#define FLASH_SR_PROGERR FLASH_SR_PROGERR_Msk +#define FLASH_SR_WRPERR_Pos (4U) +#define FLASH_SR_WRPERR_Msk (0x1UL << FLASH_SR_WRPERR_Pos) /*!< 0x00000010 */ +#define FLASH_SR_WRPERR FLASH_SR_WRPERR_Msk +#define FLASH_SR_PGAERR_Pos (5U) +#define FLASH_SR_PGAERR_Msk (0x1UL << FLASH_SR_PGAERR_Pos) /*!< 0x00000020 */ +#define FLASH_SR_PGAERR FLASH_SR_PGAERR_Msk +#define FLASH_SR_SIZERR_Pos (6U) +#define FLASH_SR_SIZERR_Msk (0x1UL << FLASH_SR_SIZERR_Pos) /*!< 0x00000040 */ +#define FLASH_SR_SIZERR FLASH_SR_SIZERR_Msk +#define FLASH_SR_PGSERR_Pos (7U) +#define FLASH_SR_PGSERR_Msk (0x1UL << FLASH_SR_PGSERR_Pos) /*!< 0x00000080 */ +#define FLASH_SR_PGSERR FLASH_SR_PGSERR_Msk +#define FLASH_SR_MISERR_Pos (8U) +#define FLASH_SR_MISERR_Msk (0x1UL << FLASH_SR_MISERR_Pos) /*!< 0x00000100 */ +#define FLASH_SR_MISERR FLASH_SR_MISERR_Msk +#define FLASH_SR_FASTERR_Pos (9U) +#define FLASH_SR_FASTERR_Msk (0x1UL << FLASH_SR_FASTERR_Pos) /*!< 0x00000200 */ +#define FLASH_SR_FASTERR FLASH_SR_FASTERR_Msk +#define FLASH_SR_OPTVERR_Pos (15U) +#define FLASH_SR_OPTVERR_Msk (0x1UL << FLASH_SR_OPTVERR_Pos) /*!< 0x00008000 */ +#define FLASH_SR_OPTVERR FLASH_SR_OPTVERR_Msk +#define FLASH_SR_BSY1_Pos (16U) +#define FLASH_SR_BSY1_Msk (0x1UL << FLASH_SR_BSY1_Pos) /*!< 0x00010000 */ +#define FLASH_SR_BSY1 FLASH_SR_BSY1_Msk +#define FLASH_SR_CFGBSY_Pos (18U) +#define FLASH_SR_CFGBSY_Msk (0x1UL << FLASH_SR_CFGBSY_Pos) /*!< 0x00040000 */ +#define FLASH_SR_CFGBSY FLASH_SR_CFGBSY_Msk + +/******************* Bits definition for FLASH_CR register ******************/ +#define FLASH_CR_PG_Pos (0U) +#define FLASH_CR_PG_Msk (0x1UL << FLASH_CR_PG_Pos) /*!< 0x00000001 */ +#define FLASH_CR_PG FLASH_CR_PG_Msk +#define FLASH_CR_PER_Pos (1U) +#define FLASH_CR_PER_Msk (0x1UL << FLASH_CR_PER_Pos) /*!< 0x00000002 */ +#define FLASH_CR_PER FLASH_CR_PER_Msk +#define FLASH_CR_MER1_Pos (2U) +#define FLASH_CR_MER1_Msk (0x1UL << FLASH_CR_MER1_Pos) /*!< 0x00000004 */ +#define FLASH_CR_MER1 FLASH_CR_MER1_Msk +#define FLASH_CR_PNB_Pos (3U) +#define FLASH_CR_PNB_Msk (0x3FFUL << FLASH_CR_PNB_Pos) /*!< 0x00001FF8 */ +#define FLASH_CR_PNB FLASH_CR_PNB_Msk +#define FLASH_CR_STRT_Pos (16U) +#define FLASH_CR_STRT_Msk (0x1UL << FLASH_CR_STRT_Pos) /*!< 0x00010000 */ +#define FLASH_CR_STRT FLASH_CR_STRT_Msk +#define FLASH_CR_OPTSTRT_Pos (17U) +#define FLASH_CR_OPTSTRT_Msk (0x1UL << FLASH_CR_OPTSTRT_Pos) /*!< 0x00020000 */ +#define FLASH_CR_OPTSTRT FLASH_CR_OPTSTRT_Msk +#define FLASH_CR_FSTPG_Pos (18U) +#define FLASH_CR_FSTPG_Msk (0x1UL << FLASH_CR_FSTPG_Pos) /*!< 0x00040000 */ +#define FLASH_CR_FSTPG FLASH_CR_FSTPG_Msk +#define FLASH_CR_EOPIE_Pos (24U) +#define FLASH_CR_EOPIE_Msk (0x1UL << FLASH_CR_EOPIE_Pos) /*!< 0x01000000 */ +#define FLASH_CR_EOPIE FLASH_CR_EOPIE_Msk +#define FLASH_CR_ERRIE_Pos (25U) +#define FLASH_CR_ERRIE_Msk (0x1UL << FLASH_CR_ERRIE_Pos) /*!< 0x02000000 */ +#define FLASH_CR_ERRIE FLASH_CR_ERRIE_Msk +#define FLASH_CR_OBL_LAUNCH_Pos (27U) +#define FLASH_CR_OBL_LAUNCH_Msk (0x1UL << FLASH_CR_OBL_LAUNCH_Pos) /*!< 0x08000000 */ +#define FLASH_CR_OBL_LAUNCH FLASH_CR_OBL_LAUNCH_Msk +#define FLASH_CR_OPTLOCK_Pos (30U) +#define FLASH_CR_OPTLOCK_Msk (0x1UL << FLASH_CR_OPTLOCK_Pos) /*!< 0x40000000 */ +#define FLASH_CR_OPTLOCK FLASH_CR_OPTLOCK_Msk +#define FLASH_CR_LOCK_Pos (31U) +#define FLASH_CR_LOCK_Msk (0x1UL << FLASH_CR_LOCK_Pos) /*!< 0x80000000 */ +#define FLASH_CR_LOCK FLASH_CR_LOCK_Msk + +/******************* Bits definition for FLASH_ECCR register ****************/ +#define FLASH_ECCR_ADDR_ECC_Pos (0U) +#define FLASH_ECCR_ADDR_ECC_Msk (0x3FFFUL << FLASH_ECCR_ADDR_ECC_Pos) /*!< 0x00003FFF */ +#define FLASH_ECCR_ADDR_ECC FLASH_ECCR_ADDR_ECC_Msk +#define FLASH_ECCR_SYSF_ECC_Pos (20U) +#define FLASH_ECCR_SYSF_ECC_Msk (0x1UL << FLASH_ECCR_SYSF_ECC_Pos) /*!< 0x00100000 */ +#define FLASH_ECCR_SYSF_ECC FLASH_ECCR_SYSF_ECC_Msk +#define FLASH_ECCR_ECCCIE_Pos (24U) +#define FLASH_ECCR_ECCCIE_Msk (0x1UL << FLASH_ECCR_ECCCIE_Pos) /*!< 0x01000000 */ +#define FLASH_ECCR_ECCCIE FLASH_ECCR_ECCCIE_Msk +#define FLASH_ECCR_ECCC_Pos (30U) +#define FLASH_ECCR_ECCC_Msk (0x1UL << FLASH_ECCR_ECCC_Pos) /*!< 0x40000000 */ +#define FLASH_ECCR_ECCC FLASH_ECCR_ECCC_Msk +#define FLASH_ECCR_ECCD_Pos (31U) +#define FLASH_ECCR_ECCD_Msk (0x1UL << FLASH_ECCR_ECCD_Pos) /*!< 0x80000000 */ +#define FLASH_ECCR_ECCD FLASH_ECCR_ECCD_Msk + +/******************* Bits definition for FLASH_OPTR register ****************/ +#define FLASH_OPTR_RDP_Pos (0U) +#define FLASH_OPTR_RDP_Msk (0xFFUL << FLASH_OPTR_RDP_Pos) /*!< 0x000000FF */ +#define FLASH_OPTR_RDP FLASH_OPTR_RDP_Msk +#define FLASH_OPTR_nRST_STOP_Pos (13U) +#define FLASH_OPTR_nRST_STOP_Msk (0x1UL << FLASH_OPTR_nRST_STOP_Pos) /*!< 0x00002000 */ +#define FLASH_OPTR_nRST_STOP FLASH_OPTR_nRST_STOP_Msk +#define FLASH_OPTR_nRST_STDBY_Pos (14U) +#define FLASH_OPTR_nRST_STDBY_Msk (0x1UL << FLASH_OPTR_nRST_STDBY_Pos) /*!< 0x00004000 */ +#define FLASH_OPTR_nRST_STDBY FLASH_OPTR_nRST_STDBY_Msk +#define FLASH_OPTR_IWDG_SW_Pos (16U) +#define FLASH_OPTR_IWDG_SW_Msk (0x1UL << FLASH_OPTR_IWDG_SW_Pos) /*!< 0x00010000 */ +#define FLASH_OPTR_IWDG_SW FLASH_OPTR_IWDG_SW_Msk +#define FLASH_OPTR_IWDG_STOP_Pos (17U) +#define FLASH_OPTR_IWDG_STOP_Msk (0x1UL << FLASH_OPTR_IWDG_STOP_Pos) /*!< 0x00020000 */ +#define FLASH_OPTR_IWDG_STOP FLASH_OPTR_IWDG_STOP_Msk +#define FLASH_OPTR_IWDG_STDBY_Pos (18U) +#define FLASH_OPTR_IWDG_STDBY_Msk (0x1UL << FLASH_OPTR_IWDG_STDBY_Pos) /*!< 0x00040000 */ +#define FLASH_OPTR_IWDG_STDBY FLASH_OPTR_IWDG_STDBY_Msk +#define FLASH_OPTR_WWDG_SW_Pos (19U) +#define FLASH_OPTR_WWDG_SW_Msk (0x1UL << FLASH_OPTR_WWDG_SW_Pos) /*!< 0x00080000 */ +#define FLASH_OPTR_WWDG_SW FLASH_OPTR_WWDG_SW_Msk +#define FLASH_OPTR_RAM_PARITY_CHECK_Pos (22U) +#define FLASH_OPTR_RAM_PARITY_CHECK_Msk (0x1UL << FLASH_OPTR_RAM_PARITY_CHECK_Pos) /*!< 0x00400000 */ +#define FLASH_OPTR_RAM_PARITY_CHECK FLASH_OPTR_RAM_PARITY_CHECK_Msk +#define FLASH_OPTR_nBOOT_SEL_Pos (24U) +#define FLASH_OPTR_nBOOT_SEL_Msk (0x1UL << FLASH_OPTR_nBOOT_SEL_Pos) /*!< 0x01000000 */ +#define FLASH_OPTR_nBOOT_SEL FLASH_OPTR_nBOOT_SEL_Msk +#define FLASH_OPTR_nBOOT1_Pos (25U) +#define FLASH_OPTR_nBOOT1_Msk (0x1UL << FLASH_OPTR_nBOOT1_Pos) /*!< 0x02000000 */ +#define FLASH_OPTR_nBOOT1 FLASH_OPTR_nBOOT1_Msk +#define FLASH_OPTR_nBOOT0_Pos (26U) +#define FLASH_OPTR_nBOOT0_Msk (0x1UL << FLASH_OPTR_nBOOT0_Pos) /*!< 0x04000000 */ +#define FLASH_OPTR_nBOOT0 FLASH_OPTR_nBOOT0_Msk + +/****************** Bits definition for FLASH_WRP1AR register ***************/ +#define FLASH_WRP1AR_WRP1A_STRT_Pos (0U) +#define FLASH_WRP1AR_WRP1A_STRT_Msk (0x3FUL << FLASH_WRP1AR_WRP1A_STRT_Pos) /*!< 0x0000003F */ +#define FLASH_WRP1AR_WRP1A_STRT FLASH_WRP1AR_WRP1A_STRT_Msk +#define FLASH_WRP1AR_WRP1A_END_Pos (16U) +#define FLASH_WRP1AR_WRP1A_END_Msk (0x3FUL << FLASH_WRP1AR_WRP1A_END_Pos) /*!< 0x003F0000 */ +#define FLASH_WRP1AR_WRP1A_END FLASH_WRP1AR_WRP1A_END_Msk + +/****************** Bits definition for FLASH_WRP1BR register ***************/ +#define FLASH_WRP1BR_WRP1B_STRT_Pos (0U) +#define FLASH_WRP1BR_WRP1B_STRT_Msk (0x3FUL << FLASH_WRP1BR_WRP1B_STRT_Pos) /*!< 0x0000003F */ +#define FLASH_WRP1BR_WRP1B_STRT FLASH_WRP1BR_WRP1B_STRT_Msk +#define FLASH_WRP1BR_WRP1B_END_Pos (16U) +#define FLASH_WRP1BR_WRP1B_END_Msk (0x3FUL << FLASH_WRP1BR_WRP1B_END_Pos) /*!< 0x003F0000 */ +#define FLASH_WRP1BR_WRP1B_END FLASH_WRP1BR_WRP1B_END_Msk + + +/******************************************************************************/ +/* */ +/* General Purpose I/O */ +/* */ +/******************************************************************************/ +/****************** Bits definition for GPIO_MODER register *****************/ +#define GPIO_MODER_MODE0_Pos (0U) +#define GPIO_MODER_MODE0_Msk (0x3UL << GPIO_MODER_MODE0_Pos) /*!< 0x00000003 */ +#define GPIO_MODER_MODE0 GPIO_MODER_MODE0_Msk +#define GPIO_MODER_MODE0_0 (0x1UL << GPIO_MODER_MODE0_Pos) /*!< 0x00000001 */ +#define GPIO_MODER_MODE0_1 (0x2UL << GPIO_MODER_MODE0_Pos) /*!< 0x00000002 */ +#define GPIO_MODER_MODE1_Pos (2U) +#define GPIO_MODER_MODE1_Msk (0x3UL << GPIO_MODER_MODE1_Pos) /*!< 0x0000000C */ +#define GPIO_MODER_MODE1 GPIO_MODER_MODE1_Msk +#define GPIO_MODER_MODE1_0 (0x1UL << GPIO_MODER_MODE1_Pos) /*!< 0x00000004 */ +#define GPIO_MODER_MODE1_1 (0x2UL << GPIO_MODER_MODE1_Pos) /*!< 0x00000008 */ +#define GPIO_MODER_MODE2_Pos (4U) +#define GPIO_MODER_MODE2_Msk (0x3UL << GPIO_MODER_MODE2_Pos) /*!< 0x00000030 */ +#define GPIO_MODER_MODE2 GPIO_MODER_MODE2_Msk +#define GPIO_MODER_MODE2_0 (0x1UL << GPIO_MODER_MODE2_Pos) /*!< 0x00000010 */ +#define GPIO_MODER_MODE2_1 (0x2UL << GPIO_MODER_MODE2_Pos) /*!< 0x00000020 */ +#define GPIO_MODER_MODE3_Pos (6U) +#define GPIO_MODER_MODE3_Msk (0x3UL << GPIO_MODER_MODE3_Pos) /*!< 0x000000C0 */ +#define GPIO_MODER_MODE3 GPIO_MODER_MODE3_Msk +#define GPIO_MODER_MODE3_0 (0x1UL << GPIO_MODER_MODE3_Pos) /*!< 0x00000040 */ +#define GPIO_MODER_MODE3_1 (0x2UL << GPIO_MODER_MODE3_Pos) /*!< 0x00000080 */ +#define GPIO_MODER_MODE4_Pos (8U) +#define GPIO_MODER_MODE4_Msk (0x3UL << GPIO_MODER_MODE4_Pos) /*!< 0x00000300 */ +#define GPIO_MODER_MODE4 GPIO_MODER_MODE4_Msk +#define GPIO_MODER_MODE4_0 (0x1UL << GPIO_MODER_MODE4_Pos) /*!< 0x00000100 */ +#define GPIO_MODER_MODE4_1 (0x2UL << GPIO_MODER_MODE4_Pos) /*!< 0x00000200 */ +#define GPIO_MODER_MODE5_Pos (10U) +#define GPIO_MODER_MODE5_Msk (0x3UL << GPIO_MODER_MODE5_Pos) /*!< 0x00000C00 */ +#define GPIO_MODER_MODE5 GPIO_MODER_MODE5_Msk +#define GPIO_MODER_MODE5_0 (0x1UL << GPIO_MODER_MODE5_Pos) /*!< 0x00000400 */ +#define GPIO_MODER_MODE5_1 (0x2UL << GPIO_MODER_MODE5_Pos) /*!< 0x00000800 */ +#define GPIO_MODER_MODE6_Pos (12U) +#define GPIO_MODER_MODE6_Msk (0x3UL << GPIO_MODER_MODE6_Pos) /*!< 0x00003000 */ +#define GPIO_MODER_MODE6 GPIO_MODER_MODE6_Msk +#define GPIO_MODER_MODE6_0 (0x1UL << GPIO_MODER_MODE6_Pos) /*!< 0x00001000 */ +#define GPIO_MODER_MODE6_1 (0x2UL << GPIO_MODER_MODE6_Pos) /*!< 0x00002000 */ +#define GPIO_MODER_MODE7_Pos (14U) +#define GPIO_MODER_MODE7_Msk (0x3UL << GPIO_MODER_MODE7_Pos) /*!< 0x0000C000 */ +#define GPIO_MODER_MODE7 GPIO_MODER_MODE7_Msk +#define GPIO_MODER_MODE7_0 (0x1UL << GPIO_MODER_MODE7_Pos) /*!< 0x00004000 */ +#define GPIO_MODER_MODE7_1 (0x2UL << GPIO_MODER_MODE7_Pos) /*!< 0x00008000 */ +#define GPIO_MODER_MODE8_Pos (16U) +#define GPIO_MODER_MODE8_Msk (0x3UL << GPIO_MODER_MODE8_Pos) /*!< 0x00030000 */ +#define GPIO_MODER_MODE8 GPIO_MODER_MODE8_Msk +#define GPIO_MODER_MODE8_0 (0x1UL << GPIO_MODER_MODE8_Pos) /*!< 0x00010000 */ +#define GPIO_MODER_MODE8_1 (0x2UL << GPIO_MODER_MODE8_Pos) /*!< 0x00020000 */ +#define GPIO_MODER_MODE9_Pos (18U) +#define GPIO_MODER_MODE9_Msk (0x3UL << GPIO_MODER_MODE9_Pos) /*!< 0x000C0000 */ +#define GPIO_MODER_MODE9 GPIO_MODER_MODE9_Msk +#define GPIO_MODER_MODE9_0 (0x1UL << GPIO_MODER_MODE9_Pos) /*!< 0x00040000 */ +#define GPIO_MODER_MODE9_1 (0x2UL << GPIO_MODER_MODE9_Pos) /*!< 0x00080000 */ +#define GPIO_MODER_MODE10_Pos (20U) +#define GPIO_MODER_MODE10_Msk (0x3UL << GPIO_MODER_MODE10_Pos) /*!< 0x00300000 */ +#define GPIO_MODER_MODE10 GPIO_MODER_MODE10_Msk +#define GPIO_MODER_MODE10_0 (0x1UL << GPIO_MODER_MODE10_Pos) /*!< 0x00100000 */ +#define GPIO_MODER_MODE10_1 (0x2UL << GPIO_MODER_MODE10_Pos) /*!< 0x00200000 */ +#define GPIO_MODER_MODE11_Pos (22U) +#define GPIO_MODER_MODE11_Msk (0x3UL << GPIO_MODER_MODE11_Pos) /*!< 0x00C00000 */ +#define GPIO_MODER_MODE11 GPIO_MODER_MODE11_Msk +#define GPIO_MODER_MODE11_0 (0x1UL << GPIO_MODER_MODE11_Pos) /*!< 0x00400000 */ +#define GPIO_MODER_MODE11_1 (0x2UL << GPIO_MODER_MODE11_Pos) /*!< 0x00800000 */ +#define GPIO_MODER_MODE12_Pos (24U) +#define GPIO_MODER_MODE12_Msk (0x3UL << GPIO_MODER_MODE12_Pos) /*!< 0x03000000 */ +#define GPIO_MODER_MODE12 GPIO_MODER_MODE12_Msk +#define GPIO_MODER_MODE12_0 (0x1UL << GPIO_MODER_MODE12_Pos) /*!< 0x01000000 */ +#define GPIO_MODER_MODE12_1 (0x2UL << GPIO_MODER_MODE12_Pos) /*!< 0x02000000 */ +#define GPIO_MODER_MODE13_Pos (26U) +#define GPIO_MODER_MODE13_Msk (0x3UL << GPIO_MODER_MODE13_Pos) /*!< 0x0C000000 */ +#define GPIO_MODER_MODE13 GPIO_MODER_MODE13_Msk +#define GPIO_MODER_MODE13_0 (0x1UL << GPIO_MODER_MODE13_Pos) /*!< 0x04000000 */ +#define GPIO_MODER_MODE13_1 (0x2UL << GPIO_MODER_MODE13_Pos) /*!< 0x08000000 */ +#define GPIO_MODER_MODE14_Pos (28U) +#define GPIO_MODER_MODE14_Msk (0x3UL << GPIO_MODER_MODE14_Pos) /*!< 0x30000000 */ +#define GPIO_MODER_MODE14 GPIO_MODER_MODE14_Msk +#define GPIO_MODER_MODE14_0 (0x1UL << GPIO_MODER_MODE14_Pos) /*!< 0x10000000 */ +#define GPIO_MODER_MODE14_1 (0x2UL << GPIO_MODER_MODE14_Pos) /*!< 0x20000000 */ +#define GPIO_MODER_MODE15_Pos (30U) +#define GPIO_MODER_MODE15_Msk (0x3UL << GPIO_MODER_MODE15_Pos) /*!< 0xC0000000 */ +#define GPIO_MODER_MODE15 GPIO_MODER_MODE15_Msk +#define GPIO_MODER_MODE15_0 (0x1UL << GPIO_MODER_MODE15_Pos) /*!< 0x40000000 */ +#define GPIO_MODER_MODE15_1 (0x2UL << GPIO_MODER_MODE15_Pos) /*!< 0x80000000 */ + +/****************** Bits definition for GPIO_OTYPER register ****************/ +#define GPIO_OTYPER_OT0_Pos (0U) +#define GPIO_OTYPER_OT0_Msk (0x1UL << GPIO_OTYPER_OT0_Pos) /*!< 0x00000001 */ +#define GPIO_OTYPER_OT0 GPIO_OTYPER_OT0_Msk +#define GPIO_OTYPER_OT1_Pos (1U) +#define GPIO_OTYPER_OT1_Msk (0x1UL << GPIO_OTYPER_OT1_Pos) /*!< 0x00000002 */ +#define GPIO_OTYPER_OT1 GPIO_OTYPER_OT1_Msk +#define GPIO_OTYPER_OT2_Pos (2U) +#define GPIO_OTYPER_OT2_Msk (0x1UL << GPIO_OTYPER_OT2_Pos) /*!< 0x00000004 */ +#define GPIO_OTYPER_OT2 GPIO_OTYPER_OT2_Msk +#define GPIO_OTYPER_OT3_Pos (3U) +#define GPIO_OTYPER_OT3_Msk (0x1UL << GPIO_OTYPER_OT3_Pos) /*!< 0x00000008 */ +#define GPIO_OTYPER_OT3 GPIO_OTYPER_OT3_Msk +#define GPIO_OTYPER_OT4_Pos (4U) +#define GPIO_OTYPER_OT4_Msk (0x1UL << GPIO_OTYPER_OT4_Pos) /*!< 0x00000010 */ +#define GPIO_OTYPER_OT4 GPIO_OTYPER_OT4_Msk +#define GPIO_OTYPER_OT5_Pos (5U) +#define GPIO_OTYPER_OT5_Msk (0x1UL << GPIO_OTYPER_OT5_Pos) /*!< 0x00000020 */ +#define GPIO_OTYPER_OT5 GPIO_OTYPER_OT5_Msk +#define GPIO_OTYPER_OT6_Pos (6U) +#define GPIO_OTYPER_OT6_Msk (0x1UL << GPIO_OTYPER_OT6_Pos) /*!< 0x00000040 */ +#define GPIO_OTYPER_OT6 GPIO_OTYPER_OT6_Msk +#define GPIO_OTYPER_OT7_Pos (7U) +#define GPIO_OTYPER_OT7_Msk (0x1UL << GPIO_OTYPER_OT7_Pos) /*!< 0x00000080 */ +#define GPIO_OTYPER_OT7 GPIO_OTYPER_OT7_Msk +#define GPIO_OTYPER_OT8_Pos (8U) +#define GPIO_OTYPER_OT8_Msk (0x1UL << GPIO_OTYPER_OT8_Pos) /*!< 0x00000100 */ +#define GPIO_OTYPER_OT8 GPIO_OTYPER_OT8_Msk +#define GPIO_OTYPER_OT9_Pos (9U) +#define GPIO_OTYPER_OT9_Msk (0x1UL << GPIO_OTYPER_OT9_Pos) /*!< 0x00000200 */ +#define GPIO_OTYPER_OT9 GPIO_OTYPER_OT9_Msk +#define GPIO_OTYPER_OT10_Pos (10U) +#define GPIO_OTYPER_OT10_Msk (0x1UL << GPIO_OTYPER_OT10_Pos) /*!< 0x00000400 */ +#define GPIO_OTYPER_OT10 GPIO_OTYPER_OT10_Msk +#define GPIO_OTYPER_OT11_Pos (11U) +#define GPIO_OTYPER_OT11_Msk (0x1UL << GPIO_OTYPER_OT11_Pos) /*!< 0x00000800 */ +#define GPIO_OTYPER_OT11 GPIO_OTYPER_OT11_Msk +#define GPIO_OTYPER_OT12_Pos (12U) +#define GPIO_OTYPER_OT12_Msk (0x1UL << GPIO_OTYPER_OT12_Pos) /*!< 0x00001000 */ +#define GPIO_OTYPER_OT12 GPIO_OTYPER_OT12_Msk +#define GPIO_OTYPER_OT13_Pos (13U) +#define GPIO_OTYPER_OT13_Msk (0x1UL << GPIO_OTYPER_OT13_Pos) /*!< 0x00002000 */ +#define GPIO_OTYPER_OT13 GPIO_OTYPER_OT13_Msk +#define GPIO_OTYPER_OT14_Pos (14U) +#define GPIO_OTYPER_OT14_Msk (0x1UL << GPIO_OTYPER_OT14_Pos) /*!< 0x00004000 */ +#define GPIO_OTYPER_OT14 GPIO_OTYPER_OT14_Msk +#define GPIO_OTYPER_OT15_Pos (15U) +#define GPIO_OTYPER_OT15_Msk (0x1UL << GPIO_OTYPER_OT15_Pos) /*!< 0x00008000 */ +#define GPIO_OTYPER_OT15 GPIO_OTYPER_OT15_Msk + +/****************** Bits definition for GPIO_OSPEEDR register ***************/ +#define GPIO_OSPEEDR_OSPEED0_Pos (0U) +#define GPIO_OSPEEDR_OSPEED0_Msk (0x3UL << GPIO_OSPEEDR_OSPEED0_Pos) /*!< 0x00000003 */ +#define GPIO_OSPEEDR_OSPEED0 GPIO_OSPEEDR_OSPEED0_Msk +#define GPIO_OSPEEDR_OSPEED0_0 (0x1UL << GPIO_OSPEEDR_OSPEED0_Pos) /*!< 0x00000001 */ +#define GPIO_OSPEEDR_OSPEED0_1 (0x2UL << GPIO_OSPEEDR_OSPEED0_Pos) /*!< 0x00000002 */ +#define GPIO_OSPEEDR_OSPEED1_Pos (2U) +#define GPIO_OSPEEDR_OSPEED1_Msk (0x3UL << GPIO_OSPEEDR_OSPEED1_Pos) /*!< 0x0000000C */ +#define GPIO_OSPEEDR_OSPEED1 GPIO_OSPEEDR_OSPEED1_Msk +#define GPIO_OSPEEDR_OSPEED1_0 (0x1UL << GPIO_OSPEEDR_OSPEED1_Pos) /*!< 0x00000004 */ +#define GPIO_OSPEEDR_OSPEED1_1 (0x2UL << GPIO_OSPEEDR_OSPEED1_Pos) /*!< 0x00000008 */ +#define GPIO_OSPEEDR_OSPEED2_Pos (4U) +#define GPIO_OSPEEDR_OSPEED2_Msk (0x3UL << GPIO_OSPEEDR_OSPEED2_Pos) /*!< 0x00000030 */ +#define GPIO_OSPEEDR_OSPEED2 GPIO_OSPEEDR_OSPEED2_Msk +#define GPIO_OSPEEDR_OSPEED2_0 (0x1UL << GPIO_OSPEEDR_OSPEED2_Pos) /*!< 0x00000010 */ +#define GPIO_OSPEEDR_OSPEED2_1 (0x2UL << GPIO_OSPEEDR_OSPEED2_Pos) /*!< 0x00000020 */ +#define GPIO_OSPEEDR_OSPEED3_Pos (6U) +#define GPIO_OSPEEDR_OSPEED3_Msk (0x3UL << GPIO_OSPEEDR_OSPEED3_Pos) /*!< 0x000000C0 */ +#define GPIO_OSPEEDR_OSPEED3 GPIO_OSPEEDR_OSPEED3_Msk +#define GPIO_OSPEEDR_OSPEED3_0 (0x1UL << GPIO_OSPEEDR_OSPEED3_Pos) /*!< 0x00000040 */ +#define GPIO_OSPEEDR_OSPEED3_1 (0x2UL << GPIO_OSPEEDR_OSPEED3_Pos) /*!< 0x00000080 */ +#define GPIO_OSPEEDR_OSPEED4_Pos (8U) +#define GPIO_OSPEEDR_OSPEED4_Msk (0x3UL << GPIO_OSPEEDR_OSPEED4_Pos) /*!< 0x00000300 */ +#define GPIO_OSPEEDR_OSPEED4 GPIO_OSPEEDR_OSPEED4_Msk +#define GPIO_OSPEEDR_OSPEED4_0 (0x1UL << GPIO_OSPEEDR_OSPEED4_Pos) /*!< 0x00000100 */ +#define GPIO_OSPEEDR_OSPEED4_1 (0x2UL << GPIO_OSPEEDR_OSPEED4_Pos) /*!< 0x00000200 */ +#define GPIO_OSPEEDR_OSPEED5_Pos (10U) +#define GPIO_OSPEEDR_OSPEED5_Msk (0x3UL << GPIO_OSPEEDR_OSPEED5_Pos) /*!< 0x00000C00 */ +#define GPIO_OSPEEDR_OSPEED5 GPIO_OSPEEDR_OSPEED5_Msk +#define GPIO_OSPEEDR_OSPEED5_0 (0x1UL << GPIO_OSPEEDR_OSPEED5_Pos) /*!< 0x00000400 */ +#define GPIO_OSPEEDR_OSPEED5_1 (0x2UL << GPIO_OSPEEDR_OSPEED5_Pos) /*!< 0x00000800 */ +#define GPIO_OSPEEDR_OSPEED6_Pos (12U) +#define GPIO_OSPEEDR_OSPEED6_Msk (0x3UL << GPIO_OSPEEDR_OSPEED6_Pos) /*!< 0x00003000 */ +#define GPIO_OSPEEDR_OSPEED6 GPIO_OSPEEDR_OSPEED6_Msk +#define GPIO_OSPEEDR_OSPEED6_0 (0x1UL << GPIO_OSPEEDR_OSPEED6_Pos) /*!< 0x00001000 */ +#define GPIO_OSPEEDR_OSPEED6_1 (0x2UL << GPIO_OSPEEDR_OSPEED6_Pos) /*!< 0x00002000 */ +#define GPIO_OSPEEDR_OSPEED7_Pos (14U) +#define GPIO_OSPEEDR_OSPEED7_Msk (0x3UL << GPIO_OSPEEDR_OSPEED7_Pos) /*!< 0x0000C000 */ +#define GPIO_OSPEEDR_OSPEED7 GPIO_OSPEEDR_OSPEED7_Msk +#define GPIO_OSPEEDR_OSPEED7_0 (0x1UL << GPIO_OSPEEDR_OSPEED7_Pos) /*!< 0x00004000 */ +#define GPIO_OSPEEDR_OSPEED7_1 (0x2UL << GPIO_OSPEEDR_OSPEED7_Pos) /*!< 0x00008000 */ +#define GPIO_OSPEEDR_OSPEED8_Pos (16U) +#define GPIO_OSPEEDR_OSPEED8_Msk (0x3UL << GPIO_OSPEEDR_OSPEED8_Pos) /*!< 0x00030000 */ +#define GPIO_OSPEEDR_OSPEED8 GPIO_OSPEEDR_OSPEED8_Msk +#define GPIO_OSPEEDR_OSPEED8_0 (0x1UL << GPIO_OSPEEDR_OSPEED8_Pos) /*!< 0x00010000 */ +#define GPIO_OSPEEDR_OSPEED8_1 (0x2UL << GPIO_OSPEEDR_OSPEED8_Pos) /*!< 0x00020000 */ +#define GPIO_OSPEEDR_OSPEED9_Pos (18U) +#define GPIO_OSPEEDR_OSPEED9_Msk (0x3UL << GPIO_OSPEEDR_OSPEED9_Pos) /*!< 0x000C0000 */ +#define GPIO_OSPEEDR_OSPEED9 GPIO_OSPEEDR_OSPEED9_Msk +#define GPIO_OSPEEDR_OSPEED9_0 (0x1UL << GPIO_OSPEEDR_OSPEED9_Pos) /*!< 0x00040000 */ +#define GPIO_OSPEEDR_OSPEED9_1 (0x2UL << GPIO_OSPEEDR_OSPEED9_Pos) /*!< 0x00080000 */ +#define GPIO_OSPEEDR_OSPEED10_Pos (20U) +#define GPIO_OSPEEDR_OSPEED10_Msk (0x3UL << GPIO_OSPEEDR_OSPEED10_Pos) /*!< 0x00300000 */ +#define GPIO_OSPEEDR_OSPEED10 GPIO_OSPEEDR_OSPEED10_Msk +#define GPIO_OSPEEDR_OSPEED10_0 (0x1UL << GPIO_OSPEEDR_OSPEED10_Pos) /*!< 0x00100000 */ +#define GPIO_OSPEEDR_OSPEED10_1 (0x2UL << GPIO_OSPEEDR_OSPEED10_Pos) /*!< 0x00200000 */ +#define GPIO_OSPEEDR_OSPEED11_Pos (22U) +#define GPIO_OSPEEDR_OSPEED11_Msk (0x3UL << GPIO_OSPEEDR_OSPEED11_Pos) /*!< 0x00C00000 */ +#define GPIO_OSPEEDR_OSPEED11 GPIO_OSPEEDR_OSPEED11_Msk +#define GPIO_OSPEEDR_OSPEED11_0 (0x1UL << GPIO_OSPEEDR_OSPEED11_Pos) /*!< 0x00400000 */ +#define GPIO_OSPEEDR_OSPEED11_1 (0x2UL << GPIO_OSPEEDR_OSPEED11_Pos) /*!< 0x00800000 */ +#define GPIO_OSPEEDR_OSPEED12_Pos (24U) +#define GPIO_OSPEEDR_OSPEED12_Msk (0x3UL << GPIO_OSPEEDR_OSPEED12_Pos) /*!< 0x03000000 */ +#define GPIO_OSPEEDR_OSPEED12 GPIO_OSPEEDR_OSPEED12_Msk +#define GPIO_OSPEEDR_OSPEED12_0 (0x1UL << GPIO_OSPEEDR_OSPEED12_Pos) /*!< 0x01000000 */ +#define GPIO_OSPEEDR_OSPEED12_1 (0x2UL << GPIO_OSPEEDR_OSPEED12_Pos) /*!< 0x02000000 */ +#define GPIO_OSPEEDR_OSPEED13_Pos (26U) +#define GPIO_OSPEEDR_OSPEED13_Msk (0x3UL << GPIO_OSPEEDR_OSPEED13_Pos) /*!< 0x0C000000 */ +#define GPIO_OSPEEDR_OSPEED13 GPIO_OSPEEDR_OSPEED13_Msk +#define GPIO_OSPEEDR_OSPEED13_0 (0x1UL << GPIO_OSPEEDR_OSPEED13_Pos) /*!< 0x04000000 */ +#define GPIO_OSPEEDR_OSPEED13_1 (0x2UL << GPIO_OSPEEDR_OSPEED13_Pos) /*!< 0x08000000 */ +#define GPIO_OSPEEDR_OSPEED14_Pos (28U) +#define GPIO_OSPEEDR_OSPEED14_Msk (0x3UL << GPIO_OSPEEDR_OSPEED14_Pos) /*!< 0x30000000 */ +#define GPIO_OSPEEDR_OSPEED14 GPIO_OSPEEDR_OSPEED14_Msk +#define GPIO_OSPEEDR_OSPEED14_0 (0x1UL << GPIO_OSPEEDR_OSPEED14_Pos) /*!< 0x10000000 */ +#define GPIO_OSPEEDR_OSPEED14_1 (0x2UL << GPIO_OSPEEDR_OSPEED14_Pos) /*!< 0x20000000 */ +#define GPIO_OSPEEDR_OSPEED15_Pos (30U) +#define GPIO_OSPEEDR_OSPEED15_Msk (0x3UL << GPIO_OSPEEDR_OSPEED15_Pos) /*!< 0xC0000000 */ +#define GPIO_OSPEEDR_OSPEED15 GPIO_OSPEEDR_OSPEED15_Msk +#define GPIO_OSPEEDR_OSPEED15_0 (0x1UL << GPIO_OSPEEDR_OSPEED15_Pos) /*!< 0x40000000 */ +#define GPIO_OSPEEDR_OSPEED15_1 (0x2UL << GPIO_OSPEEDR_OSPEED15_Pos) /*!< 0x80000000 */ + +/****************** Bits definition for GPIO_PUPDR register *****************/ +#define GPIO_PUPDR_PUPD0_Pos (0U) +#define GPIO_PUPDR_PUPD0_Msk (0x3UL << GPIO_PUPDR_PUPD0_Pos) /*!< 0x00000003 */ +#define GPIO_PUPDR_PUPD0 GPIO_PUPDR_PUPD0_Msk +#define GPIO_PUPDR_PUPD0_0 (0x1UL << GPIO_PUPDR_PUPD0_Pos) /*!< 0x00000001 */ +#define GPIO_PUPDR_PUPD0_1 (0x2UL << GPIO_PUPDR_PUPD0_Pos) /*!< 0x00000002 */ +#define GPIO_PUPDR_PUPD1_Pos (2U) +#define GPIO_PUPDR_PUPD1_Msk (0x3UL << GPIO_PUPDR_PUPD1_Pos) /*!< 0x0000000C */ +#define GPIO_PUPDR_PUPD1 GPIO_PUPDR_PUPD1_Msk +#define GPIO_PUPDR_PUPD1_0 (0x1UL << GPIO_PUPDR_PUPD1_Pos) /*!< 0x00000004 */ +#define GPIO_PUPDR_PUPD1_1 (0x2UL << GPIO_PUPDR_PUPD1_Pos) /*!< 0x00000008 */ +#define GPIO_PUPDR_PUPD2_Pos (4U) +#define GPIO_PUPDR_PUPD2_Msk (0x3UL << GPIO_PUPDR_PUPD2_Pos) /*!< 0x00000030 */ +#define GPIO_PUPDR_PUPD2 GPIO_PUPDR_PUPD2_Msk +#define GPIO_PUPDR_PUPD2_0 (0x1UL << GPIO_PUPDR_PUPD2_Pos) /*!< 0x00000010 */ +#define GPIO_PUPDR_PUPD2_1 (0x2UL << GPIO_PUPDR_PUPD2_Pos) /*!< 0x00000020 */ +#define GPIO_PUPDR_PUPD3_Pos (6U) +#define GPIO_PUPDR_PUPD3_Msk (0x3UL << GPIO_PUPDR_PUPD3_Pos) /*!< 0x000000C0 */ +#define GPIO_PUPDR_PUPD3 GPIO_PUPDR_PUPD3_Msk +#define GPIO_PUPDR_PUPD3_0 (0x1UL << GPIO_PUPDR_PUPD3_Pos) /*!< 0x00000040 */ +#define GPIO_PUPDR_PUPD3_1 (0x2UL << GPIO_PUPDR_PUPD3_Pos) /*!< 0x00000080 */ +#define GPIO_PUPDR_PUPD4_Pos (8U) +#define GPIO_PUPDR_PUPD4_Msk (0x3UL << GPIO_PUPDR_PUPD4_Pos) /*!< 0x00000300 */ +#define GPIO_PUPDR_PUPD4 GPIO_PUPDR_PUPD4_Msk +#define GPIO_PUPDR_PUPD4_0 (0x1UL << GPIO_PUPDR_PUPD4_Pos) /*!< 0x00000100 */ +#define GPIO_PUPDR_PUPD4_1 (0x2UL << GPIO_PUPDR_PUPD4_Pos) /*!< 0x00000200 */ +#define GPIO_PUPDR_PUPD5_Pos (10U) +#define GPIO_PUPDR_PUPD5_Msk (0x3UL << GPIO_PUPDR_PUPD5_Pos) /*!< 0x00000C00 */ +#define GPIO_PUPDR_PUPD5 GPIO_PUPDR_PUPD5_Msk +#define GPIO_PUPDR_PUPD5_0 (0x1UL << GPIO_PUPDR_PUPD5_Pos) /*!< 0x00000400 */ +#define GPIO_PUPDR_PUPD5_1 (0x2UL << GPIO_PUPDR_PUPD5_Pos) /*!< 0x00000800 */ +#define GPIO_PUPDR_PUPD6_Pos (12U) +#define GPIO_PUPDR_PUPD6_Msk (0x3UL << GPIO_PUPDR_PUPD6_Pos) /*!< 0x00003000 */ +#define GPIO_PUPDR_PUPD6 GPIO_PUPDR_PUPD6_Msk +#define GPIO_PUPDR_PUPD6_0 (0x1UL << GPIO_PUPDR_PUPD6_Pos) /*!< 0x00001000 */ +#define GPIO_PUPDR_PUPD6_1 (0x2UL << GPIO_PUPDR_PUPD6_Pos) /*!< 0x00002000 */ +#define GPIO_PUPDR_PUPD7_Pos (14U) +#define GPIO_PUPDR_PUPD7_Msk (0x3UL << GPIO_PUPDR_PUPD7_Pos) /*!< 0x0000C000 */ +#define GPIO_PUPDR_PUPD7 GPIO_PUPDR_PUPD7_Msk +#define GPIO_PUPDR_PUPD7_0 (0x1UL << GPIO_PUPDR_PUPD7_Pos) /*!< 0x00004000 */ +#define GPIO_PUPDR_PUPD7_1 (0x2UL << GPIO_PUPDR_PUPD7_Pos) /*!< 0x00008000 */ +#define GPIO_PUPDR_PUPD8_Pos (16U) +#define GPIO_PUPDR_PUPD8_Msk (0x3UL << GPIO_PUPDR_PUPD8_Pos) /*!< 0x00030000 */ +#define GPIO_PUPDR_PUPD8 GPIO_PUPDR_PUPD8_Msk +#define GPIO_PUPDR_PUPD8_0 (0x1UL << GPIO_PUPDR_PUPD8_Pos) /*!< 0x00010000 */ +#define GPIO_PUPDR_PUPD8_1 (0x2UL << GPIO_PUPDR_PUPD8_Pos) /*!< 0x00020000 */ +#define GPIO_PUPDR_PUPD9_Pos (18U) +#define GPIO_PUPDR_PUPD9_Msk (0x3UL << GPIO_PUPDR_PUPD9_Pos) /*!< 0x000C0000 */ +#define GPIO_PUPDR_PUPD9 GPIO_PUPDR_PUPD9_Msk +#define GPIO_PUPDR_PUPD9_0 (0x1UL << GPIO_PUPDR_PUPD9_Pos) /*!< 0x00040000 */ +#define GPIO_PUPDR_PUPD9_1 (0x2UL << GPIO_PUPDR_PUPD9_Pos) /*!< 0x00080000 */ +#define GPIO_PUPDR_PUPD10_Pos (20U) +#define GPIO_PUPDR_PUPD10_Msk (0x3UL << GPIO_PUPDR_PUPD10_Pos) /*!< 0x00300000 */ +#define GPIO_PUPDR_PUPD10 GPIO_PUPDR_PUPD10_Msk +#define GPIO_PUPDR_PUPD10_0 (0x1UL << GPIO_PUPDR_PUPD10_Pos) /*!< 0x00100000 */ +#define GPIO_PUPDR_PUPD10_1 (0x2UL << GPIO_PUPDR_PUPD10_Pos) /*!< 0x00200000 */ +#define GPIO_PUPDR_PUPD11_Pos (22U) +#define GPIO_PUPDR_PUPD11_Msk (0x3UL << GPIO_PUPDR_PUPD11_Pos) /*!< 0x00C00000 */ +#define GPIO_PUPDR_PUPD11 GPIO_PUPDR_PUPD11_Msk +#define GPIO_PUPDR_PUPD11_0 (0x1UL << GPIO_PUPDR_PUPD11_Pos) /*!< 0x00400000 */ +#define GPIO_PUPDR_PUPD11_1 (0x2UL << GPIO_PUPDR_PUPD11_Pos) /*!< 0x00800000 */ +#define GPIO_PUPDR_PUPD12_Pos (24U) +#define GPIO_PUPDR_PUPD12_Msk (0x3UL << GPIO_PUPDR_PUPD12_Pos) /*!< 0x03000000 */ +#define GPIO_PUPDR_PUPD12 GPIO_PUPDR_PUPD12_Msk +#define GPIO_PUPDR_PUPD12_0 (0x1UL << GPIO_PUPDR_PUPD12_Pos) /*!< 0x01000000 */ +#define GPIO_PUPDR_PUPD12_1 (0x2UL << GPIO_PUPDR_PUPD12_Pos) /*!< 0x02000000 */ +#define GPIO_PUPDR_PUPD13_Pos (26U) +#define GPIO_PUPDR_PUPD13_Msk (0x3UL << GPIO_PUPDR_PUPD13_Pos) /*!< 0x0C000000 */ +#define GPIO_PUPDR_PUPD13 GPIO_PUPDR_PUPD13_Msk +#define GPIO_PUPDR_PUPD13_0 (0x1UL << GPIO_PUPDR_PUPD13_Pos) /*!< 0x04000000 */ +#define GPIO_PUPDR_PUPD13_1 (0x2UL << GPIO_PUPDR_PUPD13_Pos) /*!< 0x08000000 */ +#define GPIO_PUPDR_PUPD14_Pos (28U) +#define GPIO_PUPDR_PUPD14_Msk (0x3UL << GPIO_PUPDR_PUPD14_Pos) /*!< 0x30000000 */ +#define GPIO_PUPDR_PUPD14 GPIO_PUPDR_PUPD14_Msk +#define GPIO_PUPDR_PUPD14_0 (0x1UL << GPIO_PUPDR_PUPD14_Pos) /*!< 0x10000000 */ +#define GPIO_PUPDR_PUPD14_1 (0x2UL << GPIO_PUPDR_PUPD14_Pos) /*!< 0x20000000 */ +#define GPIO_PUPDR_PUPD15_Pos (30U) +#define GPIO_PUPDR_PUPD15_Msk (0x3UL << GPIO_PUPDR_PUPD15_Pos) /*!< 0xC0000000 */ +#define GPIO_PUPDR_PUPD15 GPIO_PUPDR_PUPD15_Msk +#define GPIO_PUPDR_PUPD15_0 (0x1UL << GPIO_PUPDR_PUPD15_Pos) /*!< 0x40000000 */ +#define GPIO_PUPDR_PUPD15_1 (0x2UL << GPIO_PUPDR_PUPD15_Pos) /*!< 0x80000000 */ + +/****************** Bits definition for GPIO_IDR register *******************/ +#define GPIO_IDR_ID0_Pos (0U) +#define GPIO_IDR_ID0_Msk (0x1UL << GPIO_IDR_ID0_Pos) /*!< 0x00000001 */ +#define GPIO_IDR_ID0 GPIO_IDR_ID0_Msk +#define GPIO_IDR_ID1_Pos (1U) +#define GPIO_IDR_ID1_Msk (0x1UL << GPIO_IDR_ID1_Pos) /*!< 0x00000002 */ +#define GPIO_IDR_ID1 GPIO_IDR_ID1_Msk +#define GPIO_IDR_ID2_Pos (2U) +#define GPIO_IDR_ID2_Msk (0x1UL << GPIO_IDR_ID2_Pos) /*!< 0x00000004 */ +#define GPIO_IDR_ID2 GPIO_IDR_ID2_Msk +#define GPIO_IDR_ID3_Pos (3U) +#define GPIO_IDR_ID3_Msk (0x1UL << GPIO_IDR_ID3_Pos) /*!< 0x00000008 */ +#define GPIO_IDR_ID3 GPIO_IDR_ID3_Msk +#define GPIO_IDR_ID4_Pos (4U) +#define GPIO_IDR_ID4_Msk (0x1UL << GPIO_IDR_ID4_Pos) /*!< 0x00000010 */ +#define GPIO_IDR_ID4 GPIO_IDR_ID4_Msk +#define GPIO_IDR_ID5_Pos (5U) +#define GPIO_IDR_ID5_Msk (0x1UL << GPIO_IDR_ID5_Pos) /*!< 0x00000020 */ +#define GPIO_IDR_ID5 GPIO_IDR_ID5_Msk +#define GPIO_IDR_ID6_Pos (6U) +#define GPIO_IDR_ID6_Msk (0x1UL << GPIO_IDR_ID6_Pos) /*!< 0x00000040 */ +#define GPIO_IDR_ID6 GPIO_IDR_ID6_Msk +#define GPIO_IDR_ID7_Pos (7U) +#define GPIO_IDR_ID7_Msk (0x1UL << GPIO_IDR_ID7_Pos) /*!< 0x00000080 */ +#define GPIO_IDR_ID7 GPIO_IDR_ID7_Msk +#define GPIO_IDR_ID8_Pos (8U) +#define GPIO_IDR_ID8_Msk (0x1UL << GPIO_IDR_ID8_Pos) /*!< 0x00000100 */ +#define GPIO_IDR_ID8 GPIO_IDR_ID8_Msk +#define GPIO_IDR_ID9_Pos (9U) +#define GPIO_IDR_ID9_Msk (0x1UL << GPIO_IDR_ID9_Pos) /*!< 0x00000200 */ +#define GPIO_IDR_ID9 GPIO_IDR_ID9_Msk +#define GPIO_IDR_ID10_Pos (10U) +#define GPIO_IDR_ID10_Msk (0x1UL << GPIO_IDR_ID10_Pos) /*!< 0x00000400 */ +#define GPIO_IDR_ID10 GPIO_IDR_ID10_Msk +#define GPIO_IDR_ID11_Pos (11U) +#define GPIO_IDR_ID11_Msk (0x1UL << GPIO_IDR_ID11_Pos) /*!< 0x00000800 */ +#define GPIO_IDR_ID11 GPIO_IDR_ID11_Msk +#define GPIO_IDR_ID12_Pos (12U) +#define GPIO_IDR_ID12_Msk (0x1UL << GPIO_IDR_ID12_Pos) /*!< 0x00001000 */ +#define GPIO_IDR_ID12 GPIO_IDR_ID12_Msk +#define GPIO_IDR_ID13_Pos (13U) +#define GPIO_IDR_ID13_Msk (0x1UL << GPIO_IDR_ID13_Pos) /*!< 0x00002000 */ +#define GPIO_IDR_ID13 GPIO_IDR_ID13_Msk +#define GPIO_IDR_ID14_Pos (14U) +#define GPIO_IDR_ID14_Msk (0x1UL << GPIO_IDR_ID14_Pos) /*!< 0x00004000 */ +#define GPIO_IDR_ID14 GPIO_IDR_ID14_Msk +#define GPIO_IDR_ID15_Pos (15U) +#define GPIO_IDR_ID15_Msk (0x1UL << GPIO_IDR_ID15_Pos) /*!< 0x00008000 */ +#define GPIO_IDR_ID15 GPIO_IDR_ID15_Msk + +/****************** Bits definition for GPIO_ODR register *******************/ +#define GPIO_ODR_OD0_Pos (0U) +#define GPIO_ODR_OD0_Msk (0x1UL << GPIO_ODR_OD0_Pos) /*!< 0x00000001 */ +#define GPIO_ODR_OD0 GPIO_ODR_OD0_Msk +#define GPIO_ODR_OD1_Pos (1U) +#define GPIO_ODR_OD1_Msk (0x1UL << GPIO_ODR_OD1_Pos) /*!< 0x00000002 */ +#define GPIO_ODR_OD1 GPIO_ODR_OD1_Msk +#define GPIO_ODR_OD2_Pos (2U) +#define GPIO_ODR_OD2_Msk (0x1UL << GPIO_ODR_OD2_Pos) /*!< 0x00000004 */ +#define GPIO_ODR_OD2 GPIO_ODR_OD2_Msk +#define GPIO_ODR_OD3_Pos (3U) +#define GPIO_ODR_OD3_Msk (0x1UL << GPIO_ODR_OD3_Pos) /*!< 0x00000008 */ +#define GPIO_ODR_OD3 GPIO_ODR_OD3_Msk +#define GPIO_ODR_OD4_Pos (4U) +#define GPIO_ODR_OD4_Msk (0x1UL << GPIO_ODR_OD4_Pos) /*!< 0x00000010 */ +#define GPIO_ODR_OD4 GPIO_ODR_OD4_Msk +#define GPIO_ODR_OD5_Pos (5U) +#define GPIO_ODR_OD5_Msk (0x1UL << GPIO_ODR_OD5_Pos) /*!< 0x00000020 */ +#define GPIO_ODR_OD5 GPIO_ODR_OD5_Msk +#define GPIO_ODR_OD6_Pos (6U) +#define GPIO_ODR_OD6_Msk (0x1UL << GPIO_ODR_OD6_Pos) /*!< 0x00000040 */ +#define GPIO_ODR_OD6 GPIO_ODR_OD6_Msk +#define GPIO_ODR_OD7_Pos (7U) +#define GPIO_ODR_OD7_Msk (0x1UL << GPIO_ODR_OD7_Pos) /*!< 0x00000080 */ +#define GPIO_ODR_OD7 GPIO_ODR_OD7_Msk +#define GPIO_ODR_OD8_Pos (8U) +#define GPIO_ODR_OD8_Msk (0x1UL << GPIO_ODR_OD8_Pos) /*!< 0x00000100 */ +#define GPIO_ODR_OD8 GPIO_ODR_OD8_Msk +#define GPIO_ODR_OD9_Pos (9U) +#define GPIO_ODR_OD9_Msk (0x1UL << GPIO_ODR_OD9_Pos) /*!< 0x00000200 */ +#define GPIO_ODR_OD9 GPIO_ODR_OD9_Msk +#define GPIO_ODR_OD10_Pos (10U) +#define GPIO_ODR_OD10_Msk (0x1UL << GPIO_ODR_OD10_Pos) /*!< 0x00000400 */ +#define GPIO_ODR_OD10 GPIO_ODR_OD10_Msk +#define GPIO_ODR_OD11_Pos (11U) +#define GPIO_ODR_OD11_Msk (0x1UL << GPIO_ODR_OD11_Pos) /*!< 0x00000800 */ +#define GPIO_ODR_OD11 GPIO_ODR_OD11_Msk +#define GPIO_ODR_OD12_Pos (12U) +#define GPIO_ODR_OD12_Msk (0x1UL << GPIO_ODR_OD12_Pos) /*!< 0x00001000 */ +#define GPIO_ODR_OD12 GPIO_ODR_OD12_Msk +#define GPIO_ODR_OD13_Pos (13U) +#define GPIO_ODR_OD13_Msk (0x1UL << GPIO_ODR_OD13_Pos) /*!< 0x00002000 */ +#define GPIO_ODR_OD13 GPIO_ODR_OD13_Msk +#define GPIO_ODR_OD14_Pos (14U) +#define GPIO_ODR_OD14_Msk (0x1UL << GPIO_ODR_OD14_Pos) /*!< 0x00004000 */ +#define GPIO_ODR_OD14 GPIO_ODR_OD14_Msk +#define GPIO_ODR_OD15_Pos (15U) +#define GPIO_ODR_OD15_Msk (0x1UL << GPIO_ODR_OD15_Pos) /*!< 0x00008000 */ +#define GPIO_ODR_OD15 GPIO_ODR_OD15_Msk + +/****************** Bits definition for GPIO_BSRR register ******************/ +#define GPIO_BSRR_BS0_Pos (0U) +#define GPIO_BSRR_BS0_Msk (0x1UL << GPIO_BSRR_BS0_Pos) /*!< 0x00000001 */ +#define GPIO_BSRR_BS0 GPIO_BSRR_BS0_Msk +#define GPIO_BSRR_BS1_Pos (1U) +#define GPIO_BSRR_BS1_Msk (0x1UL << GPIO_BSRR_BS1_Pos) /*!< 0x00000002 */ +#define GPIO_BSRR_BS1 GPIO_BSRR_BS1_Msk +#define GPIO_BSRR_BS2_Pos (2U) +#define GPIO_BSRR_BS2_Msk (0x1UL << GPIO_BSRR_BS2_Pos) /*!< 0x00000004 */ +#define GPIO_BSRR_BS2 GPIO_BSRR_BS2_Msk +#define GPIO_BSRR_BS3_Pos (3U) +#define GPIO_BSRR_BS3_Msk (0x1UL << GPIO_BSRR_BS3_Pos) /*!< 0x00000008 */ +#define GPIO_BSRR_BS3 GPIO_BSRR_BS3_Msk +#define GPIO_BSRR_BS4_Pos (4U) +#define GPIO_BSRR_BS4_Msk (0x1UL << GPIO_BSRR_BS4_Pos) /*!< 0x00000010 */ +#define GPIO_BSRR_BS4 GPIO_BSRR_BS4_Msk +#define GPIO_BSRR_BS5_Pos (5U) +#define GPIO_BSRR_BS5_Msk (0x1UL << GPIO_BSRR_BS5_Pos) /*!< 0x00000020 */ +#define GPIO_BSRR_BS5 GPIO_BSRR_BS5_Msk +#define GPIO_BSRR_BS6_Pos (6U) +#define GPIO_BSRR_BS6_Msk (0x1UL << GPIO_BSRR_BS6_Pos) /*!< 0x00000040 */ +#define GPIO_BSRR_BS6 GPIO_BSRR_BS6_Msk +#define GPIO_BSRR_BS7_Pos (7U) +#define GPIO_BSRR_BS7_Msk (0x1UL << GPIO_BSRR_BS7_Pos) /*!< 0x00000080 */ +#define GPIO_BSRR_BS7 GPIO_BSRR_BS7_Msk +#define GPIO_BSRR_BS8_Pos (8U) +#define GPIO_BSRR_BS8_Msk (0x1UL << GPIO_BSRR_BS8_Pos) /*!< 0x00000100 */ +#define GPIO_BSRR_BS8 GPIO_BSRR_BS8_Msk +#define GPIO_BSRR_BS9_Pos (9U) +#define GPIO_BSRR_BS9_Msk (0x1UL << GPIO_BSRR_BS9_Pos) /*!< 0x00000200 */ +#define GPIO_BSRR_BS9 GPIO_BSRR_BS9_Msk +#define GPIO_BSRR_BS10_Pos (10U) +#define GPIO_BSRR_BS10_Msk (0x1UL << GPIO_BSRR_BS10_Pos) /*!< 0x00000400 */ +#define GPIO_BSRR_BS10 GPIO_BSRR_BS10_Msk +#define GPIO_BSRR_BS11_Pos (11U) +#define GPIO_BSRR_BS11_Msk (0x1UL << GPIO_BSRR_BS11_Pos) /*!< 0x00000800 */ +#define GPIO_BSRR_BS11 GPIO_BSRR_BS11_Msk +#define GPIO_BSRR_BS12_Pos (12U) +#define GPIO_BSRR_BS12_Msk (0x1UL << GPIO_BSRR_BS12_Pos) /*!< 0x00001000 */ +#define GPIO_BSRR_BS12 GPIO_BSRR_BS12_Msk +#define GPIO_BSRR_BS13_Pos (13U) +#define GPIO_BSRR_BS13_Msk (0x1UL << GPIO_BSRR_BS13_Pos) /*!< 0x00002000 */ +#define GPIO_BSRR_BS13 GPIO_BSRR_BS13_Msk +#define GPIO_BSRR_BS14_Pos (14U) +#define GPIO_BSRR_BS14_Msk (0x1UL << GPIO_BSRR_BS14_Pos) /*!< 0x00004000 */ +#define GPIO_BSRR_BS14 GPIO_BSRR_BS14_Msk +#define GPIO_BSRR_BS15_Pos (15U) +#define GPIO_BSRR_BS15_Msk (0x1UL << GPIO_BSRR_BS15_Pos) /*!< 0x00008000 */ +#define GPIO_BSRR_BS15 GPIO_BSRR_BS15_Msk +#define GPIO_BSRR_BR0_Pos (16U) +#define GPIO_BSRR_BR0_Msk (0x1UL << GPIO_BSRR_BR0_Pos) /*!< 0x00010000 */ +#define GPIO_BSRR_BR0 GPIO_BSRR_BR0_Msk +#define GPIO_BSRR_BR1_Pos (17U) +#define GPIO_BSRR_BR1_Msk (0x1UL << GPIO_BSRR_BR1_Pos) /*!< 0x00020000 */ +#define GPIO_BSRR_BR1 GPIO_BSRR_BR1_Msk +#define GPIO_BSRR_BR2_Pos (18U) +#define GPIO_BSRR_BR2_Msk (0x1UL << GPIO_BSRR_BR2_Pos) /*!< 0x00040000 */ +#define GPIO_BSRR_BR2 GPIO_BSRR_BR2_Msk +#define GPIO_BSRR_BR3_Pos (19U) +#define GPIO_BSRR_BR3_Msk (0x1UL << GPIO_BSRR_BR3_Pos) /*!< 0x00080000 */ +#define GPIO_BSRR_BR3 GPIO_BSRR_BR3_Msk +#define GPIO_BSRR_BR4_Pos (20U) +#define GPIO_BSRR_BR4_Msk (0x1UL << GPIO_BSRR_BR4_Pos) /*!< 0x00100000 */ +#define GPIO_BSRR_BR4 GPIO_BSRR_BR4_Msk +#define GPIO_BSRR_BR5_Pos (21U) +#define GPIO_BSRR_BR5_Msk (0x1UL << GPIO_BSRR_BR5_Pos) /*!< 0x00200000 */ +#define GPIO_BSRR_BR5 GPIO_BSRR_BR5_Msk +#define GPIO_BSRR_BR6_Pos (22U) +#define GPIO_BSRR_BR6_Msk (0x1UL << GPIO_BSRR_BR6_Pos) /*!< 0x00400000 */ +#define GPIO_BSRR_BR6 GPIO_BSRR_BR6_Msk +#define GPIO_BSRR_BR7_Pos (23U) +#define GPIO_BSRR_BR7_Msk (0x1UL << GPIO_BSRR_BR7_Pos) /*!< 0x00800000 */ +#define GPIO_BSRR_BR7 GPIO_BSRR_BR7_Msk +#define GPIO_BSRR_BR8_Pos (24U) +#define GPIO_BSRR_BR8_Msk (0x1UL << GPIO_BSRR_BR8_Pos) /*!< 0x01000000 */ +#define GPIO_BSRR_BR8 GPIO_BSRR_BR8_Msk +#define GPIO_BSRR_BR9_Pos (25U) +#define GPIO_BSRR_BR9_Msk (0x1UL << GPIO_BSRR_BR9_Pos) /*!< 0x02000000 */ +#define GPIO_BSRR_BR9 GPIO_BSRR_BR9_Msk +#define GPIO_BSRR_BR10_Pos (26U) +#define GPIO_BSRR_BR10_Msk (0x1UL << GPIO_BSRR_BR10_Pos) /*!< 0x04000000 */ +#define GPIO_BSRR_BR10 GPIO_BSRR_BR10_Msk +#define GPIO_BSRR_BR11_Pos (27U) +#define GPIO_BSRR_BR11_Msk (0x1UL << GPIO_BSRR_BR11_Pos) /*!< 0x08000000 */ +#define GPIO_BSRR_BR11 GPIO_BSRR_BR11_Msk +#define GPIO_BSRR_BR12_Pos (28U) +#define GPIO_BSRR_BR12_Msk (0x1UL << GPIO_BSRR_BR12_Pos) /*!< 0x10000000 */ +#define GPIO_BSRR_BR12 GPIO_BSRR_BR12_Msk +#define GPIO_BSRR_BR13_Pos (29U) +#define GPIO_BSRR_BR13_Msk (0x1UL << GPIO_BSRR_BR13_Pos) /*!< 0x20000000 */ +#define GPIO_BSRR_BR13 GPIO_BSRR_BR13_Msk +#define GPIO_BSRR_BR14_Pos (30U) +#define GPIO_BSRR_BR14_Msk (0x1UL << GPIO_BSRR_BR14_Pos) /*!< 0x40000000 */ +#define GPIO_BSRR_BR14 GPIO_BSRR_BR14_Msk +#define GPIO_BSRR_BR15_Pos (31U) +#define GPIO_BSRR_BR15_Msk (0x1UL << GPIO_BSRR_BR15_Pos) /*!< 0x80000000 */ +#define GPIO_BSRR_BR15 GPIO_BSRR_BR15_Msk + +/****************** Bit definition for GPIO_LCKR register *********************/ +#define GPIO_LCKR_LCK0_Pos (0U) +#define GPIO_LCKR_LCK0_Msk (0x1UL << GPIO_LCKR_LCK0_Pos) /*!< 0x00000001 */ +#define GPIO_LCKR_LCK0 GPIO_LCKR_LCK0_Msk +#define GPIO_LCKR_LCK1_Pos (1U) +#define GPIO_LCKR_LCK1_Msk (0x1UL << GPIO_LCKR_LCK1_Pos) /*!< 0x00000002 */ +#define GPIO_LCKR_LCK1 GPIO_LCKR_LCK1_Msk +#define GPIO_LCKR_LCK2_Pos (2U) +#define GPIO_LCKR_LCK2_Msk (0x1UL << GPIO_LCKR_LCK2_Pos) /*!< 0x00000004 */ +#define GPIO_LCKR_LCK2 GPIO_LCKR_LCK2_Msk +#define GPIO_LCKR_LCK3_Pos (3U) +#define GPIO_LCKR_LCK3_Msk (0x1UL << GPIO_LCKR_LCK3_Pos) /*!< 0x00000008 */ +#define GPIO_LCKR_LCK3 GPIO_LCKR_LCK3_Msk +#define GPIO_LCKR_LCK4_Pos (4U) +#define GPIO_LCKR_LCK4_Msk (0x1UL << GPIO_LCKR_LCK4_Pos) /*!< 0x00000010 */ +#define GPIO_LCKR_LCK4 GPIO_LCKR_LCK4_Msk +#define GPIO_LCKR_LCK5_Pos (5U) +#define GPIO_LCKR_LCK5_Msk (0x1UL << GPIO_LCKR_LCK5_Pos) /*!< 0x00000020 */ +#define GPIO_LCKR_LCK5 GPIO_LCKR_LCK5_Msk +#define GPIO_LCKR_LCK6_Pos (6U) +#define GPIO_LCKR_LCK6_Msk (0x1UL << GPIO_LCKR_LCK6_Pos) /*!< 0x00000040 */ +#define GPIO_LCKR_LCK6 GPIO_LCKR_LCK6_Msk +#define GPIO_LCKR_LCK7_Pos (7U) +#define GPIO_LCKR_LCK7_Msk (0x1UL << GPIO_LCKR_LCK7_Pos) /*!< 0x00000080 */ +#define GPIO_LCKR_LCK7 GPIO_LCKR_LCK7_Msk +#define GPIO_LCKR_LCK8_Pos (8U) +#define GPIO_LCKR_LCK8_Msk (0x1UL << GPIO_LCKR_LCK8_Pos) /*!< 0x00000100 */ +#define GPIO_LCKR_LCK8 GPIO_LCKR_LCK8_Msk +#define GPIO_LCKR_LCK9_Pos (9U) +#define GPIO_LCKR_LCK9_Msk (0x1UL << GPIO_LCKR_LCK9_Pos) /*!< 0x00000200 */ +#define GPIO_LCKR_LCK9 GPIO_LCKR_LCK9_Msk +#define GPIO_LCKR_LCK10_Pos (10U) +#define GPIO_LCKR_LCK10_Msk (0x1UL << GPIO_LCKR_LCK10_Pos) /*!< 0x00000400 */ +#define GPIO_LCKR_LCK10 GPIO_LCKR_LCK10_Msk +#define GPIO_LCKR_LCK11_Pos (11U) +#define GPIO_LCKR_LCK11_Msk (0x1UL << GPIO_LCKR_LCK11_Pos) /*!< 0x00000800 */ +#define GPIO_LCKR_LCK11 GPIO_LCKR_LCK11_Msk +#define GPIO_LCKR_LCK12_Pos (12U) +#define GPIO_LCKR_LCK12_Msk (0x1UL << GPIO_LCKR_LCK12_Pos) /*!< 0x00001000 */ +#define GPIO_LCKR_LCK12 GPIO_LCKR_LCK12_Msk +#define GPIO_LCKR_LCK13_Pos (13U) +#define GPIO_LCKR_LCK13_Msk (0x1UL << GPIO_LCKR_LCK13_Pos) /*!< 0x00002000 */ +#define GPIO_LCKR_LCK13 GPIO_LCKR_LCK13_Msk +#define GPIO_LCKR_LCK14_Pos (14U) +#define GPIO_LCKR_LCK14_Msk (0x1UL << GPIO_LCKR_LCK14_Pos) /*!< 0x00004000 */ +#define GPIO_LCKR_LCK14 GPIO_LCKR_LCK14_Msk +#define GPIO_LCKR_LCK15_Pos (15U) +#define GPIO_LCKR_LCK15_Msk (0x1UL << GPIO_LCKR_LCK15_Pos) /*!< 0x00008000 */ +#define GPIO_LCKR_LCK15 GPIO_LCKR_LCK15_Msk +#define GPIO_LCKR_LCKK_Pos (16U) +#define GPIO_LCKR_LCKK_Msk (0x1UL << GPIO_LCKR_LCKK_Pos) /*!< 0x00010000 */ +#define GPIO_LCKR_LCKK GPIO_LCKR_LCKK_Msk + +/****************** Bit definition for GPIO_AFRL register *********************/ +#define GPIO_AFRL_AFSEL0_Pos (0U) +#define GPIO_AFRL_AFSEL0_Msk (0xFUL << GPIO_AFRL_AFSEL0_Pos) /*!< 0x0000000F */ +#define GPIO_AFRL_AFSEL0 GPIO_AFRL_AFSEL0_Msk +#define GPIO_AFRL_AFSEL0_0 (0x1UL << GPIO_AFRL_AFSEL0_Pos) /*!< 0x00000001 */ +#define GPIO_AFRL_AFSEL0_1 (0x2UL << GPIO_AFRL_AFSEL0_Pos) /*!< 0x00000002 */ +#define GPIO_AFRL_AFSEL0_2 (0x4UL << GPIO_AFRL_AFSEL0_Pos) /*!< 0x00000004 */ +#define GPIO_AFRL_AFSEL0_3 (0x8UL << GPIO_AFRL_AFSEL0_Pos) /*!< 0x00000008 */ +#define GPIO_AFRL_AFSEL1_Pos (4U) +#define GPIO_AFRL_AFSEL1_Msk (0xFUL << GPIO_AFRL_AFSEL1_Pos) /*!< 0x000000F0 */ +#define GPIO_AFRL_AFSEL1 GPIO_AFRL_AFSEL1_Msk +#define GPIO_AFRL_AFSEL1_0 (0x1UL << GPIO_AFRL_AFSEL1_Pos) /*!< 0x00000010 */ +#define GPIO_AFRL_AFSEL1_1 (0x2UL << GPIO_AFRL_AFSEL1_Pos) /*!< 0x00000020 */ +#define GPIO_AFRL_AFSEL1_2 (0x4UL << GPIO_AFRL_AFSEL1_Pos) /*!< 0x00000040 */ +#define GPIO_AFRL_AFSEL1_3 (0x8UL << GPIO_AFRL_AFSEL1_Pos) /*!< 0x00000080 */ +#define GPIO_AFRL_AFSEL2_Pos (8U) +#define GPIO_AFRL_AFSEL2_Msk (0xFUL << GPIO_AFRL_AFSEL2_Pos) /*!< 0x00000F00 */ +#define GPIO_AFRL_AFSEL2 GPIO_AFRL_AFSEL2_Msk +#define GPIO_AFRL_AFSEL2_0 (0x1UL << GPIO_AFRL_AFSEL2_Pos) /*!< 0x00000100 */ +#define GPIO_AFRL_AFSEL2_1 (0x2UL << GPIO_AFRL_AFSEL2_Pos) /*!< 0x00000200 */ +#define GPIO_AFRL_AFSEL2_2 (0x4UL << GPIO_AFRL_AFSEL2_Pos) /*!< 0x00000400 */ +#define GPIO_AFRL_AFSEL2_3 (0x8UL << GPIO_AFRL_AFSEL2_Pos) /*!< 0x00000800 */ +#define GPIO_AFRL_AFSEL3_Pos (12U) +#define GPIO_AFRL_AFSEL3_Msk (0xFUL << GPIO_AFRL_AFSEL3_Pos) /*!< 0x0000F000 */ +#define GPIO_AFRL_AFSEL3 GPIO_AFRL_AFSEL3_Msk +#define GPIO_AFRL_AFSEL3_0 (0x1UL << GPIO_AFRL_AFSEL3_Pos) /*!< 0x00001000 */ +#define GPIO_AFRL_AFSEL3_1 (0x2UL << GPIO_AFRL_AFSEL3_Pos) /*!< 0x00002000 */ +#define GPIO_AFRL_AFSEL3_2 (0x4UL << GPIO_AFRL_AFSEL3_Pos) /*!< 0x00004000 */ +#define GPIO_AFRL_AFSEL3_3 (0x8UL << GPIO_AFRL_AFSEL3_Pos) /*!< 0x00008000 */ +#define GPIO_AFRL_AFSEL4_Pos (16U) +#define GPIO_AFRL_AFSEL4_Msk (0xFUL << GPIO_AFRL_AFSEL4_Pos) /*!< 0x000F0000 */ +#define GPIO_AFRL_AFSEL4 GPIO_AFRL_AFSEL4_Msk +#define GPIO_AFRL_AFSEL4_0 (0x1UL << GPIO_AFRL_AFSEL4_Pos) /*!< 0x00010000 */ +#define GPIO_AFRL_AFSEL4_1 (0x2UL << GPIO_AFRL_AFSEL4_Pos) /*!< 0x00020000 */ +#define GPIO_AFRL_AFSEL4_2 (0x4UL << GPIO_AFRL_AFSEL4_Pos) /*!< 0x00040000 */ +#define GPIO_AFRL_AFSEL4_3 (0x8UL << GPIO_AFRL_AFSEL4_Pos) /*!< 0x00080000 */ +#define GPIO_AFRL_AFSEL5_Pos (20U) +#define GPIO_AFRL_AFSEL5_Msk (0xFUL << GPIO_AFRL_AFSEL5_Pos) /*!< 0x00F00000 */ +#define GPIO_AFRL_AFSEL5 GPIO_AFRL_AFSEL5_Msk +#define GPIO_AFRL_AFSEL5_0 (0x1UL << GPIO_AFRL_AFSEL5_Pos) /*!< 0x00100000 */ +#define GPIO_AFRL_AFSEL5_1 (0x2UL << GPIO_AFRL_AFSEL5_Pos) /*!< 0x00200000 */ +#define GPIO_AFRL_AFSEL5_2 (0x4UL << GPIO_AFRL_AFSEL5_Pos) /*!< 0x00400000 */ +#define GPIO_AFRL_AFSEL5_3 (0x8UL << GPIO_AFRL_AFSEL5_Pos) /*!< 0x00800000 */ +#define GPIO_AFRL_AFSEL6_Pos (24U) +#define GPIO_AFRL_AFSEL6_Msk (0xFUL << GPIO_AFRL_AFSEL6_Pos) /*!< 0x0F000000 */ +#define GPIO_AFRL_AFSEL6 GPIO_AFRL_AFSEL6_Msk +#define GPIO_AFRL_AFSEL6_0 (0x1UL << GPIO_AFRL_AFSEL6_Pos) /*!< 0x01000000 */ +#define GPIO_AFRL_AFSEL6_1 (0x2UL << GPIO_AFRL_AFSEL6_Pos) /*!< 0x02000000 */ +#define GPIO_AFRL_AFSEL6_2 (0x4UL << GPIO_AFRL_AFSEL6_Pos) /*!< 0x04000000 */ +#define GPIO_AFRL_AFSEL6_3 (0x8UL << GPIO_AFRL_AFSEL6_Pos) /*!< 0x08000000 */ +#define GPIO_AFRL_AFSEL7_Pos (28U) +#define GPIO_AFRL_AFSEL7_Msk (0xFUL << GPIO_AFRL_AFSEL7_Pos) /*!< 0xF0000000 */ +#define GPIO_AFRL_AFSEL7 GPIO_AFRL_AFSEL7_Msk +#define GPIO_AFRL_AFSEL7_0 (0x1UL << GPIO_AFRL_AFSEL7_Pos) /*!< 0x10000000 */ +#define GPIO_AFRL_AFSEL7_1 (0x2UL << GPIO_AFRL_AFSEL7_Pos) /*!< 0x20000000 */ +#define GPIO_AFRL_AFSEL7_2 (0x4UL << GPIO_AFRL_AFSEL7_Pos) /*!< 0x40000000 */ +#define GPIO_AFRL_AFSEL7_3 (0x8UL << GPIO_AFRL_AFSEL7_Pos) /*!< 0x80000000 */ + +/****************** Bit definition for GPIO_AFRH register *********************/ +#define GPIO_AFRH_AFSEL8_Pos (0U) +#define GPIO_AFRH_AFSEL8_Msk (0xFUL << GPIO_AFRH_AFSEL8_Pos) /*!< 0x0000000F */ +#define GPIO_AFRH_AFSEL8 GPIO_AFRH_AFSEL8_Msk +#define GPIO_AFRH_AFSEL8_0 (0x1UL << GPIO_AFRH_AFSEL8_Pos) /*!< 0x00000001 */ +#define GPIO_AFRH_AFSEL8_1 (0x2UL << GPIO_AFRH_AFSEL8_Pos) /*!< 0x00000002 */ +#define GPIO_AFRH_AFSEL8_2 (0x4UL << GPIO_AFRH_AFSEL8_Pos) /*!< 0x00000004 */ +#define GPIO_AFRH_AFSEL8_3 (0x8UL << GPIO_AFRH_AFSEL8_Pos) /*!< 0x00000008 */ +#define GPIO_AFRH_AFSEL9_Pos (4U) +#define GPIO_AFRH_AFSEL9_Msk (0xFUL << GPIO_AFRH_AFSEL9_Pos) /*!< 0x000000F0 */ +#define GPIO_AFRH_AFSEL9 GPIO_AFRH_AFSEL9_Msk +#define GPIO_AFRH_AFSEL9_0 (0x1UL << GPIO_AFRH_AFSEL9_Pos) /*!< 0x00000010 */ +#define GPIO_AFRH_AFSEL9_1 (0x2UL << GPIO_AFRH_AFSEL9_Pos) /*!< 0x00000020 */ +#define GPIO_AFRH_AFSEL9_2 (0x4UL << GPIO_AFRH_AFSEL9_Pos) /*!< 0x00000040 */ +#define GPIO_AFRH_AFSEL9_3 (0x8UL << GPIO_AFRH_AFSEL9_Pos) /*!< 0x00000080 */ +#define GPIO_AFRH_AFSEL10_Pos (8U) +#define GPIO_AFRH_AFSEL10_Msk (0xFUL << GPIO_AFRH_AFSEL10_Pos) /*!< 0x00000F00 */ +#define GPIO_AFRH_AFSEL10 GPIO_AFRH_AFSEL10_Msk +#define GPIO_AFRH_AFSEL10_0 (0x1UL << GPIO_AFRH_AFSEL10_Pos) /*!< 0x00000100 */ +#define GPIO_AFRH_AFSEL10_1 (0x2UL << GPIO_AFRH_AFSEL10_Pos) /*!< 0x00000200 */ +#define GPIO_AFRH_AFSEL10_2 (0x4UL << GPIO_AFRH_AFSEL10_Pos) /*!< 0x00000400 */ +#define GPIO_AFRH_AFSEL10_3 (0x8UL << GPIO_AFRH_AFSEL10_Pos) /*!< 0x00000800 */ +#define GPIO_AFRH_AFSEL11_Pos (12U) +#define GPIO_AFRH_AFSEL11_Msk (0xFUL << GPIO_AFRH_AFSEL11_Pos) /*!< 0x0000F000 */ +#define GPIO_AFRH_AFSEL11 GPIO_AFRH_AFSEL11_Msk +#define GPIO_AFRH_AFSEL11_0 (0x1UL << GPIO_AFRH_AFSEL11_Pos) /*!< 0x00001000 */ +#define GPIO_AFRH_AFSEL11_1 (0x2UL << GPIO_AFRH_AFSEL11_Pos) /*!< 0x00002000 */ +#define GPIO_AFRH_AFSEL11_2 (0x4UL << GPIO_AFRH_AFSEL11_Pos) /*!< 0x00004000 */ +#define GPIO_AFRH_AFSEL11_3 (0x8UL << GPIO_AFRH_AFSEL11_Pos) /*!< 0x00008000 */ +#define GPIO_AFRH_AFSEL12_Pos (16U) +#define GPIO_AFRH_AFSEL12_Msk (0xFUL << GPIO_AFRH_AFSEL12_Pos) /*!< 0x000F0000 */ +#define GPIO_AFRH_AFSEL12 GPIO_AFRH_AFSEL12_Msk +#define GPIO_AFRH_AFSEL12_0 (0x1UL << GPIO_AFRH_AFSEL12_Pos) /*!< 0x00010000 */ +#define GPIO_AFRH_AFSEL12_1 (0x2UL << GPIO_AFRH_AFSEL12_Pos) /*!< 0x00020000 */ +#define GPIO_AFRH_AFSEL12_2 (0x4UL << GPIO_AFRH_AFSEL12_Pos) /*!< 0x00040000 */ +#define GPIO_AFRH_AFSEL12_3 (0x8UL << GPIO_AFRH_AFSEL12_Pos) /*!< 0x00080000 */ +#define GPIO_AFRH_AFSEL13_Pos (20U) +#define GPIO_AFRH_AFSEL13_Msk (0xFUL << GPIO_AFRH_AFSEL13_Pos) /*!< 0x00F00000 */ +#define GPIO_AFRH_AFSEL13 GPIO_AFRH_AFSEL13_Msk +#define GPIO_AFRH_AFSEL13_0 (0x1UL << GPIO_AFRH_AFSEL13_Pos) /*!< 0x00100000 */ +#define GPIO_AFRH_AFSEL13_1 (0x2UL << GPIO_AFRH_AFSEL13_Pos) /*!< 0x00200000 */ +#define GPIO_AFRH_AFSEL13_2 (0x4UL << GPIO_AFRH_AFSEL13_Pos) /*!< 0x00400000 */ +#define GPIO_AFRH_AFSEL13_3 (0x8UL << GPIO_AFRH_AFSEL13_Pos) /*!< 0x00800000 */ +#define GPIO_AFRH_AFSEL14_Pos (24U) +#define GPIO_AFRH_AFSEL14_Msk (0xFUL << GPIO_AFRH_AFSEL14_Pos) /*!< 0x0F000000 */ +#define GPIO_AFRH_AFSEL14 GPIO_AFRH_AFSEL14_Msk +#define GPIO_AFRH_AFSEL14_0 (0x1UL << GPIO_AFRH_AFSEL14_Pos) /*!< 0x01000000 */ +#define GPIO_AFRH_AFSEL14_1 (0x2UL << GPIO_AFRH_AFSEL14_Pos) /*!< 0x02000000 */ +#define GPIO_AFRH_AFSEL14_2 (0x4UL << GPIO_AFRH_AFSEL14_Pos) /*!< 0x04000000 */ +#define GPIO_AFRH_AFSEL14_3 (0x8UL << GPIO_AFRH_AFSEL14_Pos) /*!< 0x08000000 */ +#define GPIO_AFRH_AFSEL15_Pos (28U) +#define GPIO_AFRH_AFSEL15_Msk (0xFUL << GPIO_AFRH_AFSEL15_Pos) /*!< 0xF0000000 */ +#define GPIO_AFRH_AFSEL15 GPIO_AFRH_AFSEL15_Msk +#define GPIO_AFRH_AFSEL15_0 (0x1UL << GPIO_AFRH_AFSEL15_Pos) /*!< 0x10000000 */ +#define GPIO_AFRH_AFSEL15_1 (0x2UL << GPIO_AFRH_AFSEL15_Pos) /*!< 0x20000000 */ +#define GPIO_AFRH_AFSEL15_2 (0x4UL << GPIO_AFRH_AFSEL15_Pos) /*!< 0x40000000 */ +#define GPIO_AFRH_AFSEL15_3 (0x8UL << GPIO_AFRH_AFSEL15_Pos) /*!< 0x80000000 */ + +/****************** Bits definition for GPIO_BRR register ******************/ +#define GPIO_BRR_BR0_Pos (0U) +#define GPIO_BRR_BR0_Msk (0x1UL << GPIO_BRR_BR0_Pos) /*!< 0x00000001 */ +#define GPIO_BRR_BR0 GPIO_BRR_BR0_Msk +#define GPIO_BRR_BR1_Pos (1U) +#define GPIO_BRR_BR1_Msk (0x1UL << GPIO_BRR_BR1_Pos) /*!< 0x00000002 */ +#define GPIO_BRR_BR1 GPIO_BRR_BR1_Msk +#define GPIO_BRR_BR2_Pos (2U) +#define GPIO_BRR_BR2_Msk (0x1UL << GPIO_BRR_BR2_Pos) /*!< 0x00000004 */ +#define GPIO_BRR_BR2 GPIO_BRR_BR2_Msk +#define GPIO_BRR_BR3_Pos (3U) +#define GPIO_BRR_BR3_Msk (0x1UL << GPIO_BRR_BR3_Pos) /*!< 0x00000008 */ +#define GPIO_BRR_BR3 GPIO_BRR_BR3_Msk +#define GPIO_BRR_BR4_Pos (4U) +#define GPIO_BRR_BR4_Msk (0x1UL << GPIO_BRR_BR4_Pos) /*!< 0x00000010 */ +#define GPIO_BRR_BR4 GPIO_BRR_BR4_Msk +#define GPIO_BRR_BR5_Pos (5U) +#define GPIO_BRR_BR5_Msk (0x1UL << GPIO_BRR_BR5_Pos) /*!< 0x00000020 */ +#define GPIO_BRR_BR5 GPIO_BRR_BR5_Msk +#define GPIO_BRR_BR6_Pos (6U) +#define GPIO_BRR_BR6_Msk (0x1UL << GPIO_BRR_BR6_Pos) /*!< 0x00000040 */ +#define GPIO_BRR_BR6 GPIO_BRR_BR6_Msk +#define GPIO_BRR_BR7_Pos (7U) +#define GPIO_BRR_BR7_Msk (0x1UL << GPIO_BRR_BR7_Pos) /*!< 0x00000080 */ +#define GPIO_BRR_BR7 GPIO_BRR_BR7_Msk +#define GPIO_BRR_BR8_Pos (8U) +#define GPIO_BRR_BR8_Msk (0x1UL << GPIO_BRR_BR8_Pos) /*!< 0x00000100 */ +#define GPIO_BRR_BR8 GPIO_BRR_BR8_Msk +#define GPIO_BRR_BR9_Pos (9U) +#define GPIO_BRR_BR9_Msk (0x1UL << GPIO_BRR_BR9_Pos) /*!< 0x00000200 */ +#define GPIO_BRR_BR9 GPIO_BRR_BR9_Msk +#define GPIO_BRR_BR10_Pos (10U) +#define GPIO_BRR_BR10_Msk (0x1UL << GPIO_BRR_BR10_Pos) /*!< 0x00000400 */ +#define GPIO_BRR_BR10 GPIO_BRR_BR10_Msk +#define GPIO_BRR_BR11_Pos (11U) +#define GPIO_BRR_BR11_Msk (0x1UL << GPIO_BRR_BR11_Pos) /*!< 0x00000800 */ +#define GPIO_BRR_BR11 GPIO_BRR_BR11_Msk +#define GPIO_BRR_BR12_Pos (12U) +#define GPIO_BRR_BR12_Msk (0x1UL << GPIO_BRR_BR12_Pos) /*!< 0x00001000 */ +#define GPIO_BRR_BR12 GPIO_BRR_BR12_Msk +#define GPIO_BRR_BR13_Pos (13U) +#define GPIO_BRR_BR13_Msk (0x1UL << GPIO_BRR_BR13_Pos) /*!< 0x00002000 */ +#define GPIO_BRR_BR13 GPIO_BRR_BR13_Msk +#define GPIO_BRR_BR14_Pos (14U) +#define GPIO_BRR_BR14_Msk (0x1UL << GPIO_BRR_BR14_Pos) /*!< 0x00004000 */ +#define GPIO_BRR_BR14 GPIO_BRR_BR14_Msk +#define GPIO_BRR_BR15_Pos (15U) +#define GPIO_BRR_BR15_Msk (0x1UL << GPIO_BRR_BR15_Pos) /*!< 0x00008000 */ +#define GPIO_BRR_BR15 GPIO_BRR_BR15_Msk + + +/******************************************************************************/ +/* */ +/* Inter-integrated Circuit Interface (I2C) */ +/* */ +/******************************************************************************/ +/******************* Bit definition for I2C_CR1 register *******************/ +#define I2C_CR1_PE_Pos (0U) +#define I2C_CR1_PE_Msk (0x1UL << I2C_CR1_PE_Pos) /*!< 0x00000001 */ +#define I2C_CR1_PE I2C_CR1_PE_Msk /*!< Peripheral enable */ +#define I2C_CR1_TXIE_Pos (1U) +#define I2C_CR1_TXIE_Msk (0x1UL << I2C_CR1_TXIE_Pos) /*!< 0x00000002 */ +#define I2C_CR1_TXIE I2C_CR1_TXIE_Msk /*!< TX interrupt enable */ +#define I2C_CR1_RXIE_Pos (2U) +#define I2C_CR1_RXIE_Msk (0x1UL << I2C_CR1_RXIE_Pos) /*!< 0x00000004 */ +#define I2C_CR1_RXIE I2C_CR1_RXIE_Msk /*!< RX interrupt enable */ +#define I2C_CR1_ADDRIE_Pos (3U) +#define I2C_CR1_ADDRIE_Msk (0x1UL << I2C_CR1_ADDRIE_Pos) /*!< 0x00000008 */ +#define I2C_CR1_ADDRIE I2C_CR1_ADDRIE_Msk /*!< Address match interrupt enable */ +#define I2C_CR1_NACKIE_Pos (4U) +#define I2C_CR1_NACKIE_Msk (0x1UL << I2C_CR1_NACKIE_Pos) /*!< 0x00000010 */ +#define I2C_CR1_NACKIE I2C_CR1_NACKIE_Msk /*!< NACK received interrupt enable */ +#define I2C_CR1_STOPIE_Pos (5U) +#define I2C_CR1_STOPIE_Msk (0x1UL << I2C_CR1_STOPIE_Pos) /*!< 0x00000020 */ +#define I2C_CR1_STOPIE I2C_CR1_STOPIE_Msk /*!< STOP detection interrupt enable */ +#define I2C_CR1_TCIE_Pos (6U) +#define I2C_CR1_TCIE_Msk (0x1UL << I2C_CR1_TCIE_Pos) /*!< 0x00000040 */ +#define I2C_CR1_TCIE I2C_CR1_TCIE_Msk /*!< Transfer complete interrupt enable */ +#define I2C_CR1_ERRIE_Pos (7U) +#define I2C_CR1_ERRIE_Msk (0x1UL << I2C_CR1_ERRIE_Pos) /*!< 0x00000080 */ +#define I2C_CR1_ERRIE I2C_CR1_ERRIE_Msk /*!< Errors interrupt enable */ +#define I2C_CR1_DNF_Pos (8U) +#define I2C_CR1_DNF_Msk (0xFUL << I2C_CR1_DNF_Pos) /*!< 0x00000F00 */ +#define I2C_CR1_DNF I2C_CR1_DNF_Msk /*!< Digital noise filter */ +#define I2C_CR1_ANFOFF_Pos (12U) +#define I2C_CR1_ANFOFF_Msk (0x1UL << I2C_CR1_ANFOFF_Pos) /*!< 0x00001000 */ +#define I2C_CR1_ANFOFF I2C_CR1_ANFOFF_Msk /*!< Analog noise filter OFF */ +#define I2C_CR1_SWRST_Pos (13U) +#define I2C_CR1_SWRST_Msk (0x1UL << I2C_CR1_SWRST_Pos) /*!< 0x00002000 */ +#define I2C_CR1_SWRST I2C_CR1_SWRST_Msk /*!< Software reset */ +#define I2C_CR1_TXDMAEN_Pos (14U) +#define I2C_CR1_TXDMAEN_Msk (0x1UL << I2C_CR1_TXDMAEN_Pos) /*!< 0x00004000 */ +#define I2C_CR1_TXDMAEN I2C_CR1_TXDMAEN_Msk /*!< DMA transmission requests enable */ +#define I2C_CR1_RXDMAEN_Pos (15U) +#define I2C_CR1_RXDMAEN_Msk (0x1UL << I2C_CR1_RXDMAEN_Pos) /*!< 0x00008000 */ +#define I2C_CR1_RXDMAEN I2C_CR1_RXDMAEN_Msk /*!< DMA reception requests enable */ +#define I2C_CR1_SBC_Pos (16U) +#define I2C_CR1_SBC_Msk (0x1UL << I2C_CR1_SBC_Pos) /*!< 0x00010000 */ +#define I2C_CR1_SBC I2C_CR1_SBC_Msk /*!< Slave byte control */ +#define I2C_CR1_NOSTRETCH_Pos (17U) +#define I2C_CR1_NOSTRETCH_Msk (0x1UL << I2C_CR1_NOSTRETCH_Pos) /*!< 0x00020000 */ +#define I2C_CR1_NOSTRETCH I2C_CR1_NOSTRETCH_Msk /*!< Clock stretching disable */ +#define I2C_CR1_WUPEN_Pos (18U) +#define I2C_CR1_WUPEN_Msk (0x1UL << I2C_CR1_WUPEN_Pos) /*!< 0x00040000 */ +#define I2C_CR1_WUPEN I2C_CR1_WUPEN_Msk /*!< Wakeup from STOP enable */ +#define I2C_CR1_GCEN_Pos (19U) +#define I2C_CR1_GCEN_Msk (0x1UL << I2C_CR1_GCEN_Pos) /*!< 0x00080000 */ +#define I2C_CR1_GCEN I2C_CR1_GCEN_Msk /*!< General call enable */ +#define I2C_CR1_SMBHEN_Pos (20U) +#define I2C_CR1_SMBHEN_Msk (0x1UL << I2C_CR1_SMBHEN_Pos) /*!< 0x00100000 */ +#define I2C_CR1_SMBHEN I2C_CR1_SMBHEN_Msk /*!< SMBus host address enable */ +#define I2C_CR1_SMBDEN_Pos (21U) +#define I2C_CR1_SMBDEN_Msk (0x1UL << I2C_CR1_SMBDEN_Pos) /*!< 0x00200000 */ +#define I2C_CR1_SMBDEN I2C_CR1_SMBDEN_Msk /*!< SMBus device default address enable */ +#define I2C_CR1_ALERTEN_Pos (22U) +#define I2C_CR1_ALERTEN_Msk (0x1UL << I2C_CR1_ALERTEN_Pos) /*!< 0x00400000 */ +#define I2C_CR1_ALERTEN I2C_CR1_ALERTEN_Msk /*!< SMBus alert enable */ +#define I2C_CR1_PECEN_Pos (23U) +#define I2C_CR1_PECEN_Msk (0x1UL << I2C_CR1_PECEN_Pos) /*!< 0x00800000 */ +#define I2C_CR1_PECEN I2C_CR1_PECEN_Msk /*!< PEC enable */ + +/****************** Bit definition for I2C_CR2 register ********************/ +#define I2C_CR2_SADD_Pos (0U) +#define I2C_CR2_SADD_Msk (0x3FFUL << I2C_CR2_SADD_Pos) /*!< 0x000003FF */ +#define I2C_CR2_SADD I2C_CR2_SADD_Msk /*!< Slave address (master mode) */ +#define I2C_CR2_RD_WRN_Pos (10U) +#define I2C_CR2_RD_WRN_Msk (0x1UL << I2C_CR2_RD_WRN_Pos) /*!< 0x00000400 */ +#define I2C_CR2_RD_WRN I2C_CR2_RD_WRN_Msk /*!< Transfer direction (master mode) */ +#define I2C_CR2_ADD10_Pos (11U) +#define I2C_CR2_ADD10_Msk (0x1UL << I2C_CR2_ADD10_Pos) /*!< 0x00000800 */ +#define I2C_CR2_ADD10 I2C_CR2_ADD10_Msk /*!< 10-bit addressing mode (master mode) */ +#define I2C_CR2_HEAD10R_Pos (12U) +#define I2C_CR2_HEAD10R_Msk (0x1UL << I2C_CR2_HEAD10R_Pos) /*!< 0x00001000 */ +#define I2C_CR2_HEAD10R I2C_CR2_HEAD10R_Msk /*!< 10-bit address header only read direction (master mode) */ +#define I2C_CR2_START_Pos (13U) +#define I2C_CR2_START_Msk (0x1UL << I2C_CR2_START_Pos) /*!< 0x00002000 */ +#define I2C_CR2_START I2C_CR2_START_Msk /*!< START generation */ +#define I2C_CR2_STOP_Pos (14U) +#define I2C_CR2_STOP_Msk (0x1UL << I2C_CR2_STOP_Pos) /*!< 0x00004000 */ +#define I2C_CR2_STOP I2C_CR2_STOP_Msk /*!< STOP generation (master mode) */ +#define I2C_CR2_NACK_Pos (15U) +#define I2C_CR2_NACK_Msk (0x1UL << I2C_CR2_NACK_Pos) /*!< 0x00008000 */ +#define I2C_CR2_NACK I2C_CR2_NACK_Msk /*!< NACK generation (slave mode) */ +#define I2C_CR2_NBYTES_Pos (16U) +#define I2C_CR2_NBYTES_Msk (0xFFUL << I2C_CR2_NBYTES_Pos) /*!< 0x00FF0000 */ +#define I2C_CR2_NBYTES I2C_CR2_NBYTES_Msk /*!< Number of bytes */ +#define I2C_CR2_RELOAD_Pos (24U) +#define I2C_CR2_RELOAD_Msk (0x1UL << I2C_CR2_RELOAD_Pos) /*!< 0x01000000 */ +#define I2C_CR2_RELOAD I2C_CR2_RELOAD_Msk /*!< NBYTES reload mode */ +#define I2C_CR2_AUTOEND_Pos (25U) +#define I2C_CR2_AUTOEND_Msk (0x1UL << I2C_CR2_AUTOEND_Pos) /*!< 0x02000000 */ +#define I2C_CR2_AUTOEND I2C_CR2_AUTOEND_Msk /*!< Automatic end mode (master mode) */ +#define I2C_CR2_PECBYTE_Pos (26U) +#define I2C_CR2_PECBYTE_Msk (0x1UL << I2C_CR2_PECBYTE_Pos) /*!< 0x04000000 */ +#define I2C_CR2_PECBYTE I2C_CR2_PECBYTE_Msk /*!< Packet error checking byte */ + +/******************* Bit definition for I2C_OAR1 register ******************/ +#define I2C_OAR1_OA1_Pos (0U) +#define I2C_OAR1_OA1_Msk (0x3FFUL << I2C_OAR1_OA1_Pos) /*!< 0x000003FF */ +#define I2C_OAR1_OA1 I2C_OAR1_OA1_Msk /*!< Interface own address 1 */ +#define I2C_OAR1_OA1MODE_Pos (10U) +#define I2C_OAR1_OA1MODE_Msk (0x1UL << I2C_OAR1_OA1MODE_Pos) /*!< 0x00000400 */ +#define I2C_OAR1_OA1MODE I2C_OAR1_OA1MODE_Msk /*!< Own address 1 10-bit mode */ +#define I2C_OAR1_OA1EN_Pos (15U) +#define I2C_OAR1_OA1EN_Msk (0x1UL << I2C_OAR1_OA1EN_Pos) /*!< 0x00008000 */ +#define I2C_OAR1_OA1EN I2C_OAR1_OA1EN_Msk /*!< Own address 1 enable */ + +/******************* Bit definition for I2C_OAR2 register ******************/ +#define I2C_OAR2_OA2_Pos (1U) +#define I2C_OAR2_OA2_Msk (0x7FUL << I2C_OAR2_OA2_Pos) /*!< 0x000000FE */ +#define I2C_OAR2_OA2 I2C_OAR2_OA2_Msk /*!< Interface own address 2 */ +#define I2C_OAR2_OA2MSK_Pos (8U) +#define I2C_OAR2_OA2MSK_Msk (0x7UL << I2C_OAR2_OA2MSK_Pos) /*!< 0x00000700 */ +#define I2C_OAR2_OA2MSK I2C_OAR2_OA2MSK_Msk /*!< Own address 2 masks */ +#define I2C_OAR2_OA2NOMASK (0U) /*!< No mask */ +#define I2C_OAR2_OA2MASK01_Pos (8U) +#define I2C_OAR2_OA2MASK01_Msk (0x1UL << I2C_OAR2_OA2MASK01_Pos) /*!< 0x00000100 */ +#define I2C_OAR2_OA2MASK01 I2C_OAR2_OA2MASK01_Msk /*!< OA2[1] is masked, Only OA2[7:2] are compared */ +#define I2C_OAR2_OA2MASK02_Pos (9U) +#define I2C_OAR2_OA2MASK02_Msk (0x1UL << I2C_OAR2_OA2MASK02_Pos) /*!< 0x00000200 */ +#define I2C_OAR2_OA2MASK02 I2C_OAR2_OA2MASK02_Msk /*!< OA2[2:1] is masked, Only OA2[7:3] are compared */ +#define I2C_OAR2_OA2MASK03_Pos (8U) +#define I2C_OAR2_OA2MASK03_Msk (0x3UL << I2C_OAR2_OA2MASK03_Pos) /*!< 0x00000300 */ +#define I2C_OAR2_OA2MASK03 I2C_OAR2_OA2MASK03_Msk /*!< OA2[3:1] is masked, Only OA2[7:4] are compared */ +#define I2C_OAR2_OA2MASK04_Pos (10U) +#define I2C_OAR2_OA2MASK04_Msk (0x1UL << I2C_OAR2_OA2MASK04_Pos) /*!< 0x00000400 */ +#define I2C_OAR2_OA2MASK04 I2C_OAR2_OA2MASK04_Msk /*!< OA2[4:1] is masked, Only OA2[7:5] are compared */ +#define I2C_OAR2_OA2MASK05_Pos (8U) +#define I2C_OAR2_OA2MASK05_Msk (0x5UL << I2C_OAR2_OA2MASK05_Pos) /*!< 0x00000500 */ +#define I2C_OAR2_OA2MASK05 I2C_OAR2_OA2MASK05_Msk /*!< OA2[5:1] is masked, Only OA2[7:6] are compared */ +#define I2C_OAR2_OA2MASK06_Pos (9U) +#define I2C_OAR2_OA2MASK06_Msk (0x3UL << I2C_OAR2_OA2MASK06_Pos) /*!< 0x00000600 */ +#define I2C_OAR2_OA2MASK06 I2C_OAR2_OA2MASK06_Msk /*!< OA2[6:1] is masked, Only OA2[7] are compared */ +#define I2C_OAR2_OA2MASK07_Pos (8U) +#define I2C_OAR2_OA2MASK07_Msk (0x7UL << I2C_OAR2_OA2MASK07_Pos) /*!< 0x00000700 */ +#define I2C_OAR2_OA2MASK07 I2C_OAR2_OA2MASK07_Msk /*!< OA2[7:1] is masked, No comparison is done */ +#define I2C_OAR2_OA2EN_Pos (15U) +#define I2C_OAR2_OA2EN_Msk (0x1UL << I2C_OAR2_OA2EN_Pos) /*!< 0x00008000 */ +#define I2C_OAR2_OA2EN I2C_OAR2_OA2EN_Msk /*!< Own address 2 enable */ + +/******************* Bit definition for I2C_TIMINGR register *******************/ +#define I2C_TIMINGR_SCLL_Pos (0U) +#define I2C_TIMINGR_SCLL_Msk (0xFFUL << I2C_TIMINGR_SCLL_Pos) /*!< 0x000000FF */ +#define I2C_TIMINGR_SCLL I2C_TIMINGR_SCLL_Msk /*!< SCL low period (master mode) */ +#define I2C_TIMINGR_SCLH_Pos (8U) +#define I2C_TIMINGR_SCLH_Msk (0xFFUL << I2C_TIMINGR_SCLH_Pos) /*!< 0x0000FF00 */ +#define I2C_TIMINGR_SCLH I2C_TIMINGR_SCLH_Msk /*!< SCL high period (master mode) */ +#define I2C_TIMINGR_SDADEL_Pos (16U) +#define I2C_TIMINGR_SDADEL_Msk (0xFUL << I2C_TIMINGR_SDADEL_Pos) /*!< 0x000F0000 */ +#define I2C_TIMINGR_SDADEL I2C_TIMINGR_SDADEL_Msk /*!< Data hold time */ +#define I2C_TIMINGR_SCLDEL_Pos (20U) +#define I2C_TIMINGR_SCLDEL_Msk (0xFUL << I2C_TIMINGR_SCLDEL_Pos) /*!< 0x00F00000 */ +#define I2C_TIMINGR_SCLDEL I2C_TIMINGR_SCLDEL_Msk /*!< Data setup time */ +#define I2C_TIMINGR_PRESC_Pos (28U) +#define I2C_TIMINGR_PRESC_Msk (0xFUL << I2C_TIMINGR_PRESC_Pos) /*!< 0xF0000000 */ +#define I2C_TIMINGR_PRESC I2C_TIMINGR_PRESC_Msk /*!< Timings prescaler */ + +/******************* Bit definition for I2C_TIMEOUTR register *******************/ +#define I2C_TIMEOUTR_TIMEOUTA_Pos (0U) +#define I2C_TIMEOUTR_TIMEOUTA_Msk (0xFFFUL << I2C_TIMEOUTR_TIMEOUTA_Pos) /*!< 0x00000FFF */ +#define I2C_TIMEOUTR_TIMEOUTA I2C_TIMEOUTR_TIMEOUTA_Msk /*!< Bus timeout A */ +#define I2C_TIMEOUTR_TIDLE_Pos (12U) +#define I2C_TIMEOUTR_TIDLE_Msk (0x1UL << I2C_TIMEOUTR_TIDLE_Pos) /*!< 0x00001000 */ +#define I2C_TIMEOUTR_TIDLE I2C_TIMEOUTR_TIDLE_Msk /*!< Idle clock timeout detection */ +#define I2C_TIMEOUTR_TIMOUTEN_Pos (15U) +#define I2C_TIMEOUTR_TIMOUTEN_Msk (0x1UL << I2C_TIMEOUTR_TIMOUTEN_Pos) /*!< 0x00008000 */ +#define I2C_TIMEOUTR_TIMOUTEN I2C_TIMEOUTR_TIMOUTEN_Msk /*!< Clock timeout enable */ +#define I2C_TIMEOUTR_TIMEOUTB_Pos (16U) +#define I2C_TIMEOUTR_TIMEOUTB_Msk (0xFFFUL << I2C_TIMEOUTR_TIMEOUTB_Pos) /*!< 0x0FFF0000 */ +#define I2C_TIMEOUTR_TIMEOUTB I2C_TIMEOUTR_TIMEOUTB_Msk /*!< Bus timeout B*/ +#define I2C_TIMEOUTR_TEXTEN_Pos (31U) +#define I2C_TIMEOUTR_TEXTEN_Msk (0x1UL << I2C_TIMEOUTR_TEXTEN_Pos) /*!< 0x80000000 */ +#define I2C_TIMEOUTR_TEXTEN I2C_TIMEOUTR_TEXTEN_Msk /*!< Extended clock timeout enable */ + +/****************** Bit definition for I2C_ISR register *********************/ +#define I2C_ISR_TXE_Pos (0U) +#define I2C_ISR_TXE_Msk (0x1UL << I2C_ISR_TXE_Pos) /*!< 0x00000001 */ +#define I2C_ISR_TXE I2C_ISR_TXE_Msk /*!< Transmit data register empty */ +#define I2C_ISR_TXIS_Pos (1U) +#define I2C_ISR_TXIS_Msk (0x1UL << I2C_ISR_TXIS_Pos) /*!< 0x00000002 */ +#define I2C_ISR_TXIS I2C_ISR_TXIS_Msk /*!< Transmit interrupt status */ +#define I2C_ISR_RXNE_Pos (2U) +#define I2C_ISR_RXNE_Msk (0x1UL << I2C_ISR_RXNE_Pos) /*!< 0x00000004 */ +#define I2C_ISR_RXNE I2C_ISR_RXNE_Msk /*!< Receive data register not empty */ +#define I2C_ISR_ADDR_Pos (3U) +#define I2C_ISR_ADDR_Msk (0x1UL << I2C_ISR_ADDR_Pos) /*!< 0x00000008 */ +#define I2C_ISR_ADDR I2C_ISR_ADDR_Msk /*!< Address matched (slave mode)*/ +#define I2C_ISR_NACKF_Pos (4U) +#define I2C_ISR_NACKF_Msk (0x1UL << I2C_ISR_NACKF_Pos) /*!< 0x00000010 */ +#define I2C_ISR_NACKF I2C_ISR_NACKF_Msk /*!< NACK received flag */ +#define I2C_ISR_STOPF_Pos (5U) +#define I2C_ISR_STOPF_Msk (0x1UL << I2C_ISR_STOPF_Pos) /*!< 0x00000020 */ +#define I2C_ISR_STOPF I2C_ISR_STOPF_Msk /*!< STOP detection flag */ +#define I2C_ISR_TC_Pos (6U) +#define I2C_ISR_TC_Msk (0x1UL << I2C_ISR_TC_Pos) /*!< 0x00000040 */ +#define I2C_ISR_TC I2C_ISR_TC_Msk /*!< Transfer complete (master mode) */ +#define I2C_ISR_TCR_Pos (7U) +#define I2C_ISR_TCR_Msk (0x1UL << I2C_ISR_TCR_Pos) /*!< 0x00000080 */ +#define I2C_ISR_TCR I2C_ISR_TCR_Msk /*!< Transfer complete reload */ +#define I2C_ISR_BERR_Pos (8U) +#define I2C_ISR_BERR_Msk (0x1UL << I2C_ISR_BERR_Pos) /*!< 0x00000100 */ +#define I2C_ISR_BERR I2C_ISR_BERR_Msk /*!< Bus error */ +#define I2C_ISR_ARLO_Pos (9U) +#define I2C_ISR_ARLO_Msk (0x1UL << I2C_ISR_ARLO_Pos) /*!< 0x00000200 */ +#define I2C_ISR_ARLO I2C_ISR_ARLO_Msk /*!< Arbitration lost */ +#define I2C_ISR_OVR_Pos (10U) +#define I2C_ISR_OVR_Msk (0x1UL << I2C_ISR_OVR_Pos) /*!< 0x00000400 */ +#define I2C_ISR_OVR I2C_ISR_OVR_Msk /*!< Overrun/Underrun */ +#define I2C_ISR_PECERR_Pos (11U) +#define I2C_ISR_PECERR_Msk (0x1UL << I2C_ISR_PECERR_Pos) /*!< 0x00000800 */ +#define I2C_ISR_PECERR I2C_ISR_PECERR_Msk /*!< PEC error in reception */ +#define I2C_ISR_TIMEOUT_Pos (12U) +#define I2C_ISR_TIMEOUT_Msk (0x1UL << I2C_ISR_TIMEOUT_Pos) /*!< 0x00001000 */ +#define I2C_ISR_TIMEOUT I2C_ISR_TIMEOUT_Msk /*!< Timeout or Tlow detection flag */ +#define I2C_ISR_ALERT_Pos (13U) +#define I2C_ISR_ALERT_Msk (0x1UL << I2C_ISR_ALERT_Pos) /*!< 0x00002000 */ +#define I2C_ISR_ALERT I2C_ISR_ALERT_Msk /*!< SMBus alert */ +#define I2C_ISR_BUSY_Pos (15U) +#define I2C_ISR_BUSY_Msk (0x1UL << I2C_ISR_BUSY_Pos) /*!< 0x00008000 */ +#define I2C_ISR_BUSY I2C_ISR_BUSY_Msk /*!< Bus busy */ +#define I2C_ISR_DIR_Pos (16U) +#define I2C_ISR_DIR_Msk (0x1UL << I2C_ISR_DIR_Pos) /*!< 0x00010000 */ +#define I2C_ISR_DIR I2C_ISR_DIR_Msk /*!< Transfer direction (slave mode) */ +#define I2C_ISR_ADDCODE_Pos (17U) +#define I2C_ISR_ADDCODE_Msk (0x7FUL << I2C_ISR_ADDCODE_Pos) /*!< 0x00FE0000 */ +#define I2C_ISR_ADDCODE I2C_ISR_ADDCODE_Msk /*!< Address match code (slave mode) */ + +/****************** Bit definition for I2C_ICR register *********************/ +#define I2C_ICR_ADDRCF_Pos (3U) +#define I2C_ICR_ADDRCF_Msk (0x1UL << I2C_ICR_ADDRCF_Pos) /*!< 0x00000008 */ +#define I2C_ICR_ADDRCF I2C_ICR_ADDRCF_Msk /*!< Address matched clear flag */ +#define I2C_ICR_NACKCF_Pos (4U) +#define I2C_ICR_NACKCF_Msk (0x1UL << I2C_ICR_NACKCF_Pos) /*!< 0x00000010 */ +#define I2C_ICR_NACKCF I2C_ICR_NACKCF_Msk /*!< NACK clear flag */ +#define I2C_ICR_STOPCF_Pos (5U) +#define I2C_ICR_STOPCF_Msk (0x1UL << I2C_ICR_STOPCF_Pos) /*!< 0x00000020 */ +#define I2C_ICR_STOPCF I2C_ICR_STOPCF_Msk /*!< STOP detection clear flag */ +#define I2C_ICR_BERRCF_Pos (8U) +#define I2C_ICR_BERRCF_Msk (0x1UL << I2C_ICR_BERRCF_Pos) /*!< 0x00000100 */ +#define I2C_ICR_BERRCF I2C_ICR_BERRCF_Msk /*!< Bus error clear flag */ +#define I2C_ICR_ARLOCF_Pos (9U) +#define I2C_ICR_ARLOCF_Msk (0x1UL << I2C_ICR_ARLOCF_Pos) /*!< 0x00000200 */ +#define I2C_ICR_ARLOCF I2C_ICR_ARLOCF_Msk /*!< Arbitration lost clear flag */ +#define I2C_ICR_OVRCF_Pos (10U) +#define I2C_ICR_OVRCF_Msk (0x1UL << I2C_ICR_OVRCF_Pos) /*!< 0x00000400 */ +#define I2C_ICR_OVRCF I2C_ICR_OVRCF_Msk /*!< Overrun/Underrun clear flag */ +#define I2C_ICR_PECCF_Pos (11U) +#define I2C_ICR_PECCF_Msk (0x1UL << I2C_ICR_PECCF_Pos) /*!< 0x00000800 */ +#define I2C_ICR_PECCF I2C_ICR_PECCF_Msk /*!< PAC error clear flag */ +#define I2C_ICR_TIMOUTCF_Pos (12U) +#define I2C_ICR_TIMOUTCF_Msk (0x1UL << I2C_ICR_TIMOUTCF_Pos) /*!< 0x00001000 */ +#define I2C_ICR_TIMOUTCF I2C_ICR_TIMOUTCF_Msk /*!< Timeout clear flag */ +#define I2C_ICR_ALERTCF_Pos (13U) +#define I2C_ICR_ALERTCF_Msk (0x1UL << I2C_ICR_ALERTCF_Pos) /*!< 0x00002000 */ +#define I2C_ICR_ALERTCF I2C_ICR_ALERTCF_Msk /*!< Alert clear flag */ + +/****************** Bit definition for I2C_PECR register *********************/ +#define I2C_PECR_PEC_Pos (0U) +#define I2C_PECR_PEC_Msk (0xFFUL << I2C_PECR_PEC_Pos) /*!< 0x000000FF */ +#define I2C_PECR_PEC I2C_PECR_PEC_Msk /*!< PEC register */ + +/****************** Bit definition for I2C_RXDR register *********************/ +#define I2C_RXDR_RXDATA_Pos (0U) +#define I2C_RXDR_RXDATA_Msk (0xFFUL << I2C_RXDR_RXDATA_Pos) /*!< 0x000000FF */ +#define I2C_RXDR_RXDATA I2C_RXDR_RXDATA_Msk /*!< 8-bit receive data */ + +/****************** Bit definition for I2C_TXDR register *********************/ +#define I2C_TXDR_TXDATA_Pos (0U) +#define I2C_TXDR_TXDATA_Msk (0xFFUL << I2C_TXDR_TXDATA_Pos) /*!< 0x000000FF */ +#define I2C_TXDR_TXDATA I2C_TXDR_TXDATA_Msk /*!< 8-bit transmit data */ + + +/******************************************************************************/ +/* */ +/* Independent WATCHDOG (IWDG) */ +/* */ +/******************************************************************************/ +/******************* Bit definition for IWDG_KR register ********************/ +#define IWDG_KR_KEY_Pos (0U) +#define IWDG_KR_KEY_Msk (0xFFFFUL << IWDG_KR_KEY_Pos) /*!< 0x0000FFFF */ +#define IWDG_KR_KEY IWDG_KR_KEY_Msk /*! */ +#define RTC_ICSR_ALRBWF_Pos (1U) +#define RTC_ICSR_ALRBWF_Msk (0x1UL << RTC_ICSR_ALRBWF_Pos) /*!< 0x00000002 */ +#define RTC_ICSR_ALRBWF RTC_ICSR_ALRBWF_Msk +#define RTC_ICSR_ALRAWF_Pos (0U) +#define RTC_ICSR_ALRAWF_Msk (0x1UL << RTC_ICSR_ALRAWF_Pos) /*!< 0x00000001 */ +#define RTC_ICSR_ALRAWF RTC_ICSR_ALRAWF_Msk + +/******************** Bits definition for RTC_PRER register *****************/ +#define RTC_PRER_PREDIV_A_Pos (16U) +#define RTC_PRER_PREDIV_A_Msk (0x7FUL << RTC_PRER_PREDIV_A_Pos) /*!< 0x007F0000 */ +#define RTC_PRER_PREDIV_A RTC_PRER_PREDIV_A_Msk +#define RTC_PRER_PREDIV_S_Pos (0U) +#define RTC_PRER_PREDIV_S_Msk (0x7FFFUL << RTC_PRER_PREDIV_S_Pos) /*!< 0x00007FFF */ +#define RTC_PRER_PREDIV_S RTC_PRER_PREDIV_S_Msk + +/******************** Bits definition for RTC_WUTR register *****************/ +#define RTC_WUTR_WUT_Pos (0U) +#define RTC_WUTR_WUT_Msk (0xFFFFUL << RTC_WUTR_WUT_Pos) /*!< 0x0000FFFF */ +#define RTC_WUTR_WUT RTC_WUTR_WUT_Msk /*!< Wakeup auto-reload value bits > */ + +/******************** Bits definition for RTC_CR register *******************/ +#define RTC_CR_OUT2EN_Pos (31U) +#define RTC_CR_OUT2EN_Msk (0x1UL << RTC_CR_OUT2EN_Pos) /*!< 0x80000000 */ +#define RTC_CR_OUT2EN RTC_CR_OUT2EN_Msk /*!< RTC_OUT2 output enable */ +#define RTC_CR_TAMPALRM_TYPE_Pos (30U) +#define RTC_CR_TAMPALRM_TYPE_Msk (0x1UL << RTC_CR_TAMPALRM_TYPE_Pos) /*!< 0x40000000 */ +#define RTC_CR_TAMPALRM_TYPE RTC_CR_TAMPALRM_TYPE_Msk /*!< TAMPALARM output type */ +#define RTC_CR_TAMPALRM_PU_Pos (29U) +#define RTC_CR_TAMPALRM_PU_Msk (0x1UL << RTC_CR_TAMPALRM_PU_Pos) /*!< 0x20000000 */ +#define RTC_CR_TAMPALRM_PU RTC_CR_TAMPALRM_PU_Msk /*!< TAMPALARM output pull-up config */ +#define RTC_CR_TAMPOE_Pos (26U) +#define RTC_CR_TAMPOE_Msk (0x1UL << RTC_CR_TAMPOE_Pos) /*!< 0x04000000 */ +#define RTC_CR_TAMPOE RTC_CR_TAMPOE_Msk /*!< Tamper detection output enable on TAMPALARM */ +#define RTC_CR_TAMPTS_Pos (25U) +#define RTC_CR_TAMPTS_Msk (0x1UL << RTC_CR_TAMPTS_Pos) /*!< 0x02000000 */ +#define RTC_CR_TAMPTS RTC_CR_TAMPTS_Msk /*!< Activate timestamp on tamper detection event */ +#define RTC_CR_ITSE_Pos (24U) +#define RTC_CR_ITSE_Msk (0x1UL << RTC_CR_ITSE_Pos) /*!< 0x01000000 */ +#define RTC_CR_ITSE RTC_CR_ITSE_Msk /*!< Timestamp on internal event enable */ +#define RTC_CR_COE_Pos (23U) +#define RTC_CR_COE_Msk (0x1UL << RTC_CR_COE_Pos) /*!< 0x00800000 */ +#define RTC_CR_COE RTC_CR_COE_Msk +#define RTC_CR_OSEL_Pos (21U) +#define RTC_CR_OSEL_Msk (0x3UL << RTC_CR_OSEL_Pos) /*!< 0x00600000 */ +#define RTC_CR_OSEL RTC_CR_OSEL_Msk +#define RTC_CR_OSEL_0 (0x1UL << RTC_CR_OSEL_Pos) /*!< 0x00200000 */ +#define RTC_CR_OSEL_1 (0x2UL << RTC_CR_OSEL_Pos) /*!< 0x00400000 */ +#define RTC_CR_POL_Pos (20U) +#define RTC_CR_POL_Msk (0x1UL << RTC_CR_POL_Pos) /*!< 0x00100000 */ +#define RTC_CR_POL RTC_CR_POL_Msk +#define RTC_CR_COSEL_Pos (19U) +#define RTC_CR_COSEL_Msk (0x1UL << RTC_CR_COSEL_Pos) /*!< 0x00080000 */ +#define RTC_CR_COSEL RTC_CR_COSEL_Msk +#define RTC_CR_BKP_Pos (18U) +#define RTC_CR_BKP_Msk (0x1UL << RTC_CR_BKP_Pos) /*!< 0x00040000 */ +#define RTC_CR_BKP RTC_CR_BKP_Msk +#define RTC_CR_SUB1H_Pos (17U) +#define RTC_CR_SUB1H_Msk (0x1UL << RTC_CR_SUB1H_Pos) /*!< 0x00020000 */ +#define RTC_CR_SUB1H RTC_CR_SUB1H_Msk +#define RTC_CR_ADD1H_Pos (16U) +#define RTC_CR_ADD1H_Msk (0x1UL << RTC_CR_ADD1H_Pos) /*!< 0x00010000 */ +#define RTC_CR_ADD1H RTC_CR_ADD1H_Msk +#define RTC_CR_TSIE_Pos (15U) +#define RTC_CR_TSIE_Msk (0x1UL << RTC_CR_TSIE_Pos) /*!< 0x00008000 */ +#define RTC_CR_TSIE RTC_CR_TSIE_Msk /*!< Timestamp interrupt enable > */ +#define RTC_CR_WUTIE_Pos (14U) +#define RTC_CR_WUTIE_Msk (0x1UL << RTC_CR_WUTIE_Pos) /*!< 0x00004000 */ +#define RTC_CR_WUTIE RTC_CR_WUTIE_Msk /*!< Wakeup timer interrupt enable > */ +#define RTC_CR_ALRBIE_Pos (13U) +#define RTC_CR_ALRBIE_Msk (0x1UL << RTC_CR_ALRBIE_Pos) /*!< 0x00002000 */ +#define RTC_CR_ALRBIE RTC_CR_ALRBIE_Msk +#define RTC_CR_ALRAIE_Pos (12U) +#define RTC_CR_ALRAIE_Msk (0x1UL << RTC_CR_ALRAIE_Pos) /*!< 0x00001000 */ +#define RTC_CR_ALRAIE RTC_CR_ALRAIE_Msk +#define RTC_CR_TSE_Pos (11U) +#define RTC_CR_TSE_Msk (0x1UL << RTC_CR_TSE_Pos) /*!< 0x00000800 */ +#define RTC_CR_TSE RTC_CR_TSE_Msk /*!< timestamp enable > */ +#define RTC_CR_WUTE_Pos (10U) +#define RTC_CR_WUTE_Msk (0x1UL << RTC_CR_WUTE_Pos) /*!< 0x00000400 */ +#define RTC_CR_WUTE RTC_CR_WUTE_Msk /*!< Wakeup timer enable > */ +#define RTC_CR_ALRBE_Pos (9U) +#define RTC_CR_ALRBE_Msk (0x1UL << RTC_CR_ALRBE_Pos) /*!< 0x00000200 */ +#define RTC_CR_ALRBE RTC_CR_ALRBE_Msk +#define RTC_CR_ALRAE_Pos (8U) +#define RTC_CR_ALRAE_Msk (0x1UL << RTC_CR_ALRAE_Pos) /*!< 0x00000100 */ +#define RTC_CR_ALRAE RTC_CR_ALRAE_Msk +#define RTC_CR_FMT_Pos (6U) +#define RTC_CR_FMT_Msk (0x1UL << RTC_CR_FMT_Pos) /*!< 0x00000040 */ +#define RTC_CR_FMT RTC_CR_FMT_Msk +#define RTC_CR_BYPSHAD_Pos (5U) +#define RTC_CR_BYPSHAD_Msk (0x1UL << RTC_CR_BYPSHAD_Pos) /*!< 0x00000020 */ +#define RTC_CR_BYPSHAD RTC_CR_BYPSHAD_Msk +#define RTC_CR_REFCKON_Pos (4U) +#define RTC_CR_REFCKON_Msk (0x1UL << RTC_CR_REFCKON_Pos) /*!< 0x00000010 */ +#define RTC_CR_REFCKON RTC_CR_REFCKON_Msk +#define RTC_CR_TSEDGE_Pos (3U) +#define RTC_CR_TSEDGE_Msk (0x1UL << RTC_CR_TSEDGE_Pos) /*!< 0x00000008 */ +#define RTC_CR_TSEDGE RTC_CR_TSEDGE_Msk /*!< Timestamp event active edge > */ +#define RTC_CR_WUCKSEL_Pos (0U) +#define RTC_CR_WUCKSEL_Msk (0x7UL << RTC_CR_WUCKSEL_Pos) /*!< 0x00000007 */ +#define RTC_CR_WUCKSEL RTC_CR_WUCKSEL_Msk /*!< Wakeup clock selection > */ +#define RTC_CR_WUCKSEL_0 (0x1UL << RTC_CR_WUCKSEL_Pos) /*!< 0x00000001 */ +#define RTC_CR_WUCKSEL_1 (0x2UL << RTC_CR_WUCKSEL_Pos) /*!< 0x00000002 */ +#define RTC_CR_WUCKSEL_2 (0x4UL << RTC_CR_WUCKSEL_Pos) /*!< 0x00000004 */ + +/******************** Bits definition for RTC_WPR register ******************/ +#define RTC_WPR_KEY_Pos (0U) +#define RTC_WPR_KEY_Msk (0xFFUL << RTC_WPR_KEY_Pos) /*!< 0x000000FF */ +#define RTC_WPR_KEY RTC_WPR_KEY_Msk + +/******************** Bits definition for RTC_CALR register *****************/ +#define RTC_CALR_CALP_Pos (15U) +#define RTC_CALR_CALP_Msk (0x1UL << RTC_CALR_CALP_Pos) /*!< 0x00008000 */ +#define RTC_CALR_CALP RTC_CALR_CALP_Msk +#define RTC_CALR_CALW8_Pos (14U) +#define RTC_CALR_CALW8_Msk (0x1UL << RTC_CALR_CALW8_Pos) /*!< 0x00004000 */ +#define RTC_CALR_CALW8 RTC_CALR_CALW8_Msk +#define RTC_CALR_CALW16_Pos (13U) +#define RTC_CALR_CALW16_Msk (0x1UL << RTC_CALR_CALW16_Pos) /*!< 0x00002000 */ +#define RTC_CALR_CALW16 RTC_CALR_CALW16_Msk +#define RTC_CALR_CALM_Pos (0U) +#define RTC_CALR_CALM_Msk (0x1FFUL << RTC_CALR_CALM_Pos) /*!< 0x000001FF */ +#define RTC_CALR_CALM RTC_CALR_CALM_Msk +#define RTC_CALR_CALM_0 (0x001UL << RTC_CALR_CALM_Pos) /*!< 0x00000001 */ +#define RTC_CALR_CALM_1 (0x002UL << RTC_CALR_CALM_Pos) /*!< 0x00000002 */ +#define RTC_CALR_CALM_2 (0x004UL << RTC_CALR_CALM_Pos) /*!< 0x00000004 */ +#define RTC_CALR_CALM_3 (0x008UL << RTC_CALR_CALM_Pos) /*!< 0x00000008 */ +#define RTC_CALR_CALM_4 (0x010UL << RTC_CALR_CALM_Pos) /*!< 0x00000010 */ +#define RTC_CALR_CALM_5 (0x020UL << RTC_CALR_CALM_Pos) /*!< 0x00000020 */ +#define RTC_CALR_CALM_6 (0x040UL << RTC_CALR_CALM_Pos) /*!< 0x00000040 */ +#define RTC_CALR_CALM_7 (0x080UL << RTC_CALR_CALM_Pos) /*!< 0x00000080 */ +#define RTC_CALR_CALM_8 (0x100UL << RTC_CALR_CALM_Pos) /*!< 0x00000100 */ + +/******************** Bits definition for RTC_SHIFTR register ***************/ +#define RTC_SHIFTR_SUBFS_Pos (0U) +#define RTC_SHIFTR_SUBFS_Msk (0x7FFFUL << RTC_SHIFTR_SUBFS_Pos) /*!< 0x00007FFF */ +#define RTC_SHIFTR_SUBFS RTC_SHIFTR_SUBFS_Msk +#define RTC_SHIFTR_ADD1S_Pos (31U) +#define RTC_SHIFTR_ADD1S_Msk (0x1UL << RTC_SHIFTR_ADD1S_Pos) /*!< 0x80000000 */ +#define RTC_SHIFTR_ADD1S RTC_SHIFTR_ADD1S_Msk + +/******************** Bits definition for RTC_TSTR register *****************/ +#define RTC_TSTR_PM_Pos (22U) +#define RTC_TSTR_PM_Msk (0x1UL << RTC_TSTR_PM_Pos) /*!< 0x00400000 */ +#define RTC_TSTR_PM RTC_TSTR_PM_Msk /*!< AM-PM notation > */ +#define RTC_TSTR_HT_Pos (20U) +#define RTC_TSTR_HT_Msk (0x3UL << RTC_TSTR_HT_Pos) /*!< 0x00300000 */ +#define RTC_TSTR_HT RTC_TSTR_HT_Msk +#define RTC_TSTR_HT_0 (0x1UL << RTC_TSTR_HT_Pos) /*!< 0x00100000 */ +#define RTC_TSTR_HT_1 (0x2UL << RTC_TSTR_HT_Pos) /*!< 0x00200000 */ +#define RTC_TSTR_HU_Pos (16U) +#define RTC_TSTR_HU_Msk (0xFUL << RTC_TSTR_HU_Pos) /*!< 0x000F0000 */ +#define RTC_TSTR_HU RTC_TSTR_HU_Msk +#define RTC_TSTR_HU_0 (0x1UL << RTC_TSTR_HU_Pos) /*!< 0x00010000 */ +#define RTC_TSTR_HU_1 (0x2UL << RTC_TSTR_HU_Pos) /*!< 0x00020000 */ +#define RTC_TSTR_HU_2 (0x4UL << RTC_TSTR_HU_Pos) /*!< 0x00040000 */ +#define RTC_TSTR_HU_3 (0x8UL << RTC_TSTR_HU_Pos) /*!< 0x00080000 */ +#define RTC_TSTR_MNT_Pos (12U) +#define RTC_TSTR_MNT_Msk (0x7UL << RTC_TSTR_MNT_Pos) /*!< 0x00007000 */ +#define RTC_TSTR_MNT RTC_TSTR_MNT_Msk +#define RTC_TSTR_MNT_0 (0x1UL << RTC_TSTR_MNT_Pos) /*!< 0x00001000 */ +#define RTC_TSTR_MNT_1 (0x2UL << RTC_TSTR_MNT_Pos) /*!< 0x00002000 */ +#define RTC_TSTR_MNT_2 (0x4UL << RTC_TSTR_MNT_Pos) /*!< 0x00004000 */ +#define RTC_TSTR_MNU_Pos (8U) +#define RTC_TSTR_MNU_Msk (0xFUL << RTC_TSTR_MNU_Pos) /*!< 0x00000F00 */ +#define RTC_TSTR_MNU RTC_TSTR_MNU_Msk +#define RTC_TSTR_MNU_0 (0x1UL << RTC_TSTR_MNU_Pos) /*!< 0x00000100 */ +#define RTC_TSTR_MNU_1 (0x2UL << RTC_TSTR_MNU_Pos) /*!< 0x00000200 */ +#define RTC_TSTR_MNU_2 (0x4UL << RTC_TSTR_MNU_Pos) /*!< 0x00000400 */ +#define RTC_TSTR_MNU_3 (0x8UL << RTC_TSTR_MNU_Pos) /*!< 0x00000800 */ +#define RTC_TSTR_ST_Pos (4U) +#define RTC_TSTR_ST_Msk (0x7UL << RTC_TSTR_ST_Pos) /*!< 0x00000070 */ +#define RTC_TSTR_ST RTC_TSTR_ST_Msk +#define RTC_TSTR_ST_0 (0x1UL << RTC_TSTR_ST_Pos) /*!< 0x00000010 */ +#define RTC_TSTR_ST_1 (0x2UL << RTC_TSTR_ST_Pos) /*!< 0x00000020 */ +#define RTC_TSTR_ST_2 (0x4UL << RTC_TSTR_ST_Pos) /*!< 0x00000040 */ +#define RTC_TSTR_SU_Pos (0U) +#define RTC_TSTR_SU_Msk (0xFUL << RTC_TSTR_SU_Pos) /*!< 0x0000000F */ +#define RTC_TSTR_SU RTC_TSTR_SU_Msk +#define RTC_TSTR_SU_0 (0x1UL << RTC_TSTR_SU_Pos) /*!< 0x00000001 */ +#define RTC_TSTR_SU_1 (0x2UL << RTC_TSTR_SU_Pos) /*!< 0x00000002 */ +#define RTC_TSTR_SU_2 (0x4UL << RTC_TSTR_SU_Pos) /*!< 0x00000004 */ +#define RTC_TSTR_SU_3 (0x8UL << RTC_TSTR_SU_Pos) /*!< 0x00000008 */ + +/******************** Bits definition for RTC_TSDR register *****************/ +#define RTC_TSDR_WDU_Pos (13U) +#define RTC_TSDR_WDU_Msk (0x7UL << RTC_TSDR_WDU_Pos) /*!< 0x0000E000 */ +#define RTC_TSDR_WDU RTC_TSDR_WDU_Msk /*!< Week day units > */ +#define RTC_TSDR_WDU_0 (0x1UL << RTC_TSDR_WDU_Pos) /*!< 0x00002000 */ +#define RTC_TSDR_WDU_1 (0x2UL << RTC_TSDR_WDU_Pos) /*!< 0x00004000 */ +#define RTC_TSDR_WDU_2 (0x4UL << RTC_TSDR_WDU_Pos) /*!< 0x00008000 */ +#define RTC_TSDR_MT_Pos (12U) +#define RTC_TSDR_MT_Msk (0x1UL << RTC_TSDR_MT_Pos) /*!< 0x00001000 */ +#define RTC_TSDR_MT RTC_TSDR_MT_Msk +#define RTC_TSDR_MU_Pos (8U) +#define RTC_TSDR_MU_Msk (0xFUL << RTC_TSDR_MU_Pos) /*!< 0x00000F00 */ +#define RTC_TSDR_MU RTC_TSDR_MU_Msk +#define RTC_TSDR_MU_0 (0x1UL << RTC_TSDR_MU_Pos) /*!< 0x00000100 */ +#define RTC_TSDR_MU_1 (0x2UL << RTC_TSDR_MU_Pos) /*!< 0x00000200 */ +#define RTC_TSDR_MU_2 (0x4UL << RTC_TSDR_MU_Pos) /*!< 0x00000400 */ +#define RTC_TSDR_MU_3 (0x8UL << RTC_TSDR_MU_Pos) /*!< 0x00000800 */ +#define RTC_TSDR_DT_Pos (4U) +#define RTC_TSDR_DT_Msk (0x3UL << RTC_TSDR_DT_Pos) /*!< 0x00000030 */ +#define RTC_TSDR_DT RTC_TSDR_DT_Msk +#define RTC_TSDR_DT_0 (0x1UL << RTC_TSDR_DT_Pos) /*!< 0x00000010 */ +#define RTC_TSDR_DT_1 (0x2UL << RTC_TSDR_DT_Pos) /*!< 0x00000020 */ +#define RTC_TSDR_DU_Pos (0U) +#define RTC_TSDR_DU_Msk (0xFUL << RTC_TSDR_DU_Pos) /*!< 0x0000000F */ +#define RTC_TSDR_DU RTC_TSDR_DU_Msk +#define RTC_TSDR_DU_0 (0x1UL << RTC_TSDR_DU_Pos) /*!< 0x00000001 */ +#define RTC_TSDR_DU_1 (0x2UL << RTC_TSDR_DU_Pos) /*!< 0x00000002 */ +#define RTC_TSDR_DU_2 (0x4UL << RTC_TSDR_DU_Pos) /*!< 0x00000004 */ +#define RTC_TSDR_DU_3 (0x8UL << RTC_TSDR_DU_Pos) /*!< 0x00000008 */ + +/******************** Bits definition for RTC_TSSSR register ****************/ +#define RTC_TSSSR_SS_Pos (0U) +#define RTC_TSSSR_SS_Msk (0xFFFFUL << RTC_TSSSR_SS_Pos) /*!< 0x0000FFFF */ +#define RTC_TSSSR_SS RTC_TSSSR_SS_Msk /*!< Sub second value > */ + +/******************** Bits definition for RTC_ALRMAR register ***************/ +#define RTC_ALRMAR_MSK4_Pos (31U) +#define RTC_ALRMAR_MSK4_Msk (0x1UL << RTC_ALRMAR_MSK4_Pos) /*!< 0x80000000 */ +#define RTC_ALRMAR_MSK4 RTC_ALRMAR_MSK4_Msk +#define RTC_ALRMAR_WDSEL_Pos (30U) +#define RTC_ALRMAR_WDSEL_Msk (0x1UL << RTC_ALRMAR_WDSEL_Pos) /*!< 0x40000000 */ +#define RTC_ALRMAR_WDSEL RTC_ALRMAR_WDSEL_Msk +#define RTC_ALRMAR_DT_Pos (28U) +#define RTC_ALRMAR_DT_Msk (0x3UL << RTC_ALRMAR_DT_Pos) /*!< 0x30000000 */ +#define RTC_ALRMAR_DT RTC_ALRMAR_DT_Msk +#define RTC_ALRMAR_DT_0 (0x1UL << RTC_ALRMAR_DT_Pos) /*!< 0x10000000 */ +#define RTC_ALRMAR_DT_1 (0x2UL << RTC_ALRMAR_DT_Pos) /*!< 0x20000000 */ +#define RTC_ALRMAR_DU_Pos (24U) +#define RTC_ALRMAR_DU_Msk (0xFUL << RTC_ALRMAR_DU_Pos) /*!< 0x0F000000 */ +#define RTC_ALRMAR_DU RTC_ALRMAR_DU_Msk +#define RTC_ALRMAR_DU_0 (0x1UL << RTC_ALRMAR_DU_Pos) /*!< 0x01000000 */ +#define RTC_ALRMAR_DU_1 (0x2UL << RTC_ALRMAR_DU_Pos) /*!< 0x02000000 */ +#define RTC_ALRMAR_DU_2 (0x4UL << RTC_ALRMAR_DU_Pos) /*!< 0x04000000 */ +#define RTC_ALRMAR_DU_3 (0x8UL << RTC_ALRMAR_DU_Pos) /*!< 0x08000000 */ +#define RTC_ALRMAR_MSK3_Pos (23U) +#define RTC_ALRMAR_MSK3_Msk (0x1UL << RTC_ALRMAR_MSK3_Pos) /*!< 0x00800000 */ +#define RTC_ALRMAR_MSK3 RTC_ALRMAR_MSK3_Msk +#define RTC_ALRMAR_PM_Pos (22U) +#define RTC_ALRMAR_PM_Msk (0x1UL << RTC_ALRMAR_PM_Pos) /*!< 0x00400000 */ +#define RTC_ALRMAR_PM RTC_ALRMAR_PM_Msk +#define RTC_ALRMAR_HT_Pos (20U) +#define RTC_ALRMAR_HT_Msk (0x3UL << RTC_ALRMAR_HT_Pos) /*!< 0x00300000 */ +#define RTC_ALRMAR_HT RTC_ALRMAR_HT_Msk +#define RTC_ALRMAR_HT_0 (0x1UL << RTC_ALRMAR_HT_Pos) /*!< 0x00100000 */ +#define RTC_ALRMAR_HT_1 (0x2UL << RTC_ALRMAR_HT_Pos) /*!< 0x00200000 */ +#define RTC_ALRMAR_HU_Pos (16U) +#define RTC_ALRMAR_HU_Msk (0xFUL << RTC_ALRMAR_HU_Pos) /*!< 0x000F0000 */ +#define RTC_ALRMAR_HU RTC_ALRMAR_HU_Msk +#define RTC_ALRMAR_HU_0 (0x1UL << RTC_ALRMAR_HU_Pos) /*!< 0x00010000 */ +#define RTC_ALRMAR_HU_1 (0x2UL << RTC_ALRMAR_HU_Pos) /*!< 0x00020000 */ +#define RTC_ALRMAR_HU_2 (0x4UL << RTC_ALRMAR_HU_Pos) /*!< 0x00040000 */ +#define RTC_ALRMAR_HU_3 (0x8UL << RTC_ALRMAR_HU_Pos) /*!< 0x00080000 */ +#define RTC_ALRMAR_MSK2_Pos (15U) +#define RTC_ALRMAR_MSK2_Msk (0x1UL << RTC_ALRMAR_MSK2_Pos) /*!< 0x00008000 */ +#define RTC_ALRMAR_MSK2 RTC_ALRMAR_MSK2_Msk +#define RTC_ALRMAR_MNT_Pos (12U) +#define RTC_ALRMAR_MNT_Msk (0x7UL << RTC_ALRMAR_MNT_Pos) /*!< 0x00007000 */ +#define RTC_ALRMAR_MNT RTC_ALRMAR_MNT_Msk +#define RTC_ALRMAR_MNT_0 (0x1UL << RTC_ALRMAR_MNT_Pos) /*!< 0x00001000 */ +#define RTC_ALRMAR_MNT_1 (0x2UL << RTC_ALRMAR_MNT_Pos) /*!< 0x00002000 */ +#define RTC_ALRMAR_MNT_2 (0x4UL << RTC_ALRMAR_MNT_Pos) /*!< 0x00004000 */ +#define RTC_ALRMAR_MNU_Pos (8U) +#define RTC_ALRMAR_MNU_Msk (0xFUL << RTC_ALRMAR_MNU_Pos) /*!< 0x00000F00 */ +#define RTC_ALRMAR_MNU RTC_ALRMAR_MNU_Msk +#define RTC_ALRMAR_MNU_0 (0x1UL << RTC_ALRMAR_MNU_Pos) /*!< 0x00000100 */ +#define RTC_ALRMAR_MNU_1 (0x2UL << RTC_ALRMAR_MNU_Pos) /*!< 0x00000200 */ +#define RTC_ALRMAR_MNU_2 (0x4UL << RTC_ALRMAR_MNU_Pos) /*!< 0x00000400 */ +#define RTC_ALRMAR_MNU_3 (0x8UL << RTC_ALRMAR_MNU_Pos) /*!< 0x00000800 */ +#define RTC_ALRMAR_MSK1_Pos (7U) +#define RTC_ALRMAR_MSK1_Msk (0x1UL << RTC_ALRMAR_MSK1_Pos) /*!< 0x00000080 */ +#define RTC_ALRMAR_MSK1 RTC_ALRMAR_MSK1_Msk +#define RTC_ALRMAR_ST_Pos (4U) +#define RTC_ALRMAR_ST_Msk (0x7UL << RTC_ALRMAR_ST_Pos) /*!< 0x00000070 */ +#define RTC_ALRMAR_ST RTC_ALRMAR_ST_Msk +#define RTC_ALRMAR_ST_0 (0x1UL << RTC_ALRMAR_ST_Pos) /*!< 0x00000010 */ +#define RTC_ALRMAR_ST_1 (0x2UL << RTC_ALRMAR_ST_Pos) /*!< 0x00000020 */ +#define RTC_ALRMAR_ST_2 (0x4UL << RTC_ALRMAR_ST_Pos) /*!< 0x00000040 */ +#define RTC_ALRMAR_SU_Pos (0U) +#define RTC_ALRMAR_SU_Msk (0xFUL << RTC_ALRMAR_SU_Pos) /*!< 0x0000000F */ +#define RTC_ALRMAR_SU RTC_ALRMAR_SU_Msk +#define RTC_ALRMAR_SU_0 (0x1UL << RTC_ALRMAR_SU_Pos) /*!< 0x00000001 */ +#define RTC_ALRMAR_SU_1 (0x2UL << RTC_ALRMAR_SU_Pos) /*!< 0x00000002 */ +#define RTC_ALRMAR_SU_2 (0x4UL << RTC_ALRMAR_SU_Pos) /*!< 0x00000004 */ +#define RTC_ALRMAR_SU_3 (0x8UL << RTC_ALRMAR_SU_Pos) /*!< 0x00000008 */ + +/******************** Bits definition for RTC_ALRMASSR register *************/ +#define RTC_ALRMASSR_MASKSS_Pos (24U) +#define RTC_ALRMASSR_MASKSS_Msk (0xFUL << RTC_ALRMASSR_MASKSS_Pos) /*!< 0x0F000000 */ +#define RTC_ALRMASSR_MASKSS RTC_ALRMASSR_MASKSS_Msk +#define RTC_ALRMASSR_MASKSS_0 (0x1UL << RTC_ALRMASSR_MASKSS_Pos) /*!< 0x01000000 */ +#define RTC_ALRMASSR_MASKSS_1 (0x2UL << RTC_ALRMASSR_MASKSS_Pos) /*!< 0x02000000 */ +#define RTC_ALRMASSR_MASKSS_2 (0x4UL << RTC_ALRMASSR_MASKSS_Pos) /*!< 0x04000000 */ +#define RTC_ALRMASSR_MASKSS_3 (0x8UL << RTC_ALRMASSR_MASKSS_Pos) /*!< 0x08000000 */ +#define RTC_ALRMASSR_SS_Pos (0U) +#define RTC_ALRMASSR_SS_Msk (0x7FFFUL << RTC_ALRMASSR_SS_Pos) /*!< 0x00007FFF */ +#define RTC_ALRMASSR_SS RTC_ALRMASSR_SS_Msk + +/******************** Bits definition for RTC_ALRMBR register ***************/ +#define RTC_ALRMBR_MSK4_Pos (31U) +#define RTC_ALRMBR_MSK4_Msk (0x1UL << RTC_ALRMBR_MSK4_Pos) /*!< 0x80000000 */ +#define RTC_ALRMBR_MSK4 RTC_ALRMBR_MSK4_Msk +#define RTC_ALRMBR_WDSEL_Pos (30U) +#define RTC_ALRMBR_WDSEL_Msk (0x1UL << RTC_ALRMBR_WDSEL_Pos) /*!< 0x40000000 */ +#define RTC_ALRMBR_WDSEL RTC_ALRMBR_WDSEL_Msk +#define RTC_ALRMBR_DT_Pos (28U) +#define RTC_ALRMBR_DT_Msk (0x3UL << RTC_ALRMBR_DT_Pos) /*!< 0x30000000 */ +#define RTC_ALRMBR_DT RTC_ALRMBR_DT_Msk +#define RTC_ALRMBR_DT_0 (0x1UL << RTC_ALRMBR_DT_Pos) /*!< 0x10000000 */ +#define RTC_ALRMBR_DT_1 (0x2UL << RTC_ALRMBR_DT_Pos) /*!< 0x20000000 */ +#define RTC_ALRMBR_DU_Pos (24U) +#define RTC_ALRMBR_DU_Msk (0xFUL << RTC_ALRMBR_DU_Pos) /*!< 0x0F000000 */ +#define RTC_ALRMBR_DU RTC_ALRMBR_DU_Msk +#define RTC_ALRMBR_DU_0 (0x1UL << RTC_ALRMBR_DU_Pos) /*!< 0x01000000 */ +#define RTC_ALRMBR_DU_1 (0x2UL << RTC_ALRMBR_DU_Pos) /*!< 0x02000000 */ +#define RTC_ALRMBR_DU_2 (0x4UL << RTC_ALRMBR_DU_Pos) /*!< 0x04000000 */ +#define RTC_ALRMBR_DU_3 (0x8UL << RTC_ALRMBR_DU_Pos) /*!< 0x08000000 */ +#define RTC_ALRMBR_MSK3_Pos (23U) +#define RTC_ALRMBR_MSK3_Msk (0x1UL << RTC_ALRMBR_MSK3_Pos) /*!< 0x00800000 */ +#define RTC_ALRMBR_MSK3 RTC_ALRMBR_MSK3_Msk +#define RTC_ALRMBR_PM_Pos (22U) +#define RTC_ALRMBR_PM_Msk (0x1UL << RTC_ALRMBR_PM_Pos) /*!< 0x00400000 */ +#define RTC_ALRMBR_PM RTC_ALRMBR_PM_Msk +#define RTC_ALRMBR_HT_Pos (20U) +#define RTC_ALRMBR_HT_Msk (0x3UL << RTC_ALRMBR_HT_Pos) /*!< 0x00300000 */ +#define RTC_ALRMBR_HT RTC_ALRMBR_HT_Msk +#define RTC_ALRMBR_HT_0 (0x1UL << RTC_ALRMBR_HT_Pos) /*!< 0x00100000 */ +#define RTC_ALRMBR_HT_1 (0x2UL << RTC_ALRMBR_HT_Pos) /*!< 0x00200000 */ +#define RTC_ALRMBR_HU_Pos (16U) +#define RTC_ALRMBR_HU_Msk (0xFUL << RTC_ALRMBR_HU_Pos) /*!< 0x000F0000 */ +#define RTC_ALRMBR_HU RTC_ALRMBR_HU_Msk +#define RTC_ALRMBR_HU_0 (0x1UL << RTC_ALRMBR_HU_Pos) /*!< 0x00010000 */ +#define RTC_ALRMBR_HU_1 (0x2UL << RTC_ALRMBR_HU_Pos) /*!< 0x00020000 */ +#define RTC_ALRMBR_HU_2 (0x4UL << RTC_ALRMBR_HU_Pos) /*!< 0x00040000 */ +#define RTC_ALRMBR_HU_3 (0x8UL << RTC_ALRMBR_HU_Pos) /*!< 0x00080000 */ +#define RTC_ALRMBR_MSK2_Pos (15U) +#define RTC_ALRMBR_MSK2_Msk (0x1UL << RTC_ALRMBR_MSK2_Pos) /*!< 0x00008000 */ +#define RTC_ALRMBR_MSK2 RTC_ALRMBR_MSK2_Msk +#define RTC_ALRMBR_MNT_Pos (12U) +#define RTC_ALRMBR_MNT_Msk (0x7UL << RTC_ALRMBR_MNT_Pos) /*!< 0x00007000 */ +#define RTC_ALRMBR_MNT RTC_ALRMBR_MNT_Msk +#define RTC_ALRMBR_MNT_0 (0x1UL << RTC_ALRMBR_MNT_Pos) /*!< 0x00001000 */ +#define RTC_ALRMBR_MNT_1 (0x2UL << RTC_ALRMBR_MNT_Pos) /*!< 0x00002000 */ +#define RTC_ALRMBR_MNT_2 (0x4UL << RTC_ALRMBR_MNT_Pos) /*!< 0x00004000 */ +#define RTC_ALRMBR_MNU_Pos (8U) +#define RTC_ALRMBR_MNU_Msk (0xFUL << RTC_ALRMBR_MNU_Pos) /*!< 0x00000F00 */ +#define RTC_ALRMBR_MNU RTC_ALRMBR_MNU_Msk +#define RTC_ALRMBR_MNU_0 (0x1UL << RTC_ALRMBR_MNU_Pos) /*!< 0x00000100 */ +#define RTC_ALRMBR_MNU_1 (0x2UL << RTC_ALRMBR_MNU_Pos) /*!< 0x00000200 */ +#define RTC_ALRMBR_MNU_2 (0x4UL << RTC_ALRMBR_MNU_Pos) /*!< 0x00000400 */ +#define RTC_ALRMBR_MNU_3 (0x8UL << RTC_ALRMBR_MNU_Pos) /*!< 0x00000800 */ +#define RTC_ALRMBR_MSK1_Pos (7U) +#define RTC_ALRMBR_MSK1_Msk (0x1UL << RTC_ALRMBR_MSK1_Pos) /*!< 0x00000080 */ +#define RTC_ALRMBR_MSK1 RTC_ALRMBR_MSK1_Msk +#define RTC_ALRMBR_ST_Pos (4U) +#define RTC_ALRMBR_ST_Msk (0x7UL << RTC_ALRMBR_ST_Pos) /*!< 0x00000070 */ +#define RTC_ALRMBR_ST RTC_ALRMBR_ST_Msk +#define RTC_ALRMBR_ST_0 (0x1UL << RTC_ALRMBR_ST_Pos) /*!< 0x00000010 */ +#define RTC_ALRMBR_ST_1 (0x2UL << RTC_ALRMBR_ST_Pos) /*!< 0x00000020 */ +#define RTC_ALRMBR_ST_2 (0x4UL << RTC_ALRMBR_ST_Pos) /*!< 0x00000040 */ +#define RTC_ALRMBR_SU_Pos (0U) +#define RTC_ALRMBR_SU_Msk (0xFUL << RTC_ALRMBR_SU_Pos) /*!< 0x0000000F */ +#define RTC_ALRMBR_SU RTC_ALRMBR_SU_Msk +#define RTC_ALRMBR_SU_0 (0x1UL << RTC_ALRMBR_SU_Pos) /*!< 0x00000001 */ +#define RTC_ALRMBR_SU_1 (0x2UL << RTC_ALRMBR_SU_Pos) /*!< 0x00000002 */ +#define RTC_ALRMBR_SU_2 (0x4UL << RTC_ALRMBR_SU_Pos) /*!< 0x00000004 */ +#define RTC_ALRMBR_SU_3 (0x8UL << RTC_ALRMBR_SU_Pos) /*!< 0x00000008 */ + +/******************** Bits definition for RTC_ALRMASSR register *************/ +#define RTC_ALRMBSSR_MASKSS_Pos (24U) +#define RTC_ALRMBSSR_MASKSS_Msk (0xFUL << RTC_ALRMBSSR_MASKSS_Pos) /*!< 0x0F000000 */ +#define RTC_ALRMBSSR_MASKSS RTC_ALRMBSSR_MASKSS_Msk +#define RTC_ALRMBSSR_MASKSS_0 (0x1UL << RTC_ALRMBSSR_MASKSS_Pos) /*!< 0x01000000 */ +#define RTC_ALRMBSSR_MASKSS_1 (0x2UL << RTC_ALRMBSSR_MASKSS_Pos) /*!< 0x02000000 */ +#define RTC_ALRMBSSR_MASKSS_2 (0x4UL << RTC_ALRMBSSR_MASKSS_Pos) /*!< 0x04000000 */ +#define RTC_ALRMBSSR_MASKSS_3 (0x8UL << RTC_ALRMBSSR_MASKSS_Pos) /*!< 0x08000000 */ +#define RTC_ALRMBSSR_SS_Pos (0U) +#define RTC_ALRMBSSR_SS_Msk (0x7FFFUL << RTC_ALRMBSSR_SS_Pos) /*!< 0x00007FFF */ +#define RTC_ALRMBSSR_SS RTC_ALRMBSSR_SS_Msk + +/******************** Bits definition for RTC_SR register *******************/ +#define RTC_SR_ITSF_Pos (5U) +#define RTC_SR_ITSF_Msk (0x1UL << RTC_SR_ITSF_Pos) /*!< 0x00000020 */ +#define RTC_SR_ITSF RTC_SR_ITSF_Msk +#define RTC_SR_TSOVF_Pos (4U) +#define RTC_SR_TSOVF_Msk (0x1UL << RTC_SR_TSOVF_Pos) /*!< 0x00000010 */ +#define RTC_SR_TSOVF RTC_SR_TSOVF_Msk /*!< Timestamp overflow flag > */ +#define RTC_SR_TSF_Pos (3U) +#define RTC_SR_TSF_Msk (0x1UL << RTC_SR_TSF_Pos) /*!< 0x00000008 */ +#define RTC_SR_TSF RTC_SR_TSF_Msk /*!< Timestamp flag > */ +#define RTC_SR_WUTF_Pos (2U) +#define RTC_SR_WUTF_Msk (0x1UL << RTC_SR_WUTF_Pos) /*!< 0x00000004 */ +#define RTC_SR_WUTF RTC_SR_WUTF_Msk /*!< Wakeup timer flag > */ +#define RTC_SR_ALRBF_Pos (1U) +#define RTC_SR_ALRBF_Msk (0x1UL << RTC_SR_ALRBF_Pos) /*!< 0x00000002 */ +#define RTC_SR_ALRBF RTC_SR_ALRBF_Msk +#define RTC_SR_ALRAF_Pos (0U) +#define RTC_SR_ALRAF_Msk (0x1UL << RTC_SR_ALRAF_Pos) /*!< 0x00000001 */ +#define RTC_SR_ALRAF RTC_SR_ALRAF_Msk + +/******************** Bits definition for RTC_MISR register *****************/ +#define RTC_MISR_ITSMF_Pos (5U) +#define RTC_MISR_ITSMF_Msk (0x1UL << RTC_MISR_ITSMF_Pos) /*!< 0x00000020 */ +#define RTC_MISR_ITSMF RTC_MISR_ITSMF_Msk +#define RTC_MISR_TSOVMF_Pos (4U) +#define RTC_MISR_TSOVMF_Msk (0x1UL << RTC_MISR_TSOVMF_Pos) /*!< 0x00000010 */ +#define RTC_MISR_TSOVMF RTC_MISR_TSOVMF_Msk /*!< Timestamp overflow masked flag > */ +#define RTC_MISR_TSMF_Pos (3U) +#define RTC_MISR_TSMF_Msk (0x1UL << RTC_MISR_TSMF_Pos) /*!< 0x00000008 */ +#define RTC_MISR_TSMF RTC_MISR_TSMF_Msk /*!< Timestamp masked flag > */ +#define RTC_MISR_WUTMF_Pos (2U) +#define RTC_MISR_WUTMF_Msk (0x1UL << RTC_MISR_WUTMF_Pos) /*!< 0x00000004 */ +#define RTC_MISR_WUTMF RTC_MISR_WUTMF_Msk /*!< Wakeup timer masked flag > */ +#define RTC_MISR_ALRBMF_Pos (1U) +#define RTC_MISR_ALRBMF_Msk (0x1UL << RTC_MISR_ALRBMF_Pos) /*!< 0x00000002 */ +#define RTC_MISR_ALRBMF RTC_MISR_ALRBMF_Msk +#define RTC_MISR_ALRAMF_Pos (0U) +#define RTC_MISR_ALRAMF_Msk (0x1UL << RTC_MISR_ALRAMF_Pos) /*!< 0x00000001 */ +#define RTC_MISR_ALRAMF RTC_MISR_ALRAMF_Msk + +/******************** Bits definition for RTC_SCR register ******************/ +#define RTC_SCR_CITSF_Pos (5U) +#define RTC_SCR_CITSF_Msk (0x1UL << RTC_SCR_CITSF_Pos) /*!< 0x00000020 */ +#define RTC_SCR_CITSF RTC_SCR_CITSF_Msk +#define RTC_SCR_CTSOVF_Pos (4U) +#define RTC_SCR_CTSOVF_Msk (0x1UL << RTC_SCR_CTSOVF_Pos) /*!< 0x00000010 */ +#define RTC_SCR_CTSOVF RTC_SCR_CTSOVF_Msk /*!< Clear timestamp overflow flag > */ +#define RTC_SCR_CTSF_Pos (3U) +#define RTC_SCR_CTSF_Msk (0x1UL << RTC_SCR_CTSF_Pos) /*!< 0x00000008 */ +#define RTC_SCR_CTSF RTC_SCR_CTSF_Msk /*!< Clear timestamp flag > */ +#define RTC_SCR_CWUTF_Pos (2U) +#define RTC_SCR_CWUTF_Msk (0x1UL << RTC_SCR_CWUTF_Pos) /*!< 0x00000004 */ +#define RTC_SCR_CWUTF RTC_SCR_CWUTF_Msk /*!< Clear wakeup timer flag > */ +#define RTC_SCR_CALRBF_Pos (1U) +#define RTC_SCR_CALRBF_Msk (0x1UL << RTC_SCR_CALRBF_Pos) /*!< 0x00000002 */ +#define RTC_SCR_CALRBF RTC_SCR_CALRBF_Msk +#define RTC_SCR_CALRAF_Pos (0U) +#define RTC_SCR_CALRAF_Msk (0x1UL << RTC_SCR_CALRAF_Pos) /*!< 0x00000001 */ +#define RTC_SCR_CALRAF RTC_SCR_CALRAF_Msk + +/******************************************************************************/ +/* */ +/* Tamper and backup register (TAMP) */ +/* */ +/******************************************************************************/ +/******************** Bits definition for TAMP_CR1 register *****************/ +#define TAMP_CR1_TAMP1E_Pos (0U) +#define TAMP_CR1_TAMP1E_Msk (0x1UL << TAMP_CR1_TAMP1E_Pos) /*!< 0x00000001 */ +#define TAMP_CR1_TAMP1E TAMP_CR1_TAMP1E_Msk +#define TAMP_CR1_TAMP2E_Pos (1U) +#define TAMP_CR1_TAMP2E_Msk (0x1UL << TAMP_CR1_TAMP2E_Pos) /*!< 0x00000002 */ +#define TAMP_CR1_TAMP2E TAMP_CR1_TAMP2E_Msk +#define TAMP_CR1_ITAMP3E_Pos (18U) +#define TAMP_CR1_ITAMP3E_Msk (0x1UL << TAMP_CR1_ITAMP3E_Pos) /*!< 0x00040000 */ +#define TAMP_CR1_ITAMP3E TAMP_CR1_ITAMP3E_Msk +#define TAMP_CR1_ITAMP4E_Pos (19U) +#define TAMP_CR1_ITAMP4E_Msk (0x1UL << TAMP_CR1_ITAMP4E_Pos) /*!< 0x00080000 */ +#define TAMP_CR1_ITAMP4E TAMP_CR1_ITAMP4E_Msk +#define TAMP_CR1_ITAMP5E_Pos (20U) +#define TAMP_CR1_ITAMP5E_Msk (0x1UL << TAMP_CR1_ITAMP5E_Pos) /*!< 0x00100000 */ +#define TAMP_CR1_ITAMP5E TAMP_CR1_ITAMP5E_Msk +#define TAMP_CR1_ITAMP6E_Pos (21U) +#define TAMP_CR1_ITAMP6E_Msk (0x1UL << TAMP_CR1_ITAMP6E_Pos) /*!< 0x00200000 */ +#define TAMP_CR1_ITAMP6E TAMP_CR1_ITAMP6E_Msk + +/******************** Bits definition for TAMP_CR2 register *****************/ +#define TAMP_CR2_TAMP1NOERASE_Pos (0U) +#define TAMP_CR2_TAMP1NOERASE_Msk (0x1UL << TAMP_CR2_TAMP1NOERASE_Pos) /*!< 0x00000001 */ +#define TAMP_CR2_TAMP1NOERASE TAMP_CR2_TAMP1NOERASE_Msk +#define TAMP_CR2_TAMP2NOERASE_Pos (1U) +#define TAMP_CR2_TAMP2NOERASE_Msk (0x1UL << TAMP_CR2_TAMP2NOERASE_Pos) /*!< 0x00000002 */ +#define TAMP_CR2_TAMP2NOERASE TAMP_CR2_TAMP2NOERASE_Msk +#define TAMP_CR2_TAMP1MSK_Pos (16U) +#define TAMP_CR2_TAMP1MSK_Msk (0x1UL << TAMP_CR2_TAMP1MSK_Pos) /*!< 0x00010000 */ +#define TAMP_CR2_TAMP1MSK TAMP_CR2_TAMP1MSK_Msk +#define TAMP_CR2_TAMP2MSK_Pos (17U) +#define TAMP_CR2_TAMP2MSK_Msk (0x1UL << TAMP_CR2_TAMP2MSK_Pos) /*!< 0x00020000 */ +#define TAMP_CR2_TAMP2MSK TAMP_CR2_TAMP2MSK_Msk +#define TAMP_CR2_TAMP1TRG_Pos (24U) +#define TAMP_CR2_TAMP1TRG_Msk (0x1UL << TAMP_CR2_TAMP1TRG_Pos) /*!< 0x01000000 */ +#define TAMP_CR2_TAMP1TRG TAMP_CR2_TAMP1TRG_Msk +#define TAMP_CR2_TAMP2TRG_Pos (25U) +#define TAMP_CR2_TAMP2TRG_Msk (0x1UL << TAMP_CR2_TAMP2TRG_Pos) /*!< 0x02000000 */ +#define TAMP_CR2_TAMP2TRG TAMP_CR2_TAMP2TRG_Msk + +/******************** Bits definition for TAMP_FLTCR register ***************/ +#define TAMP_FLTCR_TAMPFREQ_0 0x00000001U +#define TAMP_FLTCR_TAMPFREQ_1 0x00000002U +#define TAMP_FLTCR_TAMPFREQ_2 0x00000004U +#define TAMP_FLTCR_TAMPFREQ_Pos (0U) +#define TAMP_FLTCR_TAMPFREQ_Msk (0x7UL << TAMP_FLTCR_TAMPFREQ_Pos) /*!< 0x00000007 */ +#define TAMP_FLTCR_TAMPFREQ TAMP_FLTCR_TAMPFREQ_Msk +#define TAMP_FLTCR_TAMPFLT_0 0x00000008U +#define TAMP_FLTCR_TAMPFLT_1 0x00000010U +#define TAMP_FLTCR_TAMPFLT_Pos (3U) +#define TAMP_FLTCR_TAMPFLT_Msk (0x3UL << TAMP_FLTCR_TAMPFLT_Pos) /*!< 0x00000018 */ +#define TAMP_FLTCR_TAMPFLT TAMP_FLTCR_TAMPFLT_Msk +#define TAMP_FLTCR_TAMPPRCH_0 0x00000020U +#define TAMP_FLTCR_TAMPPRCH_1 0x00000040U +#define TAMP_FLTCR_TAMPPRCH_Pos (5U) +#define TAMP_FLTCR_TAMPPRCH_Msk (0x3UL << TAMP_FLTCR_TAMPPRCH_Pos) /*!< 0x00000060 */ +#define TAMP_FLTCR_TAMPPRCH TAMP_FLTCR_TAMPPRCH_Msk +#define TAMP_FLTCR_TAMPPUDIS_Pos (7U) +#define TAMP_FLTCR_TAMPPUDIS_Msk (0x1UL << TAMP_FLTCR_TAMPPUDIS_Pos) /*!< 0x00000080 */ +#define TAMP_FLTCR_TAMPPUDIS TAMP_FLTCR_TAMPPUDIS_Msk + +/******************** Bits definition for TAMP_IER register *****************/ +#define TAMP_IER_TAMP1IE_Pos (0U) +#define TAMP_IER_TAMP1IE_Msk (0x1UL << TAMP_IER_TAMP1IE_Pos) /*!< 0x00000001 */ +#define TAMP_IER_TAMP1IE TAMP_IER_TAMP1IE_Msk +#define TAMP_IER_TAMP2IE_Pos (1U) +#define TAMP_IER_TAMP2IE_Msk (0x1UL << TAMP_IER_TAMP2IE_Pos) /*!< 0x00000002 */ +#define TAMP_IER_TAMP2IE TAMP_IER_TAMP2IE_Msk +#define TAMP_IER_ITAMP3IE_Pos (18U) +#define TAMP_IER_ITAMP3IE_Msk (0x1UL << TAMP_IER_ITAMP3IE_Pos) /*!< 0x00040000 */ +#define TAMP_IER_ITAMP3IE TAMP_IER_ITAMP3IE_Msk +#define TAMP_IER_ITAMP4IE_Pos (19U) +#define TAMP_IER_ITAMP4IE_Msk (0x1UL << TAMP_IER_ITAMP4IE_Pos) /*!< 0x00080000 */ +#define TAMP_IER_ITAMP4IE TAMP_IER_ITAMP4IE_Msk +#define TAMP_IER_ITAMP5IE_Pos (20U) +#define TAMP_IER_ITAMP5IE_Msk (0x1UL << TAMP_IER_ITAMP5IE_Pos) /*!< 0x00100000 */ +#define TAMP_IER_ITAMP5IE TAMP_IER_ITAMP5IE_Msk +#define TAMP_IER_ITAMP6IE_Pos (21U) +#define TAMP_IER_ITAMP6IE_Msk (0x1UL << TAMP_IER_ITAMP6IE_Pos) /*!< 0x00200000 */ +#define TAMP_IER_ITAMP6IE TAMP_IER_ITAMP6IE_Msk + +/******************** Bits definition for TAMP_SR register ******************/ +#define TAMP_SR_TAMP1F_Pos (0U) +#define TAMP_SR_TAMP1F_Msk (0x1UL << TAMP_SR_TAMP1F_Pos) /*!< 0x00000001 */ +#define TAMP_SR_TAMP1F TAMP_SR_TAMP1F_Msk +#define TAMP_SR_TAMP2F_Pos (1U) +#define TAMP_SR_TAMP2F_Msk (0x1UL << TAMP_SR_TAMP2F_Pos) /*!< 0x00000002 */ +#define TAMP_SR_TAMP2F TAMP_SR_TAMP2F_Msk +#define TAMP_SR_ITAMP3F_Pos (18U) +#define TAMP_SR_ITAMP3F_Msk (0x1UL << TAMP_SR_ITAMP3F_Pos) /*!< 0x00040000 */ +#define TAMP_SR_ITAMP3F TAMP_SR_ITAMP3F_Msk +#define TAMP_SR_ITAMP4F_Pos (19U) +#define TAMP_SR_ITAMP4F_Msk (0x1UL << TAMP_SR_ITAMP4F_Pos) /*!< 0x00080000 */ +#define TAMP_SR_ITAMP4F TAMP_SR_ITAMP4F_Msk +#define TAMP_SR_ITAMP5F_Pos (20U) +#define TAMP_SR_ITAMP5F_Msk (0x1UL << TAMP_SR_ITAMP5F_Pos) /*!< 0x00100000 */ +#define TAMP_SR_ITAMP5F TAMP_SR_ITAMP5F_Msk +#define TAMP_SR_ITAMP6F_Pos (21U) +#define TAMP_SR_ITAMP6F_Msk (0x1UL << TAMP_SR_ITAMP6F_Pos) /*!< 0x00200000 */ +#define TAMP_SR_ITAMP6F TAMP_SR_ITAMP6F_Msk + +/******************** Bits definition for TAMP_MISR register ****************/ +#define TAMP_MISR_TAMP1MF_Pos (0U) +#define TAMP_MISR_TAMP1MF_Msk (0x1UL << TAMP_MISR_TAMP1MF_Pos) /*!< 0x00000001 */ +#define TAMP_MISR_TAMP1MF TAMP_MISR_TAMP1MF_Msk +#define TAMP_MISR_TAMP2MF_Pos (1U) +#define TAMP_MISR_TAMP2MF_Msk (0x1UL << TAMP_MISR_TAMP2MF_Pos) /*!< 0x00000002 */ +#define TAMP_MISR_TAMP2MF TAMP_MISR_TAMP2MF_Msk +#define TAMP_MISR_ITAMP3MF_Pos (18U) +#define TAMP_MISR_ITAMP3MF_Msk (0x1UL << TAMP_MISR_ITAMP3MF_Pos) /*!< 0x00040000 */ +#define TAMP_MISR_ITAMP3MF TAMP_MISR_ITAMP3MF_Msk +#define TAMP_MISR_ITAMP4MF_Pos (19U) +#define TAMP_MISR_ITAMP4MF_Msk (0x1UL << TAMP_MISR_ITAMP4MF_Pos) /*!< 0x00080000 */ +#define TAMP_MISR_ITAMP4MF TAMP_MISR_ITAMP4MF_Msk +#define TAMP_MISR_ITAMP5MF_Pos (20U) +#define TAMP_MISR_ITAMP5MF_Msk (0x1UL << TAMP_MISR_ITAMP5MF_Pos) /*!< 0x00100000 */ +#define TAMP_MISR_ITAMP5MF TAMP_MISR_ITAMP5MF_Msk +#define TAMP_MISR_ITAMP6MF_Pos (21U) +#define TAMP_MISR_ITAMP6MF_Msk (0x1UL << TAMP_MISR_ITAMP6MF_Pos) /*!< 0x00200000 */ +#define TAMP_MISR_ITAMP6MF TAMP_MISR_ITAMP6MF_Msk + +/******************** Bits definition for TAMP_SCR register *****************/ +#define TAMP_SCR_CTAMP1F_Pos (0U) +#define TAMP_SCR_CTAMP1F_Msk (0x1UL << TAMP_SCR_CTAMP1F_Pos) /*!< 0x00000001 */ +#define TAMP_SCR_CTAMP1F TAMP_SCR_CTAMP1F_Msk +#define TAMP_SCR_CTAMP2F_Pos (1U) +#define TAMP_SCR_CTAMP2F_Msk (0x1UL << TAMP_SCR_CTAMP2F_Pos) /*!< 0x00000002 */ +#define TAMP_SCR_CTAMP2F TAMP_SCR_CTAMP2F_Msk +#define TAMP_SCR_CITAMP3F_Pos (18U) +#define TAMP_SCR_CITAMP3F_Msk (0x1UL << TAMP_SCR_CITAMP3F_Pos) /*!< 0x00040000 */ +#define TAMP_SCR_CITAMP3F TAMP_SCR_CITAMP3F_Msk +#define TAMP_SCR_CITAMP4F_Pos (19U) +#define TAMP_SCR_CITAMP4F_Msk (0x1UL << TAMP_SCR_CITAMP4F_Pos) /*!< 0x00080000 */ +#define TAMP_SCR_CITAMP4F TAMP_SCR_CITAMP4F_Msk +#define TAMP_SCR_CITAMP5F_Pos (20U) +#define TAMP_SCR_CITAMP5F_Msk (0x1UL << TAMP_SCR_CITAMP5F_Pos) /*!< 0x00100000 */ +#define TAMP_SCR_CITAMP5F TAMP_SCR_CITAMP5F_Msk +#define TAMP_SCR_CITAMP6F_Pos (21U) +#define TAMP_SCR_CITAMP6F_Msk (0x1UL << TAMP_SCR_CITAMP6F_Pos) /*!< 0x00200000 */ +#define TAMP_SCR_CITAMP6F TAMP_SCR_CITAMP6F_Msk + +/******************** Bits definition for TAMP_BKP0R register ***************/ +#define TAMP_BKP0R_Pos (0U) +#define TAMP_BKP0R_Msk (0xFFFFFFFFUL << TAMP_BKP0R_Pos) /*!< 0xFFFFFFFF */ +#define TAMP_BKP0R TAMP_BKP0R_Msk + +/******************** Bits definition for TAMP_BKP1R register ***************/ +#define TAMP_BKP1R_Pos (0U) +#define TAMP_BKP1R_Msk (0xFFFFFFFFUL << TAMP_BKP1R_Pos) /*!< 0xFFFFFFFF */ +#define TAMP_BKP1R TAMP_BKP1R_Msk + +/******************** Bits definition for TAMP_BKP2R register ***************/ +#define TAMP_BKP2R_Pos (0U) +#define TAMP_BKP2R_Msk (0xFFFFFFFFUL << TAMP_BKP2R_Pos) /*!< 0xFFFFFFFF */ +#define TAMP_BKP2R TAMP_BKP2R_Msk + +/******************** Bits definition for TAMP_BKP3R register ***************/ +#define TAMP_BKP3R_Pos (0U) +#define TAMP_BKP3R_Msk (0xFFFFFFFFUL << TAMP_BKP3R_Pos) /*!< 0xFFFFFFFF */ +#define TAMP_BKP3R TAMP_BKP3R_Msk + +/******************** Bits definition for TAMP_BKP4R register ***************/ +#define TAMP_BKP4R_Pos (0U) +#define TAMP_BKP4R_Msk (0xFFFFFFFFUL << TAMP_BKP4R_Pos) /*!< 0xFFFFFFFF */ +#define TAMP_BKP4R TAMP_BKP4R_Msk + +/******************************************************************************/ +/* */ +/* Serial Peripheral Interface (SPI) */ +/* */ +/******************************************************************************/ +/* + * @brief Specific device feature definitions (not present on all devices in the STM32G0 series) + */ +#define SPI_I2S_SUPPORT /*!< I2S support */ + +/******************* Bit definition for SPI_CR1 register ********************/ +#define SPI_CR1_CPHA_Pos (0U) +#define SPI_CR1_CPHA_Msk (0x1UL << SPI_CR1_CPHA_Pos) /*!< 0x00000001 */ +#define SPI_CR1_CPHA SPI_CR1_CPHA_Msk /*! exti[21] interrupt */ +#define SYSCFG_ITLINE2_SR_RTC_Pos (1U) +#define SYSCFG_ITLINE2_SR_RTC_Msk (0x1UL << SYSCFG_ITLINE2_SR_RTC_Pos) /*!< 0x00000002 */ +#define SYSCFG_ITLINE2_SR_RTC SYSCFG_ITLINE2_SR_RTC_Msk /*!< RTC -> exti[19] interrupt .... */ +#define SYSCFG_ITLINE3_SR_FLASH_ECC_Pos (0U) +#define SYSCFG_ITLINE3_SR_FLASH_ECC_Msk (0x1UL << SYSCFG_ITLINE3_SR_FLASH_ECC_Pos) /*!< 0x00000001 */ +#define SYSCFG_ITLINE3_SR_FLASH_ECC SYSCFG_ITLINE3_SR_FLASH_ECC_Msk /*!< Flash ITF ECC interrupt */ +#define SYSCFG_ITLINE3_SR_FLASH_ITF_Pos (1U) +#define SYSCFG_ITLINE3_SR_FLASH_ITF_Msk (0x1UL << SYSCFG_ITLINE3_SR_FLASH_ITF_Pos) /*!< 0x00000002 */ +#define SYSCFG_ITLINE3_SR_FLASH_ITF SYSCFG_ITLINE3_SR_FLASH_ITF_Msk /*!< FLASH ITF interrupt */ +#define SYSCFG_ITLINE4_SR_CLK_CTRL_Pos (0U) +#define SYSCFG_ITLINE4_SR_CLK_CTRL_Msk (0x1UL << SYSCFG_ITLINE4_SR_CLK_CTRL_Pos) /*!< 0x00000001 */ +#define SYSCFG_ITLINE4_SR_CLK_CTRL SYSCFG_ITLINE4_SR_CLK_CTRL_Msk /*!< RCC interrupt */ +#define SYSCFG_ITLINE5_SR_EXTI0_Pos (0U) +#define SYSCFG_ITLINE5_SR_EXTI0_Msk (0x1UL << SYSCFG_ITLINE5_SR_EXTI0_Pos) /*!< 0x00000001 */ +#define SYSCFG_ITLINE5_SR_EXTI0 SYSCFG_ITLINE5_SR_EXTI0_Msk /*!< External Interrupt 0 */ +#define SYSCFG_ITLINE5_SR_EXTI1_Pos (1U) +#define SYSCFG_ITLINE5_SR_EXTI1_Msk (0x1UL << SYSCFG_ITLINE5_SR_EXTI1_Pos) /*!< 0x00000002 */ +#define SYSCFG_ITLINE5_SR_EXTI1 SYSCFG_ITLINE5_SR_EXTI1_Msk /*!< External Interrupt 1 */ +#define SYSCFG_ITLINE6_SR_EXTI2_Pos (0U) +#define SYSCFG_ITLINE6_SR_EXTI2_Msk (0x1UL << SYSCFG_ITLINE6_SR_EXTI2_Pos) /*!< 0x00000001 */ +#define SYSCFG_ITLINE6_SR_EXTI2 SYSCFG_ITLINE6_SR_EXTI2_Msk /*!< External Interrupt 2 */ +#define SYSCFG_ITLINE6_SR_EXTI3_Pos (1U) +#define SYSCFG_ITLINE6_SR_EXTI3_Msk (0x1UL << SYSCFG_ITLINE6_SR_EXTI3_Pos) /*!< 0x00000002 */ +#define SYSCFG_ITLINE6_SR_EXTI3 SYSCFG_ITLINE6_SR_EXTI3_Msk /*!< External Interrupt 3 */ +#define SYSCFG_ITLINE7_SR_EXTI4_Pos (0U) +#define SYSCFG_ITLINE7_SR_EXTI4_Msk (0x1UL << SYSCFG_ITLINE7_SR_EXTI4_Pos) /*!< 0x00000001 */ +#define SYSCFG_ITLINE7_SR_EXTI4 SYSCFG_ITLINE7_SR_EXTI4_Msk /*!< External Interrupt 4 */ +#define SYSCFG_ITLINE7_SR_EXTI5_Pos (1U) +#define SYSCFG_ITLINE7_SR_EXTI5_Msk (0x1UL << SYSCFG_ITLINE7_SR_EXTI5_Pos) /*!< 0x00000002 */ +#define SYSCFG_ITLINE7_SR_EXTI5 SYSCFG_ITLINE7_SR_EXTI5_Msk /*!< External Interrupt 5 */ +#define SYSCFG_ITLINE7_SR_EXTI6_Pos (2U) +#define SYSCFG_ITLINE7_SR_EXTI6_Msk (0x1UL << SYSCFG_ITLINE7_SR_EXTI6_Pos) /*!< 0x00000004 */ +#define SYSCFG_ITLINE7_SR_EXTI6 SYSCFG_ITLINE7_SR_EXTI6_Msk /*!< External Interrupt 6 */ +#define SYSCFG_ITLINE7_SR_EXTI7_Pos (3U) +#define SYSCFG_ITLINE7_SR_EXTI7_Msk (0x1UL << SYSCFG_ITLINE7_SR_EXTI7_Pos) /*!< 0x00000008 */ +#define SYSCFG_ITLINE7_SR_EXTI7 SYSCFG_ITLINE7_SR_EXTI7_Msk /*!< External Interrupt 7 */ +#define SYSCFG_ITLINE7_SR_EXTI8_Pos (4U) +#define SYSCFG_ITLINE7_SR_EXTI8_Msk (0x1UL << SYSCFG_ITLINE7_SR_EXTI8_Pos) /*!< 0x00000010 */ +#define SYSCFG_ITLINE7_SR_EXTI8 SYSCFG_ITLINE7_SR_EXTI8_Msk /*!< External Interrupt 8 */ +#define SYSCFG_ITLINE7_SR_EXTI9_Pos (5U) +#define SYSCFG_ITLINE7_SR_EXTI9_Msk (0x1UL << SYSCFG_ITLINE7_SR_EXTI9_Pos) /*!< 0x00000020 */ +#define SYSCFG_ITLINE7_SR_EXTI9 SYSCFG_ITLINE7_SR_EXTI9_Msk /*!< External Interrupt 9 */ +#define SYSCFG_ITLINE7_SR_EXTI10_Pos (6U) +#define SYSCFG_ITLINE7_SR_EXTI10_Msk (0x1UL << SYSCFG_ITLINE7_SR_EXTI10_Pos) /*!< 0x00000040 */ +#define SYSCFG_ITLINE7_SR_EXTI10 SYSCFG_ITLINE7_SR_EXTI10_Msk /*!< External Interrupt 10 */ +#define SYSCFG_ITLINE7_SR_EXTI11_Pos (7U) +#define SYSCFG_ITLINE7_SR_EXTI11_Msk (0x1UL << SYSCFG_ITLINE7_SR_EXTI11_Pos) /*!< 0x00000080 */ +#define SYSCFG_ITLINE7_SR_EXTI11 SYSCFG_ITLINE7_SR_EXTI11_Msk /*!< External Interrupt 11 */ +#define SYSCFG_ITLINE7_SR_EXTI12_Pos (8U) +#define SYSCFG_ITLINE7_SR_EXTI12_Msk (0x1UL << SYSCFG_ITLINE7_SR_EXTI12_Pos) /*!< 0x00000100 */ +#define SYSCFG_ITLINE7_SR_EXTI12 SYSCFG_ITLINE7_SR_EXTI12_Msk /*!< External Interrupt 12 */ +#define SYSCFG_ITLINE7_SR_EXTI13_Pos (9U) +#define SYSCFG_ITLINE7_SR_EXTI13_Msk (0x1UL << SYSCFG_ITLINE7_SR_EXTI13_Pos) /*!< 0x00000200 */ +#define SYSCFG_ITLINE7_SR_EXTI13 SYSCFG_ITLINE7_SR_EXTI13_Msk /*!< External Interrupt 13 */ +#define SYSCFG_ITLINE7_SR_EXTI14_Pos (10U) +#define SYSCFG_ITLINE7_SR_EXTI14_Msk (0x1UL << SYSCFG_ITLINE7_SR_EXTI14_Pos) /*!< 0x00000400 */ +#define SYSCFG_ITLINE7_SR_EXTI14 SYSCFG_ITLINE7_SR_EXTI14_Msk /*!< External Interrupt 14 */ +#define SYSCFG_ITLINE7_SR_EXTI15_Pos (11U) +#define SYSCFG_ITLINE7_SR_EXTI15_Msk (0x1UL << SYSCFG_ITLINE7_SR_EXTI15_Pos) /*!< 0x00000800 */ +#define SYSCFG_ITLINE7_SR_EXTI15 SYSCFG_ITLINE7_SR_EXTI15_Msk /*!< External Interrupt 15 */ +#define SYSCFG_ITLINE9_SR_DMA1_CH1_Pos (0U) +#define SYSCFG_ITLINE9_SR_DMA1_CH1_Msk (0x1UL << SYSCFG_ITLINE9_SR_DMA1_CH1_Pos) /*!< 0x00000001 */ +#define SYSCFG_ITLINE9_SR_DMA1_CH1 SYSCFG_ITLINE9_SR_DMA1_CH1_Msk /*!< DMA1 Channel 1 Interrupt */ +#define SYSCFG_ITLINE10_SR_DMA1_CH2_Pos (0U) +#define SYSCFG_ITLINE10_SR_DMA1_CH2_Msk (0x1UL << SYSCFG_ITLINE10_SR_DMA1_CH2_Pos) /*!< 0x00000001 */ +#define SYSCFG_ITLINE10_SR_DMA1_CH2 SYSCFG_ITLINE10_SR_DMA1_CH2_Msk /*!< DMA1 Channel 2 Interrupt */ +#define SYSCFG_ITLINE10_SR_DMA1_CH3_Pos (1U) +#define SYSCFG_ITLINE10_SR_DMA1_CH3_Msk (0x1UL << SYSCFG_ITLINE10_SR_DMA1_CH3_Pos) /*!< 0x00000002 */ +#define SYSCFG_ITLINE10_SR_DMA1_CH3 SYSCFG_ITLINE10_SR_DMA1_CH3_Msk /*!< DMA2 Channel 3 Interrupt */ +#define SYSCFG_ITLINE11_SR_DMAMUX1_Pos (0U) +#define SYSCFG_ITLINE11_SR_DMAMUX1_Msk (0x1UL << SYSCFG_ITLINE11_SR_DMAMUX1_Pos) /*!< 0x00000001 */ +#define SYSCFG_ITLINE11_SR_DMAMUX1 SYSCFG_ITLINE11_SR_DMAMUX1_Msk /*!< DMAMUX Interrupt */ +#define SYSCFG_ITLINE11_SR_DMA1_CH4_Pos (1U) +#define SYSCFG_ITLINE11_SR_DMA1_CH4_Msk (0x1UL << SYSCFG_ITLINE11_SR_DMA1_CH4_Pos) /*!< 0x00000002 */ +#define SYSCFG_ITLINE11_SR_DMA1_CH4 SYSCFG_ITLINE11_SR_DMA1_CH4_Msk /*!< DMA1 Channel 4 Interrupt */ +#define SYSCFG_ITLINE11_SR_DMA1_CH5_Pos (2U) +#define SYSCFG_ITLINE11_SR_DMA1_CH5_Msk (0x1UL << SYSCFG_ITLINE11_SR_DMA1_CH5_Pos) /*!< 0x00000004 */ +#define SYSCFG_ITLINE11_SR_DMA1_CH5 SYSCFG_ITLINE11_SR_DMA1_CH5_Msk /*!< DMA1 Channel 5 Interrupt */ +#define SYSCFG_ITLINE11_SR_DMA1_CH6_Pos (3U) +#define SYSCFG_ITLINE11_SR_DMA1_CH6_Msk (0x1UL << SYSCFG_ITLINE11_SR_DMA1_CH6_Pos) /*!< 0x00000008 */ +#define SYSCFG_ITLINE11_SR_DMA1_CH6 SYSCFG_ITLINE11_SR_DMA1_CH6_Msk /*!< DMA1 Channel 6 Interrupt */ +#define SYSCFG_ITLINE11_SR_DMA1_CH7_Pos (4U) +#define SYSCFG_ITLINE11_SR_DMA1_CH7_Msk (0x1UL << SYSCFG_ITLINE11_SR_DMA1_CH7_Pos) /*!< 0x00000010 */ +#define SYSCFG_ITLINE11_SR_DMA1_CH7 SYSCFG_ITLINE11_SR_DMA1_CH7_Msk /*!< DMA1 Channel 7 Interrupt */ +#define SYSCFG_ITLINE12_SR_ADC_Pos (0U) +#define SYSCFG_ITLINE12_SR_ADC_Msk (0x1UL << SYSCFG_ITLINE12_SR_ADC_Pos) /*!< 0x00000001 */ +#define SYSCFG_ITLINE12_SR_ADC SYSCFG_ITLINE12_SR_ADC_Msk /*!< ADC Interrupt */ +#define SYSCFG_ITLINE13_SR_TIM1_CCU_Pos (0U) +#define SYSCFG_ITLINE13_SR_TIM1_CCU_Msk (0x1UL << SYSCFG_ITLINE13_SR_TIM1_CCU_Pos) /*!< 0x00000001 */ +#define SYSCFG_ITLINE13_SR_TIM1_CCU SYSCFG_ITLINE13_SR_TIM1_CCU_Msk /*!< TIM1 CCU Interrupt */ +#define SYSCFG_ITLINE13_SR_TIM1_TRG_Pos (1U) +#define SYSCFG_ITLINE13_SR_TIM1_TRG_Msk (0x1UL << SYSCFG_ITLINE13_SR_TIM1_TRG_Pos) /*!< 0x00000002 */ +#define SYSCFG_ITLINE13_SR_TIM1_TRG SYSCFG_ITLINE13_SR_TIM1_TRG_Msk /*!< TIM1 TRG Interrupt */ +#define SYSCFG_ITLINE13_SR_TIM1_UPD_Pos (2U) +#define SYSCFG_ITLINE13_SR_TIM1_UPD_Msk (0x1UL << SYSCFG_ITLINE13_SR_TIM1_UPD_Pos) /*!< 0x00000004 */ +#define SYSCFG_ITLINE13_SR_TIM1_UPD SYSCFG_ITLINE13_SR_TIM1_UPD_Msk /*!< TIM1 UPD Interrupt */ +#define SYSCFG_ITLINE13_SR_TIM1_BRK_Pos (3U) +#define SYSCFG_ITLINE13_SR_TIM1_BRK_Msk (0x1UL << SYSCFG_ITLINE13_SR_TIM1_BRK_Pos) /*!< 0x00000008 */ +#define SYSCFG_ITLINE13_SR_TIM1_BRK SYSCFG_ITLINE13_SR_TIM1_BRK_Msk /*!< TIM1 BRK Interrupt */ +#define SYSCFG_ITLINE14_SR_TIM1_CC_Pos (0U) +#define SYSCFG_ITLINE14_SR_TIM1_CC_Msk (0x1UL << SYSCFG_ITLINE14_SR_TIM1_CC_Pos) /*!< 0x00000001 */ +#define SYSCFG_ITLINE14_SR_TIM1_CC SYSCFG_ITLINE14_SR_TIM1_CC_Msk /*!< TIM1 CC Interrupt */ +#define SYSCFG_ITLINE16_SR_TIM3_GLB_Pos (0U) +#define SYSCFG_ITLINE16_SR_TIM3_GLB_Msk (0x1UL << SYSCFG_ITLINE16_SR_TIM3_GLB_Pos) /*!< 0x00000001 */ +#define SYSCFG_ITLINE16_SR_TIM3_GLB SYSCFG_ITLINE16_SR_TIM3_GLB_Msk /*!< TIM3 GLB Interrupt */ +#define SYSCFG_ITLINE17_SR_TIM6_GLB_Pos (0U) +#define SYSCFG_ITLINE17_SR_TIM6_GLB_Msk (0x1UL << SYSCFG_ITLINE17_SR_TIM6_GLB_Pos) /*!< 0x00000001 */ +#define SYSCFG_ITLINE17_SR_TIM6_GLB SYSCFG_ITLINE17_SR_TIM6_GLB_Msk /*!< TIM6 GLB Interrupt */ +#define SYSCFG_ITLINE18_SR_TIM7_GLB_Pos (0U) +#define SYSCFG_ITLINE18_SR_TIM7_GLB_Msk (0x1UL << SYSCFG_ITLINE18_SR_TIM7_GLB_Pos) /*!< 0x00000001 */ +#define SYSCFG_ITLINE18_SR_TIM7_GLB SYSCFG_ITLINE18_SR_TIM7_GLB_Msk /*!< TIM7 GLB Interrupt */ +#define SYSCFG_ITLINE19_SR_TIM14_GLB_Pos (0U) +#define SYSCFG_ITLINE19_SR_TIM14_GLB_Msk (0x1UL << SYSCFG_ITLINE19_SR_TIM14_GLB_Pos) /*!< 0x00000001 */ +#define SYSCFG_ITLINE19_SR_TIM14_GLB SYSCFG_ITLINE19_SR_TIM14_GLB_Msk /*!< TIM14 GLB Interrupt */ +#define SYSCFG_ITLINE20_SR_TIM15_GLB_Pos (0U) +#define SYSCFG_ITLINE20_SR_TIM15_GLB_Msk (0x1UL << SYSCFG_ITLINE20_SR_TIM15_GLB_Pos) /*!< 0x00000001 */ +#define SYSCFG_ITLINE20_SR_TIM15_GLB SYSCFG_ITLINE20_SR_TIM15_GLB_Msk /*!< TIM15 GLB Interrupt */ +#define SYSCFG_ITLINE21_SR_TIM16_GLB_Pos (0U) +#define SYSCFG_ITLINE21_SR_TIM16_GLB_Msk (0x1UL << SYSCFG_ITLINE21_SR_TIM16_GLB_Pos) /*!< 0x00000001 */ +#define SYSCFG_ITLINE21_SR_TIM16_GLB SYSCFG_ITLINE21_SR_TIM16_GLB_Msk /*!< TIM16 GLB Interrupt */ +#define SYSCFG_ITLINE22_SR_TIM17_GLB_Pos (0U) +#define SYSCFG_ITLINE22_SR_TIM17_GLB_Msk (0x1UL << SYSCFG_ITLINE22_SR_TIM17_GLB_Pos) /*!< 0x00000001 */ +#define SYSCFG_ITLINE22_SR_TIM17_GLB SYSCFG_ITLINE22_SR_TIM17_GLB_Msk /*!< TIM17 GLB Interrupt */ +#define SYSCFG_ITLINE23_SR_I2C1_GLB_Pos (0U) +#define SYSCFG_ITLINE23_SR_I2C1_GLB_Msk (0x1UL << SYSCFG_ITLINE23_SR_I2C1_GLB_Pos) /*!< 0x00000001 */ +#define SYSCFG_ITLINE23_SR_I2C1_GLB SYSCFG_ITLINE23_SR_I2C1_GLB_Msk /*!< I2C1 GLB Interrupt -> exti[23] */ +#define SYSCFG_ITLINE24_SR_I2C2_GLB_Pos (0U) +#define SYSCFG_ITLINE24_SR_I2C2_GLB_Msk (0x1UL << SYSCFG_ITLINE24_SR_I2C2_GLB_Pos) /*!< 0x00000001 */ +#define SYSCFG_ITLINE24_SR_I2C2_GLB SYSCFG_ITLINE24_SR_I2C2_GLB_Msk /*!< I2C2 GLB Interrupt -> exti[22]*/ +#define SYSCFG_ITLINE25_SR_SPI1_Pos (0U) +#define SYSCFG_ITLINE25_SR_SPI1_Msk (0x1UL << SYSCFG_ITLINE25_SR_SPI1_Pos) /*!< 0x00000001 */ +#define SYSCFG_ITLINE25_SR_SPI1 SYSCFG_ITLINE25_SR_SPI1_Msk /*!< SPI1 Interrupt */ +#define SYSCFG_ITLINE26_SR_SPI2_Pos (0U) +#define SYSCFG_ITLINE26_SR_SPI2_Msk (0x1UL << SYSCFG_ITLINE26_SR_SPI2_Pos) /*!< 0x00000001 */ +#define SYSCFG_ITLINE26_SR_SPI2 SYSCFG_ITLINE26_SR_SPI2_Msk /*!< SPI2 Interrupt */ +#define SYSCFG_ITLINE27_SR_USART1_GLB_Pos (0U) +#define SYSCFG_ITLINE27_SR_USART1_GLB_Msk (0x1UL << SYSCFG_ITLINE27_SR_USART1_GLB_Pos) /*!< 0x00000001 */ +#define SYSCFG_ITLINE27_SR_USART1_GLB SYSCFG_ITLINE27_SR_USART1_GLB_Msk /*!< USART1 GLB Interrupt -> exti[25] */ +#define SYSCFG_ITLINE28_SR_USART2_GLB_Pos (0U) +#define SYSCFG_ITLINE28_SR_USART2_GLB_Msk (0x1UL << SYSCFG_ITLINE28_SR_USART2_GLB_Pos) /*!< 0x00000001 */ +#define SYSCFG_ITLINE28_SR_USART2_GLB SYSCFG_ITLINE28_SR_USART2_GLB_Msk /*!< USART2 GLB Interrupt -> exti[26] */ +#define SYSCFG_ITLINE29_SR_USART3_GLB_Pos (0U) +#define SYSCFG_ITLINE29_SR_USART3_GLB_Msk (0x1UL << SYSCFG_ITLINE29_SR_USART3_GLB_Pos) /*!< 0x00000001 */ +#define SYSCFG_ITLINE29_SR_USART3_GLB SYSCFG_ITLINE29_SR_USART3_GLB_Msk /*!< USART3 GLB Interrupt */ +#define SYSCFG_ITLINE29_SR_USART4_GLB_Pos (1U) +#define SYSCFG_ITLINE29_SR_USART4_GLB_Msk (0x1UL << SYSCFG_ITLINE29_SR_USART4_GLB_Pos) /*!< 0x00000002 */ +#define SYSCFG_ITLINE29_SR_USART4_GLB SYSCFG_ITLINE29_SR_USART4_GLB_Msk /*!< USART4 GLB Interrupt */ + +/******************************************************************************/ +/* */ +/* TIM */ +/* */ +/******************************************************************************/ +/******************* Bit definition for TIM_CR1 register ********************/ +#define TIM_CR1_CEN_Pos (0U) +#define TIM_CR1_CEN_Msk (0x1UL << TIM_CR1_CEN_Pos) /*!< 0x00000001 */ +#define TIM_CR1_CEN TIM_CR1_CEN_Msk /*!>= 1U; value != 0U; value >>= 1U) + { + result <<= 1U; + result |= value & 1U; + s--; + } + result <<= s; /* shift when v's highest bits are zero */ + return result; +} +#endif + + +/** + \brief Count leading zeros + \details Counts the number of leading zeros of a data value. + \param [in] value Value to count the leading zeros + \return number of leading zeros in value + */ +#define __CLZ __clz + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) + +/** + \brief LDR Exclusive (8 bit) + \details Executes a exclusive LDR instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) + #define __LDREXB(ptr) ((uint8_t ) __ldrex(ptr)) +#else + #define __LDREXB(ptr) _Pragma("push") _Pragma("diag_suppress 3731") ((uint8_t ) __ldrex(ptr)) _Pragma("pop") +#endif + + +/** + \brief LDR Exclusive (16 bit) + \details Executes a exclusive LDR instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) + #define __LDREXH(ptr) ((uint16_t) __ldrex(ptr)) +#else + #define __LDREXH(ptr) _Pragma("push") _Pragma("diag_suppress 3731") ((uint16_t) __ldrex(ptr)) _Pragma("pop") +#endif + + +/** + \brief LDR Exclusive (32 bit) + \details Executes a exclusive LDR instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) + #define __LDREXW(ptr) ((uint32_t ) __ldrex(ptr)) +#else + #define __LDREXW(ptr) _Pragma("push") _Pragma("diag_suppress 3731") ((uint32_t ) __ldrex(ptr)) _Pragma("pop") +#endif + + +/** + \brief STR Exclusive (8 bit) + \details Executes a exclusive STR instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) + #define __STREXB(value, ptr) __strex(value, ptr) +#else + #define __STREXB(value, ptr) _Pragma("push") _Pragma("diag_suppress 3731") __strex(value, ptr) _Pragma("pop") +#endif + + +/** + \brief STR Exclusive (16 bit) + \details Executes a exclusive STR instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) + #define __STREXH(value, ptr) __strex(value, ptr) +#else + #define __STREXH(value, ptr) _Pragma("push") _Pragma("diag_suppress 3731") __strex(value, ptr) _Pragma("pop") +#endif + + +/** + \brief STR Exclusive (32 bit) + \details Executes a exclusive STR instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) + #define __STREXW(value, ptr) __strex(value, ptr) +#else + #define __STREXW(value, ptr) _Pragma("push") _Pragma("diag_suppress 3731") __strex(value, ptr) _Pragma("pop") +#endif + + +/** + \brief Remove the exclusive lock + \details Removes the exclusive lock which is created by LDREX. + */ +#define __CLREX __clrex + + +/** + \brief Signed Saturate + \details Saturates a signed value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (1..32) + \return Saturated value + */ +#define __SSAT __ssat + + +/** + \brief Unsigned Saturate + \details Saturates an unsigned value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (0..31) + \return Saturated value + */ +#define __USAT __usat + + +/** + \brief Rotate Right with Extend (32 bit) + \details Moves each bit of a bitstring right by one bit. + The carry input is shifted in at the left end of the bitstring. + \param [in] value Value to rotate + \return Rotated value + */ +#ifndef __NO_EMBEDDED_ASM +__attribute__((section(".rrx_text"))) __STATIC_INLINE __ASM uint32_t __RRX(uint32_t value) +{ + rrx r0, r0 + bx lr +} +#endif + + +/** + \brief LDRT Unprivileged (8 bit) + \details Executes a Unprivileged LDRT instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +#define __LDRBT(ptr) ((uint8_t ) __ldrt(ptr)) + + +/** + \brief LDRT Unprivileged (16 bit) + \details Executes a Unprivileged LDRT instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +#define __LDRHT(ptr) ((uint16_t) __ldrt(ptr)) + + +/** + \brief LDRT Unprivileged (32 bit) + \details Executes a Unprivileged LDRT instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +#define __LDRT(ptr) ((uint32_t ) __ldrt(ptr)) + + +/** + \brief STRT Unprivileged (8 bit) + \details Executes a Unprivileged STRT instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +#define __STRBT(value, ptr) __strt(value, ptr) + + +/** + \brief STRT Unprivileged (16 bit) + \details Executes a Unprivileged STRT instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +#define __STRHT(value, ptr) __strt(value, ptr) + + +/** + \brief STRT Unprivileged (32 bit) + \details Executes a Unprivileged STRT instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +#define __STRT(value, ptr) __strt(value, ptr) + +#else /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) */ + +/** + \brief Signed Saturate + \details Saturates a signed value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (1..32) + \return Saturated value + */ +__attribute__((always_inline)) __STATIC_INLINE int32_t __SSAT(int32_t val, uint32_t sat) +{ + if ((sat >= 1U) && (sat <= 32U)) + { + const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U); + const int32_t min = -1 - max ; + if (val > max) + { + return max; + } + else if (val < min) + { + return min; + } + } + return val; +} + +/** + \brief Unsigned Saturate + \details Saturates an unsigned value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (0..31) + \return Saturated value + */ +__attribute__((always_inline)) __STATIC_INLINE uint32_t __USAT(int32_t val, uint32_t sat) +{ + if (sat <= 31U) + { + const uint32_t max = ((1U << sat) - 1U); + if (val > (int32_t)max) + { + return max; + } + else if (val < 0) + { + return 0U; + } + } + return (uint32_t)val; +} + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) */ + +/*@}*/ /* end of group CMSIS_Core_InstructionInterface */ + + +/* ################### Compiler specific Intrinsics ########################### */ +/** \defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics + Access to dedicated SIMD instructions + @{ +*/ + +#if ((defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) + +#define __SADD8 __sadd8 +#define __QADD8 __qadd8 +#define __SHADD8 __shadd8 +#define __UADD8 __uadd8 +#define __UQADD8 __uqadd8 +#define __UHADD8 __uhadd8 +#define __SSUB8 __ssub8 +#define __QSUB8 __qsub8 +#define __SHSUB8 __shsub8 +#define __USUB8 __usub8 +#define __UQSUB8 __uqsub8 +#define __UHSUB8 __uhsub8 +#define __SADD16 __sadd16 +#define __QADD16 __qadd16 +#define __SHADD16 __shadd16 +#define __UADD16 __uadd16 +#define __UQADD16 __uqadd16 +#define __UHADD16 __uhadd16 +#define __SSUB16 __ssub16 +#define __QSUB16 __qsub16 +#define __SHSUB16 __shsub16 +#define __USUB16 __usub16 +#define __UQSUB16 __uqsub16 +#define __UHSUB16 __uhsub16 +#define __SASX __sasx +#define __QASX __qasx +#define __SHASX __shasx +#define __UASX __uasx +#define __UQASX __uqasx +#define __UHASX __uhasx +#define __SSAX __ssax +#define __QSAX __qsax +#define __SHSAX __shsax +#define __USAX __usax +#define __UQSAX __uqsax +#define __UHSAX __uhsax +#define __USAD8 __usad8 +#define __USADA8 __usada8 +#define __SSAT16 __ssat16 +#define __USAT16 __usat16 +#define __UXTB16 __uxtb16 +#define __UXTAB16 __uxtab16 +#define __SXTB16 __sxtb16 +#define __SXTAB16 __sxtab16 +#define __SMUAD __smuad +#define __SMUADX __smuadx +#define __SMLAD __smlad +#define __SMLADX __smladx +#define __SMLALD __smlald +#define __SMLALDX __smlaldx +#define __SMUSD __smusd +#define __SMUSDX __smusdx +#define __SMLSD __smlsd +#define __SMLSDX __smlsdx +#define __SMLSLD __smlsld +#define __SMLSLDX __smlsldx +#define __SEL __sel +#define __QADD __qadd +#define __QSUB __qsub + +#define __PKHBT(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0x0000FFFFUL) | \ + ((((uint32_t)(ARG2)) << (ARG3)) & 0xFFFF0000UL) ) + +#define __PKHTB(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0xFFFF0000UL) | \ + ((((uint32_t)(ARG2)) >> (ARG3)) & 0x0000FFFFUL) ) + +#define __SMMLA(ARG1,ARG2,ARG3) ( (int32_t)((((int64_t)(ARG1) * (ARG2)) + \ + ((int64_t)(ARG3) << 32U) ) >> 32U)) + +#endif /* ((defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) */ +/*@} end of group CMSIS_SIMD_intrinsics */ + + +#endif /* __CMSIS_ARMCC_H */ diff --git a/firmware/Drivers/CMSIS/Include/cmsis_armclang.h b/firmware/Drivers/CMSIS/Include/cmsis_armclang.h new file mode 100644 index 0000000..e917f35 --- /dev/null +++ b/firmware/Drivers/CMSIS/Include/cmsis_armclang.h @@ -0,0 +1,1444 @@ +/**************************************************************************//** + * @file cmsis_armclang.h + * @brief CMSIS compiler armclang (Arm Compiler 6) header file + * @version V5.2.0 + * @date 08. May 2019 + ******************************************************************************/ +/* + * Copyright (c) 2009-2019 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/*lint -esym(9058, IRQn)*/ /* disable MISRA 2012 Rule 2.4 for IRQn */ + +#ifndef __CMSIS_ARMCLANG_H +#define __CMSIS_ARMCLANG_H + +#pragma clang system_header /* treat file as system include file */ + +#ifndef __ARM_COMPAT_H +#include /* Compatibility header for Arm Compiler 5 intrinsics */ +#endif + +/* CMSIS compiler specific defines */ +#ifndef __ASM + #define __ASM __asm +#endif +#ifndef __INLINE + #define __INLINE __inline +#endif +#ifndef __STATIC_INLINE + #define __STATIC_INLINE static __inline +#endif +#ifndef __STATIC_FORCEINLINE + #define __STATIC_FORCEINLINE __attribute__((always_inline)) static __inline +#endif +#ifndef __NO_RETURN + #define __NO_RETURN __attribute__((__noreturn__)) +#endif +#ifndef __USED + #define __USED __attribute__((used)) +#endif +#ifndef __WEAK + #define __WEAK __attribute__((weak)) +#endif +#ifndef __PACKED + #define __PACKED __attribute__((packed, aligned(1))) +#endif +#ifndef __PACKED_STRUCT + #define __PACKED_STRUCT struct __attribute__((packed, aligned(1))) +#endif +#ifndef __PACKED_UNION + #define __PACKED_UNION union __attribute__((packed, aligned(1))) +#endif +#ifndef __UNALIGNED_UINT32 /* deprecated */ + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wpacked" +/*lint -esym(9058, T_UINT32)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT32 */ + struct __attribute__((packed)) T_UINT32 { uint32_t v; }; + #pragma clang diagnostic pop + #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) +#endif +#ifndef __UNALIGNED_UINT16_WRITE + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wpacked" +/*lint -esym(9058, T_UINT16_WRITE)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT16_WRITE */ + __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; + #pragma clang diagnostic pop + #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val)) +#endif +#ifndef __UNALIGNED_UINT16_READ + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wpacked" +/*lint -esym(9058, T_UINT16_READ)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT16_READ */ + __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; + #pragma clang diagnostic pop + #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) +#endif +#ifndef __UNALIGNED_UINT32_WRITE + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wpacked" +/*lint -esym(9058, T_UINT32_WRITE)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT32_WRITE */ + __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; + #pragma clang diagnostic pop + #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) +#endif +#ifndef __UNALIGNED_UINT32_READ + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wpacked" +/*lint -esym(9058, T_UINT32_READ)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT32_READ */ + __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; + #pragma clang diagnostic pop + #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) +#endif +#ifndef __ALIGNED + #define __ALIGNED(x) __attribute__((aligned(x))) +#endif +#ifndef __RESTRICT + #define __RESTRICT __restrict +#endif +#ifndef __COMPILER_BARRIER + #define __COMPILER_BARRIER() __ASM volatile("":::"memory") +#endif + +/* ######################### Startup and Lowlevel Init ######################## */ + +#ifndef __PROGRAM_START +#define __PROGRAM_START __main +#endif + +#ifndef __INITIAL_SP +#define __INITIAL_SP Image$$ARM_LIB_STACK$$ZI$$Limit +#endif + +#ifndef __STACK_LIMIT +#define __STACK_LIMIT Image$$ARM_LIB_STACK$$ZI$$Base +#endif + +#ifndef __VECTOR_TABLE +#define __VECTOR_TABLE __Vectors +#endif + +#ifndef __VECTOR_TABLE_ATTRIBUTE +#define __VECTOR_TABLE_ATTRIBUTE __attribute((used, section("RESET"))) +#endif + +/* ########################### Core Function Access ########################### */ +/** \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions + @{ + */ + +/** + \brief Enable IRQ Interrupts + \details Enables IRQ interrupts by clearing the I-bit in the CPSR. + Can only be executed in Privileged modes. + */ +/* intrinsic void __enable_irq(); see arm_compat.h */ + + +/** + \brief Disable IRQ Interrupts + \details Disables IRQ interrupts by setting the I-bit in the CPSR. + Can only be executed in Privileged modes. + */ +/* intrinsic void __disable_irq(); see arm_compat.h */ + + +/** + \brief Get Control Register + \details Returns the content of the Control Register. + \return Control Register value + */ +__STATIC_FORCEINLINE uint32_t __get_CONTROL(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, control" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Control Register (non-secure) + \details Returns the content of the non-secure Control Register when in secure mode. + \return non-secure Control Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_CONTROL_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, control_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Control Register + \details Writes the given value to the Control Register. + \param [in] control Control Register value to set + */ +__STATIC_FORCEINLINE void __set_CONTROL(uint32_t control) +{ + __ASM volatile ("MSR control, %0" : : "r" (control) : "memory"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Control Register (non-secure) + \details Writes the given value to the non-secure Control Register when in secure state. + \param [in] control Control Register value to set + */ +__STATIC_FORCEINLINE void __TZ_set_CONTROL_NS(uint32_t control) +{ + __ASM volatile ("MSR control_ns, %0" : : "r" (control) : "memory"); +} +#endif + + +/** + \brief Get IPSR Register + \details Returns the content of the IPSR Register. + \return IPSR Register value + */ +__STATIC_FORCEINLINE uint32_t __get_IPSR(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, ipsr" : "=r" (result) ); + return(result); +} + + +/** + \brief Get APSR Register + \details Returns the content of the APSR Register. + \return APSR Register value + */ +__STATIC_FORCEINLINE uint32_t __get_APSR(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, apsr" : "=r" (result) ); + return(result); +} + + +/** + \brief Get xPSR Register + \details Returns the content of the xPSR Register. + \return xPSR Register value + */ +__STATIC_FORCEINLINE uint32_t __get_xPSR(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, xpsr" : "=r" (result) ); + return(result); +} + + +/** + \brief Get Process Stack Pointer + \details Returns the current value of the Process Stack Pointer (PSP). + \return PSP Register value + */ +__STATIC_FORCEINLINE uint32_t __get_PSP(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, psp" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Process Stack Pointer (non-secure) + \details Returns the current value of the non-secure Process Stack Pointer (PSP) when in secure state. + \return PSP Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_PSP_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, psp_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Process Stack Pointer + \details Assigns the given value to the Process Stack Pointer (PSP). + \param [in] topOfProcStack Process Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __set_PSP(uint32_t topOfProcStack) +{ + __ASM volatile ("MSR psp, %0" : : "r" (topOfProcStack) : ); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Process Stack Pointer (non-secure) + \details Assigns the given value to the non-secure Process Stack Pointer (PSP) when in secure state. + \param [in] topOfProcStack Process Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_PSP_NS(uint32_t topOfProcStack) +{ + __ASM volatile ("MSR psp_ns, %0" : : "r" (topOfProcStack) : ); +} +#endif + + +/** + \brief Get Main Stack Pointer + \details Returns the current value of the Main Stack Pointer (MSP). + \return MSP Register value + */ +__STATIC_FORCEINLINE uint32_t __get_MSP(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, msp" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Main Stack Pointer (non-secure) + \details Returns the current value of the non-secure Main Stack Pointer (MSP) when in secure state. + \return MSP Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_MSP_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, msp_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Main Stack Pointer + \details Assigns the given value to the Main Stack Pointer (MSP). + \param [in] topOfMainStack Main Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __set_MSP(uint32_t topOfMainStack) +{ + __ASM volatile ("MSR msp, %0" : : "r" (topOfMainStack) : ); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Main Stack Pointer (non-secure) + \details Assigns the given value to the non-secure Main Stack Pointer (MSP) when in secure state. + \param [in] topOfMainStack Main Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_MSP_NS(uint32_t topOfMainStack) +{ + __ASM volatile ("MSR msp_ns, %0" : : "r" (topOfMainStack) : ); +} +#endif + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Stack Pointer (non-secure) + \details Returns the current value of the non-secure Stack Pointer (SP) when in secure state. + \return SP Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_SP_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, sp_ns" : "=r" (result) ); + return(result); +} + + +/** + \brief Set Stack Pointer (non-secure) + \details Assigns the given value to the non-secure Stack Pointer (SP) when in secure state. + \param [in] topOfStack Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_SP_NS(uint32_t topOfStack) +{ + __ASM volatile ("MSR sp_ns, %0" : : "r" (topOfStack) : ); +} +#endif + + +/** + \brief Get Priority Mask + \details Returns the current state of the priority mask bit from the Priority Mask Register. + \return Priority Mask value + */ +__STATIC_FORCEINLINE uint32_t __get_PRIMASK(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, primask" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Priority Mask (non-secure) + \details Returns the current state of the non-secure priority mask bit from the Priority Mask Register when in secure state. + \return Priority Mask value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_PRIMASK_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, primask_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Priority Mask + \details Assigns the given value to the Priority Mask Register. + \param [in] priMask Priority Mask + */ +__STATIC_FORCEINLINE void __set_PRIMASK(uint32_t priMask) +{ + __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Priority Mask (non-secure) + \details Assigns the given value to the non-secure Priority Mask Register when in secure state. + \param [in] priMask Priority Mask + */ +__STATIC_FORCEINLINE void __TZ_set_PRIMASK_NS(uint32_t priMask) +{ + __ASM volatile ("MSR primask_ns, %0" : : "r" (priMask) : "memory"); +} +#endif + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) +/** + \brief Enable FIQ + \details Enables FIQ interrupts by clearing the F-bit in the CPSR. + Can only be executed in Privileged modes. + */ +#define __enable_fault_irq __enable_fiq /* see arm_compat.h */ + + +/** + \brief Disable FIQ + \details Disables FIQ interrupts by setting the F-bit in the CPSR. + Can only be executed in Privileged modes. + */ +#define __disable_fault_irq __disable_fiq /* see arm_compat.h */ + + +/** + \brief Get Base Priority + \details Returns the current value of the Base Priority register. + \return Base Priority register value + */ +__STATIC_FORCEINLINE uint32_t __get_BASEPRI(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, basepri" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Base Priority (non-secure) + \details Returns the current value of the non-secure Base Priority register when in secure state. + \return Base Priority register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_BASEPRI_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, basepri_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Base Priority + \details Assigns the given value to the Base Priority register. + \param [in] basePri Base Priority value to set + */ +__STATIC_FORCEINLINE void __set_BASEPRI(uint32_t basePri) +{ + __ASM volatile ("MSR basepri, %0" : : "r" (basePri) : "memory"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Base Priority (non-secure) + \details Assigns the given value to the non-secure Base Priority register when in secure state. + \param [in] basePri Base Priority value to set + */ +__STATIC_FORCEINLINE void __TZ_set_BASEPRI_NS(uint32_t basePri) +{ + __ASM volatile ("MSR basepri_ns, %0" : : "r" (basePri) : "memory"); +} +#endif + + +/** + \brief Set Base Priority with condition + \details Assigns the given value to the Base Priority register only if BASEPRI masking is disabled, + or the new value increases the BASEPRI priority level. + \param [in] basePri Base Priority value to set + */ +__STATIC_FORCEINLINE void __set_BASEPRI_MAX(uint32_t basePri) +{ + __ASM volatile ("MSR basepri_max, %0" : : "r" (basePri) : "memory"); +} + + +/** + \brief Get Fault Mask + \details Returns the current value of the Fault Mask register. + \return Fault Mask register value + */ +__STATIC_FORCEINLINE uint32_t __get_FAULTMASK(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, faultmask" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Fault Mask (non-secure) + \details Returns the current value of the non-secure Fault Mask register when in secure state. + \return Fault Mask register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_FAULTMASK_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, faultmask_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Fault Mask + \details Assigns the given value to the Fault Mask register. + \param [in] faultMask Fault Mask value to set + */ +__STATIC_FORCEINLINE void __set_FAULTMASK(uint32_t faultMask) +{ + __ASM volatile ("MSR faultmask, %0" : : "r" (faultMask) : "memory"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Fault Mask (non-secure) + \details Assigns the given value to the non-secure Fault Mask register when in secure state. + \param [in] faultMask Fault Mask value to set + */ +__STATIC_FORCEINLINE void __TZ_set_FAULTMASK_NS(uint32_t faultMask) +{ + __ASM volatile ("MSR faultmask_ns, %0" : : "r" (faultMask) : "memory"); +} +#endif + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */ + + +#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) + +/** + \brief Get Process Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always in non-secure + mode. + + \details Returns the current value of the Process Stack Pointer Limit (PSPLIM). + \return PSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __get_PSPLIM(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, psplim" : "=r" (result) ); + return result; +#endif +} + +#if (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Process Stack Pointer Limit (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always in non-secure + mode. + + \details Returns the current value of the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state. + \return PSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_PSPLIM_NS(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, psplim_ns" : "=r" (result) ); + return result; +#endif +} +#endif + + +/** + \brief Set Process Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored in non-secure + mode. + + \details Assigns the given value to the Process Stack Pointer Limit (PSPLIM). + \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set + */ +__STATIC_FORCEINLINE void __set_PSPLIM(uint32_t ProcStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + (void)ProcStackPtrLimit; +#else + __ASM volatile ("MSR psplim, %0" : : "r" (ProcStackPtrLimit)); +#endif +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Process Stack Pointer (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored in non-secure + mode. + + \details Assigns the given value to the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state. + \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set + */ +__STATIC_FORCEINLINE void __TZ_set_PSPLIM_NS(uint32_t ProcStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + (void)ProcStackPtrLimit; +#else + __ASM volatile ("MSR psplim_ns, %0\n" : : "r" (ProcStackPtrLimit)); +#endif +} +#endif + + +/** + \brief Get Main Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always. + + \details Returns the current value of the Main Stack Pointer Limit (MSPLIM). + \return MSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __get_MSPLIM(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, msplim" : "=r" (result) ); + return result; +#endif +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Main Stack Pointer Limit (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always. + + \details Returns the current value of the non-secure Main Stack Pointer Limit(MSPLIM) when in secure state. + \return MSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_MSPLIM_NS(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, msplim_ns" : "=r" (result) ); + return result; +#endif +} +#endif + + +/** + \brief Set Main Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored. + + \details Assigns the given value to the Main Stack Pointer Limit (MSPLIM). + \param [in] MainStackPtrLimit Main Stack Pointer Limit value to set + */ +__STATIC_FORCEINLINE void __set_MSPLIM(uint32_t MainStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + (void)MainStackPtrLimit; +#else + __ASM volatile ("MSR msplim, %0" : : "r" (MainStackPtrLimit)); +#endif +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Main Stack Pointer Limit (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored. + + \details Assigns the given value to the non-secure Main Stack Pointer Limit (MSPLIM) when in secure state. + \param [in] MainStackPtrLimit Main Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_MSPLIM_NS(uint32_t MainStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + (void)MainStackPtrLimit; +#else + __ASM volatile ("MSR msplim_ns, %0" : : "r" (MainStackPtrLimit)); +#endif +} +#endif + +#endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */ + +/** + \brief Get FPSCR + \details Returns the current value of the Floating Point Status/Control register. + \return Floating Point Status/Control register value + */ +#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) +#define __get_FPSCR (uint32_t)__builtin_arm_get_fpscr +#else +#define __get_FPSCR() ((uint32_t)0U) +#endif + +/** + \brief Set FPSCR + \details Assigns the given value to the Floating Point Status/Control register. + \param [in] fpscr Floating Point Status/Control value to set + */ +#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) +#define __set_FPSCR __builtin_arm_set_fpscr +#else +#define __set_FPSCR(x) ((void)(x)) +#endif + + +/*@} end of CMSIS_Core_RegAccFunctions */ + + +/* ########################## Core Instruction Access ######################### */ +/** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface + Access to dedicated instructions + @{ +*/ + +/* Define macros for porting to both thumb1 and thumb2. + * For thumb1, use low register (r0-r7), specified by constraint "l" + * Otherwise, use general registers, specified by constraint "r" */ +#if defined (__thumb__) && !defined (__thumb2__) +#define __CMSIS_GCC_OUT_REG(r) "=l" (r) +#define __CMSIS_GCC_RW_REG(r) "+l" (r) +#define __CMSIS_GCC_USE_REG(r) "l" (r) +#else +#define __CMSIS_GCC_OUT_REG(r) "=r" (r) +#define __CMSIS_GCC_RW_REG(r) "+r" (r) +#define __CMSIS_GCC_USE_REG(r) "r" (r) +#endif + +/** + \brief No Operation + \details No Operation does nothing. This instruction can be used for code alignment purposes. + */ +#define __NOP __builtin_arm_nop + +/** + \brief Wait For Interrupt + \details Wait For Interrupt is a hint instruction that suspends execution until one of a number of events occurs. + */ +#define __WFI __builtin_arm_wfi + + +/** + \brief Wait For Event + \details Wait For Event is a hint instruction that permits the processor to enter + a low-power state until one of a number of events occurs. + */ +#define __WFE __builtin_arm_wfe + + +/** + \brief Send Event + \details Send Event is a hint instruction. It causes an event to be signaled to the CPU. + */ +#define __SEV __builtin_arm_sev + + +/** + \brief Instruction Synchronization Barrier + \details Instruction Synchronization Barrier flushes the pipeline in the processor, + so that all instructions following the ISB are fetched from cache or memory, + after the instruction has been completed. + */ +#define __ISB() __builtin_arm_isb(0xF) + +/** + \brief Data Synchronization Barrier + \details Acts as a special kind of Data Memory Barrier. + It completes when all explicit memory accesses before this instruction complete. + */ +#define __DSB() __builtin_arm_dsb(0xF) + + +/** + \brief Data Memory Barrier + \details Ensures the apparent order of the explicit memory operations before + and after the instruction, without ensuring their completion. + */ +#define __DMB() __builtin_arm_dmb(0xF) + + +/** + \brief Reverse byte order (32 bit) + \details Reverses the byte order in unsigned integer value. For example, 0x12345678 becomes 0x78563412. + \param [in] value Value to reverse + \return Reversed value + */ +#define __REV(value) __builtin_bswap32(value) + + +/** + \brief Reverse byte order (16 bit) + \details Reverses the byte order within each halfword of a word. For example, 0x12345678 becomes 0x34127856. + \param [in] value Value to reverse + \return Reversed value + */ +#define __REV16(value) __ROR(__REV(value), 16) + + +/** + \brief Reverse byte order (16 bit) + \details Reverses the byte order in a 16-bit value and returns the signed 16-bit result. For example, 0x0080 becomes 0x8000. + \param [in] value Value to reverse + \return Reversed value + */ +#define __REVSH(value) (int16_t)__builtin_bswap16(value) + + +/** + \brief Rotate Right in unsigned value (32 bit) + \details Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits. + \param [in] op1 Value to rotate + \param [in] op2 Number of Bits to rotate + \return Rotated value + */ +__STATIC_FORCEINLINE uint32_t __ROR(uint32_t op1, uint32_t op2) +{ + op2 %= 32U; + if (op2 == 0U) + { + return op1; + } + return (op1 >> op2) | (op1 << (32U - op2)); +} + + +/** + \brief Breakpoint + \details Causes the processor to enter Debug state. + Debug tools can use this to investigate system state when the instruction at a particular address is reached. + \param [in] value is ignored by the processor. + If required, a debugger can use it to store additional information about the breakpoint. + */ +#define __BKPT(value) __ASM volatile ("bkpt "#value) + + +/** + \brief Reverse bit order of value + \details Reverses the bit order of the given value. + \param [in] value Value to reverse + \return Reversed value + */ +#define __RBIT __builtin_arm_rbit + +/** + \brief Count leading zeros + \details Counts the number of leading zeros of a data value. + \param [in] value Value to count the leading zeros + \return number of leading zeros in value + */ +__STATIC_FORCEINLINE uint8_t __CLZ(uint32_t value) +{ + /* Even though __builtin_clz produces a CLZ instruction on ARM, formally + __builtin_clz(0) is undefined behaviour, so handle this case specially. + This guarantees ARM-compatible results if happening to compile on a non-ARM + target, and ensures the compiler doesn't decide to activate any + optimisations using the logic "value was passed to __builtin_clz, so it + is non-zero". + ARM Compiler 6.10 and possibly earlier will optimise this test away, leaving a + single CLZ instruction. + */ + if (value == 0U) + { + return 32U; + } + return __builtin_clz(value); +} + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) +/** + \brief LDR Exclusive (8 bit) + \details Executes a exclusive LDR instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +#define __LDREXB (uint8_t)__builtin_arm_ldrex + + +/** + \brief LDR Exclusive (16 bit) + \details Executes a exclusive LDR instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +#define __LDREXH (uint16_t)__builtin_arm_ldrex + + +/** + \brief LDR Exclusive (32 bit) + \details Executes a exclusive LDR instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +#define __LDREXW (uint32_t)__builtin_arm_ldrex + + +/** + \brief STR Exclusive (8 bit) + \details Executes a exclusive STR instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#define __STREXB (uint32_t)__builtin_arm_strex + + +/** + \brief STR Exclusive (16 bit) + \details Executes a exclusive STR instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#define __STREXH (uint32_t)__builtin_arm_strex + + +/** + \brief STR Exclusive (32 bit) + \details Executes a exclusive STR instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#define __STREXW (uint32_t)__builtin_arm_strex + + +/** + \brief Remove the exclusive lock + \details Removes the exclusive lock which is created by LDREX. + */ +#define __CLREX __builtin_arm_clrex + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */ + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) + +/** + \brief Signed Saturate + \details Saturates a signed value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (1..32) + \return Saturated value + */ +#define __SSAT __builtin_arm_ssat + + +/** + \brief Unsigned Saturate + \details Saturates an unsigned value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (0..31) + \return Saturated value + */ +#define __USAT __builtin_arm_usat + + +/** + \brief Rotate Right with Extend (32 bit) + \details Moves each bit of a bitstring right by one bit. + The carry input is shifted in at the left end of the bitstring. + \param [in] value Value to rotate + \return Rotated value + */ +__STATIC_FORCEINLINE uint32_t __RRX(uint32_t value) +{ + uint32_t result; + + __ASM volatile ("rrx %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); + return(result); +} + + +/** + \brief LDRT Unprivileged (8 bit) + \details Executes a Unprivileged LDRT instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +__STATIC_FORCEINLINE uint8_t __LDRBT(volatile uint8_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldrbt %0, %1" : "=r" (result) : "Q" (*ptr) ); + return ((uint8_t) result); /* Add explicit type cast here */ +} + + +/** + \brief LDRT Unprivileged (16 bit) + \details Executes a Unprivileged LDRT instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +__STATIC_FORCEINLINE uint16_t __LDRHT(volatile uint16_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldrht %0, %1" : "=r" (result) : "Q" (*ptr) ); + return ((uint16_t) result); /* Add explicit type cast here */ +} + + +/** + \brief LDRT Unprivileged (32 bit) + \details Executes a Unprivileged LDRT instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +__STATIC_FORCEINLINE uint32_t __LDRT(volatile uint32_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldrt %0, %1" : "=r" (result) : "Q" (*ptr) ); + return(result); +} + + +/** + \brief STRT Unprivileged (8 bit) + \details Executes a Unprivileged STRT instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STRBT(uint8_t value, volatile uint8_t *ptr) +{ + __ASM volatile ("strbt %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief STRT Unprivileged (16 bit) + \details Executes a Unprivileged STRT instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STRHT(uint16_t value, volatile uint16_t *ptr) +{ + __ASM volatile ("strht %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief STRT Unprivileged (32 bit) + \details Executes a Unprivileged STRT instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STRT(uint32_t value, volatile uint32_t *ptr) +{ + __ASM volatile ("strt %1, %0" : "=Q" (*ptr) : "r" (value) ); +} + +#else /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */ + +/** + \brief Signed Saturate + \details Saturates a signed value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (1..32) + \return Saturated value + */ +__STATIC_FORCEINLINE int32_t __SSAT(int32_t val, uint32_t sat) +{ + if ((sat >= 1U) && (sat <= 32U)) + { + const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U); + const int32_t min = -1 - max ; + if (val > max) + { + return max; + } + else if (val < min) + { + return min; + } + } + return val; +} + +/** + \brief Unsigned Saturate + \details Saturates an unsigned value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (0..31) + \return Saturated value + */ +__STATIC_FORCEINLINE uint32_t __USAT(int32_t val, uint32_t sat) +{ + if (sat <= 31U) + { + const uint32_t max = ((1U << sat) - 1U); + if (val > (int32_t)max) + { + return max; + } + else if (val < 0) + { + return 0U; + } + } + return (uint32_t)val; +} + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */ + + +#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) +/** + \brief Load-Acquire (8 bit) + \details Executes a LDAB instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +__STATIC_FORCEINLINE uint8_t __LDAB(volatile uint8_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldab %0, %1" : "=r" (result) : "Q" (*ptr) ); + return ((uint8_t) result); +} + + +/** + \brief Load-Acquire (16 bit) + \details Executes a LDAH instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +__STATIC_FORCEINLINE uint16_t __LDAH(volatile uint16_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldah %0, %1" : "=r" (result) : "Q" (*ptr) ); + return ((uint16_t) result); +} + + +/** + \brief Load-Acquire (32 bit) + \details Executes a LDA instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +__STATIC_FORCEINLINE uint32_t __LDA(volatile uint32_t *ptr) +{ + uint32_t result; + + __ASM volatile ("lda %0, %1" : "=r" (result) : "Q" (*ptr) ); + return(result); +} + + +/** + \brief Store-Release (8 bit) + \details Executes a STLB instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STLB(uint8_t value, volatile uint8_t *ptr) +{ + __ASM volatile ("stlb %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief Store-Release (16 bit) + \details Executes a STLH instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STLH(uint16_t value, volatile uint16_t *ptr) +{ + __ASM volatile ("stlh %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief Store-Release (32 bit) + \details Executes a STL instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STL(uint32_t value, volatile uint32_t *ptr) +{ + __ASM volatile ("stl %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief Load-Acquire Exclusive (8 bit) + \details Executes a LDAB exclusive instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +#define __LDAEXB (uint8_t)__builtin_arm_ldaex + + +/** + \brief Load-Acquire Exclusive (16 bit) + \details Executes a LDAH exclusive instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +#define __LDAEXH (uint16_t)__builtin_arm_ldaex + + +/** + \brief Load-Acquire Exclusive (32 bit) + \details Executes a LDA exclusive instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +#define __LDAEX (uint32_t)__builtin_arm_ldaex + + +/** + \brief Store-Release Exclusive (8 bit) + \details Executes a STLB exclusive instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#define __STLEXB (uint32_t)__builtin_arm_stlex + + +/** + \brief Store-Release Exclusive (16 bit) + \details Executes a STLH exclusive instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#define __STLEXH (uint32_t)__builtin_arm_stlex + + +/** + \brief Store-Release Exclusive (32 bit) + \details Executes a STL exclusive instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#define __STLEX (uint32_t)__builtin_arm_stlex + +#endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */ + +/*@}*/ /* end of group CMSIS_Core_InstructionInterface */ + + +/* ################### Compiler specific Intrinsics ########################### */ +/** \defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics + Access to dedicated SIMD instructions + @{ +*/ + +#if (defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1)) + +#define __SADD8 __builtin_arm_sadd8 +#define __QADD8 __builtin_arm_qadd8 +#define __SHADD8 __builtin_arm_shadd8 +#define __UADD8 __builtin_arm_uadd8 +#define __UQADD8 __builtin_arm_uqadd8 +#define __UHADD8 __builtin_arm_uhadd8 +#define __SSUB8 __builtin_arm_ssub8 +#define __QSUB8 __builtin_arm_qsub8 +#define __SHSUB8 __builtin_arm_shsub8 +#define __USUB8 __builtin_arm_usub8 +#define __UQSUB8 __builtin_arm_uqsub8 +#define __UHSUB8 __builtin_arm_uhsub8 +#define __SADD16 __builtin_arm_sadd16 +#define __QADD16 __builtin_arm_qadd16 +#define __SHADD16 __builtin_arm_shadd16 +#define __UADD16 __builtin_arm_uadd16 +#define __UQADD16 __builtin_arm_uqadd16 +#define __UHADD16 __builtin_arm_uhadd16 +#define __SSUB16 __builtin_arm_ssub16 +#define __QSUB16 __builtin_arm_qsub16 +#define __SHSUB16 __builtin_arm_shsub16 +#define __USUB16 __builtin_arm_usub16 +#define __UQSUB16 __builtin_arm_uqsub16 +#define __UHSUB16 __builtin_arm_uhsub16 +#define __SASX __builtin_arm_sasx +#define __QASX __builtin_arm_qasx +#define __SHASX __builtin_arm_shasx +#define __UASX __builtin_arm_uasx +#define __UQASX __builtin_arm_uqasx +#define __UHASX __builtin_arm_uhasx +#define __SSAX __builtin_arm_ssax +#define __QSAX __builtin_arm_qsax +#define __SHSAX __builtin_arm_shsax +#define __USAX __builtin_arm_usax +#define __UQSAX __builtin_arm_uqsax +#define __UHSAX __builtin_arm_uhsax +#define __USAD8 __builtin_arm_usad8 +#define __USADA8 __builtin_arm_usada8 +#define __SSAT16 __builtin_arm_ssat16 +#define __USAT16 __builtin_arm_usat16 +#define __UXTB16 __builtin_arm_uxtb16 +#define __UXTAB16 __builtin_arm_uxtab16 +#define __SXTB16 __builtin_arm_sxtb16 +#define __SXTAB16 __builtin_arm_sxtab16 +#define __SMUAD __builtin_arm_smuad +#define __SMUADX __builtin_arm_smuadx +#define __SMLAD __builtin_arm_smlad +#define __SMLADX __builtin_arm_smladx +#define __SMLALD __builtin_arm_smlald +#define __SMLALDX __builtin_arm_smlaldx +#define __SMUSD __builtin_arm_smusd +#define __SMUSDX __builtin_arm_smusdx +#define __SMLSD __builtin_arm_smlsd +#define __SMLSDX __builtin_arm_smlsdx +#define __SMLSLD __builtin_arm_smlsld +#define __SMLSLDX __builtin_arm_smlsldx +#define __SEL __builtin_arm_sel +#define __QADD __builtin_arm_qadd +#define __QSUB __builtin_arm_qsub + +#define __PKHBT(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0x0000FFFFUL) | \ + ((((uint32_t)(ARG2)) << (ARG3)) & 0xFFFF0000UL) ) + +#define __PKHTB(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0xFFFF0000UL) | \ + ((((uint32_t)(ARG2)) >> (ARG3)) & 0x0000FFFFUL) ) + +__STATIC_FORCEINLINE int32_t __SMMLA (int32_t op1, int32_t op2, int32_t op3) +{ + int32_t result; + + __ASM volatile ("smmla %0, %1, %2, %3" : "=r" (result): "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +#endif /* (__ARM_FEATURE_DSP == 1) */ +/*@} end of group CMSIS_SIMD_intrinsics */ + + +#endif /* __CMSIS_ARMCLANG_H */ diff --git a/firmware/Drivers/CMSIS/Include/cmsis_armclang_ltm.h b/firmware/Drivers/CMSIS/Include/cmsis_armclang_ltm.h new file mode 100644 index 0000000..feec324 --- /dev/null +++ b/firmware/Drivers/CMSIS/Include/cmsis_armclang_ltm.h @@ -0,0 +1,1891 @@ +/**************************************************************************//** + * @file cmsis_armclang_ltm.h + * @brief CMSIS compiler armclang (Arm Compiler 6) header file + * @version V1.2.0 + * @date 08. May 2019 + ******************************************************************************/ +/* + * Copyright (c) 2018-2019 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/*lint -esym(9058, IRQn)*/ /* disable MISRA 2012 Rule 2.4 for IRQn */ + +#ifndef __CMSIS_ARMCLANG_H +#define __CMSIS_ARMCLANG_H + +#pragma clang system_header /* treat file as system include file */ + +#ifndef __ARM_COMPAT_H +#include /* Compatibility header for Arm Compiler 5 intrinsics */ +#endif + +/* CMSIS compiler specific defines */ +#ifndef __ASM + #define __ASM __asm +#endif +#ifndef __INLINE + #define __INLINE __inline +#endif +#ifndef __STATIC_INLINE + #define __STATIC_INLINE static __inline +#endif +#ifndef __STATIC_FORCEINLINE + #define __STATIC_FORCEINLINE __attribute__((always_inline)) static __inline +#endif +#ifndef __NO_RETURN + #define __NO_RETURN __attribute__((__noreturn__)) +#endif +#ifndef __USED + #define __USED __attribute__((used)) +#endif +#ifndef __WEAK + #define __WEAK __attribute__((weak)) +#endif +#ifndef __PACKED + #define __PACKED __attribute__((packed, aligned(1))) +#endif +#ifndef __PACKED_STRUCT + #define __PACKED_STRUCT struct __attribute__((packed, aligned(1))) +#endif +#ifndef __PACKED_UNION + #define __PACKED_UNION union __attribute__((packed, aligned(1))) +#endif +#ifndef __UNALIGNED_UINT32 /* deprecated */ + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wpacked" +/*lint -esym(9058, T_UINT32)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT32 */ + struct __attribute__((packed)) T_UINT32 { uint32_t v; }; + #pragma clang diagnostic pop + #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) +#endif +#ifndef __UNALIGNED_UINT16_WRITE + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wpacked" +/*lint -esym(9058, T_UINT16_WRITE)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT16_WRITE */ + __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; + #pragma clang diagnostic pop + #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val)) +#endif +#ifndef __UNALIGNED_UINT16_READ + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wpacked" +/*lint -esym(9058, T_UINT16_READ)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT16_READ */ + __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; + #pragma clang diagnostic pop + #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) +#endif +#ifndef __UNALIGNED_UINT32_WRITE + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wpacked" +/*lint -esym(9058, T_UINT32_WRITE)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT32_WRITE */ + __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; + #pragma clang diagnostic pop + #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) +#endif +#ifndef __UNALIGNED_UINT32_READ + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wpacked" +/*lint -esym(9058, T_UINT32_READ)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT32_READ */ + __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; + #pragma clang diagnostic pop + #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) +#endif +#ifndef __ALIGNED + #define __ALIGNED(x) __attribute__((aligned(x))) +#endif +#ifndef __RESTRICT + #define __RESTRICT __restrict +#endif +#ifndef __COMPILER_BARRIER + #define __COMPILER_BARRIER() __ASM volatile("":::"memory") +#endif + +/* ######################### Startup and Lowlevel Init ######################## */ + +#ifndef __PROGRAM_START +#define __PROGRAM_START __main +#endif + +#ifndef __INITIAL_SP +#define __INITIAL_SP Image$$ARM_LIB_STACK$$ZI$$Limit +#endif + +#ifndef __STACK_LIMIT +#define __STACK_LIMIT Image$$ARM_LIB_STACK$$ZI$$Base +#endif + +#ifndef __VECTOR_TABLE +#define __VECTOR_TABLE __Vectors +#endif + +#ifndef __VECTOR_TABLE_ATTRIBUTE +#define __VECTOR_TABLE_ATTRIBUTE __attribute((used, section("RESET"))) +#endif + + +/* ########################### Core Function Access ########################### */ +/** \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions + @{ + */ + +/** + \brief Enable IRQ Interrupts + \details Enables IRQ interrupts by clearing the I-bit in the CPSR. + Can only be executed in Privileged modes. + */ +/* intrinsic void __enable_irq(); see arm_compat.h */ + + +/** + \brief Disable IRQ Interrupts + \details Disables IRQ interrupts by setting the I-bit in the CPSR. + Can only be executed in Privileged modes. + */ +/* intrinsic void __disable_irq(); see arm_compat.h */ + + +/** + \brief Get Control Register + \details Returns the content of the Control Register. + \return Control Register value + */ +__STATIC_FORCEINLINE uint32_t __get_CONTROL(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, control" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Control Register (non-secure) + \details Returns the content of the non-secure Control Register when in secure mode. + \return non-secure Control Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_CONTROL_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, control_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Control Register + \details Writes the given value to the Control Register. + \param [in] control Control Register value to set + */ +__STATIC_FORCEINLINE void __set_CONTROL(uint32_t control) +{ + __ASM volatile ("MSR control, %0" : : "r" (control) : "memory"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Control Register (non-secure) + \details Writes the given value to the non-secure Control Register when in secure state. + \param [in] control Control Register value to set + */ +__STATIC_FORCEINLINE void __TZ_set_CONTROL_NS(uint32_t control) +{ + __ASM volatile ("MSR control_ns, %0" : : "r" (control) : "memory"); +} +#endif + + +/** + \brief Get IPSR Register + \details Returns the content of the IPSR Register. + \return IPSR Register value + */ +__STATIC_FORCEINLINE uint32_t __get_IPSR(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, ipsr" : "=r" (result) ); + return(result); +} + + +/** + \brief Get APSR Register + \details Returns the content of the APSR Register. + \return APSR Register value + */ +__STATIC_FORCEINLINE uint32_t __get_APSR(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, apsr" : "=r" (result) ); + return(result); +} + + +/** + \brief Get xPSR Register + \details Returns the content of the xPSR Register. + \return xPSR Register value + */ +__STATIC_FORCEINLINE uint32_t __get_xPSR(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, xpsr" : "=r" (result) ); + return(result); +} + + +/** + \brief Get Process Stack Pointer + \details Returns the current value of the Process Stack Pointer (PSP). + \return PSP Register value + */ +__STATIC_FORCEINLINE uint32_t __get_PSP(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, psp" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Process Stack Pointer (non-secure) + \details Returns the current value of the non-secure Process Stack Pointer (PSP) when in secure state. + \return PSP Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_PSP_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, psp_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Process Stack Pointer + \details Assigns the given value to the Process Stack Pointer (PSP). + \param [in] topOfProcStack Process Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __set_PSP(uint32_t topOfProcStack) +{ + __ASM volatile ("MSR psp, %0" : : "r" (topOfProcStack) : ); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Process Stack Pointer (non-secure) + \details Assigns the given value to the non-secure Process Stack Pointer (PSP) when in secure state. + \param [in] topOfProcStack Process Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_PSP_NS(uint32_t topOfProcStack) +{ + __ASM volatile ("MSR psp_ns, %0" : : "r" (topOfProcStack) : ); +} +#endif + + +/** + \brief Get Main Stack Pointer + \details Returns the current value of the Main Stack Pointer (MSP). + \return MSP Register value + */ +__STATIC_FORCEINLINE uint32_t __get_MSP(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, msp" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Main Stack Pointer (non-secure) + \details Returns the current value of the non-secure Main Stack Pointer (MSP) when in secure state. + \return MSP Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_MSP_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, msp_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Main Stack Pointer + \details Assigns the given value to the Main Stack Pointer (MSP). + \param [in] topOfMainStack Main Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __set_MSP(uint32_t topOfMainStack) +{ + __ASM volatile ("MSR msp, %0" : : "r" (topOfMainStack) : ); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Main Stack Pointer (non-secure) + \details Assigns the given value to the non-secure Main Stack Pointer (MSP) when in secure state. + \param [in] topOfMainStack Main Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_MSP_NS(uint32_t topOfMainStack) +{ + __ASM volatile ("MSR msp_ns, %0" : : "r" (topOfMainStack) : ); +} +#endif + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Stack Pointer (non-secure) + \details Returns the current value of the non-secure Stack Pointer (SP) when in secure state. + \return SP Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_SP_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, sp_ns" : "=r" (result) ); + return(result); +} + + +/** + \brief Set Stack Pointer (non-secure) + \details Assigns the given value to the non-secure Stack Pointer (SP) when in secure state. + \param [in] topOfStack Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_SP_NS(uint32_t topOfStack) +{ + __ASM volatile ("MSR sp_ns, %0" : : "r" (topOfStack) : ); +} +#endif + + +/** + \brief Get Priority Mask + \details Returns the current state of the priority mask bit from the Priority Mask Register. + \return Priority Mask value + */ +__STATIC_FORCEINLINE uint32_t __get_PRIMASK(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, primask" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Priority Mask (non-secure) + \details Returns the current state of the non-secure priority mask bit from the Priority Mask Register when in secure state. + \return Priority Mask value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_PRIMASK_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, primask_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Priority Mask + \details Assigns the given value to the Priority Mask Register. + \param [in] priMask Priority Mask + */ +__STATIC_FORCEINLINE void __set_PRIMASK(uint32_t priMask) +{ + __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Priority Mask (non-secure) + \details Assigns the given value to the non-secure Priority Mask Register when in secure state. + \param [in] priMask Priority Mask + */ +__STATIC_FORCEINLINE void __TZ_set_PRIMASK_NS(uint32_t priMask) +{ + __ASM volatile ("MSR primask_ns, %0" : : "r" (priMask) : "memory"); +} +#endif + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) +/** + \brief Enable FIQ + \details Enables FIQ interrupts by clearing the F-bit in the CPSR. + Can only be executed in Privileged modes. + */ +#define __enable_fault_irq __enable_fiq /* see arm_compat.h */ + + +/** + \brief Disable FIQ + \details Disables FIQ interrupts by setting the F-bit in the CPSR. + Can only be executed in Privileged modes. + */ +#define __disable_fault_irq __disable_fiq /* see arm_compat.h */ + + +/** + \brief Get Base Priority + \details Returns the current value of the Base Priority register. + \return Base Priority register value + */ +__STATIC_FORCEINLINE uint32_t __get_BASEPRI(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, basepri" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Base Priority (non-secure) + \details Returns the current value of the non-secure Base Priority register when in secure state. + \return Base Priority register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_BASEPRI_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, basepri_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Base Priority + \details Assigns the given value to the Base Priority register. + \param [in] basePri Base Priority value to set + */ +__STATIC_FORCEINLINE void __set_BASEPRI(uint32_t basePri) +{ + __ASM volatile ("MSR basepri, %0" : : "r" (basePri) : "memory"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Base Priority (non-secure) + \details Assigns the given value to the non-secure Base Priority register when in secure state. + \param [in] basePri Base Priority value to set + */ +__STATIC_FORCEINLINE void __TZ_set_BASEPRI_NS(uint32_t basePri) +{ + __ASM volatile ("MSR basepri_ns, %0" : : "r" (basePri) : "memory"); +} +#endif + + +/** + \brief Set Base Priority with condition + \details Assigns the given value to the Base Priority register only if BASEPRI masking is disabled, + or the new value increases the BASEPRI priority level. + \param [in] basePri Base Priority value to set + */ +__STATIC_FORCEINLINE void __set_BASEPRI_MAX(uint32_t basePri) +{ + __ASM volatile ("MSR basepri_max, %0" : : "r" (basePri) : "memory"); +} + + +/** + \brief Get Fault Mask + \details Returns the current value of the Fault Mask register. + \return Fault Mask register value + */ +__STATIC_FORCEINLINE uint32_t __get_FAULTMASK(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, faultmask" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Fault Mask (non-secure) + \details Returns the current value of the non-secure Fault Mask register when in secure state. + \return Fault Mask register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_FAULTMASK_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, faultmask_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Fault Mask + \details Assigns the given value to the Fault Mask register. + \param [in] faultMask Fault Mask value to set + */ +__STATIC_FORCEINLINE void __set_FAULTMASK(uint32_t faultMask) +{ + __ASM volatile ("MSR faultmask, %0" : : "r" (faultMask) : "memory"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Fault Mask (non-secure) + \details Assigns the given value to the non-secure Fault Mask register when in secure state. + \param [in] faultMask Fault Mask value to set + */ +__STATIC_FORCEINLINE void __TZ_set_FAULTMASK_NS(uint32_t faultMask) +{ + __ASM volatile ("MSR faultmask_ns, %0" : : "r" (faultMask) : "memory"); +} +#endif + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */ + + +#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) + +/** + \brief Get Process Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always in non-secure + mode. + + \details Returns the current value of the Process Stack Pointer Limit (PSPLIM). + \return PSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __get_PSPLIM(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, psplim" : "=r" (result) ); + return result; +#endif +} + +#if (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Process Stack Pointer Limit (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always in non-secure + mode. + + \details Returns the current value of the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state. + \return PSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_PSPLIM_NS(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, psplim_ns" : "=r" (result) ); + return result; +#endif +} +#endif + + +/** + \brief Set Process Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored in non-secure + mode. + + \details Assigns the given value to the Process Stack Pointer Limit (PSPLIM). + \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set + */ +__STATIC_FORCEINLINE void __set_PSPLIM(uint32_t ProcStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + (void)ProcStackPtrLimit; +#else + __ASM volatile ("MSR psplim, %0" : : "r" (ProcStackPtrLimit)); +#endif +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Process Stack Pointer (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored in non-secure + mode. + + \details Assigns the given value to the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state. + \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set + */ +__STATIC_FORCEINLINE void __TZ_set_PSPLIM_NS(uint32_t ProcStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + (void)ProcStackPtrLimit; +#else + __ASM volatile ("MSR psplim_ns, %0\n" : : "r" (ProcStackPtrLimit)); +#endif +} +#endif + + +/** + \brief Get Main Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always. + + \details Returns the current value of the Main Stack Pointer Limit (MSPLIM). + \return MSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __get_MSPLIM(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, msplim" : "=r" (result) ); + return result; +#endif +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Main Stack Pointer Limit (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always. + + \details Returns the current value of the non-secure Main Stack Pointer Limit(MSPLIM) when in secure state. + \return MSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_MSPLIM_NS(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, msplim_ns" : "=r" (result) ); + return result; +#endif +} +#endif + + +/** + \brief Set Main Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored. + + \details Assigns the given value to the Main Stack Pointer Limit (MSPLIM). + \param [in] MainStackPtrLimit Main Stack Pointer Limit value to set + */ +__STATIC_FORCEINLINE void __set_MSPLIM(uint32_t MainStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + (void)MainStackPtrLimit; +#else + __ASM volatile ("MSR msplim, %0" : : "r" (MainStackPtrLimit)); +#endif +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Main Stack Pointer Limit (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored. + + \details Assigns the given value to the non-secure Main Stack Pointer Limit (MSPLIM) when in secure state. + \param [in] MainStackPtrLimit Main Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_MSPLIM_NS(uint32_t MainStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + (void)MainStackPtrLimit; +#else + __ASM volatile ("MSR msplim_ns, %0" : : "r" (MainStackPtrLimit)); +#endif +} +#endif + +#endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */ + +/** + \brief Get FPSCR + \details Returns the current value of the Floating Point Status/Control register. + \return Floating Point Status/Control register value + */ +#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) +#define __get_FPSCR (uint32_t)__builtin_arm_get_fpscr +#else +#define __get_FPSCR() ((uint32_t)0U) +#endif + +/** + \brief Set FPSCR + \details Assigns the given value to the Floating Point Status/Control register. + \param [in] fpscr Floating Point Status/Control value to set + */ +#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) +#define __set_FPSCR __builtin_arm_set_fpscr +#else +#define __set_FPSCR(x) ((void)(x)) +#endif + + +/*@} end of CMSIS_Core_RegAccFunctions */ + + +/* ########################## Core Instruction Access ######################### */ +/** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface + Access to dedicated instructions + @{ +*/ + +/* Define macros for porting to both thumb1 and thumb2. + * For thumb1, use low register (r0-r7), specified by constraint "l" + * Otherwise, use general registers, specified by constraint "r" */ +#if defined (__thumb__) && !defined (__thumb2__) +#define __CMSIS_GCC_OUT_REG(r) "=l" (r) +#define __CMSIS_GCC_USE_REG(r) "l" (r) +#else +#define __CMSIS_GCC_OUT_REG(r) "=r" (r) +#define __CMSIS_GCC_USE_REG(r) "r" (r) +#endif + +/** + \brief No Operation + \details No Operation does nothing. This instruction can be used for code alignment purposes. + */ +#define __NOP __builtin_arm_nop + +/** + \brief Wait For Interrupt + \details Wait For Interrupt is a hint instruction that suspends execution until one of a number of events occurs. + */ +#define __WFI __builtin_arm_wfi + + +/** + \brief Wait For Event + \details Wait For Event is a hint instruction that permits the processor to enter + a low-power state until one of a number of events occurs. + */ +#define __WFE __builtin_arm_wfe + + +/** + \brief Send Event + \details Send Event is a hint instruction. It causes an event to be signaled to the CPU. + */ +#define __SEV __builtin_arm_sev + + +/** + \brief Instruction Synchronization Barrier + \details Instruction Synchronization Barrier flushes the pipeline in the processor, + so that all instructions following the ISB are fetched from cache or memory, + after the instruction has been completed. + */ +#define __ISB() __builtin_arm_isb(0xF) + +/** + \brief Data Synchronization Barrier + \details Acts as a special kind of Data Memory Barrier. + It completes when all explicit memory accesses before this instruction complete. + */ +#define __DSB() __builtin_arm_dsb(0xF) + + +/** + \brief Data Memory Barrier + \details Ensures the apparent order of the explicit memory operations before + and after the instruction, without ensuring their completion. + */ +#define __DMB() __builtin_arm_dmb(0xF) + + +/** + \brief Reverse byte order (32 bit) + \details Reverses the byte order in unsigned integer value. For example, 0x12345678 becomes 0x78563412. + \param [in] value Value to reverse + \return Reversed value + */ +#define __REV(value) __builtin_bswap32(value) + + +/** + \brief Reverse byte order (16 bit) + \details Reverses the byte order within each halfword of a word. For example, 0x12345678 becomes 0x34127856. + \param [in] value Value to reverse + \return Reversed value + */ +#define __REV16(value) __ROR(__REV(value), 16) + + +/** + \brief Reverse byte order (16 bit) + \details Reverses the byte order in a 16-bit value and returns the signed 16-bit result. For example, 0x0080 becomes 0x8000. + \param [in] value Value to reverse + \return Reversed value + */ +#define __REVSH(value) (int16_t)__builtin_bswap16(value) + + +/** + \brief Rotate Right in unsigned value (32 bit) + \details Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits. + \param [in] op1 Value to rotate + \param [in] op2 Number of Bits to rotate + \return Rotated value + */ +__STATIC_FORCEINLINE uint32_t __ROR(uint32_t op1, uint32_t op2) +{ + op2 %= 32U; + if (op2 == 0U) + { + return op1; + } + return (op1 >> op2) | (op1 << (32U - op2)); +} + + +/** + \brief Breakpoint + \details Causes the processor to enter Debug state. + Debug tools can use this to investigate system state when the instruction at a particular address is reached. + \param [in] value is ignored by the processor. + If required, a debugger can use it to store additional information about the breakpoint. + */ +#define __BKPT(value) __ASM volatile ("bkpt "#value) + + +/** + \brief Reverse bit order of value + \details Reverses the bit order of the given value. + \param [in] value Value to reverse + \return Reversed value + */ +#define __RBIT __builtin_arm_rbit + +/** + \brief Count leading zeros + \details Counts the number of leading zeros of a data value. + \param [in] value Value to count the leading zeros + \return number of leading zeros in value + */ +__STATIC_FORCEINLINE uint8_t __CLZ(uint32_t value) +{ + /* Even though __builtin_clz produces a CLZ instruction on ARM, formally + __builtin_clz(0) is undefined behaviour, so handle this case specially. + This guarantees ARM-compatible results if happening to compile on a non-ARM + target, and ensures the compiler doesn't decide to activate any + optimisations using the logic "value was passed to __builtin_clz, so it + is non-zero". + ARM Compiler 6.10 and possibly earlier will optimise this test away, leaving a + single CLZ instruction. + */ + if (value == 0U) + { + return 32U; + } + return __builtin_clz(value); +} + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) +/** + \brief LDR Exclusive (8 bit) + \details Executes a exclusive LDR instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +#define __LDREXB (uint8_t)__builtin_arm_ldrex + + +/** + \brief LDR Exclusive (16 bit) + \details Executes a exclusive LDR instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +#define __LDREXH (uint16_t)__builtin_arm_ldrex + + +/** + \brief LDR Exclusive (32 bit) + \details Executes a exclusive LDR instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +#define __LDREXW (uint32_t)__builtin_arm_ldrex + + +/** + \brief STR Exclusive (8 bit) + \details Executes a exclusive STR instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#define __STREXB (uint32_t)__builtin_arm_strex + + +/** + \brief STR Exclusive (16 bit) + \details Executes a exclusive STR instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#define __STREXH (uint32_t)__builtin_arm_strex + + +/** + \brief STR Exclusive (32 bit) + \details Executes a exclusive STR instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#define __STREXW (uint32_t)__builtin_arm_strex + + +/** + \brief Remove the exclusive lock + \details Removes the exclusive lock which is created by LDREX. + */ +#define __CLREX __builtin_arm_clrex + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */ + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) + +/** + \brief Signed Saturate + \details Saturates a signed value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (1..32) + \return Saturated value + */ +#define __SSAT __builtin_arm_ssat + + +/** + \brief Unsigned Saturate + \details Saturates an unsigned value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (0..31) + \return Saturated value + */ +#define __USAT __builtin_arm_usat + + +/** + \brief Rotate Right with Extend (32 bit) + \details Moves each bit of a bitstring right by one bit. + The carry input is shifted in at the left end of the bitstring. + \param [in] value Value to rotate + \return Rotated value + */ +__STATIC_FORCEINLINE uint32_t __RRX(uint32_t value) +{ + uint32_t result; + + __ASM volatile ("rrx %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); + return(result); +} + + +/** + \brief LDRT Unprivileged (8 bit) + \details Executes a Unprivileged LDRT instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +__STATIC_FORCEINLINE uint8_t __LDRBT(volatile uint8_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldrbt %0, %1" : "=r" (result) : "Q" (*ptr) ); + return ((uint8_t) result); /* Add explicit type cast here */ +} + + +/** + \brief LDRT Unprivileged (16 bit) + \details Executes a Unprivileged LDRT instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +__STATIC_FORCEINLINE uint16_t __LDRHT(volatile uint16_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldrht %0, %1" : "=r" (result) : "Q" (*ptr) ); + return ((uint16_t) result); /* Add explicit type cast here */ +} + + +/** + \brief LDRT Unprivileged (32 bit) + \details Executes a Unprivileged LDRT instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +__STATIC_FORCEINLINE uint32_t __LDRT(volatile uint32_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldrt %0, %1" : "=r" (result) : "Q" (*ptr) ); + return(result); +} + + +/** + \brief STRT Unprivileged (8 bit) + \details Executes a Unprivileged STRT instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STRBT(uint8_t value, volatile uint8_t *ptr) +{ + __ASM volatile ("strbt %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief STRT Unprivileged (16 bit) + \details Executes a Unprivileged STRT instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STRHT(uint16_t value, volatile uint16_t *ptr) +{ + __ASM volatile ("strht %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief STRT Unprivileged (32 bit) + \details Executes a Unprivileged STRT instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STRT(uint32_t value, volatile uint32_t *ptr) +{ + __ASM volatile ("strt %1, %0" : "=Q" (*ptr) : "r" (value) ); +} + +#else /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */ + +/** + \brief Signed Saturate + \details Saturates a signed value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (1..32) + \return Saturated value + */ +__STATIC_FORCEINLINE int32_t __SSAT(int32_t val, uint32_t sat) +{ + if ((sat >= 1U) && (sat <= 32U)) + { + const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U); + const int32_t min = -1 - max ; + if (val > max) + { + return max; + } + else if (val < min) + { + return min; + } + } + return val; +} + +/** + \brief Unsigned Saturate + \details Saturates an unsigned value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (0..31) + \return Saturated value + */ +__STATIC_FORCEINLINE uint32_t __USAT(int32_t val, uint32_t sat) +{ + if (sat <= 31U) + { + const uint32_t max = ((1U << sat) - 1U); + if (val > (int32_t)max) + { + return max; + } + else if (val < 0) + { + return 0U; + } + } + return (uint32_t)val; +} + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */ + + +#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) +/** + \brief Load-Acquire (8 bit) + \details Executes a LDAB instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +__STATIC_FORCEINLINE uint8_t __LDAB(volatile uint8_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldab %0, %1" : "=r" (result) : "Q" (*ptr) ); + return ((uint8_t) result); +} + + +/** + \brief Load-Acquire (16 bit) + \details Executes a LDAH instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +__STATIC_FORCEINLINE uint16_t __LDAH(volatile uint16_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldah %0, %1" : "=r" (result) : "Q" (*ptr) ); + return ((uint16_t) result); +} + + +/** + \brief Load-Acquire (32 bit) + \details Executes a LDA instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +__STATIC_FORCEINLINE uint32_t __LDA(volatile uint32_t *ptr) +{ + uint32_t result; + + __ASM volatile ("lda %0, %1" : "=r" (result) : "Q" (*ptr) ); + return(result); +} + + +/** + \brief Store-Release (8 bit) + \details Executes a STLB instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STLB(uint8_t value, volatile uint8_t *ptr) +{ + __ASM volatile ("stlb %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief Store-Release (16 bit) + \details Executes a STLH instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STLH(uint16_t value, volatile uint16_t *ptr) +{ + __ASM volatile ("stlh %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief Store-Release (32 bit) + \details Executes a STL instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STL(uint32_t value, volatile uint32_t *ptr) +{ + __ASM volatile ("stl %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief Load-Acquire Exclusive (8 bit) + \details Executes a LDAB exclusive instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +#define __LDAEXB (uint8_t)__builtin_arm_ldaex + + +/** + \brief Load-Acquire Exclusive (16 bit) + \details Executes a LDAH exclusive instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +#define __LDAEXH (uint16_t)__builtin_arm_ldaex + + +/** + \brief Load-Acquire Exclusive (32 bit) + \details Executes a LDA exclusive instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +#define __LDAEX (uint32_t)__builtin_arm_ldaex + + +/** + \brief Store-Release Exclusive (8 bit) + \details Executes a STLB exclusive instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#define __STLEXB (uint32_t)__builtin_arm_stlex + + +/** + \brief Store-Release Exclusive (16 bit) + \details Executes a STLH exclusive instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#define __STLEXH (uint32_t)__builtin_arm_stlex + + +/** + \brief Store-Release Exclusive (32 bit) + \details Executes a STL exclusive instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#define __STLEX (uint32_t)__builtin_arm_stlex + +#endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */ + +/*@}*/ /* end of group CMSIS_Core_InstructionInterface */ + + +/* ################### Compiler specific Intrinsics ########################### */ +/** \defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics + Access to dedicated SIMD instructions + @{ +*/ + +#if (defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1)) + +__STATIC_FORCEINLINE uint32_t __SADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + + +__STATIC_FORCEINLINE uint32_t __SSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("ssub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + + +__STATIC_FORCEINLINE uint32_t __SADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("ssub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("ssax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USAD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usad8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USADA8(uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("usada8 %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +#define __SSAT16(ARG1,ARG2) \ +({ \ + int32_t __RES, __ARG1 = (ARG1); \ + __ASM ("ssat16 %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ + __RES; \ + }) + +#define __USAT16(ARG1,ARG2) \ +({ \ + uint32_t __RES, __ARG1 = (ARG1); \ + __ASM ("usat16 %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ + __RES; \ + }) + +__STATIC_FORCEINLINE uint32_t __UXTB16(uint32_t op1) +{ + uint32_t result; + + __ASM volatile ("uxtb16 %0, %1" : "=r" (result) : "r" (op1)); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UXTAB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uxtab16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SXTB16(uint32_t op1) +{ + uint32_t result; + + __ASM volatile ("sxtb16 %0, %1" : "=r" (result) : "r" (op1)); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SXTAB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sxtab16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMUAD (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smuad %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMUADX (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smuadx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMLAD (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smlad %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMLADX (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smladx %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +__STATIC_FORCEINLINE uint64_t __SMLALD (uint32_t op1, uint32_t op2, uint64_t acc) +{ + union llreg_u{ + uint32_t w32[2]; + uint64_t w64; + } llr; + llr.w64 = acc; + +#ifndef __ARMEB__ /* Little endian */ + __ASM volatile ("smlald %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) ); +#else /* Big endian */ + __ASM volatile ("smlald %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) ); +#endif + + return(llr.w64); +} + +__STATIC_FORCEINLINE uint64_t __SMLALDX (uint32_t op1, uint32_t op2, uint64_t acc) +{ + union llreg_u{ + uint32_t w32[2]; + uint64_t w64; + } llr; + llr.w64 = acc; + +#ifndef __ARMEB__ /* Little endian */ + __ASM volatile ("smlaldx %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) ); +#else /* Big endian */ + __ASM volatile ("smlaldx %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) ); +#endif + + return(llr.w64); +} + +__STATIC_FORCEINLINE uint32_t __SMUSD (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smusd %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMUSDX (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smusdx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMLSD (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smlsd %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMLSDX (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smlsdx %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +__STATIC_FORCEINLINE uint64_t __SMLSLD (uint32_t op1, uint32_t op2, uint64_t acc) +{ + union llreg_u{ + uint32_t w32[2]; + uint64_t w64; + } llr; + llr.w64 = acc; + +#ifndef __ARMEB__ /* Little endian */ + __ASM volatile ("smlsld %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) ); +#else /* Big endian */ + __ASM volatile ("smlsld %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) ); +#endif + + return(llr.w64); +} + +__STATIC_FORCEINLINE uint64_t __SMLSLDX (uint32_t op1, uint32_t op2, uint64_t acc) +{ + union llreg_u{ + uint32_t w32[2]; + uint64_t w64; + } llr; + llr.w64 = acc; + +#ifndef __ARMEB__ /* Little endian */ + __ASM volatile ("smlsldx %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) ); +#else /* Big endian */ + __ASM volatile ("smlsldx %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) ); +#endif + + return(llr.w64); +} + +__STATIC_FORCEINLINE uint32_t __SEL (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sel %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE int32_t __QADD( int32_t op1, int32_t op2) +{ + int32_t result; + + __ASM volatile ("qadd %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE int32_t __QSUB( int32_t op1, int32_t op2) +{ + int32_t result; + + __ASM volatile ("qsub %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +#define __PKHBT(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0x0000FFFFUL) | \ + ((((uint32_t)(ARG2)) << (ARG3)) & 0xFFFF0000UL) ) + +#define __PKHTB(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0xFFFF0000UL) | \ + ((((uint32_t)(ARG2)) >> (ARG3)) & 0x0000FFFFUL) ) + +__STATIC_FORCEINLINE int32_t __SMMLA (int32_t op1, int32_t op2, int32_t op3) +{ + int32_t result; + + __ASM volatile ("smmla %0, %1, %2, %3" : "=r" (result): "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +#endif /* (__ARM_FEATURE_DSP == 1) */ +/*@} end of group CMSIS_SIMD_intrinsics */ + + +#endif /* __CMSIS_ARMCLANG_H */ diff --git a/firmware/Drivers/CMSIS/Include/cmsis_compiler.h b/firmware/Drivers/CMSIS/Include/cmsis_compiler.h new file mode 100644 index 0000000..adbf296 --- /dev/null +++ b/firmware/Drivers/CMSIS/Include/cmsis_compiler.h @@ -0,0 +1,283 @@ +/**************************************************************************//** + * @file cmsis_compiler.h + * @brief CMSIS compiler generic header file + * @version V5.1.0 + * @date 09. October 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __CMSIS_COMPILER_H +#define __CMSIS_COMPILER_H + +#include + +/* + * Arm Compiler 4/5 + */ +#if defined ( __CC_ARM ) + #include "cmsis_armcc.h" + + +/* + * Arm Compiler 6.6 LTM (armclang) + */ +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) && (__ARMCC_VERSION < 6100100) + #include "cmsis_armclang_ltm.h" + + /* + * Arm Compiler above 6.10.1 (armclang) + */ +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6100100) + #include "cmsis_armclang.h" + + +/* + * GNU Compiler + */ +#elif defined ( __GNUC__ ) + #include "cmsis_gcc.h" + + +/* + * IAR Compiler + */ +#elif defined ( __ICCARM__ ) + #include + + +/* + * TI Arm Compiler + */ +#elif defined ( __TI_ARM__ ) + #include + + #ifndef __ASM + #define __ASM __asm + #endif + #ifndef __INLINE + #define __INLINE inline + #endif + #ifndef __STATIC_INLINE + #define __STATIC_INLINE static inline + #endif + #ifndef __STATIC_FORCEINLINE + #define __STATIC_FORCEINLINE __STATIC_INLINE + #endif + #ifndef __NO_RETURN + #define __NO_RETURN __attribute__((noreturn)) + #endif + #ifndef __USED + #define __USED __attribute__((used)) + #endif + #ifndef __WEAK + #define __WEAK __attribute__((weak)) + #endif + #ifndef __PACKED + #define __PACKED __attribute__((packed)) + #endif + #ifndef __PACKED_STRUCT + #define __PACKED_STRUCT struct __attribute__((packed)) + #endif + #ifndef __PACKED_UNION + #define __PACKED_UNION union __attribute__((packed)) + #endif + #ifndef __UNALIGNED_UINT32 /* deprecated */ + struct __attribute__((packed)) T_UINT32 { uint32_t v; }; + #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) + #endif + #ifndef __UNALIGNED_UINT16_WRITE + __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; + #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void*)(addr))->v) = (val)) + #endif + #ifndef __UNALIGNED_UINT16_READ + __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; + #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) + #endif + #ifndef __UNALIGNED_UINT32_WRITE + __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; + #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) + #endif + #ifndef __UNALIGNED_UINT32_READ + __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; + #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) + #endif + #ifndef __ALIGNED + #define __ALIGNED(x) __attribute__((aligned(x))) + #endif + #ifndef __RESTRICT + #define __RESTRICT __restrict + #endif + #ifndef __COMPILER_BARRIER + #warning No compiler specific solution for __COMPILER_BARRIER. __COMPILER_BARRIER is ignored. + #define __COMPILER_BARRIER() (void)0 + #endif + + +/* + * TASKING Compiler + */ +#elif defined ( __TASKING__ ) + /* + * The CMSIS functions have been implemented as intrinsics in the compiler. + * Please use "carm -?i" to get an up to date list of all intrinsics, + * Including the CMSIS ones. + */ + + #ifndef __ASM + #define __ASM __asm + #endif + #ifndef __INLINE + #define __INLINE inline + #endif + #ifndef __STATIC_INLINE + #define __STATIC_INLINE static inline + #endif + #ifndef __STATIC_FORCEINLINE + #define __STATIC_FORCEINLINE __STATIC_INLINE + #endif + #ifndef __NO_RETURN + #define __NO_RETURN __attribute__((noreturn)) + #endif + #ifndef __USED + #define __USED __attribute__((used)) + #endif + #ifndef __WEAK + #define __WEAK __attribute__((weak)) + #endif + #ifndef __PACKED + #define __PACKED __packed__ + #endif + #ifndef __PACKED_STRUCT + #define __PACKED_STRUCT struct __packed__ + #endif + #ifndef __PACKED_UNION + #define __PACKED_UNION union __packed__ + #endif + #ifndef __UNALIGNED_UINT32 /* deprecated */ + struct __packed__ T_UINT32 { uint32_t v; }; + #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) + #endif + #ifndef __UNALIGNED_UINT16_WRITE + __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; + #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val)) + #endif + #ifndef __UNALIGNED_UINT16_READ + __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; + #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) + #endif + #ifndef __UNALIGNED_UINT32_WRITE + __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; + #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) + #endif + #ifndef __UNALIGNED_UINT32_READ + __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; + #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) + #endif + #ifndef __ALIGNED + #define __ALIGNED(x) __align(x) + #endif + #ifndef __RESTRICT + #warning No compiler specific solution for __RESTRICT. __RESTRICT is ignored. + #define __RESTRICT + #endif + #ifndef __COMPILER_BARRIER + #warning No compiler specific solution for __COMPILER_BARRIER. __COMPILER_BARRIER is ignored. + #define __COMPILER_BARRIER() (void)0 + #endif + + +/* + * COSMIC Compiler + */ +#elif defined ( __CSMC__ ) + #include + + #ifndef __ASM + #define __ASM _asm + #endif + #ifndef __INLINE + #define __INLINE inline + #endif + #ifndef __STATIC_INLINE + #define __STATIC_INLINE static inline + #endif + #ifndef __STATIC_FORCEINLINE + #define __STATIC_FORCEINLINE __STATIC_INLINE + #endif + #ifndef __NO_RETURN + // NO RETURN is automatically detected hence no warning here + #define __NO_RETURN + #endif + #ifndef __USED + #warning No compiler specific solution for __USED. __USED is ignored. + #define __USED + #endif + #ifndef __WEAK + #define __WEAK __weak + #endif + #ifndef __PACKED + #define __PACKED @packed + #endif + #ifndef __PACKED_STRUCT + #define __PACKED_STRUCT @packed struct + #endif + #ifndef __PACKED_UNION + #define __PACKED_UNION @packed union + #endif + #ifndef __UNALIGNED_UINT32 /* deprecated */ + @packed struct T_UINT32 { uint32_t v; }; + #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) + #endif + #ifndef __UNALIGNED_UINT16_WRITE + __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; + #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val)) + #endif + #ifndef __UNALIGNED_UINT16_READ + __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; + #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) + #endif + #ifndef __UNALIGNED_UINT32_WRITE + __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; + #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) + #endif + #ifndef __UNALIGNED_UINT32_READ + __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; + #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) + #endif + #ifndef __ALIGNED + #warning No compiler specific solution for __ALIGNED. __ALIGNED is ignored. + #define __ALIGNED(x) + #endif + #ifndef __RESTRICT + #warning No compiler specific solution for __RESTRICT. __RESTRICT is ignored. + #define __RESTRICT + #endif + #ifndef __COMPILER_BARRIER + #warning No compiler specific solution for __COMPILER_BARRIER. __COMPILER_BARRIER is ignored. + #define __COMPILER_BARRIER() (void)0 + #endif + + +#else + #error Unknown compiler. +#endif + + +#endif /* __CMSIS_COMPILER_H */ + diff --git a/firmware/Drivers/CMSIS/Include/cmsis_gcc.h b/firmware/Drivers/CMSIS/Include/cmsis_gcc.h new file mode 100644 index 0000000..3ddcc58 --- /dev/null +++ b/firmware/Drivers/CMSIS/Include/cmsis_gcc.h @@ -0,0 +1,2168 @@ +/**************************************************************************//** + * @file cmsis_gcc.h + * @brief CMSIS compiler GCC header file + * @version V5.2.0 + * @date 08. May 2019 + ******************************************************************************/ +/* + * Copyright (c) 2009-2019 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __CMSIS_GCC_H +#define __CMSIS_GCC_H + +/* ignore some GCC warnings */ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wsign-conversion" +#pragma GCC diagnostic ignored "-Wconversion" +#pragma GCC diagnostic ignored "-Wunused-parameter" + +/* Fallback for __has_builtin */ +#ifndef __has_builtin + #define __has_builtin(x) (0) +#endif + +/* CMSIS compiler specific defines */ +#ifndef __ASM + #define __ASM __asm +#endif +#ifndef __INLINE + #define __INLINE inline +#endif +#ifndef __STATIC_INLINE + #define __STATIC_INLINE static inline +#endif +#ifndef __STATIC_FORCEINLINE + #define __STATIC_FORCEINLINE __attribute__((always_inline)) static inline +#endif +#ifndef __NO_RETURN + #define __NO_RETURN __attribute__((__noreturn__)) +#endif +#ifndef __USED + #define __USED __attribute__((used)) +#endif +#ifndef __WEAK + #define __WEAK __attribute__((weak)) +#endif +#ifndef __PACKED + #define __PACKED __attribute__((packed, aligned(1))) +#endif +#ifndef __PACKED_STRUCT + #define __PACKED_STRUCT struct __attribute__((packed, aligned(1))) +#endif +#ifndef __PACKED_UNION + #define __PACKED_UNION union __attribute__((packed, aligned(1))) +#endif +#ifndef __UNALIGNED_UINT32 /* deprecated */ + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wpacked" + #pragma GCC diagnostic ignored "-Wattributes" + struct __attribute__((packed)) T_UINT32 { uint32_t v; }; + #pragma GCC diagnostic pop + #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) +#endif +#ifndef __UNALIGNED_UINT16_WRITE + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wpacked" + #pragma GCC diagnostic ignored "-Wattributes" + __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; + #pragma GCC diagnostic pop + #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val)) +#endif +#ifndef __UNALIGNED_UINT16_READ + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wpacked" + #pragma GCC diagnostic ignored "-Wattributes" + __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; + #pragma GCC diagnostic pop + #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) +#endif +#ifndef __UNALIGNED_UINT32_WRITE + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wpacked" + #pragma GCC diagnostic ignored "-Wattributes" + __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; + #pragma GCC diagnostic pop + #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) +#endif +#ifndef __UNALIGNED_UINT32_READ + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wpacked" + #pragma GCC diagnostic ignored "-Wattributes" + __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; + #pragma GCC diagnostic pop + #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) +#endif +#ifndef __ALIGNED + #define __ALIGNED(x) __attribute__((aligned(x))) +#endif +#ifndef __RESTRICT + #define __RESTRICT __restrict +#endif +#ifndef __COMPILER_BARRIER + #define __COMPILER_BARRIER() __ASM volatile("":::"memory") +#endif + +/* ######################### Startup and Lowlevel Init ######################## */ + +#ifndef __PROGRAM_START + +/** + \brief Initializes data and bss sections + \details This default implementations initialized all data and additional bss + sections relying on .copy.table and .zero.table specified properly + in the used linker script. + + */ +__STATIC_FORCEINLINE __NO_RETURN void __cmsis_start(void) +{ + extern void _start(void) __NO_RETURN; + + typedef struct { + uint32_t const* src; + uint32_t* dest; + uint32_t wlen; + } __copy_table_t; + + typedef struct { + uint32_t* dest; + uint32_t wlen; + } __zero_table_t; + + extern const __copy_table_t __copy_table_start__; + extern const __copy_table_t __copy_table_end__; + extern const __zero_table_t __zero_table_start__; + extern const __zero_table_t __zero_table_end__; + + for (__copy_table_t const* pTable = &__copy_table_start__; pTable < &__copy_table_end__; ++pTable) { + for(uint32_t i=0u; iwlen; ++i) { + pTable->dest[i] = pTable->src[i]; + } + } + + for (__zero_table_t const* pTable = &__zero_table_start__; pTable < &__zero_table_end__; ++pTable) { + for(uint32_t i=0u; iwlen; ++i) { + pTable->dest[i] = 0u; + } + } + + _start(); +} + +#define __PROGRAM_START __cmsis_start +#endif + +#ifndef __INITIAL_SP +#define __INITIAL_SP __StackTop +#endif + +#ifndef __STACK_LIMIT +#define __STACK_LIMIT __StackLimit +#endif + +#ifndef __VECTOR_TABLE +#define __VECTOR_TABLE __Vectors +#endif + +#ifndef __VECTOR_TABLE_ATTRIBUTE +#define __VECTOR_TABLE_ATTRIBUTE __attribute((used, section(".vectors"))) +#endif + +/* ########################### Core Function Access ########################### */ +/** \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions + @{ + */ + +/** + \brief Enable IRQ Interrupts + \details Enables IRQ interrupts by clearing the I-bit in the CPSR. + Can only be executed in Privileged modes. + */ +__STATIC_FORCEINLINE void __enable_irq(void) +{ + __ASM volatile ("cpsie i" : : : "memory"); +} + + +/** + \brief Disable IRQ Interrupts + \details Disables IRQ interrupts by setting the I-bit in the CPSR. + Can only be executed in Privileged modes. + */ +__STATIC_FORCEINLINE void __disable_irq(void) +{ + __ASM volatile ("cpsid i" : : : "memory"); +} + + +/** + \brief Get Control Register + \details Returns the content of the Control Register. + \return Control Register value + */ +__STATIC_FORCEINLINE uint32_t __get_CONTROL(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, control" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Control Register (non-secure) + \details Returns the content of the non-secure Control Register when in secure mode. + \return non-secure Control Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_CONTROL_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, control_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Control Register + \details Writes the given value to the Control Register. + \param [in] control Control Register value to set + */ +__STATIC_FORCEINLINE void __set_CONTROL(uint32_t control) +{ + __ASM volatile ("MSR control, %0" : : "r" (control) : "memory"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Control Register (non-secure) + \details Writes the given value to the non-secure Control Register when in secure state. + \param [in] control Control Register value to set + */ +__STATIC_FORCEINLINE void __TZ_set_CONTROL_NS(uint32_t control) +{ + __ASM volatile ("MSR control_ns, %0" : : "r" (control) : "memory"); +} +#endif + + +/** + \brief Get IPSR Register + \details Returns the content of the IPSR Register. + \return IPSR Register value + */ +__STATIC_FORCEINLINE uint32_t __get_IPSR(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, ipsr" : "=r" (result) ); + return(result); +} + + +/** + \brief Get APSR Register + \details Returns the content of the APSR Register. + \return APSR Register value + */ +__STATIC_FORCEINLINE uint32_t __get_APSR(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, apsr" : "=r" (result) ); + return(result); +} + + +/** + \brief Get xPSR Register + \details Returns the content of the xPSR Register. + \return xPSR Register value + */ +__STATIC_FORCEINLINE uint32_t __get_xPSR(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, xpsr" : "=r" (result) ); + return(result); +} + + +/** + \brief Get Process Stack Pointer + \details Returns the current value of the Process Stack Pointer (PSP). + \return PSP Register value + */ +__STATIC_FORCEINLINE uint32_t __get_PSP(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, psp" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Process Stack Pointer (non-secure) + \details Returns the current value of the non-secure Process Stack Pointer (PSP) when in secure state. + \return PSP Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_PSP_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, psp_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Process Stack Pointer + \details Assigns the given value to the Process Stack Pointer (PSP). + \param [in] topOfProcStack Process Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __set_PSP(uint32_t topOfProcStack) +{ + __ASM volatile ("MSR psp, %0" : : "r" (topOfProcStack) : ); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Process Stack Pointer (non-secure) + \details Assigns the given value to the non-secure Process Stack Pointer (PSP) when in secure state. + \param [in] topOfProcStack Process Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_PSP_NS(uint32_t topOfProcStack) +{ + __ASM volatile ("MSR psp_ns, %0" : : "r" (topOfProcStack) : ); +} +#endif + + +/** + \brief Get Main Stack Pointer + \details Returns the current value of the Main Stack Pointer (MSP). + \return MSP Register value + */ +__STATIC_FORCEINLINE uint32_t __get_MSP(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, msp" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Main Stack Pointer (non-secure) + \details Returns the current value of the non-secure Main Stack Pointer (MSP) when in secure state. + \return MSP Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_MSP_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, msp_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Main Stack Pointer + \details Assigns the given value to the Main Stack Pointer (MSP). + \param [in] topOfMainStack Main Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __set_MSP(uint32_t topOfMainStack) +{ + __ASM volatile ("MSR msp, %0" : : "r" (topOfMainStack) : ); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Main Stack Pointer (non-secure) + \details Assigns the given value to the non-secure Main Stack Pointer (MSP) when in secure state. + \param [in] topOfMainStack Main Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_MSP_NS(uint32_t topOfMainStack) +{ + __ASM volatile ("MSR msp_ns, %0" : : "r" (topOfMainStack) : ); +} +#endif + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Stack Pointer (non-secure) + \details Returns the current value of the non-secure Stack Pointer (SP) when in secure state. + \return SP Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_SP_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, sp_ns" : "=r" (result) ); + return(result); +} + + +/** + \brief Set Stack Pointer (non-secure) + \details Assigns the given value to the non-secure Stack Pointer (SP) when in secure state. + \param [in] topOfStack Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_SP_NS(uint32_t topOfStack) +{ + __ASM volatile ("MSR sp_ns, %0" : : "r" (topOfStack) : ); +} +#endif + + +/** + \brief Get Priority Mask + \details Returns the current state of the priority mask bit from the Priority Mask Register. + \return Priority Mask value + */ +__STATIC_FORCEINLINE uint32_t __get_PRIMASK(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Priority Mask (non-secure) + \details Returns the current state of the non-secure priority mask bit from the Priority Mask Register when in secure state. + \return Priority Mask value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_PRIMASK_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, primask_ns" : "=r" (result) :: "memory"); + return(result); +} +#endif + + +/** + \brief Set Priority Mask + \details Assigns the given value to the Priority Mask Register. + \param [in] priMask Priority Mask + */ +__STATIC_FORCEINLINE void __set_PRIMASK(uint32_t priMask) +{ + __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Priority Mask (non-secure) + \details Assigns the given value to the non-secure Priority Mask Register when in secure state. + \param [in] priMask Priority Mask + */ +__STATIC_FORCEINLINE void __TZ_set_PRIMASK_NS(uint32_t priMask) +{ + __ASM volatile ("MSR primask_ns, %0" : : "r" (priMask) : "memory"); +} +#endif + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) +/** + \brief Enable FIQ + \details Enables FIQ interrupts by clearing the F-bit in the CPSR. + Can only be executed in Privileged modes. + */ +__STATIC_FORCEINLINE void __enable_fault_irq(void) +{ + __ASM volatile ("cpsie f" : : : "memory"); +} + + +/** + \brief Disable FIQ + \details Disables FIQ interrupts by setting the F-bit in the CPSR. + Can only be executed in Privileged modes. + */ +__STATIC_FORCEINLINE void __disable_fault_irq(void) +{ + __ASM volatile ("cpsid f" : : : "memory"); +} + + +/** + \brief Get Base Priority + \details Returns the current value of the Base Priority register. + \return Base Priority register value + */ +__STATIC_FORCEINLINE uint32_t __get_BASEPRI(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, basepri" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Base Priority (non-secure) + \details Returns the current value of the non-secure Base Priority register when in secure state. + \return Base Priority register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_BASEPRI_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, basepri_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Base Priority + \details Assigns the given value to the Base Priority register. + \param [in] basePri Base Priority value to set + */ +__STATIC_FORCEINLINE void __set_BASEPRI(uint32_t basePri) +{ + __ASM volatile ("MSR basepri, %0" : : "r" (basePri) : "memory"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Base Priority (non-secure) + \details Assigns the given value to the non-secure Base Priority register when in secure state. + \param [in] basePri Base Priority value to set + */ +__STATIC_FORCEINLINE void __TZ_set_BASEPRI_NS(uint32_t basePri) +{ + __ASM volatile ("MSR basepri_ns, %0" : : "r" (basePri) : "memory"); +} +#endif + + +/** + \brief Set Base Priority with condition + \details Assigns the given value to the Base Priority register only if BASEPRI masking is disabled, + or the new value increases the BASEPRI priority level. + \param [in] basePri Base Priority value to set + */ +__STATIC_FORCEINLINE void __set_BASEPRI_MAX(uint32_t basePri) +{ + __ASM volatile ("MSR basepri_max, %0" : : "r" (basePri) : "memory"); +} + + +/** + \brief Get Fault Mask + \details Returns the current value of the Fault Mask register. + \return Fault Mask register value + */ +__STATIC_FORCEINLINE uint32_t __get_FAULTMASK(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, faultmask" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Fault Mask (non-secure) + \details Returns the current value of the non-secure Fault Mask register when in secure state. + \return Fault Mask register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_FAULTMASK_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, faultmask_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Fault Mask + \details Assigns the given value to the Fault Mask register. + \param [in] faultMask Fault Mask value to set + */ +__STATIC_FORCEINLINE void __set_FAULTMASK(uint32_t faultMask) +{ + __ASM volatile ("MSR faultmask, %0" : : "r" (faultMask) : "memory"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Fault Mask (non-secure) + \details Assigns the given value to the non-secure Fault Mask register when in secure state. + \param [in] faultMask Fault Mask value to set + */ +__STATIC_FORCEINLINE void __TZ_set_FAULTMASK_NS(uint32_t faultMask) +{ + __ASM volatile ("MSR faultmask_ns, %0" : : "r" (faultMask) : "memory"); +} +#endif + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */ + + +#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) + +/** + \brief Get Process Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always in non-secure + mode. + + \details Returns the current value of the Process Stack Pointer Limit (PSPLIM). + \return PSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __get_PSPLIM(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, psplim" : "=r" (result) ); + return result; +#endif +} + +#if (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Process Stack Pointer Limit (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always. + + \details Returns the current value of the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state. + \return PSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_PSPLIM_NS(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, psplim_ns" : "=r" (result) ); + return result; +#endif +} +#endif + + +/** + \brief Set Process Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored in non-secure + mode. + + \details Assigns the given value to the Process Stack Pointer Limit (PSPLIM). + \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set + */ +__STATIC_FORCEINLINE void __set_PSPLIM(uint32_t ProcStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + (void)ProcStackPtrLimit; +#else + __ASM volatile ("MSR psplim, %0" : : "r" (ProcStackPtrLimit)); +#endif +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Process Stack Pointer (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored. + + \details Assigns the given value to the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state. + \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set + */ +__STATIC_FORCEINLINE void __TZ_set_PSPLIM_NS(uint32_t ProcStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + (void)ProcStackPtrLimit; +#else + __ASM volatile ("MSR psplim_ns, %0\n" : : "r" (ProcStackPtrLimit)); +#endif +} +#endif + + +/** + \brief Get Main Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always in non-secure + mode. + + \details Returns the current value of the Main Stack Pointer Limit (MSPLIM). + \return MSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __get_MSPLIM(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, msplim" : "=r" (result) ); + return result; +#endif +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Main Stack Pointer Limit (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always. + + \details Returns the current value of the non-secure Main Stack Pointer Limit(MSPLIM) when in secure state. + \return MSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_MSPLIM_NS(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, msplim_ns" : "=r" (result) ); + return result; +#endif +} +#endif + + +/** + \brief Set Main Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored in non-secure + mode. + + \details Assigns the given value to the Main Stack Pointer Limit (MSPLIM). + \param [in] MainStackPtrLimit Main Stack Pointer Limit value to set + */ +__STATIC_FORCEINLINE void __set_MSPLIM(uint32_t MainStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + (void)MainStackPtrLimit; +#else + __ASM volatile ("MSR msplim, %0" : : "r" (MainStackPtrLimit)); +#endif +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Main Stack Pointer Limit (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored. + + \details Assigns the given value to the non-secure Main Stack Pointer Limit (MSPLIM) when in secure state. + \param [in] MainStackPtrLimit Main Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_MSPLIM_NS(uint32_t MainStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + (void)MainStackPtrLimit; +#else + __ASM volatile ("MSR msplim_ns, %0" : : "r" (MainStackPtrLimit)); +#endif +} +#endif + +#endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */ + + +/** + \brief Get FPSCR + \details Returns the current value of the Floating Point Status/Control register. + \return Floating Point Status/Control register value + */ +__STATIC_FORCEINLINE uint32_t __get_FPSCR(void) +{ +#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) +#if __has_builtin(__builtin_arm_get_fpscr) +// Re-enable using built-in when GCC has been fixed +// || (__GNUC__ > 7) || (__GNUC__ == 7 && __GNUC_MINOR__ >= 2) + /* see https://gcc.gnu.org/ml/gcc-patches/2017-04/msg00443.html */ + return __builtin_arm_get_fpscr(); +#else + uint32_t result; + + __ASM volatile ("VMRS %0, fpscr" : "=r" (result) ); + return(result); +#endif +#else + return(0U); +#endif +} + + +/** + \brief Set FPSCR + \details Assigns the given value to the Floating Point Status/Control register. + \param [in] fpscr Floating Point Status/Control value to set + */ +__STATIC_FORCEINLINE void __set_FPSCR(uint32_t fpscr) +{ +#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) +#if __has_builtin(__builtin_arm_set_fpscr) +// Re-enable using built-in when GCC has been fixed +// || (__GNUC__ > 7) || (__GNUC__ == 7 && __GNUC_MINOR__ >= 2) + /* see https://gcc.gnu.org/ml/gcc-patches/2017-04/msg00443.html */ + __builtin_arm_set_fpscr(fpscr); +#else + __ASM volatile ("VMSR fpscr, %0" : : "r" (fpscr) : "vfpcc", "memory"); +#endif +#else + (void)fpscr; +#endif +} + + +/*@} end of CMSIS_Core_RegAccFunctions */ + + +/* ########################## Core Instruction Access ######################### */ +/** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface + Access to dedicated instructions + @{ +*/ + +/* Define macros for porting to both thumb1 and thumb2. + * For thumb1, use low register (r0-r7), specified by constraint "l" + * Otherwise, use general registers, specified by constraint "r" */ +#if defined (__thumb__) && !defined (__thumb2__) +#define __CMSIS_GCC_OUT_REG(r) "=l" (r) +#define __CMSIS_GCC_RW_REG(r) "+l" (r) +#define __CMSIS_GCC_USE_REG(r) "l" (r) +#else +#define __CMSIS_GCC_OUT_REG(r) "=r" (r) +#define __CMSIS_GCC_RW_REG(r) "+r" (r) +#define __CMSIS_GCC_USE_REG(r) "r" (r) +#endif + +/** + \brief No Operation + \details No Operation does nothing. This instruction can be used for code alignment purposes. + */ +#define __NOP() __ASM volatile ("nop") + +/** + \brief Wait For Interrupt + \details Wait For Interrupt is a hint instruction that suspends execution until one of a number of events occurs. + */ +#define __WFI() __ASM volatile ("wfi") + + +/** + \brief Wait For Event + \details Wait For Event is a hint instruction that permits the processor to enter + a low-power state until one of a number of events occurs. + */ +#define __WFE() __ASM volatile ("wfe") + + +/** + \brief Send Event + \details Send Event is a hint instruction. It causes an event to be signaled to the CPU. + */ +#define __SEV() __ASM volatile ("sev") + + +/** + \brief Instruction Synchronization Barrier + \details Instruction Synchronization Barrier flushes the pipeline in the processor, + so that all instructions following the ISB are fetched from cache or memory, + after the instruction has been completed. + */ +__STATIC_FORCEINLINE void __ISB(void) +{ + __ASM volatile ("isb 0xF":::"memory"); +} + + +/** + \brief Data Synchronization Barrier + \details Acts as a special kind of Data Memory Barrier. + It completes when all explicit memory accesses before this instruction complete. + */ +__STATIC_FORCEINLINE void __DSB(void) +{ + __ASM volatile ("dsb 0xF":::"memory"); +} + + +/** + \brief Data Memory Barrier + \details Ensures the apparent order of the explicit memory operations before + and after the instruction, without ensuring their completion. + */ +__STATIC_FORCEINLINE void __DMB(void) +{ + __ASM volatile ("dmb 0xF":::"memory"); +} + + +/** + \brief Reverse byte order (32 bit) + \details Reverses the byte order in unsigned integer value. For example, 0x12345678 becomes 0x78563412. + \param [in] value Value to reverse + \return Reversed value + */ +__STATIC_FORCEINLINE uint32_t __REV(uint32_t value) +{ +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) + return __builtin_bswap32(value); +#else + uint32_t result; + + __ASM volatile ("rev %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); + return result; +#endif +} + + +/** + \brief Reverse byte order (16 bit) + \details Reverses the byte order within each halfword of a word. For example, 0x12345678 becomes 0x34127856. + \param [in] value Value to reverse + \return Reversed value + */ +__STATIC_FORCEINLINE uint32_t __REV16(uint32_t value) +{ + uint32_t result; + + __ASM volatile ("rev16 %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); + return result; +} + + +/** + \brief Reverse byte order (16 bit) + \details Reverses the byte order in a 16-bit value and returns the signed 16-bit result. For example, 0x0080 becomes 0x8000. + \param [in] value Value to reverse + \return Reversed value + */ +__STATIC_FORCEINLINE int16_t __REVSH(int16_t value) +{ +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) + return (int16_t)__builtin_bswap16(value); +#else + int16_t result; + + __ASM volatile ("revsh %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); + return result; +#endif +} + + +/** + \brief Rotate Right in unsigned value (32 bit) + \details Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits. + \param [in] op1 Value to rotate + \param [in] op2 Number of Bits to rotate + \return Rotated value + */ +__STATIC_FORCEINLINE uint32_t __ROR(uint32_t op1, uint32_t op2) +{ + op2 %= 32U; + if (op2 == 0U) + { + return op1; + } + return (op1 >> op2) | (op1 << (32U - op2)); +} + + +/** + \brief Breakpoint + \details Causes the processor to enter Debug state. + Debug tools can use this to investigate system state when the instruction at a particular address is reached. + \param [in] value is ignored by the processor. + If required, a debugger can use it to store additional information about the breakpoint. + */ +#define __BKPT(value) __ASM volatile ("bkpt "#value) + + +/** + \brief Reverse bit order of value + \details Reverses the bit order of the given value. + \param [in] value Value to reverse + \return Reversed value + */ +__STATIC_FORCEINLINE uint32_t __RBIT(uint32_t value) +{ + uint32_t result; + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) + __ASM volatile ("rbit %0, %1" : "=r" (result) : "r" (value) ); +#else + uint32_t s = (4U /*sizeof(v)*/ * 8U) - 1U; /* extra shift needed at end */ + + result = value; /* r will be reversed bits of v; first get LSB of v */ + for (value >>= 1U; value != 0U; value >>= 1U) + { + result <<= 1U; + result |= value & 1U; + s--; + } + result <<= s; /* shift when v's highest bits are zero */ +#endif + return result; +} + + +/** + \brief Count leading zeros + \details Counts the number of leading zeros of a data value. + \param [in] value Value to count the leading zeros + \return number of leading zeros in value + */ +__STATIC_FORCEINLINE uint8_t __CLZ(uint32_t value) +{ + /* Even though __builtin_clz produces a CLZ instruction on ARM, formally + __builtin_clz(0) is undefined behaviour, so handle this case specially. + This guarantees ARM-compatible results if happening to compile on a non-ARM + target, and ensures the compiler doesn't decide to activate any + optimisations using the logic "value was passed to __builtin_clz, so it + is non-zero". + ARM GCC 7.3 and possibly earlier will optimise this test away, leaving a + single CLZ instruction. + */ + if (value == 0U) + { + return 32U; + } + return __builtin_clz(value); +} + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) +/** + \brief LDR Exclusive (8 bit) + \details Executes a exclusive LDR instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +__STATIC_FORCEINLINE uint8_t __LDREXB(volatile uint8_t *addr) +{ + uint32_t result; + +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) + __ASM volatile ("ldrexb %0, %1" : "=r" (result) : "Q" (*addr) ); +#else + /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not + accepted by assembler. So has to use following less efficient pattern. + */ + __ASM volatile ("ldrexb %0, [%1]" : "=r" (result) : "r" (addr) : "memory" ); +#endif + return ((uint8_t) result); /* Add explicit type cast here */ +} + + +/** + \brief LDR Exclusive (16 bit) + \details Executes a exclusive LDR instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +__STATIC_FORCEINLINE uint16_t __LDREXH(volatile uint16_t *addr) +{ + uint32_t result; + +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) + __ASM volatile ("ldrexh %0, %1" : "=r" (result) : "Q" (*addr) ); +#else + /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not + accepted by assembler. So has to use following less efficient pattern. + */ + __ASM volatile ("ldrexh %0, [%1]" : "=r" (result) : "r" (addr) : "memory" ); +#endif + return ((uint16_t) result); /* Add explicit type cast here */ +} + + +/** + \brief LDR Exclusive (32 bit) + \details Executes a exclusive LDR instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +__STATIC_FORCEINLINE uint32_t __LDREXW(volatile uint32_t *addr) +{ + uint32_t result; + + __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); + return(result); +} + + +/** + \brief STR Exclusive (8 bit) + \details Executes a exclusive STR instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__STATIC_FORCEINLINE uint32_t __STREXB(uint8_t value, volatile uint8_t *addr) +{ + uint32_t result; + + __ASM volatile ("strexb %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" ((uint32_t)value) ); + return(result); +} + + +/** + \brief STR Exclusive (16 bit) + \details Executes a exclusive STR instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__STATIC_FORCEINLINE uint32_t __STREXH(uint16_t value, volatile uint16_t *addr) +{ + uint32_t result; + + __ASM volatile ("strexh %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" ((uint32_t)value) ); + return(result); +} + + +/** + \brief STR Exclusive (32 bit) + \details Executes a exclusive STR instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__STATIC_FORCEINLINE uint32_t __STREXW(uint32_t value, volatile uint32_t *addr) +{ + uint32_t result; + + __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); + return(result); +} + + +/** + \brief Remove the exclusive lock + \details Removes the exclusive lock which is created by LDREX. + */ +__STATIC_FORCEINLINE void __CLREX(void) +{ + __ASM volatile ("clrex" ::: "memory"); +} + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */ + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) +/** + \brief Signed Saturate + \details Saturates a signed value. + \param [in] ARG1 Value to be saturated + \param [in] ARG2 Bit position to saturate to (1..32) + \return Saturated value + */ +#define __SSAT(ARG1,ARG2) \ +__extension__ \ +({ \ + int32_t __RES, __ARG1 = (ARG1); \ + __ASM ("ssat %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ + __RES; \ + }) + + +/** + \brief Unsigned Saturate + \details Saturates an unsigned value. + \param [in] ARG1 Value to be saturated + \param [in] ARG2 Bit position to saturate to (0..31) + \return Saturated value + */ +#define __USAT(ARG1,ARG2) \ + __extension__ \ +({ \ + uint32_t __RES, __ARG1 = (ARG1); \ + __ASM ("usat %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ + __RES; \ + }) + + +/** + \brief Rotate Right with Extend (32 bit) + \details Moves each bit of a bitstring right by one bit. + The carry input is shifted in at the left end of the bitstring. + \param [in] value Value to rotate + \return Rotated value + */ +__STATIC_FORCEINLINE uint32_t __RRX(uint32_t value) +{ + uint32_t result; + + __ASM volatile ("rrx %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); + return(result); +} + + +/** + \brief LDRT Unprivileged (8 bit) + \details Executes a Unprivileged LDRT instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +__STATIC_FORCEINLINE uint8_t __LDRBT(volatile uint8_t *ptr) +{ + uint32_t result; + +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) + __ASM volatile ("ldrbt %0, %1" : "=r" (result) : "Q" (*ptr) ); +#else + /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not + accepted by assembler. So has to use following less efficient pattern. + */ + __ASM volatile ("ldrbt %0, [%1]" : "=r" (result) : "r" (ptr) : "memory" ); +#endif + return ((uint8_t) result); /* Add explicit type cast here */ +} + + +/** + \brief LDRT Unprivileged (16 bit) + \details Executes a Unprivileged LDRT instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +__STATIC_FORCEINLINE uint16_t __LDRHT(volatile uint16_t *ptr) +{ + uint32_t result; + +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) + __ASM volatile ("ldrht %0, %1" : "=r" (result) : "Q" (*ptr) ); +#else + /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not + accepted by assembler. So has to use following less efficient pattern. + */ + __ASM volatile ("ldrht %0, [%1]" : "=r" (result) : "r" (ptr) : "memory" ); +#endif + return ((uint16_t) result); /* Add explicit type cast here */ +} + + +/** + \brief LDRT Unprivileged (32 bit) + \details Executes a Unprivileged LDRT instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +__STATIC_FORCEINLINE uint32_t __LDRT(volatile uint32_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldrt %0, %1" : "=r" (result) : "Q" (*ptr) ); + return(result); +} + + +/** + \brief STRT Unprivileged (8 bit) + \details Executes a Unprivileged STRT instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STRBT(uint8_t value, volatile uint8_t *ptr) +{ + __ASM volatile ("strbt %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief STRT Unprivileged (16 bit) + \details Executes a Unprivileged STRT instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STRHT(uint16_t value, volatile uint16_t *ptr) +{ + __ASM volatile ("strht %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief STRT Unprivileged (32 bit) + \details Executes a Unprivileged STRT instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STRT(uint32_t value, volatile uint32_t *ptr) +{ + __ASM volatile ("strt %1, %0" : "=Q" (*ptr) : "r" (value) ); +} + +#else /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */ + +/** + \brief Signed Saturate + \details Saturates a signed value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (1..32) + \return Saturated value + */ +__STATIC_FORCEINLINE int32_t __SSAT(int32_t val, uint32_t sat) +{ + if ((sat >= 1U) && (sat <= 32U)) + { + const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U); + const int32_t min = -1 - max ; + if (val > max) + { + return max; + } + else if (val < min) + { + return min; + } + } + return val; +} + +/** + \brief Unsigned Saturate + \details Saturates an unsigned value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (0..31) + \return Saturated value + */ +__STATIC_FORCEINLINE uint32_t __USAT(int32_t val, uint32_t sat) +{ + if (sat <= 31U) + { + const uint32_t max = ((1U << sat) - 1U); + if (val > (int32_t)max) + { + return max; + } + else if (val < 0) + { + return 0U; + } + } + return (uint32_t)val; +} + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */ + + +#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) +/** + \brief Load-Acquire (8 bit) + \details Executes a LDAB instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +__STATIC_FORCEINLINE uint8_t __LDAB(volatile uint8_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldab %0, %1" : "=r" (result) : "Q" (*ptr) ); + return ((uint8_t) result); +} + + +/** + \brief Load-Acquire (16 bit) + \details Executes a LDAH instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +__STATIC_FORCEINLINE uint16_t __LDAH(volatile uint16_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldah %0, %1" : "=r" (result) : "Q" (*ptr) ); + return ((uint16_t) result); +} + + +/** + \brief Load-Acquire (32 bit) + \details Executes a LDA instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +__STATIC_FORCEINLINE uint32_t __LDA(volatile uint32_t *ptr) +{ + uint32_t result; + + __ASM volatile ("lda %0, %1" : "=r" (result) : "Q" (*ptr) ); + return(result); +} + + +/** + \brief Store-Release (8 bit) + \details Executes a STLB instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STLB(uint8_t value, volatile uint8_t *ptr) +{ + __ASM volatile ("stlb %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief Store-Release (16 bit) + \details Executes a STLH instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STLH(uint16_t value, volatile uint16_t *ptr) +{ + __ASM volatile ("stlh %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief Store-Release (32 bit) + \details Executes a STL instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STL(uint32_t value, volatile uint32_t *ptr) +{ + __ASM volatile ("stl %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief Load-Acquire Exclusive (8 bit) + \details Executes a LDAB exclusive instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +__STATIC_FORCEINLINE uint8_t __LDAEXB(volatile uint8_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldaexb %0, %1" : "=r" (result) : "Q" (*ptr) ); + return ((uint8_t) result); +} + + +/** + \brief Load-Acquire Exclusive (16 bit) + \details Executes a LDAH exclusive instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +__STATIC_FORCEINLINE uint16_t __LDAEXH(volatile uint16_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldaexh %0, %1" : "=r" (result) : "Q" (*ptr) ); + return ((uint16_t) result); +} + + +/** + \brief Load-Acquire Exclusive (32 bit) + \details Executes a LDA exclusive instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +__STATIC_FORCEINLINE uint32_t __LDAEX(volatile uint32_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldaex %0, %1" : "=r" (result) : "Q" (*ptr) ); + return(result); +} + + +/** + \brief Store-Release Exclusive (8 bit) + \details Executes a STLB exclusive instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__STATIC_FORCEINLINE uint32_t __STLEXB(uint8_t value, volatile uint8_t *ptr) +{ + uint32_t result; + + __ASM volatile ("stlexb %0, %2, %1" : "=&r" (result), "=Q" (*ptr) : "r" ((uint32_t)value) ); + return(result); +} + + +/** + \brief Store-Release Exclusive (16 bit) + \details Executes a STLH exclusive instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__STATIC_FORCEINLINE uint32_t __STLEXH(uint16_t value, volatile uint16_t *ptr) +{ + uint32_t result; + + __ASM volatile ("stlexh %0, %2, %1" : "=&r" (result), "=Q" (*ptr) : "r" ((uint32_t)value) ); + return(result); +} + + +/** + \brief Store-Release Exclusive (32 bit) + \details Executes a STL exclusive instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__STATIC_FORCEINLINE uint32_t __STLEX(uint32_t value, volatile uint32_t *ptr) +{ + uint32_t result; + + __ASM volatile ("stlex %0, %2, %1" : "=&r" (result), "=Q" (*ptr) : "r" ((uint32_t)value) ); + return(result); +} + +#endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */ + +/*@}*/ /* end of group CMSIS_Core_InstructionInterface */ + + +/* ################### Compiler specific Intrinsics ########################### */ +/** \defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics + Access to dedicated SIMD instructions + @{ +*/ + +#if (defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1)) + +__STATIC_FORCEINLINE uint32_t __SADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + + +__STATIC_FORCEINLINE uint32_t __SSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("ssub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + + +__STATIC_FORCEINLINE uint32_t __SADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("ssub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("ssax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USAD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usad8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USADA8(uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("usada8 %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +#define __SSAT16(ARG1,ARG2) \ +({ \ + int32_t __RES, __ARG1 = (ARG1); \ + __ASM ("ssat16 %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ + __RES; \ + }) + +#define __USAT16(ARG1,ARG2) \ +({ \ + uint32_t __RES, __ARG1 = (ARG1); \ + __ASM ("usat16 %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ + __RES; \ + }) + +__STATIC_FORCEINLINE uint32_t __UXTB16(uint32_t op1) +{ + uint32_t result; + + __ASM volatile ("uxtb16 %0, %1" : "=r" (result) : "r" (op1)); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UXTAB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uxtab16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SXTB16(uint32_t op1) +{ + uint32_t result; + + __ASM volatile ("sxtb16 %0, %1" : "=r" (result) : "r" (op1)); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SXTAB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sxtab16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMUAD (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smuad %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMUADX (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smuadx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMLAD (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smlad %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMLADX (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smladx %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +__STATIC_FORCEINLINE uint64_t __SMLALD (uint32_t op1, uint32_t op2, uint64_t acc) +{ + union llreg_u{ + uint32_t w32[2]; + uint64_t w64; + } llr; + llr.w64 = acc; + +#ifndef __ARMEB__ /* Little endian */ + __ASM volatile ("smlald %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) ); +#else /* Big endian */ + __ASM volatile ("smlald %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) ); +#endif + + return(llr.w64); +} + +__STATIC_FORCEINLINE uint64_t __SMLALDX (uint32_t op1, uint32_t op2, uint64_t acc) +{ + union llreg_u{ + uint32_t w32[2]; + uint64_t w64; + } llr; + llr.w64 = acc; + +#ifndef __ARMEB__ /* Little endian */ + __ASM volatile ("smlaldx %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) ); +#else /* Big endian */ + __ASM volatile ("smlaldx %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) ); +#endif + + return(llr.w64); +} + +__STATIC_FORCEINLINE uint32_t __SMUSD (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smusd %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMUSDX (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smusdx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMLSD (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smlsd %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMLSDX (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smlsdx %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +__STATIC_FORCEINLINE uint64_t __SMLSLD (uint32_t op1, uint32_t op2, uint64_t acc) +{ + union llreg_u{ + uint32_t w32[2]; + uint64_t w64; + } llr; + llr.w64 = acc; + +#ifndef __ARMEB__ /* Little endian */ + __ASM volatile ("smlsld %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) ); +#else /* Big endian */ + __ASM volatile ("smlsld %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) ); +#endif + + return(llr.w64); +} + +__STATIC_FORCEINLINE uint64_t __SMLSLDX (uint32_t op1, uint32_t op2, uint64_t acc) +{ + union llreg_u{ + uint32_t w32[2]; + uint64_t w64; + } llr; + llr.w64 = acc; + +#ifndef __ARMEB__ /* Little endian */ + __ASM volatile ("smlsldx %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) ); +#else /* Big endian */ + __ASM volatile ("smlsldx %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) ); +#endif + + return(llr.w64); +} + +__STATIC_FORCEINLINE uint32_t __SEL (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sel %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE int32_t __QADD( int32_t op1, int32_t op2) +{ + int32_t result; + + __ASM volatile ("qadd %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE int32_t __QSUB( int32_t op1, int32_t op2) +{ + int32_t result; + + __ASM volatile ("qsub %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +#if 0 +#define __PKHBT(ARG1,ARG2,ARG3) \ +({ \ + uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \ + __ASM ("pkhbt %0, %1, %2, lsl %3" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2), "I" (ARG3) ); \ + __RES; \ + }) + +#define __PKHTB(ARG1,ARG2,ARG3) \ +({ \ + uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \ + if (ARG3 == 0) \ + __ASM ("pkhtb %0, %1, %2" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2) ); \ + else \ + __ASM ("pkhtb %0, %1, %2, asr %3" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2), "I" (ARG3) ); \ + __RES; \ + }) +#endif + +#define __PKHBT(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0x0000FFFFUL) | \ + ((((uint32_t)(ARG2)) << (ARG3)) & 0xFFFF0000UL) ) + +#define __PKHTB(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0xFFFF0000UL) | \ + ((((uint32_t)(ARG2)) >> (ARG3)) & 0x0000FFFFUL) ) + +__STATIC_FORCEINLINE int32_t __SMMLA (int32_t op1, int32_t op2, int32_t op3) +{ + int32_t result; + + __ASM volatile ("smmla %0, %1, %2, %3" : "=r" (result): "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +#endif /* (__ARM_FEATURE_DSP == 1) */ +/*@} end of group CMSIS_SIMD_intrinsics */ + + +#pragma GCC diagnostic pop + +#endif /* __CMSIS_GCC_H */ diff --git a/firmware/Drivers/CMSIS/Include/cmsis_iccarm.h b/firmware/Drivers/CMSIS/Include/cmsis_iccarm.h new file mode 100644 index 0000000..12d68fd --- /dev/null +++ b/firmware/Drivers/CMSIS/Include/cmsis_iccarm.h @@ -0,0 +1,964 @@ +/**************************************************************************//** + * @file cmsis_iccarm.h + * @brief CMSIS compiler ICCARM (IAR Compiler for Arm) header file + * @version V5.1.0 + * @date 08. May 2019 + ******************************************************************************/ + +//------------------------------------------------------------------------------ +// +// Copyright (c) 2017-2019 IAR Systems +// Copyright (c) 2017-2019 Arm Limited. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License") +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//------------------------------------------------------------------------------ + + +#ifndef __CMSIS_ICCARM_H__ +#define __CMSIS_ICCARM_H__ + +#ifndef __ICCARM__ + #error This file should only be compiled by ICCARM +#endif + +#pragma system_include + +#define __IAR_FT _Pragma("inline=forced") __intrinsic + +#if (__VER__ >= 8000000) + #define __ICCARM_V8 1 +#else + #define __ICCARM_V8 0 +#endif + +#ifndef __ALIGNED + #if __ICCARM_V8 + #define __ALIGNED(x) __attribute__((aligned(x))) + #elif (__VER__ >= 7080000) + /* Needs IAR language extensions */ + #define __ALIGNED(x) __attribute__((aligned(x))) + #else + #warning No compiler specific solution for __ALIGNED.__ALIGNED is ignored. + #define __ALIGNED(x) + #endif +#endif + + +/* Define compiler macros for CPU architecture, used in CMSIS 5. + */ +#if __ARM_ARCH_6M__ || __ARM_ARCH_7M__ || __ARM_ARCH_7EM__ || __ARM_ARCH_8M_BASE__ || __ARM_ARCH_8M_MAIN__ +/* Macros already defined */ +#else + #if defined(__ARM8M_MAINLINE__) || defined(__ARM8EM_MAINLINE__) + #define __ARM_ARCH_8M_MAIN__ 1 + #elif defined(__ARM8M_BASELINE__) + #define __ARM_ARCH_8M_BASE__ 1 + #elif defined(__ARM_ARCH_PROFILE) && __ARM_ARCH_PROFILE == 'M' + #if __ARM_ARCH == 6 + #define __ARM_ARCH_6M__ 1 + #elif __ARM_ARCH == 7 + #if __ARM_FEATURE_DSP + #define __ARM_ARCH_7EM__ 1 + #else + #define __ARM_ARCH_7M__ 1 + #endif + #endif /* __ARM_ARCH */ + #endif /* __ARM_ARCH_PROFILE == 'M' */ +#endif + +/* Alternativ core deduction for older ICCARM's */ +#if !defined(__ARM_ARCH_6M__) && !defined(__ARM_ARCH_7M__) && !defined(__ARM_ARCH_7EM__) && \ + !defined(__ARM_ARCH_8M_BASE__) && !defined(__ARM_ARCH_8M_MAIN__) + #if defined(__ARM6M__) && (__CORE__ == __ARM6M__) + #define __ARM_ARCH_6M__ 1 + #elif defined(__ARM7M__) && (__CORE__ == __ARM7M__) + #define __ARM_ARCH_7M__ 1 + #elif defined(__ARM7EM__) && (__CORE__ == __ARM7EM__) + #define __ARM_ARCH_7EM__ 1 + #elif defined(__ARM8M_BASELINE__) && (__CORE == __ARM8M_BASELINE__) + #define __ARM_ARCH_8M_BASE__ 1 + #elif defined(__ARM8M_MAINLINE__) && (__CORE == __ARM8M_MAINLINE__) + #define __ARM_ARCH_8M_MAIN__ 1 + #elif defined(__ARM8EM_MAINLINE__) && (__CORE == __ARM8EM_MAINLINE__) + #define __ARM_ARCH_8M_MAIN__ 1 + #else + #error "Unknown target." + #endif +#endif + + + +#if defined(__ARM_ARCH_6M__) && __ARM_ARCH_6M__==1 + #define __IAR_M0_FAMILY 1 +#elif defined(__ARM_ARCH_8M_BASE__) && __ARM_ARCH_8M_BASE__==1 + #define __IAR_M0_FAMILY 1 +#else + #define __IAR_M0_FAMILY 0 +#endif + + +#ifndef __ASM + #define __ASM __asm +#endif + +#ifndef __COMPILER_BARRIER + #define __COMPILER_BARRIER() __ASM volatile("":::"memory") +#endif + +#ifndef __INLINE + #define __INLINE inline +#endif + +#ifndef __NO_RETURN + #if __ICCARM_V8 + #define __NO_RETURN __attribute__((__noreturn__)) + #else + #define __NO_RETURN _Pragma("object_attribute=__noreturn") + #endif +#endif + +#ifndef __PACKED + #if __ICCARM_V8 + #define __PACKED __attribute__((packed, aligned(1))) + #else + /* Needs IAR language extensions */ + #define __PACKED __packed + #endif +#endif + +#ifndef __PACKED_STRUCT + #if __ICCARM_V8 + #define __PACKED_STRUCT struct __attribute__((packed, aligned(1))) + #else + /* Needs IAR language extensions */ + #define __PACKED_STRUCT __packed struct + #endif +#endif + +#ifndef __PACKED_UNION + #if __ICCARM_V8 + #define __PACKED_UNION union __attribute__((packed, aligned(1))) + #else + /* Needs IAR language extensions */ + #define __PACKED_UNION __packed union + #endif +#endif + +#ifndef __RESTRICT + #if __ICCARM_V8 + #define __RESTRICT __restrict + #else + /* Needs IAR language extensions */ + #define __RESTRICT restrict + #endif +#endif + +#ifndef __STATIC_INLINE + #define __STATIC_INLINE static inline +#endif + +#ifndef __FORCEINLINE + #define __FORCEINLINE _Pragma("inline=forced") +#endif + +#ifndef __STATIC_FORCEINLINE + #define __STATIC_FORCEINLINE __FORCEINLINE __STATIC_INLINE +#endif + +#ifndef __UNALIGNED_UINT16_READ +#pragma language=save +#pragma language=extended +__IAR_FT uint16_t __iar_uint16_read(void const *ptr) +{ + return *(__packed uint16_t*)(ptr); +} +#pragma language=restore +#define __UNALIGNED_UINT16_READ(PTR) __iar_uint16_read(PTR) +#endif + + +#ifndef __UNALIGNED_UINT16_WRITE +#pragma language=save +#pragma language=extended +__IAR_FT void __iar_uint16_write(void const *ptr, uint16_t val) +{ + *(__packed uint16_t*)(ptr) = val;; +} +#pragma language=restore +#define __UNALIGNED_UINT16_WRITE(PTR,VAL) __iar_uint16_write(PTR,VAL) +#endif + +#ifndef __UNALIGNED_UINT32_READ +#pragma language=save +#pragma language=extended +__IAR_FT uint32_t __iar_uint32_read(void const *ptr) +{ + return *(__packed uint32_t*)(ptr); +} +#pragma language=restore +#define __UNALIGNED_UINT32_READ(PTR) __iar_uint32_read(PTR) +#endif + +#ifndef __UNALIGNED_UINT32_WRITE +#pragma language=save +#pragma language=extended +__IAR_FT void __iar_uint32_write(void const *ptr, uint32_t val) +{ + *(__packed uint32_t*)(ptr) = val;; +} +#pragma language=restore +#define __UNALIGNED_UINT32_WRITE(PTR,VAL) __iar_uint32_write(PTR,VAL) +#endif + +#ifndef __UNALIGNED_UINT32 /* deprecated */ +#pragma language=save +#pragma language=extended +__packed struct __iar_u32 { uint32_t v; }; +#pragma language=restore +#define __UNALIGNED_UINT32(PTR) (((struct __iar_u32 *)(PTR))->v) +#endif + +#ifndef __USED + #if __ICCARM_V8 + #define __USED __attribute__((used)) + #else + #define __USED _Pragma("__root") + #endif +#endif + +#ifndef __WEAK + #if __ICCARM_V8 + #define __WEAK __attribute__((weak)) + #else + #define __WEAK _Pragma("__weak") + #endif +#endif + +#ifndef __PROGRAM_START +#define __PROGRAM_START __iar_program_start +#endif + +#ifndef __INITIAL_SP +#define __INITIAL_SP CSTACK$$Limit +#endif + +#ifndef __STACK_LIMIT +#define __STACK_LIMIT CSTACK$$Base +#endif + +#ifndef __VECTOR_TABLE +#define __VECTOR_TABLE __vector_table +#endif + +#ifndef __VECTOR_TABLE_ATTRIBUTE +#define __VECTOR_TABLE_ATTRIBUTE @".intvec" +#endif + +#ifndef __ICCARM_INTRINSICS_VERSION__ + #define __ICCARM_INTRINSICS_VERSION__ 0 +#endif + +#if __ICCARM_INTRINSICS_VERSION__ == 2 + + #if defined(__CLZ) + #undef __CLZ + #endif + #if defined(__REVSH) + #undef __REVSH + #endif + #if defined(__RBIT) + #undef __RBIT + #endif + #if defined(__SSAT) + #undef __SSAT + #endif + #if defined(__USAT) + #undef __USAT + #endif + + #include "iccarm_builtin.h" + + #define __disable_fault_irq __iar_builtin_disable_fiq + #define __disable_irq __iar_builtin_disable_interrupt + #define __enable_fault_irq __iar_builtin_enable_fiq + #define __enable_irq __iar_builtin_enable_interrupt + #define __arm_rsr __iar_builtin_rsr + #define __arm_wsr __iar_builtin_wsr + + + #define __get_APSR() (__arm_rsr("APSR")) + #define __get_BASEPRI() (__arm_rsr("BASEPRI")) + #define __get_CONTROL() (__arm_rsr("CONTROL")) + #define __get_FAULTMASK() (__arm_rsr("FAULTMASK")) + + #if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) + #define __get_FPSCR() (__arm_rsr("FPSCR")) + #define __set_FPSCR(VALUE) (__arm_wsr("FPSCR", (VALUE))) + #else + #define __get_FPSCR() ( 0 ) + #define __set_FPSCR(VALUE) ((void)VALUE) + #endif + + #define __get_IPSR() (__arm_rsr("IPSR")) + #define __get_MSP() (__arm_rsr("MSP")) + #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + #define __get_MSPLIM() (0U) + #else + #define __get_MSPLIM() (__arm_rsr("MSPLIM")) + #endif + #define __get_PRIMASK() (__arm_rsr("PRIMASK")) + #define __get_PSP() (__arm_rsr("PSP")) + + #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + #define __get_PSPLIM() (0U) + #else + #define __get_PSPLIM() (__arm_rsr("PSPLIM")) + #endif + + #define __get_xPSR() (__arm_rsr("xPSR")) + + #define __set_BASEPRI(VALUE) (__arm_wsr("BASEPRI", (VALUE))) + #define __set_BASEPRI_MAX(VALUE) (__arm_wsr("BASEPRI_MAX", (VALUE))) + #define __set_CONTROL(VALUE) (__arm_wsr("CONTROL", (VALUE))) + #define __set_FAULTMASK(VALUE) (__arm_wsr("FAULTMASK", (VALUE))) + #define __set_MSP(VALUE) (__arm_wsr("MSP", (VALUE))) + + #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + #define __set_MSPLIM(VALUE) ((void)(VALUE)) + #else + #define __set_MSPLIM(VALUE) (__arm_wsr("MSPLIM", (VALUE))) + #endif + #define __set_PRIMASK(VALUE) (__arm_wsr("PRIMASK", (VALUE))) + #define __set_PSP(VALUE) (__arm_wsr("PSP", (VALUE))) + #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + #define __set_PSPLIM(VALUE) ((void)(VALUE)) + #else + #define __set_PSPLIM(VALUE) (__arm_wsr("PSPLIM", (VALUE))) + #endif + + #define __TZ_get_CONTROL_NS() (__arm_rsr("CONTROL_NS")) + #define __TZ_set_CONTROL_NS(VALUE) (__arm_wsr("CONTROL_NS", (VALUE))) + #define __TZ_get_PSP_NS() (__arm_rsr("PSP_NS")) + #define __TZ_set_PSP_NS(VALUE) (__arm_wsr("PSP_NS", (VALUE))) + #define __TZ_get_MSP_NS() (__arm_rsr("MSP_NS")) + #define __TZ_set_MSP_NS(VALUE) (__arm_wsr("MSP_NS", (VALUE))) + #define __TZ_get_SP_NS() (__arm_rsr("SP_NS")) + #define __TZ_set_SP_NS(VALUE) (__arm_wsr("SP_NS", (VALUE))) + #define __TZ_get_PRIMASK_NS() (__arm_rsr("PRIMASK_NS")) + #define __TZ_set_PRIMASK_NS(VALUE) (__arm_wsr("PRIMASK_NS", (VALUE))) + #define __TZ_get_BASEPRI_NS() (__arm_rsr("BASEPRI_NS")) + #define __TZ_set_BASEPRI_NS(VALUE) (__arm_wsr("BASEPRI_NS", (VALUE))) + #define __TZ_get_FAULTMASK_NS() (__arm_rsr("FAULTMASK_NS")) + #define __TZ_set_FAULTMASK_NS(VALUE)(__arm_wsr("FAULTMASK_NS", (VALUE))) + + #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + #define __TZ_get_PSPLIM_NS() (0U) + #define __TZ_set_PSPLIM_NS(VALUE) ((void)(VALUE)) + #else + #define __TZ_get_PSPLIM_NS() (__arm_rsr("PSPLIM_NS")) + #define __TZ_set_PSPLIM_NS(VALUE) (__arm_wsr("PSPLIM_NS", (VALUE))) + #endif + + #define __TZ_get_MSPLIM_NS() (__arm_rsr("MSPLIM_NS")) + #define __TZ_set_MSPLIM_NS(VALUE) (__arm_wsr("MSPLIM_NS", (VALUE))) + + #define __NOP __iar_builtin_no_operation + + #define __CLZ __iar_builtin_CLZ + #define __CLREX __iar_builtin_CLREX + + #define __DMB __iar_builtin_DMB + #define __DSB __iar_builtin_DSB + #define __ISB __iar_builtin_ISB + + #define __LDREXB __iar_builtin_LDREXB + #define __LDREXH __iar_builtin_LDREXH + #define __LDREXW __iar_builtin_LDREX + + #define __RBIT __iar_builtin_RBIT + #define __REV __iar_builtin_REV + #define __REV16 __iar_builtin_REV16 + + __IAR_FT int16_t __REVSH(int16_t val) + { + return (int16_t) __iar_builtin_REVSH(val); + } + + #define __ROR __iar_builtin_ROR + #define __RRX __iar_builtin_RRX + + #define __SEV __iar_builtin_SEV + + #if !__IAR_M0_FAMILY + #define __SSAT __iar_builtin_SSAT + #endif + + #define __STREXB __iar_builtin_STREXB + #define __STREXH __iar_builtin_STREXH + #define __STREXW __iar_builtin_STREX + + #if !__IAR_M0_FAMILY + #define __USAT __iar_builtin_USAT + #endif + + #define __WFE __iar_builtin_WFE + #define __WFI __iar_builtin_WFI + + #if __ARM_MEDIA__ + #define __SADD8 __iar_builtin_SADD8 + #define __QADD8 __iar_builtin_QADD8 + #define __SHADD8 __iar_builtin_SHADD8 + #define __UADD8 __iar_builtin_UADD8 + #define __UQADD8 __iar_builtin_UQADD8 + #define __UHADD8 __iar_builtin_UHADD8 + #define __SSUB8 __iar_builtin_SSUB8 + #define __QSUB8 __iar_builtin_QSUB8 + #define __SHSUB8 __iar_builtin_SHSUB8 + #define __USUB8 __iar_builtin_USUB8 + #define __UQSUB8 __iar_builtin_UQSUB8 + #define __UHSUB8 __iar_builtin_UHSUB8 + #define __SADD16 __iar_builtin_SADD16 + #define __QADD16 __iar_builtin_QADD16 + #define __SHADD16 __iar_builtin_SHADD16 + #define __UADD16 __iar_builtin_UADD16 + #define __UQADD16 __iar_builtin_UQADD16 + #define __UHADD16 __iar_builtin_UHADD16 + #define __SSUB16 __iar_builtin_SSUB16 + #define __QSUB16 __iar_builtin_QSUB16 + #define __SHSUB16 __iar_builtin_SHSUB16 + #define __USUB16 __iar_builtin_USUB16 + #define __UQSUB16 __iar_builtin_UQSUB16 + #define __UHSUB16 __iar_builtin_UHSUB16 + #define __SASX __iar_builtin_SASX + #define __QASX __iar_builtin_QASX + #define __SHASX __iar_builtin_SHASX + #define __UASX __iar_builtin_UASX + #define __UQASX __iar_builtin_UQASX + #define __UHASX __iar_builtin_UHASX + #define __SSAX __iar_builtin_SSAX + #define __QSAX __iar_builtin_QSAX + #define __SHSAX __iar_builtin_SHSAX + #define __USAX __iar_builtin_USAX + #define __UQSAX __iar_builtin_UQSAX + #define __UHSAX __iar_builtin_UHSAX + #define __USAD8 __iar_builtin_USAD8 + #define __USADA8 __iar_builtin_USADA8 + #define __SSAT16 __iar_builtin_SSAT16 + #define __USAT16 __iar_builtin_USAT16 + #define __UXTB16 __iar_builtin_UXTB16 + #define __UXTAB16 __iar_builtin_UXTAB16 + #define __SXTB16 __iar_builtin_SXTB16 + #define __SXTAB16 __iar_builtin_SXTAB16 + #define __SMUAD __iar_builtin_SMUAD + #define __SMUADX __iar_builtin_SMUADX + #define __SMMLA __iar_builtin_SMMLA + #define __SMLAD __iar_builtin_SMLAD + #define __SMLADX __iar_builtin_SMLADX + #define __SMLALD __iar_builtin_SMLALD + #define __SMLALDX __iar_builtin_SMLALDX + #define __SMUSD __iar_builtin_SMUSD + #define __SMUSDX __iar_builtin_SMUSDX + #define __SMLSD __iar_builtin_SMLSD + #define __SMLSDX __iar_builtin_SMLSDX + #define __SMLSLD __iar_builtin_SMLSLD + #define __SMLSLDX __iar_builtin_SMLSLDX + #define __SEL __iar_builtin_SEL + #define __QADD __iar_builtin_QADD + #define __QSUB __iar_builtin_QSUB + #define __PKHBT __iar_builtin_PKHBT + #define __PKHTB __iar_builtin_PKHTB + #endif + +#else /* __ICCARM_INTRINSICS_VERSION__ == 2 */ + + #if __IAR_M0_FAMILY + /* Avoid clash between intrinsics.h and arm_math.h when compiling for Cortex-M0. */ + #define __CLZ __cmsis_iar_clz_not_active + #define __SSAT __cmsis_iar_ssat_not_active + #define __USAT __cmsis_iar_usat_not_active + #define __RBIT __cmsis_iar_rbit_not_active + #define __get_APSR __cmsis_iar_get_APSR_not_active + #endif + + + #if (!((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) )) + #define __get_FPSCR __cmsis_iar_get_FPSR_not_active + #define __set_FPSCR __cmsis_iar_set_FPSR_not_active + #endif + + #ifdef __INTRINSICS_INCLUDED + #error intrinsics.h is already included previously! + #endif + + #include + + #if __IAR_M0_FAMILY + /* Avoid clash between intrinsics.h and arm_math.h when compiling for Cortex-M0. */ + #undef __CLZ + #undef __SSAT + #undef __USAT + #undef __RBIT + #undef __get_APSR + + __STATIC_INLINE uint8_t __CLZ(uint32_t data) + { + if (data == 0U) { return 32U; } + + uint32_t count = 0U; + uint32_t mask = 0x80000000U; + + while ((data & mask) == 0U) + { + count += 1U; + mask = mask >> 1U; + } + return count; + } + + __STATIC_INLINE uint32_t __RBIT(uint32_t v) + { + uint8_t sc = 31U; + uint32_t r = v; + for (v >>= 1U; v; v >>= 1U) + { + r <<= 1U; + r |= v & 1U; + sc--; + } + return (r << sc); + } + + __STATIC_INLINE uint32_t __get_APSR(void) + { + uint32_t res; + __asm("MRS %0,APSR" : "=r" (res)); + return res; + } + + #endif + + #if (!((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) )) + #undef __get_FPSCR + #undef __set_FPSCR + #define __get_FPSCR() (0) + #define __set_FPSCR(VALUE) ((void)VALUE) + #endif + + #pragma diag_suppress=Pe940 + #pragma diag_suppress=Pe177 + + #define __enable_irq __enable_interrupt + #define __disable_irq __disable_interrupt + #define __NOP __no_operation + + #define __get_xPSR __get_PSR + + #if (!defined(__ARM_ARCH_6M__) || __ARM_ARCH_6M__==0) + + __IAR_FT uint32_t __LDREXW(uint32_t volatile *ptr) + { + return __LDREX((unsigned long *)ptr); + } + + __IAR_FT uint32_t __STREXW(uint32_t value, uint32_t volatile *ptr) + { + return __STREX(value, (unsigned long *)ptr); + } + #endif + + + /* __CORTEX_M is defined in core_cm0.h, core_cm3.h and core_cm4.h. */ + #if (__CORTEX_M >= 0x03) + + __IAR_FT uint32_t __RRX(uint32_t value) + { + uint32_t result; + __ASM("RRX %0, %1" : "=r"(result) : "r" (value) : "cc"); + return(result); + } + + __IAR_FT void __set_BASEPRI_MAX(uint32_t value) + { + __asm volatile("MSR BASEPRI_MAX,%0"::"r" (value)); + } + + + #define __enable_fault_irq __enable_fiq + #define __disable_fault_irq __disable_fiq + + + #endif /* (__CORTEX_M >= 0x03) */ + + __IAR_FT uint32_t __ROR(uint32_t op1, uint32_t op2) + { + return (op1 >> op2) | (op1 << ((sizeof(op1)*8)-op2)); + } + + #if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) + + __IAR_FT uint32_t __get_MSPLIM(void) + { + uint32_t res; + #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE ) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + res = 0U; + #else + __asm volatile("MRS %0,MSPLIM" : "=r" (res)); + #endif + return res; + } + + __IAR_FT void __set_MSPLIM(uint32_t value) + { + #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE ) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + (void)value; + #else + __asm volatile("MSR MSPLIM,%0" :: "r" (value)); + #endif + } + + __IAR_FT uint32_t __get_PSPLIM(void) + { + uint32_t res; + #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE ) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + res = 0U; + #else + __asm volatile("MRS %0,PSPLIM" : "=r" (res)); + #endif + return res; + } + + __IAR_FT void __set_PSPLIM(uint32_t value) + { + #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE ) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + (void)value; + #else + __asm volatile("MSR PSPLIM,%0" :: "r" (value)); + #endif + } + + __IAR_FT uint32_t __TZ_get_CONTROL_NS(void) + { + uint32_t res; + __asm volatile("MRS %0,CONTROL_NS" : "=r" (res)); + return res; + } + + __IAR_FT void __TZ_set_CONTROL_NS(uint32_t value) + { + __asm volatile("MSR CONTROL_NS,%0" :: "r" (value)); + } + + __IAR_FT uint32_t __TZ_get_PSP_NS(void) + { + uint32_t res; + __asm volatile("MRS %0,PSP_NS" : "=r" (res)); + return res; + } + + __IAR_FT void __TZ_set_PSP_NS(uint32_t value) + { + __asm volatile("MSR PSP_NS,%0" :: "r" (value)); + } + + __IAR_FT uint32_t __TZ_get_MSP_NS(void) + { + uint32_t res; + __asm volatile("MRS %0,MSP_NS" : "=r" (res)); + return res; + } + + __IAR_FT void __TZ_set_MSP_NS(uint32_t value) + { + __asm volatile("MSR MSP_NS,%0" :: "r" (value)); + } + + __IAR_FT uint32_t __TZ_get_SP_NS(void) + { + uint32_t res; + __asm volatile("MRS %0,SP_NS" : "=r" (res)); + return res; + } + __IAR_FT void __TZ_set_SP_NS(uint32_t value) + { + __asm volatile("MSR SP_NS,%0" :: "r" (value)); + } + + __IAR_FT uint32_t __TZ_get_PRIMASK_NS(void) + { + uint32_t res; + __asm volatile("MRS %0,PRIMASK_NS" : "=r" (res)); + return res; + } + + __IAR_FT void __TZ_set_PRIMASK_NS(uint32_t value) + { + __asm volatile("MSR PRIMASK_NS,%0" :: "r" (value)); + } + + __IAR_FT uint32_t __TZ_get_BASEPRI_NS(void) + { + uint32_t res; + __asm volatile("MRS %0,BASEPRI_NS" : "=r" (res)); + return res; + } + + __IAR_FT void __TZ_set_BASEPRI_NS(uint32_t value) + { + __asm volatile("MSR BASEPRI_NS,%0" :: "r" (value)); + } + + __IAR_FT uint32_t __TZ_get_FAULTMASK_NS(void) + { + uint32_t res; + __asm volatile("MRS %0,FAULTMASK_NS" : "=r" (res)); + return res; + } + + __IAR_FT void __TZ_set_FAULTMASK_NS(uint32_t value) + { + __asm volatile("MSR FAULTMASK_NS,%0" :: "r" (value)); + } + + __IAR_FT uint32_t __TZ_get_PSPLIM_NS(void) + { + uint32_t res; + #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE ) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + res = 0U; + #else + __asm volatile("MRS %0,PSPLIM_NS" : "=r" (res)); + #endif + return res; + } + + __IAR_FT void __TZ_set_PSPLIM_NS(uint32_t value) + { + #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE ) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + (void)value; + #else + __asm volatile("MSR PSPLIM_NS,%0" :: "r" (value)); + #endif + } + + __IAR_FT uint32_t __TZ_get_MSPLIM_NS(void) + { + uint32_t res; + __asm volatile("MRS %0,MSPLIM_NS" : "=r" (res)); + return res; + } + + __IAR_FT void __TZ_set_MSPLIM_NS(uint32_t value) + { + __asm volatile("MSR MSPLIM_NS,%0" :: "r" (value)); + } + + #endif /* __ARM_ARCH_8M_MAIN__ or __ARM_ARCH_8M_BASE__ */ + +#endif /* __ICCARM_INTRINSICS_VERSION__ == 2 */ + +#define __BKPT(value) __asm volatile ("BKPT %0" : : "i"(value)) + +#if __IAR_M0_FAMILY + __STATIC_INLINE int32_t __SSAT(int32_t val, uint32_t sat) + { + if ((sat >= 1U) && (sat <= 32U)) + { + const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U); + const int32_t min = -1 - max ; + if (val > max) + { + return max; + } + else if (val < min) + { + return min; + } + } + return val; + } + + __STATIC_INLINE uint32_t __USAT(int32_t val, uint32_t sat) + { + if (sat <= 31U) + { + const uint32_t max = ((1U << sat) - 1U); + if (val > (int32_t)max) + { + return max; + } + else if (val < 0) + { + return 0U; + } + } + return (uint32_t)val; + } +#endif + +#if (__CORTEX_M >= 0x03) /* __CORTEX_M is defined in core_cm0.h, core_cm3.h and core_cm4.h. */ + + __IAR_FT uint8_t __LDRBT(volatile uint8_t *addr) + { + uint32_t res; + __ASM("LDRBT %0, [%1]" : "=r" (res) : "r" (addr) : "memory"); + return ((uint8_t)res); + } + + __IAR_FT uint16_t __LDRHT(volatile uint16_t *addr) + { + uint32_t res; + __ASM("LDRHT %0, [%1]" : "=r" (res) : "r" (addr) : "memory"); + return ((uint16_t)res); + } + + __IAR_FT uint32_t __LDRT(volatile uint32_t *addr) + { + uint32_t res; + __ASM("LDRT %0, [%1]" : "=r" (res) : "r" (addr) : "memory"); + return res; + } + + __IAR_FT void __STRBT(uint8_t value, volatile uint8_t *addr) + { + __ASM("STRBT %1, [%0]" : : "r" (addr), "r" ((uint32_t)value) : "memory"); + } + + __IAR_FT void __STRHT(uint16_t value, volatile uint16_t *addr) + { + __ASM("STRHT %1, [%0]" : : "r" (addr), "r" ((uint32_t)value) : "memory"); + } + + __IAR_FT void __STRT(uint32_t value, volatile uint32_t *addr) + { + __ASM("STRT %1, [%0]" : : "r" (addr), "r" (value) : "memory"); + } + +#endif /* (__CORTEX_M >= 0x03) */ + +#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) + + + __IAR_FT uint8_t __LDAB(volatile uint8_t *ptr) + { + uint32_t res; + __ASM volatile ("LDAB %0, [%1]" : "=r" (res) : "r" (ptr) : "memory"); + return ((uint8_t)res); + } + + __IAR_FT uint16_t __LDAH(volatile uint16_t *ptr) + { + uint32_t res; + __ASM volatile ("LDAH %0, [%1]" : "=r" (res) : "r" (ptr) : "memory"); + return ((uint16_t)res); + } + + __IAR_FT uint32_t __LDA(volatile uint32_t *ptr) + { + uint32_t res; + __ASM volatile ("LDA %0, [%1]" : "=r" (res) : "r" (ptr) : "memory"); + return res; + } + + __IAR_FT void __STLB(uint8_t value, volatile uint8_t *ptr) + { + __ASM volatile ("STLB %1, [%0]" :: "r" (ptr), "r" (value) : "memory"); + } + + __IAR_FT void __STLH(uint16_t value, volatile uint16_t *ptr) + { + __ASM volatile ("STLH %1, [%0]" :: "r" (ptr), "r" (value) : "memory"); + } + + __IAR_FT void __STL(uint32_t value, volatile uint32_t *ptr) + { + __ASM volatile ("STL %1, [%0]" :: "r" (ptr), "r" (value) : "memory"); + } + + __IAR_FT uint8_t __LDAEXB(volatile uint8_t *ptr) + { + uint32_t res; + __ASM volatile ("LDAEXB %0, [%1]" : "=r" (res) : "r" (ptr) : "memory"); + return ((uint8_t)res); + } + + __IAR_FT uint16_t __LDAEXH(volatile uint16_t *ptr) + { + uint32_t res; + __ASM volatile ("LDAEXH %0, [%1]" : "=r" (res) : "r" (ptr) : "memory"); + return ((uint16_t)res); + } + + __IAR_FT uint32_t __LDAEX(volatile uint32_t *ptr) + { + uint32_t res; + __ASM volatile ("LDAEX %0, [%1]" : "=r" (res) : "r" (ptr) : "memory"); + return res; + } + + __IAR_FT uint32_t __STLEXB(uint8_t value, volatile uint8_t *ptr) + { + uint32_t res; + __ASM volatile ("STLEXB %0, %2, [%1]" : "=r" (res) : "r" (ptr), "r" (value) : "memory"); + return res; + } + + __IAR_FT uint32_t __STLEXH(uint16_t value, volatile uint16_t *ptr) + { + uint32_t res; + __ASM volatile ("STLEXH %0, %2, [%1]" : "=r" (res) : "r" (ptr), "r" (value) : "memory"); + return res; + } + + __IAR_FT uint32_t __STLEX(uint32_t value, volatile uint32_t *ptr) + { + uint32_t res; + __ASM volatile ("STLEX %0, %2, [%1]" : "=r" (res) : "r" (ptr), "r" (value) : "memory"); + return res; + } + +#endif /* __ARM_ARCH_8M_MAIN__ or __ARM_ARCH_8M_BASE__ */ + +#undef __IAR_FT +#undef __IAR_M0_FAMILY +#undef __ICCARM_V8 + +#pragma diag_default=Pe940 +#pragma diag_default=Pe177 + +#endif /* __CMSIS_ICCARM_H__ */ diff --git a/firmware/Drivers/CMSIS/Include/cmsis_version.h b/firmware/Drivers/CMSIS/Include/cmsis_version.h new file mode 100644 index 0000000..f2e2746 --- /dev/null +++ b/firmware/Drivers/CMSIS/Include/cmsis_version.h @@ -0,0 +1,39 @@ +/**************************************************************************//** + * @file cmsis_version.h + * @brief CMSIS Core(M) Version definitions + * @version V5.0.3 + * @date 24. June 2019 + ******************************************************************************/ +/* + * Copyright (c) 2009-2019 ARM Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CMSIS_VERSION_H +#define __CMSIS_VERSION_H + +/* CMSIS Version definitions */ +#define __CM_CMSIS_VERSION_MAIN ( 5U) /*!< [31:16] CMSIS Core(M) main version */ +#define __CM_CMSIS_VERSION_SUB ( 3U) /*!< [15:0] CMSIS Core(M) sub version */ +#define __CM_CMSIS_VERSION ((__CM_CMSIS_VERSION_MAIN << 16U) | \ + __CM_CMSIS_VERSION_SUB ) /*!< CMSIS Core(M) version number */ +#endif diff --git a/firmware/Drivers/CMSIS/Include/core_armv81mml.h b/firmware/Drivers/CMSIS/Include/core_armv81mml.h new file mode 100644 index 0000000..8441e57 --- /dev/null +++ b/firmware/Drivers/CMSIS/Include/core_armv81mml.h @@ -0,0 +1,2968 @@ +/**************************************************************************//** + * @file core_armv81mml.h + * @brief CMSIS Armv8.1-M Mainline Core Peripheral Access Layer Header File + * @version V1.0.0 + * @date 15. March 2019 + ******************************************************************************/ +/* + * Copyright (c) 2018-2019 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_ARMV81MML_H_GENERIC +#define __CORE_ARMV81MML_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup Cortex_ARMV81MML + @{ + */ + +#include "cmsis_version.h" + +#define __ARM_ARCH_8M_MAIN__ 1 // patching for now +/* CMSIS ARMV81MML definitions */ +#define __ARMv81MML_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __ARMv81MML_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __ARMv81MML_CMSIS_VERSION ((__ARMv81MML_CMSIS_VERSION_MAIN << 16U) | \ + __ARMv81MML_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (81U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + For this, __FPU_PRESENT has to be checked prior to making use of FPU specific registers and functions. +*/ +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined(__ARM_FEATURE_DSP) + #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_FP + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined(__ARM_FEATURE_DSP) + #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined(__ARM_FEATURE_DSP) + #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined(__ARM_FEATURE_DSP) + #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_ARMV81MML_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_ARMV81MML_H_DEPENDANT +#define __CORE_ARMV81MML_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __ARMv81MML_REV + #define __ARMv81MML_REV 0x0000U + #warning "__ARMv81MML_REV not defined in device header file; using default!" + #endif + + #ifndef __FPU_PRESENT + #define __FPU_PRESENT 0U + #warning "__FPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __SAUREGION_PRESENT + #define __SAUREGION_PRESENT 0U + #warning "__SAUREGION_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __DSP_PRESENT + #define __DSP_PRESENT 0U + #warning "__DSP_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 3U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group ARMv81MML */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + - Core SAU Register + - Core FPU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:16; /*!< bit: 0..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:7; /*!< bit: 20..26 Reserved */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + +#define APSR_Q_Pos 27U /*!< APSR: Q Position */ +#define APSR_Q_Msk (1UL << APSR_Q_Pos) /*!< APSR: Q Mask */ + +#define APSR_GE_Pos 16U /*!< APSR: GE Position */ +#define APSR_GE_Msk (0xFUL << APSR_GE_Pos) /*!< APSR: GE Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:7; /*!< bit: 9..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:4; /*!< bit: 20..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t IT:2; /*!< bit: 25..26 saved IT state (read 0) */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_Q_Pos 27U /*!< xPSR: Q Position */ +#define xPSR_Q_Msk (1UL << xPSR_Q_Pos) /*!< xPSR: Q Mask */ + +#define xPSR_IT_Pos 25U /*!< xPSR: IT Position */ +#define xPSR_IT_Msk (3UL << xPSR_IT_Pos) /*!< xPSR: IT Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_GE_Pos 16U /*!< xPSR: GE Position */ +#define xPSR_GE_Msk (0xFUL << xPSR_GE_Pos) /*!< xPSR: GE Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack-pointer select */ + uint32_t FPCA:1; /*!< bit: 2 Floating-point context active */ + uint32_t SFPA:1; /*!< bit: 3 Secure floating-point active */ + uint32_t _reserved1:28; /*!< bit: 4..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SFPA_Pos 3U /*!< CONTROL: SFPA Position */ +#define CONTROL_SFPA_Msk (1UL << CONTROL_SFPA_Pos) /*!< CONTROL: SFPA Mask */ + +#define CONTROL_FPCA_Pos 2U /*!< CONTROL: FPCA Position */ +#define CONTROL_FPCA_Msk (1UL << CONTROL_FPCA_Pos) /*!< CONTROL: FPCA Mask */ + +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[16U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[16U]; + __IOM uint32_t ICER[16U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[16U]; + __IOM uint32_t ISPR[16U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[16U]; + __IOM uint32_t ICPR[16U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[16U]; + __IOM uint32_t IABR[16U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[16U]; + __IOM uint32_t ITNS[16U]; /*!< Offset: 0x280 (R/W) Interrupt Non-Secure State Register */ + uint32_t RESERVED5[16U]; + __IOM uint8_t IPR[496U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED6[580U]; + __OM uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */ +} NVIC_Type; + +/* Software Triggered Interrupt Register Definitions */ +#define NVIC_STIR_INTID_Pos 0U /*!< STIR: INTLINESNUM Position */ +#define NVIC_STIR_INTID_Msk (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/) /*!< STIR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + __IOM uint8_t SHPR[12U]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + __IOM uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */ + __IOM uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ + __IOM uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ + __IOM uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */ + __IOM uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ + __IOM uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */ + __IM uint32_t ID_PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + __IM uint32_t ID_DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + __IM uint32_t ID_ADR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __IM uint32_t ID_MMFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __IM uint32_t ID_ISAR[6U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + __IM uint32_t CLIDR; /*!< Offset: 0x078 (R/ ) Cache Level ID register */ + __IM uint32_t CTR; /*!< Offset: 0x07C (R/ ) Cache Type register */ + __IM uint32_t CCSIDR; /*!< Offset: 0x080 (R/ ) Cache Size ID Register */ + __IOM uint32_t CSSELR; /*!< Offset: 0x084 (R/W) Cache Size Selection Register */ + __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ + __IOM uint32_t NSACR; /*!< Offset: 0x08C (R/W) Non-Secure Access Control Register */ + uint32_t RESERVED3[92U]; + __OM uint32_t STIR; /*!< Offset: 0x200 ( /W) Software Triggered Interrupt Register */ + uint32_t RESERVED4[15U]; + __IM uint32_t MVFR0; /*!< Offset: 0x240 (R/ ) Media and VFP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x244 (R/ ) Media and VFP Feature Register 1 */ + __IM uint32_t MVFR2; /*!< Offset: 0x248 (R/ ) Media and VFP Feature Register 2 */ + uint32_t RESERVED5[1U]; + __OM uint32_t ICIALLU; /*!< Offset: 0x250 ( /W) I-Cache Invalidate All to PoU */ + uint32_t RESERVED6[1U]; + __OM uint32_t ICIMVAU; /*!< Offset: 0x258 ( /W) I-Cache Invalidate by MVA to PoU */ + __OM uint32_t DCIMVAC; /*!< Offset: 0x25C ( /W) D-Cache Invalidate by MVA to PoC */ + __OM uint32_t DCISW; /*!< Offset: 0x260 ( /W) D-Cache Invalidate by Set-way */ + __OM uint32_t DCCMVAU; /*!< Offset: 0x264 ( /W) D-Cache Clean by MVA to PoU */ + __OM uint32_t DCCMVAC; /*!< Offset: 0x268 ( /W) D-Cache Clean by MVA to PoC */ + __OM uint32_t DCCSW; /*!< Offset: 0x26C ( /W) D-Cache Clean by Set-way */ + __OM uint32_t DCCIMVAC; /*!< Offset: 0x270 ( /W) D-Cache Clean and Invalidate by MVA to PoC */ + __OM uint32_t DCCISW; /*!< Offset: 0x274 ( /W) D-Cache Clean and Invalidate by Set-way */ + uint32_t RESERVED7[6U]; + __IOM uint32_t ITCMCR; /*!< Offset: 0x290 (R/W) Instruction Tightly-Coupled Memory Control Register */ + __IOM uint32_t DTCMCR; /*!< Offset: 0x294 (R/W) Data Tightly-Coupled Memory Control Registers */ + __IOM uint32_t AHBPCR; /*!< Offset: 0x298 (R/W) AHBP Control Register */ + __IOM uint32_t CACR; /*!< Offset: 0x29C (R/W) L1 Cache Control Register */ + __IOM uint32_t AHBSCR; /*!< Offset: 0x2A0 (R/W) AHB Slave Control Register */ + uint32_t RESERVED8[1U]; + __IOM uint32_t ABFSR; /*!< Offset: 0x2A8 (R/W) Auxiliary Bus Fault Status Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_PENDNMISET_Pos 31U /*!< SCB ICSR: PENDNMISET Position */ +#define SCB_ICSR_PENDNMISET_Msk (1UL << SCB_ICSR_PENDNMISET_Pos) /*!< SCB ICSR: PENDNMISET Mask */ + +#define SCB_ICSR_NMIPENDSET_Pos SCB_ICSR_PENDNMISET_Pos /*!< SCB ICSR: NMIPENDSET Position, backward compatibility */ +#define SCB_ICSR_NMIPENDSET_Msk SCB_ICSR_PENDNMISET_Msk /*!< SCB ICSR: NMIPENDSET Mask, backward compatibility */ + +#define SCB_ICSR_PENDNMICLR_Pos 30U /*!< SCB ICSR: PENDNMICLR Position */ +#define SCB_ICSR_PENDNMICLR_Msk (1UL << SCB_ICSR_PENDNMICLR_Pos) /*!< SCB ICSR: PENDNMICLR Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_STTNS_Pos 24U /*!< SCB ICSR: STTNS Position (Security Extension) */ +#define SCB_ICSR_STTNS_Msk (1UL << SCB_ICSR_STTNS_Pos) /*!< SCB ICSR: STTNS Mask (Security Extension) */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Vector Table Offset Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_PRIS_Pos 14U /*!< SCB AIRCR: PRIS Position */ +#define SCB_AIRCR_PRIS_Msk (1UL << SCB_AIRCR_PRIS_Pos) /*!< SCB AIRCR: PRIS Mask */ + +#define SCB_AIRCR_BFHFNMINS_Pos 13U /*!< SCB AIRCR: BFHFNMINS Position */ +#define SCB_AIRCR_BFHFNMINS_Msk (1UL << SCB_AIRCR_BFHFNMINS_Pos) /*!< SCB AIRCR: BFHFNMINS Mask */ + +#define SCB_AIRCR_PRIGROUP_Pos 8U /*!< SCB AIRCR: PRIGROUP Position */ +#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ + +#define SCB_AIRCR_SYSRESETREQS_Pos 3U /*!< SCB AIRCR: SYSRESETREQS Position */ +#define SCB_AIRCR_SYSRESETREQS_Msk (1UL << SCB_AIRCR_SYSRESETREQS_Pos) /*!< SCB AIRCR: SYSRESETREQS Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEPS_Pos 3U /*!< SCB SCR: SLEEPDEEPS Position */ +#define SCB_SCR_SLEEPDEEPS_Msk (1UL << SCB_SCR_SLEEPDEEPS_Pos) /*!< SCB SCR: SLEEPDEEPS Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_BP_Pos 18U /*!< SCB CCR: BP Position */ +#define SCB_CCR_BP_Msk (1UL << SCB_CCR_BP_Pos) /*!< SCB CCR: BP Mask */ + +#define SCB_CCR_IC_Pos 17U /*!< SCB CCR: IC Position */ +#define SCB_CCR_IC_Msk (1UL << SCB_CCR_IC_Pos) /*!< SCB CCR: IC Mask */ + +#define SCB_CCR_DC_Pos 16U /*!< SCB CCR: DC Position */ +#define SCB_CCR_DC_Msk (1UL << SCB_CCR_DC_Pos) /*!< SCB CCR: DC Mask */ + +#define SCB_CCR_STKOFHFNMIGN_Pos 10U /*!< SCB CCR: STKOFHFNMIGN Position */ +#define SCB_CCR_STKOFHFNMIGN_Msk (1UL << SCB_CCR_STKOFHFNMIGN_Pos) /*!< SCB CCR: STKOFHFNMIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_HARDFAULTPENDED_Pos 21U /*!< SCB SHCSR: HARDFAULTPENDED Position */ +#define SCB_SHCSR_HARDFAULTPENDED_Msk (1UL << SCB_SHCSR_HARDFAULTPENDED_Pos) /*!< SCB SHCSR: HARDFAULTPENDED Mask */ + +#define SCB_SHCSR_SECUREFAULTPENDED_Pos 20U /*!< SCB SHCSR: SECUREFAULTPENDED Position */ +#define SCB_SHCSR_SECUREFAULTPENDED_Msk (1UL << SCB_SHCSR_SECUREFAULTPENDED_Pos) /*!< SCB SHCSR: SECUREFAULTPENDED Mask */ + +#define SCB_SHCSR_SECUREFAULTENA_Pos 19U /*!< SCB SHCSR: SECUREFAULTENA Position */ +#define SCB_SHCSR_SECUREFAULTENA_Msk (1UL << SCB_SHCSR_SECUREFAULTENA_Pos) /*!< SCB SHCSR: SECUREFAULTENA Mask */ + +#define SCB_SHCSR_USGFAULTENA_Pos 18U /*!< SCB SHCSR: USGFAULTENA Position */ +#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ + +#define SCB_SHCSR_BUSFAULTENA_Pos 17U /*!< SCB SHCSR: BUSFAULTENA Position */ +#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ + +#define SCB_SHCSR_MEMFAULTENA_Pos 16U /*!< SCB SHCSR: MEMFAULTENA Position */ +#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_BUSFAULTPENDED_Pos 14U /*!< SCB SHCSR: BUSFAULTPENDED Position */ +#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ + +#define SCB_SHCSR_MEMFAULTPENDED_Pos 13U /*!< SCB SHCSR: MEMFAULTPENDED Position */ +#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ + +#define SCB_SHCSR_USGFAULTPENDED_Pos 12U /*!< SCB SHCSR: USGFAULTPENDED Position */ +#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_MONITORACT_Pos 8U /*!< SCB SHCSR: MONITORACT Position */ +#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_NMIACT_Pos 5U /*!< SCB SHCSR: NMIACT Position */ +#define SCB_SHCSR_NMIACT_Msk (1UL << SCB_SHCSR_NMIACT_Pos) /*!< SCB SHCSR: NMIACT Mask */ + +#define SCB_SHCSR_SECUREFAULTACT_Pos 4U /*!< SCB SHCSR: SECUREFAULTACT Position */ +#define SCB_SHCSR_SECUREFAULTACT_Msk (1UL << SCB_SHCSR_SECUREFAULTACT_Pos) /*!< SCB SHCSR: SECUREFAULTACT Mask */ + +#define SCB_SHCSR_USGFAULTACT_Pos 3U /*!< SCB SHCSR: USGFAULTACT Position */ +#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ + +#define SCB_SHCSR_HARDFAULTACT_Pos 2U /*!< SCB SHCSR: HARDFAULTACT Position */ +#define SCB_SHCSR_HARDFAULTACT_Msk (1UL << SCB_SHCSR_HARDFAULTACT_Pos) /*!< SCB SHCSR: HARDFAULTACT Mask */ + +#define SCB_SHCSR_BUSFAULTACT_Pos 1U /*!< SCB SHCSR: BUSFAULTACT Position */ +#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ + +#define SCB_SHCSR_MEMFAULTACT_Pos 0U /*!< SCB SHCSR: MEMFAULTACT Position */ +#define SCB_SHCSR_MEMFAULTACT_Msk (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/) /*!< SCB SHCSR: MEMFAULTACT Mask */ + +/* SCB Configurable Fault Status Register Definitions */ +#define SCB_CFSR_USGFAULTSR_Pos 16U /*!< SCB CFSR: Usage Fault Status Register Position */ +#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ + +#define SCB_CFSR_BUSFAULTSR_Pos 8U /*!< SCB CFSR: Bus Fault Status Register Position */ +#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ + +#define SCB_CFSR_MEMFAULTSR_Pos 0U /*!< SCB CFSR: Memory Manage Fault Status Register Position */ +#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ + +/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_MMARVALID_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 7U) /*!< SCB CFSR (MMFSR): MMARVALID Position */ +#define SCB_CFSR_MMARVALID_Msk (1UL << SCB_CFSR_MMARVALID_Pos) /*!< SCB CFSR (MMFSR): MMARVALID Mask */ + +#define SCB_CFSR_MLSPERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 5U) /*!< SCB CFSR (MMFSR): MLSPERR Position */ +#define SCB_CFSR_MLSPERR_Msk (1UL << SCB_CFSR_MLSPERR_Pos) /*!< SCB CFSR (MMFSR): MLSPERR Mask */ + +#define SCB_CFSR_MSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 4U) /*!< SCB CFSR (MMFSR): MSTKERR Position */ +#define SCB_CFSR_MSTKERR_Msk (1UL << SCB_CFSR_MSTKERR_Pos) /*!< SCB CFSR (MMFSR): MSTKERR Mask */ + +#define SCB_CFSR_MUNSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 3U) /*!< SCB CFSR (MMFSR): MUNSTKERR Position */ +#define SCB_CFSR_MUNSTKERR_Msk (1UL << SCB_CFSR_MUNSTKERR_Pos) /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */ + +#define SCB_CFSR_DACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 1U) /*!< SCB CFSR (MMFSR): DACCVIOL Position */ +#define SCB_CFSR_DACCVIOL_Msk (1UL << SCB_CFSR_DACCVIOL_Pos) /*!< SCB CFSR (MMFSR): DACCVIOL Mask */ + +#define SCB_CFSR_IACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 0U) /*!< SCB CFSR (MMFSR): IACCVIOL Position */ +#define SCB_CFSR_IACCVIOL_Msk (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/) /*!< SCB CFSR (MMFSR): IACCVIOL Mask */ + +/* BusFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_BFARVALID_Pos (SCB_CFSR_BUSFAULTSR_Pos + 7U) /*!< SCB CFSR (BFSR): BFARVALID Position */ +#define SCB_CFSR_BFARVALID_Msk (1UL << SCB_CFSR_BFARVALID_Pos) /*!< SCB CFSR (BFSR): BFARVALID Mask */ + +#define SCB_CFSR_LSPERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 5U) /*!< SCB CFSR (BFSR): LSPERR Position */ +#define SCB_CFSR_LSPERR_Msk (1UL << SCB_CFSR_LSPERR_Pos) /*!< SCB CFSR (BFSR): LSPERR Mask */ + +#define SCB_CFSR_STKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 4U) /*!< SCB CFSR (BFSR): STKERR Position */ +#define SCB_CFSR_STKERR_Msk (1UL << SCB_CFSR_STKERR_Pos) /*!< SCB CFSR (BFSR): STKERR Mask */ + +#define SCB_CFSR_UNSTKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 3U) /*!< SCB CFSR (BFSR): UNSTKERR Position */ +#define SCB_CFSR_UNSTKERR_Msk (1UL << SCB_CFSR_UNSTKERR_Pos) /*!< SCB CFSR (BFSR): UNSTKERR Mask */ + +#define SCB_CFSR_IMPRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 2U) /*!< SCB CFSR (BFSR): IMPRECISERR Position */ +#define SCB_CFSR_IMPRECISERR_Msk (1UL << SCB_CFSR_IMPRECISERR_Pos) /*!< SCB CFSR (BFSR): IMPRECISERR Mask */ + +#define SCB_CFSR_PRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 1U) /*!< SCB CFSR (BFSR): PRECISERR Position */ +#define SCB_CFSR_PRECISERR_Msk (1UL << SCB_CFSR_PRECISERR_Pos) /*!< SCB CFSR (BFSR): PRECISERR Mask */ + +#define SCB_CFSR_IBUSERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 0U) /*!< SCB CFSR (BFSR): IBUSERR Position */ +#define SCB_CFSR_IBUSERR_Msk (1UL << SCB_CFSR_IBUSERR_Pos) /*!< SCB CFSR (BFSR): IBUSERR Mask */ + +/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_DIVBYZERO_Pos (SCB_CFSR_USGFAULTSR_Pos + 9U) /*!< SCB CFSR (UFSR): DIVBYZERO Position */ +#define SCB_CFSR_DIVBYZERO_Msk (1UL << SCB_CFSR_DIVBYZERO_Pos) /*!< SCB CFSR (UFSR): DIVBYZERO Mask */ + +#define SCB_CFSR_UNALIGNED_Pos (SCB_CFSR_USGFAULTSR_Pos + 8U) /*!< SCB CFSR (UFSR): UNALIGNED Position */ +#define SCB_CFSR_UNALIGNED_Msk (1UL << SCB_CFSR_UNALIGNED_Pos) /*!< SCB CFSR (UFSR): UNALIGNED Mask */ + +#define SCB_CFSR_STKOF_Pos (SCB_CFSR_USGFAULTSR_Pos + 4U) /*!< SCB CFSR (UFSR): STKOF Position */ +#define SCB_CFSR_STKOF_Msk (1UL << SCB_CFSR_STKOF_Pos) /*!< SCB CFSR (UFSR): STKOF Mask */ + +#define SCB_CFSR_NOCP_Pos (SCB_CFSR_USGFAULTSR_Pos + 3U) /*!< SCB CFSR (UFSR): NOCP Position */ +#define SCB_CFSR_NOCP_Msk (1UL << SCB_CFSR_NOCP_Pos) /*!< SCB CFSR (UFSR): NOCP Mask */ + +#define SCB_CFSR_INVPC_Pos (SCB_CFSR_USGFAULTSR_Pos + 2U) /*!< SCB CFSR (UFSR): INVPC Position */ +#define SCB_CFSR_INVPC_Msk (1UL << SCB_CFSR_INVPC_Pos) /*!< SCB CFSR (UFSR): INVPC Mask */ + +#define SCB_CFSR_INVSTATE_Pos (SCB_CFSR_USGFAULTSR_Pos + 1U) /*!< SCB CFSR (UFSR): INVSTATE Position */ +#define SCB_CFSR_INVSTATE_Msk (1UL << SCB_CFSR_INVSTATE_Pos) /*!< SCB CFSR (UFSR): INVSTATE Mask */ + +#define SCB_CFSR_UNDEFINSTR_Pos (SCB_CFSR_USGFAULTSR_Pos + 0U) /*!< SCB CFSR (UFSR): UNDEFINSTR Position */ +#define SCB_CFSR_UNDEFINSTR_Msk (1UL << SCB_CFSR_UNDEFINSTR_Pos) /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */ + +/* SCB Hard Fault Status Register Definitions */ +#define SCB_HFSR_DEBUGEVT_Pos 31U /*!< SCB HFSR: DEBUGEVT Position */ +#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ + +#define SCB_HFSR_FORCED_Pos 30U /*!< SCB HFSR: FORCED Position */ +#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ + +#define SCB_HFSR_VECTTBL_Pos 1U /*!< SCB HFSR: VECTTBL Position */ +#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ + +/* SCB Debug Fault Status Register Definitions */ +#define SCB_DFSR_EXTERNAL_Pos 4U /*!< SCB DFSR: EXTERNAL Position */ +#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ + +#define SCB_DFSR_VCATCH_Pos 3U /*!< SCB DFSR: VCATCH Position */ +#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ + +#define SCB_DFSR_DWTTRAP_Pos 2U /*!< SCB DFSR: DWTTRAP Position */ +#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ + +#define SCB_DFSR_BKPT_Pos 1U /*!< SCB DFSR: BKPT Position */ +#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ + +#define SCB_DFSR_HALTED_Pos 0U /*!< SCB DFSR: HALTED Position */ +#define SCB_DFSR_HALTED_Msk (1UL /*<< SCB_DFSR_HALTED_Pos*/) /*!< SCB DFSR: HALTED Mask */ + +/* SCB Non-Secure Access Control Register Definitions */ +#define SCB_NSACR_CP11_Pos 11U /*!< SCB NSACR: CP11 Position */ +#define SCB_NSACR_CP11_Msk (1UL << SCB_NSACR_CP11_Pos) /*!< SCB NSACR: CP11 Mask */ + +#define SCB_NSACR_CP10_Pos 10U /*!< SCB NSACR: CP10 Position */ +#define SCB_NSACR_CP10_Msk (1UL << SCB_NSACR_CP10_Pos) /*!< SCB NSACR: CP10 Mask */ + +#define SCB_NSACR_CPn_Pos 0U /*!< SCB NSACR: CPn Position */ +#define SCB_NSACR_CPn_Msk (1UL /*<< SCB_NSACR_CPn_Pos*/) /*!< SCB NSACR: CPn Mask */ + +/* SCB Cache Level ID Register Definitions */ +#define SCB_CLIDR_LOUU_Pos 27U /*!< SCB CLIDR: LoUU Position */ +#define SCB_CLIDR_LOUU_Msk (7UL << SCB_CLIDR_LOUU_Pos) /*!< SCB CLIDR: LoUU Mask */ + +#define SCB_CLIDR_LOC_Pos 24U /*!< SCB CLIDR: LoC Position */ +#define SCB_CLIDR_LOC_Msk (7UL << SCB_CLIDR_LOC_Pos) /*!< SCB CLIDR: LoC Mask */ + +/* SCB Cache Type Register Definitions */ +#define SCB_CTR_FORMAT_Pos 29U /*!< SCB CTR: Format Position */ +#define SCB_CTR_FORMAT_Msk (7UL << SCB_CTR_FORMAT_Pos) /*!< SCB CTR: Format Mask */ + +#define SCB_CTR_CWG_Pos 24U /*!< SCB CTR: CWG Position */ +#define SCB_CTR_CWG_Msk (0xFUL << SCB_CTR_CWG_Pos) /*!< SCB CTR: CWG Mask */ + +#define SCB_CTR_ERG_Pos 20U /*!< SCB CTR: ERG Position */ +#define SCB_CTR_ERG_Msk (0xFUL << SCB_CTR_ERG_Pos) /*!< SCB CTR: ERG Mask */ + +#define SCB_CTR_DMINLINE_Pos 16U /*!< SCB CTR: DminLine Position */ +#define SCB_CTR_DMINLINE_Msk (0xFUL << SCB_CTR_DMINLINE_Pos) /*!< SCB CTR: DminLine Mask */ + +#define SCB_CTR_IMINLINE_Pos 0U /*!< SCB CTR: ImInLine Position */ +#define SCB_CTR_IMINLINE_Msk (0xFUL /*<< SCB_CTR_IMINLINE_Pos*/) /*!< SCB CTR: ImInLine Mask */ + +/* SCB Cache Size ID Register Definitions */ +#define SCB_CCSIDR_WT_Pos 31U /*!< SCB CCSIDR: WT Position */ +#define SCB_CCSIDR_WT_Msk (1UL << SCB_CCSIDR_WT_Pos) /*!< SCB CCSIDR: WT Mask */ + +#define SCB_CCSIDR_WB_Pos 30U /*!< SCB CCSIDR: WB Position */ +#define SCB_CCSIDR_WB_Msk (1UL << SCB_CCSIDR_WB_Pos) /*!< SCB CCSIDR: WB Mask */ + +#define SCB_CCSIDR_RA_Pos 29U /*!< SCB CCSIDR: RA Position */ +#define SCB_CCSIDR_RA_Msk (1UL << SCB_CCSIDR_RA_Pos) /*!< SCB CCSIDR: RA Mask */ + +#define SCB_CCSIDR_WA_Pos 28U /*!< SCB CCSIDR: WA Position */ +#define SCB_CCSIDR_WA_Msk (1UL << SCB_CCSIDR_WA_Pos) /*!< SCB CCSIDR: WA Mask */ + +#define SCB_CCSIDR_NUMSETS_Pos 13U /*!< SCB CCSIDR: NumSets Position */ +#define SCB_CCSIDR_NUMSETS_Msk (0x7FFFUL << SCB_CCSIDR_NUMSETS_Pos) /*!< SCB CCSIDR: NumSets Mask */ + +#define SCB_CCSIDR_ASSOCIATIVITY_Pos 3U /*!< SCB CCSIDR: Associativity Position */ +#define SCB_CCSIDR_ASSOCIATIVITY_Msk (0x3FFUL << SCB_CCSIDR_ASSOCIATIVITY_Pos) /*!< SCB CCSIDR: Associativity Mask */ + +#define SCB_CCSIDR_LINESIZE_Pos 0U /*!< SCB CCSIDR: LineSize Position */ +#define SCB_CCSIDR_LINESIZE_Msk (7UL /*<< SCB_CCSIDR_LINESIZE_Pos*/) /*!< SCB CCSIDR: LineSize Mask */ + +/* SCB Cache Size Selection Register Definitions */ +#define SCB_CSSELR_LEVEL_Pos 1U /*!< SCB CSSELR: Level Position */ +#define SCB_CSSELR_LEVEL_Msk (7UL << SCB_CSSELR_LEVEL_Pos) /*!< SCB CSSELR: Level Mask */ + +#define SCB_CSSELR_IND_Pos 0U /*!< SCB CSSELR: InD Position */ +#define SCB_CSSELR_IND_Msk (1UL /*<< SCB_CSSELR_IND_Pos*/) /*!< SCB CSSELR: InD Mask */ + +/* SCB Software Triggered Interrupt Register Definitions */ +#define SCB_STIR_INTID_Pos 0U /*!< SCB STIR: INTID Position */ +#define SCB_STIR_INTID_Msk (0x1FFUL /*<< SCB_STIR_INTID_Pos*/) /*!< SCB STIR: INTID Mask */ + +/* SCB D-Cache Invalidate by Set-way Register Definitions */ +#define SCB_DCISW_WAY_Pos 30U /*!< SCB DCISW: Way Position */ +#define SCB_DCISW_WAY_Msk (3UL << SCB_DCISW_WAY_Pos) /*!< SCB DCISW: Way Mask */ + +#define SCB_DCISW_SET_Pos 5U /*!< SCB DCISW: Set Position */ +#define SCB_DCISW_SET_Msk (0x1FFUL << SCB_DCISW_SET_Pos) /*!< SCB DCISW: Set Mask */ + +/* SCB D-Cache Clean by Set-way Register Definitions */ +#define SCB_DCCSW_WAY_Pos 30U /*!< SCB DCCSW: Way Position */ +#define SCB_DCCSW_WAY_Msk (3UL << SCB_DCCSW_WAY_Pos) /*!< SCB DCCSW: Way Mask */ + +#define SCB_DCCSW_SET_Pos 5U /*!< SCB DCCSW: Set Position */ +#define SCB_DCCSW_SET_Msk (0x1FFUL << SCB_DCCSW_SET_Pos) /*!< SCB DCCSW: Set Mask */ + +/* SCB D-Cache Clean and Invalidate by Set-way Register Definitions */ +#define SCB_DCCISW_WAY_Pos 30U /*!< SCB DCCISW: Way Position */ +#define SCB_DCCISW_WAY_Msk (3UL << SCB_DCCISW_WAY_Pos) /*!< SCB DCCISW: Way Mask */ + +#define SCB_DCCISW_SET_Pos 5U /*!< SCB DCCISW: Set Position */ +#define SCB_DCCISW_SET_Msk (0x1FFUL << SCB_DCCISW_SET_Pos) /*!< SCB DCCISW: Set Mask */ + +/* Instruction Tightly-Coupled Memory Control Register Definitions */ +#define SCB_ITCMCR_SZ_Pos 3U /*!< SCB ITCMCR: SZ Position */ +#define SCB_ITCMCR_SZ_Msk (0xFUL << SCB_ITCMCR_SZ_Pos) /*!< SCB ITCMCR: SZ Mask */ + +#define SCB_ITCMCR_RETEN_Pos 2U /*!< SCB ITCMCR: RETEN Position */ +#define SCB_ITCMCR_RETEN_Msk (1UL << SCB_ITCMCR_RETEN_Pos) /*!< SCB ITCMCR: RETEN Mask */ + +#define SCB_ITCMCR_RMW_Pos 1U /*!< SCB ITCMCR: RMW Position */ +#define SCB_ITCMCR_RMW_Msk (1UL << SCB_ITCMCR_RMW_Pos) /*!< SCB ITCMCR: RMW Mask */ + +#define SCB_ITCMCR_EN_Pos 0U /*!< SCB ITCMCR: EN Position */ +#define SCB_ITCMCR_EN_Msk (1UL /*<< SCB_ITCMCR_EN_Pos*/) /*!< SCB ITCMCR: EN Mask */ + +/* Data Tightly-Coupled Memory Control Register Definitions */ +#define SCB_DTCMCR_SZ_Pos 3U /*!< SCB DTCMCR: SZ Position */ +#define SCB_DTCMCR_SZ_Msk (0xFUL << SCB_DTCMCR_SZ_Pos) /*!< SCB DTCMCR: SZ Mask */ + +#define SCB_DTCMCR_RETEN_Pos 2U /*!< SCB DTCMCR: RETEN Position */ +#define SCB_DTCMCR_RETEN_Msk (1UL << SCB_DTCMCR_RETEN_Pos) /*!< SCB DTCMCR: RETEN Mask */ + +#define SCB_DTCMCR_RMW_Pos 1U /*!< SCB DTCMCR: RMW Position */ +#define SCB_DTCMCR_RMW_Msk (1UL << SCB_DTCMCR_RMW_Pos) /*!< SCB DTCMCR: RMW Mask */ + +#define SCB_DTCMCR_EN_Pos 0U /*!< SCB DTCMCR: EN Position */ +#define SCB_DTCMCR_EN_Msk (1UL /*<< SCB_DTCMCR_EN_Pos*/) /*!< SCB DTCMCR: EN Mask */ + +/* AHBP Control Register Definitions */ +#define SCB_AHBPCR_SZ_Pos 1U /*!< SCB AHBPCR: SZ Position */ +#define SCB_AHBPCR_SZ_Msk (7UL << SCB_AHBPCR_SZ_Pos) /*!< SCB AHBPCR: SZ Mask */ + +#define SCB_AHBPCR_EN_Pos 0U /*!< SCB AHBPCR: EN Position */ +#define SCB_AHBPCR_EN_Msk (1UL /*<< SCB_AHBPCR_EN_Pos*/) /*!< SCB AHBPCR: EN Mask */ + +/* L1 Cache Control Register Definitions */ +#define SCB_CACR_FORCEWT_Pos 2U /*!< SCB CACR: FORCEWT Position */ +#define SCB_CACR_FORCEWT_Msk (1UL << SCB_CACR_FORCEWT_Pos) /*!< SCB CACR: FORCEWT Mask */ + +#define SCB_CACR_ECCEN_Pos 1U /*!< SCB CACR: ECCEN Position */ +#define SCB_CACR_ECCEN_Msk (1UL << SCB_CACR_ECCEN_Pos) /*!< SCB CACR: ECCEN Mask */ + +#define SCB_CACR_SIWT_Pos 0U /*!< SCB CACR: SIWT Position */ +#define SCB_CACR_SIWT_Msk (1UL /*<< SCB_CACR_SIWT_Pos*/) /*!< SCB CACR: SIWT Mask */ + +/* AHBS Control Register Definitions */ +#define SCB_AHBSCR_INITCOUNT_Pos 11U /*!< SCB AHBSCR: INITCOUNT Position */ +#define SCB_AHBSCR_INITCOUNT_Msk (0x1FUL << SCB_AHBPCR_INITCOUNT_Pos) /*!< SCB AHBSCR: INITCOUNT Mask */ + +#define SCB_AHBSCR_TPRI_Pos 2U /*!< SCB AHBSCR: TPRI Position */ +#define SCB_AHBSCR_TPRI_Msk (0x1FFUL << SCB_AHBPCR_TPRI_Pos) /*!< SCB AHBSCR: TPRI Mask */ + +#define SCB_AHBSCR_CTL_Pos 0U /*!< SCB AHBSCR: CTL Position*/ +#define SCB_AHBSCR_CTL_Msk (3UL /*<< SCB_AHBPCR_CTL_Pos*/) /*!< SCB AHBSCR: CTL Mask */ + +/* Auxiliary Bus Fault Status Register Definitions */ +#define SCB_ABFSR_AXIMTYPE_Pos 8U /*!< SCB ABFSR: AXIMTYPE Position*/ +#define SCB_ABFSR_AXIMTYPE_Msk (3UL << SCB_ABFSR_AXIMTYPE_Pos) /*!< SCB ABFSR: AXIMTYPE Mask */ + +#define SCB_ABFSR_EPPB_Pos 4U /*!< SCB ABFSR: EPPB Position*/ +#define SCB_ABFSR_EPPB_Msk (1UL << SCB_ABFSR_EPPB_Pos) /*!< SCB ABFSR: EPPB Mask */ + +#define SCB_ABFSR_AXIM_Pos 3U /*!< SCB ABFSR: AXIM Position*/ +#define SCB_ABFSR_AXIM_Msk (1UL << SCB_ABFSR_AXIM_Pos) /*!< SCB ABFSR: AXIM Mask */ + +#define SCB_ABFSR_AHBP_Pos 2U /*!< SCB ABFSR: AHBP Position*/ +#define SCB_ABFSR_AHBP_Msk (1UL << SCB_ABFSR_AHBP_Pos) /*!< SCB ABFSR: AHBP Mask */ + +#define SCB_ABFSR_DTCM_Pos 1U /*!< SCB ABFSR: DTCM Position*/ +#define SCB_ABFSR_DTCM_Msk (1UL << SCB_ABFSR_DTCM_Pos) /*!< SCB ABFSR: DTCM Mask */ + +#define SCB_ABFSR_ITCM_Pos 0U /*!< SCB ABFSR: ITCM Position*/ +#define SCB_ABFSR_ITCM_Msk (1UL /*<< SCB_ABFSR_ITCM_Pos*/) /*!< SCB ABFSR: ITCM Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** + \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IM uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */ + __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ + __IOM uint32_t CPPWR; /*!< Offset: 0x00C (R/W) Coprocessor Power Control Register */ +} SCnSCB_Type; + +/* Interrupt Controller Type Register Definitions */ +#define SCnSCB_ICTR_INTLINESNUM_Pos 0U /*!< ICTR: INTLINESNUM Position */ +#define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/) /*!< ICTR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_ITM Instrumentation Trace Macrocell (ITM) + \brief Type definitions for the Instrumentation Trace Macrocell (ITM) + @{ + */ + +/** + \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). + */ +typedef struct +{ + __OM union + { + __OM uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ + __OM uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ + __OM uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ + } PORT [32U]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ + uint32_t RESERVED0[864U]; + __IOM uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ + uint32_t RESERVED1[15U]; + __IOM uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ + uint32_t RESERVED2[15U]; + __IOM uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ + uint32_t RESERVED3[29U]; + __OM uint32_t IWR; /*!< Offset: 0xEF8 ( /W) ITM Integration Write Register */ + __IM uint32_t IRR; /*!< Offset: 0xEFC (R/ ) ITM Integration Read Register */ + __IOM uint32_t IMCR; /*!< Offset: 0xF00 (R/W) ITM Integration Mode Control Register */ + uint32_t RESERVED4[43U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */ + uint32_t RESERVED5[1U]; + __IM uint32_t DEVARCH; /*!< Offset: 0xFBC (R/ ) ITM Device Architecture Register */ + uint32_t RESERVED6[4U]; + __IM uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Register #4 */ + __IM uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Register #5 */ + __IM uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Register #6 */ + __IM uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Register #7 */ + __IM uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Register #0 */ + __IM uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Register #1 */ + __IM uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Register #2 */ + __IM uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Register #3 */ + __IM uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Register #0 */ + __IM uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Register #1 */ + __IM uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Register #2 */ + __IM uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Register #3 */ +} ITM_Type; + +/* ITM Stimulus Port Register Definitions */ +#define ITM_STIM_DISABLED_Pos 1U /*!< ITM STIM: DISABLED Position */ +#define ITM_STIM_DISABLED_Msk (0x1UL << ITM_STIM_DISABLED_Pos) /*!< ITM STIM: DISABLED Mask */ + +#define ITM_STIM_FIFOREADY_Pos 0U /*!< ITM STIM: FIFOREADY Position */ +#define ITM_STIM_FIFOREADY_Msk (0x1UL /*<< ITM_STIM_FIFOREADY_Pos*/) /*!< ITM STIM: FIFOREADY Mask */ + +/* ITM Trace Privilege Register Definitions */ +#define ITM_TPR_PRIVMASK_Pos 0U /*!< ITM TPR: PRIVMASK Position */ +#define ITM_TPR_PRIVMASK_Msk (0xFUL /*<< ITM_TPR_PRIVMASK_Pos*/) /*!< ITM TPR: PRIVMASK Mask */ + +/* ITM Trace Control Register Definitions */ +#define ITM_TCR_BUSY_Pos 23U /*!< ITM TCR: BUSY Position */ +#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ + +#define ITM_TCR_TRACEBUSID_Pos 16U /*!< ITM TCR: ATBID Position */ +#define ITM_TCR_TRACEBUSID_Msk (0x7FUL << ITM_TCR_TRACEBUSID_Pos) /*!< ITM TCR: ATBID Mask */ + +#define ITM_TCR_GTSFREQ_Pos 10U /*!< ITM TCR: Global timestamp frequency Position */ +#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */ + +#define ITM_TCR_TSPRESCALE_Pos 8U /*!< ITM TCR: TSPRESCALE Position */ +#define ITM_TCR_TSPRESCALE_Msk (3UL << ITM_TCR_TSPRESCALE_Pos) /*!< ITM TCR: TSPRESCALE Mask */ + +#define ITM_TCR_STALLENA_Pos 5U /*!< ITM TCR: STALLENA Position */ +#define ITM_TCR_STALLENA_Msk (1UL << ITM_TCR_STALLENA_Pos) /*!< ITM TCR: STALLENA Mask */ + +#define ITM_TCR_SWOENA_Pos 4U /*!< ITM TCR: SWOENA Position */ +#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ + +#define ITM_TCR_DWTENA_Pos 3U /*!< ITM TCR: DWTENA Position */ +#define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ + +#define ITM_TCR_SYNCENA_Pos 2U /*!< ITM TCR: SYNCENA Position */ +#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ + +#define ITM_TCR_TSENA_Pos 1U /*!< ITM TCR: TSENA Position */ +#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ + +#define ITM_TCR_ITMENA_Pos 0U /*!< ITM TCR: ITM Enable bit Position */ +#define ITM_TCR_ITMENA_Msk (1UL /*<< ITM_TCR_ITMENA_Pos*/) /*!< ITM TCR: ITM Enable bit Mask */ + +/* ITM Integration Write Register Definitions */ +#define ITM_IWR_ATVALIDM_Pos 0U /*!< ITM IWR: ATVALIDM Position */ +#define ITM_IWR_ATVALIDM_Msk (1UL /*<< ITM_IWR_ATVALIDM_Pos*/) /*!< ITM IWR: ATVALIDM Mask */ + +/* ITM Integration Read Register Definitions */ +#define ITM_IRR_ATREADYM_Pos 0U /*!< ITM IRR: ATREADYM Position */ +#define ITM_IRR_ATREADYM_Msk (1UL /*<< ITM_IRR_ATREADYM_Pos*/) /*!< ITM IRR: ATREADYM Mask */ + +/* ITM Integration Mode Control Register Definitions */ +#define ITM_IMCR_INTEGRATION_Pos 0U /*!< ITM IMCR: INTEGRATION Position */ +#define ITM_IMCR_INTEGRATION_Msk (1UL /*<< ITM_IMCR_INTEGRATION_Pos*/) /*!< ITM IMCR: INTEGRATION Mask */ + +/* ITM Lock Status Register Definitions */ +#define ITM_LSR_ByteAcc_Pos 2U /*!< ITM LSR: ByteAcc Position */ +#define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ + +#define ITM_LSR_Access_Pos 1U /*!< ITM LSR: Access Position */ +#define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ + +#define ITM_LSR_Present_Pos 0U /*!< ITM LSR: Present Position */ +#define ITM_LSR_Present_Msk (1UL /*<< ITM_LSR_Present_Pos*/) /*!< ITM LSR: Present Mask */ + +/*@}*/ /* end of group CMSIS_ITM */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + __IOM uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */ + __IOM uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */ + __IOM uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Register */ + __IOM uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */ + __IOM uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */ + __IOM uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Register */ + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + uint32_t RESERVED3[1U]; + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED4[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + uint32_t RESERVED5[1U]; + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED6[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + uint32_t RESERVED7[1U]; + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ + uint32_t RESERVED8[1U]; + __IOM uint32_t COMP4; /*!< Offset: 0x060 (R/W) Comparator Register 4 */ + uint32_t RESERVED9[1U]; + __IOM uint32_t FUNCTION4; /*!< Offset: 0x068 (R/W) Function Register 4 */ + uint32_t RESERVED10[1U]; + __IOM uint32_t COMP5; /*!< Offset: 0x070 (R/W) Comparator Register 5 */ + uint32_t RESERVED11[1U]; + __IOM uint32_t FUNCTION5; /*!< Offset: 0x078 (R/W) Function Register 5 */ + uint32_t RESERVED12[1U]; + __IOM uint32_t COMP6; /*!< Offset: 0x080 (R/W) Comparator Register 6 */ + uint32_t RESERVED13[1U]; + __IOM uint32_t FUNCTION6; /*!< Offset: 0x088 (R/W) Function Register 6 */ + uint32_t RESERVED14[1U]; + __IOM uint32_t COMP7; /*!< Offset: 0x090 (R/W) Comparator Register 7 */ + uint32_t RESERVED15[1U]; + __IOM uint32_t FUNCTION7; /*!< Offset: 0x098 (R/W) Function Register 7 */ + uint32_t RESERVED16[1U]; + __IOM uint32_t COMP8; /*!< Offset: 0x0A0 (R/W) Comparator Register 8 */ + uint32_t RESERVED17[1U]; + __IOM uint32_t FUNCTION8; /*!< Offset: 0x0A8 (R/W) Function Register 8 */ + uint32_t RESERVED18[1U]; + __IOM uint32_t COMP9; /*!< Offset: 0x0B0 (R/W) Comparator Register 9 */ + uint32_t RESERVED19[1U]; + __IOM uint32_t FUNCTION9; /*!< Offset: 0x0B8 (R/W) Function Register 9 */ + uint32_t RESERVED20[1U]; + __IOM uint32_t COMP10; /*!< Offset: 0x0C0 (R/W) Comparator Register 10 */ + uint32_t RESERVED21[1U]; + __IOM uint32_t FUNCTION10; /*!< Offset: 0x0C8 (R/W) Function Register 10 */ + uint32_t RESERVED22[1U]; + __IOM uint32_t COMP11; /*!< Offset: 0x0D0 (R/W) Comparator Register 11 */ + uint32_t RESERVED23[1U]; + __IOM uint32_t FUNCTION11; /*!< Offset: 0x0D8 (R/W) Function Register 11 */ + uint32_t RESERVED24[1U]; + __IOM uint32_t COMP12; /*!< Offset: 0x0E0 (R/W) Comparator Register 12 */ + uint32_t RESERVED25[1U]; + __IOM uint32_t FUNCTION12; /*!< Offset: 0x0E8 (R/W) Function Register 12 */ + uint32_t RESERVED26[1U]; + __IOM uint32_t COMP13; /*!< Offset: 0x0F0 (R/W) Comparator Register 13 */ + uint32_t RESERVED27[1U]; + __IOM uint32_t FUNCTION13; /*!< Offset: 0x0F8 (R/W) Function Register 13 */ + uint32_t RESERVED28[1U]; + __IOM uint32_t COMP14; /*!< Offset: 0x100 (R/W) Comparator Register 14 */ + uint32_t RESERVED29[1U]; + __IOM uint32_t FUNCTION14; /*!< Offset: 0x108 (R/W) Function Register 14 */ + uint32_t RESERVED30[1U]; + __IOM uint32_t COMP15; /*!< Offset: 0x110 (R/W) Comparator Register 15 */ + uint32_t RESERVED31[1U]; + __IOM uint32_t FUNCTION15; /*!< Offset: 0x118 (R/W) Function Register 15 */ + uint32_t RESERVED32[934U]; + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R ) Lock Status Register */ + uint32_t RESERVED33[1U]; + __IM uint32_t DEVARCH; /*!< Offset: 0xFBC (R/ ) Device Architecture Register */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +#define DWT_CTRL_CYCDISS_Pos 23U /*!< DWT CTRL: CYCDISS Position */ +#define DWT_CTRL_CYCDISS_Msk (0x1UL << DWT_CTRL_CYCDISS_Pos) /*!< DWT CTRL: CYCDISS Mask */ + +#define DWT_CTRL_CYCEVTENA_Pos 22U /*!< DWT CTRL: CYCEVTENA Position */ +#define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTRL: CYCEVTENA Mask */ + +#define DWT_CTRL_FOLDEVTENA_Pos 21U /*!< DWT CTRL: FOLDEVTENA Position */ +#define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTRL: FOLDEVTENA Mask */ + +#define DWT_CTRL_LSUEVTENA_Pos 20U /*!< DWT CTRL: LSUEVTENA Position */ +#define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTRL: LSUEVTENA Mask */ + +#define DWT_CTRL_SLEEPEVTENA_Pos 19U /*!< DWT CTRL: SLEEPEVTENA Position */ +#define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTRL: SLEEPEVTENA Mask */ + +#define DWT_CTRL_EXCEVTENA_Pos 18U /*!< DWT CTRL: EXCEVTENA Position */ +#define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTRL: EXCEVTENA Mask */ + +#define DWT_CTRL_CPIEVTENA_Pos 17U /*!< DWT CTRL: CPIEVTENA Position */ +#define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTRL: CPIEVTENA Mask */ + +#define DWT_CTRL_EXCTRCENA_Pos 16U /*!< DWT CTRL: EXCTRCENA Position */ +#define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTRL: EXCTRCENA Mask */ + +#define DWT_CTRL_PCSAMPLENA_Pos 12U /*!< DWT CTRL: PCSAMPLENA Position */ +#define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTRL: PCSAMPLENA Mask */ + +#define DWT_CTRL_SYNCTAP_Pos 10U /*!< DWT CTRL: SYNCTAP Position */ +#define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTRL: SYNCTAP Mask */ + +#define DWT_CTRL_CYCTAP_Pos 9U /*!< DWT CTRL: CYCTAP Position */ +#define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTRL: CYCTAP Mask */ + +#define DWT_CTRL_POSTINIT_Pos 5U /*!< DWT CTRL: POSTINIT Position */ +#define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTRL: POSTINIT Mask */ + +#define DWT_CTRL_POSTPRESET_Pos 1U /*!< DWT CTRL: POSTPRESET Position */ +#define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTRL: POSTPRESET Mask */ + +#define DWT_CTRL_CYCCNTENA_Pos 0U /*!< DWT CTRL: CYCCNTENA Position */ +#define DWT_CTRL_CYCCNTENA_Msk (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/) /*!< DWT CTRL: CYCCNTENA Mask */ + +/* DWT CPI Count Register Definitions */ +#define DWT_CPICNT_CPICNT_Pos 0U /*!< DWT CPICNT: CPICNT Position */ +#define DWT_CPICNT_CPICNT_Msk (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/) /*!< DWT CPICNT: CPICNT Mask */ + +/* DWT Exception Overhead Count Register Definitions */ +#define DWT_EXCCNT_EXCCNT_Pos 0U /*!< DWT EXCCNT: EXCCNT Position */ +#define DWT_EXCCNT_EXCCNT_Msk (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/) /*!< DWT EXCCNT: EXCCNT Mask */ + +/* DWT Sleep Count Register Definitions */ +#define DWT_SLEEPCNT_SLEEPCNT_Pos 0U /*!< DWT SLEEPCNT: SLEEPCNT Position */ +#define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/) /*!< DWT SLEEPCNT: SLEEPCNT Mask */ + +/* DWT LSU Count Register Definitions */ +#define DWT_LSUCNT_LSUCNT_Pos 0U /*!< DWT LSUCNT: LSUCNT Position */ +#define DWT_LSUCNT_LSUCNT_Msk (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/) /*!< DWT LSUCNT: LSUCNT Mask */ + +/* DWT Folded-instruction Count Register Definitions */ +#define DWT_FOLDCNT_FOLDCNT_Pos 0U /*!< DWT FOLDCNT: FOLDCNT Position */ +#define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/) /*!< DWT FOLDCNT: FOLDCNT Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_ID_Pos 27U /*!< DWT FUNCTION: ID Position */ +#define DWT_FUNCTION_ID_Msk (0x1FUL << DWT_FUNCTION_ID_Pos) /*!< DWT FUNCTION: ID Mask */ + +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_ACTION_Pos 4U /*!< DWT FUNCTION: ACTION Position */ +#define DWT_FUNCTION_ACTION_Msk (0x1UL << DWT_FUNCTION_ACTION_Pos) /*!< DWT FUNCTION: ACTION Mask */ + +#define DWT_FUNCTION_MATCH_Pos 0U /*!< DWT FUNCTION: MATCH Position */ +#define DWT_FUNCTION_MATCH_Msk (0xFUL /*<< DWT_FUNCTION_MATCH_Pos*/) /*!< DWT FUNCTION: MATCH Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Sizes Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Sizes Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IM uint32_t FSCR; /*!< Offset: 0x308 (R/ ) Formatter Synchronization Counter Register */ + uint32_t RESERVED3[759U]; + __IM uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER */ + __IM uint32_t FIFO0; /*!< Offset: 0xEEC (R/ ) Integration ETM Data */ + __IM uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/ ) ITATBCTR2 */ + uint32_t RESERVED4[1U]; + __IM uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) ITATBCTR0 */ + __IM uint32_t FIFO1; /*!< Offset: 0xEFC (R/ ) Integration ITM Data */ + __IOM uint32_t ITCTRL; /*!< Offset: 0xF00 (R/W) Integration Mode Control */ + uint32_t RESERVED5[39U]; + __IOM uint32_t CLAIMSET; /*!< Offset: 0xFA0 (R/W) Claim tag set */ + __IOM uint32_t CLAIMCLR; /*!< Offset: 0xFA4 (R/W) Claim tag clear */ + uint32_t RESERVED7[8U]; + __IM uint32_t DEVID; /*!< Offset: 0xFC8 (R/ ) TPIU_DEVID */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) TPIU_DEVTYPE */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_PRESCALER_Pos 0U /*!< TPI ACPR: PRESCALER Position */ +#define TPI_ACPR_PRESCALER_Msk (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/) /*!< TPI ACPR: PRESCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */ +#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ + +/* TPI TRIGGER Register Definitions */ +#define TPI_TRIGGER_TRIGGER_Pos 0U /*!< TPI TRIGGER: TRIGGER Position */ +#define TPI_TRIGGER_TRIGGER_Msk (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/) /*!< TPI TRIGGER: TRIGGER Mask */ + +/* TPI Integration ETM Data Register Definitions (FIFO0) */ +#define TPI_FIFO0_ITM_ATVALID_Pos 29U /*!< TPI FIFO0: ITM_ATVALID Position */ +#define TPI_FIFO0_ITM_ATVALID_Msk (0x3UL << TPI_FIFO0_ITM_ATVALID_Pos) /*!< TPI FIFO0: ITM_ATVALID Mask */ + +#define TPI_FIFO0_ITM_bytecount_Pos 27U /*!< TPI FIFO0: ITM_bytecount Position */ +#define TPI_FIFO0_ITM_bytecount_Msk (0x3UL << TPI_FIFO0_ITM_bytecount_Pos) /*!< TPI FIFO0: ITM_bytecount Mask */ + +#define TPI_FIFO0_ETM_ATVALID_Pos 26U /*!< TPI FIFO0: ETM_ATVALID Position */ +#define TPI_FIFO0_ETM_ATVALID_Msk (0x3UL << TPI_FIFO0_ETM_ATVALID_Pos) /*!< TPI FIFO0: ETM_ATVALID Mask */ + +#define TPI_FIFO0_ETM_bytecount_Pos 24U /*!< TPI FIFO0: ETM_bytecount Position */ +#define TPI_FIFO0_ETM_bytecount_Msk (0x3UL << TPI_FIFO0_ETM_bytecount_Pos) /*!< TPI FIFO0: ETM_bytecount Mask */ + +#define TPI_FIFO0_ETM2_Pos 16U /*!< TPI FIFO0: ETM2 Position */ +#define TPI_FIFO0_ETM2_Msk (0xFFUL << TPI_FIFO0_ETM2_Pos) /*!< TPI FIFO0: ETM2 Mask */ + +#define TPI_FIFO0_ETM1_Pos 8U /*!< TPI FIFO0: ETM1 Position */ +#define TPI_FIFO0_ETM1_Msk (0xFFUL << TPI_FIFO0_ETM1_Pos) /*!< TPI FIFO0: ETM1 Mask */ + +#define TPI_FIFO0_ETM0_Pos 0U /*!< TPI FIFO0: ETM0 Position */ +#define TPI_FIFO0_ETM0_Msk (0xFFUL /*<< TPI_FIFO0_ETM0_Pos*/) /*!< TPI FIFO0: ETM0 Mask */ + +/* TPI ITATBCTR2 Register Definitions */ +#define TPI_ITATBCTR2_ATREADY_Pos 0U /*!< TPI ITATBCTR2: ATREADY Position */ +#define TPI_ITATBCTR2_ATREADY_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY_Pos*/) /*!< TPI ITATBCTR2: ATREADY Mask */ + +/* TPI Integration ITM Data Register Definitions (FIFO1) */ +#define TPI_FIFO1_ITM_ATVALID_Pos 29U /*!< TPI FIFO1: ITM_ATVALID Position */ +#define TPI_FIFO1_ITM_ATVALID_Msk (0x3UL << TPI_FIFO1_ITM_ATVALID_Pos) /*!< TPI FIFO1: ITM_ATVALID Mask */ + +#define TPI_FIFO1_ITM_bytecount_Pos 27U /*!< TPI FIFO1: ITM_bytecount Position */ +#define TPI_FIFO1_ITM_bytecount_Msk (0x3UL << TPI_FIFO1_ITM_bytecount_Pos) /*!< TPI FIFO1: ITM_bytecount Mask */ + +#define TPI_FIFO1_ETM_ATVALID_Pos 26U /*!< TPI FIFO1: ETM_ATVALID Position */ +#define TPI_FIFO1_ETM_ATVALID_Msk (0x3UL << TPI_FIFO1_ETM_ATVALID_Pos) /*!< TPI FIFO1: ETM_ATVALID Mask */ + +#define TPI_FIFO1_ETM_bytecount_Pos 24U /*!< TPI FIFO1: ETM_bytecount Position */ +#define TPI_FIFO1_ETM_bytecount_Msk (0x3UL << TPI_FIFO1_ETM_bytecount_Pos) /*!< TPI FIFO1: ETM_bytecount Mask */ + +#define TPI_FIFO1_ITM2_Pos 16U /*!< TPI FIFO1: ITM2 Position */ +#define TPI_FIFO1_ITM2_Msk (0xFFUL << TPI_FIFO1_ITM2_Pos) /*!< TPI FIFO1: ITM2 Mask */ + +#define TPI_FIFO1_ITM1_Pos 8U /*!< TPI FIFO1: ITM1 Position */ +#define TPI_FIFO1_ITM1_Msk (0xFFUL << TPI_FIFO1_ITM1_Pos) /*!< TPI FIFO1: ITM1 Mask */ + +#define TPI_FIFO1_ITM0_Pos 0U /*!< TPI FIFO1: ITM0 Position */ +#define TPI_FIFO1_ITM0_Msk (0xFFUL /*<< TPI_FIFO1_ITM0_Pos*/) /*!< TPI FIFO1: ITM0 Mask */ + +/* TPI ITATBCTR0 Register Definitions */ +#define TPI_ITATBCTR0_ATREADY_Pos 0U /*!< TPI ITATBCTR0: ATREADY Position */ +#define TPI_ITATBCTR0_ATREADY_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY_Pos*/) /*!< TPI ITATBCTR0: ATREADY Mask */ + +/* TPI Integration Mode Control Register Definitions */ +#define TPI_ITCTRL_Mode_Pos 0U /*!< TPI ITCTRL: Mode Position */ +#define TPI_ITCTRL_Mode_Msk (0x1UL /*<< TPI_ITCTRL_Mode_Pos*/) /*!< TPI ITCTRL: Mode Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_MinBufSz_Pos 6U /*!< TPI DEVID: MinBufSz Position */ +#define TPI_DEVID_MinBufSz_Msk (0x7UL << TPI_DEVID_MinBufSz_Pos) /*!< TPI DEVID: MinBufSz Mask */ + +#define TPI_DEVID_AsynClkIn_Pos 5U /*!< TPI DEVID: AsynClkIn Position */ +#define TPI_DEVID_AsynClkIn_Msk (0x1UL << TPI_DEVID_AsynClkIn_Pos) /*!< TPI DEVID: AsynClkIn Mask */ + +#define TPI_DEVID_NrTraceInput_Pos 0U /*!< TPI DEVID: NrTraceInput Position */ +#define TPI_DEVID_NrTraceInput_Msk (0x1FUL /*<< TPI_DEVID_NrTraceInput_Pos*/) /*!< TPI DEVID: NrTraceInput Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_MajorType_Pos 4U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +#define TPI_DEVTYPE_SubType_Pos 0U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) MPU Region Limit Address Register */ + __IOM uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Region Base Address Register Alias 1 */ + __IOM uint32_t RLAR_A1; /*!< Offset: 0x018 (R/W) MPU Region Limit Address Register Alias 1 */ + __IOM uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Region Base Address Register Alias 2 */ + __IOM uint32_t RLAR_A2; /*!< Offset: 0x020 (R/W) MPU Region Limit Address Register Alias 2 */ + __IOM uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Region Base Address Register Alias 3 */ + __IOM uint32_t RLAR_A3; /*!< Offset: 0x028 (R/W) MPU Region Limit Address Register Alias 3 */ + uint32_t RESERVED0[1]; + union { + __IOM uint32_t MAIR[2]; + struct { + __IOM uint32_t MAIR0; /*!< Offset: 0x030 (R/W) MPU Memory Attribute Indirection Register 0 */ + __IOM uint32_t MAIR1; /*!< Offset: 0x034 (R/W) MPU Memory Attribute Indirection Register 1 */ + }; + }; +} MPU_Type; + +#define MPU_TYPE_RALIASES 4U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_ADDR_Pos 5U /*!< MPU RBAR: ADDR Position */ +#define MPU_RBAR_ADDR_Msk (0x7FFFFFFUL << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */ + +#define MPU_RBAR_SH_Pos 3U /*!< MPU RBAR: SH Position */ +#define MPU_RBAR_SH_Msk (0x3UL << MPU_RBAR_SH_Pos) /*!< MPU RBAR: SH Mask */ + +#define MPU_RBAR_AP_Pos 1U /*!< MPU RBAR: AP Position */ +#define MPU_RBAR_AP_Msk (0x3UL << MPU_RBAR_AP_Pos) /*!< MPU RBAR: AP Mask */ + +#define MPU_RBAR_XN_Pos 0U /*!< MPU RBAR: XN Position */ +#define MPU_RBAR_XN_Msk (01UL /*<< MPU_RBAR_XN_Pos*/) /*!< MPU RBAR: XN Mask */ + +/* MPU Region Limit Address Register Definitions */ +#define MPU_RLAR_LIMIT_Pos 5U /*!< MPU RLAR: LIMIT Position */ +#define MPU_RLAR_LIMIT_Msk (0x7FFFFFFUL << MPU_RLAR_LIMIT_Pos) /*!< MPU RLAR: LIMIT Mask */ + +#define MPU_RLAR_PXN_Pos 4U /*!< MPU RLAR: PXN Position */ +#define MPU_RLAR_PXN_Msk (0x1UL << MPU_RLAR_PXN_Pos) /*!< MPU RLAR: PXN Mask */ + +#define MPU_RLAR_AttrIndx_Pos 1U /*!< MPU RLAR: AttrIndx Position */ +#define MPU_RLAR_AttrIndx_Msk (0x7UL << MPU_RLAR_AttrIndx_Pos) /*!< MPU RLAR: AttrIndx Mask */ + +#define MPU_RLAR_EN_Pos 0U /*!< MPU RLAR: Region enable bit Position */ +#define MPU_RLAR_EN_Msk (1UL /*<< MPU_RLAR_EN_Pos*/) /*!< MPU RLAR: Region enable bit Disable Mask */ + +/* MPU Memory Attribute Indirection Register 0 Definitions */ +#define MPU_MAIR0_Attr3_Pos 24U /*!< MPU MAIR0: Attr3 Position */ +#define MPU_MAIR0_Attr3_Msk (0xFFUL << MPU_MAIR0_Attr3_Pos) /*!< MPU MAIR0: Attr3 Mask */ + +#define MPU_MAIR0_Attr2_Pos 16U /*!< MPU MAIR0: Attr2 Position */ +#define MPU_MAIR0_Attr2_Msk (0xFFUL << MPU_MAIR0_Attr2_Pos) /*!< MPU MAIR0: Attr2 Mask */ + +#define MPU_MAIR0_Attr1_Pos 8U /*!< MPU MAIR0: Attr1 Position */ +#define MPU_MAIR0_Attr1_Msk (0xFFUL << MPU_MAIR0_Attr1_Pos) /*!< MPU MAIR0: Attr1 Mask */ + +#define MPU_MAIR0_Attr0_Pos 0U /*!< MPU MAIR0: Attr0 Position */ +#define MPU_MAIR0_Attr0_Msk (0xFFUL /*<< MPU_MAIR0_Attr0_Pos*/) /*!< MPU MAIR0: Attr0 Mask */ + +/* MPU Memory Attribute Indirection Register 1 Definitions */ +#define MPU_MAIR1_Attr7_Pos 24U /*!< MPU MAIR1: Attr7 Position */ +#define MPU_MAIR1_Attr7_Msk (0xFFUL << MPU_MAIR1_Attr7_Pos) /*!< MPU MAIR1: Attr7 Mask */ + +#define MPU_MAIR1_Attr6_Pos 16U /*!< MPU MAIR1: Attr6 Position */ +#define MPU_MAIR1_Attr6_Msk (0xFFUL << MPU_MAIR1_Attr6_Pos) /*!< MPU MAIR1: Attr6 Mask */ + +#define MPU_MAIR1_Attr5_Pos 8U /*!< MPU MAIR1: Attr5 Position */ +#define MPU_MAIR1_Attr5_Msk (0xFFUL << MPU_MAIR1_Attr5_Pos) /*!< MPU MAIR1: Attr5 Mask */ + +#define MPU_MAIR1_Attr4_Pos 0U /*!< MPU MAIR1: Attr4 Position */ +#define MPU_MAIR1_Attr4_Msk (0xFFUL /*<< MPU_MAIR1_Attr4_Pos*/) /*!< MPU MAIR1: Attr4 Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SAU Security Attribution Unit (SAU) + \brief Type definitions for the Security Attribution Unit (SAU) + @{ + */ + +/** + \brief Structure type to access the Security Attribution Unit (SAU). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SAU Control Register */ + __IM uint32_t TYPE; /*!< Offset: 0x004 (R/ ) SAU Type Register */ +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) SAU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) SAU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) SAU Region Limit Address Register */ +#else + uint32_t RESERVED0[3]; +#endif + __IOM uint32_t SFSR; /*!< Offset: 0x014 (R/W) Secure Fault Status Register */ + __IOM uint32_t SFAR; /*!< Offset: 0x018 (R/W) Secure Fault Address Register */ +} SAU_Type; + +/* SAU Control Register Definitions */ +#define SAU_CTRL_ALLNS_Pos 1U /*!< SAU CTRL: ALLNS Position */ +#define SAU_CTRL_ALLNS_Msk (1UL << SAU_CTRL_ALLNS_Pos) /*!< SAU CTRL: ALLNS Mask */ + +#define SAU_CTRL_ENABLE_Pos 0U /*!< SAU CTRL: ENABLE Position */ +#define SAU_CTRL_ENABLE_Msk (1UL /*<< SAU_CTRL_ENABLE_Pos*/) /*!< SAU CTRL: ENABLE Mask */ + +/* SAU Type Register Definitions */ +#define SAU_TYPE_SREGION_Pos 0U /*!< SAU TYPE: SREGION Position */ +#define SAU_TYPE_SREGION_Msk (0xFFUL /*<< SAU_TYPE_SREGION_Pos*/) /*!< SAU TYPE: SREGION Mask */ + +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) +/* SAU Region Number Register Definitions */ +#define SAU_RNR_REGION_Pos 0U /*!< SAU RNR: REGION Position */ +#define SAU_RNR_REGION_Msk (0xFFUL /*<< SAU_RNR_REGION_Pos*/) /*!< SAU RNR: REGION Mask */ + +/* SAU Region Base Address Register Definitions */ +#define SAU_RBAR_BADDR_Pos 5U /*!< SAU RBAR: BADDR Position */ +#define SAU_RBAR_BADDR_Msk (0x7FFFFFFUL << SAU_RBAR_BADDR_Pos) /*!< SAU RBAR: BADDR Mask */ + +/* SAU Region Limit Address Register Definitions */ +#define SAU_RLAR_LADDR_Pos 5U /*!< SAU RLAR: LADDR Position */ +#define SAU_RLAR_LADDR_Msk (0x7FFFFFFUL << SAU_RLAR_LADDR_Pos) /*!< SAU RLAR: LADDR Mask */ + +#define SAU_RLAR_NSC_Pos 1U /*!< SAU RLAR: NSC Position */ +#define SAU_RLAR_NSC_Msk (1UL << SAU_RLAR_NSC_Pos) /*!< SAU RLAR: NSC Mask */ + +#define SAU_RLAR_ENABLE_Pos 0U /*!< SAU RLAR: ENABLE Position */ +#define SAU_RLAR_ENABLE_Msk (1UL /*<< SAU_RLAR_ENABLE_Pos*/) /*!< SAU RLAR: ENABLE Mask */ + +#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */ + +/* Secure Fault Status Register Definitions */ +#define SAU_SFSR_LSERR_Pos 7U /*!< SAU SFSR: LSERR Position */ +#define SAU_SFSR_LSERR_Msk (1UL << SAU_SFSR_LSERR_Pos) /*!< SAU SFSR: LSERR Mask */ + +#define SAU_SFSR_SFARVALID_Pos 6U /*!< SAU SFSR: SFARVALID Position */ +#define SAU_SFSR_SFARVALID_Msk (1UL << SAU_SFSR_SFARVALID_Pos) /*!< SAU SFSR: SFARVALID Mask */ + +#define SAU_SFSR_LSPERR_Pos 5U /*!< SAU SFSR: LSPERR Position */ +#define SAU_SFSR_LSPERR_Msk (1UL << SAU_SFSR_LSPERR_Pos) /*!< SAU SFSR: LSPERR Mask */ + +#define SAU_SFSR_INVTRAN_Pos 4U /*!< SAU SFSR: INVTRAN Position */ +#define SAU_SFSR_INVTRAN_Msk (1UL << SAU_SFSR_INVTRAN_Pos) /*!< SAU SFSR: INVTRAN Mask */ + +#define SAU_SFSR_AUVIOL_Pos 3U /*!< SAU SFSR: AUVIOL Position */ +#define SAU_SFSR_AUVIOL_Msk (1UL << SAU_SFSR_AUVIOL_Pos) /*!< SAU SFSR: AUVIOL Mask */ + +#define SAU_SFSR_INVER_Pos 2U /*!< SAU SFSR: INVER Position */ +#define SAU_SFSR_INVER_Msk (1UL << SAU_SFSR_INVER_Pos) /*!< SAU SFSR: INVER Mask */ + +#define SAU_SFSR_INVIS_Pos 1U /*!< SAU SFSR: INVIS Position */ +#define SAU_SFSR_INVIS_Msk (1UL << SAU_SFSR_INVIS_Pos) /*!< SAU SFSR: INVIS Mask */ + +#define SAU_SFSR_INVEP_Pos 0U /*!< SAU SFSR: INVEP Position */ +#define SAU_SFSR_INVEP_Msk (1UL /*<< SAU_SFSR_INVEP_Pos*/) /*!< SAU SFSR: INVEP Mask */ + +/*@} end of group CMSIS_SAU */ +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_FPU Floating Point Unit (FPU) + \brief Type definitions for the Floating Point Unit (FPU) + @{ + */ + +/** + \brief Structure type to access the Floating Point Unit (FPU). + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IOM uint32_t FPCCR; /*!< Offset: 0x004 (R/W) Floating-Point Context Control Register */ + __IOM uint32_t FPCAR; /*!< Offset: 0x008 (R/W) Floating-Point Context Address Register */ + __IOM uint32_t FPDSCR; /*!< Offset: 0x00C (R/W) Floating-Point Default Status Control Register */ + __IM uint32_t MVFR0; /*!< Offset: 0x010 (R/ ) Media and FP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x014 (R/ ) Media and FP Feature Register 1 */ +} FPU_Type; + +/* Floating-Point Context Control Register Definitions */ +#define FPU_FPCCR_ASPEN_Pos 31U /*!< FPCCR: ASPEN bit Position */ +#define FPU_FPCCR_ASPEN_Msk (1UL << FPU_FPCCR_ASPEN_Pos) /*!< FPCCR: ASPEN bit Mask */ + +#define FPU_FPCCR_LSPEN_Pos 30U /*!< FPCCR: LSPEN Position */ +#define FPU_FPCCR_LSPEN_Msk (1UL << FPU_FPCCR_LSPEN_Pos) /*!< FPCCR: LSPEN bit Mask */ + +#define FPU_FPCCR_LSPENS_Pos 29U /*!< FPCCR: LSPENS Position */ +#define FPU_FPCCR_LSPENS_Msk (1UL << FPU_FPCCR_LSPENS_Pos) /*!< FPCCR: LSPENS bit Mask */ + +#define FPU_FPCCR_CLRONRET_Pos 28U /*!< FPCCR: CLRONRET Position */ +#define FPU_FPCCR_CLRONRET_Msk (1UL << FPU_FPCCR_CLRONRET_Pos) /*!< FPCCR: CLRONRET bit Mask */ + +#define FPU_FPCCR_CLRONRETS_Pos 27U /*!< FPCCR: CLRONRETS Position */ +#define FPU_FPCCR_CLRONRETS_Msk (1UL << FPU_FPCCR_CLRONRETS_Pos) /*!< FPCCR: CLRONRETS bit Mask */ + +#define FPU_FPCCR_TS_Pos 26U /*!< FPCCR: TS Position */ +#define FPU_FPCCR_TS_Msk (1UL << FPU_FPCCR_TS_Pos) /*!< FPCCR: TS bit Mask */ + +#define FPU_FPCCR_UFRDY_Pos 10U /*!< FPCCR: UFRDY Position */ +#define FPU_FPCCR_UFRDY_Msk (1UL << FPU_FPCCR_UFRDY_Pos) /*!< FPCCR: UFRDY bit Mask */ + +#define FPU_FPCCR_SPLIMVIOL_Pos 9U /*!< FPCCR: SPLIMVIOL Position */ +#define FPU_FPCCR_SPLIMVIOL_Msk (1UL << FPU_FPCCR_SPLIMVIOL_Pos) /*!< FPCCR: SPLIMVIOL bit Mask */ + +#define FPU_FPCCR_MONRDY_Pos 8U /*!< FPCCR: MONRDY Position */ +#define FPU_FPCCR_MONRDY_Msk (1UL << FPU_FPCCR_MONRDY_Pos) /*!< FPCCR: MONRDY bit Mask */ + +#define FPU_FPCCR_SFRDY_Pos 7U /*!< FPCCR: SFRDY Position */ +#define FPU_FPCCR_SFRDY_Msk (1UL << FPU_FPCCR_SFRDY_Pos) /*!< FPCCR: SFRDY bit Mask */ + +#define FPU_FPCCR_BFRDY_Pos 6U /*!< FPCCR: BFRDY Position */ +#define FPU_FPCCR_BFRDY_Msk (1UL << FPU_FPCCR_BFRDY_Pos) /*!< FPCCR: BFRDY bit Mask */ + +#define FPU_FPCCR_MMRDY_Pos 5U /*!< FPCCR: MMRDY Position */ +#define FPU_FPCCR_MMRDY_Msk (1UL << FPU_FPCCR_MMRDY_Pos) /*!< FPCCR: MMRDY bit Mask */ + +#define FPU_FPCCR_HFRDY_Pos 4U /*!< FPCCR: HFRDY Position */ +#define FPU_FPCCR_HFRDY_Msk (1UL << FPU_FPCCR_HFRDY_Pos) /*!< FPCCR: HFRDY bit Mask */ + +#define FPU_FPCCR_THREAD_Pos 3U /*!< FPCCR: processor mode bit Position */ +#define FPU_FPCCR_THREAD_Msk (1UL << FPU_FPCCR_THREAD_Pos) /*!< FPCCR: processor mode active bit Mask */ + +#define FPU_FPCCR_S_Pos 2U /*!< FPCCR: Security status of the FP context bit Position */ +#define FPU_FPCCR_S_Msk (1UL << FPU_FPCCR_S_Pos) /*!< FPCCR: Security status of the FP context bit Mask */ + +#define FPU_FPCCR_USER_Pos 1U /*!< FPCCR: privilege level bit Position */ +#define FPU_FPCCR_USER_Msk (1UL << FPU_FPCCR_USER_Pos) /*!< FPCCR: privilege level bit Mask */ + +#define FPU_FPCCR_LSPACT_Pos 0U /*!< FPCCR: Lazy state preservation active bit Position */ +#define FPU_FPCCR_LSPACT_Msk (1UL /*<< FPU_FPCCR_LSPACT_Pos*/) /*!< FPCCR: Lazy state preservation active bit Mask */ + +/* Floating-Point Context Address Register Definitions */ +#define FPU_FPCAR_ADDRESS_Pos 3U /*!< FPCAR: ADDRESS bit Position */ +#define FPU_FPCAR_ADDRESS_Msk (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos) /*!< FPCAR: ADDRESS bit Mask */ + +/* Floating-Point Default Status Control Register Definitions */ +#define FPU_FPDSCR_AHP_Pos 26U /*!< FPDSCR: AHP bit Position */ +#define FPU_FPDSCR_AHP_Msk (1UL << FPU_FPDSCR_AHP_Pos) /*!< FPDSCR: AHP bit Mask */ + +#define FPU_FPDSCR_DN_Pos 25U /*!< FPDSCR: DN bit Position */ +#define FPU_FPDSCR_DN_Msk (1UL << FPU_FPDSCR_DN_Pos) /*!< FPDSCR: DN bit Mask */ + +#define FPU_FPDSCR_FZ_Pos 24U /*!< FPDSCR: FZ bit Position */ +#define FPU_FPDSCR_FZ_Msk (1UL << FPU_FPDSCR_FZ_Pos) /*!< FPDSCR: FZ bit Mask */ + +#define FPU_FPDSCR_RMode_Pos 22U /*!< FPDSCR: RMode bit Position */ +#define FPU_FPDSCR_RMode_Msk (3UL << FPU_FPDSCR_RMode_Pos) /*!< FPDSCR: RMode bit Mask */ + +/* Media and FP Feature Register 0 Definitions */ +#define FPU_MVFR0_FP_rounding_modes_Pos 28U /*!< MVFR0: FP rounding modes bits Position */ +#define FPU_MVFR0_FP_rounding_modes_Msk (0xFUL << FPU_MVFR0_FP_rounding_modes_Pos) /*!< MVFR0: FP rounding modes bits Mask */ + +#define FPU_MVFR0_Short_vectors_Pos 24U /*!< MVFR0: Short vectors bits Position */ +#define FPU_MVFR0_Short_vectors_Msk (0xFUL << FPU_MVFR0_Short_vectors_Pos) /*!< MVFR0: Short vectors bits Mask */ + +#define FPU_MVFR0_Square_root_Pos 20U /*!< MVFR0: Square root bits Position */ +#define FPU_MVFR0_Square_root_Msk (0xFUL << FPU_MVFR0_Square_root_Pos) /*!< MVFR0: Square root bits Mask */ + +#define FPU_MVFR0_Divide_Pos 16U /*!< MVFR0: Divide bits Position */ +#define FPU_MVFR0_Divide_Msk (0xFUL << FPU_MVFR0_Divide_Pos) /*!< MVFR0: Divide bits Mask */ + +#define FPU_MVFR0_FP_excep_trapping_Pos 12U /*!< MVFR0: FP exception trapping bits Position */ +#define FPU_MVFR0_FP_excep_trapping_Msk (0xFUL << FPU_MVFR0_FP_excep_trapping_Pos) /*!< MVFR0: FP exception trapping bits Mask */ + +#define FPU_MVFR0_Double_precision_Pos 8U /*!< MVFR0: Double-precision bits Position */ +#define FPU_MVFR0_Double_precision_Msk (0xFUL << FPU_MVFR0_Double_precision_Pos) /*!< MVFR0: Double-precision bits Mask */ + +#define FPU_MVFR0_Single_precision_Pos 4U /*!< MVFR0: Single-precision bits Position */ +#define FPU_MVFR0_Single_precision_Msk (0xFUL << FPU_MVFR0_Single_precision_Pos) /*!< MVFR0: Single-precision bits Mask */ + +#define FPU_MVFR0_A_SIMD_registers_Pos 0U /*!< MVFR0: A_SIMD registers bits Position */ +#define FPU_MVFR0_A_SIMD_registers_Msk (0xFUL /*<< FPU_MVFR0_A_SIMD_registers_Pos*/) /*!< MVFR0: A_SIMD registers bits Mask */ + +/* Media and FP Feature Register 1 Definitions */ +#define FPU_MVFR1_FP_fused_MAC_Pos 28U /*!< MVFR1: FP fused MAC bits Position */ +#define FPU_MVFR1_FP_fused_MAC_Msk (0xFUL << FPU_MVFR1_FP_fused_MAC_Pos) /*!< MVFR1: FP fused MAC bits Mask */ + +#define FPU_MVFR1_FP_HPFP_Pos 24U /*!< MVFR1: FP HPFP bits Position */ +#define FPU_MVFR1_FP_HPFP_Msk (0xFUL << FPU_MVFR1_FP_HPFP_Pos) /*!< MVFR1: FP HPFP bits Mask */ + +#define FPU_MVFR1_D_NaN_mode_Pos 4U /*!< MVFR1: D_NaN mode bits Position */ +#define FPU_MVFR1_D_NaN_mode_Msk (0xFUL << FPU_MVFR1_D_NaN_mode_Pos) /*!< MVFR1: D_NaN mode bits Mask */ + +#define FPU_MVFR1_FtZ_mode_Pos 0U /*!< MVFR1: FtZ mode bits Position */ +#define FPU_MVFR1_FtZ_mode_Msk (0xFUL /*<< FPU_MVFR1_FtZ_mode_Pos*/) /*!< MVFR1: FtZ mode bits Mask */ + +/*@} end of group CMSIS_FPU */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** + \brief Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ + uint32_t RESERVED4[1U]; + __IOM uint32_t DAUTHCTRL; /*!< Offset: 0x014 (R/W) Debug Authentication Control Register */ + __IOM uint32_t DSCSR; /*!< Offset: 0x018 (R/W) Debug Security Control and Status Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register Definitions */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESTART_ST_Pos 26U /*!< CoreDebug DHCSR: S_RESTART_ST Position */ +#define CoreDebug_DHCSR_S_RESTART_ST_Msk (1UL << CoreDebug_DHCSR_S_RESTART_ST_Pos) /*!< CoreDebug DHCSR: S_RESTART_ST Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5U /*!< CoreDebug DHCSR: C_SNAPSTALL Position */ +#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register Definitions */ +#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register Definitions */ +#define CoreDebug_DEMCR_TRCENA_Pos 24U /*!< CoreDebug DEMCR: TRCENA Position */ +#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< CoreDebug DEMCR: TRCENA Mask */ + +#define CoreDebug_DEMCR_MON_REQ_Pos 19U /*!< CoreDebug DEMCR: MON_REQ Position */ +#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< CoreDebug DEMCR: MON_REQ Mask */ + +#define CoreDebug_DEMCR_MON_STEP_Pos 18U /*!< CoreDebug DEMCR: MON_STEP Position */ +#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< CoreDebug DEMCR: MON_STEP Mask */ + +#define CoreDebug_DEMCR_MON_PEND_Pos 17U /*!< CoreDebug DEMCR: MON_PEND Position */ +#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< CoreDebug DEMCR: MON_PEND Mask */ + +#define CoreDebug_DEMCR_MON_EN_Pos 16U /*!< CoreDebug DEMCR: MON_EN Position */ +#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< CoreDebug DEMCR: MON_EN Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_INTERR_Pos 9U /*!< CoreDebug DEMCR: VC_INTERR Position */ +#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< CoreDebug DEMCR: VC_INTERR Mask */ + +#define CoreDebug_DEMCR_VC_BUSERR_Pos 8U /*!< CoreDebug DEMCR: VC_BUSERR Position */ +#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< CoreDebug DEMCR: VC_BUSERR Mask */ + +#define CoreDebug_DEMCR_VC_STATERR_Pos 7U /*!< CoreDebug DEMCR: VC_STATERR Position */ +#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< CoreDebug DEMCR: VC_STATERR Mask */ + +#define CoreDebug_DEMCR_VC_CHKERR_Pos 6U /*!< CoreDebug DEMCR: VC_CHKERR Position */ +#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< CoreDebug DEMCR: VC_CHKERR Mask */ + +#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5U /*!< CoreDebug DEMCR: VC_NOCPERR Position */ +#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< CoreDebug DEMCR: VC_NOCPERR Mask */ + +#define CoreDebug_DEMCR_VC_MMERR_Pos 4U /*!< CoreDebug DEMCR: VC_MMERR Position */ +#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< CoreDebug DEMCR: VC_MMERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ + +/* Debug Authentication Control Register Definitions */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos 3U /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Position */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos) /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Mask */ + +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos 2U /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Msk (1UL << CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos) /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Mask */ + +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Pos 1U /*!< CoreDebug DAUTHCTRL: INTSPIDEN Position */ +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPIDEN_Pos) /*!< CoreDebug DAUTHCTRL: INTSPIDEN Mask */ + +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Pos 0U /*!< CoreDebug DAUTHCTRL: SPIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Msk (1UL /*<< CoreDebug_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< CoreDebug DAUTHCTRL: SPIDENSEL Mask */ + +/* Debug Security Control and Status Register Definitions */ +#define CoreDebug_DSCSR_CDS_Pos 16U /*!< CoreDebug DSCSR: CDS Position */ +#define CoreDebug_DSCSR_CDS_Msk (1UL << CoreDebug_DSCSR_CDS_Pos) /*!< CoreDebug DSCSR: CDS Mask */ + +#define CoreDebug_DSCSR_SBRSEL_Pos 1U /*!< CoreDebug DSCSR: SBRSEL Position */ +#define CoreDebug_DSCSR_SBRSEL_Msk (1UL << CoreDebug_DSCSR_SBRSEL_Pos) /*!< CoreDebug DSCSR: SBRSEL Mask */ + +#define CoreDebug_DSCSR_SBRSELEN_Pos 0U /*!< CoreDebug DSCSR: SBRSELEN Position */ +#define CoreDebug_DSCSR_SBRSELEN_Msk (1UL /*<< CoreDebug_DSCSR_SBRSELEN_Pos*/) /*!< CoreDebug DSCSR: SBRSELEN Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ + #define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ + #define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ + #define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ + #define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ + #define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */ + #define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ + #define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ + #define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + + #define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ + #define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ + #define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ + #define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ + #define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */ + #define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ + #define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ + #define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE ) /*!< Core Debug configuration struct */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ + #endif + + #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SAU_BASE (SCS_BASE + 0x0DD0UL) /*!< Security Attribution Unit */ + #define SAU ((SAU_Type *) SAU_BASE ) /*!< Security Attribution Unit */ + #endif + + #define FPU_BASE (SCS_BASE + 0x0F30UL) /*!< Floating Point Unit */ + #define FPU ((FPU_Type *) FPU_BASE ) /*!< Floating Point Unit */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SCS_BASE_NS (0xE002E000UL) /*!< System Control Space Base Address (non-secure address space) */ + #define CoreDebug_BASE_NS (0xE002EDF0UL) /*!< Core Debug Base Address (non-secure address space) */ + #define SysTick_BASE_NS (SCS_BASE_NS + 0x0010UL) /*!< SysTick Base Address (non-secure address space) */ + #define NVIC_BASE_NS (SCS_BASE_NS + 0x0100UL) /*!< NVIC Base Address (non-secure address space) */ + #define SCB_BASE_NS (SCS_BASE_NS + 0x0D00UL) /*!< System Control Block Base Address (non-secure address space) */ + + #define SCnSCB_NS ((SCnSCB_Type *) SCS_BASE_NS ) /*!< System control Register not in SCB(non-secure address space) */ + #define SCB_NS ((SCB_Type *) SCB_BASE_NS ) /*!< SCB configuration struct (non-secure address space) */ + #define SysTick_NS ((SysTick_Type *) SysTick_BASE_NS ) /*!< SysTick configuration struct (non-secure address space) */ + #define NVIC_NS ((NVIC_Type *) NVIC_BASE_NS ) /*!< NVIC configuration struct (non-secure address space) */ + #define CoreDebug_NS ((CoreDebug_Type *) CoreDebug_BASE_NS) /*!< Core Debug configuration struct (non-secure address space) */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE_NS (SCS_BASE_NS + 0x0D90UL) /*!< Memory Protection Unit (non-secure address space) */ + #define MPU_NS ((MPU_Type *) MPU_BASE_NS ) /*!< Memory Protection Unit (non-secure address space) */ + #endif + + #define FPU_BASE_NS (SCS_BASE_NS + 0x0F30UL) /*!< Floating Point Unit (non-secure address space) */ + #define FPU_NS ((FPU_Type *) FPU_BASE_NS ) /*!< Floating Point Unit (non-secure address space) */ + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Debug Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ + #define NVIC_GetActive __NVIC_GetActive + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + + +/** + \brief Set Priority Grouping + \details Sets the priority grouping field using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << 8U) ); /* Insert write key and priorty group */ + SCB->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping + \details Reads the priority grouping field from the NVIC Interrupt Controller. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void) +{ + return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Get Interrupt Target State + \details Reads the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + \return 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_GetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Target State + \details Sets the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_SetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] |= ((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Clear Interrupt Target State + \details Clears the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_ClearTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] &= ~((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IPR[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC->IPR[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; + __DSB(); +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + SCB_AIRCR_SYSRESETREQ_Msk ); /* Keep priority group unchanged */ + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Set Priority Grouping (non-secure) + \details Sets the non-secure priority grouping field when in secure state using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void TZ_NVIC_SetPriorityGrouping_NS(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB_NS->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << 8U) ); /* Insert write key and priorty group */ + SCB_NS->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping (non-secure) + \details Reads the priority grouping field from the non-secure NVIC when in secure state. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPriorityGrouping_NS(void) +{ + return ((uint32_t)((SCB_NS->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt (non-secure) + \details Enables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_EnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status (non-secure) + \details Returns a device specific interrupt enable status from the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetEnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt (non-secure) + \details Disables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_DisableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Pending Interrupt (non-secure) + \details Reads the NVIC pending register in the non-secure NVIC when in secure state and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt (non-secure) + \details Sets the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_SetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt (non-secure) + \details Clears the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_ClearPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt (non-secure) + \details Reads the active register in non-secure NVIC when in secure state and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetActive_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority (non-secure) + \details Sets the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every non-secure processor exception. + */ +__STATIC_INLINE void TZ_NVIC_SetPriority_NS(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->IPR[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority (non-secure) + \details Reads the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPriority_NS(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC_NS->IPR[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) &&(__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_NVICFunctions */ + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv8.h" + +#endif + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + uint32_t mvfr0; + + mvfr0 = FPU->MVFR0; + if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x220U) + { + return 2U; /* Double + Single precision FPU */ + } + else if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x020U) + { + return 1U; /* Single precision FPU */ + } + else + { + return 0U; /* No FPU */ + } +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ########################## SAU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SAUFunctions SAU Functions + \brief Functions that configure the SAU. + @{ + */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + +/** + \brief Enable SAU + \details Enables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Enable(void) +{ + SAU->CTRL |= (SAU_CTRL_ENABLE_Msk); +} + + + +/** + \brief Disable SAU + \details Disables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Disable(void) +{ + SAU->CTRL &= ~(SAU_CTRL_ENABLE_Msk); +} + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_SAUFunctions */ + + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief System Tick Configuration (non-secure) + \details Initializes the non-secure System Timer and its interrupt when in secure state, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function TZ_SysTick_Config_NS is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + + */ +__STATIC_INLINE uint32_t TZ_SysTick_Config_NS(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick_NS->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + TZ_NVIC_SetPriority_NS (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick_NS->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick_NS->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + +/* ##################################### Debug In/Output function ########################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_core_DebugFunctions ITM Functions + \brief Functions that access the ITM debug interface. + @{ + */ + +extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */ +#define ITM_RXBUFFER_EMPTY ((int32_t)0x5AA55AA5U) /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */ + + +/** + \brief ITM Send Character + \details Transmits a character via the ITM channel 0, and + \li Just returns when no debugger is connected that has booked the output. + \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted. + \param [in] ch Character to transmit. + \returns Character to transmit. + */ +__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch) +{ + if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) && /* ITM enabled */ + ((ITM->TER & 1UL ) != 0UL) ) /* ITM Port #0 enabled */ + { + while (ITM->PORT[0U].u32 == 0UL) + { + __NOP(); + } + ITM->PORT[0U].u8 = (uint8_t)ch; + } + return (ch); +} + + +/** + \brief ITM Receive Character + \details Inputs a character via the external variable \ref ITM_RxBuffer. + \return Received character. + \return -1 No character pending. + */ +__STATIC_INLINE int32_t ITM_ReceiveChar (void) +{ + int32_t ch = -1; /* no character available */ + + if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) + { + ch = ITM_RxBuffer; + ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ + } + + return (ch); +} + + +/** + \brief ITM Check Character + \details Checks whether a character is pending for reading in the variable \ref ITM_RxBuffer. + \return 0 No character available. + \return 1 Character available. + */ +__STATIC_INLINE int32_t ITM_CheckChar (void) +{ + + if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) + { + return (0); /* no character available */ + } + else + { + return (1); /* character available */ + } +} + +/*@} end of CMSIS_core_DebugFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_ARMV81MML_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/firmware/Drivers/CMSIS/Include/core_armv8mbl.h b/firmware/Drivers/CMSIS/Include/core_armv8mbl.h new file mode 100644 index 0000000..344dca5 --- /dev/null +++ b/firmware/Drivers/CMSIS/Include/core_armv8mbl.h @@ -0,0 +1,1921 @@ +/**************************************************************************//** + * @file core_armv8mbl.h + * @brief CMSIS Armv8-M Baseline Core Peripheral Access Layer Header File + * @version V5.0.8 + * @date 12. November 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_ARMV8MBL_H_GENERIC +#define __CORE_ARMV8MBL_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup Cortex_ARMv8MBL + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS definitions */ +#define __ARMv8MBL_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __ARMv8MBL_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __ARMv8MBL_CMSIS_VERSION ((__ARMv8MBL_CMSIS_VERSION_MAIN << 16U) | \ + __ARMv8MBL_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M ( 2U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + This core does not support an FPU at all +*/ +#define __FPU_USED 0U + +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_FP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_ARMV8MBL_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_ARMV8MBL_H_DEPENDANT +#define __CORE_ARMV8MBL_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __ARMv8MBL_REV + #define __ARMv8MBL_REV 0x0000U + #warning "__ARMv8MBL_REV not defined in device header file; using default!" + #endif + + #ifndef __FPU_PRESENT + #define __FPU_PRESENT 0U + #warning "__FPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __SAUREGION_PRESENT + #define __SAUREGION_PRESENT 0U + #warning "__SAUREGION_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __VTOR_PRESENT + #define __VTOR_PRESENT 0U + #warning "__VTOR_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 2U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif + + #ifndef __ETM_PRESENT + #define __ETM_PRESENT 0U + #warning "__ETM_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MTB_PRESENT + #define __MTB_PRESENT 0U + #warning "__MTB_PRESENT not defined in device header file; using default!" + #endif + +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group ARMv8MBL */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + - Core SAU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:28; /*!< bit: 0..27 Reserved */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:15; /*!< bit: 9..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t _reserved1:3; /*!< bit: 25..27 Reserved */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack-pointer select */ + uint32_t _reserved1:30; /*!< bit: 2..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[16U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[16U]; + __IOM uint32_t ICER[16U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[16U]; + __IOM uint32_t ISPR[16U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[16U]; + __IOM uint32_t ICPR[16U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[16U]; + __IOM uint32_t IABR[16U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[16U]; + __IOM uint32_t ITNS[16U]; /*!< Offset: 0x280 (R/W) Interrupt Non-Secure State Register */ + uint32_t RESERVED5[16U]; + __IOM uint32_t IPR[124U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register */ +} NVIC_Type; + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ +#else + uint32_t RESERVED0; +#endif + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + uint32_t RESERVED1; + __IOM uint32_t SHPR[2U]; /*!< Offset: 0x01C (R/W) System Handlers Priority Registers. [0] is RESERVED */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_PENDNMISET_Pos 31U /*!< SCB ICSR: PENDNMISET Position */ +#define SCB_ICSR_PENDNMISET_Msk (1UL << SCB_ICSR_PENDNMISET_Pos) /*!< SCB ICSR: PENDNMISET Mask */ + +#define SCB_ICSR_NMIPENDSET_Pos SCB_ICSR_PENDNMISET_Pos /*!< SCB ICSR: NMIPENDSET Position, backward compatibility */ +#define SCB_ICSR_NMIPENDSET_Msk SCB_ICSR_PENDNMISET_Msk /*!< SCB ICSR: NMIPENDSET Mask, backward compatibility */ + +#define SCB_ICSR_PENDNMICLR_Pos 30U /*!< SCB ICSR: PENDNMICLR Position */ +#define SCB_ICSR_PENDNMICLR_Msk (1UL << SCB_ICSR_PENDNMICLR_Pos) /*!< SCB ICSR: PENDNMICLR Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_STTNS_Pos 24U /*!< SCB ICSR: STTNS Position (Security Extension) */ +#define SCB_ICSR_STTNS_Msk (1UL << SCB_ICSR_STTNS_Pos) /*!< SCB ICSR: STTNS Mask (Security Extension) */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) +/* SCB Vector Table Offset Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ +#endif + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_PRIS_Pos 14U /*!< SCB AIRCR: PRIS Position */ +#define SCB_AIRCR_PRIS_Msk (1UL << SCB_AIRCR_PRIS_Pos) /*!< SCB AIRCR: PRIS Mask */ + +#define SCB_AIRCR_BFHFNMINS_Pos 13U /*!< SCB AIRCR: BFHFNMINS Position */ +#define SCB_AIRCR_BFHFNMINS_Msk (1UL << SCB_AIRCR_BFHFNMINS_Pos) /*!< SCB AIRCR: BFHFNMINS Mask */ + +#define SCB_AIRCR_SYSRESETREQS_Pos 3U /*!< SCB AIRCR: SYSRESETREQS Position */ +#define SCB_AIRCR_SYSRESETREQS_Msk (1UL << SCB_AIRCR_SYSRESETREQS_Pos) /*!< SCB AIRCR: SYSRESETREQS Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEPS_Pos 3U /*!< SCB SCR: SLEEPDEEPS Position */ +#define SCB_SCR_SLEEPDEEPS_Msk (1UL << SCB_SCR_SLEEPDEEPS_Pos) /*!< SCB SCR: SLEEPDEEPS Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_BP_Pos 18U /*!< SCB CCR: BP Position */ +#define SCB_CCR_BP_Msk (1UL << SCB_CCR_BP_Pos) /*!< SCB CCR: BP Mask */ + +#define SCB_CCR_IC_Pos 17U /*!< SCB CCR: IC Position */ +#define SCB_CCR_IC_Msk (1UL << SCB_CCR_IC_Pos) /*!< SCB CCR: IC Mask */ + +#define SCB_CCR_DC_Pos 16U /*!< SCB CCR: DC Position */ +#define SCB_CCR_DC_Msk (1UL << SCB_CCR_DC_Pos) /*!< SCB CCR: DC Mask */ + +#define SCB_CCR_STKOFHFNMIGN_Pos 10U /*!< SCB CCR: STKOFHFNMIGN Position */ +#define SCB_CCR_STKOFHFNMIGN_Msk (1UL << SCB_CCR_STKOFHFNMIGN_Pos) /*!< SCB CCR: STKOFHFNMIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_HARDFAULTPENDED_Pos 21U /*!< SCB SHCSR: HARDFAULTPENDED Position */ +#define SCB_SHCSR_HARDFAULTPENDED_Msk (1UL << SCB_SHCSR_HARDFAULTPENDED_Pos) /*!< SCB SHCSR: HARDFAULTPENDED Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_NMIACT_Pos 5U /*!< SCB SHCSR: NMIACT Position */ +#define SCB_SHCSR_NMIACT_Msk (1UL << SCB_SHCSR_NMIACT_Pos) /*!< SCB SHCSR: NMIACT Mask */ + +#define SCB_SHCSR_HARDFAULTACT_Pos 2U /*!< SCB SHCSR: HARDFAULTACT Position */ +#define SCB_SHCSR_HARDFAULTACT_Msk (1UL << SCB_SHCSR_HARDFAULTACT_Pos) /*!< SCB SHCSR: HARDFAULTACT Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + uint32_t RESERVED0[6U]; + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + uint32_t RESERVED3[1U]; + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED4[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + uint32_t RESERVED5[1U]; + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED6[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + uint32_t RESERVED7[1U]; + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ + uint32_t RESERVED8[1U]; + __IOM uint32_t COMP4; /*!< Offset: 0x060 (R/W) Comparator Register 4 */ + uint32_t RESERVED9[1U]; + __IOM uint32_t FUNCTION4; /*!< Offset: 0x068 (R/W) Function Register 4 */ + uint32_t RESERVED10[1U]; + __IOM uint32_t COMP5; /*!< Offset: 0x070 (R/W) Comparator Register 5 */ + uint32_t RESERVED11[1U]; + __IOM uint32_t FUNCTION5; /*!< Offset: 0x078 (R/W) Function Register 5 */ + uint32_t RESERVED12[1U]; + __IOM uint32_t COMP6; /*!< Offset: 0x080 (R/W) Comparator Register 6 */ + uint32_t RESERVED13[1U]; + __IOM uint32_t FUNCTION6; /*!< Offset: 0x088 (R/W) Function Register 6 */ + uint32_t RESERVED14[1U]; + __IOM uint32_t COMP7; /*!< Offset: 0x090 (R/W) Comparator Register 7 */ + uint32_t RESERVED15[1U]; + __IOM uint32_t FUNCTION7; /*!< Offset: 0x098 (R/W) Function Register 7 */ + uint32_t RESERVED16[1U]; + __IOM uint32_t COMP8; /*!< Offset: 0x0A0 (R/W) Comparator Register 8 */ + uint32_t RESERVED17[1U]; + __IOM uint32_t FUNCTION8; /*!< Offset: 0x0A8 (R/W) Function Register 8 */ + uint32_t RESERVED18[1U]; + __IOM uint32_t COMP9; /*!< Offset: 0x0B0 (R/W) Comparator Register 9 */ + uint32_t RESERVED19[1U]; + __IOM uint32_t FUNCTION9; /*!< Offset: 0x0B8 (R/W) Function Register 9 */ + uint32_t RESERVED20[1U]; + __IOM uint32_t COMP10; /*!< Offset: 0x0C0 (R/W) Comparator Register 10 */ + uint32_t RESERVED21[1U]; + __IOM uint32_t FUNCTION10; /*!< Offset: 0x0C8 (R/W) Function Register 10 */ + uint32_t RESERVED22[1U]; + __IOM uint32_t COMP11; /*!< Offset: 0x0D0 (R/W) Comparator Register 11 */ + uint32_t RESERVED23[1U]; + __IOM uint32_t FUNCTION11; /*!< Offset: 0x0D8 (R/W) Function Register 11 */ + uint32_t RESERVED24[1U]; + __IOM uint32_t COMP12; /*!< Offset: 0x0E0 (R/W) Comparator Register 12 */ + uint32_t RESERVED25[1U]; + __IOM uint32_t FUNCTION12; /*!< Offset: 0x0E8 (R/W) Function Register 12 */ + uint32_t RESERVED26[1U]; + __IOM uint32_t COMP13; /*!< Offset: 0x0F0 (R/W) Comparator Register 13 */ + uint32_t RESERVED27[1U]; + __IOM uint32_t FUNCTION13; /*!< Offset: 0x0F8 (R/W) Function Register 13 */ + uint32_t RESERVED28[1U]; + __IOM uint32_t COMP14; /*!< Offset: 0x100 (R/W) Comparator Register 14 */ + uint32_t RESERVED29[1U]; + __IOM uint32_t FUNCTION14; /*!< Offset: 0x108 (R/W) Function Register 14 */ + uint32_t RESERVED30[1U]; + __IOM uint32_t COMP15; /*!< Offset: 0x110 (R/W) Comparator Register 15 */ + uint32_t RESERVED31[1U]; + __IOM uint32_t FUNCTION15; /*!< Offset: 0x118 (R/W) Function Register 15 */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_ID_Pos 27U /*!< DWT FUNCTION: ID Position */ +#define DWT_FUNCTION_ID_Msk (0x1FUL << DWT_FUNCTION_ID_Pos) /*!< DWT FUNCTION: ID Mask */ + +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_ACTION_Pos 4U /*!< DWT FUNCTION: ACTION Position */ +#define DWT_FUNCTION_ACTION_Msk (0x3UL << DWT_FUNCTION_ACTION_Pos) /*!< DWT FUNCTION: ACTION Mask */ + +#define DWT_FUNCTION_MATCH_Pos 0U /*!< DWT FUNCTION: MATCH Position */ +#define DWT_FUNCTION_MATCH_Msk (0xFUL /*<< DWT_FUNCTION_MATCH_Pos*/) /*!< DWT FUNCTION: MATCH Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Sizes Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Sizes Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IOM uint32_t PSCR; /*!< Offset: 0x308 (R/W) Periodic Synchronization Control Register */ + uint32_t RESERVED3[809U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) Software Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) Software Lock Status Register */ + uint32_t RESERVED4[4U]; + __IM uint32_t TYPE; /*!< Offset: 0xFC8 (R/ ) Device Identifier Register */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) Device Type Register */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_SWOSCALER_Pos 0U /*!< TPI ACPR: SWOSCALER Position */ +#define TPI_ACPR_SWOSCALER_Msk (0xFFFFUL /*<< TPI_ACPR_SWOSCALER_Pos*/) /*!< TPI ACPR: SWOSCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_FOnMan_Pos 6U /*!< TPI FFCR: FOnMan Position */ +#define TPI_FFCR_FOnMan_Msk (0x1UL << TPI_FFCR_FOnMan_Pos) /*!< TPI FFCR: FOnMan Mask */ + +#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */ +#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ + +/* TPI Periodic Synchronization Control Register Definitions */ +#define TPI_PSCR_PSCount_Pos 0U /*!< TPI PSCR: PSCount Position */ +#define TPI_PSCR_PSCount_Msk (0x1FUL /*<< TPI_PSCR_PSCount_Pos*/) /*!< TPI PSCR: TPSCount Mask */ + +/* TPI Software Lock Status Register Definitions */ +#define TPI_LSR_nTT_Pos 1U /*!< TPI LSR: Not thirty-two bit. Position */ +#define TPI_LSR_nTT_Msk (0x1UL << TPI_LSR_nTT_Pos) /*!< TPI LSR: Not thirty-two bit. Mask */ + +#define TPI_LSR_SLK_Pos 1U /*!< TPI LSR: Software Lock status Position */ +#define TPI_LSR_SLK_Msk (0x1UL << TPI_LSR_SLK_Pos) /*!< TPI LSR: Software Lock status Mask */ + +#define TPI_LSR_SLI_Pos 0U /*!< TPI LSR: Software Lock implemented Position */ +#define TPI_LSR_SLI_Msk (0x1UL /*<< TPI_LSR_SLI_Pos*/) /*!< TPI LSR: Software Lock implemented Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_FIFOSZ_Pos 6U /*!< TPI DEVID: FIFO depth Position */ +#define TPI_DEVID_FIFOSZ_Msk (0x7UL << TPI_DEVID_FIFOSZ_Pos) /*!< TPI DEVID: FIFO depth Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) MPU Region Limit Address Register */ + uint32_t RESERVED0[7U]; + union { + __IOM uint32_t MAIR[2]; + struct { + __IOM uint32_t MAIR0; /*!< Offset: 0x030 (R/W) MPU Memory Attribute Indirection Register 0 */ + __IOM uint32_t MAIR1; /*!< Offset: 0x034 (R/W) MPU Memory Attribute Indirection Register 1 */ + }; + }; +} MPU_Type; + +#define MPU_TYPE_RALIASES 1U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_BASE_Pos 5U /*!< MPU RBAR: BASE Position */ +#define MPU_RBAR_BASE_Msk (0x7FFFFFFUL << MPU_RBAR_BASE_Pos) /*!< MPU RBAR: BASE Mask */ + +#define MPU_RBAR_SH_Pos 3U /*!< MPU RBAR: SH Position */ +#define MPU_RBAR_SH_Msk (0x3UL << MPU_RBAR_SH_Pos) /*!< MPU RBAR: SH Mask */ + +#define MPU_RBAR_AP_Pos 1U /*!< MPU RBAR: AP Position */ +#define MPU_RBAR_AP_Msk (0x3UL << MPU_RBAR_AP_Pos) /*!< MPU RBAR: AP Mask */ + +#define MPU_RBAR_XN_Pos 0U /*!< MPU RBAR: XN Position */ +#define MPU_RBAR_XN_Msk (01UL /*<< MPU_RBAR_XN_Pos*/) /*!< MPU RBAR: XN Mask */ + +/* MPU Region Limit Address Register Definitions */ +#define MPU_RLAR_LIMIT_Pos 5U /*!< MPU RLAR: LIMIT Position */ +#define MPU_RLAR_LIMIT_Msk (0x7FFFFFFUL << MPU_RLAR_LIMIT_Pos) /*!< MPU RLAR: LIMIT Mask */ + +#define MPU_RLAR_AttrIndx_Pos 1U /*!< MPU RLAR: AttrIndx Position */ +#define MPU_RLAR_AttrIndx_Msk (0x7UL << MPU_RLAR_AttrIndx_Pos) /*!< MPU RLAR: AttrIndx Mask */ + +#define MPU_RLAR_EN_Pos 0U /*!< MPU RLAR: EN Position */ +#define MPU_RLAR_EN_Msk (1UL /*<< MPU_RLAR_EN_Pos*/) /*!< MPU RLAR: EN Mask */ + +/* MPU Memory Attribute Indirection Register 0 Definitions */ +#define MPU_MAIR0_Attr3_Pos 24U /*!< MPU MAIR0: Attr3 Position */ +#define MPU_MAIR0_Attr3_Msk (0xFFUL << MPU_MAIR0_Attr3_Pos) /*!< MPU MAIR0: Attr3 Mask */ + +#define MPU_MAIR0_Attr2_Pos 16U /*!< MPU MAIR0: Attr2 Position */ +#define MPU_MAIR0_Attr2_Msk (0xFFUL << MPU_MAIR0_Attr2_Pos) /*!< MPU MAIR0: Attr2 Mask */ + +#define MPU_MAIR0_Attr1_Pos 8U /*!< MPU MAIR0: Attr1 Position */ +#define MPU_MAIR0_Attr1_Msk (0xFFUL << MPU_MAIR0_Attr1_Pos) /*!< MPU MAIR0: Attr1 Mask */ + +#define MPU_MAIR0_Attr0_Pos 0U /*!< MPU MAIR0: Attr0 Position */ +#define MPU_MAIR0_Attr0_Msk (0xFFUL /*<< MPU_MAIR0_Attr0_Pos*/) /*!< MPU MAIR0: Attr0 Mask */ + +/* MPU Memory Attribute Indirection Register 1 Definitions */ +#define MPU_MAIR1_Attr7_Pos 24U /*!< MPU MAIR1: Attr7 Position */ +#define MPU_MAIR1_Attr7_Msk (0xFFUL << MPU_MAIR1_Attr7_Pos) /*!< MPU MAIR1: Attr7 Mask */ + +#define MPU_MAIR1_Attr6_Pos 16U /*!< MPU MAIR1: Attr6 Position */ +#define MPU_MAIR1_Attr6_Msk (0xFFUL << MPU_MAIR1_Attr6_Pos) /*!< MPU MAIR1: Attr6 Mask */ + +#define MPU_MAIR1_Attr5_Pos 8U /*!< MPU MAIR1: Attr5 Position */ +#define MPU_MAIR1_Attr5_Msk (0xFFUL << MPU_MAIR1_Attr5_Pos) /*!< MPU MAIR1: Attr5 Mask */ + +#define MPU_MAIR1_Attr4_Pos 0U /*!< MPU MAIR1: Attr4 Position */ +#define MPU_MAIR1_Attr4_Msk (0xFFUL /*<< MPU_MAIR1_Attr4_Pos*/) /*!< MPU MAIR1: Attr4 Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SAU Security Attribution Unit (SAU) + \brief Type definitions for the Security Attribution Unit (SAU) + @{ + */ + +/** + \brief Structure type to access the Security Attribution Unit (SAU). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SAU Control Register */ + __IM uint32_t TYPE; /*!< Offset: 0x004 (R/ ) SAU Type Register */ +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) SAU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) SAU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) SAU Region Limit Address Register */ +#endif +} SAU_Type; + +/* SAU Control Register Definitions */ +#define SAU_CTRL_ALLNS_Pos 1U /*!< SAU CTRL: ALLNS Position */ +#define SAU_CTRL_ALLNS_Msk (1UL << SAU_CTRL_ALLNS_Pos) /*!< SAU CTRL: ALLNS Mask */ + +#define SAU_CTRL_ENABLE_Pos 0U /*!< SAU CTRL: ENABLE Position */ +#define SAU_CTRL_ENABLE_Msk (1UL /*<< SAU_CTRL_ENABLE_Pos*/) /*!< SAU CTRL: ENABLE Mask */ + +/* SAU Type Register Definitions */ +#define SAU_TYPE_SREGION_Pos 0U /*!< SAU TYPE: SREGION Position */ +#define SAU_TYPE_SREGION_Msk (0xFFUL /*<< SAU_TYPE_SREGION_Pos*/) /*!< SAU TYPE: SREGION Mask */ + +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) +/* SAU Region Number Register Definitions */ +#define SAU_RNR_REGION_Pos 0U /*!< SAU RNR: REGION Position */ +#define SAU_RNR_REGION_Msk (0xFFUL /*<< SAU_RNR_REGION_Pos*/) /*!< SAU RNR: REGION Mask */ + +/* SAU Region Base Address Register Definitions */ +#define SAU_RBAR_BADDR_Pos 5U /*!< SAU RBAR: BADDR Position */ +#define SAU_RBAR_BADDR_Msk (0x7FFFFFFUL << SAU_RBAR_BADDR_Pos) /*!< SAU RBAR: BADDR Mask */ + +/* SAU Region Limit Address Register Definitions */ +#define SAU_RLAR_LADDR_Pos 5U /*!< SAU RLAR: LADDR Position */ +#define SAU_RLAR_LADDR_Msk (0x7FFFFFFUL << SAU_RLAR_LADDR_Pos) /*!< SAU RLAR: LADDR Mask */ + +#define SAU_RLAR_NSC_Pos 1U /*!< SAU RLAR: NSC Position */ +#define SAU_RLAR_NSC_Msk (1UL << SAU_RLAR_NSC_Pos) /*!< SAU RLAR: NSC Mask */ + +#define SAU_RLAR_ENABLE_Pos 0U /*!< SAU RLAR: ENABLE Position */ +#define SAU_RLAR_ENABLE_Msk (1UL /*<< SAU_RLAR_ENABLE_Pos*/) /*!< SAU RLAR: ENABLE Mask */ + +#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */ + +/*@} end of group CMSIS_SAU */ +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** + \brief Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ + uint32_t RESERVED4[1U]; + __IOM uint32_t DAUTHCTRL; /*!< Offset: 0x014 (R/W) Debug Authentication Control Register */ + __IOM uint32_t DSCSR; /*!< Offset: 0x018 (R/W) Debug Security Control and Status Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register Definitions */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESTART_ST_Pos 26U /*!< CoreDebug DHCSR: S_RESTART_ST Position */ +#define CoreDebug_DHCSR_S_RESTART_ST_Msk (1UL << CoreDebug_DHCSR_S_RESTART_ST_Pos) /*!< CoreDebug DHCSR: S_RESTART_ST Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register Definitions */ +#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register */ +#define CoreDebug_DEMCR_DWTENA_Pos 24U /*!< CoreDebug DEMCR: DWTENA Position */ +#define CoreDebug_DEMCR_DWTENA_Msk (1UL << CoreDebug_DEMCR_DWTENA_Pos) /*!< CoreDebug DEMCR: DWTENA Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ + +/* Debug Authentication Control Register Definitions */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos 3U /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Position */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos) /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Mask */ + +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos 2U /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Msk (1UL << CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos) /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Mask */ + +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Pos 1U /*!< CoreDebug DAUTHCTRL: INTSPIDEN Position */ +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPIDEN_Pos) /*!< CoreDebug DAUTHCTRL: INTSPIDEN Mask */ + +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Pos 0U /*!< CoreDebug DAUTHCTRL: SPIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Msk (1UL /*<< CoreDebug_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< CoreDebug DAUTHCTRL: SPIDENSEL Mask */ + +/* Debug Security Control and Status Register Definitions */ +#define CoreDebug_DSCSR_CDS_Pos 16U /*!< CoreDebug DSCSR: CDS Position */ +#define CoreDebug_DSCSR_CDS_Msk (1UL << CoreDebug_DSCSR_CDS_Pos) /*!< CoreDebug DSCSR: CDS Mask */ + +#define CoreDebug_DSCSR_SBRSEL_Pos 1U /*!< CoreDebug DSCSR: SBRSEL Position */ +#define CoreDebug_DSCSR_SBRSEL_Msk (1UL << CoreDebug_DSCSR_SBRSEL_Pos) /*!< CoreDebug DSCSR: SBRSEL Mask */ + +#define CoreDebug_DSCSR_SBRSELEN_Pos 0U /*!< CoreDebug DSCSR: SBRSELEN Position */ +#define CoreDebug_DSCSR_SBRSELEN_Msk (1UL /*<< CoreDebug_DSCSR_SBRSELEN_Pos*/) /*!< CoreDebug DSCSR: SBRSELEN Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ + #define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ + #define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ + #define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ + #define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */ + #define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ + #define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ + #define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + + + #define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ + #define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ + #define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ + #define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ + #define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ + #define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE ) /*!< Core Debug configuration struct */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ + #endif + + #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SAU_BASE (SCS_BASE + 0x0DD0UL) /*!< Security Attribution Unit */ + #define SAU ((SAU_Type *) SAU_BASE ) /*!< Security Attribution Unit */ + #endif + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SCS_BASE_NS (0xE002E000UL) /*!< System Control Space Base Address (non-secure address space) */ + #define CoreDebug_BASE_NS (0xE002EDF0UL) /*!< Core Debug Base Address (non-secure address space) */ + #define SysTick_BASE_NS (SCS_BASE_NS + 0x0010UL) /*!< SysTick Base Address (non-secure address space) */ + #define NVIC_BASE_NS (SCS_BASE_NS + 0x0100UL) /*!< NVIC Base Address (non-secure address space) */ + #define SCB_BASE_NS (SCS_BASE_NS + 0x0D00UL) /*!< System Control Block Base Address (non-secure address space) */ + + #define SCB_NS ((SCB_Type *) SCB_BASE_NS ) /*!< SCB configuration struct (non-secure address space) */ + #define SysTick_NS ((SysTick_Type *) SysTick_BASE_NS ) /*!< SysTick configuration struct (non-secure address space) */ + #define NVIC_NS ((NVIC_Type *) NVIC_BASE_NS ) /*!< NVIC configuration struct (non-secure address space) */ + #define CoreDebug_NS ((CoreDebug_Type *) CoreDebug_BASE_NS) /*!< Core Debug configuration struct (non-secure address space) */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE_NS (SCS_BASE_NS + 0x0D90UL) /*!< Memory Protection Unit (non-secure address space) */ + #define MPU_NS ((MPU_Type *) MPU_BASE_NS ) /*!< Memory Protection Unit (non-secure address space) */ + #endif + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ + #define NVIC_GetActive __NVIC_GetActive + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* Special LR values for Secure/Non-Secure call handling and exception handling */ + +/* Function Return Payload (from ARMv8-M Architecture Reference Manual) LR value on entry from Secure BLXNS */ +#define FNC_RETURN (0xFEFFFFFFUL) /* bit [0] ignored when processing a branch */ + +/* The following EXC_RETURN mask values are used to evaluate the LR on exception entry */ +#define EXC_RETURN_PREFIX (0xFF000000UL) /* bits [31:24] set to indicate an EXC_RETURN value */ +#define EXC_RETURN_S (0x00000040UL) /* bit [6] stack used to push registers: 0=Non-secure 1=Secure */ +#define EXC_RETURN_DCRS (0x00000020UL) /* bit [5] stacking rules for called registers: 0=skipped 1=saved */ +#define EXC_RETURN_FTYPE (0x00000010UL) /* bit [4] allocate stack for floating-point context: 0=done 1=skipped */ +#define EXC_RETURN_MODE (0x00000008UL) /* bit [3] processor mode for return: 0=Handler mode 1=Thread mode */ +#define EXC_RETURN_SPSEL (0x00000004UL) /* bit [2] stack pointer used to restore context: 0=MSP 1=PSP */ +#define EXC_RETURN_ES (0x00000001UL) /* bit [0] security state exception was taken to: 0=Non-secure 1=Secure */ + +/* Integrity Signature (from ARMv8-M Architecture Reference Manual) for exception context stacking */ +#if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) /* Value for processors with floating-point extension: */ +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125AUL) /* bit [0] SFTC must match LR bit[4] EXC_RETURN_FTYPE */ +#else +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125BUL) /* Value for processors without floating-point extension */ +#endif + + +/* Interrupt Priorities are WORD accessible only under Armv6-M */ +/* The following MACROS handle generation of the register offset and byte masks */ +#define _BIT_SHIFT(IRQn) ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL) +#define _SHP_IDX(IRQn) ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) ) +#define _IP_IDX(IRQn) ( (((uint32_t)(int32_t)(IRQn)) >> 2UL) ) + +#define __NVIC_SetPriorityGrouping(X) (void)(X) +#define __NVIC_GetPriorityGrouping() (0U) + +/** + \brief Enable Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + __COMPILER_BARRIER(); + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __COMPILER_BARRIER(); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Get Interrupt Target State + \details Reads the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + \return 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_GetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Target State + \details Sets the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_SetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] |= ((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Clear Interrupt Target State + \details Clears the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_ClearTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] &= ~((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IPR[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IPR[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } + else + { + SCB->SHPR[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHPR[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IPR[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return((uint32_t)(((SCB->SHPR[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + If VTOR is not present address 0 must be mapped to SRAM. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + uint32_t *vectors = (uint32_t *)SCB->VTOR; +#else + uint32_t *vectors = (uint32_t *)0x0U; +#endif + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; + __DSB(); +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + uint32_t *vectors = (uint32_t *)SCB->VTOR; +#else + uint32_t *vectors = (uint32_t *)0x0U; +#endif + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + SCB_AIRCR_SYSRESETREQ_Msk); + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Enable Interrupt (non-secure) + \details Enables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_EnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status (non-secure) + \details Returns a device specific interrupt enable status from the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetEnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt (non-secure) + \details Disables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_DisableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Pending Interrupt (non-secure) + \details Reads the NVIC pending register in the non-secure NVIC when in secure state and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt (non-secure) + \details Sets the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_SetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt (non-secure) + \details Clears the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_ClearPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt (non-secure) + \details Reads the active register in non-secure NVIC when in secure state and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetActive_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority (non-secure) + \details Sets the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every non-secure processor exception. + */ +__STATIC_INLINE void TZ_NVIC_SetPriority_NS(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->IPR[_IP_IDX(IRQn)] = ((uint32_t)(NVIC_NS->IPR[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } + else + { + SCB_NS->SHPR[_SHP_IDX(IRQn)] = ((uint32_t)(SCB_NS->SHPR[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } +} + + +/** + \brief Get Interrupt Priority (non-secure) + \details Reads the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPriority_NS(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->IPR[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return((uint32_t)(((SCB_NS->SHPR[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) &&(__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_NVICFunctions */ + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv8.h" + +#endif + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + return 0U; /* No FPU */ +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ########################## SAU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SAUFunctions SAU Functions + \brief Functions that configure the SAU. + @{ + */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + +/** + \brief Enable SAU + \details Enables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Enable(void) +{ + SAU->CTRL |= (SAU_CTRL_ENABLE_Msk); +} + + + +/** + \brief Disable SAU + \details Disables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Disable(void) +{ + SAU->CTRL &= ~(SAU_CTRL_ENABLE_Msk); +} + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_SAUFunctions */ + + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief System Tick Configuration (non-secure) + \details Initializes the non-secure System Timer and its interrupt when in secure state, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function TZ_SysTick_Config_NS is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + + */ +__STATIC_INLINE uint32_t TZ_SysTick_Config_NS(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick_NS->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + TZ_NVIC_SetPriority_NS (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick_NS->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick_NS->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_ARMV8MBL_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/firmware/Drivers/CMSIS/Include/core_armv8mml.h b/firmware/Drivers/CMSIS/Include/core_armv8mml.h new file mode 100644 index 0000000..5ddb8ae --- /dev/null +++ b/firmware/Drivers/CMSIS/Include/core_armv8mml.h @@ -0,0 +1,2835 @@ +/**************************************************************************//** + * @file core_armv8mml.h + * @brief CMSIS Armv8-M Mainline Core Peripheral Access Layer Header File + * @version V5.1.0 + * @date 12. September 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_ARMV8MML_H_GENERIC +#define __CORE_ARMV8MML_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup Cortex_ARMv8MML + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS Armv8MML definitions */ +#define __ARMv8MML_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __ARMv8MML_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __ARMv8MML_CMSIS_VERSION ((__ARMv8MML_CMSIS_VERSION_MAIN << 16U) | \ + __ARMv8MML_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (81U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + For this, __FPU_PRESENT has to be checked prior to making use of FPU specific registers and functions. +*/ +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined(__ARM_FEATURE_DSP) + #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_FP + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined(__ARM_FEATURE_DSP) + #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined(__ARM_FEATURE_DSP) + #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined(__ARM_FEATURE_DSP) + #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_ARMV8MML_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_ARMV8MML_H_DEPENDANT +#define __CORE_ARMV8MML_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __ARMv8MML_REV + #define __ARMv8MML_REV 0x0000U + #warning "__ARMv8MML_REV not defined in device header file; using default!" + #endif + + #ifndef __FPU_PRESENT + #define __FPU_PRESENT 0U + #warning "__FPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __SAUREGION_PRESENT + #define __SAUREGION_PRESENT 0U + #warning "__SAUREGION_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __DSP_PRESENT + #define __DSP_PRESENT 0U + #warning "__DSP_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 3U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group ARMv8MML */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + - Core SAU Register + - Core FPU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:16; /*!< bit: 0..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:7; /*!< bit: 20..26 Reserved */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + +#define APSR_Q_Pos 27U /*!< APSR: Q Position */ +#define APSR_Q_Msk (1UL << APSR_Q_Pos) /*!< APSR: Q Mask */ + +#define APSR_GE_Pos 16U /*!< APSR: GE Position */ +#define APSR_GE_Msk (0xFUL << APSR_GE_Pos) /*!< APSR: GE Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:7; /*!< bit: 9..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:4; /*!< bit: 20..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t IT:2; /*!< bit: 25..26 saved IT state (read 0) */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_Q_Pos 27U /*!< xPSR: Q Position */ +#define xPSR_Q_Msk (1UL << xPSR_Q_Pos) /*!< xPSR: Q Mask */ + +#define xPSR_IT_Pos 25U /*!< xPSR: IT Position */ +#define xPSR_IT_Msk (3UL << xPSR_IT_Pos) /*!< xPSR: IT Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_GE_Pos 16U /*!< xPSR: GE Position */ +#define xPSR_GE_Msk (0xFUL << xPSR_GE_Pos) /*!< xPSR: GE Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack-pointer select */ + uint32_t FPCA:1; /*!< bit: 2 Floating-point context active */ + uint32_t SFPA:1; /*!< bit: 3 Secure floating-point active */ + uint32_t _reserved1:28; /*!< bit: 4..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SFPA_Pos 3U /*!< CONTROL: SFPA Position */ +#define CONTROL_SFPA_Msk (1UL << CONTROL_SFPA_Pos) /*!< CONTROL: SFPA Mask */ + +#define CONTROL_FPCA_Pos 2U /*!< CONTROL: FPCA Position */ +#define CONTROL_FPCA_Msk (1UL << CONTROL_FPCA_Pos) /*!< CONTROL: FPCA Mask */ + +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[16U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[16U]; + __IOM uint32_t ICER[16U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[16U]; + __IOM uint32_t ISPR[16U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[16U]; + __IOM uint32_t ICPR[16U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[16U]; + __IOM uint32_t IABR[16U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[16U]; + __IOM uint32_t ITNS[16U]; /*!< Offset: 0x280 (R/W) Interrupt Non-Secure State Register */ + uint32_t RESERVED5[16U]; + __IOM uint8_t IPR[496U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED6[580U]; + __OM uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */ +} NVIC_Type; + +/* Software Triggered Interrupt Register Definitions */ +#define NVIC_STIR_INTID_Pos 0U /*!< STIR: INTLINESNUM Position */ +#define NVIC_STIR_INTID_Msk (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/) /*!< STIR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + __IOM uint8_t SHPR[12U]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + __IOM uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */ + __IOM uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ + __IOM uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ + __IOM uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */ + __IOM uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ + __IOM uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */ + __IM uint32_t ID_PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + __IM uint32_t ID_DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + __IM uint32_t ID_ADR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __IM uint32_t ID_MMFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __IM uint32_t ID_ISAR[6U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + __IM uint32_t CLIDR; /*!< Offset: 0x078 (R/ ) Cache Level ID register */ + __IM uint32_t CTR; /*!< Offset: 0x07C (R/ ) Cache Type register */ + __IM uint32_t CCSIDR; /*!< Offset: 0x080 (R/ ) Cache Size ID Register */ + __IOM uint32_t CSSELR; /*!< Offset: 0x084 (R/W) Cache Size Selection Register */ + __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ + __IOM uint32_t NSACR; /*!< Offset: 0x08C (R/W) Non-Secure Access Control Register */ + uint32_t RESERVED3[92U]; + __OM uint32_t STIR; /*!< Offset: 0x200 ( /W) Software Triggered Interrupt Register */ + uint32_t RESERVED4[15U]; + __IM uint32_t MVFR0; /*!< Offset: 0x240 (R/ ) Media and VFP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x244 (R/ ) Media and VFP Feature Register 1 */ + __IM uint32_t MVFR2; /*!< Offset: 0x248 (R/ ) Media and VFP Feature Register 2 */ + uint32_t RESERVED5[1U]; + __OM uint32_t ICIALLU; /*!< Offset: 0x250 ( /W) I-Cache Invalidate All to PoU */ + uint32_t RESERVED6[1U]; + __OM uint32_t ICIMVAU; /*!< Offset: 0x258 ( /W) I-Cache Invalidate by MVA to PoU */ + __OM uint32_t DCIMVAC; /*!< Offset: 0x25C ( /W) D-Cache Invalidate by MVA to PoC */ + __OM uint32_t DCISW; /*!< Offset: 0x260 ( /W) D-Cache Invalidate by Set-way */ + __OM uint32_t DCCMVAU; /*!< Offset: 0x264 ( /W) D-Cache Clean by MVA to PoU */ + __OM uint32_t DCCMVAC; /*!< Offset: 0x268 ( /W) D-Cache Clean by MVA to PoC */ + __OM uint32_t DCCSW; /*!< Offset: 0x26C ( /W) D-Cache Clean by Set-way */ + __OM uint32_t DCCIMVAC; /*!< Offset: 0x270 ( /W) D-Cache Clean and Invalidate by MVA to PoC */ + __OM uint32_t DCCISW; /*!< Offset: 0x274 ( /W) D-Cache Clean and Invalidate by Set-way */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_PENDNMISET_Pos 31U /*!< SCB ICSR: PENDNMISET Position */ +#define SCB_ICSR_PENDNMISET_Msk (1UL << SCB_ICSR_PENDNMISET_Pos) /*!< SCB ICSR: PENDNMISET Mask */ + +#define SCB_ICSR_NMIPENDSET_Pos SCB_ICSR_PENDNMISET_Pos /*!< SCB ICSR: NMIPENDSET Position, backward compatibility */ +#define SCB_ICSR_NMIPENDSET_Msk SCB_ICSR_PENDNMISET_Msk /*!< SCB ICSR: NMIPENDSET Mask, backward compatibility */ + +#define SCB_ICSR_PENDNMICLR_Pos 30U /*!< SCB ICSR: PENDNMICLR Position */ +#define SCB_ICSR_PENDNMICLR_Msk (1UL << SCB_ICSR_PENDNMICLR_Pos) /*!< SCB ICSR: PENDNMICLR Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_STTNS_Pos 24U /*!< SCB ICSR: STTNS Position (Security Extension) */ +#define SCB_ICSR_STTNS_Msk (1UL << SCB_ICSR_STTNS_Pos) /*!< SCB ICSR: STTNS Mask (Security Extension) */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Vector Table Offset Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_PRIS_Pos 14U /*!< SCB AIRCR: PRIS Position */ +#define SCB_AIRCR_PRIS_Msk (1UL << SCB_AIRCR_PRIS_Pos) /*!< SCB AIRCR: PRIS Mask */ + +#define SCB_AIRCR_BFHFNMINS_Pos 13U /*!< SCB AIRCR: BFHFNMINS Position */ +#define SCB_AIRCR_BFHFNMINS_Msk (1UL << SCB_AIRCR_BFHFNMINS_Pos) /*!< SCB AIRCR: BFHFNMINS Mask */ + +#define SCB_AIRCR_PRIGROUP_Pos 8U /*!< SCB AIRCR: PRIGROUP Position */ +#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ + +#define SCB_AIRCR_SYSRESETREQS_Pos 3U /*!< SCB AIRCR: SYSRESETREQS Position */ +#define SCB_AIRCR_SYSRESETREQS_Msk (1UL << SCB_AIRCR_SYSRESETREQS_Pos) /*!< SCB AIRCR: SYSRESETREQS Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEPS_Pos 3U /*!< SCB SCR: SLEEPDEEPS Position */ +#define SCB_SCR_SLEEPDEEPS_Msk (1UL << SCB_SCR_SLEEPDEEPS_Pos) /*!< SCB SCR: SLEEPDEEPS Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_BP_Pos 18U /*!< SCB CCR: BP Position */ +#define SCB_CCR_BP_Msk (1UL << SCB_CCR_BP_Pos) /*!< SCB CCR: BP Mask */ + +#define SCB_CCR_IC_Pos 17U /*!< SCB CCR: IC Position */ +#define SCB_CCR_IC_Msk (1UL << SCB_CCR_IC_Pos) /*!< SCB CCR: IC Mask */ + +#define SCB_CCR_DC_Pos 16U /*!< SCB CCR: DC Position */ +#define SCB_CCR_DC_Msk (1UL << SCB_CCR_DC_Pos) /*!< SCB CCR: DC Mask */ + +#define SCB_CCR_STKOFHFNMIGN_Pos 10U /*!< SCB CCR: STKOFHFNMIGN Position */ +#define SCB_CCR_STKOFHFNMIGN_Msk (1UL << SCB_CCR_STKOFHFNMIGN_Pos) /*!< SCB CCR: STKOFHFNMIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_HARDFAULTPENDED_Pos 21U /*!< SCB SHCSR: HARDFAULTPENDED Position */ +#define SCB_SHCSR_HARDFAULTPENDED_Msk (1UL << SCB_SHCSR_HARDFAULTPENDED_Pos) /*!< SCB SHCSR: HARDFAULTPENDED Mask */ + +#define SCB_SHCSR_SECUREFAULTPENDED_Pos 20U /*!< SCB SHCSR: SECUREFAULTPENDED Position */ +#define SCB_SHCSR_SECUREFAULTPENDED_Msk (1UL << SCB_SHCSR_SECUREFAULTPENDED_Pos) /*!< SCB SHCSR: SECUREFAULTPENDED Mask */ + +#define SCB_SHCSR_SECUREFAULTENA_Pos 19U /*!< SCB SHCSR: SECUREFAULTENA Position */ +#define SCB_SHCSR_SECUREFAULTENA_Msk (1UL << SCB_SHCSR_SECUREFAULTENA_Pos) /*!< SCB SHCSR: SECUREFAULTENA Mask */ + +#define SCB_SHCSR_USGFAULTENA_Pos 18U /*!< SCB SHCSR: USGFAULTENA Position */ +#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ + +#define SCB_SHCSR_BUSFAULTENA_Pos 17U /*!< SCB SHCSR: BUSFAULTENA Position */ +#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ + +#define SCB_SHCSR_MEMFAULTENA_Pos 16U /*!< SCB SHCSR: MEMFAULTENA Position */ +#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_BUSFAULTPENDED_Pos 14U /*!< SCB SHCSR: BUSFAULTPENDED Position */ +#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ + +#define SCB_SHCSR_MEMFAULTPENDED_Pos 13U /*!< SCB SHCSR: MEMFAULTPENDED Position */ +#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ + +#define SCB_SHCSR_USGFAULTPENDED_Pos 12U /*!< SCB SHCSR: USGFAULTPENDED Position */ +#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_MONITORACT_Pos 8U /*!< SCB SHCSR: MONITORACT Position */ +#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_NMIACT_Pos 5U /*!< SCB SHCSR: NMIACT Position */ +#define SCB_SHCSR_NMIACT_Msk (1UL << SCB_SHCSR_NMIACT_Pos) /*!< SCB SHCSR: NMIACT Mask */ + +#define SCB_SHCSR_SECUREFAULTACT_Pos 4U /*!< SCB SHCSR: SECUREFAULTACT Position */ +#define SCB_SHCSR_SECUREFAULTACT_Msk (1UL << SCB_SHCSR_SECUREFAULTACT_Pos) /*!< SCB SHCSR: SECUREFAULTACT Mask */ + +#define SCB_SHCSR_USGFAULTACT_Pos 3U /*!< SCB SHCSR: USGFAULTACT Position */ +#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ + +#define SCB_SHCSR_HARDFAULTACT_Pos 2U /*!< SCB SHCSR: HARDFAULTACT Position */ +#define SCB_SHCSR_HARDFAULTACT_Msk (1UL << SCB_SHCSR_HARDFAULTACT_Pos) /*!< SCB SHCSR: HARDFAULTACT Mask */ + +#define SCB_SHCSR_BUSFAULTACT_Pos 1U /*!< SCB SHCSR: BUSFAULTACT Position */ +#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ + +#define SCB_SHCSR_MEMFAULTACT_Pos 0U /*!< SCB SHCSR: MEMFAULTACT Position */ +#define SCB_SHCSR_MEMFAULTACT_Msk (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/) /*!< SCB SHCSR: MEMFAULTACT Mask */ + +/* SCB Configurable Fault Status Register Definitions */ +#define SCB_CFSR_USGFAULTSR_Pos 16U /*!< SCB CFSR: Usage Fault Status Register Position */ +#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ + +#define SCB_CFSR_BUSFAULTSR_Pos 8U /*!< SCB CFSR: Bus Fault Status Register Position */ +#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ + +#define SCB_CFSR_MEMFAULTSR_Pos 0U /*!< SCB CFSR: Memory Manage Fault Status Register Position */ +#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ + +/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_MMARVALID_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 7U) /*!< SCB CFSR (MMFSR): MMARVALID Position */ +#define SCB_CFSR_MMARVALID_Msk (1UL << SCB_CFSR_MMARVALID_Pos) /*!< SCB CFSR (MMFSR): MMARVALID Mask */ + +#define SCB_CFSR_MLSPERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 5U) /*!< SCB CFSR (MMFSR): MLSPERR Position */ +#define SCB_CFSR_MLSPERR_Msk (1UL << SCB_CFSR_MLSPERR_Pos) /*!< SCB CFSR (MMFSR): MLSPERR Mask */ + +#define SCB_CFSR_MSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 4U) /*!< SCB CFSR (MMFSR): MSTKERR Position */ +#define SCB_CFSR_MSTKERR_Msk (1UL << SCB_CFSR_MSTKERR_Pos) /*!< SCB CFSR (MMFSR): MSTKERR Mask */ + +#define SCB_CFSR_MUNSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 3U) /*!< SCB CFSR (MMFSR): MUNSTKERR Position */ +#define SCB_CFSR_MUNSTKERR_Msk (1UL << SCB_CFSR_MUNSTKERR_Pos) /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */ + +#define SCB_CFSR_DACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 1U) /*!< SCB CFSR (MMFSR): DACCVIOL Position */ +#define SCB_CFSR_DACCVIOL_Msk (1UL << SCB_CFSR_DACCVIOL_Pos) /*!< SCB CFSR (MMFSR): DACCVIOL Mask */ + +#define SCB_CFSR_IACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 0U) /*!< SCB CFSR (MMFSR): IACCVIOL Position */ +#define SCB_CFSR_IACCVIOL_Msk (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/) /*!< SCB CFSR (MMFSR): IACCVIOL Mask */ + +/* BusFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_BFARVALID_Pos (SCB_CFSR_BUSFAULTSR_Pos + 7U) /*!< SCB CFSR (BFSR): BFARVALID Position */ +#define SCB_CFSR_BFARVALID_Msk (1UL << SCB_CFSR_BFARVALID_Pos) /*!< SCB CFSR (BFSR): BFARVALID Mask */ + +#define SCB_CFSR_LSPERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 5U) /*!< SCB CFSR (BFSR): LSPERR Position */ +#define SCB_CFSR_LSPERR_Msk (1UL << SCB_CFSR_LSPERR_Pos) /*!< SCB CFSR (BFSR): LSPERR Mask */ + +#define SCB_CFSR_STKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 4U) /*!< SCB CFSR (BFSR): STKERR Position */ +#define SCB_CFSR_STKERR_Msk (1UL << SCB_CFSR_STKERR_Pos) /*!< SCB CFSR (BFSR): STKERR Mask */ + +#define SCB_CFSR_UNSTKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 3U) /*!< SCB CFSR (BFSR): UNSTKERR Position */ +#define SCB_CFSR_UNSTKERR_Msk (1UL << SCB_CFSR_UNSTKERR_Pos) /*!< SCB CFSR (BFSR): UNSTKERR Mask */ + +#define SCB_CFSR_IMPRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 2U) /*!< SCB CFSR (BFSR): IMPRECISERR Position */ +#define SCB_CFSR_IMPRECISERR_Msk (1UL << SCB_CFSR_IMPRECISERR_Pos) /*!< SCB CFSR (BFSR): IMPRECISERR Mask */ + +#define SCB_CFSR_PRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 1U) /*!< SCB CFSR (BFSR): PRECISERR Position */ +#define SCB_CFSR_PRECISERR_Msk (1UL << SCB_CFSR_PRECISERR_Pos) /*!< SCB CFSR (BFSR): PRECISERR Mask */ + +#define SCB_CFSR_IBUSERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 0U) /*!< SCB CFSR (BFSR): IBUSERR Position */ +#define SCB_CFSR_IBUSERR_Msk (1UL << SCB_CFSR_IBUSERR_Pos) /*!< SCB CFSR (BFSR): IBUSERR Mask */ + +/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_DIVBYZERO_Pos (SCB_CFSR_USGFAULTSR_Pos + 9U) /*!< SCB CFSR (UFSR): DIVBYZERO Position */ +#define SCB_CFSR_DIVBYZERO_Msk (1UL << SCB_CFSR_DIVBYZERO_Pos) /*!< SCB CFSR (UFSR): DIVBYZERO Mask */ + +#define SCB_CFSR_UNALIGNED_Pos (SCB_CFSR_USGFAULTSR_Pos + 8U) /*!< SCB CFSR (UFSR): UNALIGNED Position */ +#define SCB_CFSR_UNALIGNED_Msk (1UL << SCB_CFSR_UNALIGNED_Pos) /*!< SCB CFSR (UFSR): UNALIGNED Mask */ + +#define SCB_CFSR_STKOF_Pos (SCB_CFSR_USGFAULTSR_Pos + 4U) /*!< SCB CFSR (UFSR): STKOF Position */ +#define SCB_CFSR_STKOF_Msk (1UL << SCB_CFSR_STKOF_Pos) /*!< SCB CFSR (UFSR): STKOF Mask */ + +#define SCB_CFSR_NOCP_Pos (SCB_CFSR_USGFAULTSR_Pos + 3U) /*!< SCB CFSR (UFSR): NOCP Position */ +#define SCB_CFSR_NOCP_Msk (1UL << SCB_CFSR_NOCP_Pos) /*!< SCB CFSR (UFSR): NOCP Mask */ + +#define SCB_CFSR_INVPC_Pos (SCB_CFSR_USGFAULTSR_Pos + 2U) /*!< SCB CFSR (UFSR): INVPC Position */ +#define SCB_CFSR_INVPC_Msk (1UL << SCB_CFSR_INVPC_Pos) /*!< SCB CFSR (UFSR): INVPC Mask */ + +#define SCB_CFSR_INVSTATE_Pos (SCB_CFSR_USGFAULTSR_Pos + 1U) /*!< SCB CFSR (UFSR): INVSTATE Position */ +#define SCB_CFSR_INVSTATE_Msk (1UL << SCB_CFSR_INVSTATE_Pos) /*!< SCB CFSR (UFSR): INVSTATE Mask */ + +#define SCB_CFSR_UNDEFINSTR_Pos (SCB_CFSR_USGFAULTSR_Pos + 0U) /*!< SCB CFSR (UFSR): UNDEFINSTR Position */ +#define SCB_CFSR_UNDEFINSTR_Msk (1UL << SCB_CFSR_UNDEFINSTR_Pos) /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */ + +/* SCB Hard Fault Status Register Definitions */ +#define SCB_HFSR_DEBUGEVT_Pos 31U /*!< SCB HFSR: DEBUGEVT Position */ +#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ + +#define SCB_HFSR_FORCED_Pos 30U /*!< SCB HFSR: FORCED Position */ +#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ + +#define SCB_HFSR_VECTTBL_Pos 1U /*!< SCB HFSR: VECTTBL Position */ +#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ + +/* SCB Debug Fault Status Register Definitions */ +#define SCB_DFSR_EXTERNAL_Pos 4U /*!< SCB DFSR: EXTERNAL Position */ +#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ + +#define SCB_DFSR_VCATCH_Pos 3U /*!< SCB DFSR: VCATCH Position */ +#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ + +#define SCB_DFSR_DWTTRAP_Pos 2U /*!< SCB DFSR: DWTTRAP Position */ +#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ + +#define SCB_DFSR_BKPT_Pos 1U /*!< SCB DFSR: BKPT Position */ +#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ + +#define SCB_DFSR_HALTED_Pos 0U /*!< SCB DFSR: HALTED Position */ +#define SCB_DFSR_HALTED_Msk (1UL /*<< SCB_DFSR_HALTED_Pos*/) /*!< SCB DFSR: HALTED Mask */ + +/* SCB Non-Secure Access Control Register Definitions */ +#define SCB_NSACR_CP11_Pos 11U /*!< SCB NSACR: CP11 Position */ +#define SCB_NSACR_CP11_Msk (1UL << SCB_NSACR_CP11_Pos) /*!< SCB NSACR: CP11 Mask */ + +#define SCB_NSACR_CP10_Pos 10U /*!< SCB NSACR: CP10 Position */ +#define SCB_NSACR_CP10_Msk (1UL << SCB_NSACR_CP10_Pos) /*!< SCB NSACR: CP10 Mask */ + +#define SCB_NSACR_CPn_Pos 0U /*!< SCB NSACR: CPn Position */ +#define SCB_NSACR_CPn_Msk (1UL /*<< SCB_NSACR_CPn_Pos*/) /*!< SCB NSACR: CPn Mask */ + +/* SCB Cache Level ID Register Definitions */ +#define SCB_CLIDR_LOUU_Pos 27U /*!< SCB CLIDR: LoUU Position */ +#define SCB_CLIDR_LOUU_Msk (7UL << SCB_CLIDR_LOUU_Pos) /*!< SCB CLIDR: LoUU Mask */ + +#define SCB_CLIDR_LOC_Pos 24U /*!< SCB CLIDR: LoC Position */ +#define SCB_CLIDR_LOC_Msk (7UL << SCB_CLIDR_LOC_Pos) /*!< SCB CLIDR: LoC Mask */ + +/* SCB Cache Type Register Definitions */ +#define SCB_CTR_FORMAT_Pos 29U /*!< SCB CTR: Format Position */ +#define SCB_CTR_FORMAT_Msk (7UL << SCB_CTR_FORMAT_Pos) /*!< SCB CTR: Format Mask */ + +#define SCB_CTR_CWG_Pos 24U /*!< SCB CTR: CWG Position */ +#define SCB_CTR_CWG_Msk (0xFUL << SCB_CTR_CWG_Pos) /*!< SCB CTR: CWG Mask */ + +#define SCB_CTR_ERG_Pos 20U /*!< SCB CTR: ERG Position */ +#define SCB_CTR_ERG_Msk (0xFUL << SCB_CTR_ERG_Pos) /*!< SCB CTR: ERG Mask */ + +#define SCB_CTR_DMINLINE_Pos 16U /*!< SCB CTR: DminLine Position */ +#define SCB_CTR_DMINLINE_Msk (0xFUL << SCB_CTR_DMINLINE_Pos) /*!< SCB CTR: DminLine Mask */ + +#define SCB_CTR_IMINLINE_Pos 0U /*!< SCB CTR: ImInLine Position */ +#define SCB_CTR_IMINLINE_Msk (0xFUL /*<< SCB_CTR_IMINLINE_Pos*/) /*!< SCB CTR: ImInLine Mask */ + +/* SCB Cache Size ID Register Definitions */ +#define SCB_CCSIDR_WT_Pos 31U /*!< SCB CCSIDR: WT Position */ +#define SCB_CCSIDR_WT_Msk (1UL << SCB_CCSIDR_WT_Pos) /*!< SCB CCSIDR: WT Mask */ + +#define SCB_CCSIDR_WB_Pos 30U /*!< SCB CCSIDR: WB Position */ +#define SCB_CCSIDR_WB_Msk (1UL << SCB_CCSIDR_WB_Pos) /*!< SCB CCSIDR: WB Mask */ + +#define SCB_CCSIDR_RA_Pos 29U /*!< SCB CCSIDR: RA Position */ +#define SCB_CCSIDR_RA_Msk (1UL << SCB_CCSIDR_RA_Pos) /*!< SCB CCSIDR: RA Mask */ + +#define SCB_CCSIDR_WA_Pos 28U /*!< SCB CCSIDR: WA Position */ +#define SCB_CCSIDR_WA_Msk (1UL << SCB_CCSIDR_WA_Pos) /*!< SCB CCSIDR: WA Mask */ + +#define SCB_CCSIDR_NUMSETS_Pos 13U /*!< SCB CCSIDR: NumSets Position */ +#define SCB_CCSIDR_NUMSETS_Msk (0x7FFFUL << SCB_CCSIDR_NUMSETS_Pos) /*!< SCB CCSIDR: NumSets Mask */ + +#define SCB_CCSIDR_ASSOCIATIVITY_Pos 3U /*!< SCB CCSIDR: Associativity Position */ +#define SCB_CCSIDR_ASSOCIATIVITY_Msk (0x3FFUL << SCB_CCSIDR_ASSOCIATIVITY_Pos) /*!< SCB CCSIDR: Associativity Mask */ + +#define SCB_CCSIDR_LINESIZE_Pos 0U /*!< SCB CCSIDR: LineSize Position */ +#define SCB_CCSIDR_LINESIZE_Msk (7UL /*<< SCB_CCSIDR_LINESIZE_Pos*/) /*!< SCB CCSIDR: LineSize Mask */ + +/* SCB Cache Size Selection Register Definitions */ +#define SCB_CSSELR_LEVEL_Pos 1U /*!< SCB CSSELR: Level Position */ +#define SCB_CSSELR_LEVEL_Msk (7UL << SCB_CSSELR_LEVEL_Pos) /*!< SCB CSSELR: Level Mask */ + +#define SCB_CSSELR_IND_Pos 0U /*!< SCB CSSELR: InD Position */ +#define SCB_CSSELR_IND_Msk (1UL /*<< SCB_CSSELR_IND_Pos*/) /*!< SCB CSSELR: InD Mask */ + +/* SCB Software Triggered Interrupt Register Definitions */ +#define SCB_STIR_INTID_Pos 0U /*!< SCB STIR: INTID Position */ +#define SCB_STIR_INTID_Msk (0x1FFUL /*<< SCB_STIR_INTID_Pos*/) /*!< SCB STIR: INTID Mask */ + +/* SCB D-Cache Invalidate by Set-way Register Definitions */ +#define SCB_DCISW_WAY_Pos 30U /*!< SCB DCISW: Way Position */ +#define SCB_DCISW_WAY_Msk (3UL << SCB_DCISW_WAY_Pos) /*!< SCB DCISW: Way Mask */ + +#define SCB_DCISW_SET_Pos 5U /*!< SCB DCISW: Set Position */ +#define SCB_DCISW_SET_Msk (0x1FFUL << SCB_DCISW_SET_Pos) /*!< SCB DCISW: Set Mask */ + +/* SCB D-Cache Clean by Set-way Register Definitions */ +#define SCB_DCCSW_WAY_Pos 30U /*!< SCB DCCSW: Way Position */ +#define SCB_DCCSW_WAY_Msk (3UL << SCB_DCCSW_WAY_Pos) /*!< SCB DCCSW: Way Mask */ + +#define SCB_DCCSW_SET_Pos 5U /*!< SCB DCCSW: Set Position */ +#define SCB_DCCSW_SET_Msk (0x1FFUL << SCB_DCCSW_SET_Pos) /*!< SCB DCCSW: Set Mask */ + +/* SCB D-Cache Clean and Invalidate by Set-way Register Definitions */ +#define SCB_DCCISW_WAY_Pos 30U /*!< SCB DCCISW: Way Position */ +#define SCB_DCCISW_WAY_Msk (3UL << SCB_DCCISW_WAY_Pos) /*!< SCB DCCISW: Way Mask */ + +#define SCB_DCCISW_SET_Pos 5U /*!< SCB DCCISW: Set Position */ +#define SCB_DCCISW_SET_Msk (0x1FFUL << SCB_DCCISW_SET_Pos) /*!< SCB DCCISW: Set Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** + \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IM uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */ + __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ + __IOM uint32_t CPPWR; /*!< Offset: 0x00C (R/W) Coprocessor Power Control Register */ +} SCnSCB_Type; + +/* Interrupt Controller Type Register Definitions */ +#define SCnSCB_ICTR_INTLINESNUM_Pos 0U /*!< ICTR: INTLINESNUM Position */ +#define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/) /*!< ICTR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_ITM Instrumentation Trace Macrocell (ITM) + \brief Type definitions for the Instrumentation Trace Macrocell (ITM) + @{ + */ + +/** + \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). + */ +typedef struct +{ + __OM union + { + __OM uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ + __OM uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ + __OM uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ + } PORT [32U]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ + uint32_t RESERVED0[864U]; + __IOM uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ + uint32_t RESERVED1[15U]; + __IOM uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ + uint32_t RESERVED2[15U]; + __IOM uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ + uint32_t RESERVED3[32U]; + uint32_t RESERVED4[43U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */ + uint32_t RESERVED5[1U]; + __IM uint32_t DEVARCH; /*!< Offset: 0xFBC (R/ ) ITM Device Architecture Register */ + uint32_t RESERVED6[4U]; + __IM uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Register #4 */ + __IM uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Register #5 */ + __IM uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Register #6 */ + __IM uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Register #7 */ + __IM uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Register #0 */ + __IM uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Register #1 */ + __IM uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Register #2 */ + __IM uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Register #3 */ + __IM uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Register #0 */ + __IM uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Register #1 */ + __IM uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Register #2 */ + __IM uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Register #3 */ +} ITM_Type; + +/* ITM Stimulus Port Register Definitions */ +#define ITM_STIM_DISABLED_Pos 1U /*!< ITM STIM: DISABLED Position */ +#define ITM_STIM_DISABLED_Msk (0x1UL << ITM_STIM_DISABLED_Pos) /*!< ITM STIM: DISABLED Mask */ + +#define ITM_STIM_FIFOREADY_Pos 0U /*!< ITM STIM: FIFOREADY Position */ +#define ITM_STIM_FIFOREADY_Msk (0x1UL /*<< ITM_STIM_FIFOREADY_Pos*/) /*!< ITM STIM: FIFOREADY Mask */ + +/* ITM Trace Privilege Register Definitions */ +#define ITM_TPR_PRIVMASK_Pos 0U /*!< ITM TPR: PRIVMASK Position */ +#define ITM_TPR_PRIVMASK_Msk (0xFUL /*<< ITM_TPR_PRIVMASK_Pos*/) /*!< ITM TPR: PRIVMASK Mask */ + +/* ITM Trace Control Register Definitions */ +#define ITM_TCR_BUSY_Pos 23U /*!< ITM TCR: BUSY Position */ +#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ + +#define ITM_TCR_TRACEBUSID_Pos 16U /*!< ITM TCR: ATBID Position */ +#define ITM_TCR_TRACEBUSID_Msk (0x7FUL << ITM_TCR_TRACEBUSID_Pos) /*!< ITM TCR: ATBID Mask */ + +#define ITM_TCR_GTSFREQ_Pos 10U /*!< ITM TCR: Global timestamp frequency Position */ +#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */ + +#define ITM_TCR_TSPRESCALE_Pos 8U /*!< ITM TCR: TSPRESCALE Position */ +#define ITM_TCR_TSPRESCALE_Msk (3UL << ITM_TCR_TSPRESCALE_Pos) /*!< ITM TCR: TSPRESCALE Mask */ + +#define ITM_TCR_STALLENA_Pos 5U /*!< ITM TCR: STALLENA Position */ +#define ITM_TCR_STALLENA_Msk (1UL << ITM_TCR_STALLENA_Pos) /*!< ITM TCR: STALLENA Mask */ + +#define ITM_TCR_SWOENA_Pos 4U /*!< ITM TCR: SWOENA Position */ +#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ + +#define ITM_TCR_DWTENA_Pos 3U /*!< ITM TCR: DWTENA Position */ +#define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ + +#define ITM_TCR_SYNCENA_Pos 2U /*!< ITM TCR: SYNCENA Position */ +#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ + +#define ITM_TCR_TSENA_Pos 1U /*!< ITM TCR: TSENA Position */ +#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ + +#define ITM_TCR_ITMENA_Pos 0U /*!< ITM TCR: ITM Enable bit Position */ +#define ITM_TCR_ITMENA_Msk (1UL /*<< ITM_TCR_ITMENA_Pos*/) /*!< ITM TCR: ITM Enable bit Mask */ + +/* ITM Lock Status Register Definitions */ +#define ITM_LSR_ByteAcc_Pos 2U /*!< ITM LSR: ByteAcc Position */ +#define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ + +#define ITM_LSR_Access_Pos 1U /*!< ITM LSR: Access Position */ +#define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ + +#define ITM_LSR_Present_Pos 0U /*!< ITM LSR: Present Position */ +#define ITM_LSR_Present_Msk (1UL /*<< ITM_LSR_Present_Pos*/) /*!< ITM LSR: Present Mask */ + +/*@}*/ /* end of group CMSIS_ITM */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + __IOM uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */ + __IOM uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */ + __IOM uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Register */ + __IOM uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */ + __IOM uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */ + __IOM uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Register */ + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + uint32_t RESERVED3[1U]; + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED4[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + uint32_t RESERVED5[1U]; + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED6[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + uint32_t RESERVED7[1U]; + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ + uint32_t RESERVED8[1U]; + __IOM uint32_t COMP4; /*!< Offset: 0x060 (R/W) Comparator Register 4 */ + uint32_t RESERVED9[1U]; + __IOM uint32_t FUNCTION4; /*!< Offset: 0x068 (R/W) Function Register 4 */ + uint32_t RESERVED10[1U]; + __IOM uint32_t COMP5; /*!< Offset: 0x070 (R/W) Comparator Register 5 */ + uint32_t RESERVED11[1U]; + __IOM uint32_t FUNCTION5; /*!< Offset: 0x078 (R/W) Function Register 5 */ + uint32_t RESERVED12[1U]; + __IOM uint32_t COMP6; /*!< Offset: 0x080 (R/W) Comparator Register 6 */ + uint32_t RESERVED13[1U]; + __IOM uint32_t FUNCTION6; /*!< Offset: 0x088 (R/W) Function Register 6 */ + uint32_t RESERVED14[1U]; + __IOM uint32_t COMP7; /*!< Offset: 0x090 (R/W) Comparator Register 7 */ + uint32_t RESERVED15[1U]; + __IOM uint32_t FUNCTION7; /*!< Offset: 0x098 (R/W) Function Register 7 */ + uint32_t RESERVED16[1U]; + __IOM uint32_t COMP8; /*!< Offset: 0x0A0 (R/W) Comparator Register 8 */ + uint32_t RESERVED17[1U]; + __IOM uint32_t FUNCTION8; /*!< Offset: 0x0A8 (R/W) Function Register 8 */ + uint32_t RESERVED18[1U]; + __IOM uint32_t COMP9; /*!< Offset: 0x0B0 (R/W) Comparator Register 9 */ + uint32_t RESERVED19[1U]; + __IOM uint32_t FUNCTION9; /*!< Offset: 0x0B8 (R/W) Function Register 9 */ + uint32_t RESERVED20[1U]; + __IOM uint32_t COMP10; /*!< Offset: 0x0C0 (R/W) Comparator Register 10 */ + uint32_t RESERVED21[1U]; + __IOM uint32_t FUNCTION10; /*!< Offset: 0x0C8 (R/W) Function Register 10 */ + uint32_t RESERVED22[1U]; + __IOM uint32_t COMP11; /*!< Offset: 0x0D0 (R/W) Comparator Register 11 */ + uint32_t RESERVED23[1U]; + __IOM uint32_t FUNCTION11; /*!< Offset: 0x0D8 (R/W) Function Register 11 */ + uint32_t RESERVED24[1U]; + __IOM uint32_t COMP12; /*!< Offset: 0x0E0 (R/W) Comparator Register 12 */ + uint32_t RESERVED25[1U]; + __IOM uint32_t FUNCTION12; /*!< Offset: 0x0E8 (R/W) Function Register 12 */ + uint32_t RESERVED26[1U]; + __IOM uint32_t COMP13; /*!< Offset: 0x0F0 (R/W) Comparator Register 13 */ + uint32_t RESERVED27[1U]; + __IOM uint32_t FUNCTION13; /*!< Offset: 0x0F8 (R/W) Function Register 13 */ + uint32_t RESERVED28[1U]; + __IOM uint32_t COMP14; /*!< Offset: 0x100 (R/W) Comparator Register 14 */ + uint32_t RESERVED29[1U]; + __IOM uint32_t FUNCTION14; /*!< Offset: 0x108 (R/W) Function Register 14 */ + uint32_t RESERVED30[1U]; + __IOM uint32_t COMP15; /*!< Offset: 0x110 (R/W) Comparator Register 15 */ + uint32_t RESERVED31[1U]; + __IOM uint32_t FUNCTION15; /*!< Offset: 0x118 (R/W) Function Register 15 */ + uint32_t RESERVED32[934U]; + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R ) Lock Status Register */ + uint32_t RESERVED33[1U]; + __IM uint32_t DEVARCH; /*!< Offset: 0xFBC (R/ ) Device Architecture Register */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +#define DWT_CTRL_CYCDISS_Pos 23U /*!< DWT CTRL: CYCDISS Position */ +#define DWT_CTRL_CYCDISS_Msk (0x1UL << DWT_CTRL_CYCDISS_Pos) /*!< DWT CTRL: CYCDISS Mask */ + +#define DWT_CTRL_CYCEVTENA_Pos 22U /*!< DWT CTRL: CYCEVTENA Position */ +#define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTRL: CYCEVTENA Mask */ + +#define DWT_CTRL_FOLDEVTENA_Pos 21U /*!< DWT CTRL: FOLDEVTENA Position */ +#define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTRL: FOLDEVTENA Mask */ + +#define DWT_CTRL_LSUEVTENA_Pos 20U /*!< DWT CTRL: LSUEVTENA Position */ +#define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTRL: LSUEVTENA Mask */ + +#define DWT_CTRL_SLEEPEVTENA_Pos 19U /*!< DWT CTRL: SLEEPEVTENA Position */ +#define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTRL: SLEEPEVTENA Mask */ + +#define DWT_CTRL_EXCEVTENA_Pos 18U /*!< DWT CTRL: EXCEVTENA Position */ +#define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTRL: EXCEVTENA Mask */ + +#define DWT_CTRL_CPIEVTENA_Pos 17U /*!< DWT CTRL: CPIEVTENA Position */ +#define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTRL: CPIEVTENA Mask */ + +#define DWT_CTRL_EXCTRCENA_Pos 16U /*!< DWT CTRL: EXCTRCENA Position */ +#define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTRL: EXCTRCENA Mask */ + +#define DWT_CTRL_PCSAMPLENA_Pos 12U /*!< DWT CTRL: PCSAMPLENA Position */ +#define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTRL: PCSAMPLENA Mask */ + +#define DWT_CTRL_SYNCTAP_Pos 10U /*!< DWT CTRL: SYNCTAP Position */ +#define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTRL: SYNCTAP Mask */ + +#define DWT_CTRL_CYCTAP_Pos 9U /*!< DWT CTRL: CYCTAP Position */ +#define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTRL: CYCTAP Mask */ + +#define DWT_CTRL_POSTINIT_Pos 5U /*!< DWT CTRL: POSTINIT Position */ +#define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTRL: POSTINIT Mask */ + +#define DWT_CTRL_POSTPRESET_Pos 1U /*!< DWT CTRL: POSTPRESET Position */ +#define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTRL: POSTPRESET Mask */ + +#define DWT_CTRL_CYCCNTENA_Pos 0U /*!< DWT CTRL: CYCCNTENA Position */ +#define DWT_CTRL_CYCCNTENA_Msk (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/) /*!< DWT CTRL: CYCCNTENA Mask */ + +/* DWT CPI Count Register Definitions */ +#define DWT_CPICNT_CPICNT_Pos 0U /*!< DWT CPICNT: CPICNT Position */ +#define DWT_CPICNT_CPICNT_Msk (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/) /*!< DWT CPICNT: CPICNT Mask */ + +/* DWT Exception Overhead Count Register Definitions */ +#define DWT_EXCCNT_EXCCNT_Pos 0U /*!< DWT EXCCNT: EXCCNT Position */ +#define DWT_EXCCNT_EXCCNT_Msk (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/) /*!< DWT EXCCNT: EXCCNT Mask */ + +/* DWT Sleep Count Register Definitions */ +#define DWT_SLEEPCNT_SLEEPCNT_Pos 0U /*!< DWT SLEEPCNT: SLEEPCNT Position */ +#define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/) /*!< DWT SLEEPCNT: SLEEPCNT Mask */ + +/* DWT LSU Count Register Definitions */ +#define DWT_LSUCNT_LSUCNT_Pos 0U /*!< DWT LSUCNT: LSUCNT Position */ +#define DWT_LSUCNT_LSUCNT_Msk (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/) /*!< DWT LSUCNT: LSUCNT Mask */ + +/* DWT Folded-instruction Count Register Definitions */ +#define DWT_FOLDCNT_FOLDCNT_Pos 0U /*!< DWT FOLDCNT: FOLDCNT Position */ +#define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/) /*!< DWT FOLDCNT: FOLDCNT Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_ID_Pos 27U /*!< DWT FUNCTION: ID Position */ +#define DWT_FUNCTION_ID_Msk (0x1FUL << DWT_FUNCTION_ID_Pos) /*!< DWT FUNCTION: ID Mask */ + +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_ACTION_Pos 4U /*!< DWT FUNCTION: ACTION Position */ +#define DWT_FUNCTION_ACTION_Msk (0x1UL << DWT_FUNCTION_ACTION_Pos) /*!< DWT FUNCTION: ACTION Mask */ + +#define DWT_FUNCTION_MATCH_Pos 0U /*!< DWT FUNCTION: MATCH Position */ +#define DWT_FUNCTION_MATCH_Msk (0xFUL /*<< DWT_FUNCTION_MATCH_Pos*/) /*!< DWT FUNCTION: MATCH Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Sizes Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Sizes Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IOM uint32_t PSCR; /*!< Offset: 0x308 (R/W) Periodic Synchronization Control Register */ + uint32_t RESERVED3[809U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) Software Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) Software Lock Status Register */ + uint32_t RESERVED4[4U]; + __IM uint32_t TYPE; /*!< Offset: 0xFC8 (R/ ) Device Identifier Register */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) Device Type Register */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_SWOSCALER_Pos 0U /*!< TPI ACPR: SWOSCALER Position */ +#define TPI_ACPR_SWOSCALER_Msk (0xFFFFUL /*<< TPI_ACPR_SWOSCALER_Pos*/) /*!< TPI ACPR: SWOSCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_FOnMan_Pos 6U /*!< TPI FFCR: FOnMan Position */ +#define TPI_FFCR_FOnMan_Msk (0x1UL << TPI_FFCR_FOnMan_Pos) /*!< TPI FFCR: FOnMan Mask */ + +#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */ +#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ + +/* TPI Periodic Synchronization Control Register Definitions */ +#define TPI_PSCR_PSCount_Pos 0U /*!< TPI PSCR: PSCount Position */ +#define TPI_PSCR_PSCount_Msk (0x1FUL /*<< TPI_PSCR_PSCount_Pos*/) /*!< TPI PSCR: TPSCount Mask */ + +/* TPI Software Lock Status Register Definitions */ +#define TPI_LSR_nTT_Pos 1U /*!< TPI LSR: Not thirty-two bit. Position */ +#define TPI_LSR_nTT_Msk (0x1UL << TPI_LSR_nTT_Pos) /*!< TPI LSR: Not thirty-two bit. Mask */ + +#define TPI_LSR_SLK_Pos 1U /*!< TPI LSR: Software Lock status Position */ +#define TPI_LSR_SLK_Msk (0x1UL << TPI_LSR_SLK_Pos) /*!< TPI LSR: Software Lock status Mask */ + +#define TPI_LSR_SLI_Pos 0U /*!< TPI LSR: Software Lock implemented Position */ +#define TPI_LSR_SLI_Msk (0x1UL /*<< TPI_LSR_SLI_Pos*/) /*!< TPI LSR: Software Lock implemented Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_FIFOSZ_Pos 6U /*!< TPI DEVID: FIFO depth Position */ +#define TPI_DEVID_FIFOSZ_Msk (0x7UL << TPI_DEVID_FIFOSZ_Pos) /*!< TPI DEVID: FIFO depth Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) MPU Region Limit Address Register */ + __IOM uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Region Base Address Register Alias 1 */ + __IOM uint32_t RLAR_A1; /*!< Offset: 0x018 (R/W) MPU Region Limit Address Register Alias 1 */ + __IOM uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Region Base Address Register Alias 2 */ + __IOM uint32_t RLAR_A2; /*!< Offset: 0x020 (R/W) MPU Region Limit Address Register Alias 2 */ + __IOM uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Region Base Address Register Alias 3 */ + __IOM uint32_t RLAR_A3; /*!< Offset: 0x028 (R/W) MPU Region Limit Address Register Alias 3 */ + uint32_t RESERVED0[1]; + union { + __IOM uint32_t MAIR[2]; + struct { + __IOM uint32_t MAIR0; /*!< Offset: 0x030 (R/W) MPU Memory Attribute Indirection Register 0 */ + __IOM uint32_t MAIR1; /*!< Offset: 0x034 (R/W) MPU Memory Attribute Indirection Register 1 */ + }; + }; +} MPU_Type; + +#define MPU_TYPE_RALIASES 4U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_BASE_Pos 5U /*!< MPU RBAR: BASE Position */ +#define MPU_RBAR_BASE_Msk (0x7FFFFFFUL << MPU_RBAR_BASE_Pos) /*!< MPU RBAR: BASE Mask */ + +#define MPU_RBAR_SH_Pos 3U /*!< MPU RBAR: SH Position */ +#define MPU_RBAR_SH_Msk (0x3UL << MPU_RBAR_SH_Pos) /*!< MPU RBAR: SH Mask */ + +#define MPU_RBAR_AP_Pos 1U /*!< MPU RBAR: AP Position */ +#define MPU_RBAR_AP_Msk (0x3UL << MPU_RBAR_AP_Pos) /*!< MPU RBAR: AP Mask */ + +#define MPU_RBAR_XN_Pos 0U /*!< MPU RBAR: XN Position */ +#define MPU_RBAR_XN_Msk (01UL /*<< MPU_RBAR_XN_Pos*/) /*!< MPU RBAR: XN Mask */ + +/* MPU Region Limit Address Register Definitions */ +#define MPU_RLAR_LIMIT_Pos 5U /*!< MPU RLAR: LIMIT Position */ +#define MPU_RLAR_LIMIT_Msk (0x7FFFFFFUL << MPU_RLAR_LIMIT_Pos) /*!< MPU RLAR: LIMIT Mask */ + +#define MPU_RLAR_AttrIndx_Pos 1U /*!< MPU RLAR: AttrIndx Position */ +#define MPU_RLAR_AttrIndx_Msk (0x7UL << MPU_RLAR_AttrIndx_Pos) /*!< MPU RLAR: AttrIndx Mask */ + +#define MPU_RLAR_EN_Pos 0U /*!< MPU RLAR: Region enable bit Position */ +#define MPU_RLAR_EN_Msk (1UL /*<< MPU_RLAR_EN_Pos*/) /*!< MPU RLAR: Region enable bit Disable Mask */ + +/* MPU Memory Attribute Indirection Register 0 Definitions */ +#define MPU_MAIR0_Attr3_Pos 24U /*!< MPU MAIR0: Attr3 Position */ +#define MPU_MAIR0_Attr3_Msk (0xFFUL << MPU_MAIR0_Attr3_Pos) /*!< MPU MAIR0: Attr3 Mask */ + +#define MPU_MAIR0_Attr2_Pos 16U /*!< MPU MAIR0: Attr2 Position */ +#define MPU_MAIR0_Attr2_Msk (0xFFUL << MPU_MAIR0_Attr2_Pos) /*!< MPU MAIR0: Attr2 Mask */ + +#define MPU_MAIR0_Attr1_Pos 8U /*!< MPU MAIR0: Attr1 Position */ +#define MPU_MAIR0_Attr1_Msk (0xFFUL << MPU_MAIR0_Attr1_Pos) /*!< MPU MAIR0: Attr1 Mask */ + +#define MPU_MAIR0_Attr0_Pos 0U /*!< MPU MAIR0: Attr0 Position */ +#define MPU_MAIR0_Attr0_Msk (0xFFUL /*<< MPU_MAIR0_Attr0_Pos*/) /*!< MPU MAIR0: Attr0 Mask */ + +/* MPU Memory Attribute Indirection Register 1 Definitions */ +#define MPU_MAIR1_Attr7_Pos 24U /*!< MPU MAIR1: Attr7 Position */ +#define MPU_MAIR1_Attr7_Msk (0xFFUL << MPU_MAIR1_Attr7_Pos) /*!< MPU MAIR1: Attr7 Mask */ + +#define MPU_MAIR1_Attr6_Pos 16U /*!< MPU MAIR1: Attr6 Position */ +#define MPU_MAIR1_Attr6_Msk (0xFFUL << MPU_MAIR1_Attr6_Pos) /*!< MPU MAIR1: Attr6 Mask */ + +#define MPU_MAIR1_Attr5_Pos 8U /*!< MPU MAIR1: Attr5 Position */ +#define MPU_MAIR1_Attr5_Msk (0xFFUL << MPU_MAIR1_Attr5_Pos) /*!< MPU MAIR1: Attr5 Mask */ + +#define MPU_MAIR1_Attr4_Pos 0U /*!< MPU MAIR1: Attr4 Position */ +#define MPU_MAIR1_Attr4_Msk (0xFFUL /*<< MPU_MAIR1_Attr4_Pos*/) /*!< MPU MAIR1: Attr4 Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SAU Security Attribution Unit (SAU) + \brief Type definitions for the Security Attribution Unit (SAU) + @{ + */ + +/** + \brief Structure type to access the Security Attribution Unit (SAU). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SAU Control Register */ + __IM uint32_t TYPE; /*!< Offset: 0x004 (R/ ) SAU Type Register */ +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) SAU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) SAU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) SAU Region Limit Address Register */ +#else + uint32_t RESERVED0[3]; +#endif + __IOM uint32_t SFSR; /*!< Offset: 0x014 (R/W) Secure Fault Status Register */ + __IOM uint32_t SFAR; /*!< Offset: 0x018 (R/W) Secure Fault Address Register */ +} SAU_Type; + +/* SAU Control Register Definitions */ +#define SAU_CTRL_ALLNS_Pos 1U /*!< SAU CTRL: ALLNS Position */ +#define SAU_CTRL_ALLNS_Msk (1UL << SAU_CTRL_ALLNS_Pos) /*!< SAU CTRL: ALLNS Mask */ + +#define SAU_CTRL_ENABLE_Pos 0U /*!< SAU CTRL: ENABLE Position */ +#define SAU_CTRL_ENABLE_Msk (1UL /*<< SAU_CTRL_ENABLE_Pos*/) /*!< SAU CTRL: ENABLE Mask */ + +/* SAU Type Register Definitions */ +#define SAU_TYPE_SREGION_Pos 0U /*!< SAU TYPE: SREGION Position */ +#define SAU_TYPE_SREGION_Msk (0xFFUL /*<< SAU_TYPE_SREGION_Pos*/) /*!< SAU TYPE: SREGION Mask */ + +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) +/* SAU Region Number Register Definitions */ +#define SAU_RNR_REGION_Pos 0U /*!< SAU RNR: REGION Position */ +#define SAU_RNR_REGION_Msk (0xFFUL /*<< SAU_RNR_REGION_Pos*/) /*!< SAU RNR: REGION Mask */ + +/* SAU Region Base Address Register Definitions */ +#define SAU_RBAR_BADDR_Pos 5U /*!< SAU RBAR: BADDR Position */ +#define SAU_RBAR_BADDR_Msk (0x7FFFFFFUL << SAU_RBAR_BADDR_Pos) /*!< SAU RBAR: BADDR Mask */ + +/* SAU Region Limit Address Register Definitions */ +#define SAU_RLAR_LADDR_Pos 5U /*!< SAU RLAR: LADDR Position */ +#define SAU_RLAR_LADDR_Msk (0x7FFFFFFUL << SAU_RLAR_LADDR_Pos) /*!< SAU RLAR: LADDR Mask */ + +#define SAU_RLAR_NSC_Pos 1U /*!< SAU RLAR: NSC Position */ +#define SAU_RLAR_NSC_Msk (1UL << SAU_RLAR_NSC_Pos) /*!< SAU RLAR: NSC Mask */ + +#define SAU_RLAR_ENABLE_Pos 0U /*!< SAU RLAR: ENABLE Position */ +#define SAU_RLAR_ENABLE_Msk (1UL /*<< SAU_RLAR_ENABLE_Pos*/) /*!< SAU RLAR: ENABLE Mask */ + +#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */ + +/* Secure Fault Status Register Definitions */ +#define SAU_SFSR_LSERR_Pos 7U /*!< SAU SFSR: LSERR Position */ +#define SAU_SFSR_LSERR_Msk (1UL << SAU_SFSR_LSERR_Pos) /*!< SAU SFSR: LSERR Mask */ + +#define SAU_SFSR_SFARVALID_Pos 6U /*!< SAU SFSR: SFARVALID Position */ +#define SAU_SFSR_SFARVALID_Msk (1UL << SAU_SFSR_SFARVALID_Pos) /*!< SAU SFSR: SFARVALID Mask */ + +#define SAU_SFSR_LSPERR_Pos 5U /*!< SAU SFSR: LSPERR Position */ +#define SAU_SFSR_LSPERR_Msk (1UL << SAU_SFSR_LSPERR_Pos) /*!< SAU SFSR: LSPERR Mask */ + +#define SAU_SFSR_INVTRAN_Pos 4U /*!< SAU SFSR: INVTRAN Position */ +#define SAU_SFSR_INVTRAN_Msk (1UL << SAU_SFSR_INVTRAN_Pos) /*!< SAU SFSR: INVTRAN Mask */ + +#define SAU_SFSR_AUVIOL_Pos 3U /*!< SAU SFSR: AUVIOL Position */ +#define SAU_SFSR_AUVIOL_Msk (1UL << SAU_SFSR_AUVIOL_Pos) /*!< SAU SFSR: AUVIOL Mask */ + +#define SAU_SFSR_INVER_Pos 2U /*!< SAU SFSR: INVER Position */ +#define SAU_SFSR_INVER_Msk (1UL << SAU_SFSR_INVER_Pos) /*!< SAU SFSR: INVER Mask */ + +#define SAU_SFSR_INVIS_Pos 1U /*!< SAU SFSR: INVIS Position */ +#define SAU_SFSR_INVIS_Msk (1UL << SAU_SFSR_INVIS_Pos) /*!< SAU SFSR: INVIS Mask */ + +#define SAU_SFSR_INVEP_Pos 0U /*!< SAU SFSR: INVEP Position */ +#define SAU_SFSR_INVEP_Msk (1UL /*<< SAU_SFSR_INVEP_Pos*/) /*!< SAU SFSR: INVEP Mask */ + +/*@} end of group CMSIS_SAU */ +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_FPU Floating Point Unit (FPU) + \brief Type definitions for the Floating Point Unit (FPU) + @{ + */ + +/** + \brief Structure type to access the Floating Point Unit (FPU). + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IOM uint32_t FPCCR; /*!< Offset: 0x004 (R/W) Floating-Point Context Control Register */ + __IOM uint32_t FPCAR; /*!< Offset: 0x008 (R/W) Floating-Point Context Address Register */ + __IOM uint32_t FPDSCR; /*!< Offset: 0x00C (R/W) Floating-Point Default Status Control Register */ + __IM uint32_t MVFR0; /*!< Offset: 0x010 (R/ ) Media and FP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x014 (R/ ) Media and FP Feature Register 1 */ +} FPU_Type; + +/* Floating-Point Context Control Register Definitions */ +#define FPU_FPCCR_ASPEN_Pos 31U /*!< FPCCR: ASPEN bit Position */ +#define FPU_FPCCR_ASPEN_Msk (1UL << FPU_FPCCR_ASPEN_Pos) /*!< FPCCR: ASPEN bit Mask */ + +#define FPU_FPCCR_LSPEN_Pos 30U /*!< FPCCR: LSPEN Position */ +#define FPU_FPCCR_LSPEN_Msk (1UL << FPU_FPCCR_LSPEN_Pos) /*!< FPCCR: LSPEN bit Mask */ + +#define FPU_FPCCR_LSPENS_Pos 29U /*!< FPCCR: LSPENS Position */ +#define FPU_FPCCR_LSPENS_Msk (1UL << FPU_FPCCR_LSPENS_Pos) /*!< FPCCR: LSPENS bit Mask */ + +#define FPU_FPCCR_CLRONRET_Pos 28U /*!< FPCCR: CLRONRET Position */ +#define FPU_FPCCR_CLRONRET_Msk (1UL << FPU_FPCCR_CLRONRET_Pos) /*!< FPCCR: CLRONRET bit Mask */ + +#define FPU_FPCCR_CLRONRETS_Pos 27U /*!< FPCCR: CLRONRETS Position */ +#define FPU_FPCCR_CLRONRETS_Msk (1UL << FPU_FPCCR_CLRONRETS_Pos) /*!< FPCCR: CLRONRETS bit Mask */ + +#define FPU_FPCCR_TS_Pos 26U /*!< FPCCR: TS Position */ +#define FPU_FPCCR_TS_Msk (1UL << FPU_FPCCR_TS_Pos) /*!< FPCCR: TS bit Mask */ + +#define FPU_FPCCR_UFRDY_Pos 10U /*!< FPCCR: UFRDY Position */ +#define FPU_FPCCR_UFRDY_Msk (1UL << FPU_FPCCR_UFRDY_Pos) /*!< FPCCR: UFRDY bit Mask */ + +#define FPU_FPCCR_SPLIMVIOL_Pos 9U /*!< FPCCR: SPLIMVIOL Position */ +#define FPU_FPCCR_SPLIMVIOL_Msk (1UL << FPU_FPCCR_SPLIMVIOL_Pos) /*!< FPCCR: SPLIMVIOL bit Mask */ + +#define FPU_FPCCR_MONRDY_Pos 8U /*!< FPCCR: MONRDY Position */ +#define FPU_FPCCR_MONRDY_Msk (1UL << FPU_FPCCR_MONRDY_Pos) /*!< FPCCR: MONRDY bit Mask */ + +#define FPU_FPCCR_SFRDY_Pos 7U /*!< FPCCR: SFRDY Position */ +#define FPU_FPCCR_SFRDY_Msk (1UL << FPU_FPCCR_SFRDY_Pos) /*!< FPCCR: SFRDY bit Mask */ + +#define FPU_FPCCR_BFRDY_Pos 6U /*!< FPCCR: BFRDY Position */ +#define FPU_FPCCR_BFRDY_Msk (1UL << FPU_FPCCR_BFRDY_Pos) /*!< FPCCR: BFRDY bit Mask */ + +#define FPU_FPCCR_MMRDY_Pos 5U /*!< FPCCR: MMRDY Position */ +#define FPU_FPCCR_MMRDY_Msk (1UL << FPU_FPCCR_MMRDY_Pos) /*!< FPCCR: MMRDY bit Mask */ + +#define FPU_FPCCR_HFRDY_Pos 4U /*!< FPCCR: HFRDY Position */ +#define FPU_FPCCR_HFRDY_Msk (1UL << FPU_FPCCR_HFRDY_Pos) /*!< FPCCR: HFRDY bit Mask */ + +#define FPU_FPCCR_THREAD_Pos 3U /*!< FPCCR: processor mode bit Position */ +#define FPU_FPCCR_THREAD_Msk (1UL << FPU_FPCCR_THREAD_Pos) /*!< FPCCR: processor mode active bit Mask */ + +#define FPU_FPCCR_S_Pos 2U /*!< FPCCR: Security status of the FP context bit Position */ +#define FPU_FPCCR_S_Msk (1UL << FPU_FPCCR_S_Pos) /*!< FPCCR: Security status of the FP context bit Mask */ + +#define FPU_FPCCR_USER_Pos 1U /*!< FPCCR: privilege level bit Position */ +#define FPU_FPCCR_USER_Msk (1UL << FPU_FPCCR_USER_Pos) /*!< FPCCR: privilege level bit Mask */ + +#define FPU_FPCCR_LSPACT_Pos 0U /*!< FPCCR: Lazy state preservation active bit Position */ +#define FPU_FPCCR_LSPACT_Msk (1UL /*<< FPU_FPCCR_LSPACT_Pos*/) /*!< FPCCR: Lazy state preservation active bit Mask */ + +/* Floating-Point Context Address Register Definitions */ +#define FPU_FPCAR_ADDRESS_Pos 3U /*!< FPCAR: ADDRESS bit Position */ +#define FPU_FPCAR_ADDRESS_Msk (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos) /*!< FPCAR: ADDRESS bit Mask */ + +/* Floating-Point Default Status Control Register Definitions */ +#define FPU_FPDSCR_AHP_Pos 26U /*!< FPDSCR: AHP bit Position */ +#define FPU_FPDSCR_AHP_Msk (1UL << FPU_FPDSCR_AHP_Pos) /*!< FPDSCR: AHP bit Mask */ + +#define FPU_FPDSCR_DN_Pos 25U /*!< FPDSCR: DN bit Position */ +#define FPU_FPDSCR_DN_Msk (1UL << FPU_FPDSCR_DN_Pos) /*!< FPDSCR: DN bit Mask */ + +#define FPU_FPDSCR_FZ_Pos 24U /*!< FPDSCR: FZ bit Position */ +#define FPU_FPDSCR_FZ_Msk (1UL << FPU_FPDSCR_FZ_Pos) /*!< FPDSCR: FZ bit Mask */ + +#define FPU_FPDSCR_RMode_Pos 22U /*!< FPDSCR: RMode bit Position */ +#define FPU_FPDSCR_RMode_Msk (3UL << FPU_FPDSCR_RMode_Pos) /*!< FPDSCR: RMode bit Mask */ + +/* Media and FP Feature Register 0 Definitions */ +#define FPU_MVFR0_FP_rounding_modes_Pos 28U /*!< MVFR0: FP rounding modes bits Position */ +#define FPU_MVFR0_FP_rounding_modes_Msk (0xFUL << FPU_MVFR0_FP_rounding_modes_Pos) /*!< MVFR0: FP rounding modes bits Mask */ + +#define FPU_MVFR0_Short_vectors_Pos 24U /*!< MVFR0: Short vectors bits Position */ +#define FPU_MVFR0_Short_vectors_Msk (0xFUL << FPU_MVFR0_Short_vectors_Pos) /*!< MVFR0: Short vectors bits Mask */ + +#define FPU_MVFR0_Square_root_Pos 20U /*!< MVFR0: Square root bits Position */ +#define FPU_MVFR0_Square_root_Msk (0xFUL << FPU_MVFR0_Square_root_Pos) /*!< MVFR0: Square root bits Mask */ + +#define FPU_MVFR0_Divide_Pos 16U /*!< MVFR0: Divide bits Position */ +#define FPU_MVFR0_Divide_Msk (0xFUL << FPU_MVFR0_Divide_Pos) /*!< MVFR0: Divide bits Mask */ + +#define FPU_MVFR0_FP_excep_trapping_Pos 12U /*!< MVFR0: FP exception trapping bits Position */ +#define FPU_MVFR0_FP_excep_trapping_Msk (0xFUL << FPU_MVFR0_FP_excep_trapping_Pos) /*!< MVFR0: FP exception trapping bits Mask */ + +#define FPU_MVFR0_Double_precision_Pos 8U /*!< MVFR0: Double-precision bits Position */ +#define FPU_MVFR0_Double_precision_Msk (0xFUL << FPU_MVFR0_Double_precision_Pos) /*!< MVFR0: Double-precision bits Mask */ + +#define FPU_MVFR0_Single_precision_Pos 4U /*!< MVFR0: Single-precision bits Position */ +#define FPU_MVFR0_Single_precision_Msk (0xFUL << FPU_MVFR0_Single_precision_Pos) /*!< MVFR0: Single-precision bits Mask */ + +#define FPU_MVFR0_A_SIMD_registers_Pos 0U /*!< MVFR0: A_SIMD registers bits Position */ +#define FPU_MVFR0_A_SIMD_registers_Msk (0xFUL /*<< FPU_MVFR0_A_SIMD_registers_Pos*/) /*!< MVFR0: A_SIMD registers bits Mask */ + +/* Media and FP Feature Register 1 Definitions */ +#define FPU_MVFR1_FP_fused_MAC_Pos 28U /*!< MVFR1: FP fused MAC bits Position */ +#define FPU_MVFR1_FP_fused_MAC_Msk (0xFUL << FPU_MVFR1_FP_fused_MAC_Pos) /*!< MVFR1: FP fused MAC bits Mask */ + +#define FPU_MVFR1_FP_HPFP_Pos 24U /*!< MVFR1: FP HPFP bits Position */ +#define FPU_MVFR1_FP_HPFP_Msk (0xFUL << FPU_MVFR1_FP_HPFP_Pos) /*!< MVFR1: FP HPFP bits Mask */ + +#define FPU_MVFR1_D_NaN_mode_Pos 4U /*!< MVFR1: D_NaN mode bits Position */ +#define FPU_MVFR1_D_NaN_mode_Msk (0xFUL << FPU_MVFR1_D_NaN_mode_Pos) /*!< MVFR1: D_NaN mode bits Mask */ + +#define FPU_MVFR1_FtZ_mode_Pos 0U /*!< MVFR1: FtZ mode bits Position */ +#define FPU_MVFR1_FtZ_mode_Msk (0xFUL /*<< FPU_MVFR1_FtZ_mode_Pos*/) /*!< MVFR1: FtZ mode bits Mask */ + +/*@} end of group CMSIS_FPU */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** + \brief Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ + uint32_t RESERVED4[1U]; + __IOM uint32_t DAUTHCTRL; /*!< Offset: 0x014 (R/W) Debug Authentication Control Register */ + __IOM uint32_t DSCSR; /*!< Offset: 0x018 (R/W) Debug Security Control and Status Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register Definitions */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESTART_ST_Pos 26U /*!< CoreDebug DHCSR: S_RESTART_ST Position */ +#define CoreDebug_DHCSR_S_RESTART_ST_Msk (1UL << CoreDebug_DHCSR_S_RESTART_ST_Pos) /*!< CoreDebug DHCSR: S_RESTART_ST Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5U /*!< CoreDebug DHCSR: C_SNAPSTALL Position */ +#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register Definitions */ +#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register Definitions */ +#define CoreDebug_DEMCR_TRCENA_Pos 24U /*!< CoreDebug DEMCR: TRCENA Position */ +#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< CoreDebug DEMCR: TRCENA Mask */ + +#define CoreDebug_DEMCR_MON_REQ_Pos 19U /*!< CoreDebug DEMCR: MON_REQ Position */ +#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< CoreDebug DEMCR: MON_REQ Mask */ + +#define CoreDebug_DEMCR_MON_STEP_Pos 18U /*!< CoreDebug DEMCR: MON_STEP Position */ +#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< CoreDebug DEMCR: MON_STEP Mask */ + +#define CoreDebug_DEMCR_MON_PEND_Pos 17U /*!< CoreDebug DEMCR: MON_PEND Position */ +#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< CoreDebug DEMCR: MON_PEND Mask */ + +#define CoreDebug_DEMCR_MON_EN_Pos 16U /*!< CoreDebug DEMCR: MON_EN Position */ +#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< CoreDebug DEMCR: MON_EN Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_INTERR_Pos 9U /*!< CoreDebug DEMCR: VC_INTERR Position */ +#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< CoreDebug DEMCR: VC_INTERR Mask */ + +#define CoreDebug_DEMCR_VC_BUSERR_Pos 8U /*!< CoreDebug DEMCR: VC_BUSERR Position */ +#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< CoreDebug DEMCR: VC_BUSERR Mask */ + +#define CoreDebug_DEMCR_VC_STATERR_Pos 7U /*!< CoreDebug DEMCR: VC_STATERR Position */ +#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< CoreDebug DEMCR: VC_STATERR Mask */ + +#define CoreDebug_DEMCR_VC_CHKERR_Pos 6U /*!< CoreDebug DEMCR: VC_CHKERR Position */ +#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< CoreDebug DEMCR: VC_CHKERR Mask */ + +#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5U /*!< CoreDebug DEMCR: VC_NOCPERR Position */ +#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< CoreDebug DEMCR: VC_NOCPERR Mask */ + +#define CoreDebug_DEMCR_VC_MMERR_Pos 4U /*!< CoreDebug DEMCR: VC_MMERR Position */ +#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< CoreDebug DEMCR: VC_MMERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ + +/* Debug Authentication Control Register Definitions */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos 3U /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Position */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos) /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Mask */ + +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos 2U /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Msk (1UL << CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos) /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Mask */ + +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Pos 1U /*!< CoreDebug DAUTHCTRL: INTSPIDEN Position */ +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPIDEN_Pos) /*!< CoreDebug DAUTHCTRL: INTSPIDEN Mask */ + +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Pos 0U /*!< CoreDebug DAUTHCTRL: SPIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Msk (1UL /*<< CoreDebug_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< CoreDebug DAUTHCTRL: SPIDENSEL Mask */ + +/* Debug Security Control and Status Register Definitions */ +#define CoreDebug_DSCSR_CDS_Pos 16U /*!< CoreDebug DSCSR: CDS Position */ +#define CoreDebug_DSCSR_CDS_Msk (1UL << CoreDebug_DSCSR_CDS_Pos) /*!< CoreDebug DSCSR: CDS Mask */ + +#define CoreDebug_DSCSR_SBRSEL_Pos 1U /*!< CoreDebug DSCSR: SBRSEL Position */ +#define CoreDebug_DSCSR_SBRSEL_Msk (1UL << CoreDebug_DSCSR_SBRSEL_Pos) /*!< CoreDebug DSCSR: SBRSEL Mask */ + +#define CoreDebug_DSCSR_SBRSELEN_Pos 0U /*!< CoreDebug DSCSR: SBRSELEN Position */ +#define CoreDebug_DSCSR_SBRSELEN_Msk (1UL /*<< CoreDebug_DSCSR_SBRSELEN_Pos*/) /*!< CoreDebug DSCSR: SBRSELEN Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ + #define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ + #define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ + #define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ + #define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ + #define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */ + #define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ + #define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ + #define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + + #define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ + #define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ + #define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ + #define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ + #define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */ + #define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ + #define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ + #define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE ) /*!< Core Debug configuration struct */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ + #endif + + #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SAU_BASE (SCS_BASE + 0x0DD0UL) /*!< Security Attribution Unit */ + #define SAU ((SAU_Type *) SAU_BASE ) /*!< Security Attribution Unit */ + #endif + + #define FPU_BASE (SCS_BASE + 0x0F30UL) /*!< Floating Point Unit */ + #define FPU ((FPU_Type *) FPU_BASE ) /*!< Floating Point Unit */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SCS_BASE_NS (0xE002E000UL) /*!< System Control Space Base Address (non-secure address space) */ + #define CoreDebug_BASE_NS (0xE002EDF0UL) /*!< Core Debug Base Address (non-secure address space) */ + #define SysTick_BASE_NS (SCS_BASE_NS + 0x0010UL) /*!< SysTick Base Address (non-secure address space) */ + #define NVIC_BASE_NS (SCS_BASE_NS + 0x0100UL) /*!< NVIC Base Address (non-secure address space) */ + #define SCB_BASE_NS (SCS_BASE_NS + 0x0D00UL) /*!< System Control Block Base Address (non-secure address space) */ + + #define SCnSCB_NS ((SCnSCB_Type *) SCS_BASE_NS ) /*!< System control Register not in SCB(non-secure address space) */ + #define SCB_NS ((SCB_Type *) SCB_BASE_NS ) /*!< SCB configuration struct (non-secure address space) */ + #define SysTick_NS ((SysTick_Type *) SysTick_BASE_NS ) /*!< SysTick configuration struct (non-secure address space) */ + #define NVIC_NS ((NVIC_Type *) NVIC_BASE_NS ) /*!< NVIC configuration struct (non-secure address space) */ + #define CoreDebug_NS ((CoreDebug_Type *) CoreDebug_BASE_NS) /*!< Core Debug configuration struct (non-secure address space) */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE_NS (SCS_BASE_NS + 0x0D90UL) /*!< Memory Protection Unit (non-secure address space) */ + #define MPU_NS ((MPU_Type *) MPU_BASE_NS ) /*!< Memory Protection Unit (non-secure address space) */ + #endif + + #define FPU_BASE_NS (SCS_BASE_NS + 0x0F30UL) /*!< Floating Point Unit (non-secure address space) */ + #define FPU_NS ((FPU_Type *) FPU_BASE_NS ) /*!< Floating Point Unit (non-secure address space) */ + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Debug Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ + #define NVIC_GetActive __NVIC_GetActive + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* Special LR values for Secure/Non-Secure call handling and exception handling */ + +/* Function Return Payload (from ARMv8-M Architecture Reference Manual) LR value on entry from Secure BLXNS */ +#define FNC_RETURN (0xFEFFFFFFUL) /* bit [0] ignored when processing a branch */ + +/* The following EXC_RETURN mask values are used to evaluate the LR on exception entry */ +#define EXC_RETURN_PREFIX (0xFF000000UL) /* bits [31:24] set to indicate an EXC_RETURN value */ +#define EXC_RETURN_S (0x00000040UL) /* bit [6] stack used to push registers: 0=Non-secure 1=Secure */ +#define EXC_RETURN_DCRS (0x00000020UL) /* bit [5] stacking rules for called registers: 0=skipped 1=saved */ +#define EXC_RETURN_FTYPE (0x00000010UL) /* bit [4] allocate stack for floating-point context: 0=done 1=skipped */ +#define EXC_RETURN_MODE (0x00000008UL) /* bit [3] processor mode for return: 0=Handler mode 1=Thread mode */ +#define EXC_RETURN_SPSEL (0x00000004UL) /* bit [2] stack pointer used to restore context: 0=MSP 1=PSP */ +#define EXC_RETURN_ES (0x00000001UL) /* bit [0] security state exception was taken to: 0=Non-secure 1=Secure */ + +/* Integrity Signature (from ARMv8-M Architecture Reference Manual) for exception context stacking */ +#if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) /* Value for processors with floating-point extension: */ +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125AUL) /* bit [0] SFTC must match LR bit[4] EXC_RETURN_FTYPE */ +#else +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125BUL) /* Value for processors without floating-point extension */ +#endif + + +/** + \brief Set Priority Grouping + \details Sets the priority grouping field using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + SCB->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping + \details Reads the priority grouping field from the NVIC Interrupt Controller. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void) +{ + return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + __COMPILER_BARRIER(); + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __COMPILER_BARRIER(); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Get Interrupt Target State + \details Reads the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + \return 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_GetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Target State + \details Sets the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_SetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] |= ((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Clear Interrupt Target State + \details Clears the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_ClearTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] &= ~((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IPR[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC->IPR[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; + __DSB(); +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + SCB_AIRCR_SYSRESETREQ_Msk ); /* Keep priority group unchanged */ + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Set Priority Grouping (non-secure) + \details Sets the non-secure priority grouping field when in secure state using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void TZ_NVIC_SetPriorityGrouping_NS(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB_NS->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + SCB_NS->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping (non-secure) + \details Reads the priority grouping field from the non-secure NVIC when in secure state. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPriorityGrouping_NS(void) +{ + return ((uint32_t)((SCB_NS->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt (non-secure) + \details Enables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_EnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status (non-secure) + \details Returns a device specific interrupt enable status from the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetEnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt (non-secure) + \details Disables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_DisableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Pending Interrupt (non-secure) + \details Reads the NVIC pending register in the non-secure NVIC when in secure state and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt (non-secure) + \details Sets the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_SetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt (non-secure) + \details Clears the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_ClearPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt (non-secure) + \details Reads the active register in non-secure NVIC when in secure state and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetActive_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority (non-secure) + \details Sets the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every non-secure processor exception. + */ +__STATIC_INLINE void TZ_NVIC_SetPriority_NS(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->IPR[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority (non-secure) + \details Reads the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPriority_NS(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC_NS->IPR[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) &&(__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_NVICFunctions */ + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv8.h" + +#endif + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + uint32_t mvfr0; + + mvfr0 = FPU->MVFR0; + if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x220U) + { + return 2U; /* Double + Single precision FPU */ + } + else if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x020U) + { + return 1U; /* Single precision FPU */ + } + else + { + return 0U; /* No FPU */ + } +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ########################## SAU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SAUFunctions SAU Functions + \brief Functions that configure the SAU. + @{ + */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + +/** + \brief Enable SAU + \details Enables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Enable(void) +{ + SAU->CTRL |= (SAU_CTRL_ENABLE_Msk); +} + + + +/** + \brief Disable SAU + \details Disables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Disable(void) +{ + SAU->CTRL &= ~(SAU_CTRL_ENABLE_Msk); +} + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_SAUFunctions */ + + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief System Tick Configuration (non-secure) + \details Initializes the non-secure System Timer and its interrupt when in secure state, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function TZ_SysTick_Config_NS is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + + */ +__STATIC_INLINE uint32_t TZ_SysTick_Config_NS(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick_NS->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + TZ_NVIC_SetPriority_NS (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick_NS->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick_NS->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + +/* ##################################### Debug In/Output function ########################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_core_DebugFunctions ITM Functions + \brief Functions that access the ITM debug interface. + @{ + */ + +extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */ +#define ITM_RXBUFFER_EMPTY ((int32_t)0x5AA55AA5U) /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */ + + +/** + \brief ITM Send Character + \details Transmits a character via the ITM channel 0, and + \li Just returns when no debugger is connected that has booked the output. + \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted. + \param [in] ch Character to transmit. + \returns Character to transmit. + */ +__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch) +{ + if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) && /* ITM enabled */ + ((ITM->TER & 1UL ) != 0UL) ) /* ITM Port #0 enabled */ + { + while (ITM->PORT[0U].u32 == 0UL) + { + __NOP(); + } + ITM->PORT[0U].u8 = (uint8_t)ch; + } + return (ch); +} + + +/** + \brief ITM Receive Character + \details Inputs a character via the external variable \ref ITM_RxBuffer. + \return Received character. + \return -1 No character pending. + */ +__STATIC_INLINE int32_t ITM_ReceiveChar (void) +{ + int32_t ch = -1; /* no character available */ + + if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) + { + ch = ITM_RxBuffer; + ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ + } + + return (ch); +} + + +/** + \brief ITM Check Character + \details Checks whether a character is pending for reading in the variable \ref ITM_RxBuffer. + \return 0 No character available. + \return 1 Character available. + */ +__STATIC_INLINE int32_t ITM_CheckChar (void) +{ + + if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) + { + return (0); /* no character available */ + } + else + { + return (1); /* character available */ + } +} + +/*@} end of CMSIS_core_DebugFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_ARMV8MML_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/firmware/Drivers/CMSIS/Include/core_cm0.h b/firmware/Drivers/CMSIS/Include/core_cm0.h new file mode 100644 index 0000000..cafae5a --- /dev/null +++ b/firmware/Drivers/CMSIS/Include/core_cm0.h @@ -0,0 +1,952 @@ +/**************************************************************************//** + * @file core_cm0.h + * @brief CMSIS Cortex-M0 Core Peripheral Access Layer Header File + * @version V5.0.6 + * @date 13. March 2019 + ******************************************************************************/ +/* + * Copyright (c) 2009-2019 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_CM0_H_GENERIC +#define __CORE_CM0_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup Cortex_M0 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS CM0 definitions */ +#define __CM0_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM0_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM0_CMSIS_VERSION ((__CM0_CMSIS_VERSION_MAIN << 16U) | \ + __CM0_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (0U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + This core does not support an FPU at all +*/ +#define __FPU_USED 0U + +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_FP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM0_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM0_H_DEPENDANT +#define __CORE_CM0_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM0_REV + #define __CM0_REV 0x0000U + #warning "__CM0_REV not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 2U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group Cortex_M0 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:28; /*!< bit: 0..27 Reserved */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:15; /*!< bit: 9..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t _reserved1:3; /*!< bit: 25..27 Reserved */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t _reserved0:1; /*!< bit: 0 Reserved */ + uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ + uint32_t _reserved1:30; /*!< bit: 2..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[1U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[31U]; + __IOM uint32_t ICER[1U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RESERVED1[31U]; + __IOM uint32_t ISPR[1U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[31U]; + __IOM uint32_t ICPR[1U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[31U]; + uint32_t RESERVED4[64U]; + __IOM uint32_t IP[8U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register */ +} NVIC_Type; + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + uint32_t RESERVED0; + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + uint32_t RESERVED1; + __IOM uint32_t SHP[2U]; /*!< Offset: 0x01C (R/W) System Handlers Priority Registers. [0] is RESERVED */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_NMIPENDSET_Pos 31U /*!< SCB ICSR: NMIPENDSET Position */ +#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_STKALIGN_Pos 9U /*!< SCB CCR: STKALIGN Position */ +#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Cortex-M0 Core Debug Registers (DCB registers, SHCSR, and DFSR) are only accessible over DAP and not via processor. + Therefore they are not covered by the Cortex-M0 header file. + @{ + */ +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ +#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ +#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ +#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ +#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + +#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ +#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ +#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ + + +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ +/*#define NVIC_GetActive __NVIC_GetActive not available for Cortex-M0 */ + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* The following EXC_RETURN values are saved the LR on exception entry */ +#define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after return */ +#define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after return */ +#define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after return */ + + +/* Interrupt Priorities are WORD accessible only under Armv6-M */ +/* The following MACROS handle generation of the register offset and byte masks */ +#define _BIT_SHIFT(IRQn) ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL) +#define _SHP_IDX(IRQn) ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) ) +#define _IP_IDX(IRQn) ( (((uint32_t)(int32_t)(IRQn)) >> 2UL) ) + +#define __NVIC_SetPriorityGrouping(X) (void)(X) +#define __NVIC_GetPriorityGrouping() (0U) + +/** + \brief Enable Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + __COMPILER_BARRIER(); + NVIC->ISER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __COMPILER_BARRIER(); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IP[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IP[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } + else + { + SCB->SHP[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IP[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return((uint32_t)(((SCB->SHP[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + Address 0 must be mapped to SRAM. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t vectors = 0x0U; + (* (int *) (vectors + ((int32_t)IRQn + NVIC_USER_IRQ_OFFSET) * 4)) = vector; + /* ARM Application Note 321 states that the M0 does not require the architectural barrier */ +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t vectors = 0x0U; + return (uint32_t)(* (int *) (vectors + ((int32_t)IRQn + NVIC_USER_IRQ_OFFSET) * 4)); +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + SCB_AIRCR_SYSRESETREQ_Msk); + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +/*@} end of CMSIS_Core_NVICFunctions */ + + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + return 0U; /* No FPU */ +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM0_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/firmware/Drivers/CMSIS/Include/core_cm0plus.h b/firmware/Drivers/CMSIS/Include/core_cm0plus.h new file mode 100644 index 0000000..d104965 --- /dev/null +++ b/firmware/Drivers/CMSIS/Include/core_cm0plus.h @@ -0,0 +1,1085 @@ +/**************************************************************************//** + * @file core_cm0plus.h + * @brief CMSIS Cortex-M0+ Core Peripheral Access Layer Header File + * @version V5.0.7 + * @date 13. March 2019 + ******************************************************************************/ +/* + * Copyright (c) 2009-2019 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_CM0PLUS_H_GENERIC +#define __CORE_CM0PLUS_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup Cortex-M0+ + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS CM0+ definitions */ +#define __CM0PLUS_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM0PLUS_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM0PLUS_CMSIS_VERSION ((__CM0PLUS_CMSIS_VERSION_MAIN << 16U) | \ + __CM0PLUS_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (0U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + This core does not support an FPU at all +*/ +#define __FPU_USED 0U + +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_FP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM0PLUS_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM0PLUS_H_DEPENDANT +#define __CORE_CM0PLUS_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM0PLUS_REV + #define __CM0PLUS_REV 0x0000U + #warning "__CM0PLUS_REV not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __VTOR_PRESENT + #define __VTOR_PRESENT 0U + #warning "__VTOR_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 2U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group Cortex-M0+ */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core MPU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:28; /*!< bit: 0..27 Reserved */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:15; /*!< bit: 9..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t _reserved1:3; /*!< bit: 25..27 Reserved */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ + uint32_t _reserved1:30; /*!< bit: 2..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[1U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[31U]; + __IOM uint32_t ICER[1U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RESERVED1[31U]; + __IOM uint32_t ISPR[1U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[31U]; + __IOM uint32_t ICPR[1U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[31U]; + uint32_t RESERVED4[64U]; + __IOM uint32_t IP[8U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register */ +} NVIC_Type; + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ +#else + uint32_t RESERVED0; +#endif + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + uint32_t RESERVED1; + __IOM uint32_t SHP[2U]; /*!< Offset: 0x01C (R/W) System Handlers Priority Registers. [0] is RESERVED */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_NMIPENDSET_Pos 31U /*!< SCB ICSR: NMIPENDSET Position */ +#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) +/* SCB Interrupt Control State Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 8U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0xFFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ +#endif + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_STKALIGN_Pos 9U /*!< SCB CCR: STKALIGN Position */ +#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region RNRber Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RASR; /*!< Offset: 0x010 (R/W) MPU Region Attribute and Size Register */ +} MPU_Type; + +#define MPU_TYPE_RALIASES 1U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_ADDR_Pos 8U /*!< MPU RBAR: ADDR Position */ +#define MPU_RBAR_ADDR_Msk (0xFFFFFFUL << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */ + +#define MPU_RBAR_VALID_Pos 4U /*!< MPU RBAR: VALID Position */ +#define MPU_RBAR_VALID_Msk (1UL << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */ + +#define MPU_RBAR_REGION_Pos 0U /*!< MPU RBAR: REGION Position */ +#define MPU_RBAR_REGION_Msk (0xFUL /*<< MPU_RBAR_REGION_Pos*/) /*!< MPU RBAR: REGION Mask */ + +/* MPU Region Attribute and Size Register Definitions */ +#define MPU_RASR_ATTRS_Pos 16U /*!< MPU RASR: MPU Region Attribute field Position */ +#define MPU_RASR_ATTRS_Msk (0xFFFFUL << MPU_RASR_ATTRS_Pos) /*!< MPU RASR: MPU Region Attribute field Mask */ + +#define MPU_RASR_XN_Pos 28U /*!< MPU RASR: ATTRS.XN Position */ +#define MPU_RASR_XN_Msk (1UL << MPU_RASR_XN_Pos) /*!< MPU RASR: ATTRS.XN Mask */ + +#define MPU_RASR_AP_Pos 24U /*!< MPU RASR: ATTRS.AP Position */ +#define MPU_RASR_AP_Msk (0x7UL << MPU_RASR_AP_Pos) /*!< MPU RASR: ATTRS.AP Mask */ + +#define MPU_RASR_TEX_Pos 19U /*!< MPU RASR: ATTRS.TEX Position */ +#define MPU_RASR_TEX_Msk (0x7UL << MPU_RASR_TEX_Pos) /*!< MPU RASR: ATTRS.TEX Mask */ + +#define MPU_RASR_S_Pos 18U /*!< MPU RASR: ATTRS.S Position */ +#define MPU_RASR_S_Msk (1UL << MPU_RASR_S_Pos) /*!< MPU RASR: ATTRS.S Mask */ + +#define MPU_RASR_C_Pos 17U /*!< MPU RASR: ATTRS.C Position */ +#define MPU_RASR_C_Msk (1UL << MPU_RASR_C_Pos) /*!< MPU RASR: ATTRS.C Mask */ + +#define MPU_RASR_B_Pos 16U /*!< MPU RASR: ATTRS.B Position */ +#define MPU_RASR_B_Msk (1UL << MPU_RASR_B_Pos) /*!< MPU RASR: ATTRS.B Mask */ + +#define MPU_RASR_SRD_Pos 8U /*!< MPU RASR: Sub-Region Disable Position */ +#define MPU_RASR_SRD_Msk (0xFFUL << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */ + +#define MPU_RASR_SIZE_Pos 1U /*!< MPU RASR: Region Size Field Position */ +#define MPU_RASR_SIZE_Msk (0x1FUL << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */ + +#define MPU_RASR_ENABLE_Pos 0U /*!< MPU RASR: Region enable bit Position */ +#define MPU_RASR_ENABLE_Msk (1UL /*<< MPU_RASR_ENABLE_Pos*/) /*!< MPU RASR: Region enable bit Disable Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Cortex-M0+ Core Debug Registers (DCB registers, SHCSR, and DFSR) are only accessible over DAP and not via processor. + Therefore they are not covered by the Cortex-M0+ header file. + @{ + */ +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ +#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ +#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ +#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ +#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + +#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ +#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ +#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ +#endif + +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ +/*#define NVIC_GetActive __NVIC_GetActive not available for Cortex-M0+ */ + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* The following EXC_RETURN values are saved the LR on exception entry */ +#define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after return */ +#define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after return */ +#define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after return */ + + +/* Interrupt Priorities are WORD accessible only under Armv6-M */ +/* The following MACROS handle generation of the register offset and byte masks */ +#define _BIT_SHIFT(IRQn) ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL) +#define _SHP_IDX(IRQn) ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) ) +#define _IP_IDX(IRQn) ( (((uint32_t)(int32_t)(IRQn)) >> 2UL) ) + +#define __NVIC_SetPriorityGrouping(X) (void)(X) +#define __NVIC_GetPriorityGrouping() (0U) + +/** + \brief Enable Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + __COMPILER_BARRIER(); + NVIC->ISER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __COMPILER_BARRIER(); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IP[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IP[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } + else + { + SCB->SHP[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IP[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return((uint32_t)(((SCB->SHP[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + If VTOR is not present address 0 must be mapped to SRAM. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + uint32_t vectors = SCB->VTOR; +#else + uint32_t vectors = 0x0U; +#endif + (* (int *) (vectors + ((int32_t)IRQn + NVIC_USER_IRQ_OFFSET) * 4)) = vector; + /* ARM Application Note 321 states that the M0+ does not require the architectural barrier */ +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + uint32_t vectors = SCB->VTOR; +#else + uint32_t vectors = 0x0U; +#endif + return (uint32_t)(* (int *) (vectors + ((int32_t)IRQn + NVIC_USER_IRQ_OFFSET) * 4)); +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + SCB_AIRCR_SYSRESETREQ_Msk); + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +/*@} end of CMSIS_Core_NVICFunctions */ + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv7.h" + +#endif + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + return 0U; /* No FPU */ +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM0PLUS_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/firmware/Drivers/CMSIS/Include/core_cm1.h b/firmware/Drivers/CMSIS/Include/core_cm1.h new file mode 100644 index 0000000..76b4569 --- /dev/null +++ b/firmware/Drivers/CMSIS/Include/core_cm1.h @@ -0,0 +1,979 @@ +/**************************************************************************//** + * @file core_cm1.h + * @brief CMSIS Cortex-M1 Core Peripheral Access Layer Header File + * @version V1.0.1 + * @date 12. November 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_CM1_H_GENERIC +#define __CORE_CM1_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup Cortex_M1 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS CM1 definitions */ +#define __CM1_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM1_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM1_CMSIS_VERSION ((__CM1_CMSIS_VERSION_MAIN << 16U) | \ + __CM1_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (1U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + This core does not support an FPU at all +*/ +#define __FPU_USED 0U + +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_FP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM1_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM1_H_DEPENDANT +#define __CORE_CM1_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM1_REV + #define __CM1_REV 0x0100U + #warning "__CM1_REV not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 2U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group Cortex_M1 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:28; /*!< bit: 0..27 Reserved */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:15; /*!< bit: 9..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t _reserved1:3; /*!< bit: 25..27 Reserved */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t _reserved0:1; /*!< bit: 0 Reserved */ + uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ + uint32_t _reserved1:30; /*!< bit: 2..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[1U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[31U]; + __IOM uint32_t ICER[1U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[31U]; + __IOM uint32_t ISPR[1U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[31U]; + __IOM uint32_t ICPR[1U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[31U]; + uint32_t RESERVED4[64U]; + __IOM uint32_t IP[8U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register */ +} NVIC_Type; + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + uint32_t RESERVED0; + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + uint32_t RESERVED1; + __IOM uint32_t SHP[2U]; /*!< Offset: 0x01C (R/W) System Handlers Priority Registers. [0] is RESERVED */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_NMIPENDSET_Pos 31U /*!< SCB ICSR: NMIPENDSET Position */ +#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_STKALIGN_Pos 9U /*!< SCB CCR: STKALIGN Position */ +#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** + \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ +} SCnSCB_Type; + +/* Auxiliary Control Register Definitions */ +#define SCnSCB_ACTLR_ITCMUAEN_Pos 4U /*!< ACTLR: Instruction TCM Upper Alias Enable Position */ +#define SCnSCB_ACTLR_ITCMUAEN_Msk (1UL << SCnSCB_ACTLR_ITCMUAEN_Pos) /*!< ACTLR: Instruction TCM Upper Alias Enable Mask */ + +#define SCnSCB_ACTLR_ITCMLAEN_Pos 3U /*!< ACTLR: Instruction TCM Lower Alias Enable Position */ +#define SCnSCB_ACTLR_ITCMLAEN_Msk (1UL << SCnSCB_ACTLR_ITCMLAEN_Pos) /*!< ACTLR: Instruction TCM Lower Alias Enable Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Cortex-M1 Core Debug Registers (DCB registers, SHCSR, and DFSR) are only accessible over DAP and not via processor. + Therefore they are not covered by the Cortex-M1 header file. + @{ + */ +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ +#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ +#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ +#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ +#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + +#define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ +#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ +#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ +#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ + + +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ +/*#define NVIC_GetActive __NVIC_GetActive not available for Cortex-M1 */ + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* The following EXC_RETURN values are saved the LR on exception entry */ +#define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after return */ +#define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after return */ +#define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after return */ + + +/* Interrupt Priorities are WORD accessible only under Armv6-M */ +/* The following MACROS handle generation of the register offset and byte masks */ +#define _BIT_SHIFT(IRQn) ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL) +#define _SHP_IDX(IRQn) ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) ) +#define _IP_IDX(IRQn) ( (((uint32_t)(int32_t)(IRQn)) >> 2UL) ) + +#define __NVIC_SetPriorityGrouping(X) (void)(X) +#define __NVIC_GetPriorityGrouping() (0U) + +/** + \brief Enable Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + __COMPILER_BARRIER(); + NVIC->ISER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __COMPILER_BARRIER(); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IP[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IP[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } + else + { + SCB->SHP[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IP[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return((uint32_t)(((SCB->SHP[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + Address 0 must be mapped to SRAM. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t *vectors = (uint32_t *)0x0U; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; + /* ARM Application Note 321 states that the M1 does not require the architectural barrier */ +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t *vectors = (uint32_t *)0x0U; + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + SCB_AIRCR_SYSRESETREQ_Msk); + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +/*@} end of CMSIS_Core_NVICFunctions */ + + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + return 0U; /* No FPU */ +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM1_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/firmware/Drivers/CMSIS/Include/core_cm23.h b/firmware/Drivers/CMSIS/Include/core_cm23.h new file mode 100644 index 0000000..b79c6af --- /dev/null +++ b/firmware/Drivers/CMSIS/Include/core_cm23.h @@ -0,0 +1,1996 @@ +/**************************************************************************//** + * @file core_cm23.h + * @brief CMSIS Cortex-M23 Core Peripheral Access Layer Header File + * @version V5.0.8 + * @date 12. November 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_CM23_H_GENERIC +#define __CORE_CM23_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup Cortex_M23 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS definitions */ +#define __CM23_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM23_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM23_CMSIS_VERSION ((__CM23_CMSIS_VERSION_MAIN << 16U) | \ + __CM23_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (23U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + This core does not support an FPU at all +*/ +#define __FPU_USED 0U + +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_FP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM23_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM23_H_DEPENDANT +#define __CORE_CM23_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM23_REV + #define __CM23_REV 0x0000U + #warning "__CM23_REV not defined in device header file; using default!" + #endif + + #ifndef __FPU_PRESENT + #define __FPU_PRESENT 0U + #warning "__FPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __SAUREGION_PRESENT + #define __SAUREGION_PRESENT 0U + #warning "__SAUREGION_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __VTOR_PRESENT + #define __VTOR_PRESENT 0U + #warning "__VTOR_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 2U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif + + #ifndef __ETM_PRESENT + #define __ETM_PRESENT 0U + #warning "__ETM_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MTB_PRESENT + #define __MTB_PRESENT 0U + #warning "__MTB_PRESENT not defined in device header file; using default!" + #endif + +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group Cortex_M23 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + - Core SAU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:28; /*!< bit: 0..27 Reserved */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:15; /*!< bit: 9..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t _reserved1:3; /*!< bit: 25..27 Reserved */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack-pointer select */ + uint32_t _reserved1:30; /*!< bit: 2..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[16U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[16U]; + __IOM uint32_t ICER[16U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[16U]; + __IOM uint32_t ISPR[16U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[16U]; + __IOM uint32_t ICPR[16U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[16U]; + __IOM uint32_t IABR[16U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[16U]; + __IOM uint32_t ITNS[16U]; /*!< Offset: 0x280 (R/W) Interrupt Non-Secure State Register */ + uint32_t RESERVED5[16U]; + __IOM uint32_t IPR[124U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register */ +} NVIC_Type; + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ +#else + uint32_t RESERVED0; +#endif + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + uint32_t RESERVED1; + __IOM uint32_t SHPR[2U]; /*!< Offset: 0x01C (R/W) System Handlers Priority Registers. [0] is RESERVED */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_PENDNMISET_Pos 31U /*!< SCB ICSR: PENDNMISET Position */ +#define SCB_ICSR_PENDNMISET_Msk (1UL << SCB_ICSR_PENDNMISET_Pos) /*!< SCB ICSR: PENDNMISET Mask */ + +#define SCB_ICSR_NMIPENDSET_Pos SCB_ICSR_PENDNMISET_Pos /*!< SCB ICSR: NMIPENDSET Position, backward compatibility */ +#define SCB_ICSR_NMIPENDSET_Msk SCB_ICSR_PENDNMISET_Msk /*!< SCB ICSR: NMIPENDSET Mask, backward compatibility */ + +#define SCB_ICSR_PENDNMICLR_Pos 30U /*!< SCB ICSR: PENDNMICLR Position */ +#define SCB_ICSR_PENDNMICLR_Msk (1UL << SCB_ICSR_PENDNMICLR_Pos) /*!< SCB ICSR: PENDNMICLR Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_STTNS_Pos 24U /*!< SCB ICSR: STTNS Position (Security Extension) */ +#define SCB_ICSR_STTNS_Msk (1UL << SCB_ICSR_STTNS_Pos) /*!< SCB ICSR: STTNS Mask (Security Extension) */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) +/* SCB Vector Table Offset Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ +#endif + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_PRIS_Pos 14U /*!< SCB AIRCR: PRIS Position */ +#define SCB_AIRCR_PRIS_Msk (1UL << SCB_AIRCR_PRIS_Pos) /*!< SCB AIRCR: PRIS Mask */ + +#define SCB_AIRCR_BFHFNMINS_Pos 13U /*!< SCB AIRCR: BFHFNMINS Position */ +#define SCB_AIRCR_BFHFNMINS_Msk (1UL << SCB_AIRCR_BFHFNMINS_Pos) /*!< SCB AIRCR: BFHFNMINS Mask */ + +#define SCB_AIRCR_SYSRESETREQS_Pos 3U /*!< SCB AIRCR: SYSRESETREQS Position */ +#define SCB_AIRCR_SYSRESETREQS_Msk (1UL << SCB_AIRCR_SYSRESETREQS_Pos) /*!< SCB AIRCR: SYSRESETREQS Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEPS_Pos 3U /*!< SCB SCR: SLEEPDEEPS Position */ +#define SCB_SCR_SLEEPDEEPS_Msk (1UL << SCB_SCR_SLEEPDEEPS_Pos) /*!< SCB SCR: SLEEPDEEPS Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_BP_Pos 18U /*!< SCB CCR: BP Position */ +#define SCB_CCR_BP_Msk (1UL << SCB_CCR_BP_Pos) /*!< SCB CCR: BP Mask */ + +#define SCB_CCR_IC_Pos 17U /*!< SCB CCR: IC Position */ +#define SCB_CCR_IC_Msk (1UL << SCB_CCR_IC_Pos) /*!< SCB CCR: IC Mask */ + +#define SCB_CCR_DC_Pos 16U /*!< SCB CCR: DC Position */ +#define SCB_CCR_DC_Msk (1UL << SCB_CCR_DC_Pos) /*!< SCB CCR: DC Mask */ + +#define SCB_CCR_STKOFHFNMIGN_Pos 10U /*!< SCB CCR: STKOFHFNMIGN Position */ +#define SCB_CCR_STKOFHFNMIGN_Msk (1UL << SCB_CCR_STKOFHFNMIGN_Pos) /*!< SCB CCR: STKOFHFNMIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_HARDFAULTPENDED_Pos 21U /*!< SCB SHCSR: HARDFAULTPENDED Position */ +#define SCB_SHCSR_HARDFAULTPENDED_Msk (1UL << SCB_SHCSR_HARDFAULTPENDED_Pos) /*!< SCB SHCSR: HARDFAULTPENDED Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_NMIACT_Pos 5U /*!< SCB SHCSR: NMIACT Position */ +#define SCB_SHCSR_NMIACT_Msk (1UL << SCB_SHCSR_NMIACT_Pos) /*!< SCB SHCSR: NMIACT Mask */ + +#define SCB_SHCSR_HARDFAULTACT_Pos 2U /*!< SCB SHCSR: HARDFAULTACT Position */ +#define SCB_SHCSR_HARDFAULTACT_Msk (1UL << SCB_SHCSR_HARDFAULTACT_Pos) /*!< SCB SHCSR: HARDFAULTACT Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + uint32_t RESERVED0[6U]; + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + uint32_t RESERVED3[1U]; + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED4[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + uint32_t RESERVED5[1U]; + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED6[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + uint32_t RESERVED7[1U]; + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ + uint32_t RESERVED8[1U]; + __IOM uint32_t COMP4; /*!< Offset: 0x060 (R/W) Comparator Register 4 */ + uint32_t RESERVED9[1U]; + __IOM uint32_t FUNCTION4; /*!< Offset: 0x068 (R/W) Function Register 4 */ + uint32_t RESERVED10[1U]; + __IOM uint32_t COMP5; /*!< Offset: 0x070 (R/W) Comparator Register 5 */ + uint32_t RESERVED11[1U]; + __IOM uint32_t FUNCTION5; /*!< Offset: 0x078 (R/W) Function Register 5 */ + uint32_t RESERVED12[1U]; + __IOM uint32_t COMP6; /*!< Offset: 0x080 (R/W) Comparator Register 6 */ + uint32_t RESERVED13[1U]; + __IOM uint32_t FUNCTION6; /*!< Offset: 0x088 (R/W) Function Register 6 */ + uint32_t RESERVED14[1U]; + __IOM uint32_t COMP7; /*!< Offset: 0x090 (R/W) Comparator Register 7 */ + uint32_t RESERVED15[1U]; + __IOM uint32_t FUNCTION7; /*!< Offset: 0x098 (R/W) Function Register 7 */ + uint32_t RESERVED16[1U]; + __IOM uint32_t COMP8; /*!< Offset: 0x0A0 (R/W) Comparator Register 8 */ + uint32_t RESERVED17[1U]; + __IOM uint32_t FUNCTION8; /*!< Offset: 0x0A8 (R/W) Function Register 8 */ + uint32_t RESERVED18[1U]; + __IOM uint32_t COMP9; /*!< Offset: 0x0B0 (R/W) Comparator Register 9 */ + uint32_t RESERVED19[1U]; + __IOM uint32_t FUNCTION9; /*!< Offset: 0x0B8 (R/W) Function Register 9 */ + uint32_t RESERVED20[1U]; + __IOM uint32_t COMP10; /*!< Offset: 0x0C0 (R/W) Comparator Register 10 */ + uint32_t RESERVED21[1U]; + __IOM uint32_t FUNCTION10; /*!< Offset: 0x0C8 (R/W) Function Register 10 */ + uint32_t RESERVED22[1U]; + __IOM uint32_t COMP11; /*!< Offset: 0x0D0 (R/W) Comparator Register 11 */ + uint32_t RESERVED23[1U]; + __IOM uint32_t FUNCTION11; /*!< Offset: 0x0D8 (R/W) Function Register 11 */ + uint32_t RESERVED24[1U]; + __IOM uint32_t COMP12; /*!< Offset: 0x0E0 (R/W) Comparator Register 12 */ + uint32_t RESERVED25[1U]; + __IOM uint32_t FUNCTION12; /*!< Offset: 0x0E8 (R/W) Function Register 12 */ + uint32_t RESERVED26[1U]; + __IOM uint32_t COMP13; /*!< Offset: 0x0F0 (R/W) Comparator Register 13 */ + uint32_t RESERVED27[1U]; + __IOM uint32_t FUNCTION13; /*!< Offset: 0x0F8 (R/W) Function Register 13 */ + uint32_t RESERVED28[1U]; + __IOM uint32_t COMP14; /*!< Offset: 0x100 (R/W) Comparator Register 14 */ + uint32_t RESERVED29[1U]; + __IOM uint32_t FUNCTION14; /*!< Offset: 0x108 (R/W) Function Register 14 */ + uint32_t RESERVED30[1U]; + __IOM uint32_t COMP15; /*!< Offset: 0x110 (R/W) Comparator Register 15 */ + uint32_t RESERVED31[1U]; + __IOM uint32_t FUNCTION15; /*!< Offset: 0x118 (R/W) Function Register 15 */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_ID_Pos 27U /*!< DWT FUNCTION: ID Position */ +#define DWT_FUNCTION_ID_Msk (0x1FUL << DWT_FUNCTION_ID_Pos) /*!< DWT FUNCTION: ID Mask */ + +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_ACTION_Pos 4U /*!< DWT FUNCTION: ACTION Position */ +#define DWT_FUNCTION_ACTION_Msk (0x3UL << DWT_FUNCTION_ACTION_Pos) /*!< DWT FUNCTION: ACTION Mask */ + +#define DWT_FUNCTION_MATCH_Pos 0U /*!< DWT FUNCTION: MATCH Position */ +#define DWT_FUNCTION_MATCH_Msk (0xFUL /*<< DWT_FUNCTION_MATCH_Pos*/) /*!< DWT FUNCTION: MATCH Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Size Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Size Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IOM uint32_t PSCR; /*!< Offset: 0x308 (R/W) Periodic Synchronization Control Register */ + uint32_t RESERVED3[759U]; + __IM uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER Register */ + __IM uint32_t ITFTTD0; /*!< Offset: 0xEEC (R/ ) Integration Test FIFO Test Data 0 Register */ + __IOM uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/W) Integration Test ATB Control Register 2 */ + uint32_t RESERVED4[1U]; + __IM uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) Integration Test ATB Control Register 0 */ + __IM uint32_t ITFTTD1; /*!< Offset: 0xEFC (R/ ) Integration Test FIFO Test Data 1 Register */ + __IOM uint32_t ITCTRL; /*!< Offset: 0xF00 (R/W) Integration Mode Control */ + uint32_t RESERVED5[39U]; + __IOM uint32_t CLAIMSET; /*!< Offset: 0xFA0 (R/W) Claim tag set */ + __IOM uint32_t CLAIMCLR; /*!< Offset: 0xFA4 (R/W) Claim tag clear */ + uint32_t RESERVED7[8U]; + __IM uint32_t DEVID; /*!< Offset: 0xFC8 (R/ ) Device Configuration Register */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) Device Type Identifier Register */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_PRESCALER_Pos 0U /*!< TPI ACPR: PRESCALER Position */ +#define TPI_ACPR_PRESCALER_Msk (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/) /*!< TPI ACPR: PRESCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_FOnMan_Pos 6U /*!< TPI FFCR: FOnMan Position */ +#define TPI_FFCR_FOnMan_Msk (0x1UL << TPI_FFCR_FOnMan_Pos) /*!< TPI FFCR: FOnMan Mask */ + +#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */ +#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ + +/* TPI TRIGGER Register Definitions */ +#define TPI_TRIGGER_TRIGGER_Pos 0U /*!< TPI TRIGGER: TRIGGER Position */ +#define TPI_TRIGGER_TRIGGER_Msk (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/) /*!< TPI TRIGGER: TRIGGER Mask */ + +/* TPI Integration Test FIFO Test Data 0 Register Definitions */ +#define TPI_ITFTTD0_ATB_IF2_ATVALID_Pos 29U /*!< TPI ITFTTD0: ATB Interface 2 ATVALIDPosition */ +#define TPI_ITFTTD0_ATB_IF2_ATVALID_Msk (0x3UL << TPI_ITFTTD0_ATB_IF2_ATVALID_Pos) /*!< TPI ITFTTD0: ATB Interface 2 ATVALID Mask */ + +#define TPI_ITFTTD0_ATB_IF2_bytecount_Pos 27U /*!< TPI ITFTTD0: ATB Interface 2 byte count Position */ +#define TPI_ITFTTD0_ATB_IF2_bytecount_Msk (0x3UL << TPI_ITFTTD0_ATB_IF2_bytecount_Pos) /*!< TPI ITFTTD0: ATB Interface 2 byte count Mask */ + +#define TPI_ITFTTD0_ATB_IF1_ATVALID_Pos 26U /*!< TPI ITFTTD0: ATB Interface 1 ATVALID Position */ +#define TPI_ITFTTD0_ATB_IF1_ATVALID_Msk (0x3UL << TPI_ITFTTD0_ATB_IF1_ATVALID_Pos) /*!< TPI ITFTTD0: ATB Interface 1 ATVALID Mask */ + +#define TPI_ITFTTD0_ATB_IF1_bytecount_Pos 24U /*!< TPI ITFTTD0: ATB Interface 1 byte count Position */ +#define TPI_ITFTTD0_ATB_IF1_bytecount_Msk (0x3UL << TPI_ITFTTD0_ATB_IF1_bytecount_Pos) /*!< TPI ITFTTD0: ATB Interface 1 byte countt Mask */ + +#define TPI_ITFTTD0_ATB_IF1_data2_Pos 16U /*!< TPI ITFTTD0: ATB Interface 1 data2 Position */ +#define TPI_ITFTTD0_ATB_IF1_data2_Msk (0xFFUL << TPI_ITFTTD0_ATB_IF1_data1_Pos) /*!< TPI ITFTTD0: ATB Interface 1 data2 Mask */ + +#define TPI_ITFTTD0_ATB_IF1_data1_Pos 8U /*!< TPI ITFTTD0: ATB Interface 1 data1 Position */ +#define TPI_ITFTTD0_ATB_IF1_data1_Msk (0xFFUL << TPI_ITFTTD0_ATB_IF1_data1_Pos) /*!< TPI ITFTTD0: ATB Interface 1 data1 Mask */ + +#define TPI_ITFTTD0_ATB_IF1_data0_Pos 0U /*!< TPI ITFTTD0: ATB Interface 1 data0 Position */ +#define TPI_ITFTTD0_ATB_IF1_data0_Msk (0xFFUL /*<< TPI_ITFTTD0_ATB_IF1_data0_Pos*/) /*!< TPI ITFTTD0: ATB Interface 1 data0 Mask */ + +/* TPI Integration Test ATB Control Register 2 Register Definitions */ +#define TPI_ITATBCTR2_AFVALID2S_Pos 1U /*!< TPI ITATBCTR2: AFVALID2S Position */ +#define TPI_ITATBCTR2_AFVALID2S_Msk (0x1UL << TPI_ITATBCTR2_AFVALID2S_Pos) /*!< TPI ITATBCTR2: AFVALID2SS Mask */ + +#define TPI_ITATBCTR2_AFVALID1S_Pos 1U /*!< TPI ITATBCTR2: AFVALID1S Position */ +#define TPI_ITATBCTR2_AFVALID1S_Msk (0x1UL << TPI_ITATBCTR2_AFVALID1S_Pos) /*!< TPI ITATBCTR2: AFVALID1SS Mask */ + +#define TPI_ITATBCTR2_ATREADY2S_Pos 0U /*!< TPI ITATBCTR2: ATREADY2S Position */ +#define TPI_ITATBCTR2_ATREADY2S_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY2S_Pos*/) /*!< TPI ITATBCTR2: ATREADY2S Mask */ + +#define TPI_ITATBCTR2_ATREADY1S_Pos 0U /*!< TPI ITATBCTR2: ATREADY1S Position */ +#define TPI_ITATBCTR2_ATREADY1S_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY1S_Pos*/) /*!< TPI ITATBCTR2: ATREADY1S Mask */ + +/* TPI Integration Test FIFO Test Data 1 Register Definitions */ +#define TPI_ITFTTD1_ATB_IF2_ATVALID_Pos 29U /*!< TPI ITFTTD1: ATB Interface 2 ATVALID Position */ +#define TPI_ITFTTD1_ATB_IF2_ATVALID_Msk (0x3UL << TPI_ITFTTD1_ATB_IF2_ATVALID_Pos) /*!< TPI ITFTTD1: ATB Interface 2 ATVALID Mask */ + +#define TPI_ITFTTD1_ATB_IF2_bytecount_Pos 27U /*!< TPI ITFTTD1: ATB Interface 2 byte count Position */ +#define TPI_ITFTTD1_ATB_IF2_bytecount_Msk (0x3UL << TPI_ITFTTD1_ATB_IF2_bytecount_Pos) /*!< TPI ITFTTD1: ATB Interface 2 byte count Mask */ + +#define TPI_ITFTTD1_ATB_IF1_ATVALID_Pos 26U /*!< TPI ITFTTD1: ATB Interface 1 ATVALID Position */ +#define TPI_ITFTTD1_ATB_IF1_ATVALID_Msk (0x3UL << TPI_ITFTTD1_ATB_IF1_ATVALID_Pos) /*!< TPI ITFTTD1: ATB Interface 1 ATVALID Mask */ + +#define TPI_ITFTTD1_ATB_IF1_bytecount_Pos 24U /*!< TPI ITFTTD1: ATB Interface 1 byte count Position */ +#define TPI_ITFTTD1_ATB_IF1_bytecount_Msk (0x3UL << TPI_ITFTTD1_ATB_IF1_bytecount_Pos) /*!< TPI ITFTTD1: ATB Interface 1 byte countt Mask */ + +#define TPI_ITFTTD1_ATB_IF2_data2_Pos 16U /*!< TPI ITFTTD1: ATB Interface 2 data2 Position */ +#define TPI_ITFTTD1_ATB_IF2_data2_Msk (0xFFUL << TPI_ITFTTD1_ATB_IF2_data1_Pos) /*!< TPI ITFTTD1: ATB Interface 2 data2 Mask */ + +#define TPI_ITFTTD1_ATB_IF2_data1_Pos 8U /*!< TPI ITFTTD1: ATB Interface 2 data1 Position */ +#define TPI_ITFTTD1_ATB_IF2_data1_Msk (0xFFUL << TPI_ITFTTD1_ATB_IF2_data1_Pos) /*!< TPI ITFTTD1: ATB Interface 2 data1 Mask */ + +#define TPI_ITFTTD1_ATB_IF2_data0_Pos 0U /*!< TPI ITFTTD1: ATB Interface 2 data0 Position */ +#define TPI_ITFTTD1_ATB_IF2_data0_Msk (0xFFUL /*<< TPI_ITFTTD1_ATB_IF2_data0_Pos*/) /*!< TPI ITFTTD1: ATB Interface 2 data0 Mask */ + +/* TPI Integration Test ATB Control Register 0 Definitions */ +#define TPI_ITATBCTR0_AFVALID2S_Pos 1U /*!< TPI ITATBCTR0: AFVALID2S Position */ +#define TPI_ITATBCTR0_AFVALID2S_Msk (0x1UL << TPI_ITATBCTR0_AFVALID2S_Pos) /*!< TPI ITATBCTR0: AFVALID2SS Mask */ + +#define TPI_ITATBCTR0_AFVALID1S_Pos 1U /*!< TPI ITATBCTR0: AFVALID1S Position */ +#define TPI_ITATBCTR0_AFVALID1S_Msk (0x1UL << TPI_ITATBCTR0_AFVALID1S_Pos) /*!< TPI ITATBCTR0: AFVALID1SS Mask */ + +#define TPI_ITATBCTR0_ATREADY2S_Pos 0U /*!< TPI ITATBCTR0: ATREADY2S Position */ +#define TPI_ITATBCTR0_ATREADY2S_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY2S_Pos*/) /*!< TPI ITATBCTR0: ATREADY2S Mask */ + +#define TPI_ITATBCTR0_ATREADY1S_Pos 0U /*!< TPI ITATBCTR0: ATREADY1S Position */ +#define TPI_ITATBCTR0_ATREADY1S_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY1S_Pos*/) /*!< TPI ITATBCTR0: ATREADY1S Mask */ + +/* TPI Integration Mode Control Register Definitions */ +#define TPI_ITCTRL_Mode_Pos 0U /*!< TPI ITCTRL: Mode Position */ +#define TPI_ITCTRL_Mode_Msk (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/) /*!< TPI ITCTRL: Mode Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_FIFOSZ_Pos 6U /*!< TPI DEVID: FIFOSZ Position */ +#define TPI_DEVID_FIFOSZ_Msk (0x7UL << TPI_DEVID_FIFOSZ_Pos) /*!< TPI DEVID: FIFOSZ Mask */ + +#define TPI_DEVID_NrTraceInput_Pos 0U /*!< TPI DEVID: NrTraceInput Position */ +#define TPI_DEVID_NrTraceInput_Msk (0x3FUL /*<< TPI_DEVID_NrTraceInput_Pos*/) /*!< TPI DEVID: NrTraceInput Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) MPU Region Limit Address Register */ + uint32_t RESERVED0[7U]; + union { + __IOM uint32_t MAIR[2]; + struct { + __IOM uint32_t MAIR0; /*!< Offset: 0x030 (R/W) MPU Memory Attribute Indirection Register 0 */ + __IOM uint32_t MAIR1; /*!< Offset: 0x034 (R/W) MPU Memory Attribute Indirection Register 1 */ + }; + }; +} MPU_Type; + +#define MPU_TYPE_RALIASES 1U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_BASE_Pos 5U /*!< MPU RBAR: BASE Position */ +#define MPU_RBAR_BASE_Msk (0x7FFFFFFUL << MPU_RBAR_BASE_Pos) /*!< MPU RBAR: BASE Mask */ + +#define MPU_RBAR_SH_Pos 3U /*!< MPU RBAR: SH Position */ +#define MPU_RBAR_SH_Msk (0x3UL << MPU_RBAR_SH_Pos) /*!< MPU RBAR: SH Mask */ + +#define MPU_RBAR_AP_Pos 1U /*!< MPU RBAR: AP Position */ +#define MPU_RBAR_AP_Msk (0x3UL << MPU_RBAR_AP_Pos) /*!< MPU RBAR: AP Mask */ + +#define MPU_RBAR_XN_Pos 0U /*!< MPU RBAR: XN Position */ +#define MPU_RBAR_XN_Msk (01UL /*<< MPU_RBAR_XN_Pos*/) /*!< MPU RBAR: XN Mask */ + +/* MPU Region Limit Address Register Definitions */ +#define MPU_RLAR_LIMIT_Pos 5U /*!< MPU RLAR: LIMIT Position */ +#define MPU_RLAR_LIMIT_Msk (0x7FFFFFFUL << MPU_RLAR_LIMIT_Pos) /*!< MPU RLAR: LIMIT Mask */ + +#define MPU_RLAR_AttrIndx_Pos 1U /*!< MPU RLAR: AttrIndx Position */ +#define MPU_RLAR_AttrIndx_Msk (0x7UL << MPU_RLAR_AttrIndx_Pos) /*!< MPU RLAR: AttrIndx Mask */ + +#define MPU_RLAR_EN_Pos 0U /*!< MPU RLAR: EN Position */ +#define MPU_RLAR_EN_Msk (1UL /*<< MPU_RLAR_EN_Pos*/) /*!< MPU RLAR: EN Mask */ + +/* MPU Memory Attribute Indirection Register 0 Definitions */ +#define MPU_MAIR0_Attr3_Pos 24U /*!< MPU MAIR0: Attr3 Position */ +#define MPU_MAIR0_Attr3_Msk (0xFFUL << MPU_MAIR0_Attr3_Pos) /*!< MPU MAIR0: Attr3 Mask */ + +#define MPU_MAIR0_Attr2_Pos 16U /*!< MPU MAIR0: Attr2 Position */ +#define MPU_MAIR0_Attr2_Msk (0xFFUL << MPU_MAIR0_Attr2_Pos) /*!< MPU MAIR0: Attr2 Mask */ + +#define MPU_MAIR0_Attr1_Pos 8U /*!< MPU MAIR0: Attr1 Position */ +#define MPU_MAIR0_Attr1_Msk (0xFFUL << MPU_MAIR0_Attr1_Pos) /*!< MPU MAIR0: Attr1 Mask */ + +#define MPU_MAIR0_Attr0_Pos 0U /*!< MPU MAIR0: Attr0 Position */ +#define MPU_MAIR0_Attr0_Msk (0xFFUL /*<< MPU_MAIR0_Attr0_Pos*/) /*!< MPU MAIR0: Attr0 Mask */ + +/* MPU Memory Attribute Indirection Register 1 Definitions */ +#define MPU_MAIR1_Attr7_Pos 24U /*!< MPU MAIR1: Attr7 Position */ +#define MPU_MAIR1_Attr7_Msk (0xFFUL << MPU_MAIR1_Attr7_Pos) /*!< MPU MAIR1: Attr7 Mask */ + +#define MPU_MAIR1_Attr6_Pos 16U /*!< MPU MAIR1: Attr6 Position */ +#define MPU_MAIR1_Attr6_Msk (0xFFUL << MPU_MAIR1_Attr6_Pos) /*!< MPU MAIR1: Attr6 Mask */ + +#define MPU_MAIR1_Attr5_Pos 8U /*!< MPU MAIR1: Attr5 Position */ +#define MPU_MAIR1_Attr5_Msk (0xFFUL << MPU_MAIR1_Attr5_Pos) /*!< MPU MAIR1: Attr5 Mask */ + +#define MPU_MAIR1_Attr4_Pos 0U /*!< MPU MAIR1: Attr4 Position */ +#define MPU_MAIR1_Attr4_Msk (0xFFUL /*<< MPU_MAIR1_Attr4_Pos*/) /*!< MPU MAIR1: Attr4 Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SAU Security Attribution Unit (SAU) + \brief Type definitions for the Security Attribution Unit (SAU) + @{ + */ + +/** + \brief Structure type to access the Security Attribution Unit (SAU). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SAU Control Register */ + __IM uint32_t TYPE; /*!< Offset: 0x004 (R/ ) SAU Type Register */ +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) SAU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) SAU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) SAU Region Limit Address Register */ +#endif +} SAU_Type; + +/* SAU Control Register Definitions */ +#define SAU_CTRL_ALLNS_Pos 1U /*!< SAU CTRL: ALLNS Position */ +#define SAU_CTRL_ALLNS_Msk (1UL << SAU_CTRL_ALLNS_Pos) /*!< SAU CTRL: ALLNS Mask */ + +#define SAU_CTRL_ENABLE_Pos 0U /*!< SAU CTRL: ENABLE Position */ +#define SAU_CTRL_ENABLE_Msk (1UL /*<< SAU_CTRL_ENABLE_Pos*/) /*!< SAU CTRL: ENABLE Mask */ + +/* SAU Type Register Definitions */ +#define SAU_TYPE_SREGION_Pos 0U /*!< SAU TYPE: SREGION Position */ +#define SAU_TYPE_SREGION_Msk (0xFFUL /*<< SAU_TYPE_SREGION_Pos*/) /*!< SAU TYPE: SREGION Mask */ + +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) +/* SAU Region Number Register Definitions */ +#define SAU_RNR_REGION_Pos 0U /*!< SAU RNR: REGION Position */ +#define SAU_RNR_REGION_Msk (0xFFUL /*<< SAU_RNR_REGION_Pos*/) /*!< SAU RNR: REGION Mask */ + +/* SAU Region Base Address Register Definitions */ +#define SAU_RBAR_BADDR_Pos 5U /*!< SAU RBAR: BADDR Position */ +#define SAU_RBAR_BADDR_Msk (0x7FFFFFFUL << SAU_RBAR_BADDR_Pos) /*!< SAU RBAR: BADDR Mask */ + +/* SAU Region Limit Address Register Definitions */ +#define SAU_RLAR_LADDR_Pos 5U /*!< SAU RLAR: LADDR Position */ +#define SAU_RLAR_LADDR_Msk (0x7FFFFFFUL << SAU_RLAR_LADDR_Pos) /*!< SAU RLAR: LADDR Mask */ + +#define SAU_RLAR_NSC_Pos 1U /*!< SAU RLAR: NSC Position */ +#define SAU_RLAR_NSC_Msk (1UL << SAU_RLAR_NSC_Pos) /*!< SAU RLAR: NSC Mask */ + +#define SAU_RLAR_ENABLE_Pos 0U /*!< SAU RLAR: ENABLE Position */ +#define SAU_RLAR_ENABLE_Msk (1UL /*<< SAU_RLAR_ENABLE_Pos*/) /*!< SAU RLAR: ENABLE Mask */ + +#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */ + +/*@} end of group CMSIS_SAU */ +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** + \brief Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ + uint32_t RESERVED4[1U]; + __IOM uint32_t DAUTHCTRL; /*!< Offset: 0x014 (R/W) Debug Authentication Control Register */ + __IOM uint32_t DSCSR; /*!< Offset: 0x018 (R/W) Debug Security Control and Status Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register Definitions */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESTART_ST_Pos 26U /*!< CoreDebug DHCSR: S_RESTART_ST Position */ +#define CoreDebug_DHCSR_S_RESTART_ST_Msk (1UL << CoreDebug_DHCSR_S_RESTART_ST_Pos) /*!< CoreDebug DHCSR: S_RESTART_ST Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register Definitions */ +#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register */ +#define CoreDebug_DEMCR_DWTENA_Pos 24U /*!< CoreDebug DEMCR: DWTENA Position */ +#define CoreDebug_DEMCR_DWTENA_Msk (1UL << CoreDebug_DEMCR_DWTENA_Pos) /*!< CoreDebug DEMCR: DWTENA Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ + +/* Debug Authentication Control Register Definitions */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos 3U /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Position */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos) /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Mask */ + +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos 2U /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Msk (1UL << CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos) /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Mask */ + +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Pos 1U /*!< CoreDebug DAUTHCTRL: INTSPIDEN Position */ +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPIDEN_Pos) /*!< CoreDebug DAUTHCTRL: INTSPIDEN Mask */ + +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Pos 0U /*!< CoreDebug DAUTHCTRL: SPIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Msk (1UL /*<< CoreDebug_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< CoreDebug DAUTHCTRL: SPIDENSEL Mask */ + +/* Debug Security Control and Status Register Definitions */ +#define CoreDebug_DSCSR_CDS_Pos 16U /*!< CoreDebug DSCSR: CDS Position */ +#define CoreDebug_DSCSR_CDS_Msk (1UL << CoreDebug_DSCSR_CDS_Pos) /*!< CoreDebug DSCSR: CDS Mask */ + +#define CoreDebug_DSCSR_SBRSEL_Pos 1U /*!< CoreDebug DSCSR: SBRSEL Position */ +#define CoreDebug_DSCSR_SBRSEL_Msk (1UL << CoreDebug_DSCSR_SBRSEL_Pos) /*!< CoreDebug DSCSR: SBRSEL Mask */ + +#define CoreDebug_DSCSR_SBRSELEN_Pos 0U /*!< CoreDebug DSCSR: SBRSELEN Position */ +#define CoreDebug_DSCSR_SBRSELEN_Msk (1UL /*<< CoreDebug_DSCSR_SBRSELEN_Pos*/) /*!< CoreDebug DSCSR: SBRSELEN Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ + #define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ + #define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ + #define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ + #define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */ + #define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ + #define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ + #define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + + + #define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ + #define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ + #define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ + #define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ + #define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ + #define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE ) /*!< Core Debug configuration struct */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ + #endif + + #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SAU_BASE (SCS_BASE + 0x0DD0UL) /*!< Security Attribution Unit */ + #define SAU ((SAU_Type *) SAU_BASE ) /*!< Security Attribution Unit */ + #endif + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SCS_BASE_NS (0xE002E000UL) /*!< System Control Space Base Address (non-secure address space) */ + #define CoreDebug_BASE_NS (0xE002EDF0UL) /*!< Core Debug Base Address (non-secure address space) */ + #define SysTick_BASE_NS (SCS_BASE_NS + 0x0010UL) /*!< SysTick Base Address (non-secure address space) */ + #define NVIC_BASE_NS (SCS_BASE_NS + 0x0100UL) /*!< NVIC Base Address (non-secure address space) */ + #define SCB_BASE_NS (SCS_BASE_NS + 0x0D00UL) /*!< System Control Block Base Address (non-secure address space) */ + + #define SCB_NS ((SCB_Type *) SCB_BASE_NS ) /*!< SCB configuration struct (non-secure address space) */ + #define SysTick_NS ((SysTick_Type *) SysTick_BASE_NS ) /*!< SysTick configuration struct (non-secure address space) */ + #define NVIC_NS ((NVIC_Type *) NVIC_BASE_NS ) /*!< NVIC configuration struct (non-secure address space) */ + #define CoreDebug_NS ((CoreDebug_Type *) CoreDebug_BASE_NS) /*!< Core Debug configuration struct (non-secure address space) */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE_NS (SCS_BASE_NS + 0x0D90UL) /*!< Memory Protection Unit (non-secure address space) */ + #define MPU_NS ((MPU_Type *) MPU_BASE_NS ) /*!< Memory Protection Unit (non-secure address space) */ + #endif + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else +/*#define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping not available for Cortex-M23 */ +/*#define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping not available for Cortex-M23 */ + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ + #define NVIC_GetActive __NVIC_GetActive + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* Special LR values for Secure/Non-Secure call handling and exception handling */ + +/* Function Return Payload (from ARMv8-M Architecture Reference Manual) LR value on entry from Secure BLXNS */ +#define FNC_RETURN (0xFEFFFFFFUL) /* bit [0] ignored when processing a branch */ + +/* The following EXC_RETURN mask values are used to evaluate the LR on exception entry */ +#define EXC_RETURN_PREFIX (0xFF000000UL) /* bits [31:24] set to indicate an EXC_RETURN value */ +#define EXC_RETURN_S (0x00000040UL) /* bit [6] stack used to push registers: 0=Non-secure 1=Secure */ +#define EXC_RETURN_DCRS (0x00000020UL) /* bit [5] stacking rules for called registers: 0=skipped 1=saved */ +#define EXC_RETURN_FTYPE (0x00000010UL) /* bit [4] allocate stack for floating-point context: 0=done 1=skipped */ +#define EXC_RETURN_MODE (0x00000008UL) /* bit [3] processor mode for return: 0=Handler mode 1=Thread mode */ +#define EXC_RETURN_SPSEL (0x00000004UL) /* bit [2] stack pointer used to restore context: 0=MSP 1=PSP */ +#define EXC_RETURN_ES (0x00000001UL) /* bit [0] security state exception was taken to: 0=Non-secure 1=Secure */ + +/* Integrity Signature (from ARMv8-M Architecture Reference Manual) for exception context stacking */ +#if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) /* Value for processors with floating-point extension: */ +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125AUL) /* bit [0] SFTC must match LR bit[4] EXC_RETURN_FTYPE */ +#else +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125BUL) /* Value for processors without floating-point extension */ +#endif + + +/* Interrupt Priorities are WORD accessible only under Armv6-M */ +/* The following MACROS handle generation of the register offset and byte masks */ +#define _BIT_SHIFT(IRQn) ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL) +#define _SHP_IDX(IRQn) ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) ) +#define _IP_IDX(IRQn) ( (((uint32_t)(int32_t)(IRQn)) >> 2UL) ) + +#define __NVIC_SetPriorityGrouping(X) (void)(X) +#define __NVIC_GetPriorityGrouping() (0U) + +/** + \brief Enable Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + __COMPILER_BARRIER(); + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __COMPILER_BARRIER(); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Get Interrupt Target State + \details Reads the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + \return 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_GetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Target State + \details Sets the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_SetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] |= ((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Clear Interrupt Target State + \details Clears the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_ClearTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] &= ~((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IPR[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IPR[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } + else + { + SCB->SHPR[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHPR[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IPR[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return((uint32_t)(((SCB->SHPR[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + If VTOR is not present address 0 must be mapped to SRAM. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + uint32_t *vectors = (uint32_t *)SCB->VTOR; +#else + uint32_t *vectors = (uint32_t *)0x0U; +#endif + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; + __DSB(); +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + uint32_t *vectors = (uint32_t *)SCB->VTOR; +#else + uint32_t *vectors = (uint32_t *)0x0U; +#endif + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + SCB_AIRCR_SYSRESETREQ_Msk); + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Enable Interrupt (non-secure) + \details Enables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_EnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status (non-secure) + \details Returns a device specific interrupt enable status from the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetEnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt (non-secure) + \details Disables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_DisableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Pending Interrupt (non-secure) + \details Reads the NVIC pending register in the non-secure NVIC when in secure state and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt (non-secure) + \details Sets the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_SetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt (non-secure) + \details Clears the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_ClearPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt (non-secure) + \details Reads the active register in non-secure NVIC when in secure state and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetActive_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority (non-secure) + \details Sets the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every non-secure processor exception. + */ +__STATIC_INLINE void TZ_NVIC_SetPriority_NS(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->IPR[_IP_IDX(IRQn)] = ((uint32_t)(NVIC_NS->IPR[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } + else + { + SCB_NS->SHPR[_SHP_IDX(IRQn)] = ((uint32_t)(SCB_NS->SHPR[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } +} + + +/** + \brief Get Interrupt Priority (non-secure) + \details Reads the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPriority_NS(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->IPR[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return((uint32_t)(((SCB_NS->SHPR[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) &&(__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_NVICFunctions */ + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv8.h" + +#endif + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + return 0U; /* No FPU */ +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ########################## SAU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SAUFunctions SAU Functions + \brief Functions that configure the SAU. + @{ + */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + +/** + \brief Enable SAU + \details Enables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Enable(void) +{ + SAU->CTRL |= (SAU_CTRL_ENABLE_Msk); +} + + + +/** + \brief Disable SAU + \details Disables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Disable(void) +{ + SAU->CTRL &= ~(SAU_CTRL_ENABLE_Msk); +} + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_SAUFunctions */ + + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief System Tick Configuration (non-secure) + \details Initializes the non-secure System Timer and its interrupt when in secure state, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function TZ_SysTick_Config_NS is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + + */ +__STATIC_INLINE uint32_t TZ_SysTick_Config_NS(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick_NS->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + TZ_NVIC_SetPriority_NS (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick_NS->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick_NS->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM23_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/firmware/Drivers/CMSIS/Include/core_cm3.h b/firmware/Drivers/CMSIS/Include/core_cm3.h new file mode 100644 index 0000000..8157ca7 --- /dev/null +++ b/firmware/Drivers/CMSIS/Include/core_cm3.h @@ -0,0 +1,1937 @@ +/**************************************************************************//** + * @file core_cm3.h + * @brief CMSIS Cortex-M3 Core Peripheral Access Layer Header File + * @version V5.1.0 + * @date 13. March 2019 + ******************************************************************************/ +/* + * Copyright (c) 2009-2019 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_CM3_H_GENERIC +#define __CORE_CM3_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup Cortex_M3 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS CM3 definitions */ +#define __CM3_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM3_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM3_CMSIS_VERSION ((__CM3_CMSIS_VERSION_MAIN << 16U) | \ + __CM3_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (3U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + This core does not support an FPU at all +*/ +#define __FPU_USED 0U + +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_FP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM3_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM3_H_DEPENDANT +#define __CORE_CM3_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM3_REV + #define __CM3_REV 0x0200U + #warning "__CM3_REV not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 3U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group Cortex_M3 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:27; /*!< bit: 0..26 Reserved */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + +#define APSR_Q_Pos 27U /*!< APSR: Q Position */ +#define APSR_Q_Msk (1UL << APSR_Q_Pos) /*!< APSR: Q Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:1; /*!< bit: 9 Reserved */ + uint32_t ICI_IT_1:6; /*!< bit: 10..15 ICI/IT part 1 */ + uint32_t _reserved1:8; /*!< bit: 16..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit */ + uint32_t ICI_IT_2:2; /*!< bit: 25..26 ICI/IT part 2 */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_Q_Pos 27U /*!< xPSR: Q Position */ +#define xPSR_Q_Msk (1UL << xPSR_Q_Pos) /*!< xPSR: Q Mask */ + +#define xPSR_ICI_IT_2_Pos 25U /*!< xPSR: ICI/IT part 2 Position */ +#define xPSR_ICI_IT_2_Msk (3UL << xPSR_ICI_IT_2_Pos) /*!< xPSR: ICI/IT part 2 Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_ICI_IT_1_Pos 10U /*!< xPSR: ICI/IT part 1 Position */ +#define xPSR_ICI_IT_1_Msk (0x3FUL << xPSR_ICI_IT_1_Pos) /*!< xPSR: ICI/IT part 1 Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ + uint32_t _reserved1:30; /*!< bit: 2..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[8U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[24U]; + __IOM uint32_t ICER[8U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RESERVED1[24U]; + __IOM uint32_t ISPR[8U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[24U]; + __IOM uint32_t ICPR[8U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[24U]; + __IOM uint32_t IABR[8U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[56U]; + __IOM uint8_t IP[240U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED5[644U]; + __OM uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */ +} NVIC_Type; + +/* Software Triggered Interrupt Register Definitions */ +#define NVIC_STIR_INTID_Pos 0U /*!< STIR: INTLINESNUM Position */ +#define NVIC_STIR_INTID_Msk (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/) /*!< STIR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + __IOM uint8_t SHP[12U]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + __IOM uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */ + __IOM uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ + __IOM uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ + __IOM uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */ + __IOM uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ + __IOM uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */ + __IM uint32_t PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + __IM uint32_t DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + __IM uint32_t ADR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __IM uint32_t MMFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __IM uint32_t ISAR[5U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + uint32_t RESERVED0[5U]; + __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_NMIPENDSET_Pos 31U /*!< SCB ICSR: NMIPENDSET Position */ +#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Vector Table Offset Register Definitions */ +#if defined (__CM3_REV) && (__CM3_REV < 0x0201U) /* core r2p1 */ +#define SCB_VTOR_TBLBASE_Pos 29U /*!< SCB VTOR: TBLBASE Position */ +#define SCB_VTOR_TBLBASE_Msk (1UL << SCB_VTOR_TBLBASE_Pos) /*!< SCB VTOR: TBLBASE Mask */ + +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x3FFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ +#else +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ +#endif + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_PRIGROUP_Pos 8U /*!< SCB AIRCR: PRIGROUP Position */ +#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +#define SCB_AIRCR_VECTRESET_Pos 0U /*!< SCB AIRCR: VECTRESET Position */ +#define SCB_AIRCR_VECTRESET_Msk (1UL /*<< SCB_AIRCR_VECTRESET_Pos*/) /*!< SCB AIRCR: VECTRESET Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_STKALIGN_Pos 9U /*!< SCB CCR: STKALIGN Position */ +#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +#define SCB_CCR_NONBASETHRDENA_Pos 0U /*!< SCB CCR: NONBASETHRDENA Position */ +#define SCB_CCR_NONBASETHRDENA_Msk (1UL /*<< SCB_CCR_NONBASETHRDENA_Pos*/) /*!< SCB CCR: NONBASETHRDENA Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_USGFAULTENA_Pos 18U /*!< SCB SHCSR: USGFAULTENA Position */ +#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ + +#define SCB_SHCSR_BUSFAULTENA_Pos 17U /*!< SCB SHCSR: BUSFAULTENA Position */ +#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ + +#define SCB_SHCSR_MEMFAULTENA_Pos 16U /*!< SCB SHCSR: MEMFAULTENA Position */ +#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_BUSFAULTPENDED_Pos 14U /*!< SCB SHCSR: BUSFAULTPENDED Position */ +#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ + +#define SCB_SHCSR_MEMFAULTPENDED_Pos 13U /*!< SCB SHCSR: MEMFAULTPENDED Position */ +#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ + +#define SCB_SHCSR_USGFAULTPENDED_Pos 12U /*!< SCB SHCSR: USGFAULTPENDED Position */ +#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_MONITORACT_Pos 8U /*!< SCB SHCSR: MONITORACT Position */ +#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_USGFAULTACT_Pos 3U /*!< SCB SHCSR: USGFAULTACT Position */ +#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ + +#define SCB_SHCSR_BUSFAULTACT_Pos 1U /*!< SCB SHCSR: BUSFAULTACT Position */ +#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ + +#define SCB_SHCSR_MEMFAULTACT_Pos 0U /*!< SCB SHCSR: MEMFAULTACT Position */ +#define SCB_SHCSR_MEMFAULTACT_Msk (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/) /*!< SCB SHCSR: MEMFAULTACT Mask */ + +/* SCB Configurable Fault Status Register Definitions */ +#define SCB_CFSR_USGFAULTSR_Pos 16U /*!< SCB CFSR: Usage Fault Status Register Position */ +#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ + +#define SCB_CFSR_BUSFAULTSR_Pos 8U /*!< SCB CFSR: Bus Fault Status Register Position */ +#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ + +#define SCB_CFSR_MEMFAULTSR_Pos 0U /*!< SCB CFSR: Memory Manage Fault Status Register Position */ +#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ + +/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_MMARVALID_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 7U) /*!< SCB CFSR (MMFSR): MMARVALID Position */ +#define SCB_CFSR_MMARVALID_Msk (1UL << SCB_CFSR_MMARVALID_Pos) /*!< SCB CFSR (MMFSR): MMARVALID Mask */ + +#define SCB_CFSR_MSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 4U) /*!< SCB CFSR (MMFSR): MSTKERR Position */ +#define SCB_CFSR_MSTKERR_Msk (1UL << SCB_CFSR_MSTKERR_Pos) /*!< SCB CFSR (MMFSR): MSTKERR Mask */ + +#define SCB_CFSR_MUNSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 3U) /*!< SCB CFSR (MMFSR): MUNSTKERR Position */ +#define SCB_CFSR_MUNSTKERR_Msk (1UL << SCB_CFSR_MUNSTKERR_Pos) /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */ + +#define SCB_CFSR_DACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 1U) /*!< SCB CFSR (MMFSR): DACCVIOL Position */ +#define SCB_CFSR_DACCVIOL_Msk (1UL << SCB_CFSR_DACCVIOL_Pos) /*!< SCB CFSR (MMFSR): DACCVIOL Mask */ + +#define SCB_CFSR_IACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 0U) /*!< SCB CFSR (MMFSR): IACCVIOL Position */ +#define SCB_CFSR_IACCVIOL_Msk (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/) /*!< SCB CFSR (MMFSR): IACCVIOL Mask */ + +/* BusFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_BFARVALID_Pos (SCB_CFSR_BUSFAULTSR_Pos + 7U) /*!< SCB CFSR (BFSR): BFARVALID Position */ +#define SCB_CFSR_BFARVALID_Msk (1UL << SCB_CFSR_BFARVALID_Pos) /*!< SCB CFSR (BFSR): BFARVALID Mask */ + +#define SCB_CFSR_STKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 4U) /*!< SCB CFSR (BFSR): STKERR Position */ +#define SCB_CFSR_STKERR_Msk (1UL << SCB_CFSR_STKERR_Pos) /*!< SCB CFSR (BFSR): STKERR Mask */ + +#define SCB_CFSR_UNSTKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 3U) /*!< SCB CFSR (BFSR): UNSTKERR Position */ +#define SCB_CFSR_UNSTKERR_Msk (1UL << SCB_CFSR_UNSTKERR_Pos) /*!< SCB CFSR (BFSR): UNSTKERR Mask */ + +#define SCB_CFSR_IMPRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 2U) /*!< SCB CFSR (BFSR): IMPRECISERR Position */ +#define SCB_CFSR_IMPRECISERR_Msk (1UL << SCB_CFSR_IMPRECISERR_Pos) /*!< SCB CFSR (BFSR): IMPRECISERR Mask */ + +#define SCB_CFSR_PRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 1U) /*!< SCB CFSR (BFSR): PRECISERR Position */ +#define SCB_CFSR_PRECISERR_Msk (1UL << SCB_CFSR_PRECISERR_Pos) /*!< SCB CFSR (BFSR): PRECISERR Mask */ + +#define SCB_CFSR_IBUSERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 0U) /*!< SCB CFSR (BFSR): IBUSERR Position */ +#define SCB_CFSR_IBUSERR_Msk (1UL << SCB_CFSR_IBUSERR_Pos) /*!< SCB CFSR (BFSR): IBUSERR Mask */ + +/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_DIVBYZERO_Pos (SCB_CFSR_USGFAULTSR_Pos + 9U) /*!< SCB CFSR (UFSR): DIVBYZERO Position */ +#define SCB_CFSR_DIVBYZERO_Msk (1UL << SCB_CFSR_DIVBYZERO_Pos) /*!< SCB CFSR (UFSR): DIVBYZERO Mask */ + +#define SCB_CFSR_UNALIGNED_Pos (SCB_CFSR_USGFAULTSR_Pos + 8U) /*!< SCB CFSR (UFSR): UNALIGNED Position */ +#define SCB_CFSR_UNALIGNED_Msk (1UL << SCB_CFSR_UNALIGNED_Pos) /*!< SCB CFSR (UFSR): UNALIGNED Mask */ + +#define SCB_CFSR_NOCP_Pos (SCB_CFSR_USGFAULTSR_Pos + 3U) /*!< SCB CFSR (UFSR): NOCP Position */ +#define SCB_CFSR_NOCP_Msk (1UL << SCB_CFSR_NOCP_Pos) /*!< SCB CFSR (UFSR): NOCP Mask */ + +#define SCB_CFSR_INVPC_Pos (SCB_CFSR_USGFAULTSR_Pos + 2U) /*!< SCB CFSR (UFSR): INVPC Position */ +#define SCB_CFSR_INVPC_Msk (1UL << SCB_CFSR_INVPC_Pos) /*!< SCB CFSR (UFSR): INVPC Mask */ + +#define SCB_CFSR_INVSTATE_Pos (SCB_CFSR_USGFAULTSR_Pos + 1U) /*!< SCB CFSR (UFSR): INVSTATE Position */ +#define SCB_CFSR_INVSTATE_Msk (1UL << SCB_CFSR_INVSTATE_Pos) /*!< SCB CFSR (UFSR): INVSTATE Mask */ + +#define SCB_CFSR_UNDEFINSTR_Pos (SCB_CFSR_USGFAULTSR_Pos + 0U) /*!< SCB CFSR (UFSR): UNDEFINSTR Position */ +#define SCB_CFSR_UNDEFINSTR_Msk (1UL << SCB_CFSR_UNDEFINSTR_Pos) /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */ + +/* SCB Hard Fault Status Register Definitions */ +#define SCB_HFSR_DEBUGEVT_Pos 31U /*!< SCB HFSR: DEBUGEVT Position */ +#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ + +#define SCB_HFSR_FORCED_Pos 30U /*!< SCB HFSR: FORCED Position */ +#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ + +#define SCB_HFSR_VECTTBL_Pos 1U /*!< SCB HFSR: VECTTBL Position */ +#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ + +/* SCB Debug Fault Status Register Definitions */ +#define SCB_DFSR_EXTERNAL_Pos 4U /*!< SCB DFSR: EXTERNAL Position */ +#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ + +#define SCB_DFSR_VCATCH_Pos 3U /*!< SCB DFSR: VCATCH Position */ +#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ + +#define SCB_DFSR_DWTTRAP_Pos 2U /*!< SCB DFSR: DWTTRAP Position */ +#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ + +#define SCB_DFSR_BKPT_Pos 1U /*!< SCB DFSR: BKPT Position */ +#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ + +#define SCB_DFSR_HALTED_Pos 0U /*!< SCB DFSR: HALTED Position */ +#define SCB_DFSR_HALTED_Msk (1UL /*<< SCB_DFSR_HALTED_Pos*/) /*!< SCB DFSR: HALTED Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** + \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IM uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */ +#if defined (__CM3_REV) && (__CM3_REV >= 0x200U) + __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ +#else + uint32_t RESERVED1[1U]; +#endif +} SCnSCB_Type; + +/* Interrupt Controller Type Register Definitions */ +#define SCnSCB_ICTR_INTLINESNUM_Pos 0U /*!< ICTR: INTLINESNUM Position */ +#define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/) /*!< ICTR: INTLINESNUM Mask */ + +/* Auxiliary Control Register Definitions */ +#if defined (__CM3_REV) && (__CM3_REV >= 0x200U) +#define SCnSCB_ACTLR_DISOOFP_Pos 9U /*!< ACTLR: DISOOFP Position */ +#define SCnSCB_ACTLR_DISOOFP_Msk (1UL << SCnSCB_ACTLR_DISOOFP_Pos) /*!< ACTLR: DISOOFP Mask */ + +#define SCnSCB_ACTLR_DISFPCA_Pos 8U /*!< ACTLR: DISFPCA Position */ +#define SCnSCB_ACTLR_DISFPCA_Msk (1UL << SCnSCB_ACTLR_DISFPCA_Pos) /*!< ACTLR: DISFPCA Mask */ + +#define SCnSCB_ACTLR_DISFOLD_Pos 2U /*!< ACTLR: DISFOLD Position */ +#define SCnSCB_ACTLR_DISFOLD_Msk (1UL << SCnSCB_ACTLR_DISFOLD_Pos) /*!< ACTLR: DISFOLD Mask */ + +#define SCnSCB_ACTLR_DISDEFWBUF_Pos 1U /*!< ACTLR: DISDEFWBUF Position */ +#define SCnSCB_ACTLR_DISDEFWBUF_Msk (1UL << SCnSCB_ACTLR_DISDEFWBUF_Pos) /*!< ACTLR: DISDEFWBUF Mask */ + +#define SCnSCB_ACTLR_DISMCYCINT_Pos 0U /*!< ACTLR: DISMCYCINT Position */ +#define SCnSCB_ACTLR_DISMCYCINT_Msk (1UL /*<< SCnSCB_ACTLR_DISMCYCINT_Pos*/) /*!< ACTLR: DISMCYCINT Mask */ +#endif + +/*@} end of group CMSIS_SCnotSCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_ITM Instrumentation Trace Macrocell (ITM) + \brief Type definitions for the Instrumentation Trace Macrocell (ITM) + @{ + */ + +/** + \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). + */ +typedef struct +{ + __OM union + { + __OM uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ + __OM uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ + __OM uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ + } PORT [32U]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ + uint32_t RESERVED0[864U]; + __IOM uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ + uint32_t RESERVED1[15U]; + __IOM uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ + uint32_t RESERVED2[15U]; + __IOM uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ + uint32_t RESERVED3[32U]; + uint32_t RESERVED4[43U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */ + uint32_t RESERVED5[6U]; + __IM uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Register #4 */ + __IM uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Register #5 */ + __IM uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Register #6 */ + __IM uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Register #7 */ + __IM uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Register #0 */ + __IM uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Register #1 */ + __IM uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Register #2 */ + __IM uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Register #3 */ + __IM uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Register #0 */ + __IM uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Register #1 */ + __IM uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Register #2 */ + __IM uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Register #3 */ +} ITM_Type; + +/* ITM Trace Privilege Register Definitions */ +#define ITM_TPR_PRIVMASK_Pos 0U /*!< ITM TPR: PRIVMASK Position */ +#define ITM_TPR_PRIVMASK_Msk (0xFFFFFFFFUL /*<< ITM_TPR_PRIVMASK_Pos*/) /*!< ITM TPR: PRIVMASK Mask */ + +/* ITM Trace Control Register Definitions */ +#define ITM_TCR_BUSY_Pos 23U /*!< ITM TCR: BUSY Position */ +#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ + +#define ITM_TCR_TraceBusID_Pos 16U /*!< ITM TCR: ATBID Position */ +#define ITM_TCR_TraceBusID_Msk (0x7FUL << ITM_TCR_TraceBusID_Pos) /*!< ITM TCR: ATBID Mask */ + +#define ITM_TCR_GTSFREQ_Pos 10U /*!< ITM TCR: Global timestamp frequency Position */ +#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */ + +#define ITM_TCR_TSPrescale_Pos 8U /*!< ITM TCR: TSPrescale Position */ +#define ITM_TCR_TSPrescale_Msk (3UL << ITM_TCR_TSPrescale_Pos) /*!< ITM TCR: TSPrescale Mask */ + +#define ITM_TCR_SWOENA_Pos 4U /*!< ITM TCR: SWOENA Position */ +#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ + +#define ITM_TCR_DWTENA_Pos 3U /*!< ITM TCR: DWTENA Position */ +#define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ + +#define ITM_TCR_SYNCENA_Pos 2U /*!< ITM TCR: SYNCENA Position */ +#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ + +#define ITM_TCR_TSENA_Pos 1U /*!< ITM TCR: TSENA Position */ +#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ + +#define ITM_TCR_ITMENA_Pos 0U /*!< ITM TCR: ITM Enable bit Position */ +#define ITM_TCR_ITMENA_Msk (1UL /*<< ITM_TCR_ITMENA_Pos*/) /*!< ITM TCR: ITM Enable bit Mask */ + +/* ITM Lock Status Register Definitions */ +#define ITM_LSR_ByteAcc_Pos 2U /*!< ITM LSR: ByteAcc Position */ +#define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ + +#define ITM_LSR_Access_Pos 1U /*!< ITM LSR: Access Position */ +#define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ + +#define ITM_LSR_Present_Pos 0U /*!< ITM LSR: Present Position */ +#define ITM_LSR_Present_Msk (1UL /*<< ITM_LSR_Present_Pos*/) /*!< ITM LSR: Present Mask */ + +/*@}*/ /* end of group CMSIS_ITM */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + __IOM uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */ + __IOM uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */ + __IOM uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Register */ + __IOM uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */ + __IOM uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */ + __IOM uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Register */ + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + __IOM uint32_t MASK0; /*!< Offset: 0x024 (R/W) Mask Register 0 */ + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED0[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + __IOM uint32_t MASK1; /*!< Offset: 0x034 (R/W) Mask Register 1 */ + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + __IOM uint32_t MASK2; /*!< Offset: 0x044 (R/W) Mask Register 2 */ + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + __IOM uint32_t MASK3; /*!< Offset: 0x054 (R/W) Mask Register 3 */ + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +#define DWT_CTRL_CYCEVTENA_Pos 22U /*!< DWT CTRL: CYCEVTENA Position */ +#define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTRL: CYCEVTENA Mask */ + +#define DWT_CTRL_FOLDEVTENA_Pos 21U /*!< DWT CTRL: FOLDEVTENA Position */ +#define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTRL: FOLDEVTENA Mask */ + +#define DWT_CTRL_LSUEVTENA_Pos 20U /*!< DWT CTRL: LSUEVTENA Position */ +#define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTRL: LSUEVTENA Mask */ + +#define DWT_CTRL_SLEEPEVTENA_Pos 19U /*!< DWT CTRL: SLEEPEVTENA Position */ +#define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTRL: SLEEPEVTENA Mask */ + +#define DWT_CTRL_EXCEVTENA_Pos 18U /*!< DWT CTRL: EXCEVTENA Position */ +#define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTRL: EXCEVTENA Mask */ + +#define DWT_CTRL_CPIEVTENA_Pos 17U /*!< DWT CTRL: CPIEVTENA Position */ +#define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTRL: CPIEVTENA Mask */ + +#define DWT_CTRL_EXCTRCENA_Pos 16U /*!< DWT CTRL: EXCTRCENA Position */ +#define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTRL: EXCTRCENA Mask */ + +#define DWT_CTRL_PCSAMPLENA_Pos 12U /*!< DWT CTRL: PCSAMPLENA Position */ +#define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTRL: PCSAMPLENA Mask */ + +#define DWT_CTRL_SYNCTAP_Pos 10U /*!< DWT CTRL: SYNCTAP Position */ +#define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTRL: SYNCTAP Mask */ + +#define DWT_CTRL_CYCTAP_Pos 9U /*!< DWT CTRL: CYCTAP Position */ +#define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTRL: CYCTAP Mask */ + +#define DWT_CTRL_POSTINIT_Pos 5U /*!< DWT CTRL: POSTINIT Position */ +#define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTRL: POSTINIT Mask */ + +#define DWT_CTRL_POSTPRESET_Pos 1U /*!< DWT CTRL: POSTPRESET Position */ +#define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTRL: POSTPRESET Mask */ + +#define DWT_CTRL_CYCCNTENA_Pos 0U /*!< DWT CTRL: CYCCNTENA Position */ +#define DWT_CTRL_CYCCNTENA_Msk (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/) /*!< DWT CTRL: CYCCNTENA Mask */ + +/* DWT CPI Count Register Definitions */ +#define DWT_CPICNT_CPICNT_Pos 0U /*!< DWT CPICNT: CPICNT Position */ +#define DWT_CPICNT_CPICNT_Msk (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/) /*!< DWT CPICNT: CPICNT Mask */ + +/* DWT Exception Overhead Count Register Definitions */ +#define DWT_EXCCNT_EXCCNT_Pos 0U /*!< DWT EXCCNT: EXCCNT Position */ +#define DWT_EXCCNT_EXCCNT_Msk (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/) /*!< DWT EXCCNT: EXCCNT Mask */ + +/* DWT Sleep Count Register Definitions */ +#define DWT_SLEEPCNT_SLEEPCNT_Pos 0U /*!< DWT SLEEPCNT: SLEEPCNT Position */ +#define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/) /*!< DWT SLEEPCNT: SLEEPCNT Mask */ + +/* DWT LSU Count Register Definitions */ +#define DWT_LSUCNT_LSUCNT_Pos 0U /*!< DWT LSUCNT: LSUCNT Position */ +#define DWT_LSUCNT_LSUCNT_Msk (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/) /*!< DWT LSUCNT: LSUCNT Mask */ + +/* DWT Folded-instruction Count Register Definitions */ +#define DWT_FOLDCNT_FOLDCNT_Pos 0U /*!< DWT FOLDCNT: FOLDCNT Position */ +#define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/) /*!< DWT FOLDCNT: FOLDCNT Mask */ + +/* DWT Comparator Mask Register Definitions */ +#define DWT_MASK_MASK_Pos 0U /*!< DWT MASK: MASK Position */ +#define DWT_MASK_MASK_Msk (0x1FUL /*<< DWT_MASK_MASK_Pos*/) /*!< DWT MASK: MASK Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVADDR1_Pos 16U /*!< DWT FUNCTION: DATAVADDR1 Position */ +#define DWT_FUNCTION_DATAVADDR1_Msk (0xFUL << DWT_FUNCTION_DATAVADDR1_Pos) /*!< DWT FUNCTION: DATAVADDR1 Mask */ + +#define DWT_FUNCTION_DATAVADDR0_Pos 12U /*!< DWT FUNCTION: DATAVADDR0 Position */ +#define DWT_FUNCTION_DATAVADDR0_Msk (0xFUL << DWT_FUNCTION_DATAVADDR0_Pos) /*!< DWT FUNCTION: DATAVADDR0 Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_LNK1ENA_Pos 9U /*!< DWT FUNCTION: LNK1ENA Position */ +#define DWT_FUNCTION_LNK1ENA_Msk (0x1UL << DWT_FUNCTION_LNK1ENA_Pos) /*!< DWT FUNCTION: LNK1ENA Mask */ + +#define DWT_FUNCTION_DATAVMATCH_Pos 8U /*!< DWT FUNCTION: DATAVMATCH Position */ +#define DWT_FUNCTION_DATAVMATCH_Msk (0x1UL << DWT_FUNCTION_DATAVMATCH_Pos) /*!< DWT FUNCTION: DATAVMATCH Mask */ + +#define DWT_FUNCTION_CYCMATCH_Pos 7U /*!< DWT FUNCTION: CYCMATCH Position */ +#define DWT_FUNCTION_CYCMATCH_Msk (0x1UL << DWT_FUNCTION_CYCMATCH_Pos) /*!< DWT FUNCTION: CYCMATCH Mask */ + +#define DWT_FUNCTION_EMITRANGE_Pos 5U /*!< DWT FUNCTION: EMITRANGE Position */ +#define DWT_FUNCTION_EMITRANGE_Msk (0x1UL << DWT_FUNCTION_EMITRANGE_Pos) /*!< DWT FUNCTION: EMITRANGE Mask */ + +#define DWT_FUNCTION_FUNCTION_Pos 0U /*!< DWT FUNCTION: FUNCTION Position */ +#define DWT_FUNCTION_FUNCTION_Msk (0xFUL /*<< DWT_FUNCTION_FUNCTION_Pos*/) /*!< DWT FUNCTION: FUNCTION Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Size Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Size Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IM uint32_t FSCR; /*!< Offset: 0x308 (R/ ) Formatter Synchronization Counter Register */ + uint32_t RESERVED3[759U]; + __IM uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER Register */ + __IM uint32_t FIFO0; /*!< Offset: 0xEEC (R/ ) Integration ETM Data */ + __IM uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/ ) ITATBCTR2 */ + uint32_t RESERVED4[1U]; + __IM uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) ITATBCTR0 */ + __IM uint32_t FIFO1; /*!< Offset: 0xEFC (R/ ) Integration ITM Data */ + __IOM uint32_t ITCTRL; /*!< Offset: 0xF00 (R/W) Integration Mode Control */ + uint32_t RESERVED5[39U]; + __IOM uint32_t CLAIMSET; /*!< Offset: 0xFA0 (R/W) Claim tag set */ + __IOM uint32_t CLAIMCLR; /*!< Offset: 0xFA4 (R/W) Claim tag clear */ + uint32_t RESERVED7[8U]; + __IM uint32_t DEVID; /*!< Offset: 0xFC8 (R/ ) TPIU_DEVID */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) TPIU_DEVTYPE */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_PRESCALER_Pos 0U /*!< TPI ACPR: PRESCALER Position */ +#define TPI_ACPR_PRESCALER_Msk (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/) /*!< TPI ACPR: PRESCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */ +#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ + +/* TPI TRIGGER Register Definitions */ +#define TPI_TRIGGER_TRIGGER_Pos 0U /*!< TPI TRIGGER: TRIGGER Position */ +#define TPI_TRIGGER_TRIGGER_Msk (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/) /*!< TPI TRIGGER: TRIGGER Mask */ + +/* TPI Integration ETM Data Register Definitions (FIFO0) */ +#define TPI_FIFO0_ITM_ATVALID_Pos 29U /*!< TPI FIFO0: ITM_ATVALID Position */ +#define TPI_FIFO0_ITM_ATVALID_Msk (0x1UL << TPI_FIFO0_ITM_ATVALID_Pos) /*!< TPI FIFO0: ITM_ATVALID Mask */ + +#define TPI_FIFO0_ITM_bytecount_Pos 27U /*!< TPI FIFO0: ITM_bytecount Position */ +#define TPI_FIFO0_ITM_bytecount_Msk (0x3UL << TPI_FIFO0_ITM_bytecount_Pos) /*!< TPI FIFO0: ITM_bytecount Mask */ + +#define TPI_FIFO0_ETM_ATVALID_Pos 26U /*!< TPI FIFO0: ETM_ATVALID Position */ +#define TPI_FIFO0_ETM_ATVALID_Msk (0x1UL << TPI_FIFO0_ETM_ATVALID_Pos) /*!< TPI FIFO0: ETM_ATVALID Mask */ + +#define TPI_FIFO0_ETM_bytecount_Pos 24U /*!< TPI FIFO0: ETM_bytecount Position */ +#define TPI_FIFO0_ETM_bytecount_Msk (0x3UL << TPI_FIFO0_ETM_bytecount_Pos) /*!< TPI FIFO0: ETM_bytecount Mask */ + +#define TPI_FIFO0_ETM2_Pos 16U /*!< TPI FIFO0: ETM2 Position */ +#define TPI_FIFO0_ETM2_Msk (0xFFUL << TPI_FIFO0_ETM2_Pos) /*!< TPI FIFO0: ETM2 Mask */ + +#define TPI_FIFO0_ETM1_Pos 8U /*!< TPI FIFO0: ETM1 Position */ +#define TPI_FIFO0_ETM1_Msk (0xFFUL << TPI_FIFO0_ETM1_Pos) /*!< TPI FIFO0: ETM1 Mask */ + +#define TPI_FIFO0_ETM0_Pos 0U /*!< TPI FIFO0: ETM0 Position */ +#define TPI_FIFO0_ETM0_Msk (0xFFUL /*<< TPI_FIFO0_ETM0_Pos*/) /*!< TPI FIFO0: ETM0 Mask */ + +/* TPI ITATBCTR2 Register Definitions */ +#define TPI_ITATBCTR2_ATREADY2_Pos 0U /*!< TPI ITATBCTR2: ATREADY2 Position */ +#define TPI_ITATBCTR2_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY2_Pos*/) /*!< TPI ITATBCTR2: ATREADY2 Mask */ + +#define TPI_ITATBCTR2_ATREADY1_Pos 0U /*!< TPI ITATBCTR2: ATREADY1 Position */ +#define TPI_ITATBCTR2_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY1_Pos*/) /*!< TPI ITATBCTR2: ATREADY1 Mask */ + +/* TPI Integration ITM Data Register Definitions (FIFO1) */ +#define TPI_FIFO1_ITM_ATVALID_Pos 29U /*!< TPI FIFO1: ITM_ATVALID Position */ +#define TPI_FIFO1_ITM_ATVALID_Msk (0x1UL << TPI_FIFO1_ITM_ATVALID_Pos) /*!< TPI FIFO1: ITM_ATVALID Mask */ + +#define TPI_FIFO1_ITM_bytecount_Pos 27U /*!< TPI FIFO1: ITM_bytecount Position */ +#define TPI_FIFO1_ITM_bytecount_Msk (0x3UL << TPI_FIFO1_ITM_bytecount_Pos) /*!< TPI FIFO1: ITM_bytecount Mask */ + +#define TPI_FIFO1_ETM_ATVALID_Pos 26U /*!< TPI FIFO1: ETM_ATVALID Position */ +#define TPI_FIFO1_ETM_ATVALID_Msk (0x1UL << TPI_FIFO1_ETM_ATVALID_Pos) /*!< TPI FIFO1: ETM_ATVALID Mask */ + +#define TPI_FIFO1_ETM_bytecount_Pos 24U /*!< TPI FIFO1: ETM_bytecount Position */ +#define TPI_FIFO1_ETM_bytecount_Msk (0x3UL << TPI_FIFO1_ETM_bytecount_Pos) /*!< TPI FIFO1: ETM_bytecount Mask */ + +#define TPI_FIFO1_ITM2_Pos 16U /*!< TPI FIFO1: ITM2 Position */ +#define TPI_FIFO1_ITM2_Msk (0xFFUL << TPI_FIFO1_ITM2_Pos) /*!< TPI FIFO1: ITM2 Mask */ + +#define TPI_FIFO1_ITM1_Pos 8U /*!< TPI FIFO1: ITM1 Position */ +#define TPI_FIFO1_ITM1_Msk (0xFFUL << TPI_FIFO1_ITM1_Pos) /*!< TPI FIFO1: ITM1 Mask */ + +#define TPI_FIFO1_ITM0_Pos 0U /*!< TPI FIFO1: ITM0 Position */ +#define TPI_FIFO1_ITM0_Msk (0xFFUL /*<< TPI_FIFO1_ITM0_Pos*/) /*!< TPI FIFO1: ITM0 Mask */ + +/* TPI ITATBCTR0 Register Definitions */ +#define TPI_ITATBCTR0_ATREADY2_Pos 0U /*!< TPI ITATBCTR0: ATREADY2 Position */ +#define TPI_ITATBCTR0_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY2_Pos*/) /*!< TPI ITATBCTR0: ATREADY2 Mask */ + +#define TPI_ITATBCTR0_ATREADY1_Pos 0U /*!< TPI ITATBCTR0: ATREADY1 Position */ +#define TPI_ITATBCTR0_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY1_Pos*/) /*!< TPI ITATBCTR0: ATREADY1 Mask */ + +/* TPI Integration Mode Control Register Definitions */ +#define TPI_ITCTRL_Mode_Pos 0U /*!< TPI ITCTRL: Mode Position */ +#define TPI_ITCTRL_Mode_Msk (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/) /*!< TPI ITCTRL: Mode Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_MinBufSz_Pos 6U /*!< TPI DEVID: MinBufSz Position */ +#define TPI_DEVID_MinBufSz_Msk (0x7UL << TPI_DEVID_MinBufSz_Pos) /*!< TPI DEVID: MinBufSz Mask */ + +#define TPI_DEVID_AsynClkIn_Pos 5U /*!< TPI DEVID: AsynClkIn Position */ +#define TPI_DEVID_AsynClkIn_Msk (0x1UL << TPI_DEVID_AsynClkIn_Pos) /*!< TPI DEVID: AsynClkIn Mask */ + +#define TPI_DEVID_NrTraceInput_Pos 0U /*!< TPI DEVID: NrTraceInput Position */ +#define TPI_DEVID_NrTraceInput_Msk (0x1FUL /*<< TPI_DEVID_NrTraceInput_Pos*/) /*!< TPI DEVID: NrTraceInput Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region RNRber Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RASR; /*!< Offset: 0x010 (R/W) MPU Region Attribute and Size Register */ + __IOM uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Alias 1 Region Base Address Register */ + __IOM uint32_t RASR_A1; /*!< Offset: 0x018 (R/W) MPU Alias 1 Region Attribute and Size Register */ + __IOM uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Alias 2 Region Base Address Register */ + __IOM uint32_t RASR_A2; /*!< Offset: 0x020 (R/W) MPU Alias 2 Region Attribute and Size Register */ + __IOM uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Alias 3 Region Base Address Register */ + __IOM uint32_t RASR_A3; /*!< Offset: 0x028 (R/W) MPU Alias 3 Region Attribute and Size Register */ +} MPU_Type; + +#define MPU_TYPE_RALIASES 4U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_ADDR_Pos 5U /*!< MPU RBAR: ADDR Position */ +#define MPU_RBAR_ADDR_Msk (0x7FFFFFFUL << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */ + +#define MPU_RBAR_VALID_Pos 4U /*!< MPU RBAR: VALID Position */ +#define MPU_RBAR_VALID_Msk (1UL << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */ + +#define MPU_RBAR_REGION_Pos 0U /*!< MPU RBAR: REGION Position */ +#define MPU_RBAR_REGION_Msk (0xFUL /*<< MPU_RBAR_REGION_Pos*/) /*!< MPU RBAR: REGION Mask */ + +/* MPU Region Attribute and Size Register Definitions */ +#define MPU_RASR_ATTRS_Pos 16U /*!< MPU RASR: MPU Region Attribute field Position */ +#define MPU_RASR_ATTRS_Msk (0xFFFFUL << MPU_RASR_ATTRS_Pos) /*!< MPU RASR: MPU Region Attribute field Mask */ + +#define MPU_RASR_XN_Pos 28U /*!< MPU RASR: ATTRS.XN Position */ +#define MPU_RASR_XN_Msk (1UL << MPU_RASR_XN_Pos) /*!< MPU RASR: ATTRS.XN Mask */ + +#define MPU_RASR_AP_Pos 24U /*!< MPU RASR: ATTRS.AP Position */ +#define MPU_RASR_AP_Msk (0x7UL << MPU_RASR_AP_Pos) /*!< MPU RASR: ATTRS.AP Mask */ + +#define MPU_RASR_TEX_Pos 19U /*!< MPU RASR: ATTRS.TEX Position */ +#define MPU_RASR_TEX_Msk (0x7UL << MPU_RASR_TEX_Pos) /*!< MPU RASR: ATTRS.TEX Mask */ + +#define MPU_RASR_S_Pos 18U /*!< MPU RASR: ATTRS.S Position */ +#define MPU_RASR_S_Msk (1UL << MPU_RASR_S_Pos) /*!< MPU RASR: ATTRS.S Mask */ + +#define MPU_RASR_C_Pos 17U /*!< MPU RASR: ATTRS.C Position */ +#define MPU_RASR_C_Msk (1UL << MPU_RASR_C_Pos) /*!< MPU RASR: ATTRS.C Mask */ + +#define MPU_RASR_B_Pos 16U /*!< MPU RASR: ATTRS.B Position */ +#define MPU_RASR_B_Msk (1UL << MPU_RASR_B_Pos) /*!< MPU RASR: ATTRS.B Mask */ + +#define MPU_RASR_SRD_Pos 8U /*!< MPU RASR: Sub-Region Disable Position */ +#define MPU_RASR_SRD_Msk (0xFFUL << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */ + +#define MPU_RASR_SIZE_Pos 1U /*!< MPU RASR: Region Size Field Position */ +#define MPU_RASR_SIZE_Msk (0x1FUL << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */ + +#define MPU_RASR_ENABLE_Pos 0U /*!< MPU RASR: Region enable bit Position */ +#define MPU_RASR_ENABLE_Msk (1UL /*<< MPU_RASR_ENABLE_Pos*/) /*!< MPU RASR: Region enable bit Disable Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** + \brief Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register Definitions */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5U /*!< CoreDebug DHCSR: C_SNAPSTALL Position */ +#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register Definitions */ +#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register Definitions */ +#define CoreDebug_DEMCR_TRCENA_Pos 24U /*!< CoreDebug DEMCR: TRCENA Position */ +#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< CoreDebug DEMCR: TRCENA Mask */ + +#define CoreDebug_DEMCR_MON_REQ_Pos 19U /*!< CoreDebug DEMCR: MON_REQ Position */ +#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< CoreDebug DEMCR: MON_REQ Mask */ + +#define CoreDebug_DEMCR_MON_STEP_Pos 18U /*!< CoreDebug DEMCR: MON_STEP Position */ +#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< CoreDebug DEMCR: MON_STEP Mask */ + +#define CoreDebug_DEMCR_MON_PEND_Pos 17U /*!< CoreDebug DEMCR: MON_PEND Position */ +#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< CoreDebug DEMCR: MON_PEND Mask */ + +#define CoreDebug_DEMCR_MON_EN_Pos 16U /*!< CoreDebug DEMCR: MON_EN Position */ +#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< CoreDebug DEMCR: MON_EN Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_INTERR_Pos 9U /*!< CoreDebug DEMCR: VC_INTERR Position */ +#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< CoreDebug DEMCR: VC_INTERR Mask */ + +#define CoreDebug_DEMCR_VC_BUSERR_Pos 8U /*!< CoreDebug DEMCR: VC_BUSERR Position */ +#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< CoreDebug DEMCR: VC_BUSERR Mask */ + +#define CoreDebug_DEMCR_VC_STATERR_Pos 7U /*!< CoreDebug DEMCR: VC_STATERR Position */ +#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< CoreDebug DEMCR: VC_STATERR Mask */ + +#define CoreDebug_DEMCR_VC_CHKERR_Pos 6U /*!< CoreDebug DEMCR: VC_CHKERR Position */ +#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< CoreDebug DEMCR: VC_CHKERR Mask */ + +#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5U /*!< CoreDebug DEMCR: VC_NOCPERR Position */ +#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< CoreDebug DEMCR: VC_NOCPERR Mask */ + +#define CoreDebug_DEMCR_VC_MMERR_Pos 4U /*!< CoreDebug DEMCR: VC_MMERR Position */ +#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< CoreDebug DEMCR: VC_MMERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ +#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ +#define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ +#define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ +#define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ +#define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */ +#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ +#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ +#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + +#define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ +#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ +#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ +#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ +#define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */ +#define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ +#define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ +#define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE) /*!< Core Debug configuration struct */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ +#endif + +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Debug Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ + #define NVIC_GetActive __NVIC_GetActive + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* The following EXC_RETURN values are saved the LR on exception entry */ +#define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after return */ +#define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after return */ +#define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after return */ + + +/** + \brief Set Priority Grouping + \details Sets the priority grouping field using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + SCB->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping + \details Reads the priority grouping field from the NVIC Interrupt Controller. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void) +{ + return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + __COMPILER_BARRIER(); + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __COMPILER_BARRIER(); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IP[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC->IP[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t vectors = (uint32_t )SCB->VTOR; + (* (int *) (vectors + ((int32_t)IRQn + NVIC_USER_IRQ_OFFSET) * 4)) = vector; + /* ARM Application Note 321 states that the M3 does not require the architectural barrier */ +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t vectors = (uint32_t )SCB->VTOR; + return (uint32_t)(* (int *) (vectors + ((int32_t)IRQn + NVIC_USER_IRQ_OFFSET) * 4)); +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + SCB_AIRCR_SYSRESETREQ_Msk ); /* Keep priority group unchanged */ + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +/*@} end of CMSIS_Core_NVICFunctions */ + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv7.h" + +#endif + + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + return 0U; /* No FPU */ +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + +/* ##################################### Debug In/Output function ########################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_core_DebugFunctions ITM Functions + \brief Functions that access the ITM debug interface. + @{ + */ + +extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */ +#define ITM_RXBUFFER_EMPTY ((int32_t)0x5AA55AA5U) /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */ + + +/** + \brief ITM Send Character + \details Transmits a character via the ITM channel 0, and + \li Just returns when no debugger is connected that has booked the output. + \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted. + \param [in] ch Character to transmit. + \returns Character to transmit. + */ +__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch) +{ + if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) && /* ITM enabled */ + ((ITM->TER & 1UL ) != 0UL) ) /* ITM Port #0 enabled */ + { + while (ITM->PORT[0U].u32 == 0UL) + { + __NOP(); + } + ITM->PORT[0U].u8 = (uint8_t)ch; + } + return (ch); +} + + +/** + \brief ITM Receive Character + \details Inputs a character via the external variable \ref ITM_RxBuffer. + \return Received character. + \return -1 No character pending. + */ +__STATIC_INLINE int32_t ITM_ReceiveChar (void) +{ + int32_t ch = -1; /* no character available */ + + if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) + { + ch = ITM_RxBuffer; + ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ + } + + return (ch); +} + + +/** + \brief ITM Check Character + \details Checks whether a character is pending for reading in the variable \ref ITM_RxBuffer. + \return 0 No character available. + \return 1 Character available. + */ +__STATIC_INLINE int32_t ITM_CheckChar (void) +{ + + if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) + { + return (0); /* no character available */ + } + else + { + return (1); /* character available */ + } +} + +/*@} end of CMSIS_core_DebugFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM3_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/firmware/Drivers/CMSIS/Include/core_cm33.h b/firmware/Drivers/CMSIS/Include/core_cm33.h new file mode 100644 index 0000000..7fed59a --- /dev/null +++ b/firmware/Drivers/CMSIS/Include/core_cm33.h @@ -0,0 +1,2910 @@ +/**************************************************************************//** + * @file core_cm33.h + * @brief CMSIS Cortex-M33 Core Peripheral Access Layer Header File + * @version V5.1.0 + * @date 12. November 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_CM33_H_GENERIC +#define __CORE_CM33_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup Cortex_M33 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS CM33 definitions */ +#define __CM33_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM33_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM33_CMSIS_VERSION ((__CM33_CMSIS_VERSION_MAIN << 16U) | \ + __CM33_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (33U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + For this, __FPU_PRESENT has to be checked prior to making use of FPU specific registers and functions. +*/ +#if defined ( __CC_ARM ) + #if defined (__TARGET_FPU_VFP) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U) + #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined (__ARM_FP) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U) + #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U) + #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __ICCARM__ ) + #if defined (__ARMVFP__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U) + #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __TI_ARM__ ) + #if defined (__TI_VFP_SUPPORT__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __TASKING__ ) + #if defined (__FPU_VFP__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM33_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM33_H_DEPENDANT +#define __CORE_CM33_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM33_REV + #define __CM33_REV 0x0000U + #warning "__CM33_REV not defined in device header file; using default!" + #endif + + #ifndef __FPU_PRESENT + #define __FPU_PRESENT 0U + #warning "__FPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __SAUREGION_PRESENT + #define __SAUREGION_PRESENT 0U + #warning "__SAUREGION_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __DSP_PRESENT + #define __DSP_PRESENT 0U + #warning "__DSP_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 3U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group Cortex_M33 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + - Core SAU Register + - Core FPU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:16; /*!< bit: 0..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:7; /*!< bit: 20..26 Reserved */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + +#define APSR_Q_Pos 27U /*!< APSR: Q Position */ +#define APSR_Q_Msk (1UL << APSR_Q_Pos) /*!< APSR: Q Mask */ + +#define APSR_GE_Pos 16U /*!< APSR: GE Position */ +#define APSR_GE_Msk (0xFUL << APSR_GE_Pos) /*!< APSR: GE Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:7; /*!< bit: 9..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:4; /*!< bit: 20..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t IT:2; /*!< bit: 25..26 saved IT state (read 0) */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_Q_Pos 27U /*!< xPSR: Q Position */ +#define xPSR_Q_Msk (1UL << xPSR_Q_Pos) /*!< xPSR: Q Mask */ + +#define xPSR_IT_Pos 25U /*!< xPSR: IT Position */ +#define xPSR_IT_Msk (3UL << xPSR_IT_Pos) /*!< xPSR: IT Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_GE_Pos 16U /*!< xPSR: GE Position */ +#define xPSR_GE_Msk (0xFUL << xPSR_GE_Pos) /*!< xPSR: GE Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack-pointer select */ + uint32_t FPCA:1; /*!< bit: 2 Floating-point context active */ + uint32_t SFPA:1; /*!< bit: 3 Secure floating-point active */ + uint32_t _reserved1:28; /*!< bit: 4..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SFPA_Pos 3U /*!< CONTROL: SFPA Position */ +#define CONTROL_SFPA_Msk (1UL << CONTROL_SFPA_Pos) /*!< CONTROL: SFPA Mask */ + +#define CONTROL_FPCA_Pos 2U /*!< CONTROL: FPCA Position */ +#define CONTROL_FPCA_Msk (1UL << CONTROL_FPCA_Pos) /*!< CONTROL: FPCA Mask */ + +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[16U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[16U]; + __IOM uint32_t ICER[16U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[16U]; + __IOM uint32_t ISPR[16U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[16U]; + __IOM uint32_t ICPR[16U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[16U]; + __IOM uint32_t IABR[16U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[16U]; + __IOM uint32_t ITNS[16U]; /*!< Offset: 0x280 (R/W) Interrupt Non-Secure State Register */ + uint32_t RESERVED5[16U]; + __IOM uint8_t IPR[496U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED6[580U]; + __OM uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */ +} NVIC_Type; + +/* Software Triggered Interrupt Register Definitions */ +#define NVIC_STIR_INTID_Pos 0U /*!< STIR: INTLINESNUM Position */ +#define NVIC_STIR_INTID_Msk (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/) /*!< STIR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + __IOM uint8_t SHPR[12U]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + __IOM uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */ + __IOM uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ + __IOM uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ + __IOM uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */ + __IOM uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ + __IOM uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */ + __IM uint32_t ID_PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + __IM uint32_t ID_DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + __IM uint32_t ID_ADR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __IM uint32_t ID_MMFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __IM uint32_t ID_ISAR[6U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + __IM uint32_t CLIDR; /*!< Offset: 0x078 (R/ ) Cache Level ID register */ + __IM uint32_t CTR; /*!< Offset: 0x07C (R/ ) Cache Type register */ + __IM uint32_t CCSIDR; /*!< Offset: 0x080 (R/ ) Cache Size ID Register */ + __IOM uint32_t CSSELR; /*!< Offset: 0x084 (R/W) Cache Size Selection Register */ + __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ + __IOM uint32_t NSACR; /*!< Offset: 0x08C (R/W) Non-Secure Access Control Register */ + uint32_t RESERVED3[92U]; + __OM uint32_t STIR; /*!< Offset: 0x200 ( /W) Software Triggered Interrupt Register */ + uint32_t RESERVED4[15U]; + __IM uint32_t MVFR0; /*!< Offset: 0x240 (R/ ) Media and VFP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x244 (R/ ) Media and VFP Feature Register 1 */ + __IM uint32_t MVFR2; /*!< Offset: 0x248 (R/ ) Media and VFP Feature Register 2 */ + uint32_t RESERVED5[1U]; + __OM uint32_t ICIALLU; /*!< Offset: 0x250 ( /W) I-Cache Invalidate All to PoU */ + uint32_t RESERVED6[1U]; + __OM uint32_t ICIMVAU; /*!< Offset: 0x258 ( /W) I-Cache Invalidate by MVA to PoU */ + __OM uint32_t DCIMVAC; /*!< Offset: 0x25C ( /W) D-Cache Invalidate by MVA to PoC */ + __OM uint32_t DCISW; /*!< Offset: 0x260 ( /W) D-Cache Invalidate by Set-way */ + __OM uint32_t DCCMVAU; /*!< Offset: 0x264 ( /W) D-Cache Clean by MVA to PoU */ + __OM uint32_t DCCMVAC; /*!< Offset: 0x268 ( /W) D-Cache Clean by MVA to PoC */ + __OM uint32_t DCCSW; /*!< Offset: 0x26C ( /W) D-Cache Clean by Set-way */ + __OM uint32_t DCCIMVAC; /*!< Offset: 0x270 ( /W) D-Cache Clean and Invalidate by MVA to PoC */ + __OM uint32_t DCCISW; /*!< Offset: 0x274 ( /W) D-Cache Clean and Invalidate by Set-way */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_PENDNMISET_Pos 31U /*!< SCB ICSR: PENDNMISET Position */ +#define SCB_ICSR_PENDNMISET_Msk (1UL << SCB_ICSR_PENDNMISET_Pos) /*!< SCB ICSR: PENDNMISET Mask */ + +#define SCB_ICSR_NMIPENDSET_Pos SCB_ICSR_PENDNMISET_Pos /*!< SCB ICSR: NMIPENDSET Position, backward compatibility */ +#define SCB_ICSR_NMIPENDSET_Msk SCB_ICSR_PENDNMISET_Msk /*!< SCB ICSR: NMIPENDSET Mask, backward compatibility */ + +#define SCB_ICSR_PENDNMICLR_Pos 30U /*!< SCB ICSR: PENDNMICLR Position */ +#define SCB_ICSR_PENDNMICLR_Msk (1UL << SCB_ICSR_PENDNMICLR_Pos) /*!< SCB ICSR: PENDNMICLR Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_STTNS_Pos 24U /*!< SCB ICSR: STTNS Position (Security Extension) */ +#define SCB_ICSR_STTNS_Msk (1UL << SCB_ICSR_STTNS_Pos) /*!< SCB ICSR: STTNS Mask (Security Extension) */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Vector Table Offset Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_PRIS_Pos 14U /*!< SCB AIRCR: PRIS Position */ +#define SCB_AIRCR_PRIS_Msk (1UL << SCB_AIRCR_PRIS_Pos) /*!< SCB AIRCR: PRIS Mask */ + +#define SCB_AIRCR_BFHFNMINS_Pos 13U /*!< SCB AIRCR: BFHFNMINS Position */ +#define SCB_AIRCR_BFHFNMINS_Msk (1UL << SCB_AIRCR_BFHFNMINS_Pos) /*!< SCB AIRCR: BFHFNMINS Mask */ + +#define SCB_AIRCR_PRIGROUP_Pos 8U /*!< SCB AIRCR: PRIGROUP Position */ +#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ + +#define SCB_AIRCR_SYSRESETREQS_Pos 3U /*!< SCB AIRCR: SYSRESETREQS Position */ +#define SCB_AIRCR_SYSRESETREQS_Msk (1UL << SCB_AIRCR_SYSRESETREQS_Pos) /*!< SCB AIRCR: SYSRESETREQS Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEPS_Pos 3U /*!< SCB SCR: SLEEPDEEPS Position */ +#define SCB_SCR_SLEEPDEEPS_Msk (1UL << SCB_SCR_SLEEPDEEPS_Pos) /*!< SCB SCR: SLEEPDEEPS Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_BP_Pos 18U /*!< SCB CCR: BP Position */ +#define SCB_CCR_BP_Msk (1UL << SCB_CCR_BP_Pos) /*!< SCB CCR: BP Mask */ + +#define SCB_CCR_IC_Pos 17U /*!< SCB CCR: IC Position */ +#define SCB_CCR_IC_Msk (1UL << SCB_CCR_IC_Pos) /*!< SCB CCR: IC Mask */ + +#define SCB_CCR_DC_Pos 16U /*!< SCB CCR: DC Position */ +#define SCB_CCR_DC_Msk (1UL << SCB_CCR_DC_Pos) /*!< SCB CCR: DC Mask */ + +#define SCB_CCR_STKOFHFNMIGN_Pos 10U /*!< SCB CCR: STKOFHFNMIGN Position */ +#define SCB_CCR_STKOFHFNMIGN_Msk (1UL << SCB_CCR_STKOFHFNMIGN_Pos) /*!< SCB CCR: STKOFHFNMIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_HARDFAULTPENDED_Pos 21U /*!< SCB SHCSR: HARDFAULTPENDED Position */ +#define SCB_SHCSR_HARDFAULTPENDED_Msk (1UL << SCB_SHCSR_HARDFAULTPENDED_Pos) /*!< SCB SHCSR: HARDFAULTPENDED Mask */ + +#define SCB_SHCSR_SECUREFAULTPENDED_Pos 20U /*!< SCB SHCSR: SECUREFAULTPENDED Position */ +#define SCB_SHCSR_SECUREFAULTPENDED_Msk (1UL << SCB_SHCSR_SECUREFAULTPENDED_Pos) /*!< SCB SHCSR: SECUREFAULTPENDED Mask */ + +#define SCB_SHCSR_SECUREFAULTENA_Pos 19U /*!< SCB SHCSR: SECUREFAULTENA Position */ +#define SCB_SHCSR_SECUREFAULTENA_Msk (1UL << SCB_SHCSR_SECUREFAULTENA_Pos) /*!< SCB SHCSR: SECUREFAULTENA Mask */ + +#define SCB_SHCSR_USGFAULTENA_Pos 18U /*!< SCB SHCSR: USGFAULTENA Position */ +#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ + +#define SCB_SHCSR_BUSFAULTENA_Pos 17U /*!< SCB SHCSR: BUSFAULTENA Position */ +#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ + +#define SCB_SHCSR_MEMFAULTENA_Pos 16U /*!< SCB SHCSR: MEMFAULTENA Position */ +#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_BUSFAULTPENDED_Pos 14U /*!< SCB SHCSR: BUSFAULTPENDED Position */ +#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ + +#define SCB_SHCSR_MEMFAULTPENDED_Pos 13U /*!< SCB SHCSR: MEMFAULTPENDED Position */ +#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ + +#define SCB_SHCSR_USGFAULTPENDED_Pos 12U /*!< SCB SHCSR: USGFAULTPENDED Position */ +#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_MONITORACT_Pos 8U /*!< SCB SHCSR: MONITORACT Position */ +#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_NMIACT_Pos 5U /*!< SCB SHCSR: NMIACT Position */ +#define SCB_SHCSR_NMIACT_Msk (1UL << SCB_SHCSR_NMIACT_Pos) /*!< SCB SHCSR: NMIACT Mask */ + +#define SCB_SHCSR_SECUREFAULTACT_Pos 4U /*!< SCB SHCSR: SECUREFAULTACT Position */ +#define SCB_SHCSR_SECUREFAULTACT_Msk (1UL << SCB_SHCSR_SECUREFAULTACT_Pos) /*!< SCB SHCSR: SECUREFAULTACT Mask */ + +#define SCB_SHCSR_USGFAULTACT_Pos 3U /*!< SCB SHCSR: USGFAULTACT Position */ +#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ + +#define SCB_SHCSR_HARDFAULTACT_Pos 2U /*!< SCB SHCSR: HARDFAULTACT Position */ +#define SCB_SHCSR_HARDFAULTACT_Msk (1UL << SCB_SHCSR_HARDFAULTACT_Pos) /*!< SCB SHCSR: HARDFAULTACT Mask */ + +#define SCB_SHCSR_BUSFAULTACT_Pos 1U /*!< SCB SHCSR: BUSFAULTACT Position */ +#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ + +#define SCB_SHCSR_MEMFAULTACT_Pos 0U /*!< SCB SHCSR: MEMFAULTACT Position */ +#define SCB_SHCSR_MEMFAULTACT_Msk (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/) /*!< SCB SHCSR: MEMFAULTACT Mask */ + +/* SCB Configurable Fault Status Register Definitions */ +#define SCB_CFSR_USGFAULTSR_Pos 16U /*!< SCB CFSR: Usage Fault Status Register Position */ +#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ + +#define SCB_CFSR_BUSFAULTSR_Pos 8U /*!< SCB CFSR: Bus Fault Status Register Position */ +#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ + +#define SCB_CFSR_MEMFAULTSR_Pos 0U /*!< SCB CFSR: Memory Manage Fault Status Register Position */ +#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ + +/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_MMARVALID_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 7U) /*!< SCB CFSR (MMFSR): MMARVALID Position */ +#define SCB_CFSR_MMARVALID_Msk (1UL << SCB_CFSR_MMARVALID_Pos) /*!< SCB CFSR (MMFSR): MMARVALID Mask */ + +#define SCB_CFSR_MLSPERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 5U) /*!< SCB CFSR (MMFSR): MLSPERR Position */ +#define SCB_CFSR_MLSPERR_Msk (1UL << SCB_CFSR_MLSPERR_Pos) /*!< SCB CFSR (MMFSR): MLSPERR Mask */ + +#define SCB_CFSR_MSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 4U) /*!< SCB CFSR (MMFSR): MSTKERR Position */ +#define SCB_CFSR_MSTKERR_Msk (1UL << SCB_CFSR_MSTKERR_Pos) /*!< SCB CFSR (MMFSR): MSTKERR Mask */ + +#define SCB_CFSR_MUNSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 3U) /*!< SCB CFSR (MMFSR): MUNSTKERR Position */ +#define SCB_CFSR_MUNSTKERR_Msk (1UL << SCB_CFSR_MUNSTKERR_Pos) /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */ + +#define SCB_CFSR_DACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 1U) /*!< SCB CFSR (MMFSR): DACCVIOL Position */ +#define SCB_CFSR_DACCVIOL_Msk (1UL << SCB_CFSR_DACCVIOL_Pos) /*!< SCB CFSR (MMFSR): DACCVIOL Mask */ + +#define SCB_CFSR_IACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 0U) /*!< SCB CFSR (MMFSR): IACCVIOL Position */ +#define SCB_CFSR_IACCVIOL_Msk (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/) /*!< SCB CFSR (MMFSR): IACCVIOL Mask */ + +/* BusFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_BFARVALID_Pos (SCB_CFSR_BUSFAULTSR_Pos + 7U) /*!< SCB CFSR (BFSR): BFARVALID Position */ +#define SCB_CFSR_BFARVALID_Msk (1UL << SCB_CFSR_BFARVALID_Pos) /*!< SCB CFSR (BFSR): BFARVALID Mask */ + +#define SCB_CFSR_LSPERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 5U) /*!< SCB CFSR (BFSR): LSPERR Position */ +#define SCB_CFSR_LSPERR_Msk (1UL << SCB_CFSR_LSPERR_Pos) /*!< SCB CFSR (BFSR): LSPERR Mask */ + +#define SCB_CFSR_STKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 4U) /*!< SCB CFSR (BFSR): STKERR Position */ +#define SCB_CFSR_STKERR_Msk (1UL << SCB_CFSR_STKERR_Pos) /*!< SCB CFSR (BFSR): STKERR Mask */ + +#define SCB_CFSR_UNSTKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 3U) /*!< SCB CFSR (BFSR): UNSTKERR Position */ +#define SCB_CFSR_UNSTKERR_Msk (1UL << SCB_CFSR_UNSTKERR_Pos) /*!< SCB CFSR (BFSR): UNSTKERR Mask */ + +#define SCB_CFSR_IMPRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 2U) /*!< SCB CFSR (BFSR): IMPRECISERR Position */ +#define SCB_CFSR_IMPRECISERR_Msk (1UL << SCB_CFSR_IMPRECISERR_Pos) /*!< SCB CFSR (BFSR): IMPRECISERR Mask */ + +#define SCB_CFSR_PRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 1U) /*!< SCB CFSR (BFSR): PRECISERR Position */ +#define SCB_CFSR_PRECISERR_Msk (1UL << SCB_CFSR_PRECISERR_Pos) /*!< SCB CFSR (BFSR): PRECISERR Mask */ + +#define SCB_CFSR_IBUSERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 0U) /*!< SCB CFSR (BFSR): IBUSERR Position */ +#define SCB_CFSR_IBUSERR_Msk (1UL << SCB_CFSR_IBUSERR_Pos) /*!< SCB CFSR (BFSR): IBUSERR Mask */ + +/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_DIVBYZERO_Pos (SCB_CFSR_USGFAULTSR_Pos + 9U) /*!< SCB CFSR (UFSR): DIVBYZERO Position */ +#define SCB_CFSR_DIVBYZERO_Msk (1UL << SCB_CFSR_DIVBYZERO_Pos) /*!< SCB CFSR (UFSR): DIVBYZERO Mask */ + +#define SCB_CFSR_UNALIGNED_Pos (SCB_CFSR_USGFAULTSR_Pos + 8U) /*!< SCB CFSR (UFSR): UNALIGNED Position */ +#define SCB_CFSR_UNALIGNED_Msk (1UL << SCB_CFSR_UNALIGNED_Pos) /*!< SCB CFSR (UFSR): UNALIGNED Mask */ + +#define SCB_CFSR_STKOF_Pos (SCB_CFSR_USGFAULTSR_Pos + 4U) /*!< SCB CFSR (UFSR): STKOF Position */ +#define SCB_CFSR_STKOF_Msk (1UL << SCB_CFSR_STKOF_Pos) /*!< SCB CFSR (UFSR): STKOF Mask */ + +#define SCB_CFSR_NOCP_Pos (SCB_CFSR_USGFAULTSR_Pos + 3U) /*!< SCB CFSR (UFSR): NOCP Position */ +#define SCB_CFSR_NOCP_Msk (1UL << SCB_CFSR_NOCP_Pos) /*!< SCB CFSR (UFSR): NOCP Mask */ + +#define SCB_CFSR_INVPC_Pos (SCB_CFSR_USGFAULTSR_Pos + 2U) /*!< SCB CFSR (UFSR): INVPC Position */ +#define SCB_CFSR_INVPC_Msk (1UL << SCB_CFSR_INVPC_Pos) /*!< SCB CFSR (UFSR): INVPC Mask */ + +#define SCB_CFSR_INVSTATE_Pos (SCB_CFSR_USGFAULTSR_Pos + 1U) /*!< SCB CFSR (UFSR): INVSTATE Position */ +#define SCB_CFSR_INVSTATE_Msk (1UL << SCB_CFSR_INVSTATE_Pos) /*!< SCB CFSR (UFSR): INVSTATE Mask */ + +#define SCB_CFSR_UNDEFINSTR_Pos (SCB_CFSR_USGFAULTSR_Pos + 0U) /*!< SCB CFSR (UFSR): UNDEFINSTR Position */ +#define SCB_CFSR_UNDEFINSTR_Msk (1UL << SCB_CFSR_UNDEFINSTR_Pos) /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */ + +/* SCB Hard Fault Status Register Definitions */ +#define SCB_HFSR_DEBUGEVT_Pos 31U /*!< SCB HFSR: DEBUGEVT Position */ +#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ + +#define SCB_HFSR_FORCED_Pos 30U /*!< SCB HFSR: FORCED Position */ +#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ + +#define SCB_HFSR_VECTTBL_Pos 1U /*!< SCB HFSR: VECTTBL Position */ +#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ + +/* SCB Debug Fault Status Register Definitions */ +#define SCB_DFSR_EXTERNAL_Pos 4U /*!< SCB DFSR: EXTERNAL Position */ +#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ + +#define SCB_DFSR_VCATCH_Pos 3U /*!< SCB DFSR: VCATCH Position */ +#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ + +#define SCB_DFSR_DWTTRAP_Pos 2U /*!< SCB DFSR: DWTTRAP Position */ +#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ + +#define SCB_DFSR_BKPT_Pos 1U /*!< SCB DFSR: BKPT Position */ +#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ + +#define SCB_DFSR_HALTED_Pos 0U /*!< SCB DFSR: HALTED Position */ +#define SCB_DFSR_HALTED_Msk (1UL /*<< SCB_DFSR_HALTED_Pos*/) /*!< SCB DFSR: HALTED Mask */ + +/* SCB Non-Secure Access Control Register Definitions */ +#define SCB_NSACR_CP11_Pos 11U /*!< SCB NSACR: CP11 Position */ +#define SCB_NSACR_CP11_Msk (1UL << SCB_NSACR_CP11_Pos) /*!< SCB NSACR: CP11 Mask */ + +#define SCB_NSACR_CP10_Pos 10U /*!< SCB NSACR: CP10 Position */ +#define SCB_NSACR_CP10_Msk (1UL << SCB_NSACR_CP10_Pos) /*!< SCB NSACR: CP10 Mask */ + +#define SCB_NSACR_CPn_Pos 0U /*!< SCB NSACR: CPn Position */ +#define SCB_NSACR_CPn_Msk (1UL /*<< SCB_NSACR_CPn_Pos*/) /*!< SCB NSACR: CPn Mask */ + +/* SCB Cache Level ID Register Definitions */ +#define SCB_CLIDR_LOUU_Pos 27U /*!< SCB CLIDR: LoUU Position */ +#define SCB_CLIDR_LOUU_Msk (7UL << SCB_CLIDR_LOUU_Pos) /*!< SCB CLIDR: LoUU Mask */ + +#define SCB_CLIDR_LOC_Pos 24U /*!< SCB CLIDR: LoC Position */ +#define SCB_CLIDR_LOC_Msk (7UL << SCB_CLIDR_LOC_Pos) /*!< SCB CLIDR: LoC Mask */ + +/* SCB Cache Type Register Definitions */ +#define SCB_CTR_FORMAT_Pos 29U /*!< SCB CTR: Format Position */ +#define SCB_CTR_FORMAT_Msk (7UL << SCB_CTR_FORMAT_Pos) /*!< SCB CTR: Format Mask */ + +#define SCB_CTR_CWG_Pos 24U /*!< SCB CTR: CWG Position */ +#define SCB_CTR_CWG_Msk (0xFUL << SCB_CTR_CWG_Pos) /*!< SCB CTR: CWG Mask */ + +#define SCB_CTR_ERG_Pos 20U /*!< SCB CTR: ERG Position */ +#define SCB_CTR_ERG_Msk (0xFUL << SCB_CTR_ERG_Pos) /*!< SCB CTR: ERG Mask */ + +#define SCB_CTR_DMINLINE_Pos 16U /*!< SCB CTR: DminLine Position */ +#define SCB_CTR_DMINLINE_Msk (0xFUL << SCB_CTR_DMINLINE_Pos) /*!< SCB CTR: DminLine Mask */ + +#define SCB_CTR_IMINLINE_Pos 0U /*!< SCB CTR: ImInLine Position */ +#define SCB_CTR_IMINLINE_Msk (0xFUL /*<< SCB_CTR_IMINLINE_Pos*/) /*!< SCB CTR: ImInLine Mask */ + +/* SCB Cache Size ID Register Definitions */ +#define SCB_CCSIDR_WT_Pos 31U /*!< SCB CCSIDR: WT Position */ +#define SCB_CCSIDR_WT_Msk (1UL << SCB_CCSIDR_WT_Pos) /*!< SCB CCSIDR: WT Mask */ + +#define SCB_CCSIDR_WB_Pos 30U /*!< SCB CCSIDR: WB Position */ +#define SCB_CCSIDR_WB_Msk (1UL << SCB_CCSIDR_WB_Pos) /*!< SCB CCSIDR: WB Mask */ + +#define SCB_CCSIDR_RA_Pos 29U /*!< SCB CCSIDR: RA Position */ +#define SCB_CCSIDR_RA_Msk (1UL << SCB_CCSIDR_RA_Pos) /*!< SCB CCSIDR: RA Mask */ + +#define SCB_CCSIDR_WA_Pos 28U /*!< SCB CCSIDR: WA Position */ +#define SCB_CCSIDR_WA_Msk (1UL << SCB_CCSIDR_WA_Pos) /*!< SCB CCSIDR: WA Mask */ + +#define SCB_CCSIDR_NUMSETS_Pos 13U /*!< SCB CCSIDR: NumSets Position */ +#define SCB_CCSIDR_NUMSETS_Msk (0x7FFFUL << SCB_CCSIDR_NUMSETS_Pos) /*!< SCB CCSIDR: NumSets Mask */ + +#define SCB_CCSIDR_ASSOCIATIVITY_Pos 3U /*!< SCB CCSIDR: Associativity Position */ +#define SCB_CCSIDR_ASSOCIATIVITY_Msk (0x3FFUL << SCB_CCSIDR_ASSOCIATIVITY_Pos) /*!< SCB CCSIDR: Associativity Mask */ + +#define SCB_CCSIDR_LINESIZE_Pos 0U /*!< SCB CCSIDR: LineSize Position */ +#define SCB_CCSIDR_LINESIZE_Msk (7UL /*<< SCB_CCSIDR_LINESIZE_Pos*/) /*!< SCB CCSIDR: LineSize Mask */ + +/* SCB Cache Size Selection Register Definitions */ +#define SCB_CSSELR_LEVEL_Pos 1U /*!< SCB CSSELR: Level Position */ +#define SCB_CSSELR_LEVEL_Msk (7UL << SCB_CSSELR_LEVEL_Pos) /*!< SCB CSSELR: Level Mask */ + +#define SCB_CSSELR_IND_Pos 0U /*!< SCB CSSELR: InD Position */ +#define SCB_CSSELR_IND_Msk (1UL /*<< SCB_CSSELR_IND_Pos*/) /*!< SCB CSSELR: InD Mask */ + +/* SCB Software Triggered Interrupt Register Definitions */ +#define SCB_STIR_INTID_Pos 0U /*!< SCB STIR: INTID Position */ +#define SCB_STIR_INTID_Msk (0x1FFUL /*<< SCB_STIR_INTID_Pos*/) /*!< SCB STIR: INTID Mask */ + +/* SCB D-Cache Invalidate by Set-way Register Definitions */ +#define SCB_DCISW_WAY_Pos 30U /*!< SCB DCISW: Way Position */ +#define SCB_DCISW_WAY_Msk (3UL << SCB_DCISW_WAY_Pos) /*!< SCB DCISW: Way Mask */ + +#define SCB_DCISW_SET_Pos 5U /*!< SCB DCISW: Set Position */ +#define SCB_DCISW_SET_Msk (0x1FFUL << SCB_DCISW_SET_Pos) /*!< SCB DCISW: Set Mask */ + +/* SCB D-Cache Clean by Set-way Register Definitions */ +#define SCB_DCCSW_WAY_Pos 30U /*!< SCB DCCSW: Way Position */ +#define SCB_DCCSW_WAY_Msk (3UL << SCB_DCCSW_WAY_Pos) /*!< SCB DCCSW: Way Mask */ + +#define SCB_DCCSW_SET_Pos 5U /*!< SCB DCCSW: Set Position */ +#define SCB_DCCSW_SET_Msk (0x1FFUL << SCB_DCCSW_SET_Pos) /*!< SCB DCCSW: Set Mask */ + +/* SCB D-Cache Clean and Invalidate by Set-way Register Definitions */ +#define SCB_DCCISW_WAY_Pos 30U /*!< SCB DCCISW: Way Position */ +#define SCB_DCCISW_WAY_Msk (3UL << SCB_DCCISW_WAY_Pos) /*!< SCB DCCISW: Way Mask */ + +#define SCB_DCCISW_SET_Pos 5U /*!< SCB DCCISW: Set Position */ +#define SCB_DCCISW_SET_Msk (0x1FFUL << SCB_DCCISW_SET_Pos) /*!< SCB DCCISW: Set Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** + \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IM uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */ + __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ + __IOM uint32_t CPPWR; /*!< Offset: 0x00C (R/W) Coprocessor Power Control Register */ +} SCnSCB_Type; + +/* Interrupt Controller Type Register Definitions */ +#define SCnSCB_ICTR_INTLINESNUM_Pos 0U /*!< ICTR: INTLINESNUM Position */ +#define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/) /*!< ICTR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_ITM Instrumentation Trace Macrocell (ITM) + \brief Type definitions for the Instrumentation Trace Macrocell (ITM) + @{ + */ + +/** + \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). + */ +typedef struct +{ + __OM union + { + __OM uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ + __OM uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ + __OM uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ + } PORT [32U]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ + uint32_t RESERVED0[864U]; + __IOM uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ + uint32_t RESERVED1[15U]; + __IOM uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ + uint32_t RESERVED2[15U]; + __IOM uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ + uint32_t RESERVED3[32U]; + uint32_t RESERVED4[43U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */ + uint32_t RESERVED5[1U]; + __IM uint32_t DEVARCH; /*!< Offset: 0xFBC (R/ ) ITM Device Architecture Register */ + uint32_t RESERVED6[4U]; + __IM uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Register #4 */ + __IM uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Register #5 */ + __IM uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Register #6 */ + __IM uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Register #7 */ + __IM uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Register #0 */ + __IM uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Register #1 */ + __IM uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Register #2 */ + __IM uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Register #3 */ + __IM uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Register #0 */ + __IM uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Register #1 */ + __IM uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Register #2 */ + __IM uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Register #3 */ +} ITM_Type; + +/* ITM Stimulus Port Register Definitions */ +#define ITM_STIM_DISABLED_Pos 1U /*!< ITM STIM: DISABLED Position */ +#define ITM_STIM_DISABLED_Msk (0x1UL << ITM_STIM_DISABLED_Pos) /*!< ITM STIM: DISABLED Mask */ + +#define ITM_STIM_FIFOREADY_Pos 0U /*!< ITM STIM: FIFOREADY Position */ +#define ITM_STIM_FIFOREADY_Msk (0x1UL /*<< ITM_STIM_FIFOREADY_Pos*/) /*!< ITM STIM: FIFOREADY Mask */ + +/* ITM Trace Privilege Register Definitions */ +#define ITM_TPR_PRIVMASK_Pos 0U /*!< ITM TPR: PRIVMASK Position */ +#define ITM_TPR_PRIVMASK_Msk (0xFFFFFFFFUL /*<< ITM_TPR_PRIVMASK_Pos*/) /*!< ITM TPR: PRIVMASK Mask */ + +/* ITM Trace Control Register Definitions */ +#define ITM_TCR_BUSY_Pos 23U /*!< ITM TCR: BUSY Position */ +#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ + +#define ITM_TCR_TRACEBUSID_Pos 16U /*!< ITM TCR: ATBID Position */ +#define ITM_TCR_TRACEBUSID_Msk (0x7FUL << ITM_TCR_TRACEBUSID_Pos) /*!< ITM TCR: ATBID Mask */ + +#define ITM_TCR_GTSFREQ_Pos 10U /*!< ITM TCR: Global timestamp frequency Position */ +#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */ + +#define ITM_TCR_TSPRESCALE_Pos 8U /*!< ITM TCR: TSPRESCALE Position */ +#define ITM_TCR_TSPRESCALE_Msk (3UL << ITM_TCR_TSPRESCALE_Pos) /*!< ITM TCR: TSPRESCALE Mask */ + +#define ITM_TCR_STALLENA_Pos 5U /*!< ITM TCR: STALLENA Position */ +#define ITM_TCR_STALLENA_Msk (1UL << ITM_TCR_STALLENA_Pos) /*!< ITM TCR: STALLENA Mask */ + +#define ITM_TCR_SWOENA_Pos 4U /*!< ITM TCR: SWOENA Position */ +#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ + +#define ITM_TCR_DWTENA_Pos 3U /*!< ITM TCR: DWTENA Position */ +#define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ + +#define ITM_TCR_SYNCENA_Pos 2U /*!< ITM TCR: SYNCENA Position */ +#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ + +#define ITM_TCR_TSENA_Pos 1U /*!< ITM TCR: TSENA Position */ +#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ + +#define ITM_TCR_ITMENA_Pos 0U /*!< ITM TCR: ITM Enable bit Position */ +#define ITM_TCR_ITMENA_Msk (1UL /*<< ITM_TCR_ITMENA_Pos*/) /*!< ITM TCR: ITM Enable bit Mask */ + +/* ITM Lock Status Register Definitions */ +#define ITM_LSR_ByteAcc_Pos 2U /*!< ITM LSR: ByteAcc Position */ +#define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ + +#define ITM_LSR_Access_Pos 1U /*!< ITM LSR: Access Position */ +#define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ + +#define ITM_LSR_Present_Pos 0U /*!< ITM LSR: Present Position */ +#define ITM_LSR_Present_Msk (1UL /*<< ITM_LSR_Present_Pos*/) /*!< ITM LSR: Present Mask */ + +/*@}*/ /* end of group CMSIS_ITM */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + __IOM uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */ + __IOM uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */ + __IOM uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Register */ + __IOM uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */ + __IOM uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */ + __IOM uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Register */ + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + uint32_t RESERVED3[1U]; + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED4[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + uint32_t RESERVED5[1U]; + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED6[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + uint32_t RESERVED7[1U]; + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ + uint32_t RESERVED8[1U]; + __IOM uint32_t COMP4; /*!< Offset: 0x060 (R/W) Comparator Register 4 */ + uint32_t RESERVED9[1U]; + __IOM uint32_t FUNCTION4; /*!< Offset: 0x068 (R/W) Function Register 4 */ + uint32_t RESERVED10[1U]; + __IOM uint32_t COMP5; /*!< Offset: 0x070 (R/W) Comparator Register 5 */ + uint32_t RESERVED11[1U]; + __IOM uint32_t FUNCTION5; /*!< Offset: 0x078 (R/W) Function Register 5 */ + uint32_t RESERVED12[1U]; + __IOM uint32_t COMP6; /*!< Offset: 0x080 (R/W) Comparator Register 6 */ + uint32_t RESERVED13[1U]; + __IOM uint32_t FUNCTION6; /*!< Offset: 0x088 (R/W) Function Register 6 */ + uint32_t RESERVED14[1U]; + __IOM uint32_t COMP7; /*!< Offset: 0x090 (R/W) Comparator Register 7 */ + uint32_t RESERVED15[1U]; + __IOM uint32_t FUNCTION7; /*!< Offset: 0x098 (R/W) Function Register 7 */ + uint32_t RESERVED16[1U]; + __IOM uint32_t COMP8; /*!< Offset: 0x0A0 (R/W) Comparator Register 8 */ + uint32_t RESERVED17[1U]; + __IOM uint32_t FUNCTION8; /*!< Offset: 0x0A8 (R/W) Function Register 8 */ + uint32_t RESERVED18[1U]; + __IOM uint32_t COMP9; /*!< Offset: 0x0B0 (R/W) Comparator Register 9 */ + uint32_t RESERVED19[1U]; + __IOM uint32_t FUNCTION9; /*!< Offset: 0x0B8 (R/W) Function Register 9 */ + uint32_t RESERVED20[1U]; + __IOM uint32_t COMP10; /*!< Offset: 0x0C0 (R/W) Comparator Register 10 */ + uint32_t RESERVED21[1U]; + __IOM uint32_t FUNCTION10; /*!< Offset: 0x0C8 (R/W) Function Register 10 */ + uint32_t RESERVED22[1U]; + __IOM uint32_t COMP11; /*!< Offset: 0x0D0 (R/W) Comparator Register 11 */ + uint32_t RESERVED23[1U]; + __IOM uint32_t FUNCTION11; /*!< Offset: 0x0D8 (R/W) Function Register 11 */ + uint32_t RESERVED24[1U]; + __IOM uint32_t COMP12; /*!< Offset: 0x0E0 (R/W) Comparator Register 12 */ + uint32_t RESERVED25[1U]; + __IOM uint32_t FUNCTION12; /*!< Offset: 0x0E8 (R/W) Function Register 12 */ + uint32_t RESERVED26[1U]; + __IOM uint32_t COMP13; /*!< Offset: 0x0F0 (R/W) Comparator Register 13 */ + uint32_t RESERVED27[1U]; + __IOM uint32_t FUNCTION13; /*!< Offset: 0x0F8 (R/W) Function Register 13 */ + uint32_t RESERVED28[1U]; + __IOM uint32_t COMP14; /*!< Offset: 0x100 (R/W) Comparator Register 14 */ + uint32_t RESERVED29[1U]; + __IOM uint32_t FUNCTION14; /*!< Offset: 0x108 (R/W) Function Register 14 */ + uint32_t RESERVED30[1U]; + __IOM uint32_t COMP15; /*!< Offset: 0x110 (R/W) Comparator Register 15 */ + uint32_t RESERVED31[1U]; + __IOM uint32_t FUNCTION15; /*!< Offset: 0x118 (R/W) Function Register 15 */ + uint32_t RESERVED32[934U]; + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R ) Lock Status Register */ + uint32_t RESERVED33[1U]; + __IM uint32_t DEVARCH; /*!< Offset: 0xFBC (R/ ) Device Architecture Register */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +#define DWT_CTRL_CYCDISS_Pos 23U /*!< DWT CTRL: CYCDISS Position */ +#define DWT_CTRL_CYCDISS_Msk (0x1UL << DWT_CTRL_CYCDISS_Pos) /*!< DWT CTRL: CYCDISS Mask */ + +#define DWT_CTRL_CYCEVTENA_Pos 22U /*!< DWT CTRL: CYCEVTENA Position */ +#define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTRL: CYCEVTENA Mask */ + +#define DWT_CTRL_FOLDEVTENA_Pos 21U /*!< DWT CTRL: FOLDEVTENA Position */ +#define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTRL: FOLDEVTENA Mask */ + +#define DWT_CTRL_LSUEVTENA_Pos 20U /*!< DWT CTRL: LSUEVTENA Position */ +#define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTRL: LSUEVTENA Mask */ + +#define DWT_CTRL_SLEEPEVTENA_Pos 19U /*!< DWT CTRL: SLEEPEVTENA Position */ +#define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTRL: SLEEPEVTENA Mask */ + +#define DWT_CTRL_EXCEVTENA_Pos 18U /*!< DWT CTRL: EXCEVTENA Position */ +#define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTRL: EXCEVTENA Mask */ + +#define DWT_CTRL_CPIEVTENA_Pos 17U /*!< DWT CTRL: CPIEVTENA Position */ +#define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTRL: CPIEVTENA Mask */ + +#define DWT_CTRL_EXCTRCENA_Pos 16U /*!< DWT CTRL: EXCTRCENA Position */ +#define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTRL: EXCTRCENA Mask */ + +#define DWT_CTRL_PCSAMPLENA_Pos 12U /*!< DWT CTRL: PCSAMPLENA Position */ +#define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTRL: PCSAMPLENA Mask */ + +#define DWT_CTRL_SYNCTAP_Pos 10U /*!< DWT CTRL: SYNCTAP Position */ +#define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTRL: SYNCTAP Mask */ + +#define DWT_CTRL_CYCTAP_Pos 9U /*!< DWT CTRL: CYCTAP Position */ +#define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTRL: CYCTAP Mask */ + +#define DWT_CTRL_POSTINIT_Pos 5U /*!< DWT CTRL: POSTINIT Position */ +#define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTRL: POSTINIT Mask */ + +#define DWT_CTRL_POSTPRESET_Pos 1U /*!< DWT CTRL: POSTPRESET Position */ +#define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTRL: POSTPRESET Mask */ + +#define DWT_CTRL_CYCCNTENA_Pos 0U /*!< DWT CTRL: CYCCNTENA Position */ +#define DWT_CTRL_CYCCNTENA_Msk (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/) /*!< DWT CTRL: CYCCNTENA Mask */ + +/* DWT CPI Count Register Definitions */ +#define DWT_CPICNT_CPICNT_Pos 0U /*!< DWT CPICNT: CPICNT Position */ +#define DWT_CPICNT_CPICNT_Msk (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/) /*!< DWT CPICNT: CPICNT Mask */ + +/* DWT Exception Overhead Count Register Definitions */ +#define DWT_EXCCNT_EXCCNT_Pos 0U /*!< DWT EXCCNT: EXCCNT Position */ +#define DWT_EXCCNT_EXCCNT_Msk (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/) /*!< DWT EXCCNT: EXCCNT Mask */ + +/* DWT Sleep Count Register Definitions */ +#define DWT_SLEEPCNT_SLEEPCNT_Pos 0U /*!< DWT SLEEPCNT: SLEEPCNT Position */ +#define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/) /*!< DWT SLEEPCNT: SLEEPCNT Mask */ + +/* DWT LSU Count Register Definitions */ +#define DWT_LSUCNT_LSUCNT_Pos 0U /*!< DWT LSUCNT: LSUCNT Position */ +#define DWT_LSUCNT_LSUCNT_Msk (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/) /*!< DWT LSUCNT: LSUCNT Mask */ + +/* DWT Folded-instruction Count Register Definitions */ +#define DWT_FOLDCNT_FOLDCNT_Pos 0U /*!< DWT FOLDCNT: FOLDCNT Position */ +#define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/) /*!< DWT FOLDCNT: FOLDCNT Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_ID_Pos 27U /*!< DWT FUNCTION: ID Position */ +#define DWT_FUNCTION_ID_Msk (0x1FUL << DWT_FUNCTION_ID_Pos) /*!< DWT FUNCTION: ID Mask */ + +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_ACTION_Pos 4U /*!< DWT FUNCTION: ACTION Position */ +#define DWT_FUNCTION_ACTION_Msk (0x1UL << DWT_FUNCTION_ACTION_Pos) /*!< DWT FUNCTION: ACTION Mask */ + +#define DWT_FUNCTION_MATCH_Pos 0U /*!< DWT FUNCTION: MATCH Position */ +#define DWT_FUNCTION_MATCH_Msk (0xFUL /*<< DWT_FUNCTION_MATCH_Pos*/) /*!< DWT FUNCTION: MATCH Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Size Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Size Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IOM uint32_t PSCR; /*!< Offset: 0x308 (R/W) Periodic Synchronization Control Register */ + uint32_t RESERVED3[759U]; + __IM uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER Register */ + __IM uint32_t ITFTTD0; /*!< Offset: 0xEEC (R/ ) Integration Test FIFO Test Data 0 Register */ + __IOM uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/W) Integration Test ATB Control Register 2 */ + uint32_t RESERVED4[1U]; + __IM uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) Integration Test ATB Control Register 0 */ + __IM uint32_t ITFTTD1; /*!< Offset: 0xEFC (R/ ) Integration Test FIFO Test Data 1 Register */ + __IOM uint32_t ITCTRL; /*!< Offset: 0xF00 (R/W) Integration Mode Control */ + uint32_t RESERVED5[39U]; + __IOM uint32_t CLAIMSET; /*!< Offset: 0xFA0 (R/W) Claim tag set */ + __IOM uint32_t CLAIMCLR; /*!< Offset: 0xFA4 (R/W) Claim tag clear */ + uint32_t RESERVED7[8U]; + __IM uint32_t DEVID; /*!< Offset: 0xFC8 (R/ ) Device Configuration Register */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) Device Type Identifier Register */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_PRESCALER_Pos 0U /*!< TPI ACPR: PRESCALER Position */ +#define TPI_ACPR_PRESCALER_Msk (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/) /*!< TPI ACPR: PRESCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_FOnMan_Pos 6U /*!< TPI FFCR: FOnMan Position */ +#define TPI_FFCR_FOnMan_Msk (0x1UL << TPI_FFCR_FOnMan_Pos) /*!< TPI FFCR: FOnMan Mask */ + +#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */ +#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ + +/* TPI TRIGGER Register Definitions */ +#define TPI_TRIGGER_TRIGGER_Pos 0U /*!< TPI TRIGGER: TRIGGER Position */ +#define TPI_TRIGGER_TRIGGER_Msk (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/) /*!< TPI TRIGGER: TRIGGER Mask */ + +/* TPI Integration Test FIFO Test Data 0 Register Definitions */ +#define TPI_ITFTTD0_ATB_IF2_ATVALID_Pos 29U /*!< TPI ITFTTD0: ATB Interface 2 ATVALIDPosition */ +#define TPI_ITFTTD0_ATB_IF2_ATVALID_Msk (0x3UL << TPI_ITFTTD0_ATB_IF2_ATVALID_Pos) /*!< TPI ITFTTD0: ATB Interface 2 ATVALID Mask */ + +#define TPI_ITFTTD0_ATB_IF2_bytecount_Pos 27U /*!< TPI ITFTTD0: ATB Interface 2 byte count Position */ +#define TPI_ITFTTD0_ATB_IF2_bytecount_Msk (0x3UL << TPI_ITFTTD0_ATB_IF2_bytecount_Pos) /*!< TPI ITFTTD0: ATB Interface 2 byte count Mask */ + +#define TPI_ITFTTD0_ATB_IF1_ATVALID_Pos 26U /*!< TPI ITFTTD0: ATB Interface 1 ATVALID Position */ +#define TPI_ITFTTD0_ATB_IF1_ATVALID_Msk (0x3UL << TPI_ITFTTD0_ATB_IF1_ATVALID_Pos) /*!< TPI ITFTTD0: ATB Interface 1 ATVALID Mask */ + +#define TPI_ITFTTD0_ATB_IF1_bytecount_Pos 24U /*!< TPI ITFTTD0: ATB Interface 1 byte count Position */ +#define TPI_ITFTTD0_ATB_IF1_bytecount_Msk (0x3UL << TPI_ITFTTD0_ATB_IF1_bytecount_Pos) /*!< TPI ITFTTD0: ATB Interface 1 byte countt Mask */ + +#define TPI_ITFTTD0_ATB_IF1_data2_Pos 16U /*!< TPI ITFTTD0: ATB Interface 1 data2 Position */ +#define TPI_ITFTTD0_ATB_IF1_data2_Msk (0xFFUL << TPI_ITFTTD0_ATB_IF1_data1_Pos) /*!< TPI ITFTTD0: ATB Interface 1 data2 Mask */ + +#define TPI_ITFTTD0_ATB_IF1_data1_Pos 8U /*!< TPI ITFTTD0: ATB Interface 1 data1 Position */ +#define TPI_ITFTTD0_ATB_IF1_data1_Msk (0xFFUL << TPI_ITFTTD0_ATB_IF1_data1_Pos) /*!< TPI ITFTTD0: ATB Interface 1 data1 Mask */ + +#define TPI_ITFTTD0_ATB_IF1_data0_Pos 0U /*!< TPI ITFTTD0: ATB Interface 1 data0 Position */ +#define TPI_ITFTTD0_ATB_IF1_data0_Msk (0xFFUL /*<< TPI_ITFTTD0_ATB_IF1_data0_Pos*/) /*!< TPI ITFTTD0: ATB Interface 1 data0 Mask */ + +/* TPI Integration Test ATB Control Register 2 Register Definitions */ +#define TPI_ITATBCTR2_AFVALID2S_Pos 1U /*!< TPI ITATBCTR2: AFVALID2S Position */ +#define TPI_ITATBCTR2_AFVALID2S_Msk (0x1UL << TPI_ITATBCTR2_AFVALID2S_Pos) /*!< TPI ITATBCTR2: AFVALID2SS Mask */ + +#define TPI_ITATBCTR2_AFVALID1S_Pos 1U /*!< TPI ITATBCTR2: AFVALID1S Position */ +#define TPI_ITATBCTR2_AFVALID1S_Msk (0x1UL << TPI_ITATBCTR2_AFVALID1S_Pos) /*!< TPI ITATBCTR2: AFVALID1SS Mask */ + +#define TPI_ITATBCTR2_ATREADY2S_Pos 0U /*!< TPI ITATBCTR2: ATREADY2S Position */ +#define TPI_ITATBCTR2_ATREADY2S_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY2S_Pos*/) /*!< TPI ITATBCTR2: ATREADY2S Mask */ + +#define TPI_ITATBCTR2_ATREADY1S_Pos 0U /*!< TPI ITATBCTR2: ATREADY1S Position */ +#define TPI_ITATBCTR2_ATREADY1S_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY1S_Pos*/) /*!< TPI ITATBCTR2: ATREADY1S Mask */ + +/* TPI Integration Test FIFO Test Data 1 Register Definitions */ +#define TPI_ITFTTD1_ATB_IF2_ATVALID_Pos 29U /*!< TPI ITFTTD1: ATB Interface 2 ATVALID Position */ +#define TPI_ITFTTD1_ATB_IF2_ATVALID_Msk (0x3UL << TPI_ITFTTD1_ATB_IF2_ATVALID_Pos) /*!< TPI ITFTTD1: ATB Interface 2 ATVALID Mask */ + +#define TPI_ITFTTD1_ATB_IF2_bytecount_Pos 27U /*!< TPI ITFTTD1: ATB Interface 2 byte count Position */ +#define TPI_ITFTTD1_ATB_IF2_bytecount_Msk (0x3UL << TPI_ITFTTD1_ATB_IF2_bytecount_Pos) /*!< TPI ITFTTD1: ATB Interface 2 byte count Mask */ + +#define TPI_ITFTTD1_ATB_IF1_ATVALID_Pos 26U /*!< TPI ITFTTD1: ATB Interface 1 ATVALID Position */ +#define TPI_ITFTTD1_ATB_IF1_ATVALID_Msk (0x3UL << TPI_ITFTTD1_ATB_IF1_ATVALID_Pos) /*!< TPI ITFTTD1: ATB Interface 1 ATVALID Mask */ + +#define TPI_ITFTTD1_ATB_IF1_bytecount_Pos 24U /*!< TPI ITFTTD1: ATB Interface 1 byte count Position */ +#define TPI_ITFTTD1_ATB_IF1_bytecount_Msk (0x3UL << TPI_ITFTTD1_ATB_IF1_bytecount_Pos) /*!< TPI ITFTTD1: ATB Interface 1 byte countt Mask */ + +#define TPI_ITFTTD1_ATB_IF2_data2_Pos 16U /*!< TPI ITFTTD1: ATB Interface 2 data2 Position */ +#define TPI_ITFTTD1_ATB_IF2_data2_Msk (0xFFUL << TPI_ITFTTD1_ATB_IF2_data1_Pos) /*!< TPI ITFTTD1: ATB Interface 2 data2 Mask */ + +#define TPI_ITFTTD1_ATB_IF2_data1_Pos 8U /*!< TPI ITFTTD1: ATB Interface 2 data1 Position */ +#define TPI_ITFTTD1_ATB_IF2_data1_Msk (0xFFUL << TPI_ITFTTD1_ATB_IF2_data1_Pos) /*!< TPI ITFTTD1: ATB Interface 2 data1 Mask */ + +#define TPI_ITFTTD1_ATB_IF2_data0_Pos 0U /*!< TPI ITFTTD1: ATB Interface 2 data0 Position */ +#define TPI_ITFTTD1_ATB_IF2_data0_Msk (0xFFUL /*<< TPI_ITFTTD1_ATB_IF2_data0_Pos*/) /*!< TPI ITFTTD1: ATB Interface 2 data0 Mask */ + +/* TPI Integration Test ATB Control Register 0 Definitions */ +#define TPI_ITATBCTR0_AFVALID2S_Pos 1U /*!< TPI ITATBCTR0: AFVALID2S Position */ +#define TPI_ITATBCTR0_AFVALID2S_Msk (0x1UL << TPI_ITATBCTR0_AFVALID2S_Pos) /*!< TPI ITATBCTR0: AFVALID2SS Mask */ + +#define TPI_ITATBCTR0_AFVALID1S_Pos 1U /*!< TPI ITATBCTR0: AFVALID1S Position */ +#define TPI_ITATBCTR0_AFVALID1S_Msk (0x1UL << TPI_ITATBCTR0_AFVALID1S_Pos) /*!< TPI ITATBCTR0: AFVALID1SS Mask */ + +#define TPI_ITATBCTR0_ATREADY2S_Pos 0U /*!< TPI ITATBCTR0: ATREADY2S Position */ +#define TPI_ITATBCTR0_ATREADY2S_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY2S_Pos*/) /*!< TPI ITATBCTR0: ATREADY2S Mask */ + +#define TPI_ITATBCTR0_ATREADY1S_Pos 0U /*!< TPI ITATBCTR0: ATREADY1S Position */ +#define TPI_ITATBCTR0_ATREADY1S_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY1S_Pos*/) /*!< TPI ITATBCTR0: ATREADY1S Mask */ + +/* TPI Integration Mode Control Register Definitions */ +#define TPI_ITCTRL_Mode_Pos 0U /*!< TPI ITCTRL: Mode Position */ +#define TPI_ITCTRL_Mode_Msk (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/) /*!< TPI ITCTRL: Mode Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_FIFOSZ_Pos 6U /*!< TPI DEVID: FIFOSZ Position */ +#define TPI_DEVID_FIFOSZ_Msk (0x7UL << TPI_DEVID_FIFOSZ_Pos) /*!< TPI DEVID: FIFOSZ Mask */ + +#define TPI_DEVID_NrTraceInput_Pos 0U /*!< TPI DEVID: NrTraceInput Position */ +#define TPI_DEVID_NrTraceInput_Msk (0x3FUL /*<< TPI_DEVID_NrTraceInput_Pos*/) /*!< TPI DEVID: NrTraceInput Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) MPU Region Limit Address Register */ + __IOM uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Region Base Address Register Alias 1 */ + __IOM uint32_t RLAR_A1; /*!< Offset: 0x018 (R/W) MPU Region Limit Address Register Alias 1 */ + __IOM uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Region Base Address Register Alias 2 */ + __IOM uint32_t RLAR_A2; /*!< Offset: 0x020 (R/W) MPU Region Limit Address Register Alias 2 */ + __IOM uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Region Base Address Register Alias 3 */ + __IOM uint32_t RLAR_A3; /*!< Offset: 0x028 (R/W) MPU Region Limit Address Register Alias 3 */ + uint32_t RESERVED0[1]; + union { + __IOM uint32_t MAIR[2]; + struct { + __IOM uint32_t MAIR0; /*!< Offset: 0x030 (R/W) MPU Memory Attribute Indirection Register 0 */ + __IOM uint32_t MAIR1; /*!< Offset: 0x034 (R/W) MPU Memory Attribute Indirection Register 1 */ + }; + }; +} MPU_Type; + +#define MPU_TYPE_RALIASES 4U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_BASE_Pos 5U /*!< MPU RBAR: BASE Position */ +#define MPU_RBAR_BASE_Msk (0x7FFFFFFUL << MPU_RBAR_BASE_Pos) /*!< MPU RBAR: BASE Mask */ + +#define MPU_RBAR_SH_Pos 3U /*!< MPU RBAR: SH Position */ +#define MPU_RBAR_SH_Msk (0x3UL << MPU_RBAR_SH_Pos) /*!< MPU RBAR: SH Mask */ + +#define MPU_RBAR_AP_Pos 1U /*!< MPU RBAR: AP Position */ +#define MPU_RBAR_AP_Msk (0x3UL << MPU_RBAR_AP_Pos) /*!< MPU RBAR: AP Mask */ + +#define MPU_RBAR_XN_Pos 0U /*!< MPU RBAR: XN Position */ +#define MPU_RBAR_XN_Msk (01UL /*<< MPU_RBAR_XN_Pos*/) /*!< MPU RBAR: XN Mask */ + +/* MPU Region Limit Address Register Definitions */ +#define MPU_RLAR_LIMIT_Pos 5U /*!< MPU RLAR: LIMIT Position */ +#define MPU_RLAR_LIMIT_Msk (0x7FFFFFFUL << MPU_RLAR_LIMIT_Pos) /*!< MPU RLAR: LIMIT Mask */ + +#define MPU_RLAR_AttrIndx_Pos 1U /*!< MPU RLAR: AttrIndx Position */ +#define MPU_RLAR_AttrIndx_Msk (0x7UL << MPU_RLAR_AttrIndx_Pos) /*!< MPU RLAR: AttrIndx Mask */ + +#define MPU_RLAR_EN_Pos 0U /*!< MPU RLAR: Region enable bit Position */ +#define MPU_RLAR_EN_Msk (1UL /*<< MPU_RLAR_EN_Pos*/) /*!< MPU RLAR: Region enable bit Disable Mask */ + +/* MPU Memory Attribute Indirection Register 0 Definitions */ +#define MPU_MAIR0_Attr3_Pos 24U /*!< MPU MAIR0: Attr3 Position */ +#define MPU_MAIR0_Attr3_Msk (0xFFUL << MPU_MAIR0_Attr3_Pos) /*!< MPU MAIR0: Attr3 Mask */ + +#define MPU_MAIR0_Attr2_Pos 16U /*!< MPU MAIR0: Attr2 Position */ +#define MPU_MAIR0_Attr2_Msk (0xFFUL << MPU_MAIR0_Attr2_Pos) /*!< MPU MAIR0: Attr2 Mask */ + +#define MPU_MAIR0_Attr1_Pos 8U /*!< MPU MAIR0: Attr1 Position */ +#define MPU_MAIR0_Attr1_Msk (0xFFUL << MPU_MAIR0_Attr1_Pos) /*!< MPU MAIR0: Attr1 Mask */ + +#define MPU_MAIR0_Attr0_Pos 0U /*!< MPU MAIR0: Attr0 Position */ +#define MPU_MAIR0_Attr0_Msk (0xFFUL /*<< MPU_MAIR0_Attr0_Pos*/) /*!< MPU MAIR0: Attr0 Mask */ + +/* MPU Memory Attribute Indirection Register 1 Definitions */ +#define MPU_MAIR1_Attr7_Pos 24U /*!< MPU MAIR1: Attr7 Position */ +#define MPU_MAIR1_Attr7_Msk (0xFFUL << MPU_MAIR1_Attr7_Pos) /*!< MPU MAIR1: Attr7 Mask */ + +#define MPU_MAIR1_Attr6_Pos 16U /*!< MPU MAIR1: Attr6 Position */ +#define MPU_MAIR1_Attr6_Msk (0xFFUL << MPU_MAIR1_Attr6_Pos) /*!< MPU MAIR1: Attr6 Mask */ + +#define MPU_MAIR1_Attr5_Pos 8U /*!< MPU MAIR1: Attr5 Position */ +#define MPU_MAIR1_Attr5_Msk (0xFFUL << MPU_MAIR1_Attr5_Pos) /*!< MPU MAIR1: Attr5 Mask */ + +#define MPU_MAIR1_Attr4_Pos 0U /*!< MPU MAIR1: Attr4 Position */ +#define MPU_MAIR1_Attr4_Msk (0xFFUL /*<< MPU_MAIR1_Attr4_Pos*/) /*!< MPU MAIR1: Attr4 Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SAU Security Attribution Unit (SAU) + \brief Type definitions for the Security Attribution Unit (SAU) + @{ + */ + +/** + \brief Structure type to access the Security Attribution Unit (SAU). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SAU Control Register */ + __IM uint32_t TYPE; /*!< Offset: 0x004 (R/ ) SAU Type Register */ +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) SAU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) SAU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) SAU Region Limit Address Register */ +#else + uint32_t RESERVED0[3]; +#endif + __IOM uint32_t SFSR; /*!< Offset: 0x014 (R/W) Secure Fault Status Register */ + __IOM uint32_t SFAR; /*!< Offset: 0x018 (R/W) Secure Fault Address Register */ +} SAU_Type; + +/* SAU Control Register Definitions */ +#define SAU_CTRL_ALLNS_Pos 1U /*!< SAU CTRL: ALLNS Position */ +#define SAU_CTRL_ALLNS_Msk (1UL << SAU_CTRL_ALLNS_Pos) /*!< SAU CTRL: ALLNS Mask */ + +#define SAU_CTRL_ENABLE_Pos 0U /*!< SAU CTRL: ENABLE Position */ +#define SAU_CTRL_ENABLE_Msk (1UL /*<< SAU_CTRL_ENABLE_Pos*/) /*!< SAU CTRL: ENABLE Mask */ + +/* SAU Type Register Definitions */ +#define SAU_TYPE_SREGION_Pos 0U /*!< SAU TYPE: SREGION Position */ +#define SAU_TYPE_SREGION_Msk (0xFFUL /*<< SAU_TYPE_SREGION_Pos*/) /*!< SAU TYPE: SREGION Mask */ + +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) +/* SAU Region Number Register Definitions */ +#define SAU_RNR_REGION_Pos 0U /*!< SAU RNR: REGION Position */ +#define SAU_RNR_REGION_Msk (0xFFUL /*<< SAU_RNR_REGION_Pos*/) /*!< SAU RNR: REGION Mask */ + +/* SAU Region Base Address Register Definitions */ +#define SAU_RBAR_BADDR_Pos 5U /*!< SAU RBAR: BADDR Position */ +#define SAU_RBAR_BADDR_Msk (0x7FFFFFFUL << SAU_RBAR_BADDR_Pos) /*!< SAU RBAR: BADDR Mask */ + +/* SAU Region Limit Address Register Definitions */ +#define SAU_RLAR_LADDR_Pos 5U /*!< SAU RLAR: LADDR Position */ +#define SAU_RLAR_LADDR_Msk (0x7FFFFFFUL << SAU_RLAR_LADDR_Pos) /*!< SAU RLAR: LADDR Mask */ + +#define SAU_RLAR_NSC_Pos 1U /*!< SAU RLAR: NSC Position */ +#define SAU_RLAR_NSC_Msk (1UL << SAU_RLAR_NSC_Pos) /*!< SAU RLAR: NSC Mask */ + +#define SAU_RLAR_ENABLE_Pos 0U /*!< SAU RLAR: ENABLE Position */ +#define SAU_RLAR_ENABLE_Msk (1UL /*<< SAU_RLAR_ENABLE_Pos*/) /*!< SAU RLAR: ENABLE Mask */ + +#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */ + +/* Secure Fault Status Register Definitions */ +#define SAU_SFSR_LSERR_Pos 7U /*!< SAU SFSR: LSERR Position */ +#define SAU_SFSR_LSERR_Msk (1UL << SAU_SFSR_LSERR_Pos) /*!< SAU SFSR: LSERR Mask */ + +#define SAU_SFSR_SFARVALID_Pos 6U /*!< SAU SFSR: SFARVALID Position */ +#define SAU_SFSR_SFARVALID_Msk (1UL << SAU_SFSR_SFARVALID_Pos) /*!< SAU SFSR: SFARVALID Mask */ + +#define SAU_SFSR_LSPERR_Pos 5U /*!< SAU SFSR: LSPERR Position */ +#define SAU_SFSR_LSPERR_Msk (1UL << SAU_SFSR_LSPERR_Pos) /*!< SAU SFSR: LSPERR Mask */ + +#define SAU_SFSR_INVTRAN_Pos 4U /*!< SAU SFSR: INVTRAN Position */ +#define SAU_SFSR_INVTRAN_Msk (1UL << SAU_SFSR_INVTRAN_Pos) /*!< SAU SFSR: INVTRAN Mask */ + +#define SAU_SFSR_AUVIOL_Pos 3U /*!< SAU SFSR: AUVIOL Position */ +#define SAU_SFSR_AUVIOL_Msk (1UL << SAU_SFSR_AUVIOL_Pos) /*!< SAU SFSR: AUVIOL Mask */ + +#define SAU_SFSR_INVER_Pos 2U /*!< SAU SFSR: INVER Position */ +#define SAU_SFSR_INVER_Msk (1UL << SAU_SFSR_INVER_Pos) /*!< SAU SFSR: INVER Mask */ + +#define SAU_SFSR_INVIS_Pos 1U /*!< SAU SFSR: INVIS Position */ +#define SAU_SFSR_INVIS_Msk (1UL << SAU_SFSR_INVIS_Pos) /*!< SAU SFSR: INVIS Mask */ + +#define SAU_SFSR_INVEP_Pos 0U /*!< SAU SFSR: INVEP Position */ +#define SAU_SFSR_INVEP_Msk (1UL /*<< SAU_SFSR_INVEP_Pos*/) /*!< SAU SFSR: INVEP Mask */ + +/*@} end of group CMSIS_SAU */ +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_FPU Floating Point Unit (FPU) + \brief Type definitions for the Floating Point Unit (FPU) + @{ + */ + +/** + \brief Structure type to access the Floating Point Unit (FPU). + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IOM uint32_t FPCCR; /*!< Offset: 0x004 (R/W) Floating-Point Context Control Register */ + __IOM uint32_t FPCAR; /*!< Offset: 0x008 (R/W) Floating-Point Context Address Register */ + __IOM uint32_t FPDSCR; /*!< Offset: 0x00C (R/W) Floating-Point Default Status Control Register */ + __IM uint32_t MVFR0; /*!< Offset: 0x010 (R/ ) Media and FP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x014 (R/ ) Media and FP Feature Register 1 */ +} FPU_Type; + +/* Floating-Point Context Control Register Definitions */ +#define FPU_FPCCR_ASPEN_Pos 31U /*!< FPCCR: ASPEN bit Position */ +#define FPU_FPCCR_ASPEN_Msk (1UL << FPU_FPCCR_ASPEN_Pos) /*!< FPCCR: ASPEN bit Mask */ + +#define FPU_FPCCR_LSPEN_Pos 30U /*!< FPCCR: LSPEN Position */ +#define FPU_FPCCR_LSPEN_Msk (1UL << FPU_FPCCR_LSPEN_Pos) /*!< FPCCR: LSPEN bit Mask */ + +#define FPU_FPCCR_LSPENS_Pos 29U /*!< FPCCR: LSPENS Position */ +#define FPU_FPCCR_LSPENS_Msk (1UL << FPU_FPCCR_LSPENS_Pos) /*!< FPCCR: LSPENS bit Mask */ + +#define FPU_FPCCR_CLRONRET_Pos 28U /*!< FPCCR: CLRONRET Position */ +#define FPU_FPCCR_CLRONRET_Msk (1UL << FPU_FPCCR_CLRONRET_Pos) /*!< FPCCR: CLRONRET bit Mask */ + +#define FPU_FPCCR_CLRONRETS_Pos 27U /*!< FPCCR: CLRONRETS Position */ +#define FPU_FPCCR_CLRONRETS_Msk (1UL << FPU_FPCCR_CLRONRETS_Pos) /*!< FPCCR: CLRONRETS bit Mask */ + +#define FPU_FPCCR_TS_Pos 26U /*!< FPCCR: TS Position */ +#define FPU_FPCCR_TS_Msk (1UL << FPU_FPCCR_TS_Pos) /*!< FPCCR: TS bit Mask */ + +#define FPU_FPCCR_UFRDY_Pos 10U /*!< FPCCR: UFRDY Position */ +#define FPU_FPCCR_UFRDY_Msk (1UL << FPU_FPCCR_UFRDY_Pos) /*!< FPCCR: UFRDY bit Mask */ + +#define FPU_FPCCR_SPLIMVIOL_Pos 9U /*!< FPCCR: SPLIMVIOL Position */ +#define FPU_FPCCR_SPLIMVIOL_Msk (1UL << FPU_FPCCR_SPLIMVIOL_Pos) /*!< FPCCR: SPLIMVIOL bit Mask */ + +#define FPU_FPCCR_MONRDY_Pos 8U /*!< FPCCR: MONRDY Position */ +#define FPU_FPCCR_MONRDY_Msk (1UL << FPU_FPCCR_MONRDY_Pos) /*!< FPCCR: MONRDY bit Mask */ + +#define FPU_FPCCR_SFRDY_Pos 7U /*!< FPCCR: SFRDY Position */ +#define FPU_FPCCR_SFRDY_Msk (1UL << FPU_FPCCR_SFRDY_Pos) /*!< FPCCR: SFRDY bit Mask */ + +#define FPU_FPCCR_BFRDY_Pos 6U /*!< FPCCR: BFRDY Position */ +#define FPU_FPCCR_BFRDY_Msk (1UL << FPU_FPCCR_BFRDY_Pos) /*!< FPCCR: BFRDY bit Mask */ + +#define FPU_FPCCR_MMRDY_Pos 5U /*!< FPCCR: MMRDY Position */ +#define FPU_FPCCR_MMRDY_Msk (1UL << FPU_FPCCR_MMRDY_Pos) /*!< FPCCR: MMRDY bit Mask */ + +#define FPU_FPCCR_HFRDY_Pos 4U /*!< FPCCR: HFRDY Position */ +#define FPU_FPCCR_HFRDY_Msk (1UL << FPU_FPCCR_HFRDY_Pos) /*!< FPCCR: HFRDY bit Mask */ + +#define FPU_FPCCR_THREAD_Pos 3U /*!< FPCCR: processor mode bit Position */ +#define FPU_FPCCR_THREAD_Msk (1UL << FPU_FPCCR_THREAD_Pos) /*!< FPCCR: processor mode active bit Mask */ + +#define FPU_FPCCR_S_Pos 2U /*!< FPCCR: Security status of the FP context bit Position */ +#define FPU_FPCCR_S_Msk (1UL << FPU_FPCCR_S_Pos) /*!< FPCCR: Security status of the FP context bit Mask */ + +#define FPU_FPCCR_USER_Pos 1U /*!< FPCCR: privilege level bit Position */ +#define FPU_FPCCR_USER_Msk (1UL << FPU_FPCCR_USER_Pos) /*!< FPCCR: privilege level bit Mask */ + +#define FPU_FPCCR_LSPACT_Pos 0U /*!< FPCCR: Lazy state preservation active bit Position */ +#define FPU_FPCCR_LSPACT_Msk (1UL /*<< FPU_FPCCR_LSPACT_Pos*/) /*!< FPCCR: Lazy state preservation active bit Mask */ + +/* Floating-Point Context Address Register Definitions */ +#define FPU_FPCAR_ADDRESS_Pos 3U /*!< FPCAR: ADDRESS bit Position */ +#define FPU_FPCAR_ADDRESS_Msk (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos) /*!< FPCAR: ADDRESS bit Mask */ + +/* Floating-Point Default Status Control Register Definitions */ +#define FPU_FPDSCR_AHP_Pos 26U /*!< FPDSCR: AHP bit Position */ +#define FPU_FPDSCR_AHP_Msk (1UL << FPU_FPDSCR_AHP_Pos) /*!< FPDSCR: AHP bit Mask */ + +#define FPU_FPDSCR_DN_Pos 25U /*!< FPDSCR: DN bit Position */ +#define FPU_FPDSCR_DN_Msk (1UL << FPU_FPDSCR_DN_Pos) /*!< FPDSCR: DN bit Mask */ + +#define FPU_FPDSCR_FZ_Pos 24U /*!< FPDSCR: FZ bit Position */ +#define FPU_FPDSCR_FZ_Msk (1UL << FPU_FPDSCR_FZ_Pos) /*!< FPDSCR: FZ bit Mask */ + +#define FPU_FPDSCR_RMode_Pos 22U /*!< FPDSCR: RMode bit Position */ +#define FPU_FPDSCR_RMode_Msk (3UL << FPU_FPDSCR_RMode_Pos) /*!< FPDSCR: RMode bit Mask */ + +/* Media and FP Feature Register 0 Definitions */ +#define FPU_MVFR0_FP_rounding_modes_Pos 28U /*!< MVFR0: FP rounding modes bits Position */ +#define FPU_MVFR0_FP_rounding_modes_Msk (0xFUL << FPU_MVFR0_FP_rounding_modes_Pos) /*!< MVFR0: FP rounding modes bits Mask */ + +#define FPU_MVFR0_Short_vectors_Pos 24U /*!< MVFR0: Short vectors bits Position */ +#define FPU_MVFR0_Short_vectors_Msk (0xFUL << FPU_MVFR0_Short_vectors_Pos) /*!< MVFR0: Short vectors bits Mask */ + +#define FPU_MVFR0_Square_root_Pos 20U /*!< MVFR0: Square root bits Position */ +#define FPU_MVFR0_Square_root_Msk (0xFUL << FPU_MVFR0_Square_root_Pos) /*!< MVFR0: Square root bits Mask */ + +#define FPU_MVFR0_Divide_Pos 16U /*!< MVFR0: Divide bits Position */ +#define FPU_MVFR0_Divide_Msk (0xFUL << FPU_MVFR0_Divide_Pos) /*!< MVFR0: Divide bits Mask */ + +#define FPU_MVFR0_FP_excep_trapping_Pos 12U /*!< MVFR0: FP exception trapping bits Position */ +#define FPU_MVFR0_FP_excep_trapping_Msk (0xFUL << FPU_MVFR0_FP_excep_trapping_Pos) /*!< MVFR0: FP exception trapping bits Mask */ + +#define FPU_MVFR0_Double_precision_Pos 8U /*!< MVFR0: Double-precision bits Position */ +#define FPU_MVFR0_Double_precision_Msk (0xFUL << FPU_MVFR0_Double_precision_Pos) /*!< MVFR0: Double-precision bits Mask */ + +#define FPU_MVFR0_Single_precision_Pos 4U /*!< MVFR0: Single-precision bits Position */ +#define FPU_MVFR0_Single_precision_Msk (0xFUL << FPU_MVFR0_Single_precision_Pos) /*!< MVFR0: Single-precision bits Mask */ + +#define FPU_MVFR0_A_SIMD_registers_Pos 0U /*!< MVFR0: A_SIMD registers bits Position */ +#define FPU_MVFR0_A_SIMD_registers_Msk (0xFUL /*<< FPU_MVFR0_A_SIMD_registers_Pos*/) /*!< MVFR0: A_SIMD registers bits Mask */ + +/* Media and FP Feature Register 1 Definitions */ +#define FPU_MVFR1_FP_fused_MAC_Pos 28U /*!< MVFR1: FP fused MAC bits Position */ +#define FPU_MVFR1_FP_fused_MAC_Msk (0xFUL << FPU_MVFR1_FP_fused_MAC_Pos) /*!< MVFR1: FP fused MAC bits Mask */ + +#define FPU_MVFR1_FP_HPFP_Pos 24U /*!< MVFR1: FP HPFP bits Position */ +#define FPU_MVFR1_FP_HPFP_Msk (0xFUL << FPU_MVFR1_FP_HPFP_Pos) /*!< MVFR1: FP HPFP bits Mask */ + +#define FPU_MVFR1_D_NaN_mode_Pos 4U /*!< MVFR1: D_NaN mode bits Position */ +#define FPU_MVFR1_D_NaN_mode_Msk (0xFUL << FPU_MVFR1_D_NaN_mode_Pos) /*!< MVFR1: D_NaN mode bits Mask */ + +#define FPU_MVFR1_FtZ_mode_Pos 0U /*!< MVFR1: FtZ mode bits Position */ +#define FPU_MVFR1_FtZ_mode_Msk (0xFUL /*<< FPU_MVFR1_FtZ_mode_Pos*/) /*!< MVFR1: FtZ mode bits Mask */ + +/*@} end of group CMSIS_FPU */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** + \brief Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ + uint32_t RESERVED4[1U]; + __IOM uint32_t DAUTHCTRL; /*!< Offset: 0x014 (R/W) Debug Authentication Control Register */ + __IOM uint32_t DSCSR; /*!< Offset: 0x018 (R/W) Debug Security Control and Status Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register Definitions */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESTART_ST_Pos 26U /*!< CoreDebug DHCSR: S_RESTART_ST Position */ +#define CoreDebug_DHCSR_S_RESTART_ST_Msk (1UL << CoreDebug_DHCSR_S_RESTART_ST_Pos) /*!< CoreDebug DHCSR: S_RESTART_ST Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5U /*!< CoreDebug DHCSR: C_SNAPSTALL Position */ +#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register Definitions */ +#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register Definitions */ +#define CoreDebug_DEMCR_TRCENA_Pos 24U /*!< CoreDebug DEMCR: TRCENA Position */ +#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< CoreDebug DEMCR: TRCENA Mask */ + +#define CoreDebug_DEMCR_MON_REQ_Pos 19U /*!< CoreDebug DEMCR: MON_REQ Position */ +#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< CoreDebug DEMCR: MON_REQ Mask */ + +#define CoreDebug_DEMCR_MON_STEP_Pos 18U /*!< CoreDebug DEMCR: MON_STEP Position */ +#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< CoreDebug DEMCR: MON_STEP Mask */ + +#define CoreDebug_DEMCR_MON_PEND_Pos 17U /*!< CoreDebug DEMCR: MON_PEND Position */ +#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< CoreDebug DEMCR: MON_PEND Mask */ + +#define CoreDebug_DEMCR_MON_EN_Pos 16U /*!< CoreDebug DEMCR: MON_EN Position */ +#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< CoreDebug DEMCR: MON_EN Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_INTERR_Pos 9U /*!< CoreDebug DEMCR: VC_INTERR Position */ +#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< CoreDebug DEMCR: VC_INTERR Mask */ + +#define CoreDebug_DEMCR_VC_BUSERR_Pos 8U /*!< CoreDebug DEMCR: VC_BUSERR Position */ +#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< CoreDebug DEMCR: VC_BUSERR Mask */ + +#define CoreDebug_DEMCR_VC_STATERR_Pos 7U /*!< CoreDebug DEMCR: VC_STATERR Position */ +#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< CoreDebug DEMCR: VC_STATERR Mask */ + +#define CoreDebug_DEMCR_VC_CHKERR_Pos 6U /*!< CoreDebug DEMCR: VC_CHKERR Position */ +#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< CoreDebug DEMCR: VC_CHKERR Mask */ + +#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5U /*!< CoreDebug DEMCR: VC_NOCPERR Position */ +#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< CoreDebug DEMCR: VC_NOCPERR Mask */ + +#define CoreDebug_DEMCR_VC_MMERR_Pos 4U /*!< CoreDebug DEMCR: VC_MMERR Position */ +#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< CoreDebug DEMCR: VC_MMERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ + +/* Debug Authentication Control Register Definitions */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos 3U /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Position */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos) /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Mask */ + +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos 2U /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Msk (1UL << CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos) /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Mask */ + +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Pos 1U /*!< CoreDebug DAUTHCTRL: INTSPIDEN Position */ +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPIDEN_Pos) /*!< CoreDebug DAUTHCTRL: INTSPIDEN Mask */ + +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Pos 0U /*!< CoreDebug DAUTHCTRL: SPIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Msk (1UL /*<< CoreDebug_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< CoreDebug DAUTHCTRL: SPIDENSEL Mask */ + +/* Debug Security Control and Status Register Definitions */ +#define CoreDebug_DSCSR_CDS_Pos 16U /*!< CoreDebug DSCSR: CDS Position */ +#define CoreDebug_DSCSR_CDS_Msk (1UL << CoreDebug_DSCSR_CDS_Pos) /*!< CoreDebug DSCSR: CDS Mask */ + +#define CoreDebug_DSCSR_SBRSEL_Pos 1U /*!< CoreDebug DSCSR: SBRSEL Position */ +#define CoreDebug_DSCSR_SBRSEL_Msk (1UL << CoreDebug_DSCSR_SBRSEL_Pos) /*!< CoreDebug DSCSR: SBRSEL Mask */ + +#define CoreDebug_DSCSR_SBRSELEN_Pos 0U /*!< CoreDebug DSCSR: SBRSELEN Position */ +#define CoreDebug_DSCSR_SBRSELEN_Msk (1UL /*<< CoreDebug_DSCSR_SBRSELEN_Pos*/) /*!< CoreDebug DSCSR: SBRSELEN Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ + #define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ + #define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ + #define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ + #define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ + #define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */ + #define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ + #define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ + #define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + + #define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ + #define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ + #define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ + #define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ + #define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */ + #define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ + #define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ + #define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE ) /*!< Core Debug configuration struct */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ + #endif + + #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SAU_BASE (SCS_BASE + 0x0DD0UL) /*!< Security Attribution Unit */ + #define SAU ((SAU_Type *) SAU_BASE ) /*!< Security Attribution Unit */ + #endif + + #define FPU_BASE (SCS_BASE + 0x0F30UL) /*!< Floating Point Unit */ + #define FPU ((FPU_Type *) FPU_BASE ) /*!< Floating Point Unit */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SCS_BASE_NS (0xE002E000UL) /*!< System Control Space Base Address (non-secure address space) */ + #define CoreDebug_BASE_NS (0xE002EDF0UL) /*!< Core Debug Base Address (non-secure address space) */ + #define SysTick_BASE_NS (SCS_BASE_NS + 0x0010UL) /*!< SysTick Base Address (non-secure address space) */ + #define NVIC_BASE_NS (SCS_BASE_NS + 0x0100UL) /*!< NVIC Base Address (non-secure address space) */ + #define SCB_BASE_NS (SCS_BASE_NS + 0x0D00UL) /*!< System Control Block Base Address (non-secure address space) */ + + #define SCnSCB_NS ((SCnSCB_Type *) SCS_BASE_NS ) /*!< System control Register not in SCB(non-secure address space) */ + #define SCB_NS ((SCB_Type *) SCB_BASE_NS ) /*!< SCB configuration struct (non-secure address space) */ + #define SysTick_NS ((SysTick_Type *) SysTick_BASE_NS ) /*!< SysTick configuration struct (non-secure address space) */ + #define NVIC_NS ((NVIC_Type *) NVIC_BASE_NS ) /*!< NVIC configuration struct (non-secure address space) */ + #define CoreDebug_NS ((CoreDebug_Type *) CoreDebug_BASE_NS) /*!< Core Debug configuration struct (non-secure address space) */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE_NS (SCS_BASE_NS + 0x0D90UL) /*!< Memory Protection Unit (non-secure address space) */ + #define MPU_NS ((MPU_Type *) MPU_BASE_NS ) /*!< Memory Protection Unit (non-secure address space) */ + #endif + + #define FPU_BASE_NS (SCS_BASE_NS + 0x0F30UL) /*!< Floating Point Unit (non-secure address space) */ + #define FPU_NS ((FPU_Type *) FPU_BASE_NS ) /*!< Floating Point Unit (non-secure address space) */ + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Debug Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ + #define NVIC_GetActive __NVIC_GetActive + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* Special LR values for Secure/Non-Secure call handling and exception handling */ + +/* Function Return Payload (from ARMv8-M Architecture Reference Manual) LR value on entry from Secure BLXNS */ +#define FNC_RETURN (0xFEFFFFFFUL) /* bit [0] ignored when processing a branch */ + +/* The following EXC_RETURN mask values are used to evaluate the LR on exception entry */ +#define EXC_RETURN_PREFIX (0xFF000000UL) /* bits [31:24] set to indicate an EXC_RETURN value */ +#define EXC_RETURN_S (0x00000040UL) /* bit [6] stack used to push registers: 0=Non-secure 1=Secure */ +#define EXC_RETURN_DCRS (0x00000020UL) /* bit [5] stacking rules for called registers: 0=skipped 1=saved */ +#define EXC_RETURN_FTYPE (0x00000010UL) /* bit [4] allocate stack for floating-point context: 0=done 1=skipped */ +#define EXC_RETURN_MODE (0x00000008UL) /* bit [3] processor mode for return: 0=Handler mode 1=Thread mode */ +#define EXC_RETURN_SPSEL (0x00000004UL) /* bit [2] stack pointer used to restore context: 0=MSP 1=PSP */ +#define EXC_RETURN_ES (0x00000001UL) /* bit [0] security state exception was taken to: 0=Non-secure 1=Secure */ + +/* Integrity Signature (from ARMv8-M Architecture Reference Manual) for exception context stacking */ +#if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) /* Value for processors with floating-point extension: */ +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125AUL) /* bit [0] SFTC must match LR bit[4] EXC_RETURN_FTYPE */ +#else +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125BUL) /* Value for processors without floating-point extension */ +#endif + + +/** + \brief Set Priority Grouping + \details Sets the priority grouping field using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + SCB->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping + \details Reads the priority grouping field from the NVIC Interrupt Controller. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void) +{ + return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + __COMPILER_BARRIER(); + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __COMPILER_BARRIER(); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Get Interrupt Target State + \details Reads the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + \return 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_GetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Target State + \details Sets the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_SetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] |= ((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Clear Interrupt Target State + \details Clears the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_ClearTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] &= ~((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IPR[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC->IPR[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; + __DSB(); +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + SCB_AIRCR_SYSRESETREQ_Msk ); /* Keep priority group unchanged */ + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Set Priority Grouping (non-secure) + \details Sets the non-secure priority grouping field when in secure state using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void TZ_NVIC_SetPriorityGrouping_NS(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB_NS->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + SCB_NS->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping (non-secure) + \details Reads the priority grouping field from the non-secure NVIC when in secure state. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPriorityGrouping_NS(void) +{ + return ((uint32_t)((SCB_NS->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt (non-secure) + \details Enables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_EnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status (non-secure) + \details Returns a device specific interrupt enable status from the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetEnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt (non-secure) + \details Disables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_DisableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Pending Interrupt (non-secure) + \details Reads the NVIC pending register in the non-secure NVIC when in secure state and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt (non-secure) + \details Sets the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_SetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt (non-secure) + \details Clears the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_ClearPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt (non-secure) + \details Reads the active register in non-secure NVIC when in secure state and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetActive_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority (non-secure) + \details Sets the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every non-secure processor exception. + */ +__STATIC_INLINE void TZ_NVIC_SetPriority_NS(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->IPR[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority (non-secure) + \details Reads the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPriority_NS(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC_NS->IPR[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) &&(__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_NVICFunctions */ + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv8.h" + +#endif + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + uint32_t mvfr0; + + mvfr0 = FPU->MVFR0; + if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x220U) + { + return 2U; /* Double + Single precision FPU */ + } + else if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x020U) + { + return 1U; /* Single precision FPU */ + } + else + { + return 0U; /* No FPU */ + } +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ########################## SAU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SAUFunctions SAU Functions + \brief Functions that configure the SAU. + @{ + */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + +/** + \brief Enable SAU + \details Enables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Enable(void) +{ + SAU->CTRL |= (SAU_CTRL_ENABLE_Msk); +} + + + +/** + \brief Disable SAU + \details Disables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Disable(void) +{ + SAU->CTRL &= ~(SAU_CTRL_ENABLE_Msk); +} + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_SAUFunctions */ + + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief System Tick Configuration (non-secure) + \details Initializes the non-secure System Timer and its interrupt when in secure state, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function TZ_SysTick_Config_NS is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + + */ +__STATIC_INLINE uint32_t TZ_SysTick_Config_NS(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick_NS->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + TZ_NVIC_SetPriority_NS (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick_NS->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick_NS->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + +/* ##################################### Debug In/Output function ########################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_core_DebugFunctions ITM Functions + \brief Functions that access the ITM debug interface. + @{ + */ + +extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */ +#define ITM_RXBUFFER_EMPTY ((int32_t)0x5AA55AA5U) /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */ + + +/** + \brief ITM Send Character + \details Transmits a character via the ITM channel 0, and + \li Just returns when no debugger is connected that has booked the output. + \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted. + \param [in] ch Character to transmit. + \returns Character to transmit. + */ +__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch) +{ + if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) && /* ITM enabled */ + ((ITM->TER & 1UL ) != 0UL) ) /* ITM Port #0 enabled */ + { + while (ITM->PORT[0U].u32 == 0UL) + { + __NOP(); + } + ITM->PORT[0U].u8 = (uint8_t)ch; + } + return (ch); +} + + +/** + \brief ITM Receive Character + \details Inputs a character via the external variable \ref ITM_RxBuffer. + \return Received character. + \return -1 No character pending. + */ +__STATIC_INLINE int32_t ITM_ReceiveChar (void) +{ + int32_t ch = -1; /* no character available */ + + if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) + { + ch = ITM_RxBuffer; + ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ + } + + return (ch); +} + + +/** + \brief ITM Check Character + \details Checks whether a character is pending for reading in the variable \ref ITM_RxBuffer. + \return 0 No character available. + \return 1 Character available. + */ +__STATIC_INLINE int32_t ITM_CheckChar (void) +{ + + if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) + { + return (0); /* no character available */ + } + else + { + return (1); /* character available */ + } +} + +/*@} end of CMSIS_core_DebugFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM33_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/firmware/Drivers/CMSIS/Include/core_cm35p.h b/firmware/Drivers/CMSIS/Include/core_cm35p.h new file mode 100644 index 0000000..5579c82 --- /dev/null +++ b/firmware/Drivers/CMSIS/Include/core_cm35p.h @@ -0,0 +1,2910 @@ +/**************************************************************************//** + * @file core_cm35p.h + * @brief CMSIS Cortex-M35P Core Peripheral Access Layer Header File + * @version V1.0.0 + * @date 12. November 2018 + ******************************************************************************/ +/* + * Copyright (c) 2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_CM35P_H_GENERIC +#define __CORE_CM35P_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup Cortex_M35P + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS CM35P definitions */ +#define __CM35P_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM35P_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM35P_CMSIS_VERSION ((__CM35P_CMSIS_VERSION_MAIN << 16U) | \ + __CM35P_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (35U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + For this, __FPU_PRESENT has to be checked prior to making use of FPU specific registers and functions. +*/ +#if defined ( __CC_ARM ) + #if defined (__TARGET_FPU_VFP) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U) + #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined (__ARM_FP) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U) + #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U) + #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __ICCARM__ ) + #if defined (__ARMVFP__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U) + #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __TI_ARM__ ) + #if defined (__TI_VFP_SUPPORT__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __TASKING__ ) + #if defined (__FPU_VFP__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM35P_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM35P_H_DEPENDANT +#define __CORE_CM35P_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM35P_REV + #define __CM35P_REV 0x0000U + #warning "__CM35P_REV not defined in device header file; using default!" + #endif + + #ifndef __FPU_PRESENT + #define __FPU_PRESENT 0U + #warning "__FPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __SAUREGION_PRESENT + #define __SAUREGION_PRESENT 0U + #warning "__SAUREGION_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __DSP_PRESENT + #define __DSP_PRESENT 0U + #warning "__DSP_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 3U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group Cortex_M35P */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + - Core SAU Register + - Core FPU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:16; /*!< bit: 0..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:7; /*!< bit: 20..26 Reserved */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + +#define APSR_Q_Pos 27U /*!< APSR: Q Position */ +#define APSR_Q_Msk (1UL << APSR_Q_Pos) /*!< APSR: Q Mask */ + +#define APSR_GE_Pos 16U /*!< APSR: GE Position */ +#define APSR_GE_Msk (0xFUL << APSR_GE_Pos) /*!< APSR: GE Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:7; /*!< bit: 9..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:4; /*!< bit: 20..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t IT:2; /*!< bit: 25..26 saved IT state (read 0) */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_Q_Pos 27U /*!< xPSR: Q Position */ +#define xPSR_Q_Msk (1UL << xPSR_Q_Pos) /*!< xPSR: Q Mask */ + +#define xPSR_IT_Pos 25U /*!< xPSR: IT Position */ +#define xPSR_IT_Msk (3UL << xPSR_IT_Pos) /*!< xPSR: IT Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_GE_Pos 16U /*!< xPSR: GE Position */ +#define xPSR_GE_Msk (0xFUL << xPSR_GE_Pos) /*!< xPSR: GE Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack-pointer select */ + uint32_t FPCA:1; /*!< bit: 2 Floating-point context active */ + uint32_t SFPA:1; /*!< bit: 3 Secure floating-point active */ + uint32_t _reserved1:28; /*!< bit: 4..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SFPA_Pos 3U /*!< CONTROL: SFPA Position */ +#define CONTROL_SFPA_Msk (1UL << CONTROL_SFPA_Pos) /*!< CONTROL: SFPA Mask */ + +#define CONTROL_FPCA_Pos 2U /*!< CONTROL: FPCA Position */ +#define CONTROL_FPCA_Msk (1UL << CONTROL_FPCA_Pos) /*!< CONTROL: FPCA Mask */ + +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[16U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[16U]; + __IOM uint32_t ICER[16U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[16U]; + __IOM uint32_t ISPR[16U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[16U]; + __IOM uint32_t ICPR[16U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[16U]; + __IOM uint32_t IABR[16U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[16U]; + __IOM uint32_t ITNS[16U]; /*!< Offset: 0x280 (R/W) Interrupt Non-Secure State Register */ + uint32_t RESERVED5[16U]; + __IOM uint8_t IPR[496U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED6[580U]; + __OM uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */ +} NVIC_Type; + +/* Software Triggered Interrupt Register Definitions */ +#define NVIC_STIR_INTID_Pos 0U /*!< STIR: INTLINESNUM Position */ +#define NVIC_STIR_INTID_Msk (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/) /*!< STIR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + __IOM uint8_t SHPR[12U]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + __IOM uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */ + __IOM uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ + __IOM uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ + __IOM uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */ + __IOM uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ + __IOM uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */ + __IM uint32_t ID_PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + __IM uint32_t ID_DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + __IM uint32_t ID_ADR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __IM uint32_t ID_MMFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __IM uint32_t ID_ISAR[6U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + __IM uint32_t CLIDR; /*!< Offset: 0x078 (R/ ) Cache Level ID register */ + __IM uint32_t CTR; /*!< Offset: 0x07C (R/ ) Cache Type register */ + __IM uint32_t CCSIDR; /*!< Offset: 0x080 (R/ ) Cache Size ID Register */ + __IOM uint32_t CSSELR; /*!< Offset: 0x084 (R/W) Cache Size Selection Register */ + __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ + __IOM uint32_t NSACR; /*!< Offset: 0x08C (R/W) Non-Secure Access Control Register */ + uint32_t RESERVED3[92U]; + __OM uint32_t STIR; /*!< Offset: 0x200 ( /W) Software Triggered Interrupt Register */ + uint32_t RESERVED4[15U]; + __IM uint32_t MVFR0; /*!< Offset: 0x240 (R/ ) Media and VFP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x244 (R/ ) Media and VFP Feature Register 1 */ + __IM uint32_t MVFR2; /*!< Offset: 0x248 (R/ ) Media and VFP Feature Register 2 */ + uint32_t RESERVED5[1U]; + __OM uint32_t ICIALLU; /*!< Offset: 0x250 ( /W) I-Cache Invalidate All to PoU */ + uint32_t RESERVED6[1U]; + __OM uint32_t ICIMVAU; /*!< Offset: 0x258 ( /W) I-Cache Invalidate by MVA to PoU */ + __OM uint32_t DCIMVAC; /*!< Offset: 0x25C ( /W) D-Cache Invalidate by MVA to PoC */ + __OM uint32_t DCISW; /*!< Offset: 0x260 ( /W) D-Cache Invalidate by Set-way */ + __OM uint32_t DCCMVAU; /*!< Offset: 0x264 ( /W) D-Cache Clean by MVA to PoU */ + __OM uint32_t DCCMVAC; /*!< Offset: 0x268 ( /W) D-Cache Clean by MVA to PoC */ + __OM uint32_t DCCSW; /*!< Offset: 0x26C ( /W) D-Cache Clean by Set-way */ + __OM uint32_t DCCIMVAC; /*!< Offset: 0x270 ( /W) D-Cache Clean and Invalidate by MVA to PoC */ + __OM uint32_t DCCISW; /*!< Offset: 0x274 ( /W) D-Cache Clean and Invalidate by Set-way */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_PENDNMISET_Pos 31U /*!< SCB ICSR: PENDNMISET Position */ +#define SCB_ICSR_PENDNMISET_Msk (1UL << SCB_ICSR_PENDNMISET_Pos) /*!< SCB ICSR: PENDNMISET Mask */ + +#define SCB_ICSR_NMIPENDSET_Pos SCB_ICSR_PENDNMISET_Pos /*!< SCB ICSR: NMIPENDSET Position, backward compatibility */ +#define SCB_ICSR_NMIPENDSET_Msk SCB_ICSR_PENDNMISET_Msk /*!< SCB ICSR: NMIPENDSET Mask, backward compatibility */ + +#define SCB_ICSR_PENDNMICLR_Pos 30U /*!< SCB ICSR: PENDNMICLR Position */ +#define SCB_ICSR_PENDNMICLR_Msk (1UL << SCB_ICSR_PENDNMICLR_Pos) /*!< SCB ICSR: PENDNMICLR Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_STTNS_Pos 24U /*!< SCB ICSR: STTNS Position (Security Extension) */ +#define SCB_ICSR_STTNS_Msk (1UL << SCB_ICSR_STTNS_Pos) /*!< SCB ICSR: STTNS Mask (Security Extension) */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Vector Table Offset Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_PRIS_Pos 14U /*!< SCB AIRCR: PRIS Position */ +#define SCB_AIRCR_PRIS_Msk (1UL << SCB_AIRCR_PRIS_Pos) /*!< SCB AIRCR: PRIS Mask */ + +#define SCB_AIRCR_BFHFNMINS_Pos 13U /*!< SCB AIRCR: BFHFNMINS Position */ +#define SCB_AIRCR_BFHFNMINS_Msk (1UL << SCB_AIRCR_BFHFNMINS_Pos) /*!< SCB AIRCR: BFHFNMINS Mask */ + +#define SCB_AIRCR_PRIGROUP_Pos 8U /*!< SCB AIRCR: PRIGROUP Position */ +#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ + +#define SCB_AIRCR_SYSRESETREQS_Pos 3U /*!< SCB AIRCR: SYSRESETREQS Position */ +#define SCB_AIRCR_SYSRESETREQS_Msk (1UL << SCB_AIRCR_SYSRESETREQS_Pos) /*!< SCB AIRCR: SYSRESETREQS Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEPS_Pos 3U /*!< SCB SCR: SLEEPDEEPS Position */ +#define SCB_SCR_SLEEPDEEPS_Msk (1UL << SCB_SCR_SLEEPDEEPS_Pos) /*!< SCB SCR: SLEEPDEEPS Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_BP_Pos 18U /*!< SCB CCR: BP Position */ +#define SCB_CCR_BP_Msk (1UL << SCB_CCR_BP_Pos) /*!< SCB CCR: BP Mask */ + +#define SCB_CCR_IC_Pos 17U /*!< SCB CCR: IC Position */ +#define SCB_CCR_IC_Msk (1UL << SCB_CCR_IC_Pos) /*!< SCB CCR: IC Mask */ + +#define SCB_CCR_DC_Pos 16U /*!< SCB CCR: DC Position */ +#define SCB_CCR_DC_Msk (1UL << SCB_CCR_DC_Pos) /*!< SCB CCR: DC Mask */ + +#define SCB_CCR_STKOFHFNMIGN_Pos 10U /*!< SCB CCR: STKOFHFNMIGN Position */ +#define SCB_CCR_STKOFHFNMIGN_Msk (1UL << SCB_CCR_STKOFHFNMIGN_Pos) /*!< SCB CCR: STKOFHFNMIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_HARDFAULTPENDED_Pos 21U /*!< SCB SHCSR: HARDFAULTPENDED Position */ +#define SCB_SHCSR_HARDFAULTPENDED_Msk (1UL << SCB_SHCSR_HARDFAULTPENDED_Pos) /*!< SCB SHCSR: HARDFAULTPENDED Mask */ + +#define SCB_SHCSR_SECUREFAULTPENDED_Pos 20U /*!< SCB SHCSR: SECUREFAULTPENDED Position */ +#define SCB_SHCSR_SECUREFAULTPENDED_Msk (1UL << SCB_SHCSR_SECUREFAULTPENDED_Pos) /*!< SCB SHCSR: SECUREFAULTPENDED Mask */ + +#define SCB_SHCSR_SECUREFAULTENA_Pos 19U /*!< SCB SHCSR: SECUREFAULTENA Position */ +#define SCB_SHCSR_SECUREFAULTENA_Msk (1UL << SCB_SHCSR_SECUREFAULTENA_Pos) /*!< SCB SHCSR: SECUREFAULTENA Mask */ + +#define SCB_SHCSR_USGFAULTENA_Pos 18U /*!< SCB SHCSR: USGFAULTENA Position */ +#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ + +#define SCB_SHCSR_BUSFAULTENA_Pos 17U /*!< SCB SHCSR: BUSFAULTENA Position */ +#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ + +#define SCB_SHCSR_MEMFAULTENA_Pos 16U /*!< SCB SHCSR: MEMFAULTENA Position */ +#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_BUSFAULTPENDED_Pos 14U /*!< SCB SHCSR: BUSFAULTPENDED Position */ +#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ + +#define SCB_SHCSR_MEMFAULTPENDED_Pos 13U /*!< SCB SHCSR: MEMFAULTPENDED Position */ +#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ + +#define SCB_SHCSR_USGFAULTPENDED_Pos 12U /*!< SCB SHCSR: USGFAULTPENDED Position */ +#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_MONITORACT_Pos 8U /*!< SCB SHCSR: MONITORACT Position */ +#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_NMIACT_Pos 5U /*!< SCB SHCSR: NMIACT Position */ +#define SCB_SHCSR_NMIACT_Msk (1UL << SCB_SHCSR_NMIACT_Pos) /*!< SCB SHCSR: NMIACT Mask */ + +#define SCB_SHCSR_SECUREFAULTACT_Pos 4U /*!< SCB SHCSR: SECUREFAULTACT Position */ +#define SCB_SHCSR_SECUREFAULTACT_Msk (1UL << SCB_SHCSR_SECUREFAULTACT_Pos) /*!< SCB SHCSR: SECUREFAULTACT Mask */ + +#define SCB_SHCSR_USGFAULTACT_Pos 3U /*!< SCB SHCSR: USGFAULTACT Position */ +#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ + +#define SCB_SHCSR_HARDFAULTACT_Pos 2U /*!< SCB SHCSR: HARDFAULTACT Position */ +#define SCB_SHCSR_HARDFAULTACT_Msk (1UL << SCB_SHCSR_HARDFAULTACT_Pos) /*!< SCB SHCSR: HARDFAULTACT Mask */ + +#define SCB_SHCSR_BUSFAULTACT_Pos 1U /*!< SCB SHCSR: BUSFAULTACT Position */ +#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ + +#define SCB_SHCSR_MEMFAULTACT_Pos 0U /*!< SCB SHCSR: MEMFAULTACT Position */ +#define SCB_SHCSR_MEMFAULTACT_Msk (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/) /*!< SCB SHCSR: MEMFAULTACT Mask */ + +/* SCB Configurable Fault Status Register Definitions */ +#define SCB_CFSR_USGFAULTSR_Pos 16U /*!< SCB CFSR: Usage Fault Status Register Position */ +#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ + +#define SCB_CFSR_BUSFAULTSR_Pos 8U /*!< SCB CFSR: Bus Fault Status Register Position */ +#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ + +#define SCB_CFSR_MEMFAULTSR_Pos 0U /*!< SCB CFSR: Memory Manage Fault Status Register Position */ +#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ + +/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_MMARVALID_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 7U) /*!< SCB CFSR (MMFSR): MMARVALID Position */ +#define SCB_CFSR_MMARVALID_Msk (1UL << SCB_CFSR_MMARVALID_Pos) /*!< SCB CFSR (MMFSR): MMARVALID Mask */ + +#define SCB_CFSR_MLSPERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 5U) /*!< SCB CFSR (MMFSR): MLSPERR Position */ +#define SCB_CFSR_MLSPERR_Msk (1UL << SCB_CFSR_MLSPERR_Pos) /*!< SCB CFSR (MMFSR): MLSPERR Mask */ + +#define SCB_CFSR_MSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 4U) /*!< SCB CFSR (MMFSR): MSTKERR Position */ +#define SCB_CFSR_MSTKERR_Msk (1UL << SCB_CFSR_MSTKERR_Pos) /*!< SCB CFSR (MMFSR): MSTKERR Mask */ + +#define SCB_CFSR_MUNSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 3U) /*!< SCB CFSR (MMFSR): MUNSTKERR Position */ +#define SCB_CFSR_MUNSTKERR_Msk (1UL << SCB_CFSR_MUNSTKERR_Pos) /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */ + +#define SCB_CFSR_DACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 1U) /*!< SCB CFSR (MMFSR): DACCVIOL Position */ +#define SCB_CFSR_DACCVIOL_Msk (1UL << SCB_CFSR_DACCVIOL_Pos) /*!< SCB CFSR (MMFSR): DACCVIOL Mask */ + +#define SCB_CFSR_IACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 0U) /*!< SCB CFSR (MMFSR): IACCVIOL Position */ +#define SCB_CFSR_IACCVIOL_Msk (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/) /*!< SCB CFSR (MMFSR): IACCVIOL Mask */ + +/* BusFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_BFARVALID_Pos (SCB_CFSR_BUSFAULTSR_Pos + 7U) /*!< SCB CFSR (BFSR): BFARVALID Position */ +#define SCB_CFSR_BFARVALID_Msk (1UL << SCB_CFSR_BFARVALID_Pos) /*!< SCB CFSR (BFSR): BFARVALID Mask */ + +#define SCB_CFSR_LSPERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 5U) /*!< SCB CFSR (BFSR): LSPERR Position */ +#define SCB_CFSR_LSPERR_Msk (1UL << SCB_CFSR_LSPERR_Pos) /*!< SCB CFSR (BFSR): LSPERR Mask */ + +#define SCB_CFSR_STKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 4U) /*!< SCB CFSR (BFSR): STKERR Position */ +#define SCB_CFSR_STKERR_Msk (1UL << SCB_CFSR_STKERR_Pos) /*!< SCB CFSR (BFSR): STKERR Mask */ + +#define SCB_CFSR_UNSTKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 3U) /*!< SCB CFSR (BFSR): UNSTKERR Position */ +#define SCB_CFSR_UNSTKERR_Msk (1UL << SCB_CFSR_UNSTKERR_Pos) /*!< SCB CFSR (BFSR): UNSTKERR Mask */ + +#define SCB_CFSR_IMPRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 2U) /*!< SCB CFSR (BFSR): IMPRECISERR Position */ +#define SCB_CFSR_IMPRECISERR_Msk (1UL << SCB_CFSR_IMPRECISERR_Pos) /*!< SCB CFSR (BFSR): IMPRECISERR Mask */ + +#define SCB_CFSR_PRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 1U) /*!< SCB CFSR (BFSR): PRECISERR Position */ +#define SCB_CFSR_PRECISERR_Msk (1UL << SCB_CFSR_PRECISERR_Pos) /*!< SCB CFSR (BFSR): PRECISERR Mask */ + +#define SCB_CFSR_IBUSERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 0U) /*!< SCB CFSR (BFSR): IBUSERR Position */ +#define SCB_CFSR_IBUSERR_Msk (1UL << SCB_CFSR_IBUSERR_Pos) /*!< SCB CFSR (BFSR): IBUSERR Mask */ + +/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_DIVBYZERO_Pos (SCB_CFSR_USGFAULTSR_Pos + 9U) /*!< SCB CFSR (UFSR): DIVBYZERO Position */ +#define SCB_CFSR_DIVBYZERO_Msk (1UL << SCB_CFSR_DIVBYZERO_Pos) /*!< SCB CFSR (UFSR): DIVBYZERO Mask */ + +#define SCB_CFSR_UNALIGNED_Pos (SCB_CFSR_USGFAULTSR_Pos + 8U) /*!< SCB CFSR (UFSR): UNALIGNED Position */ +#define SCB_CFSR_UNALIGNED_Msk (1UL << SCB_CFSR_UNALIGNED_Pos) /*!< SCB CFSR (UFSR): UNALIGNED Mask */ + +#define SCB_CFSR_STKOF_Pos (SCB_CFSR_USGFAULTSR_Pos + 4U) /*!< SCB CFSR (UFSR): STKOF Position */ +#define SCB_CFSR_STKOF_Msk (1UL << SCB_CFSR_STKOF_Pos) /*!< SCB CFSR (UFSR): STKOF Mask */ + +#define SCB_CFSR_NOCP_Pos (SCB_CFSR_USGFAULTSR_Pos + 3U) /*!< SCB CFSR (UFSR): NOCP Position */ +#define SCB_CFSR_NOCP_Msk (1UL << SCB_CFSR_NOCP_Pos) /*!< SCB CFSR (UFSR): NOCP Mask */ + +#define SCB_CFSR_INVPC_Pos (SCB_CFSR_USGFAULTSR_Pos + 2U) /*!< SCB CFSR (UFSR): INVPC Position */ +#define SCB_CFSR_INVPC_Msk (1UL << SCB_CFSR_INVPC_Pos) /*!< SCB CFSR (UFSR): INVPC Mask */ + +#define SCB_CFSR_INVSTATE_Pos (SCB_CFSR_USGFAULTSR_Pos + 1U) /*!< SCB CFSR (UFSR): INVSTATE Position */ +#define SCB_CFSR_INVSTATE_Msk (1UL << SCB_CFSR_INVSTATE_Pos) /*!< SCB CFSR (UFSR): INVSTATE Mask */ + +#define SCB_CFSR_UNDEFINSTR_Pos (SCB_CFSR_USGFAULTSR_Pos + 0U) /*!< SCB CFSR (UFSR): UNDEFINSTR Position */ +#define SCB_CFSR_UNDEFINSTR_Msk (1UL << SCB_CFSR_UNDEFINSTR_Pos) /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */ + +/* SCB Hard Fault Status Register Definitions */ +#define SCB_HFSR_DEBUGEVT_Pos 31U /*!< SCB HFSR: DEBUGEVT Position */ +#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ + +#define SCB_HFSR_FORCED_Pos 30U /*!< SCB HFSR: FORCED Position */ +#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ + +#define SCB_HFSR_VECTTBL_Pos 1U /*!< SCB HFSR: VECTTBL Position */ +#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ + +/* SCB Debug Fault Status Register Definitions */ +#define SCB_DFSR_EXTERNAL_Pos 4U /*!< SCB DFSR: EXTERNAL Position */ +#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ + +#define SCB_DFSR_VCATCH_Pos 3U /*!< SCB DFSR: VCATCH Position */ +#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ + +#define SCB_DFSR_DWTTRAP_Pos 2U /*!< SCB DFSR: DWTTRAP Position */ +#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ + +#define SCB_DFSR_BKPT_Pos 1U /*!< SCB DFSR: BKPT Position */ +#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ + +#define SCB_DFSR_HALTED_Pos 0U /*!< SCB DFSR: HALTED Position */ +#define SCB_DFSR_HALTED_Msk (1UL /*<< SCB_DFSR_HALTED_Pos*/) /*!< SCB DFSR: HALTED Mask */ + +/* SCB Non-Secure Access Control Register Definitions */ +#define SCB_NSACR_CP11_Pos 11U /*!< SCB NSACR: CP11 Position */ +#define SCB_NSACR_CP11_Msk (1UL << SCB_NSACR_CP11_Pos) /*!< SCB NSACR: CP11 Mask */ + +#define SCB_NSACR_CP10_Pos 10U /*!< SCB NSACR: CP10 Position */ +#define SCB_NSACR_CP10_Msk (1UL << SCB_NSACR_CP10_Pos) /*!< SCB NSACR: CP10 Mask */ + +#define SCB_NSACR_CPn_Pos 0U /*!< SCB NSACR: CPn Position */ +#define SCB_NSACR_CPn_Msk (1UL /*<< SCB_NSACR_CPn_Pos*/) /*!< SCB NSACR: CPn Mask */ + +/* SCB Cache Level ID Register Definitions */ +#define SCB_CLIDR_LOUU_Pos 27U /*!< SCB CLIDR: LoUU Position */ +#define SCB_CLIDR_LOUU_Msk (7UL << SCB_CLIDR_LOUU_Pos) /*!< SCB CLIDR: LoUU Mask */ + +#define SCB_CLIDR_LOC_Pos 24U /*!< SCB CLIDR: LoC Position */ +#define SCB_CLIDR_LOC_Msk (7UL << SCB_CLIDR_LOC_Pos) /*!< SCB CLIDR: LoC Mask */ + +/* SCB Cache Type Register Definitions */ +#define SCB_CTR_FORMAT_Pos 29U /*!< SCB CTR: Format Position */ +#define SCB_CTR_FORMAT_Msk (7UL << SCB_CTR_FORMAT_Pos) /*!< SCB CTR: Format Mask */ + +#define SCB_CTR_CWG_Pos 24U /*!< SCB CTR: CWG Position */ +#define SCB_CTR_CWG_Msk (0xFUL << SCB_CTR_CWG_Pos) /*!< SCB CTR: CWG Mask */ + +#define SCB_CTR_ERG_Pos 20U /*!< SCB CTR: ERG Position */ +#define SCB_CTR_ERG_Msk (0xFUL << SCB_CTR_ERG_Pos) /*!< SCB CTR: ERG Mask */ + +#define SCB_CTR_DMINLINE_Pos 16U /*!< SCB CTR: DminLine Position */ +#define SCB_CTR_DMINLINE_Msk (0xFUL << SCB_CTR_DMINLINE_Pos) /*!< SCB CTR: DminLine Mask */ + +#define SCB_CTR_IMINLINE_Pos 0U /*!< SCB CTR: ImInLine Position */ +#define SCB_CTR_IMINLINE_Msk (0xFUL /*<< SCB_CTR_IMINLINE_Pos*/) /*!< SCB CTR: ImInLine Mask */ + +/* SCB Cache Size ID Register Definitions */ +#define SCB_CCSIDR_WT_Pos 31U /*!< SCB CCSIDR: WT Position */ +#define SCB_CCSIDR_WT_Msk (1UL << SCB_CCSIDR_WT_Pos) /*!< SCB CCSIDR: WT Mask */ + +#define SCB_CCSIDR_WB_Pos 30U /*!< SCB CCSIDR: WB Position */ +#define SCB_CCSIDR_WB_Msk (1UL << SCB_CCSIDR_WB_Pos) /*!< SCB CCSIDR: WB Mask */ + +#define SCB_CCSIDR_RA_Pos 29U /*!< SCB CCSIDR: RA Position */ +#define SCB_CCSIDR_RA_Msk (1UL << SCB_CCSIDR_RA_Pos) /*!< SCB CCSIDR: RA Mask */ + +#define SCB_CCSIDR_WA_Pos 28U /*!< SCB CCSIDR: WA Position */ +#define SCB_CCSIDR_WA_Msk (1UL << SCB_CCSIDR_WA_Pos) /*!< SCB CCSIDR: WA Mask */ + +#define SCB_CCSIDR_NUMSETS_Pos 13U /*!< SCB CCSIDR: NumSets Position */ +#define SCB_CCSIDR_NUMSETS_Msk (0x7FFFUL << SCB_CCSIDR_NUMSETS_Pos) /*!< SCB CCSIDR: NumSets Mask */ + +#define SCB_CCSIDR_ASSOCIATIVITY_Pos 3U /*!< SCB CCSIDR: Associativity Position */ +#define SCB_CCSIDR_ASSOCIATIVITY_Msk (0x3FFUL << SCB_CCSIDR_ASSOCIATIVITY_Pos) /*!< SCB CCSIDR: Associativity Mask */ + +#define SCB_CCSIDR_LINESIZE_Pos 0U /*!< SCB CCSIDR: LineSize Position */ +#define SCB_CCSIDR_LINESIZE_Msk (7UL /*<< SCB_CCSIDR_LINESIZE_Pos*/) /*!< SCB CCSIDR: LineSize Mask */ + +/* SCB Cache Size Selection Register Definitions */ +#define SCB_CSSELR_LEVEL_Pos 1U /*!< SCB CSSELR: Level Position */ +#define SCB_CSSELR_LEVEL_Msk (7UL << SCB_CSSELR_LEVEL_Pos) /*!< SCB CSSELR: Level Mask */ + +#define SCB_CSSELR_IND_Pos 0U /*!< SCB CSSELR: InD Position */ +#define SCB_CSSELR_IND_Msk (1UL /*<< SCB_CSSELR_IND_Pos*/) /*!< SCB CSSELR: InD Mask */ + +/* SCB Software Triggered Interrupt Register Definitions */ +#define SCB_STIR_INTID_Pos 0U /*!< SCB STIR: INTID Position */ +#define SCB_STIR_INTID_Msk (0x1FFUL /*<< SCB_STIR_INTID_Pos*/) /*!< SCB STIR: INTID Mask */ + +/* SCB D-Cache Invalidate by Set-way Register Definitions */ +#define SCB_DCISW_WAY_Pos 30U /*!< SCB DCISW: Way Position */ +#define SCB_DCISW_WAY_Msk (3UL << SCB_DCISW_WAY_Pos) /*!< SCB DCISW: Way Mask */ + +#define SCB_DCISW_SET_Pos 5U /*!< SCB DCISW: Set Position */ +#define SCB_DCISW_SET_Msk (0x1FFUL << SCB_DCISW_SET_Pos) /*!< SCB DCISW: Set Mask */ + +/* SCB D-Cache Clean by Set-way Register Definitions */ +#define SCB_DCCSW_WAY_Pos 30U /*!< SCB DCCSW: Way Position */ +#define SCB_DCCSW_WAY_Msk (3UL << SCB_DCCSW_WAY_Pos) /*!< SCB DCCSW: Way Mask */ + +#define SCB_DCCSW_SET_Pos 5U /*!< SCB DCCSW: Set Position */ +#define SCB_DCCSW_SET_Msk (0x1FFUL << SCB_DCCSW_SET_Pos) /*!< SCB DCCSW: Set Mask */ + +/* SCB D-Cache Clean and Invalidate by Set-way Register Definitions */ +#define SCB_DCCISW_WAY_Pos 30U /*!< SCB DCCISW: Way Position */ +#define SCB_DCCISW_WAY_Msk (3UL << SCB_DCCISW_WAY_Pos) /*!< SCB DCCISW: Way Mask */ + +#define SCB_DCCISW_SET_Pos 5U /*!< SCB DCCISW: Set Position */ +#define SCB_DCCISW_SET_Msk (0x1FFUL << SCB_DCCISW_SET_Pos) /*!< SCB DCCISW: Set Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** + \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IM uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */ + __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ + __IOM uint32_t CPPWR; /*!< Offset: 0x00C (R/W) Coprocessor Power Control Register */ +} SCnSCB_Type; + +/* Interrupt Controller Type Register Definitions */ +#define SCnSCB_ICTR_INTLINESNUM_Pos 0U /*!< ICTR: INTLINESNUM Position */ +#define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/) /*!< ICTR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_ITM Instrumentation Trace Macrocell (ITM) + \brief Type definitions for the Instrumentation Trace Macrocell (ITM) + @{ + */ + +/** + \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). + */ +typedef struct +{ + __OM union + { + __OM uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ + __OM uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ + __OM uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ + } PORT [32U]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ + uint32_t RESERVED0[864U]; + __IOM uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ + uint32_t RESERVED1[15U]; + __IOM uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ + uint32_t RESERVED2[15U]; + __IOM uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ + uint32_t RESERVED3[32U]; + uint32_t RESERVED4[43U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */ + uint32_t RESERVED5[1U]; + __IM uint32_t DEVARCH; /*!< Offset: 0xFBC (R/ ) ITM Device Architecture Register */ + uint32_t RESERVED6[4U]; + __IM uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Register #4 */ + __IM uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Register #5 */ + __IM uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Register #6 */ + __IM uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Register #7 */ + __IM uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Register #0 */ + __IM uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Register #1 */ + __IM uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Register #2 */ + __IM uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Register #3 */ + __IM uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Register #0 */ + __IM uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Register #1 */ + __IM uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Register #2 */ + __IM uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Register #3 */ +} ITM_Type; + +/* ITM Stimulus Port Register Definitions */ +#define ITM_STIM_DISABLED_Pos 1U /*!< ITM STIM: DISABLED Position */ +#define ITM_STIM_DISABLED_Msk (0x1UL << ITM_STIM_DISABLED_Pos) /*!< ITM STIM: DISABLED Mask */ + +#define ITM_STIM_FIFOREADY_Pos 0U /*!< ITM STIM: FIFOREADY Position */ +#define ITM_STIM_FIFOREADY_Msk (0x1UL /*<< ITM_STIM_FIFOREADY_Pos*/) /*!< ITM STIM: FIFOREADY Mask */ + +/* ITM Trace Privilege Register Definitions */ +#define ITM_TPR_PRIVMASK_Pos 0U /*!< ITM TPR: PRIVMASK Position */ +#define ITM_TPR_PRIVMASK_Msk (0xFFFFFFFFUL /*<< ITM_TPR_PRIVMASK_Pos*/) /*!< ITM TPR: PRIVMASK Mask */ + +/* ITM Trace Control Register Definitions */ +#define ITM_TCR_BUSY_Pos 23U /*!< ITM TCR: BUSY Position */ +#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ + +#define ITM_TCR_TRACEBUSID_Pos 16U /*!< ITM TCR: ATBID Position */ +#define ITM_TCR_TRACEBUSID_Msk (0x7FUL << ITM_TCR_TRACEBUSID_Pos) /*!< ITM TCR: ATBID Mask */ + +#define ITM_TCR_GTSFREQ_Pos 10U /*!< ITM TCR: Global timestamp frequency Position */ +#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */ + +#define ITM_TCR_TSPRESCALE_Pos 8U /*!< ITM TCR: TSPRESCALE Position */ +#define ITM_TCR_TSPRESCALE_Msk (3UL << ITM_TCR_TSPRESCALE_Pos) /*!< ITM TCR: TSPRESCALE Mask */ + +#define ITM_TCR_STALLENA_Pos 5U /*!< ITM TCR: STALLENA Position */ +#define ITM_TCR_STALLENA_Msk (1UL << ITM_TCR_STALLENA_Pos) /*!< ITM TCR: STALLENA Mask */ + +#define ITM_TCR_SWOENA_Pos 4U /*!< ITM TCR: SWOENA Position */ +#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ + +#define ITM_TCR_DWTENA_Pos 3U /*!< ITM TCR: DWTENA Position */ +#define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ + +#define ITM_TCR_SYNCENA_Pos 2U /*!< ITM TCR: SYNCENA Position */ +#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ + +#define ITM_TCR_TSENA_Pos 1U /*!< ITM TCR: TSENA Position */ +#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ + +#define ITM_TCR_ITMENA_Pos 0U /*!< ITM TCR: ITM Enable bit Position */ +#define ITM_TCR_ITMENA_Msk (1UL /*<< ITM_TCR_ITMENA_Pos*/) /*!< ITM TCR: ITM Enable bit Mask */ + +/* ITM Lock Status Register Definitions */ +#define ITM_LSR_ByteAcc_Pos 2U /*!< ITM LSR: ByteAcc Position */ +#define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ + +#define ITM_LSR_Access_Pos 1U /*!< ITM LSR: Access Position */ +#define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ + +#define ITM_LSR_Present_Pos 0U /*!< ITM LSR: Present Position */ +#define ITM_LSR_Present_Msk (1UL /*<< ITM_LSR_Present_Pos*/) /*!< ITM LSR: Present Mask */ + +/*@}*/ /* end of group CMSIS_ITM */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + __IOM uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */ + __IOM uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */ + __IOM uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Register */ + __IOM uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */ + __IOM uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */ + __IOM uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Register */ + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + uint32_t RESERVED3[1U]; + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED4[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + uint32_t RESERVED5[1U]; + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED6[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + uint32_t RESERVED7[1U]; + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ + uint32_t RESERVED8[1U]; + __IOM uint32_t COMP4; /*!< Offset: 0x060 (R/W) Comparator Register 4 */ + uint32_t RESERVED9[1U]; + __IOM uint32_t FUNCTION4; /*!< Offset: 0x068 (R/W) Function Register 4 */ + uint32_t RESERVED10[1U]; + __IOM uint32_t COMP5; /*!< Offset: 0x070 (R/W) Comparator Register 5 */ + uint32_t RESERVED11[1U]; + __IOM uint32_t FUNCTION5; /*!< Offset: 0x078 (R/W) Function Register 5 */ + uint32_t RESERVED12[1U]; + __IOM uint32_t COMP6; /*!< Offset: 0x080 (R/W) Comparator Register 6 */ + uint32_t RESERVED13[1U]; + __IOM uint32_t FUNCTION6; /*!< Offset: 0x088 (R/W) Function Register 6 */ + uint32_t RESERVED14[1U]; + __IOM uint32_t COMP7; /*!< Offset: 0x090 (R/W) Comparator Register 7 */ + uint32_t RESERVED15[1U]; + __IOM uint32_t FUNCTION7; /*!< Offset: 0x098 (R/W) Function Register 7 */ + uint32_t RESERVED16[1U]; + __IOM uint32_t COMP8; /*!< Offset: 0x0A0 (R/W) Comparator Register 8 */ + uint32_t RESERVED17[1U]; + __IOM uint32_t FUNCTION8; /*!< Offset: 0x0A8 (R/W) Function Register 8 */ + uint32_t RESERVED18[1U]; + __IOM uint32_t COMP9; /*!< Offset: 0x0B0 (R/W) Comparator Register 9 */ + uint32_t RESERVED19[1U]; + __IOM uint32_t FUNCTION9; /*!< Offset: 0x0B8 (R/W) Function Register 9 */ + uint32_t RESERVED20[1U]; + __IOM uint32_t COMP10; /*!< Offset: 0x0C0 (R/W) Comparator Register 10 */ + uint32_t RESERVED21[1U]; + __IOM uint32_t FUNCTION10; /*!< Offset: 0x0C8 (R/W) Function Register 10 */ + uint32_t RESERVED22[1U]; + __IOM uint32_t COMP11; /*!< Offset: 0x0D0 (R/W) Comparator Register 11 */ + uint32_t RESERVED23[1U]; + __IOM uint32_t FUNCTION11; /*!< Offset: 0x0D8 (R/W) Function Register 11 */ + uint32_t RESERVED24[1U]; + __IOM uint32_t COMP12; /*!< Offset: 0x0E0 (R/W) Comparator Register 12 */ + uint32_t RESERVED25[1U]; + __IOM uint32_t FUNCTION12; /*!< Offset: 0x0E8 (R/W) Function Register 12 */ + uint32_t RESERVED26[1U]; + __IOM uint32_t COMP13; /*!< Offset: 0x0F0 (R/W) Comparator Register 13 */ + uint32_t RESERVED27[1U]; + __IOM uint32_t FUNCTION13; /*!< Offset: 0x0F8 (R/W) Function Register 13 */ + uint32_t RESERVED28[1U]; + __IOM uint32_t COMP14; /*!< Offset: 0x100 (R/W) Comparator Register 14 */ + uint32_t RESERVED29[1U]; + __IOM uint32_t FUNCTION14; /*!< Offset: 0x108 (R/W) Function Register 14 */ + uint32_t RESERVED30[1U]; + __IOM uint32_t COMP15; /*!< Offset: 0x110 (R/W) Comparator Register 15 */ + uint32_t RESERVED31[1U]; + __IOM uint32_t FUNCTION15; /*!< Offset: 0x118 (R/W) Function Register 15 */ + uint32_t RESERVED32[934U]; + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R ) Lock Status Register */ + uint32_t RESERVED33[1U]; + __IM uint32_t DEVARCH; /*!< Offset: 0xFBC (R/ ) Device Architecture Register */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +#define DWT_CTRL_CYCDISS_Pos 23U /*!< DWT CTRL: CYCDISS Position */ +#define DWT_CTRL_CYCDISS_Msk (0x1UL << DWT_CTRL_CYCDISS_Pos) /*!< DWT CTRL: CYCDISS Mask */ + +#define DWT_CTRL_CYCEVTENA_Pos 22U /*!< DWT CTRL: CYCEVTENA Position */ +#define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTRL: CYCEVTENA Mask */ + +#define DWT_CTRL_FOLDEVTENA_Pos 21U /*!< DWT CTRL: FOLDEVTENA Position */ +#define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTRL: FOLDEVTENA Mask */ + +#define DWT_CTRL_LSUEVTENA_Pos 20U /*!< DWT CTRL: LSUEVTENA Position */ +#define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTRL: LSUEVTENA Mask */ + +#define DWT_CTRL_SLEEPEVTENA_Pos 19U /*!< DWT CTRL: SLEEPEVTENA Position */ +#define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTRL: SLEEPEVTENA Mask */ + +#define DWT_CTRL_EXCEVTENA_Pos 18U /*!< DWT CTRL: EXCEVTENA Position */ +#define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTRL: EXCEVTENA Mask */ + +#define DWT_CTRL_CPIEVTENA_Pos 17U /*!< DWT CTRL: CPIEVTENA Position */ +#define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTRL: CPIEVTENA Mask */ + +#define DWT_CTRL_EXCTRCENA_Pos 16U /*!< DWT CTRL: EXCTRCENA Position */ +#define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTRL: EXCTRCENA Mask */ + +#define DWT_CTRL_PCSAMPLENA_Pos 12U /*!< DWT CTRL: PCSAMPLENA Position */ +#define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTRL: PCSAMPLENA Mask */ + +#define DWT_CTRL_SYNCTAP_Pos 10U /*!< DWT CTRL: SYNCTAP Position */ +#define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTRL: SYNCTAP Mask */ + +#define DWT_CTRL_CYCTAP_Pos 9U /*!< DWT CTRL: CYCTAP Position */ +#define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTRL: CYCTAP Mask */ + +#define DWT_CTRL_POSTINIT_Pos 5U /*!< DWT CTRL: POSTINIT Position */ +#define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTRL: POSTINIT Mask */ + +#define DWT_CTRL_POSTPRESET_Pos 1U /*!< DWT CTRL: POSTPRESET Position */ +#define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTRL: POSTPRESET Mask */ + +#define DWT_CTRL_CYCCNTENA_Pos 0U /*!< DWT CTRL: CYCCNTENA Position */ +#define DWT_CTRL_CYCCNTENA_Msk (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/) /*!< DWT CTRL: CYCCNTENA Mask */ + +/* DWT CPI Count Register Definitions */ +#define DWT_CPICNT_CPICNT_Pos 0U /*!< DWT CPICNT: CPICNT Position */ +#define DWT_CPICNT_CPICNT_Msk (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/) /*!< DWT CPICNT: CPICNT Mask */ + +/* DWT Exception Overhead Count Register Definitions */ +#define DWT_EXCCNT_EXCCNT_Pos 0U /*!< DWT EXCCNT: EXCCNT Position */ +#define DWT_EXCCNT_EXCCNT_Msk (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/) /*!< DWT EXCCNT: EXCCNT Mask */ + +/* DWT Sleep Count Register Definitions */ +#define DWT_SLEEPCNT_SLEEPCNT_Pos 0U /*!< DWT SLEEPCNT: SLEEPCNT Position */ +#define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/) /*!< DWT SLEEPCNT: SLEEPCNT Mask */ + +/* DWT LSU Count Register Definitions */ +#define DWT_LSUCNT_LSUCNT_Pos 0U /*!< DWT LSUCNT: LSUCNT Position */ +#define DWT_LSUCNT_LSUCNT_Msk (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/) /*!< DWT LSUCNT: LSUCNT Mask */ + +/* DWT Folded-instruction Count Register Definitions */ +#define DWT_FOLDCNT_FOLDCNT_Pos 0U /*!< DWT FOLDCNT: FOLDCNT Position */ +#define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/) /*!< DWT FOLDCNT: FOLDCNT Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_ID_Pos 27U /*!< DWT FUNCTION: ID Position */ +#define DWT_FUNCTION_ID_Msk (0x1FUL << DWT_FUNCTION_ID_Pos) /*!< DWT FUNCTION: ID Mask */ + +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_ACTION_Pos 4U /*!< DWT FUNCTION: ACTION Position */ +#define DWT_FUNCTION_ACTION_Msk (0x1UL << DWT_FUNCTION_ACTION_Pos) /*!< DWT FUNCTION: ACTION Mask */ + +#define DWT_FUNCTION_MATCH_Pos 0U /*!< DWT FUNCTION: MATCH Position */ +#define DWT_FUNCTION_MATCH_Msk (0xFUL /*<< DWT_FUNCTION_MATCH_Pos*/) /*!< DWT FUNCTION: MATCH Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Size Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Size Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IOM uint32_t PSCR; /*!< Offset: 0x308 (R/W) Periodic Synchronization Control Register */ + uint32_t RESERVED3[759U]; + __IM uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER Register */ + __IM uint32_t ITFTTD0; /*!< Offset: 0xEEC (R/ ) Integration Test FIFO Test Data 0 Register */ + __IOM uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/W) Integration Test ATB Control Register 2 */ + uint32_t RESERVED4[1U]; + __IM uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) Integration Test ATB Control Register 0 */ + __IM uint32_t ITFTTD1; /*!< Offset: 0xEFC (R/ ) Integration Test FIFO Test Data 1 Register */ + __IOM uint32_t ITCTRL; /*!< Offset: 0xF00 (R/W) Integration Mode Control */ + uint32_t RESERVED5[39U]; + __IOM uint32_t CLAIMSET; /*!< Offset: 0xFA0 (R/W) Claim tag set */ + __IOM uint32_t CLAIMCLR; /*!< Offset: 0xFA4 (R/W) Claim tag clear */ + uint32_t RESERVED7[8U]; + __IM uint32_t DEVID; /*!< Offset: 0xFC8 (R/ ) Device Configuration Register */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) Device Type Identifier Register */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_PRESCALER_Pos 0U /*!< TPI ACPR: PRESCALER Position */ +#define TPI_ACPR_PRESCALER_Msk (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/) /*!< TPI ACPR: PRESCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_FOnMan_Pos 6U /*!< TPI FFCR: FOnMan Position */ +#define TPI_FFCR_FOnMan_Msk (0x1UL << TPI_FFCR_FOnMan_Pos) /*!< TPI FFCR: FOnMan Mask */ + +#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */ +#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ + +/* TPI TRIGGER Register Definitions */ +#define TPI_TRIGGER_TRIGGER_Pos 0U /*!< TPI TRIGGER: TRIGGER Position */ +#define TPI_TRIGGER_TRIGGER_Msk (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/) /*!< TPI TRIGGER: TRIGGER Mask */ + +/* TPI Integration Test FIFO Test Data 0 Register Definitions */ +#define TPI_ITFTTD0_ATB_IF2_ATVALID_Pos 29U /*!< TPI ITFTTD0: ATB Interface 2 ATVALIDPosition */ +#define TPI_ITFTTD0_ATB_IF2_ATVALID_Msk (0x3UL << TPI_ITFTTD0_ATB_IF2_ATVALID_Pos) /*!< TPI ITFTTD0: ATB Interface 2 ATVALID Mask */ + +#define TPI_ITFTTD0_ATB_IF2_bytecount_Pos 27U /*!< TPI ITFTTD0: ATB Interface 2 byte count Position */ +#define TPI_ITFTTD0_ATB_IF2_bytecount_Msk (0x3UL << TPI_ITFTTD0_ATB_IF2_bytecount_Pos) /*!< TPI ITFTTD0: ATB Interface 2 byte count Mask */ + +#define TPI_ITFTTD0_ATB_IF1_ATVALID_Pos 26U /*!< TPI ITFTTD0: ATB Interface 1 ATVALID Position */ +#define TPI_ITFTTD0_ATB_IF1_ATVALID_Msk (0x3UL << TPI_ITFTTD0_ATB_IF1_ATVALID_Pos) /*!< TPI ITFTTD0: ATB Interface 1 ATVALID Mask */ + +#define TPI_ITFTTD0_ATB_IF1_bytecount_Pos 24U /*!< TPI ITFTTD0: ATB Interface 1 byte count Position */ +#define TPI_ITFTTD0_ATB_IF1_bytecount_Msk (0x3UL << TPI_ITFTTD0_ATB_IF1_bytecount_Pos) /*!< TPI ITFTTD0: ATB Interface 1 byte countt Mask */ + +#define TPI_ITFTTD0_ATB_IF1_data2_Pos 16U /*!< TPI ITFTTD0: ATB Interface 1 data2 Position */ +#define TPI_ITFTTD0_ATB_IF1_data2_Msk (0xFFUL << TPI_ITFTTD0_ATB_IF1_data1_Pos) /*!< TPI ITFTTD0: ATB Interface 1 data2 Mask */ + +#define TPI_ITFTTD0_ATB_IF1_data1_Pos 8U /*!< TPI ITFTTD0: ATB Interface 1 data1 Position */ +#define TPI_ITFTTD0_ATB_IF1_data1_Msk (0xFFUL << TPI_ITFTTD0_ATB_IF1_data1_Pos) /*!< TPI ITFTTD0: ATB Interface 1 data1 Mask */ + +#define TPI_ITFTTD0_ATB_IF1_data0_Pos 0U /*!< TPI ITFTTD0: ATB Interface 1 data0 Position */ +#define TPI_ITFTTD0_ATB_IF1_data0_Msk (0xFFUL /*<< TPI_ITFTTD0_ATB_IF1_data0_Pos*/) /*!< TPI ITFTTD0: ATB Interface 1 data0 Mask */ + +/* TPI Integration Test ATB Control Register 2 Register Definitions */ +#define TPI_ITATBCTR2_AFVALID2S_Pos 1U /*!< TPI ITATBCTR2: AFVALID2S Position */ +#define TPI_ITATBCTR2_AFVALID2S_Msk (0x1UL << TPI_ITATBCTR2_AFVALID2S_Pos) /*!< TPI ITATBCTR2: AFVALID2SS Mask */ + +#define TPI_ITATBCTR2_AFVALID1S_Pos 1U /*!< TPI ITATBCTR2: AFVALID1S Position */ +#define TPI_ITATBCTR2_AFVALID1S_Msk (0x1UL << TPI_ITATBCTR2_AFVALID1S_Pos) /*!< TPI ITATBCTR2: AFVALID1SS Mask */ + +#define TPI_ITATBCTR2_ATREADY2S_Pos 0U /*!< TPI ITATBCTR2: ATREADY2S Position */ +#define TPI_ITATBCTR2_ATREADY2S_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY2S_Pos*/) /*!< TPI ITATBCTR2: ATREADY2S Mask */ + +#define TPI_ITATBCTR2_ATREADY1S_Pos 0U /*!< TPI ITATBCTR2: ATREADY1S Position */ +#define TPI_ITATBCTR2_ATREADY1S_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY1S_Pos*/) /*!< TPI ITATBCTR2: ATREADY1S Mask */ + +/* TPI Integration Test FIFO Test Data 1 Register Definitions */ +#define TPI_ITFTTD1_ATB_IF2_ATVALID_Pos 29U /*!< TPI ITFTTD1: ATB Interface 2 ATVALID Position */ +#define TPI_ITFTTD1_ATB_IF2_ATVALID_Msk (0x3UL << TPI_ITFTTD1_ATB_IF2_ATVALID_Pos) /*!< TPI ITFTTD1: ATB Interface 2 ATVALID Mask */ + +#define TPI_ITFTTD1_ATB_IF2_bytecount_Pos 27U /*!< TPI ITFTTD1: ATB Interface 2 byte count Position */ +#define TPI_ITFTTD1_ATB_IF2_bytecount_Msk (0x3UL << TPI_ITFTTD1_ATB_IF2_bytecount_Pos) /*!< TPI ITFTTD1: ATB Interface 2 byte count Mask */ + +#define TPI_ITFTTD1_ATB_IF1_ATVALID_Pos 26U /*!< TPI ITFTTD1: ATB Interface 1 ATVALID Position */ +#define TPI_ITFTTD1_ATB_IF1_ATVALID_Msk (0x3UL << TPI_ITFTTD1_ATB_IF1_ATVALID_Pos) /*!< TPI ITFTTD1: ATB Interface 1 ATVALID Mask */ + +#define TPI_ITFTTD1_ATB_IF1_bytecount_Pos 24U /*!< TPI ITFTTD1: ATB Interface 1 byte count Position */ +#define TPI_ITFTTD1_ATB_IF1_bytecount_Msk (0x3UL << TPI_ITFTTD1_ATB_IF1_bytecount_Pos) /*!< TPI ITFTTD1: ATB Interface 1 byte countt Mask */ + +#define TPI_ITFTTD1_ATB_IF2_data2_Pos 16U /*!< TPI ITFTTD1: ATB Interface 2 data2 Position */ +#define TPI_ITFTTD1_ATB_IF2_data2_Msk (0xFFUL << TPI_ITFTTD1_ATB_IF2_data1_Pos) /*!< TPI ITFTTD1: ATB Interface 2 data2 Mask */ + +#define TPI_ITFTTD1_ATB_IF2_data1_Pos 8U /*!< TPI ITFTTD1: ATB Interface 2 data1 Position */ +#define TPI_ITFTTD1_ATB_IF2_data1_Msk (0xFFUL << TPI_ITFTTD1_ATB_IF2_data1_Pos) /*!< TPI ITFTTD1: ATB Interface 2 data1 Mask */ + +#define TPI_ITFTTD1_ATB_IF2_data0_Pos 0U /*!< TPI ITFTTD1: ATB Interface 2 data0 Position */ +#define TPI_ITFTTD1_ATB_IF2_data0_Msk (0xFFUL /*<< TPI_ITFTTD1_ATB_IF2_data0_Pos*/) /*!< TPI ITFTTD1: ATB Interface 2 data0 Mask */ + +/* TPI Integration Test ATB Control Register 0 Definitions */ +#define TPI_ITATBCTR0_AFVALID2S_Pos 1U /*!< TPI ITATBCTR0: AFVALID2S Position */ +#define TPI_ITATBCTR0_AFVALID2S_Msk (0x1UL << TPI_ITATBCTR0_AFVALID2S_Pos) /*!< TPI ITATBCTR0: AFVALID2SS Mask */ + +#define TPI_ITATBCTR0_AFVALID1S_Pos 1U /*!< TPI ITATBCTR0: AFVALID1S Position */ +#define TPI_ITATBCTR0_AFVALID1S_Msk (0x1UL << TPI_ITATBCTR0_AFVALID1S_Pos) /*!< TPI ITATBCTR0: AFVALID1SS Mask */ + +#define TPI_ITATBCTR0_ATREADY2S_Pos 0U /*!< TPI ITATBCTR0: ATREADY2S Position */ +#define TPI_ITATBCTR0_ATREADY2S_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY2S_Pos*/) /*!< TPI ITATBCTR0: ATREADY2S Mask */ + +#define TPI_ITATBCTR0_ATREADY1S_Pos 0U /*!< TPI ITATBCTR0: ATREADY1S Position */ +#define TPI_ITATBCTR0_ATREADY1S_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY1S_Pos*/) /*!< TPI ITATBCTR0: ATREADY1S Mask */ + +/* TPI Integration Mode Control Register Definitions */ +#define TPI_ITCTRL_Mode_Pos 0U /*!< TPI ITCTRL: Mode Position */ +#define TPI_ITCTRL_Mode_Msk (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/) /*!< TPI ITCTRL: Mode Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_FIFOSZ_Pos 6U /*!< TPI DEVID: FIFOSZ Position */ +#define TPI_DEVID_FIFOSZ_Msk (0x7UL << TPI_DEVID_FIFOSZ_Pos) /*!< TPI DEVID: FIFOSZ Mask */ + +#define TPI_DEVID_NrTraceInput_Pos 0U /*!< TPI DEVID: NrTraceInput Position */ +#define TPI_DEVID_NrTraceInput_Msk (0x3FUL /*<< TPI_DEVID_NrTraceInput_Pos*/) /*!< TPI DEVID: NrTraceInput Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) MPU Region Limit Address Register */ + __IOM uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Region Base Address Register Alias 1 */ + __IOM uint32_t RLAR_A1; /*!< Offset: 0x018 (R/W) MPU Region Limit Address Register Alias 1 */ + __IOM uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Region Base Address Register Alias 2 */ + __IOM uint32_t RLAR_A2; /*!< Offset: 0x020 (R/W) MPU Region Limit Address Register Alias 2 */ + __IOM uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Region Base Address Register Alias 3 */ + __IOM uint32_t RLAR_A3; /*!< Offset: 0x028 (R/W) MPU Region Limit Address Register Alias 3 */ + uint32_t RESERVED0[1]; + union { + __IOM uint32_t MAIR[2]; + struct { + __IOM uint32_t MAIR0; /*!< Offset: 0x030 (R/W) MPU Memory Attribute Indirection Register 0 */ + __IOM uint32_t MAIR1; /*!< Offset: 0x034 (R/W) MPU Memory Attribute Indirection Register 1 */ + }; + }; +} MPU_Type; + +#define MPU_TYPE_RALIASES 4U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_BASE_Pos 5U /*!< MPU RBAR: BASE Position */ +#define MPU_RBAR_BASE_Msk (0x7FFFFFFUL << MPU_RBAR_BASE_Pos) /*!< MPU RBAR: BASE Mask */ + +#define MPU_RBAR_SH_Pos 3U /*!< MPU RBAR: SH Position */ +#define MPU_RBAR_SH_Msk (0x3UL << MPU_RBAR_SH_Pos) /*!< MPU RBAR: SH Mask */ + +#define MPU_RBAR_AP_Pos 1U /*!< MPU RBAR: AP Position */ +#define MPU_RBAR_AP_Msk (0x3UL << MPU_RBAR_AP_Pos) /*!< MPU RBAR: AP Mask */ + +#define MPU_RBAR_XN_Pos 0U /*!< MPU RBAR: XN Position */ +#define MPU_RBAR_XN_Msk (01UL /*<< MPU_RBAR_XN_Pos*/) /*!< MPU RBAR: XN Mask */ + +/* MPU Region Limit Address Register Definitions */ +#define MPU_RLAR_LIMIT_Pos 5U /*!< MPU RLAR: LIMIT Position */ +#define MPU_RLAR_LIMIT_Msk (0x7FFFFFFUL << MPU_RLAR_LIMIT_Pos) /*!< MPU RLAR: LIMIT Mask */ + +#define MPU_RLAR_AttrIndx_Pos 1U /*!< MPU RLAR: AttrIndx Position */ +#define MPU_RLAR_AttrIndx_Msk (0x7UL << MPU_RLAR_AttrIndx_Pos) /*!< MPU RLAR: AttrIndx Mask */ + +#define MPU_RLAR_EN_Pos 0U /*!< MPU RLAR: Region enable bit Position */ +#define MPU_RLAR_EN_Msk (1UL /*<< MPU_RLAR_EN_Pos*/) /*!< MPU RLAR: Region enable bit Disable Mask */ + +/* MPU Memory Attribute Indirection Register 0 Definitions */ +#define MPU_MAIR0_Attr3_Pos 24U /*!< MPU MAIR0: Attr3 Position */ +#define MPU_MAIR0_Attr3_Msk (0xFFUL << MPU_MAIR0_Attr3_Pos) /*!< MPU MAIR0: Attr3 Mask */ + +#define MPU_MAIR0_Attr2_Pos 16U /*!< MPU MAIR0: Attr2 Position */ +#define MPU_MAIR0_Attr2_Msk (0xFFUL << MPU_MAIR0_Attr2_Pos) /*!< MPU MAIR0: Attr2 Mask */ + +#define MPU_MAIR0_Attr1_Pos 8U /*!< MPU MAIR0: Attr1 Position */ +#define MPU_MAIR0_Attr1_Msk (0xFFUL << MPU_MAIR0_Attr1_Pos) /*!< MPU MAIR0: Attr1 Mask */ + +#define MPU_MAIR0_Attr0_Pos 0U /*!< MPU MAIR0: Attr0 Position */ +#define MPU_MAIR0_Attr0_Msk (0xFFUL /*<< MPU_MAIR0_Attr0_Pos*/) /*!< MPU MAIR0: Attr0 Mask */ + +/* MPU Memory Attribute Indirection Register 1 Definitions */ +#define MPU_MAIR1_Attr7_Pos 24U /*!< MPU MAIR1: Attr7 Position */ +#define MPU_MAIR1_Attr7_Msk (0xFFUL << MPU_MAIR1_Attr7_Pos) /*!< MPU MAIR1: Attr7 Mask */ + +#define MPU_MAIR1_Attr6_Pos 16U /*!< MPU MAIR1: Attr6 Position */ +#define MPU_MAIR1_Attr6_Msk (0xFFUL << MPU_MAIR1_Attr6_Pos) /*!< MPU MAIR1: Attr6 Mask */ + +#define MPU_MAIR1_Attr5_Pos 8U /*!< MPU MAIR1: Attr5 Position */ +#define MPU_MAIR1_Attr5_Msk (0xFFUL << MPU_MAIR1_Attr5_Pos) /*!< MPU MAIR1: Attr5 Mask */ + +#define MPU_MAIR1_Attr4_Pos 0U /*!< MPU MAIR1: Attr4 Position */ +#define MPU_MAIR1_Attr4_Msk (0xFFUL /*<< MPU_MAIR1_Attr4_Pos*/) /*!< MPU MAIR1: Attr4 Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SAU Security Attribution Unit (SAU) + \brief Type definitions for the Security Attribution Unit (SAU) + @{ + */ + +/** + \brief Structure type to access the Security Attribution Unit (SAU). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SAU Control Register */ + __IM uint32_t TYPE; /*!< Offset: 0x004 (R/ ) SAU Type Register */ +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) SAU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) SAU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) SAU Region Limit Address Register */ +#else + uint32_t RESERVED0[3]; +#endif + __IOM uint32_t SFSR; /*!< Offset: 0x014 (R/W) Secure Fault Status Register */ + __IOM uint32_t SFAR; /*!< Offset: 0x018 (R/W) Secure Fault Address Register */ +} SAU_Type; + +/* SAU Control Register Definitions */ +#define SAU_CTRL_ALLNS_Pos 1U /*!< SAU CTRL: ALLNS Position */ +#define SAU_CTRL_ALLNS_Msk (1UL << SAU_CTRL_ALLNS_Pos) /*!< SAU CTRL: ALLNS Mask */ + +#define SAU_CTRL_ENABLE_Pos 0U /*!< SAU CTRL: ENABLE Position */ +#define SAU_CTRL_ENABLE_Msk (1UL /*<< SAU_CTRL_ENABLE_Pos*/) /*!< SAU CTRL: ENABLE Mask */ + +/* SAU Type Register Definitions */ +#define SAU_TYPE_SREGION_Pos 0U /*!< SAU TYPE: SREGION Position */ +#define SAU_TYPE_SREGION_Msk (0xFFUL /*<< SAU_TYPE_SREGION_Pos*/) /*!< SAU TYPE: SREGION Mask */ + +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) +/* SAU Region Number Register Definitions */ +#define SAU_RNR_REGION_Pos 0U /*!< SAU RNR: REGION Position */ +#define SAU_RNR_REGION_Msk (0xFFUL /*<< SAU_RNR_REGION_Pos*/) /*!< SAU RNR: REGION Mask */ + +/* SAU Region Base Address Register Definitions */ +#define SAU_RBAR_BADDR_Pos 5U /*!< SAU RBAR: BADDR Position */ +#define SAU_RBAR_BADDR_Msk (0x7FFFFFFUL << SAU_RBAR_BADDR_Pos) /*!< SAU RBAR: BADDR Mask */ + +/* SAU Region Limit Address Register Definitions */ +#define SAU_RLAR_LADDR_Pos 5U /*!< SAU RLAR: LADDR Position */ +#define SAU_RLAR_LADDR_Msk (0x7FFFFFFUL << SAU_RLAR_LADDR_Pos) /*!< SAU RLAR: LADDR Mask */ + +#define SAU_RLAR_NSC_Pos 1U /*!< SAU RLAR: NSC Position */ +#define SAU_RLAR_NSC_Msk (1UL << SAU_RLAR_NSC_Pos) /*!< SAU RLAR: NSC Mask */ + +#define SAU_RLAR_ENABLE_Pos 0U /*!< SAU RLAR: ENABLE Position */ +#define SAU_RLAR_ENABLE_Msk (1UL /*<< SAU_RLAR_ENABLE_Pos*/) /*!< SAU RLAR: ENABLE Mask */ + +#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */ + +/* Secure Fault Status Register Definitions */ +#define SAU_SFSR_LSERR_Pos 7U /*!< SAU SFSR: LSERR Position */ +#define SAU_SFSR_LSERR_Msk (1UL << SAU_SFSR_LSERR_Pos) /*!< SAU SFSR: LSERR Mask */ + +#define SAU_SFSR_SFARVALID_Pos 6U /*!< SAU SFSR: SFARVALID Position */ +#define SAU_SFSR_SFARVALID_Msk (1UL << SAU_SFSR_SFARVALID_Pos) /*!< SAU SFSR: SFARVALID Mask */ + +#define SAU_SFSR_LSPERR_Pos 5U /*!< SAU SFSR: LSPERR Position */ +#define SAU_SFSR_LSPERR_Msk (1UL << SAU_SFSR_LSPERR_Pos) /*!< SAU SFSR: LSPERR Mask */ + +#define SAU_SFSR_INVTRAN_Pos 4U /*!< SAU SFSR: INVTRAN Position */ +#define SAU_SFSR_INVTRAN_Msk (1UL << SAU_SFSR_INVTRAN_Pos) /*!< SAU SFSR: INVTRAN Mask */ + +#define SAU_SFSR_AUVIOL_Pos 3U /*!< SAU SFSR: AUVIOL Position */ +#define SAU_SFSR_AUVIOL_Msk (1UL << SAU_SFSR_AUVIOL_Pos) /*!< SAU SFSR: AUVIOL Mask */ + +#define SAU_SFSR_INVER_Pos 2U /*!< SAU SFSR: INVER Position */ +#define SAU_SFSR_INVER_Msk (1UL << SAU_SFSR_INVER_Pos) /*!< SAU SFSR: INVER Mask */ + +#define SAU_SFSR_INVIS_Pos 1U /*!< SAU SFSR: INVIS Position */ +#define SAU_SFSR_INVIS_Msk (1UL << SAU_SFSR_INVIS_Pos) /*!< SAU SFSR: INVIS Mask */ + +#define SAU_SFSR_INVEP_Pos 0U /*!< SAU SFSR: INVEP Position */ +#define SAU_SFSR_INVEP_Msk (1UL /*<< SAU_SFSR_INVEP_Pos*/) /*!< SAU SFSR: INVEP Mask */ + +/*@} end of group CMSIS_SAU */ +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_FPU Floating Point Unit (FPU) + \brief Type definitions for the Floating Point Unit (FPU) + @{ + */ + +/** + \brief Structure type to access the Floating Point Unit (FPU). + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IOM uint32_t FPCCR; /*!< Offset: 0x004 (R/W) Floating-Point Context Control Register */ + __IOM uint32_t FPCAR; /*!< Offset: 0x008 (R/W) Floating-Point Context Address Register */ + __IOM uint32_t FPDSCR; /*!< Offset: 0x00C (R/W) Floating-Point Default Status Control Register */ + __IM uint32_t MVFR0; /*!< Offset: 0x010 (R/ ) Media and FP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x014 (R/ ) Media and FP Feature Register 1 */ +} FPU_Type; + +/* Floating-Point Context Control Register Definitions */ +#define FPU_FPCCR_ASPEN_Pos 31U /*!< FPCCR: ASPEN bit Position */ +#define FPU_FPCCR_ASPEN_Msk (1UL << FPU_FPCCR_ASPEN_Pos) /*!< FPCCR: ASPEN bit Mask */ + +#define FPU_FPCCR_LSPEN_Pos 30U /*!< FPCCR: LSPEN Position */ +#define FPU_FPCCR_LSPEN_Msk (1UL << FPU_FPCCR_LSPEN_Pos) /*!< FPCCR: LSPEN bit Mask */ + +#define FPU_FPCCR_LSPENS_Pos 29U /*!< FPCCR: LSPENS Position */ +#define FPU_FPCCR_LSPENS_Msk (1UL << FPU_FPCCR_LSPENS_Pos) /*!< FPCCR: LSPENS bit Mask */ + +#define FPU_FPCCR_CLRONRET_Pos 28U /*!< FPCCR: CLRONRET Position */ +#define FPU_FPCCR_CLRONRET_Msk (1UL << FPU_FPCCR_CLRONRET_Pos) /*!< FPCCR: CLRONRET bit Mask */ + +#define FPU_FPCCR_CLRONRETS_Pos 27U /*!< FPCCR: CLRONRETS Position */ +#define FPU_FPCCR_CLRONRETS_Msk (1UL << FPU_FPCCR_CLRONRETS_Pos) /*!< FPCCR: CLRONRETS bit Mask */ + +#define FPU_FPCCR_TS_Pos 26U /*!< FPCCR: TS Position */ +#define FPU_FPCCR_TS_Msk (1UL << FPU_FPCCR_TS_Pos) /*!< FPCCR: TS bit Mask */ + +#define FPU_FPCCR_UFRDY_Pos 10U /*!< FPCCR: UFRDY Position */ +#define FPU_FPCCR_UFRDY_Msk (1UL << FPU_FPCCR_UFRDY_Pos) /*!< FPCCR: UFRDY bit Mask */ + +#define FPU_FPCCR_SPLIMVIOL_Pos 9U /*!< FPCCR: SPLIMVIOL Position */ +#define FPU_FPCCR_SPLIMVIOL_Msk (1UL << FPU_FPCCR_SPLIMVIOL_Pos) /*!< FPCCR: SPLIMVIOL bit Mask */ + +#define FPU_FPCCR_MONRDY_Pos 8U /*!< FPCCR: MONRDY Position */ +#define FPU_FPCCR_MONRDY_Msk (1UL << FPU_FPCCR_MONRDY_Pos) /*!< FPCCR: MONRDY bit Mask */ + +#define FPU_FPCCR_SFRDY_Pos 7U /*!< FPCCR: SFRDY Position */ +#define FPU_FPCCR_SFRDY_Msk (1UL << FPU_FPCCR_SFRDY_Pos) /*!< FPCCR: SFRDY bit Mask */ + +#define FPU_FPCCR_BFRDY_Pos 6U /*!< FPCCR: BFRDY Position */ +#define FPU_FPCCR_BFRDY_Msk (1UL << FPU_FPCCR_BFRDY_Pos) /*!< FPCCR: BFRDY bit Mask */ + +#define FPU_FPCCR_MMRDY_Pos 5U /*!< FPCCR: MMRDY Position */ +#define FPU_FPCCR_MMRDY_Msk (1UL << FPU_FPCCR_MMRDY_Pos) /*!< FPCCR: MMRDY bit Mask */ + +#define FPU_FPCCR_HFRDY_Pos 4U /*!< FPCCR: HFRDY Position */ +#define FPU_FPCCR_HFRDY_Msk (1UL << FPU_FPCCR_HFRDY_Pos) /*!< FPCCR: HFRDY bit Mask */ + +#define FPU_FPCCR_THREAD_Pos 3U /*!< FPCCR: processor mode bit Position */ +#define FPU_FPCCR_THREAD_Msk (1UL << FPU_FPCCR_THREAD_Pos) /*!< FPCCR: processor mode active bit Mask */ + +#define FPU_FPCCR_S_Pos 2U /*!< FPCCR: Security status of the FP context bit Position */ +#define FPU_FPCCR_S_Msk (1UL << FPU_FPCCR_S_Pos) /*!< FPCCR: Security status of the FP context bit Mask */ + +#define FPU_FPCCR_USER_Pos 1U /*!< FPCCR: privilege level bit Position */ +#define FPU_FPCCR_USER_Msk (1UL << FPU_FPCCR_USER_Pos) /*!< FPCCR: privilege level bit Mask */ + +#define FPU_FPCCR_LSPACT_Pos 0U /*!< FPCCR: Lazy state preservation active bit Position */ +#define FPU_FPCCR_LSPACT_Msk (1UL /*<< FPU_FPCCR_LSPACT_Pos*/) /*!< FPCCR: Lazy state preservation active bit Mask */ + +/* Floating-Point Context Address Register Definitions */ +#define FPU_FPCAR_ADDRESS_Pos 3U /*!< FPCAR: ADDRESS bit Position */ +#define FPU_FPCAR_ADDRESS_Msk (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos) /*!< FPCAR: ADDRESS bit Mask */ + +/* Floating-Point Default Status Control Register Definitions */ +#define FPU_FPDSCR_AHP_Pos 26U /*!< FPDSCR: AHP bit Position */ +#define FPU_FPDSCR_AHP_Msk (1UL << FPU_FPDSCR_AHP_Pos) /*!< FPDSCR: AHP bit Mask */ + +#define FPU_FPDSCR_DN_Pos 25U /*!< FPDSCR: DN bit Position */ +#define FPU_FPDSCR_DN_Msk (1UL << FPU_FPDSCR_DN_Pos) /*!< FPDSCR: DN bit Mask */ + +#define FPU_FPDSCR_FZ_Pos 24U /*!< FPDSCR: FZ bit Position */ +#define FPU_FPDSCR_FZ_Msk (1UL << FPU_FPDSCR_FZ_Pos) /*!< FPDSCR: FZ bit Mask */ + +#define FPU_FPDSCR_RMode_Pos 22U /*!< FPDSCR: RMode bit Position */ +#define FPU_FPDSCR_RMode_Msk (3UL << FPU_FPDSCR_RMode_Pos) /*!< FPDSCR: RMode bit Mask */ + +/* Media and FP Feature Register 0 Definitions */ +#define FPU_MVFR0_FP_rounding_modes_Pos 28U /*!< MVFR0: FP rounding modes bits Position */ +#define FPU_MVFR0_FP_rounding_modes_Msk (0xFUL << FPU_MVFR0_FP_rounding_modes_Pos) /*!< MVFR0: FP rounding modes bits Mask */ + +#define FPU_MVFR0_Short_vectors_Pos 24U /*!< MVFR0: Short vectors bits Position */ +#define FPU_MVFR0_Short_vectors_Msk (0xFUL << FPU_MVFR0_Short_vectors_Pos) /*!< MVFR0: Short vectors bits Mask */ + +#define FPU_MVFR0_Square_root_Pos 20U /*!< MVFR0: Square root bits Position */ +#define FPU_MVFR0_Square_root_Msk (0xFUL << FPU_MVFR0_Square_root_Pos) /*!< MVFR0: Square root bits Mask */ + +#define FPU_MVFR0_Divide_Pos 16U /*!< MVFR0: Divide bits Position */ +#define FPU_MVFR0_Divide_Msk (0xFUL << FPU_MVFR0_Divide_Pos) /*!< MVFR0: Divide bits Mask */ + +#define FPU_MVFR0_FP_excep_trapping_Pos 12U /*!< MVFR0: FP exception trapping bits Position */ +#define FPU_MVFR0_FP_excep_trapping_Msk (0xFUL << FPU_MVFR0_FP_excep_trapping_Pos) /*!< MVFR0: FP exception trapping bits Mask */ + +#define FPU_MVFR0_Double_precision_Pos 8U /*!< MVFR0: Double-precision bits Position */ +#define FPU_MVFR0_Double_precision_Msk (0xFUL << FPU_MVFR0_Double_precision_Pos) /*!< MVFR0: Double-precision bits Mask */ + +#define FPU_MVFR0_Single_precision_Pos 4U /*!< MVFR0: Single-precision bits Position */ +#define FPU_MVFR0_Single_precision_Msk (0xFUL << FPU_MVFR0_Single_precision_Pos) /*!< MVFR0: Single-precision bits Mask */ + +#define FPU_MVFR0_A_SIMD_registers_Pos 0U /*!< MVFR0: A_SIMD registers bits Position */ +#define FPU_MVFR0_A_SIMD_registers_Msk (0xFUL /*<< FPU_MVFR0_A_SIMD_registers_Pos*/) /*!< MVFR0: A_SIMD registers bits Mask */ + +/* Media and FP Feature Register 1 Definitions */ +#define FPU_MVFR1_FP_fused_MAC_Pos 28U /*!< MVFR1: FP fused MAC bits Position */ +#define FPU_MVFR1_FP_fused_MAC_Msk (0xFUL << FPU_MVFR1_FP_fused_MAC_Pos) /*!< MVFR1: FP fused MAC bits Mask */ + +#define FPU_MVFR1_FP_HPFP_Pos 24U /*!< MVFR1: FP HPFP bits Position */ +#define FPU_MVFR1_FP_HPFP_Msk (0xFUL << FPU_MVFR1_FP_HPFP_Pos) /*!< MVFR1: FP HPFP bits Mask */ + +#define FPU_MVFR1_D_NaN_mode_Pos 4U /*!< MVFR1: D_NaN mode bits Position */ +#define FPU_MVFR1_D_NaN_mode_Msk (0xFUL << FPU_MVFR1_D_NaN_mode_Pos) /*!< MVFR1: D_NaN mode bits Mask */ + +#define FPU_MVFR1_FtZ_mode_Pos 0U /*!< MVFR1: FtZ mode bits Position */ +#define FPU_MVFR1_FtZ_mode_Msk (0xFUL /*<< FPU_MVFR1_FtZ_mode_Pos*/) /*!< MVFR1: FtZ mode bits Mask */ + +/*@} end of group CMSIS_FPU */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** + \brief Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ + uint32_t RESERVED4[1U]; + __IOM uint32_t DAUTHCTRL; /*!< Offset: 0x014 (R/W) Debug Authentication Control Register */ + __IOM uint32_t DSCSR; /*!< Offset: 0x018 (R/W) Debug Security Control and Status Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register Definitions */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESTART_ST_Pos 26U /*!< CoreDebug DHCSR: S_RESTART_ST Position */ +#define CoreDebug_DHCSR_S_RESTART_ST_Msk (1UL << CoreDebug_DHCSR_S_RESTART_ST_Pos) /*!< CoreDebug DHCSR: S_RESTART_ST Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5U /*!< CoreDebug DHCSR: C_SNAPSTALL Position */ +#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register Definitions */ +#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register Definitions */ +#define CoreDebug_DEMCR_TRCENA_Pos 24U /*!< CoreDebug DEMCR: TRCENA Position */ +#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< CoreDebug DEMCR: TRCENA Mask */ + +#define CoreDebug_DEMCR_MON_REQ_Pos 19U /*!< CoreDebug DEMCR: MON_REQ Position */ +#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< CoreDebug DEMCR: MON_REQ Mask */ + +#define CoreDebug_DEMCR_MON_STEP_Pos 18U /*!< CoreDebug DEMCR: MON_STEP Position */ +#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< CoreDebug DEMCR: MON_STEP Mask */ + +#define CoreDebug_DEMCR_MON_PEND_Pos 17U /*!< CoreDebug DEMCR: MON_PEND Position */ +#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< CoreDebug DEMCR: MON_PEND Mask */ + +#define CoreDebug_DEMCR_MON_EN_Pos 16U /*!< CoreDebug DEMCR: MON_EN Position */ +#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< CoreDebug DEMCR: MON_EN Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_INTERR_Pos 9U /*!< CoreDebug DEMCR: VC_INTERR Position */ +#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< CoreDebug DEMCR: VC_INTERR Mask */ + +#define CoreDebug_DEMCR_VC_BUSERR_Pos 8U /*!< CoreDebug DEMCR: VC_BUSERR Position */ +#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< CoreDebug DEMCR: VC_BUSERR Mask */ + +#define CoreDebug_DEMCR_VC_STATERR_Pos 7U /*!< CoreDebug DEMCR: VC_STATERR Position */ +#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< CoreDebug DEMCR: VC_STATERR Mask */ + +#define CoreDebug_DEMCR_VC_CHKERR_Pos 6U /*!< CoreDebug DEMCR: VC_CHKERR Position */ +#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< CoreDebug DEMCR: VC_CHKERR Mask */ + +#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5U /*!< CoreDebug DEMCR: VC_NOCPERR Position */ +#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< CoreDebug DEMCR: VC_NOCPERR Mask */ + +#define CoreDebug_DEMCR_VC_MMERR_Pos 4U /*!< CoreDebug DEMCR: VC_MMERR Position */ +#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< CoreDebug DEMCR: VC_MMERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ + +/* Debug Authentication Control Register Definitions */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos 3U /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Position */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos) /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Mask */ + +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos 2U /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Msk (1UL << CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos) /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Mask */ + +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Pos 1U /*!< CoreDebug DAUTHCTRL: INTSPIDEN Position */ +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPIDEN_Pos) /*!< CoreDebug DAUTHCTRL: INTSPIDEN Mask */ + +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Pos 0U /*!< CoreDebug DAUTHCTRL: SPIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Msk (1UL /*<< CoreDebug_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< CoreDebug DAUTHCTRL: SPIDENSEL Mask */ + +/* Debug Security Control and Status Register Definitions */ +#define CoreDebug_DSCSR_CDS_Pos 16U /*!< CoreDebug DSCSR: CDS Position */ +#define CoreDebug_DSCSR_CDS_Msk (1UL << CoreDebug_DSCSR_CDS_Pos) /*!< CoreDebug DSCSR: CDS Mask */ + +#define CoreDebug_DSCSR_SBRSEL_Pos 1U /*!< CoreDebug DSCSR: SBRSEL Position */ +#define CoreDebug_DSCSR_SBRSEL_Msk (1UL << CoreDebug_DSCSR_SBRSEL_Pos) /*!< CoreDebug DSCSR: SBRSEL Mask */ + +#define CoreDebug_DSCSR_SBRSELEN_Pos 0U /*!< CoreDebug DSCSR: SBRSELEN Position */ +#define CoreDebug_DSCSR_SBRSELEN_Msk (1UL /*<< CoreDebug_DSCSR_SBRSELEN_Pos*/) /*!< CoreDebug DSCSR: SBRSELEN Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ + #define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ + #define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ + #define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ + #define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ + #define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */ + #define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ + #define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ + #define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + + #define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ + #define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ + #define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ + #define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ + #define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */ + #define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ + #define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ + #define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE ) /*!< Core Debug configuration struct */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ + #endif + + #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SAU_BASE (SCS_BASE + 0x0DD0UL) /*!< Security Attribution Unit */ + #define SAU ((SAU_Type *) SAU_BASE ) /*!< Security Attribution Unit */ + #endif + + #define FPU_BASE (SCS_BASE + 0x0F30UL) /*!< Floating Point Unit */ + #define FPU ((FPU_Type *) FPU_BASE ) /*!< Floating Point Unit */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SCS_BASE_NS (0xE002E000UL) /*!< System Control Space Base Address (non-secure address space) */ + #define CoreDebug_BASE_NS (0xE002EDF0UL) /*!< Core Debug Base Address (non-secure address space) */ + #define SysTick_BASE_NS (SCS_BASE_NS + 0x0010UL) /*!< SysTick Base Address (non-secure address space) */ + #define NVIC_BASE_NS (SCS_BASE_NS + 0x0100UL) /*!< NVIC Base Address (non-secure address space) */ + #define SCB_BASE_NS (SCS_BASE_NS + 0x0D00UL) /*!< System Control Block Base Address (non-secure address space) */ + + #define SCnSCB_NS ((SCnSCB_Type *) SCS_BASE_NS ) /*!< System control Register not in SCB(non-secure address space) */ + #define SCB_NS ((SCB_Type *) SCB_BASE_NS ) /*!< SCB configuration struct (non-secure address space) */ + #define SysTick_NS ((SysTick_Type *) SysTick_BASE_NS ) /*!< SysTick configuration struct (non-secure address space) */ + #define NVIC_NS ((NVIC_Type *) NVIC_BASE_NS ) /*!< NVIC configuration struct (non-secure address space) */ + #define CoreDebug_NS ((CoreDebug_Type *) CoreDebug_BASE_NS) /*!< Core Debug configuration struct (non-secure address space) */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE_NS (SCS_BASE_NS + 0x0D90UL) /*!< Memory Protection Unit (non-secure address space) */ + #define MPU_NS ((MPU_Type *) MPU_BASE_NS ) /*!< Memory Protection Unit (non-secure address space) */ + #endif + + #define FPU_BASE_NS (SCS_BASE_NS + 0x0F30UL) /*!< Floating Point Unit (non-secure address space) */ + #define FPU_NS ((FPU_Type *) FPU_BASE_NS ) /*!< Floating Point Unit (non-secure address space) */ + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Debug Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ + #define NVIC_GetActive __NVIC_GetActive + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* Special LR values for Secure/Non-Secure call handling and exception handling */ + +/* Function Return Payload (from ARMv8-M Architecture Reference Manual) LR value on entry from Secure BLXNS */ +#define FNC_RETURN (0xFEFFFFFFUL) /* bit [0] ignored when processing a branch */ + +/* The following EXC_RETURN mask values are used to evaluate the LR on exception entry */ +#define EXC_RETURN_PREFIX (0xFF000000UL) /* bits [31:24] set to indicate an EXC_RETURN value */ +#define EXC_RETURN_S (0x00000040UL) /* bit [6] stack used to push registers: 0=Non-secure 1=Secure */ +#define EXC_RETURN_DCRS (0x00000020UL) /* bit [5] stacking rules for called registers: 0=skipped 1=saved */ +#define EXC_RETURN_FTYPE (0x00000010UL) /* bit [4] allocate stack for floating-point context: 0=done 1=skipped */ +#define EXC_RETURN_MODE (0x00000008UL) /* bit [3] processor mode for return: 0=Handler mode 1=Thread mode */ +#define EXC_RETURN_SPSEL (0x00000004UL) /* bit [2] stack pointer used to restore context: 0=MSP 1=PSP */ +#define EXC_RETURN_ES (0x00000001UL) /* bit [0] security state exception was taken to: 0=Non-secure 1=Secure */ + +/* Integrity Signature (from ARMv8-M Architecture Reference Manual) for exception context stacking */ +#if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) /* Value for processors with floating-point extension: */ +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125AUL) /* bit [0] SFTC must match LR bit[4] EXC_RETURN_FTYPE */ +#else +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125BUL) /* Value for processors without floating-point extension */ +#endif + + +/** + \brief Set Priority Grouping + \details Sets the priority grouping field using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + SCB->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping + \details Reads the priority grouping field from the NVIC Interrupt Controller. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void) +{ + return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + __COMPILER_BARRIER(); + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __COMPILER_BARRIER(); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Get Interrupt Target State + \details Reads the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + \return 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_GetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Target State + \details Sets the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_SetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] |= ((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Clear Interrupt Target State + \details Clears the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_ClearTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] &= ~((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IPR[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC->IPR[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; + __DSB(); +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + SCB_AIRCR_SYSRESETREQ_Msk ); /* Keep priority group unchanged */ + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Set Priority Grouping (non-secure) + \details Sets the non-secure priority grouping field when in secure state using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void TZ_NVIC_SetPriorityGrouping_NS(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB_NS->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + SCB_NS->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping (non-secure) + \details Reads the priority grouping field from the non-secure NVIC when in secure state. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPriorityGrouping_NS(void) +{ + return ((uint32_t)((SCB_NS->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt (non-secure) + \details Enables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_EnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status (non-secure) + \details Returns a device specific interrupt enable status from the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetEnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt (non-secure) + \details Disables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_DisableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Pending Interrupt (non-secure) + \details Reads the NVIC pending register in the non-secure NVIC when in secure state and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt (non-secure) + \details Sets the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_SetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt (non-secure) + \details Clears the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_ClearPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt (non-secure) + \details Reads the active register in non-secure NVIC when in secure state and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetActive_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority (non-secure) + \details Sets the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every non-secure processor exception. + */ +__STATIC_INLINE void TZ_NVIC_SetPriority_NS(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->IPR[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority (non-secure) + \details Reads the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPriority_NS(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC_NS->IPR[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) &&(__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_NVICFunctions */ + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv8.h" + +#endif + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + uint32_t mvfr0; + + mvfr0 = FPU->MVFR0; + if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x220U) + { + return 2U; /* Double + Single precision FPU */ + } + else if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x020U) + { + return 1U; /* Single precision FPU */ + } + else + { + return 0U; /* No FPU */ + } +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ########################## SAU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SAUFunctions SAU Functions + \brief Functions that configure the SAU. + @{ + */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + +/** + \brief Enable SAU + \details Enables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Enable(void) +{ + SAU->CTRL |= (SAU_CTRL_ENABLE_Msk); +} + + + +/** + \brief Disable SAU + \details Disables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Disable(void) +{ + SAU->CTRL &= ~(SAU_CTRL_ENABLE_Msk); +} + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_SAUFunctions */ + + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief System Tick Configuration (non-secure) + \details Initializes the non-secure System Timer and its interrupt when in secure state, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function TZ_SysTick_Config_NS is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + + */ +__STATIC_INLINE uint32_t TZ_SysTick_Config_NS(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick_NS->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + TZ_NVIC_SetPriority_NS (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick_NS->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick_NS->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + +/* ##################################### Debug In/Output function ########################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_core_DebugFunctions ITM Functions + \brief Functions that access the ITM debug interface. + @{ + */ + +extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */ +#define ITM_RXBUFFER_EMPTY ((int32_t)0x5AA55AA5U) /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */ + + +/** + \brief ITM Send Character + \details Transmits a character via the ITM channel 0, and + \li Just returns when no debugger is connected that has booked the output. + \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted. + \param [in] ch Character to transmit. + \returns Character to transmit. + */ +__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch) +{ + if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) && /* ITM enabled */ + ((ITM->TER & 1UL ) != 0UL) ) /* ITM Port #0 enabled */ + { + while (ITM->PORT[0U].u32 == 0UL) + { + __NOP(); + } + ITM->PORT[0U].u8 = (uint8_t)ch; + } + return (ch); +} + + +/** + \brief ITM Receive Character + \details Inputs a character via the external variable \ref ITM_RxBuffer. + \return Received character. + \return -1 No character pending. + */ +__STATIC_INLINE int32_t ITM_ReceiveChar (void) +{ + int32_t ch = -1; /* no character available */ + + if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) + { + ch = ITM_RxBuffer; + ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ + } + + return (ch); +} + + +/** + \brief ITM Check Character + \details Checks whether a character is pending for reading in the variable \ref ITM_RxBuffer. + \return 0 No character available. + \return 1 Character available. + */ +__STATIC_INLINE int32_t ITM_CheckChar (void) +{ + + if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) + { + return (0); /* no character available */ + } + else + { + return (1); /* character available */ + } +} + +/*@} end of CMSIS_core_DebugFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM35P_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/firmware/Drivers/CMSIS/Include/core_cm4.h b/firmware/Drivers/CMSIS/Include/core_cm4.h new file mode 100644 index 0000000..12c023b --- /dev/null +++ b/firmware/Drivers/CMSIS/Include/core_cm4.h @@ -0,0 +1,2124 @@ +/**************************************************************************//** + * @file core_cm4.h + * @brief CMSIS Cortex-M4 Core Peripheral Access Layer Header File + * @version V5.1.0 + * @date 13. March 2019 + ******************************************************************************/ +/* + * Copyright (c) 2009-2019 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_CM4_H_GENERIC +#define __CORE_CM4_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup Cortex_M4 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS CM4 definitions */ +#define __CM4_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM4_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM4_CMSIS_VERSION ((__CM4_CMSIS_VERSION_MAIN << 16U) | \ + __CM4_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (4U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + For this, __FPU_PRESENT has to be checked prior to making use of FPU specific registers and functions. +*/ +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_FP + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM4_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM4_H_DEPENDANT +#define __CORE_CM4_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM4_REV + #define __CM4_REV 0x0000U + #warning "__CM4_REV not defined in device header file; using default!" + #endif + + #ifndef __FPU_PRESENT + #define __FPU_PRESENT 0U + #warning "__FPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 3U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group Cortex_M4 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + - Core FPU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:16; /*!< bit: 0..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:7; /*!< bit: 20..26 Reserved */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + +#define APSR_Q_Pos 27U /*!< APSR: Q Position */ +#define APSR_Q_Msk (1UL << APSR_Q_Pos) /*!< APSR: Q Mask */ + +#define APSR_GE_Pos 16U /*!< APSR: GE Position */ +#define APSR_GE_Msk (0xFUL << APSR_GE_Pos) /*!< APSR: GE Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:1; /*!< bit: 9 Reserved */ + uint32_t ICI_IT_1:6; /*!< bit: 10..15 ICI/IT part 1 */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:4; /*!< bit: 20..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit */ + uint32_t ICI_IT_2:2; /*!< bit: 25..26 ICI/IT part 2 */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_Q_Pos 27U /*!< xPSR: Q Position */ +#define xPSR_Q_Msk (1UL << xPSR_Q_Pos) /*!< xPSR: Q Mask */ + +#define xPSR_ICI_IT_2_Pos 25U /*!< xPSR: ICI/IT part 2 Position */ +#define xPSR_ICI_IT_2_Msk (3UL << xPSR_ICI_IT_2_Pos) /*!< xPSR: ICI/IT part 2 Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_GE_Pos 16U /*!< xPSR: GE Position */ +#define xPSR_GE_Msk (0xFUL << xPSR_GE_Pos) /*!< xPSR: GE Mask */ + +#define xPSR_ICI_IT_1_Pos 10U /*!< xPSR: ICI/IT part 1 Position */ +#define xPSR_ICI_IT_1_Msk (0x3FUL << xPSR_ICI_IT_1_Pos) /*!< xPSR: ICI/IT part 1 Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ + uint32_t FPCA:1; /*!< bit: 2 FP extension active flag */ + uint32_t _reserved0:29; /*!< bit: 3..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_FPCA_Pos 2U /*!< CONTROL: FPCA Position */ +#define CONTROL_FPCA_Msk (1UL << CONTROL_FPCA_Pos) /*!< CONTROL: FPCA Mask */ + +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[8U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[24U]; + __IOM uint32_t ICER[8U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RESERVED1[24U]; + __IOM uint32_t ISPR[8U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[24U]; + __IOM uint32_t ICPR[8U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[24U]; + __IOM uint32_t IABR[8U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[56U]; + __IOM uint8_t IP[240U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED5[644U]; + __OM uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */ +} NVIC_Type; + +/* Software Triggered Interrupt Register Definitions */ +#define NVIC_STIR_INTID_Pos 0U /*!< STIR: INTLINESNUM Position */ +#define NVIC_STIR_INTID_Msk (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/) /*!< STIR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + __IOM uint8_t SHP[12U]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + __IOM uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */ + __IOM uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ + __IOM uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ + __IOM uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */ + __IOM uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ + __IOM uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */ + __IM uint32_t PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + __IM uint32_t DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + __IM uint32_t ADR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __IM uint32_t MMFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __IM uint32_t ISAR[5U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + uint32_t RESERVED0[5U]; + __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_NMIPENDSET_Pos 31U /*!< SCB ICSR: NMIPENDSET Position */ +#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Vector Table Offset Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_PRIGROUP_Pos 8U /*!< SCB AIRCR: PRIGROUP Position */ +#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +#define SCB_AIRCR_VECTRESET_Pos 0U /*!< SCB AIRCR: VECTRESET Position */ +#define SCB_AIRCR_VECTRESET_Msk (1UL /*<< SCB_AIRCR_VECTRESET_Pos*/) /*!< SCB AIRCR: VECTRESET Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_STKALIGN_Pos 9U /*!< SCB CCR: STKALIGN Position */ +#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +#define SCB_CCR_NONBASETHRDENA_Pos 0U /*!< SCB CCR: NONBASETHRDENA Position */ +#define SCB_CCR_NONBASETHRDENA_Msk (1UL /*<< SCB_CCR_NONBASETHRDENA_Pos*/) /*!< SCB CCR: NONBASETHRDENA Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_USGFAULTENA_Pos 18U /*!< SCB SHCSR: USGFAULTENA Position */ +#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ + +#define SCB_SHCSR_BUSFAULTENA_Pos 17U /*!< SCB SHCSR: BUSFAULTENA Position */ +#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ + +#define SCB_SHCSR_MEMFAULTENA_Pos 16U /*!< SCB SHCSR: MEMFAULTENA Position */ +#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_BUSFAULTPENDED_Pos 14U /*!< SCB SHCSR: BUSFAULTPENDED Position */ +#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ + +#define SCB_SHCSR_MEMFAULTPENDED_Pos 13U /*!< SCB SHCSR: MEMFAULTPENDED Position */ +#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ + +#define SCB_SHCSR_USGFAULTPENDED_Pos 12U /*!< SCB SHCSR: USGFAULTPENDED Position */ +#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_MONITORACT_Pos 8U /*!< SCB SHCSR: MONITORACT Position */ +#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_USGFAULTACT_Pos 3U /*!< SCB SHCSR: USGFAULTACT Position */ +#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ + +#define SCB_SHCSR_BUSFAULTACT_Pos 1U /*!< SCB SHCSR: BUSFAULTACT Position */ +#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ + +#define SCB_SHCSR_MEMFAULTACT_Pos 0U /*!< SCB SHCSR: MEMFAULTACT Position */ +#define SCB_SHCSR_MEMFAULTACT_Msk (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/) /*!< SCB SHCSR: MEMFAULTACT Mask */ + +/* SCB Configurable Fault Status Register Definitions */ +#define SCB_CFSR_USGFAULTSR_Pos 16U /*!< SCB CFSR: Usage Fault Status Register Position */ +#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ + +#define SCB_CFSR_BUSFAULTSR_Pos 8U /*!< SCB CFSR: Bus Fault Status Register Position */ +#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ + +#define SCB_CFSR_MEMFAULTSR_Pos 0U /*!< SCB CFSR: Memory Manage Fault Status Register Position */ +#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ + +/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_MMARVALID_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 7U) /*!< SCB CFSR (MMFSR): MMARVALID Position */ +#define SCB_CFSR_MMARVALID_Msk (1UL << SCB_CFSR_MMARVALID_Pos) /*!< SCB CFSR (MMFSR): MMARVALID Mask */ + +#define SCB_CFSR_MLSPERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 5U) /*!< SCB CFSR (MMFSR): MLSPERR Position */ +#define SCB_CFSR_MLSPERR_Msk (1UL << SCB_CFSR_MLSPERR_Pos) /*!< SCB CFSR (MMFSR): MLSPERR Mask */ + +#define SCB_CFSR_MSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 4U) /*!< SCB CFSR (MMFSR): MSTKERR Position */ +#define SCB_CFSR_MSTKERR_Msk (1UL << SCB_CFSR_MSTKERR_Pos) /*!< SCB CFSR (MMFSR): MSTKERR Mask */ + +#define SCB_CFSR_MUNSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 3U) /*!< SCB CFSR (MMFSR): MUNSTKERR Position */ +#define SCB_CFSR_MUNSTKERR_Msk (1UL << SCB_CFSR_MUNSTKERR_Pos) /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */ + +#define SCB_CFSR_DACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 1U) /*!< SCB CFSR (MMFSR): DACCVIOL Position */ +#define SCB_CFSR_DACCVIOL_Msk (1UL << SCB_CFSR_DACCVIOL_Pos) /*!< SCB CFSR (MMFSR): DACCVIOL Mask */ + +#define SCB_CFSR_IACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 0U) /*!< SCB CFSR (MMFSR): IACCVIOL Position */ +#define SCB_CFSR_IACCVIOL_Msk (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/) /*!< SCB CFSR (MMFSR): IACCVIOL Mask */ + +/* BusFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_BFARVALID_Pos (SCB_CFSR_BUSFAULTSR_Pos + 7U) /*!< SCB CFSR (BFSR): BFARVALID Position */ +#define SCB_CFSR_BFARVALID_Msk (1UL << SCB_CFSR_BFARVALID_Pos) /*!< SCB CFSR (BFSR): BFARVALID Mask */ + +#define SCB_CFSR_LSPERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 5U) /*!< SCB CFSR (BFSR): LSPERR Position */ +#define SCB_CFSR_LSPERR_Msk (1UL << SCB_CFSR_LSPERR_Pos) /*!< SCB CFSR (BFSR): LSPERR Mask */ + +#define SCB_CFSR_STKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 4U) /*!< SCB CFSR (BFSR): STKERR Position */ +#define SCB_CFSR_STKERR_Msk (1UL << SCB_CFSR_STKERR_Pos) /*!< SCB CFSR (BFSR): STKERR Mask */ + +#define SCB_CFSR_UNSTKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 3U) /*!< SCB CFSR (BFSR): UNSTKERR Position */ +#define SCB_CFSR_UNSTKERR_Msk (1UL << SCB_CFSR_UNSTKERR_Pos) /*!< SCB CFSR (BFSR): UNSTKERR Mask */ + +#define SCB_CFSR_IMPRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 2U) /*!< SCB CFSR (BFSR): IMPRECISERR Position */ +#define SCB_CFSR_IMPRECISERR_Msk (1UL << SCB_CFSR_IMPRECISERR_Pos) /*!< SCB CFSR (BFSR): IMPRECISERR Mask */ + +#define SCB_CFSR_PRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 1U) /*!< SCB CFSR (BFSR): PRECISERR Position */ +#define SCB_CFSR_PRECISERR_Msk (1UL << SCB_CFSR_PRECISERR_Pos) /*!< SCB CFSR (BFSR): PRECISERR Mask */ + +#define SCB_CFSR_IBUSERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 0U) /*!< SCB CFSR (BFSR): IBUSERR Position */ +#define SCB_CFSR_IBUSERR_Msk (1UL << SCB_CFSR_IBUSERR_Pos) /*!< SCB CFSR (BFSR): IBUSERR Mask */ + +/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_DIVBYZERO_Pos (SCB_CFSR_USGFAULTSR_Pos + 9U) /*!< SCB CFSR (UFSR): DIVBYZERO Position */ +#define SCB_CFSR_DIVBYZERO_Msk (1UL << SCB_CFSR_DIVBYZERO_Pos) /*!< SCB CFSR (UFSR): DIVBYZERO Mask */ + +#define SCB_CFSR_UNALIGNED_Pos (SCB_CFSR_USGFAULTSR_Pos + 8U) /*!< SCB CFSR (UFSR): UNALIGNED Position */ +#define SCB_CFSR_UNALIGNED_Msk (1UL << SCB_CFSR_UNALIGNED_Pos) /*!< SCB CFSR (UFSR): UNALIGNED Mask */ + +#define SCB_CFSR_NOCP_Pos (SCB_CFSR_USGFAULTSR_Pos + 3U) /*!< SCB CFSR (UFSR): NOCP Position */ +#define SCB_CFSR_NOCP_Msk (1UL << SCB_CFSR_NOCP_Pos) /*!< SCB CFSR (UFSR): NOCP Mask */ + +#define SCB_CFSR_INVPC_Pos (SCB_CFSR_USGFAULTSR_Pos + 2U) /*!< SCB CFSR (UFSR): INVPC Position */ +#define SCB_CFSR_INVPC_Msk (1UL << SCB_CFSR_INVPC_Pos) /*!< SCB CFSR (UFSR): INVPC Mask */ + +#define SCB_CFSR_INVSTATE_Pos (SCB_CFSR_USGFAULTSR_Pos + 1U) /*!< SCB CFSR (UFSR): INVSTATE Position */ +#define SCB_CFSR_INVSTATE_Msk (1UL << SCB_CFSR_INVSTATE_Pos) /*!< SCB CFSR (UFSR): INVSTATE Mask */ + +#define SCB_CFSR_UNDEFINSTR_Pos (SCB_CFSR_USGFAULTSR_Pos + 0U) /*!< SCB CFSR (UFSR): UNDEFINSTR Position */ +#define SCB_CFSR_UNDEFINSTR_Msk (1UL << SCB_CFSR_UNDEFINSTR_Pos) /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */ + +/* SCB Hard Fault Status Register Definitions */ +#define SCB_HFSR_DEBUGEVT_Pos 31U /*!< SCB HFSR: DEBUGEVT Position */ +#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ + +#define SCB_HFSR_FORCED_Pos 30U /*!< SCB HFSR: FORCED Position */ +#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ + +#define SCB_HFSR_VECTTBL_Pos 1U /*!< SCB HFSR: VECTTBL Position */ +#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ + +/* SCB Debug Fault Status Register Definitions */ +#define SCB_DFSR_EXTERNAL_Pos 4U /*!< SCB DFSR: EXTERNAL Position */ +#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ + +#define SCB_DFSR_VCATCH_Pos 3U /*!< SCB DFSR: VCATCH Position */ +#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ + +#define SCB_DFSR_DWTTRAP_Pos 2U /*!< SCB DFSR: DWTTRAP Position */ +#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ + +#define SCB_DFSR_BKPT_Pos 1U /*!< SCB DFSR: BKPT Position */ +#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ + +#define SCB_DFSR_HALTED_Pos 0U /*!< SCB DFSR: HALTED Position */ +#define SCB_DFSR_HALTED_Msk (1UL /*<< SCB_DFSR_HALTED_Pos*/) /*!< SCB DFSR: HALTED Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** + \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IM uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */ + __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ +} SCnSCB_Type; + +/* Interrupt Controller Type Register Definitions */ +#define SCnSCB_ICTR_INTLINESNUM_Pos 0U /*!< ICTR: INTLINESNUM Position */ +#define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/) /*!< ICTR: INTLINESNUM Mask */ + +/* Auxiliary Control Register Definitions */ +#define SCnSCB_ACTLR_DISOOFP_Pos 9U /*!< ACTLR: DISOOFP Position */ +#define SCnSCB_ACTLR_DISOOFP_Msk (1UL << SCnSCB_ACTLR_DISOOFP_Pos) /*!< ACTLR: DISOOFP Mask */ + +#define SCnSCB_ACTLR_DISFPCA_Pos 8U /*!< ACTLR: DISFPCA Position */ +#define SCnSCB_ACTLR_DISFPCA_Msk (1UL << SCnSCB_ACTLR_DISFPCA_Pos) /*!< ACTLR: DISFPCA Mask */ + +#define SCnSCB_ACTLR_DISFOLD_Pos 2U /*!< ACTLR: DISFOLD Position */ +#define SCnSCB_ACTLR_DISFOLD_Msk (1UL << SCnSCB_ACTLR_DISFOLD_Pos) /*!< ACTLR: DISFOLD Mask */ + +#define SCnSCB_ACTLR_DISDEFWBUF_Pos 1U /*!< ACTLR: DISDEFWBUF Position */ +#define SCnSCB_ACTLR_DISDEFWBUF_Msk (1UL << SCnSCB_ACTLR_DISDEFWBUF_Pos) /*!< ACTLR: DISDEFWBUF Mask */ + +#define SCnSCB_ACTLR_DISMCYCINT_Pos 0U /*!< ACTLR: DISMCYCINT Position */ +#define SCnSCB_ACTLR_DISMCYCINT_Msk (1UL /*<< SCnSCB_ACTLR_DISMCYCINT_Pos*/) /*!< ACTLR: DISMCYCINT Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_ITM Instrumentation Trace Macrocell (ITM) + \brief Type definitions for the Instrumentation Trace Macrocell (ITM) + @{ + */ + +/** + \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). + */ +typedef struct +{ + __OM union + { + __OM uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ + __OM uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ + __OM uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ + } PORT [32U]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ + uint32_t RESERVED0[864U]; + __IOM uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ + uint32_t RESERVED1[15U]; + __IOM uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ + uint32_t RESERVED2[15U]; + __IOM uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ + uint32_t RESERVED3[32U]; + uint32_t RESERVED4[43U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */ + uint32_t RESERVED5[6U]; + __IM uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Register #4 */ + __IM uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Register #5 */ + __IM uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Register #6 */ + __IM uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Register #7 */ + __IM uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Register #0 */ + __IM uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Register #1 */ + __IM uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Register #2 */ + __IM uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Register #3 */ + __IM uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Register #0 */ + __IM uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Register #1 */ + __IM uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Register #2 */ + __IM uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Register #3 */ +} ITM_Type; + +/* ITM Trace Privilege Register Definitions */ +#define ITM_TPR_PRIVMASK_Pos 0U /*!< ITM TPR: PRIVMASK Position */ +#define ITM_TPR_PRIVMASK_Msk (0xFFFFFFFFUL /*<< ITM_TPR_PRIVMASK_Pos*/) /*!< ITM TPR: PRIVMASK Mask */ + +/* ITM Trace Control Register Definitions */ +#define ITM_TCR_BUSY_Pos 23U /*!< ITM TCR: BUSY Position */ +#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ + +#define ITM_TCR_TraceBusID_Pos 16U /*!< ITM TCR: ATBID Position */ +#define ITM_TCR_TraceBusID_Msk (0x7FUL << ITM_TCR_TraceBusID_Pos) /*!< ITM TCR: ATBID Mask */ + +#define ITM_TCR_GTSFREQ_Pos 10U /*!< ITM TCR: Global timestamp frequency Position */ +#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */ + +#define ITM_TCR_TSPrescale_Pos 8U /*!< ITM TCR: TSPrescale Position */ +#define ITM_TCR_TSPrescale_Msk (3UL << ITM_TCR_TSPrescale_Pos) /*!< ITM TCR: TSPrescale Mask */ + +#define ITM_TCR_SWOENA_Pos 4U /*!< ITM TCR: SWOENA Position */ +#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ + +#define ITM_TCR_DWTENA_Pos 3U /*!< ITM TCR: DWTENA Position */ +#define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ + +#define ITM_TCR_SYNCENA_Pos 2U /*!< ITM TCR: SYNCENA Position */ +#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ + +#define ITM_TCR_TSENA_Pos 1U /*!< ITM TCR: TSENA Position */ +#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ + +#define ITM_TCR_ITMENA_Pos 0U /*!< ITM TCR: ITM Enable bit Position */ +#define ITM_TCR_ITMENA_Msk (1UL /*<< ITM_TCR_ITMENA_Pos*/) /*!< ITM TCR: ITM Enable bit Mask */ + +/* ITM Lock Status Register Definitions */ +#define ITM_LSR_ByteAcc_Pos 2U /*!< ITM LSR: ByteAcc Position */ +#define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ + +#define ITM_LSR_Access_Pos 1U /*!< ITM LSR: Access Position */ +#define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ + +#define ITM_LSR_Present_Pos 0U /*!< ITM LSR: Present Position */ +#define ITM_LSR_Present_Msk (1UL /*<< ITM_LSR_Present_Pos*/) /*!< ITM LSR: Present Mask */ + +/*@}*/ /* end of group CMSIS_ITM */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + __IOM uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */ + __IOM uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */ + __IOM uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Register */ + __IOM uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */ + __IOM uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */ + __IOM uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Register */ + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + __IOM uint32_t MASK0; /*!< Offset: 0x024 (R/W) Mask Register 0 */ + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED0[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + __IOM uint32_t MASK1; /*!< Offset: 0x034 (R/W) Mask Register 1 */ + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + __IOM uint32_t MASK2; /*!< Offset: 0x044 (R/W) Mask Register 2 */ + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + __IOM uint32_t MASK3; /*!< Offset: 0x054 (R/W) Mask Register 3 */ + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +#define DWT_CTRL_CYCEVTENA_Pos 22U /*!< DWT CTRL: CYCEVTENA Position */ +#define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTRL: CYCEVTENA Mask */ + +#define DWT_CTRL_FOLDEVTENA_Pos 21U /*!< DWT CTRL: FOLDEVTENA Position */ +#define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTRL: FOLDEVTENA Mask */ + +#define DWT_CTRL_LSUEVTENA_Pos 20U /*!< DWT CTRL: LSUEVTENA Position */ +#define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTRL: LSUEVTENA Mask */ + +#define DWT_CTRL_SLEEPEVTENA_Pos 19U /*!< DWT CTRL: SLEEPEVTENA Position */ +#define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTRL: SLEEPEVTENA Mask */ + +#define DWT_CTRL_EXCEVTENA_Pos 18U /*!< DWT CTRL: EXCEVTENA Position */ +#define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTRL: EXCEVTENA Mask */ + +#define DWT_CTRL_CPIEVTENA_Pos 17U /*!< DWT CTRL: CPIEVTENA Position */ +#define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTRL: CPIEVTENA Mask */ + +#define DWT_CTRL_EXCTRCENA_Pos 16U /*!< DWT CTRL: EXCTRCENA Position */ +#define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTRL: EXCTRCENA Mask */ + +#define DWT_CTRL_PCSAMPLENA_Pos 12U /*!< DWT CTRL: PCSAMPLENA Position */ +#define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTRL: PCSAMPLENA Mask */ + +#define DWT_CTRL_SYNCTAP_Pos 10U /*!< DWT CTRL: SYNCTAP Position */ +#define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTRL: SYNCTAP Mask */ + +#define DWT_CTRL_CYCTAP_Pos 9U /*!< DWT CTRL: CYCTAP Position */ +#define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTRL: CYCTAP Mask */ + +#define DWT_CTRL_POSTINIT_Pos 5U /*!< DWT CTRL: POSTINIT Position */ +#define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTRL: POSTINIT Mask */ + +#define DWT_CTRL_POSTPRESET_Pos 1U /*!< DWT CTRL: POSTPRESET Position */ +#define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTRL: POSTPRESET Mask */ + +#define DWT_CTRL_CYCCNTENA_Pos 0U /*!< DWT CTRL: CYCCNTENA Position */ +#define DWT_CTRL_CYCCNTENA_Msk (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/) /*!< DWT CTRL: CYCCNTENA Mask */ + +/* DWT CPI Count Register Definitions */ +#define DWT_CPICNT_CPICNT_Pos 0U /*!< DWT CPICNT: CPICNT Position */ +#define DWT_CPICNT_CPICNT_Msk (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/) /*!< DWT CPICNT: CPICNT Mask */ + +/* DWT Exception Overhead Count Register Definitions */ +#define DWT_EXCCNT_EXCCNT_Pos 0U /*!< DWT EXCCNT: EXCCNT Position */ +#define DWT_EXCCNT_EXCCNT_Msk (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/) /*!< DWT EXCCNT: EXCCNT Mask */ + +/* DWT Sleep Count Register Definitions */ +#define DWT_SLEEPCNT_SLEEPCNT_Pos 0U /*!< DWT SLEEPCNT: SLEEPCNT Position */ +#define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/) /*!< DWT SLEEPCNT: SLEEPCNT Mask */ + +/* DWT LSU Count Register Definitions */ +#define DWT_LSUCNT_LSUCNT_Pos 0U /*!< DWT LSUCNT: LSUCNT Position */ +#define DWT_LSUCNT_LSUCNT_Msk (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/) /*!< DWT LSUCNT: LSUCNT Mask */ + +/* DWT Folded-instruction Count Register Definitions */ +#define DWT_FOLDCNT_FOLDCNT_Pos 0U /*!< DWT FOLDCNT: FOLDCNT Position */ +#define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/) /*!< DWT FOLDCNT: FOLDCNT Mask */ + +/* DWT Comparator Mask Register Definitions */ +#define DWT_MASK_MASK_Pos 0U /*!< DWT MASK: MASK Position */ +#define DWT_MASK_MASK_Msk (0x1FUL /*<< DWT_MASK_MASK_Pos*/) /*!< DWT MASK: MASK Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVADDR1_Pos 16U /*!< DWT FUNCTION: DATAVADDR1 Position */ +#define DWT_FUNCTION_DATAVADDR1_Msk (0xFUL << DWT_FUNCTION_DATAVADDR1_Pos) /*!< DWT FUNCTION: DATAVADDR1 Mask */ + +#define DWT_FUNCTION_DATAVADDR0_Pos 12U /*!< DWT FUNCTION: DATAVADDR0 Position */ +#define DWT_FUNCTION_DATAVADDR0_Msk (0xFUL << DWT_FUNCTION_DATAVADDR0_Pos) /*!< DWT FUNCTION: DATAVADDR0 Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_LNK1ENA_Pos 9U /*!< DWT FUNCTION: LNK1ENA Position */ +#define DWT_FUNCTION_LNK1ENA_Msk (0x1UL << DWT_FUNCTION_LNK1ENA_Pos) /*!< DWT FUNCTION: LNK1ENA Mask */ + +#define DWT_FUNCTION_DATAVMATCH_Pos 8U /*!< DWT FUNCTION: DATAVMATCH Position */ +#define DWT_FUNCTION_DATAVMATCH_Msk (0x1UL << DWT_FUNCTION_DATAVMATCH_Pos) /*!< DWT FUNCTION: DATAVMATCH Mask */ + +#define DWT_FUNCTION_CYCMATCH_Pos 7U /*!< DWT FUNCTION: CYCMATCH Position */ +#define DWT_FUNCTION_CYCMATCH_Msk (0x1UL << DWT_FUNCTION_CYCMATCH_Pos) /*!< DWT FUNCTION: CYCMATCH Mask */ + +#define DWT_FUNCTION_EMITRANGE_Pos 5U /*!< DWT FUNCTION: EMITRANGE Position */ +#define DWT_FUNCTION_EMITRANGE_Msk (0x1UL << DWT_FUNCTION_EMITRANGE_Pos) /*!< DWT FUNCTION: EMITRANGE Mask */ + +#define DWT_FUNCTION_FUNCTION_Pos 0U /*!< DWT FUNCTION: FUNCTION Position */ +#define DWT_FUNCTION_FUNCTION_Msk (0xFUL /*<< DWT_FUNCTION_FUNCTION_Pos*/) /*!< DWT FUNCTION: FUNCTION Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Size Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Size Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IM uint32_t FSCR; /*!< Offset: 0x308 (R/ ) Formatter Synchronization Counter Register */ + uint32_t RESERVED3[759U]; + __IM uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER Register */ + __IM uint32_t FIFO0; /*!< Offset: 0xEEC (R/ ) Integration ETM Data */ + __IM uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/ ) ITATBCTR2 */ + uint32_t RESERVED4[1U]; + __IM uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) ITATBCTR0 */ + __IM uint32_t FIFO1; /*!< Offset: 0xEFC (R/ ) Integration ITM Data */ + __IOM uint32_t ITCTRL; /*!< Offset: 0xF00 (R/W) Integration Mode Control */ + uint32_t RESERVED5[39U]; + __IOM uint32_t CLAIMSET; /*!< Offset: 0xFA0 (R/W) Claim tag set */ + __IOM uint32_t CLAIMCLR; /*!< Offset: 0xFA4 (R/W) Claim tag clear */ + uint32_t RESERVED7[8U]; + __IM uint32_t DEVID; /*!< Offset: 0xFC8 (R/ ) TPIU_DEVID */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) TPIU_DEVTYPE */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_PRESCALER_Pos 0U /*!< TPI ACPR: PRESCALER Position */ +#define TPI_ACPR_PRESCALER_Msk (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/) /*!< TPI ACPR: PRESCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */ +#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ + +/* TPI TRIGGER Register Definitions */ +#define TPI_TRIGGER_TRIGGER_Pos 0U /*!< TPI TRIGGER: TRIGGER Position */ +#define TPI_TRIGGER_TRIGGER_Msk (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/) /*!< TPI TRIGGER: TRIGGER Mask */ + +/* TPI Integration ETM Data Register Definitions (FIFO0) */ +#define TPI_FIFO0_ITM_ATVALID_Pos 29U /*!< TPI FIFO0: ITM_ATVALID Position */ +#define TPI_FIFO0_ITM_ATVALID_Msk (0x1UL << TPI_FIFO0_ITM_ATVALID_Pos) /*!< TPI FIFO0: ITM_ATVALID Mask */ + +#define TPI_FIFO0_ITM_bytecount_Pos 27U /*!< TPI FIFO0: ITM_bytecount Position */ +#define TPI_FIFO0_ITM_bytecount_Msk (0x3UL << TPI_FIFO0_ITM_bytecount_Pos) /*!< TPI FIFO0: ITM_bytecount Mask */ + +#define TPI_FIFO0_ETM_ATVALID_Pos 26U /*!< TPI FIFO0: ETM_ATVALID Position */ +#define TPI_FIFO0_ETM_ATVALID_Msk (0x1UL << TPI_FIFO0_ETM_ATVALID_Pos) /*!< TPI FIFO0: ETM_ATVALID Mask */ + +#define TPI_FIFO0_ETM_bytecount_Pos 24U /*!< TPI FIFO0: ETM_bytecount Position */ +#define TPI_FIFO0_ETM_bytecount_Msk (0x3UL << TPI_FIFO0_ETM_bytecount_Pos) /*!< TPI FIFO0: ETM_bytecount Mask */ + +#define TPI_FIFO0_ETM2_Pos 16U /*!< TPI FIFO0: ETM2 Position */ +#define TPI_FIFO0_ETM2_Msk (0xFFUL << TPI_FIFO0_ETM2_Pos) /*!< TPI FIFO0: ETM2 Mask */ + +#define TPI_FIFO0_ETM1_Pos 8U /*!< TPI FIFO0: ETM1 Position */ +#define TPI_FIFO0_ETM1_Msk (0xFFUL << TPI_FIFO0_ETM1_Pos) /*!< TPI FIFO0: ETM1 Mask */ + +#define TPI_FIFO0_ETM0_Pos 0U /*!< TPI FIFO0: ETM0 Position */ +#define TPI_FIFO0_ETM0_Msk (0xFFUL /*<< TPI_FIFO0_ETM0_Pos*/) /*!< TPI FIFO0: ETM0 Mask */ + +/* TPI ITATBCTR2 Register Definitions */ +#define TPI_ITATBCTR2_ATREADY2_Pos 0U /*!< TPI ITATBCTR2: ATREADY2 Position */ +#define TPI_ITATBCTR2_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY2_Pos*/) /*!< TPI ITATBCTR2: ATREADY2 Mask */ + +#define TPI_ITATBCTR2_ATREADY1_Pos 0U /*!< TPI ITATBCTR2: ATREADY1 Position */ +#define TPI_ITATBCTR2_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY1_Pos*/) /*!< TPI ITATBCTR2: ATREADY1 Mask */ + +/* TPI Integration ITM Data Register Definitions (FIFO1) */ +#define TPI_FIFO1_ITM_ATVALID_Pos 29U /*!< TPI FIFO1: ITM_ATVALID Position */ +#define TPI_FIFO1_ITM_ATVALID_Msk (0x1UL << TPI_FIFO1_ITM_ATVALID_Pos) /*!< TPI FIFO1: ITM_ATVALID Mask */ + +#define TPI_FIFO1_ITM_bytecount_Pos 27U /*!< TPI FIFO1: ITM_bytecount Position */ +#define TPI_FIFO1_ITM_bytecount_Msk (0x3UL << TPI_FIFO1_ITM_bytecount_Pos) /*!< TPI FIFO1: ITM_bytecount Mask */ + +#define TPI_FIFO1_ETM_ATVALID_Pos 26U /*!< TPI FIFO1: ETM_ATVALID Position */ +#define TPI_FIFO1_ETM_ATVALID_Msk (0x1UL << TPI_FIFO1_ETM_ATVALID_Pos) /*!< TPI FIFO1: ETM_ATVALID Mask */ + +#define TPI_FIFO1_ETM_bytecount_Pos 24U /*!< TPI FIFO1: ETM_bytecount Position */ +#define TPI_FIFO1_ETM_bytecount_Msk (0x3UL << TPI_FIFO1_ETM_bytecount_Pos) /*!< TPI FIFO1: ETM_bytecount Mask */ + +#define TPI_FIFO1_ITM2_Pos 16U /*!< TPI FIFO1: ITM2 Position */ +#define TPI_FIFO1_ITM2_Msk (0xFFUL << TPI_FIFO1_ITM2_Pos) /*!< TPI FIFO1: ITM2 Mask */ + +#define TPI_FIFO1_ITM1_Pos 8U /*!< TPI FIFO1: ITM1 Position */ +#define TPI_FIFO1_ITM1_Msk (0xFFUL << TPI_FIFO1_ITM1_Pos) /*!< TPI FIFO1: ITM1 Mask */ + +#define TPI_FIFO1_ITM0_Pos 0U /*!< TPI FIFO1: ITM0 Position */ +#define TPI_FIFO1_ITM0_Msk (0xFFUL /*<< TPI_FIFO1_ITM0_Pos*/) /*!< TPI FIFO1: ITM0 Mask */ + +/* TPI ITATBCTR0 Register Definitions */ +#define TPI_ITATBCTR0_ATREADY2_Pos 0U /*!< TPI ITATBCTR0: ATREADY2 Position */ +#define TPI_ITATBCTR0_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY2_Pos*/) /*!< TPI ITATBCTR0: ATREADY2 Mask */ + +#define TPI_ITATBCTR0_ATREADY1_Pos 0U /*!< TPI ITATBCTR0: ATREADY1 Position */ +#define TPI_ITATBCTR0_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY1_Pos*/) /*!< TPI ITATBCTR0: ATREADY1 Mask */ + +/* TPI Integration Mode Control Register Definitions */ +#define TPI_ITCTRL_Mode_Pos 0U /*!< TPI ITCTRL: Mode Position */ +#define TPI_ITCTRL_Mode_Msk (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/) /*!< TPI ITCTRL: Mode Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_MinBufSz_Pos 6U /*!< TPI DEVID: MinBufSz Position */ +#define TPI_DEVID_MinBufSz_Msk (0x7UL << TPI_DEVID_MinBufSz_Pos) /*!< TPI DEVID: MinBufSz Mask */ + +#define TPI_DEVID_AsynClkIn_Pos 5U /*!< TPI DEVID: AsynClkIn Position */ +#define TPI_DEVID_AsynClkIn_Msk (0x1UL << TPI_DEVID_AsynClkIn_Pos) /*!< TPI DEVID: AsynClkIn Mask */ + +#define TPI_DEVID_NrTraceInput_Pos 0U /*!< TPI DEVID: NrTraceInput Position */ +#define TPI_DEVID_NrTraceInput_Msk (0x1FUL /*<< TPI_DEVID_NrTraceInput_Pos*/) /*!< TPI DEVID: NrTraceInput Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region RNRber Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RASR; /*!< Offset: 0x010 (R/W) MPU Region Attribute and Size Register */ + __IOM uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Alias 1 Region Base Address Register */ + __IOM uint32_t RASR_A1; /*!< Offset: 0x018 (R/W) MPU Alias 1 Region Attribute and Size Register */ + __IOM uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Alias 2 Region Base Address Register */ + __IOM uint32_t RASR_A2; /*!< Offset: 0x020 (R/W) MPU Alias 2 Region Attribute and Size Register */ + __IOM uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Alias 3 Region Base Address Register */ + __IOM uint32_t RASR_A3; /*!< Offset: 0x028 (R/W) MPU Alias 3 Region Attribute and Size Register */ +} MPU_Type; + +#define MPU_TYPE_RALIASES 4U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_ADDR_Pos 5U /*!< MPU RBAR: ADDR Position */ +#define MPU_RBAR_ADDR_Msk (0x7FFFFFFUL << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */ + +#define MPU_RBAR_VALID_Pos 4U /*!< MPU RBAR: VALID Position */ +#define MPU_RBAR_VALID_Msk (1UL << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */ + +#define MPU_RBAR_REGION_Pos 0U /*!< MPU RBAR: REGION Position */ +#define MPU_RBAR_REGION_Msk (0xFUL /*<< MPU_RBAR_REGION_Pos*/) /*!< MPU RBAR: REGION Mask */ + +/* MPU Region Attribute and Size Register Definitions */ +#define MPU_RASR_ATTRS_Pos 16U /*!< MPU RASR: MPU Region Attribute field Position */ +#define MPU_RASR_ATTRS_Msk (0xFFFFUL << MPU_RASR_ATTRS_Pos) /*!< MPU RASR: MPU Region Attribute field Mask */ + +#define MPU_RASR_XN_Pos 28U /*!< MPU RASR: ATTRS.XN Position */ +#define MPU_RASR_XN_Msk (1UL << MPU_RASR_XN_Pos) /*!< MPU RASR: ATTRS.XN Mask */ + +#define MPU_RASR_AP_Pos 24U /*!< MPU RASR: ATTRS.AP Position */ +#define MPU_RASR_AP_Msk (0x7UL << MPU_RASR_AP_Pos) /*!< MPU RASR: ATTRS.AP Mask */ + +#define MPU_RASR_TEX_Pos 19U /*!< MPU RASR: ATTRS.TEX Position */ +#define MPU_RASR_TEX_Msk (0x7UL << MPU_RASR_TEX_Pos) /*!< MPU RASR: ATTRS.TEX Mask */ + +#define MPU_RASR_S_Pos 18U /*!< MPU RASR: ATTRS.S Position */ +#define MPU_RASR_S_Msk (1UL << MPU_RASR_S_Pos) /*!< MPU RASR: ATTRS.S Mask */ + +#define MPU_RASR_C_Pos 17U /*!< MPU RASR: ATTRS.C Position */ +#define MPU_RASR_C_Msk (1UL << MPU_RASR_C_Pos) /*!< MPU RASR: ATTRS.C Mask */ + +#define MPU_RASR_B_Pos 16U /*!< MPU RASR: ATTRS.B Position */ +#define MPU_RASR_B_Msk (1UL << MPU_RASR_B_Pos) /*!< MPU RASR: ATTRS.B Mask */ + +#define MPU_RASR_SRD_Pos 8U /*!< MPU RASR: Sub-Region Disable Position */ +#define MPU_RASR_SRD_Msk (0xFFUL << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */ + +#define MPU_RASR_SIZE_Pos 1U /*!< MPU RASR: Region Size Field Position */ +#define MPU_RASR_SIZE_Msk (0x1FUL << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */ + +#define MPU_RASR_ENABLE_Pos 0U /*!< MPU RASR: Region enable bit Position */ +#define MPU_RASR_ENABLE_Msk (1UL /*<< MPU_RASR_ENABLE_Pos*/) /*!< MPU RASR: Region enable bit Disable Mask */ + +/*@} end of group CMSIS_MPU */ +#endif /* defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_FPU Floating Point Unit (FPU) + \brief Type definitions for the Floating Point Unit (FPU) + @{ + */ + +/** + \brief Structure type to access the Floating Point Unit (FPU). + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IOM uint32_t FPCCR; /*!< Offset: 0x004 (R/W) Floating-Point Context Control Register */ + __IOM uint32_t FPCAR; /*!< Offset: 0x008 (R/W) Floating-Point Context Address Register */ + __IOM uint32_t FPDSCR; /*!< Offset: 0x00C (R/W) Floating-Point Default Status Control Register */ + __IM uint32_t MVFR0; /*!< Offset: 0x010 (R/ ) Media and FP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x014 (R/ ) Media and FP Feature Register 1 */ + __IM uint32_t MVFR2; /*!< Offset: 0x018 (R/ ) Media and FP Feature Register 2 */ +} FPU_Type; + +/* Floating-Point Context Control Register Definitions */ +#define FPU_FPCCR_ASPEN_Pos 31U /*!< FPCCR: ASPEN bit Position */ +#define FPU_FPCCR_ASPEN_Msk (1UL << FPU_FPCCR_ASPEN_Pos) /*!< FPCCR: ASPEN bit Mask */ + +#define FPU_FPCCR_LSPEN_Pos 30U /*!< FPCCR: LSPEN Position */ +#define FPU_FPCCR_LSPEN_Msk (1UL << FPU_FPCCR_LSPEN_Pos) /*!< FPCCR: LSPEN bit Mask */ + +#define FPU_FPCCR_MONRDY_Pos 8U /*!< FPCCR: MONRDY Position */ +#define FPU_FPCCR_MONRDY_Msk (1UL << FPU_FPCCR_MONRDY_Pos) /*!< FPCCR: MONRDY bit Mask */ + +#define FPU_FPCCR_BFRDY_Pos 6U /*!< FPCCR: BFRDY Position */ +#define FPU_FPCCR_BFRDY_Msk (1UL << FPU_FPCCR_BFRDY_Pos) /*!< FPCCR: BFRDY bit Mask */ + +#define FPU_FPCCR_MMRDY_Pos 5U /*!< FPCCR: MMRDY Position */ +#define FPU_FPCCR_MMRDY_Msk (1UL << FPU_FPCCR_MMRDY_Pos) /*!< FPCCR: MMRDY bit Mask */ + +#define FPU_FPCCR_HFRDY_Pos 4U /*!< FPCCR: HFRDY Position */ +#define FPU_FPCCR_HFRDY_Msk (1UL << FPU_FPCCR_HFRDY_Pos) /*!< FPCCR: HFRDY bit Mask */ + +#define FPU_FPCCR_THREAD_Pos 3U /*!< FPCCR: processor mode bit Position */ +#define FPU_FPCCR_THREAD_Msk (1UL << FPU_FPCCR_THREAD_Pos) /*!< FPCCR: processor mode active bit Mask */ + +#define FPU_FPCCR_USER_Pos 1U /*!< FPCCR: privilege level bit Position */ +#define FPU_FPCCR_USER_Msk (1UL << FPU_FPCCR_USER_Pos) /*!< FPCCR: privilege level bit Mask */ + +#define FPU_FPCCR_LSPACT_Pos 0U /*!< FPCCR: Lazy state preservation active bit Position */ +#define FPU_FPCCR_LSPACT_Msk (1UL /*<< FPU_FPCCR_LSPACT_Pos*/) /*!< FPCCR: Lazy state preservation active bit Mask */ + +/* Floating-Point Context Address Register Definitions */ +#define FPU_FPCAR_ADDRESS_Pos 3U /*!< FPCAR: ADDRESS bit Position */ +#define FPU_FPCAR_ADDRESS_Msk (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos) /*!< FPCAR: ADDRESS bit Mask */ + +/* Floating-Point Default Status Control Register Definitions */ +#define FPU_FPDSCR_AHP_Pos 26U /*!< FPDSCR: AHP bit Position */ +#define FPU_FPDSCR_AHP_Msk (1UL << FPU_FPDSCR_AHP_Pos) /*!< FPDSCR: AHP bit Mask */ + +#define FPU_FPDSCR_DN_Pos 25U /*!< FPDSCR: DN bit Position */ +#define FPU_FPDSCR_DN_Msk (1UL << FPU_FPDSCR_DN_Pos) /*!< FPDSCR: DN bit Mask */ + +#define FPU_FPDSCR_FZ_Pos 24U /*!< FPDSCR: FZ bit Position */ +#define FPU_FPDSCR_FZ_Msk (1UL << FPU_FPDSCR_FZ_Pos) /*!< FPDSCR: FZ bit Mask */ + +#define FPU_FPDSCR_RMode_Pos 22U /*!< FPDSCR: RMode bit Position */ +#define FPU_FPDSCR_RMode_Msk (3UL << FPU_FPDSCR_RMode_Pos) /*!< FPDSCR: RMode bit Mask */ + +/* Media and FP Feature Register 0 Definitions */ +#define FPU_MVFR0_FP_rounding_modes_Pos 28U /*!< MVFR0: FP rounding modes bits Position */ +#define FPU_MVFR0_FP_rounding_modes_Msk (0xFUL << FPU_MVFR0_FP_rounding_modes_Pos) /*!< MVFR0: FP rounding modes bits Mask */ + +#define FPU_MVFR0_Short_vectors_Pos 24U /*!< MVFR0: Short vectors bits Position */ +#define FPU_MVFR0_Short_vectors_Msk (0xFUL << FPU_MVFR0_Short_vectors_Pos) /*!< MVFR0: Short vectors bits Mask */ + +#define FPU_MVFR0_Square_root_Pos 20U /*!< MVFR0: Square root bits Position */ +#define FPU_MVFR0_Square_root_Msk (0xFUL << FPU_MVFR0_Square_root_Pos) /*!< MVFR0: Square root bits Mask */ + +#define FPU_MVFR0_Divide_Pos 16U /*!< MVFR0: Divide bits Position */ +#define FPU_MVFR0_Divide_Msk (0xFUL << FPU_MVFR0_Divide_Pos) /*!< MVFR0: Divide bits Mask */ + +#define FPU_MVFR0_FP_excep_trapping_Pos 12U /*!< MVFR0: FP exception trapping bits Position */ +#define FPU_MVFR0_FP_excep_trapping_Msk (0xFUL << FPU_MVFR0_FP_excep_trapping_Pos) /*!< MVFR0: FP exception trapping bits Mask */ + +#define FPU_MVFR0_Double_precision_Pos 8U /*!< MVFR0: Double-precision bits Position */ +#define FPU_MVFR0_Double_precision_Msk (0xFUL << FPU_MVFR0_Double_precision_Pos) /*!< MVFR0: Double-precision bits Mask */ + +#define FPU_MVFR0_Single_precision_Pos 4U /*!< MVFR0: Single-precision bits Position */ +#define FPU_MVFR0_Single_precision_Msk (0xFUL << FPU_MVFR0_Single_precision_Pos) /*!< MVFR0: Single-precision bits Mask */ + +#define FPU_MVFR0_A_SIMD_registers_Pos 0U /*!< MVFR0: A_SIMD registers bits Position */ +#define FPU_MVFR0_A_SIMD_registers_Msk (0xFUL /*<< FPU_MVFR0_A_SIMD_registers_Pos*/) /*!< MVFR0: A_SIMD registers bits Mask */ + +/* Media and FP Feature Register 1 Definitions */ +#define FPU_MVFR1_FP_fused_MAC_Pos 28U /*!< MVFR1: FP fused MAC bits Position */ +#define FPU_MVFR1_FP_fused_MAC_Msk (0xFUL << FPU_MVFR1_FP_fused_MAC_Pos) /*!< MVFR1: FP fused MAC bits Mask */ + +#define FPU_MVFR1_FP_HPFP_Pos 24U /*!< MVFR1: FP HPFP bits Position */ +#define FPU_MVFR1_FP_HPFP_Msk (0xFUL << FPU_MVFR1_FP_HPFP_Pos) /*!< MVFR1: FP HPFP bits Mask */ + +#define FPU_MVFR1_D_NaN_mode_Pos 4U /*!< MVFR1: D_NaN mode bits Position */ +#define FPU_MVFR1_D_NaN_mode_Msk (0xFUL << FPU_MVFR1_D_NaN_mode_Pos) /*!< MVFR1: D_NaN mode bits Mask */ + +#define FPU_MVFR1_FtZ_mode_Pos 0U /*!< MVFR1: FtZ mode bits Position */ +#define FPU_MVFR1_FtZ_mode_Msk (0xFUL /*<< FPU_MVFR1_FtZ_mode_Pos*/) /*!< MVFR1: FtZ mode bits Mask */ + +/* Media and FP Feature Register 2 Definitions */ + +#define FPU_MVFR2_VFP_Misc_Pos 4U /*!< MVFR2: VFP Misc bits Position */ +#define FPU_MVFR2_VFP_Misc_Msk (0xFUL << FPU_MVFR2_VFP_Misc_Pos) /*!< MVFR2: VFP Misc bits Mask */ + +/*@} end of group CMSIS_FPU */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** + \brief Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register Definitions */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5U /*!< CoreDebug DHCSR: C_SNAPSTALL Position */ +#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register Definitions */ +#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register Definitions */ +#define CoreDebug_DEMCR_TRCENA_Pos 24U /*!< CoreDebug DEMCR: TRCENA Position */ +#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< CoreDebug DEMCR: TRCENA Mask */ + +#define CoreDebug_DEMCR_MON_REQ_Pos 19U /*!< CoreDebug DEMCR: MON_REQ Position */ +#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< CoreDebug DEMCR: MON_REQ Mask */ + +#define CoreDebug_DEMCR_MON_STEP_Pos 18U /*!< CoreDebug DEMCR: MON_STEP Position */ +#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< CoreDebug DEMCR: MON_STEP Mask */ + +#define CoreDebug_DEMCR_MON_PEND_Pos 17U /*!< CoreDebug DEMCR: MON_PEND Position */ +#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< CoreDebug DEMCR: MON_PEND Mask */ + +#define CoreDebug_DEMCR_MON_EN_Pos 16U /*!< CoreDebug DEMCR: MON_EN Position */ +#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< CoreDebug DEMCR: MON_EN Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_INTERR_Pos 9U /*!< CoreDebug DEMCR: VC_INTERR Position */ +#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< CoreDebug DEMCR: VC_INTERR Mask */ + +#define CoreDebug_DEMCR_VC_BUSERR_Pos 8U /*!< CoreDebug DEMCR: VC_BUSERR Position */ +#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< CoreDebug DEMCR: VC_BUSERR Mask */ + +#define CoreDebug_DEMCR_VC_STATERR_Pos 7U /*!< CoreDebug DEMCR: VC_STATERR Position */ +#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< CoreDebug DEMCR: VC_STATERR Mask */ + +#define CoreDebug_DEMCR_VC_CHKERR_Pos 6U /*!< CoreDebug DEMCR: VC_CHKERR Position */ +#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< CoreDebug DEMCR: VC_CHKERR Mask */ + +#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5U /*!< CoreDebug DEMCR: VC_NOCPERR Position */ +#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< CoreDebug DEMCR: VC_NOCPERR Mask */ + +#define CoreDebug_DEMCR_VC_MMERR_Pos 4U /*!< CoreDebug DEMCR: VC_MMERR Position */ +#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< CoreDebug DEMCR: VC_MMERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ +#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ +#define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ +#define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ +#define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ +#define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */ +#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ +#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ +#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + +#define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ +#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ +#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ +#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ +#define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */ +#define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ +#define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ +#define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE) /*!< Core Debug configuration struct */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ +#endif + +#define FPU_BASE (SCS_BASE + 0x0F30UL) /*!< Floating Point Unit */ +#define FPU ((FPU_Type *) FPU_BASE ) /*!< Floating Point Unit */ + +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Debug Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ + #define NVIC_GetActive __NVIC_GetActive + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* The following EXC_RETURN values are saved the LR on exception entry */ +#define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after return */ +#define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after return */ +#define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after return */ +#define EXC_RETURN_HANDLER_FPU (0xFFFFFFE1UL) /* return to Handler mode, uses MSP after return, restore floating-point state */ +#define EXC_RETURN_THREAD_MSP_FPU (0xFFFFFFE9UL) /* return to Thread mode, uses MSP after return, restore floating-point state */ +#define EXC_RETURN_THREAD_PSP_FPU (0xFFFFFFEDUL) /* return to Thread mode, uses PSP after return, restore floating-point state */ + + +/** + \brief Set Priority Grouping + \details Sets the priority grouping field using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + SCB->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping + \details Reads the priority grouping field from the NVIC Interrupt Controller. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void) +{ + return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + __COMPILER_BARRIER(); + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __COMPILER_BARRIER(); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IP[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC->IP[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t vectors = (uint32_t )SCB->VTOR; + (* (int *) (vectors + ((int32_t)IRQn + NVIC_USER_IRQ_OFFSET) * 4)) = vector; + /* ARM Application Note 321 states that the M4 does not require the architectural barrier */ +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t vectors = (uint32_t )SCB->VTOR; + return (uint32_t)(* (int *) (vectors + ((int32_t)IRQn + NVIC_USER_IRQ_OFFSET) * 4)); +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + SCB_AIRCR_SYSRESETREQ_Msk ); /* Keep priority group unchanged */ + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +/*@} end of CMSIS_Core_NVICFunctions */ + + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv7.h" + +#endif + + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + uint32_t mvfr0; + + mvfr0 = FPU->MVFR0; + if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x020U) + { + return 1U; /* Single precision FPU */ + } + else + { + return 0U; /* No FPU */ + } +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + +/* ##################################### Debug In/Output function ########################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_core_DebugFunctions ITM Functions + \brief Functions that access the ITM debug interface. + @{ + */ + +extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */ +#define ITM_RXBUFFER_EMPTY ((int32_t)0x5AA55AA5U) /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */ + + +/** + \brief ITM Send Character + \details Transmits a character via the ITM channel 0, and + \li Just returns when no debugger is connected that has booked the output. + \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted. + \param [in] ch Character to transmit. + \returns Character to transmit. + */ +__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch) +{ + if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) && /* ITM enabled */ + ((ITM->TER & 1UL ) != 0UL) ) /* ITM Port #0 enabled */ + { + while (ITM->PORT[0U].u32 == 0UL) + { + __NOP(); + } + ITM->PORT[0U].u8 = (uint8_t)ch; + } + return (ch); +} + + +/** + \brief ITM Receive Character + \details Inputs a character via the external variable \ref ITM_RxBuffer. + \return Received character. + \return -1 No character pending. + */ +__STATIC_INLINE int32_t ITM_ReceiveChar (void) +{ + int32_t ch = -1; /* no character available */ + + if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) + { + ch = ITM_RxBuffer; + ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ + } + + return (ch); +} + + +/** + \brief ITM Check Character + \details Checks whether a character is pending for reading in the variable \ref ITM_RxBuffer. + \return 0 No character available. + \return 1 Character available. + */ +__STATIC_INLINE int32_t ITM_CheckChar (void) +{ + + if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) + { + return (0); /* no character available */ + } + else + { + return (1); /* character available */ + } +} + +/*@} end of CMSIS_core_DebugFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM4_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/firmware/Drivers/CMSIS/Include/core_cm7.h b/firmware/Drivers/CMSIS/Include/core_cm7.h new file mode 100644 index 0000000..c4515d8 --- /dev/null +++ b/firmware/Drivers/CMSIS/Include/core_cm7.h @@ -0,0 +1,2725 @@ +/**************************************************************************//** + * @file core_cm7.h + * @brief CMSIS Cortex-M7 Core Peripheral Access Layer Header File + * @version V5.1.1 + * @date 28. March 2019 + ******************************************************************************/ +/* + * Copyright (c) 2009-2019 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_CM7_H_GENERIC +#define __CORE_CM7_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup Cortex_M7 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS CM7 definitions */ +#define __CM7_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM7_CMSIS_VERSION_SUB ( __CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM7_CMSIS_VERSION ((__CM7_CMSIS_VERSION_MAIN << 16U) | \ + __CM7_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (7U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + For this, __FPU_PRESENT has to be checked prior to making use of FPU specific registers and functions. +*/ +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_FP + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM7_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM7_H_DEPENDANT +#define __CORE_CM7_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM7_REV + #define __CM7_REV 0x0000U + #warning "__CM7_REV not defined in device header file; using default!" + #endif + + #ifndef __FPU_PRESENT + #define __FPU_PRESENT 0U + #warning "__FPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __ICACHE_PRESENT + #define __ICACHE_PRESENT 0U + #warning "__ICACHE_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __DCACHE_PRESENT + #define __DCACHE_PRESENT 0U + #warning "__DCACHE_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __DTCM_PRESENT + #define __DTCM_PRESENT 0U + #warning "__DTCM_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 3U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group Cortex_M7 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + - Core FPU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:16; /*!< bit: 0..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:7; /*!< bit: 20..26 Reserved */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + +#define APSR_Q_Pos 27U /*!< APSR: Q Position */ +#define APSR_Q_Msk (1UL << APSR_Q_Pos) /*!< APSR: Q Mask */ + +#define APSR_GE_Pos 16U /*!< APSR: GE Position */ +#define APSR_GE_Msk (0xFUL << APSR_GE_Pos) /*!< APSR: GE Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:1; /*!< bit: 9 Reserved */ + uint32_t ICI_IT_1:6; /*!< bit: 10..15 ICI/IT part 1 */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:4; /*!< bit: 20..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit */ + uint32_t ICI_IT_2:2; /*!< bit: 25..26 ICI/IT part 2 */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_Q_Pos 27U /*!< xPSR: Q Position */ +#define xPSR_Q_Msk (1UL << xPSR_Q_Pos) /*!< xPSR: Q Mask */ + +#define xPSR_ICI_IT_2_Pos 25U /*!< xPSR: ICI/IT part 2 Position */ +#define xPSR_ICI_IT_2_Msk (3UL << xPSR_ICI_IT_2_Pos) /*!< xPSR: ICI/IT part 2 Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_GE_Pos 16U /*!< xPSR: GE Position */ +#define xPSR_GE_Msk (0xFUL << xPSR_GE_Pos) /*!< xPSR: GE Mask */ + +#define xPSR_ICI_IT_1_Pos 10U /*!< xPSR: ICI/IT part 1 Position */ +#define xPSR_ICI_IT_1_Msk (0x3FUL << xPSR_ICI_IT_1_Pos) /*!< xPSR: ICI/IT part 1 Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ + uint32_t FPCA:1; /*!< bit: 2 FP extension active flag */ + uint32_t _reserved0:29; /*!< bit: 3..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_FPCA_Pos 2U /*!< CONTROL: FPCA Position */ +#define CONTROL_FPCA_Msk (1UL << CONTROL_FPCA_Pos) /*!< CONTROL: FPCA Mask */ + +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[8U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[24U]; + __IOM uint32_t ICER[8U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RESERVED1[24U]; + __IOM uint32_t ISPR[8U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[24U]; + __IOM uint32_t ICPR[8U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[24U]; + __IOM uint32_t IABR[8U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[56U]; + __IOM uint8_t IP[240U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED5[644U]; + __OM uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */ +} NVIC_Type; + +/* Software Triggered Interrupt Register Definitions */ +#define NVIC_STIR_INTID_Pos 0U /*!< STIR: INTLINESNUM Position */ +#define NVIC_STIR_INTID_Msk (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/) /*!< STIR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + __IOM uint8_t SHPR[12U]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + __IOM uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */ + __IOM uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ + __IOM uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ + __IOM uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */ + __IOM uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ + __IOM uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */ + __IM uint32_t ID_PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + __IM uint32_t ID_DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + __IM uint32_t ID_AFR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __IM uint32_t ID_MFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __IM uint32_t ID_ISAR[5U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + uint32_t RESERVED0[1U]; + __IM uint32_t CLIDR; /*!< Offset: 0x078 (R/ ) Cache Level ID register */ + __IM uint32_t CTR; /*!< Offset: 0x07C (R/ ) Cache Type register */ + __IM uint32_t CCSIDR; /*!< Offset: 0x080 (R/ ) Cache Size ID Register */ + __IOM uint32_t CSSELR; /*!< Offset: 0x084 (R/W) Cache Size Selection Register */ + __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ + uint32_t RESERVED3[93U]; + __OM uint32_t STIR; /*!< Offset: 0x200 ( /W) Software Triggered Interrupt Register */ + uint32_t RESERVED4[15U]; + __IM uint32_t MVFR0; /*!< Offset: 0x240 (R/ ) Media and VFP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x244 (R/ ) Media and VFP Feature Register 1 */ + __IM uint32_t MVFR2; /*!< Offset: 0x248 (R/ ) Media and VFP Feature Register 2 */ + uint32_t RESERVED5[1U]; + __OM uint32_t ICIALLU; /*!< Offset: 0x250 ( /W) I-Cache Invalidate All to PoU */ + uint32_t RESERVED6[1U]; + __OM uint32_t ICIMVAU; /*!< Offset: 0x258 ( /W) I-Cache Invalidate by MVA to PoU */ + __OM uint32_t DCIMVAC; /*!< Offset: 0x25C ( /W) D-Cache Invalidate by MVA to PoC */ + __OM uint32_t DCISW; /*!< Offset: 0x260 ( /W) D-Cache Invalidate by Set-way */ + __OM uint32_t DCCMVAU; /*!< Offset: 0x264 ( /W) D-Cache Clean by MVA to PoU */ + __OM uint32_t DCCMVAC; /*!< Offset: 0x268 ( /W) D-Cache Clean by MVA to PoC */ + __OM uint32_t DCCSW; /*!< Offset: 0x26C ( /W) D-Cache Clean by Set-way */ + __OM uint32_t DCCIMVAC; /*!< Offset: 0x270 ( /W) D-Cache Clean and Invalidate by MVA to PoC */ + __OM uint32_t DCCISW; /*!< Offset: 0x274 ( /W) D-Cache Clean and Invalidate by Set-way */ + uint32_t RESERVED7[6U]; + __IOM uint32_t ITCMCR; /*!< Offset: 0x290 (R/W) Instruction Tightly-Coupled Memory Control Register */ + __IOM uint32_t DTCMCR; /*!< Offset: 0x294 (R/W) Data Tightly-Coupled Memory Control Registers */ + __IOM uint32_t AHBPCR; /*!< Offset: 0x298 (R/W) AHBP Control Register */ + __IOM uint32_t CACR; /*!< Offset: 0x29C (R/W) L1 Cache Control Register */ + __IOM uint32_t AHBSCR; /*!< Offset: 0x2A0 (R/W) AHB Slave Control Register */ + uint32_t RESERVED8[1U]; + __IOM uint32_t ABFSR; /*!< Offset: 0x2A8 (R/W) Auxiliary Bus Fault Status Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_NMIPENDSET_Pos 31U /*!< SCB ICSR: NMIPENDSET Position */ +#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Vector Table Offset Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_PRIGROUP_Pos 8U /*!< SCB AIRCR: PRIGROUP Position */ +#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +#define SCB_AIRCR_VECTRESET_Pos 0U /*!< SCB AIRCR: VECTRESET Position */ +#define SCB_AIRCR_VECTRESET_Msk (1UL /*<< SCB_AIRCR_VECTRESET_Pos*/) /*!< SCB AIRCR: VECTRESET Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_BP_Pos 18U /*!< SCB CCR: Branch prediction enable bit Position */ +#define SCB_CCR_BP_Msk (1UL << SCB_CCR_BP_Pos) /*!< SCB CCR: Branch prediction enable bit Mask */ + +#define SCB_CCR_IC_Pos 17U /*!< SCB CCR: Instruction cache enable bit Position */ +#define SCB_CCR_IC_Msk (1UL << SCB_CCR_IC_Pos) /*!< SCB CCR: Instruction cache enable bit Mask */ + +#define SCB_CCR_DC_Pos 16U /*!< SCB CCR: Cache enable bit Position */ +#define SCB_CCR_DC_Msk (1UL << SCB_CCR_DC_Pos) /*!< SCB CCR: Cache enable bit Mask */ + +#define SCB_CCR_STKALIGN_Pos 9U /*!< SCB CCR: STKALIGN Position */ +#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +#define SCB_CCR_NONBASETHRDENA_Pos 0U /*!< SCB CCR: NONBASETHRDENA Position */ +#define SCB_CCR_NONBASETHRDENA_Msk (1UL /*<< SCB_CCR_NONBASETHRDENA_Pos*/) /*!< SCB CCR: NONBASETHRDENA Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_USGFAULTENA_Pos 18U /*!< SCB SHCSR: USGFAULTENA Position */ +#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ + +#define SCB_SHCSR_BUSFAULTENA_Pos 17U /*!< SCB SHCSR: BUSFAULTENA Position */ +#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ + +#define SCB_SHCSR_MEMFAULTENA_Pos 16U /*!< SCB SHCSR: MEMFAULTENA Position */ +#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_BUSFAULTPENDED_Pos 14U /*!< SCB SHCSR: BUSFAULTPENDED Position */ +#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ + +#define SCB_SHCSR_MEMFAULTPENDED_Pos 13U /*!< SCB SHCSR: MEMFAULTPENDED Position */ +#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ + +#define SCB_SHCSR_USGFAULTPENDED_Pos 12U /*!< SCB SHCSR: USGFAULTPENDED Position */ +#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_MONITORACT_Pos 8U /*!< SCB SHCSR: MONITORACT Position */ +#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_USGFAULTACT_Pos 3U /*!< SCB SHCSR: USGFAULTACT Position */ +#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ + +#define SCB_SHCSR_BUSFAULTACT_Pos 1U /*!< SCB SHCSR: BUSFAULTACT Position */ +#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ + +#define SCB_SHCSR_MEMFAULTACT_Pos 0U /*!< SCB SHCSR: MEMFAULTACT Position */ +#define SCB_SHCSR_MEMFAULTACT_Msk (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/) /*!< SCB SHCSR: MEMFAULTACT Mask */ + +/* SCB Configurable Fault Status Register Definitions */ +#define SCB_CFSR_USGFAULTSR_Pos 16U /*!< SCB CFSR: Usage Fault Status Register Position */ +#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ + +#define SCB_CFSR_BUSFAULTSR_Pos 8U /*!< SCB CFSR: Bus Fault Status Register Position */ +#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ + +#define SCB_CFSR_MEMFAULTSR_Pos 0U /*!< SCB CFSR: Memory Manage Fault Status Register Position */ +#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ + +/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_MMARVALID_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 7U) /*!< SCB CFSR (MMFSR): MMARVALID Position */ +#define SCB_CFSR_MMARVALID_Msk (1UL << SCB_CFSR_MMARVALID_Pos) /*!< SCB CFSR (MMFSR): MMARVALID Mask */ + +#define SCB_CFSR_MLSPERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 5U) /*!< SCB CFSR (MMFSR): MLSPERR Position */ +#define SCB_CFSR_MLSPERR_Msk (1UL << SCB_CFSR_MLSPERR_Pos) /*!< SCB CFSR (MMFSR): MLSPERR Mask */ + +#define SCB_CFSR_MSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 4U) /*!< SCB CFSR (MMFSR): MSTKERR Position */ +#define SCB_CFSR_MSTKERR_Msk (1UL << SCB_CFSR_MSTKERR_Pos) /*!< SCB CFSR (MMFSR): MSTKERR Mask */ + +#define SCB_CFSR_MUNSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 3U) /*!< SCB CFSR (MMFSR): MUNSTKERR Position */ +#define SCB_CFSR_MUNSTKERR_Msk (1UL << SCB_CFSR_MUNSTKERR_Pos) /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */ + +#define SCB_CFSR_DACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 1U) /*!< SCB CFSR (MMFSR): DACCVIOL Position */ +#define SCB_CFSR_DACCVIOL_Msk (1UL << SCB_CFSR_DACCVIOL_Pos) /*!< SCB CFSR (MMFSR): DACCVIOL Mask */ + +#define SCB_CFSR_IACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 0U) /*!< SCB CFSR (MMFSR): IACCVIOL Position */ +#define SCB_CFSR_IACCVIOL_Msk (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/) /*!< SCB CFSR (MMFSR): IACCVIOL Mask */ + +/* BusFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_BFARVALID_Pos (SCB_CFSR_BUSFAULTSR_Pos + 7U) /*!< SCB CFSR (BFSR): BFARVALID Position */ +#define SCB_CFSR_BFARVALID_Msk (1UL << SCB_CFSR_BFARVALID_Pos) /*!< SCB CFSR (BFSR): BFARVALID Mask */ + +#define SCB_CFSR_LSPERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 5U) /*!< SCB CFSR (BFSR): LSPERR Position */ +#define SCB_CFSR_LSPERR_Msk (1UL << SCB_CFSR_LSPERR_Pos) /*!< SCB CFSR (BFSR): LSPERR Mask */ + +#define SCB_CFSR_STKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 4U) /*!< SCB CFSR (BFSR): STKERR Position */ +#define SCB_CFSR_STKERR_Msk (1UL << SCB_CFSR_STKERR_Pos) /*!< SCB CFSR (BFSR): STKERR Mask */ + +#define SCB_CFSR_UNSTKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 3U) /*!< SCB CFSR (BFSR): UNSTKERR Position */ +#define SCB_CFSR_UNSTKERR_Msk (1UL << SCB_CFSR_UNSTKERR_Pos) /*!< SCB CFSR (BFSR): UNSTKERR Mask */ + +#define SCB_CFSR_IMPRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 2U) /*!< SCB CFSR (BFSR): IMPRECISERR Position */ +#define SCB_CFSR_IMPRECISERR_Msk (1UL << SCB_CFSR_IMPRECISERR_Pos) /*!< SCB CFSR (BFSR): IMPRECISERR Mask */ + +#define SCB_CFSR_PRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 1U) /*!< SCB CFSR (BFSR): PRECISERR Position */ +#define SCB_CFSR_PRECISERR_Msk (1UL << SCB_CFSR_PRECISERR_Pos) /*!< SCB CFSR (BFSR): PRECISERR Mask */ + +#define SCB_CFSR_IBUSERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 0U) /*!< SCB CFSR (BFSR): IBUSERR Position */ +#define SCB_CFSR_IBUSERR_Msk (1UL << SCB_CFSR_IBUSERR_Pos) /*!< SCB CFSR (BFSR): IBUSERR Mask */ + +/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_DIVBYZERO_Pos (SCB_CFSR_USGFAULTSR_Pos + 9U) /*!< SCB CFSR (UFSR): DIVBYZERO Position */ +#define SCB_CFSR_DIVBYZERO_Msk (1UL << SCB_CFSR_DIVBYZERO_Pos) /*!< SCB CFSR (UFSR): DIVBYZERO Mask */ + +#define SCB_CFSR_UNALIGNED_Pos (SCB_CFSR_USGFAULTSR_Pos + 8U) /*!< SCB CFSR (UFSR): UNALIGNED Position */ +#define SCB_CFSR_UNALIGNED_Msk (1UL << SCB_CFSR_UNALIGNED_Pos) /*!< SCB CFSR (UFSR): UNALIGNED Mask */ + +#define SCB_CFSR_NOCP_Pos (SCB_CFSR_USGFAULTSR_Pos + 3U) /*!< SCB CFSR (UFSR): NOCP Position */ +#define SCB_CFSR_NOCP_Msk (1UL << SCB_CFSR_NOCP_Pos) /*!< SCB CFSR (UFSR): NOCP Mask */ + +#define SCB_CFSR_INVPC_Pos (SCB_CFSR_USGFAULTSR_Pos + 2U) /*!< SCB CFSR (UFSR): INVPC Position */ +#define SCB_CFSR_INVPC_Msk (1UL << SCB_CFSR_INVPC_Pos) /*!< SCB CFSR (UFSR): INVPC Mask */ + +#define SCB_CFSR_INVSTATE_Pos (SCB_CFSR_USGFAULTSR_Pos + 1U) /*!< SCB CFSR (UFSR): INVSTATE Position */ +#define SCB_CFSR_INVSTATE_Msk (1UL << SCB_CFSR_INVSTATE_Pos) /*!< SCB CFSR (UFSR): INVSTATE Mask */ + +#define SCB_CFSR_UNDEFINSTR_Pos (SCB_CFSR_USGFAULTSR_Pos + 0U) /*!< SCB CFSR (UFSR): UNDEFINSTR Position */ +#define SCB_CFSR_UNDEFINSTR_Msk (1UL << SCB_CFSR_UNDEFINSTR_Pos) /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */ + +/* SCB Hard Fault Status Register Definitions */ +#define SCB_HFSR_DEBUGEVT_Pos 31U /*!< SCB HFSR: DEBUGEVT Position */ +#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ + +#define SCB_HFSR_FORCED_Pos 30U /*!< SCB HFSR: FORCED Position */ +#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ + +#define SCB_HFSR_VECTTBL_Pos 1U /*!< SCB HFSR: VECTTBL Position */ +#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ + +/* SCB Debug Fault Status Register Definitions */ +#define SCB_DFSR_EXTERNAL_Pos 4U /*!< SCB DFSR: EXTERNAL Position */ +#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ + +#define SCB_DFSR_VCATCH_Pos 3U /*!< SCB DFSR: VCATCH Position */ +#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ + +#define SCB_DFSR_DWTTRAP_Pos 2U /*!< SCB DFSR: DWTTRAP Position */ +#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ + +#define SCB_DFSR_BKPT_Pos 1U /*!< SCB DFSR: BKPT Position */ +#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ + +#define SCB_DFSR_HALTED_Pos 0U /*!< SCB DFSR: HALTED Position */ +#define SCB_DFSR_HALTED_Msk (1UL /*<< SCB_DFSR_HALTED_Pos*/) /*!< SCB DFSR: HALTED Mask */ + +/* SCB Cache Level ID Register Definitions */ +#define SCB_CLIDR_LOUU_Pos 27U /*!< SCB CLIDR: LoUU Position */ +#define SCB_CLIDR_LOUU_Msk (7UL << SCB_CLIDR_LOUU_Pos) /*!< SCB CLIDR: LoUU Mask */ + +#define SCB_CLIDR_LOC_Pos 24U /*!< SCB CLIDR: LoC Position */ +#define SCB_CLIDR_LOC_Msk (7UL << SCB_CLIDR_LOC_Pos) /*!< SCB CLIDR: LoC Mask */ + +/* SCB Cache Type Register Definitions */ +#define SCB_CTR_FORMAT_Pos 29U /*!< SCB CTR: Format Position */ +#define SCB_CTR_FORMAT_Msk (7UL << SCB_CTR_FORMAT_Pos) /*!< SCB CTR: Format Mask */ + +#define SCB_CTR_CWG_Pos 24U /*!< SCB CTR: CWG Position */ +#define SCB_CTR_CWG_Msk (0xFUL << SCB_CTR_CWG_Pos) /*!< SCB CTR: CWG Mask */ + +#define SCB_CTR_ERG_Pos 20U /*!< SCB CTR: ERG Position */ +#define SCB_CTR_ERG_Msk (0xFUL << SCB_CTR_ERG_Pos) /*!< SCB CTR: ERG Mask */ + +#define SCB_CTR_DMINLINE_Pos 16U /*!< SCB CTR: DminLine Position */ +#define SCB_CTR_DMINLINE_Msk (0xFUL << SCB_CTR_DMINLINE_Pos) /*!< SCB CTR: DminLine Mask */ + +#define SCB_CTR_IMINLINE_Pos 0U /*!< SCB CTR: ImInLine Position */ +#define SCB_CTR_IMINLINE_Msk (0xFUL /*<< SCB_CTR_IMINLINE_Pos*/) /*!< SCB CTR: ImInLine Mask */ + +/* SCB Cache Size ID Register Definitions */ +#define SCB_CCSIDR_WT_Pos 31U /*!< SCB CCSIDR: WT Position */ +#define SCB_CCSIDR_WT_Msk (1UL << SCB_CCSIDR_WT_Pos) /*!< SCB CCSIDR: WT Mask */ + +#define SCB_CCSIDR_WB_Pos 30U /*!< SCB CCSIDR: WB Position */ +#define SCB_CCSIDR_WB_Msk (1UL << SCB_CCSIDR_WB_Pos) /*!< SCB CCSIDR: WB Mask */ + +#define SCB_CCSIDR_RA_Pos 29U /*!< SCB CCSIDR: RA Position */ +#define SCB_CCSIDR_RA_Msk (1UL << SCB_CCSIDR_RA_Pos) /*!< SCB CCSIDR: RA Mask */ + +#define SCB_CCSIDR_WA_Pos 28U /*!< SCB CCSIDR: WA Position */ +#define SCB_CCSIDR_WA_Msk (1UL << SCB_CCSIDR_WA_Pos) /*!< SCB CCSIDR: WA Mask */ + +#define SCB_CCSIDR_NUMSETS_Pos 13U /*!< SCB CCSIDR: NumSets Position */ +#define SCB_CCSIDR_NUMSETS_Msk (0x7FFFUL << SCB_CCSIDR_NUMSETS_Pos) /*!< SCB CCSIDR: NumSets Mask */ + +#define SCB_CCSIDR_ASSOCIATIVITY_Pos 3U /*!< SCB CCSIDR: Associativity Position */ +#define SCB_CCSIDR_ASSOCIATIVITY_Msk (0x3FFUL << SCB_CCSIDR_ASSOCIATIVITY_Pos) /*!< SCB CCSIDR: Associativity Mask */ + +#define SCB_CCSIDR_LINESIZE_Pos 0U /*!< SCB CCSIDR: LineSize Position */ +#define SCB_CCSIDR_LINESIZE_Msk (7UL /*<< SCB_CCSIDR_LINESIZE_Pos*/) /*!< SCB CCSIDR: LineSize Mask */ + +/* SCB Cache Size Selection Register Definitions */ +#define SCB_CSSELR_LEVEL_Pos 1U /*!< SCB CSSELR: Level Position */ +#define SCB_CSSELR_LEVEL_Msk (7UL << SCB_CSSELR_LEVEL_Pos) /*!< SCB CSSELR: Level Mask */ + +#define SCB_CSSELR_IND_Pos 0U /*!< SCB CSSELR: InD Position */ +#define SCB_CSSELR_IND_Msk (1UL /*<< SCB_CSSELR_IND_Pos*/) /*!< SCB CSSELR: InD Mask */ + +/* SCB Software Triggered Interrupt Register Definitions */ +#define SCB_STIR_INTID_Pos 0U /*!< SCB STIR: INTID Position */ +#define SCB_STIR_INTID_Msk (0x1FFUL /*<< SCB_STIR_INTID_Pos*/) /*!< SCB STIR: INTID Mask */ + +/* SCB D-Cache Invalidate by Set-way Register Definitions */ +#define SCB_DCISW_WAY_Pos 30U /*!< SCB DCISW: Way Position */ +#define SCB_DCISW_WAY_Msk (3UL << SCB_DCISW_WAY_Pos) /*!< SCB DCISW: Way Mask */ + +#define SCB_DCISW_SET_Pos 5U /*!< SCB DCISW: Set Position */ +#define SCB_DCISW_SET_Msk (0x1FFUL << SCB_DCISW_SET_Pos) /*!< SCB DCISW: Set Mask */ + +/* SCB D-Cache Clean by Set-way Register Definitions */ +#define SCB_DCCSW_WAY_Pos 30U /*!< SCB DCCSW: Way Position */ +#define SCB_DCCSW_WAY_Msk (3UL << SCB_DCCSW_WAY_Pos) /*!< SCB DCCSW: Way Mask */ + +#define SCB_DCCSW_SET_Pos 5U /*!< SCB DCCSW: Set Position */ +#define SCB_DCCSW_SET_Msk (0x1FFUL << SCB_DCCSW_SET_Pos) /*!< SCB DCCSW: Set Mask */ + +/* SCB D-Cache Clean and Invalidate by Set-way Register Definitions */ +#define SCB_DCCISW_WAY_Pos 30U /*!< SCB DCCISW: Way Position */ +#define SCB_DCCISW_WAY_Msk (3UL << SCB_DCCISW_WAY_Pos) /*!< SCB DCCISW: Way Mask */ + +#define SCB_DCCISW_SET_Pos 5U /*!< SCB DCCISW: Set Position */ +#define SCB_DCCISW_SET_Msk (0x1FFUL << SCB_DCCISW_SET_Pos) /*!< SCB DCCISW: Set Mask */ + +/* Instruction Tightly-Coupled Memory Control Register Definitions */ +#define SCB_ITCMCR_SZ_Pos 3U /*!< SCB ITCMCR: SZ Position */ +#define SCB_ITCMCR_SZ_Msk (0xFUL << SCB_ITCMCR_SZ_Pos) /*!< SCB ITCMCR: SZ Mask */ + +#define SCB_ITCMCR_RETEN_Pos 2U /*!< SCB ITCMCR: RETEN Position */ +#define SCB_ITCMCR_RETEN_Msk (1UL << SCB_ITCMCR_RETEN_Pos) /*!< SCB ITCMCR: RETEN Mask */ + +#define SCB_ITCMCR_RMW_Pos 1U /*!< SCB ITCMCR: RMW Position */ +#define SCB_ITCMCR_RMW_Msk (1UL << SCB_ITCMCR_RMW_Pos) /*!< SCB ITCMCR: RMW Mask */ + +#define SCB_ITCMCR_EN_Pos 0U /*!< SCB ITCMCR: EN Position */ +#define SCB_ITCMCR_EN_Msk (1UL /*<< SCB_ITCMCR_EN_Pos*/) /*!< SCB ITCMCR: EN Mask */ + +/* Data Tightly-Coupled Memory Control Register Definitions */ +#define SCB_DTCMCR_SZ_Pos 3U /*!< SCB DTCMCR: SZ Position */ +#define SCB_DTCMCR_SZ_Msk (0xFUL << SCB_DTCMCR_SZ_Pos) /*!< SCB DTCMCR: SZ Mask */ + +#define SCB_DTCMCR_RETEN_Pos 2U /*!< SCB DTCMCR: RETEN Position */ +#define SCB_DTCMCR_RETEN_Msk (1UL << SCB_DTCMCR_RETEN_Pos) /*!< SCB DTCMCR: RETEN Mask */ + +#define SCB_DTCMCR_RMW_Pos 1U /*!< SCB DTCMCR: RMW Position */ +#define SCB_DTCMCR_RMW_Msk (1UL << SCB_DTCMCR_RMW_Pos) /*!< SCB DTCMCR: RMW Mask */ + +#define SCB_DTCMCR_EN_Pos 0U /*!< SCB DTCMCR: EN Position */ +#define SCB_DTCMCR_EN_Msk (1UL /*<< SCB_DTCMCR_EN_Pos*/) /*!< SCB DTCMCR: EN Mask */ + +/* AHBP Control Register Definitions */ +#define SCB_AHBPCR_SZ_Pos 1U /*!< SCB AHBPCR: SZ Position */ +#define SCB_AHBPCR_SZ_Msk (7UL << SCB_AHBPCR_SZ_Pos) /*!< SCB AHBPCR: SZ Mask */ + +#define SCB_AHBPCR_EN_Pos 0U /*!< SCB AHBPCR: EN Position */ +#define SCB_AHBPCR_EN_Msk (1UL /*<< SCB_AHBPCR_EN_Pos*/) /*!< SCB AHBPCR: EN Mask */ + +/* L1 Cache Control Register Definitions */ +#define SCB_CACR_FORCEWT_Pos 2U /*!< SCB CACR: FORCEWT Position */ +#define SCB_CACR_FORCEWT_Msk (1UL << SCB_CACR_FORCEWT_Pos) /*!< SCB CACR: FORCEWT Mask */ + +#define SCB_CACR_ECCEN_Pos 1U /*!< SCB CACR: ECCEN Position */ +#define SCB_CACR_ECCEN_Msk (1UL << SCB_CACR_ECCEN_Pos) /*!< SCB CACR: ECCEN Mask */ + +#define SCB_CACR_SIWT_Pos 0U /*!< SCB CACR: SIWT Position */ +#define SCB_CACR_SIWT_Msk (1UL /*<< SCB_CACR_SIWT_Pos*/) /*!< SCB CACR: SIWT Mask */ + +/* AHBS Control Register Definitions */ +#define SCB_AHBSCR_INITCOUNT_Pos 11U /*!< SCB AHBSCR: INITCOUNT Position */ +#define SCB_AHBSCR_INITCOUNT_Msk (0x1FUL << SCB_AHBPCR_INITCOUNT_Pos) /*!< SCB AHBSCR: INITCOUNT Mask */ + +#define SCB_AHBSCR_TPRI_Pos 2U /*!< SCB AHBSCR: TPRI Position */ +#define SCB_AHBSCR_TPRI_Msk (0x1FFUL << SCB_AHBPCR_TPRI_Pos) /*!< SCB AHBSCR: TPRI Mask */ + +#define SCB_AHBSCR_CTL_Pos 0U /*!< SCB AHBSCR: CTL Position*/ +#define SCB_AHBSCR_CTL_Msk (3UL /*<< SCB_AHBPCR_CTL_Pos*/) /*!< SCB AHBSCR: CTL Mask */ + +/* Auxiliary Bus Fault Status Register Definitions */ +#define SCB_ABFSR_AXIMTYPE_Pos 8U /*!< SCB ABFSR: AXIMTYPE Position*/ +#define SCB_ABFSR_AXIMTYPE_Msk (3UL << SCB_ABFSR_AXIMTYPE_Pos) /*!< SCB ABFSR: AXIMTYPE Mask */ + +#define SCB_ABFSR_EPPB_Pos 4U /*!< SCB ABFSR: EPPB Position*/ +#define SCB_ABFSR_EPPB_Msk (1UL << SCB_ABFSR_EPPB_Pos) /*!< SCB ABFSR: EPPB Mask */ + +#define SCB_ABFSR_AXIM_Pos 3U /*!< SCB ABFSR: AXIM Position*/ +#define SCB_ABFSR_AXIM_Msk (1UL << SCB_ABFSR_AXIM_Pos) /*!< SCB ABFSR: AXIM Mask */ + +#define SCB_ABFSR_AHBP_Pos 2U /*!< SCB ABFSR: AHBP Position*/ +#define SCB_ABFSR_AHBP_Msk (1UL << SCB_ABFSR_AHBP_Pos) /*!< SCB ABFSR: AHBP Mask */ + +#define SCB_ABFSR_DTCM_Pos 1U /*!< SCB ABFSR: DTCM Position*/ +#define SCB_ABFSR_DTCM_Msk (1UL << SCB_ABFSR_DTCM_Pos) /*!< SCB ABFSR: DTCM Mask */ + +#define SCB_ABFSR_ITCM_Pos 0U /*!< SCB ABFSR: ITCM Position*/ +#define SCB_ABFSR_ITCM_Msk (1UL /*<< SCB_ABFSR_ITCM_Pos*/) /*!< SCB ABFSR: ITCM Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** + \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IM uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */ + __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ +} SCnSCB_Type; + +/* Interrupt Controller Type Register Definitions */ +#define SCnSCB_ICTR_INTLINESNUM_Pos 0U /*!< ICTR: INTLINESNUM Position */ +#define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/) /*!< ICTR: INTLINESNUM Mask */ + +/* Auxiliary Control Register Definitions */ +#define SCnSCB_ACTLR_DISDYNADD_Pos 26U /*!< ACTLR: DISDYNADD Position */ +#define SCnSCB_ACTLR_DISDYNADD_Msk (1UL << SCnSCB_ACTLR_DISDYNADD_Pos) /*!< ACTLR: DISDYNADD Mask */ + +#define SCnSCB_ACTLR_DISISSCH1_Pos 21U /*!< ACTLR: DISISSCH1 Position */ +#define SCnSCB_ACTLR_DISISSCH1_Msk (0x1FUL << SCnSCB_ACTLR_DISISSCH1_Pos) /*!< ACTLR: DISISSCH1 Mask */ + +#define SCnSCB_ACTLR_DISDI_Pos 16U /*!< ACTLR: DISDI Position */ +#define SCnSCB_ACTLR_DISDI_Msk (0x1FUL << SCnSCB_ACTLR_DISDI_Pos) /*!< ACTLR: DISDI Mask */ + +#define SCnSCB_ACTLR_DISCRITAXIRUR_Pos 15U /*!< ACTLR: DISCRITAXIRUR Position */ +#define SCnSCB_ACTLR_DISCRITAXIRUR_Msk (1UL << SCnSCB_ACTLR_DISCRITAXIRUR_Pos) /*!< ACTLR: DISCRITAXIRUR Mask */ + +#define SCnSCB_ACTLR_DISBTACALLOC_Pos 14U /*!< ACTLR: DISBTACALLOC Position */ +#define SCnSCB_ACTLR_DISBTACALLOC_Msk (1UL << SCnSCB_ACTLR_DISBTACALLOC_Pos) /*!< ACTLR: DISBTACALLOC Mask */ + +#define SCnSCB_ACTLR_DISBTACREAD_Pos 13U /*!< ACTLR: DISBTACREAD Position */ +#define SCnSCB_ACTLR_DISBTACREAD_Msk (1UL << SCnSCB_ACTLR_DISBTACREAD_Pos) /*!< ACTLR: DISBTACREAD Mask */ + +#define SCnSCB_ACTLR_DISITMATBFLUSH_Pos 12U /*!< ACTLR: DISITMATBFLUSH Position */ +#define SCnSCB_ACTLR_DISITMATBFLUSH_Msk (1UL << SCnSCB_ACTLR_DISITMATBFLUSH_Pos) /*!< ACTLR: DISITMATBFLUSH Mask */ + +#define SCnSCB_ACTLR_DISRAMODE_Pos 11U /*!< ACTLR: DISRAMODE Position */ +#define SCnSCB_ACTLR_DISRAMODE_Msk (1UL << SCnSCB_ACTLR_DISRAMODE_Pos) /*!< ACTLR: DISRAMODE Mask */ + +#define SCnSCB_ACTLR_FPEXCODIS_Pos 10U /*!< ACTLR: FPEXCODIS Position */ +#define SCnSCB_ACTLR_FPEXCODIS_Msk (1UL << SCnSCB_ACTLR_FPEXCODIS_Pos) /*!< ACTLR: FPEXCODIS Mask */ + +#define SCnSCB_ACTLR_DISFOLD_Pos 2U /*!< ACTLR: DISFOLD Position */ +#define SCnSCB_ACTLR_DISFOLD_Msk (1UL << SCnSCB_ACTLR_DISFOLD_Pos) /*!< ACTLR: DISFOLD Mask */ + +#define SCnSCB_ACTLR_DISMCYCINT_Pos 0U /*!< ACTLR: DISMCYCINT Position */ +#define SCnSCB_ACTLR_DISMCYCINT_Msk (1UL /*<< SCnSCB_ACTLR_DISMCYCINT_Pos*/) /*!< ACTLR: DISMCYCINT Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_ITM Instrumentation Trace Macrocell (ITM) + \brief Type definitions for the Instrumentation Trace Macrocell (ITM) + @{ + */ + +/** + \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). + */ +typedef struct +{ + __OM union + { + __OM uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ + __OM uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ + __OM uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ + } PORT [32U]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ + uint32_t RESERVED0[864U]; + __IOM uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ + uint32_t RESERVED1[15U]; + __IOM uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ + uint32_t RESERVED2[15U]; + __IOM uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ + uint32_t RESERVED3[32U]; + uint32_t RESERVED4[43U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */ + uint32_t RESERVED5[6U]; + __IM uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Register #4 */ + __IM uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Register #5 */ + __IM uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Register #6 */ + __IM uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Register #7 */ + __IM uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Register #0 */ + __IM uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Register #1 */ + __IM uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Register #2 */ + __IM uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Register #3 */ + __IM uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Register #0 */ + __IM uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Register #1 */ + __IM uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Register #2 */ + __IM uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Register #3 */ +} ITM_Type; + +/* ITM Trace Privilege Register Definitions */ +#define ITM_TPR_PRIVMASK_Pos 0U /*!< ITM TPR: PRIVMASK Position */ +#define ITM_TPR_PRIVMASK_Msk (0xFFFFFFFFUL /*<< ITM_TPR_PRIVMASK_Pos*/) /*!< ITM TPR: PRIVMASK Mask */ + +/* ITM Trace Control Register Definitions */ +#define ITM_TCR_BUSY_Pos 23U /*!< ITM TCR: BUSY Position */ +#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ + +#define ITM_TCR_TraceBusID_Pos 16U /*!< ITM TCR: ATBID Position */ +#define ITM_TCR_TraceBusID_Msk (0x7FUL << ITM_TCR_TraceBusID_Pos) /*!< ITM TCR: ATBID Mask */ + +#define ITM_TCR_GTSFREQ_Pos 10U /*!< ITM TCR: Global timestamp frequency Position */ +#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */ + +#define ITM_TCR_TSPrescale_Pos 8U /*!< ITM TCR: TSPrescale Position */ +#define ITM_TCR_TSPrescale_Msk (3UL << ITM_TCR_TSPrescale_Pos) /*!< ITM TCR: TSPrescale Mask */ + +#define ITM_TCR_SWOENA_Pos 4U /*!< ITM TCR: SWOENA Position */ +#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ + +#define ITM_TCR_DWTENA_Pos 3U /*!< ITM TCR: DWTENA Position */ +#define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ + +#define ITM_TCR_SYNCENA_Pos 2U /*!< ITM TCR: SYNCENA Position */ +#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ + +#define ITM_TCR_TSENA_Pos 1U /*!< ITM TCR: TSENA Position */ +#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ + +#define ITM_TCR_ITMENA_Pos 0U /*!< ITM TCR: ITM Enable bit Position */ +#define ITM_TCR_ITMENA_Msk (1UL /*<< ITM_TCR_ITMENA_Pos*/) /*!< ITM TCR: ITM Enable bit Mask */ + +/* ITM Lock Status Register Definitions */ +#define ITM_LSR_ByteAcc_Pos 2U /*!< ITM LSR: ByteAcc Position */ +#define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ + +#define ITM_LSR_Access_Pos 1U /*!< ITM LSR: Access Position */ +#define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ + +#define ITM_LSR_Present_Pos 0U /*!< ITM LSR: Present Position */ +#define ITM_LSR_Present_Msk (1UL /*<< ITM_LSR_Present_Pos*/) /*!< ITM LSR: Present Mask */ + +/*@}*/ /* end of group CMSIS_ITM */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + __IOM uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */ + __IOM uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */ + __IOM uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Register */ + __IOM uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */ + __IOM uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */ + __IOM uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Register */ + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + __IOM uint32_t MASK0; /*!< Offset: 0x024 (R/W) Mask Register 0 */ + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED0[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + __IOM uint32_t MASK1; /*!< Offset: 0x034 (R/W) Mask Register 1 */ + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + __IOM uint32_t MASK2; /*!< Offset: 0x044 (R/W) Mask Register 2 */ + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + __IOM uint32_t MASK3; /*!< Offset: 0x054 (R/W) Mask Register 3 */ + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ + uint32_t RESERVED3[981U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( W) Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R ) Lock Status Register */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +#define DWT_CTRL_CYCEVTENA_Pos 22U /*!< DWT CTRL: CYCEVTENA Position */ +#define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTRL: CYCEVTENA Mask */ + +#define DWT_CTRL_FOLDEVTENA_Pos 21U /*!< DWT CTRL: FOLDEVTENA Position */ +#define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTRL: FOLDEVTENA Mask */ + +#define DWT_CTRL_LSUEVTENA_Pos 20U /*!< DWT CTRL: LSUEVTENA Position */ +#define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTRL: LSUEVTENA Mask */ + +#define DWT_CTRL_SLEEPEVTENA_Pos 19U /*!< DWT CTRL: SLEEPEVTENA Position */ +#define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTRL: SLEEPEVTENA Mask */ + +#define DWT_CTRL_EXCEVTENA_Pos 18U /*!< DWT CTRL: EXCEVTENA Position */ +#define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTRL: EXCEVTENA Mask */ + +#define DWT_CTRL_CPIEVTENA_Pos 17U /*!< DWT CTRL: CPIEVTENA Position */ +#define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTRL: CPIEVTENA Mask */ + +#define DWT_CTRL_EXCTRCENA_Pos 16U /*!< DWT CTRL: EXCTRCENA Position */ +#define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTRL: EXCTRCENA Mask */ + +#define DWT_CTRL_PCSAMPLENA_Pos 12U /*!< DWT CTRL: PCSAMPLENA Position */ +#define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTRL: PCSAMPLENA Mask */ + +#define DWT_CTRL_SYNCTAP_Pos 10U /*!< DWT CTRL: SYNCTAP Position */ +#define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTRL: SYNCTAP Mask */ + +#define DWT_CTRL_CYCTAP_Pos 9U /*!< DWT CTRL: CYCTAP Position */ +#define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTRL: CYCTAP Mask */ + +#define DWT_CTRL_POSTINIT_Pos 5U /*!< DWT CTRL: POSTINIT Position */ +#define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTRL: POSTINIT Mask */ + +#define DWT_CTRL_POSTPRESET_Pos 1U /*!< DWT CTRL: POSTPRESET Position */ +#define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTRL: POSTPRESET Mask */ + +#define DWT_CTRL_CYCCNTENA_Pos 0U /*!< DWT CTRL: CYCCNTENA Position */ +#define DWT_CTRL_CYCCNTENA_Msk (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/) /*!< DWT CTRL: CYCCNTENA Mask */ + +/* DWT CPI Count Register Definitions */ +#define DWT_CPICNT_CPICNT_Pos 0U /*!< DWT CPICNT: CPICNT Position */ +#define DWT_CPICNT_CPICNT_Msk (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/) /*!< DWT CPICNT: CPICNT Mask */ + +/* DWT Exception Overhead Count Register Definitions */ +#define DWT_EXCCNT_EXCCNT_Pos 0U /*!< DWT EXCCNT: EXCCNT Position */ +#define DWT_EXCCNT_EXCCNT_Msk (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/) /*!< DWT EXCCNT: EXCCNT Mask */ + +/* DWT Sleep Count Register Definitions */ +#define DWT_SLEEPCNT_SLEEPCNT_Pos 0U /*!< DWT SLEEPCNT: SLEEPCNT Position */ +#define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/) /*!< DWT SLEEPCNT: SLEEPCNT Mask */ + +/* DWT LSU Count Register Definitions */ +#define DWT_LSUCNT_LSUCNT_Pos 0U /*!< DWT LSUCNT: LSUCNT Position */ +#define DWT_LSUCNT_LSUCNT_Msk (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/) /*!< DWT LSUCNT: LSUCNT Mask */ + +/* DWT Folded-instruction Count Register Definitions */ +#define DWT_FOLDCNT_FOLDCNT_Pos 0U /*!< DWT FOLDCNT: FOLDCNT Position */ +#define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/) /*!< DWT FOLDCNT: FOLDCNT Mask */ + +/* DWT Comparator Mask Register Definitions */ +#define DWT_MASK_MASK_Pos 0U /*!< DWT MASK: MASK Position */ +#define DWT_MASK_MASK_Msk (0x1FUL /*<< DWT_MASK_MASK_Pos*/) /*!< DWT MASK: MASK Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVADDR1_Pos 16U /*!< DWT FUNCTION: DATAVADDR1 Position */ +#define DWT_FUNCTION_DATAVADDR1_Msk (0xFUL << DWT_FUNCTION_DATAVADDR1_Pos) /*!< DWT FUNCTION: DATAVADDR1 Mask */ + +#define DWT_FUNCTION_DATAVADDR0_Pos 12U /*!< DWT FUNCTION: DATAVADDR0 Position */ +#define DWT_FUNCTION_DATAVADDR0_Msk (0xFUL << DWT_FUNCTION_DATAVADDR0_Pos) /*!< DWT FUNCTION: DATAVADDR0 Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_LNK1ENA_Pos 9U /*!< DWT FUNCTION: LNK1ENA Position */ +#define DWT_FUNCTION_LNK1ENA_Msk (0x1UL << DWT_FUNCTION_LNK1ENA_Pos) /*!< DWT FUNCTION: LNK1ENA Mask */ + +#define DWT_FUNCTION_DATAVMATCH_Pos 8U /*!< DWT FUNCTION: DATAVMATCH Position */ +#define DWT_FUNCTION_DATAVMATCH_Msk (0x1UL << DWT_FUNCTION_DATAVMATCH_Pos) /*!< DWT FUNCTION: DATAVMATCH Mask */ + +#define DWT_FUNCTION_CYCMATCH_Pos 7U /*!< DWT FUNCTION: CYCMATCH Position */ +#define DWT_FUNCTION_CYCMATCH_Msk (0x1UL << DWT_FUNCTION_CYCMATCH_Pos) /*!< DWT FUNCTION: CYCMATCH Mask */ + +#define DWT_FUNCTION_EMITRANGE_Pos 5U /*!< DWT FUNCTION: EMITRANGE Position */ +#define DWT_FUNCTION_EMITRANGE_Msk (0x1UL << DWT_FUNCTION_EMITRANGE_Pos) /*!< DWT FUNCTION: EMITRANGE Mask */ + +#define DWT_FUNCTION_FUNCTION_Pos 0U /*!< DWT FUNCTION: FUNCTION Position */ +#define DWT_FUNCTION_FUNCTION_Msk (0xFUL /*<< DWT_FUNCTION_FUNCTION_Pos*/) /*!< DWT FUNCTION: FUNCTION Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Size Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Size Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IM uint32_t FSCR; /*!< Offset: 0x308 (R/ ) Formatter Synchronization Counter Register */ + uint32_t RESERVED3[759U]; + __IM uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER Register */ + __IM uint32_t FIFO0; /*!< Offset: 0xEEC (R/ ) Integration ETM Data */ + __IM uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/ ) ITATBCTR2 */ + uint32_t RESERVED4[1U]; + __IM uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) ITATBCTR0 */ + __IM uint32_t FIFO1; /*!< Offset: 0xEFC (R/ ) Integration ITM Data */ + __IOM uint32_t ITCTRL; /*!< Offset: 0xF00 (R/W) Integration Mode Control */ + uint32_t RESERVED5[39U]; + __IOM uint32_t CLAIMSET; /*!< Offset: 0xFA0 (R/W) Claim tag set */ + __IOM uint32_t CLAIMCLR; /*!< Offset: 0xFA4 (R/W) Claim tag clear */ + uint32_t RESERVED7[8U]; + __IM uint32_t DEVID; /*!< Offset: 0xFC8 (R/ ) TPIU_DEVID */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) TPIU_DEVTYPE */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_PRESCALER_Pos 0U /*!< TPI ACPR: PRESCALER Position */ +#define TPI_ACPR_PRESCALER_Msk (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/) /*!< TPI ACPR: PRESCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */ +#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ + +/* TPI TRIGGER Register Definitions */ +#define TPI_TRIGGER_TRIGGER_Pos 0U /*!< TPI TRIGGER: TRIGGER Position */ +#define TPI_TRIGGER_TRIGGER_Msk (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/) /*!< TPI TRIGGER: TRIGGER Mask */ + +/* TPI Integration ETM Data Register Definitions (FIFO0) */ +#define TPI_FIFO0_ITM_ATVALID_Pos 29U /*!< TPI FIFO0: ITM_ATVALID Position */ +#define TPI_FIFO0_ITM_ATVALID_Msk (0x1UL << TPI_FIFO0_ITM_ATVALID_Pos) /*!< TPI FIFO0: ITM_ATVALID Mask */ + +#define TPI_FIFO0_ITM_bytecount_Pos 27U /*!< TPI FIFO0: ITM_bytecount Position */ +#define TPI_FIFO0_ITM_bytecount_Msk (0x3UL << TPI_FIFO0_ITM_bytecount_Pos) /*!< TPI FIFO0: ITM_bytecount Mask */ + +#define TPI_FIFO0_ETM_ATVALID_Pos 26U /*!< TPI FIFO0: ETM_ATVALID Position */ +#define TPI_FIFO0_ETM_ATVALID_Msk (0x1UL << TPI_FIFO0_ETM_ATVALID_Pos) /*!< TPI FIFO0: ETM_ATVALID Mask */ + +#define TPI_FIFO0_ETM_bytecount_Pos 24U /*!< TPI FIFO0: ETM_bytecount Position */ +#define TPI_FIFO0_ETM_bytecount_Msk (0x3UL << TPI_FIFO0_ETM_bytecount_Pos) /*!< TPI FIFO0: ETM_bytecount Mask */ + +#define TPI_FIFO0_ETM2_Pos 16U /*!< TPI FIFO0: ETM2 Position */ +#define TPI_FIFO0_ETM2_Msk (0xFFUL << TPI_FIFO0_ETM2_Pos) /*!< TPI FIFO0: ETM2 Mask */ + +#define TPI_FIFO0_ETM1_Pos 8U /*!< TPI FIFO0: ETM1 Position */ +#define TPI_FIFO0_ETM1_Msk (0xFFUL << TPI_FIFO0_ETM1_Pos) /*!< TPI FIFO0: ETM1 Mask */ + +#define TPI_FIFO0_ETM0_Pos 0U /*!< TPI FIFO0: ETM0 Position */ +#define TPI_FIFO0_ETM0_Msk (0xFFUL /*<< TPI_FIFO0_ETM0_Pos*/) /*!< TPI FIFO0: ETM0 Mask */ + +/* TPI ITATBCTR2 Register Definitions */ +#define TPI_ITATBCTR2_ATREADY2_Pos 0U /*!< TPI ITATBCTR2: ATREADY2 Position */ +#define TPI_ITATBCTR2_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY2_Pos*/) /*!< TPI ITATBCTR2: ATREADY2 Mask */ + +#define TPI_ITATBCTR2_ATREADY1_Pos 0U /*!< TPI ITATBCTR2: ATREADY1 Position */ +#define TPI_ITATBCTR2_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY1_Pos*/) /*!< TPI ITATBCTR2: ATREADY1 Mask */ + +/* TPI Integration ITM Data Register Definitions (FIFO1) */ +#define TPI_FIFO1_ITM_ATVALID_Pos 29U /*!< TPI FIFO1: ITM_ATVALID Position */ +#define TPI_FIFO1_ITM_ATVALID_Msk (0x1UL << TPI_FIFO1_ITM_ATVALID_Pos) /*!< TPI FIFO1: ITM_ATVALID Mask */ + +#define TPI_FIFO1_ITM_bytecount_Pos 27U /*!< TPI FIFO1: ITM_bytecount Position */ +#define TPI_FIFO1_ITM_bytecount_Msk (0x3UL << TPI_FIFO1_ITM_bytecount_Pos) /*!< TPI FIFO1: ITM_bytecount Mask */ + +#define TPI_FIFO1_ETM_ATVALID_Pos 26U /*!< TPI FIFO1: ETM_ATVALID Position */ +#define TPI_FIFO1_ETM_ATVALID_Msk (0x1UL << TPI_FIFO1_ETM_ATVALID_Pos) /*!< TPI FIFO1: ETM_ATVALID Mask */ + +#define TPI_FIFO1_ETM_bytecount_Pos 24U /*!< TPI FIFO1: ETM_bytecount Position */ +#define TPI_FIFO1_ETM_bytecount_Msk (0x3UL << TPI_FIFO1_ETM_bytecount_Pos) /*!< TPI FIFO1: ETM_bytecount Mask */ + +#define TPI_FIFO1_ITM2_Pos 16U /*!< TPI FIFO1: ITM2 Position */ +#define TPI_FIFO1_ITM2_Msk (0xFFUL << TPI_FIFO1_ITM2_Pos) /*!< TPI FIFO1: ITM2 Mask */ + +#define TPI_FIFO1_ITM1_Pos 8U /*!< TPI FIFO1: ITM1 Position */ +#define TPI_FIFO1_ITM1_Msk (0xFFUL << TPI_FIFO1_ITM1_Pos) /*!< TPI FIFO1: ITM1 Mask */ + +#define TPI_FIFO1_ITM0_Pos 0U /*!< TPI FIFO1: ITM0 Position */ +#define TPI_FIFO1_ITM0_Msk (0xFFUL /*<< TPI_FIFO1_ITM0_Pos*/) /*!< TPI FIFO1: ITM0 Mask */ + +/* TPI ITATBCTR0 Register Definitions */ +#define TPI_ITATBCTR0_ATREADY2_Pos 0U /*!< TPI ITATBCTR0: ATREADY2 Position */ +#define TPI_ITATBCTR0_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY2_Pos*/) /*!< TPI ITATBCTR0: ATREADY2 Mask */ + +#define TPI_ITATBCTR0_ATREADY1_Pos 0U /*!< TPI ITATBCTR0: ATREADY1 Position */ +#define TPI_ITATBCTR0_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY1_Pos*/) /*!< TPI ITATBCTR0: ATREADY1 Mask */ + +/* TPI Integration Mode Control Register Definitions */ +#define TPI_ITCTRL_Mode_Pos 0U /*!< TPI ITCTRL: Mode Position */ +#define TPI_ITCTRL_Mode_Msk (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/) /*!< TPI ITCTRL: Mode Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_MinBufSz_Pos 6U /*!< TPI DEVID: MinBufSz Position */ +#define TPI_DEVID_MinBufSz_Msk (0x7UL << TPI_DEVID_MinBufSz_Pos) /*!< TPI DEVID: MinBufSz Mask */ + +#define TPI_DEVID_AsynClkIn_Pos 5U /*!< TPI DEVID: AsynClkIn Position */ +#define TPI_DEVID_AsynClkIn_Msk (0x1UL << TPI_DEVID_AsynClkIn_Pos) /*!< TPI DEVID: AsynClkIn Mask */ + +#define TPI_DEVID_NrTraceInput_Pos 0U /*!< TPI DEVID: NrTraceInput Position */ +#define TPI_DEVID_NrTraceInput_Msk (0x1FUL /*<< TPI_DEVID_NrTraceInput_Pos*/) /*!< TPI DEVID: NrTraceInput Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region RNRber Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RASR; /*!< Offset: 0x010 (R/W) MPU Region Attribute and Size Register */ + __IOM uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Alias 1 Region Base Address Register */ + __IOM uint32_t RASR_A1; /*!< Offset: 0x018 (R/W) MPU Alias 1 Region Attribute and Size Register */ + __IOM uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Alias 2 Region Base Address Register */ + __IOM uint32_t RASR_A2; /*!< Offset: 0x020 (R/W) MPU Alias 2 Region Attribute and Size Register */ + __IOM uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Alias 3 Region Base Address Register */ + __IOM uint32_t RASR_A3; /*!< Offset: 0x028 (R/W) MPU Alias 3 Region Attribute and Size Register */ +} MPU_Type; + +#define MPU_TYPE_RALIASES 4U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_ADDR_Pos 5U /*!< MPU RBAR: ADDR Position */ +#define MPU_RBAR_ADDR_Msk (0x7FFFFFFUL << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */ + +#define MPU_RBAR_VALID_Pos 4U /*!< MPU RBAR: VALID Position */ +#define MPU_RBAR_VALID_Msk (1UL << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */ + +#define MPU_RBAR_REGION_Pos 0U /*!< MPU RBAR: REGION Position */ +#define MPU_RBAR_REGION_Msk (0xFUL /*<< MPU_RBAR_REGION_Pos*/) /*!< MPU RBAR: REGION Mask */ + +/* MPU Region Attribute and Size Register Definitions */ +#define MPU_RASR_ATTRS_Pos 16U /*!< MPU RASR: MPU Region Attribute field Position */ +#define MPU_RASR_ATTRS_Msk (0xFFFFUL << MPU_RASR_ATTRS_Pos) /*!< MPU RASR: MPU Region Attribute field Mask */ + +#define MPU_RASR_XN_Pos 28U /*!< MPU RASR: ATTRS.XN Position */ +#define MPU_RASR_XN_Msk (1UL << MPU_RASR_XN_Pos) /*!< MPU RASR: ATTRS.XN Mask */ + +#define MPU_RASR_AP_Pos 24U /*!< MPU RASR: ATTRS.AP Position */ +#define MPU_RASR_AP_Msk (0x7UL << MPU_RASR_AP_Pos) /*!< MPU RASR: ATTRS.AP Mask */ + +#define MPU_RASR_TEX_Pos 19U /*!< MPU RASR: ATTRS.TEX Position */ +#define MPU_RASR_TEX_Msk (0x7UL << MPU_RASR_TEX_Pos) /*!< MPU RASR: ATTRS.TEX Mask */ + +#define MPU_RASR_S_Pos 18U /*!< MPU RASR: ATTRS.S Position */ +#define MPU_RASR_S_Msk (1UL << MPU_RASR_S_Pos) /*!< MPU RASR: ATTRS.S Mask */ + +#define MPU_RASR_C_Pos 17U /*!< MPU RASR: ATTRS.C Position */ +#define MPU_RASR_C_Msk (1UL << MPU_RASR_C_Pos) /*!< MPU RASR: ATTRS.C Mask */ + +#define MPU_RASR_B_Pos 16U /*!< MPU RASR: ATTRS.B Position */ +#define MPU_RASR_B_Msk (1UL << MPU_RASR_B_Pos) /*!< MPU RASR: ATTRS.B Mask */ + +#define MPU_RASR_SRD_Pos 8U /*!< MPU RASR: Sub-Region Disable Position */ +#define MPU_RASR_SRD_Msk (0xFFUL << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */ + +#define MPU_RASR_SIZE_Pos 1U /*!< MPU RASR: Region Size Field Position */ +#define MPU_RASR_SIZE_Msk (0x1FUL << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */ + +#define MPU_RASR_ENABLE_Pos 0U /*!< MPU RASR: Region enable bit Position */ +#define MPU_RASR_ENABLE_Msk (1UL /*<< MPU_RASR_ENABLE_Pos*/) /*!< MPU RASR: Region enable bit Disable Mask */ + +/*@} end of group CMSIS_MPU */ +#endif /* defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_FPU Floating Point Unit (FPU) + \brief Type definitions for the Floating Point Unit (FPU) + @{ + */ + +/** + \brief Structure type to access the Floating Point Unit (FPU). + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IOM uint32_t FPCCR; /*!< Offset: 0x004 (R/W) Floating-Point Context Control Register */ + __IOM uint32_t FPCAR; /*!< Offset: 0x008 (R/W) Floating-Point Context Address Register */ + __IOM uint32_t FPDSCR; /*!< Offset: 0x00C (R/W) Floating-Point Default Status Control Register */ + __IM uint32_t MVFR0; /*!< Offset: 0x010 (R/ ) Media and FP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x014 (R/ ) Media and FP Feature Register 1 */ + __IM uint32_t MVFR2; /*!< Offset: 0x018 (R/ ) Media and FP Feature Register 2 */ +} FPU_Type; + +/* Floating-Point Context Control Register Definitions */ +#define FPU_FPCCR_ASPEN_Pos 31U /*!< FPCCR: ASPEN bit Position */ +#define FPU_FPCCR_ASPEN_Msk (1UL << FPU_FPCCR_ASPEN_Pos) /*!< FPCCR: ASPEN bit Mask */ + +#define FPU_FPCCR_LSPEN_Pos 30U /*!< FPCCR: LSPEN Position */ +#define FPU_FPCCR_LSPEN_Msk (1UL << FPU_FPCCR_LSPEN_Pos) /*!< FPCCR: LSPEN bit Mask */ + +#define FPU_FPCCR_MONRDY_Pos 8U /*!< FPCCR: MONRDY Position */ +#define FPU_FPCCR_MONRDY_Msk (1UL << FPU_FPCCR_MONRDY_Pos) /*!< FPCCR: MONRDY bit Mask */ + +#define FPU_FPCCR_BFRDY_Pos 6U /*!< FPCCR: BFRDY Position */ +#define FPU_FPCCR_BFRDY_Msk (1UL << FPU_FPCCR_BFRDY_Pos) /*!< FPCCR: BFRDY bit Mask */ + +#define FPU_FPCCR_MMRDY_Pos 5U /*!< FPCCR: MMRDY Position */ +#define FPU_FPCCR_MMRDY_Msk (1UL << FPU_FPCCR_MMRDY_Pos) /*!< FPCCR: MMRDY bit Mask */ + +#define FPU_FPCCR_HFRDY_Pos 4U /*!< FPCCR: HFRDY Position */ +#define FPU_FPCCR_HFRDY_Msk (1UL << FPU_FPCCR_HFRDY_Pos) /*!< FPCCR: HFRDY bit Mask */ + +#define FPU_FPCCR_THREAD_Pos 3U /*!< FPCCR: processor mode bit Position */ +#define FPU_FPCCR_THREAD_Msk (1UL << FPU_FPCCR_THREAD_Pos) /*!< FPCCR: processor mode active bit Mask */ + +#define FPU_FPCCR_USER_Pos 1U /*!< FPCCR: privilege level bit Position */ +#define FPU_FPCCR_USER_Msk (1UL << FPU_FPCCR_USER_Pos) /*!< FPCCR: privilege level bit Mask */ + +#define FPU_FPCCR_LSPACT_Pos 0U /*!< FPCCR: Lazy state preservation active bit Position */ +#define FPU_FPCCR_LSPACT_Msk (1UL /*<< FPU_FPCCR_LSPACT_Pos*/) /*!< FPCCR: Lazy state preservation active bit Mask */ + +/* Floating-Point Context Address Register Definitions */ +#define FPU_FPCAR_ADDRESS_Pos 3U /*!< FPCAR: ADDRESS bit Position */ +#define FPU_FPCAR_ADDRESS_Msk (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos) /*!< FPCAR: ADDRESS bit Mask */ + +/* Floating-Point Default Status Control Register Definitions */ +#define FPU_FPDSCR_AHP_Pos 26U /*!< FPDSCR: AHP bit Position */ +#define FPU_FPDSCR_AHP_Msk (1UL << FPU_FPDSCR_AHP_Pos) /*!< FPDSCR: AHP bit Mask */ + +#define FPU_FPDSCR_DN_Pos 25U /*!< FPDSCR: DN bit Position */ +#define FPU_FPDSCR_DN_Msk (1UL << FPU_FPDSCR_DN_Pos) /*!< FPDSCR: DN bit Mask */ + +#define FPU_FPDSCR_FZ_Pos 24U /*!< FPDSCR: FZ bit Position */ +#define FPU_FPDSCR_FZ_Msk (1UL << FPU_FPDSCR_FZ_Pos) /*!< FPDSCR: FZ bit Mask */ + +#define FPU_FPDSCR_RMode_Pos 22U /*!< FPDSCR: RMode bit Position */ +#define FPU_FPDSCR_RMode_Msk (3UL << FPU_FPDSCR_RMode_Pos) /*!< FPDSCR: RMode bit Mask */ + +/* Media and FP Feature Register 0 Definitions */ +#define FPU_MVFR0_FP_rounding_modes_Pos 28U /*!< MVFR0: FP rounding modes bits Position */ +#define FPU_MVFR0_FP_rounding_modes_Msk (0xFUL << FPU_MVFR0_FP_rounding_modes_Pos) /*!< MVFR0: FP rounding modes bits Mask */ + +#define FPU_MVFR0_Short_vectors_Pos 24U /*!< MVFR0: Short vectors bits Position */ +#define FPU_MVFR0_Short_vectors_Msk (0xFUL << FPU_MVFR0_Short_vectors_Pos) /*!< MVFR0: Short vectors bits Mask */ + +#define FPU_MVFR0_Square_root_Pos 20U /*!< MVFR0: Square root bits Position */ +#define FPU_MVFR0_Square_root_Msk (0xFUL << FPU_MVFR0_Square_root_Pos) /*!< MVFR0: Square root bits Mask */ + +#define FPU_MVFR0_Divide_Pos 16U /*!< MVFR0: Divide bits Position */ +#define FPU_MVFR0_Divide_Msk (0xFUL << FPU_MVFR0_Divide_Pos) /*!< MVFR0: Divide bits Mask */ + +#define FPU_MVFR0_FP_excep_trapping_Pos 12U /*!< MVFR0: FP exception trapping bits Position */ +#define FPU_MVFR0_FP_excep_trapping_Msk (0xFUL << FPU_MVFR0_FP_excep_trapping_Pos) /*!< MVFR0: FP exception trapping bits Mask */ + +#define FPU_MVFR0_Double_precision_Pos 8U /*!< MVFR0: Double-precision bits Position */ +#define FPU_MVFR0_Double_precision_Msk (0xFUL << FPU_MVFR0_Double_precision_Pos) /*!< MVFR0: Double-precision bits Mask */ + +#define FPU_MVFR0_Single_precision_Pos 4U /*!< MVFR0: Single-precision bits Position */ +#define FPU_MVFR0_Single_precision_Msk (0xFUL << FPU_MVFR0_Single_precision_Pos) /*!< MVFR0: Single-precision bits Mask */ + +#define FPU_MVFR0_A_SIMD_registers_Pos 0U /*!< MVFR0: A_SIMD registers bits Position */ +#define FPU_MVFR0_A_SIMD_registers_Msk (0xFUL /*<< FPU_MVFR0_A_SIMD_registers_Pos*/) /*!< MVFR0: A_SIMD registers bits Mask */ + +/* Media and FP Feature Register 1 Definitions */ +#define FPU_MVFR1_FP_fused_MAC_Pos 28U /*!< MVFR1: FP fused MAC bits Position */ +#define FPU_MVFR1_FP_fused_MAC_Msk (0xFUL << FPU_MVFR1_FP_fused_MAC_Pos) /*!< MVFR1: FP fused MAC bits Mask */ + +#define FPU_MVFR1_FP_HPFP_Pos 24U /*!< MVFR1: FP HPFP bits Position */ +#define FPU_MVFR1_FP_HPFP_Msk (0xFUL << FPU_MVFR1_FP_HPFP_Pos) /*!< MVFR1: FP HPFP bits Mask */ + +#define FPU_MVFR1_D_NaN_mode_Pos 4U /*!< MVFR1: D_NaN mode bits Position */ +#define FPU_MVFR1_D_NaN_mode_Msk (0xFUL << FPU_MVFR1_D_NaN_mode_Pos) /*!< MVFR1: D_NaN mode bits Mask */ + +#define FPU_MVFR1_FtZ_mode_Pos 0U /*!< MVFR1: FtZ mode bits Position */ +#define FPU_MVFR1_FtZ_mode_Msk (0xFUL /*<< FPU_MVFR1_FtZ_mode_Pos*/) /*!< MVFR1: FtZ mode bits Mask */ + +/* Media and FP Feature Register 2 Definitions */ + +#define FPU_MVFR2_VFP_Misc_Pos 4U /*!< MVFR2: VFP Misc bits Position */ +#define FPU_MVFR2_VFP_Misc_Msk (0xFUL << FPU_MVFR2_VFP_Misc_Pos) /*!< MVFR2: VFP Misc bits Mask */ + +/*@} end of group CMSIS_FPU */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** + \brief Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register Definitions */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5U /*!< CoreDebug DHCSR: C_SNAPSTALL Position */ +#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register Definitions */ +#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register Definitions */ +#define CoreDebug_DEMCR_TRCENA_Pos 24U /*!< CoreDebug DEMCR: TRCENA Position */ +#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< CoreDebug DEMCR: TRCENA Mask */ + +#define CoreDebug_DEMCR_MON_REQ_Pos 19U /*!< CoreDebug DEMCR: MON_REQ Position */ +#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< CoreDebug DEMCR: MON_REQ Mask */ + +#define CoreDebug_DEMCR_MON_STEP_Pos 18U /*!< CoreDebug DEMCR: MON_STEP Position */ +#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< CoreDebug DEMCR: MON_STEP Mask */ + +#define CoreDebug_DEMCR_MON_PEND_Pos 17U /*!< CoreDebug DEMCR: MON_PEND Position */ +#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< CoreDebug DEMCR: MON_PEND Mask */ + +#define CoreDebug_DEMCR_MON_EN_Pos 16U /*!< CoreDebug DEMCR: MON_EN Position */ +#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< CoreDebug DEMCR: MON_EN Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_INTERR_Pos 9U /*!< CoreDebug DEMCR: VC_INTERR Position */ +#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< CoreDebug DEMCR: VC_INTERR Mask */ + +#define CoreDebug_DEMCR_VC_BUSERR_Pos 8U /*!< CoreDebug DEMCR: VC_BUSERR Position */ +#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< CoreDebug DEMCR: VC_BUSERR Mask */ + +#define CoreDebug_DEMCR_VC_STATERR_Pos 7U /*!< CoreDebug DEMCR: VC_STATERR Position */ +#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< CoreDebug DEMCR: VC_STATERR Mask */ + +#define CoreDebug_DEMCR_VC_CHKERR_Pos 6U /*!< CoreDebug DEMCR: VC_CHKERR Position */ +#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< CoreDebug DEMCR: VC_CHKERR Mask */ + +#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5U /*!< CoreDebug DEMCR: VC_NOCPERR Position */ +#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< CoreDebug DEMCR: VC_NOCPERR Mask */ + +#define CoreDebug_DEMCR_VC_MMERR_Pos 4U /*!< CoreDebug DEMCR: VC_MMERR Position */ +#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< CoreDebug DEMCR: VC_MMERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ +#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ +#define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ +#define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ +#define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ +#define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */ +#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ +#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ +#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + +#define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ +#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ +#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ +#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ +#define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */ +#define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ +#define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ +#define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE) /*!< Core Debug configuration struct */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ +#endif + +#define FPU_BASE (SCS_BASE + 0x0F30UL) /*!< Floating Point Unit */ +#define FPU ((FPU_Type *) FPU_BASE ) /*!< Floating Point Unit */ + +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Debug Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ + #define NVIC_GetActive __NVIC_GetActive + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* The following EXC_RETURN values are saved the LR on exception entry */ +#define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after return */ +#define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after return */ +#define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after return */ +#define EXC_RETURN_HANDLER_FPU (0xFFFFFFE1UL) /* return to Handler mode, uses MSP after return, restore floating-point state */ +#define EXC_RETURN_THREAD_MSP_FPU (0xFFFFFFE9UL) /* return to Thread mode, uses MSP after return, restore floating-point state */ +#define EXC_RETURN_THREAD_PSP_FPU (0xFFFFFFEDUL) /* return to Thread mode, uses PSP after return, restore floating-point state */ + + +/** + \brief Set Priority Grouping + \details Sets the priority grouping field using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + SCB->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping + \details Reads the priority grouping field from the NVIC Interrupt Controller. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void) +{ + return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + __COMPILER_BARRIER(); + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __COMPILER_BARRIER(); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IP[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC->IP[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t vectors = (uint32_t )SCB->VTOR; + (* (int *) (vectors + ((int32_t)IRQn + NVIC_USER_IRQ_OFFSET) * 4)) = vector; + __DSB(); +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t vectors = (uint32_t )SCB->VTOR; + return (uint32_t)(* (int *) (vectors + ((int32_t)IRQn + NVIC_USER_IRQ_OFFSET) * 4)); +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + SCB_AIRCR_SYSRESETREQ_Msk ); /* Keep priority group unchanged */ + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +/*@} end of CMSIS_Core_NVICFunctions */ + + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv7.h" + +#endif + + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + uint32_t mvfr0; + + mvfr0 = SCB->MVFR0; + if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x220U) + { + return 2U; /* Double + Single precision FPU */ + } + else if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x020U) + { + return 1U; /* Single precision FPU */ + } + else + { + return 0U; /* No FPU */ + } +} + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ########################## Cache functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_CacheFunctions Cache Functions + \brief Functions that configure Instruction and Data cache. + @{ + */ + +/* Cache Size ID Register Macros */ +#define CCSIDR_WAYS(x) (((x) & SCB_CCSIDR_ASSOCIATIVITY_Msk) >> SCB_CCSIDR_ASSOCIATIVITY_Pos) +#define CCSIDR_SETS(x) (((x) & SCB_CCSIDR_NUMSETS_Msk ) >> SCB_CCSIDR_NUMSETS_Pos ) + +#define __SCB_DCACHE_LINE_SIZE 32U /*!< Cortex-M7 cache line size is fixed to 32 bytes (8 words). See also register SCB_CCSIDR */ +#define __SCB_ICACHE_LINE_SIZE 32U /*!< Cortex-M7 cache line size is fixed to 32 bytes (8 words). See also register SCB_CCSIDR */ + +/** + \brief Enable I-Cache + \details Turns on I-Cache + */ +__STATIC_FORCEINLINE void SCB_EnableICache (void) +{ + #if defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U) + if (SCB->CCR & SCB_CCR_IC_Msk) return; /* return if ICache is already enabled */ + + __DSB(); + __ISB(); + SCB->ICIALLU = 0UL; /* invalidate I-Cache */ + __DSB(); + __ISB(); + SCB->CCR |= (uint32_t)SCB_CCR_IC_Msk; /* enable I-Cache */ + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Disable I-Cache + \details Turns off I-Cache + */ +__STATIC_FORCEINLINE void SCB_DisableICache (void) +{ + #if defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U) + __DSB(); + __ISB(); + SCB->CCR &= ~(uint32_t)SCB_CCR_IC_Msk; /* disable I-Cache */ + SCB->ICIALLU = 0UL; /* invalidate I-Cache */ + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Invalidate I-Cache + \details Invalidates I-Cache + */ +__STATIC_FORCEINLINE void SCB_InvalidateICache (void) +{ + #if defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U) + __DSB(); + __ISB(); + SCB->ICIALLU = 0UL; + __DSB(); + __ISB(); + #endif +} + + +/** + \brief I-Cache Invalidate by address + \details Invalidates I-Cache for the given address. + I-Cache is invalidated starting from a 32 byte aligned address in 32 byte granularity. + I-Cache memory blocks which are part of given address + given size are invalidated. + \param[in] addr address + \param[in] isize size of memory block (in number of bytes) +*/ +__STATIC_FORCEINLINE void SCB_InvalidateICache_by_Addr (void *addr, int32_t isize) +{ + #if defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U) + if ( isize > 0 ) { + int32_t op_size = isize + (((uint32_t)addr) & (__SCB_ICACHE_LINE_SIZE - 1U)); + uint32_t op_addr = (uint32_t)addr /* & ~(__SCB_ICACHE_LINE_SIZE - 1U) */; + + __DSB(); + + do { + SCB->ICIMVAU = op_addr; /* register accepts only 32byte aligned values, only bits 31..5 are valid */ + op_addr += __SCB_ICACHE_LINE_SIZE; + op_size -= __SCB_ICACHE_LINE_SIZE; + } while ( op_size > 0 ); + + __DSB(); + __ISB(); + } + #endif +} + + +/** + \brief Enable D-Cache + \details Turns on D-Cache + */ +__STATIC_FORCEINLINE void SCB_EnableDCache (void) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + uint32_t ccsidr; + uint32_t sets; + uint32_t ways; + + if (SCB->CCR & SCB_CCR_DC_Msk) return; /* return if DCache is already enabled */ + + SCB->CSSELR = 0U; /* select Level 1 data cache */ + __DSB(); + + ccsidr = SCB->CCSIDR; + + /* invalidate D-Cache */ + sets = (uint32_t)(CCSIDR_SETS(ccsidr)); + do { + ways = (uint32_t)(CCSIDR_WAYS(ccsidr)); + do { + SCB->DCISW = (((sets << SCB_DCISW_SET_Pos) & SCB_DCISW_SET_Msk) | + ((ways << SCB_DCISW_WAY_Pos) & SCB_DCISW_WAY_Msk) ); + #if defined ( __CC_ARM ) + __schedule_barrier(); + #endif + } while (ways-- != 0U); + } while(sets-- != 0U); + __DSB(); + + SCB->CCR |= (uint32_t)SCB_CCR_DC_Msk; /* enable D-Cache */ + + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Disable D-Cache + \details Turns off D-Cache + */ +__STATIC_FORCEINLINE void SCB_DisableDCache (void) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + uint32_t ccsidr; + uint32_t sets; + uint32_t ways; + + SCB->CSSELR = 0U; /* select Level 1 data cache */ + __DSB(); + + SCB->CCR &= ~(uint32_t)SCB_CCR_DC_Msk; /* disable D-Cache */ + __DSB(); + + ccsidr = SCB->CCSIDR; + + /* clean & invalidate D-Cache */ + sets = (uint32_t)(CCSIDR_SETS(ccsidr)); + do { + ways = (uint32_t)(CCSIDR_WAYS(ccsidr)); + do { + SCB->DCCISW = (((sets << SCB_DCCISW_SET_Pos) & SCB_DCCISW_SET_Msk) | + ((ways << SCB_DCCISW_WAY_Pos) & SCB_DCCISW_WAY_Msk) ); + #if defined ( __CC_ARM ) + __schedule_barrier(); + #endif + } while (ways-- != 0U); + } while(sets-- != 0U); + + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Invalidate D-Cache + \details Invalidates D-Cache + */ +__STATIC_FORCEINLINE void SCB_InvalidateDCache (void) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + uint32_t ccsidr; + uint32_t sets; + uint32_t ways; + + SCB->CSSELR = 0U; /* select Level 1 data cache */ + __DSB(); + + ccsidr = SCB->CCSIDR; + + /* invalidate D-Cache */ + sets = (uint32_t)(CCSIDR_SETS(ccsidr)); + do { + ways = (uint32_t)(CCSIDR_WAYS(ccsidr)); + do { + SCB->DCISW = (((sets << SCB_DCISW_SET_Pos) & SCB_DCISW_SET_Msk) | + ((ways << SCB_DCISW_WAY_Pos) & SCB_DCISW_WAY_Msk) ); + #if defined ( __CC_ARM ) + __schedule_barrier(); + #endif + } while (ways-- != 0U); + } while(sets-- != 0U); + + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Clean D-Cache + \details Cleans D-Cache + */ +__STATIC_FORCEINLINE void SCB_CleanDCache (void) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + uint32_t ccsidr; + uint32_t sets; + uint32_t ways; + + SCB->CSSELR = 0U; /* select Level 1 data cache */ + __DSB(); + + ccsidr = SCB->CCSIDR; + + /* clean D-Cache */ + sets = (uint32_t)(CCSIDR_SETS(ccsidr)); + do { + ways = (uint32_t)(CCSIDR_WAYS(ccsidr)); + do { + SCB->DCCSW = (((sets << SCB_DCCSW_SET_Pos) & SCB_DCCSW_SET_Msk) | + ((ways << SCB_DCCSW_WAY_Pos) & SCB_DCCSW_WAY_Msk) ); + #if defined ( __CC_ARM ) + __schedule_barrier(); + #endif + } while (ways-- != 0U); + } while(sets-- != 0U); + + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Clean & Invalidate D-Cache + \details Cleans and Invalidates D-Cache + */ +__STATIC_FORCEINLINE void SCB_CleanInvalidateDCache (void) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + uint32_t ccsidr; + uint32_t sets; + uint32_t ways; + + SCB->CSSELR = 0U; /* select Level 1 data cache */ + __DSB(); + + ccsidr = SCB->CCSIDR; + + /* clean & invalidate D-Cache */ + sets = (uint32_t)(CCSIDR_SETS(ccsidr)); + do { + ways = (uint32_t)(CCSIDR_WAYS(ccsidr)); + do { + SCB->DCCISW = (((sets << SCB_DCCISW_SET_Pos) & SCB_DCCISW_SET_Msk) | + ((ways << SCB_DCCISW_WAY_Pos) & SCB_DCCISW_WAY_Msk) ); + #if defined ( __CC_ARM ) + __schedule_barrier(); + #endif + } while (ways-- != 0U); + } while(sets-- != 0U); + + __DSB(); + __ISB(); + #endif +} + + +/** + \brief D-Cache Invalidate by address + \details Invalidates D-Cache for the given address. + D-Cache is invalidated starting from a 32 byte aligned address in 32 byte granularity. + D-Cache memory blocks which are part of given address + given size are invalidated. + \param[in] addr address + \param[in] dsize size of memory block (in number of bytes) +*/ +__STATIC_FORCEINLINE void SCB_InvalidateDCache_by_Addr (void *addr, int32_t dsize) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + if ( dsize > 0 ) { + int32_t op_size = dsize + (((uint32_t)addr) & (__SCB_DCACHE_LINE_SIZE - 1U)); + uint32_t op_addr = (uint32_t)addr /* & ~(__SCB_DCACHE_LINE_SIZE - 1U) */; + + __DSB(); + + do { + SCB->DCIMVAC = op_addr; /* register accepts only 32byte aligned values, only bits 31..5 are valid */ + op_addr += __SCB_DCACHE_LINE_SIZE; + op_size -= __SCB_DCACHE_LINE_SIZE; + } while ( op_size > 0 ); + + __DSB(); + __ISB(); + } + #endif +} + + +/** + \brief D-Cache Clean by address + \details Cleans D-Cache for the given address + D-Cache is cleaned starting from a 32 byte aligned address in 32 byte granularity. + D-Cache memory blocks which are part of given address + given size are cleaned. + \param[in] addr address + \param[in] dsize size of memory block (in number of bytes) +*/ +__STATIC_FORCEINLINE void SCB_CleanDCache_by_Addr (uint32_t *addr, int32_t dsize) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + if ( dsize > 0 ) { + int32_t op_size = dsize + (((uint32_t)addr) & (__SCB_DCACHE_LINE_SIZE - 1U)); + uint32_t op_addr = (uint32_t)addr /* & ~(__SCB_DCACHE_LINE_SIZE - 1U) */; + + __DSB(); + + do { + SCB->DCCMVAC = op_addr; /* register accepts only 32byte aligned values, only bits 31..5 are valid */ + op_addr += __SCB_DCACHE_LINE_SIZE; + op_size -= __SCB_DCACHE_LINE_SIZE; + } while ( op_size > 0 ); + + __DSB(); + __ISB(); + } + #endif +} + + +/** + \brief D-Cache Clean and Invalidate by address + \details Cleans and invalidates D_Cache for the given address + D-Cache is cleaned and invalidated starting from a 32 byte aligned address in 32 byte granularity. + D-Cache memory blocks which are part of given address + given size are cleaned and invalidated. + \param[in] addr address (aligned to 32-byte boundary) + \param[in] dsize size of memory block (in number of bytes) +*/ +__STATIC_FORCEINLINE void SCB_CleanInvalidateDCache_by_Addr (uint32_t *addr, int32_t dsize) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + if ( dsize > 0 ) { + int32_t op_size = dsize + (((uint32_t)addr) & (__SCB_DCACHE_LINE_SIZE - 1U)); + uint32_t op_addr = (uint32_t)addr /* & ~(__SCB_DCACHE_LINE_SIZE - 1U) */; + + __DSB(); + + do { + SCB->DCCIMVAC = op_addr; /* register accepts only 32byte aligned values, only bits 31..5 are valid */ + op_addr += __SCB_DCACHE_LINE_SIZE; + op_size -= __SCB_DCACHE_LINE_SIZE; + } while ( op_size > 0 ); + + __DSB(); + __ISB(); + } + #endif +} + +/*@} end of CMSIS_Core_CacheFunctions */ + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + +/* ##################################### Debug In/Output function ########################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_core_DebugFunctions ITM Functions + \brief Functions that access the ITM debug interface. + @{ + */ + +extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */ +#define ITM_RXBUFFER_EMPTY ((int32_t)0x5AA55AA5U) /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */ + + +/** + \brief ITM Send Character + \details Transmits a character via the ITM channel 0, and + \li Just returns when no debugger is connected that has booked the output. + \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted. + \param [in] ch Character to transmit. + \returns Character to transmit. + */ +__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch) +{ + if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) && /* ITM enabled */ + ((ITM->TER & 1UL ) != 0UL) ) /* ITM Port #0 enabled */ + { + while (ITM->PORT[0U].u32 == 0UL) + { + __NOP(); + } + ITM->PORT[0U].u8 = (uint8_t)ch; + } + return (ch); +} + + +/** + \brief ITM Receive Character + \details Inputs a character via the external variable \ref ITM_RxBuffer. + \return Received character. + \return -1 No character pending. + */ +__STATIC_INLINE int32_t ITM_ReceiveChar (void) +{ + int32_t ch = -1; /* no character available */ + + if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) + { + ch = ITM_RxBuffer; + ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ + } + + return (ch); +} + + +/** + \brief ITM Check Character + \details Checks whether a character is pending for reading in the variable \ref ITM_RxBuffer. + \return 0 No character available. + \return 1 Character available. + */ +__STATIC_INLINE int32_t ITM_CheckChar (void) +{ + + if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) + { + return (0); /* no character available */ + } + else + { + return (1); /* character available */ + } +} + +/*@} end of CMSIS_core_DebugFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM7_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/firmware/Drivers/CMSIS/Include/core_sc000.h b/firmware/Drivers/CMSIS/Include/core_sc000.h new file mode 100644 index 0000000..cf92577 --- /dev/null +++ b/firmware/Drivers/CMSIS/Include/core_sc000.h @@ -0,0 +1,1025 @@ +/**************************************************************************//** + * @file core_sc000.h + * @brief CMSIS SC000 Core Peripheral Access Layer Header File + * @version V5.0.6 + * @date 12. November 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_SC000_H_GENERIC +#define __CORE_SC000_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup SC000 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS SC000 definitions */ +#define __SC000_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __SC000_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __SC000_CMSIS_VERSION ((__SC000_CMSIS_VERSION_MAIN << 16U) | \ + __SC000_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_SC (000U) /*!< Cortex secure core */ + +/** __FPU_USED indicates whether an FPU is used or not. + This core does not support an FPU at all +*/ +#define __FPU_USED 0U + +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_FP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_SC000_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_SC000_H_DEPENDANT +#define __CORE_SC000_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __SC000_REV + #define __SC000_REV 0x0000U + #warning "__SC000_REV not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 2U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group SC000 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core MPU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:28; /*!< bit: 0..27 Reserved */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:15; /*!< bit: 9..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t _reserved1:3; /*!< bit: 25..27 Reserved */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t _reserved0:1; /*!< bit: 0 Reserved */ + uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ + uint32_t _reserved1:30; /*!< bit: 2..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[1U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[31U]; + __IOM uint32_t ICER[1U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[31U]; + __IOM uint32_t ISPR[1U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[31U]; + __IOM uint32_t ICPR[1U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[31U]; + uint32_t RESERVED4[64U]; + __IOM uint32_t IP[8U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register */ +} NVIC_Type; + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + uint32_t RESERVED0[1U]; + __IOM uint32_t SHP[2U]; /*!< Offset: 0x01C (R/W) System Handlers Priority Registers. [0] is RESERVED */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + uint32_t RESERVED1[154U]; + __IOM uint32_t SFCR; /*!< Offset: 0x290 (R/W) Security Features Control Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_NMIPENDSET_Pos 31U /*!< SCB ICSR: NMIPENDSET Position */ +#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_STKALIGN_Pos 9U /*!< SCB CCR: STKALIGN Position */ +#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** + \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ +} SCnSCB_Type; + +/* Auxiliary Control Register Definitions */ +#define SCnSCB_ACTLR_DISMCYCINT_Pos 0U /*!< ACTLR: DISMCYCINT Position */ +#define SCnSCB_ACTLR_DISMCYCINT_Msk (1UL /*<< SCnSCB_ACTLR_DISMCYCINT_Pos*/) /*!< ACTLR: DISMCYCINT Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region RNRber Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RASR; /*!< Offset: 0x010 (R/W) MPU Region Attribute and Size Register */ +} MPU_Type; + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_ADDR_Pos 8U /*!< MPU RBAR: ADDR Position */ +#define MPU_RBAR_ADDR_Msk (0xFFFFFFUL << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */ + +#define MPU_RBAR_VALID_Pos 4U /*!< MPU RBAR: VALID Position */ +#define MPU_RBAR_VALID_Msk (1UL << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */ + +#define MPU_RBAR_REGION_Pos 0U /*!< MPU RBAR: REGION Position */ +#define MPU_RBAR_REGION_Msk (0xFUL /*<< MPU_RBAR_REGION_Pos*/) /*!< MPU RBAR: REGION Mask */ + +/* MPU Region Attribute and Size Register Definitions */ +#define MPU_RASR_ATTRS_Pos 16U /*!< MPU RASR: MPU Region Attribute field Position */ +#define MPU_RASR_ATTRS_Msk (0xFFFFUL << MPU_RASR_ATTRS_Pos) /*!< MPU RASR: MPU Region Attribute field Mask */ + +#define MPU_RASR_XN_Pos 28U /*!< MPU RASR: ATTRS.XN Position */ +#define MPU_RASR_XN_Msk (1UL << MPU_RASR_XN_Pos) /*!< MPU RASR: ATTRS.XN Mask */ + +#define MPU_RASR_AP_Pos 24U /*!< MPU RASR: ATTRS.AP Position */ +#define MPU_RASR_AP_Msk (0x7UL << MPU_RASR_AP_Pos) /*!< MPU RASR: ATTRS.AP Mask */ + +#define MPU_RASR_TEX_Pos 19U /*!< MPU RASR: ATTRS.TEX Position */ +#define MPU_RASR_TEX_Msk (0x7UL << MPU_RASR_TEX_Pos) /*!< MPU RASR: ATTRS.TEX Mask */ + +#define MPU_RASR_S_Pos 18U /*!< MPU RASR: ATTRS.S Position */ +#define MPU_RASR_S_Msk (1UL << MPU_RASR_S_Pos) /*!< MPU RASR: ATTRS.S Mask */ + +#define MPU_RASR_C_Pos 17U /*!< MPU RASR: ATTRS.C Position */ +#define MPU_RASR_C_Msk (1UL << MPU_RASR_C_Pos) /*!< MPU RASR: ATTRS.C Mask */ + +#define MPU_RASR_B_Pos 16U /*!< MPU RASR: ATTRS.B Position */ +#define MPU_RASR_B_Msk (1UL << MPU_RASR_B_Pos) /*!< MPU RASR: ATTRS.B Mask */ + +#define MPU_RASR_SRD_Pos 8U /*!< MPU RASR: Sub-Region Disable Position */ +#define MPU_RASR_SRD_Msk (0xFFUL << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */ + +#define MPU_RASR_SIZE_Pos 1U /*!< MPU RASR: Region Size Field Position */ +#define MPU_RASR_SIZE_Msk (0x1FUL << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */ + +#define MPU_RASR_ENABLE_Pos 0U /*!< MPU RASR: Region enable bit Position */ +#define MPU_RASR_ENABLE_Msk (1UL /*<< MPU_RASR_ENABLE_Pos*/) /*!< MPU RASR: Region enable bit Disable Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief SC000 Core Debug Registers (DCB registers, SHCSR, and DFSR) are only accessible over DAP and not via processor. + Therefore they are not covered by the SC000 header file. + @{ + */ +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ +#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ +#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ +#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ +#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + +#define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ +#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ +#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ +#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ +#endif + +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else +/*#define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping not available for SC000 */ +/*#define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping not available for SC000 */ + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ +/*#define NVIC_GetActive __NVIC_GetActive not available for SC000 */ + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* The following EXC_RETURN values are saved the LR on exception entry */ +#define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after return */ +#define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after return */ +#define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after return */ + + +/* Interrupt Priorities are WORD accessible only under Armv6-M */ +/* The following MACROS handle generation of the register offset and byte masks */ +#define _BIT_SHIFT(IRQn) ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL) +#define _SHP_IDX(IRQn) ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) ) +#define _IP_IDX(IRQn) ( (((uint32_t)(int32_t)(IRQn)) >> 2UL) ) + + +/** + \brief Enable Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + __COMPILER_BARRIER(); + NVIC->ISER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __COMPILER_BARRIER(); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IP[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IP[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } + else + { + SCB->SHP[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IP[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return((uint32_t)(((SCB->SHP[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; + /* ARM Application Note 321 states that the M0 and M0+ do not require the architectural barrier - assume SC000 is the same */ +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + SCB_AIRCR_SYSRESETREQ_Msk); + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +/*@} end of CMSIS_Core_NVICFunctions */ + + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + return 0U; /* No FPU */ +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_SC000_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/firmware/Drivers/CMSIS/Include/core_sc300.h b/firmware/Drivers/CMSIS/Include/core_sc300.h new file mode 100644 index 0000000..40f3af8 --- /dev/null +++ b/firmware/Drivers/CMSIS/Include/core_sc300.h @@ -0,0 +1,1912 @@ +/**************************************************************************//** + * @file core_sc300.h + * @brief CMSIS SC300 Core Peripheral Access Layer Header File + * @version V5.0.8 + * @date 31. May 2019 + ******************************************************************************/ +/* + * Copyright (c) 2009-2019 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_SC300_H_GENERIC +#define __CORE_SC300_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup SC3000 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS SC300 definitions */ +#define __SC300_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __SC300_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __SC300_CMSIS_VERSION ((__SC300_CMSIS_VERSION_MAIN << 16U) | \ + __SC300_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_SC (300U) /*!< Cortex secure core */ + +/** __FPU_USED indicates whether an FPU is used or not. + This core does not support an FPU at all +*/ +#define __FPU_USED 0U + +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_FP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_SC300_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_SC300_H_DEPENDANT +#define __CORE_SC300_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __SC300_REV + #define __SC300_REV 0x0000U + #warning "__SC300_REV not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 3U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group SC300 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:27; /*!< bit: 0..26 Reserved */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + +#define APSR_Q_Pos 27U /*!< APSR: Q Position */ +#define APSR_Q_Msk (1UL << APSR_Q_Pos) /*!< APSR: Q Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:1; /*!< bit: 9 Reserved */ + uint32_t ICI_IT_1:6; /*!< bit: 10..15 ICI/IT part 1 */ + uint32_t _reserved1:8; /*!< bit: 16..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit */ + uint32_t ICI_IT_2:2; /*!< bit: 25..26 ICI/IT part 2 */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_Q_Pos 27U /*!< xPSR: Q Position */ +#define xPSR_Q_Msk (1UL << xPSR_Q_Pos) /*!< xPSR: Q Mask */ + +#define xPSR_ICI_IT_2_Pos 25U /*!< xPSR: ICI/IT part 2 Position */ +#define xPSR_ICI_IT_2_Msk (3UL << xPSR_ICI_IT_2_Pos) /*!< xPSR: ICI/IT part 2 Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_ICI_IT_1_Pos 10U /*!< xPSR: ICI/IT part 1 Position */ +#define xPSR_ICI_IT_1_Msk (0x3FUL << xPSR_ICI_IT_1_Pos) /*!< xPSR: ICI/IT part 1 Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ + uint32_t _reserved1:30; /*!< bit: 2..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[8U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[24U]; + __IOM uint32_t ICER[8U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RESERVED1[24U]; + __IOM uint32_t ISPR[8U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[24U]; + __IOM uint32_t ICPR[8U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[24U]; + __IOM uint32_t IABR[8U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[56U]; + __IOM uint8_t IP[240U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED5[644U]; + __OM uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */ +} NVIC_Type; + +/* Software Triggered Interrupt Register Definitions */ +#define NVIC_STIR_INTID_Pos 0U /*!< STIR: INTLINESNUM Position */ +#define NVIC_STIR_INTID_Msk (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/) /*!< STIR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + __IOM uint8_t SHP[12U]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + __IOM uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */ + __IOM uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ + __IOM uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ + __IOM uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */ + __IOM uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ + __IOM uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */ + __IM uint32_t PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + __IM uint32_t DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + __IM uint32_t ADR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __IM uint32_t MMFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __IM uint32_t ISAR[5U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + uint32_t RESERVED0[5U]; + __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ + uint32_t RESERVED1[129U]; + __IOM uint32_t SFCR; /*!< Offset: 0x290 (R/W) Security Features Control Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_NMIPENDSET_Pos 31U /*!< SCB ICSR: NMIPENDSET Position */ +#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Vector Table Offset Register Definitions */ +#define SCB_VTOR_TBLBASE_Pos 29U /*!< SCB VTOR: TBLBASE Position */ +#define SCB_VTOR_TBLBASE_Msk (1UL << SCB_VTOR_TBLBASE_Pos) /*!< SCB VTOR: TBLBASE Mask */ + +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x3FFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_PRIGROUP_Pos 8U /*!< SCB AIRCR: PRIGROUP Position */ +#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +#define SCB_AIRCR_VECTRESET_Pos 0U /*!< SCB AIRCR: VECTRESET Position */ +#define SCB_AIRCR_VECTRESET_Msk (1UL /*<< SCB_AIRCR_VECTRESET_Pos*/) /*!< SCB AIRCR: VECTRESET Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_STKALIGN_Pos 9U /*!< SCB CCR: STKALIGN Position */ +#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +#define SCB_CCR_NONBASETHRDENA_Pos 0U /*!< SCB CCR: NONBASETHRDENA Position */ +#define SCB_CCR_NONBASETHRDENA_Msk (1UL /*<< SCB_CCR_NONBASETHRDENA_Pos*/) /*!< SCB CCR: NONBASETHRDENA Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_USGFAULTENA_Pos 18U /*!< SCB SHCSR: USGFAULTENA Position */ +#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ + +#define SCB_SHCSR_BUSFAULTENA_Pos 17U /*!< SCB SHCSR: BUSFAULTENA Position */ +#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ + +#define SCB_SHCSR_MEMFAULTENA_Pos 16U /*!< SCB SHCSR: MEMFAULTENA Position */ +#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_BUSFAULTPENDED_Pos 14U /*!< SCB SHCSR: BUSFAULTPENDED Position */ +#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ + +#define SCB_SHCSR_MEMFAULTPENDED_Pos 13U /*!< SCB SHCSR: MEMFAULTPENDED Position */ +#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ + +#define SCB_SHCSR_USGFAULTPENDED_Pos 12U /*!< SCB SHCSR: USGFAULTPENDED Position */ +#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_MONITORACT_Pos 8U /*!< SCB SHCSR: MONITORACT Position */ +#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_USGFAULTACT_Pos 3U /*!< SCB SHCSR: USGFAULTACT Position */ +#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ + +#define SCB_SHCSR_BUSFAULTACT_Pos 1U /*!< SCB SHCSR: BUSFAULTACT Position */ +#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ + +#define SCB_SHCSR_MEMFAULTACT_Pos 0U /*!< SCB SHCSR: MEMFAULTACT Position */ +#define SCB_SHCSR_MEMFAULTACT_Msk (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/) /*!< SCB SHCSR: MEMFAULTACT Mask */ + +/* SCB Configurable Fault Status Register Definitions */ +#define SCB_CFSR_USGFAULTSR_Pos 16U /*!< SCB CFSR: Usage Fault Status Register Position */ +#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ + +#define SCB_CFSR_BUSFAULTSR_Pos 8U /*!< SCB CFSR: Bus Fault Status Register Position */ +#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ + +#define SCB_CFSR_MEMFAULTSR_Pos 0U /*!< SCB CFSR: Memory Manage Fault Status Register Position */ +#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ + +/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_MMARVALID_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 7U) /*!< SCB CFSR (MMFSR): MMARVALID Position */ +#define SCB_CFSR_MMARVALID_Msk (1UL << SCB_CFSR_MMARVALID_Pos) /*!< SCB CFSR (MMFSR): MMARVALID Mask */ + +#define SCB_CFSR_MSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 4U) /*!< SCB CFSR (MMFSR): MSTKERR Position */ +#define SCB_CFSR_MSTKERR_Msk (1UL << SCB_CFSR_MSTKERR_Pos) /*!< SCB CFSR (MMFSR): MSTKERR Mask */ + +#define SCB_CFSR_MUNSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 3U) /*!< SCB CFSR (MMFSR): MUNSTKERR Position */ +#define SCB_CFSR_MUNSTKERR_Msk (1UL << SCB_CFSR_MUNSTKERR_Pos) /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */ + +#define SCB_CFSR_DACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 1U) /*!< SCB CFSR (MMFSR): DACCVIOL Position */ +#define SCB_CFSR_DACCVIOL_Msk (1UL << SCB_CFSR_DACCVIOL_Pos) /*!< SCB CFSR (MMFSR): DACCVIOL Mask */ + +#define SCB_CFSR_IACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 0U) /*!< SCB CFSR (MMFSR): IACCVIOL Position */ +#define SCB_CFSR_IACCVIOL_Msk (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/) /*!< SCB CFSR (MMFSR): IACCVIOL Mask */ + +/* BusFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_BFARVALID_Pos (SCB_CFSR_BUSFAULTSR_Pos + 7U) /*!< SCB CFSR (BFSR): BFARVALID Position */ +#define SCB_CFSR_BFARVALID_Msk (1UL << SCB_CFSR_BFARVALID_Pos) /*!< SCB CFSR (BFSR): BFARVALID Mask */ + +#define SCB_CFSR_STKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 4U) /*!< SCB CFSR (BFSR): STKERR Position */ +#define SCB_CFSR_STKERR_Msk (1UL << SCB_CFSR_STKERR_Pos) /*!< SCB CFSR (BFSR): STKERR Mask */ + +#define SCB_CFSR_UNSTKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 3U) /*!< SCB CFSR (BFSR): UNSTKERR Position */ +#define SCB_CFSR_UNSTKERR_Msk (1UL << SCB_CFSR_UNSTKERR_Pos) /*!< SCB CFSR (BFSR): UNSTKERR Mask */ + +#define SCB_CFSR_IMPRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 2U) /*!< SCB CFSR (BFSR): IMPRECISERR Position */ +#define SCB_CFSR_IMPRECISERR_Msk (1UL << SCB_CFSR_IMPRECISERR_Pos) /*!< SCB CFSR (BFSR): IMPRECISERR Mask */ + +#define SCB_CFSR_PRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 1U) /*!< SCB CFSR (BFSR): PRECISERR Position */ +#define SCB_CFSR_PRECISERR_Msk (1UL << SCB_CFSR_PRECISERR_Pos) /*!< SCB CFSR (BFSR): PRECISERR Mask */ + +#define SCB_CFSR_IBUSERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 0U) /*!< SCB CFSR (BFSR): IBUSERR Position */ +#define SCB_CFSR_IBUSERR_Msk (1UL << SCB_CFSR_IBUSERR_Pos) /*!< SCB CFSR (BFSR): IBUSERR Mask */ + +/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_DIVBYZERO_Pos (SCB_CFSR_USGFAULTSR_Pos + 9U) /*!< SCB CFSR (UFSR): DIVBYZERO Position */ +#define SCB_CFSR_DIVBYZERO_Msk (1UL << SCB_CFSR_DIVBYZERO_Pos) /*!< SCB CFSR (UFSR): DIVBYZERO Mask */ + +#define SCB_CFSR_UNALIGNED_Pos (SCB_CFSR_USGFAULTSR_Pos + 8U) /*!< SCB CFSR (UFSR): UNALIGNED Position */ +#define SCB_CFSR_UNALIGNED_Msk (1UL << SCB_CFSR_UNALIGNED_Pos) /*!< SCB CFSR (UFSR): UNALIGNED Mask */ + +#define SCB_CFSR_NOCP_Pos (SCB_CFSR_USGFAULTSR_Pos + 3U) /*!< SCB CFSR (UFSR): NOCP Position */ +#define SCB_CFSR_NOCP_Msk (1UL << SCB_CFSR_NOCP_Pos) /*!< SCB CFSR (UFSR): NOCP Mask */ + +#define SCB_CFSR_INVPC_Pos (SCB_CFSR_USGFAULTSR_Pos + 2U) /*!< SCB CFSR (UFSR): INVPC Position */ +#define SCB_CFSR_INVPC_Msk (1UL << SCB_CFSR_INVPC_Pos) /*!< SCB CFSR (UFSR): INVPC Mask */ + +#define SCB_CFSR_INVSTATE_Pos (SCB_CFSR_USGFAULTSR_Pos + 1U) /*!< SCB CFSR (UFSR): INVSTATE Position */ +#define SCB_CFSR_INVSTATE_Msk (1UL << SCB_CFSR_INVSTATE_Pos) /*!< SCB CFSR (UFSR): INVSTATE Mask */ + +#define SCB_CFSR_UNDEFINSTR_Pos (SCB_CFSR_USGFAULTSR_Pos + 0U) /*!< SCB CFSR (UFSR): UNDEFINSTR Position */ +#define SCB_CFSR_UNDEFINSTR_Msk (1UL << SCB_CFSR_UNDEFINSTR_Pos) /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */ + +/* SCB Hard Fault Status Register Definitions */ +#define SCB_HFSR_DEBUGEVT_Pos 31U /*!< SCB HFSR: DEBUGEVT Position */ +#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ + +#define SCB_HFSR_FORCED_Pos 30U /*!< SCB HFSR: FORCED Position */ +#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ + +#define SCB_HFSR_VECTTBL_Pos 1U /*!< SCB HFSR: VECTTBL Position */ +#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ + +/* SCB Debug Fault Status Register Definitions */ +#define SCB_DFSR_EXTERNAL_Pos 4U /*!< SCB DFSR: EXTERNAL Position */ +#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ + +#define SCB_DFSR_VCATCH_Pos 3U /*!< SCB DFSR: VCATCH Position */ +#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ + +#define SCB_DFSR_DWTTRAP_Pos 2U /*!< SCB DFSR: DWTTRAP Position */ +#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ + +#define SCB_DFSR_BKPT_Pos 1U /*!< SCB DFSR: BKPT Position */ +#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ + +#define SCB_DFSR_HALTED_Pos 0U /*!< SCB DFSR: HALTED Position */ +#define SCB_DFSR_HALTED_Msk (1UL /*<< SCB_DFSR_HALTED_Pos*/) /*!< SCB DFSR: HALTED Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** + \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IM uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */ + __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ +} SCnSCB_Type; + +/* Interrupt Controller Type Register Definitions */ +#define SCnSCB_ICTR_INTLINESNUM_Pos 0U /*!< ICTR: INTLINESNUM Position */ +#define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/) /*!< ICTR: INTLINESNUM Mask */ + +/* Auxiliary Control Register Definitions */ +#define SCnSCB_ACTLR_DISFOLD_Pos 2U /*!< ACTLR: DISFOLD Position */ +#define SCnSCB_ACTLR_DISFOLD_Msk (1UL << SCnSCB_ACTLR_DISFOLD_Pos) /*!< ACTLR: DISFOLD Mask */ + +#define SCnSCB_ACTLR_DISDEFWBUF_Pos 1U /*!< ACTLR: DISDEFWBUF Position */ +#define SCnSCB_ACTLR_DISDEFWBUF_Msk (1UL << SCnSCB_ACTLR_DISDEFWBUF_Pos) /*!< ACTLR: DISDEFWBUF Mask */ + +#define SCnSCB_ACTLR_DISMCYCINT_Pos 0U /*!< ACTLR: DISMCYCINT Position */ +#define SCnSCB_ACTLR_DISMCYCINT_Msk (1UL /*<< SCnSCB_ACTLR_DISMCYCINT_Pos*/) /*!< ACTLR: DISMCYCINT Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_ITM Instrumentation Trace Macrocell (ITM) + \brief Type definitions for the Instrumentation Trace Macrocell (ITM) + @{ + */ + +/** + \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). + */ +typedef struct +{ + __OM union + { + __OM uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ + __OM uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ + __OM uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ + } PORT [32U]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ + uint32_t RESERVED0[864U]; + __IOM uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ + uint32_t RESERVED1[15U]; + __IOM uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ + uint32_t RESERVED2[15U]; + __IOM uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ + uint32_t RESERVED3[32U]; + uint32_t RESERVED4[43U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */ + uint32_t RESERVED5[6U]; + __IM uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Register #4 */ + __IM uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Register #5 */ + __IM uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Register #6 */ + __IM uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Register #7 */ + __IM uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Register #0 */ + __IM uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Register #1 */ + __IM uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Register #2 */ + __IM uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Register #3 */ + __IM uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Register #0 */ + __IM uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Register #1 */ + __IM uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Register #2 */ + __IM uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Register #3 */ +} ITM_Type; + +/* ITM Trace Privilege Register Definitions */ +#define ITM_TPR_PRIVMASK_Pos 0U /*!< ITM TPR: PRIVMASK Position */ +#define ITM_TPR_PRIVMASK_Msk (0xFUL /*<< ITM_TPR_PRIVMASK_Pos*/) /*!< ITM TPR: PRIVMASK Mask */ + +/* ITM Trace Control Register Definitions */ +#define ITM_TCR_BUSY_Pos 23U /*!< ITM TCR: BUSY Position */ +#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ + +#define ITM_TCR_TraceBusID_Pos 16U /*!< ITM TCR: ATBID Position */ +#define ITM_TCR_TraceBusID_Msk (0x7FUL << ITM_TCR_TraceBusID_Pos) /*!< ITM TCR: ATBID Mask */ + +#define ITM_TCR_GTSFREQ_Pos 10U /*!< ITM TCR: Global timestamp frequency Position */ +#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */ + +#define ITM_TCR_TSPrescale_Pos 8U /*!< ITM TCR: TSPrescale Position */ +#define ITM_TCR_TSPrescale_Msk (3UL << ITM_TCR_TSPrescale_Pos) /*!< ITM TCR: TSPrescale Mask */ + +#define ITM_TCR_SWOENA_Pos 4U /*!< ITM TCR: SWOENA Position */ +#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ + +#define ITM_TCR_DWTENA_Pos 3U /*!< ITM TCR: DWTENA Position */ +#define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ + +#define ITM_TCR_SYNCENA_Pos 2U /*!< ITM TCR: SYNCENA Position */ +#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ + +#define ITM_TCR_TSENA_Pos 1U /*!< ITM TCR: TSENA Position */ +#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ + +#define ITM_TCR_ITMENA_Pos 0U /*!< ITM TCR: ITM Enable bit Position */ +#define ITM_TCR_ITMENA_Msk (1UL /*<< ITM_TCR_ITMENA_Pos*/) /*!< ITM TCR: ITM Enable bit Mask */ + +/* ITM Lock Status Register Definitions */ +#define ITM_LSR_ByteAcc_Pos 2U /*!< ITM LSR: ByteAcc Position */ +#define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ + +#define ITM_LSR_Access_Pos 1U /*!< ITM LSR: Access Position */ +#define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ + +#define ITM_LSR_Present_Pos 0U /*!< ITM LSR: Present Position */ +#define ITM_LSR_Present_Msk (1UL /*<< ITM_LSR_Present_Pos*/) /*!< ITM LSR: Present Mask */ + +/*@}*/ /* end of group CMSIS_ITM */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + __IOM uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */ + __IOM uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */ + __IOM uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Register */ + __IOM uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */ + __IOM uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */ + __IOM uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Register */ + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + __IOM uint32_t MASK0; /*!< Offset: 0x024 (R/W) Mask Register 0 */ + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED0[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + __IOM uint32_t MASK1; /*!< Offset: 0x034 (R/W) Mask Register 1 */ + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + __IOM uint32_t MASK2; /*!< Offset: 0x044 (R/W) Mask Register 2 */ + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + __IOM uint32_t MASK3; /*!< Offset: 0x054 (R/W) Mask Register 3 */ + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +#define DWT_CTRL_CYCEVTENA_Pos 22U /*!< DWT CTRL: CYCEVTENA Position */ +#define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTRL: CYCEVTENA Mask */ + +#define DWT_CTRL_FOLDEVTENA_Pos 21U /*!< DWT CTRL: FOLDEVTENA Position */ +#define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTRL: FOLDEVTENA Mask */ + +#define DWT_CTRL_LSUEVTENA_Pos 20U /*!< DWT CTRL: LSUEVTENA Position */ +#define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTRL: LSUEVTENA Mask */ + +#define DWT_CTRL_SLEEPEVTENA_Pos 19U /*!< DWT CTRL: SLEEPEVTENA Position */ +#define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTRL: SLEEPEVTENA Mask */ + +#define DWT_CTRL_EXCEVTENA_Pos 18U /*!< DWT CTRL: EXCEVTENA Position */ +#define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTRL: EXCEVTENA Mask */ + +#define DWT_CTRL_CPIEVTENA_Pos 17U /*!< DWT CTRL: CPIEVTENA Position */ +#define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTRL: CPIEVTENA Mask */ + +#define DWT_CTRL_EXCTRCENA_Pos 16U /*!< DWT CTRL: EXCTRCENA Position */ +#define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTRL: EXCTRCENA Mask */ + +#define DWT_CTRL_PCSAMPLENA_Pos 12U /*!< DWT CTRL: PCSAMPLENA Position */ +#define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTRL: PCSAMPLENA Mask */ + +#define DWT_CTRL_SYNCTAP_Pos 10U /*!< DWT CTRL: SYNCTAP Position */ +#define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTRL: SYNCTAP Mask */ + +#define DWT_CTRL_CYCTAP_Pos 9U /*!< DWT CTRL: CYCTAP Position */ +#define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTRL: CYCTAP Mask */ + +#define DWT_CTRL_POSTINIT_Pos 5U /*!< DWT CTRL: POSTINIT Position */ +#define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTRL: POSTINIT Mask */ + +#define DWT_CTRL_POSTPRESET_Pos 1U /*!< DWT CTRL: POSTPRESET Position */ +#define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTRL: POSTPRESET Mask */ + +#define DWT_CTRL_CYCCNTENA_Pos 0U /*!< DWT CTRL: CYCCNTENA Position */ +#define DWT_CTRL_CYCCNTENA_Msk (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/) /*!< DWT CTRL: CYCCNTENA Mask */ + +/* DWT CPI Count Register Definitions */ +#define DWT_CPICNT_CPICNT_Pos 0U /*!< DWT CPICNT: CPICNT Position */ +#define DWT_CPICNT_CPICNT_Msk (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/) /*!< DWT CPICNT: CPICNT Mask */ + +/* DWT Exception Overhead Count Register Definitions */ +#define DWT_EXCCNT_EXCCNT_Pos 0U /*!< DWT EXCCNT: EXCCNT Position */ +#define DWT_EXCCNT_EXCCNT_Msk (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/) /*!< DWT EXCCNT: EXCCNT Mask */ + +/* DWT Sleep Count Register Definitions */ +#define DWT_SLEEPCNT_SLEEPCNT_Pos 0U /*!< DWT SLEEPCNT: SLEEPCNT Position */ +#define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/) /*!< DWT SLEEPCNT: SLEEPCNT Mask */ + +/* DWT LSU Count Register Definitions */ +#define DWT_LSUCNT_LSUCNT_Pos 0U /*!< DWT LSUCNT: LSUCNT Position */ +#define DWT_LSUCNT_LSUCNT_Msk (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/) /*!< DWT LSUCNT: LSUCNT Mask */ + +/* DWT Folded-instruction Count Register Definitions */ +#define DWT_FOLDCNT_FOLDCNT_Pos 0U /*!< DWT FOLDCNT: FOLDCNT Position */ +#define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/) /*!< DWT FOLDCNT: FOLDCNT Mask */ + +/* DWT Comparator Mask Register Definitions */ +#define DWT_MASK_MASK_Pos 0U /*!< DWT MASK: MASK Position */ +#define DWT_MASK_MASK_Msk (0x1FUL /*<< DWT_MASK_MASK_Pos*/) /*!< DWT MASK: MASK Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVADDR1_Pos 16U /*!< DWT FUNCTION: DATAVADDR1 Position */ +#define DWT_FUNCTION_DATAVADDR1_Msk (0xFUL << DWT_FUNCTION_DATAVADDR1_Pos) /*!< DWT FUNCTION: DATAVADDR1 Mask */ + +#define DWT_FUNCTION_DATAVADDR0_Pos 12U /*!< DWT FUNCTION: DATAVADDR0 Position */ +#define DWT_FUNCTION_DATAVADDR0_Msk (0xFUL << DWT_FUNCTION_DATAVADDR0_Pos) /*!< DWT FUNCTION: DATAVADDR0 Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_LNK1ENA_Pos 9U /*!< DWT FUNCTION: LNK1ENA Position */ +#define DWT_FUNCTION_LNK1ENA_Msk (0x1UL << DWT_FUNCTION_LNK1ENA_Pos) /*!< DWT FUNCTION: LNK1ENA Mask */ + +#define DWT_FUNCTION_DATAVMATCH_Pos 8U /*!< DWT FUNCTION: DATAVMATCH Position */ +#define DWT_FUNCTION_DATAVMATCH_Msk (0x1UL << DWT_FUNCTION_DATAVMATCH_Pos) /*!< DWT FUNCTION: DATAVMATCH Mask */ + +#define DWT_FUNCTION_CYCMATCH_Pos 7U /*!< DWT FUNCTION: CYCMATCH Position */ +#define DWT_FUNCTION_CYCMATCH_Msk (0x1UL << DWT_FUNCTION_CYCMATCH_Pos) /*!< DWT FUNCTION: CYCMATCH Mask */ + +#define DWT_FUNCTION_EMITRANGE_Pos 5U /*!< DWT FUNCTION: EMITRANGE Position */ +#define DWT_FUNCTION_EMITRANGE_Msk (0x1UL << DWT_FUNCTION_EMITRANGE_Pos) /*!< DWT FUNCTION: EMITRANGE Mask */ + +#define DWT_FUNCTION_FUNCTION_Pos 0U /*!< DWT FUNCTION: FUNCTION Position */ +#define DWT_FUNCTION_FUNCTION_Msk (0xFUL /*<< DWT_FUNCTION_FUNCTION_Pos*/) /*!< DWT FUNCTION: FUNCTION Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Size Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Size Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IM uint32_t FSCR; /*!< Offset: 0x308 (R/ ) Formatter Synchronization Counter Register */ + uint32_t RESERVED3[759U]; + __IM uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER Register */ + __IM uint32_t FIFO0; /*!< Offset: 0xEEC (R/ ) Integration ETM Data */ + __IM uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/ ) ITATBCTR2 */ + uint32_t RESERVED4[1U]; + __IM uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) ITATBCTR0 */ + __IM uint32_t FIFO1; /*!< Offset: 0xEFC (R/ ) Integration ITM Data */ + __IOM uint32_t ITCTRL; /*!< Offset: 0xF00 (R/W) Integration Mode Control */ + uint32_t RESERVED5[39U]; + __IOM uint32_t CLAIMSET; /*!< Offset: 0xFA0 (R/W) Claim tag set */ + __IOM uint32_t CLAIMCLR; /*!< Offset: 0xFA4 (R/W) Claim tag clear */ + uint32_t RESERVED7[8U]; + __IM uint32_t DEVID; /*!< Offset: 0xFC8 (R/ ) TPIU_DEVID */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) TPIU_DEVTYPE */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_PRESCALER_Pos 0U /*!< TPI ACPR: PRESCALER Position */ +#define TPI_ACPR_PRESCALER_Msk (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/) /*!< TPI ACPR: PRESCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */ +#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ + +/* TPI TRIGGER Register Definitions */ +#define TPI_TRIGGER_TRIGGER_Pos 0U /*!< TPI TRIGGER: TRIGGER Position */ +#define TPI_TRIGGER_TRIGGER_Msk (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/) /*!< TPI TRIGGER: TRIGGER Mask */ + +/* TPI Integration ETM Data Register Definitions (FIFO0) */ +#define TPI_FIFO0_ITM_ATVALID_Pos 29U /*!< TPI FIFO0: ITM_ATVALID Position */ +#define TPI_FIFO0_ITM_ATVALID_Msk (0x1UL << TPI_FIFO0_ITM_ATVALID_Pos) /*!< TPI FIFO0: ITM_ATVALID Mask */ + +#define TPI_FIFO0_ITM_bytecount_Pos 27U /*!< TPI FIFO0: ITM_bytecount Position */ +#define TPI_FIFO0_ITM_bytecount_Msk (0x3UL << TPI_FIFO0_ITM_bytecount_Pos) /*!< TPI FIFO0: ITM_bytecount Mask */ + +#define TPI_FIFO0_ETM_ATVALID_Pos 26U /*!< TPI FIFO0: ETM_ATVALID Position */ +#define TPI_FIFO0_ETM_ATVALID_Msk (0x1UL << TPI_FIFO0_ETM_ATVALID_Pos) /*!< TPI FIFO0: ETM_ATVALID Mask */ + +#define TPI_FIFO0_ETM_bytecount_Pos 24U /*!< TPI FIFO0: ETM_bytecount Position */ +#define TPI_FIFO0_ETM_bytecount_Msk (0x3UL << TPI_FIFO0_ETM_bytecount_Pos) /*!< TPI FIFO0: ETM_bytecount Mask */ + +#define TPI_FIFO0_ETM2_Pos 16U /*!< TPI FIFO0: ETM2 Position */ +#define TPI_FIFO0_ETM2_Msk (0xFFUL << TPI_FIFO0_ETM2_Pos) /*!< TPI FIFO0: ETM2 Mask */ + +#define TPI_FIFO0_ETM1_Pos 8U /*!< TPI FIFO0: ETM1 Position */ +#define TPI_FIFO0_ETM1_Msk (0xFFUL << TPI_FIFO0_ETM1_Pos) /*!< TPI FIFO0: ETM1 Mask */ + +#define TPI_FIFO0_ETM0_Pos 0U /*!< TPI FIFO0: ETM0 Position */ +#define TPI_FIFO0_ETM0_Msk (0xFFUL /*<< TPI_FIFO0_ETM0_Pos*/) /*!< TPI FIFO0: ETM0 Mask */ + +/* TPI ITATBCTR2 Register Definitions */ +#define TPI_ITATBCTR2_ATREADY2_Pos 0U /*!< TPI ITATBCTR2: ATREADY2 Position */ +#define TPI_ITATBCTR2_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY2_Pos*/) /*!< TPI ITATBCTR2: ATREADY2 Mask */ + +#define TPI_ITATBCTR2_ATREADY1_Pos 0U /*!< TPI ITATBCTR2: ATREADY1 Position */ +#define TPI_ITATBCTR2_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY1_Pos*/) /*!< TPI ITATBCTR2: ATREADY1 Mask */ + +/* TPI Integration ITM Data Register Definitions (FIFO1) */ +#define TPI_FIFO1_ITM_ATVALID_Pos 29U /*!< TPI FIFO1: ITM_ATVALID Position */ +#define TPI_FIFO1_ITM_ATVALID_Msk (0x1UL << TPI_FIFO1_ITM_ATVALID_Pos) /*!< TPI FIFO1: ITM_ATVALID Mask */ + +#define TPI_FIFO1_ITM_bytecount_Pos 27U /*!< TPI FIFO1: ITM_bytecount Position */ +#define TPI_FIFO1_ITM_bytecount_Msk (0x3UL << TPI_FIFO1_ITM_bytecount_Pos) /*!< TPI FIFO1: ITM_bytecount Mask */ + +#define TPI_FIFO1_ETM_ATVALID_Pos 26U /*!< TPI FIFO1: ETM_ATVALID Position */ +#define TPI_FIFO1_ETM_ATVALID_Msk (0x1UL << TPI_FIFO1_ETM_ATVALID_Pos) /*!< TPI FIFO1: ETM_ATVALID Mask */ + +#define TPI_FIFO1_ETM_bytecount_Pos 24U /*!< TPI FIFO1: ETM_bytecount Position */ +#define TPI_FIFO1_ETM_bytecount_Msk (0x3UL << TPI_FIFO1_ETM_bytecount_Pos) /*!< TPI FIFO1: ETM_bytecount Mask */ + +#define TPI_FIFO1_ITM2_Pos 16U /*!< TPI FIFO1: ITM2 Position */ +#define TPI_FIFO1_ITM2_Msk (0xFFUL << TPI_FIFO1_ITM2_Pos) /*!< TPI FIFO1: ITM2 Mask */ + +#define TPI_FIFO1_ITM1_Pos 8U /*!< TPI FIFO1: ITM1 Position */ +#define TPI_FIFO1_ITM1_Msk (0xFFUL << TPI_FIFO1_ITM1_Pos) /*!< TPI FIFO1: ITM1 Mask */ + +#define TPI_FIFO1_ITM0_Pos 0U /*!< TPI FIFO1: ITM0 Position */ +#define TPI_FIFO1_ITM0_Msk (0xFFUL /*<< TPI_FIFO1_ITM0_Pos*/) /*!< TPI FIFO1: ITM0 Mask */ + +/* TPI ITATBCTR0 Register Definitions */ +#define TPI_ITATBCTR0_ATREADY2_Pos 0U /*!< TPI ITATBCTR0: ATREADY2 Position */ +#define TPI_ITATBCTR0_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY2_Pos*/) /*!< TPI ITATBCTR0: ATREADY2 Mask */ + +#define TPI_ITATBCTR0_ATREADY1_Pos 0U /*!< TPI ITATBCTR0: ATREADY1 Position */ +#define TPI_ITATBCTR0_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY1_Pos*/) /*!< TPI ITATBCTR0: ATREADY1 Mask */ + +/* TPI Integration Mode Control Register Definitions */ +#define TPI_ITCTRL_Mode_Pos 0U /*!< TPI ITCTRL: Mode Position */ +#define TPI_ITCTRL_Mode_Msk (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/) /*!< TPI ITCTRL: Mode Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_MinBufSz_Pos 6U /*!< TPI DEVID: MinBufSz Position */ +#define TPI_DEVID_MinBufSz_Msk (0x7UL << TPI_DEVID_MinBufSz_Pos) /*!< TPI DEVID: MinBufSz Mask */ + +#define TPI_DEVID_AsynClkIn_Pos 5U /*!< TPI DEVID: AsynClkIn Position */ +#define TPI_DEVID_AsynClkIn_Msk (0x1UL << TPI_DEVID_AsynClkIn_Pos) /*!< TPI DEVID: AsynClkIn Mask */ + +#define TPI_DEVID_NrTraceInput_Pos 0U /*!< TPI DEVID: NrTraceInput Position */ +#define TPI_DEVID_NrTraceInput_Msk (0x1FUL /*<< TPI_DEVID_NrTraceInput_Pos*/) /*!< TPI DEVID: NrTraceInput Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region RNRber Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RASR; /*!< Offset: 0x010 (R/W) MPU Region Attribute and Size Register */ + __IOM uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Alias 1 Region Base Address Register */ + __IOM uint32_t RASR_A1; /*!< Offset: 0x018 (R/W) MPU Alias 1 Region Attribute and Size Register */ + __IOM uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Alias 2 Region Base Address Register */ + __IOM uint32_t RASR_A2; /*!< Offset: 0x020 (R/W) MPU Alias 2 Region Attribute and Size Register */ + __IOM uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Alias 3 Region Base Address Register */ + __IOM uint32_t RASR_A3; /*!< Offset: 0x028 (R/W) MPU Alias 3 Region Attribute and Size Register */ +} MPU_Type; + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_ADDR_Pos 5U /*!< MPU RBAR: ADDR Position */ +#define MPU_RBAR_ADDR_Msk (0x7FFFFFFUL << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */ + +#define MPU_RBAR_VALID_Pos 4U /*!< MPU RBAR: VALID Position */ +#define MPU_RBAR_VALID_Msk (1UL << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */ + +#define MPU_RBAR_REGION_Pos 0U /*!< MPU RBAR: REGION Position */ +#define MPU_RBAR_REGION_Msk (0xFUL /*<< MPU_RBAR_REGION_Pos*/) /*!< MPU RBAR: REGION Mask */ + +/* MPU Region Attribute and Size Register Definitions */ +#define MPU_RASR_ATTRS_Pos 16U /*!< MPU RASR: MPU Region Attribute field Position */ +#define MPU_RASR_ATTRS_Msk (0xFFFFUL << MPU_RASR_ATTRS_Pos) /*!< MPU RASR: MPU Region Attribute field Mask */ + +#define MPU_RASR_XN_Pos 28U /*!< MPU RASR: ATTRS.XN Position */ +#define MPU_RASR_XN_Msk (1UL << MPU_RASR_XN_Pos) /*!< MPU RASR: ATTRS.XN Mask */ + +#define MPU_RASR_AP_Pos 24U /*!< MPU RASR: ATTRS.AP Position */ +#define MPU_RASR_AP_Msk (0x7UL << MPU_RASR_AP_Pos) /*!< MPU RASR: ATTRS.AP Mask */ + +#define MPU_RASR_TEX_Pos 19U /*!< MPU RASR: ATTRS.TEX Position */ +#define MPU_RASR_TEX_Msk (0x7UL << MPU_RASR_TEX_Pos) /*!< MPU RASR: ATTRS.TEX Mask */ + +#define MPU_RASR_S_Pos 18U /*!< MPU RASR: ATTRS.S Position */ +#define MPU_RASR_S_Msk (1UL << MPU_RASR_S_Pos) /*!< MPU RASR: ATTRS.S Mask */ + +#define MPU_RASR_C_Pos 17U /*!< MPU RASR: ATTRS.C Position */ +#define MPU_RASR_C_Msk (1UL << MPU_RASR_C_Pos) /*!< MPU RASR: ATTRS.C Mask */ + +#define MPU_RASR_B_Pos 16U /*!< MPU RASR: ATTRS.B Position */ +#define MPU_RASR_B_Msk (1UL << MPU_RASR_B_Pos) /*!< MPU RASR: ATTRS.B Mask */ + +#define MPU_RASR_SRD_Pos 8U /*!< MPU RASR: Sub-Region Disable Position */ +#define MPU_RASR_SRD_Msk (0xFFUL << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */ + +#define MPU_RASR_SIZE_Pos 1U /*!< MPU RASR: Region Size Field Position */ +#define MPU_RASR_SIZE_Msk (0x1FUL << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */ + +#define MPU_RASR_ENABLE_Pos 0U /*!< MPU RASR: Region enable bit Position */ +#define MPU_RASR_ENABLE_Msk (1UL /*<< MPU_RASR_ENABLE_Pos*/) /*!< MPU RASR: Region enable bit Disable Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** + \brief Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register Definitions */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5U /*!< CoreDebug DHCSR: C_SNAPSTALL Position */ +#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register Definitions */ +#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register Definitions */ +#define CoreDebug_DEMCR_TRCENA_Pos 24U /*!< CoreDebug DEMCR: TRCENA Position */ +#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< CoreDebug DEMCR: TRCENA Mask */ + +#define CoreDebug_DEMCR_MON_REQ_Pos 19U /*!< CoreDebug DEMCR: MON_REQ Position */ +#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< CoreDebug DEMCR: MON_REQ Mask */ + +#define CoreDebug_DEMCR_MON_STEP_Pos 18U /*!< CoreDebug DEMCR: MON_STEP Position */ +#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< CoreDebug DEMCR: MON_STEP Mask */ + +#define CoreDebug_DEMCR_MON_PEND_Pos 17U /*!< CoreDebug DEMCR: MON_PEND Position */ +#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< CoreDebug DEMCR: MON_PEND Mask */ + +#define CoreDebug_DEMCR_MON_EN_Pos 16U /*!< CoreDebug DEMCR: MON_EN Position */ +#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< CoreDebug DEMCR: MON_EN Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_INTERR_Pos 9U /*!< CoreDebug DEMCR: VC_INTERR Position */ +#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< CoreDebug DEMCR: VC_INTERR Mask */ + +#define CoreDebug_DEMCR_VC_BUSERR_Pos 8U /*!< CoreDebug DEMCR: VC_BUSERR Position */ +#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< CoreDebug DEMCR: VC_BUSERR Mask */ + +#define CoreDebug_DEMCR_VC_STATERR_Pos 7U /*!< CoreDebug DEMCR: VC_STATERR Position */ +#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< CoreDebug DEMCR: VC_STATERR Mask */ + +#define CoreDebug_DEMCR_VC_CHKERR_Pos 6U /*!< CoreDebug DEMCR: VC_CHKERR Position */ +#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< CoreDebug DEMCR: VC_CHKERR Mask */ + +#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5U /*!< CoreDebug DEMCR: VC_NOCPERR Position */ +#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< CoreDebug DEMCR: VC_NOCPERR Mask */ + +#define CoreDebug_DEMCR_VC_MMERR_Pos 4U /*!< CoreDebug DEMCR: VC_MMERR Position */ +#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< CoreDebug DEMCR: VC_MMERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ +#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ +#define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ +#define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ +#define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ +#define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */ +#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ +#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ +#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + +#define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ +#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ +#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ +#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ +#define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */ +#define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ +#define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ +#define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE) /*!< Core Debug configuration struct */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ +#endif + +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Debug Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ + #define NVIC_GetActive __NVIC_GetActive + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* The following EXC_RETURN values are saved the LR on exception entry */ +#define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after return */ +#define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after return */ +#define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after return */ + + +/** + \brief Set Priority Grouping + \details Sets the priority grouping field using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + SCB->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping + \details Reads the priority grouping field from the NVIC Interrupt Controller. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void) +{ + return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + __COMPILER_BARRIER(); + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __COMPILER_BARRIER(); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IP[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC->IP[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t vectors = (uint32_t )SCB->VTOR; + (* (int *) (vectors + ((int32_t)IRQn + NVIC_USER_IRQ_OFFSET) * 4)) = vector; + /* ARM Application Note 321 states that the M3 does not require the architectural barrier */ +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t vectors = (uint32_t )SCB->VTOR; + return (uint32_t)(* (int *) (vectors + ((int32_t)IRQn + NVIC_USER_IRQ_OFFSET) * 4)); +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + SCB_AIRCR_SYSRESETREQ_Msk ); /* Keep priority group unchanged */ + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +/*@} end of CMSIS_Core_NVICFunctions */ + + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + return 0U; /* No FPU */ +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + +/* ##################################### Debug In/Output function ########################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_core_DebugFunctions ITM Functions + \brief Functions that access the ITM debug interface. + @{ + */ + +extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */ +#define ITM_RXBUFFER_EMPTY ((int32_t)0x5AA55AA5U) /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */ + + +/** + \brief ITM Send Character + \details Transmits a character via the ITM channel 0, and + \li Just returns when no debugger is connected that has booked the output. + \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted. + \param [in] ch Character to transmit. + \returns Character to transmit. + */ +__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch) +{ + if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) && /* ITM enabled */ + ((ITM->TER & 1UL ) != 0UL) ) /* ITM Port #0 enabled */ + { + while (ITM->PORT[0U].u32 == 0UL) + { + __NOP(); + } + ITM->PORT[0U].u8 = (uint8_t)ch; + } + return (ch); +} + + +/** + \brief ITM Receive Character + \details Inputs a character via the external variable \ref ITM_RxBuffer. + \return Received character. + \return -1 No character pending. + */ +__STATIC_INLINE int32_t ITM_ReceiveChar (void) +{ + int32_t ch = -1; /* no character available */ + + if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) + { + ch = ITM_RxBuffer; + ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ + } + + return (ch); +} + + +/** + \brief ITM Check Character + \details Checks whether a character is pending for reading in the variable \ref ITM_RxBuffer. + \return 0 No character available. + \return 1 Character available. + */ +__STATIC_INLINE int32_t ITM_CheckChar (void) +{ + + if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) + { + return (0); /* no character available */ + } + else + { + return (1); /* character available */ + } +} + +/*@} end of CMSIS_core_DebugFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_SC300_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/firmware/Drivers/CMSIS/Include/mpu_armv7.h b/firmware/Drivers/CMSIS/Include/mpu_armv7.h new file mode 100644 index 0000000..66ef59b --- /dev/null +++ b/firmware/Drivers/CMSIS/Include/mpu_armv7.h @@ -0,0 +1,272 @@ +/****************************************************************************** + * @file mpu_armv7.h + * @brief CMSIS MPU API for Armv7-M MPU + * @version V5.1.0 + * @date 08. March 2019 + ******************************************************************************/ +/* + * Copyright (c) 2017-2019 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef ARM_MPU_ARMV7_H +#define ARM_MPU_ARMV7_H + +#define ARM_MPU_REGION_SIZE_32B ((uint8_t)0x04U) ///!< MPU Region Size 32 Bytes +#define ARM_MPU_REGION_SIZE_64B ((uint8_t)0x05U) ///!< MPU Region Size 64 Bytes +#define ARM_MPU_REGION_SIZE_128B ((uint8_t)0x06U) ///!< MPU Region Size 128 Bytes +#define ARM_MPU_REGION_SIZE_256B ((uint8_t)0x07U) ///!< MPU Region Size 256 Bytes +#define ARM_MPU_REGION_SIZE_512B ((uint8_t)0x08U) ///!< MPU Region Size 512 Bytes +#define ARM_MPU_REGION_SIZE_1KB ((uint8_t)0x09U) ///!< MPU Region Size 1 KByte +#define ARM_MPU_REGION_SIZE_2KB ((uint8_t)0x0AU) ///!< MPU Region Size 2 KBytes +#define ARM_MPU_REGION_SIZE_4KB ((uint8_t)0x0BU) ///!< MPU Region Size 4 KBytes +#define ARM_MPU_REGION_SIZE_8KB ((uint8_t)0x0CU) ///!< MPU Region Size 8 KBytes +#define ARM_MPU_REGION_SIZE_16KB ((uint8_t)0x0DU) ///!< MPU Region Size 16 KBytes +#define ARM_MPU_REGION_SIZE_32KB ((uint8_t)0x0EU) ///!< MPU Region Size 32 KBytes +#define ARM_MPU_REGION_SIZE_64KB ((uint8_t)0x0FU) ///!< MPU Region Size 64 KBytes +#define ARM_MPU_REGION_SIZE_128KB ((uint8_t)0x10U) ///!< MPU Region Size 128 KBytes +#define ARM_MPU_REGION_SIZE_256KB ((uint8_t)0x11U) ///!< MPU Region Size 256 KBytes +#define ARM_MPU_REGION_SIZE_512KB ((uint8_t)0x12U) ///!< MPU Region Size 512 KBytes +#define ARM_MPU_REGION_SIZE_1MB ((uint8_t)0x13U) ///!< MPU Region Size 1 MByte +#define ARM_MPU_REGION_SIZE_2MB ((uint8_t)0x14U) ///!< MPU Region Size 2 MBytes +#define ARM_MPU_REGION_SIZE_4MB ((uint8_t)0x15U) ///!< MPU Region Size 4 MBytes +#define ARM_MPU_REGION_SIZE_8MB ((uint8_t)0x16U) ///!< MPU Region Size 8 MBytes +#define ARM_MPU_REGION_SIZE_16MB ((uint8_t)0x17U) ///!< MPU Region Size 16 MBytes +#define ARM_MPU_REGION_SIZE_32MB ((uint8_t)0x18U) ///!< MPU Region Size 32 MBytes +#define ARM_MPU_REGION_SIZE_64MB ((uint8_t)0x19U) ///!< MPU Region Size 64 MBytes +#define ARM_MPU_REGION_SIZE_128MB ((uint8_t)0x1AU) ///!< MPU Region Size 128 MBytes +#define ARM_MPU_REGION_SIZE_256MB ((uint8_t)0x1BU) ///!< MPU Region Size 256 MBytes +#define ARM_MPU_REGION_SIZE_512MB ((uint8_t)0x1CU) ///!< MPU Region Size 512 MBytes +#define ARM_MPU_REGION_SIZE_1GB ((uint8_t)0x1DU) ///!< MPU Region Size 1 GByte +#define ARM_MPU_REGION_SIZE_2GB ((uint8_t)0x1EU) ///!< MPU Region Size 2 GBytes +#define ARM_MPU_REGION_SIZE_4GB ((uint8_t)0x1FU) ///!< MPU Region Size 4 GBytes + +#define ARM_MPU_AP_NONE 0U ///!< MPU Access Permission no access +#define ARM_MPU_AP_PRIV 1U ///!< MPU Access Permission privileged access only +#define ARM_MPU_AP_URO 2U ///!< MPU Access Permission unprivileged access read-only +#define ARM_MPU_AP_FULL 3U ///!< MPU Access Permission full access +#define ARM_MPU_AP_PRO 5U ///!< MPU Access Permission privileged access read-only +#define ARM_MPU_AP_RO 6U ///!< MPU Access Permission read-only access + +/** MPU Region Base Address Register Value +* +* \param Region The region to be configured, number 0 to 15. +* \param BaseAddress The base address for the region. +*/ +#define ARM_MPU_RBAR(Region, BaseAddress) \ + (((BaseAddress) & MPU_RBAR_ADDR_Msk) | \ + ((Region) & MPU_RBAR_REGION_Msk) | \ + (MPU_RBAR_VALID_Msk)) + +/** +* MPU Memory Access Attributes +* +* \param TypeExtField Type extension field, allows you to configure memory access type, for example strongly ordered, peripheral. +* \param IsShareable Region is shareable between multiple bus masters. +* \param IsCacheable Region is cacheable, i.e. its value may be kept in cache. +* \param IsBufferable Region is bufferable, i.e. using write-back caching. Cacheable but non-bufferable regions use write-through policy. +*/ +#define ARM_MPU_ACCESS_(TypeExtField, IsShareable, IsCacheable, IsBufferable) \ + ((((TypeExtField) << MPU_RASR_TEX_Pos) & MPU_RASR_TEX_Msk) | \ + (((IsShareable) << MPU_RASR_S_Pos) & MPU_RASR_S_Msk) | \ + (((IsCacheable) << MPU_RASR_C_Pos) & MPU_RASR_C_Msk) | \ + (((IsBufferable) << MPU_RASR_B_Pos) & MPU_RASR_B_Msk)) + +/** +* MPU Region Attribute and Size Register Value +* +* \param DisableExec Instruction access disable bit, 1= disable instruction fetches. +* \param AccessPermission Data access permissions, allows you to configure read/write access for User and Privileged mode. +* \param AccessAttributes Memory access attribution, see \ref ARM_MPU_ACCESS_. +* \param SubRegionDisable Sub-region disable field. +* \param Size Region size of the region to be configured, for example 4K, 8K. +*/ +#define ARM_MPU_RASR_EX(DisableExec, AccessPermission, AccessAttributes, SubRegionDisable, Size) \ + ((((DisableExec) << MPU_RASR_XN_Pos) & MPU_RASR_XN_Msk) | \ + (((AccessPermission) << MPU_RASR_AP_Pos) & MPU_RASR_AP_Msk) | \ + (((AccessAttributes) & (MPU_RASR_TEX_Msk | MPU_RASR_S_Msk | MPU_RASR_C_Msk | MPU_RASR_B_Msk))) | \ + (((SubRegionDisable) << MPU_RASR_SRD_Pos) & MPU_RASR_SRD_Msk) | \ + (((Size) << MPU_RASR_SIZE_Pos) & MPU_RASR_SIZE_Msk) | \ + (((MPU_RASR_ENABLE_Msk)))) + +/** +* MPU Region Attribute and Size Register Value +* +* \param DisableExec Instruction access disable bit, 1= disable instruction fetches. +* \param AccessPermission Data access permissions, allows you to configure read/write access for User and Privileged mode. +* \param TypeExtField Type extension field, allows you to configure memory access type, for example strongly ordered, peripheral. +* \param IsShareable Region is shareable between multiple bus masters. +* \param IsCacheable Region is cacheable, i.e. its value may be kept in cache. +* \param IsBufferable Region is bufferable, i.e. using write-back caching. Cacheable but non-bufferable regions use write-through policy. +* \param SubRegionDisable Sub-region disable field. +* \param Size Region size of the region to be configured, for example 4K, 8K. +*/ +#define ARM_MPU_RASR(DisableExec, AccessPermission, TypeExtField, IsShareable, IsCacheable, IsBufferable, SubRegionDisable, Size) \ + ARM_MPU_RASR_EX(DisableExec, AccessPermission, ARM_MPU_ACCESS_(TypeExtField, IsShareable, IsCacheable, IsBufferable), SubRegionDisable, Size) + +/** +* MPU Memory Access Attribute for strongly ordered memory. +* - TEX: 000b +* - Shareable +* - Non-cacheable +* - Non-bufferable +*/ +#define ARM_MPU_ACCESS_ORDERED ARM_MPU_ACCESS_(0U, 1U, 0U, 0U) + +/** +* MPU Memory Access Attribute for device memory. +* - TEX: 000b (if shareable) or 010b (if non-shareable) +* - Shareable or non-shareable +* - Non-cacheable +* - Bufferable (if shareable) or non-bufferable (if non-shareable) +* +* \param IsShareable Configures the device memory as shareable or non-shareable. +*/ +#define ARM_MPU_ACCESS_DEVICE(IsShareable) ((IsShareable) ? ARM_MPU_ACCESS_(0U, 1U, 0U, 1U) : ARM_MPU_ACCESS_(2U, 0U, 0U, 0U)) + +/** +* MPU Memory Access Attribute for normal memory. +* - TEX: 1BBb (reflecting outer cacheability rules) +* - Shareable or non-shareable +* - Cacheable or non-cacheable (reflecting inner cacheability rules) +* - Bufferable or non-bufferable (reflecting inner cacheability rules) +* +* \param OuterCp Configures the outer cache policy. +* \param InnerCp Configures the inner cache policy. +* \param IsShareable Configures the memory as shareable or non-shareable. +*/ +#define ARM_MPU_ACCESS_NORMAL(OuterCp, InnerCp, IsShareable) ARM_MPU_ACCESS_((4U | (OuterCp)), IsShareable, ((InnerCp) & 2U), ((InnerCp) & 1U)) + +/** +* MPU Memory Access Attribute non-cacheable policy. +*/ +#define ARM_MPU_CACHEP_NOCACHE 0U + +/** +* MPU Memory Access Attribute write-back, write and read allocate policy. +*/ +#define ARM_MPU_CACHEP_WB_WRA 1U + +/** +* MPU Memory Access Attribute write-through, no write allocate policy. +*/ +#define ARM_MPU_CACHEP_WT_NWA 2U + +/** +* MPU Memory Access Attribute write-back, no write allocate policy. +*/ +#define ARM_MPU_CACHEP_WB_NWA 3U + + +/** +* Struct for a single MPU Region +*/ +typedef struct { + uint32_t RBAR; //!< The region base address register value (RBAR) + uint32_t RASR; //!< The region attribute and size register value (RASR) \ref MPU_RASR +} ARM_MPU_Region_t; + +/** Enable the MPU. +* \param MPU_Control Default access permissions for unconfigured regions. +*/ +__STATIC_INLINE void ARM_MPU_Enable(uint32_t MPU_Control) +{ + MPU->CTRL = MPU_Control | MPU_CTRL_ENABLE_Msk; +#ifdef SCB_SHCSR_MEMFAULTENA_Msk + SCB->SHCSR |= SCB_SHCSR_MEMFAULTENA_Msk; +#endif + __DSB(); + __ISB(); +} + +/** Disable the MPU. +*/ +__STATIC_INLINE void ARM_MPU_Disable(void) +{ + __DMB(); +#ifdef SCB_SHCSR_MEMFAULTENA_Msk + SCB->SHCSR &= ~SCB_SHCSR_MEMFAULTENA_Msk; +#endif + MPU->CTRL &= ~MPU_CTRL_ENABLE_Msk; +} + +/** Clear and disable the given MPU region. +* \param rnr Region number to be cleared. +*/ +__STATIC_INLINE void ARM_MPU_ClrRegion(uint32_t rnr) +{ + MPU->RNR = rnr; + MPU->RASR = 0U; +} + +/** Configure an MPU region. +* \param rbar Value for RBAR register. +* \param rsar Value for RSAR register. +*/ +__STATIC_INLINE void ARM_MPU_SetRegion(uint32_t rbar, uint32_t rasr) +{ + MPU->RBAR = rbar; + MPU->RASR = rasr; +} + +/** Configure the given MPU region. +* \param rnr Region number to be configured. +* \param rbar Value for RBAR register. +* \param rsar Value for RSAR register. +*/ +__STATIC_INLINE void ARM_MPU_SetRegionEx(uint32_t rnr, uint32_t rbar, uint32_t rasr) +{ + MPU->RNR = rnr; + MPU->RBAR = rbar; + MPU->RASR = rasr; +} + +/** Memcopy with strictly ordered memory access, e.g. for register targets. +* \param dst Destination data is copied to. +* \param src Source data is copied from. +* \param len Amount of data words to be copied. +*/ +__STATIC_INLINE void ARM_MPU_OrderedMemcpy(volatile uint32_t* dst, const uint32_t* __RESTRICT src, uint32_t len) +{ + uint32_t i; + for (i = 0U; i < len; ++i) + { + dst[i] = src[i]; + } +} + +/** Load the given number of MPU regions from a table. +* \param table Pointer to the MPU configuration table. +* \param cnt Amount of regions to be configured. +*/ +__STATIC_INLINE void ARM_MPU_Load(ARM_MPU_Region_t const* table, uint32_t cnt) +{ + const uint32_t rowWordSize = sizeof(ARM_MPU_Region_t)/4U; + while (cnt > MPU_TYPE_RALIASES) { + ARM_MPU_OrderedMemcpy(&(MPU->RBAR), &(table->RBAR), MPU_TYPE_RALIASES*rowWordSize); + table += MPU_TYPE_RALIASES; + cnt -= MPU_TYPE_RALIASES; + } + ARM_MPU_OrderedMemcpy(&(MPU->RBAR), &(table->RBAR), cnt*rowWordSize); +} + +#endif diff --git a/firmware/Drivers/CMSIS/Include/mpu_armv8.h b/firmware/Drivers/CMSIS/Include/mpu_armv8.h new file mode 100644 index 0000000..0041d4d --- /dev/null +++ b/firmware/Drivers/CMSIS/Include/mpu_armv8.h @@ -0,0 +1,346 @@ +/****************************************************************************** + * @file mpu_armv8.h + * @brief CMSIS MPU API for Armv8-M and Armv8.1-M MPU + * @version V5.1.0 + * @date 08. March 2019 + ******************************************************************************/ +/* + * Copyright (c) 2017-2019 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef ARM_MPU_ARMV8_H +#define ARM_MPU_ARMV8_H + +/** \brief Attribute for device memory (outer only) */ +#define ARM_MPU_ATTR_DEVICE ( 0U ) + +/** \brief Attribute for non-cacheable, normal memory */ +#define ARM_MPU_ATTR_NON_CACHEABLE ( 4U ) + +/** \brief Attribute for normal memory (outer and inner) +* \param NT Non-Transient: Set to 1 for non-transient data. +* \param WB Write-Back: Set to 1 to use write-back update policy. +* \param RA Read Allocation: Set to 1 to use cache allocation on read miss. +* \param WA Write Allocation: Set to 1 to use cache allocation on write miss. +*/ +#define ARM_MPU_ATTR_MEMORY_(NT, WB, RA, WA) \ + (((NT & 1U) << 3U) | ((WB & 1U) << 2U) | ((RA & 1U) << 1U) | (WA & 1U)) + +/** \brief Device memory type non Gathering, non Re-ordering, non Early Write Acknowledgement */ +#define ARM_MPU_ATTR_DEVICE_nGnRnE (0U) + +/** \brief Device memory type non Gathering, non Re-ordering, Early Write Acknowledgement */ +#define ARM_MPU_ATTR_DEVICE_nGnRE (1U) + +/** \brief Device memory type non Gathering, Re-ordering, Early Write Acknowledgement */ +#define ARM_MPU_ATTR_DEVICE_nGRE (2U) + +/** \brief Device memory type Gathering, Re-ordering, Early Write Acknowledgement */ +#define ARM_MPU_ATTR_DEVICE_GRE (3U) + +/** \brief Memory Attribute +* \param O Outer memory attributes +* \param I O == ARM_MPU_ATTR_DEVICE: Device memory attributes, else: Inner memory attributes +*/ +#define ARM_MPU_ATTR(O, I) (((O & 0xFU) << 4U) | (((O & 0xFU) != 0U) ? (I & 0xFU) : ((I & 0x3U) << 2U))) + +/** \brief Normal memory non-shareable */ +#define ARM_MPU_SH_NON (0U) + +/** \brief Normal memory outer shareable */ +#define ARM_MPU_SH_OUTER (2U) + +/** \brief Normal memory inner shareable */ +#define ARM_MPU_SH_INNER (3U) + +/** \brief Memory access permissions +* \param RO Read-Only: Set to 1 for read-only memory. +* \param NP Non-Privileged: Set to 1 for non-privileged memory. +*/ +#define ARM_MPU_AP_(RO, NP) (((RO & 1U) << 1U) | (NP & 1U)) + +/** \brief Region Base Address Register value +* \param BASE The base address bits [31:5] of a memory region. The value is zero extended. Effective address gets 32 byte aligned. +* \param SH Defines the Shareability domain for this memory region. +* \param RO Read-Only: Set to 1 for a read-only memory region. +* \param NP Non-Privileged: Set to 1 for a non-privileged memory region. +* \oaram XN eXecute Never: Set to 1 for a non-executable memory region. +*/ +#define ARM_MPU_RBAR(BASE, SH, RO, NP, XN) \ + ((BASE & MPU_RBAR_BASE_Msk) | \ + ((SH << MPU_RBAR_SH_Pos) & MPU_RBAR_SH_Msk) | \ + ((ARM_MPU_AP_(RO, NP) << MPU_RBAR_AP_Pos) & MPU_RBAR_AP_Msk) | \ + ((XN << MPU_RBAR_XN_Pos) & MPU_RBAR_XN_Msk)) + +/** \brief Region Limit Address Register value +* \param LIMIT The limit address bits [31:5] for this memory region. The value is one extended. +* \param IDX The attribute index to be associated with this memory region. +*/ +#define ARM_MPU_RLAR(LIMIT, IDX) \ + ((LIMIT & MPU_RLAR_LIMIT_Msk) | \ + ((IDX << MPU_RLAR_AttrIndx_Pos) & MPU_RLAR_AttrIndx_Msk) | \ + (MPU_RLAR_EN_Msk)) + +#if defined(MPU_RLAR_PXN_Pos) + +/** \brief Region Limit Address Register with PXN value +* \param LIMIT The limit address bits [31:5] for this memory region. The value is one extended. +* \param PXN Privileged execute never. Defines whether code can be executed from this privileged region. +* \param IDX The attribute index to be associated with this memory region. +*/ +#define ARM_MPU_RLAR_PXN(LIMIT, PXN, IDX) \ + ((LIMIT & MPU_RLAR_LIMIT_Msk) | \ + ((PXN << MPU_RLAR_PXN_Pos) & MPU_RLAR_PXN_Msk) | \ + ((IDX << MPU_RLAR_AttrIndx_Pos) & MPU_RLAR_AttrIndx_Msk) | \ + (MPU_RLAR_EN_Msk)) + +#endif + +/** +* Struct for a single MPU Region +*/ +typedef struct { + uint32_t RBAR; /*!< Region Base Address Register value */ + uint32_t RLAR; /*!< Region Limit Address Register value */ +} ARM_MPU_Region_t; + +/** Enable the MPU. +* \param MPU_Control Default access permissions for unconfigured regions. +*/ +__STATIC_INLINE void ARM_MPU_Enable(uint32_t MPU_Control) +{ + MPU->CTRL = MPU_Control | MPU_CTRL_ENABLE_Msk; +#ifdef SCB_SHCSR_MEMFAULTENA_Msk + SCB->SHCSR |= SCB_SHCSR_MEMFAULTENA_Msk; +#endif + __DSB(); + __ISB(); +} + +/** Disable the MPU. +*/ +__STATIC_INLINE void ARM_MPU_Disable(void) +{ + __DMB(); +#ifdef SCB_SHCSR_MEMFAULTENA_Msk + SCB->SHCSR &= ~SCB_SHCSR_MEMFAULTENA_Msk; +#endif + MPU->CTRL &= ~MPU_CTRL_ENABLE_Msk; +} + +#ifdef MPU_NS +/** Enable the Non-secure MPU. +* \param MPU_Control Default access permissions for unconfigured regions. +*/ +__STATIC_INLINE void ARM_MPU_Enable_NS(uint32_t MPU_Control) +{ + MPU_NS->CTRL = MPU_Control | MPU_CTRL_ENABLE_Msk; +#ifdef SCB_SHCSR_MEMFAULTENA_Msk + SCB_NS->SHCSR |= SCB_SHCSR_MEMFAULTENA_Msk; +#endif + __DSB(); + __ISB(); +} + +/** Disable the Non-secure MPU. +*/ +__STATIC_INLINE void ARM_MPU_Disable_NS(void) +{ + __DMB(); +#ifdef SCB_SHCSR_MEMFAULTENA_Msk + SCB_NS->SHCSR &= ~SCB_SHCSR_MEMFAULTENA_Msk; +#endif + MPU_NS->CTRL &= ~MPU_CTRL_ENABLE_Msk; +} +#endif + +/** Set the memory attribute encoding to the given MPU. +* \param mpu Pointer to the MPU to be configured. +* \param idx The attribute index to be set [0-7] +* \param attr The attribute value to be set. +*/ +__STATIC_INLINE void ARM_MPU_SetMemAttrEx(MPU_Type* mpu, uint8_t idx, uint8_t attr) +{ + const uint8_t reg = idx / 4U; + const uint32_t pos = ((idx % 4U) * 8U); + const uint32_t mask = 0xFFU << pos; + + if (reg >= (sizeof(mpu->MAIR) / sizeof(mpu->MAIR[0]))) { + return; // invalid index + } + + mpu->MAIR[reg] = ((mpu->MAIR[reg] & ~mask) | ((attr << pos) & mask)); +} + +/** Set the memory attribute encoding. +* \param idx The attribute index to be set [0-7] +* \param attr The attribute value to be set. +*/ +__STATIC_INLINE void ARM_MPU_SetMemAttr(uint8_t idx, uint8_t attr) +{ + ARM_MPU_SetMemAttrEx(MPU, idx, attr); +} + +#ifdef MPU_NS +/** Set the memory attribute encoding to the Non-secure MPU. +* \param idx The attribute index to be set [0-7] +* \param attr The attribute value to be set. +*/ +__STATIC_INLINE void ARM_MPU_SetMemAttr_NS(uint8_t idx, uint8_t attr) +{ + ARM_MPU_SetMemAttrEx(MPU_NS, idx, attr); +} +#endif + +/** Clear and disable the given MPU region of the given MPU. +* \param mpu Pointer to MPU to be used. +* \param rnr Region number to be cleared. +*/ +__STATIC_INLINE void ARM_MPU_ClrRegionEx(MPU_Type* mpu, uint32_t rnr) +{ + mpu->RNR = rnr; + mpu->RLAR = 0U; +} + +/** Clear and disable the given MPU region. +* \param rnr Region number to be cleared. +*/ +__STATIC_INLINE void ARM_MPU_ClrRegion(uint32_t rnr) +{ + ARM_MPU_ClrRegionEx(MPU, rnr); +} + +#ifdef MPU_NS +/** Clear and disable the given Non-secure MPU region. +* \param rnr Region number to be cleared. +*/ +__STATIC_INLINE void ARM_MPU_ClrRegion_NS(uint32_t rnr) +{ + ARM_MPU_ClrRegionEx(MPU_NS, rnr); +} +#endif + +/** Configure the given MPU region of the given MPU. +* \param mpu Pointer to MPU to be used. +* \param rnr Region number to be configured. +* \param rbar Value for RBAR register. +* \param rlar Value for RLAR register. +*/ +__STATIC_INLINE void ARM_MPU_SetRegionEx(MPU_Type* mpu, uint32_t rnr, uint32_t rbar, uint32_t rlar) +{ + mpu->RNR = rnr; + mpu->RBAR = rbar; + mpu->RLAR = rlar; +} + +/** Configure the given MPU region. +* \param rnr Region number to be configured. +* \param rbar Value for RBAR register. +* \param rlar Value for RLAR register. +*/ +__STATIC_INLINE void ARM_MPU_SetRegion(uint32_t rnr, uint32_t rbar, uint32_t rlar) +{ + ARM_MPU_SetRegionEx(MPU, rnr, rbar, rlar); +} + +#ifdef MPU_NS +/** Configure the given Non-secure MPU region. +* \param rnr Region number to be configured. +* \param rbar Value for RBAR register. +* \param rlar Value for RLAR register. +*/ +__STATIC_INLINE void ARM_MPU_SetRegion_NS(uint32_t rnr, uint32_t rbar, uint32_t rlar) +{ + ARM_MPU_SetRegionEx(MPU_NS, rnr, rbar, rlar); +} +#endif + +/** Memcopy with strictly ordered memory access, e.g. for register targets. +* \param dst Destination data is copied to. +* \param src Source data is copied from. +* \param len Amount of data words to be copied. +*/ +__STATIC_INLINE void ARM_MPU_OrderedMemcpy(volatile uint32_t* dst, const uint32_t* __RESTRICT src, uint32_t len) +{ + uint32_t i; + for (i = 0U; i < len; ++i) + { + dst[i] = src[i]; + } +} + +/** Load the given number of MPU regions from a table to the given MPU. +* \param mpu Pointer to the MPU registers to be used. +* \param rnr First region number to be configured. +* \param table Pointer to the MPU configuration table. +* \param cnt Amount of regions to be configured. +*/ +__STATIC_INLINE void ARM_MPU_LoadEx(MPU_Type* mpu, uint32_t rnr, ARM_MPU_Region_t const* table, uint32_t cnt) +{ + const uint32_t rowWordSize = sizeof(ARM_MPU_Region_t)/4U; + if (cnt == 1U) { + mpu->RNR = rnr; + ARM_MPU_OrderedMemcpy(&(mpu->RBAR), &(table->RBAR), rowWordSize); + } else { + uint32_t rnrBase = rnr & ~(MPU_TYPE_RALIASES-1U); + uint32_t rnrOffset = rnr % MPU_TYPE_RALIASES; + + mpu->RNR = rnrBase; + while ((rnrOffset + cnt) > MPU_TYPE_RALIASES) { + uint32_t c = MPU_TYPE_RALIASES - rnrOffset; + ARM_MPU_OrderedMemcpy(&(mpu->RBAR)+(rnrOffset*2U), &(table->RBAR), c*rowWordSize); + table += c; + cnt -= c; + rnrOffset = 0U; + rnrBase += MPU_TYPE_RALIASES; + mpu->RNR = rnrBase; + } + + ARM_MPU_OrderedMemcpy(&(mpu->RBAR)+(rnrOffset*2U), &(table->RBAR), cnt*rowWordSize); + } +} + +/** Load the given number of MPU regions from a table. +* \param rnr First region number to be configured. +* \param table Pointer to the MPU configuration table. +* \param cnt Amount of regions to be configured. +*/ +__STATIC_INLINE void ARM_MPU_Load(uint32_t rnr, ARM_MPU_Region_t const* table, uint32_t cnt) +{ + ARM_MPU_LoadEx(MPU, rnr, table, cnt); +} + +#ifdef MPU_NS +/** Load the given number of MPU regions from a table to the Non-secure MPU. +* \param rnr First region number to be configured. +* \param table Pointer to the MPU configuration table. +* \param cnt Amount of regions to be configured. +*/ +__STATIC_INLINE void ARM_MPU_Load_NS(uint32_t rnr, ARM_MPU_Region_t const* table, uint32_t cnt) +{ + ARM_MPU_LoadEx(MPU_NS, rnr, table, cnt); +} +#endif + +#endif + diff --git a/firmware/Drivers/CMSIS/Include/tz_context.h b/firmware/Drivers/CMSIS/Include/tz_context.h new file mode 100644 index 0000000..0d09749 --- /dev/null +++ b/firmware/Drivers/CMSIS/Include/tz_context.h @@ -0,0 +1,70 @@ +/****************************************************************************** + * @file tz_context.h + * @brief Context Management for Armv8-M TrustZone + * @version V1.0.1 + * @date 10. January 2018 + ******************************************************************************/ +/* + * Copyright (c) 2017-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef TZ_CONTEXT_H +#define TZ_CONTEXT_H + +#include + +#ifndef TZ_MODULEID_T +#define TZ_MODULEID_T +/// \details Data type that identifies secure software modules called by a process. +typedef uint32_t TZ_ModuleId_t; +#endif + +/// \details TZ Memory ID identifies an allocated memory slot. +typedef uint32_t TZ_MemoryId_t; + +/// Initialize secure context memory system +/// \return execution status (1: success, 0: error) +uint32_t TZ_InitContextSystem_S (void); + +/// Allocate context memory for calling secure software modules in TrustZone +/// \param[in] module identifies software modules called from non-secure mode +/// \return value != 0 id TrustZone memory slot identifier +/// \return value 0 no memory available or internal error +TZ_MemoryId_t TZ_AllocModuleContext_S (TZ_ModuleId_t module); + +/// Free context memory that was previously allocated with \ref TZ_AllocModuleContext_S +/// \param[in] id TrustZone memory slot identifier +/// \return execution status (1: success, 0: error) +uint32_t TZ_FreeModuleContext_S (TZ_MemoryId_t id); + +/// Load secure context (called on RTOS thread context switch) +/// \param[in] id TrustZone memory slot identifier +/// \return execution status (1: success, 0: error) +uint32_t TZ_LoadContext_S (TZ_MemoryId_t id); + +/// Store secure context (called on RTOS thread context switch) +/// \param[in] id TrustZone memory slot identifier +/// \return execution status (1: success, 0: error) +uint32_t TZ_StoreContext_S (TZ_MemoryId_t id); + +#endif // TZ_CONTEXT_H diff --git a/firmware/Drivers/CMSIS/LICENSE.txt b/firmware/Drivers/CMSIS/LICENSE.txt new file mode 100644 index 0000000..8dada3e --- /dev/null +++ b/firmware/Drivers/CMSIS/LICENSE.txt @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h b/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h new file mode 100644 index 0000000..934f1f9 --- /dev/null +++ b/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h @@ -0,0 +1,4014 @@ +/** + ****************************************************************************** + * @file stm32_hal_legacy.h + * @author MCD Application Team + * @brief This file contains aliases definition for the STM32Cube HAL constants + * macros and functions maintained for legacy purpose. + ****************************************************************************** + * @attention + * + * Copyright (c) 2021 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32_HAL_LEGACY +#define STM32_HAL_LEGACY + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ + +/** @defgroup HAL_AES_Aliased_Defines HAL CRYP Aliased Defines maintained for legacy purpose + * @{ + */ +#define AES_FLAG_RDERR CRYP_FLAG_RDERR +#define AES_FLAG_WRERR CRYP_FLAG_WRERR +#define AES_CLEARFLAG_CCF CRYP_CLEARFLAG_CCF +#define AES_CLEARFLAG_RDERR CRYP_CLEARFLAG_RDERR +#define AES_CLEARFLAG_WRERR CRYP_CLEARFLAG_WRERR +#if defined(STM32U5) || defined(STM32H7) || defined(STM32MP1) +#define CRYP_DATATYPE_32B CRYP_NO_SWAP +#define CRYP_DATATYPE_16B CRYP_HALFWORD_SWAP +#define CRYP_DATATYPE_8B CRYP_BYTE_SWAP +#define CRYP_DATATYPE_1B CRYP_BIT_SWAP +#if defined(STM32U5) +#define CRYP_CCF_CLEAR CRYP_CLEAR_CCF +#define CRYP_ERR_CLEAR CRYP_CLEAR_RWEIF +#endif /* STM32U5 */ +#endif /* STM32U5 || STM32H7 || STM32MP1 */ +/** + * @} + */ + +/** @defgroup HAL_ADC_Aliased_Defines HAL ADC Aliased Defines maintained for legacy purpose + * @{ + */ +#define ADC_RESOLUTION12b ADC_RESOLUTION_12B +#define ADC_RESOLUTION10b ADC_RESOLUTION_10B +#define ADC_RESOLUTION8b ADC_RESOLUTION_8B +#define ADC_RESOLUTION6b ADC_RESOLUTION_6B +#define OVR_DATA_OVERWRITTEN ADC_OVR_DATA_OVERWRITTEN +#define OVR_DATA_PRESERVED ADC_OVR_DATA_PRESERVED +#define EOC_SINGLE_CONV ADC_EOC_SINGLE_CONV +#define EOC_SEQ_CONV ADC_EOC_SEQ_CONV +#define EOC_SINGLE_SEQ_CONV ADC_EOC_SINGLE_SEQ_CONV +#define REGULAR_GROUP ADC_REGULAR_GROUP +#define INJECTED_GROUP ADC_INJECTED_GROUP +#define REGULAR_INJECTED_GROUP ADC_REGULAR_INJECTED_GROUP +#define AWD_EVENT ADC_AWD_EVENT +#define AWD1_EVENT ADC_AWD1_EVENT +#define AWD2_EVENT ADC_AWD2_EVENT +#define AWD3_EVENT ADC_AWD3_EVENT +#define OVR_EVENT ADC_OVR_EVENT +#define JQOVF_EVENT ADC_JQOVF_EVENT +#define ALL_CHANNELS ADC_ALL_CHANNELS +#define REGULAR_CHANNELS ADC_REGULAR_CHANNELS +#define INJECTED_CHANNELS ADC_INJECTED_CHANNELS +#define SYSCFG_FLAG_SENSOR_ADC ADC_FLAG_SENSOR +#define SYSCFG_FLAG_VREF_ADC ADC_FLAG_VREFINT +#define ADC_CLOCKPRESCALER_PCLK_DIV1 ADC_CLOCK_SYNC_PCLK_DIV1 +#define ADC_CLOCKPRESCALER_PCLK_DIV2 ADC_CLOCK_SYNC_PCLK_DIV2 +#define ADC_CLOCKPRESCALER_PCLK_DIV4 ADC_CLOCK_SYNC_PCLK_DIV4 +#define ADC_CLOCKPRESCALER_PCLK_DIV6 ADC_CLOCK_SYNC_PCLK_DIV6 +#define ADC_CLOCKPRESCALER_PCLK_DIV8 ADC_CLOCK_SYNC_PCLK_DIV8 +#define ADC_EXTERNALTRIG0_T6_TRGO ADC_EXTERNALTRIGCONV_T6_TRGO +#define ADC_EXTERNALTRIG1_T21_CC2 ADC_EXTERNALTRIGCONV_T21_CC2 +#define ADC_EXTERNALTRIG2_T2_TRGO ADC_EXTERNALTRIGCONV_T2_TRGO +#define ADC_EXTERNALTRIG3_T2_CC4 ADC_EXTERNALTRIGCONV_T2_CC4 +#define ADC_EXTERNALTRIG4_T22_TRGO ADC_EXTERNALTRIGCONV_T22_TRGO +#define ADC_EXTERNALTRIG7_EXT_IT11 ADC_EXTERNALTRIGCONV_EXT_IT11 +#define ADC_CLOCK_ASYNC ADC_CLOCK_ASYNC_DIV1 +#define ADC_EXTERNALTRIG_EDGE_NONE ADC_EXTERNALTRIGCONVEDGE_NONE +#define ADC_EXTERNALTRIG_EDGE_RISING ADC_EXTERNALTRIGCONVEDGE_RISING +#define ADC_EXTERNALTRIG_EDGE_FALLING ADC_EXTERNALTRIGCONVEDGE_FALLING +#define ADC_EXTERNALTRIG_EDGE_RISINGFALLING ADC_EXTERNALTRIGCONVEDGE_RISINGFALLING +#define ADC_SAMPLETIME_2CYCLE_5 ADC_SAMPLETIME_2CYCLES_5 + +#define HAL_ADC_STATE_BUSY_REG HAL_ADC_STATE_REG_BUSY +#define HAL_ADC_STATE_BUSY_INJ HAL_ADC_STATE_INJ_BUSY +#define HAL_ADC_STATE_EOC_REG HAL_ADC_STATE_REG_EOC +#define HAL_ADC_STATE_EOC_INJ HAL_ADC_STATE_INJ_EOC +#define HAL_ADC_STATE_ERROR HAL_ADC_STATE_ERROR_INTERNAL +#define HAL_ADC_STATE_BUSY HAL_ADC_STATE_BUSY_INTERNAL +#define HAL_ADC_STATE_AWD HAL_ADC_STATE_AWD1 + +#if defined(STM32H7) +#define ADC_CHANNEL_VBAT_DIV4 ADC_CHANNEL_VBAT +#endif /* STM32H7 */ + +#if defined(STM32U5) +#define ADC_SAMPLETIME_5CYCLE ADC_SAMPLETIME_5CYCLES +#define ADC_SAMPLETIME_391CYCLES_5 ADC_SAMPLETIME_391CYCLES +#define ADC4_SAMPLETIME_160CYCLES_5 ADC4_SAMPLETIME_814CYCLES_5 +#endif /* STM32U5 */ + +/** + * @} + */ + +/** @defgroup HAL_CEC_Aliased_Defines HAL CEC Aliased Defines maintained for legacy purpose + * @{ + */ + +#define __HAL_CEC_GET_IT __HAL_CEC_GET_FLAG + +/** + * @} + */ + +/** @defgroup HAL_COMP_Aliased_Defines HAL COMP Aliased Defines maintained for legacy purpose + * @{ + */ +#define COMP_WINDOWMODE_DISABLED COMP_WINDOWMODE_DISABLE +#define COMP_WINDOWMODE_ENABLED COMP_WINDOWMODE_ENABLE +#define COMP_EXTI_LINE_COMP1_EVENT COMP_EXTI_LINE_COMP1 +#define COMP_EXTI_LINE_COMP2_EVENT COMP_EXTI_LINE_COMP2 +#define COMP_EXTI_LINE_COMP3_EVENT COMP_EXTI_LINE_COMP3 +#define COMP_EXTI_LINE_COMP4_EVENT COMP_EXTI_LINE_COMP4 +#define COMP_EXTI_LINE_COMP5_EVENT COMP_EXTI_LINE_COMP5 +#define COMP_EXTI_LINE_COMP6_EVENT COMP_EXTI_LINE_COMP6 +#define COMP_EXTI_LINE_COMP7_EVENT COMP_EXTI_LINE_COMP7 +#if defined(STM32L0) +#define COMP_LPTIMCONNECTION_ENABLED ((uint32_t)0x00000003U) /*!< COMPX output generic naming: connected to LPTIM input 1 for COMP1, LPTIM input 2 for COMP2 */ +#endif +#define COMP_OUTPUT_COMP6TIM2OCREFCLR COMP_OUTPUT_COMP6_TIM2OCREFCLR +#if defined(STM32F373xC) || defined(STM32F378xx) +#define COMP_OUTPUT_TIM3IC1 COMP_OUTPUT_COMP1_TIM3IC1 +#define COMP_OUTPUT_TIM3OCREFCLR COMP_OUTPUT_COMP1_TIM3OCREFCLR +#endif /* STM32F373xC || STM32F378xx */ + +#if defined(STM32L0) || defined(STM32L4) +#define COMP_WINDOWMODE_ENABLE COMP_WINDOWMODE_COMP1_INPUT_PLUS_COMMON + +#define COMP_NONINVERTINGINPUT_IO1 COMP_INPUT_PLUS_IO1 +#define COMP_NONINVERTINGINPUT_IO2 COMP_INPUT_PLUS_IO2 +#define COMP_NONINVERTINGINPUT_IO3 COMP_INPUT_PLUS_IO3 +#define COMP_NONINVERTINGINPUT_IO4 COMP_INPUT_PLUS_IO4 +#define COMP_NONINVERTINGINPUT_IO5 COMP_INPUT_PLUS_IO5 +#define COMP_NONINVERTINGINPUT_IO6 COMP_INPUT_PLUS_IO6 + +#define COMP_INVERTINGINPUT_1_4VREFINT COMP_INPUT_MINUS_1_4VREFINT +#define COMP_INVERTINGINPUT_1_2VREFINT COMP_INPUT_MINUS_1_2VREFINT +#define COMP_INVERTINGINPUT_3_4VREFINT COMP_INPUT_MINUS_3_4VREFINT +#define COMP_INVERTINGINPUT_VREFINT COMP_INPUT_MINUS_VREFINT +#define COMP_INVERTINGINPUT_DAC1_CH1 COMP_INPUT_MINUS_DAC1_CH1 +#define COMP_INVERTINGINPUT_DAC1_CH2 COMP_INPUT_MINUS_DAC1_CH2 +#define COMP_INVERTINGINPUT_DAC1 COMP_INPUT_MINUS_DAC1_CH1 +#define COMP_INVERTINGINPUT_DAC2 COMP_INPUT_MINUS_DAC1_CH2 +#define COMP_INVERTINGINPUT_IO1 COMP_INPUT_MINUS_IO1 +#if defined(STM32L0) +/* Issue fixed on STM32L0 COMP driver: only 2 dedicated IO (IO1 and IO2), */ +/* IO2 was wrongly assigned to IO shared with DAC and IO3 was corresponding */ +/* to the second dedicated IO (only for COMP2). */ +#define COMP_INVERTINGINPUT_IO2 COMP_INPUT_MINUS_DAC1_CH2 +#define COMP_INVERTINGINPUT_IO3 COMP_INPUT_MINUS_IO2 +#else +#define COMP_INVERTINGINPUT_IO2 COMP_INPUT_MINUS_IO2 +#define COMP_INVERTINGINPUT_IO3 COMP_INPUT_MINUS_IO3 +#endif +#define COMP_INVERTINGINPUT_IO4 COMP_INPUT_MINUS_IO4 +#define COMP_INVERTINGINPUT_IO5 COMP_INPUT_MINUS_IO5 + +#define COMP_OUTPUTLEVEL_LOW COMP_OUTPUT_LEVEL_LOW +#define COMP_OUTPUTLEVEL_HIGH COMP_OUTPUT_LEVEL_HIGH + +/* Note: Literal "COMP_FLAG_LOCK" kept for legacy purpose. */ +/* To check COMP lock state, use macro "__HAL_COMP_IS_LOCKED()". */ +#if defined(COMP_CSR_LOCK) +#define COMP_FLAG_LOCK COMP_CSR_LOCK +#elif defined(COMP_CSR_COMP1LOCK) +#define COMP_FLAG_LOCK COMP_CSR_COMP1LOCK +#elif defined(COMP_CSR_COMPxLOCK) +#define COMP_FLAG_LOCK COMP_CSR_COMPxLOCK +#endif + +#if defined(STM32L4) +#define COMP_BLANKINGSRCE_TIM1OC5 COMP_BLANKINGSRC_TIM1_OC5_COMP1 +#define COMP_BLANKINGSRCE_TIM2OC3 COMP_BLANKINGSRC_TIM2_OC3_COMP1 +#define COMP_BLANKINGSRCE_TIM3OC3 COMP_BLANKINGSRC_TIM3_OC3_COMP1 +#define COMP_BLANKINGSRCE_TIM3OC4 COMP_BLANKINGSRC_TIM3_OC4_COMP2 +#define COMP_BLANKINGSRCE_TIM8OC5 COMP_BLANKINGSRC_TIM8_OC5_COMP2 +#define COMP_BLANKINGSRCE_TIM15OC1 COMP_BLANKINGSRC_TIM15_OC1_COMP2 +#define COMP_BLANKINGSRCE_NONE COMP_BLANKINGSRC_NONE +#endif + +#if defined(STM32L0) +#define COMP_MODE_HIGHSPEED COMP_POWERMODE_MEDIUMSPEED +#define COMP_MODE_LOWSPEED COMP_POWERMODE_ULTRALOWPOWER +#else +#define COMP_MODE_HIGHSPEED COMP_POWERMODE_HIGHSPEED +#define COMP_MODE_MEDIUMSPEED COMP_POWERMODE_MEDIUMSPEED +#define COMP_MODE_LOWPOWER COMP_POWERMODE_LOWPOWER +#define COMP_MODE_ULTRALOWPOWER COMP_POWERMODE_ULTRALOWPOWER +#endif + +#endif +/** + * @} + */ + +/** @defgroup HAL_CORTEX_Aliased_Defines HAL CORTEX Aliased Defines maintained for legacy purpose + * @{ + */ +#define __HAL_CORTEX_SYSTICKCLK_CONFIG HAL_SYSTICK_CLKSourceConfig +#if defined(STM32U5) +#define MPU_DEVICE_nGnRnE MPU_DEVICE_NGNRNE +#define MPU_DEVICE_nGnRE MPU_DEVICE_NGNRE +#define MPU_DEVICE_nGRE MPU_DEVICE_NGRE +#endif /* STM32U5 */ +/** + * @} + */ + +/** @defgroup CRC_Aliases CRC API aliases + * @{ + */ +#if defined(STM32C0) +#else +#define HAL_CRC_Input_Data_Reverse HAL_CRCEx_Input_Data_Reverse /*!< Aliased to HAL_CRCEx_Input_Data_Reverse for inter STM32 series compatibility */ +#define HAL_CRC_Output_Data_Reverse HAL_CRCEx_Output_Data_Reverse /*!< Aliased to HAL_CRCEx_Output_Data_Reverse for inter STM32 series compatibility */ +#endif +/** + * @} + */ + +/** @defgroup HAL_CRC_Aliased_Defines HAL CRC Aliased Defines maintained for legacy purpose + * @{ + */ + +#define CRC_OUTPUTDATA_INVERSION_DISABLED CRC_OUTPUTDATA_INVERSION_DISABLE +#define CRC_OUTPUTDATA_INVERSION_ENABLED CRC_OUTPUTDATA_INVERSION_ENABLE + +/** + * @} + */ + +/** @defgroup HAL_DAC_Aliased_Defines HAL DAC Aliased Defines maintained for legacy purpose + * @{ + */ + +#define DAC1_CHANNEL_1 DAC_CHANNEL_1 +#define DAC1_CHANNEL_2 DAC_CHANNEL_2 +#define DAC2_CHANNEL_1 DAC_CHANNEL_1 +#define DAC_WAVE_NONE 0x00000000U +#define DAC_WAVE_NOISE DAC_CR_WAVE1_0 +#define DAC_WAVE_TRIANGLE DAC_CR_WAVE1_1 +#define DAC_WAVEGENERATION_NONE DAC_WAVE_NONE +#define DAC_WAVEGENERATION_NOISE DAC_WAVE_NOISE +#define DAC_WAVEGENERATION_TRIANGLE DAC_WAVE_TRIANGLE + +#if defined(STM32G4) || defined(STM32H7) || defined (STM32U5) +#define DAC_CHIPCONNECT_DISABLE DAC_CHIPCONNECT_EXTERNAL +#define DAC_CHIPCONNECT_ENABLE DAC_CHIPCONNECT_INTERNAL +#endif + +#if defined(STM32U5) +#define DAC_TRIGGER_STOP_LPTIM1_OUT DAC_TRIGGER_STOP_LPTIM1_CH1 +#define DAC_TRIGGER_STOP_LPTIM3_OUT DAC_TRIGGER_STOP_LPTIM3_CH1 +#define DAC_TRIGGER_LPTIM1_OUT DAC_TRIGGER_LPTIM1_CH1 +#define DAC_TRIGGER_LPTIM3_OUT DAC_TRIGGER_LPTIM3_CH1 +#endif + +#if defined(STM32L1) || defined(STM32L4) || defined(STM32G0) || defined(STM32L5) || defined(STM32H7) || defined(STM32F4) || defined(STM32G4) +#define HAL_DAC_MSP_INIT_CB_ID HAL_DAC_MSPINIT_CB_ID +#define HAL_DAC_MSP_DEINIT_CB_ID HAL_DAC_MSPDEINIT_CB_ID +#endif + +/** + * @} + */ + +/** @defgroup HAL_DMA_Aliased_Defines HAL DMA Aliased Defines maintained for legacy purpose + * @{ + */ +#define HAL_REMAPDMA_ADC_DMA_CH2 DMA_REMAP_ADC_DMA_CH2 +#define HAL_REMAPDMA_USART1_TX_DMA_CH4 DMA_REMAP_USART1_TX_DMA_CH4 +#define HAL_REMAPDMA_USART1_RX_DMA_CH5 DMA_REMAP_USART1_RX_DMA_CH5 +#define HAL_REMAPDMA_TIM16_DMA_CH4 DMA_REMAP_TIM16_DMA_CH4 +#define HAL_REMAPDMA_TIM17_DMA_CH2 DMA_REMAP_TIM17_DMA_CH2 +#define HAL_REMAPDMA_USART3_DMA_CH32 DMA_REMAP_USART3_DMA_CH32 +#define HAL_REMAPDMA_TIM16_DMA_CH6 DMA_REMAP_TIM16_DMA_CH6 +#define HAL_REMAPDMA_TIM17_DMA_CH7 DMA_REMAP_TIM17_DMA_CH7 +#define HAL_REMAPDMA_SPI2_DMA_CH67 DMA_REMAP_SPI2_DMA_CH67 +#define HAL_REMAPDMA_USART2_DMA_CH67 DMA_REMAP_USART2_DMA_CH67 +#define HAL_REMAPDMA_I2C1_DMA_CH76 DMA_REMAP_I2C1_DMA_CH76 +#define HAL_REMAPDMA_TIM1_DMA_CH6 DMA_REMAP_TIM1_DMA_CH6 +#define HAL_REMAPDMA_TIM2_DMA_CH7 DMA_REMAP_TIM2_DMA_CH7 +#define HAL_REMAPDMA_TIM3_DMA_CH6 DMA_REMAP_TIM3_DMA_CH6 + +#define IS_HAL_REMAPDMA IS_DMA_REMAP +#define __HAL_REMAPDMA_CHANNEL_ENABLE __HAL_DMA_REMAP_CHANNEL_ENABLE +#define __HAL_REMAPDMA_CHANNEL_DISABLE __HAL_DMA_REMAP_CHANNEL_DISABLE + +#if defined(STM32L4) + +#define HAL_DMAMUX1_REQUEST_GEN_EXTI0 HAL_DMAMUX1_REQ_GEN_EXTI0 +#define HAL_DMAMUX1_REQUEST_GEN_EXTI1 HAL_DMAMUX1_REQ_GEN_EXTI1 +#define HAL_DMAMUX1_REQUEST_GEN_EXTI2 HAL_DMAMUX1_REQ_GEN_EXTI2 +#define HAL_DMAMUX1_REQUEST_GEN_EXTI3 HAL_DMAMUX1_REQ_GEN_EXTI3 +#define HAL_DMAMUX1_REQUEST_GEN_EXTI4 HAL_DMAMUX1_REQ_GEN_EXTI4 +#define HAL_DMAMUX1_REQUEST_GEN_EXTI5 HAL_DMAMUX1_REQ_GEN_EXTI5 +#define HAL_DMAMUX1_REQUEST_GEN_EXTI6 HAL_DMAMUX1_REQ_GEN_EXTI6 +#define HAL_DMAMUX1_REQUEST_GEN_EXTI7 HAL_DMAMUX1_REQ_GEN_EXTI7 +#define HAL_DMAMUX1_REQUEST_GEN_EXTI8 HAL_DMAMUX1_REQ_GEN_EXTI8 +#define HAL_DMAMUX1_REQUEST_GEN_EXTI9 HAL_DMAMUX1_REQ_GEN_EXTI9 +#define HAL_DMAMUX1_REQUEST_GEN_EXTI10 HAL_DMAMUX1_REQ_GEN_EXTI10 +#define HAL_DMAMUX1_REQUEST_GEN_EXTI11 HAL_DMAMUX1_REQ_GEN_EXTI11 +#define HAL_DMAMUX1_REQUEST_GEN_EXTI12 HAL_DMAMUX1_REQ_GEN_EXTI12 +#define HAL_DMAMUX1_REQUEST_GEN_EXTI13 HAL_DMAMUX1_REQ_GEN_EXTI13 +#define HAL_DMAMUX1_REQUEST_GEN_EXTI14 HAL_DMAMUX1_REQ_GEN_EXTI14 +#define HAL_DMAMUX1_REQUEST_GEN_EXTI15 HAL_DMAMUX1_REQ_GEN_EXTI15 +#define HAL_DMAMUX1_REQUEST_GEN_DMAMUX1_CH0_EVT HAL_DMAMUX1_REQ_GEN_DMAMUX1_CH0_EVT +#define HAL_DMAMUX1_REQUEST_GEN_DMAMUX1_CH1_EVT HAL_DMAMUX1_REQ_GEN_DMAMUX1_CH1_EVT +#define HAL_DMAMUX1_REQUEST_GEN_DMAMUX1_CH2_EVT HAL_DMAMUX1_REQ_GEN_DMAMUX1_CH2_EVT +#define HAL_DMAMUX1_REQUEST_GEN_DMAMUX1_CH3_EVT HAL_DMAMUX1_REQ_GEN_DMAMUX1_CH3_EVT +#define HAL_DMAMUX1_REQUEST_GEN_LPTIM1_OUT HAL_DMAMUX1_REQ_GEN_LPTIM1_OUT +#define HAL_DMAMUX1_REQUEST_GEN_LPTIM2_OUT HAL_DMAMUX1_REQ_GEN_LPTIM2_OUT +#define HAL_DMAMUX1_REQUEST_GEN_DSI_TE HAL_DMAMUX1_REQ_GEN_DSI_TE +#define HAL_DMAMUX1_REQUEST_GEN_DSI_EOT HAL_DMAMUX1_REQ_GEN_DSI_EOT +#define HAL_DMAMUX1_REQUEST_GEN_DMA2D_EOT HAL_DMAMUX1_REQ_GEN_DMA2D_EOT +#define HAL_DMAMUX1_REQUEST_GEN_LTDC_IT HAL_DMAMUX1_REQ_GEN_LTDC_IT + +#define HAL_DMAMUX_REQUEST_GEN_NO_EVENT HAL_DMAMUX_REQ_GEN_NO_EVENT +#define HAL_DMAMUX_REQUEST_GEN_RISING HAL_DMAMUX_REQ_GEN_RISING +#define HAL_DMAMUX_REQUEST_GEN_FALLING HAL_DMAMUX_REQ_GEN_FALLING +#define HAL_DMAMUX_REQUEST_GEN_RISING_FALLING HAL_DMAMUX_REQ_GEN_RISING_FALLING + +#if defined(STM32L4R5xx) || defined(STM32L4R9xx) || defined(STM32L4R9xx) || defined(STM32L4S5xx) || defined(STM32L4S7xx) || defined(STM32L4S9xx) +#define DMA_REQUEST_DCMI_PSSI DMA_REQUEST_DCMI +#endif + +#endif /* STM32L4 */ + +#if defined(STM32G0) +#define DMA_REQUEST_DAC1_CHANNEL1 DMA_REQUEST_DAC1_CH1 +#define DMA_REQUEST_DAC1_CHANNEL2 DMA_REQUEST_DAC1_CH2 +#define DMA_REQUEST_TIM16_TRIG_COM DMA_REQUEST_TIM16_COM +#define DMA_REQUEST_TIM17_TRIG_COM DMA_REQUEST_TIM17_COM + +#define LL_DMAMUX_REQ_TIM16_TRIG_COM LL_DMAMUX_REQ_TIM16_COM +#define LL_DMAMUX_REQ_TIM17_TRIG_COM LL_DMAMUX_REQ_TIM17_COM +#endif + +#if defined(STM32H7) + +#define DMA_REQUEST_DAC1 DMA_REQUEST_DAC1_CH1 +#define DMA_REQUEST_DAC2 DMA_REQUEST_DAC1_CH2 + +#define BDMA_REQUEST_LP_UART1_RX BDMA_REQUEST_LPUART1_RX +#define BDMA_REQUEST_LP_UART1_TX BDMA_REQUEST_LPUART1_TX + +#define HAL_DMAMUX1_REQUEST_GEN_DMAMUX1_CH0_EVT HAL_DMAMUX1_REQ_GEN_DMAMUX1_CH0_EVT +#define HAL_DMAMUX1_REQUEST_GEN_DMAMUX1_CH1_EVT HAL_DMAMUX1_REQ_GEN_DMAMUX1_CH1_EVT +#define HAL_DMAMUX1_REQUEST_GEN_DMAMUX1_CH2_EVT HAL_DMAMUX1_REQ_GEN_DMAMUX1_CH2_EVT +#define HAL_DMAMUX1_REQUEST_GEN_LPTIM1_OUT HAL_DMAMUX1_REQ_GEN_LPTIM1_OUT +#define HAL_DMAMUX1_REQUEST_GEN_LPTIM2_OUT HAL_DMAMUX1_REQ_GEN_LPTIM2_OUT +#define HAL_DMAMUX1_REQUEST_GEN_LPTIM3_OUT HAL_DMAMUX1_REQ_GEN_LPTIM3_OUT +#define HAL_DMAMUX1_REQUEST_GEN_EXTI0 HAL_DMAMUX1_REQ_GEN_EXTI0 +#define HAL_DMAMUX1_REQUEST_GEN_TIM12_TRGO HAL_DMAMUX1_REQ_GEN_TIM12_TRGO + +#define HAL_DMAMUX2_REQUEST_GEN_DMAMUX2_CH0_EVT HAL_DMAMUX2_REQ_GEN_DMAMUX2_CH0_EVT +#define HAL_DMAMUX2_REQUEST_GEN_DMAMUX2_CH1_EVT HAL_DMAMUX2_REQ_GEN_DMAMUX2_CH1_EVT +#define HAL_DMAMUX2_REQUEST_GEN_DMAMUX2_CH2_EVT HAL_DMAMUX2_REQ_GEN_DMAMUX2_CH2_EVT +#define HAL_DMAMUX2_REQUEST_GEN_DMAMUX2_CH3_EVT HAL_DMAMUX2_REQ_GEN_DMAMUX2_CH3_EVT +#define HAL_DMAMUX2_REQUEST_GEN_DMAMUX2_CH4_EVT HAL_DMAMUX2_REQ_GEN_DMAMUX2_CH4_EVT +#define HAL_DMAMUX2_REQUEST_GEN_DMAMUX2_CH5_EVT HAL_DMAMUX2_REQ_GEN_DMAMUX2_CH5_EVT +#define HAL_DMAMUX2_REQUEST_GEN_DMAMUX2_CH6_EVT HAL_DMAMUX2_REQ_GEN_DMAMUX2_CH6_EVT +#define HAL_DMAMUX2_REQUEST_GEN_LPUART1_RX_WKUP HAL_DMAMUX2_REQ_GEN_LPUART1_RX_WKUP +#define HAL_DMAMUX2_REQUEST_GEN_LPUART1_TX_WKUP HAL_DMAMUX2_REQ_GEN_LPUART1_TX_WKUP +#define HAL_DMAMUX2_REQUEST_GEN_LPTIM2_WKUP HAL_DMAMUX2_REQ_GEN_LPTIM2_WKUP +#define HAL_DMAMUX2_REQUEST_GEN_LPTIM2_OUT HAL_DMAMUX2_REQ_GEN_LPTIM2_OUT +#define HAL_DMAMUX2_REQUEST_GEN_LPTIM3_WKUP HAL_DMAMUX2_REQ_GEN_LPTIM3_WKUP +#define HAL_DMAMUX2_REQUEST_GEN_LPTIM3_OUT HAL_DMAMUX2_REQ_GEN_LPTIM3_OUT +#define HAL_DMAMUX2_REQUEST_GEN_LPTIM4_WKUP HAL_DMAMUX2_REQ_GEN_LPTIM4_WKUP +#define HAL_DMAMUX2_REQUEST_GEN_LPTIM5_WKUP HAL_DMAMUX2_REQ_GEN_LPTIM5_WKUP +#define HAL_DMAMUX2_REQUEST_GEN_I2C4_WKUP HAL_DMAMUX2_REQ_GEN_I2C4_WKUP +#define HAL_DMAMUX2_REQUEST_GEN_SPI6_WKUP HAL_DMAMUX2_REQ_GEN_SPI6_WKUP +#define HAL_DMAMUX2_REQUEST_GEN_COMP1_OUT HAL_DMAMUX2_REQ_GEN_COMP1_OUT +#define HAL_DMAMUX2_REQUEST_GEN_COMP2_OUT HAL_DMAMUX2_REQ_GEN_COMP2_OUT +#define HAL_DMAMUX2_REQUEST_GEN_RTC_WKUP HAL_DMAMUX2_REQ_GEN_RTC_WKUP +#define HAL_DMAMUX2_REQUEST_GEN_EXTI0 HAL_DMAMUX2_REQ_GEN_EXTI0 +#define HAL_DMAMUX2_REQUEST_GEN_EXTI2 HAL_DMAMUX2_REQ_GEN_EXTI2 +#define HAL_DMAMUX2_REQUEST_GEN_I2C4_IT_EVT HAL_DMAMUX2_REQ_GEN_I2C4_IT_EVT +#define HAL_DMAMUX2_REQUEST_GEN_SPI6_IT HAL_DMAMUX2_REQ_GEN_SPI6_IT +#define HAL_DMAMUX2_REQUEST_GEN_LPUART1_TX_IT HAL_DMAMUX2_REQ_GEN_LPUART1_TX_IT +#define HAL_DMAMUX2_REQUEST_GEN_LPUART1_RX_IT HAL_DMAMUX2_REQ_GEN_LPUART1_RX_IT +#define HAL_DMAMUX2_REQUEST_GEN_ADC3_IT HAL_DMAMUX2_REQ_GEN_ADC3_IT +#define HAL_DMAMUX2_REQUEST_GEN_ADC3_AWD1_OUT HAL_DMAMUX2_REQ_GEN_ADC3_AWD1_OUT +#define HAL_DMAMUX2_REQUEST_GEN_BDMA_CH0_IT HAL_DMAMUX2_REQ_GEN_BDMA_CH0_IT +#define HAL_DMAMUX2_REQUEST_GEN_BDMA_CH1_IT HAL_DMAMUX2_REQ_GEN_BDMA_CH1_IT + +#define HAL_DMAMUX_REQUEST_GEN_NO_EVENT HAL_DMAMUX_REQ_GEN_NO_EVENT +#define HAL_DMAMUX_REQUEST_GEN_RISING HAL_DMAMUX_REQ_GEN_RISING +#define HAL_DMAMUX_REQUEST_GEN_FALLING HAL_DMAMUX_REQ_GEN_FALLING +#define HAL_DMAMUX_REQUEST_GEN_RISING_FALLING HAL_DMAMUX_REQ_GEN_RISING_FALLING + +#define DFSDM_FILTER_EXT_TRIG_LPTIM1 DFSDM_FILTER_EXT_TRIG_LPTIM1_OUT +#define DFSDM_FILTER_EXT_TRIG_LPTIM2 DFSDM_FILTER_EXT_TRIG_LPTIM2_OUT +#define DFSDM_FILTER_EXT_TRIG_LPTIM3 DFSDM_FILTER_EXT_TRIG_LPTIM3_OUT + +#define DAC_TRIGGER_LP1_OUT DAC_TRIGGER_LPTIM1_OUT +#define DAC_TRIGGER_LP2_OUT DAC_TRIGGER_LPTIM2_OUT + +#endif /* STM32H7 */ + +#if defined(STM32U5) +#define GPDMA1_REQUEST_DCMI GPDMA1_REQUEST_DCMI_PSSI +#endif /* STM32U5 */ +/** + * @} + */ + +/** @defgroup HAL_FLASH_Aliased_Defines HAL FLASH Aliased Defines maintained for legacy purpose + * @{ + */ + +#define TYPEPROGRAM_BYTE FLASH_TYPEPROGRAM_BYTE +#define TYPEPROGRAM_HALFWORD FLASH_TYPEPROGRAM_HALFWORD +#define TYPEPROGRAM_WORD FLASH_TYPEPROGRAM_WORD +#define TYPEPROGRAM_DOUBLEWORD FLASH_TYPEPROGRAM_DOUBLEWORD +#define TYPEERASE_SECTORS FLASH_TYPEERASE_SECTORS +#define TYPEERASE_PAGES FLASH_TYPEERASE_PAGES +#define TYPEERASE_PAGEERASE FLASH_TYPEERASE_PAGES +#define TYPEERASE_MASSERASE FLASH_TYPEERASE_MASSERASE +#define WRPSTATE_DISABLE OB_WRPSTATE_DISABLE +#define WRPSTATE_ENABLE OB_WRPSTATE_ENABLE +#define HAL_FLASH_TIMEOUT_VALUE FLASH_TIMEOUT_VALUE +#define OBEX_PCROP OPTIONBYTE_PCROP +#define OBEX_BOOTCONFIG OPTIONBYTE_BOOTCONFIG +#define PCROPSTATE_DISABLE OB_PCROP_STATE_DISABLE +#define PCROPSTATE_ENABLE OB_PCROP_STATE_ENABLE +#define TYPEERASEDATA_BYTE FLASH_TYPEERASEDATA_BYTE +#define TYPEERASEDATA_HALFWORD FLASH_TYPEERASEDATA_HALFWORD +#define TYPEERASEDATA_WORD FLASH_TYPEERASEDATA_WORD +#define TYPEPROGRAMDATA_BYTE FLASH_TYPEPROGRAMDATA_BYTE +#define TYPEPROGRAMDATA_HALFWORD FLASH_TYPEPROGRAMDATA_HALFWORD +#define TYPEPROGRAMDATA_WORD FLASH_TYPEPROGRAMDATA_WORD +#define TYPEPROGRAMDATA_FASTBYTE FLASH_TYPEPROGRAMDATA_FASTBYTE +#define TYPEPROGRAMDATA_FASTHALFWORD FLASH_TYPEPROGRAMDATA_FASTHALFWORD +#define TYPEPROGRAMDATA_FASTWORD FLASH_TYPEPROGRAMDATA_FASTWORD +#define PAGESIZE FLASH_PAGE_SIZE +#define TYPEPROGRAM_FASTBYTE FLASH_TYPEPROGRAM_BYTE +#define TYPEPROGRAM_FASTHALFWORD FLASH_TYPEPROGRAM_HALFWORD +#define TYPEPROGRAM_FASTWORD FLASH_TYPEPROGRAM_WORD +#define VOLTAGE_RANGE_1 FLASH_VOLTAGE_RANGE_1 +#define VOLTAGE_RANGE_2 FLASH_VOLTAGE_RANGE_2 +#define VOLTAGE_RANGE_3 FLASH_VOLTAGE_RANGE_3 +#define VOLTAGE_RANGE_4 FLASH_VOLTAGE_RANGE_4 +#define TYPEPROGRAM_FAST FLASH_TYPEPROGRAM_FAST +#define TYPEPROGRAM_FAST_AND_LAST FLASH_TYPEPROGRAM_FAST_AND_LAST +#define WRPAREA_BANK1_AREAA OB_WRPAREA_BANK1_AREAA +#define WRPAREA_BANK1_AREAB OB_WRPAREA_BANK1_AREAB +#define WRPAREA_BANK2_AREAA OB_WRPAREA_BANK2_AREAA +#define WRPAREA_BANK2_AREAB OB_WRPAREA_BANK2_AREAB +#define IWDG_STDBY_FREEZE OB_IWDG_STDBY_FREEZE +#define IWDG_STDBY_ACTIVE OB_IWDG_STDBY_RUN +#define IWDG_STOP_FREEZE OB_IWDG_STOP_FREEZE +#define IWDG_STOP_ACTIVE OB_IWDG_STOP_RUN +#define FLASH_ERROR_NONE HAL_FLASH_ERROR_NONE +#define FLASH_ERROR_RD HAL_FLASH_ERROR_RD +#define FLASH_ERROR_PG HAL_FLASH_ERROR_PROG +#define FLASH_ERROR_PGP HAL_FLASH_ERROR_PGS +#define FLASH_ERROR_WRP HAL_FLASH_ERROR_WRP +#define FLASH_ERROR_OPTV HAL_FLASH_ERROR_OPTV +#define FLASH_ERROR_OPTVUSR HAL_FLASH_ERROR_OPTVUSR +#define FLASH_ERROR_PROG HAL_FLASH_ERROR_PROG +#define FLASH_ERROR_OP HAL_FLASH_ERROR_OPERATION +#define FLASH_ERROR_PGA HAL_FLASH_ERROR_PGA +#define FLASH_ERROR_SIZE HAL_FLASH_ERROR_SIZE +#define FLASH_ERROR_SIZ HAL_FLASH_ERROR_SIZE +#define FLASH_ERROR_PGS HAL_FLASH_ERROR_PGS +#define FLASH_ERROR_MIS HAL_FLASH_ERROR_MIS +#define FLASH_ERROR_FAST HAL_FLASH_ERROR_FAST +#define FLASH_ERROR_FWWERR HAL_FLASH_ERROR_FWWERR +#define FLASH_ERROR_NOTZERO HAL_FLASH_ERROR_NOTZERO +#define FLASH_ERROR_OPERATION HAL_FLASH_ERROR_OPERATION +#define FLASH_ERROR_ERS HAL_FLASH_ERROR_ERS +#define OB_WDG_SW OB_IWDG_SW +#define OB_WDG_HW OB_IWDG_HW +#define OB_SDADC12_VDD_MONITOR_SET OB_SDACD_VDD_MONITOR_SET +#define OB_SDADC12_VDD_MONITOR_RESET OB_SDACD_VDD_MONITOR_RESET +#define OB_RAM_PARITY_CHECK_SET OB_SRAM_PARITY_SET +#define OB_RAM_PARITY_CHECK_RESET OB_SRAM_PARITY_RESET +#define IS_OB_SDADC12_VDD_MONITOR IS_OB_SDACD_VDD_MONITOR +#define OB_RDP_LEVEL0 OB_RDP_LEVEL_0 +#define OB_RDP_LEVEL1 OB_RDP_LEVEL_1 +#define OB_RDP_LEVEL2 OB_RDP_LEVEL_2 +#if defined(STM32G0) || defined(STM32C0) +#define OB_BOOT_LOCK_DISABLE OB_BOOT_ENTRY_FORCED_NONE +#define OB_BOOT_LOCK_ENABLE OB_BOOT_ENTRY_FORCED_FLASH +#else +#define OB_BOOT_ENTRY_FORCED_NONE OB_BOOT_LOCK_DISABLE +#define OB_BOOT_ENTRY_FORCED_FLASH OB_BOOT_LOCK_ENABLE +#endif +#if defined(STM32H7) +#define FLASH_FLAG_SNECCE_BANK1RR FLASH_FLAG_SNECCERR_BANK1 +#define FLASH_FLAG_DBECCE_BANK1RR FLASH_FLAG_DBECCERR_BANK1 +#define FLASH_FLAG_STRBER_BANK1R FLASH_FLAG_STRBERR_BANK1 +#define FLASH_FLAG_SNECCE_BANK2RR FLASH_FLAG_SNECCERR_BANK2 +#define FLASH_FLAG_DBECCE_BANK2RR FLASH_FLAG_DBECCERR_BANK2 +#define FLASH_FLAG_STRBER_BANK2R FLASH_FLAG_STRBERR_BANK2 +#define FLASH_FLAG_WDW FLASH_FLAG_WBNE +#define OB_WRP_SECTOR_All OB_WRP_SECTOR_ALL +#endif /* STM32H7 */ +#if defined(STM32U5) +#define OB_USER_nRST_STOP OB_USER_NRST_STOP +#define OB_USER_nRST_STDBY OB_USER_NRST_STDBY +#define OB_USER_nRST_SHDW OB_USER_NRST_SHDW +#define OB_USER_nSWBOOT0 OB_USER_NSWBOOT0 +#define OB_USER_nBOOT0 OB_USER_NBOOT0 +#define OB_nBOOT0_RESET OB_NBOOT0_RESET +#define OB_nBOOT0_SET OB_NBOOT0_SET +#endif /* STM32U5 */ + +/** + * @} + */ + +/** @defgroup HAL_JPEG_Aliased_Macros HAL JPEG Aliased Macros maintained for legacy purpose + * @{ + */ + +#if defined(STM32H7) +#define __HAL_RCC_JPEG_CLK_ENABLE __HAL_RCC_JPGDECEN_CLK_ENABLE +#define __HAL_RCC_JPEG_CLK_DISABLE __HAL_RCC_JPGDECEN_CLK_DISABLE +#define __HAL_RCC_JPEG_FORCE_RESET __HAL_RCC_JPGDECRST_FORCE_RESET +#define __HAL_RCC_JPEG_RELEASE_RESET __HAL_RCC_JPGDECRST_RELEASE_RESET +#define __HAL_RCC_JPEG_CLK_SLEEP_ENABLE __HAL_RCC_JPGDEC_CLK_SLEEP_ENABLE +#define __HAL_RCC_JPEG_CLK_SLEEP_DISABLE __HAL_RCC_JPGDEC_CLK_SLEEP_DISABLE +#endif /* STM32H7 */ + +/** + * @} + */ + +/** @defgroup HAL_SYSCFG_Aliased_Defines HAL SYSCFG Aliased Defines maintained for legacy purpose + * @{ + */ + +#define HAL_SYSCFG_FASTMODEPLUS_I2C_PA9 I2C_FASTMODEPLUS_PA9 +#define HAL_SYSCFG_FASTMODEPLUS_I2C_PA10 I2C_FASTMODEPLUS_PA10 +#define HAL_SYSCFG_FASTMODEPLUS_I2C_PB6 I2C_FASTMODEPLUS_PB6 +#define HAL_SYSCFG_FASTMODEPLUS_I2C_PB7 I2C_FASTMODEPLUS_PB7 +#define HAL_SYSCFG_FASTMODEPLUS_I2C_PB8 I2C_FASTMODEPLUS_PB8 +#define HAL_SYSCFG_FASTMODEPLUS_I2C_PB9 I2C_FASTMODEPLUS_PB9 +#define HAL_SYSCFG_FASTMODEPLUS_I2C1 I2C_FASTMODEPLUS_I2C1 +#define HAL_SYSCFG_FASTMODEPLUS_I2C2 I2C_FASTMODEPLUS_I2C2 +#define HAL_SYSCFG_FASTMODEPLUS_I2C3 I2C_FASTMODEPLUS_I2C3 +#if defined(STM32G4) + +#define HAL_SYSCFG_EnableIOAnalogSwitchBooster HAL_SYSCFG_EnableIOSwitchBooster +#define HAL_SYSCFG_DisableIOAnalogSwitchBooster HAL_SYSCFG_DisableIOSwitchBooster +#define HAL_SYSCFG_EnableIOAnalogSwitchVDD HAL_SYSCFG_EnableIOSwitchVDD +#define HAL_SYSCFG_DisableIOAnalogSwitchVDD HAL_SYSCFG_DisableIOSwitchVDD +#endif /* STM32G4 */ + +/** + * @} + */ + + +/** @defgroup LL_FMC_Aliased_Defines LL FMC Aliased Defines maintained for compatibility purpose + * @{ + */ +#if defined(STM32L4) || defined(STM32F7) || defined(STM32H7) || defined(STM32G4) +#define FMC_NAND_PCC_WAIT_FEATURE_DISABLE FMC_NAND_WAIT_FEATURE_DISABLE +#define FMC_NAND_PCC_WAIT_FEATURE_ENABLE FMC_NAND_WAIT_FEATURE_ENABLE +#define FMC_NAND_PCC_MEM_BUS_WIDTH_8 FMC_NAND_MEM_BUS_WIDTH_8 +#define FMC_NAND_PCC_MEM_BUS_WIDTH_16 FMC_NAND_MEM_BUS_WIDTH_16 +#elif defined(STM32F1) || defined(STM32F2) || defined(STM32F3) || defined(STM32F4) +#define FMC_NAND_WAIT_FEATURE_DISABLE FMC_NAND_PCC_WAIT_FEATURE_DISABLE +#define FMC_NAND_WAIT_FEATURE_ENABLE FMC_NAND_PCC_WAIT_FEATURE_ENABLE +#define FMC_NAND_MEM_BUS_WIDTH_8 FMC_NAND_PCC_MEM_BUS_WIDTH_8 +#define FMC_NAND_MEM_BUS_WIDTH_16 FMC_NAND_PCC_MEM_BUS_WIDTH_16 +#endif +/** + * @} + */ + +/** @defgroup LL_FSMC_Aliased_Defines LL FSMC Aliased Defines maintained for legacy purpose + * @{ + */ + +#define FSMC_NORSRAM_TYPEDEF FSMC_NORSRAM_TypeDef +#define FSMC_NORSRAM_EXTENDED_TYPEDEF FSMC_NORSRAM_EXTENDED_TypeDef +/** + * @} + */ + +/** @defgroup HAL_GPIO_Aliased_Macros HAL GPIO Aliased Macros maintained for legacy purpose + * @{ + */ +#define GET_GPIO_SOURCE GPIO_GET_INDEX +#define GET_GPIO_INDEX GPIO_GET_INDEX + +#if defined(STM32F4) +#define GPIO_AF12_SDMMC GPIO_AF12_SDIO +#define GPIO_AF12_SDMMC1 GPIO_AF12_SDIO +#endif + +#if defined(STM32F7) +#define GPIO_AF12_SDIO GPIO_AF12_SDMMC1 +#define GPIO_AF12_SDMMC GPIO_AF12_SDMMC1 +#endif + +#if defined(STM32L4) +#define GPIO_AF12_SDIO GPIO_AF12_SDMMC1 +#define GPIO_AF12_SDMMC GPIO_AF12_SDMMC1 +#endif + +#if defined(STM32H7) +#define GPIO_AF7_SDIO1 GPIO_AF7_SDMMC1 +#define GPIO_AF8_SDIO1 GPIO_AF8_SDMMC1 +#define GPIO_AF12_SDIO1 GPIO_AF12_SDMMC1 +#define GPIO_AF9_SDIO2 GPIO_AF9_SDMMC2 +#define GPIO_AF10_SDIO2 GPIO_AF10_SDMMC2 +#define GPIO_AF11_SDIO2 GPIO_AF11_SDMMC2 + +#if defined (STM32H743xx) || defined (STM32H753xx) || defined (STM32H750xx) || defined (STM32H742xx) || \ + defined (STM32H745xx) || defined (STM32H755xx) || defined (STM32H747xx) || defined (STM32H757xx) +#define GPIO_AF10_OTG2_HS GPIO_AF10_OTG2_FS +#define GPIO_AF10_OTG1_FS GPIO_AF10_OTG1_HS +#define GPIO_AF12_OTG2_FS GPIO_AF12_OTG1_FS +#endif /*STM32H743xx || STM32H753xx || STM32H750xx || STM32H742xx || STM32H745xx || STM32H755xx || STM32H747xx || STM32H757xx */ +#endif /* STM32H7 */ + +#define GPIO_AF0_LPTIM GPIO_AF0_LPTIM1 +#define GPIO_AF1_LPTIM GPIO_AF1_LPTIM1 +#define GPIO_AF2_LPTIM GPIO_AF2_LPTIM1 + +#if defined(STM32L0) || defined(STM32L4) || defined(STM32F4) || defined(STM32F2) || defined(STM32F7) || defined(STM32G4) || defined(STM32H7) || defined(STM32WB) || defined(STM32U5) +#define GPIO_SPEED_LOW GPIO_SPEED_FREQ_LOW +#define GPIO_SPEED_MEDIUM GPIO_SPEED_FREQ_MEDIUM +#define GPIO_SPEED_FAST GPIO_SPEED_FREQ_HIGH +#define GPIO_SPEED_HIGH GPIO_SPEED_FREQ_VERY_HIGH +#endif /* STM32L0 || STM32L4 || STM32F4 || STM32F2 || STM32F7 || STM32G4 || STM32H7 || STM32WB || STM32U5*/ + +#if defined(STM32L1) +#define GPIO_SPEED_VERY_LOW GPIO_SPEED_FREQ_LOW +#define GPIO_SPEED_LOW GPIO_SPEED_FREQ_MEDIUM +#define GPIO_SPEED_MEDIUM GPIO_SPEED_FREQ_HIGH +#define GPIO_SPEED_HIGH GPIO_SPEED_FREQ_VERY_HIGH +#endif /* STM32L1 */ + +#if defined(STM32F0) || defined(STM32F3) || defined(STM32F1) +#define GPIO_SPEED_LOW GPIO_SPEED_FREQ_LOW +#define GPIO_SPEED_MEDIUM GPIO_SPEED_FREQ_MEDIUM +#define GPIO_SPEED_HIGH GPIO_SPEED_FREQ_HIGH +#endif /* STM32F0 || STM32F3 || STM32F1 */ + +#define GPIO_AF6_DFSDM GPIO_AF6_DFSDM1 + +#if defined(STM32U5) +#define GPIO_AF0_RTC_50Hz GPIO_AF0_RTC_50HZ +#endif /* STM32U5 */ +#if defined(STM32U5) +#define GPIO_AF0_S2DSTOP GPIO_AF0_SRDSTOP +#define GPIO_AF11_LPGPIO GPIO_AF11_LPGPIO1 +#endif /* STM32U5 */ +/** + * @} + */ + +/** @defgroup HAL_GTZC_Aliased_Defines HAL GTZC Aliased Defines maintained for legacy purpose + * @{ + */ +#if defined(STM32U5) +#define GTZC_PERIPH_DCMI GTZC_PERIPH_DCMI_PSSI +#endif /* STM32U5 */ +/** + * @} + */ + +/** @defgroup HAL_HRTIM_Aliased_Macros HAL HRTIM Aliased Macros maintained for legacy purpose + * @{ + */ +#define HRTIM_TIMDELAYEDPROTECTION_DISABLED HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_DISABLED +#define HRTIM_TIMDELAYEDPROTECTION_DELAYEDOUT1_EEV68 HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_DELAYEDOUT1_EEV6 +#define HRTIM_TIMDELAYEDPROTECTION_DELAYEDOUT2_EEV68 HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_DELAYEDOUT2_EEV6 +#define HRTIM_TIMDELAYEDPROTECTION_DELAYEDBOTH_EEV68 HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_DELAYEDBOTH_EEV6 +#define HRTIM_TIMDELAYEDPROTECTION_BALANCED_EEV68 HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_BALANCED_EEV6 +#define HRTIM_TIMDELAYEDPROTECTION_DELAYEDOUT1_DEEV79 HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_DELAYEDOUT1_DEEV7 +#define HRTIM_TIMDELAYEDPROTECTION_DELAYEDOUT2_DEEV79 HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_DELAYEDOUT2_DEEV7 +#define HRTIM_TIMDELAYEDPROTECTION_DELAYEDBOTH_EEV79 HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_DELAYEDBOTH_EEV7 +#define HRTIM_TIMDELAYEDPROTECTION_BALANCED_EEV79 HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_BALANCED_EEV7 + +#define __HAL_HRTIM_SetCounter __HAL_HRTIM_SETCOUNTER +#define __HAL_HRTIM_GetCounter __HAL_HRTIM_GETCOUNTER +#define __HAL_HRTIM_SetPeriod __HAL_HRTIM_SETPERIOD +#define __HAL_HRTIM_GetPeriod __HAL_HRTIM_GETPERIOD +#define __HAL_HRTIM_SetClockPrescaler __HAL_HRTIM_SETCLOCKPRESCALER +#define __HAL_HRTIM_GetClockPrescaler __HAL_HRTIM_GETCLOCKPRESCALER +#define __HAL_HRTIM_SetCompare __HAL_HRTIM_SETCOMPARE +#define __HAL_HRTIM_GetCompare __HAL_HRTIM_GETCOMPARE + +#if defined(STM32G4) +#define HAL_HRTIM_ExternalEventCounterConfig HAL_HRTIM_ExtEventCounterConfig +#define HAL_HRTIM_ExternalEventCounterEnable HAL_HRTIM_ExtEventCounterEnable +#define HAL_HRTIM_ExternalEventCounterDisable HAL_HRTIM_ExtEventCounterDisable +#define HAL_HRTIM_ExternalEventCounterReset HAL_HRTIM_ExtEventCounterReset +#define HRTIM_TIMEEVENT_A HRTIM_EVENTCOUNTER_A +#define HRTIM_TIMEEVENT_B HRTIM_EVENTCOUNTER_B +#define HRTIM_TIMEEVENTRESETMODE_UNCONDITIONAL HRTIM_EVENTCOUNTER_RSTMODE_UNCONDITIONAL +#define HRTIM_TIMEEVENTRESETMODE_CONDITIONAL HRTIM_EVENTCOUNTER_RSTMODE_CONDITIONAL +#endif /* STM32G4 */ + +#if defined(STM32H7) +#define HRTIM_OUTPUTSET_TIMAEV1_TIMBCMP1 HRTIM_OUTPUTSET_TIMEV_1 +#define HRTIM_OUTPUTSET_TIMAEV2_TIMBCMP2 HRTIM_OUTPUTSET_TIMEV_2 +#define HRTIM_OUTPUTSET_TIMAEV3_TIMCCMP2 HRTIM_OUTPUTSET_TIMEV_3 +#define HRTIM_OUTPUTSET_TIMAEV4_TIMCCMP3 HRTIM_OUTPUTSET_TIMEV_4 +#define HRTIM_OUTPUTSET_TIMAEV5_TIMDCMP1 HRTIM_OUTPUTSET_TIMEV_5 +#define HRTIM_OUTPUTSET_TIMAEV6_TIMDCMP2 HRTIM_OUTPUTSET_TIMEV_6 +#define HRTIM_OUTPUTSET_TIMAEV7_TIMECMP3 HRTIM_OUTPUTSET_TIMEV_7 +#define HRTIM_OUTPUTSET_TIMAEV8_TIMECMP4 HRTIM_OUTPUTSET_TIMEV_8 +#define HRTIM_OUTPUTSET_TIMAEV9_TIMFCMP4 HRTIM_OUTPUTSET_TIMEV_9 +#define HRTIM_OUTPUTSET_TIMBEV1_TIMACMP1 HRTIM_OUTPUTSET_TIMEV_1 +#define HRTIM_OUTPUTSET_TIMBEV2_TIMACMP2 HRTIM_OUTPUTSET_TIMEV_2 +#define HRTIM_OUTPUTSET_TIMBEV3_TIMCCMP3 HRTIM_OUTPUTSET_TIMEV_3 +#define HRTIM_OUTPUTSET_TIMBEV4_TIMCCMP4 HRTIM_OUTPUTSET_TIMEV_4 +#define HRTIM_OUTPUTSET_TIMBEV5_TIMDCMP3 HRTIM_OUTPUTSET_TIMEV_5 +#define HRTIM_OUTPUTSET_TIMBEV6_TIMDCMP4 HRTIM_OUTPUTSET_TIMEV_6 +#define HRTIM_OUTPUTSET_TIMBEV7_TIMECMP1 HRTIM_OUTPUTSET_TIMEV_7 +#define HRTIM_OUTPUTSET_TIMBEV8_TIMECMP2 HRTIM_OUTPUTSET_TIMEV_8 +#define HRTIM_OUTPUTSET_TIMBEV9_TIMFCMP3 HRTIM_OUTPUTSET_TIMEV_9 +#define HRTIM_OUTPUTSET_TIMCEV1_TIMACMP1 HRTIM_OUTPUTSET_TIMEV_1 +#define HRTIM_OUTPUTSET_TIMCEV2_TIMACMP2 HRTIM_OUTPUTSET_TIMEV_2 +#define HRTIM_OUTPUTSET_TIMCEV3_TIMBCMP2 HRTIM_OUTPUTSET_TIMEV_3 +#define HRTIM_OUTPUTSET_TIMCEV4_TIMBCMP3 HRTIM_OUTPUTSET_TIMEV_4 +#define HRTIM_OUTPUTSET_TIMCEV5_TIMDCMP2 HRTIM_OUTPUTSET_TIMEV_5 +#define HRTIM_OUTPUTSET_TIMCEV6_TIMDCMP4 HRTIM_OUTPUTSET_TIMEV_6 +#define HRTIM_OUTPUTSET_TIMCEV7_TIMECMP3 HRTIM_OUTPUTSET_TIMEV_7 +#define HRTIM_OUTPUTSET_TIMCEV8_TIMECMP4 HRTIM_OUTPUTSET_TIMEV_8 +#define HRTIM_OUTPUTSET_TIMCEV9_TIMFCMP2 HRTIM_OUTPUTSET_TIMEV_9 +#define HRTIM_OUTPUTSET_TIMDEV1_TIMACMP1 HRTIM_OUTPUTSET_TIMEV_1 +#define HRTIM_OUTPUTSET_TIMDEV2_TIMACMP4 HRTIM_OUTPUTSET_TIMEV_2 +#define HRTIM_OUTPUTSET_TIMDEV3_TIMBCMP2 HRTIM_OUTPUTSET_TIMEV_3 +#define HRTIM_OUTPUTSET_TIMDEV4_TIMBCMP4 HRTIM_OUTPUTSET_TIMEV_4 +#define HRTIM_OUTPUTSET_TIMDEV5_TIMCCMP4 HRTIM_OUTPUTSET_TIMEV_5 +#define HRTIM_OUTPUTSET_TIMDEV6_TIMECMP1 HRTIM_OUTPUTSET_TIMEV_6 +#define HRTIM_OUTPUTSET_TIMDEV7_TIMECMP4 HRTIM_OUTPUTSET_TIMEV_7 +#define HRTIM_OUTPUTSET_TIMDEV8_TIMFCMP1 HRTIM_OUTPUTSET_TIMEV_8 +#define HRTIM_OUTPUTSET_TIMDEV9_TIMFCMP3 HRTIM_OUTPUTSET_TIMEV_9 +#define HRTIM_OUTPUTSET_TIMEEV1_TIMACMP4 HRTIM_OUTPUTSET_TIMEV_1 +#define HRTIM_OUTPUTSET_TIMEEV2_TIMBCMP3 HRTIM_OUTPUTSET_TIMEV_2 +#define HRTIM_OUTPUTSET_TIMEEV3_TIMBCMP4 HRTIM_OUTPUTSET_TIMEV_3 +#define HRTIM_OUTPUTSET_TIMEEV4_TIMCCMP1 HRTIM_OUTPUTSET_TIMEV_4 +#define HRTIM_OUTPUTSET_TIMEEV5_TIMDCMP2 HRTIM_OUTPUTSET_TIMEV_5 +#define HRTIM_OUTPUTSET_TIMEEV6_TIMDCMP1 HRTIM_OUTPUTSET_TIMEV_6 +#define HRTIM_OUTPUTSET_TIMEEV7_TIMDCMP2 HRTIM_OUTPUTSET_TIMEV_7 +#define HRTIM_OUTPUTSET_TIMEEV8_TIMFCMP3 HRTIM_OUTPUTSET_TIMEV_8 +#define HRTIM_OUTPUTSET_TIMEEV9_TIMFCMP4 HRTIM_OUTPUTSET_TIMEV_9 +#define HRTIM_OUTPUTSET_TIMFEV1_TIMACMP3 HRTIM_OUTPUTSET_TIMEV_1 +#define HRTIM_OUTPUTSET_TIMFEV2_TIMBCMP1 HRTIM_OUTPUTSET_TIMEV_2 +#define HRTIM_OUTPUTSET_TIMFEV3_TIMBCMP4 HRTIM_OUTPUTSET_TIMEV_3 +#define HRTIM_OUTPUTSET_TIMFEV4_TIMCCMP1 HRTIM_OUTPUTSET_TIMEV_4 +#define HRTIM_OUTPUTSET_TIMFEV5_TIMCCMP4 HRTIM_OUTPUTSET_TIMEV_5 +#define HRTIM_OUTPUTSET_TIMFEV6_TIMDCMP3 HRTIM_OUTPUTSET_TIMEV_6 +#define HRTIM_OUTPUTSET_TIMFEV7_TIMDCMP4 HRTIM_OUTPUTSET_TIMEV_7 +#define HRTIM_OUTPUTSET_TIMFEV8_TIMECMP2 HRTIM_OUTPUTSET_TIMEV_8 +#define HRTIM_OUTPUTSET_TIMFEV9_TIMECMP3 HRTIM_OUTPUTSET_TIMEV_9 + +#define HRTIM_OUTPUTRESET_TIMAEV1_TIMBCMP1 HRTIM_OUTPUTSET_TIMEV_1 +#define HRTIM_OUTPUTRESET_TIMAEV2_TIMBCMP2 HRTIM_OUTPUTSET_TIMEV_2 +#define HRTIM_OUTPUTRESET_TIMAEV3_TIMCCMP2 HRTIM_OUTPUTSET_TIMEV_3 +#define HRTIM_OUTPUTRESET_TIMAEV4_TIMCCMP3 HRTIM_OUTPUTSET_TIMEV_4 +#define HRTIM_OUTPUTRESET_TIMAEV5_TIMDCMP1 HRTIM_OUTPUTSET_TIMEV_5 +#define HRTIM_OUTPUTRESET_TIMAEV6_TIMDCMP2 HRTIM_OUTPUTSET_TIMEV_6 +#define HRTIM_OUTPUTRESET_TIMAEV7_TIMECMP3 HRTIM_OUTPUTSET_TIMEV_7 +#define HRTIM_OUTPUTRESET_TIMAEV8_TIMECMP4 HRTIM_OUTPUTSET_TIMEV_8 +#define HRTIM_OUTPUTRESET_TIMAEV9_TIMFCMP4 HRTIM_OUTPUTSET_TIMEV_9 +#define HRTIM_OUTPUTRESET_TIMBEV1_TIMACMP1 HRTIM_OUTPUTSET_TIMEV_1 +#define HRTIM_OUTPUTRESET_TIMBEV2_TIMACMP2 HRTIM_OUTPUTSET_TIMEV_2 +#define HRTIM_OUTPUTRESET_TIMBEV3_TIMCCMP3 HRTIM_OUTPUTSET_TIMEV_3 +#define HRTIM_OUTPUTRESET_TIMBEV4_TIMCCMP4 HRTIM_OUTPUTSET_TIMEV_4 +#define HRTIM_OUTPUTRESET_TIMBEV5_TIMDCMP3 HRTIM_OUTPUTSET_TIMEV_5 +#define HRTIM_OUTPUTRESET_TIMBEV6_TIMDCMP4 HRTIM_OUTPUTSET_TIMEV_6 +#define HRTIM_OUTPUTRESET_TIMBEV7_TIMECMP1 HRTIM_OUTPUTSET_TIMEV_7 +#define HRTIM_OUTPUTRESET_TIMBEV8_TIMECMP2 HRTIM_OUTPUTSET_TIMEV_8 +#define HRTIM_OUTPUTRESET_TIMBEV9_TIMFCMP3 HRTIM_OUTPUTSET_TIMEV_9 +#define HRTIM_OUTPUTRESET_TIMCEV1_TIMACMP1 HRTIM_OUTPUTSET_TIMEV_1 +#define HRTIM_OUTPUTRESET_TIMCEV2_TIMACMP2 HRTIM_OUTPUTSET_TIMEV_2 +#define HRTIM_OUTPUTRESET_TIMCEV3_TIMBCMP2 HRTIM_OUTPUTSET_TIMEV_3 +#define HRTIM_OUTPUTRESET_TIMCEV4_TIMBCMP3 HRTIM_OUTPUTSET_TIMEV_4 +#define HRTIM_OUTPUTRESET_TIMCEV5_TIMDCMP2 HRTIM_OUTPUTSET_TIMEV_5 +#define HRTIM_OUTPUTRESET_TIMCEV6_TIMDCMP4 HRTIM_OUTPUTSET_TIMEV_6 +#define HRTIM_OUTPUTRESET_TIMCEV7_TIMECMP3 HRTIM_OUTPUTSET_TIMEV_7 +#define HRTIM_OUTPUTRESET_TIMCEV8_TIMECMP4 HRTIM_OUTPUTSET_TIMEV_8 +#define HRTIM_OUTPUTRESET_TIMCEV9_TIMFCMP2 HRTIM_OUTPUTSET_TIMEV_9 +#define HRTIM_OUTPUTRESET_TIMDEV1_TIMACMP1 HRTIM_OUTPUTSET_TIMEV_1 +#define HRTIM_OUTPUTRESET_TIMDEV2_TIMACMP4 HRTIM_OUTPUTSET_TIMEV_2 +#define HRTIM_OUTPUTRESET_TIMDEV3_TIMBCMP2 HRTIM_OUTPUTSET_TIMEV_3 +#define HRTIM_OUTPUTRESET_TIMDEV4_TIMBCMP4 HRTIM_OUTPUTSET_TIMEV_4 +#define HRTIM_OUTPUTRESET_TIMDEV5_TIMCCMP4 HRTIM_OUTPUTSET_TIMEV_5 +#define HRTIM_OUTPUTRESET_TIMDEV6_TIMECMP1 HRTIM_OUTPUTSET_TIMEV_6 +#define HRTIM_OUTPUTRESET_TIMDEV7_TIMECMP4 HRTIM_OUTPUTSET_TIMEV_7 +#define HRTIM_OUTPUTRESET_TIMDEV8_TIMFCMP1 HRTIM_OUTPUTSET_TIMEV_8 +#define HRTIM_OUTPUTRESET_TIMDEV9_TIMFCMP3 HRTIM_OUTPUTSET_TIMEV_9 +#define HRTIM_OUTPUTRESET_TIMEEV1_TIMACMP4 HRTIM_OUTPUTSET_TIMEV_1 +#define HRTIM_OUTPUTRESET_TIMEEV2_TIMBCMP3 HRTIM_OUTPUTSET_TIMEV_2 +#define HRTIM_OUTPUTRESET_TIMEEV3_TIMBCMP4 HRTIM_OUTPUTSET_TIMEV_3 +#define HRTIM_OUTPUTRESET_TIMEEV4_TIMCCMP1 HRTIM_OUTPUTSET_TIMEV_4 +#define HRTIM_OUTPUTRESET_TIMEEV5_TIMDCMP2 HRTIM_OUTPUTSET_TIMEV_5 +#define HRTIM_OUTPUTRESET_TIMEEV6_TIMDCMP1 HRTIM_OUTPUTSET_TIMEV_6 +#define HRTIM_OUTPUTRESET_TIMEEV7_TIMDCMP2 HRTIM_OUTPUTSET_TIMEV_7 +#define HRTIM_OUTPUTRESET_TIMEEV8_TIMFCMP3 HRTIM_OUTPUTSET_TIMEV_8 +#define HRTIM_OUTPUTRESET_TIMEEV9_TIMFCMP4 HRTIM_OUTPUTSET_TIMEV_9 +#define HRTIM_OUTPUTRESET_TIMFEV1_TIMACMP3 HRTIM_OUTPUTSET_TIMEV_1 +#define HRTIM_OUTPUTRESET_TIMFEV2_TIMBCMP1 HRTIM_OUTPUTSET_TIMEV_2 +#define HRTIM_OUTPUTRESET_TIMFEV3_TIMBCMP4 HRTIM_OUTPUTSET_TIMEV_3 +#define HRTIM_OUTPUTRESET_TIMFEV4_TIMCCMP1 HRTIM_OUTPUTSET_TIMEV_4 +#define HRTIM_OUTPUTRESET_TIMFEV5_TIMCCMP4 HRTIM_OUTPUTSET_TIMEV_5 +#define HRTIM_OUTPUTRESET_TIMFEV6_TIMDCMP3 HRTIM_OUTPUTSET_TIMEV_6 +#define HRTIM_OUTPUTRESET_TIMFEV7_TIMDCMP4 HRTIM_OUTPUTSET_TIMEV_7 +#define HRTIM_OUTPUTRESET_TIMFEV8_TIMECMP2 HRTIM_OUTPUTSET_TIMEV_8 +#define HRTIM_OUTPUTRESET_TIMFEV9_TIMECMP3 HRTIM_OUTPUTSET_TIMEV_9 +#endif /* STM32H7 */ + +#if defined(STM32F3) +/** @brief Constants defining available sources associated to external events. + */ +#define HRTIM_EVENTSRC_1 (0x00000000U) +#define HRTIM_EVENTSRC_2 (HRTIM_EECR1_EE1SRC_0) +#define HRTIM_EVENTSRC_3 (HRTIM_EECR1_EE1SRC_1) +#define HRTIM_EVENTSRC_4 (HRTIM_EECR1_EE1SRC_1 | HRTIM_EECR1_EE1SRC_0) + +/** @brief Constants defining the DLL calibration periods (in micro seconds) + */ +#define HRTIM_CALIBRATIONRATE_7300 0x00000000U +#define HRTIM_CALIBRATIONRATE_910 (HRTIM_DLLCR_CALRTE_0) +#define HRTIM_CALIBRATIONRATE_114 (HRTIM_DLLCR_CALRTE_1) +#define HRTIM_CALIBRATIONRATE_14 (HRTIM_DLLCR_CALRTE_1 | HRTIM_DLLCR_CALRTE_0) + +#endif /* STM32F3 */ +/** + * @} + */ + +/** @defgroup HAL_I2C_Aliased_Defines HAL I2C Aliased Defines maintained for legacy purpose + * @{ + */ +#define I2C_DUALADDRESS_DISABLED I2C_DUALADDRESS_DISABLE +#define I2C_DUALADDRESS_ENABLED I2C_DUALADDRESS_ENABLE +#define I2C_GENERALCALL_DISABLED I2C_GENERALCALL_DISABLE +#define I2C_GENERALCALL_ENABLED I2C_GENERALCALL_ENABLE +#define I2C_NOSTRETCH_DISABLED I2C_NOSTRETCH_DISABLE +#define I2C_NOSTRETCH_ENABLED I2C_NOSTRETCH_ENABLE +#define I2C_ANALOGFILTER_ENABLED I2C_ANALOGFILTER_ENABLE +#define I2C_ANALOGFILTER_DISABLED I2C_ANALOGFILTER_DISABLE +#if defined(STM32F0) || defined(STM32F1) || defined(STM32F3) || defined(STM32G0) || defined(STM32L4) || defined(STM32L1) || defined(STM32F7) +#define HAL_I2C_STATE_MEM_BUSY_TX HAL_I2C_STATE_BUSY_TX +#define HAL_I2C_STATE_MEM_BUSY_RX HAL_I2C_STATE_BUSY_RX +#define HAL_I2C_STATE_MASTER_BUSY_TX HAL_I2C_STATE_BUSY_TX +#define HAL_I2C_STATE_MASTER_BUSY_RX HAL_I2C_STATE_BUSY_RX +#define HAL_I2C_STATE_SLAVE_BUSY_TX HAL_I2C_STATE_BUSY_TX +#define HAL_I2C_STATE_SLAVE_BUSY_RX HAL_I2C_STATE_BUSY_RX +#endif +/** + * @} + */ + +/** @defgroup HAL_IRDA_Aliased_Defines HAL IRDA Aliased Defines maintained for legacy purpose + * @{ + */ +#define IRDA_ONE_BIT_SAMPLE_DISABLED IRDA_ONE_BIT_SAMPLE_DISABLE +#define IRDA_ONE_BIT_SAMPLE_ENABLED IRDA_ONE_BIT_SAMPLE_ENABLE + +/** + * @} + */ + +/** @defgroup HAL_IWDG_Aliased_Defines HAL IWDG Aliased Defines maintained for legacy purpose + * @{ + */ +#define KR_KEY_RELOAD IWDG_KEY_RELOAD +#define KR_KEY_ENABLE IWDG_KEY_ENABLE +#define KR_KEY_EWA IWDG_KEY_WRITE_ACCESS_ENABLE +#define KR_KEY_DWA IWDG_KEY_WRITE_ACCESS_DISABLE +/** + * @} + */ + +/** @defgroup HAL_LPTIM_Aliased_Defines HAL LPTIM Aliased Defines maintained for legacy purpose + * @{ + */ + +#define LPTIM_CLOCKSAMPLETIME_DIRECTTRANSISTION LPTIM_CLOCKSAMPLETIME_DIRECTTRANSITION +#define LPTIM_CLOCKSAMPLETIME_2TRANSISTIONS LPTIM_CLOCKSAMPLETIME_2TRANSITIONS +#define LPTIM_CLOCKSAMPLETIME_4TRANSISTIONS LPTIM_CLOCKSAMPLETIME_4TRANSITIONS +#define LPTIM_CLOCKSAMPLETIME_8TRANSISTIONS LPTIM_CLOCKSAMPLETIME_8TRANSITIONS + +#define LPTIM_CLOCKPOLARITY_RISINGEDGE LPTIM_CLOCKPOLARITY_RISING +#define LPTIM_CLOCKPOLARITY_FALLINGEDGE LPTIM_CLOCKPOLARITY_FALLING +#define LPTIM_CLOCKPOLARITY_BOTHEDGES LPTIM_CLOCKPOLARITY_RISING_FALLING + +#define LPTIM_TRIGSAMPLETIME_DIRECTTRANSISTION LPTIM_TRIGSAMPLETIME_DIRECTTRANSITION +#define LPTIM_TRIGSAMPLETIME_2TRANSISTIONS LPTIM_TRIGSAMPLETIME_2TRANSITIONS +#define LPTIM_TRIGSAMPLETIME_4TRANSISTIONS LPTIM_TRIGSAMPLETIME_4TRANSITIONS +#define LPTIM_TRIGSAMPLETIME_8TRANSISTIONS LPTIM_TRIGSAMPLETIME_8TRANSITIONS + +/* The following 3 definition have also been present in a temporary version of lptim.h */ +/* They need to be renamed also to the right name, just in case */ +#define LPTIM_TRIGSAMPLETIME_2TRANSITION LPTIM_TRIGSAMPLETIME_2TRANSITIONS +#define LPTIM_TRIGSAMPLETIME_4TRANSITION LPTIM_TRIGSAMPLETIME_4TRANSITIONS +#define LPTIM_TRIGSAMPLETIME_8TRANSITION LPTIM_TRIGSAMPLETIME_8TRANSITIONS + + +/** @defgroup HAL_LPTIM_Aliased_Defines HAL LPTIM Aliased Defines maintained for legacy purpose + * @{ + */ +#define HAL_LPTIM_ReadCompare HAL_LPTIM_ReadCapturedValue +/** + * @} + */ + +#if defined(STM32U5) +#define LPTIM_ISR_CC1 LPTIM_ISR_CC1IF +#define LPTIM_ISR_CC2 LPTIM_ISR_CC2IF +#define LPTIM_CHANNEL_ALL 0x00000000U +#endif /* STM32U5 */ +/** + * @} + */ + +/** @defgroup HAL_NAND_Aliased_Defines HAL NAND Aliased Defines maintained for legacy purpose + * @{ + */ +#define HAL_NAND_Read_Page HAL_NAND_Read_Page_8b +#define HAL_NAND_Write_Page HAL_NAND_Write_Page_8b +#define HAL_NAND_Read_SpareArea HAL_NAND_Read_SpareArea_8b +#define HAL_NAND_Write_SpareArea HAL_NAND_Write_SpareArea_8b + +#define NAND_AddressTypedef NAND_AddressTypeDef + +#define __ARRAY_ADDRESS ARRAY_ADDRESS +#define __ADDR_1st_CYCLE ADDR_1ST_CYCLE +#define __ADDR_2nd_CYCLE ADDR_2ND_CYCLE +#define __ADDR_3rd_CYCLE ADDR_3RD_CYCLE +#define __ADDR_4th_CYCLE ADDR_4TH_CYCLE +/** + * @} + */ + +/** @defgroup HAL_NOR_Aliased_Defines HAL NOR Aliased Defines maintained for legacy purpose + * @{ + */ +#define NOR_StatusTypedef HAL_NOR_StatusTypeDef +#define NOR_SUCCESS HAL_NOR_STATUS_SUCCESS +#define NOR_ONGOING HAL_NOR_STATUS_ONGOING +#define NOR_ERROR HAL_NOR_STATUS_ERROR +#define NOR_TIMEOUT HAL_NOR_STATUS_TIMEOUT + +#define __NOR_WRITE NOR_WRITE +#define __NOR_ADDR_SHIFT NOR_ADDR_SHIFT +/** + * @} + */ + +/** @defgroup HAL_OPAMP_Aliased_Defines HAL OPAMP Aliased Defines maintained for legacy purpose + * @{ + */ + +#define OPAMP_NONINVERTINGINPUT_VP0 OPAMP_NONINVERTINGINPUT_IO0 +#define OPAMP_NONINVERTINGINPUT_VP1 OPAMP_NONINVERTINGINPUT_IO1 +#define OPAMP_NONINVERTINGINPUT_VP2 OPAMP_NONINVERTINGINPUT_IO2 +#define OPAMP_NONINVERTINGINPUT_VP3 OPAMP_NONINVERTINGINPUT_IO3 + +#define OPAMP_SEC_NONINVERTINGINPUT_VP0 OPAMP_SEC_NONINVERTINGINPUT_IO0 +#define OPAMP_SEC_NONINVERTINGINPUT_VP1 OPAMP_SEC_NONINVERTINGINPUT_IO1 +#define OPAMP_SEC_NONINVERTINGINPUT_VP2 OPAMP_SEC_NONINVERTINGINPUT_IO2 +#define OPAMP_SEC_NONINVERTINGINPUT_VP3 OPAMP_SEC_NONINVERTINGINPUT_IO3 + +#define OPAMP_INVERTINGINPUT_VM0 OPAMP_INVERTINGINPUT_IO0 +#define OPAMP_INVERTINGINPUT_VM1 OPAMP_INVERTINGINPUT_IO1 + +#define IOPAMP_INVERTINGINPUT_VM0 OPAMP_INVERTINGINPUT_IO0 +#define IOPAMP_INVERTINGINPUT_VM1 OPAMP_INVERTINGINPUT_IO1 + +#define OPAMP_SEC_INVERTINGINPUT_VM0 OPAMP_SEC_INVERTINGINPUT_IO0 +#define OPAMP_SEC_INVERTINGINPUT_VM1 OPAMP_SEC_INVERTINGINPUT_IO1 + +#define OPAMP_INVERTINGINPUT_VINM OPAMP_SEC_INVERTINGINPUT_IO1 + +#define OPAMP_PGACONNECT_NO OPAMP_PGA_CONNECT_INVERTINGINPUT_NO +#define OPAMP_PGACONNECT_VM0 OPAMP_PGA_CONNECT_INVERTINGINPUT_IO0 +#define OPAMP_PGACONNECT_VM1 OPAMP_PGA_CONNECT_INVERTINGINPUT_IO1 + +#if defined(STM32L1) || defined(STM32L4) || defined(STM32L5) || defined(STM32H7) || defined(STM32G4) +#define HAL_OPAMP_MSP_INIT_CB_ID HAL_OPAMP_MSPINIT_CB_ID +#define HAL_OPAMP_MSP_DEINIT_CB_ID HAL_OPAMP_MSPDEINIT_CB_ID +#endif + +#if defined(STM32L4) || defined(STM32L5) +#define OPAMP_POWERMODE_NORMAL OPAMP_POWERMODE_NORMALPOWER +#elif defined(STM32G4) +#define OPAMP_POWERMODE_NORMAL OPAMP_POWERMODE_NORMALSPEED +#endif + +/** + * @} + */ + +/** @defgroup HAL_I2S_Aliased_Defines HAL I2S Aliased Defines maintained for legacy purpose + * @{ + */ +#define I2S_STANDARD_PHILLIPS I2S_STANDARD_PHILIPS + +#if defined(STM32H7) +#define I2S_IT_TXE I2S_IT_TXP +#define I2S_IT_RXNE I2S_IT_RXP + +#define I2S_FLAG_TXE I2S_FLAG_TXP +#define I2S_FLAG_RXNE I2S_FLAG_RXP +#endif + +#if defined(STM32F7) +#define I2S_CLOCK_SYSCLK I2S_CLOCK_PLL +#endif +/** + * @} + */ + +/** @defgroup HAL_PCCARD_Aliased_Defines HAL PCCARD Aliased Defines maintained for legacy purpose + * @{ + */ + +/* Compact Flash-ATA registers description */ +#define CF_DATA ATA_DATA +#define CF_SECTOR_COUNT ATA_SECTOR_COUNT +#define CF_SECTOR_NUMBER ATA_SECTOR_NUMBER +#define CF_CYLINDER_LOW ATA_CYLINDER_LOW +#define CF_CYLINDER_HIGH ATA_CYLINDER_HIGH +#define CF_CARD_HEAD ATA_CARD_HEAD +#define CF_STATUS_CMD ATA_STATUS_CMD +#define CF_STATUS_CMD_ALTERNATE ATA_STATUS_CMD_ALTERNATE +#define CF_COMMON_DATA_AREA ATA_COMMON_DATA_AREA + +/* Compact Flash-ATA commands */ +#define CF_READ_SECTOR_CMD ATA_READ_SECTOR_CMD +#define CF_WRITE_SECTOR_CMD ATA_WRITE_SECTOR_CMD +#define CF_ERASE_SECTOR_CMD ATA_ERASE_SECTOR_CMD +#define CF_IDENTIFY_CMD ATA_IDENTIFY_CMD + +#define PCCARD_StatusTypedef HAL_PCCARD_StatusTypeDef +#define PCCARD_SUCCESS HAL_PCCARD_STATUS_SUCCESS +#define PCCARD_ONGOING HAL_PCCARD_STATUS_ONGOING +#define PCCARD_ERROR HAL_PCCARD_STATUS_ERROR +#define PCCARD_TIMEOUT HAL_PCCARD_STATUS_TIMEOUT +/** + * @} + */ + +/** @defgroup HAL_RTC_Aliased_Defines HAL RTC Aliased Defines maintained for legacy purpose + * @{ + */ + +#define FORMAT_BIN RTC_FORMAT_BIN +#define FORMAT_BCD RTC_FORMAT_BCD + +#define RTC_ALARMSUBSECONDMASK_None RTC_ALARMSUBSECONDMASK_NONE +#define RTC_TAMPERERASEBACKUP_DISABLED RTC_TAMPER_ERASE_BACKUP_DISABLE +#define RTC_TAMPERMASK_FLAG_DISABLED RTC_TAMPERMASK_FLAG_DISABLE +#define RTC_TAMPERMASK_FLAG_ENABLED RTC_TAMPERMASK_FLAG_ENABLE + +#define RTC_MASKTAMPERFLAG_DISABLED RTC_TAMPERMASK_FLAG_DISABLE +#define RTC_MASKTAMPERFLAG_ENABLED RTC_TAMPERMASK_FLAG_ENABLE +#define RTC_TAMPERERASEBACKUP_ENABLED RTC_TAMPER_ERASE_BACKUP_ENABLE +#define RTC_TAMPER1_2_INTERRUPT RTC_ALL_TAMPER_INTERRUPT +#define RTC_TAMPER1_2_3_INTERRUPT RTC_ALL_TAMPER_INTERRUPT + +#define RTC_TIMESTAMPPIN_PC13 RTC_TIMESTAMPPIN_DEFAULT +#define RTC_TIMESTAMPPIN_PA0 RTC_TIMESTAMPPIN_POS1 +#define RTC_TIMESTAMPPIN_PI8 RTC_TIMESTAMPPIN_POS1 +#define RTC_TIMESTAMPPIN_PC1 RTC_TIMESTAMPPIN_POS2 + +#define RTC_OUTPUT_REMAP_PC13 RTC_OUTPUT_REMAP_NONE +#define RTC_OUTPUT_REMAP_PB14 RTC_OUTPUT_REMAP_POS1 +#define RTC_OUTPUT_REMAP_PB2 RTC_OUTPUT_REMAP_POS1 + +#define RTC_TAMPERPIN_PC13 RTC_TAMPERPIN_DEFAULT +#define RTC_TAMPERPIN_PA0 RTC_TAMPERPIN_POS1 +#define RTC_TAMPERPIN_PI8 RTC_TAMPERPIN_POS1 + +#if defined(STM32F7) +#define RTC_TAMPCR_TAMPXE RTC_TAMPER_ENABLE_BITS_MASK +#define RTC_TAMPCR_TAMPXIE RTC_TAMPER_IT_ENABLE_BITS_MASK +#endif /* STM32F7 */ + +#if defined(STM32H7) +#define RTC_TAMPCR_TAMPXE RTC_TAMPER_X +#define RTC_TAMPCR_TAMPXIE RTC_TAMPER_X_INTERRUPT +#endif /* STM32H7 */ + +#if defined(STM32F7) || defined(STM32H7) +#define RTC_TAMPER1_INTERRUPT RTC_IT_TAMP1 +#define RTC_TAMPER2_INTERRUPT RTC_IT_TAMP2 +#define RTC_TAMPER3_INTERRUPT RTC_IT_TAMP3 +#define RTC_ALL_TAMPER_INTERRUPT RTC_IT_TAMP +#endif /* STM32F7 || STM32H7 */ + +/** + * @} + */ + + +/** @defgroup HAL_SMARTCARD_Aliased_Defines HAL SMARTCARD Aliased Defines maintained for legacy purpose + * @{ + */ +#define SMARTCARD_NACK_ENABLED SMARTCARD_NACK_ENABLE +#define SMARTCARD_NACK_DISABLED SMARTCARD_NACK_DISABLE + +#define SMARTCARD_ONEBIT_SAMPLING_DISABLED SMARTCARD_ONE_BIT_SAMPLE_DISABLE +#define SMARTCARD_ONEBIT_SAMPLING_ENABLED SMARTCARD_ONE_BIT_SAMPLE_ENABLE +#define SMARTCARD_ONEBIT_SAMPLING_DISABLE SMARTCARD_ONE_BIT_SAMPLE_DISABLE +#define SMARTCARD_ONEBIT_SAMPLING_ENABLE SMARTCARD_ONE_BIT_SAMPLE_ENABLE + +#define SMARTCARD_TIMEOUT_DISABLED SMARTCARD_TIMEOUT_DISABLE +#define SMARTCARD_TIMEOUT_ENABLED SMARTCARD_TIMEOUT_ENABLE + +#define SMARTCARD_LASTBIT_DISABLED SMARTCARD_LASTBIT_DISABLE +#define SMARTCARD_LASTBIT_ENABLED SMARTCARD_LASTBIT_ENABLE +/** + * @} + */ + + +/** @defgroup HAL_SMBUS_Aliased_Defines HAL SMBUS Aliased Defines maintained for legacy purpose + * @{ + */ +#define SMBUS_DUALADDRESS_DISABLED SMBUS_DUALADDRESS_DISABLE +#define SMBUS_DUALADDRESS_ENABLED SMBUS_DUALADDRESS_ENABLE +#define SMBUS_GENERALCALL_DISABLED SMBUS_GENERALCALL_DISABLE +#define SMBUS_GENERALCALL_ENABLED SMBUS_GENERALCALL_ENABLE +#define SMBUS_NOSTRETCH_DISABLED SMBUS_NOSTRETCH_DISABLE +#define SMBUS_NOSTRETCH_ENABLED SMBUS_NOSTRETCH_ENABLE +#define SMBUS_ANALOGFILTER_ENABLED SMBUS_ANALOGFILTER_ENABLE +#define SMBUS_ANALOGFILTER_DISABLED SMBUS_ANALOGFILTER_DISABLE +#define SMBUS_PEC_DISABLED SMBUS_PEC_DISABLE +#define SMBUS_PEC_ENABLED SMBUS_PEC_ENABLE +#define HAL_SMBUS_STATE_SLAVE_LISTEN HAL_SMBUS_STATE_LISTEN +/** + * @} + */ + +/** @defgroup HAL_SPI_Aliased_Defines HAL SPI Aliased Defines maintained for legacy purpose + * @{ + */ +#define SPI_TIMODE_DISABLED SPI_TIMODE_DISABLE +#define SPI_TIMODE_ENABLED SPI_TIMODE_ENABLE + +#define SPI_CRCCALCULATION_DISABLED SPI_CRCCALCULATION_DISABLE +#define SPI_CRCCALCULATION_ENABLED SPI_CRCCALCULATION_ENABLE + +#define SPI_NSS_PULSE_DISABLED SPI_NSS_PULSE_DISABLE +#define SPI_NSS_PULSE_ENABLED SPI_NSS_PULSE_ENABLE + +#if defined(STM32H7) + +#define SPI_FLAG_TXE SPI_FLAG_TXP +#define SPI_FLAG_RXNE SPI_FLAG_RXP + +#define SPI_IT_TXE SPI_IT_TXP +#define SPI_IT_RXNE SPI_IT_RXP + +#define SPI_FRLVL_EMPTY SPI_RX_FIFO_0PACKET +#define SPI_FRLVL_QUARTER_FULL SPI_RX_FIFO_1PACKET +#define SPI_FRLVL_HALF_FULL SPI_RX_FIFO_2PACKET +#define SPI_FRLVL_FULL SPI_RX_FIFO_3PACKET + +#endif /* STM32H7 */ + +/** + * @} + */ + +/** @defgroup HAL_TIM_Aliased_Defines HAL TIM Aliased Defines maintained for legacy purpose + * @{ + */ +#define CCER_CCxE_MASK TIM_CCER_CCxE_MASK +#define CCER_CCxNE_MASK TIM_CCER_CCxNE_MASK + +#define TIM_DMABase_CR1 TIM_DMABASE_CR1 +#define TIM_DMABase_CR2 TIM_DMABASE_CR2 +#define TIM_DMABase_SMCR TIM_DMABASE_SMCR +#define TIM_DMABase_DIER TIM_DMABASE_DIER +#define TIM_DMABase_SR TIM_DMABASE_SR +#define TIM_DMABase_EGR TIM_DMABASE_EGR +#define TIM_DMABase_CCMR1 TIM_DMABASE_CCMR1 +#define TIM_DMABase_CCMR2 TIM_DMABASE_CCMR2 +#define TIM_DMABase_CCER TIM_DMABASE_CCER +#define TIM_DMABase_CNT TIM_DMABASE_CNT +#define TIM_DMABase_PSC TIM_DMABASE_PSC +#define TIM_DMABase_ARR TIM_DMABASE_ARR +#define TIM_DMABase_RCR TIM_DMABASE_RCR +#define TIM_DMABase_CCR1 TIM_DMABASE_CCR1 +#define TIM_DMABase_CCR2 TIM_DMABASE_CCR2 +#define TIM_DMABase_CCR3 TIM_DMABASE_CCR3 +#define TIM_DMABase_CCR4 TIM_DMABASE_CCR4 +#define TIM_DMABase_BDTR TIM_DMABASE_BDTR +#define TIM_DMABase_DCR TIM_DMABASE_DCR +#define TIM_DMABase_DMAR TIM_DMABASE_DMAR +#define TIM_DMABase_OR1 TIM_DMABASE_OR1 +#define TIM_DMABase_CCMR3 TIM_DMABASE_CCMR3 +#define TIM_DMABase_CCR5 TIM_DMABASE_CCR5 +#define TIM_DMABase_CCR6 TIM_DMABASE_CCR6 +#define TIM_DMABase_OR2 TIM_DMABASE_OR2 +#define TIM_DMABase_OR3 TIM_DMABASE_OR3 +#define TIM_DMABase_OR TIM_DMABASE_OR + +#define TIM_EventSource_Update TIM_EVENTSOURCE_UPDATE +#define TIM_EventSource_CC1 TIM_EVENTSOURCE_CC1 +#define TIM_EventSource_CC2 TIM_EVENTSOURCE_CC2 +#define TIM_EventSource_CC3 TIM_EVENTSOURCE_CC3 +#define TIM_EventSource_CC4 TIM_EVENTSOURCE_CC4 +#define TIM_EventSource_COM TIM_EVENTSOURCE_COM +#define TIM_EventSource_Trigger TIM_EVENTSOURCE_TRIGGER +#define TIM_EventSource_Break TIM_EVENTSOURCE_BREAK +#define TIM_EventSource_Break2 TIM_EVENTSOURCE_BREAK2 + +#define TIM_DMABurstLength_1Transfer TIM_DMABURSTLENGTH_1TRANSFER +#define TIM_DMABurstLength_2Transfers TIM_DMABURSTLENGTH_2TRANSFERS +#define TIM_DMABurstLength_3Transfers TIM_DMABURSTLENGTH_3TRANSFERS +#define TIM_DMABurstLength_4Transfers TIM_DMABURSTLENGTH_4TRANSFERS +#define TIM_DMABurstLength_5Transfers TIM_DMABURSTLENGTH_5TRANSFERS +#define TIM_DMABurstLength_6Transfers TIM_DMABURSTLENGTH_6TRANSFERS +#define TIM_DMABurstLength_7Transfers TIM_DMABURSTLENGTH_7TRANSFERS +#define TIM_DMABurstLength_8Transfers TIM_DMABURSTLENGTH_8TRANSFERS +#define TIM_DMABurstLength_9Transfers TIM_DMABURSTLENGTH_9TRANSFERS +#define TIM_DMABurstLength_10Transfers TIM_DMABURSTLENGTH_10TRANSFERS +#define TIM_DMABurstLength_11Transfers TIM_DMABURSTLENGTH_11TRANSFERS +#define TIM_DMABurstLength_12Transfers TIM_DMABURSTLENGTH_12TRANSFERS +#define TIM_DMABurstLength_13Transfers TIM_DMABURSTLENGTH_13TRANSFERS +#define TIM_DMABurstLength_14Transfers TIM_DMABURSTLENGTH_14TRANSFERS +#define TIM_DMABurstLength_15Transfers TIM_DMABURSTLENGTH_15TRANSFERS +#define TIM_DMABurstLength_16Transfers TIM_DMABURSTLENGTH_16TRANSFERS +#define TIM_DMABurstLength_17Transfers TIM_DMABURSTLENGTH_17TRANSFERS +#define TIM_DMABurstLength_18Transfers TIM_DMABURSTLENGTH_18TRANSFERS + +#if defined(STM32L0) +#define TIM22_TI1_GPIO1 TIM22_TI1_GPIO +#define TIM22_TI1_GPIO2 TIM22_TI1_GPIO +#endif + +#if defined(STM32F3) +#define IS_TIM_HALL_INTERFACE_INSTANCE IS_TIM_HALL_SENSOR_INTERFACE_INSTANCE +#endif + +#if defined(STM32H7) +#define TIM_TIM1_ETR_COMP1_OUT TIM_TIM1_ETR_COMP1 +#define TIM_TIM1_ETR_COMP2_OUT TIM_TIM1_ETR_COMP2 +#define TIM_TIM8_ETR_COMP1_OUT TIM_TIM8_ETR_COMP1 +#define TIM_TIM8_ETR_COMP2_OUT TIM_TIM8_ETR_COMP2 +#define TIM_TIM2_ETR_COMP1_OUT TIM_TIM2_ETR_COMP1 +#define TIM_TIM2_ETR_COMP2_OUT TIM_TIM2_ETR_COMP2 +#define TIM_TIM3_ETR_COMP1_OUT TIM_TIM3_ETR_COMP1 +#define TIM_TIM1_TI1_COMP1_OUT TIM_TIM1_TI1_COMP1 +#define TIM_TIM8_TI1_COMP2_OUT TIM_TIM8_TI1_COMP2 +#define TIM_TIM2_TI4_COMP1_OUT TIM_TIM2_TI4_COMP1 +#define TIM_TIM2_TI4_COMP2_OUT TIM_TIM2_TI4_COMP2 +#define TIM_TIM2_TI4_COMP1COMP2_OUT TIM_TIM2_TI4_COMP1_COMP2 +#define TIM_TIM3_TI1_COMP1_OUT TIM_TIM3_TI1_COMP1 +#define TIM_TIM3_TI1_COMP2_OUT TIM_TIM3_TI1_COMP2 +#define TIM_TIM3_TI1_COMP1COMP2_OUT TIM_TIM3_TI1_COMP1_COMP2 +#endif + +#if defined(STM32U5) || defined(STM32MP2) +#define OCREF_CLEAR_SELECT_Pos OCREF_CLEAR_SELECT_POS +#define OCREF_CLEAR_SELECT_Msk OCREF_CLEAR_SELECT_MSK +#endif +/** + * @} + */ + +/** @defgroup HAL_TSC_Aliased_Defines HAL TSC Aliased Defines maintained for legacy purpose + * @{ + */ +#define TSC_SYNC_POL_FALL TSC_SYNC_POLARITY_FALLING +#define TSC_SYNC_POL_RISE_HIGH TSC_SYNC_POLARITY_RISING +/** + * @} + */ + +/** @defgroup HAL_UART_Aliased_Defines HAL UART Aliased Defines maintained for legacy purpose + * @{ + */ +#define UART_ONEBIT_SAMPLING_DISABLED UART_ONE_BIT_SAMPLE_DISABLE +#define UART_ONEBIT_SAMPLING_ENABLED UART_ONE_BIT_SAMPLE_ENABLE +#define UART_ONE_BIT_SAMPLE_DISABLED UART_ONE_BIT_SAMPLE_DISABLE +#define UART_ONE_BIT_SAMPLE_ENABLED UART_ONE_BIT_SAMPLE_ENABLE + +#define __HAL_UART_ONEBIT_ENABLE __HAL_UART_ONE_BIT_SAMPLE_ENABLE +#define __HAL_UART_ONEBIT_DISABLE __HAL_UART_ONE_BIT_SAMPLE_DISABLE + +#define __DIV_SAMPLING16 UART_DIV_SAMPLING16 +#define __DIVMANT_SAMPLING16 UART_DIVMANT_SAMPLING16 +#define __DIVFRAQ_SAMPLING16 UART_DIVFRAQ_SAMPLING16 +#define __UART_BRR_SAMPLING16 UART_BRR_SAMPLING16 + +#define __DIV_SAMPLING8 UART_DIV_SAMPLING8 +#define __DIVMANT_SAMPLING8 UART_DIVMANT_SAMPLING8 +#define __DIVFRAQ_SAMPLING8 UART_DIVFRAQ_SAMPLING8 +#define __UART_BRR_SAMPLING8 UART_BRR_SAMPLING8 + +#define __DIV_LPUART UART_DIV_LPUART + +#define UART_WAKEUPMETHODE_IDLELINE UART_WAKEUPMETHOD_IDLELINE +#define UART_WAKEUPMETHODE_ADDRESSMARK UART_WAKEUPMETHOD_ADDRESSMARK + +/** + * @} + */ + + +/** @defgroup HAL_USART_Aliased_Defines HAL USART Aliased Defines maintained for legacy purpose + * @{ + */ + +#define USART_CLOCK_DISABLED USART_CLOCK_DISABLE +#define USART_CLOCK_ENABLED USART_CLOCK_ENABLE + +#define USARTNACK_ENABLED USART_NACK_ENABLE +#define USARTNACK_DISABLED USART_NACK_DISABLE +/** + * @} + */ + +/** @defgroup HAL_WWDG_Aliased_Defines HAL WWDG Aliased Defines maintained for legacy purpose + * @{ + */ +#define CFR_BASE WWDG_CFR_BASE + +/** + * @} + */ + +/** @defgroup HAL_CAN_Aliased_Defines HAL CAN Aliased Defines maintained for legacy purpose + * @{ + */ +#define CAN_FilterFIFO0 CAN_FILTER_FIFO0 +#define CAN_FilterFIFO1 CAN_FILTER_FIFO1 +#define CAN_IT_RQCP0 CAN_IT_TME +#define CAN_IT_RQCP1 CAN_IT_TME +#define CAN_IT_RQCP2 CAN_IT_TME +#define INAK_TIMEOUT CAN_TIMEOUT_VALUE +#define SLAK_TIMEOUT CAN_TIMEOUT_VALUE +#define CAN_TXSTATUS_FAILED ((uint8_t)0x00U) +#define CAN_TXSTATUS_OK ((uint8_t)0x01U) +#define CAN_TXSTATUS_PENDING ((uint8_t)0x02U) + +/** + * @} + */ + +/** @defgroup HAL_ETH_Aliased_Defines HAL ETH Aliased Defines maintained for legacy purpose + * @{ + */ + +#define VLAN_TAG ETH_VLAN_TAG +#define MIN_ETH_PAYLOAD ETH_MIN_ETH_PAYLOAD +#define MAX_ETH_PAYLOAD ETH_MAX_ETH_PAYLOAD +#define JUMBO_FRAME_PAYLOAD ETH_JUMBO_FRAME_PAYLOAD +#define MACMIIAR_CR_MASK ETH_MACMIIAR_CR_MASK +#define MACCR_CLEAR_MASK ETH_MACCR_CLEAR_MASK +#define MACFCR_CLEAR_MASK ETH_MACFCR_CLEAR_MASK +#define DMAOMR_CLEAR_MASK ETH_DMAOMR_CLEAR_MASK + +#define ETH_MMCCR 0x00000100U +#define ETH_MMCRIR 0x00000104U +#define ETH_MMCTIR 0x00000108U +#define ETH_MMCRIMR 0x0000010CU +#define ETH_MMCTIMR 0x00000110U +#define ETH_MMCTGFSCCR 0x0000014CU +#define ETH_MMCTGFMSCCR 0x00000150U +#define ETH_MMCTGFCR 0x00000168U +#define ETH_MMCRFCECR 0x00000194U +#define ETH_MMCRFAECR 0x00000198U +#define ETH_MMCRGUFCR 0x000001C4U + +#define ETH_MAC_TXFIFO_FULL 0x02000000U /* Tx FIFO full */ +#define ETH_MAC_TXFIFONOT_EMPTY 0x01000000U /* Tx FIFO not empty */ +#define ETH_MAC_TXFIFO_WRITE_ACTIVE 0x00400000U /* Tx FIFO write active */ +#define ETH_MAC_TXFIFO_IDLE 0x00000000U /* Tx FIFO read status: Idle */ +#define ETH_MAC_TXFIFO_READ 0x00100000U /* Tx FIFO read status: Read (transferring data to the MAC transmitter) */ +#define ETH_MAC_TXFIFO_WAITING 0x00200000U /* Tx FIFO read status: Waiting for TxStatus from MAC transmitter */ +#define ETH_MAC_TXFIFO_WRITING 0x00300000U /* Tx FIFO read status: Writing the received TxStatus or flushing the TxFIFO */ +#define ETH_MAC_TRANSMISSION_PAUSE 0x00080000U /* MAC transmitter in pause */ +#define ETH_MAC_TRANSMITFRAMECONTROLLER_IDLE 0x00000000U /* MAC transmit frame controller: Idle */ +#define ETH_MAC_TRANSMITFRAMECONTROLLER_WAITING 0x00020000U /* MAC transmit frame controller: Waiting for Status of previous frame or IFG/backoff period to be over */ +#define ETH_MAC_TRANSMITFRAMECONTROLLER_GENRATING_PCF 0x00040000U /* MAC transmit frame controller: Generating and transmitting a Pause control frame (in full duplex mode) */ +#define ETH_MAC_TRANSMITFRAMECONTROLLER_TRANSFERRING 0x00060000U /* MAC transmit frame controller: Transferring input frame for transmission */ +#define ETH_MAC_MII_TRANSMIT_ACTIVE 0x00010000U /* MAC MII transmit engine active */ +#define ETH_MAC_RXFIFO_EMPTY 0x00000000U /* Rx FIFO fill level: empty */ +#define ETH_MAC_RXFIFO_BELOW_THRESHOLD 0x00000100U /* Rx FIFO fill level: fill-level below flow-control de-activate threshold */ +#define ETH_MAC_RXFIFO_ABOVE_THRESHOLD 0x00000200U /* Rx FIFO fill level: fill-level above flow-control activate threshold */ +#define ETH_MAC_RXFIFO_FULL 0x00000300U /* Rx FIFO fill level: full */ +#if defined(STM32F1) +#else +#define ETH_MAC_READCONTROLLER_IDLE 0x00000000U /* Rx FIFO read controller IDLE state */ +#define ETH_MAC_READCONTROLLER_READING_DATA 0x00000020U /* Rx FIFO read controller Reading frame data */ +#define ETH_MAC_READCONTROLLER_READING_STATUS 0x00000040U /* Rx FIFO read controller Reading frame status (or time-stamp) */ +#endif +#define ETH_MAC_READCONTROLLER_FLUSHING 0x00000060U /* Rx FIFO read controller Flushing the frame data and status */ +#define ETH_MAC_RXFIFO_WRITE_ACTIVE 0x00000010U /* Rx FIFO write controller active */ +#define ETH_MAC_SMALL_FIFO_NOTACTIVE 0x00000000U /* MAC small FIFO read / write controllers not active */ +#define ETH_MAC_SMALL_FIFO_READ_ACTIVE 0x00000002U /* MAC small FIFO read controller active */ +#define ETH_MAC_SMALL_FIFO_WRITE_ACTIVE 0x00000004U /* MAC small FIFO write controller active */ +#define ETH_MAC_SMALL_FIFO_RW_ACTIVE 0x00000006U /* MAC small FIFO read / write controllers active */ +#define ETH_MAC_MII_RECEIVE_PROTOCOL_ACTIVE 0x00000001U /* MAC MII receive protocol engine active */ + +/** + * @} + */ + +/** @defgroup HAL_DCMI_Aliased_Defines HAL DCMI Aliased Defines maintained for legacy purpose + * @{ + */ +#define HAL_DCMI_ERROR_OVF HAL_DCMI_ERROR_OVR +#define DCMI_IT_OVF DCMI_IT_OVR +#define DCMI_FLAG_OVFRI DCMI_FLAG_OVRRI +#define DCMI_FLAG_OVFMI DCMI_FLAG_OVRMI + +#define HAL_DCMI_ConfigCROP HAL_DCMI_ConfigCrop +#define HAL_DCMI_EnableCROP HAL_DCMI_EnableCrop +#define HAL_DCMI_DisableCROP HAL_DCMI_DisableCrop + +/** + * @} + */ + +#if defined(STM32L4) || defined(STM32F7) || defined(STM32F427xx) || defined(STM32F437xx) \ + || defined(STM32F429xx) || defined(STM32F439xx) || defined(STM32F469xx) || defined(STM32F479xx) \ + || defined(STM32H7) +/** @defgroup HAL_DMA2D_Aliased_Defines HAL DMA2D Aliased Defines maintained for legacy purpose + * @{ + */ +#define DMA2D_ARGB8888 DMA2D_OUTPUT_ARGB8888 +#define DMA2D_RGB888 DMA2D_OUTPUT_RGB888 +#define DMA2D_RGB565 DMA2D_OUTPUT_RGB565 +#define DMA2D_ARGB1555 DMA2D_OUTPUT_ARGB1555 +#define DMA2D_ARGB4444 DMA2D_OUTPUT_ARGB4444 + +#define CM_ARGB8888 DMA2D_INPUT_ARGB8888 +#define CM_RGB888 DMA2D_INPUT_RGB888 +#define CM_RGB565 DMA2D_INPUT_RGB565 +#define CM_ARGB1555 DMA2D_INPUT_ARGB1555 +#define CM_ARGB4444 DMA2D_INPUT_ARGB4444 +#define CM_L8 DMA2D_INPUT_L8 +#define CM_AL44 DMA2D_INPUT_AL44 +#define CM_AL88 DMA2D_INPUT_AL88 +#define CM_L4 DMA2D_INPUT_L4 +#define CM_A8 DMA2D_INPUT_A8 +#define CM_A4 DMA2D_INPUT_A4 +/** + * @} + */ +#endif /* STM32L4 || STM32F7 || STM32F4 || STM32H7 */ + +#if defined(STM32L4) || defined(STM32F7) || defined(STM32F427xx) || defined(STM32F437xx) \ + || defined(STM32F429xx) || defined(STM32F439xx) || defined(STM32F469xx) || defined(STM32F479xx) \ + || defined(STM32H7) || defined(STM32U5) +/** @defgroup DMA2D_Aliases DMA2D API Aliases + * @{ + */ +#define HAL_DMA2D_DisableCLUT HAL_DMA2D_CLUTLoading_Abort /*!< Aliased to HAL_DMA2D_CLUTLoading_Abort + for compatibility with legacy code */ +/** + * @} + */ + +#endif /* STM32L4 || STM32F7 || STM32F4 || STM32H7 || STM32U5 */ + +/** @defgroup HAL_PPP_Aliased_Defines HAL PPP Aliased Defines maintained for legacy purpose + * @{ + */ + +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ + +/** @defgroup HAL_CRYP_Aliased_Functions HAL CRYP Aliased Functions maintained for legacy purpose + * @{ + */ +#define HAL_CRYP_ComputationCpltCallback HAL_CRYPEx_ComputationCpltCallback +/** + * @} + */ + +/** @defgroup HAL_DCACHE_Aliased_Functions HAL DCACHE Aliased Functions maintained for legacy purpose + * @{ + */ + +#if defined(STM32U5) +#define HAL_DCACHE_CleanInvalidateByAddr HAL_DCACHE_CleanInvalidByAddr +#define HAL_DCACHE_CleanInvalidateByAddr_IT HAL_DCACHE_CleanInvalidByAddr_IT +#endif /* STM32U5 */ + +/** + * @} + */ + +#if !defined(STM32F2) +/** @defgroup HASH_alias HASH API alias + * @{ + */ +#define HAL_HASHEx_IRQHandler HAL_HASH_IRQHandler /*!< Redirection for compatibility with legacy code */ +/** + * + * @} + */ +#endif /* STM32F2 */ +/** @defgroup HAL_HASH_Aliased_Functions HAL HASH Aliased Functions maintained for legacy purpose + * @{ + */ +#define HAL_HASH_STATETypeDef HAL_HASH_StateTypeDef +#define HAL_HASHPhaseTypeDef HAL_HASH_PhaseTypeDef +#define HAL_HMAC_MD5_Finish HAL_HASH_MD5_Finish +#define HAL_HMAC_SHA1_Finish HAL_HASH_SHA1_Finish +#define HAL_HMAC_SHA224_Finish HAL_HASH_SHA224_Finish +#define HAL_HMAC_SHA256_Finish HAL_HASH_SHA256_Finish + +/*HASH Algorithm Selection*/ + +#define HASH_AlgoSelection_SHA1 HASH_ALGOSELECTION_SHA1 +#define HASH_AlgoSelection_SHA224 HASH_ALGOSELECTION_SHA224 +#define HASH_AlgoSelection_SHA256 HASH_ALGOSELECTION_SHA256 +#define HASH_AlgoSelection_MD5 HASH_ALGOSELECTION_MD5 + +#define HASH_AlgoMode_HASH HASH_ALGOMODE_HASH +#define HASH_AlgoMode_HMAC HASH_ALGOMODE_HMAC + +#define HASH_HMACKeyType_ShortKey HASH_HMAC_KEYTYPE_SHORTKEY +#define HASH_HMACKeyType_LongKey HASH_HMAC_KEYTYPE_LONGKEY + +#if defined(STM32L4) || defined(STM32L5) || defined(STM32F2) || defined(STM32F4) || defined(STM32F7) || defined(STM32H7) + +#define HAL_HASH_MD5_Accumulate HAL_HASH_MD5_Accmlt +#define HAL_HASH_MD5_Accumulate_End HAL_HASH_MD5_Accmlt_End +#define HAL_HASH_MD5_Accumulate_IT HAL_HASH_MD5_Accmlt_IT +#define HAL_HASH_MD5_Accumulate_End_IT HAL_HASH_MD5_Accmlt_End_IT + +#define HAL_HASH_SHA1_Accumulate HAL_HASH_SHA1_Accmlt +#define HAL_HASH_SHA1_Accumulate_End HAL_HASH_SHA1_Accmlt_End +#define HAL_HASH_SHA1_Accumulate_IT HAL_HASH_SHA1_Accmlt_IT +#define HAL_HASH_SHA1_Accumulate_End_IT HAL_HASH_SHA1_Accmlt_End_IT + +#define HAL_HASHEx_SHA224_Accumulate HAL_HASHEx_SHA224_Accmlt +#define HAL_HASHEx_SHA224_Accumulate_End HAL_HASHEx_SHA224_Accmlt_End +#define HAL_HASHEx_SHA224_Accumulate_IT HAL_HASHEx_SHA224_Accmlt_IT +#define HAL_HASHEx_SHA224_Accumulate_End_IT HAL_HASHEx_SHA224_Accmlt_End_IT + +#define HAL_HASHEx_SHA256_Accumulate HAL_HASHEx_SHA256_Accmlt +#define HAL_HASHEx_SHA256_Accumulate_End HAL_HASHEx_SHA256_Accmlt_End +#define HAL_HASHEx_SHA256_Accumulate_IT HAL_HASHEx_SHA256_Accmlt_IT +#define HAL_HASHEx_SHA256_Accumulate_End_IT HAL_HASHEx_SHA256_Accmlt_End_IT + +#endif /* STM32L4 || STM32L5 || STM32F2 || STM32F4 || STM32F7 || STM32H7 */ +/** + * @} + */ + +/** @defgroup HAL_Aliased_Functions HAL Generic Aliased Functions maintained for legacy purpose + * @{ + */ +#define HAL_EnableDBGSleepMode HAL_DBGMCU_EnableDBGSleepMode +#define HAL_DisableDBGSleepMode HAL_DBGMCU_DisableDBGSleepMode +#define HAL_EnableDBGStopMode HAL_DBGMCU_EnableDBGStopMode +#define HAL_DisableDBGStopMode HAL_DBGMCU_DisableDBGStopMode +#define HAL_EnableDBGStandbyMode HAL_DBGMCU_EnableDBGStandbyMode +#define HAL_DisableDBGStandbyMode HAL_DBGMCU_DisableDBGStandbyMode +#define HAL_DBG_LowPowerConfig(Periph, cmd) (((cmd\ + )==ENABLE)? HAL_DBGMCU_DBG_EnableLowPowerConfig(Periph) : HAL_DBGMCU_DBG_DisableLowPowerConfig(Periph)) +#define HAL_VREFINT_OutputSelect HAL_SYSCFG_VREFINT_OutputSelect +#define HAL_Lock_Cmd(cmd) (((cmd)==ENABLE) ? HAL_SYSCFG_Enable_Lock_VREFINT() : HAL_SYSCFG_Disable_Lock_VREFINT()) +#if defined(STM32L0) +#else +#define HAL_VREFINT_Cmd(cmd) (((cmd)==ENABLE)? HAL_SYSCFG_EnableVREFINT() : HAL_SYSCFG_DisableVREFINT()) +#endif +#define HAL_ADC_EnableBuffer_Cmd(cmd) (((cmd)==ENABLE) ? HAL_ADCEx_EnableVREFINT() : HAL_ADCEx_DisableVREFINT()) +#define HAL_ADC_EnableBufferSensor_Cmd(cmd) (((cmd\ + )==ENABLE) ? HAL_ADCEx_EnableVREFINTTempSensor() : HAL_ADCEx_DisableVREFINTTempSensor()) +#if defined(STM32H7A3xx) || defined(STM32H7B3xx) || defined(STM32H7B0xx) || defined(STM32H7A3xxQ) || defined(STM32H7B3xxQ) || defined(STM32H7B0xxQ) +#define HAL_EnableSRDomainDBGStopMode HAL_EnableDomain3DBGStopMode +#define HAL_DisableSRDomainDBGStopMode HAL_DisableDomain3DBGStopMode +#define HAL_EnableSRDomainDBGStandbyMode HAL_EnableDomain3DBGStandbyMode +#define HAL_DisableSRDomainDBGStandbyMode HAL_DisableDomain3DBGStandbyMode +#endif /* STM32H7A3xx || STM32H7B3xx || STM32H7B0xx || STM32H7A3xxQ || STM32H7B3xxQ || STM32H7B0xxQ */ + +/** + * @} + */ + +/** @defgroup HAL_FLASH_Aliased_Functions HAL FLASH Aliased Functions maintained for legacy purpose + * @{ + */ +#define FLASH_HalfPageProgram HAL_FLASHEx_HalfPageProgram +#define FLASH_EnableRunPowerDown HAL_FLASHEx_EnableRunPowerDown +#define FLASH_DisableRunPowerDown HAL_FLASHEx_DisableRunPowerDown +#define HAL_DATA_EEPROMEx_Unlock HAL_FLASHEx_DATAEEPROM_Unlock +#define HAL_DATA_EEPROMEx_Lock HAL_FLASHEx_DATAEEPROM_Lock +#define HAL_DATA_EEPROMEx_Erase HAL_FLASHEx_DATAEEPROM_Erase +#define HAL_DATA_EEPROMEx_Program HAL_FLASHEx_DATAEEPROM_Program + +/** + * @} + */ + +/** @defgroup HAL_I2C_Aliased_Functions HAL I2C Aliased Functions maintained for legacy purpose + * @{ + */ +#define HAL_I2CEx_AnalogFilter_Config HAL_I2CEx_ConfigAnalogFilter +#define HAL_I2CEx_DigitalFilter_Config HAL_I2CEx_ConfigDigitalFilter +#define HAL_FMPI2CEx_AnalogFilter_Config HAL_FMPI2CEx_ConfigAnalogFilter +#define HAL_FMPI2CEx_DigitalFilter_Config HAL_FMPI2CEx_ConfigDigitalFilter + +#define HAL_I2CFastModePlusConfig(SYSCFG_I2CFastModePlus, cmd) (((cmd\ + )==ENABLE)? HAL_I2CEx_EnableFastModePlus(SYSCFG_I2CFastModePlus): HAL_I2CEx_DisableFastModePlus(SYSCFG_I2CFastModePlus)) + +#if defined(STM32H7) || defined(STM32WB) || defined(STM32G0) || defined(STM32F0) || defined(STM32F1) || defined(STM32F2) || defined(STM32F3) || defined(STM32F4) || defined(STM32F7) || defined(STM32L0) || defined(STM32L4) || defined(STM32L5) || defined(STM32G4) || defined(STM32L1) +#define HAL_I2C_Master_Sequential_Transmit_IT HAL_I2C_Master_Seq_Transmit_IT +#define HAL_I2C_Master_Sequential_Receive_IT HAL_I2C_Master_Seq_Receive_IT +#define HAL_I2C_Slave_Sequential_Transmit_IT HAL_I2C_Slave_Seq_Transmit_IT +#define HAL_I2C_Slave_Sequential_Receive_IT HAL_I2C_Slave_Seq_Receive_IT +#endif /* STM32H7 || STM32WB || STM32G0 || STM32F0 || STM32F1 || STM32F2 || STM32F3 || STM32F4 || STM32F7 || STM32L0 || STM32L4 || STM32L5 || STM32G4 || STM32L1 */ +#if defined(STM32H7) || defined(STM32WB) || defined(STM32G0) || defined(STM32F4) || defined(STM32F7) || defined(STM32L0) || defined(STM32L4) || defined(STM32L5) || defined(STM32G4)|| defined(STM32L1) +#define HAL_I2C_Master_Sequential_Transmit_DMA HAL_I2C_Master_Seq_Transmit_DMA +#define HAL_I2C_Master_Sequential_Receive_DMA HAL_I2C_Master_Seq_Receive_DMA +#define HAL_I2C_Slave_Sequential_Transmit_DMA HAL_I2C_Slave_Seq_Transmit_DMA +#define HAL_I2C_Slave_Sequential_Receive_DMA HAL_I2C_Slave_Seq_Receive_DMA +#endif /* STM32H7 || STM32WB || STM32G0 || STM32F4 || STM32F7 || STM32L0 || STM32L4 || STM32L5 || STM32G4 || STM32L1 */ + +#if defined(STM32F4) +#define HAL_FMPI2C_Master_Sequential_Transmit_IT HAL_FMPI2C_Master_Seq_Transmit_IT +#define HAL_FMPI2C_Master_Sequential_Receive_IT HAL_FMPI2C_Master_Seq_Receive_IT +#define HAL_FMPI2C_Slave_Sequential_Transmit_IT HAL_FMPI2C_Slave_Seq_Transmit_IT +#define HAL_FMPI2C_Slave_Sequential_Receive_IT HAL_FMPI2C_Slave_Seq_Receive_IT +#define HAL_FMPI2C_Master_Sequential_Transmit_DMA HAL_FMPI2C_Master_Seq_Transmit_DMA +#define HAL_FMPI2C_Master_Sequential_Receive_DMA HAL_FMPI2C_Master_Seq_Receive_DMA +#define HAL_FMPI2C_Slave_Sequential_Transmit_DMA HAL_FMPI2C_Slave_Seq_Transmit_DMA +#define HAL_FMPI2C_Slave_Sequential_Receive_DMA HAL_FMPI2C_Slave_Seq_Receive_DMA +#endif /* STM32F4 */ +/** + * @} + */ + +/** @defgroup HAL_PWR_Aliased HAL PWR Aliased maintained for legacy purpose + * @{ + */ + +#if defined(STM32G0) +#define HAL_PWR_ConfigPVD HAL_PWREx_ConfigPVD +#define HAL_PWR_EnablePVD HAL_PWREx_EnablePVD +#define HAL_PWR_DisablePVD HAL_PWREx_DisablePVD +#define HAL_PWR_PVD_IRQHandler HAL_PWREx_PVD_IRQHandler +#endif +#define HAL_PWR_PVDConfig HAL_PWR_ConfigPVD +#define HAL_PWR_DisableBkUpReg HAL_PWREx_DisableBkUpReg +#define HAL_PWR_DisableFlashPowerDown HAL_PWREx_DisableFlashPowerDown +#define HAL_PWR_DisableVddio2Monitor HAL_PWREx_DisableVddio2Monitor +#define HAL_PWR_EnableBkUpReg HAL_PWREx_EnableBkUpReg +#define HAL_PWR_EnableFlashPowerDown HAL_PWREx_EnableFlashPowerDown +#define HAL_PWR_EnableVddio2Monitor HAL_PWREx_EnableVddio2Monitor +#define HAL_PWR_PVD_PVM_IRQHandler HAL_PWREx_PVD_PVM_IRQHandler +#define HAL_PWR_PVDLevelConfig HAL_PWR_ConfigPVD +#define HAL_PWR_Vddio2Monitor_IRQHandler HAL_PWREx_Vddio2Monitor_IRQHandler +#define HAL_PWR_Vddio2MonitorCallback HAL_PWREx_Vddio2MonitorCallback +#define HAL_PWREx_ActivateOverDrive HAL_PWREx_EnableOverDrive +#define HAL_PWREx_DeactivateOverDrive HAL_PWREx_DisableOverDrive +#define HAL_PWREx_DisableSDADCAnalog HAL_PWREx_DisableSDADC +#define HAL_PWREx_EnableSDADCAnalog HAL_PWREx_EnableSDADC +#define HAL_PWREx_PVMConfig HAL_PWREx_ConfigPVM + +#define PWR_MODE_NORMAL PWR_PVD_MODE_NORMAL +#define PWR_MODE_IT_RISING PWR_PVD_MODE_IT_RISING +#define PWR_MODE_IT_FALLING PWR_PVD_MODE_IT_FALLING +#define PWR_MODE_IT_RISING_FALLING PWR_PVD_MODE_IT_RISING_FALLING +#define PWR_MODE_EVENT_RISING PWR_PVD_MODE_EVENT_RISING +#define PWR_MODE_EVENT_FALLING PWR_PVD_MODE_EVENT_FALLING +#define PWR_MODE_EVENT_RISING_FALLING PWR_PVD_MODE_EVENT_RISING_FALLING + +#define CR_OFFSET_BB PWR_CR_OFFSET_BB +#define CSR_OFFSET_BB PWR_CSR_OFFSET_BB +#define PMODE_BIT_NUMBER VOS_BIT_NUMBER +#define CR_PMODE_BB CR_VOS_BB + +#define DBP_BitNumber DBP_BIT_NUMBER +#define PVDE_BitNumber PVDE_BIT_NUMBER +#define PMODE_BitNumber PMODE_BIT_NUMBER +#define EWUP_BitNumber EWUP_BIT_NUMBER +#define FPDS_BitNumber FPDS_BIT_NUMBER +#define ODEN_BitNumber ODEN_BIT_NUMBER +#define ODSWEN_BitNumber ODSWEN_BIT_NUMBER +#define MRLVDS_BitNumber MRLVDS_BIT_NUMBER +#define LPLVDS_BitNumber LPLVDS_BIT_NUMBER +#define BRE_BitNumber BRE_BIT_NUMBER + +#define PWR_MODE_EVT PWR_PVD_MODE_NORMAL + +#if defined (STM32U5) +#define PWR_SRAM1_PAGE1_STOP_RETENTION PWR_SRAM1_PAGE1_STOP +#define PWR_SRAM1_PAGE2_STOP_RETENTION PWR_SRAM1_PAGE2_STOP +#define PWR_SRAM1_PAGE3_STOP_RETENTION PWR_SRAM1_PAGE3_STOP +#define PWR_SRAM1_PAGE4_STOP_RETENTION PWR_SRAM1_PAGE4_STOP +#define PWR_SRAM1_PAGE5_STOP_RETENTION PWR_SRAM1_PAGE5_STOP +#define PWR_SRAM1_PAGE6_STOP_RETENTION PWR_SRAM1_PAGE6_STOP +#define PWR_SRAM1_PAGE7_STOP_RETENTION PWR_SRAM1_PAGE7_STOP +#define PWR_SRAM1_PAGE8_STOP_RETENTION PWR_SRAM1_PAGE8_STOP +#define PWR_SRAM1_PAGE9_STOP_RETENTION PWR_SRAM1_PAGE9_STOP +#define PWR_SRAM1_PAGE10_STOP_RETENTION PWR_SRAM1_PAGE10_STOP +#define PWR_SRAM1_PAGE11_STOP_RETENTION PWR_SRAM1_PAGE11_STOP +#define PWR_SRAM1_PAGE12_STOP_RETENTION PWR_SRAM1_PAGE12_STOP +#define PWR_SRAM1_FULL_STOP_RETENTION PWR_SRAM1_FULL_STOP + +#define PWR_SRAM2_PAGE1_STOP_RETENTION PWR_SRAM2_PAGE1_STOP +#define PWR_SRAM2_PAGE2_STOP_RETENTION PWR_SRAM2_PAGE2_STOP +#define PWR_SRAM2_FULL_STOP_RETENTION PWR_SRAM2_FULL_STOP + +#define PWR_SRAM3_PAGE1_STOP_RETENTION PWR_SRAM3_PAGE1_STOP +#define PWR_SRAM3_PAGE2_STOP_RETENTION PWR_SRAM3_PAGE2_STOP +#define PWR_SRAM3_PAGE3_STOP_RETENTION PWR_SRAM3_PAGE3_STOP +#define PWR_SRAM3_PAGE4_STOP_RETENTION PWR_SRAM3_PAGE4_STOP +#define PWR_SRAM3_PAGE5_STOP_RETENTION PWR_SRAM3_PAGE5_STOP +#define PWR_SRAM3_PAGE6_STOP_RETENTION PWR_SRAM3_PAGE6_STOP +#define PWR_SRAM3_PAGE7_STOP_RETENTION PWR_SRAM3_PAGE7_STOP +#define PWR_SRAM3_PAGE8_STOP_RETENTION PWR_SRAM3_PAGE8_STOP +#define PWR_SRAM3_PAGE9_STOP_RETENTION PWR_SRAM3_PAGE9_STOP +#define PWR_SRAM3_PAGE10_STOP_RETENTION PWR_SRAM3_PAGE10_STOP +#define PWR_SRAM3_PAGE11_STOP_RETENTION PWR_SRAM3_PAGE11_STOP +#define PWR_SRAM3_PAGE12_STOP_RETENTION PWR_SRAM3_PAGE12_STOP +#define PWR_SRAM3_PAGE13_STOP_RETENTION PWR_SRAM3_PAGE13_STOP +#define PWR_SRAM3_FULL_STOP_RETENTION PWR_SRAM3_FULL_STOP + +#define PWR_SRAM4_FULL_STOP_RETENTION PWR_SRAM4_FULL_STOP + +#define PWR_SRAM5_PAGE1_STOP_RETENTION PWR_SRAM5_PAGE1_STOP +#define PWR_SRAM5_PAGE2_STOP_RETENTION PWR_SRAM5_PAGE2_STOP +#define PWR_SRAM5_PAGE3_STOP_RETENTION PWR_SRAM5_PAGE3_STOP +#define PWR_SRAM5_PAGE4_STOP_RETENTION PWR_SRAM5_PAGE4_STOP +#define PWR_SRAM5_PAGE5_STOP_RETENTION PWR_SRAM5_PAGE5_STOP +#define PWR_SRAM5_PAGE6_STOP_RETENTION PWR_SRAM5_PAGE6_STOP +#define PWR_SRAM5_PAGE7_STOP_RETENTION PWR_SRAM5_PAGE7_STOP +#define PWR_SRAM5_PAGE8_STOP_RETENTION PWR_SRAM5_PAGE8_STOP +#define PWR_SRAM5_PAGE9_STOP_RETENTION PWR_SRAM5_PAGE9_STOP +#define PWR_SRAM5_PAGE10_STOP_RETENTION PWR_SRAM5_PAGE10_STOP +#define PWR_SRAM5_PAGE11_STOP_RETENTION PWR_SRAM5_PAGE11_STOP +#define PWR_SRAM5_PAGE12_STOP_RETENTION PWR_SRAM5_PAGE12_STOP +#define PWR_SRAM5_PAGE13_STOP_RETENTION PWR_SRAM5_PAGE13_STOP +#define PWR_SRAM5_FULL_STOP_RETENTION PWR_SRAM5_FULL_STOP + +#define PWR_ICACHE_FULL_STOP_RETENTION PWR_ICACHE_FULL_STOP +#define PWR_DCACHE1_FULL_STOP_RETENTION PWR_DCACHE1_FULL_STOP +#define PWR_DCACHE2_FULL_STOP_RETENTION PWR_DCACHE2_FULL_STOP +#define PWR_DMA2DRAM_FULL_STOP_RETENTION PWR_DMA2DRAM_FULL_STOP +#define PWR_PERIPHRAM_FULL_STOP_RETENTION PWR_PERIPHRAM_FULL_STOP +#define PWR_PKA32RAM_FULL_STOP_RETENTION PWR_PKA32RAM_FULL_STOP +#define PWR_GRAPHICPRAM_FULL_STOP_RETENTION PWR_GRAPHICPRAM_FULL_STOP +#define PWR_DSIRAM_FULL_STOP_RETENTION PWR_DSIRAM_FULL_STOP + +#define PWR_SRAM2_PAGE1_STANDBY_RETENTION PWR_SRAM2_PAGE1_STANDBY +#define PWR_SRAM2_PAGE2_STANDBY_RETENTION PWR_SRAM2_PAGE2_STANDBY +#define PWR_SRAM2_FULL_STANDBY_RETENTION PWR_SRAM2_FULL_STANDBY + +#define PWR_SRAM1_FULL_RUN_RETENTION PWR_SRAM1_FULL_RUN +#define PWR_SRAM2_FULL_RUN_RETENTION PWR_SRAM2_FULL_RUN +#define PWR_SRAM3_FULL_RUN_RETENTION PWR_SRAM3_FULL_RUN +#define PWR_SRAM4_FULL_RUN_RETENTION PWR_SRAM4_FULL_RUN +#define PWR_SRAM5_FULL_RUN_RETENTION PWR_SRAM5_FULL_RUN + +#define PWR_ALL_RAM_RUN_RETENTION_MASK PWR_ALL_RAM_RUN_MASK +#endif + +/** + * @} + */ + +/** @defgroup HAL_SMBUS_Aliased_Functions HAL SMBUS Aliased Functions maintained for legacy purpose + * @{ + */ +#define HAL_SMBUS_Slave_Listen_IT HAL_SMBUS_EnableListen_IT +#define HAL_SMBUS_SlaveAddrCallback HAL_SMBUS_AddrCallback +#define HAL_SMBUS_SlaveListenCpltCallback HAL_SMBUS_ListenCpltCallback +/** + * @} + */ + +/** @defgroup HAL_SPI_Aliased_Functions HAL SPI Aliased Functions maintained for legacy purpose + * @{ + */ +#define HAL_SPI_FlushRxFifo HAL_SPIEx_FlushRxFifo +/** + * @} + */ + +/** @defgroup HAL_TIM_Aliased_Functions HAL TIM Aliased Functions maintained for legacy purpose + * @{ + */ +#define HAL_TIM_DMADelayPulseCplt TIM_DMADelayPulseCplt +#define HAL_TIM_DMAError TIM_DMAError +#define HAL_TIM_DMACaptureCplt TIM_DMACaptureCplt +#define HAL_TIMEx_DMACommutationCplt TIMEx_DMACommutationCplt +#if defined(STM32H7) || defined(STM32G0) || defined(STM32F0) || defined(STM32F1) || defined(STM32F2) || defined(STM32F3) || defined(STM32F4) || defined(STM32F7) || defined(STM32L0) || defined(STM32L4) +#define HAL_TIM_SlaveConfigSynchronization HAL_TIM_SlaveConfigSynchro +#define HAL_TIM_SlaveConfigSynchronization_IT HAL_TIM_SlaveConfigSynchro_IT +#define HAL_TIMEx_CommutationCallback HAL_TIMEx_CommutCallback +#define HAL_TIMEx_ConfigCommutationEvent HAL_TIMEx_ConfigCommutEvent +#define HAL_TIMEx_ConfigCommutationEvent_IT HAL_TIMEx_ConfigCommutEvent_IT +#define HAL_TIMEx_ConfigCommutationEvent_DMA HAL_TIMEx_ConfigCommutEvent_DMA +#endif /* STM32H7 || STM32G0 || STM32F0 || STM32F1 || STM32F2 || STM32F3 || STM32F4 || STM32F7 || STM32L0 */ +/** + * @} + */ + +/** @defgroup HAL_UART_Aliased_Functions HAL UART Aliased Functions maintained for legacy purpose + * @{ + */ +#define HAL_UART_WakeupCallback HAL_UARTEx_WakeupCallback +/** + * @} + */ + +/** @defgroup HAL_LTDC_Aliased_Functions HAL LTDC Aliased Functions maintained for legacy purpose + * @{ + */ +#define HAL_LTDC_LineEvenCallback HAL_LTDC_LineEventCallback +#define HAL_LTDC_Relaod HAL_LTDC_Reload +#define HAL_LTDC_StructInitFromVideoConfig HAL_LTDCEx_StructInitFromVideoConfig +#define HAL_LTDC_StructInitFromAdaptedCommandConfig HAL_LTDCEx_StructInitFromAdaptedCommandConfig +/** + * @} + */ + + +/** @defgroup HAL_PPP_Aliased_Functions HAL PPP Aliased Functions maintained for legacy purpose + * @{ + */ + +/** + * @} + */ + +/* Exported macros ------------------------------------------------------------*/ + +/** @defgroup HAL_AES_Aliased_Macros HAL CRYP Aliased Macros maintained for legacy purpose + * @{ + */ +#define AES_IT_CC CRYP_IT_CC +#define AES_IT_ERR CRYP_IT_ERR +#define AES_FLAG_CCF CRYP_FLAG_CCF +/** + * @} + */ + +/** @defgroup HAL_Aliased_Macros HAL Generic Aliased Macros maintained for legacy purpose + * @{ + */ +#define __HAL_GET_BOOT_MODE __HAL_SYSCFG_GET_BOOT_MODE +#define __HAL_REMAPMEMORY_FLASH __HAL_SYSCFG_REMAPMEMORY_FLASH +#define __HAL_REMAPMEMORY_SYSTEMFLASH __HAL_SYSCFG_REMAPMEMORY_SYSTEMFLASH +#define __HAL_REMAPMEMORY_SRAM __HAL_SYSCFG_REMAPMEMORY_SRAM +#define __HAL_REMAPMEMORY_FMC __HAL_SYSCFG_REMAPMEMORY_FMC +#define __HAL_REMAPMEMORY_FMC_SDRAM __HAL_SYSCFG_REMAPMEMORY_FMC_SDRAM +#define __HAL_REMAPMEMORY_FSMC __HAL_SYSCFG_REMAPMEMORY_FSMC +#define __HAL_REMAPMEMORY_QUADSPI __HAL_SYSCFG_REMAPMEMORY_QUADSPI +#define __HAL_FMC_BANK __HAL_SYSCFG_FMC_BANK +#define __HAL_GET_FLAG __HAL_SYSCFG_GET_FLAG +#define __HAL_CLEAR_FLAG __HAL_SYSCFG_CLEAR_FLAG +#define __HAL_VREFINT_OUT_ENABLE __HAL_SYSCFG_VREFINT_OUT_ENABLE +#define __HAL_VREFINT_OUT_DISABLE __HAL_SYSCFG_VREFINT_OUT_DISABLE +#define __HAL_SYSCFG_SRAM2_WRP_ENABLE __HAL_SYSCFG_SRAM2_WRP_0_31_ENABLE + +#define SYSCFG_FLAG_VREF_READY SYSCFG_FLAG_VREFINT_READY +#define SYSCFG_FLAG_RC48 RCC_FLAG_HSI48 +#define IS_SYSCFG_FASTMODEPLUS_CONFIG IS_I2C_FASTMODEPLUS +#define UFB_MODE_BitNumber UFB_MODE_BIT_NUMBER +#define CMP_PD_BitNumber CMP_PD_BIT_NUMBER + +/** + * @} + */ + + +/** @defgroup HAL_ADC_Aliased_Macros HAL ADC Aliased Macros maintained for legacy purpose + * @{ + */ +#define __ADC_ENABLE __HAL_ADC_ENABLE +#define __ADC_DISABLE __HAL_ADC_DISABLE +#define __HAL_ADC_ENABLING_CONDITIONS ADC_ENABLING_CONDITIONS +#define __HAL_ADC_DISABLING_CONDITIONS ADC_DISABLING_CONDITIONS +#define __HAL_ADC_IS_ENABLED ADC_IS_ENABLE +#define __ADC_IS_ENABLED ADC_IS_ENABLE +#define __HAL_ADC_IS_SOFTWARE_START_REGULAR ADC_IS_SOFTWARE_START_REGULAR +#define __HAL_ADC_IS_SOFTWARE_START_INJECTED ADC_IS_SOFTWARE_START_INJECTED +#define __HAL_ADC_IS_CONVERSION_ONGOING_REGULAR_INJECTED ADC_IS_CONVERSION_ONGOING_REGULAR_INJECTED +#define __HAL_ADC_IS_CONVERSION_ONGOING_REGULAR ADC_IS_CONVERSION_ONGOING_REGULAR +#define __HAL_ADC_IS_CONVERSION_ONGOING_INJECTED ADC_IS_CONVERSION_ONGOING_INJECTED +#define __HAL_ADC_IS_CONVERSION_ONGOING ADC_IS_CONVERSION_ONGOING +#define __HAL_ADC_CLEAR_ERRORCODE ADC_CLEAR_ERRORCODE + +#define __HAL_ADC_GET_RESOLUTION ADC_GET_RESOLUTION +#define __HAL_ADC_JSQR_RK ADC_JSQR_RK +#define __HAL_ADC_CFGR_AWD1CH ADC_CFGR_AWD1CH_SHIFT +#define __HAL_ADC_CFGR_AWD23CR ADC_CFGR_AWD23CR +#define __HAL_ADC_CFGR_INJECT_AUTO_CONVERSION ADC_CFGR_INJECT_AUTO_CONVERSION +#define __HAL_ADC_CFGR_INJECT_CONTEXT_QUEUE ADC_CFGR_INJECT_CONTEXT_QUEUE +#define __HAL_ADC_CFGR_INJECT_DISCCONTINUOUS ADC_CFGR_INJECT_DISCCONTINUOUS +#define __HAL_ADC_CFGR_REG_DISCCONTINUOUS ADC_CFGR_REG_DISCCONTINUOUS +#define __HAL_ADC_CFGR_DISCONTINUOUS_NUM ADC_CFGR_DISCONTINUOUS_NUM +#define __HAL_ADC_CFGR_AUTOWAIT ADC_CFGR_AUTOWAIT +#define __HAL_ADC_CFGR_CONTINUOUS ADC_CFGR_CONTINUOUS +#define __HAL_ADC_CFGR_OVERRUN ADC_CFGR_OVERRUN +#define __HAL_ADC_CFGR_DMACONTREQ ADC_CFGR_DMACONTREQ +#define __HAL_ADC_CFGR_EXTSEL ADC_CFGR_EXTSEL_SET +#define __HAL_ADC_JSQR_JEXTSEL ADC_JSQR_JEXTSEL_SET +#define __HAL_ADC_OFR_CHANNEL ADC_OFR_CHANNEL +#define __HAL_ADC_DIFSEL_CHANNEL ADC_DIFSEL_CHANNEL +#define __HAL_ADC_CALFACT_DIFF_SET ADC_CALFACT_DIFF_SET +#define __HAL_ADC_CALFACT_DIFF_GET ADC_CALFACT_DIFF_GET +#define __HAL_ADC_TRX_HIGHTHRESHOLD ADC_TRX_HIGHTHRESHOLD + +#define __HAL_ADC_OFFSET_SHIFT_RESOLUTION ADC_OFFSET_SHIFT_RESOLUTION +#define __HAL_ADC_AWD1THRESHOLD_SHIFT_RESOLUTION ADC_AWD1THRESHOLD_SHIFT_RESOLUTION +#define __HAL_ADC_AWD23THRESHOLD_SHIFT_RESOLUTION ADC_AWD23THRESHOLD_SHIFT_RESOLUTION +#define __HAL_ADC_COMMON_REGISTER ADC_COMMON_REGISTER +#define __HAL_ADC_COMMON_CCR_MULTI ADC_COMMON_CCR_MULTI +#define __HAL_ADC_MULTIMODE_IS_ENABLED ADC_MULTIMODE_IS_ENABLE +#define __ADC_MULTIMODE_IS_ENABLED ADC_MULTIMODE_IS_ENABLE +#define __HAL_ADC_NONMULTIMODE_OR_MULTIMODEMASTER ADC_NONMULTIMODE_OR_MULTIMODEMASTER +#define __HAL_ADC_COMMON_ADC_OTHER ADC_COMMON_ADC_OTHER +#define __HAL_ADC_MULTI_SLAVE ADC_MULTI_SLAVE + +#define __HAL_ADC_SQR1_L ADC_SQR1_L_SHIFT +#define __HAL_ADC_JSQR_JL ADC_JSQR_JL_SHIFT +#define __HAL_ADC_JSQR_RK_JL ADC_JSQR_RK_JL +#define __HAL_ADC_CR1_DISCONTINUOUS_NUM ADC_CR1_DISCONTINUOUS_NUM +#define __HAL_ADC_CR1_SCAN ADC_CR1_SCAN_SET +#define __HAL_ADC_CONVCYCLES_MAX_RANGE ADC_CONVCYCLES_MAX_RANGE +#define __HAL_ADC_CLOCK_PRESCALER_RANGE ADC_CLOCK_PRESCALER_RANGE +#define __HAL_ADC_GET_CLOCK_PRESCALER ADC_GET_CLOCK_PRESCALER + +#define __HAL_ADC_SQR1 ADC_SQR1 +#define __HAL_ADC_SMPR1 ADC_SMPR1 +#define __HAL_ADC_SMPR2 ADC_SMPR2 +#define __HAL_ADC_SQR3_RK ADC_SQR3_RK +#define __HAL_ADC_SQR2_RK ADC_SQR2_RK +#define __HAL_ADC_SQR1_RK ADC_SQR1_RK +#define __HAL_ADC_CR2_CONTINUOUS ADC_CR2_CONTINUOUS +#define __HAL_ADC_CR1_DISCONTINUOUS ADC_CR1_DISCONTINUOUS +#define __HAL_ADC_CR1_SCANCONV ADC_CR1_SCANCONV +#define __HAL_ADC_CR2_EOCSelection ADC_CR2_EOCSelection +#define __HAL_ADC_CR2_DMAContReq ADC_CR2_DMAContReq +#define __HAL_ADC_JSQR ADC_JSQR + +#define __HAL_ADC_CHSELR_CHANNEL ADC_CHSELR_CHANNEL +#define __HAL_ADC_CFGR1_REG_DISCCONTINUOUS ADC_CFGR1_REG_DISCCONTINUOUS +#define __HAL_ADC_CFGR1_AUTOOFF ADC_CFGR1_AUTOOFF +#define __HAL_ADC_CFGR1_AUTOWAIT ADC_CFGR1_AUTOWAIT +#define __HAL_ADC_CFGR1_CONTINUOUS ADC_CFGR1_CONTINUOUS +#define __HAL_ADC_CFGR1_OVERRUN ADC_CFGR1_OVERRUN +#define __HAL_ADC_CFGR1_SCANDIR ADC_CFGR1_SCANDIR +#define __HAL_ADC_CFGR1_DMACONTREQ ADC_CFGR1_DMACONTREQ + +/** + * @} + */ + +/** @defgroup HAL_DAC_Aliased_Macros HAL DAC Aliased Macros maintained for legacy purpose + * @{ + */ +#define __HAL_DHR12R1_ALIGNEMENT DAC_DHR12R1_ALIGNMENT +#define __HAL_DHR12R2_ALIGNEMENT DAC_DHR12R2_ALIGNMENT +#define __HAL_DHR12RD_ALIGNEMENT DAC_DHR12RD_ALIGNMENT +#define IS_DAC_GENERATE_WAVE IS_DAC_WAVE + +/** + * @} + */ + +/** @defgroup HAL_DBGMCU_Aliased_Macros HAL DBGMCU Aliased Macros maintained for legacy purpose + * @{ + */ +#define __HAL_FREEZE_TIM1_DBGMCU __HAL_DBGMCU_FREEZE_TIM1 +#define __HAL_UNFREEZE_TIM1_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM1 +#define __HAL_FREEZE_TIM2_DBGMCU __HAL_DBGMCU_FREEZE_TIM2 +#define __HAL_UNFREEZE_TIM2_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM2 +#define __HAL_FREEZE_TIM3_DBGMCU __HAL_DBGMCU_FREEZE_TIM3 +#define __HAL_UNFREEZE_TIM3_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM3 +#define __HAL_FREEZE_TIM4_DBGMCU __HAL_DBGMCU_FREEZE_TIM4 +#define __HAL_UNFREEZE_TIM4_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM4 +#define __HAL_FREEZE_TIM5_DBGMCU __HAL_DBGMCU_FREEZE_TIM5 +#define __HAL_UNFREEZE_TIM5_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM5 +#define __HAL_FREEZE_TIM6_DBGMCU __HAL_DBGMCU_FREEZE_TIM6 +#define __HAL_UNFREEZE_TIM6_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM6 +#define __HAL_FREEZE_TIM7_DBGMCU __HAL_DBGMCU_FREEZE_TIM7 +#define __HAL_UNFREEZE_TIM7_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM7 +#define __HAL_FREEZE_TIM8_DBGMCU __HAL_DBGMCU_FREEZE_TIM8 +#define __HAL_UNFREEZE_TIM8_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM8 + +#define __HAL_FREEZE_TIM9_DBGMCU __HAL_DBGMCU_FREEZE_TIM9 +#define __HAL_UNFREEZE_TIM9_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM9 +#define __HAL_FREEZE_TIM10_DBGMCU __HAL_DBGMCU_FREEZE_TIM10 +#define __HAL_UNFREEZE_TIM10_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM10 +#define __HAL_FREEZE_TIM11_DBGMCU __HAL_DBGMCU_FREEZE_TIM11 +#define __HAL_UNFREEZE_TIM11_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM11 +#define __HAL_FREEZE_TIM12_DBGMCU __HAL_DBGMCU_FREEZE_TIM12 +#define __HAL_UNFREEZE_TIM12_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM12 +#define __HAL_FREEZE_TIM13_DBGMCU __HAL_DBGMCU_FREEZE_TIM13 +#define __HAL_UNFREEZE_TIM13_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM13 +#define __HAL_FREEZE_TIM14_DBGMCU __HAL_DBGMCU_FREEZE_TIM14 +#define __HAL_UNFREEZE_TIM14_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM14 +#define __HAL_FREEZE_CAN2_DBGMCU __HAL_DBGMCU_FREEZE_CAN2 +#define __HAL_UNFREEZE_CAN2_DBGMCU __HAL_DBGMCU_UNFREEZE_CAN2 + + +#define __HAL_FREEZE_TIM15_DBGMCU __HAL_DBGMCU_FREEZE_TIM15 +#define __HAL_UNFREEZE_TIM15_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM15 +#define __HAL_FREEZE_TIM16_DBGMCU __HAL_DBGMCU_FREEZE_TIM16 +#define __HAL_UNFREEZE_TIM16_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM16 +#define __HAL_FREEZE_TIM17_DBGMCU __HAL_DBGMCU_FREEZE_TIM17 +#define __HAL_UNFREEZE_TIM17_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM17 +#define __HAL_FREEZE_RTC_DBGMCU __HAL_DBGMCU_FREEZE_RTC +#define __HAL_UNFREEZE_RTC_DBGMCU __HAL_DBGMCU_UNFREEZE_RTC +#if defined(STM32H7) +#define __HAL_FREEZE_WWDG_DBGMCU __HAL_DBGMCU_FREEZE_WWDG1 +#define __HAL_UNFREEZE_WWDG_DBGMCU __HAL_DBGMCU_UnFreeze_WWDG1 +#define __HAL_FREEZE_IWDG_DBGMCU __HAL_DBGMCU_FREEZE_IWDG1 +#define __HAL_UNFREEZE_IWDG_DBGMCU __HAL_DBGMCU_UnFreeze_IWDG1 +#else +#define __HAL_FREEZE_WWDG_DBGMCU __HAL_DBGMCU_FREEZE_WWDG +#define __HAL_UNFREEZE_WWDG_DBGMCU __HAL_DBGMCU_UNFREEZE_WWDG +#define __HAL_FREEZE_IWDG_DBGMCU __HAL_DBGMCU_FREEZE_IWDG +#define __HAL_UNFREEZE_IWDG_DBGMCU __HAL_DBGMCU_UNFREEZE_IWDG +#endif /* STM32H7 */ +#define __HAL_FREEZE_I2C1_TIMEOUT_DBGMCU __HAL_DBGMCU_FREEZE_I2C1_TIMEOUT +#define __HAL_UNFREEZE_I2C1_TIMEOUT_DBGMCU __HAL_DBGMCU_UNFREEZE_I2C1_TIMEOUT +#define __HAL_FREEZE_I2C2_TIMEOUT_DBGMCU __HAL_DBGMCU_FREEZE_I2C2_TIMEOUT +#define __HAL_UNFREEZE_I2C2_TIMEOUT_DBGMCU __HAL_DBGMCU_UNFREEZE_I2C2_TIMEOUT +#define __HAL_FREEZE_I2C3_TIMEOUT_DBGMCU __HAL_DBGMCU_FREEZE_I2C3_TIMEOUT +#define __HAL_UNFREEZE_I2C3_TIMEOUT_DBGMCU __HAL_DBGMCU_UNFREEZE_I2C3_TIMEOUT +#define __HAL_FREEZE_CAN1_DBGMCU __HAL_DBGMCU_FREEZE_CAN1 +#define __HAL_UNFREEZE_CAN1_DBGMCU __HAL_DBGMCU_UNFREEZE_CAN1 +#define __HAL_FREEZE_LPTIM1_DBGMCU __HAL_DBGMCU_FREEZE_LPTIM1 +#define __HAL_UNFREEZE_LPTIM1_DBGMCU __HAL_DBGMCU_UNFREEZE_LPTIM1 +#define __HAL_FREEZE_LPTIM2_DBGMCU __HAL_DBGMCU_FREEZE_LPTIM2 +#define __HAL_UNFREEZE_LPTIM2_DBGMCU __HAL_DBGMCU_UNFREEZE_LPTIM2 + +/** + * @} + */ + +/** @defgroup HAL_COMP_Aliased_Macros HAL COMP Aliased Macros maintained for legacy purpose + * @{ + */ +#if defined(STM32F3) +#define COMP_START __HAL_COMP_ENABLE +#define COMP_STOP __HAL_COMP_DISABLE +#define COMP_LOCK __HAL_COMP_LOCK + +#if defined(STM32F301x8) || defined(STM32F302x8) || defined(STM32F318xx) || defined(STM32F303x8) || defined(STM32F334x8) || defined(STM32F328xx) +#define __HAL_COMP_EXTI_RISING_IT_ENABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_ENABLE_RISING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_ENABLE_RISING_EDGE() : \ + __HAL_COMP_COMP6_EXTI_ENABLE_RISING_EDGE()) +#define __HAL_COMP_EXTI_RISING_IT_DISABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_DISABLE_RISING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_DISABLE_RISING_EDGE() : \ + __HAL_COMP_COMP6_EXTI_DISABLE_RISING_EDGE()) +#define __HAL_COMP_EXTI_FALLING_IT_ENABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_ENABLE_FALLING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_ENABLE_FALLING_EDGE() : \ + __HAL_COMP_COMP6_EXTI_ENABLE_FALLING_EDGE()) +#define __HAL_COMP_EXTI_FALLING_IT_DISABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_DISABLE_FALLING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_DISABLE_FALLING_EDGE() : \ + __HAL_COMP_COMP6_EXTI_DISABLE_FALLING_EDGE()) +#define __HAL_COMP_EXTI_ENABLE_IT(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_ENABLE_IT() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_ENABLE_IT() : \ + __HAL_COMP_COMP6_EXTI_ENABLE_IT()) +#define __HAL_COMP_EXTI_DISABLE_IT(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_DISABLE_IT() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_DISABLE_IT() : \ + __HAL_COMP_COMP6_EXTI_DISABLE_IT()) +#define __HAL_COMP_EXTI_GET_FLAG(__FLAG__) (((__FLAG__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_GET_FLAG() : \ + ((__FLAG__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_GET_FLAG() : \ + __HAL_COMP_COMP6_EXTI_GET_FLAG()) +#define __HAL_COMP_EXTI_CLEAR_FLAG(__FLAG__) (((__FLAG__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_CLEAR_FLAG() : \ + ((__FLAG__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_CLEAR_FLAG() : \ + __HAL_COMP_COMP6_EXTI_CLEAR_FLAG()) +# endif +# if defined(STM32F302xE) || defined(STM32F302xC) +#define __HAL_COMP_EXTI_RISING_IT_ENABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_RISING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_ENABLE_RISING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_ENABLE_RISING_EDGE() : \ + __HAL_COMP_COMP6_EXTI_ENABLE_RISING_EDGE()) +#define __HAL_COMP_EXTI_RISING_IT_DISABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_RISING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_DISABLE_RISING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_DISABLE_RISING_EDGE() : \ + __HAL_COMP_COMP6_EXTI_DISABLE_RISING_EDGE()) +#define __HAL_COMP_EXTI_FALLING_IT_ENABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_FALLING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_ENABLE_FALLING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_ENABLE_FALLING_EDGE() : \ + __HAL_COMP_COMP6_EXTI_ENABLE_FALLING_EDGE()) +#define __HAL_COMP_EXTI_FALLING_IT_DISABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_FALLING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_DISABLE_FALLING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_DISABLE_FALLING_EDGE() : \ + __HAL_COMP_COMP6_EXTI_DISABLE_FALLING_EDGE()) +#define __HAL_COMP_EXTI_ENABLE_IT(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_IT() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_ENABLE_IT() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_ENABLE_IT() : \ + __HAL_COMP_COMP6_EXTI_ENABLE_IT()) +#define __HAL_COMP_EXTI_DISABLE_IT(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_IT() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_DISABLE_IT() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_DISABLE_IT() : \ + __HAL_COMP_COMP6_EXTI_DISABLE_IT()) +#define __HAL_COMP_EXTI_GET_FLAG(__FLAG__) (((__FLAG__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_GET_FLAG() : \ + ((__FLAG__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_GET_FLAG() : \ + ((__FLAG__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_GET_FLAG() : \ + __HAL_COMP_COMP6_EXTI_GET_FLAG()) +#define __HAL_COMP_EXTI_CLEAR_FLAG(__FLAG__) (((__FLAG__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_CLEAR_FLAG() : \ + ((__FLAG__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_CLEAR_FLAG() : \ + ((__FLAG__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_CLEAR_FLAG() : \ + __HAL_COMP_COMP6_EXTI_CLEAR_FLAG()) +# endif +# if defined(STM32F303xE) || defined(STM32F398xx) || defined(STM32F303xC) || defined(STM32F358xx) +#define __HAL_COMP_EXTI_RISING_IT_ENABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_RISING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_ENABLE_RISING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP3) ? __HAL_COMP_COMP3_EXTI_ENABLE_RISING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_ENABLE_RISING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP5) ? __HAL_COMP_COMP5_EXTI_ENABLE_RISING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP6) ? __HAL_COMP_COMP6_EXTI_ENABLE_RISING_EDGE() : \ + __HAL_COMP_COMP7_EXTI_ENABLE_RISING_EDGE()) +#define __HAL_COMP_EXTI_RISING_IT_DISABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_RISING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_DISABLE_RISING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP3) ? __HAL_COMP_COMP3_EXTI_DISABLE_RISING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_DISABLE_RISING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP5) ? __HAL_COMP_COMP5_EXTI_DISABLE_RISING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP6) ? __HAL_COMP_COMP6_EXTI_DISABLE_RISING_EDGE() : \ + __HAL_COMP_COMP7_EXTI_DISABLE_RISING_EDGE()) +#define __HAL_COMP_EXTI_FALLING_IT_ENABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_FALLING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_ENABLE_FALLING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP3) ? __HAL_COMP_COMP3_EXTI_ENABLE_FALLING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_ENABLE_FALLING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP5) ? __HAL_COMP_COMP5_EXTI_ENABLE_FALLING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP6) ? __HAL_COMP_COMP6_EXTI_ENABLE_FALLING_EDGE() : \ + __HAL_COMP_COMP7_EXTI_ENABLE_FALLING_EDGE()) +#define __HAL_COMP_EXTI_FALLING_IT_DISABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_FALLING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_DISABLE_FALLING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP3) ? __HAL_COMP_COMP3_EXTI_DISABLE_FALLING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_DISABLE_FALLING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP5) ? __HAL_COMP_COMP5_EXTI_DISABLE_FALLING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP6) ? __HAL_COMP_COMP6_EXTI_DISABLE_FALLING_EDGE() : \ + __HAL_COMP_COMP7_EXTI_DISABLE_FALLING_EDGE()) +#define __HAL_COMP_EXTI_ENABLE_IT(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_IT() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_ENABLE_IT() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP3) ? __HAL_COMP_COMP3_EXTI_ENABLE_IT() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_ENABLE_IT() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP5) ? __HAL_COMP_COMP5_EXTI_ENABLE_IT() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP6) ? __HAL_COMP_COMP6_EXTI_ENABLE_IT() : \ + __HAL_COMP_COMP7_EXTI_ENABLE_IT()) +#define __HAL_COMP_EXTI_DISABLE_IT(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_IT() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_DISABLE_IT() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP3) ? __HAL_COMP_COMP3_EXTI_DISABLE_IT() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_DISABLE_IT() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP5) ? __HAL_COMP_COMP5_EXTI_DISABLE_IT() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP6) ? __HAL_COMP_COMP6_EXTI_DISABLE_IT() : \ + __HAL_COMP_COMP7_EXTI_DISABLE_IT()) +#define __HAL_COMP_EXTI_GET_FLAG(__FLAG__) (((__FLAG__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_GET_FLAG() : \ + ((__FLAG__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_GET_FLAG() : \ + ((__FLAG__) == COMP_EXTI_LINE_COMP3) ? __HAL_COMP_COMP3_EXTI_GET_FLAG() : \ + ((__FLAG__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_GET_FLAG() : \ + ((__FLAG__) == COMP_EXTI_LINE_COMP5) ? __HAL_COMP_COMP5_EXTI_GET_FLAG() : \ + ((__FLAG__) == COMP_EXTI_LINE_COMP6) ? __HAL_COMP_COMP6_EXTI_GET_FLAG() : \ + __HAL_COMP_COMP7_EXTI_GET_FLAG()) +#define __HAL_COMP_EXTI_CLEAR_FLAG(__FLAG__) (((__FLAG__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_CLEAR_FLAG() : \ + ((__FLAG__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_CLEAR_FLAG() : \ + ((__FLAG__) == COMP_EXTI_LINE_COMP3) ? __HAL_COMP_COMP3_EXTI_CLEAR_FLAG() : \ + ((__FLAG__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_CLEAR_FLAG() : \ + ((__FLAG__) == COMP_EXTI_LINE_COMP5) ? __HAL_COMP_COMP5_EXTI_CLEAR_FLAG() : \ + ((__FLAG__) == COMP_EXTI_LINE_COMP6) ? __HAL_COMP_COMP6_EXTI_CLEAR_FLAG() : \ + __HAL_COMP_COMP7_EXTI_CLEAR_FLAG()) +# endif +# if defined(STM32F373xC) ||defined(STM32F378xx) +#define __HAL_COMP_EXTI_RISING_IT_ENABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_RISING_EDGE() : \ + __HAL_COMP_COMP2_EXTI_ENABLE_RISING_EDGE()) +#define __HAL_COMP_EXTI_RISING_IT_DISABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_RISING_EDGE() : \ + __HAL_COMP_COMP2_EXTI_DISABLE_RISING_EDGE()) +#define __HAL_COMP_EXTI_FALLING_IT_ENABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_FALLING_EDGE() : \ + __HAL_COMP_COMP2_EXTI_ENABLE_FALLING_EDGE()) +#define __HAL_COMP_EXTI_FALLING_IT_DISABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_FALLING_EDGE() : \ + __HAL_COMP_COMP2_EXTI_DISABLE_FALLING_EDGE()) +#define __HAL_COMP_EXTI_ENABLE_IT(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_IT() : \ + __HAL_COMP_COMP2_EXTI_ENABLE_IT()) +#define __HAL_COMP_EXTI_DISABLE_IT(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_IT() : \ + __HAL_COMP_COMP2_EXTI_DISABLE_IT()) +#define __HAL_COMP_EXTI_GET_FLAG(__FLAG__) (((__FLAG__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_GET_FLAG() : \ + __HAL_COMP_COMP2_EXTI_GET_FLAG()) +#define __HAL_COMP_EXTI_CLEAR_FLAG(__FLAG__) (((__FLAG__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_CLEAR_FLAG() : \ + __HAL_COMP_COMP2_EXTI_CLEAR_FLAG()) +# endif +#else +#define __HAL_COMP_EXTI_RISING_IT_ENABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_RISING_EDGE() : \ + __HAL_COMP_COMP2_EXTI_ENABLE_RISING_EDGE()) +#define __HAL_COMP_EXTI_RISING_IT_DISABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_RISING_EDGE() : \ + __HAL_COMP_COMP2_EXTI_DISABLE_RISING_EDGE()) +#define __HAL_COMP_EXTI_FALLING_IT_ENABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_FALLING_EDGE() : \ + __HAL_COMP_COMP2_EXTI_ENABLE_FALLING_EDGE()) +#define __HAL_COMP_EXTI_FALLING_IT_DISABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_FALLING_EDGE() : \ + __HAL_COMP_COMP2_EXTI_DISABLE_FALLING_EDGE()) +#define __HAL_COMP_EXTI_ENABLE_IT(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_IT() : \ + __HAL_COMP_COMP2_EXTI_ENABLE_IT()) +#define __HAL_COMP_EXTI_DISABLE_IT(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_IT() : \ + __HAL_COMP_COMP2_EXTI_DISABLE_IT()) +#define __HAL_COMP_EXTI_GET_FLAG(__FLAG__) (((__FLAG__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_GET_FLAG() : \ + __HAL_COMP_COMP2_EXTI_GET_FLAG()) +#define __HAL_COMP_EXTI_CLEAR_FLAG(__FLAG__) (((__FLAG__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_CLEAR_FLAG() : \ + __HAL_COMP_COMP2_EXTI_CLEAR_FLAG()) +#endif + +#define __HAL_COMP_GET_EXTI_LINE COMP_GET_EXTI_LINE + +#if defined(STM32L0) || defined(STM32L4) +/* Note: On these STM32 families, the only argument of this macro */ +/* is COMP_FLAG_LOCK. */ +/* This macro is replaced by __HAL_COMP_IS_LOCKED with only HAL handle */ +/* argument. */ +#define __HAL_COMP_GET_FLAG(__HANDLE__, __FLAG__) (__HAL_COMP_IS_LOCKED(__HANDLE__)) +#endif +/** + * @} + */ + +#if defined(STM32L0) || defined(STM32L4) +/** @defgroup HAL_COMP_Aliased_Functions HAL COMP Aliased Functions maintained for legacy purpose + * @{ + */ +#define HAL_COMP_Start_IT HAL_COMP_Start /* Function considered as legacy as EXTI event or IT configuration is done into HAL_COMP_Init() */ +#define HAL_COMP_Stop_IT HAL_COMP_Stop /* Function considered as legacy as EXTI event or IT configuration is done into HAL_COMP_Init() */ +/** + * @} + */ +#endif + +/** @defgroup HAL_DAC_Aliased_Macros HAL DAC Aliased Macros maintained for legacy purpose + * @{ + */ + +#define IS_DAC_WAVE(WAVE) (((WAVE) == DAC_WAVE_NONE) || \ + ((WAVE) == DAC_WAVE_NOISE)|| \ + ((WAVE) == DAC_WAVE_TRIANGLE)) + +/** + * @} + */ + +/** @defgroup HAL_FLASH_Aliased_Macros HAL FLASH Aliased Macros maintained for legacy purpose + * @{ + */ + +#define IS_WRPAREA IS_OB_WRPAREA +#define IS_TYPEPROGRAM IS_FLASH_TYPEPROGRAM +#define IS_TYPEPROGRAMFLASH IS_FLASH_TYPEPROGRAM +#define IS_TYPEERASE IS_FLASH_TYPEERASE +#define IS_NBSECTORS IS_FLASH_NBSECTORS +#define IS_OB_WDG_SOURCE IS_OB_IWDG_SOURCE + +/** + * @} + */ + +/** @defgroup HAL_I2C_Aliased_Macros HAL I2C Aliased Macros maintained for legacy purpose + * @{ + */ + +#define __HAL_I2C_RESET_CR2 I2C_RESET_CR2 +#define __HAL_I2C_GENERATE_START I2C_GENERATE_START +#if defined(STM32F1) +#define __HAL_I2C_FREQ_RANGE I2C_FREQRANGE +#else +#define __HAL_I2C_FREQ_RANGE I2C_FREQ_RANGE +#endif /* STM32F1 */ +#define __HAL_I2C_RISE_TIME I2C_RISE_TIME +#define __HAL_I2C_SPEED_STANDARD I2C_SPEED_STANDARD +#define __HAL_I2C_SPEED_FAST I2C_SPEED_FAST +#define __HAL_I2C_SPEED I2C_SPEED +#define __HAL_I2C_7BIT_ADD_WRITE I2C_7BIT_ADD_WRITE +#define __HAL_I2C_7BIT_ADD_READ I2C_7BIT_ADD_READ +#define __HAL_I2C_10BIT_ADDRESS I2C_10BIT_ADDRESS +#define __HAL_I2C_10BIT_HEADER_WRITE I2C_10BIT_HEADER_WRITE +#define __HAL_I2C_10BIT_HEADER_READ I2C_10BIT_HEADER_READ +#define __HAL_I2C_MEM_ADD_MSB I2C_MEM_ADD_MSB +#define __HAL_I2C_MEM_ADD_LSB I2C_MEM_ADD_LSB +#define __HAL_I2C_FREQRANGE I2C_FREQRANGE +/** + * @} + */ + +/** @defgroup HAL_I2S_Aliased_Macros HAL I2S Aliased Macros maintained for legacy purpose + * @{ + */ + +#define IS_I2S_INSTANCE IS_I2S_ALL_INSTANCE +#define IS_I2S_INSTANCE_EXT IS_I2S_ALL_INSTANCE_EXT + +#if defined(STM32H7) +#define __HAL_I2S_CLEAR_FREFLAG __HAL_I2S_CLEAR_TIFREFLAG +#endif + +/** + * @} + */ + +/** @defgroup HAL_IRDA_Aliased_Macros HAL IRDA Aliased Macros maintained for legacy purpose + * @{ + */ + +#define __IRDA_DISABLE __HAL_IRDA_DISABLE +#define __IRDA_ENABLE __HAL_IRDA_ENABLE + +#define __HAL_IRDA_GETCLOCKSOURCE IRDA_GETCLOCKSOURCE +#define __HAL_IRDA_MASK_COMPUTATION IRDA_MASK_COMPUTATION +#define __IRDA_GETCLOCKSOURCE IRDA_GETCLOCKSOURCE +#define __IRDA_MASK_COMPUTATION IRDA_MASK_COMPUTATION + +#define IS_IRDA_ONEBIT_SAMPLE IS_IRDA_ONE_BIT_SAMPLE + + +/** + * @} + */ + + +/** @defgroup HAL_IWDG_Aliased_Macros HAL IWDG Aliased Macros maintained for legacy purpose + * @{ + */ +#define __HAL_IWDG_ENABLE_WRITE_ACCESS IWDG_ENABLE_WRITE_ACCESS +#define __HAL_IWDG_DISABLE_WRITE_ACCESS IWDG_DISABLE_WRITE_ACCESS +/** + * @} + */ + + +/** @defgroup HAL_LPTIM_Aliased_Macros HAL LPTIM Aliased Macros maintained for legacy purpose + * @{ + */ + +#define __HAL_LPTIM_ENABLE_INTERRUPT __HAL_LPTIM_ENABLE_IT +#define __HAL_LPTIM_DISABLE_INTERRUPT __HAL_LPTIM_DISABLE_IT +#define __HAL_LPTIM_GET_ITSTATUS __HAL_LPTIM_GET_IT_SOURCE + +/** + * @} + */ + + +/** @defgroup HAL_OPAMP_Aliased_Macros HAL OPAMP Aliased Macros maintained for legacy purpose + * @{ + */ +#define __OPAMP_CSR_OPAXPD OPAMP_CSR_OPAXPD +#define __OPAMP_CSR_S3SELX OPAMP_CSR_S3SELX +#define __OPAMP_CSR_S4SELX OPAMP_CSR_S4SELX +#define __OPAMP_CSR_S5SELX OPAMP_CSR_S5SELX +#define __OPAMP_CSR_S6SELX OPAMP_CSR_S6SELX +#define __OPAMP_CSR_OPAXCAL_L OPAMP_CSR_OPAXCAL_L +#define __OPAMP_CSR_OPAXCAL_H OPAMP_CSR_OPAXCAL_H +#define __OPAMP_CSR_OPAXLPM OPAMP_CSR_OPAXLPM +#define __OPAMP_CSR_ALL_SWITCHES OPAMP_CSR_ALL_SWITCHES +#define __OPAMP_CSR_ANAWSELX OPAMP_CSR_ANAWSELX +#define __OPAMP_CSR_OPAXCALOUT OPAMP_CSR_OPAXCALOUT +#define __OPAMP_OFFSET_TRIM_BITSPOSITION OPAMP_OFFSET_TRIM_BITSPOSITION +#define __OPAMP_OFFSET_TRIM_SET OPAMP_OFFSET_TRIM_SET + +/** + * @} + */ + + +/** @defgroup HAL_PWR_Aliased_Macros HAL PWR Aliased Macros maintained for legacy purpose + * @{ + */ +#define __HAL_PVD_EVENT_DISABLE __HAL_PWR_PVD_EXTI_DISABLE_EVENT +#define __HAL_PVD_EVENT_ENABLE __HAL_PWR_PVD_EXTI_ENABLE_EVENT +#define __HAL_PVD_EXTI_FALLINGTRIGGER_DISABLE __HAL_PWR_PVD_EXTI_DISABLE_FALLING_EDGE +#define __HAL_PVD_EXTI_FALLINGTRIGGER_ENABLE __HAL_PWR_PVD_EXTI_ENABLE_FALLING_EDGE +#define __HAL_PVD_EXTI_RISINGTRIGGER_DISABLE __HAL_PWR_PVD_EXTI_DISABLE_RISING_EDGE +#define __HAL_PVD_EXTI_RISINGTRIGGER_ENABLE __HAL_PWR_PVD_EXTI_ENABLE_RISING_EDGE +#define __HAL_PVM_EVENT_DISABLE __HAL_PWR_PVM_EVENT_DISABLE +#define __HAL_PVM_EVENT_ENABLE __HAL_PWR_PVM_EVENT_ENABLE +#define __HAL_PVM_EXTI_FALLINGTRIGGER_DISABLE __HAL_PWR_PVM_EXTI_FALLINGTRIGGER_DISABLE +#define __HAL_PVM_EXTI_FALLINGTRIGGER_ENABLE __HAL_PWR_PVM_EXTI_FALLINGTRIGGER_ENABLE +#define __HAL_PVM_EXTI_RISINGTRIGGER_DISABLE __HAL_PWR_PVM_EXTI_RISINGTRIGGER_DISABLE +#define __HAL_PVM_EXTI_RISINGTRIGGER_ENABLE __HAL_PWR_PVM_EXTI_RISINGTRIGGER_ENABLE +#define __HAL_PWR_INTERNALWAKEUP_DISABLE HAL_PWREx_DisableInternalWakeUpLine +#define __HAL_PWR_INTERNALWAKEUP_ENABLE HAL_PWREx_EnableInternalWakeUpLine +#define __HAL_PWR_PULL_UP_DOWN_CONFIG_DISABLE HAL_PWREx_DisablePullUpPullDownConfig +#define __HAL_PWR_PULL_UP_DOWN_CONFIG_ENABLE HAL_PWREx_EnablePullUpPullDownConfig +#define __HAL_PWR_PVD_EXTI_CLEAR_EGDE_TRIGGER() do { __HAL_PWR_PVD_EXTI_DISABLE_RISING_EDGE();__HAL_PWR_PVD_EXTI_DISABLE_FALLING_EDGE(); } while(0) +#define __HAL_PWR_PVD_EXTI_EVENT_DISABLE __HAL_PWR_PVD_EXTI_DISABLE_EVENT +#define __HAL_PWR_PVD_EXTI_EVENT_ENABLE __HAL_PWR_PVD_EXTI_ENABLE_EVENT +#define __HAL_PWR_PVD_EXTI_FALLINGTRIGGER_DISABLE __HAL_PWR_PVD_EXTI_DISABLE_FALLING_EDGE +#define __HAL_PWR_PVD_EXTI_FALLINGTRIGGER_ENABLE __HAL_PWR_PVD_EXTI_ENABLE_FALLING_EDGE +#define __HAL_PWR_PVD_EXTI_RISINGTRIGGER_DISABLE __HAL_PWR_PVD_EXTI_DISABLE_RISING_EDGE +#define __HAL_PWR_PVD_EXTI_RISINGTRIGGER_ENABLE __HAL_PWR_PVD_EXTI_ENABLE_RISING_EDGE +#define __HAL_PWR_PVD_EXTI_SET_FALLING_EGDE_TRIGGER __HAL_PWR_PVD_EXTI_ENABLE_FALLING_EDGE +#define __HAL_PWR_PVD_EXTI_SET_RISING_EDGE_TRIGGER __HAL_PWR_PVD_EXTI_ENABLE_RISING_EDGE +#define __HAL_PWR_PVM_DISABLE() do { HAL_PWREx_DisablePVM1();HAL_PWREx_DisablePVM2();HAL_PWREx_DisablePVM3();HAL_PWREx_DisablePVM4(); } while(0) +#define __HAL_PWR_PVM_ENABLE() do { HAL_PWREx_EnablePVM1();HAL_PWREx_EnablePVM2();HAL_PWREx_EnablePVM3();HAL_PWREx_EnablePVM4(); } while(0) +#define __HAL_PWR_SRAM2CONTENT_PRESERVE_DISABLE HAL_PWREx_DisableSRAM2ContentRetention +#define __HAL_PWR_SRAM2CONTENT_PRESERVE_ENABLE HAL_PWREx_EnableSRAM2ContentRetention +#define __HAL_PWR_VDDIO2_DISABLE HAL_PWREx_DisableVddIO2 +#define __HAL_PWR_VDDIO2_ENABLE HAL_PWREx_EnableVddIO2 +#define __HAL_PWR_VDDIO2_EXTI_CLEAR_EGDE_TRIGGER __HAL_PWR_VDDIO2_EXTI_DISABLE_FALLING_EDGE +#define __HAL_PWR_VDDIO2_EXTI_SET_FALLING_EGDE_TRIGGER __HAL_PWR_VDDIO2_EXTI_ENABLE_FALLING_EDGE +#define __HAL_PWR_VDDUSB_DISABLE HAL_PWREx_DisableVddUSB +#define __HAL_PWR_VDDUSB_ENABLE HAL_PWREx_EnableVddUSB + +#if defined (STM32F4) +#define __HAL_PVD_EXTI_ENABLE_IT(PWR_EXTI_LINE_PVD) __HAL_PWR_PVD_EXTI_ENABLE_IT() +#define __HAL_PVD_EXTI_DISABLE_IT(PWR_EXTI_LINE_PVD) __HAL_PWR_PVD_EXTI_DISABLE_IT() +#define __HAL_PVD_EXTI_GET_FLAG(PWR_EXTI_LINE_PVD) __HAL_PWR_PVD_EXTI_GET_FLAG() +#define __HAL_PVD_EXTI_CLEAR_FLAG(PWR_EXTI_LINE_PVD) __HAL_PWR_PVD_EXTI_CLEAR_FLAG() +#define __HAL_PVD_EXTI_GENERATE_SWIT(PWR_EXTI_LINE_PVD) __HAL_PWR_PVD_EXTI_GENERATE_SWIT() +#else +#define __HAL_PVD_EXTI_CLEAR_FLAG __HAL_PWR_PVD_EXTI_CLEAR_FLAG +#define __HAL_PVD_EXTI_DISABLE_IT __HAL_PWR_PVD_EXTI_DISABLE_IT +#define __HAL_PVD_EXTI_ENABLE_IT __HAL_PWR_PVD_EXTI_ENABLE_IT +#define __HAL_PVD_EXTI_GENERATE_SWIT __HAL_PWR_PVD_EXTI_GENERATE_SWIT +#define __HAL_PVD_EXTI_GET_FLAG __HAL_PWR_PVD_EXTI_GET_FLAG +#endif /* STM32F4 */ +/** + * @} + */ + + +/** @defgroup HAL_RCC_Aliased HAL RCC Aliased maintained for legacy purpose + * @{ + */ + +#define RCC_StopWakeUpClock_MSI RCC_STOP_WAKEUPCLOCK_MSI +#define RCC_StopWakeUpClock_HSI RCC_STOP_WAKEUPCLOCK_HSI + +#define HAL_RCC_CCSCallback HAL_RCC_CSSCallback +#define HAL_RC48_EnableBuffer_Cmd(cmd) (((cmd\ + )==ENABLE) ? HAL_RCCEx_EnableHSI48_VREFINT() : HAL_RCCEx_DisableHSI48_VREFINT()) + +#define __ADC_CLK_DISABLE __HAL_RCC_ADC_CLK_DISABLE +#define __ADC_CLK_ENABLE __HAL_RCC_ADC_CLK_ENABLE +#define __ADC_CLK_SLEEP_DISABLE __HAL_RCC_ADC_CLK_SLEEP_DISABLE +#define __ADC_CLK_SLEEP_ENABLE __HAL_RCC_ADC_CLK_SLEEP_ENABLE +#define __ADC_FORCE_RESET __HAL_RCC_ADC_FORCE_RESET +#define __ADC_RELEASE_RESET __HAL_RCC_ADC_RELEASE_RESET +#define __ADC1_CLK_DISABLE __HAL_RCC_ADC1_CLK_DISABLE +#define __ADC1_CLK_ENABLE __HAL_RCC_ADC1_CLK_ENABLE +#define __ADC1_FORCE_RESET __HAL_RCC_ADC1_FORCE_RESET +#define __ADC1_RELEASE_RESET __HAL_RCC_ADC1_RELEASE_RESET +#define __ADC1_CLK_SLEEP_ENABLE __HAL_RCC_ADC1_CLK_SLEEP_ENABLE +#define __ADC1_CLK_SLEEP_DISABLE __HAL_RCC_ADC1_CLK_SLEEP_DISABLE +#define __ADC2_CLK_DISABLE __HAL_RCC_ADC2_CLK_DISABLE +#define __ADC2_CLK_ENABLE __HAL_RCC_ADC2_CLK_ENABLE +#define __ADC2_FORCE_RESET __HAL_RCC_ADC2_FORCE_RESET +#define __ADC2_RELEASE_RESET __HAL_RCC_ADC2_RELEASE_RESET +#define __ADC3_CLK_DISABLE __HAL_RCC_ADC3_CLK_DISABLE +#define __ADC3_CLK_ENABLE __HAL_RCC_ADC3_CLK_ENABLE +#define __ADC3_FORCE_RESET __HAL_RCC_ADC3_FORCE_RESET +#define __ADC3_RELEASE_RESET __HAL_RCC_ADC3_RELEASE_RESET +#define __AES_CLK_DISABLE __HAL_RCC_AES_CLK_DISABLE +#define __AES_CLK_ENABLE __HAL_RCC_AES_CLK_ENABLE +#define __AES_CLK_SLEEP_DISABLE __HAL_RCC_AES_CLK_SLEEP_DISABLE +#define __AES_CLK_SLEEP_ENABLE __HAL_RCC_AES_CLK_SLEEP_ENABLE +#define __AES_FORCE_RESET __HAL_RCC_AES_FORCE_RESET +#define __AES_RELEASE_RESET __HAL_RCC_AES_RELEASE_RESET +#define __CRYP_CLK_SLEEP_ENABLE __HAL_RCC_CRYP_CLK_SLEEP_ENABLE +#define __CRYP_CLK_SLEEP_DISABLE __HAL_RCC_CRYP_CLK_SLEEP_DISABLE +#define __CRYP_CLK_ENABLE __HAL_RCC_CRYP_CLK_ENABLE +#define __CRYP_CLK_DISABLE __HAL_RCC_CRYP_CLK_DISABLE +#define __CRYP_FORCE_RESET __HAL_RCC_CRYP_FORCE_RESET +#define __CRYP_RELEASE_RESET __HAL_RCC_CRYP_RELEASE_RESET +#define __AFIO_CLK_DISABLE __HAL_RCC_AFIO_CLK_DISABLE +#define __AFIO_CLK_ENABLE __HAL_RCC_AFIO_CLK_ENABLE +#define __AFIO_FORCE_RESET __HAL_RCC_AFIO_FORCE_RESET +#define __AFIO_RELEASE_RESET __HAL_RCC_AFIO_RELEASE_RESET +#define __AHB_FORCE_RESET __HAL_RCC_AHB_FORCE_RESET +#define __AHB_RELEASE_RESET __HAL_RCC_AHB_RELEASE_RESET +#define __AHB1_FORCE_RESET __HAL_RCC_AHB1_FORCE_RESET +#define __AHB1_RELEASE_RESET __HAL_RCC_AHB1_RELEASE_RESET +#define __AHB2_FORCE_RESET __HAL_RCC_AHB2_FORCE_RESET +#define __AHB2_RELEASE_RESET __HAL_RCC_AHB2_RELEASE_RESET +#define __AHB3_FORCE_RESET __HAL_RCC_AHB3_FORCE_RESET +#define __AHB3_RELEASE_RESET __HAL_RCC_AHB3_RELEASE_RESET +#define __APB1_FORCE_RESET __HAL_RCC_APB1_FORCE_RESET +#define __APB1_RELEASE_RESET __HAL_RCC_APB1_RELEASE_RESET +#define __APB2_FORCE_RESET __HAL_RCC_APB2_FORCE_RESET +#define __APB2_RELEASE_RESET __HAL_RCC_APB2_RELEASE_RESET +#define __BKP_CLK_DISABLE __HAL_RCC_BKP_CLK_DISABLE +#define __BKP_CLK_ENABLE __HAL_RCC_BKP_CLK_ENABLE +#define __BKP_FORCE_RESET __HAL_RCC_BKP_FORCE_RESET +#define __BKP_RELEASE_RESET __HAL_RCC_BKP_RELEASE_RESET +#define __CAN1_CLK_DISABLE __HAL_RCC_CAN1_CLK_DISABLE +#define __CAN1_CLK_ENABLE __HAL_RCC_CAN1_CLK_ENABLE +#define __CAN1_CLK_SLEEP_DISABLE __HAL_RCC_CAN1_CLK_SLEEP_DISABLE +#define __CAN1_CLK_SLEEP_ENABLE __HAL_RCC_CAN1_CLK_SLEEP_ENABLE +#define __CAN1_FORCE_RESET __HAL_RCC_CAN1_FORCE_RESET +#define __CAN1_RELEASE_RESET __HAL_RCC_CAN1_RELEASE_RESET +#define __CAN_CLK_DISABLE __HAL_RCC_CAN1_CLK_DISABLE +#define __CAN_CLK_ENABLE __HAL_RCC_CAN1_CLK_ENABLE +#define __CAN_FORCE_RESET __HAL_RCC_CAN1_FORCE_RESET +#define __CAN_RELEASE_RESET __HAL_RCC_CAN1_RELEASE_RESET +#define __CAN2_CLK_DISABLE __HAL_RCC_CAN2_CLK_DISABLE +#define __CAN2_CLK_ENABLE __HAL_RCC_CAN2_CLK_ENABLE +#define __CAN2_FORCE_RESET __HAL_RCC_CAN2_FORCE_RESET +#define __CAN2_RELEASE_RESET __HAL_RCC_CAN2_RELEASE_RESET +#define __CEC_CLK_DISABLE __HAL_RCC_CEC_CLK_DISABLE +#define __CEC_CLK_ENABLE __HAL_RCC_CEC_CLK_ENABLE +#define __COMP_CLK_DISABLE __HAL_RCC_COMP_CLK_DISABLE +#define __COMP_CLK_ENABLE __HAL_RCC_COMP_CLK_ENABLE +#define __COMP_FORCE_RESET __HAL_RCC_COMP_FORCE_RESET +#define __COMP_RELEASE_RESET __HAL_RCC_COMP_RELEASE_RESET +#define __COMP_CLK_SLEEP_ENABLE __HAL_RCC_COMP_CLK_SLEEP_ENABLE +#define __COMP_CLK_SLEEP_DISABLE __HAL_RCC_COMP_CLK_SLEEP_DISABLE +#define __CEC_FORCE_RESET __HAL_RCC_CEC_FORCE_RESET +#define __CEC_RELEASE_RESET __HAL_RCC_CEC_RELEASE_RESET +#define __CRC_CLK_DISABLE __HAL_RCC_CRC_CLK_DISABLE +#define __CRC_CLK_ENABLE __HAL_RCC_CRC_CLK_ENABLE +#define __CRC_CLK_SLEEP_DISABLE __HAL_RCC_CRC_CLK_SLEEP_DISABLE +#define __CRC_CLK_SLEEP_ENABLE __HAL_RCC_CRC_CLK_SLEEP_ENABLE +#define __CRC_FORCE_RESET __HAL_RCC_CRC_FORCE_RESET +#define __CRC_RELEASE_RESET __HAL_RCC_CRC_RELEASE_RESET +#define __DAC_CLK_DISABLE __HAL_RCC_DAC_CLK_DISABLE +#define __DAC_CLK_ENABLE __HAL_RCC_DAC_CLK_ENABLE +#define __DAC_FORCE_RESET __HAL_RCC_DAC_FORCE_RESET +#define __DAC_RELEASE_RESET __HAL_RCC_DAC_RELEASE_RESET +#define __DAC1_CLK_DISABLE __HAL_RCC_DAC1_CLK_DISABLE +#define __DAC1_CLK_ENABLE __HAL_RCC_DAC1_CLK_ENABLE +#define __DAC1_CLK_SLEEP_DISABLE __HAL_RCC_DAC1_CLK_SLEEP_DISABLE +#define __DAC1_CLK_SLEEP_ENABLE __HAL_RCC_DAC1_CLK_SLEEP_ENABLE +#define __DAC1_FORCE_RESET __HAL_RCC_DAC1_FORCE_RESET +#define __DAC1_RELEASE_RESET __HAL_RCC_DAC1_RELEASE_RESET +#define __DBGMCU_CLK_ENABLE __HAL_RCC_DBGMCU_CLK_ENABLE +#define __DBGMCU_CLK_DISABLE __HAL_RCC_DBGMCU_CLK_DISABLE +#define __DBGMCU_FORCE_RESET __HAL_RCC_DBGMCU_FORCE_RESET +#define __DBGMCU_RELEASE_RESET __HAL_RCC_DBGMCU_RELEASE_RESET +#define __DFSDM_CLK_DISABLE __HAL_RCC_DFSDM_CLK_DISABLE +#define __DFSDM_CLK_ENABLE __HAL_RCC_DFSDM_CLK_ENABLE +#define __DFSDM_CLK_SLEEP_DISABLE __HAL_RCC_DFSDM_CLK_SLEEP_DISABLE +#define __DFSDM_CLK_SLEEP_ENABLE __HAL_RCC_DFSDM_CLK_SLEEP_ENABLE +#define __DFSDM_FORCE_RESET __HAL_RCC_DFSDM_FORCE_RESET +#define __DFSDM_RELEASE_RESET __HAL_RCC_DFSDM_RELEASE_RESET +#define __DMA1_CLK_DISABLE __HAL_RCC_DMA1_CLK_DISABLE +#define __DMA1_CLK_ENABLE __HAL_RCC_DMA1_CLK_ENABLE +#define __DMA1_CLK_SLEEP_DISABLE __HAL_RCC_DMA1_CLK_SLEEP_DISABLE +#define __DMA1_CLK_SLEEP_ENABLE __HAL_RCC_DMA1_CLK_SLEEP_ENABLE +#define __DMA1_FORCE_RESET __HAL_RCC_DMA1_FORCE_RESET +#define __DMA1_RELEASE_RESET __HAL_RCC_DMA1_RELEASE_RESET +#define __DMA2_CLK_DISABLE __HAL_RCC_DMA2_CLK_DISABLE +#define __DMA2_CLK_ENABLE __HAL_RCC_DMA2_CLK_ENABLE +#define __DMA2_CLK_SLEEP_DISABLE __HAL_RCC_DMA2_CLK_SLEEP_DISABLE +#define __DMA2_CLK_SLEEP_ENABLE __HAL_RCC_DMA2_CLK_SLEEP_ENABLE +#define __DMA2_FORCE_RESET __HAL_RCC_DMA2_FORCE_RESET +#define __DMA2_RELEASE_RESET __HAL_RCC_DMA2_RELEASE_RESET +#define __ETHMAC_CLK_DISABLE __HAL_RCC_ETHMAC_CLK_DISABLE +#define __ETHMAC_CLK_ENABLE __HAL_RCC_ETHMAC_CLK_ENABLE +#define __ETHMAC_FORCE_RESET __HAL_RCC_ETHMAC_FORCE_RESET +#define __ETHMAC_RELEASE_RESET __HAL_RCC_ETHMAC_RELEASE_RESET +#define __ETHMACRX_CLK_DISABLE __HAL_RCC_ETHMACRX_CLK_DISABLE +#define __ETHMACRX_CLK_ENABLE __HAL_RCC_ETHMACRX_CLK_ENABLE +#define __ETHMACTX_CLK_DISABLE __HAL_RCC_ETHMACTX_CLK_DISABLE +#define __ETHMACTX_CLK_ENABLE __HAL_RCC_ETHMACTX_CLK_ENABLE +#define __FIREWALL_CLK_DISABLE __HAL_RCC_FIREWALL_CLK_DISABLE +#define __FIREWALL_CLK_ENABLE __HAL_RCC_FIREWALL_CLK_ENABLE +#define __FLASH_CLK_DISABLE __HAL_RCC_FLASH_CLK_DISABLE +#define __FLASH_CLK_ENABLE __HAL_RCC_FLASH_CLK_ENABLE +#define __FLASH_CLK_SLEEP_DISABLE __HAL_RCC_FLASH_CLK_SLEEP_DISABLE +#define __FLASH_CLK_SLEEP_ENABLE __HAL_RCC_FLASH_CLK_SLEEP_ENABLE +#define __FLASH_FORCE_RESET __HAL_RCC_FLASH_FORCE_RESET +#define __FLASH_RELEASE_RESET __HAL_RCC_FLASH_RELEASE_RESET +#define __FLITF_CLK_DISABLE __HAL_RCC_FLITF_CLK_DISABLE +#define __FLITF_CLK_ENABLE __HAL_RCC_FLITF_CLK_ENABLE +#define __FLITF_FORCE_RESET __HAL_RCC_FLITF_FORCE_RESET +#define __FLITF_RELEASE_RESET __HAL_RCC_FLITF_RELEASE_RESET +#define __FLITF_CLK_SLEEP_ENABLE __HAL_RCC_FLITF_CLK_SLEEP_ENABLE +#define __FLITF_CLK_SLEEP_DISABLE __HAL_RCC_FLITF_CLK_SLEEP_DISABLE +#define __FMC_CLK_DISABLE __HAL_RCC_FMC_CLK_DISABLE +#define __FMC_CLK_ENABLE __HAL_RCC_FMC_CLK_ENABLE +#define __FMC_CLK_SLEEP_DISABLE __HAL_RCC_FMC_CLK_SLEEP_DISABLE +#define __FMC_CLK_SLEEP_ENABLE __HAL_RCC_FMC_CLK_SLEEP_ENABLE +#define __FMC_FORCE_RESET __HAL_RCC_FMC_FORCE_RESET +#define __FMC_RELEASE_RESET __HAL_RCC_FMC_RELEASE_RESET +#define __FSMC_CLK_DISABLE __HAL_RCC_FSMC_CLK_DISABLE +#define __FSMC_CLK_ENABLE __HAL_RCC_FSMC_CLK_ENABLE +#define __GPIOA_CLK_DISABLE __HAL_RCC_GPIOA_CLK_DISABLE +#define __GPIOA_CLK_ENABLE __HAL_RCC_GPIOA_CLK_ENABLE +#define __GPIOA_CLK_SLEEP_DISABLE __HAL_RCC_GPIOA_CLK_SLEEP_DISABLE +#define __GPIOA_CLK_SLEEP_ENABLE __HAL_RCC_GPIOA_CLK_SLEEP_ENABLE +#define __GPIOA_FORCE_RESET __HAL_RCC_GPIOA_FORCE_RESET +#define __GPIOA_RELEASE_RESET __HAL_RCC_GPIOA_RELEASE_RESET +#define __GPIOB_CLK_DISABLE __HAL_RCC_GPIOB_CLK_DISABLE +#define __GPIOB_CLK_ENABLE __HAL_RCC_GPIOB_CLK_ENABLE +#define __GPIOB_CLK_SLEEP_DISABLE __HAL_RCC_GPIOB_CLK_SLEEP_DISABLE +#define __GPIOB_CLK_SLEEP_ENABLE __HAL_RCC_GPIOB_CLK_SLEEP_ENABLE +#define __GPIOB_FORCE_RESET __HAL_RCC_GPIOB_FORCE_RESET +#define __GPIOB_RELEASE_RESET __HAL_RCC_GPIOB_RELEASE_RESET +#define __GPIOC_CLK_DISABLE __HAL_RCC_GPIOC_CLK_DISABLE +#define __GPIOC_CLK_ENABLE __HAL_RCC_GPIOC_CLK_ENABLE +#define __GPIOC_CLK_SLEEP_DISABLE __HAL_RCC_GPIOC_CLK_SLEEP_DISABLE +#define __GPIOC_CLK_SLEEP_ENABLE __HAL_RCC_GPIOC_CLK_SLEEP_ENABLE +#define __GPIOC_FORCE_RESET __HAL_RCC_GPIOC_FORCE_RESET +#define __GPIOC_RELEASE_RESET __HAL_RCC_GPIOC_RELEASE_RESET +#define __GPIOD_CLK_DISABLE __HAL_RCC_GPIOD_CLK_DISABLE +#define __GPIOD_CLK_ENABLE __HAL_RCC_GPIOD_CLK_ENABLE +#define __GPIOD_CLK_SLEEP_DISABLE __HAL_RCC_GPIOD_CLK_SLEEP_DISABLE +#define __GPIOD_CLK_SLEEP_ENABLE __HAL_RCC_GPIOD_CLK_SLEEP_ENABLE +#define __GPIOD_FORCE_RESET __HAL_RCC_GPIOD_FORCE_RESET +#define __GPIOD_RELEASE_RESET __HAL_RCC_GPIOD_RELEASE_RESET +#define __GPIOE_CLK_DISABLE __HAL_RCC_GPIOE_CLK_DISABLE +#define __GPIOE_CLK_ENABLE __HAL_RCC_GPIOE_CLK_ENABLE +#define __GPIOE_CLK_SLEEP_DISABLE __HAL_RCC_GPIOE_CLK_SLEEP_DISABLE +#define __GPIOE_CLK_SLEEP_ENABLE __HAL_RCC_GPIOE_CLK_SLEEP_ENABLE +#define __GPIOE_FORCE_RESET __HAL_RCC_GPIOE_FORCE_RESET +#define __GPIOE_RELEASE_RESET __HAL_RCC_GPIOE_RELEASE_RESET +#define __GPIOF_CLK_DISABLE __HAL_RCC_GPIOF_CLK_DISABLE +#define __GPIOF_CLK_ENABLE __HAL_RCC_GPIOF_CLK_ENABLE +#define __GPIOF_CLK_SLEEP_DISABLE __HAL_RCC_GPIOF_CLK_SLEEP_DISABLE +#define __GPIOF_CLK_SLEEP_ENABLE __HAL_RCC_GPIOF_CLK_SLEEP_ENABLE +#define __GPIOF_FORCE_RESET __HAL_RCC_GPIOF_FORCE_RESET +#define __GPIOF_RELEASE_RESET __HAL_RCC_GPIOF_RELEASE_RESET +#define __GPIOG_CLK_DISABLE __HAL_RCC_GPIOG_CLK_DISABLE +#define __GPIOG_CLK_ENABLE __HAL_RCC_GPIOG_CLK_ENABLE +#define __GPIOG_CLK_SLEEP_DISABLE __HAL_RCC_GPIOG_CLK_SLEEP_DISABLE +#define __GPIOG_CLK_SLEEP_ENABLE __HAL_RCC_GPIOG_CLK_SLEEP_ENABLE +#define __GPIOG_FORCE_RESET __HAL_RCC_GPIOG_FORCE_RESET +#define __GPIOG_RELEASE_RESET __HAL_RCC_GPIOG_RELEASE_RESET +#define __GPIOH_CLK_DISABLE __HAL_RCC_GPIOH_CLK_DISABLE +#define __GPIOH_CLK_ENABLE __HAL_RCC_GPIOH_CLK_ENABLE +#define __GPIOH_CLK_SLEEP_DISABLE __HAL_RCC_GPIOH_CLK_SLEEP_DISABLE +#define __GPIOH_CLK_SLEEP_ENABLE __HAL_RCC_GPIOH_CLK_SLEEP_ENABLE +#define __GPIOH_FORCE_RESET __HAL_RCC_GPIOH_FORCE_RESET +#define __GPIOH_RELEASE_RESET __HAL_RCC_GPIOH_RELEASE_RESET +#define __I2C1_CLK_DISABLE __HAL_RCC_I2C1_CLK_DISABLE +#define __I2C1_CLK_ENABLE __HAL_RCC_I2C1_CLK_ENABLE +#define __I2C1_CLK_SLEEP_DISABLE __HAL_RCC_I2C1_CLK_SLEEP_DISABLE +#define __I2C1_CLK_SLEEP_ENABLE __HAL_RCC_I2C1_CLK_SLEEP_ENABLE +#define __I2C1_FORCE_RESET __HAL_RCC_I2C1_FORCE_RESET +#define __I2C1_RELEASE_RESET __HAL_RCC_I2C1_RELEASE_RESET +#define __I2C2_CLK_DISABLE __HAL_RCC_I2C2_CLK_DISABLE +#define __I2C2_CLK_ENABLE __HAL_RCC_I2C2_CLK_ENABLE +#define __I2C2_CLK_SLEEP_DISABLE __HAL_RCC_I2C2_CLK_SLEEP_DISABLE +#define __I2C2_CLK_SLEEP_ENABLE __HAL_RCC_I2C2_CLK_SLEEP_ENABLE +#define __I2C2_FORCE_RESET __HAL_RCC_I2C2_FORCE_RESET +#define __I2C2_RELEASE_RESET __HAL_RCC_I2C2_RELEASE_RESET +#define __I2C3_CLK_DISABLE __HAL_RCC_I2C3_CLK_DISABLE +#define __I2C3_CLK_ENABLE __HAL_RCC_I2C3_CLK_ENABLE +#define __I2C3_CLK_SLEEP_DISABLE __HAL_RCC_I2C3_CLK_SLEEP_DISABLE +#define __I2C3_CLK_SLEEP_ENABLE __HAL_RCC_I2C3_CLK_SLEEP_ENABLE +#define __I2C3_FORCE_RESET __HAL_RCC_I2C3_FORCE_RESET +#define __I2C3_RELEASE_RESET __HAL_RCC_I2C3_RELEASE_RESET +#define __LCD_CLK_DISABLE __HAL_RCC_LCD_CLK_DISABLE +#define __LCD_CLK_ENABLE __HAL_RCC_LCD_CLK_ENABLE +#define __LCD_CLK_SLEEP_DISABLE __HAL_RCC_LCD_CLK_SLEEP_DISABLE +#define __LCD_CLK_SLEEP_ENABLE __HAL_RCC_LCD_CLK_SLEEP_ENABLE +#define __LCD_FORCE_RESET __HAL_RCC_LCD_FORCE_RESET +#define __LCD_RELEASE_RESET __HAL_RCC_LCD_RELEASE_RESET +#define __LPTIM1_CLK_DISABLE __HAL_RCC_LPTIM1_CLK_DISABLE +#define __LPTIM1_CLK_ENABLE __HAL_RCC_LPTIM1_CLK_ENABLE +#define __LPTIM1_CLK_SLEEP_DISABLE __HAL_RCC_LPTIM1_CLK_SLEEP_DISABLE +#define __LPTIM1_CLK_SLEEP_ENABLE __HAL_RCC_LPTIM1_CLK_SLEEP_ENABLE +#define __LPTIM1_FORCE_RESET __HAL_RCC_LPTIM1_FORCE_RESET +#define __LPTIM1_RELEASE_RESET __HAL_RCC_LPTIM1_RELEASE_RESET +#define __LPTIM2_CLK_DISABLE __HAL_RCC_LPTIM2_CLK_DISABLE +#define __LPTIM2_CLK_ENABLE __HAL_RCC_LPTIM2_CLK_ENABLE +#define __LPTIM2_CLK_SLEEP_DISABLE __HAL_RCC_LPTIM2_CLK_SLEEP_DISABLE +#define __LPTIM2_CLK_SLEEP_ENABLE __HAL_RCC_LPTIM2_CLK_SLEEP_ENABLE +#define __LPTIM2_FORCE_RESET __HAL_RCC_LPTIM2_FORCE_RESET +#define __LPTIM2_RELEASE_RESET __HAL_RCC_LPTIM2_RELEASE_RESET +#define __LPUART1_CLK_DISABLE __HAL_RCC_LPUART1_CLK_DISABLE +#define __LPUART1_CLK_ENABLE __HAL_RCC_LPUART1_CLK_ENABLE +#define __LPUART1_CLK_SLEEP_DISABLE __HAL_RCC_LPUART1_CLK_SLEEP_DISABLE +#define __LPUART1_CLK_SLEEP_ENABLE __HAL_RCC_LPUART1_CLK_SLEEP_ENABLE +#define __LPUART1_FORCE_RESET __HAL_RCC_LPUART1_FORCE_RESET +#define __LPUART1_RELEASE_RESET __HAL_RCC_LPUART1_RELEASE_RESET +#define __OPAMP_CLK_DISABLE __HAL_RCC_OPAMP_CLK_DISABLE +#define __OPAMP_CLK_ENABLE __HAL_RCC_OPAMP_CLK_ENABLE +#define __OPAMP_CLK_SLEEP_DISABLE __HAL_RCC_OPAMP_CLK_SLEEP_DISABLE +#define __OPAMP_CLK_SLEEP_ENABLE __HAL_RCC_OPAMP_CLK_SLEEP_ENABLE +#define __OPAMP_FORCE_RESET __HAL_RCC_OPAMP_FORCE_RESET +#define __OPAMP_RELEASE_RESET __HAL_RCC_OPAMP_RELEASE_RESET +#define __OTGFS_CLK_DISABLE __HAL_RCC_OTGFS_CLK_DISABLE +#define __OTGFS_CLK_ENABLE __HAL_RCC_OTGFS_CLK_ENABLE +#define __OTGFS_CLK_SLEEP_DISABLE __HAL_RCC_OTGFS_CLK_SLEEP_DISABLE +#define __OTGFS_CLK_SLEEP_ENABLE __HAL_RCC_OTGFS_CLK_SLEEP_ENABLE +#define __OTGFS_FORCE_RESET __HAL_RCC_OTGFS_FORCE_RESET +#define __OTGFS_RELEASE_RESET __HAL_RCC_OTGFS_RELEASE_RESET +#define __PWR_CLK_DISABLE __HAL_RCC_PWR_CLK_DISABLE +#define __PWR_CLK_ENABLE __HAL_RCC_PWR_CLK_ENABLE +#define __PWR_CLK_SLEEP_DISABLE __HAL_RCC_PWR_CLK_SLEEP_DISABLE +#define __PWR_CLK_SLEEP_ENABLE __HAL_RCC_PWR_CLK_SLEEP_ENABLE +#define __PWR_FORCE_RESET __HAL_RCC_PWR_FORCE_RESET +#define __PWR_RELEASE_RESET __HAL_RCC_PWR_RELEASE_RESET +#define __QSPI_CLK_DISABLE __HAL_RCC_QSPI_CLK_DISABLE +#define __QSPI_CLK_ENABLE __HAL_RCC_QSPI_CLK_ENABLE +#define __QSPI_CLK_SLEEP_DISABLE __HAL_RCC_QSPI_CLK_SLEEP_DISABLE +#define __QSPI_CLK_SLEEP_ENABLE __HAL_RCC_QSPI_CLK_SLEEP_ENABLE +#define __QSPI_FORCE_RESET __HAL_RCC_QSPI_FORCE_RESET +#define __QSPI_RELEASE_RESET __HAL_RCC_QSPI_RELEASE_RESET + +#if defined(STM32WB) +#define __HAL_RCC_QSPI_CLK_DISABLE __HAL_RCC_QUADSPI_CLK_DISABLE +#define __HAL_RCC_QSPI_CLK_ENABLE __HAL_RCC_QUADSPI_CLK_ENABLE +#define __HAL_RCC_QSPI_CLK_SLEEP_DISABLE __HAL_RCC_QUADSPI_CLK_SLEEP_DISABLE +#define __HAL_RCC_QSPI_CLK_SLEEP_ENABLE __HAL_RCC_QUADSPI_CLK_SLEEP_ENABLE +#define __HAL_RCC_QSPI_FORCE_RESET __HAL_RCC_QUADSPI_FORCE_RESET +#define __HAL_RCC_QSPI_RELEASE_RESET __HAL_RCC_QUADSPI_RELEASE_RESET +#define __HAL_RCC_QSPI_IS_CLK_ENABLED __HAL_RCC_QUADSPI_IS_CLK_ENABLED +#define __HAL_RCC_QSPI_IS_CLK_DISABLED __HAL_RCC_QUADSPI_IS_CLK_DISABLED +#define __HAL_RCC_QSPI_IS_CLK_SLEEP_ENABLED __HAL_RCC_QUADSPI_IS_CLK_SLEEP_ENABLED +#define __HAL_RCC_QSPI_IS_CLK_SLEEP_DISABLED __HAL_RCC_QUADSPI_IS_CLK_SLEEP_DISABLED +#define QSPI_IRQHandler QUADSPI_IRQHandler +#endif /* __HAL_RCC_QUADSPI_CLK_ENABLE */ + +#define __RNG_CLK_DISABLE __HAL_RCC_RNG_CLK_DISABLE +#define __RNG_CLK_ENABLE __HAL_RCC_RNG_CLK_ENABLE +#define __RNG_CLK_SLEEP_DISABLE __HAL_RCC_RNG_CLK_SLEEP_DISABLE +#define __RNG_CLK_SLEEP_ENABLE __HAL_RCC_RNG_CLK_SLEEP_ENABLE +#define __RNG_FORCE_RESET __HAL_RCC_RNG_FORCE_RESET +#define __RNG_RELEASE_RESET __HAL_RCC_RNG_RELEASE_RESET +#define __SAI1_CLK_DISABLE __HAL_RCC_SAI1_CLK_DISABLE +#define __SAI1_CLK_ENABLE __HAL_RCC_SAI1_CLK_ENABLE +#define __SAI1_CLK_SLEEP_DISABLE __HAL_RCC_SAI1_CLK_SLEEP_DISABLE +#define __SAI1_CLK_SLEEP_ENABLE __HAL_RCC_SAI1_CLK_SLEEP_ENABLE +#define __SAI1_FORCE_RESET __HAL_RCC_SAI1_FORCE_RESET +#define __SAI1_RELEASE_RESET __HAL_RCC_SAI1_RELEASE_RESET +#define __SAI2_CLK_DISABLE __HAL_RCC_SAI2_CLK_DISABLE +#define __SAI2_CLK_ENABLE __HAL_RCC_SAI2_CLK_ENABLE +#define __SAI2_CLK_SLEEP_DISABLE __HAL_RCC_SAI2_CLK_SLEEP_DISABLE +#define __SAI2_CLK_SLEEP_ENABLE __HAL_RCC_SAI2_CLK_SLEEP_ENABLE +#define __SAI2_FORCE_RESET __HAL_RCC_SAI2_FORCE_RESET +#define __SAI2_RELEASE_RESET __HAL_RCC_SAI2_RELEASE_RESET +#define __SDIO_CLK_DISABLE __HAL_RCC_SDIO_CLK_DISABLE +#define __SDIO_CLK_ENABLE __HAL_RCC_SDIO_CLK_ENABLE +#define __SDMMC_CLK_DISABLE __HAL_RCC_SDMMC_CLK_DISABLE +#define __SDMMC_CLK_ENABLE __HAL_RCC_SDMMC_CLK_ENABLE +#define __SDMMC_CLK_SLEEP_DISABLE __HAL_RCC_SDMMC_CLK_SLEEP_DISABLE +#define __SDMMC_CLK_SLEEP_ENABLE __HAL_RCC_SDMMC_CLK_SLEEP_ENABLE +#define __SDMMC_FORCE_RESET __HAL_RCC_SDMMC_FORCE_RESET +#define __SDMMC_RELEASE_RESET __HAL_RCC_SDMMC_RELEASE_RESET +#define __SPI1_CLK_DISABLE __HAL_RCC_SPI1_CLK_DISABLE +#define __SPI1_CLK_ENABLE __HAL_RCC_SPI1_CLK_ENABLE +#define __SPI1_CLK_SLEEP_DISABLE __HAL_RCC_SPI1_CLK_SLEEP_DISABLE +#define __SPI1_CLK_SLEEP_ENABLE __HAL_RCC_SPI1_CLK_SLEEP_ENABLE +#define __SPI1_FORCE_RESET __HAL_RCC_SPI1_FORCE_RESET +#define __SPI1_RELEASE_RESET __HAL_RCC_SPI1_RELEASE_RESET +#define __SPI2_CLK_DISABLE __HAL_RCC_SPI2_CLK_DISABLE +#define __SPI2_CLK_ENABLE __HAL_RCC_SPI2_CLK_ENABLE +#define __SPI2_CLK_SLEEP_DISABLE __HAL_RCC_SPI2_CLK_SLEEP_DISABLE +#define __SPI2_CLK_SLEEP_ENABLE __HAL_RCC_SPI2_CLK_SLEEP_ENABLE +#define __SPI2_FORCE_RESET __HAL_RCC_SPI2_FORCE_RESET +#define __SPI2_RELEASE_RESET __HAL_RCC_SPI2_RELEASE_RESET +#define __SPI3_CLK_DISABLE __HAL_RCC_SPI3_CLK_DISABLE +#define __SPI3_CLK_ENABLE __HAL_RCC_SPI3_CLK_ENABLE +#define __SPI3_CLK_SLEEP_DISABLE __HAL_RCC_SPI3_CLK_SLEEP_DISABLE +#define __SPI3_CLK_SLEEP_ENABLE __HAL_RCC_SPI3_CLK_SLEEP_ENABLE +#define __SPI3_FORCE_RESET __HAL_RCC_SPI3_FORCE_RESET +#define __SPI3_RELEASE_RESET __HAL_RCC_SPI3_RELEASE_RESET +#define __SRAM_CLK_DISABLE __HAL_RCC_SRAM_CLK_DISABLE +#define __SRAM_CLK_ENABLE __HAL_RCC_SRAM_CLK_ENABLE +#define __SRAM1_CLK_SLEEP_DISABLE __HAL_RCC_SRAM1_CLK_SLEEP_DISABLE +#define __SRAM1_CLK_SLEEP_ENABLE __HAL_RCC_SRAM1_CLK_SLEEP_ENABLE +#define __SRAM2_CLK_SLEEP_DISABLE __HAL_RCC_SRAM2_CLK_SLEEP_DISABLE +#define __SRAM2_CLK_SLEEP_ENABLE __HAL_RCC_SRAM2_CLK_SLEEP_ENABLE +#define __SWPMI1_CLK_DISABLE __HAL_RCC_SWPMI1_CLK_DISABLE +#define __SWPMI1_CLK_ENABLE __HAL_RCC_SWPMI1_CLK_ENABLE +#define __SWPMI1_CLK_SLEEP_DISABLE __HAL_RCC_SWPMI1_CLK_SLEEP_DISABLE +#define __SWPMI1_CLK_SLEEP_ENABLE __HAL_RCC_SWPMI1_CLK_SLEEP_ENABLE +#define __SWPMI1_FORCE_RESET __HAL_RCC_SWPMI1_FORCE_RESET +#define __SWPMI1_RELEASE_RESET __HAL_RCC_SWPMI1_RELEASE_RESET +#define __SYSCFG_CLK_DISABLE __HAL_RCC_SYSCFG_CLK_DISABLE +#define __SYSCFG_CLK_ENABLE __HAL_RCC_SYSCFG_CLK_ENABLE +#define __SYSCFG_CLK_SLEEP_DISABLE __HAL_RCC_SYSCFG_CLK_SLEEP_DISABLE +#define __SYSCFG_CLK_SLEEP_ENABLE __HAL_RCC_SYSCFG_CLK_SLEEP_ENABLE +#define __SYSCFG_FORCE_RESET __HAL_RCC_SYSCFG_FORCE_RESET +#define __SYSCFG_RELEASE_RESET __HAL_RCC_SYSCFG_RELEASE_RESET +#define __TIM1_CLK_DISABLE __HAL_RCC_TIM1_CLK_DISABLE +#define __TIM1_CLK_ENABLE __HAL_RCC_TIM1_CLK_ENABLE +#define __TIM1_CLK_SLEEP_DISABLE __HAL_RCC_TIM1_CLK_SLEEP_DISABLE +#define __TIM1_CLK_SLEEP_ENABLE __HAL_RCC_TIM1_CLK_SLEEP_ENABLE +#define __TIM1_FORCE_RESET __HAL_RCC_TIM1_FORCE_RESET +#define __TIM1_RELEASE_RESET __HAL_RCC_TIM1_RELEASE_RESET +#define __TIM10_CLK_DISABLE __HAL_RCC_TIM10_CLK_DISABLE +#define __TIM10_CLK_ENABLE __HAL_RCC_TIM10_CLK_ENABLE +#define __TIM10_FORCE_RESET __HAL_RCC_TIM10_FORCE_RESET +#define __TIM10_RELEASE_RESET __HAL_RCC_TIM10_RELEASE_RESET +#define __TIM11_CLK_DISABLE __HAL_RCC_TIM11_CLK_DISABLE +#define __TIM11_CLK_ENABLE __HAL_RCC_TIM11_CLK_ENABLE +#define __TIM11_FORCE_RESET __HAL_RCC_TIM11_FORCE_RESET +#define __TIM11_RELEASE_RESET __HAL_RCC_TIM11_RELEASE_RESET +#define __TIM12_CLK_DISABLE __HAL_RCC_TIM12_CLK_DISABLE +#define __TIM12_CLK_ENABLE __HAL_RCC_TIM12_CLK_ENABLE +#define __TIM12_FORCE_RESET __HAL_RCC_TIM12_FORCE_RESET +#define __TIM12_RELEASE_RESET __HAL_RCC_TIM12_RELEASE_RESET +#define __TIM13_CLK_DISABLE __HAL_RCC_TIM13_CLK_DISABLE +#define __TIM13_CLK_ENABLE __HAL_RCC_TIM13_CLK_ENABLE +#define __TIM13_FORCE_RESET __HAL_RCC_TIM13_FORCE_RESET +#define __TIM13_RELEASE_RESET __HAL_RCC_TIM13_RELEASE_RESET +#define __TIM14_CLK_DISABLE __HAL_RCC_TIM14_CLK_DISABLE +#define __TIM14_CLK_ENABLE __HAL_RCC_TIM14_CLK_ENABLE +#define __TIM14_FORCE_RESET __HAL_RCC_TIM14_FORCE_RESET +#define __TIM14_RELEASE_RESET __HAL_RCC_TIM14_RELEASE_RESET +#define __TIM15_CLK_DISABLE __HAL_RCC_TIM15_CLK_DISABLE +#define __TIM15_CLK_ENABLE __HAL_RCC_TIM15_CLK_ENABLE +#define __TIM15_CLK_SLEEP_DISABLE __HAL_RCC_TIM15_CLK_SLEEP_DISABLE +#define __TIM15_CLK_SLEEP_ENABLE __HAL_RCC_TIM15_CLK_SLEEP_ENABLE +#define __TIM15_FORCE_RESET __HAL_RCC_TIM15_FORCE_RESET +#define __TIM15_RELEASE_RESET __HAL_RCC_TIM15_RELEASE_RESET +#define __TIM16_CLK_DISABLE __HAL_RCC_TIM16_CLK_DISABLE +#define __TIM16_CLK_ENABLE __HAL_RCC_TIM16_CLK_ENABLE +#define __TIM16_CLK_SLEEP_DISABLE __HAL_RCC_TIM16_CLK_SLEEP_DISABLE +#define __TIM16_CLK_SLEEP_ENABLE __HAL_RCC_TIM16_CLK_SLEEP_ENABLE +#define __TIM16_FORCE_RESET __HAL_RCC_TIM16_FORCE_RESET +#define __TIM16_RELEASE_RESET __HAL_RCC_TIM16_RELEASE_RESET +#define __TIM17_CLK_DISABLE __HAL_RCC_TIM17_CLK_DISABLE +#define __TIM17_CLK_ENABLE __HAL_RCC_TIM17_CLK_ENABLE +#define __TIM17_CLK_SLEEP_DISABLE __HAL_RCC_TIM17_CLK_SLEEP_DISABLE +#define __TIM17_CLK_SLEEP_ENABLE __HAL_RCC_TIM17_CLK_SLEEP_ENABLE +#define __TIM17_FORCE_RESET __HAL_RCC_TIM17_FORCE_RESET +#define __TIM17_RELEASE_RESET __HAL_RCC_TIM17_RELEASE_RESET +#define __TIM2_CLK_DISABLE __HAL_RCC_TIM2_CLK_DISABLE +#define __TIM2_CLK_ENABLE __HAL_RCC_TIM2_CLK_ENABLE +#define __TIM2_CLK_SLEEP_DISABLE __HAL_RCC_TIM2_CLK_SLEEP_DISABLE +#define __TIM2_CLK_SLEEP_ENABLE __HAL_RCC_TIM2_CLK_SLEEP_ENABLE +#define __TIM2_FORCE_RESET __HAL_RCC_TIM2_FORCE_RESET +#define __TIM2_RELEASE_RESET __HAL_RCC_TIM2_RELEASE_RESET +#define __TIM3_CLK_DISABLE __HAL_RCC_TIM3_CLK_DISABLE +#define __TIM3_CLK_ENABLE __HAL_RCC_TIM3_CLK_ENABLE +#define __TIM3_CLK_SLEEP_DISABLE __HAL_RCC_TIM3_CLK_SLEEP_DISABLE +#define __TIM3_CLK_SLEEP_ENABLE __HAL_RCC_TIM3_CLK_SLEEP_ENABLE +#define __TIM3_FORCE_RESET __HAL_RCC_TIM3_FORCE_RESET +#define __TIM3_RELEASE_RESET __HAL_RCC_TIM3_RELEASE_RESET +#define __TIM4_CLK_DISABLE __HAL_RCC_TIM4_CLK_DISABLE +#define __TIM4_CLK_ENABLE __HAL_RCC_TIM4_CLK_ENABLE +#define __TIM4_CLK_SLEEP_DISABLE __HAL_RCC_TIM4_CLK_SLEEP_DISABLE +#define __TIM4_CLK_SLEEP_ENABLE __HAL_RCC_TIM4_CLK_SLEEP_ENABLE +#define __TIM4_FORCE_RESET __HAL_RCC_TIM4_FORCE_RESET +#define __TIM4_RELEASE_RESET __HAL_RCC_TIM4_RELEASE_RESET +#define __TIM5_CLK_DISABLE __HAL_RCC_TIM5_CLK_DISABLE +#define __TIM5_CLK_ENABLE __HAL_RCC_TIM5_CLK_ENABLE +#define __TIM5_CLK_SLEEP_DISABLE __HAL_RCC_TIM5_CLK_SLEEP_DISABLE +#define __TIM5_CLK_SLEEP_ENABLE __HAL_RCC_TIM5_CLK_SLEEP_ENABLE +#define __TIM5_FORCE_RESET __HAL_RCC_TIM5_FORCE_RESET +#define __TIM5_RELEASE_RESET __HAL_RCC_TIM5_RELEASE_RESET +#define __TIM6_CLK_DISABLE __HAL_RCC_TIM6_CLK_DISABLE +#define __TIM6_CLK_ENABLE __HAL_RCC_TIM6_CLK_ENABLE +#define __TIM6_CLK_SLEEP_DISABLE __HAL_RCC_TIM6_CLK_SLEEP_DISABLE +#define __TIM6_CLK_SLEEP_ENABLE __HAL_RCC_TIM6_CLK_SLEEP_ENABLE +#define __TIM6_FORCE_RESET __HAL_RCC_TIM6_FORCE_RESET +#define __TIM6_RELEASE_RESET __HAL_RCC_TIM6_RELEASE_RESET +#define __TIM7_CLK_DISABLE __HAL_RCC_TIM7_CLK_DISABLE +#define __TIM7_CLK_ENABLE __HAL_RCC_TIM7_CLK_ENABLE +#define __TIM7_CLK_SLEEP_DISABLE __HAL_RCC_TIM7_CLK_SLEEP_DISABLE +#define __TIM7_CLK_SLEEP_ENABLE __HAL_RCC_TIM7_CLK_SLEEP_ENABLE +#define __TIM7_FORCE_RESET __HAL_RCC_TIM7_FORCE_RESET +#define __TIM7_RELEASE_RESET __HAL_RCC_TIM7_RELEASE_RESET +#define __TIM8_CLK_DISABLE __HAL_RCC_TIM8_CLK_DISABLE +#define __TIM8_CLK_ENABLE __HAL_RCC_TIM8_CLK_ENABLE +#define __TIM8_CLK_SLEEP_DISABLE __HAL_RCC_TIM8_CLK_SLEEP_DISABLE +#define __TIM8_CLK_SLEEP_ENABLE __HAL_RCC_TIM8_CLK_SLEEP_ENABLE +#define __TIM8_FORCE_RESET __HAL_RCC_TIM8_FORCE_RESET +#define __TIM8_RELEASE_RESET __HAL_RCC_TIM8_RELEASE_RESET +#define __TIM9_CLK_DISABLE __HAL_RCC_TIM9_CLK_DISABLE +#define __TIM9_CLK_ENABLE __HAL_RCC_TIM9_CLK_ENABLE +#define __TIM9_FORCE_RESET __HAL_RCC_TIM9_FORCE_RESET +#define __TIM9_RELEASE_RESET __HAL_RCC_TIM9_RELEASE_RESET +#define __TSC_CLK_DISABLE __HAL_RCC_TSC_CLK_DISABLE +#define __TSC_CLK_ENABLE __HAL_RCC_TSC_CLK_ENABLE +#define __TSC_CLK_SLEEP_DISABLE __HAL_RCC_TSC_CLK_SLEEP_DISABLE +#define __TSC_CLK_SLEEP_ENABLE __HAL_RCC_TSC_CLK_SLEEP_ENABLE +#define __TSC_FORCE_RESET __HAL_RCC_TSC_FORCE_RESET +#define __TSC_RELEASE_RESET __HAL_RCC_TSC_RELEASE_RESET +#define __UART4_CLK_DISABLE __HAL_RCC_UART4_CLK_DISABLE +#define __UART4_CLK_ENABLE __HAL_RCC_UART4_CLK_ENABLE +#define __UART4_CLK_SLEEP_DISABLE __HAL_RCC_UART4_CLK_SLEEP_DISABLE +#define __UART4_CLK_SLEEP_ENABLE __HAL_RCC_UART4_CLK_SLEEP_ENABLE +#define __UART4_FORCE_RESET __HAL_RCC_UART4_FORCE_RESET +#define __UART4_RELEASE_RESET __HAL_RCC_UART4_RELEASE_RESET +#define __UART5_CLK_DISABLE __HAL_RCC_UART5_CLK_DISABLE +#define __UART5_CLK_ENABLE __HAL_RCC_UART5_CLK_ENABLE +#define __UART5_CLK_SLEEP_DISABLE __HAL_RCC_UART5_CLK_SLEEP_DISABLE +#define __UART5_CLK_SLEEP_ENABLE __HAL_RCC_UART5_CLK_SLEEP_ENABLE +#define __UART5_FORCE_RESET __HAL_RCC_UART5_FORCE_RESET +#define __UART5_RELEASE_RESET __HAL_RCC_UART5_RELEASE_RESET +#define __USART1_CLK_DISABLE __HAL_RCC_USART1_CLK_DISABLE +#define __USART1_CLK_ENABLE __HAL_RCC_USART1_CLK_ENABLE +#define __USART1_CLK_SLEEP_DISABLE __HAL_RCC_USART1_CLK_SLEEP_DISABLE +#define __USART1_CLK_SLEEP_ENABLE __HAL_RCC_USART1_CLK_SLEEP_ENABLE +#define __USART1_FORCE_RESET __HAL_RCC_USART1_FORCE_RESET +#define __USART1_RELEASE_RESET __HAL_RCC_USART1_RELEASE_RESET +#define __USART2_CLK_DISABLE __HAL_RCC_USART2_CLK_DISABLE +#define __USART2_CLK_ENABLE __HAL_RCC_USART2_CLK_ENABLE +#define __USART2_CLK_SLEEP_DISABLE __HAL_RCC_USART2_CLK_SLEEP_DISABLE +#define __USART2_CLK_SLEEP_ENABLE __HAL_RCC_USART2_CLK_SLEEP_ENABLE +#define __USART2_FORCE_RESET __HAL_RCC_USART2_FORCE_RESET +#define __USART2_RELEASE_RESET __HAL_RCC_USART2_RELEASE_RESET +#define __USART3_CLK_DISABLE __HAL_RCC_USART3_CLK_DISABLE +#define __USART3_CLK_ENABLE __HAL_RCC_USART3_CLK_ENABLE +#define __USART3_CLK_SLEEP_DISABLE __HAL_RCC_USART3_CLK_SLEEP_DISABLE +#define __USART3_CLK_SLEEP_ENABLE __HAL_RCC_USART3_CLK_SLEEP_ENABLE +#define __USART3_FORCE_RESET __HAL_RCC_USART3_FORCE_RESET +#define __USART3_RELEASE_RESET __HAL_RCC_USART3_RELEASE_RESET +#define __USART4_CLK_DISABLE __HAL_RCC_UART4_CLK_DISABLE +#define __USART4_CLK_ENABLE __HAL_RCC_UART4_CLK_ENABLE +#define __USART4_CLK_SLEEP_ENABLE __HAL_RCC_UART4_CLK_SLEEP_ENABLE +#define __USART4_CLK_SLEEP_DISABLE __HAL_RCC_UART4_CLK_SLEEP_DISABLE +#define __USART4_FORCE_RESET __HAL_RCC_UART4_FORCE_RESET +#define __USART4_RELEASE_RESET __HAL_RCC_UART4_RELEASE_RESET +#define __USART5_CLK_DISABLE __HAL_RCC_UART5_CLK_DISABLE +#define __USART5_CLK_ENABLE __HAL_RCC_UART5_CLK_ENABLE +#define __USART5_CLK_SLEEP_ENABLE __HAL_RCC_UART5_CLK_SLEEP_ENABLE +#define __USART5_CLK_SLEEP_DISABLE __HAL_RCC_UART5_CLK_SLEEP_DISABLE +#define __USART5_FORCE_RESET __HAL_RCC_UART5_FORCE_RESET +#define __USART5_RELEASE_RESET __HAL_RCC_UART5_RELEASE_RESET +#define __USART7_CLK_DISABLE __HAL_RCC_UART7_CLK_DISABLE +#define __USART7_CLK_ENABLE __HAL_RCC_UART7_CLK_ENABLE +#define __USART7_FORCE_RESET __HAL_RCC_UART7_FORCE_RESET +#define __USART7_RELEASE_RESET __HAL_RCC_UART7_RELEASE_RESET +#define __USART8_CLK_DISABLE __HAL_RCC_UART8_CLK_DISABLE +#define __USART8_CLK_ENABLE __HAL_RCC_UART8_CLK_ENABLE +#define __USART8_FORCE_RESET __HAL_RCC_UART8_FORCE_RESET +#define __USART8_RELEASE_RESET __HAL_RCC_UART8_RELEASE_RESET +#define __USB_CLK_DISABLE __HAL_RCC_USB_CLK_DISABLE +#define __USB_CLK_ENABLE __HAL_RCC_USB_CLK_ENABLE +#define __USB_FORCE_RESET __HAL_RCC_USB_FORCE_RESET +#define __USB_CLK_SLEEP_ENABLE __HAL_RCC_USB_CLK_SLEEP_ENABLE +#define __USB_CLK_SLEEP_DISABLE __HAL_RCC_USB_CLK_SLEEP_DISABLE +#define __USB_OTG_FS_CLK_DISABLE __HAL_RCC_USB_OTG_FS_CLK_DISABLE +#define __USB_OTG_FS_CLK_ENABLE __HAL_RCC_USB_OTG_FS_CLK_ENABLE +#define __USB_RELEASE_RESET __HAL_RCC_USB_RELEASE_RESET + +#if defined(STM32H7) +#define __HAL_RCC_WWDG_CLK_DISABLE __HAL_RCC_WWDG1_CLK_DISABLE +#define __HAL_RCC_WWDG_CLK_ENABLE __HAL_RCC_WWDG1_CLK_ENABLE +#define __HAL_RCC_WWDG_CLK_SLEEP_DISABLE __HAL_RCC_WWDG1_CLK_SLEEP_DISABLE +#define __HAL_RCC_WWDG_CLK_SLEEP_ENABLE __HAL_RCC_WWDG1_CLK_SLEEP_ENABLE + +#define __HAL_RCC_WWDG_FORCE_RESET ((void)0U) /* Not available on the STM32H7*/ +#define __HAL_RCC_WWDG_RELEASE_RESET ((void)0U) /* Not available on the STM32H7*/ + + +#define __HAL_RCC_WWDG_IS_CLK_ENABLED __HAL_RCC_WWDG1_IS_CLK_ENABLED +#define __HAL_RCC_WWDG_IS_CLK_DISABLED __HAL_RCC_WWDG1_IS_CLK_DISABLED +#endif + +#define __WWDG_CLK_DISABLE __HAL_RCC_WWDG_CLK_DISABLE +#define __WWDG_CLK_ENABLE __HAL_RCC_WWDG_CLK_ENABLE +#define __WWDG_CLK_SLEEP_DISABLE __HAL_RCC_WWDG_CLK_SLEEP_DISABLE +#define __WWDG_CLK_SLEEP_ENABLE __HAL_RCC_WWDG_CLK_SLEEP_ENABLE +#define __WWDG_FORCE_RESET __HAL_RCC_WWDG_FORCE_RESET +#define __WWDG_RELEASE_RESET __HAL_RCC_WWDG_RELEASE_RESET + +#define __TIM21_CLK_ENABLE __HAL_RCC_TIM21_CLK_ENABLE +#define __TIM21_CLK_DISABLE __HAL_RCC_TIM21_CLK_DISABLE +#define __TIM21_FORCE_RESET __HAL_RCC_TIM21_FORCE_RESET +#define __TIM21_RELEASE_RESET __HAL_RCC_TIM21_RELEASE_RESET +#define __TIM21_CLK_SLEEP_ENABLE __HAL_RCC_TIM21_CLK_SLEEP_ENABLE +#define __TIM21_CLK_SLEEP_DISABLE __HAL_RCC_TIM21_CLK_SLEEP_DISABLE +#define __TIM22_CLK_ENABLE __HAL_RCC_TIM22_CLK_ENABLE +#define __TIM22_CLK_DISABLE __HAL_RCC_TIM22_CLK_DISABLE +#define __TIM22_FORCE_RESET __HAL_RCC_TIM22_FORCE_RESET +#define __TIM22_RELEASE_RESET __HAL_RCC_TIM22_RELEASE_RESET +#define __TIM22_CLK_SLEEP_ENABLE __HAL_RCC_TIM22_CLK_SLEEP_ENABLE +#define __TIM22_CLK_SLEEP_DISABLE __HAL_RCC_TIM22_CLK_SLEEP_DISABLE +#define __CRS_CLK_DISABLE __HAL_RCC_CRS_CLK_DISABLE +#define __CRS_CLK_ENABLE __HAL_RCC_CRS_CLK_ENABLE +#define __CRS_CLK_SLEEP_DISABLE __HAL_RCC_CRS_CLK_SLEEP_DISABLE +#define __CRS_CLK_SLEEP_ENABLE __HAL_RCC_CRS_CLK_SLEEP_ENABLE +#define __CRS_FORCE_RESET __HAL_RCC_CRS_FORCE_RESET +#define __CRS_RELEASE_RESET __HAL_RCC_CRS_RELEASE_RESET +#define __RCC_BACKUPRESET_FORCE __HAL_RCC_BACKUPRESET_FORCE +#define __RCC_BACKUPRESET_RELEASE __HAL_RCC_BACKUPRESET_RELEASE + +#define __USB_OTG_FS_FORCE_RESET __HAL_RCC_USB_OTG_FS_FORCE_RESET +#define __USB_OTG_FS_RELEASE_RESET __HAL_RCC_USB_OTG_FS_RELEASE_RESET +#define __USB_OTG_FS_CLK_SLEEP_ENABLE __HAL_RCC_USB_OTG_FS_CLK_SLEEP_ENABLE +#define __USB_OTG_FS_CLK_SLEEP_DISABLE __HAL_RCC_USB_OTG_FS_CLK_SLEEP_DISABLE +#define __USB_OTG_HS_CLK_DISABLE __HAL_RCC_USB_OTG_HS_CLK_DISABLE +#define __USB_OTG_HS_CLK_ENABLE __HAL_RCC_USB_OTG_HS_CLK_ENABLE +#define __USB_OTG_HS_ULPI_CLK_ENABLE __HAL_RCC_USB_OTG_HS_ULPI_CLK_ENABLE +#define __USB_OTG_HS_ULPI_CLK_DISABLE __HAL_RCC_USB_OTG_HS_ULPI_CLK_DISABLE +#define __TIM9_CLK_SLEEP_ENABLE __HAL_RCC_TIM9_CLK_SLEEP_ENABLE +#define __TIM9_CLK_SLEEP_DISABLE __HAL_RCC_TIM9_CLK_SLEEP_DISABLE +#define __TIM10_CLK_SLEEP_ENABLE __HAL_RCC_TIM10_CLK_SLEEP_ENABLE +#define __TIM10_CLK_SLEEP_DISABLE __HAL_RCC_TIM10_CLK_SLEEP_DISABLE +#define __TIM11_CLK_SLEEP_ENABLE __HAL_RCC_TIM11_CLK_SLEEP_ENABLE +#define __TIM11_CLK_SLEEP_DISABLE __HAL_RCC_TIM11_CLK_SLEEP_DISABLE +#define __ETHMACPTP_CLK_SLEEP_ENABLE __HAL_RCC_ETHMACPTP_CLK_SLEEP_ENABLE +#define __ETHMACPTP_CLK_SLEEP_DISABLE __HAL_RCC_ETHMACPTP_CLK_SLEEP_DISABLE +#define __ETHMACPTP_CLK_ENABLE __HAL_RCC_ETHMACPTP_CLK_ENABLE +#define __ETHMACPTP_CLK_DISABLE __HAL_RCC_ETHMACPTP_CLK_DISABLE +#define __HASH_CLK_ENABLE __HAL_RCC_HASH_CLK_ENABLE +#define __HASH_FORCE_RESET __HAL_RCC_HASH_FORCE_RESET +#define __HASH_RELEASE_RESET __HAL_RCC_HASH_RELEASE_RESET +#define __HASH_CLK_SLEEP_ENABLE __HAL_RCC_HASH_CLK_SLEEP_ENABLE +#define __HASH_CLK_SLEEP_DISABLE __HAL_RCC_HASH_CLK_SLEEP_DISABLE +#define __HASH_CLK_DISABLE __HAL_RCC_HASH_CLK_DISABLE +#define __SPI5_CLK_ENABLE __HAL_RCC_SPI5_CLK_ENABLE +#define __SPI5_CLK_DISABLE __HAL_RCC_SPI5_CLK_DISABLE +#define __SPI5_FORCE_RESET __HAL_RCC_SPI5_FORCE_RESET +#define __SPI5_RELEASE_RESET __HAL_RCC_SPI5_RELEASE_RESET +#define __SPI5_CLK_SLEEP_ENABLE __HAL_RCC_SPI5_CLK_SLEEP_ENABLE +#define __SPI5_CLK_SLEEP_DISABLE __HAL_RCC_SPI5_CLK_SLEEP_DISABLE +#define __SPI6_CLK_ENABLE __HAL_RCC_SPI6_CLK_ENABLE +#define __SPI6_CLK_DISABLE __HAL_RCC_SPI6_CLK_DISABLE +#define __SPI6_FORCE_RESET __HAL_RCC_SPI6_FORCE_RESET +#define __SPI6_RELEASE_RESET __HAL_RCC_SPI6_RELEASE_RESET +#define __SPI6_CLK_SLEEP_ENABLE __HAL_RCC_SPI6_CLK_SLEEP_ENABLE +#define __SPI6_CLK_SLEEP_DISABLE __HAL_RCC_SPI6_CLK_SLEEP_DISABLE +#define __LTDC_CLK_ENABLE __HAL_RCC_LTDC_CLK_ENABLE +#define __LTDC_CLK_DISABLE __HAL_RCC_LTDC_CLK_DISABLE +#define __LTDC_FORCE_RESET __HAL_RCC_LTDC_FORCE_RESET +#define __LTDC_RELEASE_RESET __HAL_RCC_LTDC_RELEASE_RESET +#define __LTDC_CLK_SLEEP_ENABLE __HAL_RCC_LTDC_CLK_SLEEP_ENABLE +#define __ETHMAC_CLK_SLEEP_ENABLE __HAL_RCC_ETHMAC_CLK_SLEEP_ENABLE +#define __ETHMAC_CLK_SLEEP_DISABLE __HAL_RCC_ETHMAC_CLK_SLEEP_DISABLE +#define __ETHMACTX_CLK_SLEEP_ENABLE __HAL_RCC_ETHMACTX_CLK_SLEEP_ENABLE +#define __ETHMACTX_CLK_SLEEP_DISABLE __HAL_RCC_ETHMACTX_CLK_SLEEP_DISABLE +#define __ETHMACRX_CLK_SLEEP_ENABLE __HAL_RCC_ETHMACRX_CLK_SLEEP_ENABLE +#define __ETHMACRX_CLK_SLEEP_DISABLE __HAL_RCC_ETHMACRX_CLK_SLEEP_DISABLE +#define __TIM12_CLK_SLEEP_ENABLE __HAL_RCC_TIM12_CLK_SLEEP_ENABLE +#define __TIM12_CLK_SLEEP_DISABLE __HAL_RCC_TIM12_CLK_SLEEP_DISABLE +#define __TIM13_CLK_SLEEP_ENABLE __HAL_RCC_TIM13_CLK_SLEEP_ENABLE +#define __TIM13_CLK_SLEEP_DISABLE __HAL_RCC_TIM13_CLK_SLEEP_DISABLE +#define __TIM14_CLK_SLEEP_ENABLE __HAL_RCC_TIM14_CLK_SLEEP_ENABLE +#define __TIM14_CLK_SLEEP_DISABLE __HAL_RCC_TIM14_CLK_SLEEP_DISABLE +#define __BKPSRAM_CLK_ENABLE __HAL_RCC_BKPSRAM_CLK_ENABLE +#define __BKPSRAM_CLK_DISABLE __HAL_RCC_BKPSRAM_CLK_DISABLE +#define __BKPSRAM_CLK_SLEEP_ENABLE __HAL_RCC_BKPSRAM_CLK_SLEEP_ENABLE +#define __BKPSRAM_CLK_SLEEP_DISABLE __HAL_RCC_BKPSRAM_CLK_SLEEP_DISABLE +#define __CCMDATARAMEN_CLK_ENABLE __HAL_RCC_CCMDATARAMEN_CLK_ENABLE +#define __CCMDATARAMEN_CLK_DISABLE __HAL_RCC_CCMDATARAMEN_CLK_DISABLE +#define __USART6_CLK_ENABLE __HAL_RCC_USART6_CLK_ENABLE +#define __USART6_CLK_DISABLE __HAL_RCC_USART6_CLK_DISABLE +#define __USART6_FORCE_RESET __HAL_RCC_USART6_FORCE_RESET +#define __USART6_RELEASE_RESET __HAL_RCC_USART6_RELEASE_RESET +#define __USART6_CLK_SLEEP_ENABLE __HAL_RCC_USART6_CLK_SLEEP_ENABLE +#define __USART6_CLK_SLEEP_DISABLE __HAL_RCC_USART6_CLK_SLEEP_DISABLE +#define __SPI4_CLK_ENABLE __HAL_RCC_SPI4_CLK_ENABLE +#define __SPI4_CLK_DISABLE __HAL_RCC_SPI4_CLK_DISABLE +#define __SPI4_FORCE_RESET __HAL_RCC_SPI4_FORCE_RESET +#define __SPI4_RELEASE_RESET __HAL_RCC_SPI4_RELEASE_RESET +#define __SPI4_CLK_SLEEP_ENABLE __HAL_RCC_SPI4_CLK_SLEEP_ENABLE +#define __SPI4_CLK_SLEEP_DISABLE __HAL_RCC_SPI4_CLK_SLEEP_DISABLE +#define __GPIOI_CLK_ENABLE __HAL_RCC_GPIOI_CLK_ENABLE +#define __GPIOI_CLK_DISABLE __HAL_RCC_GPIOI_CLK_DISABLE +#define __GPIOI_FORCE_RESET __HAL_RCC_GPIOI_FORCE_RESET +#define __GPIOI_RELEASE_RESET __HAL_RCC_GPIOI_RELEASE_RESET +#define __GPIOI_CLK_SLEEP_ENABLE __HAL_RCC_GPIOI_CLK_SLEEP_ENABLE +#define __GPIOI_CLK_SLEEP_DISABLE __HAL_RCC_GPIOI_CLK_SLEEP_DISABLE +#define __GPIOJ_CLK_ENABLE __HAL_RCC_GPIOJ_CLK_ENABLE +#define __GPIOJ_CLK_DISABLE __HAL_RCC_GPIOJ_CLK_DISABLE +#define __GPIOJ_FORCE_RESET __HAL_RCC_GPIOJ_FORCE_RESET +#define __GPIOJ_RELEASE_RESET __HAL_RCC_GPIOJ_RELEASE_RESET +#define __GPIOJ_CLK_SLEEP_ENABLE __HAL_RCC_GPIOJ_CLK_SLEEP_ENABLE +#define __GPIOJ_CLK_SLEEP_DISABLE __HAL_RCC_GPIOJ_CLK_SLEEP_DISABLE +#define __GPIOK_CLK_ENABLE __HAL_RCC_GPIOK_CLK_ENABLE +#define __GPIOK_CLK_DISABLE __HAL_RCC_GPIOK_CLK_DISABLE +#define __GPIOK_RELEASE_RESET __HAL_RCC_GPIOK_RELEASE_RESET +#define __GPIOK_CLK_SLEEP_ENABLE __HAL_RCC_GPIOK_CLK_SLEEP_ENABLE +#define __GPIOK_CLK_SLEEP_DISABLE __HAL_RCC_GPIOK_CLK_SLEEP_DISABLE +#define __ETH_CLK_ENABLE __HAL_RCC_ETH_CLK_ENABLE +#define __ETH_CLK_DISABLE __HAL_RCC_ETH_CLK_DISABLE +#define __DCMI_CLK_ENABLE __HAL_RCC_DCMI_CLK_ENABLE +#define __DCMI_CLK_DISABLE __HAL_RCC_DCMI_CLK_DISABLE +#define __DCMI_FORCE_RESET __HAL_RCC_DCMI_FORCE_RESET +#define __DCMI_RELEASE_RESET __HAL_RCC_DCMI_RELEASE_RESET +#define __DCMI_CLK_SLEEP_ENABLE __HAL_RCC_DCMI_CLK_SLEEP_ENABLE +#define __DCMI_CLK_SLEEP_DISABLE __HAL_RCC_DCMI_CLK_SLEEP_DISABLE +#define __UART7_CLK_ENABLE __HAL_RCC_UART7_CLK_ENABLE +#define __UART7_CLK_DISABLE __HAL_RCC_UART7_CLK_DISABLE +#define __UART7_RELEASE_RESET __HAL_RCC_UART7_RELEASE_RESET +#define __UART7_FORCE_RESET __HAL_RCC_UART7_FORCE_RESET +#define __UART7_CLK_SLEEP_ENABLE __HAL_RCC_UART7_CLK_SLEEP_ENABLE +#define __UART7_CLK_SLEEP_DISABLE __HAL_RCC_UART7_CLK_SLEEP_DISABLE +#define __UART8_CLK_ENABLE __HAL_RCC_UART8_CLK_ENABLE +#define __UART8_CLK_DISABLE __HAL_RCC_UART8_CLK_DISABLE +#define __UART8_FORCE_RESET __HAL_RCC_UART8_FORCE_RESET +#define __UART8_RELEASE_RESET __HAL_RCC_UART8_RELEASE_RESET +#define __UART8_CLK_SLEEP_ENABLE __HAL_RCC_UART8_CLK_SLEEP_ENABLE +#define __UART8_CLK_SLEEP_DISABLE __HAL_RCC_UART8_CLK_SLEEP_DISABLE +#define __OTGHS_CLK_SLEEP_ENABLE __HAL_RCC_USB_OTG_HS_CLK_SLEEP_ENABLE +#define __OTGHS_CLK_SLEEP_DISABLE __HAL_RCC_USB_OTG_HS_CLK_SLEEP_DISABLE +#define __OTGHS_FORCE_RESET __HAL_RCC_USB_OTG_HS_FORCE_RESET +#define __OTGHS_RELEASE_RESET __HAL_RCC_USB_OTG_HS_RELEASE_RESET +#define __OTGHSULPI_CLK_SLEEP_ENABLE __HAL_RCC_USB_OTG_HS_ULPI_CLK_SLEEP_ENABLE +#define __OTGHSULPI_CLK_SLEEP_DISABLE __HAL_RCC_USB_OTG_HS_ULPI_CLK_SLEEP_DISABLE +#define __HAL_RCC_OTGHS_CLK_SLEEP_ENABLE __HAL_RCC_USB_OTG_HS_CLK_SLEEP_ENABLE +#define __HAL_RCC_OTGHS_CLK_SLEEP_DISABLE __HAL_RCC_USB_OTG_HS_CLK_SLEEP_DISABLE +#define __HAL_RCC_OTGHS_IS_CLK_SLEEP_ENABLED __HAL_RCC_USB_OTG_HS_IS_CLK_SLEEP_ENABLED +#define __HAL_RCC_OTGHS_IS_CLK_SLEEP_DISABLED __HAL_RCC_USB_OTG_HS_IS_CLK_SLEEP_DISABLED +#define __HAL_RCC_OTGHS_FORCE_RESET __HAL_RCC_USB_OTG_HS_FORCE_RESET +#define __HAL_RCC_OTGHS_RELEASE_RESET __HAL_RCC_USB_OTG_HS_RELEASE_RESET +#define __HAL_RCC_OTGHSULPI_CLK_SLEEP_ENABLE __HAL_RCC_USB_OTG_HS_ULPI_CLK_SLEEP_ENABLE +#define __HAL_RCC_OTGHSULPI_CLK_SLEEP_DISABLE __HAL_RCC_USB_OTG_HS_ULPI_CLK_SLEEP_DISABLE +#define __HAL_RCC_OTGHSULPI_IS_CLK_SLEEP_ENABLED __HAL_RCC_USB_OTG_HS_ULPI_IS_CLK_SLEEP_ENABLED +#define __HAL_RCC_OTGHSULPI_IS_CLK_SLEEP_DISABLED __HAL_RCC_USB_OTG_HS_ULPI_IS_CLK_SLEEP_DISABLED +#define __SRAM3_CLK_SLEEP_ENABLE __HAL_RCC_SRAM3_CLK_SLEEP_ENABLE +#define __CAN2_CLK_SLEEP_ENABLE __HAL_RCC_CAN2_CLK_SLEEP_ENABLE +#define __CAN2_CLK_SLEEP_DISABLE __HAL_RCC_CAN2_CLK_SLEEP_DISABLE +#define __DAC_CLK_SLEEP_ENABLE __HAL_RCC_DAC_CLK_SLEEP_ENABLE +#define __DAC_CLK_SLEEP_DISABLE __HAL_RCC_DAC_CLK_SLEEP_DISABLE +#define __ADC2_CLK_SLEEP_ENABLE __HAL_RCC_ADC2_CLK_SLEEP_ENABLE +#define __ADC2_CLK_SLEEP_DISABLE __HAL_RCC_ADC2_CLK_SLEEP_DISABLE +#define __ADC3_CLK_SLEEP_ENABLE __HAL_RCC_ADC3_CLK_SLEEP_ENABLE +#define __ADC3_CLK_SLEEP_DISABLE __HAL_RCC_ADC3_CLK_SLEEP_DISABLE +#define __FSMC_FORCE_RESET __HAL_RCC_FSMC_FORCE_RESET +#define __FSMC_RELEASE_RESET __HAL_RCC_FSMC_RELEASE_RESET +#define __FSMC_CLK_SLEEP_ENABLE __HAL_RCC_FSMC_CLK_SLEEP_ENABLE +#define __FSMC_CLK_SLEEP_DISABLE __HAL_RCC_FSMC_CLK_SLEEP_DISABLE +#define __SDIO_FORCE_RESET __HAL_RCC_SDIO_FORCE_RESET +#define __SDIO_RELEASE_RESET __HAL_RCC_SDIO_RELEASE_RESET +#define __SDIO_CLK_SLEEP_DISABLE __HAL_RCC_SDIO_CLK_SLEEP_DISABLE +#define __SDIO_CLK_SLEEP_ENABLE __HAL_RCC_SDIO_CLK_SLEEP_ENABLE +#define __DMA2D_CLK_ENABLE __HAL_RCC_DMA2D_CLK_ENABLE +#define __DMA2D_CLK_DISABLE __HAL_RCC_DMA2D_CLK_DISABLE +#define __DMA2D_FORCE_RESET __HAL_RCC_DMA2D_FORCE_RESET +#define __DMA2D_RELEASE_RESET __HAL_RCC_DMA2D_RELEASE_RESET +#define __DMA2D_CLK_SLEEP_ENABLE __HAL_RCC_DMA2D_CLK_SLEEP_ENABLE +#define __DMA2D_CLK_SLEEP_DISABLE __HAL_RCC_DMA2D_CLK_SLEEP_DISABLE + +/* alias define maintained for legacy */ +#define __HAL_RCC_OTGFS_FORCE_RESET __HAL_RCC_USB_OTG_FS_FORCE_RESET +#define __HAL_RCC_OTGFS_RELEASE_RESET __HAL_RCC_USB_OTG_FS_RELEASE_RESET + +#define __ADC12_CLK_ENABLE __HAL_RCC_ADC12_CLK_ENABLE +#define __ADC12_CLK_DISABLE __HAL_RCC_ADC12_CLK_DISABLE +#define __ADC34_CLK_ENABLE __HAL_RCC_ADC34_CLK_ENABLE +#define __ADC34_CLK_DISABLE __HAL_RCC_ADC34_CLK_DISABLE +#define __DAC2_CLK_ENABLE __HAL_RCC_DAC2_CLK_ENABLE +#define __DAC2_CLK_DISABLE __HAL_RCC_DAC2_CLK_DISABLE +#define __TIM18_CLK_ENABLE __HAL_RCC_TIM18_CLK_ENABLE +#define __TIM18_CLK_DISABLE __HAL_RCC_TIM18_CLK_DISABLE +#define __TIM19_CLK_ENABLE __HAL_RCC_TIM19_CLK_ENABLE +#define __TIM19_CLK_DISABLE __HAL_RCC_TIM19_CLK_DISABLE +#define __TIM20_CLK_ENABLE __HAL_RCC_TIM20_CLK_ENABLE +#define __TIM20_CLK_DISABLE __HAL_RCC_TIM20_CLK_DISABLE +#define __HRTIM1_CLK_ENABLE __HAL_RCC_HRTIM1_CLK_ENABLE +#define __HRTIM1_CLK_DISABLE __HAL_RCC_HRTIM1_CLK_DISABLE +#define __SDADC1_CLK_ENABLE __HAL_RCC_SDADC1_CLK_ENABLE +#define __SDADC2_CLK_ENABLE __HAL_RCC_SDADC2_CLK_ENABLE +#define __SDADC3_CLK_ENABLE __HAL_RCC_SDADC3_CLK_ENABLE +#define __SDADC1_CLK_DISABLE __HAL_RCC_SDADC1_CLK_DISABLE +#define __SDADC2_CLK_DISABLE __HAL_RCC_SDADC2_CLK_DISABLE +#define __SDADC3_CLK_DISABLE __HAL_RCC_SDADC3_CLK_DISABLE + +#define __ADC12_FORCE_RESET __HAL_RCC_ADC12_FORCE_RESET +#define __ADC12_RELEASE_RESET __HAL_RCC_ADC12_RELEASE_RESET +#define __ADC34_FORCE_RESET __HAL_RCC_ADC34_FORCE_RESET +#define __ADC34_RELEASE_RESET __HAL_RCC_ADC34_RELEASE_RESET +#define __DAC2_FORCE_RESET __HAL_RCC_DAC2_FORCE_RESET +#define __DAC2_RELEASE_RESET __HAL_RCC_DAC2_RELEASE_RESET +#define __TIM18_FORCE_RESET __HAL_RCC_TIM18_FORCE_RESET +#define __TIM18_RELEASE_RESET __HAL_RCC_TIM18_RELEASE_RESET +#define __TIM19_FORCE_RESET __HAL_RCC_TIM19_FORCE_RESET +#define __TIM19_RELEASE_RESET __HAL_RCC_TIM19_RELEASE_RESET +#define __TIM20_FORCE_RESET __HAL_RCC_TIM20_FORCE_RESET +#define __TIM20_RELEASE_RESET __HAL_RCC_TIM20_RELEASE_RESET +#define __HRTIM1_FORCE_RESET __HAL_RCC_HRTIM1_FORCE_RESET +#define __HRTIM1_RELEASE_RESET __HAL_RCC_HRTIM1_RELEASE_RESET +#define __SDADC1_FORCE_RESET __HAL_RCC_SDADC1_FORCE_RESET +#define __SDADC2_FORCE_RESET __HAL_RCC_SDADC2_FORCE_RESET +#define __SDADC3_FORCE_RESET __HAL_RCC_SDADC3_FORCE_RESET +#define __SDADC1_RELEASE_RESET __HAL_RCC_SDADC1_RELEASE_RESET +#define __SDADC2_RELEASE_RESET __HAL_RCC_SDADC2_RELEASE_RESET +#define __SDADC3_RELEASE_RESET __HAL_RCC_SDADC3_RELEASE_RESET + +#define __ADC1_IS_CLK_ENABLED __HAL_RCC_ADC1_IS_CLK_ENABLED +#define __ADC1_IS_CLK_DISABLED __HAL_RCC_ADC1_IS_CLK_DISABLED +#define __ADC12_IS_CLK_ENABLED __HAL_RCC_ADC12_IS_CLK_ENABLED +#define __ADC12_IS_CLK_DISABLED __HAL_RCC_ADC12_IS_CLK_DISABLED +#define __ADC34_IS_CLK_ENABLED __HAL_RCC_ADC34_IS_CLK_ENABLED +#define __ADC34_IS_CLK_DISABLED __HAL_RCC_ADC34_IS_CLK_DISABLED +#define __CEC_IS_CLK_ENABLED __HAL_RCC_CEC_IS_CLK_ENABLED +#define __CEC_IS_CLK_DISABLED __HAL_RCC_CEC_IS_CLK_DISABLED +#define __CRC_IS_CLK_ENABLED __HAL_RCC_CRC_IS_CLK_ENABLED +#define __CRC_IS_CLK_DISABLED __HAL_RCC_CRC_IS_CLK_DISABLED +#define __DAC1_IS_CLK_ENABLED __HAL_RCC_DAC1_IS_CLK_ENABLED +#define __DAC1_IS_CLK_DISABLED __HAL_RCC_DAC1_IS_CLK_DISABLED +#define __DAC2_IS_CLK_ENABLED __HAL_RCC_DAC2_IS_CLK_ENABLED +#define __DAC2_IS_CLK_DISABLED __HAL_RCC_DAC2_IS_CLK_DISABLED +#define __DMA1_IS_CLK_ENABLED __HAL_RCC_DMA1_IS_CLK_ENABLED +#define __DMA1_IS_CLK_DISABLED __HAL_RCC_DMA1_IS_CLK_DISABLED +#define __DMA2_IS_CLK_ENABLED __HAL_RCC_DMA2_IS_CLK_ENABLED +#define __DMA2_IS_CLK_DISABLED __HAL_RCC_DMA2_IS_CLK_DISABLED +#define __FLITF_IS_CLK_ENABLED __HAL_RCC_FLITF_IS_CLK_ENABLED +#define __FLITF_IS_CLK_DISABLED __HAL_RCC_FLITF_IS_CLK_DISABLED +#define __FMC_IS_CLK_ENABLED __HAL_RCC_FMC_IS_CLK_ENABLED +#define __FMC_IS_CLK_DISABLED __HAL_RCC_FMC_IS_CLK_DISABLED +#define __GPIOA_IS_CLK_ENABLED __HAL_RCC_GPIOA_IS_CLK_ENABLED +#define __GPIOA_IS_CLK_DISABLED __HAL_RCC_GPIOA_IS_CLK_DISABLED +#define __GPIOB_IS_CLK_ENABLED __HAL_RCC_GPIOB_IS_CLK_ENABLED +#define __GPIOB_IS_CLK_DISABLED __HAL_RCC_GPIOB_IS_CLK_DISABLED +#define __GPIOC_IS_CLK_ENABLED __HAL_RCC_GPIOC_IS_CLK_ENABLED +#define __GPIOC_IS_CLK_DISABLED __HAL_RCC_GPIOC_IS_CLK_DISABLED +#define __GPIOD_IS_CLK_ENABLED __HAL_RCC_GPIOD_IS_CLK_ENABLED +#define __GPIOD_IS_CLK_DISABLED __HAL_RCC_GPIOD_IS_CLK_DISABLED +#define __GPIOE_IS_CLK_ENABLED __HAL_RCC_GPIOE_IS_CLK_ENABLED +#define __GPIOE_IS_CLK_DISABLED __HAL_RCC_GPIOE_IS_CLK_DISABLED +#define __GPIOF_IS_CLK_ENABLED __HAL_RCC_GPIOF_IS_CLK_ENABLED +#define __GPIOF_IS_CLK_DISABLED __HAL_RCC_GPIOF_IS_CLK_DISABLED +#define __GPIOG_IS_CLK_ENABLED __HAL_RCC_GPIOG_IS_CLK_ENABLED +#define __GPIOG_IS_CLK_DISABLED __HAL_RCC_GPIOG_IS_CLK_DISABLED +#define __GPIOH_IS_CLK_ENABLED __HAL_RCC_GPIOH_IS_CLK_ENABLED +#define __GPIOH_IS_CLK_DISABLED __HAL_RCC_GPIOH_IS_CLK_DISABLED +#define __HRTIM1_IS_CLK_ENABLED __HAL_RCC_HRTIM1_IS_CLK_ENABLED +#define __HRTIM1_IS_CLK_DISABLED __HAL_RCC_HRTIM1_IS_CLK_DISABLED +#define __I2C1_IS_CLK_ENABLED __HAL_RCC_I2C1_IS_CLK_ENABLED +#define __I2C1_IS_CLK_DISABLED __HAL_RCC_I2C1_IS_CLK_DISABLED +#define __I2C2_IS_CLK_ENABLED __HAL_RCC_I2C2_IS_CLK_ENABLED +#define __I2C2_IS_CLK_DISABLED __HAL_RCC_I2C2_IS_CLK_DISABLED +#define __I2C3_IS_CLK_ENABLED __HAL_RCC_I2C3_IS_CLK_ENABLED +#define __I2C3_IS_CLK_DISABLED __HAL_RCC_I2C3_IS_CLK_DISABLED +#define __PWR_IS_CLK_ENABLED __HAL_RCC_PWR_IS_CLK_ENABLED +#define __PWR_IS_CLK_DISABLED __HAL_RCC_PWR_IS_CLK_DISABLED +#define __SYSCFG_IS_CLK_ENABLED __HAL_RCC_SYSCFG_IS_CLK_ENABLED +#define __SYSCFG_IS_CLK_DISABLED __HAL_RCC_SYSCFG_IS_CLK_DISABLED +#define __SPI1_IS_CLK_ENABLED __HAL_RCC_SPI1_IS_CLK_ENABLED +#define __SPI1_IS_CLK_DISABLED __HAL_RCC_SPI1_IS_CLK_DISABLED +#define __SPI2_IS_CLK_ENABLED __HAL_RCC_SPI2_IS_CLK_ENABLED +#define __SPI2_IS_CLK_DISABLED __HAL_RCC_SPI2_IS_CLK_DISABLED +#define __SPI3_IS_CLK_ENABLED __HAL_RCC_SPI3_IS_CLK_ENABLED +#define __SPI3_IS_CLK_DISABLED __HAL_RCC_SPI3_IS_CLK_DISABLED +#define __SPI4_IS_CLK_ENABLED __HAL_RCC_SPI4_IS_CLK_ENABLED +#define __SPI4_IS_CLK_DISABLED __HAL_RCC_SPI4_IS_CLK_DISABLED +#define __SDADC1_IS_CLK_ENABLED __HAL_RCC_SDADC1_IS_CLK_ENABLED +#define __SDADC1_IS_CLK_DISABLED __HAL_RCC_SDADC1_IS_CLK_DISABLED +#define __SDADC2_IS_CLK_ENABLED __HAL_RCC_SDADC2_IS_CLK_ENABLED +#define __SDADC2_IS_CLK_DISABLED __HAL_RCC_SDADC2_IS_CLK_DISABLED +#define __SDADC3_IS_CLK_ENABLED __HAL_RCC_SDADC3_IS_CLK_ENABLED +#define __SDADC3_IS_CLK_DISABLED __HAL_RCC_SDADC3_IS_CLK_DISABLED +#define __SRAM_IS_CLK_ENABLED __HAL_RCC_SRAM_IS_CLK_ENABLED +#define __SRAM_IS_CLK_DISABLED __HAL_RCC_SRAM_IS_CLK_DISABLED +#define __TIM1_IS_CLK_ENABLED __HAL_RCC_TIM1_IS_CLK_ENABLED +#define __TIM1_IS_CLK_DISABLED __HAL_RCC_TIM1_IS_CLK_DISABLED +#define __TIM2_IS_CLK_ENABLED __HAL_RCC_TIM2_IS_CLK_ENABLED +#define __TIM2_IS_CLK_DISABLED __HAL_RCC_TIM2_IS_CLK_DISABLED +#define __TIM3_IS_CLK_ENABLED __HAL_RCC_TIM3_IS_CLK_ENABLED +#define __TIM3_IS_CLK_DISABLED __HAL_RCC_TIM3_IS_CLK_DISABLED +#define __TIM4_IS_CLK_ENABLED __HAL_RCC_TIM4_IS_CLK_ENABLED +#define __TIM4_IS_CLK_DISABLED __HAL_RCC_TIM4_IS_CLK_DISABLED +#define __TIM5_IS_CLK_ENABLED __HAL_RCC_TIM5_IS_CLK_ENABLED +#define __TIM5_IS_CLK_DISABLED __HAL_RCC_TIM5_IS_CLK_DISABLED +#define __TIM6_IS_CLK_ENABLED __HAL_RCC_TIM6_IS_CLK_ENABLED +#define __TIM6_IS_CLK_DISABLED __HAL_RCC_TIM6_IS_CLK_DISABLED +#define __TIM7_IS_CLK_ENABLED __HAL_RCC_TIM7_IS_CLK_ENABLED +#define __TIM7_IS_CLK_DISABLED __HAL_RCC_TIM7_IS_CLK_DISABLED +#define __TIM8_IS_CLK_ENABLED __HAL_RCC_TIM8_IS_CLK_ENABLED +#define __TIM8_IS_CLK_DISABLED __HAL_RCC_TIM8_IS_CLK_DISABLED +#define __TIM12_IS_CLK_ENABLED __HAL_RCC_TIM12_IS_CLK_ENABLED +#define __TIM12_IS_CLK_DISABLED __HAL_RCC_TIM12_IS_CLK_DISABLED +#define __TIM13_IS_CLK_ENABLED __HAL_RCC_TIM13_IS_CLK_ENABLED +#define __TIM13_IS_CLK_DISABLED __HAL_RCC_TIM13_IS_CLK_DISABLED +#define __TIM14_IS_CLK_ENABLED __HAL_RCC_TIM14_IS_CLK_ENABLED +#define __TIM14_IS_CLK_DISABLED __HAL_RCC_TIM14_IS_CLK_DISABLED +#define __TIM15_IS_CLK_ENABLED __HAL_RCC_TIM15_IS_CLK_ENABLED +#define __TIM15_IS_CLK_DISABLED __HAL_RCC_TIM15_IS_CLK_DISABLED +#define __TIM16_IS_CLK_ENABLED __HAL_RCC_TIM16_IS_CLK_ENABLED +#define __TIM16_IS_CLK_DISABLED __HAL_RCC_TIM16_IS_CLK_DISABLED +#define __TIM17_IS_CLK_ENABLED __HAL_RCC_TIM17_IS_CLK_ENABLED +#define __TIM17_IS_CLK_DISABLED __HAL_RCC_TIM17_IS_CLK_DISABLED +#define __TIM18_IS_CLK_ENABLED __HAL_RCC_TIM18_IS_CLK_ENABLED +#define __TIM18_IS_CLK_DISABLED __HAL_RCC_TIM18_IS_CLK_DISABLED +#define __TIM19_IS_CLK_ENABLED __HAL_RCC_TIM19_IS_CLK_ENABLED +#define __TIM19_IS_CLK_DISABLED __HAL_RCC_TIM19_IS_CLK_DISABLED +#define __TIM20_IS_CLK_ENABLED __HAL_RCC_TIM20_IS_CLK_ENABLED +#define __TIM20_IS_CLK_DISABLED __HAL_RCC_TIM20_IS_CLK_DISABLED +#define __TSC_IS_CLK_ENABLED __HAL_RCC_TSC_IS_CLK_ENABLED +#define __TSC_IS_CLK_DISABLED __HAL_RCC_TSC_IS_CLK_DISABLED +#define __UART4_IS_CLK_ENABLED __HAL_RCC_UART4_IS_CLK_ENABLED +#define __UART4_IS_CLK_DISABLED __HAL_RCC_UART4_IS_CLK_DISABLED +#define __UART5_IS_CLK_ENABLED __HAL_RCC_UART5_IS_CLK_ENABLED +#define __UART5_IS_CLK_DISABLED __HAL_RCC_UART5_IS_CLK_DISABLED +#define __USART1_IS_CLK_ENABLED __HAL_RCC_USART1_IS_CLK_ENABLED +#define __USART1_IS_CLK_DISABLED __HAL_RCC_USART1_IS_CLK_DISABLED +#define __USART2_IS_CLK_ENABLED __HAL_RCC_USART2_IS_CLK_ENABLED +#define __USART2_IS_CLK_DISABLED __HAL_RCC_USART2_IS_CLK_DISABLED +#define __USART3_IS_CLK_ENABLED __HAL_RCC_USART3_IS_CLK_ENABLED +#define __USART3_IS_CLK_DISABLED __HAL_RCC_USART3_IS_CLK_DISABLED +#define __USB_IS_CLK_ENABLED __HAL_RCC_USB_IS_CLK_ENABLED +#define __USB_IS_CLK_DISABLED __HAL_RCC_USB_IS_CLK_DISABLED +#define __WWDG_IS_CLK_ENABLED __HAL_RCC_WWDG_IS_CLK_ENABLED +#define __WWDG_IS_CLK_DISABLED __HAL_RCC_WWDG_IS_CLK_DISABLED + +#if defined(STM32L1) +#define __HAL_RCC_CRYP_CLK_DISABLE __HAL_RCC_AES_CLK_DISABLE +#define __HAL_RCC_CRYP_CLK_ENABLE __HAL_RCC_AES_CLK_ENABLE +#define __HAL_RCC_CRYP_CLK_SLEEP_DISABLE __HAL_RCC_AES_CLK_SLEEP_DISABLE +#define __HAL_RCC_CRYP_CLK_SLEEP_ENABLE __HAL_RCC_AES_CLK_SLEEP_ENABLE +#define __HAL_RCC_CRYP_FORCE_RESET __HAL_RCC_AES_FORCE_RESET +#define __HAL_RCC_CRYP_RELEASE_RESET __HAL_RCC_AES_RELEASE_RESET +#endif /* STM32L1 */ + +#if defined(STM32F4) +#define __HAL_RCC_SDMMC1_FORCE_RESET __HAL_RCC_SDIO_FORCE_RESET +#define __HAL_RCC_SDMMC1_RELEASE_RESET __HAL_RCC_SDIO_RELEASE_RESET +#define __HAL_RCC_SDMMC1_CLK_SLEEP_ENABLE __HAL_RCC_SDIO_CLK_SLEEP_ENABLE +#define __HAL_RCC_SDMMC1_CLK_SLEEP_DISABLE __HAL_RCC_SDIO_CLK_SLEEP_DISABLE +#define __HAL_RCC_SDMMC1_CLK_ENABLE __HAL_RCC_SDIO_CLK_ENABLE +#define __HAL_RCC_SDMMC1_CLK_DISABLE __HAL_RCC_SDIO_CLK_DISABLE +#define __HAL_RCC_SDMMC1_IS_CLK_ENABLED __HAL_RCC_SDIO_IS_CLK_ENABLED +#define __HAL_RCC_SDMMC1_IS_CLK_DISABLED __HAL_RCC_SDIO_IS_CLK_DISABLED +#define Sdmmc1ClockSelection SdioClockSelection +#define RCC_PERIPHCLK_SDMMC1 RCC_PERIPHCLK_SDIO +#define RCC_SDMMC1CLKSOURCE_CLK48 RCC_SDIOCLKSOURCE_CK48 +#define RCC_SDMMC1CLKSOURCE_SYSCLK RCC_SDIOCLKSOURCE_SYSCLK +#define __HAL_RCC_SDMMC1_CONFIG __HAL_RCC_SDIO_CONFIG +#define __HAL_RCC_GET_SDMMC1_SOURCE __HAL_RCC_GET_SDIO_SOURCE +#endif + +#if defined(STM32F7) || defined(STM32L4) +#define __HAL_RCC_SDIO_FORCE_RESET __HAL_RCC_SDMMC1_FORCE_RESET +#define __HAL_RCC_SDIO_RELEASE_RESET __HAL_RCC_SDMMC1_RELEASE_RESET +#define __HAL_RCC_SDIO_CLK_SLEEP_ENABLE __HAL_RCC_SDMMC1_CLK_SLEEP_ENABLE +#define __HAL_RCC_SDIO_CLK_SLEEP_DISABLE __HAL_RCC_SDMMC1_CLK_SLEEP_DISABLE +#define __HAL_RCC_SDIO_CLK_ENABLE __HAL_RCC_SDMMC1_CLK_ENABLE +#define __HAL_RCC_SDIO_CLK_DISABLE __HAL_RCC_SDMMC1_CLK_DISABLE +#define __HAL_RCC_SDIO_IS_CLK_ENABLED __HAL_RCC_SDMMC1_IS_CLK_ENABLED +#define __HAL_RCC_SDIO_IS_CLK_DISABLED __HAL_RCC_SDMMC1_IS_CLK_DISABLED +#define SdioClockSelection Sdmmc1ClockSelection +#define RCC_PERIPHCLK_SDIO RCC_PERIPHCLK_SDMMC1 +#define __HAL_RCC_SDIO_CONFIG __HAL_RCC_SDMMC1_CONFIG +#define __HAL_RCC_GET_SDIO_SOURCE __HAL_RCC_GET_SDMMC1_SOURCE +#endif + +#if defined(STM32F7) +#define RCC_SDIOCLKSOURCE_CLK48 RCC_SDMMC1CLKSOURCE_CLK48 +#define RCC_SDIOCLKSOURCE_SYSCLK RCC_SDMMC1CLKSOURCE_SYSCLK +#endif + +#if defined(STM32H7) +#define __HAL_RCC_USB_OTG_HS_CLK_ENABLE() __HAL_RCC_USB1_OTG_HS_CLK_ENABLE() +#define __HAL_RCC_USB_OTG_HS_ULPI_CLK_ENABLE() __HAL_RCC_USB1_OTG_HS_ULPI_CLK_ENABLE() +#define __HAL_RCC_USB_OTG_HS_CLK_DISABLE() __HAL_RCC_USB1_OTG_HS_CLK_DISABLE() +#define __HAL_RCC_USB_OTG_HS_ULPI_CLK_DISABLE() __HAL_RCC_USB1_OTG_HS_ULPI_CLK_DISABLE() +#define __HAL_RCC_USB_OTG_HS_FORCE_RESET() __HAL_RCC_USB1_OTG_HS_FORCE_RESET() +#define __HAL_RCC_USB_OTG_HS_RELEASE_RESET() __HAL_RCC_USB1_OTG_HS_RELEASE_RESET() +#define __HAL_RCC_USB_OTG_HS_CLK_SLEEP_ENABLE() __HAL_RCC_USB1_OTG_HS_CLK_SLEEP_ENABLE() +#define __HAL_RCC_USB_OTG_HS_ULPI_CLK_SLEEP_ENABLE() __HAL_RCC_USB1_OTG_HS_ULPI_CLK_SLEEP_ENABLE() +#define __HAL_RCC_USB_OTG_HS_CLK_SLEEP_DISABLE() __HAL_RCC_USB1_OTG_HS_CLK_SLEEP_DISABLE() +#define __HAL_RCC_USB_OTG_HS_ULPI_CLK_SLEEP_DISABLE() __HAL_RCC_USB1_OTG_HS_ULPI_CLK_SLEEP_DISABLE() + +#define __HAL_RCC_USB_OTG_FS_CLK_ENABLE() __HAL_RCC_USB2_OTG_FS_CLK_ENABLE() +#define __HAL_RCC_USB_OTG_FS_ULPI_CLK_ENABLE() __HAL_RCC_USB2_OTG_FS_ULPI_CLK_ENABLE() +#define __HAL_RCC_USB_OTG_FS_CLK_DISABLE() __HAL_RCC_USB2_OTG_FS_CLK_DISABLE() +#define __HAL_RCC_USB_OTG_FS_ULPI_CLK_DISABLE() __HAL_RCC_USB2_OTG_FS_ULPI_CLK_DISABLE() +#define __HAL_RCC_USB_OTG_FS_FORCE_RESET() __HAL_RCC_USB2_OTG_FS_FORCE_RESET() +#define __HAL_RCC_USB_OTG_FS_RELEASE_RESET() __HAL_RCC_USB2_OTG_FS_RELEASE_RESET() +#define __HAL_RCC_USB_OTG_FS_CLK_SLEEP_ENABLE() __HAL_RCC_USB2_OTG_FS_CLK_SLEEP_ENABLE() +#define __HAL_RCC_USB_OTG_FS_ULPI_CLK_SLEEP_ENABLE() __HAL_RCC_USB2_OTG_FS_ULPI_CLK_SLEEP_ENABLE() +#define __HAL_RCC_USB_OTG_FS_CLK_SLEEP_DISABLE() __HAL_RCC_USB2_OTG_FS_CLK_SLEEP_DISABLE() +#define __HAL_RCC_USB_OTG_FS_ULPI_CLK_SLEEP_DISABLE() __HAL_RCC_USB2_OTG_FS_ULPI_CLK_SLEEP_DISABLE() +#endif + +#define __HAL_RCC_I2SCLK __HAL_RCC_I2S_CONFIG +#define __HAL_RCC_I2SCLK_CONFIG __HAL_RCC_I2S_CONFIG + +#define __RCC_PLLSRC RCC_GET_PLL_OSCSOURCE + +#define IS_RCC_MSIRANGE IS_RCC_MSI_CLOCK_RANGE +#define IS_RCC_RTCCLK_SOURCE IS_RCC_RTCCLKSOURCE +#define IS_RCC_SYSCLK_DIV IS_RCC_HCLK +#define IS_RCC_HCLK_DIV IS_RCC_PCLK +#define IS_RCC_PERIPHCLK IS_RCC_PERIPHCLOCK + +#define RCC_IT_HSI14 RCC_IT_HSI14RDY + +#define RCC_IT_CSSLSE RCC_IT_LSECSS +#define RCC_IT_CSSHSE RCC_IT_CSS + +#define RCC_PLLMUL_3 RCC_PLL_MUL3 +#define RCC_PLLMUL_4 RCC_PLL_MUL4 +#define RCC_PLLMUL_6 RCC_PLL_MUL6 +#define RCC_PLLMUL_8 RCC_PLL_MUL8 +#define RCC_PLLMUL_12 RCC_PLL_MUL12 +#define RCC_PLLMUL_16 RCC_PLL_MUL16 +#define RCC_PLLMUL_24 RCC_PLL_MUL24 +#define RCC_PLLMUL_32 RCC_PLL_MUL32 +#define RCC_PLLMUL_48 RCC_PLL_MUL48 + +#define RCC_PLLDIV_2 RCC_PLL_DIV2 +#define RCC_PLLDIV_3 RCC_PLL_DIV3 +#define RCC_PLLDIV_4 RCC_PLL_DIV4 + +#define IS_RCC_MCOSOURCE IS_RCC_MCO1SOURCE +#define __HAL_RCC_MCO_CONFIG __HAL_RCC_MCO1_CONFIG +#define RCC_MCO_NODIV RCC_MCODIV_1 +#define RCC_MCO_DIV1 RCC_MCODIV_1 +#define RCC_MCO_DIV2 RCC_MCODIV_2 +#define RCC_MCO_DIV4 RCC_MCODIV_4 +#define RCC_MCO_DIV8 RCC_MCODIV_8 +#define RCC_MCO_DIV16 RCC_MCODIV_16 +#define RCC_MCO_DIV32 RCC_MCODIV_32 +#define RCC_MCO_DIV64 RCC_MCODIV_64 +#define RCC_MCO_DIV128 RCC_MCODIV_128 +#define RCC_MCOSOURCE_NONE RCC_MCO1SOURCE_NOCLOCK +#define RCC_MCOSOURCE_LSI RCC_MCO1SOURCE_LSI +#define RCC_MCOSOURCE_LSE RCC_MCO1SOURCE_LSE +#define RCC_MCOSOURCE_SYSCLK RCC_MCO1SOURCE_SYSCLK +#define RCC_MCOSOURCE_HSI RCC_MCO1SOURCE_HSI +#define RCC_MCOSOURCE_HSI14 RCC_MCO1SOURCE_HSI14 +#define RCC_MCOSOURCE_HSI48 RCC_MCO1SOURCE_HSI48 +#define RCC_MCOSOURCE_HSE RCC_MCO1SOURCE_HSE +#define RCC_MCOSOURCE_PLLCLK_DIV1 RCC_MCO1SOURCE_PLLCLK +#define RCC_MCOSOURCE_PLLCLK_NODIV RCC_MCO1SOURCE_PLLCLK +#define RCC_MCOSOURCE_PLLCLK_DIV2 RCC_MCO1SOURCE_PLLCLK_DIV2 + +#if defined(STM32L4) || defined(STM32WB) || defined(STM32G0) || defined(STM32G4) || defined(STM32L5) || defined(STM32WL) || defined(STM32C0) +#define RCC_RTCCLKSOURCE_NO_CLK RCC_RTCCLKSOURCE_NONE +#else +#define RCC_RTCCLKSOURCE_NONE RCC_RTCCLKSOURCE_NO_CLK +#endif + +#define RCC_USBCLK_PLLSAI1 RCC_USBCLKSOURCE_PLLSAI1 +#define RCC_USBCLK_PLL RCC_USBCLKSOURCE_PLL +#define RCC_USBCLK_MSI RCC_USBCLKSOURCE_MSI +#define RCC_USBCLKSOURCE_PLLCLK RCC_USBCLKSOURCE_PLL +#define RCC_USBPLLCLK_DIV1 RCC_USBCLKSOURCE_PLL +#define RCC_USBPLLCLK_DIV1_5 RCC_USBCLKSOURCE_PLL_DIV1_5 +#define RCC_USBPLLCLK_DIV2 RCC_USBCLKSOURCE_PLL_DIV2 +#define RCC_USBPLLCLK_DIV3 RCC_USBCLKSOURCE_PLL_DIV3 + +#define HSION_BitNumber RCC_HSION_BIT_NUMBER +#define HSION_BITNUMBER RCC_HSION_BIT_NUMBER +#define HSEON_BitNumber RCC_HSEON_BIT_NUMBER +#define HSEON_BITNUMBER RCC_HSEON_BIT_NUMBER +#define MSION_BITNUMBER RCC_MSION_BIT_NUMBER +#define CSSON_BitNumber RCC_CSSON_BIT_NUMBER +#define CSSON_BITNUMBER RCC_CSSON_BIT_NUMBER +#define PLLON_BitNumber RCC_PLLON_BIT_NUMBER +#define PLLON_BITNUMBER RCC_PLLON_BIT_NUMBER +#define PLLI2SON_BitNumber RCC_PLLI2SON_BIT_NUMBER +#define I2SSRC_BitNumber RCC_I2SSRC_BIT_NUMBER +#define RTCEN_BitNumber RCC_RTCEN_BIT_NUMBER +#define RTCEN_BITNUMBER RCC_RTCEN_BIT_NUMBER +#define BDRST_BitNumber RCC_BDRST_BIT_NUMBER +#define BDRST_BITNUMBER RCC_BDRST_BIT_NUMBER +#define RTCRST_BITNUMBER RCC_RTCRST_BIT_NUMBER +#define LSION_BitNumber RCC_LSION_BIT_NUMBER +#define LSION_BITNUMBER RCC_LSION_BIT_NUMBER +#define LSEON_BitNumber RCC_LSEON_BIT_NUMBER +#define LSEON_BITNUMBER RCC_LSEON_BIT_NUMBER +#define LSEBYP_BITNUMBER RCC_LSEBYP_BIT_NUMBER +#define PLLSAION_BitNumber RCC_PLLSAION_BIT_NUMBER +#define TIMPRE_BitNumber RCC_TIMPRE_BIT_NUMBER +#define RMVF_BitNumber RCC_RMVF_BIT_NUMBER +#define RMVF_BITNUMBER RCC_RMVF_BIT_NUMBER +#define RCC_CR2_HSI14TRIM_BitNumber RCC_HSI14TRIM_BIT_NUMBER +#define CR_BYTE2_ADDRESS RCC_CR_BYTE2_ADDRESS +#define CIR_BYTE1_ADDRESS RCC_CIR_BYTE1_ADDRESS +#define CIR_BYTE2_ADDRESS RCC_CIR_BYTE2_ADDRESS +#define BDCR_BYTE0_ADDRESS RCC_BDCR_BYTE0_ADDRESS +#define DBP_TIMEOUT_VALUE RCC_DBP_TIMEOUT_VALUE +#define LSE_TIMEOUT_VALUE RCC_LSE_TIMEOUT_VALUE + +#define CR_HSION_BB RCC_CR_HSION_BB +#define CR_CSSON_BB RCC_CR_CSSON_BB +#define CR_PLLON_BB RCC_CR_PLLON_BB +#define CR_PLLI2SON_BB RCC_CR_PLLI2SON_BB +#define CR_MSION_BB RCC_CR_MSION_BB +#define CSR_LSION_BB RCC_CSR_LSION_BB +#define CSR_LSEON_BB RCC_CSR_LSEON_BB +#define CSR_LSEBYP_BB RCC_CSR_LSEBYP_BB +#define CSR_RTCEN_BB RCC_CSR_RTCEN_BB +#define CSR_RTCRST_BB RCC_CSR_RTCRST_BB +#define CFGR_I2SSRC_BB RCC_CFGR_I2SSRC_BB +#define BDCR_RTCEN_BB RCC_BDCR_RTCEN_BB +#define BDCR_BDRST_BB RCC_BDCR_BDRST_BB +#define CR_HSEON_BB RCC_CR_HSEON_BB +#define CSR_RMVF_BB RCC_CSR_RMVF_BB +#define CR_PLLSAION_BB RCC_CR_PLLSAION_BB +#define DCKCFGR_TIMPRE_BB RCC_DCKCFGR_TIMPRE_BB + +#define __HAL_RCC_CRS_ENABLE_FREQ_ERROR_COUNTER __HAL_RCC_CRS_FREQ_ERROR_COUNTER_ENABLE +#define __HAL_RCC_CRS_DISABLE_FREQ_ERROR_COUNTER __HAL_RCC_CRS_FREQ_ERROR_COUNTER_DISABLE +#define __HAL_RCC_CRS_ENABLE_AUTOMATIC_CALIB __HAL_RCC_CRS_AUTOMATIC_CALIB_ENABLE +#define __HAL_RCC_CRS_DISABLE_AUTOMATIC_CALIB __HAL_RCC_CRS_AUTOMATIC_CALIB_DISABLE +#define __HAL_RCC_CRS_CALCULATE_RELOADVALUE __HAL_RCC_CRS_RELOADVALUE_CALCULATE + +#define __HAL_RCC_GET_IT_SOURCE __HAL_RCC_GET_IT + +#define RCC_CRS_SYNCWARM RCC_CRS_SYNCWARN +#define RCC_CRS_TRIMOV RCC_CRS_TRIMOVF + +#define RCC_PERIPHCLK_CK48 RCC_PERIPHCLK_CLK48 +#define RCC_CK48CLKSOURCE_PLLQ RCC_CLK48CLKSOURCE_PLLQ +#define RCC_CK48CLKSOURCE_PLLSAIP RCC_CLK48CLKSOURCE_PLLSAIP +#define RCC_CK48CLKSOURCE_PLLI2SQ RCC_CLK48CLKSOURCE_PLLI2SQ +#define IS_RCC_CK48CLKSOURCE IS_RCC_CLK48CLKSOURCE +#define RCC_SDIOCLKSOURCE_CK48 RCC_SDIOCLKSOURCE_CLK48 + +#define __HAL_RCC_DFSDM_CLK_ENABLE __HAL_RCC_DFSDM1_CLK_ENABLE +#define __HAL_RCC_DFSDM_CLK_DISABLE __HAL_RCC_DFSDM1_CLK_DISABLE +#define __HAL_RCC_DFSDM_IS_CLK_ENABLED __HAL_RCC_DFSDM1_IS_CLK_ENABLED +#define __HAL_RCC_DFSDM_IS_CLK_DISABLED __HAL_RCC_DFSDM1_IS_CLK_DISABLED +#define __HAL_RCC_DFSDM_FORCE_RESET __HAL_RCC_DFSDM1_FORCE_RESET +#define __HAL_RCC_DFSDM_RELEASE_RESET __HAL_RCC_DFSDM1_RELEASE_RESET +#define __HAL_RCC_DFSDM_CLK_SLEEP_ENABLE __HAL_RCC_DFSDM1_CLK_SLEEP_ENABLE +#define __HAL_RCC_DFSDM_CLK_SLEEP_DISABLE __HAL_RCC_DFSDM1_CLK_SLEEP_DISABLE +#define __HAL_RCC_DFSDM_IS_CLK_SLEEP_ENABLED __HAL_RCC_DFSDM1_IS_CLK_SLEEP_ENABLED +#define __HAL_RCC_DFSDM_IS_CLK_SLEEP_DISABLED __HAL_RCC_DFSDM1_IS_CLK_SLEEP_DISABLED +#define DfsdmClockSelection Dfsdm1ClockSelection +#define RCC_PERIPHCLK_DFSDM RCC_PERIPHCLK_DFSDM1 +#define RCC_DFSDMCLKSOURCE_PCLK RCC_DFSDM1CLKSOURCE_PCLK2 +#define RCC_DFSDMCLKSOURCE_SYSCLK RCC_DFSDM1CLKSOURCE_SYSCLK +#define __HAL_RCC_DFSDM_CONFIG __HAL_RCC_DFSDM1_CONFIG +#define __HAL_RCC_GET_DFSDM_SOURCE __HAL_RCC_GET_DFSDM1_SOURCE +#define RCC_DFSDM1CLKSOURCE_PCLK RCC_DFSDM1CLKSOURCE_PCLK2 +#define RCC_SWPMI1CLKSOURCE_PCLK RCC_SWPMI1CLKSOURCE_PCLK1 +#define RCC_LPTIM1CLKSOURCE_PCLK RCC_LPTIM1CLKSOURCE_PCLK1 +#define RCC_LPTIM2CLKSOURCE_PCLK RCC_LPTIM2CLKSOURCE_PCLK1 + +#define RCC_DFSDM1AUDIOCLKSOURCE_I2SAPB1 RCC_DFSDM1AUDIOCLKSOURCE_I2S1 +#define RCC_DFSDM1AUDIOCLKSOURCE_I2SAPB2 RCC_DFSDM1AUDIOCLKSOURCE_I2S2 +#define RCC_DFSDM2AUDIOCLKSOURCE_I2SAPB1 RCC_DFSDM2AUDIOCLKSOURCE_I2S1 +#define RCC_DFSDM2AUDIOCLKSOURCE_I2SAPB2 RCC_DFSDM2AUDIOCLKSOURCE_I2S2 +#define RCC_DFSDM1CLKSOURCE_APB2 RCC_DFSDM1CLKSOURCE_PCLK2 +#define RCC_DFSDM2CLKSOURCE_APB2 RCC_DFSDM2CLKSOURCE_PCLK2 +#define RCC_FMPI2C1CLKSOURCE_APB RCC_FMPI2C1CLKSOURCE_PCLK1 +#if defined(STM32U5) +#define MSIKPLLModeSEL RCC_MSIKPLL_MODE_SEL +#define MSISPLLModeSEL RCC_MSISPLL_MODE_SEL +#define __HAL_RCC_AHB21_CLK_DISABLE __HAL_RCC_AHB2_1_CLK_DISABLE +#define __HAL_RCC_AHB22_CLK_DISABLE __HAL_RCC_AHB2_2_CLK_DISABLE +#define __HAL_RCC_AHB1_CLK_Disable_Clear __HAL_RCC_AHB1_CLK_ENABLE +#define __HAL_RCC_AHB21_CLK_Disable_Clear __HAL_RCC_AHB2_1_CLK_ENABLE +#define __HAL_RCC_AHB22_CLK_Disable_Clear __HAL_RCC_AHB2_2_CLK_ENABLE +#define __HAL_RCC_AHB3_CLK_Disable_Clear __HAL_RCC_AHB3_CLK_ENABLE +#define __HAL_RCC_APB1_CLK_Disable_Clear __HAL_RCC_APB1_CLK_ENABLE +#define __HAL_RCC_APB2_CLK_Disable_Clear __HAL_RCC_APB2_CLK_ENABLE +#define __HAL_RCC_APB3_CLK_Disable_Clear __HAL_RCC_APB3_CLK_ENABLE +#define IS_RCC_MSIPLLModeSelection IS_RCC_MSIPLLMODE_SELECT +#define RCC_PERIPHCLK_CLK48 RCC_PERIPHCLK_ICLK +#define RCC_CLK48CLKSOURCE_HSI48 RCC_ICLK_CLKSOURCE_HSI48 +#define RCC_CLK48CLKSOURCE_PLL2 RCC_ICLK_CLKSOURCE_PLL2 +#define RCC_CLK48CLKSOURCE_PLL1 RCC_ICLK_CLKSOURCE_PLL1 +#define RCC_CLK48CLKSOURCE_MSIK RCC_ICLK_CLKSOURCE_MSIK +#define __HAL_RCC_ADC1_CLK_ENABLE __HAL_RCC_ADC12_CLK_ENABLE +#define __HAL_RCC_ADC1_CLK_DISABLE __HAL_RCC_ADC12_CLK_DISABLE +#define __HAL_RCC_ADC1_IS_CLK_ENABLED __HAL_RCC_ADC12_IS_CLK_ENABLED +#define __HAL_RCC_ADC1_IS_CLK_DISABLED __HAL_RCC_ADC12_IS_CLK_DISABLED +#define __HAL_RCC_ADC1_FORCE_RESET __HAL_RCC_ADC12_FORCE_RESET +#define __HAL_RCC_ADC1_RELEASE_RESET __HAL_RCC_ADC12_RELEASE_RESET +#define __HAL_RCC_ADC1_CLK_SLEEP_ENABLE __HAL_RCC_ADC12_CLK_SLEEP_ENABLE +#define __HAL_RCC_ADC1_CLK_SLEEP_DISABLE __HAL_RCC_ADC12_CLK_SLEEP_DISABLE +#define __HAL_RCC_GET_CLK48_SOURCE __HAL_RCC_GET_ICLK_SOURCE +#define __HAL_RCC_PLLFRACN_ENABLE __HAL_RCC_PLL_FRACN_ENABLE +#define __HAL_RCC_PLLFRACN_DISABLE __HAL_RCC_PLL_FRACN_DISABLE +#define __HAL_RCC_PLLFRACN_CONFIG __HAL_RCC_PLL_FRACN_CONFIG +#define IS_RCC_PLLFRACN_VALUE IS_RCC_PLL_FRACN_VALUE +#endif /* STM32U5 */ + +/** + * @} + */ + +/** @defgroup HAL_RNG_Aliased_Macros HAL RNG Aliased Macros maintained for legacy purpose + * @{ + */ +#define HAL_RNG_ReadyCallback(__HANDLE__) HAL_RNG_ReadyDataCallback((__HANDLE__), uint32_t random32bit) + +/** + * @} + */ + +/** @defgroup HAL_RTC_Aliased_Macros HAL RTC Aliased Macros maintained for legacy purpose + * @{ + */ +#if defined (STM32G0) || defined (STM32L5) || defined (STM32L412xx) || defined (STM32L422xx) || defined (STM32L4P5xx)|| \ + defined (STM32L4Q5xx) || defined (STM32G4) || defined (STM32WL) || defined (STM32U5) || \ + defined (STM32C0) +#else +#define __HAL_RTC_CLEAR_FLAG __HAL_RTC_EXTI_CLEAR_FLAG +#endif +#define __HAL_RTC_DISABLE_IT __HAL_RTC_EXTI_DISABLE_IT +#define __HAL_RTC_ENABLE_IT __HAL_RTC_EXTI_ENABLE_IT + +#if defined (STM32F1) +#define __HAL_RTC_EXTI_CLEAR_FLAG(RTC_EXTI_LINE_ALARM_EVENT) __HAL_RTC_ALARM_EXTI_CLEAR_FLAG() + +#define __HAL_RTC_EXTI_ENABLE_IT(RTC_EXTI_LINE_ALARM_EVENT) __HAL_RTC_ALARM_EXTI_ENABLE_IT() + +#define __HAL_RTC_EXTI_DISABLE_IT(RTC_EXTI_LINE_ALARM_EVENT) __HAL_RTC_ALARM_EXTI_DISABLE_IT() + +#define __HAL_RTC_EXTI_GET_FLAG(RTC_EXTI_LINE_ALARM_EVENT) __HAL_RTC_ALARM_EXTI_GET_FLAG() + +#define __HAL_RTC_EXTI_GENERATE_SWIT(RTC_EXTI_LINE_ALARM_EVENT) __HAL_RTC_ALARM_EXTI_GENERATE_SWIT() +#else +#define __HAL_RTC_EXTI_CLEAR_FLAG(__EXTI_LINE__) (((__EXTI_LINE__) == RTC_EXTI_LINE_ALARM_EVENT) ? __HAL_RTC_ALARM_EXTI_CLEAR_FLAG() : \ + (((__EXTI_LINE__) == RTC_EXTI_LINE_WAKEUPTIMER_EVENT) ? __HAL_RTC_WAKEUPTIMER_EXTI_CLEAR_FLAG() : \ + __HAL_RTC_TAMPER_TIMESTAMP_EXTI_CLEAR_FLAG())) +#define __HAL_RTC_EXTI_ENABLE_IT(__EXTI_LINE__) (((__EXTI_LINE__) == RTC_EXTI_LINE_ALARM_EVENT) ? __HAL_RTC_ALARM_EXTI_ENABLE_IT() : \ + (((__EXTI_LINE__) == RTC_EXTI_LINE_WAKEUPTIMER_EVENT) ? __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_IT() : \ + __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_IT())) +#define __HAL_RTC_EXTI_DISABLE_IT(__EXTI_LINE__) (((__EXTI_LINE__) == RTC_EXTI_LINE_ALARM_EVENT) ? __HAL_RTC_ALARM_EXTI_DISABLE_IT() : \ + (((__EXTI_LINE__) == RTC_EXTI_LINE_WAKEUPTIMER_EVENT) ? __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_IT() : \ + __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_IT())) +#define __HAL_RTC_EXTI_GET_FLAG(__EXTI_LINE__) (((__EXTI_LINE__) == RTC_EXTI_LINE_ALARM_EVENT) ? __HAL_RTC_ALARM_EXTI_GET_FLAG() : \ + (((__EXTI_LINE__) == RTC_EXTI_LINE_WAKEUPTIMER_EVENT) ? __HAL_RTC_WAKEUPTIMER_EXTI_GET_FLAG() : \ + __HAL_RTC_TAMPER_TIMESTAMP_EXTI_GET_FLAG())) +#define __HAL_RTC_EXTI_GENERATE_SWIT(__EXTI_LINE__) (((__EXTI_LINE__) == RTC_EXTI_LINE_ALARM_EVENT) ? __HAL_RTC_ALARM_EXTI_GENERATE_SWIT() : \ + (((__EXTI_LINE__) == RTC_EXTI_LINE_WAKEUPTIMER_EVENT) ? __HAL_RTC_WAKEUPTIMER_EXTI_GENERATE_SWIT() : \ + __HAL_RTC_TAMPER_TIMESTAMP_EXTI_GENERATE_SWIT())) +#endif /* STM32F1 */ + +#define IS_ALARM IS_RTC_ALARM +#define IS_ALARM_MASK IS_RTC_ALARM_MASK +#define IS_TAMPER IS_RTC_TAMPER +#define IS_TAMPER_ERASE_MODE IS_RTC_TAMPER_ERASE_MODE +#define IS_TAMPER_FILTER IS_RTC_TAMPER_FILTER +#define IS_TAMPER_INTERRUPT IS_RTC_TAMPER_INTERRUPT +#define IS_TAMPER_MASKFLAG_STATE IS_RTC_TAMPER_MASKFLAG_STATE +#define IS_TAMPER_PRECHARGE_DURATION IS_RTC_TAMPER_PRECHARGE_DURATION +#define IS_TAMPER_PULLUP_STATE IS_RTC_TAMPER_PULLUP_STATE +#define IS_TAMPER_SAMPLING_FREQ IS_RTC_TAMPER_SAMPLING_FREQ +#define IS_TAMPER_TIMESTAMPONTAMPER_DETECTION IS_RTC_TAMPER_TIMESTAMPONTAMPER_DETECTION +#define IS_TAMPER_TRIGGER IS_RTC_TAMPER_TRIGGER +#define IS_WAKEUP_CLOCK IS_RTC_WAKEUP_CLOCK +#define IS_WAKEUP_COUNTER IS_RTC_WAKEUP_COUNTER + +#define __RTC_WRITEPROTECTION_ENABLE __HAL_RTC_WRITEPROTECTION_ENABLE +#define __RTC_WRITEPROTECTION_DISABLE __HAL_RTC_WRITEPROTECTION_DISABLE + +/** + * @} + */ + +/** @defgroup HAL_SD_Aliased_Macros HAL SD/MMC Aliased Macros maintained for legacy purpose + * @{ + */ + +#define SD_OCR_CID_CSD_OVERWRIETE SD_OCR_CID_CSD_OVERWRITE +#define SD_CMD_SD_APP_STAUS SD_CMD_SD_APP_STATUS + +#if !defined(STM32F1) && !defined(STM32F2) && !defined(STM32F4) && !defined(STM32L1) +#define eMMC_HIGH_VOLTAGE_RANGE EMMC_HIGH_VOLTAGE_RANGE +#define eMMC_DUAL_VOLTAGE_RANGE EMMC_DUAL_VOLTAGE_RANGE +#define eMMC_LOW_VOLTAGE_RANGE EMMC_LOW_VOLTAGE_RANGE + +#define SDMMC_NSpeed_CLK_DIV SDMMC_NSPEED_CLK_DIV +#define SDMMC_HSpeed_CLK_DIV SDMMC_HSPEED_CLK_DIV +#endif + +#if defined(STM32F4) || defined(STM32F2) +#define SD_SDMMC_DISABLED SD_SDIO_DISABLED +#define SD_SDMMC_FUNCTION_BUSY SD_SDIO_FUNCTION_BUSY +#define SD_SDMMC_FUNCTION_FAILED SD_SDIO_FUNCTION_FAILED +#define SD_SDMMC_UNKNOWN_FUNCTION SD_SDIO_UNKNOWN_FUNCTION +#define SD_CMD_SDMMC_SEN_OP_COND SD_CMD_SDIO_SEN_OP_COND +#define SD_CMD_SDMMC_RW_DIRECT SD_CMD_SDIO_RW_DIRECT +#define SD_CMD_SDMMC_RW_EXTENDED SD_CMD_SDIO_RW_EXTENDED +#define __HAL_SD_SDMMC_ENABLE __HAL_SD_SDIO_ENABLE +#define __HAL_SD_SDMMC_DISABLE __HAL_SD_SDIO_DISABLE +#define __HAL_SD_SDMMC_DMA_ENABLE __HAL_SD_SDIO_DMA_ENABLE +#define __HAL_SD_SDMMC_DMA_DISABLE __HAL_SD_SDIO_DMA_DISABL +#define __HAL_SD_SDMMC_ENABLE_IT __HAL_SD_SDIO_ENABLE_IT +#define __HAL_SD_SDMMC_DISABLE_IT __HAL_SD_SDIO_DISABLE_IT +#define __HAL_SD_SDMMC_GET_FLAG __HAL_SD_SDIO_GET_FLAG +#define __HAL_SD_SDMMC_CLEAR_FLAG __HAL_SD_SDIO_CLEAR_FLAG +#define __HAL_SD_SDMMC_GET_IT __HAL_SD_SDIO_GET_IT +#define __HAL_SD_SDMMC_CLEAR_IT __HAL_SD_SDIO_CLEAR_IT +#define SDMMC_STATIC_FLAGS SDIO_STATIC_FLAGS +#define SDMMC_CMD0TIMEOUT SDIO_CMD0TIMEOUT +#define SD_SDMMC_SEND_IF_COND SD_SDIO_SEND_IF_COND +/* alias CMSIS */ +#define SDMMC1_IRQn SDIO_IRQn +#define SDMMC1_IRQHandler SDIO_IRQHandler +#endif + +#if defined(STM32F7) || defined(STM32L4) +#define SD_SDIO_DISABLED SD_SDMMC_DISABLED +#define SD_SDIO_FUNCTION_BUSY SD_SDMMC_FUNCTION_BUSY +#define SD_SDIO_FUNCTION_FAILED SD_SDMMC_FUNCTION_FAILED +#define SD_SDIO_UNKNOWN_FUNCTION SD_SDMMC_UNKNOWN_FUNCTION +#define SD_CMD_SDIO_SEN_OP_COND SD_CMD_SDMMC_SEN_OP_COND +#define SD_CMD_SDIO_RW_DIRECT SD_CMD_SDMMC_RW_DIRECT +#define SD_CMD_SDIO_RW_EXTENDED SD_CMD_SDMMC_RW_EXTENDED +#define __HAL_SD_SDIO_ENABLE __HAL_SD_SDMMC_ENABLE +#define __HAL_SD_SDIO_DISABLE __HAL_SD_SDMMC_DISABLE +#define __HAL_SD_SDIO_DMA_ENABLE __HAL_SD_SDMMC_DMA_ENABLE +#define __HAL_SD_SDIO_DMA_DISABL __HAL_SD_SDMMC_DMA_DISABLE +#define __HAL_SD_SDIO_ENABLE_IT __HAL_SD_SDMMC_ENABLE_IT +#define __HAL_SD_SDIO_DISABLE_IT __HAL_SD_SDMMC_DISABLE_IT +#define __HAL_SD_SDIO_GET_FLAG __HAL_SD_SDMMC_GET_FLAG +#define __HAL_SD_SDIO_CLEAR_FLAG __HAL_SD_SDMMC_CLEAR_FLAG +#define __HAL_SD_SDIO_GET_IT __HAL_SD_SDMMC_GET_IT +#define __HAL_SD_SDIO_CLEAR_IT __HAL_SD_SDMMC_CLEAR_IT +#define SDIO_STATIC_FLAGS SDMMC_STATIC_FLAGS +#define SDIO_CMD0TIMEOUT SDMMC_CMD0TIMEOUT +#define SD_SDIO_SEND_IF_COND SD_SDMMC_SEND_IF_COND +/* alias CMSIS for compatibilities */ +#define SDIO_IRQn SDMMC1_IRQn +#define SDIO_IRQHandler SDMMC1_IRQHandler +#endif + +#if defined(STM32F7) || defined(STM32F4) || defined(STM32F2) || defined(STM32L4) || defined(STM32H7) +#define HAL_SD_CardCIDTypedef HAL_SD_CardCIDTypeDef +#define HAL_SD_CardCSDTypedef HAL_SD_CardCSDTypeDef +#define HAL_SD_CardStatusTypedef HAL_SD_CardStatusTypeDef +#define HAL_SD_CardStateTypedef HAL_SD_CardStateTypeDef +#endif + +#if defined(STM32H7) || defined(STM32L5) +#define HAL_MMCEx_Read_DMADoubleBuffer0CpltCallback HAL_MMCEx_Read_DMADoubleBuf0CpltCallback +#define HAL_MMCEx_Read_DMADoubleBuffer1CpltCallback HAL_MMCEx_Read_DMADoubleBuf1CpltCallback +#define HAL_MMCEx_Write_DMADoubleBuffer0CpltCallback HAL_MMCEx_Write_DMADoubleBuf0CpltCallback +#define HAL_MMCEx_Write_DMADoubleBuffer1CpltCallback HAL_MMCEx_Write_DMADoubleBuf1CpltCallback +#define HAL_SDEx_Read_DMADoubleBuffer0CpltCallback HAL_SDEx_Read_DMADoubleBuf0CpltCallback +#define HAL_SDEx_Read_DMADoubleBuffer1CpltCallback HAL_SDEx_Read_DMADoubleBuf1CpltCallback +#define HAL_SDEx_Write_DMADoubleBuffer0CpltCallback HAL_SDEx_Write_DMADoubleBuf0CpltCallback +#define HAL_SDEx_Write_DMADoubleBuffer1CpltCallback HAL_SDEx_Write_DMADoubleBuf1CpltCallback +#define HAL_SD_DriveTransciver_1_8V_Callback HAL_SD_DriveTransceiver_1_8V_Callback +#endif +/** + * @} + */ + +/** @defgroup HAL_SMARTCARD_Aliased_Macros HAL SMARTCARD Aliased Macros maintained for legacy purpose + * @{ + */ + +#define __SMARTCARD_ENABLE_IT __HAL_SMARTCARD_ENABLE_IT +#define __SMARTCARD_DISABLE_IT __HAL_SMARTCARD_DISABLE_IT +#define __SMARTCARD_ENABLE __HAL_SMARTCARD_ENABLE +#define __SMARTCARD_DISABLE __HAL_SMARTCARD_DISABLE +#define __SMARTCARD_DMA_REQUEST_ENABLE __HAL_SMARTCARD_DMA_REQUEST_ENABLE +#define __SMARTCARD_DMA_REQUEST_DISABLE __HAL_SMARTCARD_DMA_REQUEST_DISABLE + +#define __HAL_SMARTCARD_GETCLOCKSOURCE SMARTCARD_GETCLOCKSOURCE +#define __SMARTCARD_GETCLOCKSOURCE SMARTCARD_GETCLOCKSOURCE + +#define IS_SMARTCARD_ONEBIT_SAMPLING IS_SMARTCARD_ONE_BIT_SAMPLE + +/** + * @} + */ + +/** @defgroup HAL_SMBUS_Aliased_Macros HAL SMBUS Aliased Macros maintained for legacy purpose + * @{ + */ +#define __HAL_SMBUS_RESET_CR1 SMBUS_RESET_CR1 +#define __HAL_SMBUS_RESET_CR2 SMBUS_RESET_CR2 +#define __HAL_SMBUS_GENERATE_START SMBUS_GENERATE_START +#define __HAL_SMBUS_GET_ADDR_MATCH SMBUS_GET_ADDR_MATCH +#define __HAL_SMBUS_GET_DIR SMBUS_GET_DIR +#define __HAL_SMBUS_GET_STOP_MODE SMBUS_GET_STOP_MODE +#define __HAL_SMBUS_GET_PEC_MODE SMBUS_GET_PEC_MODE +#define __HAL_SMBUS_GET_ALERT_ENABLED SMBUS_GET_ALERT_ENABLED +/** + * @} + */ + +/** @defgroup HAL_SPI_Aliased_Macros HAL SPI Aliased Macros maintained for legacy purpose + * @{ + */ + +#define __HAL_SPI_1LINE_TX SPI_1LINE_TX +#define __HAL_SPI_1LINE_RX SPI_1LINE_RX +#define __HAL_SPI_RESET_CRC SPI_RESET_CRC + +/** + * @} + */ + +/** @defgroup HAL_UART_Aliased_Macros HAL UART Aliased Macros maintained for legacy purpose + * @{ + */ + +#define __HAL_UART_GETCLOCKSOURCE UART_GETCLOCKSOURCE +#define __HAL_UART_MASK_COMPUTATION UART_MASK_COMPUTATION +#define __UART_GETCLOCKSOURCE UART_GETCLOCKSOURCE +#define __UART_MASK_COMPUTATION UART_MASK_COMPUTATION + +#define IS_UART_WAKEUPMETHODE IS_UART_WAKEUPMETHOD + +#define IS_UART_ONEBIT_SAMPLE IS_UART_ONE_BIT_SAMPLE +#define IS_UART_ONEBIT_SAMPLING IS_UART_ONE_BIT_SAMPLE + +/** + * @} + */ + + +/** @defgroup HAL_USART_Aliased_Macros HAL USART Aliased Macros maintained for legacy purpose + * @{ + */ + +#define __USART_ENABLE_IT __HAL_USART_ENABLE_IT +#define __USART_DISABLE_IT __HAL_USART_DISABLE_IT +#define __USART_ENABLE __HAL_USART_ENABLE +#define __USART_DISABLE __HAL_USART_DISABLE + +#define __HAL_USART_GETCLOCKSOURCE USART_GETCLOCKSOURCE +#define __USART_GETCLOCKSOURCE USART_GETCLOCKSOURCE + +#if defined(STM32F0) || defined(STM32F3) || defined(STM32F7) +#define USART_OVERSAMPLING_16 0x00000000U +#define USART_OVERSAMPLING_8 USART_CR1_OVER8 + +#define IS_USART_OVERSAMPLING(__SAMPLING__) (((__SAMPLING__) == USART_OVERSAMPLING_16) || \ + ((__SAMPLING__) == USART_OVERSAMPLING_8)) +#endif /* STM32F0 || STM32F3 || STM32F7 */ +/** + * @} + */ + +/** @defgroup HAL_USB_Aliased_Macros HAL USB Aliased Macros maintained for legacy purpose + * @{ + */ +#define USB_EXTI_LINE_WAKEUP USB_WAKEUP_EXTI_LINE + +#define USB_FS_EXTI_TRIGGER_RISING_EDGE USB_OTG_FS_WAKEUP_EXTI_RISING_EDGE +#define USB_FS_EXTI_TRIGGER_FALLING_EDGE USB_OTG_FS_WAKEUP_EXTI_FALLING_EDGE +#define USB_FS_EXTI_TRIGGER_BOTH_EDGE USB_OTG_FS_WAKEUP_EXTI_RISING_FALLING_EDGE +#define USB_FS_EXTI_LINE_WAKEUP USB_OTG_FS_WAKEUP_EXTI_LINE + +#define USB_HS_EXTI_TRIGGER_RISING_EDGE USB_OTG_HS_WAKEUP_EXTI_RISING_EDGE +#define USB_HS_EXTI_TRIGGER_FALLING_EDGE USB_OTG_HS_WAKEUP_EXTI_FALLING_EDGE +#define USB_HS_EXTI_TRIGGER_BOTH_EDGE USB_OTG_HS_WAKEUP_EXTI_RISING_FALLING_EDGE +#define USB_HS_EXTI_LINE_WAKEUP USB_OTG_HS_WAKEUP_EXTI_LINE + +#define __HAL_USB_EXTI_ENABLE_IT __HAL_USB_WAKEUP_EXTI_ENABLE_IT +#define __HAL_USB_EXTI_DISABLE_IT __HAL_USB_WAKEUP_EXTI_DISABLE_IT +#define __HAL_USB_EXTI_GET_FLAG __HAL_USB_WAKEUP_EXTI_GET_FLAG +#define __HAL_USB_EXTI_CLEAR_FLAG __HAL_USB_WAKEUP_EXTI_CLEAR_FLAG +#define __HAL_USB_EXTI_SET_RISING_EDGE_TRIGGER __HAL_USB_WAKEUP_EXTI_ENABLE_RISING_EDGE +#define __HAL_USB_EXTI_SET_FALLING_EDGE_TRIGGER __HAL_USB_WAKEUP_EXTI_ENABLE_FALLING_EDGE +#define __HAL_USB_EXTI_SET_FALLINGRISING_TRIGGER __HAL_USB_WAKEUP_EXTI_ENABLE_RISING_FALLING_EDGE + +#define __HAL_USB_FS_EXTI_ENABLE_IT __HAL_USB_OTG_FS_WAKEUP_EXTI_ENABLE_IT +#define __HAL_USB_FS_EXTI_DISABLE_IT __HAL_USB_OTG_FS_WAKEUP_EXTI_DISABLE_IT +#define __HAL_USB_FS_EXTI_GET_FLAG __HAL_USB_OTG_FS_WAKEUP_EXTI_GET_FLAG +#define __HAL_USB_FS_EXTI_CLEAR_FLAG __HAL_USB_OTG_FS_WAKEUP_EXTI_CLEAR_FLAG +#define __HAL_USB_FS_EXTI_SET_RISING_EGDE_TRIGGER __HAL_USB_OTG_FS_WAKEUP_EXTI_ENABLE_RISING_EDGE +#define __HAL_USB_FS_EXTI_SET_FALLING_EGDE_TRIGGER __HAL_USB_OTG_FS_WAKEUP_EXTI_ENABLE_FALLING_EDGE +#define __HAL_USB_FS_EXTI_SET_FALLINGRISING_TRIGGER __HAL_USB_OTG_FS_WAKEUP_EXTI_ENABLE_RISING_FALLING_EDGE +#define __HAL_USB_FS_EXTI_GENERATE_SWIT __HAL_USB_OTG_FS_WAKEUP_EXTI_GENERATE_SWIT + +#define __HAL_USB_HS_EXTI_ENABLE_IT __HAL_USB_OTG_HS_WAKEUP_EXTI_ENABLE_IT +#define __HAL_USB_HS_EXTI_DISABLE_IT __HAL_USB_OTG_HS_WAKEUP_EXTI_DISABLE_IT +#define __HAL_USB_HS_EXTI_GET_FLAG __HAL_USB_OTG_HS_WAKEUP_EXTI_GET_FLAG +#define __HAL_USB_HS_EXTI_CLEAR_FLAG __HAL_USB_OTG_HS_WAKEUP_EXTI_CLEAR_FLAG +#define __HAL_USB_HS_EXTI_SET_RISING_EGDE_TRIGGER __HAL_USB_OTG_HS_WAKEUP_EXTI_ENABLE_RISING_EDGE +#define __HAL_USB_HS_EXTI_SET_FALLING_EGDE_TRIGGER __HAL_USB_OTG_HS_WAKEUP_EXTI_ENABLE_FALLING_EDGE +#define __HAL_USB_HS_EXTI_SET_FALLINGRISING_TRIGGER __HAL_USB_OTG_HS_WAKEUP_EXTI_ENABLE_RISING_FALLING_EDGE +#define __HAL_USB_HS_EXTI_GENERATE_SWIT __HAL_USB_OTG_HS_WAKEUP_EXTI_GENERATE_SWIT + +#define HAL_PCD_ActiveRemoteWakeup HAL_PCD_ActivateRemoteWakeup +#define HAL_PCD_DeActiveRemoteWakeup HAL_PCD_DeActivateRemoteWakeup + +#define HAL_PCD_SetTxFiFo HAL_PCDEx_SetTxFiFo +#define HAL_PCD_SetRxFiFo HAL_PCDEx_SetRxFiFo +/** + * @} + */ + +/** @defgroup HAL_TIM_Aliased_Macros HAL TIM Aliased Macros maintained for legacy purpose + * @{ + */ +#define __HAL_TIM_SetICPrescalerValue TIM_SET_ICPRESCALERVALUE +#define __HAL_TIM_ResetICPrescalerValue TIM_RESET_ICPRESCALERVALUE + +#define TIM_GET_ITSTATUS __HAL_TIM_GET_IT_SOURCE +#define TIM_GET_CLEAR_IT __HAL_TIM_CLEAR_IT + +#define __HAL_TIM_GET_ITSTATUS __HAL_TIM_GET_IT_SOURCE + +#define __HAL_TIM_DIRECTION_STATUS __HAL_TIM_IS_TIM_COUNTING_DOWN +#define __HAL_TIM_PRESCALER __HAL_TIM_SET_PRESCALER +#define __HAL_TIM_SetCounter __HAL_TIM_SET_COUNTER +#define __HAL_TIM_GetCounter __HAL_TIM_GET_COUNTER +#define __HAL_TIM_SetAutoreload __HAL_TIM_SET_AUTORELOAD +#define __HAL_TIM_GetAutoreload __HAL_TIM_GET_AUTORELOAD +#define __HAL_TIM_SetClockDivision __HAL_TIM_SET_CLOCKDIVISION +#define __HAL_TIM_GetClockDivision __HAL_TIM_GET_CLOCKDIVISION +#define __HAL_TIM_SetICPrescaler __HAL_TIM_SET_ICPRESCALER +#define __HAL_TIM_GetICPrescaler __HAL_TIM_GET_ICPRESCALER +#define __HAL_TIM_SetCompare __HAL_TIM_SET_COMPARE +#define __HAL_TIM_GetCompare __HAL_TIM_GET_COMPARE + +#define TIM_BREAKINPUTSOURCE_DFSDM TIM_BREAKINPUTSOURCE_DFSDM1 +/** + * @} + */ + +/** @defgroup HAL_ETH_Aliased_Macros HAL ETH Aliased Macros maintained for legacy purpose + * @{ + */ + +#define __HAL_ETH_EXTI_ENABLE_IT __HAL_ETH_WAKEUP_EXTI_ENABLE_IT +#define __HAL_ETH_EXTI_DISABLE_IT __HAL_ETH_WAKEUP_EXTI_DISABLE_IT +#define __HAL_ETH_EXTI_GET_FLAG __HAL_ETH_WAKEUP_EXTI_GET_FLAG +#define __HAL_ETH_EXTI_CLEAR_FLAG __HAL_ETH_WAKEUP_EXTI_CLEAR_FLAG +#define __HAL_ETH_EXTI_SET_RISING_EGDE_TRIGGER __HAL_ETH_WAKEUP_EXTI_ENABLE_RISING_EDGE_TRIGGER +#define __HAL_ETH_EXTI_SET_FALLING_EGDE_TRIGGER __HAL_ETH_WAKEUP_EXTI_ENABLE_FALLING_EDGE_TRIGGER +#define __HAL_ETH_EXTI_SET_FALLINGRISING_TRIGGER __HAL_ETH_WAKEUP_EXTI_ENABLE_FALLINGRISING_TRIGGER + +#define ETH_PROMISCIOUSMODE_ENABLE ETH_PROMISCUOUS_MODE_ENABLE +#define ETH_PROMISCIOUSMODE_DISABLE ETH_PROMISCUOUS_MODE_DISABLE +#define IS_ETH_PROMISCIOUS_MODE IS_ETH_PROMISCUOUS_MODE +/** + * @} + */ + +/** @defgroup HAL_LTDC_Aliased_Macros HAL LTDC Aliased Macros maintained for legacy purpose + * @{ + */ +#define __HAL_LTDC_LAYER LTDC_LAYER +#define __HAL_LTDC_RELOAD_CONFIG __HAL_LTDC_RELOAD_IMMEDIATE_CONFIG +/** + * @} + */ + +/** @defgroup HAL_SAI_Aliased_Macros HAL SAI Aliased Macros maintained for legacy purpose + * @{ + */ +#define SAI_OUTPUTDRIVE_DISABLED SAI_OUTPUTDRIVE_DISABLE +#define SAI_OUTPUTDRIVE_ENABLED SAI_OUTPUTDRIVE_ENABLE +#define SAI_MASTERDIVIDER_ENABLED SAI_MASTERDIVIDER_ENABLE +#define SAI_MASTERDIVIDER_DISABLED SAI_MASTERDIVIDER_DISABLE +#define SAI_STREOMODE SAI_STEREOMODE +#define SAI_FIFOStatus_Empty SAI_FIFOSTATUS_EMPTY +#define SAI_FIFOStatus_Less1QuarterFull SAI_FIFOSTATUS_LESS1QUARTERFULL +#define SAI_FIFOStatus_1QuarterFull SAI_FIFOSTATUS_1QUARTERFULL +#define SAI_FIFOStatus_HalfFull SAI_FIFOSTATUS_HALFFULL +#define SAI_FIFOStatus_3QuartersFull SAI_FIFOSTATUS_3QUARTERFULL +#define SAI_FIFOStatus_Full SAI_FIFOSTATUS_FULL +#define IS_SAI_BLOCK_MONO_STREO_MODE IS_SAI_BLOCK_MONO_STEREO_MODE +#define SAI_SYNCHRONOUS_EXT SAI_SYNCHRONOUS_EXT_SAI1 +#define SAI_SYNCEXT_IN_ENABLE SAI_SYNCEXT_OUTBLOCKA_ENABLE +/** + * @} + */ + +/** @defgroup HAL_SPDIFRX_Aliased_Macros HAL SPDIFRX Aliased Macros maintained for legacy purpose + * @{ + */ +#if defined(STM32H7) +#define HAL_SPDIFRX_ReceiveControlFlow HAL_SPDIFRX_ReceiveCtrlFlow +#define HAL_SPDIFRX_ReceiveControlFlow_IT HAL_SPDIFRX_ReceiveCtrlFlow_IT +#define HAL_SPDIFRX_ReceiveControlFlow_DMA HAL_SPDIFRX_ReceiveCtrlFlow_DMA +#endif +/** + * @} + */ + +/** @defgroup HAL_HRTIM_Aliased_Functions HAL HRTIM Aliased Functions maintained for legacy purpose + * @{ + */ +#if defined (STM32H7) || defined (STM32G4) || defined (STM32F3) +#define HAL_HRTIM_WaveformCounterStart_IT HAL_HRTIM_WaveformCountStart_IT +#define HAL_HRTIM_WaveformCounterStart_DMA HAL_HRTIM_WaveformCountStart_DMA +#define HAL_HRTIM_WaveformCounterStart HAL_HRTIM_WaveformCountStart +#define HAL_HRTIM_WaveformCounterStop_IT HAL_HRTIM_WaveformCountStop_IT +#define HAL_HRTIM_WaveformCounterStop_DMA HAL_HRTIM_WaveformCountStop_DMA +#define HAL_HRTIM_WaveformCounterStop HAL_HRTIM_WaveformCountStop +#endif +/** + * @} + */ + +/** @defgroup HAL_QSPI_Aliased_Macros HAL QSPI Aliased Macros maintained for legacy purpose + * @{ + */ +#if defined (STM32L4) || defined (STM32F4) || defined (STM32F7) || defined(STM32H7) +#define HAL_QPSI_TIMEOUT_DEFAULT_VALUE HAL_QSPI_TIMEOUT_DEFAULT_VALUE +#endif /* STM32L4 || STM32F4 || STM32F7 */ +/** + * @} + */ + +/** @defgroup HAL_Generic_Aliased_Macros HAL Generic Aliased Macros maintained for legacy purpose + * @{ + */ +#if defined (STM32F7) +#define ART_ACCLERATOR_ENABLE ART_ACCELERATOR_ENABLE +#endif /* STM32F7 */ +/** + * @} + */ + +/** @defgroup HAL_PPP_Aliased_Macros HAL PPP Aliased Macros maintained for legacy purpose + * @{ + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32_HAL_LEGACY */ + + diff --git a/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal.h b/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal.h new file mode 100644 index 0000000..1f855e2 --- /dev/null +++ b/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal.h @@ -0,0 +1,838 @@ +/** + ****************************************************************************** + * @file stm32g0xx_hal.h + * @author MCD Application Team + * @brief This file contains all the functions prototypes for the HAL + * module driver. + ****************************************************************************** + * @attention + * + * Copyright (c) 2018 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32G0xx_HAL_H +#define STM32G0xx_HAL_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32g0xx_hal_conf.h" + +/** @addtogroup STM32G0xx_HAL_Driver + * @{ + */ + +/** @defgroup HAL HAL + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ +/** @defgroup HAL_TICK_FREQ Tick Frequency + * @{ + */ +typedef enum +{ + HAL_TICK_FREQ_10HZ = 100U, + HAL_TICK_FREQ_100HZ = 10U, + HAL_TICK_FREQ_1KHZ = 1U, + HAL_TICK_FREQ_DEFAULT = HAL_TICK_FREQ_1KHZ +} HAL_TickFreqTypeDef; +/** + * @} + */ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup HAL_Exported_Constants HAL Exported Constants + * @{ + */ + +/** @defgroup SYSCFG_Exported_Constants SYSCFG Exported Constants + * @{ + */ + +/** @defgroup SYSCFG_BootMode Boot Mode + * @{ + */ +#define SYSCFG_BOOT_MAINFLASH 0x00000000U /*!< Main Flash memory mapped at 0x0000 0000 */ +#define SYSCFG_BOOT_SYSTEMFLASH SYSCFG_CFGR1_MEM_MODE_0 /*!< System Flash memory mapped at 0x0000 0000 */ +#define SYSCFG_BOOT_SRAM (SYSCFG_CFGR1_MEM_MODE_1 | SYSCFG_CFGR1_MEM_MODE_0) /*!< Embedded SRAM mapped at 0x0000 0000 */ + +/** + * @} + */ + +/** @defgroup SYSCFG_Break Break + * @{ + */ +#define SYSCFG_BREAK_SP SYSCFG_CFGR2_SPL /*!< Enables and locks the SRAM Parity error signal with Break Input of TIM1/15/16/17 */ +#if defined(SYSCFG_CFGR2_PVDL) +#define SYSCFG_BREAK_PVD SYSCFG_CFGR2_PVDL /*!< Enables and locks the PVD connection with TIM1/15/16/17 Break Input and also the PVDE and PLS bits of the Power Control Interface */ +#endif /* SYSCFG_CFGR2_PVDL */ +#define SYSCFG_BREAK_LOCKUP SYSCFG_CFGR2_CLL /*!< Enables and locks the LOCKUP output of CortexM0+ with Break Input of TIM1/15/16/17 */ +#define SYSCFG_BREAK_ECC SYSCFG_CFGR2_ECCL /*!< Enables and locks the ECC of CortexM0+ with Break Input of TIM1/15/16/17 */ +/** + * @} + */ + +#if defined(SYSCFG_CDEN_SUPPORT) +/** @defgroup SYSCFG_ClampingDiode Clamping Diode + * @{ + */ +#define SYSCFG_CDEN_PA1 SYSCFG_CFGR2_PA1_CDEN /*!< Enables Clamping Diode on PA1 */ +#define SYSCFG_CDEN_PA3 SYSCFG_CFGR2_PA3_CDEN /*!< Enables Clamping Diode on PA3 */ +#define SYSCFG_CDEN_PA5 SYSCFG_CFGR2_PA5_CDEN /*!< Enables Clamping Diode on PA5 */ +#define SYSCFG_CDEN_PA6 SYSCFG_CFGR2_PA6_CDEN /*!< Enables Clamping Diode on PA6 */ +#define SYSCFG_CDEN_PA13 SYSCFG_CFGR2_PA13_CDEN /*!< Enables Clamping Diode on PA13 */ +#define SYSCFG_CDEN_PB0 SYSCFG_CFGR2_PB0_CDEN /*!< Enables Clamping Diode on PB0 */ +#define SYSCFG_CDEN_PB1 SYSCFG_CFGR2_PB1_CDEN /*!< Enables Clamping Diode on PB1 */ +#define SYSCFG_CDEN_PB2 SYSCFG_CFGR2_PB2_CDEN /*!< Enables Clamping Diode on PB2 */ + +/** + * @} + */ +#endif /* SYSCFG_CDEN_SUPPORT */ + +/** @defgroup HAL_Pin_remapping Pin remapping + * @{ + */ +/* Only available on cut2.0 */ +#define SYSCFG_REMAP_PA11 SYSCFG_CFGR1_PA11_RMP /*!< PA11 pad behaves digitally as PA9 GPIO pin */ +#define SYSCFG_REMAP_PA12 SYSCFG_CFGR1_PA12_RMP /*!< PA12 pad behaves digitally as PA10 GPIO pin */ +/** + * @} + */ + +/** @defgroup HAL_IR_ENV_SEL IR Modulation Envelope signal selection + * @{ + */ +#define HAL_SYSCFG_IRDA_ENV_SEL_TIM16 (SYSCFG_CFGR1_IR_MOD_0 & SYSCFG_CFGR1_IR_MOD_1) /*!< 00: Timer16 is selected as IR Modulation envelope source */ +#define HAL_SYSCFG_IRDA_ENV_SEL_USART1 (SYSCFG_CFGR1_IR_MOD_0) /*!< 01: USART1 is selected as IR Modulation envelope source */ +#if defined(USART4) +#define HAL_SYSCFG_IRDA_ENV_SEL_USART4 (SYSCFG_CFGR1_IR_MOD_1) /*!< 10: USART4 is selected as IR Modulation envelope source */ +#else +#define HAL_SYSCFG_IRDA_ENV_SEL_USART2 (SYSCFG_CFGR1_IR_MOD_1) /*!< 10: USART2 is selected as IR Modulation envelope source */ +#endif /* USART4 */ + +/** + * @} + */ + +/** @defgroup HAL_IR_POL_SEL IR output polarity selection + * @{ + */ +#define HAL_SYSCFG_IRDA_POLARITY_NOT_INVERTED 0x00000000U /*!< 00: IR output polarity not inverted */ +#define HAL_SYSCFG_IRDA_POLARITY_INVERTED SYSCFG_CFGR1_IR_POL /*!< 01: IR output polarity inverted */ + +/** + * @} + */ + +#if defined(VREFBUF) +/** @defgroup SYSCFG_VREFBUF_VoltageScale VREFBUF Voltage Scale + * @{ + */ +#define SYSCFG_VREFBUF_VOLTAGE_SCALE0 0x00000000U /*!< Voltage reference scale 0: VREF_OUT1 around 2.048 V. + This requires VDDA equal to or higher than 2.4 V. */ +#define SYSCFG_VREFBUF_VOLTAGE_SCALE1 VREFBUF_CSR_VRS /*!< Voltage reference scale 1: VREF_OUT1 around 2.5 V. + This requires VDDA equal to or higher than 2.8 V. */ + +/** + * @} + */ + +/** @defgroup SYSCFG_VREFBUF_HighImpedance VREFBUF High Impedance + * @{ + */ +#define SYSCFG_VREFBUF_HIGH_IMPEDANCE_DISABLE 0x00000000U /*!< VREF_plus pin is internally connected to Voltage reference buffer output */ +#define SYSCFG_VREFBUF_HIGH_IMPEDANCE_ENABLE VREFBUF_CSR_HIZ /*!< VREF_plus pin is high impedance */ + +/** + * @} + */ +#endif /* VREFBUF */ + +/** @defgroup SYSCFG_FastModePlus_GPIO Fast mode Plus on GPIO + * @{ + */ + +/** @brief Fast mode Plus driving capability on a specific GPIO + */ +#define SYSCFG_FASTMODEPLUS_PB6 SYSCFG_CFGR1_I2C_PB6_FMP /*!< Enable Fast mode Plus on PB6 */ +#define SYSCFG_FASTMODEPLUS_PB7 SYSCFG_CFGR1_I2C_PB7_FMP /*!< Enable Fast mode Plus on PB7 */ +#define SYSCFG_FASTMODEPLUS_PB8 SYSCFG_CFGR1_I2C_PB8_FMP /*!< Enable Fast mode Plus on PB8 */ +#define SYSCFG_FASTMODEPLUS_PB9 SYSCFG_CFGR1_I2C_PB9_FMP /*!< Enable Fast mode Plus on PB9 */ +#define SYSCFG_FASTMODEPLUS_PA9 SYSCFG_CFGR1_I2C_PA9_FMP /*!< Enable Fast mode Plus on PA9 */ +#define SYSCFG_FASTMODEPLUS_PA10 SYSCFG_CFGR1_I2C_PA10_FMP /*!< Enable Fast mode Plus on PA10 */ + +/** + * @} + */ + +/** @defgroup SYSCFG_FastModePlus_I2Cx Fast mode Plus driving capability activation for I2Cx + * @{ + */ + +/** @brief Fast mode Plus driving capability on a specific GPIO + */ +#define SYSCFG_FASTMODEPLUS_I2C1 SYSCFG_CFGR1_I2C1_FMP /*!< Enable Fast mode Plus on I2C1 */ +#define SYSCFG_FASTMODEPLUS_I2C2 SYSCFG_CFGR1_I2C2_FMP /*!< Enable Fast mode Plus on I2C2 */ +#if defined (I2C3) +#define SYSCFG_FASTMODEPLUS_I2C3 SYSCFG_CFGR1_I2C3_FMP /*!< Enable Fast mode Plus on I2C3 */ +#endif /* I2C3 */ + +/** + * @} + */ +#if defined (SYSCFG_CFGR1_UCPD1_STROBE) || defined (SYSCFG_CFGR1_UCPD2_STROBE) +/** @defgroup SYSCFG_UCPDx_STROBE SYSCFG Dead Battery feature configuration + * @{ + */ +#define SYSCFG_UCPD1_STROBE SYSCFG_CFGR1_UCPD1_STROBE /*!< UCPD1 Dead battery sw configuration */ +#define SYSCFG_UCPD2_STROBE SYSCFG_CFGR1_UCPD2_STROBE /*!< UCPD2 Dead battery sw configuration */ +/** + * @} + */ +#endif /* SYSCFG_CFGR1_UCPD1_STROBE) || SYSCFG_CFGR1_UCPD2_STROBE */ + +/** @defgroup HAL_ISR_Wrapper HAL ISR Wrapper + * @brief ISR Wrapper + * @{ + */ +#define HAL_SYSCFG_ITLINE0 0x00000000U /*!< Internal define for macro handling */ +#define HAL_SYSCFG_ITLINE1 0x00000001U /*!< Internal define for macro handling */ +#define HAL_SYSCFG_ITLINE2 0x00000002U /*!< Internal define for macro handling */ +#define HAL_SYSCFG_ITLINE3 0x00000003U /*!< Internal define for macro handling */ +#define HAL_SYSCFG_ITLINE4 0x00000004U /*!< Internal define for macro handling */ +#define HAL_SYSCFG_ITLINE5 0x00000005U /*!< Internal define for macro handling */ +#define HAL_SYSCFG_ITLINE6 0x00000006U /*!< Internal define for macro handling */ +#define HAL_SYSCFG_ITLINE7 0x00000007U /*!< Internal define for macro handling */ +#define HAL_SYSCFG_ITLINE8 0x00000008U /*!< Internal define for macro handling */ +#define HAL_SYSCFG_ITLINE9 0x00000009U /*!< Internal define for macro handling */ +#define HAL_SYSCFG_ITLINE10 0x0000000AU /*!< Internal define for macro handling */ +#define HAL_SYSCFG_ITLINE11 0x0000000BU /*!< Internal define for macro handling */ +#define HAL_SYSCFG_ITLINE12 0x0000000CU /*!< Internal define for macro handling */ +#define HAL_SYSCFG_ITLINE13 0x0000000DU /*!< Internal define for macro handling */ +#define HAL_SYSCFG_ITLINE14 0x0000000EU /*!< Internal define for macro handling */ +#define HAL_SYSCFG_ITLINE15 0x0000000FU /*!< Internal define for macro handling */ +#define HAL_SYSCFG_ITLINE16 0x00000010U /*!< Internal define for macro handling */ +#define HAL_SYSCFG_ITLINE17 0x00000011U /*!< Internal define for macro handling */ +#define HAL_SYSCFG_ITLINE18 0x00000012U /*!< Internal define for macro handling */ +#define HAL_SYSCFG_ITLINE19 0x00000013U /*!< Internal define for macro handling */ +#define HAL_SYSCFG_ITLINE20 0x00000014U /*!< Internal define for macro handling */ +#define HAL_SYSCFG_ITLINE21 0x00000015U /*!< Internal define for macro handling */ +#define HAL_SYSCFG_ITLINE22 0x00000016U /*!< Internal define for macro handling */ +#define HAL_SYSCFG_ITLINE23 0x00000017U /*!< Internal define for macro handling */ +#define HAL_SYSCFG_ITLINE24 0x00000018U /*!< Internal define for macro handling */ +#define HAL_SYSCFG_ITLINE25 0x00000019U /*!< Internal define for macro handling */ +#define HAL_SYSCFG_ITLINE26 0x0000001AU /*!< Internal define for macro handling */ +#define HAL_SYSCFG_ITLINE27 0x0000001BU /*!< Internal define for macro handling */ +#define HAL_SYSCFG_ITLINE28 0x0000001CU /*!< Internal define for macro handling */ +#define HAL_SYSCFG_ITLINE29 0x0000001DU /*!< Internal define for macro handling */ +#define HAL_SYSCFG_ITLINE30 0x0000001EU /*!< Internal define for macro handling */ +#define HAL_SYSCFG_ITLINE31 0x0000001FU /*!< Internal define for macro handling */ + +#define HAL_ITLINE_WWDG ((HAL_SYSCFG_ITLINE0 << 0x18U) | SYSCFG_ITLINE0_SR_EWDG) /*!< WWDG has expired .... */ +#if defined (PWR_PVD_SUPPORT) +#define HAL_ITLINE_PVDOUT ((HAL_SYSCFG_ITLINE1 << 0x18U) | SYSCFG_ITLINE1_SR_PVDOUT) /*!< Power voltage detection Interrupt .... */ +#endif /* PWR_PVD_SUPPORT */ +#if defined (PWR_PVM_SUPPORT) +#define HAL_ITLINE_PVMOUT ((HAL_SYSCFG_ITLINE1 << 0x18U) | SYSCFG_ITLINE1_SR_PVMOUT) /*!< Power voltage monitor Interrupt .... */ +#endif /* PWR_PVM_SUPPORT */ +#define HAL_ITLINE_RTC ((HAL_SYSCFG_ITLINE2 << 0x18U) | SYSCFG_ITLINE2_SR_RTC) /*!< RTC -> exti[19] Interrupt */ +#define HAL_ITLINE_TAMPER ((HAL_SYSCFG_ITLINE2 << 0x18U) | SYSCFG_ITLINE2_SR_TAMPER) /*!< TAMPER -> exti[21] interrupt .... */ +#define HAL_ITLINE_FLASH_ECC ((HAL_SYSCFG_ITLINE3 << 0x18U) | SYSCFG_ITLINE3_SR_FLASH_ECC) /*!< Flash ECC Interrupt */ +#define HAL_ITLINE_FLASH_ITF ((HAL_SYSCFG_ITLINE3 << 0x18U) | SYSCFG_ITLINE3_SR_FLASH_ITF) /*!< Flash ITF Interrupt */ +#define HAL_ITLINE_CLK_CTRL ((HAL_SYSCFG_ITLINE4 << 0x18U) | SYSCFG_ITLINE4_SR_CLK_CTRL) /*!< CLK Control Interrupt */ +#if defined (CRS) +#define HAL_ITLINE_CRS ((HAL_SYSCFG_ITLINE4 << 0x18U) | SYSCFG_ITLINE4_SR_CRS) /*!< CRS Interrupt */ +#endif /*CRS */ +#define HAL_ITLINE_EXTI0 ((HAL_SYSCFG_ITLINE5 << 0x18U) | SYSCFG_ITLINE5_SR_EXTI0) /*!< External Interrupt 0 */ +#define HAL_ITLINE_EXTI1 ((HAL_SYSCFG_ITLINE5 << 0x18U) | SYSCFG_ITLINE5_SR_EXTI1) /*!< External Interrupt 1 */ +#define HAL_ITLINE_EXTI2 ((HAL_SYSCFG_ITLINE6 << 0x18U) | SYSCFG_ITLINE6_SR_EXTI2) /*!< External Interrupt 2 */ +#define HAL_ITLINE_EXTI3 ((HAL_SYSCFG_ITLINE6 << 0x18U) | SYSCFG_ITLINE6_SR_EXTI3) /*!< External Interrupt 3 */ +#define HAL_ITLINE_EXTI4 ((HAL_SYSCFG_ITLINE7 << 0x18U) | SYSCFG_ITLINE7_SR_EXTI4) /*!< EXTI4 Interrupt */ +#define HAL_ITLINE_EXTI5 ((HAL_SYSCFG_ITLINE7 << 0x18U) | SYSCFG_ITLINE7_SR_EXTI5) /*!< EXTI5 Interrupt */ +#define HAL_ITLINE_EXTI6 ((HAL_SYSCFG_ITLINE7 << 0x18U) | SYSCFG_ITLINE7_SR_EXTI6) /*!< EXTI6 Interrupt */ +#define HAL_ITLINE_EXTI7 ((HAL_SYSCFG_ITLINE7 << 0x18U) | SYSCFG_ITLINE7_SR_EXTI7) /*!< EXTI7 Interrupt */ +#define HAL_ITLINE_EXTI8 ((HAL_SYSCFG_ITLINE7 << 0x18U) | SYSCFG_ITLINE7_SR_EXTI8) /*!< EXTI8 Interrupt */ +#define HAL_ITLINE_EXTI9 ((HAL_SYSCFG_ITLINE7 << 0x18U) | SYSCFG_ITLINE7_SR_EXTI9) /*!< EXTI9 Interrupt */ +#define HAL_ITLINE_EXTI10 ((HAL_SYSCFG_ITLINE7 << 0x18U) | SYSCFG_ITLINE7_SR_EXTI10) /*!< EXTI10 Interrupt */ +#define HAL_ITLINE_EXTI11 ((HAL_SYSCFG_ITLINE7 << 0x18U) | SYSCFG_ITLINE7_SR_EXTI11) /*!< EXTI11 Interrupt */ +#define HAL_ITLINE_EXTI12 ((HAL_SYSCFG_ITLINE7 << 0x18U) | SYSCFG_ITLINE7_SR_EXTI12) /*!< EXTI12 Interrupt */ +#define HAL_ITLINE_EXTI13 ((HAL_SYSCFG_ITLINE7 << 0x18U) | SYSCFG_ITLINE7_SR_EXTI13) /*!< EXTI13 Interrupt */ +#define HAL_ITLINE_EXTI14 ((HAL_SYSCFG_ITLINE7 << 0x18U) | SYSCFG_ITLINE7_SR_EXTI14) /*!< EXTI14 Interrupt */ +#define HAL_ITLINE_EXTI15 ((HAL_SYSCFG_ITLINE7 << 0x18U) | SYSCFG_ITLINE7_SR_EXTI15) /*!< EXTI15 Interrupt */ +#if defined (UCPD1) +#define HAL_ITLINE_UCPD1 ((HAL_SYSCFG_ITLINE8 << 0x18U) | SYSCFG_ITLINE8_SR_UCPD1) /*!< UCPD1 Interrupt */ +#endif /* UCPD1 */ +#if defined (UCPD2) +#define HAL_ITLINE_UCPD2 ((HAL_SYSCFG_ITLINE8 << 0x18U) | SYSCFG_ITLINE8_SR_UCPD2) /*!< UCPD2 Interrupt */ +#endif /* UCPD2 */ +#if defined (STM32G0C1xx) || defined (STM32G0B1xx) || defined (STM32G0B0xx) +#define HAL_ITLINE_USB ((HAL_SYSCFG_ITLINE8 << 0x18U) | SYSCFG_ITLINE8_SR_USB) /*!< USB Interrupt */ +#endif /* STM32G0C1xx) || STM32G0B1xx) || STM32G0B0xx */ +#define HAL_ITLINE_DMA1_CH1 ((HAL_SYSCFG_ITLINE9 << 0x18U) | SYSCFG_ITLINE9_SR_DMA1_CH1) /*!< DMA1 Channel 1 Interrupt */ +#define HAL_ITLINE_DMA1_CH2 ((HAL_SYSCFG_ITLINE10 << 0x18U) | SYSCFG_ITLINE10_SR_DMA1_CH2) /*!< DMA1 Channel 2 Interrupt */ +#define HAL_ITLINE_DMA1_CH3 ((HAL_SYSCFG_ITLINE10 << 0x18U) | SYSCFG_ITLINE10_SR_DMA1_CH3) /*!< DMA1 Channel 3 Interrupt */ +#define HAL_ITLINE_DMAMUX1 ((HAL_SYSCFG_ITLINE11 << 0x18U) | SYSCFG_ITLINE11_SR_DMAMUX1) /*!< DMAMUX1 Interrupt */ +#define HAL_ITLINE_DMA1_CH4 ((HAL_SYSCFG_ITLINE11 << 0x18U) | SYSCFG_ITLINE11_SR_DMA1_CH4) /*!< DMA1 Channel 4 Interrupt */ +#define HAL_ITLINE_DMA1_CH5 ((HAL_SYSCFG_ITLINE11 << 0x18U) | SYSCFG_ITLINE11_SR_DMA1_CH5) /*!< DMA1 Channel 5 Interrupt */ +#if defined(DMA1_Channel7) +#define HAL_ITLINE_DMA1_CH6 ((HAL_SYSCFG_ITLINE11 << 0x18U) | SYSCFG_ITLINE11_SR_DMA1_CH6) /*!< DMA1 Channel 6 Interrupt */ +#define HAL_ITLINE_DMA1_CH7 ((HAL_SYSCFG_ITLINE11 << 0x18U) | SYSCFG_ITLINE11_SR_DMA1_CH7) /*!< DMA1 Channel 7 Interrupt */ +#endif /* DMA1_Channel7 */ +#if defined (DMA2) +#define HAL_ITLINE_DMA2_CH1 ((HAL_SYSCFG_ITLINE11 << 0x18U) | SYSCFG_ITLINE11_SR_DMA2_CH1) /*!< DMA2 Channel 1 Interrupt */ +#define HAL_ITLINE_DMA2_CH2 ((HAL_SYSCFG_ITLINE11 << 0x18U) | SYSCFG_ITLINE11_SR_DMA2_CH2) /*!< DMA2 Channel 2 Interrupt */ +#define HAL_ITLINE_DMA2_CH3 ((HAL_SYSCFG_ITLINE11 << 0x18U) | SYSCFG_ITLINE11_SR_DMA2_CH3) /*!< DMA2 Channel 3 Interrupt */ +#define HAL_ITLINE_DMA2_CH4 ((HAL_SYSCFG_ITLINE11 << 0x18U) | SYSCFG_ITLINE11_SR_DMA2_CH4) /*!< DMA2 Channel 4 Interrupt */ +#define HAL_ITLINE_DMA2_CH5 ((HAL_SYSCFG_ITLINE11 << 0x18U) | SYSCFG_ITLINE11_SR_DMA2_CH5) /*!< DMA2 Channel 5 Interrupt */ +#endif /* DMA2 */ +#define HAL_ITLINE_ADC ((HAL_SYSCFG_ITLINE12 << 0x18U) | SYSCFG_ITLINE12_SR_ADC) /*!< ADC Interrupt */ +#if defined (COMP1) +#define HAL_ITLINE_COMP1 ((HAL_SYSCFG_ITLINE12 << 0x18U) | SYSCFG_ITLINE12_SR_COMP1) /*!< COMP1 Interrupt -> exti[17] */ +#endif /* COMP1 */ +#if defined (COMP2) +#define HAL_ITLINE_COMP2 ((HAL_SYSCFG_ITLINE12 << 0x18U) | SYSCFG_ITLINE12_SR_COMP2) /*!< COMP2 Interrupt -> exti[18] */ +#endif /* COMP2 */ +#if defined (COMP3) +#define HAL_ITLINE_COMP3 ((HAL_SYSCFG_ITLINE12 << 0x18U) | SYSCFG_ITLINE12_SR_COMP3) /*!< COMP3 Interrupt -> exti[1x] */ +#endif /* COMP3 */ +#define HAL_ITLINE_TIM1_BRK ((HAL_SYSCFG_ITLINE13 << 0x18U) | SYSCFG_ITLINE13_SR_TIM1_BRK) /*!< TIM1 BRK Interrupt */ +#define HAL_ITLINE_TIM1_UPD ((HAL_SYSCFG_ITLINE13 << 0x18U) | SYSCFG_ITLINE13_SR_TIM1_UPD) /*!< TIM1 UPD Interrupt */ +#define HAL_ITLINE_TIM1_TRG ((HAL_SYSCFG_ITLINE13 << 0x18U) | SYSCFG_ITLINE13_SR_TIM1_TRG) /*!< TIM1 TRG Interrupt */ +#define HAL_ITLINE_TIM1_CCU ((HAL_SYSCFG_ITLINE13 << 0x18U) | SYSCFG_ITLINE13_SR_TIM1_CCU) /*!< TIM1 CCU Interrupt */ +#define HAL_ITLINE_TIM1_CC ((HAL_SYSCFG_ITLINE14 << 0x18U) | SYSCFG_ITLINE14_SR_TIM1_CC) /*!< TIM1 CC Interrupt */ +#if defined (TIM2) +#define HAL_ITLINE_TIM2 ((HAL_SYSCFG_ITLINE15 << 0x18U) | SYSCFG_ITLINE15_SR_TIM2_GLB) /*!< TIM2 Interrupt */ +#endif /* TIM2 */ +#define HAL_ITLINE_TIM3 ((HAL_SYSCFG_ITLINE16 << 0x18U) | SYSCFG_ITLINE16_SR_TIM3_GLB) /*!< TIM3 Interrupt */ +#if defined (TIM4) +#define HAL_ITLINE_TIM4 ((HAL_SYSCFG_ITLINE16 << 0x18U) | SYSCFG_ITLINE16_SR_TIM4_GLB) /*!< TIM4 Interrupt */ +#endif /* TIM4 */ +#if defined(TIM6) +#define HAL_ITLINE_TIM6 ((HAL_SYSCFG_ITLINE17 << 0x18U) | SYSCFG_ITLINE17_SR_TIM6_GLB) /*!< TIM6 Interrupt */ +#endif /* TIM6 */ +#if defined(DAC1) +#define HAL_ITLINE_DAC ((HAL_SYSCFG_ITLINE17 << 0x18U) | SYSCFG_ITLINE17_SR_DAC) /*!< DAC Interrupt */ +#endif /* DAC1 */ +#if defined(LPTIM1) +#define HAL_ITLINE_LPTIM1 ((HAL_SYSCFG_ITLINE17 << 0x18U) | SYSCFG_ITLINE17_SR_LPTIM1_GLB) /*!< LPTIM1 Interrupt -> exti[29] */ +#endif /* LPTIM1 */ +#if defined(TIM7) +#define HAL_ITLINE_TIM7 ((HAL_SYSCFG_ITLINE18 << 0x18U) | SYSCFG_ITLINE18_SR_TIM7_GLB) /*!< TIM7 Interrupt */ +#endif /* TIM7 */ +#if defined(LPTIM2) +#define HAL_ITLINE_LPTIM2 ((HAL_SYSCFG_ITLINE18 << 0x18U) | SYSCFG_ITLINE18_SR_LPTIM2_GLB) /*!< LPTIM2 Interrupt -> exti[30] */ +#endif /* LPTIM2 */ +#define HAL_ITLINE_TIM14 ((HAL_SYSCFG_ITLINE19 << 0x18U) | SYSCFG_ITLINE19_SR_TIM14_GLB) /*!< TIM14 Interrupt */ +#if defined(TIM15) +#define HAL_ITLINE_TIM15 ((HAL_SYSCFG_ITLINE20 << 0x18U) | SYSCFG_ITLINE20_SR_TIM15_GLB) /*!< TIM15 Interrupt */ +#endif /* TIM15 */ +#define HAL_ITLINE_TIM16 ((HAL_SYSCFG_ITLINE21 << 0x18U) | SYSCFG_ITLINE21_SR_TIM16_GLB) /*!< TIM16 Interrupt */ +#if defined (FDCAN1) || defined (FDCAN2) +#define HAL_ITLINE_FDCAN1_IT0 ((HAL_SYSCFG_ITLINE21 << 0x18U) | SYSCFG_ITLINE21_SR_FDCAN1_IT0) /*!< FDCAN1_IT0 Interrupt */ +#define HAL_ITLINE_FDCAN2_IT0 ((HAL_SYSCFG_ITLINE21 << 0x18U) | SYSCFG_ITLINE21_SR_FDCAN2_IT0) /*!< FDCAN2_IT0 Interrupt */ +#endif /* FDCAN1 || FDCAN2 */ +#define HAL_ITLINE_TIM17 ((HAL_SYSCFG_ITLINE22 << 0x18U) | SYSCFG_ITLINE22_SR_TIM17_GLB) /*!< TIM17 Interrupt */ +#if defined (FDCAN1) || defined (FDCAN2) +#define HAL_ITLINE_FDCAN1_IT1 ((HAL_SYSCFG_ITLINE22 << 0x18U) | SYSCFG_ITLINE22_SR_FDCAN1_IT1) /*!< FDCAN1_IT1 Interrupt */ +#define HAL_ITLINE_FDCAN2_IT1 ((HAL_SYSCFG_ITLINE22 << 0x18U) | SYSCFG_ITLINE22_SR_FDCAN2_IT1) /*!< FDCAN2_IT1 Interrupt */ +#endif /* FDCAN1 || FDCAN2 */ +#define HAL_ITLINE_I2C1 ((HAL_SYSCFG_ITLINE23 << 0x18U) | SYSCFG_ITLINE23_SR_I2C1_GLB) /*!< I2C1 Interrupt -> exti[23] */ +#define HAL_ITLINE_I2C2 ((HAL_SYSCFG_ITLINE24 << 0x18U) | SYSCFG_ITLINE24_SR_I2C2_GLB) /*!< I2C2 Interrupt -> exti[24] */ +#if defined (I2C3) +#define HAL_ITLINE_I2C3 ((HAL_SYSCFG_ITLINE24 << 0x18U) | SYSCFG_ITLINE24_SR_I2C3_GLB) /*!< I2C3 Interrupt -> exti[22] */ +#endif /* I2C3 */ +#define HAL_ITLINE_SPI1 ((HAL_SYSCFG_ITLINE25 << 0x18U) | SYSCFG_ITLINE25_SR_SPI1) /*!< SPI1 Interrupt */ +#define HAL_ITLINE_SPI2 ((HAL_SYSCFG_ITLINE26 << 0x18U) | SYSCFG_ITLINE26_SR_SPI2) /*!< SPI2 Interrupt */ +#if defined (SPI3) +#define HAL_ITLINE_SPI3 ((HAL_SYSCFG_ITLINE26 << 0x18U) | SYSCFG_ITLINE26_SR_SPI3) /*!< SPI3 Interrupt */ +#endif /* SPI3 */ +#define HAL_ITLINE_USART1 ((HAL_SYSCFG_ITLINE27 << 0x18U) | SYSCFG_ITLINE27_SR_USART1_GLB) /*!< USART1 GLB Interrupt -> exti[25] */ +#define HAL_ITLINE_USART2 ((HAL_SYSCFG_ITLINE28 << 0x18U) | SYSCFG_ITLINE28_SR_USART2_GLB) /*!< USART2 GLB Interrupt -> exti[26] */ +#if defined (LPUART2) +#define HAL_ITLINE_LPUART2 ((HAL_SYSCFG_ITLINE28 << 0x18U) | SYSCFG_ITLINE28_SR_LPUART2_GLB) /*!< LPUART2 GLB Interrupt -> exti[26] */ +#endif /* LPUART2 */ +#if defined(USART3) +#define HAL_ITLINE_USART3 ((HAL_SYSCFG_ITLINE29 << 0x18U) | SYSCFG_ITLINE29_SR_USART3_GLB) /*!< USART3 Interrupt .... */ +#endif /* USART3 */ +#if defined(USART4) +#define HAL_ITLINE_USART4 ((HAL_SYSCFG_ITLINE29 << 0x18U) | SYSCFG_ITLINE29_SR_USART4_GLB) /*!< USART4 Interrupt .... */ +#endif /* USART4 */ +#if defined (LPUART1) +#define HAL_ITLINE_LPUART1 ((HAL_SYSCFG_ITLINE29 << 0x18U) | SYSCFG_ITLINE29_SR_LPUART1_GLB) /*!< LPUART1 Interrupt -> exti[28]*/ +#endif /* LPUART1 */ +#if defined (USART5) +#define HAL_ITLINE_USART5 ((HAL_SYSCFG_ITLINE29 << 0x18U) | SYSCFG_ITLINE29_SR_USART5_GLB) /*!< USART5 Interrupt .... */ +#endif /* USART5 */ +#if defined (USART6) +#define HAL_ITLINE_USART6 ((HAL_SYSCFG_ITLINE29 << 0x18U) | SYSCFG_ITLINE29_SR_USART6_GLB) /*!< USART6 Interrupt .... */ +#endif /* USART6 */ +#if defined (CEC) +#define HAL_ITLINE_CEC ((HAL_SYSCFG_ITLINE30 << 0x18U) | SYSCFG_ITLINE30_SR_CEC) /*!< CEC Interrupt -> exti[27] */ +#endif /* CEC */ +#if defined (RNG) +#define HAL_ITLINE_RNG ((HAL_SYSCFG_ITLINE31 << 0x18U) | SYSCFG_ITLINE31_SR_RNG) /*!< RNG Interrupt */ +#endif /* RNG */ +#if defined (AES) +#define HAL_ITLINE_AES ((HAL_SYSCFG_ITLINE31 << 0x18U) | SYSCFG_ITLINE31_SR_AES) /*!< AES Interrupt */ +#endif /* AES */ +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/* Exported macros -----------------------------------------------------------*/ +/** @defgroup HAL_Exported_Macros HAL Exported Macros + * @{ + */ + +/** @defgroup DBG_Exported_Macros DBG Exported Macros + * @{ + */ + +/** @brief Freeze and Unfreeze Peripherals in Debug mode + */ +#if defined(DBG_APB_FZ1_DBG_TIM2_STOP) +#define __HAL_DBGMCU_FREEZE_TIM2() SET_BIT(DBG->APBFZ1, DBG_APB_FZ1_DBG_TIM2_STOP) +#define __HAL_DBGMCU_UNFREEZE_TIM2() CLEAR_BIT(DBG->APBFZ1, DBG_APB_FZ1_DBG_TIM2_STOP) +#endif /* DBG_APB_FZ1_DBG_TIM2_STOP */ + +#if defined(DBG_APB_FZ1_DBG_TIM3_STOP) +#define __HAL_DBGMCU_FREEZE_TIM3() SET_BIT(DBG->APBFZ1, DBG_APB_FZ1_DBG_TIM3_STOP) +#define __HAL_DBGMCU_UNFREEZE_TIM3() CLEAR_BIT(DBG->APBFZ1, DBG_APB_FZ1_DBG_TIM3_STOP) +#endif /* DBG_APB_FZ1_DBG_TIM3_STOP */ + +#if defined(DBG_APB_FZ1_DBG_TIM4_STOP) +#define __HAL_DBGMCU_FREEZE_TIM4() SET_BIT(DBG->APBFZ1, DBG_APB_FZ1_DBG_TIM4_STOP) +#define __HAL_DBGMCU_UNFREEZE_TIM4() CLEAR_BIT(DBG->APBFZ1, DBG_APB_FZ1_DBG_TIM4_STOP) +#endif /* DBG_APB_FZ1_DBG_TIM4_STOP */ + +#if defined(DBG_APB_FZ1_DBG_TIM6_STOP) +#define __HAL_DBGMCU_FREEZE_TIM6() SET_BIT(DBG->APBFZ1, DBG_APB_FZ1_DBG_TIM6_STOP) +#define __HAL_DBGMCU_UNFREEZE_TIM6() CLEAR_BIT(DBG->APBFZ1, DBG_APB_FZ1_DBG_TIM6_STOP) +#endif /* DBG_APB_FZ1_DBG_TIM6_STOP */ + +#if defined(DBG_APB_FZ1_DBG_TIM7_STOP) +#define __HAL_DBGMCU_FREEZE_TIM7() SET_BIT(DBG->APBFZ1, DBG_APB_FZ1_DBG_TIM7_STOP) +#define __HAL_DBGMCU_UNFREEZE_TIM7() CLEAR_BIT(DBG->APBFZ1, DBG_APB_FZ1_DBG_TIM7_STOP) +#endif /* DBG_APB_FZ1_DBG_TIM7_STOP */ + +#if defined(DBG_APB_FZ1_DBG_RTC_STOP) +#define __HAL_DBGMCU_FREEZE_RTC() SET_BIT(DBG->APBFZ1, DBG_APB_FZ1_DBG_RTC_STOP) +#define __HAL_DBGMCU_UNFREEZE_RTC() CLEAR_BIT(DBG->APBFZ1, DBG_APB_FZ1_DBG_RTC_STOP) +#endif /* DBG_APB_FZ1_DBG_RTC_STOP */ + +#if defined(DBG_APB_FZ1_DBG_WWDG_STOP) +#define __HAL_DBGMCU_FREEZE_WWDG() SET_BIT(DBG->APBFZ1, DBG_APB_FZ1_DBG_WWDG_STOP) +#define __HAL_DBGMCU_UNFREEZE_WWDG() CLEAR_BIT(DBG->APBFZ1, DBG_APB_FZ1_DBG_WWDG_STOP) +#endif /* DBG_APB_FZ1_DBG_WWDG_STOP */ + +#if defined(DBG_APB_FZ1_DBG_IWDG_STOP) +#define __HAL_DBGMCU_FREEZE_IWDG() SET_BIT(DBG->APBFZ1, DBG_APB_FZ1_DBG_IWDG_STOP) +#define __HAL_DBGMCU_UNFREEZE_IWDG() CLEAR_BIT(DBG->APBFZ1, DBG_APB_FZ1_DBG_IWDG_STOP) +#endif /* DBG_APB_FZ1_DBG_IWDG_STOP */ + +#if defined(DBG_APB_FZ1_DBG_I2C1_SMBUS_TIMEOUT_STOP) +#define __HAL_DBGMCU_FREEZE_I2C1_TIMEOUT() SET_BIT(DBG->APBFZ1, DBG_APB_FZ1_DBG_I2C1_SMBUS_TIMEOUT_STOP) +#define __HAL_DBGMCU_UNFREEZE_I2C1_TIMEOUT() CLEAR_BIT(DBG->APBFZ1, DBG_APB_FZ1_DBG_I2C1_SMBUS_TIMEOUT_STOP) +#endif /* DBG_APB_FZ1_DBG_I2C1_SMBUS_TIMEOUT_STOP */ + +#if defined(DBG_APB_FZ1_DBG_I2C2_SMBUS_TIMEOUT_STOP) +#define __HAL_DBGMCU_FREEZE_I2C2_TIMEOUT() SET_BIT(DBG->APBFZ1, DBG_APB_FZ1_DBG_I2C2_SMBUS_TIMEOUT_STOP) +#define __HAL_DBGMCU_UNFREEZE_I2C2_TIMEOUT() CLEAR_BIT(DBG->APBFZ1, DBG_APB_FZ1_DBG_I2C2_SMBUS_TIMEOUT_STOP) +#endif /* DBG_APB_FZ1_DBG_I2C2_SMBUS_TIMEOUT_STOP */ + +#if defined(DBG_APB_FZ1_DBG_LPTIM1_STOP) +#define __HAL_DBGMCU_FREEZE_LPTIM1() SET_BIT(DBG->APBFZ1, DBG_APB_FZ1_DBG_LPTIM1_STOP) +#define __HAL_DBGMCU_UNFREEZE_LPTIM1() CLEAR_BIT(DBG->APBFZ1, DBG_APB_FZ1_DBG_LPTIM1_STOP) +#endif /* DBG_APB_FZ1_DBG_LPTIM1_STOP */ + +#if defined(DBG_APB_FZ1_DBG_LPTIM2_STOP) +#define __HAL_DBGMCU_FREEZE_LPTIM2() SET_BIT(DBG->APBFZ1, DBG_APB_FZ1_DBG_LPTIM2_STOP) +#define __HAL_DBGMCU_UNFREEZE_LPTIM2() CLEAR_BIT(DBG->APBFZ1, DBG_APB_FZ1_DBG_LPTIM2_STOP) +#endif /* DBG_APB_FZ1_DBG_LPTIM2_STOP */ + +#if defined(DBG_APB_FZ2_DBG_TIM1_STOP) +#define __HAL_DBGMCU_FREEZE_TIM1() SET_BIT(DBG->APBFZ2, DBG_APB_FZ2_DBG_TIM1_STOP) +#define __HAL_DBGMCU_UNFREEZE_TIM1() CLEAR_BIT(DBG->APBFZ2, DBG_APB_FZ2_DBG_TIM1_STOP) +#endif /* DBG_APB_FZ2_DBG_TIM1_STOP */ + +#if defined(DBG_APB_FZ2_DBG_TIM14_STOP) +#define __HAL_DBGMCU_FREEZE_TIM14() SET_BIT(DBG->APBFZ2, DBG_APB_FZ2_DBG_TIM14_STOP) +#define __HAL_DBGMCU_UNFREEZE_TIM14() CLEAR_BIT(DBG->APBFZ2, DBG_APB_FZ2_DBG_TIM14_STOP) +#endif /* DBG_APB_FZ2_DBG_TIM14_STOP */ + +#if defined(DBG_APB_FZ2_DBG_TIM15_STOP) +#define __HAL_DBGMCU_FREEZE_TIM15() SET_BIT(DBG->APBFZ2, DBG_APB_FZ2_DBG_TIM15_STOP) +#define __HAL_DBGMCU_UNFREEZE_TIM15() CLEAR_BIT(DBG->APBFZ2, DBG_APB_FZ2_DBG_TIM15_STOP) +#endif /* DBG_APB_FZ2_DBG_TIM15_STOP */ + +#if defined(DBG_APB_FZ2_DBG_TIM16_STOP) +#define __HAL_DBGMCU_FREEZE_TIM16() SET_BIT(DBG->APBFZ2, DBG_APB_FZ2_DBG_TIM16_STOP) +#define __HAL_DBGMCU_UNFREEZE_TIM16() CLEAR_BIT(DBG->APBFZ2, DBG_APB_FZ2_DBG_TIM16_STOP) +#endif /* DBG_APB_FZ2_DBG_TIM16_STOP */ + +#if defined(DBG_APB_FZ2_DBG_TIM17_STOP) +#define __HAL_DBGMCU_FREEZE_TIM17() SET_BIT(DBG->APBFZ2, DBG_APB_FZ2_DBG_TIM17_STOP) +#define __HAL_DBGMCU_UNFREEZE_TIM17() CLEAR_BIT(DBG->APBFZ2, DBG_APB_FZ2_DBG_TIM17_STOP) +#endif /* DBG_APB_FZ2_DBG_TIM17_STOP */ + +/** + * @} + */ + +/** @defgroup SYSCFG_Exported_Macros SYSCFG Exported Macros + * @{ + */ + +/** + * @brief ISR wrapper check + * @note Allow to determine interrupt source per line. + */ +#define __HAL_GET_PENDING_IT(__SOURCE__) (SYSCFG->IT_LINE_SR[((__SOURCE__) >> 0x18U)] & ((__SOURCE__) & 0x00FFFFFF)) + +/** @brief Main Flash memory mapped at 0x00000000 + */ +#define __HAL_SYSCFG_REMAPMEMORY_FLASH() CLEAR_BIT(SYSCFG->CFGR1, SYSCFG_CFGR1_MEM_MODE) + +/** @brief System Flash memory mapped at 0x00000000 + */ +#define __HAL_SYSCFG_REMAPMEMORY_SYSTEMFLASH() MODIFY_REG(SYSCFG->CFGR1, SYSCFG_CFGR1_MEM_MODE, SYSCFG_CFGR1_MEM_MODE_0) + +/** @brief Embedded SRAM mapped at 0x00000000 + */ +#define __HAL_SYSCFG_REMAPMEMORY_SRAM() \ + MODIFY_REG(SYSCFG->CFGR1, SYSCFG_CFGR1_MEM_MODE, (SYSCFG_CFGR1_MEM_MODE_1|SYSCFG_CFGR1_MEM_MODE_0)) + +/** + * @brief Return the boot mode as configured by user. + * @retval The boot mode as configured by user. The returned value can be one + * of the following values @ref SYSCFG_BootMode + */ +#define __HAL_SYSCFG_GET_BOOT_MODE() READ_BIT(SYSCFG->CFGR1, SYSCFG_CFGR1_MEM_MODE) + +/** @brief SYSCFG Break ECC lock. + * Enable and lock the connection of Flash ECC error connection to TIM1 Break input. + * @note The selected configuration is locked and can be unlocked only by system reset. + */ +#define __HAL_SYSCFG_BREAK_ECC_LOCK() SET_BIT(SYSCFG->CFGR2, SYSCFG_CFGR2_ECCL) + + +/** @brief SYSCFG Break Cortex-M0+ Lockup lock. + * Enables and locks the connection of Cortex-M0+ LOCKUP (Hardfault) output to TIM1/15/16/17 Break input + * @note The selected configuration is locked and can be unlocked only by system reset. + */ +#define __HAL_SYSCFG_BREAK_LOCKUP_LOCK() SET_BIT(SYSCFG->CFGR2, SYSCFG_CFGR2_CLL) + +#if defined(SYSCFG_CFGR2_PVDL) +/** @brief SYSCFG Break PVD lock. + * Enables and locks the PVD connection with Timer1/15/16/17 Break input, as well as the PVDE and PLS[2:0] in the PWR_CR register + * @note The selected configuration is locked and can be unlocked only by system reset + */ +#define __HAL_SYSCFG_BREAK_PVD_LOCK() SET_BIT(SYSCFG->CFGR2, SYSCFG_CFGR2_PVDL) +#endif /* SYSCFG_CFGR2_PVDL */ + +/** @brief SYSCFG Break SRAM PARITY lock + * Enables and locks the SRAM_PARITY error signal with Break Input of TIMER1/15/16/17 + * @note The selected configuration is locked and can only be unlocked by system reset + */ +#define __HAL_SYSCFG_BREAK_SRAMPARITY_LOCK() SET_BIT(SYSCFG->CFGR2,SYSCFG_CFGR2_SPL) + +/** @brief Parity check on RAM disable macro + * @note Disabling the parity check on RAM locks the configuration bit. + * To re-enable the parity check on RAM perform a system reset. + */ +#define __HAL_SYSCFG_RAM_PARITYCHECK_DISABLE() (SYSCFG->CFGR2 |= SYSCFG_CFGR2_SPF) + +/** @brief Set the PEF bit to clear the SRAM Parity Error Flag. + */ +#define __HAL_SYSCFG_CLEAR_FLAG() SET_BIT(SYSCFG->CFGR2, SYSCFG_CFGR2_SPF) + +/** @brief Fast-mode Plus driving capability enable/disable macros + * @param __FASTMODEPLUS__ This parameter can be a value of @ref SYSCFG_FastModePlus_GPIO + */ +#define __HAL_SYSCFG_FASTMODEPLUS_ENABLE(__FASTMODEPLUS__) do {assert_param(IS_SYSCFG_FASTMODEPLUS((__FASTMODEPLUS__)));\ + SET_BIT(SYSCFG->CFGR1, (__FASTMODEPLUS__));\ + }while(0U) + +#define __HAL_SYSCFG_FASTMODEPLUS_DISABLE(__FASTMODEPLUS__) do {assert_param(IS_SYSCFG_FASTMODEPLUS((__FASTMODEPLUS__)));\ + CLEAR_BIT(SYSCFG->CFGR1, (__FASTMODEPLUS__));\ + }while(0U) + +#if defined(SYSCFG_CDEN_SUPPORT) +/** @brief Clamping Diode on specific pins enable/disable macros + * @param __PIN__ This parameter can be a combination of values @ref SYSCFG_ClampingDiode + */ +#define __HAL_SYSCFG_CLAMPINGDIODE_ENABLE(__PIN__) do {assert_param(IS_SYSCFG_CLAMPINGDIODE((__PIN__)));\ + SET_BIT(SYSCFG->CFGR2, (__PIN__));\ + }while(0U) + +#define __HAL_SYSCFG_CLAMPINGDIODE_DISABLE(__PIN__) do {assert_param(IS_SYSCFG_CLAMPINGDIODE((__PIN__)));\ + CLEAR_BIT(SYSCFG->CFGR2, (__PIN__));\ + }while(0U) +#endif /* SYSCFG_CDEN_SUPPORT */ + +/** @brief ISR wrapper check + * @note Allow to determine interrupt source per line. + */ +#define __HAL_SYSCFG_GET_PENDING_IT(__SOURCE__) \ + (SYSCFG->IT_LINE_SR[((__SOURCE__) >> 0x18U)] & ((__SOURCE__) & 0x00FFFFFFU)) + +/** @brief selection of the modulation envelope signal macro, using bits [7:6] of SYSCFG_CFGR1 register + * @param __SOURCE__ This parameter can be a value of @ref HAL_IR_ENV_SEL + */ +#define __HAL_SYSCFG_IRDA_ENV_SELECTION(__SOURCE__) do {assert_param(IS_HAL_SYSCFG_IRDA_ENV_SEL((__SOURCE__)));\ + CLEAR_BIT(SYSCFG->CFGR1, SYSCFG_CFGR1_IR_MOD);\ + SET_BIT(SYSCFG->CFGR1, (__SOURCE__));\ + }while(0U) + +#define __HAL_SYSCFG_GET_IRDA_ENV_SELECTION() ((SYSCFG->CFGR1) & 0x000000C0U) + +/** @brief IROut Polarity Selection, using bit[5] of SYSCFG_CFGR1 register + * @param __SEL__ This parameter can be a value of @ref HAL_IR_POL_SEL + */ +#define __HAL_SYSCFG_IRDA_OUT_POLARITY_SELECTION(__SEL__) do { assert_param(IS_HAL_SYSCFG_IRDA_POL_SEL((__SEL__)));\ + CLEAR_BIT(SYSCFG->CFGR1, SYSCFG_CFGR1_IR_POL);\ + SET_BIT(SYSCFG->CFGR1,(__SEL__));\ + }while(0U) + +/** + * @brief Return the IROut Polarity mode as configured by user. + * @retval The IROut polarity as configured by user. The returned value can be one + * of @ref HAL_IR_POL_SEL + */ +#define __HAL_SYSCFG_GET_POLARITY() READ_BIT(SYSCFG->CFGR1, SYSCFG_CFGR1_IR_POL) + +/** @brief Break input to TIM1/15/16/17 capability enable/disable macros + * @param __BREAK__ This parameter can be a value of @ref SYSCFG_Break + */ +#define __HAL_SYSCFG_BREAK_ENABLE(__BREAK__) do {assert_param(IS_SYSCFG_BREAK_CONFIG((__BREAK__)));\ + SET_BIT(SYSCFG->CFGR2, (__BREAK__));\ + }while(0U) + +#define __HAL_SYSCFG_BREAK_DISABLE(__BREAK__) do {assert_param(IS_SYSCFG_BREAK_CONFIG((__BREAK__)));\ + CLEAR_BIT(SYSCFG->CFGR2, (__BREAK__));\ + }while(0U) + + +/** + * @} + */ + +/** + * @} + */ + +/* Private macros ------------------------------------------------------------*/ +/** @defgroup SYSCFG_Private_Macros SYSCFG Private Macros + * @{ + */ +#if defined (PWR_PVD_SUPPORT) +#define IS_SYSCFG_BREAK_CONFIG(__CONFIG__) (((__CONFIG__) == SYSCFG_BREAK_SP) || \ + ((__CONFIG__) == SYSCFG_BREAK_PVD) || \ + ((__CONFIG__) == SYSCFG_BREAK_ECC) || \ + ((__CONFIG__) == SYSCFG_BREAK_LOCKUP)) +#else +#define IS_SYSCFG_BREAK_CONFIG(__CONFIG__) (((__CONFIG__) == SYSCFG_BREAK_SP) || \ + ((__CONFIG__) == SYSCFG_BREAK_ECC) || \ + ((__CONFIG__) == SYSCFG_BREAK_LOCKUP)) +#endif /* PWR_PVD_SUPPORT */ + +#if defined(SYSCFG_CDEN_SUPPORT) +#define IS_SYSCFG_CLAMPINGDIODE(__PIN__) ((((__PIN__) & SYSCFG_CDEN_PA1) == SYSCFG_CDEN_PA1) || \ + (((__PIN__) & SYSCFG_CDEN_PA3) == SYSCFG_CDEN_PA3) || \ + (((__PIN__) & SYSCFG_CDEN_PA5) == SYSCFG_CDEN_PA5) || \ + (((__PIN__) & SYSCFG_CDEN_PA6) == SYSCFG_CDEN_PA6) || \ + (((__PIN__) & SYSCFG_CDEN_PA13) == SYSCFG_CDEN_PA13) || \ + (((__PIN__) & SYSCFG_CDEN_PB0) == SYSCFG_CDEN_PB0) || \ + (((__PIN__) & SYSCFG_CDEN_PB1) == SYSCFG_CDEN_PB1) || \ + (((__PIN__) & SYSCFG_CDEN_PB2) == SYSCFG_CDEN_PB2)) +#endif /* SYSCFG_CDEN_SUPPORT */ + +#if defined (USART4) +#define IS_HAL_SYSCFG_IRDA_ENV_SEL(SEL) (((SEL) == HAL_SYSCFG_IRDA_ENV_SEL_TIM16) || \ + ((SEL) == HAL_SYSCFG_IRDA_ENV_SEL_USART1) || \ + ((SEL) == HAL_SYSCFG_IRDA_ENV_SEL_USART4)) +#else +#define IS_HAL_SYSCFG_IRDA_ENV_SEL(SEL) (((SEL) == HAL_SYSCFG_IRDA_ENV_SEL_TIM16) || \ + ((SEL) == HAL_SYSCFG_IRDA_ENV_SEL_USART1) || \ + ((SEL) == HAL_SYSCFG_IRDA_ENV_SEL_USART2)) +#endif /* USART4 */ +#define IS_HAL_SYSCFG_IRDA_POL_SEL(SEL) (((SEL) == HAL_SYSCFG_IRDA_POLARITY_NOT_INVERTED) || \ + ((SEL) == HAL_SYSCFG_IRDA_POLARITY_INVERTED)) + +#if defined (SYSCFG_CFGR1_UCPD1_STROBE) || defined (SYSCFG_CFGR1_UCPD2_STROBE) +#define IS_SYSCFG_DBATT_CONFIG(__CONFIG__) (((__CONFIG__) == SYSCFG_UCPD1_STROBE) || \ + ((__CONFIG__) == SYSCFG_UCPD2_STROBE) || \ + ((__CONFIG__) == (SYSCFG_UCPD1_STROBE | SYSCFG_UCPD2_STROBE))) +#endif /* SYSCFG_CFGR1_UCPD1_STROBE || SYSCFG_CFGR1_UCPD2_STROBE */ +#if defined(VREFBUF) +#define IS_SYSCFG_VREFBUF_VOLTAGE_SCALE(__SCALE__) (((__SCALE__) == SYSCFG_VREFBUF_VOLTAGE_SCALE0) || \ + ((__SCALE__) == SYSCFG_VREFBUF_VOLTAGE_SCALE1)) + +#define IS_SYSCFG_VREFBUF_HIGH_IMPEDANCE(__VALUE__) (((__VALUE__) == SYSCFG_VREFBUF_HIGH_IMPEDANCE_DISABLE) || \ + ((__VALUE__) == SYSCFG_VREFBUF_HIGH_IMPEDANCE_ENABLE)) + +#define IS_SYSCFG_VREFBUF_TRIMMING(__VALUE__) (((__VALUE__) > 0U) && ((__VALUE__) <= VREFBUF_CCR_TRIM)) +#endif /* VREFBUF */ + +#define IS_SYSCFG_FASTMODEPLUS(__PIN__) ((((__PIN__) & SYSCFG_FASTMODEPLUS_PA9) == SYSCFG_FASTMODEPLUS_PA9) || \ + (((__PIN__) & SYSCFG_FASTMODEPLUS_PA10) == SYSCFG_FASTMODEPLUS_PA10) || \ + (((__PIN__) & SYSCFG_FASTMODEPLUS_PB6) == SYSCFG_FASTMODEPLUS_PB6) || \ + (((__PIN__) & SYSCFG_FASTMODEPLUS_PB7) == SYSCFG_FASTMODEPLUS_PB7) || \ + (((__PIN__) & SYSCFG_FASTMODEPLUS_PB8) == SYSCFG_FASTMODEPLUS_PB8) || \ + (((__PIN__) & SYSCFG_FASTMODEPLUS_PB9) == SYSCFG_FASTMODEPLUS_PB9)) + +#define IS_HAL_REMAP_PIN(RMP) (((RMP) == SYSCFG_REMAP_PA11) || \ + ((RMP) == SYSCFG_REMAP_PA12) || \ + ((RMP) == (SYSCFG_REMAP_PA11 | SYSCFG_REMAP_PA12))) +/** + * @} + */ + +/** @defgroup HAL_Private_Macros HAL Private Macros + * @{ + */ +#define IS_TICKFREQ(FREQ) (((FREQ) == HAL_TICK_FREQ_10HZ) || \ + ((FREQ) == HAL_TICK_FREQ_100HZ) || \ + ((FREQ) == HAL_TICK_FREQ_1KHZ)) +/** + * @} + */ +/* Exported functions --------------------------------------------------------*/ + +/** @defgroup HAL_Exported_Functions HAL Exported Functions + * @{ + */ + +/** @defgroup HAL_Exported_Functions_Group1 HAL Initialization and Configuration functions + * @{ + */ + +/* Initialization and Configuration functions ******************************/ +HAL_StatusTypeDef HAL_Init(void); +HAL_StatusTypeDef HAL_DeInit(void); +void HAL_MspInit(void); +void HAL_MspDeInit(void); +HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority); + +/** + * @} + */ + +/** @defgroup HAL_Exported_Functions_Group2 HAL Control functions + * @{ + */ + +/* Peripheral Control functions ************************************************/ +void HAL_IncTick(void); +void HAL_Delay(uint32_t Delay); +uint32_t HAL_GetTick(void); +uint32_t HAL_GetTickPrio(void); +HAL_StatusTypeDef HAL_SetTickFreq(HAL_TickFreqTypeDef Freq); +HAL_TickFreqTypeDef HAL_GetTickFreq(void); +void HAL_SuspendTick(void); +void HAL_ResumeTick(void); +uint32_t HAL_GetHalVersion(void); +uint32_t HAL_GetREVID(void); +uint32_t HAL_GetDEVID(void); +uint32_t HAL_GetUIDw0(void); +uint32_t HAL_GetUIDw1(void); +uint32_t HAL_GetUIDw2(void); + +/** + * @} + */ + +/** @defgroup HAL_Exported_Functions_Group3 DBGMCU Control functions + * @{ + */ + +/* DBGMCU Peripheral Control functions *****************************************/ +void HAL_DBGMCU_EnableDBGStopMode(void); +void HAL_DBGMCU_DisableDBGStopMode(void); +void HAL_DBGMCU_EnableDBGStandbyMode(void); +void HAL_DBGMCU_DisableDBGStandbyMode(void); + +/** + * @} + */ + +/* Exported variables ---------------------------------------------------------*/ +/** @addtogroup HAL_Exported_Variables + * @{ + */ +extern __IO uint32_t uwTick; +extern uint32_t uwTickPrio; +extern HAL_TickFreqTypeDef uwTickFreq; +/** + * @} + */ + +/** @defgroup HAL_Exported_Functions_Group4 SYSCFG configuration functions + * @{ + */ + +/* SYSCFG Control functions ****************************************************/ + +#if defined(VREFBUF) +void HAL_SYSCFG_VREFBUF_VoltageScalingConfig(uint32_t VoltageScaling); +void HAL_SYSCFG_VREFBUF_HighImpedanceConfig(uint32_t Mode); +void HAL_SYSCFG_VREFBUF_TrimmingConfig(uint32_t TrimmingValue); +HAL_StatusTypeDef HAL_SYSCFG_EnableVREFBUF(void); +void HAL_SYSCFG_DisableVREFBUF(void); +#endif /* VREFBUF */ + +void HAL_SYSCFG_EnableIOAnalogSwitchBooster(void); +void HAL_SYSCFG_DisableIOAnalogSwitchBooster(void); +void HAL_SYSCFG_EnableRemap(uint32_t PinRemap); +void HAL_SYSCFG_DisableRemap(uint32_t PinRemap); +#if defined(SYSCFG_CDEN_SUPPORT) +void HAL_SYSCFG_EnableClampingDiode(uint32_t PinConfig); +void HAL_SYSCFG_DisableClampingDiode(uint32_t PinConfig); +#endif /* SYSCFG_CDEN_SUPPORT */ +#if defined (SYSCFG_CFGR1_UCPD1_STROBE) || defined (SYSCFG_CFGR1_UCPD2_STROBE) +void HAL_SYSCFG_StrobeDBattpinsConfig(uint32_t ConfigDeadBattery); +#endif /* SYSCFG_CFGR1_UCPD1_STROBE || SYSCFG_CFGR1_UCPD2_STROBE */ +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32G0xx_HAL_H */ + + diff --git a/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_cortex.h b/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_cortex.h new file mode 100644 index 0000000..0edbed1 --- /dev/null +++ b/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_cortex.h @@ -0,0 +1,385 @@ +/** + ****************************************************************************** + * @file stm32g0xx_hal_cortex.h + * @author MCD Application Team + * @brief Header file of CORTEX HAL module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2018 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file in + * the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32G0xx_HAL_CORTEX_H +#define STM32G0xx_HAL_CORTEX_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32g0xx_hal_def.h" + +/** @addtogroup STM32G0xx_HAL_Driver + * @{ + */ + +/** @defgroup CORTEX CORTEX + * @brief CORTEX HAL module driver + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ +/** @defgroup CORTEX_Exported_Types CORTEX Exported Types + * @{ + */ + +#if (__MPU_PRESENT == 1) +/** @defgroup CORTEX_MPU_Region_Initialization_Structure_definition MPU Region Initialization Structure Definition + * @brief MPU Region initialization structure + * @{ + */ +typedef struct +{ + uint8_t Enable; /*!< Specifies the status of the region. + This parameter can be a value of @ref CORTEX_MPU_Region_Enable */ + uint8_t Number; /*!< Specifies the number of the region to protect. + This parameter can be a value of @ref CORTEX_MPU_Region_Number */ + uint32_t BaseAddress; /*!< Specifies the base address of the region to protect. + */ + uint8_t Size; /*!< Specifies the size of the region to protect. + This parameter can be a value of @ref CORTEX_MPU_Region_Size */ + uint8_t SubRegionDisable; /*!< Specifies the number of the subregion protection to disable. + This parameter must be a number between Min_Data = 0x00 and Max_Data = 0xFF */ + uint8_t TypeExtField; /*!< Specifies the TEX field level. + This parameter can be a value of @ref CORTEX_MPU_TEX_Levels */ + uint8_t AccessPermission; /*!< Specifies the region access permission type. + This parameter can be a value of @ref CORTEX_MPU_Region_Permission_Attributes */ + uint8_t DisableExec; /*!< Specifies the instruction access status. + This parameter can be a value of @ref CORTEX_MPU_Instruction_Access */ + uint8_t IsShareable; /*!< Specifies the shareability status of the protected region. + This parameter can be a value of @ref CORTEX_MPU_Access_Shareable */ + uint8_t IsCacheable; /*!< Specifies the cacheable status of the region protected. + This parameter can be a value of @ref CORTEX_MPU_Access_Cacheable */ + uint8_t IsBufferable; /*!< Specifies the bufferable status of the protected region. + This parameter can be a value of @ref CORTEX_MPU_Access_Bufferable */ +} MPU_Region_InitTypeDef; +/** + * @} + */ +#endif /* __MPU_PRESENT */ + +/** + * @} + */ + +/* Exported constants --------------------------------------------------------*/ + +/** @defgroup CORTEX_Exported_Constants CORTEX Exported Constants + * @{ + */ + +/** @defgroup CORTEX_SysTick_clock_source CORTEX SysTick clock source + * @{ + */ +#define SYSTICK_CLKSOURCE_HCLK_DIV8 0x00000000U +#define SYSTICK_CLKSOURCE_HCLK 0x00000004U + +/** + * @} + */ + +#if (__MPU_PRESENT == 1) +/** @defgroup CORTEX_MPU_HFNMI_PRIVDEF_Control CORTEX MPU HFNMI and PRIVILEGED Access control + * @{ + */ +#define MPU_HFNMI_PRIVDEF_NONE 0x00000000U +#define MPU_HARDFAULT_NMI (MPU_CTRL_HFNMIENA_Msk) +#define MPU_PRIVILEGED_DEFAULT (MPU_CTRL_PRIVDEFENA_Msk) +#define MPU_HFNMI_PRIVDEF (MPU_CTRL_HFNMIENA_Msk | MPU_CTRL_PRIVDEFENA_Msk) +/** + * @} + */ + +/** @defgroup CORTEX_MPU_Region_Enable CORTEX MPU Region Enable + * @{ + */ +#define MPU_REGION_ENABLE ((uint8_t)0x01) +#define MPU_REGION_DISABLE ((uint8_t)0x00) +/** + * @} + */ + +/** @defgroup CORTEX_MPU_Instruction_Access CORTEX MPU Instruction Access + * @{ + */ +#define MPU_INSTRUCTION_ACCESS_ENABLE ((uint8_t)0x00) +#define MPU_INSTRUCTION_ACCESS_DISABLE ((uint8_t)0x01) +/** + * @} + */ + +/** @defgroup CORTEX_MPU_Access_Shareable CORTEX MPU Instruction Access Shareable + * @{ + */ +#define MPU_ACCESS_SHAREABLE ((uint8_t)0x01) +#define MPU_ACCESS_NOT_SHAREABLE ((uint8_t)0x00) +/** + * @} + */ + +/** @defgroup CORTEX_MPU_Access_Cacheable CORTEX MPU Instruction Access Cacheable + * @{ + */ +#define MPU_ACCESS_CACHEABLE ((uint8_t)0x01) +#define MPU_ACCESS_NOT_CACHEABLE ((uint8_t)0x00) +/** + * @} + */ + +/** @defgroup CORTEX_MPU_Access_Bufferable CORTEX MPU Instruction Access Bufferable + * @{ + */ +#define MPU_ACCESS_BUFFERABLE ((uint8_t)0x01) +#define MPU_ACCESS_NOT_BUFFERABLE ((uint8_t)0x00) +/** + * @} + */ + +/** @defgroup CORTEX_MPU_TEX_Levels CORTEX MPU TEX Levels + * @{ + */ +#define MPU_TEX_LEVEL0 ((uint8_t)0x00) +#define MPU_TEX_LEVEL1 ((uint8_t)0x01) +#define MPU_TEX_LEVEL2 ((uint8_t)0x02) +/** + * @} + */ + +/** @defgroup CORTEX_MPU_Region_Size CORTEX MPU Region Size + * @{ + */ +#define MPU_REGION_SIZE_256B ((uint8_t)0x07) +#define MPU_REGION_SIZE_512B ((uint8_t)0x08) +#define MPU_REGION_SIZE_1KB ((uint8_t)0x09) +#define MPU_REGION_SIZE_2KB ((uint8_t)0x0A) +#define MPU_REGION_SIZE_4KB ((uint8_t)0x0B) +#define MPU_REGION_SIZE_8KB ((uint8_t)0x0C) +#define MPU_REGION_SIZE_16KB ((uint8_t)0x0D) +#define MPU_REGION_SIZE_32KB ((uint8_t)0x0E) +#define MPU_REGION_SIZE_64KB ((uint8_t)0x0F) +#define MPU_REGION_SIZE_128KB ((uint8_t)0x10) +#define MPU_REGION_SIZE_256KB ((uint8_t)0x11) +#define MPU_REGION_SIZE_512KB ((uint8_t)0x12) +#define MPU_REGION_SIZE_1MB ((uint8_t)0x13) +#define MPU_REGION_SIZE_2MB ((uint8_t)0x14) +#define MPU_REGION_SIZE_4MB ((uint8_t)0x15) +#define MPU_REGION_SIZE_8MB ((uint8_t)0x16) +#define MPU_REGION_SIZE_16MB ((uint8_t)0x17) +#define MPU_REGION_SIZE_32MB ((uint8_t)0x18) +#define MPU_REGION_SIZE_64MB ((uint8_t)0x19) +#define MPU_REGION_SIZE_128MB ((uint8_t)0x1A) +#define MPU_REGION_SIZE_256MB ((uint8_t)0x1B) +#define MPU_REGION_SIZE_512MB ((uint8_t)0x1C) +#define MPU_REGION_SIZE_1GB ((uint8_t)0x1D) +#define MPU_REGION_SIZE_2GB ((uint8_t)0x1E) +#define MPU_REGION_SIZE_4GB ((uint8_t)0x1F) +/** + * @} + */ + +/** @defgroup CORTEX_MPU_Region_Permission_Attributes CORTEX MPU Region Permission Attributes + * @{ + */ +#define MPU_REGION_NO_ACCESS ((uint8_t)0x00) +#define MPU_REGION_PRIV_RW ((uint8_t)0x01) +#define MPU_REGION_PRIV_RW_URO ((uint8_t)0x02) +#define MPU_REGION_FULL_ACCESS ((uint8_t)0x03) +#define MPU_REGION_PRIV_RO ((uint8_t)0x05) +#define MPU_REGION_PRIV_RO_URO ((uint8_t)0x06) +/** + * @} + */ + +/** @defgroup CORTEX_MPU_Region_Number CORTEX MPU Region Number + * @{ + */ +#define MPU_REGION_NUMBER0 ((uint8_t)0x00) +#define MPU_REGION_NUMBER1 ((uint8_t)0x01) +#define MPU_REGION_NUMBER2 ((uint8_t)0x02) +#define MPU_REGION_NUMBER3 ((uint8_t)0x03) +#define MPU_REGION_NUMBER4 ((uint8_t)0x04) +#define MPU_REGION_NUMBER5 ((uint8_t)0x05) +#define MPU_REGION_NUMBER6 ((uint8_t)0x06) +#define MPU_REGION_NUMBER7 ((uint8_t)0x07) +/** + * @} + */ +#endif /* __MPU_PRESENT */ + +/** + * @} + */ + +/* Exported macros -----------------------------------------------------------*/ +/** @defgroup CORTEX_Exported_Macros CORTEX Exported Macros + * @{ + */ + +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup CORTEX_Exported_Functions CORTEX Exported Functions + * @{ + */ + +/** @defgroup CORTEX_Exported_Functions_Group1 Initialization and Configuration functions + * @brief Initialization and Configuration functions + * @{ + */ +/* Initialization and Configuration functions *****************************/ +void HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority); +void HAL_NVIC_EnableIRQ(IRQn_Type IRQn); +void HAL_NVIC_DisableIRQ(IRQn_Type IRQn); +void HAL_NVIC_SystemReset(void); +uint32_t HAL_SYSTICK_Config(uint32_t TicksNumb); +/** + * @} + */ + +/** @defgroup CORTEX_Exported_Functions_Group2 Peripheral Control functions + * @brief Cortex control functions + * @{ + */ +/* Peripheral Control functions *************************************************/ +uint32_t HAL_NVIC_GetPriority(IRQn_Type IRQn); +uint32_t HAL_NVIC_GetPendingIRQ(IRQn_Type IRQn); +void HAL_NVIC_SetPendingIRQ(IRQn_Type IRQn); +void HAL_NVIC_ClearPendingIRQ(IRQn_Type IRQn); +void HAL_SYSTICK_CLKSourceConfig(uint32_t CLKSource); +void HAL_SYSTICK_IRQHandler(void); +void HAL_SYSTICK_Callback(void); + +#if (__MPU_PRESENT == 1U) +void HAL_MPU_Enable(uint32_t MPU_Control); +void HAL_MPU_Disable(void); +void HAL_MPU_ConfigRegion(MPU_Region_InitTypeDef *MPU_Init); +#endif /* __MPU_PRESENT */ +/** + * @} + */ + +/** + * @} + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/* Private macros ------------------------------------------------------------*/ +/** @defgroup CORTEX_Private_Macros CORTEX Private Macros + * @{ + */ +#define IS_NVIC_PREEMPTION_PRIORITY(PRIORITY) ((PRIORITY) < 0x4U) + +#define IS_NVIC_DEVICE_IRQ(IRQ) ((IRQ) > SysTick_IRQn) + +#define IS_SYSTICK_CLK_SOURCE(SOURCE) (((SOURCE) == SYSTICK_CLKSOURCE_HCLK) || \ + ((SOURCE) == SYSTICK_CLKSOURCE_HCLK_DIV8)) + +#if (__MPU_PRESENT == 1) +#define IS_MPU_REGION_ENABLE(STATE) (((STATE) == MPU_REGION_ENABLE) || \ + ((STATE) == MPU_REGION_DISABLE)) + +#define IS_MPU_INSTRUCTION_ACCESS(STATE) (((STATE) == MPU_INSTRUCTION_ACCESS_ENABLE) || \ + ((STATE) == MPU_INSTRUCTION_ACCESS_DISABLE)) + +#define IS_MPU_ACCESS_SHAREABLE(STATE) (((STATE) == MPU_ACCESS_SHAREABLE) || \ + ((STATE) == MPU_ACCESS_NOT_SHAREABLE)) + +#define IS_MPU_ACCESS_CACHEABLE(STATE) (((STATE) == MPU_ACCESS_CACHEABLE) || \ + ((STATE) == MPU_ACCESS_NOT_CACHEABLE)) + +#define IS_MPU_ACCESS_BUFFERABLE(STATE) (((STATE) == MPU_ACCESS_BUFFERABLE) || \ + ((STATE) == MPU_ACCESS_NOT_BUFFERABLE)) + +#define IS_MPU_TEX_LEVEL(TYPE) (((TYPE) == MPU_TEX_LEVEL0) || \ + ((TYPE) == MPU_TEX_LEVEL1) || \ + ((TYPE) == MPU_TEX_LEVEL2)) + +#define IS_MPU_REGION_PERMISSION_ATTRIBUTE(TYPE) (((TYPE) == MPU_REGION_NO_ACCESS) || \ + ((TYPE) == MPU_REGION_PRIV_RW) || \ + ((TYPE) == MPU_REGION_PRIV_RW_URO) || \ + ((TYPE) == MPU_REGION_FULL_ACCESS) || \ + ((TYPE) == MPU_REGION_PRIV_RO) || \ + ((TYPE) == MPU_REGION_PRIV_RO_URO)) + +#define IS_MPU_REGION_NUMBER(NUMBER) (((NUMBER) == MPU_REGION_NUMBER0) || \ + ((NUMBER) == MPU_REGION_NUMBER1) || \ + ((NUMBER) == MPU_REGION_NUMBER2) || \ + ((NUMBER) == MPU_REGION_NUMBER3) || \ + ((NUMBER) == MPU_REGION_NUMBER4) || \ + ((NUMBER) == MPU_REGION_NUMBER5) || \ + ((NUMBER) == MPU_REGION_NUMBER6) || \ + ((NUMBER) == MPU_REGION_NUMBER7)) + +#define IS_MPU_REGION_SIZE(SIZE) (((SIZE) == MPU_REGION_SIZE_256B) || \ + ((SIZE) == MPU_REGION_SIZE_512B) || \ + ((SIZE) == MPU_REGION_SIZE_1KB) || \ + ((SIZE) == MPU_REGION_SIZE_2KB) || \ + ((SIZE) == MPU_REGION_SIZE_4KB) || \ + ((SIZE) == MPU_REGION_SIZE_8KB) || \ + ((SIZE) == MPU_REGION_SIZE_16KB) || \ + ((SIZE) == MPU_REGION_SIZE_32KB) || \ + ((SIZE) == MPU_REGION_SIZE_64KB) || \ + ((SIZE) == MPU_REGION_SIZE_128KB) || \ + ((SIZE) == MPU_REGION_SIZE_256KB) || \ + ((SIZE) == MPU_REGION_SIZE_512KB) || \ + ((SIZE) == MPU_REGION_SIZE_1MB) || \ + ((SIZE) == MPU_REGION_SIZE_2MB) || \ + ((SIZE) == MPU_REGION_SIZE_4MB) || \ + ((SIZE) == MPU_REGION_SIZE_8MB) || \ + ((SIZE) == MPU_REGION_SIZE_16MB) || \ + ((SIZE) == MPU_REGION_SIZE_32MB) || \ + ((SIZE) == MPU_REGION_SIZE_64MB) || \ + ((SIZE) == MPU_REGION_SIZE_128MB) || \ + ((SIZE) == MPU_REGION_SIZE_256MB) || \ + ((SIZE) == MPU_REGION_SIZE_512MB) || \ + ((SIZE) == MPU_REGION_SIZE_1GB) || \ + ((SIZE) == MPU_REGION_SIZE_2GB) || \ + ((SIZE) == MPU_REGION_SIZE_4GB)) + +#define IS_MPU_SUB_REGION_DISABLE(SUBREGION) ((SUBREGION) < (uint16_t)0x00FFU) +#endif /* __MPU_PRESENT */ + +/** + * @} + */ + +/* Private functions ---------------------------------------------------------*/ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32G0xx_HAL_CORTEX_H */ + + + diff --git a/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_def.h b/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_def.h new file mode 100644 index 0000000..e32704b --- /dev/null +++ b/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_def.h @@ -0,0 +1,213 @@ +/** + ****************************************************************************** + * @file stm32g0xx_hal_def.h + * @author MCD Application Team + * @brief This file contains HAL common defines, enumeration, macros and + * structures definitions. + ****************************************************************************** + * @attention + * + * Copyright (c) 2018 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32G0xx_HAL_DEF +#define STM32G0xx_HAL_DEF + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32g0xx.h" +#include "Legacy/stm32_hal_legacy.h" /* Aliases file for old names compatibility */ +#include + +/* Exported types ------------------------------------------------------------*/ + +/** + * @brief HAL Status structures definition + */ +typedef enum +{ + HAL_OK = 0x00U, + HAL_ERROR = 0x01U, + HAL_BUSY = 0x02U, + HAL_TIMEOUT = 0x03U +} HAL_StatusTypeDef; + +/** + * @brief HAL Lock structures definition + */ +typedef enum +{ + HAL_UNLOCKED = 0x00U, + HAL_LOCKED = 0x01U +} HAL_LockTypeDef; + +/* Exported macros -----------------------------------------------------------*/ + +#define UNUSED(X) (void)X /* To avoid gcc/g++ warnings */ + +#define HAL_MAX_DELAY 0xFFFFFFFFU + +#define HAL_IS_BIT_SET(REG, BIT) (((REG) & (BIT)) == (BIT)) +#define HAL_IS_BIT_CLR(REG, BIT) (((REG) & (BIT)) == 0U) + +#define __HAL_LINKDMA(__HANDLE__, __PPP_DMA_FIELD__, __DMA_HANDLE__) \ + do{ \ + (__HANDLE__)->__PPP_DMA_FIELD__ = &(__DMA_HANDLE__); \ + (__DMA_HANDLE__).Parent = (__HANDLE__); \ + } while(0U) + +/** @brief Reset the Handles State field. + * @param __HANDLE__ specifies the Peripheral Handle. + * @note This macro can be used for the following purpose: + * - When the Handle is declared as local variable; before passing it as parameter + * to HAL_PPP_Init() for the first time, it is mandatory to use this macro + * to set to 0 the Handles "State" field. + * Otherwise, "State" field may have any random value and the first time the function + * HAL_PPP_Init() is called, the low level hardware initialization will be missed + * (i.e. HAL_PPP_MspInit() will not be executed). + * - When there is a need to reconfigure the low level hardware: instead of calling + * HAL_PPP_DeInit() then HAL_PPP_Init(), user can make a call to this macro then HAL_PPP_Init(). + * In this later function, when the Handles "State" field is set to 0, it will execute the function + * HAL_PPP_MspInit() which will reconfigure the low level hardware. + * @retval None + */ +#define __HAL_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = 0U) + +#if (USE_RTOS == 1U) +/* Reserved for future use */ +#error " USE_RTOS should be 0 in the current HAL release " +#else +#define __HAL_LOCK(__HANDLE__) \ + do{ \ + if((__HANDLE__)->Lock == HAL_LOCKED) \ + { \ + return HAL_BUSY; \ + } \ + else \ + { \ + (__HANDLE__)->Lock = HAL_LOCKED; \ + } \ + }while (0U) + +#define __HAL_UNLOCK(__HANDLE__) \ + do{ \ + (__HANDLE__)->Lock = HAL_UNLOCKED; \ + }while (0U) +#endif /* USE_RTOS */ + +#if defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #ifndef __weak + #define __weak __attribute__((weak)) + #endif /* __weak */ + #ifndef __packed + #define __packed __attribute__((packed)) + #endif /* __packed */ +#elif defined ( __GNUC__ ) && !defined (__CC_ARM) /* GNU Compiler */ +#ifndef __weak +#define __weak __attribute__((weak)) +#endif /* __weak */ +#ifndef __packed +#define __packed __attribute__((__packed__)) +#endif /* __packed */ +#endif /* __GNUC__ */ + + +/* Macro to get variable aligned on 4-bytes, for __ICCARM__ the directive "#pragma data_alignment=4" must be used instead */ +/* GNU Compiler */ +#if defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) /* ARM Compiler V6 */ + #ifndef __ALIGN_BEGIN + #define __ALIGN_BEGIN + #endif /* __ALIGN_BEGIN */ + #ifndef __ALIGN_END + #define __ALIGN_END __attribute__ ((aligned (4))) + #endif /* __ALIGN_END */ +#elif defined (__GNUC__) && !defined (__CC_ARM) /* GNU Compiler */ +#ifndef __ALIGN_END +#define __ALIGN_END __attribute__ ((aligned (4U))) +#endif /* __ALIGN_END */ +#ifndef __ALIGN_BEGIN +#define __ALIGN_BEGIN +#endif /* __ALIGN_BEGIN */ +#else +#ifndef __ALIGN_END +#define __ALIGN_END +#endif /* __ALIGN_END */ +#ifndef __ALIGN_BEGIN +/* ARM Compiler */ +#if defined (__CC_ARM) /* ARM Compiler V5 */ +#define __ALIGN_BEGIN __align(4U) +/* IAR Compiler */ +#elif defined (__ICCARM__) +#define __ALIGN_BEGIN +#endif /* __CC_ARM */ +#endif /* __ALIGN_BEGIN */ +#endif /* __GNUC__ */ + +/** + * @brief __RAM_FUNC definition + */ +#if defined ( __CC_ARM ) || (defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)) +/* ARM Compiler V4/V5 and V6 + -------------------------- + RAM functions are defined using the toolchain options. + Functions that are executed in RAM should reside in a separate source module. + Using the 'Options for File' dialog you can simply change the 'Code / Const' + area of a module to a memory space in physical RAM. + Available memory areas are declared in the 'Target' tab of the 'Options for Target' + dialog. +*/ +#define __RAM_FUNC + +#elif defined ( __ICCARM__ ) +/* ICCARM Compiler + --------------- + RAM functions are defined using a specific toolchain keyword "__ramfunc". +*/ +#define __RAM_FUNC __ramfunc + +#elif defined ( __GNUC__ ) +/* GNU Compiler + ------------ + RAM functions are defined using a specific toolchain attribute + "__attribute__((section(".RamFunc")))". +*/ +#define __RAM_FUNC __attribute__((section(".RamFunc"))) + +#endif /* __CC_ARM || __ARMCC_VERSION */ + +/** + * @brief __NOINLINE definition + */ +#if defined ( __CC_ARM ) || (defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)) || defined ( __GNUC__ ) +/* ARM V4/V5 and V6 & GNU Compiler + ------------------------------- +*/ +#define __NOINLINE __attribute__ ( (noinline) ) + +#elif defined ( __ICCARM__ ) +/* ICCARM Compiler + --------------- +*/ +#define __NOINLINE _Pragma("optimize = no_inline") + +#endif /* __CC_ARM || __ARMCC_VERSION */ + + +#ifdef __cplusplus +} +#endif + +#endif /* STM32G0xx_HAL_DEF */ + + diff --git a/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_dma.h b/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_dma.h new file mode 100644 index 0000000..0ab6528 --- /dev/null +++ b/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_dma.h @@ -0,0 +1,803 @@ +/** + ****************************************************************************** + * @file stm32g0xx_hal_dma.h + * @author MCD Application Team + * @brief Header file of DMA HAL module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2018 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32G0xx_HAL_DMA_H +#define STM32G0xx_HAL_DMA_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32g0xx_hal_def.h" +#include "stm32g0xx_ll_dma.h" + +/** @addtogroup STM32G0xx_HAL_Driver + * @{ + */ + +/** @addtogroup DMA + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ +/** @defgroup DMA_Exported_Types DMA Exported Types + * @{ + */ + +/** + * @brief DMA Configuration Structure definition + */ +typedef struct +{ + uint32_t Request; /*!< Specifies the request selected for the specified channel. + This parameter can be a value of @ref DMA_request */ + + uint32_t Direction; /*!< Specifies if the data will be transferred from memory to peripheral, + from memory to memory or from peripheral to memory. + This parameter can be a value of @ref DMA_Data_transfer_direction */ + + uint32_t PeriphInc; /*!< Specifies whether the Peripheral address register should be incremented or not. + This parameter can be a value of @ref DMA_Peripheral_incremented_mode */ + + uint32_t MemInc; /*!< Specifies whether the memory address register should be incremented or not. + This parameter can be a value of @ref DMA_Memory_incremented_mode */ + + uint32_t PeriphDataAlignment; /*!< Specifies the Peripheral data width. + This parameter can be a value of @ref DMA_Peripheral_data_size */ + + uint32_t MemDataAlignment; /*!< Specifies the Memory data width. + This parameter can be a value of @ref DMA_Memory_data_size */ + + uint32_t Mode; /*!< Specifies the operation mode of the DMAy Channelx. + This parameter can be a value of @ref DMA_mode + @note The circular buffer mode cannot be used if the memory-to-memory + data transfer is configured on the selected Channel */ + + uint32_t Priority; /*!< Specifies the software priority for the DMAy Channelx. + This parameter can be a value of @ref DMA_Priority_level */ +} DMA_InitTypeDef; + +/** + * @brief HAL DMA State structures definition + */ +typedef enum +{ + HAL_DMA_STATE_RESET = 0x00U, /*!< DMA not yet initialized or disabled */ + HAL_DMA_STATE_READY = 0x01U, /*!< DMA initialized and ready for use */ + HAL_DMA_STATE_BUSY = 0x02U, /*!< DMA process is ongoing */ + HAL_DMA_STATE_TIMEOUT = 0x03U, /*!< DMA timeout state */ +} HAL_DMA_StateTypeDef; + +/** + * @brief HAL DMA Error Code structure definition + */ +typedef enum +{ + HAL_DMA_FULL_TRANSFER = 0x00U, /*!< Full transfer */ + HAL_DMA_HALF_TRANSFER = 0x01U /*!< Half Transfer */ +} HAL_DMA_LevelCompleteTypeDef; + +/** + * @brief HAL DMA Callback ID structure definition + */ +typedef enum +{ + HAL_DMA_XFER_CPLT_CB_ID = 0x00U, /*!< Full transfer */ + HAL_DMA_XFER_HALFCPLT_CB_ID = 0x01U, /*!< Half transfer */ + HAL_DMA_XFER_ERROR_CB_ID = 0x02U, /*!< Error */ + HAL_DMA_XFER_ABORT_CB_ID = 0x03U, /*!< Abort */ + HAL_DMA_XFER_ALL_CB_ID = 0x04U /*!< All */ + +} HAL_DMA_CallbackIDTypeDef; + +/** + * @brief DMA handle Structure definition + */ +typedef struct __DMA_HandleTypeDef +{ + DMA_Channel_TypeDef *Instance; /*!< Register base address */ + + DMA_InitTypeDef Init; /*!< DMA communication parameters */ + + HAL_LockTypeDef Lock; /*!< DMA locking object */ + + __IO HAL_DMA_StateTypeDef State; /*!< DMA transfer state */ + + void *Parent; /*!< Parent object state */ + + void (* XferCpltCallback)(struct __DMA_HandleTypeDef *hdma); /*!< DMA transfer complete callback */ + + void (* XferHalfCpltCallback)(struct __DMA_HandleTypeDef *hdma); /*!< DMA Half transfer complete callback */ + + void (* XferErrorCallback)(struct __DMA_HandleTypeDef *hdma); /*!< DMA transfer error callback */ + + void (* XferAbortCallback)(struct __DMA_HandleTypeDef *hdma); /*!< DMA transfer abort callback */ + + __IO uint32_t ErrorCode; /*!< DMA Error code */ + +#if defined(DMA2) + DMA_TypeDef *DmaBaseAddress; /*!< DMA Channel Base Address */ + +#endif /* DMA2 */ + uint32_t ChannelIndex; /*!< DMA Channel Index */ + + DMAMUX_Channel_TypeDef *DMAmuxChannel; /*!< Register base address */ + + DMAMUX_ChannelStatus_TypeDef *DMAmuxChannelStatus; /*!< DMAMUX Channels Status Base Address */ + + uint32_t DMAmuxChannelStatusMask; /*!< DMAMUX Channel Status Mask */ + + DMAMUX_RequestGen_TypeDef *DMAmuxRequestGen; /*!< DMAMUX request generator Base Address */ + + DMAMUX_RequestGenStatus_TypeDef *DMAmuxRequestGenStatus; /*!< DMAMUX request generator Address */ + + uint32_t DMAmuxRequestGenStatusMask; /*!< DMAMUX request generator Status mask */ +} DMA_HandleTypeDef; +/** + * @} + */ + +/* Exported constants --------------------------------------------------------*/ + +/** @defgroup DMA_Exported_Constants DMA Exported Constants + * @{ + */ + +/** @defgroup DMA_Error_Code DMA Error Code + * @{ + */ +#define HAL_DMA_ERROR_NONE 0x00000000U /*!< No error */ +#define HAL_DMA_ERROR_TE 0x00000001U /*!< Transfer error */ +#define HAL_DMA_ERROR_NO_XFER 0x00000004U /*!< Abort requested with no Xfer ongoing */ +#define HAL_DMA_ERROR_TIMEOUT 0x00000020U /*!< Timeout error */ +#define HAL_DMA_ERROR_PARAM 0x00000040U /*!< Parameter error */ +#define HAL_DMA_ERROR_BUSY 0x00000080U /*!< DMA Busy error */ +#define HAL_DMA_ERROR_NOT_SUPPORTED 0x00000100U /*!< Not supported mode */ +#define HAL_DMA_ERROR_SYNC 0x00000200U /*!< DMAMUX sync overrun error */ +#define HAL_DMA_ERROR_REQGEN 0x00000400U /*!< DMAMUX request generator overrun error */ + +/** + * @} + */ + +/** @defgroup DMA_request DMA request + * @{ + */ +#define DMA_REQUEST_MEM2MEM LL_DMAMUX_REQ_MEM2MEM /*!< memory to memory transfer */ +#define DMA_REQUEST_GENERATOR0 LL_DMAMUX_REQ_GENERATOR0 /*!< DMAMUX request generator 0 */ +#define DMA_REQUEST_GENERATOR1 LL_DMAMUX_REQ_GENERATOR1 /*!< DMAMUX request generator 1 */ +#define DMA_REQUEST_GENERATOR2 LL_DMAMUX_REQ_GENERATOR2 /*!< DMAMUX request generator 2 */ +#define DMA_REQUEST_GENERATOR3 LL_DMAMUX_REQ_GENERATOR3 /*!< DMAMUX request generator 3 */ +#define DMA_REQUEST_ADC1 LL_DMAMUX_REQ_ADC1 /*!< DMAMUX ADC1 request */ +#if defined(AES) +#define DMA_REQUEST_AES_IN LL_DMAMUX_REQ_AES_IN /*!< DMAMUX AES_IN request */ +#define DMA_REQUEST_AES_OUT LL_DMAMUX_REQ_AES_OUT /*!< DMAMUX AES_OUT request */ +#endif /* AES */ +#if defined(DAC1) +#define DMA_REQUEST_DAC1_CH1 LL_DMAMUX_REQ_DAC1_CH1 /*!< DMAMUX DAC_CH1 request */ +#define DMA_REQUEST_DAC1_CH2 LL_DMAMUX_REQ_DAC1_CH2 /*!< DMAMUX DAC_CH2 request */ +#endif /* DAC1 */ +#define DMA_REQUEST_I2C1_RX LL_DMAMUX_REQ_I2C1_RX /*!< DMAMUX I2C1 RX request */ +#define DMA_REQUEST_I2C1_TX LL_DMAMUX_REQ_I2C1_TX /*!< DMAMUX I2C1 TX request */ +#define DMA_REQUEST_I2C2_RX LL_DMAMUX_REQ_I2C2_RX /*!< DMAMUX I2C2 RX request */ +#define DMA_REQUEST_I2C2_TX LL_DMAMUX_REQ_I2C2_TX /*!< DMAMUX I2C2 TX request */ +#if defined(LPUART1) +#define DMA_REQUEST_LPUART1_RX LL_DMAMUX_REQ_LPUART1_RX /*!< DMAMUX LPUART1 RX request */ +#define DMA_REQUEST_LPUART1_TX LL_DMAMUX_REQ_LPUART1_TX /*!< DMAMUX LPUART1 TX request */ +#endif /* LPUART1 */ +#define DMA_REQUEST_SPI1_RX LL_DMAMUX_REQ_SPI1_RX /*!< DMAMUX SPI1 RX request */ +#define DMA_REQUEST_SPI1_TX LL_DMAMUX_REQ_SPI1_TX /*!< DMAMUX SPI1 TX request */ +#define DMA_REQUEST_SPI2_RX LL_DMAMUX_REQ_SPI2_RX /*!< DMAMUX SPI2 RX request */ +#define DMA_REQUEST_SPI2_TX LL_DMAMUX_REQ_SPI2_TX /*!< DMAMUX SPI2 TX request */ +#define DMA_REQUEST_TIM1_CH1 LL_DMAMUX_REQ_TIM1_CH1 /*!< DMAMUX TIM1 CH1 request */ +#define DMA_REQUEST_TIM1_CH2 LL_DMAMUX_REQ_TIM1_CH2 /*!< DMAMUX TIM1 CH2 request */ +#define DMA_REQUEST_TIM1_CH3 LL_DMAMUX_REQ_TIM1_CH3 /*!< DMAMUX TIM1 CH3 request */ +#define DMA_REQUEST_TIM1_CH4 LL_DMAMUX_REQ_TIM1_CH4 /*!< DMAMUX TIM1 CH4 request */ +#define DMA_REQUEST_TIM1_TRIG_COM LL_DMAMUX_REQ_TIM1_TRIG_COM /*!< DMAMUX TIM1 TRIG COM request */ +#define DMA_REQUEST_TIM1_UP LL_DMAMUX_REQ_TIM1_UP /*!< DMAMUX TIM1 UP request */ +#if defined(TIM2) +#define DMA_REQUEST_TIM2_CH1 LL_DMAMUX_REQ_TIM2_CH1 /*!< DMAMUX TIM2 CH1 request */ +#define DMA_REQUEST_TIM2_CH2 LL_DMAMUX_REQ_TIM2_CH2 /*!< DMAMUX TIM2 CH2 request */ +#define DMA_REQUEST_TIM2_CH3 LL_DMAMUX_REQ_TIM2_CH3 /*!< DMAMUX TIM2 CH3 request */ +#define DMA_REQUEST_TIM2_CH4 LL_DMAMUX_REQ_TIM2_CH4 /*!< DMAMUX TIM2 CH4 request */ +#define DMA_REQUEST_TIM2_TRIG LL_DMAMUX_REQ_TIM2_TRIG /*!< DMAMUX TIM2 TRIG request */ +#define DMA_REQUEST_TIM2_UP LL_DMAMUX_REQ_TIM2_UP /*!< DMAMUX TIM2 UP request */ +#endif /* TIM2 */ +#define DMA_REQUEST_TIM3_CH1 LL_DMAMUX_REQ_TIM3_CH1 /*!< DMAMUX TIM3 CH1 request */ +#define DMA_REQUEST_TIM3_CH2 LL_DMAMUX_REQ_TIM3_CH2 /*!< DMAMUX TIM3 CH2 request */ +#define DMA_REQUEST_TIM3_CH3 LL_DMAMUX_REQ_TIM3_CH3 /*!< DMAMUX TIM3 CH3 request */ +#define DMA_REQUEST_TIM3_CH4 LL_DMAMUX_REQ_TIM3_CH4 /*!< DMAMUX TIM3 CH4 request */ +#define DMA_REQUEST_TIM3_TRIG LL_DMAMUX_REQ_TIM3_TRIG /*!< DMAMUX TIM3 TRIG request */ +#define DMA_REQUEST_TIM3_UP LL_DMAMUX_REQ_TIM3_UP /*!< DMAMUX TIM3 UP request */ +#if defined(TIM6) +#define DMA_REQUEST_TIM6_UP LL_DMAMUX_REQ_TIM6_UP /*!< DMAMUX TIM6 UP request */ +#endif /* TIM6 */ +#if defined(TIM7) +#define DMA_REQUEST_TIM7_UP LL_DMAMUX_REQ_TIM7_UP /*!< DMAMUX TIM7 UP request */ +#endif /* TIM7 */ +#if defined(TIM15) +#define DMA_REQUEST_TIM15_CH1 LL_DMAMUX_REQ_TIM15_CH1 /*!< DMAMUX TIM15 CH1 request */ +#define DMA_REQUEST_TIM15_CH2 LL_DMAMUX_REQ_TIM15_CH2 /*!< DMAMUX TIM15 CH2 request */ +#define DMA_REQUEST_TIM15_TRIG_COM LL_DMAMUX_REQ_TIM15_TRIG_COM /*!< DMAMUX TIM15 TRIG COM request */ +#define DMA_REQUEST_TIM15_UP LL_DMAMUX_REQ_TIM15_UP /*!< DMAMUX TIM15 UP request */ +#endif /* TIM15 */ +#define DMA_REQUEST_TIM16_CH1 LL_DMAMUX_REQ_TIM16_CH1 /*!< DMAMUX TIM16 CH1 request */ +#define DMA_REQUEST_TIM16_COM LL_DMAMUX_REQ_TIM16_COM /*!< DMAMUX TIM16 COM request */ +#define DMA_REQUEST_TIM16_UP LL_DMAMUX_REQ_TIM16_UP /*!< DMAMUX TIM16 UP request */ +#define DMA_REQUEST_TIM17_CH1 LL_DMAMUX_REQ_TIM17_CH1 /*!< DMAMUX TIM17 CH1 request */ +#define DMA_REQUEST_TIM17_COM LL_DMAMUX_REQ_TIM17_COM /*!< DMAMUX TIM17 COM request */ +#define DMA_REQUEST_TIM17_UP LL_DMAMUX_REQ_TIM17_UP /*!< DMAMUX TIM17 UP request */ +#define DMA_REQUEST_USART1_RX LL_DMAMUX_REQ_USART1_RX /*!< DMAMUX USART1 RX request */ +#define DMA_REQUEST_USART1_TX LL_DMAMUX_REQ_USART1_TX /*!< DMAMUX USART1 TX request */ +#define DMA_REQUEST_USART2_RX LL_DMAMUX_REQ_USART2_RX /*!< DMAMUX USART2 RX request */ +#define DMA_REQUEST_USART2_TX LL_DMAMUX_REQ_USART2_TX /*!< DMAMUX USART2 TX request */ +#if defined(USART3) +#define DMA_REQUEST_USART3_RX LL_DMAMUX_REQ_USART3_RX /*!< DMAMUX USART3 RX request */ +#define DMA_REQUEST_USART3_TX LL_DMAMUX_REQ_USART3_TX /*!< DMAMUX USART3 TX request */ +#endif /* USART3 */ +#if defined(USART4) +#define DMA_REQUEST_USART4_RX LL_DMAMUX_REQ_USART4_RX /*!< DMAMUX USART4 RX request */ +#define DMA_REQUEST_USART4_TX LL_DMAMUX_REQ_USART4_TX /*!< DMAMUX USART4 TX request */ +#endif /* USART4 */ +#if defined(UCPD1) +#define DMA_REQUEST_UCPD1_RX LL_DMAMUX_REQ_UCPD1_RX /*!< DMAMUX UCPD1 RX request */ +#define DMA_REQUEST_UCPD1_TX LL_DMAMUX_REQ_UCPD1_TX /*!< DMAMUX UCPD1 TX request */ +#endif/* UCPD1 */ +#if defined(UCPD2) +#define DMA_REQUEST_UCPD2_RX LL_DMAMUX_REQ_UCPD2_RX /*!< DMAMUX UCPD2 RX request */ +#define DMA_REQUEST_UCPD2_TX LL_DMAMUX_REQ_UCPD2_TX /*!< DMAMUX UCPD2 TX request */ +#endif /* UCPD2 */ + +#if defined(I2C3) +#define DMA_REQUEST_I2C3_RX LL_DMAMUX_REQ_I2C3_RX /*!< DMAMUX I2C3 RX request */ +#define DMA_REQUEST_I2C3_TX LL_DMAMUX_REQ_I2C3_TX /*!< DMAMUX I2C3 TX request */ +#endif /* I2C3 */ + +#if defined(LPUART2) +#define DMA_REQUEST_LPUART2_RX LL_DMAMUX_REQ_LPUART2_RX /*!< DMAMUX LPUART2 RX request */ +#define DMA_REQUEST_LPUART2_TX LL_DMAMUX_REQ_LPUART2_TX /*!< DMAMUX LPUART2 TX request */ +#endif /* LPUART2 */ + +#if defined(SPI3) +#define DMA_REQUEST_SPI3_RX LL_DMAMUX_REQ_SPI3_RX /*!< DMAMUX SPI3 RX request */ +#define DMA_REQUEST_SPI3_TX LL_DMAMUX_REQ_SPI3_TX /*!< DMAMUX SPI3 TX request */ +#endif /* SPI3 */ + +#if defined(TIM4) +#define DMA_REQUEST_TIM4_CH1 LL_DMAMUX_REQ_TIM4_CH1 /*!< DMAMUX TIM4 CH1 request */ +#define DMA_REQUEST_TIM4_CH2 LL_DMAMUX_REQ_TIM4_CH2 /*!< DMAMUX TIM4 CH2 request */ +#define DMA_REQUEST_TIM4_CH3 LL_DMAMUX_REQ_TIM4_CH3 /*!< DMAMUX TIM4 CH3 request */ +#define DMA_REQUEST_TIM4_CH4 LL_DMAMUX_REQ_TIM4_CH4 /*!< DMAMUX TIM4 CH4 request */ +#define DMA_REQUEST_TIM4_TRIG LL_DMAMUX_REQ_TIM4_TRIG /*!< DMAMUX TIM4 TRIG request */ +#define DMA_REQUEST_TIM4_UP LL_DMAMUX_REQ_TIM4_UP /*!< DMAMUX TIM4 UP request */ +#endif /* TIM4 */ + +#if defined(USART5) +#define DMA_REQUEST_USART5_RX LL_DMAMUX_REQ_USART5_RX /*!< DMAMUX USART5 RX request */ +#define DMA_REQUEST_USART5_TX LL_DMAMUX_REQ_USART5_TX /*!< DMAMUX USART5 TX request */ +#endif /* USART5 */ + +#if defined(USART6) +#define DMA_REQUEST_USART6_RX LL_DMAMUX_REQ_USART6_RX /*!< DMAMUX USART6 RX request */ +#define DMA_REQUEST_USART6_TX LL_DMAMUX_REQ_USART6_TX /*!< DMAMUX USART6 TX request */ +#endif /* USART6 */ + + +#define DMA_MAX_REQUEST LL_DMAMUX_MAX_REQ +/** + * @} + */ + +/** @defgroup DMA_Data_transfer_direction DMA Data transfer direction + * @{ + */ +#define DMA_PERIPH_TO_MEMORY LL_DMA_DIRECTION_PERIPH_TO_MEMORY /*!< Peripheral to memory direction */ +#define DMA_MEMORY_TO_PERIPH LL_DMA_DIRECTION_MEMORY_TO_PERIPH /*!< Memory to peripheral direction */ +#define DMA_MEMORY_TO_MEMORY LL_DMA_DIRECTION_MEMORY_TO_MEMORY /*!< Memory to memory direction */ + +/** + * @} + */ + +/** @defgroup DMA_Peripheral_incremented_mode DMA Peripheral incremented mode + * @{ + */ +#define DMA_PINC_ENABLE LL_DMA_PERIPH_INCREMENT /*!< Peripheral increment mode Enable */ +#define DMA_PINC_DISABLE LL_DMA_PERIPH_NOINCREMENT /*!< Peripheral increment mode Disable */ +/** + * @} + */ + +/** @defgroup DMA_Memory_incremented_mode DMA Memory incremented mode + * @{ + */ +#define DMA_MINC_ENABLE LL_DMA_MEMORY_INCREMENT /*!< Memory increment mode Enable */ +#define DMA_MINC_DISABLE LL_DMA_MEMORY_NOINCREMENT /*!< Memory increment mode Disable */ +/** + * @} + */ + +/** @defgroup DMA_Peripheral_data_size DMA Peripheral data size + * @{ + */ +#define DMA_PDATAALIGN_BYTE LL_DMA_PDATAALIGN_BYTE /*!< Peripheral data alignment : Byte */ +#define DMA_PDATAALIGN_HALFWORD LL_DMA_PDATAALIGN_HALFWORD /*!< Peripheral data alignment : HalfWord */ +#define DMA_PDATAALIGN_WORD LL_DMA_PDATAALIGN_WORD /*!< Peripheral data alignment : Word */ +/** + * @} + */ + +/** @defgroup DMA_Memory_data_size DMA Memory data size + * @{ + */ +#define DMA_MDATAALIGN_BYTE LL_DMA_MDATAALIGN_BYTE /*!< Memory data alignment : Byte */ +#define DMA_MDATAALIGN_HALFWORD LL_DMA_MDATAALIGN_HALFWORD /*!< Memory data alignment : HalfWord */ +#define DMA_MDATAALIGN_WORD LL_DMA_MDATAALIGN_WORD /*!< Memory data alignment : Word */ +/** + * @} + */ + +/** @defgroup DMA_mode DMA mode + * @{ + */ +#define DMA_NORMAL LL_DMA_MODE_NORMAL /*!< Normal mode */ +#define DMA_CIRCULAR LL_DMA_MODE_CIRCULAR /*!< Circular mode */ +/** + * @} + */ + +/** @defgroup DMA_Priority_level DMA Priority level + * @{ + */ +#define DMA_PRIORITY_LOW LL_DMA_PRIORITY_LOW /*!< Priority level : Low */ +#define DMA_PRIORITY_MEDIUM LL_DMA_PRIORITY_MEDIUM /*!< Priority level : Medium */ +#define DMA_PRIORITY_HIGH LL_DMA_PRIORITY_HIGH /*!< Priority level : High */ +#define DMA_PRIORITY_VERY_HIGH LL_DMA_PRIORITY_VERYHIGH /*!< Priority level : Very_High */ +/** + * @} + */ + +/** @defgroup DMA_interrupt_enable_definitions DMA interrupt enable definitions + * @{ + */ +#define DMA_IT_TC DMA_CCR_TCIE /*!< Transfer Complete interrupt */ +#define DMA_IT_HT DMA_CCR_HTIE /*!< Half Transfer Complete interrupt */ +#define DMA_IT_TE DMA_CCR_TEIE /*!< Transfer Error interrupt */ +/** + * @} + */ + +/** @defgroup DMA_flag_definitions DMA flag definitions + * @{ + */ + +#define DMA_FLAG_GI1 DMA_ISR_GIF1 /*!< Global Interrupt flag for Channel 1 */ +#define DMA_FLAG_TC1 DMA_ISR_TCIF1 /*!< Transfer Complete flag for Channel 1 */ +#define DMA_FLAG_HT1 DMA_ISR_HTIF1 /*!< Half Transfer flag for Channel 1 */ +#define DMA_FLAG_TE1 DMA_ISR_TEIF1 /*!< Transfer Error flag for Channel 1 */ +#define DMA_FLAG_GI2 DMA_ISR_GIF2 /*!< Global Interrupt flag for Channel 2 */ +#define DMA_FLAG_TC2 DMA_ISR_TCIF2 /*!< Transfer Complete flag for Channel 2 */ +#define DMA_FLAG_HT2 DMA_ISR_HTIF2 /*!< Half Transfer flag for Channel 2 */ +#define DMA_FLAG_TE2 DMA_ISR_TEIF2 /*!< Transfer Error flag for Channel 2 */ +#define DMA_FLAG_GI3 DMA_ISR_GIF3 /*!< Global Interrupt flag for Channel 3 */ +#define DMA_FLAG_TC3 DMA_ISR_TCIF3 /*!< Transfer Complete flag for Channel 3 */ +#define DMA_FLAG_HT3 DMA_ISR_HTIF3 /*!< Half Transfer flag for Channel 3 */ +#define DMA_FLAG_TE3 DMA_ISR_TEIF3 /*!< Transfer Error flag for Channel 3 */ +#define DMA_FLAG_GI4 DMA_ISR_GIF4 /*!< Global Interrupt flag for Channel 4 */ +#define DMA_FLAG_TC4 DMA_ISR_TCIF4 /*!< Transfer Complete flag for Channel 4 */ +#define DMA_FLAG_HT4 DMA_ISR_HTIF4 /*!< Half Transfer flag for Channel 4 */ +#define DMA_FLAG_TE4 DMA_ISR_TEIF4 /*!< Transfer Error flag for Channel 4 */ +#define DMA_FLAG_GI5 DMA_ISR_GIF5 /*!< Global Interrupt flag for Channel 5 */ +#define DMA_FLAG_TC5 DMA_ISR_TCIF5 /*!< Transfer Complete flag for Channel 5 */ +#define DMA_FLAG_HT5 DMA_ISR_HTIF5 /*!< Half Transfer flag for Channel 5 */ +#define DMA_FLAG_TE5 DMA_ISR_TEIF5 /*!< Transfer Error for Channel 5 */ +#if defined(DMA1_Channel6) +#define DMA_FLAG_GI6 DMA_ISR_GIF6 /*!< Global Interrupt flag for Channel 6 */ +#define DMA_FLAG_TC6 DMA_ISR_TCIF6 /*!< Transfer Complete flag for Channel 6 */ +#define DMA_FLAG_HT6 DMA_ISR_HTIF6 /*!< Half Transfer flag for Channel 6 */ +#define DMA_FLAG_TE6 DMA_ISR_TEIF6 /*!< Transfer Error flag for Channel 6 */ +#endif /* DMA1_Channel6 */ +#if defined(DMA1_Channel7) +#define DMA_FLAG_GI7 DMA_ISR_GIF7 /*!< Global Interrupt flag for Channel 7 */ +#define DMA_FLAG_TC7 DMA_ISR_TCIF7 /*!< Transfer Complete flag for Channel 7 */ +#define DMA_FLAG_HT7 DMA_ISR_HTIF7 /*!< Half Transfer flag for Channel 7 */ +#define DMA_FLAG_TE7 DMA_ISR_TEIF7 /*!< Transfer Error flag for Channel 7 */ +#endif /* DMA1_Channel7 */ +/** + * @} + */ + +/** + * @} + */ + +/* Exported macros -----------------------------------------------------------*/ +/** @defgroup DMA_Exported_Macros DMA Exported Macros + * @{ + */ + +/** @brief Reset DMA handle state + * @param __HANDLE__ DMA handle + * @retval None + */ +#define __HAL_DMA_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_DMA_STATE_RESET) + +/** + * @brief Enable the specified DMA Channel. + * @param __HANDLE__ DMA handle + * @retval None + */ +#define __HAL_DMA_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CCR |= DMA_CCR_EN) + +/** + * @brief Disable the specified DMA Channel. + * @param __HANDLE__ DMA handle + * @retval None + */ +#define __HAL_DMA_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CCR &= ~DMA_CCR_EN) + +/** + * @brief Return the current DMA Channel transfer complete flag. + * @param __HANDLE__ DMA handle + * @retval The specified transfer complete flag index. + */ +#if defined(DMA2) +#define __HAL_DMA_GET_TC_FLAG_INDEX(__HANDLE__) \ +(((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel1))? DMA_FLAG_TC1 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel1))? DMA_FLAG_TC1 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel2))? DMA_FLAG_TC2 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel2))? DMA_FLAG_TC2 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel3))? DMA_FLAG_TC3 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel3))? DMA_FLAG_TC3 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel4))? DMA_FLAG_TC4 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel4))? DMA_FLAG_TC4 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel5))? DMA_FLAG_TC5 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel5))? DMA_FLAG_TC5 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel6))? DMA_FLAG_TC6 :\ + DMA_FLAG_TC7) +#else /* DMA1 */ +#if defined(DMA1_Channel7) +#define __HAL_DMA_GET_TC_FLAG_INDEX(__HANDLE__) \ +(((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel1))? DMA_FLAG_TC1 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel2))? DMA_FLAG_TC2 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel3))? DMA_FLAG_TC3 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel4))? DMA_FLAG_TC4 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel5))? DMA_FLAG_TC5 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel6))? DMA_FLAG_TC6 :\ + DMA_FLAG_TC7) +#else +#define __HAL_DMA_GET_TC_FLAG_INDEX(__HANDLE__) \ +(((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel1))? DMA_FLAG_TC1 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel2))? DMA_FLAG_TC2 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel3))? DMA_FLAG_TC3 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel4))? DMA_FLAG_TC4 :\ + DMA_FLAG_TC5) +#endif /* DMA1_Channel8 */ +#endif /* DMA2 */ + +/** + * @brief Return the current DMA Channel half transfer complete flag. + * @param __HANDLE__ DMA handle + * @retval The specified half transfer complete flag index. + */ +#if defined(DMA2) +#define __HAL_DMA_GET_HT_FLAG_INDEX(__HANDLE__) \ +(((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel1))? DMA_FLAG_HT1 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel1))? DMA_FLAG_HT1 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel2))? DMA_FLAG_HT2 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel2))? DMA_FLAG_HT2 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel3))? DMA_FLAG_HT3 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel3))? DMA_FLAG_HT3 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel4))? DMA_FLAG_HT4 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel4))? DMA_FLAG_HT4 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel5))? DMA_FLAG_HT5 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel5))? DMA_FLAG_HT5 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel6))? DMA_FLAG_HT6 :\ + DMA_FLAG_HT7) +#else /* DMA1 */ +#if defined(DMA1_Channel7) +#define __HAL_DMA_GET_HT_FLAG_INDEX(__HANDLE__) \ +(((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel1))? DMA_FLAG_HT1 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel2))? DMA_FLAG_HT2 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel3))? DMA_FLAG_HT3 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel4))? DMA_FLAG_HT4 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel5))? DMA_FLAG_HT5 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel6))? DMA_FLAG_HT6 :\ + DMA_FLAG_HT7) +#else +#define __HAL_DMA_GET_HT_FLAG_INDEX(__HANDLE__) \ +(((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel1))? DMA_FLAG_HT1 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel2))? DMA_FLAG_HT2 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel3))? DMA_FLAG_HT3 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel4))? DMA_FLAG_HT4 :\ + DMA_FLAG_HT5) +#endif /* DMA1_Channel8 */ +#endif /* DMA2 */ + +/** + * @brief Return the current DMA Channel transfer error flag. + * @param __HANDLE__ DMA handle + * @retval The specified transfer error flag index. + */ +#if defined(DMA2) +#define __HAL_DMA_GET_TE_FLAG_INDEX(__HANDLE__) \ +(((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel1))? DMA_FLAG_TE1 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel1))? DMA_FLAG_TE1 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel2))? DMA_FLAG_TE2 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel2))? DMA_FLAG_TE2 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel3))? DMA_FLAG_TE3 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel3))? DMA_FLAG_TE3 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel4))? DMA_FLAG_TE4 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel4))? DMA_FLAG_TE4 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel5))? DMA_FLAG_TE5 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel5))? DMA_FLAG_TE5 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel6))? DMA_FLAG_TE6 :\ + DMA_FLAG_TE7) +#else /* DMA1 */ +#if defined(DMA1_Channel7) +#define __HAL_DMA_GET_TE_FLAG_INDEX(__HANDLE__) \ +(((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel1))? DMA_FLAG_TE1 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel2))? DMA_FLAG_TE2 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel3))? DMA_FLAG_TE3 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel4))? DMA_FLAG_TE4 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel5))? DMA_FLAG_TE5 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel6))? DMA_FLAG_TE6 :\ + DMA_FLAG_TE7) +#else +#define __HAL_DMA_GET_TE_FLAG_INDEX(__HANDLE__) \ +(((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel1))? DMA_FLAG_TE1 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel2))? DMA_FLAG_TE2 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel3))? DMA_FLAG_TE3 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel4))? DMA_FLAG_TE4 :\ + DMA_FLAG_TE5) +#endif /* DMA1_Channel8 */ +#endif /* DMA2 */ + +/** + * @brief Return the current DMA Channel Global interrupt flag. + * @param __HANDLE__ DMA handle + * @retval The specified transfer error flag index. + */ +#if defined(DMA2) +#define __HAL_DMA_GET_GI_FLAG_INDEX(__HANDLE__) \ +(((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel1))? DMA_FLAG_GI1 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel1))? DMA_FLAG_GI1 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel2))? DMA_FLAG_GI2 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel2))? DMA_FLAG_GI2 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel3))? DMA_FLAG_GI3 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel3))? DMA_FLAG_GI3 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel4))? DMA_FLAG_GI4 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel4))? DMA_FLAG_GI4 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel5))? DMA_FLAG_GI5 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel5))? DMA_FLAG_GI5 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel6))? DMA_FLAG_GI6 :\ + DMA_FLAG_GI7) +#else /* DMA1 */ +#if defined(DMA1_Channel7) +#define __HAL_DMA_GET_GI_FLAG_INDEX(__HANDLE__) \ +(((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel1))? DMA_FLAG_GI1 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel2))? DMA_FLAG_GI2 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel3))? DMA_FLAG_GI3 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel4))? DMA_FLAG_GI4 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel5))? DMA_FLAG_GI5 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel6))? DMA_FLAG_GI6 :\ + DMA_FLAG_GI7) +#else +#define __HAL_DMA_GET_GI_FLAG_INDEX(__HANDLE__) \ +(((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel1))? DMA_FLAG_GI1 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel2))? DMA_FLAG_GI2 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel3))? DMA_FLAG_GI3 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel4))? DMA_FLAG_GI4 :\ + DMA_FLAG_GI5) +#endif /* DMA1_Channel8 */ +#endif /* DMA2 */ + +/** + * @brief Get the DMA Channel pending flags. + * @param __HANDLE__ DMA handle + * @param __FLAG__ Get the specified flag. + * This parameter can be any combination of the following values: + * @arg DMA_FLAG_TCx: Transfer complete flag + * @arg DMA_FLAG_HTx: Half transfer complete flag + * @arg DMA_FLAG_TEx: Transfer error flag + * @arg DMA_FLAG_GIx: Global interrupt flag + * Where x can be 1 to max Channel supported by the product to select the DMA Channel flag. + * @retval The state of FLAG (SET or RESET). + */ +#if defined(DMA2) +#define __HAL_DMA_GET_FLAG(__HANDLE__, __FLAG__) (((uint32_t)((__HANDLE__)->Instance) > ((uint32_t)DMA1_Channel7))? \ + (DMA2->ISR & (__FLAG__)) : (DMA1->ISR & (__FLAG__))) +#else /* DMA1 */ +#define __HAL_DMA_GET_FLAG(__HANDLE__, __FLAG__) (DMA1->ISR & (__FLAG__)) +#endif /* DMA2 */ + +/** + * @brief Clear the DMA Channel pending flags. + * @param __HANDLE__ DMA handle + * @param __FLAG__ specifies the flag to clear. + * This parameter can be any combination of the following values: + * @arg DMA_FLAG_TCx: Transfer complete flag + * @arg DMA_FLAG_HTx: Half transfer complete flag + * @arg DMA_FLAG_TEx: Transfer error flag + * @arg DMA_FLAG_GIx: Global interrupt flag + * Where x can be 1 to max Channel supported by the product to select the DMA Channel flag. + * @retval None + */ +#if defined(DMA2) +#define __HAL_DMA_CLEAR_FLAG(__HANDLE__, __FLAG__) (((uint32_t)((__HANDLE__)->Instance) > ((uint32_t)DMA1_Channel7))? \ + (DMA2->IFCR = (__FLAG__)) : (DMA1->IFCR = (__FLAG__))) +#else /* DMA1 */ +#define __HAL_DMA_CLEAR_FLAG(__HANDLE__, __FLAG__) (DMA1->IFCR |= (__FLAG__)) +#endif /* DMA2 */ + +/** + * @brief Enable the specified DMA Channel interrupts. + * @param __HANDLE__ DMA handle + * @param __INTERRUPT__ specifies the DMA interrupt sources to be enabled or disabled. + * This parameter can be any combination of the following values: + * @arg DMA_IT_TC: Transfer complete interrupt mask + * @arg DMA_IT_HT: Half transfer complete interrupt mask + * @arg DMA_IT_TE: Transfer error interrupt mask + * @retval None + */ +#define __HAL_DMA_ENABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->CCR |= (__INTERRUPT__)) + +/** + * @brief Disable the specified DMA Channel interrupts. + * @param __HANDLE__ DMA handle + * @param __INTERRUPT__ specifies the DMA interrupt sources to be enabled or disabled. + * This parameter can be any combination of the following values: + * @arg DMA_IT_TC: Transfer complete interrupt mask + * @arg DMA_IT_HT: Half transfer complete interrupt mask + * @arg DMA_IT_TE: Transfer error interrupt mask + * @retval None + */ +#define __HAL_DMA_DISABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->CCR &= ~(__INTERRUPT__)) + +/** + * @brief Check whether the specified DMA Channel interrupt is enabled or disabled. + * @param __HANDLE__ DMA handle + * @param __INTERRUPT__ specifies the DMA interrupt source to check. + * This parameter can be one of the following values: + * @arg DMA_IT_TC: Transfer complete interrupt mask + * @arg DMA_IT_HT: Half transfer complete interrupt mask + * @arg DMA_IT_TE: Transfer error interrupt mask + * @retval The state of DMA_IT (SET or RESET). + */ +#define __HAL_DMA_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->CCR & (__INTERRUPT__))) + +/** + * @brief Returns the number of remaining data units in the current DMA Channel transfer. + * @param __HANDLE__ DMA handle + * @retval The number of remaining data units in the current DMA Channel transfer. + */ +#define __HAL_DMA_GET_COUNTER(__HANDLE__) ((__HANDLE__)->Instance->CNDTR) + +/** + * @} + */ + +/* Include DMA HAL Extension module */ +#include "stm32g0xx_hal_dma_ex.h" + +/* Exported functions --------------------------------------------------------*/ + +/** @addtogroup DMA_Exported_Functions + * @{ + */ + +/** @addtogroup DMA_Exported_Functions_Group1 + * @{ + */ +/* Initialization and de-initialization functions *****************************/ +HAL_StatusTypeDef HAL_DMA_Init(DMA_HandleTypeDef *hdma); +HAL_StatusTypeDef HAL_DMA_DeInit(DMA_HandleTypeDef *hdma); +/** + * @} + */ + +/** @addtogroup DMA_Exported_Functions_Group2 + * @{ + */ +/* IO operation functions *****************************************************/ +HAL_StatusTypeDef HAL_DMA_Start(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength); +HAL_StatusTypeDef HAL_DMA_Start_IT(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, + uint32_t DataLength); +HAL_StatusTypeDef HAL_DMA_Abort(DMA_HandleTypeDef *hdma); +HAL_StatusTypeDef HAL_DMA_Abort_IT(DMA_HandleTypeDef *hdma); +HAL_StatusTypeDef HAL_DMA_PollForTransfer(DMA_HandleTypeDef *hdma, HAL_DMA_LevelCompleteTypeDef CompleteLevel, + uint32_t Timeout); +void HAL_DMA_IRQHandler(DMA_HandleTypeDef *hdma); +HAL_StatusTypeDef HAL_DMA_RegisterCallback(DMA_HandleTypeDef *hdma, HAL_DMA_CallbackIDTypeDef CallbackID, void (* pCallback)(DMA_HandleTypeDef *_hdma)); +HAL_StatusTypeDef HAL_DMA_UnRegisterCallback(DMA_HandleTypeDef *hdma, HAL_DMA_CallbackIDTypeDef CallbackID); + +/** + * @} + */ + +/** @addtogroup DMA_Exported_Functions_Group3 + * @{ + */ +/* Peripheral State and Error functions ***************************************/ +HAL_DMA_StateTypeDef HAL_DMA_GetState(DMA_HandleTypeDef *hdma); +uint32_t HAL_DMA_GetError(DMA_HandleTypeDef *hdma); +/** + * @} + */ + +/** + * @} + */ + +/* Private macros ------------------------------------------------------------*/ +/** @defgroup DMA_Private_Macros DMA Private Macros + * @{ + */ + +#define IS_DMA_DIRECTION(DIRECTION) (((DIRECTION) == DMA_PERIPH_TO_MEMORY ) || \ + ((DIRECTION) == DMA_MEMORY_TO_PERIPH) || \ + ((DIRECTION) == DMA_MEMORY_TO_MEMORY)) + +#define IS_DMA_BUFFER_SIZE(SIZE) (((SIZE) >= 0x1U) && ((SIZE) < DMA_CNDTR_NDT)) + +#define IS_DMA_PERIPHERAL_INC_STATE(STATE) (((STATE) == DMA_PINC_ENABLE) || \ + ((STATE) == DMA_PINC_DISABLE)) + +#define IS_DMA_MEMORY_INC_STATE(STATE) (((STATE) == DMA_MINC_ENABLE) || \ + ((STATE) == DMA_MINC_DISABLE)) + +#define IS_DMA_ALL_REQUEST(REQUEST) ((REQUEST) <= DMA_MAX_REQUEST) + +#define IS_DMA_PERIPHERAL_DATA_SIZE(SIZE) (((SIZE) == DMA_PDATAALIGN_BYTE) || \ + ((SIZE) == DMA_PDATAALIGN_HALFWORD) || \ + ((SIZE) == DMA_PDATAALIGN_WORD)) + +#define IS_DMA_MEMORY_DATA_SIZE(SIZE) (((SIZE) == DMA_MDATAALIGN_BYTE) || \ + ((SIZE) == DMA_MDATAALIGN_HALFWORD) || \ + ((SIZE) == DMA_MDATAALIGN_WORD )) + +#define IS_DMA_MODE(MODE) (((MODE) == DMA_NORMAL ) || \ + ((MODE) == DMA_CIRCULAR)) + +#define IS_DMA_PRIORITY(PRIORITY) (((PRIORITY) == DMA_PRIORITY_LOW ) || \ + ((PRIORITY) == DMA_PRIORITY_MEDIUM) || \ + ((PRIORITY) == DMA_PRIORITY_HIGH) || \ + ((PRIORITY) == DMA_PRIORITY_VERY_HIGH)) + +/** + * @} + */ + +/* Private functions ---------------------------------------------------------*/ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32G0xx_HAL_DMA_H */ + diff --git a/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_dma_ex.h b/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_dma_ex.h new file mode 100644 index 0000000..b48dec7 --- /dev/null +++ b/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_dma_ex.h @@ -0,0 +1,278 @@ +/** + ****************************************************************************** + * @file stm32g0xx_hal_dma_ex.h + * @author MCD Application Team + * @brief Header file of DMA HAL extension module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2018 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32G0xx_HAL_DMA_EX_H +#define STM32G0xx_HAL_DMA_EX_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32g0xx_hal_def.h" +#include "stm32g0xx_ll_dmamux.h" + +/** @addtogroup STM32G0xx_HAL_Driver + * @{ + */ + +/** @addtogroup DMAEx + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ +/** @defgroup DMAEx_Exported_Types DMAEx Exported Types + * @{ + */ + +/** + * @brief HAL DMAMUX Synchronization configuration structure definition + */ +typedef struct +{ + uint32_t SyncSignalID; /*!< Specifies the synchronization signal gating the DMA request in periodic mode. + This parameter can be a value of @ref DMAEx_DMAMUX_SyncSignalID_selection */ + + uint32_t SyncPolarity; /*!< Specifies the polarity of the signal on which the DMA request is synchronized. + This parameter can be a value of @ref DMAEx_DMAMUX_SyncPolarity_selection */ + + FunctionalState SyncEnable; /*!< Specifies if the synchronization shall be enabled or disabled + This parameter can take the value ENABLE or DISABLE */ + + FunctionalState EventEnable; /*!< Specifies if an event shall be generated once the RequestNumber is reached. + This parameter can take the value ENABLE or DISABLE */ + + uint32_t RequestNumber; /*!< Specifies the number of DMA request that will be authorized after a sync event + This parameter must be a number between Min_Data = 1 and Max_Data = 32 */ + + +} HAL_DMA_MuxSyncConfigTypeDef; + + +/** + * @brief HAL DMAMUX request generator parameters structure definition + */ +typedef struct +{ + uint32_t SignalID; /*!< Specifies the ID of the signal used for DMAMUX request generator + This parameter can be a value of @ref DMAEx_DMAMUX_SignalGeneratorID_selection */ + + uint32_t Polarity; /*!< Specifies the polarity of the signal on which the request is generated. + This parameter can be a value of @ref DMAEx_DMAMUX_RequestGeneneratorPolarity_selection */ + + uint32_t RequestNumber; /*!< Specifies the number of DMA request that will be generated after a signal event + This parameter must be a number between Min_Data = 1 and Max_Data = 32 */ + +} HAL_DMA_MuxRequestGeneratorConfigTypeDef; + +/** + * @} + */ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup DMAEx_Exported_Constants DMAEx Exported Constants + * @{ + */ + +/** @defgroup DMAEx_DMAMUX_SyncSignalID_selection DMAMUX SyncSignalID selection + * @{ + */ +#define HAL_DMAMUX1_SYNC_EXTI0 LL_DMAMUX_SYNC_EXTI_LINE0 /*!< Synchronization signal from EXTI Line0 */ +#define HAL_DMAMUX1_SYNC_EXTI1 LL_DMAMUX_SYNC_EXTI_LINE1 /*!< Synchronization signal from EXTI Line1 */ +#define HAL_DMAMUX1_SYNC_EXTI2 LL_DMAMUX_SYNC_EXTI_LINE2 /*!< Synchronization signal from EXTI Line2 */ +#define HAL_DMAMUX1_SYNC_EXTI3 LL_DMAMUX_SYNC_EXTI_LINE3 /*!< Synchronization signal from EXTI Line3 */ +#define HAL_DMAMUX1_SYNC_EXTI4 LL_DMAMUX_SYNC_EXTI_LINE4 /*!< Synchronization signal from EXTI Line4 */ +#define HAL_DMAMUX1_SYNC_EXTI5 LL_DMAMUX_SYNC_EXTI_LINE5 /*!< Synchronization signal from EXTI Line5 */ +#define HAL_DMAMUX1_SYNC_EXTI6 LL_DMAMUX_SYNC_EXTI_LINE6 /*!< Synchronization signal from EXTI Line6 */ +#define HAL_DMAMUX1_SYNC_EXTI7 LL_DMAMUX_SYNC_EXTI_LINE7 /*!< Synchronization signal from EXTI Line7 */ +#define HAL_DMAMUX1_SYNC_EXTI8 LL_DMAMUX_SYNC_EXTI_LINE8 /*!< Synchronization signal from EXTI Line8 */ +#define HAL_DMAMUX1_SYNC_EXTI9 LL_DMAMUX_SYNC_EXTI_LINE9 /*!< Synchronization signal from EXTI Line9 */ +#define HAL_DMAMUX1_SYNC_EXTI10 LL_DMAMUX_SYNC_EXTI_LINE10 /*!< Synchronization signal from EXTI Line10 */ +#define HAL_DMAMUX1_SYNC_EXTI11 LL_DMAMUX_SYNC_EXTI_LINE11 /*!< Synchronization signal from EXTI Line11 */ +#define HAL_DMAMUX1_SYNC_EXTI12 LL_DMAMUX_SYNC_EXTI_LINE12 /*!< Synchronization signal from EXTI Line12 */ +#define HAL_DMAMUX1_SYNC_EXTI13 LL_DMAMUX_SYNC_EXTI_LINE13 /*!< Synchronization signal from EXTI Line1 3 */ +#define HAL_DMAMUX1_SYNC_EXTI14 LL_DMAMUX_SYNC_EXTI_LINE14 /*!< Synchronization signal from EXTI Line1 4 */ +#define HAL_DMAMUX1_SYNC_EXTI15 LL_DMAMUX_SYNC_EXTI_LINE15 /*!< Synchronization signal from EXTI Line1 5 */ +#define HAL_DMAMUX1_SYNC_DMAMUX1_CH0_EVT LL_DMAMUX_SYNC_DMAMUX_CH0 /*!< Synchronization signal from DMAMUX channel0 Event */ +#define HAL_DMAMUX1_SYNC_DMAMUX1_CH1_EVT LL_DMAMUX_SYNC_DMAMUX_CH1 /*!< Synchronization signal from DMAMUX channel1 Event */ +#define HAL_DMAMUX1_SYNC_DMAMUX1_CH2_EVT LL_DMAMUX_SYNC_DMAMUX_CH2 /*!< Synchronization signal from DMAMUX channel2 Event */ +#define HAL_DMAMUX1_SYNC_DMAMUX1_CH3_EVT LL_DMAMUX_SYNC_DMAMUX_CH3 /*!< Synchronization signal from DMAMUX channel3 Event */ +#if defined(LPTIM1) +#define HAL_DMAMUX1_SYNC_LPTIM1_OUT LL_DMAMUX_SYNC_LPTIM1_OUT /*!< Synchronization signal from LPTIM1 Output */ +#endif /* LPTIM1 */ +#if defined(LPTIM2) +#define HAL_DMAMUX1_SYNC_LPTIM2_OUT LL_DMAMUX_SYNC_LPTIM2_OUT /*!< Synchronization signal from LPTIM2 Output */ +#endif /* LPTIM2 */ +#define HAL_DMAMUX1_SYNC_TIM14_OC LL_DMAMUX_SYNC_TIM14_OC /*!< Synchronization signal from TIM14 OC */ + +#define HAL_DMAMUX1_MAX_SYNC HAL_DMAMUX1_SYNC_TIM14_OC +/** + * @} + */ + +/** @defgroup DMAEx_DMAMUX_SyncPolarity_selection DMAMUX SyncPolarity selection + * @{ + */ +#define HAL_DMAMUX_SYNC_NO_EVENT LL_DMAMUX_SYNC_NO_EVENT /*!< block synchronization events */ +#define HAL_DMAMUX_SYNC_RISING LL_DMAMUX_SYNC_POL_RISING /*!< synchronize with rising edge events */ +#define HAL_DMAMUX_SYNC_FALLING LL_DMAMUX_SYNC_POL_FALLING /*!< synchronize with falling edge events */ +#define HAL_DMAMUX_SYNC_RISING_FALLING LL_DMAMUX_SYNC_POL_RISING_FALLING /*!< synchronize with rising and falling edge events */ + +/** + * @} + */ + +/** @defgroup DMAEx_DMAMUX_SignalGeneratorID_selection DMAMUX SignalGeneratorID selection + * @{ + */ +#define HAL_DMAMUX1_REQ_GEN_EXTI0 LL_DMAMUX_REQ_GEN_EXTI_LINE0 /*!< Request signal generation from EXTI Line0 */ +#define HAL_DMAMUX1_REQ_GEN_EXTI1 LL_DMAMUX_REQ_GEN_EXTI_LINE1 /*!< Request signal generation from EXTI Line1 */ +#define HAL_DMAMUX1_REQ_GEN_EXTI2 LL_DMAMUX_REQ_GEN_EXTI_LINE2 /*!< Request signal generation from EXTI Line2 */ +#define HAL_DMAMUX1_REQ_GEN_EXTI3 LL_DMAMUX_REQ_GEN_EXTI_LINE3 /*!< Request signal generation from EXTI Line3 */ +#define HAL_DMAMUX1_REQ_GEN_EXTI4 LL_DMAMUX_REQ_GEN_EXTI_LINE4 /*!< Request signal generation from EXTI Line4 */ +#define HAL_DMAMUX1_REQ_GEN_EXTI5 LL_DMAMUX_REQ_GEN_EXTI_LINE5 /*!< Request signal generation from EXTI Line5 */ +#define HAL_DMAMUX1_REQ_GEN_EXTI6 LL_DMAMUX_REQ_GEN_EXTI_LINE6 /*!< Request signal generation from EXTI Line6 */ +#define HAL_DMAMUX1_REQ_GEN_EXTI7 LL_DMAMUX_REQ_GEN_EXTI_LINE7 /*!< Request signal generation from EXTI Line7 */ +#define HAL_DMAMUX1_REQ_GEN_EXTI8 LL_DMAMUX_REQ_GEN_EXTI_LINE8 /*!< Request signal generation from EXTI Line8 */ +#define HAL_DMAMUX1_REQ_GEN_EXTI9 LL_DMAMUX_REQ_GEN_EXTI_LINE9 /*!< Request signal generation from EXTI Line9 */ +#define HAL_DMAMUX1_REQ_GEN_EXTI10 LL_DMAMUX_REQ_GEN_EXTI_LINE10 /*!< Request signal generation from EXTI Line10 */ +#define HAL_DMAMUX1_REQ_GEN_EXTI11 LL_DMAMUX_REQ_GEN_EXTI_LINE11 /*!< Request signal generation from EXTI Line11 */ +#define HAL_DMAMUX1_REQ_GEN_EXTI12 LL_DMAMUX_REQ_GEN_EXTI_LINE12 /*!< Request signal generation from EXTI Line12 */ +#define HAL_DMAMUX1_REQ_GEN_EXTI13 LL_DMAMUX_REQ_GEN_EXTI_LINE13 /*!< Request signal generation from EXTI Line13 */ +#define HAL_DMAMUX1_REQ_GEN_EXTI14 LL_DMAMUX_REQ_GEN_EXTI_LINE14 /*!< Request signal generation from EXTI Line14 */ +#define HAL_DMAMUX1_REQ_GEN_EXTI15 LL_DMAMUX_REQ_GEN_EXTI_LINE15 /*!< Request signal generation from EXTI Line15 */ +#define HAL_DMAMUX1_REQ_GEN_DMAMUX1_CH0_EVT LL_DMAMUX_REQ_GEN_DMAMUX_CH0 /*!< Request signal generation from DMAMUX channel0 Event */ +#define HAL_DMAMUX1_REQ_GEN_DMAMUX1_CH1_EVT LL_DMAMUX_REQ_GEN_DMAMUX_CH1 /*!< Request signal generation from DMAMUX channel1 Event */ +#define HAL_DMAMUX1_REQ_GEN_DMAMUX1_CH2_EVT LL_DMAMUX_REQ_GEN_DMAMUX_CH2 /*!< Request signal generation from DMAMUX channel2 Event */ +#define HAL_DMAMUX1_REQ_GEN_DMAMUX1_CH3_EVT LL_DMAMUX_REQ_GEN_DMAMUX_CH3 /*!< Request signal generation from DMAMUX channel3 Event */ +#if defined(LPTIM1) +#define HAL_DMAMUX1_REQ_GEN_LPTIM1_OUT LL_DMAMUX_REQ_GEN_LPTIM1_OUT /*!< Request signal generation from LPTIM1 Output */ +#endif /* LPTIM1 */ +#if defined(LPTIM2) +#define HAL_DMAMUX1_REQ_GEN_LPTIM2_OUT LL_DMAMUX_REQ_GEN_LPTIM2_OUT /*!< Request signal generation from LPTIM2 Output */ +#endif /* LPTIM2 */ +#define HAL_DMAMUX1_REQ_GEN_TIM14_OC LL_DMAMUX_REQ_GEN_TIM14_OC /*!< Request signal generation from TIM14 OC */ + +#define HAL_DMAMUX1_MAX_REQ_GEN HAL_DMAMUX1_REQ_GEN_TIM14_OC +/** + * @} + */ + +/** @defgroup DMAEx_DMAMUX_RequestGeneneratorPolarity_selection DMAMUX RequestGeneneratorPolarity selection + * @{ + */ +#define HAL_DMAMUX_REQ_GEN_NO_EVENT LL_DMAMUX_REQ_GEN_NO_EVENT /*!< block request generator events */ +#define HAL_DMAMUX_REQ_GEN_RISING LL_DMAMUX_REQ_GEN_POL_RISING /*!< generate request on rising edge events */ +#define HAL_DMAMUX_REQ_GEN_FALLING LL_DMAMUX_REQ_GEN_POL_FALLING /*!< generate request on falling edge events */ +#define HAL_DMAMUX_REQ_GEN_RISING_FALLING LL_DMAMUX_REQ_GEN_POL_RISING_FALLING /*!< generate request on rising and falling edge events */ + +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup DMAEx_Exported_Functions + * @{ + */ + +/* IO operation functions *****************************************************/ +/** @addtogroup DMAEx_Exported_Functions_Group1 + * @{ + */ + +/* ------------------------- REQUEST -----------------------------------------*/ +HAL_StatusTypeDef HAL_DMAEx_ConfigMuxRequestGenerator(DMA_HandleTypeDef *hdma, + HAL_DMA_MuxRequestGeneratorConfigTypeDef *pRequestGeneratorConfig); +HAL_StatusTypeDef HAL_DMAEx_EnableMuxRequestGenerator(DMA_HandleTypeDef *hdma); +HAL_StatusTypeDef HAL_DMAEx_DisableMuxRequestGenerator(DMA_HandleTypeDef *hdma); +/* -------------------------------------------------------------------------- */ + +/* ------------------------- SYNCHRO -----------------------------------------*/ +HAL_StatusTypeDef HAL_DMAEx_ConfigMuxSync(DMA_HandleTypeDef *hdma, HAL_DMA_MuxSyncConfigTypeDef *pSyncConfig); +/* -------------------------------------------------------------------------- */ + +void HAL_DMAEx_MUX_IRQHandler(DMA_HandleTypeDef *hdma); + +/** + * @} + */ + +/** + * @} + */ + + +/* Private macros ------------------------------------------------------------*/ +/** @defgroup DMAEx_Private_Macros DMAEx Private Macros + * @brief DMAEx private macros + * @{ + */ + +#define IS_DMAMUX_SYNC_SIGNAL_ID(SIGNAL_ID) (((SIGNAL_ID) == HAL_DMAMUX1_SYNC_EXTI0) || \ + (((SIGNAL_ID) >= HAL_DMAMUX1_SYNC_EXTI1) && \ + ((SIGNAL_ID) <= HAL_DMAMUX1_MAX_SYNC))) + +#define IS_DMAMUX_SYNC_REQUEST_NUMBER(REQUEST_NUMBER) (((REQUEST_NUMBER) > 0U) && ((REQUEST_NUMBER) <= 32U)) + +#define IS_DMAMUX_SYNC_POLARITY(POLARITY) (((POLARITY) == HAL_DMAMUX_SYNC_NO_EVENT) || \ + ((POLARITY) == HAL_DMAMUX_SYNC_RISING) || \ + ((POLARITY) == HAL_DMAMUX_SYNC_FALLING) || \ + ((POLARITY) == HAL_DMAMUX_SYNC_RISING_FALLING)) + +#define IS_DMAMUX_SYNC_STATE(SYNC) (((SYNC) == DISABLE) || ((SYNC) == ENABLE)) + +#define IS_DMAMUX_SYNC_EVENT(EVENT) (((EVENT) == DISABLE) || \ + ((EVENT) == ENABLE)) + +#define IS_DMAMUX_REQUEST_GEN_SIGNAL_ID(SIGNAL_ID) (((SIGNAL_ID) == HAL_DMAMUX1_REQ_GEN_EXTI0) || \ + (((SIGNAL_ID) >= HAL_DMAMUX1_REQ_GEN_EXTI1) && \ + ((SIGNAL_ID) <= HAL_DMAMUX1_MAX_REQ_GEN))) + +#define IS_DMAMUX_REQUEST_GEN_REQUEST_NUMBER(REQUEST_NUMBER) (((REQUEST_NUMBER) > 0U) && ((REQUEST_NUMBER) <= 32U)) + +#define IS_DMAMUX_REQUEST_GEN_POLARITY(POLARITY) (((POLARITY) == HAL_DMAMUX_REQ_GEN_NO_EVENT)|| \ + ((POLARITY) == HAL_DMAMUX_REQ_GEN_RISING) || \ + ((POLARITY) == HAL_DMAMUX_REQ_GEN_FALLING) || \ + ((POLARITY) == HAL_DMAMUX_REQ_GEN_RISING_FALLING)) + +/** + * @} + */ + + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32G0xx_HAL_DMA_EX_H */ + diff --git a/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_exti.h b/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_exti.h new file mode 100644 index 0000000..8a20c24 --- /dev/null +++ b/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_exti.h @@ -0,0 +1,387 @@ +/** + ****************************************************************************** + * @file stm32g0xx_hal_exti.h + * @author MCD Application Team + * @brief Header file of EXTI HAL module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2018 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32G0xx_HAL_EXTI_H +#define STM32G0xx_HAL_EXTI_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32g0xx_hal_def.h" + +/** @addtogroup STM32G0xx_HAL_Driver + * @{ + */ + +/** @defgroup EXTI EXTI + * @brief EXTI HAL module driver + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ + +/** @defgroup EXTI_Exported_Types EXTI Exported Types + * @{ + */ +typedef enum +{ + HAL_EXTI_COMMON_CB_ID = 0x00U, + HAL_EXTI_RISING_CB_ID = 0x01U, + HAL_EXTI_FALLING_CB_ID = 0x02U, +} EXTI_CallbackIDTypeDef; + + +/** + * @brief EXTI Handle structure definition + */ +typedef struct +{ + uint32_t Line; /*!< Exti line number */ + void (* RisingCallback)(void); /*!< Exti rising callback */ + void (* FallingCallback)(void); /*!< Exti falling callback */ +} EXTI_HandleTypeDef; + +/** + * @brief EXTI Configuration structure definition + */ +typedef struct +{ + uint32_t Line; /*!< The Exti line to be configured. This parameter + can be a value of @ref EXTI_Line */ + uint32_t Mode; /*!< The Exit Mode to be configured for a core. + This parameter can be a combination of @ref EXTI_Mode */ + uint32_t Trigger; /*!< The Exti Trigger to be configured. This parameter + can be a value of @ref EXTI_Trigger */ + uint32_t GPIOSel; /*!< The Exti GPIO multiplexer selection to be configured. + This parameter is only possible for line 0 to 15. It + can be a value of @ref EXTI_GPIOSel */ +} EXTI_ConfigTypeDef; + +/** + * @} + */ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup EXTI_Exported_Constants EXTI Exported Constants + * @{ + */ + +/** @defgroup EXTI_Line EXTI Line + * @{ + */ +#define EXTI_LINE_0 (EXTI_GPIO | EXTI_REG1 | 0x00u) +#define EXTI_LINE_1 (EXTI_GPIO | EXTI_REG1 | 0x01u) +#define EXTI_LINE_2 (EXTI_GPIO | EXTI_REG1 | 0x02u) +#define EXTI_LINE_3 (EXTI_GPIO | EXTI_REG1 | 0x03u) +#define EXTI_LINE_4 (EXTI_GPIO | EXTI_REG1 | 0x04u) +#define EXTI_LINE_5 (EXTI_GPIO | EXTI_REG1 | 0x05u) +#define EXTI_LINE_6 (EXTI_GPIO | EXTI_REG1 | 0x06u) +#define EXTI_LINE_7 (EXTI_GPIO | EXTI_REG1 | 0x07u) +#define EXTI_LINE_8 (EXTI_GPIO | EXTI_REG1 | 0x08u) +#define EXTI_LINE_9 (EXTI_GPIO | EXTI_REG1 | 0x09u) +#define EXTI_LINE_10 (EXTI_GPIO | EXTI_REG1 | 0x0Au) +#define EXTI_LINE_11 (EXTI_GPIO | EXTI_REG1 | 0x0Bu) +#define EXTI_LINE_12 (EXTI_GPIO | EXTI_REG1 | 0x0Cu) +#define EXTI_LINE_13 (EXTI_GPIO | EXTI_REG1 | 0x0Du) +#define EXTI_LINE_14 (EXTI_GPIO | EXTI_REG1 | 0x0Eu) +#define EXTI_LINE_15 (EXTI_GPIO | EXTI_REG1 | 0x0Fu) +#define EXTI_LINE_16 (EXTI_CONFIG | EXTI_REG1 | 0x10u) +#if defined(COMP1) +#define EXTI_LINE_17 (EXTI_CONFIG | EXTI_REG1 | 0x11u) +#else +#define EXTI_LINE_17 (EXTI_RESERVED | EXTI_REG1 | 0x11u) +#endif /* COMP1 */ +#if defined(COMP2) +#define EXTI_LINE_18 (EXTI_CONFIG | EXTI_REG1 | 0x12u) +#else +#define EXTI_LINE_18 (EXTI_RESERVED | EXTI_REG1 | 0x12u) +#endif /* COMP2 */ +#define EXTI_LINE_19 (EXTI_DIRECT | EXTI_REG1 | 0x13u) +#if defined(COMP3) +#define EXTI_LINE_20 (EXTI_CONFIG | EXTI_REG1 | 0x14u) +#else +#define EXTI_LINE_20 (EXTI_RESERVED | EXTI_REG1 | 0x14u) +#endif /* COMP3 */ +#define EXTI_LINE_21 (EXTI_DIRECT | EXTI_REG1 | 0x15u) +#if defined(RCC_CCIPR_I2C2SEL) +#define EXTI_LINE_22 (EXTI_DIRECT | EXTI_REG1 | 0x16u) +#else +#define EXTI_LINE_22 (EXTI_RESERVED | EXTI_REG1 | 0x16u) +#endif /* RCC_CCIPR_I2C2SEL */ +#define EXTI_LINE_23 (EXTI_DIRECT | EXTI_REG1 | 0x17u) +#if defined(RCC_CCIPR_USART3SEL) +#define EXTI_LINE_24 (EXTI_DIRECT | EXTI_REG1 | 0x18u) +#else +#define EXTI_LINE_24 (EXTI_RESERVED | EXTI_REG1 | 0x18u) +#endif /* RCC_CCIPR_USART3SEL */ +#define EXTI_LINE_25 (EXTI_DIRECT | EXTI_REG1 | 0x19u) +#if defined(RCC_CCIPR_USART2SEL) +#define EXTI_LINE_26 (EXTI_DIRECT | EXTI_REG1 | 0x1Au) +#else +#define EXTI_LINE_26 (EXTI_RESERVED | EXTI_REG1 | 0x1Au) +#endif /* RCC_CCIPR_USART2SEL */ +#if defined(CEC) +#define EXTI_LINE_27 (EXTI_DIRECT | EXTI_REG1 | 0x1Bu) +#else +#define EXTI_LINE_27 (EXTI_RESERVED | EXTI_REG1 | 0x1Bu) +#endif /* CEC */ +#if defined(LPUART1) +#define EXTI_LINE_28 (EXTI_DIRECT | EXTI_REG1 | 0x1Cu) +#else +#define EXTI_LINE_28 (EXTI_RESERVED | EXTI_REG1 | 0x1Cu) +#endif /* LPUART1 */ +#if defined(LPTIM1) +#define EXTI_LINE_29 (EXTI_DIRECT | EXTI_REG1 | 0x1Du) +#else +#define EXTI_LINE_29 (EXTI_RESERVED | EXTI_REG1 | 0x1Du) +#endif /* LPTIM1 */ +#if defined(LPTIM2) +#define EXTI_LINE_30 (EXTI_DIRECT | EXTI_REG1 | 0x1Eu) +#else +#define EXTI_LINE_30 (EXTI_RESERVED | EXTI_REG1 | 0x1Eu) +#endif /* LPTIM2 */ +#define EXTI_LINE_31 (EXTI_DIRECT | EXTI_REG1 | 0x1Fu) +#if defined(UCPD1) +#define EXTI_LINE_32 (EXTI_DIRECT | EXTI_REG2 | 0x00u) +#else +#define EXTI_LINE_32 (EXTI_RESERVED | EXTI_REG2 | 0x00u) +#endif /* UCPD1 */ +#if defined(UCPD2) +#define EXTI_LINE_33 (EXTI_DIRECT | EXTI_REG2 | 0x01u) +#else +#define EXTI_LINE_33 (EXTI_RESERVED | EXTI_REG2 | 0x01u) +#endif /* UCPD2 */ +#if defined(STM32G0C1xx) || defined(STM32G0B1xx) +#define EXTI_LINE_34 (EXTI_CONFIG | EXTI_REG2 | 0x02u) +#else +#define EXTI_LINE_34 (EXTI_RESERVED | EXTI_REG2 | 0x02u) +#endif /* STM32G0C1xx || STM32G0B1xx */ +#if defined(LPUART2) +#define EXTI_LINE_35 (EXTI_DIRECT | EXTI_REG2 | 0x03u) +#else +#define EXTI_LINE_35 (EXTI_RESERVED | EXTI_REG2 | 0x03u) +#endif /* LPUART2 */ +#if defined(STM32G0C1xx) || defined(STM32G0B1xx) || defined(STM32G0B0xx) +#define EXTI_LINE_36 (EXTI_DIRECT | EXTI_REG2 | 0x04u) +#endif /* STM32G0C1xx || STM32G0B1xx || STM32G0B0xx */ +/** + * @} + */ + +/** @defgroup EXTI_Mode EXTI Mode + * @{ + */ +#define EXTI_MODE_NONE 0x00000000u +#define EXTI_MODE_INTERRUPT 0x00000001u +#define EXTI_MODE_EVENT 0x00000002u +/** + * @} + */ + +/** @defgroup EXTI_Trigger EXTI Trigger + * @{ + */ +#define EXTI_TRIGGER_NONE 0x00000000u +#define EXTI_TRIGGER_RISING 0x00000001u +#define EXTI_TRIGGER_FALLING 0x00000002u +#define EXTI_TRIGGER_RISING_FALLING (EXTI_TRIGGER_RISING | EXTI_TRIGGER_FALLING) +/** + * @} + */ + +/** @defgroup EXTI_GPIOSel EXTI GPIOSel + * @brief + * @{ + */ +#define EXTI_GPIOA 0x00000000u +#define EXTI_GPIOB 0x00000001u +#define EXTI_GPIOC 0x00000002u +#define EXTI_GPIOD 0x00000003u +#if defined(GPIOE) +#define EXTI_GPIOE 0x00000004u +#endif /* GPIOE */ +#define EXTI_GPIOF 0x00000005u +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup EXTI_Exported_Macros EXTI Exported Macros + * @{ + */ + +/** + * @} + */ + +/* Private constants --------------------------------------------------------*/ +/** @defgroup EXTI_Private_Constants EXTI Private Constants + * @{ + */ +/** + * @brief EXTI Line property definition + */ +#define EXTI_PROPERTY_SHIFT 24u +#define EXTI_DIRECT (0x01uL << EXTI_PROPERTY_SHIFT) +#define EXTI_CONFIG (0x02uL << EXTI_PROPERTY_SHIFT) +#define EXTI_GPIO ((0x04uL << EXTI_PROPERTY_SHIFT) | EXTI_CONFIG) +#define EXTI_RESERVED (0x08uL << EXTI_PROPERTY_SHIFT) +#define EXTI_PROPERTY_MASK (EXTI_DIRECT | EXTI_CONFIG | EXTI_GPIO) + +/** + * @brief EXTI Register and bit usage + */ +#define EXTI_REG_SHIFT 16u +#define EXTI_REG1 (0x00uL << EXTI_REG_SHIFT) +#define EXTI_REG2 (0x01uL << EXTI_REG_SHIFT) +#define EXTI_REG_MASK (EXTI_REG1 | EXTI_REG2) +#define EXTI_PIN_MASK 0x0000001Fu + +/** + * @brief EXTI Mask for interrupt & event mode + */ +#define EXTI_MODE_MASK (EXTI_MODE_EVENT | EXTI_MODE_INTERRUPT) + +/** + * @brief EXTI Mask for trigger possibilities + */ +#define EXTI_TRIGGER_MASK (EXTI_TRIGGER_RISING | EXTI_TRIGGER_FALLING) + +/** + * @brief EXTI Line number + */ +#if defined(STM32G0C1xx) || defined(STM32G0B1xx) +#define EXTI_LINE_NB 37uL +#elif defined(STM32G0B0xx) +#define EXTI_LINE_NB 37uL +#elif defined(STM32G081xx) || defined(STM32G071xx) +#define EXTI_LINE_NB 34uL +#elif defined(STM32G070xx) +#define EXTI_LINE_NB 34uL +#elif defined(STM32G041xx) || defined(STM32G031xx) +#define EXTI_LINE_NB 32uL +#else +#define EXTI_LINE_NB 32uL +#endif /* STM32G0C1xx || STM32G0B1xx */ + +/** + * @} + */ + +/* Private macros ------------------------------------------------------------*/ +/** @defgroup EXTI_Private_Macros EXTI Private Macros + * @{ + */ +#define IS_EXTI_LINE(__EXTI_LINE__) ((((__EXTI_LINE__) & ~(EXTI_PROPERTY_MASK | EXTI_REG_MASK | EXTI_PIN_MASK)) == 0x00u) && \ + ((((__EXTI_LINE__) & EXTI_PROPERTY_MASK) == EXTI_DIRECT) || \ + (((__EXTI_LINE__) & EXTI_PROPERTY_MASK) == EXTI_CONFIG) || \ + (((__EXTI_LINE__) & EXTI_PROPERTY_MASK) == EXTI_GPIO)) && \ + (((__EXTI_LINE__) & (EXTI_REG_MASK | EXTI_PIN_MASK)) < \ + (((EXTI_LINE_NB / 32u) << EXTI_REG_SHIFT) | (EXTI_LINE_NB % 32u)))) + +#define IS_EXTI_MODE(__MODE__) ((((__MODE__) & EXTI_MODE_MASK) != 0x00u) && \ + (((__MODE__) & ~EXTI_MODE_MASK) == 0x00u)) + +#define IS_EXTI_TRIGGER(__EXTI_LINE__) (((__EXTI_LINE__) & ~EXTI_TRIGGER_MASK) == 0x00u) + +#define IS_EXTI_PENDING_EDGE(__EXTI_LINE__) (((__EXTI_LINE__) == EXTI_TRIGGER_RISING) || \ + ((__EXTI_LINE__) == EXTI_TRIGGER_FALLING)) + +#define IS_EXTI_CONFIG_LINE(__EXTI_LINE__) (((__EXTI_LINE__) & EXTI_CONFIG) != 0x00u) + +#if defined(GPIOE) +#define IS_EXTI_GPIO_PORT(__PORT__) (((__PORT__) == EXTI_GPIOA) || \ + ((__PORT__) == EXTI_GPIOB) || \ + ((__PORT__) == EXTI_GPIOC) || \ + ((__PORT__) == EXTI_GPIOD) || \ + ((__PORT__) == EXTI_GPIOE) || \ + ((__PORT__) == EXTI_GPIOF)) +#else +#define IS_EXTI_GPIO_PORT(__PORT__) (((__PORT__) == EXTI_GPIOA) || \ + ((__PORT__) == EXTI_GPIOB) || \ + ((__PORT__) == EXTI_GPIOC) || \ + ((__PORT__) == EXTI_GPIOD) || \ + ((__PORT__) == EXTI_GPIOF)) +#endif /* GPIOE */ + +#define IS_EXTI_GPIO_PIN(__PIN__) ((__PIN__) < 16u) + +/** + * @} + */ + + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup EXTI_Exported_Functions EXTI Exported Functions + * @brief EXTI Exported Functions + * @{ + */ + +/** @defgroup EXTI_Exported_Functions_Group1 Configuration functions + * @brief Configuration functions + * @{ + */ +/* Configuration functions ****************************************************/ +HAL_StatusTypeDef HAL_EXTI_SetConfigLine(EXTI_HandleTypeDef *hexti, EXTI_ConfigTypeDef *pExtiConfig); +HAL_StatusTypeDef HAL_EXTI_GetConfigLine(EXTI_HandleTypeDef *hexti, EXTI_ConfigTypeDef *pExtiConfig); +HAL_StatusTypeDef HAL_EXTI_ClearConfigLine(EXTI_HandleTypeDef *hexti); +HAL_StatusTypeDef HAL_EXTI_RegisterCallback(EXTI_HandleTypeDef *hexti, EXTI_CallbackIDTypeDef CallbackID, void (*pPendingCbfn)(void)); +HAL_StatusTypeDef HAL_EXTI_GetHandle(EXTI_HandleTypeDef *hexti, uint32_t ExtiLine); +/** + * @} + */ + +/** @defgroup EXTI_Exported_Functions_Group2 IO operation functions + * @brief IO operation functions + * @{ + */ +/* IO operation functions *****************************************************/ +void HAL_EXTI_IRQHandler(EXTI_HandleTypeDef *hexti); +uint32_t HAL_EXTI_GetPending(EXTI_HandleTypeDef *hexti, uint32_t Edge); +void HAL_EXTI_ClearPending(EXTI_HandleTypeDef *hexti, uint32_t Edge); +void HAL_EXTI_GenerateSWI(EXTI_HandleTypeDef *hexti); + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32G0xx_HAL_EXTI_H */ + diff --git a/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_flash.h b/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_flash.h new file mode 100644 index 0000000..753e6b9 --- /dev/null +++ b/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_flash.h @@ -0,0 +1,1033 @@ +/** + ****************************************************************************** + * @file stm32g0xx_hal_flash.h + * @author MCD Application Team + * @brief Header file of FLASH HAL module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2018 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file in + * the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32G0xx_HAL_FLASH_H +#define STM32G0xx_HAL_FLASH_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32g0xx_hal_def.h" + +/** @addtogroup STM32G0xx_HAL_Driver + * @{ + */ + +/** @addtogroup FLASH + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ +/** @defgroup FLASH_Exported_Types FLASH Exported Types + * @{ + */ + +/** + * @brief FLASH Erase structure definition + */ +typedef struct +{ + uint32_t TypeErase; /*!< Mass erase or page erase. + This parameter can be a value of @ref FLASH_Type_Erase */ + uint32_t Banks; /*!< Select bank to erase. + This parameter must be a value of @ref FLASH_Banks + (FLASH_BANK_BOTH should be used only for mass erase) */ + uint32_t Page; /*!< Initial Flash page to erase when page erase is enabled + This parameter must be a value between 0 and (FLASH_PAGE_NB - 1) */ + uint32_t NbPages; /*!< Number of pages to be erased. + This parameter must be a value between 1 and (FLASH_PAGE_NB - value of initial page)*/ +} FLASH_EraseInitTypeDef; + +/** + * @brief FLASH Option Bytes Program structure definition + */ +typedef struct +{ + uint32_t OptionType; /*!< Option byte to be configured. + This parameter can be a combination of the values of @ref FLASH_OB_Type */ + uint32_t WRPArea; /*!< Write protection area to be programmed (used for OPTIONBYTE_WRP). + Only one WRP area could be programmed at the same time. + This parameter can be value of @ref FLASH_OB_WRP_Area */ + uint32_t WRPStartOffset; /*!< Write protection start offset (used for OPTIONBYTE_WRP). + This parameter must be a value between 0 and [FLASH_PAGE_NB - 1]*/ + uint32_t WRPEndOffset; /*!< Write protection end offset (used for OPTIONBYTE_WRP). + This parameter must be a value between WRPStartOffset and [FLASH_PAGE_NB - 1] */ + uint32_t RDPLevel; /*!< Set the read protection level (used for OPTIONBYTE_RDP). + This parameter can be a value of @ref FLASH_OB_Read_Protection */ + uint32_t USERType; /*!< User option byte(s) to be configured (used for OPTIONBYTE_USER). + This parameter can be a combination of @ref FLASH_OB_USER_Type */ + uint32_t USERConfig; /*!< Value of the user option byte (used for OPTIONBYTE_USER). + This parameter can be a combination of + @ref FLASH_OB_USER_BOR_ENABLE(*), + @ref FLASH_OB_USER_BOR_LEVEL(*), + @ref FLASH_OB_USER_RESET_CONFIG(*), + @ref FLASH_OB_USER_nRST_STOP, + @ref FLASH_OB_USER_nRST_STANDBY, + @ref FLASH_OB_USER_nRST_SHUTDOWN(*), + @ref FLASH_OB_USER_IWDG_SW, + @ref FLASH_OB_USER_IWDG_STOP, + @ref FLASH_OB_USER_IWDG_STANDBY, + @ref FLASH_OB_USER_WWDG_SW, + @ref FLASH_OB_USER_SRAM_PARITY, + @ref FLASH_OB_USER_BANK_SWAP(*), + @ref FLASH_OB_USER_DUAL_BANK(*), + @ref FLASH_OB_USER_nBOOT_SEL, + @ref FLASH_OB_USER_nBOOT1, + @ref FLASH_OB_USER_nBOOT0, + @ref FLASH_OB_USER_INPUT_RESET_HOLDER(*) + @note (*) availability depends on devices */ +#if defined(FLASH_PCROP_SUPPORT) + uint32_t PCROPConfig; /*!< Configuration of the PCROP (used for OPTIONBYTE_PCROP). + This parameter must be a combination of @ref FLASH_OB_PCROP_ZONE + and @ref FLASH_OB_PCROP_RDP. Note that once set, Pcrop erase on RDP level 1 regression + (PCROP_RDP bit) can not be reset. It will be reset by mass erase */ + uint32_t PCROP1AStartAddr; /*!< PCROP Start address (used for OPTIONBYTE_PCROP). It represents first address of start block + to protect. Make sure this parameter is multiple of PCROP granularity: 512 Bytes.*/ + uint32_t PCROP1AEndAddr; /*!< PCROP End address (used for OPTIONBYTE_PCROP). It represents first address of end block + to protect. Make sure this parameter is multiple of PCROP granularity: 512 Bytes.*/ + uint32_t PCROP1BStartAddr; /*!< PCROP Start address (used for OPTIONBYTE_PCROP). It represents first address of start block + to protect. Make sure this parameter is multiple of PCROP granularity: 512 Bytes.*/ + uint32_t PCROP1BEndAddr; /*!< PCROP End address (used for OPTIONBYTE_PCROP). It represents first address of end block + to protect. Make sure this parameter is multiple of PCROP granularity: 512 Bytes.*/ +#if defined(FLASH_DBANK_SUPPORT) + uint32_t PCROP2AStartAddr; /*!< PCROP Start address (used for OPTIONBYTE_PCROP). It represents first address of start block + to protect. Make sure this parameter is multiple of PCROP granularity: 512 Bytes.*/ + uint32_t PCROP2AEndAddr; /*!< PCROP End address (used for OPTIONBYTE_PCROP). It represents first address of end block + to protect. Make sure this parameter is multiple of PCROP granularity: 512 Bytes.*/ + uint32_t PCROP2BStartAddr; /*!< PCROP Start address (used for OPTIONBYTE_PCROP). It represents first address of start block + to protect. Make sure this parameter is multiple of PCROP granularity: 512 Bytes.*/ + uint32_t PCROP2BEndAddr; /*!< PCROP End address (used for OPTIONBYTE_PCROP). It represents first address of end block + to protect. Make sure this parameter is multiple of PCROP granularity: 512 Bytes.*/ +#endif /* FLASH_DBANK_SUPPORT */ +#endif /* FLASH_PCROP_SUPPORT */ +#if defined(FLASH_SECURABLE_MEMORY_SUPPORT) + uint32_t BootEntryPoint; /*!< Allow to force a unique boot entry point to Flash or system Flash */ + uint32_t SecSize; /*!< This parameter defines securable memory area width in number of pages starting from Flash base address. + This parameter must be a value between [0] and [FLASH_PAGE_NB], + [0] meaning no secure area defined, [1] meaning first page only protected, etc... */ +#if defined(FLASH_DBANK_SUPPORT) + uint32_t SecSize2; /*!< This parameter defines securable memory area width in number of pages starting from 2nd Bank start address. + This parameter must be a value between [0] and [FLASH_PAGE_NB], + [0] meaning no secure area defined, [1] meaning first page only protected, etc... */ +#endif /* FLASH_SECURABLE_MEMORY_SUPPORT */ +#endif /* FLASH_DBANK_SUPPORT */ +} FLASH_OBProgramInitTypeDef; + +/** + * @brief FLASH handle Structure definition + */ +typedef struct +{ + HAL_LockTypeDef Lock; /* FLASH locking object */ + uint32_t ErrorCode; /* FLASH error code */ + uint32_t ProcedureOnGoing; /* Internal variable to indicate which procedure is ongoing or not in IT context */ + uint32_t Address; /* Internal variable to save address selected for program in IT context */ + uint32_t Banks; /* Internal variable to save current bank selected during erase in IT context */ + uint32_t Page; /* Internal variable to define the current page which is erasing in IT context */ + uint32_t NbPagesToErase; /* Internal variable to save the remaining pages to erase in IT context */ +} FLASH_ProcessTypeDef; + +/** + * @} + */ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup FLASH_Exported_Constants FLASH Exported Constants + * @{ + */ +/** @defgroup FLASH_Keys FLASH Keys + * @{ + */ +#define FLASH_KEY1 0x45670123U /*!< Flash key1 */ +#define FLASH_KEY2 0xCDEF89ABU /*!< Flash key2: used with FLASH_KEY1 + to unlock the FLASH registers access */ +#define FLASH_OPTKEY1 0x08192A3BU /*!< Flash option byte key1 */ +#define FLASH_OPTKEY2 0x4C5D6E7FU /*!< Flash option byte key2: used with FLASH_OPTKEY1 + to allow option bytes operations */ +/** + * @} + */ + +/** @defgroup FLASH_Latency FLASH Latency + * @{ + */ +#define FLASH_LATENCY_0 0x00000000UL /*!< FLASH Zero wait state */ +#define FLASH_LATENCY_1 FLASH_ACR_LATENCY_0 /*!< FLASH One wait state */ +#define FLASH_LATENCY_2 FLASH_ACR_LATENCY_1 /*!< FLASH Two wait states */ +/** + * @} + */ + +/** @defgroup FLASH_Flags FLASH Flags Definition + * @{ + */ +#define FLASH_FLAG_EOP ((FLASH_FLAG_SR_ID << FLASH_FLAG_REG_POS) | FLASH_SR_EOP_Pos) /*!< FLASH End of operation flag */ +#define FLASH_FLAG_OPERR ((FLASH_FLAG_SR_ID << FLASH_FLAG_REG_POS) | FLASH_SR_OPERR_Pos) /*!< FLASH Operation error flag */ +#define FLASH_FLAG_PROGERR ((FLASH_FLAG_SR_ID << FLASH_FLAG_REG_POS) | FLASH_SR_PROGERR_Pos) /*!< FLASH Programming error flag */ +#define FLASH_FLAG_WRPERR ((FLASH_FLAG_SR_ID << FLASH_FLAG_REG_POS) | FLASH_SR_WRPERR_Pos) /*!< FLASH Write protection error flag */ +#define FLASH_FLAG_PGAERR ((FLASH_FLAG_SR_ID << FLASH_FLAG_REG_POS) | FLASH_SR_PGAERR_Pos) /*!< FLASH Programming alignment error flag */ +#define FLASH_FLAG_SIZERR ((FLASH_FLAG_SR_ID << FLASH_FLAG_REG_POS) | FLASH_SR_SIZERR_Pos) /*!< FLASH Size error flag */ +#define FLASH_FLAG_PGSERR ((FLASH_FLAG_SR_ID << FLASH_FLAG_REG_POS) | FLASH_SR_PGSERR_Pos) /*!< FLASH Programming sequence error flag */ +#define FLASH_FLAG_MISERR ((FLASH_FLAG_SR_ID << FLASH_FLAG_REG_POS) | FLASH_SR_MISERR_Pos) /*!< FLASH Fast programming data miss error flag */ +#define FLASH_FLAG_FASTERR ((FLASH_FLAG_SR_ID << FLASH_FLAG_REG_POS) | FLASH_SR_FASTERR_Pos) /*!< FLASH Fast programming error flag */ +#if defined(FLASH_PCROP_SUPPORT) +#define FLASH_FLAG_RDERR ((FLASH_FLAG_SR_ID << FLASH_FLAG_REG_POS) | FLASH_SR_RDERR_Pos) /*!< FLASH PCROP read error flag */ +#endif /* FLASH_PCROP_SUPPORT */ +#define FLASH_FLAG_OPTVERR ((FLASH_FLAG_SR_ID << FLASH_FLAG_REG_POS) | FLASH_SR_OPTVERR_Pos) /*!< FLASH Option validity error flag */ +#define FLASH_FLAG_BSY1 ((FLASH_FLAG_SR_ID << FLASH_FLAG_REG_POS) | FLASH_SR_BSY1_Pos) /*!< FLASH Operation Busy flag for Bank 1 */ +#if defined(FLASH_DBANK_SUPPORT) +#define FLASH_FLAG_BSY2 ((FLASH_FLAG_SR_ID << FLASH_FLAG_REG_POS) | FLASH_SR_BSY2_Pos) /*!< FLASH Operation Busy flag for Bank 2 */ +#endif /* FLASH_DBANK_SUPPORT */ +#define FLASH_FLAG_BSY FLASH_FLAG_BSY1 /*!< FLASH Operation Busy flag - legacy name for single bank */ +#define FLASH_FLAG_CFGBSY ((FLASH_FLAG_SR_ID << FLASH_FLAG_REG_POS) | FLASH_SR_CFGBSY_Pos) /*!< FLASH Configuration Busy flag */ +#if defined(FLASH_DBANK_SUPPORT) +#define FLASH_FLAG_PESD ((FLASH_FLAG_SR_ID << FLASH_FLAG_REG_POS) | FLASH_SR_PESD_Pos) /*!< FLASH Programming/erase operation suspended */ +#endif /* FLASH_DBANK_SUPPORT */ +#define FLASH_FLAG_ECCC1 ((FLASH_FLAG_ECCR1_ID << FLASH_FLAG_REG_POS) | FLASH_ECCR_ECCC_Pos) /*!< FLASH ECC correction on bank 1 */ +#define FLASH_FLAG_ECCD1 ((FLASH_FLAG_ECCR1_ID << FLASH_FLAG_REG_POS) | FLASH_ECCR_ECCD_Pos) /*!< FLASH ECC detection on bank 1 */ +#if defined(FLASH_DBANK_SUPPORT) +#define FLASH_FLAG_ECCC2 ((FLASH_FLAG_ECCR2_ID << FLASH_FLAG_REG_POS) | FLASH_ECC2R_ECCC_Pos) /*!< FLASH ECC correction on bank 2 */ +#define FLASH_FLAG_ECCD2 ((FLASH_FLAG_ECCR2_ID << FLASH_FLAG_REG_POS) | FLASH_ECC2R_ECCD_Pos) /*!< FLASH ECC detection on bank 2 */ +#endif /* FLASH_DBANK_SUPPORT */ +#define FLASH_FLAG_ECCC FLASH_FLAG_ECCC1 /*!< FLASH ECC correction - legacy name for single bank */ +#define FLASH_FLAG_ECCD FLASH_FLAG_ECCD1 /*!< FLASH ECC detection - legacy name for single bank */ +/** + * @} + */ + +/** @defgroup FLASH_Interrupt_definition FLASH Interrupts Definition + * @brief FLASH Interrupt definition + * @{ + */ +#define FLASH_IT_EOP ((FLASH_FLAG_CR_ID << FLASH_FLAG_REG_POS) | FLASH_CR_EOPIE_Pos) /*!< End of FLASH Operation Interrupt source */ +#define FLASH_IT_OPERR ((FLASH_FLAG_CR_ID << FLASH_FLAG_REG_POS) | FLASH_CR_ERRIE_Pos) /*!< Error Interrupt source */ +#if defined(FLASH_PCROP_SUPPORT) +#define FLASH_IT_RDERR ((FLASH_FLAG_CR_ID << FLASH_FLAG_REG_POS) | FLASH_CR_RDERRIE_Pos) /*!< PCROP Read Error Interrupt source*/ +#endif /* FLASH_PCROP_SUPPORT */ +#define FLASH_IT_ECCC1 ((FLASH_FLAG_ECCR1_ID << FLASH_FLAG_REG_POS) | FLASH_ECCR_ECCCIE_Pos) /*!< ECC Correction on Bank 1 Interrupt source */ +#if defined(FLASH_DBANK_SUPPORT) +#define FLASH_IT_ECCC2 ((FLASH_FLAG_ECCR2_ID << FLASH_FLAG_REG_POS) | FLASH_ECC2R_ECCCIE_Pos) /*!< ECC Correction on Bank 2 Interrupt source */ +#endif /* FLASH_DBANK_SUPPORT */ +#define FLASH_IT_ECCC FLASH_IT_ECCC1 /*!< ECC Correction - legacy name for single bank */ +/** + * @} + */ + +/** @defgroup FLASH_Error FLASH Error + * @{ + */ +#define HAL_FLASH_ERROR_NONE 0x00000000U +#define HAL_FLASH_ERROR_OP FLASH_SR_OPERR +#define HAL_FLASH_ERROR_PROG FLASH_SR_PROGERR +#define HAL_FLASH_ERROR_WRP FLASH_SR_WRPERR +#define HAL_FLASH_ERROR_PGA FLASH_SR_PGAERR +#define HAL_FLASH_ERROR_SIZ FLASH_SR_SIZERR +#define HAL_FLASH_ERROR_PGS FLASH_SR_PGSERR +#define HAL_FLASH_ERROR_MIS FLASH_SR_MISERR +#define HAL_FLASH_ERROR_FAST FLASH_SR_FASTERR +#if defined(FLASH_PCROP_SUPPORT) +#define HAL_FLASH_ERROR_RD FLASH_SR_RDERR +#endif /* FLASH_PCROP_SUPPORT */ +#define HAL_FLASH_ERROR_OPTV FLASH_SR_OPTVERR +#define HAL_FLASH_ERROR_ECCD FLASH_ECCR_ECCD +/** + * @} + */ + +/** @defgroup FLASH_Type_Erase FLASH Erase Type + * @{ + */ +#define FLASH_TYPEERASE_PAGES FLASH_CR_PER /*!< Pages erase only */ +#define FLASH_TYPEERASE_MASS FLASH_CR_MER1 /*!< Flash mass erase activation */ +/** + * @} + */ + +/** @defgroup FLASH_Banks FLASH Banks + * @{ + */ +#define FLASH_BANK_1 FLASH_CR_MER1 /*!< Bank 1 */ +#if defined(FLASH_DBANK_SUPPORT) +#define FLASH_BANK_2 FLASH_CR_MER2 /*!< Bank 2 */ +#endif /* FLASH_DBANK_SUPPORT */ +/** + * @} + */ + + +/** @defgroup FLASH_Type_Program FLASH Program Type + * @{ + */ +#define FLASH_TYPEPROGRAM_DOUBLEWORD FLASH_CR_PG /*!< Program a double-word (64-bit) at a specified address */ +#define FLASH_TYPEPROGRAM_FAST FLASH_CR_FSTPG /*!< Fast program a 32 row double-word (64-bit) at a specified address */ +/** + * @} + */ + +/** @defgroup FLASH_OB_Type FLASH Option Bytes Type + * @{ + */ +#define OPTIONBYTE_WRP 0x00000001U /*!< WRP option byte configuration */ +#define OPTIONBYTE_RDP 0x00000002U /*!< RDP option byte configuration */ +#define OPTIONBYTE_USER 0x00000004U /*!< USER option byte configuration */ +#if defined(FLASH_PCROP_SUPPORT) +#define OPTIONBYTE_PCROP 0x00000008U /*!< PCROP option byte configuration */ +#endif /* FLASH_PCROP_SUPPORT */ +#if defined(FLASH_SECURABLE_MEMORY_SUPPORT) +#define OPTIONBYTE_SEC 0x00000010U /*!< SEC option byte configuration */ +#endif /* FLASH_SECURABLE_MEMORY_SUPPORT */ + +#if defined(FLASH_PCROP_SUPPORT) && defined(FLASH_SECURABLE_MEMORY_SUPPORT) +#define OPTIONBYTE_ALL (OPTIONBYTE_WRP | OPTIONBYTE_RDP | OPTIONBYTE_USER | \ + OPTIONBYTE_PCROP | OPTIONBYTE_SEC) /*!< All option byte configuration */ +#else +#define OPTIONBYTE_ALL (OPTIONBYTE_WRP | OPTIONBYTE_RDP | OPTIONBYTE_USER) /*!< All option byte configuration */ +#endif /* FLASH_PCROP_SUPPORT && FLASH_SECURABLE_MEMORY_SUPPORT */ +/** + * @} + */ + +/** @defgroup FLASH_OB_WRP_Area FLASH WRP Area + * @{ + */ +#define OB_WRPAREA_ZONE_A 0x00000001U /*!< Flash Zone A */ +#define OB_WRPAREA_ZONE_B 0x00000002U /*!< Flash Zone B */ +#if defined(FLASH_DBANK_SUPPORT) +#define OB_WRPAREA_ZONE2_A 0x00000004U /*!< Flash Bank 2 Zone A */ +#define OB_WRPAREA_ZONE2_B 0x00000008U /*!< Flash Bank 2 Zone B */ +#endif /* FLASH_DBANK_SUPPORT */ +/** + * @} + */ + +/** @defgroup FLASH_OB_Read_Protection FLASH Option Bytes Read Protection + * @{ + */ +#define OB_RDP_LEVEL_0 0x000000AAU +#define OB_RDP_LEVEL_1 0x000000BBU +#define OB_RDP_LEVEL_2 0x000000CCU /*!< Warning: When enabling read protection level 2 + it is no more possible to go back to level 1 or 0 */ +/** + * @} + */ + +/** @defgroup FLASH_OB_USER_Type FLASH Option Bytes User Type + * @{ + */ +#if defined(PWR_BOR_SUPPORT) +#define OB_USER_BOR_EN FLASH_OPTR_BOR_EN /*!< BOR reset enable */ +#define OB_USER_BOR_LEV (FLASH_OPTR_BORF_LEV | FLASH_OPTR_BORR_LEV) /*!< BOR reset Level */ +#endif /* PWR_BOR_SUPPORT */ +#define OB_USER_nRST_STOP FLASH_OPTR_nRST_STOP /*!< Reset generated when entering the stop mode */ +#define OB_USER_nRST_STDBY FLASH_OPTR_nRST_STDBY /*!< Reset generated when entering the standby mode */ +#if defined(PWR_SHDW_SUPPORT) +#define OB_USER_nRST_SHDW FLASH_OPTR_nRST_SHDW /*!< Reset generated when entering the shutdown mode */ +#endif /* PWR_SHDW_SUPPORT */ +#define OB_USER_IWDG_SW FLASH_OPTR_IWDG_SW /*!< Independent watchdog selection */ +#define OB_USER_IWDG_STOP FLASH_OPTR_IWDG_STOP /*!< Independent watchdog counter freeze in stop mode */ +#define OB_USER_IWDG_STDBY FLASH_OPTR_IWDG_STDBY /*!< Independent watchdog counter freeze in standby mode */ +#define OB_USER_WWDG_SW FLASH_OPTR_WWDG_SW /*!< Window watchdog selection */ +#if defined(FLASH_DBANK_SUPPORT) +#define OB_USER_BANK_SWAP FLASH_OPTR_nSWAP_BANK /*!< Swap bank memory addresses */ +#define OB_USER_DUAL_BANK FLASH_OPTR_DUAL_BANK /*!< Select single or dual bank (depending of device memory size) */ +#endif /* FLASH_DBANK_SUPPORT */ +#define OB_USER_RAM_PARITY_CHECK FLASH_OPTR_RAM_PARITY_CHECK /*!< Sram parity check control */ +#define OB_USER_nBOOT_SEL FLASH_OPTR_nBOOT_SEL /*!< Boot Selection */ +#define OB_USER_nBOOT1 FLASH_OPTR_nBOOT1 /*!< nBoot1 configuration */ +#define OB_USER_nBOOT0 FLASH_OPTR_nBOOT0 /*!< nBoot0 configuration */ +#if defined(GPIO_NRST_CONFIG_SUPPORT) +#define OB_USER_NRST_MODE FLASH_OPTR_NRST_MODE /*!< Reset pin configuration */ +#endif /* GPIO_NRST_CONFIG_SUPPORT */ +#if defined(FLASH_OPTR_IRHEN) +#define OB_USER_INPUT_RESET_HOLDER FLASH_OPTR_IRHEN /*!< Internal reset holder enable */ +#endif /* FLASH_OPTR_IRHEN */ + +#if defined(FLASH_DBANK_SUPPORT) +#if defined(PWR_BOR_SUPPORT) && defined(PWR_SHDW_SUPPORT) && defined(GPIO_NRST_CONFIG_SUPPORT) +#define OB_USER_ALL (OB_USER_BOR_EN | OB_USER_BOR_LEV | OB_USER_nRST_STOP | \ + OB_USER_nRST_STDBY | OB_USER_nRST_SHDW | OB_USER_IWDG_SW | \ + OB_USER_IWDG_STOP | OB_USER_IWDG_STDBY | OB_USER_WWDG_SW | \ + OB_USER_BANK_SWAP | OB_USER_DUAL_BANK | \ + OB_USER_RAM_PARITY_CHECK | OB_USER_nBOOT_SEL | OB_USER_nBOOT1 | \ + OB_USER_nBOOT0 | OB_USER_NRST_MODE | OB_USER_INPUT_RESET_HOLDER) /*!< all option bits */ +#else +#define OB_USER_ALL ( OB_USER_nRST_STOP | \ + OB_USER_nRST_STDBY | OB_USER_IWDG_SW | \ + OB_USER_IWDG_STOP | OB_USER_IWDG_STDBY | OB_USER_WWDG_SW | \ + OB_USER_BANK_SWAP | OB_USER_DUAL_BANK | \ + OB_USER_RAM_PARITY_CHECK | OB_USER_nBOOT_SEL | OB_USER_nBOOT1 | \ + OB_USER_nBOOT0) /*!< all option bits */ +#endif /* PWR_BOR_SUPPORT && PWR_SHDW_SUPPORT && GPIO_NRST_CONFIG_SUPPORT */ +#else +#if defined(PWR_BOR_SUPPORT) && defined(PWR_SHDW_SUPPORT) && defined(GPIO_NRST_CONFIG_SUPPORT) +#define OB_USER_ALL (OB_USER_BOR_EN | OB_USER_BOR_LEV | OB_USER_nRST_STOP | \ + OB_USER_nRST_STDBY | OB_USER_nRST_SHDW | OB_USER_IWDG_SW | \ + OB_USER_IWDG_STOP | OB_USER_IWDG_STDBY | OB_USER_WWDG_SW | \ + OB_USER_RAM_PARITY_CHECK | OB_USER_nBOOT_SEL | OB_USER_nBOOT1 | \ + OB_USER_nBOOT0 | OB_USER_NRST_MODE | OB_USER_INPUT_RESET_HOLDER) /*!< all option bits */ +#else +#define OB_USER_ALL ( OB_USER_nRST_STOP | \ + OB_USER_nRST_STDBY | OB_USER_IWDG_SW | \ + OB_USER_IWDG_STOP | OB_USER_IWDG_STDBY | OB_USER_WWDG_SW | \ + OB_USER_RAM_PARITY_CHECK | OB_USER_nBOOT_SEL | OB_USER_nBOOT1 | \ + OB_USER_nBOOT0) /*!< all option bits */ +#endif /* PWR_BOR_SUPPORT && PWR_SHDW_SUPPORT && GPIO_NRST_CONFIG_SUPPORT */ +#endif /* FLASH_DBANK_SUPPORT */ +/** + * @} + */ + +#if defined(PWR_BOR_SUPPORT) +/** @defgroup FLASH_OB_USER_BOR_ENABLE FLASH Option Bytes User BOR enable + * @{ + */ +#define OB_BOR_DISABLE 0x00000000U /*!< BOR Reset set to default */ +#define OB_BOR_ENABLE FLASH_OPTR_BOR_EN /*!< Use option byte to define BOR thresholds */ +/** + * @} + */ + +/** @defgroup FLASH_OB_USER_BOR_LEVEL FLASH Option Bytes User BOR Level + * @{ + */ +#define OB_BOR_LEVEL_FALLING_0 0x00000000U /*!< BOR falling level 1 with threshold around 2.0V */ +#define OB_BOR_LEVEL_FALLING_1 FLASH_OPTR_BORF_LEV_0 /*!< BOR falling level 2 with threshold around 2.2V */ +#define OB_BOR_LEVEL_FALLING_2 FLASH_OPTR_BORF_LEV_1 /*!< BOR falling level 3 with threshold around 2.5V */ +#define OB_BOR_LEVEL_FALLING_3 (FLASH_OPTR_BORF_LEV_0 | FLASH_OPTR_BORF_LEV_1) /*!< BOR falling level 4 with threshold around 2.8V */ +#define OB_BOR_LEVEL_RISING_0 0x00000000U /*!< BOR rising level 1 with threshold around 2.1V */ +#define OB_BOR_LEVEL_RISING_1 FLASH_OPTR_BORR_LEV_0 /*!< BOR rising level 2 with threshold around 2.3V */ +#define OB_BOR_LEVEL_RISING_2 FLASH_OPTR_BORR_LEV_1 /*!< BOR rising level 3 with threshold around 2.6V */ +#define OB_BOR_LEVEL_RISING_3 (FLASH_OPTR_BORR_LEV_0 | FLASH_OPTR_BORR_LEV_1) /*!< BOR rising level 4 with threshold around 2.9V */ +/** + * @} + */ +#endif /* PWR_BOR_SUPPORT */ + +/** @defgroup FLASH_OB_USER_nRST_STOP FLASH Option Bytes User Reset On Stop + * @{ + */ +#define OB_STOP_RST 0x00000000U /*!< Reset generated when entering the stop mode */ +#define OB_STOP_NORST FLASH_OPTR_nRST_STOP /*!< No reset generated when entering the stop mode */ +/** + * @} + */ + +/** @defgroup FLASH_OB_USER_nRST_STANDBY FLASH Option Bytes User Reset On Standby + * @{ + */ +#define OB_STANDBY_RST 0x00000000U /*!< Reset generated when entering the standby mode */ +#define OB_STANDBY_NORST FLASH_OPTR_nRST_STDBY /*!< No reset generated when entering the standby mode */ +/** + * @} + */ + +#if defined(PWR_SHDW_SUPPORT) +/** @defgroup FLASH_OB_USER_nRST_SHUTDOWN FLASH Option Bytes User Reset On Shutdown + * @{ + */ +#define OB_SHUTDOWN_RST 0x00000000U /*!< Reset generated when entering the shutdown mode */ +#define OB_SHUTDOWN_NORST FLASH_OPTR_nRST_SHDW /*!< No reset generated when entering the shutdown mode */ +/** + * @} + */ +#endif /* PWR_SHDW_SUPPORT */ + +/** @defgroup FLASH_OB_USER_IWDG_SW FLASH Option Bytes User IWDG Type + * @{ + */ +#define OB_IWDG_HW 0x00000000U /*!< Hardware independent watchdog */ +#define OB_IWDG_SW FLASH_OPTR_IWDG_SW /*!< Software independent watchdog */ +/** + * @} + */ + +/** @defgroup FLASH_OB_USER_IWDG_STOP FLASH Option Bytes User IWDG Mode On Stop + * @{ + */ +#define OB_IWDG_STOP_FREEZE 0x00000000U /*!< Independent watchdog counter is frozen in Stop mode */ +#define OB_IWDG_STOP_RUN FLASH_OPTR_IWDG_STOP /*!< Independent watchdog counter is running in Stop mode */ +/** + * @} + */ + +/** @defgroup FLASH_OB_USER_IWDG_STANDBY FLASH Option Bytes User IWDG Mode On Standby + * @{ + */ +#define OB_IWDG_STDBY_FREEZE 0x00000000U /*!< Independent watchdog counter is frozen in Standby mode */ +#define OB_IWDG_STDBY_RUN FLASH_OPTR_IWDG_STDBY /*!< Independent watchdog counter is running in Standby mode */ +/** + * @} + */ + +/** @defgroup FLASH_OB_USER_WWDG_SW FLASH Option Bytes User WWDG Type + * @{ + */ +#define OB_WWDG_HW 0x00000000U /*!< Hardware window watchdog */ +#define OB_WWDG_SW FLASH_OPTR_WWDG_SW /*!< Software window watchdog */ +/** + * @} + */ + +#if defined(FLASH_DBANK_SUPPORT) +/** @defgroup FLASH_OB_USER_BANK_SWAP FLASH Option Bytes User bank swap Type + * @{ + */ +#define OB_USER_DUALBANK_SWAP_ENABLE 0x00000000U /*!< Enable bank swap */ +#define OB_USER_DUALBANK_SWAP_DISABLE FLASH_OPTR_nSWAP_BANK /*!< Disable bank swap */ +/** + * @} + */ + +/** @defgroup FLASH_OB_USER_DUAL_BANK FLASH Option Bytes User dual bank enable Type + * @{ + */ +#define OB_USER_DUALBANK_DISABLE 0x00000000U /*!< Disable dual bank */ +#define OB_USER_DUALBANK_ENABLE FLASH_OPTR_DUAL_BANK /*!< Enable dual bank */ +/** + * @} + */ +#endif /* FLASH_DBANK_SUPPORT */ + +/** @defgroup FLASH_OB_USER_SRAM_PARITY FLASH Option Bytes User SRAM parity + * @{ + */ +#define OB_SRAM_PARITY_ENABLE 0x00000000U /*!< Sram parity enable */ +#define OB_SRAM_PARITY_DISABLE FLASH_OPTR_RAM_PARITY_CHECK /*!< Sram parity disable */ +/** + * @} + */ + +/** @defgroup FLASH_OB_USER_nBOOT_SEL FLASH Option Bytes User Boot0 Selection + * @{ + */ +#define OB_BOOT0_FROM_PIN 0x00000000U /*!< BOOT0 signal is defined by PA14/BOOT0 pin value */ +#define OB_BOOT0_FROM_OB FLASH_OPTR_nBOOT_SEL /*!< BOOT0 signal is defined by nBOOT0 option bit */ +/** + * @} + */ + +/** @defgroup FLASH_OB_USER_nBOOT1 FLASH Option Bytes User BOOT1 Type + * @{ + */ +#define OB_BOOT1_SRAM 0x00000000U /*!< Embedded SRAM is selected as boot space (if nBOOT0=0 or BOOT0_pin=1) */ +#define OB_BOOT1_SYSTEM FLASH_OPTR_nBOOT1 /*!< System memory is selected as boot space (if nBOOT0=0 or BOOT0_pin=1) */ +/** + * @} + */ + +/** @defgroup FLASH_OB_USER_nBOOT0 FLASH Option Bytes User nBOOT0 option bit + * @{ + */ +#define OB_nBOOT0_RESET 0x00000000U /*!< nBOOT0 = 0 */ +#define OB_nBOOT0_SET FLASH_OPTR_nBOOT0 /*!< nBOOT0 = 1 */ +/** + * @} + */ + +#if defined(GPIO_NRST_CONFIG_SUPPORT) +/** @defgroup FLASH_OB_USER_RESET_CONFIG FLASH Option Bytes User reset config bit + * @{ + */ +#define OB_RESET_MODE_INPUT_ONLY FLASH_OPTR_NRST_MODE_0 /*!< Reset pin is in Reset input mode only */ +#define OB_RESET_MODE_GPIO FLASH_OPTR_NRST_MODE_1 /*!< Reset pin is in GPIO mode mode only */ +#define OB_RESET_MODE_INPUT_OUTPUT FLASH_OPTR_NRST_MODE /*!< Reset pin is in reset input and output mode */ +/** + * @} + */ +#endif /* GPIO_NRST_CONFIG_SUPPORT */ + +#if defined(FLASH_OPTR_IRHEN) +/** @defgroup FLASH_OB_USER_INPUT_RESET_HOLDER FLASH Option Bytes User input reset holder bit + * @{ + */ +#define OB_IRH_ENABLE 0x00000000U /*!< Internal Reset handler enable */ +#define OB_IRH_DISABLE FLASH_OPTR_IRHEN /*!< Internal Reset handler disable */ +/** + * @} + */ +#endif /* FLASH_OPTR_IRHEN */ + +#if defined(FLASH_PCROP_SUPPORT) +/** @defgroup FLASH_OB_PCROP_ZONE FLASH Option Bytes PCROP ZONE + * @{ + */ +#define OB_PCROP_ZONE_A 0x00000001U /*!< PCROP Zone A */ +#define OB_PCROP_ZONE_B 0x00000002U /*!< PCROP Zone B */ +#if defined(FLASH_DBANK_SUPPORT) +#define OB_PCROP_ZONE2_A 0x00000004U /*!< PCROP Bank 2 Zone A */ +#define OB_PCROP_ZONE2_B 0x00000008U /*!< PCROP Bank 2 Zone B */ +#endif /* FLASH_DBANK_SUPPORT */ +/** + * @} + */ + +/** @defgroup FLASH_OB_PCROP_RDP FLASH Option Bytes PCROP On RDP Level Type + * @{ + */ +#define OB_PCROP_RDP_NOT_ERASE 0x00000000U /*!< PCROP area is not erased when the RDP level + is decreased from Level 1 to Level 0 */ +#define OB_PCROP_RDP_ERASE FLASH_PCROP1AER_PCROP_RDP /*!< PCROP area is erased when the RDP level is + decreased from Level 1 to Level 0 (full mass erase). + Once this bit is set only, it will be reset by mass erase */ +/** + * @} + */ +#endif /* FLASH_PCROP_SUPPORT */ + +#if defined(FLASH_SECURABLE_MEMORY_SUPPORT) +/** @defgroup FLASH_OB_SEC_BOOT_LOCK FLASH Option Bytes Secure boot lock + * @{ + */ +#define OB_BOOT_ENTRY_FORCED_NONE 0x00000000U /*!< Boot entry is free */ +#define OB_BOOT_ENTRY_FORCED_FLASH FLASH_SECR_BOOT_LOCK /*!< Boot entry is forced to Flash or System Flash */ +/** + * @} + */ +#endif /* FLASH_SECURABLE_MEMORY_SUPPORT */ + +/** + * @} + */ + +/* Exported macros -----------------------------------------------------------*/ +/** @defgroup FLASH_Exported_Macros FLASH Exported Macros + * @brief macros to control FLASH features + * @{ + */ + +/** + * @brief Set the FLASH Latency. + * @param __LATENCY__ FLASH Latency + * This parameter can be one of the following values : + * @arg @ref FLASH_LATENCY_0 FLASH Zero wait state + * @arg @ref FLASH_LATENCY_1 FLASH One wait state + * @arg @ref FLASH_LATENCY_2 FLASH Two wait states + * @retval None + */ +#define __HAL_FLASH_SET_LATENCY(__LATENCY__) MODIFY_REG(FLASH->ACR, FLASH_ACR_LATENCY, (__LATENCY__)) + +/** + * @brief Get the FLASH Latency. + * @retval FLASH Latency + * Returned value can be one of the following values : + * @arg @ref FLASH_LATENCY_0 FLASH Zero wait state + * @arg @ref FLASH_LATENCY_1 FLASH One wait state + * @arg @ref FLASH_LATENCY_2 FLASH Two wait states + */ +#define __HAL_FLASH_GET_LATENCY() READ_BIT(FLASH->ACR, FLASH_ACR_LATENCY) + +/** + * @brief Enable the FLASH prefetch buffer. + * @retval None + */ +#define __HAL_FLASH_PREFETCH_BUFFER_ENABLE() SET_BIT(FLASH->ACR, FLASH_ACR_PRFTEN) + +/** + * @brief Disable the FLASH prefetch buffer. + * @retval None + */ +#define __HAL_FLASH_PREFETCH_BUFFER_DISABLE() CLEAR_BIT(FLASH->ACR, FLASH_ACR_PRFTEN) + +/** + * @brief Enable the FLASH instruction cache. + * @retval none + */ +#define __HAL_FLASH_INSTRUCTION_CACHE_ENABLE() SET_BIT(FLASH->ACR, FLASH_ACR_ICEN) + +/** + * @brief Disable the FLASH instruction cache. + * @retval none + */ +#define __HAL_FLASH_INSTRUCTION_CACHE_DISABLE() CLEAR_BIT(FLASH->ACR, FLASH_ACR_ICEN) + +/** + * @brief Reset the FLASH instruction Cache. + * @note This function must be used only when the Instruction Cache is disabled. + * @retval None + */ +#define __HAL_FLASH_INSTRUCTION_CACHE_RESET() do { SET_BIT(FLASH->ACR, FLASH_ACR_ICRST); \ + CLEAR_BIT(FLASH->ACR, FLASH_ACR_ICRST); \ + } while (0U) +/** + * @} + */ + +/** @defgroup FLASH_Interrupt FLASH Interrupts Macros + * @brief macros to handle FLASH interrupts + * @{ + */ + +/** + * @brief Enable the specified FLASH interrupt. + * @param __INTERRUPT__ FLASH interrupt + * This parameter can be one of the following values : + * @arg @ref FLASH_IT_EOP End of FLASH Operation Interrupt + * @arg @ref FLASH_IT_OPERR Error Interrupt + * @arg @ref FLASH_IT_RDERR PCROP Read Error Interrupt(*) + * @arg @ref FLASH_IT_ECCC1 ECC Correction Interrupt on bank 1 + * @arg @ref FLASH_IT_ECCC2 ECC Correction Interrupt on bank 2(*) + * @arg @ref FLASH_IT_ECCC ECC Correction Interrupt - legacy name for single bank + * @note (*) availability depends on devices + * @retval none + */ +#if defined(FLASH_DBANK_SUPPORT) +#define __HAL_FLASH_ENABLE_IT(__INTERRUPT__) do { if(((__INTERRUPT__) & (FLASH_FLAG_CR_ID << FLASH_FLAG_REG_POS)) != 0U) { SET_BIT(FLASH->CR, (1uL << ((__INTERRUPT__) & 0x1Fu))); } \ + else if(((__INTERRUPT__) & (FLASH_FLAG_ECCR1_ID << FLASH_FLAG_REG_POS)) != 0U) { SET_BIT(FLASH->ECCR, (1uL << ((__INTERRUPT__) & 0x1Fu))); } \ + else if(((__INTERRUPT__) & (FLASH_FLAG_ECCR2_ID << FLASH_FLAG_REG_POS)) != 0U) { SET_BIT(FLASH->ECC2R, (1uL << ((__INTERRUPT__) & 0x1Fu))); } \ + } while(0U) +#else +#define __HAL_FLASH_ENABLE_IT(__INTERRUPT__) do { if(((__INTERRUPT__) & (FLASH_FLAG_CR_ID << FLASH_FLAG_REG_POS)) != 0U) { SET_BIT(FLASH->CR, (1uL << ((__INTERRUPT__) & 0x1Fu))); } \ + else if(((__INTERRUPT__) & (FLASH_FLAG_ECCR1_ID << FLASH_FLAG_REG_POS)) != 0U) { SET_BIT(FLASH->ECCR, (1uL << ((__INTERRUPT__) & 0x1Fu))); } \ + } while(0U) +#endif /* FLASH_DBANK_SUPPORT */ + +/** + * @brief Disable the specified FLASH interrupt. + * @param __INTERRUPT__ FLASH interrupt + * This parameter can be one of the following values : + * @arg @ref FLASH_IT_EOP End of FLASH Operation Interrupt + * @arg @ref FLASH_IT_OPERR Error Interrupt + * @arg @ref FLASH_IT_RDERR PCROP Read Error Interrupt(*) + * @arg @ref FLASH_IT_ECCC1 ECC Correction Interrupt on bank 1 + * @arg @ref FLASH_IT_ECCC2 ECC Correction Interrupt on bank 2(*) + * @arg @ref FLASH_IT_ECCC ECC Correction Interrupt - legacy name for single bank + * @note (*) availability depends on devices + * @retval none + */ +#if defined(FLASH_DBANK_SUPPORT) +#define __HAL_FLASH_DISABLE_IT(__INTERRUPT__) do { if(((__INTERRUPT__) & (FLASH_FLAG_CR_ID << FLASH_FLAG_REG_POS)) != 0U) { CLEAR_BIT(FLASH->CR, (1uL << ((__INTERRUPT__) & 0x1Fu))); } \ + else if(((__INTERRUPT__) & (FLASH_FLAG_ECCR1_ID << FLASH_FLAG_REG_POS)) != 0U) { CLEAR_BIT(FLASH->ECCR, (1uL << ((__INTERRUPT__) & 0x1Fu))); } \ + else if(((__INTERRUPT__) & (FLASH_FLAG_ECCR2_ID << FLASH_FLAG_REG_POS)) != 0U) { CLEAR_BIT(FLASH->ECC2R, (1uL << ((__INTERRUPT__) & 0x1Fu))); } \ + } while(0U) +#else +#define __HAL_FLASH_DISABLE_IT(__INTERRUPT__) do { if(((__INTERRUPT__) & (FLASH_FLAG_CR_ID << FLASH_FLAG_REG_POS)) != 0U) { CLEAR_BIT(FLASH->CR, (1uL << ((__INTERRUPT__) & 0x1Fu))); } \ + else if(((__INTERRUPT__) & (FLASH_FLAG_ECCR1_ID << FLASH_FLAG_REG_POS)) != 0U) { CLEAR_BIT(FLASH->ECCR, (1uL << ((__INTERRUPT__) & 0x1Fu))); } \ + } while(0U) +#endif /* FLASH_DBANK_SUPPORT */ + +/** + * @brief Check whether the specified FLASH flag is set or not. + * @param __FLAG__ specifies the FLASH flag to check. + * This parameter can be one of the following values : + * @arg @ref FLASH_FLAG_EOP FLASH End of Operation flag + * @arg @ref FLASH_FLAG_OPERR FLASH Operation error flag + * @arg @ref FLASH_FLAG_PROGERR FLASH Programming error flag + * @arg @ref FLASH_FLAG_WRPERR FLASH Write protection error flag + * @arg @ref FLASH_FLAG_PGAERR FLASH Programming alignment error flag + * @arg @ref FLASH_FLAG_SIZERR FLASH Size error flag + * @arg @ref FLASH_FLAG_PGSERR FLASH Programming sequence error flag + * @arg @ref FLASH_FLAG_MISERR FLASH Fast programming data miss error flag + * @arg @ref FLASH_FLAG_FASTERR FLASH Fast programming error flag + * @arg @ref FLASH_FLAG_RDERR FLASH PCROP read error flag(*) + * @arg @ref FLASH_FLAG_OPTVERR FLASH Option validity error flag + * @arg @ref FLASH_FLAG_BSY1 FLASH bank 1 write/erase operations in progress flag + * @arg @ref FLASH_FLAG_BSY2 FLASH bank 2 write/erase operations in progress flag(*) + * @arg @ref FLASH_FLAG_BSY FLASH write/erase operations in progress flag - legacy name for single bank + * @arg @ref FLASH_FLAG_CFGBSY FLASH configuration is busy : program or erase setting are used. + * @arg @ref FLASH_FLAG_ECCC1 FLASH one ECC error has been detected and corrected + * @arg @ref FLASH_FLAG_ECCD1 FLASH two ECC errors have been detected on bank 1 + * @arg @ref FLASH_FLAG_ECCC2 FLASH one ECC error has been detected and corrected on bank 2(*) + * @arg @ref FLASH_FLAG_ECCD2 FLASH two ECC errors have been detected on bank 2(*) + * @arg @ref FLASH_FLAG_ECCC FLASH one ECC error has been detected and corrected - legacy name for single bank + * @arg @ref FLASH_FLAG_ECCD FLASH two ECC errors have been detected - legacy name for single bank + * @note (*) availability depends on devices + * @retval The state of FLASH_FLAG (SET or RESET). + */ +#if defined(FLASH_DBANK_SUPPORT) +#define __HAL_FLASH_GET_FLAG(__FLAG__) ((((__FLAG__) & (FLASH_FLAG_SR_ID << FLASH_FLAG_REG_POS)) != 0U) ? \ + (READ_BIT(FLASH->SR, (1uL << ((__FLAG__) & 0x1Fu))) != 0x00u) : \ + ((((__FLAG__) & (FLASH_FLAG_ECCR1_ID << FLASH_FLAG_REG_POS)) != 0U) ? \ + (READ_BIT(FLASH->ECCR, (1uL << ((__FLAG__) & 0x1Fu))) != 0x00u) : \ + (READ_BIT(FLASH->ECC2R, (1uL << ((__FLAG__) & 0x1Fu))) != 0x00u))) +#else +#define __HAL_FLASH_GET_FLAG(__FLAG__) ((((__FLAG__) & (FLASH_FLAG_SR_ID << FLASH_FLAG_REG_POS)) != 0U) ? \ + (READ_BIT(FLASH->SR, (1uL << ((__FLAG__) & 0x1Fu))) != 0x00u) : \ + (READ_BIT(FLASH->ECCR, (1uL << ((__FLAG__) & 0x1Fu))) != 0x00u)) +#endif /* FLASH_DBANK_SUPPORT */ + +/** + * @brief Clear the FLASH pending flags. + * @param __FLAG__ specifies the FLASH flags to clear. + * This parameter can be one of the following values : + * @arg @ref FLASH_FLAG_EOP FLASH End of Operation flag + * @arg @ref FLASH_FLAG_OPERR FLASH Operation error flag + * @arg @ref FLASH_FLAG_PROGERR FLASH Programming error flag + * @arg @ref FLASH_FLAG_WRPERR FLASH Write protection error flag + * @arg @ref FLASH_FLAG_PGAERR FLASH Programming alignment error flag + * @arg @ref FLASH_FLAG_SIZERR FLASH Size error flag + * @arg @ref FLASH_FLAG_PGSERR FLASH Programming sequence error flag + * @arg @ref FLASH_FLAG_MISERR FLASH Fast programming data miss error flag + * @arg @ref FLASH_FLAG_FASTERR FLASH Fast programming error flag + * @arg @ref FLASH_FLAG_RDERR FLASH PCROP read error flag + * @arg @ref FLASH_FLAG_OPTVERR FLASH Option validity error flag + * @arg @ref FLASH_FLAG_ECCC1 FLASH one ECC error has been detected and corrected + * @arg @ref FLASH_FLAG_ECCD1 FLASH two ECC errors have been detected on bank 1 + * @arg @ref FLASH_FLAG_ECCC2 FLASH one ECC error has been detected and corrected on bank 2(*) + * @arg @ref FLASH_FLAG_ECCD2 FLASH two ECC errors have been detected on bank 2(*) + * @arg @ref FLASH_FLAG_ECCC FLASH one ECC error has been detected and corrected - legacy name for single bank + * @arg @ref FLASH_FLAG_ECCD FLASH two ECC errors have been detected - legacy name for single bank + * @note (*) availability depends on devices + * @retval None + */ +#if defined(FLASH_DBANK_SUPPORT) +#define __HAL_FLASH_CLEAR_FLAG(__FLAG__) do { if(((__FLAG__) & (FLASH_FLAG_SR_ID << FLASH_FLAG_REG_POS)) != 0U) { FLASH->SR = (1uL << ((__FLAG__) & 0x1Fu)); } \ + else if(((__FLAG__) & (FLASH_FLAG_ECCR1_ID << FLASH_FLAG_REG_POS)) != 0U) { FLASH->ECCR = (1uL << ((__FLAG__) & 0x1Fu)); } \ + else if(((__FLAG__) & (FLASH_FLAG_ECCR2_ID << FLASH_FLAG_REG_POS)) != 0U) { FLASH->ECC2R = (1uL << ((__FLAG__) & 0x1Fu)); } \ + } while(0U) +#else +#define __HAL_FLASH_CLEAR_FLAG(__FLAG__) do { if(((__FLAG__) & (FLASH_FLAG_SR_ID << FLASH_FLAG_REG_POS)) != 0U) { FLASH->SR = (1uL << ((__FLAG__) & 0x1Fu)); } \ + else if(((__FLAG__) & (FLASH_FLAG_ECCR1_ID << FLASH_FLAG_REG_POS)) != 0U) { FLASH->ECCR = (1uL << ((__FLAG__) & 0x1Fu)); } \ + } while(0U) +#endif /* FLASH_DBANK_SUPPORT */ +/** + * @} + */ + +/* Include FLASH HAL Extended module */ +#include "stm32g0xx_hal_flash_ex.h" +/* Exported variables --------------------------------------------------------*/ +/** @defgroup FLASH_Exported_Variables FLASH Exported Variables + * @{ + */ +extern FLASH_ProcessTypeDef pFlash; +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup FLASH_Exported_Functions + * @{ + */ + +/* Program operation functions ***********************************************/ +/** @addtogroup FLASH_Exported_Functions_Group1 + * @{ + */ +HAL_StatusTypeDef HAL_FLASH_Program(uint32_t TypeProgram, uint32_t Address, uint64_t Data); +HAL_StatusTypeDef HAL_FLASH_Program_IT(uint32_t TypeProgram, uint32_t Address, uint64_t Data); +/* FLASH IRQ handler method */ +void HAL_FLASH_IRQHandler(void); +/* Callbacks in non blocking modes */ +void HAL_FLASH_EndOfOperationCallback(uint32_t ReturnValue); +void HAL_FLASH_OperationErrorCallback(uint32_t ReturnValue); +/** + * @} + */ + +/* Peripheral Control functions **********************************************/ +/** @addtogroup FLASH_Exported_Functions_Group2 + * @{ + */ +HAL_StatusTypeDef HAL_FLASH_Unlock(void); +HAL_StatusTypeDef HAL_FLASH_Lock(void); +/* Option bytes control */ +HAL_StatusTypeDef HAL_FLASH_OB_Unlock(void); +HAL_StatusTypeDef HAL_FLASH_OB_Lock(void); +HAL_StatusTypeDef HAL_FLASH_OB_Launch(void); +/** + * @} + */ + +/* Peripheral State functions ************************************************/ +/** @addtogroup FLASH_Exported_Functions_Group3 + * @{ + */ +uint32_t HAL_FLASH_GetError(void); +/** + * @} + */ + +/** + * @} + */ + +/* Private types --------------------------------------------------------*/ +/** @defgroup FLASH_Private_types FLASH Private Types + * @{ + */ +HAL_StatusTypeDef FLASH_WaitForLastOperation(uint32_t Timeout); +/** + * @} + */ + +/* Private constants --------------------------------------------------------*/ +/** @defgroup FLASH_Private_Constants FLASH Private Constants + * @{ + */ +#define FLASH_SIZE_DATA_REGISTER FLASHSIZE_BASE + +#if defined(FLASH_DBANK_SUPPORT) +#define OB_DUAL_BANK_BASE (FLASH_R_BASE + 0x20U) /*!< Not use cmsis FLASH alias to avoid iar warning about volatile reading sequence */ +#define FLASH_SALES_TYPE_Pos (24U) +#define FLASH_SALES_TYPE (0x3UL << FLASH_SALES_TYPE_Pos) /*!< 0x000001E0 */ +#define FLASH_SALES_TYPE_0 (0x1UL << FLASH_SALES_TYPE_Pos) /*!< 0x01000000 */ +#define FLASH_SALES_TYPE_1 (0x2UL << FLASH_SALES_TYPE_Pos) /*!< 0x02000000 */ +#define FLASH_SALES_VALUE ((*((uint32_t *)PACKAGE_BASE)) & (FLASH_SALES_TYPE)) +#define OB_DUAL_BANK_VALUE ((*((uint32_t *)OB_DUAL_BANK_BASE)) & (FLASH_OPTR_DUAL_BANK)) +#define FLASH_BANK_NB (((FLASH_SALES_VALUE == 0U)\ + || ((FLASH_SALES_VALUE == FLASH_SALES_TYPE_0) && (OB_DUAL_BANK_VALUE == 0U)))?1U:2U) +#define FLASH_BANK_SIZE ((FLASH_BANK_NB==1U)?(FLASH_SIZE):(FLASH_SIZE >> 1U)) /*!< FLASH Bank Size. Divided by 2 if 2 Banks */ +#else /* FLASH_DBANK_SUPPORT */ +#define FLASH_BANK_SIZE (FLASH_SIZE) /*!< FLASH Bank Size */ +#endif /* FLASH_DBANK_SUPPORT */ + +#define FLASH_PAGE_SIZE 0x00000800U /*!< FLASH Page Size, 2 KBytes */ +#define FLASH_PAGE_NB (FLASH_BANK_SIZE/FLASH_PAGE_SIZE) /* Number of pages per bank */ +#define FLASH_TIMEOUT_VALUE 1000U /*!< FLASH Execution Timeout, 1 s */ +#define FLASH_TYPENONE 0x00000000U /*!< No programming Procedure On Going */ + +#if defined(FLASH_PCROP_SUPPORT) +#define FLASH_SR_ERRORS (FLASH_SR_OPERR | FLASH_SR_PROGERR | FLASH_SR_WRPERR | \ + FLASH_SR_PGAERR | FLASH_SR_SIZERR | FLASH_SR_PGSERR | \ + FLASH_SR_MISERR | FLASH_SR_FASTERR | FLASH_SR_RDERR | \ + FLASH_SR_OPTVERR) /*!< All SR error flags */ +#else +#define FLASH_SR_ERRORS (FLASH_SR_OPERR | FLASH_SR_PROGERR | FLASH_SR_WRPERR | \ + FLASH_SR_PGAERR | FLASH_SR_SIZERR | FLASH_SR_PGSERR | \ + FLASH_SR_MISERR | FLASH_SR_FASTERR | \ + FLASH_SR_OPTVERR) /*!< All SR error flags */ +#endif /* FLASH_PCROP_SUPPORT */ + +#if defined(FLASH_DBANK_SUPPORT) +#define FLASH_SR_CLEAR (FLASH_SR_ERRORS | FLASH_SR_EOP | FLASH_SR_PESD) +#else +#define FLASH_SR_CLEAR (FLASH_SR_ERRORS | FLASH_SR_EOP) +#endif /* FLASH_DBANK_SUPPORT */ + +/* Internal defines for HAL macro usage */ +#define FLASH_FLAG_REG_POS 16u +#define FLASH_FLAG_SR_ID 1u +#define FLASH_FLAG_CR_ID 2u +#define FLASH_FLAG_ECCR1_ID 4u +#define FLASH_FLAG_ECCR2_ID 8u + +/** + * @} + */ + +/* Private macros ------------------------------------------------------------*/ +/** @defgroup FLASH_Private_Macros FLASH Private Macros + * @{ + */ +#define IS_FLASH_MAIN_MEM_ADDRESS(__ADDRESS__) (((__ADDRESS__) >= (FLASH_BASE))\ + && ((__ADDRESS__) <= (FLASH_BASE + FLASH_SIZE - 1UL))) + +#define IS_FLASH_MAIN_FIRSTHALF_MEM_ADDRESS(__ADDRESS__) (((__ADDRESS__) >= (FLASH_BASE))\ + && ((__ADDRESS__) <= (FLASH_BASE + FLASH_BANK_SIZE - 1UL))) +#if defined(FLASH_DBANK_SUPPORT) +#define IS_FLASH_MAIN_SECONDHALF_MEM_ADDRESS(__ADDRESS__) (((__ADDRESS__) >= (FLASH_BASE + FLASH_BANK_SIZE))\ + && ((__ADDRESS__) <= (FLASH_BASE + FLASH_SIZE - 1UL))) +#endif /* FLASH_DBANK_SUPPORT */ + +#define IS_FLASH_PROGRAM_MAIN_MEM_ADDRESS(__ADDRESS__) (((__ADDRESS__) >= (FLASH_BASE))\ + && ((__ADDRESS__) <= (FLASH_BASE + FLASH_SIZE - 8UL))) + +#define IS_FLASH_PROGRAM_OTP_ADDRESS(__ADDRESS__) (((__ADDRESS__) >= 0x1FFF7000U)\ + && ((__ADDRESS__) <= (0x1FFF7400U - 8UL))) + +#define IS_FLASH_PROGRAM_ADDRESS(__ADDRESS__) ((IS_FLASH_PROGRAM_MAIN_MEM_ADDRESS(__ADDRESS__))\ + || (IS_FLASH_PROGRAM_OTP_ADDRESS(__ADDRESS__))) + +#define IS_FLASH_FAST_PROGRAM_ADDRESS(__ADDRESS__) (((__ADDRESS__) >= (FLASH_BASE))\ + && ((__ADDRESS__) <= (FLASH_BASE + FLASH_SIZE - 256UL))) + +#define IS_FLASH_PAGE(__PAGE__) ((__PAGE__) < FLASH_PAGE_NB) + +#if defined(FLASH_DBANK_SUPPORT) +#define IS_FLASH_BANK(__BANK__) \ + ((FLASH_BANK_NB == 2U) ? \ + (((__BANK__) == FLASH_BANK_1) || \ + ((__BANK__) == FLASH_BANK_2) || \ + ((__BANK__) == (FLASH_BANK_2 | FLASH_BANK_1))): \ + ((__BANK__) == FLASH_BANK_1)) +#else +#define IS_FLASH_BANK(__BANK__) ((__BANK__) == FLASH_BANK_1) +#endif /* FLASH_DBANK_SUPPORT */ + +#define IS_FLASH_TYPEERASE(__VALUE__) (((__VALUE__) == FLASH_TYPEERASE_PAGES) || \ + ((__VALUE__) == FLASH_TYPEERASE_MASS)) + +#define IS_FLASH_TYPEPROGRAM(__VALUE__) (((__VALUE__) == FLASH_TYPEPROGRAM_DOUBLEWORD) || \ + ((__VALUE__) == FLASH_TYPEPROGRAM_FAST)) + +#define IS_OPTIONBYTE(__VALUE__) ((((__VALUE__) & OPTIONBYTE_ALL) != 0x00U) && \ + (((__VALUE__) & ~OPTIONBYTE_ALL) == 0x00U)) + +#if defined(FLASH_DBANK_SUPPORT) +#define IS_OB_WRPAREA(__VALUE__) \ + ((FLASH_BANK_NB == 2U) ? \ + (((__VALUE__) == OB_WRPAREA_ZONE_A) || ((__VALUE__) == OB_WRPAREA_ZONE_B) || \ + ((__VALUE__) == OB_WRPAREA_ZONE2_A) || ((__VALUE__) == OB_WRPAREA_ZONE2_B)) : \ + (((__VALUE__) == OB_WRPAREA_ZONE_A) || ((__VALUE__) == OB_WRPAREA_ZONE_B))) +#else +#define IS_OB_WRPAREA(__VALUE__) (((__VALUE__) == OB_WRPAREA_ZONE_A)\ + || ((__VALUE__) == OB_WRPAREA_ZONE_B)) +#endif /* FLASH_DBANK_SUPPORT */ + +#define IS_OB_RDP_LEVEL(__LEVEL__) (((__LEVEL__) == OB_RDP_LEVEL_0) ||\ + ((__LEVEL__) == OB_RDP_LEVEL_1) ||\ + ((__LEVEL__) == OB_RDP_LEVEL_2)) + +#define IS_OB_USER_TYPE(__TYPE__) ((((__TYPE__) & OB_USER_ALL) != 0x00U) && \ + (((__TYPE__) & ~OB_USER_ALL) == 0x00U)) + +#define IS_OB_USER_CONFIG(__TYPE__,__CONFIG__) ((~(__TYPE__) & (__CONFIG__)) == 0x00U) + +#if defined(FLASH_PCROP_SUPPORT) +#if defined(FLASH_DBANK_SUPPORT) +#define IS_OB_PCROP_CONFIG(__CONFIG__) \ + ((FLASH_BANK_NB == 2U) ? \ + (((__CONFIG__) & ~(OB_PCROP_ZONE_A | OB_PCROP_ZONE_B | \ + OB_PCROP_ZONE2_A | OB_PCROP_ZONE2_B | OB_PCROP_RDP_ERASE)) == 0x00U): \ + (((__CONFIG__) & ~(OB_PCROP_ZONE_A | OB_PCROP_ZONE_B | OB_PCROP_RDP_ERASE)) == 0x00U)) +#else +#define IS_OB_PCROP_CONFIG(__CONFIG__) (((__CONFIG__)\ + & ~(OB_PCROP_ZONE_A | OB_PCROP_ZONE_B | OB_PCROP_RDP_ERASE)) == 0x00U) +#endif /* FLASH_DBANK_SUPPORT */ +#endif /* FLASH_PCROP_SUPPORT */ + +#if defined(FLASH_SECURABLE_MEMORY_SUPPORT) +#define IS_OB_SEC_BOOT_LOCK(__VALUE__) (((__VALUE__) == OB_BOOT_ENTRY_FORCED_NONE)\ + || ((__VALUE__) == OB_BOOT_ENTRY_FORCED_FLASH)) + +#define IS_OB_SEC_SIZE(__VALUE__) ((__VALUE__) < (FLASH_PAGE_NB + 1U)) +#endif /* FLASH_SECURABLE_MEMORY_SUPPORT */ + +#define IS_FLASH_LATENCY(__LATENCY__) (((__LATENCY__) == FLASH_LATENCY_0) || \ + ((__LATENCY__) == FLASH_LATENCY_1) || \ + ((__LATENCY__) == FLASH_LATENCY_2)) +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32G0xx_HAL_FLASH_H */ + diff --git a/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_flash_ex.h b/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_flash_ex.h new file mode 100644 index 0000000..6df8410 --- /dev/null +++ b/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_flash_ex.h @@ -0,0 +1,116 @@ +/** + ****************************************************************************** + * @file stm32g0xx_hal_flash_ex.h + * @author MCD Application Team + * @brief Header file of FLASH HAL Extended module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2018 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file in + * the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32G0xx_HAL_FLASH_EX_H +#define STM32G0xx_HAL_FLASH_EX_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32g0xx_hal_def.h" + +/** @addtogroup STM32G0xx_HAL_Driver + * @{ + */ + +/** @addtogroup FLASHEx + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +/** @defgroup FLASHEx_Exported_Constants FLASH Exported Constants + * @{ + */ +/** @defgroup FLASHEx_Empty_Check FLASHEx Empty Check + * @{ + */ +#define FLASH_PROG_NOT_EMPTY 0x00000000u /*!< 1st location in Flash is programmed */ +#define FLASH_PROG_EMPTY FLASH_ACR_PROGEMPTY /*!< 1st location in Flash is empty */ +/** + * @} + */ +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup FLASHEx_Exported_Functions + * @{ + */ + +/* Extended Program operation functions *************************************/ +/** @addtogroup FLASHEx_Exported_Functions_Group1 + * @{ + */ +HAL_StatusTypeDef HAL_FLASHEx_Erase(FLASH_EraseInitTypeDef *pEraseInit, uint32_t *PageError); +HAL_StatusTypeDef HAL_FLASHEx_Erase_IT(FLASH_EraseInitTypeDef *pEraseInit); +void HAL_FLASHEx_EnableDebugger(void); +void HAL_FLASHEx_DisableDebugger(void); +uint32_t HAL_FLASHEx_FlashEmptyCheck(void); +void HAL_FLASHEx_ForceFlashEmpty(uint32_t FlashEmpty); +#if defined(FLASH_SECURABLE_MEMORY_SUPPORT) +void HAL_FLASHEx_EnableSecMemProtection(uint32_t Banks); +#endif /* FLASH_SECURABLE_MEMORY_SUPPORT */ +HAL_StatusTypeDef HAL_FLASHEx_OBProgram(FLASH_OBProgramInitTypeDef *pOBInit); +void HAL_FLASHEx_OBGetConfig(FLASH_OBProgramInitTypeDef *pOBInit); +/** + * @} + */ + +/** + * @} + */ + +/* Private macros ------------------------------------------------------------*/ +/** @defgroup FLASHEx_Private_Constants FLASHEx Private Constants + * @{ + */ +#define FLASH_PCROP_GRANULARITY_OFFSET 9u /*!< FLASH Code Readout Protection granularity offset */ +#define FLASH_PCROP_GRANULARITY (1UL << FLASH_PCROP_GRANULARITY_OFFSET) /*!< FLASH Code Readout Protection granularity, 512 Bytes */ +/** + * @} + */ + + +/** @defgroup FLASHEx_Private_Macros FLASHEx Private Macros + * @{ + */ +#define IS_FLASH_EMPTY_CHECK(__VALUE__) (((__VALUE__) == FLASH_PROG_EMPTY) || ((__VALUE__) == FLASH_PROG_NOT_EMPTY)) +void FLASH_PageErase(uint32_t Banks, uint32_t Page); +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32G0xx_HAL_FLASH_EX_H */ + diff --git a/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_gpio.h b/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_gpio.h new file mode 100644 index 0000000..3768993 --- /dev/null +++ b/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_gpio.h @@ -0,0 +1,362 @@ +/** + ****************************************************************************** + * @file stm32g0xx_hal_gpio.h + * @author MCD Application Team + * @brief Header file of GPIO HAL module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2018 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32G0xx_HAL_GPIO_H +#define STM32G0xx_HAL_GPIO_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32g0xx_hal_def.h" + +/** @addtogroup STM32G0xx_HAL_Driver + * @{ + */ + +/** @defgroup GPIO GPIO + * @brief GPIO HAL module driver + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ + +/** @defgroup GPIO_Exported_Types GPIO Exported Types + * @{ + */ +/** + * @brief GPIO Init structure definition + */ +typedef struct +{ + uint32_t Pin; /*!< Specifies the GPIO pins to be configured. + This parameter can be any value of @ref GPIO_pins */ + + uint32_t Mode; /*!< Specifies the operating mode for the selected pins. + This parameter can be a value of @ref GPIO_mode */ + + uint32_t Pull; /*!< Specifies the Pull-up or Pull-Down activation for the selected pins. + This parameter can be a value of @ref GPIO_pull */ + + uint32_t Speed; /*!< Specifies the speed for the selected pins. + This parameter can be a value of @ref GPIO_speed */ + + uint32_t Alternate; /*!< Peripheral to be connected to the selected pins + This parameter can be a value of @ref GPIOEx_Alternate_function_selection */ +} GPIO_InitTypeDef; + +/** + * @brief GPIO Bit SET and Bit RESET enumeration + */ +typedef enum +{ + GPIO_PIN_RESET = 0U, + GPIO_PIN_SET +} GPIO_PinState; +/** + * @} + */ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup GPIO_Exported_Constants GPIO Exported Constants + * @{ + */ +/** @defgroup GPIO_pins GPIO pins + * @{ + */ +#define GPIO_PIN_0 ((uint16_t)0x0001) /* Pin 0 selected */ +#define GPIO_PIN_1 ((uint16_t)0x0002) /* Pin 1 selected */ +#define GPIO_PIN_2 ((uint16_t)0x0004) /* Pin 2 selected */ +#define GPIO_PIN_3 ((uint16_t)0x0008) /* Pin 3 selected */ +#define GPIO_PIN_4 ((uint16_t)0x0010) /* Pin 4 selected */ +#define GPIO_PIN_5 ((uint16_t)0x0020) /* Pin 5 selected */ +#define GPIO_PIN_6 ((uint16_t)0x0040) /* Pin 6 selected */ +#define GPIO_PIN_7 ((uint16_t)0x0080) /* Pin 7 selected */ +#define GPIO_PIN_8 ((uint16_t)0x0100) /* Pin 8 selected */ +#define GPIO_PIN_9 ((uint16_t)0x0200) /* Pin 9 selected */ +#define GPIO_PIN_10 ((uint16_t)0x0400) /* Pin 10 selected */ +#define GPIO_PIN_11 ((uint16_t)0x0800) /* Pin 11 selected */ +#define GPIO_PIN_12 ((uint16_t)0x1000) /* Pin 12 selected */ +#define GPIO_PIN_13 ((uint16_t)0x2000) /* Pin 13 selected */ +#define GPIO_PIN_14 ((uint16_t)0x4000) /* Pin 14 selected */ +#define GPIO_PIN_15 ((uint16_t)0x8000) /* Pin 15 selected */ +#define GPIO_PIN_All ((uint16_t)0xFFFF) /* All pins selected */ + +#define GPIO_PIN_MASK (0x0000FFFFu) /* PIN mask for assert test */ +/** + * @} + */ + +/** @defgroup GPIO_mode GPIO mode + * @brief GPIO Configuration Mode + * Elements values convention: 0x00WX00YZ + * - W : EXTI trigger detection on 3 bits + * - X : EXTI mode (IT or Event) on 2 bits + * - Y : Output type (Push Pull or Open Drain) on 1 bit + * - Z : GPIO mode (Input, Output, Alternate or Analog) on 2 bits + * @{ + */ +#define GPIO_MODE_INPUT MODE_INPUT /*!< Input Floating Mode */ +#define GPIO_MODE_OUTPUT_PP (MODE_OUTPUT | OUTPUT_PP) /*!< Output Push Pull Mode */ +#define GPIO_MODE_OUTPUT_OD (MODE_OUTPUT | OUTPUT_OD) /*!< Output Open Drain Mode */ +#define GPIO_MODE_AF_PP (MODE_AF | OUTPUT_PP) /*!< Alternate Function Push Pull Mode */ +#define GPIO_MODE_AF_OD (MODE_AF | OUTPUT_OD) /*!< Alternate Function Open Drain Mode */ +#define GPIO_MODE_ANALOG MODE_ANALOG /*!< Analog Mode */ +#define GPIO_MODE_IT_RISING (MODE_INPUT | EXTI_IT | TRIGGER_RISING) /*!< External Interrupt Mode with Rising edge trigger detection */ +#define GPIO_MODE_IT_FALLING (MODE_INPUT | EXTI_IT | TRIGGER_FALLING) /*!< External Interrupt Mode with Falling edge trigger detection */ +#define GPIO_MODE_IT_RISING_FALLING (MODE_INPUT | EXTI_IT | TRIGGER_RISING | TRIGGER_FALLING) /*!< External Interrupt Mode with Rising/Falling edge trigger detection */ +#define GPIO_MODE_EVT_RISING (MODE_INPUT | EXTI_EVT | TRIGGER_RISING) /*!< External Event Mode with Rising edge trigger detection */ +#define GPIO_MODE_EVT_FALLING (MODE_INPUT | EXTI_EVT | TRIGGER_FALLING) /*!< External Event Mode with Falling edge trigger detection */ +#define GPIO_MODE_EVT_RISING_FALLING (MODE_INPUT | EXTI_EVT | TRIGGER_RISING | TRIGGER_FALLING) /*!< External Event Mode with Rising/Falling edge trigger detection */ +/** + * @} + */ + +/** @defgroup GPIO_speed GPIO speed + * @brief GPIO Output Maximum frequency + * @{ + */ +#define GPIO_SPEED_FREQ_LOW 0x00000000u /*!< Low speed */ +#define GPIO_SPEED_FREQ_MEDIUM 0x00000001u /*!< Medium speed */ +#define GPIO_SPEED_FREQ_HIGH 0x00000002u /*!< High speed */ +#define GPIO_SPEED_FREQ_VERY_HIGH 0x00000003u /*!< Very high speed */ +/** + * @} + */ + +/** @defgroup GPIO_pull GPIO pull + * @brief GPIO Pull-Up or Pull-Down Activation + * @{ + */ +#define GPIO_NOPULL 0x00000000u /*!< No Pull-up or Pull-down activation */ +#define GPIO_PULLUP 0x00000001u /*!< Pull-up activation */ +#define GPIO_PULLDOWN 0x00000002u /*!< Pull-down activation */ +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup GPIO_Exported_Macros GPIO Exported Macros + * @{ + */ + +/** + * @brief Check whether the specified EXTI line is rising edge asserted or not. + * @param __EXTI_LINE__ specifies the EXTI line to check. + * This parameter can be GPIO_PIN_x where x can be(0..15) + * @retval The new state of __EXTI_LINE__ (SET or RESET). + */ +#define __HAL_GPIO_EXTI_GET_RISING_IT(__EXTI_LINE__) (EXTI->RPR1 & (__EXTI_LINE__)) + +/** + * @brief Clear the EXTI line rising pending bits. + * @param __EXTI_LINE__ specifies the EXTI lines to clear. + * This parameter can be any combination of GPIO_PIN_x where x can be (0..15) + * @retval None + */ +#define __HAL_GPIO_EXTI_CLEAR_RISING_IT(__EXTI_LINE__) (EXTI->RPR1 = (__EXTI_LINE__)) + +/** + * @brief Check whether the specified EXTI line is falling edge asserted or not. + * @param __EXTI_LINE__ specifies the EXTI line to check. + * This parameter can be GPIO_PIN_x where x can be(0..15) + * @retval The new state of __EXTI_LINE__ (SET or RESET). + */ +#define __HAL_GPIO_EXTI_GET_FALLING_IT(__EXTI_LINE__) (EXTI->FPR1 & (__EXTI_LINE__)) + +/** + * @brief Clear the EXTI line falling pending bits. + * @param __EXTI_LINE__ specifies the EXTI lines to clear. + * This parameter can be any combination of GPIO_PIN_x where x can be (0..15) + * @retval None + */ +#define __HAL_GPIO_EXTI_CLEAR_FALLING_IT(__EXTI_LINE__) (EXTI->FPR1 = (__EXTI_LINE__)) + +/** + * @brief Check whether the specified EXTI line is asserted or not. + * @param __EXTI_LINE__ specifies the EXTI line to check. + * This parameter can be GPIO_PIN_x where x can be(0..15) + * @retval The new state of __EXTI_LINE__ (SET or RESET). + */ +#define __HAL_GPIO_EXTI_GET_IT(__EXTI_LINE__) (__HAL_GPIO_EXTI_GET_RISING_IT(__EXTI_LINE__) || \ + __HAL_GPIO_EXTI_GET_FALLING_IT(__EXTI_LINE__)) + +/** + * @brief Clear the EXTI's line pending bits. + * @param __EXTI_LINE__ specifies the EXTI lines to clear. + * This parameter can be any combination of GPIO_PIN_x where x can be (0..15) + * @retval None + */ +#define __HAL_GPIO_EXTI_CLEAR_IT(__EXTI_LINE__) \ + do { \ + __HAL_GPIO_EXTI_CLEAR_RISING_IT(__EXTI_LINE__); \ + __HAL_GPIO_EXTI_CLEAR_FALLING_IT(__EXTI_LINE__); \ + } while(0) + + +/** + * @brief Generate a Software interrupt on selected EXTI line. + * @param __EXTI_LINE__ specifies the EXTI line to check. + * This parameter can be GPIO_PIN_x where x can be(0..15) + * @retval None + */ +#define __HAL_GPIO_EXTI_GENERATE_SWIT(__EXTI_LINE__) (EXTI->SWIER1 |= (__EXTI_LINE__)) + +/** + * @brief Check whether the specified EXTI line flag is set or not. + * @param __EXTI_LINE__ specifies the EXTI line flag to check. + * This parameter can be GPIO_PIN_x where x can be(0..15) + * @retval The new state of __EXTI_LINE__ (SET or RESET). + */ +#define __HAL_GPIO_EXTI_GET_FLAG(__EXTI_LINE__) __HAL_GPIO_EXTI_GET_IT(__EXTI_LINE__) + +/** + * @brief Clear the EXTI line pending flags. + * @param __EXTI_LINE__ specifies the EXTI lines flags to clear. + * This parameter can be any combination of GPIO_PIN_x where x can be (0..15) + * @retval None + */ +#define __HAL_GPIO_EXTI_CLEAR_FLAG(__EXTI_LINE__) __HAL_GPIO_EXTI_CLEAR_IT(__EXTI_LINE__) + +/** + * @} + */ + +/* Private macros ------------------------------------------------------------*/ +/** @defgroup GPIO_Private_Constants GPIO Private Constants + * @{ + */ +#define GPIO_MODE_Pos 0u +#define GPIO_MODE (0x3uL << GPIO_MODE_Pos) +#define MODE_INPUT (0x0uL << GPIO_MODE_Pos) +#define MODE_OUTPUT (0x1uL << GPIO_MODE_Pos) +#define MODE_AF (0x2uL << GPIO_MODE_Pos) +#define MODE_ANALOG (0x3uL << GPIO_MODE_Pos) +#define OUTPUT_TYPE_Pos 4u +#define OUTPUT_TYPE (0x1uL << OUTPUT_TYPE_Pos) +#define OUTPUT_PP (0x0uL << OUTPUT_TYPE_Pos) +#define OUTPUT_OD (0x1uL << OUTPUT_TYPE_Pos) +#define EXTI_MODE_Pos 16u +#define EXTI_MODE (0x3uL << EXTI_MODE_Pos) +#define EXTI_IT (0x1uL << EXTI_MODE_Pos) +#define EXTI_EVT (0x2uL << EXTI_MODE_Pos) +#define TRIGGER_MODE_Pos 20u +#define TRIGGER_MODE (0x7uL << TRIGGER_MODE_Pos) +#define TRIGGER_RISING (0x1uL << TRIGGER_MODE_Pos) +#define TRIGGER_FALLING (0x2uL << TRIGGER_MODE_Pos) +/** + * @} + */ + +/** @defgroup GPIO_Private_Macros GPIO Private Macros + * @{ + */ +#define IS_GPIO_PIN_ACTION(ACTION) (((ACTION) == GPIO_PIN_RESET) || ((ACTION) == GPIO_PIN_SET)) + +#define IS_GPIO_PIN(__PIN__) ((((uint32_t)(__PIN__) & GPIO_PIN_MASK) != 0x00u) &&\ + (((uint32_t)(__PIN__) & ~GPIO_PIN_MASK) == 0x00u)) + +#define IS_GPIO_MODE(__MODE__) (((__MODE__) == GPIO_MODE_INPUT) ||\ + ((__MODE__) == GPIO_MODE_OUTPUT_PP) ||\ + ((__MODE__) == GPIO_MODE_OUTPUT_OD) ||\ + ((__MODE__) == GPIO_MODE_AF_PP) ||\ + ((__MODE__) == GPIO_MODE_AF_OD) ||\ + ((__MODE__) == GPIO_MODE_IT_RISING) ||\ + ((__MODE__) == GPIO_MODE_IT_FALLING) ||\ + ((__MODE__) == GPIO_MODE_IT_RISING_FALLING) ||\ + ((__MODE__) == GPIO_MODE_EVT_RISING) ||\ + ((__MODE__) == GPIO_MODE_EVT_FALLING) ||\ + ((__MODE__) == GPIO_MODE_EVT_RISING_FALLING) ||\ + ((__MODE__) == GPIO_MODE_ANALOG)) + +#define IS_GPIO_SPEED(__SPEED__) (((__SPEED__) == GPIO_SPEED_FREQ_LOW) ||\ + ((__SPEED__) == GPIO_SPEED_FREQ_MEDIUM) ||\ + ((__SPEED__) == GPIO_SPEED_FREQ_HIGH) ||\ + ((__SPEED__) == GPIO_SPEED_FREQ_VERY_HIGH)) + +#define IS_GPIO_PULL(__PULL__) (((__PULL__) == GPIO_NOPULL) ||\ + ((__PULL__) == GPIO_PULLUP) || \ + ((__PULL__) == GPIO_PULLDOWN)) +/** + * @} + */ + +/* Include GPIO HAL Extended module */ +#include "stm32g0xx_hal_gpio_ex.h" + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup GPIO_Exported_Functions GPIO Exported Functions + * @brief GPIO Exported Functions + * @{ + */ + +/** @defgroup GPIO_Exported_Functions_Group1 Initialization/de-initialization functions + * @brief Initialization and Configuration functions + * @{ + */ + +/* Initialization and de-initialization functions *****************************/ +void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init); +void HAL_GPIO_DeInit(GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin); + +/** + * @} + */ + +/** @defgroup GPIO_Exported_Functions_Group2 IO operation functions + * @brief IO operation functions + * @{ + */ + +/* IO operation functions *****************************************************/ +GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin); +void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState); +void HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin); +HAL_StatusTypeDef HAL_GPIO_LockPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin); +void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin); +void HAL_GPIO_EXTI_Rising_Callback(uint16_t GPIO_Pin); +void HAL_GPIO_EXTI_Falling_Callback(uint16_t GPIO_Pin); + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32G0xx_HAL_GPIO_H */ + diff --git a/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_gpio_ex.h b/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_gpio_ex.h new file mode 100644 index 0000000..5ddf336 --- /dev/null +++ b/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_gpio_ex.h @@ -0,0 +1,836 @@ +/** + ****************************************************************************** + * @file stm32g0xx_hal_gpio_ex.h + * @author MCD Application Team + * @brief Header file of GPIO HAL Extended module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2018 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32G0xx_HAL_GPIO_EX_H +#define STM32G0xx_HAL_GPIO_EX_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32g0xx_hal_def.h" + +/** @addtogroup STM32G0xx_HAL_Driver + * @{ + */ + +/** @defgroup GPIOEx GPIOEx + * @brief GPIO Extended HAL module driver + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +/** @defgroup GPIOEx_Exported_Constants GPIOEx Exported Constants + * @{ + */ + +/** @defgroup GPIOEx_Alternate_function_selection GPIOEx Alternate function selection + * @{ + */ +#if defined (STM32G0C1xx) || defined (STM32G0B1xx) +/*------------------------- STM32G0C1xx / STM32G0B1xx ------------------------*/ +/** + * @brief AF 0 selection + */ +#define GPIO_AF0_CEC ((uint8_t)0x00) /*!< CEC Alternate Function mapping */ +#define GPIO_AF0_CRS ((uint8_t)0x00) /*!< CRS Alternate Function mapping */ +#define GPIO_AF0_EVENTOUT ((uint8_t)0x00) /*!< EVENTOUT Alternate Function mapping */ +#define GPIO_AF0_IR ((uint8_t)0x00) /*!< IR Alternate Function mapping */ +#define GPIO_AF0_LPTIM1 ((uint8_t)0x00) /*!< LPTIM1 Alternate Function mapping */ +#define GPIO_AF0_MCO ((uint8_t)0x00) /*!< MCO (MCO1) Alternate Function mapping */ +#define GPIO_AF0_OSC ((uint8_t)0x00) /*!< OSC (By pass and Enable) Alternate Function mapping */ +#define GPIO_AF0_OSC32 ((uint8_t)0x00) /*!< OSC32 (By pass and Enable) Alternate Function mapping */ +#define GPIO_AF0_SWJ ((uint8_t)0x00) /*!< SWJ (SWD) Alternate Function mapping */ +#define GPIO_AF0_SPI1 ((uint8_t)0x00) /*!< SPI1 Alternate Function mapping */ +#define GPIO_AF0_SPI2 ((uint8_t)0x00) /*!< SPI2 Alternate Function mapping */ +#define GPIO_AF0_TIM14 ((uint8_t)0x00) /*!< TIM14 Alternate Function mapping */ +#define GPIO_AF0_TIM15 ((uint8_t)0x00) /*!< TIM15 Alternate Function mapping */ +#define GPIO_AF0_TIM16 ((uint8_t)0x00) /*!< TIM16 Alternate Function mapping */ +#define GPIO_AF0_TIM17 ((uint8_t)0x00) /*!< TIM17 Alternate Function mapping */ +#define GPIO_AF0_USART1 ((uint8_t)0x00) /*!< USART1 Alternate Function mapping */ +#define GPIO_AF0_USART2 ((uint8_t)0x00) /*!< USART2 Alternate Function mapping */ +#define GPIO_AF0_USART3 ((uint8_t)0x00) /*!< USART3 Alternate Function mapping */ +#define GPIO_AF0_USART4 ((uint8_t)0x00) /*!< USART4 Alternate Function mapping */ +#define GPIO_AF0_UCPD1 ((uint8_t)0x00) /*!< UCPD1 Alternate Function mapping */ +#define GPIO_AF0_UCPD2 ((uint8_t)0x00) /*!< UCPD2 Alternate Function mapping */ + +/** + * @brief AF 1 selection + */ +#define GPIO_AF1_CEC ((uint8_t)0x01) /*!< CEC Alternate Function mapping */ +#define GPIO_AF1_EVENTOUT ((uint8_t)0x01) /*!< EVENTOUT Alternate Function mapping */ +#define GPIO_AF1_IR ((uint8_t)0x01) /*!< IR Alternate Function mapping */ +#define GPIO_AF1_LPTIM2 ((uint8_t)0x01) /*!< LPTIM2 Alternate Function mapping */ +#define GPIO_AF1_LPUART1 ((uint8_t)0x01) /*!< LPUART1 Alternate Function mapping */ +#define GPIO_AF1_LPUART2 ((uint8_t)0x01) /*!< LPUART2 Alternate Function mapping */ +#define GPIO_AF1_OSC ((uint8_t)0x01) /*!< OSC (By pass and Enable) Alternate Function mapping */ +#define GPIO_AF1_SPI1 ((uint8_t)0x01) /*!< SPI2 Alternate Function mapping */ +#define GPIO_AF1_SPI2 ((uint8_t)0x01) /*!< SPI2 Alternate Function mapping */ +#define GPIO_AF1_TIM1 ((uint8_t)0x01) /*!< TIM1 Alternate Function mapping */ +#define GPIO_AF1_TIM3 ((uint8_t)0x01) /*!< TIM3 Alternate Function mapping */ +#define GPIO_AF1_USART1 ((uint8_t)0x01) /*!< USART1 Alternate Function mapping */ +#define GPIO_AF1_USART2 ((uint8_t)0x01) /*!< USART2 Alternate Function mapping */ +#define GPIO_AF1_USART4 ((uint8_t)0x01) /*!< USART4 Alternate Function mapping */ +#define GPIO_AF1_UCPD1 ((uint8_t)0x01) /*!< UCPD1 Alternate Function mapping */ +#define GPIO_AF1_UCPD2 ((uint8_t)0x01) /*!< UCPD2 Alternate Function mapping */ + +/** + * @brief AF 2 selection + */ +#define GPIO_AF2_LPTIM1 ((uint8_t)0x02) /*!< LPTIM1 Alternate Function mapping */ +#define GPIO_AF2_LPTIM2 ((uint8_t)0x02) /*!< LPTIM2 Alternate Function mapping */ +#define GPIO_AF2_TIM1 ((uint8_t)0x02) /*!< TIM1 Alternate Function mapping */ +#define GPIO_AF2_TIM2 ((uint8_t)0x02) /*!< TIM2 Alternate Function mapping */ +#define GPIO_AF2_TIM4 ((uint8_t)0x02) /*!< TIM4 Alternate Function mapping */ +#define GPIO_AF2_TIM14 ((uint8_t)0x02) /*!< TIM14 Alternate Function mapping */ +#define GPIO_AF2_TIM15 ((uint8_t)0x02) /*!< TIM15 Alternate Function mapping */ +#define GPIO_AF2_TIM16 ((uint8_t)0x02) /*!< TIM16 Alternate Function mapping */ +#define GPIO_AF2_TIM17 ((uint8_t)0x02) /*!< TIM17 Alternate Function mapping */ +#define GPIO_AF2_USB ((uint8_t)0x02) /*!< USB Alternate Function mapping */ + + +/** + * @brief AF 3 selection + */ +#define GPIO_AF3_FDCAN1 ((uint8_t)0x03) /*!< FDCAN1 Alternate Function mapping */ +#define GPIO_AF3_FDCAN2 ((uint8_t)0x03) /*!< FDCAN2 Alternate Function mapping */ +#define GPIO_AF3_LPUART2 ((uint8_t)0x03) /*!< LPUART2 Alternate Function mapping */ +#define GPIO_AF3_USART5 ((uint8_t)0x03) /*!< USART5 Alternate Function mapping */ +#define GPIO_AF3_USART6 ((uint8_t)0x03) /*!< USART6 Alternate Function mapping */ +#define GPIO_AF3_MCO2 ((uint8_t)0x03) /*!< MCO2 Alternate Function mapping */ + +/** + * @brief AF 4 selection + */ +#define GPIO_AF4_CRS ((uint8_t)0x04) /*!< CRS Alternate Function mapping */ +#define GPIO_AF4_SPI2 ((uint8_t)0x04) /*!< SPI2 Alternate Function mapping */ +#define GPIO_AF4_SPI3 ((uint8_t)0x04) /*!< SPI3 Alternate Function mapping */ +#define GPIO_AF4_TIM14 ((uint8_t)0x04) /*!< TIM14 Alternate Function mapping */ +#define GPIO_AF4_TIM15 ((uint8_t)0x04) /*!< TIM15 Alternate Function mapping */ +#define GPIO_AF4_USART1 ((uint8_t)0x04) /*!< USART1 Alternate Function mapping */ +#define GPIO_AF4_USART3 ((uint8_t)0x04) /*!< USART3 Alternate Function mapping */ +#define GPIO_AF4_USART4 ((uint8_t)0x04) /*!< USART4 Alternate Function mapping */ +#define GPIO_AF4_USART6 ((uint8_t)0x04) /*!< USART6 Alternate Function mapping */ +#define GPIO_AF4_UCPD1 ((uint8_t)0x04) /*!< UCPD1 Alternate Function mapping */ +#define GPIO_AF4_UCPD2 ((uint8_t)0x04) /*!< UCPD2 Alternate Function mapping */ + +/** + * @brief AF 5 selection + */ +#define GPIO_AF5_LPTIM1 ((uint8_t)0x05) /*!< LPTIM1 Alternate Function mapping */ +#define GPIO_AF5_LPTIM2 ((uint8_t)0x05) /*!< LPTIM2 Alternate Function mapping */ +#define GPIO_AF5_SPI1 ((uint8_t)0x05) /*!< SPI1 Alternate Function mapping */ +#define GPIO_AF5_SPI2 ((uint8_t)0x05) /*!< SPI2 Alternate Function mapping */ +#define GPIO_AF5_TIM1 ((uint8_t)0x05) /*!< TIM1 Alternate Function mapping */ +#define GPIO_AF5_TIM15 ((uint8_t)0x05) /*!< TIM15 Alternate Function mapping */ +#define GPIO_AF5_TIM16 ((uint8_t)0x05) /*!< TIM16 Alternate Function mapping */ +#define GPIO_AF5_TIM17 ((uint8_t)0x05) /*!< TIM17 Alternate Function mapping */ +#define GPIO_AF5_USART3 ((uint8_t)0x05) /*!< USART3 Alternate Function mapping */ + +/** + * @brief AF 6 selection + */ +#define GPIO_AF6_I2C1 ((uint8_t)0x06) /*!< I2C1 Alternate Function mapping */ +#define GPIO_AF6_I2C2 ((uint8_t)0x06) /*!< I2C2 Alternate Function mapping */ +#define GPIO_AF6_I2C3 ((uint8_t)0x06) /*!< I2C3 Alternate Function mapping */ +#define GPIO_AF6_LPUART1 ((uint8_t)0x06) /*!< LPUART1 Alternate Function mapping */ +#define GPIO_AF6_UCPD1 ((uint8_t)0x06) /*!< UCPD1 Alternate Function mapping */ +#define GPIO_AF6_UCPD2 ((uint8_t)0x06) /*!< UCPD2 Alternate Function mapping */ +#define GPIO_AF6_USB ((uint8_t)0x06) /*!< USB Alternate Function mapping */ + +/** + * @brief AF 7 selection + */ +#define GPIO_AF7_COMP1 ((uint8_t)0x07) /*!< COMP1 Alternate Function mapping */ +#define GPIO_AF7_COMP2 ((uint8_t)0x07) /*!< COMP2 Alternate Function mapping */ +#define GPIO_AF7_COMP3 ((uint8_t)0x07) /*!< COMP3 Alternate Function mapping */ +#define GPIO_AF7_EVENTOUT ((uint8_t)0x07) /*!< EVENTOUT Alternate Function mapping */ + +/** + * @brief AF 8 selection + */ +#define GPIO_AF8_I2C2 ((uint8_t)0x08) /*!< I2C2 Alternate Function mapping */ +#define GPIO_AF8_USART5 ((uint8_t)0x08) /*!< USART5 Alternate Function mapping */ +#define GPIO_AF8_USART6 ((uint8_t)0x08) /*!< USART5 Alternate Function mapping */ + +/** + * @brief AF 9 selection + */ +#define GPIO_AF9_I2C3 ((uint8_t)0x09) /*!< I2C3 Alternate Function mapping */ +#define GPIO_AF9_SPI3 ((uint8_t)0x09) /*!< SPI3 Alternate Function mapping */ +#define GPIO_AF9_TIM4 ((uint8_t)0x09) /*!< TIM4 Alternate Function mapping */ + +/** + * @brief AF 10 selection + */ +#define GPIO_AF10_LPUART2 ((uint8_t)0x0A) /*!< LPUART2 Alternate Function mapping */ + +#define IS_GPIO_AF(AF) ((AF) <= (uint8_t)0x0A) + +#endif /* STM32G0C1xx || STM32G0B1xx */ + +#if defined (STM32G0B0xx) +/*------------------------- STM32G0B0xx ------------------------*/ +/** + * @brief AF 0 selection + */ +#define GPIO_AF0_CRS ((uint8_t)0x00) /*!< CRS Alternate Function mapping */ +#define GPIO_AF0_EVENTOUT ((uint8_t)0x00) /*!< EVENTOUT Alternate Function mapping */ +#define GPIO_AF0_IR ((uint8_t)0x00) /*!< IR Alternate Function mapping */ +#define GPIO_AF0_MCO ((uint8_t)0x00) /*!< MCO (MCO1) Alternate Function mapping */ +#define GPIO_AF0_OSC ((uint8_t)0x00) /*!< OSC (By pass and Enable) Alternate Function mapping */ +#define GPIO_AF0_OSC32 ((uint8_t)0x00) /*!< OSC32 (By pass and Enable) Alternate Function mapping */ +#define GPIO_AF0_SWJ ((uint8_t)0x00) /*!< SWJ (SWD) Alternate Function mapping */ +#define GPIO_AF0_SPI1 ((uint8_t)0x00) /*!< SPI1 Alternate Function mapping */ +#define GPIO_AF0_SPI2 ((uint8_t)0x00) /*!< SPI2 Alternate Function mapping */ +#define GPIO_AF0_TIM14 ((uint8_t)0x00) /*!< TIM14 Alternate Function mapping */ +#define GPIO_AF0_TIM15 ((uint8_t)0x00) /*!< TIM15 Alternate Function mapping */ +#define GPIO_AF0_TIM16 ((uint8_t)0x00) /*!< TIM16 Alternate Function mapping */ +#define GPIO_AF0_TIM17 ((uint8_t)0x00) /*!< TIM17 Alternate Function mapping */ +#define GPIO_AF0_USART1 ((uint8_t)0x00) /*!< USART1 Alternate Function mapping */ +#define GPIO_AF0_USART2 ((uint8_t)0x00) /*!< USART2 Alternate Function mapping */ +#define GPIO_AF0_USART3 ((uint8_t)0x00) /*!< USART3 Alternate Function mapping */ +#define GPIO_AF0_USART4 ((uint8_t)0x00) /*!< USART4 Alternate Function mapping */ + +/** + * @brief AF 1 selection + */ +#define GPIO_AF1_EVENTOUT ((uint8_t)0x01) /*!< EVENTOUT Alternate Function mapping */ +#define GPIO_AF1_IR ((uint8_t)0x01) /*!< IR Alternate Function mapping */ +#define GPIO_AF1_OSC ((uint8_t)0x01) /*!< OSC (By pass and Enable) Alternate Function mapping */ +#define GPIO_AF1_SPI1 ((uint8_t)0x01) /*!< SPI2 Alternate Function mapping */ +#define GPIO_AF1_SPI2 ((uint8_t)0x01) /*!< SPI2 Alternate Function mapping */ +#define GPIO_AF1_TIM1 ((uint8_t)0x01) /*!< TIM1 Alternate Function mapping */ +#define GPIO_AF1_TIM3 ((uint8_t)0x01) /*!< TIM3 Alternate Function mapping */ +#define GPIO_AF1_USART1 ((uint8_t)0x01) /*!< USART1 Alternate Function mapping */ +#define GPIO_AF1_USART2 ((uint8_t)0x01) /*!< USART2 Alternate Function mapping */ +#define GPIO_AF1_USART4 ((uint8_t)0x01) /*!< USART4 Alternate Function mapping */ + +/** + * @brief AF 2 selection + */ +#define GPIO_AF2_TIM1 ((uint8_t)0x02) /*!< TIM1 Alternate Function mapping */ +#define GPIO_AF2_TIM4 ((uint8_t)0x02) /*!< TIM4 Alternate Function mapping */ +#define GPIO_AF2_TIM14 ((uint8_t)0x02) /*!< TIM14 Alternate Function mapping */ +#define GPIO_AF2_TIM15 ((uint8_t)0x02) /*!< TIM15 Alternate Function mapping */ +#define GPIO_AF2_TIM16 ((uint8_t)0x02) /*!< TIM16 Alternate Function mapping */ +#define GPIO_AF2_TIM17 ((uint8_t)0x02) /*!< TIM17 Alternate Function mapping */ +#define GPIO_AF2_USB ((uint8_t)0x02) /*!< USB Alternate Function mapping */ + + +/** + * @brief AF 3 selection + */ +#define GPIO_AF3_USART5 ((uint8_t)0x03) /*!< USART5 Alternate Function mapping */ +#define GPIO_AF3_USART6 ((uint8_t)0x03) /*!< USART6 Alternate Function mapping */ +#define GPIO_AF3_MCO2 ((uint8_t)0x03) /*!< MCO2 Alternate Function mapping */ + +/** + * @brief AF 4 selection + */ +#define GPIO_AF4_CRS ((uint8_t)0x04) /*!< CRS Alternate Function mapping */ +#define GPIO_AF4_SPI2 ((uint8_t)0x04) /*!< SPI2 Alternate Function mapping */ +#define GPIO_AF4_SPI3 ((uint8_t)0x04) /*!< SPI3 Alternate Function mapping */ +#define GPIO_AF4_TIM14 ((uint8_t)0x04) /*!< TIM14 Alternate Function mapping */ +#define GPIO_AF4_TIM15 ((uint8_t)0x04) /*!< TIM15 Alternate Function mapping */ +#define GPIO_AF4_USART1 ((uint8_t)0x04) /*!< USART1 Alternate Function mapping */ +#define GPIO_AF4_USART3 ((uint8_t)0x04) /*!< USART3 Alternate Function mapping */ +#define GPIO_AF4_USART4 ((uint8_t)0x04) /*!< USART4 Alternate Function mapping */ +#define GPIO_AF4_USART6 ((uint8_t)0x04) /*!< USART6 Alternate Function mapping */ + +/** + * @brief AF 5 selection + */ +#define GPIO_AF5_SPI1 ((uint8_t)0x05) /*!< SPI1 Alternate Function mapping */ +#define GPIO_AF5_SPI2 ((uint8_t)0x05) /*!< SPI2 Alternate Function mapping */ +#define GPIO_AF5_TIM1 ((uint8_t)0x05) /*!< TIM1 Alternate Function mapping */ +#define GPIO_AF5_TIM15 ((uint8_t)0x05) /*!< TIM15 Alternate Function mapping */ +#define GPIO_AF5_TIM16 ((uint8_t)0x05) /*!< TIM16 Alternate Function mapping */ +#define GPIO_AF5_TIM17 ((uint8_t)0x05) /*!< TIM17 Alternate Function mapping */ +#define GPIO_AF5_USART3 ((uint8_t)0x05) /*!< USART3 Alternate Function mapping */ + +/** + * @brief AF 6 selection + */ +#define GPIO_AF6_I2C1 ((uint8_t)0x06) /*!< I2C1 Alternate Function mapping */ +#define GPIO_AF6_I2C2 ((uint8_t)0x06) /*!< I2C2 Alternate Function mapping */ +#define GPIO_AF6_I2C3 ((uint8_t)0x06) /*!< I2C3 Alternate Function mapping */ +#define GPIO_AF6_USB ((uint8_t)0x06) /*!< USB Alternate Function mapping */ + +/** + * @brief AF 7 selection + */ +#define GPIO_AF7_EVENTOUT ((uint8_t)0x07) /*!< EVENTOUT Alternate Function mapping */ + +/** + * @brief AF 8 selection + */ +#define GPIO_AF8_I2C2 ((uint8_t)0x08) /*!< I2C2 Alternate Function mapping */ +#define GPIO_AF8_USART5 ((uint8_t)0x08) /*!< USART5 Alternate Function mapping */ +#define GPIO_AF8_USART6 ((uint8_t)0x08) /*!< USART5 Alternate Function mapping */ + +/** + * @brief AF 9 selection + */ +#define GPIO_AF9_I2C3 ((uint8_t)0x09) /*!< I2C3 Alternate Function mapping */ +#define GPIO_AF9_SPI3 ((uint8_t)0x09) /*!< SPI3 Alternate Function mapping */ +#define GPIO_AF9_TIM4 ((uint8_t)0x09) /*!< TIM4 Alternate Function mapping */ + +#define IS_GPIO_AF(AF) ((AF) <= (uint8_t)0x09) + +#endif /* STM32G0B0xx */ + + +#if defined (STM32G081xx) || defined (STM32G071xx) +/*------------------------- STM32G081xx / STM32G071xx ------------------------*/ +/** + * @brief AF 0 selection + */ +#define GPIO_AF0_CEC ((uint8_t)0x00) /*!< CEC Alternate Function mapping */ +#define GPIO_AF0_EVENTOUT ((uint8_t)0x00) /*!< EVENTOUT Alternate Function mapping */ +#define GPIO_AF0_IR ((uint8_t)0x00) /*!< IR Alternate Function mapping */ +#define GPIO_AF0_LPTIM1 ((uint8_t)0x00) /*!< LPTIM1 Alternate Function mapping */ +#define GPIO_AF0_MCO ((uint8_t)0x00) /*!< MCO (MCO1) Alternate Function mapping */ +#define GPIO_AF0_OSC ((uint8_t)0x00) /*!< OSC (By pass and Enable) Alternate Function mapping */ +#define GPIO_AF0_OSC32 ((uint8_t)0x00) /*!< OSC32 (By pass and Enable) Alternate Function mapping */ +#define GPIO_AF0_SWJ ((uint8_t)0x00) /*!< SWJ (SWD) Alternate Function mapping */ +#define GPIO_AF0_SPI1 ((uint8_t)0x00) /*!< SPI1 Alternate Function mapping */ +#define GPIO_AF0_SPI2 ((uint8_t)0x00) /*!< SPI2 Alternate Function mapping */ +#define GPIO_AF0_TIM14 ((uint8_t)0x00) /*!< TIM14 Alternate Function mapping */ +#define GPIO_AF0_USART1 ((uint8_t)0x00) /*!< USART1 Alternate Function mapping */ +#define GPIO_AF0_USART2 ((uint8_t)0x00) /*!< USART2 Alternate Function mapping */ +#define GPIO_AF0_USART3 ((uint8_t)0x00) /*!< USART3 Alternate Function mapping */ +#define GPIO_AF0_UCPD1 ((uint8_t)0x00) /*!< UCPD1 Alternate Function mapping */ +#define GPIO_AF0_UCPD2 ((uint8_t)0x00) /*!< UCPD2 Alternate Function mapping */ + +/** + * @brief AF 1 selection + */ +#define GPIO_AF1_CEC ((uint8_t)0x01) /*!< CEC Alternate Function mapping */ +#define GPIO_AF1_IR ((uint8_t)0x01) /*!< IR Alternate Function mapping */ +#define GPIO_AF1_LPUART1 ((uint8_t)0x01) /*!< LPUART1 Alternate Function mapping */ +#define GPIO_AF1_OSC ((uint8_t)0x01) /*!< OSC (By pass and Enable) Alternate Function mapping */ +#define GPIO_AF1_SPI1 ((uint8_t)0x01) /*!< SPI2 Alternate Function mapping */ +#define GPIO_AF1_SPI2 ((uint8_t)0x01) /*!< SPI2 Alternate Function mapping */ +#define GPIO_AF1_TIM1 ((uint8_t)0x01) /*!< TIM1 Alternate Function mapping */ +#define GPIO_AF1_TIM3 ((uint8_t)0x01) /*!< TIM3 Alternate Function mapping */ +#define GPIO_AF1_USART1 ((uint8_t)0x01) /*!< USART1 Alternate Function mapping */ +#define GPIO_AF1_USART2 ((uint8_t)0x01) /*!< USART2 Alternate Function mapping */ +#define GPIO_AF1_USART4 ((uint8_t)0x01) /*!< USART4 Alternate Function mapping */ +#define GPIO_AF1_UCPD1 ((uint8_t)0x01) /*!< UCPD1 Alternate Function mapping */ +#define GPIO_AF1_UCPD2 ((uint8_t)0x01) /*!< UCPD2 Alternate Function mapping */ + +/** + * @brief AF 2 selection + */ +#define GPIO_AF2_LPTIM1 ((uint8_t)0x02) /*!< LPTIM1 Alternate Function mapping */ +#define GPIO_AF2_LPTIM2 ((uint8_t)0x02) /*!< LPTIM2 Alternate Function mapping */ +#define GPIO_AF2_TIM1 ((uint8_t)0x02) /*!< TIM1 Alternate Function mapping */ +#define GPIO_AF2_TIM2 ((uint8_t)0x02) /*!< TIM2 Alternate Function mapping */ +#define GPIO_AF2_TIM14 ((uint8_t)0x02) /*!< TIM14 Alternate Function mapping */ +#define GPIO_AF2_TIM15 ((uint8_t)0x02) /*!< TIM15 Alternate Function mapping */ +#define GPIO_AF2_TIM16 ((uint8_t)0x02) /*!< TIM16 Alternate Function mapping */ +#define GPIO_AF2_TIM17 ((uint8_t)0x02) /*!< TIM17 Alternate Function mapping */ + +/** + * @brief AF 3 selection + */ +#define GPIO_AF3_UCPD1 ((uint8_t)0x03) /*!< UCPD1 Alternate Function mapping */ +#define GPIO_AF3_UCPD2 ((uint8_t)0x03) /*!< UCPD2 Alternate Function mapping */ + +/** + * @brief AF 4 selection + */ +#define GPIO_AF4_SPI2 ((uint8_t)0x04) /*!< SPI2 Alternate Function mapping */ +#define GPIO_AF4_TIM14 ((uint8_t)0x04) /*!< TIM14 Alternate Function mapping */ +#define GPIO_AF4_TIM15 ((uint8_t)0x04) /*!< TIM15 Alternate Function mapping */ +#define GPIO_AF4_USART1 ((uint8_t)0x04) /*!< USART1 Alternate Function mapping */ +#define GPIO_AF4_USART3 ((uint8_t)0x04) /*!< USART3 Alternate Function mapping */ +#define GPIO_AF4_USART4 ((uint8_t)0x04) /*!< USART4 Alternate Function mapping */ +#define GPIO_AF4_UCPD1 ((uint8_t)0x04) /*!< UCPD1 Alternate Function mapping */ +#define GPIO_AF4_UCPD2 ((uint8_t)0x04) /*!< UCPD2 Alternate Function mapping */ + +/** + * @brief AF 5 selection + */ +#define GPIO_AF5_LPTIM1 ((uint8_t)0x05) /*!< LPTIM1 Alternate Function mapping */ +#define GPIO_AF5_LPTIM2 ((uint8_t)0x05) /*!< LPTIM2 Alternate Function mapping */ +#define GPIO_AF5_SPI1 ((uint8_t)0x05) /*!< SPI1 Alternate Function mapping */ +#define GPIO_AF5_SPI2 ((uint8_t)0x05) /*!< SPI2 Alternate Function mapping */ +#define GPIO_AF5_TIM1 ((uint8_t)0x05) /*!< TIM1 Alternate Function mapping */ +#define GPIO_AF5_TIM15 ((uint8_t)0x05) /*!< TIM15 Alternate Function mapping */ +#define GPIO_AF5_TIM16 ((uint8_t)0x05) /*!< TIM16 Alternate Function mapping */ +#define GPIO_AF5_TIM17 ((uint8_t)0x05) /*!< TIM17 Alternate Function mapping */ +#define GPIO_AF5_USART3 ((uint8_t)0x05) /*!< USART3 Alternate Function mapping */ + +/** + * @brief AF 6 selection + */ +#define GPIO_AF6_I2C1 ((uint8_t)0x06) /*!< I2C1 Alternate Function mapping */ +#define GPIO_AF6_I2C2 ((uint8_t)0x06) /*!< I2C2 Alternate Function mapping */ +#define GPIO_AF6_LPUART1 ((uint8_t)0x06) /*!< LPUART1 Alternate Function mapping */ +#define GPIO_AF6_UCPD1 ((uint8_t)0x06) /*!< UCPD1 Alternate Function mapping */ +#define GPIO_AF6_UCPD2 ((uint8_t)0x06) /*!< UCPD2 Alternate Function mapping */ + +/** + * @brief AF 7 selection + */ +#define GPIO_AF7_COMP1 ((uint8_t)0x07) /*!< COMP1 Alternate Function mapping */ +#define GPIO_AF7_COMP2 ((uint8_t)0x07) /*!< COMP2 Alternate Function mapping */ +#define GPIO_AF7_EVENTOUT ((uint8_t)0x07) /*!< EVENTOUT Alternate Function mapping */ + +#define IS_GPIO_AF(AF) ((AF) <= (uint8_t)0x07) + +#endif /* STM32G081xx || STM32G071xx */ + +#if defined (STM32G070xx) +/** + * @brief AF 0 selection + */ +#define GPIO_AF0_EVENTOUT ((uint8_t)0x00) /*!< EVENTOUT Alternate Function mapping */ +#define GPIO_AF0_IR ((uint8_t)0x00) /*!< IR Alternate Function mapping */ +#define GPIO_AF0_MCO ((uint8_t)0x00) /*!< MCO (MCO1) Alternate Function mapping */ +#define GPIO_AF0_OSC ((uint8_t)0x00) /*!< OSC (By pass and Enable) Alternate Function mapping */ +#define GPIO_AF0_OSC32 ((uint8_t)0x00) /*!< OSC32 (By pass and Enable) Alternate Function mapping */ +#define GPIO_AF0_SWJ ((uint8_t)0x00) /*!< SWJ (SWD) Alternate Function mapping */ +#define GPIO_AF0_SPI1 ((uint8_t)0x00) /*!< SPI1 Alternate Function mapping */ +#define GPIO_AF0_SPI2 ((uint8_t)0x00) /*!< SPI2 Alternate Function mapping */ +#define GPIO_AF0_TIM14 ((uint8_t)0x00) /*!< TIM14 Alternate Function mapping */ +#define GPIO_AF0_USART1 ((uint8_t)0x00) /*!< USART1 Alternate Function mapping */ +#define GPIO_AF0_USART2 ((uint8_t)0x00) /*!< USART2 Alternate Function mapping */ +#define GPIO_AF0_USART3 ((uint8_t)0x00) /*!< USART3 Alternate Function mapping */ + +/** + * @brief AF 1 selection + */ +#define GPIO_AF1_IR ((uint8_t)0x01) /*!< IR Alternate Function mapping */ +#define GPIO_AF1_OSC ((uint8_t)0x01) /*!< OSC (By pass and Enable) Alternate Function mapping */ +#define GPIO_AF1_SPI1 ((uint8_t)0x01) /*!< SPI2 Alternate Function mapping */ +#define GPIO_AF1_SPI2 ((uint8_t)0x01) /*!< SPI2 Alternate Function mapping */ +#define GPIO_AF1_TIM1 ((uint8_t)0x01) /*!< TIM1 Alternate Function mapping */ +#define GPIO_AF1_TIM3 ((uint8_t)0x01) /*!< TIM3 Alternate Function mapping */ +#define GPIO_AF1_USART1 ((uint8_t)0x01) /*!< USART1 Alternate Function mapping */ +#define GPIO_AF1_USART2 ((uint8_t)0x01) /*!< USART2 Alternate Function mapping */ +#define GPIO_AF1_USART4 ((uint8_t)0x01) /*!< USART4 Alternate Function mapping */ + +/** + * @brief AF 2 selection + */ +#define GPIO_AF2_TIM1 ((uint8_t)0x02) /*!< TIM1 Alternate Function mapping */ +#define GPIO_AF2_TIM14 ((uint8_t)0x02) /*!< TIM14 Alternate Function mapping */ +#define GPIO_AF2_TIM15 ((uint8_t)0x02) /*!< TIM15 Alternate Function mapping */ +#define GPIO_AF2_TIM16 ((uint8_t)0x02) /*!< TIM16 Alternate Function mapping */ +#define GPIO_AF2_TIM17 ((uint8_t)0x02) /*!< TIM17 Alternate Function mapping */ + +/** + * @brief AF 3 selection + */ + +/** + * @brief AF 4 selection + */ +#define GPIO_AF4_SPI2 ((uint8_t)0x04) /*!< SPI2 Alternate Function mapping */ +#define GPIO_AF4_TIM14 ((uint8_t)0x04) /*!< TIM14 Alternate Function mapping */ +#define GPIO_AF4_TIM15 ((uint8_t)0x04) /*!< TIM15 Alternate Function mapping */ +#define GPIO_AF4_USART1 ((uint8_t)0x04) /*!< USART1 Alternate Function mapping */ +#define GPIO_AF4_USART3 ((uint8_t)0x04) /*!< USART3 Alternate Function mapping */ +#define GPIO_AF4_USART4 ((uint8_t)0x04) /*!< USART4 Alternate Function mapping */ + +/** + * @brief AF 5 selection + */ +#define GPIO_AF5_SPI1 ((uint8_t)0x05) /*!< SPI1 Alternate Function mapping */ +#define GPIO_AF5_SPI2 ((uint8_t)0x05) /*!< SPI2 Alternate Function mapping */ +#define GPIO_AF5_TIM1 ((uint8_t)0x05) /*!< TIM1 Alternate Function mapping */ +#define GPIO_AF5_TIM15 ((uint8_t)0x05) /*!< TIM15 Alternate Function mapping */ +#define GPIO_AF5_TIM16 ((uint8_t)0x05) /*!< TIM16 Alternate Function mapping */ +#define GPIO_AF5_TIM17 ((uint8_t)0x05) /*!< TIM17 Alternate Function mapping */ +#define GPIO_AF5_USART3 ((uint8_t)0x05) /*!< USART3 Alternate Function mapping */ + +/** + * @brief AF 6 selection + */ +#define GPIO_AF6_I2C1 ((uint8_t)0x06) /*!< I2C1 Alternate Function mapping */ +#define GPIO_AF6_I2C2 ((uint8_t)0x06) /*!< I2C2 Alternate Function mapping */ + +/** + * @brief AF 7 selection + */ +#define GPIO_AF7_EVENTOUT ((uint8_t)0x07) /*!< EVENTOUT Alternate Function mapping */ + +#define IS_GPIO_AF(AF) ((AF) <= (uint8_t)0x07) + +#endif /* STM32G070xx */ + +#if defined (STM32G051xx) || defined (STM32G061xx) +/*------------------------- STM32G061xx / STM32G051xx ------------------------*/ +/** + * @brief AF 0 selection + */ +#define GPIO_AF0_EVENTOUT ((uint8_t)0x00) /*!< EVENTOUT Alternate Function mapping */ +#define GPIO_AF0_IR ((uint8_t)0x00) /*!< IR Alternate Function mapping */ +#define GPIO_AF0_MCO ((uint8_t)0x00) /*!< MCO (MCO1) Alternate Function mapping */ +#define GPIO_AF0_OSC ((uint8_t)0x00) /*!< OSC (By pass and Enable) Alternate Function mapping */ +#define GPIO_AF0_OSC32 ((uint8_t)0x00) /*!< OSC32 (By pass and Enable) Alternate Function mapping */ +#define GPIO_AF0_SWJ ((uint8_t)0x00) /*!< SWJ (SWD) Alternate Function mapping */ +#define GPIO_AF0_SPI1 ((uint8_t)0x00) /*!< SPI1 Alternate Function mapping */ +#define GPIO_AF0_SPI2 ((uint8_t)0x00) /*!< SPI2 Alternate Function mapping */ +#define GPIO_AF0_TIM14 ((uint8_t)0x00) /*!< TIM14 Alternate Function mapping */ +#define GPIO_AF0_USART1 ((uint8_t)0x00) /*!< USART1 Alternate Function mapping */ +#define GPIO_AF0_USART2 ((uint8_t)0x00) /*!< USART2 Alternate Function mapping */ + +/** + * @brief AF 1 selection + */ +#define GPIO_AF1_IR ((uint8_t)0x01) /*!< IR Alternate Function mapping */ +#define GPIO_AF1_LPUART1 ((uint8_t)0x01) /*!< LPUART1 Alternate Function mapping */ +#define GPIO_AF1_OSC ((uint8_t)0x01) /*!< OSC (By pass and Enable) Alternate Function mapping */ +#define GPIO_AF1_SPI2 ((uint8_t)0x01) /*!< SPI2 Alternate Function mapping */ +#define GPIO_AF1_TIM1 ((uint8_t)0x01) /*!< TIM1 Alternate Function mapping */ +#define GPIO_AF1_TIM3 ((uint8_t)0x01) /*!< TIM3 Alternate Function mapping */ +#define GPIO_AF1_USART1 ((uint8_t)0x01) /*!< USART1 Alternate Function mapping */ +#define GPIO_AF1_USART2 ((uint8_t)0x01) /*!< USART2 Alternate Function mapping */ + +/** + * @brief AF 2 selection + */ +#define GPIO_AF2_TIM1 ((uint8_t)0x02) /*!< TIM1 Alternate Function mapping */ +#define GPIO_AF2_TIM2 ((uint8_t)0x02) /*!< TIM2 Alternate Function mapping */ +#define GPIO_AF2_TIM14 ((uint8_t)0x02) /*!< TIM14 Alternate Function mapping */ +#define GPIO_AF2_TIM15 ((uint8_t)0x02) /*!< TIM15 Alternate Function mapping */ +#define GPIO_AF2_TIM16 ((uint8_t)0x02) /*!< TIM16 Alternate Function mapping */ +#define GPIO_AF2_TIM17 ((uint8_t)0x02) /*!< TIM17 Alternate Function mapping */ + +/** + * @brief AF 3 selection + */ + +/** + * @brief AF 4 selection + */ +#define GPIO_AF4_SPI2 ((uint8_t)0x04) /*!< SPI2 Alternate Function mapping */ +#define GPIO_AF4_TIM14 ((uint8_t)0x04) /*!< TIM14 Alternate Function mapping */ +#define GPIO_AF4_TIM15 ((uint8_t)0x04) /*!< TIM15 Alternate Function mapping */ +#define GPIO_AF4_USART1 ((uint8_t)0x04) /*!< USART1 Alternate Function mapping */ + +/** + * @brief AF 5 selection + */ +#define GPIO_AF5_LPTIM1 ((uint8_t)0x05) /*!< LPTIM1 Alternate Function mapping */ +#define GPIO_AF5_LPTIM2 ((uint8_t)0x05) /*!< LPTIM2 Alternate Function mapping */ +#define GPIO_AF5_SPI1 ((uint8_t)0x05) /*!< SPI1 Alternate Function mapping */ +#define GPIO_AF5_SPI2 ((uint8_t)0x05) /*!< SPI2 Alternate Function mapping */ +#define GPIO_AF5_TIM1 ((uint8_t)0x05) /*!< TIM1 Alternate Function mapping */ +#define GPIO_AF5_TIM15 ((uint8_t)0x05) /*!< TIM15 Alternate Function mapping */ +#define GPIO_AF5_TIM16 ((uint8_t)0x05) /*!< TIM16 Alternate Function mapping */ +#define GPIO_AF5_TIM17 ((uint8_t)0x05) /*!< TIM17 Alternate Function mapping */ + +/** + * @brief AF 6 selection + */ +#define GPIO_AF6_I2C1 ((uint8_t)0x06) /*!< I2C1 Alternate Function mapping */ +#define GPIO_AF6_I2C2 ((uint8_t)0x06) /*!< I2C2 Alternate Function mapping */ +#define GPIO_AF6_LPUART1 ((uint8_t)0x06) /*!< LPUART1 Alternate Function mapping */ + +/** + * @brief AF 7 selection + */ +#define GPIO_AF7_COMP1 ((uint8_t)0x07) /*!< COMP1 Alternate Function mapping */ +#define GPIO_AF7_COMP2 ((uint8_t)0x07) /*!< COMP2 Alternate Function mapping */ +#define GPIO_AF7_EVENTOUT ((uint8_t)0x07) /*!< EVENTOUT Alternate Function mapping */ + +#define IS_GPIO_AF(AF) ((AF) <= (uint8_t)0x07) + +#endif /* STM32G051xx || STM32G061xx */ + +#if defined (STM32G050xx) +/*------------------------- STM32G050xx --------------------------------------*/ +/** + * @brief AF 0 selection + */ +#define GPIO_AF0_EVENTOUT ((uint8_t)0x00) /*!< EVENTOUT Alternate Function mapping */ +#define GPIO_AF0_IR ((uint8_t)0x00) /*!< IR Alternate Function mapping */ +#define GPIO_AF0_MCO ((uint8_t)0x00) /*!< MCO (MCO1) Alternate Function mapping */ +#define GPIO_AF0_OSC ((uint8_t)0x00) /*!< OSC (By pass and Enable) Alternate Function mapping */ +#define GPIO_AF0_OSC32 ((uint8_t)0x00) /*!< OSC32 (By pass and Enable) Alternate Function mapping */ +#define GPIO_AF0_SWJ ((uint8_t)0x00) /*!< SWJ (SWD) Alternate Function mapping */ +#define GPIO_AF0_SPI1 ((uint8_t)0x00) /*!< SPI1 Alternate Function mapping */ +#define GPIO_AF0_SPI2 ((uint8_t)0x00) /*!< SPI2 Alternate Function mapping */ +#define GPIO_AF0_TIM14 ((uint8_t)0x00) /*!< TIM14 Alternate Function mapping */ +#define GPIO_AF0_USART1 ((uint8_t)0x00) /*!< USART1 Alternate Function mapping */ +#define GPIO_AF0_USART2 ((uint8_t)0x00) /*!< USART2 Alternate Function mapping */ + +/** + * @brief AF 1 selection + */ +#define GPIO_AF1_IR ((uint8_t)0x01) /*!< IR Alternate Function mapping */ +#define GPIO_AF1_OSC ((uint8_t)0x01) /*!< OSC (By pass and Enable) Alternate Function mapping */ +#define GPIO_AF1_SPI2 ((uint8_t)0x01) /*!< SPI2 Alternate Function mapping */ +#define GPIO_AF1_TIM1 ((uint8_t)0x01) /*!< TIM1 Alternate Function mapping */ +#define GPIO_AF1_TIM3 ((uint8_t)0x01) /*!< TIM3 Alternate Function mapping */ +#define GPIO_AF1_USART1 ((uint8_t)0x01) /*!< USART1 Alternate Function mapping */ +#define GPIO_AF1_USART2 ((uint8_t)0x01) /*!< USART2 Alternate Function mapping */ + +/** + * @brief AF 2 selection + */ +#define GPIO_AF2_TIM1 ((uint8_t)0x02) /*!< TIM1 Alternate Function mapping */ +#define GPIO_AF2_TIM14 ((uint8_t)0x02) /*!< TIM14 Alternate Function mapping */ +#define GPIO_AF2_TIM15 ((uint8_t)0x02) /*!< TIM15 Alternate Function mapping */ +#define GPIO_AF2_TIM16 ((uint8_t)0x02) /*!< TIM16 Alternate Function mapping */ +#define GPIO_AF2_TIM17 ((uint8_t)0x02) /*!< TIM17 Alternate Function mapping */ + +/** + * @brief AF 3 selection + */ + +/** + * @brief AF 4 selection + */ +#define GPIO_AF4_SPI2 ((uint8_t)0x04) /*!< SPI2 Alternate Function mapping */ +#define GPIO_AF4_TIM14 ((uint8_t)0x04) /*!< TIM14 Alternate Function mapping */ +#define GPIO_AF4_TIM15 ((uint8_t)0x04) /*!< TIM15 Alternate Function mapping */ +#define GPIO_AF4_USART1 ((uint8_t)0x04) /*!< USART1 Alternate Function mapping */ + +/** + * @brief AF 5 selection + */ +#define GPIO_AF5_SPI1 ((uint8_t)0x05) /*!< SPI1 Alternate Function mapping */ +#define GPIO_AF5_SPI2 ((uint8_t)0x05) /*!< SPI2 Alternate Function mapping */ +#define GPIO_AF5_TIM1 ((uint8_t)0x05) /*!< TIM1 Alternate Function mapping */ +#define GPIO_AF5_TIM15 ((uint8_t)0x05) /*!< TIM15 Alternate Function mapping */ +#define GPIO_AF5_TIM16 ((uint8_t)0x05) /*!< TIM16 Alternate Function mapping */ +#define GPIO_AF5_TIM17 ((uint8_t)0x05) /*!< TIM17 Alternate Function mapping */ + +/** + * @brief AF 6 selection + */ +#define GPIO_AF6_I2C1 ((uint8_t)0x06) /*!< I2C1 Alternate Function mapping */ +#define GPIO_AF6_I2C2 ((uint8_t)0x06) /*!< I2C2 Alternate Function mapping */ + +/** + * @brief AF 7 selection + */ +#define GPIO_AF7_EVENTOUT ((uint8_t)0x07) /*!< EVENTOUT Alternate Function mapping */ + +#define IS_GPIO_AF(AF) ((AF) <= (uint8_t)0x07) + +#endif /* STM32G050xx */ + +#if defined (STM32G031xx) || defined (STM32G041xx) +/*------------------------- STM32G041xx / STM32G031xx ------------------------*/ +/** + * @brief AF 0 selection + */ +#define GPIO_AF0_EVENTOUT ((uint8_t)0x00) /*!< EVENTOUT Alternate Function mapping */ +#define GPIO_AF0_IR ((uint8_t)0x00) /*!< IR Alternate Function mapping */ +#define GPIO_AF0_MCO ((uint8_t)0x00) /*!< MCO (MCO1) Alternate Function mapping */ +#define GPIO_AF0_OSC ((uint8_t)0x00) /*!< OSC (By pass and Enable) Alternate Function mapping */ +#define GPIO_AF0_OSC32 ((uint8_t)0x00) /*!< OSC32 (By pass and Enable) Alternate Function mapping */ +#define GPIO_AF0_SWJ ((uint8_t)0x00) /*!< SWJ (SWD) Alternate Function mapping */ +#define GPIO_AF0_SPI1 ((uint8_t)0x00) /*!< SPI1 Alternate Function mapping */ +#define GPIO_AF0_SPI2 ((uint8_t)0x00) /*!< SPI2 Alternate Function mapping */ +#define GPIO_AF0_TIM14 ((uint8_t)0x00) /*!< TIM14 Alternate Function mapping */ +#define GPIO_AF0_USART1 ((uint8_t)0x00) /*!< USART1 Alternate Function mapping */ +#define GPIO_AF0_USART2 ((uint8_t)0x00) /*!< USART2 Alternate Function mapping */ + +/** + * @brief AF 1 selection + */ +#define GPIO_AF1_IR ((uint8_t)0x01) /*!< IR Alternate Function mapping */ +#define GPIO_AF1_LPUART1 ((uint8_t)0x01) /*!< LPUART1 Alternate Function mapping */ +#define GPIO_AF1_OSC ((uint8_t)0x01) /*!< OSC (By pass and Enable) Alternate Function mapping */ +#define GPIO_AF1_SPI2 ((uint8_t)0x01) /*!< SPI2 Alternate Function mapping */ +#define GPIO_AF1_TIM1 ((uint8_t)0x01) /*!< TIM1 Alternate Function mapping */ +#define GPIO_AF1_TIM3 ((uint8_t)0x01) /*!< TIM3 Alternate Function mapping */ +#define GPIO_AF1_USART1 ((uint8_t)0x01) /*!< USART1 Alternate Function mapping */ +#define GPIO_AF1_USART2 ((uint8_t)0x01) /*!< USART2 Alternate Function mapping */ + +/** + * @brief AF 2 selection + */ +#define GPIO_AF2_TIM1 ((uint8_t)0x02) /*!< TIM1 Alternate Function mapping */ +#define GPIO_AF2_TIM2 ((uint8_t)0x02) /*!< TIM2 Alternate Function mapping */ +#define GPIO_AF2_TIM14 ((uint8_t)0x02) /*!< TIM14 Alternate Function mapping */ +#define GPIO_AF2_TIM16 ((uint8_t)0x02) /*!< TIM16 Alternate Function mapping */ +#define GPIO_AF2_TIM17 ((uint8_t)0x02) /*!< TIM17 Alternate Function mapping */ + +/** + * @brief AF 3 selection + */ + +/** + * @brief AF 4 selection + */ +#define GPIO_AF4_SPI2 ((uint8_t)0x04) /*!< SPI2 Alternate Function mapping */ +#define GPIO_AF4_TIM14 ((uint8_t)0x04) /*!< TIM14 Alternate Function mapping */ +#define GPIO_AF4_USART1 ((uint8_t)0x04) /*!< USART1 Alternate Function mapping */ + +/** + * @brief AF 5 selection + */ +#define GPIO_AF5_LPTIM1 ((uint8_t)0x05) /*!< LPTIM1 Alternate Function mapping */ +#define GPIO_AF5_LPTIM2 ((uint8_t)0x05) /*!< LPTIM2 Alternate Function mapping */ +#define GPIO_AF5_SPI1 ((uint8_t)0x05) /*!< SPI1 Alternate Function mapping */ +#define GPIO_AF5_SPI2 ((uint8_t)0x05) /*!< SPI2 Alternate Function mapping */ +#define GPIO_AF5_TIM1 ((uint8_t)0x05) /*!< TIM1 Alternate Function mapping */ +#define GPIO_AF5_TIM16 ((uint8_t)0x05) /*!< TIM16 Alternate Function mapping */ +#define GPIO_AF5_TIM17 ((uint8_t)0x05) /*!< TIM17 Alternate Function mapping */ + +/** + * @brief AF 6 selection + */ +#define GPIO_AF6_I2C1 ((uint8_t)0x06) /*!< I2C1 Alternate Function mapping */ +#define GPIO_AF6_I2C2 ((uint8_t)0x06) /*!< I2C2 Alternate Function mapping */ +#define GPIO_AF6_LPUART1 ((uint8_t)0x06) /*!< LPUART1 Alternate Function mapping */ + +/** + * @brief AF 7 selection + */ +#define GPIO_AF7_EVENTOUT ((uint8_t)0x07) /*!< EVENTOUT Alternate Function mapping */ + +#define IS_GPIO_AF(AF) ((AF) <= (uint8_t)0x07) + +#endif /* STM32G031xx || STM32G041xx */ + +#if defined (STM32G030xx) +/*------------------------- STM32G030xx --------------------------------------*/ +/** + * @brief AF 0 selection + */ +#define GPIO_AF0_EVENTOUT ((uint8_t)0x00) /*!< EVENTOUT Alternate Function mapping */ +#define GPIO_AF0_IR ((uint8_t)0x00) /*!< IR Alternate Function mapping */ +#define GPIO_AF0_MCO ((uint8_t)0x00) /*!< MCO (MCO1) Alternate Function mapping */ +#define GPIO_AF0_OSC ((uint8_t)0x00) /*!< OSC (By pass and Enable) Alternate Function mapping */ +#define GPIO_AF0_OSC32 ((uint8_t)0x00) /*!< OSC32 (By pass and Enable) Alternate Function mapping */ +#define GPIO_AF0_SWJ ((uint8_t)0x00) /*!< SWJ (SWD) Alternate Function mapping */ +#define GPIO_AF0_SPI1 ((uint8_t)0x00) /*!< SPI1 Alternate Function mapping */ +#define GPIO_AF0_SPI2 ((uint8_t)0x00) /*!< SPI2 Alternate Function mapping */ +#define GPIO_AF0_TIM14 ((uint8_t)0x00) /*!< TIM14 Alternate Function mapping */ +#define GPIO_AF0_USART1 ((uint8_t)0x00) /*!< USART1 Alternate Function mapping */ +#define GPIO_AF0_USART2 ((uint8_t)0x00) /*!< USART2 Alternate Function mapping */ + +/** + * @brief AF 1 selection + */ +#define GPIO_AF1_IR ((uint8_t)0x01) /*!< IR Alternate Function mapping */ +#define GPIO_AF1_OSC ((uint8_t)0x01) /*!< OSC (By pass and Enable) Alternate Function mapping */ +#define GPIO_AF1_SPI2 ((uint8_t)0x01) /*!< SPI2 Alternate Function mapping */ +#define GPIO_AF1_TIM1 ((uint8_t)0x01) /*!< TIM1 Alternate Function mapping */ +#define GPIO_AF1_TIM3 ((uint8_t)0x01) /*!< TIM3 Alternate Function mapping */ +#define GPIO_AF1_USART1 ((uint8_t)0x01) /*!< USART1 Alternate Function mapping */ +#define GPIO_AF1_USART2 ((uint8_t)0x01) /*!< USART2 Alternate Function mapping */ + +/** + * @brief AF 2 selection + */ +#define GPIO_AF2_TIM1 ((uint8_t)0x02) /*!< TIM1 Alternate Function mapping */ +#define GPIO_AF2_TIM14 ((uint8_t)0x02) /*!< TIM14 Alternate Function mapping */ +#define GPIO_AF2_TIM16 ((uint8_t)0x02) /*!< TIM16 Alternate Function mapping */ +#define GPIO_AF2_TIM17 ((uint8_t)0x02) /*!< TIM17 Alternate Function mapping */ + +/** + * @brief AF 3 selection + */ + +/** + * @brief AF 4 selection + */ +#define GPIO_AF4_SPI2 ((uint8_t)0x04) /*!< SPI2 Alternate Function mapping */ +#define GPIO_AF4_TIM14 ((uint8_t)0x04) /*!< TIM14 Alternate Function mapping */ +#define GPIO_AF4_USART1 ((uint8_t)0x04) /*!< USART1 Alternate Function mapping */ + +/** + * @brief AF 5 selection + */ +#define GPIO_AF5_SPI1 ((uint8_t)0x05) /*!< SPI1 Alternate Function mapping */ +#define GPIO_AF5_SPI2 ((uint8_t)0x05) /*!< SPI2 Alternate Function mapping */ +#define GPIO_AF5_TIM1 ((uint8_t)0x05) /*!< TIM1 Alternate Function mapping */ +#define GPIO_AF5_TIM16 ((uint8_t)0x05) /*!< TIM16 Alternate Function mapping */ +#define GPIO_AF5_TIM17 ((uint8_t)0x05) /*!< TIM17 Alternate Function mapping */ + +/** + * @brief AF 6 selection + */ +#define GPIO_AF6_I2C1 ((uint8_t)0x06) /*!< I2C1 Alternate Function mapping */ +#define GPIO_AF6_I2C2 ((uint8_t)0x06) /*!< I2C2 Alternate Function mapping */ + +/** + * @brief AF 7 selection + */ +#define GPIO_AF7_EVENTOUT ((uint8_t)0x07) /*!< EVENTOUT Alternate Function mapping */ + +#define IS_GPIO_AF(AF) ((AF) <= (uint8_t)0x07) + +#endif /* STM32G030xx */ + +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup GPIOEx_Exported_Macros GPIOEx Exported Macros + * @{ + */ + +/** @defgroup GPIOEx_Get_Port_Index GPIOEx Get Port Index +* @{ + */ +#if defined(GPIOE) +#define GPIO_GET_INDEX(__GPIOx__) (((__GPIOx__) == (GPIOA))? 0uL :\ + ((__GPIOx__) == (GPIOB))? 1uL :\ + ((__GPIOx__) == (GPIOC))? 2uL :\ + ((__GPIOx__) == (GPIOD))? 3uL :\ + ((__GPIOx__) == (GPIOE))? 4uL : 5uL) +#else +#define GPIO_GET_INDEX(__GPIOx__) (((__GPIOx__) == (GPIOA))? 0uL :\ + ((__GPIOx__) == (GPIOB))? 1uL :\ + ((__GPIOx__) == (GPIOC))? 2uL :\ + ((__GPIOx__) == (GPIOD))? 3uL : 5uL) +#endif /* GPIOE */ + +/** + * @} + */ + +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32G0xx_HAL_GPIO_EX_H */ + diff --git a/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_i2c.h b/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_i2c.h new file mode 100644 index 0000000..9a7b222 --- /dev/null +++ b/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_i2c.h @@ -0,0 +1,839 @@ +/** + ****************************************************************************** + * @file stm32g0xx_hal_i2c.h + * @author MCD Application Team + * @brief Header file of I2C HAL module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2018 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32G0xx_HAL_I2C_H +#define STM32G0xx_HAL_I2C_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32g0xx_hal_def.h" + +/** @addtogroup STM32G0xx_HAL_Driver + * @{ + */ + +/** @addtogroup I2C + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ +/** @defgroup I2C_Exported_Types I2C Exported Types + * @{ + */ + +/** @defgroup I2C_Configuration_Structure_definition I2C Configuration Structure definition + * @brief I2C Configuration Structure definition + * @{ + */ +typedef struct +{ + uint32_t Timing; /*!< Specifies the I2C_TIMINGR_register value. + This parameter calculated by referring to I2C initialization section + in Reference manual */ + + uint32_t OwnAddress1; /*!< Specifies the first device own address. + This parameter can be a 7-bit or 10-bit address. */ + + uint32_t AddressingMode; /*!< Specifies if 7-bit or 10-bit addressing mode is selected. + This parameter can be a value of @ref I2C_ADDRESSING_MODE */ + + uint32_t DualAddressMode; /*!< Specifies if dual addressing mode is selected. + This parameter can be a value of @ref I2C_DUAL_ADDRESSING_MODE */ + + uint32_t OwnAddress2; /*!< Specifies the second device own address if dual addressing mode is selected + This parameter can be a 7-bit address. */ + + uint32_t OwnAddress2Masks; /*!< Specifies the acknowledge mask address second device own address if dual addressing + mode is selected. + This parameter can be a value of @ref I2C_OWN_ADDRESS2_MASKS */ + + uint32_t GeneralCallMode; /*!< Specifies if general call mode is selected. + This parameter can be a value of @ref I2C_GENERAL_CALL_ADDRESSING_MODE */ + + uint32_t NoStretchMode; /*!< Specifies if nostretch mode is selected. + This parameter can be a value of @ref I2C_NOSTRETCH_MODE */ + +} I2C_InitTypeDef; + +/** + * @} + */ + +/** @defgroup HAL_state_structure_definition HAL state structure definition + * @brief HAL State structure definition + * @note HAL I2C State value coding follow below described bitmap :\n + * b7-b6 Error information\n + * 00 : No Error\n + * 01 : Abort (Abort user request on going)\n + * 10 : Timeout\n + * 11 : Error\n + * b5 Peripheral initialization status\n + * 0 : Reset (peripheral not initialized)\n + * 1 : Init done (peripheral initialized and ready to use. HAL I2C Init function called)\n + * b4 (not used)\n + * x : Should be set to 0\n + * b3\n + * 0 : Ready or Busy (No Listen mode ongoing)\n + * 1 : Listen (peripheral in Address Listen Mode)\n + * b2 Intrinsic process state\n + * 0 : Ready\n + * 1 : Busy (peripheral busy with some configuration or internal operations)\n + * b1 Rx state\n + * 0 : Ready (no Rx operation ongoing)\n + * 1 : Busy (Rx operation ongoing)\n + * b0 Tx state\n + * 0 : Ready (no Tx operation ongoing)\n + * 1 : Busy (Tx operation ongoing) + * @{ + */ +typedef enum +{ + HAL_I2C_STATE_RESET = 0x00U, /*!< Peripheral is not yet Initialized */ + HAL_I2C_STATE_READY = 0x20U, /*!< Peripheral Initialized and ready for use */ + HAL_I2C_STATE_BUSY = 0x24U, /*!< An internal process is ongoing */ + HAL_I2C_STATE_BUSY_TX = 0x21U, /*!< Data Transmission process is ongoing */ + HAL_I2C_STATE_BUSY_RX = 0x22U, /*!< Data Reception process is ongoing */ + HAL_I2C_STATE_LISTEN = 0x28U, /*!< Address Listen Mode is ongoing */ + HAL_I2C_STATE_BUSY_TX_LISTEN = 0x29U, /*!< Address Listen Mode and Data Transmission + process is ongoing */ + HAL_I2C_STATE_BUSY_RX_LISTEN = 0x2AU, /*!< Address Listen Mode and Data Reception + process is ongoing */ + HAL_I2C_STATE_ABORT = 0x60U, /*!< Abort user request ongoing */ + HAL_I2C_STATE_TIMEOUT = 0xA0U, /*!< Timeout state */ + HAL_I2C_STATE_ERROR = 0xE0U /*!< Error */ + +} HAL_I2C_StateTypeDef; + +/** + * @} + */ + +/** @defgroup HAL_mode_structure_definition HAL mode structure definition + * @brief HAL Mode structure definition + * @note HAL I2C Mode value coding follow below described bitmap :\n + * b7 (not used)\n + * x : Should be set to 0\n + * b6\n + * 0 : None\n + * 1 : Memory (HAL I2C communication is in Memory Mode)\n + * b5\n + * 0 : None\n + * 1 : Slave (HAL I2C communication is in Slave Mode)\n + * b4\n + * 0 : None\n + * 1 : Master (HAL I2C communication is in Master Mode)\n + * b3-b2-b1-b0 (not used)\n + * xxxx : Should be set to 0000 + * @{ + */ +typedef enum +{ + HAL_I2C_MODE_NONE = 0x00U, /*!< No I2C communication on going */ + HAL_I2C_MODE_MASTER = 0x10U, /*!< I2C communication is in Master Mode */ + HAL_I2C_MODE_SLAVE = 0x20U, /*!< I2C communication is in Slave Mode */ + HAL_I2C_MODE_MEM = 0x40U /*!< I2C communication is in Memory Mode */ + +} HAL_I2C_ModeTypeDef; + +/** + * @} + */ + +/** @defgroup I2C_Error_Code_definition I2C Error Code definition + * @brief I2C Error Code definition + * @{ + */ +#define HAL_I2C_ERROR_NONE (0x00000000U) /*!< No error */ +#define HAL_I2C_ERROR_BERR (0x00000001U) /*!< BERR error */ +#define HAL_I2C_ERROR_ARLO (0x00000002U) /*!< ARLO error */ +#define HAL_I2C_ERROR_AF (0x00000004U) /*!< ACKF error */ +#define HAL_I2C_ERROR_OVR (0x00000008U) /*!< OVR error */ +#define HAL_I2C_ERROR_DMA (0x00000010U) /*!< DMA transfer error */ +#define HAL_I2C_ERROR_TIMEOUT (0x00000020U) /*!< Timeout error */ +#define HAL_I2C_ERROR_SIZE (0x00000040U) /*!< Size Management error */ +#define HAL_I2C_ERROR_DMA_PARAM (0x00000080U) /*!< DMA Parameter Error */ +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) +#define HAL_I2C_ERROR_INVALID_CALLBACK (0x00000100U) /*!< Invalid Callback error */ +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ +#define HAL_I2C_ERROR_INVALID_PARAM (0x00000200U) /*!< Invalid Parameters error */ +/** + * @} + */ + +/** @defgroup I2C_handle_Structure_definition I2C handle Structure definition + * @brief I2C handle Structure definition + * @{ + */ +typedef struct __I2C_HandleTypeDef +{ + I2C_TypeDef *Instance; /*!< I2C registers base address */ + + I2C_InitTypeDef Init; /*!< I2C communication parameters */ + + uint8_t *pBuffPtr; /*!< Pointer to I2C transfer buffer */ + + uint16_t XferSize; /*!< I2C transfer size */ + + __IO uint16_t XferCount; /*!< I2C transfer counter */ + + __IO uint32_t XferOptions; /*!< I2C sequantial transfer options, this parameter can + be a value of @ref I2C_XFEROPTIONS */ + + __IO uint32_t PreviousState; /*!< I2C communication Previous state */ + + HAL_StatusTypeDef(*XferISR)(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, uint32_t ITSources); + /*!< I2C transfer IRQ handler function pointer */ + + DMA_HandleTypeDef *hdmatx; /*!< I2C Tx DMA handle parameters */ + + DMA_HandleTypeDef *hdmarx; /*!< I2C Rx DMA handle parameters */ + + HAL_LockTypeDef Lock; /*!< I2C locking object */ + + __IO HAL_I2C_StateTypeDef State; /*!< I2C communication state */ + + __IO HAL_I2C_ModeTypeDef Mode; /*!< I2C communication mode */ + + __IO uint32_t ErrorCode; /*!< I2C Error code */ + + __IO uint32_t AddrEventCount; /*!< I2C Address Event counter */ + + __IO uint32_t Devaddress; /*!< I2C Target device address */ + + __IO uint32_t Memaddress; /*!< I2C Target memory address */ + +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) + void (* MasterTxCpltCallback)(struct __I2C_HandleTypeDef *hi2c); + /*!< I2C Master Tx Transfer completed callback */ + void (* MasterRxCpltCallback)(struct __I2C_HandleTypeDef *hi2c); + /*!< I2C Master Rx Transfer completed callback */ + void (* SlaveTxCpltCallback)(struct __I2C_HandleTypeDef *hi2c); + /*!< I2C Slave Tx Transfer completed callback */ + void (* SlaveRxCpltCallback)(struct __I2C_HandleTypeDef *hi2c); + /*!< I2C Slave Rx Transfer completed callback */ + void (* ListenCpltCallback)(struct __I2C_HandleTypeDef *hi2c); + /*!< I2C Listen Complete callback */ + void (* MemTxCpltCallback)(struct __I2C_HandleTypeDef *hi2c); + /*!< I2C Memory Tx Transfer completed callback */ + void (* MemRxCpltCallback)(struct __I2C_HandleTypeDef *hi2c); + /*!< I2C Memory Rx Transfer completed callback */ + void (* ErrorCallback)(struct __I2C_HandleTypeDef *hi2c); + /*!< I2C Error callback */ + void (* AbortCpltCallback)(struct __I2C_HandleTypeDef *hi2c); + /*!< I2C Abort callback */ + + void (* AddrCallback)(struct __I2C_HandleTypeDef *hi2c, uint8_t TransferDirection, uint16_t AddrMatchCode); + /*!< I2C Slave Address Match callback */ + + void (* MspInitCallback)(struct __I2C_HandleTypeDef *hi2c); + /*!< I2C Msp Init callback */ + void (* MspDeInitCallback)(struct __I2C_HandleTypeDef *hi2c); + /*!< I2C Msp DeInit callback */ + +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ +} I2C_HandleTypeDef; + +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) +/** + * @brief HAL I2C Callback ID enumeration definition + */ +typedef enum +{ + HAL_I2C_MASTER_TX_COMPLETE_CB_ID = 0x00U, /*!< I2C Master Tx Transfer completed callback ID */ + HAL_I2C_MASTER_RX_COMPLETE_CB_ID = 0x01U, /*!< I2C Master Rx Transfer completed callback ID */ + HAL_I2C_SLAVE_TX_COMPLETE_CB_ID = 0x02U, /*!< I2C Slave Tx Transfer completed callback ID */ + HAL_I2C_SLAVE_RX_COMPLETE_CB_ID = 0x03U, /*!< I2C Slave Rx Transfer completed callback ID */ + HAL_I2C_LISTEN_COMPLETE_CB_ID = 0x04U, /*!< I2C Listen Complete callback ID */ + HAL_I2C_MEM_TX_COMPLETE_CB_ID = 0x05U, /*!< I2C Memory Tx Transfer callback ID */ + HAL_I2C_MEM_RX_COMPLETE_CB_ID = 0x06U, /*!< I2C Memory Rx Transfer completed callback ID */ + HAL_I2C_ERROR_CB_ID = 0x07U, /*!< I2C Error callback ID */ + HAL_I2C_ABORT_CB_ID = 0x08U, /*!< I2C Abort callback ID */ + + HAL_I2C_MSPINIT_CB_ID = 0x09U, /*!< I2C Msp Init callback ID */ + HAL_I2C_MSPDEINIT_CB_ID = 0x0AU /*!< I2C Msp DeInit callback ID */ + +} HAL_I2C_CallbackIDTypeDef; + +/** + * @brief HAL I2C Callback pointer definition + */ +typedef void (*pI2C_CallbackTypeDef)(I2C_HandleTypeDef *hi2c); +/*!< pointer to an I2C callback function */ +typedef void (*pI2C_AddrCallbackTypeDef)(I2C_HandleTypeDef *hi2c, uint8_t TransferDirection, + uint16_t AddrMatchCode); +/*!< pointer to an I2C Address Match callback function */ + +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ +/** + * @} + */ + +/** + * @} + */ +/* Exported constants --------------------------------------------------------*/ + +/** @defgroup I2C_Exported_Constants I2C Exported Constants + * @{ + */ + +/** @defgroup I2C_XFEROPTIONS I2C Sequential Transfer Options + * @{ + */ +#define I2C_FIRST_FRAME ((uint32_t)I2C_SOFTEND_MODE) +#define I2C_FIRST_AND_NEXT_FRAME ((uint32_t)(I2C_RELOAD_MODE | I2C_SOFTEND_MODE)) +#define I2C_NEXT_FRAME ((uint32_t)(I2C_RELOAD_MODE | I2C_SOFTEND_MODE)) +#define I2C_FIRST_AND_LAST_FRAME ((uint32_t)I2C_AUTOEND_MODE) +#define I2C_LAST_FRAME ((uint32_t)I2C_AUTOEND_MODE) +#define I2C_LAST_FRAME_NO_STOP ((uint32_t)I2C_SOFTEND_MODE) + +/* List of XferOptions in usage of : + * 1- Restart condition in all use cases (direction change or not) + */ +#define I2C_OTHER_FRAME (0x000000AAU) +#define I2C_OTHER_AND_LAST_FRAME (0x0000AA00U) +/** + * @} + */ + +/** @defgroup I2C_ADDRESSING_MODE I2C Addressing Mode + * @{ + */ +#define I2C_ADDRESSINGMODE_7BIT (0x00000001U) +#define I2C_ADDRESSINGMODE_10BIT (0x00000002U) +/** + * @} + */ + +/** @defgroup I2C_DUAL_ADDRESSING_MODE I2C Dual Addressing Mode + * @{ + */ +#define I2C_DUALADDRESS_DISABLE (0x00000000U) +#define I2C_DUALADDRESS_ENABLE I2C_OAR2_OA2EN +/** + * @} + */ + +/** @defgroup I2C_OWN_ADDRESS2_MASKS I2C Own Address2 Masks + * @{ + */ +#define I2C_OA2_NOMASK ((uint8_t)0x00U) +#define I2C_OA2_MASK01 ((uint8_t)0x01U) +#define I2C_OA2_MASK02 ((uint8_t)0x02U) +#define I2C_OA2_MASK03 ((uint8_t)0x03U) +#define I2C_OA2_MASK04 ((uint8_t)0x04U) +#define I2C_OA2_MASK05 ((uint8_t)0x05U) +#define I2C_OA2_MASK06 ((uint8_t)0x06U) +#define I2C_OA2_MASK07 ((uint8_t)0x07U) +/** + * @} + */ + +/** @defgroup I2C_GENERAL_CALL_ADDRESSING_MODE I2C General Call Addressing Mode + * @{ + */ +#define I2C_GENERALCALL_DISABLE (0x00000000U) +#define I2C_GENERALCALL_ENABLE I2C_CR1_GCEN +/** + * @} + */ + +/** @defgroup I2C_NOSTRETCH_MODE I2C No-Stretch Mode + * @{ + */ +#define I2C_NOSTRETCH_DISABLE (0x00000000U) +#define I2C_NOSTRETCH_ENABLE I2C_CR1_NOSTRETCH +/** + * @} + */ + +/** @defgroup I2C_MEMORY_ADDRESS_SIZE I2C Memory Address Size + * @{ + */ +#define I2C_MEMADD_SIZE_8BIT (0x00000001U) +#define I2C_MEMADD_SIZE_16BIT (0x00000002U) +/** + * @} + */ + +/** @defgroup I2C_XFERDIRECTION I2C Transfer Direction Master Point of View + * @{ + */ +#define I2C_DIRECTION_TRANSMIT (0x00000000U) +#define I2C_DIRECTION_RECEIVE (0x00000001U) +/** + * @} + */ + +/** @defgroup I2C_RELOAD_END_MODE I2C Reload End Mode + * @{ + */ +#define I2C_RELOAD_MODE I2C_CR2_RELOAD +#define I2C_AUTOEND_MODE I2C_CR2_AUTOEND +#define I2C_SOFTEND_MODE (0x00000000U) +/** + * @} + */ + +/** @defgroup I2C_START_STOP_MODE I2C Start or Stop Mode + * @{ + */ +#define I2C_NO_STARTSTOP (0x00000000U) +#define I2C_GENERATE_STOP (uint32_t)(0x80000000U | I2C_CR2_STOP) +#define I2C_GENERATE_START_READ (uint32_t)(0x80000000U | I2C_CR2_START | I2C_CR2_RD_WRN) +#define I2C_GENERATE_START_WRITE (uint32_t)(0x80000000U | I2C_CR2_START) +/** + * @} + */ + +/** @defgroup I2C_Interrupt_configuration_definition I2C Interrupt configuration definition + * @brief I2C Interrupt definition + * Elements values convention: 0xXXXXXXXX + * - XXXXXXXX : Interrupt control mask + * @{ + */ +#define I2C_IT_ERRI I2C_CR1_ERRIE +#define I2C_IT_TCI I2C_CR1_TCIE +#define I2C_IT_STOPI I2C_CR1_STOPIE +#define I2C_IT_NACKI I2C_CR1_NACKIE +#define I2C_IT_ADDRI I2C_CR1_ADDRIE +#define I2C_IT_RXI I2C_CR1_RXIE +#define I2C_IT_TXI I2C_CR1_TXIE +/** + * @} + */ + +/** @defgroup I2C_Flag_definition I2C Flag definition + * @{ + */ +#define I2C_FLAG_TXE I2C_ISR_TXE +#define I2C_FLAG_TXIS I2C_ISR_TXIS +#define I2C_FLAG_RXNE I2C_ISR_RXNE +#define I2C_FLAG_ADDR I2C_ISR_ADDR +#define I2C_FLAG_AF I2C_ISR_NACKF +#define I2C_FLAG_STOPF I2C_ISR_STOPF +#define I2C_FLAG_TC I2C_ISR_TC +#define I2C_FLAG_TCR I2C_ISR_TCR +#define I2C_FLAG_BERR I2C_ISR_BERR +#define I2C_FLAG_ARLO I2C_ISR_ARLO +#define I2C_FLAG_OVR I2C_ISR_OVR +#define I2C_FLAG_PECERR I2C_ISR_PECERR +#define I2C_FLAG_TIMEOUT I2C_ISR_TIMEOUT +#define I2C_FLAG_ALERT I2C_ISR_ALERT +#define I2C_FLAG_BUSY I2C_ISR_BUSY +#define I2C_FLAG_DIR I2C_ISR_DIR +/** + * @} + */ + +/** + * @} + */ + +/* Exported macros -----------------------------------------------------------*/ + +/** @defgroup I2C_Exported_Macros I2C Exported Macros + * @{ + */ + +/** @brief Reset I2C handle state. + * @param __HANDLE__ specifies the I2C Handle. + * @retval None + */ +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) +#define __HAL_I2C_RESET_HANDLE_STATE(__HANDLE__) do{ \ + (__HANDLE__)->State = HAL_I2C_STATE_RESET; \ + (__HANDLE__)->MspInitCallback = NULL; \ + (__HANDLE__)->MspDeInitCallback = NULL; \ + } while(0) +#else +#define __HAL_I2C_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_I2C_STATE_RESET) +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + +/** @brief Enable the specified I2C interrupt. + * @param __HANDLE__ specifies the I2C Handle. + * @param __INTERRUPT__ specifies the interrupt source to enable. + * This parameter can be one of the following values: + * @arg @ref I2C_IT_ERRI Errors interrupt enable + * @arg @ref I2C_IT_TCI Transfer complete interrupt enable + * @arg @ref I2C_IT_STOPI STOP detection interrupt enable + * @arg @ref I2C_IT_NACKI NACK received interrupt enable + * @arg @ref I2C_IT_ADDRI Address match interrupt enable + * @arg @ref I2C_IT_RXI RX interrupt enable + * @arg @ref I2C_IT_TXI TX interrupt enable + * + * @retval None + */ +#define __HAL_I2C_ENABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->CR1 |= (__INTERRUPT__)) + +/** @brief Disable the specified I2C interrupt. + * @param __HANDLE__ specifies the I2C Handle. + * @param __INTERRUPT__ specifies the interrupt source to disable. + * This parameter can be one of the following values: + * @arg @ref I2C_IT_ERRI Errors interrupt enable + * @arg @ref I2C_IT_TCI Transfer complete interrupt enable + * @arg @ref I2C_IT_STOPI STOP detection interrupt enable + * @arg @ref I2C_IT_NACKI NACK received interrupt enable + * @arg @ref I2C_IT_ADDRI Address match interrupt enable + * @arg @ref I2C_IT_RXI RX interrupt enable + * @arg @ref I2C_IT_TXI TX interrupt enable + * + * @retval None + */ +#define __HAL_I2C_DISABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->CR1 &= (~(__INTERRUPT__))) + +/** @brief Check whether the specified I2C interrupt source is enabled or not. + * @param __HANDLE__ specifies the I2C Handle. + * @param __INTERRUPT__ specifies the I2C interrupt source to check. + * This parameter can be one of the following values: + * @arg @ref I2C_IT_ERRI Errors interrupt enable + * @arg @ref I2C_IT_TCI Transfer complete interrupt enable + * @arg @ref I2C_IT_STOPI STOP detection interrupt enable + * @arg @ref I2C_IT_NACKI NACK received interrupt enable + * @arg @ref I2C_IT_ADDRI Address match interrupt enable + * @arg @ref I2C_IT_RXI RX interrupt enable + * @arg @ref I2C_IT_TXI TX interrupt enable + * + * @retval The new state of __INTERRUPT__ (SET or RESET). + */ +#define __HAL_I2C_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((((__HANDLE__)->Instance->CR1 & \ + (__INTERRUPT__)) == (__INTERRUPT__)) ? SET : RESET) + +/** @brief Check whether the specified I2C flag is set or not. + * @param __HANDLE__ specifies the I2C Handle. + * @param __FLAG__ specifies the flag to check. + * This parameter can be one of the following values: + * @arg @ref I2C_FLAG_TXE Transmit data register empty + * @arg @ref I2C_FLAG_TXIS Transmit interrupt status + * @arg @ref I2C_FLAG_RXNE Receive data register not empty + * @arg @ref I2C_FLAG_ADDR Address matched (slave mode) + * @arg @ref I2C_FLAG_AF Acknowledge failure received flag + * @arg @ref I2C_FLAG_STOPF STOP detection flag + * @arg @ref I2C_FLAG_TC Transfer complete (master mode) + * @arg @ref I2C_FLAG_TCR Transfer complete reload + * @arg @ref I2C_FLAG_BERR Bus error + * @arg @ref I2C_FLAG_ARLO Arbitration lost + * @arg @ref I2C_FLAG_OVR Overrun/Underrun + * @arg @ref I2C_FLAG_PECERR PEC error in reception + * @arg @ref I2C_FLAG_TIMEOUT Timeout or Tlow detection flag + * @arg @ref I2C_FLAG_ALERT SMBus alert + * @arg @ref I2C_FLAG_BUSY Bus busy + * @arg @ref I2C_FLAG_DIR Transfer direction (slave mode) + * + * @retval The new state of __FLAG__ (SET or RESET). + */ +#define I2C_FLAG_MASK (0x0001FFFFU) +#define __HAL_I2C_GET_FLAG(__HANDLE__, __FLAG__) (((((__HANDLE__)->Instance->ISR) & \ + (__FLAG__)) == (__FLAG__)) ? SET : RESET) + +/** @brief Clear the I2C pending flags which are cleared by writing 1 in a specific bit. + * @param __HANDLE__ specifies the I2C Handle. + * @param __FLAG__ specifies the flag to clear. + * This parameter can be any combination of the following values: + * @arg @ref I2C_FLAG_TXE Transmit data register empty + * @arg @ref I2C_FLAG_ADDR Address matched (slave mode) + * @arg @ref I2C_FLAG_AF Acknowledge failure received flag + * @arg @ref I2C_FLAG_STOPF STOP detection flag + * @arg @ref I2C_FLAG_BERR Bus error + * @arg @ref I2C_FLAG_ARLO Arbitration lost + * @arg @ref I2C_FLAG_OVR Overrun/Underrun + * @arg @ref I2C_FLAG_PECERR PEC error in reception + * @arg @ref I2C_FLAG_TIMEOUT Timeout or Tlow detection flag + * @arg @ref I2C_FLAG_ALERT SMBus alert + * + * @retval None + */ +#define __HAL_I2C_CLEAR_FLAG(__HANDLE__, __FLAG__) (((__FLAG__) == I2C_FLAG_TXE) ? \ + ((__HANDLE__)->Instance->ISR |= (__FLAG__)) : \ + ((__HANDLE__)->Instance->ICR = (__FLAG__))) + +/** @brief Enable the specified I2C peripheral. + * @param __HANDLE__ specifies the I2C Handle. + * @retval None + */ +#define __HAL_I2C_ENABLE(__HANDLE__) (SET_BIT((__HANDLE__)->Instance->CR1, I2C_CR1_PE)) + +/** @brief Disable the specified I2C peripheral. + * @param __HANDLE__ specifies the I2C Handle. + * @retval None + */ +#define __HAL_I2C_DISABLE(__HANDLE__) (CLEAR_BIT((__HANDLE__)->Instance->CR1, I2C_CR1_PE)) + +/** @brief Generate a Non-Acknowledge I2C peripheral in Slave mode. + * @param __HANDLE__ specifies the I2C Handle. + * @retval None + */ +#define __HAL_I2C_GENERATE_NACK(__HANDLE__) (SET_BIT((__HANDLE__)->Instance->CR2, I2C_CR2_NACK)) +/** + * @} + */ + +/* Include I2C HAL Extended module */ +#include "stm32g0xx_hal_i2c_ex.h" + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup I2C_Exported_Functions + * @{ + */ + +/** @addtogroup I2C_Exported_Functions_Group1 Initialization and de-initialization functions + * @{ + */ +/* Initialization and de-initialization functions******************************/ +HAL_StatusTypeDef HAL_I2C_Init(I2C_HandleTypeDef *hi2c); +HAL_StatusTypeDef HAL_I2C_DeInit(I2C_HandleTypeDef *hi2c); +void HAL_I2C_MspInit(I2C_HandleTypeDef *hi2c); +void HAL_I2C_MspDeInit(I2C_HandleTypeDef *hi2c); + +/* Callbacks Register/UnRegister functions ***********************************/ +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) +HAL_StatusTypeDef HAL_I2C_RegisterCallback(I2C_HandleTypeDef *hi2c, HAL_I2C_CallbackIDTypeDef CallbackID, + pI2C_CallbackTypeDef pCallback); +HAL_StatusTypeDef HAL_I2C_UnRegisterCallback(I2C_HandleTypeDef *hi2c, HAL_I2C_CallbackIDTypeDef CallbackID); + +HAL_StatusTypeDef HAL_I2C_RegisterAddrCallback(I2C_HandleTypeDef *hi2c, pI2C_AddrCallbackTypeDef pCallback); +HAL_StatusTypeDef HAL_I2C_UnRegisterAddrCallback(I2C_HandleTypeDef *hi2c); +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ +/** + * @} + */ + +/** @addtogroup I2C_Exported_Functions_Group2 Input and Output operation functions + * @{ + */ +/* IO operation functions ****************************************************/ +/******* Blocking mode: Polling */ +HAL_StatusTypeDef HAL_I2C_Master_Transmit(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, + uint16_t Size, uint32_t Timeout); +HAL_StatusTypeDef HAL_I2C_Master_Receive(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, + uint16_t Size, uint32_t Timeout); +HAL_StatusTypeDef HAL_I2C_Slave_Transmit(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, + uint32_t Timeout); +HAL_StatusTypeDef HAL_I2C_Slave_Receive(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, + uint32_t Timeout); +HAL_StatusTypeDef HAL_I2C_Mem_Write(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, + uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout); +HAL_StatusTypeDef HAL_I2C_Mem_Read(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, + uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout); +HAL_StatusTypeDef HAL_I2C_IsDeviceReady(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint32_t Trials, + uint32_t Timeout); + +/******* Non-Blocking mode: Interrupt */ +HAL_StatusTypeDef HAL_I2C_Master_Transmit_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, + uint16_t Size); +HAL_StatusTypeDef HAL_I2C_Master_Receive_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, + uint16_t Size); +HAL_StatusTypeDef HAL_I2C_Slave_Transmit_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size); +HAL_StatusTypeDef HAL_I2C_Slave_Receive_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size); +HAL_StatusTypeDef HAL_I2C_Mem_Write_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, + uint16_t MemAddSize, uint8_t *pData, uint16_t Size); +HAL_StatusTypeDef HAL_I2C_Mem_Read_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, + uint16_t MemAddSize, uint8_t *pData, uint16_t Size); + +HAL_StatusTypeDef HAL_I2C_Master_Seq_Transmit_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, + uint16_t Size, uint32_t XferOptions); +HAL_StatusTypeDef HAL_I2C_Master_Seq_Receive_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, + uint16_t Size, uint32_t XferOptions); +HAL_StatusTypeDef HAL_I2C_Slave_Seq_Transmit_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, + uint32_t XferOptions); +HAL_StatusTypeDef HAL_I2C_Slave_Seq_Receive_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, + uint32_t XferOptions); +HAL_StatusTypeDef HAL_I2C_EnableListen_IT(I2C_HandleTypeDef *hi2c); +HAL_StatusTypeDef HAL_I2C_DisableListen_IT(I2C_HandleTypeDef *hi2c); +HAL_StatusTypeDef HAL_I2C_Master_Abort_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress); + +/******* Non-Blocking mode: DMA */ +HAL_StatusTypeDef HAL_I2C_Master_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, + uint16_t Size); +HAL_StatusTypeDef HAL_I2C_Master_Receive_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, + uint16_t Size); +HAL_StatusTypeDef HAL_I2C_Slave_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size); +HAL_StatusTypeDef HAL_I2C_Slave_Receive_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size); +HAL_StatusTypeDef HAL_I2C_Mem_Write_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, + uint16_t MemAddSize, uint8_t *pData, uint16_t Size); +HAL_StatusTypeDef HAL_I2C_Mem_Read_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, + uint16_t MemAddSize, uint8_t *pData, uint16_t Size); + +HAL_StatusTypeDef HAL_I2C_Master_Seq_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, + uint16_t Size, uint32_t XferOptions); +HAL_StatusTypeDef HAL_I2C_Master_Seq_Receive_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, + uint16_t Size, uint32_t XferOptions); +HAL_StatusTypeDef HAL_I2C_Slave_Seq_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, + uint32_t XferOptions); +HAL_StatusTypeDef HAL_I2C_Slave_Seq_Receive_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, + uint32_t XferOptions); +/** + * @} + */ + +/** @addtogroup I2C_IRQ_Handler_and_Callbacks IRQ Handler and Callbacks + * @{ + */ +/******* I2C IRQHandler and Callbacks used in non blocking modes (Interrupt and DMA) */ +void HAL_I2C_EV_IRQHandler(I2C_HandleTypeDef *hi2c); +void HAL_I2C_ER_IRQHandler(I2C_HandleTypeDef *hi2c); +void HAL_I2C_MasterTxCpltCallback(I2C_HandleTypeDef *hi2c); +void HAL_I2C_MasterRxCpltCallback(I2C_HandleTypeDef *hi2c); +void HAL_I2C_SlaveTxCpltCallback(I2C_HandleTypeDef *hi2c); +void HAL_I2C_SlaveRxCpltCallback(I2C_HandleTypeDef *hi2c); +void HAL_I2C_AddrCallback(I2C_HandleTypeDef *hi2c, uint8_t TransferDirection, uint16_t AddrMatchCode); +void HAL_I2C_ListenCpltCallback(I2C_HandleTypeDef *hi2c); +void HAL_I2C_MemTxCpltCallback(I2C_HandleTypeDef *hi2c); +void HAL_I2C_MemRxCpltCallback(I2C_HandleTypeDef *hi2c); +void HAL_I2C_ErrorCallback(I2C_HandleTypeDef *hi2c); +void HAL_I2C_AbortCpltCallback(I2C_HandleTypeDef *hi2c); +/** + * @} + */ + +/** @addtogroup I2C_Exported_Functions_Group3 Peripheral State, Mode and Error functions + * @{ + */ +/* Peripheral State, Mode and Error functions *********************************/ +HAL_I2C_StateTypeDef HAL_I2C_GetState(I2C_HandleTypeDef *hi2c); +HAL_I2C_ModeTypeDef HAL_I2C_GetMode(I2C_HandleTypeDef *hi2c); +uint32_t HAL_I2C_GetError(I2C_HandleTypeDef *hi2c); + +/** + * @} + */ + +/** + * @} + */ + +/* Private constants ---------------------------------------------------------*/ +/** @defgroup I2C_Private_Constants I2C Private Constants + * @{ + */ + +/** + * @} + */ + +/* Private macros ------------------------------------------------------------*/ +/** @defgroup I2C_Private_Macro I2C Private Macros + * @{ + */ + +#define IS_I2C_ADDRESSING_MODE(MODE) (((MODE) == I2C_ADDRESSINGMODE_7BIT) || \ + ((MODE) == I2C_ADDRESSINGMODE_10BIT)) + +#define IS_I2C_DUAL_ADDRESS(ADDRESS) (((ADDRESS) == I2C_DUALADDRESS_DISABLE) || \ + ((ADDRESS) == I2C_DUALADDRESS_ENABLE)) + +#define IS_I2C_OWN_ADDRESS2_MASK(MASK) (((MASK) == I2C_OA2_NOMASK) || \ + ((MASK) == I2C_OA2_MASK01) || \ + ((MASK) == I2C_OA2_MASK02) || \ + ((MASK) == I2C_OA2_MASK03) || \ + ((MASK) == I2C_OA2_MASK04) || \ + ((MASK) == I2C_OA2_MASK05) || \ + ((MASK) == I2C_OA2_MASK06) || \ + ((MASK) == I2C_OA2_MASK07)) + +#define IS_I2C_GENERAL_CALL(CALL) (((CALL) == I2C_GENERALCALL_DISABLE) || \ + ((CALL) == I2C_GENERALCALL_ENABLE)) + +#define IS_I2C_NO_STRETCH(STRETCH) (((STRETCH) == I2C_NOSTRETCH_DISABLE) || \ + ((STRETCH) == I2C_NOSTRETCH_ENABLE)) + +#define IS_I2C_MEMADD_SIZE(SIZE) (((SIZE) == I2C_MEMADD_SIZE_8BIT) || \ + ((SIZE) == I2C_MEMADD_SIZE_16BIT)) + +#define IS_TRANSFER_MODE(MODE) (((MODE) == I2C_RELOAD_MODE) || \ + ((MODE) == I2C_AUTOEND_MODE) || \ + ((MODE) == I2C_SOFTEND_MODE)) + +#define IS_TRANSFER_REQUEST(REQUEST) (((REQUEST) == I2C_GENERATE_STOP) || \ + ((REQUEST) == I2C_GENERATE_START_READ) || \ + ((REQUEST) == I2C_GENERATE_START_WRITE) || \ + ((REQUEST) == I2C_NO_STARTSTOP)) + +#define IS_I2C_TRANSFER_OPTIONS_REQUEST(REQUEST) (((REQUEST) == I2C_FIRST_FRAME) || \ + ((REQUEST) == I2C_FIRST_AND_NEXT_FRAME) || \ + ((REQUEST) == I2C_NEXT_FRAME) || \ + ((REQUEST) == I2C_FIRST_AND_LAST_FRAME) || \ + ((REQUEST) == I2C_LAST_FRAME) || \ + ((REQUEST) == I2C_LAST_FRAME_NO_STOP) || \ + IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(REQUEST)) + +#define IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(REQUEST) (((REQUEST) == I2C_OTHER_FRAME) || \ + ((REQUEST) == I2C_OTHER_AND_LAST_FRAME)) + +#define I2C_RESET_CR2(__HANDLE__) ((__HANDLE__)->Instance->CR2 &= \ + (uint32_t)~((uint32_t)(I2C_CR2_SADD | I2C_CR2_HEAD10R | \ + I2C_CR2_NBYTES | I2C_CR2_RELOAD | \ + I2C_CR2_RD_WRN))) + +#define I2C_GET_ADDR_MATCH(__HANDLE__) ((uint16_t)(((__HANDLE__)->Instance->ISR & I2C_ISR_ADDCODE) \ + >> 16U)) +#define I2C_GET_DIR(__HANDLE__) ((uint8_t)(((__HANDLE__)->Instance->ISR & I2C_ISR_DIR) \ + >> 16U)) +#define I2C_GET_STOP_MODE(__HANDLE__) ((__HANDLE__)->Instance->CR2 & I2C_CR2_AUTOEND) +#define I2C_GET_OWN_ADDRESS1(__HANDLE__) ((uint16_t)((__HANDLE__)->Instance->OAR1 & I2C_OAR1_OA1)) +#define I2C_GET_OWN_ADDRESS2(__HANDLE__) ((uint16_t)((__HANDLE__)->Instance->OAR2 & I2C_OAR2_OA2)) + +#define IS_I2C_OWN_ADDRESS1(ADDRESS1) ((ADDRESS1) <= 0x000003FFU) +#define IS_I2C_OWN_ADDRESS2(ADDRESS2) ((ADDRESS2) <= (uint16_t)0x00FFU) + +#define I2C_MEM_ADD_MSB(__ADDRESS__) ((uint8_t)((uint16_t)(((uint16_t)((__ADDRESS__) & \ + (uint16_t)(0xFF00U))) >> 8U))) +#define I2C_MEM_ADD_LSB(__ADDRESS__) ((uint8_t)((uint16_t)((__ADDRESS__) & (uint16_t)(0x00FFU)))) + +#define I2C_GENERATE_START(__ADDMODE__,__ADDRESS__) (((__ADDMODE__) == I2C_ADDRESSINGMODE_7BIT) ? \ + (uint32_t)((((uint32_t)(__ADDRESS__) & (I2C_CR2_SADD)) | \ + (I2C_CR2_START) | (I2C_CR2_AUTOEND)) & \ + (~I2C_CR2_RD_WRN)) : \ + (uint32_t)((((uint32_t)(__ADDRESS__) & (I2C_CR2_SADD)) | \ + (I2C_CR2_ADD10) | (I2C_CR2_START)) & \ + (~I2C_CR2_RD_WRN))) + +#define I2C_CHECK_FLAG(__ISR__, __FLAG__) ((((__ISR__) & ((__FLAG__) & I2C_FLAG_MASK)) == \ + ((__FLAG__) & I2C_FLAG_MASK)) ? SET : RESET) +#define I2C_CHECK_IT_SOURCE(__CR1__, __IT__) ((((__CR1__) & (__IT__)) == (__IT__)) ? SET : RESET) +/** + * @} + */ + +/* Private Functions ---------------------------------------------------------*/ +/** @defgroup I2C_Private_Functions I2C Private Functions + * @{ + */ +/* Private functions are defined in stm32g0xx_hal_i2c.c file */ +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + + +#endif /* STM32G0xx_HAL_I2C_H */ diff --git a/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_i2c_ex.h b/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_i2c_ex.h new file mode 100644 index 0000000..8db972b --- /dev/null +++ b/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_i2c_ex.h @@ -0,0 +1,177 @@ +/** + ****************************************************************************** + * @file stm32g0xx_hal_i2c_ex.h + * @author MCD Application Team + * @brief Header file of I2C HAL Extended module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2018 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32G0xx_HAL_I2C_EX_H +#define STM32G0xx_HAL_I2C_EX_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32g0xx_hal_def.h" + +/** @addtogroup STM32G0xx_HAL_Driver + * @{ + */ + +/** @addtogroup I2CEx + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +/** @defgroup I2CEx_Exported_Constants I2C Extended Exported Constants + * @{ + */ + +/** @defgroup I2CEx_Analog_Filter I2C Extended Analog Filter + * @{ + */ +#define I2C_ANALOGFILTER_ENABLE 0x00000000U +#define I2C_ANALOGFILTER_DISABLE I2C_CR1_ANFOFF +/** + * @} + */ + +/** @defgroup I2CEx_FastModePlus I2C Extended Fast Mode Plus + * @{ + */ +#define I2C_FMP_NOT_SUPPORTED 0xAAAA0000U /*!< Fast Mode Plus not supported */ +#define I2C_FASTMODEPLUS_PA9 SYSCFG_CFGR1_I2C_PA9_FMP /*!< Enable Fast Mode Plus on PA9 */ +#define I2C_FASTMODEPLUS_PA10 SYSCFG_CFGR1_I2C_PA10_FMP /*!< Enable Fast Mode Plus on PA10 */ +#define I2C_FASTMODEPLUS_PB6 SYSCFG_CFGR1_I2C_PB6_FMP /*!< Enable Fast Mode Plus on PB6 */ +#define I2C_FASTMODEPLUS_PB7 SYSCFG_CFGR1_I2C_PB7_FMP /*!< Enable Fast Mode Plus on PB7 */ +#define I2C_FASTMODEPLUS_PB8 SYSCFG_CFGR1_I2C_PB8_FMP /*!< Enable Fast Mode Plus on PB8 */ +#define I2C_FASTMODEPLUS_PB9 SYSCFG_CFGR1_I2C_PB9_FMP /*!< Enable Fast Mode Plus on PB9 */ +#define I2C_FASTMODEPLUS_I2C1 SYSCFG_CFGR1_I2C1_FMP /*!< Enable Fast Mode Plus on I2C1 pins */ +#define I2C_FASTMODEPLUS_I2C2 SYSCFG_CFGR1_I2C2_FMP /*!< Enable Fast Mode Plus on I2C2 pins */ +#if defined(SYSCFG_CFGR1_I2C3_FMP) +#define I2C_FASTMODEPLUS_I2C3 SYSCFG_CFGR1_I2C3_FMP /*!< Enable Fast Mode Plus on I2C3 pins */ +#else +#define I2C_FASTMODEPLUS_I2C3 (uint32_t)(0x00000400U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus I2C3 not supported */ +#endif /* SYSCFG_CFGR1_I2C3_FMP */ +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup I2CEx_Exported_Macros I2C Extended Exported Macros + * @{ + */ + +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup I2CEx_Exported_Functions I2C Extended Exported Functions + * @{ + */ + +/** @addtogroup I2CEx_Exported_Functions_Group1 Filter Mode Functions + * @{ + */ +/* Peripheral Control functions ************************************************/ +HAL_StatusTypeDef HAL_I2CEx_ConfigAnalogFilter(I2C_HandleTypeDef *hi2c, uint32_t AnalogFilter); +HAL_StatusTypeDef HAL_I2CEx_ConfigDigitalFilter(I2C_HandleTypeDef *hi2c, uint32_t DigitalFilter); +/** + * @} + */ + +/** @addtogroup I2CEx_Exported_Functions_Group2 WakeUp Mode Functions + * @{ + */ +HAL_StatusTypeDef HAL_I2CEx_EnableWakeUp(I2C_HandleTypeDef *hi2c); +HAL_StatusTypeDef HAL_I2CEx_DisableWakeUp(I2C_HandleTypeDef *hi2c); +/** + * @} + */ + +/** @addtogroup I2CEx_Exported_Functions_Group3 Fast Mode Plus Functions + * @{ + */ +void HAL_I2CEx_EnableFastModePlus(uint32_t ConfigFastModePlus); +void HAL_I2CEx_DisableFastModePlus(uint32_t ConfigFastModePlus); +/** + * @} + */ + +/** + * @} + */ + +/* Private constants ---------------------------------------------------------*/ +/** @defgroup I2CEx_Private_Constants I2C Extended Private Constants + * @{ + */ + +/** + * @} + */ + +/* Private macros ------------------------------------------------------------*/ +/** @defgroup I2CEx_Private_Macro I2C Extended Private Macros + * @{ + */ +#define IS_I2C_ANALOG_FILTER(FILTER) (((FILTER) == I2C_ANALOGFILTER_ENABLE) || \ + ((FILTER) == I2C_ANALOGFILTER_DISABLE)) + +#define IS_I2C_DIGITAL_FILTER(FILTER) ((FILTER) <= 0x0000000FU) + +#define IS_I2C_FASTMODEPLUS(__CONFIG__) ((((__CONFIG__) & I2C_FMP_NOT_SUPPORTED) != I2C_FMP_NOT_SUPPORTED) && \ + ((((__CONFIG__) & (I2C_FASTMODEPLUS_PA9)) == I2C_FASTMODEPLUS_PA9) || \ + (((__CONFIG__) & (I2C_FASTMODEPLUS_PA10)) == I2C_FASTMODEPLUS_PA10) || \ + (((__CONFIG__) & (I2C_FASTMODEPLUS_PB6)) == I2C_FASTMODEPLUS_PB6) || \ + (((__CONFIG__) & (I2C_FASTMODEPLUS_PB7)) == I2C_FASTMODEPLUS_PB7) || \ + (((__CONFIG__) & (I2C_FASTMODEPLUS_PB8)) == I2C_FASTMODEPLUS_PB8) || \ + (((__CONFIG__) & (I2C_FASTMODEPLUS_PB9)) == I2C_FASTMODEPLUS_PB9) || \ + (((__CONFIG__) & (I2C_FASTMODEPLUS_I2C1)) == I2C_FASTMODEPLUS_I2C1) || \ + (((__CONFIG__) & (I2C_FASTMODEPLUS_I2C2)) == I2C_FASTMODEPLUS_I2C2) || \ + (((__CONFIG__) & (I2C_FASTMODEPLUS_I2C3)) == I2C_FASTMODEPLUS_I2C3))) +/** + * @} + */ + +/* Private Functions ---------------------------------------------------------*/ +/** @defgroup I2CEx_Private_Functions I2C Extended Private Functions + * @{ + */ +/* Private functions are defined in stm32g0xx_hal_i2c_ex.c file */ +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32G0xx_HAL_I2C_EX_H */ diff --git a/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_pwr.h b/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_pwr.h new file mode 100644 index 0000000..2defd85 --- /dev/null +++ b/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_pwr.h @@ -0,0 +1,325 @@ +/** + ****************************************************************************** + * @file stm32g0xx_hal_pwr.h + * @author MCD Application Team + * @brief Header file of PWR HAL module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2018 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32G0xx_HAL_PWR_H +#define STM32G0xx_HAL_PWR_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32g0xx_hal_def.h" + +/** @addtogroup STM32G0xx_HAL_Driver + * @{ + */ + +/** @defgroup PWR PWR + * @brief PWR HAL module driver + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ +/** @defgroup PWR_Exported_Types PWR Exported Types + * @{ + */ + +/** + * @} + */ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup PWR_Exported_Constants PWR Exported Constants + * @{ + */ + +/** @defgroup PWR_WakeUp_Pins PWR WakeUp pins + * @{ + */ +#define PWR_WAKEUP_PIN1 PWR_CR3_EWUP1 /*!< Wakeup pin 1 (with high level detection) */ +#define PWR_WAKEUP_PIN2 PWR_CR3_EWUP2 /*!< Wakeup pin 2 (with high level detection) */ +#if defined(PWR_CR3_EWUP3) +#define PWR_WAKEUP_PIN3 PWR_CR3_EWUP3 /*!< Wakeup pin 3 (with high level detection) */ +#endif /* PWR_CR3_EWUP3 */ +#define PWR_WAKEUP_PIN4 PWR_CR3_EWUP4 /*!< Wakeup pin 4 (with high level detection) */ +#if defined(PWR_CR3_EWUP5) +#define PWR_WAKEUP_PIN5 PWR_CR3_EWUP5 /*!< Wakeup pin 5 (with high level detection) */ +#endif /* PWR_CR3_EWUP5 */ +#define PWR_WAKEUP_PIN6 PWR_CR3_EWUP6 /*!< Wakeup pin 6 (with high level detection) */ +#define PWR_WAKEUP_PIN1_HIGH PWR_CR3_EWUP1 /*!< Wakeup pin 1 (with high level detection) */ +#define PWR_WAKEUP_PIN2_HIGH PWR_CR3_EWUP2 /*!< Wakeup pin 2 (with high level detection) */ +#if defined(PWR_CR3_EWUP3) +#define PWR_WAKEUP_PIN3_HIGH PWR_CR3_EWUP3 /*!< Wakeup pin 3 (with high level detection) */ +#endif /* PWR_CR3_EWUP3 */ +#define PWR_WAKEUP_PIN4_HIGH PWR_CR3_EWUP4 /*!< Wakeup pin 4 (with high level detection) */ +#if defined(PWR_CR3_EWUP5) +#define PWR_WAKEUP_PIN5_HIGH PWR_CR3_EWUP5 /*!< Wakeup pin 5 (with high level detection) */ +#endif /* PWR_CR3_EWUP5*/ +#define PWR_WAKEUP_PIN6_HIGH PWR_CR3_EWUP6 /*!< Wakeup pin 6 (with high level detection) */ +#define PWR_WAKEUP_PIN1_LOW ((PWR_CR4_WP1 << PWR_WUP_POLARITY_SHIFT) | PWR_CR3_EWUP1) /*!< Wakeup pin 1 (with low level detection) */ +#define PWR_WAKEUP_PIN2_LOW ((PWR_CR4_WP2 << PWR_WUP_POLARITY_SHIFT) | PWR_CR3_EWUP2) /*!< Wakeup pin 2 (with low level detection) */ +#if defined(PWR_CR3_EWUP3) +#define PWR_WAKEUP_PIN3_LOW ((PWR_CR4_WP3 << PWR_WUP_POLARITY_SHIFT) | PWR_CR3_EWUP3) /*!< Wakeup pin 3 (with low level detection) */ +#endif /* PWR_CR3_EWUP3 */ +#define PWR_WAKEUP_PIN4_LOW ((PWR_CR4_WP4 << PWR_WUP_POLARITY_SHIFT) | PWR_CR3_EWUP4) /*!< Wakeup pin 4 (with low level detection) */ +#if defined(PWR_CR3_EWUP5) +#define PWR_WAKEUP_PIN5_LOW ((PWR_CR4_WP5 << PWR_WUP_POLARITY_SHIFT) | PWR_CR3_EWUP5) /*!< Wakeup pin 5 (with low level detection) */ +#endif /* PWR_CR3_EWUP5 */ +#define PWR_WAKEUP_PIN6_LOW ((PWR_CR4_WP6 << PWR_WUP_POLARITY_SHIFT) | PWR_CR3_EWUP6) /*!< Wakeup pin 6 (with low level detection) */ +/** + * @} + */ + +/** @defgroup PWR_Low_Power_Mode_Selection PWR Low Power Mode Selection + * @{ + */ +#define PWR_LOWPOWERMODE_STOP0 (0x00000000u) /*!< Stop 0: stop mode with main regulator */ +#define PWR_LOWPOWERMODE_STOP1 (PWR_CR1_LPMS_0) /*!< Stop 1: stop mode with low power regulator */ +#define PWR_LOWPOWERMODE_STANDBY (PWR_CR1_LPMS_0 | PWR_CR1_LPMS_1) /*!< Standby mode */ +#if defined(PWR_SHDW_SUPPORT) +#define PWR_LOWPOWERMODE_SHUTDOWN (PWR_CR1_LPMS_2) /*!< Shutdown mode */ +#endif /* PWR_SHDW_SUPPORT */ +/** + * @} + */ + +/** @defgroup PWR_Regulator_state_in_SLEEP_STOP_mode PWR regulator mode + * @{ + */ +#define PWR_MAINREGULATOR_ON (0x00000000u) /*!< Regulator in main mode */ +#define PWR_LOWPOWERREGULATOR_ON PWR_CR1_LPR /*!< Regulator in low-power mode */ +/** + * @} + */ + +/** @defgroup PWR_SLEEP_mode_entry PWR SLEEP mode entry + * @{ + */ +#define PWR_SLEEPENTRY_WFI ((uint8_t)0x01u) /*!< Wait For Interruption instruction to enter Sleep mode */ +#define PWR_SLEEPENTRY_WFE ((uint8_t)0x02u) /*!< Wait For Event instruction to enter Sleep mode */ +/** + * @} + */ + +/** @defgroup PWR_STOP_mode_entry PWR STOP mode entry + * @{ + */ +#define PWR_STOPENTRY_WFI ((uint8_t)0x01u) /*!< Wait For Interruption instruction to enter Stop mode */ +#define PWR_STOPENTRY_WFE ((uint8_t)0x02u) /*!< Wait For Event instruction to enter Stop mode */ +/** + * @} + */ + +/** @defgroup PWR_Flag PWR Status Flags + * @brief Elements values convention: 0000 00XX 000Y YYYYb + * - Y YYYY : Flag position in the XX register (5 bits) + * - XX : Status register (2 bits) + * - 01: SR1 register + * - 10: SR2 register + * The only exception is PWR_FLAG_WU, encompassing all + * wake-up flags and set to PWR_SR1_WUF. + * @{ + */ +#define PWR_FLAG_WUF1 (0x00010000u | PWR_SR1_WUF1) /*!< Wakeup event on wakeup pin 1 */ +#define PWR_FLAG_WUF2 (0x00010000u | PWR_SR1_WUF2) /*!< Wakeup event on wakeup pin 2 */ +#if defined(PWR_CR3_EWUP3) +#define PWR_FLAG_WUF3 (0x00010000u | PWR_SR1_WUF3) /*!< Wakeup event on wakeup pin 3 */ +#endif /* PWR_CR3_EWUP3 */ +#define PWR_FLAG_WUF4 (0x00010000u | PWR_SR1_WUF4) /*!< Wakeup event on wakeup pin 4 */ +#if defined(PWR_CR3_EWUP5) +#define PWR_FLAG_WUF5 (0x00010000u | PWR_SR1_WUF5) /*!< Wakeup event on wakeup pin 5 */ +#endif /* PWR_CR3_EWUP5 */ +#define PWR_FLAG_WUF6 (0x00010000u | PWR_SR1_WUF6) /*!< Wakeup event on wakeup pin 6 */ +#define PWR_FLAG_WUF (0x00010000u | PWR_SR1_WUF) /*!< Wakeup event on all wakeup pin */ +#define PWR_FLAG_SB (0x00010000u | PWR_SR1_SBF) /*!< Standby flag */ +#define PWR_FLAG_WUFI (0x00010000u | PWR_SR1_WUFI) /*!< Wakeup on internal wakeup line */ +#define PWR_FLAG_FLASH_READY (0x00020000u | PWR_SR2_FLASH_RDY) /*!< Flash ready */ +#define PWR_FLAG_REGLPS (0x00020000u | PWR_SR2_REGLPS) /*!< Regulator Low Power started */ +#define PWR_FLAG_REGLPF (0x00020000u | PWR_SR2_REGLPF) /*!< Regulator Low Power flag */ +#if defined(PWR_PVD_SUPPORT) +#define PWR_FLAG_PVDO (0x00020000u | PWR_SR2_PVDO) /*!< Power Voltage Detector output */ +#endif /* PWR_PVD_SUPPORT */ +#if defined(PWR_PVM_SUPPORT) +#define PWR_FLAG_PVMO_USB (0x00020000u | PWR_SR2_PVMO_USB) /*!< Power Voltage Monitoring output */ +#endif /* PWR_PVM_SUPPORT */ + +/** + * @} + */ + +/** + * @} + */ + +/* Exported macros -----------------------------------------------------------*/ +/** @defgroup PWR_Exported_Macros PWR Exported Macros + * @{ + */ +/** @brief Check whether or not a specific PWR flag is set. + * @param __FLAG__ specifies the flag to check. + * This parameter can be one a combination of following values: + * @arg PWR_FLAG_WUF1: Wake Up Flag 1. Indicates that a wakeup event + * was received from the WKUP pin 1. + * @arg PWR_FLAG_WUF2: Wake Up Flag 2. Indicates that a wakeup event + * was received from the WKUP pin 2. + * @arg PWR_FLAG_WUF3: Wake Up Flag 3. Indicates that a wakeup event + * was received from the WKUP pin 3. (*) + * @arg PWR_FLAG_WUF4: Wake Up Flag 4. Indicates that a wakeup event + * was received from the WKUP pin 4. + * @arg PWR_FLAG_WUF5: Wake Up Flag 5. Indicates that a wakeup event + * was received from the WKUP pin 5. (*) + * @arg PWR_FLAG_WUF6: Wake Up Flag 6. Indicates that a wakeup event + * was received from the WKUP pin 6. + * @arg PWR_FLAG_SB: StandBy Flag. Indicates that the system + * entered StandBy mode. + * @arg PWR_FLAG_WUFI: Wake-Up Flag Internal. Set when a wakeup is + * detected on the internal wakeup line. + * OR a combination of following values: + * @arg PWR_FLAG_FLASH_READY: Flash is ready. Indicates whether flash + * can be used or not + * @arg PWR_FLAG_REGLPS: Low Power Regulator Started. Indicates whether + * or not the low-power regulator is ready. + * @arg PWR_FLAG_REGLPF: Low Power Regulator Flag. Indicates whether the + * regulator is ready in main mode or is in low-power mode. + * @if defined(STM32G081xx) + * @arg PWR_FLAG_PVDO: Power Voltage Detector Output. Indicates whether + * VDD voltage is below or above the selected PVD threshold. + * @endif + * @retval The new state of __FLAG__ (TRUE or FALSE). + */ +#define __HAL_PWR_GET_FLAG(__FLAG__) (((__FLAG__) & 0x00010000u) ?\ + ((PWR->SR1 & ((__FLAG__) & ~0x00030000u)) == ((__FLAG__) & ~0x00030000u)) :\ + ((PWR->SR2 & ((__FLAG__) & ~0x00030000u)) == ((__FLAG__) & ~0x00030000u))) + +/** @brief Clear a specific PWR flag. + * @param __FLAG__ specifies the flag to clear. + * This parameter can be a combination of following values: + * @arg PWR_FLAG_WUF1: Wake Up Flag 1. Indicates that a wakeup event + * was received from the WKUP pin 1. + * @arg PWR_FLAG_WUF2: Wake Up Flag 2. Indicates that a wakeup event + * was received from the WKUP pin 2. + * @arg PWR_FLAG_WUF3: Wake Up Flag 3. Indicates that a wakeup event + * was received from the WKUP pin 3. (*) + * @arg PWR_FLAG_WUF4: Wake Up Flag 4. Indicates that a wakeup event + * was received from the WKUP pin 4. + * @arg PWR_FLAG_WUF5: Wake Up Flag 5. Indicates that a wakeup event + * was received from the WKUP pin 5. (*) + * @arg PWR_FLAG_WUF6: Wake Up Flag 6. Indicates that a wakeup event + * was received from the WKUP pin 6. + * @arg PWR_FLAG_WUF: Encompasses all Wake Up Flags. + * @arg PWR_FLAG_SB: Standby Flag. Indicates that the system + * entered Standby mode. + * @retval None + */ +#define __HAL_PWR_CLEAR_FLAG(__FLAG__) (PWR->SCR = (__FLAG__)) + +/** + * @} + */ + +/* Private constants-------------------------------------------------------*/ +/** @defgroup PWR_WUP_Polarity Shift to apply to retrieve polarity information from PWR_WAKEUP_PINy_xxx constants + * @{ + */ +#define PWR_WUP_POLARITY_SHIFT 0x08u /*!< Internal constant used to retrieve wakeup pin polariry */ +/** + * @} + */ + +/* Private macros --------------------------------------------------------*/ +/** @defgroup PWR_Private_Macros PWR Private Macros + * @{ + */ + +#define IS_PWR_WAKEUP_PIN(PIN) ((((PIN) & ((PWR_CR4_WP << 8U) | (PWR_CR3_EWUP))) != 0x00000000u) && \ + (((PIN) & ~((PWR_CR4_WP << 8U) | (PWR_CR3_EWUP))) == 0x00000000u)) + +#define IS_PWR_REGULATOR(REGULATOR) (((REGULATOR) == PWR_MAINREGULATOR_ON) || \ + ((REGULATOR) == PWR_LOWPOWERREGULATOR_ON)) + +#define IS_PWR_SLEEP_ENTRY(ENTRY) (((ENTRY) == PWR_SLEEPENTRY_WFI) || \ + ((ENTRY) == PWR_SLEEPENTRY_WFE)) + +#define IS_PWR_STOP_ENTRY(ENTRY) (((ENTRY) == PWR_STOPENTRY_WFI) || \ + ((ENTRY) == PWR_STOPENTRY_WFE)) +/** + * @} + */ + +/* Include PWR HAL Extended module */ +#include "stm32g0xx_hal_pwr_ex.h" + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup PWR_Exported_Functions PWR Exported Functions + * @{ + */ + +/** @defgroup PWR_Exported_Functions_Group1 Initialization and de-initialization functions + * @{ + */ + +/* Initialization and de-initialization functions *******************************/ +void HAL_PWR_DeInit(void); +/** + * @} + */ + +/** @defgroup PWR_Exported_Functions_Group2 Peripheral Control functions + * @{ + */ +/* Peripheral Control functions ************************************************/ +void HAL_PWR_EnableBkUpAccess(void); +void HAL_PWR_DisableBkUpAccess(void); + +/* WakeUp pins configuration functions ****************************************/ +void HAL_PWR_EnableWakeUpPin(uint32_t WakeUpPinPolarity); +void HAL_PWR_DisableWakeUpPin(uint32_t WakeUpPinx); + +/* Low Power modes configuration functions ************************************/ +void HAL_PWR_EnterSLEEPMode(uint32_t Regulator, uint8_t SLEEPEntry); +void HAL_PWR_EnterSTOPMode(uint32_t Regulator, uint8_t STOPEntry); +void HAL_PWR_EnterSTANDBYMode(void); +void HAL_PWR_EnableSleepOnExit(void); +void HAL_PWR_DisableSleepOnExit(void); +void HAL_PWR_EnableSEVOnPend(void); +void HAL_PWR_DisableSEVOnPend(void); + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + + +#endif /* STM32G0xx_HAL_PWR_H */ diff --git a/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_pwr_ex.h b/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_pwr_ex.h new file mode 100644 index 0000000..432158d --- /dev/null +++ b/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_pwr_ex.h @@ -0,0 +1,640 @@ +/** + ****************************************************************************** + * @file stm32g0xx_hal_pwr_ex.h + * @author MCD Application Team + * @brief Header file of PWR HAL Extended module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2018 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32G0xx_HAL_PWR_EX_H +#define STM32G0xx_HAL_PWR_EX_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32g0xx_hal_def.h" + +/** @addtogroup STM32G0xx_HAL_Driver + * @{ + */ + +/** @defgroup PWREx PWREx + * @brief PWR Extended HAL module driver + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ +/** @defgroup PWREx_Exported_Types PWR Extended Exported Types + * @{ + */ + +#if defined(PWR_PVM_SUPPORT) +/** + * @brief PWR PVM configuration structure definition + */ +typedef struct +{ + uint32_t PVMType; /*!< PVMType: Specifies which voltage is monitored and against which threshold. + This parameter can be a value of @ref PWREx_PVM_Type. + @arg @ref PWR_PVM_USB Peripheral Voltage Monitoring USB enable */ + + uint32_t Mode; /*!< Mode: Specifies the operating mode for the selected pins. + This parameter can be a value of @ref PWREx_PVM_Mode. */ +} PWR_PVMTypeDef; +#endif /* PWR_PVM_SUPPORT */ + +#if defined(PWR_PVD_SUPPORT) +/** + * @brief PWR PVD configuration structure definition + */ +typedef struct +{ + uint32_t PVDLevel; /*!< PVDLevel: Specifies the PVD detection level. + This parameter can be a value or a combination of + @ref PWR_PVD_detection_level. */ + + uint32_t Mode; /*!< Mode: Specifies the operating mode for the selected pins. + This parameter can be a value of @ref PWR_PVD_Mode. */ +} PWR_PVDTypeDef; +#endif /* PWR_PVD_SUPPORT */ + +/** + * @} + */ +/* Exported constants --------------------------------------------------------*/ +/** @defgroup PWREx_Exported_Constants PWR Extended Exported Constants + * @{ + */ +#if defined(PWR_PVD_SUPPORT) +/** @defgroup PWR_PVD_detection_level Programmable Voltage Detection levels + * @note see datasheet for selection voltage value + * @{ + */ +#define PWR_PVDLEVEL_RISING_0 (0x00000000u) /*!< PVD threshold level 0 for rising detection */ +#define PWR_PVDLEVEL_RISING_1 (PWR_CR2_PVDRT_0) /*!< PVD threshold level 1 for rising detection */ +#define PWR_PVDLEVEL_RISING_2 (PWR_CR2_PVDRT_1) /*!< PVD threshold level 2 for rising detection */ +#define PWR_PVDLEVEL_RISING_3 (PWR_CR2_PVDRT_0 | PWR_CR2_PVDRT_1) /*!< PVD threshold level 3 for rising detection */ +#define PWR_PVDLEVEL_RISING_4 (PWR_CR2_PVDRT_2) /*!< PVD threshold level 4 for rising detection */ +#define PWR_PVDLEVEL_RISING_5 (PWR_CR2_PVDRT_2 | PWR_CR2_PVDRT_0) /*!< PVD threshold level 5 for rising detection */ +#define PWR_PVDLEVEL_RISING_6 (PWR_CR2_PVDRT_2 | PWR_CR2_PVDRT_1) /*!< PVD threshold level 6 for rising detection */ +#define PWR_PVDLEVEL_FALLING_0 (0x00000000u) /*!< PVD threshold level 0 for falling detection */ +#define PWR_PVDLEVEL_FALLING_1 (PWR_CR2_PVDFT_0) /*!< PVD threshold level 1 for falling detection */ +#define PWR_PVDLEVEL_FALLING_2 (PWR_CR2_PVDFT_1) /*!< PVD threshold level 2 for falling detection */ +#define PWR_PVDLEVEL_FALLING_3 (PWR_CR2_PVDFT_0 | PWR_CR2_PVDFT_1) /*!< PVD threshold level 3 for falling detection */ +#define PWR_PVDLEVEL_FALLING_4 (PWR_CR2_PVDFT_2) /*!< PVD threshold level 4 for falling detection */ +#define PWR_PVDLEVEL_FALLING_5 (PWR_CR2_PVDFT_2 | PWR_CR2_PVDFT_0) /*!< PVD threshold level 5 for falling detection */ +#define PWR_PVDLEVEL_FALLING_6 (PWR_CR2_PVDFT_2 | PWR_CR2_PVDFT_1) /*!< PVD threshold level 6 for falling detection */ +#define PWR_PVDLEVEL_0 (PWR_PVDLEVEL_RISING_0 | PWR_PVDLEVEL_FALLING_0) /*!< same PVD threshold level 0 on rising & falling */ +#define PWR_PVDLEVEL_1 (PWR_PVDLEVEL_RISING_1 | PWR_PVDLEVEL_FALLING_1) /*!< same PVD threshold level 1 on rising & falling */ +#define PWR_PVDLEVEL_2 (PWR_PVDLEVEL_RISING_2 | PWR_PVDLEVEL_FALLING_2) /*!< same PVD threshold level 2 on rising & falling */ +#define PWR_PVDLEVEL_3 (PWR_PVDLEVEL_RISING_3 | PWR_PVDLEVEL_FALLING_3) /*!< same PVD threshold level 3 on rising & falling */ +#define PWR_PVDLEVEL_4 (PWR_PVDLEVEL_RISING_4 | PWR_PVDLEVEL_FALLING_4) /*!< same PVD threshold level 4 on rising & falling */ +#define PWR_PVDLEVEL_5 (PWR_PVDLEVEL_RISING_5 | PWR_PVDLEVEL_FALLING_5) /*!< same PVD threshold level 5 on rising & falling */ +#define PWR_PVDLEVEL_6 (PWR_PVDLEVEL_RISING_6 | PWR_PVDLEVEL_FALLING_6) /*!< same PVD threshold level 6 on rising & falling */ +#define PWR_PVDLEVEL_7 (PWR_CR2_PVDRT_2 | PWR_CR2_PVDRT_1 | PWR_CR2_PVDRT_0) /*!< External input analog voltage (compared internally to VREFINT) */ +/** + * @} + */ + +/** @defgroup PWR_PVD_Mode PWR PVD interrupt and event mode + * @{ + */ +#define PWR_PVD_MODE_NORMAL (0x00000000u) /*!< basic mode is used */ +#define PWR_PVD_MODE_IT_RISING (0x00010001u) /*!< External Interrupt Mode with Rising edge trigger detection */ +#define PWR_PVD_MODE_IT_FALLING (0x00010002u) /*!< External Interrupt Mode with Falling edge trigger detection */ +#define PWR_PVD_MODE_IT_RISING_FALLING (0x00010003u) /*!< External Interrupt Mode with Rising/Falling edge trigger detection */ +#define PWR_PVD_MODE_EVENT_RISING (0x00020001u) /*!< Event Mode with Rising edge trigger detection */ +#define PWR_PVD_MODE_EVENT_FALLING (0x00020002u) /*!< Event Mode with Falling edge trigger detection */ +#define PWR_PVD_MODE_EVENT_RISING_FALLING (0x00020003u) /*!< Event Mode with Rising/Falling edge trigger detection */ +/** + * @} + */ + +/** @defgroup PWR_PVD_EXTI_LINE PWR PVD external interrupt line + * @{ + */ +#define PWR_EXTI_LINE_PVD (EXTI_IMR1_IM16) /*!< External interrupt line 16 connected to PVD */ +/** + * @} + */ + +/** @defgroup PWR_PVD_EVENT_LINE PWR PVD event line + * @{ + */ +#define PWR_EVENT_LINE_PVD (EXTI_EMR1_EM16) /*!< Event line 16 connected to PVD */ +/** + * @} + */ +#endif /* PWR_PVD_SUPPORT */ + +#if defined(PWR_PVM_SUPPORT) +/** @defgroup PWREx_PVM_Type Peripheral Voltage Monitoring type + * @{ + */ +#define PWR_PVM_USB PWR_CR2_PVMEN_USB /*!< Peripheral Voltage Monitoring enable for USB peripheral: Enable to keep the USB peripheral voltage monitoring under control (power domain Vddio2) */ +/** + * @} + */ +/** @defgroup PWREx_PVM_Mode PWR PVM interrupt and event mode + * @{ + */ +#define PWR_PVM_MODE_NORMAL ((uint32_t)0x00000000) /*!< basic mode is used */ +#define PWR_PVM_MODE_IT_RISING ((uint32_t)0x00010001) /*!< External Interrupt Mode with Rising edge trigger detection */ +#define PWR_PVM_MODE_IT_FALLING ((uint32_t)0x00010002) /*!< External Interrupt Mode with Falling edge trigger detection */ +#define PWR_PVM_MODE_IT_RISING_FALLING ((uint32_t)0x00010003) /*!< External Interrupt Mode with Rising/Falling edge trigger detection */ +#define PWR_PVM_MODE_EVENT_RISING ((uint32_t)0x00020001) /*!< Event Mode with Rising edge trigger detection */ +#define PWR_PVM_MODE_EVENT_FALLING ((uint32_t)0x00020002) /*!< Event Mode with Falling edge trigger detection */ +#define PWR_PVM_MODE_EVENT_RISING_FALLING ((uint32_t)0x00020003) /*!< Event Mode with Rising/Falling edge trigger detection */ +/** + * @} + */ +/** @defgroup PWR_PVM_EXTI_LINE PWR PVM external interrupt line + * @{ + */ +#define PWR_EXTI_LINE_PVM (EXTI_IMR2_IM34) /*!< External interrupt line 34 connected to PVM */ +/** + * @} + */ + +/** @defgroup PWR_PVM_EVENT_LINE PWR PVM event line + * @{ + */ +#define PWR_EVENT_LINE_PVM (EXTI_EMR2_EM34) /*!< Event line 34 connected to PVM */ +/** + * @} + */ +#endif /* PWR_PVM_SUPPORT */ + +/** @defgroup PWREx_VBAT_Battery_Charging_Selection PWR battery charging resistor selection + * @{ + */ +#define PWR_BATTERY_CHARGING_RESISTOR_5 (0x00000000u) /*!< VBAT charging through a 5 kOhms resistor */ +#define PWR_BATTERY_CHARGING_RESISTOR_1_5 PWR_CR4_VBRS /*!< VBAT charging through a 1.5 kOhms resistor */ +/** + * @} + */ + +/** @defgroup PWREx_GPIO_Bit_Number GPIO bit position + * @brief for I/O pull up/down setting in standby/shutdown mode + * @{ + */ +#define PWR_GPIO_BIT_0 PWR_PUCRB_PU0 /*!< GPIO port I/O pin 0 */ +#define PWR_GPIO_BIT_1 PWR_PUCRB_PU1 /*!< GPIO port I/O pin 1 */ +#define PWR_GPIO_BIT_2 PWR_PUCRB_PU2 /*!< GPIO port I/O pin 2 */ +#define PWR_GPIO_BIT_3 PWR_PUCRB_PU3 /*!< GPIO port I/O pin 3 */ +#define PWR_GPIO_BIT_4 PWR_PUCRB_PU4 /*!< GPIO port I/O pin 4 */ +#define PWR_GPIO_BIT_5 PWR_PUCRB_PU5 /*!< GPIO port I/O pin 5 */ +#define PWR_GPIO_BIT_6 PWR_PUCRB_PU6 /*!< GPIO port I/O pin 6 */ +#define PWR_GPIO_BIT_7 PWR_PUCRB_PU7 /*!< GPIO port I/O pin 7 */ +#define PWR_GPIO_BIT_8 PWR_PUCRB_PU8 /*!< GPIO port I/O pin 8 */ +#define PWR_GPIO_BIT_9 PWR_PUCRB_PU9 /*!< GPIO port I/O pin 9 */ +#define PWR_GPIO_BIT_10 PWR_PUCRB_PU10 /*!< GPIO port I/O pin 10 */ +#define PWR_GPIO_BIT_11 PWR_PUCRB_PU11 /*!< GPIO port I/O pin 11 */ +#define PWR_GPIO_BIT_12 PWR_PUCRB_PU12 /*!< GPIO port I/O pin 12 */ +#define PWR_GPIO_BIT_13 PWR_PUCRB_PU13 /*!< GPIO port I/O pin 13 */ +#define PWR_GPIO_BIT_14 PWR_PUCRB_PU14 /*!< GPIO port I/O pin 14 */ +#define PWR_GPIO_BIT_15 PWR_PUCRB_PU15 /*!< GPIO port I/O pin 15 */ +/** + * @} + */ + +/** @defgroup PWREx_GPIO_Port GPIO Port + * @{ + */ +#define PWR_GPIO_A (0x00000000u) /*!< GPIO port A */ +#define PWR_GPIO_B (0x00000001u) /*!< GPIO port B */ +#define PWR_GPIO_C (0x00000002u) /*!< GPIO port C */ +#define PWR_GPIO_D (0x00000003u) /*!< GPIO port D */ +#if defined (GPIOE) +#define PWR_GPIO_E (0x00000004u) /*!< GPIO port E */ +#endif /* GPIOE */ +#define PWR_GPIO_F (0x00000005u) /*!< GPIO port F */ +/** + * @} + */ + +/** @defgroup PWREx_Flash_PowerDown Flash Power Down modes + * @{ + */ +#define PWR_FLASHPD_LPRUN PWR_CR1_FPD_LPRUN /*!< Enable Flash power down in low power run mode */ +#define PWR_FLASHPD_LPSLEEP PWR_CR1_FPD_LPSLP /*!< Enable Flash power down in low power sleep mode */ +#define PWR_FLASHPD_STOP PWR_CR1_FPD_STOP /*!< Enable Flash power down in stop mode */ +/** + * @} + */ + +/** @defgroup PWREx_Regulator_Voltage_Scale PWR Regulator voltage scale + * @{ + */ +#define PWR_REGULATOR_VOLTAGE_SCALE1 PWR_CR1_VOS_0 /*!< Voltage scaling range 1 */ +#define PWR_REGULATOR_VOLTAGE_SCALE2 PWR_CR1_VOS_1 /*!< Voltage scaling range 2 */ +/** + * @} + */ + +/** @addtogroup PWR_Flag PWR Status Flags + * @brief Elements values convention: 0000 00XX 000Y YYYYb + * - Y YYYY : Flag position in the XX register (5 bits) + * - XX : Status register (2 bits) + * - 01: SR1 register + * - 10: SR2 register + * The only exception is PWR_FLAG_WU, encompassing all + * wake-up flags and set to PWR_SR1_WUF. + * @{ + */ +#if defined(PWR_PVM_SUPPORT) +#define PWR_FLAG_PVMOUSB (0x00020000u | PWR_SR2_PVMO_USB) /*!< USB Peripheral Voltage Monitoring output */ +#endif /* PWR_PVM_SUPPORT */ +/** + * @} + */ + +/** + * @} + */ + +/* Exported macros -----------------------------------------------------------*/ +/** @addtogroup PWREx_Exported_Macros PWR Extended Exported Macros + * @{ + */ +#if defined(PWR_PVD_SUPPORT) +/** + * @brief Enable the PVD Extended Interrupt Line. + * @retval None + */ +#define __HAL_PWR_PVD_EXTI_ENABLE_IT() SET_BIT(EXTI->IMR1, PWR_EXTI_LINE_PVD) + +/** + * @brief Disable the PVD Extended Interrupt Line. + * @retval None + */ +#define __HAL_PWR_PVD_EXTI_DISABLE_IT() CLEAR_BIT(EXTI->IMR1, PWR_EXTI_LINE_PVD) + +/** + * @brief Enable the PVD Event Line. + * @retval None + */ +#define __HAL_PWR_PVD_EXTI_ENABLE_EVENT() SET_BIT(EXTI->EMR1, PWR_EVENT_LINE_PVD) + +/** + * @brief Disable the PVD Event Line. + * @retval None + */ +#define __HAL_PWR_PVD_EXTI_DISABLE_EVENT() CLEAR_BIT(EXTI->EMR1, PWR_EVENT_LINE_PVD) + +/** + * @brief Enable the PVD Extended Interrupt Rising Trigger. + * @retval None + */ +#define __HAL_PWR_PVD_EXTI_ENABLE_RISING_EDGE() SET_BIT(EXTI->RTSR1, PWR_EXTI_LINE_PVD) + +/** + * @brief Disable the PVD Extended Interrupt Rising Trigger. + * @retval None + */ +#define __HAL_PWR_PVD_EXTI_DISABLE_RISING_EDGE() CLEAR_BIT(EXTI->RTSR1, PWR_EXTI_LINE_PVD) + +/** + * @brief Enable the PVD Extended Interrupt Falling Trigger. + * @retval None + */ +#define __HAL_PWR_PVD_EXTI_ENABLE_FALLING_EDGE() SET_BIT(EXTI->FTSR1, PWR_EXTI_LINE_PVD) + +/** + * @brief Disable the PVD Extended Interrupt Falling Trigger. + * @retval None + */ +#define __HAL_PWR_PVD_EXTI_DISABLE_FALLING_EDGE() CLEAR_BIT(EXTI->FTSR1, PWR_EXTI_LINE_PVD) + +/** + * @brief Enable the PVD Extended Interrupt Rising & Falling Trigger. + * @retval None + */ +#define __HAL_PWR_PVD_EXTI_ENABLE_RISING_FALLING_EDGE() \ + do { \ + __HAL_PWR_PVD_EXTI_ENABLE_RISING_EDGE(); \ + __HAL_PWR_PVD_EXTI_ENABLE_FALLING_EDGE(); \ + } while(0U) + +/** + * @brief Disable the PVD Extended Interrupt Rising & Falling Trigger. + * @retval None + */ +#define __HAL_PWR_PVD_EXTI_DISABLE_RISING_FALLING_EDGE() \ + do { \ + __HAL_PWR_PVD_EXTI_DISABLE_RISING_EDGE(); \ + __HAL_PWR_PVD_EXTI_DISABLE_FALLING_EDGE(); \ + } while(0U) + +/** + * @brief Generate a Software interrupt on selected EXTI line. + * @retval None + */ +#define __HAL_PWR_PVD_EXTI_GENERATE_SWIT() SET_BIT(EXTI->SWIER1, PWR_EXTI_LINE_PVD) + +/** + * @brief Check whether or not the PVD EXTI interrupt Rising flag is set. + * @retval EXTI PVD Line Status. + */ +#define __HAL_PWR_PVD_EXTI_GET_RISING_FLAG() (EXTI->RPR1 & PWR_EXTI_LINE_PVD) + +/** + * @brief Check whether or not the PVD EXTI interrupt Falling flag is set. + * @retval EXTI PVD Line Status. + */ +#define __HAL_PWR_PVD_EXTI_GET_FALLING_FLAG() (EXTI->FPR1 & PWR_EXTI_LINE_PVD) + +/** + * @brief Clear the PVD EXTI interrupt Rising flag. + * @retval None + */ +#define __HAL_PWR_PVD_EXTI_CLEAR_RISING_FLAG() WRITE_REG(EXTI->RPR1, PWR_EXTI_LINE_PVD) + +/** + * @brief Clear the PVD EXTI interrupt Falling flag. + * @retval None + */ +#define __HAL_PWR_PVD_EXTI_CLEAR_FALLING_FLAG() WRITE_REG(EXTI->FPR1, PWR_EXTI_LINE_PVD) +#endif /* PWR_PVD_SUPPORT */ + +#if defined(PWR_PVM_SUPPORT) +/** + * @brief Enable the PVM Extended Interrupt Line. + * @retval None + */ +#define __HAL_PWR_PVM_EXTI_ENABLE_IT() SET_BIT(EXTI->IMR2, PWR_EXTI_LINE_PVM) + +/** + * @brief Disable the PVM Extended Interrupt Line. + * @retval None + */ +#define __HAL_PWR_PVM_EXTI_DISABLE_IT() CLEAR_BIT(EXTI->IMR2, PWR_EXTI_LINE_PVM) + +/** + * @brief Enable the PVM Event Line. + * @retval None + */ +#define __HAL_PWR_PVM_EXTI_ENABLE_EVENT() SET_BIT(EXTI->EMR2, PWR_EVENT_LINE_PVM) + +/** + * @brief Disable the PVM Event Line. + * @retval None + */ +#define __HAL_PWR_PVM_EXTI_DISABLE_EVENT() CLEAR_BIT(EXTI->EMR2, PWR_EVENT_LINE_PVM) + +/** + * @brief Enable the PVM Extended Interrupt Rising Trigger. + * @retval None + */ +#define __HAL_PWR_PVM_EXTI_ENABLE_RISING_EDGE() SET_BIT(EXTI->RTSR2, PWR_EXTI_LINE_PVM) + +/** + * @brief Disable the PVM Extended Interrupt Rising Trigger. + * @retval None + */ +#define __HAL_PWR_PVM_EXTI_DISABLE_RISING_EDGE() CLEAR_BIT(EXTI->RTSR2, PWR_EXTI_LINE_PVM) + +/** + * @brief Enable the PVM Extended Interrupt Falling Trigger. + * @retval None + */ +#define __HAL_PWR_PVM_EXTI_ENABLE_FALLING_EDGE() SET_BIT(EXTI->FTSR2, PWR_EXTI_LINE_PVM) + +/** + * @brief Disable the PVM Extended Interrupt Falling Trigger. + * @retval None + */ +#define __HAL_PWR_PVM_EXTI_DISABLE_FALLING_EDGE() CLEAR_BIT(EXTI->FTSR2, PWR_EXTI_LINE_PVM) + +/** + * @brief Enable the PVM Extended Interrupt Rising & Falling Trigger. + * @retval None + */ +#define __HAL_PWR_PVM_EXTI_ENABLE_RISING_FALLING_EDGE() \ + do { \ + __HAL_PWR_PVM_EXTI_ENABLE_RISING_EDGE(); \ + __HAL_PWR_PVM_EXTI_ENABLE_FALLING_EDGE(); \ + } while(0U) + +/** + * @brief Disable the PVM Extended Interrupt Rising & Falling Trigger. + * @retval None + */ +#define __HAL_PWR_PVM_EXTI_DISABLE_RISING_FALLING_EDGE() \ + do { \ + __HAL_PWR_PVM_EXTI_DISABLE_RISING_EDGE(); \ + __HAL_PWR_PVM_EXTI_DISABLE_FALLING_EDGE(); \ + } while(0U) + +/** + * @brief Generate a Software interrupt on selected EXTI line. + * @retval None + */ +#define __HAL_PWR_PVM_EXTI_GENERATE_SWIT() SET_BIT(EXTI->SWIER2, PWR_EXTI_LINE_PVM) + +/** + * @brief Check whether or not the PVM EXTI interrupt Rising flag is set. + * @retval EXTI PVM Line Status. + */ +#define __HAL_PWR_PVM_EXTI_GET_RISING_FLAG() (EXTI->RPR2 & PWR_EXTI_LINE_PVM) + +/** + * @brief Check whether or not the PVM EXTI interrupt Falling flag is set. + * @retval EXTI PVM Line Status. + */ +#define __HAL_PWR_PVM_EXTI_GET_FALLING_FLAG() (EXTI->FPR2 & PWR_EXTI_LINE_PVM) + +/** + * @brief Clear the PVM EXTI interrupt Rising flag. + * @retval None + */ +#define __HAL_PWR_PVM_EXTI_CLEAR_RISING_FLAG() WRITE_REG(EXTI->RPR2, PWR_EXTI_LINE_PVM) + +/** + * @brief Clear the PVM EXTI interrupt Falling flag. + * @retval None + */ +#define __HAL_PWR_PVM_EXTI_CLEAR_FALLING_FLAG() WRITE_REG(EXTI->FPR2, PWR_EXTI_LINE_PVM) +#endif /* PWR_PVM_SUPPORT */ +/** + * @} + */ + +/* Private define ------------------------------------------------------------*/ +/** @defgroup PWR_Extended_Private_Defines PWR Extended Private Defines + * @{ + */ + +/** @defgroup PWREx_PVM_Mode_Mask PWR PVM Mode Mask + * @{ + */ +#define PVM_MODE_IT ((uint32_t)0x00010000) /*!< Mask for interruption yielded by PVM threshold crossing */ +#define PVM_MODE_EVT ((uint32_t)0x00020000) /*!< Mask for event yielded by PVM threshold crossing */ +#define PVM_RISING_EDGE ((uint32_t)0x00000001) /*!< Mask for rising edge set as PVM trigger */ +#define PVM_FALLING_EDGE ((uint32_t)0x00000002) /*!< Mask for falling edge set as PVM trigger */ +/** + * @} + */ + +/** + * @} + */ +/* Private macros ------------------------------------------------------------*/ +/** @addtogroup PWREx_Private_Macros PWR Extended Private Macros + * @{ + */ + +#define IS_PWR_BATTERY_RESISTOR_SELECT(__RESISTOR__) (((__RESISTOR__) == PWR_BATTERY_CHARGING_RESISTOR_5) || \ + ((__RESISTOR__) == PWR_BATTERY_CHARGING_RESISTOR_1_5)) + +#define IS_PWR_GPIO_BIT_NUMBER(__BIT_NUMBER__) ((((__BIT_NUMBER__) & 0x0000FFFFu) != 0x00u) && \ + (((__BIT_NUMBER__) & 0xFFFF0000u) == 0x00u)) +#if defined (GPIOE) +#define IS_PWR_GPIO(__GPIO__) (((__GPIO__) == PWR_GPIO_A) || \ + ((__GPIO__) == PWR_GPIO_B) || \ + ((__GPIO__) == PWR_GPIO_C) || \ + ((__GPIO__) == PWR_GPIO_D) || \ + ((__GPIO__) == PWR_GPIO_E) || \ + ((__GPIO__) == PWR_GPIO_F)) +#else +#define IS_PWR_GPIO(__GPIO__) (((__GPIO__) == PWR_GPIO_A) || \ + ((__GPIO__) == PWR_GPIO_B) || \ + ((__GPIO__) == PWR_GPIO_C) || \ + ((__GPIO__) == PWR_GPIO_D) || \ + ((__GPIO__) == PWR_GPIO_F)) +#endif /* GPIOE */ + +#define IS_PWR_FLASH_POWERDOWN(__MODE__) ((((__MODE__) & (PWR_FLASHPD_LPRUN | PWR_FLASHPD_LPSLEEP | PWR_FLASHPD_STOP)) != 0x00u) && \ + (((__MODE__) & ~(PWR_FLASHPD_LPRUN | PWR_FLASHPD_LPSLEEP | PWR_FLASHPD_STOP)) == 0x00u)) + +#define IS_PWR_VOLTAGE_SCALING_RANGE(RANGE) (((RANGE) == PWR_REGULATOR_VOLTAGE_SCALE1) || \ + ((RANGE) == PWR_REGULATOR_VOLTAGE_SCALE2)) + +#if defined(PWR_PVD_SUPPORT) +#define IS_PWR_PVD_LEVEL(LEVEL) (((LEVEL) & ~(PWR_CR2_PVDRT | PWR_CR2_PVDFT)) == 0x00000000u) + +#define IS_PWR_PVD_MODE(MODE) (((MODE) == PWR_PVD_MODE_NORMAL) || \ + ((MODE) == PWR_PVD_MODE_IT_RISING) || \ + ((MODE) == PWR_PVD_MODE_IT_FALLING) || \ + ((MODE) == PWR_PVD_MODE_IT_RISING_FALLING) || \ + ((MODE) == PWR_PVD_MODE_EVENT_RISING) || \ + ((MODE) == PWR_PVD_MODE_EVENT_FALLING) || \ + ((MODE) == PWR_PVD_MODE_EVENT_RISING_FALLING)) +#endif /* PWR_PVD_SUPPORT */ + +#if defined(PWR_PVM_SUPPORT) +#define IS_PWR_PVM_TYPE(TYPE) ((TYPE) == PWR_PVM_USB) + +#define IS_PWR_PVM_MODE(MODE) (((MODE) == PWR_PVM_MODE_NORMAL) ||\ + ((MODE) == PWR_PVM_MODE_IT_RISING) ||\ + ((MODE) == PWR_PVM_MODE_IT_FALLING) ||\ + ((MODE) == PWR_PVM_MODE_IT_RISING_FALLING) ||\ + ((MODE) == PWR_PVM_MODE_EVENT_RISING) ||\ + ((MODE) == PWR_PVM_MODE_EVENT_FALLING) ||\ + ((MODE) == PWR_PVM_MODE_EVENT_RISING_FALLING)) +#endif /* PWR_PVM_SUPPORT */ +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup PWREx_Exported_Functions PWR Extended Exported Functions + * @{ + */ + +/** @defgroup PWREx_Exported_Functions_Group1 Extended Peripheral Control functions + * @{ + */ + +/* Peripheral Control functions **********************************************/ +void HAL_PWREx_EnableBatteryCharging(uint32_t ResistorSelection); +void HAL_PWREx_DisableBatteryCharging(void); +#if defined(PWR_CR3_ENB_ULP) +void HAL_PWREx_EnablePORMonitorSampling(void); +void HAL_PWREx_DisablePORMonitorSampling(void); +#endif /* PWR_CR3_ENB_ULP */ +void HAL_PWREx_EnableInternalWakeUpLine(void); +void HAL_PWREx_DisableInternalWakeUpLine(void); +HAL_StatusTypeDef HAL_PWREx_EnableGPIOPullUp(uint32_t GPIO, uint32_t GPIONumber); +HAL_StatusTypeDef HAL_PWREx_DisableGPIOPullUp(uint32_t GPIO, uint32_t GPIONumber); +HAL_StatusTypeDef HAL_PWREx_EnableGPIOPullDown(uint32_t GPIO, uint32_t GPIONumber); +HAL_StatusTypeDef HAL_PWREx_DisableGPIOPullDown(uint32_t GPIO, uint32_t GPIONumber); +void HAL_PWREx_EnablePullUpPullDownConfig(void); +void HAL_PWREx_DisablePullUpPullDownConfig(void); +#if defined(PWR_CR3_RRS) +void HAL_PWREx_EnableSRAMRetention(void); +void HAL_PWREx_DisableSRAMRetention(void); +#endif /* PWR_CR3_RRS */ +void HAL_PWREx_EnableFlashPowerDown(uint32_t PowerMode); +void HAL_PWREx_DisableFlashPowerDown(uint32_t PowerMode); +uint32_t HAL_PWREx_GetVoltageRange(void); +HAL_StatusTypeDef HAL_PWREx_ControlVoltageScaling(uint32_t VoltageScaling); +#if defined(PWR_PVD_SUPPORT) +/* Power voltage detection configuration functions ****************************/ +HAL_StatusTypeDef HAL_PWREx_ConfigPVD(PWR_PVDTypeDef *sConfigPVD); +void HAL_PWREx_EnablePVD(void); +void HAL_PWREx_DisablePVD(void); +#endif /* PWR_PVD_SUPPORT */ +#if defined(PWR_PVM_SUPPORT) +/* Power voltage monitoring configuration functions ***************************/ +void HAL_PWREx_EnableVddIO2(void); +void HAL_PWREx_DisableVddIO2(void); +void HAL_PWREx_EnableVddUSB(void); +void HAL_PWREx_DisableVddUSB(void); +void HAL_PWREx_EnablePVMUSB(void); +void HAL_PWREx_DisablePVMUSB(void); +HAL_StatusTypeDef HAL_PWREx_ConfigPVM(PWR_PVMTypeDef *sConfigPVM); +#endif /* PWR_PVM_SUPPORT */ + +/* Low Power modes configuration functions ************************************/ +void HAL_PWREx_EnableLowPowerRunMode(void); +HAL_StatusTypeDef HAL_PWREx_DisableLowPowerRunMode(void); +#if defined(PWR_SHDW_SUPPORT) +void HAL_PWREx_EnterSHUTDOWNMode(void); +#endif /* PWR_SHDW_SUPPORT */ + +#if defined(PWR_PVD_SUPPORT) && defined(PWR_PVM_SUPPORT) +void HAL_PWREx_PVD_PVM_IRQHandler(void); +void HAL_PWREx_PVD_PVM_Rising_Callback(void); +void HAL_PWREx_PVD_PVM_Falling_Callback(void); +#elif defined(PWR_PVD_SUPPORT) +void HAL_PWREx_PVD_IRQHandler(void); +void HAL_PWREx_PVD_Rising_Callback(void); +void HAL_PWREx_PVD_Falling_Callback(void); +#endif /* PWR_PVD_SUPPORT && PWR_PVM_SUPPORT */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + + +#endif /* STM32G0xx_HAL_PWR_EX_H */ diff --git a/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_rcc.h b/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_rcc.h new file mode 100644 index 0000000..9093c82 --- /dev/null +++ b/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_rcc.h @@ -0,0 +1,3135 @@ +/** + ****************************************************************************** + * @file stm32g0xx_hal_rcc.h + * @author MCD Application Team + * @brief Header file of RCC HAL module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2018 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file in + * the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32G0xx_HAL_RCC_H +#define STM32G0xx_HAL_RCC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32g0xx_hal_def.h" +#include "stm32g0xx_ll_rcc.h" + +/** @addtogroup STM32G0xx_HAL_Driver + * @{ + */ + +/** @addtogroup RCC + * @{ + */ + +/* Private constants ---------------------------------------------------------*/ +/** @addtogroup RCC_Private_Constants + * @{ + */ +/* Defines used for Flags */ +#define CR_REG_INDEX 1U +#define BDCR_REG_INDEX 2U +#define CSR_REG_INDEX 3U +#if defined(RCC_HSI48_SUPPORT) +#define CRRCR_REG_INDEX 4U +#endif /* RCC_HSI48_SUPPORT */ + +#define RCC_FLAG_MASK 0x1FU + +/* Define used for IS_RCC_CLOCKTYPE() */ +#define RCC_CLOCKTYPE_ALL (RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1) /*!< All clocktype to configure */ +/** + * @} + */ + +/* Private macros ------------------------------------------------------------*/ +/** @addtogroup RCC_Private_Macros + * @{ + */ + +#if defined(RCC_HSI48_SUPPORT) +#define IS_RCC_OSCILLATORTYPE(__OSCILLATOR__) \ + (((__OSCILLATOR__) == RCC_OSCILLATORTYPE_NONE) || \ + (((__OSCILLATOR__) & RCC_OSCILLATORTYPE_HSE) == RCC_OSCILLATORTYPE_HSE) || \ + (((__OSCILLATOR__) & RCC_OSCILLATORTYPE_HSI) == RCC_OSCILLATORTYPE_HSI) || \ + (((__OSCILLATOR__) & RCC_OSCILLATORTYPE_HSI48) == RCC_OSCILLATORTYPE_HSI48) || \ + (((__OSCILLATOR__) & RCC_OSCILLATORTYPE_LSI) == RCC_OSCILLATORTYPE_LSI) || \ + (((__OSCILLATOR__) & RCC_OSCILLATORTYPE_LSE) == RCC_OSCILLATORTYPE_LSE)) +#else +#define IS_RCC_OSCILLATORTYPE(__OSCILLATOR__) \ + (((__OSCILLATOR__) == RCC_OSCILLATORTYPE_NONE) || \ + (((__OSCILLATOR__) & RCC_OSCILLATORTYPE_HSE) == RCC_OSCILLATORTYPE_HSE) || \ + (((__OSCILLATOR__) & RCC_OSCILLATORTYPE_HSI) == RCC_OSCILLATORTYPE_HSI) || \ + (((__OSCILLATOR__) & RCC_OSCILLATORTYPE_LSI) == RCC_OSCILLATORTYPE_LSI) || \ + (((__OSCILLATOR__) & RCC_OSCILLATORTYPE_LSE) == RCC_OSCILLATORTYPE_LSE)) +#endif /* RCC_HSI48_SUPPORT */ + +#define IS_RCC_HSE(__HSE__) (((__HSE__) == RCC_HSE_OFF) || ((__HSE__) == RCC_HSE_ON) || \ + ((__HSE__) == RCC_HSE_BYPASS)) + +#define IS_RCC_LSE(__LSE__) (((__LSE__) == RCC_LSE_OFF) || ((__LSE__) == RCC_LSE_ON) || \ + ((__LSE__) == RCC_LSE_BYPASS)) + +#define IS_RCC_HSI(__HSI__) (((__HSI__) == RCC_HSI_OFF) || ((__HSI__) == RCC_HSI_ON)) + +#if defined(RCC_HSI48_SUPPORT) +#define IS_RCC_HSI48(__HSI48__) (((__HSI48__) == RCC_HSI48_OFF) || ((__HSI48__) == RCC_HSI48_ON)) +#endif /* RCC_HSI48_SUPPORT */ + +#define IS_RCC_HSI_CALIBRATION_VALUE(__VALUE__) ((__VALUE__) <= (uint32_t)127U) + +#define IS_RCC_HSIDIV(__DIV__) (((__DIV__) == RCC_HSI_DIV1) || ((__DIV__) == RCC_HSI_DIV2) || \ + ((__DIV__) == RCC_HSI_DIV4) || ((__DIV__) == RCC_HSI_DIV8) || \ + ((__DIV__) == RCC_HSI_DIV16) || ((__DIV__) == RCC_HSI_DIV32)|| \ + ((__DIV__) == RCC_HSI_DIV64) || ((__DIV__) == RCC_HSI_DIV128)) + +#define IS_RCC_LSI(__LSI__) (((__LSI__) == RCC_LSI_OFF) || ((__LSI__) == RCC_LSI_ON)) + +#define IS_RCC_PLL(__PLL__) (((__PLL__) == RCC_PLL_NONE) ||((__PLL__) == RCC_PLL_OFF) || \ + ((__PLL__) == RCC_PLL_ON)) + +#define IS_RCC_PLLSOURCE(__SOURCE__) (((__SOURCE__) == RCC_PLLSOURCE_NONE) || \ + ((__SOURCE__) == RCC_PLLSOURCE_HSI) || \ + ((__SOURCE__) == RCC_PLLSOURCE_HSE)) + +#define IS_RCC_PLLM_VALUE(__VALUE__) (((__VALUE__) == RCC_PLLM_DIV1) || ((__VALUE__) == RCC_PLLM_DIV2) || \ + ((__VALUE__) == RCC_PLLM_DIV3) || ((__VALUE__) == RCC_PLLM_DIV4) || \ + ((__VALUE__) == RCC_PLLM_DIV5) || ((__VALUE__) == RCC_PLLM_DIV6) || \ + ((__VALUE__) == RCC_PLLM_DIV7) || ((__VALUE__) == RCC_PLLM_DIV8)) + +#define IS_RCC_PLLN_VALUE(__VALUE__) ((8U <= (__VALUE__)) && ((__VALUE__) <= 86U)) + +#define IS_RCC_PLLP_VALUE(__VALUE__) ((RCC_PLLP_DIV2 <= (__VALUE__)) && ((__VALUE__) <= RCC_PLLP_DIV32)) + +#if defined(RCC_PLLQ_SUPPORT) +#define IS_RCC_PLLQ_VALUE(__VALUE__) ((RCC_PLLQ_DIV2 <= (__VALUE__)) && ((__VALUE__) <= RCC_PLLQ_DIV8)) +#endif /* RCC_PLLQ_SUPPORT */ + +#define IS_RCC_PLLR_VALUE(__VALUE__) ((RCC_PLLR_DIV2 <= (__VALUE__)) && ((__VALUE__) <= RCC_PLLR_DIV8)) + +#define IS_RCC_CLOCKTYPE(__CLK__) ((((__CLK__)\ + & RCC_CLOCKTYPE_ALL) != 0x00UL) && (((__CLK__) & ~RCC_CLOCKTYPE_ALL) == 0x00UL)) + +#define IS_RCC_SYSCLKSOURCE(__SOURCE__) (((__SOURCE__) == RCC_SYSCLKSOURCE_HSI) || \ + ((__SOURCE__) == RCC_SYSCLKSOURCE_HSE) || \ + ((__SOURCE__) == RCC_SYSCLKSOURCE_LSE) || \ + ((__SOURCE__) == RCC_SYSCLKSOURCE_LSI) || \ + ((__SOURCE__) == RCC_SYSCLKSOURCE_PLLCLK)) + +#define IS_RCC_HCLK(__HCLK__) (((__HCLK__) == RCC_SYSCLK_DIV1) || ((__HCLK__) == RCC_SYSCLK_DIV2) || \ + ((__HCLK__) == RCC_SYSCLK_DIV4) || ((__HCLK__) == RCC_SYSCLK_DIV8) || \ + ((__HCLK__) == RCC_SYSCLK_DIV16) || ((__HCLK__) == RCC_SYSCLK_DIV64) || \ + ((__HCLK__) == RCC_SYSCLK_DIV128) || ((__HCLK__) == RCC_SYSCLK_DIV256) || \ + ((__HCLK__) == RCC_SYSCLK_DIV512)) + +#define IS_RCC_PCLK(__PCLK__) (((__PCLK__) == RCC_HCLK_DIV1) || ((__PCLK__) == RCC_HCLK_DIV2) || \ + ((__PCLK__) == RCC_HCLK_DIV4) || ((__PCLK__) == RCC_HCLK_DIV8) || \ + ((__PCLK__) == RCC_HCLK_DIV16)) + +#define IS_RCC_RTCCLKSOURCE(__SOURCE__) (((__SOURCE__) == RCC_RTCCLKSOURCE_NONE) || \ + ((__SOURCE__) == RCC_RTCCLKSOURCE_LSE) || \ + ((__SOURCE__) == RCC_RTCCLKSOURCE_LSI) || \ + ((__SOURCE__) == RCC_RTCCLKSOURCE_HSE_DIV32)) + +#if defined(RCC_MCO2_SUPPORT) +#define IS_RCC_MCO(__MCOX__) ( ((__MCOX__) == RCC_MCO1) || ((__MCOX__) == RCC_MCO2) ) +#else +#define IS_RCC_MCO(__MCOX__) ((__MCOX__) == RCC_MCO1) +#endif /* RCC_MCO2_SUPPORT */ + +#if defined(STM32G0C1xx) || defined(STM32G0B1xx) +#define IS_RCC_MCO1SOURCE(__SOURCE__) (((__SOURCE__) == RCC_MCO1SOURCE_NOCLOCK) || \ + ((__SOURCE__) == RCC_MCO1SOURCE_SYSCLK) || \ + ((__SOURCE__) == RCC_MCO1SOURCE_HSI) || \ + ((__SOURCE__) == RCC_MCO1SOURCE_HSI48) || \ + ((__SOURCE__) == RCC_MCO1SOURCE_HSE) || \ + ((__SOURCE__) == RCC_MCO1SOURCE_PLLCLK) || \ + ((__SOURCE__) == RCC_MCO1SOURCE_LSI) || \ + ((__SOURCE__) == RCC_MCO1SOURCE_LSE) || \ + ((__SOURCE__) == RCC_MCO1SOURCE_PLLPCLK) || \ + ((__SOURCE__) == RCC_MCO1SOURCE_PLLQCLK) || \ + ((__SOURCE__) == RCC_MCO1SOURCE_RTCCLK) || \ + ((__SOURCE__) == RCC_MCO1SOURCE_RTC_WKUP)) +#elif defined(STM32G0B0xx) +#define IS_RCC_MCO1SOURCE(__SOURCE__) (((__SOURCE__) == RCC_MCO1SOURCE_NOCLOCK) || \ + ((__SOURCE__) == RCC_MCO1SOURCE_SYSCLK) || \ + ((__SOURCE__) == RCC_MCO1SOURCE_HSI) || \ + ((__SOURCE__) == RCC_MCO1SOURCE_HSE) || \ + ((__SOURCE__) == RCC_MCO1SOURCE_PLLCLK) || \ + ((__SOURCE__) == RCC_MCO1SOURCE_LSI) || \ + ((__SOURCE__) == RCC_MCO1SOURCE_LSE) || \ + ((__SOURCE__) == RCC_MCO1SOURCE_PLLPCLK) || \ + ((__SOURCE__) == RCC_MCO1SOURCE_PLLQCLK) || \ + ((__SOURCE__) == RCC_MCO1SOURCE_RTCCLK) || \ + ((__SOURCE__) == RCC_MCO1SOURCE_RTC_WKUP)) +#else +#define IS_RCC_MCO1SOURCE(__SOURCE__) (((__SOURCE__) == RCC_MCO1SOURCE_NOCLOCK) || \ + ((__SOURCE__) == RCC_MCO1SOURCE_SYSCLK) || \ + ((__SOURCE__) == RCC_MCO1SOURCE_HSI) || \ + ((__SOURCE__) == RCC_MCO1SOURCE_HSE) || \ + ((__SOURCE__) == RCC_MCO1SOURCE_PLLCLK) || \ + ((__SOURCE__) == RCC_MCO1SOURCE_LSI) || \ + ((__SOURCE__) == RCC_MCO1SOURCE_LSE)) +#endif /* STM32G0C1xx || STM32G0B1xx */ + +#if defined(STM32G0C1xx) || defined(STM32G0B1xx) || defined(STM32G0B0xx) +#define IS_RCC_MCODIV(__DIV__) (((__DIV__) == RCC_MCODIV_1) || ((__DIV__) == RCC_MCODIV_2) || \ + ((__DIV__) == RCC_MCODIV_4) || ((__DIV__) == RCC_MCODIV_8) || \ + ((__DIV__) == RCC_MCODIV_16) || ((__DIV__) == RCC_MCODIV_32) || \ + ((__DIV__) == RCC_MCODIV_64) || ((__DIV__) == RCC_MCODIV_128) || \ + ((__DIV__) == RCC_MCODIV_256)|| ((__DIV__) == RCC_MCODIV_512) || \ + ((__DIV__) == RCC_MCODIV_1024)) +#else +#define IS_RCC_MCODIV(__DIV__) (((__DIV__) == RCC_MCODIV_1) || ((__DIV__) == RCC_MCODIV_2) || \ + ((__DIV__) == RCC_MCODIV_4) || ((__DIV__) == RCC_MCODIV_8) || \ + ((__DIV__) == RCC_MCODIV_16) || ((__DIV__) == RCC_MCODIV_32) || \ + ((__DIV__) == RCC_MCODIV_64) || ((__DIV__) == RCC_MCODIV_128)) +#endif /* STM32G0C1xx || STM32G0B1xx || STM32G0B0xx */ + +#if defined(RCC_MCO2_SUPPORT) +#if defined(RCC_HSI48_SUPPORT) +#define IS_RCC_MCO2SOURCE(__SOURCE__) (((__SOURCE__) == RCC_MCO2SOURCE_NOCLOCK) || \ + ((__SOURCE__) == RCC_MCO2SOURCE_SYSCLK) || \ + ((__SOURCE__) == RCC_MCO2SOURCE_HSI48) || \ + ((__SOURCE__) == RCC_MCO2SOURCE_HSI) || \ + ((__SOURCE__) == RCC_MCO2SOURCE_HSE) || \ + ((__SOURCE__) == RCC_MCO2SOURCE_PLLCLK) || \ + ((__SOURCE__) == RCC_MCO2SOURCE_LSI) || \ + ((__SOURCE__) == RCC_MCO2SOURCE_LSE) || \ + ((__SOURCE__) == RCC_MCO2SOURCE_PLLPCLK) || \ + ((__SOURCE__) == RCC_MCO2SOURCE_PLLQCLK) || \ + ((__SOURCE__) == RCC_MCO2SOURCE_RTCCLK) || \ + ((__SOURCE__) == RCC_MCO2SOURCE_RTC_WKUP)) +#else +#define IS_RCC_MCO2SOURCE(__SOURCE__) (((__SOURCE__) == RCC_MCO2SOURCE_NOCLOCK) || \ + ((__SOURCE__) == RCC_MCO2SOURCE_SYSCLK) || \ + ((__SOURCE__) == RCC_MCO2SOURCE_HSI) || \ + ((__SOURCE__) == RCC_MCO2SOURCE_HSE) || \ + ((__SOURCE__) == RCC_MCO2SOURCE_PLLCLK) || \ + ((__SOURCE__) == RCC_MCO2SOURCE_LSI) || \ + ((__SOURCE__) == RCC_MCO2SOURCE_LSE) || \ + ((__SOURCE__) == RCC_MCO2SOURCE_PLLPCLK) || \ + ((__SOURCE__) == RCC_MCO2SOURCE_PLLQCLK) || \ + ((__SOURCE__) == RCC_MCO2SOURCE_RTCCLK) || \ + ((__SOURCE__) == RCC_MCO2SOURCE_RTC_WKUP)) +#endif /* RCC_HSI48_SUPPORT */ +#define IS_RCC_MCO2DIV(__DIV__) (((__DIV__) == RCC_MCO2DIV_1) || ((__DIV__) == RCC_MCO2DIV_2) || \ + ((__DIV__) == RCC_MCO2DIV_4) || ((__DIV__) == RCC_MCO2DIV_8) || \ + ((__DIV__) == RCC_MCO2DIV_16) || ((__DIV__) == RCC_MCO2DIV_32) || \ + ((__DIV__) == RCC_MCO2DIV_64) || ((__DIV__) == RCC_MCO2DIV_128)|| \ + ((__DIV__) == RCC_MCO2DIV_256)|| ((__DIV__) == RCC_MCO2DIV_512)|| \ + ((__DIV__) == RCC_MCO2DIV_1024)) + +#endif /* RCC_MCO2_SUPPORT */ + +#define IS_RCC_LSE_DRIVE(__DRIVE__) (((__DRIVE__) == RCC_LSEDRIVE_LOW) || \ + ((__DRIVE__) == RCC_LSEDRIVE_MEDIUMLOW) || \ + ((__DRIVE__) == RCC_LSEDRIVE_MEDIUMHIGH) || \ + ((__DRIVE__) == RCC_LSEDRIVE_HIGH)) + +/** + * @} + */ + +/* Exported types ------------------------------------------------------------*/ +/** @defgroup RCC_Exported_Types RCC Exported Types + * @{ + */ + +/** + * @brief RCC PLL configuration structure definition + */ +typedef struct +{ + uint32_t PLLState; /*!< The new state of the PLL. + This parameter can be a value of @ref RCC_PLL_Config */ + + uint32_t PLLSource; /*!< RCC_PLLSource: PLL entry clock source. + This parameter must be a value of @ref RCC_PLL_Clock_Source */ + + uint32_t PLLM; /*!< PLLM: Division factor for PLL VCO input clock. + This parameter must be a value of @ref RCC_PLLM_Clock_Divider */ + + uint32_t PLLN; /*!< PLLN: Multiplication factor for PLL VCO output clock. + This parameter must be a number between Min_Data = 8 and Max_Data = 86 */ + + uint32_t PLLP; /*!< PLLP: PLL Division factor. + User have to set the PLLQ parameter correctly to not exceed max frequency 64MHZ. + This parameter must be a value of @ref RCC_PLLP_Clock_Divider */ + +#if defined(RCC_PLLQ_SUPPORT) + uint32_t PLLQ; /*!< PLLQ: PLL Division factor. + User have to set the PLLQ parameter correctly to not exceed max frequency 64MHZ. + This parameter must be a value of @ref RCC_PLLQ_Clock_Divider */ +#endif /* RCC_PLLQ_SUPPORT */ + + uint32_t PLLR; /*!< PLLR: PLL Division for the main system clock. + User have to set the PLLR parameter correctly to not exceed max frequency 64MHZ. + This parameter must be a value of @ref RCC_PLLR_Clock_Divider */ + +} RCC_PLLInitTypeDef; + +/** + * @brief RCC Internal/External Oscillator (HSE, HSI, LSE and LSI) configuration structure definition + */ +typedef struct +{ + uint32_t OscillatorType; /*!< The oscillators to be configured. + This parameter can be a value of @ref RCC_Oscillator_Type */ + + uint32_t HSEState; /*!< The new state of the HSE. + This parameter can be a value of @ref RCC_HSE_Config */ + + uint32_t LSEState; /*!< The new state of the LSE. + This parameter can be a value of @ref RCC_LSE_Config */ + + uint32_t HSIState; /*!< The new state of the HSI. + This parameter can be a value of @ref RCC_HSI_Config */ + + uint32_t HSIDiv; /*!< The division factor of the HSI16. + This parameter can be a value of @ref RCC_HSI_Div */ + + uint32_t HSICalibrationValue; /*!< The calibration trimming value (default is RCC_HSICALIBRATION_DEFAULT). + This parameter must be a number between Min_Data = 0x00 and Max_Data = 0x7F */ + + uint32_t LSIState; /*!< The new state of the LSI. + This parameter can be a value of @ref RCC_LSI_Config */ + +#if defined(RCC_HSI48_SUPPORT) + uint32_t HSI48State; /*!< The new state of the HSI48 (only applicable to STM32G0C1xx/STM32G0B1xx/STM32G0B0xx devices). + This parameter can be a value of @ref RCC_HSI48_Config */ + +#endif /* RCC_HSI48_SUPPORT */ + + RCC_PLLInitTypeDef PLL; /*!< Main PLL structure parameters */ + +} RCC_OscInitTypeDef; + +/** + * @brief RCC System, AHB and APB buses clock configuration structure definition + */ +typedef struct +{ + uint32_t ClockType; /*!< The clock to be configured. + This parameter can be a combination of @ref RCC_System_Clock_Type */ + + uint32_t SYSCLKSource; /*!< The clock source used as system clock (SYSCLK). + This parameter can be a value of @ref RCC_System_Clock_Source */ + + uint32_t AHBCLKDivider; /*!< The AHB clock (HCLK) divider. This clock is derived from the system clock (SYSCLK). + This parameter can be a value of @ref RCC_AHB_Clock_Source */ + + uint32_t APB1CLKDivider; /*!< The APB1 clock (PCLK1) divider. This clock is derived from the AHB clock (HCLK). + This parameter can be a value of @ref RCC_APB1_Clock_Source */ + + +} RCC_ClkInitTypeDef; + +/** + * @} + */ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup RCC_Exported_Constants RCC Exported Constants + * @{ + */ + +/** @defgroup RCC_Timeout_Value Timeout Values + * @{ + */ +#define RCC_DBP_TIMEOUT_VALUE 2U /* 2 ms (minimum Tick + 1) */ +#define RCC_LSE_TIMEOUT_VALUE LSE_STARTUP_TIMEOUT /* LSE timeout in ms */ +/** + * @} + */ + +/** @defgroup RCC_Oscillator_Type Oscillator Type + * @{ + */ +#define RCC_OSCILLATORTYPE_NONE 0x00000000U /*!< Oscillator configuration unchanged */ +#define RCC_OSCILLATORTYPE_HSE 0x00000001U /*!< HSE to configure */ +#define RCC_OSCILLATORTYPE_HSI 0x00000002U /*!< HSI to configure */ +#define RCC_OSCILLATORTYPE_LSE 0x00000004U /*!< LSE to configure */ +#define RCC_OSCILLATORTYPE_LSI 0x00000008U /*!< LSI to configure */ +#if defined(RCC_HSI48_SUPPORT) +#define RCC_OSCILLATORTYPE_HSI48 0x00000020U /*!< HSI48 to configure */ +#endif /* RCC_HSI48_SUPPORT */ + +/** + * @} + */ + +/** @defgroup RCC_HSE_Config HSE Config + * @{ + */ +#define RCC_HSE_OFF 0x00000000U /*!< HSE clock deactivation */ +#define RCC_HSE_ON RCC_CR_HSEON /*!< HSE clock activation */ +#define RCC_HSE_BYPASS (RCC_CR_HSEBYP | RCC_CR_HSEON) /*!< External clock source for HSE clock */ +/** + * @} + */ + +/** @defgroup RCC_LSE_Config LSE Config + * @{ + */ +#define RCC_LSE_OFF 0x00000000U /*!< LSE clock deactivation */ +#define RCC_LSE_ON RCC_BDCR_LSEON /*!< LSE clock activation */ +#define RCC_LSE_BYPASS (RCC_BDCR_LSEBYP | RCC_BDCR_LSEON) /*!< External clock source for LSE clock */ +/** + * @} + */ + +/** @defgroup RCC_HSI_Config HSI Config + * @{ + */ +#define RCC_HSI_OFF 0x00000000U /*!< HSI clock deactivation */ +#define RCC_HSI_ON RCC_CR_HSION /*!< HSI clock activation */ + +#define RCC_HSICALIBRATION_DEFAULT 64U /*!< Default HSI calibration trimming value */ +/** + * @} + */ + +/** @defgroup RCC_HSI_Div HSI Div + * @{ + */ +#define RCC_HSI_DIV1 0x00000000U /*!< HSI clock is not divided */ +#define RCC_HSI_DIV2 RCC_CR_HSIDIV_0 /*!< HSI clock is divided by 2 */ +#define RCC_HSI_DIV4 RCC_CR_HSIDIV_1 /*!< HSI clock is divided by 4 */ +#define RCC_HSI_DIV8 (RCC_CR_HSIDIV_1|RCC_CR_HSIDIV_0) /*!< HSI clock is divided by 8 */ +#define RCC_HSI_DIV16 RCC_CR_HSIDIV_2 /*!< HSI clock is divided by 16 */ +#define RCC_HSI_DIV32 (RCC_CR_HSIDIV_2|RCC_CR_HSIDIV_0) /*!< HSI clock is divided by 32 */ +#define RCC_HSI_DIV64 (RCC_CR_HSIDIV_2|RCC_CR_HSIDIV_1) /*!< HSI clock is divided by 64 */ +#define RCC_HSI_DIV128 (RCC_CR_HSIDIV_2|RCC_CR_HSIDIV_1|RCC_CR_HSIDIV_0) /*!< HSI clock is divided by 128 */ +/** + * @} + */ + +/** @defgroup RCC_LSI_Config LSI Config + * @{ + */ +#define RCC_LSI_OFF 0x00000000U /*!< LSI clock deactivation */ +#define RCC_LSI_ON RCC_CSR_LSION /*!< LSI clock activation */ +/** + * @} + */ + +#if defined(RCC_HSI48_SUPPORT) +/** @defgroup RCC_HSI48_Config HSI48 Config + * @{ + */ +#define RCC_HSI48_OFF 0x00000000U /*!< HSI48 clock deactivation */ +#define RCC_HSI48_ON RCC_CR_HSI48ON /*!< HSI48 clock activation */ +/** + * @} + */ +#endif /* RCC_HSI48_SUPPORT */ + +/** @defgroup RCC_PLL_Config PLL Config + * @{ + */ +#define RCC_PLL_NONE 0x00000000U /*!< PLL configuration unchanged */ +#define RCC_PLL_OFF 0x00000001U /*!< PLL deactivation */ +#define RCC_PLL_ON 0x00000002U /*!< PLL activation */ +/** + * @} + */ + +/** @defgroup RCC_PLLM_Clock_Divider PLLM Clock Divider + * @{ + */ +#define RCC_PLLM_DIV1 0x00000000U /*!< PLLM division factor = 8 */ +#define RCC_PLLM_DIV2 RCC_PLLCFGR_PLLM_0 /*!< PLLM division factor = 2 */ +#define RCC_PLLM_DIV3 RCC_PLLCFGR_PLLM_1 /*!< PLLM division factor = 3 */ +#define RCC_PLLM_DIV4 (RCC_PLLCFGR_PLLM_1 | RCC_PLLCFGR_PLLM_0) /*!< PLLM division factor = 4 */ +#define RCC_PLLM_DIV5 RCC_PLLCFGR_PLLM_2 /*!< PLLM division factor = 5 */ +#define RCC_PLLM_DIV6 (RCC_PLLCFGR_PLLM_2 | RCC_PLLCFGR_PLLM_0) /*!< PLLM division factor = 6 */ +#define RCC_PLLM_DIV7 (RCC_PLLCFGR_PLLM_2 | RCC_PLLCFGR_PLLM_1) /*!< PLLM division factor = 7 */ +#define RCC_PLLM_DIV8 (RCC_PLLCFGR_PLLM_2 | RCC_PLLCFGR_PLLM_1| RCC_PLLCFGR_PLLM_0) /*!< PLLM division factor = 8 */ +/** + * @} + */ + +/** @defgroup RCC_PLLP_Clock_Divider PLLP Clock Divider + * @{ + */ +#define RCC_PLLP_DIV2 RCC_PLLCFGR_PLLP_0 /*!< PLLP division factor = 2 */ +#define RCC_PLLP_DIV3 RCC_PLLCFGR_PLLP_1 /*!< PLLP division factor = 3 */ +#define RCC_PLLP_DIV4 (RCC_PLLCFGR_PLLP_1 | RCC_PLLCFGR_PLLP_0) /*!< PLLP division factor = 4 */ +#define RCC_PLLP_DIV5 RCC_PLLCFGR_PLLP_2 /*!< PLLP division factor = 5 */ +#define RCC_PLLP_DIV6 (RCC_PLLCFGR_PLLP_2 | RCC_PLLCFGR_PLLP_0) /*!< PLLP division factor = 6 */ +#define RCC_PLLP_DIV7 (RCC_PLLCFGR_PLLP_2 | RCC_PLLCFGR_PLLP_1) /*!< PLLP division factor = 7 */ +#define RCC_PLLP_DIV8 (RCC_PLLCFGR_PLLP_2 | RCC_PLLCFGR_PLLP_1 | RCC_PLLCFGR_PLLP_0) /*!< PLLP division factor = 8 */ +#define RCC_PLLP_DIV9 RCC_PLLCFGR_PLLP_3 /*!< PLLP division factor = 9 */ +#define RCC_PLLP_DIV10 (RCC_PLLCFGR_PLLP_3 | RCC_PLLCFGR_PLLP_0) /*!< PLLP division factor = 10 */ +#define RCC_PLLP_DIV11 (RCC_PLLCFGR_PLLP_3 | RCC_PLLCFGR_PLLP_1) /*!< PLLP division factor = 11 */ +#define RCC_PLLP_DIV12 (RCC_PLLCFGR_PLLP_3 | RCC_PLLCFGR_PLLP_1 | RCC_PLLCFGR_PLLP_0) /*!< PLLP division factor = 12 */ +#define RCC_PLLP_DIV13 (RCC_PLLCFGR_PLLP_3 | RCC_PLLCFGR_PLLP_2) /*!< PLLP division factor = 13 */ +#define RCC_PLLP_DIV14 (RCC_PLLCFGR_PLLP_3 | RCC_PLLCFGR_PLLP_2 | RCC_PLLCFGR_PLLP_0) /*!< PLLP division factor = 14 */ +#define RCC_PLLP_DIV15 (RCC_PLLCFGR_PLLP_3 | RCC_PLLCFGR_PLLP_2 | RCC_PLLCFGR_PLLP_1) /*!< PLLP division factor = 15 */ +#define RCC_PLLP_DIV16 (RCC_PLLCFGR_PLLP_3 | RCC_PLLCFGR_PLLP_2 | RCC_PLLCFGR_PLLP_1 | RCC_PLLCFGR_PLLP_0) /*!< PLLP division factor = 16 */ +#define RCC_PLLP_DIV17 RCC_PLLCFGR_PLLP_4 /*!< PLLP division factor = 17 */ +#define RCC_PLLP_DIV18 (RCC_PLLCFGR_PLLP_4 | RCC_PLLCFGR_PLLP_0) /*!< PLLP division factor = 18 */ +#define RCC_PLLP_DIV19 (RCC_PLLCFGR_PLLP_4 | RCC_PLLCFGR_PLLP_1) /*!< PLLP division factor = 19 */ +#define RCC_PLLP_DIV20 (RCC_PLLCFGR_PLLP_4 | RCC_PLLCFGR_PLLP_1 | RCC_PLLCFGR_PLLP_0) /*!< PLLP division factor = 20 */ +#define RCC_PLLP_DIV21 (RCC_PLLCFGR_PLLP_4 | RCC_PLLCFGR_PLLP_2) /*!< PLLP division factor = 21 */ +#define RCC_PLLP_DIV22 (RCC_PLLCFGR_PLLP_4 | RCC_PLLCFGR_PLLP_2 | RCC_PLLCFGR_PLLP_0) /*!< PLLP division factor = 22 */ +#define RCC_PLLP_DIV23 (RCC_PLLCFGR_PLLP_4 | RCC_PLLCFGR_PLLP_2 | RCC_PLLCFGR_PLLP_1) /*!< PLLP division factor = 23 */ +#define RCC_PLLP_DIV24 (RCC_PLLCFGR_PLLP_4 | RCC_PLLCFGR_PLLP_2 | RCC_PLLCFGR_PLLP_1 | RCC_PLLCFGR_PLLP_0) /*!< PLLP division factor = 24 */ +#define RCC_PLLP_DIV25 (RCC_PLLCFGR_PLLP_4 | RCC_PLLCFGR_PLLP_3) /*!< PLLP division factor = 25 */ +#define RCC_PLLP_DIV26 (RCC_PLLCFGR_PLLP_4 | RCC_PLLCFGR_PLLP_3 | RCC_PLLCFGR_PLLP_0) /*!< PLLP division factor = 26 */ +#define RCC_PLLP_DIV27 (RCC_PLLCFGR_PLLP_4 | RCC_PLLCFGR_PLLP_3 | RCC_PLLCFGR_PLLP_1) /*!< PLLP division factor = 27 */ +#define RCC_PLLP_DIV28 (RCC_PLLCFGR_PLLP_4 | RCC_PLLCFGR_PLLP_3 | RCC_PLLCFGR_PLLP_1 | RCC_PLLCFGR_PLLP_0) /*!< PLLP division factor = 28 */ +#define RCC_PLLP_DIV29 (RCC_PLLCFGR_PLLP_4 | RCC_PLLCFGR_PLLP_3 | RCC_PLLCFGR_PLLP_2) /*!< PLLP division factor = 29 */ +#define RCC_PLLP_DIV30 (RCC_PLLCFGR_PLLP_4 | RCC_PLLCFGR_PLLP_3 | RCC_PLLCFGR_PLLP_2 | RCC_PLLCFGR_PLLP_0) /*!< PLLP division factor = 30 */ +#define RCC_PLLP_DIV31 (RCC_PLLCFGR_PLLP_4 | RCC_PLLCFGR_PLLP_3 | RCC_PLLCFGR_PLLP_2 | RCC_PLLCFGR_PLLP_1) /*!< PLLP division factor = 31 */ +#define RCC_PLLP_DIV32 (RCC_PLLCFGR_PLLP_4 | RCC_PLLCFGR_PLLP_3 | RCC_PLLCFGR_PLLP_2 | RCC_PLLCFGR_PLLP_1 | RCC_PLLCFGR_PLLP_0) /*!< PLLP division factor = 32 */ +/** + * @} + */ + +#if defined(RCC_PLLQ_SUPPORT) +/** @defgroup RCC_PLLQ_Clock_Divider PLLQ Clock Divider + * @{ + */ +#define RCC_PLLQ_DIV2 RCC_PLLCFGR_PLLQ_0 /*!< PLLQ division factor = 2 */ +#define RCC_PLLQ_DIV3 RCC_PLLCFGR_PLLQ_1 /*!< PLLQ division factor = 3 */ +#define RCC_PLLQ_DIV4 (RCC_PLLCFGR_PLLQ_1 | RCC_PLLCFGR_PLLQ_0) /*!< PLLQ division factor = 4 */ +#define RCC_PLLQ_DIV5 RCC_PLLCFGR_PLLQ_2 /*!< PLLQ division factor = 5 */ +#define RCC_PLLQ_DIV6 (RCC_PLLCFGR_PLLQ_2 | RCC_PLLCFGR_PLLQ_0) /*!< PLLQ division factor = 6 */ +#define RCC_PLLQ_DIV7 (RCC_PLLCFGR_PLLQ_2 | RCC_PLLCFGR_PLLQ_1) /*!< PLLQ division factor = 7 */ +#define RCC_PLLQ_DIV8 (RCC_PLLCFGR_PLLQ_2 |RCC_PLLCFGR_PLLQ_1 | RCC_PLLCFGR_PLLQ_0) /*!< PLLQ division factor = 8 */ +/** * @} + */ +#endif /* RCC_PLLQ_SUPPORT */ + +/** @defgroup RCC_PLLR_Clock_Divider PLLR Clock Divider + * @{ + */ +#define RCC_PLLR_DIV2 RCC_PLLCFGR_PLLR_0 /*!< PLLR division factor = 2 */ +#define RCC_PLLR_DIV3 RCC_PLLCFGR_PLLR_1 /*!< PLLR division factor = 3 */ +#define RCC_PLLR_DIV4 (RCC_PLLCFGR_PLLR_1 | RCC_PLLCFGR_PLLR_0) /*!< PLLR division factor = 4 */ +#define RCC_PLLR_DIV5 RCC_PLLCFGR_PLLR_2 /*!< PLLR division factor = 5 */ +#define RCC_PLLR_DIV6 (RCC_PLLCFGR_PLLR_2 | RCC_PLLCFGR_PLLR_0) /*!< PLLR division factor = 6 */ +#define RCC_PLLR_DIV7 (RCC_PLLCFGR_PLLR_2 | RCC_PLLCFGR_PLLR_1) /*!< PLLR division factor = 7 */ +#define RCC_PLLR_DIV8 (RCC_PLLCFGR_PLLR_2 | RCC_PLLCFGR_PLLR_1 | RCC_PLLCFGR_PLLR_0) /*!< PLLR division factor = 8 */ +/** * @} + */ + +/** @defgroup RCC_PLL_Clock_Source PLL Clock Source + * @{ + */ +#define RCC_PLLSOURCE_NONE 0x00000000U /*!< No clock selected as PLL entry clock source */ +#define RCC_PLLSOURCE_HSI RCC_PLLCFGR_PLLSRC_HSI /*!< HSI clock selected as PLL entry clock source */ +#define RCC_PLLSOURCE_HSE RCC_PLLCFGR_PLLSRC_HSE /*!< HSE clock selected as PLL entry clock source */ +/** + * @} + */ + +/** @defgroup RCC_PLL_Clock_Output PLL Clock Output + * @{ + */ +#define RCC_PLLPCLK RCC_PLLCFGR_PLLPEN /*!< PLLPCLK selection from main PLL */ +#if defined(RCC_PLLQ_SUPPORT) +#define RCC_PLLQCLK RCC_PLLCFGR_PLLQEN /*!< PLLQCLK selection from main PLL */ +#endif /* RCC_PLLQ_SUPPORT */ +#define RCC_PLLRCLK RCC_PLLCFGR_PLLREN /*!< PLLRCLK selection from main PLL */ + +/** + * @} + */ + +/** @defgroup RCC_System_Clock_Type System Clock Type + * @{ + */ +#define RCC_CLOCKTYPE_SYSCLK 0x00000001U /*!< SYSCLK to configure */ +#define RCC_CLOCKTYPE_HCLK 0x00000002U /*!< HCLK to configure */ +#define RCC_CLOCKTYPE_PCLK1 0x00000004U /*!< PCLK1 to configure */ +/** + * @} + */ + +/** @defgroup RCC_System_Clock_Source System Clock Source + * @{ + */ +#define RCC_SYSCLKSOURCE_HSI 0x00000000U /*!< HSI selection as system clock */ +#define RCC_SYSCLKSOURCE_HSE RCC_CFGR_SW_0 /*!< HSE selection as system clock */ +#define RCC_SYSCLKSOURCE_PLLCLK RCC_CFGR_SW_1 /*!< PLL selection as system clock */ +#define RCC_SYSCLKSOURCE_LSI (RCC_CFGR_SW_1 | RCC_CFGR_SW_0) /*!< LSI selection as system clock */ +#define RCC_SYSCLKSOURCE_LSE RCC_CFGR_SW_2 /*!< LSE selection as system clock */ +/** + * @} + */ + +/** @defgroup RCC_System_Clock_Source_Status System Clock Source Status + * @{ + */ +#define RCC_SYSCLKSOURCE_STATUS_HSI 0x00000000U /*!< HSI used as system clock */ +#define RCC_SYSCLKSOURCE_STATUS_HSE RCC_CFGR_SWS_0 /*!< HSE used as system clock */ +#define RCC_SYSCLKSOURCE_STATUS_PLLCLK RCC_CFGR_SWS_1 /*!< PLL used as system clock */ +#define RCC_SYSCLKSOURCE_STATUS_LSI (RCC_CFGR_SWS_1 | RCC_CFGR_SWS_0) /*!< LSI used as system clock */ +#define RCC_SYSCLKSOURCE_STATUS_LSE RCC_CFGR_SWS_2 /*!< LSE used as system clock */ +/** + * @} + */ + +/** @defgroup RCC_AHB_Clock_Source AHB Clock Source + * @{ + */ +#define RCC_SYSCLK_DIV1 0x00000000U /*!< SYSCLK not divided */ +#define RCC_SYSCLK_DIV2 RCC_CFGR_HPRE_3 /*!< SYSCLK divided by 2 */ +#define RCC_SYSCLK_DIV4 (RCC_CFGR_HPRE_3 | RCC_CFGR_HPRE_0) /*!< SYSCLK divided by 4 */ +#define RCC_SYSCLK_DIV8 (RCC_CFGR_HPRE_3 | RCC_CFGR_HPRE_1) /*!< SYSCLK divided by 8 */ +#define RCC_SYSCLK_DIV16 (RCC_CFGR_HPRE_3 | RCC_CFGR_HPRE_1 | RCC_CFGR_HPRE_0) /*!< SYSCLK divided by 16 */ +#define RCC_SYSCLK_DIV64 (RCC_CFGR_HPRE_3 | RCC_CFGR_HPRE_2) /*!< SYSCLK divided by 64 */ +#define RCC_SYSCLK_DIV128 (RCC_CFGR_HPRE_3 | RCC_CFGR_HPRE_2 | RCC_CFGR_HPRE_0) /*!< SYSCLK divided by 128 */ +#define RCC_SYSCLK_DIV256 (RCC_CFGR_HPRE_3 | RCC_CFGR_HPRE_2 | RCC_CFGR_HPRE_1) /*!< SYSCLK divided by 256 */ +#define RCC_SYSCLK_DIV512 (RCC_CFGR_HPRE_3 | RCC_CFGR_HPRE_2 | RCC_CFGR_HPRE_1 | RCC_CFGR_HPRE_0) /*!< SYSCLK divided by 512 */ +/** + * @} + */ + +/** @defgroup RCC_APB1_Clock_Source APB Clock Source + * @{ + */ +#define RCC_HCLK_DIV1 0x00000000U /*!< HCLK not divided */ +#define RCC_HCLK_DIV2 RCC_CFGR_PPRE_2 /*!< HCLK divided by 2 */ +#define RCC_HCLK_DIV4 (RCC_CFGR_PPRE_2 | RCC_CFGR_PPRE_0) /*!< HCLK divided by 4 */ +#define RCC_HCLK_DIV8 (RCC_CFGR_PPRE_2 | RCC_CFGR_PPRE_1) /*!< HCLK divided by 8 */ +#define RCC_HCLK_DIV16 (RCC_CFGR_PPRE_2 | RCC_CFGR_PPRE_1 | RCC_CFGR_PPRE_0) /*!< HCLK divided by 16 */ +/** + * @} + */ + +/** @defgroup RCC_RTC_Clock_Source RTC Clock Source + * @{ + */ +#define RCC_RTCCLKSOURCE_NONE 0x00000000U /*!< No clock configured for RTC */ +#define RCC_RTCCLKSOURCE_LSE RCC_BDCR_RTCSEL_0 /*!< LSE oscillator clock used as RTC clock */ +#define RCC_RTCCLKSOURCE_LSI RCC_BDCR_RTCSEL_1 /*!< LSI oscillator clock used as RTC clock */ +#define RCC_RTCCLKSOURCE_HSE_DIV32 RCC_BDCR_RTCSEL /*!< HSE oscillator clock divided by 32 used as RTC clock */ +/** + * @} + */ + +/** @defgroup RCC_MCO_Index MCO Index + * @{ + */ +#define RCC_MCO1 0x00000000U +#if defined(RCC_MCO2_SUPPORT) +#define RCC_MCO2 0x00000001U /*!< MCO2 index */ +#endif /* RCC_MCO2_SUPPORT */ + +#define RCC_MCO RCC_MCO1 /*!< MCO1 to be compliant with other families with 2 MCOs*/ +/** + * @} + */ + +/** @defgroup RCC_MCO1_Clock_Source MCO1 Clock Source + * @{ + */ +#define RCC_MCO1SOURCE_NOCLOCK 0x00000000U /*!< MCO1 output disabled, no clock on MCO1 */ +#define RCC_MCO1SOURCE_SYSCLK RCC_CFGR_MCOSEL_0 /*!< SYSCLK selection as MCO1 source */ +#if defined(RCC_HSI48_SUPPORT) +#define RCC_MCO1SOURCE_HSI48 RCC_CFGR_MCOSEL_1 /*!< HSI48 selection as MCO1 source */ +#endif /* RCC_HSI48_SUPPORT */ +#define RCC_MCO1SOURCE_HSI (RCC_CFGR_MCOSEL_0| RCC_CFGR_MCOSEL_1) /*!< HSI selection as MCO1 source */ +#define RCC_MCO1SOURCE_HSE RCC_CFGR_MCOSEL_2 /*!< HSE selection as MCO1 source */ +#define RCC_MCO1SOURCE_PLLCLK (RCC_CFGR_MCOSEL_0|RCC_CFGR_MCOSEL_2) /*!< PLLCLK selection as MCO1 source */ +#define RCC_MCO1SOURCE_LSI (RCC_CFGR_MCOSEL_1|RCC_CFGR_MCOSEL_2) /*!< LSI selection as MCO1 source */ +#define RCC_MCO1SOURCE_LSE (RCC_CFGR_MCOSEL_0|RCC_CFGR_MCOSEL_1|RCC_CFGR_MCOSEL_2) /*!< LSE selection as MCO1 source */ +#if defined(RCC_CFGR_MCOSEL_3) +#define RCC_MCO1SOURCE_PLLPCLK RCC_CFGR_MCOSEL_3 /*!< PLLPCLK selection as MCO1 source */ +#define RCC_MCO1SOURCE_PLLQCLK (RCC_CFGR_MCOSEL_3|RCC_CFGR_MCOSEL_0) /*!< PLLQCLK selection as MCO1 source */ +#define RCC_MCO1SOURCE_RTCCLK (RCC_CFGR_MCOSEL_3|RCC_CFGR_MCOSEL_1) /*!< RTCCLK selection as MCO1 source */ +#define RCC_MCO1SOURCE_RTC_WKUP (RCC_CFGR_MCOSEL_3|RCC_CFGR_MCOSEL_1|RCC_CFGR_MCOSEL_0) /*!< RTC_Wakeup selection as MCO1 source */ +#endif /* RCC_CFGR_MCOSEL_3 */ +/** + * @} + */ + +/** @defgroup RCC_MCO1_Clock_Prescaler MCO1 Clock Prescaler + * @{ + */ +#define RCC_MCODIV_1 0x00000000U /*!< MCO not divided */ +#define RCC_MCODIV_2 RCC_CFGR_MCOPRE_0 /*!< MCO divided by 2 */ +#define RCC_MCODIV_4 RCC_CFGR_MCOPRE_1 /*!< MCO divided by 4 */ +#define RCC_MCODIV_8 (RCC_CFGR_MCOPRE_1 | RCC_CFGR_MCOPRE_0) /*!< MCO divided by 8 */ +#define RCC_MCODIV_16 RCC_CFGR_MCOPRE_2 /*!< MCO divided by 16 */ +#define RCC_MCODIV_32 (RCC_CFGR_MCOPRE_2 | RCC_CFGR_MCOPRE_0) /*!< MCO divided by 32 */ +#define RCC_MCODIV_64 (RCC_CFGR_MCOPRE_2 | RCC_CFGR_MCOPRE_1) /*!< MCO divided by 64 */ +#define RCC_MCODIV_128 (RCC_CFGR_MCOPRE_2 | RCC_CFGR_MCOPRE_1 | RCC_CFGR_MCOPRE_0) /*!< MCO divided by 128 */ +#if defined(RCC_CFGR_MCOPRE_3) +#define RCC_MCODIV_256 RCC_CFGR_MCOPRE_3 /*!< MCO divided by 256 */ +#define RCC_MCODIV_512 (RCC_CFGR_MCOPRE_3 | RCC_CFGR_MCOPRE_0) /*!< MCO divided by 512 */ +#define RCC_MCODIV_1024 (RCC_CFGR_MCOPRE_3 | RCC_CFGR_MCOPRE_1) /*!< MCO divided by 1024 */ +#endif /* RCC_CFGR_MCOSEL_3 */ +/** + * @} + */ + +#if defined(RCC_MCO2_SUPPORT) +/** @defgroup RCC_MCO2_Clock_Source MCO2 Clock Source + * @{ + */ +#define RCC_MCO2SOURCE_NOCLOCK 0x00000000U /*!< MCO2 output disabled, no clock on MCO2 */ +#define RCC_MCO2SOURCE_SYSCLK RCC_CFGR_MCO2SEL_0 /*!< SYSCLK selection as MCO2 source */ +#if defined(RCC_HSI48_SUPPORT) +#define RCC_MCO2SOURCE_HSI48 RCC_CFGR_MCO2SEL_1 /*!< HSI48 selection as MCO2 source */ +#endif /* RCC_HSI48_SUPPORT */ +#define RCC_MCO2SOURCE_HSI (RCC_CFGR_MCO2SEL_1| RCC_CFGR_MCO2SEL_0) /*!< HSI selection as MCO2 source */ +#define RCC_MCO2SOURCE_HSE RCC_CFGR_MCO2SEL_2 /*!< HSE selection as MCO2 source */ +#define RCC_MCO2SOURCE_PLLCLK (RCC_CFGR_MCO2SEL_2|RCC_CFGR_MCO2SEL_0) /*!< PLLCLK selection as MCO2 source */ +#define RCC_MCO2SOURCE_LSI (RCC_CFGR_MCO2SEL_2|RCC_CFGR_MCO2SEL_1) /*!< LSI selection as MCO2 source */ +#define RCC_MCO2SOURCE_LSE (RCC_CFGR_MCO2SEL_2|RCC_CFGR_MCO2SEL_1|RCC_CFGR_MCO2SEL_0) /*!< LSE selection as MCO2 source */ +#define RCC_MCO2SOURCE_PLLPCLK RCC_CFGR_MCO2SEL_3 /*!< PLLPCLK selection as MCO2 source */ +#define RCC_MCO2SOURCE_PLLQCLK (RCC_CFGR_MCO2SEL_3|RCC_CFGR_MCO2SEL_0) /*!< PLLQCLK selection as MCO2 source */ +#define RCC_MCO2SOURCE_RTCCLK (RCC_CFGR_MCO2SEL_3|RCC_CFGR_MCO2SEL_1) /*!< RTCCLK selection as MCO2 source */ +#define RCC_MCO2SOURCE_RTC_WKUP (RCC_CFGR_MCO2SEL_3|RCC_CFGR_MCO2SEL_1|RCC_CFGR_MCO2SEL_0) /*!< RTC_Wakeup selection as MCO2 source */ +/** + * @} + */ + +/** @defgroup RCC_MCO2_Clock_Prescaler MCO2 Clock Prescaler + * @{ + */ +#define RCC_MCO2DIV_1 0x00000000U /*!< MCO2 not divided */ +#define RCC_MCO2DIV_2 RCC_CFGR_MCO2PRE_0 /*!< MCO2 divided by 2 */ +#define RCC_MCO2DIV_4 RCC_CFGR_MCO2PRE_1 /*!< MCO2 divided by 4 */ +#define RCC_MCO2DIV_8 (RCC_CFGR_MCO2PRE_1 | RCC_CFGR_MCO2PRE_0) /*!< MCO2 divided by 8 */ +#define RCC_MCO2DIV_16 RCC_CFGR_MCO2PRE_2 /*!< MCO2 divided by 16 */ +#define RCC_MCO2DIV_32 (RCC_CFGR_MCO2PRE_2 | RCC_CFGR_MCO2PRE_0) /*!< MCO2 divided by 32 */ +#define RCC_MCO2DIV_64 (RCC_CFGR_MCO2PRE_2 | RCC_CFGR_MCO2PRE_1) /*!< MCO2 divided by 64 */ +#define RCC_MCO2DIV_128 (RCC_CFGR_MCO2PRE_2 | RCC_CFGR_MCO2PRE_1 | RCC_CFGR_MCO2PRE_0) /*!< MCO2 divided by 128 */ +#define RCC_MCO2DIV_256 RCC_CFGR_MCO2PRE_3 /*!< MCO2 divided by 256 */ +#define RCC_MCO2DIV_512 (RCC_CFGR_MCO2PRE_3 | RCC_CFGR_MCO2PRE_0) /*!< MCO2 divided by 512 */ +#define RCC_MCO2DIV_1024 (RCC_CFGR_MCO2PRE_3 | RCC_CFGR_MCO2PRE_1) /*!< MCO2 divided by 1024 */ +/** + * @} + */ +#endif /* RCC_MCO2_SUPPORT */ + +/** @defgroup RCC_Interrupt Interrupts + * @{ + */ +#define RCC_IT_LSIRDY RCC_CIFR_LSIRDYF /*!< LSI Ready Interrupt flag */ +#define RCC_IT_LSERDY RCC_CIFR_LSERDYF /*!< LSE Ready Interrupt flag */ +#define RCC_IT_HSIRDY RCC_CIFR_HSIRDYF /*!< HSI Ready Interrupt flag */ +#define RCC_IT_HSERDY RCC_CIFR_HSERDYF /*!< HSE Ready Interrupt flag */ +#define RCC_IT_PLLRDY RCC_CIFR_PLLRDYF /*!< PLL Ready Interrupt flag */ +#define RCC_IT_CSS RCC_CIFR_CSSF /*!< HSE Clock Security System Interrupt flag */ +#define RCC_IT_LSECSS RCC_CIFR_LSECSSF /*!< LSE Clock Security System Interrupt flag */ +#if defined(RCC_HSI48_SUPPORT) +#define RCC_IT_HSI48RDY RCC_CIFR_HSI48RDYF /*!< HSI48 Ready Interrupt flag */ +#endif /* RCC_HSI48_SUPPORT */ +/** + * @} + */ + +/** @defgroup RCC_Flag Flags + * Elements values convention: XXXYYYYYb + * - YYYYY : Flag position in the register + * - XXX : Register index + * - 001: CR register + * - 010: BDCR register + * - 011: CSR register + * @{ + */ +/* Flags in the CR register */ +#define RCC_FLAG_HSIRDY ((CR_REG_INDEX << 5U) | RCC_CR_HSIRDY_Pos) /*!< HSI Ready flag */ +#define RCC_FLAG_HSERDY ((CR_REG_INDEX << 5U) | RCC_CR_HSERDY_Pos) /*!< HSE Ready flag */ +#define RCC_FLAG_PLLRDY ((CR_REG_INDEX << 5U) | RCC_CR_PLLRDY_Pos) /*!< PLL Ready flag */ + +#if defined(RCC_HSI48_SUPPORT) +/* Flags in the CR register */ +#define RCC_FLAG_HSI48RDY ((CR_REG_INDEX << 5U) | RCC_CR_HSI48RDY_Pos) /*!< HSI48 Ready flag */ +#endif /* RCC_HSI48_SUPPORT */ + +/* Flags in the BDCR register */ +#define RCC_FLAG_LSERDY ((BDCR_REG_INDEX << 5U) | RCC_BDCR_LSERDY_Pos) /*!< LSE Ready flag */ +#define RCC_FLAG_LSECSSD ((BDCR_REG_INDEX << 5U) | RCC_BDCR_LSECSSD_Pos) /*!< LSE Clock Security System Interrupt flag */ + +/* Flags in the CSR register */ +#define RCC_FLAG_LSIRDY ((CSR_REG_INDEX << 5U) | RCC_CSR_LSIRDY_Pos) /*!< LSI Ready flag */ +#define RCC_FLAG_OBLRST ((CSR_REG_INDEX << 5U) | RCC_CSR_OBLRSTF_Pos) /*!< Option Byte Loader reset flag */ +#define RCC_FLAG_PINRST ((CSR_REG_INDEX << 5U) | RCC_CSR_PINRSTF_Pos) /*!< PIN reset flag */ +#define RCC_FLAG_PWRRST ((CSR_REG_INDEX << 5U) | RCC_CSR_PWRRSTF_Pos) /*!< BOR or POR/PDR reset flag */ +#define RCC_FLAG_SFTRST ((CSR_REG_INDEX << 5U) | RCC_CSR_SFTRSTF_Pos) /*!< Software Reset flag */ +#define RCC_FLAG_IWDGRST ((CSR_REG_INDEX << 5U) | RCC_CSR_IWDGRSTF_Pos) /*!< Independent Watchdog reset flag */ +#define RCC_FLAG_WWDGRST ((CSR_REG_INDEX << 5U) | RCC_CSR_WWDGRSTF_Pos) /*!< Window watchdog reset flag */ +#define RCC_FLAG_LPWRRST ((CSR_REG_INDEX << 5U) | RCC_CSR_LPWRRSTF_Pos) /*!< Low-Power reset flag */ + +/** + * @} + */ + +/** @defgroup RCC_LSEDrive_Config LSE Drive Configuration + * @{ + */ +#define RCC_LSEDRIVE_LOW 0x00000000U /*!< LSE low drive capability */ +#define RCC_LSEDRIVE_MEDIUMLOW RCC_BDCR_LSEDRV_0 /*!< LSE medium low drive capability */ +#define RCC_LSEDRIVE_MEDIUMHIGH RCC_BDCR_LSEDRV_1 /*!< LSE medium high drive capability */ +#define RCC_LSEDRIVE_HIGH RCC_BDCR_LSEDRV /*!< LSE high drive capability */ +/** + * @} + */ + +/** @defgroup RCC_Reset_Flag Reset Flag + * @{ + */ +#define RCC_RESET_FLAG_OBL RCC_CSR_OBLRSTF /*!< Option Byte Loader reset flag */ +#define RCC_RESET_FLAG_PIN RCC_CSR_PINRSTF /*!< PIN reset flag */ +#define RCC_RESET_FLAG_PWR RCC_CSR_PWRRSTF /*!< BOR or POR/PDR reset flag */ +#define RCC_RESET_FLAG_SW RCC_CSR_SFTRSTF /*!< Software Reset flag */ +#define RCC_RESET_FLAG_IWDG RCC_CSR_IWDGRSTF /*!< Independent Watchdog reset flag */ +#define RCC_RESET_FLAG_WWDG RCC_CSR_WWDGRSTF /*!< Window watchdog reset flag */ +#define RCC_RESET_FLAG_LPWR RCC_CSR_LPWRRSTF /*!< Low power reset flag */ +#define RCC_RESET_FLAG_ALL (RCC_RESET_FLAG_OBL | RCC_RESET_FLAG_PIN | RCC_RESET_FLAG_PWR | \ + RCC_RESET_FLAG_SW | RCC_RESET_FLAG_IWDG | RCC_RESET_FLAG_WWDG | \ + RCC_RESET_FLAG_LPWR) +/** + * @} + */ + +/** + * @} + */ + +/* Exported macros -----------------------------------------------------------*/ + +/** @defgroup RCC_Exported_Macros RCC Exported Macros + * @{ + */ + +/** @defgroup RCC_AHB_Peripheral_Clock_Enable_Disable AHB Peripheral Clock Enable Disable + * @brief Enable or disable the AHB peripheral clock. + * @note After reset, the peripheral clock (used for registers read/write access) + * is disabled and the application software has to enable this clock before + * using it. + * @{ + */ + +#define __HAL_RCC_DMA1_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->AHBENR, RCC_AHBENR_DMA1EN); \ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->AHBENR, RCC_AHBENR_DMA1EN); \ + UNUSED(tmpreg); \ + } while(0U) + +#if defined(DMA2) +#define __HAL_RCC_DMA2_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->AHBENR, RCC_AHBENR_DMA2EN); \ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->AHBENR, RCC_AHBENR_DMA2EN); \ + UNUSED(tmpreg); \ + } while(0U) + +#endif /* DMA2 */ + + +#define __HAL_RCC_FLASH_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->AHBENR, RCC_AHBENR_FLASHEN); \ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->AHBENR, RCC_AHBENR_FLASHEN); \ + UNUSED(tmpreg); \ + } while(0U) + +#define __HAL_RCC_CRC_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->AHBENR, RCC_AHBENR_CRCEN); \ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->AHBENR, RCC_AHBENR_CRCEN); \ + UNUSED(tmpreg); \ + } while(0U) + +#if defined(RNG) +#define __HAL_RCC_RNG_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->AHBENR, RCC_AHBENR_RNGEN); \ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->AHBENR, RCC_AHBENR_RNGEN); \ + UNUSED(tmpreg); \ + } while(0U) +#endif /* RNG */ + +#if defined(AES) +#define __HAL_RCC_AES_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->AHBENR, RCC_AHBENR_AESEN); \ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->AHBENR, RCC_AHBENR_AESEN); \ + UNUSED(tmpreg); \ + } while(0U) +#endif /* AES */ + +#define __HAL_RCC_DMA1_CLK_DISABLE() CLEAR_BIT(RCC->AHBENR, RCC_AHBENR_DMA1EN) +#if defined(DMA2) +#define __HAL_RCC_DMA2_CLK_DISABLE() CLEAR_BIT(RCC->AHBENR, RCC_AHBENR_DMA2EN) +#endif /* DMA2 */ +#define __HAL_RCC_FLASH_CLK_DISABLE() CLEAR_BIT(RCC->AHBENR, RCC_AHBENR_FLASHEN) +#define __HAL_RCC_CRC_CLK_DISABLE() CLEAR_BIT(RCC->AHBENR, RCC_AHBENR_CRCEN) +#if defined(RNG) +#define __HAL_RCC_RNG_CLK_DISABLE() CLEAR_BIT(RCC->AHBENR, RCC_AHBENR_RNGEN) +#endif /* RNG */ +#if defined(AES) +#define __HAL_RCC_AES_CLK_DISABLE() CLEAR_BIT(RCC->AHBENR, RCC_AHBENR_AESEN) +#endif /* AES */ +/** + * @} + */ + +/** @defgroup RCC_IOPORT_Clock_Enable_Disable IOPORT Clock Enable Disable + * @brief Enable or disable the IO Ports clock. + * @note After reset, the IO ports clock (used for registers read/write access) + * is disabled and the application software has to enable this clock before + * using it. + * @{ + */ + +#define __HAL_RCC_GPIOA_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->IOPENR, RCC_IOPENR_GPIOAEN); \ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->IOPENR, RCC_IOPENR_GPIOAEN); \ + UNUSED(tmpreg); \ + } while(0U) + +#define __HAL_RCC_GPIOB_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->IOPENR, RCC_IOPENR_GPIOBEN); \ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->IOPENR, RCC_IOPENR_GPIOBEN); \ + UNUSED(tmpreg); \ + } while(0U) + +#define __HAL_RCC_GPIOC_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->IOPENR, RCC_IOPENR_GPIOCEN); \ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->IOPENR, RCC_IOPENR_GPIOCEN); \ + UNUSED(tmpreg); \ + } while(0U) + +#define __HAL_RCC_GPIOD_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->IOPENR, RCC_IOPENR_GPIODEN); \ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->IOPENR, RCC_IOPENR_GPIODEN); \ + UNUSED(tmpreg); \ + } while(0U) + +#if defined(GPIOE) +#define __HAL_RCC_GPIOE_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->IOPENR, RCC_IOPENR_GPIOEEN); \ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->IOPENR, RCC_IOPENR_GPIOEEN); \ + UNUSED(tmpreg); \ + } while(0U) +#endif /* GPIOE */ + +#define __HAL_RCC_GPIOF_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->IOPENR, RCC_IOPENR_GPIOFEN); \ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->IOPENR, RCC_IOPENR_GPIOFEN); \ + UNUSED(tmpreg); \ + } while(0U) + +#define __HAL_RCC_GPIOA_CLK_DISABLE() CLEAR_BIT(RCC->IOPENR, RCC_IOPENR_GPIOAEN) +#define __HAL_RCC_GPIOB_CLK_DISABLE() CLEAR_BIT(RCC->IOPENR, RCC_IOPENR_GPIOBEN) +#define __HAL_RCC_GPIOC_CLK_DISABLE() CLEAR_BIT(RCC->IOPENR, RCC_IOPENR_GPIOCEN) +#define __HAL_RCC_GPIOD_CLK_DISABLE() CLEAR_BIT(RCC->IOPENR, RCC_IOPENR_GPIODEN) +#if defined(GPIOE) +#define __HAL_RCC_GPIOE_CLK_DISABLE() CLEAR_BIT(RCC->IOPENR, RCC_IOPENR_GPIOEEN) +#endif /* GPIOE */ +#define __HAL_RCC_GPIOF_CLK_DISABLE() CLEAR_BIT(RCC->IOPENR, RCC_IOPENR_GPIOFEN) + +/** + * @} + */ + +/** @defgroup RCC_APB1_Clock_Enable_Disable APB1 Peripheral Clock Enable Disable + * @brief Enable or disable the APB1 peripheral clock. + * @note After reset, the peripheral clock (used for registers read/write access) + * is disabled and the application software has to enable this clock before + * using it. + * @{ + */ +#if defined(TIM2) +#define __HAL_RCC_TIM2_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APBENR1, RCC_APBENR1_TIM2EN); \ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APBENR1, RCC_APBENR1_TIM2EN); \ + UNUSED(tmpreg); \ + } while(0U) +#endif /* TIM2 */ + +#define __HAL_RCC_TIM3_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APBENR1, RCC_APBENR1_TIM3EN); \ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APBENR1, RCC_APBENR1_TIM3EN); \ + UNUSED(tmpreg); \ + } while(0U) + +#if defined(TIM4) +#define __HAL_RCC_TIM4_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APBENR1, RCC_APBENR1_TIM4EN); \ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APBENR1, RCC_APBENR1_TIM4EN); \ + UNUSED(tmpreg); \ + } while(0U) +#endif /* TIM4 */ + +#define __HAL_RCC_TIM6_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APBENR1, RCC_APBENR1_TIM6EN); \ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APBENR1, RCC_APBENR1_TIM6EN); \ + UNUSED(tmpreg); \ + } while(0U) + +#define __HAL_RCC_TIM7_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APBENR1, RCC_APBENR1_TIM7EN); \ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APBENR1, RCC_APBENR1_TIM7EN); \ + UNUSED(tmpreg); \ + } while(0U) + +#if defined(CRS) +#define __HAL_RCC_CRS_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APBENR1, RCC_APBENR1_CRSEN); \ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APBENR1, RCC_APBENR1_CRSEN); \ + UNUSED(tmpreg); \ + } while(0) +#endif /* CRS */ + +#define __HAL_RCC_RTCAPB_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APBENR1, RCC_APBENR1_RTCAPBEN); \ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APBENR1, RCC_APBENR1_RTCAPBEN); \ + UNUSED(tmpreg); \ + } while(0U) + +#define __HAL_RCC_WWDG_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APBENR1, RCC_APBENR1_WWDGEN); \ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APBENR1, RCC_APBENR1_WWDGEN); \ + UNUSED(tmpreg); \ + } while(0U) + +#define __HAL_RCC_SPI2_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APBENR1, RCC_APBENR1_SPI2EN); \ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APBENR1, RCC_APBENR1_SPI2EN); \ + UNUSED(tmpreg); \ + } while(0U) +#if defined(SPI3) +#define __HAL_RCC_SPI3_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APBENR1, RCC_APBENR1_SPI3EN); \ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APBENR1, RCC_APBENR1_SPI3EN); \ + UNUSED(tmpreg); \ + } while(0U) +#endif /* SPI3 */ + +#define __HAL_RCC_USART2_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APBENR1, RCC_APBENR1_USART2EN); \ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APBENR1, RCC_APBENR1_USART2EN); \ + UNUSED(tmpreg); \ + } while(0U) + +#define __HAL_RCC_USART3_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APBENR1, RCC_APBENR1_USART3EN); \ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APBENR1, RCC_APBENR1_USART3EN); \ + UNUSED(tmpreg); \ + } while(0U) + +#define __HAL_RCC_USART4_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APBENR1, RCC_APBENR1_USART4EN); \ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APBENR1, RCC_APBENR1_USART4EN); \ + UNUSED(tmpreg); \ + } while(0U) + +#if defined(USART5) +#define __HAL_RCC_USART5_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APBENR1, RCC_APBENR1_USART5EN); \ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APBENR1, RCC_APBENR1_USART5EN); \ + UNUSED(tmpreg); \ + } while(0U) +#endif /* USART5 */ + +#if defined(USART6) +#define __HAL_RCC_USART6_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APBENR1, RCC_APBENR1_USART6EN); \ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APBENR1, RCC_APBENR1_USART6EN); \ + UNUSED(tmpreg); \ + } while(0U) +#endif /* USART6 */ + +#if defined(LPUART1) +#define __HAL_RCC_LPUART1_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APBENR1, RCC_APBENR1_LPUART1EN); \ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APBENR1, RCC_APBENR1_LPUART1EN); \ + UNUSED(tmpreg); \ + } while(0U) +#endif /* LPUART1 */ + +#if defined(LPUART2) +#define __HAL_RCC_LPUART2_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APBENR1, RCC_APBENR1_LPUART2EN); \ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APBENR1, RCC_APBENR1_LPUART2EN); \ + UNUSED(tmpreg); \ + } while(0U) +#endif /* LPUART2 */ + +#define __HAL_RCC_I2C1_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APBENR1, RCC_APBENR1_I2C1EN); \ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APBENR1, RCC_APBENR1_I2C1EN); \ + UNUSED(tmpreg); \ + } while(0U) + +#define __HAL_RCC_I2C2_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APBENR1, RCC_APBENR1_I2C2EN); \ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APBENR1, RCC_APBENR1_I2C2EN); \ + UNUSED(tmpreg); \ + } while(0U) + +#if defined(I2C3) +#define __HAL_RCC_I2C3_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APBENR1, RCC_APBENR1_I2C3EN); \ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APBENR1, RCC_APBENR1_I2C3EN); \ + UNUSED(tmpreg); \ + } while(0U) +#endif /* I2C3 */ + +#if defined(CEC) +#define __HAL_RCC_CEC_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APBENR1, RCC_APBENR1_CECEN); \ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APBENR1, RCC_APBENR1_CECEN); \ + UNUSED(tmpreg); \ + } while(0U) +#endif /* CEC */ + +#if defined(UCPD1) +#define __HAL_RCC_UCPD1_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APBENR1, RCC_APBENR1_UCPD1EN); \ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APBENR1, RCC_APBENR1_UCPD1EN); \ + UNUSED(tmpreg); \ + } while(0U) +#endif /* UCPD1 */ + +#if defined(UCPD2) +#define __HAL_RCC_UCPD2_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APBENR1, RCC_APBENR1_UCPD2EN); \ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APBENR1, RCC_APBENR1_UCPD2EN); \ + UNUSED(tmpreg); \ + } while(0U) +#endif /* UCPD2 */ + +#if defined(STM32G0B0xx) || defined(STM32G0B1xx) || defined (STM32G0C1xx) +#define __HAL_RCC_USB_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APBENR1, RCC_APBENR1_USBEN); \ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APBENR1, RCC_APBENR1_USBEN); \ + UNUSED(tmpreg); \ + } while(0U) +#endif /* STM32G0B0xx || STM32G0B1xx || STM32G0C1xx */ + +#if defined(FDCAN1) || defined(FDCAN2) +#define __HAL_RCC_FDCAN_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APBENR1, RCC_APBENR1_FDCANEN); \ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APBENR1, RCC_APBENR1_FDCANEN); \ + UNUSED(tmpreg); \ + } while(0) +#endif /* FDCAN1 || FDCAN2 */ + +#define __HAL_RCC_DBGMCU_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APBENR1, RCC_APBENR1_DBGEN); \ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APBENR1, RCC_APBENR1_DBGEN); \ + UNUSED(tmpreg); \ + } while(0U) + +#define __HAL_RCC_PWR_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APBENR1, RCC_APBENR1_PWREN); \ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APBENR1, RCC_APBENR1_PWREN); \ + UNUSED(tmpreg); \ + } while(0U) + +#if defined(DAC1) +#define __HAL_RCC_DAC1_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APBENR1, RCC_APBENR1_DAC1EN); \ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APBENR1, RCC_APBENR1_DAC1EN); \ + UNUSED(tmpreg); \ + } while(0U) +#endif /* DAC1 */ + +#if defined(LPTIM2) +#define __HAL_RCC_LPTIM2_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APBENR1, RCC_APBENR1_LPTIM2EN); \ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APBENR1, RCC_APBENR1_LPTIM2EN); \ + UNUSED(tmpreg); \ + } while(0U) +#endif /* LPTIM2 */ + +#if defined(LPTIM1) +#define __HAL_RCC_LPTIM1_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APBENR1, RCC_APBENR1_LPTIM1EN); \ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APBENR1, RCC_APBENR1_LPTIM1EN); \ + UNUSED(tmpreg); \ + } while(0U) +#endif /* LPTIM1 */ + +/** + * @} + */ + +/** @defgroup RCC_APB2_Clock_Enable_Disable APB2 Peripheral Clock Enable Disable + * @brief Enable or disable the APB2 peripheral clock. + * @note After reset, the peripheral clock (used for registers read/write access) + * is disabled and the application software has to enable this clock before + * using it. + * @{ + */ + +#define __HAL_RCC_SYSCFG_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APBENR2, RCC_APBENR2_SYSCFGEN); \ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APBENR2, RCC_APBENR2_SYSCFGEN); \ + UNUSED(tmpreg); \ + } while(0U) + +#define __HAL_RCC_TIM1_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APBENR2, RCC_APBENR2_TIM1EN); \ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APBENR2, RCC_APBENR2_TIM1EN); \ + UNUSED(tmpreg); \ + } while(0U) + +#define __HAL_RCC_SPI1_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APBENR2, RCC_APBENR2_SPI1EN); \ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APBENR2, RCC_APBENR2_SPI1EN); \ + UNUSED(tmpreg); \ + } while(0U) + +#define __HAL_RCC_USART1_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APBENR2, RCC_APBENR2_USART1EN); \ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APBENR2, RCC_APBENR2_USART1EN); \ + UNUSED(tmpreg); \ + } while(0U) + +#define __HAL_RCC_TIM14_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APBENR2, RCC_APBENR2_TIM14EN); \ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APBENR2, RCC_APBENR2_TIM14EN); \ + UNUSED(tmpreg); \ + } while(0U) + +#if defined(TIM15) +#define __HAL_RCC_TIM15_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APBENR2, RCC_APBENR2_TIM15EN); \ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APBENR2, RCC_APBENR2_TIM15EN); \ + UNUSED(tmpreg); \ + } while(0U) +#endif /* TIM15 */ + +#define __HAL_RCC_TIM16_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APBENR2, RCC_APBENR2_TIM16EN); \ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APBENR2, RCC_APBENR2_TIM16EN); \ + UNUSED(tmpreg); \ + } while(0U) + +#define __HAL_RCC_TIM17_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APBENR2, RCC_APBENR2_TIM17EN); \ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APBENR2, RCC_APBENR2_TIM17EN); \ + UNUSED(tmpreg); \ + } while(0U) + +#define __HAL_RCC_ADC_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APBENR2, RCC_APBENR2_ADCEN); \ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APBENR2, RCC_APBENR2_ADCEN); \ + UNUSED(tmpreg); \ + } while(0U) + +#if defined(TIM2) +#define __HAL_RCC_TIM2_CLK_DISABLE() CLEAR_BIT(RCC->APBENR1, RCC_APBENR1_TIM2EN) +#endif /* TIM2 */ +#define __HAL_RCC_TIM3_CLK_DISABLE() CLEAR_BIT(RCC->APBENR1, RCC_APBENR1_TIM3EN) +#if defined(TIM4) +#define __HAL_RCC_TIM4_CLK_DISABLE() CLEAR_BIT(RCC->APBENR1, RCC_APBENR1_TIM4EN) +#endif /* TIM4 */ +#if defined(TIM6) +#define __HAL_RCC_TIM6_CLK_DISABLE() CLEAR_BIT(RCC->APBENR1, RCC_APBENR1_TIM6EN) +#endif /* TIM6 */ +#if defined(TIM7) +#define __HAL_RCC_TIM7_CLK_DISABLE() CLEAR_BIT(RCC->APBENR1, RCC_APBENR1_TIM7EN) +#endif /* TIM7 */ +#if defined(CRS) +#define __HAL_RCC_CRS_CLK_DISABLE() CLEAR_BIT(RCC->APBENR1, RCC_APBENR1_CRSEN); +#endif /* CRS */ +#define __HAL_RCC_RTCAPB_CLK_DISABLE() CLEAR_BIT(RCC->APBENR1, RCC_APBENR1_RTCAPBEN) +#define __HAL_RCC_SPI2_CLK_DISABLE() CLEAR_BIT(RCC->APBENR1, RCC_APBENR1_SPI2EN) +#if defined(SPI3) +#define __HAL_RCC_SPI3_CLK_DISABLE() CLEAR_BIT(RCC->APBENR1, RCC_APBENR1_SPI3EN) +#endif /* SPI3 */ +#define __HAL_RCC_USART2_CLK_DISABLE() CLEAR_BIT(RCC->APBENR1, RCC_APBENR1_USART2EN) +#if defined(USART3) +#define __HAL_RCC_USART3_CLK_DISABLE() CLEAR_BIT(RCC->APBENR1, RCC_APBENR1_USART3EN) +#endif /* USART3 */ +#if defined(USART4) +#define __HAL_RCC_USART4_CLK_DISABLE() CLEAR_BIT(RCC->APBENR1, RCC_APBENR1_USART4EN) +#endif /* USART4 */ +#if defined(USART5) +#define __HAL_RCC_USART5_CLK_DISABLE() CLEAR_BIT(RCC->APBENR1, RCC_APBENR1_USART5EN) +#endif /* USART5 */ +#if defined(USART6) +#define __HAL_RCC_USART6_CLK_DISABLE() CLEAR_BIT(RCC->APBENR1, RCC_APBENR1_USART6EN) +#endif /* USART6 */ +#if defined(LPUART1) +#define __HAL_RCC_LPUART1_CLK_DISABLE() CLEAR_BIT(RCC->APBENR1, RCC_APBENR1_LPUART1EN) +#endif /* LPUART1 */ +#if defined(LPUART2) +#define __HAL_RCC_LPUART2_CLK_DISABLE() CLEAR_BIT(RCC->APBENR1, RCC_APBENR1_LPUART2EN) +#endif /* LPUART2 */ +#define __HAL_RCC_I2C1_CLK_DISABLE() CLEAR_BIT(RCC->APBENR1, RCC_APBENR1_I2C1EN) +#define __HAL_RCC_I2C2_CLK_DISABLE() CLEAR_BIT(RCC->APBENR1, RCC_APBENR1_I2C2EN) +#if defined(I2C3) +#define __HAL_RCC_I2C3_CLK_DISABLE() CLEAR_BIT(RCC->APBENR1, RCC_APBENR1_I2C3EN) +#endif /* I2C3 */ +#if defined(CEC) +#define __HAL_RCC_CEC_CLK_DISABLE() CLEAR_BIT(RCC->APBENR1, RCC_APBENR1_CECEN) +#endif /* CEC */ +#if defined(UCPD1) +#define __HAL_RCC_UCPD1_CLK_DISABLE() CLEAR_BIT(RCC->APBENR1, RCC_APBENR1_UCPD1EN) +#endif /* UCPD1 */ +#if defined(UCPD2) +#define __HAL_RCC_UCPD2_CLK_DISABLE() CLEAR_BIT(RCC->APBENR1, RCC_APBENR1_UCPD2EN) +#endif /* UCPD2 */ +#if defined(STM32G0B0xx) || defined(STM32G0B1xx) || defined (STM32G0C1xx) +#define __HAL_RCC_USB_CLK_DISABLE() CLEAR_BIT(RCC->APBENR1, RCC_APBENR1_USBEN) +#endif /* STM32G0B0xx || STM32G0B1xx || STM32G0C1xx */ +#if defined(FDCAN1) || defined(FDCAN2) +#define __HAL_RCC_FDCAN_CLK_DISABLE() CLEAR_BIT(RCC->APBENR1, RCC_APBENR1_FDCANEN) +#endif /* FDCAN1 || FDCAN2 */ +#define __HAL_RCC_DBGMCU_CLK_DISABLE() CLEAR_BIT(RCC->APBENR1, RCC_APBENR1_DBGEN) +#define __HAL_RCC_PWR_CLK_DISABLE() CLEAR_BIT(RCC->APBENR1, RCC_APBENR1_PWREN) +#if defined(DAC1) +#define __HAL_RCC_DAC1_CLK_DISABLE() CLEAR_BIT(RCC->APBENR1, RCC_APBENR1_DAC1EN) +#endif /* DAC1 */ +#if defined(LPTIM1) +#define __HAL_RCC_LPTIM1_CLK_DISABLE() CLEAR_BIT(RCC->APBENR1, RCC_APBENR1_LPTIM1EN) +#endif /* LPTIM1 */ +#if defined(LPTIM2) +#define __HAL_RCC_LPTIM2_CLK_DISABLE() CLEAR_BIT(RCC->APBENR1, RCC_APBENR1_LPTIM2EN) +#endif /* LPTIM2 */ +#define __HAL_RCC_SYSCFG_CLK_DISABLE() CLEAR_BIT(RCC->APBENR2, RCC_APBENR2_SYSCFGEN) +#define __HAL_RCC_TIM1_CLK_DISABLE() CLEAR_BIT(RCC->APBENR2, RCC_APBENR2_TIM1EN) +#define __HAL_RCC_SPI1_CLK_DISABLE() CLEAR_BIT(RCC->APBENR2, RCC_APBENR2_SPI1EN) +#define __HAL_RCC_USART1_CLK_DISABLE() CLEAR_BIT(RCC->APBENR2, RCC_APBENR2_USART1EN) +#define __HAL_RCC_TIM14_CLK_DISABLE() CLEAR_BIT(RCC->APBENR2, RCC_APBENR2_TIM14EN) +#if defined(TIM15) +#define __HAL_RCC_TIM15_CLK_DISABLE() CLEAR_BIT(RCC->APBENR2, RCC_APBENR2_TIM15EN) +#endif /* TIM15 */ +#define __HAL_RCC_TIM16_CLK_DISABLE() CLEAR_BIT(RCC->APBENR2, RCC_APBENR2_TIM16EN) +#define __HAL_RCC_TIM17_CLK_DISABLE() CLEAR_BIT(RCC->APBENR2, RCC_APBENR2_TIM17EN) +#define __HAL_RCC_ADC_CLK_DISABLE() CLEAR_BIT(RCC->APBENR2, RCC_APBENR2_ADCEN) + +/** + * @} + */ + +/** @defgroup RCC_AHB_Peripheral_Clock_Enabled_Disabled_Status AHB Peripheral Clock Enabled or Disabled Status + * @brief Check whether the AHB peripheral clock is enabled or not. + * @note After reset, the peripheral clock (used for registers read/write access) + * is disabled and the application software has to enable this clock before + * using it. + * @{ + */ + +#define __HAL_RCC_DMA1_IS_CLK_ENABLED() (READ_BIT(RCC->AHBENR, RCC_AHBENR_DMA1EN) != RESET) +#if defined(DMA2) +#define __HAL_RCC_DMA2_IS_CLK_ENABLED() (READ_BIT(RCC->AHBENR, RCC_AHBENR_DMA2EN) != RESET) +#endif /* DMA2 */ +#define __HAL_RCC_FLASH_IS_CLK_ENABLED() (READ_BIT(RCC->AHBENR, RCC_AHBENR_FLASHEN) != RESET) +#define __HAL_RCC_CRC_IS_CLK_ENABLED() (READ_BIT(RCC->AHBENR, RCC_AHBENR_CRCEN) != RESET) +#if defined(RNG) +#define __HAL_RCC_RNG_IS_CLK_ENABLED() (READ_BIT(RCC->AHBENR, RCC_AHBENR_RNGEN) != RESET) +#endif /* RNG */ +#if defined(AES) +#define __HAL_RCC_AES_IS_CLK_ENABLED() (READ_BIT(RCC->AHBENR, RCC_AHBENR_AESEN) != RESET) +#endif /* AES */ + +#define __HAL_RCC_DMA1_IS_CLK_DISABLED() (READ_BIT(RCC->AHBENR, RCC_AHBENR_DMA1EN) == RESET) +#if defined(DMA2) +#define __HAL_RCC_DMA2_IS_CLK_DISABLED() (READ_BIT(RCC->AHBENR, RCC_AHBENR_DMA2EN) == RESET) +#endif /* DMA2 */ +#define __HAL_RCC_FLASH_IS_CLK_DISABLED() (READ_BIT(RCC->AHBENR, RCC_AHBENR_FLASHEN) == RESET) +#define __HAL_RCC_CRC_IS_CLK_DISABLED() (READ_BIT(RCC->AHBENR, RCC_AHBENR_CRCEN) == RESET) +#if defined(RNG) +#define __HAL_RCC_RNG_IS_CLK_DISABLED() (READ_BIT(RCC->AHBENR, RCC_AHBENR_RNGEN) == RESET) +#endif /* RNG */ +#if defined(AES) +#define __HAL_RCC_AES_IS_CLK_DISABLED() (READ_BIT(RCC->AHBENR, RCC_AHBENR_AESEN) == RESET) +#endif /* AES */ +/** + * @} + */ + +/** @defgroup RCC_IOPORT_Clock_Enabled_Disabled_Status IOPORT Clock Enabled or Disabled Status + * @brief Check whether the IO Port clock is enabled or not. + * @note After reset, the peripheral clock (used for registers read/write access) + * is disabled and the application software has to enable this clock before + * using it. + * @{ + */ +#define __HAL_RCC_GPIOA_IS_CLK_ENABLED() (READ_BIT(RCC->IOPENR, RCC_IOPENR_GPIOAEN) != RESET) +#define __HAL_RCC_GPIOB_IS_CLK_ENABLED() (READ_BIT(RCC->IOPENR, RCC_IOPENR_GPIOBEN) != RESET) +#define __HAL_RCC_GPIOC_IS_CLK_ENABLED() (READ_BIT(RCC->IOPENR, RCC_IOPENR_GPIOCEN) != RESET) +#define __HAL_RCC_GPIOD_IS_CLK_ENABLED() (READ_BIT(RCC->IOPENR, RCC_IOPENR_GPIODEN) != RESET) +#if defined(GPIOE) +#define __HAL_RCC_GPIOE_IS_CLK_ENABLED() (READ_BIT(RCC->IOPENR, RCC_IOPENR_GPIOEEN) != RESET) +#endif /* GPIOE */ +#define __HAL_RCC_GPIOF_IS_CLK_ENABLED() (READ_BIT(RCC->IOPENR, RCC_IOPENR_GPIOFEN) != RESET) + + +#define __HAL_RCC_GPIOA_IS_CLK_DISABLED() (READ_BIT(RCC->IOPENR, RCC_IOPENR_GPIOAEN) == RESET) +#define __HAL_RCC_GPIOB_IS_CLK_DISABLED() (READ_BIT(RCC->IOPENR, RCC_IOPENR_GPIOBEN) == RESET) +#define __HAL_RCC_GPIOC_IS_CLK_DISABLED() (READ_BIT(RCC->IOPENR, RCC_IOPENR_GPIOCEN) == RESET) +#define __HAL_RCC_GPIOD_IS_CLK_DISABLED() (READ_BIT(RCC->IOPENR, RCC_IOPENR_GPIODEN) == RESET) +#if defined(GPIOE) +#define __HAL_RCC_GPIOE_IS_CLK_DISABLED() (READ_BIT(RCC->IOPENR, RCC_IOPENR_GPIOEEN) == RESET) +#endif /* GPIOE */ +#define __HAL_RCC_GPIOF_IS_CLK_DISABLED() (READ_BIT(RCC->IOPENR, RCC_IOPENR_GPIOFEN) == RESET) + +/** + * @} + */ + +/** @defgroup RCC_APB1_Clock_Enabled_Disabled_Status APB1 Peripheral Clock Enabled or Disabled Status + * @brief Check whether the APB1 peripheral clock is enabled or not. + * @note After reset, the peripheral clock (used for registers read/write access) + * is disabled and the application software has to enable this clock before + * using it. + * @{ + */ + +#if defined(TIM2) +#define __HAL_RCC_TIM2_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_TIM2EN) != 0U) +#endif /* TIM2 */ +#define __HAL_RCC_TIM3_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_TIM3EN) != 0U) +#if defined(TIM4) +#define __HAL_RCC_TIM4_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_TIM4EN) != 0U) +#endif /* TIM4 */ +#define __HAL_RCC_TIM6_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_TIM6EN) != 0U) +#define __HAL_RCC_TIM7_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_TIM7EN) != 0U) +#if defined(CRS) +#define __HAL_RCC_CRS_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_CRSEN) != 0U) +#endif /* CRS */ +#define __HAL_RCC_RTCAPB_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_RTCAPBEN) != 0U) +#define __HAL_RCC_WWDG_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_WWDGEN) != 0U) +#if defined(FDCAN1) || defined(FDCAN2) +#define __HAL_RCC_FDCAN_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_FDCANEN) != 0U) +#endif /* FDCAN1 || FDCAN2 */ +#if defined(STM32G0B0xx) || defined(STM32G0B1xx) || defined (STM32G0C1xx) +#define __HAL_RCC_USB_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_USBEN) != 0U) +#endif /* STM32G0B0xx || STM32G0B1xx || STM32G0C1xx */ +#define __HAL_RCC_SPI2_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_SPI2EN) != 0U) +#if defined(SPI3) +#define __HAL_RCC_SPI3_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_SPI3EN) != 0U) +#endif /* SPI3 */ +#define __HAL_RCC_USART2_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_USART2EN) != 0U) +#define __HAL_RCC_USART3_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_USART3EN) != 0U) +#define __HAL_RCC_USART4_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_USART4EN) != 0U) +#if defined(USART5) +#define __HAL_RCC_USART5_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_USART5EN) != 0U) +#endif /* USART5 */ +#if defined(USART6) +#define __HAL_RCC_USART6_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_USART6EN) != 0U) +#endif /* USART6 */ +#if defined(LPUART1) +#define __HAL_RCC_LPUART1_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_LPUART1EN)!= 0U) +#endif /* LPUART1 */ +#if defined(LPUART2) +#define __HAL_RCC_LPUART2_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_LPUART2EN)!= 0U) +#endif /* LPUART2 */ +#define __HAL_RCC_I2C1_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_I2C1EN) != 0U) +#define __HAL_RCC_I2C2_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_I2C2EN) != 0U) +#if defined(I2C3) +#define __HAL_RCC_I2C3_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_I2C3EN) != 0U) +#endif /* I2C3 */ +#if defined(CEC) +#define __HAL_RCC_CEC_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_CECEN) != 0U) +#endif /* CEC */ +#if defined(UCPD1) +#define __HAL_RCC_UCPD1_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_UCPD1EN) != 0U) +#endif /* UCPD1 */ +#if defined(UCPD2) +#define __HAL_RCC_UCPD2_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_UCPD2EN) != 0U) +#endif /* UCPD2 */ +#define __HAL_RCC_DBGMCU_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_DBGEN) != 0U) +#define __HAL_RCC_PWR_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_PWREN) != 0U) +#if defined(DAC1) +#define __HAL_RCC_DAC1_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_DAC1EN) != 0U) +#endif /* DAC1 */ +#if defined(LPTIM2) +#define __HAL_RCC_LPTIM2_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_LPTIM2EN) != 0U) +#endif /* LPTIM2 */ +#if defined(LPTIM1) +#define __HAL_RCC_LPTIM1_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_LPTIM1EN) != 0U) +#endif /* LPTIM1 */ +#if defined(TIM2) +#define __HAL_RCC_TIM2_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_TIM2EN) == 0U) +#endif /* TIM2 */ +#define __HAL_RCC_TIM3_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_TIM3EN) == 0U) +#if defined(TIM4) +#define __HAL_RCC_TIM4_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_TIM4EN) == 0U) +#endif /* TIM4 */ +#define __HAL_RCC_TIM6_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_TIM6EN) == 0U) +#define __HAL_RCC_TIM7_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_TIM7EN) == 0U) +#if defined(CRS) +#define __HAL_RCC_CRS_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_CRSEN) == 0U) +#endif /* CRS */ +#define __HAL_RCC_RTCAPB_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_RTCAPBEN) == 0U) +#define __HAL_RCC_WWDG_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_WWDGEN) == 0U) +#if defined(FDCAN1) || defined(FDCAN2) +#define __HAL_RCC_FDCAN_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_FDCANEN) == 0U) +#endif /* FDCAN1 || FDCAN2 */ +#if defined(STM32G0B0xx) || defined(STM32G0B1xx) || defined (STM32G0C1xx) +#define __HAL_RCC_USB_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_USBEN) == 0U) +#endif /* STM32G0B0xx || STM32G0B1xx || STM32G0C1xx */ +#define __HAL_RCC_SPI2_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_SPI2EN) == 0U) +#if defined(SPI3) +#define __HAL_RCC_SPI3_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_SPI3EN) == 0U) +#endif /* SPI3 */ +#define __HAL_RCC_USART2_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_USART2EN) == 0U) +#define __HAL_RCC_USART3_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_USART3EN) == 0U) +#define __HAL_RCC_USART4_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_USART4EN) == 0U) +#if defined(USART5) +#define __HAL_RCC_USART5_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_USART5EN) == 0U) +#endif /* USART5 */ +#if defined(USART6) +#define __HAL_RCC_USART6_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_USART6EN) == 0U) +#endif /* USART6 */ +#if defined(LPUART1) +#define __HAL_RCC_LPUART1_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_LPUART1EN)== 0U) +#endif /* LPUART1 */ +#if defined(LPUART2) +#define __HAL_RCC_LPUART2_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_LPUART2EN)== 0U) +#endif /* LPUART2 */ +#define __HAL_RCC_I2C1_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_I2C1EN) == 0U) +#define __HAL_RCC_I2C2_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_I2C2EN) == 0U) +#if defined(I2C3) +#define __HAL_RCC_I2C3_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_I2C3EN) == 0U) +#endif /* I2C3 */ +#if defined(CEC) +#define __HAL_RCC_CEC_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_CECEN) == 0U) +#endif /* CEC */ +#if defined(UCPD1) +#define __HAL_RCC_UCPD1_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_UCPD1EN) == 0U) +#endif /* UCPD1 */ +#if defined(UCPD2) +#define __HAL_RCC_UCPD2_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_UCPD2EN) == 0U) +#endif /* UCPD2 */ +#define __HAL_RCC_DBGMCU_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_DBGEN) == 0U) +#define __HAL_RCC_PWR_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_PWREN) == 0U) +#if defined(DAC1) +#define __HAL_RCC_DAC1_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_DAC1EN) == 0U) +#endif /* DAC1 */ +#if defined(LPTIM2) +#define __HAL_RCC_LPTIM2_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_LPTIM2EN) == 0U) +#endif /* LPTIM2 */ +#if defined(LPTIM1) +#define __HAL_RCC_LPTIM1_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR1, RCC_APBENR1_LPTIM1EN) == 0U) +#endif /* LPTIM1 */ + +/** + * @} + */ + +/** @defgroup RCC_APB2_Clock_Enabled_Disabled_Status APB2 Peripheral Clock Enabled or Disabled Status + * @brief Check whether the APB2 peripheral clock is enabled or not. + * @note After reset, the peripheral clock (used for registers read/write access) + * is disabled and the application software has to enable this clock before + * using it. + * @{ + */ + +#define __HAL_RCC_SYSCFG_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR2, RCC_APBENR2_SYSCFGEN) != 0U) +#define __HAL_RCC_TIM1_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR2, RCC_APBENR2_TIM1EN) != 0U) +#define __HAL_RCC_SPI1_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR2, RCC_APBENR2_SPI1EN) != 0U) +#define __HAL_RCC_USART1_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR2, RCC_APBENR2_USART1EN) != 0U) +#define __HAL_RCC_TIM14_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR2, RCC_APBENR2_TIM14EN) != 0U) +#if defined(TIM15) +#define __HAL_RCC_TIM15_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR2, RCC_APBENR2_TIM15EN) != 0U) +#endif /* TIM15 */ +#define __HAL_RCC_TIM16_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR2, RCC_APBENR2_TIM16EN) != 0U) +#define __HAL_RCC_TIM17_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR2, RCC_APBENR2_TIM17EN) != 0U) +#define __HAL_RCC_ADC_IS_CLK_ENABLED() (READ_BIT(RCC->APBENR2, RCC_APBENR2_ADCEN) != 0U) + +#define __HAL_RCC_SYSCFG_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR2, RCC_APBENR2_SYSCFGEN) == 0U) +#define __HAL_RCC_TIM1_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR2, RCC_APBENR2_TIM1EN) == 0U) +#define __HAL_RCC_SPI1_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR2, RCC_APBENR2_SPI1EN) == 0U) +#define __HAL_RCC_USART1_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR2, RCC_APBENR2_USART1EN) == 0U) +#define __HAL_RCC_TIM14_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR2, RCC_APBENR2_TIM14EN) == 0U) +#if defined(TIM15) +#define __HAL_RCC_TIM15_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR2, RCC_APBENR2_TIM15EN) == 0U) +#endif /* TIM15 */ +#define __HAL_RCC_TIM16_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR2, RCC_APBENR2_TIM16EN) == 0U) +#define __HAL_RCC_TIM17_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR2, RCC_APBENR2_TIM17EN) == 0U) +#define __HAL_RCC_ADC_IS_CLK_DISABLED() (READ_BIT(RCC->APBENR2, RCC_APBENR2_ADCEN) == 0U) + +/** + * @} + */ + +/** @defgroup RCC_AHB_Force_Release_Reset AHB Peripheral Force Release Reset + * @brief Force or release AHB1 peripheral reset. + * @{ + */ +#define __HAL_RCC_AHB_FORCE_RESET() WRITE_REG(RCC->AHBRSTR, 0xFFFFFFFFU) +#define __HAL_RCC_DMA1_FORCE_RESET() SET_BIT(RCC->AHBRSTR, RCC_AHBRSTR_DMA1RST) +#if defined(DMA2) +#define __HAL_RCC_DMA2_FORCE_RESET() SET_BIT(RCC->AHBRSTR, RCC_AHBRSTR_DMA2RST) +#endif /* DMA2 */ +#define __HAL_RCC_FLASH_FORCE_RESET() SET_BIT(RCC->AHBRSTR, RCC_AHBRSTR_FLASHRST) +#define __HAL_RCC_CRC_FORCE_RESET() SET_BIT(RCC->AHBRSTR, RCC_AHBRSTR_CRCRST) +#if defined(RNG) +#define __HAL_RCC_RNG_FORCE_RESET() SET_BIT(RCC->AHBRSTR, RCC_AHBRSTR_RNGRST) +#endif /* RNG */ +#if defined(AES) +#define __HAL_RCC_AES_FORCE_RESET() SET_BIT(RCC->AHBRSTR, RCC_AHBRSTR_AESRST) +#endif /* AES */ + +#define __HAL_RCC_AHB_RELEASE_RESET() WRITE_REG(RCC->AHBRSTR, 0x00000000U) +#define __HAL_RCC_DMA1_RELEASE_RESET() CLEAR_BIT(RCC->AHBRSTR, RCC_AHBRSTR_DMA1RST) +#if defined(DMA2) +#define __HAL_RCC_DMA2_RELEASE_RESET() CLEAR_BIT(RCC->AHBRSTR, RCC_AHBRSTR_DMA2RST) +#endif /* DMA2 */ +#define __HAL_RCC_FLASH_RELEASE_RESET() CLEAR_BIT(RCC->AHBRSTR, RCC_AHBRSTR_FLASHRST) +#define __HAL_RCC_CRC_RELEASE_RESET() CLEAR_BIT(RCC->AHBRSTR, RCC_AHBRSTR_CRCRST) +#if defined(RNG) +#define __HAL_RCC_RNG_RELEASE_RESET() CLEAR_BIT(RCC->AHBRSTR, RCC_AHBRSTR_RNGRST) +#endif /* RNG */ +#if defined(AES) +#define __HAL_RCC_AES_RELEASE_RESET() CLEAR_BIT(RCC->AHBRSTR, RCC_AHBRSTR_AESRST) +#endif /* AES */ +/** + * @} + */ + +/** @defgroup RCC_IOPORT_Force_Release_Reset IOPORT Force Release Reset + * @brief Force or release IO Port reset. + * @{ + */ +#define __HAL_RCC_IOP_FORCE_RESET() WRITE_REG(RCC->IOPRSTR, 0xFFFFFFFFU) +#define __HAL_RCC_GPIOA_FORCE_RESET() SET_BIT(RCC->IOPRSTR, RCC_IOPRSTR_GPIOARST) +#define __HAL_RCC_GPIOB_FORCE_RESET() SET_BIT(RCC->IOPRSTR, RCC_IOPRSTR_GPIOBRST) +#define __HAL_RCC_GPIOC_FORCE_RESET() SET_BIT(RCC->IOPRSTR, RCC_IOPRSTR_GPIOCRST) +#define __HAL_RCC_GPIOD_FORCE_RESET() SET_BIT(RCC->IOPRSTR, RCC_IOPRSTR_GPIODRST) +#if defined(GPIOE) +#define __HAL_RCC_GPIOE_FORCE_RESET() SET_BIT(RCC->IOPRSTR, RCC_IOPRSTR_GPIOERST) +#endif /* GPIOE */ +#define __HAL_RCC_GPIOF_FORCE_RESET() SET_BIT(RCC->IOPRSTR, RCC_IOPRSTR_GPIOFRST) + +#define __HAL_RCC_IOP_RELEASE_RESET() WRITE_REG(RCC->IOPRSTR, 0x00000000U) +#define __HAL_RCC_GPIOA_RELEASE_RESET() CLEAR_BIT(RCC->IOPRSTR, RCC_IOPRSTR_GPIOARST) +#define __HAL_RCC_GPIOB_RELEASE_RESET() CLEAR_BIT(RCC->IOPRSTR, RCC_IOPRSTR_GPIOBRST) +#define __HAL_RCC_GPIOC_RELEASE_RESET() CLEAR_BIT(RCC->IOPRSTR, RCC_IOPRSTR_GPIOCRST) +#define __HAL_RCC_GPIOD_RELEASE_RESET() CLEAR_BIT(RCC->IOPRSTR, RCC_IOPRSTR_GPIODRST) +#if defined(GPIOE) +#define __HAL_RCC_GPIOE_RELEASE_RESET() CLEAR_BIT(RCC->IOPRSTR, RCC_IOPRSTR_GPIOERST) +#endif /* GPIOE */ +#define __HAL_RCC_GPIOF_RELEASE_RESET() CLEAR_BIT(RCC->IOPRSTR, RCC_IOPRSTR_GPIOFRST) + +/** + * @} + */ + +/** @defgroup RCC_APB1_Force_Release_Reset APB1 Peripheral Force Release Reset + * @brief Force or release APB1 peripheral reset. + * @{ + */ +#define __HAL_RCC_APB1_FORCE_RESET() WRITE_REG(RCC->APBRSTR1, 0xFFFFFFFFU) + +#if defined(TIM2) +#define __HAL_RCC_TIM2_FORCE_RESET() SET_BIT(RCC->APBRSTR1, RCC_APBRSTR1_TIM2RST) +#endif /* TIM2 */ +#define __HAL_RCC_TIM3_FORCE_RESET() SET_BIT(RCC->APBRSTR1, RCC_APBRSTR1_TIM3RST) +#if defined(TIM4) +#define __HAL_RCC_TIM4_FORCE_RESET() SET_BIT(RCC->APBRSTR1, RCC_APBRSTR1_TIM4RST) +#endif /* TIM4 */ +#define __HAL_RCC_TIM6_FORCE_RESET() SET_BIT(RCC->APBRSTR1, RCC_APBRSTR1_TIM6RST) +#define __HAL_RCC_TIM7_FORCE_RESET() SET_BIT(RCC->APBRSTR1, RCC_APBRSTR1_TIM7RST) +#if defined(CRS) +#define __HAL_RCC_CRS_FORCE_RESET() SET_BIT(RCC->APBRSTR1, RCC_APBRSTR1_CRSRST) +#endif /* CRS */ +#define __HAL_RCC_SPI2_FORCE_RESET() SET_BIT(RCC->APBRSTR1, RCC_APBRSTR1_SPI2RST) +#if defined(SPI3) +#define __HAL_RCC_SPI3_FORCE_RESET() SET_BIT(RCC->APBRSTR1, RCC_APBRSTR1_SPI3RST) +#endif /* SPI3 */ +#define __HAL_RCC_USART2_FORCE_RESET() SET_BIT(RCC->APBRSTR1, RCC_APBRSTR1_USART2RST) +#define __HAL_RCC_USART3_FORCE_RESET() SET_BIT(RCC->APBRSTR1, RCC_APBRSTR1_USART3RST) +#define __HAL_RCC_USART4_FORCE_RESET() SET_BIT(RCC->APBRSTR1, RCC_APBRSTR1_USART4RST) +#if defined(USART5) +#define __HAL_RCC_USART5_FORCE_RESET() SET_BIT(RCC->APBRSTR1, RCC_APBRSTR1_USART5RST) +#endif /* USART5 */ +#if defined(USART6) +#define __HAL_RCC_USART6_FORCE_RESET() SET_BIT(RCC->APBRSTR1, RCC_APBRSTR1_USART6RST) +#endif /* USART6 */ +#if defined(LPUART1) +#define __HAL_RCC_LPUART1_FORCE_RESET() SET_BIT(RCC->APBRSTR1, RCC_APBRSTR1_LPUART1RST) +#endif /* LPUART1 */ +#if defined(LPUART2) +#define __HAL_RCC_LPUART2_FORCE_RESET() SET_BIT(RCC->APBRSTR1, RCC_APBRSTR1_LPUART2RST) +#endif /* LPUART2 */ +#define __HAL_RCC_I2C1_FORCE_RESET() SET_BIT(RCC->APBRSTR1, RCC_APBRSTR1_I2C1RST) +#define __HAL_RCC_I2C2_FORCE_RESET() SET_BIT(RCC->APBRSTR1, RCC_APBRSTR1_I2C2RST) +#if defined(I2C3) +#define __HAL_RCC_I2C3_FORCE_RESET() SET_BIT(RCC->APBRSTR1, RCC_APBRSTR1_I2C3RST) +#endif /* I2C3 */ +#if defined(CEC) +#define __HAL_RCC_CEC_FORCE_RESET() SET_BIT(RCC->APBRSTR1, RCC_APBRSTR1_CECRST) +#endif /* CEC */ +#if defined(UCPD1) +#define __HAL_RCC_UCPD1_FORCE_RESET() SET_BIT(RCC->APBRSTR1, RCC_APBRSTR1_UCPD1RST) +#endif /* UCPD1 */ +#if defined(UCPD2) +#define __HAL_RCC_UCPD2_FORCE_RESET() SET_BIT(RCC->APBRSTR1, RCC_APBRSTR1_UCPD2RST) +#endif /* UCPD2 */ +#if defined(STM32G0B0xx) || defined(STM32G0B1xx) || defined (STM32G0C1xx) +#define __HAL_RCC_USB_FORCE_RESET() SET_BIT(RCC->APBRSTR1, RCC_APBRSTR1_USBRST) +#endif /* STM32G0B0xx || STM32G0B1xx || STM32G0C1xx */ +#if defined(FDCAN1) || defined(FDCAN2) +#define __HAL_RCC_FDCAN_FORCE_RESET() SET_BIT(RCC->APBRSTR1, RCC_APBRSTR1_FDCANRST) +#endif /* FDCAN1 || FDCAN2 */ +#define __HAL_RCC_DBGMCU_FORCE_RESET() SET_BIT(RCC->APBRSTR1, RCC_APBRSTR1_DBGRST) +#define __HAL_RCC_PWR_FORCE_RESET() SET_BIT(RCC->APBRSTR1, RCC_APBRSTR1_PWRRST) +#if defined(DAC1) +#define __HAL_RCC_DAC1_FORCE_RESET() SET_BIT(RCC->APBRSTR1, RCC_APBRSTR1_DAC1RST) +#endif /* DAC1 */ +#if defined(LPTIM2) +#define __HAL_RCC_LPTIM2_FORCE_RESET() SET_BIT(RCC->APBRSTR1, RCC_APBRSTR1_LPTIM2RST) +#endif /* LPTIM2 */ +#if defined(LPTIM1) +#define __HAL_RCC_LPTIM1_FORCE_RESET() SET_BIT(RCC->APBRSTR1, RCC_APBRSTR1_LPTIM1RST) +#endif /* LPTIM1 */ +#define __HAL_RCC_APB1_RELEASE_RESET() WRITE_REG(RCC->APBRSTR1, 0x00000000U) +#if defined(TIM2) +#define __HAL_RCC_TIM2_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR1, RCC_APBRSTR1_TIM2RST) +#endif /* TIM2 */ +#define __HAL_RCC_TIM3_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR1, RCC_APBRSTR1_TIM3RST) +#if defined(TIM4) +#define __HAL_RCC_TIM4_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR1, RCC_APBRSTR1_TIM4RST) +#endif /* TIM4 */ +#define __HAL_RCC_TIM6_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR1, RCC_APBRSTR1_TIM6RST) +#define __HAL_RCC_TIM7_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR1, RCC_APBRSTR1_TIM7RST) +#if defined(CRS) +#define __HAL_RCC_CRS_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR1, RCC_APBRSTR1_CRSRST) +#endif /* CRS */ +#define __HAL_RCC_SPI2_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR1, RCC_APBRSTR1_SPI2RST) +#if defined(SPI3) +#define __HAL_RCC_SPI3_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR1, RCC_APBRSTR1_SPI3RST) +#endif /* SPI3 */ +#define __HAL_RCC_USART2_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR1, RCC_APBRSTR1_USART2RST) +#define __HAL_RCC_USART3_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR1, RCC_APBRSTR1_USART3RST) +#define __HAL_RCC_USART4_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR1, RCC_APBRSTR1_USART4RST) +#if defined(USART5) +#define __HAL_RCC_USART5_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR1, RCC_APBRSTR1_USART5RST) +#endif /* USART5 */ +#if defined(USART6) +#define __HAL_RCC_USART6_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR1, RCC_APBRSTR1_USART6RST) +#endif /* USART6 */ +#if defined(LPUART1) +#define __HAL_RCC_LPUART1_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR1, RCC_APBRSTR1_LPUART1RST) +#endif /* LPUART1 */ +#if defined(LPUART2) +#define __HAL_RCC_LPUART2_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR1, RCC_APBRSTR1_LPUART2RST) +#endif /* LPUART2 */ +#define __HAL_RCC_I2C1_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR1, RCC_APBRSTR1_I2C1RST) +#define __HAL_RCC_I2C2_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR1, RCC_APBRSTR1_I2C2RST) +#if defined(I2C3) +#define __HAL_RCC_I2C3_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR1, RCC_APBRSTR1_I2C3RST) +#endif /* I2C3 */ +#if defined(CEC) +#define __HAL_RCC_CEC_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR1, RCC_APBRSTR1_CECRST) +#endif /* CEC */ +#if defined(UCPD1) +#define __HAL_RCC_UCPD1_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR1, RCC_APBRSTR1_UCPD1RST) +#endif /* UCPD1 */ +#if defined(UCPD2) +#define __HAL_RCC_UCPD2_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR1, RCC_APBRSTR1_UCPD2RST) +#endif /* UCPD2 */ +#if defined(STM32G0B0xx) || defined(STM32G0B1xx) || defined (STM32G0C1xx) +#define __HAL_RCC_USB_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR1, RCC_APBRSTR1_USBRST) +#endif /* STM32G0B0xx || STM32G0B1xx || STM32G0C1xx */ +#if defined(FDCAN1) || defined(FDCAN2) +#define __HAL_RCC_FDCAN_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR1, RCC_APBRSTR1_FDCANRST) +#endif /* FDCAN1 || FDCAN2 */ +#define __HAL_RCC_DBGMCU_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR1, RCC_APBRSTR1_DBGRST) +#define __HAL_RCC_PWR_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR1, RCC_APBRSTR1_PWRRST) +#if defined(DAC1) +#define __HAL_RCC_DAC1_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR1, RCC_APBRSTR1_DAC1RST) +#endif /* DAC1 */ +#if defined(LPTIM2) +#define __HAL_RCC_LPTIM2_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR1, RCC_APBRSTR1_LPTIM2RST) +#endif /* LPTIM2 */ +#if defined(LPTIM1) +#define __HAL_RCC_LPTIM1_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR1, RCC_APBRSTR1_LPTIM1RST) +#endif /* LPTIM1 */ +/** + * @} + */ + +/** @defgroup RCC_APB2_Force_Release_Reset APB2 Peripheral Force Release Reset + * @brief Force or release APB2 peripheral reset. + * @{ + */ +#define __HAL_RCC_APB2_FORCE_RESET() WRITE_REG(RCC->APBRSTR2, 0xFFFFFFFFU) +#define __HAL_RCC_SYSCFG_FORCE_RESET() SET_BIT(RCC->APBRSTR2, RCC_APBRSTR2_SYSCFGRST) +#define __HAL_RCC_TIM1_FORCE_RESET() SET_BIT(RCC->APBRSTR2, RCC_APBRSTR2_TIM1RST) +#define __HAL_RCC_SPI1_FORCE_RESET() SET_BIT(RCC->APBRSTR2, RCC_APBRSTR2_SPI1RST) +#define __HAL_RCC_USART1_FORCE_RESET() SET_BIT(RCC->APBRSTR2, RCC_APBRSTR2_USART1RST) +#define __HAL_RCC_TIM14_FORCE_RESET() SET_BIT(RCC->APBRSTR2, RCC_APBRSTR2_TIM14RST) +#if defined(TIM15) +#define __HAL_RCC_TIM15_FORCE_RESET() SET_BIT(RCC->APBRSTR2, RCC_APBRSTR2_TIM15RST) +#endif /* TIM15 */ +#define __HAL_RCC_TIM16_FORCE_RESET() SET_BIT(RCC->APBRSTR2, RCC_APBRSTR2_TIM16RST) +#define __HAL_RCC_TIM17_FORCE_RESET() SET_BIT(RCC->APBRSTR2, RCC_APBRSTR2_TIM17RST) +#define __HAL_RCC_ADC_FORCE_RESET() SET_BIT(RCC->APBRSTR2, RCC_APBRSTR2_ADCRST) + +#define __HAL_RCC_APB2_RELEASE_RESET() WRITE_REG(RCC->APBRSTR2, 0x00U) +#define __HAL_RCC_SYSCFG_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR2, RCC_APBRSTR2_SYSCFGRST) +#define __HAL_RCC_TIM1_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR2, RCC_APBRSTR2_TIM1RST) +#define __HAL_RCC_SPI1_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR2, RCC_APBRSTR2_SPI1RST) +#define __HAL_RCC_USART1_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR2, RCC_APBRSTR2_USART1RST) +#define __HAL_RCC_TIM14_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR2, RCC_APBRSTR2_TIM14RST) +#if defined(TIM15) +#define __HAL_RCC_TIM15_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR2, RCC_APBRSTR2_TIM15RST) +#endif /* TIM15 */ +#define __HAL_RCC_TIM16_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR2, RCC_APBRSTR2_TIM16RST) +#define __HAL_RCC_TIM17_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR2, RCC_APBRSTR2_TIM17RST) +#define __HAL_RCC_ADC_RELEASE_RESET() CLEAR_BIT(RCC->APBRSTR2, RCC_APBRSTR2_ADCRST) + +/** + * @} + */ + +/** @defgroup RCC_AHB_Clock_Sleep_Enable_Disable AHB Peripherals Clock Sleep Enable Disable + * @brief Enable or disable the AHB peripherals clock during Low Power (Sleep) mode. + * @note Peripheral clock gating in SLEEP mode can be used to further reduce + * power consumption. + * @note After wakeup from SLEEP mode, the peripheral clock is enabled again. + * @note By default, all peripheral clocks are enabled during SLEEP mode. + * @{ + */ + +#define __HAL_RCC_DMA1_CLK_SLEEP_ENABLE() SET_BIT(RCC->AHBSMENR, RCC_AHBSMENR_DMA1SMEN) +#if defined(DMA2) +#define __HAL_RCC_DMA2_CLK_SLEEP_ENABLE() SET_BIT(RCC->AHBSMENR, RCC_AHBSMENR_DMA2SMEN) +#endif /* DMA2 */ +#define __HAL_RCC_FLASH_CLK_SLEEP_ENABLE() SET_BIT(RCC->AHBSMENR, RCC_AHBSMENR_FLASHSMEN) +#define __HAL_RCC_SRAM_CLK_SLEEP_ENABLE() SET_BIT(RCC->AHBSMENR, RCC_AHBSMENR_SRAMSMEN) +#define __HAL_RCC_CRC_CLK_SLEEP_ENABLE() SET_BIT(RCC->AHBSMENR, RCC_AHBSMENR_CRCSMEN) +#if defined(RNG) +#define __HAL_RCC_RNG_CLK_SLEEP_ENABLE() SET_BIT(RCC->AHBSMENR, RCC_AHBSMENR_RNGSMEN) +#endif /* RNG */ +#if defined(AES) +#define __HAL_RCC_AES_CLK_SLEEP_ENABLE() SET_BIT(RCC->AHBSMENR, RCC_AHBSMENR_AESSMEN) +#endif /* AES */ +#define __HAL_RCC_DMA1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->AHBSMENR, RCC_AHBSMENR_DMA1SMEN) +#if defined(DMA2) +#define __HAL_RCC_DMA2_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->AHBSMENR, RCC_AHBSMENR_DMA2SMEN) +#endif /* DMA2 */ +#define __HAL_RCC_FLASH_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->AHBSMENR, RCC_AHBSMENR_FLASHSMEN) +#define __HAL_RCC_SRAM_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->AHBSMENR, RCC_AHBSMENR_SRAMSMEN) +#define __HAL_RCC_CRC_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->AHBSMENR, RCC_AHBSMENR_CRCSMEN) +#if defined(RNG) +#define __HAL_RCC_RNG_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->AHBSMENR, RCC_AHBSMENR_RNGSMEN) +#endif /* RNG */ +#if defined(AES) +#define __HAL_RCC_AES_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->AHBSMENR, RCC_AHBSMENR_AESSMEN) +#endif /* AES */ + +/** + * @} + */ + +/** @defgroup RCC_IOPORT_Clock_Sleep_Enable_Disable IOPORT Clock Sleep Enable Disable + * @brief Enable or disable the IOPORT clock during Low Power (Sleep) mode. + * @note IOPORT clock gating in SLEEP mode can be used to further reduce + * power consumption. + * @note After wakeup from SLEEP mode, the peripheral clock is enabled again. + * @note By default, all peripheral clocks are enabled during SLEEP mode. + * @{ + */ + +#define __HAL_RCC_GPIOA_CLK_SLEEP_ENABLE() SET_BIT(RCC->IOPSMENR, RCC_IOPSMENR_GPIOASMEN) +#define __HAL_RCC_GPIOB_CLK_SLEEP_ENABLE() SET_BIT(RCC->IOPSMENR, RCC_IOPSMENR_GPIOBSMEN) +#define __HAL_RCC_GPIOC_CLK_SLEEP_ENABLE() SET_BIT(RCC->IOPSMENR, RCC_IOPSMENR_GPIOCSMEN) +#define __HAL_RCC_GPIOD_CLK_SLEEP_ENABLE() SET_BIT(RCC->IOPSMENR, RCC_IOPSMENR_GPIODSMEN) +#if defined(GPIOE) +#define __HAL_RCC_GPIOE_CLK_SLEEP_ENABLE() SET_BIT(RCC->IOPSMENR, RCC_IOPSMENR_GPIOESMEN) +#endif /* GPIOE */ +#define __HAL_RCC_GPIOF_CLK_SLEEP_ENABLE() SET_BIT(RCC->IOPSMENR, RCC_IOPSMENR_GPIOFSMEN) + +#define __HAL_RCC_GPIOA_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->IOPSMENR, RCC_IOPSMENR_GPIOASMEN) +#define __HAL_RCC_GPIOB_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->IOPSMENR, RCC_IOPSMENR_GPIOBSMEN) +#define __HAL_RCC_GPIOC_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->IOPSMENR, RCC_IOPSMENR_GPIOCSMEN) +#define __HAL_RCC_GPIOD_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->IOPSMENR, RCC_IOPSMENR_GPIODSMEN) +#if defined(GPIOE) +#define __HAL_RCC_GPIOE_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->IOPSMENR, RCC_IOPSMENR_GPIOESMEN) +#endif /* GPIOE */ +#define __HAL_RCC_GPIOF_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->IOPSMENR, RCC_IOPSMENR_GPIOFSMEN) +/** + * @} + */ + +/** @defgroup RCC_APB1_Clock_Sleep_Enable_Disable APB1 Peripheral Clock Sleep Enable Disable + * @brief Enable or disable the APB1 peripheral clock during Low Power (Sleep) mode. + * @note Peripheral clock gating in SLEEP mode can be used to further reduce + * power consumption. + * @note After wakeup from SLEEP mode, the peripheral clock is enabled again. + * @note By default, all peripheral clocks are enabled during SLEEP mode. + * @{ + */ +#if defined(TIM2) +#define __HAL_RCC_TIM2_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR1, RCC_APBSMENR1_TIM2SMEN) +#endif /* TIM2 */ +#define __HAL_RCC_TIM3_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR1, RCC_APBSMENR1_TIM3SMEN) +#if defined(TIM4) +#define __HAL_RCC_TIM4_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR1, RCC_APBSMENR1_TIM4SMEN) +#endif /* TIM4 */ +#define __HAL_RCC_TIM6_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR1, RCC_APBSMENR1_TIM6SMEN) +#define __HAL_RCC_TIM7_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR1, RCC_APBSMENR1_TIM7SMEN) +#if defined(CRS) +#define __HAL_RCC_CRS_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR1, RCC_APBSMENR1_CRSSMEN) +#endif /* CRS */ +#define __HAL_RCC_RTCAPB_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR1, RCC_APBSMENR1_RTCAPBSMEN) +#define __HAL_RCC_WWDG_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR1, RCC_APBSMENR1_WWDGSMEN) +#define __HAL_RCC_SPI2_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR1, RCC_APBSMENR1_SPI2SMEN) +#if defined(SPI3) +#define __HAL_RCC_SPI3_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR1, RCC_APBSMENR1_SPI3SMEN) +#endif /* SPI3 */ +#define __HAL_RCC_USART2_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR1, RCC_APBSMENR1_USART2SMEN) +#define __HAL_RCC_USART3_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR1, RCC_APBSMENR1_USART3SMEN) +#define __HAL_RCC_USART4_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR1, RCC_APBSMENR1_USART4SMEN) +#if defined(USART5) +#define __HAL_RCC_USART5_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR1, RCC_APBSMENR1_USART5SMEN) +#endif /* USART5 */ +#if defined(USART6) +#define __HAL_RCC_USART6_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR1, RCC_APBSMENR1_USART6SMEN) +#endif /* USART6 */ +#if defined(LPUART1) +#define __HAL_RCC_LPUART1_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR1, RCC_APBSMENR1_LPUART1SMEN) +#endif /* LPUART1 */ +#if defined(LPUART2) +#define __HAL_RCC_LPUART2_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR1, RCC_APBSMENR1_LPUART2SMEN) +#endif /* LPUART2 */ +#define __HAL_RCC_I2C1_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR1, RCC_APBSMENR1_I2C1SMEN) +#define __HAL_RCC_I2C2_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR1, RCC_APBSMENR1_I2C2SMEN) +#if defined(I2C3) +#define __HAL_RCC_I2C3_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR1, RCC_APBSMENR1_I2C3SMEN) +#endif /* I2C3 */ +#if defined(CEC) +#define __HAL_RCC_CEC_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR1, RCC_APBSMENR1_CECSMEN) +#endif /* CEC */ +#if defined(UCPD1) +#define __HAL_RCC_UCPD1_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR1, RCC_APBSMENR1_UCPD1SMEN) +#endif /* UCPD1 */ +#if defined(UCPD2) +#define __HAL_RCC_UCPD2_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR1, RCC_APBSMENR1_UCPD2SMEN) +#endif /* UCPD2 */ +#if defined(STM32G0B0xx) || defined(STM32G0B1xx) || defined (STM32G0C1xx) +#define __HAL_RCC_USB_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR1, RCC_APBSMENR1_USBSMEN) +#endif /* STM32G0B0xx || STM32G0B1xx || STM32G0C1xx */ +#if defined(FDCAN1) || defined(FDCAN2) +#define __HAL_RCC_FDCAN_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR1, RCC_APBSMENR1_FDCANSMEN) +#endif /* FDCAN1 || FDCAN2 */ +#define __HAL_RCC_DBGMCU_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR1, RCC_APBSMENR1_DBGSMEN) +#define __HAL_RCC_PWR_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR1, RCC_APBSMENR1_PWRSMEN) +#if defined(DAC1) +#define __HAL_RCC_DAC1_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR1, RCC_APBSMENR1_DAC1SMEN) +#endif /* DAC1 */ +#if defined(LPTIM2) +#define __HAL_RCC_LPTIM2_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR1, RCC_APBSMENR1_LPTIM2SMEN) +#endif /* LPTIM2 */ +#if defined(LPTIM1) +#define __HAL_RCC_LPTIM1_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR1, RCC_APBSMENR1_LPTIM1SMEN) +#endif /* LPTIM1 */ +#if defined(TIM2) +#define __HAL_RCC_TIM2_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR1, RCC_APBSMENR1_TIM2SMEN) +#endif /* TIM2 */ +#define __HAL_RCC_TIM3_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR1, RCC_APBSMENR1_TIM3SMEN) +#if defined(TIM4) +#define __HAL_RCC_TIM4_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR1, RCC_APBSMENR1_TIM4SMEN) +#endif /* TIM4 */ +#define __HAL_RCC_TIM6_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR1, RCC_APBSMENR1_TIM6SMEN) +#define __HAL_RCC_TIM7_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR1, RCC_APBSMENR1_TIM7SMEN) +#if defined(CRS) +#define __HAL_RCC_CRS_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR1, RCC_APBSMENR1_CRSSMEN) +#endif /* CRS */ +#define __HAL_RCC_RTCAPB_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR1, RCC_APBSMENR1_RTCAPBSMEN) +#define __HAL_RCC_WWDG_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR1, RCC_APBSMENR1_WWDGSMEN) +#define __HAL_RCC_SPI2_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR1, RCC_APBSMENR1_SPI2SMEN) +#if defined(SPI3) +#define __HAL_RCC_SPI3_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR1, RCC_APBSMENR1_SPI3SMEN) +#endif /* TIM2 */ +#define __HAL_RCC_USART2_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR1, RCC_APBSMENR1_USART2SMEN) +#define __HAL_RCC_USART3_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR1, RCC_APBSMENR1_USART3SMEN) +#define __HAL_RCC_USART4_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR1, RCC_APBSMENR1_USART4SMEN) +#if defined(USART5) +#define __HAL_RCC_USART5_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR1, RCC_APBSMENR1_USART5SMEN) +#endif /* USART5 */ +#if defined(USART6) +#define __HAL_RCC_USART6_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR1, RCC_APBSMENR1_USART6SMEN) +#endif /* USART6 */ +#if defined(LPUART1) +#define __HAL_RCC_LPUART1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR1, RCC_APBSMENR1_LPUART1SMEN) +#endif /* LPUART1 */ +#if defined(LPUART2) +#define __HAL_RCC_LPUART2_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR1, RCC_APBSMENR1_LPUART2SMEN) +#endif /* LPUART2 */ +#define __HAL_RCC_I2C1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR1, RCC_APBSMENR1_I2C1SMEN) +#define __HAL_RCC_I2C2_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR1, RCC_APBSMENR1_I2C2SMEN) +#if defined(I2C3) +#define __HAL_RCC_I2C3_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR1, RCC_APBSMENR1_I2C3SMEN) +#endif /* I2C3 */ +#if defined(CEC) +#define __HAL_RCC_CEC_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR1, RCC_APBSMENR1_CECSMEN) +#endif /* CEC */ +#if defined(UCPD1) +#define __HAL_RCC_UCPD1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR1, RCC_APBSMENR1_UCPD1SMEN) +#endif /* UCPD1 */ +#if defined(UCPD2) +#define __HAL_RCC_UCPD2_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR1, RCC_APBSMENR1_UCPD2SMEN) +#endif /* UCPD2 */ +#if defined(STM32G0B0xx) || defined(STM32G0B1xx) || defined (STM32G0C1xx) +#define __HAL_RCC_USB_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR1, RCC_APBSMENR1_USBSMEN) +#endif /* STM32G0B0xx || STM32G0B1xx || STM32G0C1xx */ +#if defined(FDCAN1) || defined(FDCAN2) +#define __HAL_RCC_FDCAN_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR1, RCC_APBSMENR1_FDCANSMEN) +#endif /* FDCAN1) || FDCAN2 */ +#define __HAL_RCC_DBGMCU_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR1, RCC_APBSMENR1_DBGSMEN) +#define __HAL_RCC_PWR_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR1, RCC_APBSMENR1_PWRSMEN) +#if defined(DAC1) +#define __HAL_RCC_DAC1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR1, RCC_APBSMENR1_DAC1SMEN) +#endif /* DAC1 */ +#if defined(LPTIM2) +#define __HAL_RCC_LPTIM2_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR1, RCC_APBSMENR1_LPTIM2SMEN) +#endif /* LPTIM2 */ +#if defined(LPTIM1) +#define __HAL_RCC_LPTIM1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR1, RCC_APBSMENR1_LPTIM1SMEN) +#endif /* LPTIM1 */ +/** + * @} + */ + +/** @defgroup RCC_APB2_Clock_Sleep_Enable_Disable APB2 Peripheral Clock Sleep Enable Disable + * @brief Enable or disable the APB2 peripheral clock during Low Power (Sleep) mode. + * @note Peripheral clock gating in SLEEP mode can be used to further reduce + * power consumption. + * @note After wakeup from SLEEP mode, the peripheral clock is enabled again. + * @note By default, all peripheral clocks are enabled during SLEEP mode. + * @{ + */ + +#define __HAL_RCC_SYSCFG_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_SYSCFGSMEN) +#define __HAL_RCC_TIM1_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_TIM1SMEN) +#define __HAL_RCC_SPI1_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_SPI1SMEN) +#define __HAL_RCC_USART1_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_USART1SMEN) +#define __HAL_RCC_TIM14_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_TIM14SMEN) +#if defined(TIM15) +#define __HAL_RCC_TIM15_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_TIM15SMEN) +#endif /* TIM15 */ +#define __HAL_RCC_TIM16_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_TIM16SMEN) +#define __HAL_RCC_TIM17_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_TIM17SMEN) +#define __HAL_RCC_ADC_CLK_SLEEP_ENABLE() SET_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_ADCSMEN) + +#define __HAL_RCC_SYSCFG_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_SYSCFGSMEN) +#define __HAL_RCC_TIM1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_TIM1SMEN) +#define __HAL_RCC_SPI1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_SPI1SMEN) +#define __HAL_RCC_USART1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_USART1SMEN) +#define __HAL_RCC_TIM14_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_TIM14SMEN) +#if defined(TIM15) +#define __HAL_RCC_TIM15_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_TIM15SMEN) +#endif /* TIM15 */ +#define __HAL_RCC_TIM16_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_TIM16SMEN) +#define __HAL_RCC_TIM17_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_TIM17SMEN) +#define __HAL_RCC_ADC_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_ADCSMEN) + +/** + * @} + */ + +/** @defgroup RCC_AHB_Clock_Sleep_Enabled_Disabled_Status AHB Peripheral Clock Sleep Enabled or Disabled Status + * @brief Check whether the AHB peripheral clock during Low Power (Sleep) mode is enabled or not. + * @note Peripheral clock gating in SLEEP mode can be used to further reduce + * power consumption. + * @note After wakeup from SLEEP mode, the peripheral clock is enabled again. + * @note By default, all peripheral clocks are enabled during SLEEP mode. + * @{ + */ + +#define __HAL_RCC_DMA1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->AHBSMENR, RCC_AHBSMENR_DMA1SMEN) != RESET) +#if defined(DMA2) +#define __HAL_RCC_DMA2_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->AHBSMENR, RCC_AHBSMENR_DMA2SMEN) != RESET) +#endif /* DMA2 */ +#define __HAL_RCC_FLASH_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->AHBSMENR, RCC_AHBSMENR_FLASHSMEN)!= RESET) +#define __HAL_RCC_SRAM_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->AHBSMENR, RCC_AHBSMENR_SRAMSMEN) != RESET) +#define __HAL_RCC_CRC_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->AHBSMENR, RCC_AHBSMENR_CRCSMEN) != RESET) +#if defined(RNG) +#define __HAL_RCC_RNG_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->AHBSMENR, RCC_AHBSMENR_RNGSMEN) != RESET) +#endif /* RNG */ +#if defined(AES) +#define __HAL_RCC_AES_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->AHBSMENR, RCC_AHBSMENR_AESSMEN) != RESET) +#endif /* AES */ +#define __HAL_RCC_DMA1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->AHBSMENR, RCC_AHBSMENR_DMA1SMEN) == RESET) +#if defined(DMA2) +#define __HAL_RCC_DMA2_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->AHBSMENR, RCC_AHBSMENR_DMA2SMEN) == RESET) +#endif /* DMA2 */ +#define __HAL_RCC_FLASH_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->AHBSMENR, RCC_AHBSMENR_FLASHSMEN) == RESET) +#define __HAL_RCC_SRAM_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->AHBSMENR, RCC_AHBSMENR_SRAMSMEN) == RESET) +#define __HAL_RCC_CRC_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->AHBSMENR, RCC_AHBSMENR_CRCSMEN) == RESET) +#if defined(RNG) +#define __HAL_RCC_RNG_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->AHBSMENR, RCC_AHBSMENR_RNGSMEN) == RESET) +#endif /* RNG */ +#if defined(AES) +#define __HAL_RCC_AES_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->AHBSMENR, RCC_AHBSMENR_AESSMEN) == RESET) +#endif /* AES */ + +/** + * @} + */ + +/** @defgroup RCC_IOPORT_Clock_Sleep_Enabled_Disabled_Status IOPORT Clock Sleep Enabled or Disabled Status + * @brief Check whether the IOPORT clock during Low Power (Sleep) mode is enabled or not. + * @note Peripheral clock gating in SLEEP mode can be used to further reduce + * power consumption. + * @note After wakeup from SLEEP mode, the peripheral clock is enabled again. + * @note By default, all peripheral clocks are enabled during SLEEP mode. + * @{ + */ + + +#define __HAL_RCC_GPIOA_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->IOPSMENR, RCC_IOPSMENR_GPIOASMEN)!= RESET) +#define __HAL_RCC_GPIOB_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->IOPSMENR, RCC_IOPSMENR_GPIOBSMEN)!= RESET) +#define __HAL_RCC_GPIOC_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->IOPSMENR, RCC_IOPSMENR_GPIOCSMEN)!= RESET) +#define __HAL_RCC_GPIOD_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->IOPSMENR, RCC_IOPSMENR_GPIODSMEN)!= RESET) +#if defined(GPIOE) +#define __HAL_RCC_GPIOE_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->IOPSMENR, RCC_IOPSMENR_GPIOESMEN)!= RESET) +#endif /* GPIOE */ +#define __HAL_RCC_GPIOF_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->IOPSMENR, RCC_IOPSMENR_GPIOFSMEN)!= RESET) + + + +#define __HAL_RCC_GPIOA_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->IOPSMENR, RCC_IOPSMENR_GPIOASMEN) == RESET) +#define __HAL_RCC_GPIOB_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->IOPSMENR, RCC_IOPSMENR_GPIOBSMEN) == RESET) +#define __HAL_RCC_GPIOC_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->IOPSMENR, RCC_IOPSMENR_GPIOCSMEN) == RESET) +#define __HAL_RCC_GPIOD_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->IOPSMENR, RCC_IOPSMENR_GPIODSMEN) == RESET) +#if defined(GPIOE) +#define __HAL_RCC_GPIOE_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->IOPSMENR, RCC_IOPSMENR_GPIOESMEN) == RESET) +#endif /* GPIOE */ +#define __HAL_RCC_GPIOF_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->IOPSMENR, RCC_IOPSMENR_GPIOFSMEN) == RESET) + +/** + * @} + */ + +/** @defgroup RCC_APB1_Clock_Sleep_Enabled_Disabled_Status APB1 Peripheral Clock Sleep Enabled or Disabled Status + * @brief Check whether the APB1 peripheral clock during Low Power (Sleep) mode is enabled or not. + * @note Peripheral clock gating in SLEEP mode can be used to further reduce + * power consumption. + * @note After wakeup from SLEEP mode, the peripheral clock is enabled again. + * @note By default, all peripheral clocks are enabled during SLEEP mode. + * @{ + */ +#if defined(TIM2) +#define __HAL_RCC_TIM2_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_TIM2SMEN) != RESET) +#endif /* TIM2 */ +#define __HAL_RCC_TIM3_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_TIM3SMEN) != RESET) +#if defined(TIM4) +#define __HAL_RCC_TIM4_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_TIM4SMEN) != RESET) +#endif /* TIM4 */ +#if defined(TIM6) +#define __HAL_RCC_TIM6_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_TIM6SMEN) != RESET) +#endif /* TIM6 */ +#if defined(TIM7) +#define __HAL_RCC_TIM7_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_TIM7SMEN) != RESET) +#endif /* TIM7 */ +#if defined(CRS) +#define __HAL_RCC_CRS_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_CRSSMEN) != RESET) +#endif /* CRS */ +#define __HAL_RCC_RTCAPB_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_RTCAPBSMEN) != RESET) +#define __HAL_RCC_WWDG_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_WWDGSMEN) != RESET) +#define __HAL_RCC_SPI2_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_SPI2SMEN) != RESET) +#if defined(SPI3) +#define __HAL_RCC_SPI3_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_SPI3SMEN) != RESET) +#endif /* SPI3 */ +#define __HAL_RCC_USART2_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_USART2SMEN) != RESET) +#if defined(USART3) +#define __HAL_RCC_USART3_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_USART3SMEN) != RESET) +#endif /* USART3 */ +#if defined(USART4) +#define __HAL_RCC_USART4_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_USART4SMEN) != RESET) +#endif /* USART4 */ +#if defined(USART5) +#define __HAL_RCC_USART5_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_USART5SMEN) != RESET) +#endif /* USART5 */ +#if defined(USART6) +#define __HAL_RCC_USART6_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_USART6SMEN) != RESET) +#endif /* USART6 */ +#if defined(LPUART1) +#define __HAL_RCC_LPUART1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_LPUART1SMEN)!= RESET) +#endif /* LPUART1 */ +#if defined(LPUART2) +#define __HAL_RCC_LPUART2_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_LPUART2SMEN)!= RESET) +#endif /* LPUART2 */ +#define __HAL_RCC_I2C1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_I2C1SMEN) != RESET) +#define __HAL_RCC_I2C2_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_I2C2SMEN) != RESET) +#if defined(I2C3) +#define __HAL_RCC_I2C3_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_I2C3SMEN) != RESET) +#endif /* I2C3 */ +#if defined(CEC) +#define __HAL_RCC_CEC_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_CECSMEN) != RESET) +#endif /* CEC */ +#if defined(UCPD1) +#define __HAL_RCC_UCPD1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_UCPD1SMEN) != RESET) +#endif /* UCPD1 */ +#if defined(UCPD2) +#define __HAL_RCC_UCPD2_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_UCPD2SMEN) != RESET) +#endif /* UCPD2 */ +#if defined(STM32G0B0xx) || defined(STM32G0B1xx) || defined (STM32G0C1xx) +#define __HAL_RCC_USB_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_USBSMEN) != RESET) +#endif /* STM32G0B0xx || STM32G0B1xx || STM32G0C1xx */ +#if defined(FDCAN1) || defined(FDCAN2) +#define __HAL_RCC_FDCAN_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_FDCANSMEN) != RESET) +#endif /* FDCAN1 || FDCAN2 */ +#define __HAL_RCC_DBGMCU_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_DBGSMEN) != RESET) +#define __HAL_RCC_PWR_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_PWRSMEN) != RESET) +#if defined(DAC1) +#define __HAL_RCC_DAC1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_DAC1SMEN) != RESET) +#endif /* DAC1 */ +#if defined(LPTIM2) +#define __HAL_RCC_LPTIM2_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_LPTIM2SMEN) != RESET) +#endif /* LPTIM2 */ +#if defined(LPTIM1) +#define __HAL_RCC_LPTIM1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_LPTIM1SMEN) != RESET) +#endif /* LPTIM1 */ +#if defined(TIM2) +#define __HAL_RCC_TIM2_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_TIM2SMEN) == RESET) +#endif /* TIM2 */ +#define __HAL_RCC_TIM3_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_TIM3SMEN) == RESET) +#if defined(TIM4) +#define __HAL_RCC_TIM4_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_TIM4SMEN) == RESET) +#endif /* TIM4 */ +#if defined(TIM6) +#define __HAL_RCC_TIM6_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_TIM6SMEN) == RESET) +#endif /* TIM6 */ +#if defined(TIM7) +#define __HAL_RCC_TIM7_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_TIM7SMEN) == RESET) +#endif /* TIM7 */ +#if defined(CRS) +#define __HAL_RCC_CRS_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_CRSSMEN) == RESET) +#endif /* CRS */ +#define __HAL_RCC_RTCAPB_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_RTCAPBSMEN) == RESET) +#define __HAL_RCC_WWDG_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_WWDGSMEN) == RESET) +#define __HAL_RCC_SPI2_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_SPI2SMEN) == RESET) +#if defined(SPI3) +#define __HAL_RCC_SPI3_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_SPI3SMEN) == RESET) +#endif /* SPI3 */ +#define __HAL_RCC_USART2_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_USART2SMEN) == RESET) +#if defined(USART3) +#define __HAL_RCC_USART3_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_USART3SMEN) == RESET) +#endif /* USART3 */ +#if defined(USART4) +#define __HAL_RCC_USART4_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_USART4SMEN) == RESET) +#endif /* USART4 */ +#if defined(USART5) +#define __HAL_RCC_USART5_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_USART5SMEN) == RESET) +#endif /* USART5 */ +#if defined(USART6) +#define __HAL_RCC_USART6_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_USART6SMEN) == RESET) +#endif /* USART6 */ +#if defined(LPUART1) +#define __HAL_RCC_LPUART1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_LPUART1SMEN)== RESET) +#endif /* LPUART1 */ +#if defined(LPUART2) +#define __HAL_RCC_LPUART2_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_LPUART2SMEN)== RESET) +#endif /* LPUART2 */ +#define __HAL_RCC_I2C1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_I2C1SMEN) == RESET) +#define __HAL_RCC_I2C2_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_I2C2SMEN) == RESET) +#if defined(I2C3) +#define __HAL_RCC_I2C3_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_I2C3SMEN) == RESET) +#endif /* I2C3 */ +#if defined(CEC) +#define __HAL_RCC_CEC_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_CECSMEN) == RESET) +#endif /* CEC */ +#if defined(UCPD1) +#define __HAL_RCC_UCPD1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_UCPD1SMEN) == RESET) +#endif /* UCPD1 */ +#if defined(UCPD2) +#define __HAL_RCC_UCPD2_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_UCPD2SMEN) == RESET) +#endif /* UCPD2 */ +#if defined(STM32G0B0xx) || defined(STM32G0B1xx) || defined (STM32G0C1xx) +#define __HAL_RCC_USB_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_USBSMEN) == RESET) +#endif /* STM32G0B0xx || STM32G0B1xx || STM32G0C1xx */ +#if defined(FDCAN1) || defined(FDCAN2) +#define __HAL_RCC_FDCAN_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_FDCANSMEN) == RESET) +#endif /* FDCAN1 || FDCAN2 */ +#define __HAL_RCC_DBGMCU_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_DBGSMEN) == RESET) +#define __HAL_RCC_PWR_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_PWRSMEN) == RESET) +#if defined(DAC1) +#define __HAL_RCC_DAC1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_DAC1SMEN) == RESET) +#endif /* DAC1 */ +#if defined(LPTIM2) +#define __HAL_RCC_LPTIM2_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_LPTIM2SMEN) == RESET) +#endif /* LPTIM2 */ +#if defined(LPTIM1) +#define __HAL_RCC_LPTIM1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR1, RCC_APBSMENR1_LPTIM1SMEN) == RESET) +#endif /* LPTIM1 */ + +/** + * @} + */ + +/** @defgroup RCC_APB2_Clock_Sleep_Enabled_Disabled_Status APB2 Peripheral Clock Sleep Enabled or Disabled Status + * @brief Check whether the APB2 peripheral clock during Low Power (Sleep) mode is enabled or not. + * @note Peripheral clock gating in SLEEP mode can be used to further reduce + * power consumption. + * @note After wakeup from SLEEP mode, the peripheral clock is enabled again. + * @note By default, all peripheral clocks are enabled during SLEEP mode. + * @{ + */ + +#define __HAL_RCC_SYSCFG_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_SYSCFGSMEN) != RESET) +#define __HAL_RCC_TIM1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_TIM1SMEN) != RESET) +#define __HAL_RCC_SPI1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_SPI1SMEN) != RESET) +#define __HAL_RCC_USART1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_USART1SMEN) != RESET) +#define __HAL_RCC_TIM14_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_TIM14SMEN) != RESET) +#if defined(TIM15) +#define __HAL_RCC_TIM15_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_TIM15SMEN) != RESET) +#endif /* TIM15 */ +#define __HAL_RCC_TIM16_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_TIM16SMEN) != RESET) +#define __HAL_RCC_TIM17_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_TIM17SMEN) != RESET) +#define __HAL_RCC_ADC_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_ADCSMEN) != RESET) + + +#define __HAL_RCC_SYSCFG_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_SYSCFGSMEN) == RESET) +#define __HAL_RCC_TIM1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_TIM1SMEN) == RESET) +#define __HAL_RCC_SPI1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_SPI1SMEN) == RESET) +#define __HAL_RCC_USART1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_USART1SMEN) == RESET) +#define __HAL_RCC_TIM14_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_TIM14SMEN) == RESET) +#if defined(TIM15) +#define __HAL_RCC_TIM15_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_TIM15SMEN) == RESET) +#endif /* TIM15 */ +#define __HAL_RCC_TIM16_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_TIM16SMEN) == RESET) +#define __HAL_RCC_TIM17_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_TIM17SMEN) == RESET) +#define __HAL_RCC_ADC_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APBSMENR2 , RCC_APBSMENR2_ADCSMEN) == RESET) + + +/** + * @} + */ + +/** @defgroup RCC_Backup_Domain_Reset RCC Backup Domain Reset + * @{ + */ + +/** @brief Macros to force or release the Backup domain reset. + * @note This function resets the RTC peripheral (including the backup registers) + * and the RTC clock source selection in RCC_CSR register. + * @note The BKPSRAM is not affected by this reset. + * @retval None + */ +#define __HAL_RCC_BACKUPRESET_FORCE() SET_BIT(RCC->BDCR, RCC_BDCR_BDRST) + +#define __HAL_RCC_BACKUPRESET_RELEASE() CLEAR_BIT(RCC->BDCR, RCC_BDCR_BDRST) + +/** + * @} + */ + +/** @defgroup RCC_RTC_Clock_Configuration RCC RTC Clock Configuration + * @{ + */ + +/** @brief Macros to enable or disable the RTC clock. + * @note As the RTC is in the Backup domain and write access is denied to + * this domain after reset, you have to enable write access using + * HAL_PWR_EnableBkUpAccess() function before to configure the RTC + * (to be done once after reset). + * @note These macros must be used after the RTC clock source was selected. + * @retval None + */ +#define __HAL_RCC_RTC_ENABLE() SET_BIT(RCC->BDCR, RCC_BDCR_RTCEN) + +#define __HAL_RCC_RTC_DISABLE() CLEAR_BIT(RCC->BDCR, RCC_BDCR_RTCEN) + +/** + * @} + */ + +/** @defgroup RCC_Clock_Configuration RCC Clock Configuration + * @{ + */ + +/** @brief Macros to enable the Internal High Speed oscillator (HSI). + * @note The HSI is stopped by hardware when entering STOP and STANDBY modes. + * It is used (enabled by hardware) as system clock source after startup + * from Reset, wakeup from STOP and STANDBY mode, or in case of failure + * of the HSE used directly or indirectly as system clock (if the Clock + * Security System CSS is enabled). + * @note After enabling the HSI, the application software should wait on HSIRDY + * flag to be set indicating that HSI clock is stable and can be used as + * system clock source. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +#define __HAL_RCC_HSI_ENABLE() SET_BIT(RCC->CR, RCC_CR_HSION) + +/** @brief Macros to disable the Internal High Speed oscillator (HSI). + * @note HSI can not be stopped if it is used as system clock source. In this case, + * you have to select another source of the system clock then stop the HSI. + * @note When the HSI is stopped, HSIRDY flag goes low after 6 HSI oscillator + * clock cycles. + * @retval None + */ +#define __HAL_RCC_HSI_DISABLE() CLEAR_BIT(RCC->CR, RCC_CR_HSION) + +/** @brief Macro to adjust the Internal High Speed oscillator (HSI) calibration value. + * @note The calibration is used to compensate for the variations in voltage + * and temperature that influence the frequency of the internal HSI RC. + * @param __HSICALIBRATIONVALUE__ specifies the calibration trimming value + * (default is RCC_HSICALIBRATION_DEFAULT). + * This parameter must be a number between 0 and 127. + * @retval None + */ +#define __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(__HSICALIBRATIONVALUE__) \ + MODIFY_REG(RCC->ICSCR, RCC_ICSCR_HSITRIM, (uint32_t)(__HSICALIBRATIONVALUE__) << RCC_ICSCR_HSITRIM_Pos) + +/** + * @brief Macros to enable or disable the force of the Internal High Speed oscillator (HSI) + * in STOP mode to be quickly available as kernel clock for USARTs and I2Cs. + * @note Keeping the HSI ON in STOP mode allows to avoid slowing down the communication + * speed because of the HSI startup time. + * @note The enable of this function has not effect on the HSION bit. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +#define __HAL_RCC_HSISTOP_ENABLE() SET_BIT(RCC->CR, RCC_CR_HSIKERON) + +#define __HAL_RCC_HSISTOP_DISABLE() CLEAR_BIT(RCC->CR, RCC_CR_HSIKERON) + +/** @brief Macro to configure the HSISYS clock. + * @param __HSIDIV__ specifies the HSI16 division factor. + * This parameter can be one of the following values: + * @arg @ref RCC_HSI_DIV1 HSI clock source is divided by 1 + * @arg @ref RCC_HSI_DIV2 HSI clock source is divided by 2 + * @arg @ref RCC_HSI_DIV4 HSI clock source is divided by 4 + * @arg @ref RCC_HSI_DIV8 HSI clock source is divided by 8 + * @arg @ref RCC_HSI_DIV16 HSI clock source is divided by 16 + * @arg @ref RCC_HSI_DIV32 HSI clock source is divided by 32 + * @arg @ref RCC_HSI_DIV64 HSI clock source is divided by 64 + * @arg @ref RCC_HSI_DIV128 HSI clock source is divided by 128 + */ +#define __HAL_RCC_HSI_CONFIG(__HSIDIV__) \ + MODIFY_REG(RCC->CR, RCC_CR_HSIDIV, (__HSIDIV__)) + +/** @brief Macros to enable or disable the Internal Low Speed oscillator (LSI). + * @note After enabling the LSI, the application software should wait on + * LSIRDY flag to be set indicating that LSI clock is stable and can + * be used to clock the IWDG and/or the RTC. + * @note LSI can not be disabled if the IWDG is running. + * @note When the LSI is stopped, LSIRDY flag goes low after 6 LSI oscillator + * clock cycles. + * @retval None + */ +#define __HAL_RCC_LSI_ENABLE() SET_BIT(RCC->CSR, RCC_CSR_LSION) + +#define __HAL_RCC_LSI_DISABLE() CLEAR_BIT(RCC->CSR, RCC_CSR_LSION) + +/** + * @brief Macro to configure the External High Speed oscillator (HSE). + * @note Transition HSE Bypass to HSE On and HSE On to HSE Bypass are not + * supported by this macro. User should request a transition to HSE Off + * first and then HSE On or HSE Bypass. + * @note After enabling the HSE (RCC_HSE_ON or RCC_HSE_Bypass), the application + * software should wait on HSERDY flag to be set indicating that HSE clock + * is stable and can be used to clock the PLL and/or system clock. + * @note HSE state can not be changed if it is used directly or through the + * PLL as system clock. In this case, you have to select another source + * of the system clock then change the HSE state (ex. disable it). + * @note The HSE is stopped by hardware when entering STOP and STANDBY modes. + * @note This function reset the CSSON bit, so if the clock security system(CSS) + * was previously enabled you have to enable it again after calling this + * function. + * @param __STATE__ specifies the new state of the HSE. + * This parameter can be one of the following values: + * @arg @ref RCC_HSE_OFF Turn OFF the HSE oscillator, HSERDY flag goes low after + * 6 HSE oscillator clock cycles. + * @arg @ref RCC_HSE_ON Turn ON the HSE oscillator. + * @arg @ref RCC_HSE_BYPASS HSE oscillator bypassed with external clock. + * @retval None + */ +#define __HAL_RCC_HSE_CONFIG(__STATE__) do { \ + if((__STATE__) == RCC_HSE_ON) \ + { \ + SET_BIT(RCC->CR, RCC_CR_HSEON); \ + } \ + else if((__STATE__) == RCC_HSE_BYPASS) \ + { \ + SET_BIT(RCC->CR, RCC_CR_HSEBYP); \ + SET_BIT(RCC->CR, RCC_CR_HSEON); \ + } \ + else \ + { \ + CLEAR_BIT(RCC->CR, RCC_CR_HSEON); \ + CLEAR_BIT(RCC->CR, RCC_CR_HSEBYP); \ + } \ + } while(0U) + +/** + * @brief Macro to configure the External Low Speed oscillator (LSE). + * @note Transitions LSE Bypass to LSE On and LSE On to LSE Bypass are not + * supported by this macro. User should request a transition to LSE Off + * first and then LSE On or LSE Bypass. + * @note As the LSE is in the Backup domain and write access is denied to + * this domain after reset, you have to enable write access using + * HAL_PWR_EnableBkUpAccess() function before to configure the LSE + * (to be done once after reset). + * @note After enabling the LSE (RCC_LSE_ON or RCC_LSE_BYPASS), the application + * software should wait on LSERDY flag to be set indicating that LSE clock + * is stable and can be used to clock the RTC. + * @param __STATE__ specifies the new state of the LSE. + * This parameter can be one of the following values: + * @arg @ref RCC_LSE_OFF Turn OFF the LSE oscillator, LSERDY flag goes low after + * 6 LSE oscillator clock cycles. + * @arg @ref RCC_LSE_ON Turn ON the LSE oscillator. + * @arg @ref RCC_LSE_BYPASS LSE oscillator bypassed with external clock. + * @retval None + */ +#define __HAL_RCC_LSE_CONFIG(__STATE__) do { \ + if((__STATE__) == RCC_LSE_ON) \ + { \ + SET_BIT(RCC->BDCR, RCC_BDCR_LSEON); \ + } \ + else if((__STATE__) == RCC_LSE_BYPASS) \ + { \ + SET_BIT(RCC->BDCR, RCC_BDCR_LSEBYP); \ + SET_BIT(RCC->BDCR, RCC_BDCR_LSEON); \ + } \ + else \ + { \ + CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSEON); \ + CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSEBYP); \ + } \ + } while(0U) + +#if defined(RCC_HSI48_SUPPORT) +/** @brief Macros to enable or disable the Internal High Speed 48MHz oscillator (HSI48). + * @note The HSI48 is stopped by hardware when entering STOP and STANDBY modes. + * @note After enabling the HSI48, the application software should wait on HSI48RDY + * flag to be set indicating that HSI48 clock is stable. + * This parameter can be: ENABLE or DISABLE. + * @retval None + */ +#define __HAL_RCC_HSI48_ENABLE() SET_BIT(RCC->CR, RCC_CR_HSI48ON) + +#define __HAL_RCC_HSI48_DISABLE() CLEAR_BIT(RCC->CR, RCC_CR_HSI48ON) + +#endif /* RCC_HSI48_SUPPORT */ + +/** + * @} + */ + +/** @addtogroup RCC_RTC_Clock_Configuration + * @{ + */ + +/** @brief Macros to configure the RTC clock (RTCCLK). + * @note As the RTC clock configuration bits are in the Backup domain and write + * access is denied to this domain after reset, you have to enable write + * access using the Power Backup Access macro before to configure + * the RTC clock source (to be done once after reset). + * @note Once the RTC clock is configured it cannot be changed unless the + * Backup domain is reset using __HAL_RCC_BACKUPRESET_FORCE() macro, or by + * a Power On Reset (POR). + * + * @param __RTC_CLKSOURCE__ specifies the RTC clock source. + * This parameter can be one of the following values: + * @arg @ref RCC_RTCCLKSOURCE_NONE No clock selected as RTC clock. + * @arg @ref RCC_RTCCLKSOURCE_LSE LSE selected as RTC clock. + * @arg @ref RCC_RTCCLKSOURCE_LSI LSI selected as RTC clock. + * @arg @ref RCC_RTCCLKSOURCE_HSE_DIV32 HSE clock divided by 32 selected + * + * @note If the LSE or LSI is used as RTC clock source, the RTC continues to + * work in STOP and STANDBY modes, and can be used as wakeup source. + * However, when the HSE clock is used as RTC clock source, the RTC + * cannot be used in STOP and STANDBY modes. + * @note The maximum input clock frequency for RTC is 1MHz (when using HSE as + * RTC clock source). + * @retval None + */ +#define __HAL_RCC_RTC_CONFIG(__RTC_CLKSOURCE__) \ + MODIFY_REG( RCC->BDCR, RCC_BDCR_RTCSEL, (__RTC_CLKSOURCE__)) + + +/** @brief Macro to get the RTC clock source. + * @retval The returned value can be one of the following: + * @arg @ref RCC_RTCCLKSOURCE_NONE No clock selected as RTC clock. + * @arg @ref RCC_RTCCLKSOURCE_LSE LSE selected as RTC clock. + * @arg @ref RCC_RTCCLKSOURCE_LSI LSI selected as RTC clock. + * @arg @ref RCC_RTCCLKSOURCE_HSE_DIV32 HSE clock divided by 32 selected + */ +#define __HAL_RCC_GET_RTC_SOURCE() ((uint32_t)(READ_BIT(RCC->BDCR, RCC_BDCR_RTCSEL))) + +/** @brief Macros to enable or disable the main PLL. + * @note After enabling the main PLL, the application software should wait on + * PLLRDY flag to be set indicating that PLL clock is stable and can + * be used as system clock source. + * @note The main PLL can not be disabled if it is used as system clock source + * @note The main PLL is disabled by hardware when entering STOP and STANDBY modes. + * @retval None + */ + +/** + * @} + */ + +/** @addtogroup RCC_Clock_Configuration + * @{ + */ + +#define __HAL_RCC_PLL_ENABLE() SET_BIT(RCC->CR, RCC_CR_PLLON) + +#define __HAL_RCC_PLL_DISABLE() CLEAR_BIT(RCC->CR, RCC_CR_PLLON) + +/** @brief Macro to configure the PLL clock source. + * @note This function must be used only when the main PLL is disabled. + * @param __PLLSOURCE__ specifies the PLL entry clock source. + * This parameter can be one of the following values: + * @arg @ref RCC_PLLSOURCE_NONE No clock selected as PLL clock entry + * @arg @ref RCC_PLLSOURCE_HSI HSI oscillator clock selected as PLL clock entry + * @arg @ref RCC_PLLSOURCE_HSE HSE oscillator clock selected as PLL clock entry + * @retval None + * + */ +#define __HAL_RCC_PLL_PLLSOURCE_CONFIG(__PLLSOURCE__) \ + MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC, (__PLLSOURCE__)) + +/** @brief Macro to configure the PLL multiplication factor. + * @note This function must be used only when the main PLL is disabled. + * @param __PLLM__ specifies the division factor for PLL VCO input clock + * This parameter must be a value of RCC_PLLM_Clock_Divider. + * @note You have to set the PLLM parameter correctly to ensure that the VCO input + * frequency ranges from 4 to 16 MHz. It is recommended to select a frequency + * of 16 MHz to limit PLL jitter. + * @retval None + * + */ +#define __HAL_RCC_PLL_PLLM_CONFIG(__PLLM__) \ + MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLM, (__PLLM__)) + +/** + * @brief Macro to configure the main PLL clock source, multiplication and division factors. + * @note This function must be used only when the main PLL is disabled. + * + * @param __PLLSOURCE__ specifies the PLL entry clock source. + * This parameter can be one of the following values: + * @arg @ref RCC_PLLSOURCE_NONE No clock selected as PLL clock entry + * @arg @ref RCC_PLLSOURCE_HSI HSI oscillator clock selected as PLL clock entry + * @arg @ref RCC_PLLSOURCE_HSE HSE oscillator clock selected as PLL clock entry + * + * @param __PLLM__ specifies the division factor for PLL VCO input clock. + * This parameter must be a value of RCC_PLLM_Clock_Divider. + * @note You have to set the PLLM parameter correctly to ensure that the VCO input + * frequency ranges from 4 to 16 MHz. It is recommended to select a frequency + * of 16 MHz to limit PLL jitter. + * + * @param __PLLN__ specifies the multiplication factor for PLL VCO output clock. + * This parameter must be a number between 8 and 86. + * @note You have to set the PLLN parameter correctly to ensure that the VCO + * output frequency is between 64 and 344 MHz. + * + * @param __PLLP__ specifies the division factor for ADC clock. + * This parameter must be a value of @ref RCC_PLLP_Clock_Divider. + * + * @param __PLLQ__ specifies the division factor for RBG & HS Timers clocks.(1) + * This parameter must be a value of @ref RCC_PLLQ_Clock_Divider + * @note (1)__PLLQ__ parameter availability depends on devices + * @note If the USB FS is used in your application, you have to set the + * PLLQ parameter correctly to have 48 MHz clock for the USB. However, + * the RNG needs a frequency lower than or equal to 48 MHz to work + * correctly. + * + * @param __PLLR__ specifies the division factor for the main system clock. + * This parameter must be a value of RCC_PLLR_Clock_Divider + * @note You have to set the PLL parameters correctly to not exceed 64MHZ. + * @retval None + */ +#if defined(RCC_PLLQ_SUPPORT) +#define __HAL_RCC_PLL_CONFIG(__PLLSOURCE__, __PLLM__, __PLLN__, __PLLP__, __PLLQ__,__PLLR__ ) \ + MODIFY_REG(RCC->PLLCFGR, \ + (RCC_PLLCFGR_PLLSRC | RCC_PLLCFGR_PLLM | RCC_PLLCFGR_PLLN | \ + RCC_PLLCFGR_PLLP | RCC_PLLCFGR_PLLQ | RCC_PLLCFGR_PLLR), \ + ((uint32_t) (__PLLSOURCE__) | \ + (uint32_t) (__PLLM__) | \ + (uint32_t) ((__PLLN__) << RCC_PLLCFGR_PLLN_Pos) | \ + (uint32_t) (__PLLP__) | \ + (uint32_t) (__PLLQ__) | \ + (uint32_t) (__PLLR__))) +#else +#define __HAL_RCC_PLL_CONFIG(__PLLSOURCE__, __PLLM__, __PLLN__, __PLLP__, __PLLR__ ) \ + MODIFY_REG(RCC->PLLCFGR, \ + (RCC_PLLCFGR_PLLSRC | RCC_PLLCFGR_PLLM | RCC_PLLCFGR_PLLN | \ + RCC_PLLCFGR_PLLP | RCC_PLLCFGR_PLLR), \ + ((uint32_t) (__PLLSOURCE__) | \ + (uint32_t) (__PLLM__) | \ + (uint32_t) ((__PLLN__) << RCC_PLLCFGR_PLLN_Pos) | \ + (uint32_t) (__PLLP__) | \ + (uint32_t) (__PLLR__))) +#endif /* RCC_PLLQ_SUPPORT */ +/** @brief Macro to get the oscillator used as PLL clock source. + * @retval The oscillator used as PLL clock source. The returned value can be one + * of the following: + * @arg @ref RCC_PLLSOURCE_NONE No oscillator is used as PLL clock source. + * @arg @ref RCC_PLLSOURCE_HSI HSI oscillator is used as PLL clock source. + * @arg @ref RCC_PLLSOURCE_HSE HSE oscillator is used as PLL clock source. + */ +#define __HAL_RCC_GET_PLL_OSCSOURCE() ((uint32_t)(RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC)) + +/** + * @brief Enable each clock output (RCC_PLLRCLK, RCC_PLLQCLK(*), RCC_PLLPCLK) + * @note Enabling clock outputs RCC_PLLPCLK and RCC_PLLQCLK(*) can be done at anytime + * without the need to stop the PLL in order to save power. But RCC_PLLRCLK cannot + * be stopped if used as System Clock. + * @note (*) RCC_PLLQCLK availability depends on devices + * @param __PLLCLOCKOUT__ specifies the PLL clock to be output. + * This parameter can be one or a combination of the following values: + * @arg @ref RCC_PLLPCLK This clock is used to generate the clock for the ADC. + * @if defined(STM32G081xx) + * @arg @ref RCC_PLLQCLK This Clock is used to generate the clock for the High Speed Timers, + * and the random analog generator (<=48 MHz). + * @endif + * @arg @ref RCC_PLLRCLK This Clock is used to generate the high speed system clock (up to 64MHz) + * @retval None + */ +#define __HAL_RCC_PLLCLKOUT_ENABLE(__PLLCLOCKOUT__) SET_BIT(RCC->PLLCFGR, (__PLLCLOCKOUT__)) + +/** + * @brief Disable each clock output (RCC_PLLRCLK, RCC_PLLQCLK(*), RCC_PLLPCLK) + * @note Disabling clock outputs RCC_PLLPCLK and RCC_PLLQCLK(*) can be done at anytime + * without the need to stop the PLL in order to save power. But RCC_PLLRCLK cannot + * be stopped if used as System Clock. + * @note (*) RCC_PLLQCLK availability depends on devices + * @param __PLLCLOCKOUT__ specifies the PLL clock to be output. + * This parameter can be one or a combination of the following values: + * @arg @ref RCC_PLLPCLK This clock may be used to generate the clock for the ADC, I2S1. + * @if defined(STM32G081xx) + * @arg @ref RCC_PLLQCLK This Clock may be used to generate the clock for the High Speed Timers, + * and RNG (<=48 MHz). + * @endif + * @arg @ref RCC_PLLRCLK This Clock is used to generate the high speed system clock (up to 64MHz) + * @retval None + */ +#define __HAL_RCC_PLLCLKOUT_DISABLE(__PLLCLOCKOUT__) CLEAR_BIT(RCC->PLLCFGR, (__PLLCLOCKOUT__)) + +/** + * @brief Get clock output enable status (RCC_PLLRCLK, RCC_PLLQCLK(*), RCC_PLLPCLK) + * @param __PLLCLOCKOUT__ specifies the output PLL clock to be checked. + * This parameter can be one of the following values: + * @arg RCC_PLLPCLK This clock may be used to generate the clock for ADC, I2S1. + * @if defined(STM32G081xx) + * @arg RCC_PLLQCLK This Clock may be used to generate the clock for the HS Timers, + * the RNG (<=48 MHz). + * @endif + * @arg @ref RCC_PLLRCLK This Clock is used to generate the high speed system clock (up to 64MHz) + * @retval SET / RESET + * @note (*) RCC_PLLQCLK availability depends on devices + */ +#define __HAL_RCC_GET_PLLCLKOUT_CONFIG(__PLLCLOCKOUT__) READ_BIT(RCC->PLLCFGR, (__PLLCLOCKOUT__)) + +/** + * @brief Macro to configure the system clock source. + * @param __SYSCLKSOURCE__ specifies the system clock source. + * This parameter can be one of the following values: + * @arg @ref RCC_SYSCLKSOURCE_HSI HSI oscillator is used as system clock source. + * @arg @ref RCC_SYSCLKSOURCE_HSE HSE oscillator is used as system clock source. + * @arg @ref RCC_SYSCLKSOURCE_PLLCLK PLL output is used as system clock source. + * @arg @ref RCC_SYSCLKSOURCE_LSI LSI oscillator is used as system clock source. + * @arg @ref RCC_SYSCLKSOURCE_LSE LSE oscillator is used as system clock source. + * @retval None + */ +#define __HAL_RCC_SYSCLK_CONFIG(__SYSCLKSOURCE__) \ + MODIFY_REG(RCC->CFGR, RCC_CFGR_SW, (__SYSCLKSOURCE__)) + +/** @brief Macro to get the clock source used as system clock. + * @retval The clock source used as system clock. The returned value can be one + * of the following: + * @arg @ref RCC_SYSCLKSOURCE_STATUS_HSI HSI used as system clock. + * @arg @ref RCC_SYSCLKSOURCE_STATUS_HSE HSE used as system clock. + * @arg @ref RCC_SYSCLKSOURCE_STATUS_PLLCLK PLL used as system clock. + * @arg @ref RCC_SYSCLKSOURCE_STATUS_LSI LSI used as system clock source. + * @arg @ref RCC_SYSCLKSOURCE_STATUS_LSE LSE used as system clock source. + */ +#define __HAL_RCC_GET_SYSCLK_SOURCE() (RCC->CFGR & RCC_CFGR_SWS) + +/** + * @brief Macro to configure the External Low Speed oscillator (LSE) drive capability. + * @note As the LSE is in the Backup domain and write access is denied to + * this domain after reset, you have to enable write access using + * HAL_PWR_EnableBkUpAccess() function before to configure the LSE + * (to be done once after reset). + * @param __LSEDRIVE__ specifies the new state of the LSE drive capability. + * This parameter can be one of the following values: + * @arg @ref RCC_LSEDRIVE_LOW LSE oscillator low drive capability. + * @arg @ref RCC_LSEDRIVE_MEDIUMLOW LSE oscillator medium low drive capability. + * @arg @ref RCC_LSEDRIVE_MEDIUMHIGH LSE oscillator medium high drive capability. + * @arg @ref RCC_LSEDRIVE_HIGH LSE oscillator high drive capability. + * @retval None + */ +#define __HAL_RCC_LSEDRIVE_CONFIG(__LSEDRIVE__) \ + MODIFY_REG(RCC->BDCR, RCC_BDCR_LSEDRV, (uint32_t)(__LSEDRIVE__)) + +/** @brief Macro to configure the Microcontroller output clock. + * @param __MCOCLKSOURCE__ specifies the MCO clock source. + * This parameter can be one of the following values: + * @arg @ref RCC_MCO1SOURCE_NOCLOCK MCO output disabled + * @arg @ref RCC_MCO1SOURCE_SYSCLK System clock selected as MCO source + * @arg @ref RCC_MCO1SOURCE_HSI HSI clock selected as MCO source + * @arg @ref RCC_MCO1SOURCE_HSE HSE clock selected as MCO sourcee + * @arg @ref RCC_MCO1SOURCE_PLLCLK Main PLL clock selected as MCO source + * @arg @ref RCC_MCO1SOURCE_LSI LSI clock selected as MCO source + * @arg @ref RCC_MCO1SOURCE_LSE LSE clock selected as MCO source + * @arg @ref RCC_MCO1SOURCE_PLLPCLK PLLP output clock selected as MCO source + * @arg @ref RCC_MCO1SOURCE_PLLQCLK PLLQ output clock selected as MCO source + * @arg @ref RCC_MCO1SOURCE_RTCCLK RTC clock selected as MCO source + * @arg @ref RCC_MCO1SOURCE_RTC_WKUP RTC_WKUP clock selected as MCO source + @if STM32G0C1xx + * @arg @ref RCC_MCO1SOURCE_HSI48 HSI48 clock selected as MCO source for devices with HSI48 + @endif + * @param __MCODIV__ specifies the MCO clock prescaler. + * This parameter can be one of the following values: + * @arg @ref RCC_MCODIV_1 MCO clock source is divided by 1 + * @arg @ref RCC_MCODIV_2 MCO clock source is divided by 2 + * @arg @ref RCC_MCODIV_4 MCO clock source is divided by 4 + * @arg @ref RCC_MCODIV_8 MCO clock source is divided by 8 + * @arg @ref RCC_MCODIV_16 MCO clock source is divided by 16 + * @arg @ref RCC_MCODIV_32 MCO clock source is divided by 32 + * @arg @ref RCC_MCODIV_64 MCO clock source is divided by 64 + * @arg @ref RCC_MCODIV_128 MCO clock source is divided by 128 + @if STM32G0C1xx + * @arg @ref RCC_MCODIV_256 MCO clock source is divided by 256 + * @arg @ref RCC_MCODIV_512 MCO clock source is divided by 512 + * @arg @ref RCC_MCODIV_1024 MCO clock source is divided by 1024 + @endif + */ +#define __HAL_RCC_MCO1_CONFIG(__MCOCLKSOURCE__, __MCODIV__) \ + MODIFY_REG(RCC->CFGR, (RCC_CFGR_MCOSEL | RCC_CFGR_MCOPRE), ((__MCOCLKSOURCE__) | (__MCODIV__))) + +#if defined(RCC_MCO2_SUPPORT) +/** @brief Macro to configure the Microcontroller output clock 2. + * @param __MCOCLKSOURCE__ specifies the MCO2 clock source. + * This parameter can be one of the following values: + * @arg @ref RCC_MCO2SOURCE_NOCLOCK MCO2 output disabled + * @arg @ref RCC_MCO2SOURCE_SYSCLK System clock selected as MCO source + * @arg @ref RCC_MCO2SOURCE_HSI HSI clock selected as MCO2 source + * @arg @ref RCC_MCO2SOURCE_HSE HSE clock selected as MCO2 sourcee + * @arg @ref RCC_MCO2SOURCE_PLLCLK Main PLL clock selected as MCO2 source + * @arg @ref RCC_MCO2SOURCE_LSI LSI clock selected as MCO2 source + * @arg @ref RCC_MCO2SOURCE_LSE LSE clock selected as MCO2 source + * @arg @ref RCC_MCO2SOURCE_PLLPCLK PLLP output clock selected as MCO2 source + * @arg @ref RCC_MCO2SOURCE_PLLQCLK PLLQ output clock selected as MCO2 source + * @arg @ref RCC_MCO2SOURCE_RTCCLK RTC clock selected as MCO2 source + * @arg @ref RCC_MCO2SOURCE_RTC_WKUP RTC_WKUP clock selected as MCO2 source + @if STM32G0C1xx + * @arg @ref RCC_MCO2SOURCE_HSI48 HSI48 clock selected as MCO2 source for devices with HSI48 + @endif + * @param __MCODIV__ specifies the MCO clock prescaler. + * This parameter can be one of the following values: + * @arg @ref RCC_MCO2DIV_1 MCO2 clock source is divided by 1 + * @arg @ref RCC_MCO2DIV_2 MCO2 clock source is divided by 2 + * @arg @ref RCC_MCO2DIV_4 MCO2 clock source is divided by 4 + * @arg @ref RCC_MCO2DIV_8 MCO2 clock source is divided by 8 + * @arg @ref RCC_MCO2DIV_16 MCO2 clock source is divided by 16 + * @arg @ref RCC_MCO2DIV_32 MCO2 clock source is divided by 32 + * @arg @ref RCC_MCO2DIV_64 MCO2 clock source is divided by 64 + * @arg @ref RCC_MCO2DIV_128 MCO2 clock source is divided by 128 + * @arg @ref RCC_MCO2DIV_256 MCO2 clock source is divided by 256 + * @arg @ref RCC_MCO2DIV_512 MCO2 clock source is divided by 512 + * @arg @ref RCC_MCO2DIV_1024 MCO2 clock source is divided by 1024 + */ +#define __HAL_RCC_MCO2_CONFIG(__MCOCLKSOURCE__, __MCODIV__) \ + MODIFY_REG(RCC->CFGR, (RCC_CFGR_MCO2SEL | RCC_CFGR_MCO2PRE), ((__MCOCLKSOURCE__) | (__MCODIV__))) +#endif /* RCC_MCO2_SUPPORT */ + +/** + * @} + */ + +/** @defgroup RCC_Flags_Interrupts_Management Flags Interrupts Management + * @brief macros to manage the specified RCC Flags and interrupts. + * @{ + */ + +/** @brief Enable RCC interrupt. + * @param __INTERRUPT__ specifies the RCC interrupt sources to be enabled. + * This parameter can be any combination of the following values: + * @arg @ref RCC_IT_LSIRDY LSI ready interrupt + * @arg @ref RCC_IT_LSERDY LSE ready interrupt + * @arg @ref RCC_IT_HSIRDY HSI ready interrupt + * @arg @ref RCC_IT_HSERDY HSE ready interrupt + * @arg @ref RCC_IT_PLLRDY Main PLL ready interrupt + @if STM32G0C1xx + * @arg @ref RCC_IT_HSI48RDY HSI48 ready interrupt for devices with HSI48 + @endif + * @retval None + */ +#define __HAL_RCC_ENABLE_IT(__INTERRUPT__) SET_BIT(RCC->CIER, (__INTERRUPT__)) + +/** @brief Disable RCC interrupt. + * @param __INTERRUPT__ specifies the RCC interrupt sources to be disabled. + * This parameter can be any combination of the following values: + * @arg @ref RCC_IT_LSIRDY LSI ready interrupt + * @arg @ref RCC_IT_LSERDY LSE ready interrupt + * @arg @ref RCC_IT_HSIRDY HSI ready interrupt + * @arg @ref RCC_IT_HSERDY HSE ready interrupt + * @arg @ref RCC_IT_PLLRDY Main PLL ready interrupt + @if STM32G0C1xx + * @arg @ref RCC_IT_HSI48RDY HSI48 ready interrupt for devices with HSI48 + @endif + * @retval None + */ +#define __HAL_RCC_DISABLE_IT(__INTERRUPT__) CLEAR_BIT(RCC->CIER, (__INTERRUPT__)) + +/** @brief Clear RCC interrupt pending bits. + * @param __INTERRUPT__ specifies the interrupt pending bit to clear. + * This parameter can be any combination of the following values: + * @arg @ref RCC_IT_LSIRDY LSI ready interrupt + * @arg @ref RCC_IT_LSERDY LSE ready interrupt + * @arg @ref RCC_IT_HSIRDY HSI ready interrupt + * @arg @ref RCC_IT_HSERDY HSE ready interrupt + * @arg @ref RCC_IT_PLLRDY Main PLL ready interrupt + * @arg @ref RCC_IT_CSS HSE Clock security system interrupt + * @arg @ref RCC_IT_LSECSS LSE Clock security system interrupt + @if STM32G0C1xx + * @arg @ref RCC_IT_HSI48RDY HSI48 ready interrupt for devices with HSI48 + @endif + * @retval None + */ +#define __HAL_RCC_CLEAR_IT(__INTERRUPT__) (RCC->CICR = (__INTERRUPT__)) + +/** @brief Check whether the RCC interrupt has occurred or not. + * @param __INTERRUPT__ specifies the RCC interrupt source to check. + * This parameter can be one of the following values: + * @arg @ref RCC_IT_LSIRDY LSI ready interrupt + * @arg @ref RCC_IT_LSERDY LSE ready interrupt + * @arg @ref RCC_IT_HSIRDY HSI ready interrupt + * @arg @ref RCC_IT_HSERDY HSE ready interrupt + * @arg @ref RCC_IT_PLLRDY Main PLL ready interrupt + * @arg @ref RCC_IT_CSS HSE Clock security system interrupt + * @arg @ref RCC_IT_LSECSS LSE Clock security system interrupt + @if STM32G0C1xx + * @arg @ref RCC_IT_HSI48RDY HSI48 ready interrupt for devices with HSI48 + @endif + * @retval The new state of __INTERRUPT__ (TRUE or FALSE). + */ +#define __HAL_RCC_GET_IT(__INTERRUPT__) ((RCC->CIFR & (__INTERRUPT__)) == (__INTERRUPT__)) + +/** @brief Set RMVF bit to clear the reset flags. + * The reset flags are: RCC_FLAG_OBLRST, RCC_FLAG_PINRST, RCC_FLAG_PWRRST, + * RCC_FLAG_SFTRST, RCC_FLAG_IWDGRST, RCC_FLAG_WWDGRST and RCC_FLAG_LPWRRST. + * @retval None + */ +#define __HAL_RCC_CLEAR_RESET_FLAGS() (RCC->CSR |= RCC_CSR_RMVF) + +/** @brief Check whether the selected RCC flag is set or not. + * @param __FLAG__ specifies the flag to check. + * This parameter can be one of the following values: + * @arg @ref RCC_FLAG_HSIRDY HSI oscillator clock ready + * @arg @ref RCC_FLAG_HSERDY HSE oscillator clock ready + * @arg @ref RCC_FLAG_PLLRDY Main PLL clock ready + * @arg @ref RCC_FLAG_LSERDY LSE oscillator clock ready + * @arg @ref RCC_FLAG_LSECSSD Clock security system failure on LSE oscillator detection + * @arg @ref RCC_FLAG_LSIRDY LSI oscillator clock ready + @if STM32G0C1xx + * @arg @ref RCC_IT_HSI48RDY HSI48 ready interrupt for devices with HSI48 + @endif + * @arg @ref RCC_FLAG_PWRRST BOR or POR/PDR reset + * @arg @ref RCC_FLAG_OBLRST OBLRST reset + * @arg @ref RCC_FLAG_PINRST Pin reset + * @arg @ref RCC_FLAG_SFTRST Software reset + * @arg @ref RCC_FLAG_IWDGRST Independent Watchdog reset + * @arg @ref RCC_FLAG_WWDGRST Window Watchdog reset + * @arg @ref RCC_FLAG_LPWRRST Low Power reset + * @retval The new state of __FLAG__ (TRUE or FALSE). + */ +#if defined(RCC_HSI48_SUPPORT) +#define __HAL_RCC_GET_FLAG(__FLAG__) \ + (((((((__FLAG__) >> 5U) == CR_REG_INDEX) ? RCC->CR : \ + ((((__FLAG__) >> 5U) == CRRCR_REG_INDEX) ? RCC->CRRCR : \ + ((((__FLAG__) >> 5U) == BDCR_REG_INDEX) ? RCC->BDCR : \ + ((((__FLAG__) >> 5U) == CSR_REG_INDEX) ? RCC->CSR : RCC->CIFR)))) & \ + (1U << ((__FLAG__) & RCC_FLAG_MASK))) != RESET) ? 1U : 0U) +#else +#define __HAL_RCC_GET_FLAG(__FLAG__) \ + (((((((__FLAG__) >> 5U) == CR_REG_INDEX) ? RCC->CR : \ + ((((__FLAG__) >> 5U) == BDCR_REG_INDEX) ? RCC->BDCR : \ + ((((__FLAG__) >> 5U) == CSR_REG_INDEX) ? RCC->CSR : RCC->CIFR))) & \ + (1U << ((__FLAG__) & RCC_FLAG_MASK))) != RESET) ? 1U : 0U) +#endif /* RCC_HSI48_SUPPORT */ + +/** + * @} + */ + +/** + * @} + */ + +/* Include RCC HAL Extended module */ +#include "stm32g0xx_hal_rcc_ex.h" + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup RCC_Exported_Functions + * @{ + */ + + +/** @addtogroup RCC_Exported_Functions_Group1 + * @{ + */ + +/* Initialization and de-initialization functions ******************************/ +HAL_StatusTypeDef HAL_RCC_DeInit(void); +HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct); +HAL_StatusTypeDef HAL_RCC_ClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t FLatency); + +/** + * @} + */ + +/** @addtogroup RCC_Exported_Functions_Group2 + * @{ + */ + +/* Peripheral Control functions ************************************************/ +void HAL_RCC_MCOConfig(uint32_t RCC_MCOx, uint32_t RCC_MCOSource, uint32_t RCC_MCODiv); +void HAL_RCC_EnableCSS(void); +void HAL_RCC_EnableLSECSS(void); +void HAL_RCC_DisableLSECSS(void); +uint32_t HAL_RCC_GetSysClockFreq(void); +uint32_t HAL_RCC_GetHCLKFreq(void); +uint32_t HAL_RCC_GetPCLK1Freq(void); +void HAL_RCC_GetOscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct); +void HAL_RCC_GetClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t *pFLatency); +uint32_t HAL_RCC_GetResetSource(void); +/* LSE & HSE CSS NMI IRQ handler */ +void HAL_RCC_NMI_IRQHandler(void); +/* User Callbacks in non blocking mode (IT mode) */ +void HAL_RCC_CSSCallback(void); +void HAL_RCC_LSECSSCallback(void); + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32G0xx_HAL_RCC_H */ + diff --git a/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_rcc_ex.h b/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_rcc_ex.h new file mode 100644 index 0000000..9c2cdda --- /dev/null +++ b/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_rcc_ex.h @@ -0,0 +1,1590 @@ +/** + ****************************************************************************** + * @file stm32g0xx_hal_rcc_ex.h + * @author MCD Application Team + * @brief Header file of RCC HAL Extended module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2018 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file in + * the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32G0xx_HAL_RCC_EX_H +#define STM32G0xx_HAL_RCC_EX_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32g0xx_hal_def.h" + +/** @addtogroup STM32G0xx_HAL_Driver + * @{ + */ + +/** @addtogroup RCCEx + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ + +/** @defgroup RCCEx_Exported_Types RCCEx Exported Types + * @{ + */ + +/** + * @brief RCC extended clocks structure definition + */ +typedef struct +{ + uint32_t PeriphClockSelection; /*!< The Extended Clock to be configured. + This parameter can be a value of @ref RCCEx_Periph_Clock_Selection */ + + uint32_t Usart1ClockSelection; /*!< Specifies USART1 clock source. + This parameter can be a value of @ref RCCEx_USART1_Clock_Source */ +#if defined(RCC_CCIPR_USART2SEL) + uint32_t Usart2ClockSelection; /*!< Specifies USART2 clock source. + This parameter can be a value of @ref RCCEx_USART2_Clock_Source */ +#endif /* RCC_CCIPR_USART2SEL */ + +#if defined(RCC_CCIPR_USART3SEL) + uint32_t Usart3ClockSelection; /*!< Specifies USART3 clock source. + This parameter can be a value of @ref RCCEx_USART3_Clock_Source */ +#endif /* RCC_CCIPR_USART3SEL */ + +#if defined(LPUART1) + uint32_t Lpuart1ClockSelection; /*!< Specifies LPUART1 clock source + This parameter can be a value of @ref RCCEx_LPUART1_Clock_Source */ +#endif /* LPUART1 */ + +#if defined(LPUART2) + uint32_t Lpuart2ClockSelection; /*!< Specifies LPUART2 clock source + This parameter can be a value of @ref RCCEx_LPUART2_Clock_Source */ +#endif /* LPUART2 */ + + uint32_t I2c1ClockSelection; /*!< Specifies I2C1 clock source + This parameter can be a value of @ref RCCEx_I2C1_Clock_Source */ + +#if defined(RCC_CCIPR_I2C2SEL) + uint32_t I2c2ClockSelection; /*!< Specifies I2C2 clock source + This parameter can be a value of @ref RCCEx_I2C2_Clock_Source */ +#endif /* RCC_CCIPR_I2C2SEL */ + + uint32_t I2s1ClockSelection; /*!< Specifies I2S1 clock source + This parameter can be a value of @ref RCCEx_I2S1_Clock_Source */ +#if defined(RCC_CCIPR2_I2S2SEL) + uint32_t I2s2ClockSelection; /*!< Specifies I2S2 clock source + This parameter can be a value of @ref RCCEx_I2S2_Clock_Source */ +#endif /* RCC_CCIPR2_I2S2SEL */ +#if defined(RCC_CCIPR_LPTIM1SEL) + uint32_t Lptim1ClockSelection; /*!< Specifies LPTIM1 clock source + This parameter can be a value of @ref RCCEx_LPTIM1_Clock_Source */ +#endif /* RCC_CCIPR_LPTIM1SEL */ +#if defined(RCC_CCIPR_LPTIM2SEL) + uint32_t Lptim2ClockSelection; /*!< Specifies LPTIM2 clock source + This parameter can be a value of @ref RCCEx_LPTIM2_Clock_Source */ +#endif /* RCC_CCIPR_LPTIM2SEL */ +#if defined(RNG) + uint32_t RngClockSelection; /*!< Specifies RNG clock source + This parameter can be a value of @ref RCCEx_RNG_Clock_Source */ +#endif /* RNG */ + uint32_t AdcClockSelection; /*!< Specifies ADC interface clock source + This parameter can be a value of @ref RCCEx_ADC_Clock_Source */ +#if defined(CEC) + uint32_t CecClockSelection; /*!< Specifies CEC Clock clock source + This parameter can be a value of @ref RCCEx_CEC_Clock_Source */ +#endif /* CEC */ +#if defined(RCC_CCIPR_TIM1SEL) + uint32_t Tim1ClockSelection; /*!< Specifies TIM1 Clock clock source + This parameter can be a value of @ref RCCEx_TIM1_Clock_Source */ +#endif /* RCC_CCIPR_TIM1SEL */ +#if defined(RCC_CCIPR_TIM15SEL) + uint32_t Tim15ClockSelection; /*!< Specifies TIM15 Clock clock source + This parameter can be a value of @ref RCCEx_TIM15_Clock_Source */ +#endif /* RCC_CCIPR_TIM15SEL */ + uint32_t RTCClockSelection; /*!< Specifies RTC clock source. + This parameter can be a value of @ref RCC_RTC_Clock_Source */ +#if defined(RCC_CCIPR2_USBSEL) + uint32_t UsbClockSelection; /*!< Specifies USB Clock clock source + This parameter can be a value of @ref RCCEx_USB_Clock_Source */ +#endif /* RCC_CCIPR2_USBSEL */ +#if defined(FDCAN1) || defined(FDCAN2) + uint32_t FdcanClockSelection; /*!< Specifies FDCAN Clock clock source + This parameter can be a value of @ref RCCEx_FDCAN_Clock_Source */ +#endif /* FDCAN1 || FDCAN2 */ +} RCC_PeriphCLKInitTypeDef; + +#if defined(CRS) + +/** + * @brief RCC_CRS Init structure definition + */ +typedef struct +{ + uint32_t Prescaler; /*!< Specifies the division factor of the SYNC signal. + This parameter can be a value of @ref RCCEx_CRS_SynchroDivider */ + + uint32_t Source; /*!< Specifies the SYNC signal source. + This parameter can be a value of @ref RCCEx_CRS_SynchroSource */ + + uint32_t Polarity; /*!< Specifies the input polarity for the SYNC signal source. + This parameter can be a value of @ref RCCEx_CRS_SynchroPolarity */ + + uint32_t ReloadValue; /*!< Specifies the value to be loaded in the frequency error counter with each SYNC event. + It can be calculated in using macro __HAL_RCC_CRS_RELOADVALUE_CALCULATE(__FTARGET__, __FSYNC__) + This parameter must be a number between 0 and 0xFFFF or a value of @ref RCCEx_CRS_ReloadValueDefault .*/ + + uint32_t ErrorLimitValue; /*!< Specifies the value to be used to evaluate the captured frequency error value. + This parameter must be a number between 0 and 0xFF or a value of @ref RCCEx_CRS_ErrorLimitDefault */ + + uint32_t HSI48CalibrationValue; /*!< Specifies a user-programmable trimming value to the HSI48 oscillator. + This parameter must be a number between 0 and 0x7F or a value of @ref RCCEx_CRS_HSI48CalibrationDefault */ + +} RCC_CRSInitTypeDef; + +/** + * @brief RCC_CRS Synchronization structure definition + */ +typedef struct +{ + uint32_t ReloadValue; /*!< Specifies the value loaded in the Counter reload value. + This parameter must be a number between 0 and 0xFFFF */ + + uint32_t HSI48CalibrationValue; /*!< Specifies value loaded in HSI48 oscillator smooth trimming. + This parameter must be a number between 0 and 0x7F */ + + uint32_t FreqErrorCapture; /*!< Specifies the value loaded in the .FECAP, the frequency error counter + value latched in the time of the last SYNC event. + This parameter must be a number between 0 and 0xFFFF */ + + uint32_t FreqErrorDirection; /*!< Specifies the value loaded in the .FEDIR, the counting direction of the + frequency error counter latched in the time of the last SYNC event. + It shows whether the actual frequency is below or above the target. + This parameter must be a value of @ref RCCEx_CRS_FreqErrorDirection*/ + +} RCC_CRSSynchroInfoTypeDef; + +#endif /* CRS */ +/** + * @} + */ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup RCCEx_Exported_Constants RCCEx Exported Constants + * @{ + */ + +/** @defgroup RCCEx_LSCO_Clock_Source Low Speed Clock Source + * @{ + */ +#define RCC_LSCOSOURCE_LSI 0x00000000U /*!< LSI selection for low speed clock output */ +#define RCC_LSCOSOURCE_LSE RCC_BDCR_LSCOSEL /*!< LSE selection for low speed clock output */ +/** + * @} + */ + +/** @defgroup RCCEx_Periph_Clock_Selection Periph Clock Selection + * @{ + */ +#define RCC_PERIPHCLK_USART1 0x00000001U +#if defined(RCC_CCIPR_USART2SEL) +#define RCC_PERIPHCLK_USART2 0x00000002U +#endif /* RCC_CCIPR_USART2SEL */ +#if defined(RCC_CCIPR_USART3SEL) +#define RCC_PERIPHCLK_USART3 0x00000004U +#endif /* RCC_CCIPR_USART3SEL */ +#if defined(LPUART1) +#define RCC_PERIPHCLK_LPUART1 0x00000010U +#endif /* LPUART1 */ +#define RCC_PERIPHCLK_I2C1 0x00000020U +#if defined(RCC_CCIPR_I2C2SEL) +#define RCC_PERIPHCLK_I2C2 0x00000040U +#endif /* RCC_CCIPR_I2C2SEL */ +#if defined(RCC_CCIPR_LPTIM1SEL) +#define RCC_PERIPHCLK_LPTIM1 0x00000200U +#endif /* RCC_CCIPR_LPTIM1SEL */ +#if defined(RCC_CCIPR_LPTIM2SEL) +#define RCC_PERIPHCLK_LPTIM2 0x00000400U +#endif /* RCC_CCIPR_LPTIM2SEL */ +#define RCC_PERIPHCLK_I2S1 0x00000800U +#if defined(LPUART2) +#define RCC_PERIPHCLK_LPUART2 0x00001000U +#endif /* LPUART2 */ +#if defined(RCC_CCIPR2_I2S2SEL) +#define RCC_PERIPHCLK_I2S2 0x00002000U +#endif /* RCC_CCIPR2_I2S2SEL */ +#define RCC_PERIPHCLK_ADC 0x00004000U +#define RCC_PERIPHCLK_RTC 0x00020000U +#if defined(RCC_CCIPR_RNGSEL) +#define RCC_PERIPHCLK_RNG 0x00040000U +#endif /* RCC_CCIPR_RNGSEL */ +#if defined(RCC_CCIPR_CECSEL) +#define RCC_PERIPHCLK_CEC 0x00080000U +#endif /* RCC_CCIPR_CECSEL */ +#if defined(RCC_CCIPR_TIM1SEL) +#define RCC_PERIPHCLK_TIM1 0x00200000U +#endif /* RCC_CCIPR_TIM1SEL */ +#if defined(RCC_CCIPR_TIM15SEL) +#define RCC_PERIPHCLK_TIM15 0x00400000U +#endif /* RCC_CCIPR_TIM15SEL */ +#if defined(RCC_CCIPR2_USBSEL) +#define RCC_PERIPHCLK_USB 0x01000000U +#endif /* RCC_CCIPR2_USBSEL */ +#if defined(FDCAN1) || defined(FDCAN2) +#define RCC_PERIPHCLK_FDCAN 0x02000000U +#endif /* FDCAN1 || FDCAN2 */ +/** + * @} + */ + + +/** @defgroup RCCEx_USART1_Clock_Source RCC USART1 Clock Source + * @{ + */ +#define RCC_USART1CLKSOURCE_PCLK1 0x00000000U /*!< APB clock selected as USART1 clock */ +#define RCC_USART1CLKSOURCE_SYSCLK RCC_CCIPR_USART1SEL_0 /*!< SYSCLK clock selected as USART1 clock */ +#define RCC_USART1CLKSOURCE_HSI RCC_CCIPR_USART1SEL_1 /*!< HSI clock selected as USART1 clock */ +#define RCC_USART1CLKSOURCE_LSE (RCC_CCIPR_USART1SEL_0 | RCC_CCIPR_USART1SEL_1) /*!< LSE clock selected as USART1 clock */ +/** + * @} + */ + +#if defined(RCC_CCIPR_USART2SEL) +/** @defgroup RCCEx_USART2_Clock_Source RCC USART2 Clock Source + * @{ + */ +#define RCC_USART2CLKSOURCE_PCLK1 0x00000000U /*!< APB clock selected as USART2 clock */ +#define RCC_USART2CLKSOURCE_SYSCLK RCC_CCIPR_USART2SEL_0 /*!< SYSCLK clock selected as USART2 clock */ +#define RCC_USART2CLKSOURCE_HSI RCC_CCIPR_USART2SEL_1 /*!< HSI clock selected as USART2 clock */ +#define RCC_USART2CLKSOURCE_LSE (RCC_CCIPR_USART2SEL_0 | RCC_CCIPR_USART2SEL_1) /*!< LSE clock selected as USART2 clock */ +/** + * @} + */ +#endif /* RCC_CCIPR_USART2SEL */ +#if defined(RCC_CCIPR_USART3SEL) +/** @defgroup RCCEx_USART3_Clock_Source RCC USART3 Clock Source + * @{ + */ +#define RCC_USART3CLKSOURCE_PCLK1 0x00000000U /*!< APB clock selected as USART3 clock */ +#define RCC_USART3CLKSOURCE_SYSCLK RCC_CCIPR_USART3SEL_0 /*!< SYSCLK clock selected as USART3 clock */ +#define RCC_USART3CLKSOURCE_HSI RCC_CCIPR_USART3SEL_1 /*!< HSI clock selected as USART3 clock */ +#define RCC_USART3CLKSOURCE_LSE (RCC_CCIPR_USART3SEL_0 | RCC_CCIPR_USART3SEL_1) /*!< LSE clock selected as USART3 clock */ +/** + * @} + */ +#endif /* RCC_CCIPR_USART3SEL */ + +#if defined(LPUART1) +/** @defgroup RCCEx_LPUART1_Clock_Source RCC LPUART1 Clock Source + * @{ + */ +#define RCC_LPUART1CLKSOURCE_PCLK1 0x00000000U /*!< APB clock selected as LPUART1 clock */ +#define RCC_LPUART1CLKSOURCE_SYSCLK RCC_CCIPR_LPUART1SEL_0 /*!< SYSCLK clock selected as LPUART1 clock */ +#define RCC_LPUART1CLKSOURCE_HSI RCC_CCIPR_LPUART1SEL_1 /*!< HSI clock selected as LPUART1 clock */ +#define RCC_LPUART1CLKSOURCE_LSE (RCC_CCIPR_LPUART1SEL_0 | RCC_CCIPR_LPUART1SEL_1) /*!< LSE clock selected as LPUART1 clock */ +/** + * @} + */ +#endif /* LPUART1 */ + +#if defined(LPUART2) +/** @defgroup RCCEx_LPUART2_Clock_Source RCC LPUART2 Clock Source + * @{ + */ +#define RCC_LPUART2CLKSOURCE_PCLK1 0x00000000U /*!< APB clock selected as LPUART2 clock */ +#define RCC_LPUART2CLKSOURCE_SYSCLK RCC_CCIPR_LPUART2SEL_0 /*!< SYSCLK clock selected as LPUART2 clock */ +#define RCC_LPUART2CLKSOURCE_HSI RCC_CCIPR_LPUART2SEL_1 /*!< HSI clock selected as LPUART2 clock */ +#define RCC_LPUART2CLKSOURCE_LSE (RCC_CCIPR_LPUART2SEL_0 | RCC_CCIPR_LPUART2SEL_1) /*!< LSE clock selected as LPUART2 clock */ +/** + * @} + */ +#endif /* LPUART2 */ + +/** @defgroup RCCEx_I2C1_Clock_Source RCC I2C1 Clock Source + * @{ + */ +#define RCC_I2C1CLKSOURCE_PCLK1 0x00000000U /*!< APB clock selected as I2C1 clock */ +#define RCC_I2C1CLKSOURCE_SYSCLK RCC_CCIPR_I2C1SEL_0 /*!< SYSCLK clock selected as I2C1 clock */ +#define RCC_I2C1CLKSOURCE_HSI RCC_CCIPR_I2C1SEL_1 /*!< HSI clock selected as I2C1 clock */ +/** + * @} + */ + +#if defined(RCC_CCIPR_I2C2SEL) +/** @defgroup RCCEx_I2C2_Clock_Source RCC I2C2 Clock Source + * @{ + */ +#define RCC_I2C2CLKSOURCE_PCLK1 0x00000000U /*!< APB clock selected as I2C2 clock */ +#define RCC_I2C2CLKSOURCE_SYSCLK RCC_CCIPR_I2C2SEL_0 /*!< SYSCLK clock selected as I2C2 clock */ +#define RCC_I2C2CLKSOURCE_HSI RCC_CCIPR_I2C2SEL_1 /*!< HSI clock selected as I2C2 clock */ +/** + * @} + */ +#endif /* RCC_CCIPR_I2C2SEL */ + +/** @defgroup RCCEx_I2S1_Clock_Source RCC I2S1 Clock Source + * @{ + */ +#if defined(STM32G0C1xx) || defined(STM32G0B1xx) || defined(STM32G0B0xx) +#define RCC_I2S1CLKSOURCE_SYSCLK 0x00000000U /*!< SYSCLK clock selected as I2S1 clock */ +#define RCC_I2S1CLKSOURCE_PLL RCC_CCIPR2_I2S1SEL_0 /*!< PLL "P" selected as I2S1 clock */ +#define RCC_I2S1CLKSOURCE_HSI RCC_CCIPR2_I2S1SEL_1 /*!< HSI clock selected as I2S1 clock */ +#define RCC_I2S1CLKSOURCE_EXT RCC_CCIPR2_I2S1SEL /*!< External I2S clock source selected as I2S1 clock */ +#else +#define RCC_I2S1CLKSOURCE_SYSCLK 0x00000000U /*!< SYSCLK clock selected as I2S1 clock */ +#define RCC_I2S1CLKSOURCE_PLL RCC_CCIPR_I2S1SEL_0 /*!< PLL "P" selected as I2S1 clock */ +#define RCC_I2S1CLKSOURCE_HSI RCC_CCIPR_I2S1SEL_1 /*!< HSI clock selected as I2S1 clock */ +#define RCC_I2S1CLKSOURCE_EXT RCC_CCIPR_I2S1SEL /*!< External I2S clock source selected as I2S1 clock */ +#endif /* STM32G0C1xx || STM32G0B1xx || STM32G0B0xx */ +/** + * @} + */ + +#if defined(RCC_CCIPR2_I2S2SEL) +/** @defgroup RCCEx_I2S2_Clock_Source RCC I2S2 Clock Source + * @{ + */ +#define RCC_I2S2CLKSOURCE_SYSCLK 0x00000000U /*!< SYSCLK clock selected as I2S2 clock */ +#define RCC_I2S2CLKSOURCE_PLL RCC_CCIPR2_I2S2SEL_0 /*!< PLL "P" selected as I2S2 clock */ +#define RCC_I2S2CLKSOURCE_HSI RCC_CCIPR2_I2S2SEL_1 /*!< HSI clock selected as I2S2 clock */ +#define RCC_I2S2CLKSOURCE_EXT RCC_CCIPR2_I2S2SEL /*!< External I2S clock source selected as I2S2 clock */ +/** + * @} + */ +#endif /* RCC_CCIPR2_I2S2SEL */ + +#if defined(RCC_CCIPR_LPTIM1SEL) +/** @defgroup RCCEx_LPTIM1_Clock_Source RCC LPTIM1 Clock Source + * @{ + */ +#define RCC_LPTIM1CLKSOURCE_PCLK1 0x00000000U /*!< APB clock selected as LPTimer 1 clock */ +#define RCC_LPTIM1CLKSOURCE_LSI RCC_CCIPR_LPTIM1SEL_0 /*!< LSI clock selected as LPTimer 1 clock */ +#define RCC_LPTIM1CLKSOURCE_HSI RCC_CCIPR_LPTIM1SEL_1 /*!< HSI clock selected as LPTimer 1 clock */ +#define RCC_LPTIM1CLKSOURCE_LSE RCC_CCIPR_LPTIM1SEL /*!< LSE clock selected as LPTimer 1 clock */ +/** + * @} + */ +#endif /* RCC_CCIPR_LPTIM1SEL */ + +#if defined(RCC_CCIPR_LPTIM2SEL) +/** @defgroup RCCEx_LPTIM2_Clock_Source RCC LPTIM2 Clock Source + * @{ + */ +#define RCC_LPTIM2CLKSOURCE_PCLK1 0x00000000U /*!< APB clock selected as LPTimer 2 clock */ +#define RCC_LPTIM2CLKSOURCE_LSI RCC_CCIPR_LPTIM2SEL_0 /*!< LSI clock selected as LPTimer 2 clock */ +#define RCC_LPTIM2CLKSOURCE_HSI RCC_CCIPR_LPTIM2SEL_1 /*!< HSI clock selected as LPTimer 2 clock */ +#define RCC_LPTIM2CLKSOURCE_LSE RCC_CCIPR_LPTIM2SEL /*!< LSE clock selected as LPTimer 2 clock */ +/** + * @} + */ +#endif /* RCC_CCIPR_LPTIM2SEL */ + +#if defined(RNG) +/** @defgroup RCCEx_RNG_Clock_Source RCC RNG Clock Source + * @{ + */ +#define RCC_RNGCLKSOURCE_NONE 0x00000000U /*!< No clock selected */ +#define RCC_RNGCLKSOURCE_HSI_DIV8 RCC_CCIPR_RNGSEL_0 /*!< HSI oscillator divided by 8 clock selected as RNG clock */ +#define RCC_RNGCLKSOURCE_SYSCLK RCC_CCIPR_RNGSEL_1 /*!< SYSCLK selected as RNG clock */ +#define RCC_RNGCLKSOURCE_PLL (RCC_CCIPR_RNGSEL_0|RCC_CCIPR_RNGSEL_1) /*!< PLL "Q" selected as RNG clock */ + +/** + * @} + */ + +/** @defgroup RCCEx_RNG_Division_factor RCC RNG Division factor + * @{ + */ +#define RCC_RNGCLK_DIV1 0x00000000U /*!< RNG clock not divided */ +#define RCC_RNGCLK_DIV2 RCC_CCIPR_RNGDIV_0 /*!< RNG clock divided by 2 */ +#define RCC_RNGCLK_DIV4 RCC_CCIPR_RNGDIV_1 /*!< RNG clock divided by 4 */ +#define RCC_RNGCLK_DIV8 (RCC_CCIPR_RNGDIV_0|RCC_CCIPR_RNGDIV_1) /*!< RNG clock divided by 8 */ + +/** + * @} + */ +#endif /* RNG */ + +#if defined(FDCAN1) || defined(FDCAN2) +/** @defgroup RCCEx_FDCAN_Clock_Source RCC FDCAN Clock Source + * @{ + */ +#define RCC_FDCANCLKSOURCE_PCLK1 0x00000000U /*!< PCLK1 selected as FDCAN clock */ +#define RCC_FDCANCLKSOURCE_PLL RCC_CCIPR2_FDCANSEL_0 /*!< PLL "Q" selected as FDCAN clock */ +#define RCC_FDCANCLKSOURCE_HSE RCC_CCIPR2_FDCANSEL_1 /*!< HSE oscillator clock selected as FDCAN clock */ + +/** + * @} + */ +#endif /* FDCAN1 || FDCAN2 */ + +#if defined(RCC_CCIPR2_USBSEL) +/** @defgroup RCCEx_USB_Clock_Source USB Clock Source + * @{ + */ +#if defined(RCC_HSI48_SUPPORT) +#define RCC_USBCLKSOURCE_HSI48 0x00000000U /*!< HSI48 oscillator clock selected as USB clock */ +#endif /* RCC_HSI48_SUPPORT */ +#define RCC_USBCLKSOURCE_HSE RCC_CCIPR2_USBSEL_0 /*!< HSE oscillator clock selected as USB clock */ +#define RCC_USBCLKSOURCE_PLL RCC_CCIPR2_USBSEL_1 /*!< PLL "Q" selected as USB clock */ +/** + * @} + */ +#endif /* RCC_CCIPR2_USBSEL */ + +/** @defgroup RCCEx_ADC_Clock_Source RCC ADC Clock Source + * @{ + */ + +#define RCC_ADCCLKSOURCE_SYSCLK 0x00000000U /*!< SYSCLK used as ADC clock */ +#define RCC_ADCCLKSOURCE_PLLADC RCC_CCIPR_ADCSEL_0 /*!< PLL "P" (PLLADC) used as ADC clock */ +#define RCC_ADCCLKSOURCE_HSI RCC_CCIPR_ADCSEL_1 /*!< HSI used as ADC clock */ +/** + * @} + */ + +#if defined(CEC) +/** @defgroup RCCEx_CEC_Clock_Source RCC CEC Clock Source + * @{ + */ +#define RCC_CECCLKSOURCE_HSI_DIV488 0x00000000U /*!< HSI oscillator clock divided by 488 used as default CEC clock */ +#define RCC_CECCLKSOURCE_LSE RCC_CCIPR_CECSEL /*!< LSE oscillator clock used as CEC clock */ +/** + * @} + */ +#endif /* CEC */ + +#if defined(RCC_CCIPR_TIM1SEL) +/** @defgroup RCCEx_TIM1_Clock_Source RCC TIM1 Clock Source + * @{ + */ +#define RCC_TIM1CLKSOURCE_PCLK1 0x00000000U /*!< APB clock selected as Timer 1 clock */ +#define RCC_TIM1CLKSOURCE_PLL RCC_CCIPR_TIM1SEL /*!< PLL "Q" clock selected as Timer 1 clock */ +/** + * @} + */ +#endif /* RCC_CCIPR_TIM1SEL */ + +#if defined(RCC_CCIPR_TIM15SEL) +/** @defgroup RCCEx_TIM15_Clock_Source RCC TIM15 Clock Source + * @{ + */ +#define RCC_TIM15CLKSOURCE_PCLK1 0x00000000U /*!< APB clock selected as Timer 15 clock */ +#define RCC_TIM15CLKSOURCE_PLL RCC_CCIPR_TIM15SEL /*!< PLL "Q" clock selected as Timer 15 clock */ + +/** + * @} + */ +#endif /* RCC_CCIPR_TIM15SEL */ + +#if defined(CRS) + +/** @defgroup RCCEx_CRS_Status RCCEx CRS Status + * @{ + */ +#define RCC_CRS_NONE 0x00000000U +#define RCC_CRS_TIMEOUT 0x00000001U +#define RCC_CRS_SYNCOK 0x00000002U +#define RCC_CRS_SYNCWARN 0x00000004U +#define RCC_CRS_SYNCERR 0x00000008U +#define RCC_CRS_SYNCMISS 0x00000010U +#define RCC_CRS_TRIMOVF 0x00000020U +/** + * @} + */ + +/** @defgroup RCCEx_CRS_SynchroSource RCCEx CRS SynchroSource + * @{ + */ +#define RCC_CRS_SYNC_SOURCE_GPIO 0x00000000U /*!< Synchro Signal source GPIO */ +#define RCC_CRS_SYNC_SOURCE_LSE CRS_CFGR_SYNCSRC_0 /*!< Synchro Signal source LSE */ +#define RCC_CRS_SYNC_SOURCE_USB CRS_CFGR_SYNCSRC_1 /*!< Synchro Signal source USB SOF (default)*/ +/** + * @} + */ + +/** @defgroup RCCEx_CRS_SynchroDivider RCCEx CRS SynchroDivider + * @{ + */ +#define RCC_CRS_SYNC_DIV1 0x00000000U /*!< Synchro Signal not divided (default) */ +#define RCC_CRS_SYNC_DIV2 CRS_CFGR_SYNCDIV_0 /*!< Synchro Signal divided by 2 */ +#define RCC_CRS_SYNC_DIV4 CRS_CFGR_SYNCDIV_1 /*!< Synchro Signal divided by 4 */ +#define RCC_CRS_SYNC_DIV8 (CRS_CFGR_SYNCDIV_1 | CRS_CFGR_SYNCDIV_0) /*!< Synchro Signal divided by 8 */ +#define RCC_CRS_SYNC_DIV16 CRS_CFGR_SYNCDIV_2 /*!< Synchro Signal divided by 16 */ +#define RCC_CRS_SYNC_DIV32 (CRS_CFGR_SYNCDIV_2 | CRS_CFGR_SYNCDIV_0) /*!< Synchro Signal divided by 32 */ +#define RCC_CRS_SYNC_DIV64 (CRS_CFGR_SYNCDIV_2 | CRS_CFGR_SYNCDIV_1) /*!< Synchro Signal divided by 64 */ +#define RCC_CRS_SYNC_DIV128 CRS_CFGR_SYNCDIV /*!< Synchro Signal divided by 128 */ +/** + * @} + */ + +/** @defgroup RCCEx_CRS_SynchroPolarity RCCEx CRS SynchroPolarity + * @{ + */ +#define RCC_CRS_SYNC_POLARITY_RISING 0x00000000U /*!< Synchro Active on rising edge (default) */ +#define RCC_CRS_SYNC_POLARITY_FALLING CRS_CFGR_SYNCPOL /*!< Synchro Active on falling edge */ +/** + * @} + */ + +/** @defgroup RCCEx_CRS_ReloadValueDefault RCCEx CRS ReloadValueDefault + * @{ + */ +#define RCC_CRS_RELOADVALUE_DEFAULT 0x0000BB7FU /*!< The reset value of the RELOAD field corresponds + to a target frequency of 48 MHz and a synchronization signal frequency of 1 kHz (SOF signal from USB). */ +/** + * @} + */ + +/** @defgroup RCCEx_CRS_ErrorLimitDefault RCCEx CRS ErrorLimitDefault + * @{ + */ +#define RCC_CRS_ERRORLIMIT_DEFAULT 0x00000022U /*!< Default Frequency error limit */ +/** + * @} + */ + +/** @defgroup RCCEx_CRS_HSI48CalibrationDefault RCCEx CRS HSI48CalibrationDefault + * @{ + */ +#define RCC_CRS_HSI48CALIBRATION_DEFAULT 0x00000040U /*!< The default value is 64, which corresponds to the middle of the trimming interval. + The trimming step is specified in the product datasheet. A higher TRIM value + corresponds to a higher output frequency */ +/** + * @} + */ + +/** @defgroup RCCEx_CRS_FreqErrorDirection RCCEx CRS FreqErrorDirection + * @{ + */ +#define RCC_CRS_FREQERRORDIR_UP 0x00000000U /*!< Upcounting direction, the actual frequency is above the target */ +#define RCC_CRS_FREQERRORDIR_DOWN CRS_ISR_FEDIR /*!< Downcounting direction, the actual frequency is below the target */ +/** + * @} + */ + +/** @defgroup RCCEx_CRS_Interrupt_Sources RCCEx CRS Interrupt Sources + * @{ + */ +#define RCC_CRS_IT_SYNCOK CRS_CR_SYNCOKIE /*!< SYNC event OK */ +#define RCC_CRS_IT_SYNCWARN CRS_CR_SYNCWARNIE /*!< SYNC warning */ +#define RCC_CRS_IT_ERR CRS_CR_ERRIE /*!< Error */ +#define RCC_CRS_IT_ESYNC CRS_CR_ESYNCIE /*!< Expected SYNC */ +#define RCC_CRS_IT_SYNCERR CRS_CR_ERRIE /*!< SYNC error */ +#define RCC_CRS_IT_SYNCMISS CRS_CR_ERRIE /*!< SYNC missed */ +#define RCC_CRS_IT_TRIMOVF CRS_CR_ERRIE /*!< Trimming overflow or underflow */ + +/** + * @} + */ + +/** @defgroup RCCEx_CRS_Flags RCCEx CRS Flags + * @{ + */ +#define RCC_CRS_FLAG_SYNCOK CRS_ISR_SYNCOKF /*!< SYNC event OK flag */ +#define RCC_CRS_FLAG_SYNCWARN CRS_ISR_SYNCWARNF /*!< SYNC warning flag */ +#define RCC_CRS_FLAG_ERR CRS_ISR_ERRF /*!< Error flag */ +#define RCC_CRS_FLAG_ESYNC CRS_ISR_ESYNCF /*!< Expected SYNC flag */ +#define RCC_CRS_FLAG_SYNCERR CRS_ISR_SYNCERR /*!< SYNC error */ +#define RCC_CRS_FLAG_SYNCMISS CRS_ISR_SYNCMISS /*!< SYNC missed*/ +#define RCC_CRS_FLAG_TRIMOVF CRS_ISR_TRIMOVF /*!< Trimming overflow or underflow */ + +/** + * @} + */ + +#endif /* CRS */ + +/** + * @} + */ + +/* Exported macros -----------------------------------------------------------*/ +/** @defgroup RCCEx_Exported_Macros RCCEx Exported Macros + * @{ + */ + + +/** @brief Macro to configure the I2C1 clock (I2C1CLK). + * + * @param __I2C1_CLKSOURCE__ specifies the I2C1 clock source. + * This parameter can be one of the following values: + * @arg @ref RCC_I2C1CLKSOURCE_HSI HSI selected as I2C1 clock + * @arg @ref RCC_I2C1CLKSOURCE_SYSCLK System Clock selected as I2C1 clock + */ +#define __HAL_RCC_I2C1_CONFIG(__I2C1_CLKSOURCE__) \ + MODIFY_REG(RCC->CCIPR, RCC_CCIPR_I2C1SEL, (uint32_t)(__I2C1_CLKSOURCE__)) + +/** @brief Macro to get the I2C1 clock source. + * @retval The clock source can be one of the following values: + * @arg @ref RCC_I2C1CLKSOURCE_HSI HSI selected as I2C1 clock + * @arg @ref RCC_I2C1CLKSOURCE_SYSCLK System Clock selected as I2C1 clock + */ +#define __HAL_RCC_GET_I2C1_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR, RCC_CCIPR_I2C1SEL))) + +#if defined(RCC_CCIPR_I2C2SEL) +/** @brief Macro to configure the I2C2 clock (I2C2CLK). + * + * @param __I2C2_CLKSOURCE__ specifies the I2C2 clock source. + * This parameter can be one of the following values: + * @arg @ref RCC_I2C2CLKSOURCE_HSI HSI selected as I2C2 clock + * @arg @ref RCC_I2C2CLKSOURCE_SYSCLK System Clock selected as I2C2 clock + */ +#define __HAL_RCC_I2C2_CONFIG(__I2C2_CLKSOURCE__) \ + MODIFY_REG(RCC->CCIPR, RCC_CCIPR_I2C2SEL, (uint32_t)(__I2C2_CLKSOURCE__)) + +/** @brief Macro to get the I2C2 clock source. + * @retval The clock source can be one of the following values: + * @arg @ref RCC_I2C2CLKSOURCE_HSI HSI selected as I2C2 clock + * @arg @ref RCC_I2C2CLKSOURCE_SYSCLK System Clock selected as I2C2 clock + */ +#define __HAL_RCC_GET_I2C2_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR, RCC_CCIPR_I2C2SEL))) +#endif /* RCC_CCIPR_I2C2SEL */ + +/** @brief Macro to configure the I2S1 clock (I2S1CLK). + * + * @param __I2S1_CLKSOURCE__ specifies the I2S1 clock source. + * This parameter can be one of the following values: + * @arg @ref RCC_I2S1CLKSOURCE_SYSCLK System Clock selected as I2S1 clock + * @arg @ref RCC_I2S1CLKSOURCE_PLL PLLP Clock selected as I2S1 clock + * @arg @ref RCC_I2S1CLKSOURCE_HSI HSI Clock selected as I2S1 clock + * @arg @ref RCC_I2S1CLKSOURCE_EXT External clock selected as I2S1 clock + */ +#if defined(STM32G0C1xx) || defined(STM32G0B1xx) || defined(STM32G0B0xx) +#define __HAL_RCC_I2S1_CONFIG(__I2S1_CLKSOURCE__) \ + MODIFY_REG(RCC->CCIPR2, RCC_CCIPR2_I2S1SEL, (uint32_t)(__I2S1_CLKSOURCE__)) +#else +#define __HAL_RCC_I2S1_CONFIG(__I2S1_CLKSOURCE__) \ + MODIFY_REG(RCC->CCIPR, RCC_CCIPR_I2S1SEL, (uint32_t)(__I2S1_CLKSOURCE__)) +#endif /* STM32G0C1xx || STM32G0B1xx || STM32G0B0xx */ +/** @brief Macro to get the I2S1 clock source. + * @retval The clock source can be one of the following values: + * @arg @ref RCC_I2S1CLKSOURCE_SYSCLK System Clock selected as I2S1 clock + * @arg @ref RCC_I2S1CLKSOURCE_PLL PLLP Clock selected as I2S1 clock + * @arg @ref RCC_I2S1CLKSOURCE_HSI HSI Clock selected as I2S1 clock + * @arg @ref RCC_I2S1CLKSOURCE_EXT External clock selected as I2S1 clock + */ +#if defined(STM32G0C1xx) || defined(STM32G0B1xx) || defined(STM32G0B0xx) +#define __HAL_RCC_GET_I2S1_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR2, RCC_CCIPR2_I2S1SEL))) +#else +#define __HAL_RCC_GET_I2S1_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR, RCC_CCIPR_I2S1SEL))) +#endif /* STM32G0C1xx || STM32G0B1xx || STM32G0B0xx */ + +#if defined(RCC_CCIPR2_I2S2SEL) +/** @brief Macro to configure the I2S2 clock (I2S2CLK). + * + * @param __I2S2_CLKSOURCE__ specifies the I2S2 clock source. + * This parameter can be one of the following values: + * @arg @ref RCC_I2S2CLKSOURCE_SYSCLK System Clock selected as I2S2 clock + * @arg @ref RCC_I2S2CLKSOURCE_PLL PLLP Clock selected as I2S2 clock + * @arg @ref RCC_I2S2CLKSOURCE_HSI HSI Clock selected as I2S2 clock + * @arg @ref RCC_I2S2CLKSOURCE_EXT External clock selected as I2S2 clock + */ +#define __HAL_RCC_I2S2_CONFIG(__I2S2_CLKSOURCE__) \ + MODIFY_REG(RCC->CCIPR2, RCC_CCIPR2_I2S2SEL, (uint32_t)(__I2S2_CLKSOURCE__)) + +/** @brief Macro to get the I2S2 clock source. + * @retval The clock source can be one of the following values: + * @arg @ref RCC_I2S2CLKSOURCE_SYSCLK System Clock selected as I2S2 clock + * @arg @ref RCC_I2S2CLKSOURCE_PLL PLLP Clock selected as I2S2 clock + * @arg @ref RCC_I2S2CLKSOURCE_HSI HSI Clock selected as I2S2 clock + * @arg @ref RCC_I2S2CLKSOURCE_EXT External clock selected as I2S2 clock + */ +#define __HAL_RCC_GET_I2S2_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR2, RCC_CCIPR2_I2S2SEL))) +#endif /* RCC_CCIPR2_I2S2SEL */ + +/** @brief Macro to configure the USART1 clock (USART1CLK). + * + * @param __USART1_CLKSOURCE__ specifies the USART1 clock source. + * This parameter can be one of the following values: + * @arg @ref RCC_USART1CLKSOURCE_PCLK1 PCLK1 selected as USART1 clock + * @arg @ref RCC_USART1CLKSOURCE_HSI HSI selected as USART1 clock + * @arg @ref RCC_USART1CLKSOURCE_SYSCLK System Clock selected as USART1 clock + * @arg @ref RCC_USART1CLKSOURCE_LSE LSE selected as USART1 clock + */ +#define __HAL_RCC_USART1_CONFIG(__USART1_CLKSOURCE__) \ + MODIFY_REG(RCC->CCIPR, RCC_CCIPR_USART1SEL, (uint32_t)(__USART1_CLKSOURCE__)) + +/** @brief Macro to get the USART1 clock source. + * @retval The clock source can be one of the following values: + * @arg @ref RCC_USART1CLKSOURCE_PCLK1 PCLK1 selected as USART1 clock + * @arg @ref RCC_USART1CLKSOURCE_HSI HSI selected as USART1 clock + * @arg @ref RCC_USART1CLKSOURCE_SYSCLK System Clock selected as USART1 clock + * @arg @ref RCC_USART1CLKSOURCE_LSE LSE selected as USART1 clock + */ +#define __HAL_RCC_GET_USART1_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR, RCC_CCIPR_USART1SEL))) + +#if defined(RCC_CCIPR_USART2SEL) +/** @brief Macro to configure the USART2 clock (USART2CLK). + * + * @param __USART2_CLKSOURCE__ specifies the USART2 clock source. + * This parameter can be one of the following values: + * @arg @ref RCC_USART2CLKSOURCE_PCLK1 PCLK1 selected as USART2 clock + * @arg @ref RCC_USART2CLKSOURCE_HSI HSI selected as USART2 clock + * @arg @ref RCC_USART2CLKSOURCE_SYSCLK System Clock selected as USART2 clock + * @arg @ref RCC_USART2CLKSOURCE_LSE LSE selected as USART2 clock + */ +#define __HAL_RCC_USART2_CONFIG(__USART2_CLKSOURCE__) \ + MODIFY_REG(RCC->CCIPR, RCC_CCIPR_USART2SEL, (uint32_t)(__USART2_CLKSOURCE__)) + +/** @brief Macro to get the USART2 clock source. + * @retval The clock source can be one of the following values: + * @arg @ref RCC_USART2CLKSOURCE_PCLK1 PCLK1 selected as USART2 clock + * @arg @ref RCC_USART2CLKSOURCE_HSI HSI selected as USART2 clock + * @arg @ref RCC_USART2CLKSOURCE_SYSCLK System Clock selected as USART2 clock + * @arg @ref RCC_USART2CLKSOURCE_LSE LSE selected as USART2 clock + */ +#define __HAL_RCC_GET_USART2_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR, RCC_CCIPR_USART2SEL))) +#endif /* RCC_CCIPR_USART2SEL */ + +#if defined(RCC_CCIPR_USART3SEL) +/** @brief Macro to configure the USART3 clock (USART3CLK). + * + * @param __USART3_CLKSOURCE__ specifies the USART3 clock source. + * This parameter can be one of the following values: + * @arg @ref RCC_USART3CLKSOURCE_PCLK1 PCLK1 selected as USART3 clock + * @arg @ref RCC_USART3CLKSOURCE_HSI HSI selected as USART3 clock + * @arg @ref RCC_USART3CLKSOURCE_SYSCLK System Clock selected as USART3 clock + * @arg @ref RCC_USART3CLKSOURCE_LSE LSE selected as USART3 clock + */ +#define __HAL_RCC_USART3_CONFIG(__USART3_CLKSOURCE__) \ + MODIFY_REG(RCC->CCIPR, RCC_CCIPR_USART3SEL, (uint32_t)(__USART3_CLKSOURCE__)) + +/** @brief Macro to get the USART3 clock source. + * @retval The clock source can be one of the following values: + * @arg @ref RCC_USART3CLKSOURCE_PCLK1 PCLK1 selected as USART3 clock + * @arg @ref RCC_USART3CLKSOURCE_HSI HSI selected as USART3 clock + * @arg @ref RCC_USART3CLKSOURCE_SYSCLK System Clock selected as USART3 clock + * @arg @ref RCC_USART3CLKSOURCE_LSE LSE selected as USART3 clock + */ +#define __HAL_RCC_GET_USART3_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR, RCC_CCIPR_USART3SEL))) +#endif /* RCC_CCIPR_USART3SEL */ + +#if defined(RCC_CCIPR_LPUART1SEL) +/** @brief Macro to configure the LPUART1 clock (LPUART1CLK). + * + * @param __LPUART1_CLKSOURCE__ specifies the LPUART1 clock source. + * This parameter can be one of the following values: + * @arg @ref RCC_LPUART1CLKSOURCE_PCLK1 PCLK1 selected as LPUART1 clock + * @arg @ref RCC_LPUART1CLKSOURCE_HSI HSI selected as LPUART1 clock + * @arg @ref RCC_LPUART1CLKSOURCE_SYSCLK System Clock selected as LPUART1 clock + * @arg @ref RCC_LPUART1CLKSOURCE_LSE LSE selected as LPUART1 clock + */ +#define __HAL_RCC_LPUART1_CONFIG(__LPUART1_CLKSOURCE__) \ + MODIFY_REG(RCC->CCIPR, RCC_CCIPR_LPUART1SEL, (uint32_t)(__LPUART1_CLKSOURCE__)) + +/** @brief Macro to get the LPUART1 clock source. + * @retval The clock source can be one of the following values: + * @arg @ref RCC_LPUART1CLKSOURCE_PCLK1 PCLK1 selected as LPUART1 clock + * @arg @ref RCC_LPUART1CLKSOURCE_HSI HSI selected as LPUART1 clock + * @arg @ref RCC_LPUART1CLKSOURCE_SYSCLK System Clock selected as LPUART1 clock + * @arg @ref RCC_LPUART1CLKSOURCE_LSE LSE selected as LPUART1 clock + */ +#define __HAL_RCC_GET_LPUART1_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR, RCC_CCIPR_LPUART1SEL))) +#endif /* RCC_CCIPR_LPUART1SEL */ + +#if defined(RCC_CCIPR_LPUART2SEL) +/** @brief Macro to configure the LPUART2 clock (LPUART2CLK). + * + * @param __LPUART2_CLKSOURCE__ specifies the LPUART2 clock source. + * This parameter can be one of the following values: + * @arg @ref RCC_LPUART2CLKSOURCE_PCLK1 PCLK1 selected as LPUART2 clock + * @arg @ref RCC_LPUART2CLKSOURCE_HSI HSI selected as LPUART2 clock + * @arg @ref RCC_LPUART2CLKSOURCE_SYSCLK System Clock selected as LPUART2 clock + * @arg @ref RCC_LPUART2CLKSOURCE_LSE LSE selected as LPUART2 clock + */ +#define __HAL_RCC_LPUART2_CONFIG(__LPUART2_CLKSOURCE__) \ + MODIFY_REG(RCC->CCIPR, RCC_CCIPR_LPUART2SEL, (uint32_t)(__LPUART2_CLKSOURCE__)) + +/** @brief Macro to get the LPUART2 clock source. + * @retval The clock source can be one of the following values: + * @arg @ref RCC_LPUART2CLKSOURCE_PCLK1 PCLK1 selected as LPUART2 clock + * @arg @ref RCC_LPUART2CLKSOURCE_HSI HSI selected as LPUART2 clock + * @arg @ref RCC_LPUART2CLKSOURCE_SYSCLK System Clock selected as LPUART2 clock + * @arg @ref RCC_LPUART2CLKSOURCE_LSE LSE selected as LPUART2 clock + */ +#define __HAL_RCC_GET_LPUART2_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR, RCC_CCIPR_LPUART2SEL))) +#endif /* RCC_CCIPR_LPUART2SEL */ + +#if defined(RCC_CCIPR_LPTIM1SEL) +/** @brief Macro to configure the LPTIM1 clock (LPTIM1CLK). + * + * @param __LPTIM1_CLKSOURCE__ specifies the LPTIM1 clock source. + * This parameter can be one of the following values: + * @arg @ref RCC_LPTIM1CLKSOURCE_PCLK1 PCLK1 selected as LPTIM1 clock + * @arg @ref RCC_LPTIM1CLKSOURCE_LSI HSI selected as LPTIM1 clock + * @arg @ref RCC_LPTIM1CLKSOURCE_HSI LSI selected as LPTIM1 clock + * @arg @ref RCC_LPTIM1CLKSOURCE_LSE LSE selected as LPTIM1 clock + */ +#define __HAL_RCC_LPTIM1_CONFIG(__LPTIM1_CLKSOURCE__) \ + MODIFY_REG(RCC->CCIPR, RCC_CCIPR_LPTIM1SEL, (uint32_t)(__LPTIM1_CLKSOURCE__)) + +/** @brief Macro to get the LPTIM1 clock source. + * @retval The clock source can be one of the following values: + * @arg @ref RCC_LPTIM1CLKSOURCE_PCLK1 PCLK1 selected as LPUART1 clock + * @arg @ref RCC_LPTIM1CLKSOURCE_LSI HSI selected as LPUART1 clock + * @arg @ref RCC_LPTIM1CLKSOURCE_HSI System Clock selected as LPUART1 clock + * @arg @ref RCC_LPTIM1CLKSOURCE_LSE LSE selected as LPUART1 clock + */ +#define __HAL_RCC_GET_LPTIM1_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR, RCC_CCIPR_LPTIM1SEL))) +#endif /* RCC_CCIPR_LPTIM1SEL */ + +#if defined(RCC_CCIPR_LPTIM2SEL) +/** @brief Macro to configure the LPTIM2 clock (LPTIM2CLK). + * + * @param __LPTIM2_CLKSOURCE__ specifies the LPTIM2 clock source. + * This parameter can be one of the following values: + * @arg @ref RCC_LPTIM2CLKSOURCE_PCLK1 PCLK1 selected as LPTIM2 clock + * @arg @ref RCC_LPTIM2CLKSOURCE_LSI HSI selected as LPTIM2 clock + * @arg @ref RCC_LPTIM2CLKSOURCE_HSI LSI selected as LPTIM2 clock + * @arg @ref RCC_LPTIM2CLKSOURCE_LSE LSE selected as LPTIM2 clock + */ +#define __HAL_RCC_LPTIM2_CONFIG(__LPTIM2_CLKSOURCE__) \ + MODIFY_REG(RCC->CCIPR, RCC_CCIPR_LPTIM2SEL, (uint32_t)(__LPTIM2_CLKSOURCE__)) + +/** @brief Macro to get the LPTIM2 clock source. + * @retval The clock source can be one of the following values: + * @arg @ref RCC_LPTIM2CLKSOURCE_PCLK1 PCLK1 selected as LPTIM2 clock + * @arg @ref RCC_LPTIM2CLKSOURCE_LSI HSI selected as LPTIM2 clock + * @arg @ref RCC_LPTIM2CLKSOURCE_HSI System Clock selected as LPTIM2 clock + * @arg @ref RCC_LPTIM2CLKSOURCE_LSE LSE selected as LPTIM2 clock + */ +#define __HAL_RCC_GET_LPTIM2_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR, RCC_CCIPR_LPTIM2SEL))) +#endif /* RCC_CCIPR_LPTIM2SEL */ + +#if defined(CEC) +/** @brief Macro to configure the CEC clock (CECCLK). + * + * @param __CEC_CLKSOURCE__ specifies the CEC clock source. + * This parameter can be one of the following values: + * @arg @ref RCC_CECCLKSOURCE_HSI_DIV488 HSI_DIV_488 selected as CEC clock + * @arg @ref RCC_CECCLKSOURCE_LSE LSE selected as CEC clock + */ +#define __HAL_RCC_CEC_CONFIG(__CEC_CLKSOURCE__) \ + MODIFY_REG(RCC->CCIPR, RCC_CCIPR_CECSEL, (uint32_t)(__CEC_CLKSOURCE__)) + +/** @brief Macro to get the CEC clock source. + * @retval The clock source can be one of the following values: + * @arg @ref RCC_CECCLKSOURCE_HSI_DIV488 HSI_DIV_488 Clock selected as CEC clock + * @arg @ref RCC_CECCLKSOURCE_LSE LSE selected as CEC clock + */ +#define __HAL_RCC_GET_CEC_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR, RCC_CCIPR_CECSEL))) +#endif /* CEC */ + +#if defined(RNG) +/** @brief Macro to configure the RNG clock. + * + * + * @param __RNG_CLKSOURCE__ specifies the RNG clock source. + * This parameter can be one of the following values: + * @arg @ref RCC_RNGCLKSOURCE_NONE No clock selected as RNG clock + * @arg @ref RCC_RNGCLKSOURCE_HSI_DIV8 HSI Clock divided by 8 selected as RNG clock + * @arg @ref RCC_RNGCLKSOURCE_SYSCLK System Clock selected as RNG clock + * @arg @ref RCC_RNGCLKSOURCE_PLL PLLQ Output Clock selected as RNG clock + */ +#define __HAL_RCC_RNG_CONFIG(__RNG_CLKSOURCE__) \ + MODIFY_REG(RCC->CCIPR, RCC_CCIPR_RNGSEL, (uint32_t)(__RNG_CLKSOURCE__)) + +/** @brief Macro to get the RNG clock. + * @retval The clock source can be one of the following values: + * @arg @ref RCC_RNGCLKSOURCE_NONE No clock selected as RNG clock + * @arg @ref RCC_RNGCLKSOURCE_HSI_DIV8 HSI Clock divide by 8 selected as RNG clock + * @arg @ref RCC_RNGCLKSOURCE_SYSCLK System clock selected as RNG clock + * @arg @ref RCC_RNGCLKSOURCE_PLL PLLQ Output Clock selected as RNG clock + */ +#define __HAL_RCC_GET_RNG_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR, RCC_CCIPR_RNGSEL))) + +/** @brief Macro to configure the RNG clock. + * + * + * @param __RNG_CLKDIV__ specifies the RNG clock division factor. + * This parameter can be one of the following values: + * @arg @ref RCC_RNGCLK_DIV1 RNG Clock not divided + * @arg @ref RCC_RNGCLK_DIV2 RNG Clock divided by 2 + * @arg @ref RCC_RNGCLK_DIV4 RNG Clock divided by 4 + * @arg @ref RCC_RNGCLK_DIV8 RNG Clock divided by 8 + */ +#define __HAL_RCC_RNGDIV_CONFIG(__RNG_CLKDIV__) \ + MODIFY_REG(RCC->CCIPR, RCC_CCIPR_RNGDIV, (uint32_t)(__RNG_CLKDIV__)) + +/** @brief Macro to get the RNG clock division factor. + * @retval The division factor can be one of the following values: + * @arg @ref RCC_RNGCLK_DIV1 RNG Clock not divided + * @arg @ref RCC_RNGCLK_DIV2 RNG Clock divided by 2 + * @arg @ref RCC_RNGCLK_DIV4 RNG Clock divided by 4 + * @arg @ref RCC_RNGCLK_DIV8 RNG Clock divided by 8 + */ +#define __HAL_RCC_GET_RNG_DIV() ((uint32_t)(READ_BIT(RCC->CCIPR, RCC_CCIPR_RNGDIV))) +#endif /* RNG */ + +/** @brief Macro to configure the ADC interface clock + * @param __ADC_CLKSOURCE__ specifies the ADC digital interface clock source. + * This parameter can be one of the following values: + * @arg @ref RCC_ADCCLKSOURCE_PLLADC PLL "P" (PLLADC) Clock selected as ADC clock + * @arg @ref RCC_ADCCLKSOURCE_SYSCLK System Clock selected as ADC clock + * @arg @ref RCC_ADCCLKSOURCE_HSI HSI Clock selected as ADC clock + */ +#define __HAL_RCC_ADC_CONFIG(__ADC_CLKSOURCE__) \ + MODIFY_REG(RCC->CCIPR, RCC_CCIPR_ADCSEL, (uint32_t)(__ADC_CLKSOURCE__)) + +/** @brief Macro to get the ADC clock source. + * @retval The clock source can be one of the following values: + * @arg @ref RCC_ADCCLKSOURCE_PLLADC PLL "P" (PLLADC) Clock selected as ADC clock + * @arg @ref RCC_ADCCLKSOURCE_SYSCLK System Clock selected as ADC clock + * @arg @ref RCC_ADCCLKSOURCE_HSI HSI Clock selected as ADC clock + */ +#define __HAL_RCC_GET_ADC_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR, RCC_CCIPR_ADCSEL))) + +#if defined(RCC_CCIPR_TIM1SEL) +/** @brief Macro to configure the TIM1 interface clock + * @param __TIM1_CLKSOURCE__ specifies the TIM1 digital interface clock source. + * This parameter can be one of the following values: + * @arg @ref RCC_TIM1CLKSOURCE_PLL PLLQ Output Clock selected as TIM1 clock + * @arg @ref RCC_TIM1CLKSOURCE_PCLK1 System Clock selected as TIM1 clock + */ +#define __HAL_RCC_TIM1_CONFIG(__TIM1_CLKSOURCE__) \ + MODIFY_REG(RCC->CCIPR, RCC_CCIPR_TIM1SEL, (uint32_t)(__TIM1_CLKSOURCE__)) + +/** @brief Macro to get the TIM1 clock source. + * @retval The clock source can be one of the following values: + * @arg @ref RCC_TIM1CLKSOURCE_PLL PLLQ Output Clock selected as TIM1 clock + * @arg @ref RCC_TIM1CLKSOURCE_PCLK1 System Clock selected as TIM1 clock + */ +#define __HAL_RCC_GET_TIM1_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR, RCC_CCIPR_TIM1SEL))) +#endif /* RCC_CCIPR_TIM1SEL */ + +#if defined(RCC_CCIPR_TIM15SEL) +/** @brief Macro to configure the TIM15 interface clock + * @param __TIM15_CLKSOURCE__ specifies the TIM15 digital interface clock source. + * This parameter can be one of the following values: + * @arg RCC_TIM15CLKSOURCE_PLL PLLQ Output Clock selected as TIM15 clock + * @arg RCC_TIM15CLKSOURCE_PCLK1 System Clock selected as TIM15 clock + */ +#define __HAL_RCC_TIM15_CONFIG(__TIM15_CLKSOURCE__) \ + MODIFY_REG(RCC->CCIPR, RCC_CCIPR_TIM15SEL, (uint32_t)(__TIM15_CLKSOURCE__)) + +/** @brief Macro to get the TIM15 clock source. + * @retval The clock source can be one of the following values: + * @arg @ref RCC_TIM15CLKSOURCE_PLL PLLQ Output Clock selected as TIM15 clock + * @arg @ref RCC_TIM15CLKSOURCE_PCLK1 System Clock selected as TIM15 clock + */ +#define __HAL_RCC_GET_TIM15_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR, RCC_CCIPR_TIM15SEL))) +#endif /* RCC_CCIPR_TIM15SEL */ + +#if defined(RCC_CCIPR2_USBSEL) +/** @brief Macro to configure the USB interface clock + * @param __USB_CLKSOURCE__ specifies the USB digital interface clock source. + * This parameter can be one of the following values: + * @arg @ref RCC_USBCLKSOURCE_PLL PLLQ Output Clock selected as USB clock (*) + * @arg @ref RCC_USBCLKSOURCE_HSE HSE Output Clock selected as USB clock + * @arg @ref RCC_USBCLKSOURCE_HSI48 HSI48 Clock selected as USB clock (*) + * (*) Feature not available on all devices + */ +#define __HAL_RCC_USB_CONFIG(__USB_CLKSOURCE__) \ + MODIFY_REG(RCC->CCIPR2, RCC_CCIPR2_USBSEL, (uint32_t)(__USB_CLKSOURCE__)) + +/** @brief Macro to get the USB clock source. + * @retval The clock source can be one of the following values: + * @arg @ref RCC_USBCLKSOURCE_HSI48 HSI48 Clock selected as USB clock + * @arg @ref RCC_USBCLKSOURCE_HSE HSE Output Clock selected as USB clock + * @arg @ref RCC_USBCLKSOURCE_PLL PLLQ Output Clock selected as USB clock + */ +#define __HAL_RCC_GET_USB_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR2, RCC_CCIPR2_USBSEL))) +#endif /* RCC_CCIPR2_USBSEL */ + +#if defined(FDCAN1) || defined(FDCAN2) +/** @brief Macro to configure the FDCAN interface clock + * @param __FDCAN_CLKSOURCE__ specifies the FDCAN digital interface clock source. + * This parameter can be one of the following values: + * @arg RCC_FDCANCLKSOURCE_PLL PLLQ Output Clock selected as FDCAN clock + * @arg RCC_FDCANCLKSOURCE_PCLK1 System Clock selected as FDCAN clock + * @arg RCC_FDCANCLKSOURCE_HSE HSE Clock selected as FDCAN clock + */ +#define __HAL_RCC_FDCAN_CONFIG(__FDCAN_CLKSOURCE__) \ + MODIFY_REG(RCC->CCIPR2, RCC_CCIPR2_FDCANSEL, (uint32_t)(__FDCAN_CLKSOURCE__)) + +/** @brief Macro to get the FDCAN clock source. + * @retval The clock source can be one of the following values: + * @arg @ref RCC_FDCANCLKSOURCE_PLL PLLQ Output Clock selected as FDCAN clock + * @arg @ref RCC_FDCANCLKSOURCE_PCLK1 System Clock selected as FDCAN clock + * @arg @ref RCC_FDCANCLKSOURCE_HSE HSE Clock selected as FDCAN clock + */ +#define __HAL_RCC_GET_FDCAN_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR2, RCC_CCIPR2_FDCANSEL))) +#endif /* FDCAN1 || FDCAN2 */ + +#if defined(CRS) + +/** + * @brief Enable the specified CRS interrupts. + * @param __INTERRUPT__ specifies the CRS interrupt sources to be enabled. + * This parameter can be any combination of the following values: + * @arg @ref RCC_CRS_IT_SYNCOK SYNC event OK interrupt + * @arg @ref RCC_CRS_IT_SYNCWARN SYNC warning interrupt + * @arg @ref RCC_CRS_IT_ERR Synchronization or trimming error interrupt + * @arg @ref RCC_CRS_IT_ESYNC Expected SYNC interrupt + * @retval None + */ +#define __HAL_RCC_CRS_ENABLE_IT(__INTERRUPT__) SET_BIT(CRS->CR, (__INTERRUPT__)) + +/** + * @brief Disable the specified CRS interrupts. + * @param __INTERRUPT__ specifies the CRS interrupt sources to be disabled. + * This parameter can be any combination of the following values: + * @arg @ref RCC_CRS_IT_SYNCOK SYNC event OK interrupt + * @arg @ref RCC_CRS_IT_SYNCWARN SYNC warning interrupt + * @arg @ref RCC_CRS_IT_ERR Synchronization or trimming error interrupt + * @arg @ref RCC_CRS_IT_ESYNC Expected SYNC interrupt + * @retval None + */ +#define __HAL_RCC_CRS_DISABLE_IT(__INTERRUPT__) CLEAR_BIT(CRS->CR, (__INTERRUPT__)) + +/** @brief Check whether the CRS interrupt has occurred or not. + * @param __INTERRUPT__ specifies the CRS interrupt source to check. + * This parameter can be one of the following values: + * @arg @ref RCC_CRS_IT_SYNCOK SYNC event OK interrupt + * @arg @ref RCC_CRS_IT_SYNCWARN SYNC warning interrupt + * @arg @ref RCC_CRS_IT_ERR Synchronization or trimming error interrupt + * @arg @ref RCC_CRS_IT_ESYNC Expected SYNC interrupt + * @retval The new state of __INTERRUPT__ (SET or RESET). + */ +#define __HAL_RCC_CRS_GET_IT_SOURCE(__INTERRUPT__) ((READ_BIT(CRS->CR, (__INTERRUPT__)) != 0U) ? SET : RESET) + +/** @brief Clear the CRS interrupt pending bits + * @param __INTERRUPT__ specifies the interrupt pending bit to clear. + * This parameter can be any combination of the following values: + * @arg @ref RCC_CRS_IT_SYNCOK SYNC event OK interrupt + * @arg @ref RCC_CRS_IT_SYNCWARN SYNC warning interrupt + * @arg @ref RCC_CRS_IT_ERR Synchronization or trimming error interrupt + * @arg @ref RCC_CRS_IT_ESYNC Expected SYNC interrupt + * @arg @ref RCC_CRS_IT_TRIMOVF Trimming overflow or underflow interrupt + * @arg @ref RCC_CRS_IT_SYNCERR SYNC error interrupt + * @arg @ref RCC_CRS_IT_SYNCMISS SYNC missed interrupt + */ +/* CRS IT Error Mask */ +#define RCC_CRS_IT_ERROR_MASK (RCC_CRS_IT_TRIMOVF | RCC_CRS_IT_SYNCERR | RCC_CRS_IT_SYNCMISS) + +#define __HAL_RCC_CRS_CLEAR_IT(__INTERRUPT__) do { \ + if(((__INTERRUPT__) & RCC_CRS_IT_ERROR_MASK) != 0U) \ + { \ + WRITE_REG(CRS->ICR, CRS_ICR_ERRC | ((__INTERRUPT__) & ~RCC_CRS_IT_ERROR_MASK)); \ + } \ + else \ + { \ + WRITE_REG(CRS->ICR, (__INTERRUPT__)); \ + } \ + } while(0) + +/** + * @brief Check whether the specified CRS flag is set or not. + * @param __FLAG__ specifies the flag to check. + * This parameter can be one of the following values: + * @arg @ref RCC_CRS_FLAG_SYNCOK SYNC event OK + * @arg @ref RCC_CRS_FLAG_SYNCWARN SYNC warning + * @arg @ref RCC_CRS_FLAG_ERR Error + * @arg @ref RCC_CRS_FLAG_ESYNC Expected SYNC + * @arg @ref RCC_CRS_FLAG_TRIMOVF Trimming overflow or underflow + * @arg @ref RCC_CRS_FLAG_SYNCERR SYNC error + * @arg @ref RCC_CRS_FLAG_SYNCMISS SYNC missed + * @retval The new state of _FLAG_ (TRUE or FALSE). + */ +#define __HAL_RCC_CRS_GET_FLAG(__FLAG__) (READ_BIT(CRS->ISR, (__FLAG__)) == (__FLAG__)) + +/** + * @brief Clear the CRS specified FLAG. + * @param __FLAG__ specifies the flag to clear. + * This parameter can be one of the following values: + * @arg @ref RCC_CRS_FLAG_SYNCOK SYNC event OK + * @arg @ref RCC_CRS_FLAG_SYNCWARN SYNC warning + * @arg @ref RCC_CRS_FLAG_ERR Error + * @arg @ref RCC_CRS_FLAG_ESYNC Expected SYNC + * @arg @ref RCC_CRS_FLAG_TRIMOVF Trimming overflow or underflow + * @arg @ref RCC_CRS_FLAG_SYNCERR SYNC error + * @arg @ref RCC_CRS_FLAG_SYNCMISS SYNC missed + * @note RCC_CRS_FLAG_ERR clears RCC_CRS_FLAG_TRIMOVF, RCC_CRS_FLAG_SYNCERR, RCC_CRS_FLAG_SYNCMISS and consequently RCC_CRS_FLAG_ERR + * @retval None + */ + +/* CRS Flag Error Mask */ +#define RCC_CRS_FLAG_ERROR_MASK (RCC_CRS_FLAG_TRIMOVF | RCC_CRS_FLAG_SYNCERR | RCC_CRS_FLAG_SYNCMISS) + +#define __HAL_RCC_CRS_CLEAR_FLAG(__FLAG__) do { \ + if(((__FLAG__) & RCC_CRS_FLAG_ERROR_MASK) != 0U) \ + { \ + WRITE_REG(CRS->ICR, CRS_ICR_ERRC | ((__FLAG__) & ~RCC_CRS_FLAG_ERROR_MASK)); \ + } \ + else \ + { \ + WRITE_REG(CRS->ICR, (__FLAG__)); \ + } \ + } while(0) + +#endif /* CRS */ + +/** + * @} + */ + +#if defined(CRS) + +/** @defgroup RCCEx_CRS_Extended_Features RCCEx CRS Extended Features + * @{ + */ +/** + * @brief Enable the oscillator clock for frequency error counter. + * @note when the CEN bit is set the CRS_CFGR register becomes write-protected. + * @retval None + */ +#define __HAL_RCC_CRS_FREQ_ERROR_COUNTER_ENABLE() SET_BIT(CRS->CR, CRS_CR_CEN) + +/** + * @brief Disable the oscillator clock for frequency error counter. + * @retval None + */ +#define __HAL_RCC_CRS_FREQ_ERROR_COUNTER_DISABLE() CLEAR_BIT(CRS->CR, CRS_CR_CEN) + +/** + * @brief Enable the automatic hardware adjustment of TRIM bits. + * @note When the AUTOTRIMEN bit is set the CRS_CFGR register becomes write-protected. + * @retval None + */ +#define __HAL_RCC_CRS_AUTOMATIC_CALIB_ENABLE() SET_BIT(CRS->CR, CRS_CR_AUTOTRIMEN) + +/** + * @brief Enable or disable the automatic hardware adjustment of TRIM bits. + * @retval None + */ +#define __HAL_RCC_CRS_AUTOMATIC_CALIB_DISABLE() CLEAR_BIT(CRS->CR, CRS_CR_AUTOTRIMEN) + +/** + * @brief Macro to calculate reload value to be set in CRS register according to target and sync frequencies + * @note The RELOAD value should be selected according to the ratio between the target frequency and the frequency + * of the synchronization source after prescaling. It is then decreased by one in order to + * reach the expected synchronization on the zero value. The formula is the following: + * RELOAD = (fTARGET / fSYNC) -1 + * @param __FTARGET__ Target frequency (value in Hz) + * @param __FSYNC__ Synchronization signal frequency (value in Hz) + * @retval None + */ +#define __HAL_RCC_CRS_RELOADVALUE_CALCULATE(__FTARGET__, __FSYNC__) (((__FTARGET__) / (__FSYNC__)) - 1U) + +/** + * @} + */ + +#endif /* CRS */ + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup RCCEx_Exported_Functions + * @{ + */ + +/** @addtogroup RCCEx_Exported_Functions_Group1 + * @{ + */ + +HAL_StatusTypeDef HAL_RCCEx_PeriphCLKConfig(RCC_PeriphCLKInitTypeDef *PeriphClkInit); +void HAL_RCCEx_GetPeriphCLKConfig(RCC_PeriphCLKInitTypeDef *PeriphClkInit); +uint32_t HAL_RCCEx_GetPeriphCLKFreq(uint32_t PeriphClk); + +/** + * @} + */ + +/** @addtogroup RCCEx_Exported_Functions_Group2 + * @{ + */ + +void HAL_RCCEx_EnableLSCO(uint32_t LSCOSource); +void HAL_RCCEx_DisableLSCO(void); + +/** + * @} + */ + +#if defined(CRS) + +/** @addtogroup RCCEx_Exported_Functions_Group3 + * @{ + */ + +void HAL_RCCEx_CRSConfig(RCC_CRSInitTypeDef *pInit); +void HAL_RCCEx_CRSSoftwareSynchronizationGenerate(void); +void HAL_RCCEx_CRSGetSynchronizationInfo(RCC_CRSSynchroInfoTypeDef *pSynchroInfo); +uint32_t HAL_RCCEx_CRSWaitSynchronization(uint32_t Timeout); +void HAL_RCCEx_CRS_IRQHandler(void); +void HAL_RCCEx_CRS_SyncOkCallback(void); +void HAL_RCCEx_CRS_SyncWarnCallback(void); +void HAL_RCCEx_CRS_ExpectedSyncCallback(void); +void HAL_RCCEx_CRS_ErrorCallback(uint32_t Error); + +/** + * @} + */ + +#endif /* CRS */ + +/** + * @} + */ + +/* Private macros ------------------------------------------------------------*/ +/** @defgroup RCCEx_Private_Macros RCCEx Private Macros + * @{ + */ + +#define IS_RCC_LSCOSOURCE(__SOURCE__) (((__SOURCE__) == RCC_LSCOSOURCE_LSI) || \ + ((__SOURCE__) == RCC_LSCOSOURCE_LSE)) + +#if defined(STM32G0C1xx) + +#define IS_RCC_PERIPHCLOCK(__SELECTION__) \ + ((((__SELECTION__) & RCC_PERIPHCLK_USART1) == RCC_PERIPHCLK_USART1) || \ + (((__SELECTION__) & RCC_PERIPHCLK_USART2) == RCC_PERIPHCLK_USART2) || \ + (((__SELECTION__) & RCC_PERIPHCLK_USART3) == RCC_PERIPHCLK_USART3) || \ + (((__SELECTION__) & RCC_PERIPHCLK_LPUART1) == RCC_PERIPHCLK_LPUART1) || \ + (((__SELECTION__) & RCC_PERIPHCLK_LPUART2) == RCC_PERIPHCLK_LPUART2) || \ + (((__SELECTION__) & RCC_PERIPHCLK_I2C1) == RCC_PERIPHCLK_I2C1) || \ + (((__SELECTION__) & RCC_PERIPHCLK_I2C2) == RCC_PERIPHCLK_I2C2) || \ + (((__SELECTION__) & RCC_PERIPHCLK_I2S1) == RCC_PERIPHCLK_I2S1) || \ + (((__SELECTION__) & RCC_PERIPHCLK_I2S2) == RCC_PERIPHCLK_I2S2) || \ + (((__SELECTION__) & RCC_PERIPHCLK_LPTIM1) == RCC_PERIPHCLK_LPTIM1) || \ + (((__SELECTION__) & RCC_PERIPHCLK_LPTIM2) == RCC_PERIPHCLK_LPTIM2) || \ + (((__SELECTION__) & RCC_PERIPHCLK_ADC) == RCC_PERIPHCLK_ADC) || \ + (((__SELECTION__) & RCC_PERIPHCLK_RTC) == RCC_PERIPHCLK_RTC) || \ + (((__SELECTION__) & RCC_PERIPHCLK_RNG) == RCC_PERIPHCLK_RNG) || \ + (((__SELECTION__) & RCC_PERIPHCLK_CEC) == RCC_PERIPHCLK_CEC) || \ + (((__SELECTION__) & RCC_PERIPHCLK_FDCAN) == RCC_PERIPHCLK_FDCAN) || \ + (((__SELECTION__) & RCC_PERIPHCLK_USB) == RCC_PERIPHCLK_USB) || \ + (((__SELECTION__) & RCC_PERIPHCLK_TIM1) == RCC_PERIPHCLK_TIM1) || \ + (((__SELECTION__) & RCC_PERIPHCLK_TIM15) == RCC_PERIPHCLK_TIM15)) + +#elif defined(STM32G0B1xx) + +#define IS_RCC_PERIPHCLOCK(__SELECTION__) \ + ((((__SELECTION__) & RCC_PERIPHCLK_USART1) == RCC_PERIPHCLK_USART1) || \ + (((__SELECTION__) & RCC_PERIPHCLK_USART2) == RCC_PERIPHCLK_USART2) || \ + (((__SELECTION__) & RCC_PERIPHCLK_USART3) == RCC_PERIPHCLK_USART3) || \ + (((__SELECTION__) & RCC_PERIPHCLK_LPUART1) == RCC_PERIPHCLK_LPUART1) || \ + (((__SELECTION__) & RCC_PERIPHCLK_LPUART2) == RCC_PERIPHCLK_LPUART2) || \ + (((__SELECTION__) & RCC_PERIPHCLK_I2C1) == RCC_PERIPHCLK_I2C1) || \ + (((__SELECTION__) & RCC_PERIPHCLK_I2C2) == RCC_PERIPHCLK_I2C2) || \ + (((__SELECTION__) & RCC_PERIPHCLK_I2S1) == RCC_PERIPHCLK_I2S1) || \ + (((__SELECTION__) & RCC_PERIPHCLK_I2S2) == RCC_PERIPHCLK_I2S2) || \ + (((__SELECTION__) & RCC_PERIPHCLK_LPTIM1) == RCC_PERIPHCLK_LPTIM1) || \ + (((__SELECTION__) & RCC_PERIPHCLK_LPTIM2) == RCC_PERIPHCLK_LPTIM2) || \ + (((__SELECTION__) & RCC_PERIPHCLK_ADC) == RCC_PERIPHCLK_ADC) || \ + (((__SELECTION__) & RCC_PERIPHCLK_RTC) == RCC_PERIPHCLK_RTC) || \ + (((__SELECTION__) & RCC_PERIPHCLK_CEC) == RCC_PERIPHCLK_CEC) || \ + (((__SELECTION__) & RCC_PERIPHCLK_FDCAN) == RCC_PERIPHCLK_FDCAN) || \ + (((__SELECTION__) & RCC_PERIPHCLK_USB) == RCC_PERIPHCLK_USB) || \ + (((__SELECTION__) & RCC_PERIPHCLK_TIM1) == RCC_PERIPHCLK_TIM1) || \ + (((__SELECTION__) & RCC_PERIPHCLK_TIM15) == RCC_PERIPHCLK_TIM15)) + +#elif defined(STM32G0B0xx) + +#define IS_RCC_PERIPHCLOCK(__SELECTION__) \ + ((((__SELECTION__) & RCC_PERIPHCLK_USART1) == RCC_PERIPHCLK_USART1) || \ + (((__SELECTION__) & RCC_PERIPHCLK_USART2) == RCC_PERIPHCLK_USART2) || \ + (((__SELECTION__) & RCC_PERIPHCLK_USART3) == RCC_PERIPHCLK_USART3) || \ + (((__SELECTION__) & RCC_PERIPHCLK_I2C1) == RCC_PERIPHCLK_I2C1) || \ + (((__SELECTION__) & RCC_PERIPHCLK_I2C2) == RCC_PERIPHCLK_I2C2) || \ + (((__SELECTION__) & RCC_PERIPHCLK_I2S1) == RCC_PERIPHCLK_I2S1) || \ + (((__SELECTION__) & RCC_PERIPHCLK_I2S2) == RCC_PERIPHCLK_I2S2) || \ + (((__SELECTION__) & RCC_PERIPHCLK_ADC) == RCC_PERIPHCLK_ADC) || \ + (((__SELECTION__) & RCC_PERIPHCLK_RTC) == RCC_PERIPHCLK_RTC) || \ + (((__SELECTION__) & RCC_PERIPHCLK_USB) == RCC_PERIPHCLK_USB)) + +#elif defined(STM32G081xx) +#define IS_RCC_PERIPHCLOCK(__SELECTION__) \ + ((((__SELECTION__) & RCC_PERIPHCLK_USART1) == RCC_PERIPHCLK_USART1) || \ + (((__SELECTION__) & RCC_PERIPHCLK_USART2) == RCC_PERIPHCLK_USART2) || \ + (((__SELECTION__) & RCC_PERIPHCLK_LPUART1) == RCC_PERIPHCLK_LPUART1) || \ + (((__SELECTION__) & RCC_PERIPHCLK_I2C1) == RCC_PERIPHCLK_I2C1) || \ + (((__SELECTION__) & RCC_PERIPHCLK_I2S1) == RCC_PERIPHCLK_I2S1) || \ + (((__SELECTION__) & RCC_PERIPHCLK_LPTIM1) == RCC_PERIPHCLK_LPTIM1) || \ + (((__SELECTION__) & RCC_PERIPHCLK_LPTIM2) == RCC_PERIPHCLK_LPTIM2) || \ + (((__SELECTION__) & RCC_PERIPHCLK_ADC) == RCC_PERIPHCLK_ADC) || \ + (((__SELECTION__) & RCC_PERIPHCLK_RTC) == RCC_PERIPHCLK_RTC) || \ + (((__SELECTION__) & RCC_PERIPHCLK_RNG) == RCC_PERIPHCLK_RNG) || \ + (((__SELECTION__) & RCC_PERIPHCLK_CEC) == RCC_PERIPHCLK_CEC) || \ + (((__SELECTION__) & RCC_PERIPHCLK_TIM1) == RCC_PERIPHCLK_TIM1) || \ + (((__SELECTION__) & RCC_PERIPHCLK_TIM15) == RCC_PERIPHCLK_TIM15)) +#elif defined(STM32G071xx) + +#define IS_RCC_PERIPHCLOCK(__SELECTION__) \ + ((((__SELECTION__) & RCC_PERIPHCLK_USART1) == RCC_PERIPHCLK_USART1) || \ + (((__SELECTION__) & RCC_PERIPHCLK_USART2) == RCC_PERIPHCLK_USART2) || \ + (((__SELECTION__) & RCC_PERIPHCLK_LPUART1) == RCC_PERIPHCLK_LPUART1) || \ + (((__SELECTION__) & RCC_PERIPHCLK_I2C1) == RCC_PERIPHCLK_I2C1) || \ + (((__SELECTION__) & RCC_PERIPHCLK_I2S1) == RCC_PERIPHCLK_I2S1) || \ + (((__SELECTION__) & RCC_PERIPHCLK_LPTIM1) == RCC_PERIPHCLK_LPTIM1) || \ + (((__SELECTION__) & RCC_PERIPHCLK_LPTIM2) == RCC_PERIPHCLK_LPTIM2) || \ + (((__SELECTION__) & RCC_PERIPHCLK_ADC) == RCC_PERIPHCLK_ADC) || \ + (((__SELECTION__) & RCC_PERIPHCLK_RTC) == RCC_PERIPHCLK_RTC) || \ + (((__SELECTION__) & RCC_PERIPHCLK_CEC) == RCC_PERIPHCLK_CEC) || \ + (((__SELECTION__) & RCC_PERIPHCLK_TIM1) == RCC_PERIPHCLK_TIM1) || \ + (((__SELECTION__) & RCC_PERIPHCLK_TIM15) == RCC_PERIPHCLK_TIM15)) + +#elif defined(STM32G070xx) + +#define IS_RCC_PERIPHCLOCK(__SELECTION__) \ + ((((__SELECTION__) & RCC_PERIPHCLK_USART1) == RCC_PERIPHCLK_USART1) || \ + (((__SELECTION__) & RCC_PERIPHCLK_USART2) == RCC_PERIPHCLK_USART2) || \ + (((__SELECTION__) & RCC_PERIPHCLK_I2C1) == RCC_PERIPHCLK_I2C1) || \ + (((__SELECTION__) & RCC_PERIPHCLK_I2S1) == RCC_PERIPHCLK_I2S1) || \ + (((__SELECTION__) & RCC_PERIPHCLK_ADC) == RCC_PERIPHCLK_ADC) || \ + (((__SELECTION__) & RCC_PERIPHCLK_RTC) == RCC_PERIPHCLK_RTC)) + +#elif defined(STM32G061xx) + +#define IS_RCC_PERIPHCLOCK(__SELECTION__) \ + ((((__SELECTION__) & RCC_PERIPHCLK_USART1) == RCC_PERIPHCLK_USART1) || \ + (((__SELECTION__) & RCC_PERIPHCLK_LPUART1) == RCC_PERIPHCLK_LPUART1) || \ + (((__SELECTION__) & RCC_PERIPHCLK_I2C1) == RCC_PERIPHCLK_I2C1) || \ + (((__SELECTION__) & RCC_PERIPHCLK_I2S1) == RCC_PERIPHCLK_I2S1) || \ + (((__SELECTION__) & RCC_PERIPHCLK_LPTIM1) == RCC_PERIPHCLK_LPTIM1) || \ + (((__SELECTION__) & RCC_PERIPHCLK_LPTIM2) == RCC_PERIPHCLK_LPTIM2) || \ + (((__SELECTION__) & RCC_PERIPHCLK_ADC) == RCC_PERIPHCLK_ADC) || \ + (((__SELECTION__) & RCC_PERIPHCLK_RTC) == RCC_PERIPHCLK_RTC) || \ + (((__SELECTION__) & RCC_PERIPHCLK_RNG) == RCC_PERIPHCLK_RNG) || \ + (((__SELECTION__) & RCC_PERIPHCLK_TIM1) == RCC_PERIPHCLK_TIM1) || \ + (((__SELECTION__) & RCC_PERIPHCLK_TIM15) == RCC_PERIPHCLK_TIM15)) + +#elif defined(STM32G051xx) + +#define IS_RCC_PERIPHCLOCK(__SELECTION__) \ + ((((__SELECTION__) & RCC_PERIPHCLK_USART1) == RCC_PERIPHCLK_USART1) || \ + (((__SELECTION__) & RCC_PERIPHCLK_LPUART1) == RCC_PERIPHCLK_LPUART1) || \ + (((__SELECTION__) & RCC_PERIPHCLK_I2C1) == RCC_PERIPHCLK_I2C1) || \ + (((__SELECTION__) & RCC_PERIPHCLK_I2S1) == RCC_PERIPHCLK_I2S1) || \ + (((__SELECTION__) & RCC_PERIPHCLK_LPTIM1) == RCC_PERIPHCLK_LPTIM1) || \ + (((__SELECTION__) & RCC_PERIPHCLK_LPTIM2) == RCC_PERIPHCLK_LPTIM2) || \ + (((__SELECTION__) & RCC_PERIPHCLK_ADC) == RCC_PERIPHCLK_ADC) || \ + (((__SELECTION__) & RCC_PERIPHCLK_RTC) == RCC_PERIPHCLK_RTC) || \ + (((__SELECTION__) & RCC_PERIPHCLK_TIM1) == RCC_PERIPHCLK_TIM1) || \ + (((__SELECTION__) & RCC_PERIPHCLK_TIM15) == RCC_PERIPHCLK_TIM15)) + +#elif defined(STM32G041xx) + +#define IS_RCC_PERIPHCLOCK(__SELECTION__) \ + ((((__SELECTION__) & RCC_PERIPHCLK_USART1) == RCC_PERIPHCLK_USART1) || \ + (((__SELECTION__) & RCC_PERIPHCLK_LPUART1) == RCC_PERIPHCLK_LPUART1) || \ + (((__SELECTION__) & RCC_PERIPHCLK_I2C1) == RCC_PERIPHCLK_I2C1) || \ + (((__SELECTION__) & RCC_PERIPHCLK_I2S1) == RCC_PERIPHCLK_I2S1) || \ + (((__SELECTION__) & RCC_PERIPHCLK_LPTIM1) == RCC_PERIPHCLK_LPTIM1) || \ + (((__SELECTION__) & RCC_PERIPHCLK_LPTIM2) == RCC_PERIPHCLK_LPTIM2) || \ + (((__SELECTION__) & RCC_PERIPHCLK_ADC) == RCC_PERIPHCLK_ADC) || \ + (((__SELECTION__) & RCC_PERIPHCLK_RTC) == RCC_PERIPHCLK_RTC) || \ + (((__SELECTION__) & RCC_PERIPHCLK_RNG) == RCC_PERIPHCLK_RNG) || \ + (((__SELECTION__) & RCC_PERIPHCLK_TIM1) == RCC_PERIPHCLK_TIM1)) + +#elif defined(STM32G031xx) + +#define IS_RCC_PERIPHCLOCK(__SELECTION__) \ + ((((__SELECTION__) & RCC_PERIPHCLK_USART1) == RCC_PERIPHCLK_USART1) || \ + (((__SELECTION__) & RCC_PERIPHCLK_LPUART1) == RCC_PERIPHCLK_LPUART1) || \ + (((__SELECTION__) & RCC_PERIPHCLK_I2C1) == RCC_PERIPHCLK_I2C1) || \ + (((__SELECTION__) & RCC_PERIPHCLK_I2S1) == RCC_PERIPHCLK_I2S1) || \ + (((__SELECTION__) & RCC_PERIPHCLK_LPTIM1) == RCC_PERIPHCLK_LPTIM1) || \ + (((__SELECTION__) & RCC_PERIPHCLK_LPTIM2) == RCC_PERIPHCLK_LPTIM2) || \ + (((__SELECTION__) & RCC_PERIPHCLK_ADC) == RCC_PERIPHCLK_ADC) || \ + (((__SELECTION__) & RCC_PERIPHCLK_RTC) == RCC_PERIPHCLK_RTC) || \ + (((__SELECTION__) & RCC_PERIPHCLK_TIM1) == RCC_PERIPHCLK_TIM1)) + +#elif defined(STM32G030xx) || defined(STM32G050xx) + +#define IS_RCC_PERIPHCLOCK(__SELECTION__) \ + ((((__SELECTION__) & RCC_PERIPHCLK_USART1) == RCC_PERIPHCLK_USART1) || \ + (((__SELECTION__) & RCC_PERIPHCLK_I2C1) == RCC_PERIPHCLK_I2C1) || \ + (((__SELECTION__) & RCC_PERIPHCLK_I2S1) == RCC_PERIPHCLK_I2S1) || \ + (((__SELECTION__) & RCC_PERIPHCLK_ADC) == RCC_PERIPHCLK_ADC) || \ + (((__SELECTION__) & RCC_PERIPHCLK_RTC) == RCC_PERIPHCLK_RTC)) +#endif /* STM32G0C1xx */ + +#define IS_RCC_USART1CLKSOURCE(__SOURCE__) \ + (((__SOURCE__) == RCC_USART1CLKSOURCE_PCLK1) || \ + ((__SOURCE__) == RCC_USART1CLKSOURCE_SYSCLK) || \ + ((__SOURCE__) == RCC_USART1CLKSOURCE_LSE) || \ + ((__SOURCE__) == RCC_USART1CLKSOURCE_HSI)) + +#if defined(RCC_CCIPR_USART2SEL) +#define IS_RCC_USART2CLKSOURCE(__SOURCE__) \ + (((__SOURCE__) == RCC_USART2CLKSOURCE_PCLK1) || \ + ((__SOURCE__) == RCC_USART2CLKSOURCE_SYSCLK) || \ + ((__SOURCE__) == RCC_USART2CLKSOURCE_LSE) || \ + ((__SOURCE__) == RCC_USART2CLKSOURCE_HSI)) +#endif /* RCC_CCIPR_USART2SEL */ + +#if defined(RCC_CCIPR_USART3SEL) +#define IS_RCC_USART3CLKSOURCE(__SOURCE__) \ + (((__SOURCE__) == RCC_USART3CLKSOURCE_PCLK1) || \ + ((__SOURCE__) == RCC_USART3CLKSOURCE_SYSCLK) || \ + ((__SOURCE__) == RCC_USART3CLKSOURCE_LSE) || \ + ((__SOURCE__) == RCC_USART3CLKSOURCE_HSI)) +#endif /* RCC_CCIPR_USART3SEL */ + +#if defined(LPUART1) +#define IS_RCC_LPUART1CLKSOURCE(__SOURCE__) \ + (((__SOURCE__) == RCC_LPUART1CLKSOURCE_PCLK1) || \ + ((__SOURCE__) == RCC_LPUART1CLKSOURCE_SYSCLK) || \ + ((__SOURCE__) == RCC_LPUART1CLKSOURCE_LSE) || \ + ((__SOURCE__) == RCC_LPUART1CLKSOURCE_HSI)) +#endif /* LPUART1 */ + +#if defined(LPUART2) +#define IS_RCC_LPUART2CLKSOURCE(__SOURCE__) \ + (((__SOURCE__) == RCC_LPUART2CLKSOURCE_PCLK1) || \ + ((__SOURCE__) == RCC_LPUART2CLKSOURCE_SYSCLK) || \ + ((__SOURCE__) == RCC_LPUART2CLKSOURCE_LSE) || \ + ((__SOURCE__) == RCC_LPUART2CLKSOURCE_HSI)) +#endif /* LPUART2 */ + +#define IS_RCC_I2C1CLKSOURCE(__SOURCE__) \ + (((__SOURCE__) == RCC_I2C1CLKSOURCE_PCLK1) || \ + ((__SOURCE__) == RCC_I2C1CLKSOURCE_SYSCLK) || \ + ((__SOURCE__) == RCC_I2C1CLKSOURCE_HSI)) + +#if defined(RCC_CCIPR_I2C2SEL) +#define IS_RCC_I2C2CLKSOURCE(__SOURCE__) \ + (((__SOURCE__) == RCC_I2C2CLKSOURCE_PCLK1) || \ + ((__SOURCE__) == RCC_I2C2CLKSOURCE_SYSCLK) || \ + ((__SOURCE__) == RCC_I2C2CLKSOURCE_HSI)) + +#endif /* RCC_CCIPR_I2C2SEL */ + +#define IS_RCC_I2S1CLKSOURCE(__SOURCE__) \ + (((__SOURCE__) == RCC_I2S1CLKSOURCE_SYSCLK)|| \ + ((__SOURCE__) == RCC_I2S1CLKSOURCE_PLL) || \ + ((__SOURCE__) == RCC_I2S1CLKSOURCE_HSI) || \ + ((__SOURCE__) == RCC_I2S1CLKSOURCE_EXT)) + +#if defined(RCC_CCIPR2_I2S2SEL) +#define IS_RCC_I2S2CLKSOURCE(__SOURCE__) \ + (((__SOURCE__) == RCC_I2S2CLKSOURCE_SYSCLK)|| \ + ((__SOURCE__) == RCC_I2S2CLKSOURCE_PLL) || \ + ((__SOURCE__) == RCC_I2S2CLKSOURCE_HSI) || \ + ((__SOURCE__) == RCC_I2S2CLKSOURCE_EXT)) +#endif /* RCC_CCIPR2_I2S2SEL */ + +#if defined(RCC_CCIPR_LPTIM1SEL) +#define IS_RCC_LPTIM1CLKSOURCE(__SOURCE__) \ + (((__SOURCE__) == RCC_LPTIM1CLKSOURCE_PCLK1)|| \ + ((__SOURCE__) == RCC_LPTIM1CLKSOURCE_LSI) || \ + ((__SOURCE__) == RCC_LPTIM1CLKSOURCE_HSI) || \ + ((__SOURCE__) == RCC_LPTIM1CLKSOURCE_LSE)) +#endif /* RCC_CCIPR_LPTIM1SEL */ + +#if defined(RCC_CCIPR_LPTIM2SEL) +#define IS_RCC_LPTIM2CLKSOURCE(__SOURCE__) \ + (((__SOURCE__) == RCC_LPTIM2CLKSOURCE_PCLK1)|| \ + ((__SOURCE__) == RCC_LPTIM2CLKSOURCE_LSI) || \ + ((__SOURCE__) == RCC_LPTIM2CLKSOURCE_HSI) || \ + ((__SOURCE__) == RCC_LPTIM2CLKSOURCE_LSE)) +#endif /* RCC_CCIPR_LPTIM2SEL */ + +#define IS_RCC_ADCCLKSOURCE(__SOURCE__) \ + (((__SOURCE__) == RCC_ADCCLKSOURCE_PLLADC) || \ + ((__SOURCE__) == RCC_ADCCLKSOURCE_SYSCLK) || \ + ((__SOURCE__) == RCC_ADCCLKSOURCE_HSI)) + +#if defined(RNG) +#define IS_RCC_RNGCLKSOURCE(__SOURCE__) \ + (((__SOURCE__) == RCC_RNGCLKSOURCE_NONE) || \ + ((__SOURCE__) == RCC_RNGCLKSOURCE_HSI_DIV8) || \ + ((__SOURCE__) == RCC_RNGCLKSOURCE_SYSCLK) || \ + ((__SOURCE__) == RCC_RNGCLKSOURCE_PLL)) +#define IS_RCC_RNGDIV(__DIV__) \ + (((__DIV__) == RCC_RNGCLK_DIV1) || \ + ((__DIV__) == RCC_RNGCLK_DIV2) || \ + ((__DIV__) == RCC_RNGCLK_DIV4) || \ + ((__DIV__) == RCC_RNGCLK_DIV8)) +#endif /* RNG */ + +#if defined(CEC) +#define IS_RCC_CECCLKSOURCE(__SOURCE__) \ + (((__SOURCE__) == RCC_CECCLKSOURCE_HSI_DIV488)|| \ + ((__SOURCE__) == RCC_CECCLKSOURCE_LSE)) +#endif /* CEC */ + +#if defined(FDCAN1) || defined(FDCAN2) +#define IS_RCC_FDCANCLKSOURCE(__SOURCE__) \ + (((__SOURCE__) == RCC_FDCANCLKSOURCE_HSE)|| \ + ((__SOURCE__) == RCC_FDCANCLKSOURCE_PLL)|| \ + ((__SOURCE__) == RCC_FDCANCLKSOURCE_PCLK1)) + +#endif /* FDCAN1 */ + +#if defined(RCC_HSI48_SUPPORT) +#define IS_RCC_USBCLKSOURCE(__SOURCE__) \ + (((__SOURCE__) == RCC_USBCLKSOURCE_HSI48)|| \ + ((__SOURCE__) == RCC_USBCLKSOURCE_HSE) || \ + ((__SOURCE__) == RCC_USBCLKSOURCE_PLL)) +#else +#define IS_RCC_USBCLKSOURCE(__SOURCE__) \ + (((__SOURCE__) == RCC_USBCLKSOURCE_HSE)|| \ + ((__SOURCE__) == RCC_USBCLKSOURCE_PLL)) +#endif /* RCC_HSI48_SUPPORT */ + +#if defined(RCC_CCIPR_TIM1SEL) +#define IS_RCC_TIM1CLKSOURCE(__SOURCE__) \ + (((__SOURCE__) == RCC_TIM1CLKSOURCE_PLL) || \ + ((__SOURCE__) == RCC_TIM1CLKSOURCE_PCLK1)) +#endif /* RCC_CCIPR_TIM1SEL */ + +#if defined(RCC_CCIPR_TIM15SEL) +#define IS_RCC_TIM15CLKSOURCE(__SOURCE__) \ + (((__SOURCE__) == RCC_TIM15CLKSOURCE_PLL) || \ + ((__SOURCE__) == RCC_TIM15CLKSOURCE_PCLK1)) +#endif /* RCC_CCIPR_TIM15SEL */ + +#if defined(CRS) + +#define IS_RCC_CRS_SYNC_SOURCE(__SOURCE__) (((__SOURCE__) == RCC_CRS_SYNC_SOURCE_GPIO) || \ + ((__SOURCE__) == RCC_CRS_SYNC_SOURCE_LSE) || \ + ((__SOURCE__) == RCC_CRS_SYNC_SOURCE_USB)) + +#define IS_RCC_CRS_SYNC_DIV(__DIV__) (((__DIV__) == RCC_CRS_SYNC_DIV1) || ((__DIV__) == RCC_CRS_SYNC_DIV2) || \ + ((__DIV__) == RCC_CRS_SYNC_DIV4) || ((__DIV__) == RCC_CRS_SYNC_DIV8) || \ + ((__DIV__) == RCC_CRS_SYNC_DIV16) || ((__DIV__) == RCC_CRS_SYNC_DIV32) || \ + ((__DIV__) == RCC_CRS_SYNC_DIV64) || ((__DIV__) == RCC_CRS_SYNC_DIV128)) + +#define IS_RCC_CRS_SYNC_POLARITY(__POLARITY__) (((__POLARITY__) == RCC_CRS_SYNC_POLARITY_RISING) || \ + ((__POLARITY__) == RCC_CRS_SYNC_POLARITY_FALLING)) + +#define IS_RCC_CRS_RELOADVALUE(__VALUE__) (((__VALUE__) <= 0xFFFFU)) + +#define IS_RCC_CRS_ERRORLIMIT(__VALUE__) (((__VALUE__) <= 0xFFU)) + +#define IS_RCC_CRS_HSI48CALIBRATION(__VALUE__) (((__VALUE__) <= 0x7FU)) + +#define IS_RCC_CRS_FREQERRORDIR(__DIR__) (((__DIR__) == RCC_CRS_FREQERRORDIR_UP) || \ + ((__DIR__) == RCC_CRS_FREQERRORDIR_DOWN)) + +#endif /* CRS */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32G0xx_HAL_RCC_EX_H */ + diff --git a/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_tim.h b/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_tim.h new file mode 100644 index 0000000..8bd572f --- /dev/null +++ b/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_tim.h @@ -0,0 +1,2465 @@ +/** + ****************************************************************************** + * @file stm32g0xx_hal_tim.h + * @author MCD Application Team + * @brief Header file of TIM HAL module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2018 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32G0xx_HAL_TIM_H +#define STM32G0xx_HAL_TIM_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32g0xx_hal_def.h" + +/** @addtogroup STM32G0xx_HAL_Driver + * @{ + */ + +/** @addtogroup TIM + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ +/** @defgroup TIM_Exported_Types TIM Exported Types + * @{ + */ + +/** + * @brief TIM Time base Configuration Structure definition + */ +typedef struct +{ + uint32_t Prescaler; /*!< Specifies the prescaler value used to divide the TIM clock. + This parameter can be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF */ + + uint32_t CounterMode; /*!< Specifies the counter mode. + This parameter can be a value of @ref TIM_Counter_Mode */ + + uint32_t Period; /*!< Specifies the period value to be loaded into the active + Auto-Reload Register at the next update event. + This parameter can be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF. */ + + uint32_t ClockDivision; /*!< Specifies the clock division. + This parameter can be a value of @ref TIM_ClockDivision */ + + uint32_t RepetitionCounter; /*!< Specifies the repetition counter value. Each time the RCR downcounter + reaches zero, an update event is generated and counting restarts + from the RCR value (N). + This means in PWM mode that (N+1) corresponds to: + - the number of PWM periods in edge-aligned mode + - the number of half PWM period in center-aligned mode + GP timers: this parameter must be a number between Min_Data = 0x00 and + Max_Data = 0xFF. + Advanced timers: this parameter must be a number between Min_Data = 0x0000 and + Max_Data = 0xFFFF. */ + + uint32_t AutoReloadPreload; /*!< Specifies the auto-reload preload. + This parameter can be a value of @ref TIM_AutoReloadPreload */ +} TIM_Base_InitTypeDef; + +/** + * @brief TIM Output Compare Configuration Structure definition + */ +typedef struct +{ + uint32_t OCMode; /*!< Specifies the TIM mode. + This parameter can be a value of @ref TIM_Output_Compare_and_PWM_modes */ + + uint32_t Pulse; /*!< Specifies the pulse value to be loaded into the Capture Compare Register. + This parameter can be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF */ + + uint32_t OCPolarity; /*!< Specifies the output polarity. + This parameter can be a value of @ref TIM_Output_Compare_Polarity */ + + uint32_t OCNPolarity; /*!< Specifies the complementary output polarity. + This parameter can be a value of @ref TIM_Output_Compare_N_Polarity + @note This parameter is valid only for timer instances supporting break feature. */ + + uint32_t OCFastMode; /*!< Specifies the Fast mode state. + This parameter can be a value of @ref TIM_Output_Fast_State + @note This parameter is valid only in PWM1 and PWM2 mode. */ + + + uint32_t OCIdleState; /*!< Specifies the TIM Output Compare pin state during Idle state. + This parameter can be a value of @ref TIM_Output_Compare_Idle_State + @note This parameter is valid only for timer instances supporting break feature. */ + + uint32_t OCNIdleState; /*!< Specifies the TIM Output Compare pin state during Idle state. + This parameter can be a value of @ref TIM_Output_Compare_N_Idle_State + @note This parameter is valid only for timer instances supporting break feature. */ +} TIM_OC_InitTypeDef; + +/** + * @brief TIM One Pulse Mode Configuration Structure definition + */ +typedef struct +{ + uint32_t OCMode; /*!< Specifies the TIM mode. + This parameter can be a value of @ref TIM_Output_Compare_and_PWM_modes */ + + uint32_t Pulse; /*!< Specifies the pulse value to be loaded into the Capture Compare Register. + This parameter can be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF */ + + uint32_t OCPolarity; /*!< Specifies the output polarity. + This parameter can be a value of @ref TIM_Output_Compare_Polarity */ + + uint32_t OCNPolarity; /*!< Specifies the complementary output polarity. + This parameter can be a value of @ref TIM_Output_Compare_N_Polarity + @note This parameter is valid only for timer instances supporting break feature. */ + + uint32_t OCIdleState; /*!< Specifies the TIM Output Compare pin state during Idle state. + This parameter can be a value of @ref TIM_Output_Compare_Idle_State + @note This parameter is valid only for timer instances supporting break feature. */ + + uint32_t OCNIdleState; /*!< Specifies the TIM Output Compare pin state during Idle state. + This parameter can be a value of @ref TIM_Output_Compare_N_Idle_State + @note This parameter is valid only for timer instances supporting break feature. */ + + uint32_t ICPolarity; /*!< Specifies the active edge of the input signal. + This parameter can be a value of @ref TIM_Input_Capture_Polarity */ + + uint32_t ICSelection; /*!< Specifies the input. + This parameter can be a value of @ref TIM_Input_Capture_Selection */ + + uint32_t ICFilter; /*!< Specifies the input capture filter. + This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */ +} TIM_OnePulse_InitTypeDef; + +/** + * @brief TIM Input Capture Configuration Structure definition + */ +typedef struct +{ + uint32_t ICPolarity; /*!< Specifies the active edge of the input signal. + This parameter can be a value of @ref TIM_Input_Capture_Polarity */ + + uint32_t ICSelection; /*!< Specifies the input. + This parameter can be a value of @ref TIM_Input_Capture_Selection */ + + uint32_t ICPrescaler; /*!< Specifies the Input Capture Prescaler. + This parameter can be a value of @ref TIM_Input_Capture_Prescaler */ + + uint32_t ICFilter; /*!< Specifies the input capture filter. + This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */ +} TIM_IC_InitTypeDef; + +/** + * @brief TIM Encoder Configuration Structure definition + */ +typedef struct +{ + uint32_t EncoderMode; /*!< Specifies the active edge of the input signal. + This parameter can be a value of @ref TIM_Encoder_Mode */ + + uint32_t IC1Polarity; /*!< Specifies the active edge of the input signal. + This parameter can be a value of @ref TIM_Encoder_Input_Polarity */ + + uint32_t IC1Selection; /*!< Specifies the input. + This parameter can be a value of @ref TIM_Input_Capture_Selection */ + + uint32_t IC1Prescaler; /*!< Specifies the Input Capture Prescaler. + This parameter can be a value of @ref TIM_Input_Capture_Prescaler */ + + uint32_t IC1Filter; /*!< Specifies the input capture filter. + This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */ + + uint32_t IC2Polarity; /*!< Specifies the active edge of the input signal. + This parameter can be a value of @ref TIM_Encoder_Input_Polarity */ + + uint32_t IC2Selection; /*!< Specifies the input. + This parameter can be a value of @ref TIM_Input_Capture_Selection */ + + uint32_t IC2Prescaler; /*!< Specifies the Input Capture Prescaler. + This parameter can be a value of @ref TIM_Input_Capture_Prescaler */ + + uint32_t IC2Filter; /*!< Specifies the input capture filter. + This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */ +} TIM_Encoder_InitTypeDef; + +/** + * @brief Clock Configuration Handle Structure definition + */ +typedef struct +{ + uint32_t ClockSource; /*!< TIM clock sources + This parameter can be a value of @ref TIM_Clock_Source */ + uint32_t ClockPolarity; /*!< TIM clock polarity + This parameter can be a value of @ref TIM_Clock_Polarity */ + uint32_t ClockPrescaler; /*!< TIM clock prescaler + This parameter can be a value of @ref TIM_Clock_Prescaler */ + uint32_t ClockFilter; /*!< TIM clock filter + This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */ +} TIM_ClockConfigTypeDef; + +/** + * @brief TIM Clear Input Configuration Handle Structure definition + */ +typedef struct +{ + uint32_t ClearInputState; /*!< TIM clear Input state + This parameter can be ENABLE or DISABLE */ + uint32_t ClearInputSource; /*!< TIM clear Input sources + This parameter can be a value of @ref TIM_ClearInput_Source */ + uint32_t ClearInputPolarity; /*!< TIM Clear Input polarity + This parameter can be a value of @ref TIM_ClearInput_Polarity */ + uint32_t ClearInputPrescaler; /*!< TIM Clear Input prescaler + This parameter must be 0: When OCRef clear feature is used with ETR source, + ETR prescaler must be off */ + uint32_t ClearInputFilter; /*!< TIM Clear Input filter + This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */ +} TIM_ClearInputConfigTypeDef; + +/** + * @brief TIM Master configuration Structure definition + * @note Advanced timers provide TRGO2 internal line which is redirected + * to the ADC + */ +typedef struct +{ + uint32_t MasterOutputTrigger; /*!< Trigger output (TRGO) selection + This parameter can be a value of @ref TIM_Master_Mode_Selection */ + uint32_t MasterOutputTrigger2; /*!< Trigger output2 (TRGO2) selection + This parameter can be a value of @ref TIM_Master_Mode_Selection_2 */ + uint32_t MasterSlaveMode; /*!< Master/slave mode selection + This parameter can be a value of @ref TIM_Master_Slave_Mode + @note When the Master/slave mode is enabled, the effect of + an event on the trigger input (TRGI) is delayed to allow a + perfect synchronization between the current timer and its + slaves (through TRGO). It is not mandatory in case of timer + synchronization mode. */ +} TIM_MasterConfigTypeDef; + +/** + * @brief TIM Slave configuration Structure definition + */ +typedef struct +{ + uint32_t SlaveMode; /*!< Slave mode selection + This parameter can be a value of @ref TIM_Slave_Mode */ + uint32_t InputTrigger; /*!< Input Trigger source + This parameter can be a value of @ref TIM_Trigger_Selection */ + uint32_t TriggerPolarity; /*!< Input Trigger polarity + This parameter can be a value of @ref TIM_Trigger_Polarity */ + uint32_t TriggerPrescaler; /*!< Input trigger prescaler + This parameter can be a value of @ref TIM_Trigger_Prescaler */ + uint32_t TriggerFilter; /*!< Input trigger filter + This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */ + +} TIM_SlaveConfigTypeDef; + +/** + * @brief TIM Break input(s) and Dead time configuration Structure definition + * @note 2 break inputs can be configured (BKIN and BKIN2) with configurable + * filter and polarity. + */ +typedef struct +{ + uint32_t OffStateRunMode; /*!< TIM off state in run mode, This parameter can be a value of @ref TIM_OSSR_Off_State_Selection_for_Run_mode_state */ + + uint32_t OffStateIDLEMode; /*!< TIM off state in IDLE mode, This parameter can be a value of @ref TIM_OSSI_Off_State_Selection_for_Idle_mode_state */ + + uint32_t LockLevel; /*!< TIM Lock level, This parameter can be a value of @ref TIM_Lock_level */ + + uint32_t DeadTime; /*!< TIM dead Time, This parameter can be a number between Min_Data = 0x00 and Max_Data = 0xFF */ + + uint32_t BreakState; /*!< TIM Break State, This parameter can be a value of @ref TIM_Break_Input_enable_disable */ + + uint32_t BreakPolarity; /*!< TIM Break input polarity, This parameter can be a value of @ref TIM_Break_Polarity */ + + uint32_t BreakFilter; /*!< Specifies the break input filter.This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */ + + uint32_t BreakAFMode; /*!< Specifies the alternate function mode of the break input.This parameter can be a value of @ref TIM_Break_Input_AF_Mode */ + + uint32_t Break2State; /*!< TIM Break2 State, This parameter can be a value of @ref TIM_Break2_Input_enable_disable */ + + uint32_t Break2Polarity; /*!< TIM Break2 input polarity, This parameter can be a value of @ref TIM_Break2_Polarity */ + + uint32_t Break2Filter; /*!< TIM break2 input filter.This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */ + + uint32_t Break2AFMode; /*!< Specifies the alternate function mode of the break2 input.This parameter can be a value of @ref TIM_Break2_Input_AF_Mode */ + + uint32_t AutomaticOutput; /*!< TIM Automatic Output Enable state, This parameter can be a value of @ref TIM_AOE_Bit_Set_Reset */ + +} TIM_BreakDeadTimeConfigTypeDef; + +/** + * @brief HAL State structures definition + */ +typedef enum +{ + HAL_TIM_STATE_RESET = 0x00U, /*!< Peripheral not yet initialized or disabled */ + HAL_TIM_STATE_READY = 0x01U, /*!< Peripheral Initialized and ready for use */ + HAL_TIM_STATE_BUSY = 0x02U, /*!< An internal process is ongoing */ + HAL_TIM_STATE_TIMEOUT = 0x03U, /*!< Timeout state */ + HAL_TIM_STATE_ERROR = 0x04U /*!< Reception process is ongoing */ +} HAL_TIM_StateTypeDef; + +/** + * @brief TIM Channel States definition + */ +typedef enum +{ + HAL_TIM_CHANNEL_STATE_RESET = 0x00U, /*!< TIM Channel initial state */ + HAL_TIM_CHANNEL_STATE_READY = 0x01U, /*!< TIM Channel ready for use */ + HAL_TIM_CHANNEL_STATE_BUSY = 0x02U, /*!< An internal process is ongoing on the TIM channel */ +} HAL_TIM_ChannelStateTypeDef; + +/** + * @brief DMA Burst States definition + */ +typedef enum +{ + HAL_DMA_BURST_STATE_RESET = 0x00U, /*!< DMA Burst initial state */ + HAL_DMA_BURST_STATE_READY = 0x01U, /*!< DMA Burst ready for use */ + HAL_DMA_BURST_STATE_BUSY = 0x02U, /*!< Ongoing DMA Burst */ +} HAL_TIM_DMABurstStateTypeDef; + +/** + * @brief HAL Active channel structures definition + */ +typedef enum +{ + HAL_TIM_ACTIVE_CHANNEL_1 = 0x01U, /*!< The active channel is 1 */ + HAL_TIM_ACTIVE_CHANNEL_2 = 0x02U, /*!< The active channel is 2 */ + HAL_TIM_ACTIVE_CHANNEL_3 = 0x04U, /*!< The active channel is 3 */ + HAL_TIM_ACTIVE_CHANNEL_4 = 0x08U, /*!< The active channel is 4 */ + HAL_TIM_ACTIVE_CHANNEL_5 = 0x10U, /*!< The active channel is 5 */ + HAL_TIM_ACTIVE_CHANNEL_6 = 0x20U, /*!< The active channel is 6 */ + HAL_TIM_ACTIVE_CHANNEL_CLEARED = 0x00U /*!< All active channels cleared */ +} HAL_TIM_ActiveChannel; + +/** + * @brief TIM Time Base Handle Structure definition + */ +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) +typedef struct __TIM_HandleTypeDef +#else +typedef struct +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ +{ + TIM_TypeDef *Instance; /*!< Register base address */ + TIM_Base_InitTypeDef Init; /*!< TIM Time Base required parameters */ + HAL_TIM_ActiveChannel Channel; /*!< Active channel */ + DMA_HandleTypeDef *hdma[7]; /*!< DMA Handlers array + This array is accessed by a @ref DMA_Handle_index */ + HAL_LockTypeDef Lock; /*!< Locking object */ + __IO HAL_TIM_StateTypeDef State; /*!< TIM operation state */ + __IO HAL_TIM_ChannelStateTypeDef ChannelState[6]; /*!< TIM channel operation state */ + __IO HAL_TIM_ChannelStateTypeDef ChannelNState[4]; /*!< TIM complementary channel operation state */ + __IO HAL_TIM_DMABurstStateTypeDef DMABurstState; /*!< DMA burst operation state */ + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + void (* Base_MspInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Base Msp Init Callback */ + void (* Base_MspDeInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Base Msp DeInit Callback */ + void (* IC_MspInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM IC Msp Init Callback */ + void (* IC_MspDeInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM IC Msp DeInit Callback */ + void (* OC_MspInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM OC Msp Init Callback */ + void (* OC_MspDeInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM OC Msp DeInit Callback */ + void (* PWM_MspInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM PWM Msp Init Callback */ + void (* PWM_MspDeInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM PWM Msp DeInit Callback */ + void (* OnePulse_MspInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM One Pulse Msp Init Callback */ + void (* OnePulse_MspDeInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM One Pulse Msp DeInit Callback */ + void (* Encoder_MspInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Encoder Msp Init Callback */ + void (* Encoder_MspDeInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Encoder Msp DeInit Callback */ + void (* HallSensor_MspInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Hall Sensor Msp Init Callback */ + void (* HallSensor_MspDeInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Hall Sensor Msp DeInit Callback */ + void (* PeriodElapsedCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Period Elapsed Callback */ + void (* PeriodElapsedHalfCpltCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Period Elapsed half complete Callback */ + void (* TriggerCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Trigger Callback */ + void (* TriggerHalfCpltCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Trigger half complete Callback */ + void (* IC_CaptureCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Input Capture Callback */ + void (* IC_CaptureHalfCpltCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Input Capture half complete Callback */ + void (* OC_DelayElapsedCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Output Compare Delay Elapsed Callback */ + void (* PWM_PulseFinishedCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM PWM Pulse Finished Callback */ + void (* PWM_PulseFinishedHalfCpltCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM PWM Pulse Finished half complete Callback */ + void (* ErrorCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Error Callback */ + void (* CommutationCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Commutation Callback */ + void (* CommutationHalfCpltCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Commutation half complete Callback */ + void (* BreakCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Break Callback */ + void (* Break2Callback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Break2 Callback */ +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ +} TIM_HandleTypeDef; + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) +/** + * @brief HAL TIM Callback ID enumeration definition + */ +typedef enum +{ + HAL_TIM_BASE_MSPINIT_CB_ID = 0x00U /*!< TIM Base MspInit Callback ID */ + , HAL_TIM_BASE_MSPDEINIT_CB_ID = 0x01U /*!< TIM Base MspDeInit Callback ID */ + , HAL_TIM_IC_MSPINIT_CB_ID = 0x02U /*!< TIM IC MspInit Callback ID */ + , HAL_TIM_IC_MSPDEINIT_CB_ID = 0x03U /*!< TIM IC MspDeInit Callback ID */ + , HAL_TIM_OC_MSPINIT_CB_ID = 0x04U /*!< TIM OC MspInit Callback ID */ + , HAL_TIM_OC_MSPDEINIT_CB_ID = 0x05U /*!< TIM OC MspDeInit Callback ID */ + , HAL_TIM_PWM_MSPINIT_CB_ID = 0x06U /*!< TIM PWM MspInit Callback ID */ + , HAL_TIM_PWM_MSPDEINIT_CB_ID = 0x07U /*!< TIM PWM MspDeInit Callback ID */ + , HAL_TIM_ONE_PULSE_MSPINIT_CB_ID = 0x08U /*!< TIM One Pulse MspInit Callback ID */ + , HAL_TIM_ONE_PULSE_MSPDEINIT_CB_ID = 0x09U /*!< TIM One Pulse MspDeInit Callback ID */ + , HAL_TIM_ENCODER_MSPINIT_CB_ID = 0x0AU /*!< TIM Encoder MspInit Callback ID */ + , HAL_TIM_ENCODER_MSPDEINIT_CB_ID = 0x0BU /*!< TIM Encoder MspDeInit Callback ID */ + , HAL_TIM_HALL_SENSOR_MSPINIT_CB_ID = 0x0CU /*!< TIM Hall Sensor MspDeInit Callback ID */ + , HAL_TIM_HALL_SENSOR_MSPDEINIT_CB_ID = 0x0DU /*!< TIM Hall Sensor MspDeInit Callback ID */ + , HAL_TIM_PERIOD_ELAPSED_CB_ID = 0x0EU /*!< TIM Period Elapsed Callback ID */ + , HAL_TIM_PERIOD_ELAPSED_HALF_CB_ID = 0x0FU /*!< TIM Period Elapsed half complete Callback ID */ + , HAL_TIM_TRIGGER_CB_ID = 0x10U /*!< TIM Trigger Callback ID */ + , HAL_TIM_TRIGGER_HALF_CB_ID = 0x11U /*!< TIM Trigger half complete Callback ID */ + + , HAL_TIM_IC_CAPTURE_CB_ID = 0x12U /*!< TIM Input Capture Callback ID */ + , HAL_TIM_IC_CAPTURE_HALF_CB_ID = 0x13U /*!< TIM Input Capture half complete Callback ID */ + , HAL_TIM_OC_DELAY_ELAPSED_CB_ID = 0x14U /*!< TIM Output Compare Delay Elapsed Callback ID */ + , HAL_TIM_PWM_PULSE_FINISHED_CB_ID = 0x15U /*!< TIM PWM Pulse Finished Callback ID */ + , HAL_TIM_PWM_PULSE_FINISHED_HALF_CB_ID = 0x16U /*!< TIM PWM Pulse Finished half complete Callback ID */ + , HAL_TIM_ERROR_CB_ID = 0x17U /*!< TIM Error Callback ID */ + , HAL_TIM_COMMUTATION_CB_ID = 0x18U /*!< TIM Commutation Callback ID */ + , HAL_TIM_COMMUTATION_HALF_CB_ID = 0x19U /*!< TIM Commutation half complete Callback ID */ + , HAL_TIM_BREAK_CB_ID = 0x1AU /*!< TIM Break Callback ID */ + , HAL_TIM_BREAK2_CB_ID = 0x1BU /*!< TIM Break2 Callback ID */ +} HAL_TIM_CallbackIDTypeDef; + +/** + * @brief HAL TIM Callback pointer definition + */ +typedef void (*pTIM_CallbackTypeDef)(TIM_HandleTypeDef *htim); /*!< pointer to the TIM callback function */ + +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + +/** + * @} + */ +/* End of exported types -----------------------------------------------------*/ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup TIM_Exported_Constants TIM Exported Constants + * @{ + */ + +/** @defgroup TIM_ClearInput_Source TIM Clear Input Source + * @{ + */ +#define TIM_CLEARINPUTSOURCE_NONE 0x10000000U /*!< OCREF_CLR is disabled */ +#define TIM_CLEARINPUTSOURCE_ETR 0x20000000U /*!< OCREF_CLR is connected to ETRF input */ +#if defined(COMP1) && defined(COMP2) && defined(COMP3) +#define TIM_CLEARINPUTSOURCE_COMP1 0x00000000U /*!< OCREF_CLR_INT is connected to COMP1 output */ +#define TIM_CLEARINPUTSOURCE_COMP2 TIM1_OR1_OCREF_CLR_0 /*!< OCREF_CLR_INT is connected to COMP2 output */ +#define TIM_CLEARINPUTSOURCE_COMP3 TIM1_OR1_OCREF_CLR_1 /*!< OCREF_CLR_INT is connected to COMP3 output */ +#elif defined(COMP1) && defined(COMP2) +#define TIM_CLEARINPUTSOURCE_COMP1 0x00000000U /*!< OCREF_CLR_INT is connected to COMP1 output */ +#define TIM_CLEARINPUTSOURCE_COMP2 TIM1_OR1_OCREF_CLR /*!< OCREF_CLR_INT is connected to COMP2 output */ +#endif /* COMP1 && COMP2 && COMP3 */ +/** + * @} + */ + +/** @defgroup TIM_DMA_Base_address TIM DMA Base Address + * @{ + */ +#define TIM_DMABASE_CR1 0x00000000U +#define TIM_DMABASE_CR2 0x00000001U +#define TIM_DMABASE_SMCR 0x00000002U +#define TIM_DMABASE_DIER 0x00000003U +#define TIM_DMABASE_SR 0x00000004U +#define TIM_DMABASE_EGR 0x00000005U +#define TIM_DMABASE_CCMR1 0x00000006U +#define TIM_DMABASE_CCMR2 0x00000007U +#define TIM_DMABASE_CCER 0x00000008U +#define TIM_DMABASE_CNT 0x00000009U +#define TIM_DMABASE_PSC 0x0000000AU +#define TIM_DMABASE_ARR 0x0000000BU +#define TIM_DMABASE_RCR 0x0000000CU +#define TIM_DMABASE_CCR1 0x0000000DU +#define TIM_DMABASE_CCR2 0x0000000EU +#define TIM_DMABASE_CCR3 0x0000000FU +#define TIM_DMABASE_CCR4 0x00000010U +#define TIM_DMABASE_BDTR 0x00000011U +#define TIM_DMABASE_DCR 0x00000012U +#define TIM_DMABASE_DMAR 0x00000013U +#define TIM_DMABASE_OR1 0x00000014U +#define TIM_DMABASE_CCMR3 0x00000015U +#define TIM_DMABASE_CCR5 0x00000016U +#define TIM_DMABASE_CCR6 0x00000017U +#define TIM_DMABASE_AF1 0x00000018U +#define TIM_DMABASE_AF2 0x00000019U +#define TIM_DMABASE_TISEL 0x0000001AU +/** + * @} + */ + +/** @defgroup TIM_Event_Source TIM Event Source + * @{ + */ +#define TIM_EVENTSOURCE_UPDATE TIM_EGR_UG /*!< Reinitialize the counter and generates an update of the registers */ +#define TIM_EVENTSOURCE_CC1 TIM_EGR_CC1G /*!< A capture/compare event is generated on channel 1 */ +#define TIM_EVENTSOURCE_CC2 TIM_EGR_CC2G /*!< A capture/compare event is generated on channel 2 */ +#define TIM_EVENTSOURCE_CC3 TIM_EGR_CC3G /*!< A capture/compare event is generated on channel 3 */ +#define TIM_EVENTSOURCE_CC4 TIM_EGR_CC4G /*!< A capture/compare event is generated on channel 4 */ +#define TIM_EVENTSOURCE_COM TIM_EGR_COMG /*!< A commutation event is generated */ +#define TIM_EVENTSOURCE_TRIGGER TIM_EGR_TG /*!< A trigger event is generated */ +#define TIM_EVENTSOURCE_BREAK TIM_EGR_BG /*!< A break event is generated */ +#define TIM_EVENTSOURCE_BREAK2 TIM_EGR_B2G /*!< A break 2 event is generated */ +/** + * @} + */ + +/** @defgroup TIM_Input_Channel_Polarity TIM Input Channel polarity + * @{ + */ +#define TIM_INPUTCHANNELPOLARITY_RISING 0x00000000U /*!< Polarity for TIx source */ +#define TIM_INPUTCHANNELPOLARITY_FALLING TIM_CCER_CC1P /*!< Polarity for TIx source */ +#define TIM_INPUTCHANNELPOLARITY_BOTHEDGE (TIM_CCER_CC1P | TIM_CCER_CC1NP) /*!< Polarity for TIx source */ +/** + * @} + */ + +/** @defgroup TIM_ETR_Polarity TIM ETR Polarity + * @{ + */ +#define TIM_ETRPOLARITY_INVERTED TIM_SMCR_ETP /*!< Polarity for ETR source */ +#define TIM_ETRPOLARITY_NONINVERTED 0x00000000U /*!< Polarity for ETR source */ +/** + * @} + */ + +/** @defgroup TIM_ETR_Prescaler TIM ETR Prescaler + * @{ + */ +#define TIM_ETRPRESCALER_DIV1 0x00000000U /*!< No prescaler is used */ +#define TIM_ETRPRESCALER_DIV2 TIM_SMCR_ETPS_0 /*!< ETR input source is divided by 2 */ +#define TIM_ETRPRESCALER_DIV4 TIM_SMCR_ETPS_1 /*!< ETR input source is divided by 4 */ +#define TIM_ETRPRESCALER_DIV8 TIM_SMCR_ETPS /*!< ETR input source is divided by 8 */ +/** + * @} + */ + +/** @defgroup TIM_Counter_Mode TIM Counter Mode + * @{ + */ +#define TIM_COUNTERMODE_UP 0x00000000U /*!< Counter used as up-counter */ +#define TIM_COUNTERMODE_DOWN TIM_CR1_DIR /*!< Counter used as down-counter */ +#define TIM_COUNTERMODE_CENTERALIGNED1 TIM_CR1_CMS_0 /*!< Center-aligned mode 1 */ +#define TIM_COUNTERMODE_CENTERALIGNED2 TIM_CR1_CMS_1 /*!< Center-aligned mode 2 */ +#define TIM_COUNTERMODE_CENTERALIGNED3 TIM_CR1_CMS /*!< Center-aligned mode 3 */ +/** + * @} + */ + +/** @defgroup TIM_Update_Interrupt_Flag_Remap TIM Update Interrupt Flag Remap + * @{ + */ +#define TIM_UIFREMAP_DISABLE 0x00000000U /*!< Update interrupt flag remap disabled */ +#define TIM_UIFREMAP_ENABLE TIM_CR1_UIFREMAP /*!< Update interrupt flag remap enabled */ +/** + * @} + */ + +/** @defgroup TIM_ClockDivision TIM Clock Division + * @{ + */ +#define TIM_CLOCKDIVISION_DIV1 0x00000000U /*!< Clock division: tDTS=tCK_INT */ +#define TIM_CLOCKDIVISION_DIV2 TIM_CR1_CKD_0 /*!< Clock division: tDTS=2*tCK_INT */ +#define TIM_CLOCKDIVISION_DIV4 TIM_CR1_CKD_1 /*!< Clock division: tDTS=4*tCK_INT */ +/** + * @} + */ + +/** @defgroup TIM_Output_Compare_State TIM Output Compare State + * @{ + */ +#define TIM_OUTPUTSTATE_DISABLE 0x00000000U /*!< Capture/Compare 1 output disabled */ +#define TIM_OUTPUTSTATE_ENABLE TIM_CCER_CC1E /*!< Capture/Compare 1 output enabled */ +/** + * @} + */ + +/** @defgroup TIM_AutoReloadPreload TIM Auto-Reload Preload + * @{ + */ +#define TIM_AUTORELOAD_PRELOAD_DISABLE 0x00000000U /*!< TIMx_ARR register is not buffered */ +#define TIM_AUTORELOAD_PRELOAD_ENABLE TIM_CR1_ARPE /*!< TIMx_ARR register is buffered */ + +/** + * @} + */ + +/** @defgroup TIM_Output_Fast_State TIM Output Fast State + * @{ + */ +#define TIM_OCFAST_DISABLE 0x00000000U /*!< Output Compare fast disable */ +#define TIM_OCFAST_ENABLE TIM_CCMR1_OC1FE /*!< Output Compare fast enable */ +/** + * @} + */ + +/** @defgroup TIM_Output_Compare_N_State TIM Complementary Output Compare State + * @{ + */ +#define TIM_OUTPUTNSTATE_DISABLE 0x00000000U /*!< OCxN is disabled */ +#define TIM_OUTPUTNSTATE_ENABLE TIM_CCER_CC1NE /*!< OCxN is enabled */ +/** + * @} + */ + +/** @defgroup TIM_Output_Compare_Polarity TIM Output Compare Polarity + * @{ + */ +#define TIM_OCPOLARITY_HIGH 0x00000000U /*!< Capture/Compare output polarity */ +#define TIM_OCPOLARITY_LOW TIM_CCER_CC1P /*!< Capture/Compare output polarity */ +/** + * @} + */ + +/** @defgroup TIM_Output_Compare_N_Polarity TIM Complementary Output Compare Polarity + * @{ + */ +#define TIM_OCNPOLARITY_HIGH 0x00000000U /*!< Capture/Compare complementary output polarity */ +#define TIM_OCNPOLARITY_LOW TIM_CCER_CC1NP /*!< Capture/Compare complementary output polarity */ +/** + * @} + */ + +/** @defgroup TIM_Output_Compare_Idle_State TIM Output Compare Idle State + * @{ + */ +#define TIM_OCIDLESTATE_SET TIM_CR2_OIS1 /*!< Output Idle state: OCx=1 when MOE=0 */ +#define TIM_OCIDLESTATE_RESET 0x00000000U /*!< Output Idle state: OCx=0 when MOE=0 */ +/** + * @} + */ + +/** @defgroup TIM_Output_Compare_N_Idle_State TIM Complementary Output Compare Idle State + * @{ + */ +#define TIM_OCNIDLESTATE_SET TIM_CR2_OIS1N /*!< Complementary output Idle state: OCxN=1 when MOE=0 */ +#define TIM_OCNIDLESTATE_RESET 0x00000000U /*!< Complementary output Idle state: OCxN=0 when MOE=0 */ +/** + * @} + */ + +/** @defgroup TIM_Input_Capture_Polarity TIM Input Capture Polarity + * @{ + */ +#define TIM_ICPOLARITY_RISING TIM_INPUTCHANNELPOLARITY_RISING /*!< Capture triggered by rising edge on timer input */ +#define TIM_ICPOLARITY_FALLING TIM_INPUTCHANNELPOLARITY_FALLING /*!< Capture triggered by falling edge on timer input */ +#define TIM_ICPOLARITY_BOTHEDGE TIM_INPUTCHANNELPOLARITY_BOTHEDGE /*!< Capture triggered by both rising and falling edges on timer input*/ +/** + * @} + */ + +/** @defgroup TIM_Encoder_Input_Polarity TIM Encoder Input Polarity + * @{ + */ +#define TIM_ENCODERINPUTPOLARITY_RISING TIM_INPUTCHANNELPOLARITY_RISING /*!< Encoder input with rising edge polarity */ +#define TIM_ENCODERINPUTPOLARITY_FALLING TIM_INPUTCHANNELPOLARITY_FALLING /*!< Encoder input with falling edge polarity */ +/** + * @} + */ + +/** @defgroup TIM_Input_Capture_Selection TIM Input Capture Selection + * @{ + */ +#define TIM_ICSELECTION_DIRECTTI TIM_CCMR1_CC1S_0 /*!< TIM Input 1, 2, 3 or 4 is selected to be connected to IC1, IC2, IC3 or IC4, respectively */ +#define TIM_ICSELECTION_INDIRECTTI TIM_CCMR1_CC1S_1 /*!< TIM Input 1, 2, 3 or 4 is selected to be connected to IC2, IC1, IC4 or IC3, respectively */ +#define TIM_ICSELECTION_TRC TIM_CCMR1_CC1S /*!< TIM Input 1, 2, 3 or 4 is selected to be connected to TRC */ +/** + * @} + */ + +/** @defgroup TIM_Input_Capture_Prescaler TIM Input Capture Prescaler + * @{ + */ +#define TIM_ICPSC_DIV1 0x00000000U /*!< Capture performed each time an edge is detected on the capture input */ +#define TIM_ICPSC_DIV2 TIM_CCMR1_IC1PSC_0 /*!< Capture performed once every 2 events */ +#define TIM_ICPSC_DIV4 TIM_CCMR1_IC1PSC_1 /*!< Capture performed once every 4 events */ +#define TIM_ICPSC_DIV8 TIM_CCMR1_IC1PSC /*!< Capture performed once every 8 events */ +/** + * @} + */ + +/** @defgroup TIM_One_Pulse_Mode TIM One Pulse Mode + * @{ + */ +#define TIM_OPMODE_SINGLE TIM_CR1_OPM /*!< Counter stops counting at the next update event */ +#define TIM_OPMODE_REPETITIVE 0x00000000U /*!< Counter is not stopped at update event */ +/** + * @} + */ + +/** @defgroup TIM_Encoder_Mode TIM Encoder Mode + * @{ + */ +#define TIM_ENCODERMODE_TI1 TIM_SMCR_SMS_0 /*!< Quadrature encoder mode 1, x2 mode, counts up/down on TI1FP1 edge depending on TI2FP2 level */ +#define TIM_ENCODERMODE_TI2 TIM_SMCR_SMS_1 /*!< Quadrature encoder mode 2, x2 mode, counts up/down on TI2FP2 edge depending on TI1FP1 level. */ +#define TIM_ENCODERMODE_TI12 (TIM_SMCR_SMS_1 | TIM_SMCR_SMS_0) /*!< Quadrature encoder mode 3, x4 mode, counts up/down on both TI1FP1 and TI2FP2 edges depending on the level of the other input. */ +/** + * @} + */ + +/** @defgroup TIM_Interrupt_definition TIM interrupt Definition + * @{ + */ +#define TIM_IT_UPDATE TIM_DIER_UIE /*!< Update interrupt */ +#define TIM_IT_CC1 TIM_DIER_CC1IE /*!< Capture/Compare 1 interrupt */ +#define TIM_IT_CC2 TIM_DIER_CC2IE /*!< Capture/Compare 2 interrupt */ +#define TIM_IT_CC3 TIM_DIER_CC3IE /*!< Capture/Compare 3 interrupt */ +#define TIM_IT_CC4 TIM_DIER_CC4IE /*!< Capture/Compare 4 interrupt */ +#define TIM_IT_COM TIM_DIER_COMIE /*!< Commutation interrupt */ +#define TIM_IT_TRIGGER TIM_DIER_TIE /*!< Trigger interrupt */ +#define TIM_IT_BREAK TIM_DIER_BIE /*!< Break interrupt */ +/** + * @} + */ + +/** @defgroup TIM_Commutation_Source TIM Commutation Source + * @{ + */ +#define TIM_COMMUTATION_TRGI TIM_CR2_CCUS /*!< When Capture/compare control bits are preloaded, they are updated by setting the COMG bit or when an rising edge occurs on trigger input */ +#define TIM_COMMUTATION_SOFTWARE 0x00000000U /*!< When Capture/compare control bits are preloaded, they are updated by setting the COMG bit */ +/** + * @} + */ + +/** @defgroup TIM_DMA_sources TIM DMA Sources + * @{ + */ +#define TIM_DMA_UPDATE TIM_DIER_UDE /*!< DMA request is triggered by the update event */ +#define TIM_DMA_CC1 TIM_DIER_CC1DE /*!< DMA request is triggered by the capture/compare macth 1 event */ +#define TIM_DMA_CC2 TIM_DIER_CC2DE /*!< DMA request is triggered by the capture/compare macth 2 event event */ +#define TIM_DMA_CC3 TIM_DIER_CC3DE /*!< DMA request is triggered by the capture/compare macth 3 event event */ +#define TIM_DMA_CC4 TIM_DIER_CC4DE /*!< DMA request is triggered by the capture/compare macth 4 event event */ +#define TIM_DMA_COM TIM_DIER_COMDE /*!< DMA request is triggered by the commutation event */ +#define TIM_DMA_TRIGGER TIM_DIER_TDE /*!< DMA request is triggered by the trigger event */ +/** + * @} + */ + +/** @defgroup TIM_CC_DMA_Request CCx DMA request selection + * @{ + */ +#define TIM_CCDMAREQUEST_CC 0x00000000U /*!< CCx DMA request sent when capture or compare match event occurs */ +#define TIM_CCDMAREQUEST_UPDATE TIM_CR2_CCDS /*!< CCx DMA requests sent when update event occurs */ +/** + * @} + */ + +/** @defgroup TIM_Flag_definition TIM Flag Definition + * @{ + */ +#define TIM_FLAG_UPDATE TIM_SR_UIF /*!< Update interrupt flag */ +#define TIM_FLAG_CC1 TIM_SR_CC1IF /*!< Capture/Compare 1 interrupt flag */ +#define TIM_FLAG_CC2 TIM_SR_CC2IF /*!< Capture/Compare 2 interrupt flag */ +#define TIM_FLAG_CC3 TIM_SR_CC3IF /*!< Capture/Compare 3 interrupt flag */ +#define TIM_FLAG_CC4 TIM_SR_CC4IF /*!< Capture/Compare 4 interrupt flag */ +#define TIM_FLAG_CC5 TIM_SR_CC5IF /*!< Capture/Compare 5 interrupt flag */ +#define TIM_FLAG_CC6 TIM_SR_CC6IF /*!< Capture/Compare 6 interrupt flag */ +#define TIM_FLAG_COM TIM_SR_COMIF /*!< Commutation interrupt flag */ +#define TIM_FLAG_TRIGGER TIM_SR_TIF /*!< Trigger interrupt flag */ +#define TIM_FLAG_BREAK TIM_SR_BIF /*!< Break interrupt flag */ +#define TIM_FLAG_BREAK2 TIM_SR_B2IF /*!< Break 2 interrupt flag */ +#define TIM_FLAG_SYSTEM_BREAK TIM_SR_SBIF /*!< System Break interrupt flag */ +#define TIM_FLAG_CC1OF TIM_SR_CC1OF /*!< Capture 1 overcapture flag */ +#define TIM_FLAG_CC2OF TIM_SR_CC2OF /*!< Capture 2 overcapture flag */ +#define TIM_FLAG_CC3OF TIM_SR_CC3OF /*!< Capture 3 overcapture flag */ +#define TIM_FLAG_CC4OF TIM_SR_CC4OF /*!< Capture 4 overcapture flag */ +/** + * @} + */ + +/** @defgroup TIM_Channel TIM Channel + * @{ + */ +#define TIM_CHANNEL_1 0x00000000U /*!< Capture/compare channel 1 identifier */ +#define TIM_CHANNEL_2 0x00000004U /*!< Capture/compare channel 2 identifier */ +#define TIM_CHANNEL_3 0x00000008U /*!< Capture/compare channel 3 identifier */ +#define TIM_CHANNEL_4 0x0000000CU /*!< Capture/compare channel 4 identifier */ +#define TIM_CHANNEL_5 0x00000010U /*!< Compare channel 5 identifier */ +#define TIM_CHANNEL_6 0x00000014U /*!< Compare channel 6 identifier */ +#define TIM_CHANNEL_ALL 0x0000003CU /*!< Global Capture/compare channel identifier */ +/** + * @} + */ + +/** @defgroup TIM_Clock_Source TIM Clock Source + * @{ + */ +#define TIM_CLOCKSOURCE_INTERNAL TIM_SMCR_ETPS_0 /*!< Internal clock source */ +#define TIM_CLOCKSOURCE_ETRMODE1 TIM_TS_ETRF /*!< External clock source mode 1 (ETRF) */ +#define TIM_CLOCKSOURCE_ETRMODE2 TIM_SMCR_ETPS_1 /*!< External clock source mode 2 */ +#define TIM_CLOCKSOURCE_TI1ED TIM_TS_TI1F_ED /*!< External clock source mode 1 (TTI1FP1 + edge detect.) */ +#define TIM_CLOCKSOURCE_TI1 TIM_TS_TI1FP1 /*!< External clock source mode 1 (TTI1FP1) */ +#define TIM_CLOCKSOURCE_TI2 TIM_TS_TI2FP2 /*!< External clock source mode 1 (TTI2FP2) */ +#define TIM_CLOCKSOURCE_ITR0 TIM_TS_ITR0 /*!< External clock source mode 1 (ITR0) */ +#define TIM_CLOCKSOURCE_ITR1 TIM_TS_ITR1 /*!< External clock source mode 1 (ITR1) */ +#define TIM_CLOCKSOURCE_ITR2 TIM_TS_ITR2 /*!< External clock source mode 1 (ITR2) */ +#define TIM_CLOCKSOURCE_ITR3 TIM_TS_ITR3 /*!< External clock source mode 1 (ITR3) */ +#if defined(USB_BASE) +#define TIM_CLOCKSOURCE_ITR7 TIM_TS_ITR7 /*!< External clock source mode 1 (ITR7) */ +#endif /* USB_BASE */ +/** + * @} + */ + +/** @defgroup TIM_Clock_Polarity TIM Clock Polarity + * @{ + */ +#define TIM_CLOCKPOLARITY_INVERTED TIM_ETRPOLARITY_INVERTED /*!< Polarity for ETRx clock sources */ +#define TIM_CLOCKPOLARITY_NONINVERTED TIM_ETRPOLARITY_NONINVERTED /*!< Polarity for ETRx clock sources */ +#define TIM_CLOCKPOLARITY_RISING TIM_INPUTCHANNELPOLARITY_RISING /*!< Polarity for TIx clock sources */ +#define TIM_CLOCKPOLARITY_FALLING TIM_INPUTCHANNELPOLARITY_FALLING /*!< Polarity for TIx clock sources */ +#define TIM_CLOCKPOLARITY_BOTHEDGE TIM_INPUTCHANNELPOLARITY_BOTHEDGE /*!< Polarity for TIx clock sources */ +/** + * @} + */ + +/** @defgroup TIM_Clock_Prescaler TIM Clock Prescaler + * @{ + */ +#define TIM_CLOCKPRESCALER_DIV1 TIM_ETRPRESCALER_DIV1 /*!< No prescaler is used */ +#define TIM_CLOCKPRESCALER_DIV2 TIM_ETRPRESCALER_DIV2 /*!< Prescaler for External ETR Clock: Capture performed once every 2 events. */ +#define TIM_CLOCKPRESCALER_DIV4 TIM_ETRPRESCALER_DIV4 /*!< Prescaler for External ETR Clock: Capture performed once every 4 events. */ +#define TIM_CLOCKPRESCALER_DIV8 TIM_ETRPRESCALER_DIV8 /*!< Prescaler for External ETR Clock: Capture performed once every 8 events. */ +/** + * @} + */ + +/** @defgroup TIM_ClearInput_Polarity TIM Clear Input Polarity + * @{ + */ +#define TIM_CLEARINPUTPOLARITY_INVERTED TIM_ETRPOLARITY_INVERTED /*!< Polarity for ETRx pin */ +#define TIM_CLEARINPUTPOLARITY_NONINVERTED TIM_ETRPOLARITY_NONINVERTED /*!< Polarity for ETRx pin */ +/** + * @} + */ + +/** @defgroup TIM_ClearInput_Prescaler TIM Clear Input Prescaler + * @{ + */ +#define TIM_CLEARINPUTPRESCALER_DIV1 TIM_ETRPRESCALER_DIV1 /*!< No prescaler is used */ +#define TIM_CLEARINPUTPRESCALER_DIV2 TIM_ETRPRESCALER_DIV2 /*!< Prescaler for External ETR pin: Capture performed once every 2 events. */ +#define TIM_CLEARINPUTPRESCALER_DIV4 TIM_ETRPRESCALER_DIV4 /*!< Prescaler for External ETR pin: Capture performed once every 4 events. */ +#define TIM_CLEARINPUTPRESCALER_DIV8 TIM_ETRPRESCALER_DIV8 /*!< Prescaler for External ETR pin: Capture performed once every 8 events. */ +/** + * @} + */ + +/** @defgroup TIM_OSSR_Off_State_Selection_for_Run_mode_state TIM OSSR OffState Selection for Run mode state + * @{ + */ +#define TIM_OSSR_ENABLE TIM_BDTR_OSSR /*!< When inactive, OC/OCN outputs are enabled (still controlled by the timer) */ +#define TIM_OSSR_DISABLE 0x00000000U /*!< When inactive, OC/OCN outputs are disabled (not controlled any longer by the timer) */ +/** + * @} + */ + +/** @defgroup TIM_OSSI_Off_State_Selection_for_Idle_mode_state TIM OSSI OffState Selection for Idle mode state + * @{ + */ +#define TIM_OSSI_ENABLE TIM_BDTR_OSSI /*!< When inactive, OC/OCN outputs are enabled (still controlled by the timer) */ +#define TIM_OSSI_DISABLE 0x00000000U /*!< When inactive, OC/OCN outputs are disabled (not controlled any longer by the timer) */ +/** + * @} + */ +/** @defgroup TIM_Lock_level TIM Lock level + * @{ + */ +#define TIM_LOCKLEVEL_OFF 0x00000000U /*!< LOCK OFF */ +#define TIM_LOCKLEVEL_1 TIM_BDTR_LOCK_0 /*!< LOCK Level 1 */ +#define TIM_LOCKLEVEL_2 TIM_BDTR_LOCK_1 /*!< LOCK Level 2 */ +#define TIM_LOCKLEVEL_3 TIM_BDTR_LOCK /*!< LOCK Level 3 */ +/** + * @} + */ + +/** @defgroup TIM_Break_Input_enable_disable TIM Break Input Enable + * @{ + */ +#define TIM_BREAK_ENABLE TIM_BDTR_BKE /*!< Break input BRK is enabled */ +#define TIM_BREAK_DISABLE 0x00000000U /*!< Break input BRK is disabled */ +/** + * @} + */ + +/** @defgroup TIM_Break_Polarity TIM Break Input Polarity + * @{ + */ +#define TIM_BREAKPOLARITY_LOW 0x00000000U /*!< Break input BRK is active low */ +#define TIM_BREAKPOLARITY_HIGH TIM_BDTR_BKP /*!< Break input BRK is active high */ +/** + * @} + */ + +/** @defgroup TIM_Break_Input_AF_Mode TIM Break Input Alternate Function Mode + * @{ + */ +#define TIM_BREAK_AFMODE_INPUT 0x00000000U /*!< Break input BRK in input mode */ +#define TIM_BREAK_AFMODE_BIDIRECTIONAL TIM_BDTR_BKBID /*!< Break input BRK in bidirectional mode */ +/** + * @} + */ + +/** @defgroup TIM_Break2_Input_enable_disable TIM Break input 2 Enable + * @{ + */ +#define TIM_BREAK2_DISABLE 0x00000000U /*!< Break input BRK2 is disabled */ +#define TIM_BREAK2_ENABLE TIM_BDTR_BK2E /*!< Break input BRK2 is enabled */ +/** + * @} + */ + +/** @defgroup TIM_Break2_Polarity TIM Break Input 2 Polarity + * @{ + */ +#define TIM_BREAK2POLARITY_LOW 0x00000000U /*!< Break input BRK2 is active low */ +#define TIM_BREAK2POLARITY_HIGH TIM_BDTR_BK2P /*!< Break input BRK2 is active high */ +/** + * @} + */ + +/** @defgroup TIM_Break2_Input_AF_Mode TIM Break2 Input Alternate Function Mode + * @{ + */ +#define TIM_BREAK2_AFMODE_INPUT 0x00000000U /*!< Break2 input BRK2 in input mode */ +#define TIM_BREAK2_AFMODE_BIDIRECTIONAL TIM_BDTR_BK2BID /*!< Break2 input BRK2 in bidirectional mode */ +/** + * @} + */ + +/** @defgroup TIM_AOE_Bit_Set_Reset TIM Automatic Output Enable + * @{ + */ +#define TIM_AUTOMATICOUTPUT_DISABLE 0x00000000U /*!< MOE can be set only by software */ +#define TIM_AUTOMATICOUTPUT_ENABLE TIM_BDTR_AOE /*!< MOE can be set by software or automatically at the next update event (if none of the break inputs BRK and BRK2 is active) */ +/** + * @} + */ + +/** @defgroup TIM_Group_Channel5 TIM Group Channel 5 and Channel 1, 2 or 3 + * @{ + */ +#define TIM_GROUPCH5_NONE 0x00000000U /*!< No effect of OC5REF on OC1REFC, OC2REFC and OC3REFC */ +#define TIM_GROUPCH5_OC1REFC TIM_CCR5_GC5C1 /*!< OC1REFC is the logical AND of OC1REFC and OC5REF */ +#define TIM_GROUPCH5_OC2REFC TIM_CCR5_GC5C2 /*!< OC2REFC is the logical AND of OC2REFC and OC5REF */ +#define TIM_GROUPCH5_OC3REFC TIM_CCR5_GC5C3 /*!< OC3REFC is the logical AND of OC3REFC and OC5REF */ +/** + * @} + */ + +/** @defgroup TIM_Master_Mode_Selection TIM Master Mode Selection + * @{ + */ +#define TIM_TRGO_RESET 0x00000000U /*!< TIMx_EGR.UG bit is used as trigger output (TRGO) */ +#define TIM_TRGO_ENABLE TIM_CR2_MMS_0 /*!< TIMx_CR1.CEN bit is used as trigger output (TRGO) */ +#define TIM_TRGO_UPDATE TIM_CR2_MMS_1 /*!< Update event is used as trigger output (TRGO) */ +#define TIM_TRGO_OC1 (TIM_CR2_MMS_1 | TIM_CR2_MMS_0) /*!< Capture or a compare match 1 is used as trigger output (TRGO) */ +#define TIM_TRGO_OC1REF TIM_CR2_MMS_2 /*!< OC1REF signal is used as trigger output (TRGO) */ +#define TIM_TRGO_OC2REF (TIM_CR2_MMS_2 | TIM_CR2_MMS_0) /*!< OC2REF signal is used as trigger output(TRGO) */ +#define TIM_TRGO_OC3REF (TIM_CR2_MMS_2 | TIM_CR2_MMS_1) /*!< OC3REF signal is used as trigger output(TRGO) */ +#define TIM_TRGO_OC4REF (TIM_CR2_MMS_2 | TIM_CR2_MMS_1 | TIM_CR2_MMS_0) /*!< OC4REF signal is used as trigger output(TRGO) */ +/** + * @} + */ + +/** @defgroup TIM_Master_Mode_Selection_2 TIM Master Mode Selection 2 (TRGO2) + * @{ + */ +#define TIM_TRGO2_RESET 0x00000000U /*!< TIMx_EGR.UG bit is used as trigger output (TRGO2) */ +#define TIM_TRGO2_ENABLE TIM_CR2_MMS2_0 /*!< TIMx_CR1.CEN bit is used as trigger output (TRGO2) */ +#define TIM_TRGO2_UPDATE TIM_CR2_MMS2_1 /*!< Update event is used as trigger output (TRGO2) */ +#define TIM_TRGO2_OC1 (TIM_CR2_MMS2_1 | TIM_CR2_MMS2_0) /*!< Capture or a compare match 1 is used as trigger output (TRGO2) */ +#define TIM_TRGO2_OC1REF TIM_CR2_MMS2_2 /*!< OC1REF signal is used as trigger output (TRGO2) */ +#define TIM_TRGO2_OC2REF (TIM_CR2_MMS2_2 | TIM_CR2_MMS2_0) /*!< OC2REF signal is used as trigger output (TRGO2) */ +#define TIM_TRGO2_OC3REF (TIM_CR2_MMS2_2 | TIM_CR2_MMS2_1) /*!< OC3REF signal is used as trigger output (TRGO2) */ +#define TIM_TRGO2_OC4REF (TIM_CR2_MMS2_2 | TIM_CR2_MMS2_1 | TIM_CR2_MMS2_0) /*!< OC4REF signal is used as trigger output (TRGO2) */ +#define TIM_TRGO2_OC5REF TIM_CR2_MMS2_3 /*!< OC5REF signal is used as trigger output (TRGO2) */ +#define TIM_TRGO2_OC6REF (TIM_CR2_MMS2_3 | TIM_CR2_MMS2_0) /*!< OC6REF signal is used as trigger output (TRGO2) */ +#define TIM_TRGO2_OC4REF_RISINGFALLING (TIM_CR2_MMS2_3 | TIM_CR2_MMS2_1) /*!< OC4REF rising or falling edges generate pulses on TRGO2 */ +#define TIM_TRGO2_OC6REF_RISINGFALLING (TIM_CR2_MMS2_3 | TIM_CR2_MMS2_1 | TIM_CR2_MMS2_0) /*!< OC6REF rising or falling edges generate pulses on TRGO2 */ +#define TIM_TRGO2_OC4REF_RISING_OC6REF_RISING (TIM_CR2_MMS2_3 | TIM_CR2_MMS2_2) /*!< OC4REF or OC6REF rising edges generate pulses on TRGO2 */ +#define TIM_TRGO2_OC4REF_RISING_OC6REF_FALLING (TIM_CR2_MMS2_3 | TIM_CR2_MMS2_2 | TIM_CR2_MMS2_0) /*!< OC4REF rising or OC6REF falling edges generate pulses on TRGO2 */ +#define TIM_TRGO2_OC5REF_RISING_OC6REF_RISING (TIM_CR2_MMS2_3 | TIM_CR2_MMS2_2 |TIM_CR2_MMS2_1) /*!< OC5REF or OC6REF rising edges generate pulses on TRGO2 */ +#define TIM_TRGO2_OC5REF_RISING_OC6REF_FALLING (TIM_CR2_MMS2_3 | TIM_CR2_MMS2_2 | TIM_CR2_MMS2_1 | TIM_CR2_MMS2_0) /*!< OC5REF or OC6REF rising edges generate pulses on TRGO2 */ +/** + * @} + */ + +/** @defgroup TIM_Master_Slave_Mode TIM Master/Slave Mode + * @{ + */ +#define TIM_MASTERSLAVEMODE_ENABLE TIM_SMCR_MSM /*!< No action */ +#define TIM_MASTERSLAVEMODE_DISABLE 0x00000000U /*!< Master/slave mode is selected */ +/** + * @} + */ + +/** @defgroup TIM_Slave_Mode TIM Slave mode + * @{ + */ +#define TIM_SLAVEMODE_DISABLE 0x00000000U /*!< Slave mode disabled */ +#define TIM_SLAVEMODE_RESET TIM_SMCR_SMS_2 /*!< Reset Mode */ +#define TIM_SLAVEMODE_GATED (TIM_SMCR_SMS_2 | TIM_SMCR_SMS_0) /*!< Gated Mode */ +#define TIM_SLAVEMODE_TRIGGER (TIM_SMCR_SMS_2 | TIM_SMCR_SMS_1) /*!< Trigger Mode */ +#define TIM_SLAVEMODE_EXTERNAL1 (TIM_SMCR_SMS_2 | TIM_SMCR_SMS_1 | TIM_SMCR_SMS_0) /*!< External Clock Mode 1 */ +#define TIM_SLAVEMODE_COMBINED_RESETTRIGGER TIM_SMCR_SMS_3 /*!< Combined reset + trigger mode */ +/** + * @} + */ + +/** @defgroup TIM_Output_Compare_and_PWM_modes TIM Output Compare and PWM Modes + * @{ + */ +#define TIM_OCMODE_TIMING 0x00000000U /*!< Frozen */ +#define TIM_OCMODE_ACTIVE TIM_CCMR1_OC1M_0 /*!< Set channel to active level on match */ +#define TIM_OCMODE_INACTIVE TIM_CCMR1_OC1M_1 /*!< Set channel to inactive level on match */ +#define TIM_OCMODE_TOGGLE (TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_0) /*!< Toggle */ +#define TIM_OCMODE_PWM1 (TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1) /*!< PWM mode 1 */ +#define TIM_OCMODE_PWM2 (TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_0) /*!< PWM mode 2 */ +#define TIM_OCMODE_FORCED_ACTIVE (TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_0) /*!< Force active level */ +#define TIM_OCMODE_FORCED_INACTIVE TIM_CCMR1_OC1M_2 /*!< Force inactive level */ +#define TIM_OCMODE_RETRIGERRABLE_OPM1 TIM_CCMR1_OC1M_3 /*!< Retrigerrable OPM mode 1 */ +#define TIM_OCMODE_RETRIGERRABLE_OPM2 (TIM_CCMR1_OC1M_3 | TIM_CCMR1_OC1M_0) /*!< Retrigerrable OPM mode 2 */ +#define TIM_OCMODE_COMBINED_PWM1 (TIM_CCMR1_OC1M_3 | TIM_CCMR1_OC1M_2) /*!< Combined PWM mode 1 */ +#define TIM_OCMODE_COMBINED_PWM2 (TIM_CCMR1_OC1M_3 | TIM_CCMR1_OC1M_0 | TIM_CCMR1_OC1M_2) /*!< Combined PWM mode 2 */ +#define TIM_OCMODE_ASSYMETRIC_PWM1 (TIM_CCMR1_OC1M_3 | TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_2) /*!< Asymmetric PWM mode 1 */ +#define TIM_OCMODE_ASSYMETRIC_PWM2 TIM_CCMR1_OC1M /*!< Asymmetric PWM mode 2 */ +/** + * @} + */ + +/** @defgroup TIM_Trigger_Selection TIM Trigger Selection + * @{ + */ +#define TIM_TS_ITR0 0x00000000U /*!< Internal Trigger 0 (ITR0) */ +#define TIM_TS_ITR1 TIM_SMCR_TS_0 /*!< Internal Trigger 1 (ITR1) */ +#define TIM_TS_ITR2 TIM_SMCR_TS_1 /*!< Internal Trigger 2 (ITR2) */ +#define TIM_TS_ITR3 (TIM_SMCR_TS_0 | TIM_SMCR_TS_1) /*!< Internal Trigger 3 (ITR3) */ +#if defined(USB_BASE) +#define TIM_TS_ITR7 (TIM_SMCR_TS_0 | TIM_SMCR_TS_1 | TIM_SMCR_TS_3) /*!< Internal Trigger 7 (ITR7) */ +#endif /* USB_BASE */ +#define TIM_TS_TI1F_ED TIM_SMCR_TS_2 /*!< TI1 Edge Detector (TI1F_ED) */ +#define TIM_TS_TI1FP1 (TIM_SMCR_TS_0 | TIM_SMCR_TS_2) /*!< Filtered Timer Input 1 (TI1FP1) */ +#define TIM_TS_TI2FP2 (TIM_SMCR_TS_1 | TIM_SMCR_TS_2) /*!< Filtered Timer Input 2 (TI2FP2) */ +#define TIM_TS_ETRF (TIM_SMCR_TS_0 | TIM_SMCR_TS_1 | TIM_SMCR_TS_2) /*!< Filtered External Trigger input (ETRF) */ +#define TIM_TS_NONE 0x0000FFFFU /*!< No trigger selected */ +/** + * @} + */ + +/** @defgroup TIM_Trigger_Polarity TIM Trigger Polarity + * @{ + */ +#define TIM_TRIGGERPOLARITY_INVERTED TIM_ETRPOLARITY_INVERTED /*!< Polarity for ETRx trigger sources */ +#define TIM_TRIGGERPOLARITY_NONINVERTED TIM_ETRPOLARITY_NONINVERTED /*!< Polarity for ETRx trigger sources */ +#define TIM_TRIGGERPOLARITY_RISING TIM_INPUTCHANNELPOLARITY_RISING /*!< Polarity for TIxFPx or TI1_ED trigger sources */ +#define TIM_TRIGGERPOLARITY_FALLING TIM_INPUTCHANNELPOLARITY_FALLING /*!< Polarity for TIxFPx or TI1_ED trigger sources */ +#define TIM_TRIGGERPOLARITY_BOTHEDGE TIM_INPUTCHANNELPOLARITY_BOTHEDGE /*!< Polarity for TIxFPx or TI1_ED trigger sources */ +/** + * @} + */ + +/** @defgroup TIM_Trigger_Prescaler TIM Trigger Prescaler + * @{ + */ +#define TIM_TRIGGERPRESCALER_DIV1 TIM_ETRPRESCALER_DIV1 /*!< No prescaler is used */ +#define TIM_TRIGGERPRESCALER_DIV2 TIM_ETRPRESCALER_DIV2 /*!< Prescaler for External ETR Trigger: Capture performed once every 2 events. */ +#define TIM_TRIGGERPRESCALER_DIV4 TIM_ETRPRESCALER_DIV4 /*!< Prescaler for External ETR Trigger: Capture performed once every 4 events. */ +#define TIM_TRIGGERPRESCALER_DIV8 TIM_ETRPRESCALER_DIV8 /*!< Prescaler for External ETR Trigger: Capture performed once every 8 events. */ +/** + * @} + */ + +/** @defgroup TIM_TI1_Selection TIM TI1 Input Selection + * @{ + */ +#define TIM_TI1SELECTION_CH1 0x00000000U /*!< The TIMx_CH1 pin is connected to TI1 input */ +#define TIM_TI1SELECTION_XORCOMBINATION TIM_CR2_TI1S /*!< The TIMx_CH1, CH2 and CH3 pins are connected to the TI1 input (XOR combination) */ +/** + * @} + */ + +/** @defgroup TIM_DMA_Burst_Length TIM DMA Burst Length + * @{ + */ +#define TIM_DMABURSTLENGTH_1TRANSFER 0x00000000U /*!< The transfer is done to 1 register starting from TIMx_CR1 + TIMx_DCR.DBA */ +#define TIM_DMABURSTLENGTH_2TRANSFERS 0x00000100U /*!< The transfer is done to 2 registers starting from TIMx_CR1 + TIMx_DCR.DBA */ +#define TIM_DMABURSTLENGTH_3TRANSFERS 0x00000200U /*!< The transfer is done to 3 registers starting from TIMx_CR1 + TIMx_DCR.DBA */ +#define TIM_DMABURSTLENGTH_4TRANSFERS 0x00000300U /*!< The transfer is done to 4 registers starting from TIMx_CR1 + TIMx_DCR.DBA */ +#define TIM_DMABURSTLENGTH_5TRANSFERS 0x00000400U /*!< The transfer is done to 5 registers starting from TIMx_CR1 + TIMx_DCR.DBA */ +#define TIM_DMABURSTLENGTH_6TRANSFERS 0x00000500U /*!< The transfer is done to 6 registers starting from TIMx_CR1 + TIMx_DCR.DBA */ +#define TIM_DMABURSTLENGTH_7TRANSFERS 0x00000600U /*!< The transfer is done to 7 registers starting from TIMx_CR1 + TIMx_DCR.DBA */ +#define TIM_DMABURSTLENGTH_8TRANSFERS 0x00000700U /*!< The transfer is done to 8 registers starting from TIMx_CR1 + TIMx_DCR.DBA */ +#define TIM_DMABURSTLENGTH_9TRANSFERS 0x00000800U /*!< The transfer is done to 9 registers starting from TIMx_CR1 + TIMx_DCR.DBA */ +#define TIM_DMABURSTLENGTH_10TRANSFERS 0x00000900U /*!< The transfer is done to 10 registers starting from TIMx_CR1 + TIMx_DCR.DBA */ +#define TIM_DMABURSTLENGTH_11TRANSFERS 0x00000A00U /*!< The transfer is done to 11 registers starting from TIMx_CR1 + TIMx_DCR.DBA */ +#define TIM_DMABURSTLENGTH_12TRANSFERS 0x00000B00U /*!< The transfer is done to 12 registers starting from TIMx_CR1 + TIMx_DCR.DBA */ +#define TIM_DMABURSTLENGTH_13TRANSFERS 0x00000C00U /*!< The transfer is done to 13 registers starting from TIMx_CR1 + TIMx_DCR.DBA */ +#define TIM_DMABURSTLENGTH_14TRANSFERS 0x00000D00U /*!< The transfer is done to 14 registers starting from TIMx_CR1 + TIMx_DCR.DBA */ +#define TIM_DMABURSTLENGTH_15TRANSFERS 0x00000E00U /*!< The transfer is done to 15 registers starting from TIMx_CR1 + TIMx_DCR.DBA */ +#define TIM_DMABURSTLENGTH_16TRANSFERS 0x00000F00U /*!< The transfer is done to 16 registers starting from TIMx_CR1 + TIMx_DCR.DBA */ +#define TIM_DMABURSTLENGTH_17TRANSFERS 0x00001000U /*!< The transfer is done to 17 registers starting from TIMx_CR1 + TIMx_DCR.DBA */ +#define TIM_DMABURSTLENGTH_18TRANSFERS 0x00001100U /*!< The transfer is done to 18 registers starting from TIMx_CR1 + TIMx_DCR.DBA */ +/** + * @} + */ + +/** @defgroup DMA_Handle_index TIM DMA Handle Index + * @{ + */ +#define TIM_DMA_ID_UPDATE ((uint16_t) 0x0000) /*!< Index of the DMA handle used for Update DMA requests */ +#define TIM_DMA_ID_CC1 ((uint16_t) 0x0001) /*!< Index of the DMA handle used for Capture/Compare 1 DMA requests */ +#define TIM_DMA_ID_CC2 ((uint16_t) 0x0002) /*!< Index of the DMA handle used for Capture/Compare 2 DMA requests */ +#define TIM_DMA_ID_CC3 ((uint16_t) 0x0003) /*!< Index of the DMA handle used for Capture/Compare 3 DMA requests */ +#define TIM_DMA_ID_CC4 ((uint16_t) 0x0004) /*!< Index of the DMA handle used for Capture/Compare 4 DMA requests */ +#define TIM_DMA_ID_COMMUTATION ((uint16_t) 0x0005) /*!< Index of the DMA handle used for Commutation DMA requests */ +#define TIM_DMA_ID_TRIGGER ((uint16_t) 0x0006) /*!< Index of the DMA handle used for Trigger DMA requests */ +/** + * @} + */ + +/** @defgroup Channel_CC_State TIM Capture/Compare Channel State + * @{ + */ +#define TIM_CCx_ENABLE 0x00000001U /*!< Input or output channel is enabled */ +#define TIM_CCx_DISABLE 0x00000000U /*!< Input or output channel is disabled */ +#define TIM_CCxN_ENABLE 0x00000004U /*!< Complementary output channel is enabled */ +#define TIM_CCxN_DISABLE 0x00000000U /*!< Complementary output channel is enabled */ +/** + * @} + */ + +/** @defgroup TIM_Break_System TIM Break System + * @{ + */ +#define TIM_BREAK_SYSTEM_ECC SYSCFG_CFGR2_ECCL /*!< Enables and locks the ECC error signal with Break Input of TIM1/15/16/17 */ +#define TIM_BREAK_SYSTEM_PVD SYSCFG_CFGR2_PVDL /*!< Enables and locks the PVD connection with TIM1/15/16/17 Break Input and also the PVDE and PLS bits of the Power Control Interface */ +#define TIM_BREAK_SYSTEM_SRAM_PARITY_ERROR SYSCFG_CFGR2_SPL /*!< Enables and locks the SRAM_PARITY error signal with Break Input of TIM1/15/16/17 */ +#define TIM_BREAK_SYSTEM_LOCKUP SYSCFG_CFGR2_CLL /*!< Enables and locks the LOCKUP output of CortexM4 with Break Input of TIM1/15/16/17 */ +/** + * @} + */ + +/** + * @} + */ +/* End of exported constants -------------------------------------------------*/ + +/* Exported macros -----------------------------------------------------------*/ +/** @defgroup TIM_Exported_Macros TIM Exported Macros + * @{ + */ + +/** @brief Reset TIM handle state. + * @param __HANDLE__ TIM handle. + * @retval None + */ +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) +#define __HAL_TIM_RESET_HANDLE_STATE(__HANDLE__) do { \ + (__HANDLE__)->State = HAL_TIM_STATE_RESET; \ + (__HANDLE__)->ChannelState[0] = HAL_TIM_CHANNEL_STATE_RESET; \ + (__HANDLE__)->ChannelState[1] = HAL_TIM_CHANNEL_STATE_RESET; \ + (__HANDLE__)->ChannelState[2] = HAL_TIM_CHANNEL_STATE_RESET; \ + (__HANDLE__)->ChannelState[3] = HAL_TIM_CHANNEL_STATE_RESET; \ + (__HANDLE__)->ChannelState[4] = HAL_TIM_CHANNEL_STATE_RESET; \ + (__HANDLE__)->ChannelState[5] = HAL_TIM_CHANNEL_STATE_RESET; \ + (__HANDLE__)->ChannelNState[0] = HAL_TIM_CHANNEL_STATE_RESET; \ + (__HANDLE__)->ChannelNState[1] = HAL_TIM_CHANNEL_STATE_RESET; \ + (__HANDLE__)->ChannelNState[2] = HAL_TIM_CHANNEL_STATE_RESET; \ + (__HANDLE__)->ChannelNState[3] = HAL_TIM_CHANNEL_STATE_RESET; \ + (__HANDLE__)->DMABurstState = HAL_DMA_BURST_STATE_RESET; \ + (__HANDLE__)->Base_MspInitCallback = NULL; \ + (__HANDLE__)->Base_MspDeInitCallback = NULL; \ + (__HANDLE__)->IC_MspInitCallback = NULL; \ + (__HANDLE__)->IC_MspDeInitCallback = NULL; \ + (__HANDLE__)->OC_MspInitCallback = NULL; \ + (__HANDLE__)->OC_MspDeInitCallback = NULL; \ + (__HANDLE__)->PWM_MspInitCallback = NULL; \ + (__HANDLE__)->PWM_MspDeInitCallback = NULL; \ + (__HANDLE__)->OnePulse_MspInitCallback = NULL; \ + (__HANDLE__)->OnePulse_MspDeInitCallback = NULL; \ + (__HANDLE__)->Encoder_MspInitCallback = NULL; \ + (__HANDLE__)->Encoder_MspDeInitCallback = NULL; \ + (__HANDLE__)->HallSensor_MspInitCallback = NULL; \ + (__HANDLE__)->HallSensor_MspDeInitCallback = NULL; \ + } while(0) +#else +#define __HAL_TIM_RESET_HANDLE_STATE(__HANDLE__) do { \ + (__HANDLE__)->State = HAL_TIM_STATE_RESET; \ + (__HANDLE__)->ChannelState[0] = HAL_TIM_CHANNEL_STATE_RESET; \ + (__HANDLE__)->ChannelState[1] = HAL_TIM_CHANNEL_STATE_RESET; \ + (__HANDLE__)->ChannelState[2] = HAL_TIM_CHANNEL_STATE_RESET; \ + (__HANDLE__)->ChannelState[3] = HAL_TIM_CHANNEL_STATE_RESET; \ + (__HANDLE__)->ChannelState[4] = HAL_TIM_CHANNEL_STATE_RESET; \ + (__HANDLE__)->ChannelState[5] = HAL_TIM_CHANNEL_STATE_RESET; \ + (__HANDLE__)->ChannelNState[0] = HAL_TIM_CHANNEL_STATE_RESET; \ + (__HANDLE__)->ChannelNState[1] = HAL_TIM_CHANNEL_STATE_RESET; \ + (__HANDLE__)->ChannelNState[2] = HAL_TIM_CHANNEL_STATE_RESET; \ + (__HANDLE__)->ChannelNState[3] = HAL_TIM_CHANNEL_STATE_RESET; \ + (__HANDLE__)->DMABurstState = HAL_DMA_BURST_STATE_RESET; \ + } while(0) +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + +/** + * @brief Enable the TIM peripheral. + * @param __HANDLE__ TIM handle + * @retval None + */ +#define __HAL_TIM_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR1|=(TIM_CR1_CEN)) + +/** + * @brief Enable the TIM main Output. + * @param __HANDLE__ TIM handle + * @retval None + */ +#define __HAL_TIM_MOE_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->BDTR|=(TIM_BDTR_MOE)) + +/** + * @brief Disable the TIM peripheral. + * @param __HANDLE__ TIM handle + * @retval None + */ +#define __HAL_TIM_DISABLE(__HANDLE__) \ + do { \ + if (((__HANDLE__)->Instance->CCER & TIM_CCER_CCxE_MASK) == 0UL) \ + { \ + if(((__HANDLE__)->Instance->CCER & TIM_CCER_CCxNE_MASK) == 0UL) \ + { \ + (__HANDLE__)->Instance->CR1 &= ~(TIM_CR1_CEN); \ + } \ + } \ + } while(0) + +/** + * @brief Disable the TIM main Output. + * @param __HANDLE__ TIM handle + * @retval None + * @note The Main Output Enable of a timer instance is disabled only if all the CCx and CCxN channels have been + * disabled + */ +#define __HAL_TIM_MOE_DISABLE(__HANDLE__) \ + do { \ + if (((__HANDLE__)->Instance->CCER & TIM_CCER_CCxE_MASK) == 0UL) \ + { \ + if(((__HANDLE__)->Instance->CCER & TIM_CCER_CCxNE_MASK) == 0UL) \ + { \ + (__HANDLE__)->Instance->BDTR &= ~(TIM_BDTR_MOE); \ + } \ + } \ + } while(0) + +/** + * @brief Disable the TIM main Output. + * @param __HANDLE__ TIM handle + * @retval None + * @note The Main Output Enable of a timer instance is disabled unconditionally + */ +#define __HAL_TIM_MOE_DISABLE_UNCONDITIONALLY(__HANDLE__) (__HANDLE__)->Instance->BDTR &= ~(TIM_BDTR_MOE) + +/** @brief Enable the specified TIM interrupt. + * @param __HANDLE__ specifies the TIM Handle. + * @param __INTERRUPT__ specifies the TIM interrupt source to enable. + * This parameter can be one of the following values: + * @arg TIM_IT_UPDATE: Update interrupt + * @arg TIM_IT_CC1: Capture/Compare 1 interrupt + * @arg TIM_IT_CC2: Capture/Compare 2 interrupt + * @arg TIM_IT_CC3: Capture/Compare 3 interrupt + * @arg TIM_IT_CC4: Capture/Compare 4 interrupt + * @arg TIM_IT_COM: Commutation interrupt + * @arg TIM_IT_TRIGGER: Trigger interrupt + * @arg TIM_IT_BREAK: Break interrupt + * @retval None + */ +#define __HAL_TIM_ENABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->DIER |= (__INTERRUPT__)) + +/** @brief Disable the specified TIM interrupt. + * @param __HANDLE__ specifies the TIM Handle. + * @param __INTERRUPT__ specifies the TIM interrupt source to disable. + * This parameter can be one of the following values: + * @arg TIM_IT_UPDATE: Update interrupt + * @arg TIM_IT_CC1: Capture/Compare 1 interrupt + * @arg TIM_IT_CC2: Capture/Compare 2 interrupt + * @arg TIM_IT_CC3: Capture/Compare 3 interrupt + * @arg TIM_IT_CC4: Capture/Compare 4 interrupt + * @arg TIM_IT_COM: Commutation interrupt + * @arg TIM_IT_TRIGGER: Trigger interrupt + * @arg TIM_IT_BREAK: Break interrupt + * @retval None + */ +#define __HAL_TIM_DISABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->DIER &= ~(__INTERRUPT__)) + +/** @brief Enable the specified DMA request. + * @param __HANDLE__ specifies the TIM Handle. + * @param __DMA__ specifies the TIM DMA request to enable. + * This parameter can be one of the following values: + * @arg TIM_DMA_UPDATE: Update DMA request + * @arg TIM_DMA_CC1: Capture/Compare 1 DMA request + * @arg TIM_DMA_CC2: Capture/Compare 2 DMA request + * @arg TIM_DMA_CC3: Capture/Compare 3 DMA request + * @arg TIM_DMA_CC4: Capture/Compare 4 DMA request + * @arg TIM_DMA_COM: Commutation DMA request + * @arg TIM_DMA_TRIGGER: Trigger DMA request + * @retval None + */ +#define __HAL_TIM_ENABLE_DMA(__HANDLE__, __DMA__) ((__HANDLE__)->Instance->DIER |= (__DMA__)) + +/** @brief Disable the specified DMA request. + * @param __HANDLE__ specifies the TIM Handle. + * @param __DMA__ specifies the TIM DMA request to disable. + * This parameter can be one of the following values: + * @arg TIM_DMA_UPDATE: Update DMA request + * @arg TIM_DMA_CC1: Capture/Compare 1 DMA request + * @arg TIM_DMA_CC2: Capture/Compare 2 DMA request + * @arg TIM_DMA_CC3: Capture/Compare 3 DMA request + * @arg TIM_DMA_CC4: Capture/Compare 4 DMA request + * @arg TIM_DMA_COM: Commutation DMA request + * @arg TIM_DMA_TRIGGER: Trigger DMA request + * @retval None + */ +#define __HAL_TIM_DISABLE_DMA(__HANDLE__, __DMA__) ((__HANDLE__)->Instance->DIER &= ~(__DMA__)) + +/** @brief Check whether the specified TIM interrupt flag is set or not. + * @param __HANDLE__ specifies the TIM Handle. + * @param __FLAG__ specifies the TIM interrupt flag to check. + * This parameter can be one of the following values: + * @arg TIM_FLAG_UPDATE: Update interrupt flag + * @arg TIM_FLAG_CC1: Capture/Compare 1 interrupt flag + * @arg TIM_FLAG_CC2: Capture/Compare 2 interrupt flag + * @arg TIM_FLAG_CC3: Capture/Compare 3 interrupt flag + * @arg TIM_FLAG_CC4: Capture/Compare 4 interrupt flag + * @arg TIM_FLAG_CC5: Compare 5 interrupt flag + * @arg TIM_FLAG_CC6: Compare 6 interrupt flag + * @arg TIM_FLAG_COM: Commutation interrupt flag + * @arg TIM_FLAG_TRIGGER: Trigger interrupt flag + * @arg TIM_FLAG_BREAK: Break interrupt flag + * @arg TIM_FLAG_BREAK2: Break 2 interrupt flag + * @arg TIM_FLAG_SYSTEM_BREAK: System Break interrupt flag + * @arg TIM_FLAG_CC1OF: Capture/Compare 1 overcapture flag + * @arg TIM_FLAG_CC2OF: Capture/Compare 2 overcapture flag + * @arg TIM_FLAG_CC3OF: Capture/Compare 3 overcapture flag + * @arg TIM_FLAG_CC4OF: Capture/Compare 4 overcapture flag + * @retval The new state of __FLAG__ (TRUE or FALSE). + */ +#define __HAL_TIM_GET_FLAG(__HANDLE__, __FLAG__) (((__HANDLE__)->Instance->SR &(__FLAG__)) == (__FLAG__)) + +/** @brief Clear the specified TIM interrupt flag. + * @param __HANDLE__ specifies the TIM Handle. + * @param __FLAG__ specifies the TIM interrupt flag to clear. + * This parameter can be one of the following values: + * @arg TIM_FLAG_UPDATE: Update interrupt flag + * @arg TIM_FLAG_CC1: Capture/Compare 1 interrupt flag + * @arg TIM_FLAG_CC2: Capture/Compare 2 interrupt flag + * @arg TIM_FLAG_CC3: Capture/Compare 3 interrupt flag + * @arg TIM_FLAG_CC4: Capture/Compare 4 interrupt flag + * @arg TIM_FLAG_CC5: Compare 5 interrupt flag + * @arg TIM_FLAG_CC6: Compare 6 interrupt flag + * @arg TIM_FLAG_COM: Commutation interrupt flag + * @arg TIM_FLAG_TRIGGER: Trigger interrupt flag + * @arg TIM_FLAG_BREAK: Break interrupt flag + * @arg TIM_FLAG_BREAK2: Break 2 interrupt flag + * @arg TIM_FLAG_SYSTEM_BREAK: System Break interrupt flag + * @arg TIM_FLAG_CC1OF: Capture/Compare 1 overcapture flag + * @arg TIM_FLAG_CC2OF: Capture/Compare 2 overcapture flag + * @arg TIM_FLAG_CC3OF: Capture/Compare 3 overcapture flag + * @arg TIM_FLAG_CC4OF: Capture/Compare 4 overcapture flag + * @retval The new state of __FLAG__ (TRUE or FALSE). + */ +#define __HAL_TIM_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->SR = ~(__FLAG__)) + +/** + * @brief Check whether the specified TIM interrupt source is enabled or not. + * @param __HANDLE__ TIM handle + * @param __INTERRUPT__ specifies the TIM interrupt source to check. + * This parameter can be one of the following values: + * @arg TIM_IT_UPDATE: Update interrupt + * @arg TIM_IT_CC1: Capture/Compare 1 interrupt + * @arg TIM_IT_CC2: Capture/Compare 2 interrupt + * @arg TIM_IT_CC3: Capture/Compare 3 interrupt + * @arg TIM_IT_CC4: Capture/Compare 4 interrupt + * @arg TIM_IT_COM: Commutation interrupt + * @arg TIM_IT_TRIGGER: Trigger interrupt + * @arg TIM_IT_BREAK: Break interrupt + * @retval The state of TIM_IT (SET or RESET). + */ +#define __HAL_TIM_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((((__HANDLE__)->Instance->DIER & (__INTERRUPT__)) \ + == (__INTERRUPT__)) ? SET : RESET) + +/** @brief Clear the TIM interrupt pending bits. + * @param __HANDLE__ TIM handle + * @param __INTERRUPT__ specifies the interrupt pending bit to clear. + * This parameter can be one of the following values: + * @arg TIM_IT_UPDATE: Update interrupt + * @arg TIM_IT_CC1: Capture/Compare 1 interrupt + * @arg TIM_IT_CC2: Capture/Compare 2 interrupt + * @arg TIM_IT_CC3: Capture/Compare 3 interrupt + * @arg TIM_IT_CC4: Capture/Compare 4 interrupt + * @arg TIM_IT_COM: Commutation interrupt + * @arg TIM_IT_TRIGGER: Trigger interrupt + * @arg TIM_IT_BREAK: Break interrupt + * @retval None + */ +#define __HAL_TIM_CLEAR_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->SR = ~(__INTERRUPT__)) + +/** + * @brief Force a continuous copy of the update interrupt flag (UIF) into the timer counter register (bit 31). + * @note This allows both the counter value and a potential roll-over condition signalled by the UIFCPY flag to be read + * in an atomic way. + * @param __HANDLE__ TIM handle. + * @retval None +mode. + */ +#define __HAL_TIM_UIFREMAP_ENABLE(__HANDLE__) (((__HANDLE__)->Instance->CR1 |= TIM_CR1_UIFREMAP)) + +/** + * @brief Disable update interrupt flag (UIF) remapping. + * @param __HANDLE__ TIM handle. + * @retval None +mode. + */ +#define __HAL_TIM_UIFREMAP_DISABLE(__HANDLE__) (((__HANDLE__)->Instance->CR1 &= ~TIM_CR1_UIFREMAP)) + +/** + * @brief Get update interrupt flag (UIF) copy status. + * @param __COUNTER__ Counter value. + * @retval The state of UIFCPY (TRUE or FALSE). +mode. + */ +#define __HAL_TIM_GET_UIFCPY(__COUNTER__) (((__COUNTER__) & (TIM_CNT_UIFCPY)) == (TIM_CNT_UIFCPY)) + +/** + * @brief Indicates whether or not the TIM Counter is used as downcounter. + * @param __HANDLE__ TIM handle. + * @retval False (Counter used as upcounter) or True (Counter used as downcounter) + * @note This macro is particularly useful to get the counting mode when the timer operates in Center-aligned mode + * or Encoder mode. + */ +#define __HAL_TIM_IS_TIM_COUNTING_DOWN(__HANDLE__) (((__HANDLE__)->Instance->CR1 &(TIM_CR1_DIR)) == (TIM_CR1_DIR)) + +/** + * @brief Set the TIM Prescaler on runtime. + * @param __HANDLE__ TIM handle. + * @param __PRESC__ specifies the Prescaler new value. + * @retval None + */ +#define __HAL_TIM_SET_PRESCALER(__HANDLE__, __PRESC__) ((__HANDLE__)->Instance->PSC = (__PRESC__)) + +/** + * @brief Set the TIM Counter Register value on runtime. + * Note Please check if the bit 31 of CNT register is used as UIF copy or not, this may affect the counter range in + * case of 32 bits counter TIM instance. + * Bit 31 of CNT can be enabled/disabled using __HAL_TIM_UIFREMAP_ENABLE()/__HAL_TIM_UIFREMAP_DISABLE() macros. + * @param __HANDLE__ TIM handle. + * @param __COUNTER__ specifies the Counter register new value. + * @retval None + */ +#define __HAL_TIM_SET_COUNTER(__HANDLE__, __COUNTER__) ((__HANDLE__)->Instance->CNT = (__COUNTER__)) + +/** + * @brief Get the TIM Counter Register value on runtime. + * @param __HANDLE__ TIM handle. + * @retval 16-bit or 32-bit value of the timer counter register (TIMx_CNT) + */ +#define __HAL_TIM_GET_COUNTER(__HANDLE__) ((__HANDLE__)->Instance->CNT) + +/** + * @brief Set the TIM Autoreload Register value on runtime without calling another time any Init function. + * @param __HANDLE__ TIM handle. + * @param __AUTORELOAD__ specifies the Counter register new value. + * @retval None + */ +#define __HAL_TIM_SET_AUTORELOAD(__HANDLE__, __AUTORELOAD__) \ + do{ \ + (__HANDLE__)->Instance->ARR = (__AUTORELOAD__); \ + (__HANDLE__)->Init.Period = (__AUTORELOAD__); \ + } while(0) + +/** + * @brief Get the TIM Autoreload Register value on runtime. + * @param __HANDLE__ TIM handle. + * @retval 16-bit or 32-bit value of the timer auto-reload register(TIMx_ARR) + */ +#define __HAL_TIM_GET_AUTORELOAD(__HANDLE__) ((__HANDLE__)->Instance->ARR) + +/** + * @brief Set the TIM Clock Division value on runtime without calling another time any Init function. + * @param __HANDLE__ TIM handle. + * @param __CKD__ specifies the clock division value. + * This parameter can be one of the following value: + * @arg TIM_CLOCKDIVISION_DIV1: tDTS=tCK_INT + * @arg TIM_CLOCKDIVISION_DIV2: tDTS=2*tCK_INT + * @arg TIM_CLOCKDIVISION_DIV4: tDTS=4*tCK_INT + * @retval None + */ +#define __HAL_TIM_SET_CLOCKDIVISION(__HANDLE__, __CKD__) \ + do{ \ + (__HANDLE__)->Instance->CR1 &= (~TIM_CR1_CKD); \ + (__HANDLE__)->Instance->CR1 |= (__CKD__); \ + (__HANDLE__)->Init.ClockDivision = (__CKD__); \ + } while(0) + +/** + * @brief Get the TIM Clock Division value on runtime. + * @param __HANDLE__ TIM handle. + * @retval The clock division can be one of the following values: + * @arg TIM_CLOCKDIVISION_DIV1: tDTS=tCK_INT + * @arg TIM_CLOCKDIVISION_DIV2: tDTS=2*tCK_INT + * @arg TIM_CLOCKDIVISION_DIV4: tDTS=4*tCK_INT + */ +#define __HAL_TIM_GET_CLOCKDIVISION(__HANDLE__) ((__HANDLE__)->Instance->CR1 & TIM_CR1_CKD) + +/** + * @brief Set the TIM Input Capture prescaler on runtime without calling another time HAL_TIM_IC_ConfigChannel() + * function. + * @param __HANDLE__ TIM handle. + * @param __CHANNEL__ TIM Channels to be configured. + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @param __ICPSC__ specifies the Input Capture4 prescaler new value. + * This parameter can be one of the following values: + * @arg TIM_ICPSC_DIV1: no prescaler + * @arg TIM_ICPSC_DIV2: capture is done once every 2 events + * @arg TIM_ICPSC_DIV4: capture is done once every 4 events + * @arg TIM_ICPSC_DIV8: capture is done once every 8 events + * @retval None + */ +#define __HAL_TIM_SET_ICPRESCALER(__HANDLE__, __CHANNEL__, __ICPSC__) \ + do{ \ + TIM_RESET_ICPRESCALERVALUE((__HANDLE__), (__CHANNEL__)); \ + TIM_SET_ICPRESCALERVALUE((__HANDLE__), (__CHANNEL__), (__ICPSC__)); \ + } while(0) + +/** + * @brief Get the TIM Input Capture prescaler on runtime. + * @param __HANDLE__ TIM handle. + * @param __CHANNEL__ TIM Channels to be configured. + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: get input capture 1 prescaler value + * @arg TIM_CHANNEL_2: get input capture 2 prescaler value + * @arg TIM_CHANNEL_3: get input capture 3 prescaler value + * @arg TIM_CHANNEL_4: get input capture 4 prescaler value + * @retval The input capture prescaler can be one of the following values: + * @arg TIM_ICPSC_DIV1: no prescaler + * @arg TIM_ICPSC_DIV2: capture is done once every 2 events + * @arg TIM_ICPSC_DIV4: capture is done once every 4 events + * @arg TIM_ICPSC_DIV8: capture is done once every 8 events + */ +#define __HAL_TIM_GET_ICPRESCALER(__HANDLE__, __CHANNEL__) \ + (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 & TIM_CCMR1_IC1PSC) :\ + ((__CHANNEL__) == TIM_CHANNEL_2) ? (((__HANDLE__)->Instance->CCMR1 & TIM_CCMR1_IC2PSC) >> 8U) :\ + ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 & TIM_CCMR2_IC3PSC) :\ + (((__HANDLE__)->Instance->CCMR2 & TIM_CCMR2_IC4PSC)) >> 8U) + +/** + * @brief Set the TIM Capture Compare Register value on runtime without calling another time ConfigChannel function. + * @param __HANDLE__ TIM handle. + * @param __CHANNEL__ TIM Channels to be configured. + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @arg TIM_CHANNEL_5: TIM Channel 5 selected + * @arg TIM_CHANNEL_6: TIM Channel 6 selected + * @param __COMPARE__ specifies the Capture Compare register new value. + * @retval None + */ +#define __HAL_TIM_SET_COMPARE(__HANDLE__, __CHANNEL__, __COMPARE__) \ + (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCR1 = (__COMPARE__)) :\ + ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCR2 = (__COMPARE__)) :\ + ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCR3 = (__COMPARE__)) :\ + ((__CHANNEL__) == TIM_CHANNEL_4) ? ((__HANDLE__)->Instance->CCR4 = (__COMPARE__)) :\ + ((__CHANNEL__) == TIM_CHANNEL_5) ? ((__HANDLE__)->Instance->CCR5 = (__COMPARE__)) :\ + ((__HANDLE__)->Instance->CCR6 = (__COMPARE__))) + +/** + * @brief Get the TIM Capture Compare Register value on runtime. + * @param __HANDLE__ TIM handle. + * @param __CHANNEL__ TIM Channel associated with the capture compare register + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: get capture/compare 1 register value + * @arg TIM_CHANNEL_2: get capture/compare 2 register value + * @arg TIM_CHANNEL_3: get capture/compare 3 register value + * @arg TIM_CHANNEL_4: get capture/compare 4 register value + * @arg TIM_CHANNEL_5: get capture/compare 5 register value + * @arg TIM_CHANNEL_6: get capture/compare 6 register value + * @retval 16-bit or 32-bit value of the capture/compare register (TIMx_CCRy) + */ +#define __HAL_TIM_GET_COMPARE(__HANDLE__, __CHANNEL__) \ + (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCR1) :\ + ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCR2) :\ + ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCR3) :\ + ((__CHANNEL__) == TIM_CHANNEL_4) ? ((__HANDLE__)->Instance->CCR4) :\ + ((__CHANNEL__) == TIM_CHANNEL_5) ? ((__HANDLE__)->Instance->CCR5) :\ + ((__HANDLE__)->Instance->CCR6)) + +/** + * @brief Set the TIM Output compare preload. + * @param __HANDLE__ TIM handle. + * @param __CHANNEL__ TIM Channels to be configured. + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @arg TIM_CHANNEL_5: TIM Channel 5 selected + * @arg TIM_CHANNEL_6: TIM Channel 6 selected + * @retval None + */ +#define __HAL_TIM_ENABLE_OCxPRELOAD(__HANDLE__, __CHANNEL__) \ + (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 |= TIM_CCMR1_OC1PE) :\ + ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 |= TIM_CCMR1_OC2PE) :\ + ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 |= TIM_CCMR2_OC3PE) :\ + ((__CHANNEL__) == TIM_CHANNEL_4) ? ((__HANDLE__)->Instance->CCMR2 |= TIM_CCMR2_OC4PE) :\ + ((__CHANNEL__) == TIM_CHANNEL_5) ? ((__HANDLE__)->Instance->CCMR3 |= TIM_CCMR3_OC5PE) :\ + ((__HANDLE__)->Instance->CCMR3 |= TIM_CCMR3_OC6PE)) + +/** + * @brief Reset the TIM Output compare preload. + * @param __HANDLE__ TIM handle. + * @param __CHANNEL__ TIM Channels to be configured. + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @arg TIM_CHANNEL_5: TIM Channel 5 selected + * @arg TIM_CHANNEL_6: TIM Channel 6 selected + * @retval None + */ +#define __HAL_TIM_DISABLE_OCxPRELOAD(__HANDLE__, __CHANNEL__) \ + (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 &= ~TIM_CCMR1_OC1PE) :\ + ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 &= ~TIM_CCMR1_OC2PE) :\ + ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 &= ~TIM_CCMR2_OC3PE) :\ + ((__CHANNEL__) == TIM_CHANNEL_4) ? ((__HANDLE__)->Instance->CCMR2 &= ~TIM_CCMR2_OC4PE) :\ + ((__CHANNEL__) == TIM_CHANNEL_5) ? ((__HANDLE__)->Instance->CCMR3 &= ~TIM_CCMR3_OC5PE) :\ + ((__HANDLE__)->Instance->CCMR3 &= ~TIM_CCMR3_OC6PE)) + +/** + * @brief Enable fast mode for a given channel. + * @param __HANDLE__ TIM handle. + * @param __CHANNEL__ TIM Channels to be configured. + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @arg TIM_CHANNEL_5: TIM Channel 5 selected + * @arg TIM_CHANNEL_6: TIM Channel 6 selected + * @note When fast mode is enabled an active edge on the trigger input acts + * like a compare match on CCx output. Delay to sample the trigger + * input and to activate CCx output is reduced to 3 clock cycles. + * @note Fast mode acts only if the channel is configured in PWM1 or PWM2 mode. + * @retval None + */ +#define __HAL_TIM_ENABLE_OCxFAST(__HANDLE__, __CHANNEL__) \ + (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 |= TIM_CCMR1_OC1FE) :\ + ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 |= TIM_CCMR1_OC2FE) :\ + ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 |= TIM_CCMR2_OC3FE) :\ + ((__CHANNEL__) == TIM_CHANNEL_4) ? ((__HANDLE__)->Instance->CCMR2 |= TIM_CCMR2_OC4FE) :\ + ((__CHANNEL__) == TIM_CHANNEL_5) ? ((__HANDLE__)->Instance->CCMR3 |= TIM_CCMR3_OC5FE) :\ + ((__HANDLE__)->Instance->CCMR3 |= TIM_CCMR3_OC6FE)) + +/** + * @brief Disable fast mode for a given channel. + * @param __HANDLE__ TIM handle. + * @param __CHANNEL__ TIM Channels to be configured. + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @arg TIM_CHANNEL_5: TIM Channel 5 selected + * @arg TIM_CHANNEL_6: TIM Channel 6 selected + * @note When fast mode is disabled CCx output behaves normally depending + * on counter and CCRx values even when the trigger is ON. The minimum + * delay to activate CCx output when an active edge occurs on the + * trigger input is 5 clock cycles. + * @retval None + */ +#define __HAL_TIM_DISABLE_OCxFAST(__HANDLE__, __CHANNEL__) \ + (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 &= ~TIM_CCMR1_OC1FE) :\ + ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 &= ~TIM_CCMR1_OC2FE) :\ + ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 &= ~TIM_CCMR2_OC3FE) :\ + ((__CHANNEL__) == TIM_CHANNEL_4) ? ((__HANDLE__)->Instance->CCMR2 &= ~TIM_CCMR2_OC4FE) :\ + ((__CHANNEL__) == TIM_CHANNEL_5) ? ((__HANDLE__)->Instance->CCMR3 &= ~TIM_CCMR3_OC5FE) :\ + ((__HANDLE__)->Instance->CCMR3 &= ~TIM_CCMR3_OC6FE)) + +/** + * @brief Set the Update Request Source (URS) bit of the TIMx_CR1 register. + * @param __HANDLE__ TIM handle. + * @note When the URS bit of the TIMx_CR1 register is set, only counter + * overflow/underflow generates an update interrupt or DMA request (if + * enabled) + * @retval None + */ +#define __HAL_TIM_URS_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR1|= TIM_CR1_URS) + +/** + * @brief Reset the Update Request Source (URS) bit of the TIMx_CR1 register. + * @param __HANDLE__ TIM handle. + * @note When the URS bit of the TIMx_CR1 register is reset, any of the + * following events generate an update interrupt or DMA request (if + * enabled): + * _ Counter overflow underflow + * _ Setting the UG bit + * _ Update generation through the slave mode controller + * @retval None + */ +#define __HAL_TIM_URS_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR1&=~TIM_CR1_URS) + +/** + * @brief Set the TIM Capture x input polarity on runtime. + * @param __HANDLE__ TIM handle. + * @param __CHANNEL__ TIM Channels to be configured. + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @param __POLARITY__ Polarity for TIx source + * @arg TIM_INPUTCHANNELPOLARITY_RISING: Rising Edge + * @arg TIM_INPUTCHANNELPOLARITY_FALLING: Falling Edge + * @arg TIM_INPUTCHANNELPOLARITY_BOTHEDGE: Rising and Falling Edge + * @retval None + */ +#define __HAL_TIM_SET_CAPTUREPOLARITY(__HANDLE__, __CHANNEL__, __POLARITY__) \ + do{ \ + TIM_RESET_CAPTUREPOLARITY((__HANDLE__), (__CHANNEL__)); \ + TIM_SET_CAPTUREPOLARITY((__HANDLE__), (__CHANNEL__), (__POLARITY__)); \ + }while(0) + +/** @brief Select the Capture/compare DMA request source. + * @param __HANDLE__ specifies the TIM Handle. + * @param __CCDMA__ specifies Capture/compare DMA request source + * This parameter can be one of the following values: + * @arg TIM_CCDMAREQUEST_CC: CCx DMA request generated on Capture/Compare event + * @arg TIM_CCDMAREQUEST_UPDATE: CCx DMA request generated on Update event + * @retval None + */ +#define __HAL_TIM_SELECT_CCDMAREQUEST(__HANDLE__, __CCDMA__) \ + MODIFY_REG((__HANDLE__)->Instance->CR2, TIM_CR2_CCDS, (__CCDMA__)) + +/** + * @} + */ +/* End of exported macros ----------------------------------------------------*/ + +/* Private constants ---------------------------------------------------------*/ +/** @defgroup TIM_Private_Constants TIM Private Constants + * @{ + */ +/* The counter of a timer instance is disabled only if all the CCx and CCxN + channels have been disabled */ +#define TIM_CCER_CCxE_MASK ((uint32_t)(TIM_CCER_CC1E | TIM_CCER_CC2E | TIM_CCER_CC3E | TIM_CCER_CC4E)) +#define TIM_CCER_CCxNE_MASK ((uint32_t)(TIM_CCER_CC1NE | TIM_CCER_CC2NE | TIM_CCER_CC3NE)) +/** + * @} + */ +/* End of private constants --------------------------------------------------*/ + +/* Private macros ------------------------------------------------------------*/ +/** @defgroup TIM_Private_Macros TIM Private Macros + * @{ + */ +#if defined(COMP1) && defined(COMP2) && defined(COMP3) +#define IS_TIM_CLEARINPUT_SOURCE(__MODE__) (((__MODE__) == TIM_CLEARINPUTSOURCE_ETR) || \ + ((__MODE__) == TIM_CLEARINPUTSOURCE_COMP1) || \ + ((__MODE__) == TIM_CLEARINPUTSOURCE_COMP2) || \ + ((__MODE__) == TIM_CLEARINPUTSOURCE_COMP3) || \ + ((__MODE__) == TIM_CLEARINPUTSOURCE_NONE)) +#elif defined(COMP1) && defined(COMP2) +#define IS_TIM_CLEARINPUT_SOURCE(__MODE__) (((__MODE__) == TIM_CLEARINPUTSOURCE_ETR) || \ + ((__MODE__) == TIM_CLEARINPUTSOURCE_COMP1) || \ + ((__MODE__) == TIM_CLEARINPUTSOURCE_COMP2) || \ + ((__MODE__) == TIM_CLEARINPUTSOURCE_NONE)) +#else +#define IS_TIM_CLEARINPUT_SOURCE(__MODE__) (((__MODE__) == TIM_CLEARINPUTSOURCE_ETR) || \ + ((__MODE__) == TIM_CLEARINPUTSOURCE_NONE)) +#endif /* COMP1 && COMP2 && COMP3 */ + +#define IS_TIM_DMA_BASE(__BASE__) (((__BASE__) == TIM_DMABASE_CR1) || \ + ((__BASE__) == TIM_DMABASE_CR2) || \ + ((__BASE__) == TIM_DMABASE_SMCR) || \ + ((__BASE__) == TIM_DMABASE_DIER) || \ + ((__BASE__) == TIM_DMABASE_SR) || \ + ((__BASE__) == TIM_DMABASE_EGR) || \ + ((__BASE__) == TIM_DMABASE_CCMR1) || \ + ((__BASE__) == TIM_DMABASE_CCMR2) || \ + ((__BASE__) == TIM_DMABASE_CCER) || \ + ((__BASE__) == TIM_DMABASE_CNT) || \ + ((__BASE__) == TIM_DMABASE_PSC) || \ + ((__BASE__) == TIM_DMABASE_ARR) || \ + ((__BASE__) == TIM_DMABASE_RCR) || \ + ((__BASE__) == TIM_DMABASE_CCR1) || \ + ((__BASE__) == TIM_DMABASE_CCR2) || \ + ((__BASE__) == TIM_DMABASE_CCR3) || \ + ((__BASE__) == TIM_DMABASE_CCR4) || \ + ((__BASE__) == TIM_DMABASE_BDTR) || \ + ((__BASE__) == TIM_DMABASE_OR1) || \ + ((__BASE__) == TIM_DMABASE_CCMR3) || \ + ((__BASE__) == TIM_DMABASE_CCR5) || \ + ((__BASE__) == TIM_DMABASE_CCR6) || \ + ((__BASE__) == TIM_DMABASE_AF1) || \ + ((__BASE__) == TIM_DMABASE_AF2) || \ + ((__BASE__) == TIM_DMABASE_TISEL)) + +#define IS_TIM_EVENT_SOURCE(__SOURCE__) ((((__SOURCE__) & 0xFFFFFE00U) == 0x00000000U) && ((__SOURCE__) != 0x00000000U)) + +#define IS_TIM_COUNTER_MODE(__MODE__) (((__MODE__) == TIM_COUNTERMODE_UP) || \ + ((__MODE__) == TIM_COUNTERMODE_DOWN) || \ + ((__MODE__) == TIM_COUNTERMODE_CENTERALIGNED1) || \ + ((__MODE__) == TIM_COUNTERMODE_CENTERALIGNED2) || \ + ((__MODE__) == TIM_COUNTERMODE_CENTERALIGNED3)) + +#define IS_TIM_UIFREMAP_MODE(__MODE__) (((__MODE__) == TIM_UIFREMAP_DISABLE) || \ + ((__MODE__) == TIM_UIFREMAP_ENABLE)) + +#define IS_TIM_CLOCKDIVISION_DIV(__DIV__) (((__DIV__) == TIM_CLOCKDIVISION_DIV1) || \ + ((__DIV__) == TIM_CLOCKDIVISION_DIV2) || \ + ((__DIV__) == TIM_CLOCKDIVISION_DIV4)) + +#define IS_TIM_AUTORELOAD_PRELOAD(PRELOAD) (((PRELOAD) == TIM_AUTORELOAD_PRELOAD_DISABLE) || \ + ((PRELOAD) == TIM_AUTORELOAD_PRELOAD_ENABLE)) + +#define IS_TIM_FAST_STATE(__STATE__) (((__STATE__) == TIM_OCFAST_DISABLE) || \ + ((__STATE__) == TIM_OCFAST_ENABLE)) + +#define IS_TIM_OC_POLARITY(__POLARITY__) (((__POLARITY__) == TIM_OCPOLARITY_HIGH) || \ + ((__POLARITY__) == TIM_OCPOLARITY_LOW)) + +#define IS_TIM_OCN_POLARITY(__POLARITY__) (((__POLARITY__) == TIM_OCNPOLARITY_HIGH) || \ + ((__POLARITY__) == TIM_OCNPOLARITY_LOW)) + +#define IS_TIM_OCIDLE_STATE(__STATE__) (((__STATE__) == TIM_OCIDLESTATE_SET) || \ + ((__STATE__) == TIM_OCIDLESTATE_RESET)) + +#define IS_TIM_OCNIDLE_STATE(__STATE__) (((__STATE__) == TIM_OCNIDLESTATE_SET) || \ + ((__STATE__) == TIM_OCNIDLESTATE_RESET)) + +#define IS_TIM_ENCODERINPUT_POLARITY(__POLARITY__) (((__POLARITY__) == TIM_ENCODERINPUTPOLARITY_RISING) || \ + ((__POLARITY__) == TIM_ENCODERINPUTPOLARITY_FALLING)) + +#define IS_TIM_IC_POLARITY(__POLARITY__) (((__POLARITY__) == TIM_ICPOLARITY_RISING) || \ + ((__POLARITY__) == TIM_ICPOLARITY_FALLING) || \ + ((__POLARITY__) == TIM_ICPOLARITY_BOTHEDGE)) + +#define IS_TIM_IC_SELECTION(__SELECTION__) (((__SELECTION__) == TIM_ICSELECTION_DIRECTTI) || \ + ((__SELECTION__) == TIM_ICSELECTION_INDIRECTTI) || \ + ((__SELECTION__) == TIM_ICSELECTION_TRC)) + +#define IS_TIM_IC_PRESCALER(__PRESCALER__) (((__PRESCALER__) == TIM_ICPSC_DIV1) || \ + ((__PRESCALER__) == TIM_ICPSC_DIV2) || \ + ((__PRESCALER__) == TIM_ICPSC_DIV4) || \ + ((__PRESCALER__) == TIM_ICPSC_DIV8)) + +#define IS_TIM_OPM_MODE(__MODE__) (((__MODE__) == TIM_OPMODE_SINGLE) || \ + ((__MODE__) == TIM_OPMODE_REPETITIVE)) + +#define IS_TIM_ENCODER_MODE(__MODE__) (((__MODE__) == TIM_ENCODERMODE_TI1) || \ + ((__MODE__) == TIM_ENCODERMODE_TI2) || \ + ((__MODE__) == TIM_ENCODERMODE_TI12)) + +#define IS_TIM_DMA_SOURCE(__SOURCE__) ((((__SOURCE__) & 0xFFFF80FFU) == 0x00000000U) && ((__SOURCE__) != 0x00000000U)) + +#define IS_TIM_CHANNELS(__CHANNEL__) (((__CHANNEL__) == TIM_CHANNEL_1) || \ + ((__CHANNEL__) == TIM_CHANNEL_2) || \ + ((__CHANNEL__) == TIM_CHANNEL_3) || \ + ((__CHANNEL__) == TIM_CHANNEL_4) || \ + ((__CHANNEL__) == TIM_CHANNEL_5) || \ + ((__CHANNEL__) == TIM_CHANNEL_6) || \ + ((__CHANNEL__) == TIM_CHANNEL_ALL)) + +#define IS_TIM_OPM_CHANNELS(__CHANNEL__) (((__CHANNEL__) == TIM_CHANNEL_1) || \ + ((__CHANNEL__) == TIM_CHANNEL_2)) + +#define IS_TIM_PERIOD(__HANDLE__, __PERIOD__) \ + ((IS_TIM_32B_COUNTER_INSTANCE(((__HANDLE__)->Instance)) == 0U) ? (((__PERIOD__) > 0U) && ((__PERIOD__) <= 0x0000FFFFU)) : ((__PERIOD__) > 0U)) + +#define IS_TIM_COMPLEMENTARY_CHANNELS(__CHANNEL__) (((__CHANNEL__) == TIM_CHANNEL_1) || \ + ((__CHANNEL__) == TIM_CHANNEL_2) || \ + ((__CHANNEL__) == TIM_CHANNEL_3)) + +#define IS_TIM_CLOCKSOURCE(__CLOCK__) (((__CLOCK__) == TIM_CLOCKSOURCE_INTERNAL) || \ + ((__CLOCK__) == TIM_CLOCKSOURCE_ETRMODE1) || \ + ((__CLOCK__) == TIM_CLOCKSOURCE_ETRMODE2) || \ + ((__CLOCK__) == TIM_CLOCKSOURCE_TI1ED) || \ + ((__CLOCK__) == TIM_CLOCKSOURCE_TI1) || \ + ((__CLOCK__) == TIM_CLOCKSOURCE_TI2) || \ + ((__CLOCK__) == TIM_CLOCKSOURCE_ITR0) || \ + ((__CLOCK__) == TIM_CLOCKSOURCE_ITR1) || \ + ((__CLOCK__) == TIM_CLOCKSOURCE_ITR2) || \ + ((__CLOCK__) == TIM_CLOCKSOURCE_ITR3)) + +#define IS_TIM_CLOCKPOLARITY(__POLARITY__) (((__POLARITY__) == TIM_CLOCKPOLARITY_INVERTED) || \ + ((__POLARITY__) == TIM_CLOCKPOLARITY_NONINVERTED) || \ + ((__POLARITY__) == TIM_CLOCKPOLARITY_RISING) || \ + ((__POLARITY__) == TIM_CLOCKPOLARITY_FALLING) || \ + ((__POLARITY__) == TIM_CLOCKPOLARITY_BOTHEDGE)) + +#define IS_TIM_CLOCKPRESCALER(__PRESCALER__) (((__PRESCALER__) == TIM_CLOCKPRESCALER_DIV1) || \ + ((__PRESCALER__) == TIM_CLOCKPRESCALER_DIV2) || \ + ((__PRESCALER__) == TIM_CLOCKPRESCALER_DIV4) || \ + ((__PRESCALER__) == TIM_CLOCKPRESCALER_DIV8)) + +#define IS_TIM_CLOCKFILTER(__ICFILTER__) ((__ICFILTER__) <= 0xFU) + +#define IS_TIM_CLEARINPUT_POLARITY(__POLARITY__) (((__POLARITY__) == TIM_CLEARINPUTPOLARITY_INVERTED) || \ + ((__POLARITY__) == TIM_CLEARINPUTPOLARITY_NONINVERTED)) + +#define IS_TIM_CLEARINPUT_PRESCALER(__PRESCALER__) (((__PRESCALER__) == TIM_CLEARINPUTPRESCALER_DIV1) || \ + ((__PRESCALER__) == TIM_CLEARINPUTPRESCALER_DIV2) || \ + ((__PRESCALER__) == TIM_CLEARINPUTPRESCALER_DIV4) || \ + ((__PRESCALER__) == TIM_CLEARINPUTPRESCALER_DIV8)) + +#define IS_TIM_CLEARINPUT_FILTER(__ICFILTER__) ((__ICFILTER__) <= 0xFU) + +#define IS_TIM_OSSR_STATE(__STATE__) (((__STATE__) == TIM_OSSR_ENABLE) || \ + ((__STATE__) == TIM_OSSR_DISABLE)) + +#define IS_TIM_OSSI_STATE(__STATE__) (((__STATE__) == TIM_OSSI_ENABLE) || \ + ((__STATE__) == TIM_OSSI_DISABLE)) + +#define IS_TIM_LOCK_LEVEL(__LEVEL__) (((__LEVEL__) == TIM_LOCKLEVEL_OFF) || \ + ((__LEVEL__) == TIM_LOCKLEVEL_1) || \ + ((__LEVEL__) == TIM_LOCKLEVEL_2) || \ + ((__LEVEL__) == TIM_LOCKLEVEL_3)) + +#define IS_TIM_BREAK_FILTER(__BRKFILTER__) ((__BRKFILTER__) <= 0xFUL) + + +#define IS_TIM_BREAK_STATE(__STATE__) (((__STATE__) == TIM_BREAK_ENABLE) || \ + ((__STATE__) == TIM_BREAK_DISABLE)) + +#define IS_TIM_BREAK_POLARITY(__POLARITY__) (((__POLARITY__) == TIM_BREAKPOLARITY_LOW) || \ + ((__POLARITY__) == TIM_BREAKPOLARITY_HIGH)) + +#define IS_TIM_BREAK_AFMODE(__AFMODE__) (((__AFMODE__) == TIM_BREAK_AFMODE_INPUT) || \ + ((__AFMODE__) == TIM_BREAK_AFMODE_BIDIRECTIONAL)) + + +#define IS_TIM_BREAK2_STATE(__STATE__) (((__STATE__) == TIM_BREAK2_ENABLE) || \ + ((__STATE__) == TIM_BREAK2_DISABLE)) + +#define IS_TIM_BREAK2_POLARITY(__POLARITY__) (((__POLARITY__) == TIM_BREAK2POLARITY_LOW) || \ + ((__POLARITY__) == TIM_BREAK2POLARITY_HIGH)) + +#define IS_TIM_BREAK2_AFMODE(__AFMODE__) (((__AFMODE__) == TIM_BREAK2_AFMODE_INPUT) || \ + ((__AFMODE__) == TIM_BREAK2_AFMODE_BIDIRECTIONAL)) + + +#define IS_TIM_AUTOMATIC_OUTPUT_STATE(__STATE__) (((__STATE__) == TIM_AUTOMATICOUTPUT_ENABLE) || \ + ((__STATE__) == TIM_AUTOMATICOUTPUT_DISABLE)) + +#define IS_TIM_GROUPCH5(__OCREF__) ((((__OCREF__) & 0x1FFFFFFFU) == 0x00000000U)) + +#define IS_TIM_TRGO_SOURCE(__SOURCE__) (((__SOURCE__) == TIM_TRGO_RESET) || \ + ((__SOURCE__) == TIM_TRGO_ENABLE) || \ + ((__SOURCE__) == TIM_TRGO_UPDATE) || \ + ((__SOURCE__) == TIM_TRGO_OC1) || \ + ((__SOURCE__) == TIM_TRGO_OC1REF) || \ + ((__SOURCE__) == TIM_TRGO_OC2REF) || \ + ((__SOURCE__) == TIM_TRGO_OC3REF) || \ + ((__SOURCE__) == TIM_TRGO_OC4REF)) + +#define IS_TIM_TRGO2_SOURCE(__SOURCE__) (((__SOURCE__) == TIM_TRGO2_RESET) || \ + ((__SOURCE__) == TIM_TRGO2_ENABLE) || \ + ((__SOURCE__) == TIM_TRGO2_UPDATE) || \ + ((__SOURCE__) == TIM_TRGO2_OC1) || \ + ((__SOURCE__) == TIM_TRGO2_OC1REF) || \ + ((__SOURCE__) == TIM_TRGO2_OC2REF) || \ + ((__SOURCE__) == TIM_TRGO2_OC3REF) || \ + ((__SOURCE__) == TIM_TRGO2_OC3REF) || \ + ((__SOURCE__) == TIM_TRGO2_OC4REF) || \ + ((__SOURCE__) == TIM_TRGO2_OC5REF) || \ + ((__SOURCE__) == TIM_TRGO2_OC6REF) || \ + ((__SOURCE__) == TIM_TRGO2_OC4REF_RISINGFALLING) || \ + ((__SOURCE__) == TIM_TRGO2_OC6REF_RISINGFALLING) || \ + ((__SOURCE__) == TIM_TRGO2_OC4REF_RISING_OC6REF_RISING) || \ + ((__SOURCE__) == TIM_TRGO2_OC4REF_RISING_OC6REF_FALLING) || \ + ((__SOURCE__) == TIM_TRGO2_OC5REF_RISING_OC6REF_RISING) || \ + ((__SOURCE__) == TIM_TRGO2_OC5REF_RISING_OC6REF_FALLING)) + +#define IS_TIM_MSM_STATE(__STATE__) (((__STATE__) == TIM_MASTERSLAVEMODE_ENABLE) || \ + ((__STATE__) == TIM_MASTERSLAVEMODE_DISABLE)) + +#define IS_TIM_SLAVE_MODE(__MODE__) (((__MODE__) == TIM_SLAVEMODE_DISABLE) || \ + ((__MODE__) == TIM_SLAVEMODE_RESET) || \ + ((__MODE__) == TIM_SLAVEMODE_GATED) || \ + ((__MODE__) == TIM_SLAVEMODE_TRIGGER) || \ + ((__MODE__) == TIM_SLAVEMODE_EXTERNAL1) || \ + ((__MODE__) == TIM_SLAVEMODE_COMBINED_RESETTRIGGER)) + +#define IS_TIM_PWM_MODE(__MODE__) (((__MODE__) == TIM_OCMODE_PWM1) || \ + ((__MODE__) == TIM_OCMODE_PWM2) || \ + ((__MODE__) == TIM_OCMODE_COMBINED_PWM1) || \ + ((__MODE__) == TIM_OCMODE_COMBINED_PWM2) || \ + ((__MODE__) == TIM_OCMODE_ASSYMETRIC_PWM1) || \ + ((__MODE__) == TIM_OCMODE_ASSYMETRIC_PWM2)) + +#define IS_TIM_OC_MODE(__MODE__) (((__MODE__) == TIM_OCMODE_TIMING) || \ + ((__MODE__) == TIM_OCMODE_ACTIVE) || \ + ((__MODE__) == TIM_OCMODE_INACTIVE) || \ + ((__MODE__) == TIM_OCMODE_TOGGLE) || \ + ((__MODE__) == TIM_OCMODE_FORCED_ACTIVE) || \ + ((__MODE__) == TIM_OCMODE_FORCED_INACTIVE) || \ + ((__MODE__) == TIM_OCMODE_RETRIGERRABLE_OPM1) || \ + ((__MODE__) == TIM_OCMODE_RETRIGERRABLE_OPM2)) + +#if defined(USB_BASE) +#define IS_TIM_TRIGGER_SELECTION(__SELECTION__) (((__SELECTION__) == TIM_TS_ITR0) || \ + ((__SELECTION__) == TIM_TS_ITR1) || \ + ((__SELECTION__) == TIM_TS_ITR2) || \ + ((__SELECTION__) == TIM_TS_ITR3) || \ + ((__SELECTION__) == TIM_TS_ITR7) || \ + ((__SELECTION__) == TIM_TS_TI1F_ED) || \ + ((__SELECTION__) == TIM_TS_TI1FP1) || \ + ((__SELECTION__) == TIM_TS_TI2FP2) || \ + ((__SELECTION__) == TIM_TS_ETRF)) +#else +#define IS_TIM_TRIGGER_SELECTION(__SELECTION__) (((__SELECTION__) == TIM_TS_ITR0) || \ + ((__SELECTION__) == TIM_TS_ITR1) || \ + ((__SELECTION__) == TIM_TS_ITR2) || \ + ((__SELECTION__) == TIM_TS_ITR3) || \ + ((__SELECTION__) == TIM_TS_TI1F_ED) || \ + ((__SELECTION__) == TIM_TS_TI1FP1) || \ + ((__SELECTION__) == TIM_TS_TI2FP2) || \ + ((__SELECTION__) == TIM_TS_ETRF)) +#endif /* USB_BASE */ + +#define IS_TIM_INTERNAL_TRIGGEREVENT_SELECTION(__SELECTION__) (((__SELECTION__) == TIM_TS_ITR0) || \ + ((__SELECTION__) == TIM_TS_ITR1) || \ + ((__SELECTION__) == TIM_TS_ITR2) || \ + ((__SELECTION__) == TIM_TS_ITR3) || \ + ((__SELECTION__) == TIM_TS_NONE)) + +#define IS_TIM_TRIGGERPOLARITY(__POLARITY__) (((__POLARITY__) == TIM_TRIGGERPOLARITY_INVERTED ) || \ + ((__POLARITY__) == TIM_TRIGGERPOLARITY_NONINVERTED) || \ + ((__POLARITY__) == TIM_TRIGGERPOLARITY_RISING ) || \ + ((__POLARITY__) == TIM_TRIGGERPOLARITY_FALLING ) || \ + ((__POLARITY__) == TIM_TRIGGERPOLARITY_BOTHEDGE )) + +#define IS_TIM_TRIGGERPRESCALER(__PRESCALER__) (((__PRESCALER__) == TIM_TRIGGERPRESCALER_DIV1) || \ + ((__PRESCALER__) == TIM_TRIGGERPRESCALER_DIV2) || \ + ((__PRESCALER__) == TIM_TRIGGERPRESCALER_DIV4) || \ + ((__PRESCALER__) == TIM_TRIGGERPRESCALER_DIV8)) + +#define IS_TIM_TRIGGERFILTER(__ICFILTER__) ((__ICFILTER__) <= 0xFU) + +#define IS_TIM_TI1SELECTION(__TI1SELECTION__) (((__TI1SELECTION__) == TIM_TI1SELECTION_CH1) || \ + ((__TI1SELECTION__) == TIM_TI1SELECTION_XORCOMBINATION)) + +#define IS_TIM_DMA_LENGTH(__LENGTH__) (((__LENGTH__) == TIM_DMABURSTLENGTH_1TRANSFER) || \ + ((__LENGTH__) == TIM_DMABURSTLENGTH_2TRANSFERS) || \ + ((__LENGTH__) == TIM_DMABURSTLENGTH_3TRANSFERS) || \ + ((__LENGTH__) == TIM_DMABURSTLENGTH_4TRANSFERS) || \ + ((__LENGTH__) == TIM_DMABURSTLENGTH_5TRANSFERS) || \ + ((__LENGTH__) == TIM_DMABURSTLENGTH_6TRANSFERS) || \ + ((__LENGTH__) == TIM_DMABURSTLENGTH_7TRANSFERS) || \ + ((__LENGTH__) == TIM_DMABURSTLENGTH_8TRANSFERS) || \ + ((__LENGTH__) == TIM_DMABURSTLENGTH_9TRANSFERS) || \ + ((__LENGTH__) == TIM_DMABURSTLENGTH_10TRANSFERS) || \ + ((__LENGTH__) == TIM_DMABURSTLENGTH_11TRANSFERS) || \ + ((__LENGTH__) == TIM_DMABURSTLENGTH_12TRANSFERS) || \ + ((__LENGTH__) == TIM_DMABURSTLENGTH_13TRANSFERS) || \ + ((__LENGTH__) == TIM_DMABURSTLENGTH_14TRANSFERS) || \ + ((__LENGTH__) == TIM_DMABURSTLENGTH_15TRANSFERS) || \ + ((__LENGTH__) == TIM_DMABURSTLENGTH_16TRANSFERS) || \ + ((__LENGTH__) == TIM_DMABURSTLENGTH_17TRANSFERS) || \ + ((__LENGTH__) == TIM_DMABURSTLENGTH_18TRANSFERS)) + +#define IS_TIM_DMA_DATA_LENGTH(LENGTH) (((LENGTH) >= 0x1U) && ((LENGTH) < 0x10000U)) + +#define IS_TIM_IC_FILTER(__ICFILTER__) ((__ICFILTER__) <= 0xFU) + +#define IS_TIM_DEADTIME(__DEADTIME__) ((__DEADTIME__) <= 0xFFU) + +#if defined(PWR_PVD_SUPPORT) +#define IS_TIM_BREAK_SYSTEM(__CONFIG__) (((__CONFIG__) == TIM_BREAK_SYSTEM_ECC) || \ + ((__CONFIG__) == TIM_BREAK_SYSTEM_PVD) || \ + ((__CONFIG__) == TIM_BREAK_SYSTEM_SRAM_PARITY_ERROR) || \ + ((__CONFIG__) == TIM_BREAK_SYSTEM_LOCKUP)) +#else +#define IS_TIM_BREAK_SYSTEM(__CONFIG__) (((__CONFIG__) == TIM_BREAK_SYSTEM_ECC) || \ + ((__CONFIG__) == TIM_BREAK_SYSTEM_SRAM_PARITY_ERROR) || \ + ((__CONFIG__) == TIM_BREAK_SYSTEM_LOCKUP)) +#endif /* PWR_PVD_SUPPORT */ + +#define IS_TIM_SLAVEMODE_TRIGGER_ENABLED(__TRIGGER__) (((__TRIGGER__) == TIM_SLAVEMODE_TRIGGER) || \ + ((__TRIGGER__) == TIM_SLAVEMODE_COMBINED_RESETTRIGGER)) + +#define TIM_SET_ICPRESCALERVALUE(__HANDLE__, __CHANNEL__, __ICPSC__) \ + (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 |= (__ICPSC__)) :\ + ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 |= ((__ICPSC__) << 8U)) :\ + ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 |= (__ICPSC__)) :\ + ((__HANDLE__)->Instance->CCMR2 |= ((__ICPSC__) << 8U))) + +#define TIM_RESET_ICPRESCALERVALUE(__HANDLE__, __CHANNEL__) \ + (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 &= ~TIM_CCMR1_IC1PSC) :\ + ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 &= ~TIM_CCMR1_IC2PSC) :\ + ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 &= ~TIM_CCMR2_IC3PSC) :\ + ((__HANDLE__)->Instance->CCMR2 &= ~TIM_CCMR2_IC4PSC)) + +#define TIM_SET_CAPTUREPOLARITY(__HANDLE__, __CHANNEL__, __POLARITY__) \ + (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCER |= (__POLARITY__)) :\ + ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCER |= ((__POLARITY__) << 4U)) :\ + ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCER |= ((__POLARITY__) << 8U)) :\ + ((__HANDLE__)->Instance->CCER |= (((__POLARITY__) << 12U)))) + +#define TIM_RESET_CAPTUREPOLARITY(__HANDLE__, __CHANNEL__) \ + (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCER &= ~(TIM_CCER_CC1P | TIM_CCER_CC1NP)) :\ + ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCER &= ~(TIM_CCER_CC2P | TIM_CCER_CC2NP)) :\ + ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCER &= ~(TIM_CCER_CC3P | TIM_CCER_CC3NP)) :\ + ((__HANDLE__)->Instance->CCER &= ~(TIM_CCER_CC4P | TIM_CCER_CC4NP))) + +#define TIM_CHANNEL_STATE_GET(__HANDLE__, __CHANNEL__)\ + (((__CHANNEL__) == TIM_CHANNEL_1) ? (__HANDLE__)->ChannelState[0] :\ + ((__CHANNEL__) == TIM_CHANNEL_2) ? (__HANDLE__)->ChannelState[1] :\ + ((__CHANNEL__) == TIM_CHANNEL_3) ? (__HANDLE__)->ChannelState[2] :\ + ((__CHANNEL__) == TIM_CHANNEL_4) ? (__HANDLE__)->ChannelState[3] :\ + ((__CHANNEL__) == TIM_CHANNEL_5) ? (__HANDLE__)->ChannelState[4] :\ + (__HANDLE__)->ChannelState[5]) + +#define TIM_CHANNEL_STATE_SET(__HANDLE__, __CHANNEL__, __CHANNEL_STATE__) \ + (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->ChannelState[0] = (__CHANNEL_STATE__)) :\ + ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->ChannelState[1] = (__CHANNEL_STATE__)) :\ + ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->ChannelState[2] = (__CHANNEL_STATE__)) :\ + ((__CHANNEL__) == TIM_CHANNEL_4) ? ((__HANDLE__)->ChannelState[3] = (__CHANNEL_STATE__)) :\ + ((__CHANNEL__) == TIM_CHANNEL_5) ? ((__HANDLE__)->ChannelState[4] = (__CHANNEL_STATE__)) :\ + ((__HANDLE__)->ChannelState[5] = (__CHANNEL_STATE__))) + +#define TIM_CHANNEL_STATE_SET_ALL(__HANDLE__, __CHANNEL_STATE__) do { \ + (__HANDLE__)->ChannelState[0] = \ + (__CHANNEL_STATE__); \ + (__HANDLE__)->ChannelState[1] = \ + (__CHANNEL_STATE__); \ + (__HANDLE__)->ChannelState[2] = \ + (__CHANNEL_STATE__); \ + (__HANDLE__)->ChannelState[3] = \ + (__CHANNEL_STATE__); \ + (__HANDLE__)->ChannelState[4] = \ + (__CHANNEL_STATE__); \ + (__HANDLE__)->ChannelState[5] = \ + (__CHANNEL_STATE__); \ + } while(0) + +#define TIM_CHANNEL_N_STATE_GET(__HANDLE__, __CHANNEL__)\ + (((__CHANNEL__) == TIM_CHANNEL_1) ? (__HANDLE__)->ChannelNState[0] :\ + ((__CHANNEL__) == TIM_CHANNEL_2) ? (__HANDLE__)->ChannelNState[1] :\ + ((__CHANNEL__) == TIM_CHANNEL_3) ? (__HANDLE__)->ChannelNState[2] :\ + (__HANDLE__)->ChannelNState[3]) + +#define TIM_CHANNEL_N_STATE_SET(__HANDLE__, __CHANNEL__, __CHANNEL_STATE__) \ + (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->ChannelNState[0] = (__CHANNEL_STATE__)) :\ + ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->ChannelNState[1] = (__CHANNEL_STATE__)) :\ + ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->ChannelNState[2] = (__CHANNEL_STATE__)) :\ + ((__HANDLE__)->ChannelNState[3] = (__CHANNEL_STATE__))) + +#define TIM_CHANNEL_N_STATE_SET_ALL(__HANDLE__, __CHANNEL_STATE__) do { \ + (__HANDLE__)->ChannelNState[0] = \ + (__CHANNEL_STATE__); \ + (__HANDLE__)->ChannelNState[1] = \ + (__CHANNEL_STATE__); \ + (__HANDLE__)->ChannelNState[2] = \ + (__CHANNEL_STATE__); \ + (__HANDLE__)->ChannelNState[3] = \ + (__CHANNEL_STATE__); \ + } while(0) + +/** + * @} + */ +/* End of private macros -----------------------------------------------------*/ + +/* Include TIM HAL Extended module */ +#include "stm32g0xx_hal_tim_ex.h" + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup TIM_Exported_Functions TIM Exported Functions + * @{ + */ + +/** @addtogroup TIM_Exported_Functions_Group1 TIM Time Base functions + * @brief Time Base functions + * @{ + */ +/* Time Base functions ********************************************************/ +HAL_StatusTypeDef HAL_TIM_Base_Init(TIM_HandleTypeDef *htim); +HAL_StatusTypeDef HAL_TIM_Base_DeInit(TIM_HandleTypeDef *htim); +void HAL_TIM_Base_MspInit(TIM_HandleTypeDef *htim); +void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef *htim); +/* Blocking mode: Polling */ +HAL_StatusTypeDef HAL_TIM_Base_Start(TIM_HandleTypeDef *htim); +HAL_StatusTypeDef HAL_TIM_Base_Stop(TIM_HandleTypeDef *htim); +/* Non-Blocking mode: Interrupt */ +HAL_StatusTypeDef HAL_TIM_Base_Start_IT(TIM_HandleTypeDef *htim); +HAL_StatusTypeDef HAL_TIM_Base_Stop_IT(TIM_HandleTypeDef *htim); +/* Non-Blocking mode: DMA */ +HAL_StatusTypeDef HAL_TIM_Base_Start_DMA(TIM_HandleTypeDef *htim, const uint32_t *pData, uint16_t Length); +HAL_StatusTypeDef HAL_TIM_Base_Stop_DMA(TIM_HandleTypeDef *htim); +/** + * @} + */ + +/** @addtogroup TIM_Exported_Functions_Group2 TIM Output Compare functions + * @brief TIM Output Compare functions + * @{ + */ +/* Timer Output Compare functions *********************************************/ +HAL_StatusTypeDef HAL_TIM_OC_Init(TIM_HandleTypeDef *htim); +HAL_StatusTypeDef HAL_TIM_OC_DeInit(TIM_HandleTypeDef *htim); +void HAL_TIM_OC_MspInit(TIM_HandleTypeDef *htim); +void HAL_TIM_OC_MspDeInit(TIM_HandleTypeDef *htim); +/* Blocking mode: Polling */ +HAL_StatusTypeDef HAL_TIM_OC_Start(TIM_HandleTypeDef *htim, uint32_t Channel); +HAL_StatusTypeDef HAL_TIM_OC_Stop(TIM_HandleTypeDef *htim, uint32_t Channel); +/* Non-Blocking mode: Interrupt */ +HAL_StatusTypeDef HAL_TIM_OC_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel); +HAL_StatusTypeDef HAL_TIM_OC_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel); +/* Non-Blocking mode: DMA */ +HAL_StatusTypeDef HAL_TIM_OC_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, const uint32_t *pData, + uint16_t Length); +HAL_StatusTypeDef HAL_TIM_OC_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel); +/** + * @} + */ + +/** @addtogroup TIM_Exported_Functions_Group3 TIM PWM functions + * @brief TIM PWM functions + * @{ + */ +/* Timer PWM functions ********************************************************/ +HAL_StatusTypeDef HAL_TIM_PWM_Init(TIM_HandleTypeDef *htim); +HAL_StatusTypeDef HAL_TIM_PWM_DeInit(TIM_HandleTypeDef *htim); +void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef *htim); +void HAL_TIM_PWM_MspDeInit(TIM_HandleTypeDef *htim); +/* Blocking mode: Polling */ +HAL_StatusTypeDef HAL_TIM_PWM_Start(TIM_HandleTypeDef *htim, uint32_t Channel); +HAL_StatusTypeDef HAL_TIM_PWM_Stop(TIM_HandleTypeDef *htim, uint32_t Channel); +/* Non-Blocking mode: Interrupt */ +HAL_StatusTypeDef HAL_TIM_PWM_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel); +HAL_StatusTypeDef HAL_TIM_PWM_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel); +/* Non-Blocking mode: DMA */ +HAL_StatusTypeDef HAL_TIM_PWM_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, const uint32_t *pData, + uint16_t Length); +HAL_StatusTypeDef HAL_TIM_PWM_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel); +/** + * @} + */ + +/** @addtogroup TIM_Exported_Functions_Group4 TIM Input Capture functions + * @brief TIM Input Capture functions + * @{ + */ +/* Timer Input Capture functions **********************************************/ +HAL_StatusTypeDef HAL_TIM_IC_Init(TIM_HandleTypeDef *htim); +HAL_StatusTypeDef HAL_TIM_IC_DeInit(TIM_HandleTypeDef *htim); +void HAL_TIM_IC_MspInit(TIM_HandleTypeDef *htim); +void HAL_TIM_IC_MspDeInit(TIM_HandleTypeDef *htim); +/* Blocking mode: Polling */ +HAL_StatusTypeDef HAL_TIM_IC_Start(TIM_HandleTypeDef *htim, uint32_t Channel); +HAL_StatusTypeDef HAL_TIM_IC_Stop(TIM_HandleTypeDef *htim, uint32_t Channel); +/* Non-Blocking mode: Interrupt */ +HAL_StatusTypeDef HAL_TIM_IC_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel); +HAL_StatusTypeDef HAL_TIM_IC_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel); +/* Non-Blocking mode: DMA */ +HAL_StatusTypeDef HAL_TIM_IC_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length); +HAL_StatusTypeDef HAL_TIM_IC_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel); +/** + * @} + */ + +/** @addtogroup TIM_Exported_Functions_Group5 TIM One Pulse functions + * @brief TIM One Pulse functions + * @{ + */ +/* Timer One Pulse functions **************************************************/ +HAL_StatusTypeDef HAL_TIM_OnePulse_Init(TIM_HandleTypeDef *htim, uint32_t OnePulseMode); +HAL_StatusTypeDef HAL_TIM_OnePulse_DeInit(TIM_HandleTypeDef *htim); +void HAL_TIM_OnePulse_MspInit(TIM_HandleTypeDef *htim); +void HAL_TIM_OnePulse_MspDeInit(TIM_HandleTypeDef *htim); +/* Blocking mode: Polling */ +HAL_StatusTypeDef HAL_TIM_OnePulse_Start(TIM_HandleTypeDef *htim, uint32_t OutputChannel); +HAL_StatusTypeDef HAL_TIM_OnePulse_Stop(TIM_HandleTypeDef *htim, uint32_t OutputChannel); +/* Non-Blocking mode: Interrupt */ +HAL_StatusTypeDef HAL_TIM_OnePulse_Start_IT(TIM_HandleTypeDef *htim, uint32_t OutputChannel); +HAL_StatusTypeDef HAL_TIM_OnePulse_Stop_IT(TIM_HandleTypeDef *htim, uint32_t OutputChannel); +/** + * @} + */ + +/** @addtogroup TIM_Exported_Functions_Group6 TIM Encoder functions + * @brief TIM Encoder functions + * @{ + */ +/* Timer Encoder functions ****************************************************/ +HAL_StatusTypeDef HAL_TIM_Encoder_Init(TIM_HandleTypeDef *htim, TIM_Encoder_InitTypeDef *sConfig); +HAL_StatusTypeDef HAL_TIM_Encoder_DeInit(TIM_HandleTypeDef *htim); +void HAL_TIM_Encoder_MspInit(TIM_HandleTypeDef *htim); +void HAL_TIM_Encoder_MspDeInit(TIM_HandleTypeDef *htim); +/* Blocking mode: Polling */ +HAL_StatusTypeDef HAL_TIM_Encoder_Start(TIM_HandleTypeDef *htim, uint32_t Channel); +HAL_StatusTypeDef HAL_TIM_Encoder_Stop(TIM_HandleTypeDef *htim, uint32_t Channel); +/* Non-Blocking mode: Interrupt */ +HAL_StatusTypeDef HAL_TIM_Encoder_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel); +HAL_StatusTypeDef HAL_TIM_Encoder_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel); +/* Non-Blocking mode: DMA */ +HAL_StatusTypeDef HAL_TIM_Encoder_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData1, + uint32_t *pData2, uint16_t Length); +HAL_StatusTypeDef HAL_TIM_Encoder_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel); +/** + * @} + */ + +/** @addtogroup TIM_Exported_Functions_Group7 TIM IRQ handler management + * @brief IRQ handler management + * @{ + */ +/* Interrupt Handler functions ***********************************************/ +void HAL_TIM_IRQHandler(TIM_HandleTypeDef *htim); +/** + * @} + */ + +/** @defgroup TIM_Exported_Functions_Group8 TIM Peripheral Control functions + * @brief Peripheral Control functions + * @{ + */ +/* Control functions *********************************************************/ +HAL_StatusTypeDef HAL_TIM_OC_ConfigChannel(TIM_HandleTypeDef *htim, const TIM_OC_InitTypeDef *sConfig, + uint32_t Channel); +HAL_StatusTypeDef HAL_TIM_PWM_ConfigChannel(TIM_HandleTypeDef *htim, const TIM_OC_InitTypeDef *sConfig, + uint32_t Channel); +HAL_StatusTypeDef HAL_TIM_IC_ConfigChannel(TIM_HandleTypeDef *htim, const TIM_IC_InitTypeDef *sConfig, + uint32_t Channel); +HAL_StatusTypeDef HAL_TIM_OnePulse_ConfigChannel(TIM_HandleTypeDef *htim, TIM_OnePulse_InitTypeDef *sConfig, + uint32_t OutputChannel, uint32_t InputChannel); +HAL_StatusTypeDef HAL_TIM_ConfigOCrefClear(TIM_HandleTypeDef *htim, + const TIM_ClearInputConfigTypeDef *sClearInputConfig, + uint32_t Channel); +HAL_StatusTypeDef HAL_TIM_ConfigClockSource(TIM_HandleTypeDef *htim, const TIM_ClockConfigTypeDef *sClockSourceConfig); +HAL_StatusTypeDef HAL_TIM_ConfigTI1Input(TIM_HandleTypeDef *htim, uint32_t TI1_Selection); +HAL_StatusTypeDef HAL_TIM_SlaveConfigSynchro(TIM_HandleTypeDef *htim, const TIM_SlaveConfigTypeDef *sSlaveConfig); +HAL_StatusTypeDef HAL_TIM_SlaveConfigSynchro_IT(TIM_HandleTypeDef *htim, const TIM_SlaveConfigTypeDef *sSlaveConfig); +HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress, + uint32_t BurstRequestSrc, const uint32_t *BurstBuffer, uint32_t BurstLength); +HAL_StatusTypeDef HAL_TIM_DMABurst_MultiWriteStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress, + uint32_t BurstRequestSrc, const uint32_t *BurstBuffer, + uint32_t BurstLength, uint32_t DataLength); +HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStop(TIM_HandleTypeDef *htim, uint32_t BurstRequestSrc); +HAL_StatusTypeDef HAL_TIM_DMABurst_ReadStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress, + uint32_t BurstRequestSrc, uint32_t *BurstBuffer, uint32_t BurstLength); +HAL_StatusTypeDef HAL_TIM_DMABurst_MultiReadStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress, + uint32_t BurstRequestSrc, uint32_t *BurstBuffer, + uint32_t BurstLength, uint32_t DataLength); +HAL_StatusTypeDef HAL_TIM_DMABurst_ReadStop(TIM_HandleTypeDef *htim, uint32_t BurstRequestSrc); +HAL_StatusTypeDef HAL_TIM_GenerateEvent(TIM_HandleTypeDef *htim, uint32_t EventSource); +uint32_t HAL_TIM_ReadCapturedValue(const TIM_HandleTypeDef *htim, uint32_t Channel); +/** + * @} + */ + +/** @defgroup TIM_Exported_Functions_Group9 TIM Callbacks functions + * @brief TIM Callbacks functions + * @{ + */ +/* Callback in non blocking modes (Interrupt and DMA) *************************/ +void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim); +void HAL_TIM_PeriodElapsedHalfCpltCallback(TIM_HandleTypeDef *htim); +void HAL_TIM_OC_DelayElapsedCallback(TIM_HandleTypeDef *htim); +void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim); +void HAL_TIM_IC_CaptureHalfCpltCallback(TIM_HandleTypeDef *htim); +void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim); +void HAL_TIM_PWM_PulseFinishedHalfCpltCallback(TIM_HandleTypeDef *htim); +void HAL_TIM_TriggerCallback(TIM_HandleTypeDef *htim); +void HAL_TIM_TriggerHalfCpltCallback(TIM_HandleTypeDef *htim); +void HAL_TIM_ErrorCallback(TIM_HandleTypeDef *htim); + +/* Callbacks Register/UnRegister functions ***********************************/ +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) +HAL_StatusTypeDef HAL_TIM_RegisterCallback(TIM_HandleTypeDef *htim, HAL_TIM_CallbackIDTypeDef CallbackID, + pTIM_CallbackTypeDef pCallback); +HAL_StatusTypeDef HAL_TIM_UnRegisterCallback(TIM_HandleTypeDef *htim, HAL_TIM_CallbackIDTypeDef CallbackID); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + +/** + * @} + */ + +/** @defgroup TIM_Exported_Functions_Group10 TIM Peripheral State functions + * @brief Peripheral State functions + * @{ + */ +/* Peripheral State functions ************************************************/ +HAL_TIM_StateTypeDef HAL_TIM_Base_GetState(const TIM_HandleTypeDef *htim); +HAL_TIM_StateTypeDef HAL_TIM_OC_GetState(const TIM_HandleTypeDef *htim); +HAL_TIM_StateTypeDef HAL_TIM_PWM_GetState(const TIM_HandleTypeDef *htim); +HAL_TIM_StateTypeDef HAL_TIM_IC_GetState(const TIM_HandleTypeDef *htim); +HAL_TIM_StateTypeDef HAL_TIM_OnePulse_GetState(const TIM_HandleTypeDef *htim); +HAL_TIM_StateTypeDef HAL_TIM_Encoder_GetState(const TIM_HandleTypeDef *htim); + +/* Peripheral Channel state functions ************************************************/ +HAL_TIM_ActiveChannel HAL_TIM_GetActiveChannel(const TIM_HandleTypeDef *htim); +HAL_TIM_ChannelStateTypeDef HAL_TIM_GetChannelState(const TIM_HandleTypeDef *htim, uint32_t Channel); +HAL_TIM_DMABurstStateTypeDef HAL_TIM_DMABurstState(const TIM_HandleTypeDef *htim); +/** + * @} + */ + +/** + * @} + */ +/* End of exported functions -------------------------------------------------*/ + +/* Private functions----------------------------------------------------------*/ +/** @defgroup TIM_Private_Functions TIM Private Functions + * @{ + */ +void TIM_Base_SetConfig(TIM_TypeDef *TIMx, const TIM_Base_InitTypeDef *Structure); +void TIM_TI1_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection, uint32_t TIM_ICFilter); +void TIM_OC2_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config); +void TIM_ETR_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ExtTRGPrescaler, + uint32_t TIM_ExtTRGPolarity, uint32_t ExtTRGFilter); + +void TIM_DMADelayPulseHalfCplt(DMA_HandleTypeDef *hdma); +void TIM_DMAError(DMA_HandleTypeDef *hdma); +void TIM_DMACaptureCplt(DMA_HandleTypeDef *hdma); +void TIM_DMACaptureHalfCplt(DMA_HandleTypeDef *hdma); +void TIM_CCxChannelCmd(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ChannelState); + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) +void TIM_ResetCallback(TIM_HandleTypeDef *htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + +/** + * @} + */ +/* End of private functions --------------------------------------------------*/ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32G0xx_HAL_TIM_H */ diff --git a/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_tim_ex.h b/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_tim_ex.h new file mode 100644 index 0000000..7fb738c --- /dev/null +++ b/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_tim_ex.h @@ -0,0 +1,494 @@ +/** + ****************************************************************************** + * @file stm32g0xx_hal_tim_ex.h + * @author MCD Application Team + * @brief Header file of TIM HAL Extended module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2018 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32G0xx_HAL_TIM_EX_H +#define STM32G0xx_HAL_TIM_EX_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32g0xx_hal_def.h" + +/** @addtogroup STM32G0xx_HAL_Driver + * @{ + */ + +/** @addtogroup TIMEx + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ +/** @defgroup TIMEx_Exported_Types TIM Extended Exported Types + * @{ + */ + +/** + * @brief TIM Hall sensor Configuration Structure definition + */ + +typedef struct +{ + uint32_t IC1Polarity; /*!< Specifies the active edge of the input signal. + This parameter can be a value of @ref TIM_Input_Capture_Polarity */ + + uint32_t IC1Prescaler; /*!< Specifies the Input Capture Prescaler. + This parameter can be a value of @ref TIM_Input_Capture_Prescaler */ + + uint32_t IC1Filter; /*!< Specifies the input capture filter. + This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */ + + uint32_t Commutation_Delay; /*!< Specifies the pulse value to be loaded into the Capture Compare Register. + This parameter can be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF */ +} TIM_HallSensor_InitTypeDef; + +/** + * @brief TIM Break/Break2 input configuration + */ +typedef struct +{ + uint32_t Source; /*!< Specifies the source of the timer break input. + This parameter can be a value of @ref TIMEx_Break_Input_Source */ + uint32_t Enable; /*!< Specifies whether or not the break input source is enabled. + This parameter can be a value of @ref TIMEx_Break_Input_Source_Enable */ + uint32_t Polarity; /*!< Specifies the break input source polarity. + This parameter can be a value of @ref TIMEx_Break_Input_Source_Polarity */ +} TIMEx_BreakInputConfigTypeDef; + +/** + * @} + */ +/* End of exported types -----------------------------------------------------*/ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup TIMEx_Exported_Constants TIM Extended Exported Constants + * @{ + */ + +/** @defgroup TIMEx_Remap TIM Extended Remapping + * @{ + */ +#define TIM_TIM1_ETR_GPIO 0x00000000U /* !< TIM1_ETR is connected to GPIO */ +#if defined(COMP1) && defined(COMP2) +#define TIM_TIM1_ETR_COMP1 TIM1_AF1_ETRSEL_0 /* !< TIM1_ETR is connected to COMP1 output */ +#define TIM_TIM1_ETR_COMP2 TIM1_AF1_ETRSEL_1 /* !< TIM1_ETR is connected to COMP2 output */ +#endif /* COMP1 && COMP2 */ +#define TIM_TIM1_ETR_ADC1_AWD1 (TIM1_AF1_ETRSEL_1 | TIM1_AF1_ETRSEL_0) /* !< TIM1_ETR is connected to ADC1 AWD1 */ +#define TIM_TIM1_ETR_ADC1_AWD2 TIM1_AF1_ETRSEL_2 /* !< TIM1_ETR is connected to ADC1 AWD2 */ +#define TIM_TIM1_ETR_ADC1_AWD3 (TIM1_AF1_ETRSEL_2 | TIM1_AF1_ETRSEL_0) /* !< TIM1_ETR is connected to ADC1 AWD3 */ +#if defined(COMP3) +#define TIM_TIM1_ETR_COMP3 (TIM1_AF1_ETRSEL_2 | TIM1_AF1_ETRSEL_1) /* !< TIM1_ETR is connected to COMP3 output */ +#endif /* COMP3 */ +#if defined(TIM2) +#define TIM_TIM2_ETR_GPIO 0x00000000U /* !< TIM2_ETR is connected to GPIO */ +#define TIM_TIM2_ETR_COMP1 TIM2_AF1_ETRSEL_0 /* !< TIM2_ETR is connected to COMP1 output */ +#define TIM_TIM2_ETR_COMP2 TIM2_AF1_ETRSEL_1 /* !< TIM2_ETR is connected to COMP2 output */ +#define TIM_TIM2_ETR_LSE (TIM2_AF1_ETRSEL_1 | TIM2_AF1_ETRSEL_0) /* !< TIM2_ETR is connected to LSE */ +#if defined(COMP3) +#define TIM_TIM2_ETR_MCO TIM2_AF1_ETRSEL_2 /* !< TIM2_ETR is connected to MCO */ +#define TIM_TIM2_ETR_MCO2 (TIM1_AF1_ETRSEL_2 | TIM1_AF1_ETRSEL_0) /* !< TIM2_ETR is connected to MCO2 */ +#define TIM_TIM2_ETR_COMP3 (TIM1_AF1_ETRSEL_2 | TIM1_AF1_ETRSEL_1) /* !< TIM2_ETR is connected to COMP3 output */ +#endif /* COMP3 */ +#endif /* TIM2 */ +#if defined(TIM3) +#define TIM_TIM3_ETR_GPIO 0x00000000U /* !< TIM3_ETR is connected to GPIO */ +#if defined(COMP1) && defined(COMP2) +#define TIM_TIM3_ETR_COMP1 TIM3_AF1_ETRSEL_0 /* !< TIM3_ETR is connected to COMP1 output */ +#define TIM_TIM3_ETR_COMP2 TIM3_AF1_ETRSEL_1 /* !< TIM3_ETR is connected to COMP2 output */ +#endif /* COMP1 && COMP2 */ +#if defined(COMP3) +#define TIM_TIM3_ETR_COMP3 (TIM3_AF1_ETRSEL_1 | TIM3_AF1_ETRSEL_0) /* !< TIM3_ETR is connected to COMP3 output */ +#endif /* COMP3 */ +#endif /* TIM3 */ +#if defined(TIM4) +#define TIM_TIM4_ETR_GPIO 0x00000000U /* !< TIM4_ETR is connected to GPIO */ +#if defined(COMP1) && defined(COMP2) +#define TIM_TIM4_ETR_COMP1 TIM4_AF1_ETRSEL_0 /* !< TIM4_ETR is connected to COMP1 output */ +#define TIM_TIM4_ETR_COMP2 TIM4_AF1_ETRSEL_1 /* !< TIM4_ETR is connected to COMP2 output */ +#endif /* COMP1 && COMP2 */ +#if defined(COMP3) +#define TIM_TIM4_ETR_COMP3 (TIM4_AF1_ETRSEL_1 | TIM4_AF1_ETRSEL_0) /* !< TIM4_ETR is connected to COMP3 output */ +#endif /* COMP3 */ +#endif /* TIM4 */ +/** + * @} + */ + +/** @defgroup TIMEx_Break_Input TIM Extended Break input + * @{ + */ +#define TIM_BREAKINPUT_BRK 0x00000001U /*!< Timer break input */ +#define TIM_BREAKINPUT_BRK2 0x00000002U /*!< Timer break2 input */ +/** + * @} + */ + +/** @defgroup TIMEx_Break_Input_Source TIM Extended Break input source + * @{ + */ +#define TIM_BREAKINPUTSOURCE_BKIN 0x00000001U /* !< An external source (GPIO) is connected to the BKIN pin */ +#if defined(COMP1) && defined(COMP2) +#define TIM_BREAKINPUTSOURCE_COMP1 0x00000002U /* !< The COMP1 output is connected to the break input */ +#define TIM_BREAKINPUTSOURCE_COMP2 0x00000004U /* !< The COMP2 output is connected to the break input */ +#endif /* COMP1 && COMP2 */ +#if defined(COMP3) +#define TIM_BREAKINPUTSOURCE_COMP3 0x00000008U /* !< The COMP3 output is connected to the break input */ +#endif /* COMP3 */ +/** + * @} + */ + +/** @defgroup TIMEx_Break_Input_Source_Enable TIM Extended Break input source enabling + * @{ + */ +#define TIM_BREAKINPUTSOURCE_DISABLE 0x00000000U /*!< Break input source is disabled */ +#define TIM_BREAKINPUTSOURCE_ENABLE 0x00000001U /*!< Break input source is enabled */ +/** + * @} + */ + +/** @defgroup TIMEx_Break_Input_Source_Polarity TIM Extended Break input polarity + * @{ + */ +#define TIM_BREAKINPUTSOURCE_POLARITY_LOW 0x00000001U /*!< Break input source is active low */ +#define TIM_BREAKINPUTSOURCE_POLARITY_HIGH 0x00000000U /*!< Break input source is active_high */ +/** + * @} + */ + +/** @defgroup TIMEx_Timer_Input_Selection TIM Extended Timer input selection + * @{ + */ +#define TIM_TIM1_TI1_GPIO 0x00000000U /* !< TIM1_TI1 is connected to GPIO */ +#if defined(COMP1) +#define TIM_TIM1_TI1_COMP1 0x00000001U /* !< TIM1_TI1 is connected to COMP1 OUT */ +#endif /* COMP1 */ + +#define TIM_TIM1_TI2_GPIO 0x00000000U /* !< TIM1_TI2 is connected to GPIO */ +#if defined(COMP2) +#define TIM_TIM1_TI2_COMP2 0x00000100U /* !< TIM1_TI2 is connected to COMP2 OUT */ +#endif /* COMP2 */ + +#define TIM_TIM1_TI3_GPIO 0x00000000U /* !< TIM1_TI3 is connected to GPIO */ +#if defined(COMP3) +#define TIM_TIM1_TI3_COMP3 0x00010000U /* !< TIM1_TI3 is connected to COMP3 OUT */ +#endif /* COMP3 */ + +#if defined(TIM2) +#define TIM_TIM2_TI1_GPIO 0x00000000U /* !< TIM2_TI1 is connected to GPIO */ +#define TIM_TIM2_TI1_COMP1 0x00000001U /* !< TIM2_TI1 is connected to COMP1 OUT */ + +#define TIM_TIM2_TI2_GPIO 0x00000000U /* !< TIM2_TI2 is connected to GPIO */ +#define TIM_TIM2_TI2_COMP2 0x00000100U /* !< TIM2_TI2 is connected to COMP2 OUT */ + +#define TIM_TIM2_TI3_GPIO 0x00000000U /* !< TIM2_TI3 is connected to GPIO */ +#if defined(COMP3) +#define TIM_TIM2_TI3_COMP3 0x00010000U /* !< TIM2_TI3 is connected to COMP3 OUT */ +#endif /* COMP3 */ +#endif /* TIM2 */ + +#define TIM_TIM3_TI1_GPIO 0x00000000U /* !< TIM3_TI1 is connected to GPIO */ +#if defined(COMP1) +#define TIM_TIM3_TI1_COMP1 0x00000001U /* !< TIM3_TI1 is connected to COMP1 OUT */ +#endif /* COMP1 */ + +#define TIM_TIM3_TI2_GPIO 0x00000000U /* !< TIM3_TI2 is connected to GPIO */ +#if defined(COMP2) +#define TIM_TIM3_TI2_COMP2 0x00000100U /* !< TIM3_TI2 is connected to COMP2 OUT */ +#endif /* COMP2 */ + +#define TIM_TIM3_TI3_GPIO 0x00000000U /* !< TIM3_TI3 is connected to GPIO */ +#if defined(COMP3) +#define TIM_TIM3_TI3_COMP3 0x00010000U /* !< TIM3_TI3 is connected to COMP3 OUT */ +#endif /* COMP3 */ + +#if defined(TIM4) +#define TIM_TIM4_TI1_GPIO 0x00000000U /* !< TIM4_TI1 is connected to GPIO */ +#if defined(COMP1) +#define TIM_TIM4_TI1_COMP1 0x00000001U /* !< TIM4_TI1 is connected to COMP1 OUT */ +#endif /* COMP1 */ + +#define TIM_TIM4_TI2_GPIO 0x00000000U /* !< TIM4_TI2 is connected to GPIO */ +#if defined(COMP2) +#define TIM_TIM4_TI2_COMP2 0x00000100U /* !< TIM4_TI2 is connected to COMP2 OUT */ +#endif /* COMP2 */ + +#define TIM_TIM4_TI3_GPIO 0x00000000U /* !< TIM4_TI3 is connected to GPIO */ +#if defined(COMP3) +#define TIM_TIM4_TI3_COMP3 0x00010000U /* !< TIM4_TI3 is connected to COMP3 OUT */ +#endif /* COMP3 */ +#endif /* TIM4 */ + +#define TIM_TIM14_TI1_GPIO 0x00000000U /* !< TIM14_TI1 is connected to GPIO */ +#define TIM_TIM14_TI1_RTC 0x00000001U /* !< TIM14_TI1 is connected to RTC clock */ +#define TIM_TIM14_TI1_HSE_32 0x00000002U /* !< TIM14_TI1 is connected to HSE div 32 */ +#define TIM_TIM14_TI1_MCO 0x00000003U /* !< TIM14_TI1 is connected to MCO */ +#if defined(RCC_MCO2_SUPPORT) +#define TIM_TIM14_TI1_MCO2 0x00000004U /* !< TIM14_TI1 is connected to MCO2 */ +#endif + +#if defined(TIM15) +#define TIM_TIM15_TI1_GPIO 0x00000000U /* !< TIM15_TI1 is connected to GPIO */ +#define TIM_TIM15_TI1_TIM2_CH1 0x00000001U /* !< TIM15_TI1 is connected to TIM2 CH1 */ +#define TIM_TIM15_TI1_TIM3_CH1 0x00000002U /* !< TIM15_TI1 is connected to TIM3 CH1 */ + +#define TIM_TIM15_TI2_GPIO 0x00000000U /* !< TIM15_TI2 is connected to GPIO */ +#define TIM_TIM15_TI2_TIM2_CH2 0x00000100U /* !< TIM15_TI2 is connected to TIM2 CH2 */ +#define TIM_TIM15_TI2_TIM3_CH2 0x00000200U /* !< TIM15_TI2 is connected to TIM3 CH2 */ +#endif /* TIM15 */ + +#define TIM_TIM16_TI1_GPIO 0x00000000U /* !< TIM16_TI1 is connected to GPIO */ +#define TIM_TIM16_TI1_LSI 0x00000001U /* !< TIM16_TI1 is connected to LSI */ +#define TIM_TIM16_TI1_LSE 0x00000002U /* !< TIM16_TI1 is connected to LSE */ +#define TIM_TIM16_TI1_RTC_WAKEUP 0x00000003U /* !< TIM16_TI1 is connected to TRC wakeup interrupt */ +#if defined(RCC_MCO2_SUPPORT) +#define TIM_TIM16_TI1_MCO2 0x00000004U /* !< TIM16_TI1 is connected to MCO2 */ +#endif /* RCC_MCO2_SUPPORT */ + +#define TIM_TIM17_TI1_GPIO 0x00000000U /* !< TIM17_TI1 is connected to GPIO */ +#if defined(RCC_HSI48_SUPPORT) +#define TIM_TIM17_TI1_HSI48 0x00000001U /* !< TIM17_TI1 is connected to HSI48/256 */ +#endif /* RCC_HSI48_SUPPORT */ +#define TIM_TIM17_TI1_HSE_32 0x00000002U /* !< TIM17_TI1 is connected to HSE div 32 */ +#define TIM_TIM17_TI1_MCO 0x00000003U /* !< TIM17_TI1 is connected to MCO */ +#if defined(RCC_MCO2_SUPPORT) +#define TIM_TIM17_TI1_MCO2 0x00000004U /* !< TIM17_TI1 is connected to MCO2 */ +#endif /* RCC_MCO2_SUPPORT */ +/** + * @} + */ + +/** + * @} + */ +/* End of exported constants -------------------------------------------------*/ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup TIMEx_Exported_Macros TIM Extended Exported Macros + * @{ + */ + +/** + * @} + */ +/* End of exported macro -----------------------------------------------------*/ + +/* Private macro -------------------------------------------------------------*/ +/** @defgroup TIMEx_Private_Macros TIM Extended Private Macros + * @{ + */ +#define IS_TIM_REMAP(__REMAP__) ((((__REMAP__) & 0xFFFC3FFFU) == 0x00000000U)) + +#define IS_TIM_BREAKINPUT(__BREAKINPUT__) (((__BREAKINPUT__) == TIM_BREAKINPUT_BRK) || \ + ((__BREAKINPUT__) == TIM_BREAKINPUT_BRK2)) + +#if defined(COMP1) && defined(COMP2) && defined(COMP3) +#define IS_TIM_BREAKINPUTSOURCE(__SOURCE__) (((__SOURCE__) == TIM_BREAKINPUTSOURCE_BKIN) || \ + ((__SOURCE__) == TIM_BREAKINPUTSOURCE_COMP1) || \ + ((__SOURCE__) == TIM_BREAKINPUTSOURCE_COMP2) || \ + ((__SOURCE__) == TIM_BREAKINPUTSOURCE_COMP3)) +#elif defined(COMP1) && defined(COMP2) +#define IS_TIM_BREAKINPUTSOURCE(__SOURCE__) (((__SOURCE__) == TIM_BREAKINPUTSOURCE_BKIN) || \ + ((__SOURCE__) == TIM_BREAKINPUTSOURCE_COMP1) || \ + ((__SOURCE__) == TIM_BREAKINPUTSOURCE_COMP2)) +#else +#define IS_TIM_BREAKINPUTSOURCE(__SOURCE__) ((__SOURCE__) == TIM_BREAKINPUTSOURCE_BKIN) +#endif /* COMP1 && COMP2 && COMP3 */ + +#define IS_TIM_BREAKINPUTSOURCE_STATE(__STATE__) (((__STATE__) == TIM_BREAKINPUTSOURCE_DISABLE) || \ + ((__STATE__) == TIM_BREAKINPUTSOURCE_ENABLE)) + +#define IS_TIM_BREAKINPUTSOURCE_POLARITY(__POLARITY__) (((__POLARITY__) == TIM_BREAKINPUTSOURCE_POLARITY_LOW) || \ + ((__POLARITY__) == TIM_BREAKINPUTSOURCE_POLARITY_HIGH)) + +#define IS_TIM_TISEL(__TISEL__) ((((__TISEL__) & 0xF0F0F0F0U) == 0x00000000U)) + +/** + * @} + */ +/* End of private macro ------------------------------------------------------*/ + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup TIMEx_Exported_Functions TIM Extended Exported Functions + * @{ + */ + +/** @addtogroup TIMEx_Exported_Functions_Group1 Extended Timer Hall Sensor functions + * @brief Timer Hall Sensor functions + * @{ + */ +/* Timer Hall Sensor functions **********************************************/ +HAL_StatusTypeDef HAL_TIMEx_HallSensor_Init(TIM_HandleTypeDef *htim, const TIM_HallSensor_InitTypeDef *sConfig); +HAL_StatusTypeDef HAL_TIMEx_HallSensor_DeInit(TIM_HandleTypeDef *htim); + +void HAL_TIMEx_HallSensor_MspInit(TIM_HandleTypeDef *htim); +void HAL_TIMEx_HallSensor_MspDeInit(TIM_HandleTypeDef *htim); + +/* Blocking mode: Polling */ +HAL_StatusTypeDef HAL_TIMEx_HallSensor_Start(TIM_HandleTypeDef *htim); +HAL_StatusTypeDef HAL_TIMEx_HallSensor_Stop(TIM_HandleTypeDef *htim); +/* Non-Blocking mode: Interrupt */ +HAL_StatusTypeDef HAL_TIMEx_HallSensor_Start_IT(TIM_HandleTypeDef *htim); +HAL_StatusTypeDef HAL_TIMEx_HallSensor_Stop_IT(TIM_HandleTypeDef *htim); +/* Non-Blocking mode: DMA */ +HAL_StatusTypeDef HAL_TIMEx_HallSensor_Start_DMA(TIM_HandleTypeDef *htim, uint32_t *pData, uint16_t Length); +HAL_StatusTypeDef HAL_TIMEx_HallSensor_Stop_DMA(TIM_HandleTypeDef *htim); +/** + * @} + */ + +/** @addtogroup TIMEx_Exported_Functions_Group2 Extended Timer Complementary Output Compare functions + * @brief Timer Complementary Output Compare functions + * @{ + */ +/* Timer Complementary Output Compare functions *****************************/ +/* Blocking mode: Polling */ +HAL_StatusTypeDef HAL_TIMEx_OCN_Start(TIM_HandleTypeDef *htim, uint32_t Channel); +HAL_StatusTypeDef HAL_TIMEx_OCN_Stop(TIM_HandleTypeDef *htim, uint32_t Channel); + +/* Non-Blocking mode: Interrupt */ +HAL_StatusTypeDef HAL_TIMEx_OCN_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel); +HAL_StatusTypeDef HAL_TIMEx_OCN_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel); + +/* Non-Blocking mode: DMA */ +HAL_StatusTypeDef HAL_TIMEx_OCN_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, const uint32_t *pData, + uint16_t Length); +HAL_StatusTypeDef HAL_TIMEx_OCN_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel); +/** + * @} + */ + +/** @addtogroup TIMEx_Exported_Functions_Group3 Extended Timer Complementary PWM functions + * @brief Timer Complementary PWM functions + * @{ + */ +/* Timer Complementary PWM functions ****************************************/ +/* Blocking mode: Polling */ +HAL_StatusTypeDef HAL_TIMEx_PWMN_Start(TIM_HandleTypeDef *htim, uint32_t Channel); +HAL_StatusTypeDef HAL_TIMEx_PWMN_Stop(TIM_HandleTypeDef *htim, uint32_t Channel); + +/* Non-Blocking mode: Interrupt */ +HAL_StatusTypeDef HAL_TIMEx_PWMN_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel); +HAL_StatusTypeDef HAL_TIMEx_PWMN_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel); +/* Non-Blocking mode: DMA */ +HAL_StatusTypeDef HAL_TIMEx_PWMN_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, const uint32_t *pData, + uint16_t Length); +HAL_StatusTypeDef HAL_TIMEx_PWMN_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel); +/** + * @} + */ + +/** @addtogroup TIMEx_Exported_Functions_Group4 Extended Timer Complementary One Pulse functions + * @brief Timer Complementary One Pulse functions + * @{ + */ +/* Timer Complementary One Pulse functions **********************************/ +/* Blocking mode: Polling */ +HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Start(TIM_HandleTypeDef *htim, uint32_t OutputChannel); +HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Stop(TIM_HandleTypeDef *htim, uint32_t OutputChannel); + +/* Non-Blocking mode: Interrupt */ +HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Start_IT(TIM_HandleTypeDef *htim, uint32_t OutputChannel); +HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Stop_IT(TIM_HandleTypeDef *htim, uint32_t OutputChannel); +/** + * @} + */ + +/** @addtogroup TIMEx_Exported_Functions_Group5 Extended Peripheral Control functions + * @brief Peripheral Control functions + * @{ + */ +/* Extended Control functions ************************************************/ +HAL_StatusTypeDef HAL_TIMEx_ConfigCommutEvent(TIM_HandleTypeDef *htim, uint32_t InputTrigger, + uint32_t CommutationSource); +HAL_StatusTypeDef HAL_TIMEx_ConfigCommutEvent_IT(TIM_HandleTypeDef *htim, uint32_t InputTrigger, + uint32_t CommutationSource); +HAL_StatusTypeDef HAL_TIMEx_ConfigCommutEvent_DMA(TIM_HandleTypeDef *htim, uint32_t InputTrigger, + uint32_t CommutationSource); +HAL_StatusTypeDef HAL_TIMEx_MasterConfigSynchronization(TIM_HandleTypeDef *htim, + const TIM_MasterConfigTypeDef *sMasterConfig); +HAL_StatusTypeDef HAL_TIMEx_ConfigBreakDeadTime(TIM_HandleTypeDef *htim, + const TIM_BreakDeadTimeConfigTypeDef *sBreakDeadTimeConfig); +HAL_StatusTypeDef HAL_TIMEx_ConfigBreakInput(TIM_HandleTypeDef *htim, uint32_t BreakInput, + const TIMEx_BreakInputConfigTypeDef *sBreakInputConfig); +HAL_StatusTypeDef HAL_TIMEx_GroupChannel5(TIM_HandleTypeDef *htim, uint32_t Channels); +HAL_StatusTypeDef HAL_TIMEx_RemapConfig(TIM_HandleTypeDef *htim, uint32_t Remap); +HAL_StatusTypeDef HAL_TIMEx_TISelection(TIM_HandleTypeDef *htim, uint32_t TISelection, uint32_t Channel); + +HAL_StatusTypeDef HAL_TIMEx_DisarmBreakInput(TIM_HandleTypeDef *htim, uint32_t BreakInput); +HAL_StatusTypeDef HAL_TIMEx_ReArmBreakInput(TIM_HandleTypeDef *htim, uint32_t BreakInput); +/** + * @} + */ + +/** @addtogroup TIMEx_Exported_Functions_Group6 Extended Callbacks functions + * @brief Extended Callbacks functions + * @{ + */ +/* Extended Callback **********************************************************/ +void HAL_TIMEx_CommutCallback(TIM_HandleTypeDef *htim); +void HAL_TIMEx_CommutHalfCpltCallback(TIM_HandleTypeDef *htim); +void HAL_TIMEx_BreakCallback(TIM_HandleTypeDef *htim); +void HAL_TIMEx_Break2Callback(TIM_HandleTypeDef *htim); +/** + * @} + */ + +/** @addtogroup TIMEx_Exported_Functions_Group7 Extended Peripheral State functions + * @brief Extended Peripheral State functions + * @{ + */ +/* Extended Peripheral State functions ***************************************/ +HAL_TIM_StateTypeDef HAL_TIMEx_HallSensor_GetState(const TIM_HandleTypeDef *htim); +HAL_TIM_ChannelStateTypeDef HAL_TIMEx_GetChannelNState(const TIM_HandleTypeDef *htim, uint32_t ChannelN); +/** + * @} + */ + +/** + * @} + */ +/* End of exported functions -------------------------------------------------*/ + +/* Private functions----------------------------------------------------------*/ +/** @addtogroup TIMEx_Private_Functions TIM Extended Private Functions + * @{ + */ +void TIMEx_DMACommutationCplt(DMA_HandleTypeDef *hdma); +void TIMEx_DMACommutationHalfCplt(DMA_HandleTypeDef *hdma); +/** + * @} + */ +/* End of private functions --------------------------------------------------*/ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + + +#endif /* STM32G0xx_HAL_TIM_EX_H */ diff --git a/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_ll_bus.h b/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_ll_bus.h new file mode 100644 index 0000000..4309003 --- /dev/null +++ b/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_ll_bus.h @@ -0,0 +1,1306 @@ +/** + ****************************************************************************** + * @file stm32g0xx_ll_bus.h + * @author MCD Application Team + * @brief Header file of BUS LL module. + + @verbatim + ##### RCC Limitations ##### + ============================================================================== + [..] + A delay between an RCC peripheral clock enable and the effective peripheral + enabling should be taken into account in order to manage the peripheral read/write + from/to registers. + (+) This delay depends on the peripheral mapping. + (++) AHB & APB peripherals, 1 dummy read is necessary + + [..] + Workarounds: + (#) For AHB & APB peripherals, a dummy read to the peripheral register has been + inserted in each LL_{BUS}_GRP{x}_EnableClock() function. + + @endverbatim + ****************************************************************************** + * @attention + * + * Copyright (c) 2018 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file in + * the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32G0xx_LL_BUS_H +#define STM32G0xx_LL_BUS_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32g0xx.h" + +/** @addtogroup STM32G0xx_LL_Driver + * @{ + */ + +#if defined(RCC) + +/** @defgroup BUS_LL BUS + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ + +/* Private constants ---------------------------------------------------------*/ + +/* Private macros ------------------------------------------------------------*/ + +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +/** @defgroup BUS_LL_Exported_Constants BUS Exported Constants + * @{ + */ + +/** @defgroup BUS_LL_EC_AHB1_GRP1_PERIPH AHB1 GRP1 PERIPH + * @{ + */ +#define LL_AHB1_GRP1_PERIPH_ALL 0xFFFFFFFFU +#define LL_AHB1_GRP1_PERIPH_DMA1 RCC_AHBENR_DMA1EN +#if defined(DMA2) +#define LL_AHB1_GRP1_PERIPH_DMA2 RCC_AHBENR_DMA2EN +#endif /* DMA2 */ +#define LL_AHB1_GRP1_PERIPH_FLASH RCC_AHBENR_FLASHEN +#define LL_AHB1_GRP1_PERIPH_SRAM RCC_AHBSMENR_SRAMSMEN +#if defined(CRC) +#define LL_AHB1_GRP1_PERIPH_CRC RCC_AHBENR_CRCEN +#endif /* CRC */ +#if defined(AES) +#define LL_AHB1_GRP1_PERIPH_CRYP RCC_AHBENR_AESEN +#endif /* AES */ +#if defined(RNG) +#define LL_AHB1_GRP1_PERIPH_RNG RCC_AHBENR_RNGEN +#endif /* RNG */ +/** + * @} + */ + + +/** @defgroup BUS_LL_EC_APB1_GRP1_PERIPH APB1 GRP1 PERIPH + * @{ + */ +#define LL_APB1_GRP1_PERIPH_ALL 0xFFFFFFFFU +#if defined(TIM2) +#define LL_APB1_GRP1_PERIPH_TIM2 RCC_APBENR1_TIM2EN +#endif /* TIM2 */ +#if defined(TIM3) +#define LL_APB1_GRP1_PERIPH_TIM3 RCC_APBENR1_TIM3EN +#endif /* TIM3 */ +#if defined(TIM4) +#define LL_APB1_GRP1_PERIPH_TIM4 RCC_APBENR1_TIM4EN +#endif /* TIM4 */ +#if defined(TIM6) +#define LL_APB1_GRP1_PERIPH_TIM6 RCC_APBENR1_TIM6EN +#endif /* TIM6 */ +#if defined(TIM7) +#define LL_APB1_GRP1_PERIPH_TIM7 RCC_APBENR1_TIM7EN +#endif /* TIM7 */ +#if defined(LPUART2) +#define LL_APB1_GRP1_PERIPH_LPUART2 RCC_APBENR1_LPUART2EN +#endif /* LPUART2 */ +#if defined(USART5) +#define LL_APB1_GRP1_PERIPH_USART5 RCC_APBENR1_USART5EN +#endif /* USART5 */ +#if defined(USART6) +#define LL_APB1_GRP1_PERIPH_USART6 RCC_APBENR1_USART6EN +#endif /* USART6 */ +#define LL_APB1_GRP1_PERIPH_RTC RCC_APBENR1_RTCAPBEN +#define LL_APB1_GRP1_PERIPH_WWDG RCC_APBENR1_WWDGEN +#if defined(FDCAN1) || defined(FDCAN2) +#define LL_APB1_GRP1_PERIPH_FDCAN RCC_APBENR1_FDCANEN +#endif /* FDCAN1 */ +#if defined(USB_DRD_FS) +#define LL_APB1_GRP1_PERIPH_USB RCC_APBENR1_USBEN +#endif /* USB_DRD_FS */ +#define LL_APB1_GRP1_PERIPH_SPI2 RCC_APBENR1_SPI2EN +#if defined(SPI3) +#define LL_APB1_GRP1_PERIPH_SPI3 RCC_APBENR1_SPI3EN +#endif /* SPI3 */ +#if defined(CRS) +#define LL_APB1_GRP1_PERIPH_CRS RCC_APBENR1_CRSEN +#endif /* CRS */ +#define LL_APB1_GRP1_PERIPH_USART2 RCC_APBENR1_USART2EN +#if defined(USART3) +#define LL_APB1_GRP1_PERIPH_USART3 RCC_APBENR1_USART3EN +#endif /* USART3 */ +#if defined(USART4) +#define LL_APB1_GRP1_PERIPH_USART4 RCC_APBENR1_USART4EN +#endif /* USART4 */ +#if defined(LPUART1) +#define LL_APB1_GRP1_PERIPH_LPUART1 RCC_APBENR1_LPUART1EN +#endif /* LPUART1 */ +#define LL_APB1_GRP1_PERIPH_I2C1 RCC_APBENR1_I2C1EN +#define LL_APB1_GRP1_PERIPH_I2C2 RCC_APBENR1_I2C2EN +#if defined(I2C3) +#define LL_APB1_GRP1_PERIPH_I2C3 RCC_APBENR1_I2C3EN +#endif /* I2C3 */ +#if defined(CEC) +#define LL_APB1_GRP1_PERIPH_CEC RCC_APBENR1_CECEN +#endif /* CEC */ +#if defined(UCPD1) +#define LL_APB1_GRP1_PERIPH_UCPD1 RCC_APBENR1_UCPD1EN +#endif /* UCPD1 */ +#if defined(UCPD2) +#define LL_APB1_GRP1_PERIPH_UCPD2 RCC_APBENR1_UCPD2EN +#endif /* UCPD2 */ +#define LL_APB1_GRP1_PERIPH_DBGMCU RCC_APBENR1_DBGEN +#define LL_APB1_GRP1_PERIPH_PWR RCC_APBENR1_PWREN +#if defined(DAC1) +#define LL_APB1_GRP1_PERIPH_DAC1 RCC_APBENR1_DAC1EN +#endif /* DAC1 */ +#if defined(LPTIM2) +#define LL_APB1_GRP1_PERIPH_LPTIM2 RCC_APBENR1_LPTIM2EN +#endif /* LPTIM2 */ +#if defined(LPTIM1) +#define LL_APB1_GRP1_PERIPH_LPTIM1 RCC_APBENR1_LPTIM1EN +#endif /* LPTIM1 */ +/** + * @} + */ + +/** @defgroup BUS_LL_EC_APB2_GRP1_PERIPH APB2 GRP1 PERIPH + * @{ + */ +#define LL_APB2_GRP1_PERIPH_ALL 0xFFFFFFFFU +#define LL_APB2_GRP1_PERIPH_SYSCFG RCC_APBENR2_SYSCFGEN +#define LL_APB2_GRP1_PERIPH_TIM1 RCC_APBENR2_TIM1EN +#define LL_APB2_GRP1_PERIPH_SPI1 RCC_APBENR2_SPI1EN +#define LL_APB2_GRP1_PERIPH_USART1 RCC_APBENR2_USART1EN +#if defined(TIM14) +#define LL_APB2_GRP1_PERIPH_TIM14 RCC_APBENR2_TIM14EN +#endif /* TIM14 */ +#if defined(TIM15) +#define LL_APB2_GRP1_PERIPH_TIM15 RCC_APBENR2_TIM15EN +#endif /* TIM15 */ +#if defined(TIM16) +#define LL_APB2_GRP1_PERIPH_TIM16 RCC_APBENR2_TIM16EN +#endif /* TIM16 */ +#if defined(TIM17) +#define LL_APB2_GRP1_PERIPH_TIM17 RCC_APBENR2_TIM17EN +#endif /* TIM17 */ +#if defined(ADC) +#define LL_APB2_GRP1_PERIPH_ADC RCC_APBENR2_ADCEN +#endif /* ADC */ +/** + * @} + */ + +/** @defgroup BUS_LL_EC_IOP_GRP1_PERIPH IOP GRP1 PERIPH + * @{ + */ +#define LL_IOP_GRP1_PERIPH_ALL 0xFFFFFFFFU +#define LL_IOP_GRP1_PERIPH_GPIOA RCC_IOPENR_GPIOAEN +#define LL_IOP_GRP1_PERIPH_GPIOB RCC_IOPENR_GPIOBEN +#define LL_IOP_GRP1_PERIPH_GPIOC RCC_IOPENR_GPIOCEN +#define LL_IOP_GRP1_PERIPH_GPIOD RCC_IOPENR_GPIODEN +#if defined(GPIOE) +#define LL_IOP_GRP1_PERIPH_GPIOE RCC_IOPENR_GPIOEEN +#endif /* GPIOE */ +#if defined(GPIOF) +#define LL_IOP_GRP1_PERIPH_GPIOF RCC_IOPENR_GPIOFEN +#endif /* GPIOF */ +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/* Exported functions --------------------------------------------------------*/ +/** @defgroup BUS_LL_Exported_Functions BUS Exported Functions + * @{ + */ + +/** @defgroup BUS_LL_EF_AHB1 AHB1 + * @{ + */ + +/** + * @brief Enable AHB1 peripherals clock. + * @rmtoll AHBENR DMA1EN LL_AHB1_GRP1_EnableClock\n + * AHBENR FLASHEN LL_AHB1_GRP1_EnableClock\n + * AHBENR CRCEN LL_AHB1_GRP1_EnableClock\n + * AHBENR AESEN LL_AHB1_GRP1_EnableClock\n + * AHBENR RNGEN LL_AHB1_GRP1_EnableClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + * @arg @ref LL_AHB1_GRP1_PERIPH_FLASH + * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + * @arg @ref LL_AHB1_GRP1_PERIPH_CRYP (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_RNG (*) + * @note (*) RNG & CRYP Peripherals available only on STM32G081xx + * @retval None + */ +__STATIC_INLINE void LL_AHB1_GRP1_EnableClock(uint32_t Periphs) +{ + __IO uint32_t tmpreg; + SET_BIT(RCC->AHBENR, Periphs); + /* Delay after an RCC peripheral clock enabling */ + tmpreg = READ_BIT(RCC->AHBENR, Periphs); + (void)tmpreg; +} + +/** + * @brief Check if AHB1 peripheral clock is enabled or not + * @rmtoll AHBENR DMA1EN LL_AHB1_GRP1_IsEnabledClock\n + * AHBENR FLASHEN LL_AHB1_GRP1_IsEnabledClock\n + * AHBENR CRCEN LL_AHB1_GRP1_IsEnabledClock\n + * AHBENR AESEN LL_AHB1_GRP1_IsEnabledClock\n + * AHBENR RNGEN LL_AHB1_GRP1_IsEnabledClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + * @arg @ref LL_AHB1_GRP1_PERIPH_FLASH + * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + * @arg @ref LL_AHB1_GRP1_PERIPH_CRYP (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_RNG (*) + * @note (*) RNG & CRYP Peripherals available only on STM32G081xx + * @retval State of Periphs (1 or 0). + */ +__STATIC_INLINE uint32_t LL_AHB1_GRP1_IsEnabledClock(uint32_t Periphs) +{ + return ((READ_BIT(RCC->AHBENR, Periphs) == Periphs) ? 1UL : 0UL); +} + +/** + * @brief Disable AHB1 peripherals clock. + * @rmtoll AHBENR DMA1EN LL_AHB1_GRP1_DisableClock\n + * AHBENR FLASHEN LL_AHB1_GRP1_DisableClock\n + * AHBENR CRCEN LL_AHB1_GRP1_DisableClock\n + * AHBENR AESEN LL_AHB1_GRP1_DisableClock\n + * AHBENR RNGEN LL_AHB1_GRP1_DisableClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + * @arg @ref LL_AHB1_GRP1_PERIPH_FLASH + * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + * @arg @ref LL_AHB1_GRP1_PERIPH_CRYP (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_RNG (*) + * @note (*) RNG & CRYP Peripherals available only on STM32G081xx + * @retval None + */ +__STATIC_INLINE void LL_AHB1_GRP1_DisableClock(uint32_t Periphs) +{ + CLEAR_BIT(RCC->AHBENR, Periphs); +} + +/** + * @brief Force AHB1 peripherals reset. + * @rmtoll AHBRSTR DMA1RST LL_AHB1_GRP1_ForceReset\n + * AHBRSTR FLASHRST LL_AHB1_GRP1_ForceReset\n + * AHBRSTR CRCRST LL_AHB1_GRP1_ForceReset\n + * AHBRSTR AESRST LL_AHB1_GRP1_ForceReset\n + * AHBRSTR RNGRST LL_AHB1_GRP1_ForceReset + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_AHB1_GRP1_PERIPH_ALL + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + * @arg @ref LL_AHB1_GRP1_PERIPH_FLASH + * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + * @arg @ref LL_AHB1_GRP1_PERIPH_CRYP (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_RNG (*) + * @note (*) RNG & CRYP Peripherals available only on STM32G081xx + * @retval None + */ +__STATIC_INLINE void LL_AHB1_GRP1_ForceReset(uint32_t Periphs) +{ + SET_BIT(RCC->AHBRSTR, Periphs); +} + +/** + * @brief Release AHB1 peripherals reset. + * @rmtoll AHBRSTR DMA1RST LL_AHB1_GRP1_ReleaseReset\n + * AHBRSTR FLASHRST LL_AHB1_GRP1_ReleaseReset\n + * AHBRSTR CRCRST LL_AHB1_GRP1_ReleaseReset\n + * AHBRSTR AESRST LL_AHB1_GRP1_ReleaseReset\n + * AHBRSTR RNGRST LL_AHB1_GRP1_ReleaseReset + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_AHB1_GRP1_PERIPH_ALL + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + * @arg @ref LL_AHB1_GRP1_PERIPH_FLASH + * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + * @arg @ref LL_AHB1_GRP1_PERIPH_CRYP (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_RNG (*) + * @note (*) RNG & CRYP Peripherals available only on STM32G081xx + * @retval None + */ +__STATIC_INLINE void LL_AHB1_GRP1_ReleaseReset(uint32_t Periphs) +{ + CLEAR_BIT(RCC->AHBRSTR, Periphs); +} + +/** + * @brief Enable AHB1 peripheral clocks in Sleep and Stop modes + * @rmtoll AHBSMENR DMA1SMEN LL_AHB1_GRP1_EnableClockStopSleep\n + * AHBSMENR FLASHSMEN LL_AHB1_GRP1_EnableClockStopSleep\n + * AHBSMENR SRAMSMEN LL_AHB1_GRP1_EnableClockStopSleep\n + * AHBSMENR CRCSMEN LL_AHB1_GRP1_EnableClockStopSleep\n + * AHBSMENR AESSMEN LL_AHB1_GRP1_EnableClockStopSleep\n + * AHBSMENR RNGSMEN LL_AHB1_GRP1_EnableClockStopSleep + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + * @arg @ref LL_AHB1_GRP1_PERIPH_FLASH + * @arg @ref LL_AHB1_GRP1_PERIPH_SRAM + * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + * @arg @ref LL_AHB1_GRP1_PERIPH_CRYP (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_RNG (*) + * @note (*) RNG & CRYP Peripherals available only on STM32G081xx + * @retval None + */ +__STATIC_INLINE void LL_AHB1_GRP1_EnableClockStopSleep(uint32_t Periphs) +{ + __IO uint32_t tmpreg; + SET_BIT(RCC->AHBSMENR, Periphs); + /* Delay after an RCC peripheral clock enabling */ + tmpreg = READ_BIT(RCC->AHBSMENR, Periphs); + (void)tmpreg; +} + +/** + * @brief Disable AHB1 peripheral clocks in Sleep and Stop modes + * @rmtoll AHBSMENR DMA1SMEN LL_AHB1_GRP1_DisableClockStopSleep\n + * AHBSMENR FLASHSMEN LL_AHB1_GRP1_DisableClockStopSleep\n + * AHBSMENR SRAMSMEN LL_AHB1_GRP1_DisableClockStopSleep\n + * AHBSMENR CRCSMEN LL_AHB1_GRP1_DisableClockStopSleep\n + * AHBSMENR AESSMEN LL_AHB1_GRP1_DisableClockStopSleep\n + * AHBSMENR RNGSMEN LL_AHB1_GRP1_DisableClockStopSleep + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + * @arg @ref LL_AHB1_GRP1_PERIPH_FLASH + * @arg @ref LL_AHB1_GRP1_PERIPH_SRAM + * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + * @arg @ref LL_AHB1_GRP1_PERIPH_CRYP (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_RNG (*) + * @note (*) RNG & CRYP Peripherals available only on STM32G081xx + * @retval None + */ +__STATIC_INLINE void LL_AHB1_GRP1_DisableClockStopSleep(uint32_t Periphs) +{ + CLEAR_BIT(RCC->AHBSMENR, Periphs); +} + +/** + * @} + */ + +/** @defgroup BUS_LL_EF_APB1 APB1 + * @{ + */ + +/** + * @brief Enable APB1 peripherals clock. + * @rmtoll APBENR1 TIM2EN LL_APB1_GRP1_EnableClock\n + * APBENR1 TIM3EN LL_APB1_GRP1_EnableClock\n + * APBENR1 TIM4EN LL_APB1_GRP1_EnableClock\n + * APBENR1 TIM6EN LL_APB1_GRP1_EnableClock\n + * APBENR1 TIM7EN LL_APB1_GRP1_EnableClock\n + * APBENR1 RTCAPBEN LL_APB1_GRP1_EnableClock\n + * APBENR1 WWDGEN LL_APB1_GRP1_EnableClock\n + * APBENR1 SPI2EN LL_APB1_GRP1_EnableClock\n + * APBENR1 SPI3EN LL_APB1_GRP1_EnableClock\n + * APBENR1 USART2EN LL_APB1_GRP1_EnableClock\n + * APBENR1 USART3EN LL_APB1_GRP1_EnableClock\n + * APBENR1 USART4EN LL_APB1_GRP1_EnableClock\n + * APBENR1 USART5EN LL_APB1_GRP1_EnableClock\n + * APBENR1 USART6EN LL_APB1_GRP1_EnableClock\n + * APBENR1 LPUART1EN LL_APB1_GRP1_EnableClock\n + * APBENR1 LPUART2EN LL_APB1_GRP1_EnableClock\n + * APBENR1 I2C1EN LL_APB1_GRP1_EnableClock\n + * APBENR1 I2C2EN LL_APB1_GRP1_EnableClock\n + * APBENR1 I2C3EN LL_APB1_GRP1_EnableClock\n + * APBENR1 CECEN LL_APB1_GRP1_EnableClock\n + * APBENR1 UCPD1EN LL_APB1_GRP1_EnableClock\n + * APBENR1 UCPD2EN LL_APB1_GRP1_EnableClock\n + * APBENR1 USBEN LL_APB1_GRP1_EnableClock\n + * APBENR1 FDCANEN LL_APB1_GRP1_EnableClock\n + * APBENR1 DBGEN LL_APB1_GRP1_EnableClock\n + * APBENR1 PWREN LL_APB1_GRP1_EnableClock\n + * APBENR1 DAC1EN LL_APB1_GRP1_EnableClock\n + * APBENR1 LPTIM2EN LL_APB1_GRP1_EnableClock\n + * APBENR1 LPTIM1EN LL_APB1_GRP1_EnableClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB1_GRP1_PERIPH_TIM2 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM6 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM7 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_RTC + * @arg @ref LL_APB1_GRP1_PERIPH_WWDG + * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 + * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_USART2 + * @arg @ref LL_APB1_GRP1_PERIPH_USART3 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_USART4 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_USART5 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_USART6 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_LPUART1 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_LPUART2 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_I2C1 + * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 + * @arg @ref LL_APB1_GRP1_PERIPH_I2C3 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_CEC (1) + * @arg @ref LL_APB1_GRP1_PERIPH_UCPD1 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_UCPD2 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_USB (1) + * @arg @ref LL_APB1_GRP1_PERIPH_FDCAN (1) + * @arg @ref LL_APB1_GRP1_PERIPH_DBGMCU + * @arg @ref LL_APB1_GRP1_PERIPH_PWR + * @arg @ref LL_APB1_GRP1_PERIPH_DAC1 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM2 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1 (1) + * @note Peripheral marked with (1) are not available all devices + * @retval None + */ +__STATIC_INLINE void LL_APB1_GRP1_EnableClock(uint32_t Periphs) +{ + __IO uint32_t tmpreg; + SET_BIT(RCC->APBENR1, Periphs); + /* Delay after an RCC peripheral clock enabling */ + tmpreg = READ_BIT(RCC->APBENR1, Periphs); + (void)tmpreg; +} + +/** + * @brief Check if APB1 peripheral clock is enabled or not + * @rmtoll APBENR1 TIM2EN LL_APB1_GRP1_IsEnabledClock\n + * APBENR1 TIM3EN LL_APB1_GRP1_IsEnabledClock\n + * APBENR1 TIM4EN LL_APB1_GRP1_IsEnabledClock\n + * APBENR1 TIM6EN LL_APB1_GRP1_IsEnabledClock\n + * APBENR1 TIM7EN LL_APB1_GRP1_IsEnabledClock\n + * APBENR1 RTCAPBEN LL_APB1_GRP1_IsEnabledClock\n + * APBENR1 WWDGEN LL_APB1_GRP1_IsEnabledClock\n + * APBENR1 SPI2EN LL_APB1_GRP1_IsEnabledClock\n + * APBENR1 SPI3EN LL_APB1_GRP1_IsEnabledClock\n + * APBENR1 USART2EN LL_APB1_GRP1_IsEnabledClock\n + * APBENR1 USART3EN LL_APB1_GRP1_IsEnabledClock\n + * APBENR1 USART4EN LL_APB1_GRP1_IsEnabledClock\n + * APBENR1 USART5EN LL_APB1_GRP1_IsEnabledClock\n + * APBENR1 USART6EN LL_APB1_GRP1_IsEnabledClock\n + * APBENR1 LPUART1EN LL_APB1_GRP1_IsEnabledClock\n + * APBENR1 LPUART2EN LL_APB1_GRP1_IsEnabledClock\n + * APBENR1 I2C1EN LL_APB1_GRP1_IsEnabledClock\n + * APBENR1 I2C2EN LL_APB1_GRP1_IsEnabledClock\n + * APBENR1 I2C3EN LL_APB1_GRP1_IsEnabledClock\n + * APBENR1 CECEN LL_APB1_GRP1_IsEnabledClock\n + * APBENR1 UCPD1EN LL_APB1_GRP1_IsEnabledClock\n + * APBENR1 UCPD2EN LL_APB1_GRP1_IsEnabledClock\n + * APBENR1 USBEN LL_APB1_GRP1_IsEnabledClock\n + * APBENR1 FDCANEN LL_APB1_GRP1_IsEnabledClock\n + * APBENR1 DBGEN LL_APB1_GRP1_IsEnabledClock\n + * APBENR1 PWREN LL_APB1_GRP1_IsEnabledClock\n + * APBENR1 DAC1EN LL_APB1_GRP1_IsEnabledClock\n + * APBENR1 LPTIM2EN LL_APB1_GRP1_IsEnabledClock\n + * APBENR1 LPTIM1EN LL_APB1_GRP1_IsEnabledClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB1_GRP1_PERIPH_TIM2 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM6 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM7 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_RTC + * @arg @ref LL_APB1_GRP1_PERIPH_WWDG + * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 + * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_USART2 + * @arg @ref LL_APB1_GRP1_PERIPH_USART3 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_USART4 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_USART5 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_USART6 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_LPUART1 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_LPUART2 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_I2C1 + * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 + * @arg @ref LL_APB1_GRP1_PERIPH_I2C3 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_CEC (1) + * @arg @ref LL_APB1_GRP1_PERIPH_UCPD1 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_UCPD2 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_USB (1) + * @arg @ref LL_APB1_GRP1_PERIPH_FDCAN (1) + * @arg @ref LL_APB1_GRP1_PERIPH_DBGMCU + * @arg @ref LL_APB1_GRP1_PERIPH_PWR + * @arg @ref LL_APB1_GRP1_PERIPH_DAC1 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM2 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1 (1) + * @note Peripheral marked with (1) are not available all devices + * @retval State of Periphs (1 or 0). + */ +__STATIC_INLINE uint32_t LL_APB1_GRP1_IsEnabledClock(uint32_t Periphs) +{ + return ((READ_BIT(RCC->APBENR1, Periphs) == (Periphs)) ? 1UL : 0UL); +} + +/** + * @brief Disable APB1 peripherals clock. + * @rmtoll APBENR1 TIM2EN LL_APB1_GRP1_DisableClock\n + * APBENR1 TIM3EN LL_APB1_GRP1_DisableClock\n + * APBENR1 TIM4EN LL_APB1_GRP1_DisableClock\n + * APBENR1 TIM6EN LL_APB1_GRP1_DisableClock\n + * APBENR1 TIM7EN LL_APB1_GRP1_DisableClock\n + * APBENR1 RTCAPBEN LL_APB1_GRP1_DisableClock\n + * APBENR1 WWDGEN LL_APB1_GRP1_DisableClock\n + * APBENR1 SPI2EN LL_APB1_GRP1_DisableClock\n + * APBENR1 SPI3EN LL_APB1_GRP1_DisableClock\n + * APBENR1 USART2EN LL_APB1_GRP1_DisableClock\n + * APBENR1 USART3EN LL_APB1_GRP1_DisableClock\n + * APBENR1 USART4EN LL_APB1_GRP1_DisableClock\n + * APBENR1 USART5EN LL_APB1_GRP1_DisableClock\n + * APBENR1 USART6EN LL_APB1_GRP1_DisableClock\n + * APBENR1 LPUART1EN LL_APB1_GRP1_DisableClock\n + * APBENR1 LPUART2EN LL_APB1_GRP1_DisableClock\n + * APBENR1 I2C1EN LL_APB1_GRP1_DisableClock\n + * APBENR1 I2C2EN LL_APB1_GRP1_DisableClock\n + * APBENR1 I2C3EN LL_APB1_GRP1_DisableClock\n + * APBENR1 CECEN LL_APB1_GRP1_DisableClock\n + * APBENR1 UCPD1EN LL_APB1_GRP1_DisableClock\n + * APBENR1 UCPD2EN LL_APB1_GRP1_DisableClock\n + * APBENR1 USBEN LL_APB1_GRP1_DisableClock\n + * APBENR1 FDCANEN LL_APB1_GRP1_DisableClock\n + * APBENR1 DBGEN LL_APB1_GRP1_DisableClock\n + * APBENR1 PWREN LL_APB1_GRP1_DisableClock\n + * APBENR1 DAC1EN LL_APB1_GRP1_DisableClock\n + * APBENR1 LPTIM2EN LL_APB1_GRP1_DisableClock\n + * APBENR1 LPTIM1EN LL_APB1_GRP1_DisableClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB1_GRP1_PERIPH_TIM2 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM6 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM7 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_RTC + * @arg @ref LL_APB1_GRP1_PERIPH_WWDG + * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 + * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_USART2 + * @arg @ref LL_APB1_GRP1_PERIPH_USART3 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_USART4 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_USART5 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_USART6 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_LPUART1 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_LPUART2 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_I2C1 + * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 + * @arg @ref LL_APB1_GRP1_PERIPH_I2C3 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_CEC (1) + * @arg @ref LL_APB1_GRP1_PERIPH_UCPD1 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_UCPD2 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_USB (1) + * @arg @ref LL_APB1_GRP1_PERIPH_FDCAN (1) + * @arg @ref LL_APB1_GRP1_PERIPH_DBGMCU + * @arg @ref LL_APB1_GRP1_PERIPH_PWR + * @arg @ref LL_APB1_GRP1_PERIPH_DAC1 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM2 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1 (1) + * @note Peripheral marked with (1) are not available all devices + * @retval None + */ +__STATIC_INLINE void LL_APB1_GRP1_DisableClock(uint32_t Periphs) +{ + CLEAR_BIT(RCC->APBENR1, Periphs); +} + +/** + * @brief Force APB1 peripherals reset. + * @rmtoll APBRSTR1 TIM2RST LL_APB1_GRP1_ForceReset\n + * APBRSTR1 TIM3RST LL_APB1_GRP1_ForceReset\n + * APBRSTR1 TIM4RST LL_APB1_GRP1_ForceReset\n + * APBRSTR1 TIM6RST LL_APB1_GRP1_ForceReset\n + * APBRSTR1 TIM7RST LL_APB1_GRP1_ForceReset\n + * APBRSTR1 RTCRST LL_APB1_GRP1_ForceReset\n + * APBRSTR1 SPI2RST LL_APB1_GRP1_ForceReset\n + * APBRSTR1 SPI3RST LL_APB1_GRP1_ForceReset\n + * APBRSTR1 USART2RST LL_APB1_GRP1_ForceReset\n + * APBRSTR1 USART3RST LL_APB1_GRP1_ForceReset\n + * APBRSTR1 USART4RST LL_APB1_GRP1_ForceReset\n + * APBRSTR1 USART5RST LL_APB1_GRP1_ForceReset\n + * APBRSTR1 USART6RST LL_APB1_GRP1_ForceReset\n + * APBRSTR1 LPUART1RST LL_APB1_GRP1_ForceReset\n + * APBRSTR1 LPUART2RST LL_APB1_GRP1_ForceReset\n + * APBRSTR1 I2C1RST LL_APB1_GRP1_ForceReset\n + * APBRSTR1 I2C2RST LL_APB1_GRP1_ForceReset\n + * APBRSTR1 I2C3RST LL_APB1_GRP1_ForceReset\n + * APBRSTR1 CECRST LL_APB1_GRP1_ForceReset\n + * APBRSTR1 UCPD1RST LL_APB1_GRP1_ForceReset\n + * APBRSTR1 UCPD2RST LL_APB1_GRP1_ForceReset\n + * APBRSTR1 USBRST LL_APB1_GRP1_ForceReset\n + * APBRSTR1 FDCANRST LL_APB1_GRP1_ForceReset\n + * APBRSTR1 DBGRST LL_APB1_GRP1_ForceReset\n + * APBRSTR1 PWRRST LL_APB1_GRP1_ForceReset\n + * APBRSTR1 DAC1RST LL_APB1_GRP1_ForceReset\n + * APBRSTR1 LPTIM2RST LL_APB1_GRP1_ForceReset\n + * APBRSTR1 LPTIM1RST LL_APB1_GRP1_ForceReset + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB1_GRP1_PERIPH_TIM2 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM6 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM7 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_RTC + * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 + * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_USART2 + * @arg @ref LL_APB1_GRP1_PERIPH_USART3 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_USART4 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_USART5 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_USART6 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_LPUART1 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_LPUART2 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_I2C1 + * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 + * @arg @ref LL_APB1_GRP1_PERIPH_I2C3 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_CEC (1) + * @arg @ref LL_APB1_GRP1_PERIPH_UCPD1 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_UCPD2 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_USB (1) + * @arg @ref LL_APB1_GRP1_PERIPH_FDCAN (1) + * @arg @ref LL_APB1_GRP1_PERIPH_DBGMCU + * @arg @ref LL_APB1_GRP1_PERIPH_PWR + * @arg @ref LL_APB1_GRP1_PERIPH_DAC1 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM2 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1 (1) + * @note Peripheral marked with (1) are not available all devices + * @retval None + */ +__STATIC_INLINE void LL_APB1_GRP1_ForceReset(uint32_t Periphs) +{ + SET_BIT(RCC->APBRSTR1, Periphs); +} + +/** + * @brief Release APB1 peripherals reset. + * @rmtoll APBRSTR1 TIM2RST LL_APB1_GRP1_ReleaseReset\n + * APBRSTR1 TIM4RST LL_APB1_GRP1_ReleaseReset\n + * APBRSTR1 TIM6RST LL_APB1_GRP1_ReleaseReset\n + * APBRSTR1 TIM7RST LL_APB1_GRP1_ReleaseReset\n + * APBRSTR1 RTCRST LL_APB1_GRP1_ReleaseReset\n + * APBRSTR1 SPI2RST LL_APB1_GRP1_ReleaseReset\n + * APBRSTR1 SPI3RST LL_APB1_GRP1_ReleaseReset\n + * APBRSTR1 USART2RST LL_APB1_GRP1_ReleaseReset\n + * APBRSTR1 USART3RST LL_APB1_GRP1_ReleaseReset\n + * APBRSTR1 USART4RST LL_APB1_GRP1_ReleaseReset\n + * APBRSTR1 USART5RST LL_APB1_GRP1_ReleaseReset\n + * APBRSTR1 USART6RST LL_APB1_GRP1_ReleaseReset\n + * APBRSTR1 LPUART1RST LL_APB1_GRP1_ReleaseReset\n + * APBRSTR1 LPUART2RST LL_APB1_GRP1_ReleaseReset\n + * APBRSTR1 I2C1RST LL_APB1_GRP1_ReleaseReset\n + * APBRSTR1 I2C2RST LL_APB1_GRP1_ReleaseReset\n + * APBRSTR1 I2C3RST LL_APB1_GRP1_ReleaseReset\n + * APBRSTR1 CECRST LL_APB1_GRP1_ReleaseReset\n + * APBRSTR1 UCPD1RST LL_APB1_GRP1_ReleaseReset\n + * APBRSTR1 UCPD2RST LL_APB1_GRP1_ReleaseReset\n + * APBRSTR1 USBRST LL_APB1_GRP1_ReleaseReset\n + * APBRSTR1 FDCANRST LL_APB1_GRP1_ReleaseReset\n + * APBRSTR1 DBGRST LL_APB1_GRP1_ReleaseReset\n + * APBRSTR1 PWRRST LL_APB1_GRP1_ReleaseReset\n + * APBRSTR1 DAC1RST LL_APB1_GRP1_ReleaseReset\n + * APBRSTR1 LPTIM2RST LL_APB1_GRP1_ReleaseReset\n + * APBRSTR1 LPTIM1RST LL_APB1_GRP1_ReleaseReset + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB1_GRP1_PERIPH_TIM2 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM6 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM7 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_RTC + * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 + * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_USART2 + * @arg @ref LL_APB1_GRP1_PERIPH_USART3 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_USART4 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_USART5 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_USART6 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_LPUART1 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_LPUART2 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_I2C1 + * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 + * @arg @ref LL_APB1_GRP1_PERIPH_I2C3 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_CEC (1) + * @arg @ref LL_APB1_GRP1_PERIPH_UCPD1 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_UCPD2 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_USB (1) + * @arg @ref LL_APB1_GRP1_PERIPH_FDCAN (1) + * @arg @ref LL_APB1_GRP1_PERIPH_DBGMCU + * @arg @ref LL_APB1_GRP1_PERIPH_PWR + * @arg @ref LL_APB1_GRP1_PERIPH_DAC1 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM2 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1 (1) + * @note Peripheral marked with (1) are not available all devices + * @retval None + */ +__STATIC_INLINE void LL_APB1_GRP1_ReleaseReset(uint32_t Periphs) +{ + CLEAR_BIT(RCC->APBRSTR1, Periphs); +} + +/** + * @brief Enable APB1 peripheral clocks in Sleep and Stop modes + * @rmtoll APBSMENR1 TIM2SMEN LL_APB1_GRP1_EnableClockStopSleep\n + * APBSMENR1 TIM3SMEN LL_APB1_GRP1_EnableClockStopSleep\n + * APBSMENR1 TIM4SMEN LL_APB1_GRP1_EnableClockStopSleep\n + * APBSMENR1 TIM6SMEN LL_APB1_GRP1_EnableClockStopSleep\n + * APBSMENR1 TIM7SMEN LL_APB1_GRP1_EnableClockStopSleep\n + * APBSMENR1 RTCAPBSMEN LL_APB1_GRP1_EnableClockStopSleep\n + * APBSMENR1 WWDGSMEN LL_APB1_GRP1_EnableClockStopSleep\n + * APBSMENR1 SPI2SMEN LL_APB1_GRP1_EnableClockStopSleep\n + * APBSMENR1 SPI3SMEN LL_APB1_GRP1_EnableClockStopSleep\n + * APBSMENR1 USART2SMEN LL_APB1_GRP1_EnableClockStopSleep\n + * APBSMENR1 USART3SMEN LL_APB1_GRP1_EnableClockStopSleep\n + * APBSMENR1 USART4SMEN LL_APB1_GRP1_EnableClockStopSleep\n + * APBSMENR1 USART5SMEN LL_APB1_GRP1_EnableClockStopSleep\n + * APBSMENR1 USART6SMEN LL_APB1_GRP1_EnableClockStopSleep\n + * APBSMENR1 LPUART1SMEN LL_APB1_GRP1_EnableClockStopSleep\n + * APBSMENR1 LPUART2SMEN LL_APB1_GRP1_EnableClockStopSleep\n + * APBSMENR1 I2C1SMEN LL_APB1_GRP1_EnableClockStopSleep\n + * APBSMENR1 I2C2SMEN LL_APB1_GRP1_EnableClockStopSleep\n + * APBSMENR1 I2C3SMEN LL_APB1_GRP1_EnableClockStopSleep\n + * APBSMENR1 CECSMEN LL_APB1_GRP1_EnableClockStopSleep\n + * APBSMENR1 UCPD1SMEN LL_APB1_GRP1_EnableClockStopSleep\n + * APBSMENR1 UCPD2SMEN LL_APB1_GRP1_EnableClockStopSleep\n + * APBSMENR1 USBSMEN LL_APB1_GRP1_EnableClockStopSleep\n + * APBSMENR1 FDCANSMEN LL_APB1_GRP1_EnableClockStopSleep\n + * APBSMENR1 DBGSMEN LL_APB1_GRP1_EnableClockStopSleep\n + * APBSMENR1 PWRSMEN LL_APB1_GRP1_EnableClockStopSleep\n + * APBSMENR1 DAC1SMEN LL_APB1_GRP1_EnableClockStopSleep\n + * APBSMENR1 LPTIM2SMEN LL_APB1_GRP1_EnableClockStopSleep\n + * APBSMENR1 LPTIM1SMEN LL_APB1_GRP1_EnableClockStopSleep + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB1_GRP1_PERIPH_TIM2 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM6 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM7 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_RTC + * @arg @ref LL_APB1_GRP1_PERIPH_WWDG + * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 + * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_USART2 + * @arg @ref LL_APB1_GRP1_PERIPH_USART3 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_USART4 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_USART5 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_USART6 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_LPUART1 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_LPUART2 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_I2C1 + * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 + * @arg @ref LL_APB1_GRP1_PERIPH_I2C3 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_CEC (1) + * @arg @ref LL_APB1_GRP1_PERIPH_UCPD1 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_UCPD2 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_USB (1) + * @arg @ref LL_APB1_GRP1_PERIPH_FDCAN (1) + * @arg @ref LL_APB1_GRP1_PERIPH_DBGMCU + * @arg @ref LL_APB1_GRP1_PERIPH_PWR + * @arg @ref LL_APB1_GRP1_PERIPH_DAC1 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM2 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1 (1) + * @note Peripheral marked with (1) are not available all devices + * @retval None + */ +__STATIC_INLINE void LL_APB1_GRP1_EnableClockStopSleep(uint32_t Periphs) +{ + __IO uint32_t tmpreg; + SET_BIT(RCC->APBSMENR1, Periphs); + /* Delay after an RCC peripheral clock enabling */ + tmpreg = READ_BIT(RCC->APBSMENR1, Periphs); + (void)tmpreg; +} + +/** + * @brief Disable APB1 peripheral clocks in Sleep and Stop modes + * @rmtoll APBSMENR1 TIM2SMEN LL_APB1_GRP1_DisableClockStopSleep\n + * APBSMENR1 TIM3SMEN LL_APB1_GRP1_DisableClockStopSleep\n + * APBSMENR1 TIM'SMEN LL_APB1_GRP1_DisableClockStopSleep\n + * APBSMENR1 TIM6SMEN LL_APB1_GRP1_DisableClockStopSleep\n + * APBSMENR1 TIM7SMEN LL_APB1_GRP1_DisableClockStopSleep\n + * APBSMENR1 RTCAPBSMEN LL_APB1_GRP1_DisableClockStopSleep\n + * APBSMENR1 WWDGSMEN LL_APB1_GRP1_DisableClockStopSleep\n + * APBSMENR1 SPI2SMEN LL_APB1_GRP1_DisableClockStopSleep\n + * APBSMENR1 SPI3SMEN LL_APB1_GRP1_DisableClockStopSleep\n + * APBSMENR1 USART2SMEN LL_APB1_GRP1_DisableClockStopSleep\n + * APBSMENR1 USART3SMEN LL_APB1_GRP1_DisableClockStopSleep\n + * APBSMENR1 USART4SMEN LL_APB1_GRP1_DisableClockStopSleep\n + * APBSMENR1 USART5SMEN LL_APB1_GRP1_DisableClockStopSleep\n + * APBSMENR1 USART6SMEN LL_APB1_GRP1_DisableClockStopSleep\n + * APBSMENR1 LPUART1SMEN LL_APB1_GRP1_DisableClockStopSleep\n + * APBSMENR1 LPUART2SMEN LL_APB1_GRP1_DisableClockStopSleep\n + * APBSMENR1 I2C1SMEN LL_APB1_GRP1_DisableClockStopSleep\n + * APBSMENR1 I2C2SMEN LL_APB1_GRP1_DisableClockStopSleep\n + * APBSMENR1 I2C3SMEN LL_APB1_GRP1_DisableClockStopSleep\n + * APBSMENR1 CECSMEN LL_APB1_GRP1_DisableClockStopSleep\n + * APBSMENR1 UCPD1SMEN LL_APB1_GRP1_DisableClockStopSleep\n + * APBSMENR1 UCPD2SMEN LL_APB1_GRP1_DisableClockStopSleep\n + * APBSMENR1 USBSMEN LL_APB1_GRP1_DisableClockStopSleep\n + * APBSMENR1 FSCANSMEN LL_APB1_GRP1_DisableClockStopSleep\n + * APBSMENR1 DBGSMEN LL_APB1_GRP1_DisableClockStopSleep\n + * APBSMENR1 PWRSMEN LL_APB1_GRP1_DisableClockStopSleep\n + * APBSMENR1 DAC1SMEN LL_APB1_GRP1_DisableClockStopSleep\n + * APBSMENR1 LPTIM2SMEN LL_APB1_GRP1_DisableClockStopSleep\n + * APBSMENR1 LPTIM1SMEN LL_APB1_GRP1_DisableClockStopSleep + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB1_GRP1_PERIPH_TIM2 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM6 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM7 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_RTC + * @arg @ref LL_APB1_GRP1_PERIPH_WWDG + * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 + * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_USART2 + * @arg @ref LL_APB1_GRP1_PERIPH_USART3 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_USART4 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_USART5 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_USART6 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_LPUART1 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_LPUART2 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_I2C1 + * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 + * @arg @ref LL_APB1_GRP1_PERIPH_I2C3 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_CEC (1) + * @arg @ref LL_APB1_GRP1_PERIPH_UCPD1 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_UCPD2 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_USB (1) + * @arg @ref LL_APB1_GRP1_PERIPH_FDCAN (1) + * @arg @ref LL_APB1_GRP1_PERIPH_DBGMCU + * @arg @ref LL_APB1_GRP1_PERIPH_PWR + * @arg @ref LL_APB1_GRP1_PERIPH_DAC1 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM2 (1) + * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1 (1) + * @note Peripheral marked with (1) are not available all devices + * @retval None + */ +__STATIC_INLINE void LL_APB1_GRP1_DisableClockStopSleep(uint32_t Periphs) +{ + CLEAR_BIT(RCC->APBSMENR1, Periphs); +} + +/** + * @} + */ + +/** @defgroup BUS_LL_EF_APB2 APB2 + * @{ + */ + +/** + * @brief Enable APB2 peripherals clock. + * @rmtoll APBENR2 SYSCFGEN LL_APB2_GRP1_EnableClock\n + * APBENR2 TIM1EN LL_APB2_GRP1_EnableClock\n + * APBENR2 SPI1EN LL_APB2_GRP1_EnableClock\n + * APBENR2 USART1EN LL_APB2_GRP1_EnableClock\n + * APBENR2 TIM14EN LL_APB2_GRP1_EnableClock\n + * APBENR2 TIM15EN LL_APB2_GRP1_EnableClock\n + * APBENR2 TIM16EN LL_APB2_GRP1_EnableClock\n + * APBENR2 TIM17EN LL_APB2_GRP1_EnableClock\n + * APBENR2 ADCEN LL_APB2_GRP1_EnableClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB2_GRP1_PERIPH_SYSCFG + * @arg @ref LL_APB2_GRP1_PERIPH_TIM1 + * @arg @ref LL_APB2_GRP1_PERIPH_SPI1 + * @arg @ref LL_APB2_GRP1_PERIPH_USART1 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM14 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM15 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM16 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM17 + * @arg @ref LL_APB2_GRP1_PERIPH_ADC + * @note (*) peripheral not available on all devices + * @retval None + */ +__STATIC_INLINE void LL_APB2_GRP1_EnableClock(uint32_t Periphs) +{ + __IO uint32_t tmpreg; + SET_BIT(RCC->APBENR2, Periphs); + /* Delay after an RCC peripheral clock enabling */ + tmpreg = READ_BIT(RCC->APBENR2, Periphs); + (void)tmpreg; +} + +/** + * @brief Check if APB2 peripheral clock is enabled or not + * @rmtoll APBENR2 SYSCFGEN LL_APB2_GRP1_IsEnabledClock\n + * APBENR2 TIM1EN LL_APB2_GRP1_IsEnabledClock\n + * APBENR2 SPI1EN LL_APB2_GRP1_IsEnabledClock\n + * APBENR2 USART1EN LL_APB2_GRP1_IsEnabledClock\n + * APBENR2 TIM14EN LL_APB2_GRP1_IsEnabledClock\n + * APBENR2 TIM15EN LL_APB2_GRP1_IsEnabledClock\n + * APBENR2 TIM16EN LL_APB2_GRP1_IsEnabledClock\n + * APBENR2 TIM17EN LL_APB2_GRP1_IsEnabledClock\n + * APBENR2 ADCEN LL_APB2_GRP1_IsEnabledClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB2_GRP1_PERIPH_SYSCFG + * @arg @ref LL_APB2_GRP1_PERIPH_TIM1 + * @arg @ref LL_APB2_GRP1_PERIPH_SPI1 + * @arg @ref LL_APB2_GRP1_PERIPH_USART1 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM14 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM15 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM16 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM17 + * @arg @ref LL_APB2_GRP1_PERIPH_ADC + * @note (*) peripheral not available on all devices + * @retval State of Periphs (1 or 0). + */ +__STATIC_INLINE uint32_t LL_APB2_GRP1_IsEnabledClock(uint32_t Periphs) +{ + return ((READ_BIT(RCC->APBENR2, Periphs) == (Periphs)) ? 1UL : 0UL); +} + +/** + * @brief Disable APB2 peripherals clock. + * @rmtoll APBENR2 SYSCFGEN LL_APB2_GRP1_DisableClock\n + * APBENR2 TIM1EN LL_APB2_GRP1_DisableClock\n + * APBENR2 SPI1EN LL_APB2_GRP1_DisableClock\n + * APBENR2 USART1EN LL_APB2_GRP1_DisableClock\n + * APBENR2 TIM14EN LL_APB2_GRP1_DisableClock\n + * APBENR2 TIM15EN LL_APB2_GRP1_DisableClock\n + * APBENR2 TIM16EN LL_APB2_GRP1_DisableClock\n + * APBENR2 TIM17EN LL_APB2_GRP1_DisableClock\n + * APBENR2 ADCEN LL_APB2_GRP1_DisableClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB2_GRP1_PERIPH_SYSCFG + * @arg @ref LL_APB2_GRP1_PERIPH_TIM1 + * @arg @ref LL_APB2_GRP1_PERIPH_SPI1 + * @arg @ref LL_APB2_GRP1_PERIPH_USART1 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM14 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM15 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM16 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM17 + * @arg @ref LL_APB2_GRP1_PERIPH_ADC + * @note (*) peripheral not available on all devices + * @retval None + */ +__STATIC_INLINE void LL_APB2_GRP1_DisableClock(uint32_t Periphs) +{ + CLEAR_BIT(RCC->APBENR2, Periphs); +} + +/** + * @brief Force APB2 peripherals reset. + * @rmtoll APBRSTR2 SYSCFGRST LL_APB2_GRP1_ForceReset\n + * APBRSTR2 TIM1RST LL_APB2_GRP1_ForceReset\n + * APBRSTR2 SPI1RST LL_APB2_GRP1_ForceReset\n + * APBRSTR2 USART1RST LL_APB2_GRP1_ForceReset\n + * APBRSTR2 TIM14RST LL_APB2_GRP1_ForceReset\n + * APBRSTR2 TIM15RST LL_APB2_GRP1_ForceReset\n + * APBRSTR2 TIM16RST LL_APB2_GRP1_ForceReset\n + * APBRSTR2 TIM17RST LL_APB2_GRP1_ForceReset\n + * APBRSTR2 ADCRST LL_APB2_GRP1_ForceReset + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB2_GRP1_PERIPH_ALL + * @arg @ref LL_APB2_GRP1_PERIPH_SYSCFG + * @arg @ref LL_APB2_GRP1_PERIPH_TIM1 + * @arg @ref LL_APB2_GRP1_PERIPH_SPI1 + * @arg @ref LL_APB2_GRP1_PERIPH_USART1 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM14 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM15 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM16 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM17 + * @arg @ref LL_APB2_GRP1_PERIPH_ADC + * @note (*) peripheral not available on all devices + * @retval None + */ +__STATIC_INLINE void LL_APB2_GRP1_ForceReset(uint32_t Periphs) +{ + SET_BIT(RCC->APBRSTR2, Periphs); +} + +/** + * @brief Release APB2 peripherals reset. + * @rmtoll APBRSTR2 SYSCFGRST LL_APB2_GRP1_ReleaseReset\n + * APBRSTR2 TIM1RST LL_APB2_GRP1_ReleaseReset\n + * APBRSTR2 SPI1RST LL_APB2_GRP1_ReleaseReset\n + * APBRSTR2 USART1RST LL_APB2_GRP1_ReleaseReset\n + * APBRSTR2 TIM14RST LL_APB2_GRP1_ReleaseReset\n + * APBRSTR2 TIM15RST LL_APB2_GRP1_ReleaseReset\n + * APBRSTR2 TIM16RST LL_APB2_GRP1_ReleaseReset\n + * APBRSTR2 TIM17RST LL_APB2_GRP1_ReleaseReset\n + * APBRSTR2 ADCRST LL_APB2_GRP1_ReleaseReset + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB2_GRP1_PERIPH_ALL + * @arg @ref LL_APB2_GRP1_PERIPH_SYSCFG + * @arg @ref LL_APB2_GRP1_PERIPH_TIM1 + * @arg @ref LL_APB2_GRP1_PERIPH_SPI1 + * @arg @ref LL_APB2_GRP1_PERIPH_USART1 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM14 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM15 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM16 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM17 + * @arg @ref LL_APB2_GRP1_PERIPH_ADC + * @note (*) peripheral not available on all devices + * @retval None + */ +__STATIC_INLINE void LL_APB2_GRP1_ReleaseReset(uint32_t Periphs) +{ + CLEAR_BIT(RCC->APBRSTR2, Periphs); +} + +/** + * @brief Enable APB2 peripheral clocks in Sleep and Stop modes + * @rmtoll APBSMENR2 SYSCFGSMEN LL_APB2_GRP1_EnableClockStopSleep\n + * APBSMENR2 TIM1SMEN LL_APB2_GRP1_EnableClockStopSleep\n + * APBSMENR2 SPI1SMEN LL_APB2_GRP1_EnableClockStopSleep\n + * APBSMENR2 USART1SMEN LL_APB2_GRP1_EnableClockStopSleep\n + * APBSMENR2 TIM14SMEN LL_APB2_GRP1_EnableClockStopSleep\n + * APBSMENR2 TIM15SMEN LL_APB2_GRP1_EnableClockStopSleep\n + * APBSMENR2 TIM16SMEN LL_APB2_GRP1_EnableClockStopSleep\n + * APBSMENR2 TIM17SMEN LL_APB2_GRP1_EnableClockStopSleep\n + * APBSMENR2 ADCSMEN LL_APB2_GRP1_EnableClockStopSleep + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB2_GRP1_PERIPH_SYSCFG + * @arg @ref LL_APB2_GRP1_PERIPH_TIM1 + * @arg @ref LL_APB2_GRP1_PERIPH_SPI1 + * @arg @ref LL_APB2_GRP1_PERIPH_USART1 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM14 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM15 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM16 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM17 + * @arg @ref LL_APB2_GRP1_PERIPH_ADC + * @note (*) peripheral not available on all devices + * @retval None + */ +__STATIC_INLINE void LL_APB2_GRP1_EnableClockStopSleep(uint32_t Periphs) +{ + __IO uint32_t tmpreg; + SET_BIT(RCC->APBSMENR2, Periphs); + /* Delay after an RCC peripheral clock enabling */ + tmpreg = READ_BIT(RCC->APBSMENR2, Periphs); + (void)tmpreg; +} + +/** + * @brief Disable APB2 peripheral clocks in Sleep and Stop modes + * @rmtoll APBSMENR2 SYSCFGSMEN LL_APB2_GRP1_DisableClockStopSleep\n + * APBSMENR2 TIM1SMEN LL_APB2_GRP1_DisableClockStopSleep\n + * APBSMENR2 SPI1SMEN LL_APB2_GRP1_DisableClockStopSleep\n + * APBSMENR2 USART1SMEN LL_APB2_GRP1_DisableClockStopSleep\n + * APBSMENR2 TIM14SMEN LL_APB2_GRP1_DisableClockStopSleep\n + * APBSMENR2 TIM15SMEN LL_APB2_GRP1_DisableClockStopSleep\n + * APBSMENR2 TIM16SMEN LL_APB2_GRP1_DisableClockStopSleep\n + * APBSMENR2 TIM17SMEN LL_APB2_GRP1_DisableClockStopSleep\n + * APBSMENR2 ADCSMEN LL_APB2_GRP1_DisableClockStopSleep + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB2_GRP1_PERIPH_SYSCFG + * @arg @ref LL_APB2_GRP1_PERIPH_TIM1 + * @arg @ref LL_APB2_GRP1_PERIPH_SPI1 + * @arg @ref LL_APB2_GRP1_PERIPH_USART1 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM14 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM15 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM16 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM17 + * @arg @ref LL_APB2_GRP1_PERIPH_ADC + * @note (*) peripheral not available on all devices + * @retval None + */ +__STATIC_INLINE void LL_APB2_GRP1_DisableClockStopSleep(uint32_t Periphs) +{ + CLEAR_BIT(RCC->APBSMENR2, Periphs); +} + +/** + * @} + */ + +/** @defgroup BUS_LL_EF_IOP IOP + * @{ + */ + +/** + * @brief Enable IOP peripherals clock. + * @rmtoll IOPENR GPIOAEN LL_IOP_GRP1_EnableClock\n + * IOPENR GPIOBEN LL_IOP_GRP1_EnableClock\n + * IOPENR GPIOCEN LL_IOP_GRP1_EnableClock\n + * IOPENR GPIODEN LL_IOP_GRP1_EnableClock\n + * IOPENR GPIOEEN LL_IOP_GRP1_EnableClock\n + * IOPENR GPIOFEN LL_IOP_GRP1_EnableClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_IOP_GRP1_PERIPH_GPIOA + * @arg @ref LL_IOP_GRP1_PERIPH_GPIOB + * @arg @ref LL_IOP_GRP1_PERIPH_GPIOC + * @arg @ref LL_IOP_GRP1_PERIPH_GPIOD + * @arg @ref LL_IOP_GRP1_PERIPH_GPIOE + * @arg @ref LL_IOP_GRP1_PERIPH_GPIOF + * @retval None + */ +__STATIC_INLINE void LL_IOP_GRP1_EnableClock(uint32_t Periphs) +{ + __IO uint32_t tmpreg; + SET_BIT(RCC->IOPENR, Periphs); + /* Delay after an RCC peripheral clock enabling */ + tmpreg = READ_BIT(RCC->IOPENR, Periphs); + (void)tmpreg; +} + +/** + * @brief Check if IOP peripheral clock is enabled or not + * @rmtoll IOPENR GPIOAEN LL_IOP_GRP1_IsEnabledClock\n + * IOPENR GPIOBEN LL_IOP_GRP1_IsEnabledClock\n + * IOPENR GPIOCEN LL_IOP_GRP1_IsEnabledClock\n + * IOPENR GPIODEN LL_IOP_GRP1_IsEnabledClock\n + * IOPENR GPIOEEN LL_IOP_GRP1_IsEnabledClock\n + * IOPENR GPIOFEN LL_IOP_GRP1_IsEnabledClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_IOP_GRP1_PERIPH_GPIOA + * @arg @ref LL_IOP_GRP1_PERIPH_GPIOB + * @arg @ref LL_IOP_GRP1_PERIPH_GPIOC + * @arg @ref LL_IOP_GRP1_PERIPH_GPIOD + * @arg @ref LL_IOP_GRP1_PERIPH_GPIOE + * @arg @ref LL_IOP_GRP1_PERIPH_GPIOF + * @retval State of Periphs (1 or 0). + */ +__STATIC_INLINE uint32_t LL_IOP_GRP1_IsEnabledClock(uint32_t Periphs) +{ + return ((READ_BIT(RCC->IOPENR, Periphs) == Periphs) ? 1UL : 0UL); +} + +/** + * @brief Disable IOP peripherals clock. + * @rmtoll IOPENR GPIOAEN LL_IOP_GRP1_DisableClock\n + * IOPENR GPIOBEN LL_IOP_GRP1_DisableClock\n + * IOPENR GPIOCEN LL_IOP_GRP1_DisableClock\n + * IOPENR GPIODEN LL_IOP_GRP1_DisableClock\n + * IOPENR GPIOEEN LL_IOP_GRP1_DisableClock\n + * IOPENR GPIOFEN LL_IOP_GRP1_DisableClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_IOP_GRP1_PERIPH_GPIOA + * @arg @ref LL_IOP_GRP1_PERIPH_GPIOB + * @arg @ref LL_IOP_GRP1_PERIPH_GPIOC + * @arg @ref LL_IOP_GRP1_PERIPH_GPIOD + * @arg @ref LL_IOP_GRP1_PERIPH_GPIOE + * @arg @ref LL_IOP_GRP1_PERIPH_GPIOF + * @retval None + */ +__STATIC_INLINE void LL_IOP_GRP1_DisableClock(uint32_t Periphs) +{ + CLEAR_BIT(RCC->IOPENR, Periphs); +} + +/** + * @brief Disable IOP peripherals clock. + * @rmtoll IOPRSTR GPIOARST LL_IOP_GRP1_ForceReset\n + * IOPRSTR GPIOBRST LL_IOP_GRP1_ForceReset\n + * IOPRSTR GPIOCRST LL_IOP_GRP1_ForceReset\n + * IOPRSTR GPIODRST LL_IOP_GRP1_ForceReset\n + * IOPRSTR GPIOERST LL_IOP_GRP1_ForceReset\n + * IOPRSTR GPIOFRST LL_IOP_GRP1_ForceReset + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_IOP_GRP1_PERIPH_ALL + * @arg @ref LL_IOP_GRP1_PERIPH_GPIOA + * @arg @ref LL_IOP_GRP1_PERIPH_GPIOB + * @arg @ref LL_IOP_GRP1_PERIPH_GPIOC + * @arg @ref LL_IOP_GRP1_PERIPH_GPIOD + * @arg @ref LL_IOP_GRP1_PERIPH_GPIOE + * @arg @ref LL_IOP_GRP1_PERIPH_GPIOF + * @retval None + */ +__STATIC_INLINE void LL_IOP_GRP1_ForceReset(uint32_t Periphs) +{ + SET_BIT(RCC->IOPRSTR, Periphs); +} + +/** + * @brief Release IOP peripherals reset. + * @rmtoll IOPRSTR GPIOARST LL_IOP_GRP1_ReleaseReset\n + * IOPRSTR GPIOBRST LL_IOP_GRP1_ReleaseReset\n + * IOPRSTR GPIOCRST LL_IOP_GRP1_ReleaseReset\n + * IOPRSTR GPIODRST LL_IOP_GRP1_ReleaseReset\n + * IOPRSTR GPIOERST LL_IOP_GRP1_ReleaseReset\n + * IOPRSTR GPIOFRST LL_IOP_GRP1_ReleaseReset + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_IOP_GRP1_PERIPH_ALL + * @arg @ref LL_IOP_GRP1_PERIPH_GPIOA + * @arg @ref LL_IOP_GRP1_PERIPH_GPIOB + * @arg @ref LL_IOP_GRP1_PERIPH_GPIOC + * @arg @ref LL_IOP_GRP1_PERIPH_GPIOD + * @arg @ref LL_IOP_GRP1_PERIPH_GPIOE + * @arg @ref LL_IOP_GRP1_PERIPH_GPIOF + * @retval None + */ +__STATIC_INLINE void LL_IOP_GRP1_ReleaseReset(uint32_t Periphs) +{ + CLEAR_BIT(RCC->IOPRSTR, Periphs); +} + +/** + * @brief Enable IOP peripheral clocks in Sleep and Stop modes + * @rmtoll IOPSMENR GPIOASMEN LL_IOP_GRP1_EnableClockStopSleep\n + * IOPSMENR GPIOBSMEN LL_IOP_GRP1_EnableClockStopSleep\n + * IOPSMENR GPIOCSMEN LL_IOP_GRP1_EnableClockStopSleep\n + * IOPSMENR GPIODSMEN LL_IOP_GRP1_EnableClockStopSleep\n + * IOPSMENR GPIOESMEN LL_IOP_GRP1_EnableClockStopSleep\n + * IOPSMENR GPIOFSMEN LL_IOP_GRP1_EnableClockStopSleep + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_IOP_GRP1_PERIPH_GPIOA + * @arg @ref LL_IOP_GRP1_PERIPH_GPIOB + * @arg @ref LL_IOP_GRP1_PERIPH_GPIOC + * @arg @ref LL_IOP_GRP1_PERIPH_GPIOD + * @arg @ref LL_IOP_GRP1_PERIPH_GPIOE + * @arg @ref LL_IOP_GRP1_PERIPH_GPIOF + * @retval None + */ +__STATIC_INLINE void LL_IOP_GRP1_EnableClockStopSleep(uint32_t Periphs) +{ + __IO uint32_t tmpreg; + SET_BIT(RCC->IOPSMENR, Periphs); + /* Delay after an RCC peripheral clock enabling */ + tmpreg = READ_BIT(RCC->IOPSMENR, Periphs); + (void)tmpreg; +} + +/** + * @brief Disable IOP peripheral clocks in Sleep and Stop modes + * @rmtoll IOPSMENR GPIOASMEN LL_IOP_GRP1_DisableClockStopSleep\n + * IOPSMENR GPIOBSMEN LL_IOP_GRP1_DisableClockStopSleep\n + * IOPSMENR GPIOCSMEN LL_IOP_GRP1_DisableClockStopSleep\n + * IOPSMENR GPIODSMEN LL_IOP_GRP1_DisableClockStopSleep\n + * IOPSMENR GPIOESMEN LL_IOP_GRP1_DisableClockStopSleep\n + * IOPSMENR GPIOFSMEN LL_IOP_GRP1_DisableClockStopSleep + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_IOP_GRP1_PERIPH_GPIOA + * @arg @ref LL_IOP_GRP1_PERIPH_GPIOB + * @arg @ref LL_IOP_GRP1_PERIPH_GPIOC + * @arg @ref LL_IOP_GRP1_PERIPH_GPIOD + * @arg @ref LL_IOP_GRP1_PERIPH_GPIOE + * @arg @ref LL_IOP_GRP1_PERIPH_GPIOF + * @retval None + */ +__STATIC_INLINE void LL_IOP_GRP1_DisableClockStopSleep(uint32_t Periphs) +{ + CLEAR_BIT(RCC->IOPSMENR, Periphs); +} + +/** + * @} + */ + + +/** + * @} + */ + +/** + * @} + */ + +#endif /* RCC */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32G0xx_LL_BUS_H */ + diff --git a/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_ll_cortex.h b/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_ll_cortex.h new file mode 100644 index 0000000..518e081 --- /dev/null +++ b/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_ll_cortex.h @@ -0,0 +1,585 @@ +/** + ****************************************************************************** + * @file stm32g0xx_ll_cortex.h + * @author MCD Application Team + * @brief Header file of CORTEX LL module. + @verbatim + ============================================================================== + ##### How to use this driver ##### + ============================================================================== + [..] + The LL CORTEX driver contains a set of generic APIs that can be + used by user: + (+) SYSTICK configuration used by LL_mDelay and LL_Init1msTick + functions + (+) Low power mode configuration (SCB register of Cortex-MCU) + (+) MPU API to configure and enable regions + (+) API to access to MCU info (CPUID register) + + @endverbatim + ****************************************************************************** + * @attention + * + * Copyright (c) 2018 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file in + * the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32G0xx_LL_CORTEX_H +#define STM32G0xx_LL_CORTEX_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32g0xx.h" + +/** @addtogroup STM32G0xx_LL_Driver + * @{ + */ + +/** @defgroup CORTEX_LL CORTEX + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ + +/* Private constants ---------------------------------------------------------*/ + +/* Private macros ------------------------------------------------------------*/ + +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +/** @defgroup CORTEX_LL_Exported_Constants CORTEX Exported Constants + * @{ + */ + +/** @defgroup CORTEX_LL_EC_CLKSOURCE_HCLK SYSTICK Clock Source + * @{ + */ +#define LL_SYSTICK_CLKSOURCE_HCLK_DIV8 0x00000000U /*!< AHB clock divided by 8 selected as SysTick clock source.*/ +#define LL_SYSTICK_CLKSOURCE_HCLK SysTick_CTRL_CLKSOURCE_Msk /*!< AHB clock selected as SysTick clock source. */ +/** + * @} + */ + +#if __MPU_PRESENT + +/** @defgroup CORTEX_LL_EC_CTRL_HFNMI_PRIVDEF MPU Control + * @{ + */ +#define LL_MPU_CTRL_HFNMI_PRIVDEF_NONE 0x00000000U /*!< Disable NMI and privileged SW access */ +#define LL_MPU_CTRL_HARDFAULT_NMI MPU_CTRL_HFNMIENA_Msk /*!< Enables the operation of MPU during hard fault, NMI, and FAULTMASK handlers */ +#define LL_MPU_CTRL_PRIVILEGED_DEFAULT MPU_CTRL_PRIVDEFENA_Msk /*!< Enable privileged software access to default memory map */ +#define LL_MPU_CTRL_HFNMI_PRIVDEF (MPU_CTRL_HFNMIENA_Msk | MPU_CTRL_PRIVDEFENA_Msk) /*!< Enable NMI and privileged SW access */ +/** + * @} + */ + +/** @defgroup CORTEX_LL_EC_REGION MPU Region Number + * @{ + */ +#define LL_MPU_REGION_NUMBER0 0x00U /*!< REGION Number 0 */ +#define LL_MPU_REGION_NUMBER1 0x01U /*!< REGION Number 1 */ +#define LL_MPU_REGION_NUMBER2 0x02U /*!< REGION Number 2 */ +#define LL_MPU_REGION_NUMBER3 0x03U /*!< REGION Number 3 */ +#define LL_MPU_REGION_NUMBER4 0x04U /*!< REGION Number 4 */ +#define LL_MPU_REGION_NUMBER5 0x05U /*!< REGION Number 5 */ +#define LL_MPU_REGION_NUMBER6 0x06U /*!< REGION Number 6 */ +#define LL_MPU_REGION_NUMBER7 0x07U /*!< REGION Number 7 */ +/** + * @} + */ + +/** @defgroup CORTEX_LL_EC_REGION_SIZE MPU Region Size + * @{ + */ +#define LL_MPU_REGION_SIZE_256B (0x07U << MPU_RASR_SIZE_Pos) /*!< 256B Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_512B (0x08U << MPU_RASR_SIZE_Pos) /*!< 512B Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_1KB (0x09U << MPU_RASR_SIZE_Pos) /*!< 1KB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_2KB (0x0AU << MPU_RASR_SIZE_Pos) /*!< 2KB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_4KB (0x0BU << MPU_RASR_SIZE_Pos) /*!< 4KB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_8KB (0x0CU << MPU_RASR_SIZE_Pos) /*!< 8KB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_16KB (0x0DU << MPU_RASR_SIZE_Pos) /*!< 16KB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_32KB (0x0EU << MPU_RASR_SIZE_Pos) /*!< 32KB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_64KB (0x0FU << MPU_RASR_SIZE_Pos) /*!< 64KB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_128KB (0x10U << MPU_RASR_SIZE_Pos) /*!< 128KB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_256KB (0x11U << MPU_RASR_SIZE_Pos) /*!< 256KB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_512KB (0x12U << MPU_RASR_SIZE_Pos) /*!< 512KB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_1MB (0x13U << MPU_RASR_SIZE_Pos) /*!< 1MB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_2MB (0x14U << MPU_RASR_SIZE_Pos) /*!< 2MB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_4MB (0x15U << MPU_RASR_SIZE_Pos) /*!< 4MB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_8MB (0x16U << MPU_RASR_SIZE_Pos) /*!< 8MB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_16MB (0x17U << MPU_RASR_SIZE_Pos) /*!< 16MB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_32MB (0x18U << MPU_RASR_SIZE_Pos) /*!< 32MB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_64MB (0x19U << MPU_RASR_SIZE_Pos) /*!< 64MB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_128MB (0x1AU << MPU_RASR_SIZE_Pos) /*!< 128MB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_256MB (0x1BU << MPU_RASR_SIZE_Pos) /*!< 256MB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_512MB (0x1CU << MPU_RASR_SIZE_Pos) /*!< 512MB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_1GB (0x1DU << MPU_RASR_SIZE_Pos) /*!< 1GB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_2GB (0x1EU << MPU_RASR_SIZE_Pos) /*!< 2GB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_4GB (0x1FU << MPU_RASR_SIZE_Pos) /*!< 4GB Size of the MPU protection region */ +/** + * @} + */ + +/** @defgroup CORTEX_LL_EC_REGION_PRIVILEDGES MPU Region Privileges + * @{ + */ +#define LL_MPU_REGION_NO_ACCESS (0x00U << MPU_RASR_AP_Pos) /*!< No access*/ +#define LL_MPU_REGION_PRIV_RW (0x01U << MPU_RASR_AP_Pos) /*!< RW privileged (privileged access only)*/ +#define LL_MPU_REGION_PRIV_RW_URO (0x02U << MPU_RASR_AP_Pos) /*!< RW privileged - RO user (Write in a user program generates a fault) */ +#define LL_MPU_REGION_FULL_ACCESS (0x03U << MPU_RASR_AP_Pos) /*!< RW privileged & user (Full access) */ +#define LL_MPU_REGION_PRIV_RO (0x05U << MPU_RASR_AP_Pos) /*!< RO privileged (privileged read only)*/ +#define LL_MPU_REGION_PRIV_RO_URO (0x06U << MPU_RASR_AP_Pos) /*!< RO privileged & user (read only) */ +/** + * @} + */ + +/** @defgroup CORTEX_LL_EC_TEX MPU TEX Level + * @{ + */ +#define LL_MPU_TEX_LEVEL0 (0x00U << MPU_RASR_TEX_Pos) /*!< b000 for TEX bits */ +#define LL_MPU_TEX_LEVEL1 (0x01U << MPU_RASR_TEX_Pos) /*!< b001 for TEX bits */ +#define LL_MPU_TEX_LEVEL2 (0x02U << MPU_RASR_TEX_Pos) /*!< b010 for TEX bits */ +#define LL_MPU_TEX_LEVEL4 (0x04U << MPU_RASR_TEX_Pos) /*!< b100 for TEX bits */ +/** + * @} + */ + +/** @defgroup CORTEX_LL_EC_INSTRUCTION_ACCESS MPU Instruction Access + * @{ + */ +#define LL_MPU_INSTRUCTION_ACCESS_ENABLE 0x00U /*!< Instruction fetches enabled */ +#define LL_MPU_INSTRUCTION_ACCESS_DISABLE MPU_RASR_XN_Msk /*!< Instruction fetches disabled*/ +/** + * @} + */ + +/** @defgroup CORTEX_LL_EC_SHAREABLE_ACCESS MPU Shareable Access + * @{ + */ +#define LL_MPU_ACCESS_SHAREABLE MPU_RASR_S_Msk /*!< Shareable memory attribute */ +#define LL_MPU_ACCESS_NOT_SHAREABLE 0x00U /*!< Not Shareable memory attribute */ +/** + * @} + */ + +/** @defgroup CORTEX_LL_EC_CACHEABLE_ACCESS MPU Cacheable Access + * @{ + */ +#define LL_MPU_ACCESS_CACHEABLE MPU_RASR_C_Msk /*!< Cacheable memory attribute */ +#define LL_MPU_ACCESS_NOT_CACHEABLE 0x00U /*!< Not Cacheable memory attribute */ +/** + * @} + */ + +/** @defgroup CORTEX_LL_EC_BUFFERABLE_ACCESS MPU Bufferable Access + * @{ + */ +#define LL_MPU_ACCESS_BUFFERABLE MPU_RASR_B_Msk /*!< Bufferable memory attribute */ +#define LL_MPU_ACCESS_NOT_BUFFERABLE 0x00U /*!< Not Bufferable memory attribute */ +/** + * @} + */ +#endif /* __MPU_PRESENT */ +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup CORTEX_LL_Exported_Functions CORTEX Exported Functions + * @{ + */ + +/** @defgroup CORTEX_LL_EF_SYSTICK SYSTICK + * @{ + */ + +/** + * @brief This function checks if the Systick counter flag is active or not. + * @note It can be used in timeout function on application side. + * @rmtoll STK_CTRL COUNTFLAG LL_SYSTICK_IsActiveCounterFlag + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSTICK_IsActiveCounterFlag(void) +{ + return (((SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk) == (SysTick_CTRL_COUNTFLAG_Msk)) ? 1UL : 0UL); +} + +/** + * @brief Configures the SysTick clock source + * @rmtoll STK_CTRL CLKSOURCE LL_SYSTICK_SetClkSource + * @param Source This parameter can be one of the following values: + * @arg @ref LL_SYSTICK_CLKSOURCE_HCLK_DIV8 + * @arg @ref LL_SYSTICK_CLKSOURCE_HCLK + * @retval None + */ +__STATIC_INLINE void LL_SYSTICK_SetClkSource(uint32_t Source) +{ + if (Source == LL_SYSTICK_CLKSOURCE_HCLK) + { + SET_BIT(SysTick->CTRL, LL_SYSTICK_CLKSOURCE_HCLK); + } + else + { + CLEAR_BIT(SysTick->CTRL, LL_SYSTICK_CLKSOURCE_HCLK); + } +} + +/** + * @brief Get the SysTick clock source + * @rmtoll STK_CTRL CLKSOURCE LL_SYSTICK_GetClkSource + * @retval Returned value can be one of the following values: + * @arg @ref LL_SYSTICK_CLKSOURCE_HCLK_DIV8 + * @arg @ref LL_SYSTICK_CLKSOURCE_HCLK + */ +__STATIC_INLINE uint32_t LL_SYSTICK_GetClkSource(void) +{ + return READ_BIT(SysTick->CTRL, LL_SYSTICK_CLKSOURCE_HCLK); +} + +/** + * @brief Enable SysTick exception request + * @rmtoll STK_CTRL TICKINT LL_SYSTICK_EnableIT + * @retval None + */ +__STATIC_INLINE void LL_SYSTICK_EnableIT(void) +{ + SET_BIT(SysTick->CTRL, SysTick_CTRL_TICKINT_Msk); +} + +/** + * @brief Disable SysTick exception request + * @rmtoll STK_CTRL TICKINT LL_SYSTICK_DisableIT + * @retval None + */ +__STATIC_INLINE void LL_SYSTICK_DisableIT(void) +{ + CLEAR_BIT(SysTick->CTRL, SysTick_CTRL_TICKINT_Msk); +} + +/** + * @brief Checks if the SYSTICK interrupt is enabled or disabled. + * @rmtoll STK_CTRL TICKINT LL_SYSTICK_IsEnabledIT + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSTICK_IsEnabledIT(void) +{ + return ((READ_BIT(SysTick->CTRL, SysTick_CTRL_TICKINT_Msk) == (SysTick_CTRL_TICKINT_Msk)) ? 1UL : 0UL); +} + +/** + * @} + */ + +/** @defgroup CORTEX_LL_EF_LOW_POWER_MODE LOW POWER MODE + * @{ + */ + +/** + * @brief Processor uses sleep as its low power mode + * @rmtoll SCB_SCR SLEEPDEEP LL_LPM_EnableSleep + * @retval None + */ +__STATIC_INLINE void LL_LPM_EnableSleep(void) +{ + /* Clear SLEEPDEEP bit of Cortex System Control Register */ + CLEAR_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SLEEPDEEP_Msk)); +} + +/** + * @brief Processor uses deep sleep as its low power mode + * @rmtoll SCB_SCR SLEEPDEEP LL_LPM_EnableDeepSleep + * @retval None + */ +__STATIC_INLINE void LL_LPM_EnableDeepSleep(void) +{ + /* Set SLEEPDEEP bit of Cortex System Control Register */ + SET_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SLEEPDEEP_Msk)); +} + +/** + * @brief Configures sleep-on-exit when returning from Handler mode to Thread mode. + * @note Setting this bit to 1 enables an interrupt-driven application to avoid returning to an + * empty main application. + * @rmtoll SCB_SCR SLEEPONEXIT LL_LPM_EnableSleepOnExit + * @retval None + */ +__STATIC_INLINE void LL_LPM_EnableSleepOnExit(void) +{ + /* Set SLEEPONEXIT bit of Cortex System Control Register */ + SET_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SLEEPONEXIT_Msk)); +} + +/** + * @brief Do not sleep when returning to Thread mode. + * @rmtoll SCB_SCR SLEEPONEXIT LL_LPM_DisableSleepOnExit + * @retval None + */ +__STATIC_INLINE void LL_LPM_DisableSleepOnExit(void) +{ + /* Clear SLEEPONEXIT bit of Cortex System Control Register */ + CLEAR_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SLEEPONEXIT_Msk)); +} + +/** + * @brief Enabled events and all interrupts, including disabled interrupts, can wakeup the + * processor. + * @rmtoll SCB_SCR SEVEONPEND LL_LPM_EnableEventOnPend + * @retval None + */ +__STATIC_INLINE void LL_LPM_EnableEventOnPend(void) +{ + /* Set SEVEONPEND bit of Cortex System Control Register */ + SET_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SEVONPEND_Msk)); +} + +/** + * @brief Only enabled interrupts or events can wakeup the processor, disabled interrupts are + * excluded + * @rmtoll SCB_SCR SEVEONPEND LL_LPM_DisableEventOnPend + * @retval None + */ +__STATIC_INLINE void LL_LPM_DisableEventOnPend(void) +{ + /* Clear SEVEONPEND bit of Cortex System Control Register */ + CLEAR_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SEVONPEND_Msk)); +} + +/** + * @} + */ + +/** @defgroup CORTEX_LL_EF_MCU_INFO MCU INFO + * @{ + */ + +/** + * @brief Get Implementer code + * @rmtoll SCB_CPUID IMPLEMENTER LL_CPUID_GetImplementer + * @retval Value should be equal to 0x41 for ARM + */ +__STATIC_INLINE uint32_t LL_CPUID_GetImplementer(void) +{ + return (uint32_t)(READ_BIT(SCB->CPUID, SCB_CPUID_IMPLEMENTER_Msk) >> SCB_CPUID_IMPLEMENTER_Pos); +} + +/** + * @brief Get Variant number (The r value in the rnpn product revision identifier) + * @rmtoll SCB_CPUID VARIANT LL_CPUID_GetVariant + * @retval Value between 0 and 255 (0x0: revision 0) + */ +__STATIC_INLINE uint32_t LL_CPUID_GetVariant(void) +{ + return (uint32_t)(READ_BIT(SCB->CPUID, SCB_CPUID_VARIANT_Msk) >> SCB_CPUID_VARIANT_Pos); +} + +/** + * @brief Get Architecture number + * @rmtoll SCB_CPUID ARCHITECTURE LL_CPUID_GetArchitecture + * @retval Value should be equal to 0xC for Cortex-M0+ devices + */ +__STATIC_INLINE uint32_t LL_CPUID_GetArchitecture(void) +{ + return (uint32_t)(READ_BIT(SCB->CPUID, SCB_CPUID_ARCHITECTURE_Msk) >> SCB_CPUID_ARCHITECTURE_Pos); +} + +/** + * @brief Get Part number + * @rmtoll SCB_CPUID PARTNO LL_CPUID_GetParNo + * @retval Value should be equal to 0xC60 for Cortex-M0+ + */ +__STATIC_INLINE uint32_t LL_CPUID_GetParNo(void) +{ + return (uint32_t)(READ_BIT(SCB->CPUID, SCB_CPUID_PARTNO_Msk) >> SCB_CPUID_PARTNO_Pos); +} + +/** + * @brief Get Revision number (The p value in the rnpn product revision identifier, indicates patch release) + * @rmtoll SCB_CPUID REVISION LL_CPUID_GetRevision + * @retval Value between 0 and 255 (0x1: patch 1) + */ +__STATIC_INLINE uint32_t LL_CPUID_GetRevision(void) +{ + return (uint32_t)(READ_BIT(SCB->CPUID, SCB_CPUID_REVISION_Msk) >> SCB_CPUID_REVISION_Pos); +} + +/** + * @} + */ + +#if __MPU_PRESENT +/** @defgroup CORTEX_LL_EF_MPU MPU + * @{ + */ + +/** + * @brief Enable MPU with input options + * @rmtoll MPU_CTRL ENABLE LL_MPU_Enable + * @param Options This parameter can be one of the following values: + * @arg @ref LL_MPU_CTRL_HFNMI_PRIVDEF_NONE + * @arg @ref LL_MPU_CTRL_HARDFAULT_NMI + * @arg @ref LL_MPU_CTRL_PRIVILEGED_DEFAULT + * @arg @ref LL_MPU_CTRL_HFNMI_PRIVDEF + * @retval None + */ +__STATIC_INLINE void LL_MPU_Enable(uint32_t Options) +{ + /* Enable the MPU*/ + WRITE_REG(MPU->CTRL, (MPU_CTRL_ENABLE_Msk | Options)); + /* Ensure MPU settings take effects */ + __DSB(); + /* Sequence instruction fetches using update settings */ + __ISB(); +} + +/** + * @brief Disable MPU + * @rmtoll MPU_CTRL ENABLE LL_MPU_Disable + * @retval None + */ +__STATIC_INLINE void LL_MPU_Disable(void) +{ + /* Make sure outstanding transfers are done */ + __DMB(); + /* Disable MPU*/ + WRITE_REG(MPU->CTRL, 0U); +} + +/** + * @brief Check if MPU is enabled or not + * @rmtoll MPU_CTRL ENABLE LL_MPU_IsEnabled + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_MPU_IsEnabled(void) +{ + return ((READ_BIT(MPU->CTRL, MPU_CTRL_ENABLE_Msk) == (MPU_CTRL_ENABLE_Msk)) ? 1UL : 0UL); +} + +/** + * @brief Enable a MPU region + * @rmtoll MPU_RASR ENABLE LL_MPU_EnableRegion + * @param Region This parameter can be one of the following values: + * @arg @ref LL_MPU_REGION_NUMBER0 + * @arg @ref LL_MPU_REGION_NUMBER1 + * @arg @ref LL_MPU_REGION_NUMBER2 + * @arg @ref LL_MPU_REGION_NUMBER3 + * @arg @ref LL_MPU_REGION_NUMBER4 + * @arg @ref LL_MPU_REGION_NUMBER5 + * @arg @ref LL_MPU_REGION_NUMBER6 + * @arg @ref LL_MPU_REGION_NUMBER7 + * @retval None + */ +__STATIC_INLINE void LL_MPU_EnableRegion(uint32_t Region) +{ + /* Set Region number */ + WRITE_REG(MPU->RNR, Region); + /* Enable the MPU region */ + SET_BIT(MPU->RASR, MPU_RASR_ENABLE_Msk); +} + +/** + * @brief Configure and enable a region + * @rmtoll MPU_RNR REGION LL_MPU_ConfigRegion\n + * MPU_RBAR REGION LL_MPU_ConfigRegion\n + * MPU_RBAR ADDR LL_MPU_ConfigRegion\n + * MPU_RASR XN LL_MPU_ConfigRegion\n + * MPU_RASR AP LL_MPU_ConfigRegion\n + * MPU_RASR S LL_MPU_ConfigRegion\n + * MPU_RASR C LL_MPU_ConfigRegion\n + * MPU_RASR B LL_MPU_ConfigRegion\n + * MPU_RASR SIZE LL_MPU_ConfigRegion + * @param Region This parameter can be one of the following values: + * @arg @ref LL_MPU_REGION_NUMBER0 + * @arg @ref LL_MPU_REGION_NUMBER1 + * @arg @ref LL_MPU_REGION_NUMBER2 + * @arg @ref LL_MPU_REGION_NUMBER3 + * @arg @ref LL_MPU_REGION_NUMBER4 + * @arg @ref LL_MPU_REGION_NUMBER5 + * @arg @ref LL_MPU_REGION_NUMBER6 + * @arg @ref LL_MPU_REGION_NUMBER7 + * @param Address Value of region base address + * @param SubRegionDisable Sub-region disable value between Min_Data = 0x00 and Max_Data = 0xFF + * @param Attributes This parameter can be a combination of the following values: + * @arg @ref LL_MPU_REGION_SIZE_256B or @ref LL_MPU_REGION_SIZE_512B + * or @ref LL_MPU_REGION_SIZE_1KB or @ref LL_MPU_REGION_SIZE_2KB or @ref LL_MPU_REGION_SIZE_4KB or @ref LL_MPU_REGION_SIZE_8KB or @ref LL_MPU_REGION_SIZE_16KB + * or @ref LL_MPU_REGION_SIZE_32KB or @ref LL_MPU_REGION_SIZE_64KB or @ref LL_MPU_REGION_SIZE_128KB or @ref LL_MPU_REGION_SIZE_256KB or @ref LL_MPU_REGION_SIZE_512KB + * or @ref LL_MPU_REGION_SIZE_1MB or @ref LL_MPU_REGION_SIZE_2MB or @ref LL_MPU_REGION_SIZE_4MB or @ref LL_MPU_REGION_SIZE_8MB or @ref LL_MPU_REGION_SIZE_16MB + * or @ref LL_MPU_REGION_SIZE_32MB or @ref LL_MPU_REGION_SIZE_64MB or @ref LL_MPU_REGION_SIZE_128MB or @ref LL_MPU_REGION_SIZE_256MB or @ref LL_MPU_REGION_SIZE_512MB + * or @ref LL_MPU_REGION_SIZE_1GB or @ref LL_MPU_REGION_SIZE_2GB or @ref LL_MPU_REGION_SIZE_4GB + * @arg @ref LL_MPU_REGION_NO_ACCESS or @ref LL_MPU_REGION_PRIV_RW or @ref LL_MPU_REGION_PRIV_RW_URO or @ref LL_MPU_REGION_FULL_ACCESS + * or @ref LL_MPU_REGION_PRIV_RO or @ref LL_MPU_REGION_PRIV_RO_URO + * @arg @ref LL_MPU_TEX_LEVEL0 or @ref LL_MPU_TEX_LEVEL1 or @ref LL_MPU_TEX_LEVEL2 or @ref LL_MPU_TEX_LEVEL4 + * @arg @ref LL_MPU_INSTRUCTION_ACCESS_ENABLE or @ref LL_MPU_INSTRUCTION_ACCESS_DISABLE + * @arg @ref LL_MPU_ACCESS_SHAREABLE or @ref LL_MPU_ACCESS_NOT_SHAREABLE + * @arg @ref LL_MPU_ACCESS_CACHEABLE or @ref LL_MPU_ACCESS_NOT_CACHEABLE + * @arg @ref LL_MPU_ACCESS_BUFFERABLE or @ref LL_MPU_ACCESS_NOT_BUFFERABLE + * @retval None + */ +__STATIC_INLINE void LL_MPU_ConfigRegion(uint32_t Region, uint32_t SubRegionDisable, uint32_t Address, uint32_t Attributes) +{ + /* Set Region number */ + WRITE_REG(MPU->RNR, Region); + /* Set base address */ + WRITE_REG(MPU->RBAR, (Address & 0xFFFFFFE0U)); + /* Configure MPU */ + WRITE_REG(MPU->RASR, (MPU_RASR_ENABLE_Msk | Attributes | (SubRegionDisable << MPU_RASR_SRD_Pos))); +} + +/** + * @brief Disable a region + * @rmtoll MPU_RNR REGION LL_MPU_DisableRegion\n + * MPU_RASR ENABLE LL_MPU_DisableRegion + * @param Region This parameter can be one of the following values: + * @arg @ref LL_MPU_REGION_NUMBER0 + * @arg @ref LL_MPU_REGION_NUMBER1 + * @arg @ref LL_MPU_REGION_NUMBER2 + * @arg @ref LL_MPU_REGION_NUMBER3 + * @arg @ref LL_MPU_REGION_NUMBER4 + * @arg @ref LL_MPU_REGION_NUMBER5 + * @arg @ref LL_MPU_REGION_NUMBER6 + * @arg @ref LL_MPU_REGION_NUMBER7 + * @retval None + */ +__STATIC_INLINE void LL_MPU_DisableRegion(uint32_t Region) +{ + /* Set Region number */ + WRITE_REG(MPU->RNR, Region); + /* Disable the MPU region */ + CLEAR_BIT(MPU->RASR, MPU_RASR_ENABLE_Msk); +} + +/** + * @} + */ + +#endif /* __MPU_PRESENT */ +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32G0xx_LL_CORTEX_H */ + diff --git a/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_ll_dma.h b/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_ll_dma.h new file mode 100644 index 0000000..51ac3b3 --- /dev/null +++ b/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_ll_dma.h @@ -0,0 +1,2270 @@ +/** + ****************************************************************************** + * @file stm32g0xx_ll_dma.h + * @author MCD Application Team + * @brief Header file of DMA LL module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2018 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32G0xx_LL_DMA_H +#define STM32G0xx_LL_DMA_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32g0xx.h" +#include "stm32g0xx_ll_dmamux.h" + +/** @addtogroup STM32G0xx_LL_Driver + * @{ + */ + +#if defined (DMA1) || defined (DMA2) + +/** @defgroup DMA_LL DMA + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/** @defgroup DMA_LL_Private_Variables DMA Private Variables + * @{ + */ +/* Array used to get the DMA channel register offset versus channel index LL_DMA_CHANNEL_x */ +static const uint8_t CHANNEL_OFFSET_TAB[] = +{ + (uint8_t)(DMA1_Channel1_BASE - DMA1_BASE), + (uint8_t)(DMA1_Channel2_BASE - DMA1_BASE), + (uint8_t)(DMA1_Channel3_BASE - DMA1_BASE), + (uint8_t)(DMA1_Channel4_BASE - DMA1_BASE), + (uint8_t)(DMA1_Channel5_BASE - DMA1_BASE), +#if defined(DMA1_Channel6_BASE) + (uint8_t)(DMA1_Channel6_BASE - DMA1_BASE), +#endif /* DMA1_Channel6_BASE */ +#if defined(DMA1_Channel7_BASE) + (uint8_t)(DMA1_Channel7_BASE - DMA1_BASE), +#endif /* DMA1_Channel7_BASE */ +}; +/** + * @} + */ + +/* Private constants ---------------------------------------------------------*/ +/* Private macros ------------------------------------------------------------*/ + +/** @defgroup DMA_LL_Private_Macros DMA Private Macros + * @{ + */ +/** + * @brief Helper macro to convert DMA Instance DMAx into DMAMUX channel + * @note DMAMUX channel 0 to 6 are mapped to DMA1 channel 1 to 7. + * DMAMUX channel 7 to 11 are mapped to DMA2 channel 1 to 5 (**** only available on chip which support DMA2 ****). + * @param __DMA_INSTANCE__ DMAx + * @retval Channel_Offset (LL_DMA_CHANNEL_7 or 0). + */ +#define __LL_DMA_INSTANCE_TO_DMAMUX_CHANNEL(__DMA_INSTANCE__) \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) ? 0 : LL_DMA_CHANNEL_7) +/** + * @} + */ +/* Exported types ------------------------------------------------------------*/ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup DMA_LL_ES_INIT DMA Exported Init structure + * @{ + */ +typedef struct +{ + uint32_t PeriphOrM2MSrcAddress; /*!< Specifies the peripheral base address for DMA transfer + or as Source base address in case of memory to memory transfer direction. + + This parameter must be a value between Min_Data = 0 and Max_Data = 0xFFFFFFFF. */ + + uint32_t MemoryOrM2MDstAddress; /*!< Specifies the memory base address for DMA transfer + or as Destination base address in case of memory to memory transfer direction. + + This parameter must be a value between Min_Data = 0 and Max_Data = 0xFFFFFFFF. */ + + uint32_t Direction; /*!< Specifies if the data will be transferred from memory to peripheral, + from memory to memory or from peripheral to memory. + This parameter can be a value of @ref DMA_LL_EC_DIRECTION + + This feature can be modified afterwards using unitary function @ref LL_DMA_SetDataTransferDirection(). */ + + uint32_t Mode; /*!< Specifies the normal or circular operation mode. + This parameter can be a value of @ref DMA_LL_EC_MODE + @note: The circular buffer mode cannot be used if the memory to memory + data transfer direction is configured on the selected Channel + + This feature can be modified afterwards using unitary function @ref LL_DMA_SetMode(). */ + + uint32_t PeriphOrM2MSrcIncMode; /*!< Specifies whether the Peripheral address or Source address in case of memory to memory transfer direction + is incremented or not. + This parameter can be a value of @ref DMA_LL_EC_PERIPH + + This feature can be modified afterwards using unitary function @ref LL_DMA_SetPeriphIncMode(). */ + + uint32_t MemoryOrM2MDstIncMode; /*!< Specifies whether the Memory address or Destination address in case of memory to memory transfer direction + is incremented or not. + This parameter can be a value of @ref DMA_LL_EC_MEMORY + + This feature can be modified afterwards using unitary function @ref LL_DMA_SetMemoryIncMode(). */ + + uint32_t PeriphOrM2MSrcDataSize; /*!< Specifies the Peripheral data size alignment or Source data size alignment (byte, half word, word) + in case of memory to memory transfer direction. + This parameter can be a value of @ref DMA_LL_EC_PDATAALIGN + + This feature can be modified afterwards using unitary function @ref LL_DMA_SetPeriphSize(). */ + + uint32_t MemoryOrM2MDstDataSize; /*!< Specifies the Memory data size alignment or Destination data size alignment (byte, half word, word) + in case of memory to memory transfer direction. + This parameter can be a value of @ref DMA_LL_EC_MDATAALIGN + + This feature can be modified afterwards using unitary function @ref LL_DMA_SetMemorySize(). */ + + uint32_t NbData; /*!< Specifies the number of data to transfer, in data unit. + The data unit is equal to the source buffer configuration set in PeripheralSize + or MemorySize parameters depending in the transfer direction. + This parameter must be a value between Min_Data = 0 and Max_Data = 0x0000FFFF + + This feature can be modified afterwards using unitary function @ref LL_DMA_SetDataLength(). */ + + uint32_t PeriphRequest; /*!< Specifies the peripheral request. + This parameter can be a value of @ref DMAMUX_LL_EC_REQUEST + + This feature can be modified afterwards using unitary function @ref LL_DMA_SetPeriphRequest(). */ + + uint32_t Priority; /*!< Specifies the channel priority level. + This parameter can be a value of @ref DMA_LL_EC_PRIORITY + + This feature can be modified afterwards using unitary function @ref LL_DMA_SetChannelPriorityLevel(). */ + +} LL_DMA_InitTypeDef; +/** + * @} + */ +#endif /*USE_FULL_LL_DRIVER*/ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup DMA_LL_Exported_Constants DMA Exported Constants + * @{ + */ +/** @defgroup DMA_LL_EC_CLEAR_FLAG Clear Flags Defines + * @brief Flags defines which can be used with LL_DMA_WriteReg function + * @{ + */ +#define LL_DMA_IFCR_CGIF1 DMA_IFCR_CGIF1 /*!< Channel 1 global flag */ +#define LL_DMA_IFCR_CTCIF1 DMA_IFCR_CTCIF1 /*!< Channel 1 transfer complete flag */ +#define LL_DMA_IFCR_CHTIF1 DMA_IFCR_CHTIF1 /*!< Channel 1 half transfer flag */ +#define LL_DMA_IFCR_CTEIF1 DMA_IFCR_CTEIF1 /*!< Channel 1 transfer error flag */ +#define LL_DMA_IFCR_CGIF2 DMA_IFCR_CGIF2 /*!< Channel 2 global flag */ +#define LL_DMA_IFCR_CTCIF2 DMA_IFCR_CTCIF2 /*!< Channel 2 transfer complete flag */ +#define LL_DMA_IFCR_CHTIF2 DMA_IFCR_CHTIF2 /*!< Channel 2 half transfer flag */ +#define LL_DMA_IFCR_CTEIF2 DMA_IFCR_CTEIF2 /*!< Channel 2 transfer error flag */ +#define LL_DMA_IFCR_CGIF3 DMA_IFCR_CGIF3 /*!< Channel 3 global flag */ +#define LL_DMA_IFCR_CTCIF3 DMA_IFCR_CTCIF3 /*!< Channel 3 transfer complete flag */ +#define LL_DMA_IFCR_CHTIF3 DMA_IFCR_CHTIF3 /*!< Channel 3 half transfer flag */ +#define LL_DMA_IFCR_CTEIF3 DMA_IFCR_CTEIF3 /*!< Channel 3 transfer error flag */ +#define LL_DMA_IFCR_CGIF4 DMA_IFCR_CGIF4 /*!< Channel 4 global flag */ +#define LL_DMA_IFCR_CTCIF4 DMA_IFCR_CTCIF4 /*!< Channel 4 transfer complete flag */ +#define LL_DMA_IFCR_CHTIF4 DMA_IFCR_CHTIF4 /*!< Channel 4 half transfer flag */ +#define LL_DMA_IFCR_CTEIF4 DMA_IFCR_CTEIF4 /*!< Channel 4 transfer error flag */ +#define LL_DMA_IFCR_CGIF5 DMA_IFCR_CGIF5 /*!< Channel 5 global flag */ +#define LL_DMA_IFCR_CTCIF5 DMA_IFCR_CTCIF5 /*!< Channel 5 transfer complete flag */ +#define LL_DMA_IFCR_CHTIF5 DMA_IFCR_CHTIF5 /*!< Channel 5 half transfer flag */ +#define LL_DMA_IFCR_CTEIF5 DMA_IFCR_CTEIF5 /*!< Channel 5 transfer error flag */ +#if defined(DMA1_Channel6) +#define LL_DMA_IFCR_CGIF6 DMA_IFCR_CGIF6 /*!< Channel 6 global flag */ +#define LL_DMA_IFCR_CTCIF6 DMA_IFCR_CTCIF6 /*!< Channel 6 transfer complete flag */ +#define LL_DMA_IFCR_CHTIF6 DMA_IFCR_CHTIF6 /*!< Channel 6 half transfer flag */ +#define LL_DMA_IFCR_CTEIF6 DMA_IFCR_CTEIF6 /*!< Channel 6 transfer error flag */ +#endif /* DMA1_Channel6 */ +#if defined(DMA1_Channel7) +#define LL_DMA_IFCR_CGIF7 DMA_IFCR_CGIF7 /*!< Channel 7 global flag */ +#define LL_DMA_IFCR_CTCIF7 DMA_IFCR_CTCIF7 /*!< Channel 7 transfer complete flag */ +#define LL_DMA_IFCR_CHTIF7 DMA_IFCR_CHTIF7 /*!< Channel 7 half transfer flag */ +#define LL_DMA_IFCR_CTEIF7 DMA_IFCR_CTEIF7 /*!< Channel 7 transfer error flag */ +#endif /* DMA1_Channel7 */ +/** + * @} + */ + +/** @defgroup DMA_LL_EC_GET_FLAG Get Flags Defines + * @brief Flags defines which can be used with LL_DMA_ReadReg function + * @{ + */ +#define LL_DMA_ISR_GIF1 DMA_ISR_GIF1 /*!< Channel 1 global flag */ +#define LL_DMA_ISR_TCIF1 DMA_ISR_TCIF1 /*!< Channel 1 transfer complete flag */ +#define LL_DMA_ISR_HTIF1 DMA_ISR_HTIF1 /*!< Channel 1 half transfer flag */ +#define LL_DMA_ISR_TEIF1 DMA_ISR_TEIF1 /*!< Channel 1 transfer error flag */ +#define LL_DMA_ISR_GIF2 DMA_ISR_GIF2 /*!< Channel 2 global flag */ +#define LL_DMA_ISR_TCIF2 DMA_ISR_TCIF2 /*!< Channel 2 transfer complete flag */ +#define LL_DMA_ISR_HTIF2 DMA_ISR_HTIF2 /*!< Channel 2 half transfer flag */ +#define LL_DMA_ISR_TEIF2 DMA_ISR_TEIF2 /*!< Channel 2 transfer error flag */ +#define LL_DMA_ISR_GIF3 DMA_ISR_GIF3 /*!< Channel 3 global flag */ +#define LL_DMA_ISR_TCIF3 DMA_ISR_TCIF3 /*!< Channel 3 transfer complete flag */ +#define LL_DMA_ISR_HTIF3 DMA_ISR_HTIF3 /*!< Channel 3 half transfer flag */ +#define LL_DMA_ISR_TEIF3 DMA_ISR_TEIF3 /*!< Channel 3 transfer error flag */ +#define LL_DMA_ISR_GIF4 DMA_ISR_GIF4 /*!< Channel 4 global flag */ +#define LL_DMA_ISR_TCIF4 DMA_ISR_TCIF4 /*!< Channel 4 transfer complete flag */ +#define LL_DMA_ISR_HTIF4 DMA_ISR_HTIF4 /*!< Channel 4 half transfer flag */ +#define LL_DMA_ISR_TEIF4 DMA_ISR_TEIF4 /*!< Channel 4 transfer error flag */ +#define LL_DMA_ISR_GIF5 DMA_ISR_GIF5 /*!< Channel 5 global flag */ +#define LL_DMA_ISR_TCIF5 DMA_ISR_TCIF5 /*!< Channel 5 transfer complete flag */ +#define LL_DMA_ISR_HTIF5 DMA_ISR_HTIF5 /*!< Channel 5 half transfer flag */ +#define LL_DMA_ISR_TEIF5 DMA_ISR_TEIF5 /*!< Channel 5 transfer error flag */ +#if defined(DMA1_Channel6) +#define LL_DMA_ISR_GIF6 DMA_ISR_GIF6 /*!< Channel 6 global flag */ +#define LL_DMA_ISR_TCIF6 DMA_ISR_TCIF6 /*!< Channel 6 transfer complete flag */ +#define LL_DMA_ISR_HTIF6 DMA_ISR_HTIF6 /*!< Channel 6 half transfer flag */ +#define LL_DMA_ISR_TEIF6 DMA_ISR_TEIF6 /*!< Channel 6 transfer error flag */ +#endif /* DMA1_Channel6 */ +#if defined(DMA1_Channel7) +#define LL_DMA_ISR_GIF7 DMA_ISR_GIF7 /*!< Channel 7 global flag */ +#define LL_DMA_ISR_TCIF7 DMA_ISR_TCIF7 /*!< Channel 7 transfer complete flag */ +#define LL_DMA_ISR_HTIF7 DMA_ISR_HTIF7 /*!< Channel 7 half transfer flag */ +#define LL_DMA_ISR_TEIF7 DMA_ISR_TEIF7 /*!< Channel 7 transfer error flag */ +#endif /* DMA1_Channel7 */ +/** + * @} + */ + +/** @defgroup DMA_LL_EC_IT IT Defines + * @brief IT defines which can be used with LL_DMA_ReadReg and LL_DMA_WriteReg functions + * @{ + */ +#define LL_DMA_CCR_TCIE DMA_CCR_TCIE /*!< Transfer complete interrupt */ +#define LL_DMA_CCR_HTIE DMA_CCR_HTIE /*!< Half Transfer interrupt */ +#define LL_DMA_CCR_TEIE DMA_CCR_TEIE /*!< Transfer error interrupt */ +/** + * @} + */ + +/** @defgroup DMA_LL_EC_CHANNEL CHANNEL + * @{ + */ +#define LL_DMA_CHANNEL_1 0x00000000U /*!< DMA Channel 1 */ +#define LL_DMA_CHANNEL_2 0x00000001U /*!< DMA Channel 2 */ +#define LL_DMA_CHANNEL_3 0x00000002U /*!< DMA Channel 3 */ +#define LL_DMA_CHANNEL_4 0x00000003U /*!< DMA Channel 4 */ +#define LL_DMA_CHANNEL_5 0x00000004U /*!< DMA Channel 5 */ +#if defined(DMA1_Channel6) +#define LL_DMA_CHANNEL_6 0x00000005U /*!< DMA Channel 6 */ +#endif /* DMA1_Channel6 */ +#if defined(DMA1_Channel7) +#define LL_DMA_CHANNEL_7 0x00000006U /*!< DMA Channel 7 */ +#endif /* DMA1_Channel7 */ +#if defined(USE_FULL_LL_DRIVER) +#define LL_DMA_CHANNEL_ALL 0xFFFF0000U /*!< DMA Channel all (used only for function @ref LL_DMA_DeInit(). */ +#endif /*USE_FULL_LL_DRIVER*/ +/** + * @} + */ + +/** @defgroup DMA_LL_EC_DIRECTION Transfer Direction + * @{ + */ +#define LL_DMA_DIRECTION_PERIPH_TO_MEMORY 0x00000000U /*!< Peripheral to memory direction */ +#define LL_DMA_DIRECTION_MEMORY_TO_PERIPH DMA_CCR_DIR /*!< Memory to peripheral direction */ +#define LL_DMA_DIRECTION_MEMORY_TO_MEMORY DMA_CCR_MEM2MEM /*!< Memory to memory direction */ +/** + * @} + */ + +/** @defgroup DMA_LL_EC_MODE Transfer mode + * @{ + */ +#define LL_DMA_MODE_NORMAL 0x00000000U /*!< Normal Mode */ +#define LL_DMA_MODE_CIRCULAR DMA_CCR_CIRC /*!< Circular Mode */ +/** + * @} + */ + +/** @defgroup DMA_LL_EC_PERIPH Peripheral increment mode + * @{ + */ +#define LL_DMA_PERIPH_INCREMENT DMA_CCR_PINC /*!< Peripheral increment mode Enable */ +#define LL_DMA_PERIPH_NOINCREMENT 0x00000000U /*!< Peripheral increment mode Disable */ +/** + * @} + */ + +/** @defgroup DMA_LL_EC_MEMORY Memory increment mode + * @{ + */ +#define LL_DMA_MEMORY_INCREMENT DMA_CCR_MINC /*!< Memory increment mode Enable */ +#define LL_DMA_MEMORY_NOINCREMENT 0x00000000U /*!< Memory increment mode Disable */ +/** + * @} + */ + +/** @defgroup DMA_LL_EC_PDATAALIGN Peripheral data alignment + * @{ + */ +#define LL_DMA_PDATAALIGN_BYTE 0x00000000U /*!< Peripheral data alignment : Byte */ +#define LL_DMA_PDATAALIGN_HALFWORD DMA_CCR_PSIZE_0 /*!< Peripheral data alignment : HalfWord */ +#define LL_DMA_PDATAALIGN_WORD DMA_CCR_PSIZE_1 /*!< Peripheral data alignment : Word */ +/** + * @} + */ + +/** @defgroup DMA_LL_EC_MDATAALIGN Memory data alignment + * @{ + */ +#define LL_DMA_MDATAALIGN_BYTE 0x00000000U /*!< Memory data alignment : Byte */ +#define LL_DMA_MDATAALIGN_HALFWORD DMA_CCR_MSIZE_0 /*!< Memory data alignment : HalfWord */ +#define LL_DMA_MDATAALIGN_WORD DMA_CCR_MSIZE_1 /*!< Memory data alignment : Word */ +/** + * @} + */ + +/** @defgroup DMA_LL_EC_PRIORITY Transfer Priority level + * @{ + */ +#define LL_DMA_PRIORITY_LOW 0x00000000U /*!< Priority level : Low */ +#define LL_DMA_PRIORITY_MEDIUM DMA_CCR_PL_0 /*!< Priority level : Medium */ +#define LL_DMA_PRIORITY_HIGH DMA_CCR_PL_1 /*!< Priority level : High */ +#define LL_DMA_PRIORITY_VERYHIGH DMA_CCR_PL /*!< Priority level : Very_High */ +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup DMA_LL_Exported_Macros DMA Exported Macros + * @{ + */ + +/** @defgroup DMA_LL_EM_WRITE_READ Common Write and read registers macros + * @{ + */ +/** + * @brief Write a value in DMA register + * @param __INSTANCE__ DMA Instance + * @param __REG__ Register to be written + * @param __VALUE__ Value to be written in the register + * @retval None + */ +#define LL_DMA_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__)) + +/** + * @brief Read a value in DMA register + * @param __INSTANCE__ DMA Instance + * @param __REG__ Register to be read + * @retval Register value + */ +#define LL_DMA_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__) +/** + * @} + */ + +/** @defgroup DMA_LL_EM_CONVERT_DMAxCHANNELy Convert DMAxChannely + * @{ + */ +/** + * @brief Convert DMAx_Channely into DMAx + * @param __CHANNEL_INSTANCE__ DMAx_Channely + * @retval DMAx + */ +#if defined(DMA2) +#define __LL_DMA_GET_INSTANCE(__CHANNEL_INSTANCE__) \ + (((uint32_t)(__CHANNEL_INSTANCE__) > ((uint32_t)DMA1_Channel7)) ? DMA2 : DMA1) +#else /* DMA1 */ +#define __LL_DMA_GET_INSTANCE(__CHANNEL_INSTANCE__) (DMA1) +#endif /* DMA2 */ + +/** + * @brief Convert DMAx_Channely into LL_DMA_CHANNEL_y + * @param __CHANNEL_INSTANCE__ DMAx_Channely + * @retval LL_DMA_CHANNEL_y + */ +#if defined(DMA2) +#define __LL_DMA_GET_CHANNEL(__CHANNEL_INSTANCE__) \ + (((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel1)) ? LL_DMA_CHANNEL_1 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA2_Channel1)) ? LL_DMA_CHANNEL_1 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel2)) ? LL_DMA_CHANNEL_2 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA2_Channel2)) ? LL_DMA_CHANNEL_2 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel3)) ? LL_DMA_CHANNEL_3 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA2_Channel3)) ? LL_DMA_CHANNEL_3 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel4)) ? LL_DMA_CHANNEL_4 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA2_Channel4)) ? LL_DMA_CHANNEL_4 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel5)) ? LL_DMA_CHANNEL_5 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA2_Channel5)) ? LL_DMA_CHANNEL_5 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel6)) ? LL_DMA_CHANNEL_6 : \ + LL_DMA_CHANNEL_7) +#else /* DMA1 */ +#if defined(DMA1_Channel7) +#define __LL_DMA_GET_CHANNEL(__CHANNEL_INSTANCE__) \ + (((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel1)) ? LL_DMA_CHANNEL_1 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel2)) ? LL_DMA_CHANNEL_2 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel3)) ? LL_DMA_CHANNEL_3 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel4)) ? LL_DMA_CHANNEL_4 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel5)) ? LL_DMA_CHANNEL_5 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel6)) ? LL_DMA_CHANNEL_6 : \ + LL_DMA_CHANNEL_7) +#else +#define __LL_DMA_GET_CHANNEL(__CHANNEL_INSTANCE__) \ + (((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel1)) ? LL_DMA_CHANNEL_1 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel2)) ? LL_DMA_CHANNEL_2 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel3)) ? LL_DMA_CHANNEL_3 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel4)) ? LL_DMA_CHANNEL_4 : \ + LL_DMA_CHANNEL_5) +#endif /* DMA1_Channel8 */ +#endif /* DMA2 */ + +/** + * @brief Convert DMA Instance DMAx and LL_DMA_CHANNEL_y into DMAx_Channely + * @param __DMA_INSTANCE__ DMAx + * @param __CHANNEL__ LL_DMA_CHANNEL_y + * @retval DMAx_Channely + */ +#if defined(DMA2) +#define __LL_DMA_GET_CHANNEL_INSTANCE(__DMA_INSTANCE__, __CHANNEL__) \ + ((((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_1))) ? DMA1_Channel1 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_1))) ? DMA2_Channel1 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_2))) ? DMA1_Channel2 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_2))) ? DMA2_Channel2 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_3))) ? DMA1_Channel3 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_3))) ? DMA2_Channel3 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_4))) ? DMA1_Channel4 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_4))) ? DMA2_Channel4 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_5))) ? DMA1_Channel5 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_5))) ? DMA2_Channel5 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_6))) ? DMA1_Channel6 : \ + DMA1_Channel7) +#else /* DMA1 */ +#if defined(DMA1_Channel7) +#define __LL_DMA_GET_CHANNEL_INSTANCE(__DMA_INSTANCE__, __CHANNEL__) \ + ((((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_1))) ? DMA1_Channel1 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_2))) ? DMA1_Channel2 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_3))) ? DMA1_Channel3 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_4))) ? DMA1_Channel4 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_5))) ? DMA1_Channel5 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_6))) ? DMA1_Channel6 : \ + DMA1_Channel7) +#else +#define __LL_DMA_GET_CHANNEL_INSTANCE(__DMA_INSTANCE__, __CHANNEL__) \ + ((((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_1))) ? DMA1_Channel1 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_2))) ? DMA1_Channel2 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_3))) ? DMA1_Channel3 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_4))) ? DMA1_Channel4 : \ + DMA1_Channel5) +#endif /* DMA1_Channel8 */ +#endif /* DMA2 */ + +/** + * @} + */ + +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup DMA_LL_Exported_Functions DMA Exported Functions + * @{ + */ + +/** @defgroup DMA_LL_EF_Configuration Configuration + * @{ + */ +/** + * @brief Enable DMA channel. + * @rmtoll CCR EN LL_DMA_EnableChannel + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval None + */ +__STATIC_INLINE void LL_DMA_EnableChannel(DMA_TypeDef *DMAx, uint32_t Channel) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, DMA_CCR_EN); +} + +/** + * @brief Disable DMA channel. + * @rmtoll CCR EN LL_DMA_DisableChannel + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval None + */ +__STATIC_INLINE void LL_DMA_DisableChannel(DMA_TypeDef *DMAx, uint32_t Channel) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + CLEAR_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, DMA_CCR_EN); +} + +/** + * @brief Check if DMA channel is enabled or disabled. + * @rmtoll CCR EN LL_DMA_IsEnabledChannel + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsEnabledChannel(DMA_TypeDef *DMAx, uint32_t Channel) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, + DMA_CCR_EN) == (DMA_CCR_EN)) ? 1UL : 0UL); +} + +/** + * @brief Configure all parameters link to DMA transfer. + * @rmtoll CCR DIR LL_DMA_ConfigTransfer\n + * CCR MEM2MEM LL_DMA_ConfigTransfer\n + * CCR CIRC LL_DMA_ConfigTransfer\n + * CCR PINC LL_DMA_ConfigTransfer\n + * CCR MINC LL_DMA_ConfigTransfer\n + * CCR PSIZE LL_DMA_ConfigTransfer\n + * CCR MSIZE LL_DMA_ConfigTransfer\n + * CCR PL LL_DMA_ConfigTransfer + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param Configuration This parameter must be a combination of all the following values: + * @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY or @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH or @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY + * @arg @ref LL_DMA_MODE_NORMAL or @ref LL_DMA_MODE_CIRCULAR + * @arg @ref LL_DMA_PERIPH_INCREMENT or @ref LL_DMA_PERIPH_NOINCREMENT + * @arg @ref LL_DMA_MEMORY_INCREMENT or @ref LL_DMA_MEMORY_NOINCREMENT + * @arg @ref LL_DMA_PDATAALIGN_BYTE or @ref LL_DMA_PDATAALIGN_HALFWORD or @ref LL_DMA_PDATAALIGN_WORD + * @arg @ref LL_DMA_MDATAALIGN_BYTE or @ref LL_DMA_MDATAALIGN_HALFWORD or @ref LL_DMA_MDATAALIGN_WORD + * @arg @ref LL_DMA_PRIORITY_LOW or @ref LL_DMA_PRIORITY_MEDIUM or @ref LL_DMA_PRIORITY_HIGH or @ref LL_DMA_PRIORITY_VERYHIGH + * @retval None + */ +__STATIC_INLINE void LL_DMA_ConfigTransfer(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t Configuration) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, + DMA_CCR_DIR | DMA_CCR_MEM2MEM | DMA_CCR_CIRC | DMA_CCR_PINC | DMA_CCR_MINC | DMA_CCR_PSIZE | DMA_CCR_MSIZE | DMA_CCR_PL, + Configuration); +} + +/** + * @brief Set Data transfer direction (read from peripheral or from memory). + * @rmtoll CCR DIR LL_DMA_SetDataTransferDirection\n + * CCR MEM2MEM LL_DMA_SetDataTransferDirection + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param Direction This parameter can be one of the following values: + * @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY + * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH + * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetDataTransferDirection(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t Direction) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, + DMA_CCR_DIR | DMA_CCR_MEM2MEM, Direction); +} + +/** + * @brief Get Data transfer direction (read from peripheral or from memory). + * @rmtoll CCR DIR LL_DMA_GetDataTransferDirection\n + * CCR MEM2MEM LL_DMA_GetDataTransferDirection + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval Returned value can be one of the following values: + * @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY + * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH + * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY + */ +__STATIC_INLINE uint32_t LL_DMA_GetDataTransferDirection(DMA_TypeDef *DMAx, uint32_t Channel) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, + DMA_CCR_DIR | DMA_CCR_MEM2MEM)); +} + +/** + * @brief Set DMA mode circular or normal. + * @note The circular buffer mode cannot be used if the memory-to-memory + * data transfer is configured on the selected Channel. + * @rmtoll CCR CIRC LL_DMA_SetMode + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param Mode This parameter can be one of the following values: + * @arg @ref LL_DMA_MODE_NORMAL + * @arg @ref LL_DMA_MODE_CIRCULAR + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetMode(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t Mode) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, DMA_CCR_CIRC, + Mode); +} + +/** + * @brief Get DMA mode circular or normal. + * @rmtoll CCR CIRC LL_DMA_GetMode + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval Returned value can be one of the following values: + * @arg @ref LL_DMA_MODE_NORMAL + * @arg @ref LL_DMA_MODE_CIRCULAR + */ +__STATIC_INLINE uint32_t LL_DMA_GetMode(DMA_TypeDef *DMAx, uint32_t Channel) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, + DMA_CCR_CIRC)); +} + +/** + * @brief Set Peripheral increment mode. + * @rmtoll CCR PINC LL_DMA_SetPeriphIncMode + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param PeriphOrM2MSrcIncMode This parameter can be one of the following values: + * @arg @ref LL_DMA_PERIPH_INCREMENT + * @arg @ref LL_DMA_PERIPH_NOINCREMENT + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetPeriphIncMode(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t PeriphOrM2MSrcIncMode) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, DMA_CCR_PINC, + PeriphOrM2MSrcIncMode); +} + +/** + * @brief Get Peripheral increment mode. + * @rmtoll CCR PINC LL_DMA_GetPeriphIncMode + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval Returned value can be one of the following values: + * @arg @ref LL_DMA_PERIPH_INCREMENT + * @arg @ref LL_DMA_PERIPH_NOINCREMENT + */ +__STATIC_INLINE uint32_t LL_DMA_GetPeriphIncMode(DMA_TypeDef *DMAx, uint32_t Channel) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, + DMA_CCR_PINC)); +} + +/** + * @brief Set Memory increment mode. + * @rmtoll CCR MINC LL_DMA_SetMemoryIncMode + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param MemoryOrM2MDstIncMode This parameter can be one of the following values: + * @arg @ref LL_DMA_MEMORY_INCREMENT + * @arg @ref LL_DMA_MEMORY_NOINCREMENT + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetMemoryIncMode(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t MemoryOrM2MDstIncMode) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, DMA_CCR_MINC, + MemoryOrM2MDstIncMode); +} + +/** + * @brief Get Memory increment mode. + * @rmtoll CCR MINC LL_DMA_GetMemoryIncMode + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval Returned value can be one of the following values: + * @arg @ref LL_DMA_MEMORY_INCREMENT + * @arg @ref LL_DMA_MEMORY_NOINCREMENT + */ +__STATIC_INLINE uint32_t LL_DMA_GetMemoryIncMode(DMA_TypeDef *DMAx, uint32_t Channel) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, + DMA_CCR_MINC)); +} + +/** + * @brief Set Peripheral size. + * @rmtoll CCR PSIZE LL_DMA_SetPeriphSize + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param PeriphOrM2MSrcDataSize This parameter can be one of the following values: + * @arg @ref LL_DMA_PDATAALIGN_BYTE + * @arg @ref LL_DMA_PDATAALIGN_HALFWORD + * @arg @ref LL_DMA_PDATAALIGN_WORD + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetPeriphSize(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t PeriphOrM2MSrcDataSize) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, DMA_CCR_PSIZE, + PeriphOrM2MSrcDataSize); +} + +/** + * @brief Get Peripheral size. + * @rmtoll CCR PSIZE LL_DMA_GetPeriphSize + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval Returned value can be one of the following values: + * @arg @ref LL_DMA_PDATAALIGN_BYTE + * @arg @ref LL_DMA_PDATAALIGN_HALFWORD + * @arg @ref LL_DMA_PDATAALIGN_WORD + */ +__STATIC_INLINE uint32_t LL_DMA_GetPeriphSize(DMA_TypeDef *DMAx, uint32_t Channel) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, + DMA_CCR_PSIZE)); +} + +/** + * @brief Set Memory size. + * @rmtoll CCR MSIZE LL_DMA_SetMemorySize + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param MemoryOrM2MDstDataSize This parameter can be one of the following values: + * @arg @ref LL_DMA_MDATAALIGN_BYTE + * @arg @ref LL_DMA_MDATAALIGN_HALFWORD + * @arg @ref LL_DMA_MDATAALIGN_WORD + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetMemorySize(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t MemoryOrM2MDstDataSize) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, DMA_CCR_MSIZE, + MemoryOrM2MDstDataSize); +} + +/** + * @brief Get Memory size. + * @rmtoll CCR MSIZE LL_DMA_GetMemorySize + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval Returned value can be one of the following values: + * @arg @ref LL_DMA_MDATAALIGN_BYTE + * @arg @ref LL_DMA_MDATAALIGN_HALFWORD + * @arg @ref LL_DMA_MDATAALIGN_WORD + */ +__STATIC_INLINE uint32_t LL_DMA_GetMemorySize(DMA_TypeDef *DMAx, uint32_t Channel) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, + DMA_CCR_MSIZE)); +} + +/** + * @brief Set Channel priority level. + * @rmtoll CCR PL LL_DMA_SetChannelPriorityLevel + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param Priority This parameter can be one of the following values: + * @arg @ref LL_DMA_PRIORITY_LOW + * @arg @ref LL_DMA_PRIORITY_MEDIUM + * @arg @ref LL_DMA_PRIORITY_HIGH + * @arg @ref LL_DMA_PRIORITY_VERYHIGH + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetChannelPriorityLevel(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t Priority) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, DMA_CCR_PL, + Priority); +} + +/** + * @brief Get Channel priority level. + * @rmtoll CCR PL LL_DMA_GetChannelPriorityLevel + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval Returned value can be one of the following values: + * @arg @ref LL_DMA_PRIORITY_LOW + * @arg @ref LL_DMA_PRIORITY_MEDIUM + * @arg @ref LL_DMA_PRIORITY_HIGH + * @arg @ref LL_DMA_PRIORITY_VERYHIGH + */ +__STATIC_INLINE uint32_t LL_DMA_GetChannelPriorityLevel(DMA_TypeDef *DMAx, uint32_t Channel) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, + DMA_CCR_PL)); +} + +/** + * @brief Set Number of data to transfer. + * @note This action has no effect if + * channel is enabled. + * @rmtoll CNDTR NDT LL_DMA_SetDataLength + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param NbData Between Min_Data = 0 and Max_Data = 0x0000FFFF + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetDataLength(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t NbData) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CNDTR, + DMA_CNDTR_NDT, NbData); +} + +/** + * @brief Get Number of data to transfer. + * @note Once the channel is enabled, the return value indicate the + * remaining bytes to be transmitted. + * @rmtoll CNDTR NDT LL_DMA_GetDataLength + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval Between Min_Data = 0 and Max_Data = 0xFFFFFFFF + */ +__STATIC_INLINE uint32_t LL_DMA_GetDataLength(DMA_TypeDef *DMAx, uint32_t Channel) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CNDTR, + DMA_CNDTR_NDT)); +} + +/** + * @brief Configure the Source and Destination addresses. + * @note This API must not be called when the DMA channel is enabled. + * @note Each peripheral using DMA provides an API to get directly the register address (LL_PPP_DMA_GetRegAddr). + * @rmtoll CPAR PA LL_DMA_ConfigAddresses\n + * CMAR MA LL_DMA_ConfigAddresses + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param SrcAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF + * @param DstAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF + * @param Direction This parameter can be one of the following values: + * @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY + * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH + * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY + * @retval None + */ +__STATIC_INLINE void LL_DMA_ConfigAddresses(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t SrcAddress, + uint32_t DstAddress, uint32_t Direction) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + /* Direction Memory to Periph */ + if (Direction == LL_DMA_DIRECTION_MEMORY_TO_PERIPH) + { + WRITE_REG(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CMAR, SrcAddress); + WRITE_REG(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CPAR, DstAddress); + } + /* Direction Periph to Memory and Memory to Memory */ + else + { + WRITE_REG(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CPAR, SrcAddress); + WRITE_REG(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CMAR, DstAddress); + } +} + +/** + * @brief Set the Memory address. + * @note Interface used for direction LL_DMA_DIRECTION_PERIPH_TO_MEMORY or LL_DMA_DIRECTION_MEMORY_TO_PERIPH only. + * @note This API must not be called when the DMA channel is enabled. + * @rmtoll CMAR MA LL_DMA_SetMemoryAddress + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param MemoryAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetMemoryAddress(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t MemoryAddress) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + WRITE_REG(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CMAR, MemoryAddress); +} + +/** + * @brief Set the Peripheral address. + * @note Interface used for direction LL_DMA_DIRECTION_PERIPH_TO_MEMORY or LL_DMA_DIRECTION_MEMORY_TO_PERIPH only. + * @note This API must not be called when the DMA channel is enabled. + * @rmtoll CPAR PA LL_DMA_SetPeriphAddress + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param PeriphAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetPeriphAddress(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t PeriphAddress) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + WRITE_REG(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CPAR, PeriphAddress); +} + +/** + * @brief Get Memory address. + * @note Interface used for direction LL_DMA_DIRECTION_PERIPH_TO_MEMORY or LL_DMA_DIRECTION_MEMORY_TO_PERIPH only. + * @rmtoll CMAR MA LL_DMA_GetMemoryAddress + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval Between Min_Data = 0 and Max_Data = 0xFFFFFFFF + */ +__STATIC_INLINE uint32_t LL_DMA_GetMemoryAddress(DMA_TypeDef *DMAx, uint32_t Channel) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + return (READ_REG(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CMAR)); +} + +/** + * @brief Get Peripheral address. + * @note Interface used for direction LL_DMA_DIRECTION_PERIPH_TO_MEMORY or LL_DMA_DIRECTION_MEMORY_TO_PERIPH only. + * @rmtoll CPAR PA LL_DMA_GetPeriphAddress + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval Between Min_Data = 0 and Max_Data = 0xFFFFFFFF + */ +__STATIC_INLINE uint32_t LL_DMA_GetPeriphAddress(DMA_TypeDef *DMAx, uint32_t Channel) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + return (READ_REG(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CPAR)); +} + +/** + * @brief Set the Memory to Memory Source address. + * @note Interface used for direction LL_DMA_DIRECTION_MEMORY_TO_MEMORY only. + * @note This API must not be called when the DMA channel is enabled. + * @rmtoll CPAR PA LL_DMA_SetM2MSrcAddress + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param MemoryAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetM2MSrcAddress(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t MemoryAddress) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + WRITE_REG(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CPAR, MemoryAddress); +} + +/** + * @brief Set the Memory to Memory Destination address. + * @note Interface used for direction LL_DMA_DIRECTION_MEMORY_TO_MEMORY only. + * @note This API must not be called when the DMA channel is enabled. + * @rmtoll CMAR MA LL_DMA_SetM2MDstAddress + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param MemoryAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetM2MDstAddress(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t MemoryAddress) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + WRITE_REG(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CMAR, MemoryAddress); +} + +/** + * @brief Get the Memory to Memory Source address. + * @note Interface used for direction LL_DMA_DIRECTION_MEMORY_TO_MEMORY only. + * @rmtoll CPAR PA LL_DMA_GetM2MSrcAddress + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval Between Min_Data = 0 and Max_Data = 0xFFFFFFFF + */ +__STATIC_INLINE uint32_t LL_DMA_GetM2MSrcAddress(DMA_TypeDef *DMAx, uint32_t Channel) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + return (READ_REG(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CPAR)); +} + +/** + * @brief Get the Memory to Memory Destination address. + * @note Interface used for direction LL_DMA_DIRECTION_MEMORY_TO_MEMORY only. + * @rmtoll CMAR MA LL_DMA_GetM2MDstAddress + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval Between Min_Data = 0 and Max_Data = 0xFFFFFFFF + */ +__STATIC_INLINE uint32_t LL_DMA_GetM2MDstAddress(DMA_TypeDef *DMAx, uint32_t Channel) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + return (READ_REG(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CMAR)); +} + +/** + * @brief Set DMA request for DMA Channels on DMAMUX Channel x. + * @note DMAMUX channel 0 to 6 are mapped to DMA1 channel 1 to 7. + * DMAMUX channel 7 to 11 are mapped to DMA2 channel 1 to 5 (**** only available on chip which support DMA2 ****). + * @rmtoll CxCR DMAREQ_ID LL_DMA_SetPeriphRequest + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param Request This parameter can be one of the following values: + * @arg @ref LL_DMAMUX_REQ_MEM2MEM + * @arg @ref LL_DMAMUX_REQ_GENERATOR0 + * @arg @ref LL_DMAMUX_REQ_GENERATOR1 + * @arg @ref LL_DMAMUX_REQ_GENERATOR2 + * @arg @ref LL_DMAMUX_REQ_GENERATOR3 + * @arg @ref LL_DMAMUX_REQ_ADC1 + * @arg @ref LL_DMAMUX_REQ_AES_IN + * @arg @ref LL_DMAMUX_REQ_AES_OUT + * @arg @ref LL_DMAMUX_REQ_DAC1_CH1 + * @arg @ref LL_DMAMUX_REQ_DAC1_CH2 + * @arg @ref LL_DMAMUX_REQ_I2C1_RX + * @arg @ref LL_DMAMUX_REQ_I2C1_TX + * @arg @ref LL_DMAMUX_REQ_I2C2_RX + * @arg @ref LL_DMAMUX_REQ_I2C2_TX + * @arg @ref LL_DMAMUX_REQ_LPUART1_RX + * @arg @ref LL_DMAMUX_REQ_LPUART1_TX + * @arg @ref LL_DMAMUX_REQ_SPI1_RX + * @arg @ref LL_DMAMUX_REQ_SPI1_TX + * @arg @ref LL_DMAMUX_REQ_SPI2_RX + * @arg @ref LL_DMAMUX_REQ_SPI2_TX + * @arg @ref LL_DMAMUX_REQ_TIM1_CH1 + * @arg @ref LL_DMAMUX_REQ_TIM1_CH2 + * @arg @ref LL_DMAMUX_REQ_TIM1_CH3 + * @arg @ref LL_DMAMUX_REQ_TIM1_CH4 + * @arg @ref LL_DMAMUX_REQ_TIM1_TRIG_COM + * @arg @ref LL_DMAMUX_REQ_TIM1_UP + * @arg @ref LL_DMAMUX_REQ_TIM2_CH1 + * @arg @ref LL_DMAMUX_REQ_TIM2_CH2 + * @arg @ref LL_DMAMUX_REQ_TIM2_CH3 + * @arg @ref LL_DMAMUX_REQ_TIM2_CH4 + * @arg @ref LL_DMAMUX_REQ_TIM2_TRIG + * @arg @ref LL_DMAMUX_REQ_TIM2_UP + * @arg @ref LL_DMAMUX_REQ_TIM3_CH1 + * @arg @ref LL_DMAMUX_REQ_TIM3_CH2 + * @arg @ref LL_DMAMUX_REQ_TIM3_CH3 + * @arg @ref LL_DMAMUX_REQ_TIM3_CH4 + * @arg @ref LL_DMAMUX_REQ_TIM3_TRIG + * @arg @ref LL_DMAMUX_REQ_TIM3_UP + * @arg @ref LL_DMAMUX_REQ_TIM6_UP + * @arg @ref LL_DMAMUX_REQ_TIM7_UP + * @arg @ref LL_DMAMUX_REQ_TIM15_CH1 + * @arg @ref LL_DMAMUX_REQ_TIM15_CH2 + * @arg @ref LL_DMAMUX_REQ_TIM15_TRIG_COM + * @arg @ref LL_DMAMUX_REQ_TIM15_UP + * @arg @ref LL_DMAMUX_REQ_TIM16_CH1 + * @arg @ref LL_DMAMUX_REQ_TIM16_COM + * @arg @ref LL_DMAMUX_REQ_TIM16_UP + * @arg @ref LL_DMAMUX_REQ_TIM17_CH1 + * @arg @ref LL_DMAMUX_REQ_TIM17_COM + * @arg @ref LL_DMAMUX_REQ_TIM17_UP + * @arg @ref LL_DMAMUX_REQ_USART1_RX + * @arg @ref LL_DMAMUX_REQ_USART1_TX + * @arg @ref LL_DMAMUX_REQ_USART2_RX + * @arg @ref LL_DMAMUX_REQ_USART2_TX + * @arg @ref LL_DMAMUX_REQ_USART3_RX + * @arg @ref LL_DMAMUX_REQ_USART3_TX + * @arg @ref LL_DMAMUX_REQ_USART4_RX + * @arg @ref LL_DMAMUX_REQ_USART4_TX + * @arg @ref LL_DMAMUX_REQ_UCPD1_RX + * @arg @ref LL_DMAMUX_REQ_UCPD1_TX + * @arg @ref LL_DMAMUX_REQ_UCPD2_RX + * @arg @ref LL_DMAMUX_REQ_UCPD2_TX + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetPeriphRequest(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t Request) +{ + uint32_t dmamux_ccr_offset = ((((uint32_t)DMAx ^ (uint32_t)DMA1) >> 10U) * 7U); + MODIFY_REG((DMAMUX1_Channel0 + Channel + dmamux_ccr_offset)->CCR, DMAMUX_CxCR_DMAREQ_ID, Request); +} + +/** + * @brief Get DMA request for DMA Channels on DMAMUX Channel x. + * @note DMAMUX channel 0 to 6 are mapped to DMA1 channel 1 to 7. + * DMAMUX channel 7 to 11 are mapped to DMA2 channel 1 to 5 (**** only available on chip which support DMA2 ****). + * @rmtoll CxCR DMAREQ_ID LL_DMA_GetPeriphRequest + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval Returned value can be one of the following values: + * @arg @ref LL_DMAMUX_REQ_MEM2MEM + * @arg @ref LL_DMAMUX_REQ_GENERATOR0 + * @arg @ref LL_DMAMUX_REQ_GENERATOR1 + * @arg @ref LL_DMAMUX_REQ_GENERATOR2 + * @arg @ref LL_DMAMUX_REQ_GENERATOR3 + * @arg @ref LL_DMAMUX_REQ_ADC1 + * @arg @ref LL_DMAMUX_REQ_AES_IN + * @arg @ref LL_DMAMUX_REQ_AES_OUT + * @arg @ref LL_DMAMUX_REQ_DAC1_CH1 + * @arg @ref LL_DMAMUX_REQ_DAC1_CH2 + * @arg @ref LL_DMAMUX_REQ_I2C1_RX + * @arg @ref LL_DMAMUX_REQ_I2C1_TX + * @arg @ref LL_DMAMUX_REQ_I2C2_RX + * @arg @ref LL_DMAMUX_REQ_I2C2_TX + * @arg @ref LL_DMAMUX_REQ_LPUART1_RX + * @arg @ref LL_DMAMUX_REQ_LPUART1_TX + * @arg @ref LL_DMAMUX_REQ_SPI1_RX + * @arg @ref LL_DMAMUX_REQ_SPI1_TX + * @arg @ref LL_DMAMUX_REQ_SPI2_RX + * @arg @ref LL_DMAMUX_REQ_SPI2_TX + * @arg @ref LL_DMAMUX_REQ_TIM1_CH1 + * @arg @ref LL_DMAMUX_REQ_TIM1_CH2 + * @arg @ref LL_DMAMUX_REQ_TIM1_CH3 + * @arg @ref LL_DMAMUX_REQ_TIM1_CH4 + * @arg @ref LL_DMAMUX_REQ_TIM1_TRIG_COM + * @arg @ref LL_DMAMUX_REQ_TIM1_UP + * @arg @ref LL_DMAMUX_REQ_TIM2_CH1 + * @arg @ref LL_DMAMUX_REQ_TIM2_CH2 + * @arg @ref LL_DMAMUX_REQ_TIM2_CH3 + * @arg @ref LL_DMAMUX_REQ_TIM2_CH4 + * @arg @ref LL_DMAMUX_REQ_TIM2_TRIG + * @arg @ref LL_DMAMUX_REQ_TIM2_UP + * @arg @ref LL_DMAMUX_REQ_TIM3_CH1 + * @arg @ref LL_DMAMUX_REQ_TIM3_CH2 + * @arg @ref LL_DMAMUX_REQ_TIM3_CH3 + * @arg @ref LL_DMAMUX_REQ_TIM3_CH4 + * @arg @ref LL_DMAMUX_REQ_TIM3_TRIG + * @arg @ref LL_DMAMUX_REQ_TIM3_UP + * @arg @ref LL_DMAMUX_REQ_TIM6_UP + * @arg @ref LL_DMAMUX_REQ_TIM7_UP + * @arg @ref LL_DMAMUX_REQ_TIM15_CH1 + * @arg @ref LL_DMAMUX_REQ_TIM15_CH2 + * @arg @ref LL_DMAMUX_REQ_TIM15_TRIG_COM + * @arg @ref LL_DMAMUX_REQ_TIM15_UP + * @arg @ref LL_DMAMUX_REQ_TIM16_CH1 + * @arg @ref LL_DMAMUX_REQ_TIM16_COM + * @arg @ref LL_DMAMUX_REQ_TIM16_UP + * @arg @ref LL_DMAMUX_REQ_TIM17_CH1 + * @arg @ref LL_DMAMUX_REQ_TIM17_COM + * @arg @ref LL_DMAMUX_REQ_TIM17_UP + * @arg @ref LL_DMAMUX_REQ_USART1_RX + * @arg @ref LL_DMAMUX_REQ_USART1_TX + * @arg @ref LL_DMAMUX_REQ_USART2_RX + * @arg @ref LL_DMAMUX_REQ_USART2_TX + * @arg @ref LL_DMAMUX_REQ_USART3_RX + * @arg @ref LL_DMAMUX_REQ_USART3_TX + * @arg @ref LL_DMAMUX_REQ_USART4_RX + * @arg @ref LL_DMAMUX_REQ_USART4_TX + * @arg @ref LL_DMAMUX_REQ_UCPD1_RX + * @arg @ref LL_DMAMUX_REQ_UCPD1_TX + * @arg @ref LL_DMAMUX_REQ_UCPD2_RX + * @arg @ref LL_DMAMUX_REQ_UCPD2_TX + */ +__STATIC_INLINE uint32_t LL_DMA_GetPeriphRequest(DMA_TypeDef *DMAx, uint32_t Channel) +{ + uint32_t dmamux_ccr_offset = ((((uint32_t)DMAx ^ (uint32_t)DMA1) >> 10U) * 7U); + return (READ_BIT((DMAMUX1_Channel0 + Channel + dmamux_ccr_offset)->CCR, DMAMUX_CxCR_DMAREQ_ID)); +} + +/** + * @} + */ + +/** @defgroup DMA_LL_EF_FLAG_Management FLAG_Management + * @{ + */ + +/** + * @brief Get Channel 1 global interrupt flag. + * @rmtoll ISR GIF1 LL_DMA_IsActiveFlag_GI1 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_GI1(DMA_TypeDef *DMAx) +{ + return ((READ_BIT(DMAx->ISR, DMA_ISR_GIF1) == (DMA_ISR_GIF1)) ? 1UL : 0UL); +} + +/** + * @brief Get Channel 2 global interrupt flag. + * @rmtoll ISR GIF2 LL_DMA_IsActiveFlag_GI2 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_GI2(DMA_TypeDef *DMAx) +{ + return ((READ_BIT(DMAx->ISR, DMA_ISR_GIF2) == (DMA_ISR_GIF2)) ? 1UL : 0UL); +} + +/** + * @brief Get Channel 3 global interrupt flag. + * @rmtoll ISR GIF3 LL_DMA_IsActiveFlag_GI3 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_GI3(DMA_TypeDef *DMAx) +{ + return ((READ_BIT(DMAx->ISR, DMA_ISR_GIF3) == (DMA_ISR_GIF3)) ? 1UL : 0UL); +} + +/** + * @brief Get Channel 4 global interrupt flag. + * @rmtoll ISR GIF4 LL_DMA_IsActiveFlag_GI4 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_GI4(DMA_TypeDef *DMAx) +{ + return ((READ_BIT(DMAx->ISR, DMA_ISR_GIF4) == (DMA_ISR_GIF4)) ? 1UL : 0UL); +} + +/** + * @brief Get Channel 5 global interrupt flag. + * @rmtoll ISR GIF5 LL_DMA_IsActiveFlag_GI5 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_GI5(DMA_TypeDef *DMAx) +{ + return ((READ_BIT(DMAx->ISR, DMA_ISR_GIF5) == (DMA_ISR_GIF5)) ? 1UL : 0UL); +} + +#if defined(DMA1_Channel6) +/** + * @brief Get Channel 6 global interrupt flag. + * @rmtoll ISR GIF6 LL_DMA_IsActiveFlag_GI6 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_GI6(DMA_TypeDef *DMAx) +{ + return ((READ_BIT(DMAx->ISR, DMA_ISR_GIF6) == (DMA_ISR_GIF6)) ? 1UL : 0UL); +} + +#endif /* DMA1_Channel6 */ +#if defined(DMA1_Channel7) +/** + * @brief Get Channel 7 global interrupt flag. + * @rmtoll ISR GIF7 LL_DMA_IsActiveFlag_GI7 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_GI7(DMA_TypeDef *DMAx) +{ + return ((READ_BIT(DMAx->ISR, DMA_ISR_GIF7) == (DMA_ISR_GIF7)) ? 1UL : 0UL); +} + +#endif /* DMA1_Channel7 */ +/** + * @brief Get Channel 1 transfer complete flag. + * @rmtoll ISR TCIF1 LL_DMA_IsActiveFlag_TC1 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC1(DMA_TypeDef *DMAx) +{ + return ((READ_BIT(DMAx->ISR, DMA_ISR_TCIF1) == (DMA_ISR_TCIF1)) ? 1UL : 0UL); +} + +/** + * @brief Get Channel 2 transfer complete flag. + * @rmtoll ISR TCIF2 LL_DMA_IsActiveFlag_TC2 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC2(DMA_TypeDef *DMAx) +{ + return ((READ_BIT(DMAx->ISR, DMA_ISR_TCIF2) == (DMA_ISR_TCIF2)) ? 1UL : 0UL); +} + +/** + * @brief Get Channel 3 transfer complete flag. + * @rmtoll ISR TCIF3 LL_DMA_IsActiveFlag_TC3 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC3(DMA_TypeDef *DMAx) +{ + return ((READ_BIT(DMAx->ISR, DMA_ISR_TCIF3) == (DMA_ISR_TCIF3)) ? 1UL : 0UL); +} + +/** + * @brief Get Channel 4 transfer complete flag. + * @rmtoll ISR TCIF4 LL_DMA_IsActiveFlag_TC4 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC4(DMA_TypeDef *DMAx) +{ + return ((READ_BIT(DMAx->ISR, DMA_ISR_TCIF4) == (DMA_ISR_TCIF4)) ? 1UL : 0UL); +} + +/** + * @brief Get Channel 5 transfer complete flag. + * @rmtoll ISR TCIF5 LL_DMA_IsActiveFlag_TC5 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC5(DMA_TypeDef *DMAx) +{ + return ((READ_BIT(DMAx->ISR, DMA_ISR_TCIF5) == (DMA_ISR_TCIF5)) ? 1UL : 0UL); +} + +#if defined(DMA1_Channel6) +/** + * @brief Get Channel 6 transfer complete flag. + * @rmtoll ISR TCIF6 LL_DMA_IsActiveFlag_TC6 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC6(DMA_TypeDef *DMAx) +{ + return ((READ_BIT(DMAx->ISR, DMA_ISR_TCIF6) == (DMA_ISR_TCIF6)) ? 1UL : 0UL); +} + +#endif /* DMA1_Channel6 */ +#if defined(DMA1_Channel7) +/** + * @brief Get Channel 7 transfer complete flag. + * @rmtoll ISR TCIF7 LL_DMA_IsActiveFlag_TC7 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC7(DMA_TypeDef *DMAx) +{ + return ((READ_BIT(DMAx->ISR, DMA_ISR_TCIF7) == (DMA_ISR_TCIF7)) ? 1UL : 0UL); +} + +#endif /* DMA1_Channel7 */ +/** + * @brief Get Channel 1 half transfer flag. + * @rmtoll ISR HTIF1 LL_DMA_IsActiveFlag_HT1 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT1(DMA_TypeDef *DMAx) +{ + return ((READ_BIT(DMAx->ISR, DMA_ISR_HTIF1) == (DMA_ISR_HTIF1)) ? 1UL : 0UL); +} + +/** + * @brief Get Channel 2 half transfer flag. + * @rmtoll ISR HTIF2 LL_DMA_IsActiveFlag_HT2 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT2(DMA_TypeDef *DMAx) +{ + return ((READ_BIT(DMAx->ISR, DMA_ISR_HTIF2) == (DMA_ISR_HTIF2)) ? 1UL : 0UL); +} + +/** + * @brief Get Channel 3 half transfer flag. + * @rmtoll ISR HTIF3 LL_DMA_IsActiveFlag_HT3 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT3(DMA_TypeDef *DMAx) +{ + return ((READ_BIT(DMAx->ISR, DMA_ISR_HTIF3) == (DMA_ISR_HTIF3)) ? 1UL : 0UL); +} + +/** + * @brief Get Channel 4 half transfer flag. + * @rmtoll ISR HTIF4 LL_DMA_IsActiveFlag_HT4 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT4(DMA_TypeDef *DMAx) +{ + return ((READ_BIT(DMAx->ISR, DMA_ISR_HTIF4) == (DMA_ISR_HTIF4)) ? 1UL : 0UL); +} + +/** + * @brief Get Channel 5 half transfer flag. + * @rmtoll ISR HTIF5 LL_DMA_IsActiveFlag_HT5 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT5(DMA_TypeDef *DMAx) +{ + return ((READ_BIT(DMAx->ISR, DMA_ISR_HTIF5) == (DMA_ISR_HTIF5)) ? 1UL : 0UL); +} + +#if defined(DMA1_Channel6) +/** + * @brief Get Channel 6 half transfer flag. + * @rmtoll ISR HTIF6 LL_DMA_IsActiveFlag_HT6 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT6(DMA_TypeDef *DMAx) +{ + return ((READ_BIT(DMAx->ISR, DMA_ISR_HTIF6) == (DMA_ISR_HTIF6)) ? 1UL : 0UL); +} + +#endif /* DMA1_Channel6 */ +#if defined(DMA1_Channel7) +/** + * @brief Get Channel 7 half transfer flag. + * @rmtoll ISR HTIF7 LL_DMA_IsActiveFlag_HT7 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT7(DMA_TypeDef *DMAx) +{ + return ((READ_BIT(DMAx->ISR, DMA_ISR_HTIF7) == (DMA_ISR_HTIF7)) ? 1UL : 0UL); +} + +#endif /* DMA1_Channel7 */ +/** + * @brief Get Channel 1 transfer error flag. + * @rmtoll ISR TEIF1 LL_DMA_IsActiveFlag_TE1 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE1(DMA_TypeDef *DMAx) +{ + return ((READ_BIT(DMAx->ISR, DMA_ISR_TEIF1) == (DMA_ISR_TEIF1)) ? 1UL : 0UL); +} + +/** + * @brief Get Channel 2 transfer error flag. + * @rmtoll ISR TEIF2 LL_DMA_IsActiveFlag_TE2 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE2(DMA_TypeDef *DMAx) +{ + return ((READ_BIT(DMAx->ISR, DMA_ISR_TEIF2) == (DMA_ISR_TEIF2)) ? 1UL : 0UL); +} + +/** + * @brief Get Channel 3 transfer error flag. + * @rmtoll ISR TEIF3 LL_DMA_IsActiveFlag_TE3 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE3(DMA_TypeDef *DMAx) +{ + return ((READ_BIT(DMAx->ISR, DMA_ISR_TEIF3) == (DMA_ISR_TEIF3)) ? 1UL : 0UL); +} + +/** + * @brief Get Channel 4 transfer error flag. + * @rmtoll ISR TEIF4 LL_DMA_IsActiveFlag_TE4 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE4(DMA_TypeDef *DMAx) +{ + return ((READ_BIT(DMAx->ISR, DMA_ISR_TEIF4) == (DMA_ISR_TEIF4)) ? 1UL : 0UL); +} + +/** + * @brief Get Channel 5 transfer error flag. + * @rmtoll ISR TEIF5 LL_DMA_IsActiveFlag_TE5 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE5(DMA_TypeDef *DMAx) +{ + return ((READ_BIT(DMAx->ISR, DMA_ISR_TEIF5) == (DMA_ISR_TEIF5)) ? 1UL : 0UL); +} + +#if defined(DMA1_Channel6) +/** + * @brief Get Channel 6 transfer error flag. + * @rmtoll ISR TEIF6 LL_DMA_IsActiveFlag_TE6 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE6(DMA_TypeDef *DMAx) +{ + return ((READ_BIT(DMAx->ISR, DMA_ISR_TEIF6) == (DMA_ISR_TEIF6)) ? 1UL : 0UL); +} + +#endif /* DMA1_Channel6 */ +#if defined(DMA1_Channel7) +/** + * @brief Get Channel 7 transfer error flag. + * @rmtoll ISR TEIF7 LL_DMA_IsActiveFlag_TE7 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE7(DMA_TypeDef *DMAx) +{ + return ((READ_BIT(DMAx->ISR, DMA_ISR_TEIF7) == (DMA_ISR_TEIF7)) ? 1UL : 0UL); +} + +#endif /* DMA1_Channel7 */ +/** + * @brief Clear Channel 1 global interrupt flag. + * @note Do not Clear Channel 1 global interrupt flag when the channel in ON. + Instead clear specific flags transfer complete, half transfer & transfer + error flag with LL_DMA_ClearFlag_TC1, LL_DMA_ClearFlag_HT1, + LL_DMA_ClearFlag_TE1. bug id 2.4.1 in Product Errata Sheet. + * @rmtoll IFCR CGIF1 LL_DMA_ClearFlag_GI1 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_GI1(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CGIF1); +} + +/** + * @brief Clear Channel 2 global interrupt flag. + * @note Do not Clear Channel 2 global interrupt flag when the channel in ON. + Instead clear specific flags transfer complete, half transfer & transfer + error flag with LL_DMA_ClearFlag_TC2, LL_DMA_ClearFlag_HT2, + LL_DMA_ClearFlag_TE2. bug id 2.4.1 in Product Errata Sheet. + * @rmtoll IFCR CGIF2 LL_DMA_ClearFlag_GI2 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_GI2(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CGIF2); +} + +/** + * @brief Clear Channel 3 global interrupt flag. + * @note Do not Clear Channel 3 global interrupt flag when the channel in ON. + Instead clear specific flags transfer complete, half transfer & transfer + error flag with LL_DMA_ClearFlag_TC3, LL_DMA_ClearFlag_HT3, + LL_DMA_ClearFlag_TE3. bug id 2.4.1 in Product Errata Sheet. + * @rmtoll IFCR CGIF3 LL_DMA_ClearFlag_GI3 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_GI3(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CGIF3); +} + +/** + * @brief Clear Channel 4 global interrupt flag. + * @note Do not Clear Channel 4 global interrupt flag when the channel in ON. + Instead clear specific flags transfer complete, half transfer & transfer + error flag with LL_DMA_ClearFlag_TC4, LL_DMA_ClearFlag_HT4, + LL_DMA_ClearFlag_TE4. bug id 2.4.1 in Product Errata Sheet. + * @rmtoll IFCR CGIF4 LL_DMA_ClearFlag_GI4 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_GI4(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CGIF4); +} + +/** + * @brief Clear Channel 5 global interrupt flag. + * @note Do not Clear Channel 5 global interrupt flag when the channel in ON. + Instead clear specific flags transfer complete, half transfer & transfer + error flag with LL_DMA_ClearFlag_TC5, LL_DMA_ClearFlag_HT5, + LL_DMA_ClearFlag_TE5. bug id 2.4.1 in Product Errata Sheet. + * @rmtoll IFCR CGIF5 LL_DMA_ClearFlag_GI5 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_GI5(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CGIF5); +} + +#if defined(DMA1_Channel6) +/** + * @brief Clear Channel 6 global interrupt flag. + * @note Do not Clear Channel 6 global interrupt flag when the channel in ON. + Instead clear specific flags transfer complete, half transfer & transfer + error flag with LL_DMA_ClearFlag_TC6, LL_DMA_ClearFlag_HT6, + LL_DMA_ClearFlag_TE6. bug id 2.4.1 in Product Errata Sheet. + * @rmtoll IFCR CGIF6 LL_DMA_ClearFlag_GI6 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_GI6(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CGIF6); +} + +#endif /* DMA1_Channel6 */ +#if defined(DMA1_Channel7) +/** + * @brief Clear Channel 7 global interrupt flag. + * @note Do not Clear Channel 7 global interrupt flag when the channel in ON. + Instead clear specific flags transfer complete, half transfer & transfer + error flag with LL_DMA_ClearFlag_TC7, LL_DMA_ClearFlag_HT7, + LL_DMA_ClearFlag_TE7. bug id 2.4.1 in Product Errata Sheet. + * @rmtoll IFCR CGIF7 LL_DMA_ClearFlag_GI7 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_GI7(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CGIF7); +} + +#endif /* DMA1_Channel7 */ +/** + * @brief Clear Channel 1 transfer complete flag. + * @rmtoll IFCR CTCIF1 LL_DMA_ClearFlag_TC1 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TC1(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CTCIF1); +} + +/** + * @brief Clear Channel 2 transfer complete flag. + * @rmtoll IFCR CTCIF2 LL_DMA_ClearFlag_TC2 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TC2(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CTCIF2); +} + +/** + * @brief Clear Channel 3 transfer complete flag. + * @rmtoll IFCR CTCIF3 LL_DMA_ClearFlag_TC3 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TC3(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CTCIF3); +} + +/** + * @brief Clear Channel 4 transfer complete flag. + * @rmtoll IFCR CTCIF4 LL_DMA_ClearFlag_TC4 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TC4(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CTCIF4); +} + +/** + * @brief Clear Channel 5 transfer complete flag. + * @rmtoll IFCR CTCIF5 LL_DMA_ClearFlag_TC5 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TC5(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CTCIF5); +} + +#if defined(DMA1_Channel6) +/** + * @brief Clear Channel 6 transfer complete flag. + * @rmtoll IFCR CTCIF6 LL_DMA_ClearFlag_TC6 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TC6(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CTCIF6); +} + +#endif /* DMA1_Channel6 */ +#if defined(DMA1_Channel7) +/** + * @brief Clear Channel 7 transfer complete flag. + * @rmtoll IFCR CTCIF7 LL_DMA_ClearFlag_TC7 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TC7(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CTCIF7); +} + +#endif /* DMA1_Channel7 */ +/** + * @brief Clear Channel 1 half transfer flag. + * @rmtoll IFCR CHTIF1 LL_DMA_ClearFlag_HT1 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_HT1(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CHTIF1); +} + +/** + * @brief Clear Channel 2 half transfer flag. + * @rmtoll IFCR CHTIF2 LL_DMA_ClearFlag_HT2 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_HT2(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CHTIF2); +} + +/** + * @brief Clear Channel 3 half transfer flag. + * @rmtoll IFCR CHTIF3 LL_DMA_ClearFlag_HT3 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_HT3(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CHTIF3); +} + +/** + * @brief Clear Channel 4 half transfer flag. + * @rmtoll IFCR CHTIF4 LL_DMA_ClearFlag_HT4 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_HT4(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CHTIF4); +} + +/** + * @brief Clear Channel 5 half transfer flag. + * @rmtoll IFCR CHTIF5 LL_DMA_ClearFlag_HT5 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_HT5(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CHTIF5); +} + +#if defined(DMA1_Channel6) +/** + * @brief Clear Channel 6 half transfer flag. + * @rmtoll IFCR CHTIF6 LL_DMA_ClearFlag_HT6 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_HT6(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CHTIF6); +} + +#endif /* DMA1_Channel6 */ +#if defined(DMA1_Channel7) +/** + * @brief Clear Channel 7 half transfer flag. + * @rmtoll IFCR CHTIF7 LL_DMA_ClearFlag_HT7 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_HT7(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CHTIF7); +} + +#endif /* DMA1_Channel7 */ +/** + * @brief Clear Channel 1 transfer error flag. + * @rmtoll IFCR CTEIF1 LL_DMA_ClearFlag_TE1 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TE1(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CTEIF1); +} + +/** + * @brief Clear Channel 2 transfer error flag. + * @rmtoll IFCR CTEIF2 LL_DMA_ClearFlag_TE2 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TE2(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CTEIF2); +} + +/** + * @brief Clear Channel 3 transfer error flag. + * @rmtoll IFCR CTEIF3 LL_DMA_ClearFlag_TE3 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TE3(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CTEIF3); +} + +/** + * @brief Clear Channel 4 transfer error flag. + * @rmtoll IFCR CTEIF4 LL_DMA_ClearFlag_TE4 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TE4(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CTEIF4); +} + +/** + * @brief Clear Channel 5 transfer error flag. + * @rmtoll IFCR CTEIF5 LL_DMA_ClearFlag_TE5 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TE5(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CTEIF5); +} + +#if defined(DMA1_Channel6) +/** + * @brief Clear Channel 6 transfer error flag. + * @rmtoll IFCR CTEIF6 LL_DMA_ClearFlag_TE6 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TE6(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CTEIF6); +} + +#endif /* DMA1_Channel6 */ +#if defined(DMA1_Channel7) +/** + * @brief Clear Channel 7 transfer error flag. + * @rmtoll IFCR CTEIF7 LL_DMA_ClearFlag_TE7 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TE7(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CTEIF7); +} + +#endif /* DMA1_Channel7 */ +/** + * @} + */ + +/** @defgroup DMA_LL_EF_IT_Management IT_Management + * @{ + */ +/** + * @brief Enable Transfer complete interrupt. + * @rmtoll CCR TCIE LL_DMA_EnableIT_TC + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval None + */ +__STATIC_INLINE void LL_DMA_EnableIT_TC(DMA_TypeDef *DMAx, uint32_t Channel) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, DMA_CCR_TCIE); +} + +/** + * @brief Enable Half transfer interrupt. + * @rmtoll CCR HTIE LL_DMA_EnableIT_HT + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval None + */ +__STATIC_INLINE void LL_DMA_EnableIT_HT(DMA_TypeDef *DMAx, uint32_t Channel) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, DMA_CCR_HTIE); +} + +/** + * @brief Enable Transfer error interrupt. + * @rmtoll CCR TEIE LL_DMA_EnableIT_TE + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval None + */ +__STATIC_INLINE void LL_DMA_EnableIT_TE(DMA_TypeDef *DMAx, uint32_t Channel) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, DMA_CCR_TEIE); +} + +/** + * @brief Disable Transfer complete interrupt. + * @rmtoll CCR TCIE LL_DMA_DisableIT_TC + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval None + */ +__STATIC_INLINE void LL_DMA_DisableIT_TC(DMA_TypeDef *DMAx, uint32_t Channel) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + CLEAR_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, DMA_CCR_TCIE); +} + +/** + * @brief Disable Half transfer interrupt. + * @rmtoll CCR HTIE LL_DMA_DisableIT_HT + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval None + */ +__STATIC_INLINE void LL_DMA_DisableIT_HT(DMA_TypeDef *DMAx, uint32_t Channel) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + CLEAR_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, DMA_CCR_HTIE); +} + +/** + * @brief Disable Transfer error interrupt. + * @rmtoll CCR TEIE LL_DMA_DisableIT_TE + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval None + */ +__STATIC_INLINE void LL_DMA_DisableIT_TE(DMA_TypeDef *DMAx, uint32_t Channel) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + CLEAR_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, DMA_CCR_TEIE); +} + +/** + * @brief Check if Transfer complete Interrupt is enabled. + * @rmtoll CCR TCIE LL_DMA_IsEnabledIT_TC + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_TC(DMA_TypeDef *DMAx, uint32_t Channel) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, + DMA_CCR_TCIE) == (DMA_CCR_TCIE)) ? 1UL : 0UL); +} + +/** + * @brief Check if Half transfer Interrupt is enabled. + * @rmtoll CCR HTIE LL_DMA_IsEnabledIT_HT + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_HT(DMA_TypeDef *DMAx, uint32_t Channel) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, + DMA_CCR_HTIE) == (DMA_CCR_HTIE)) ? 1UL : 0UL); +} + +/** + * @brief Check if Transfer error Interrupt is enabled. + * @rmtoll CCR TEIE LL_DMA_IsEnabledIT_TE + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_TE(DMA_TypeDef *DMAx, uint32_t Channel) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, + DMA_CCR_TEIE) == (DMA_CCR_TEIE)) ? 1UL : 0UL); +} + +/** + * @} + */ + +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup DMA_LL_EF_Init Initialization and de-initialization functions + * @{ + */ +ErrorStatus LL_DMA_Init(DMA_TypeDef *DMAx, uint32_t Channel, LL_DMA_InitTypeDef *DMA_InitStruct); +ErrorStatus LL_DMA_DeInit(DMA_TypeDef *DMAx, uint32_t Channel); +void LL_DMA_StructInit(LL_DMA_InitTypeDef *DMA_InitStruct); + +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* DMA1 || DMA2 */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32G0xx_LL_DMA_H */ + diff --git a/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_ll_dmamux.h b/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_ll_dmamux.h new file mode 100644 index 0000000..1868fe8 --- /dev/null +++ b/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_ll_dmamux.h @@ -0,0 +1,1838 @@ +/** + ****************************************************************************** + * @file stm32g0xx_ll_dmamux.h + * @author MCD Application Team + * @brief Header file of DMAMUX LL module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2018 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32G0xx_LL_DMAMUX_H +#define STM32G0xx_LL_DMAMUX_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32g0xx.h" + +/** @addtogroup STM32G0xx_LL_Driver + * @{ + */ + +#if defined (DMAMUX1) + +/** @defgroup DMAMUX_LL DMAMUX + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/** @defgroup DMAMUX_LL_Private_Constants DMAMUX Private Constants + * @{ + */ +/* Define used to get DMAMUX CCR register size */ +#define DMAMUX_CCR_SIZE 0x00000004UL + +/* Define used to get DMAMUX RGCR register size */ +#define DMAMUX_RGCR_SIZE 0x00000004UL +/** + * @} + */ + +/* Private macros ------------------------------------------------------------*/ +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +/** @defgroup DMAMUX_LL_Exported_Constants DMAMUX Exported Constants + * @{ + */ +/** @defgroup DMAMUX_LL_EC_CLEAR_FLAG Clear Flags Defines + * @brief Flags defines which can be used with LL_DMAMUX_WriteReg function + * @{ + */ +#define LL_DMAMUX_CFR_CSOF0 DMAMUX_CFR_CSOF0 /*!< Synchronization Event Overrun Flag Channel 0 */ +#define LL_DMAMUX_CFR_CSOF1 DMAMUX_CFR_CSOF1 /*!< Synchronization Event Overrun Flag Channel 1 */ +#define LL_DMAMUX_CFR_CSOF2 DMAMUX_CFR_CSOF2 /*!< Synchronization Event Overrun Flag Channel 2 */ +#define LL_DMAMUX_CFR_CSOF3 DMAMUX_CFR_CSOF3 /*!< Synchronization Event Overrun Flag Channel 3 */ +#define LL_DMAMUX_CFR_CSOF4 DMAMUX_CFR_CSOF4 /*!< Synchronization Event Overrun Flag Channel 4 */ +#if defined(DMAMUX1_Channel5) +#define LL_DMAMUX_CFR_CSOF5 DMAMUX_CFR_CSOF5 /*!< Synchronization Event Overrun Flag Channel 5 */ +#endif /* DMAMUX1_Channel5 */ +#if defined(DMAMUX1_Channel6) +#define LL_DMAMUX_CFR_CSOF6 DMAMUX_CFR_CSOF6 /*!< Synchronization Event Overrun Flag Channel 6 */ +#endif /* DMAMUX1_Channel6 */ +#if defined(DMA2) +#define LL_DMAMUX_CFR_CSOF7 DMAMUX_CFR_CSOF7 /*!< Synchronization Event Overrun Flag Channel 7 */ +#define LL_DMAMUX_CFR_CSOF8 DMAMUX_CFR_CSOF8 /*!< Synchronization Event Overrun Flag Channel 8 */ +#define LL_DMAMUX_CFR_CSOF9 DMAMUX_CFR_CSOF9 /*!< Synchronization Event Overrun Flag Channel 9 */ +#define LL_DMAMUX_CFR_CSOF10 DMAMUX_CFR_CSOF10 /*!< Synchronization Event Overrun Flag Channel 10 */ +#define LL_DMAMUX_CFR_CSOF11 DMAMUX_CFR_CSOF11 /*!< Synchronization Event Overrun Flag Channel 11 */ +#endif /* DMA2 */ +#define LL_DMAMUX_RGCFR_RGCOF0 DMAMUX_RGCFR_COF0 /*!< Request Generator 0 Trigger Event Overrun Flag */ +#define LL_DMAMUX_RGCFR_RGCOF1 DMAMUX_RGCFR_COF1 /*!< Request Generator 1 Trigger Event Overrun Flag */ +#define LL_DMAMUX_RGCFR_RGCOF2 DMAMUX_RGCFR_COF2 /*!< Request Generator 2 Trigger Event Overrun Flag */ +#define LL_DMAMUX_RGCFR_RGCOF3 DMAMUX_RGCFR_COF3 /*!< Request Generator 3 Trigger Event Overrun Flag */ +/** + * @} + */ + +/** @defgroup DMAMUX_LL_EC_GET_FLAG Get Flags Defines + * @brief Flags defines which can be used with LL_DMAMUX_ReadReg function + * @{ + */ +#define LL_DMAMUX_CSR_SOF0 DMAMUX_CSR_SOF0 /*!< Synchronization Event Overrun Flag Channel 0 */ +#define LL_DMAMUX_CSR_SOF1 DMAMUX_CSR_SOF1 /*!< Synchronization Event Overrun Flag Channel 1 */ +#define LL_DMAMUX_CSR_SOF2 DMAMUX_CSR_SOF2 /*!< Synchronization Event Overrun Flag Channel 2 */ +#define LL_DMAMUX_CSR_SOF3 DMAMUX_CSR_SOF3 /*!< Synchronization Event Overrun Flag Channel 3 */ +#define LL_DMAMUX_CSR_SOF4 DMAMUX_CSR_SOF4 /*!< Synchronization Event Overrun Flag Channel 4 */ +#if defined(DMAMUX1_Channel5) +#define LL_DMAMUX_CSR_SOF5 DMAMUX_CSR_SOF5 /*!< Synchronization Event Overrun Flag Channel 5 */ +#endif /* DMAMUX1_Channel5 */ +#if defined(DMAMUX1_Channel6) +#define LL_DMAMUX_CSR_SOF6 DMAMUX_CSR_SOF6 /*!< Synchronization Event Overrun Flag Channel 6 */ +#endif /* DMAMUX1_Channel6 */ +#if defined(DMA2) +#define LL_DMAMUX_CSR_SOF7 DMAMUX_CSR_SOF7 /*!< Synchronization Event Overrun Flag Channel 7 */ +#define LL_DMAMUX_CSR_SOF8 DMAMUX_CSR_SOF8 /*!< Synchronization Event Overrun Flag Channel 8 */ +#define LL_DMAMUX_CSR_SOF9 DMAMUX_CSR_SOF9 /*!< Synchronization Event Overrun Flag Channel 9 */ +#define LL_DMAMUX_CSR_SOF10 DMAMUX_CSR_SOF10 /*!< Synchronization Event Overrun Flag Channel 10 */ +#define LL_DMAMUX_CSR_SOF11 DMAMUX_CSR_SOF11 /*!< Synchronization Event Overrun Flag Channel 11 */ +#endif /* DMA2 */ +#define LL_DMAMUX_RGSR_RGOF0 DMAMUX_RGSR_OF0 /*!< Request Generator 0 Trigger Event Overrun Flag */ +#define LL_DMAMUX_RGSR_RGOF1 DMAMUX_RGSR_OF1 /*!< Request Generator 1 Trigger Event Overrun Flag */ +#define LL_DMAMUX_RGSR_RGOF2 DMAMUX_RGSR_OF2 /*!< Request Generator 2 Trigger Event Overrun Flag */ +#define LL_DMAMUX_RGSR_RGOF3 DMAMUX_RGSR_OF3 /*!< Request Generator 3 Trigger Event Overrun Flag */ +/** + * @} + */ + +/** @defgroup DMAMUX_LL_EC_IT IT Defines + * @brief IT defines which can be used with LL_DMA_ReadReg and LL_DMAMUX_WriteReg functions + * @{ + */ +#define LL_DMAMUX_CCR_SOIE DMAMUX_CxCR_SOIE /*!< Synchronization Event Overrun Interrupt */ +#define LL_DMAMUX_RGCR_RGOIE DMAMUX_RGxCR_OIE /*!< Request Generation Trigger Event Overrun Interrupt */ +/** + * @} + */ + +/** @defgroup DMAMUX_LL_EC_REQUEST Transfer request + * @{ + */ +#define LL_DMAMUX_REQ_MEM2MEM 0x00000000U /*!< memory to memory transfer */ +#define LL_DMAMUX_REQ_GENERATOR0 0x00000001U /*!< DMAMUX request generator 0 */ +#define LL_DMAMUX_REQ_GENERATOR1 0x00000002U /*!< DMAMUX request generator 1 */ +#define LL_DMAMUX_REQ_GENERATOR2 0x00000003U /*!< DMAMUX request generator 2 */ +#define LL_DMAMUX_REQ_GENERATOR3 0x00000004U /*!< DMAMUX request generator 3 */ +#define LL_DMAMUX_REQ_ADC1 0x00000005U /*!< DMAMUX ADC1 request */ +#if defined(AES) +#define LL_DMAMUX_REQ_AES_IN 0x00000006U /*!< DMAMUX AES_IN request */ +#define LL_DMAMUX_REQ_AES_OUT 0x00000007U /*!< DMAMUX AES_OUT request */ +#endif /* AES */ +#if defined(DAC1) +#define LL_DMAMUX_REQ_DAC1_CH1 0x00000008U /*!< DMAMUX DAC_CH1 request */ +#define LL_DMAMUX_REQ_DAC1_CH2 0x00000009U /*!< DMAMUX DAC_CH2 request */ +#endif /* DAC1 */ +#define LL_DMAMUX_REQ_I2C1_RX 0x0000000AU /*!< DMAMUX I2C1 RX request */ +#define LL_DMAMUX_REQ_I2C1_TX 0x0000000BU /*!< DMAMUX I2C1 TX request */ +#define LL_DMAMUX_REQ_I2C2_RX 0x0000000CU /*!< DMAMUX I2C2 RX request */ +#define LL_DMAMUX_REQ_I2C2_TX 0x0000000DU /*!< DMAMUX I2C2 TX request */ +#if defined(LPUART1) +#define LL_DMAMUX_REQ_LPUART1_RX 0x0000000EU /*!< DMAMUX LPUART1 RX request */ +#define LL_DMAMUX_REQ_LPUART1_TX 0x0000000FU /*!< DMAMUX LPUART1 TX request */ +#endif /* LPUART1 */ +#define LL_DMAMUX_REQ_SPI1_RX 0x00000010U /*!< DMAMUX SPI1 RX request */ +#define LL_DMAMUX_REQ_SPI1_TX 0x00000011U /*!< DMAMUX SPI1 TX request */ +#define LL_DMAMUX_REQ_SPI2_RX 0x00000012U /*!< DMAMUX SPI2 RX request */ +#define LL_DMAMUX_REQ_SPI2_TX 0x00000013U /*!< DMAMUX SPI2 TX request */ +#define LL_DMAMUX_REQ_TIM1_CH1 0x00000014U /*!< DMAMUX TIM1 CH1 request */ +#define LL_DMAMUX_REQ_TIM1_CH2 0x00000015U /*!< DMAMUX TIM1 CH2 request */ +#define LL_DMAMUX_REQ_TIM1_CH3 0x00000016U /*!< DMAMUX TIM1 CH3 request */ +#define LL_DMAMUX_REQ_TIM1_CH4 0x00000017U /*!< DMAMUX TIM1 CH4 request */ +#define LL_DMAMUX_REQ_TIM1_TRIG_COM 0x00000018U /*!< DMAMUX TIM1 TRIG COM request */ +#define LL_DMAMUX_REQ_TIM1_UP 0x00000019U /*!< DMAMUX TIM1 UP request */ +#if defined(TIM2) +#define LL_DMAMUX_REQ_TIM2_CH1 0x0000001AU /*!< DMAMUX TIM2 CH1 request */ +#define LL_DMAMUX_REQ_TIM2_CH2 0x0000001BU /*!< DMAMUX TIM2 CH2 request */ +#define LL_DMAMUX_REQ_TIM2_CH3 0x0000001CU /*!< DMAMUX TIM2 CH3 request */ +#define LL_DMAMUX_REQ_TIM2_CH4 0x0000001DU /*!< DMAMUX TIM2 CH4 request */ +#define LL_DMAMUX_REQ_TIM2_TRIG 0x0000001EU /*!< DMAMUX TIM2 TRIG request */ +#define LL_DMAMUX_REQ_TIM2_UP 0x0000001FU /*!< DMAMUX TIM2 UP request */ +#endif /* TIM2 */ +#define LL_DMAMUX_REQ_TIM3_CH1 0x00000020U /*!< DMAMUX TIM3 CH1 request */ +#define LL_DMAMUX_REQ_TIM3_CH2 0x00000021U /*!< DMAMUX TIM3 CH2 request */ +#define LL_DMAMUX_REQ_TIM3_CH3 0x00000022U /*!< DMAMUX TIM3 CH3 request */ +#define LL_DMAMUX_REQ_TIM3_CH4 0x00000023U /*!< DMAMUX TIM3 CH4 request */ +#define LL_DMAMUX_REQ_TIM3_TRIG 0x00000024U /*!< DMAMUX TIM3 TRIG request */ +#define LL_DMAMUX_REQ_TIM3_UP 0x00000025U /*!< DMAMUX TIM3 UP request */ +#if defined(TIM6) +#define LL_DMAMUX_REQ_TIM6_UP 0x00000026U /*!< DMAMUX TIM6 UP request */ +#endif /* TIM6 */ +#if defined(TIM7) +#define LL_DMAMUX_REQ_TIM7_UP 0x00000027U /*!< DMAMUX TIM7 UP request */ +#endif /* TIM7 */ +#if defined(TIM15) +#define LL_DMAMUX_REQ_TIM15_CH1 0x00000028U /*!< DMAMUX TIM15 CH1 request */ +#define LL_DMAMUX_REQ_TIM15_CH2 0x00000029U /*!< DMAMUX TIM15 CH2 request */ +#define LL_DMAMUX_REQ_TIM15_TRIG_COM 0x0000002AU /*!< DMAMUX TIM15 TRIG COM request */ +#define LL_DMAMUX_REQ_TIM15_UP 0x0000002BU /*!< DMAMUX TIM15 UP request */ +#endif /* TIM15 */ +#define LL_DMAMUX_REQ_TIM16_CH1 0x0000002CU /*!< DMAMUX TIM16 CH1 request */ +#define LL_DMAMUX_REQ_TIM16_COM 0x0000002DU /*!< DMAMUX TIM16 COM request */ +#define LL_DMAMUX_REQ_TIM16_UP 0x0000002EU /*!< DMAMUX TIM16 UP request */ +#define LL_DMAMUX_REQ_TIM17_CH1 0x0000002FU /*!< DMAMUX TIM17 CH1 request */ +#define LL_DMAMUX_REQ_TIM17_COM 0x00000030U /*!< DMAMUX TIM17 COM request */ +#define LL_DMAMUX_REQ_TIM17_UP 0x00000031U /*!< DMAMUX TIM17 UP request */ +#define LL_DMAMUX_REQ_USART1_RX 0x00000032U /*!< DMAMUX USART1 RX request */ +#define LL_DMAMUX_REQ_USART1_TX 0x00000033U /*!< DMAMUX USART1 TX request */ +#define LL_DMAMUX_REQ_USART2_RX 0x00000034U /*!< DMAMUX USART2 RX request */ +#define LL_DMAMUX_REQ_USART2_TX 0x00000035U /*!< DMAMUX USART2 TX request */ +#if defined(USART3) +#define LL_DMAMUX_REQ_USART3_RX 0x00000036U /*!< DMAMUX USART3 RX request */ +#define LL_DMAMUX_REQ_USART3_TX 0x00000037U /*!< DMAMUX USART3 TX request */ +#endif /* USART3 */ +#if defined(USART4) +#define LL_DMAMUX_REQ_USART4_RX 0x00000038U /*!< DMAMUX USART4 RX request */ +#define LL_DMAMUX_REQ_USART4_TX 0x00000039U /*!< DMAMUX USART4 TX request */ +#endif /* USART4 */ +#if defined(UCPD1) +#define LL_DMAMUX_REQ_UCPD1_RX 0x0000003AU /*!< DMAMUX UCPD1 RX request */ +#define LL_DMAMUX_REQ_UCPD1_TX 0x0000003BU /*!< DMAMUX UCPD1 TX request */ +#endif /* UCPD1 */ +#if defined(UCPD2) +#define LL_DMAMUX_REQ_UCPD2_RX 0x0000003CU /*!< DMAMUX UCPD2 RX request */ +#define LL_DMAMUX_REQ_UCPD2_TX 0x0000003DU /*!< DMAMUX UCPD2 TX request */ +#endif /* UCPD2 */ + +#if defined(I2C3) +#define LL_DMAMUX_REQ_I2C3_RX 0x0000003EU /*!< DMAMUX I2C3 RX request */ +#define LL_DMAMUX_REQ_I2C3_TX 0x0000003FU /*!< DMAMUX I2C3 TX request */ +#endif /* I2C3 */ + +#if defined(LPUART2) +#define LL_DMAMUX_REQ_LPUART2_RX 0x00000040U /*!< DMAMUX LPUART2 RX request */ +#define LL_DMAMUX_REQ_LPUART2_TX 0x00000041U /*!< DMAMUX LPUART2 TX request */ +#endif /* LPUART2 */ + +#if defined(SPI3) +#define LL_DMAMUX_REQ_SPI3_RX 0x00000042U /*!< DMAMUX SPI3 RX request */ +#define LL_DMAMUX_REQ_SPI3_TX 0x00000043U /*!< DMAMUX SPI3 TX request */ +#endif /* SPI3 */ + +#if defined(TIM4) +#define LL_DMAMUX_REQ_TIM4_CH1 0x00000044U /*!< DMAMUX TIM4 CH1 request */ +#define LL_DMAMUX_REQ_TIM4_CH2 0x00000045U /*!< DMAMUX TIM4 CH2 request */ +#define LL_DMAMUX_REQ_TIM4_CH3 0x00000046U /*!< DMAMUX TIM4 CH3 request */ +#define LL_DMAMUX_REQ_TIM4_CH4 0x00000047U /*!< DMAMUX TIM4 CH4 request */ +#define LL_DMAMUX_REQ_TIM4_TRIG 0x00000048U /*!< DMAMUX TIM4 TRIG request */ +#define LL_DMAMUX_REQ_TIM4_UP 0x00000049U /*!< DMAMUX TIM4 UP request */ +#endif /* TIM4 */ + +#if defined(USART5) +#define LL_DMAMUX_REQ_USART5_RX 0x0000004AU /*!< DMAMUX USART5 RX request */ +#define LL_DMAMUX_REQ_USART5_TX 0x0000004BU /*!< DMAMUX USART5 TX request */ +#endif /* USART5 */ + +#if defined(USART6) +#define LL_DMAMUX_REQ_USART6_RX 0x0000004CU /*!< DMAMUX USART6 RX request */ +#define LL_DMAMUX_REQ_USART6_TX 0x0000004DU /*!< DMAMUX USART6 TX request */ +#endif /* USART6 */ + +#if defined(STM32G0C1xx)||defined(STM32G0B1xx) +#define LL_DMAMUX_MAX_REQ LL_DMAMUX_REQ_USART6_TX +#elif defined(STM32G0B0xx) +#define LL_DMAMUX_MAX_REQ LL_DMAMUX_REQ_USART4_TX +#elif defined(STM32G081xx)||defined(STM32G071xx) +#define LL_DMAMUX_MAX_REQ LL_DMAMUX_REQ_UCPD2_TX +#elif defined(STM32G070xx) +#define LL_DMAMUX_MAX_REQ LL_DMAMUX_REQ_USART4_TX +#else +#define LL_DMAMUX_MAX_REQ LL_DMAMUX_REQ_USART2_TX +#endif /* STM32G0C1xx || STM32G0B1xx */ +/** + * @} + */ + +/** @defgroup DMAMUX_LL_EC_CHANNEL DMAMUX Channel + * @{ + */ +#define LL_DMAMUX_CHANNEL_0 0x00000000U /*!< DMAMUX Channel 0 connected to DMA1 Channel 1 */ +#define LL_DMAMUX_CHANNEL_1 0x00000001U /*!< DMAMUX Channel 1 connected to DMA1 Channel 2 */ +#define LL_DMAMUX_CHANNEL_2 0x00000002U /*!< DMAMUX Channel 2 connected to DMA1 Channel 3 */ +#define LL_DMAMUX_CHANNEL_3 0x00000003U /*!< DMAMUX Channel 3 connected to DMA1 Channel 4 */ +#define LL_DMAMUX_CHANNEL_4 0x00000004U /*!< DMAMUX Channel 4 connected to DMA1 Channel 5 */ +#if defined(DMAMUX1_Channel5) +#define LL_DMAMUX_CHANNEL_5 0x00000005U /*!< DMAMUX Channel 5 connected to DMA1 Channel 6 */ +#endif /* DMAMUX1_Channel5 */ +#if defined(DMAMUX1_Channel6) +#define LL_DMAMUX_CHANNEL_6 0x00000006U /*!< DMAMUX Channel 6 connected to DMA1 Channel 7 */ +#endif /* DMAMUX1_Channel6 */ +#if defined(DMA2) +#define LL_DMAMUX_CHANNEL_7 0x00000007U /*!< DMAMUX Channel 7 connected to DMA2 Channel 1 */ +#define LL_DMAMUX_CHANNEL_8 0x00000008U /*!< DMAMUX Channel 8 connected to DMA2 Channel 2 */ +#define LL_DMAMUX_CHANNEL_9 0x00000009U /*!< DMAMUX Channel 9 connected to DMA2 Channel 3 */ +#define LL_DMAMUX_CHANNEL_10 0x0000000AU /*!< DMAMUX Channel 10 connected to DMA2 Channel 4 */ +#define LL_DMAMUX_CHANNEL_11 0x0000000BU /*!< DMAMUX Channel 11 connected to DMA2 Channel 5 */ +#endif /* DMA2 */ +/** + * @} + */ + +/** @defgroup DMAMUX_LL_EC_SYNC_NO Synchronization Signal Polarity + * @{ + */ +#define LL_DMAMUX_SYNC_NO_EVENT 0x00000000U /*!< All requests are blocked */ +#define LL_DMAMUX_SYNC_POL_RISING DMAMUX_CxCR_SPOL_0 /*!< Synchronization on event on rising edge */ +#define LL_DMAMUX_SYNC_POL_FALLING DMAMUX_CxCR_SPOL_1 /*!< Synchronization on event on falling edge */ +#define LL_DMAMUX_SYNC_POL_RISING_FALLING (DMAMUX_CxCR_SPOL_0 | DMAMUX_CxCR_SPOL_1) /*!< Synchronization on event on rising and falling edge */ +/** + * @} + */ + +/** @defgroup DMAMUX_LL_EC_SYNC_EVT Synchronization Signal Event + * @{ + */ +#define LL_DMAMUX_SYNC_EXTI_LINE0 0x00000000U /*!< Synchronization signal from EXTI Line0 */ +#define LL_DMAMUX_SYNC_EXTI_LINE1 DMAMUX_CxCR_SYNC_ID_0 /*!< Synchronization signal from EXTI Line1 */ +#define LL_DMAMUX_SYNC_EXTI_LINE2 DMAMUX_CxCR_SYNC_ID_1 /*!< Synchronization signal from EXTI Line2 */ +#define LL_DMAMUX_SYNC_EXTI_LINE3 (DMAMUX_CxCR_SYNC_ID_1 | DMAMUX_CxCR_SYNC_ID_0) /*!< Synchronization signal from EXTI Line3 */ +#define LL_DMAMUX_SYNC_EXTI_LINE4 DMAMUX_CxCR_SYNC_ID_2 /*!< Synchronization signal from EXTI Line4 */ +#define LL_DMAMUX_SYNC_EXTI_LINE5 (DMAMUX_CxCR_SYNC_ID_2 | DMAMUX_CxCR_SYNC_ID_0) /*!< Synchronization signal from EXTI Line5 */ +#define LL_DMAMUX_SYNC_EXTI_LINE6 (DMAMUX_CxCR_SYNC_ID_2 | DMAMUX_CxCR_SYNC_ID_1) /*!< Synchronization signal from EXTI Line6 */ +#define LL_DMAMUX_SYNC_EXTI_LINE7 (DMAMUX_CxCR_SYNC_ID_2 | DMAMUX_CxCR_SYNC_ID_1 | DMAMUX_CxCR_SYNC_ID_0) /*!< Synchronization signal from EXTI Line7 */ +#define LL_DMAMUX_SYNC_EXTI_LINE8 DMAMUX_CxCR_SYNC_ID_3 /*!< Synchronization signal from EXTI Line8 */ +#define LL_DMAMUX_SYNC_EXTI_LINE9 (DMAMUX_CxCR_SYNC_ID_3 | DMAMUX_CxCR_SYNC_ID_0) /*!< Synchronization signal from EXTI Line9 */ +#define LL_DMAMUX_SYNC_EXTI_LINE10 (DMAMUX_CxCR_SYNC_ID_3 | DMAMUX_CxCR_SYNC_ID_1) /*!< Synchronization signal from EXTI Line10 */ +#define LL_DMAMUX_SYNC_EXTI_LINE11 (DMAMUX_CxCR_SYNC_ID_3 | DMAMUX_CxCR_SYNC_ID_1 | DMAMUX_CxCR_SYNC_ID_0) /*!< Synchronization signal from EXTI Line11 */ +#define LL_DMAMUX_SYNC_EXTI_LINE12 (DMAMUX_CxCR_SYNC_ID_3 | DMAMUX_CxCR_SYNC_ID_2) /*!< Synchronization signal from EXTI Line12 */ +#define LL_DMAMUX_SYNC_EXTI_LINE13 (DMAMUX_CxCR_SYNC_ID_3 | DMAMUX_CxCR_SYNC_ID_2 | DMAMUX_CxCR_SYNC_ID_0) /*!< Synchronization signal from EXTI Line1 3 */ +#define LL_DMAMUX_SYNC_EXTI_LINE14 (DMAMUX_CxCR_SYNC_ID_3 | DMAMUX_CxCR_SYNC_ID_2 | DMAMUX_CxCR_SYNC_ID_1) /*!< Synchronization signal from EXTI Line1 4 */ +#define LL_DMAMUX_SYNC_EXTI_LINE15 (DMAMUX_CxCR_SYNC_ID_3 | DMAMUX_CxCR_SYNC_ID_2 | DMAMUX_CxCR_SYNC_ID_1 | DMAMUX_CxCR_SYNC_ID_0) /*!< Synchronization signal from EXTI Line1 5 */ +#define LL_DMAMUX_SYNC_DMAMUX_CH0 DMAMUX_CxCR_SYNC_ID_4 /*!< Synchronization signal from DMAMUX channel0 Event */ +#define LL_DMAMUX_SYNC_DMAMUX_CH1 (DMAMUX_CxCR_SYNC_ID_4 | DMAMUX_CxCR_SYNC_ID_0) /*!< Synchronization signal from DMAMUX channel1 Event */ +#define LL_DMAMUX_SYNC_DMAMUX_CH2 (DMAMUX_CxCR_SYNC_ID_4 | DMAMUX_CxCR_SYNC_ID_1) /*!< Synchronization signal from DMAMUX channel2 Event */ +#define LL_DMAMUX_SYNC_DMAMUX_CH3 (DMAMUX_CxCR_SYNC_ID_4 | DMAMUX_CxCR_SYNC_ID_1 | DMAMUX_CxCR_SYNC_ID_0) /*!< Synchronization signal from DMAMUX channel3 Event */ +#if defined(LPTIM1) +#define LL_DMAMUX_SYNC_LPTIM1_OUT (DMAMUX_CxCR_SYNC_ID_4 | DMAMUX_CxCR_SYNC_ID_2) /*!< Synchronization signal from LPTIM1 Output */ +#endif /* LPTIM1 */ +#if defined(LPTIM2) +#define LL_DMAMUX_SYNC_LPTIM2_OUT (DMAMUX_CxCR_SYNC_ID_4 | DMAMUX_CxCR_SYNC_ID_2 | DMAMUX_CxCR_SYNC_ID_0) /*!< Synchronization signal from LPTIM2 Output */ +#endif /* LPTIM2 */ +#define LL_DMAMUX_SYNC_TIM14_OC (DMAMUX_CxCR_SYNC_ID_4 | DMAMUX_CxCR_SYNC_ID_2 | DMAMUX_CxCR_SYNC_ID_1) /*!< Synchronization signal from TIM14 OC */ +/** + * @} + */ + +/** @defgroup DMAMUX_LL_EC_REQUEST_GENERATOR Request Generator Channel + * @{ + */ +#define LL_DMAMUX_REQ_GEN_0 0x00000000U +#define LL_DMAMUX_REQ_GEN_1 0x00000001U +#define LL_DMAMUX_REQ_GEN_2 0x00000002U +#define LL_DMAMUX_REQ_GEN_3 0x00000003U +/** + * @} + */ + +/** @defgroup DMAMUX_LL_EC_REQUEST_GEN_POLARITY External Request Signal Generation Polarity + * @{ + */ +#define LL_DMAMUX_REQ_GEN_NO_EVENT 0x00000000U /*!< No external DMA request generation */ +#define LL_DMAMUX_REQ_GEN_POL_RISING DMAMUX_RGxCR_GPOL_0 /*!< External DMA request generation on event on rising edge */ +#define LL_DMAMUX_REQ_GEN_POL_FALLING DMAMUX_RGxCR_GPOL_1 /*!< External DMA request generation on event on falling edge */ +#define LL_DMAMUX_REQ_GEN_POL_RISING_FALLING (DMAMUX_RGxCR_GPOL_0 | DMAMUX_RGxCR_GPOL_1) /*!< External DMA request generation on rising and falling edge */ +/** + * @} + */ + +/** @defgroup DMAMUX_LL_EC_REQUEST_GEN External Request Signal Generation + * @{ + */ +#define LL_DMAMUX_REQ_GEN_EXTI_LINE0 0x00000000U /*!< Request signal generation from EXTI Line0 */ +#define LL_DMAMUX_REQ_GEN_EXTI_LINE1 DMAMUX_RGxCR_SIG_ID_0 /*!< Request signal generation from EXTI Line1 */ +#define LL_DMAMUX_REQ_GEN_EXTI_LINE2 DMAMUX_RGxCR_SIG_ID_1 /*!< Request signal generation from EXTI Line2 */ +#define LL_DMAMUX_REQ_GEN_EXTI_LINE3 (DMAMUX_RGxCR_SIG_ID_1 |DMAMUX_RGxCR_SIG_ID_0) /*!< Request signal generation from EXTI Line3 */ +#define LL_DMAMUX_REQ_GEN_EXTI_LINE4 DMAMUX_RGxCR_SIG_ID_2 /*!< Request signal generation from EXTI Line4 */ +#define LL_DMAMUX_REQ_GEN_EXTI_LINE5 (DMAMUX_RGxCR_SIG_ID_2 | DMAMUX_RGxCR_SIG_ID_0) /*!< Request signal generation from EXTI Line5 */ +#define LL_DMAMUX_REQ_GEN_EXTI_LINE6 (DMAMUX_RGxCR_SIG_ID_2 | DMAMUX_RGxCR_SIG_ID_1) /*!< Request signal generation from EXTI Line6 */ +#define LL_DMAMUX_REQ_GEN_EXTI_LINE7 (DMAMUX_RGxCR_SIG_ID_2 | DMAMUX_RGxCR_SIG_ID_1 | DMAMUX_RGxCR_SIG_ID_0) /*!< Request signal generation from EXTI Line7 */ +#define LL_DMAMUX_REQ_GEN_EXTI_LINE8 DMAMUX_RGxCR_SIG_ID_3 /*!< Request signal generation from EXTI Line8 */ +#define LL_DMAMUX_REQ_GEN_EXTI_LINE9 (DMAMUX_RGxCR_SIG_ID_3 | DMAMUX_RGxCR_SIG_ID_0) /*!< Request signal generation from EXTI Line9 */ +#define LL_DMAMUX_REQ_GEN_EXTI_LINE10 (DMAMUX_RGxCR_SIG_ID_3 | DMAMUX_RGxCR_SIG_ID_1) /*!< Request signal generation from EXTI Line10 */ +#define LL_DMAMUX_REQ_GEN_EXTI_LINE11 (DMAMUX_RGxCR_SIG_ID_3 | DMAMUX_RGxCR_SIG_ID_1 | DMAMUX_RGxCR_SIG_ID_0) /*!< Request signal generation from EXTI Line11 */ +#define LL_DMAMUX_REQ_GEN_EXTI_LINE12 (DMAMUX_RGxCR_SIG_ID_3 | DMAMUX_RGxCR_SIG_ID_2) /*!< Request signal generation from EXTI Line12 */ +#define LL_DMAMUX_REQ_GEN_EXTI_LINE13 (DMAMUX_RGxCR_SIG_ID_3 | DMAMUX_RGxCR_SIG_ID_2 | DMAMUX_RGxCR_SIG_ID_0) /*!< Request signal generation from EXTI Line13 */ +#define LL_DMAMUX_REQ_GEN_EXTI_LINE14 (DMAMUX_RGxCR_SIG_ID_3 | DMAMUX_RGxCR_SIG_ID_2 | DMAMUX_RGxCR_SIG_ID_1) /*!< Request signal generation from EXTI Line14 */ +#define LL_DMAMUX_REQ_GEN_EXTI_LINE15 (DMAMUX_RGxCR_SIG_ID_3 | DMAMUX_RGxCR_SIG_ID_2 | DMAMUX_RGxCR_SIG_ID_1 | DMAMUX_RGxCR_SIG_ID_0) /*!< Request signal generation from EXTI Line15 */ +#define LL_DMAMUX_REQ_GEN_DMAMUX_CH0 DMAMUX_RGxCR_SIG_ID_4 /*!< Request signal generation from DMAMUX channel0 Event */ +#define LL_DMAMUX_REQ_GEN_DMAMUX_CH1 (DMAMUX_RGxCR_SIG_ID_4 | DMAMUX_RGxCR_SIG_ID_0) /*!< Request signal generation from DMAMUX channel1 Event */ +#define LL_DMAMUX_REQ_GEN_DMAMUX_CH2 (DMAMUX_RGxCR_SIG_ID_4 | DMAMUX_RGxCR_SIG_ID_1) /*!< Request signal generation from DMAMUX channel2 Event */ +#define LL_DMAMUX_REQ_GEN_DMAMUX_CH3 (DMAMUX_RGxCR_SIG_ID_4 | DMAMUX_RGxCR_SIG_ID_1 | DMAMUX_RGxCR_SIG_ID_0) /*!< Request signal generation from DMAMUX channel3 Event */ +#if defined(LPTIM1) +#define LL_DMAMUX_REQ_GEN_LPTIM1_OUT (DMAMUX_RGxCR_SIG_ID_4 | DMAMUX_RGxCR_SIG_ID_2) /*!< Request signal generation from LPTIM1 Output */ +#endif /* LPTIM1 */ +#if defined(LPTIM2) +#define LL_DMAMUX_REQ_GEN_LPTIM2_OUT (DMAMUX_RGxCR_SIG_ID_4 | DMAMUX_RGxCR_SIG_ID_2 | DMAMUX_RGxCR_SIG_ID_0) /*!< Request signal generation from LPTIM2 Output */ +#endif /* LPTIM2 */ +#define LL_DMAMUX_REQ_GEN_TIM14_OC (DMAMUX_RGxCR_SIG_ID_4 | DMAMUX_RGxCR_SIG_ID_2 | DMAMUX_RGxCR_SIG_ID_1) /*!< Request signal generation from TIM14 OC */ +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup DMAMUX_LL_Exported_Macros DMAMUX Exported Macros + * @{ + */ + +/** @defgroup DMAMUX_LL_EM_WRITE_READ Common Write and read registers macros + * @{ + */ +/** + * @brief Write a value in DMAMUX register + * @param __INSTANCE__ DMAMUX Instance + * @param __REG__ Register to be written + * @param __VALUE__ Value to be written in the register + * @retval None + */ +#define LL_DMAMUX_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__)) + +/** + * @brief Read a value in DMAMUX register + * @param __INSTANCE__ DMAMUX Instance + * @param __REG__ Register to be read + * @retval Register value + */ +#define LL_DMAMUX_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__) +/** + * @} + */ + +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup DMAMUX_LL_Exported_Functions DMAMUX Exported Functions + * @{ + */ + +/** @defgroup DMAMUX_LL_EF_Configuration Configuration + * @{ + */ +/** + * @brief Set DMAMUX request ID for DMAMUX Channel x. + * @note DMAMUX channel 0 to 6 are mapped to DMA1 channel 1 to 7. + * DMAMUX channel 7 to 11 are mapped to DMA2 channel 1 to 5 (**** only available on chip which support DMA2 ****). + * @rmtoll CxCR DMAREQ_ID LL_DMAMUX_SetRequestID + * @param DMAMUXx DMAMUXx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMAMUX_CHANNEL_0 + * @arg @ref LL_DMAMUX_CHANNEL_1 + * @arg @ref LL_DMAMUX_CHANNEL_2 + * @arg @ref LL_DMAMUX_CHANNEL_3 + * @arg @ref LL_DMAMUX_CHANNEL_4 + * @arg @ref LL_DMAMUX_CHANNEL_5 (**** only available on some devices ****) + * @arg @ref LL_DMAMUX_CHANNEL_6 (**** only available on some devices ****) + * + * @arg All the next values are only available on chip which support DMA2: + * @arg @ref LL_DMAMUX_CHANNEL_7 + * @arg @ref LL_DMAMUX_CHANNEL_8 + * @arg @ref LL_DMAMUX_CHANNEL_9 + * @arg @ref LL_DMAMUX_CHANNEL_10 + * @arg @ref LL_DMAMUX_CHANNEL_11 + * @param Request This parameter can be one of the following values: + * @arg @ref LL_DMAMUX_REQ_MEM2MEM + * @arg @ref LL_DMAMUX_REQ_GENERATOR0 + * @arg @ref LL_DMAMUX_REQ_GENERATOR1 + * @arg @ref LL_DMAMUX_REQ_GENERATOR2 + * @arg @ref LL_DMAMUX_REQ_GENERATOR3 + * @arg @ref LL_DMAMUX_REQ_ADC1 + * @arg @ref LL_DMAMUX_REQ_AES_IN + * @arg @ref LL_DMAMUX_REQ_AES_OUT + * @arg @ref LL_DMAMUX_REQ_DAC1_CH1 + * @arg @ref LL_DMAMUX_REQ_DAC1_CH2 + * @arg @ref LL_DMAMUX_REQ_I2C1_RX + * @arg @ref LL_DMAMUX_REQ_I2C1_TX + * @arg @ref LL_DMAMUX_REQ_I2C2_RX + * @arg @ref LL_DMAMUX_REQ_I2C2_TX + * @arg @ref LL_DMAMUX_REQ_LPUART1_RX + * @arg @ref LL_DMAMUX_REQ_LPUART1_TX + * @arg @ref LL_DMAMUX_REQ_SPI1_RX + * @arg @ref LL_DMAMUX_REQ_SPI1_TX + * @arg @ref LL_DMAMUX_REQ_SPI2_RX + * @arg @ref LL_DMAMUX_REQ_SPI2_TX + * @arg @ref LL_DMAMUX_REQ_TIM1_CH1 + * @arg @ref LL_DMAMUX_REQ_TIM1_CH2 + * @arg @ref LL_DMAMUX_REQ_TIM1_CH3 + * @arg @ref LL_DMAMUX_REQ_TIM1_CH4 + * @arg @ref LL_DMAMUX_REQ_TIM1_TRIG_COM + * @arg @ref LL_DMAMUX_REQ_TIM1_UP + * @arg @ref LL_DMAMUX_REQ_TIM2_CH1 + * @arg @ref LL_DMAMUX_REQ_TIM2_CH2 + * @arg @ref LL_DMAMUX_REQ_TIM2_CH3 + * @arg @ref LL_DMAMUX_REQ_TIM2_CH4 + * @arg @ref LL_DMAMUX_REQ_TIM2_TRIG + * @arg @ref LL_DMAMUX_REQ_TIM2_UP + * @arg @ref LL_DMAMUX_REQ_TIM3_CH1 + * @arg @ref LL_DMAMUX_REQ_TIM3_CH2 + * @arg @ref LL_DMAMUX_REQ_TIM3_CH3 + * @arg @ref LL_DMAMUX_REQ_TIM3_CH4 + * @arg @ref LL_DMAMUX_REQ_TIM3_TRIG + * @arg @ref LL_DMAMUX_REQ_TIM3_UP + * @arg @ref LL_DMAMUX_REQ_TIM6_UP + * @arg @ref LL_DMAMUX_REQ_TIM7_UP + * @arg @ref LL_DMAMUX_REQ_TIM15_CH1 + * @arg @ref LL_DMAMUX_REQ_TIM15_CH2 + * @arg @ref LL_DMAMUX_REQ_TIM15_TRIG_COM + * @arg @ref LL_DMAMUX_REQ_TIM15_UP + * @arg @ref LL_DMAMUX_REQ_TIM16_CH1 + * @arg @ref LL_DMAMUX_REQ_TIM16_COM + * @arg @ref LL_DMAMUX_REQ_TIM16_UP + * @arg @ref LL_DMAMUX_REQ_TIM17_CH1 + * @arg @ref LL_DMAMUX_REQ_TIM17_COM + * @arg @ref LL_DMAMUX_REQ_TIM17_UP + * @arg @ref LL_DMAMUX_REQ_USART1_RX + * @arg @ref LL_DMAMUX_REQ_USART1_TX + * @arg @ref LL_DMAMUX_REQ_USART2_RX + * @arg @ref LL_DMAMUX_REQ_USART2_TX + * @arg @ref LL_DMAMUX_REQ_USART3_RX + * @arg @ref LL_DMAMUX_REQ_USART3_TX + * @arg @ref LL_DMAMUX_REQ_USART4_RX + * @arg @ref LL_DMAMUX_REQ_USART4_TX + * @arg @ref LL_DMAMUX_REQ_UCPD1_RX + * @arg @ref LL_DMAMUX_REQ_UCPD1_TX + * @arg @ref LL_DMAMUX_REQ_UCPD2_RX + * @arg @ref LL_DMAMUX_REQ_UCPD2_TX + * @retval None + */ +__STATIC_INLINE void LL_DMAMUX_SetRequestID(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel, uint32_t Request) +{ + (void)(DMAMUXx); + MODIFY_REG((DMAMUX1_Channel0 + Channel)->CCR, DMAMUX_CxCR_DMAREQ_ID, Request); +} + +/** + * @brief Get DMAMUX request ID for DMAMUX Channel x. + * @note DMAMUX channel 0 to 6 are mapped to DMA1 channel 1 to 7. + * DMAMUX channel 7 to 11 are mapped to DMA2 channel 1 to 5 (**** only available on chip which support DMA2 ****). + * @rmtoll CxCR DMAREQ_ID LL_DMAMUX_GetRequestID + * @param DMAMUXx DMAMUXx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMAMUX_CHANNEL_0 + * @arg @ref LL_DMAMUX_CHANNEL_1 + * @arg @ref LL_DMAMUX_CHANNEL_2 + * @arg @ref LL_DMAMUX_CHANNEL_3 + * @arg @ref LL_DMAMUX_CHANNEL_4 + * @arg @ref LL_DMAMUX_CHANNEL_5 (**** only available on some devices ****) + * @arg @ref LL_DMAMUX_CHANNEL_6 (**** only available on some devices ****) + * + * @arg All the next values are only available on chip which support DMA2: + * @arg @ref LL_DMAMUX_CHANNEL_7 + * @arg @ref LL_DMAMUX_CHANNEL_8 + * @arg @ref LL_DMAMUX_CHANNEL_9 + * @arg @ref LL_DMAMUX_CHANNEL_10 + * @arg @ref LL_DMAMUX_CHANNEL_11 + * @retval Returned value can be one of the following values: + * @arg @ref LL_DMAMUX_REQ_MEM2MEM + * @arg @ref LL_DMAMUX_REQ_GENERATOR0 + * @arg @ref LL_DMAMUX_REQ_GENERATOR1 + * @arg @ref LL_DMAMUX_REQ_GENERATOR2 + * @arg @ref LL_DMAMUX_REQ_GENERATOR3 + * @arg @ref LL_DMAMUX_REQ_ADC1 + * @arg @ref LL_DMAMUX_REQ_AES_IN + * @arg @ref LL_DMAMUX_REQ_AES_OUT + * @arg @ref LL_DMAMUX_REQ_DAC1_CH1 + * @arg @ref LL_DMAMUX_REQ_DAC1_CH2 + * @arg @ref LL_DMAMUX_REQ_I2C1_RX + * @arg @ref LL_DMAMUX_REQ_I2C1_TX + * @arg @ref LL_DMAMUX_REQ_I2C2_RX + * @arg @ref LL_DMAMUX_REQ_I2C2_TX + * @arg @ref LL_DMAMUX_REQ_LPUART1_RX + * @arg @ref LL_DMAMUX_REQ_LPUART1_TX + * @arg @ref LL_DMAMUX_REQ_SPI1_RX + * @arg @ref LL_DMAMUX_REQ_SPI1_TX + * @arg @ref LL_DMAMUX_REQ_SPI2_RX + * @arg @ref LL_DMAMUX_REQ_SPI2_TX + * @arg @ref LL_DMAMUX_REQ_TIM1_CH1 + * @arg @ref LL_DMAMUX_REQ_TIM1_CH2 + * @arg @ref LL_DMAMUX_REQ_TIM1_CH3 + * @arg @ref LL_DMAMUX_REQ_TIM1_CH4 + * @arg @ref LL_DMAMUX_REQ_TIM1_TRIG_COM + * @arg @ref LL_DMAMUX_REQ_TIM1_UP + * @arg @ref LL_DMAMUX_REQ_TIM2_CH1 + * @arg @ref LL_DMAMUX_REQ_TIM2_CH2 + * @arg @ref LL_DMAMUX_REQ_TIM2_CH3 + * @arg @ref LL_DMAMUX_REQ_TIM2_CH4 + * @arg @ref LL_DMAMUX_REQ_TIM2_TRIG + * @arg @ref LL_DMAMUX_REQ_TIM2_UP + * @arg @ref LL_DMAMUX_REQ_TIM3_CH1 + * @arg @ref LL_DMAMUX_REQ_TIM3_CH2 + * @arg @ref LL_DMAMUX_REQ_TIM3_CH3 + * @arg @ref LL_DMAMUX_REQ_TIM3_CH4 + * @arg @ref LL_DMAMUX_REQ_TIM3_TRIG + * @arg @ref LL_DMAMUX_REQ_TIM3_UP + * @arg @ref LL_DMAMUX_REQ_TIM6_UP + * @arg @ref LL_DMAMUX_REQ_TIM7_UP + * @arg @ref LL_DMAMUX_REQ_TIM15_CH1 + * @arg @ref LL_DMAMUX_REQ_TIM15_CH2 + * @arg @ref LL_DMAMUX_REQ_TIM15_TRIG_COM + * @arg @ref LL_DMAMUX_REQ_TIM15_UP + * @arg @ref LL_DMAMUX_REQ_TIM16_CH1 + * @arg @ref LL_DMAMUX_REQ_TIM16_COM + * @arg @ref LL_DMAMUX_REQ_TIM16_UP + * @arg @ref LL_DMAMUX_REQ_TIM17_CH1 + * @arg @ref LL_DMAMUX_REQ_TIM17_COM + * @arg @ref LL_DMAMUX_REQ_TIM17_UP + * @arg @ref LL_DMAMUX_REQ_USART1_RX + * @arg @ref LL_DMAMUX_REQ_USART1_TX + * @arg @ref LL_DMAMUX_REQ_USART2_RX + * @arg @ref LL_DMAMUX_REQ_USART2_TX + * @arg @ref LL_DMAMUX_REQ_USART3_RX + * @arg @ref LL_DMAMUX_REQ_USART3_TX + * @arg @ref LL_DMAMUX_REQ_USART4_RX + * @arg @ref LL_DMAMUX_REQ_USART4_TX + * @arg @ref LL_DMAMUX_REQ_UCPD1_RX + * @arg @ref LL_DMAMUX_REQ_UCPD1_TX + * @arg @ref LL_DMAMUX_REQ_UCPD2_RX + * @arg @ref LL_DMAMUX_REQ_UCPD2_TX + */ +__STATIC_INLINE uint32_t LL_DMAMUX_GetRequestID(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel) +{ + (void)(DMAMUXx); + return (uint32_t)(READ_BIT((DMAMUX1_Channel0 + Channel)->CCR, DMAMUX_CxCR_DMAREQ_ID)); +} + +/** + * @brief Set the number of DMA request that will be autorized after a synchronization event and/or the number of DMA request needed to generate an event. + * @note DMAMUX channel 0 to 6 are mapped to DMA1 channel 1 to 7. + * DMAMUX channel 7 to 11 are mapped to DMA2 channel 1 to 5 (**** only available on chip which support DMA2 ****). + * @rmtoll CxCR NBREQ LL_DMAMUX_SetSyncRequestNb + * @param DMAMUXx DMAMUXx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMAMUX_CHANNEL_0 + * @arg @ref LL_DMAMUX_CHANNEL_1 + * @arg @ref LL_DMAMUX_CHANNEL_2 + * @arg @ref LL_DMAMUX_CHANNEL_3 + * @arg @ref LL_DMAMUX_CHANNEL_4 + * @arg @ref LL_DMAMUX_CHANNEL_5 (**** only available on some devices ****) + * @arg @ref LL_DMAMUX_CHANNEL_6 (**** only available on some devices ****) + * + * @arg All the next values are only available on chip which support DMA2: + * @arg @ref LL_DMAMUX_CHANNEL_7 + * @arg @ref LL_DMAMUX_CHANNEL_8 + * @arg @ref LL_DMAMUX_CHANNEL_9 + * @arg @ref LL_DMAMUX_CHANNEL_10 + * @arg @ref LL_DMAMUX_CHANNEL_11 + * @param RequestNb This parameter must be a value between Min_Data = 1 and Max_Data = 32. + * @retval None + */ +__STATIC_INLINE void LL_DMAMUX_SetSyncRequestNb(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel, uint32_t RequestNb) +{ + (void)(DMAMUXx); + MODIFY_REG((DMAMUX1_Channel0 + Channel)->CCR, DMAMUX_CxCR_NBREQ, ((RequestNb - 1U) << DMAMUX_CxCR_NBREQ_Pos)); +} + +/** + * @brief Get the number of DMA request that will be autorized after a synchronization event and/or the number of DMA request needed to generate an event. + * @note DMAMUX channel 0 to 6 are mapped to DMA1 channel 1 to 7. + * DMAMUX channel 7 to 11 are mapped to DMA2 channel 1 to 5 (**** only available on chip which support DMA2 ****). + * @rmtoll CxCR NBREQ LL_DMAMUX_GetSyncRequestNb + * @param DMAMUXx DMAMUXx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMAMUX_CHANNEL_0 + * @arg @ref LL_DMAMUX_CHANNEL_1 + * @arg @ref LL_DMAMUX_CHANNEL_2 + * @arg @ref LL_DMAMUX_CHANNEL_3 + * @arg @ref LL_DMAMUX_CHANNEL_4 + * @arg @ref LL_DMAMUX_CHANNEL_5 (**** only available on some devices ****) + * @arg @ref LL_DMAMUX_CHANNEL_6 (**** only available on some devices ****) + * + * @arg All the next values are only available on chip which support DMA2: + * @arg @ref LL_DMAMUX_CHANNEL_7 + * @arg @ref LL_DMAMUX_CHANNEL_8 + * @arg @ref LL_DMAMUX_CHANNEL_9 + * @arg @ref LL_DMAMUX_CHANNEL_10 + * @arg @ref LL_DMAMUX_CHANNEL_11 + * @retval Between Min_Data = 1 and Max_Data = 32 + */ +__STATIC_INLINE uint32_t LL_DMAMUX_GetSyncRequestNb(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel) +{ + (void)(DMAMUXx); + return (uint32_t)(((READ_BIT((DMAMUX1_Channel0 + Channel)->CCR, DMAMUX_CxCR_NBREQ)) >> DMAMUX_CxCR_NBREQ_Pos) + 1U); +} + +/** + * @brief Set the polarity of the signal on which the DMA request is synchronized. + * @note DMAMUX channel 0 to 6 are mapped to DMA1 channel 1 to 7. + * DMAMUX channel 7 to 11 are mapped to DMA2 channel 1 to 5 (**** only available on chip which support DMA2 ****). + * @rmtoll CxCR SPOL LL_DMAMUX_SetSyncPolarity + * @param DMAMUXx DMAMUXx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMAMUX_CHANNEL_0 + * @arg @ref LL_DMAMUX_CHANNEL_1 + * @arg @ref LL_DMAMUX_CHANNEL_2 + * @arg @ref LL_DMAMUX_CHANNEL_3 + * @arg @ref LL_DMAMUX_CHANNEL_4 + * @arg @ref LL_DMAMUX_CHANNEL_5 (**** only available on some devices ****) + * @arg @ref LL_DMAMUX_CHANNEL_6 (**** only available on some devices ****) + * + * @arg All the next values are only available on chip which support DMA2: + * @arg @ref LL_DMAMUX_CHANNEL_7 + * @arg @ref LL_DMAMUX_CHANNEL_8 + * @arg @ref LL_DMAMUX_CHANNEL_9 + * @arg @ref LL_DMAMUX_CHANNEL_10 + * @arg @ref LL_DMAMUX_CHANNEL_11 + * @param Polarity This parameter can be one of the following values: + * @arg @ref LL_DMAMUX_SYNC_NO_EVENT + * @arg @ref LL_DMAMUX_SYNC_POL_RISING + * @arg @ref LL_DMAMUX_SYNC_POL_FALLING + * @arg @ref LL_DMAMUX_SYNC_POL_RISING_FALLING + * @retval None + */ +__STATIC_INLINE void LL_DMAMUX_SetSyncPolarity(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel, uint32_t Polarity) +{ + (void)(DMAMUXx); + MODIFY_REG((DMAMUX1_Channel0 + Channel)->CCR, DMAMUX_CxCR_SPOL, Polarity); +} + +/** + * @brief Get the polarity of the signal on which the DMA request is synchronized. + * @note DMAMUX channel 0 to 6 are mapped to DMA1 channel 1 to 7. + * DMAMUX channel 7 to 11 are mapped to DMA2 channel 1 to 5 (**** only available on chip which support DMA2 ****). + * @rmtoll CxCR SPOL LL_DMAMUX_GetSyncPolarity + * @param DMAMUXx DMAMUXx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMAMUX_CHANNEL_0 + * @arg @ref LL_DMAMUX_CHANNEL_1 + * @arg @ref LL_DMAMUX_CHANNEL_2 + * @arg @ref LL_DMAMUX_CHANNEL_3 + * @arg @ref LL_DMAMUX_CHANNEL_4 + * @arg @ref LL_DMAMUX_CHANNEL_5 (**** only available on some devices ****) + * @arg @ref LL_DMAMUX_CHANNEL_6 (**** only available on some devices ****) + * + * @arg All the next values are only available on chip which support DMA2: + * @arg @ref LL_DMAMUX_CHANNEL_7 + * @arg @ref LL_DMAMUX_CHANNEL_8 + * @arg @ref LL_DMAMUX_CHANNEL_9 + * @arg @ref LL_DMAMUX_CHANNEL_10 + * @arg @ref LL_DMAMUX_CHANNEL_11 + * @retval Returned value can be one of the following values: + * @arg @ref LL_DMAMUX_SYNC_NO_EVENT + * @arg @ref LL_DMAMUX_SYNC_POL_RISING + * @arg @ref LL_DMAMUX_SYNC_POL_FALLING + * @arg @ref LL_DMAMUX_SYNC_POL_RISING_FALLING + */ +__STATIC_INLINE uint32_t LL_DMAMUX_GetSyncPolarity(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel) +{ + (void)(DMAMUXx); + return (uint32_t)(READ_BIT((DMAMUX1_Channel0 + Channel)->CCR, DMAMUX_CxCR_SPOL)); +} + +/** + * @brief Enable the Event Generation on DMAMUX channel x. + * @note DMAMUX channel 0 to 6 are mapped to DMA1 channel 1 to 7. + * DMAMUX channel 7 to 11 are mapped to DMA2 channel 1 to 5 (**** only available on chip which support DMA2 ****). + * @rmtoll CxCR EGE LL_DMAMUX_EnableEventGeneration + * @param DMAMUXx DMAMUXx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMAMUX_CHANNEL_0 + * @arg @ref LL_DMAMUX_CHANNEL_1 + * @arg @ref LL_DMAMUX_CHANNEL_2 + * @arg @ref LL_DMAMUX_CHANNEL_3 + * @arg @ref LL_DMAMUX_CHANNEL_4 + * @arg @ref LL_DMAMUX_CHANNEL_5 (**** only available on some devices ****) + * @arg @ref LL_DMAMUX_CHANNEL_6 (**** only available on some devices ****) + * + * @arg All the next values are only available on chip which support DMA2: + * @arg @ref LL_DMAMUX_CHANNEL_7 + * @arg @ref LL_DMAMUX_CHANNEL_8 + * @arg @ref LL_DMAMUX_CHANNEL_9 + * @arg @ref LL_DMAMUX_CHANNEL_10 + * @arg @ref LL_DMAMUX_CHANNEL_11 + * @retval None + */ +__STATIC_INLINE void LL_DMAMUX_EnableEventGeneration(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel) +{ + (void)(DMAMUXx); + SET_BIT((DMAMUX1_Channel0 + Channel)->CCR, DMAMUX_CxCR_EGE); +} + +/** + * @brief Disable the Event Generation on DMAMUX channel x. + * @note DMAMUX channel 0 to 6 are mapped to DMA1 channel 1 to 7. + * DMAMUX channel 7 to 11 are mapped to DMA2 channel 1 to 5 (**** only available on chip which support DMA2 ****). + * @rmtoll CxCR EGE LL_DMAMUX_DisableEventGeneration + * @param DMAMUXx DMAMUXx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMAMUX_CHANNEL_0 + * @arg @ref LL_DMAMUX_CHANNEL_1 + * @arg @ref LL_DMAMUX_CHANNEL_2 + * @arg @ref LL_DMAMUX_CHANNEL_3 + * @arg @ref LL_DMAMUX_CHANNEL_4 + * @arg @ref LL_DMAMUX_CHANNEL_5 (**** only available on some devices ****) + * @arg @ref LL_DMAMUX_CHANNEL_6 (**** only available on some devices ****) + * + * @arg All the next values are only available on chip which support DMA2: + * @arg @ref LL_DMAMUX_CHANNEL_7 + * @arg @ref LL_DMAMUX_CHANNEL_8 + * @arg @ref LL_DMAMUX_CHANNEL_9 + * @arg @ref LL_DMAMUX_CHANNEL_10 + * @arg @ref LL_DMAMUX_CHANNEL_11 + * @retval None + */ +__STATIC_INLINE void LL_DMAMUX_DisableEventGeneration(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel) +{ + (void)(DMAMUXx); + CLEAR_BIT((DMAMUX1_Channel0 + Channel)->CCR, DMAMUX_CxCR_EGE); +} + +/** + * @brief Check if the Event Generation on DMAMUX channel x is enabled or disabled. + * @note DMAMUX channel 0 to 6 are mapped to DMA1 channel 1 to 7. + * DMAMUX channel 7 to 11 are mapped to DMA2 channel 1 to 5 (**** only available on chip which support DMA2 ****). + * @rmtoll CxCR EGE LL_DMAMUX_IsEnabledEventGeneration + * @param DMAMUXx DMAMUXx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMAMUX_CHANNEL_0 + * @arg @ref LL_DMAMUX_CHANNEL_1 + * @arg @ref LL_DMAMUX_CHANNEL_2 + * @arg @ref LL_DMAMUX_CHANNEL_3 + * @arg @ref LL_DMAMUX_CHANNEL_4 + * @arg @ref LL_DMAMUX_CHANNEL_5 (**** only available on some devices ****) + * @arg @ref LL_DMAMUX_CHANNEL_6 (**** only available on some devices ****) + * + * @arg All the next values are only available on chip which support DMA2: + * @arg @ref LL_DMAMUX_CHANNEL_7 + * @arg @ref LL_DMAMUX_CHANNEL_8 + * @arg @ref LL_DMAMUX_CHANNEL_9 + * @arg @ref LL_DMAMUX_CHANNEL_10 + * @arg @ref LL_DMAMUX_CHANNEL_11 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMAMUX_IsEnabledEventGeneration(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel) +{ + (void)(DMAMUXx); + return ((READ_BIT((DMAMUX1_Channel0 + Channel)->CCR, DMAMUX_CxCR_EGE) == (DMAMUX_CxCR_EGE)) ? 1UL : 0UL); +} + +/** + * @brief Enable the synchronization mode. + * @note DMAMUX channel 0 to 6 are mapped to DMA1 channel 1 to 7. + * DMAMUX channel 7 to 11 are mapped to DMA2 channel 1 to 5 (**** only available on chip which support DMA2 ****). + * @rmtoll CxCR SE LL_DMAMUX_EnableSync + * @param DMAMUXx DMAMUXx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMAMUX_CHANNEL_0 + * @arg @ref LL_DMAMUX_CHANNEL_1 + * @arg @ref LL_DMAMUX_CHANNEL_2 + * @arg @ref LL_DMAMUX_CHANNEL_3 + * @arg @ref LL_DMAMUX_CHANNEL_4 + * @arg @ref LL_DMAMUX_CHANNEL_5 (**** only available on some devices ****) + * @arg @ref LL_DMAMUX_CHANNEL_6 (**** only available on some devices ****) + * + * @arg All the next values are only available on chip which support DMA2: + * @arg @ref LL_DMAMUX_CHANNEL_7 + * @arg @ref LL_DMAMUX_CHANNEL_8 + * @arg @ref LL_DMAMUX_CHANNEL_9 + * @arg @ref LL_DMAMUX_CHANNEL_10 + * @arg @ref LL_DMAMUX_CHANNEL_11 + * @retval None + */ +__STATIC_INLINE void LL_DMAMUX_EnableSync(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel) +{ + (void)(DMAMUXx); + SET_BIT((DMAMUX1_Channel0 + Channel)->CCR, DMAMUX_CxCR_SE); +} + +/** + * @brief Disable the synchronization mode. + * @note DMAMUX channel 0 to 6 are mapped to DMA1 channel 1 to 7. + * DMAMUX channel 7 to 11 are mapped to DMA2 channel 1 to 5 (**** only available on chip which support DMA2 ****). + * @rmtoll CxCR SE LL_DMAMUX_DisableSync + * @param DMAMUXx DMAMUXx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMAMUX_CHANNEL_0 + * @arg @ref LL_DMAMUX_CHANNEL_1 + * @arg @ref LL_DMAMUX_CHANNEL_2 + * @arg @ref LL_DMAMUX_CHANNEL_3 + * @arg @ref LL_DMAMUX_CHANNEL_4 + * @arg @ref LL_DMAMUX_CHANNEL_5 (**** only available on some devices ****) + * @arg @ref LL_DMAMUX_CHANNEL_6 (**** only available on some devices ****) + * + * @arg All the next values are only available on chip which support DMA2: + * @arg @ref LL_DMAMUX_CHANNEL_7 + * @arg @ref LL_DMAMUX_CHANNEL_8 + * @arg @ref LL_DMAMUX_CHANNEL_9 + * @arg @ref LL_DMAMUX_CHANNEL_10 + * @arg @ref LL_DMAMUX_CHANNEL_11 + * @retval None + */ +__STATIC_INLINE void LL_DMAMUX_DisableSync(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel) +{ + (void)(DMAMUXx); + CLEAR_BIT((DMAMUX1_Channel0 + Channel)->CCR, DMAMUX_CxCR_SE); +} + +/** + * @brief Check if the synchronization mode is enabled or disabled. + * @note DMAMUX channel 0 to 6 are mapped to DMA1 channel 1 to 7. + * DMAMUX channel 7 to 11 are mapped to DMA2 channel 1 to 5 (**** only available on chip which support DMA2 ****). + * @rmtoll CxCR SE LL_DMAMUX_IsEnabledSync + * @param DMAMUXx DMAMUXx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMAMUX_CHANNEL_0 + * @arg @ref LL_DMAMUX_CHANNEL_1 + * @arg @ref LL_DMAMUX_CHANNEL_2 + * @arg @ref LL_DMAMUX_CHANNEL_3 + * @arg @ref LL_DMAMUX_CHANNEL_4 + * @arg @ref LL_DMAMUX_CHANNEL_5 (**** only available on some devices ****) + * @arg @ref LL_DMAMUX_CHANNEL_6 (**** only available on some devices ****) + * + * @arg All the next values are only available on chip which support DMA2: + * @arg @ref LL_DMAMUX_CHANNEL_7 + * @arg @ref LL_DMAMUX_CHANNEL_8 + * @arg @ref LL_DMAMUX_CHANNEL_9 + * @arg @ref LL_DMAMUX_CHANNEL_10 + * @arg @ref LL_DMAMUX_CHANNEL_11 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMAMUX_IsEnabledSync(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel) +{ + (void)(DMAMUXx); + return ((READ_BIT((DMAMUX1_Channel0 + Channel)->CCR, DMAMUX_CxCR_SE) == (DMAMUX_CxCR_SE)) ? 1UL : 0UL); +} + +/** + * @brief Set DMAMUX synchronization ID on DMAMUX Channel x. + * @note DMAMUX channel 0 to 6 are mapped to DMA1 channel 1 to 7. + * DMAMUX channel 7 to 11 are mapped to DMA2 channel 1 to 5 (**** only available on chip which support DMA2 ****). + * @rmtoll CxCR SYNC_ID LL_DMAMUX_SetSyncID + * @param DMAMUXx DMAMUXx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMAMUX_CHANNEL_0 + * @arg @ref LL_DMAMUX_CHANNEL_1 + * @arg @ref LL_DMAMUX_CHANNEL_2 + * @arg @ref LL_DMAMUX_CHANNEL_3 + * @arg @ref LL_DMAMUX_CHANNEL_4 + * @arg @ref LL_DMAMUX_CHANNEL_5 (**** only available on some devices ****) + * @arg @ref LL_DMAMUX_CHANNEL_6 (**** only available on some devices ****) + * + * @arg All the next values are only available on chip which support DMA2: + * @arg @ref LL_DMAMUX_CHANNEL_7 + * @arg @ref LL_DMAMUX_CHANNEL_8 + * @arg @ref LL_DMAMUX_CHANNEL_9 + * @arg @ref LL_DMAMUX_CHANNEL_10 + * @arg @ref LL_DMAMUX_CHANNEL_11 + * @param SyncID This parameter can be one of the following values: + * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE0 + * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE1 + * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE2 + * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE3 + * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE4 + * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE5 + * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE6 + * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE7 + * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE8 + * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE9 + * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE10 + * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE11 + * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE12 + * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE13 + * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE14 + * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE15 + * @arg @ref LL_DMAMUX_SYNC_DMAMUX_CH0 + * @arg @ref LL_DMAMUX_SYNC_DMAMUX_CH1 + * @arg @ref LL_DMAMUX_SYNC_DMAMUX_CH2 + * @arg @ref LL_DMAMUX_SYNC_DMAMUX_CH3 + * @arg @ref LL_DMAMUX_SYNC_LPTIM1_OUT + * @arg @ref LL_DMAMUX_SYNC_LPTIM2_OUT + * @arg @ref LL_DMAMUX_SYNC_TIM14_OC + * @retval None + */ +__STATIC_INLINE void LL_DMAMUX_SetSyncID(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel, uint32_t SyncID) +{ + (void)(DMAMUXx); + MODIFY_REG((DMAMUX1_Channel0 + Channel)->CCR, DMAMUX_CxCR_SYNC_ID, SyncID); +} + +/** + * @brief Get DMAMUX synchronization ID on DMAMUX Channel x. + * @note DMAMUX channel 0 to 6 are mapped to DMA1 channel 1 to 7. + * DMAMUX channel 7 to 11 are mapped to DMA2 channel 1 to 5 (**** only available on chip which support DMA2 ****). + * @rmtoll CxCR SYNC_ID LL_DMAMUX_GetSyncID + * @param DMAMUXx DMAMUXx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMAMUX_CHANNEL_0 + * @arg @ref LL_DMAMUX_CHANNEL_1 + * @arg @ref LL_DMAMUX_CHANNEL_2 + * @arg @ref LL_DMAMUX_CHANNEL_3 + * @arg @ref LL_DMAMUX_CHANNEL_4 + * @arg @ref LL_DMAMUX_CHANNEL_5 (**** only available on some devices ****) + * @arg @ref LL_DMAMUX_CHANNEL_6 (**** only available on some devices ****) + * + * @arg All the next values are only available on chip which support DMA2: + * @arg @ref LL_DMAMUX_CHANNEL_7 + * @arg @ref LL_DMAMUX_CHANNEL_8 + * @arg @ref LL_DMAMUX_CHANNEL_9 + * @arg @ref LL_DMAMUX_CHANNEL_10 + * @arg @ref LL_DMAMUX_CHANNEL_11 + * @retval Returned value can be one of the following values: + * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE0 + * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE1 + * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE2 + * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE3 + * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE4 + * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE5 + * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE6 + * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE7 + * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE8 + * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE9 + * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE10 + * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE11 + * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE12 + * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE13 + * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE14 + * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE15 + * @arg @ref LL_DMAMUX_SYNC_DMAMUX_CH0 + * @arg @ref LL_DMAMUX_SYNC_DMAMUX_CH1 + * @arg @ref LL_DMAMUX_SYNC_DMAMUX_CH2 + * @arg @ref LL_DMAMUX_SYNC_DMAMUX_CH3 + * @arg @ref LL_DMAMUX_SYNC_LPTIM1_OUT + * @arg @ref LL_DMAMUX_SYNC_LPTIM2_OUT + * @arg @ref LL_DMAMUX_SYNC_TIM14_OC + */ +__STATIC_INLINE uint32_t LL_DMAMUX_GetSyncID(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel) +{ + (void)(DMAMUXx); + return (uint32_t)(READ_BIT((DMAMUX1_Channel0 + Channel)->CCR, DMAMUX_CxCR_SYNC_ID)); +} + +/** + * @brief Enable the Request Generator. + * @rmtoll RGxCR GE LL_DMAMUX_EnableRequestGen + * @param DMAMUXx DMAMUXx Instance + * @param RequestGenChannel This parameter can be one of the following values: + * @arg @ref LL_DMAMUX_REQ_GEN_0 + * @arg @ref LL_DMAMUX_REQ_GEN_1 + * @arg @ref LL_DMAMUX_REQ_GEN_2 + * @arg @ref LL_DMAMUX_REQ_GEN_3 + * @retval None + */ +__STATIC_INLINE void LL_DMAMUX_EnableRequestGen(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t RequestGenChannel) +{ + (void)(DMAMUXx); + SET_BIT(((DMAMUX_RequestGen_TypeDef *)((uint32_t)((uint32_t)DMAMUX1_RequestGenerator0 + (DMAMUX_RGCR_SIZE * + (RequestGenChannel)))))->RGCR, DMAMUX_RGxCR_GE); +} + +/** + * @brief Disable the Request Generator. + * @rmtoll RGxCR GE LL_DMAMUX_DisableRequestGen + * @param DMAMUXx DMAMUXx Instance + * @param RequestGenChannel This parameter can be one of the following values: + * @arg @ref LL_DMAMUX_REQ_GEN_0 + * @arg @ref LL_DMAMUX_REQ_GEN_1 + * @arg @ref LL_DMAMUX_REQ_GEN_2 + * @arg @ref LL_DMAMUX_REQ_GEN_3 + * @retval None + */ +__STATIC_INLINE void LL_DMAMUX_DisableRequestGen(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t RequestGenChannel) +{ + (void)(DMAMUXx); + CLEAR_BIT(((DMAMUX_RequestGen_TypeDef *)((uint32_t)((uint32_t)DMAMUX1_RequestGenerator0 + (DMAMUX_RGCR_SIZE * + (RequestGenChannel)))))->RGCR, DMAMUX_RGxCR_GE); +} + +/** + * @brief Check if the Request Generator is enabled or disabled. + * @rmtoll RGxCR GE LL_DMAMUX_IsEnabledRequestGen + * @param DMAMUXx DMAMUXx Instance + * @param RequestGenChannel This parameter can be one of the following values: + * @arg @ref LL_DMAMUX_REQ_GEN_0 + * @arg @ref LL_DMAMUX_REQ_GEN_1 + * @arg @ref LL_DMAMUX_REQ_GEN_2 + * @arg @ref LL_DMAMUX_REQ_GEN_3 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMAMUX_IsEnabledRequestGen(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t RequestGenChannel) +{ + (void)(DMAMUXx); + return ((READ_BIT(((DMAMUX_RequestGen_TypeDef *)((uint32_t)((uint32_t)DMAMUX1_RequestGenerator0 + (DMAMUX_RGCR_SIZE * + (RequestGenChannel)))))->RGCR, DMAMUX_RGxCR_GE) == (DMAMUX_RGxCR_GE)) ? 1UL : 0UL); +} + +/** + * @brief Set the polarity of the signal on which the DMA request is generated. + * @rmtoll RGxCR GPOL LL_DMAMUX_SetRequestGenPolarity + * @param DMAMUXx DMAMUXx Instance + * @param RequestGenChannel This parameter can be one of the following values: + * @arg @ref LL_DMAMUX_REQ_GEN_0 + * @arg @ref LL_DMAMUX_REQ_GEN_1 + * @arg @ref LL_DMAMUX_REQ_GEN_2 + * @arg @ref LL_DMAMUX_REQ_GEN_3 + * @param Polarity This parameter can be one of the following values: + * @arg @ref LL_DMAMUX_REQ_GEN_NO_EVENT + * @arg @ref LL_DMAMUX_REQ_GEN_POL_RISING + * @arg @ref LL_DMAMUX_REQ_GEN_POL_FALLING + * @arg @ref LL_DMAMUX_REQ_GEN_POL_RISING_FALLING + * @retval None + */ +__STATIC_INLINE void LL_DMAMUX_SetRequestGenPolarity(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t RequestGenChannel, + uint32_t Polarity) +{ + (void)(DMAMUXx); + MODIFY_REG(((DMAMUX_RequestGen_TypeDef *)((uint32_t)((uint32_t)DMAMUX1_RequestGenerator0 + (DMAMUX_RGCR_SIZE * + (RequestGenChannel)))))->RGCR, DMAMUX_RGxCR_GPOL, Polarity); +} + +/** + * @brief Get the polarity of the signal on which the DMA request is generated. + * @rmtoll RGxCR GPOL LL_DMAMUX_GetRequestGenPolarity + * @param DMAMUXx DMAMUXx Instance + * @param RequestGenChannel This parameter can be one of the following values: + * @arg @ref LL_DMAMUX_REQ_GEN_0 + * @arg @ref LL_DMAMUX_REQ_GEN_1 + * @arg @ref LL_DMAMUX_REQ_GEN_2 + * @arg @ref LL_DMAMUX_REQ_GEN_3 + * @retval Returned value can be one of the following values: + * @arg @ref LL_DMAMUX_REQ_GEN_NO_EVENT + * @arg @ref LL_DMAMUX_REQ_GEN_POL_RISING + * @arg @ref LL_DMAMUX_REQ_GEN_POL_FALLING + * @arg @ref LL_DMAMUX_REQ_GEN_POL_RISING_FALLING + */ +__STATIC_INLINE uint32_t LL_DMAMUX_GetRequestGenPolarity(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t RequestGenChannel) +{ + (void)(DMAMUXx); + return (uint32_t)(READ_BIT(((DMAMUX_RequestGen_TypeDef *)((uint32_t)((uint32_t)DMAMUX1_RequestGenerator0 + + (DMAMUX_RGCR_SIZE * (RequestGenChannel)))))->RGCR, DMAMUX_RGxCR_GPOL)); +} + +/** + * @brief Set the number of DMA request that will be autorized after a generation event. + * @note This field can only be written when Generator is disabled. + * @rmtoll RGxCR GNBREQ LL_DMAMUX_SetGenRequestNb + * @param DMAMUXx DMAMUXx Instance + * @param RequestGenChannel This parameter can be one of the following values: + * @arg @ref LL_DMAMUX_REQ_GEN_0 + * @arg @ref LL_DMAMUX_REQ_GEN_1 + * @arg @ref LL_DMAMUX_REQ_GEN_2 + * @arg @ref LL_DMAMUX_REQ_GEN_3 + * @param RequestNb This parameter must be a value between Min_Data = 1 and Max_Data = 32. + * @retval None + */ +__STATIC_INLINE void LL_DMAMUX_SetGenRequestNb(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t RequestGenChannel, + uint32_t RequestNb) +{ + (void)(DMAMUXx); + MODIFY_REG(((DMAMUX_RequestGen_TypeDef *)((uint32_t)((uint32_t)DMAMUX1_RequestGenerator0 + (DMAMUX_RGCR_SIZE * + (RequestGenChannel)))))->RGCR, DMAMUX_RGxCR_GNBREQ, (RequestNb - 1U) << DMAMUX_RGxCR_GNBREQ_Pos); +} + +/** + * @brief Get the number of DMA request that will be autorized after a generation event. + * @rmtoll RGxCR GNBREQ LL_DMAMUX_GetGenRequestNb + * @param DMAMUXx DMAMUXx Instance + * @param RequestGenChannel This parameter can be one of the following values: + * @arg @ref LL_DMAMUX_REQ_GEN_0 + * @arg @ref LL_DMAMUX_REQ_GEN_1 + * @arg @ref LL_DMAMUX_REQ_GEN_2 + * @arg @ref LL_DMAMUX_REQ_GEN_3 + * @retval Between Min_Data = 1 and Max_Data = 32 + */ +__STATIC_INLINE uint32_t LL_DMAMUX_GetGenRequestNb(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t RequestGenChannel) +{ + (void)(DMAMUXx); + return (uint32_t)((READ_BIT(((DMAMUX_RequestGen_TypeDef *)((uint32_t)((uint32_t)DMAMUX1_RequestGenerator0 + + (DMAMUX_RGCR_SIZE * (RequestGenChannel)))))->RGCR, DMAMUX_RGxCR_GNBREQ) >> DMAMUX_RGxCR_GNBREQ_Pos) + 1U); +} + +/** + * @brief Set DMAMUX external Request Signal ID on DMAMUX Request Generation Trigger Event Channel x. + * @rmtoll RGxCR SIG_ID LL_DMAMUX_SetRequestSignalID + * @param DMAMUXx DMAMUXx Instance + * @param RequestGenChannel This parameter can be one of the following values: + * @arg @ref LL_DMAMUX_REQ_GEN_0 + * @arg @ref LL_DMAMUX_REQ_GEN_1 + * @arg @ref LL_DMAMUX_REQ_GEN_2 + * @arg @ref LL_DMAMUX_REQ_GEN_3 + * @param RequestSignalID This parameter can be one of the following values: + * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE0 + * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE1 + * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE2 + * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE3 + * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE4 + * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE5 + * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE6 + * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE7 + * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE8 + * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE9 + * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE10 + * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE11 + * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE12 + * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE13 + * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE14 + * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE15 + * @arg @ref LL_DMAMUX_REQ_GEN_DMAMUX_CH0 + * @arg @ref LL_DMAMUX_REQ_GEN_DMAMUX_CH1 + * @arg @ref LL_DMAMUX_REQ_GEN_DMAMUX_CH2 + * @arg @ref LL_DMAMUX_REQ_GEN_DMAMUX_CH3 + * @arg @ref LL_DMAMUX_REQ_GEN_LPTIM1_OUT + * @arg @ref LL_DMAMUX_REQ_GEN_LPTIM2_OUT + * @arg @ref LL_DMAMUX_REQ_GEN_TIM14_OC + * @retval None + */ +__STATIC_INLINE void LL_DMAMUX_SetRequestSignalID(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t RequestGenChannel, + uint32_t RequestSignalID) +{ + (void)(DMAMUXx); + MODIFY_REG(((DMAMUX_RequestGen_TypeDef *)((uint32_t)((uint32_t)DMAMUX1_RequestGenerator0 + (DMAMUX_RGCR_SIZE * + (RequestGenChannel)))))->RGCR, DMAMUX_RGxCR_SIG_ID, RequestSignalID); +} + +/** + * @brief Get DMAMUX external Request Signal ID set on DMAMUX Channel x. + * @rmtoll RGxCR SIG_ID LL_DMAMUX_GetRequestSignalID + * @param DMAMUXx DMAMUXx Instance + * @param RequestGenChannel This parameter can be one of the following values: + * @arg @ref LL_DMAMUX_REQ_GEN_0 + * @arg @ref LL_DMAMUX_REQ_GEN_1 + * @arg @ref LL_DMAMUX_REQ_GEN_2 + * @arg @ref LL_DMAMUX_REQ_GEN_3 + * @retval Returned value can be one of the following values: + * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE0 + * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE1 + * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE2 + * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE3 + * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE4 + * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE5 + * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE6 + * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE7 + * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE8 + * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE9 + * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE10 + * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE11 + * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE12 + * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE13 + * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE14 + * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE15 + * @arg @ref LL_DMAMUX_REQ_GEN_DMAMUX_CH0 + * @arg @ref LL_DMAMUX_REQ_GEN_DMAMUX_CH1 + * @arg @ref LL_DMAMUX_REQ_GEN_DMAMUX_CH2 + * @arg @ref LL_DMAMUX_REQ_GEN_DMAMUX_CH3 + * @arg @ref LL_DMAMUX_REQ_GEN_LPTIM1_OUT + * @arg @ref LL_DMAMUX_REQ_GEN_LPTIM2_OUT + * @arg @ref LL_DMAMUX_REQ_GEN_TIM14_OC + */ +__STATIC_INLINE uint32_t LL_DMAMUX_GetRequestSignalID(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t RequestGenChannel) +{ + (void)(DMAMUXx); + return (uint32_t)(READ_BIT(((DMAMUX_RequestGen_TypeDef *)((uint32_t)((uint32_t)DMAMUX1_RequestGenerator0 + + (DMAMUX_RGCR_SIZE * (RequestGenChannel)))))->RGCR, DMAMUX_RGxCR_SIG_ID)); +} + +/** + * @} + */ + +/** @defgroup DMAMUX_LL_EF_FLAG_Management FLAG_Management + * @{ + */ + +/** + * @brief Get Synchronization Event Overrun Flag Channel 0. + * @rmtoll CSR SOF0 LL_DMAMUX_IsActiveFlag_SO0 + * @param DMAMUXx DMAMUXx DMAMUXx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO0(DMAMUX_Channel_TypeDef *DMAMUXx) +{ + (void)(DMAMUXx); + return ((READ_BIT(DMAMUX1_ChannelStatus->CSR, DMAMUX_CSR_SOF0) == (DMAMUX_CSR_SOF0)) ? 1UL : 0UL); +} + +/** + * @brief Get Synchronization Event Overrun Flag Channel 1. + * @rmtoll CSR SOF1 LL_DMAMUX_IsActiveFlag_SO1 + * @param DMAMUXx DMAMUXx DMAMUXx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO1(DMAMUX_Channel_TypeDef *DMAMUXx) +{ + (void)(DMAMUXx); + return ((READ_BIT(DMAMUX1_ChannelStatus->CSR, DMAMUX_CSR_SOF1) == (DMAMUX_CSR_SOF1)) ? 1UL : 0UL); +} + +/** + * @brief Get Synchronization Event Overrun Flag Channel 2. + * @rmtoll CSR SOF2 LL_DMAMUX_IsActiveFlag_SO2 + * @param DMAMUXx DMAMUXx DMAMUXx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO2(DMAMUX_Channel_TypeDef *DMAMUXx) +{ + (void)(DMAMUXx); + return ((READ_BIT(DMAMUX1_ChannelStatus->CSR, DMAMUX_CSR_SOF2) == (DMAMUX_CSR_SOF2)) ? 1UL : 0UL); +} + +/** + * @brief Get Synchronization Event Overrun Flag Channel 3. + * @rmtoll CSR SOF3 LL_DMAMUX_IsActiveFlag_SO3 + * @param DMAMUXx DMAMUXx DMAMUXx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO3(DMAMUX_Channel_TypeDef *DMAMUXx) +{ + (void)(DMAMUXx); + return ((READ_BIT(DMAMUX1_ChannelStatus->CSR, DMAMUX_CSR_SOF3) == (DMAMUX_CSR_SOF3)) ? 1UL : 0UL); +} + +/** + * @brief Get Synchronization Event Overrun Flag Channel 4. + * @rmtoll CSR SOF4 LL_DMAMUX_IsActiveFlag_SO4 + * @param DMAMUXx DMAMUXx DMAMUXx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO4(DMAMUX_Channel_TypeDef *DMAMUXx) +{ + (void)(DMAMUXx); + return ((READ_BIT(DMAMUX1_ChannelStatus->CSR, DMAMUX_CSR_SOF4) == (DMAMUX_CSR_SOF4)) ? 1UL : 0UL); +} + +#if defined(DMAMUX1_Channel5) +/** + * @brief Get Synchronization Event Overrun Flag Channel 5. + * @rmtoll CSR SOF5 LL_DMAMUX_IsActiveFlag_SO5 + * @param DMAMUXx DMAMUXx DMAMUXx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO5(DMAMUX_Channel_TypeDef *DMAMUXx) +{ + (void)(DMAMUXx); + return ((READ_BIT(DMAMUX1_ChannelStatus->CSR, DMAMUX_CSR_SOF5) == (DMAMUX_CSR_SOF5)) ? 1UL : 0UL); +} + +#endif /* DMAMUX1_Channel5 */ +#if defined(DMAMUX1_Channel6) +/** + * @brief Get Synchronization Event Overrun Flag Channel 6. + * @rmtoll CSR SOF6 LL_DMAMUX_IsActiveFlag_SO6 + * @param DMAMUXx DMAMUXx DMAMUXx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO6(DMAMUX_Channel_TypeDef *DMAMUXx) +{ + (void)(DMAMUXx); + return ((READ_BIT(DMAMUX1_ChannelStatus->CSR, DMAMUX_CSR_SOF6) == (DMAMUX_CSR_SOF6)) ? 1UL : 0UL); +} + +#endif /* DMAMUX1_Channel6 */ +#if defined(DMAMUX1_Channel7) +/** + * @brief Get Synchronization Event Overrun Flag Channel 7. + * @rmtoll CSR SOF7 LL_DMAMUX_IsActiveFlag_SO7 + * @param DMAMUXx DMAMUXx DMAMUXx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO7(DMAMUX_Channel_TypeDef *DMAMUXx) +{ + (void)(DMAMUXx); + return ((READ_BIT(DMAMUX1_ChannelStatus->CSR, DMAMUX_CSR_SOF7) == (DMAMUX_CSR_SOF7)) ? 1UL : 0UL); +} + +#endif /* DMAMUX1_Channel7 */ +#if defined(DMAMUX1_Channel8) +/** + * @brief Get Synchronization Event Overrun Flag Channel 8. + * @rmtoll CSR SOF8 LL_DMAMUX_IsActiveFlag_SO8 + * @param DMAMUXx DMAMUXx DMAMUXx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO8(DMAMUX_Channel_TypeDef *DMAMUXx) +{ + (void)(DMAMUXx); + return ((READ_BIT(DMAMUX1_ChannelStatus->CSR, DMAMUX_CSR_SOF8) == (DMAMUX_CSR_SOF8)) ? 1UL : 0UL); +} + +#endif /* DMAMUX1_Channel8 */ +#if defined(DMAMUX1_Channel9) +/** + * @brief Get Synchronization Event Overrun Flag Channel 9. + * @rmtoll CSR SOF9 LL_DMAMUX_IsActiveFlag_SO9 + * @param DMAMUXx DMAMUXx DMAMUXx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO9(DMAMUX_Channel_TypeDef *DMAMUXx) +{ + (void)(DMAMUXx); + return ((READ_BIT(DMAMUX1_ChannelStatus->CSR, DMAMUX_CSR_SOF9) == (DMAMUX_CSR_SOF9)) ? 1UL : 0UL); +} + +#endif /* DMAMUX1_Channel9 */ +#if defined(DMAMUX1_Channel10) +/** + * @brief Get Synchronization Event Overrun Flag Channel 10. + * @rmtoll CSR SOF10 LL_DMAMUX_IsActiveFlag_SO10 + * @param DMAMUXx DMAMUXx DMAMUXx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO10(DMAMUX_Channel_TypeDef *DMAMUXx) +{ + (void)(DMAMUXx); + return ((READ_BIT(DMAMUX1_ChannelStatus->CSR, DMAMUX_CSR_SOF10) == (DMAMUX_CSR_SOF10)) ? 1UL : 0UL); +} + +#endif /* DMAMUX1_Channel10 */ +#if defined(DMAMUX1_Channel11) +/** + * @brief Get Synchronization Event Overrun Flag Channel 11. + * @rmtoll CSR SOF11 LL_DMAMUX_IsActiveFlag_SO11 + * @param DMAMUXx DMAMUXx DMAMUXx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO11(DMAMUX_Channel_TypeDef *DMAMUXx) +{ + (void)(DMAMUXx); + return ((READ_BIT(DMAMUX1_ChannelStatus->CSR, DMAMUX_CSR_SOF11) == (DMAMUX_CSR_SOF11)) ? 1UL : 0UL); +} + +#endif /* DMAMUX1_Channel11 */ +/** + * @brief Get Request Generator 0 Trigger Event Overrun Flag. + * @rmtoll RGSR OF0 LL_DMAMUX_IsActiveFlag_RGO0 + * @param DMAMUXx DMAMUXx DMAMUXx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_RGO0(DMAMUX_Channel_TypeDef *DMAMUXx) +{ + (void)(DMAMUXx); + return ((READ_BIT(DMAMUX1_RequestGenStatus->RGSR, DMAMUX_RGSR_OF0) == (DMAMUX_RGSR_OF0)) ? 1UL : 0UL); +} + +/** + * @brief Get Request Generator 1 Trigger Event Overrun Flag. + * @rmtoll RGSR OF1 LL_DMAMUX_IsActiveFlag_RGO1 + * @param DMAMUXx DMAMUXx DMAMUXx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_RGO1(DMAMUX_Channel_TypeDef *DMAMUXx) +{ + (void)(DMAMUXx); + return ((READ_BIT(DMAMUX1_RequestGenStatus->RGSR, DMAMUX_RGSR_OF1) == (DMAMUX_RGSR_OF1)) ? 1UL : 0UL); +} + +/** + * @brief Get Request Generator 2 Trigger Event Overrun Flag. + * @rmtoll RGSR OF2 LL_DMAMUX_IsActiveFlag_RGO2 + * @param DMAMUXx DMAMUXx DMAMUXx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_RGO2(DMAMUX_Channel_TypeDef *DMAMUXx) +{ + (void)(DMAMUXx); + return ((READ_BIT(DMAMUX1_RequestGenStatus->RGSR, DMAMUX_RGSR_OF2) == (DMAMUX_RGSR_OF2)) ? 1UL : 0UL); +} + +/** + * @brief Get Request Generator 3 Trigger Event Overrun Flag. + * @rmtoll RGSR OF3 LL_DMAMUX_IsActiveFlag_RGO3 + * @param DMAMUXx DMAMUXx DMAMUXx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_RGO3(DMAMUX_Channel_TypeDef *DMAMUXx) +{ + (void)(DMAMUXx); + return ((READ_BIT(DMAMUX1_RequestGenStatus->RGSR, DMAMUX_RGSR_OF3) == (DMAMUX_RGSR_OF3)) ? 1UL : 0UL); +} + +/** + * @brief Clear Synchronization Event Overrun Flag Channel 0. + * @rmtoll CFR CSOF0 LL_DMAMUX_ClearFlag_SO0 + * @param DMAMUXx DMAMUXx DMAMUXx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMAMUX_ClearFlag_SO0(DMAMUX_Channel_TypeDef *DMAMUXx) +{ + (void)(DMAMUXx); + SET_BIT(DMAMUX1_ChannelStatus->CFR, DMAMUX_CFR_CSOF0); +} + +/** + * @brief Clear Synchronization Event Overrun Flag Channel 1. + * @rmtoll CFR CSOF1 LL_DMAMUX_ClearFlag_SO1 + * @param DMAMUXx DMAMUXx DMAMUXx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMAMUX_ClearFlag_SO1(DMAMUX_Channel_TypeDef *DMAMUXx) +{ + (void)(DMAMUXx); + SET_BIT(DMAMUX1_ChannelStatus->CFR, DMAMUX_CFR_CSOF1); +} + +/** + * @brief Clear Synchronization Event Overrun Flag Channel 2. + * @rmtoll CFR CSOF2 LL_DMAMUX_ClearFlag_SO2 + * @param DMAMUXx DMAMUXx DMAMUXx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMAMUX_ClearFlag_SO2(DMAMUX_Channel_TypeDef *DMAMUXx) +{ + (void)(DMAMUXx); + SET_BIT(DMAMUX1_ChannelStatus->CFR, DMAMUX_CFR_CSOF2); +} + +/** + * @brief Clear Synchronization Event Overrun Flag Channel 3. + * @rmtoll CFR CSOF3 LL_DMAMUX_ClearFlag_SO3 + * @param DMAMUXx DMAMUXx DMAMUXx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMAMUX_ClearFlag_SO3(DMAMUX_Channel_TypeDef *DMAMUXx) +{ + (void)(DMAMUXx); + SET_BIT(DMAMUX1_ChannelStatus->CFR, DMAMUX_CFR_CSOF3); +} + +/** + * @brief Clear Synchronization Event Overrun Flag Channel 4. + * @rmtoll CFR CSOF4 LL_DMAMUX_ClearFlag_SO4 + * @param DMAMUXx DMAMUXx DMAMUXx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMAMUX_ClearFlag_SO4(DMAMUX_Channel_TypeDef *DMAMUXx) +{ + (void)(DMAMUXx); + SET_BIT(DMAMUX1_ChannelStatus->CFR, DMAMUX_CFR_CSOF4); +} + +#if defined(DMAMUX1_Channel5) +/** + * @brief Clear Synchronization Event Overrun Flag Channel 5. + * @rmtoll CFR CSOF5 LL_DMAMUX_ClearFlag_SO5 + * @param DMAMUXx DMAMUXx DMAMUXx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMAMUX_ClearFlag_SO5(DMAMUX_Channel_TypeDef *DMAMUXx) +{ + (void)(DMAMUXx); + SET_BIT(DMAMUX1_ChannelStatus->CFR, DMAMUX_CFR_CSOF5); +} + +#endif /* DMAMUX1_Channel5 */ +#if defined(DMAMUX1_Channel6) +/** + * @brief Clear Synchronization Event Overrun Flag Channel 6. + * @rmtoll CFR CSOF6 LL_DMAMUX_ClearFlag_SO6 + * @param DMAMUXx DMAMUXx DMAMUXx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMAMUX_ClearFlag_SO6(DMAMUX_Channel_TypeDef *DMAMUXx) +{ + (void)(DMAMUXx); + SET_BIT(DMAMUX1_ChannelStatus->CFR, DMAMUX_CFR_CSOF6); +} + +#endif /* DMAMUX1_Channel6 */ +#if defined(DMAMUX1_Channel7) +/** + * @brief Clear Synchronization Event Overrun Flag Channel 7. + * @rmtoll CFR CSOF7 LL_DMAMUX_ClearFlag_SO7 + * @param DMAMUXx DMAMUXx DMAMUXx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMAMUX_ClearFlag_SO7(DMAMUX_Channel_TypeDef *DMAMUXx) +{ + (void)(DMAMUXx); + SET_BIT(DMAMUX1_ChannelStatus->CFR, DMAMUX_CFR_CSOF7); +} + +#endif /* DMAMUX1_Channel7 */ +#if defined(DMAMUX1_Channel8) +/** + * @brief Clear Synchronization Event Overrun Flag Channel 8. + * @rmtoll CFR CSOF8 LL_DMAMUX_ClearFlag_SO8 + * @param DMAMUXx DMAMUXx DMAMUXx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMAMUX_ClearFlag_SO8(DMAMUX_Channel_TypeDef *DMAMUXx) +{ + (void)(DMAMUXx); + SET_BIT(DMAMUX1_ChannelStatus->CFR, DMAMUX_CFR_CSOF8); +} + +#endif /* DMAMUX1_Channel8 */ +#if defined(DMAMUX1_Channel9) +/** + * @brief Clear Synchronization Event Overrun Flag Channel 9. + * @rmtoll CFR CSOF9 LL_DMAMUX_ClearFlag_SO9 + * @param DMAMUXx DMAMUXx DMAMUXx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMAMUX_ClearFlag_SO9(DMAMUX_Channel_TypeDef *DMAMUXx) +{ + (void)(DMAMUXx); + SET_BIT(DMAMUX1_ChannelStatus->CFR, DMAMUX_CFR_CSOF9); +} + +#endif /* DMAMUX1_Channel9 */ +#if defined(DMAMUX1_Channel10) +/** + * @brief Clear Synchronization Event Overrun Flag Channel 10. + * @rmtoll CFR CSOF10 LL_DMAMUX_ClearFlag_SO10 + * @param DMAMUXx DMAMUXx DMAMUXx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMAMUX_ClearFlag_SO10(DMAMUX_Channel_TypeDef *DMAMUXx) +{ + (void)(DMAMUXx); + SET_BIT(DMAMUX1_ChannelStatus->CFR, DMAMUX_CFR_CSOF10); +} + +#endif /* DMAMUX1_Channel10 */ +#if defined(DMAMUX1_Channel11) +/** + * @brief Clear Synchronization Event Overrun Flag Channel 11. + * @rmtoll CFR CSOF11 LL_DMAMUX_ClearFlag_SO11 + * @param DMAMUXx DMAMUXx DMAMUXx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMAMUX_ClearFlag_SO11(DMAMUX_Channel_TypeDef *DMAMUXx) +{ + (void)(DMAMUXx); + SET_BIT(DMAMUX1_ChannelStatus->CFR, DMAMUX_CFR_CSOF11); +} + +#endif /* DMAMUX1_Channel11 */ +/** + * @brief Clear Request Generator 0 Trigger Event Overrun Flag. + * @rmtoll RGCFR COF0 LL_DMAMUX_ClearFlag_RGO0 + * @param DMAMUXx DMAMUXx DMAMUXx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMAMUX_ClearFlag_RGO0(DMAMUX_Channel_TypeDef *DMAMUXx) +{ + (void)(DMAMUXx); + SET_BIT(DMAMUX1_RequestGenStatus->RGCFR, DMAMUX_RGCFR_COF0); +} + +/** + * @brief Clear Request Generator 1 Trigger Event Overrun Flag. + * @rmtoll RGCFR COF1 LL_DMAMUX_ClearFlag_RGO1 + * @param DMAMUXx DMAMUXx DMAMUXx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMAMUX_ClearFlag_RGO1(DMAMUX_Channel_TypeDef *DMAMUXx) +{ + (void)(DMAMUXx); + SET_BIT(DMAMUX1_RequestGenStatus->RGCFR, DMAMUX_RGCFR_COF1); +} + +/** + * @brief Clear Request Generator 2 Trigger Event Overrun Flag. + * @rmtoll RGCFR COF2 LL_DMAMUX_ClearFlag_RGO2 + * @param DMAMUXx DMAMUXx DMAMUXx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMAMUX_ClearFlag_RGO2(DMAMUX_Channel_TypeDef *DMAMUXx) +{ + (void)(DMAMUXx); + SET_BIT(DMAMUX1_RequestGenStatus->RGCFR, DMAMUX_RGCFR_COF2); +} + +/** + * @brief Clear Request Generator 3 Trigger Event Overrun Flag. + * @rmtoll RGCFR COF3 LL_DMAMUX_ClearFlag_RGO3 + * @param DMAMUXx DMAMUXx DMAMUXx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMAMUX_ClearFlag_RGO3(DMAMUX_Channel_TypeDef *DMAMUXx) +{ + (void)(DMAMUXx); + SET_BIT(DMAMUX1_RequestGenStatus->RGCFR, DMAMUX_RGCFR_COF3); +} + +/** + * @} + */ + +/** @defgroup DMAMUX_LL_EF_IT_Management IT_Management + * @{ + */ + +/** + * @brief Enable the Synchronization Event Overrun Interrupt on DMAMUX channel x. + * @note DMAMUX channel 0 to 6 are mapped to DMA1 channel 1 to 7. + * DMAMUX channel 7 to 11 are mapped to DMA2 channel 1 to 5 (**** only available on chip which support DMA2 ****). + * @rmtoll CxCR SOIE LL_DMAMUX_EnableIT_SO + * @param DMAMUXx DMAMUXx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMAMUX_CHANNEL_0 + * @arg @ref LL_DMAMUX_CHANNEL_1 + * @arg @ref LL_DMAMUX_CHANNEL_2 + * @arg @ref LL_DMAMUX_CHANNEL_3 + * @arg @ref LL_DMAMUX_CHANNEL_4 + * @arg @ref LL_DMAMUX_CHANNEL_5 (**** only available on some devices ****) + * @arg @ref LL_DMAMUX_CHANNEL_6 (**** only available on some devices ****) + * + * @arg All the next values are only available on chip which support DMA2: + * @arg @ref LL_DMAMUX_CHANNEL_7 + * @arg @ref LL_DMAMUX_CHANNEL_8 + * @arg @ref LL_DMAMUX_CHANNEL_9 + * @arg @ref LL_DMAMUX_CHANNEL_10 + * @arg @ref LL_DMAMUX_CHANNEL_11 + * @retval None + */ +__STATIC_INLINE void LL_DMAMUX_EnableIT_SO(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel) +{ + (void)(DMAMUXx); + SET_BIT((DMAMUX1_Channel0 + Channel)->CCR, DMAMUX_CxCR_SOIE); +} + +/** + * @brief Disable the Synchronization Event Overrun Interrupt on DMAMUX channel x. + * @note DMAMUX channel 0 to 6 are mapped to DMA1 channel 1 to 7. + * DMAMUX channel 7 to 11 are mapped to DMA2 channel 1 to 5 (**** only available on chip which support DMA2 ****). + * @rmtoll CxCR SOIE LL_DMAMUX_DisableIT_SO + * @param DMAMUXx DMAMUXx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMAMUX_CHANNEL_0 + * @arg @ref LL_DMAMUX_CHANNEL_1 + * @arg @ref LL_DMAMUX_CHANNEL_2 + * @arg @ref LL_DMAMUX_CHANNEL_3 + * @arg @ref LL_DMAMUX_CHANNEL_4 + * @arg @ref LL_DMAMUX_CHANNEL_5 (**** only available on some devices ****) + * @arg @ref LL_DMAMUX_CHANNEL_6 (**** only available on some devices ****) + * + * @arg All the next values are only available on chip which support DMA2: + * @arg @ref LL_DMAMUX_CHANNEL_7 + * @arg @ref LL_DMAMUX_CHANNEL_8 + * @arg @ref LL_DMAMUX_CHANNEL_9 + * @arg @ref LL_DMAMUX_CHANNEL_10 + * @arg @ref LL_DMAMUX_CHANNEL_11 + * @retval None + */ +__STATIC_INLINE void LL_DMAMUX_DisableIT_SO(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel) +{ + (void)(DMAMUXx); + CLEAR_BIT((DMAMUX1_Channel0 + Channel)->CCR, DMAMUX_CxCR_SOIE); +} + +/** + * @brief Check if the Synchronization Event Overrun Interrupt on DMAMUX channel x is enabled or disabled. + * @note DMAMUX channel 0 to 6 are mapped to DMA1 channel 1 to 7. + * DMAMUX channel 7 to 11 are mapped to DMA2 channel 1 to 5 (**** only available on chip which support DMA2 ****). + * @rmtoll CxCR SOIE LL_DMAMUX_IsEnabledIT_SO + * @param DMAMUXx DMAMUXx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMAMUX_CHANNEL_0 + * @arg @ref LL_DMAMUX_CHANNEL_1 + * @arg @ref LL_DMAMUX_CHANNEL_2 + * @arg @ref LL_DMAMUX_CHANNEL_3 + * @arg @ref LL_DMAMUX_CHANNEL_4 + * @arg @ref LL_DMAMUX_CHANNEL_5 (**** only available on some devices ****) + * @arg @ref LL_DMAMUX_CHANNEL_6 (**** only available on some devices ****) + * + * @arg All the next values are only available on chip which support DMA2: + * @arg @ref LL_DMAMUX_CHANNEL_7 + * @arg @ref LL_DMAMUX_CHANNEL_8 + * @arg @ref LL_DMAMUX_CHANNEL_9 + * @arg @ref LL_DMAMUX_CHANNEL_10 + * @arg @ref LL_DMAMUX_CHANNEL_11 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMAMUX_IsEnabledIT_SO(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel) +{ + (void)(DMAMUXx); + return (((READ_BIT((DMAMUX1_Channel0 + Channel)->CCR, DMAMUX_CxCR_SOIE)) == (DMAMUX_CxCR_SOIE)) ? 1UL : 0UL); +} + +/** + * @brief Enable the Request Generation Trigger Event Overrun Interrupt on DMAMUX channel x. + * @rmtoll RGxCR OIE LL_DMAMUX_EnableIT_RGO + * @param DMAMUXx DMAMUXx Instance + * @param RequestGenChannel This parameter can be one of the following values: + * @arg @ref LL_DMAMUX_REQ_GEN_0 + * @arg @ref LL_DMAMUX_REQ_GEN_1 + * @arg @ref LL_DMAMUX_REQ_GEN_2 + * @arg @ref LL_DMAMUX_REQ_GEN_3 + * @retval None + */ +__STATIC_INLINE void LL_DMAMUX_EnableIT_RGO(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t RequestGenChannel) +{ + (void)(DMAMUXx); + SET_BIT((DMAMUX1_RequestGenerator0 + RequestGenChannel)->RGCR, DMAMUX_RGxCR_OIE); +} + +/** + * @brief Disable the Request Generation Trigger Event Overrun Interrupt on DMAMUX channel x. + * @rmtoll RGxCR OIE LL_DMAMUX_DisableIT_RGO + * @param DMAMUXx DMAMUXx Instance + * @param RequestGenChannel This parameter can be one of the following values: + * @arg @ref LL_DMAMUX_REQ_GEN_0 + * @arg @ref LL_DMAMUX_REQ_GEN_1 + * @arg @ref LL_DMAMUX_REQ_GEN_2 + * @arg @ref LL_DMAMUX_REQ_GEN_3 + * @retval None + */ +__STATIC_INLINE void LL_DMAMUX_DisableIT_RGO(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t RequestGenChannel) +{ + (void)(DMAMUXx); + CLEAR_BIT((DMAMUX1_RequestGenerator0 + RequestGenChannel)->RGCR, DMAMUX_RGxCR_OIE); +} + +/** + * @brief Check if the Request Generation Trigger Event Overrun Interrupt on DMAMUX channel x is enabled or disabled. + * @rmtoll RGxCR OIE LL_DMAMUX_IsEnabledIT_RGO + * @param DMAMUXx DMAMUXx Instance + * @param RequestGenChannel This parameter can be one of the following values: + * @arg @ref LL_DMAMUX_REQ_GEN_0 + * @arg @ref LL_DMAMUX_REQ_GEN_1 + * @arg @ref LL_DMAMUX_REQ_GEN_2 + * @arg @ref LL_DMAMUX_REQ_GEN_3 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMAMUX_IsEnabledIT_RGO(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t RequestGenChannel) +{ + (void)(DMAMUXx); + return ((READ_BIT((DMAMUX1_RequestGenerator0 + RequestGenChannel)->RGCR, DMAMUX_RGxCR_OIE) == (DMAMUX_RGxCR_OIE)) ? 1UL : 0UL); +} + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* DMAMUX1 */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32G0xx_LL_DMAMUX_H */ + diff --git a/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_ll_exti.h b/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_ll_exti.h new file mode 100644 index 0000000..d63b0bc --- /dev/null +++ b/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_ll_exti.h @@ -0,0 +1,1557 @@ +/** + ****************************************************************************** + * @file stm32g0xx_ll_exti.h + * @author MCD Application Team + * @brief Header file of EXTI LL module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2018 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32G0xx_LL_EXTI_H +#define STM32G0xx_LL_EXTI_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32g0xx.h" + +/** @addtogroup STM32G0xx_LL_Driver + * @{ + */ + +#if defined (EXTI) + +/** @defgroup EXTI_LL EXTI + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +#define LL_EXTI_REGISTER_PINPOS_SHFT 16u /*!< Define used to shift pin position in EXTICR register */ + +/* Private Macros ------------------------------------------------------------*/ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup EXTI_LL_Private_Macros EXTI Private Macros + * @{ + */ +/** + * @} + */ +#endif /*USE_FULL_LL_DRIVER*/ +/* Exported types ------------------------------------------------------------*/ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup EXTI_LL_ES_INIT EXTI Exported Init structure + * @{ + */ +typedef struct +{ + + uint32_t Line_0_31; /*!< Specifies the EXTI lines to be enabled or disabled for Lines in range 0 to 31 + This parameter can be any combination of @ref EXTI_LL_EC_LINE */ +#if defined(STM32G081xx) || defined(STM32G071xx) || defined(STM32G0C1xx) || defined(STM32G0B1xx) || defined(STM32G0B0xx) + uint32_t Line_32_63; /*!< Specifies the EXTI lines to be enabled or disabled for Lines in range 32 to 63 + This parameter can be any combination of @ref EXTI_LL_EC_LINE */ +#endif /* STM32G081xx || STM32G071xx || STM32G0C1xx || STM32G0B1xx || STM32G0B0xx */ + FunctionalState LineCommand; /*!< Specifies the new state of the selected EXTI lines. + This parameter can be set either to ENABLE or DISABLE */ + + uint8_t Mode; /*!< Specifies the mode for the EXTI lines. + This parameter can be a value of @ref EXTI_LL_EC_MODE. */ + + uint8_t Trigger; /*!< Specifies the trigger signal active edge for the EXTI lines. + This parameter can be a value of @ref EXTI_LL_EC_TRIGGER. */ +} LL_EXTI_InitTypeDef; + +/** + * @} + */ +#endif /*USE_FULL_LL_DRIVER*/ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup EXTI_LL_Exported_Constants EXTI Exported Constants + * @{ + */ + +/** @defgroup EXTI_LL_EC_LINE LINE + * @{ + */ +#define LL_EXTI_LINE_0 EXTI_IMR1_IM0 /*!< Extended line 0 */ +#define LL_EXTI_LINE_1 EXTI_IMR1_IM1 /*!< Extended line 1 */ +#define LL_EXTI_LINE_2 EXTI_IMR1_IM2 /*!< Extended line 2 */ +#define LL_EXTI_LINE_3 EXTI_IMR1_IM3 /*!< Extended line 3 */ +#define LL_EXTI_LINE_4 EXTI_IMR1_IM4 /*!< Extended line 4 */ +#define LL_EXTI_LINE_5 EXTI_IMR1_IM5 /*!< Extended line 5 */ +#define LL_EXTI_LINE_6 EXTI_IMR1_IM6 /*!< Extended line 6 */ +#define LL_EXTI_LINE_7 EXTI_IMR1_IM7 /*!< Extended line 7 */ +#define LL_EXTI_LINE_8 EXTI_IMR1_IM8 /*!< Extended line 8 */ +#define LL_EXTI_LINE_9 EXTI_IMR1_IM9 /*!< Extended line 9 */ +#define LL_EXTI_LINE_10 EXTI_IMR1_IM10 /*!< Extended line 10 */ +#define LL_EXTI_LINE_11 EXTI_IMR1_IM11 /*!< Extended line 11 */ +#define LL_EXTI_LINE_12 EXTI_IMR1_IM12 /*!< Extended line 12 */ +#define LL_EXTI_LINE_13 EXTI_IMR1_IM13 /*!< Extended line 13 */ +#define LL_EXTI_LINE_14 EXTI_IMR1_IM14 /*!< Extended line 14 */ +#define LL_EXTI_LINE_15 EXTI_IMR1_IM15 /*!< Extended line 15 */ +#if defined(EXTI_IMR1_IM16) +#define LL_EXTI_LINE_16 EXTI_IMR1_IM16 /*!< Extended line 16 */ +#endif /* EXTI_IMR1_IM16 */ +#if defined(EXTI_IMR1_IM17) +#define LL_EXTI_LINE_17 EXTI_IMR1_IM17 /*!< Extended line 17 */ +#endif /* EXTI_IMR1_IM17 */ +#if defined(EXTI_IMR1_IM18) +#define LL_EXTI_LINE_18 EXTI_IMR1_IM18 /*!< Extended line 18 */ +#endif /* EXTI_IMR1_IM18 */ +#define LL_EXTI_LINE_19 EXTI_IMR1_IM19 /*!< Extended line 19 */ +#if defined(EXTI_IMR1_IM20) +#define LL_EXTI_LINE_20 EXTI_IMR1_IM20 /*!< Extended line 20 */ +#endif /* EXTI_IMR1_IM20 */ +#if defined(EXTI_IMR1_IM21) +#define LL_EXTI_LINE_21 EXTI_IMR1_IM21 /*!< Extended line 21 */ +#endif /* EXTI_IMR1_IM21 */ +#if defined(EXTI_IMR1_IM22) +#define LL_EXTI_LINE_22 EXTI_IMR1_IM22 /*!< Extended line 22 */ +#endif /* EXTI_IMR1_IM22 */ +#define LL_EXTI_LINE_23 EXTI_IMR1_IM23 /*!< Extended line 23 */ +#if defined(EXTI_IMR1_IM24) +#define LL_EXTI_LINE_24 EXTI_IMR1_IM24 /*!< Extended line 24 */ +#endif /* EXTI_IMR1_IM24 */ +#if defined(EXTI_IMR1_IM25) +#define LL_EXTI_LINE_25 EXTI_IMR1_IM25 /*!< Extended line 25 */ +#endif /* EXTI_IMR1_IM25 */ +#if defined(EXTI_IMR1_IM26) +#define LL_EXTI_LINE_26 EXTI_IMR1_IM26 /*!< Extended line 26 */ +#endif /* EXTI_IMR1_IM26 */ +#if defined(EXTI_IMR1_IM27) +#define LL_EXTI_LINE_27 EXTI_IMR1_IM27 /*!< Extended line 27 */ +#endif /* EXTI_IMR1_IM27 */ +#if defined(EXTI_IMR1_IM28) +#define LL_EXTI_LINE_28 EXTI_IMR1_IM28 /*!< Extended line 28 */ +#endif /* EXTI_IMR1_IM28 */ +#if defined(EXTI_IMR1_IM29) +#define LL_EXTI_LINE_29 EXTI_IMR1_IM29 /*!< Extended line 29 */ +#endif /* EXTI_IMR1_IM29 */ +#if defined(EXTI_IMR1_IM30) +#define LL_EXTI_LINE_30 EXTI_IMR1_IM30 /*!< Extended line 30 */ +#endif /* EXTI_IMR1_IM30 */ +#if defined(EXTI_IMR1_IM31) +#define LL_EXTI_LINE_31 EXTI_IMR1_IM31 /*!< Extended line 31 */ +#endif /* EXTI_IMR1_IM31 */ +#define LL_EXTI_LINE_ALL_0_31 EXTI_IMR1_IM /*!< All Extended line not reserved*/ + +#if defined(EXTI_IMR2_IM32) +#define LL_EXTI_LINE_32 EXTI_IMR2_IM32 /*!< Extended line 32 */ +#endif /* EXTI_IMR2_IM32 */ +#if defined(EXTI_IMR2_IM33) +#define LL_EXTI_LINE_33 EXTI_IMR2_IM33 /*!< Extended line 33 */ +#endif /* EXTI_IMR2_IM33 */ +#if defined(EXTI_IMR2_IM34) +#define LL_EXTI_LINE_34 EXTI_IMR2_IM34 /*!< Extended line 34 */ +#endif /* EXTI_IMR2_IM34 */ +#if defined(EXTI_IMR2_IM35) +#define LL_EXTI_LINE_35 EXTI_IMR2_IM35 /*!< Extended line 35 */ +#endif /* EXTI_IMR2_IM35 */ +#if defined(EXTI_IMR2_IM36) +#define LL_EXTI_LINE_36 EXTI_IMR2_IM36 /*!< Extended line 36 */ +#endif /* EXTI_IMR2_IM36 */ +#if defined(EXTI_IMR2_IM32) || defined(EXTI_IMR2_IM33) || defined(EXTI_IMR2_IM34) || defined(EXTI_IMR2_IM35) || defined(EXTI_IMR2_IM36) +#define LL_EXTI_LINE_ALL_32_63 EXTI_IMR2_IM /*!< All Extended line not reserved*/ +#endif /* EXTI_IMR2_IM32 || EXTI_IMR2_IM33 || EXTI_IMR2_IM34 || EXTI_IMR2_IM35 || EXTI_IMR2_IM36 */ + +#define LL_EXTI_LINE_ALL 0xFFFFFFFFU /*!< All Extended line */ + +#if defined(USE_FULL_LL_DRIVER) +#define LL_EXTI_LINE_NONE 0x00000000U /*!< None Extended line */ +#endif /*USE_FULL_LL_DRIVER*/ + +/** @defgroup EXTI_LL_EC_CONFIG_PORT EXTI CONFIG PORT + * @{ + */ +#define LL_EXTI_CONFIG_PORTA 0U /*!< EXTI PORT A */ +#define LL_EXTI_CONFIG_PORTB EXTI_EXTICR1_EXTI0_0 /*!< EXTI PORT B */ +#define LL_EXTI_CONFIG_PORTC EXTI_EXTICR1_EXTI0_1 /*!< EXTI PORT C */ +#if defined(GPIOD_BASE) +#define LL_EXTI_CONFIG_PORTD (EXTI_EXTICR1_EXTI0_1|EXTI_EXTICR1_EXTI0_0) /*!< EXTI PORT D */ +#endif /*GPIOD_BASE*/ +#if defined(GPIOE_BASE) +#define LL_EXTI_CONFIG_PORTE EXTI_EXTICR1_EXTI0_2 /*!< EXTI PORT E */ +#endif /*GPIOE_BASE*/ +#define LL_EXTI_CONFIG_PORTF (EXTI_EXTICR1_EXTI0_2|EXTI_EXTICR1_EXTI0_0) /*!< EXTI PORT F */ +/** + * @} + */ + +/** @defgroup EXTI_LL_EC_CONFIG_LINE EXTI CONFIG LINE + * @{ + */ +#define LL_EXTI_CONFIG_LINE0 ((0uL << LL_EXTI_REGISTER_PINPOS_SHFT) | 0U) /*!< EXTI_POSITION_0 | EXTICR[0] */ +#define LL_EXTI_CONFIG_LINE1 ((8uL << LL_EXTI_REGISTER_PINPOS_SHFT) | 0U) /*!< EXTI_POSITION_8 | EXTICR[0] */ +#define LL_EXTI_CONFIG_LINE2 ((16uL << LL_EXTI_REGISTER_PINPOS_SHFT) | 0U) /*!< EXTI_POSITION_16 | EXTICR[0] */ +#define LL_EXTI_CONFIG_LINE3 ((24uL << LL_EXTI_REGISTER_PINPOS_SHFT) | 0U) /*!< EXTI_POSITION_24 | EXTICR[0] */ +#define LL_EXTI_CONFIG_LINE4 ((0uL << LL_EXTI_REGISTER_PINPOS_SHFT) | 1U) /*!< EXTI_POSITION_0 | EXTICR[1] */ +#define LL_EXTI_CONFIG_LINE5 ((8uL << LL_EXTI_REGISTER_PINPOS_SHFT) | 1U) /*!< EXTI_POSITION_8 | EXTICR[1] */ +#define LL_EXTI_CONFIG_LINE6 ((16uL << LL_EXTI_REGISTER_PINPOS_SHFT) | 1U) /*!< EXTI_POSITION_16 | EXTICR[1] */ +#define LL_EXTI_CONFIG_LINE7 ((24uL << LL_EXTI_REGISTER_PINPOS_SHFT) | 1U) /*!< EXTI_POSITION_24 | EXTICR[1] */ +#define LL_EXTI_CONFIG_LINE8 ((0uL << LL_EXTI_REGISTER_PINPOS_SHFT) | 2U) /*!< EXTI_POSITION_0 | EXTICR[2] */ +#define LL_EXTI_CONFIG_LINE9 ((8uL << LL_EXTI_REGISTER_PINPOS_SHFT) | 2U) /*!< EXTI_POSITION_8 | EXTICR[2] */ +#define LL_EXTI_CONFIG_LINE10 ((16uL << LL_EXTI_REGISTER_PINPOS_SHFT) | 2U) /*!< EXTI_POSITION_16 | EXTICR[2] */ +#define LL_EXTI_CONFIG_LINE11 ((24uL << LL_EXTI_REGISTER_PINPOS_SHFT) | 2U) /*!< EXTI_POSITION_24 | EXTICR[2] */ +#define LL_EXTI_CONFIG_LINE12 ((0uL << LL_EXTI_REGISTER_PINPOS_SHFT) | 3U) /*!< EXTI_POSITION_0 | EXTICR[3] */ +#define LL_EXTI_CONFIG_LINE13 ((8uL << LL_EXTI_REGISTER_PINPOS_SHFT) | 3U) /*!< EXTI_POSITION_8 | EXTICR[3] */ +#define LL_EXTI_CONFIG_LINE14 ((16uL << LL_EXTI_REGISTER_PINPOS_SHFT) | 3U) /*!< EXTI_POSITION_16 | EXTICR[3] */ +#define LL_EXTI_CONFIG_LINE15 ((24uL << LL_EXTI_REGISTER_PINPOS_SHFT) | 3U) /*!< EXTI_POSITION_24 | EXTICR[3] */ +/** + * @} + */ +/** + * @} + */ +#if defined(USE_FULL_LL_DRIVER) + +/** @defgroup EXTI_LL_EC_MODE Mode + * @{ + */ +#define LL_EXTI_MODE_IT ((uint8_t)0x00U) /*!< Interrupt Mode */ +#define LL_EXTI_MODE_EVENT ((uint8_t)0x01U) /*!< Event Mode */ +#define LL_EXTI_MODE_IT_EVENT ((uint8_t)0x02U) /*!< Interrupt & Event Mode */ +/** + * @} + */ + +/** @defgroup EXTI_LL_EC_TRIGGER Edge Trigger + * @{ + */ +#define LL_EXTI_TRIGGER_NONE ((uint8_t)0x00U) /*!< No Trigger Mode */ +#define LL_EXTI_TRIGGER_RISING ((uint8_t)0x01U) /*!< Trigger Rising Mode */ +#define LL_EXTI_TRIGGER_FALLING ((uint8_t)0x02U) /*!< Trigger Falling Mode */ +#define LL_EXTI_TRIGGER_RISING_FALLING ((uint8_t)0x03U) /*!< Trigger Rising & Falling Mode */ + +/** + * @} + */ + + +#endif /*USE_FULL_LL_DRIVER*/ + + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup EXTI_LL_Exported_Macros EXTI Exported Macros + * @{ + */ + +/** @defgroup EXTI_LL_EM_WRITE_READ Common Write and read registers Macros + * @{ + */ + +/** + * @brief Write a value in EXTI register + * @param __REG__ Register to be written + * @param __VALUE__ Value to be written in the register + * @retval None + */ +#define LL_EXTI_WriteReg(__REG__, __VALUE__) WRITE_REG(EXTI->__REG__, (__VALUE__)) + +/** + * @brief Read a value in EXTI register + * @param __REG__ Register to be read + * @retval Register value + */ +#define LL_EXTI_ReadReg(__REG__) READ_REG(EXTI->__REG__) +/** + * @} + */ + + +/** + * @} + */ + + + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup EXTI_LL_Exported_Functions EXTI Exported Functions + * @{ + */ +/** @defgroup EXTI_LL_EF_IT_Management IT_Management + * @{ + */ + +/** + * @brief Enable ExtiLine Interrupt request for Lines in range 0 to 31 + * @note The reset value for the direct or internal lines (see RM) + * is set to 1 in order to enable the interrupt by default. + * Bits are set automatically at Power on. + * @rmtoll IMR1 IMx LL_EXTI_EnableIT_0_31 + * @param ExtiLine This parameter can be one of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_17 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @arg @ref LL_EXTI_LINE_21 + * @arg @ref LL_EXTI_LINE_23 + * @arg @ref LL_EXTI_LINE_25 + * @arg @ref LL_EXTI_LINE_26 + * @arg @ref LL_EXTI_LINE_27 + * @arg @ref LL_EXTI_LINE_28 + * @arg @ref LL_EXTI_LINE_29 + * @arg @ref LL_EXTI_LINE_30 + * @arg @ref LL_EXTI_LINE_31 + * @arg @ref LL_EXTI_LINE_ALL_0_31 + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_EnableIT_0_31(uint32_t ExtiLine) +{ + SET_BIT(EXTI->IMR1, ExtiLine); +} + +#if defined(STM32G081xx) || defined(STM32G071xx) || defined(STM32G0C1xx) || defined(STM32G0B1xx) || defined(STM32G0B0xx) +/** + * @brief Enable ExtiLine Interrupt request for Lines in range 32 to 63 + * @note The reset value for the direct lines (lines 32 & 33) + * is set to 1 in order to enable the interrupt by default. + * Bits are set automatically at Power on. + * @rmtoll IMR2 IMx LL_EXTI_EnableIT_32_63 + * @param ExtiLine This parameter can be one of the following values: + * @arg @ref LL_EXTI_LINE_32 + * @arg @ref LL_EXTI_LINE_33 + * @arg @ref LL_EXTI_LINE_34 + * @arg @ref LL_EXTI_LINE_35 + * @arg @ref LL_EXTI_LINE_36 + * @arg @ref LL_EXTI_LINE_ALL_32_63 + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_EnableIT_32_63(uint32_t ExtiLine) +{ + SET_BIT(EXTI->IMR2, ExtiLine); +} +#endif /* STM32G081xx || STM32G071xx || STM32G0C1xx || STM32G0B1xx || STM32G0B0xx */ + +/** + * @brief Disable ExtiLine Interrupt request for Lines in range 0 to 31 + * @note The reset value for the direct or internal lines (see RM) + * is set to 1 in order to enable the interrupt by default. + * Bits are set automatically at Power on. + * @rmtoll IMR1 IMx LL_EXTI_DisableIT_0_31 + * @param ExtiLine This parameter can be one of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_17 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @arg @ref LL_EXTI_LINE_21 + * @arg @ref LL_EXTI_LINE_23 + * @arg @ref LL_EXTI_LINE_25 + * @arg @ref LL_EXTI_LINE_26 + * @arg @ref LL_EXTI_LINE_27 + * @arg @ref LL_EXTI_LINE_28 + * @arg @ref LL_EXTI_LINE_29 + * @arg @ref LL_EXTI_LINE_30 + * @arg @ref LL_EXTI_LINE_31 + * @arg @ref LL_EXTI_LINE_ALL_0_31 + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_DisableIT_0_31(uint32_t ExtiLine) +{ + CLEAR_BIT(EXTI->IMR1, ExtiLine); +} + +#if defined(STM32G081xx) || defined(STM32G071xx) || defined(STM32G0C1xx) || defined(STM32G0B1xx) || defined(STM32G0B0xx) +/** + * @brief Disable ExtiLine Interrupt request for Lines in range 32 to 63 + * @note The reset value for the direct lines (lines 32 & 33) + * is set to 1 in order to enable the interrupt by default. + * Bits are set automatically at Power on. + * @rmtoll IMR2 IMx LL_EXTI_DisableIT_32_63 + * @param ExtiLine This parameter can be one of the following values: + * @arg @ref LL_EXTI_LINE_32 + * @arg @ref LL_EXTI_LINE_33 + * @arg @ref LL_EXTI_LINE_34 + * @arg @ref LL_EXTI_LINE_35 + * @arg @ref LL_EXTI_LINE_36 + * @arg @ref LL_EXTI_LINE_ALL_32_63 + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_DisableIT_32_63(uint32_t ExtiLine) +{ + CLEAR_BIT(EXTI->IMR2, ExtiLine); +} +#endif /* STM32G081xx || STM32G071xx || STM32G0C1xx || STM32G0B1xx || STM32G0B0xx */ + +/** + * @brief Indicate if ExtiLine Interrupt request is enabled for Lines in range 0 to 31 + * @note The reset value for the direct or internal lines (see RM) + * is set to 1 in order to enable the interrupt by default. + * Bits are set automatically at Power on. + * @rmtoll IMR1 IMx LL_EXTI_IsEnabledIT_0_31 + * @param ExtiLine This parameter can be one of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_17 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @arg @ref LL_EXTI_LINE_21 + * @arg @ref LL_EXTI_LINE_23 + * @arg @ref LL_EXTI_LINE_25 + * @arg @ref LL_EXTI_LINE_26 + * @arg @ref LL_EXTI_LINE_27 + * @arg @ref LL_EXTI_LINE_28 + * @arg @ref LL_EXTI_LINE_29 + * @arg @ref LL_EXTI_LINE_30 + * @arg @ref LL_EXTI_LINE_31 + * @arg @ref LL_EXTI_LINE_ALL_0_31 + * @note Please check each device line mapping for EXTI Line availability + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_EXTI_IsEnabledIT_0_31(uint32_t ExtiLine) +{ + return ((READ_BIT(EXTI->IMR1, ExtiLine) == (ExtiLine)) ? 1UL : 0UL); +} + +#if defined(STM32G081xx) || defined(STM32G071xx) || defined(STM32G0C1xx) || defined(STM32G0B1xx) || defined(STM32G0B0xx) +/** + * @brief Indicate if ExtiLine Interrupt request is enabled for Lines in range 32 to 63 + * @note The reset value for the direct lines (lines 32 & 33) + * is set to 1 in order to enable the interrupt by default. + * @rmtoll IMR2 IMx LL_EXTI_IsEnabledIT_32_63 + * @param ExtiLine This parameter can be one of the following values: + * @arg @ref LL_EXTI_LINE_32 + * @arg @ref LL_EXTI_LINE_33 + * @arg @ref LL_EXTI_LINE_34 + * @arg @ref LL_EXTI_LINE_35 + * @arg @ref LL_EXTI_LINE_36 + * @arg @ref LL_EXTI_LINE_ALL_32_63 + * @note Please check each device line mapping for EXTI Line availability + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_EXTI_IsEnabledIT_32_63(uint32_t ExtiLine) +{ + return ((READ_BIT(EXTI->IMR2, ExtiLine) == (ExtiLine)) ? 1UL : 0UL); +} +#endif /* STM32G081xx || STM32G071xx || STM32G0C1xx || STM32G0B1xx || STM32G0B0xx */ + +/** + * @} + */ + +/** @defgroup EXTI_LL_EF_Event_Management Event_Management + * @{ + */ + +/** + * @brief Enable ExtiLine Event request for Lines in range 0 to 31 + * @rmtoll EMR1 EMx LL_EXTI_EnableEvent_0_31 + * @param ExtiLine This parameter can be one of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_17 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @arg @ref LL_EXTI_LINE_21 + * @arg @ref LL_EXTI_LINE_23 + * @arg @ref LL_EXTI_LINE_25 + * @arg @ref LL_EXTI_LINE_26 + * @arg @ref LL_EXTI_LINE_27 + * @arg @ref LL_EXTI_LINE_28 + * @arg @ref LL_EXTI_LINE_29 + * @arg @ref LL_EXTI_LINE_30 + * @arg @ref LL_EXTI_LINE_31 + * @arg @ref LL_EXTI_LINE_ALL_0_31 + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_EnableEvent_0_31(uint32_t ExtiLine) +{ + SET_BIT(EXTI->EMR1, ExtiLine); + +} + +#if defined(STM32G081xx) || defined(STM32G071xx) || defined(STM32G0C1xx) || defined(STM32G0B1xx) || defined(STM32G0B0xx) +/** + * @brief Enable ExtiLine Event request for Lines in range 32 to 63 + * @rmtoll EMR2 EMx LL_EXTI_EnableEvent_32_63 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_32 + * @arg @ref LL_EXTI_LINE_33 + * @arg @ref LL_EXTI_LINE_34 + * @arg @ref LL_EXTI_LINE_35 + * @arg @ref LL_EXTI_LINE_36 + * @arg @ref LL_EXTI_LINE_ALL_32_63 + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_EnableEvent_32_63(uint32_t ExtiLine) +{ + SET_BIT(EXTI->EMR2, ExtiLine); +} +#endif /* STM32G081xx || STM32G071xx || STM32G0C1xx || STM32G0B1xx || STM32G0B0xx */ +/** + * @brief Disable ExtiLine Event request for Lines in range 0 to 31 + * @rmtoll EMR1 EMx LL_EXTI_DisableEvent_0_31 + * @param ExtiLine This parameter can be one of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_17 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @arg @ref LL_EXTI_LINE_21 + * @arg @ref LL_EXTI_LINE_23 + * @arg @ref LL_EXTI_LINE_25 + * @arg @ref LL_EXTI_LINE_26 + * @arg @ref LL_EXTI_LINE_27 + * @arg @ref LL_EXTI_LINE_28 + * @arg @ref LL_EXTI_LINE_29 + * @arg @ref LL_EXTI_LINE_30 + * @arg @ref LL_EXTI_LINE_31 + * @arg @ref LL_EXTI_LINE_ALL_0_31 + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_DisableEvent_0_31(uint32_t ExtiLine) +{ + CLEAR_BIT(EXTI->EMR1, ExtiLine); +} + +#if defined(STM32G081xx) || defined(STM32G071xx) || defined(STM32G0C1xx) || defined(STM32G0B1xx) || defined(STM32G0B0xx) +/** + * @brief Disable ExtiLine Event request for Lines in range 32 to 63 + * @rmtoll EMR2 EMx LL_EXTI_DisableEvent_32_63 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_32 + * @arg @ref LL_EXTI_LINE_33 + * @arg @ref LL_EXTI_LINE_34 + * @arg @ref LL_EXTI_LINE_35 + * @arg @ref LL_EXTI_LINE_36 + * @arg @ref LL_EXTI_LINE_ALL_32_63 + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_DisableEvent_32_63(uint32_t ExtiLine) +{ + CLEAR_BIT(EXTI->EMR2, ExtiLine); +} +#endif +/** + * @brief Indicate if ExtiLine Event request is enabled for Lines in range 0 to 31 + * @rmtoll EMR1 EMx LL_EXTI_IsEnabledEvent_0_31 + * @param ExtiLine This parameter can be one of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_17 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @arg @ref LL_EXTI_LINE_21 + * @arg @ref LL_EXTI_LINE_23 + * @arg @ref LL_EXTI_LINE_25 + * @arg @ref LL_EXTI_LINE_26 + * @arg @ref LL_EXTI_LINE_27 + * @arg @ref LL_EXTI_LINE_28 + * @arg @ref LL_EXTI_LINE_29 + * @arg @ref LL_EXTI_LINE_30 + * @arg @ref LL_EXTI_LINE_31 + * @arg @ref LL_EXTI_LINE_ALL_0_31 + * @note Please check each device line mapping for EXTI Line availability + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_EXTI_IsEnabledEvent_0_31(uint32_t ExtiLine) +{ + return ((READ_BIT(EXTI->EMR1, ExtiLine) == (ExtiLine)) ? 1UL : 0UL); +} + +#if defined(STM32G081xx) || defined(STM32G071xx) || defined(STM32G0C1xx) || defined(STM32G0B1xx) || defined(STM32G0B0xx) +/** + * @brief Indicate if ExtiLine Event request is enabled for Lines in range 32 to 63 + * @rmtoll EMR2 EMx LL_EXTI_IsEnabledEvent_32_63 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_32 + * @arg @ref LL_EXTI_LINE_33 + * @arg @ref LL_EXTI_LINE_34 + * @arg @ref LL_EXTI_LINE_35 + * @arg @ref LL_EXTI_LINE_36 + * @arg @ref LL_EXTI_LINE_ALL_32_63 + * @note Please check each device line mapping for EXTI Line availability + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_EXTI_IsEnabledEvent_32_63(uint32_t ExtiLine) +{ + return ((READ_BIT(EXTI->EMR2, ExtiLine) == (ExtiLine)) ? 1UL : 0UL); +} +#endif /* STM32G081xx || STM32G071xx || STM32G0C1xx || STM32G0B1xx || STM32G0B0xx */ + +/** + * @} + */ + +/** @defgroup EXTI_LL_EF_Rising_Trigger_Management Rising_Trigger_Management + * @{ + */ + +/** + * @brief Enable ExtiLine Rising Edge Trigger for Lines in range 0 to 31 + * @note The configurable wakeup lines are edge-triggered. No glitch must be + * generated on these lines. If a rising edge on a configurable interrupt + * line occurs during a write operation in the EXTI_RTSR register, the + * pending bit is not set. + * Rising and falling edge triggers can be set for + * the same interrupt line. In this case, both generate a trigger + * condition. + * @rmtoll RTSR1 RTx LL_EXTI_EnableRisingTrig_0_31 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_17 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_20 + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_EnableRisingTrig_0_31(uint32_t ExtiLine) +{ + SET_BIT(EXTI->RTSR1, ExtiLine); + +} +#if defined(STM32G0C1xx) || defined(STM32G0B1xx) +/** + * @brief Enable ExtiLine Rising Edge Trigger for Lines in range 32 to 63 + * @note The configurable wakeup lines are edge-triggered. No glitch must be + * generated on these lines. If a rising edge on a configurable interrupt + * line occurs during a write operation in the EXTI_RTSR register, the + * pending bit is not set. + * Rising and falling edge triggers can be set for + * the same interrupt line. In this case, both generate a trigger + * condition. + * @rmtoll RTSR2 RTx LL_EXTI_EnableRisingTrig_32_63 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_34 + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_EnableRisingTrig_32_63(uint32_t ExtiLine) +{ + SET_BIT(EXTI->RTSR2, ExtiLine); + +} +#endif /* STM32G0C1xx || STM32G0B1xx */ + +/** + * @brief Disable ExtiLine Rising Edge Trigger for Lines in range 0 to 31 + * @note The configurable wakeup lines are edge-triggered. No glitch must be + * generated on these lines. If a rising edge on a configurable interrupt + * line occurs during a write operation in the EXTI_RTSR register, the + * pending bit is not set. + * Rising and falling edge triggers can be set for + * the same interrupt line. In this case, both generate a trigger + * condition. + * @rmtoll RTSR1 RTx LL_EXTI_DisableRisingTrig_0_31 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_17 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_20 + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_DisableRisingTrig_0_31(uint32_t ExtiLine) +{ + CLEAR_BIT(EXTI->RTSR1, ExtiLine); + +} + +#if defined(STM32G0C1xx) || defined(STM32G0B1xx) +/** + * @brief Disable ExtiLine Rising Edge Trigger for Lines in range 32 to 63 + * @note The configurable wakeup lines are edge-triggered. No glitch must be + * generated on these lines. If a rising edge on a configurable interrupt + * line occurs during a write operation in the EXTI_RTSR register, the + * pending bit is not set. + * Rising and falling edge triggers can be set for + * the same interrupt line. In this case, both generate a trigger + * condition. + * @rmtoll RTSR2 RTx LL_EXTI_DisableRisingTrig_32_63 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_34 + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_DisableRisingTrig_32_63(uint32_t ExtiLine) +{ + CLEAR_BIT(EXTI->RTSR2, ExtiLine); + +} +#endif /* STM32G0C1xx || STM32G0B1xx */ + +/** + * @brief Check if rising edge trigger is enabled for Lines in range 0 to 31 + * @rmtoll RTSR1 RTx LL_EXTI_IsEnabledRisingTrig_0_31 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_17 + * @arg @ref LL_EXTI_LINE_20 + * @note Please check each device line mapping for EXTI Line availability + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_EXTI_IsEnabledRisingTrig_0_31(uint32_t ExtiLine) +{ + return ((READ_BIT(EXTI->RTSR1, ExtiLine) == (ExtiLine)) ? 1UL : 0UL); +} + +#if defined(STM32G0C1xx) || defined(STM32G0B1xx) +/** + * @brief Check if rising edge trigger is enabled for Lines in range 32 to 63 + * @rmtoll RTSR2 RTx LL_EXTI_IsEnabledRisingTrig_32_63 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_34 + * @note Please check each device line mapping for EXTI Line availability + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_EXTI_IsEnabledRisingTrig_32_63(uint32_t ExtiLine) +{ + return ((READ_BIT(EXTI->RTSR2, ExtiLine) == (ExtiLine)) ? 1UL : 0UL); +} +#endif /* STM32G0C1xx || STM32G0B1xx */ + +/** + * @} + */ + +/** @defgroup EXTI_LL_EF_Falling_Trigger_Management Falling_Trigger_Management + * @{ + */ + +/** + * @brief Enable ExtiLine Falling Edge Trigger for Lines in range 0 to 31 + * @note The configurable wakeup lines are edge-triggered. No glitch must be + * generated on these lines. If a falling edge on a configurable interrupt + * line occurs during a write operation in the EXTI_FTSR register, the + * pending bit is not set. + * Rising and falling edge triggers can be set for + * the same interrupt line. In this case, both generate a trigger + * condition. + * @rmtoll FTSR1 FTx LL_EXTI_EnableFallingTrig_0_31 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_17 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_20 + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_EnableFallingTrig_0_31(uint32_t ExtiLine) +{ + SET_BIT(EXTI->FTSR1, ExtiLine); +} + +#if defined(STM32G0C1xx) || defined(STM32G0B1xx) +/** + * @brief Enable ExtiLine Falling Edge Trigger for Lines in range 32 to 63 + * @note The configurable wakeup lines are edge-triggered. No glitch must be + * generated on these lines. If a falling edge on a configurable interrupt + * line occurs during a write operation in the EXTI_FTSR register, the + * pending bit is not set. + * Rising and falling edge triggers can be set for + * the same interrupt line. In this case, both generate a trigger + * condition. + * @rmtoll FTSR2 FTx LL_EXTI_EnableFallingTrig_32_63 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_34 + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_EnableFallingTrig_32_63(uint32_t ExtiLine) +{ + SET_BIT(EXTI->FTSR2, ExtiLine); +} +#endif /* STM32G0C1xx || STM32G0B1xx */ + +/** + * @brief Disable ExtiLine Falling Edge Trigger for Lines in range 0 to 31 + * @note The configurable wakeup lines are edge-triggered. No glitch must be + * generated on these lines. If a Falling edge on a configurable interrupt + * line occurs during a write operation in the EXTI_FTSR register, the + * pending bit is not set. + * Rising and falling edge triggers can be set for the same interrupt line. + * In this case, both generate a trigger condition. + * @rmtoll FTSR1 FTx LL_EXTI_DisableFallingTrig_0_31 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_17 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_20 + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_DisableFallingTrig_0_31(uint32_t ExtiLine) +{ + CLEAR_BIT(EXTI->FTSR1, ExtiLine); +} + +#if defined(STM32G0C1xx) || defined(STM32G0B1xx) +/** + * @brief Disable ExtiLine Falling Edge Trigger for Lines in range 32 to 63 + * @note The configurable wakeup lines are edge-triggered. No glitch must be + * generated on these lines. If a Falling edge on a configurable interrupt + * line occurs during a write operation in the EXTI_FTSR register, the + * pending bit is not set. + * Rising and falling edge triggers can be set for the same interrupt line. + * In this case, both generate a trigger condition. + * @rmtoll FTSR2 FTx LL_EXTI_DisableFallingTrig_32_63 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_34 + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_DisableFallingTrig_32_63(uint32_t ExtiLine) +{ + CLEAR_BIT(EXTI->FTSR2, ExtiLine); +} +#endif /* STM32G0C1xx || STM32G0B1xx */ + +/** + * @brief Check if falling edge trigger is enabled for Lines in range 0 to 31 + * @rmtoll FTSR1 FTx LL_EXTI_IsEnabledFallingTrig_0_31 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_17 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_20 + * @note Please check each device line mapping for EXTI Line availability + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_EXTI_IsEnabledFallingTrig_0_31(uint32_t ExtiLine) +{ + return ((READ_BIT(EXTI->FTSR1, ExtiLine) == (ExtiLine)) ? 1UL : 0UL); +} + +#if defined(STM32G0C1xx) || defined(STM32G0B1xx) +/** + * @brief Check if falling edge trigger is enabled for Lines in range 32 to 63 + * @rmtoll FTSR2 FTx LL_EXTI_IsEnabledFallingTrig_32_63 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_34 + * @note Please check each device line mapping for EXTI Line availability + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_EXTI_IsEnabledFallingTrig_32_63(uint32_t ExtiLine) +{ + return ((READ_BIT(EXTI->FTSR2, ExtiLine) == (ExtiLine)) ? 1UL : 0UL); +} +#endif /* STM32G0C1xx || STM32G0B1xx */ +/** + * @} + */ + +/** @defgroup EXTI_LL_EF_Software_Interrupt_Management Software_Interrupt_Management + * @{ + */ + +/** + * @brief Generate a software Interrupt Event for Lines in range 0 to 31 + * @note If the interrupt is enabled on this line in the EXTI_IMR, writing a 1 to + * this bit when it is at '0' sets the corresponding pending bit in EXTI_PR + * resulting in an interrupt request generation. + * This bit is cleared by clearing the corresponding bit in the EXTI_PR + * register (by writing a 1 into the bit) + * @rmtoll SWIER1 SWIx LL_EXTI_GenerateSWI_0_31 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_17 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_20 + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_GenerateSWI_0_31(uint32_t ExtiLine) +{ + SET_BIT(EXTI->SWIER1, ExtiLine); +} + +#if defined(STM32G0C1xx) || defined(STM32G0B1xx) +/** + * @brief Generate a software Interrupt Event for Lines in range 32 to 63 + * @note If the interrupt is enabled on this line in the EXTI_IMR, writing a 1 to + * this bit when it is at '0' sets the corresponding pending bit in EXTI_PR + * resulting in an interrupt request generation. + * This bit is cleared by clearing the corresponding bit in the EXTI_PR + * register (by writing a 1 into the bit) + * @rmtoll SWIER2 SWIx LL_EXTI_GenerateSWI_32_63 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_34 + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_GenerateSWI_32_63(uint32_t ExtiLine) +{ + SET_BIT(EXTI->SWIER2, ExtiLine); +} +#endif /* STM32G0C1xx || STM32G0B1xx */ + +/** + * @} + */ + +/** @defgroup EXTI_LL_EF_Flag_Management Flag_Management + * @{ + */ + +/** + * @brief Check if the ExtLine Falling Flag is set or not for Lines in range 0 to 31 + * @note This bit is set when the falling edge event arrives on the interrupt + * line. This bit is cleared by writing a 1 to the bit. + * @rmtoll FPR1 FPIFx LL_EXTI_IsActiveFallingFlag_0_31 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_17 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_20 + * @note Please check each device line mapping for EXTI Line availability + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_EXTI_IsActiveFallingFlag_0_31(uint32_t ExtiLine) +{ + return ((READ_BIT(EXTI->FPR1, ExtiLine) == (ExtiLine)) ? 1UL : 0UL); +} + +#if defined(STM32G0C1xx) || defined(STM32G0B1xx) +/** + * @brief Check if the ExtLine Falling Flag is set or not for Lines in range 32 to 63 + * @note This bit is set when the falling edge event arrives on the interrupt + * line. This bit is cleared by writing a 1 to the bit. + * @rmtoll FPR2 FPIFx LL_EXTI_IsActiveFallingFlag_32_63 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_34 + * @note Please check each device line mapping for EXTI Line availability + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_EXTI_IsActiveFallingFlag_32_63(uint32_t ExtiLine) +{ + return ((READ_BIT(EXTI->FPR2, ExtiLine) == (ExtiLine)) ? 1UL : 0UL); +} +#endif /* STM32G0C1xx || STM32G0B1xx */ + +/** + * @brief Read ExtLine Combination Falling Flag for Lines in range 0 to 31 + * @note This bit is set when the falling edge event arrives on the interrupt + * line. This bit is cleared by writing a 1 to the bit. + * @rmtoll FPR1 FPIFx LL_EXTI_ReadFallingFlag_0_31 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_17 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_20 + * @note Please check each device line mapping for EXTI Line availability + * @retval @note This bit is set when the selected edge event arrives on the interrupt + */ +__STATIC_INLINE uint32_t LL_EXTI_ReadFallingFlag_0_31(uint32_t ExtiLine) +{ + return (READ_BIT(EXTI->FPR1, ExtiLine)); +} + +#if defined(STM32G0C1xx) || defined(STM32G0B1xx) +/** + * @brief Read ExtLine Combination Falling Flag for Lines in range 32 to 63 + * @note This bit is set when the falling edge event arrives on the interrupt + * line. This bit is cleared by writing a 1 to the bit. + * @rmtoll FPR2 FPIFx LL_EXTI_ReadFallingFlag_32_63 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_34 + * @note Please check each device line mapping for EXTI Line availability + * @retval @note This bit is set when the selected edge event arrives on the interrupt + */ +__STATIC_INLINE uint32_t LL_EXTI_ReadFallingFlag_32_63(uint32_t ExtiLine) +{ + return (READ_BIT(EXTI->FPR2, ExtiLine)); +} +#endif /* STM32G0C1xx || STM32G0B1xx */ + +/** + * @brief Clear ExtLine Falling Flags for Lines in range 0 to 31 + * @note This bit is set when the falling edge event arrives on the interrupt + * line. This bit is cleared by writing a 1 to the bit. + * @rmtoll FPR1 FPIFx LL_EXTI_ClearFallingFlag_0_31 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_17 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_20 + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_ClearFallingFlag_0_31(uint32_t ExtiLine) +{ + WRITE_REG(EXTI->FPR1, ExtiLine); +} + +#if defined(STM32G0C1xx) || defined(STM32G0B1xx) +/** + * @brief Clear ExtLine Falling Flags for Lines in range 32 to 63 + * @note This bit is set when the falling edge event arrives on the interrupt + * line. This bit is cleared by writing a 1 to the bit. + * @rmtoll FPR2 FPIFx LL_EXTI_ClearFallingFlag_32_63 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_34 + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_ClearFallingFlag_32_63(uint32_t ExtiLine) +{ + WRITE_REG(EXTI->FPR2, ExtiLine); +} +#endif /* STM32G0C1xx || STM32G0B1xx */ + +/** + * @brief Check if the ExtLine Rising Flag is set or not for Lines in range 0 to 31 + * @note This bit is set when the Rising edge event arrives on the interrupt + * line. This bit is cleared by writing a 1 to the bit. + * @rmtoll RPR1 RPIFx LL_EXTI_IsActiveRisingFlag_0_31 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_17 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_20 + * @note Please check each device line mapping for EXTI Line availability + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_EXTI_IsActiveRisingFlag_0_31(uint32_t ExtiLine) +{ + return ((READ_BIT(EXTI->RPR1, ExtiLine) == (ExtiLine)) ? 1UL : 0UL); +} + +#if defined(STM32G0C1xx) || defined(STM32G0B1xx) +/** + * @brief Check if the ExtLine Rising Flag is set or not for Lines in range 32 to 63 + * @note This bit is set when the Rising edge event arrives on the interrupt + * line. This bit is cleared by writing a 1 to the bit. + * @rmtoll RPR2 RPIFx LL_EXTI_IsActiveRisingFlag_32_63 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_34 + * @note Please check each device line mapping for EXTI Line availability + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_EXTI_IsActiveRisingFlag_32_63(uint32_t ExtiLine) +{ + return ((READ_BIT(EXTI->RPR2, ExtiLine) == (ExtiLine)) ? 1UL : 0UL); +} +#endif /* STM32G0C1xx || STM32G0B1xx */ + +/** + * @brief Read ExtLine Combination Rising Flag for Lines in range 0 to 31 + * @note This bit is set when the Rising edge event arrives on the interrupt + * line. This bit is cleared by writing a 1 to the bit. + * @rmtoll RPR1 RPIFx LL_EXTI_ReadRisingFlag_0_31 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_17 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_20 + * @note Please check each device line mapping for EXTI Line availability + * @retval @note This bit is set when the selected edge event arrives on the interrupt + */ +__STATIC_INLINE uint32_t LL_EXTI_ReadRisingFlag_0_31(uint32_t ExtiLine) +{ + return (READ_BIT(EXTI->RPR1, ExtiLine)); +} + +#if defined(STM32G0C1xx) || defined(STM32G0B1xx) +/** + * @brief Read ExtLine Combination Rising Flag for Lines in range 32 to 63 + * @note This bit is set when the Rising edge event arrives on the interrupt + * line. This bit is cleared by writing a 1 to the bit. + * @rmtoll RPR2 RPIFx LL_EXTI_ReadRisingFlag_32_63 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_34 + * @note Please check each device line mapping for EXTI Line availability + * @retval @note This bit is set when the selected edge event arrives on the interrupt + */ +__STATIC_INLINE uint32_t LL_EXTI_ReadRisingFlag_32_63(uint32_t ExtiLine) +{ + return (READ_BIT(EXTI->RPR2, ExtiLine)); +} +#endif /* STM32G0C1xx || STM32G0B1xx */ + +/** + * @brief Clear ExtLine Rising Flags for Lines in range 0 to 31 + * @note This bit is set when the Rising edge event arrives on the interrupt + * line. This bit is cleared by writing a 1 to the bit. + * @rmtoll RPR1 RPIFx LL_EXTI_ClearRisingFlag_0_31 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_17 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_20 + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_ClearRisingFlag_0_31(uint32_t ExtiLine) +{ + WRITE_REG(EXTI->RPR1, ExtiLine); +} + +#if defined(STM32G0C1xx) || defined(STM32G0B1xx) +/** + * @brief Clear ExtLine Rising Flags for Lines in range 32 to 63 + * @note This bit is set when the Rising edge event arrives on the interrupt + * line. This bit is cleared by writing a 1 to the bit. + * @rmtoll RPR2 RPIFx LL_EXTI_ClearRisingFlag_32_63 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_34 + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_ClearRisingFlag_32_63(uint32_t ExtiLine) +{ + WRITE_REG(EXTI->RPR2, ExtiLine); +} +#endif /* STM32G0C1xx || STM32G0B1xx */ + +/** + * @} + */ +/** @defgroup EXTI_LL_EF_Config EF configuration functions + * @{ + */ + +/** + * @brief Configure source input for the EXTI external interrupt. + * @rmtoll EXTI_EXTICR1 EXTI0 LL_EXTI_SetEXTISource\n + * EXTI_EXTICR1 EXTI1 LL_EXTI_SetEXTISource\n + * EXTI_EXTICR1 EXTI2 LL_EXTI_SetEXTISource\n + * EXTI_EXTICR1 EXTI3 LL_EXTI_SetEXTISource\n + * EXTI_EXTICR2 EXTI4 LL_EXTI_SetEXTISource\n + * EXTI_EXTICR2 EXTI5 LL_EXTI_SetEXTISource\n + * EXTI_EXTICR2 EXTI6 LL_EXTI_SetEXTISource\n + * EXTI_EXTICR2 EXTI7 LL_EXTI_SetEXTISource\n + * EXTI_EXTICR3 EXTI8 LL_EXTI_SetEXTISource\n + * EXTI_EXTICR3 EXTI9 LL_EXTI_SetEXTISource\n + * EXTI_EXTICR3 EXTI10 LL_EXTI_SetEXTISource\n + * EXTI_EXTICR3 EXTI11 LL_EXTI_SetEXTISource\n + * EXTI_EXTICR4 EXTI12 LL_EXTI_SetEXTISource\n + * EXTI_EXTICR4 EXTI13 LL_EXTI_SetEXTISource\n + * EXTI_EXTICR4 EXTI14 LL_EXTI_SetEXTISource\n + * EXTI_EXTICR4 EXTI15 LL_EXTI_SetEXTISource + * @param Port This parameter can be one of the following values: + * @arg @ref EXTI_LL_EC_CONFIG_PORT + * + * (*) value not defined in all devices + * @param Line This parameter can be one of the following values: + * @arg @ref LL_EXTI_CONFIG_LINE0 + * @arg @ref LL_EXTI_CONFIG_LINE1 + * @arg @ref LL_EXTI_CONFIG_LINE2 + * @arg @ref LL_EXTI_CONFIG_LINE3 + * @arg @ref LL_EXTI_CONFIG_LINE4 + * @arg @ref LL_EXTI_CONFIG_LINE5 + * @arg @ref LL_EXTI_CONFIG_LINE6 + * @arg @ref LL_EXTI_CONFIG_LINE7 + * @arg @ref LL_EXTI_CONFIG_LINE8 + * @arg @ref LL_EXTI_CONFIG_LINE9 + * @arg @ref LL_EXTI_CONFIG_LINE10 + * @arg @ref LL_EXTI_CONFIG_LINE11 + * @arg @ref LL_EXTI_CONFIG_LINE12 + * @arg @ref LL_EXTI_CONFIG_LINE13 + * @arg @ref LL_EXTI_CONFIG_LINE14 + * @arg @ref LL_EXTI_CONFIG_LINE15 + * @retval None + */ +__STATIC_INLINE void LL_EXTI_SetEXTISource(uint32_t Port, uint32_t Line) +{ + MODIFY_REG(EXTI->EXTICR[Line & 0x03u], EXTI_EXTICR1_EXTI0 << (Line >> LL_EXTI_REGISTER_PINPOS_SHFT), Port << (Line >> LL_EXTI_REGISTER_PINPOS_SHFT)); +} + +/** + * @brief Get the configured defined for specific EXTI Line + * @rmtoll EXTI_EXTICR1 EXTI0 LL_EXTI_SetEXTISource\n + * EXTI_EXTICR1 EXTI1 LL_EXTI_SetEXTISource\n + * EXTI_EXTICR1 EXTI2 LL_EXTI_SetEXTISource\n + * EXTI_EXTICR1 EXTI3 LL_EXTI_SetEXTISource\n + * EXTI_EXTICR2 EXTI4 LL_EXTI_SetEXTISource\n + * EXTI_EXTICR2 EXTI5 LL_EXTI_SetEXTISource\n + * EXTI_EXTICR2 EXTI6 LL_EXTI_SetEXTISource\n + * EXTI_EXTICR2 EXTI7 LL_EXTI_SetEXTISource\n + * EXTI_EXTICR3 EXTI8 LL_EXTI_SetEXTISource\n + * EXTI_EXTICR3 EXTI9 LL_EXTI_SetEXTISource\n + * EXTI_EXTICR3 EXTI10 LL_EXTI_SetEXTISource\n + * EXTI_EXTICR3 EXTI11 LL_EXTI_SetEXTISource\n + * EXTI_EXTICR4 EXTI12 LL_EXTI_SetEXTISource\n + * EXTI_EXTICR4 EXTI13 LL_EXTI_SetEXTISource\n + * EXTI_EXTICR4 EXTI14 LL_EXTI_SetEXTISource\n + * EXTI_EXTICR4 EXTI15 LL_EXTI_SetEXTISource + * @param Line This parameter can be one of the following values: + * @arg @ref LL_EXTI_CONFIG_LINE0 + * @arg @ref LL_EXTI_CONFIG_LINE1 + * @arg @ref LL_EXTI_CONFIG_LINE2 + * @arg @ref LL_EXTI_CONFIG_LINE3 + * @arg @ref LL_EXTI_CONFIG_LINE4 + * @arg @ref LL_EXTI_CONFIG_LINE5 + * @arg @ref LL_EXTI_CONFIG_LINE6 + * @arg @ref LL_EXTI_CONFIG_LINE7 + * @arg @ref LL_EXTI_CONFIG_LINE8 + * @arg @ref LL_EXTI_CONFIG_LINE9 + * @arg @ref LL_EXTI_CONFIG_LINE10 + * @arg @ref LL_EXTI_CONFIG_LINE11 + * @arg @ref LL_EXTI_CONFIG_LINE12 + * @arg @ref LL_EXTI_CONFIG_LINE13 + * @arg @ref LL_EXTI_CONFIG_LINE14 + * @arg @ref LL_EXTI_CONFIG_LINE15 + * @retval Returned value can be one of the following values: + * @arg @ref EXTI_LL_EC_CONFIG_PORT + * + * (*) value not defined in all devices + */ +__STATIC_INLINE uint32_t LL_EXTI_GetEXTISource(uint32_t Line) +{ + return (READ_BIT(EXTI->EXTICR[Line & 0x03u], (EXTI_EXTICR1_EXTI0 << (Line >> LL_EXTI_REGISTER_PINPOS_SHFT))) >> (Line >> LL_EXTI_REGISTER_PINPOS_SHFT)); +} +/** + * @} + */ + +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup EXTI_LL_EF_Init Initialization and de-initialization functions + * @{ + */ + +uint32_t LL_EXTI_Init(LL_EXTI_InitTypeDef *EXTI_InitStruct); +uint32_t LL_EXTI_DeInit(void); +void LL_EXTI_StructInit(LL_EXTI_InitTypeDef *EXTI_InitStruct); + + +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* EXTI */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32G0xx_LL_EXTI_H */ + diff --git a/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_ll_gpio.h b/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_ll_gpio.h new file mode 100644 index 0000000..2b221dd --- /dev/null +++ b/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_ll_gpio.h @@ -0,0 +1,958 @@ +/** + ****************************************************************************** + * @file stm32g0xx_ll_gpio.h + * @author MCD Application Team + * @brief Header file of GPIO LL module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2018 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32G0xx_LL_GPIO_H +#define STM32G0xx_LL_GPIO_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32g0xx.h" + +/** @addtogroup STM32G0xx_LL_Driver + * @{ + */ + +#if defined (GPIOA) || defined (GPIOB) || defined (GPIOC) || defined (GPIOD) || defined (GPIOE) || defined (GPIOF) + +/** @defgroup GPIO_LL GPIO + * @{ + */ +/** MISRA C:2012 deviation rule has been granted for following rules: + * Rule-18.1_d - Medium: Array pointer `GPIOx' is accessed with index [..,..] + * which may be out of array bounds [..,UNKNOWN] in following APIs: + * LL_GPIO_GetAFPin_0_7 + * LL_GPIO_SetAFPin_0_7 + * LL_GPIO_SetAFPin_8_15 + * LL_GPIO_GetAFPin_8_15 + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/* Private macros ------------------------------------------------------------*/ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup GPIO_LL_Private_Macros GPIO Private Macros + * @{ + */ + +/** + * @} + */ +#endif /*USE_FULL_LL_DRIVER*/ + +/* Exported types ------------------------------------------------------------*/ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup GPIO_LL_ES_INIT GPIO Exported Init structures + * @{ + */ + +/** + * @brief LL GPIO Init Structure definition + */ +typedef struct +{ + uint32_t Pin; /*!< Specifies the GPIO pins to be configured. + This parameter can be any value of @ref GPIO_LL_EC_PIN */ + + uint32_t Mode; /*!< Specifies the operating mode for the selected pins. + This parameter can be a value of @ref GPIO_LL_EC_MODE. + + GPIO HW configuration can be modified afterwards using unitary function @ref LL_GPIO_SetPinMode().*/ + + uint32_t Speed; /*!< Specifies the speed for the selected pins. + This parameter can be a value of @ref GPIO_LL_EC_SPEED. + + GPIO HW configuration can be modified afterwards using unitary function @ref LL_GPIO_SetPinSpeed().*/ + + uint32_t OutputType; /*!< Specifies the operating output type for the selected pins. + This parameter can be a value of @ref GPIO_LL_EC_OUTPUT. + + GPIO HW configuration can be modified afterwards using unitary function @ref LL_GPIO_SetPinOutputType().*/ + + uint32_t Pull; /*!< Specifies the operating Pull-up/Pull down for the selected pins. + This parameter can be a value of @ref GPIO_LL_EC_PULL. + + GPIO HW configuration can be modified afterwards using unitary function @ref LL_GPIO_SetPinPull().*/ + + uint32_t Alternate; /*!< Specifies the Peripheral to be connected to the selected pins. + This parameter can be a value of @ref GPIO_LL_EC_AF. + + GPIO HW configuration can be modified afterwards using unitary function @ref LL_GPIO_SetAFPin_0_7() and LL_GPIO_SetAFPin_8_15().*/ +} LL_GPIO_InitTypeDef; + +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup GPIO_LL_Exported_Constants GPIO Exported Constants + * @{ + */ + +/** @defgroup GPIO_LL_EC_PIN PIN + * @{ + */ +#define LL_GPIO_PIN_0 GPIO_BSRR_BS0 /*!< Select pin 0 */ +#define LL_GPIO_PIN_1 GPIO_BSRR_BS1 /*!< Select pin 1 */ +#define LL_GPIO_PIN_2 GPIO_BSRR_BS2 /*!< Select pin 2 */ +#define LL_GPIO_PIN_3 GPIO_BSRR_BS3 /*!< Select pin 3 */ +#define LL_GPIO_PIN_4 GPIO_BSRR_BS4 /*!< Select pin 4 */ +#define LL_GPIO_PIN_5 GPIO_BSRR_BS5 /*!< Select pin 5 */ +#define LL_GPIO_PIN_6 GPIO_BSRR_BS6 /*!< Select pin 6 */ +#define LL_GPIO_PIN_7 GPIO_BSRR_BS7 /*!< Select pin 7 */ +#define LL_GPIO_PIN_8 GPIO_BSRR_BS8 /*!< Select pin 8 */ +#define LL_GPIO_PIN_9 GPIO_BSRR_BS9 /*!< Select pin 9 */ +#define LL_GPIO_PIN_10 GPIO_BSRR_BS10 /*!< Select pin 10 */ +#define LL_GPIO_PIN_11 GPIO_BSRR_BS11 /*!< Select pin 11 */ +#define LL_GPIO_PIN_12 GPIO_BSRR_BS12 /*!< Select pin 12 */ +#define LL_GPIO_PIN_13 GPIO_BSRR_BS13 /*!< Select pin 13 */ +#define LL_GPIO_PIN_14 GPIO_BSRR_BS14 /*!< Select pin 14 */ +#define LL_GPIO_PIN_15 GPIO_BSRR_BS15 /*!< Select pin 15 */ +#define LL_GPIO_PIN_ALL (GPIO_BSRR_BS0 | GPIO_BSRR_BS1 | GPIO_BSRR_BS2 | \ + GPIO_BSRR_BS3 | GPIO_BSRR_BS4 | GPIO_BSRR_BS5 | \ + GPIO_BSRR_BS6 | GPIO_BSRR_BS7 | GPIO_BSRR_BS8 | \ + GPIO_BSRR_BS9 | GPIO_BSRR_BS10 | GPIO_BSRR_BS11 | \ + GPIO_BSRR_BS12 | GPIO_BSRR_BS13 | GPIO_BSRR_BS14 | \ + GPIO_BSRR_BS15) /*!< Select all pins */ +/** + * @} + */ + +/** @defgroup GPIO_LL_EC_MODE Mode + * @{ + */ +#define LL_GPIO_MODE_INPUT (0x00000000U) /*!< Select input mode */ +#define LL_GPIO_MODE_OUTPUT GPIO_MODER_MODE0_0 /*!< Select output mode */ +#define LL_GPIO_MODE_ALTERNATE GPIO_MODER_MODE0_1 /*!< Select alternate function mode */ +#define LL_GPIO_MODE_ANALOG GPIO_MODER_MODE0 /*!< Select analog mode */ +/** + * @} + */ + +/** @defgroup GPIO_LL_EC_OUTPUT Output Type + * @{ + */ +#define LL_GPIO_OUTPUT_PUSHPULL (0x00000000U) /*!< Select push-pull as output type */ +#define LL_GPIO_OUTPUT_OPENDRAIN GPIO_OTYPER_OT0 /*!< Select open-drain as output type */ +/** + * @} + */ + +/** @defgroup GPIO_LL_EC_SPEED Output Speed + * @{ + */ +#define LL_GPIO_SPEED_FREQ_LOW (0x00000000U) /*!< Select I/O low output speed */ +#define LL_GPIO_SPEED_FREQ_MEDIUM GPIO_OSPEEDR_OSPEED0_0 /*!< Select I/O medium output speed */ +#define LL_GPIO_SPEED_FREQ_HIGH GPIO_OSPEEDR_OSPEED0_1 /*!< Select I/O fast output speed */ +#define LL_GPIO_SPEED_FREQ_VERY_HIGH GPIO_OSPEEDR_OSPEED0 /*!< Select I/O high output speed */ +/** + * @} + */ +#define LL_GPIO_SPEED_LOW LL_GPIO_SPEED_FREQ_LOW +#define LL_GPIO_SPEED_MEDIUM LL_GPIO_SPEED_FREQ_MEDIUM +#define LL_GPIO_SPEED_FAST LL_GPIO_SPEED_FREQ_HIGH +#define LL_GPIO_SPEED_HIGH LL_GPIO_SPEED_FREQ_VERY_HIGH + + +/** @defgroup GPIO_LL_EC_PULL Pull Up Pull Down + * @{ + */ +#define LL_GPIO_PULL_NO (0x00000000U) /*!< Select I/O no pull */ +#define LL_GPIO_PULL_UP GPIO_PUPDR_PUPD0_0 /*!< Select I/O pull up */ +#define LL_GPIO_PULL_DOWN GPIO_PUPDR_PUPD0_1 /*!< Select I/O pull down */ +/** + * @} + */ + +/** @defgroup GPIO_LL_EC_AF Alternate Function + * @{ + */ +#define LL_GPIO_AF_0 (0x0000000U) /*!< Select alternate function 0 */ +#define LL_GPIO_AF_1 (0x0000001U) /*!< Select alternate function 1 */ +#define LL_GPIO_AF_2 (0x0000002U) /*!< Select alternate function 2 */ +#define LL_GPIO_AF_3 (0x0000003U) /*!< Select alternate function 3 */ +#define LL_GPIO_AF_4 (0x0000004U) /*!< Select alternate function 4 */ +#define LL_GPIO_AF_5 (0x0000005U) /*!< Select alternate function 5 */ +#define LL_GPIO_AF_6 (0x0000006U) /*!< Select alternate function 6 */ +#define LL_GPIO_AF_7 (0x0000007U) /*!< Select alternate function 7 */ +#if defined(STM32G0B0xx) || defined(STM32G0B1xx) || defined (STM32G0C1xx) +#define LL_GPIO_AF_8 (0x0000008U) /*!< Select alternate function 8 */ +#define LL_GPIO_AF_9 (0x0000009U) /*!< Select alternate function 9 */ +#define LL_GPIO_AF_10 (0x000000AU) /*!< Select alternate function 10 */ +#endif /* STM32G0B0xx || STM32G0B1xx || STM32G0C1xx */ +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup GPIO_LL_Exported_Macros GPIO Exported Macros + * @{ + */ + +/** @defgroup GPIO_LL_EM_WRITE_READ Common Write and read registers Macros + * @{ + */ + +/** + * @brief Write a value in GPIO register + * @param __INSTANCE__ GPIO Instance + * @param __REG__ Register to be written + * @param __VALUE__ Value to be written in the register + * @retval None + */ +#define LL_GPIO_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__)) + +/** + * @brief Read a value in GPIO register + * @param __INSTANCE__ GPIO Instance + * @param __REG__ Register to be read + * @retval Register value + */ +#define LL_GPIO_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__) +/** + * @} + */ + +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup GPIO_LL_Exported_Functions GPIO Exported Functions + * @{ + */ + +/** @defgroup GPIO_LL_EF_Port_Configuration Port Configuration + * @{ + */ + +/** + * @brief Configure gpio mode for a dedicated pin on dedicated port. + * @note I/O mode can be Input mode, General purpose output, Alternate function mode or Analog. + * @note Warning: only one pin can be passed as parameter. + * @rmtoll MODER MODEy LL_GPIO_SetPinMode + * @param GPIOx GPIO Port + * @param Pin This parameter can be one of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @param Mode This parameter can be one of the following values: + * @arg @ref LL_GPIO_MODE_INPUT + * @arg @ref LL_GPIO_MODE_OUTPUT + * @arg @ref LL_GPIO_MODE_ALTERNATE + * @arg @ref LL_GPIO_MODE_ANALOG + * @retval None + */ +__STATIC_INLINE void LL_GPIO_SetPinMode(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t Mode) +{ + MODIFY_REG(GPIOx->MODER, ((Pin * Pin) * GPIO_MODER_MODE0), ((Pin * Pin) * Mode)); +} + +/** + * @brief Return gpio mode for a dedicated pin on dedicated port. + * @note I/O mode can be Input mode, General purpose output, Alternate function mode or Analog. + * @note Warning: only one pin can be passed as parameter. + * @rmtoll MODER MODEy LL_GPIO_GetPinMode + * @param GPIOx GPIO Port + * @param Pin This parameter can be one of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @retval Returned value can be one of the following values: + * @arg @ref LL_GPIO_MODE_INPUT + * @arg @ref LL_GPIO_MODE_OUTPUT + * @arg @ref LL_GPIO_MODE_ALTERNATE + * @arg @ref LL_GPIO_MODE_ANALOG + */ +__STATIC_INLINE uint32_t LL_GPIO_GetPinMode(GPIO_TypeDef *GPIOx, uint32_t Pin) +{ + return (uint32_t)(READ_BIT(GPIOx->MODER, ((Pin * Pin) * GPIO_MODER_MODE0)) / (Pin * Pin)); +} + +/** + * @brief Configure gpio output type for several pins on dedicated port. + * @note Output type as to be set when gpio pin is in output or + * alternate modes. Possible type are Push-pull or Open-drain. + * @rmtoll OTYPER OTy LL_GPIO_SetPinOutputType + * @param GPIOx GPIO Port + * @param PinMask This parameter can be a combination of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @arg @ref LL_GPIO_PIN_ALL + * @param OutputType This parameter can be one of the following values: + * @arg @ref LL_GPIO_OUTPUT_PUSHPULL + * @arg @ref LL_GPIO_OUTPUT_OPENDRAIN + * @retval None + */ +__STATIC_INLINE void LL_GPIO_SetPinOutputType(GPIO_TypeDef *GPIOx, uint32_t PinMask, uint32_t OutputType) +{ + MODIFY_REG(GPIOx->OTYPER, PinMask, (PinMask * OutputType)); +} + +/** + * @brief Return gpio output type for several pins on dedicated port. + * @note Output type as to be set when gpio pin is in output or + * alternate modes. Possible type are Push-pull or Open-drain. + * @note Warning: only one pin can be passed as parameter. + * @rmtoll OTYPER OTy LL_GPIO_GetPinOutputType + * @param GPIOx GPIO Port + * @param Pin This parameter can be one of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @arg @ref LL_GPIO_PIN_ALL + * @retval Returned value can be one of the following values: + * @arg @ref LL_GPIO_OUTPUT_PUSHPULL + * @arg @ref LL_GPIO_OUTPUT_OPENDRAIN + */ +__STATIC_INLINE uint32_t LL_GPIO_GetPinOutputType(GPIO_TypeDef *GPIOx, uint32_t Pin) +{ + return (uint32_t)(READ_BIT(GPIOx->OTYPER, Pin) / Pin); +} + +/** + * @brief Configure gpio speed for a dedicated pin on dedicated port. + * @note I/O speed can be Low, Medium, Fast or High speed. + * @note Warning: only one pin can be passed as parameter. + * @note Refer to datasheet for frequency specifications and the power + * supply and load conditions for each speed. + * @rmtoll OSPEEDR OSPEEDy LL_GPIO_SetPinSpeed + * @param GPIOx GPIO Port + * @param Pin This parameter can be one of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @param Speed This parameter can be one of the following values: + * @arg @ref LL_GPIO_SPEED_FREQ_LOW + * @arg @ref LL_GPIO_SPEED_FREQ_MEDIUM + * @arg @ref LL_GPIO_SPEED_FREQ_HIGH + * @arg @ref LL_GPIO_SPEED_FREQ_VERY_HIGH + * @retval None + */ +__STATIC_INLINE void LL_GPIO_SetPinSpeed(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t Speed) +{ + MODIFY_REG(GPIOx->OSPEEDR, ((Pin * Pin) * GPIO_OSPEEDR_OSPEED0), ((Pin * Pin) * Speed)); +} + +/** + * @brief Return gpio speed for a dedicated pin on dedicated port. + * @note I/O speed can be Low, Medium, Fast or High speed. + * @note Warning: only one pin can be passed as parameter. + * @note Refer to datasheet for frequency specifications and the power + * supply and load conditions for each speed. + * @rmtoll OSPEEDR OSPEEDy LL_GPIO_GetPinSpeed + * @param GPIOx GPIO Port + * @param Pin This parameter can be one of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @retval Returned value can be one of the following values: + * @arg @ref LL_GPIO_SPEED_FREQ_LOW + * @arg @ref LL_GPIO_SPEED_FREQ_MEDIUM + * @arg @ref LL_GPIO_SPEED_FREQ_HIGH + * @arg @ref LL_GPIO_SPEED_FREQ_VERY_HIGH + */ +__STATIC_INLINE uint32_t LL_GPIO_GetPinSpeed(GPIO_TypeDef *GPIOx, uint32_t Pin) +{ + return (uint32_t)(READ_BIT(GPIOx->OSPEEDR, ((Pin * Pin) * GPIO_OSPEEDR_OSPEED0)) / (Pin * Pin)); +} + +/** + * @brief Configure gpio pull-up or pull-down for a dedicated pin on a dedicated port. + * @note Warning: only one pin can be passed as parameter. + * @rmtoll PUPDR PUPDy LL_GPIO_SetPinPull + * @param GPIOx GPIO Port + * @param Pin This parameter can be one of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @param Pull This parameter can be one of the following values: + * @arg @ref LL_GPIO_PULL_NO + * @arg @ref LL_GPIO_PULL_UP + * @arg @ref LL_GPIO_PULL_DOWN + * @retval None + */ +__STATIC_INLINE void LL_GPIO_SetPinPull(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t Pull) +{ + MODIFY_REG(GPIOx->PUPDR, ((Pin * Pin) * GPIO_PUPDR_PUPD0), ((Pin * Pin) * Pull)); +} + +/** + * @brief Return gpio pull-up or pull-down for a dedicated pin on a dedicated port + * @note Warning: only one pin can be passed as parameter. + * @rmtoll PUPDR PUPDy LL_GPIO_GetPinPull + * @param GPIOx GPIO Port + * @param Pin This parameter can be one of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @retval Returned value can be one of the following values: + * @arg @ref LL_GPIO_PULL_NO + * @arg @ref LL_GPIO_PULL_UP + * @arg @ref LL_GPIO_PULL_DOWN + */ +__STATIC_INLINE uint32_t LL_GPIO_GetPinPull(GPIO_TypeDef *GPIOx, uint32_t Pin) +{ + return (uint32_t)(READ_BIT(GPIOx->PUPDR, ((Pin * Pin) * GPIO_PUPDR_PUPD0)) / (Pin * Pin)); +} + +/** + * @brief Configure gpio alternate function of a dedicated pin from 0 to 7 for a dedicated port. + * @note Possible values are from AF0 to AF7 depending on target. + * @note Warning: only one pin can be passed as parameter. + * @rmtoll AFRL AFSELy LL_GPIO_SetAFPin_0_7 + * @param GPIOx GPIO Port + * @param Pin This parameter can be one of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @param Alternate This parameter can be one of the following values: + * @arg @ref LL_GPIO_AF_0 + * @arg @ref LL_GPIO_AF_1 + * @arg @ref LL_GPIO_AF_2 + * @arg @ref LL_GPIO_AF_3 + * @arg @ref LL_GPIO_AF_4 + * @arg @ref LL_GPIO_AF_5 + * @arg @ref LL_GPIO_AF_6 + * @arg @ref LL_GPIO_AF_7 + * @retval None + */ +__STATIC_INLINE void LL_GPIO_SetAFPin_0_7(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t Alternate) +{ + MODIFY_REG(GPIOx->AFR[0], ((((Pin * Pin) * Pin) * Pin) * GPIO_AFRL_AFSEL0), + ((((Pin * Pin) * Pin) * Pin) * Alternate)); +} + +/** + * @brief Return gpio alternate function of a dedicated pin from 0 to 7 for a dedicated port. + * @rmtoll AFRL AFSELy LL_GPIO_GetAFPin_0_7 + * @param GPIOx GPIO Port + * @param Pin This parameter can be one of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @retval Returned value can be one of the following values: + * @arg @ref LL_GPIO_AF_0 + * @arg @ref LL_GPIO_AF_1 + * @arg @ref LL_GPIO_AF_2 + * @arg @ref LL_GPIO_AF_3 + * @arg @ref LL_GPIO_AF_4 + * @arg @ref LL_GPIO_AF_5 + * @arg @ref LL_GPIO_AF_6 + * @arg @ref LL_GPIO_AF_7 + */ +__STATIC_INLINE uint32_t LL_GPIO_GetAFPin_0_7(GPIO_TypeDef *GPIOx, uint32_t Pin) +{ + return (uint32_t)(READ_BIT(GPIOx->AFR[0], + ((((Pin * Pin) * Pin) * Pin) * GPIO_AFRL_AFSEL0)) / (((Pin * Pin) * Pin) * Pin)); +} + +/** + * @brief Configure gpio alternate function of a dedicated pin from 8 to 15 for a dedicated port. + * @note Possible values are from AF0 to AF7 depending on target. + * @note Warning: only one pin can be passed as parameter. + * @rmtoll AFRH AFSELy LL_GPIO_SetAFPin_8_15 + * @param GPIOx GPIO Port + * @param Pin This parameter can be one of the following values: + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @param Alternate This parameter can be one of the following values: + * @arg @ref LL_GPIO_AF_0 + * @arg @ref LL_GPIO_AF_1 + * @arg @ref LL_GPIO_AF_2 + * @arg @ref LL_GPIO_AF_3 + * @arg @ref LL_GPIO_AF_4 + * @arg @ref LL_GPIO_AF_5 + * @arg @ref LL_GPIO_AF_6 + * @arg @ref LL_GPIO_AF_7 + * @retval None + */ +__STATIC_INLINE void LL_GPIO_SetAFPin_8_15(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t Alternate) +{ + MODIFY_REG(GPIOx->AFR[1], (((((Pin >> 8U) * (Pin >> 8U)) * (Pin >> 8U)) * (Pin >> 8U)) * GPIO_AFRH_AFSEL8), + (((((Pin >> 8U) * (Pin >> 8U)) * (Pin >> 8U)) * (Pin >> 8U)) * Alternate)); +} + +/** + * @brief Return gpio alternate function of a dedicated pin from 8 to 15 for a dedicated port. + * @note Possible values are from AF0 to AF7 depending on target. + * @rmtoll AFRH AFSELy LL_GPIO_GetAFPin_8_15 + * @param GPIOx GPIO Port + * @param Pin This parameter can be one of the following values: + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @retval Returned value can be one of the following values: + * @arg @ref LL_GPIO_AF_0 + * @arg @ref LL_GPIO_AF_1 + * @arg @ref LL_GPIO_AF_2 + * @arg @ref LL_GPIO_AF_3 + * @arg @ref LL_GPIO_AF_4 + * @arg @ref LL_GPIO_AF_5 + * @arg @ref LL_GPIO_AF_6 + * @arg @ref LL_GPIO_AF_7 + */ +__STATIC_INLINE uint32_t LL_GPIO_GetAFPin_8_15(GPIO_TypeDef *GPIOx, uint32_t Pin) +{ + return (uint32_t)(READ_BIT(GPIOx->AFR[1], + (((((Pin >> 8U) * (Pin >> 8U)) * (Pin >> 8U)) * (Pin >> 8U)) * GPIO_AFRH_AFSEL8)) / ((((Pin >> 8U) * + (Pin >> 8U)) * (Pin >> 8U)) * (Pin >> 8U))); +} + + +/** + * @brief Lock configuration of several pins for a dedicated port. + * @note When the lock sequence has been applied on a port bit, the + * value of this port bit can no longer be modified until the + * next reset. + * @note Each lock bit freezes a specific configuration register + * (control and alternate function registers). + * @rmtoll LCKR LCKK LL_GPIO_LockPin + * @param GPIOx GPIO Port + * @param PinMask This parameter can be a combination of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @arg @ref LL_GPIO_PIN_ALL + * @retval None + */ +__STATIC_INLINE void LL_GPIO_LockPin(GPIO_TypeDef *GPIOx, uint32_t PinMask) +{ + __IO uint32_t temp; + WRITE_REG(GPIOx->LCKR, GPIO_LCKR_LCKK | PinMask); + WRITE_REG(GPIOx->LCKR, PinMask); + WRITE_REG(GPIOx->LCKR, GPIO_LCKR_LCKK | PinMask); + /* Read LCKK register. This read is mandatory to complete key lock sequence */ + temp = READ_REG(GPIOx->LCKR); + (void) temp; +} + +/** + * @brief Return 1 if all pins passed as parameter, of a dedicated port, are locked. else Return 0. + * @rmtoll LCKR LCKy LL_GPIO_IsPinLocked + * @param GPIOx GPIO Port + * @param PinMask This parameter can be a combination of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @arg @ref LL_GPIO_PIN_ALL + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_IsPinLocked(GPIO_TypeDef *GPIOx, uint32_t PinMask) +{ + return ((READ_BIT(GPIOx->LCKR, PinMask) == (PinMask)) ? 1UL : 0UL); +} + +/** + * @brief Return 1 if one of the pin of a dedicated port is locked. else return 0. + * @rmtoll LCKR LCKK LL_GPIO_IsAnyPinLocked + * @param GPIOx GPIO Port + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_IsAnyPinLocked(GPIO_TypeDef *GPIOx) +{ + return ((READ_BIT(GPIOx->LCKR, GPIO_LCKR_LCKK) == (GPIO_LCKR_LCKK)) ? 1UL : 0UL); +} + +/** + * @} + */ + +/** @defgroup GPIO_LL_EF_Data_Access Data Access + * @{ + */ + +/** + * @brief Return full input data register value for a dedicated port. + * @rmtoll IDR IDy LL_GPIO_ReadInputPort + * @param GPIOx GPIO Port + * @retval Input data register value of port + */ +__STATIC_INLINE uint32_t LL_GPIO_ReadInputPort(GPIO_TypeDef *GPIOx) +{ + return (uint32_t)(READ_REG(GPIOx->IDR)); +} + +/** + * @brief Return if input data level for several pins of dedicated port is high or low. + * @rmtoll IDR IDy LL_GPIO_IsInputPinSet + * @param GPIOx GPIO Port + * @param PinMask This parameter can be a combination of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @arg @ref LL_GPIO_PIN_ALL + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_IsInputPinSet(GPIO_TypeDef *GPIOx, uint32_t PinMask) +{ + return ((READ_BIT(GPIOx->IDR, PinMask) == (PinMask)) ? 1UL : 0UL); +} + +/** + * @brief Write output data register for the port. + * @rmtoll ODR ODy LL_GPIO_WriteOutputPort + * @param GPIOx GPIO Port + * @param PortValue Level value for each pin of the port + * @retval None + */ +__STATIC_INLINE void LL_GPIO_WriteOutputPort(GPIO_TypeDef *GPIOx, uint32_t PortValue) +{ + WRITE_REG(GPIOx->ODR, PortValue); +} + +/** + * @brief Return full output data register value for a dedicated port. + * @rmtoll ODR ODy LL_GPIO_ReadOutputPort + * @param GPIOx GPIO Port + * @retval Output data register value of port + */ +__STATIC_INLINE uint32_t LL_GPIO_ReadOutputPort(GPIO_TypeDef *GPIOx) +{ + return (uint32_t)(READ_REG(GPIOx->ODR)); +} + +/** + * @brief Return if input data level for several pins of dedicated port is high or low. + * @rmtoll ODR ODy LL_GPIO_IsOutputPinSet + * @param GPIOx GPIO Port + * @param PinMask This parameter can be a combination of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @arg @ref LL_GPIO_PIN_ALL + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_IsOutputPinSet(GPIO_TypeDef *GPIOx, uint32_t PinMask) +{ + return ((READ_BIT(GPIOx->ODR, PinMask) == (PinMask)) ? 1UL : 0UL); +} + +/** + * @brief Set several pins to high level on dedicated gpio port. + * @rmtoll BSRR BSy LL_GPIO_SetOutputPin + * @param GPIOx GPIO Port + * @param PinMask This parameter can be a combination of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @arg @ref LL_GPIO_PIN_ALL + * @retval None + */ +__STATIC_INLINE void LL_GPIO_SetOutputPin(GPIO_TypeDef *GPIOx, uint32_t PinMask) +{ + WRITE_REG(GPIOx->BSRR, PinMask); +} + +/** + * @brief Set several pins to low level on dedicated gpio port. + * @rmtoll BRR BRy LL_GPIO_ResetOutputPin + * @param GPIOx GPIO Port + * @param PinMask This parameter can be a combination of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @arg @ref LL_GPIO_PIN_ALL + * @retval None + */ +__STATIC_INLINE void LL_GPIO_ResetOutputPin(GPIO_TypeDef *GPIOx, uint32_t PinMask) +{ + WRITE_REG(GPIOx->BRR, PinMask); +} + +/** + * @brief Toggle data value for several pin of dedicated port. + * @rmtoll ODR ODy LL_GPIO_TogglePin + * @param GPIOx GPIO Port + * @param PinMask This parameter can be a combination of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @arg @ref LL_GPIO_PIN_ALL + * @retval None + */ +__STATIC_INLINE void LL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint32_t PinMask) +{ + uint32_t odr = READ_REG(GPIOx->ODR); + WRITE_REG(GPIOx->BSRR, ((odr & PinMask) << 16u) | (~odr & PinMask)); +} + + +/** + * @} + */ + +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup GPIO_LL_EF_Init Initialization and de-initialization functions + * @{ + */ + +ErrorStatus LL_GPIO_DeInit(GPIO_TypeDef *GPIOx); +ErrorStatus LL_GPIO_Init(GPIO_TypeDef *GPIOx, LL_GPIO_InitTypeDef *GPIO_InitStruct); +void LL_GPIO_StructInit(LL_GPIO_InitTypeDef *GPIO_InitStruct); + +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* defined (GPIOA) || defined (GPIOB) || defined (GPIOC) || defined (GPIOD) || defined (GPIOE) || defined (GPIOF) */ +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32G0xx_LL_GPIO_H */ + diff --git a/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_ll_i2c.h b/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_ll_i2c.h new file mode 100644 index 0000000..bf396dd --- /dev/null +++ b/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_ll_i2c.h @@ -0,0 +1,2272 @@ +/** + ****************************************************************************** + * @file stm32g0xx_ll_i2c.h + * @author MCD Application Team + * @brief Header file of I2C LL module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2018 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32G0xx_LL_I2C_H +#define STM32G0xx_LL_I2C_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32g0xx.h" + +/** @addtogroup STM32G0xx_LL_Driver + * @{ + */ + +#if defined (I2C1) || defined (I2C2) || defined (I2C3) + +/** @defgroup I2C_LL I2C + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ + +/* Private constants ---------------------------------------------------------*/ +/** @defgroup I2C_LL_Private_Constants I2C Private Constants + * @{ + */ +/** + * @} + */ + +/* Private macros ------------------------------------------------------------*/ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup I2C_LL_Private_Macros I2C Private Macros + * @{ + */ +/** + * @} + */ +#endif /*USE_FULL_LL_DRIVER*/ + +/* Exported types ------------------------------------------------------------*/ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup I2C_LL_ES_INIT I2C Exported Init structure + * @{ + */ +typedef struct +{ + uint32_t PeripheralMode; /*!< Specifies the peripheral mode. + This parameter can be a value of @ref I2C_LL_EC_PERIPHERAL_MODE. + + This feature can be modified afterwards using unitary function + @ref LL_I2C_SetMode(). */ + + uint32_t Timing; /*!< Specifies the SDA setup, hold time and the SCL high, low period values. + This parameter must be set by referring to the STM32CubeMX Tool and + the helper macro @ref __LL_I2C_CONVERT_TIMINGS(). + + This feature can be modified afterwards using unitary function + @ref LL_I2C_SetTiming(). */ + + uint32_t AnalogFilter; /*!< Enables or disables analog noise filter. + This parameter can be a value of @ref I2C_LL_EC_ANALOGFILTER_SELECTION. + + This feature can be modified afterwards using unitary functions + @ref LL_I2C_EnableAnalogFilter() or LL_I2C_DisableAnalogFilter(). */ + + uint32_t DigitalFilter; /*!< Configures the digital noise filter. + This parameter can be a number between Min_Data = 0x00 and Max_Data = 0x0F. + + This feature can be modified afterwards using unitary function + @ref LL_I2C_SetDigitalFilter(). */ + + uint32_t OwnAddress1; /*!< Specifies the device own address 1. + This parameter must be a value between Min_Data = 0x00 and Max_Data = 0x3FF. + + This feature can be modified afterwards using unitary function + @ref LL_I2C_SetOwnAddress1(). */ + + uint32_t TypeAcknowledge; /*!< Specifies the ACKnowledge or Non ACKnowledge condition after the address receive + match code or next received byte. + This parameter can be a value of @ref I2C_LL_EC_I2C_ACKNOWLEDGE. + + This feature can be modified afterwards using unitary function + @ref LL_I2C_AcknowledgeNextData(). */ + + uint32_t OwnAddrSize; /*!< Specifies the device own address 1 size (7-bit or 10-bit). + This parameter can be a value of @ref I2C_LL_EC_OWNADDRESS1. + + This feature can be modified afterwards using unitary function + @ref LL_I2C_SetOwnAddress1(). */ +} LL_I2C_InitTypeDef; +/** + * @} + */ +#endif /*USE_FULL_LL_DRIVER*/ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup I2C_LL_Exported_Constants I2C Exported Constants + * @{ + */ + +/** @defgroup I2C_LL_EC_CLEAR_FLAG Clear Flags Defines + * @brief Flags defines which can be used with LL_I2C_WriteReg function + * @{ + */ +#define LL_I2C_ICR_ADDRCF I2C_ICR_ADDRCF /*!< Address Matched flag */ +#define LL_I2C_ICR_NACKCF I2C_ICR_NACKCF /*!< Not Acknowledge flag */ +#define LL_I2C_ICR_STOPCF I2C_ICR_STOPCF /*!< Stop detection flag */ +#define LL_I2C_ICR_BERRCF I2C_ICR_BERRCF /*!< Bus error flag */ +#define LL_I2C_ICR_ARLOCF I2C_ICR_ARLOCF /*!< Arbitration Lost flag */ +#define LL_I2C_ICR_OVRCF I2C_ICR_OVRCF /*!< Overrun/Underrun flag */ +#define LL_I2C_ICR_PECCF I2C_ICR_PECCF /*!< PEC error flag */ +#define LL_I2C_ICR_TIMOUTCF I2C_ICR_TIMOUTCF /*!< Timeout detection flag */ +#define LL_I2C_ICR_ALERTCF I2C_ICR_ALERTCF /*!< Alert flag */ +/** + * @} + */ + +/** @defgroup I2C_LL_EC_GET_FLAG Get Flags Defines + * @brief Flags defines which can be used with LL_I2C_ReadReg function + * @{ + */ +#define LL_I2C_ISR_TXE I2C_ISR_TXE /*!< Transmit data register empty */ +#define LL_I2C_ISR_TXIS I2C_ISR_TXIS /*!< Transmit interrupt status */ +#define LL_I2C_ISR_RXNE I2C_ISR_RXNE /*!< Receive data register not empty */ +#define LL_I2C_ISR_ADDR I2C_ISR_ADDR /*!< Address matched (slave mode) */ +#define LL_I2C_ISR_NACKF I2C_ISR_NACKF /*!< Not Acknowledge received flag */ +#define LL_I2C_ISR_STOPF I2C_ISR_STOPF /*!< Stop detection flag */ +#define LL_I2C_ISR_TC I2C_ISR_TC /*!< Transfer Complete (master mode) */ +#define LL_I2C_ISR_TCR I2C_ISR_TCR /*!< Transfer Complete Reload */ +#define LL_I2C_ISR_BERR I2C_ISR_BERR /*!< Bus error */ +#define LL_I2C_ISR_ARLO I2C_ISR_ARLO /*!< Arbitration lost */ +#define LL_I2C_ISR_OVR I2C_ISR_OVR /*!< Overrun/Underrun (slave mode) */ +#define LL_I2C_ISR_PECERR I2C_ISR_PECERR /*!< PEC Error in reception (SMBus mode) */ +#define LL_I2C_ISR_TIMEOUT I2C_ISR_TIMEOUT /*!< Timeout detection flag (SMBus mode) */ +#define LL_I2C_ISR_ALERT I2C_ISR_ALERT /*!< SMBus alert (SMBus mode) */ +#define LL_I2C_ISR_BUSY I2C_ISR_BUSY /*!< Bus busy */ +/** + * @} + */ + +/** @defgroup I2C_LL_EC_IT IT Defines + * @brief IT defines which can be used with LL_I2C_ReadReg and LL_I2C_WriteReg functions + * @{ + */ +#define LL_I2C_CR1_TXIE I2C_CR1_TXIE /*!< TX Interrupt enable */ +#define LL_I2C_CR1_RXIE I2C_CR1_RXIE /*!< RX Interrupt enable */ +#define LL_I2C_CR1_ADDRIE I2C_CR1_ADDRIE /*!< Address match Interrupt enable (slave only) */ +#define LL_I2C_CR1_NACKIE I2C_CR1_NACKIE /*!< Not acknowledge received Interrupt enable */ +#define LL_I2C_CR1_STOPIE I2C_CR1_STOPIE /*!< STOP detection Interrupt enable */ +#define LL_I2C_CR1_TCIE I2C_CR1_TCIE /*!< Transfer Complete interrupt enable */ +#define LL_I2C_CR1_ERRIE I2C_CR1_ERRIE /*!< Error interrupts enable */ +/** + * @} + */ + +/** @defgroup I2C_LL_EC_PERIPHERAL_MODE Peripheral Mode + * @{ + */ +#define LL_I2C_MODE_I2C 0x00000000U /*!< I2C Master or Slave mode */ +#define LL_I2C_MODE_SMBUS_HOST I2C_CR1_SMBHEN /*!< SMBus Host address acknowledge */ +#define LL_I2C_MODE_SMBUS_DEVICE 0x00000000U /*!< SMBus Device default mode + (Default address not acknowledge) */ +#define LL_I2C_MODE_SMBUS_DEVICE_ARP I2C_CR1_SMBDEN /*!< SMBus Device Default address acknowledge */ +/** + * @} + */ + +/** @defgroup I2C_LL_EC_ANALOGFILTER_SELECTION Analog Filter Selection + * @{ + */ +#define LL_I2C_ANALOGFILTER_ENABLE 0x00000000U /*!< Analog filter is enabled. */ +#define LL_I2C_ANALOGFILTER_DISABLE I2C_CR1_ANFOFF /*!< Analog filter is disabled. */ +/** + * @} + */ + +/** @defgroup I2C_LL_EC_ADDRESSING_MODE Master Addressing Mode + * @{ + */ +#define LL_I2C_ADDRESSING_MODE_7BIT 0x00000000U /*!< Master operates in 7-bit addressing mode. */ +#define LL_I2C_ADDRESSING_MODE_10BIT I2C_CR2_ADD10 /*!< Master operates in 10-bit addressing mode.*/ +/** + * @} + */ + +/** @defgroup I2C_LL_EC_OWNADDRESS1 Own Address 1 Length + * @{ + */ +#define LL_I2C_OWNADDRESS1_7BIT 0x00000000U /*!< Own address 1 is a 7-bit address. */ +#define LL_I2C_OWNADDRESS1_10BIT I2C_OAR1_OA1MODE /*!< Own address 1 is a 10-bit address.*/ +/** + * @} + */ + +/** @defgroup I2C_LL_EC_OWNADDRESS2 Own Address 2 Masks + * @{ + */ +#define LL_I2C_OWNADDRESS2_NOMASK I2C_OAR2_OA2NOMASK /*!< Own Address2 No mask. */ +#define LL_I2C_OWNADDRESS2_MASK01 I2C_OAR2_OA2MASK01 /*!< Only Address2 bits[7:2] are compared. */ +#define LL_I2C_OWNADDRESS2_MASK02 I2C_OAR2_OA2MASK02 /*!< Only Address2 bits[7:3] are compared. */ +#define LL_I2C_OWNADDRESS2_MASK03 I2C_OAR2_OA2MASK03 /*!< Only Address2 bits[7:4] are compared. */ +#define LL_I2C_OWNADDRESS2_MASK04 I2C_OAR2_OA2MASK04 /*!< Only Address2 bits[7:5] are compared. */ +#define LL_I2C_OWNADDRESS2_MASK05 I2C_OAR2_OA2MASK05 /*!< Only Address2 bits[7:6] are compared. */ +#define LL_I2C_OWNADDRESS2_MASK06 I2C_OAR2_OA2MASK06 /*!< Only Address2 bits[7] are compared. */ +#define LL_I2C_OWNADDRESS2_MASK07 I2C_OAR2_OA2MASK07 /*!< No comparison is done. + All Address2 are acknowledged. */ +/** + * @} + */ + +/** @defgroup I2C_LL_EC_I2C_ACKNOWLEDGE Acknowledge Generation + * @{ + */ +#define LL_I2C_ACK 0x00000000U /*!< ACK is sent after current received byte. */ +#define LL_I2C_NACK I2C_CR2_NACK /*!< NACK is sent after current received byte.*/ +/** + * @} + */ + +/** @defgroup I2C_LL_EC_ADDRSLAVE Slave Address Length + * @{ + */ +#define LL_I2C_ADDRSLAVE_7BIT 0x00000000U /*!< Slave Address in 7-bit. */ +#define LL_I2C_ADDRSLAVE_10BIT I2C_CR2_ADD10 /*!< Slave Address in 10-bit.*/ +/** + * @} + */ + +/** @defgroup I2C_LL_EC_REQUEST Transfer Request Direction + * @{ + */ +#define LL_I2C_REQUEST_WRITE 0x00000000U /*!< Master request a write transfer. */ +#define LL_I2C_REQUEST_READ I2C_CR2_RD_WRN /*!< Master request a read transfer. */ +/** + * @} + */ + +/** @defgroup I2C_LL_EC_MODE Transfer End Mode + * @{ + */ +#define LL_I2C_MODE_RELOAD I2C_CR2_RELOAD /*!< Enable I2C Reload mode. */ +#define LL_I2C_MODE_AUTOEND I2C_CR2_AUTOEND /*!< Enable I2C Automatic end mode + with no HW PEC comparison. */ +#define LL_I2C_MODE_SOFTEND 0x00000000U /*!< Enable I2C Software end mode + with no HW PEC comparison. */ +#define LL_I2C_MODE_SMBUS_RELOAD LL_I2C_MODE_RELOAD /*!< Enable SMBUS Automatic end mode + with HW PEC comparison. */ +#define LL_I2C_MODE_SMBUS_AUTOEND_NO_PEC LL_I2C_MODE_AUTOEND /*!< Enable SMBUS Automatic end mode + with HW PEC comparison. */ +#define LL_I2C_MODE_SMBUS_SOFTEND_NO_PEC LL_I2C_MODE_SOFTEND /*!< Enable SMBUS Software end mode + with HW PEC comparison. */ +#define LL_I2C_MODE_SMBUS_AUTOEND_WITH_PEC (uint32_t)(LL_I2C_MODE_AUTOEND | I2C_CR2_PECBYTE) +/*!< Enable SMBUS Automatic end mode with HW PEC comparison. */ +#define LL_I2C_MODE_SMBUS_SOFTEND_WITH_PEC (uint32_t)(LL_I2C_MODE_SOFTEND | I2C_CR2_PECBYTE) +/*!< Enable SMBUS Software end mode with HW PEC comparison. */ +/** + * @} + */ + +/** @defgroup I2C_LL_EC_GENERATE Start And Stop Generation + * @{ + */ +#define LL_I2C_GENERATE_NOSTARTSTOP 0x00000000U +/*!< Don't Generate Stop and Start condition. */ +#define LL_I2C_GENERATE_STOP (uint32_t)(0x80000000U | I2C_CR2_STOP) +/*!< Generate Stop condition (Size should be set to 0). */ +#define LL_I2C_GENERATE_START_READ (uint32_t)(0x80000000U | I2C_CR2_START | I2C_CR2_RD_WRN) +/*!< Generate Start for read request. */ +#define LL_I2C_GENERATE_START_WRITE (uint32_t)(0x80000000U | I2C_CR2_START) +/*!< Generate Start for write request. */ +#define LL_I2C_GENERATE_RESTART_7BIT_READ (uint32_t)(0x80000000U | I2C_CR2_START | I2C_CR2_RD_WRN) +/*!< Generate Restart for read request, slave 7Bit address. */ +#define LL_I2C_GENERATE_RESTART_7BIT_WRITE (uint32_t)(0x80000000U | I2C_CR2_START) +/*!< Generate Restart for write request, slave 7Bit address. */ +#define LL_I2C_GENERATE_RESTART_10BIT_READ (uint32_t)(0x80000000U | I2C_CR2_START | \ + I2C_CR2_RD_WRN | I2C_CR2_HEAD10R) +/*!< Generate Restart for read request, slave 10Bit address. */ +#define LL_I2C_GENERATE_RESTART_10BIT_WRITE (uint32_t)(0x80000000U | I2C_CR2_START) +/*!< Generate Restart for write request, slave 10Bit address.*/ +/** + * @} + */ + +/** @defgroup I2C_LL_EC_DIRECTION Read Write Direction + * @{ + */ +#define LL_I2C_DIRECTION_WRITE 0x00000000U /*!< Write transfer request by master, + slave enters receiver mode. */ +#define LL_I2C_DIRECTION_READ I2C_ISR_DIR /*!< Read transfer request by master, + slave enters transmitter mode.*/ +/** + * @} + */ + +/** @defgroup I2C_LL_EC_DMA_REG_DATA DMA Register Data + * @{ + */ +#define LL_I2C_DMA_REG_DATA_TRANSMIT 0x00000000U /*!< Get address of data register used for + transmission */ +#define LL_I2C_DMA_REG_DATA_RECEIVE 0x00000001U /*!< Get address of data register used for + reception */ +/** + * @} + */ + +/** @defgroup I2C_LL_EC_SMBUS_TIMEOUTA_MODE SMBus TimeoutA Mode SCL SDA Timeout + * @{ + */ +#define LL_I2C_SMBUS_TIMEOUTA_MODE_SCL_LOW 0x00000000U /*!< TimeoutA is used to detect + SCL low level timeout. */ +#define LL_I2C_SMBUS_TIMEOUTA_MODE_SDA_SCL_HIGH I2C_TIMEOUTR_TIDLE /*!< TimeoutA is used to detect + both SCL and SDA high level timeout.*/ +/** + * @} + */ + +/** @defgroup I2C_LL_EC_SMBUS_TIMEOUT_SELECTION SMBus Timeout Selection + * @{ + */ +#define LL_I2C_SMBUS_TIMEOUTA I2C_TIMEOUTR_TIMOUTEN /*!< TimeoutA enable bit */ +#define LL_I2C_SMBUS_TIMEOUTB I2C_TIMEOUTR_TEXTEN /*!< TimeoutB (extended clock) + enable bit */ +#define LL_I2C_SMBUS_ALL_TIMEOUT (uint32_t)(I2C_TIMEOUTR_TIMOUTEN | \ + I2C_TIMEOUTR_TEXTEN) /*!< TimeoutA and TimeoutB +(extended clock) enable bits */ +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup I2C_LL_Exported_Macros I2C Exported Macros + * @{ + */ + +/** @defgroup I2C_LL_EM_WRITE_READ Common Write and read registers Macros + * @{ + */ + +/** + * @brief Write a value in I2C register + * @param __INSTANCE__ I2C Instance + * @param __REG__ Register to be written + * @param __VALUE__ Value to be written in the register + * @retval None + */ +#define LL_I2C_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__)) + +/** + * @brief Read a value in I2C register + * @param __INSTANCE__ I2C Instance + * @param __REG__ Register to be read + * @retval Register value + */ +#define LL_I2C_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__) +/** + * @} + */ + +/** @defgroup I2C_LL_EM_CONVERT_TIMINGS Convert SDA SCL timings + * @{ + */ +/** + * @brief Configure the SDA setup, hold time and the SCL high, low period. + * @param __PRESCALER__ This parameter must be a value between Min_Data=0 and Max_Data=0xF. + * @param __SETUP_TIME__ This parameter must be a value between Min_Data=0 and Max_Data=0xF. + (tscldel = (SCLDEL+1)xtpresc) + * @param __HOLD_TIME__ This parameter must be a value between Min_Data=0 and Max_Data=0xF. + (tsdadel = SDADELxtpresc) + * @param __SCLH_PERIOD__ This parameter must be a value between Min_Data=0 and Max_Data=0xFF. + (tsclh = (SCLH+1)xtpresc) + * @param __SCLL_PERIOD__ This parameter must be a value between Min_Data=0 and Max_Data=0xFF. + (tscll = (SCLL+1)xtpresc) + * @retval Value between Min_Data=0 and Max_Data=0xFFFFFFFF + */ +#define __LL_I2C_CONVERT_TIMINGS(__PRESCALER__, __SETUP_TIME__, __HOLD_TIME__, __SCLH_PERIOD__, __SCLL_PERIOD__) \ + ((((uint32_t)(__PRESCALER__) << I2C_TIMINGR_PRESC_Pos) & I2C_TIMINGR_PRESC) | \ + (((uint32_t)(__SETUP_TIME__) << I2C_TIMINGR_SCLDEL_Pos) & I2C_TIMINGR_SCLDEL) | \ + (((uint32_t)(__HOLD_TIME__) << I2C_TIMINGR_SDADEL_Pos) & I2C_TIMINGR_SDADEL) | \ + (((uint32_t)(__SCLH_PERIOD__) << I2C_TIMINGR_SCLH_Pos) & I2C_TIMINGR_SCLH) | \ + (((uint32_t)(__SCLL_PERIOD__) << I2C_TIMINGR_SCLL_Pos) & I2C_TIMINGR_SCLL)) +/** + * @} + */ + +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup I2C_LL_Exported_Functions I2C Exported Functions + * @{ + */ + +/** @defgroup I2C_LL_EF_Configuration Configuration + * @{ + */ + +/** + * @brief Enable I2C peripheral (PE = 1). + * @rmtoll CR1 PE LL_I2C_Enable + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_Enable(I2C_TypeDef *I2Cx) +{ + SET_BIT(I2Cx->CR1, I2C_CR1_PE); +} + +/** + * @brief Disable I2C peripheral (PE = 0). + * @note When PE = 0, the I2C SCL and SDA lines are released. + * Internal state machines and status bits are put back to their reset value. + * When cleared, PE must be kept low for at least 3 APB clock cycles. + * @rmtoll CR1 PE LL_I2C_Disable + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_Disable(I2C_TypeDef *I2Cx) +{ + CLEAR_BIT(I2Cx->CR1, I2C_CR1_PE); +} + +/** + * @brief Check if the I2C peripheral is enabled or disabled. + * @rmtoll CR1 PE LL_I2C_IsEnabled + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsEnabled(I2C_TypeDef *I2Cx) +{ + return ((READ_BIT(I2Cx->CR1, I2C_CR1_PE) == (I2C_CR1_PE)) ? 1UL : 0UL); +} + +/** + * @brief Configure Noise Filters (Analog and Digital). + * @note If the analog filter is also enabled, the digital filter is added to analog filter. + * The filters can only be programmed when the I2C is disabled (PE = 0). + * @rmtoll CR1 ANFOFF LL_I2C_ConfigFilters\n + * CR1 DNF LL_I2C_ConfigFilters + * @param I2Cx I2C Instance. + * @param AnalogFilter This parameter can be one of the following values: + * @arg @ref LL_I2C_ANALOGFILTER_ENABLE + * @arg @ref LL_I2C_ANALOGFILTER_DISABLE + * @param DigitalFilter This parameter must be a value between Min_Data=0x00 (Digital filter disabled) + and Max_Data=0x0F (Digital filter enabled and filtering capability up to 15*ti2cclk). + * This parameter is used to configure the digital noise filter on SDA and SCL input. + * The digital filter will filter spikes with a length of up to DNF[3:0]*ti2cclk. + * @retval None + */ +__STATIC_INLINE void LL_I2C_ConfigFilters(I2C_TypeDef *I2Cx, uint32_t AnalogFilter, uint32_t DigitalFilter) +{ + MODIFY_REG(I2Cx->CR1, I2C_CR1_ANFOFF | I2C_CR1_DNF, AnalogFilter | (DigitalFilter << I2C_CR1_DNF_Pos)); +} + +/** + * @brief Configure Digital Noise Filter. + * @note If the analog filter is also enabled, the digital filter is added to analog filter. + * This filter can only be programmed when the I2C is disabled (PE = 0). + * @rmtoll CR1 DNF LL_I2C_SetDigitalFilter + * @param I2Cx I2C Instance. + * @param DigitalFilter This parameter must be a value between Min_Data=0x00 (Digital filter disabled) + and Max_Data=0x0F (Digital filter enabled and filtering capability up to 15*ti2cclk). + * This parameter is used to configure the digital noise filter on SDA and SCL input. + * The digital filter will filter spikes with a length of up to DNF[3:0]*ti2cclk. + * @retval None + */ +__STATIC_INLINE void LL_I2C_SetDigitalFilter(I2C_TypeDef *I2Cx, uint32_t DigitalFilter) +{ + MODIFY_REG(I2Cx->CR1, I2C_CR1_DNF, DigitalFilter << I2C_CR1_DNF_Pos); +} + +/** + * @brief Get the current Digital Noise Filter configuration. + * @rmtoll CR1 DNF LL_I2C_GetDigitalFilter + * @param I2Cx I2C Instance. + * @retval Value between Min_Data=0x0 and Max_Data=0xF + */ +__STATIC_INLINE uint32_t LL_I2C_GetDigitalFilter(I2C_TypeDef *I2Cx) +{ + return (uint32_t)(READ_BIT(I2Cx->CR1, I2C_CR1_DNF) >> I2C_CR1_DNF_Pos); +} + +/** + * @brief Enable Analog Noise Filter. + * @note This filter can only be programmed when the I2C is disabled (PE = 0). + * @rmtoll CR1 ANFOFF LL_I2C_EnableAnalogFilter + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_EnableAnalogFilter(I2C_TypeDef *I2Cx) +{ + CLEAR_BIT(I2Cx->CR1, I2C_CR1_ANFOFF); +} + +/** + * @brief Disable Analog Noise Filter. + * @note This filter can only be programmed when the I2C is disabled (PE = 0). + * @rmtoll CR1 ANFOFF LL_I2C_DisableAnalogFilter + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_DisableAnalogFilter(I2C_TypeDef *I2Cx) +{ + SET_BIT(I2Cx->CR1, I2C_CR1_ANFOFF); +} + +/** + * @brief Check if Analog Noise Filter is enabled or disabled. + * @rmtoll CR1 ANFOFF LL_I2C_IsEnabledAnalogFilter + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsEnabledAnalogFilter(I2C_TypeDef *I2Cx) +{ + return ((READ_BIT(I2Cx->CR1, I2C_CR1_ANFOFF) != (I2C_CR1_ANFOFF)) ? 1UL : 0UL); +} + +/** + * @brief Enable DMA transmission requests. + * @rmtoll CR1 TXDMAEN LL_I2C_EnableDMAReq_TX + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_EnableDMAReq_TX(I2C_TypeDef *I2Cx) +{ + SET_BIT(I2Cx->CR1, I2C_CR1_TXDMAEN); +} + +/** + * @brief Disable DMA transmission requests. + * @rmtoll CR1 TXDMAEN LL_I2C_DisableDMAReq_TX + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_DisableDMAReq_TX(I2C_TypeDef *I2Cx) +{ + CLEAR_BIT(I2Cx->CR1, I2C_CR1_TXDMAEN); +} + +/** + * @brief Check if DMA transmission requests are enabled or disabled. + * @rmtoll CR1 TXDMAEN LL_I2C_IsEnabledDMAReq_TX + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsEnabledDMAReq_TX(I2C_TypeDef *I2Cx) +{ + return ((READ_BIT(I2Cx->CR1, I2C_CR1_TXDMAEN) == (I2C_CR1_TXDMAEN)) ? 1UL : 0UL); +} + +/** + * @brief Enable DMA reception requests. + * @rmtoll CR1 RXDMAEN LL_I2C_EnableDMAReq_RX + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_EnableDMAReq_RX(I2C_TypeDef *I2Cx) +{ + SET_BIT(I2Cx->CR1, I2C_CR1_RXDMAEN); +} + +/** + * @brief Disable DMA reception requests. + * @rmtoll CR1 RXDMAEN LL_I2C_DisableDMAReq_RX + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_DisableDMAReq_RX(I2C_TypeDef *I2Cx) +{ + CLEAR_BIT(I2Cx->CR1, I2C_CR1_RXDMAEN); +} + +/** + * @brief Check if DMA reception requests are enabled or disabled. + * @rmtoll CR1 RXDMAEN LL_I2C_IsEnabledDMAReq_RX + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsEnabledDMAReq_RX(I2C_TypeDef *I2Cx) +{ + return ((READ_BIT(I2Cx->CR1, I2C_CR1_RXDMAEN) == (I2C_CR1_RXDMAEN)) ? 1UL : 0UL); +} + +/** + * @brief Get the data register address used for DMA transfer + * @rmtoll TXDR TXDATA LL_I2C_DMA_GetRegAddr\n + * RXDR RXDATA LL_I2C_DMA_GetRegAddr + * @param I2Cx I2C Instance + * @param Direction This parameter can be one of the following values: + * @arg @ref LL_I2C_DMA_REG_DATA_TRANSMIT + * @arg @ref LL_I2C_DMA_REG_DATA_RECEIVE + * @retval Address of data register + */ +__STATIC_INLINE uint32_t LL_I2C_DMA_GetRegAddr(I2C_TypeDef *I2Cx, uint32_t Direction) +{ + uint32_t data_reg_addr; + + if (Direction == LL_I2C_DMA_REG_DATA_TRANSMIT) + { + /* return address of TXDR register */ + data_reg_addr = (uint32_t) &(I2Cx->TXDR); + } + else + { + /* return address of RXDR register */ + data_reg_addr = (uint32_t) &(I2Cx->RXDR); + } + + return data_reg_addr; +} + +/** + * @brief Enable Clock stretching. + * @note This bit can only be programmed when the I2C is disabled (PE = 0). + * @rmtoll CR1 NOSTRETCH LL_I2C_EnableClockStretching + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_EnableClockStretching(I2C_TypeDef *I2Cx) +{ + CLEAR_BIT(I2Cx->CR1, I2C_CR1_NOSTRETCH); +} + +/** + * @brief Disable Clock stretching. + * @note This bit can only be programmed when the I2C is disabled (PE = 0). + * @rmtoll CR1 NOSTRETCH LL_I2C_DisableClockStretching + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_DisableClockStretching(I2C_TypeDef *I2Cx) +{ + SET_BIT(I2Cx->CR1, I2C_CR1_NOSTRETCH); +} + +/** + * @brief Check if Clock stretching is enabled or disabled. + * @rmtoll CR1 NOSTRETCH LL_I2C_IsEnabledClockStretching + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsEnabledClockStretching(I2C_TypeDef *I2Cx) +{ + return ((READ_BIT(I2Cx->CR1, I2C_CR1_NOSTRETCH) != (I2C_CR1_NOSTRETCH)) ? 1UL : 0UL); +} + +/** + * @brief Enable hardware byte control in slave mode. + * @rmtoll CR1 SBC LL_I2C_EnableSlaveByteControl + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_EnableSlaveByteControl(I2C_TypeDef *I2Cx) +{ + SET_BIT(I2Cx->CR1, I2C_CR1_SBC); +} + +/** + * @brief Disable hardware byte control in slave mode. + * @rmtoll CR1 SBC LL_I2C_DisableSlaveByteControl + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_DisableSlaveByteControl(I2C_TypeDef *I2Cx) +{ + CLEAR_BIT(I2Cx->CR1, I2C_CR1_SBC); +} + +/** + * @brief Check if hardware byte control in slave mode is enabled or disabled. + * @rmtoll CR1 SBC LL_I2C_IsEnabledSlaveByteControl + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsEnabledSlaveByteControl(I2C_TypeDef *I2Cx) +{ + return ((READ_BIT(I2Cx->CR1, I2C_CR1_SBC) == (I2C_CR1_SBC)) ? 1UL : 0UL); +} + +/** + * @brief Enable Wakeup from STOP. + * @note The macro IS_I2C_WAKEUP_FROMSTOP_INSTANCE(I2Cx) can be used to check whether or not + * WakeUpFromStop feature is supported by the I2Cx Instance. + * @note This bit can only be programmed when Digital Filter is disabled. + * @rmtoll CR1 WUPEN LL_I2C_EnableWakeUpFromStop + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_EnableWakeUpFromStop(I2C_TypeDef *I2Cx) +{ + SET_BIT(I2Cx->CR1, I2C_CR1_WUPEN); +} + +/** + * @brief Disable Wakeup from STOP. + * @note The macro IS_I2C_WAKEUP_FROMSTOP_INSTANCE(I2Cx) can be used to check whether or not + * WakeUpFromStop feature is supported by the I2Cx Instance. + * @rmtoll CR1 WUPEN LL_I2C_DisableWakeUpFromStop + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_DisableWakeUpFromStop(I2C_TypeDef *I2Cx) +{ + CLEAR_BIT(I2Cx->CR1, I2C_CR1_WUPEN); +} + +/** + * @brief Check if Wakeup from STOP is enabled or disabled. + * @note The macro IS_I2C_WAKEUP_FROMSTOP_INSTANCE(I2Cx) can be used to check whether or not + * WakeUpFromStop feature is supported by the I2Cx Instance. + * @rmtoll CR1 WUPEN LL_I2C_IsEnabledWakeUpFromStop + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsEnabledWakeUpFromStop(I2C_TypeDef *I2Cx) +{ + return ((READ_BIT(I2Cx->CR1, I2C_CR1_WUPEN) == (I2C_CR1_WUPEN)) ? 1UL : 0UL); +} + +/** + * @brief Enable General Call. + * @note When enabled the Address 0x00 is ACKed. + * @rmtoll CR1 GCEN LL_I2C_EnableGeneralCall + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_EnableGeneralCall(I2C_TypeDef *I2Cx) +{ + SET_BIT(I2Cx->CR1, I2C_CR1_GCEN); +} + +/** + * @brief Disable General Call. + * @note When disabled the Address 0x00 is NACKed. + * @rmtoll CR1 GCEN LL_I2C_DisableGeneralCall + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_DisableGeneralCall(I2C_TypeDef *I2Cx) +{ + CLEAR_BIT(I2Cx->CR1, I2C_CR1_GCEN); +} + +/** + * @brief Check if General Call is enabled or disabled. + * @rmtoll CR1 GCEN LL_I2C_IsEnabledGeneralCall + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsEnabledGeneralCall(I2C_TypeDef *I2Cx) +{ + return ((READ_BIT(I2Cx->CR1, I2C_CR1_GCEN) == (I2C_CR1_GCEN)) ? 1UL : 0UL); +} + +/** + * @brief Configure the Master to operate in 7-bit or 10-bit addressing mode. + * @note Changing this bit is not allowed, when the START bit is set. + * @rmtoll CR2 ADD10 LL_I2C_SetMasterAddressingMode + * @param I2Cx I2C Instance. + * @param AddressingMode This parameter can be one of the following values: + * @arg @ref LL_I2C_ADDRESSING_MODE_7BIT + * @arg @ref LL_I2C_ADDRESSING_MODE_10BIT + * @retval None + */ +__STATIC_INLINE void LL_I2C_SetMasterAddressingMode(I2C_TypeDef *I2Cx, uint32_t AddressingMode) +{ + MODIFY_REG(I2Cx->CR2, I2C_CR2_ADD10, AddressingMode); +} + +/** + * @brief Get the Master addressing mode. + * @rmtoll CR2 ADD10 LL_I2C_GetMasterAddressingMode + * @param I2Cx I2C Instance. + * @retval Returned value can be one of the following values: + * @arg @ref LL_I2C_ADDRESSING_MODE_7BIT + * @arg @ref LL_I2C_ADDRESSING_MODE_10BIT + */ +__STATIC_INLINE uint32_t LL_I2C_GetMasterAddressingMode(I2C_TypeDef *I2Cx) +{ + return (uint32_t)(READ_BIT(I2Cx->CR2, I2C_CR2_ADD10)); +} + +/** + * @brief Set the Own Address1. + * @rmtoll OAR1 OA1 LL_I2C_SetOwnAddress1\n + * OAR1 OA1MODE LL_I2C_SetOwnAddress1 + * @param I2Cx I2C Instance. + * @param OwnAddress1 This parameter must be a value between Min_Data=0 and Max_Data=0x3FF. + * @param OwnAddrSize This parameter can be one of the following values: + * @arg @ref LL_I2C_OWNADDRESS1_7BIT + * @arg @ref LL_I2C_OWNADDRESS1_10BIT + * @retval None + */ +__STATIC_INLINE void LL_I2C_SetOwnAddress1(I2C_TypeDef *I2Cx, uint32_t OwnAddress1, uint32_t OwnAddrSize) +{ + MODIFY_REG(I2Cx->OAR1, I2C_OAR1_OA1 | I2C_OAR1_OA1MODE, OwnAddress1 | OwnAddrSize); +} + +/** + * @brief Enable acknowledge on Own Address1 match address. + * @rmtoll OAR1 OA1EN LL_I2C_EnableOwnAddress1 + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_EnableOwnAddress1(I2C_TypeDef *I2Cx) +{ + SET_BIT(I2Cx->OAR1, I2C_OAR1_OA1EN); +} + +/** + * @brief Disable acknowledge on Own Address1 match address. + * @rmtoll OAR1 OA1EN LL_I2C_DisableOwnAddress1 + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_DisableOwnAddress1(I2C_TypeDef *I2Cx) +{ + CLEAR_BIT(I2Cx->OAR1, I2C_OAR1_OA1EN); +} + +/** + * @brief Check if Own Address1 acknowledge is enabled or disabled. + * @rmtoll OAR1 OA1EN LL_I2C_IsEnabledOwnAddress1 + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsEnabledOwnAddress1(I2C_TypeDef *I2Cx) +{ + return ((READ_BIT(I2Cx->OAR1, I2C_OAR1_OA1EN) == (I2C_OAR1_OA1EN)) ? 1UL : 0UL); +} + +/** + * @brief Set the 7bits Own Address2. + * @note This action has no effect if own address2 is enabled. + * @rmtoll OAR2 OA2 LL_I2C_SetOwnAddress2\n + * OAR2 OA2MSK LL_I2C_SetOwnAddress2 + * @param I2Cx I2C Instance. + * @param OwnAddress2 Value between Min_Data=0 and Max_Data=0x7F. + * @param OwnAddrMask This parameter can be one of the following values: + * @arg @ref LL_I2C_OWNADDRESS2_NOMASK + * @arg @ref LL_I2C_OWNADDRESS2_MASK01 + * @arg @ref LL_I2C_OWNADDRESS2_MASK02 + * @arg @ref LL_I2C_OWNADDRESS2_MASK03 + * @arg @ref LL_I2C_OWNADDRESS2_MASK04 + * @arg @ref LL_I2C_OWNADDRESS2_MASK05 + * @arg @ref LL_I2C_OWNADDRESS2_MASK06 + * @arg @ref LL_I2C_OWNADDRESS2_MASK07 + * @retval None + */ +__STATIC_INLINE void LL_I2C_SetOwnAddress2(I2C_TypeDef *I2Cx, uint32_t OwnAddress2, uint32_t OwnAddrMask) +{ + MODIFY_REG(I2Cx->OAR2, I2C_OAR2_OA2 | I2C_OAR2_OA2MSK, OwnAddress2 | OwnAddrMask); +} + +/** + * @brief Enable acknowledge on Own Address2 match address. + * @rmtoll OAR2 OA2EN LL_I2C_EnableOwnAddress2 + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_EnableOwnAddress2(I2C_TypeDef *I2Cx) +{ + SET_BIT(I2Cx->OAR2, I2C_OAR2_OA2EN); +} + +/** + * @brief Disable acknowledge on Own Address2 match address. + * @rmtoll OAR2 OA2EN LL_I2C_DisableOwnAddress2 + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_DisableOwnAddress2(I2C_TypeDef *I2Cx) +{ + CLEAR_BIT(I2Cx->OAR2, I2C_OAR2_OA2EN); +} + +/** + * @brief Check if Own Address1 acknowledge is enabled or disabled. + * @rmtoll OAR2 OA2EN LL_I2C_IsEnabledOwnAddress2 + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsEnabledOwnAddress2(I2C_TypeDef *I2Cx) +{ + return ((READ_BIT(I2Cx->OAR2, I2C_OAR2_OA2EN) == (I2C_OAR2_OA2EN)) ? 1UL : 0UL); +} + +/** + * @brief Configure the SDA setup, hold time and the SCL high, low period. + * @note This bit can only be programmed when the I2C is disabled (PE = 0). + * @rmtoll TIMINGR TIMINGR LL_I2C_SetTiming + * @param I2Cx I2C Instance. + * @param Timing This parameter must be a value between Min_Data=0 and Max_Data=0xFFFFFFFF. + * @note This parameter is computed with the STM32CubeMX Tool. + * @retval None + */ +__STATIC_INLINE void LL_I2C_SetTiming(I2C_TypeDef *I2Cx, uint32_t Timing) +{ + WRITE_REG(I2Cx->TIMINGR, Timing); +} + +/** + * @brief Get the Timing Prescaler setting. + * @rmtoll TIMINGR PRESC LL_I2C_GetTimingPrescaler + * @param I2Cx I2C Instance. + * @retval Value between Min_Data=0x0 and Max_Data=0xF + */ +__STATIC_INLINE uint32_t LL_I2C_GetTimingPrescaler(I2C_TypeDef *I2Cx) +{ + return (uint32_t)(READ_BIT(I2Cx->TIMINGR, I2C_TIMINGR_PRESC) >> I2C_TIMINGR_PRESC_Pos); +} + +/** + * @brief Get the SCL low period setting. + * @rmtoll TIMINGR SCLL LL_I2C_GetClockLowPeriod + * @param I2Cx I2C Instance. + * @retval Value between Min_Data=0x00 and Max_Data=0xFF + */ +__STATIC_INLINE uint32_t LL_I2C_GetClockLowPeriod(I2C_TypeDef *I2Cx) +{ + return (uint32_t)(READ_BIT(I2Cx->TIMINGR, I2C_TIMINGR_SCLL) >> I2C_TIMINGR_SCLL_Pos); +} + +/** + * @brief Get the SCL high period setting. + * @rmtoll TIMINGR SCLH LL_I2C_GetClockHighPeriod + * @param I2Cx I2C Instance. + * @retval Value between Min_Data=0x00 and Max_Data=0xFF + */ +__STATIC_INLINE uint32_t LL_I2C_GetClockHighPeriod(I2C_TypeDef *I2Cx) +{ + return (uint32_t)(READ_BIT(I2Cx->TIMINGR, I2C_TIMINGR_SCLH) >> I2C_TIMINGR_SCLH_Pos); +} + +/** + * @brief Get the SDA hold time. + * @rmtoll TIMINGR SDADEL LL_I2C_GetDataHoldTime + * @param I2Cx I2C Instance. + * @retval Value between Min_Data=0x0 and Max_Data=0xF + */ +__STATIC_INLINE uint32_t LL_I2C_GetDataHoldTime(I2C_TypeDef *I2Cx) +{ + return (uint32_t)(READ_BIT(I2Cx->TIMINGR, I2C_TIMINGR_SDADEL) >> I2C_TIMINGR_SDADEL_Pos); +} + +/** + * @brief Get the SDA setup time. + * @rmtoll TIMINGR SCLDEL LL_I2C_GetDataSetupTime + * @param I2Cx I2C Instance. + * @retval Value between Min_Data=0x0 and Max_Data=0xF + */ +__STATIC_INLINE uint32_t LL_I2C_GetDataSetupTime(I2C_TypeDef *I2Cx) +{ + return (uint32_t)(READ_BIT(I2Cx->TIMINGR, I2C_TIMINGR_SCLDEL) >> I2C_TIMINGR_SCLDEL_Pos); +} + +/** + * @brief Configure peripheral mode. + * @note The macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not + * SMBus feature is supported by the I2Cx Instance. + * @rmtoll CR1 SMBHEN LL_I2C_SetMode\n + * CR1 SMBDEN LL_I2C_SetMode + * @param I2Cx I2C Instance. + * @param PeripheralMode This parameter can be one of the following values: + * @arg @ref LL_I2C_MODE_I2C + * @arg @ref LL_I2C_MODE_SMBUS_HOST + * @arg @ref LL_I2C_MODE_SMBUS_DEVICE + * @arg @ref LL_I2C_MODE_SMBUS_DEVICE_ARP + * @retval None + */ +__STATIC_INLINE void LL_I2C_SetMode(I2C_TypeDef *I2Cx, uint32_t PeripheralMode) +{ + MODIFY_REG(I2Cx->CR1, I2C_CR1_SMBHEN | I2C_CR1_SMBDEN, PeripheralMode); +} + +/** + * @brief Get peripheral mode. + * @note The macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not + * SMBus feature is supported by the I2Cx Instance. + * @rmtoll CR1 SMBHEN LL_I2C_GetMode\n + * CR1 SMBDEN LL_I2C_GetMode + * @param I2Cx I2C Instance. + * @retval Returned value can be one of the following values: + * @arg @ref LL_I2C_MODE_I2C + * @arg @ref LL_I2C_MODE_SMBUS_HOST + * @arg @ref LL_I2C_MODE_SMBUS_DEVICE + * @arg @ref LL_I2C_MODE_SMBUS_DEVICE_ARP + */ +__STATIC_INLINE uint32_t LL_I2C_GetMode(I2C_TypeDef *I2Cx) +{ + return (uint32_t)(READ_BIT(I2Cx->CR1, I2C_CR1_SMBHEN | I2C_CR1_SMBDEN)); +} + +/** + * @brief Enable SMBus alert (Host or Device mode) + * @note The macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not + * SMBus feature is supported by the I2Cx Instance. + * @note SMBus Device mode: + * - SMBus Alert pin is drived low and + * Alert Response Address Header acknowledge is enabled. + * SMBus Host mode: + * - SMBus Alert pin management is supported. + * @rmtoll CR1 ALERTEN LL_I2C_EnableSMBusAlert + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_EnableSMBusAlert(I2C_TypeDef *I2Cx) +{ + SET_BIT(I2Cx->CR1, I2C_CR1_ALERTEN); +} + +/** + * @brief Disable SMBus alert (Host or Device mode) + * @note The macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not + * SMBus feature is supported by the I2Cx Instance. + * @note SMBus Device mode: + * - SMBus Alert pin is not drived (can be used as a standard GPIO) and + * Alert Response Address Header acknowledge is disabled. + * SMBus Host mode: + * - SMBus Alert pin management is not supported. + * @rmtoll CR1 ALERTEN LL_I2C_DisableSMBusAlert + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_DisableSMBusAlert(I2C_TypeDef *I2Cx) +{ + CLEAR_BIT(I2Cx->CR1, I2C_CR1_ALERTEN); +} + +/** + * @brief Check if SMBus alert (Host or Device mode) is enabled or disabled. + * @note The macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not + * SMBus feature is supported by the I2Cx Instance. + * @rmtoll CR1 ALERTEN LL_I2C_IsEnabledSMBusAlert + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsEnabledSMBusAlert(I2C_TypeDef *I2Cx) +{ + return ((READ_BIT(I2Cx->CR1, I2C_CR1_ALERTEN) == (I2C_CR1_ALERTEN)) ? 1UL : 0UL); +} + +/** + * @brief Enable SMBus Packet Error Calculation (PEC). + * @note The macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not + * SMBus feature is supported by the I2Cx Instance. + * @rmtoll CR1 PECEN LL_I2C_EnableSMBusPEC + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_EnableSMBusPEC(I2C_TypeDef *I2Cx) +{ + SET_BIT(I2Cx->CR1, I2C_CR1_PECEN); +} + +/** + * @brief Disable SMBus Packet Error Calculation (PEC). + * @note The macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not + * SMBus feature is supported by the I2Cx Instance. + * @rmtoll CR1 PECEN LL_I2C_DisableSMBusPEC + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_DisableSMBusPEC(I2C_TypeDef *I2Cx) +{ + CLEAR_BIT(I2Cx->CR1, I2C_CR1_PECEN); +} + +/** + * @brief Check if SMBus Packet Error Calculation (PEC) is enabled or disabled. + * @note The macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not + * SMBus feature is supported by the I2Cx Instance. + * @rmtoll CR1 PECEN LL_I2C_IsEnabledSMBusPEC + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsEnabledSMBusPEC(I2C_TypeDef *I2Cx) +{ + return ((READ_BIT(I2Cx->CR1, I2C_CR1_PECEN) == (I2C_CR1_PECEN)) ? 1UL : 0UL); +} + +/** + * @brief Configure the SMBus Clock Timeout. + * @note The macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not + * SMBus feature is supported by the I2Cx Instance. + * @note This configuration can only be programmed when associated Timeout is disabled (TimeoutA and/orTimeoutB). + * @rmtoll TIMEOUTR TIMEOUTA LL_I2C_ConfigSMBusTimeout\n + * TIMEOUTR TIDLE LL_I2C_ConfigSMBusTimeout\n + * TIMEOUTR TIMEOUTB LL_I2C_ConfigSMBusTimeout + * @param I2Cx I2C Instance. + * @param TimeoutA This parameter must be a value between Min_Data=0 and Max_Data=0xFFF. + * @param TimeoutAMode This parameter can be one of the following values: + * @arg @ref LL_I2C_SMBUS_TIMEOUTA_MODE_SCL_LOW + * @arg @ref LL_I2C_SMBUS_TIMEOUTA_MODE_SDA_SCL_HIGH + * @param TimeoutB + * @retval None + */ +__STATIC_INLINE void LL_I2C_ConfigSMBusTimeout(I2C_TypeDef *I2Cx, uint32_t TimeoutA, uint32_t TimeoutAMode, + uint32_t TimeoutB) +{ + MODIFY_REG(I2Cx->TIMEOUTR, I2C_TIMEOUTR_TIMEOUTA | I2C_TIMEOUTR_TIDLE | I2C_TIMEOUTR_TIMEOUTB, + TimeoutA | TimeoutAMode | (TimeoutB << I2C_TIMEOUTR_TIMEOUTB_Pos)); +} + +/** + * @brief Configure the SMBus Clock TimeoutA (SCL low timeout or SCL and SDA high timeout depends on TimeoutA mode). + * @note The macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not + * SMBus feature is supported by the I2Cx Instance. + * @note These bits can only be programmed when TimeoutA is disabled. + * @rmtoll TIMEOUTR TIMEOUTA LL_I2C_SetSMBusTimeoutA + * @param I2Cx I2C Instance. + * @param TimeoutA This parameter must be a value between Min_Data=0 and Max_Data=0xFFF. + * @retval None + */ +__STATIC_INLINE void LL_I2C_SetSMBusTimeoutA(I2C_TypeDef *I2Cx, uint32_t TimeoutA) +{ + WRITE_REG(I2Cx->TIMEOUTR, TimeoutA); +} + +/** + * @brief Get the SMBus Clock TimeoutA setting. + * @note The macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not + * SMBus feature is supported by the I2Cx Instance. + * @rmtoll TIMEOUTR TIMEOUTA LL_I2C_GetSMBusTimeoutA + * @param I2Cx I2C Instance. + * @retval Value between Min_Data=0 and Max_Data=0xFFF + */ +__STATIC_INLINE uint32_t LL_I2C_GetSMBusTimeoutA(I2C_TypeDef *I2Cx) +{ + return (uint32_t)(READ_BIT(I2Cx->TIMEOUTR, I2C_TIMEOUTR_TIMEOUTA)); +} + +/** + * @brief Set the SMBus Clock TimeoutA mode. + * @note The macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not + * SMBus feature is supported by the I2Cx Instance. + * @note This bit can only be programmed when TimeoutA is disabled. + * @rmtoll TIMEOUTR TIDLE LL_I2C_SetSMBusTimeoutAMode + * @param I2Cx I2C Instance. + * @param TimeoutAMode This parameter can be one of the following values: + * @arg @ref LL_I2C_SMBUS_TIMEOUTA_MODE_SCL_LOW + * @arg @ref LL_I2C_SMBUS_TIMEOUTA_MODE_SDA_SCL_HIGH + * @retval None + */ +__STATIC_INLINE void LL_I2C_SetSMBusTimeoutAMode(I2C_TypeDef *I2Cx, uint32_t TimeoutAMode) +{ + WRITE_REG(I2Cx->TIMEOUTR, TimeoutAMode); +} + +/** + * @brief Get the SMBus Clock TimeoutA mode. + * @note The macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not + * SMBus feature is supported by the I2Cx Instance. + * @rmtoll TIMEOUTR TIDLE LL_I2C_GetSMBusTimeoutAMode + * @param I2Cx I2C Instance. + * @retval Returned value can be one of the following values: + * @arg @ref LL_I2C_SMBUS_TIMEOUTA_MODE_SCL_LOW + * @arg @ref LL_I2C_SMBUS_TIMEOUTA_MODE_SDA_SCL_HIGH + */ +__STATIC_INLINE uint32_t LL_I2C_GetSMBusTimeoutAMode(I2C_TypeDef *I2Cx) +{ + return (uint32_t)(READ_BIT(I2Cx->TIMEOUTR, I2C_TIMEOUTR_TIDLE)); +} + +/** + * @brief Configure the SMBus Extended Cumulative Clock TimeoutB (Master or Slave mode). + * @note The macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not + * SMBus feature is supported by the I2Cx Instance. + * @note These bits can only be programmed when TimeoutB is disabled. + * @rmtoll TIMEOUTR TIMEOUTB LL_I2C_SetSMBusTimeoutB + * @param I2Cx I2C Instance. + * @param TimeoutB This parameter must be a value between Min_Data=0 and Max_Data=0xFFF. + * @retval None + */ +__STATIC_INLINE void LL_I2C_SetSMBusTimeoutB(I2C_TypeDef *I2Cx, uint32_t TimeoutB) +{ + WRITE_REG(I2Cx->TIMEOUTR, TimeoutB << I2C_TIMEOUTR_TIMEOUTB_Pos); +} + +/** + * @brief Get the SMBus Extended Cumulative Clock TimeoutB setting. + * @note The macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not + * SMBus feature is supported by the I2Cx Instance. + * @rmtoll TIMEOUTR TIMEOUTB LL_I2C_GetSMBusTimeoutB + * @param I2Cx I2C Instance. + * @retval Value between Min_Data=0 and Max_Data=0xFFF + */ +__STATIC_INLINE uint32_t LL_I2C_GetSMBusTimeoutB(I2C_TypeDef *I2Cx) +{ + return (uint32_t)(READ_BIT(I2Cx->TIMEOUTR, I2C_TIMEOUTR_TIMEOUTB) >> I2C_TIMEOUTR_TIMEOUTB_Pos); +} + +/** + * @brief Enable the SMBus Clock Timeout. + * @note The macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not + * SMBus feature is supported by the I2Cx Instance. + * @rmtoll TIMEOUTR TIMOUTEN LL_I2C_EnableSMBusTimeout\n + * TIMEOUTR TEXTEN LL_I2C_EnableSMBusTimeout + * @param I2Cx I2C Instance. + * @param ClockTimeout This parameter can be one of the following values: + * @arg @ref LL_I2C_SMBUS_TIMEOUTA + * @arg @ref LL_I2C_SMBUS_TIMEOUTB + * @arg @ref LL_I2C_SMBUS_ALL_TIMEOUT + * @retval None + */ +__STATIC_INLINE void LL_I2C_EnableSMBusTimeout(I2C_TypeDef *I2Cx, uint32_t ClockTimeout) +{ + SET_BIT(I2Cx->TIMEOUTR, ClockTimeout); +} + +/** + * @brief Disable the SMBus Clock Timeout. + * @note The macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not + * SMBus feature is supported by the I2Cx Instance. + * @rmtoll TIMEOUTR TIMOUTEN LL_I2C_DisableSMBusTimeout\n + * TIMEOUTR TEXTEN LL_I2C_DisableSMBusTimeout + * @param I2Cx I2C Instance. + * @param ClockTimeout This parameter can be one of the following values: + * @arg @ref LL_I2C_SMBUS_TIMEOUTA + * @arg @ref LL_I2C_SMBUS_TIMEOUTB + * @arg @ref LL_I2C_SMBUS_ALL_TIMEOUT + * @retval None + */ +__STATIC_INLINE void LL_I2C_DisableSMBusTimeout(I2C_TypeDef *I2Cx, uint32_t ClockTimeout) +{ + CLEAR_BIT(I2Cx->TIMEOUTR, ClockTimeout); +} + +/** + * @brief Check if the SMBus Clock Timeout is enabled or disabled. + * @note The macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not + * SMBus feature is supported by the I2Cx Instance. + * @rmtoll TIMEOUTR TIMOUTEN LL_I2C_IsEnabledSMBusTimeout\n + * TIMEOUTR TEXTEN LL_I2C_IsEnabledSMBusTimeout + * @param I2Cx I2C Instance. + * @param ClockTimeout This parameter can be one of the following values: + * @arg @ref LL_I2C_SMBUS_TIMEOUTA + * @arg @ref LL_I2C_SMBUS_TIMEOUTB + * @arg @ref LL_I2C_SMBUS_ALL_TIMEOUT + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsEnabledSMBusTimeout(I2C_TypeDef *I2Cx, uint32_t ClockTimeout) +{ + return ((READ_BIT(I2Cx->TIMEOUTR, (I2C_TIMEOUTR_TIMOUTEN | I2C_TIMEOUTR_TEXTEN)) == \ + (ClockTimeout)) ? 1UL : 0UL); +} + +/** + * @} + */ + +/** @defgroup I2C_LL_EF_IT_Management IT_Management + * @{ + */ + +/** + * @brief Enable TXIS interrupt. + * @rmtoll CR1 TXIE LL_I2C_EnableIT_TX + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_EnableIT_TX(I2C_TypeDef *I2Cx) +{ + SET_BIT(I2Cx->CR1, I2C_CR1_TXIE); +} + +/** + * @brief Disable TXIS interrupt. + * @rmtoll CR1 TXIE LL_I2C_DisableIT_TX + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_DisableIT_TX(I2C_TypeDef *I2Cx) +{ + CLEAR_BIT(I2Cx->CR1, I2C_CR1_TXIE); +} + +/** + * @brief Check if the TXIS Interrupt is enabled or disabled. + * @rmtoll CR1 TXIE LL_I2C_IsEnabledIT_TX + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsEnabledIT_TX(I2C_TypeDef *I2Cx) +{ + return ((READ_BIT(I2Cx->CR1, I2C_CR1_TXIE) == (I2C_CR1_TXIE)) ? 1UL : 0UL); +} + +/** + * @brief Enable RXNE interrupt. + * @rmtoll CR1 RXIE LL_I2C_EnableIT_RX + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_EnableIT_RX(I2C_TypeDef *I2Cx) +{ + SET_BIT(I2Cx->CR1, I2C_CR1_RXIE); +} + +/** + * @brief Disable RXNE interrupt. + * @rmtoll CR1 RXIE LL_I2C_DisableIT_RX + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_DisableIT_RX(I2C_TypeDef *I2Cx) +{ + CLEAR_BIT(I2Cx->CR1, I2C_CR1_RXIE); +} + +/** + * @brief Check if the RXNE Interrupt is enabled or disabled. + * @rmtoll CR1 RXIE LL_I2C_IsEnabledIT_RX + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsEnabledIT_RX(I2C_TypeDef *I2Cx) +{ + return ((READ_BIT(I2Cx->CR1, I2C_CR1_RXIE) == (I2C_CR1_RXIE)) ? 1UL : 0UL); +} + +/** + * @brief Enable Address match interrupt (slave mode only). + * @rmtoll CR1 ADDRIE LL_I2C_EnableIT_ADDR + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_EnableIT_ADDR(I2C_TypeDef *I2Cx) +{ + SET_BIT(I2Cx->CR1, I2C_CR1_ADDRIE); +} + +/** + * @brief Disable Address match interrupt (slave mode only). + * @rmtoll CR1 ADDRIE LL_I2C_DisableIT_ADDR + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_DisableIT_ADDR(I2C_TypeDef *I2Cx) +{ + CLEAR_BIT(I2Cx->CR1, I2C_CR1_ADDRIE); +} + +/** + * @brief Check if Address match interrupt is enabled or disabled. + * @rmtoll CR1 ADDRIE LL_I2C_IsEnabledIT_ADDR + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsEnabledIT_ADDR(I2C_TypeDef *I2Cx) +{ + return ((READ_BIT(I2Cx->CR1, I2C_CR1_ADDRIE) == (I2C_CR1_ADDRIE)) ? 1UL : 0UL); +} + +/** + * @brief Enable Not acknowledge received interrupt. + * @rmtoll CR1 NACKIE LL_I2C_EnableIT_NACK + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_EnableIT_NACK(I2C_TypeDef *I2Cx) +{ + SET_BIT(I2Cx->CR1, I2C_CR1_NACKIE); +} + +/** + * @brief Disable Not acknowledge received interrupt. + * @rmtoll CR1 NACKIE LL_I2C_DisableIT_NACK + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_DisableIT_NACK(I2C_TypeDef *I2Cx) +{ + CLEAR_BIT(I2Cx->CR1, I2C_CR1_NACKIE); +} + +/** + * @brief Check if Not acknowledge received interrupt is enabled or disabled. + * @rmtoll CR1 NACKIE LL_I2C_IsEnabledIT_NACK + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsEnabledIT_NACK(I2C_TypeDef *I2Cx) +{ + return ((READ_BIT(I2Cx->CR1, I2C_CR1_NACKIE) == (I2C_CR1_NACKIE)) ? 1UL : 0UL); +} + +/** + * @brief Enable STOP detection interrupt. + * @rmtoll CR1 STOPIE LL_I2C_EnableIT_STOP + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_EnableIT_STOP(I2C_TypeDef *I2Cx) +{ + SET_BIT(I2Cx->CR1, I2C_CR1_STOPIE); +} + +/** + * @brief Disable STOP detection interrupt. + * @rmtoll CR1 STOPIE LL_I2C_DisableIT_STOP + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_DisableIT_STOP(I2C_TypeDef *I2Cx) +{ + CLEAR_BIT(I2Cx->CR1, I2C_CR1_STOPIE); +} + +/** + * @brief Check if STOP detection interrupt is enabled or disabled. + * @rmtoll CR1 STOPIE LL_I2C_IsEnabledIT_STOP + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsEnabledIT_STOP(I2C_TypeDef *I2Cx) +{ + return ((READ_BIT(I2Cx->CR1, I2C_CR1_STOPIE) == (I2C_CR1_STOPIE)) ? 1UL : 0UL); +} + +/** + * @brief Enable Transfer Complete interrupt. + * @note Any of these events will generate interrupt : + * Transfer Complete (TC) + * Transfer Complete Reload (TCR) + * @rmtoll CR1 TCIE LL_I2C_EnableIT_TC + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_EnableIT_TC(I2C_TypeDef *I2Cx) +{ + SET_BIT(I2Cx->CR1, I2C_CR1_TCIE); +} + +/** + * @brief Disable Transfer Complete interrupt. + * @note Any of these events will generate interrupt : + * Transfer Complete (TC) + * Transfer Complete Reload (TCR) + * @rmtoll CR1 TCIE LL_I2C_DisableIT_TC + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_DisableIT_TC(I2C_TypeDef *I2Cx) +{ + CLEAR_BIT(I2Cx->CR1, I2C_CR1_TCIE); +} + +/** + * @brief Check if Transfer Complete interrupt is enabled or disabled. + * @rmtoll CR1 TCIE LL_I2C_IsEnabledIT_TC + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsEnabledIT_TC(I2C_TypeDef *I2Cx) +{ + return ((READ_BIT(I2Cx->CR1, I2C_CR1_TCIE) == (I2C_CR1_TCIE)) ? 1UL : 0UL); +} + +/** + * @brief Enable Error interrupts. + * @note The macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not + * SMBus feature is supported by the I2Cx Instance. + * @note Any of these errors will generate interrupt : + * Arbitration Loss (ARLO) + * Bus Error detection (BERR) + * Overrun/Underrun (OVR) + * SMBus Timeout detection (TIMEOUT) + * SMBus PEC error detection (PECERR) + * SMBus Alert pin event detection (ALERT) + * @rmtoll CR1 ERRIE LL_I2C_EnableIT_ERR + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_EnableIT_ERR(I2C_TypeDef *I2Cx) +{ + SET_BIT(I2Cx->CR1, I2C_CR1_ERRIE); +} + +/** + * @brief Disable Error interrupts. + * @note The macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not + * SMBus feature is supported by the I2Cx Instance. + * @note Any of these errors will generate interrupt : + * Arbitration Loss (ARLO) + * Bus Error detection (BERR) + * Overrun/Underrun (OVR) + * SMBus Timeout detection (TIMEOUT) + * SMBus PEC error detection (PECERR) + * SMBus Alert pin event detection (ALERT) + * @rmtoll CR1 ERRIE LL_I2C_DisableIT_ERR + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_DisableIT_ERR(I2C_TypeDef *I2Cx) +{ + CLEAR_BIT(I2Cx->CR1, I2C_CR1_ERRIE); +} + +/** + * @brief Check if Error interrupts are enabled or disabled. + * @rmtoll CR1 ERRIE LL_I2C_IsEnabledIT_ERR + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsEnabledIT_ERR(I2C_TypeDef *I2Cx) +{ + return ((READ_BIT(I2Cx->CR1, I2C_CR1_ERRIE) == (I2C_CR1_ERRIE)) ? 1UL : 0UL); +} + +/** + * @} + */ + +/** @defgroup I2C_LL_EF_FLAG_management FLAG_management + * @{ + */ + +/** + * @brief Indicate the status of Transmit data register empty flag. + * @note RESET: When next data is written in Transmit data register. + * SET: When Transmit data register is empty. + * @rmtoll ISR TXE LL_I2C_IsActiveFlag_TXE + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsActiveFlag_TXE(I2C_TypeDef *I2Cx) +{ + return ((READ_BIT(I2Cx->ISR, I2C_ISR_TXE) == (I2C_ISR_TXE)) ? 1UL : 0UL); +} + +/** + * @brief Indicate the status of Transmit interrupt flag. + * @note RESET: When next data is written in Transmit data register. + * SET: When Transmit data register is empty. + * @rmtoll ISR TXIS LL_I2C_IsActiveFlag_TXIS + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsActiveFlag_TXIS(I2C_TypeDef *I2Cx) +{ + return ((READ_BIT(I2Cx->ISR, I2C_ISR_TXIS) == (I2C_ISR_TXIS)) ? 1UL : 0UL); +} + +/** + * @brief Indicate the status of Receive data register not empty flag. + * @note RESET: When Receive data register is read. + * SET: When the received data is copied in Receive data register. + * @rmtoll ISR RXNE LL_I2C_IsActiveFlag_RXNE + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsActiveFlag_RXNE(I2C_TypeDef *I2Cx) +{ + return ((READ_BIT(I2Cx->ISR, I2C_ISR_RXNE) == (I2C_ISR_RXNE)) ? 1UL : 0UL); +} + +/** + * @brief Indicate the status of Address matched flag (slave mode). + * @note RESET: Clear default value. + * SET: When the received slave address matched with one of the enabled slave address. + * @rmtoll ISR ADDR LL_I2C_IsActiveFlag_ADDR + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsActiveFlag_ADDR(I2C_TypeDef *I2Cx) +{ + return ((READ_BIT(I2Cx->ISR, I2C_ISR_ADDR) == (I2C_ISR_ADDR)) ? 1UL : 0UL); +} + +/** + * @brief Indicate the status of Not Acknowledge received flag. + * @note RESET: Clear default value. + * SET: When a NACK is received after a byte transmission. + * @rmtoll ISR NACKF LL_I2C_IsActiveFlag_NACK + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsActiveFlag_NACK(I2C_TypeDef *I2Cx) +{ + return ((READ_BIT(I2Cx->ISR, I2C_ISR_NACKF) == (I2C_ISR_NACKF)) ? 1UL : 0UL); +} + +/** + * @brief Indicate the status of Stop detection flag. + * @note RESET: Clear default value. + * SET: When a Stop condition is detected. + * @rmtoll ISR STOPF LL_I2C_IsActiveFlag_STOP + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsActiveFlag_STOP(I2C_TypeDef *I2Cx) +{ + return ((READ_BIT(I2Cx->ISR, I2C_ISR_STOPF) == (I2C_ISR_STOPF)) ? 1UL : 0UL); +} + +/** + * @brief Indicate the status of Transfer complete flag (master mode). + * @note RESET: Clear default value. + * SET: When RELOAD=0, AUTOEND=0 and NBYTES date have been transferred. + * @rmtoll ISR TC LL_I2C_IsActiveFlag_TC + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsActiveFlag_TC(I2C_TypeDef *I2Cx) +{ + return ((READ_BIT(I2Cx->ISR, I2C_ISR_TC) == (I2C_ISR_TC)) ? 1UL : 0UL); +} + +/** + * @brief Indicate the status of Transfer complete flag (master mode). + * @note RESET: Clear default value. + * SET: When RELOAD=1 and NBYTES date have been transferred. + * @rmtoll ISR TCR LL_I2C_IsActiveFlag_TCR + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsActiveFlag_TCR(I2C_TypeDef *I2Cx) +{ + return ((READ_BIT(I2Cx->ISR, I2C_ISR_TCR) == (I2C_ISR_TCR)) ? 1UL : 0UL); +} + +/** + * @brief Indicate the status of Bus error flag. + * @note RESET: Clear default value. + * SET: When a misplaced Start or Stop condition is detected. + * @rmtoll ISR BERR LL_I2C_IsActiveFlag_BERR + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsActiveFlag_BERR(I2C_TypeDef *I2Cx) +{ + return ((READ_BIT(I2Cx->ISR, I2C_ISR_BERR) == (I2C_ISR_BERR)) ? 1UL : 0UL); +} + +/** + * @brief Indicate the status of Arbitration lost flag. + * @note RESET: Clear default value. + * SET: When arbitration lost. + * @rmtoll ISR ARLO LL_I2C_IsActiveFlag_ARLO + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsActiveFlag_ARLO(I2C_TypeDef *I2Cx) +{ + return ((READ_BIT(I2Cx->ISR, I2C_ISR_ARLO) == (I2C_ISR_ARLO)) ? 1UL : 0UL); +} + +/** + * @brief Indicate the status of Overrun/Underrun flag (slave mode). + * @note RESET: Clear default value. + * SET: When an overrun/underrun error occurs (Clock Stretching Disabled). + * @rmtoll ISR OVR LL_I2C_IsActiveFlag_OVR + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsActiveFlag_OVR(I2C_TypeDef *I2Cx) +{ + return ((READ_BIT(I2Cx->ISR, I2C_ISR_OVR) == (I2C_ISR_OVR)) ? 1UL : 0UL); +} + +/** + * @brief Indicate the status of SMBus PEC error flag in reception. + * @note The macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not + * SMBus feature is supported by the I2Cx Instance. + * @note RESET: Clear default value. + * SET: When the received PEC does not match with the PEC register content. + * @rmtoll ISR PECERR LL_I2C_IsActiveSMBusFlag_PECERR + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsActiveSMBusFlag_PECERR(I2C_TypeDef *I2Cx) +{ + return ((READ_BIT(I2Cx->ISR, I2C_ISR_PECERR) == (I2C_ISR_PECERR)) ? 1UL : 0UL); +} + +/** + * @brief Indicate the status of SMBus Timeout detection flag. + * @note The macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not + * SMBus feature is supported by the I2Cx Instance. + * @note RESET: Clear default value. + * SET: When a timeout or extended clock timeout occurs. + * @rmtoll ISR TIMEOUT LL_I2C_IsActiveSMBusFlag_TIMEOUT + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsActiveSMBusFlag_TIMEOUT(I2C_TypeDef *I2Cx) +{ + return ((READ_BIT(I2Cx->ISR, I2C_ISR_TIMEOUT) == (I2C_ISR_TIMEOUT)) ? 1UL : 0UL); +} + +/** + * @brief Indicate the status of SMBus alert flag. + * @note The macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not + * SMBus feature is supported by the I2Cx Instance. + * @note RESET: Clear default value. + * SET: When SMBus host configuration, SMBus alert enabled and + * a falling edge event occurs on SMBA pin. + * @rmtoll ISR ALERT LL_I2C_IsActiveSMBusFlag_ALERT + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsActiveSMBusFlag_ALERT(I2C_TypeDef *I2Cx) +{ + return ((READ_BIT(I2Cx->ISR, I2C_ISR_ALERT) == (I2C_ISR_ALERT)) ? 1UL : 0UL); +} + +/** + * @brief Indicate the status of Bus Busy flag. + * @note RESET: Clear default value. + * SET: When a Start condition is detected. + * @rmtoll ISR BUSY LL_I2C_IsActiveFlag_BUSY + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsActiveFlag_BUSY(I2C_TypeDef *I2Cx) +{ + return ((READ_BIT(I2Cx->ISR, I2C_ISR_BUSY) == (I2C_ISR_BUSY)) ? 1UL : 0UL); +} + +/** + * @brief Clear Address Matched flag. + * @rmtoll ICR ADDRCF LL_I2C_ClearFlag_ADDR + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_ClearFlag_ADDR(I2C_TypeDef *I2Cx) +{ + SET_BIT(I2Cx->ICR, I2C_ICR_ADDRCF); +} + +/** + * @brief Clear Not Acknowledge flag. + * @rmtoll ICR NACKCF LL_I2C_ClearFlag_NACK + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_ClearFlag_NACK(I2C_TypeDef *I2Cx) +{ + SET_BIT(I2Cx->ICR, I2C_ICR_NACKCF); +} + +/** + * @brief Clear Stop detection flag. + * @rmtoll ICR STOPCF LL_I2C_ClearFlag_STOP + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_ClearFlag_STOP(I2C_TypeDef *I2Cx) +{ + SET_BIT(I2Cx->ICR, I2C_ICR_STOPCF); +} + +/** + * @brief Clear Transmit data register empty flag (TXE). + * @note This bit can be clear by software in order to flush the transmit data register (TXDR). + * @rmtoll ISR TXE LL_I2C_ClearFlag_TXE + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_ClearFlag_TXE(I2C_TypeDef *I2Cx) +{ + WRITE_REG(I2Cx->ISR, I2C_ISR_TXE); +} + +/** + * @brief Clear Bus error flag. + * @rmtoll ICR BERRCF LL_I2C_ClearFlag_BERR + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_ClearFlag_BERR(I2C_TypeDef *I2Cx) +{ + SET_BIT(I2Cx->ICR, I2C_ICR_BERRCF); +} + +/** + * @brief Clear Arbitration lost flag. + * @rmtoll ICR ARLOCF LL_I2C_ClearFlag_ARLO + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_ClearFlag_ARLO(I2C_TypeDef *I2Cx) +{ + SET_BIT(I2Cx->ICR, I2C_ICR_ARLOCF); +} + +/** + * @brief Clear Overrun/Underrun flag. + * @rmtoll ICR OVRCF LL_I2C_ClearFlag_OVR + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_ClearFlag_OVR(I2C_TypeDef *I2Cx) +{ + SET_BIT(I2Cx->ICR, I2C_ICR_OVRCF); +} + +/** + * @brief Clear SMBus PEC error flag. + * @note The macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not + * SMBus feature is supported by the I2Cx Instance. + * @rmtoll ICR PECCF LL_I2C_ClearSMBusFlag_PECERR + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_ClearSMBusFlag_PECERR(I2C_TypeDef *I2Cx) +{ + SET_BIT(I2Cx->ICR, I2C_ICR_PECCF); +} + +/** + * @brief Clear SMBus Timeout detection flag. + * @note The macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not + * SMBus feature is supported by the I2Cx Instance. + * @rmtoll ICR TIMOUTCF LL_I2C_ClearSMBusFlag_TIMEOUT + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_ClearSMBusFlag_TIMEOUT(I2C_TypeDef *I2Cx) +{ + SET_BIT(I2Cx->ICR, I2C_ICR_TIMOUTCF); +} + +/** + * @brief Clear SMBus Alert flag. + * @note The macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not + * SMBus feature is supported by the I2Cx Instance. + * @rmtoll ICR ALERTCF LL_I2C_ClearSMBusFlag_ALERT + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_ClearSMBusFlag_ALERT(I2C_TypeDef *I2Cx) +{ + SET_BIT(I2Cx->ICR, I2C_ICR_ALERTCF); +} + +/** + * @} + */ + +/** @defgroup I2C_LL_EF_Data_Management Data_Management + * @{ + */ + +/** + * @brief Enable automatic STOP condition generation (master mode). + * @note Automatic end mode : a STOP condition is automatically sent when NBYTES data are transferred. + * This bit has no effect in slave mode or when RELOAD bit is set. + * @rmtoll CR2 AUTOEND LL_I2C_EnableAutoEndMode + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_EnableAutoEndMode(I2C_TypeDef *I2Cx) +{ + SET_BIT(I2Cx->CR2, I2C_CR2_AUTOEND); +} + +/** + * @brief Disable automatic STOP condition generation (master mode). + * @note Software end mode : TC flag is set when NBYTES data are transferre, stretching SCL low. + * @rmtoll CR2 AUTOEND LL_I2C_DisableAutoEndMode + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_DisableAutoEndMode(I2C_TypeDef *I2Cx) +{ + CLEAR_BIT(I2Cx->CR2, I2C_CR2_AUTOEND); +} + +/** + * @brief Check if automatic STOP condition is enabled or disabled. + * @rmtoll CR2 AUTOEND LL_I2C_IsEnabledAutoEndMode + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsEnabledAutoEndMode(I2C_TypeDef *I2Cx) +{ + return ((READ_BIT(I2Cx->CR2, I2C_CR2_AUTOEND) == (I2C_CR2_AUTOEND)) ? 1UL : 0UL); +} + +/** + * @brief Enable reload mode (master mode). + * @note The transfer is not completed after the NBYTES data transfer, NBYTES will be reloaded when TCR flag is set. + * @rmtoll CR2 RELOAD LL_I2C_EnableReloadMode + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_EnableReloadMode(I2C_TypeDef *I2Cx) +{ + SET_BIT(I2Cx->CR2, I2C_CR2_RELOAD); +} + +/** + * @brief Disable reload mode (master mode). + * @note The transfer is completed after the NBYTES data transfer(STOP or RESTART will follow). + * @rmtoll CR2 RELOAD LL_I2C_DisableReloadMode + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_DisableReloadMode(I2C_TypeDef *I2Cx) +{ + CLEAR_BIT(I2Cx->CR2, I2C_CR2_RELOAD); +} + +/** + * @brief Check if reload mode is enabled or disabled. + * @rmtoll CR2 RELOAD LL_I2C_IsEnabledReloadMode + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsEnabledReloadMode(I2C_TypeDef *I2Cx) +{ + return ((READ_BIT(I2Cx->CR2, I2C_CR2_RELOAD) == (I2C_CR2_RELOAD)) ? 1UL : 0UL); +} + +/** + * @brief Configure the number of bytes for transfer. + * @note Changing these bits when START bit is set is not allowed. + * @rmtoll CR2 NBYTES LL_I2C_SetTransferSize + * @param I2Cx I2C Instance. + * @param TransferSize This parameter must be a value between Min_Data=0x00 and Max_Data=0xFF. + * @retval None + */ +__STATIC_INLINE void LL_I2C_SetTransferSize(I2C_TypeDef *I2Cx, uint32_t TransferSize) +{ + MODIFY_REG(I2Cx->CR2, I2C_CR2_NBYTES, TransferSize << I2C_CR2_NBYTES_Pos); +} + +/** + * @brief Get the number of bytes configured for transfer. + * @rmtoll CR2 NBYTES LL_I2C_GetTransferSize + * @param I2Cx I2C Instance. + * @retval Value between Min_Data=0x0 and Max_Data=0xFF + */ +__STATIC_INLINE uint32_t LL_I2C_GetTransferSize(I2C_TypeDef *I2Cx) +{ + return (uint32_t)(READ_BIT(I2Cx->CR2, I2C_CR2_NBYTES) >> I2C_CR2_NBYTES_Pos); +} + +/** + * @brief Prepare the generation of a ACKnowledge or Non ACKnowledge condition after the address receive match code + or next received byte. + * @note Usage in Slave mode only. + * @rmtoll CR2 NACK LL_I2C_AcknowledgeNextData + * @param I2Cx I2C Instance. + * @param TypeAcknowledge This parameter can be one of the following values: + * @arg @ref LL_I2C_ACK + * @arg @ref LL_I2C_NACK + * @retval None + */ +__STATIC_INLINE void LL_I2C_AcknowledgeNextData(I2C_TypeDef *I2Cx, uint32_t TypeAcknowledge) +{ + MODIFY_REG(I2Cx->CR2, I2C_CR2_NACK, TypeAcknowledge); +} + +/** + * @brief Generate a START or RESTART condition + * @note The START bit can be set even if bus is BUSY or I2C is in slave mode. + * This action has no effect when RELOAD is set. + * @rmtoll CR2 START LL_I2C_GenerateStartCondition + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_GenerateStartCondition(I2C_TypeDef *I2Cx) +{ + SET_BIT(I2Cx->CR2, I2C_CR2_START); +} + +/** + * @brief Generate a STOP condition after the current byte transfer (master mode). + * @rmtoll CR2 STOP LL_I2C_GenerateStopCondition + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_GenerateStopCondition(I2C_TypeDef *I2Cx) +{ + SET_BIT(I2Cx->CR2, I2C_CR2_STOP); +} + +/** + * @brief Enable automatic RESTART Read request condition for 10bit address header (master mode). + * @note The master sends the complete 10bit slave address read sequence : + * Start + 2 bytes 10bit address in Write direction + Restart + first 7 bits of 10bit address + in Read direction. + * @rmtoll CR2 HEAD10R LL_I2C_EnableAuto10BitRead + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_EnableAuto10BitRead(I2C_TypeDef *I2Cx) +{ + CLEAR_BIT(I2Cx->CR2, I2C_CR2_HEAD10R); +} + +/** + * @brief Disable automatic RESTART Read request condition for 10bit address header (master mode). + * @note The master only sends the first 7 bits of 10bit address in Read direction. + * @rmtoll CR2 HEAD10R LL_I2C_DisableAuto10BitRead + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_DisableAuto10BitRead(I2C_TypeDef *I2Cx) +{ + SET_BIT(I2Cx->CR2, I2C_CR2_HEAD10R); +} + +/** + * @brief Check if automatic RESTART Read request condition for 10bit address header is enabled or disabled. + * @rmtoll CR2 HEAD10R LL_I2C_IsEnabledAuto10BitRead + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsEnabledAuto10BitRead(I2C_TypeDef *I2Cx) +{ + return ((READ_BIT(I2Cx->CR2, I2C_CR2_HEAD10R) != (I2C_CR2_HEAD10R)) ? 1UL : 0UL); +} + +/** + * @brief Configure the transfer direction (master mode). + * @note Changing these bits when START bit is set is not allowed. + * @rmtoll CR2 RD_WRN LL_I2C_SetTransferRequest + * @param I2Cx I2C Instance. + * @param TransferRequest This parameter can be one of the following values: + * @arg @ref LL_I2C_REQUEST_WRITE + * @arg @ref LL_I2C_REQUEST_READ + * @retval None + */ +__STATIC_INLINE void LL_I2C_SetTransferRequest(I2C_TypeDef *I2Cx, uint32_t TransferRequest) +{ + MODIFY_REG(I2Cx->CR2, I2C_CR2_RD_WRN, TransferRequest); +} + +/** + * @brief Get the transfer direction requested (master mode). + * @rmtoll CR2 RD_WRN LL_I2C_GetTransferRequest + * @param I2Cx I2C Instance. + * @retval Returned value can be one of the following values: + * @arg @ref LL_I2C_REQUEST_WRITE + * @arg @ref LL_I2C_REQUEST_READ + */ +__STATIC_INLINE uint32_t LL_I2C_GetTransferRequest(I2C_TypeDef *I2Cx) +{ + return (uint32_t)(READ_BIT(I2Cx->CR2, I2C_CR2_RD_WRN)); +} + +/** + * @brief Configure the slave address for transfer (master mode). + * @note Changing these bits when START bit is set is not allowed. + * @rmtoll CR2 SADD LL_I2C_SetSlaveAddr + * @param I2Cx I2C Instance. + * @param SlaveAddr This parameter must be a value between Min_Data=0x00 and Max_Data=0x3F. + * @retval None + */ +__STATIC_INLINE void LL_I2C_SetSlaveAddr(I2C_TypeDef *I2Cx, uint32_t SlaveAddr) +{ + MODIFY_REG(I2Cx->CR2, I2C_CR2_SADD, SlaveAddr); +} + +/** + * @brief Get the slave address programmed for transfer. + * @rmtoll CR2 SADD LL_I2C_GetSlaveAddr + * @param I2Cx I2C Instance. + * @retval Value between Min_Data=0x0 and Max_Data=0x3F + */ +__STATIC_INLINE uint32_t LL_I2C_GetSlaveAddr(I2C_TypeDef *I2Cx) +{ + return (uint32_t)(READ_BIT(I2Cx->CR2, I2C_CR2_SADD)); +} + +/** + * @brief Handles I2Cx communication when starting transfer or during transfer (TC or TCR flag are set). + * @rmtoll CR2 SADD LL_I2C_HandleTransfer\n + * CR2 ADD10 LL_I2C_HandleTransfer\n + * CR2 RD_WRN LL_I2C_HandleTransfer\n + * CR2 START LL_I2C_HandleTransfer\n + * CR2 STOP LL_I2C_HandleTransfer\n + * CR2 RELOAD LL_I2C_HandleTransfer\n + * CR2 NBYTES LL_I2C_HandleTransfer\n + * CR2 AUTOEND LL_I2C_HandleTransfer\n + * CR2 HEAD10R LL_I2C_HandleTransfer + * @param I2Cx I2C Instance. + * @param SlaveAddr Specifies the slave address to be programmed. + * @param SlaveAddrSize This parameter can be one of the following values: + * @arg @ref LL_I2C_ADDRSLAVE_7BIT + * @arg @ref LL_I2C_ADDRSLAVE_10BIT + * @param TransferSize Specifies the number of bytes to be programmed. + * This parameter must be a value between Min_Data=0 and Max_Data=255. + * @param EndMode This parameter can be one of the following values: + * @arg @ref LL_I2C_MODE_RELOAD + * @arg @ref LL_I2C_MODE_AUTOEND + * @arg @ref LL_I2C_MODE_SOFTEND + * @arg @ref LL_I2C_MODE_SMBUS_RELOAD + * @arg @ref LL_I2C_MODE_SMBUS_AUTOEND_NO_PEC + * @arg @ref LL_I2C_MODE_SMBUS_SOFTEND_NO_PEC + * @arg @ref LL_I2C_MODE_SMBUS_AUTOEND_WITH_PEC + * @arg @ref LL_I2C_MODE_SMBUS_SOFTEND_WITH_PEC + * @param Request This parameter can be one of the following values: + * @arg @ref LL_I2C_GENERATE_NOSTARTSTOP + * @arg @ref LL_I2C_GENERATE_STOP + * @arg @ref LL_I2C_GENERATE_START_READ + * @arg @ref LL_I2C_GENERATE_START_WRITE + * @arg @ref LL_I2C_GENERATE_RESTART_7BIT_READ + * @arg @ref LL_I2C_GENERATE_RESTART_7BIT_WRITE + * @arg @ref LL_I2C_GENERATE_RESTART_10BIT_READ + * @arg @ref LL_I2C_GENERATE_RESTART_10BIT_WRITE + * @retval None + */ +__STATIC_INLINE void LL_I2C_HandleTransfer(I2C_TypeDef *I2Cx, uint32_t SlaveAddr, uint32_t SlaveAddrSize, + uint32_t TransferSize, uint32_t EndMode, uint32_t Request) +{ + MODIFY_REG(I2Cx->CR2, I2C_CR2_SADD | I2C_CR2_ADD10 | + (I2C_CR2_RD_WRN & (uint32_t)(Request >> (31U - I2C_CR2_RD_WRN_Pos))) | + I2C_CR2_START | I2C_CR2_STOP | I2C_CR2_RELOAD | + I2C_CR2_NBYTES | I2C_CR2_AUTOEND | I2C_CR2_HEAD10R, + SlaveAddr | SlaveAddrSize | (TransferSize << I2C_CR2_NBYTES_Pos) | EndMode | Request); +} + +/** + * @brief Indicate the value of transfer direction (slave mode). + * @note RESET: Write transfer, Slave enters in receiver mode. + * SET: Read transfer, Slave enters in transmitter mode. + * @rmtoll ISR DIR LL_I2C_GetTransferDirection + * @param I2Cx I2C Instance. + * @retval Returned value can be one of the following values: + * @arg @ref LL_I2C_DIRECTION_WRITE + * @arg @ref LL_I2C_DIRECTION_READ + */ +__STATIC_INLINE uint32_t LL_I2C_GetTransferDirection(I2C_TypeDef *I2Cx) +{ + return (uint32_t)(READ_BIT(I2Cx->ISR, I2C_ISR_DIR)); +} + +/** + * @brief Return the slave matched address. + * @rmtoll ISR ADDCODE LL_I2C_GetAddressMatchCode + * @param I2Cx I2C Instance. + * @retval Value between Min_Data=0x00 and Max_Data=0x3F + */ +__STATIC_INLINE uint32_t LL_I2C_GetAddressMatchCode(I2C_TypeDef *I2Cx) +{ + return (uint32_t)(READ_BIT(I2Cx->ISR, I2C_ISR_ADDCODE) >> I2C_ISR_ADDCODE_Pos << 1); +} + +/** + * @brief Enable internal comparison of the SMBus Packet Error byte (transmission or reception mode). + * @note The macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not + * SMBus feature is supported by the I2Cx Instance. + * @note This feature is cleared by hardware when the PEC byte is transferred, or when a STOP condition + or an Address Matched is received. + * This bit has no effect when RELOAD bit is set. + * This bit has no effect in device mode when SBC bit is not set. + * @rmtoll CR2 PECBYTE LL_I2C_EnableSMBusPECCompare + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_EnableSMBusPECCompare(I2C_TypeDef *I2Cx) +{ + SET_BIT(I2Cx->CR2, I2C_CR2_PECBYTE); +} + +/** + * @brief Check if the SMBus Packet Error byte internal comparison is requested or not. + * @note The macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not + * SMBus feature is supported by the I2Cx Instance. + * @rmtoll CR2 PECBYTE LL_I2C_IsEnabledSMBusPECCompare + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsEnabledSMBusPECCompare(I2C_TypeDef *I2Cx) +{ + return ((READ_BIT(I2Cx->CR2, I2C_CR2_PECBYTE) == (I2C_CR2_PECBYTE)) ? 1UL : 0UL); +} + +/** + * @brief Get the SMBus Packet Error byte calculated. + * @note The macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not + * SMBus feature is supported by the I2Cx Instance. + * @rmtoll PECR PEC LL_I2C_GetSMBusPEC + * @param I2Cx I2C Instance. + * @retval Value between Min_Data=0x00 and Max_Data=0xFF + */ +__STATIC_INLINE uint32_t LL_I2C_GetSMBusPEC(I2C_TypeDef *I2Cx) +{ + return (uint32_t)(READ_BIT(I2Cx->PECR, I2C_PECR_PEC)); +} + +/** + * @brief Read Receive Data register. + * @rmtoll RXDR RXDATA LL_I2C_ReceiveData8 + * @param I2Cx I2C Instance. + * @retval Value between Min_Data=0x00 and Max_Data=0xFF + */ +__STATIC_INLINE uint8_t LL_I2C_ReceiveData8(I2C_TypeDef *I2Cx) +{ + return (uint8_t)(READ_BIT(I2Cx->RXDR, I2C_RXDR_RXDATA)); +} + +/** + * @brief Write in Transmit Data Register . + * @rmtoll TXDR TXDATA LL_I2C_TransmitData8 + * @param I2Cx I2C Instance. + * @param Data Value between Min_Data=0x00 and Max_Data=0xFF + * @retval None + */ +__STATIC_INLINE void LL_I2C_TransmitData8(I2C_TypeDef *I2Cx, uint8_t Data) +{ + WRITE_REG(I2Cx->TXDR, Data); +} + +/** + * @} + */ + +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup I2C_LL_EF_Init Initialization and de-initialization functions + * @{ + */ + +ErrorStatus LL_I2C_Init(I2C_TypeDef *I2Cx, LL_I2C_InitTypeDef *I2C_InitStruct); +ErrorStatus LL_I2C_DeInit(I2C_TypeDef *I2Cx); +void LL_I2C_StructInit(LL_I2C_InitTypeDef *I2C_InitStruct); + + +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* I2C1 || I2C2 || I2C3 */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32G0xx_LL_I2C_H */ diff --git a/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_ll_pwr.h b/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_ll_pwr.h new file mode 100644 index 0000000..f739042 --- /dev/null +++ b/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_ll_pwr.h @@ -0,0 +1,1526 @@ +/** + ****************************************************************************** + * @file stm32g0xx_ll_pwr.h + * @author MCD Application Team + * @brief Header file of PWR LL module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2018 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32G0xx_LL_PWR_H +#define STM32G0xx_LL_PWR_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32g0xx.h" + +/** @addtogroup STM32G0xx_LL_Driver + * @{ + */ + +#if defined(PWR) + +/** @defgroup PWR_LL PWR + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ + +/* Private constants ---------------------------------------------------------*/ + +/* Private macros ------------------------------------------------------------*/ + +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +/** @defgroup PWR_LL_Exported_Constants PWR Exported Constants + * @{ + */ + +/** @defgroup PWR_LL_EC_CLEAR_FLAG Clear Flags Defines + * @brief Flags defines which can be used with LL_PWR_WriteReg function + * @{ + */ +#define LL_PWR_SCR_CSBF PWR_SCR_CSBF +#define LL_PWR_SCR_CWUF PWR_SCR_CWUF +#define LL_PWR_SCR_CWUF6 PWR_SCR_CWUF6 +#define LL_PWR_SCR_CWUF5 PWR_SCR_CWUF5 +#define LL_PWR_SCR_CWUF4 PWR_SCR_CWUF4 +#if defined(PWR_CR3_EWUP3) +#define LL_PWR_SCR_CWUF3 PWR_SCR_CWUF3 +#endif /* PWR_CR3_EWUP3 */ +#define LL_PWR_SCR_CWUF2 PWR_SCR_CWUF2 +#define LL_PWR_SCR_CWUF1 PWR_SCR_CWUF1 +/** + * @} + */ + +/** @defgroup PWR_LL_EC_GET_FLAG Get Flags Defines + * @brief Flags defines which can be used with LL_PWR_ReadReg function + * @{ + */ +#define LL_PWR_SR1_WUFI PWR_SR1_WUFI +#define LL_PWR_SR1_SBF PWR_SR1_SBF +#define LL_PWR_SR1_WUF6 PWR_SR1_WUF6 +#define LL_PWR_SR1_WUF5 PWR_SR1_WUF5 +#define LL_PWR_SR1_WUF4 PWR_SR1_WUF4 +#if defined(PWR_CR3_EWUP3) +#define LL_PWR_SR1_WUF3 PWR_SR1_WUF3 +#endif /* PWR_CR3_EWUP3 */ +#define LL_PWR_SR1_WUF2 PWR_SR1_WUF2 +#define LL_PWR_SR1_WUF1 PWR_SR1_WUF1 +#if defined(PWR_SR2_PVDO) +#define LL_PWR_SR2_PVDO PWR_SR2_PVDO +#endif /* PWR_SR2_PVDO */ +#define LL_PWR_SR2_VOSF PWR_SR2_VOSF +#define LL_PWR_SR2_REGLPF PWR_SR2_REGLPF +#define LL_PWR_SR2_REGLPS PWR_SR2_REGLPS +/** + * @} + */ + +/** @defgroup PWR_LL_EC_REGU_VOLTAGE REGU VOLTAGE + * @{ + */ +#define LL_PWR_REGU_VOLTAGE_SCALE1 PWR_CR1_VOS_0 +#define LL_PWR_REGU_VOLTAGE_SCALE2 PWR_CR1_VOS_1 +/** + * @} + */ + +/** @defgroup PWR_LL_EC_MODE_PWR MODE PWR + * @{ + */ +#define LL_PWR_MODE_STOP0 (0x00000000UL) +#define LL_PWR_MODE_STOP1 (PWR_CR1_LPMS_0) +#define LL_PWR_MODE_STANDBY (PWR_CR1_LPMS_1|PWR_CR1_LPMS_0) +#if defined (PWR_CR1_LPMS_2) +#define LL_PWR_MODE_SHUTDOWN (PWR_CR1_LPMS_2) +#endif /* PWR_CR1_LPMS_2 */ +/** + * @} + */ + +#if defined(PWR_CR2_PVDE) +/** @defgroup PWR_LL_EC_PVDLEVEL PVDLEVEL + * @{ + */ +#define LL_PWR_PVDLLEVEL_0 0x000000000u /* VPVD0 > 2.05 V */ +#define LL_PWR_PVDLLEVEL_1 (PWR_CR2_PVDFT_0) /* VPVD0 > 2.2 V */ +#define LL_PWR_PVDLLEVEL_2 (PWR_CR2_PVDFT_1) /* VPVD1 > 2.36 V */ +#define LL_PWR_PVDLLEVEL_3 (PWR_CR2_PVDFT_1 | PWR_CR2_PVDFT_0) /* VPVD2 > 2.52 V */ +#define LL_PWR_PVDLLEVEL_4 (PWR_CR2_PVDFT_2) /* VPVD3 > 2.64 V */ +#define LL_PWR_PVDLLEVEL_5 (PWR_CR2_PVDFT_2 | PWR_CR2_PVDFT_0) /* VPVD4 > 2.81 V */ +#define LL_PWR_PVDLLEVEL_6 (PWR_CR2_PVDFT_2 | PWR_CR2_PVDFT_1) /* VPVD5 > 2.91 V */ + +#define LL_PWR_PVDHLEVEL_0 0x00000000u /* VPDD0 > 2.15 V */ +#define LL_PWR_PVDHLEVEL_1 (PWR_CR2_PVDRT_0) /* VPVD1 > 2.3 V */ +#define LL_PWR_PVDHLEVEL_2 (PWR_CR2_PVDRT_1) /* VPVD1 > 2.46 V */ +#define LL_PWR_PVDHLEVEL_3 (PWR_CR2_PVDRT_1 | PWR_CR2_PVDRT_0) /* VPVD2 > 2.62 V */ +#define LL_PWR_PVDHLEVEL_4 (PWR_CR2_PVDRT_2) /* VPVD3 > 2.74 V */ +#define LL_PWR_PVDHLEVEL_5 (PWR_CR2_PVDRT_2 | PWR_CR2_PVDRT_0) /* VPVD4 > 2.91 V */ +#define LL_PWR_PVDHLEVEL_6 (PWR_CR2_PVDRT_2 | PWR_CR2_PVDRT_1) /* VPVD5 > 3.01 V */ +#define LL_PWR_PVDHLEVEL_7 (PWR_CR2_PVDRT_2 | PWR_CR2_PVDRT_1 | PWR_CR2_PVDRT_0) /* External input analog voltage (Compare internally to VREFINT) */ +/** + * @} + */ +#endif /* PWR_CR2_PVDE */ + +#if defined(PWR_PVM_SUPPORT) +/** @defgroup PWR_LL_EC_PVM_IP PVM_IP + * @{ + */ +#define LL_PWR_PVM_USB PWR_CR2_PVMEN_USB /*!< Peripheral Voltage Monitoring enable for USB peripheral: Enable to keep the USB peripheral voltage monitoring under control (power domain Vddio2) */ +/** + * @} + */ +#endif /* PWR_PVM_SUPPORT */ + +/** @defgroup PWR_LL_EC_WAKEUP WAKEUP + * @{ + */ +#define LL_PWR_WAKEUP_PIN1 (PWR_CR3_EWUP1) +#define LL_PWR_WAKEUP_PIN2 (PWR_CR3_EWUP2) +#if defined(PWR_CR3_EWUP3) +#define LL_PWR_WAKEUP_PIN3 (PWR_CR3_EWUP3) +#endif /* PWR_CR3_EWUP3 */ +#define LL_PWR_WAKEUP_PIN4 (PWR_CR3_EWUP4) +#if defined(PWR_CR3_EWUP5) +#define LL_PWR_WAKEUP_PIN5 (PWR_CR3_EWUP5) +#endif /* PWR_CR3_EWUP5 */ +#define LL_PWR_WAKEUP_PIN6 (PWR_CR3_EWUP6) +/** + * @} + */ + +/** @defgroup PWR_LL_EC_BATT_CHARG_RESISTOR BATT CHARG RESISTOR + * @{ + */ +#define LL_PWR_BATTCHARG_RESISTOR_5K 0x000000000u +#define LL_PWR_BATTCHARG_RESISTOR_1_5K (PWR_CR4_VBRS) +/** + * @} + */ + +/** @defgroup PWR_LL_EC_GPIO GPIO + * @{ + */ +#define LL_PWR_GPIO_A ((uint32_t)(&(PWR->PUCRA))) +#define LL_PWR_GPIO_B ((uint32_t)(&(PWR->PUCRB))) +#define LL_PWR_GPIO_C ((uint32_t)(&(PWR->PUCRC))) +#define LL_PWR_GPIO_D ((uint32_t)(&(PWR->PUCRD))) +#if defined(GPIOE) +#define LL_PWR_GPIO_E ((uint32_t)(&(PWR->PUCRE))) +#endif /* GPIOE */ +#define LL_PWR_GPIO_F ((uint32_t)(&(PWR->PUCRF))) +/** + * @} + */ + +/** @defgroup PWR_LL_EC_GPIO_BIT GPIO BIT + * @{ + */ +#define LL_PWR_GPIO_BIT_0 0x00000001u +#define LL_PWR_GPIO_BIT_1 0x00000002u +#define LL_PWR_GPIO_BIT_2 0x00000004u +#define LL_PWR_GPIO_BIT_3 0x00000008u +#define LL_PWR_GPIO_BIT_4 0x00000010u +#define LL_PWR_GPIO_BIT_5 0x00000020u +#define LL_PWR_GPIO_BIT_6 0x00000040u +#define LL_PWR_GPIO_BIT_7 0x00000080u +#define LL_PWR_GPIO_BIT_8 0x00000100u +#define LL_PWR_GPIO_BIT_9 0x00000200u +#define LL_PWR_GPIO_BIT_10 0x00000400u +#define LL_PWR_GPIO_BIT_11 0x00000800u +#define LL_PWR_GPIO_BIT_12 0x00001000u +#define LL_PWR_GPIO_BIT_13 0x00002000u +#define LL_PWR_GPIO_BIT_14 0x00004000u +#define LL_PWR_GPIO_BIT_15 0x00008000u +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup PWR_LL_Exported_Macros PWR Exported Macros + * @{ + */ + +/** @defgroup PWR_LL_EM_WRITE_READ Common Write and read registers Macros + * @{ + */ + +/** + * @brief Write a value in PWR register + * @param __REG__ Register to be written + * @param __VALUE__ Value to be written in the register + * @retval None + */ +#define LL_PWR_WriteReg(__REG__, __VALUE__) WRITE_REG(PWR->__REG__, (__VALUE__)) + +/** + * @brief Read a value in PWR register + * @param __REG__ Register to be read + * @retval Register value + */ +#define LL_PWR_ReadReg(__REG__) READ_REG(PWR->__REG__) +/** + * @} + */ + +/** + * @} + */ + + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup PWR_LL_Exported_Functions PWR Exported Functions + * @{ + */ + +/** @defgroup PWR_LL_EF_Configuration Configuration + * @{ + */ +/** + * @brief Set the main internal regulator output voltage + * @rmtoll CR1 VOS LL_PWR_SetRegulVoltageScaling + * @param VoltageScaling This parameter can be one of the following values: + * @arg @ref LL_PWR_REGU_VOLTAGE_SCALE1 + * @arg @ref LL_PWR_REGU_VOLTAGE_SCALE2 + * @retval None + */ +__STATIC_INLINE void LL_PWR_SetRegulVoltageScaling(uint32_t VoltageScaling) +{ + MODIFY_REG(PWR->CR1, PWR_CR1_VOS, VoltageScaling); +} + +/** + * @brief Get the main internal regulator output voltage + * @rmtoll CR1 VOS LL_PWR_GetRegulVoltageScaling + * @retval Returned value can be one of the following values: + * @arg @ref LL_PWR_REGU_VOLTAGE_SCALE1 + * @arg @ref LL_PWR_REGU_VOLTAGE_SCALE2 + */ +__STATIC_INLINE uint32_t LL_PWR_GetRegulVoltageScaling(void) +{ + return (READ_BIT(PWR->CR1, PWR_CR1_VOS)); +} + +/** + * @brief Switch the regulator from main mode to low-power mode + * @rmtoll CR1 LPR LL_PWR_EnableLowPowerRunMode + * @retval None + */ +__STATIC_INLINE void LL_PWR_EnableLowPowerRunMode(void) +{ + SET_BIT(PWR->CR1, PWR_CR1_LPR); +} + +/** + * @brief Switch the regulator from low-power mode to main mode + * @rmtoll CR1 LPR LL_PWR_DisableLowPowerRunMode + * @retval None + */ +__STATIC_INLINE void LL_PWR_DisableLowPowerRunMode(void) +{ + CLEAR_BIT(PWR->CR1, PWR_CR1_LPR); +} + +/** + * @brief Check if the regulator is in low-power mode + * @rmtoll CR1 LPR LL_PWR_IsEnabledLowPowerRunMode + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsEnabledLowPowerRunMode(void) +{ + return ((READ_BIT(PWR->CR1, PWR_CR1_LPR) == (PWR_CR1_LPR)) ? 1UL : 0UL); +} + +/** + * @brief Switch from run main mode to run low-power mode. + * @rmtoll CR1 LPR LL_PWR_EnterLowPowerRunMode + * @retval None + */ +__STATIC_INLINE void LL_PWR_EnterLowPowerRunMode(void) +{ + LL_PWR_EnableLowPowerRunMode(); +} + +/** + * @brief Switch from run main mode to low-power mode. + * @rmtoll CR1 LPR LL_PWR_ExitLowPowerRunMode + * @retval None + */ +__STATIC_INLINE void LL_PWR_ExitLowPowerRunMode(void) +{ + LL_PWR_DisableLowPowerRunMode(); +} + +/** + * @brief Enable access to the backup domain + * @rmtoll CR1 DBP LL_PWR_EnableBkUpAccess + * @retval None + */ +__STATIC_INLINE void LL_PWR_EnableBkUpAccess(void) +{ + SET_BIT(PWR->CR1, PWR_CR1_DBP); +} + +/** + * @brief Disable access to the backup domain + * @rmtoll CR1 DBP LL_PWR_DisableBkUpAccess + * @retval None + */ +__STATIC_INLINE void LL_PWR_DisableBkUpAccess(void) +{ + CLEAR_BIT(PWR->CR1, PWR_CR1_DBP); +} + +/** + * @brief Check if the backup domain is enabled + * @rmtoll CR1 DBP LL_PWR_IsEnabledBkUpAccess + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsEnabledBkUpAccess(void) +{ + return ((READ_BIT(PWR->CR1, PWR_CR1_DBP) == (PWR_CR1_DBP)) ? 1UL : 0UL); +} + +/** + * @brief Enable Flash Power-down mode during low power sleep mode + * @rmtoll CR1 CFIPD_SLP LL_PWR_EnableFlashPowerDownInLPSleep + * @retval None + */ +__STATIC_INLINE void LL_PWR_EnableFlashPowerDownInLPSleep(void) +{ + SET_BIT(PWR->CR1, PWR_CR1_FPD_LPSLP); +} + +/** + * @brief Disable Flash Power-down mode during Low power sleep mode + * @rmtoll CR1 CFIPD_SLP LL_PWR_DisableFlashPowerDownInLPSleep + * @retval None + */ +__STATIC_INLINE void LL_PWR_DisableFlashPowerDownInLPSleep(void) +{ + CLEAR_BIT(PWR->CR1, PWR_CR1_FPD_LPSLP); +} + +/** + * @brief Check if flash power-down mode during low power sleep mode domain is enabled + * @rmtoll CR1 CFIPD_SLP LL_PWR_IsEnableFlashPowerDownInLPSleep + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsEnableFlashPowerDownInLPSleep(void) +{ + return ((READ_BIT(PWR->CR1, PWR_CR1_FPD_LPSLP) == (PWR_CR1_FPD_LPSLP)) ? 1UL : 0UL); +} + +/** + * @brief Enable Flash Power-down mode during low power run mode + * @rmtoll CR1 CFIPD_RUN LL_PWR_EnableFlashPowerDownInLPRun + * @retval None + */ +__STATIC_INLINE void LL_PWR_EnableFlashPowerDownInLPRun(void) +{ + SET_BIT(PWR->CR1, PWR_CR1_FPD_LPRUN); +} + +/** + * @brief Disable Flash Power-down mode during Low power run mode + * @rmtoll CR1 CFIPD_RUN LL_PWR_DisableFlashPowerDownInLPRun + * @retval None + */ +__STATIC_INLINE void LL_PWR_DisableFlashPowerDownInLPRun(void) +{ + CLEAR_BIT(PWR->CR1, PWR_CR1_FPD_LPRUN); +} + +/** + * @brief Check if flash power-down mode during low power run mode domain is enabled + * @rmtoll CR1 CFIPD_RUN LL_PWR_IsEnableFlashPowerDownInLPRun + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsEnableFlashPowerDownInLPRun(void) +{ + return ((READ_BIT(PWR->CR1, PWR_CR1_FPD_LPRUN) == (PWR_CR1_FPD_LPRUN)) ? 1UL : 0UL); +} + +/** + * @brief Enable Flash Power-down mode during stop mode + * @rmtoll CR1 CFIPD_STOP LL_PWR_EnableFlashPowerDownInStop + * @retval None + */ +__STATIC_INLINE void LL_PWR_EnableFlashPowerDownInStop(void) +{ + SET_BIT(PWR->CR1, PWR_CR1_FPD_STOP); +} + +/** + * @brief Disable Flash Power-down mode during stop mode + * @rmtoll CR1 CFIPD_STOP LL_PWR_DisableFlashPowerDownInStop + * @retval None + */ +__STATIC_INLINE void LL_PWR_DisableFlashPowerDownInStop(void) +{ + CLEAR_BIT(PWR->CR1, PWR_CR1_FPD_STOP); +} + +/** + * @brief Check if flash power-down mode during stop mode domain is enabled + * @rmtoll CR1 CFIPD_STOP LL_PWR_IsEnableFlashPowerDownInStop + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsEnableFlashPowerDownInStop(void) +{ + return ((READ_BIT(PWR->CR1, PWR_CR1_FPD_STOP) == (PWR_CR1_FPD_STOP)) ? 1UL : 0UL); +} + +#if defined(STM32G0C1xx) || defined(STM32G0B1xx) +/** + * @brief Enable VDDIO2 supply + * @rmtoll CR2 IOSV LL_PWR_EnableVddIO2 + * @retval None + */ +__STATIC_INLINE void LL_PWR_EnableVddIO2(void) +{ + SET_BIT(PWR->CR2, PWR_CR2_IOSV); +} + +/** + * @brief Disable VDDIO2 supply + * @rmtoll CR2 IOSV LL_PWR_DisableVddIO2 + * @retval None + */ +__STATIC_INLINE void LL_PWR_DisableVddIO2(void) +{ + CLEAR_BIT(PWR->CR2, PWR_CR2_IOSV); +} + +/** + * @brief Check if VDDIO2 supply is enabled + * @rmtoll CR2 IOSV LL_PWR_IsEnabledVddIO2 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsEnabledVddIO2(void) +{ + return ((READ_BIT(PWR->CR2, PWR_CR2_IOSV) == (PWR_CR2_IOSV)) ? 1UL : 0UL); +} + +/** + * @brief Enable VDDUSB supply + * @rmtoll CR2 USV LL_PWR_EnableVddUSB + * @retval None + */ +__STATIC_INLINE void LL_PWR_EnableVddUSB(void) +{ + SET_BIT(PWR->CR2, PWR_CR2_USV); +} + +/** + * @brief Disable VDDUSB supply + * @rmtoll CR2 USV LL_PWR_DisableVddUSB + * @retval None + */ +__STATIC_INLINE void LL_PWR_DisableVddUSB(void) +{ + CLEAR_BIT(PWR->CR2, PWR_CR2_USV); +} + +/** + * @brief Check if VDDUSB supply is enabled + * @rmtoll CR2 USV LL_PWR_IsEnabledVddUSB + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsEnabledVddUSB(void) +{ + return ((READ_BIT(PWR->CR2, PWR_CR2_USV) == (PWR_CR2_USV)) ? 1UL : 0UL); +} +#endif /* STM32G0C1xx || STM32G0B1xx */ + +#if defined (PWR_PVM_SUPPORT) +/** + * @brief Enable the Power Voltage Monitoring on a peripheral + * @rmtoll CR2 PVMUSB LL_PWR_EnablePVM + * @param PeriphVoltage This parameter can be one of the following values: + * @arg @ref LL_PWR_PVM_USB (*) + * + * (*) value not defined in all devices + * @retval None + */ +__STATIC_INLINE void LL_PWR_EnablePVM(uint32_t PeriphVoltage) +{ + SET_BIT(PWR->CR2, PeriphVoltage); +} + +/** + * @brief Disable the Power Voltage Monitoring on a peripheral + * @rmtoll CR2 PVMUSB LL_PWR_DisablePVM + * @param PeriphVoltage This parameter can be one of the following values: + * @arg @ref LL_PWR_PVM_USB (*) + * + * (*) value not defined in all devices + * @retval None + */ +__STATIC_INLINE void LL_PWR_DisablePVM(uint32_t PeriphVoltage) +{ + CLEAR_BIT(PWR->CR2, PeriphVoltage); +} + +/** + * @brief Check if Power Voltage Monitoring is enabled on a peripheral + * @rmtoll CR2 PVMUSB LL_PWR_IsEnabledPVM + * @param PeriphVoltage This parameter can be one of the following values: + * @arg @ref LL_PWR_PVM_USB (*) + * + * (*) value not defined in all devices + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsEnabledPVM(uint32_t PeriphVoltage) +{ + return ((READ_BIT(PWR->CR2, PeriphVoltage) == (PeriphVoltage)) ? 1UL : 0UL); +} +#endif /* PWR_PVM_SUPPORT */ + +/** + * @brief Set Low-Power mode + * @rmtoll CR1 LPMS LL_PWR_SetPowerMode + * @param LowPowerMode This parameter can be one of the following values: + * @arg @ref LL_PWR_MODE_STOP0 + * @arg @ref LL_PWR_MODE_STOP1 + * @arg @ref LL_PWR_MODE_STANDBY + * @arg @ref LL_PWR_MODE_SHUTDOWN + * @retval None + */ +__STATIC_INLINE void LL_PWR_SetPowerMode(uint32_t LowPowerMode) +{ + MODIFY_REG(PWR->CR1, PWR_CR1_LPMS, LowPowerMode); +} + +/** + * @brief Get Low-Power mode + * @rmtoll CR1 LPMS LL_PWR_GetPowerMode + * @retval Returned value can be one of the following values: + * @arg @ref LL_PWR_MODE_STOP0 + * @arg @ref LL_PWR_MODE_STOP1 + * @arg @ref LL_PWR_MODE_STANDBY + * @arg @ref LL_PWR_MODE_SHUTDOWN + */ +__STATIC_INLINE uint32_t LL_PWR_GetPowerMode(void) +{ + return (uint32_t)(READ_BIT(PWR->CR1, PWR_CR1_LPMS)); +} + +#if defined (PWR_CR2_PVDE) +/** + * @brief Configure the high voltage threshold detected by the Power Voltage Detector + * @rmtoll CR2 PLS LL_PWR_SetPVDHighLevel + * @param PVDHighLevel This parameter can be one of the following values: + * @arg @ref LL_PWR_PVDHLEVEL_0 + * @arg @ref LL_PWR_PVDHLEVEL_1 + * @arg @ref LL_PWR_PVDHLEVEL_2 + * @arg @ref LL_PWR_PVDHLEVEL_3 + * @arg @ref LL_PWR_PVDHLEVEL_4 + * @arg @ref LL_PWR_PVDHLEVEL_5 + * @arg @ref LL_PWR_PVDHLEVEL_6 + * @arg @ref LL_PWR_PVDHLEVEL_7 + * @retval None + */ +__STATIC_INLINE void LL_PWR_SetPVDHighLevel(uint32_t PVDHighLevel) +{ + MODIFY_REG(PWR->CR2, PWR_CR2_PVDRT, PVDHighLevel); +} + +/** + * @brief Get the voltage threshold detection + * @rmtoll CR2 PLS LL_PWR_GetPVDHighLevel + * @retval Returned value can be one of the following values: + * @arg @ref LL_PWR_PVDHLEVEL_0 + * @arg @ref LL_PWR_PVDHLEVEL_1 + * @arg @ref LL_PWR_PVDHLEVEL_2 + * @arg @ref LL_PWR_PVDHLEVEL_3 + * @arg @ref LL_PWR_PVDHLEVEL_4 + * @arg @ref LL_PWR_PVDHLEVEL_5 + * @arg @ref LL_PWR_PVDHLEVEL_6 + * @arg @ref LL_PWR_PVDHLEVEL_7 + */ +__STATIC_INLINE uint32_t LL_PWR_GetPVDHighLevel(void) +{ + return (uint32_t)(READ_BIT(PWR->CR2, PWR_CR2_PVDRT)); +} +/** + * @brief Configure the low voltage threshold detected by the Power Voltage Detector + * @rmtoll CR2 PLS LL_PWR_SetPVDLowLevel + * @param PVDLowLevel This parameter can be one of the following values: + * @arg @ref LL_PWR_PVDLLEVEL_0 + * @arg @ref LL_PWR_PVDLLEVEL_1 + * @arg @ref LL_PWR_PVDLLEVEL_2 + * @arg @ref LL_PWR_PVDLLEVEL_3 + * @arg @ref LL_PWR_PVDLLEVEL_4 + * @arg @ref LL_PWR_PVDLLEVEL_5 + * @arg @ref LL_PWR_PVDLLEVEL_6 + * @retval None + */ +__STATIC_INLINE void LL_PWR_SetPVDLowLevel(uint32_t PVDLowLevel) +{ + MODIFY_REG(PWR->CR2, PWR_CR2_PVDFT, PVDLowLevel); +} + +/** + * @brief Get the low voltage threshold detection + * @rmtoll CR2 PLS LL_PWR_GetPVDLowLevel + * @retval Returned value can be one of the following values: + * @arg @ref LL_PWR_PVDLLEVEL_0 + * @arg @ref LL_PWR_PVDLLEVEL_1 + * @arg @ref LL_PWR_PVDLLEVEL_2 + * @arg @ref LL_PWR_PVDLLEVEL_3 + * @arg @ref LL_PWR_PVDLLEVEL_4 + * @arg @ref LL_PWR_PVDLLEVEL_5 + * @arg @ref LL_PWR_PVDLLEVEL_6 + */ +__STATIC_INLINE uint32_t LL_PWR_GetPVDLowLevel(void) +{ + return (uint32_t)(READ_BIT(PWR->CR2, PWR_CR2_PVDFT)); +} + +/** + * @brief Enable Power Voltage Detector + * @rmtoll CR2 PVDE LL_PWR_EnablePVD + * @retval None + */ +__STATIC_INLINE void LL_PWR_EnablePVD(void) +{ + SET_BIT(PWR->CR2, PWR_CR2_PVDE); +} + +/** + * @brief Disable Power Voltage Detector + * @rmtoll CR2 PVDE LL_PWR_DisablePVD + * @retval None + */ +__STATIC_INLINE void LL_PWR_DisablePVD(void) +{ + CLEAR_BIT(PWR->CR2, PWR_CR2_PVDE); +} + +/** + * @brief Check if Power Voltage Detector is enabled + * @rmtoll CR2 PVDE LL_PWR_IsEnabledPVD + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsEnabledPVD(void) +{ + return ((READ_BIT(PWR->CR2, PWR_CR2_PVDE) == (PWR_CR2_PVDE)) ? 1UL : 0UL); +} +#endif /* PWR_CR2_PVDE */ + +/** + * @brief Enable Internal Wake-up line + * @rmtoll CR3 EIWF LL_PWR_EnableInternWU + * @retval None + */ +__STATIC_INLINE void LL_PWR_EnableInternWU(void) +{ + SET_BIT(PWR->CR3, PWR_CR3_EIWUL); +} + +/** + * @brief Disable Internal Wake-up line + * @rmtoll CR3 EIWF LL_PWR_DisableInternWU + * @retval None + */ +__STATIC_INLINE void LL_PWR_DisableInternWU(void) +{ + CLEAR_BIT(PWR->CR3, PWR_CR3_EIWUL); +} + +/** + * @brief Check if Internal Wake-up line is enabled + * @rmtoll CR3 EIWF LL_PWR_IsEnabledInternWU + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsEnabledInternWU(void) +{ + return ((READ_BIT(PWR->CR3, PWR_CR3_EIWUL) == (PWR_CR3_EIWUL)) ? 1UL : 0UL); +} + +/** + * @brief Enable pull-up and pull-down configuration + * @rmtoll CR3 APC LL_PWR_EnablePUPDCfg + * @retval None + */ +__STATIC_INLINE void LL_PWR_EnablePUPDCfg(void) +{ + SET_BIT(PWR->CR3, PWR_CR3_APC); +} + +/** + * @brief Disable pull-up and pull-down configuration + * @rmtoll CR3 APC LL_PWR_DisablePUPDCfg + * @retval None + */ +__STATIC_INLINE void LL_PWR_DisablePUPDCfg(void) +{ + CLEAR_BIT(PWR->CR3, PWR_CR3_APC); +} + +/** + * @brief Check if pull-up and pull-down configuration is enabled + * @rmtoll CR3 APC LL_PWR_IsEnabledPUPDCfg + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsEnabledPUPDCfg(void) +{ + return ((READ_BIT(PWR->CR3, PWR_CR3_APC) == (PWR_CR3_APC)) ? 1UL : 0UL); +} + +#if defined(PWR_CR3_RRS) +/** + * @brief Enable SRAM content retention in Standby mode + * @rmtoll CR3 RRS LL_PWR_EnableSRAMRetention + * @retval None + */ +__STATIC_INLINE void LL_PWR_EnableSRAMRetention(void) +{ + SET_BIT(PWR->CR3, PWR_CR3_RRS); +} + +/** + * @brief Disable SRAM content retention in Standby mode + * @rmtoll CR3 RRS LL_PWR_DisableSRAMRetention + * @retval None + */ +__STATIC_INLINE void LL_PWR_DisableSRAMRetention(void) +{ + CLEAR_BIT(PWR->CR3, PWR_CR3_RRS); +} + +/** + * @brief Check if SRAM content retention in Standby mode is enabled + * @rmtoll CR3 RRS LL_PWR_IsEnabledSRAMRetention + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsEnabledSRAMRetention(void) +{ + return ((READ_BIT(PWR->CR3, PWR_CR3_RRS) == (PWR_CR3_RRS)) ? 1UL : 0UL); +} +#endif /* PWR_CR3_RRS */ + +#if defined(PWR_CR3_ENB_ULP) +/** + * @brief Enable sampling mode of LPMMU reset block + * @rmtoll CR3 ENB_ULP LL_PWR_EnableLPMUResetSamplingMode + * @retval None + */ +__STATIC_INLINE void LL_PWR_EnableLPMUResetSamplingMode(void) +{ + SET_BIT(PWR->CR3, PWR_CR3_ENB_ULP); +} + +/** + * @brief Disable sampling mode of LPMMU reset block + * @rmtoll CR3 ENB_ULP LL_PWR_DisableLPMUResetSamplingMode + * @retval None + */ +__STATIC_INLINE void LL_PWR_DisableLPMUResetSamplingMode(void) +{ + CLEAR_BIT(PWR->CR3, PWR_CR3_ENB_ULP); +} + +/** + * @brief Check if sampling mode of LPMMU reset block + * @rmtoll CR3 ENB_ULP LL_PWR_IsEnableLPMUResetSamplingMode + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsEnableLPMUResetSamplingMode(void) +{ + return ((READ_BIT(PWR->CR3, PWR_CR3_ENB_ULP) == (PWR_CR3_ENB_ULP)) ? 1UL : 0UL); +} +#endif /* PWR_CR3_ENB_ULP */ + +/** + * @brief Enable the WakeUp PINx functionality + * @rmtoll CR3 EWUP1 LL_PWR_EnableWakeUpPin\n + * CR3 EWUP2 LL_PWR_EnableWakeUpPin\n + * CR3 EWUP3 LL_PWR_EnableWakeUpPin\n + * CR3 EWUP4 LL_PWR_EnableWakeUpPin\n + * CR3 EWUP5 LL_PWR_EnableWakeUpPin\n + * CR3 EWUP6 LL_PWR_EnableWakeUpPin + * @param WakeUpPin This parameter can be one of the following values: + * @arg @ref LL_PWR_WAKEUP_PIN1 + * @arg @ref LL_PWR_WAKEUP_PIN2 + * @arg @ref LL_PWR_WAKEUP_PIN3 (*) + * @arg @ref LL_PWR_WAKEUP_PIN4 + * @arg @ref LL_PWR_WAKEUP_PIN5 (*) + * @arg @ref LL_PWR_WAKEUP_PIN6 + * @retval None + * @note (*) availability depends on devices + */ +__STATIC_INLINE void LL_PWR_EnableWakeUpPin(uint32_t WakeUpPin) +{ + SET_BIT(PWR->CR3, WakeUpPin); +} + +/** + * @brief Disable the WakeUp PINx functionality + * @rmtoll CR3 EWUP1 LL_PWR_DisableWakeUpPin\n + * CR3 EWUP2 LL_PWR_DisableWakeUpPin\n + * CR3 EWUP3 LL_PWR_DisableWakeUpPin\n + * CR3 EWUP4 LL_PWR_DisableWakeUpPin\n + * CR3 EWUP5 LL_PWR_DisableWakeUpPin\n + * CR3 EWUP6 LL_PWR_DisableWakeUpPin + * @param WakeUpPin This parameter can be one of the following values: + * @arg @ref LL_PWR_WAKEUP_PIN1 + * @arg @ref LL_PWR_WAKEUP_PIN2 + * @arg @ref LL_PWR_WAKEUP_PIN3 (*) + * @arg @ref LL_PWR_WAKEUP_PIN4 + * @arg @ref LL_PWR_WAKEUP_PIN5 (*) + * @arg @ref LL_PWR_WAKEUP_PIN6 + * @retval None + * @note (*) availability depends on devices + */ +__STATIC_INLINE void LL_PWR_DisableWakeUpPin(uint32_t WakeUpPin) +{ + CLEAR_BIT(PWR->CR3, WakeUpPin); +} + +/** + * @brief Check if the WakeUp PINx functionality is enabled + * @rmtoll CR3 EWUP1 LL_PWR_IsEnabledWakeUpPin\n + * CR3 EWUP2 LL_PWR_IsEnabledWakeUpPin\n + * CR3 EWUP3 LL_PWR_IsEnabledWakeUpPin\n + * CR3 EWUP4 LL_PWR_IsEnabledWakeUpPin\n + * CR3 EWUP5 LL_PWR_IsEnabledWakeUpPin\n + * CR3 EWUP6 LL_PWR_IsEnabledWakeUpPin + * @param WakeUpPin This parameter can be one of the following values: + * @arg @ref LL_PWR_WAKEUP_PIN1 + * @arg @ref LL_PWR_WAKEUP_PIN2 + * @arg @ref LL_PWR_WAKEUP_PIN3 (*) + * @arg @ref LL_PWR_WAKEUP_PIN4 + * @arg @ref LL_PWR_WAKEUP_PIN5 (*) + * @arg @ref LL_PWR_WAKEUP_PIN6 + * @retval State of bit (1 or 0). + * @note (*) availability depends on devices + */ +__STATIC_INLINE uint32_t LL_PWR_IsEnabledWakeUpPin(uint32_t WakeUpPin) +{ + return ((READ_BIT(PWR->CR3, WakeUpPin) == (WakeUpPin)) ? 1UL : 0UL); +} + +/** + * @brief Set the resistor impedance + * @rmtoll CR4 VBRS LL_PWR_SetBattChargResistor + * @param Resistor This parameter can be one of the following values: + * @arg @ref LL_PWR_BATTCHARG_RESISTOR_5K + * @arg @ref LL_PWR_BATTCHARG_RESISTOR_1_5K + * @retval None + */ +__STATIC_INLINE void LL_PWR_SetBattChargResistor(uint32_t Resistor) +{ + MODIFY_REG(PWR->CR4, PWR_CR4_VBRS, Resistor); +} + +/** + * @brief Get the resistor impedance + * @rmtoll CR4 VBRS LL_PWR_GetBattChargResistor + * @retval Returned value can be one of the following values: + * @arg @ref LL_PWR_BATTCHARG_RESISTOR_5K + * @arg @ref LL_PWR_BATTCHARG_RESISTOR_1_5K + */ +__STATIC_INLINE uint32_t LL_PWR_GetBattChargResistor(void) +{ + return (uint32_t)(READ_BIT(PWR->CR4, PWR_CR4_VBRS)); +} + +/** + * @brief Enable battery charging + * @rmtoll CR4 VBE LL_PWR_EnableBatteryCharging + * @retval None + */ +__STATIC_INLINE void LL_PWR_EnableBatteryCharging(void) +{ + SET_BIT(PWR->CR4, PWR_CR4_VBE); +} + +/** + * @brief Disable battery charging + * @rmtoll CR4 VBE LL_PWR_DisableBatteryCharging + * @retval None + */ +__STATIC_INLINE void LL_PWR_DisableBatteryCharging(void) +{ + CLEAR_BIT(PWR->CR4, PWR_CR4_VBE); +} + +/** + * @brief Check if battery charging is enabled + * @rmtoll CR4 VBE LL_PWR_IsEnabledBatteryCharging + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsEnabledBatteryCharging(void) +{ + return ((READ_BIT(PWR->CR4, PWR_CR4_VBE) == (PWR_CR4_VBE)) ? 1UL : 0UL); +} + +/** + * @brief Set the Wake-Up pin polarity low for the event detection + * @rmtoll CR4 WP1 LL_PWR_SetWakeUpPinPolarityLow\n + * CR4 WP2 LL_PWR_SetWakeUpPinPolarityLow\n + * CR4 WP3 LL_PWR_SetWakeUpPinPolarityLow\n + * CR4 WP4 LL_PWR_SetWakeUpPinPolarityLow\n + * CR4 WP5 LL_PWR_SetWakeUpPinPolarityLow\n + * CR4 WP6 LL_PWR_SetWakeUpPinPolarityLow + * @param WakeUpPin This parameter can be one of the following values: + * @arg @ref LL_PWR_WAKEUP_PIN1 + * @arg @ref LL_PWR_WAKEUP_PIN2 + * @arg @ref LL_PWR_WAKEUP_PIN3 (*) + * @arg @ref LL_PWR_WAKEUP_PIN4 + * @arg @ref LL_PWR_WAKEUP_PIN5 (*) + * @arg @ref LL_PWR_WAKEUP_PIN6 + * @retval None + * @note (*) availability depends on devices + */ +__STATIC_INLINE void LL_PWR_SetWakeUpPinPolarityLow(uint32_t WakeUpPin) +{ + SET_BIT(PWR->CR4, WakeUpPin); +} + +/** + * @brief Set the Wake-Up pin polarity high for the event detection + * @rmtoll CR4 WP1 LL_PWR_SetWakeUpPinPolarityHigh\n + * CR4 WP2 LL_PWR_SetWakeUpPinPolarityHigh\n + * CR4 WP3 LL_PWR_SetWakeUpPinPolarityHigh\n + * CR4 WP4 LL_PWR_SetWakeUpPinPolarityHigh\n + * CR4 WP5 LL_PWR_SetWakeUpPinPolarityHigh\n + * CR4 WP6 LL_PWR_SetWakeUpPinPolarityHigh + * @param WakeUpPin This parameter can be one of the following values: + * @arg @ref LL_PWR_WAKEUP_PIN1 + * @arg @ref LL_PWR_WAKEUP_PIN2 + * @arg @ref LL_PWR_WAKEUP_PIN3 (*) + * @arg @ref LL_PWR_WAKEUP_PIN4 + * @arg @ref LL_PWR_WAKEUP_PIN5 (*) + * @arg @ref LL_PWR_WAKEUP_PIN6 + * @note (*) availability depends on devices + * @retval None + */ +__STATIC_INLINE void LL_PWR_SetWakeUpPinPolarityHigh(uint32_t WakeUpPin) +{ + CLEAR_BIT(PWR->CR4, WakeUpPin); +} + +/** + * @brief Get the Wake-Up pin polarity for the event detection + * @rmtoll CR4 WP1 LL_PWR_IsWakeUpPinPolarityLow\n + * CR4 WP2 LL_PWR_IsWakeUpPinPolarityLow\n + * CR4 WP3 LL_PWR_IsWakeUpPinPolarityLow\n + * CR4 WP4 LL_PWR_IsWakeUpPinPolarityLow\n + * CR4 WP5 LL_PWR_IsWakeUpPinPolarityLow\n + * CR4 WP6 LL_PWR_IsWakeUpPinPolarityLow + * @param WakeUpPin This parameter can be one of the following values: + * @arg @ref LL_PWR_WAKEUP_PIN1 + * @arg @ref LL_PWR_WAKEUP_PIN2 + * @arg @ref LL_PWR_WAKEUP_PIN3 (*) + * @arg @ref LL_PWR_WAKEUP_PIN4 + * @arg @ref LL_PWR_WAKEUP_PIN5 (*) + * @arg @ref LL_PWR_WAKEUP_PIN6 + * @note (*) availability depends on devices + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsWakeUpPinPolarityLow(uint32_t WakeUpPin) +{ + return ((READ_BIT(PWR->CR4, WakeUpPin) == (WakeUpPin)) ? 1UL : 0UL); +} + +/** + * @brief Enable GPIO pull-up state in Standby and Shutdown modes + * @rmtoll PUCRA PU0-15 LL_PWR_EnableGPIOPullUp\n + * PUCRB PU0-15 LL_PWR_EnableGPIOPullUp\n + * PUCRC PU0-15 LL_PWR_EnableGPIOPullUp\n + * PUCRD PU0-15 LL_PWR_EnableGPIOPullUp\n + * PUCRE PU0-15 LL_PWR_EnableGPIOPullUp\n + * PUCRF PU0-13 LL_PWR_EnableGPIOPullUp + * @param GPIO This parameter can be one of the following values: + * @arg @ref LL_PWR_GPIO_A + * @arg @ref LL_PWR_GPIO_B + * @arg @ref LL_PWR_GPIO_C + * @arg @ref LL_PWR_GPIO_D + * @arg @ref LL_PWR_GPIO_E (*) + * @arg @ref LL_PWR_GPIO_F + * @param GPIONumber This parameter can be one of the following values: + * @arg @ref LL_PWR_GPIO_BIT_0 + * @arg @ref LL_PWR_GPIO_BIT_1 + * @arg @ref LL_PWR_GPIO_BIT_2 + * @arg @ref LL_PWR_GPIO_BIT_3 + * @arg @ref LL_PWR_GPIO_BIT_4 + * @arg @ref LL_PWR_GPIO_BIT_5 + * @arg @ref LL_PWR_GPIO_BIT_6 + * @arg @ref LL_PWR_GPIO_BIT_7 + * @arg @ref LL_PWR_GPIO_BIT_8 + * @arg @ref LL_PWR_GPIO_BIT_9 + * @arg @ref LL_PWR_GPIO_BIT_10 + * @arg @ref LL_PWR_GPIO_BIT_11 + * @arg @ref LL_PWR_GPIO_BIT_12 + * @arg @ref LL_PWR_GPIO_BIT_13 + * @arg @ref LL_PWR_GPIO_BIT_14 + * @arg @ref LL_PWR_GPIO_BIT_15 + * @retval None + */ +__STATIC_INLINE void LL_PWR_EnableGPIOPullUp(uint32_t GPIO, uint32_t GPIONumber) +{ + SET_BIT(*((__IO uint32_t *)GPIO), GPIONumber); +} + +/** + * @brief Disable GPIO pull-up state in Standby and Shutdown modes + * @rmtoll PUCRA PU0-15 LL_PWR_DisableGPIOPullUp\n + * PUCRB PU0-15 LL_PWR_DisableGPIOPullUp\n + * PUCRC PU0-15 LL_PWR_DisableGPIOPullUp\n + * PUCRD PU0-15 LL_PWR_DisableGPIOPullUp\n + * PUCRE PU0-15 LL_PWR_DisableGPIOPullUp\n + * PUCRF PU0-13 LL_PWR_DisableGPIOPullUp + * @param GPIO This parameter can be one of the following values: + * @arg @ref LL_PWR_GPIO_A + * @arg @ref LL_PWR_GPIO_B + * @arg @ref LL_PWR_GPIO_C + * @arg @ref LL_PWR_GPIO_D + * @arg @ref LL_PWR_GPIO_E (*) + * @arg @ref LL_PWR_GPIO_F + * @param GPIONumber This parameter can be one of the following values: + * @arg @ref LL_PWR_GPIO_BIT_0 + * @arg @ref LL_PWR_GPIO_BIT_1 + * @arg @ref LL_PWR_GPIO_BIT_2 + * @arg @ref LL_PWR_GPIO_BIT_3 + * @arg @ref LL_PWR_GPIO_BIT_4 + * @arg @ref LL_PWR_GPIO_BIT_5 + * @arg @ref LL_PWR_GPIO_BIT_6 + * @arg @ref LL_PWR_GPIO_BIT_7 + * @arg @ref LL_PWR_GPIO_BIT_8 + * @arg @ref LL_PWR_GPIO_BIT_9 + * @arg @ref LL_PWR_GPIO_BIT_10 + * @arg @ref LL_PWR_GPIO_BIT_11 + * @arg @ref LL_PWR_GPIO_BIT_12 + * @arg @ref LL_PWR_GPIO_BIT_13 + * @arg @ref LL_PWR_GPIO_BIT_14 + * @arg @ref LL_PWR_GPIO_BIT_15 + * @retval None + */ +__STATIC_INLINE void LL_PWR_DisableGPIOPullUp(uint32_t GPIO, uint32_t GPIONumber) +{ + CLEAR_BIT(*((__IO uint32_t *)GPIO), GPIONumber); +} + +/** + * @brief Check if GPIO pull-up state is enabled + * @rmtoll PUCRA PU0-15 LL_PWR_IsEnabledGPIOPullUp\n + * PUCRB PU0-15 LL_PWR_IsEnabledGPIOPullUp\n + * PUCRC PU0-15 LL_PWR_IsEnabledGPIOPullUp\n + * PUCRD PU0-15 LL_PWR_IsEnabledGPIOPullUp\n + * PUCRE PU0-15 LL_PWR_IsEnabledGPIOPullUp\n + * PUCRF PU0-13 LL_PWR_IsEnabledGPIOPullUp + * @param GPIO This parameter can be one of the following values: + * @arg @ref LL_PWR_GPIO_A + * @arg @ref LL_PWR_GPIO_B + * @arg @ref LL_PWR_GPIO_C + * @arg @ref LL_PWR_GPIO_D + * @arg @ref LL_PWR_GPIO_E (*) + * @arg @ref LL_PWR_GPIO_F + * @param GPIONumber This parameter can be one of the following values: + * @arg @ref LL_PWR_GPIO_BIT_0 + * @arg @ref LL_PWR_GPIO_BIT_1 + * @arg @ref LL_PWR_GPIO_BIT_2 + * @arg @ref LL_PWR_GPIO_BIT_3 + * @arg @ref LL_PWR_GPIO_BIT_4 + * @arg @ref LL_PWR_GPIO_BIT_5 + * @arg @ref LL_PWR_GPIO_BIT_6 + * @arg @ref LL_PWR_GPIO_BIT_7 + * @arg @ref LL_PWR_GPIO_BIT_8 + * @arg @ref LL_PWR_GPIO_BIT_9 + * @arg @ref LL_PWR_GPIO_BIT_10 + * @arg @ref LL_PWR_GPIO_BIT_11 + * @arg @ref LL_PWR_GPIO_BIT_12 + * @arg @ref LL_PWR_GPIO_BIT_13 + * @arg @ref LL_PWR_GPIO_BIT_14 + * @arg @ref LL_PWR_GPIO_BIT_15 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsEnabledGPIOPullUp(uint32_t GPIO, uint32_t GPIONumber) +{ + return ((READ_BIT(*((__IO uint32_t *)GPIO), GPIONumber) == (GPIONumber)) ? 1UL : 0UL); +} + +/** + * @brief Enable GPIO pull-down state in Standby and Shutdown modes + * @rmtoll PDCRA PD0-15 LL_PWR_EnableGPIOPullDown\n + * PDCRB PD0-15 LL_PWR_EnableGPIOPullDown\n + * PDCRC PD0-15 LL_PWR_EnableGPIOPullDown\n + * PDCRD PD0-15 LL_PWR_EnableGPIOPullDown\n + * PDCRE PD0-15 LL_PWR_EnableGPIOPullDown\n + * PDCRF PD0-13 LL_PWR_EnableGPIOPullDown + * @param GPIO This parameter can be one of the following values: + * @arg @ref LL_PWR_GPIO_A + * @arg @ref LL_PWR_GPIO_B + * @arg @ref LL_PWR_GPIO_C + * @arg @ref LL_PWR_GPIO_D + * @arg @ref LL_PWR_GPIO_E (*) + * @arg @ref LL_PWR_GPIO_F + * @param GPIONumber This parameter can be one of the following values: + * @arg @ref LL_PWR_GPIO_BIT_0 + * @arg @ref LL_PWR_GPIO_BIT_1 + * @arg @ref LL_PWR_GPIO_BIT_2 + * @arg @ref LL_PWR_GPIO_BIT_3 + * @arg @ref LL_PWR_GPIO_BIT_4 + * @arg @ref LL_PWR_GPIO_BIT_5 + * @arg @ref LL_PWR_GPIO_BIT_6 + * @arg @ref LL_PWR_GPIO_BIT_7 + * @arg @ref LL_PWR_GPIO_BIT_8 + * @arg @ref LL_PWR_GPIO_BIT_9 + * @arg @ref LL_PWR_GPIO_BIT_10 + * @arg @ref LL_PWR_GPIO_BIT_11 + * @arg @ref LL_PWR_GPIO_BIT_12 + * @arg @ref LL_PWR_GPIO_BIT_13 + * @arg @ref LL_PWR_GPIO_BIT_14 + * @arg @ref LL_PWR_GPIO_BIT_15 + * @retval None + */ +__STATIC_INLINE void LL_PWR_EnableGPIOPullDown(uint32_t GPIO, uint32_t GPIONumber) +{ + SET_BIT(*((__IO uint32_t *)(GPIO + 4U)), GPIONumber); +} + +/** + * @brief Disable GPIO pull-down state in Standby and Shutdown modes + * @rmtoll PDCRA PD0-15 LL_PWR_DisableGPIOPullDown\n + * PDCRB PD0-15 LL_PWR_DisableGPIOPullDown\n + * PDCRC PD0-15 LL_PWR_DisableGPIOPullDown\n + * PDCRD PD0-15 LL_PWR_DisableGPIOPullDown\n + * PDCRE PD0-15 LL_PWR_DisableGPIOPullDown\n + * PDCRF PD0-13 LL_PWR_DisableGPIOPullDown + * @param GPIO This parameter can be one of the following values: + * @arg @ref LL_PWR_GPIO_A + * @arg @ref LL_PWR_GPIO_B + * @arg @ref LL_PWR_GPIO_C + * @arg @ref LL_PWR_GPIO_D + * @arg @ref LL_PWR_GPIO_E (*) + * @arg @ref LL_PWR_GPIO_F + * @param GPIONumber This parameter can be one of the following values: + * @arg @ref LL_PWR_GPIO_BIT_0 + * @arg @ref LL_PWR_GPIO_BIT_1 + * @arg @ref LL_PWR_GPIO_BIT_2 + * @arg @ref LL_PWR_GPIO_BIT_3 + * @arg @ref LL_PWR_GPIO_BIT_4 + * @arg @ref LL_PWR_GPIO_BIT_5 + * @arg @ref LL_PWR_GPIO_BIT_6 + * @arg @ref LL_PWR_GPIO_BIT_7 + * @arg @ref LL_PWR_GPIO_BIT_8 + * @arg @ref LL_PWR_GPIO_BIT_9 + * @arg @ref LL_PWR_GPIO_BIT_10 + * @arg @ref LL_PWR_GPIO_BIT_11 + * @arg @ref LL_PWR_GPIO_BIT_12 + * @arg @ref LL_PWR_GPIO_BIT_13 + * @arg @ref LL_PWR_GPIO_BIT_14 + * @arg @ref LL_PWR_GPIO_BIT_15 + * @retval None + */ +__STATIC_INLINE void LL_PWR_DisableGPIOPullDown(uint32_t GPIO, uint32_t GPIONumber) +{ + CLEAR_BIT(*((__IO uint32_t *)(GPIO + 4U)), GPIONumber); +} + +/** + * @brief Check if GPIO pull-down state is enabled + * @rmtoll PDCRA PD0-15 LL_PWR_IsEnabledGPIOPullDown\n + * PDCRB PD0-15 LL_PWR_IsEnabledGPIOPullDown\n + * PDCRC PD0-15 LL_PWR_IsEnabledGPIOPullDown\n + * PDCRD PD0-15 LL_PWR_IsEnabledGPIOPullDown\n + * PDCRE PD0-15 LL_PWR_IsEnabledGPIOPullDown\n + * PDCRF PD0-13 LL_PWR_IsEnabledGPIOPullDown + * @param GPIO This parameter can be one of the following values: + * @arg @ref LL_PWR_GPIO_A + * @arg @ref LL_PWR_GPIO_B + * @arg @ref LL_PWR_GPIO_C + * @arg @ref LL_PWR_GPIO_D + * @arg @ref LL_PWR_GPIO_E (*) + * @arg @ref LL_PWR_GPIO_F + * @param GPIONumber This parameter can be one of the following values: + * @arg @ref LL_PWR_GPIO_BIT_0 + * @arg @ref LL_PWR_GPIO_BIT_1 + * @arg @ref LL_PWR_GPIO_BIT_2 + * @arg @ref LL_PWR_GPIO_BIT_3 + * @arg @ref LL_PWR_GPIO_BIT_4 + * @arg @ref LL_PWR_GPIO_BIT_5 + * @arg @ref LL_PWR_GPIO_BIT_6 + * @arg @ref LL_PWR_GPIO_BIT_7 + * @arg @ref LL_PWR_GPIO_BIT_8 + * @arg @ref LL_PWR_GPIO_BIT_9 + * @arg @ref LL_PWR_GPIO_BIT_10 + * @arg @ref LL_PWR_GPIO_BIT_11 + * @arg @ref LL_PWR_GPIO_BIT_12 + * @arg @ref LL_PWR_GPIO_BIT_13 + * @arg @ref LL_PWR_GPIO_BIT_14 + * @arg @ref LL_PWR_GPIO_BIT_15 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsEnabledGPIOPullDown(uint32_t GPIO, uint32_t GPIONumber) +{ + return ((READ_BIT(*((__IO uint32_t *)(GPIO + 4U)), GPIONumber) == (GPIONumber)) ? 1UL : 0UL); +} + +/** + * @} + */ + +/** @defgroup PWR_LL_EF_FLAG_Management FLAG_Management + * @{ + */ + +/** + * @brief Get Internal Wake-up line Flag + * @rmtoll SR1 WUFI LL_PWR_IsActiveFlag_InternWU + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_InternWU(void) +{ + return ((READ_BIT(PWR->SR1, PWR_SR1_WUFI) == (PWR_SR1_WUFI)) ? 1UL : 0UL); +} + +/** + * @brief Get Stand-By Flag + * @rmtoll SR1 SBF LL_PWR_IsActiveFlag_SB + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_SB(void) +{ + return ((READ_BIT(PWR->SR1, PWR_SR1_SBF) == (PWR_SR1_SBF)) ? 1UL : 0UL); +} + +/** + * @brief Get Wake-up Flag 6 + * @rmtoll SR1 WUF6 LL_PWR_IsActiveFlag_WU6 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_WU6(void) +{ + return ((READ_BIT(PWR->SR1, PWR_SR1_WUF6) == (PWR_SR1_WUF6)) ? 1UL : 0UL); +} + +#if defined(PWR_CR3_EWUP5) +/** + * @brief Get Wake-up Flag 5 + * @rmtoll SR1 WUF5 LL_PWR_IsActiveFlag_WU5 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_WU5(void) +{ + return ((READ_BIT(PWR->SR1, PWR_SR1_WUF5) == (PWR_SR1_WUF5)) ? 1UL : 0UL); +} +#endif /* PWR_CR3_EWUP5 */ + +/** + * @brief Get Wake-up Flag 4 + * @rmtoll SR1 WUF4 LL_PWR_IsActiveFlag_WU4 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_WU4(void) +{ + return ((READ_BIT(PWR->SR1, PWR_SR1_WUF4) == (PWR_SR1_WUF4)) ? 1UL : 0UL); +} + +#if defined(PWR_CR3_EWUP3) +/** + * @brief Get Wake-up Flag 3 + * @rmtoll SR1 WUF3 LL_PWR_IsActiveFlag_WU3 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_WU3(void) +{ + return ((READ_BIT(PWR->SR1, PWR_SR1_WUF3) == (PWR_SR1_WUF3)) ? 1UL : 0UL); +} +#endif /* PWR_CR3_EWUP3 */ + +/** + * @brief Get Wake-up Flag 2 + * @rmtoll SR1 WUF2 LL_PWR_IsActiveFlag_WU2 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_WU2(void) +{ + return ((READ_BIT(PWR->SR1, PWR_SR1_WUF2) == (PWR_SR1_WUF2)) ? 1UL : 0UL); +} + +/** + * @brief Get Wake-up Flag 1 + * @rmtoll SR1 WUF1 LL_PWR_IsActiveFlag_WU1 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_WU1(void) +{ + return ((READ_BIT(PWR->SR1, PWR_SR1_WUF1) == (PWR_SR1_WUF1)) ? 1UL : 0UL); +} + +/** + * @brief Clear Stand-By Flag + * @rmtoll SCR CSBF LL_PWR_ClearFlag_SB + * @retval None + */ +__STATIC_INLINE void LL_PWR_ClearFlag_SB(void) +{ + WRITE_REG(PWR->SCR, PWR_SCR_CSBF); +} + +/** + * @brief Clear Wake-up Flags + * @rmtoll SCR CWUF LL_PWR_ClearFlag_WU + * @retval None + */ +__STATIC_INLINE void LL_PWR_ClearFlag_WU(void) +{ + WRITE_REG(PWR->SCR, PWR_SCR_CWUF); +} + +/** + * @brief Clear Wake-up Flag 6 + * @rmtoll SCR CWUF6 LL_PWR_ClearFlag_WU6 + * @retval None + */ +__STATIC_INLINE void LL_PWR_ClearFlag_WU6(void) +{ + WRITE_REG(PWR->SCR, PWR_SCR_CWUF6); +} + +#if defined(PWR_CR3_EWUP5) +/** + * @brief Clear Wake-up Flag 5 + * @rmtoll SCR CWUF5 LL_PWR_ClearFlag_WU5 + * @retval None + */ +__STATIC_INLINE void LL_PWR_ClearFlag_WU5(void) +{ + WRITE_REG(PWR->SCR, PWR_SCR_CWUF5); +} +#endif /* PWR_CR3_EWUP5 */ + +/** + * @brief Clear Wake-up Flag 4 + * @rmtoll SCR CWUF4 LL_PWR_ClearFlag_WU4 + * @retval None + */ +__STATIC_INLINE void LL_PWR_ClearFlag_WU4(void) +{ + WRITE_REG(PWR->SCR, PWR_SCR_CWUF4); +} + +#if defined(PWR_CR3_EWUP3) +/** + * @brief Clear Wake-up Flag 3 + * @rmtoll SCR CWUF3 LL_PWR_ClearFlag_WU3 + * @retval None + */ +__STATIC_INLINE void LL_PWR_ClearFlag_WU3(void) +{ + WRITE_REG(PWR->SCR, PWR_SCR_CWUF3); +} +#endif /* PWR_CR3_EWUP3 */ + +/** + * @brief Clear Wake-up Flag 2 + * @rmtoll SCR CWUF2 LL_PWR_ClearFlag_WU2 + * @retval None + */ +__STATIC_INLINE void LL_PWR_ClearFlag_WU2(void) +{ + WRITE_REG(PWR->SCR, PWR_SCR_CWUF2); +} + +/** + * @brief Clear Wake-up Flag 1 + * @rmtoll SCR CWUF1 LL_PWR_ClearFlag_WU1 + * @retval None + */ +__STATIC_INLINE void LL_PWR_ClearFlag_WU1(void) +{ + WRITE_REG(PWR->SCR, PWR_SCR_CWUF1); +} + +#if defined (PWR_PVM_SUPPORT) +/** + * @brief Indicate whether VDD voltage is below or above the selected PVD + * threshold + * @rmtoll SR2 PVDMO_USB LL_PWR_IsActiveFlag_PVMOUSB + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_PVMOUSB(void) +{ + return ((READ_BIT(PWR->SR2, PWR_SR2_PVMO_USB) == (PWR_SR2_PVMO_USB)) ? 1UL : 0UL); +} +#endif /* PWR_PVM_SUPPORT */ + +#if defined(PWR_SR2_PVDO) +/** + * @brief Indicate whether VDD voltage is below or above the selected PVD + * threshold + * @rmtoll SR2 PVDO LL_PWR_IsActiveFlag_PVDO + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_PVDO(void) +{ + return ((READ_BIT(PWR->SR2, PWR_SR2_PVDO) == (PWR_SR2_PVDO)) ? 1UL : 0UL); +} +#endif /* PWR_SR2_PVDO */ + +/** + * @brief Indicate whether the regulator is ready in the selected voltage + * range or if its output voltage is still changing to the required + * voltage level + * @note: Take care, return value "0" means the regulator is ready. + * Return value "1" means the output voltage range is still changing. + * @rmtoll SR2 VOSF LL_PWR_IsActiveFlag_VOS + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_VOS(void) +{ + return ((READ_BIT(PWR->SR2, PWR_SR2_VOSF) == (PWR_SR2_VOSF)) ? 1UL : 0UL); +} + +/** + * @brief Indicate whether the regulator is ready in main mode or is in + * low-power mode + * @note: Take care, return value "0" means regulator is ready in main mode + * Return value "1" means regulator is in low-power mode (LPR) + * @rmtoll SR2 REGLPF LL_PWR_IsActiveFlag_REGLPF + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_REGLPF(void) +{ + return ((READ_BIT(PWR->SR2, PWR_SR2_REGLPF) == (PWR_SR2_REGLPF)) ? 1UL : 0UL); +} + +/** + * @brief Indicate whether or not the low-power regulator is ready + * @rmtoll SR2 REGLPS LL_PWR_IsActiveFlag_REGLPS + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_REGLPS(void) +{ + return ((READ_BIT(PWR->SR2, PWR_SR2_REGLPS) == (PWR_SR2_REGLPS)) ? 1UL : 0UL); +} + +/** + * @brief Indicate whether or not the flash is ready to be accessed + * @rmtoll SR2 FLASH_RDY LL_PWR_IsActiveFlag_FLASH_RDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_FLASH_RDY(void) +{ + return ((READ_BIT(PWR->SR2, PWR_SR2_FLASH_RDY) == (PWR_SR2_FLASH_RDY)) ? 1UL : 0UL); +} + + +/** + * @} + */ + +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup PWR_LL_EF_Init De-initialization function + * @{ + */ +ErrorStatus LL_PWR_DeInit(void); +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* defined(PWR) */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32G0xx_LL_PWR_H */ diff --git a/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_ll_rcc.h b/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_ll_rcc.h new file mode 100644 index 0000000..8f1d92a --- /dev/null +++ b/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_ll_rcc.h @@ -0,0 +1,3973 @@ +/** + ****************************************************************************** + * @file stm32g0xx_ll_rcc.h + * @author MCD Application Team + * @brief Header file of RCC LL module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2018 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file in + * the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32G0xx_LL_RCC_H +#define STM32G0xx_LL_RCC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32g0xx.h" + +/** @addtogroup STM32G0xx_LL_Driver + * @{ + */ + +#if defined(RCC) + +/** @defgroup RCC_LL RCC + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/** @defgroup RCC_LL_Private_Variables RCC Private Variables + * @{ + */ + + +/** + * @} + */ + +/* Private constants ---------------------------------------------------------*/ +/* Private macros ------------------------------------------------------------*/ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup RCC_LL_Private_Macros RCC Private Macros + * @{ + */ +/** + * @} + */ +#endif /*USE_FULL_LL_DRIVER*/ + +/* Exported types ------------------------------------------------------------*/ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup RCC_LL_Exported_Types RCC Exported Types + * @{ + */ + +/** @defgroup LL_ES_CLOCK_FREQ Clocks Frequency Structure + * @{ + */ + +/** + * @brief RCC Clocks Frequency Structure + */ +typedef struct +{ + uint32_t SYSCLK_Frequency; /*!< SYSCLK clock frequency */ + uint32_t HCLK_Frequency; /*!< HCLK clock frequency */ + uint32_t PCLK1_Frequency; /*!< PCLK1 clock frequency */ +} LL_RCC_ClocksTypeDef; + +/** + * @} + */ + +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup RCC_LL_Exported_Constants RCC Exported Constants + * @{ + */ + +/** @defgroup RCC_LL_EC_OSC_VALUES Oscillator Values adaptation + * @brief Defines used to adapt values of different oscillators + * @note These values could be modified in the user environment according to + * HW set-up. + * @{ + */ +#if !defined (HSE_VALUE) +#define HSE_VALUE 8000000U /*!< Value of the HSE oscillator in Hz */ +#endif /* HSE_VALUE */ + +#if !defined (HSI_VALUE) +#define HSI_VALUE 16000000U /*!< Value of the HSI oscillator in Hz */ +#endif /* HSI_VALUE */ + +#if !defined (LSE_VALUE) +#define LSE_VALUE 32768U /*!< Value of the LSE oscillator in Hz */ +#endif /* LSE_VALUE */ + +#if !defined (LSI_VALUE) +#define LSI_VALUE 32000U /*!< Value of the LSI oscillator in Hz */ +#endif /* LSI_VALUE */ +#if !defined (EXTERNAL_CLOCK_VALUE) +#define EXTERNAL_CLOCK_VALUE 48000000U /*!< Value of the I2S_CKIN external oscillator in Hz */ +#endif /* EXTERNAL_CLOCK_VALUE */ + +#if defined(RCC_HSI48_SUPPORT) +#if !defined (HSI48_VALUE) +#define HSI48_VALUE 48000000U /*!< Value of the HSI48 oscillator in Hz */ +#endif /* HSI48_VALUE */ +#endif /* RCC_HSI48_SUPPORT */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_CLEAR_FLAG Clear Flags Defines + * @brief Flags defines which can be used with LL_RCC_WriteReg function + * @{ + */ +#define LL_RCC_CICR_LSIRDYC RCC_CICR_LSIRDYC /*!< LSI Ready Interrupt Clear */ +#define LL_RCC_CICR_LSERDYC RCC_CICR_LSERDYC /*!< LSE Ready Interrupt Clear */ +#define LL_RCC_CICR_HSIRDYC RCC_CICR_HSIRDYC /*!< HSI Ready Interrupt Clear */ +#define LL_RCC_CICR_HSERDYC RCC_CICR_HSERDYC /*!< HSE Ready Interrupt Clear */ +#define LL_RCC_CICR_PLLRDYC RCC_CICR_PLLRDYC /*!< PLL Ready Interrupt Clear */ +#define LL_RCC_CICR_LSECSSC RCC_CICR_LSECSSC /*!< LSE Clock Security System Interrupt Clear */ +#define LL_RCC_CICR_CSSC RCC_CICR_CSSC /*!< Clock Security System Interrupt Clear */ +#if defined(RCC_HSI48_SUPPORT) +#define LL_RCC_CICR_HSI48RDYC RCC_CICR_HSI48RDYC /*!< HSI48 Ready Interrupt Clear */ +#endif /* RCC_HSI48_SUPPORT */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_GET_FLAG Get Flags Defines + * @brief Flags defines which can be used with LL_RCC_ReadReg function + * @{ + */ +#define LL_RCC_CIFR_LSIRDYF RCC_CIFR_LSIRDYF /*!< LSI Ready Interrupt flag */ +#define LL_RCC_CIFR_LSERDYF RCC_CIFR_LSERDYF /*!< LSE Ready Interrupt flag */ +#define LL_RCC_CIFR_HSIRDYF RCC_CIFR_HSIRDYF /*!< HSI Ready Interrupt flag */ +#if defined(RCC_HSI48_SUPPORT) +#define LL_RCC_CIFR_HSI48RDYF RCC_CIFR_HSI48RDYF /*!< HSI48 Ready Interrupt flag */ +#endif /* RCC_HSI48_SUPPORT */ +#define LL_RCC_CIFR_HSERDYF RCC_CIFR_HSERDYF /*!< HSE Ready Interrupt flag */ +#define LL_RCC_CIFR_PLLRDYF RCC_CIFR_PLLRDYF /*!< PLL Ready Interrupt flag */ +#define LL_RCC_CIFR_LSECSSF RCC_CIFR_LSECSSF /*!< LSE Clock Security System Interrupt flag */ +#define LL_RCC_CIFR_CSSF RCC_CIFR_CSSF /*!< Clock Security System Interrupt flag */ +#define LL_RCC_CSR_LPWRRSTF RCC_CSR_LPWRRSTF /*!< Low-Power reset flag */ +#define LL_RCC_CSR_OBLRSTF RCC_CSR_OBLRSTF /*!< OBL reset flag */ +#define LL_RCC_CSR_PINRSTF RCC_CSR_PINRSTF /*!< PIN reset flag */ +#define LL_RCC_CSR_SFTRSTF RCC_CSR_SFTRSTF /*!< Software Reset flag */ +#define LL_RCC_CSR_IWDGRSTF RCC_CSR_IWDGRSTF /*!< Independent Watchdog reset flag */ +#define LL_RCC_CSR_WWDGRSTF RCC_CSR_WWDGRSTF /*!< Window watchdog reset flag */ +#define LL_RCC_CSR_PWRRSTF RCC_CSR_PWRRSTF /*!< BOR or POR/PDR reset flag */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_IT IT Defines + * @brief IT defines which can be used with LL_RCC_ReadReg and LL_RCC_WriteReg functions + * @{ + */ +#define LL_RCC_CIER_LSIRDYIE RCC_CIER_LSIRDYIE /*!< LSI Ready Interrupt Enable */ +#define LL_RCC_CIER_LSERDYIE RCC_CIER_LSERDYIE /*!< LSE Ready Interrupt Enable */ +#define LL_RCC_CIER_HSIRDYIE RCC_CIER_HSIRDYIE /*!< HSI Ready Interrupt Enable */ +#define LL_RCC_CIER_HSERDYIE RCC_CIER_HSERDYIE /*!< HSE Ready Interrupt Enable */ +#define LL_RCC_CIER_PLLRDYIE RCC_CIER_PLLRDYIE /*!< PLL Ready Interrupt Enable */ +#if defined(RCC_HSI48_SUPPORT) +#define LL_RCC_CIER_HSI48RDYIE RCC_CIER_HSI48RDYIE /*!< HSI48 Ready Interrupt Enable */ +#endif /* RCC_HSI48_SUPPORT */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_LSEDRIVE LSE oscillator drive capability + * @{ + */ +#define LL_RCC_LSEDRIVE_LOW 0x00000000U /*!< Xtal mode lower driving capability */ +#define LL_RCC_LSEDRIVE_MEDIUMLOW RCC_BDCR_LSEDRV_0 /*!< Xtal mode medium low driving capability */ +#define LL_RCC_LSEDRIVE_MEDIUMHIGH RCC_BDCR_LSEDRV_1 /*!< Xtal mode medium high driving capability */ +#define LL_RCC_LSEDRIVE_HIGH RCC_BDCR_LSEDRV /*!< Xtal mode higher driving capability */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_LSCO_CLKSOURCE LSCO Selection + * @{ + */ +#define LL_RCC_LSCO_CLKSOURCE_LSI 0x00000000U /*!< LSI selection for low speed clock */ +#define LL_RCC_LSCO_CLKSOURCE_LSE RCC_BDCR_LSCOSEL /*!< LSE selection for low speed clock */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_SYS_CLKSOURCE System clock switch + * @{ + */ +#define LL_RCC_SYS_CLKSOURCE_HSI 0x00000000U /*!< HSI selection as system clock */ +#define LL_RCC_SYS_CLKSOURCE_HSE RCC_CFGR_SW_0 /*!< HSE selection as system clock */ +#define LL_RCC_SYS_CLKSOURCE_PLL RCC_CFGR_SW_1 /*!< PLL selection as system clock */ +#define LL_RCC_SYS_CLKSOURCE_LSI (RCC_CFGR_SW_1 | RCC_CFGR_SW_0) /*!< LSI selection used as system clock */ +#define LL_RCC_SYS_CLKSOURCE_LSE RCC_CFGR_SW_2 /*!< LSE selection used as system clock */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_SYS_CLKSOURCE_STATUS System clock switch status + * @{ + */ +#define LL_RCC_SYS_CLKSOURCE_STATUS_HSI 0x00000000U /*!< HSI used as system clock */ +#define LL_RCC_SYS_CLKSOURCE_STATUS_HSE RCC_CFGR_SWS_0 /*!< HSE used as system clock */ +#define LL_RCC_SYS_CLKSOURCE_STATUS_PLL RCC_CFGR_SWS_1 /*!< PLL used as system clock */ +#define LL_RCC_SYS_CLKSOURCE_STATUS_LSI (RCC_CFGR_SWS_1 | RCC_CFGR_SWS_0) /*!< LSI used as system clock */ +#define LL_RCC_SYS_CLKSOURCE_STATUS_LSE RCC_CFGR_SWS_2 /*!< LSE used as system clock */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_SYSCLK_DIV AHB prescaler + * @{ + */ +#define LL_RCC_SYSCLK_DIV_1 0x00000000U /*!< SYSCLK not divided */ +#define LL_RCC_SYSCLK_DIV_2 RCC_CFGR_HPRE_3 /*!< SYSCLK divided by 2 */ +#define LL_RCC_SYSCLK_DIV_4 (RCC_CFGR_HPRE_3 | RCC_CFGR_HPRE_0) /*!< SYSCLK divided by 4 */ +#define LL_RCC_SYSCLK_DIV_8 (RCC_CFGR_HPRE_3 | RCC_CFGR_HPRE_1) /*!< SYSCLK divided by 8 */ +#define LL_RCC_SYSCLK_DIV_16 (RCC_CFGR_HPRE_3 | RCC_CFGR_HPRE_1 | RCC_CFGR_HPRE_0) /*!< SYSCLK divided by 16 */ +#define LL_RCC_SYSCLK_DIV_64 (RCC_CFGR_HPRE_3 | RCC_CFGR_HPRE_2) /*!< SYSCLK divided by 64 */ +#define LL_RCC_SYSCLK_DIV_128 (RCC_CFGR_HPRE_3 | RCC_CFGR_HPRE_2 | RCC_CFGR_HPRE_0) /*!< SYSCLK divided by 128 */ +#define LL_RCC_SYSCLK_DIV_256 (RCC_CFGR_HPRE_3 | RCC_CFGR_HPRE_2 | RCC_CFGR_HPRE_1) /*!< SYSCLK divided by 256 */ +#define LL_RCC_SYSCLK_DIV_512 (RCC_CFGR_HPRE_3 | RCC_CFGR_HPRE_2 | RCC_CFGR_HPRE_1 | RCC_CFGR_HPRE_0) /*!< SYSCLK divided by 512 */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_APB1_DIV APB low-speed prescaler (APB1) + * @{ + */ +#define LL_RCC_APB1_DIV_1 0x00000000U /*!< HCLK not divided */ +#define LL_RCC_APB1_DIV_2 RCC_CFGR_PPRE_2 /*!< HCLK divided by 2 */ +#define LL_RCC_APB1_DIV_4 (RCC_CFGR_PPRE_2 | RCC_CFGR_PPRE_0) /*!< HCLK divided by 4 */ +#define LL_RCC_APB1_DIV_8 (RCC_CFGR_PPRE_2 | RCC_CFGR_PPRE_1) /*!< HCLK divided by 8 */ +#define LL_RCC_APB1_DIV_16 (RCC_CFGR_PPRE_2 | RCC_CFGR_PPRE_1 | RCC_CFGR_PPRE_0) /*!< HCLK divided by 16 */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_HSI_DIV HSI division factor + * @{ + */ +#define LL_RCC_HSI_DIV_1 0x00000000U /*!< HSI not divided */ +#define LL_RCC_HSI_DIV_2 RCC_CR_HSIDIV_0 /*!< HSI divided by 2 */ +#define LL_RCC_HSI_DIV_4 RCC_CR_HSIDIV_1 /*!< HSI divided by 4 */ +#define LL_RCC_HSI_DIV_8 (RCC_CR_HSIDIV_1 | RCC_CR_HSIDIV_0) /*!< HSI divided by 8 */ +#define LL_RCC_HSI_DIV_16 RCC_CR_HSIDIV_2 /*!< HSI divided by 16 */ +#define LL_RCC_HSI_DIV_32 (RCC_CR_HSIDIV_2 | RCC_CR_HSIDIV_0) /*!< HSI divided by 32 */ +#define LL_RCC_HSI_DIV_64 (RCC_CR_HSIDIV_2 | RCC_CR_HSIDIV_1) /*!< HSI divided by 64 */ +#define LL_RCC_HSI_DIV_128 RCC_CR_HSIDIV /*!< HSI divided by 128 */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_MCO1SOURCE MCO1 SOURCE selection + * @{ + */ +#define LL_RCC_MCO1SOURCE_NOCLOCK 0x00000000U /*!< MCO output disabled, no clock on MCO */ +#define LL_RCC_MCO1SOURCE_SYSCLK RCC_CFGR_MCOSEL_0 /*!< SYSCLK selection as MCO1 source */ +#if defined(RCC_HSI48_SUPPORT) +#define LL_RCC_MCO1SOURCE_HSI48 RCC_CFGR_MCOSEL_1 /*!< HSI48 selection as MCO1 source */ +#endif /* RCC_HSI48_SUPPORT */ +#define LL_RCC_MCO1SOURCE_HSI (RCC_CFGR_MCOSEL_0| RCC_CFGR_MCOSEL_1) /*!< HSI16 selection as MCO1 source */ +#define LL_RCC_MCO1SOURCE_HSE RCC_CFGR_MCOSEL_2 /*!< HSE selection as MCO1 source */ +#define LL_RCC_MCO1SOURCE_PLLCLK (RCC_CFGR_MCOSEL_0|RCC_CFGR_MCOSEL_2) /*!< Main PLL selection as MCO1 source */ +#define LL_RCC_MCO1SOURCE_LSI (RCC_CFGR_MCOSEL_1|RCC_CFGR_MCOSEL_2) /*!< LSI selection as MCO1 source */ +#define LL_RCC_MCO1SOURCE_LSE (RCC_CFGR_MCOSEL_0|RCC_CFGR_MCOSEL_1|RCC_CFGR_MCOSEL_2) /*!< LSE selection as MCO1 source */ +#if defined(RCC_CFGR_MCOSEL_3) +#define LL_RCC_MCO1SOURCE_PLLPCLK RCC_CFGR_MCOSEL_3 /*!< PLLPCLK selection as MCO1 source */ +#define LL_RCC_MCO1SOURCE_PLLQCLK (RCC_CFGR_MCOSEL_3|RCC_CFGR_MCOSEL_0) /*!< PLLQCLK selection as MCO1 source */ +#define LL_RCC_MCO1SOURCE_RTCCLK (RCC_CFGR_MCOSEL_3|RCC_CFGR_MCOSEL_1) /*!< RTCCLK selection as MCO1 source */ +#define LL_RCC_MCO1SOURCE_RTC_WKUP (RCC_CFGR_MCOSEL_3|RCC_CFGR_MCOSEL_1|RCC_CFGR_MCOSEL_0) /*!< RTC_Wakeup selection as MCO1 source */ +#endif /* RCC_CFGR_MCOSEL_3 */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_MCO1_DIV MCO1 prescaler + * @{ + */ +#define LL_RCC_MCO1_DIV_1 0x00000000U /*!< MCO1 not divided */ +#define LL_RCC_MCO1_DIV_2 RCC_CFGR_MCOPRE_0 /*!< MCO1 divided by 2 */ +#define LL_RCC_MCO1_DIV_4 RCC_CFGR_MCOPRE_1 /*!< MCO1 divided by 4 */ +#define LL_RCC_MCO1_DIV_8 (RCC_CFGR_MCOPRE_1 | RCC_CFGR_MCOPRE_0) /*!< MCO1 divided by 8 */ +#define LL_RCC_MCO1_DIV_16 RCC_CFGR_MCOPRE_2 /*!< MCO1 divided by 16 */ +#define LL_RCC_MCO1_DIV_32 (RCC_CFGR_MCOPRE_2 | RCC_CFGR_MCOPRE_0) /*!< MCO1 divided by 32 */ +#define LL_RCC_MCO1_DIV_64 (RCC_CFGR_MCOPRE_2 | RCC_CFGR_MCOPRE_1) /*!< MCO1 divided by 64 */ +#define LL_RCC_MCO1_DIV_128 (RCC_CFGR_MCOPRE_2 | RCC_CFGR_MCOPRE_1 | RCC_CFGR_MCOPRE_0) /*!< MCO1 divided by 128 */ +#if defined(RCC_CFGR_MCOPRE_3) +#define LL_RCC_MCO1_DIV_256 RCC_CFGR_MCOPRE_3 /*!< MCO divided by 256 */ +#define LL_RCC_MCO1_DIV_512 (RCC_CFGR_MCOPRE_3 | RCC_CFGR_MCOPRE_0) /*!< MCO divided by 512 */ +#define LL_RCC_MCO1_DIV_1024 (RCC_CFGR_MCOPRE_3 | RCC_CFGR_MCOPRE_1) /*!< MCO divided by 1024 */ +#endif /* RCC_CFGR_MCOPRE_3 */ +/** + * @} + */ + +#if defined(RCC_MCO2_SUPPORT) +/** @defgroup RCC_LL_EC_MCO2SOURCE MCO2 SOURCE selection + * @{ + */ +#define LL_RCC_MCO2SOURCE_NOCLOCK 0x00000000U /*!< MCO output disabled, no clock on MCO */ +#define LL_RCC_MCO2SOURCE_SYSCLK RCC_CFGR_MCO2SEL_0 /*!< SYSCLK selection as MCO2 source */ +#if defined(RCC_HSI48_SUPPORT) +#define LL_RCC_MCO2SOURCE_HSI48 RCC_CFGR_MCO2SEL_1 /*!< HSI48 selection as MCO2 source */ +#endif /* RCC_HSI48_SUPPORT */ +#define LL_RCC_MCO2SOURCE_HSI (RCC_CFGR_MCO2SEL_1 | RCC_CFGR_MCO2SEL_0) /*!< HSI16 selection as MCO2 source */ +#define LL_RCC_MCO2SOURCE_HSE RCC_CFGR_MCO2SEL_2 /*!< HSE selection as MCO2 source */ +#define LL_RCC_MCO2SOURCE_PLLCLK (RCC_CFGR_MCO2SEL_2 | RCC_CFGR_MCO2SEL_0) /*!< Main PLL "R" clock selection as MCO2 source */ +#define LL_RCC_MCO2SOURCE_LSI (RCC_CFGR_MCO2SEL_2 | RCC_CFGR_MCO2SEL_1) /*!< LSI selection as MCO2 source */ +#define LL_RCC_MCO2SOURCE_LSE (RCC_CFGR_MCO2SEL_2 | RCC_CFGR_MCO2SEL_1 | RCC_CFGR_MCO2SEL_0) /*!< LSE selection as MCO2 source */ +#define LL_RCC_MCO2SOURCE_PLLPCLK RCC_CFGR_MCO2SEL_3 /*!< PLL "P" clock selection as MCO2 source */ +#define LL_RCC_MCO2SOURCE_PLLQCLK (RCC_CFGR_MCO2SEL_3 | RCC_CFGR_MCO2SEL_0) /*!< PLL "Q" clock selection as MCO2 source */ +#define LL_RCC_MCO2SOURCE_RTCCLK (RCC_CFGR_MCO2SEL_3 | RCC_CFGR_MCO2SEL_1) /*!< RTC Clock selection as MCO2 source */ +#define LL_RCC_MCO2SOURCE_RTC_WKUP (RCC_CFGR_MCO2SEL_3 | RCC_CFGR_MCO2SEL_1 | RCC_CFGR_MCO2SEL_0) /*!< RTC Wakeup timer selection as MCO2 source */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_MCO2_DIV MCO2 prescaler + * @{ + */ +#define LL_RCC_MCO2_DIV_1 0x00000000U /*!< MCO2 not divided */ +#define LL_RCC_MCO2_DIV_2 RCC_CFGR_MCO2PRE_0 /*!< MCO2 divided by 2 */ +#define LL_RCC_MCO2_DIV_4 RCC_CFGR_MCO2PRE_1 /*!< MCO2 divided by 4 */ +#define LL_RCC_MCO2_DIV_8 (RCC_CFGR_MCO2PRE_1 | RCC_CFGR_MCO2PRE_0) /*!< MCO2 divided by 8 */ +#define LL_RCC_MCO2_DIV_16 RCC_CFGR_MCO2PRE_2 /*!< MCO2 divided by 16 */ +#define LL_RCC_MCO2_DIV_32 (RCC_CFGR_MCO2PRE_2 | RCC_CFGR_MCO2PRE_0) /*!< MCO2 divided by 32 */ +#define LL_RCC_MCO2_DIV_64 (RCC_CFGR_MCO2PRE_2 | RCC_CFGR_MCO2PRE_1) /*!< MCO2 divided by 64 */ +#define LL_RCC_MCO2_DIV_128 (RCC_CFGR_MCO2PRE_2 | RCC_CFGR_MCO2PRE_1 | RCC_CFGR_MCO2PRE_0) /*!< MCO2 divided by 128 */ +#define LL_RCC_MCO2_DIV_256 RCC_CFGR_MCO2PRE_3 /*!< MCO2 divided by 256 */ +#define LL_RCC_MCO2_DIV_512 (RCC_CFGR_MCO2PRE_3 | RCC_CFGR_MCO2PRE_0) /*!< MCO2 divided by 512 */ +#define LL_RCC_MCO2_DIV_1024 (RCC_CFGR_MCO2PRE_3 | RCC_CFGR_MCO2PRE_1) /*!< MCO2 divided by 1024 */ +/** + * @} + */ +#endif /* RCC_MCO2_SUPPORT */ + +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup RCC_LL_EC_PERIPH_FREQUENCY Peripheral clock frequency + * @{ + */ +#define LL_RCC_PERIPH_FREQUENCY_NO 0x00000000U /*!< No clock enabled for the peripheral */ +#define LL_RCC_PERIPH_FREQUENCY_NA 0xFFFFFFFFU /*!< Frequency cannot be provided as external clock */ +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/** @defgroup RCC_LL_EC_USARTx_CLKSOURCE Peripheral USART clock source selection + * @{ + */ +#define LL_RCC_USART1_CLKSOURCE_PCLK1 ((RCC_CCIPR_USART1SEL << 16U) | 0x00000000U) /*!< PCLK1 clock used as USART1 clock source */ +#define LL_RCC_USART1_CLKSOURCE_SYSCLK ((RCC_CCIPR_USART1SEL << 16U) | RCC_CCIPR_USART1SEL_0) /*!< SYSCLK clock used as USART1 clock source */ +#define LL_RCC_USART1_CLKSOURCE_HSI ((RCC_CCIPR_USART1SEL << 16U) | RCC_CCIPR_USART1SEL_1) /*!< HSI clock used as USART1 clock source */ +#define LL_RCC_USART1_CLKSOURCE_LSE ((RCC_CCIPR_USART1SEL << 16U) | RCC_CCIPR_USART1SEL) /*!< LSE clock used as USART1 clock source */ +#define LL_RCC_USART2_CLKSOURCE_PCLK1 ((RCC_CCIPR_USART2SEL << 16U) | 0x00000000U) /*!< PCLK1 clock used as USART2 clock source */ +#define LL_RCC_USART2_CLKSOURCE_SYSCLK ((RCC_CCIPR_USART2SEL << 16U) | RCC_CCIPR_USART2SEL_0) /*!< SYSCLK clock used as USART2 clock source */ +#define LL_RCC_USART2_CLKSOURCE_HSI ((RCC_CCIPR_USART2SEL << 16U) | RCC_CCIPR_USART2SEL_1) /*!< HSI clock used as USART2 clock source */ +#define LL_RCC_USART2_CLKSOURCE_LSE ((RCC_CCIPR_USART2SEL << 16U) | RCC_CCIPR_USART2SEL) /*!< LSE clock used as USART2 clock source */ +#if defined(RCC_CCIPR_USART3SEL) +#define LL_RCC_USART3_CLKSOURCE_PCLK1 ((RCC_CCIPR_USART3SEL << 16U) | 0x00000000U) /*!< PCLK1 clock used as USART3 clock source */ +#define LL_RCC_USART3_CLKSOURCE_SYSCLK ((RCC_CCIPR_USART3SEL << 16U) | RCC_CCIPR_USART3SEL_0) /*!< SYSCLK clock used as USART3 clock source */ +#define LL_RCC_USART3_CLKSOURCE_HSI ((RCC_CCIPR_USART3SEL << 16U) | RCC_CCIPR_USART3SEL_1) /*!< HSI clock used as USART3 clock source */ +#define LL_RCC_USART3_CLKSOURCE_LSE ((RCC_CCIPR_USART3SEL << 16U) | RCC_CCIPR_USART3SEL) /*!< LSE clock used as USART3 clock source */ +#endif /* RCC_CCIPR_USART3SEL */ +/** + * @} + */ + +#if defined(LPUART1) || defined(LPUART2) +/** @defgroup RCC_LL_EC_LPUARTx_CLKSOURCE Peripheral LPUART clock source selection + * @{ + */ +#if defined(LPUART2) +#define LL_RCC_LPUART2_CLKSOURCE_PCLK1 ((RCC_CCIPR_LPUART2SEL << 16U) | 0x00000000U) /*!< PCLK1 clock used as LPUART2 clock source */ +#define LL_RCC_LPUART2_CLKSOURCE_SYSCLK ((RCC_CCIPR_LPUART2SEL << 16U) | RCC_CCIPR_LPUART2SEL_0) /*!< SYSCLK clock used as LPUART2 clock source */ +#define LL_RCC_LPUART2_CLKSOURCE_HSI ((RCC_CCIPR_LPUART2SEL << 16U) | RCC_CCIPR_LPUART2SEL_1) /*!< HSI clock used as LPUART2 clock source */ +#define LL_RCC_LPUART2_CLKSOURCE_LSE ((RCC_CCIPR_LPUART2SEL << 16U) | RCC_CCIPR_LPUART2SEL) /*!< LSE clock used as LPUART2 clock source */ +#endif /* LPUART2 */ +#define LL_RCC_LPUART1_CLKSOURCE_PCLK1 ((RCC_CCIPR_LPUART1SEL << 16U) | 0x00000000U) /*!< PCLK1 clock used as LPUART1 clock source */ +#define LL_RCC_LPUART1_CLKSOURCE_SYSCLK ((RCC_CCIPR_LPUART1SEL << 16U) | RCC_CCIPR_LPUART1SEL_0) /*!< SYSCLK clock used as LPUART1 clock source */ +#define LL_RCC_LPUART1_CLKSOURCE_HSI ((RCC_CCIPR_LPUART1SEL << 16U) | RCC_CCIPR_LPUART1SEL_1) /*!< HSI clock used as LPUART1 clock source */ +#define LL_RCC_LPUART1_CLKSOURCE_LSE ((RCC_CCIPR_LPUART1SEL << 16U) | RCC_CCIPR_LPUART1SEL) /*!< LSE clock used as LPUART1 clock source */ +/** + * @} + */ +#endif /* LPUART1 || LPUART2 */ + +/** @defgroup RCC_LL_EC_I2Cx_CLKSOURCE Peripheral I2C clock source selection + * @{ + */ +#define LL_RCC_I2C1_CLKSOURCE_PCLK1 ((RCC_CCIPR_I2C1SEL << 16U) | 0x00000000U) /*!< PCLK1 clock used as I2C1 clock source */ +#define LL_RCC_I2C1_CLKSOURCE_SYSCLK ((RCC_CCIPR_I2C1SEL << 16U) | RCC_CCIPR_I2C1SEL_0) /*!< SYSCLK clock used as I2C1 clock source */ +#define LL_RCC_I2C1_CLKSOURCE_HSI ((RCC_CCIPR_I2C1SEL << 16U) | RCC_CCIPR_I2C1SEL_1) /*!< HSI clock used as I2C1 clock source */ +#if defined(RCC_CCIPR_I2C2SEL) +#define LL_RCC_I2C2_CLKSOURCE_PCLK1 ((RCC_CCIPR_I2C2SEL << 16U) | 0x00000000U) /*!< PCLK1 clock used as I2C2 clock source */ +#define LL_RCC_I2C2_CLKSOURCE_SYSCLK ((RCC_CCIPR_I2C2SEL << 16U) | RCC_CCIPR_I2C2SEL_0) /*!< SYSCLK clock used as I2C2 clock source */ +#define LL_RCC_I2C2_CLKSOURCE_HSI ((RCC_CCIPR_I2C2SEL << 16U) | RCC_CCIPR_I2C2SEL_1) /*!< HSI clock used as I2C2 clock source */ +#endif /* RCC_CCIPR_I2C2SEL */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_I2Sx_CLKSOURCE Peripheral I2S clock source selection + * @{ + */ +#if defined(STM32G0C1xx) || defined(STM32G0B1xx) || defined(STM32G0B0xx) +#define LL_RCC_I2S1_CLKSOURCE_SYSCLK ((RCC_CCIPR2_I2S1SEL << 16U) | 0x00000000U) /*!< SYSCLK clock used as I2S1 clock source */ +#define LL_RCC_I2S1_CLKSOURCE_PLL ((RCC_CCIPR2_I2S1SEL << 16U) | RCC_CCIPR2_I2S1SEL_0) /*!< PLL clock used as I2S1 clock source */ +#define LL_RCC_I2S1_CLKSOURCE_HSI ((RCC_CCIPR2_I2S1SEL << 16U) | RCC_CCIPR2_I2S1SEL_1) /*!< HSI clock used as I2S1 clock source */ +#define LL_RCC_I2S1_CLKSOURCE_PIN ((RCC_CCIPR2_I2S1SEL << 16U) | RCC_CCIPR2_I2S1SEL) /*!< External clock used as I2S1 clock source */ +#define LL_RCC_I2S2_CLKSOURCE_SYSCLK ((RCC_CCIPR2_I2S2SEL << 16U) | 0x00000000U) /*!< SYSCLK clock used as I2S2 clock source */ +#define LL_RCC_I2S2_CLKSOURCE_PLL ((RCC_CCIPR2_I2S2SEL << 16U) | RCC_CCIPR2_I2S2SEL_0) /*!< PLL clock used as I2S2 clock source */ +#define LL_RCC_I2S2_CLKSOURCE_HSI ((RCC_CCIPR2_I2S2SEL << 16U) | RCC_CCIPR2_I2S2SEL_1) /*!< HSI clock used as I2S2 clock source */ +#define LL_RCC_I2S2_CLKSOURCE_PIN ((RCC_CCIPR2_I2S2SEL << 16U) | RCC_CCIPR2_I2S2SEL) /*!< External clock used as I2S2 clock source */ +#else +#define LL_RCC_I2S1_CLKSOURCE_SYSCLK 0x00000000U /*!< SYSCLK clock used as I2S1 clock source */ +#define LL_RCC_I2S1_CLKSOURCE_PLL RCC_CCIPR_I2S1SEL_0 /*!< PLL clock used as I2S1 clock source */ +#define LL_RCC_I2S1_CLKSOURCE_HSI RCC_CCIPR_I2S1SEL_1 /*!< HSI clock used as I2S1 clock source */ +#define LL_RCC_I2S1_CLKSOURCE_PIN RCC_CCIPR_I2S1SEL /*!< External clock used as I2S1 clock source */ +#endif /* STM32G0C1xx || STM32G0B1xx || STM32G0B0xx */ + +/** + * @} + */ + +#if defined(RCC_CCIPR_TIM1SEL) +/** @defgroup RCC_LL_EC_TIMx_CLKSOURCE Peripheral TIM clock source selection + * @{ + */ +#define LL_RCC_TIM1_CLKSOURCE_PCLK1 (RCC_CCIPR_TIM1SEL | (0x00000000U >> 16U)) /*!< PCLK1 clock used as TIM1 clock source */ +#define LL_RCC_TIM1_CLKSOURCE_PLL (RCC_CCIPR_TIM1SEL | (RCC_CCIPR_TIM1SEL >> 16U)) /*!< PLL used as TIM1 clock source */ +/** + * @} + */ +#endif /* RCC_CCIPR_TIM1SEL */ + +#if defined(RCC_CCIPR_TIM15SEL) +/** @addtogroup RCC_LL_EC_TIMx_CLKSOURCE + * @{ + */ +#define LL_RCC_TIM15_CLKSOURCE_PCLK1 (RCC_CCIPR_TIM15SEL | (0x00000000U >> 16U)) /*!< PCLK1 clock used as TIM15 clock source */ +#define LL_RCC_TIM15_CLKSOURCE_PLL (RCC_CCIPR_TIM15SEL | (RCC_CCIPR_TIM15SEL >> 16U)) /*!< PLL used as TIM15 clock source */ +/** + * @} + */ +#endif /* RCC_CCIPR_TIM15SEL */ + +#if defined(LPTIM1) && defined(LPTIM2) +/** @defgroup RCC_LL_EC_LPTIMx_CLKSOURCE Peripheral LPTIM clock source selection + * @{ + */ +#define LL_RCC_LPTIM1_CLKSOURCE_PCLK1 (RCC_CCIPR_LPTIM1SEL | (0x00000000U >> 16U)) /*!< PCLK1 selected as LPTIM1 clock */ +#define LL_RCC_LPTIM1_CLKSOURCE_LSI (RCC_CCIPR_LPTIM1SEL | (RCC_CCIPR_LPTIM1SEL_0 >> 16U)) /*!< LSI selected as LPTIM1 clock */ +#define LL_RCC_LPTIM1_CLKSOURCE_HSI (RCC_CCIPR_LPTIM1SEL | (RCC_CCIPR_LPTIM1SEL_1 >> 16U)) /*!< HSI selected as LPTIM1 clock */ +#define LL_RCC_LPTIM1_CLKSOURCE_LSE (RCC_CCIPR_LPTIM1SEL | (RCC_CCIPR_LPTIM1SEL >> 16U)) /*!< LSE selected as LPTIM1 clock */ +#define LL_RCC_LPTIM2_CLKSOURCE_PCLK1 (RCC_CCIPR_LPTIM2SEL | (0x00000000U >> 16U)) /*!< PCLK1 selected as LPTIM2 clock */ +#define LL_RCC_LPTIM2_CLKSOURCE_LSI (RCC_CCIPR_LPTIM2SEL | (RCC_CCIPR_LPTIM2SEL_0 >> 16U)) /*!< LSI selected as LPTIM2 clock */ +#define LL_RCC_LPTIM2_CLKSOURCE_HSI (RCC_CCIPR_LPTIM2SEL | (RCC_CCIPR_LPTIM2SEL_1 >> 16U)) /*!< HSI selected as LPTIM2 clock */ +#define LL_RCC_LPTIM2_CLKSOURCE_LSE (RCC_CCIPR_LPTIM2SEL | (RCC_CCIPR_LPTIM2SEL >> 16U)) /*!< LSE selected as LPTIM2 clock */ +/** + * @} + */ +#endif /* LPTIM1 && LPTIM2*/ + +#if defined(CEC) +/** @defgroup RCC_LL_EC_CEC_CLKSOURCE_HSI Peripheral CEC clock source selection + * @{ + */ +#define LL_RCC_CEC_CLKSOURCE_HSI_DIV488 0x00000000U /*!< HSI oscillator clock divided by 488 used as CEC clock */ +#define LL_RCC_CEC_CLKSOURCE_LSE RCC_CCIPR_CECSEL /*!< LSE oscillator clock used as CEC clock */ + +/** + * @} + */ +#endif /* CEC */ + +#if defined(FDCAN1) || defined(FDCAN2) +/** @defgroup RCC_LL_EC_FDCAN_CLKSOURCE_HSI Peripheral FDCAN clock source selection + * @{ + */ +#define LL_RCC_FDCAN_CLKSOURCE_PCLK1 0x00000000U /*!< PCLK1 oscillator clock used as FDCAN clock */ +#define LL_RCC_FDCAN_CLKSOURCE_PLL RCC_CCIPR2_FDCANSEL_0 /*!< PLL "Q" oscillator clock used as FDCAN clock */ +#define LL_RCC_FDCAN_CLKSOURCE_HSE RCC_CCIPR2_FDCANSEL_1 /*!< HSE oscillator clock used as FDCAN clock */ + +/** + * @} + */ +#endif /* FDCAN1 || FDCAN2 */ + +#if defined(RNG) +/** @defgroup RCC_LL_EC_RNG_CLKSOURCE Peripheral RNG clock source selection + * @{ + */ +#define LL_RCC_RNG_CLKSOURCE_NONE 0x00000000U /*!< No clock used as RNG clock */ +#define LL_RCC_RNG_CLKSOURCE_HSI_DIV8 RCC_CCIPR_RNGSEL_0 /*!< HSI oscillator clock divided by 8 used as RNG clock, available on cut2.0 */ +#define LL_RCC_RNG_CLKSOURCE_SYSCLK RCC_CCIPR_RNGSEL_1 /*!< SYSCLK divided by 1 used as RNG clock */ +#define LL_RCC_RNG_CLKSOURCE_PLL RCC_CCIPR_RNGSEL /*!< PLL used as RNG clock */ +/** + * @} + */ +#endif /* RNG */ + +#if defined(RNG) +/** @defgroup RCC_LL_EC_RNG_CLK_DIV Peripheral RNG clock division factor + * @{ + */ +#define LL_RCC_RNG_CLK_DIV1 0x00000000U /*!< RNG clock not divided */ +#define LL_RCC_RNG_CLK_DIV2 RCC_CCIPR_RNGDIV_0 /*!< RNG clock divided by 2 */ +#define LL_RCC_RNG_CLK_DIV4 RCC_CCIPR_RNGDIV_1 /*!< RNG clock divided by 4 */ +#define LL_RCC_RNG_CLK_DIV8 RCC_CCIPR_RNGDIV /*!< RNG clock divided by 8 */ +/** + * @} + */ +#endif /* RNG */ + +#if defined(STM32G0C1xx) || defined(STM32G0B1xx) || defined(STM32G0B0xx) +/** @defgroup RCC_LL_EC_USB_CLKSOURCE Peripheral USB clock source selection + * @{ + */ +#if defined(RCC_HSI48_SUPPORT) +#define LL_RCC_USB_CLKSOURCE_HSI48 0x00000000U /*!< HSI48 clock used as USB clock source */ +#endif /* RCC_HSI48_SUPPORT */ +#define LL_RCC_USB_CLKSOURCE_HSE RCC_CCIPR2_USBSEL_0 /*!< PLL clock used as USB clock source */ +#define LL_RCC_USB_CLKSOURCE_PLL RCC_CCIPR2_USBSEL_1 /*!< PLL clock used as USB clock source */ +/** + * @} + */ +#endif /* STM32G0C1xx || STM32G0B1xx || STM32G0B0xx */ + +/** @defgroup RCC_LL_EC_ADC_CLKSOURCE Peripheral ADC clock source selection + * @{ + */ +#define LL_RCC_ADC_CLKSOURCE_SYSCLK 0x00000000U /*!< SYSCLK used as ADC clock */ +#define LL_RCC_ADC_CLKSOURCE_PLL RCC_CCIPR_ADCSEL_0 /*!< PLL used as ADC clock */ +#define LL_RCC_ADC_CLKSOURCE_HSI RCC_CCIPR_ADCSEL_1 /*!< HSI used as ADC clock */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_USARTx Peripheral USARTx get clock source + * @{ + */ +#define LL_RCC_USART1_CLKSOURCE RCC_CCIPR_USART1SEL /*!< USART1 Clock source selection */ +#define LL_RCC_USART2_CLKSOURCE RCC_CCIPR_USART2SEL /*!< USART2 Clock source selection */ +#if defined(RCC_CCIPR_USART3SEL) +#define LL_RCC_USART3_CLKSOURCE RCC_CCIPR_USART3SEL /*!< USART3 Clock source selection */ +#endif /* RCC_CCIPR_USART3SEL */ +/** + * @} + */ + +#if defined(LPUART1) +/** @defgroup RCC_LL_EC_LPUART1 Peripheral LPUART get clock source + * @{ + */ +#define LL_RCC_LPUART1_CLKSOURCE RCC_CCIPR_LPUART1SEL /*!< LPUART1 Clock source selection */ +#if defined(LPUART2) +#define LL_RCC_LPUART2_CLKSOURCE RCC_CCIPR_LPUART2SEL /*!< LPUART2 Clock source selection */ +#endif /* LPUART2 */ +/** + * @} + */ +#endif /* LPUART1 */ + +/** @defgroup RCC_LL_EC_I2C1 Peripheral I2C get clock source + * @{ + */ +#define LL_RCC_I2C1_CLKSOURCE RCC_CCIPR_I2C1SEL /*!< I2C1 Clock source selection */ +#if defined(RCC_CCIPR_I2C2SEL) +#define LL_RCC_I2C2_CLKSOURCE RCC_CCIPR_I2C2SEL /*!< I2C2 Clock source selection */ +#endif /* RCC_CCIPR_I2C2SEL */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_I2S1 Peripheral I2S get clock source + * @{ + */ +#if defined(STM32G0C1xx) || defined(STM32G0B1xx) || defined(STM32G0B0xx) +#define LL_RCC_I2S1_CLKSOURCE RCC_CCIPR2_I2S1SEL /*!< I2S1 Clock source selection */ +#define LL_RCC_I2S2_CLKSOURCE RCC_CCIPR2_I2S2SEL /*!< I2S2 Clock source selection */ +#else +#define LL_RCC_I2S1_CLKSOURCE RCC_CCIPR_I2S1SEL /*!< I2S1 Clock source selection */ +#endif /* STM32G0C1xx || STM32G0B1xx || STM32G0B0xx */ +/** + * @} + */ + +#if defined(RCC_CCIPR_TIM1SEL) +/** @defgroup RCC_LL_EC_TIMx Peripheral TIMx get clock source + * @{ + */ +#define LL_RCC_TIM1_CLKSOURCE RCC_CCIPR_TIM1SEL /*!< TIM1 Clock source selection */ +#if defined(RCC_CCIPR_TIM15SEL) +#define LL_RCC_TIM15_CLKSOURCE RCC_CCIPR_TIM15SEL /*!< TIM15 Clock source selection */ +#endif /* RCC_CCIPR_TIM15SEL */ +/** + * @} + */ +#endif /* RCC_CCIPR_TIM1SEL */ + +#if defined(LPTIM1) && defined(LPTIM2) +/** @defgroup RCC_LL_EC_LPTIM1 Peripheral LPTIM get clock source + * @{ + */ +#define LL_RCC_LPTIM1_CLKSOURCE RCC_CCIPR_LPTIM1SEL /*!< LPTIM2 Clock source selection */ +#define LL_RCC_LPTIM2_CLKSOURCE RCC_CCIPR_LPTIM2SEL /*!< LPTIM2 Clock source selection */ +/** + * @} + */ +#endif /* LPTIM1 && LPTIM2 */ + +#if defined(CEC) +/** @defgroup RCC_LL_EC_CEC Peripheral CEC get clock source + * @{ + */ +#define LL_RCC_CEC_CLKSOURCE RCC_CCIPR_CECSEL /*!< CEC Clock source selection */ +/** + * @} + */ +#endif /* CEC */ + +#if defined(FDCAN1) || defined(FDCAN2) +/** @defgroup RCC_LL_EC_FDCAN Peripheral FDCAN get clock source + * @{ + */ +#define LL_RCC_FDCAN_CLKSOURCE RCC_CCIPR2_FDCANSEL /*!< FDCAN Clock source selection */ +/** + * @} + */ +#endif /* FDCAN1 */ + +#if defined(STM32G0C1xx) || defined(STM32G0B1xx) || defined(STM32G0B0xx) +/** @defgroup RCC_LL_EC_USB Peripheral USB get clock source + * @{ + */ +#define LL_RCC_USB_CLKSOURCE RCC_CCIPR2_USBSEL /*!< USB Clock source selection */ +/** + * @} + */ +#endif /* STM32G0C1xx || STM32G0B1xx || STM32G0B0xx */ + +#if defined(RNG) +/** @defgroup RCC_LL_EC_RNG Peripheral RNG get clock source + * @{ + */ +#define LL_RCC_RNG_CLKSOURCE RCC_CCIPR_RNGSEL /*!< RNG Clock source selection */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_RNG_DIV Peripheral RNG get clock division factor + * @{ + */ +#define LL_RCC_RNG_CLKDIV RCC_CCIPR_RNGDIV /*!< RNG Clock division factor */ +/** + * @} + */ +#endif /* RNG */ + +/** @defgroup RCC_LL_EC_ADC Peripheral ADC get clock source + * @{ + */ +#define LL_RCC_ADC_CLKSOURCE RCC_CCIPR_ADCSEL /*!< ADC Clock source selection */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_RTC_CLKSOURCE RTC clock source selection + * @{ + */ +#define LL_RCC_RTC_CLKSOURCE_NONE 0x00000000U /*!< No clock used as RTC clock */ +#define LL_RCC_RTC_CLKSOURCE_LSE RCC_BDCR_RTCSEL_0 /*!< LSE oscillator clock used as RTC clock */ +#define LL_RCC_RTC_CLKSOURCE_LSI RCC_BDCR_RTCSEL_1 /*!< LSI oscillator clock used as RTC clock */ +#define LL_RCC_RTC_CLKSOURCE_HSE_DIV32 RCC_BDCR_RTCSEL /*!< HSE oscillator clock divided by 32 used as RTC clock */ +/** + * @} + */ + + +/** @defgroup RCC_LL_EC_PLLSOURCE PLL entry clock source + * @{ + */ +#define LL_RCC_PLLSOURCE_NONE 0x00000000U /*!< No clock */ +#define LL_RCC_PLLSOURCE_HSI RCC_PLLCFGR_PLLSRC_HSI /*!< HSI16 clock selected as PLL entry clock source */ +#define LL_RCC_PLLSOURCE_HSE RCC_PLLCFGR_PLLSRC_HSE /*!< HSE clock selected as PLL entry clock source */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_PLLM_DIV PLL division factor (PLLM) + * @{ + */ +#define LL_RCC_PLLM_DIV_1 0x00000000U /*!< PLL division factor by 1 */ +#define LL_RCC_PLLM_DIV_2 (RCC_PLLCFGR_PLLM_0) /*!< PLL division factor by 2 */ +#define LL_RCC_PLLM_DIV_3 (RCC_PLLCFGR_PLLM_1) /*!< PLL division factor by 3 */ +#define LL_RCC_PLLM_DIV_4 ((RCC_PLLCFGR_PLLM_1 | RCC_PLLCFGR_PLLM_0)) /*!< PLL division factor by 4 */ +#define LL_RCC_PLLM_DIV_5 (RCC_PLLCFGR_PLLM_2) /*!< PLL division factor by 5 */ +#define LL_RCC_PLLM_DIV_6 ((RCC_PLLCFGR_PLLM_2 | RCC_PLLCFGR_PLLM_0)) /*!< PLL division factor by 6 */ +#define LL_RCC_PLLM_DIV_7 ((RCC_PLLCFGR_PLLM_2 | RCC_PLLCFGR_PLLM_1)) /*!< PLL division factor by 7 */ +#define LL_RCC_PLLM_DIV_8 (RCC_PLLCFGR_PLLM) /*!< PLL division factor by 8 */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_PLLR_DIV PLL division factor (PLLR) + * @{ + */ +#define LL_RCC_PLLR_DIV_2 (RCC_PLLCFGR_PLLR_0) /*!< Main PLL division factor for PLLCLK (system clock) by 2 */ +#define LL_RCC_PLLR_DIV_3 (RCC_PLLCFGR_PLLR_1) /*!< Main PLL division factor for PLLCLK (system clock) by 3 */ +#define LL_RCC_PLLR_DIV_4 (RCC_PLLCFGR_PLLR_1|RCC_PLLCFGR_PLLR_0) /*!< Main PLL division factor for PLLCLK (system clock) by 4 */ +#define LL_RCC_PLLR_DIV_5 (RCC_PLLCFGR_PLLR_2) /*!< Main PLL division factor for PLLCLK (system clock) by 5 */ +#define LL_RCC_PLLR_DIV_6 (RCC_PLLCFGR_PLLR_2|RCC_PLLCFGR_PLLR_0) /*!< Main PLL division factor for PLLCLK (system clock) by 6 */ +#define LL_RCC_PLLR_DIV_7 (RCC_PLLCFGR_PLLR_2|RCC_PLLCFGR_PLLR_1) /*!< Main PLL division factor for PLLCLK (system clock) by 7 */ +#define LL_RCC_PLLR_DIV_8 (RCC_PLLCFGR_PLLR) /*!< Main PLL division factor for PLLCLK (system clock) by 8 */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_PLLP_DIV PLL division factor (PLLP) + * @{ + */ +#define LL_RCC_PLLP_DIV_2 (RCC_PLLCFGR_PLLP_0) /*!< Main PLL division factor for PLLP output by 2 */ +#define LL_RCC_PLLP_DIV_3 (RCC_PLLCFGR_PLLP_1) /*!< Main PLL division factor for PLLP output by 3 */ +#define LL_RCC_PLLP_DIV_4 (RCC_PLLCFGR_PLLP_0|RCC_PLLCFGR_PLLP_1) /*!< Main PLL division factor for PLLP output by 4 */ +#define LL_RCC_PLLP_DIV_5 (RCC_PLLCFGR_PLLP_2) /*!< Main PLL division factor for PLLP output by 5 */ +#define LL_RCC_PLLP_DIV_6 (RCC_PLLCFGR_PLLP_0|RCC_PLLCFGR_PLLP_2) /*!< Main PLL division factor for PLLP output by 6 */ +#define LL_RCC_PLLP_DIV_7 (RCC_PLLCFGR_PLLP_1|RCC_PLLCFGR_PLLP_2) /*!< Main PLL division factor for PLLP output by 7 */ +#define LL_RCC_PLLP_DIV_8 (RCC_PLLCFGR_PLLP_0|RCC_PLLCFGR_PLLP_1|RCC_PLLCFGR_PLLP_2) /*!< Main PLL division factor for PLLP output by 8 */ +#define LL_RCC_PLLP_DIV_9 (RCC_PLLCFGR_PLLP_3) /*!< Main PLL division factor for PLLP output by 9 */ +#define LL_RCC_PLLP_DIV_10 (RCC_PLLCFGR_PLLP_0|RCC_PLLCFGR_PLLP_3) /*!< Main PLL division factor for PLLP output by 10 */ +#define LL_RCC_PLLP_DIV_11 (RCC_PLLCFGR_PLLP_1|RCC_PLLCFGR_PLLP_3) /*!< Main PLL division factor for PLLP output by 11 */ +#define LL_RCC_PLLP_DIV_12 (RCC_PLLCFGR_PLLP_0|RCC_PLLCFGR_PLLP_1|RCC_PLLCFGR_PLLP_3) /*!< Main PLL division factor for PLLP output by 12 */ +#define LL_RCC_PLLP_DIV_13 (RCC_PLLCFGR_PLLP_2|RCC_PLLCFGR_PLLP_3) /*!< Main PLL division factor for PLLP output by 13 */ +#define LL_RCC_PLLP_DIV_14 (RCC_PLLCFGR_PLLP_0|RCC_PLLCFGR_PLLP_2|RCC_PLLCFGR_PLLP_3) /*!< Main PLL division factor for PLLP output by 14 */ +#define LL_RCC_PLLP_DIV_15 (RCC_PLLCFGR_PLLP_1|RCC_PLLCFGR_PLLP_2|RCC_PLLCFGR_PLLP_3) /*!< Main PLL division factor for PLLP output by 15 */ +#define LL_RCC_PLLP_DIV_16 (RCC_PLLCFGR_PLLP_0|RCC_PLLCFGR_PLLP_1|RCC_PLLCFGR_PLLP_2|RCC_PLLCFGR_PLLP_3)/*!< Main PLL division factor for PLLP output by 16 */ +#define LL_RCC_PLLP_DIV_17 (RCC_PLLCFGR_PLLP_4) /*!< Main PLL division factor for PLLP output by 17 */ +#define LL_RCC_PLLP_DIV_18 (RCC_PLLCFGR_PLLP_0|RCC_PLLCFGR_PLLP_4) /*!< Main PLL division factor for PLLP output by 18 */ +#define LL_RCC_PLLP_DIV_19 (RCC_PLLCFGR_PLLP_1|RCC_PLLCFGR_PLLP_4) /*!< Main PLL division factor for PLLP output by 19 */ +#define LL_RCC_PLLP_DIV_20 (RCC_PLLCFGR_PLLP_0|RCC_PLLCFGR_PLLP_1|RCC_PLLCFGR_PLLP_4) /*!< Main PLL division factor for PLLP output by 20 */ +#define LL_RCC_PLLP_DIV_21 (RCC_PLLCFGR_PLLP_2|RCC_PLLCFGR_PLLP_4) /*!< Main PLL division factor for PLLP output by 21 */ +#define LL_RCC_PLLP_DIV_22 (RCC_PLLCFGR_PLLP_0|RCC_PLLCFGR_PLLP_2|RCC_PLLCFGR_PLLP_4) /*!< Main PLL division factor for PLLP output by 22 */ +#define LL_RCC_PLLP_DIV_23 (RCC_PLLCFGR_PLLP_1|RCC_PLLCFGR_PLLP_2|RCC_PLLCFGR_PLLP_4) /*!< Main PLL division factor for PLLP output by 23 */ +#define LL_RCC_PLLP_DIV_24 (RCC_PLLCFGR_PLLP_0|RCC_PLLCFGR_PLLP_1|RCC_PLLCFGR_PLLP_2|RCC_PLLCFGR_PLLP_4)/*!< Main PLL division factor for PLLP output by 24 */ +#define LL_RCC_PLLP_DIV_25 (RCC_PLLCFGR_PLLP_3|RCC_PLLCFGR_PLLP_4) /*!< Main PLL division factor for PLLP output by 25 */ +#define LL_RCC_PLLP_DIV_26 (RCC_PLLCFGR_PLLP_0|RCC_PLLCFGR_PLLP_3|RCC_PLLCFGR_PLLP_4) /*!< Main PLL division factor for PLLP output by 26 */ +#define LL_RCC_PLLP_DIV_27 (RCC_PLLCFGR_PLLP_1|RCC_PLLCFGR_PLLP_3|RCC_PLLCFGR_PLLP_4) /*!< Main PLL division factor for PLLP output by 27*/ +#define LL_RCC_PLLP_DIV_28 (RCC_PLLCFGR_PLLP_0|RCC_PLLCFGR_PLLP_1|RCC_PLLCFGR_PLLP_3|RCC_PLLCFGR_PLLP_4)/*!< Main PLL division factor for PLLP output by 28 */ +#define LL_RCC_PLLP_DIV_29 (RCC_PLLCFGR_PLLP_2|RCC_PLLCFGR_PLLP_3|RCC_PLLCFGR_PLLP_4) /*!< Main PLL division factor for PLLP output by 29 */ +#define LL_RCC_PLLP_DIV_30 (RCC_PLLCFGR_PLLP_0|RCC_PLLCFGR_PLLP_2|RCC_PLLCFGR_PLLP_3|RCC_PLLCFGR_PLLP_4)/*!< Main PLL division factor for PLLP output by 30 */ +#define LL_RCC_PLLP_DIV_31 (RCC_PLLCFGR_PLLP_1|RCC_PLLCFGR_PLLP_2|RCC_PLLCFGR_PLLP_3|RCC_PLLCFGR_PLLP_4)/*!< Main PLL division factor for PLLP output by 31 */ +#define LL_RCC_PLLP_DIV_32 (RCC_PLLCFGR_PLLP_0|RCC_PLLCFGR_PLLP_1|RCC_PLLCFGR_PLLP_2|RCC_PLLCFGR_PLLP_3|RCC_PLLCFGR_PLLP_4)/*!< Main PLL division factor for PLLP output by 32 */ +/** + * @} + */ + +#if defined(RCC_PLLQ_SUPPORT) +/** @defgroup RCC_LL_EC_PLLQ_DIV PLL division factor (PLLQ) + * @{ + */ +#define LL_RCC_PLLQ_DIV_2 (RCC_PLLCFGR_PLLQ_0) /*!< Main PLL division factor for PLLQ output by 2 */ +#define LL_RCC_PLLQ_DIV_3 (RCC_PLLCFGR_PLLQ_1) /*!< Main PLL division factor for PLLQ output by 3 */ +#define LL_RCC_PLLQ_DIV_4 (RCC_PLLCFGR_PLLQ_1|RCC_PLLCFGR_PLLQ_0) /*!< Main PLL division factor for PLLQ output by 4 */ +#define LL_RCC_PLLQ_DIV_5 (RCC_PLLCFGR_PLLQ_2) /*!< Main PLL division factor for PLLQ output by 5 */ +#define LL_RCC_PLLQ_DIV_6 (RCC_PLLCFGR_PLLQ_2|RCC_PLLCFGR_PLLQ_0) /*!< Main PLL division factor for PLLQ output by 6 */ +#define LL_RCC_PLLQ_DIV_7 (RCC_PLLCFGR_PLLQ_2|RCC_PLLCFGR_PLLQ_1) /*!< Main PLL division factor for PLLQ output by 7 */ +#define LL_RCC_PLLQ_DIV_8 (RCC_PLLCFGR_PLLQ) /*!< Main PLL division factor for PLLQ output by 8 */ +/** + * @} + */ +#endif /* RCC_PLLQ_SUPPORT */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup RCC_LL_Exported_Macros RCC Exported Macros + * @{ + */ + +/** @defgroup RCC_LL_EM_WRITE_READ Common Write and read registers Macros + * @{ + */ + +/** + * @brief Write a value in RCC register + * @param __REG__ Register to be written + * @param __VALUE__ Value to be written in the register + * @retval None + */ +#define LL_RCC_WriteReg(__REG__, __VALUE__) WRITE_REG((RCC->__REG__), (__VALUE__)) + +/** + * @brief Read a value in RCC register + * @param __REG__ Register to be read + * @retval Register value + */ +#define LL_RCC_ReadReg(__REG__) READ_REG(RCC->__REG__) +/** + * @} + */ + +/** @defgroup RCC_LL_EM_CALC_FREQ Calculate frequencies + * @{ + */ + +/** + * @brief Helper macro to calculate the PLLCLK frequency on system domain + * @note ex: @ref __LL_RCC_CALC_PLLCLK_FREQ (HSE_VALUE,@ref LL_RCC_PLL_GetDivider (), + * @ref LL_RCC_PLL_GetN (), @ref LL_RCC_PLL_GetR ()); + * @param __INPUTFREQ__ PLL Input frequency (based on HSE/HSI) + * @param __PLLM__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLM_DIV_1 + * @arg @ref LL_RCC_PLLM_DIV_2 + * @arg @ref LL_RCC_PLLM_DIV_3 + * @arg @ref LL_RCC_PLLM_DIV_4 + * @arg @ref LL_RCC_PLLM_DIV_5 + * @arg @ref LL_RCC_PLLM_DIV_6 + * @arg @ref LL_RCC_PLLM_DIV_7 + * @arg @ref LL_RCC_PLLM_DIV_8 + * @param __PLLN__ Between Min_Data = 8 and Max_Data = 86 + * @param __PLLR__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLR_DIV_2 + * @arg @ref LL_RCC_PLLR_DIV_3 + * @arg @ref LL_RCC_PLLR_DIV_4 + * @arg @ref LL_RCC_PLLR_DIV_5 + * @arg @ref LL_RCC_PLLR_DIV_6 + * @arg @ref LL_RCC_PLLR_DIV_7 + * @arg @ref LL_RCC_PLLR_DIV_8 + * @retval PLL clock frequency (in Hz) + */ +#define __LL_RCC_CALC_PLLCLK_FREQ(__INPUTFREQ__, __PLLM__, __PLLN__, __PLLR__) \ + ((__INPUTFREQ__) * (__PLLN__) / ((((__PLLM__)>> RCC_PLLCFGR_PLLM_Pos) + 1U)) / \ + (((__PLLR__) >> RCC_PLLCFGR_PLLR_Pos) + 1U)) + +/** + * @brief Helper macro to calculate the PLLPCLK frequency used on I2S domain + * @note ex: @ref __LL_RCC_CALC_PLLCLK_I2S1_FREQ (HSE_VALUE,@ref LL_RCC_PLL_GetDivider (), + * @ref LL_RCC_PLL_GetN (), @ref LL_RCC_PLL_GetP ()); + * @param __INPUTFREQ__ PLL Input frequency (based on HSE/HSI) + * @param __PLLM__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLM_DIV_1 + * @arg @ref LL_RCC_PLLM_DIV_2 + * @arg @ref LL_RCC_PLLM_DIV_3 + * @arg @ref LL_RCC_PLLM_DIV_4 + * @arg @ref LL_RCC_PLLM_DIV_5 + * @arg @ref LL_RCC_PLLM_DIV_6 + * @arg @ref LL_RCC_PLLM_DIV_7 + * @arg @ref LL_RCC_PLLM_DIV_8 + * @param __PLLN__ Between Min_Data = 8 and Max_Data = 86 + * @param __PLLP__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLP_DIV_2 + * @arg @ref LL_RCC_PLLP_DIV_3 + * @arg @ref LL_RCC_PLLP_DIV_4 + * @arg @ref LL_RCC_PLLP_DIV_5 + * @arg @ref LL_RCC_PLLP_DIV_6 + * @arg @ref LL_RCC_PLLP_DIV_7 + * @arg @ref LL_RCC_PLLP_DIV_8 + * @arg @ref LL_RCC_PLLP_DIV_9 + * @arg @ref LL_RCC_PLLP_DIV_10 + * @arg @ref LL_RCC_PLLP_DIV_11 + * @arg @ref LL_RCC_PLLP_DIV_12 + * @arg @ref LL_RCC_PLLP_DIV_13 + * @arg @ref LL_RCC_PLLP_DIV_14 + * @arg @ref LL_RCC_PLLP_DIV_15 + * @arg @ref LL_RCC_PLLP_DIV_16 + * @arg @ref LL_RCC_PLLP_DIV_17 + * @arg @ref LL_RCC_PLLP_DIV_18 + * @arg @ref LL_RCC_PLLP_DIV_19 + * @arg @ref LL_RCC_PLLP_DIV_20 + * @arg @ref LL_RCC_PLLP_DIV_21 + * @arg @ref LL_RCC_PLLP_DIV_22 + * @arg @ref LL_RCC_PLLP_DIV_23 + * @arg @ref LL_RCC_PLLP_DIV_24 + * @arg @ref LL_RCC_PLLP_DIV_25 + * @arg @ref LL_RCC_PLLP_DIV_26 + * @arg @ref LL_RCC_PLLP_DIV_27 + * @arg @ref LL_RCC_PLLP_DIV_28 + * @arg @ref LL_RCC_PLLP_DIV_29 + * @arg @ref LL_RCC_PLLP_DIV_30 + * @arg @ref LL_RCC_PLLP_DIV_31 + * @arg @ref LL_RCC_PLLP_DIV_32 + * @retval PLL clock frequency (in Hz) + */ +#define __LL_RCC_CALC_PLLCLK_I2S1_FREQ(__INPUTFREQ__, __PLLM__, __PLLN__, __PLLP__) \ + ((__INPUTFREQ__) * (__PLLN__) / ((((__PLLM__)>> RCC_PLLCFGR_PLLM_Pos) + 1U)) / \ + (((__PLLP__) >> RCC_PLLCFGR_PLLP_Pos) + 1U)) + +#if defined(RCC_CCIPR2_I2S2SEL) +/** + * @brief Helper macro to calculate the PLLPCLK frequency used on I2S2 domain + * @note ex: @ref __LL_RCC_CALC_PLLCLK_I2S2_FREQ (HSE_VALUE,@ref LL_RCC_PLL_GetDivider (), + * @ref LL_RCC_PLL_GetN (), @ref LL_RCC_PLL_GetP ()); + * @param __INPUTFREQ__ PLL Input frequency (based on HSE/HSI) + * @param __PLLM__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLM_DIV_1 + * @arg @ref LL_RCC_PLLM_DIV_2 + * @arg @ref LL_RCC_PLLM_DIV_3 + * @arg @ref LL_RCC_PLLM_DIV_4 + * @arg @ref LL_RCC_PLLM_DIV_5 + * @arg @ref LL_RCC_PLLM_DIV_6 + * @arg @ref LL_RCC_PLLM_DIV_7 + * @arg @ref LL_RCC_PLLM_DIV_8 + * @param __PLLN__ Between Min_Data = 8 and Max_Data = 86 + * @param __PLLP__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLP_DIV_2 + * @arg @ref LL_RCC_PLLP_DIV_3 + * @arg @ref LL_RCC_PLLP_DIV_4 + * @arg @ref LL_RCC_PLLP_DIV_5 + * @arg @ref LL_RCC_PLLP_DIV_6 + * @arg @ref LL_RCC_PLLP_DIV_7 + * @arg @ref LL_RCC_PLLP_DIV_8 + * @arg @ref LL_RCC_PLLP_DIV_9 + * @arg @ref LL_RCC_PLLP_DIV_10 + * @arg @ref LL_RCC_PLLP_DIV_11 + * @arg @ref LL_RCC_PLLP_DIV_12 + * @arg @ref LL_RCC_PLLP_DIV_13 + * @arg @ref LL_RCC_PLLP_DIV_14 + * @arg @ref LL_RCC_PLLP_DIV_15 + * @arg @ref LL_RCC_PLLP_DIV_16 + * @arg @ref LL_RCC_PLLP_DIV_17 + * @arg @ref LL_RCC_PLLP_DIV_18 + * @arg @ref LL_RCC_PLLP_DIV_19 + * @arg @ref LL_RCC_PLLP_DIV_20 + * @arg @ref LL_RCC_PLLP_DIV_21 + * @arg @ref LL_RCC_PLLP_DIV_22 + * @arg @ref LL_RCC_PLLP_DIV_23 + * @arg @ref LL_RCC_PLLP_DIV_24 + * @arg @ref LL_RCC_PLLP_DIV_25 + * @arg @ref LL_RCC_PLLP_DIV_26 + * @arg @ref LL_RCC_PLLP_DIV_27 + * @arg @ref LL_RCC_PLLP_DIV_28 + * @arg @ref LL_RCC_PLLP_DIV_29 + * @arg @ref LL_RCC_PLLP_DIV_30 + * @arg @ref LL_RCC_PLLP_DIV_31 + * @arg @ref LL_RCC_PLLP_DIV_32 + * @retval PLL clock frequency (in Hz) + */ +#define __LL_RCC_CALC_PLLCLK_I2S2_FREQ(__INPUTFREQ__, __PLLM__, __PLLN__, __PLLP__) \ + ((__INPUTFREQ__) * (__PLLN__) / ((((__PLLM__)>> RCC_PLLCFGR_PLLM_Pos) + 1U)) / \ + (((__PLLP__) >> RCC_PLLCFGR_PLLP_Pos) + 1U)) +#endif /* RCC_CCIPR2_I2S2SEL */ + +/** + * @brief Helper macro to calculate the PLLPCLK frequency used on ADC domain + * @note ex: @ref __LL_RCC_CALC_PLLCLK_ADC_FREQ (HSE_VALUE,@ref LL_RCC_PLL_GetDivider (), + * @ref LL_RCC_PLL_GetN (), @ref LL_RCC_PLL_GetP ()); + * @param __INPUTFREQ__ PLL Input frequency (based on HSE/HSI) + * @param __PLLM__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLM_DIV_1 + * @arg @ref LL_RCC_PLLM_DIV_2 + * @arg @ref LL_RCC_PLLM_DIV_3 + * @arg @ref LL_RCC_PLLM_DIV_4 + * @arg @ref LL_RCC_PLLM_DIV_5 + * @arg @ref LL_RCC_PLLM_DIV_6 + * @arg @ref LL_RCC_PLLM_DIV_7 + * @arg @ref LL_RCC_PLLM_DIV_8 + * @param __PLLN__ Between Min_Data = 8 and Max_Data = 86 + * @param __PLLP__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLP_DIV_2 + * @arg @ref LL_RCC_PLLP_DIV_3 + * @arg @ref LL_RCC_PLLP_DIV_4 + * @arg @ref LL_RCC_PLLP_DIV_5 + * @arg @ref LL_RCC_PLLP_DIV_6 + * @arg @ref LL_RCC_PLLP_DIV_7 + * @arg @ref LL_RCC_PLLP_DIV_8 + * @arg @ref LL_RCC_PLLP_DIV_9 + * @arg @ref LL_RCC_PLLP_DIV_10 + * @arg @ref LL_RCC_PLLP_DIV_11 + * @arg @ref LL_RCC_PLLP_DIV_12 + * @arg @ref LL_RCC_PLLP_DIV_13 + * @arg @ref LL_RCC_PLLP_DIV_14 + * @arg @ref LL_RCC_PLLP_DIV_15 + * @arg @ref LL_RCC_PLLP_DIV_16 + * @arg @ref LL_RCC_PLLP_DIV_17 + * @arg @ref LL_RCC_PLLP_DIV_18 + * @arg @ref LL_RCC_PLLP_DIV_19 + * @arg @ref LL_RCC_PLLP_DIV_20 + * @arg @ref LL_RCC_PLLP_DIV_21 + * @arg @ref LL_RCC_PLLP_DIV_22 + * @arg @ref LL_RCC_PLLP_DIV_23 + * @arg @ref LL_RCC_PLLP_DIV_24 + * @arg @ref LL_RCC_PLLP_DIV_25 + * @arg @ref LL_RCC_PLLP_DIV_26 + * @arg @ref LL_RCC_PLLP_DIV_27 + * @arg @ref LL_RCC_PLLP_DIV_28 + * @arg @ref LL_RCC_PLLP_DIV_29 + * @arg @ref LL_RCC_PLLP_DIV_30 + * @arg @ref LL_RCC_PLLP_DIV_31 + * @arg @ref LL_RCC_PLLP_DIV_32 + * @retval PLL clock frequency (in Hz) + */ +#define __LL_RCC_CALC_PLLCLK_ADC_FREQ(__INPUTFREQ__, __PLLM__, __PLLN__, __PLLP__) \ + ((__INPUTFREQ__) * (__PLLN__) / ((((__PLLM__)>> RCC_PLLCFGR_PLLM_Pos) + 1U)) / \ + (((__PLLP__) >> RCC_PLLCFGR_PLLP_Pos) + 1U)) + +#if defined(RNG) +/** + * @brief Helper macro to calculate the PLLQCLK frequency used on RNG domain + * @note ex: @ref __LL_RCC_CALC_PLLCLK_RNG_FREQ (HSE_VALUE,@ref LL_RCC_PLL_GetDivider (), + * @ref LL_RCC_PLL_GetN (), @ref LL_RCC_PLL_GetQ ()); + * @param __INPUTFREQ__ PLL Input frequency (based on HSE/HSI) + * @param __PLLM__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLM_DIV_1 + * @arg @ref LL_RCC_PLLM_DIV_2 + * @arg @ref LL_RCC_PLLM_DIV_3 + * @arg @ref LL_RCC_PLLM_DIV_4 + * @arg @ref LL_RCC_PLLM_DIV_5 + * @arg @ref LL_RCC_PLLM_DIV_6 + * @arg @ref LL_RCC_PLLM_DIV_7 + * @arg @ref LL_RCC_PLLM_DIV_8 + * @param __PLLN__ Between Min_Data = 8 and Max_Data = 86 + * @param __PLLQ__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLQ_DIV_2 + * @arg @ref LL_RCC_PLLQ_DIV_3 + * @arg @ref LL_RCC_PLLQ_DIV_4 + * @arg @ref LL_RCC_PLLQ_DIV_5 + * @arg @ref LL_RCC_PLLQ_DIV_6 + * @arg @ref LL_RCC_PLLQ_DIV_7 + * @arg @ref LL_RCC_PLLQ_DIV_8 + * @retval PLL clock frequency (in Hz) + */ +#define __LL_RCC_CALC_PLLCLK_RNG_FREQ(__INPUTFREQ__, __PLLM__, __PLLN__, __PLLQ__) \ + ((__INPUTFREQ__) * (__PLLN__) / ((((__PLLM__)>> RCC_PLLCFGR_PLLM_Pos) + 1U)) / \ + (((__PLLQ__) >> RCC_PLLCFGR_PLLQ_Pos) + 1U)) +#endif /* RNG */ + +#if defined(RCC_PLLQ_SUPPORT) +/** + * @brief Helper macro to calculate the PLLQCLK frequency used on TIM1 domain + * @note ex: @ref __LL_RCC_CALC_PLLCLK_TIM1_FREQ (HSE_VALUE,@ref LL_RCC_PLL_GetDivider (), + * @ref LL_RCC_PLL_GetN (), @ref LL_RCC_PLL_GetQ ()); + * @param __INPUTFREQ__ PLL Input frequency (based on HSE/HSI) + * @param __PLLM__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLM_DIV_1 + * @arg @ref LL_RCC_PLLM_DIV_2 + * @arg @ref LL_RCC_PLLM_DIV_3 + * @arg @ref LL_RCC_PLLM_DIV_4 + * @arg @ref LL_RCC_PLLM_DIV_5 + * @arg @ref LL_RCC_PLLM_DIV_6 + * @arg @ref LL_RCC_PLLM_DIV_7 + * @arg @ref LL_RCC_PLLM_DIV_8 + * @param __PLLN__ Between Min_Data = 8 and Max_Data = 86 + * @param __PLLQ__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLQ_DIV_2 + * @arg @ref LL_RCC_PLLQ_DIV_3 + * @arg @ref LL_RCC_PLLQ_DIV_4 + * @arg @ref LL_RCC_PLLQ_DIV_5 + * @arg @ref LL_RCC_PLLQ_DIV_6 + * @arg @ref LL_RCC_PLLQ_DIV_7 + * @arg @ref LL_RCC_PLLQ_DIV_8 + * @retval PLL clock frequency (in Hz) + */ +#define __LL_RCC_CALC_PLLCLK_TIM1_FREQ(__INPUTFREQ__, __PLLM__, __PLLN__, __PLLQ__) \ + ((__INPUTFREQ__) * (__PLLN__) / ((((__PLLM__)>> RCC_PLLCFGR_PLLM_Pos) + 1U)) / \ + (((__PLLQ__) >> RCC_PLLCFGR_PLLQ_Pos) + 1U)) +#if defined(TIM15) +/** + * @brief Helper macro to calculate the PLLQCLK frequency used on TIM15 domain + * @note ex: @ref __LL_RCC_CALC_PLLCLK_TIM15_FREQ (HSE_VALUE,@ref LL_RCC_PLL_GetDivider (), + * @ref LL_RCC_PLL_GetN (), @ref LL_RCC_PLL_GetQ ()); + * @param __INPUTFREQ__ PLL Input frequency (based on HSE/HSI) + * @param __PLLM__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLM_DIV_1 + * @arg @ref LL_RCC_PLLM_DIV_2 + * @arg @ref LL_RCC_PLLM_DIV_3 + * @arg @ref LL_RCC_PLLM_DIV_4 + * @arg @ref LL_RCC_PLLM_DIV_5 + * @arg @ref LL_RCC_PLLM_DIV_6 + * @arg @ref LL_RCC_PLLM_DIV_7 + * @arg @ref LL_RCC_PLLM_DIV_8 + * @param __PLLN__ Between Min_Data = 8 and Max_Data = 86 + * @param __PLLQ__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLQ_DIV_2 + * @arg @ref LL_RCC_PLLQ_DIV_3 + * @arg @ref LL_RCC_PLLQ_DIV_4 + * @arg @ref LL_RCC_PLLQ_DIV_5 + * @arg @ref LL_RCC_PLLQ_DIV_6 + * @arg @ref LL_RCC_PLLQ_DIV_7 + * @arg @ref LL_RCC_PLLQ_DIV_8 + * @retval PLL clock frequency (in Hz) + */ +#define __LL_RCC_CALC_PLLCLK_TIM15_FREQ(__INPUTFREQ__, __PLLM__, __PLLN__, __PLLQ__) \ + ((__INPUTFREQ__) * (__PLLN__) / ((((__PLLM__)>> RCC_PLLCFGR_PLLM_Pos) + 1U)) / \ + (((__PLLQ__) >> RCC_PLLCFGR_PLLQ_Pos) + 1U)) +#endif /* TIM15 */ +#endif /* RCC_PLLQ_SUPPORT */ + +#if defined(FDCAN1) || defined(FDCAN2) +/** + * @brief Helper macro to calculate the PLLQCLK frequency used on FDCAN domain + * @note ex: @ref __LL_RCC_CALC_PLLCLK_FDCAN_FREQ (HSE_VALUE,@ref LL_RCC_PLL_GetDivider (), + * @ref LL_RCC_PLL_GetN (), @ref LL_RCC_PLL_GetQ ()); + * @param __INPUTFREQ__ PLL Input frequency (based on HSE/HSI) + * @param __PLLM__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLM_DIV_1 + * @arg @ref LL_RCC_PLLM_DIV_2 + * @arg @ref LL_RCC_PLLM_DIV_3 + * @arg @ref LL_RCC_PLLM_DIV_4 + * @arg @ref LL_RCC_PLLM_DIV_5 + * @arg @ref LL_RCC_PLLM_DIV_6 + * @arg @ref LL_RCC_PLLM_DIV_7 + * @arg @ref LL_RCC_PLLM_DIV_8 + * @param __PLLN__ Between Min_Data = 8 and Max_Data = 86 + * @param __PLLQ__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLQ_DIV_2 + * @arg @ref LL_RCC_PLLQ_DIV_3 + * @arg @ref LL_RCC_PLLQ_DIV_4 + * @arg @ref LL_RCC_PLLQ_DIV_5 + * @arg @ref LL_RCC_PLLQ_DIV_6 + * @arg @ref LL_RCC_PLLQ_DIV_7 + * @arg @ref LL_RCC_PLLQ_DIV_8 + * @retval PLL clock frequency (in Hz) + */ +#define __LL_RCC_CALC_PLLCLK_FDCAN_FREQ(__INPUTFREQ__, __PLLM__, __PLLN__, __PLLQ__) \ + ((__INPUTFREQ__) * (__PLLN__) / ((((__PLLM__)>> RCC_PLLCFGR_PLLM_Pos) + 1U)) / \ + (((__PLLQ__) >> RCC_PLLCFGR_PLLQ_Pos) + 1U)) +#endif /* FDCAN1 || FDCAN2 */ + +#if defined(STM32G0C1xx) || defined(STM32G0B1xx) || defined(STM32G0B0xx) +/** + * @brief Helper macro to calculate the PLLQCLK frequency used on USB domain + * @note ex: @ref __LL_RCC_CALC_PLLCLK_USB_FREQ (HSE_VALUE,@ref LL_RCC_PLL_GetDivider (), + * @ref LL_RCC_PLL_GetN (), @ref LL_RCC_PLL_GetQ ()); + * @param __INPUTFREQ__ PLL Input frequency (based on HSE/HSI) + * @param __PLLM__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLM_DIV_1 + * @arg @ref LL_RCC_PLLM_DIV_2 + * @arg @ref LL_RCC_PLLM_DIV_3 + * @arg @ref LL_RCC_PLLM_DIV_4 + * @arg @ref LL_RCC_PLLM_DIV_5 + * @arg @ref LL_RCC_PLLM_DIV_6 + * @arg @ref LL_RCC_PLLM_DIV_7 + * @arg @ref LL_RCC_PLLM_DIV_8 + * @param __PLLN__ Between Min_Data = 8 and Max_Data = 86 + * @param __PLLQ__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLQ_DIV_2 + * @arg @ref LL_RCC_PLLQ_DIV_3 + * @arg @ref LL_RCC_PLLQ_DIV_4 + * @arg @ref LL_RCC_PLLQ_DIV_5 + * @arg @ref LL_RCC_PLLQ_DIV_6 + * @arg @ref LL_RCC_PLLQ_DIV_7 + * @arg @ref LL_RCC_PLLQ_DIV_8 + * @retval PLL clock frequency (in Hz) + */ +#define __LL_RCC_CALC_PLLCLK_USB_FREQ(__INPUTFREQ__, __PLLM__, __PLLN__, __PLLQ__) \ + ((__INPUTFREQ__) * (__PLLN__) / ((((__PLLM__)>> RCC_PLLCFGR_PLLM_Pos) + 1U)) / \ + (((__PLLQ__) >> RCC_PLLCFGR_PLLQ_Pos) + 1U)) +#endif /* STM32G0C1xx || STM32G0B1xx || STM32G0B0xx */ + +/** + * @brief Helper macro to calculate the HCLK frequency + * @param __SYSCLKFREQ__ SYSCLK frequency (based on HSE/HSI/PLLCLK) + * @param __AHBPRESCALER__ This parameter can be one of the following values: + * @arg @ref LL_RCC_SYSCLK_DIV_1 + * @arg @ref LL_RCC_SYSCLK_DIV_2 + * @arg @ref LL_RCC_SYSCLK_DIV_4 + * @arg @ref LL_RCC_SYSCLK_DIV_8 + * @arg @ref LL_RCC_SYSCLK_DIV_16 + * @arg @ref LL_RCC_SYSCLK_DIV_64 + * @arg @ref LL_RCC_SYSCLK_DIV_128 + * @arg @ref LL_RCC_SYSCLK_DIV_256 + * @arg @ref LL_RCC_SYSCLK_DIV_512 + * @retval HCLK clock frequency (in Hz) + */ +#define __LL_RCC_CALC_HCLK_FREQ(__SYSCLKFREQ__,__AHBPRESCALER__) \ + ((__SYSCLKFREQ__) >> (AHBPrescTable[((__AHBPRESCALER__) & RCC_CFGR_HPRE) >> RCC_CFGR_HPRE_Pos] & 0x1FU)) + +/** + * @brief Helper macro to calculate the PCLK1 frequency (ABP1) + * @param __HCLKFREQ__ HCLK frequency + * @param __APB1PRESCALER__ This parameter can be one of the following values: + * @arg @ref LL_RCC_APB1_DIV_1 + * @arg @ref LL_RCC_APB1_DIV_2 + * @arg @ref LL_RCC_APB1_DIV_4 + * @arg @ref LL_RCC_APB1_DIV_8 + * @arg @ref LL_RCC_APB1_DIV_16 + * @retval PCLK1 clock frequency (in Hz) + */ +#define __LL_RCC_CALC_PCLK1_FREQ(__HCLKFREQ__, __APB1PRESCALER__) \ + ((__HCLKFREQ__) >> (APBPrescTable[(__APB1PRESCALER__) >> RCC_CFGR_PPRE_Pos] & 0x1FU)) + +/** + * @brief Helper macro to calculate the HSISYS frequency + * @param __HSIDIV__ This parameter can be one of the following values: + * @arg @ref LL_RCC_HSI_DIV_1 + * @arg @ref LL_RCC_HSI_DIV_2 + * @arg @ref LL_RCC_HSI_DIV_4 + * @arg @ref LL_RCC_HSI_DIV_8 + * @arg @ref LL_RCC_HSI_DIV_16 + * @arg @ref LL_RCC_HSI_DIV_32 + * @arg @ref LL_RCC_HSI_DIV_64 + * @arg @ref LL_RCC_HSI_DIV_128 + * @retval HSISYS clock frequency (in Hz) + */ +#define __LL_RCC_CALC_HSI_FREQ(__HSIDIV__) (HSI_VALUE / (1U << ((__HSIDIV__)>> RCC_CR_HSIDIV_Pos))) + +/** + * @} + */ + +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup RCC_LL_Exported_Functions RCC Exported Functions + * @{ + */ + +/** @defgroup RCC_LL_EF_HSE HSE + * @{ + */ + +/** + * @brief Enable the Clock Security System. + * @rmtoll CR CSSON LL_RCC_HSE_EnableCSS + * @retval None + */ +__STATIC_INLINE void LL_RCC_HSE_EnableCSS(void) +{ + SET_BIT(RCC->CR, RCC_CR_CSSON); +} + +/** + * @brief Enable HSE external oscillator (HSE Bypass) + * @rmtoll CR HSEBYP LL_RCC_HSE_EnableBypass + * @retval None + */ +__STATIC_INLINE void LL_RCC_HSE_EnableBypass(void) +{ + SET_BIT(RCC->CR, RCC_CR_HSEBYP); +} + +/** + * @brief Disable HSE external oscillator (HSE Bypass) + * @rmtoll CR HSEBYP LL_RCC_HSE_DisableBypass + * @retval None + */ +__STATIC_INLINE void LL_RCC_HSE_DisableBypass(void) +{ + CLEAR_BIT(RCC->CR, RCC_CR_HSEBYP); +} + +/** + * @brief Enable HSE crystal oscillator (HSE ON) + * @rmtoll CR HSEON LL_RCC_HSE_Enable + * @retval None + */ +__STATIC_INLINE void LL_RCC_HSE_Enable(void) +{ + SET_BIT(RCC->CR, RCC_CR_HSEON); +} + +/** + * @brief Disable HSE crystal oscillator (HSE ON) + * @rmtoll CR HSEON LL_RCC_HSE_Disable + * @retval None + */ +__STATIC_INLINE void LL_RCC_HSE_Disable(void) +{ + CLEAR_BIT(RCC->CR, RCC_CR_HSEON); +} + +/** + * @brief Check if HSE oscillator Ready + * @rmtoll CR HSERDY LL_RCC_HSE_IsReady + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_HSE_IsReady(void) +{ + return ((READ_BIT(RCC->CR, RCC_CR_HSERDY) == (RCC_CR_HSERDY)) ? 1UL : 0UL); +} + +/** + * @} + */ + +/** @defgroup RCC_LL_EF_HSI HSI + * @{ + */ + +/** + * @brief Enable HSI even in stop mode + * @note HSI oscillator is forced ON even in Stop mode + * @rmtoll CR HSIKERON LL_RCC_HSI_EnableInStopMode + * @retval None + */ +__STATIC_INLINE void LL_RCC_HSI_EnableInStopMode(void) +{ + SET_BIT(RCC->CR, RCC_CR_HSIKERON); +} + +/** + * @brief Disable HSI in stop mode + * @rmtoll CR HSIKERON LL_RCC_HSI_DisableInStopMode + * @retval None + */ +__STATIC_INLINE void LL_RCC_HSI_DisableInStopMode(void) +{ + CLEAR_BIT(RCC->CR, RCC_CR_HSIKERON); +} + +/** + * @brief Check if HSI in stop mode is enabled + * @rmtoll CR HSIKERON LL_RCC_HSI_IsEnabledInStopMode + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_HSI_IsEnabledInStopMode(void) +{ + return ((READ_BIT(RCC->CR, RCC_CR_HSIKERON) == (RCC_CR_HSIKERON)) ? 1UL : 0UL); +} + +/** + * @brief Enable HSI oscillator + * @rmtoll CR HSION LL_RCC_HSI_Enable + * @retval None + */ +__STATIC_INLINE void LL_RCC_HSI_Enable(void) +{ + SET_BIT(RCC->CR, RCC_CR_HSION); +} + +/** + * @brief Disable HSI oscillator + * @rmtoll CR HSION LL_RCC_HSI_Disable + * @retval None + */ +__STATIC_INLINE void LL_RCC_HSI_Disable(void) +{ + CLEAR_BIT(RCC->CR, RCC_CR_HSION); +} + +/** + * @brief Check if HSI clock is ready + * @rmtoll CR HSIRDY LL_RCC_HSI_IsReady + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_HSI_IsReady(void) +{ + return ((READ_BIT(RCC->CR, RCC_CR_HSIRDY) == (RCC_CR_HSIRDY)) ? 1UL : 0UL); +} + +/** + * @brief Get HSI Calibration value + * @note When HSITRIM is written, HSICAL is updated with the sum of + * HSITRIM and the factory trim value + * @rmtoll ICSCR HSICAL LL_RCC_HSI_GetCalibration + * @retval Between Min_Data = 0x00 and Max_Data = 0xFF + */ +__STATIC_INLINE uint32_t LL_RCC_HSI_GetCalibration(void) +{ + return (uint32_t)(READ_BIT(RCC->ICSCR, RCC_ICSCR_HSICAL) >> RCC_ICSCR_HSICAL_Pos); +} + +/** + * @brief Set HSI Calibration trimming + * @note user-programmable trimming value that is added to the HSICAL + * @note Default value is 64, which, when added to the HSICAL value, + * should trim the HSI to 16 MHz +/- 1 % + * @rmtoll ICSCR HSITRIM LL_RCC_HSI_SetCalibTrimming + * @param Value Between Min_Data = 0 and Max_Data = 127 + * @retval None + */ +__STATIC_INLINE void LL_RCC_HSI_SetCalibTrimming(uint32_t Value) +{ + MODIFY_REG(RCC->ICSCR, RCC_ICSCR_HSITRIM, Value << RCC_ICSCR_HSITRIM_Pos); +} + +/** + * @brief Get HSI Calibration trimming + * @rmtoll ICSCR HSITRIM LL_RCC_HSI_GetCalibTrimming + * @retval Between Min_Data = 0 and Max_Data = 127 + */ +__STATIC_INLINE uint32_t LL_RCC_HSI_GetCalibTrimming(void) +{ + return (uint32_t)(READ_BIT(RCC->ICSCR, RCC_ICSCR_HSITRIM) >> RCC_ICSCR_HSITRIM_Pos); +} + +/** + * @} + */ + +#if defined(RCC_HSI48_SUPPORT) +/** @defgroup RCC_LL_EF_HSI48 HSI48 + * @{ + */ + +/** + * @brief Enable HSI48 + * @rmtoll CR HSI48ON LL_RCC_HSI48_Enable + * @retval None + */ +__STATIC_INLINE void LL_RCC_HSI48_Enable(void) +{ + SET_BIT(RCC->CR, RCC_CR_HSI48ON); +} + +/** + * @brief Disable HSI48 + * @rmtoll CR HSI48ON LL_RCC_HSI48_Disable + * @retval None + */ +__STATIC_INLINE void LL_RCC_HSI48_Disable(void) +{ + CLEAR_BIT(RCC->CR, RCC_CR_HSI48ON); +} + +/** + * @brief Check if HSI48 oscillator Ready + * @rmtoll CR HSI48RDY LL_RCC_HSI48_IsReady + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_HSI48_IsReady(void) +{ + return ((READ_BIT(RCC->CR, RCC_CR_HSI48RDY) == RCC_CR_HSI48RDY) ? 1UL : 0UL); +} + +/** + * @brief Get HSI48 Calibration value + * @rmtoll CRRCR HSI48CAL LL_RCC_HSI48_GetCalibration + * @retval Between Min_Data = 0x00 and Max_Data = 0x1FF + */ +__STATIC_INLINE uint32_t LL_RCC_HSI48_GetCalibration(void) +{ + return (uint32_t)(READ_BIT(RCC->CRRCR, RCC_CRRCR_HSI48CAL) >> RCC_CRRCR_HSI48CAL_Pos); +} + +/** + * @} + */ +#endif /* RCC_HSI48_SUPPORT */ + +/** @defgroup RCC_LL_EF_LSE LSE + * @{ + */ + +/** + * @brief Enable Low Speed External (LSE) crystal. + * @rmtoll BDCR LSEON LL_RCC_LSE_Enable + * @retval None + */ +__STATIC_INLINE void LL_RCC_LSE_Enable(void) +{ + SET_BIT(RCC->BDCR, RCC_BDCR_LSEON); +} + +/** + * @brief Disable Low Speed External (LSE) crystal. + * @rmtoll BDCR LSEON LL_RCC_LSE_Disable + * @retval None + */ +__STATIC_INLINE void LL_RCC_LSE_Disable(void) +{ + CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSEON); +} + +/** + * @brief Enable external clock source (LSE bypass). + * @rmtoll BDCR LSEBYP LL_RCC_LSE_EnableBypass + * @retval None + */ +__STATIC_INLINE void LL_RCC_LSE_EnableBypass(void) +{ + SET_BIT(RCC->BDCR, RCC_BDCR_LSEBYP); +} + +/** + * @brief Disable external clock source (LSE bypass). + * @rmtoll BDCR LSEBYP LL_RCC_LSE_DisableBypass + * @retval None + */ +__STATIC_INLINE void LL_RCC_LSE_DisableBypass(void) +{ + CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSEBYP); +} + +/** + * @brief Set LSE oscillator drive capability + * @note The oscillator is in Xtal mode when it is not in bypass mode. + * @rmtoll BDCR LSEDRV LL_RCC_LSE_SetDriveCapability + * @param LSEDrive This parameter can be one of the following values: + * @arg @ref LL_RCC_LSEDRIVE_LOW + * @arg @ref LL_RCC_LSEDRIVE_MEDIUMLOW + * @arg @ref LL_RCC_LSEDRIVE_MEDIUMHIGH + * @arg @ref LL_RCC_LSEDRIVE_HIGH + * @retval None + */ +__STATIC_INLINE void LL_RCC_LSE_SetDriveCapability(uint32_t LSEDrive) +{ + MODIFY_REG(RCC->BDCR, RCC_BDCR_LSEDRV, LSEDrive); +} + +/** + * @brief Get LSE oscillator drive capability + * @rmtoll BDCR LSEDRV LL_RCC_LSE_GetDriveCapability + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_LSEDRIVE_LOW + * @arg @ref LL_RCC_LSEDRIVE_MEDIUMLOW + * @arg @ref LL_RCC_LSEDRIVE_MEDIUMHIGH + * @arg @ref LL_RCC_LSEDRIVE_HIGH + */ +__STATIC_INLINE uint32_t LL_RCC_LSE_GetDriveCapability(void) +{ + return (uint32_t)(READ_BIT(RCC->BDCR, RCC_BDCR_LSEDRV)); +} + +/** + * @brief Enable Clock security system on LSE. + * @rmtoll BDCR LSECSSON LL_RCC_LSE_EnableCSS + * @retval None + */ +__STATIC_INLINE void LL_RCC_LSE_EnableCSS(void) +{ + SET_BIT(RCC->BDCR, RCC_BDCR_LSECSSON); +} + +/** + * @brief Disable Clock security system on LSE. + * @note Clock security system can be disabled only after a LSE + * failure detection. In that case it MUST be disabled by software. + * @rmtoll BDCR LSECSSON LL_RCC_LSE_DisableCSS + * @retval None + */ +__STATIC_INLINE void LL_RCC_LSE_DisableCSS(void) +{ + CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSECSSON); +} + +/** + * @brief Check if LSE oscillator Ready + * @rmtoll BDCR LSERDY LL_RCC_LSE_IsReady + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_LSE_IsReady(void) +{ + return ((READ_BIT(RCC->BDCR, RCC_BDCR_LSERDY) == (RCC_BDCR_LSERDY)) ? 1UL : 0UL); +} + +/** + * @brief Check if CSS on LSE failure Detection + * @rmtoll BDCR LSECSSD LL_RCC_LSE_IsCSSDetected + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_LSE_IsCSSDetected(void) +{ + return ((READ_BIT(RCC->BDCR, RCC_BDCR_LSECSSD) == (RCC_BDCR_LSECSSD)) ? 1UL : 0UL); +} + +/** + * @} + */ + +/** @defgroup RCC_LL_EF_LSI LSI + * @{ + */ + +/** + * @brief Enable LSI Oscillator + * @rmtoll CSR LSION LL_RCC_LSI_Enable + * @retval None + */ +__STATIC_INLINE void LL_RCC_LSI_Enable(void) +{ + SET_BIT(RCC->CSR, RCC_CSR_LSION); +} + +/** + * @brief Disable LSI Oscillator + * @rmtoll CSR LSION LL_RCC_LSI_Disable + * @retval None + */ +__STATIC_INLINE void LL_RCC_LSI_Disable(void) +{ + CLEAR_BIT(RCC->CSR, RCC_CSR_LSION); +} + +/** + * @brief Check if LSI is Ready + * @rmtoll CSR LSIRDY LL_RCC_LSI_IsReady + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_LSI_IsReady(void) +{ + return ((READ_BIT(RCC->CSR, RCC_CSR_LSIRDY) == (RCC_CSR_LSIRDY)) ? 1UL : 0UL); +} + +/** + * @} + */ + +/** @defgroup RCC_LL_EF_LSCO LSCO + * @{ + */ + +/** + * @brief Enable Low speed clock + * @rmtoll BDCR LSCOEN LL_RCC_LSCO_Enable + * @retval None + */ +__STATIC_INLINE void LL_RCC_LSCO_Enable(void) +{ + SET_BIT(RCC->BDCR, RCC_BDCR_LSCOEN); +} + +/** + * @brief Disable Low speed clock + * @rmtoll BDCR LSCOEN LL_RCC_LSCO_Disable + * @retval None + */ +__STATIC_INLINE void LL_RCC_LSCO_Disable(void) +{ + CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSCOEN); +} + +/** + * @brief Configure Low speed clock selection + * @rmtoll BDCR LSCOSEL LL_RCC_LSCO_SetSource + * @param Source This parameter can be one of the following values: + * @arg @ref LL_RCC_LSCO_CLKSOURCE_LSI + * @arg @ref LL_RCC_LSCO_CLKSOURCE_LSE + * @retval None + */ +__STATIC_INLINE void LL_RCC_LSCO_SetSource(uint32_t Source) +{ + MODIFY_REG(RCC->BDCR, RCC_BDCR_LSCOSEL, Source); +} + +/** + * @brief Get Low speed clock selection + * @rmtoll BDCR LSCOSEL LL_RCC_LSCO_GetSource + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_LSCO_CLKSOURCE_LSI + * @arg @ref LL_RCC_LSCO_CLKSOURCE_LSE + */ +__STATIC_INLINE uint32_t LL_RCC_LSCO_GetSource(void) +{ + return (uint32_t)(READ_BIT(RCC->BDCR, RCC_BDCR_LSCOSEL)); +} + +/** + * @} + */ + +/** @defgroup RCC_LL_EF_System System + * @{ + */ + +/** + * @brief Configure the system clock source + * @rmtoll CFGR SW LL_RCC_SetSysClkSource + * @param Source This parameter can be one of the following values: + * @arg @ref LL_RCC_SYS_CLKSOURCE_HSI + * @arg @ref LL_RCC_SYS_CLKSOURCE_HSE + * @arg @ref LL_RCC_SYS_CLKSOURCE_PLL + * @arg @ref LL_RCC_SYS_CLKSOURCE_LSI + * @arg @ref LL_RCC_SYS_CLKSOURCE_LSE + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetSysClkSource(uint32_t Source) +{ + MODIFY_REG(RCC->CFGR, RCC_CFGR_SW, Source); +} + +/** + * @brief Get the system clock source + * @rmtoll CFGR SWS LL_RCC_GetSysClkSource + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_SYS_CLKSOURCE_STATUS_HSI + * @arg @ref LL_RCC_SYS_CLKSOURCE_STATUS_HSE + * @arg @ref LL_RCC_SYS_CLKSOURCE_STATUS_PLL + * @arg @ref LL_RCC_SYS_CLKSOURCE_STATUS_LSI + * @arg @ref LL_RCC_SYS_CLKSOURCE_STATUS_LSE + */ +__STATIC_INLINE uint32_t LL_RCC_GetSysClkSource(void) +{ + return (uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_SWS)); +} + +/** + * @brief Set AHB prescaler + * @rmtoll CFGR HPRE LL_RCC_SetAHBPrescaler + * @param Prescaler This parameter can be one of the following values: + * @arg @ref LL_RCC_SYSCLK_DIV_1 + * @arg @ref LL_RCC_SYSCLK_DIV_2 + * @arg @ref LL_RCC_SYSCLK_DIV_4 + * @arg @ref LL_RCC_SYSCLK_DIV_8 + * @arg @ref LL_RCC_SYSCLK_DIV_16 + * @arg @ref LL_RCC_SYSCLK_DIV_64 + * @arg @ref LL_RCC_SYSCLK_DIV_128 + * @arg @ref LL_RCC_SYSCLK_DIV_256 + * @arg @ref LL_RCC_SYSCLK_DIV_512 + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetAHBPrescaler(uint32_t Prescaler) +{ + MODIFY_REG(RCC->CFGR, RCC_CFGR_HPRE, Prescaler); +} + +/** + * @brief Set APB1 prescaler + * @rmtoll CFGR PPRE LL_RCC_SetAPB1Prescaler + * @param Prescaler This parameter can be one of the following values: + * @arg @ref LL_RCC_APB1_DIV_1 + * @arg @ref LL_RCC_APB1_DIV_2 + * @arg @ref LL_RCC_APB1_DIV_4 + * @arg @ref LL_RCC_APB1_DIV_8 + * @arg @ref LL_RCC_APB1_DIV_16 + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetAPB1Prescaler(uint32_t Prescaler) +{ + MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE, Prescaler); +} + +/** + * @brief Set HSI16 division factor + * @rmtoll CR HSIDIV LL_RCC_SetHSIDiv + * @note HSIDIV parameter is only applied to SYSCLK_Frequency when HSI is used as + * system clock source. + * @param HSIDiv This parameter can be one of the following values: + * @arg @ref LL_RCC_HSI_DIV_1 + * @arg @ref LL_RCC_HSI_DIV_2 + * @arg @ref LL_RCC_HSI_DIV_4 + * @arg @ref LL_RCC_HSI_DIV_8 + * @arg @ref LL_RCC_HSI_DIV_16 + * @arg @ref LL_RCC_HSI_DIV_32 + * @arg @ref LL_RCC_HSI_DIV_64 + * @arg @ref LL_RCC_HSI_DIV_128 + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetHSIDiv(uint32_t HSIDiv) +{ + MODIFY_REG(RCC->CR, RCC_CR_HSIDIV, HSIDiv); +} +/** + * @brief Get AHB prescaler + * @rmtoll CFGR HPRE LL_RCC_GetAHBPrescaler + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_SYSCLK_DIV_1 + * @arg @ref LL_RCC_SYSCLK_DIV_2 + * @arg @ref LL_RCC_SYSCLK_DIV_4 + * @arg @ref LL_RCC_SYSCLK_DIV_8 + * @arg @ref LL_RCC_SYSCLK_DIV_16 + * @arg @ref LL_RCC_SYSCLK_DIV_64 + * @arg @ref LL_RCC_SYSCLK_DIV_128 + * @arg @ref LL_RCC_SYSCLK_DIV_256 + * @arg @ref LL_RCC_SYSCLK_DIV_512 + */ +__STATIC_INLINE uint32_t LL_RCC_GetAHBPrescaler(void) +{ + return (uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_HPRE)); +} + +/** + * @brief Get APB1 prescaler + * @rmtoll CFGR PPRE LL_RCC_GetAPB1Prescaler + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_APB1_DIV_1 + * @arg @ref LL_RCC_APB1_DIV_2 + * @arg @ref LL_RCC_APB1_DIV_4 + * @arg @ref LL_RCC_APB1_DIV_8 + * @arg @ref LL_RCC_APB1_DIV_16 + */ +__STATIC_INLINE uint32_t LL_RCC_GetAPB1Prescaler(void) +{ + return (uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_PPRE)); +} + +/** + * @brief Get HSI16 Division factor + * @rmtoll CR HSIDIV LL_RCC_GetHSIDiv + * @note HSIDIV parameter is only applied to SYSCLK_Frequency when HSI is used as + * system clock source. + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_HSI_DIV_1 + * @arg @ref LL_RCC_HSI_DIV_2 + * @arg @ref LL_RCC_HSI_DIV_4 + * @arg @ref LL_RCC_HSI_DIV_8 + * @arg @ref LL_RCC_HSI_DIV_16 + * @arg @ref LL_RCC_HSI_DIV_32 + * @arg @ref LL_RCC_HSI_DIV_64 + * @arg @ref LL_RCC_HSI_DIV_128 + */ +__STATIC_INLINE uint32_t LL_RCC_GetHSIDiv(void) +{ + return (uint32_t)(READ_BIT(RCC->CR, RCC_CR_HSIDIV)); +} +/** + * @} + */ + +/** @defgroup RCC_LL_EF_MCO1 MCO1 + * @{ + */ + +/** + * @brief Configure MCOx + * @rmtoll CFGR MCOSEL LL_RCC_ConfigMCO\n + * CFGR MCOPRE LL_RCC_ConfigMCO + * @param MCOxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_MCO1SOURCE_NOCLOCK + * @arg @ref LL_RCC_MCO1SOURCE_SYSCLK + * @arg @ref LL_RCC_MCO1SOURCE_HSI + * @arg @ref LL_RCC_MCO1SOURCE_HSI48 (*) + * @arg @ref LL_RCC_MCO1SOURCE_HSE + * @arg @ref LL_RCC_MCO1SOURCE_PLLCLK + * @arg @ref LL_RCC_MCO1SOURCE_LSI + * @arg @ref LL_RCC_MCO1SOURCE_LSE + * @arg @ref LL_RCC_MCO1SOURCE_PLLPCLK (*) + * @arg @ref LL_RCC_MCO1SOURCE_PLLQCLK (*) + * @arg @ref LL_RCC_MCO1SOURCE_RTCCLK (*) + * @arg @ref LL_RCC_MCO1SOURCE_RTC_WKUP (*) + * + * (*) value not defined in all devices. + * @param MCOxPrescaler This parameter can be one of the following values: + * @arg @ref LL_RCC_MCO1_DIV_1 + * @arg @ref LL_RCC_MCO1_DIV_2 + * @arg @ref LL_RCC_MCO1_DIV_4 + * @arg @ref LL_RCC_MCO1_DIV_8 + * @arg @ref LL_RCC_MCO1_DIV_32 + * @arg @ref LL_RCC_MCO1_DIV_64 + * @arg @ref LL_RCC_MCO1_DIV_128 + * @retval None + */ +__STATIC_INLINE void LL_RCC_ConfigMCO(uint32_t MCOxSource, uint32_t MCOxPrescaler) +{ + MODIFY_REG(RCC->CFGR, RCC_CFGR_MCOSEL | RCC_CFGR_MCOPRE, MCOxSource | MCOxPrescaler); +} + +/** + * @} + */ + +#if defined(RCC_MCO2_SUPPORT) +/** @defgroup RCC_LL_EF_MCO2 MCO2 + * @{ + */ + +/** + * @brief Configure MCO2 + * @rmtoll CFGR MCO2SEL LL_RCC_ConfigMCO2\n + * CFGR MCO2PRE LL_RCC_ConfigMCO2 + * @note feature not available in all devices. + * @param MCOxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_MCO2SOURCE_NOCLOCK + * @arg @ref LL_RCC_MCO2SOURCE_SYSCLK + * @arg @ref LL_RCC_MCO2SOURCE_HSI + * @arg @ref LL_RCC_MCO2SOURCE_HSI48 + * @arg @ref LL_RCC_MCO2SOURCE_HSE + * @arg @ref LL_RCC_MCO2SOURCE_PLLCLK + * @arg @ref LL_RCC_MCO2SOURCE_LSI + * @arg @ref LL_RCC_MCO2SOURCE_LSE + * @arg @ref LL_RCC_MCO2SOURCE_PLLPCLK + * @arg @ref LL_RCC_MCO2SOURCE_PLLQCLK + * @arg @ref LL_RCC_MCO2SOURCE_RTCCLK + * @arg @ref LL_RCC_MCO2SOURCE_RTC_WKUP + * + * @param MCOxPrescaler This parameter can be one of the following values: + * @arg @ref LL_RCC_MCO2_DIV_1 + * @arg @ref LL_RCC_MCO2_DIV_2 + * @arg @ref LL_RCC_MCO2_DIV_4 + * @arg @ref LL_RCC_MCO2_DIV_8 + * @arg @ref LL_RCC_MCO2_DIV_16 + * @arg @ref LL_RCC_MCO2_DIV_32 + * @arg @ref LL_RCC_MCO2_DIV_64 + * @arg @ref LL_RCC_MCO2_DIV_128 + * @arg @ref LL_RCC_MCO2_DIV_256 + * @arg @ref LL_RCC_MCO2_DIV_512 + * @arg @ref LL_RCC_MCO2_DIV_1024 + * @retval None + */ +__STATIC_INLINE void LL_RCC_ConfigMCO2(uint32_t MCOxSource, uint32_t MCOxPrescaler) +{ + MODIFY_REG(RCC->CFGR, RCC_CFGR_MCO2SEL | RCC_CFGR_MCO2PRE, MCOxSource | MCOxPrescaler); +} + +/** + * @} + */ +#endif /* RCC_MCO2_SUPPORT */ + +/** @defgroup RCC_LL_EF_Peripheral_Clock_Source Peripheral Clock Source + * @{ + */ + +/** + * @brief Configure USARTx clock source + * @rmtoll CCIPR USARTxSEL LL_RCC_SetUSARTClockSource + * @param USARTxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_USART1_CLKSOURCE_PCLK1 + * @arg @ref LL_RCC_USART1_CLKSOURCE_SYSCLK + * @arg @ref LL_RCC_USART1_CLKSOURCE_HSI + * @arg @ref LL_RCC_USART1_CLKSOURCE_LSE + * @arg @ref LL_RCC_USART2_CLKSOURCE_PCLK1 + * @arg @ref LL_RCC_USART2_CLKSOURCE_SYSCLK + * @arg @ref LL_RCC_USART2_CLKSOURCE_HSI + * @arg @ref LL_RCC_USART2_CLKSOURCE_LSE + * @arg @ref LL_RCC_USART3_CLKSOURCE_PCLK1 (*) + * @arg @ref LL_RCC_USART3_CLKSOURCE_SYSCLK (*) + * @arg @ref LL_RCC_USART3_CLKSOURCE_HSI (*) + * @arg @ref LL_RCC_USART3_CLKSOURCE_LSE (*) + * + * (*) value not defined in all devices. + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetUSARTClockSource(uint32_t USARTxSource) +{ + MODIFY_REG(RCC->CCIPR, (USARTxSource >> 16U), (USARTxSource & 0x0000FFFFU)); +} + +#if defined(LPUART1) +/** + * @brief Configure LPUARTx clock source + * @rmtoll CCIPR LPUART1SEL LL_RCC_SetLPUARTClockSource + * @rmtoll CCIPR LPUART2SEL LL_RCC_SetLPUARTClockSource + * @param LPUARTxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_LPUART1_CLKSOURCE_PCLK1 + * @arg @ref LL_RCC_LPUART1_CLKSOURCE_SYSCLK + * @arg @ref LL_RCC_LPUART1_CLKSOURCE_HSI + * @arg @ref LL_RCC_LPUART1_CLKSOURCE_LSE + * @arg @ref LL_RCC_LPUART2_CLKSOURCE_PCLK1 (*) + * @arg @ref LL_RCC_LPUART2_CLKSOURCE_SYSCLK (*) + * @arg @ref LL_RCC_LPUART2_CLKSOURCE_HSI (*) + * @arg @ref LL_RCC_LPUART2_CLKSOURCE_LSE (*) + * (*) feature not available on all devices + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetLPUARTClockSource(uint32_t LPUARTxSource) +{ + MODIFY_REG(RCC->CCIPR, (LPUARTxSource >> 16U), (LPUARTxSource & 0x0000FFFFU)); +} +#endif /* LPUART1 */ + +/** + * @brief Configure I2Cx clock source + * @rmtoll CCIPR I2C1SEL LL_RCC_SetI2CClockSource + * @param I2CxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_I2C1_CLKSOURCE_PCLK1 + * @arg @ref LL_RCC_I2C1_CLKSOURCE_SYSCLK + * @arg @ref LL_RCC_I2C1_CLKSOURCE_HSI + * @arg @ref LL_RCC_I2C2_CLKSOURCE_PCLK1 (*) + * @arg @ref LL_RCC_I2C2_CLKSOURCE_SYSCLK (*) + * @arg @ref LL_RCC_I2C2_CLKSOURCE_HSI (*) + * (*) value not defined in all devices. + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetI2CClockSource(uint32_t I2CxSource) +{ + MODIFY_REG(RCC->CCIPR, (I2CxSource >> 16U), (I2CxSource & 0x0000FFFFU)); +} + +#if defined(RCC_CCIPR_TIM1SEL) || defined(RCC_CCIPR_TIM15SEL) +/** + * @brief Configure TIMx clock source + * @rmtoll CCIPR TIMxSEL LL_RCC_SetTIMClockSource + * @param TIMxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_TIM1_CLKSOURCE_PLL + * @arg @ref LL_RCC_TIM1_CLKSOURCE_PCLK1 + * @if defined(STM32G081xx) + * @arg @ref LL_RCC_TIM15_CLKSOURCE_PLL + * @arg @ref LL_RCC_TIM15_CLKSOURCE_PCLK1 + * @endif + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetTIMClockSource(uint32_t TIMxSource) +{ + MODIFY_REG(RCC->CCIPR, (TIMxSource & 0xFFFF0000U), (TIMxSource << 16)); +} +#endif /* RCC_CCIPR_TIM1SEL && RCC_CCIPR_TIM15SEL */ + +#if defined(LPTIM1) && defined(LPTIM2) +/** + * @brief Configure LPTIMx clock source + * @rmtoll CCIPR LPTIMxSEL LL_RCC_SetLPTIMClockSource + * @param LPTIMxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_PCLK1 + * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_LSI + * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_HSI + * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_LSE + * @arg @ref LL_RCC_LPTIM2_CLKSOURCE_PCLK1 + * @arg @ref LL_RCC_LPTIM2_CLKSOURCE_LSI + * @arg @ref LL_RCC_LPTIM2_CLKSOURCE_HSI + * @arg @ref LL_RCC_LPTIM2_CLKSOURCE_LSE + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetLPTIMClockSource(uint32_t LPTIMxSource) +{ + MODIFY_REG(RCC->CCIPR, (LPTIMxSource & 0xFFFF0000U), (LPTIMxSource << 16U)); +} +#endif /* LPTIM1 && LPTIM2 */ + +#if defined(CEC) +/** + * @brief Configure CEC clock source + * @rmtoll CCIPR CECSEL LL_RCC_SetCECClockSource + * @param CECxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_CEC_CLKSOURCE_HSI_DIV488 + * @arg @ref LL_RCC_CEC_CLKSOURCE_LSE + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetCECClockSource(uint32_t CECxSource) +{ + MODIFY_REG(RCC->CCIPR, RCC_CCIPR_CECSEL, CECxSource); +} +#endif /* CEC */ + +#if defined(RCC_CCIPR_RNGDIV) +/** + * @brief Configure RNG division factor + * @rmtoll CCIPR RNGDIV LL_RCC_SetRNGClockDiv + * @param RNGxDiv This parameter can be one of the following values: + * @arg @ref LL_RCC_RNG_CLK_DIV1 + * @arg @ref LL_RCC_RNG_CLK_DIV2 + * @arg @ref LL_RCC_RNG_CLK_DIV4 + * @arg @ref LL_RCC_RNG_CLK_DIV8 + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetRNGClockDiv(uint32_t RNGxDiv) +{ + MODIFY_REG(RCC->CCIPR, RCC_CCIPR_RNGDIV, RNGxDiv); +} +#endif /* RNG */ + +#if defined (RCC_CCIPR_RNGSEL) +/** + * @brief Configure RNG clock source + * @rmtoll CCIPR RNGSEL LL_RCC_SetRNGClockSource + * @param RNGxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_RNG_CLKSOURCE_NONE + * @arg @ref LL_RCC_RNG_CLKSOURCE_HSI_DIV8 + * @arg @ref LL_RCC_RNG_CLKSOURCE_SYSCLK + * @arg @ref LL_RCC_RNG_CLKSOURCE_PLL + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetRNGClockSource(uint32_t RNGxSource) +{ + MODIFY_REG(RCC->CCIPR, RCC_CCIPR_RNGSEL, RNGxSource); +} +#endif /* RNG */ + +#if defined(STM32G0C1xx) || defined(STM32G0B1xx) || defined(STM32G0B0xx) +/** + * @brief Configure USB clock source + * @rmtoll CCIPR2 CK48MSEL LL_RCC_SetUSBClockSource + * @param USBxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_USB_CLKSOURCE_HSI48 + * @arg @ref LL_RCC_USB_CLKSOURCE_HSE + * @arg @ref LL_RCC_USB_CLKSOURCE_PLL + * + * (*) value not defined in all devices. + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetUSBClockSource(uint32_t USBxSource) +{ + MODIFY_REG(RCC->CCIPR2, RCC_CCIPR2_USBSEL, USBxSource); +} +#endif /* STM32G0C1xx || STM32G0B1xx || STM32G0B0xx */ + +#if defined (FDCAN1) || defined (FDCAN2) +/** + * @brief Configure FDCAN clock source + * @rmtoll CCIPR2 FDCANSEL LL_RCC_SetFDCANClockSource + * @param FDCANxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_FDCAN_CLKSOURCE_HSE + * @arg @ref LL_RCC_FDCAN_CLKSOURCE_PCLK1 + * @arg @ref LL_RCC_FDCAN_CLKSOURCE_PLL + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetFDCANClockSource(uint32_t FDCANxSource) +{ + MODIFY_REG(RCC->CCIPR2, RCC_CCIPR2_FDCANSEL, FDCANxSource); +} +#endif /* FDCAN1 || FDCAN2 */ + +/** + * @brief Configure ADC clock source + * @rmtoll CCIPR ADCSEL LL_RCC_SetADCClockSource + * @param ADCxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_ADC_CLKSOURCE_PLL + * @arg @ref LL_RCC_ADC_CLKSOURCE_SYSCLK + * @arg @ref LL_RCC_ADC_CLKSOURCE_HSI + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetADCClockSource(uint32_t ADCxSource) +{ + MODIFY_REG(RCC->CCIPR, RCC_CCIPR_ADCSEL, ADCxSource); +} + +#if defined(STM32G0C1xx) || defined(STM32G0B1xx) || defined(STM32G0B0xx) +/** + * @brief Configure I2Sx clock source + * @rmtoll CCIPR2 I2SxSEL LL_RCC_SetI2SClockSource + * @param I2SxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_I2S1_CLKSOURCE_SYSCLK + * @arg @ref LL_RCC_I2S1_CLKSOURCE_PIN + * @arg @ref LL_RCC_I2S1_CLKSOURCE_PLL + * @arg @ref LL_RCC_I2S1_CLKSOURCE_HSI + * @arg @ref LL_RCC_I2S2_CLKSOURCE_SYSCLK + * @arg @ref LL_RCC_I2S2_CLKSOURCE_PIN + * @arg @ref LL_RCC_I2S2_CLKSOURCE_PLL + * @arg @ref LL_RCC_I2S2_CLKSOURCE_HSI + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetI2SClockSource(uint32_t I2SxSource) +{ + MODIFY_REG(RCC->CCIPR2, (I2SxSource >> 16U), (I2SxSource & 0x0000FFFFU)); +} + +#else +/** + * @brief Configure I2Sx clock source + * @rmtoll CCIPR I2S1SEL LL_RCC_SetI2SClockSource + * @param I2SxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_I2S1_CLKSOURCE_SYSCLK + * @arg @ref LL_RCC_I2S1_CLKSOURCE_PIN + * @arg @ref LL_RCC_I2S1_CLKSOURCE_PLL + * @arg @ref LL_RCC_I2S1_CLKSOURCE_HSI + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetI2SClockSource(uint32_t I2SxSource) +{ + MODIFY_REG(RCC->CCIPR, RCC_CCIPR_I2S1SEL, I2SxSource); +} +#endif /* STM32G0C1xx || STM32G0B1xx || STM32G0B0xx */ + +/** + * @brief Get USARTx clock source + * @rmtoll CCIPR USARTxSEL LL_RCC_GetUSARTClockSource + * @param USARTx This parameter can be one of the following values: + * @arg @ref LL_RCC_USART1_CLKSOURCE + * @arg @ref LL_RCC_USART2_CLKSOURCE + * @arg @ref LL_RCC_USART3_CLKSOURCE (*) + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_USART1_CLKSOURCE_PCLK1 + * @arg @ref LL_RCC_USART1_CLKSOURCE_SYSCLK + * @arg @ref LL_RCC_USART1_CLKSOURCE_HSI + * @arg @ref LL_RCC_USART1_CLKSOURCE_LSE + * @arg @ref LL_RCC_USART2_CLKSOURCE_PCLK1 + * @arg @ref LL_RCC_USART2_CLKSOURCE_SYSCLK + * @arg @ref LL_RCC_USART2_CLKSOURCE_HSI + * @arg @ref LL_RCC_USART2_CLKSOURCE_LSE + * @arg @ref LL_RCC_USART3_CLKSOURCE_PCLK1 (*) + * @arg @ref LL_RCC_USART3_CLKSOURCE_SYSCLK (*) + * @arg @ref LL_RCC_USART3_CLKSOURCE_HSI (*) + * @arg @ref LL_RCC_USART3_CLKSOURCE_LSE (*) + * (*) feature not available on all devices + */ +__STATIC_INLINE uint32_t LL_RCC_GetUSARTClockSource(uint32_t USARTx) +{ + return (uint32_t)(READ_BIT(RCC->CCIPR, USARTx) | (USARTx << 16U)); +} + +#if defined (LPUART2) || defined (LPUART1) +/** + * @brief Get LPUARTx clock source + * @rmtoll CCIPR LPUART1SEL LL_RCC_GetLPUARTClockSource\n + * CCIPR LPUART2SEL LL_RCC_GetLPUARTClockSource + * @param LPUARTx This parameter can be one of the following values: + * @arg @ref LL_RCC_LPUART1_CLKSOURCE + * @arg @ref LL_RCC_LPUART2_CLKSOURCE (*) + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_LPUART1_CLKSOURCE_PCLK1 + * @arg @ref LL_RCC_LPUART1_CLKSOURCE_SYSCLK + * @arg @ref LL_RCC_LPUART1_CLKSOURCE_HSI + * @arg @ref LL_RCC_LPUART1_CLKSOURCE_LSE + * @arg @ref LL_RCC_LPUART2_CLKSOURCE_PCLK1 (*) + * @arg @ref LL_RCC_LPUART2_CLKSOURCE_SYSCLK (*) + * @arg @ref LL_RCC_LPUART2_CLKSOURCE_HSI (*) + * @arg @ref LL_RCC_LPUART2_CLKSOURCE_LSE (*) + * (*) feature not available on all devices + */ +__STATIC_INLINE uint32_t LL_RCC_GetLPUARTClockSource(uint32_t LPUARTx) +{ + return (uint32_t)(READ_BIT(RCC->CCIPR, LPUARTx) | (LPUARTx << 16U)); +} +#endif /* LPUART2 || LPUART1 */ + +/** + * @brief Get I2Cx clock source + * @rmtoll CCIPR I2C1SEL LL_RCC_GetI2CClockSource\n + * CCIPR I2C2SEL LL_RCC_GetI2CClockSource + * @param I2Cx This parameter can be one of the following values: + * @arg @ref LL_RCC_I2C1_CLKSOURCE + * @arg @ref LL_RCC_I2C2_CLKSOURCE + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_I2C1_CLKSOURCE_PCLK1 + * @arg @ref LL_RCC_I2C1_CLKSOURCE_SYSCLK + * @arg @ref LL_RCC_I2C1_CLKSOURCE_HSI + * @arg @ref LL_RCC_I2C2_CLKSOURCE_PCLK1 + * @arg @ref LL_RCC_I2C2_CLKSOURCE_SYSCLK + * @arg @ref LL_RCC_I2C2_CLKSOURCE_HSI + */ +__STATIC_INLINE uint32_t LL_RCC_GetI2CClockSource(uint32_t I2Cx) +{ + return (uint32_t)(READ_BIT(RCC->CCIPR, I2Cx) | (I2Cx << 16U)); +} + +#if defined(RCC_CCIPR_TIM1SEL) || defined(RCC_CCIPR_TIM15SEL) +/** + * @brief Get TIMx clock source + * @rmtoll CCIPR TIMxSEL LL_RCC_GetTIMClockSource + * @param TIMx This parameter can be one of the following values: + * @arg @ref LL_RCC_TIM1_CLKSOURCE + * @arg @ref LL_RCC_TIM15_CLKSOURCE + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_TIM1_CLKSOURCE_PLL + * @arg @ref LL_RCC_TIM1_CLKSOURCE_PCLK1 + * @if defined(STM32G081xx) + * @arg @ref LL_RCC_TIM15_CLKSOURCE_PLL + * @arg @ref LL_RCC_TIM15_CLKSOURCE_PCLK1 + * @endif + */ +__STATIC_INLINE uint32_t LL_RCC_GetTIMClockSource(uint32_t TIMx) +{ + return (uint32_t)((READ_BIT(RCC->CCIPR, TIMx) >> 16U) | TIMx); +} +#endif /* RCC_CCIPR_TIM1SEL || RCC_CCIPR_TIM15SEL */ + +#if defined(LPTIM1) && defined(LPTIM2) +/** + * @brief Get LPTIMx clock source + * @rmtoll CCIPR LPTIM1SEL LL_RCC_GetLPTIMClockSource\n + CCIPR LPTIM2SEL LL_RCC_GetLPTIMClockSource + * @param LPTIMx This parameter can be one of the following values: + * @arg @ref LL_RCC_LPTIM1_CLKSOURCE + * @arg @ref LL_RCC_LPTIM2_CLKSOURCE + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_PCLK1 + * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_LSI + * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_HSI + * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_LSE + * @arg @ref LL_RCC_LPTIM2_CLKSOURCE_PCLK1 + * @arg @ref LL_RCC_LPTIM2_CLKSOURCE_LSI + * @arg @ref LL_RCC_LPTIM2_CLKSOURCE_HSI + * @arg @ref LL_RCC_LPTIM2_CLKSOURCE_LSE + */ +__STATIC_INLINE uint32_t LL_RCC_GetLPTIMClockSource(uint32_t LPTIMx) +{ + return (uint32_t)((READ_BIT(RCC->CCIPR, LPTIMx) >> 16U) | LPTIMx); +} +#endif /* LPTIM1 && LPTIM2 */ + +#if defined (RCC_CCIPR_CECSEL) +/** + * @brief Get CEC clock source + * @rmtoll CCIPR CECSEL LL_RCC_GetCECClockSource + * @param CECx This parameter can be one of the following values: + * @arg @ref LL_RCC_CEC_CLKSOURCE + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_CEC_CLKSOURCE_HSI_DIV488 + * @arg @ref LL_RCC_CEC_CLKSOURCE_LSE + */ +__STATIC_INLINE uint32_t LL_RCC_GetCECClockSource(uint32_t CECx) +{ + return (uint32_t)(READ_BIT(RCC->CCIPR, CECx)); +} +#endif /* CEC */ + +#if defined(RCC_CCIPR2_FDCANSEL) +/** + * @brief Get FDCAN clock source + * @rmtoll CCIPR2 FDCANSEL LL_RCC_GetFDCANClockSource + * @param FDCANx This parameter can be one of the following values: + * @arg @ref LL_RCC_FDCAN_CLKSOURCE + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_FDCAN_CLKSOURCE_PCLK1 + * @arg @ref LL_RCC_FDCAN_CLKSOURCE_HSE + */ +__STATIC_INLINE uint32_t LL_RCC_GetFDCANClockSource(uint32_t FDCANx) +{ + return (uint32_t)(READ_BIT(RCC->CCIPR2, FDCANx)); +} +#endif /* RCC_CCIPR2_FDCANSEL */ + +#if defined(RNG) +/** + * @brief Get RNGx clock source + * @rmtoll CCIPR RNGSEL LL_RCC_GetRNGClockSource + * @param RNGx This parameter can be one of the following values: + * @arg @ref LL_RCC_RNG_CLKSOURCE + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_RNG_CLKSOURCE_NONE + * @arg @ref LL_RCC_RNG_CLKSOURCE_HSI_DIV8 + * @arg @ref LL_RCC_RNG_CLKSOURCE_SYSCLK + * @arg @ref LL_RCC_RNG_CLKSOURCE_PLL + */ +__STATIC_INLINE uint32_t LL_RCC_GetRNGClockSource(uint32_t RNGx) +{ + return (uint32_t)(READ_BIT(RCC->CCIPR, RNGx)); +} +#endif /* RNG */ + +#if defined(RNG) +/** + * @brief Get RNGx clock division factor + * @rmtoll CCIPR RNGDIV LL_RCC_GetRNGClockDiv + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_RNG_CLK_DIV1 + * @arg @ref LL_RCC_RNG_CLK_DIV2 + * @arg @ref LL_RCC_RNG_CLK_DIV4 + * @arg @ref LL_RCC_RNG_CLK_DIV8 + */ +__STATIC_INLINE uint32_t LL_RCC_GetRNGClockDiv(void) +{ + return (uint32_t)(READ_BIT(RCC->CCIPR, RCC_CCIPR_RNGDIV)); +} +#endif /* RNG */ + +#if defined(STM32G0C1xx) || defined(STM32G0B1xx) || defined(STM32G0B0xx) +/** + * @brief Get USBx clock source + * @rmtoll CCIPR2 CK48MSEL LL_RCC_GetUSBClockSource + * @param USBx This parameter can be one of the following values: + * @arg @ref LL_RCC_USB_CLKSOURCE + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_USB_CLKSOURCE_HSI48 + * @arg @ref LL_RCC_USB_CLKSOURCE_PLL + */ +__STATIC_INLINE uint32_t LL_RCC_GetUSBClockSource(uint32_t USBx) +{ + return (uint32_t)(READ_BIT(RCC->CCIPR2, USBx)); +} +#endif /* STM32G0C1xx || STM32G0B1xx || STM32G0B0xx */ + +/** + * @brief Get ADCx clock source + * @rmtoll CCIPR ADCSEL LL_RCC_GetADCClockSource + * @param ADCx This parameter can be one of the following values: + * @arg @ref LL_RCC_ADC_CLKSOURCE + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_ADC_CLKSOURCE_HSI + * @arg @ref LL_RCC_ADC_CLKSOURCE_PLL + * @arg @ref LL_RCC_ADC_CLKSOURCE_SYSCLK + */ +__STATIC_INLINE uint32_t LL_RCC_GetADCClockSource(uint32_t ADCx) +{ + return (uint32_t)(READ_BIT(RCC->CCIPR, ADCx)); +} + +#if defined(STM32G0C1xx) || defined(STM32G0B1xx) || defined(STM32G0B0xx) +/** + * @brief Get I2Sx clock source + * @rmtoll CCIPR2 I2S1SEL LL_RCC_GetI2SClockSource\n + * CCIPR2 I2S2SEL LL_RCC_GetI2SClockSource + * @param I2Sx This parameter can be one of the following values: + * @arg @ref LL_RCC_I2S1_CLKSOURCE + * @arg @ref LL_RCC_I2S2_CLKSOURCE + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_I2S1_CLKSOURCE_PIN + * @arg @ref LL_RCC_I2S1_CLKSOURCE_SYSCLK + * @arg @ref LL_RCC_I2S1_CLKSOURCE_HSI + * @arg @ref LL_RCC_I2S1_CLKSOURCE_PLL + * @arg @ref LL_RCC_I2S2_CLKSOURCE_PIN + * @arg @ref LL_RCC_I2S2_CLKSOURCE_SYSCLK + * @arg @ref LL_RCC_I2S2_CLKSOURCE_HSI + * @arg @ref LL_RCC_I2S2_CLKSOURCE_PLL + */ +__STATIC_INLINE uint32_t LL_RCC_GetI2SClockSource(uint32_t I2Sx) +{ + return (uint32_t)(READ_BIT(RCC->CCIPR2, I2Sx) | (I2Sx << 16U)); +} +#else +/** + * @brief Get I2Sx clock source + * @rmtoll CCIPR I2S1SEL LL_RCC_GetI2SClockSource + * @param I2Sx This parameter can be one of the following values: + * @arg @ref LL_RCC_I2S1_CLKSOURCE + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_I2S1_CLKSOURCE_PIN + * @arg @ref LL_RCC_I2S1_CLKSOURCE_SYSCLK + * @arg @ref LL_RCC_I2S1_CLKSOURCE_HSI + * @arg @ref LL_RCC_I2S1_CLKSOURCE_PLL + */ +__STATIC_INLINE uint32_t LL_RCC_GetI2SClockSource(uint32_t I2Sx) +{ + return (uint32_t)(READ_BIT(RCC->CCIPR, I2Sx)); +} +#endif /* STM32G0C1xx || STM32G0B1xx || STM32G0B0xx */ +/** + * @} + */ + +/** @defgroup RCC_LL_EF_RTC RTC + * @{ + */ + +/** + * @brief Set RTC Clock Source + * @note Once the RTC clock source has been selected, it cannot be changed anymore unless + * the Backup domain is reset, or unless a failure is detected on LSE (LSECSSD is + * set). The BDRST bit can be used to reset them. + * @rmtoll BDCR RTCSEL LL_RCC_SetRTCClockSource + * @param Source This parameter can be one of the following values: + * @arg @ref LL_RCC_RTC_CLKSOURCE_NONE + * @arg @ref LL_RCC_RTC_CLKSOURCE_LSE + * @arg @ref LL_RCC_RTC_CLKSOURCE_LSI + * @arg @ref LL_RCC_RTC_CLKSOURCE_HSE_DIV32 + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetRTCClockSource(uint32_t Source) +{ + MODIFY_REG(RCC->BDCR, RCC_BDCR_RTCSEL, Source); +} + +/** + * @brief Get RTC Clock Source + * @rmtoll BDCR RTCSEL LL_RCC_GetRTCClockSource + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_RTC_CLKSOURCE_NONE + * @arg @ref LL_RCC_RTC_CLKSOURCE_LSE + * @arg @ref LL_RCC_RTC_CLKSOURCE_LSI + * @arg @ref LL_RCC_RTC_CLKSOURCE_HSE_DIV32 + */ +__STATIC_INLINE uint32_t LL_RCC_GetRTCClockSource(void) +{ + return (uint32_t)(READ_BIT(RCC->BDCR, RCC_BDCR_RTCSEL)); +} + +/** + * @brief Enable RTC + * @rmtoll BDCR RTCEN LL_RCC_EnableRTC + * @retval None + */ +__STATIC_INLINE void LL_RCC_EnableRTC(void) +{ + SET_BIT(RCC->BDCR, RCC_BDCR_RTCEN); +} + +/** + * @brief Disable RTC + * @rmtoll BDCR RTCEN LL_RCC_DisableRTC + * @retval None + */ +__STATIC_INLINE void LL_RCC_DisableRTC(void) +{ + CLEAR_BIT(RCC->BDCR, RCC_BDCR_RTCEN); +} + +/** + * @brief Check if RTC has been enabled or not + * @rmtoll BDCR RTCEN LL_RCC_IsEnabledRTC + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsEnabledRTC(void) +{ + return ((READ_BIT(RCC->BDCR, RCC_BDCR_RTCEN) == (RCC_BDCR_RTCEN)) ? 1UL : 0UL); +} + +/** + * @brief Force the Backup domain reset + * @rmtoll BDCR BDRST LL_RCC_ForceBackupDomainReset + * @retval None + */ +__STATIC_INLINE void LL_RCC_ForceBackupDomainReset(void) +{ + SET_BIT(RCC->BDCR, RCC_BDCR_BDRST); +} + +/** + * @brief Release the Backup domain reset + * @rmtoll BDCR BDRST LL_RCC_ReleaseBackupDomainReset + * @retval None + */ +__STATIC_INLINE void LL_RCC_ReleaseBackupDomainReset(void) +{ + CLEAR_BIT(RCC->BDCR, RCC_BDCR_BDRST); +} + +/** + * @} + */ + + +/** @defgroup RCC_LL_EF_PLL PLL + * @{ + */ + +/** + * @brief Enable PLL + * @rmtoll CR PLLON LL_RCC_PLL_Enable + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLL_Enable(void) +{ + SET_BIT(RCC->CR, RCC_CR_PLLON); +} + +/** + * @brief Disable PLL + * @note Cannot be disabled if the PLL clock is used as the system clock + * @rmtoll CR PLLON LL_RCC_PLL_Disable + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLL_Disable(void) +{ + CLEAR_BIT(RCC->CR, RCC_CR_PLLON); +} + +/** + * @brief Check if PLL Ready + * @rmtoll CR PLLRDY LL_RCC_PLL_IsReady + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_PLL_IsReady(void) +{ + return ((READ_BIT(RCC->CR, RCC_CR_PLLRDY) == (RCC_CR_PLLRDY)) ? 1UL : 0UL); +} + +/** + * @brief Configure PLL used for SYSCLK Domain + * @note PLL Source and PLLM Divider can be written only when PLL is disabled + * @note PLLN/PLLR can be written only when PLL is disabled + * @rmtoll PLLCFGR PLLSRC LL_RCC_PLL_ConfigDomain_SYS\n + * PLLCFGR PLLM LL_RCC_PLL_ConfigDomain_SYS\n + * PLLCFGR PLLN LL_RCC_PLL_ConfigDomain_SYS\n + * PLLCFGR PLLR LL_RCC_PLL_ConfigDomain_SYS + * @param Source This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSOURCE_NONE + * @arg @ref LL_RCC_PLLSOURCE_HSI + * @arg @ref LL_RCC_PLLSOURCE_HSE + * @param PLLM This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLM_DIV_1 + * @arg @ref LL_RCC_PLLM_DIV_2 + * @arg @ref LL_RCC_PLLM_DIV_3 + * @arg @ref LL_RCC_PLLM_DIV_4 + * @arg @ref LL_RCC_PLLM_DIV_5 + * @arg @ref LL_RCC_PLLM_DIV_6 + * @arg @ref LL_RCC_PLLM_DIV_7 + * @arg @ref LL_RCC_PLLM_DIV_8 + * @param PLLN Between 8 and 86 + * @param PLLR This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLR_DIV_2 + * @arg @ref LL_RCC_PLLR_DIV_3 + * @arg @ref LL_RCC_PLLR_DIV_4 + * @arg @ref LL_RCC_PLLR_DIV_5 + * @arg @ref LL_RCC_PLLR_DIV_6 + * @arg @ref LL_RCC_PLLR_DIV_7 + * @arg @ref LL_RCC_PLLR_DIV_8 + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLL_ConfigDomain_SYS(uint32_t Source, uint32_t PLLM, uint32_t PLLN, uint32_t PLLR) +{ + MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC | RCC_PLLCFGR_PLLM | RCC_PLLCFGR_PLLN | RCC_PLLCFGR_PLLR, + Source | PLLM | (PLLN << RCC_PLLCFGR_PLLN_Pos) | PLLR); +} + +/** + * @brief Configure PLL used for ADC domain clock + * @note PLL Source and PLLM Divider can be written only when PLL is disabled + * @note PLLN/PLLP can be written only when PLL is disabled + * @note User shall verify whether the PLL configuration is not done through + * other functions (ex: I2S1) + * @note This can be selected for ADC + * @rmtoll PLLCFGR PLLSRC LL_RCC_PLL_ConfigDomain_ADC\n + * PLLCFGR PLLM LL_RCC_PLL_ConfigDomain_ADC\n + * PLLCFGR PLLN LL_RCC_PLL_ConfigDomain_ADC\n + * PLLCFGR PLLP LL_RCC_PLL_ConfigDomain_ADC + * @param Source This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSOURCE_NONE + * @arg @ref LL_RCC_PLLSOURCE_HSI + * @arg @ref LL_RCC_PLLSOURCE_HSE + * @param PLLM This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLM_DIV_1 + * @arg @ref LL_RCC_PLLM_DIV_2 + * @arg @ref LL_RCC_PLLM_DIV_3 + * @arg @ref LL_RCC_PLLM_DIV_4 + * @arg @ref LL_RCC_PLLM_DIV_5 + * @arg @ref LL_RCC_PLLM_DIV_6 + * @arg @ref LL_RCC_PLLM_DIV_7 + * @arg @ref LL_RCC_PLLM_DIV_8 + * @param PLLN Between 8 and 86 + * @param PLLP This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLP_DIV_2 + * @arg @ref LL_RCC_PLLP_DIV_3 + * @arg @ref LL_RCC_PLLP_DIV_4 + * @arg @ref LL_RCC_PLLP_DIV_5 + * @arg @ref LL_RCC_PLLP_DIV_6 + * @arg @ref LL_RCC_PLLP_DIV_7 + * @arg @ref LL_RCC_PLLP_DIV_8 + * @arg @ref LL_RCC_PLLP_DIV_9 + * @arg @ref LL_RCC_PLLP_DIV_10 + * @arg @ref LL_RCC_PLLP_DIV_11 + * @arg @ref LL_RCC_PLLP_DIV_12 + * @arg @ref LL_RCC_PLLP_DIV_13 + * @arg @ref LL_RCC_PLLP_DIV_14 + * @arg @ref LL_RCC_PLLP_DIV_15 + * @arg @ref LL_RCC_PLLP_DIV_16 + * @arg @ref LL_RCC_PLLP_DIV_17 + * @arg @ref LL_RCC_PLLP_DIV_18 + * @arg @ref LL_RCC_PLLP_DIV_19 + * @arg @ref LL_RCC_PLLP_DIV_20 + * @arg @ref LL_RCC_PLLP_DIV_21 + * @arg @ref LL_RCC_PLLP_DIV_22 + * @arg @ref LL_RCC_PLLP_DIV_23 + * @arg @ref LL_RCC_PLLP_DIV_24 + * @arg @ref LL_RCC_PLLP_DIV_25 + * @arg @ref LL_RCC_PLLP_DIV_26 + * @arg @ref LL_RCC_PLLP_DIV_27 + * @arg @ref LL_RCC_PLLP_DIV_28 + * @arg @ref LL_RCC_PLLP_DIV_29 + * @arg @ref LL_RCC_PLLP_DIV_30 + * @arg @ref LL_RCC_PLLP_DIV_31 + * @arg @ref LL_RCC_PLLP_DIV_32 + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLL_ConfigDomain_ADC(uint32_t Source, uint32_t PLLM, uint32_t PLLN, uint32_t PLLP) +{ + MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC | RCC_PLLCFGR_PLLM | RCC_PLLCFGR_PLLN | RCC_PLLCFGR_PLLP, + Source | PLLM | (PLLN << RCC_PLLCFGR_PLLN_Pos) | PLLP); +} + +/** + * @brief Configure PLL used for I2S1 domain clock + * @note PLL Source and PLLM Divider can be written only when PLL is disabled + * @note PLLN/PLLP can be written only when PLL is disabled + * @note User shall verify whether the PLL configuration is not done through + * other functions (ex: ADC) + * @note This can be selected for I2S1 + * @rmtoll PLLCFGR PLLSRC LL_RCC_PLL_ConfigDomain_I2S1\n + * PLLCFGR PLLM LL_RCC_PLL_ConfigDomain_I2S1\n + * PLLCFGR PLLN LL_RCC_PLL_ConfigDomain_I2S1\n + * PLLCFGR PLLP LL_RCC_PLL_ConfigDomain_I2S1 + * @param Source This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSOURCE_NONE + * @arg @ref LL_RCC_PLLSOURCE_HSI + * @arg @ref LL_RCC_PLLSOURCE_HSE + * @param PLLM This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLM_DIV_1 + * @arg @ref LL_RCC_PLLM_DIV_2 + * @arg @ref LL_RCC_PLLM_DIV_3 + * @arg @ref LL_RCC_PLLM_DIV_4 + * @arg @ref LL_RCC_PLLM_DIV_5 + * @arg @ref LL_RCC_PLLM_DIV_6 + * @arg @ref LL_RCC_PLLM_DIV_7 + * @arg @ref LL_RCC_PLLM_DIV_8 + * @param PLLN Between 8 and 86 + * @param PLLP This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLP_DIV_2 + * @arg @ref LL_RCC_PLLP_DIV_3 + * @arg @ref LL_RCC_PLLP_DIV_4 + * @arg @ref LL_RCC_PLLP_DIV_5 + * @arg @ref LL_RCC_PLLP_DIV_6 + * @arg @ref LL_RCC_PLLP_DIV_7 + * @arg @ref LL_RCC_PLLP_DIV_8 + * @arg @ref LL_RCC_PLLP_DIV_9 + * @arg @ref LL_RCC_PLLP_DIV_10 + * @arg @ref LL_RCC_PLLP_DIV_11 + * @arg @ref LL_RCC_PLLP_DIV_12 + * @arg @ref LL_RCC_PLLP_DIV_13 + * @arg @ref LL_RCC_PLLP_DIV_14 + * @arg @ref LL_RCC_PLLP_DIV_15 + * @arg @ref LL_RCC_PLLP_DIV_16 + * @arg @ref LL_RCC_PLLP_DIV_17 + * @arg @ref LL_RCC_PLLP_DIV_18 + * @arg @ref LL_RCC_PLLP_DIV_19 + * @arg @ref LL_RCC_PLLP_DIV_20 + * @arg @ref LL_RCC_PLLP_DIV_21 + * @arg @ref LL_RCC_PLLP_DIV_22 + * @arg @ref LL_RCC_PLLP_DIV_23 + * @arg @ref LL_RCC_PLLP_DIV_24 + * @arg @ref LL_RCC_PLLP_DIV_25 + * @arg @ref LL_RCC_PLLP_DIV_26 + * @arg @ref LL_RCC_PLLP_DIV_27 + * @arg @ref LL_RCC_PLLP_DIV_28 + * @arg @ref LL_RCC_PLLP_DIV_29 + * @arg @ref LL_RCC_PLLP_DIV_30 + * @arg @ref LL_RCC_PLLP_DIV_31 + * @arg @ref LL_RCC_PLLP_DIV_32 + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLL_ConfigDomain_I2S1(uint32_t Source, uint32_t PLLM, uint32_t PLLN, uint32_t PLLP) +{ + MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC | RCC_PLLCFGR_PLLM | RCC_PLLCFGR_PLLN | RCC_PLLCFGR_PLLP, + Source | PLLM | (PLLN << RCC_PLLCFGR_PLLN_Pos) | PLLP); +} + +#if defined(RCC_CCIPR2_I2S2SEL) +/** + * @brief Configure PLL used for I2S2 domain clock + * @note PLL Source and PLLM Divider can be written only when PLL is disabled + * @note PLLN/PLLP can be written only when PLL is disabled + * @note User shall verify whether the PLL configuration is not done through + * other functions (ex: ADC) + * @note This can be selected for I2S2 + * @rmtoll PLLCFGR PLLSRC LL_RCC_PLL_ConfigDomain_I2S2\n + * PLLCFGR PLLM LL_RCC_PLL_ConfigDomain_I2S2\n + * PLLCFGR PLLN LL_RCC_PLL_ConfigDomain_I2S2\n + * PLLCFGR PLLP LL_RCC_PLL_ConfigDomain_I2S2 + * @param Source This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSOURCE_NONE + * @arg @ref LL_RCC_PLLSOURCE_HSI + * @arg @ref LL_RCC_PLLSOURCE_HSE + * @param PLLM This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLM_DIV_1 + * @arg @ref LL_RCC_PLLM_DIV_2 + * @arg @ref LL_RCC_PLLM_DIV_3 + * @arg @ref LL_RCC_PLLM_DIV_4 + * @arg @ref LL_RCC_PLLM_DIV_5 + * @arg @ref LL_RCC_PLLM_DIV_6 + * @arg @ref LL_RCC_PLLM_DIV_7 + * @arg @ref LL_RCC_PLLM_DIV_8 + * @param PLLN Between 8 and 86 + * @param PLLP This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLP_DIV_2 + * @arg @ref LL_RCC_PLLP_DIV_3 + * @arg @ref LL_RCC_PLLP_DIV_4 + * @arg @ref LL_RCC_PLLP_DIV_5 + * @arg @ref LL_RCC_PLLP_DIV_6 + * @arg @ref LL_RCC_PLLP_DIV_7 + * @arg @ref LL_RCC_PLLP_DIV_8 + * @arg @ref LL_RCC_PLLP_DIV_9 + * @arg @ref LL_RCC_PLLP_DIV_10 + * @arg @ref LL_RCC_PLLP_DIV_11 + * @arg @ref LL_RCC_PLLP_DIV_12 + * @arg @ref LL_RCC_PLLP_DIV_13 + * @arg @ref LL_RCC_PLLP_DIV_14 + * @arg @ref LL_RCC_PLLP_DIV_15 + * @arg @ref LL_RCC_PLLP_DIV_16 + * @arg @ref LL_RCC_PLLP_DIV_17 + * @arg @ref LL_RCC_PLLP_DIV_18 + * @arg @ref LL_RCC_PLLP_DIV_19 + * @arg @ref LL_RCC_PLLP_DIV_20 + * @arg @ref LL_RCC_PLLP_DIV_21 + * @arg @ref LL_RCC_PLLP_DIV_22 + * @arg @ref LL_RCC_PLLP_DIV_23 + * @arg @ref LL_RCC_PLLP_DIV_24 + * @arg @ref LL_RCC_PLLP_DIV_25 + * @arg @ref LL_RCC_PLLP_DIV_26 + * @arg @ref LL_RCC_PLLP_DIV_27 + * @arg @ref LL_RCC_PLLP_DIV_28 + * @arg @ref LL_RCC_PLLP_DIV_29 + * @arg @ref LL_RCC_PLLP_DIV_30 + * @arg @ref LL_RCC_PLLP_DIV_31 + * @arg @ref LL_RCC_PLLP_DIV_32 + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLL_ConfigDomain_I2S2(uint32_t Source, uint32_t PLLM, uint32_t PLLN, uint32_t PLLP) +{ + MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC | RCC_PLLCFGR_PLLM | RCC_PLLCFGR_PLLN | RCC_PLLCFGR_PLLP, + Source | PLLM | (PLLN << RCC_PLLCFGR_PLLN_Pos) | PLLP); +} +#endif /* RCC_CCIPR2_I2S2SEL */ + +#if defined(RNG) +/** + * @brief Configure PLL used for RNG domain clock + * @note PLL Source and PLLM Divider can be written only when PLL is disabled + * @note PLLN/PLLQ can be written only when PLL is disabled + * @note User shall verify whether the PLL configuration is not done through + * other functions (ex: TIM1, TIM15) + * @note This can be selected for RNG + * @rmtoll PLLCFGR PLLSRC LL_RCC_PLL_ConfigDomain_RNG\n + * PLLCFGR PLLM LL_RCC_PLL_ConfigDomain_RNG\n + * PLLCFGR PLLN LL_RCC_PLL_ConfigDomain_RNG\n + * PLLCFGR PLLQ LL_RCC_PLL_ConfigDomain_RNG + * @param Source This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSOURCE_NONE + * @arg @ref LL_RCC_PLLSOURCE_HSI + * @arg @ref LL_RCC_PLLSOURCE_HSE + * @param PLLM This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLM_DIV_1 + * @arg @ref LL_RCC_PLLM_DIV_2 + * @arg @ref LL_RCC_PLLM_DIV_3 + * @arg @ref LL_RCC_PLLM_DIV_4 + * @arg @ref LL_RCC_PLLM_DIV_5 + * @arg @ref LL_RCC_PLLM_DIV_6 + * @arg @ref LL_RCC_PLLM_DIV_7 + * @arg @ref LL_RCC_PLLM_DIV_8 + * @param PLLN Between 8 and 86 + * @param PLLQ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLQ_DIV_2 + * @arg @ref LL_RCC_PLLQ_DIV_3 + * @arg @ref LL_RCC_PLLQ_DIV_4 + * @arg @ref LL_RCC_PLLQ_DIV_5 + * @arg @ref LL_RCC_PLLQ_DIV_6 + * @arg @ref LL_RCC_PLLQ_DIV_7 + * @arg @ref LL_RCC_PLLQ_DIV_8 + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLL_ConfigDomain_RNG(uint32_t Source, uint32_t PLLM, uint32_t PLLN, uint32_t PLLQ) +{ + MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC | RCC_PLLCFGR_PLLM | RCC_PLLCFGR_PLLN | RCC_PLLCFGR_PLLQ, + Source | PLLM | (PLLN << RCC_PLLCFGR_PLLN_Pos) | PLLQ); +} +#endif /* RNG */ + +#if defined(FDCAN1) || defined(FDCAN2) +/** + * @brief Configure PLL used for FDCAN domain clock + * @note PLL Source and PLLM Divider can be written only when PLL is disabled + * @note PLLN/PLLQ can be written only when PLL is disabled + * @note User shall verify whether the PLL configuration is not done through + * other functions (ex: TIM1, TIM15) + * @note This can be selected for FDCAN + * @rmtoll PLLCFGR PLLSRC LL_RCC_PLL_ConfigDomain_FDCAN\n + * PLLCFGR PLLM LL_RCC_PLL_ConfigDomain_FDCAN\n + * PLLCFGR PLLN LL_RCC_PLL_ConfigDomain_FDCAN\n + * PLLCFGR PLLQ LL_RCC_PLL_ConfigDomain_FDCAN + * @param Source This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSOURCE_NONE + * @arg @ref LL_RCC_PLLSOURCE_HSI + * @arg @ref LL_RCC_PLLSOURCE_HSE + * @param PLLM This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLM_DIV_1 + * @arg @ref LL_RCC_PLLM_DIV_2 + * @arg @ref LL_RCC_PLLM_DIV_3 + * @arg @ref LL_RCC_PLLM_DIV_4 + * @arg @ref LL_RCC_PLLM_DIV_5 + * @arg @ref LL_RCC_PLLM_DIV_6 + * @arg @ref LL_RCC_PLLM_DIV_7 + * @arg @ref LL_RCC_PLLM_DIV_8 + * @param PLLN Between 8 and 86 + * @param PLLQ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLQ_DIV_2 + * @arg @ref LL_RCC_PLLQ_DIV_3 + * @arg @ref LL_RCC_PLLQ_DIV_4 + * @arg @ref LL_RCC_PLLQ_DIV_5 + * @arg @ref LL_RCC_PLLQ_DIV_6 + * @arg @ref LL_RCC_PLLQ_DIV_7 + * @arg @ref LL_RCC_PLLQ_DIV_8 + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLL_ConfigDomain_FDCAN(uint32_t Source, uint32_t PLLM, uint32_t PLLN, uint32_t PLLQ) +{ + MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC | RCC_PLLCFGR_PLLM | RCC_PLLCFGR_PLLN | RCC_PLLCFGR_PLLQ, + Source | PLLM | (PLLN << RCC_PLLCFGR_PLLN_Pos) | PLLQ); +} +#endif /* FDCAN1 || FDCAN2 */ + +#if defined(STM32G0C1xx) || defined(STM32G0B1xx) || defined(STM32G0B0xx) +/** + * @brief Configure PLL used for USB domain clock + * @note PLL Source and PLLM Divider can be written only when PLL is disabled + * @note PLLN/PLLQ can be written only when PLL is disabled + * @note User shall verify whether the PLL configuration is not done through + * other functions (ex: TIM1, TIM15) + * @note This can be selected for USB + * @rmtoll PLLCFGR PLLSRC LL_RCC_PLL_ConfigDomain_USB\n + * PLLCFGR PLLM LL_RCC_PLL_ConfigDomain_USB\n + * PLLCFGR PLLN LL_RCC_PLL_ConfigDomain_USB\n + * PLLCFGR PLLQ LL_RCC_PLL_ConfigDomain_USB + * @param Source This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSOURCE_NONE + * @arg @ref LL_RCC_PLLSOURCE_HSI + * @arg @ref LL_RCC_PLLSOURCE_HSE + * @param PLLM This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLM_DIV_1 + * @arg @ref LL_RCC_PLLM_DIV_2 + * @arg @ref LL_RCC_PLLM_DIV_3 + * @arg @ref LL_RCC_PLLM_DIV_4 + * @arg @ref LL_RCC_PLLM_DIV_5 + * @arg @ref LL_RCC_PLLM_DIV_6 + * @arg @ref LL_RCC_PLLM_DIV_7 + * @arg @ref LL_RCC_PLLM_DIV_8 + * @param PLLN Between 8 and 86 + * @param PLLQ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLQ_DIV_2 + * @arg @ref LL_RCC_PLLQ_DIV_3 + * @arg @ref LL_RCC_PLLQ_DIV_4 + * @arg @ref LL_RCC_PLLQ_DIV_5 + * @arg @ref LL_RCC_PLLQ_DIV_6 + * @arg @ref LL_RCC_PLLQ_DIV_7 + * @arg @ref LL_RCC_PLLQ_DIV_8 + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLL_ConfigDomain_USB(uint32_t Source, uint32_t PLLM, uint32_t PLLN, uint32_t PLLQ) +{ + MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC | RCC_PLLCFGR_PLLM | RCC_PLLCFGR_PLLN | RCC_PLLCFGR_PLLQ, + Source | PLLM | (PLLN << RCC_PLLCFGR_PLLN_Pos) | PLLQ); +} +#endif /* STM32G0C1xx || STM32G0B1xx || STM32G0B0xx */ + +#if defined(RCC_PLLQ_SUPPORT) +/** + * @brief Configure PLL used for TIM1 domain clock + * @note PLL Source and PLLM Divider can be written only when PLL is disabled + * @note PLLN/PLLQ can be written only when PLL is disabled + * @note User shall verify whether the PLL configuration is not done through + * other functions (ex: RNG, TIM15) + * @note This can be selected for TIM1 + * @rmtoll PLLCFGR PLLSRC LL_RCC_PLL_ConfigDomain_TIM1\n + * PLLCFGR PLLM LL_RCC_PLL_ConfigDomain_TIM1\n + * PLLCFGR PLLN LL_RCC_PLL_ConfigDomain_TIM1\n + * PLLCFGR PLLQ LL_RCC_PLL_ConfigDomain_TIM1 + * @param Source This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSOURCE_NONE + * @arg @ref LL_RCC_PLLSOURCE_HSI + * @arg @ref LL_RCC_PLLSOURCE_HSE + * @param PLLM This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLM_DIV_1 + * @arg @ref LL_RCC_PLLM_DIV_2 + * @arg @ref LL_RCC_PLLM_DIV_3 + * @arg @ref LL_RCC_PLLM_DIV_4 + * @arg @ref LL_RCC_PLLM_DIV_5 + * @arg @ref LL_RCC_PLLM_DIV_6 + * @arg @ref LL_RCC_PLLM_DIV_7 + * @arg @ref LL_RCC_PLLM_DIV_8 + * @param PLLN Between 8 and 86 + * @param PLLQ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLQ_DIV_2 + * @arg @ref LL_RCC_PLLQ_DIV_3 + * @arg @ref LL_RCC_PLLQ_DIV_4 + * @arg @ref LL_RCC_PLLQ_DIV_5 + * @arg @ref LL_RCC_PLLQ_DIV_6 + * @arg @ref LL_RCC_PLLQ_DIV_7 + * @arg @ref LL_RCC_PLLQ_DIV_8 + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLL_ConfigDomain_TIM1(uint32_t Source, uint32_t PLLM, uint32_t PLLN, uint32_t PLLQ) +{ + MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC | RCC_PLLCFGR_PLLM | RCC_PLLCFGR_PLLN | RCC_PLLCFGR_PLLQ, + Source | PLLM | (PLLN << RCC_PLLCFGR_PLLN_Pos) | PLLQ); +} +#endif /* RCC_PLLQ_SUPPORT */ + +#if defined(RCC_PLLQ_SUPPORT) && defined(TIM15) +/** + * @brief Configure PLL used for TIM15 domain clock + * @note PLL Source and PLLM Divider can be written only when PLL is disabled + * @note PLLN/PLLQ can be written only when PLL is disabled + * @note User shall verify whether the PLL configuration is not done through + * other functions (ex: RNG, TIM1) + * @note This can be selected for TIM15 + * @rmtoll PLLCFGR PLLSRC LL_RCC_PLL_ConfigDomain_TIM15\n + * PLLCFGR PLLM LL_RCC_PLL_ConfigDomain_TIM15\n + * PLLCFGR PLLN LL_RCC_PLL_ConfigDomain_TIM15\n + * PLLCFGR PLLQ LL_RCC_PLL_ConfigDomain_TIM15 + * @param Source This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSOURCE_NONE + * @arg @ref LL_RCC_PLLSOURCE_HSI + * @arg @ref LL_RCC_PLLSOURCE_HSE + * @param PLLM This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLM_DIV_1 + * @arg @ref LL_RCC_PLLM_DIV_2 + * @arg @ref LL_RCC_PLLM_DIV_3 + * @arg @ref LL_RCC_PLLM_DIV_4 + * @arg @ref LL_RCC_PLLM_DIV_5 + * @arg @ref LL_RCC_PLLM_DIV_6 + * @arg @ref LL_RCC_PLLM_DIV_7 + * @arg @ref LL_RCC_PLLM_DIV_8 + * @param PLLN Between 8 and 86 + * @param PLLQ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLQ_DIV_2 + * @arg @ref LL_RCC_PLLQ_DIV_3 + * @arg @ref LL_RCC_PLLQ_DIV_4 + * @arg @ref LL_RCC_PLLQ_DIV_5 + * @arg @ref LL_RCC_PLLQ_DIV_6 + * @arg @ref LL_RCC_PLLQ_DIV_7 + * @arg @ref LL_RCC_PLLQ_DIV_8 + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLL_ConfigDomain_TIM15(uint32_t Source, uint32_t PLLM, uint32_t PLLN, uint32_t PLLQ) +{ + MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC | RCC_PLLCFGR_PLLM | RCC_PLLCFGR_PLLN | RCC_PLLCFGR_PLLQ, + Source | PLLM | (PLLN << RCC_PLLCFGR_PLLN_Pos) | PLLQ); +} +#endif /* RCC_PLLQ_SUPPORT && TIM15 */ + +/** + * @brief Get Main PLL multiplication factor for VCO + * @rmtoll PLLCFGR PLLN LL_RCC_PLL_GetN + * @retval Between 8 and 86 + */ +__STATIC_INLINE uint32_t LL_RCC_PLL_GetN(void) +{ + return (uint32_t)(READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos); +} + +/** + * @brief Get Main PLL division factor for PLLP + * @note used for PLLPCLK (ADC & I2S clock) + * @rmtoll PLLCFGR PLLP LL_RCC_PLL_GetP + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_PLLP_DIV_2 + * @arg @ref LL_RCC_PLLP_DIV_3 + * @arg @ref LL_RCC_PLLP_DIV_4 + * @arg @ref LL_RCC_PLLP_DIV_5 + * @arg @ref LL_RCC_PLLP_DIV_6 + * @arg @ref LL_RCC_PLLP_DIV_7 + * @arg @ref LL_RCC_PLLP_DIV_8 + * @arg @ref LL_RCC_PLLP_DIV_9 + * @arg @ref LL_RCC_PLLP_DIV_10 + * @arg @ref LL_RCC_PLLP_DIV_11 + * @arg @ref LL_RCC_PLLP_DIV_12 + * @arg @ref LL_RCC_PLLP_DIV_13 + * @arg @ref LL_RCC_PLLP_DIV_14 + * @arg @ref LL_RCC_PLLP_DIV_15 + * @arg @ref LL_RCC_PLLP_DIV_16 + * @arg @ref LL_RCC_PLLP_DIV_17 + * @arg @ref LL_RCC_PLLP_DIV_18 + * @arg @ref LL_RCC_PLLP_DIV_19 + * @arg @ref LL_RCC_PLLP_DIV_20 + * @arg @ref LL_RCC_PLLP_DIV_21 + * @arg @ref LL_RCC_PLLP_DIV_22 + * @arg @ref LL_RCC_PLLP_DIV_23 + * @arg @ref LL_RCC_PLLP_DIV_24 + * @arg @ref LL_RCC_PLLP_DIV_25 + * @arg @ref LL_RCC_PLLP_DIV_26 + * @arg @ref LL_RCC_PLLP_DIV_27 + * @arg @ref LL_RCC_PLLP_DIV_28 + * @arg @ref LL_RCC_PLLP_DIV_29 + * @arg @ref LL_RCC_PLLP_DIV_30 + * @arg @ref LL_RCC_PLLP_DIV_31 + * @arg @ref LL_RCC_PLLP_DIV_32 + */ +__STATIC_INLINE uint32_t LL_RCC_PLL_GetP(void) +{ + return (uint32_t)(READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLP)); +} + +#if defined(RCC_PLLQ_SUPPORT) +/** + * @brief Get Main PLL division factor for PLLQ + * @note used for PLLQCLK selected for RNG, TIM1, TIM15 clock + * @rmtoll PLLCFGR PLLQ LL_RCC_PLL_GetQ + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_PLLQ_DIV_2 + * @arg @ref LL_RCC_PLLQ_DIV_3 + * @arg @ref LL_RCC_PLLQ_DIV_4 + * @arg @ref LL_RCC_PLLQ_DIV_5 + * @arg @ref LL_RCC_PLLQ_DIV_6 + * @arg @ref LL_RCC_PLLQ_DIV_7 + * @arg @ref LL_RCC_PLLQ_DIV_8 + */ +__STATIC_INLINE uint32_t LL_RCC_PLL_GetQ(void) +{ + return (uint32_t)(READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLQ)); +} +#endif /* RCC_PLLQ_SUPPORT */ + +/** + * @brief Get Main PLL division factor for PLLR + * @note used for PLLCLK (system clock) + * @rmtoll PLLCFGR PLLR LL_RCC_PLL_GetR + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_PLLR_DIV_2 + * @arg @ref LL_RCC_PLLR_DIV_3 + * @arg @ref LL_RCC_PLLR_DIV_4 + * @arg @ref LL_RCC_PLLR_DIV_5 + * @arg @ref LL_RCC_PLLR_DIV_6 + * @arg @ref LL_RCC_PLLR_DIV_7 + * @arg @ref LL_RCC_PLLR_DIV_8 + */ +__STATIC_INLINE uint32_t LL_RCC_PLL_GetR(void) +{ + return (uint32_t)(READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLR)); +} + +/** + * @brief Configure PLL clock source + * @rmtoll PLLCFGR PLLSRC LL_RCC_PLL_SetMainSource + * @param PLLSource This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSOURCE_HSI + * @arg @ref LL_RCC_PLLSOURCE_HSE + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLL_SetMainSource(uint32_t PLLSource) +{ + MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC, PLLSource); +} + +/** + * @brief Get the oscillator used as PLL clock source. + * @rmtoll PLLCFGR PLLSRC LL_RCC_PLL_GetMainSource + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_PLLSOURCE_NONE + * @arg @ref LL_RCC_PLLSOURCE_HSI + * @arg @ref LL_RCC_PLLSOURCE_HSE + */ +__STATIC_INLINE uint32_t LL_RCC_PLL_GetMainSource(void) +{ + return (uint32_t)(READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC)); +} + +/** + * @brief Get Division factor for the main PLL and other PLL + * @rmtoll PLLCFGR PLLM LL_RCC_PLL_GetDivider + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_PLLM_DIV_1 + * @arg @ref LL_RCC_PLLM_DIV_2 + * @arg @ref LL_RCC_PLLM_DIV_3 + * @arg @ref LL_RCC_PLLM_DIV_4 + * @arg @ref LL_RCC_PLLM_DIV_5 + * @arg @ref LL_RCC_PLLM_DIV_6 + * @arg @ref LL_RCC_PLLM_DIV_7 + * @arg @ref LL_RCC_PLLM_DIV_8 + */ +__STATIC_INLINE uint32_t LL_RCC_PLL_GetDivider(void) +{ + return (uint32_t)(READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLM)); +} + +/** + * @brief Enable PLL output mapped on ADC domain clock + * @rmtoll PLLCFGR PLLPEN LL_RCC_PLL_EnableDomain_ADC + * @note User shall check that PLL enable is not done through + * other functions (ex: I2S1) + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLL_EnableDomain_ADC(void) +{ + SET_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLPEN); +} + +/** + * @brief Disable PLL output mapped on ADC domain clock + * @note Cannot be disabled if the PLL clock is used as the system clock + * @note User shall check that PLL is not used by any other peripheral + * (ex: I2S1) + * @note In order to save power, when the PLLCLK of the PLL is + * not used, should be 0 + * @rmtoll PLLCFGR PLLPEN LL_RCC_PLL_DisableDomain_ADC + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLL_DisableDomain_ADC(void) +{ + CLEAR_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLPEN); +} + +/** + * @brief Check if PLL output mapped on ADC domain clock is enabled + * @rmtoll PLLCFGR PLLPEN LL_RCC_PLL_IsEnabledDomain_ADC + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_PLL_IsEnabledDomain_ADC(void) +{ + return ((READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLPEN) == (RCC_PLLCFGR_PLLPEN)) ? 1UL : 0UL); +} + +/** + * @brief Enable PLL output mapped on I2S domain clock + * @rmtoll PLLCFGR PLLPEN LL_RCC_PLL_EnableDomain_I2S1 + * @note User shall check that PLL enable is not done through + * other functions (ex: ADC) + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLL_EnableDomain_I2S1(void) +{ + SET_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLPEN); +} + +#if defined(RCC_CCIPR2_I2S2SEL) +/** + * @brief Enable PLL output mapped on I2S2 domain clock + * @rmtoll PLLCFGR PLLPEN LL_RCC_PLL_EnableDomain_I2S2 + * @note User shall check that PLL enable is not done through + * other functions (ex: ADC) + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLL_EnableDomain_I2S2(void) +{ + SET_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLPEN); +} +#endif /* RCC_CCIPR2_I2S2SEL */ + +/** + * @brief Disable PLL output mapped on I2S1 domain clock + * @note Cannot be disabled if the PLL clock is used as the system clock + * @note User shall check that PLL is not used by any other peripheral + * (ex: RNG) + * @note In order to save power, when the PLLCLK of the PLL is + * not used, should be 0 + * @rmtoll PLLCFGR PLLPEN LL_RCC_PLL_DisableDomain_I2S1 + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLL_DisableDomain_I2S1(void) +{ + CLEAR_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLPEN); +} + +/** + * @brief Check if PLL output mapped on I2S1 domain clock is enabled + * @rmtoll PLLCFGR PLLPEN LL_RCC_PLL_IsEnabledDomain_I2S1 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_PLL_IsEnabledDomain_I2S1(void) +{ + return ((READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLPEN) == (RCC_PLLCFGR_PLLPEN)) ? 1UL : 0UL); +} + +#if defined(RCC_CCIPR2_I2S2SEL) +/** + * @brief Disable PLL output mapped on I2S2 domain clock + * @note Cannot be disabled if the PLL clock is used as the system clock + * @note User shall check that PLL is not used by any other peripheral + * (ex: RNG) + * @note In order to save power, when the PLLCLK of the PLL is + * not used, should be 0 + * @rmtoll PLLCFGR PLLPEN LL_RCC_PLL_DisableDomain_I2S2 + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLL_DisableDomain_I2S2(void) +{ + CLEAR_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLPEN); +} + +/** + * @brief Check if PLL output mapped on I2S2 domain clock is enabled + * @rmtoll PLLCFGR PLLPEN LL_RCC_PLL_IsEnabledDomain_I2S2 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_PLL_IsEnabledDomain_I2S2(void) +{ + return ((READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLPEN) == (RCC_PLLCFGR_PLLPEN)) ? 1UL : 0UL); +} +#endif /* RCC_CCIPR2_I2S2SEL */ + +#if defined(RNG) +/** + * @brief Enable PLL output mapped on RNG domain clock + * @rmtoll PLLCFGR PLLQEN LL_RCC_PLL_EnableDomain_RNG + * @note User shall check that PLL enable is not done through + * other functions (ex: TIM1, TIM15) + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLL_EnableDomain_RNG(void) +{ + SET_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLQEN); +} + +/** + * @brief Disable PLL output mapped on RNG domain clock + * @note Cannot be disabled if the PLL clock is used as the system clock + * @note User shall check that PLL is not used by any other peripheral + * (ex: TIM, TIM15) + * @note In order to save power, when the PLLCLK of the PLL is + * not used, should be 0 + * @rmtoll PLLCFGR PLLQEN LL_RCC_PLL_DisableDomain_RNG + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLL_DisableDomain_RNG(void) +{ + CLEAR_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLQEN); +} + +/** + * @brief Check if PLL output mapped on RNG domain clock is enabled + * @rmtoll PLLCFGR PLLQEN LL_RCC_PLL_IsEnabledDomain_RNG + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_PLL_IsEnabledDomain_RNG(void) +{ + return ((READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLQEN) == (RCC_PLLCFGR_PLLQEN)) ? 1UL : 0UL); +} +#endif /* RNG */ + +#if defined(FDCAN1) || defined(FDCAN2) +/** + * @brief Enable PLL output mapped on FDCAN domain clock + * @rmtoll PLLCFGR PLLQEN LL_RCC_PLL_EnableDomain_FDCAN + * @note User shall check that PLL enable is not done through + * other functions (ex: TIM1, TIM15) + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLL_EnableDomain_FDCAN(void) +{ + SET_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLQEN); +} + +/** + * @brief Disable PLL output mapped on FDCAN domain clock + * @note Cannot be disabled if the PLL clock is used as the system clock + * @note User shall check that PLL is not used by any other peripheral + * (ex: TIM, TIM15) + * @note In order to save power, when the PLLCLK of the PLL is + * not used, should be 0 + * @rmtoll PLLCFGR PLLQEN LL_RCC_PLL_DisableDomain_FDCAN + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLL_DisableDomain_FDCAN(void) +{ + CLEAR_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLQEN); +} + +/** + * @brief Check if PLL output mapped on FDCAN domain clock is enabled + * @rmtoll PLLCFGR PLLQEN LL_RCC_PLL_IsEnabledDomain_FDCAN + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_PLL_IsEnabledDomain_FDCAN(void) +{ + return ((READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLQEN) == (RCC_PLLCFGR_PLLQEN)) ? 1UL : 0UL); +} +#endif /* FDCAN1 || FDCAN2 */ + +#if defined(STM32G0C1xx) || defined(STM32G0B1xx) || defined(STM32G0B0xx) +/** + * @brief Enable PLL output mapped on USB domain clock + * @rmtoll PLLCFGR PLLQEN LL_RCC_PLL_EnableDomain_USB + * @note User shall check that PLL enable is not done through + * other functions (ex: TIM1, TIM15) + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLL_EnableDomain_USB(void) +{ + SET_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLQEN); +} + +/** + * @brief Disable PLL output mapped on USB domain clock + * @note Cannot be disabled if the PLL clock is used as the system clock + * @note User shall check that PLL is not used by any other peripheral + * (ex: TIM, TIM15) + * @note In order to save power, when the PLLCLK of the PLL is + * not used, should be 0 + * @rmtoll PLLCFGR PLLQEN LL_RCC_PLL_DisableDomain_USB + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLL_DisableDomain_USB(void) +{ + CLEAR_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLQEN); +} + +/** + * @brief Check if PLL output mapped on USB domain clock is enabled + * @rmtoll PLLCFGR PLLQEN LL_RCC_PLL_IsEnabledDomain_USB + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_PLL_IsEnabledDomain_USB(void) +{ + return ((READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLQEN) == (RCC_PLLCFGR_PLLQEN)) ? 1UL : 0UL); +} +#endif /* STM32G0C1xx || STM32G0B1xx || STM32G0B0xx */ + +#if defined(RCC_PLLQ_SUPPORT) +/** + * @brief Enable PLL output mapped on TIM1 domain clock + * @rmtoll PLLCFGR PLLQEN LL_RCC_PLL_EnableDomain_TIM1 + * @note User shall check that PLL enable is not done through + * other functions (ex: RNG, TIM15) + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLL_EnableDomain_TIM1(void) +{ + SET_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLQEN); +} + +/** + * @brief Disable PLL output mapped on TIM1 domain clock + * @note Cannot be disabled if the PLL clock is used as the system clock + * @note User shall check that PLL is not used by any other peripheral + * (ex: RNG, TIM15) + * @note In order to save power, when the PLLCLK of the PLL is + * not used, should be 0 + * @rmtoll PLLCFGR PLLQEN LL_RCC_PLL_DisableDomain_TIM1 + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLL_DisableDomain_TIM1(void) +{ + CLEAR_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLQEN); +} + +/** + * @brief Check if PLL output mapped on TIM1 domain clock is enabled + * @rmtoll PLLCFGR PLLQEN LL_RCC_PLL_IsEnabledDomain_TIM1 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_PLL_IsEnabledDomain_TIM1(void) +{ + return ((READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLQEN) == (RCC_PLLCFGR_PLLQEN)) ? 1UL : 0UL); +} +#endif /* RCC_PLLQ_SUPPORT */ + +#if defined(RCC_PLLQ_SUPPORT) && defined(TIM15) +/** + * @brief Enable PLL output mapped on TIM15 domain clock + * @rmtoll PLLCFGR PLLQEN LL_RCC_PLL_EnableDomain_TIM15 + * @note User shall check that PLL enable is not done through + * other functions (ex: RNG, TIM1) + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLL_EnableDomain_TIM15(void) +{ + SET_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLQEN); +} + +/** + * @brief Disable PLL output mapped on TIM15 domain clock + * @note Cannot be disabled if the PLL clock is used as the system clock + * @note User shall check that PLL is not used by any other peripheral + * (ex: RNG, TIM1) + * @note In order to save power, when the PLLCLK of the PLL is + * not used, should be 0 + * @rmtoll PLLCFGR PLLQEN LL_RCC_PLL_DisableDomain_TIM15 + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLL_DisableDomain_TIM15(void) +{ + CLEAR_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLQEN); +} + +/** + * @brief Check if PLL output mapped on TIM15 domain clock is enabled + * @rmtoll PLLCFGR PLLQEN LL_RCC_PLL_IsEnabledDomain_TIM15 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_PLL_IsEnabledDomain_TIM15(void) +{ + return ((READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLQEN) == (RCC_PLLCFGR_PLLQEN)) ? 1UL : 0UL); +} +#endif /* RCC_PLLQ_SUPPORT && TIM15 */ + +/** + * @brief Enable PLL output mapped on SYSCLK domain + * @rmtoll PLLCFGR PLLREN LL_RCC_PLL_EnableDomain_SYS + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLL_EnableDomain_SYS(void) +{ + SET_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLREN); +} + +/** + * @brief Disable PLL output mapped on SYSCLK domain + * @note Cannot be disabled if the PLL clock is used as the system clock + * @note In order to save power, when the PLLCLK of the PLL is + * not used, Main PLL should be 0 + * @rmtoll PLLCFGR PLLREN LL_RCC_PLL_DisableDomain_SYS + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLL_DisableDomain_SYS(void) +{ + CLEAR_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLREN); +} + +/** + * @brief Check if PLL output mapped on SYSCLK domain clock is enabled + * @rmtoll PLLCFGR PLLREN LL_RCC_PLL_IsEnabledDomain_SYS + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_PLL_IsEnabledDomain_SYS(void) +{ + return ((READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLREN) == (RCC_PLLCFGR_PLLREN)) ? 1UL : 0UL); +} + +/** + * @} + */ + + + +/** @defgroup RCC_LL_EF_FLAG_Management FLAG Management + * @{ + */ + +/** + * @brief Clear LSI ready interrupt flag + * @rmtoll CICR LSIRDYC LL_RCC_ClearFlag_LSIRDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_ClearFlag_LSIRDY(void) +{ + SET_BIT(RCC->CICR, RCC_CICR_LSIRDYC); +} + +/** + * @brief Clear LSE ready interrupt flag + * @rmtoll CICR LSERDYC LL_RCC_ClearFlag_LSERDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_ClearFlag_LSERDY(void) +{ + SET_BIT(RCC->CICR, RCC_CICR_LSERDYC); +} + +/** + * @brief Clear HSI ready interrupt flag + * @rmtoll CICR HSIRDYC LL_RCC_ClearFlag_HSIRDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_ClearFlag_HSIRDY(void) +{ + SET_BIT(RCC->CICR, RCC_CICR_HSIRDYC); +} + +/** + * @brief Clear HSE ready interrupt flag + * @rmtoll CICR HSERDYC LL_RCC_ClearFlag_HSERDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_ClearFlag_HSERDY(void) +{ + SET_BIT(RCC->CICR, RCC_CICR_HSERDYC); +} + +/** + * @brief Clear PLL ready interrupt flag + * @rmtoll CICR PLLRDYC LL_RCC_ClearFlag_PLLRDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_ClearFlag_PLLRDY(void) +{ + SET_BIT(RCC->CICR, RCC_CICR_PLLRDYC); +} + +#if defined(RCC_HSI48_SUPPORT) +/** + * @brief Clear HSI48 ready interrupt flag + * @rmtoll CICR HSI48RDYC LL_RCC_ClearFlag_HSI48RDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_ClearFlag_HSI48RDY(void) +{ + SET_BIT(RCC->CICR, RCC_CICR_HSI48RDYC); +} +#endif /* RCC_HSI48_SUPPORT */ +/** + * @brief Clear Clock security system interrupt flag + * @rmtoll CICR CSSC LL_RCC_ClearFlag_HSECSS + * @retval None + */ +__STATIC_INLINE void LL_RCC_ClearFlag_HSECSS(void) +{ + SET_BIT(RCC->CICR, RCC_CICR_CSSC); +} + +/** + * @brief Clear LSE Clock security system interrupt flag + * @rmtoll CICR LSECSSC LL_RCC_ClearFlag_LSECSS + * @retval None + */ +__STATIC_INLINE void LL_RCC_ClearFlag_LSECSS(void) +{ + SET_BIT(RCC->CICR, RCC_CICR_LSECSSC); +} + +/** + * @brief Check if LSI ready interrupt occurred or not + * @rmtoll CIFR LSIRDYF LL_RCC_IsActiveFlag_LSIRDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_LSIRDY(void) +{ + return ((READ_BIT(RCC->CIFR, RCC_CIFR_LSIRDYF) == (RCC_CIFR_LSIRDYF)) ? 1UL : 0UL); +} + +/** + * @brief Check if LSE ready interrupt occurred or not + * @rmtoll CIFR LSERDYF LL_RCC_IsActiveFlag_LSERDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_LSERDY(void) +{ + return ((READ_BIT(RCC->CIFR, RCC_CIFR_LSERDYF) == (RCC_CIFR_LSERDYF)) ? 1UL : 0UL); +} + +/** + * @brief Check if HSI ready interrupt occurred or not + * @rmtoll CIFR HSIRDYF LL_RCC_IsActiveFlag_HSIRDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_HSIRDY(void) +{ + return ((READ_BIT(RCC->CIFR, RCC_CIFR_HSIRDYF) == (RCC_CIFR_HSIRDYF)) ? 1UL : 0UL); +} + +/** + * @brief Check if HSE ready interrupt occurred or not + * @rmtoll CIFR HSERDYF LL_RCC_IsActiveFlag_HSERDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_HSERDY(void) +{ + return ((READ_BIT(RCC->CIFR, RCC_CIFR_HSERDYF) == (RCC_CIFR_HSERDYF)) ? 1UL : 0UL); +} + +/** + * @brief Check if PLL ready interrupt occurred or not + * @rmtoll CIFR PLLRDYF LL_RCC_IsActiveFlag_PLLRDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_PLLRDY(void) +{ + return ((READ_BIT(RCC->CIFR, RCC_CIFR_PLLRDYF) == (RCC_CIFR_PLLRDYF)) ? 1UL : 0UL); +} + +#if defined(RCC_HSI48_SUPPORT) +/** + * @brief Check if HSI48 ready interrupt occurred or not + * @rmtoll CIR HSI48RDYF LL_RCC_IsActiveFlag_HSI48RDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_HSI48RDY(void) +{ + return ((READ_BIT(RCC->CIFR, RCC_CIFR_HSI48RDYF) == (RCC_CIFR_HSI48RDYF)) ? 1UL : 0UL); +} +#endif /* RCC_HSI48_SUPPORT */ + +/** + * @brief Check if Clock security system interrupt occurred or not + * @rmtoll CIFR CSSF LL_RCC_IsActiveFlag_HSECSS + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_HSECSS(void) +{ + return ((READ_BIT(RCC->CIFR, RCC_CIFR_CSSF) == (RCC_CIFR_CSSF)) ? 1UL : 0UL); +} + +/** + * @brief Check if LSE Clock security system interrupt occurred or not + * @rmtoll CIFR LSECSSF LL_RCC_IsActiveFlag_LSECSS + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_LSECSS(void) +{ + return ((READ_BIT(RCC->CIFR, RCC_CIFR_LSECSSF) == (RCC_CIFR_LSECSSF)) ? 1UL : 0UL); +} + +/** + * @brief Check if RCC flag Independent Watchdog reset is set or not. + * @rmtoll CSR IWDGRSTF LL_RCC_IsActiveFlag_IWDGRST + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_IWDGRST(void) +{ + return ((READ_BIT(RCC->CSR, RCC_CSR_IWDGRSTF) == (RCC_CSR_IWDGRSTF)) ? 1UL : 0UL); +} + +/** + * @brief Check if RCC flag Low Power reset is set or not. + * @rmtoll CSR LPWRRSTF LL_RCC_IsActiveFlag_LPWRRST + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_LPWRRST(void) +{ + return ((READ_BIT(RCC->CSR, RCC_CSR_LPWRRSTF) == (RCC_CSR_LPWRRSTF)) ? 1UL : 0UL); +} + +/** + * @brief Check if RCC flag Option byte reset is set or not. + * @rmtoll CSR OBLRSTF LL_RCC_IsActiveFlag_OBLRST + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_OBLRST(void) +{ + return ((READ_BIT(RCC->CSR, RCC_CSR_OBLRSTF) == (RCC_CSR_OBLRSTF)) ? 1UL : 0UL); +} + +/** + * @brief Check if RCC flag Pin reset is set or not. + * @rmtoll CSR PINRSTF LL_RCC_IsActiveFlag_PINRST + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_PINRST(void) +{ + return ((READ_BIT(RCC->CSR, RCC_CSR_PINRSTF) == (RCC_CSR_PINRSTF)) ? 1UL : 0UL); +} + +/** + * @brief Check if RCC flag Software reset is set or not. + * @rmtoll CSR SFTRSTF LL_RCC_IsActiveFlag_SFTRST + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_SFTRST(void) +{ + return ((READ_BIT(RCC->CSR, RCC_CSR_SFTRSTF) == (RCC_CSR_SFTRSTF)) ? 1UL : 0UL); +} + +/** + * @brief Check if RCC flag Window Watchdog reset is set or not. + * @rmtoll CSR WWDGRSTF LL_RCC_IsActiveFlag_WWDGRST + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_WWDGRST(void) +{ + return ((READ_BIT(RCC->CSR, RCC_CSR_WWDGRSTF) == (RCC_CSR_WWDGRSTF)) ? 1UL : 0UL); +} + +/** + * @brief Check if RCC flag BOR or POR/PDR reset is set or not. + * @rmtoll CSR PWRRSTF LL_RCC_IsActiveFlag_PWRRST + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_PWRRST(void) +{ + return ((READ_BIT(RCC->CSR, RCC_CSR_PWRRSTF) == (RCC_CSR_PWRRSTF)) ? 1UL : 0UL); +} + +/** + * @brief Set RMVF bit to clear the reset flags. + * @rmtoll CSR RMVF LL_RCC_ClearResetFlags + * @retval None + */ +__STATIC_INLINE void LL_RCC_ClearResetFlags(void) +{ + SET_BIT(RCC->CSR, RCC_CSR_RMVF); +} + +/** + * @} + */ + +/** @defgroup RCC_LL_EF_IT_Management IT Management + * @{ + */ + +/** + * @brief Enable LSI ready interrupt + * @rmtoll CIER LSIRDYIE LL_RCC_EnableIT_LSIRDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_EnableIT_LSIRDY(void) +{ + SET_BIT(RCC->CIER, RCC_CIER_LSIRDYIE); +} + +/** + * @brief Enable LSE ready interrupt + * @rmtoll CIER LSERDYIE LL_RCC_EnableIT_LSERDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_EnableIT_LSERDY(void) +{ + SET_BIT(RCC->CIER, RCC_CIER_LSERDYIE); +} + +/** + * @brief Enable HSI ready interrupt + * @rmtoll CIER HSIRDYIE LL_RCC_EnableIT_HSIRDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_EnableIT_HSIRDY(void) +{ + SET_BIT(RCC->CIER, RCC_CIER_HSIRDYIE); +} + +/** + * @brief Enable HSE ready interrupt + * @rmtoll CIER HSERDYIE LL_RCC_EnableIT_HSERDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_EnableIT_HSERDY(void) +{ + SET_BIT(RCC->CIER, RCC_CIER_HSERDYIE); +} + +/** + * @brief Enable PLL ready interrupt + * @rmtoll CIER PLLRDYIE LL_RCC_EnableIT_PLLRDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_EnableIT_PLLRDY(void) +{ + SET_BIT(RCC->CIER, RCC_CIER_PLLRDYIE); +} + +#if defined(RCC_HSI48_SUPPORT) +/** + * @brief Enable HSI48 ready interrupt + * @rmtoll CIER HSI48RDYIE LL_RCC_EnableIT_HSI48RDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_EnableIT_HSI48RDY(void) +{ + SET_BIT(RCC->CIER, RCC_CIER_HSI48RDYIE); +} +#endif /* RCC_HSI48_SUPPORT */ + +/** + * @brief Disable LSI ready interrupt + * @rmtoll CIER LSIRDYIE LL_RCC_DisableIT_LSIRDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_DisableIT_LSIRDY(void) +{ + CLEAR_BIT(RCC->CIER, RCC_CIER_LSIRDYIE); +} + +/** + * @brief Disable LSE ready interrupt + * @rmtoll CIER LSERDYIE LL_RCC_DisableIT_LSERDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_DisableIT_LSERDY(void) +{ + CLEAR_BIT(RCC->CIER, RCC_CIER_LSERDYIE); +} + +/** + * @brief Disable HSI ready interrupt + * @rmtoll CIER HSIRDYIE LL_RCC_DisableIT_HSIRDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_DisableIT_HSIRDY(void) +{ + CLEAR_BIT(RCC->CIER, RCC_CIER_HSIRDYIE); +} + +/** + * @brief Disable HSE ready interrupt + * @rmtoll CIER HSERDYIE LL_RCC_DisableIT_HSERDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_DisableIT_HSERDY(void) +{ + CLEAR_BIT(RCC->CIER, RCC_CIER_HSERDYIE); +} + +/** + * @brief Disable PLL ready interrupt + * @rmtoll CIER PLLRDYIE LL_RCC_DisableIT_PLLRDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_DisableIT_PLLRDY(void) +{ + CLEAR_BIT(RCC->CIER, RCC_CIER_PLLRDYIE); +} + +#if defined(RCC_HSI48_SUPPORT) +/** + * @brief Disable HSI48 ready interrupt + * @rmtoll CIER HSI48RDYIE LL_RCC_DisableIT_HSI48RDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_DisableIT_HSI48RDY(void) +{ + CLEAR_BIT(RCC->CIER, RCC_CIER_HSI48RDYIE); +} +#endif /* RCC_HSI48_SUPPORT */ + +/** + * @brief Checks if LSI ready interrupt source is enabled or disabled. + * @rmtoll CIER LSIRDYIE LL_RCC_IsEnabledIT_LSIRDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsEnabledIT_LSIRDY(void) +{ + return ((READ_BIT(RCC->CIER, RCC_CIER_LSIRDYIE) == (RCC_CIER_LSIRDYIE)) ? 1UL : 0UL); +} + +/** + * @brief Checks if LSE ready interrupt source is enabled or disabled. + * @rmtoll CIER LSERDYIE LL_RCC_IsEnabledIT_LSERDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsEnabledIT_LSERDY(void) +{ + return ((READ_BIT(RCC->CIER, RCC_CIER_LSERDYIE) == (RCC_CIER_LSERDYIE)) ? 1UL : 0UL); +} + +/** + * @brief Checks if HSI ready interrupt source is enabled or disabled. + * @rmtoll CIER HSIRDYIE LL_RCC_IsEnabledIT_HSIRDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsEnabledIT_HSIRDY(void) +{ + return ((READ_BIT(RCC->CIER, RCC_CIER_HSIRDYIE) == (RCC_CIER_HSIRDYIE)) ? 1UL : 0UL); +} + +#if defined(RCC_HSI48_SUPPORT) +/** + * @brief Checks if HSI48 ready interrupt source is enabled or disabled. + * @rmtoll CIER HSI48RDYIE LL_RCC_IsEnabledIT_HSI48RDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsEnabledIT_HSI48RDY(void) +{ + return ((READ_BIT(RCC->CIER, RCC_CIER_HSI48RDYIE) == (RCC_CIER_HSI48RDYIE)) ? 1UL : 0UL); +} +#endif /* RCC_HSI48_SUPPORT */ + +/** + * @brief Checks if HSE ready interrupt source is enabled or disabled. + * @rmtoll CIER HSERDYIE LL_RCC_IsEnabledIT_HSERDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsEnabledIT_HSERDY(void) +{ + return ((READ_BIT(RCC->CIER, RCC_CIER_HSERDYIE) == (RCC_CIER_HSERDYIE)) ? 1UL : 0UL); +} + +/** + * @brief Checks if PLL ready interrupt source is enabled or disabled. + * @rmtoll CIER PLLRDYIE LL_RCC_IsEnabledIT_PLLRDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsEnabledIT_PLLRDY(void) +{ + return ((READ_BIT(RCC->CIER, RCC_CIER_PLLRDYIE) == (RCC_CIER_PLLRDYIE)) ? 1UL : 0UL); +} + +/** + * @} + */ + +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup RCC_LL_EF_Init De-initialization function + * @{ + */ +ErrorStatus LL_RCC_DeInit(void); +/** + * @} + */ + +/** @defgroup RCC_LL_EF_Get_Freq Get system and peripherals clocks frequency functions + * @{ + */ +void LL_RCC_GetSystemClocksFreq(LL_RCC_ClocksTypeDef *RCC_Clocks); +uint32_t LL_RCC_GetUSARTClockFreq(uint32_t USARTxSource); +uint32_t LL_RCC_GetI2CClockFreq(uint32_t I2CxSource); +#if defined(LPUART1) || defined(LPUART2) +uint32_t LL_RCC_GetLPUARTClockFreq(uint32_t LPUARTxSource); +#endif /* LPUART1 */ +#if defined(LPTIM1) && defined(LPTIM2) +uint32_t LL_RCC_GetLPTIMClockFreq(uint32_t LPTIMxSource); +#endif /* LPTIM1 && LPTIM2 */ +#if defined(RNG) +uint32_t LL_RCC_GetRNGClockFreq(uint32_t RNGxSource); +#endif /* RNG */ +uint32_t LL_RCC_GetADCClockFreq(uint32_t ADCxSource); +uint32_t LL_RCC_GetI2SClockFreq(uint32_t I2SxSource); +#if defined(CEC) +uint32_t LL_RCC_GetCECClockFreq(uint32_t CECxSource); +#endif /* CEC */ +#if defined(FDCAN1) || defined(FDCAN2) +uint32_t LL_RCC_GetFDCANClockFreq(uint32_t FDCANxSource); +#endif /* FDCAN1 */ +uint32_t LL_RCC_GetTIMClockFreq(uint32_t TIMxSource); +uint32_t LL_RCC_GetRTCClockFreq(void); +#if defined(STM32G0C1xx) || defined(STM32G0B1xx) || defined(STM32G0B0xx) +uint32_t LL_RCC_GetUSBClockFreq(uint32_t USBxSource); +#endif /* STM32G0C1xx || STM32G0B1xx || STM32G0B0xx */ +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* RCC */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32G0xx_LL_RCC_H */ + diff --git a/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_ll_system.h b/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_ll_system.h new file mode 100644 index 0000000..744c354 --- /dev/null +++ b/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_ll_system.h @@ -0,0 +1,2085 @@ +/** + ****************************************************************************** + * @file stm32g0xx_ll_system.h + * @author MCD Application Team + * @brief Header file of SYSTEM LL module. + * + ****************************************************************************** + * @attention + * + * Copyright (c) 2018 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + @verbatim + ============================================================================== + ##### How to use this driver ##### + ============================================================================== + [..] + The LL SYSTEM driver contains a set of generic APIs that can be + used by user: + (+) Some of the FLASH features need to be handled in the SYSTEM file. + (+) Access to DBG registers + (+) Access to SYSCFG registers + (+) Access to VREFBUF registers + + @endverbatim + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32G0xx_LL_SYSTEM_H +#define STM32G0xx_LL_SYSTEM_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32g0xx.h" + +/** @addtogroup STM32G0xx_LL_Driver + * @{ + */ + +#if defined (FLASH) || defined (SYSCFG) || defined (DBG) + +/** @defgroup SYSTEM_LL SYSTEM + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ + +/* Private constants ---------------------------------------------------------*/ +/** @defgroup SYSTEM_LL_Private_Constants SYSTEM Private Constants + * @{ + */ + +/** + * @} + */ + +/* Private macros ------------------------------------------------------------*/ + +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +/** @defgroup SYSTEM_LL_Exported_Constants SYSTEM Exported Constants + * @{ + */ + +/** @defgroup SYSTEM_LL_EC_REMAP SYSCFG REMAP + * @{ + */ +#define LL_SYSCFG_REMAP_FLASH 0x00000000U /*!< Main Flash memory mapped at 0x00000000 */ +#define LL_SYSCFG_REMAP_SYSTEMFLASH SYSCFG_CFGR1_MEM_MODE_0 /*!< System Flash memory mapped at 0x00000000 */ +#define LL_SYSCFG_REMAP_SRAM (SYSCFG_CFGR1_MEM_MODE_1 | SYSCFG_CFGR1_MEM_MODE_0) /*!< Embedded SRAM mapped at 0x00000000 */ +/** + * @} + */ + +/** @defgroup SYSTEM_LL_EC_PIN_RMP SYSCFG PIN RMP + * @{ + */ +#define LL_SYSCFG_PIN_RMP_PA11 SYSCFG_CFGR1_PA11_RMP /*!< PA11 pad behaves as PA9 pin */ +#define LL_SYSCFG_PIN_RMP_PA12 SYSCFG_CFGR1_PA12_RMP /*!< PA12 pad behaves as PA10 pin */ +/** + * @} + */ + + +#if defined(SYSCFG_CFGR1_IR_MOD) +/** @defgroup SYSTEM_LL_EC_IR_MOD SYSCFG IR Modulation + * @{ + */ +#define LL_SYSCFG_IR_MOD_TIM16 (SYSCFG_CFGR1_IR_MOD_0 & SYSCFG_CFGR1_IR_MOD_1) /*!< 00: Timer16 is selected as IRDA Modulation enveloppe source */ +#define LL_SYSCFG_IR_MOD_USART1 (SYSCFG_CFGR1_IR_MOD_0) /*!< 01: USART1 is selected as IRDA Modulation enveloppe source */ +#if defined(USART4) +#define LL_SYSCFG_IR_MOD_USART4 (SYSCFG_CFGR1_IR_MOD_1) /*!< 10: USART4 is selected as IRDA Modulation enveloppe source */ +#else +#define LL_SYSCFG_IR_MOD_USART2 (SYSCFG_CFGR1_IR_MOD_1) /*!< 10: USART2 is selected as IRDA Modulation enveloppe source */ +#endif /* USART4 */ +/** + * @} + */ +/** @defgroup SYSTEM_LL_EC_IR_POL SYSCFG IR Polarity + * @{ + */ +#define LL_SYSCFG_IR_POL_NOT_INVERTED 0x00000000U /*!< 0: Output of IRDA (IROut) not inverted */ +#define LL_SYSCFG_IR_POL_INVERTED (SYSCFG_CFGR1_IR_POL) /*!< 1: Output of IRDA (IROut) inverted */ +/** + * @} + */ +#endif /* SYSCFG_CFGR1_IR_MOD */ + +#if defined(SYSCFG_CFGR1_BOOSTEN) +/** @defgroup SYSTEM_LL_EC_BOOSTEN SYSCFG I/O analog switch voltage booster enable + * @{ + */ +#define LL_SYSCFG_CFGR1_BOOSTEN SYSCFG_CFGR1_BOOSTEN /*!< I/O analog switch voltage booster enable */ +/** + * @} + */ +#endif /* SYSCFG_CFGR1_BOOSTEN */ + +#if defined(SYSCFG_CFGR1_UCPD1_STROBE) || defined(SYSCFG_CFGR1_UCPD2_STROBE) +/** @defgroup SYSTEM_LL_EC_UCPD_DBATTDIS SYSCFG UCPD Dead Battery feature Disable + * @{ + */ +#define LL_SYSCFG_UCPD1_STROBE SYSCFG_CFGR1_UCPD1_STROBE /*!< UCPD1 STROBE sw configuration */ +#define LL_SYSCFG_UCPD2_STROBE SYSCFG_CFGR1_UCPD2_STROBE /*!< UCPD2 STROBE sw configuration */ +/** + * @} + */ +#endif /* SYSCFG_CFGR1_UCPD1_STROBE) || SYSCFG_CFGR1_UCPD2_STROBE */ + +/** @defgroup SYSTEM_LL_EC_I2C_FASTMODEPLUS SYSCFG I2C FASTMODEPLUS + * @{ + */ +#define LL_SYSCFG_I2C_FASTMODEPLUS_PB6 SYSCFG_CFGR1_I2C_PB6_FMP /*!< I2C PB6 Fast mode plus */ +#define LL_SYSCFG_I2C_FASTMODEPLUS_PB7 SYSCFG_CFGR1_I2C_PB7_FMP /*!< I2C PB7 Fast mode plus */ +#define LL_SYSCFG_I2C_FASTMODEPLUS_PB8 SYSCFG_CFGR1_I2C_PB8_FMP /*!< I2C PB8 Fast mode plus */ +#define LL_SYSCFG_I2C_FASTMODEPLUS_PB9 SYSCFG_CFGR1_I2C_PB9_FMP /*!< I2C PB9 Fast mode plus */ +#if defined(SYSCFG_CFGR1_I2C1_FMP) +#define LL_SYSCFG_I2C_FASTMODEPLUS_I2C1 SYSCFG_CFGR1_I2C1_FMP /*!< Enable I2C1 Fast mode Plus */ +#endif /*SYSCFG_CFGR1_I2C1_FMP*/ +#if defined(SYSCFG_CFGR1_I2C2_FMP) +#define LL_SYSCFG_I2C_FASTMODEPLUS_I2C2 SYSCFG_CFGR1_I2C2_FMP /*!< Enable I2C2 Fast mode plus */ +#endif /*SYSCFG_CFGR1_I2C2_FMP*/ +#if defined(SYSCFG_CFGR1_I2C_PA9_FMP) +#define LL_SYSCFG_I2C_FASTMODEPLUS_PA9 SYSCFG_CFGR1_I2C_PA9_FMP /*!< Enable Fast Mode Plus on PA9 */ +#endif /*SYSCFG_CFGR1_I2C_PA9_FMP*/ +#if defined(SYSCFG_CFGR1_I2C_PA10_FMP) +#define LL_SYSCFG_I2C_FASTMODEPLUS_PA10 SYSCFG_CFGR1_I2C_PA10_FMP /*!< Enable Fast Mode Plus on PA10 */ +#endif /*SYSCFG_CFGR1_I2C_PA10_FMP*/ +#if defined(STM32G0C1xx) || defined(STM32G0B1xx) || defined(STM32G0B0xx) +#if defined(SYSCFG_CFGR1_I2C3_FMP) +#define LL_SYSCFG_I2C_FASTMODEPLUS_I2C3 SYSCFG_CFGR1_I2C3_FMP /*!< Enable I2C3 Fast mode plus */ +#endif /*SYSCFG_CFGR1_I2C3_FMP*/ +#endif /* STM32G0C1xx || STM32G0B1xx || STM32G0B0xx */ +/** + * @} + */ + +/** @defgroup SYSTEM_LL_EC_TIMBREAK SYSCFG TIMER BREAK + * @{ + */ +#define LL_SYSCFG_TIMBREAK_ECC SYSCFG_CFGR2_ECCL /*!< Enables and locks the ECC error signal + with Break Input of TIM1/15/16/17 */ +#if defined (PWR_PVD_SUPPORT) +#define LL_SYSCFG_TIMBREAK_PVD SYSCFG_CFGR2_PVDL /*!< Enables and locks the PVD connection + with TIM1/15/16/17 Break Input and also + the PVDE and PLS bits of the Power Control Interface */ +#endif /* PWR_PVD_SUPPORT */ +#define LL_SYSCFG_TIMBREAK_SRAM_PARITY SYSCFG_CFGR2_SPL /*!< Enables and locks the SRAM_PARITY error signal + with Break Input of TIM1/15/16/17 */ +#define LL_SYSCFG_TIMBREAK_LOCKUP SYSCFG_CFGR2_CLL /*!< Enables and locks the LOCKUP (Hardfault) output of + CortexM0 with Break Input of TIM1/15/16/17 */ +/** + * @} + */ + +#if defined(SYSCFG_CDEN_SUPPORT) +/** @defgroup SYSTEM_LL_EC_CLAMPING_DIODE SYSCFG CLAMPING DIODE + * @{ + */ +#define LL_SYSCFG_CFGR2_PA1_CDEN SYSCFG_CFGR2_PA1_CDEN /*!< Enables Clamping diode of PA1 */ +#define LL_SYSCFG_CFGR2_PA3_CDEN SYSCFG_CFGR2_PA3_CDEN /*!< Enables Clamping diode of PA3 */ +#define LL_SYSCFG_CFGR2_PA5_CDEN SYSCFG_CFGR2_PA5_CDEN /*!< Enables Clamping diode of PA5 */ +#define LL_SYSCFG_CFGR2_PA6_CDEN SYSCFG_CFGR2_PA6_CDEN /*!< Enables Clamping diode of PA6 */ +#define LL_SYSCFG_CFGR2_PA13_CDEN SYSCFG_CFGR2_PA13_CDEN /*!< Enables Clamping diode of PA13 */ +#define LL_SYSCFG_CFGR2_PB0_CDEN SYSCFG_CFGR2_PB0_CDEN /*!< Enables Clamping diode of PB0 */ +#define LL_SYSCFG_CFGR2_PB1_CDEN SYSCFG_CFGR2_PB1_CDEN /*!< Enables Clamping diode of PB1 */ +#define LL_SYSCFG_CFGR2_PB2_CDEN SYSCFG_CFGR2_PB2_CDEN /*!< Enables Clamping diode of PB2 */ +/** + * @} + */ +#endif /* SYSCFG_CDEN_SUPPORT */ + +/** @defgroup SYSTEM_LL_EC_APB1_GRP1_STOP_IP DBGMCU APB1 GRP1 STOP IP + * @{ + */ +#if defined(DBG_APB_FZ1_DBG_TIM2_STOP) +#define LL_DBGMCU_APB1_GRP1_TIM2_STOP DBG_APB_FZ1_DBG_TIM2_STOP /*!< TIM2 counter stopped when core is halted */ +#endif /*DBG_APB_FZ1_DBG_TIM2_STOP*/ +#define LL_DBGMCU_APB1_GRP1_TIM3_STOP DBG_APB_FZ1_DBG_TIM3_STOP /*!< TIM3 counter stopped when core is halted */ +#if defined(STM32G0C1xx) || defined(STM32G0B1xx) || defined(STM32G0B0xx) +#define LL_DBGMCU_APB1_GRP1_TIM4_STOP DBG_APB_FZ1_DBG_TIM4_STOP /*!< TIM4 counter stopped when core is halted */ +#endif /* STM32G0C1xx || STM32G0B1xx || STM32G0B0xx */ +#if defined(DBG_APB_FZ1_DBG_TIM6_STOP) +#define LL_DBGMCU_APB1_GRP1_TIM6_STOP DBG_APB_FZ1_DBG_TIM6_STOP /*!< TIM6 counter stopped when core is halted */ +#endif /*DBG_APB_FZ1_DBG_TIM6_STOP*/ +#if defined(DBG_APB_FZ1_DBG_TIM7_STOP) +#define LL_DBGMCU_APB1_GRP1_TIM7_STOP DBG_APB_FZ1_DBG_TIM7_STOP /*!< TIM7 counter stopped when core is halted */ +#endif /*DBG_APB_FZ1_DBG_TIM7_STOP*/ +#define LL_DBGMCU_APB1_GRP1_RTC_STOP DBG_APB_FZ1_DBG_RTC_STOP /*!< RTC Calendar frozen when core is halted */ +#define LL_DBGMCU_APB1_GRP1_WWDG_STOP DBG_APB_FZ1_DBG_WWDG_STOP /*!< Debug Window Watchdog stopped when Core is halted */ +#define LL_DBGMCU_APB1_GRP1_IWDG_STOP DBG_APB_FZ1_DBG_IWDG_STOP /*!< Debug Independent Watchdog stopped when Core is halted */ +#define LL_DBGMCU_APB1_GRP1_I2C1_STOP DBG_APB_FZ1_DBG_I2C1_SMBUS_TIMEOUT_STOP /*!< I2C1 SMBUS timeout mode stopped when Core is halted */ +#if defined(STM32G0C1xx) || defined(STM32G0B1xx) || defined(STM32G0B0xx) +#define LL_DBGMCU_APB1_GRP1_I2C2_STOP DBG_APB_FZ1_DBG_I2C2_SMBUS_TIMEOUT_STOP /*!< I2C2 SMBUS timeout mode stopped when Core is halted */ +#endif /* STM32G0C1xx || STM32G0B1xx || STM32G0B0xx */ +#if defined(DBG_APB_FZ1_DBG_LPTIM2_STOP) +#define LL_DBGMCU_APB1_GRP1_LPTIM2_STOP DBG_APB_FZ1_DBG_LPTIM2_STOP /*!< LPTIM2 counter stopped when Core is halted */ +#endif /* DBG_APB_FZ1_DBG_LPTIM2_STOP */ +#if defined(DBG_APB_FZ1_DBG_LPTIM1_STOP) +#define LL_DBGMCU_APB1_GRP1_LPTIM1_STOP DBG_APB_FZ1_DBG_LPTIM1_STOP /*!< LPTIM1 counter stopped when Core is halted */ +#endif /* DBG_APB_FZ1_DBG_LPTIM1_STOP */ +/** + * @} + */ + +/** @defgroup SYSTEM_LL_EC_APB2_GRP1_STOP_IP DBGMCU APB2 GRP1 STOP IP + * @{ + */ +#define LL_DBGMCU_APB2_GRP1_TIM1_STOP DBG_APB_FZ2_DBG_TIM1_STOP /*!< TIM1 counter stopped when core is halted */ +#if defined(DBG_APB_FZ2_DBG_TIM14_STOP) +#define LL_DBGMCU_APB2_GRP1_TIM14_STOP DBG_APB_FZ2_DBG_TIM14_STOP /*!< TIM14 counter stopped when core is halted */ +#endif /* DBG_APB_FZ2_DBG_TIM14_STOP */ +#if defined(DBG_APB_FZ2_DBG_TIM15_STOP) +#define LL_DBGMCU_APB2_GRP1_TIM15_STOP DBG_APB_FZ2_DBG_TIM15_STOP /*!< TIM15 counter stopped when core is halted */ +#endif /*DBG_APB_FZ2_DBG_TIM15_STOP*/ +#define LL_DBGMCU_APB2_GRP1_TIM16_STOP DBG_APB_FZ2_DBG_TIM16_STOP /*!< TIM16 counter stopped when core is halted */ +#define LL_DBGMCU_APB2_GRP1_TIM17_STOP DBG_APB_FZ2_DBG_TIM17_STOP /*!< TIM17 counter stopped when core is halted */ +/** + * @} + */ + + +#if defined(VREFBUF) +/** @defgroup SYSTEM_LL_EC_VOLTAGE VREFBUF VOLTAGE + * @{ + */ +#define LL_VREFBUF_VOLTAGE_SCALE0 0x00000000U /*!< Voltage reference scale 0 (VREF_OUT1) */ +#define LL_VREFBUF_VOLTAGE_SCALE1 VREFBUF_CSR_VRS /*!< Voltage reference scale 1 (VREF_OUT2) */ +/** + * @} + */ +#endif /* VREFBUF */ + +/** @defgroup SYSTEM_LL_EC_LATENCY FLASH LATENCY + * @{ + */ +#define LL_FLASH_LATENCY_0 0x00000000U /*!< FLASH Zero Latency cycle */ +#define LL_FLASH_LATENCY_1 FLASH_ACR_LATENCY_0 /*!< FLASH One Latency cycle */ +#define LL_FLASH_LATENCY_2 FLASH_ACR_LATENCY_1 /*!< FLASH Two wait states */ +#define LL_FLASH_LATENCY_3 (FLASH_ACR_LATENCY_1 | FLASH_ACR_LATENCY_0) /*!< FLASH Three wait states */ +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup SYSTEM_LL_Exported_Functions SYSTEM Exported Functions + * @{ + */ + +/** @defgroup SYSTEM_LL_EF_SYSCFG SYSCFG + * @{ + */ + +/** + * @brief Set memory mapping at address 0x00000000 + * @rmtoll SYSCFG_CFGR1 MEM_MODE LL_SYSCFG_SetRemapMemory + * @param Memory This parameter can be one of the following values: + * @arg @ref LL_SYSCFG_REMAP_FLASH + * @arg @ref LL_SYSCFG_REMAP_SYSTEMFLASH + * @arg @ref LL_SYSCFG_REMAP_SRAM + * @retval None + */ +__STATIC_INLINE void LL_SYSCFG_SetRemapMemory(uint32_t Memory) +{ + MODIFY_REG(SYSCFG->CFGR1, SYSCFG_CFGR1_MEM_MODE, Memory); +} + +/** + * @brief Get memory mapping at address 0x00000000 + * @rmtoll SYSCFG_CFGR1 MEM_MODE LL_SYSCFG_GetRemapMemory + * @retval Returned value can be one of the following values: + * @arg @ref LL_SYSCFG_REMAP_FLASH + * @arg @ref LL_SYSCFG_REMAP_SYSTEMFLASH + * @arg @ref LL_SYSCFG_REMAP_SRAM + */ +__STATIC_INLINE uint32_t LL_SYSCFG_GetRemapMemory(void) +{ + return (uint32_t)(READ_BIT(SYSCFG->CFGR1, SYSCFG_CFGR1_MEM_MODE)); +} + +/** + * @brief Enable remap of a pin on different pad + * @rmtoll SYSCFG_CFGR1 PA11_RMP LL_SYSCFG_EnablePinRemap\n + * SYSCFG_CFGR1 PA12_RMP LL_SYSCFG_EnablePinRemap\n + * @param PinRemap This parameter can be a combination of the following values: + * @arg @ref LL_SYSCFG_PIN_RMP_PA11 + * @arg @ref LL_SYSCFG_PIN_RMP_PA12 + * @retval None + */ +__STATIC_INLINE void LL_SYSCFG_EnablePinRemap(uint32_t PinRemap) +{ + SET_BIT(SYSCFG->CFGR1, PinRemap); +} + +/** + * @brief Enable remap of a pin on different pad + * @rmtoll SYSCFG_CFGR1 PA11_RMP LL_SYSCFG_DisablePinRemap\n + * SYSCFG_CFGR1 PA12_RMP LL_SYSCFG_DisablePinRemap\n + * @param PinRemap This parameter can be a combination of the following values: + * @arg @ref LL_SYSCFG_PIN_RMP_PA11 + * @arg @ref LL_SYSCFG_PIN_RMP_PA12 + * @retval None + */ +__STATIC_INLINE void LL_SYSCFG_DisablePinRemap(uint32_t PinRemap) +{ + CLEAR_BIT(SYSCFG->CFGR1, PinRemap); +} + +#if defined(SYSCFG_CFGR1_IR_MOD) +/** + * @brief Set IR Modulation Envelope signal source. + * @rmtoll SYSCFG_CFGR1 IR_MOD LL_SYSCFG_SetIRModEnvelopeSignal + * @param Source This parameter can be one of the following values: + * @arg @ref LL_SYSCFG_IR_MOD_TIM16 + * @arg @ref LL_SYSCFG_IR_MOD_USART1 + * @arg @ref LL_SYSCFG_IR_MOD_USART4 + * @retval None + */ +__STATIC_INLINE void LL_SYSCFG_SetIRModEnvelopeSignal(uint32_t Source) +{ + MODIFY_REG(SYSCFG->CFGR1, SYSCFG_CFGR1_IR_MOD, Source); +} + +/** + * @brief Get IR Modulation Envelope signal source. + * @rmtoll SYSCFG_CFGR1 IR_MOD LL_SYSCFG_GetIRModEnvelopeSignal + * @retval Returned value can be one of the following values: + * @arg @ref LL_SYSCFG_IR_MOD_TIM16 + * @arg @ref LL_SYSCFG_IR_MOD_USART1 + * @arg @ref LL_SYSCFG_IR_MOD_USART4 + */ +__STATIC_INLINE uint32_t LL_SYSCFG_GetIRModEnvelopeSignal(void) +{ + return (uint32_t)(READ_BIT(SYSCFG->CFGR1, SYSCFG_CFGR1_IR_MOD)); +} + +/** + * @brief Set IR Output polarity. + * @rmtoll SYSCFG_CFGR1 IR_POL LL_SYSCFG_SetIRPolarity + * @param Polarity This parameter can be one of the following values: + * @arg @ref LL_SYSCFG_IR_POL_INVERTED + * @arg @ref LL_SYSCFG_IR_POL_NOT_INVERTED + * @retval None + */ +__STATIC_INLINE void LL_SYSCFG_SetIRPolarity(uint32_t Polarity) +{ + MODIFY_REG(SYSCFG->CFGR1, SYSCFG_CFGR1_IR_POL, Polarity); +} + +/** + * @brief Get IR Output polarity. + * @rmtoll SYSCFG_CFGR1 IR_POL LL_SYSCFG_GetIRPolarity + * @retval Returned value can be one of the following values: + * @arg @ref LL_SYSCFG_IR_POL_INVERTED + * @arg @ref LL_SYSCFG_IR_POL_NOT_INVERTED + */ +__STATIC_INLINE uint32_t LL_SYSCFG_GetIRPolarity(void) +{ + return (uint32_t)(READ_BIT(SYSCFG->CFGR1, SYSCFG_CFGR1_IR_POL)); +} +#endif /* SYSCFG_CFGR1_IR_MOD */ + +#if defined(SYSCFG_CFGR1_BOOSTEN) +/** + * @brief Enable I/O analog switch voltage booster. + * @note When voltage booster is enabled, I/O analog switches are supplied + * by a dedicated voltage booster, from VDD power domain. This is + * the recommended configuration with low VDDA voltage operation. + * @note The I/O analog switch voltage booster is relevant for peripherals + * using I/O in analog input: ADC, COMP. + * However, COMP and OPAMP inputs have a high impedance and + * voltage booster do not impact performance significantly. + * Therefore, the voltage booster is mainly intended for + * usage with ADC. + * @rmtoll SYSCFG_CFGR1 BOOSTEN LL_SYSCFG_EnableAnalogBooster + * @retval None + */ +__STATIC_INLINE void LL_SYSCFG_EnableAnalogBooster(void) +{ + SET_BIT(SYSCFG->CFGR1, SYSCFG_CFGR1_BOOSTEN); +} + +/** + * @brief Disable I/O analog switch voltage booster. + * @note When voltage booster is enabled, I/O analog switches are supplied + * by a dedicated voltage booster, from VDD power domain. This is + * the recommended configuration with low VDDA voltage operation. + * @note The I/O analog switch voltage booster is relevant for peripherals + * using I/O in analog input: ADC, COMP. + * However, COMP and OPAMP inputs have a high impedance and + * voltage booster do not impact performance significantly. + * Therefore, the voltage booster is mainly intended for + * usage with ADC. + * @rmtoll SYSCFG_CFGR1 BOOSTEN LL_SYSCFG_DisableAnalogBooster + * @retval None + */ +__STATIC_INLINE void LL_SYSCFG_DisableAnalogBooster(void) +{ + CLEAR_BIT(SYSCFG->CFGR1, SYSCFG_CFGR1_BOOSTEN); +} +#endif /* SYSCFG_CFGR1_BOOSTEN */ + +/** + * @brief Enable the I2C fast mode plus driving capability. + * @rmtoll SYSCFG_CFGR1 I2C_FMP_PB6 LL_SYSCFG_EnableFastModePlus\n + * SYSCFG_CFGR1 I2C_FMP_PB7 LL_SYSCFG_EnableFastModePlus\n + * SYSCFG_CFGR1 I2C_FMP_PB8 LL_SYSCFG_EnableFastModePlus\n + * SYSCFG_CFGR1 I2C_FMP_PB9 LL_SYSCFG_EnableFastModePlus\n + * SYSCFG_CFGR1 I2C_FMP_I2C1 LL_SYSCFG_EnableFastModePlus\n + * SYSCFG_CFGR1 I2C_FMP_I2C2 LL_SYSCFG_EnableFastModePlus\n + * SYSCFG_CFGR1 I2C_FMP_I2C3 LL_SYSCFG_EnableFastModePlus\n + * SYSCFG_CFGR1 I2C_FMP_PA9 LL_SYSCFG_EnableFastModePlus\n + * SYSCFG_CFGR1 I2C_FMP_PA10 LL_SYSCFG_EnableFastModePlus + * @param ConfigFastModePlus This parameter can be a combination of the following values: + * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB6 + * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB7 + * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB8 + * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB9 + * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_I2C1 (*) + * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_I2C2 (*) + * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_I2C3 (*) + * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PA9 (*) + * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PA10 (*) + * + * (*) value not defined in all devices + * @retval None + */ +__STATIC_INLINE void LL_SYSCFG_EnableFastModePlus(uint32_t ConfigFastModePlus) +{ + SET_BIT(SYSCFG->CFGR1, ConfigFastModePlus); +} + +/** + * @brief Disable the I2C fast mode plus driving capability. + * @rmtoll SYSCFG_CFGR1 I2C_FMP_PB6 LL_SYSCFG_DisableFastModePlus\n + * SYSCFG_CFGR1 I2C_FMP_PB7 LL_SYSCFG_DisableFastModePlus\n + * SYSCFG_CFGR1 I2C_FMP_PB8 LL_SYSCFG_DisableFastModePlus\n + * SYSCFG_CFGR1 I2C_FMP_PB9 LL_SYSCFG_DisableFastModePlus\n + * SYSCFG_CFGR1 I2C_FMP_I2C1 LL_SYSCFG_DisableFastModePlus\n + * SYSCFG_CFGR1 I2C_FMP_I2C2 LL_SYSCFG_DisableFastModePlus\n + * SYSCFG_CFGR1 I2C_FMP_I2C3 LL_SYSCFG_DisableFastModePlus\n + * SYSCFG_CFGR1 I2C_FMP_PA9 LL_SYSCFG_DisableFastModePlus\n + * SYSCFG_CFGR1 I2C_FMP_PA10 LL_SYSCFG_DisableFastModePlus + * @param ConfigFastModePlus This parameter can be a combination of the following values: + * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB6 + * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB7 + * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB8 + * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB9 + * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_I2C1 (*) + * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_I2C2 (*) + * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_I2C3 (*) + * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PA9 (*) + * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PA10 (*) + * + * (*) value not defined in all devices + * @retval None + */ +__STATIC_INLINE void LL_SYSCFG_DisableFastModePlus(uint32_t ConfigFastModePlus) +{ + CLEAR_BIT(SYSCFG->CFGR1, ConfigFastModePlus); +} + +#if defined(SYSCFG_CFGR1_UCPD1_STROBE) || defined(SYSCFG_CFGR1_UCPD2_STROBE) +/** + * @brief Disable dead battery behavior + * @rmtoll SYSCFG_CFGR1 UCPD1_STROBE LL_SYSCFG_DisableDBATT\n + * SYSCFG_CFGR1 UCPD2_STROBE LL_SYSCFG_DisableDBATT + * @param ConfigDeadBattery This parameter can be a combination of the following values: + * @arg @ref LL_SYSCFG_UCPD1_STROBE\n + * @arg @ref LL_SYSCFG_UCPD2_STROBE + * (*) value not defined in all devices + * @retval None + */ +__STATIC_INLINE void LL_SYSCFG_DisableDBATT(uint32_t ConfigDeadBattery) +{ + SET_BIT(SYSCFG->CFGR1, ConfigDeadBattery); +} +#endif /* SYSCFG_CFGR1_UCPD1_STROBE || SYSCFG_CFGR1_UCPD2_STROBE */ + +#if defined(SYSCFG_ITLINE0_SR_EWDG) +/** + * @brief Check if Window watchdog interrupt occurred or not. + * @rmtoll SYSCFG_ITLINE0 SR_EWDG LL_SYSCFG_IsActiveFlag_WWDG + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_WWDG(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[0], SYSCFG_ITLINE0_SR_EWDG) == (SYSCFG_ITLINE0_SR_EWDG)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE0_SR_EWDG */ + +#if defined (PWR_PVD_SUPPORT) +/** + * @brief Check if PVD supply monitoring interrupt occurred or not (EXTI line 16). + * @rmtoll SYSCFG_ITLINE1 SR_PVDOUT LL_SYSCFG_IsActiveFlag_PVDOUT + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_PVDOUT(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[1], SYSCFG_ITLINE1_SR_PVDOUT) == (SYSCFG_ITLINE1_SR_PVDOUT)) ? 1UL : 0UL); +} +#endif /* PWR_PVD_SUPPORT */ + +#if defined (PWR_PVM_SUPPORT) +/** + * @brief Check if VDDUSB supply monitoring interrupt occurred or not (EXTI line 34). + * @rmtoll SYSCFG_ITLINE1 SR_PVMOUT LL_SYSCFG_IsActiveFlag_PVMOUT + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_PVMOUT(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[1], SYSCFG_ITLINE1_SR_PVMOUT) == (SYSCFG_ITLINE1_SR_PVMOUT)) ? 1UL : 0UL); +} +#endif /* PWR_PVM_SUPPORT */ + +#if defined(SYSCFG_ITLINE2_SR_RTC) +/** + * @brief Check if RTC Wake Up interrupt occurred or not (EXTI line 19). + * @rmtoll SYSCFG_ITLINE2 SR_RTC_WAKEUP LL_SYSCFG_IsActiveFlag_RTC_WAKEUP + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_RTC_WAKEUP(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[2], SYSCFG_ITLINE2_SR_RTC) == (SYSCFG_ITLINE2_SR_RTC)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE2_SR_RTC */ + +#if defined(SYSCFG_ITLINE2_SR_TAMPER) +/** + * @brief Check if RTC Tamper and TimeStamp interrupt occurred or not (EXTI line 21). + * @rmtoll SYSCFG_ITLINE2 SR_TAMPER LL_SYSCFG_IsActiveFlag_TAMPER + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_TAMPER(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[2], SYSCFG_ITLINE2_SR_TAMPER) == (SYSCFG_ITLINE2_SR_TAMPER)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE2_SR_TAMPER */ + +#if defined(SYSCFG_ITLINE3_SR_FLASH_ITF) +/** + * @brief Check if Flash interface interrupt occurred or not. + * @rmtoll SYSCFG_ITLINE3 SR_FLASH_ITF LL_SYSCFG_IsActiveFlag_FLASH_ITF + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_FLASH_ITF(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[3], SYSCFG_ITLINE3_SR_FLASH_ITF) == (SYSCFG_ITLINE3_SR_FLASH_ITF)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE3_SR_FLASH_ITF */ + +#if defined(SYSCFG_ITLINE3_SR_FLASH_ECC) +/** + * @brief Check if Flash interface interrupt occurred or not. + * @rmtoll SYSCFG_ITLINE3 SR_FLASH_ECC LL_SYSCFG_IsActiveFlag_FLASH_ECC + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_FLASH_ECC(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[3], SYSCFG_ITLINE3_SR_FLASH_ECC) == (SYSCFG_ITLINE3_SR_FLASH_ECC)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE3_SR_FLASH_ECC */ + +#if defined(SYSCFG_ITLINE4_SR_CLK_CTRL) +/** + * @brief Check if Reset and clock control interrupt occurred or not. + * @rmtoll SYSCFG_ITLINE4 SR_CLK_CTRL LL_SYSCFG_IsActiveFlag_CLK_CTRL + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_CLK_CTRL(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[4], SYSCFG_ITLINE4_SR_CLK_CTRL) == (SYSCFG_ITLINE4_SR_CLK_CTRL)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE4_SR_CLK_CTRL */ + +#if defined(CRS) +/** + * @brief Check if Reset and clock control interrupt occurred or not. + * @rmtoll SYSCFG_ITLINE4 SR_CRS LL_SYSCFG_IsActiveFlag_CRS + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_CRS(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[4], SYSCFG_ITLINE4_SR_CRS) == (SYSCFG_ITLINE4_SR_CRS)) ? 1UL : 0UL); +} +#endif /* CRS */ +#if defined(SYSCFG_ITLINE5_SR_EXTI0) +/** + * @brief Check if EXTI line 0 interrupt occurred or not. + * @rmtoll SYSCFG_ITLINE5 SR_EXTI0 LL_SYSCFG_IsActiveFlag_EXTI0 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_EXTI0(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[5], SYSCFG_ITLINE5_SR_EXTI0) == (SYSCFG_ITLINE5_SR_EXTI0)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE5_SR_EXTI0 */ + +#if defined(SYSCFG_ITLINE5_SR_EXTI1) +/** + * @brief Check if EXTI line 1 interrupt occurred or not. + * @rmtoll SYSCFG_ITLINE5 SR_EXTI1 LL_SYSCFG_IsActiveFlag_EXTI1 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_EXTI1(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[5], SYSCFG_ITLINE5_SR_EXTI1) == (SYSCFG_ITLINE5_SR_EXTI1)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE5_SR_EXTI1 */ + +#if defined(SYSCFG_ITLINE6_SR_EXTI2) +/** + * @brief Check if EXTI line 2 interrupt occurred or not. + * @rmtoll SYSCFG_ITLINE6 SR_EXTI2 LL_SYSCFG_IsActiveFlag_EXTI2 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_EXTI2(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[6], SYSCFG_ITLINE6_SR_EXTI2) == (SYSCFG_ITLINE6_SR_EXTI2)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE6_SR_EXTI2 */ + +#if defined(SYSCFG_ITLINE6_SR_EXTI3) +/** + * @brief Check if EXTI line 3 interrupt occurred or not. + * @rmtoll SYSCFG_ITLINE6 SR_EXTI3 LL_SYSCFG_IsActiveFlag_EXTI3 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_EXTI3(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[6], SYSCFG_ITLINE6_SR_EXTI3) == (SYSCFG_ITLINE6_SR_EXTI3)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE6_SR_EXTI3 */ + +#if defined(SYSCFG_ITLINE7_SR_EXTI4) +/** + * @brief Check if EXTI line 4 interrupt occurred or not. + * @rmtoll SYSCFG_ITLINE7 SR_EXTI4 LL_SYSCFG_IsActiveFlag_EXTI4 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_EXTI4(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[7], SYSCFG_ITLINE7_SR_EXTI4) == (SYSCFG_ITLINE7_SR_EXTI4)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE7_SR_EXTI4 */ + +#if defined(SYSCFG_ITLINE7_SR_EXTI5) +/** + * @brief Check if EXTI line 5 interrupt occurred or not. + * @rmtoll SYSCFG_ITLINE7 SR_EXTI5 LL_SYSCFG_IsActiveFlag_EXTI5 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_EXTI5(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[7], SYSCFG_ITLINE7_SR_EXTI5) == (SYSCFG_ITLINE7_SR_EXTI5)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE7_SR_EXTI5 */ + +#if defined(SYSCFG_ITLINE7_SR_EXTI6) +/** + * @brief Check if EXTI line 6 interrupt occurred or not. + * @rmtoll SYSCFG_ITLINE7 SR_EXTI6 LL_SYSCFG_IsActiveFlag_EXTI6 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_EXTI6(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[7], SYSCFG_ITLINE7_SR_EXTI6) == (SYSCFG_ITLINE7_SR_EXTI6)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE7_SR_EXTI6 */ + +#if defined(SYSCFG_ITLINE7_SR_EXTI7) +/** + * @brief Check if EXTI line 7 interrupt occurred or not. + * @rmtoll SYSCFG_ITLINE7 SR_EXTI7 LL_SYSCFG_IsActiveFlag_EXTI7 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_EXTI7(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[7], SYSCFG_ITLINE7_SR_EXTI7) == (SYSCFG_ITLINE7_SR_EXTI7)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE7_SR_EXTI7 */ + +#if defined(SYSCFG_ITLINE7_SR_EXTI8) +/** + * @brief Check if EXTI line 8 interrupt occurred or not. + * @rmtoll SYSCFG_ITLINE7 SR_EXTI8 LL_SYSCFG_IsActiveFlag_EXTI8 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_EXTI8(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[7], SYSCFG_ITLINE7_SR_EXTI8) == (SYSCFG_ITLINE7_SR_EXTI8)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE7_SR_EXTI8 */ + +#if defined(SYSCFG_ITLINE7_SR_EXTI9) +/** + * @brief Check if EXTI line 9 interrupt occurred or not. + * @rmtoll SYSCFG_ITLINE7 SR_EXTI9 LL_SYSCFG_IsActiveFlag_EXTI9 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_EXTI9(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[7], SYSCFG_ITLINE7_SR_EXTI9) == (SYSCFG_ITLINE7_SR_EXTI9)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE7_SR_EXTI9 */ + +#if defined(SYSCFG_ITLINE7_SR_EXTI10) +/** + * @brief Check if EXTI line 10 interrupt occurred or not. + * @rmtoll SYSCFG_ITLINE7 SR_EXTI10 LL_SYSCFG_IsActiveFlag_EXTI10 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_EXTI10(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[7], SYSCFG_ITLINE7_SR_EXTI10) == (SYSCFG_ITLINE7_SR_EXTI10)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE7_SR_EXTI10 */ + +#if defined(SYSCFG_ITLINE7_SR_EXTI11) +/** + * @brief Check if EXTI line 11 interrupt occurred or not. + * @rmtoll SYSCFG_ITLINE7 SR_EXTI11 LL_SYSCFG_IsActiveFlag_EXTI11 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_EXTI11(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[7], SYSCFG_ITLINE7_SR_EXTI11) == (SYSCFG_ITLINE7_SR_EXTI11)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE7_SR_EXTI11 */ + +#if defined(SYSCFG_ITLINE7_SR_EXTI12) +/** + * @brief Check if EXTI line 12 interrupt occurred or not. + * @rmtoll SYSCFG_ITLINE7 SR_EXTI12 LL_SYSCFG_IsActiveFlag_EXTI12 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_EXTI12(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[7], SYSCFG_ITLINE7_SR_EXTI12) == (SYSCFG_ITLINE7_SR_EXTI12)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE7_SR_EXTI12 */ + +#if defined(SYSCFG_ITLINE7_SR_EXTI13) +/** + * @brief Check if EXTI line 13 interrupt occurred or not. + * @rmtoll SYSCFG_ITLINE7 SR_EXTI13 LL_SYSCFG_IsActiveFlag_EXTI13 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_EXTI13(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[7], SYSCFG_ITLINE7_SR_EXTI13) == (SYSCFG_ITLINE7_SR_EXTI13)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE7_SR_EXTI13 */ + +#if defined(SYSCFG_ITLINE7_SR_EXTI14) +/** + * @brief Check if EXTI line 14 interrupt occurred or not. + * @rmtoll SYSCFG_ITLINE7 SR_EXTI14 LL_SYSCFG_IsActiveFlag_EXTI14 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_EXTI14(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[7], SYSCFG_ITLINE7_SR_EXTI14) == (SYSCFG_ITLINE7_SR_EXTI14)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE7_SR_EXTI14 */ + +#if defined(SYSCFG_ITLINE7_SR_EXTI15) +/** + * @brief Check if EXTI line 15 interrupt occurred or not. + * @rmtoll SYSCFG_ITLINE7 SR_EXTI15 LL_SYSCFG_IsActiveFlag_EXTI15 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_EXTI15(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[7], SYSCFG_ITLINE7_SR_EXTI15) == (SYSCFG_ITLINE7_SR_EXTI15)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE7_SR_EXTI15 */ + +#if defined(SYSCFG_ITLINE8_SR_UCPD1) +/** + * @brief Check if UCPD1 interrupt occurred or not. + * @rmtoll SYSCFG_ITLINE8 SR_UCPD1 LL_SYSCFG_IsActiveFlag_UCPD1 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_UCPD1(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[8], SYSCFG_ITLINE8_SR_UCPD1) == (SYSCFG_ITLINE8_SR_UCPD1)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE8_SR_UCPD1 */ + +#if defined(SYSCFG_ITLINE8_SR_UCPD2) +/** + * @brief Check if UCPD2 interrupt occurred or not. + * @rmtoll SYSCFG_ITLINE8 SR_UCPD2 LL_SYSCFG_IsActiveFlag_UCPD2 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_UCPD2(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[8], SYSCFG_ITLINE8_SR_UCPD2) == (SYSCFG_ITLINE8_SR_UCPD2)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE8_SR_UCPD2 */ + +#if defined(SYSCFG_ITLINE8_SR_USB) +/** + * @brief Check if USB interrupt occurred or not. + * @rmtoll SYSCFG_ITLINE8 SR_USB LL_SYSCFG_IsActiveFlag_USB + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_USB(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[8], SYSCFG_ITLINE8_SR_USB) == (SYSCFG_ITLINE8_SR_USB)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE8_SR_USB */ + +#if defined(SYSCFG_ITLINE9_SR_DMA1_CH1) +/** + * @brief Check if DMA1 channel 1 interrupt occurred or not. + * @rmtoll SYSCFG_ITLINE9 SR_DMA1_CH1 LL_SYSCFG_IsActiveFlag_DMA1_CH1 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_DMA1_CH1(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[9], SYSCFG_ITLINE9_SR_DMA1_CH1) == (SYSCFG_ITLINE9_SR_DMA1_CH1)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE9_SR_DMA1_CH1 */ + +#if defined(SYSCFG_ITLINE10_SR_DMA1_CH2) +/** + * @brief Check if DMA1 channel 2 interrupt occurred or not. + * @rmtoll SYSCFG_ITLINE10 SR_DMA1_CH2 LL_SYSCFG_IsActiveFlag_DMA1_CH2 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_DMA1_CH2(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[10], SYSCFG_ITLINE10_SR_DMA1_CH2) == (SYSCFG_ITLINE10_SR_DMA1_CH2)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE10_SR_DMA1_CH2 */ + +#if defined(SYSCFG_ITLINE10_SR_DMA1_CH3) +/** + * @brief Check if DMA1 channel 3 interrupt occurred or not. + * @rmtoll SYSCFG_ITLINE10 SR_DMA1_CH3 LL_SYSCFG_IsActiveFlag_DMA1_CH3 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_DMA1_CH3(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[10], SYSCFG_ITLINE10_SR_DMA1_CH3) == (SYSCFG_ITLINE10_SR_DMA1_CH3)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE10_SR_DMA1_CH3 */ + +#if defined(SYSCFG_ITLINE11_SR_DMA1_CH4) +/** + * @brief Check if DMA1 channel 4 interrupt occurred or not. + * @rmtoll SYSCFG_ITLINE11 SR_DMA1_CH4 LL_SYSCFG_IsActiveFlag_DMA1_CH4 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_DMA1_CH4(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[11], SYSCFG_ITLINE11_SR_DMA1_CH4) == (SYSCFG_ITLINE11_SR_DMA1_CH4)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE11_SR_DMA1_CH4 */ + +#if defined(SYSCFG_ITLINE11_SR_DMA1_CH5) +/** + * @brief Check if DMA1 channel 5 interrupt occurred or not. + * @rmtoll SYSCFG_ITLINE11 SR_DMA1_CH5 LL_SYSCFG_IsActiveFlag_DMA1_CH5 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_DMA1_CH5(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[11], SYSCFG_ITLINE11_SR_DMA1_CH5) == (SYSCFG_ITLINE11_SR_DMA1_CH5)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE11_SR_DMA1_CH5 */ + +#if defined(SYSCFG_ITLINE11_SR_DMA1_CH6) +/** + * @brief Check if DMA1 channel 6 interrupt occurred or not. + * @rmtoll SYSCFG_ITLINE11 SR_DMA1_CH6 LL_SYSCFG_IsActiveFlag_DMA1_CH6 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_DMA1_CH6(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[11], SYSCFG_ITLINE11_SR_DMA1_CH6) == (SYSCFG_ITLINE11_SR_DMA1_CH6)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE11_SR_DMA1_CH6 */ + +#if defined(SYSCFG_ITLINE11_SR_DMA1_CH7) +/** + * @brief Check if DMA1 channel 7 interrupt occurred or not. + * @rmtoll SYSCFG_ITLINE11 SR_DMA1_CH7 LL_SYSCFG_IsActiveFlag_DMA1_CH7 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_DMA1_CH7(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[11], SYSCFG_ITLINE11_SR_DMA1_CH7) == (SYSCFG_ITLINE11_SR_DMA1_CH7)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE11_SR_DMA1_CH7 */ + +#if defined(SYSCFG_ITLINE11_SR_DMAMUX1) +/** + * @brief Check if DMAMUX interrupt occurred or not. + * @rmtoll SYSCFG_ITLINE11 SR_DMAMUX1 LL_SYSCFG_IsActiveFlag_DMAMUX + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_DMAMUX(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[11], SYSCFG_ITLINE11_SR_DMAMUX1) == (SYSCFG_ITLINE11_SR_DMAMUX1)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE11_SR_DMAMUX */ + +#if defined(SYSCFG_ITLINE11_SR_DMA2_CH1) +/** + * @brief Check if DMA2_CH1 interrupt occurred or not. + * @rmtoll SYSCFG_ITLINE11 SR_DMA2_CH1 LL_SYSCFG_IsActiveFlag_DMA2_CH1 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_DMA2_CH1(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[11], SYSCFG_ITLINE11_SR_DMA2_CH1) == (SYSCFG_ITLINE11_SR_DMA2_CH1)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE11_SR_DMA2_CH1 */ + +#if defined(SYSCFG_ITLINE11_SR_DMA2_CH2) +/** + * @brief Check if DMA2_CH2 interrupt occurred or not. + * @rmtoll SYSCFG_ITLINE11 SR_DMA2_CH2 LL_SYSCFG_IsActiveFlag_DMA2_CH2 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_DMA2_CH2(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[11], SYSCFG_ITLINE11_SR_DMA2_CH2) == (SYSCFG_ITLINE11_SR_DMA2_CH2)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE11_SR_DMA2_CH2 */ + +#if defined(SYSCFG_ITLINE11_SR_DMA2_CH3) +/** + * @brief Check if DMA2_CH3 interrupt occurred or not. + * @rmtoll SYSCFG_ITLINE11 SR_DMA2_CH3 LL_SYSCFG_IsActiveFlag_DMA2_CH3 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_DMA2_CH3(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[11], SYSCFG_ITLINE11_SR_DMA2_CH3) == (SYSCFG_ITLINE11_SR_DMA2_CH3)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE11_SR_DMA2_CH3 */ + +#if defined(SYSCFG_ITLINE11_SR_DMA2_CH4) +/** + * @brief Check if DMA2_CH4 interrupt occurred or not. + * @rmtoll SYSCFG_ITLINE11 SR_DMA2_CH4 LL_SYSCFG_IsActiveFlag_DMA2_CH4 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_DMA2_CH4(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[11], SYSCFG_ITLINE11_SR_DMA2_CH4) == (SYSCFG_ITLINE11_SR_DMA2_CH4)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE11_SR_DMA2_CH4 */ + +#if defined(SYSCFG_ITLINE11_SR_DMA2_CH5) +/** + * @brief Check if DMA2_CH5 interrupt occurred or not. + * @rmtoll SYSCFG_ITLINE11 SR_DMA2_CH5 LL_SYSCFG_IsActiveFlag_DMA2_CH5 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_DMA2_CH5(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[11], SYSCFG_ITLINE11_SR_DMA2_CH5) == (SYSCFG_ITLINE11_SR_DMA2_CH5)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE11_SR_DMA2_CH5 */ + +#if defined(SYSCFG_ITLINE12_SR_ADC) +/** + * @brief Check if ADC interrupt occurred or not. + * @rmtoll SYSCFG_ITLINE12 SR_ADC LL_SYSCFG_IsActiveFlag_ADC + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_ADC(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[12], SYSCFG_ITLINE12_SR_ADC) == (SYSCFG_ITLINE12_SR_ADC)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE12_SR_ADC */ + +#if defined(SYSCFG_ITLINE12_SR_COMP1) +/** + * @brief Check if Comparator 1 interrupt occurred or not (EXTI line 21). + * @rmtoll SYSCFG_ITLINE12 SR_COMP1 LL_SYSCFG_IsActiveFlag_COMP1 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_COMP1(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[12], SYSCFG_ITLINE12_SR_COMP1) == (SYSCFG_ITLINE12_SR_COMP1)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE12_SR_COMP1 */ + +#if defined(SYSCFG_ITLINE12_SR_COMP2) +/** + * @brief Check if Comparator 2 interrupt occurred or not (EXTI line 22). + * @rmtoll SYSCFG_ITLINE12 SR_COMP2 LL_SYSCFG_IsActiveFlag_COMP2 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_COMP2(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[12], SYSCFG_ITLINE12_SR_COMP2) == (SYSCFG_ITLINE12_SR_COMP2)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE12_SR_COMP2 */ + +#if defined(SYSCFG_ITLINE12_SR_COMP3) +/** + * @brief Check if Comparator 3 interrupt occurred or not (EXTI line 20). + * @rmtoll SYSCFG_ITLINE12 SR_COMP3 LL_SYSCFG_IsActiveFlag_COMP3 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_COMP3(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[12], SYSCFG_ITLINE12_SR_COMP3) == (SYSCFG_ITLINE12_SR_COMP3)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE12_SR_COMP3 */ + +#if defined(SYSCFG_ITLINE13_SR_TIM1_BRK) +/** + * @brief Check if Timer 1 break interrupt occurred or not. + * @rmtoll SYSCFG_ITLINE13 SR_TIM1_BRK LL_SYSCFG_IsActiveFlag_TIM1_BRK + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_TIM1_BRK(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[13], SYSCFG_ITLINE13_SR_TIM1_BRK) == (SYSCFG_ITLINE13_SR_TIM1_BRK)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE13_SR_TIM1_BRK */ + +#if defined(SYSCFG_ITLINE13_SR_TIM1_UPD) +/** + * @brief Check if Timer 1 update interrupt occurred or not. + * @rmtoll SYSCFG_ITLINE13 SR_TIM1_UPD LL_SYSCFG_IsActiveFlag_TIM1_UPD + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_TIM1_UPD(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[13], SYSCFG_ITLINE13_SR_TIM1_UPD) == (SYSCFG_ITLINE13_SR_TIM1_UPD)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE13_SR_TIM1_UPD */ + +#if defined(SYSCFG_ITLINE13_SR_TIM1_TRG) +/** + * @brief Check if Timer 1 trigger interrupt occurred or not. + * @rmtoll SYSCFG_ITLINE13 SR_TIM1_TRG LL_SYSCFG_IsActiveFlag_TIM1_TRG + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_TIM1_TRG(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[13], SYSCFG_ITLINE13_SR_TIM1_TRG) == (SYSCFG_ITLINE13_SR_TIM1_TRG)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE13_SR_TIM1_TRG */ + +#if defined(SYSCFG_ITLINE13_SR_TIM1_CCU) +/** + * @brief Check if Timer 1 commutation interrupt occurred or not. + * @rmtoll SYSCFG_ITLINE13 SR_TIM1_CCU LL_SYSCFG_IsActiveFlag_TIM1_CCU + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_TIM1_CCU(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[13], SYSCFG_ITLINE13_SR_TIM1_CCU) == (SYSCFG_ITLINE13_SR_TIM1_CCU)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE13_SR_TIM1_CCU */ + +#if defined(SYSCFG_ITLINE14_SR_TIM1_CC) +/** + * @brief Check if Timer 1 capture compare interrupt occurred or not. + * @rmtoll SYSCFG_ITLINE14 SR_TIM1_CC LL_SYSCFG_IsActiveFlag_TIM1_CC + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_TIM1_CC(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[14], SYSCFG_ITLINE14_SR_TIM1_CC) == (SYSCFG_ITLINE14_SR_TIM1_CC)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE14_SR_TIM1_CC */ + +#if defined(SYSCFG_ITLINE15_SR_TIM2_GLB) +/** + * @brief Check if Timer 2 interrupt occurred or not. + * @rmtoll SYSCFG_ITLINE15 SR_TIM2_GLB LL_SYSCFG_IsActiveFlag_TIM2 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_TIM2(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[15], SYSCFG_ITLINE15_SR_TIM2_GLB) == (SYSCFG_ITLINE15_SR_TIM2_GLB)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE15_SR_TIM2_GLB */ + +#if defined(SYSCFG_ITLINE16_SR_TIM3_GLB) +/** + * @brief Check if Timer 3 interrupt occurred or not. + * @rmtoll SYSCFG_ITLINE16 SR_TIM3_GLB LL_SYSCFG_IsActiveFlag_TIM3 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_TIM3(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[16], SYSCFG_ITLINE16_SR_TIM3_GLB) == (SYSCFG_ITLINE16_SR_TIM3_GLB)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE16_SR_TIM3_GLB */ + +#if defined(SYSCFG_ITLINE16_SR_TIM4_GLB) +/** + * @brief Check if Timer 3 interrupt occurred or not. + * @rmtoll SYSCFG_ITLINE16 SR_TIM4_GLB LL_SYSCFG_IsActiveFlag_TIM4 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_TIM4(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[16], SYSCFG_ITLINE16_SR_TIM4_GLB) == (SYSCFG_ITLINE16_SR_TIM4_GLB)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE16_SR_TIM4_GLB */ + +#if defined(SYSCFG_ITLINE17_SR_DAC) +/** + * @brief Check if DAC underrun interrupt occurred or not. + * @rmtoll SYSCFG_ITLINE17 SR_DAC LL_SYSCFG_IsActiveFlag_DAC + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_DAC(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[17], SYSCFG_ITLINE17_SR_DAC) == (SYSCFG_ITLINE17_SR_DAC)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE17_SR_DAC */ + +#if defined(SYSCFG_ITLINE17_SR_TIM6_GLB) +/** + * @brief Check if Timer 6 interrupt occurred or not. + * @rmtoll SYSCFG_ITLINE17 SR_TIM6_GLB LL_SYSCFG_IsActiveFlag_TIM6 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_TIM6(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[17], SYSCFG_ITLINE17_SR_TIM6_GLB) == (SYSCFG_ITLINE17_SR_TIM6_GLB)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE17_SR_TIM6_GLB */ + +#if defined(SYSCFG_ITLINE17_SR_LPTIM1_GLB) +/** + * @brief Check if LPTIM1 interrupt occurred or not. + * @rmtoll SYSCFG_ITLINE17 SR_LPTIM1_GLB LL_SYSCFG_IsActiveFlag_LPTIM1 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_LPTIM1(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[17], SYSCFG_ITLINE17_SR_LPTIM1_GLB) == (SYSCFG_ITLINE17_SR_LPTIM1_GLB)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE17_SR_LPTIM1_GLB */ + +#if defined(SYSCFG_ITLINE18_SR_TIM7_GLB) +/** + * @brief Check if Timer 7 interrupt occurred or not. + * @rmtoll SYSCFG_ITLINE18 SR_TIM7_GLB LL_SYSCFG_IsActiveFlag_TIM7 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_TIM7(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[18], SYSCFG_ITLINE18_SR_TIM7_GLB) == (SYSCFG_ITLINE18_SR_TIM7_GLB)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE18_SR_TIM7_GLB */ + +#if defined(SYSCFG_ITLINE18_SR_LPTIM2_GLB) +/** + * @brief Check if LPTIM2 interrupt occurred or not. + * @rmtoll SYSCFG_ITLINE18 SR_LPTIM2_GLB LL_SYSCFG_IsActiveFlag_LPTIM2 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_LPTIM2(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[18], SYSCFG_ITLINE18_SR_LPTIM2_GLB) == (SYSCFG_ITLINE18_SR_LPTIM2_GLB)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE18_SR_LPTIM2_GLB */ + +#if defined(SYSCFG_ITLINE19_SR_TIM14_GLB) +/** + * @brief Check if Timer 14 interrupt occurred or not. + * @rmtoll SYSCFG_ITLINE19 SR_TIM14_GLB LL_SYSCFG_IsActiveFlag_TIM14 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_TIM14(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[19], SYSCFG_ITLINE19_SR_TIM14_GLB) == (SYSCFG_ITLINE19_SR_TIM14_GLB)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE19_SR_TIM14_GLB */ + +#if defined(SYSCFG_ITLINE20_SR_TIM15_GLB) +/** + * @brief Check if Timer 15 interrupt occurred or not. + * @rmtoll SYSCFG_ITLINE20 SR_TIM15_GLB LL_SYSCFG_IsActiveFlag_TIM15 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_TIM15(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[20], SYSCFG_ITLINE20_SR_TIM15_GLB) == (SYSCFG_ITLINE20_SR_TIM15_GLB)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE20_SR_TIM15_GLB */ + +#if defined(SYSCFG_ITLINE21_SR_TIM16_GLB) +/** + * @brief Check if Timer 16 interrupt occurred or not. + * @rmtoll SYSCFG_ITLINE21 SR_TIM16_GLB LL_SYSCFG_IsActiveFlag_TIM16 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_TIM16(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[21], SYSCFG_ITLINE21_SR_TIM16_GLB) == (SYSCFG_ITLINE21_SR_TIM16_GLB)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE21_SR_TIM16_GLB */ + +#if defined(SYSCFG_ITLINE21_SR_FDCAN1_IT0) +/** + * @brief Check if FDCAN1_IT0 interrupt occurred or not. + * @rmtoll SYSCFG_ITLINE21 SR_FDCAN1_IT0 LL_SYSCFG_IsActiveFlag_FDCAN1_IT0 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_FDCAN1_IT0(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[21], SYSCFG_ITLINE21_SR_FDCAN1_IT0) == (SYSCFG_ITLINE21_SR_FDCAN1_IT0)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE21_SR_FDCAN1_IT0 */ +#if defined(SYSCFG_ITLINE21_SR_FDCAN2_IT0) +/** + * @brief Check if FDCAN2_IT0 interrupt occurred or not. + * @rmtoll SYSCFG_ITLINE21 SR_FDCAN2_IT0 LL_SYSCFG_IsActiveFlag_FDCAN2_IT0 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_FDCAN2_IT0(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[21], SYSCFG_ITLINE21_SR_FDCAN2_IT0) == (SYSCFG_ITLINE21_SR_FDCAN2_IT0)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE21_SR_FDCAN2_IT0 */ + +#if defined(SYSCFG_ITLINE22_SR_TIM17_GLB) +/** + * @brief Check if Timer 17 interrupt occurred or not. + * @rmtoll SYSCFG_ITLINE22 SR_TIM17_GLB LL_SYSCFG_IsActiveFlag_TIM17 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_TIM17(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[22], SYSCFG_ITLINE22_SR_TIM17_GLB) == (SYSCFG_ITLINE22_SR_TIM17_GLB)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE22_SR_TIM17_GLB */ + +#if defined(SYSCFG_ITLINE22_SR_FDCAN1_IT1) +/** + * @brief Check if FDCAN1_IT1 interrupt occurred or not. + * @rmtoll SYSCFG_ITLINE22 SR_FDCAN1_IT1 LL_SYSCFG_IsActiveFlag_FDCAN1_IT1 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_FDCAN1_IT1(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[22], SYSCFG_ITLINE22_SR_FDCAN1_IT1) == (SYSCFG_ITLINE22_SR_FDCAN1_IT1)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE22_SR_FDCAN1_IT1 */ +#if defined(SYSCFG_ITLINE22_SR_FDCAN2_IT1) +/** + * @brief Check if FDCAN2_IT1 interrupt occurred or not. + * @rmtoll SYSCFG_ITLINE22 SR_FDCAN2_IT1 LL_SYSCFG_IsActiveFlag_FDCAN2_IT1 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_FDCAN2_IT1(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[22], SYSCFG_ITLINE22_SR_FDCAN2_IT1) == (SYSCFG_ITLINE22_SR_FDCAN2_IT1)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE22_SR_FDCAN2_IT1 */ + +#if defined(SYSCFG_ITLINE23_SR_I2C1_GLB) +/** + * @brief Check if I2C1 interrupt occurred or not, combined with EXTI line 23. + * @rmtoll SYSCFG_ITLINE23 SR_I2C1_GLB LL_SYSCFG_IsActiveFlag_I2C1 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_I2C1(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[23], SYSCFG_ITLINE23_SR_I2C1_GLB) == (SYSCFG_ITLINE23_SR_I2C1_GLB)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE23_SR_I2C1_GLB */ + +#if defined(SYSCFG_ITLINE24_SR_I2C2_GLB) +/** + * @brief Check if I2C2 interrupt occurred or not. + * @rmtoll SYSCFG_ITLINE24 SR_I2C2_GLB LL_SYSCFG_IsActiveFlag_I2C2 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_I2C2(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[24], SYSCFG_ITLINE24_SR_I2C2_GLB) == (SYSCFG_ITLINE24_SR_I2C2_GLB)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE24_SR_I2C2_GLB */ + +#if defined(SYSCFG_ITLINE24_SR_I2C3_GLB) +/** + * @brief Check if I2C3 interrupt occurred or not. + * @rmtoll SYSCFG_ITLINE24 SR_I2C3_GLB LL_SYSCFG_IsActiveFlag_I2C3 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_I2C3(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[24], SYSCFG_ITLINE24_SR_I2C3_GLB) == (SYSCFG_ITLINE24_SR_I2C3_GLB)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE24_SR_I2C3_GLB */ + +#if defined(SYSCFG_ITLINE25_SR_SPI1) +/** + * @brief Check if SPI1 interrupt occurred or not. + * @rmtoll SYSCFG_ITLINE25 SR_SPI1 LL_SYSCFG_IsActiveFlag_SPI1 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_SPI1(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[25], SYSCFG_ITLINE25_SR_SPI1) == (SYSCFG_ITLINE25_SR_SPI1)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE25_SR_SPI1 */ + +#if defined(SYSCFG_ITLINE26_SR_SPI2) +/** + * @brief Check if SPI2 interrupt occurred or not. + * @rmtoll SYSCFG_ITLINE26 SR_SPI2 LL_SYSCFG_IsActiveFlag_SPI2 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_SPI2(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[26], SYSCFG_ITLINE26_SR_SPI2) == (SYSCFG_ITLINE26_SR_SPI2)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE26_SR_SPI2 */ + +#if defined(SYSCFG_ITLINE26_SR_SPI3) +/** + * @brief Check if SPI3 interrupt occurred or not. + * @rmtoll SYSCFG_ITLINE26 SR_SPI3 LL_SYSCFG_IsActiveFlag_SPI3 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_SPI3(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[26], SYSCFG_ITLINE26_SR_SPI3) == (SYSCFG_ITLINE26_SR_SPI3)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE26_SR_SPI3 */ + +#if defined(SYSCFG_ITLINE27_SR_USART1_GLB) +/** + * @brief Check if USART1 interrupt occurred or not, combined with EXTI line 25. + * @rmtoll SYSCFG_ITLINE27 SR_USART1_GLB LL_SYSCFG_IsActiveFlag_USART1 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_USART1(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[27], SYSCFG_ITLINE27_SR_USART1_GLB) == (SYSCFG_ITLINE27_SR_USART1_GLB)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE27_SR_USART1_GLB */ + +#if defined(SYSCFG_ITLINE28_SR_USART2_GLB) +/** + * @brief Check if USART2 interrupt occurred or not, combined with EXTI line 26. + * @rmtoll SYSCFG_ITLINE28 SR_USART2_GLB LL_SYSCFG_IsActiveFlag_USART2 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_USART2(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[28], SYSCFG_ITLINE28_SR_USART2_GLB) == (SYSCFG_ITLINE28_SR_USART2_GLB)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE28_SR_USART2_GLB */ + +#if defined(SYSCFG_ITLINE28_SR_LPUART2_GLB) +/** + * @brief Check if LPUART2 interrupt occurred or not, combined with EXTI line 26. + * @rmtoll SYSCFG_ITLINE28 SR_LPUART2_GLB LL_SYSCFG_IsActiveFlag_LPUART2 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_LPUART2(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[28], SYSCFG_ITLINE28_SR_LPUART2_GLB) == (SYSCFG_ITLINE28_SR_LPUART2_GLB)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE28_SR_LPUART2_GLB */ + +#if defined(SYSCFG_ITLINE29_SR_USART3_GLB) +/** + * @brief Check if USART3 interrupt occurred or not, combined with EXTI line 28. + * @rmtoll SYSCFG_ITLINE29 SR_USART3_GLB LL_SYSCFG_IsActiveFlag_USART3 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_USART3(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[29], SYSCFG_ITLINE29_SR_USART3_GLB) == (SYSCFG_ITLINE29_SR_USART3_GLB)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE29_SR_USART3_GLB */ + +#if defined(SYSCFG_ITLINE29_SR_USART4_GLB) +/** + * @brief Check if USART4 interrupt occurred or not. + * @rmtoll SYSCFG_ITLINE29 SR_USART4_GLB LL_SYSCFG_IsActiveFlag_USART4 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_USART4(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[29], SYSCFG_ITLINE29_SR_USART4_GLB) == (SYSCFG_ITLINE29_SR_USART4_GLB)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE29_SR_USART4_GLB */ + +#if defined(SYSCFG_ITLINE29_SR_LPUART1_GLB) +/** + * @brief Check if LPUART1 interrupt occurred or not. + * @rmtoll SYSCFG_ITLINE29 SR_LPUART1_GLB LL_SYSCFG_IsActiveFlag_LPUART1 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_LPUART1(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[29], SYSCFG_ITLINE29_SR_LPUART1_GLB) == (SYSCFG_ITLINE29_SR_LPUART1_GLB)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE29_SR_LPUART1_GLB */ + +#if defined(SYSCFG_ITLINE29_SR_USART5_GLB) +/** + * @brief Check if USART5 interrupt occurred or not. + * @rmtoll SYSCFG_ITLINE29 SR_USART5_GLB LL_SYSCFG_IsActiveFlag_USART5 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_USART5(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[29], SYSCFG_ITLINE29_SR_USART5_GLB) == (SYSCFG_ITLINE29_SR_USART5_GLB)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE29_SR_USART5_GLB */ + +#if defined(SYSCFG_ITLINE29_SR_USART6_GLB) +/** + * @brief Check if USART6 interrupt occurred or not. + * @rmtoll SYSCFG_ITLINE29 SR_USART6_GLB LL_SYSCFG_IsActiveFlag_USART6 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_USART6(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[29], SYSCFG_ITLINE29_SR_USART6_GLB) == (SYSCFG_ITLINE29_SR_USART6_GLB)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE29_SR_USART6_GLB */ + +#if defined(SYSCFG_ITLINE30_SR_CEC) +/** + * @brief Check if CEC interrupt occurred or not, combined with EXTI line 27. + * @rmtoll SYSCFG_ITLINE30 SR_CEC LL_SYSCFG_IsActiveFlag_CEC + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_CEC(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[30], SYSCFG_ITLINE30_SR_CEC) == (SYSCFG_ITLINE30_SR_CEC)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE30_SR_CEC */ + +#if defined(SYSCFG_ITLINE31_SR_AES) +/** + * @brief Check if AES interrupt occurred or not + * @rmtoll SYSCFG_ITLINE31 SR_AES LL_SYSCFG_IsActiveFlag_AES + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_AES(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[31], SYSCFG_ITLINE31_SR_AES) == (SYSCFG_ITLINE31_SR_AES)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE31_SR_AES */ + +#if defined(SYSCFG_ITLINE31_SR_RNG) +/** + * @brief Check if RNG interrupt occurred or not, combined with EXTI line 31. + * @rmtoll SYSCFG_ITLINE31 SR_RNG LL_SYSCFG_IsActiveFlag_RNG + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_RNG(void) +{ + return ((READ_BIT(SYSCFG->IT_LINE_SR[31], SYSCFG_ITLINE31_SR_RNG) == (SYSCFG_ITLINE31_SR_RNG)) ? 1UL : 0UL); +} +#endif /* SYSCFG_ITLINE31_SR_RNG */ + +/** + * @brief Set connections to TIM1/15/16/17 Break inputs + * @rmtoll SYSCFG_CFGR2 CLL LL_SYSCFG_SetTIMBreakInputs\n + * SYSCFG_CFGR2 SPL LL_SYSCFG_SetTIMBreakInputs\n + * SYSCFG_CFGR2 PVDL LL_SYSCFG_SetTIMBreakInputs\n + * SYSCFG_CFGR2 ECCL LL_SYSCFG_GetTIMBreakInputs + * @param Break This parameter can be a combination of the following values: + * @ifnot STM32G070xx + * @arg @ref LL_SYSCFG_TIMBREAK_PVD (*) + * @endif + * @arg @ref LL_SYSCFG_TIMBREAK_SRAM_PARITY + * @arg @ref LL_SYSCFG_TIMBREAK_LOCKUP + * @arg @ref LL_SYSCFG_TIMBREAK_ECC + * + * (*) value not defined in all devices + * @retval None + */ +__STATIC_INLINE void LL_SYSCFG_SetTIMBreakInputs(uint32_t Break) +{ +#if defined(SYSCFG_CFGR2_PVDL) + MODIFY_REG(SYSCFG->CFGR2, SYSCFG_CFGR2_CLL | SYSCFG_CFGR2_SPL | SYSCFG_CFGR2_PVDL | SYSCFG_CFGR2_ECCL, Break); +#else + MODIFY_REG(SYSCFG->CFGR2, SYSCFG_CFGR2_CLL | SYSCFG_CFGR2_SPL | SYSCFG_CFGR2_ECCL, Break); +#endif /*SYSCFG_CFGR2_PVDL*/ +} + +/** + * @brief Get connections to TIM1/15/16/17 Break inputs + * @rmtoll SYSCFG_CFGR2 CLL LL_SYSCFG_GetTIMBreakInputs\n + * SYSCFG_CFGR2 SPL LL_SYSCFG_GetTIMBreakInputs\n + * SYSCFG_CFGR2 PVDL LL_SYSCFG_GetTIMBreakInputs\n + * SYSCFG_CFGR2 ECCL LL_SYSCFG_GetTIMBreakInputs + * @retval Returned value can be can be a combination of the following values: + * @ifnot STM32G070xx + * @arg @ref LL_SYSCFG_TIMBREAK_PVD (*) + * @endif + * @arg @ref LL_SYSCFG_TIMBREAK_SRAM_PARITY + * @arg @ref LL_SYSCFG_TIMBREAK_LOCKUP + * @arg @ref LL_SYSCFG_TIMBREAK_ECC + * + * (*) value not defined in all devices + */ +__STATIC_INLINE uint32_t LL_SYSCFG_GetTIMBreakInputs(void) +{ +#if defined(SYSCFG_CFGR2_PVDL) + return (uint32_t)(READ_BIT(SYSCFG->CFGR2, SYSCFG_CFGR2_CLL | SYSCFG_CFGR2_SPL | SYSCFG_CFGR2_PVDL | SYSCFG_CFGR2_ECCL)); +#else + return (uint32_t)(READ_BIT(SYSCFG->CFGR2, SYSCFG_CFGR2_CLL | SYSCFG_CFGR2_SPL | SYSCFG_CFGR2_ECCL)); +#endif /*SYSCFG_CFGR2_PVDL*/ +} + +/** + * @brief Check if SRAM parity error detected + * @rmtoll SYSCFG_CFGR2 SPF LL_SYSCFG_IsActiveFlag_SP + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_SP(void) +{ + return ((READ_BIT(SYSCFG->CFGR2, SYSCFG_CFGR2_SPF) == (SYSCFG_CFGR2_SPF)) ? 1UL : 0UL); +} + +/** + * @brief Clear SRAM parity error flag + * @rmtoll SYSCFG_CFGR2 SPF LL_SYSCFG_ClearFlag_SP + * @retval None + */ +__STATIC_INLINE void LL_SYSCFG_ClearFlag_SP(void) +{ + SET_BIT(SYSCFG->CFGR2, SYSCFG_CFGR2_SPF); +} + +#if defined(SYSCFG_CDEN_SUPPORT) +/** + * @brief Enable Clamping Diode on specific pin + * @rmtoll SYSCFG_CFGR2 PA1_CDEN LL_SYSCFG_EnableClampingDiode\n + * SYSCFG_CFGR2 PA3_CDEN LL_SYSCFG_EnableClampingDiode\n + * SYSCFG_CFGR2 PA5_CDEN LL_SYSCFG_EnableClampingDiode\n + * SYSCFG_CFGR2 PA6_CDEN LL_SYSCFG_EnableClampingDiode\n + * SYSCFG_CFGR2 PA13_CDEN LL_SYSCFG_EnableClampingDiode\n + * SYSCFG_CFGR2 PB0_CDEN LL_SYSCFG_EnableClampingDiode\n + * SYSCFG_CFGR2 PB1_CDEN LL_SYSCFG_EnableClampingDiode\n + * SYSCFG_CFGR1 PB2_CDEN LL_SYSCFG_EnableClampingDiode + * @param ConfigClampingDiode This parameter can be a combination of the following values: + * @arg @ref LL_SYSCFG_CFGR2_PA1_CDEN + * @arg @ref LL_SYSCFG_CFGR2_PA3_CDEN + * @arg @ref LL_SYSCFG_CFGR2_PA5_CDEN + * @arg @ref LL_SYSCFG_CFGR2_PA6_CDEN + * @arg @ref LL_SYSCFG_CFGR2_PA13_CDEN + * @arg @ref LL_SYSCFG_CFGR2_PB0_CDEN + * @arg @ref LL_SYSCFG_CFGR2_PB1_CDEN + * @arg @ref LL_SYSCFG_CFGR2_PB2_CDEN + * @retval None + */ +__STATIC_INLINE void LL_SYSCFG_EnableClampingDiode(uint32_t ConfigClampingDiode) +{ + SET_BIT(SYSCFG->CFGR2, ConfigClampingDiode); +} + +/** + * @brief Disable Clamping Diode on specific pin + * @rmtoll SYSCFG_CFGR2 PA1_CDEN LL_SYSCFG_DisableClampingDiode\n + * SYSCFG_CFGR2 PA3_CDEN LL_SYSCFG_DisableClampingDiode\n + * SYSCFG_CFGR2 PA5_CDEN LL_SYSCFG_DisableClampingDiode\n + * SYSCFG_CFGR2 PA6_CDEN LL_SYSCFG_DisableClampingDiode\n + * SYSCFG_CFGR2 PA13_CDEN LL_SYSCFG_DisableClampingDiode\n + * SYSCFG_CFGR2 PB0_CDEN LL_SYSCFG_DisableClampingDiode\n + * SYSCFG_CFGR2 PB1_CDEN LL_SYSCFG_DisableClampingDiode\n + * SYSCFG_CFGR1 PB2_CDEN LL_SYSCFG_DisableClampingDiode + * @param ConfigClampingDiode This parameter can be a combination of the following values: + * @arg @ref LL_SYSCFG_CFGR2_PA1_CDEN + * @arg @ref LL_SYSCFG_CFGR2_PA3_CDEN + * @arg @ref LL_SYSCFG_CFGR2_PA5_CDEN + * @arg @ref LL_SYSCFG_CFGR2_PA6_CDEN + * @arg @ref LL_SYSCFG_CFGR2_PA13_CDEN + * @arg @ref LL_SYSCFG_CFGR2_PB0_CDEN + * @arg @ref LL_SYSCFG_CFGR2_PB1_CDEN + * @arg @ref LL_SYSCFG_CFGR2_PB2_CDEN + * @retval None + */ +__STATIC_INLINE void LL_SYSCFG_DisableClampingDiode(uint32_t ConfigClampingDiode) +{ + CLEAR_BIT(SYSCFG->CFGR2, ConfigClampingDiode); +} +/** + * @brief Indicates whether clamping diode(s) is(are) enabled. + * @rmtoll SYSCFG_CFGR2 PA1_CDEN LL_SYSCFG_IsEnabledClampingDiode\n + * SYSCFG_CFGR2 PA3_CDEN LL_SYSCFG_IsEnabledClampingDiode\n + * SYSCFG_CFGR2 PA5_CDEN LL_SYSCFG_IsEnabledClampingDiode\n + * SYSCFG_CFGR2 PA6_CDEN LL_SYSCFG_IsEnabledClampingDiode\n + * SYSCFG_CFGR2 PA13_CDEN LL_SYSCFG_IsEnabledClampingDiode\n + * SYSCFG_CFGR2 PB0_CDEN LL_SYSCFG_IsEnabledClampingDiode\n + * SYSCFG_CFGR2 PB1_CDEN LL_SYSCFG_IsEnabledClampingDiode\n + * SYSCFG_CFGR1 PB2_CDEN LL_SYSCFG_IsEnabledClampingDiode + * @param ConfigClampingDiode This parameter can be a combination of the following values: + * @arg @ref LL_SYSCFG_CFGR2_PA1_CDEN + * @arg @ref LL_SYSCFG_CFGR2_PA3_CDEN + * @arg @ref LL_SYSCFG_CFGR2_PA5_CDEN + * @arg @ref LL_SYSCFG_CFGR2_PA6_CDEN + * @arg @ref LL_SYSCFG_CFGR2_PA13_CDEN + * @arg @ref LL_SYSCFG_CFGR2_PB0_CDEN + * @arg @ref LL_SYSCFG_CFGR2_PB1_CDEN + * @arg @ref LL_SYSCFG_CFGR2_PB2_CDEN + * @retval None + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsEnabledClampingDiode(uint32_t ConfigClampingDiode) +{ + return ((READ_BIT(SYSCFG->CFGR2, ConfigClampingDiode) == (ConfigClampingDiode)) ? 1UL : 0UL); +} +#endif /* SYSCFG_CDEN_SUPPORT */ + +/** + * @} + */ + +/** @defgroup SYSTEM_LL_EF_DBGMCU DBGMCU + * @{ + */ + +/** + * @brief Return the device identifier + * @note For STM32G081xx devices, the device ID is 0x460 + * @rmtoll DBG_IDCODE DEV_ID LL_DBGMCU_GetDeviceID + * @retval Values between Min_Data=0x00 and Max_Data=0xFFF + */ +__STATIC_INLINE uint32_t LL_DBGMCU_GetDeviceID(void) +{ + return (uint32_t)(READ_BIT(DBG->IDCODE, DBG_IDCODE_DEV_ID)); +} + +/** + * @brief Return the device revision identifier + * @note This field indicates the revision of the device. + * @rmtoll DBG_IDCODE REV_ID LL_DBGMCU_GetRevisionID + * @retval Values between Min_Data=0x00 and Max_Data=0xFFFF + */ +__STATIC_INLINE uint32_t LL_DBGMCU_GetRevisionID(void) +{ + return (uint32_t)(READ_BIT(DBG->IDCODE, DBG_IDCODE_REV_ID) >> DBG_IDCODE_REV_ID_Pos); +} + +/** + * @brief Enable the Debug Module during STOP mode + * @rmtoll DBG_CR DBG_STOP LL_DBGMCU_EnableDBGStopMode + * @retval None + */ +__STATIC_INLINE void LL_DBGMCU_EnableDBGStopMode(void) +{ + SET_BIT(DBG->CR, DBG_CR_DBG_STOP); +} + +/** + * @brief Disable the Debug Module during STOP mode + * @rmtoll DBG_CR DBG_STOP LL_DBGMCU_DisableDBGStopMode + * @retval None + */ +__STATIC_INLINE void LL_DBGMCU_DisableDBGStopMode(void) +{ + CLEAR_BIT(DBG->CR, DBG_CR_DBG_STOP); +} + +/** + * @brief Enable the Debug Module during STANDBY mode + * @rmtoll DBG_CR DBG_STANDBY LL_DBGMCU_EnableDBGStandbyMode + * @retval None + */ +__STATIC_INLINE void LL_DBGMCU_EnableDBGStandbyMode(void) +{ + SET_BIT(DBG->CR, DBG_CR_DBG_STANDBY); +} + +/** + * @brief Disable the Debug Module during STANDBY mode + * @rmtoll DBG_CR DBG_STANDBY LL_DBGMCU_DisableDBGStandbyMode + * @retval None + */ +__STATIC_INLINE void LL_DBGMCU_DisableDBGStandbyMode(void) +{ + CLEAR_BIT(DBG->CR, DBG_CR_DBG_STANDBY); +} + +/** + * @brief Freeze APB1 peripherals (group1 peripherals) + * @rmtoll DBG_APB_FZ1 DBG_TIM2_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n + * DBG_APB_FZ1 DBG_TIM3_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n + * DBG_APB_FZ1 DBG_TIM4_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n + * DBG_APB_FZ1 DBG_TIM6_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n + * DBG_APB_FZ1 DBG_TIM7_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n + * DBG_APB_FZ1 DBG_RTC_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n + * DBG_APB_FZ1 DBG_WWDG_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n + * DBG_APB_FZ1 DBG_IWDG_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n + * DBG_APB_FZ1 DBG_I2C1_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n + * DBG_APB_FZ1 DBG_I2C2_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n + * DBG_APB_FZ1 DBG_LPTIM2_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n + * DBG_APB_FZ1 DBG_LPTIM1_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_DBGMCU_APB1_GRP1_TIM2_STOP (*) + * @arg @ref LL_DBGMCU_APB1_GRP1_TIM3_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_TIM4_STOP (*) + * @arg @ref LL_DBGMCU_APB1_GRP1_TIM6_STOP (*) + * @arg @ref LL_DBGMCU_APB1_GRP1_TIM7_STOP (*) + * @arg @ref LL_DBGMCU_APB1_GRP1_RTC_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_WWDG_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_IWDG_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_I2C1_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_I2C2_STOP (*) + * @arg @ref LL_DBGMCU_APB1_GRP1_LPTIM2_STOP (*) + * @arg @ref LL_DBGMCU_APB1_GRP1_LPTIM1_STOP (*) + * + * (*) value not defined in all devices + * @retval None + */ +__STATIC_INLINE void LL_DBGMCU_APB1_GRP1_FreezePeriph(uint32_t Periphs) +{ + SET_BIT(DBG->APBFZ1, Periphs); +} + +/** + * @brief Unfreeze APB1 peripherals (group1 peripherals) + * @rmtoll DBG_APB_FZ1 DBG_TIM2_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + * DBG_APB_FZ1 DBG_TIM3_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + * DBG_APB_FZ1 DBG_TIM4_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + * DBG_APB_FZ1 DBG_TIM6_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + * DBG_APB_FZ1 DBG_TIM7_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + * DBG_APB_FZ1 DBG_RTC_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + * DBG_APB_FZ1 DBG_WWDG_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + * DBG_APB_FZ1 DBG_IWDG_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + * DBG_APB_FZ1 DBG_I2C1_SMBUS_TIMEOUT LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + * DBG_APB_FZ1 DBG_I2C2_SMBUS_TIMEOUT LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + * DBG_APB_FZ1 DBG_LPTIM2_SMBUS_TIMEOUT LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + * DBG_APB_FZ1 DBG_LPTIM1_SMBUS_TIMEOUT LL_DBGMCU_APB1_GRP1_UnFreezePeriph + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_DBGMCU_APB1_GRP1_TIM2_STOP (*) + * @arg @ref LL_DBGMCU_APB1_GRP1_TIM3_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_TIM4_STOP (*) + * @arg @ref LL_DBGMCU_APB1_GRP1_TIM6_STOP (*) + * @arg @ref LL_DBGMCU_APB1_GRP1_TIM7_STOP (*) + * @arg @ref LL_DBGMCU_APB1_GRP1_RTC_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_WWDG_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_IWDG_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_I2C1_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_I2C2_STOP (*) + * @arg @ref LL_DBGMCU_APB1_GRP1_LPTIM2_STOP (*) + * @arg @ref LL_DBGMCU_APB1_GRP1_LPTIM1_STOP (*) + * + * (*) value not defined in all devices + * @retval None + */ +__STATIC_INLINE void LL_DBGMCU_APB1_GRP1_UnFreezePeriph(uint32_t Periphs) +{ + CLEAR_BIT(DBG->APBFZ1, Periphs); +} + +/** + * @brief Freeze APB2 peripherals + * @rmtoll DBG_APB_FZ2 DBG_TIM1_STOP LL_DBGMCU_APB2_GRP1_FreezePeriph\n + * DBG_APB_FZ2 DBG_TIM14_STOP LL_DBGMCU_APB2_GRP1_FreezePeriph\n + * DBG_APB_FZ2 DBG_TIM15_STOP LL_DBGMCU_APB2_GRP1_FreezePeriph\n + * DBG_APB_FZ2 DBG_TIM16_STOP LL_DBGMCU_APB2_GRP1_FreezePeriph\n + * DBG_APB_FZ2 DBG_TIM17_STOP LL_DBGMCU_APB2_GRP1_FreezePeriph + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_DBGMCU_APB2_GRP1_TIM1_STOP + * @arg @ref LL_DBGMCU_APB2_GRP1_TIM14_STOP + * @arg @ref LL_DBGMCU_APB2_GRP1_TIM15_STOP (*) + * @arg @ref LL_DBGMCU_APB2_GRP1_TIM16_STOP + * @arg @ref LL_DBGMCU_APB2_GRP1_TIM17_STOP + * + * (*) value not defined in all devices + * @retval None + */ +__STATIC_INLINE void LL_DBGMCU_APB2_GRP1_FreezePeriph(uint32_t Periphs) +{ + SET_BIT(DBG->APBFZ2, Periphs); +} + +/** + * @brief Unfreeze APB2 peripherals + * @rmtoll DBG_APB_FZ2 DBG_TIM1_STOP LL_DBGMCU_APB2_GRP1_UnFreezePeriph\n + * DBG_APB_FZ2 DBG_TIM14_STOP LL_DBGMCU_APB2_GRP1_UnFreezePeriph\n + * DBG_APB_FZ2 DBG_TIM15_STOP LL_DBGMCU_APB2_GRP1_UnFreezePeriph\n + * DBG_APB_FZ2 DBG_TIM16_STOP LL_DBGMCU_APB2_GRP1_UnFreezePeriph\n + * DBG_APB_FZ2 DBG_TIM17_STOP LL_DBGMCU_APB2_GRP1_UnFreezePeriph + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_DBGMCU_APB2_GRP1_TIM1_STOP + * @arg @ref LL_DBGMCU_APB2_GRP1_TIM14_STOP + * @arg @ref LL_DBGMCU_APB2_GRP1_TIM15_STOP (*) + * @arg @ref LL_DBGMCU_APB2_GRP1_TIM16_STOP + * @arg @ref LL_DBGMCU_APB2_GRP1_TIM17_STOP + * + * (*) value not defined in all devices + * @retval None + */ +__STATIC_INLINE void LL_DBGMCU_APB2_GRP1_UnFreezePeriph(uint32_t Periphs) +{ + CLEAR_BIT(DBG->APBFZ2, Periphs); +} +/** + * @} + */ + +#if defined(VREFBUF) +/** @defgroup SYSTEM_LL_EF_VREFBUF VREFBUF + * @{ + */ + +/** + * @brief Enable Internal voltage reference + * @rmtoll VREFBUF_CSR VREFBUF_CSR_ENVR LL_VREFBUF_Enable + * @retval None + */ +__STATIC_INLINE void LL_VREFBUF_Enable(void) +{ + SET_BIT(VREFBUF->CSR, VREFBUF_CSR_ENVR); +} + +/** + * @brief Disable Internal voltage reference + * @rmtoll VREFBUF_CSR VREFBUF_CSR_ENVR LL_VREFBUF_Disable + * @retval None + */ +__STATIC_INLINE void LL_VREFBUF_Disable(void) +{ + CLEAR_BIT(VREFBUF->CSR, VREFBUF_CSR_ENVR); +} + +/** + * @brief Enable high impedance (VREF+pin is high impedance) + * @rmtoll VREFBUF_CSR VREFBUF_CSR_HIZ LL_VREFBUF_EnableHIZ + * @retval None + */ +__STATIC_INLINE void LL_VREFBUF_EnableHIZ(void) +{ + SET_BIT(VREFBUF->CSR, VREFBUF_CSR_HIZ); +} + +/** + * @brief Disable high impedance (VREF+pin is internally connected to the voltage reference buffer output) + * @rmtoll VREFBUF_CSR VREFBUF_CSR_HIZ LL_VREFBUF_DisableHIZ + * @retval None + */ +__STATIC_INLINE void LL_VREFBUF_DisableHIZ(void) +{ + CLEAR_BIT(VREFBUF->CSR, VREFBUF_CSR_HIZ); +} + +/** + * @brief Set the Voltage reference scale + * @rmtoll VREFBUF_CSR VREFBUF_CSR_VRS LL_VREFBUF_SetVoltageScaling + * @param Scale This parameter can be one of the following values: + * @arg @ref LL_VREFBUF_VOLTAGE_SCALE0 + * @arg @ref LL_VREFBUF_VOLTAGE_SCALE1 + * @retval None + */ +__STATIC_INLINE void LL_VREFBUF_SetVoltageScaling(uint32_t Scale) +{ + MODIFY_REG(VREFBUF->CSR, VREFBUF_CSR_VRS, Scale); +} + +/** + * @brief Get the Voltage reference scale + * @rmtoll VREFBUF_CSR VREFBUF_CSR_VRS LL_VREFBUF_GetVoltageScaling + * @retval Returned value can be one of the following values: + * @arg @ref LL_VREFBUF_VOLTAGE_SCALE0 + * @arg @ref LL_VREFBUF_VOLTAGE_SCALE1 + */ +__STATIC_INLINE uint32_t LL_VREFBUF_GetVoltageScaling(void) +{ + return (uint32_t)(READ_BIT(VREFBUF->CSR, VREFBUF_CSR_VRS)); +} + +/** + * @brief Check if Voltage reference buffer is ready + * @rmtoll VREFBUF_CSR VREFBUF_CSR_VRS LL_VREFBUF_IsVREFReady + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_VREFBUF_IsVREFReady(void) +{ + return ((READ_BIT(VREFBUF->CSR, VREFBUF_CSR_VRR) == (VREFBUF_CSR_VRR)) ? 1UL : 0UL); +} + +/** + * @brief Get the trimming code for VREFBUF calibration + * @rmtoll VREFBUF_CCR VREFBUF_CCR_TRIM LL_VREFBUF_GetTrimming + * @retval Between 0 and 0x3F + */ +__STATIC_INLINE uint32_t LL_VREFBUF_GetTrimming(void) +{ + return (uint32_t)(READ_BIT(VREFBUF->CCR, VREFBUF_CCR_TRIM)); +} + +/** + * @brief Set the trimming code for VREFBUF calibration (Tune the internal reference buffer voltage) + * @note VrefBuf voltage scale is calibrated in production for each device, + * using voltage scale 1. This calibration value is loaded + * as default trimming value at device power up. + * This trimming value can be fine tuned for voltage scales 0 and 1 + * using this function. + * @rmtoll VREFBUF_CCR VREFBUF_CCR_TRIM LL_VREFBUF_SetTrimming + * @param Value Between 0 and 0x3F + * @retval None + */ +__STATIC_INLINE void LL_VREFBUF_SetTrimming(uint32_t Value) +{ + WRITE_REG(VREFBUF->CCR, Value); +} + +/** + * @} + */ +#endif /* VREFBUF */ + +/** @defgroup SYSTEM_LL_EF_FLASH FLASH + * @{ + */ + +/** + * @brief Set FLASH Latency + * @rmtoll FLASH_ACR FLASH_ACR_LATENCY LL_FLASH_SetLatency + * @param Latency This parameter can be one of the following values: + * @arg @ref LL_FLASH_LATENCY_0 + * @arg @ref LL_FLASH_LATENCY_1 + * @arg @ref LL_FLASH_LATENCY_2 + * @retval None + */ +__STATIC_INLINE void LL_FLASH_SetLatency(uint32_t Latency) +{ + MODIFY_REG(FLASH->ACR, FLASH_ACR_LATENCY, Latency); +} + +/** + * @brief Get FLASH Latency + * @rmtoll FLASH_ACR FLASH_ACR_LATENCY LL_FLASH_GetLatency + * @retval Returned value can be one of the following values: + * @arg @ref LL_FLASH_LATENCY_0 + * @arg @ref LL_FLASH_LATENCY_1 + * @arg @ref LL_FLASH_LATENCY_2 + */ +__STATIC_INLINE uint32_t LL_FLASH_GetLatency(void) +{ + return (uint32_t)(READ_BIT(FLASH->ACR, FLASH_ACR_LATENCY)); +} + +/** + * @brief Enable Prefetch + * @rmtoll FLASH_ACR FLASH_ACR_PRFTEN LL_FLASH_EnablePrefetch + * @retval None + */ +__STATIC_INLINE void LL_FLASH_EnablePrefetch(void) +{ + SET_BIT(FLASH->ACR, FLASH_ACR_PRFTEN); +} + +/** + * @brief Disable Prefetch + * @rmtoll FLASH_ACR FLASH_ACR_PRFTEN LL_FLASH_DisablePrefetch + * @retval None + */ +__STATIC_INLINE void LL_FLASH_DisablePrefetch(void) +{ + CLEAR_BIT(FLASH->ACR, FLASH_ACR_PRFTEN); +} + +/** + * @brief Check if Prefetch buffer is enabled + * @rmtoll FLASH_ACR FLASH_ACR_PRFTEN LL_FLASH_IsPrefetchEnabled + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_FLASH_IsPrefetchEnabled(void) +{ + return ((READ_BIT(FLASH->ACR, FLASH_ACR_PRFTEN) == (FLASH_ACR_PRFTEN)) ? 1UL : 0UL); +} + +/** + * @brief Enable Instruction cache + * @rmtoll FLASH_ACR FLASH_ACR_ICEN LL_FLASH_EnableInstCache + * @retval None + */ +__STATIC_INLINE void LL_FLASH_EnableInstCache(void) +{ + SET_BIT(FLASH->ACR, FLASH_ACR_ICEN); +} + +/** + * @brief Disable Instruction cache + * @rmtoll FLASH_ACR FLASH_ACR_ICEN LL_FLASH_DisableInstCache + * @retval None + */ +__STATIC_INLINE void LL_FLASH_DisableInstCache(void) +{ + CLEAR_BIT(FLASH->ACR, FLASH_ACR_ICEN); +} + +/** + * @brief Enable Instruction cache reset + * @note bit can be written only when the instruction cache is disabled + * @rmtoll FLASH_ACR FLASH_ACR_ICRST LL_FLASH_EnableInstCacheReset + * @retval None + */ +__STATIC_INLINE void LL_FLASH_EnableInstCacheReset(void) +{ + SET_BIT(FLASH->ACR, FLASH_ACR_ICRST); +} + +/** + * @brief Disable Instruction cache reset + * @rmtoll FLASH_ACR FLASH_ACR_ICRST LL_FLASH_DisableInstCacheReset + * @retval None + */ +__STATIC_INLINE void LL_FLASH_DisableInstCacheReset(void) +{ + CLEAR_BIT(FLASH->ACR, FLASH_ACR_ICRST); +} + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* defined (FLASH) || defined (SYSCFG) || defined (DBG) */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32G0xx_LL_SYSTEM_H */ + + diff --git a/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_ll_tim.h b/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_ll_tim.h new file mode 100644 index 0000000..1af4863 --- /dev/null +++ b/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_ll_tim.h @@ -0,0 +1,5275 @@ +/** + ****************************************************************************** + * @file stm32g0xx_ll_tim.h + * @author MCD Application Team + * @brief Header file of TIM LL module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2018 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32G0xx_LL_TIM_H +#define __STM32G0xx_LL_TIM_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32g0xx.h" + +/** @addtogroup STM32G0xx_LL_Driver + * @{ + */ + +#if defined (TIM1) || defined (TIM2) || defined (TIM3) || defined (TIM4) || defined (TIM14) || defined (TIM15) || defined (TIM16) || defined (TIM17) || defined (TIM6) || defined (TIM7) + +/** @defgroup TIM_LL TIM + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/** @defgroup TIM_LL_Private_Variables TIM Private Variables + * @{ + */ +static const uint8_t OFFSET_TAB_CCMRx[] = +{ + 0x00U, /* 0: TIMx_CH1 */ + 0x00U, /* 1: TIMx_CH1N */ + 0x00U, /* 2: TIMx_CH2 */ + 0x00U, /* 3: TIMx_CH2N */ + 0x04U, /* 4: TIMx_CH3 */ + 0x04U, /* 5: TIMx_CH3N */ + 0x04U, /* 6: TIMx_CH4 */ + 0x3CU, /* 7: TIMx_CH5 */ + 0x3CU /* 8: TIMx_CH6 */ +}; + +static const uint8_t SHIFT_TAB_OCxx[] = +{ + 0U, /* 0: OC1M, OC1FE, OC1PE */ + 0U, /* 1: - NA */ + 8U, /* 2: OC2M, OC2FE, OC2PE */ + 0U, /* 3: - NA */ + 0U, /* 4: OC3M, OC3FE, OC3PE */ + 0U, /* 5: - NA */ + 8U, /* 6: OC4M, OC4FE, OC4PE */ + 0U, /* 7: OC5M, OC5FE, OC5PE */ + 8U /* 8: OC6M, OC6FE, OC6PE */ +}; + +static const uint8_t SHIFT_TAB_ICxx[] = +{ + 0U, /* 0: CC1S, IC1PSC, IC1F */ + 0U, /* 1: - NA */ + 8U, /* 2: CC2S, IC2PSC, IC2F */ + 0U, /* 3: - NA */ + 0U, /* 4: CC3S, IC3PSC, IC3F */ + 0U, /* 5: - NA */ + 8U, /* 6: CC4S, IC4PSC, IC4F */ + 0U, /* 7: - NA */ + 0U /* 8: - NA */ +}; + +static const uint8_t SHIFT_TAB_CCxP[] = +{ + 0U, /* 0: CC1P */ + 2U, /* 1: CC1NP */ + 4U, /* 2: CC2P */ + 6U, /* 3: CC2NP */ + 8U, /* 4: CC3P */ + 10U, /* 5: CC3NP */ + 12U, /* 6: CC4P */ + 16U, /* 7: CC5P */ + 20U /* 8: CC6P */ +}; + +static const uint8_t SHIFT_TAB_OISx[] = +{ + 0U, /* 0: OIS1 */ + 1U, /* 1: OIS1N */ + 2U, /* 2: OIS2 */ + 3U, /* 3: OIS2N */ + 4U, /* 4: OIS3 */ + 5U, /* 5: OIS3N */ + 6U, /* 6: OIS4 */ + 8U, /* 7: OIS5 */ + 10U /* 8: OIS6 */ +}; +/** + * @} + */ + +/* Private constants ---------------------------------------------------------*/ +/** @defgroup TIM_LL_Private_Constants TIM Private Constants + * @{ + */ + +/* Defines used for the bit position in the register and perform offsets */ +#if defined(COMP3) +#define TIM_POSITION_BRK_SOURCE \ + ((Source == LL_TIM_BKIN_SOURCE_BKIN) ? 0U :\ + (Source == LL_TIM_BKIN_SOURCE_BKCOMP1) ? 1U :\ + (Source == LL_TIM_BKIN_SOURCE_BKCOMP2) ? 2U :3U) +#else +#define TIM_POSITION_BRK_SOURCE ((Source >> 1U) & 0x1FUL) +#endif + +/* Generic bit definitions for TIMx_AF1 register */ +#define TIMx_AF1_BKINP TIM1_AF1_BKINP /*!< BRK BKIN input polarity */ +#define TIMx_AF1_ETRSEL TIM1_AF1_ETRSEL /*!< TIMx ETR source selection */ + + +/* Mask used to set the TDG[x:0] of the DTG bits of the TIMx_BDTR register */ +#define DT_DELAY_1 ((uint8_t)0x7F) +#define DT_DELAY_2 ((uint8_t)0x3F) +#define DT_DELAY_3 ((uint8_t)0x1F) +#define DT_DELAY_4 ((uint8_t)0x1F) + +/* Mask used to set the DTG[7:5] bits of the DTG bits of the TIMx_BDTR register */ +#define DT_RANGE_1 ((uint8_t)0x00) +#define DT_RANGE_2 ((uint8_t)0x80) +#define DT_RANGE_3 ((uint8_t)0xC0) +#define DT_RANGE_4 ((uint8_t)0xE0) + +/** Legacy definitions for compatibility purpose +@cond 0 + */ +/** +@endcond + */ + +#define OCREF_CLEAR_SELECT_Pos (16U) +#define OCREF_CLEAR_SELECT_Msk (0x1U << OCREF_CLEAR_SELECT_Pos) /*!< 0x00010000 */ +/** + * @} + */ + +/* Private macros ------------------------------------------------------------*/ +/** @defgroup TIM_LL_Private_Macros TIM Private Macros + * @{ + */ +/** @brief Convert channel id into channel index. + * @param __CHANNEL__ This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH1N + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH2N + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH3N + * @arg @ref LL_TIM_CHANNEL_CH4 + * @arg @ref LL_TIM_CHANNEL_CH5 + * @arg @ref LL_TIM_CHANNEL_CH6 + * @retval none + */ +#define TIM_GET_CHANNEL_INDEX( __CHANNEL__) \ + (((__CHANNEL__) == LL_TIM_CHANNEL_CH1) ? 0U :\ + ((__CHANNEL__) == LL_TIM_CHANNEL_CH1N) ? 1U :\ + ((__CHANNEL__) == LL_TIM_CHANNEL_CH2) ? 2U :\ + ((__CHANNEL__) == LL_TIM_CHANNEL_CH2N) ? 3U :\ + ((__CHANNEL__) == LL_TIM_CHANNEL_CH3) ? 4U :\ + ((__CHANNEL__) == LL_TIM_CHANNEL_CH3N) ? 5U :\ + ((__CHANNEL__) == LL_TIM_CHANNEL_CH4) ? 6U :\ + ((__CHANNEL__) == LL_TIM_CHANNEL_CH5) ? 7U : 8U) + +/** @brief Calculate the deadtime sampling period(in ps). + * @param __TIMCLK__ timer input clock frequency (in Hz). + * @param __CKD__ This parameter can be one of the following values: + * @arg @ref LL_TIM_CLOCKDIVISION_DIV1 + * @arg @ref LL_TIM_CLOCKDIVISION_DIV2 + * @arg @ref LL_TIM_CLOCKDIVISION_DIV4 + * @retval none + */ +#define TIM_CALC_DTS(__TIMCLK__, __CKD__) \ + (((__CKD__) == LL_TIM_CLOCKDIVISION_DIV1) ? ((uint64_t)1000000000000U/(__TIMCLK__)) : \ + ((__CKD__) == LL_TIM_CLOCKDIVISION_DIV2) ? ((uint64_t)1000000000000U/((__TIMCLK__) >> 1U)) : \ + ((uint64_t)1000000000000U/((__TIMCLK__) >> 2U))) +/** + * @} + */ + + +/* Exported types ------------------------------------------------------------*/ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup TIM_LL_ES_INIT TIM Exported Init structure + * @{ + */ + +/** + * @brief TIM Time Base configuration structure definition. + */ +typedef struct +{ + uint16_t Prescaler; /*!< Specifies the prescaler value used to divide the TIM clock. + This parameter can be a number between Min_Data=0x0000 and Max_Data=0xFFFF. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_SetPrescaler().*/ + + uint32_t CounterMode; /*!< Specifies the counter mode. + This parameter can be a value of @ref TIM_LL_EC_COUNTERMODE. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_SetCounterMode().*/ + + uint32_t Autoreload; /*!< Specifies the auto reload value to be loaded into the active + Auto-Reload Register at the next update event. + This parameter must be a number between Min_Data=0x0000 and Max_Data=0xFFFF. + Some timer instances may support 32 bits counters. In that case this parameter must + be a number between 0x0000 and 0xFFFFFFFF. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_SetAutoReload().*/ + + uint32_t ClockDivision; /*!< Specifies the clock division. + This parameter can be a value of @ref TIM_LL_EC_CLOCKDIVISION. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_SetClockDivision().*/ + + uint32_t RepetitionCounter; /*!< Specifies the repetition counter value. Each time the RCR downcounter + reaches zero, an update event is generated and counting restarts + from the RCR value (N). + This means in PWM mode that (N+1) corresponds to: + - the number of PWM periods in edge-aligned mode + - the number of half PWM period in center-aligned mode + GP timers: this parameter must be a number between Min_Data = 0x00 and + Max_Data = 0xFF. + Advanced timers: this parameter must be a number between Min_Data = 0x0000 and + Max_Data = 0xFFFF. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_SetRepetitionCounter().*/ +} LL_TIM_InitTypeDef; + +/** + * @brief TIM Output Compare configuration structure definition. + */ +typedef struct +{ + uint32_t OCMode; /*!< Specifies the output mode. + This parameter can be a value of @ref TIM_LL_EC_OCMODE. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_OC_SetMode().*/ + + uint32_t OCState; /*!< Specifies the TIM Output Compare state. + This parameter can be a value of @ref TIM_LL_EC_OCSTATE. + + This feature can be modified afterwards using unitary functions + @ref LL_TIM_CC_EnableChannel() or @ref LL_TIM_CC_DisableChannel().*/ + + uint32_t OCNState; /*!< Specifies the TIM complementary Output Compare state. + This parameter can be a value of @ref TIM_LL_EC_OCSTATE. + + This feature can be modified afterwards using unitary functions + @ref LL_TIM_CC_EnableChannel() or @ref LL_TIM_CC_DisableChannel().*/ + + uint32_t CompareValue; /*!< Specifies the Compare value to be loaded into the Capture Compare Register. + This parameter can be a number between Min_Data=0x0000 and Max_Data=0xFFFF. + + This feature can be modified afterwards using unitary function + LL_TIM_OC_SetCompareCHx (x=1..6).*/ + + uint32_t OCPolarity; /*!< Specifies the output polarity. + This parameter can be a value of @ref TIM_LL_EC_OCPOLARITY. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_OC_SetPolarity().*/ + + uint32_t OCNPolarity; /*!< Specifies the complementary output polarity. + This parameter can be a value of @ref TIM_LL_EC_OCPOLARITY. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_OC_SetPolarity().*/ + + + uint32_t OCIdleState; /*!< Specifies the TIM Output Compare pin state during Idle state. + This parameter can be a value of @ref TIM_LL_EC_OCIDLESTATE. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_OC_SetIdleState().*/ + + uint32_t OCNIdleState; /*!< Specifies the TIM Output Compare pin state during Idle state. + This parameter can be a value of @ref TIM_LL_EC_OCIDLESTATE. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_OC_SetIdleState().*/ +} LL_TIM_OC_InitTypeDef; + +/** + * @brief TIM Input Capture configuration structure definition. + */ + +typedef struct +{ + + uint32_t ICPolarity; /*!< Specifies the active edge of the input signal. + This parameter can be a value of @ref TIM_LL_EC_IC_POLARITY. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_IC_SetPolarity().*/ + + uint32_t ICActiveInput; /*!< Specifies the input. + This parameter can be a value of @ref TIM_LL_EC_ACTIVEINPUT. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_IC_SetActiveInput().*/ + + uint32_t ICPrescaler; /*!< Specifies the Input Capture Prescaler. + This parameter can be a value of @ref TIM_LL_EC_ICPSC. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_IC_SetPrescaler().*/ + + uint32_t ICFilter; /*!< Specifies the input capture filter. + This parameter can be a value of @ref TIM_LL_EC_IC_FILTER. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_IC_SetFilter().*/ +} LL_TIM_IC_InitTypeDef; + + +/** + * @brief TIM Encoder interface configuration structure definition. + */ +typedef struct +{ + uint32_t EncoderMode; /*!< Specifies the encoder resolution (x2 or x4). + This parameter can be a value of @ref TIM_LL_EC_ENCODERMODE. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_SetEncoderMode().*/ + + uint32_t IC1Polarity; /*!< Specifies the active edge of TI1 input. + This parameter can be a value of @ref TIM_LL_EC_IC_POLARITY. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_IC_SetPolarity().*/ + + uint32_t IC1ActiveInput; /*!< Specifies the TI1 input source + This parameter can be a value of @ref TIM_LL_EC_ACTIVEINPUT. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_IC_SetActiveInput().*/ + + uint32_t IC1Prescaler; /*!< Specifies the TI1 input prescaler value. + This parameter can be a value of @ref TIM_LL_EC_ICPSC. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_IC_SetPrescaler().*/ + + uint32_t IC1Filter; /*!< Specifies the TI1 input filter. + This parameter can be a value of @ref TIM_LL_EC_IC_FILTER. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_IC_SetFilter().*/ + + uint32_t IC2Polarity; /*!< Specifies the active edge of TI2 input. + This parameter can be a value of @ref TIM_LL_EC_IC_POLARITY. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_IC_SetPolarity().*/ + + uint32_t IC2ActiveInput; /*!< Specifies the TI2 input source + This parameter can be a value of @ref TIM_LL_EC_ACTIVEINPUT. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_IC_SetActiveInput().*/ + + uint32_t IC2Prescaler; /*!< Specifies the TI2 input prescaler value. + This parameter can be a value of @ref TIM_LL_EC_ICPSC. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_IC_SetPrescaler().*/ + + uint32_t IC2Filter; /*!< Specifies the TI2 input filter. + This parameter can be a value of @ref TIM_LL_EC_IC_FILTER. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_IC_SetFilter().*/ + +} LL_TIM_ENCODER_InitTypeDef; + +/** + * @brief TIM Hall sensor interface configuration structure definition. + */ +typedef struct +{ + + uint32_t IC1Polarity; /*!< Specifies the active edge of TI1 input. + This parameter can be a value of @ref TIM_LL_EC_IC_POLARITY. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_IC_SetPolarity().*/ + + uint32_t IC1Prescaler; /*!< Specifies the TI1 input prescaler value. + Prescaler must be set to get a maximum counter period longer than the + time interval between 2 consecutive changes on the Hall inputs. + This parameter can be a value of @ref TIM_LL_EC_ICPSC. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_IC_SetPrescaler().*/ + + uint32_t IC1Filter; /*!< Specifies the TI1 input filter. + This parameter can be a value of + @ref TIM_LL_EC_IC_FILTER. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_IC_SetFilter().*/ + + uint32_t CommutationDelay; /*!< Specifies the compare value to be loaded into the Capture Compare Register. + A positive pulse (TRGO event) is generated with a programmable delay every time + a change occurs on the Hall inputs. + This parameter can be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_OC_SetCompareCH2().*/ +} LL_TIM_HALLSENSOR_InitTypeDef; + +/** + * @brief BDTR (Break and Dead Time) structure definition + */ +typedef struct +{ + uint32_t OSSRState; /*!< Specifies the Off-State selection used in Run mode. + This parameter can be a value of @ref TIM_LL_EC_OSSR + + This feature can be modified afterwards using unitary function + @ref LL_TIM_SetOffStates() + + @note This bit-field cannot be modified as long as LOCK level 2 has been + programmed. */ + + uint32_t OSSIState; /*!< Specifies the Off-State used in Idle state. + This parameter can be a value of @ref TIM_LL_EC_OSSI + + This feature can be modified afterwards using unitary function + @ref LL_TIM_SetOffStates() + + @note This bit-field cannot be modified as long as LOCK level 2 has been + programmed. */ + + uint32_t LockLevel; /*!< Specifies the LOCK level parameters. + This parameter can be a value of @ref TIM_LL_EC_LOCKLEVEL + + @note The LOCK bits can be written only once after the reset. Once the TIMx_BDTR + register has been written, their content is frozen until the next reset.*/ + + uint8_t DeadTime; /*!< Specifies the delay time between the switching-off and the + switching-on of the outputs. + This parameter can be a number between Min_Data = 0x00 and Max_Data = 0xFF. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_OC_SetDeadTime() + + @note This bit-field can not be modified as long as LOCK level 1, 2 or 3 has been + programmed. */ + + uint16_t BreakState; /*!< Specifies whether the TIM Break input is enabled or not. + This parameter can be a value of @ref TIM_LL_EC_BREAK_ENABLE + + This feature can be modified afterwards using unitary functions + @ref LL_TIM_EnableBRK() or @ref LL_TIM_DisableBRK() + + @note This bit-field can not be modified as long as LOCK level 1 has been + programmed. */ + + uint32_t BreakPolarity; /*!< Specifies the TIM Break Input pin polarity. + This parameter can be a value of @ref TIM_LL_EC_BREAK_POLARITY + + This feature can be modified afterwards using unitary function + @ref LL_TIM_ConfigBRK() + + @note This bit-field can not be modified as long as LOCK level 1 has been + programmed. */ + + uint32_t BreakFilter; /*!< Specifies the TIM Break Filter. + This parameter can be a value of @ref TIM_LL_EC_BREAK_FILTER + + This feature can be modified afterwards using unitary function + @ref LL_TIM_ConfigBRK() + + @note This bit-field can not be modified as long as LOCK level 1 has been + programmed. */ + + uint32_t BreakAFMode; /*!< Specifies the alternate function mode of the break input. + This parameter can be a value of @ref TIM_LL_EC_BREAK_AFMODE + + This feature can be modified afterwards using unitary functions + @ref LL_TIM_ConfigBRK() + + @note Bidirectional break input is only supported by advanced timers instances. + + @note This bit-field can not be modified as long as LOCK level 1 has been + programmed. */ + + uint32_t Break2State; /*!< Specifies whether the TIM Break2 input is enabled or not. + This parameter can be a value of @ref TIM_LL_EC_BREAK2_ENABLE + + This feature can be modified afterwards using unitary functions + @ref LL_TIM_EnableBRK2() or @ref LL_TIM_DisableBRK2() + + @note This bit-field can not be modified as long as LOCK level 1 has been + programmed. */ + + uint32_t Break2Polarity; /*!< Specifies the TIM Break2 Input pin polarity. + This parameter can be a value of @ref TIM_LL_EC_BREAK2_POLARITY + + This feature can be modified afterwards using unitary function + @ref LL_TIM_ConfigBRK2() + + @note This bit-field can not be modified as long as LOCK level 1 has been + programmed. */ + + uint32_t Break2Filter; /*!< Specifies the TIM Break2 Filter. + This parameter can be a value of @ref TIM_LL_EC_BREAK2_FILTER + + This feature can be modified afterwards using unitary function + @ref LL_TIM_ConfigBRK2() + + @note This bit-field can not be modified as long as LOCK level 1 has been + programmed. */ + + uint32_t Break2AFMode; /*!< Specifies the alternate function mode of the break2 input. + This parameter can be a value of @ref TIM_LL_EC_BREAK2_AFMODE + + This feature can be modified afterwards using unitary functions + @ref LL_TIM_ConfigBRK2() + + @note Bidirectional break input is only supported by advanced timers instances. + + @note This bit-field can not be modified as long as LOCK level 1 has been + programmed. */ + + uint32_t AutomaticOutput; /*!< Specifies whether the TIM Automatic Output feature is enabled or not. + This parameter can be a value of @ref TIM_LL_EC_AUTOMATICOUTPUT_ENABLE + + This feature can be modified afterwards using unitary functions + @ref LL_TIM_EnableAutomaticOutput() or @ref LL_TIM_DisableAutomaticOutput() + + @note This bit-field can not be modified as long as LOCK level 1 has been + programmed. */ +} LL_TIM_BDTR_InitTypeDef; + +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup TIM_LL_Exported_Constants TIM Exported Constants + * @{ + */ + +/** @defgroup TIM_LL_EC_GET_FLAG Get Flags Defines + * @brief Flags defines which can be used with LL_TIM_ReadReg function. + * @{ + */ +#define LL_TIM_SR_UIF TIM_SR_UIF /*!< Update interrupt flag */ +#define LL_TIM_SR_CC1IF TIM_SR_CC1IF /*!< Capture/compare 1 interrupt flag */ +#define LL_TIM_SR_CC2IF TIM_SR_CC2IF /*!< Capture/compare 2 interrupt flag */ +#define LL_TIM_SR_CC3IF TIM_SR_CC3IF /*!< Capture/compare 3 interrupt flag */ +#define LL_TIM_SR_CC4IF TIM_SR_CC4IF /*!< Capture/compare 4 interrupt flag */ +#define LL_TIM_SR_CC5IF TIM_SR_CC5IF /*!< Capture/compare 5 interrupt flag */ +#define LL_TIM_SR_CC6IF TIM_SR_CC6IF /*!< Capture/compare 6 interrupt flag */ +#define LL_TIM_SR_COMIF TIM_SR_COMIF /*!< COM interrupt flag */ +#define LL_TIM_SR_TIF TIM_SR_TIF /*!< Trigger interrupt flag */ +#define LL_TIM_SR_BIF TIM_SR_BIF /*!< Break interrupt flag */ +#define LL_TIM_SR_B2IF TIM_SR_B2IF /*!< Second break interrupt flag */ +#define LL_TIM_SR_CC1OF TIM_SR_CC1OF /*!< Capture/Compare 1 overcapture flag */ +#define LL_TIM_SR_CC2OF TIM_SR_CC2OF /*!< Capture/Compare 2 overcapture flag */ +#define LL_TIM_SR_CC3OF TIM_SR_CC3OF /*!< Capture/Compare 3 overcapture flag */ +#define LL_TIM_SR_CC4OF TIM_SR_CC4OF /*!< Capture/Compare 4 overcapture flag */ +#define LL_TIM_SR_SBIF TIM_SR_SBIF /*!< System Break interrupt flag */ +/** + * @} + */ + +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup TIM_LL_EC_BREAK_ENABLE Break Enable + * @{ + */ +#define LL_TIM_BREAK_DISABLE 0x00000000U /*!< Break function disabled */ +#define LL_TIM_BREAK_ENABLE TIM_BDTR_BKE /*!< Break function enabled */ +/** + * @} + */ + +/** @defgroup TIM_LL_EC_BREAK2_ENABLE Break2 Enable + * @{ + */ +#define LL_TIM_BREAK2_DISABLE 0x00000000U /*!< Break2 function disabled */ +#define LL_TIM_BREAK2_ENABLE TIM_BDTR_BK2E /*!< Break2 function enabled */ +/** + * @} + */ + +/** @defgroup TIM_LL_EC_AUTOMATICOUTPUT_ENABLE Automatic output enable + * @{ + */ +#define LL_TIM_AUTOMATICOUTPUT_DISABLE 0x00000000U /*!< MOE can be set only by software */ +#define LL_TIM_AUTOMATICOUTPUT_ENABLE TIM_BDTR_AOE /*!< MOE can be set by software or automatically at the next update event */ +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/** @defgroup TIM_LL_EC_IT IT Defines + * @brief IT defines which can be used with LL_TIM_ReadReg and LL_TIM_WriteReg functions. + * @{ + */ +#define LL_TIM_DIER_UIE TIM_DIER_UIE /*!< Update interrupt enable */ +#define LL_TIM_DIER_CC1IE TIM_DIER_CC1IE /*!< Capture/compare 1 interrupt enable */ +#define LL_TIM_DIER_CC2IE TIM_DIER_CC2IE /*!< Capture/compare 2 interrupt enable */ +#define LL_TIM_DIER_CC3IE TIM_DIER_CC3IE /*!< Capture/compare 3 interrupt enable */ +#define LL_TIM_DIER_CC4IE TIM_DIER_CC4IE /*!< Capture/compare 4 interrupt enable */ +#define LL_TIM_DIER_COMIE TIM_DIER_COMIE /*!< COM interrupt enable */ +#define LL_TIM_DIER_TIE TIM_DIER_TIE /*!< Trigger interrupt enable */ +#define LL_TIM_DIER_BIE TIM_DIER_BIE /*!< Break interrupt enable */ +/** + * @} + */ + +/** @defgroup TIM_LL_EC_UPDATESOURCE Update Source + * @{ + */ +#define LL_TIM_UPDATESOURCE_REGULAR 0x00000000U /*!< Counter overflow/underflow, Setting the UG bit or Update generation through the slave mode controller generates an update request */ +#define LL_TIM_UPDATESOURCE_COUNTER TIM_CR1_URS /*!< Only counter overflow/underflow generates an update request */ +/** + * @} + */ + +/** @defgroup TIM_LL_EC_ONEPULSEMODE One Pulse Mode + * @{ + */ +#define LL_TIM_ONEPULSEMODE_SINGLE TIM_CR1_OPM /*!< Counter stops counting at the next update event */ +#define LL_TIM_ONEPULSEMODE_REPETITIVE 0x00000000U /*!< Counter is not stopped at update event */ +/** + * @} + */ + +/** @defgroup TIM_LL_EC_COUNTERMODE Counter Mode + * @{ + */ +#define LL_TIM_COUNTERMODE_UP 0x00000000U /*!TIMx_CCRy else active.*/ +#define LL_TIM_OCMODE_PWM2 (TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_0) /*!TIMx_CCRy else inactive*/ +#define LL_TIM_OCMODE_RETRIG_OPM1 TIM_CCMR1_OC1M_3 /*!__REG__, (__VALUE__)) + +/** + * @brief Read a value in TIM register. + * @param __INSTANCE__ TIM Instance + * @param __REG__ Register to be read + * @retval Register value + */ +#define LL_TIM_ReadReg(__INSTANCE__, __REG__) READ_REG((__INSTANCE__)->__REG__) +/** + * @} + */ + +/** @defgroup TIM_LL_EM_Exported_Macros Exported_Macros + * @{ + */ + +/** + * @brief HELPER macro retrieving the UIFCPY flag from the counter value. + * @note ex: @ref __LL_TIM_GETFLAG_UIFCPY (@ref LL_TIM_GetCounter ()); + * @note Relevant only if UIF flag remapping has been enabled (UIF status bit is copied + * to TIMx_CNT register bit 31) + * @param __CNT__ Counter value + * @retval UIF status bit + */ +#define __LL_TIM_GETFLAG_UIFCPY(__CNT__) \ + (READ_BIT((__CNT__), TIM_CNT_UIFCPY) >> TIM_CNT_UIFCPY_Pos) + +/** + * @brief HELPER macro calculating DTG[0:7] in the TIMx_BDTR register to achieve the requested dead time duration. + * @note ex: @ref __LL_TIM_CALC_DEADTIME (80000000, @ref LL_TIM_GetClockDivision (), 120); + * @param __TIMCLK__ timer input clock frequency (in Hz) + * @param __CKD__ This parameter can be one of the following values: + * @arg @ref LL_TIM_CLOCKDIVISION_DIV1 + * @arg @ref LL_TIM_CLOCKDIVISION_DIV2 + * @arg @ref LL_TIM_CLOCKDIVISION_DIV4 + * @param __DT__ deadtime duration (in ns) + * @retval DTG[0:7] + */ +#define __LL_TIM_CALC_DEADTIME(__TIMCLK__, __CKD__, __DT__) \ + ( (((uint64_t)((__DT__)*1000U)) < ((DT_DELAY_1+1U) * TIM_CALC_DTS((__TIMCLK__), (__CKD__)))) ? \ + (uint8_t)(((uint64_t)((__DT__)*1000U) / TIM_CALC_DTS((__TIMCLK__), (__CKD__))) & DT_DELAY_1) : \ + (((uint64_t)((__DT__)*1000U)) < ((64U + (DT_DELAY_2+1U)) * 2U * TIM_CALC_DTS((__TIMCLK__), (__CKD__)))) ? \ + (uint8_t)(DT_RANGE_2 | ((uint8_t)((uint8_t)((((uint64_t)((__DT__)*1000U))/ TIM_CALC_DTS((__TIMCLK__), \ + (__CKD__))) >> 1U) - (uint8_t) 64) & DT_DELAY_2)) :\ + (((uint64_t)((__DT__)*1000U)) < ((32U + (DT_DELAY_3+1U)) * 8U * TIM_CALC_DTS((__TIMCLK__), (__CKD__)))) ? \ + (uint8_t)(DT_RANGE_3 | ((uint8_t)((uint8_t)(((((uint64_t)(__DT__)*1000U))/ TIM_CALC_DTS((__TIMCLK__), \ + (__CKD__))) >> 3U) - (uint8_t) 32) & DT_DELAY_3)) :\ + (((uint64_t)((__DT__)*1000U)) < ((32U + (DT_DELAY_4+1U)) * 16U * TIM_CALC_DTS((__TIMCLK__), (__CKD__)))) ? \ + (uint8_t)(DT_RANGE_4 | ((uint8_t)((uint8_t)(((((uint64_t)(__DT__)*1000U))/ TIM_CALC_DTS((__TIMCLK__), \ + (__CKD__))) >> 4U) - (uint8_t) 32) & DT_DELAY_4)) :\ + 0U) + +/** + * @brief HELPER macro calculating the prescaler value to achieve the required counter clock frequency. + * @note ex: @ref __LL_TIM_CALC_PSC (80000000, 1000000); + * @param __TIMCLK__ timer input clock frequency (in Hz) + * @param __CNTCLK__ counter clock frequency (in Hz) + * @retval Prescaler value (between Min_Data=0 and Max_Data=65535) + */ +#define __LL_TIM_CALC_PSC(__TIMCLK__, __CNTCLK__) \ + (((__TIMCLK__) >= (__CNTCLK__)) ? (uint32_t)((((__TIMCLK__) + (__CNTCLK__)/2U)/(__CNTCLK__)) - 1U) : 0U) + +/** + * @brief HELPER macro calculating the auto-reload value to achieve the required output signal frequency. + * @note ex: @ref __LL_TIM_CALC_ARR (1000000, @ref LL_TIM_GetPrescaler (), 10000); + * @param __TIMCLK__ timer input clock frequency (in Hz) + * @param __PSC__ prescaler + * @param __FREQ__ output signal frequency (in Hz) + * @retval Auto-reload value (between Min_Data=0 and Max_Data=65535) + */ +#define __LL_TIM_CALC_ARR(__TIMCLK__, __PSC__, __FREQ__) \ + ((((__TIMCLK__)/((__PSC__) + 1U)) >= (__FREQ__)) ? (((__TIMCLK__)/((__FREQ__) * ((__PSC__) + 1U))) - 1U) : 0U) + +/** + * @brief HELPER macro calculating the compare value required to achieve the required timer output compare + * active/inactive delay. + * @note ex: @ref __LL_TIM_CALC_DELAY (1000000, @ref LL_TIM_GetPrescaler (), 10); + * @param __TIMCLK__ timer input clock frequency (in Hz) + * @param __PSC__ prescaler + * @param __DELAY__ timer output compare active/inactive delay (in us) + * @retval Compare value (between Min_Data=0 and Max_Data=65535) + */ +#define __LL_TIM_CALC_DELAY(__TIMCLK__, __PSC__, __DELAY__) \ + ((uint32_t)(((uint64_t)(__TIMCLK__) * (uint64_t)(__DELAY__)) \ + / ((uint64_t)1000000U * (uint64_t)((__PSC__) + 1U)))) + +/** + * @brief HELPER macro calculating the auto-reload value to achieve the required pulse duration + * (when the timer operates in one pulse mode). + * @note ex: @ref __LL_TIM_CALC_PULSE (1000000, @ref LL_TIM_GetPrescaler (), 10, 20); + * @param __TIMCLK__ timer input clock frequency (in Hz) + * @param __PSC__ prescaler + * @param __DELAY__ timer output compare active/inactive delay (in us) + * @param __PULSE__ pulse duration (in us) + * @retval Auto-reload value (between Min_Data=0 and Max_Data=65535) + */ +#define __LL_TIM_CALC_PULSE(__TIMCLK__, __PSC__, __DELAY__, __PULSE__) \ + ((uint32_t)(__LL_TIM_CALC_DELAY((__TIMCLK__), (__PSC__), (__PULSE__)) \ + + __LL_TIM_CALC_DELAY((__TIMCLK__), (__PSC__), (__DELAY__)))) + +/** + * @brief HELPER macro retrieving the ratio of the input capture prescaler + * @note ex: @ref __LL_TIM_GET_ICPSC_RATIO (@ref LL_TIM_IC_GetPrescaler ()); + * @param __ICPSC__ This parameter can be one of the following values: + * @arg @ref LL_TIM_ICPSC_DIV1 + * @arg @ref LL_TIM_ICPSC_DIV2 + * @arg @ref LL_TIM_ICPSC_DIV4 + * @arg @ref LL_TIM_ICPSC_DIV8 + * @retval Input capture prescaler ratio (1, 2, 4 or 8) + */ +#define __LL_TIM_GET_ICPSC_RATIO(__ICPSC__) \ + ((uint32_t)(0x01U << (((__ICPSC__) >> 16U) >> TIM_CCMR1_IC1PSC_Pos))) + + +/** + * @} + */ + + +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup TIM_LL_Exported_Functions TIM Exported Functions + * @{ + */ + +/** @defgroup TIM_LL_EF_Time_Base Time Base configuration + * @{ + */ +/** + * @brief Enable timer counter. + * @rmtoll CR1 CEN LL_TIM_EnableCounter + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableCounter(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->CR1, TIM_CR1_CEN); +} + +/** + * @brief Disable timer counter. + * @rmtoll CR1 CEN LL_TIM_DisableCounter + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableCounter(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->CR1, TIM_CR1_CEN); +} + +/** + * @brief Indicates whether the timer counter is enabled. + * @rmtoll CR1 CEN LL_TIM_IsEnabledCounter + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledCounter(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->CR1, TIM_CR1_CEN) == (TIM_CR1_CEN)) ? 1UL : 0UL); +} + +/** + * @brief Enable update event generation. + * @rmtoll CR1 UDIS LL_TIM_EnableUpdateEvent + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableUpdateEvent(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->CR1, TIM_CR1_UDIS); +} + +/** + * @brief Disable update event generation. + * @rmtoll CR1 UDIS LL_TIM_DisableUpdateEvent + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableUpdateEvent(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->CR1, TIM_CR1_UDIS); +} + +/** + * @brief Indicates whether update event generation is enabled. + * @rmtoll CR1 UDIS LL_TIM_IsEnabledUpdateEvent + * @param TIMx Timer instance + * @retval Inverted state of bit (0 or 1). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledUpdateEvent(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->CR1, TIM_CR1_UDIS) == (uint32_t)RESET) ? 1UL : 0UL); +} + +/** + * @brief Set update event source + * @note Update event source set to LL_TIM_UPDATESOURCE_REGULAR: any of the following events + * generate an update interrupt or DMA request if enabled: + * - Counter overflow/underflow + * - Setting the UG bit + * - Update generation through the slave mode controller + * @note Update event source set to LL_TIM_UPDATESOURCE_COUNTER: only counter + * overflow/underflow generates an update interrupt or DMA request if enabled. + * @rmtoll CR1 URS LL_TIM_SetUpdateSource + * @param TIMx Timer instance + * @param UpdateSource This parameter can be one of the following values: + * @arg @ref LL_TIM_UPDATESOURCE_REGULAR + * @arg @ref LL_TIM_UPDATESOURCE_COUNTER + * @retval None + */ +__STATIC_INLINE void LL_TIM_SetUpdateSource(TIM_TypeDef *TIMx, uint32_t UpdateSource) +{ + MODIFY_REG(TIMx->CR1, TIM_CR1_URS, UpdateSource); +} + +/** + * @brief Get actual event update source + * @rmtoll CR1 URS LL_TIM_GetUpdateSource + * @param TIMx Timer instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_TIM_UPDATESOURCE_REGULAR + * @arg @ref LL_TIM_UPDATESOURCE_COUNTER + */ +__STATIC_INLINE uint32_t LL_TIM_GetUpdateSource(const TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_URS)); +} + +/** + * @brief Set one pulse mode (one shot v.s. repetitive). + * @rmtoll CR1 OPM LL_TIM_SetOnePulseMode + * @param TIMx Timer instance + * @param OnePulseMode This parameter can be one of the following values: + * @arg @ref LL_TIM_ONEPULSEMODE_SINGLE + * @arg @ref LL_TIM_ONEPULSEMODE_REPETITIVE + * @retval None + */ +__STATIC_INLINE void LL_TIM_SetOnePulseMode(TIM_TypeDef *TIMx, uint32_t OnePulseMode) +{ + MODIFY_REG(TIMx->CR1, TIM_CR1_OPM, OnePulseMode); +} + +/** + * @brief Get actual one pulse mode. + * @rmtoll CR1 OPM LL_TIM_GetOnePulseMode + * @param TIMx Timer instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_TIM_ONEPULSEMODE_SINGLE + * @arg @ref LL_TIM_ONEPULSEMODE_REPETITIVE + */ +__STATIC_INLINE uint32_t LL_TIM_GetOnePulseMode(const TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_OPM)); +} + +/** + * @brief Set the timer counter counting mode. + * @note Macro IS_TIM_COUNTER_MODE_SELECT_INSTANCE(TIMx) can be used to + * check whether or not the counter mode selection feature is supported + * by a timer instance. + * @note Switching from Center Aligned counter mode to Edge counter mode (or reverse) + * requires a timer reset to avoid unexpected direction + * due to DIR bit readonly in center aligned mode. + * @rmtoll CR1 DIR LL_TIM_SetCounterMode\n + * CR1 CMS LL_TIM_SetCounterMode + * @param TIMx Timer instance + * @param CounterMode This parameter can be one of the following values: + * @arg @ref LL_TIM_COUNTERMODE_UP + * @arg @ref LL_TIM_COUNTERMODE_DOWN + * @arg @ref LL_TIM_COUNTERMODE_CENTER_UP + * @arg @ref LL_TIM_COUNTERMODE_CENTER_DOWN + * @arg @ref LL_TIM_COUNTERMODE_CENTER_UP_DOWN + * @retval None + */ +__STATIC_INLINE void LL_TIM_SetCounterMode(TIM_TypeDef *TIMx, uint32_t CounterMode) +{ + MODIFY_REG(TIMx->CR1, (TIM_CR1_DIR | TIM_CR1_CMS), CounterMode); +} + +/** + * @brief Get actual counter mode. + * @note Macro IS_TIM_COUNTER_MODE_SELECT_INSTANCE(TIMx) can be used to + * check whether or not the counter mode selection feature is supported + * by a timer instance. + * @rmtoll CR1 DIR LL_TIM_GetCounterMode\n + * CR1 CMS LL_TIM_GetCounterMode + * @param TIMx Timer instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_TIM_COUNTERMODE_UP + * @arg @ref LL_TIM_COUNTERMODE_DOWN + * @arg @ref LL_TIM_COUNTERMODE_CENTER_UP + * @arg @ref LL_TIM_COUNTERMODE_CENTER_DOWN + * @arg @ref LL_TIM_COUNTERMODE_CENTER_UP_DOWN + */ +__STATIC_INLINE uint32_t LL_TIM_GetCounterMode(const TIM_TypeDef *TIMx) +{ + uint32_t counter_mode; + + counter_mode = (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_CMS)); + + if (counter_mode == 0U) + { + counter_mode = (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_DIR)); + } + + return counter_mode; +} + +/** + * @brief Enable auto-reload (ARR) preload. + * @rmtoll CR1 ARPE LL_TIM_EnableARRPreload + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableARRPreload(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->CR1, TIM_CR1_ARPE); +} + +/** + * @brief Disable auto-reload (ARR) preload. + * @rmtoll CR1 ARPE LL_TIM_DisableARRPreload + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableARRPreload(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->CR1, TIM_CR1_ARPE); +} + +/** + * @brief Indicates whether auto-reload (ARR) preload is enabled. + * @rmtoll CR1 ARPE LL_TIM_IsEnabledARRPreload + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledARRPreload(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->CR1, TIM_CR1_ARPE) == (TIM_CR1_ARPE)) ? 1UL : 0UL); +} + +/** + * @brief Set the division ratio between the timer clock and the sampling clock used by the dead-time generators + * (when supported) and the digital filters. + * @note Macro IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx) can be used to check + * whether or not the clock division feature is supported by the timer + * instance. + * @rmtoll CR1 CKD LL_TIM_SetClockDivision + * @param TIMx Timer instance + * @param ClockDivision This parameter can be one of the following values: + * @arg @ref LL_TIM_CLOCKDIVISION_DIV1 + * @arg @ref LL_TIM_CLOCKDIVISION_DIV2 + * @arg @ref LL_TIM_CLOCKDIVISION_DIV4 + * @retval None + */ +__STATIC_INLINE void LL_TIM_SetClockDivision(TIM_TypeDef *TIMx, uint32_t ClockDivision) +{ + MODIFY_REG(TIMx->CR1, TIM_CR1_CKD, ClockDivision); +} + +/** + * @brief Get the actual division ratio between the timer clock and the sampling clock used by the dead-time + * generators (when supported) and the digital filters. + * @note Macro IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx) can be used to check + * whether or not the clock division feature is supported by the timer + * instance. + * @rmtoll CR1 CKD LL_TIM_GetClockDivision + * @param TIMx Timer instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_TIM_CLOCKDIVISION_DIV1 + * @arg @ref LL_TIM_CLOCKDIVISION_DIV2 + * @arg @ref LL_TIM_CLOCKDIVISION_DIV4 + */ +__STATIC_INLINE uint32_t LL_TIM_GetClockDivision(const TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_CKD)); +} + +/** + * @brief Set the counter value. + * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check + * whether or not a timer instance supports a 32 bits counter. + * @rmtoll CNT CNT LL_TIM_SetCounter + * @param TIMx Timer instance + * @param Counter Counter value (between Min_Data=0 and Max_Data=0xFFFF or 0xFFFFFFFF) + * @retval None + */ +__STATIC_INLINE void LL_TIM_SetCounter(TIM_TypeDef *TIMx, uint32_t Counter) +{ + WRITE_REG(TIMx->CNT, Counter); +} + +/** + * @brief Get the counter value. + * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check + * whether or not a timer instance supports a 32 bits counter. + * @rmtoll CNT CNT LL_TIM_GetCounter + * @param TIMx Timer instance + * @retval Counter value (between Min_Data=0 and Max_Data=0xFFFF or 0xFFFFFFFF) + */ +__STATIC_INLINE uint32_t LL_TIM_GetCounter(const TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_REG(TIMx->CNT)); +} + +/** + * @brief Get the current direction of the counter + * @rmtoll CR1 DIR LL_TIM_GetDirection + * @param TIMx Timer instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_TIM_COUNTERDIRECTION_UP + * @arg @ref LL_TIM_COUNTERDIRECTION_DOWN + */ +__STATIC_INLINE uint32_t LL_TIM_GetDirection(const TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_DIR)); +} + +/** + * @brief Set the prescaler value. + * @note The counter clock frequency CK_CNT is equal to fCK_PSC / (PSC[15:0] + 1). + * @note The prescaler can be changed on the fly as this control register is buffered. The new + * prescaler ratio is taken into account at the next update event. + * @note Helper macro @ref __LL_TIM_CALC_PSC can be used to calculate the Prescaler parameter + * @rmtoll PSC PSC LL_TIM_SetPrescaler + * @param TIMx Timer instance + * @param Prescaler between Min_Data=0 and Max_Data=65535 + * @retval None + */ +__STATIC_INLINE void LL_TIM_SetPrescaler(TIM_TypeDef *TIMx, uint32_t Prescaler) +{ + WRITE_REG(TIMx->PSC, Prescaler); +} + +/** + * @brief Get the prescaler value. + * @rmtoll PSC PSC LL_TIM_GetPrescaler + * @param TIMx Timer instance + * @retval Prescaler value between Min_Data=0 and Max_Data=65535 + */ +__STATIC_INLINE uint32_t LL_TIM_GetPrescaler(const TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_REG(TIMx->PSC)); +} + +/** + * @brief Set the auto-reload value. + * @note The counter is blocked while the auto-reload value is null. + * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check + * whether or not a timer instance supports a 32 bits counter. + * @note Helper macro @ref __LL_TIM_CALC_ARR can be used to calculate the AutoReload parameter + * @rmtoll ARR ARR LL_TIM_SetAutoReload + * @param TIMx Timer instance + * @param AutoReload between Min_Data=0 and Max_Data=65535 + * @retval None + */ +__STATIC_INLINE void LL_TIM_SetAutoReload(TIM_TypeDef *TIMx, uint32_t AutoReload) +{ + WRITE_REG(TIMx->ARR, AutoReload); +} + +/** + * @brief Get the auto-reload value. + * @rmtoll ARR ARR LL_TIM_GetAutoReload + * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check + * whether or not a timer instance supports a 32 bits counter. + * @param TIMx Timer instance + * @retval Auto-reload value + */ +__STATIC_INLINE uint32_t LL_TIM_GetAutoReload(const TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_REG(TIMx->ARR)); +} + +/** + * @brief Set the repetition counter value. + * @note For advanced timer instances RepetitionCounter can be up to 65535. + * @note Macro IS_TIM_REPETITION_COUNTER_INSTANCE(TIMx) can be used to check + * whether or not a timer instance supports a repetition counter. + * @rmtoll RCR REP LL_TIM_SetRepetitionCounter + * @param TIMx Timer instance + * @param RepetitionCounter between Min_Data=0 and Max_Data=255 or 65535 for advanced timer. + * @retval None + */ +__STATIC_INLINE void LL_TIM_SetRepetitionCounter(TIM_TypeDef *TIMx, uint32_t RepetitionCounter) +{ + WRITE_REG(TIMx->RCR, RepetitionCounter); +} + +/** + * @brief Get the repetition counter value. + * @note Macro IS_TIM_REPETITION_COUNTER_INSTANCE(TIMx) can be used to check + * whether or not a timer instance supports a repetition counter. + * @rmtoll RCR REP LL_TIM_GetRepetitionCounter + * @param TIMx Timer instance + * @retval Repetition counter value + */ +__STATIC_INLINE uint32_t LL_TIM_GetRepetitionCounter(const TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_REG(TIMx->RCR)); +} + +/** + * @brief Force a continuous copy of the update interrupt flag (UIF) into the timer counter register (bit 31). + * @note This allows both the counter value and a potential roll-over condition signalled by the UIFCPY flag to be read + * in an atomic way. + * @rmtoll CR1 UIFREMAP LL_TIM_EnableUIFRemap + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableUIFRemap(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->CR1, TIM_CR1_UIFREMAP); +} + +/** + * @brief Disable update interrupt flag (UIF) remapping. + * @rmtoll CR1 UIFREMAP LL_TIM_DisableUIFRemap + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableUIFRemap(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->CR1, TIM_CR1_UIFREMAP); +} + +/** + * @brief Indicate whether update interrupt flag (UIF) copy is set. + * @param Counter Counter value + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsActiveUIFCPY(const uint32_t Counter) +{ + return (((Counter & TIM_CNT_UIFCPY) == (TIM_CNT_UIFCPY)) ? 1UL : 0UL); +} + +/** + * @} + */ + +/** @defgroup TIM_LL_EF_Capture_Compare Capture Compare configuration + * @{ + */ +/** + * @brief Enable the capture/compare control bits (CCxE, CCxNE and OCxM) preload. + * @note CCxE, CCxNE and OCxM bits are preloaded, after having been written, + * they are updated only when a commutation event (COM) occurs. + * @note Only on channels that have a complementary output. + * @note Macro IS_TIM_COMMUTATION_EVENT_INSTANCE(TIMx) can be used to check + * whether or not a timer instance is able to generate a commutation event. + * @rmtoll CR2 CCPC LL_TIM_CC_EnablePreload + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_CC_EnablePreload(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->CR2, TIM_CR2_CCPC); +} + +/** + * @brief Disable the capture/compare control bits (CCxE, CCxNE and OCxM) preload. + * @note Macro IS_TIM_COMMUTATION_EVENT_INSTANCE(TIMx) can be used to check + * whether or not a timer instance is able to generate a commutation event. + * @rmtoll CR2 CCPC LL_TIM_CC_DisablePreload + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_CC_DisablePreload(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->CR2, TIM_CR2_CCPC); +} + +/** + * @brief Set the updated source of the capture/compare control bits (CCxE, CCxNE and OCxM). + * @note Macro IS_TIM_COMMUTATION_EVENT_INSTANCE(TIMx) can be used to check + * whether or not a timer instance is able to generate a commutation event. + * @rmtoll CR2 CCUS LL_TIM_CC_SetUpdate + * @param TIMx Timer instance + * @param CCUpdateSource This parameter can be one of the following values: + * @arg @ref LL_TIM_CCUPDATESOURCE_COMG_ONLY + * @arg @ref LL_TIM_CCUPDATESOURCE_COMG_AND_TRGI + * @retval None + */ +__STATIC_INLINE void LL_TIM_CC_SetUpdate(TIM_TypeDef *TIMx, uint32_t CCUpdateSource) +{ + MODIFY_REG(TIMx->CR2, TIM_CR2_CCUS, CCUpdateSource); +} + +/** + * @brief Set the trigger of the capture/compare DMA request. + * @rmtoll CR2 CCDS LL_TIM_CC_SetDMAReqTrigger + * @param TIMx Timer instance + * @param DMAReqTrigger This parameter can be one of the following values: + * @arg @ref LL_TIM_CCDMAREQUEST_CC + * @arg @ref LL_TIM_CCDMAREQUEST_UPDATE + * @retval None + */ +__STATIC_INLINE void LL_TIM_CC_SetDMAReqTrigger(TIM_TypeDef *TIMx, uint32_t DMAReqTrigger) +{ + MODIFY_REG(TIMx->CR2, TIM_CR2_CCDS, DMAReqTrigger); +} + +/** + * @brief Get actual trigger of the capture/compare DMA request. + * @rmtoll CR2 CCDS LL_TIM_CC_GetDMAReqTrigger + * @param TIMx Timer instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_TIM_CCDMAREQUEST_CC + * @arg @ref LL_TIM_CCDMAREQUEST_UPDATE + */ +__STATIC_INLINE uint32_t LL_TIM_CC_GetDMAReqTrigger(const TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_BIT(TIMx->CR2, TIM_CR2_CCDS)); +} + +/** + * @brief Set the lock level to freeze the + * configuration of several capture/compare parameters. + * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not + * the lock mechanism is supported by a timer instance. + * @rmtoll BDTR LOCK LL_TIM_CC_SetLockLevel + * @param TIMx Timer instance + * @param LockLevel This parameter can be one of the following values: + * @arg @ref LL_TIM_LOCKLEVEL_OFF + * @arg @ref LL_TIM_LOCKLEVEL_1 + * @arg @ref LL_TIM_LOCKLEVEL_2 + * @arg @ref LL_TIM_LOCKLEVEL_3 + * @retval None + */ +__STATIC_INLINE void LL_TIM_CC_SetLockLevel(TIM_TypeDef *TIMx, uint32_t LockLevel) +{ + MODIFY_REG(TIMx->BDTR, TIM_BDTR_LOCK, LockLevel); +} + +/** + * @brief Enable capture/compare channels. + * @rmtoll CCER CC1E LL_TIM_CC_EnableChannel\n + * CCER CC1NE LL_TIM_CC_EnableChannel\n + * CCER CC2E LL_TIM_CC_EnableChannel\n + * CCER CC2NE LL_TIM_CC_EnableChannel\n + * CCER CC3E LL_TIM_CC_EnableChannel\n + * CCER CC3NE LL_TIM_CC_EnableChannel\n + * CCER CC4E LL_TIM_CC_EnableChannel\n + * CCER CC5E LL_TIM_CC_EnableChannel\n + * CCER CC6E LL_TIM_CC_EnableChannel + * @param TIMx Timer instance + * @param Channels This parameter can be a combination of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH1N + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH2N + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH3N + * @arg @ref LL_TIM_CHANNEL_CH4 + * @arg @ref LL_TIM_CHANNEL_CH5 + * @arg @ref LL_TIM_CHANNEL_CH6 + * @retval None + */ +__STATIC_INLINE void LL_TIM_CC_EnableChannel(TIM_TypeDef *TIMx, uint32_t Channels) +{ + SET_BIT(TIMx->CCER, Channels); +} + +/** + * @brief Disable capture/compare channels. + * @rmtoll CCER CC1E LL_TIM_CC_DisableChannel\n + * CCER CC1NE LL_TIM_CC_DisableChannel\n + * CCER CC2E LL_TIM_CC_DisableChannel\n + * CCER CC2NE LL_TIM_CC_DisableChannel\n + * CCER CC3E LL_TIM_CC_DisableChannel\n + * CCER CC3NE LL_TIM_CC_DisableChannel\n + * CCER CC4E LL_TIM_CC_DisableChannel\n + * CCER CC5E LL_TIM_CC_DisableChannel\n + * CCER CC6E LL_TIM_CC_DisableChannel + * @param TIMx Timer instance + * @param Channels This parameter can be a combination of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH1N + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH2N + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH3N + * @arg @ref LL_TIM_CHANNEL_CH4 + * @arg @ref LL_TIM_CHANNEL_CH5 + * @arg @ref LL_TIM_CHANNEL_CH6 + * @retval None + */ +__STATIC_INLINE void LL_TIM_CC_DisableChannel(TIM_TypeDef *TIMx, uint32_t Channels) +{ + CLEAR_BIT(TIMx->CCER, Channels); +} + +/** + * @brief Indicate whether channel(s) is(are) enabled. + * @rmtoll CCER CC1E LL_TIM_CC_IsEnabledChannel\n + * CCER CC1NE LL_TIM_CC_IsEnabledChannel\n + * CCER CC2E LL_TIM_CC_IsEnabledChannel\n + * CCER CC2NE LL_TIM_CC_IsEnabledChannel\n + * CCER CC3E LL_TIM_CC_IsEnabledChannel\n + * CCER CC3NE LL_TIM_CC_IsEnabledChannel\n + * CCER CC4E LL_TIM_CC_IsEnabledChannel\n + * CCER CC5E LL_TIM_CC_IsEnabledChannel\n + * CCER CC6E LL_TIM_CC_IsEnabledChannel + * @param TIMx Timer instance + * @param Channels This parameter can be a combination of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH1N + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH2N + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH3N + * @arg @ref LL_TIM_CHANNEL_CH4 + * @arg @ref LL_TIM_CHANNEL_CH5 + * @arg @ref LL_TIM_CHANNEL_CH6 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_CC_IsEnabledChannel(TIM_TypeDef *TIMx, uint32_t Channels) +{ + return ((READ_BIT(TIMx->CCER, Channels) == (Channels)) ? 1UL : 0UL); +} + +/** + * @} + */ + +/** @defgroup TIM_LL_EF_Output_Channel Output channel configuration + * @{ + */ +/** + * @brief Configure an output channel. + * @rmtoll CCMR1 CC1S LL_TIM_OC_ConfigOutput\n + * CCMR1 CC2S LL_TIM_OC_ConfigOutput\n + * CCMR2 CC3S LL_TIM_OC_ConfigOutput\n + * CCMR2 CC4S LL_TIM_OC_ConfigOutput\n + * CCMR3 CC5S LL_TIM_OC_ConfigOutput\n + * CCMR3 CC6S LL_TIM_OC_ConfigOutput\n + * CCER CC1P LL_TIM_OC_ConfigOutput\n + * CCER CC2P LL_TIM_OC_ConfigOutput\n + * CCER CC3P LL_TIM_OC_ConfigOutput\n + * CCER CC4P LL_TIM_OC_ConfigOutput\n + * CCER CC5P LL_TIM_OC_ConfigOutput\n + * CCER CC6P LL_TIM_OC_ConfigOutput\n + * CR2 OIS1 LL_TIM_OC_ConfigOutput\n + * CR2 OIS2 LL_TIM_OC_ConfigOutput\n + * CR2 OIS3 LL_TIM_OC_ConfigOutput\n + * CR2 OIS4 LL_TIM_OC_ConfigOutput\n + * CR2 OIS5 LL_TIM_OC_ConfigOutput\n + * CR2 OIS6 LL_TIM_OC_ConfigOutput + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @arg @ref LL_TIM_CHANNEL_CH5 + * @arg @ref LL_TIM_CHANNEL_CH6 + * @param Configuration This parameter must be a combination of all the following values: + * @arg @ref LL_TIM_OCPOLARITY_HIGH or @ref LL_TIM_OCPOLARITY_LOW + * @arg @ref LL_TIM_OCIDLESTATE_LOW or @ref LL_TIM_OCIDLESTATE_HIGH + * @retval None + */ +__STATIC_INLINE void LL_TIM_OC_ConfigOutput(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t Configuration) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + CLEAR_BIT(*pReg, (TIM_CCMR1_CC1S << SHIFT_TAB_OCxx[iChannel])); + MODIFY_REG(TIMx->CCER, (TIM_CCER_CC1P << SHIFT_TAB_CCxP[iChannel]), + (Configuration & TIM_CCER_CC1P) << SHIFT_TAB_CCxP[iChannel]); + MODIFY_REG(TIMx->CR2, (TIM_CR2_OIS1 << SHIFT_TAB_OISx[iChannel]), + (Configuration & TIM_CR2_OIS1) << SHIFT_TAB_OISx[iChannel]); +} + +/** + * @brief Define the behavior of the output reference signal OCxREF from which + * OCx and OCxN (when relevant) are derived. + * @rmtoll CCMR1 OC1M LL_TIM_OC_SetMode\n + * CCMR1 OC2M LL_TIM_OC_SetMode\n + * CCMR2 OC3M LL_TIM_OC_SetMode\n + * CCMR2 OC4M LL_TIM_OC_SetMode\n + * CCMR3 OC5M LL_TIM_OC_SetMode\n + * CCMR3 OC6M LL_TIM_OC_SetMode + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @arg @ref LL_TIM_CHANNEL_CH5 + * @arg @ref LL_TIM_CHANNEL_CH6 + * @param Mode This parameter can be one of the following values: + * @arg @ref LL_TIM_OCMODE_FROZEN + * @arg @ref LL_TIM_OCMODE_ACTIVE + * @arg @ref LL_TIM_OCMODE_INACTIVE + * @arg @ref LL_TIM_OCMODE_TOGGLE + * @arg @ref LL_TIM_OCMODE_FORCED_INACTIVE + * @arg @ref LL_TIM_OCMODE_FORCED_ACTIVE + * @arg @ref LL_TIM_OCMODE_PWM1 + * @arg @ref LL_TIM_OCMODE_PWM2 + * @arg @ref LL_TIM_OCMODE_RETRIG_OPM1 + * @arg @ref LL_TIM_OCMODE_RETRIG_OPM2 + * @arg @ref LL_TIM_OCMODE_COMBINED_PWM1 + * @arg @ref LL_TIM_OCMODE_COMBINED_PWM2 + * @arg @ref LL_TIM_OCMODE_ASSYMETRIC_PWM1 + * @arg @ref LL_TIM_OCMODE_ASSYMETRIC_PWM2 + * @retval None + */ +__STATIC_INLINE void LL_TIM_OC_SetMode(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t Mode) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + MODIFY_REG(*pReg, ((TIM_CCMR1_OC1M | TIM_CCMR1_CC1S) << SHIFT_TAB_OCxx[iChannel]), Mode << SHIFT_TAB_OCxx[iChannel]); +} + +/** + * @brief Get the output compare mode of an output channel. + * @rmtoll CCMR1 OC1M LL_TIM_OC_GetMode\n + * CCMR1 OC2M LL_TIM_OC_GetMode\n + * CCMR2 OC3M LL_TIM_OC_GetMode\n + * CCMR2 OC4M LL_TIM_OC_GetMode\n + * CCMR3 OC5M LL_TIM_OC_GetMode\n + * CCMR3 OC6M LL_TIM_OC_GetMode + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @arg @ref LL_TIM_CHANNEL_CH5 + * @arg @ref LL_TIM_CHANNEL_CH6 + * @retval Returned value can be one of the following values: + * @arg @ref LL_TIM_OCMODE_FROZEN + * @arg @ref LL_TIM_OCMODE_ACTIVE + * @arg @ref LL_TIM_OCMODE_INACTIVE + * @arg @ref LL_TIM_OCMODE_TOGGLE + * @arg @ref LL_TIM_OCMODE_FORCED_INACTIVE + * @arg @ref LL_TIM_OCMODE_FORCED_ACTIVE + * @arg @ref LL_TIM_OCMODE_PWM1 + * @arg @ref LL_TIM_OCMODE_PWM2 + * @arg @ref LL_TIM_OCMODE_RETRIG_OPM1 + * @arg @ref LL_TIM_OCMODE_RETRIG_OPM2 + * @arg @ref LL_TIM_OCMODE_COMBINED_PWM1 + * @arg @ref LL_TIM_OCMODE_COMBINED_PWM2 + * @arg @ref LL_TIM_OCMODE_ASSYMETRIC_PWM1 + * @arg @ref LL_TIM_OCMODE_ASSYMETRIC_PWM2 + */ +__STATIC_INLINE uint32_t LL_TIM_OC_GetMode(const TIM_TypeDef *TIMx, uint32_t Channel) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + return (READ_BIT(*pReg, ((TIM_CCMR1_OC1M | TIM_CCMR1_CC1S) << SHIFT_TAB_OCxx[iChannel])) >> SHIFT_TAB_OCxx[iChannel]); +} + +/** + * @brief Set the polarity of an output channel. + * @rmtoll CCER CC1P LL_TIM_OC_SetPolarity\n + * CCER CC1NP LL_TIM_OC_SetPolarity\n + * CCER CC2P LL_TIM_OC_SetPolarity\n + * CCER CC2NP LL_TIM_OC_SetPolarity\n + * CCER CC3P LL_TIM_OC_SetPolarity\n + * CCER CC3NP LL_TIM_OC_SetPolarity\n + * CCER CC4P LL_TIM_OC_SetPolarity\n + * CCER CC5P LL_TIM_OC_SetPolarity\n + * CCER CC6P LL_TIM_OC_SetPolarity + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH1N + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH2N + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH3N + * @arg @ref LL_TIM_CHANNEL_CH4 + * @arg @ref LL_TIM_CHANNEL_CH5 + * @arg @ref LL_TIM_CHANNEL_CH6 + * @param Polarity This parameter can be one of the following values: + * @arg @ref LL_TIM_OCPOLARITY_HIGH + * @arg @ref LL_TIM_OCPOLARITY_LOW + * @retval None + */ +__STATIC_INLINE void LL_TIM_OC_SetPolarity(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t Polarity) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + MODIFY_REG(TIMx->CCER, (TIM_CCER_CC1P << SHIFT_TAB_CCxP[iChannel]), Polarity << SHIFT_TAB_CCxP[iChannel]); +} + +/** + * @brief Get the polarity of an output channel. + * @rmtoll CCER CC1P LL_TIM_OC_GetPolarity\n + * CCER CC1NP LL_TIM_OC_GetPolarity\n + * CCER CC2P LL_TIM_OC_GetPolarity\n + * CCER CC2NP LL_TIM_OC_GetPolarity\n + * CCER CC3P LL_TIM_OC_GetPolarity\n + * CCER CC3NP LL_TIM_OC_GetPolarity\n + * CCER CC4P LL_TIM_OC_GetPolarity\n + * CCER CC5P LL_TIM_OC_GetPolarity\n + * CCER CC6P LL_TIM_OC_GetPolarity + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH1N + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH2N + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH3N + * @arg @ref LL_TIM_CHANNEL_CH4 + * @arg @ref LL_TIM_CHANNEL_CH5 + * @arg @ref LL_TIM_CHANNEL_CH6 + * @retval Returned value can be one of the following values: + * @arg @ref LL_TIM_OCPOLARITY_HIGH + * @arg @ref LL_TIM_OCPOLARITY_LOW + */ +__STATIC_INLINE uint32_t LL_TIM_OC_GetPolarity(const TIM_TypeDef *TIMx, uint32_t Channel) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + return (READ_BIT(TIMx->CCER, (TIM_CCER_CC1P << SHIFT_TAB_CCxP[iChannel])) >> SHIFT_TAB_CCxP[iChannel]); +} + +/** + * @brief Set the IDLE state of an output channel + * @note This function is significant only for the timer instances + * supporting the break feature. Macro IS_TIM_BREAK_INSTANCE(TIMx) + * can be used to check whether or not a timer instance provides + * a break input. + * @rmtoll CR2 OIS1 LL_TIM_OC_SetIdleState\n + * CR2 OIS2N LL_TIM_OC_SetIdleState\n + * CR2 OIS2 LL_TIM_OC_SetIdleState\n + * CR2 OIS2N LL_TIM_OC_SetIdleState\n + * CR2 OIS3 LL_TIM_OC_SetIdleState\n + * CR2 OIS3N LL_TIM_OC_SetIdleState\n + * CR2 OIS4 LL_TIM_OC_SetIdleState\n + * CR2 OIS5 LL_TIM_OC_SetIdleState\n + * CR2 OIS6 LL_TIM_OC_SetIdleState + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH1N + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH2N + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH3N + * @arg @ref LL_TIM_CHANNEL_CH4 + * @arg @ref LL_TIM_CHANNEL_CH5 + * @arg @ref LL_TIM_CHANNEL_CH6 + * @param IdleState This parameter can be one of the following values: + * @arg @ref LL_TIM_OCIDLESTATE_LOW + * @arg @ref LL_TIM_OCIDLESTATE_HIGH + * @retval None + */ +__STATIC_INLINE void LL_TIM_OC_SetIdleState(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t IdleState) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + MODIFY_REG(TIMx->CR2, (TIM_CR2_OIS1 << SHIFT_TAB_OISx[iChannel]), IdleState << SHIFT_TAB_OISx[iChannel]); +} + +/** + * @brief Get the IDLE state of an output channel + * @rmtoll CR2 OIS1 LL_TIM_OC_GetIdleState\n + * CR2 OIS2N LL_TIM_OC_GetIdleState\n + * CR2 OIS2 LL_TIM_OC_GetIdleState\n + * CR2 OIS2N LL_TIM_OC_GetIdleState\n + * CR2 OIS3 LL_TIM_OC_GetIdleState\n + * CR2 OIS3N LL_TIM_OC_GetIdleState\n + * CR2 OIS4 LL_TIM_OC_GetIdleState\n + * CR2 OIS5 LL_TIM_OC_GetIdleState\n + * CR2 OIS6 LL_TIM_OC_GetIdleState + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH1N + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH2N + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH3N + * @arg @ref LL_TIM_CHANNEL_CH4 + * @arg @ref LL_TIM_CHANNEL_CH5 + * @arg @ref LL_TIM_CHANNEL_CH6 + * @retval Returned value can be one of the following values: + * @arg @ref LL_TIM_OCIDLESTATE_LOW + * @arg @ref LL_TIM_OCIDLESTATE_HIGH + */ +__STATIC_INLINE uint32_t LL_TIM_OC_GetIdleState(const TIM_TypeDef *TIMx, uint32_t Channel) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + return (READ_BIT(TIMx->CR2, (TIM_CR2_OIS1 << SHIFT_TAB_OISx[iChannel])) >> SHIFT_TAB_OISx[iChannel]); +} + +/** + * @brief Enable fast mode for the output channel. + * @note Acts only if the channel is configured in PWM1 or PWM2 mode. + * @rmtoll CCMR1 OC1FE LL_TIM_OC_EnableFast\n + * CCMR1 OC2FE LL_TIM_OC_EnableFast\n + * CCMR2 OC3FE LL_TIM_OC_EnableFast\n + * CCMR2 OC4FE LL_TIM_OC_EnableFast\n + * CCMR3 OC5FE LL_TIM_OC_EnableFast\n + * CCMR3 OC6FE LL_TIM_OC_EnableFast + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @arg @ref LL_TIM_CHANNEL_CH5 + * @arg @ref LL_TIM_CHANNEL_CH6 + * @retval None + */ +__STATIC_INLINE void LL_TIM_OC_EnableFast(TIM_TypeDef *TIMx, uint32_t Channel) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + SET_BIT(*pReg, (TIM_CCMR1_OC1FE << SHIFT_TAB_OCxx[iChannel])); + +} + +/** + * @brief Disable fast mode for the output channel. + * @rmtoll CCMR1 OC1FE LL_TIM_OC_DisableFast\n + * CCMR1 OC2FE LL_TIM_OC_DisableFast\n + * CCMR2 OC3FE LL_TIM_OC_DisableFast\n + * CCMR2 OC4FE LL_TIM_OC_DisableFast\n + * CCMR3 OC5FE LL_TIM_OC_DisableFast\n + * CCMR3 OC6FE LL_TIM_OC_DisableFast + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @arg @ref LL_TIM_CHANNEL_CH5 + * @arg @ref LL_TIM_CHANNEL_CH6 + * @retval None + */ +__STATIC_INLINE void LL_TIM_OC_DisableFast(TIM_TypeDef *TIMx, uint32_t Channel) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + CLEAR_BIT(*pReg, (TIM_CCMR1_OC1FE << SHIFT_TAB_OCxx[iChannel])); + +} + +/** + * @brief Indicates whether fast mode is enabled for the output channel. + * @rmtoll CCMR1 OC1FE LL_TIM_OC_IsEnabledFast\n + * CCMR1 OC2FE LL_TIM_OC_IsEnabledFast\n + * CCMR2 OC3FE LL_TIM_OC_IsEnabledFast\n + * CCMR2 OC4FE LL_TIM_OC_IsEnabledFast\n + * CCMR3 OC5FE LL_TIM_OC_IsEnabledFast\n + * CCMR3 OC6FE LL_TIM_OC_IsEnabledFast + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @arg @ref LL_TIM_CHANNEL_CH5 + * @arg @ref LL_TIM_CHANNEL_CH6 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_OC_IsEnabledFast(TIM_TypeDef *TIMx, uint32_t Channel) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + uint32_t bitfield = TIM_CCMR1_OC1FE << SHIFT_TAB_OCxx[iChannel]; + return ((READ_BIT(*pReg, bitfield) == bitfield) ? 1UL : 0UL); +} + +/** + * @brief Enable compare register (TIMx_CCRx) preload for the output channel. + * @rmtoll CCMR1 OC1PE LL_TIM_OC_EnablePreload\n + * CCMR1 OC2PE LL_TIM_OC_EnablePreload\n + * CCMR2 OC3PE LL_TIM_OC_EnablePreload\n + * CCMR2 OC4PE LL_TIM_OC_EnablePreload\n + * CCMR3 OC5PE LL_TIM_OC_EnablePreload\n + * CCMR3 OC6PE LL_TIM_OC_EnablePreload + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @arg @ref LL_TIM_CHANNEL_CH5 + * @arg @ref LL_TIM_CHANNEL_CH6 + * @retval None + */ +__STATIC_INLINE void LL_TIM_OC_EnablePreload(TIM_TypeDef *TIMx, uint32_t Channel) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + SET_BIT(*pReg, (TIM_CCMR1_OC1PE << SHIFT_TAB_OCxx[iChannel])); +} + +/** + * @brief Disable compare register (TIMx_CCRx) preload for the output channel. + * @rmtoll CCMR1 OC1PE LL_TIM_OC_DisablePreload\n + * CCMR1 OC2PE LL_TIM_OC_DisablePreload\n + * CCMR2 OC3PE LL_TIM_OC_DisablePreload\n + * CCMR2 OC4PE LL_TIM_OC_DisablePreload\n + * CCMR3 OC5PE LL_TIM_OC_DisablePreload\n + * CCMR3 OC6PE LL_TIM_OC_DisablePreload + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @arg @ref LL_TIM_CHANNEL_CH5 + * @arg @ref LL_TIM_CHANNEL_CH6 + * @retval None + */ +__STATIC_INLINE void LL_TIM_OC_DisablePreload(TIM_TypeDef *TIMx, uint32_t Channel) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + CLEAR_BIT(*pReg, (TIM_CCMR1_OC1PE << SHIFT_TAB_OCxx[iChannel])); +} + +/** + * @brief Indicates whether compare register (TIMx_CCRx) preload is enabled for the output channel. + * @rmtoll CCMR1 OC1PE LL_TIM_OC_IsEnabledPreload\n + * CCMR1 OC2PE LL_TIM_OC_IsEnabledPreload\n + * CCMR2 OC3PE LL_TIM_OC_IsEnabledPreload\n + * CCMR2 OC4PE LL_TIM_OC_IsEnabledPreload\n + * CCMR3 OC5PE LL_TIM_OC_IsEnabledPreload\n + * CCMR3 OC6PE LL_TIM_OC_IsEnabledPreload + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @arg @ref LL_TIM_CHANNEL_CH5 + * @arg @ref LL_TIM_CHANNEL_CH6 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_OC_IsEnabledPreload(TIM_TypeDef *TIMx, uint32_t Channel) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + uint32_t bitfield = TIM_CCMR1_OC1PE << SHIFT_TAB_OCxx[iChannel]; + return ((READ_BIT(*pReg, bitfield) == bitfield) ? 1UL : 0UL); +} + +/** + * @brief Enable clearing the output channel on an external event. + * @note This function can only be used in Output compare and PWM modes. It does not work in Forced mode. + * @note Macro IS_TIM_OCXREF_CLEAR_INSTANCE(TIMx) can be used to check whether + * or not a timer instance can clear the OCxREF signal on an external event. + * @rmtoll CCMR1 OC1CE LL_TIM_OC_EnableClear\n + * CCMR1 OC2CE LL_TIM_OC_EnableClear\n + * CCMR2 OC3CE LL_TIM_OC_EnableClear\n + * CCMR2 OC4CE LL_TIM_OC_EnableClear\n + * CCMR3 OC5CE LL_TIM_OC_EnableClear\n + * CCMR3 OC6CE LL_TIM_OC_EnableClear + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @arg @ref LL_TIM_CHANNEL_CH5 + * @arg @ref LL_TIM_CHANNEL_CH6 + * @retval None + */ +__STATIC_INLINE void LL_TIM_OC_EnableClear(TIM_TypeDef *TIMx, uint32_t Channel) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + SET_BIT(*pReg, (TIM_CCMR1_OC1CE << SHIFT_TAB_OCxx[iChannel])); +} + +/** + * @brief Disable clearing the output channel on an external event. + * @note Macro IS_TIM_OCXREF_CLEAR_INSTANCE(TIMx) can be used to check whether + * or not a timer instance can clear the OCxREF signal on an external event. + * @rmtoll CCMR1 OC1CE LL_TIM_OC_DisableClear\n + * CCMR1 OC2CE LL_TIM_OC_DisableClear\n + * CCMR2 OC3CE LL_TIM_OC_DisableClear\n + * CCMR2 OC4CE LL_TIM_OC_DisableClear\n + * CCMR3 OC5CE LL_TIM_OC_DisableClear\n + * CCMR3 OC6CE LL_TIM_OC_DisableClear + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @arg @ref LL_TIM_CHANNEL_CH5 + * @arg @ref LL_TIM_CHANNEL_CH6 + * @retval None + */ +__STATIC_INLINE void LL_TIM_OC_DisableClear(TIM_TypeDef *TIMx, uint32_t Channel) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + CLEAR_BIT(*pReg, (TIM_CCMR1_OC1CE << SHIFT_TAB_OCxx[iChannel])); +} + +/** + * @brief Indicates clearing the output channel on an external event is enabled for the output channel. + * @note This function enables clearing the output channel on an external event. + * @note This function can only be used in Output compare and PWM modes. It does not work in Forced mode. + * @note Macro IS_TIM_OCXREF_CLEAR_INSTANCE(TIMx) can be used to check whether + * or not a timer instance can clear the OCxREF signal on an external event. + * @rmtoll CCMR1 OC1CE LL_TIM_OC_IsEnabledClear\n + * CCMR1 OC2CE LL_TIM_OC_IsEnabledClear\n + * CCMR2 OC3CE LL_TIM_OC_IsEnabledClear\n + * CCMR2 OC4CE LL_TIM_OC_IsEnabledClear\n + * CCMR3 OC5CE LL_TIM_OC_IsEnabledClear\n + * CCMR3 OC6CE LL_TIM_OC_IsEnabledClear + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @arg @ref LL_TIM_CHANNEL_CH5 + * @arg @ref LL_TIM_CHANNEL_CH6 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_OC_IsEnabledClear(TIM_TypeDef *TIMx, uint32_t Channel) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + uint32_t bitfield = TIM_CCMR1_OC1CE << SHIFT_TAB_OCxx[iChannel]; + return ((READ_BIT(*pReg, bitfield) == bitfield) ? 1UL : 0UL); +} + +/** + * @brief Set the dead-time delay (delay inserted between the rising edge of the OCxREF signal and the rising edge of + * the Ocx and OCxN signals). + * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not + * dead-time insertion feature is supported by a timer instance. + * @note Helper macro @ref __LL_TIM_CALC_DEADTIME can be used to calculate the DeadTime parameter + * @rmtoll BDTR DTG LL_TIM_OC_SetDeadTime + * @param TIMx Timer instance + * @param DeadTime between Min_Data=0 and Max_Data=255 + * @retval None + */ +__STATIC_INLINE void LL_TIM_OC_SetDeadTime(TIM_TypeDef *TIMx, uint32_t DeadTime) +{ + MODIFY_REG(TIMx->BDTR, TIM_BDTR_DTG, DeadTime); +} + +/** + * @brief Set compare value for output channel 1 (TIMx_CCR1). + * @note In 32-bit timer implementations compare value can be between 0x00000000 and 0xFFFFFFFF. + * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check + * whether or not a timer instance supports a 32 bits counter. + * @note Macro IS_TIM_CC1_INSTANCE(TIMx) can be used to check whether or not + * output channel 1 is supported by a timer instance. + * @rmtoll CCR1 CCR1 LL_TIM_OC_SetCompareCH1 + * @param TIMx Timer instance + * @param CompareValue between Min_Data=0 and Max_Data=65535 + * @retval None + */ +__STATIC_INLINE void LL_TIM_OC_SetCompareCH1(TIM_TypeDef *TIMx, uint32_t CompareValue) +{ + WRITE_REG(TIMx->CCR1, CompareValue); +} + +/** + * @brief Set compare value for output channel 2 (TIMx_CCR2). + * @note In 32-bit timer implementations compare value can be between 0x00000000 and 0xFFFFFFFF. + * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check + * whether or not a timer instance supports a 32 bits counter. + * @note Macro IS_TIM_CC2_INSTANCE(TIMx) can be used to check whether or not + * output channel 2 is supported by a timer instance. + * @rmtoll CCR2 CCR2 LL_TIM_OC_SetCompareCH2 + * @param TIMx Timer instance + * @param CompareValue between Min_Data=0 and Max_Data=65535 + * @retval None + */ +__STATIC_INLINE void LL_TIM_OC_SetCompareCH2(TIM_TypeDef *TIMx, uint32_t CompareValue) +{ + WRITE_REG(TIMx->CCR2, CompareValue); +} + +/** + * @brief Set compare value for output channel 3 (TIMx_CCR3). + * @note In 32-bit timer implementations compare value can be between 0x00000000 and 0xFFFFFFFF. + * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check + * whether or not a timer instance supports a 32 bits counter. + * @note Macro IS_TIM_CC3_INSTANCE(TIMx) can be used to check whether or not + * output channel is supported by a timer instance. + * @rmtoll CCR3 CCR3 LL_TIM_OC_SetCompareCH3 + * @param TIMx Timer instance + * @param CompareValue between Min_Data=0 and Max_Data=65535 + * @retval None + */ +__STATIC_INLINE void LL_TIM_OC_SetCompareCH3(TIM_TypeDef *TIMx, uint32_t CompareValue) +{ + WRITE_REG(TIMx->CCR3, CompareValue); +} + +/** + * @brief Set compare value for output channel 4 (TIMx_CCR4). + * @note In 32-bit timer implementations compare value can be between 0x00000000 and 0xFFFFFFFF. + * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check + * whether or not a timer instance supports a 32 bits counter. + * @note Macro IS_TIM_CC4_INSTANCE(TIMx) can be used to check whether or not + * output channel 4 is supported by a timer instance. + * @rmtoll CCR4 CCR4 LL_TIM_OC_SetCompareCH4 + * @param TIMx Timer instance + * @param CompareValue between Min_Data=0 and Max_Data=65535 + * @retval None + */ +__STATIC_INLINE void LL_TIM_OC_SetCompareCH4(TIM_TypeDef *TIMx, uint32_t CompareValue) +{ + WRITE_REG(TIMx->CCR4, CompareValue); +} + +/** + * @brief Set compare value for output channel 5 (TIMx_CCR5). + * @note Macro IS_TIM_CC5_INSTANCE(TIMx) can be used to check whether or not + * output channel 5 is supported by a timer instance. + * @rmtoll CCR5 CCR5 LL_TIM_OC_SetCompareCH5 + * @param TIMx Timer instance + * @param CompareValue between Min_Data=0 and Max_Data=65535 + * @retval None + */ +__STATIC_INLINE void LL_TIM_OC_SetCompareCH5(TIM_TypeDef *TIMx, uint32_t CompareValue) +{ + MODIFY_REG(TIMx->CCR5, TIM_CCR5_CCR5, CompareValue); +} + +/** + * @brief Set compare value for output channel 6 (TIMx_CCR6). + * @note Macro IS_TIM_CC6_INSTANCE(TIMx) can be used to check whether or not + * output channel 6 is supported by a timer instance. + * @rmtoll CCR6 CCR6 LL_TIM_OC_SetCompareCH6 + * @param TIMx Timer instance + * @param CompareValue between Min_Data=0 and Max_Data=65535 + * @retval None + */ +__STATIC_INLINE void LL_TIM_OC_SetCompareCH6(TIM_TypeDef *TIMx, uint32_t CompareValue) +{ + WRITE_REG(TIMx->CCR6, CompareValue); +} + +/** + * @brief Get compare value (TIMx_CCR1) set for output channel 1. + * @note In 32-bit timer implementations returned compare value can be between 0x00000000 and 0xFFFFFFFF. + * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check + * whether or not a timer instance supports a 32 bits counter. + * @note Macro IS_TIM_CC1_INSTANCE(TIMx) can be used to check whether or not + * output channel 1 is supported by a timer instance. + * @rmtoll CCR1 CCR1 LL_TIM_OC_GetCompareCH1 + * @param TIMx Timer instance + * @retval CompareValue (between Min_Data=0 and Max_Data=65535) + */ +__STATIC_INLINE uint32_t LL_TIM_OC_GetCompareCH1(const TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_REG(TIMx->CCR1)); +} + +/** + * @brief Get compare value (TIMx_CCR2) set for output channel 2. + * @note In 32-bit timer implementations returned compare value can be between 0x00000000 and 0xFFFFFFFF. + * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check + * whether or not a timer instance supports a 32 bits counter. + * @note Macro IS_TIM_CC2_INSTANCE(TIMx) can be used to check whether or not + * output channel 2 is supported by a timer instance. + * @rmtoll CCR2 CCR2 LL_TIM_OC_GetCompareCH2 + * @param TIMx Timer instance + * @retval CompareValue (between Min_Data=0 and Max_Data=65535) + */ +__STATIC_INLINE uint32_t LL_TIM_OC_GetCompareCH2(const TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_REG(TIMx->CCR2)); +} + +/** + * @brief Get compare value (TIMx_CCR3) set for output channel 3. + * @note In 32-bit timer implementations returned compare value can be between 0x00000000 and 0xFFFFFFFF. + * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check + * whether or not a timer instance supports a 32 bits counter. + * @note Macro IS_TIM_CC3_INSTANCE(TIMx) can be used to check whether or not + * output channel 3 is supported by a timer instance. + * @rmtoll CCR3 CCR3 LL_TIM_OC_GetCompareCH3 + * @param TIMx Timer instance + * @retval CompareValue (between Min_Data=0 and Max_Data=65535) + */ +__STATIC_INLINE uint32_t LL_TIM_OC_GetCompareCH3(const TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_REG(TIMx->CCR3)); +} + +/** + * @brief Get compare value (TIMx_CCR4) set for output channel 4. + * @note In 32-bit timer implementations returned compare value can be between 0x00000000 and 0xFFFFFFFF. + * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check + * whether or not a timer instance supports a 32 bits counter. + * @note Macro IS_TIM_CC4_INSTANCE(TIMx) can be used to check whether or not + * output channel 4 is supported by a timer instance. + * @rmtoll CCR4 CCR4 LL_TIM_OC_GetCompareCH4 + * @param TIMx Timer instance + * @retval CompareValue (between Min_Data=0 and Max_Data=65535) + */ +__STATIC_INLINE uint32_t LL_TIM_OC_GetCompareCH4(const TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_REG(TIMx->CCR4)); +} + +/** + * @brief Get compare value (TIMx_CCR5) set for output channel 5. + * @note Macro IS_TIM_CC5_INSTANCE(TIMx) can be used to check whether or not + * output channel 5 is supported by a timer instance. + * @rmtoll CCR5 CCR5 LL_TIM_OC_GetCompareCH5 + * @param TIMx Timer instance + * @retval CompareValue (between Min_Data=0 and Max_Data=65535) + */ +__STATIC_INLINE uint32_t LL_TIM_OC_GetCompareCH5(const TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_BIT(TIMx->CCR5, TIM_CCR5_CCR5)); +} + +/** + * @brief Get compare value (TIMx_CCR6) set for output channel 6. + * @note Macro IS_TIM_CC6_INSTANCE(TIMx) can be used to check whether or not + * output channel 6 is supported by a timer instance. + * @rmtoll CCR6 CCR6 LL_TIM_OC_GetCompareCH6 + * @param TIMx Timer instance + * @retval CompareValue (between Min_Data=0 and Max_Data=65535) + */ +__STATIC_INLINE uint32_t LL_TIM_OC_GetCompareCH6(const TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_REG(TIMx->CCR6)); +} + +/** + * @brief Select on which reference signal the OC5REF is combined to. + * @note Macro IS_TIM_COMBINED3PHASEPWM_INSTANCE(TIMx) can be used to check + * whether or not a timer instance supports the combined 3-phase PWM mode. + * @rmtoll CCR5 GC5C3 LL_TIM_SetCH5CombinedChannels\n + * CCR5 GC5C2 LL_TIM_SetCH5CombinedChannels\n + * CCR5 GC5C1 LL_TIM_SetCH5CombinedChannels + * @param TIMx Timer instance + * @param GroupCH5 This parameter can be a combination of the following values: + * @arg @ref LL_TIM_GROUPCH5_NONE + * @arg @ref LL_TIM_GROUPCH5_OC1REFC + * @arg @ref LL_TIM_GROUPCH5_OC2REFC + * @arg @ref LL_TIM_GROUPCH5_OC3REFC + * @retval None + */ +__STATIC_INLINE void LL_TIM_SetCH5CombinedChannels(TIM_TypeDef *TIMx, uint32_t GroupCH5) +{ + MODIFY_REG(TIMx->CCR5, (TIM_CCR5_GC5C3 | TIM_CCR5_GC5C2 | TIM_CCR5_GC5C1), GroupCH5); +} + +/** + * @} + */ + +/** @defgroup TIM_LL_EF_Input_Channel Input channel configuration + * @{ + */ +/** + * @brief Configure input channel. + * @rmtoll CCMR1 CC1S LL_TIM_IC_Config\n + * CCMR1 IC1PSC LL_TIM_IC_Config\n + * CCMR1 IC1F LL_TIM_IC_Config\n + * CCMR1 CC2S LL_TIM_IC_Config\n + * CCMR1 IC2PSC LL_TIM_IC_Config\n + * CCMR1 IC2F LL_TIM_IC_Config\n + * CCMR2 CC3S LL_TIM_IC_Config\n + * CCMR2 IC3PSC LL_TIM_IC_Config\n + * CCMR2 IC3F LL_TIM_IC_Config\n + * CCMR2 CC4S LL_TIM_IC_Config\n + * CCMR2 IC4PSC LL_TIM_IC_Config\n + * CCMR2 IC4F LL_TIM_IC_Config\n + * CCER CC1P LL_TIM_IC_Config\n + * CCER CC1NP LL_TIM_IC_Config\n + * CCER CC2P LL_TIM_IC_Config\n + * CCER CC2NP LL_TIM_IC_Config\n + * CCER CC3P LL_TIM_IC_Config\n + * CCER CC3NP LL_TIM_IC_Config\n + * CCER CC4P LL_TIM_IC_Config\n + * CCER CC4NP LL_TIM_IC_Config + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @param Configuration This parameter must be a combination of all the following values: + * @arg @ref LL_TIM_ACTIVEINPUT_DIRECTTI or @ref LL_TIM_ACTIVEINPUT_INDIRECTTI or @ref LL_TIM_ACTIVEINPUT_TRC + * @arg @ref LL_TIM_ICPSC_DIV1 or ... or @ref LL_TIM_ICPSC_DIV8 + * @arg @ref LL_TIM_IC_FILTER_FDIV1 or ... or @ref LL_TIM_IC_FILTER_FDIV32_N8 + * @arg @ref LL_TIM_IC_POLARITY_RISING or @ref LL_TIM_IC_POLARITY_FALLING or @ref LL_TIM_IC_POLARITY_BOTHEDGE + * @retval None + */ +__STATIC_INLINE void LL_TIM_IC_Config(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t Configuration) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + MODIFY_REG(*pReg, ((TIM_CCMR1_IC1F | TIM_CCMR1_IC1PSC | TIM_CCMR1_CC1S) << SHIFT_TAB_ICxx[iChannel]), + ((Configuration >> 16U) & (TIM_CCMR1_IC1F | TIM_CCMR1_IC1PSC | TIM_CCMR1_CC1S)) \ + << SHIFT_TAB_ICxx[iChannel]); + MODIFY_REG(TIMx->CCER, ((TIM_CCER_CC1NP | TIM_CCER_CC1P) << SHIFT_TAB_CCxP[iChannel]), + (Configuration & (TIM_CCER_CC1NP | TIM_CCER_CC1P)) << SHIFT_TAB_CCxP[iChannel]); +} + +/** + * @brief Set the active input. + * @rmtoll CCMR1 CC1S LL_TIM_IC_SetActiveInput\n + * CCMR1 CC2S LL_TIM_IC_SetActiveInput\n + * CCMR2 CC3S LL_TIM_IC_SetActiveInput\n + * CCMR2 CC4S LL_TIM_IC_SetActiveInput + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @param ICActiveInput This parameter can be one of the following values: + * @arg @ref LL_TIM_ACTIVEINPUT_DIRECTTI + * @arg @ref LL_TIM_ACTIVEINPUT_INDIRECTTI + * @arg @ref LL_TIM_ACTIVEINPUT_TRC + * @retval None + */ +__STATIC_INLINE void LL_TIM_IC_SetActiveInput(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ICActiveInput) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + MODIFY_REG(*pReg, ((TIM_CCMR1_CC1S) << SHIFT_TAB_ICxx[iChannel]), (ICActiveInput >> 16U) << SHIFT_TAB_ICxx[iChannel]); +} + +/** + * @brief Get the current active input. + * @rmtoll CCMR1 CC1S LL_TIM_IC_GetActiveInput\n + * CCMR1 CC2S LL_TIM_IC_GetActiveInput\n + * CCMR2 CC3S LL_TIM_IC_GetActiveInput\n + * CCMR2 CC4S LL_TIM_IC_GetActiveInput + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @retval Returned value can be one of the following values: + * @arg @ref LL_TIM_ACTIVEINPUT_DIRECTTI + * @arg @ref LL_TIM_ACTIVEINPUT_INDIRECTTI + * @arg @ref LL_TIM_ACTIVEINPUT_TRC + */ +__STATIC_INLINE uint32_t LL_TIM_IC_GetActiveInput(const TIM_TypeDef *TIMx, uint32_t Channel) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + return ((READ_BIT(*pReg, ((TIM_CCMR1_CC1S) << SHIFT_TAB_ICxx[iChannel])) >> SHIFT_TAB_ICxx[iChannel]) << 16U); +} + +/** + * @brief Set the prescaler of input channel. + * @rmtoll CCMR1 IC1PSC LL_TIM_IC_SetPrescaler\n + * CCMR1 IC2PSC LL_TIM_IC_SetPrescaler\n + * CCMR2 IC3PSC LL_TIM_IC_SetPrescaler\n + * CCMR2 IC4PSC LL_TIM_IC_SetPrescaler + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @param ICPrescaler This parameter can be one of the following values: + * @arg @ref LL_TIM_ICPSC_DIV1 + * @arg @ref LL_TIM_ICPSC_DIV2 + * @arg @ref LL_TIM_ICPSC_DIV4 + * @arg @ref LL_TIM_ICPSC_DIV8 + * @retval None + */ +__STATIC_INLINE void LL_TIM_IC_SetPrescaler(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ICPrescaler) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + MODIFY_REG(*pReg, ((TIM_CCMR1_IC1PSC) << SHIFT_TAB_ICxx[iChannel]), (ICPrescaler >> 16U) << SHIFT_TAB_ICxx[iChannel]); +} + +/** + * @brief Get the current prescaler value acting on an input channel. + * @rmtoll CCMR1 IC1PSC LL_TIM_IC_GetPrescaler\n + * CCMR1 IC2PSC LL_TIM_IC_GetPrescaler\n + * CCMR2 IC3PSC LL_TIM_IC_GetPrescaler\n + * CCMR2 IC4PSC LL_TIM_IC_GetPrescaler + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @retval Returned value can be one of the following values: + * @arg @ref LL_TIM_ICPSC_DIV1 + * @arg @ref LL_TIM_ICPSC_DIV2 + * @arg @ref LL_TIM_ICPSC_DIV4 + * @arg @ref LL_TIM_ICPSC_DIV8 + */ +__STATIC_INLINE uint32_t LL_TIM_IC_GetPrescaler(const TIM_TypeDef *TIMx, uint32_t Channel) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + return ((READ_BIT(*pReg, ((TIM_CCMR1_IC1PSC) << SHIFT_TAB_ICxx[iChannel])) >> SHIFT_TAB_ICxx[iChannel]) << 16U); +} + +/** + * @brief Set the input filter duration. + * @rmtoll CCMR1 IC1F LL_TIM_IC_SetFilter\n + * CCMR1 IC2F LL_TIM_IC_SetFilter\n + * CCMR2 IC3F LL_TIM_IC_SetFilter\n + * CCMR2 IC4F LL_TIM_IC_SetFilter + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @param ICFilter This parameter can be one of the following values: + * @arg @ref LL_TIM_IC_FILTER_FDIV1 + * @arg @ref LL_TIM_IC_FILTER_FDIV1_N2 + * @arg @ref LL_TIM_IC_FILTER_FDIV1_N4 + * @arg @ref LL_TIM_IC_FILTER_FDIV1_N8 + * @arg @ref LL_TIM_IC_FILTER_FDIV2_N6 + * @arg @ref LL_TIM_IC_FILTER_FDIV2_N8 + * @arg @ref LL_TIM_IC_FILTER_FDIV4_N6 + * @arg @ref LL_TIM_IC_FILTER_FDIV4_N8 + * @arg @ref LL_TIM_IC_FILTER_FDIV8_N6 + * @arg @ref LL_TIM_IC_FILTER_FDIV8_N8 + * @arg @ref LL_TIM_IC_FILTER_FDIV16_N5 + * @arg @ref LL_TIM_IC_FILTER_FDIV16_N6 + * @arg @ref LL_TIM_IC_FILTER_FDIV16_N8 + * @arg @ref LL_TIM_IC_FILTER_FDIV32_N5 + * @arg @ref LL_TIM_IC_FILTER_FDIV32_N6 + * @arg @ref LL_TIM_IC_FILTER_FDIV32_N8 + * @retval None + */ +__STATIC_INLINE void LL_TIM_IC_SetFilter(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ICFilter) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + MODIFY_REG(*pReg, ((TIM_CCMR1_IC1F) << SHIFT_TAB_ICxx[iChannel]), (ICFilter >> 16U) << SHIFT_TAB_ICxx[iChannel]); +} + +/** + * @brief Get the input filter duration. + * @rmtoll CCMR1 IC1F LL_TIM_IC_GetFilter\n + * CCMR1 IC2F LL_TIM_IC_GetFilter\n + * CCMR2 IC3F LL_TIM_IC_GetFilter\n + * CCMR2 IC4F LL_TIM_IC_GetFilter + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @retval Returned value can be one of the following values: + * @arg @ref LL_TIM_IC_FILTER_FDIV1 + * @arg @ref LL_TIM_IC_FILTER_FDIV1_N2 + * @arg @ref LL_TIM_IC_FILTER_FDIV1_N4 + * @arg @ref LL_TIM_IC_FILTER_FDIV1_N8 + * @arg @ref LL_TIM_IC_FILTER_FDIV2_N6 + * @arg @ref LL_TIM_IC_FILTER_FDIV2_N8 + * @arg @ref LL_TIM_IC_FILTER_FDIV4_N6 + * @arg @ref LL_TIM_IC_FILTER_FDIV4_N8 + * @arg @ref LL_TIM_IC_FILTER_FDIV8_N6 + * @arg @ref LL_TIM_IC_FILTER_FDIV8_N8 + * @arg @ref LL_TIM_IC_FILTER_FDIV16_N5 + * @arg @ref LL_TIM_IC_FILTER_FDIV16_N6 + * @arg @ref LL_TIM_IC_FILTER_FDIV16_N8 + * @arg @ref LL_TIM_IC_FILTER_FDIV32_N5 + * @arg @ref LL_TIM_IC_FILTER_FDIV32_N6 + * @arg @ref LL_TIM_IC_FILTER_FDIV32_N8 + */ +__STATIC_INLINE uint32_t LL_TIM_IC_GetFilter(const TIM_TypeDef *TIMx, uint32_t Channel) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + return ((READ_BIT(*pReg, ((TIM_CCMR1_IC1F) << SHIFT_TAB_ICxx[iChannel])) >> SHIFT_TAB_ICxx[iChannel]) << 16U); +} + +/** + * @brief Set the input channel polarity. + * @rmtoll CCER CC1P LL_TIM_IC_SetPolarity\n + * CCER CC1NP LL_TIM_IC_SetPolarity\n + * CCER CC2P LL_TIM_IC_SetPolarity\n + * CCER CC2NP LL_TIM_IC_SetPolarity\n + * CCER CC3P LL_TIM_IC_SetPolarity\n + * CCER CC3NP LL_TIM_IC_SetPolarity\n + * CCER CC4P LL_TIM_IC_SetPolarity\n + * CCER CC4NP LL_TIM_IC_SetPolarity + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @param ICPolarity This parameter can be one of the following values: + * @arg @ref LL_TIM_IC_POLARITY_RISING + * @arg @ref LL_TIM_IC_POLARITY_FALLING + * @arg @ref LL_TIM_IC_POLARITY_BOTHEDGE + * @retval None + */ +__STATIC_INLINE void LL_TIM_IC_SetPolarity(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ICPolarity) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + MODIFY_REG(TIMx->CCER, ((TIM_CCER_CC1NP | TIM_CCER_CC1P) << SHIFT_TAB_CCxP[iChannel]), + ICPolarity << SHIFT_TAB_CCxP[iChannel]); +} + +/** + * @brief Get the current input channel polarity. + * @rmtoll CCER CC1P LL_TIM_IC_GetPolarity\n + * CCER CC1NP LL_TIM_IC_GetPolarity\n + * CCER CC2P LL_TIM_IC_GetPolarity\n + * CCER CC2NP LL_TIM_IC_GetPolarity\n + * CCER CC3P LL_TIM_IC_GetPolarity\n + * CCER CC3NP LL_TIM_IC_GetPolarity\n + * CCER CC4P LL_TIM_IC_GetPolarity\n + * CCER CC4NP LL_TIM_IC_GetPolarity + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @retval Returned value can be one of the following values: + * @arg @ref LL_TIM_IC_POLARITY_RISING + * @arg @ref LL_TIM_IC_POLARITY_FALLING + * @arg @ref LL_TIM_IC_POLARITY_BOTHEDGE + */ +__STATIC_INLINE uint32_t LL_TIM_IC_GetPolarity(const TIM_TypeDef *TIMx, uint32_t Channel) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + return (READ_BIT(TIMx->CCER, ((TIM_CCER_CC1NP | TIM_CCER_CC1P) << SHIFT_TAB_CCxP[iChannel])) >> + SHIFT_TAB_CCxP[iChannel]); +} + +/** + * @brief Connect the TIMx_CH1, CH2 and CH3 pins to the TI1 input (XOR combination). + * @note Macro IS_TIM_XOR_INSTANCE(TIMx) can be used to check whether or not + * a timer instance provides an XOR input. + * @rmtoll CR2 TI1S LL_TIM_IC_EnableXORCombination + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_IC_EnableXORCombination(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->CR2, TIM_CR2_TI1S); +} + +/** + * @brief Disconnect the TIMx_CH1, CH2 and CH3 pins from the TI1 input. + * @note Macro IS_TIM_XOR_INSTANCE(TIMx) can be used to check whether or not + * a timer instance provides an XOR input. + * @rmtoll CR2 TI1S LL_TIM_IC_DisableXORCombination + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_IC_DisableXORCombination(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->CR2, TIM_CR2_TI1S); +} + +/** + * @brief Indicates whether the TIMx_CH1, CH2 and CH3 pins are connectected to the TI1 input. + * @note Macro IS_TIM_XOR_INSTANCE(TIMx) can be used to check whether or not + * a timer instance provides an XOR input. + * @rmtoll CR2 TI1S LL_TIM_IC_IsEnabledXORCombination + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IC_IsEnabledXORCombination(TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->CR2, TIM_CR2_TI1S) == (TIM_CR2_TI1S)) ? 1UL : 0UL); +} + +/** + * @brief Get captured value for input channel 1. + * @note In 32-bit timer implementations returned captured value can be between 0x00000000 and 0xFFFFFFFF. + * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check + * whether or not a timer instance supports a 32 bits counter. + * @note Macro IS_TIM_CC1_INSTANCE(TIMx) can be used to check whether or not + * input channel 1 is supported by a timer instance. + * @rmtoll CCR1 CCR1 LL_TIM_IC_GetCaptureCH1 + * @param TIMx Timer instance + * @retval CapturedValue (between Min_Data=0 and Max_Data=65535) + */ +__STATIC_INLINE uint32_t LL_TIM_IC_GetCaptureCH1(const TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_REG(TIMx->CCR1)); +} + +/** + * @brief Get captured value for input channel 2. + * @note In 32-bit timer implementations returned captured value can be between 0x00000000 and 0xFFFFFFFF. + * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check + * whether or not a timer instance supports a 32 bits counter. + * @note Macro IS_TIM_CC2_INSTANCE(TIMx) can be used to check whether or not + * input channel 2 is supported by a timer instance. + * @rmtoll CCR2 CCR2 LL_TIM_IC_GetCaptureCH2 + * @param TIMx Timer instance + * @retval CapturedValue (between Min_Data=0 and Max_Data=65535) + */ +__STATIC_INLINE uint32_t LL_TIM_IC_GetCaptureCH2(const TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_REG(TIMx->CCR2)); +} + +/** + * @brief Get captured value for input channel 3. + * @note In 32-bit timer implementations returned captured value can be between 0x00000000 and 0xFFFFFFFF. + * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check + * whether or not a timer instance supports a 32 bits counter. + * @note Macro IS_TIM_CC3_INSTANCE(TIMx) can be used to check whether or not + * input channel 3 is supported by a timer instance. + * @rmtoll CCR3 CCR3 LL_TIM_IC_GetCaptureCH3 + * @param TIMx Timer instance + * @retval CapturedValue (between Min_Data=0 and Max_Data=65535) + */ +__STATIC_INLINE uint32_t LL_TIM_IC_GetCaptureCH3(const TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_REG(TIMx->CCR3)); +} + +/** + * @brief Get captured value for input channel 4. + * @note In 32-bit timer implementations returned captured value can be between 0x00000000 and 0xFFFFFFFF. + * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check + * whether or not a timer instance supports a 32 bits counter. + * @note Macro IS_TIM_CC4_INSTANCE(TIMx) can be used to check whether or not + * input channel 4 is supported by a timer instance. + * @rmtoll CCR4 CCR4 LL_TIM_IC_GetCaptureCH4 + * @param TIMx Timer instance + * @retval CapturedValue (between Min_Data=0 and Max_Data=65535) + */ +__STATIC_INLINE uint32_t LL_TIM_IC_GetCaptureCH4(const TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_REG(TIMx->CCR4)); +} + +/** + * @} + */ + +/** @defgroup TIM_LL_EF_Clock_Selection Counter clock selection + * @{ + */ +/** + * @brief Enable external clock mode 2. + * @note When external clock mode 2 is enabled the counter is clocked by any active edge on the ETRF signal. + * @note Macro IS_TIM_CLOCKSOURCE_ETRMODE2_INSTANCE(TIMx) can be used to check + * whether or not a timer instance supports external clock mode2. + * @rmtoll SMCR ECE LL_TIM_EnableExternalClock + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableExternalClock(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->SMCR, TIM_SMCR_ECE); +} + +/** + * @brief Disable external clock mode 2. + * @note Macro IS_TIM_CLOCKSOURCE_ETRMODE2_INSTANCE(TIMx) can be used to check + * whether or not a timer instance supports external clock mode2. + * @rmtoll SMCR ECE LL_TIM_DisableExternalClock + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableExternalClock(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->SMCR, TIM_SMCR_ECE); +} + +/** + * @brief Indicate whether external clock mode 2 is enabled. + * @note Macro IS_TIM_CLOCKSOURCE_ETRMODE2_INSTANCE(TIMx) can be used to check + * whether or not a timer instance supports external clock mode2. + * @rmtoll SMCR ECE LL_TIM_IsEnabledExternalClock + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledExternalClock(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->SMCR, TIM_SMCR_ECE) == (TIM_SMCR_ECE)) ? 1UL : 0UL); +} + +/** + * @brief Set the clock source of the counter clock. + * @note when selected clock source is external clock mode 1, the timer input + * the external clock is applied is selected by calling the @ref LL_TIM_SetTriggerInput() + * function. This timer input must be configured by calling + * the @ref LL_TIM_IC_Config() function. + * @note Macro IS_TIM_CLOCKSOURCE_ETRMODE1_INSTANCE(TIMx) can be used to check + * whether or not a timer instance supports external clock mode1. + * @note Macro IS_TIM_CLOCKSOURCE_ETRMODE2_INSTANCE(TIMx) can be used to check + * whether or not a timer instance supports external clock mode2. + * @rmtoll SMCR SMS LL_TIM_SetClockSource\n + * SMCR ECE LL_TIM_SetClockSource + * @param TIMx Timer instance + * @param ClockSource This parameter can be one of the following values: + * @arg @ref LL_TIM_CLOCKSOURCE_INTERNAL + * @arg @ref LL_TIM_CLOCKSOURCE_EXT_MODE1 + * @arg @ref LL_TIM_CLOCKSOURCE_EXT_MODE2 + * @retval None + */ +__STATIC_INLINE void LL_TIM_SetClockSource(TIM_TypeDef *TIMx, uint32_t ClockSource) +{ + MODIFY_REG(TIMx->SMCR, TIM_SMCR_SMS | TIM_SMCR_ECE, ClockSource); +} + +/** + * @brief Set the encoder interface mode. + * @note Macro IS_TIM_ENCODER_INTERFACE_INSTANCE(TIMx) can be used to check + * whether or not a timer instance supports the encoder mode. + * @rmtoll SMCR SMS LL_TIM_SetEncoderMode + * @param TIMx Timer instance + * @param EncoderMode This parameter can be one of the following values: + * @arg @ref LL_TIM_ENCODERMODE_X2_TI1 + * @arg @ref LL_TIM_ENCODERMODE_X2_TI2 + * @arg @ref LL_TIM_ENCODERMODE_X4_TI12 + * @retval None + */ +__STATIC_INLINE void LL_TIM_SetEncoderMode(TIM_TypeDef *TIMx, uint32_t EncoderMode) +{ + MODIFY_REG(TIMx->SMCR, TIM_SMCR_SMS, EncoderMode); +} + +/** + * @} + */ + +/** @defgroup TIM_LL_EF_Timer_Synchronization Timer synchronisation configuration + * @{ + */ +/** + * @brief Set the trigger output (TRGO) used for timer synchronization . + * @note Macro IS_TIM_MASTER_INSTANCE(TIMx) can be used to check + * whether or not a timer instance can operate as a master timer. + * @rmtoll CR2 MMS LL_TIM_SetTriggerOutput + * @param TIMx Timer instance + * @param TimerSynchronization This parameter can be one of the following values: + * @arg @ref LL_TIM_TRGO_RESET + * @arg @ref LL_TIM_TRGO_ENABLE + * @arg @ref LL_TIM_TRGO_UPDATE + * @arg @ref LL_TIM_TRGO_CC1IF + * @arg @ref LL_TIM_TRGO_OC1REF + * @arg @ref LL_TIM_TRGO_OC2REF + * @arg @ref LL_TIM_TRGO_OC3REF + * @arg @ref LL_TIM_TRGO_OC4REF + * @retval None + */ +__STATIC_INLINE void LL_TIM_SetTriggerOutput(TIM_TypeDef *TIMx, uint32_t TimerSynchronization) +{ + MODIFY_REG(TIMx->CR2, TIM_CR2_MMS, TimerSynchronization); +} + +/** + * @brief Set the trigger output 2 (TRGO2) used for ADC synchronization . + * @note Macro IS_TIM_TRGO2_INSTANCE(TIMx) can be used to check + * whether or not a timer instance can be used for ADC synchronization. + * @rmtoll CR2 MMS2 LL_TIM_SetTriggerOutput2 + * @param TIMx Timer Instance + * @param ADCSynchronization This parameter can be one of the following values: + * @arg @ref LL_TIM_TRGO2_RESET + * @arg @ref LL_TIM_TRGO2_ENABLE + * @arg @ref LL_TIM_TRGO2_UPDATE + * @arg @ref LL_TIM_TRGO2_CC1F + * @arg @ref LL_TIM_TRGO2_OC1 + * @arg @ref LL_TIM_TRGO2_OC2 + * @arg @ref LL_TIM_TRGO2_OC3 + * @arg @ref LL_TIM_TRGO2_OC4 + * @arg @ref LL_TIM_TRGO2_OC5 + * @arg @ref LL_TIM_TRGO2_OC6 + * @arg @ref LL_TIM_TRGO2_OC4_RISINGFALLING + * @arg @ref LL_TIM_TRGO2_OC6_RISINGFALLING + * @arg @ref LL_TIM_TRGO2_OC4_RISING_OC6_RISING + * @arg @ref LL_TIM_TRGO2_OC4_RISING_OC6_FALLING + * @arg @ref LL_TIM_TRGO2_OC5_RISING_OC6_RISING + * @arg @ref LL_TIM_TRGO2_OC5_RISING_OC6_FALLING + * @retval None + */ +__STATIC_INLINE void LL_TIM_SetTriggerOutput2(TIM_TypeDef *TIMx, uint32_t ADCSynchronization) +{ + MODIFY_REG(TIMx->CR2, TIM_CR2_MMS2, ADCSynchronization); +} + +/** + * @brief Set the synchronization mode of a slave timer. + * @note Macro IS_TIM_SLAVE_INSTANCE(TIMx) can be used to check whether or not + * a timer instance can operate as a slave timer. + * @rmtoll SMCR SMS LL_TIM_SetSlaveMode + * @param TIMx Timer instance + * @param SlaveMode This parameter can be one of the following values: + * @arg @ref LL_TIM_SLAVEMODE_DISABLED + * @arg @ref LL_TIM_SLAVEMODE_RESET + * @arg @ref LL_TIM_SLAVEMODE_GATED + * @arg @ref LL_TIM_SLAVEMODE_TRIGGER + * @arg @ref LL_TIM_SLAVEMODE_COMBINED_RESETTRIGGER + * @retval None + */ +__STATIC_INLINE void LL_TIM_SetSlaveMode(TIM_TypeDef *TIMx, uint32_t SlaveMode) +{ + MODIFY_REG(TIMx->SMCR, TIM_SMCR_SMS, SlaveMode); +} + +/** + * @brief Set the selects the trigger input to be used to synchronize the counter. + * @note Macro IS_TIM_SLAVE_INSTANCE(TIMx) can be used to check whether or not + * a timer instance can operate as a slave timer. + * @rmtoll SMCR TS LL_TIM_SetTriggerInput + * @param TIMx Timer instance + * @param TriggerInput This parameter can be one of the following values: + * @arg @ref LL_TIM_TS_ITR0 + * @arg @ref LL_TIM_TS_ITR1 + * @arg @ref LL_TIM_TS_ITR2 + * @arg @ref LL_TIM_TS_ITR3 + * @arg @ref LL_TIM_TS_ITR7 (*) + * @arg @ref LL_TIM_TS_TI1F_ED + * @arg @ref LL_TIM_TS_TI1FP1 + * @arg @ref LL_TIM_TS_TI2FP2 + * @arg @ref LL_TIM_TS_ETRF + * + * (*) Value not defined in all devices. + * @retval None + */ +__STATIC_INLINE void LL_TIM_SetTriggerInput(TIM_TypeDef *TIMx, uint32_t TriggerInput) +{ + MODIFY_REG(TIMx->SMCR, TIM_SMCR_TS, TriggerInput); +} + +/** + * @brief Enable the Master/Slave mode. + * @note Macro IS_TIM_SLAVE_INSTANCE(TIMx) can be used to check whether or not + * a timer instance can operate as a slave timer. + * @rmtoll SMCR MSM LL_TIM_EnableMasterSlaveMode + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableMasterSlaveMode(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->SMCR, TIM_SMCR_MSM); +} + +/** + * @brief Disable the Master/Slave mode. + * @note Macro IS_TIM_SLAVE_INSTANCE(TIMx) can be used to check whether or not + * a timer instance can operate as a slave timer. + * @rmtoll SMCR MSM LL_TIM_DisableMasterSlaveMode + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableMasterSlaveMode(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->SMCR, TIM_SMCR_MSM); +} + +/** + * @brief Indicates whether the Master/Slave mode is enabled. + * @note Macro IS_TIM_SLAVE_INSTANCE(TIMx) can be used to check whether or not + * a timer instance can operate as a slave timer. + * @rmtoll SMCR MSM LL_TIM_IsEnabledMasterSlaveMode + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledMasterSlaveMode(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->SMCR, TIM_SMCR_MSM) == (TIM_SMCR_MSM)) ? 1UL : 0UL); +} + +/** + * @brief Configure the external trigger (ETR) input. + * @note Macro IS_TIM_ETR_INSTANCE(TIMx) can be used to check whether or not + * a timer instance provides an external trigger input. + * @rmtoll SMCR ETP LL_TIM_ConfigETR\n + * SMCR ETPS LL_TIM_ConfigETR\n + * SMCR ETF LL_TIM_ConfigETR + * @param TIMx Timer instance + * @param ETRPolarity This parameter can be one of the following values: + * @arg @ref LL_TIM_ETR_POLARITY_NONINVERTED + * @arg @ref LL_TIM_ETR_POLARITY_INVERTED + * @param ETRPrescaler This parameter can be one of the following values: + * @arg @ref LL_TIM_ETR_PRESCALER_DIV1 + * @arg @ref LL_TIM_ETR_PRESCALER_DIV2 + * @arg @ref LL_TIM_ETR_PRESCALER_DIV4 + * @arg @ref LL_TIM_ETR_PRESCALER_DIV8 + * @param ETRFilter This parameter can be one of the following values: + * @arg @ref LL_TIM_ETR_FILTER_FDIV1 + * @arg @ref LL_TIM_ETR_FILTER_FDIV1_N2 + * @arg @ref LL_TIM_ETR_FILTER_FDIV1_N4 + * @arg @ref LL_TIM_ETR_FILTER_FDIV1_N8 + * @arg @ref LL_TIM_ETR_FILTER_FDIV2_N6 + * @arg @ref LL_TIM_ETR_FILTER_FDIV2_N8 + * @arg @ref LL_TIM_ETR_FILTER_FDIV4_N6 + * @arg @ref LL_TIM_ETR_FILTER_FDIV4_N8 + * @arg @ref LL_TIM_ETR_FILTER_FDIV8_N6 + * @arg @ref LL_TIM_ETR_FILTER_FDIV8_N8 + * @arg @ref LL_TIM_ETR_FILTER_FDIV16_N5 + * @arg @ref LL_TIM_ETR_FILTER_FDIV16_N6 + * @arg @ref LL_TIM_ETR_FILTER_FDIV16_N8 + * @arg @ref LL_TIM_ETR_FILTER_FDIV32_N5 + * @arg @ref LL_TIM_ETR_FILTER_FDIV32_N6 + * @arg @ref LL_TIM_ETR_FILTER_FDIV32_N8 + * @retval None + */ +__STATIC_INLINE void LL_TIM_ConfigETR(TIM_TypeDef *TIMx, uint32_t ETRPolarity, uint32_t ETRPrescaler, + uint32_t ETRFilter) +{ + MODIFY_REG(TIMx->SMCR, TIM_SMCR_ETP | TIM_SMCR_ETPS | TIM_SMCR_ETF, ETRPolarity | ETRPrescaler | ETRFilter); +} + +/** + * @brief Select the external trigger (ETR) input source. + * @note Macro IS_TIM_ETRSEL_INSTANCE(TIMx) can be used to check whether or + * not a timer instance supports ETR source selection. + * @rmtoll AF1 ETRSEL LL_TIM_SetETRSource + * @param TIMx Timer instance + * @param ETRSource This parameter can be one of the following values: + * TIM1 + * + * @arg @ref LL_TIM_ETRSOURCE_GPIO + * @arg @ref LL_TIM_ETRSOURCE_COMP1 (**) + * @arg @ref LL_TIM_ETRSOURCE_COMP2 (**) + * @arg @ref LL_TIM_ETRSOURCE_COMP3 (**) + * @arg @ref LL_TIM_ETRSOURCE_ADC1_AWD1 + * @arg @ref LL_TIM_ETRSOURCE_ADC1_AWD2 + * @arg @ref LL_TIM_ETRSOURCE_ADC1_AWD3 + * + * TIM2 (*) + * + * @arg @ref LL_TIM_ETRSOURCE_GPIO + * @arg @ref LL_TIM_ETRSOURCE_COMP1 + * @arg @ref LL_TIM_ETRSOURCE_COMP2 + * @arg @ref LL_TIM_ETRSOURCE_COMP3 (**) + * @arg @ref LL_TIM_ETRSOURCE_LSE + * @arg @ref LL_TIM_ETRSOURCE_MCO (**) + * @arg @ref LL_TIM_ETRSOURCE_MCO2 (**) + * + * TIM3 + * + * @arg @ref LL_TIM_ETRSOURCE_GPIO + * @arg @ref LL_TIM_ETRSOURCE_COMP1 (**) + * @arg @ref LL_TIM_ETRSOURCE_COMP2 (**) + * @arg @ref LL_TIM_ETRSOURCE_COMP3 (**) + * + * TIM4 (*) + * + * @arg @ref LL_TIM_ETRSOURCE_GPIO + * @arg @ref LL_TIM_ETRSOURCE_COMP1 + * @arg @ref LL_TIM_ETRSOURCE_COMP2 + * @arg @ref LL_TIM_ETRSOURCE_COMP3 (**) + * + * (*) Timer instance not available on all devices \n + * (**) Value not defined in all devices. \n + * + * @retval None + */ +__STATIC_INLINE void LL_TIM_SetETRSource(TIM_TypeDef *TIMx, uint32_t ETRSource) +{ +#if defined(COMP3) + uint32_t etrsel_shift = ((ETRSource == LL_TIM_ETRSOURCE_COMP3) ? 1u : 0u); + if ((TIMx == TIM1) || (TIMx == TIM2)) + { + MODIFY_REG(TIMx->AF1, TIMx_AF1_ETRSEL, ETRSource); + } + else + { + MODIFY_REG(TIMx->AF1, TIMx_AF1_ETRSEL, ETRSource >> etrsel_shift); + } +#else + MODIFY_REG(TIMx->AF1, TIMx_AF1_ETRSEL, ETRSource); +#endif /* COMP3 */ +} + +/** + * @} + */ + +/** @defgroup TIM_LL_EF_Break_Function Break function configuration + * @{ + */ +/** + * @brief Enable the break function. + * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not + * a timer instance provides a break input. + * @rmtoll BDTR BKE LL_TIM_EnableBRK + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableBRK(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->BDTR, TIM_BDTR_BKE); +} + +/** + * @brief Disable the break function. + * @rmtoll BDTR BKE LL_TIM_DisableBRK + * @param TIMx Timer instance + * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not + * a timer instance provides a break input. + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableBRK(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->BDTR, TIM_BDTR_BKE); +} + +/** + * @brief Configure the break input. + * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not + * a timer instance provides a break input. + * @note Bidirectional mode is only supported by advanced timer instances. + * Macro IS_TIM_ADVANCED_INSTANCE(TIMx) can be used to check whether or not + * a timer instance is an advanced-control timer. + * @note In bidirectional mode (BKBID bit set), the Break input is configured both + * in input mode and in open drain output mode. Any active Break event will + * assert a low logic level on the Break input to indicate an internal break + * event to external devices. + * @note When bidirectional mode isn't supported, BreakAFMode must be set to + * LL_TIM_BREAK_AFMODE_INPUT. + * @rmtoll BDTR BKP LL_TIM_ConfigBRK\n + * BDTR BKF LL_TIM_ConfigBRK\n + * BDTR BKBID LL_TIM_ConfigBRK + * @param TIMx Timer instance + * @param BreakPolarity This parameter can be one of the following values: + * @arg @ref LL_TIM_BREAK_POLARITY_LOW + * @arg @ref LL_TIM_BREAK_POLARITY_HIGH + * @param BreakFilter This parameter can be one of the following values: + * @arg @ref LL_TIM_BREAK_FILTER_FDIV1 + * @arg @ref LL_TIM_BREAK_FILTER_FDIV1_N2 + * @arg @ref LL_TIM_BREAK_FILTER_FDIV1_N4 + * @arg @ref LL_TIM_BREAK_FILTER_FDIV1_N8 + * @arg @ref LL_TIM_BREAK_FILTER_FDIV2_N6 + * @arg @ref LL_TIM_BREAK_FILTER_FDIV2_N8 + * @arg @ref LL_TIM_BREAK_FILTER_FDIV4_N6 + * @arg @ref LL_TIM_BREAK_FILTER_FDIV4_N8 + * @arg @ref LL_TIM_BREAK_FILTER_FDIV8_N6 + * @arg @ref LL_TIM_BREAK_FILTER_FDIV8_N8 + * @arg @ref LL_TIM_BREAK_FILTER_FDIV16_N5 + * @arg @ref LL_TIM_BREAK_FILTER_FDIV16_N6 + * @arg @ref LL_TIM_BREAK_FILTER_FDIV16_N8 + * @arg @ref LL_TIM_BREAK_FILTER_FDIV32_N5 + * @arg @ref LL_TIM_BREAK_FILTER_FDIV32_N6 + * @arg @ref LL_TIM_BREAK_FILTER_FDIV32_N8 + * @param BreakAFMode This parameter can be one of the following values: + * @arg @ref LL_TIM_BREAK_AFMODE_INPUT + * @arg @ref LL_TIM_BREAK_AFMODE_BIDIRECTIONAL + * @retval None + */ +__STATIC_INLINE void LL_TIM_ConfigBRK(TIM_TypeDef *TIMx, uint32_t BreakPolarity, uint32_t BreakFilter, + uint32_t BreakAFMode) +{ + MODIFY_REG(TIMx->BDTR, TIM_BDTR_BKP | TIM_BDTR_BKF | TIM_BDTR_BKBID, BreakPolarity | BreakFilter | BreakAFMode); +} + +/** + * @brief Disarm the break input (when it operates in bidirectional mode). + * @note The break input can be disarmed only when it is configured in + * bidirectional mode and when when MOE is reset. + * @note Purpose is to be able to have the input voltage back to high-state, + * whatever the time constant on the output . + * @rmtoll BDTR BKDSRM LL_TIM_DisarmBRK + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisarmBRK(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->BDTR, TIM_BDTR_BKDSRM); +} + +/** + * @brief Re-arm the break input (when it operates in bidirectional mode). + * @note The Break input is automatically armed as soon as MOE bit is set. + * @rmtoll BDTR BKDSRM LL_TIM_ReArmBRK + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_ReArmBRK(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->BDTR, TIM_BDTR_BKDSRM); +} + +/** + * @brief Enable the break 2 function. + * @note Macro IS_TIM_BKIN2_INSTANCE(TIMx) can be used to check whether or not + * a timer instance provides a second break input. + * @rmtoll BDTR BK2E LL_TIM_EnableBRK2 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableBRK2(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->BDTR, TIM_BDTR_BK2E); +} + +/** + * @brief Disable the break 2 function. + * @note Macro IS_TIM_BKIN2_INSTANCE(TIMx) can be used to check whether or not + * a timer instance provides a second break input. + * @rmtoll BDTR BK2E LL_TIM_DisableBRK2 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableBRK2(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->BDTR, TIM_BDTR_BK2E); +} + +/** + * @brief Configure the break 2 input. + * @note Macro IS_TIM_BKIN2_INSTANCE(TIMx) can be used to check whether or not + * a timer instance provides a second break input. + * @note Bidirectional mode is only supported by advanced timer instances. + * Macro IS_TIM_ADVANCED_INSTANCE(TIMx) can be used to check whether or not + * a timer instance is an advanced-control timer. + * @note In bidirectional mode (BK2BID bit set), the Break 2 input is configured both + * in input mode and in open drain output mode. Any active Break event will + * assert a low logic level on the Break 2 input to indicate an internal break + * event to external devices. + * @note When bidirectional mode isn't supported, Break2AFMode must be set to + * LL_TIM_BREAK2_AFMODE_INPUT. + * @rmtoll BDTR BK2P LL_TIM_ConfigBRK2\n + * BDTR BK2F LL_TIM_ConfigBRK2\n + * BDTR BK2BID LL_TIM_ConfigBRK2 + * @param TIMx Timer instance + * @param Break2Polarity This parameter can be one of the following values: + * @arg @ref LL_TIM_BREAK2_POLARITY_LOW + * @arg @ref LL_TIM_BREAK2_POLARITY_HIGH + * @param Break2Filter This parameter can be one of the following values: + * @arg @ref LL_TIM_BREAK2_FILTER_FDIV1 + * @arg @ref LL_TIM_BREAK2_FILTER_FDIV1_N2 + * @arg @ref LL_TIM_BREAK2_FILTER_FDIV1_N4 + * @arg @ref LL_TIM_BREAK2_FILTER_FDIV1_N8 + * @arg @ref LL_TIM_BREAK2_FILTER_FDIV2_N6 + * @arg @ref LL_TIM_BREAK2_FILTER_FDIV2_N8 + * @arg @ref LL_TIM_BREAK2_FILTER_FDIV4_N6 + * @arg @ref LL_TIM_BREAK2_FILTER_FDIV4_N8 + * @arg @ref LL_TIM_BREAK2_FILTER_FDIV8_N6 + * @arg @ref LL_TIM_BREAK2_FILTER_FDIV8_N8 + * @arg @ref LL_TIM_BREAK2_FILTER_FDIV16_N5 + * @arg @ref LL_TIM_BREAK2_FILTER_FDIV16_N6 + * @arg @ref LL_TIM_BREAK2_FILTER_FDIV16_N8 + * @arg @ref LL_TIM_BREAK2_FILTER_FDIV32_N5 + * @arg @ref LL_TIM_BREAK2_FILTER_FDIV32_N6 + * @arg @ref LL_TIM_BREAK2_FILTER_FDIV32_N8 + * @param Break2AFMode This parameter can be one of the following values: + * @arg @ref LL_TIM_BREAK2_AFMODE_INPUT + * @arg @ref LL_TIM_BREAK2_AFMODE_BIDIRECTIONAL + * @retval None + */ +__STATIC_INLINE void LL_TIM_ConfigBRK2(TIM_TypeDef *TIMx, uint32_t Break2Polarity, uint32_t Break2Filter, + uint32_t Break2AFMode) +{ + MODIFY_REG(TIMx->BDTR, TIM_BDTR_BK2P | TIM_BDTR_BK2F | TIM_BDTR_BK2BID, Break2Polarity | Break2Filter | Break2AFMode); +} + +/** + * @brief Disarm the break 2 input (when it operates in bidirectional mode). + * @note The break 2 input can be disarmed only when it is configured in + * bidirectional mode and when when MOE is reset. + * @note Purpose is to be able to have the input voltage back to high-state, + * whatever the time constant on the output. + * @rmtoll BDTR BK2DSRM LL_TIM_DisarmBRK2 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisarmBRK2(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->BDTR, TIM_BDTR_BK2DSRM); +} + +/** + * @brief Re-arm the break 2 input (when it operates in bidirectional mode). + * @note The Break 2 input is automatically armed as soon as MOE bit is set. + * @rmtoll BDTR BK2DSRM LL_TIM_ReArmBRK2 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_ReArmBRK2(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->BDTR, TIM_BDTR_BK2DSRM); +} + +/** + * @brief Select the outputs off state (enabled v.s. disabled) in Idle and Run modes. + * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not + * a timer instance provides a break input. + * @rmtoll BDTR OSSI LL_TIM_SetOffStates\n + * BDTR OSSR LL_TIM_SetOffStates + * @param TIMx Timer instance + * @param OffStateIdle This parameter can be one of the following values: + * @arg @ref LL_TIM_OSSI_DISABLE + * @arg @ref LL_TIM_OSSI_ENABLE + * @param OffStateRun This parameter can be one of the following values: + * @arg @ref LL_TIM_OSSR_DISABLE + * @arg @ref LL_TIM_OSSR_ENABLE + * @retval None + */ +__STATIC_INLINE void LL_TIM_SetOffStates(TIM_TypeDef *TIMx, uint32_t OffStateIdle, uint32_t OffStateRun) +{ + MODIFY_REG(TIMx->BDTR, TIM_BDTR_OSSI | TIM_BDTR_OSSR, OffStateIdle | OffStateRun); +} + +/** + * @brief Enable automatic output (MOE can be set by software or automatically when a break input is active). + * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not + * a timer instance provides a break input. + * @rmtoll BDTR AOE LL_TIM_EnableAutomaticOutput + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableAutomaticOutput(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->BDTR, TIM_BDTR_AOE); +} + +/** + * @brief Disable automatic output (MOE can be set only by software). + * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not + * a timer instance provides a break input. + * @rmtoll BDTR AOE LL_TIM_DisableAutomaticOutput + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableAutomaticOutput(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->BDTR, TIM_BDTR_AOE); +} + +/** + * @brief Indicate whether automatic output is enabled. + * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not + * a timer instance provides a break input. + * @rmtoll BDTR AOE LL_TIM_IsEnabledAutomaticOutput + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledAutomaticOutput(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->BDTR, TIM_BDTR_AOE) == (TIM_BDTR_AOE)) ? 1UL : 0UL); +} + +/** + * @brief Enable the outputs (set the MOE bit in TIMx_BDTR register). + * @note The MOE bit in TIMx_BDTR register allows to enable /disable the outputs by + * software and is reset in case of break or break2 event + * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not + * a timer instance provides a break input. + * @rmtoll BDTR MOE LL_TIM_EnableAllOutputs + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableAllOutputs(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->BDTR, TIM_BDTR_MOE); +} + +/** + * @brief Disable the outputs (reset the MOE bit in TIMx_BDTR register). + * @note The MOE bit in TIMx_BDTR register allows to enable /disable the outputs by + * software and is reset in case of break or break2 event. + * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not + * a timer instance provides a break input. + * @rmtoll BDTR MOE LL_TIM_DisableAllOutputs + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableAllOutputs(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->BDTR, TIM_BDTR_MOE); +} + +/** + * @brief Indicates whether outputs are enabled. + * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not + * a timer instance provides a break input. + * @rmtoll BDTR MOE LL_TIM_IsEnabledAllOutputs + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledAllOutputs(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->BDTR, TIM_BDTR_MOE) == (TIM_BDTR_MOE)) ? 1UL : 0UL); +} + +/** + * @brief Enable the signals connected to the designated timer break input. + * @note Macro IS_TIM_BREAKSOURCE_INSTANCE(TIMx) can be used to check whether + * or not a timer instance allows for break input selection. + * @rmtoll AF1 BKINE LL_TIM_EnableBreakInputSource\n + * AF1 BKCMP1E LL_TIM_EnableBreakInputSource\n + * AF1 BKCMP2E LL_TIM_EnableBreakInputSource\n + * AF1 BKCMP3E LL_TIM_EnableBreakInputSource\n + * AF2 BK2INE LL_TIM_EnableBreakInputSource\n + * AF2 BK2CMP1E LL_TIM_EnableBreakInputSource\n + * AF2 BK2CMP2E LL_TIM_EnableBreakInputSource\n + * AF2 BK2CMP3E LL_TIM_EnableBreakInputSource + * @param TIMx Timer instance + * @param BreakInput This parameter can be one of the following values: + * @arg @ref LL_TIM_BREAK_INPUT_BKIN + * @arg @ref LL_TIM_BREAK_INPUT_BKIN2 + * @param Source This parameter can be one of the following values: + * @arg @ref LL_TIM_BKIN_SOURCE_BKIN + * @arg @ref LL_TIM_BKIN_SOURCE_BKCOMP1 + * @arg @ref LL_TIM_BKIN_SOURCE_BKCOMP2 + * @arg @ref LL_TIM_BKIN_SOURCE_BKCOMP3 (*) + * + * (*) Value not defined in all devices. \n + * + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableBreakInputSource(TIM_TypeDef *TIMx, uint32_t BreakInput, uint32_t Source) +{ + __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->AF1) + BreakInput)); + SET_BIT(*pReg, Source); +} + +/** + * @brief Disable the signals connected to the designated timer break input. + * @note Macro IS_TIM_BREAKSOURCE_INSTANCE(TIMx) can be used to check whether + * or not a timer instance allows for break input selection. + * @rmtoll AF1 BKINE LL_TIM_DisableBreakInputSource\n + * AF1 BKCMP1E LL_TIM_DisableBreakInputSource\n + * AF1 BKCMP2E LL_TIM_DisableBreakInputSource\n + * AF1 BKCMP3E LL_TIM_DisableBreakInputSource\n + * AF2 BK2INE LL_TIM_DisableBreakInputSource\n + * AF2 BK2CMP1E LL_TIM_DisableBreakInputSource\n + * AF2 BK2CMP2E LL_TIM_DisableBreakInputSource\n + * AF2 BK2CMP3E LL_TIM_DisableBreakInputSource + * @param TIMx Timer instance + * @param BreakInput This parameter can be one of the following values: + * @arg @ref LL_TIM_BREAK_INPUT_BKIN + * @arg @ref LL_TIM_BREAK_INPUT_BKIN2 + * @param Source This parameter can be one of the following values: + * @arg @ref LL_TIM_BKIN_SOURCE_BKIN + * @arg @ref LL_TIM_BKIN_SOURCE_BKCOMP1 + * @arg @ref LL_TIM_BKIN_SOURCE_BKCOMP2 + * @arg @ref LL_TIM_BKIN_SOURCE_BKCOMP3 (*) + * + * (*) Value not defined in all devices. \n + * + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableBreakInputSource(TIM_TypeDef *TIMx, uint32_t BreakInput, uint32_t Source) +{ + __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->AF1) + BreakInput)); + CLEAR_BIT(*pReg, Source); +} + +/** + * @brief Set the polarity of the break signal for the timer break input. + * @note Macro IS_TIM_BREAKSOURCE_INSTANCE(TIMx) can be used to check whether + * or not a timer instance allows for break input selection. + * @rmtoll AF1 BKINP LL_TIM_SetBreakInputSourcePolarity\n + * AF1 BKCMP1P LL_TIM_SetBreakInputSourcePolarity\n + * AF1 BKCMP2P LL_TIM_SetBreakInputSourcePolarity\n + * AF1 BKCMP3P LL_TIM_SetBreakInputSourcePolarity\n + * AF2 BK2INP LL_TIM_SetBreakInputSourcePolarity\n + * AF2 BK2CMP1P LL_TIM_SetBreakInputSourcePolarity\n + * AF2 BK2CMP2P LL_TIM_SetBreakInputSourcePolarity\n + * AF2 BK2CMP3P LL_TIM_SetBreakInputSourcePolarity + * @param TIMx Timer instance + * @param BreakInput This parameter can be one of the following values: + * @arg @ref LL_TIM_BREAK_INPUT_BKIN + * @arg @ref LL_TIM_BREAK_INPUT_BKIN2 + * @param Source This parameter can be one of the following values: + * @arg @ref LL_TIM_BKIN_SOURCE_BKIN + * @arg @ref LL_TIM_BKIN_SOURCE_BKCOMP1 + * @arg @ref LL_TIM_BKIN_SOURCE_BKCOMP2 + * @arg @ref LL_TIM_BKIN_SOURCE_BKCOMP3 (*) + * @param Polarity This parameter can be one of the following values: + * @arg @ref LL_TIM_BKIN_POLARITY_LOW + * @arg @ref LL_TIM_BKIN_POLARITY_HIGH + * + * (*) Value not defined in all devices. \n + * + * @retval None + */ +__STATIC_INLINE void LL_TIM_SetBreakInputSourcePolarity(TIM_TypeDef *TIMx, uint32_t BreakInput, uint32_t Source, + uint32_t Polarity) +{ + __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->AF1) + BreakInput)); + MODIFY_REG(*pReg, (TIMx_AF1_BKINP << TIM_POSITION_BRK_SOURCE), (Polarity << TIM_POSITION_BRK_SOURCE)); +} +/** + * @} + */ + +/** @defgroup TIM_LL_EF_DMA_Burst_Mode DMA burst mode configuration + * @{ + */ +/** + * @brief Configures the timer DMA burst feature. + * @note Macro IS_TIM_DMABURST_INSTANCE(TIMx) can be used to check whether or + * not a timer instance supports the DMA burst mode. + * @rmtoll DCR DBL LL_TIM_ConfigDMABurst\n + * DCR DBA LL_TIM_ConfigDMABurst + * @param TIMx Timer instance + * @param DMABurstBaseAddress This parameter can be one of the following values: + * @arg @ref LL_TIM_DMABURST_BASEADDR_CR1 + * @arg @ref LL_TIM_DMABURST_BASEADDR_CR2 + * @arg @ref LL_TIM_DMABURST_BASEADDR_SMCR + * @arg @ref LL_TIM_DMABURST_BASEADDR_DIER + * @arg @ref LL_TIM_DMABURST_BASEADDR_SR + * @arg @ref LL_TIM_DMABURST_BASEADDR_EGR + * @arg @ref LL_TIM_DMABURST_BASEADDR_CCMR1 + * @arg @ref LL_TIM_DMABURST_BASEADDR_CCMR2 + * @arg @ref LL_TIM_DMABURST_BASEADDR_CCER + * @arg @ref LL_TIM_DMABURST_BASEADDR_CNT + * @arg @ref LL_TIM_DMABURST_BASEADDR_PSC + * @arg @ref LL_TIM_DMABURST_BASEADDR_ARR + * @arg @ref LL_TIM_DMABURST_BASEADDR_RCR + * @arg @ref LL_TIM_DMABURST_BASEADDR_CCR1 + * @arg @ref LL_TIM_DMABURST_BASEADDR_CCR2 + * @arg @ref LL_TIM_DMABURST_BASEADDR_CCR3 + * @arg @ref LL_TIM_DMABURST_BASEADDR_CCR4 + * @arg @ref LL_TIM_DMABURST_BASEADDR_BDTR + * @arg @ref LL_TIM_DMABURST_BASEADDR_OR1 + * @arg @ref LL_TIM_DMABURST_BASEADDR_CCMR3 + * @arg @ref LL_TIM_DMABURST_BASEADDR_CCR5 + * @arg @ref LL_TIM_DMABURST_BASEADDR_CCR6 + * @arg @ref LL_TIM_DMABURST_BASEADDR_AF1 + * @arg @ref LL_TIM_DMABURST_BASEADDR_AF2 + * @arg @ref LL_TIM_DMABURST_BASEADDR_TISEL + * @param DMABurstLength This parameter can be one of the following values: + * @arg @ref LL_TIM_DMABURST_LENGTH_1TRANSFER + * @arg @ref LL_TIM_DMABURST_LENGTH_2TRANSFERS + * @arg @ref LL_TIM_DMABURST_LENGTH_3TRANSFERS + * @arg @ref LL_TIM_DMABURST_LENGTH_4TRANSFERS + * @arg @ref LL_TIM_DMABURST_LENGTH_5TRANSFERS + * @arg @ref LL_TIM_DMABURST_LENGTH_6TRANSFERS + * @arg @ref LL_TIM_DMABURST_LENGTH_7TRANSFERS + * @arg @ref LL_TIM_DMABURST_LENGTH_8TRANSFERS + * @arg @ref LL_TIM_DMABURST_LENGTH_9TRANSFERS + * @arg @ref LL_TIM_DMABURST_LENGTH_10TRANSFERS + * @arg @ref LL_TIM_DMABURST_LENGTH_11TRANSFERS + * @arg @ref LL_TIM_DMABURST_LENGTH_12TRANSFERS + * @arg @ref LL_TIM_DMABURST_LENGTH_13TRANSFERS + * @arg @ref LL_TIM_DMABURST_LENGTH_14TRANSFERS + * @arg @ref LL_TIM_DMABURST_LENGTH_15TRANSFERS + * @arg @ref LL_TIM_DMABURST_LENGTH_16TRANSFERS + * @arg @ref LL_TIM_DMABURST_LENGTH_17TRANSFERS + * @arg @ref LL_TIM_DMABURST_LENGTH_18TRANSFERS + * @retval None + */ +__STATIC_INLINE void LL_TIM_ConfigDMABurst(TIM_TypeDef *TIMx, uint32_t DMABurstBaseAddress, uint32_t DMABurstLength) +{ + MODIFY_REG(TIMx->DCR, (TIM_DCR_DBL | TIM_DCR_DBA), (DMABurstBaseAddress | DMABurstLength)); +} + +/** + * @} + */ + +/** @defgroup TIM_LL_EF_Timer_Inputs_Remapping Timer input remapping + * @{ + */ +/** + * @brief Remap TIM inputs (input channel, internal/external triggers). + * @note Macro IS_TIM_REMAP_INSTANCE(TIMx) can be used to check whether or not + * a some timer inputs can be remapped. + * @rmtoll TIM1_TISEL TI1SEL LL_TIM_SetRemap\n + * TIM1_TISEL TI2SEL LL_TIM_SetRemap\n + * TIM2_TISEL TI1SEL LL_TIM_SetRemap\n + * TIM2_TISEL TI2SEL LL_TIM_SetRemap\n + * TIM3_TISEL TI1SEL LL_TIM_SetRemap\n + * TIM3_TISEL TI2SEL LL_TIM_SetRemap\n + * TIM4_TISEL TI1SEL LL_TIM_SetRemap\n + * TIM4_TISEL TI2SEL LL_TIM_SetRemap\n + * TIM4_TISEL TI3SEL LL_TIM_SetRemap\n + * TIM14_TISEL TI1SEL LL_TIM_SetRemap\n + * TIM15_TISEL TI1SEL LL_TIM_SetRemap\n + * TIM15_TISEL TI2SEL LL_TIM_SetRemap\n + * TIM16_TISEL TI1SEL LL_TIM_SetRemap\n + * TIM17_TISEL TI1SEL LL_TIM_SetRemap + * @param TIMx Timer instance + * @param Remap Remap param depends on the TIMx. Description available only + * in CHM version of the User Manual (not in .pdf). + * Otherwise see Reference Manual description of TISEL registers. + * + * Below description summarizes "Timer Instance" and "Remap" param combinations: + * + * TIM1: any combination of TI1_RMP and TI2_RMP where + * + * . . TI1_RMP can be one of the following values + * @arg @ref LL_TIM_TIM1_TI1_RMP_GPIO + * @arg @ref LL_TIM_TIM1_TI1_RMP_COMP1 (**) + * + * . . TI2_RMP can be one of the following values + * @arg @ref LL_TIM_TIM1_TI2_RMP_GPIO + * @arg @ref LL_TIM_TIM1_TI2_RMP_COMP2 (**) + * + * . . TI3_RMP can be one of the following values + * @arg @ref LL_TIM_TIM1_TI3_RMP_GPIO + * @arg @ref LL_TIM_TIM1_TI3_RMP_COMP3 (**) + * + * TIM2: any combination of TI1_RMP and TI2_RMP where + * + * . . TI1_RMP can be one of the following values + * @arg @ref LL_TIM_TIM2_TI1_RMP_GPIO + * @arg @ref LL_TIM_TIM2_TI1_RMP_COMP1 (**) + * + * . . TI2_RMP can be one of the following values + * @arg @ref LL_TIM_TIM2_TI2_RMP_GPIO + * @arg @ref LL_TIM_TIM2_TI2_RMP_COMP2 (**) + * + * . . TI3_RMP can be one of the following values + * @arg @ref LL_TIM_TIM2_TI3_RMP_GPIO + * @arg @ref LL_TIM_TIM2_TI3_RMP_COMP3 (**) + * + * TIM3: any combination of TI1_RMP and TI2_RMP where + * + * . . TI1_RMP can be one of the following values + * @arg @ref LL_TIM_TIM3_TI1_RMP_GPIO + * @arg @ref LL_TIM_TIM3_TI1_RMP_COMP1 (**) + * + * . . TI2_RMP can be one of the following values + * @arg @ref LL_TIM_TIM3_TI2_RMP_GPIO + * @arg @ref LL_TIM_TIM3_TI2_RMP_COMP2 (**) + * + * . . TI3_RMP can be one of the following values + * @arg @ref LL_TIM_TIM3_TI3_RMP_GPIO + * @arg @ref LL_TIM_TIM3_TI3_RMP_COMP3 (**) + * + * TIM4: any combination of TI1_RMP, TI2_RMP and TI3_RMP where (*) + * + * . . TI1_RMP can be one of the following values + * @arg @ref LL_TIM_TIM4_TI1_RMP_GPIO + * @arg @ref LL_TIM_TIM4_TI1_RMP_COMP1 (**) + * + * . . TI2_RMP can be one of the following values + * @arg @ref LL_TIM_TIM4_TI2_RMP_GPIO + * @arg @ref LL_TIM_TIM4_TI2_RMP_COMP2 (**) + * + * . . TI3_RMP can be one of the following values + * @arg @ref LL_TIM_TIM4_TI3_RMP_GPIO + * @arg @ref LL_TIM_TIM4_TI3_RMP_COMP3 (**) + * + * TIM14: one of the following values + * + * @arg @ref LL_TIM_TIM14_TI1_RMP_GPIO + * @arg @ref LL_TIM_TIM14_TI1_RMP_RTC_CLK + * @arg @ref LL_TIM_TIM14_TI1_RMP_HSE_32 + * @arg @ref LL_TIM_TIM14_TI1_RMP_MCO + * @arg @ref LL_TIM_TIM14_TI1_RMP_MCO2 (**) + * + * TIM15: any combination of TI1_RMP and TI2_RMP where + * + * . . TI1_RMP can be one of the following values + * @arg @ref LL_TIM_TIM15_TI1_RMP_GPIO + * @arg @ref LL_TIM_TIM15_TI1_RMP_TIM2_IC1 + * @arg @ref LL_TIM_TIM15_TI1_RMP_TIM3_IC1 + * + * . . TI2_RMP can be one of the following values + * @arg @ref LL_TIM_TIM15_TI2_RMP_GPIO + * @arg @ref LL_TIM_TIM15_TI2_RMP_TIM2_IC2 + * @arg @ref LL_TIM_TIM15_TI2_RMP_TIM3_IC2 + * + * TIM16: one of the following values + * + * @arg @ref LL_TIM_TIM16_TI1_RMP_GPIO + * @arg @ref LL_TIM_TIM16_TI1_RMP_LSI + * @arg @ref LL_TIM_TIM16_TI1_RMP_LSE + * @arg @ref LL_TIM_TIM16_TI1_RMP_RTC_WK + * @arg @ref LL_TIM_TIM16_TI1_RMP_MCO2(**) + * + * TIM17: one of the following values + * + * @arg @ref LL_TIM_TIM17_TI1_RMP_GPIO + * @arg @ref LL_TIM_TIM17_TI1_RMP_HSE_32 + * @arg @ref LL_TIM_TIM17_TI1_RMP_MCO + * @arg @ref LL_TIM_TIM17_TI1_RMP_HSI48 (**) + * @arg @ref LL_TIM_TIM17_TI1_RMP_MCO2(**) + * + * (*) Timer instance not available on all devices \n + * (**) Value not defined in all devices. \n + * + * @retval None + */ +__STATIC_INLINE void LL_TIM_SetRemap(TIM_TypeDef *TIMx, uint32_t Remap) +{ + MODIFY_REG(TIMx->TISEL, (TIM_TISEL_TI1SEL | TIM_TISEL_TI2SEL | TIM_TISEL_TI3SEL | TIM_TISEL_TI4SEL), Remap); +} + +/** + * @} + */ + +/** @defgroup TIM_LL_EF_OCREF_Clear OCREF_Clear_Management + * @{ + */ +/** + * @brief Set the OCREF clear input source + * @note The OCxREF signal of a given channel can be cleared when a high level is applied on the OCREF_CLR_INPUT + * @note This function can only be used in Output compare and PWM modes. + * @rmtoll SMCR OCCS LL_TIM_SetOCRefClearInputSource + * @rmtoll OR1 OCREF_CLR LL_TIM_SetOCRefClearInputSource + * @param TIMx Timer instance + * @param OCRefClearInputSource This parameter can be one of the following values: + * @arg @ref LL_TIM_OCREF_CLR_INT_ETR + * @arg @ref LL_TIM_OCREF_CLR_INT_COMP1 (*) + * @arg @ref LL_TIM_OCREF_CLR_INT_COMP2 (*) + * @arg @ref LL_TIM_OCREF_CLR_INT_COMP3 (*) + * + * (*) Value not defined in all devices. \n + * + * @retval None + */ +__STATIC_INLINE void LL_TIM_SetOCRefClearInputSource(TIM_TypeDef *TIMx, uint32_t OCRefClearInputSource) +{ + MODIFY_REG(TIMx->SMCR, TIM_SMCR_OCCS, + ((OCRefClearInputSource & OCREF_CLEAR_SELECT_Msk) >> OCREF_CLEAR_SELECT_Pos) << TIM_SMCR_OCCS_Pos); + MODIFY_REG(TIMx->OR1, TIM1_OR1_OCREF_CLR, OCRefClearInputSource); +} +/** + * @} + */ + +/** @defgroup TIM_LL_EF_FLAG_Management FLAG-Management + * @{ + */ +/** + * @brief Clear the update interrupt flag (UIF). + * @rmtoll SR UIF LL_TIM_ClearFlag_UPDATE + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_ClearFlag_UPDATE(TIM_TypeDef *TIMx) +{ + WRITE_REG(TIMx->SR, ~(TIM_SR_UIF)); +} + +/** + * @brief Indicate whether update interrupt flag (UIF) is set (update interrupt is pending). + * @rmtoll SR UIF LL_TIM_IsActiveFlag_UPDATE + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_UPDATE(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->SR, TIM_SR_UIF) == (TIM_SR_UIF)) ? 1UL : 0UL); +} + +/** + * @brief Clear the Capture/Compare 1 interrupt flag (CC1F). + * @rmtoll SR CC1IF LL_TIM_ClearFlag_CC1 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_ClearFlag_CC1(TIM_TypeDef *TIMx) +{ + WRITE_REG(TIMx->SR, ~(TIM_SR_CC1IF)); +} + +/** + * @brief Indicate whether Capture/Compare 1 interrupt flag (CC1F) is set (Capture/Compare 1 interrupt is pending). + * @rmtoll SR CC1IF LL_TIM_IsActiveFlag_CC1 + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC1(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->SR, TIM_SR_CC1IF) == (TIM_SR_CC1IF)) ? 1UL : 0UL); +} + +/** + * @brief Clear the Capture/Compare 2 interrupt flag (CC2F). + * @rmtoll SR CC2IF LL_TIM_ClearFlag_CC2 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_ClearFlag_CC2(TIM_TypeDef *TIMx) +{ + WRITE_REG(TIMx->SR, ~(TIM_SR_CC2IF)); +} + +/** + * @brief Indicate whether Capture/Compare 2 interrupt flag (CC2F) is set (Capture/Compare 2 interrupt is pending). + * @rmtoll SR CC2IF LL_TIM_IsActiveFlag_CC2 + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC2(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->SR, TIM_SR_CC2IF) == (TIM_SR_CC2IF)) ? 1UL : 0UL); +} + +/** + * @brief Clear the Capture/Compare 3 interrupt flag (CC3F). + * @rmtoll SR CC3IF LL_TIM_ClearFlag_CC3 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_ClearFlag_CC3(TIM_TypeDef *TIMx) +{ + WRITE_REG(TIMx->SR, ~(TIM_SR_CC3IF)); +} + +/** + * @brief Indicate whether Capture/Compare 3 interrupt flag (CC3F) is set (Capture/Compare 3 interrupt is pending). + * @rmtoll SR CC3IF LL_TIM_IsActiveFlag_CC3 + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC3(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->SR, TIM_SR_CC3IF) == (TIM_SR_CC3IF)) ? 1UL : 0UL); +} + +/** + * @brief Clear the Capture/Compare 4 interrupt flag (CC4F). + * @rmtoll SR CC4IF LL_TIM_ClearFlag_CC4 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_ClearFlag_CC4(TIM_TypeDef *TIMx) +{ + WRITE_REG(TIMx->SR, ~(TIM_SR_CC4IF)); +} + +/** + * @brief Indicate whether Capture/Compare 4 interrupt flag (CC4F) is set (Capture/Compare 4 interrupt is pending). + * @rmtoll SR CC4IF LL_TIM_IsActiveFlag_CC4 + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC4(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->SR, TIM_SR_CC4IF) == (TIM_SR_CC4IF)) ? 1UL : 0UL); +} + +/** + * @brief Clear the Capture/Compare 5 interrupt flag (CC5F). + * @rmtoll SR CC5IF LL_TIM_ClearFlag_CC5 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_ClearFlag_CC5(TIM_TypeDef *TIMx) +{ + WRITE_REG(TIMx->SR, ~(TIM_SR_CC5IF)); +} + +/** + * @brief Indicate whether Capture/Compare 5 interrupt flag (CC5F) is set (Capture/Compare 5 interrupt is pending). + * @rmtoll SR CC5IF LL_TIM_IsActiveFlag_CC5 + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC5(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->SR, TIM_SR_CC5IF) == (TIM_SR_CC5IF)) ? 1UL : 0UL); +} + +/** + * @brief Clear the Capture/Compare 6 interrupt flag (CC6F). + * @rmtoll SR CC6IF LL_TIM_ClearFlag_CC6 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_ClearFlag_CC6(TIM_TypeDef *TIMx) +{ + WRITE_REG(TIMx->SR, ~(TIM_SR_CC6IF)); +} + +/** + * @brief Indicate whether Capture/Compare 6 interrupt flag (CC6F) is set (Capture/Compare 6 interrupt is pending). + * @rmtoll SR CC6IF LL_TIM_IsActiveFlag_CC6 + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC6(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->SR, TIM_SR_CC6IF) == (TIM_SR_CC6IF)) ? 1UL : 0UL); +} + +/** + * @brief Clear the commutation interrupt flag (COMIF). + * @rmtoll SR COMIF LL_TIM_ClearFlag_COM + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_ClearFlag_COM(TIM_TypeDef *TIMx) +{ + WRITE_REG(TIMx->SR, ~(TIM_SR_COMIF)); +} + +/** + * @brief Indicate whether commutation interrupt flag (COMIF) is set (commutation interrupt is pending). + * @rmtoll SR COMIF LL_TIM_IsActiveFlag_COM + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_COM(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->SR, TIM_SR_COMIF) == (TIM_SR_COMIF)) ? 1UL : 0UL); +} + +/** + * @brief Clear the trigger interrupt flag (TIF). + * @rmtoll SR TIF LL_TIM_ClearFlag_TRIG + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_ClearFlag_TRIG(TIM_TypeDef *TIMx) +{ + WRITE_REG(TIMx->SR, ~(TIM_SR_TIF)); +} + +/** + * @brief Indicate whether trigger interrupt flag (TIF) is set (trigger interrupt is pending). + * @rmtoll SR TIF LL_TIM_IsActiveFlag_TRIG + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_TRIG(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->SR, TIM_SR_TIF) == (TIM_SR_TIF)) ? 1UL : 0UL); +} + +/** + * @brief Clear the break interrupt flag (BIF). + * @rmtoll SR BIF LL_TIM_ClearFlag_BRK + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_ClearFlag_BRK(TIM_TypeDef *TIMx) +{ + WRITE_REG(TIMx->SR, ~(TIM_SR_BIF)); +} + +/** + * @brief Indicate whether break interrupt flag (BIF) is set (break interrupt is pending). + * @rmtoll SR BIF LL_TIM_IsActiveFlag_BRK + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_BRK(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->SR, TIM_SR_BIF) == (TIM_SR_BIF)) ? 1UL : 0UL); +} + +/** + * @brief Clear the break 2 interrupt flag (B2IF). + * @rmtoll SR B2IF LL_TIM_ClearFlag_BRK2 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_ClearFlag_BRK2(TIM_TypeDef *TIMx) +{ + WRITE_REG(TIMx->SR, ~(TIM_SR_B2IF)); +} + +/** + * @brief Indicate whether break 2 interrupt flag (B2IF) is set (break 2 interrupt is pending). + * @rmtoll SR B2IF LL_TIM_IsActiveFlag_BRK2 + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_BRK2(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->SR, TIM_SR_B2IF) == (TIM_SR_B2IF)) ? 1UL : 0UL); +} + +/** + * @brief Clear the Capture/Compare 1 over-capture interrupt flag (CC1OF). + * @rmtoll SR CC1OF LL_TIM_ClearFlag_CC1OVR + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_ClearFlag_CC1OVR(TIM_TypeDef *TIMx) +{ + WRITE_REG(TIMx->SR, ~(TIM_SR_CC1OF)); +} + +/** + * @brief Indicate whether Capture/Compare 1 over-capture interrupt flag (CC1OF) is set + * (Capture/Compare 1 interrupt is pending). + * @rmtoll SR CC1OF LL_TIM_IsActiveFlag_CC1OVR + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC1OVR(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->SR, TIM_SR_CC1OF) == (TIM_SR_CC1OF)) ? 1UL : 0UL); +} + +/** + * @brief Clear the Capture/Compare 2 over-capture interrupt flag (CC2OF). + * @rmtoll SR CC2OF LL_TIM_ClearFlag_CC2OVR + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_ClearFlag_CC2OVR(TIM_TypeDef *TIMx) +{ + WRITE_REG(TIMx->SR, ~(TIM_SR_CC2OF)); +} + +/** + * @brief Indicate whether Capture/Compare 2 over-capture interrupt flag (CC2OF) is set + * (Capture/Compare 2 over-capture interrupt is pending). + * @rmtoll SR CC2OF LL_TIM_IsActiveFlag_CC2OVR + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC2OVR(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->SR, TIM_SR_CC2OF) == (TIM_SR_CC2OF)) ? 1UL : 0UL); +} + +/** + * @brief Clear the Capture/Compare 3 over-capture interrupt flag (CC3OF). + * @rmtoll SR CC3OF LL_TIM_ClearFlag_CC3OVR + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_ClearFlag_CC3OVR(TIM_TypeDef *TIMx) +{ + WRITE_REG(TIMx->SR, ~(TIM_SR_CC3OF)); +} + +/** + * @brief Indicate whether Capture/Compare 3 over-capture interrupt flag (CC3OF) is set + * (Capture/Compare 3 over-capture interrupt is pending). + * @rmtoll SR CC3OF LL_TIM_IsActiveFlag_CC3OVR + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC3OVR(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->SR, TIM_SR_CC3OF) == (TIM_SR_CC3OF)) ? 1UL : 0UL); +} + +/** + * @brief Clear the Capture/Compare 4 over-capture interrupt flag (CC4OF). + * @rmtoll SR CC4OF LL_TIM_ClearFlag_CC4OVR + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_ClearFlag_CC4OVR(TIM_TypeDef *TIMx) +{ + WRITE_REG(TIMx->SR, ~(TIM_SR_CC4OF)); +} + +/** + * @brief Indicate whether Capture/Compare 4 over-capture interrupt flag (CC4OF) is set + * (Capture/Compare 4 over-capture interrupt is pending). + * @rmtoll SR CC4OF LL_TIM_IsActiveFlag_CC4OVR + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC4OVR(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->SR, TIM_SR_CC4OF) == (TIM_SR_CC4OF)) ? 1UL : 0UL); +} + +/** + * @brief Clear the system break interrupt flag (SBIF). + * @rmtoll SR SBIF LL_TIM_ClearFlag_SYSBRK + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_ClearFlag_SYSBRK(TIM_TypeDef *TIMx) +{ + WRITE_REG(TIMx->SR, ~(TIM_SR_SBIF)); +} + +/** + * @brief Indicate whether system break interrupt flag (SBIF) is set (system break interrupt is pending). + * @rmtoll SR SBIF LL_TIM_IsActiveFlag_SYSBRK + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_SYSBRK(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->SR, TIM_SR_SBIF) == (TIM_SR_SBIF)) ? 1UL : 0UL); +} + +/** + * @} + */ + +/** @defgroup TIM_LL_EF_IT_Management IT-Management + * @{ + */ +/** + * @brief Enable update interrupt (UIE). + * @rmtoll DIER UIE LL_TIM_EnableIT_UPDATE + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableIT_UPDATE(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->DIER, TIM_DIER_UIE); +} + +/** + * @brief Disable update interrupt (UIE). + * @rmtoll DIER UIE LL_TIM_DisableIT_UPDATE + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableIT_UPDATE(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->DIER, TIM_DIER_UIE); +} + +/** + * @brief Indicates whether the update interrupt (UIE) is enabled. + * @rmtoll DIER UIE LL_TIM_IsEnabledIT_UPDATE + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_UPDATE(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->DIER, TIM_DIER_UIE) == (TIM_DIER_UIE)) ? 1UL : 0UL); +} + +/** + * @brief Enable capture/compare 1 interrupt (CC1IE). + * @rmtoll DIER CC1IE LL_TIM_EnableIT_CC1 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableIT_CC1(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->DIER, TIM_DIER_CC1IE); +} + +/** + * @brief Disable capture/compare 1 interrupt (CC1IE). + * @rmtoll DIER CC1IE LL_TIM_DisableIT_CC1 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableIT_CC1(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->DIER, TIM_DIER_CC1IE); +} + +/** + * @brief Indicates whether the capture/compare 1 interrupt (CC1IE) is enabled. + * @rmtoll DIER CC1IE LL_TIM_IsEnabledIT_CC1 + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_CC1(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->DIER, TIM_DIER_CC1IE) == (TIM_DIER_CC1IE)) ? 1UL : 0UL); +} + +/** + * @brief Enable capture/compare 2 interrupt (CC2IE). + * @rmtoll DIER CC2IE LL_TIM_EnableIT_CC2 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableIT_CC2(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->DIER, TIM_DIER_CC2IE); +} + +/** + * @brief Disable capture/compare 2 interrupt (CC2IE). + * @rmtoll DIER CC2IE LL_TIM_DisableIT_CC2 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableIT_CC2(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->DIER, TIM_DIER_CC2IE); +} + +/** + * @brief Indicates whether the capture/compare 2 interrupt (CC2IE) is enabled. + * @rmtoll DIER CC2IE LL_TIM_IsEnabledIT_CC2 + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_CC2(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->DIER, TIM_DIER_CC2IE) == (TIM_DIER_CC2IE)) ? 1UL : 0UL); +} + +/** + * @brief Enable capture/compare 3 interrupt (CC3IE). + * @rmtoll DIER CC3IE LL_TIM_EnableIT_CC3 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableIT_CC3(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->DIER, TIM_DIER_CC3IE); +} + +/** + * @brief Disable capture/compare 3 interrupt (CC3IE). + * @rmtoll DIER CC3IE LL_TIM_DisableIT_CC3 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableIT_CC3(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->DIER, TIM_DIER_CC3IE); +} + +/** + * @brief Indicates whether the capture/compare 3 interrupt (CC3IE) is enabled. + * @rmtoll DIER CC3IE LL_TIM_IsEnabledIT_CC3 + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_CC3(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->DIER, TIM_DIER_CC3IE) == (TIM_DIER_CC3IE)) ? 1UL : 0UL); +} + +/** + * @brief Enable capture/compare 4 interrupt (CC4IE). + * @rmtoll DIER CC4IE LL_TIM_EnableIT_CC4 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableIT_CC4(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->DIER, TIM_DIER_CC4IE); +} + +/** + * @brief Disable capture/compare 4 interrupt (CC4IE). + * @rmtoll DIER CC4IE LL_TIM_DisableIT_CC4 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableIT_CC4(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->DIER, TIM_DIER_CC4IE); +} + +/** + * @brief Indicates whether the capture/compare 4 interrupt (CC4IE) is enabled. + * @rmtoll DIER CC4IE LL_TIM_IsEnabledIT_CC4 + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_CC4(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->DIER, TIM_DIER_CC4IE) == (TIM_DIER_CC4IE)) ? 1UL : 0UL); +} + +/** + * @brief Enable commutation interrupt (COMIE). + * @rmtoll DIER COMIE LL_TIM_EnableIT_COM + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableIT_COM(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->DIER, TIM_DIER_COMIE); +} + +/** + * @brief Disable commutation interrupt (COMIE). + * @rmtoll DIER COMIE LL_TIM_DisableIT_COM + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableIT_COM(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->DIER, TIM_DIER_COMIE); +} + +/** + * @brief Indicates whether the commutation interrupt (COMIE) is enabled. + * @rmtoll DIER COMIE LL_TIM_IsEnabledIT_COM + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_COM(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->DIER, TIM_DIER_COMIE) == (TIM_DIER_COMIE)) ? 1UL : 0UL); +} + +/** + * @brief Enable trigger interrupt (TIE). + * @rmtoll DIER TIE LL_TIM_EnableIT_TRIG + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableIT_TRIG(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->DIER, TIM_DIER_TIE); +} + +/** + * @brief Disable trigger interrupt (TIE). + * @rmtoll DIER TIE LL_TIM_DisableIT_TRIG + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableIT_TRIG(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->DIER, TIM_DIER_TIE); +} + +/** + * @brief Indicates whether the trigger interrupt (TIE) is enabled. + * @rmtoll DIER TIE LL_TIM_IsEnabledIT_TRIG + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_TRIG(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->DIER, TIM_DIER_TIE) == (TIM_DIER_TIE)) ? 1UL : 0UL); +} + +/** + * @brief Enable break interrupt (BIE). + * @rmtoll DIER BIE LL_TIM_EnableIT_BRK + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableIT_BRK(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->DIER, TIM_DIER_BIE); +} + +/** + * @brief Disable break interrupt (BIE). + * @rmtoll DIER BIE LL_TIM_DisableIT_BRK + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableIT_BRK(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->DIER, TIM_DIER_BIE); +} + +/** + * @brief Indicates whether the break interrupt (BIE) is enabled. + * @rmtoll DIER BIE LL_TIM_IsEnabledIT_BRK + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_BRK(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->DIER, TIM_DIER_BIE) == (TIM_DIER_BIE)) ? 1UL : 0UL); +} + +/** + * @} + */ + +/** @defgroup TIM_LL_EF_DMA_Management DMA Management + * @{ + */ +/** + * @brief Enable update DMA request (UDE). + * @rmtoll DIER UDE LL_TIM_EnableDMAReq_UPDATE + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableDMAReq_UPDATE(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->DIER, TIM_DIER_UDE); +} + +/** + * @brief Disable update DMA request (UDE). + * @rmtoll DIER UDE LL_TIM_DisableDMAReq_UPDATE + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableDMAReq_UPDATE(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->DIER, TIM_DIER_UDE); +} + +/** + * @brief Indicates whether the update DMA request (UDE) is enabled. + * @rmtoll DIER UDE LL_TIM_IsEnabledDMAReq_UPDATE + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_UPDATE(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->DIER, TIM_DIER_UDE) == (TIM_DIER_UDE)) ? 1UL : 0UL); +} + +/** + * @brief Enable capture/compare 1 DMA request (CC1DE). + * @rmtoll DIER CC1DE LL_TIM_EnableDMAReq_CC1 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableDMAReq_CC1(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->DIER, TIM_DIER_CC1DE); +} + +/** + * @brief Disable capture/compare 1 DMA request (CC1DE). + * @rmtoll DIER CC1DE LL_TIM_DisableDMAReq_CC1 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableDMAReq_CC1(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->DIER, TIM_DIER_CC1DE); +} + +/** + * @brief Indicates whether the capture/compare 1 DMA request (CC1DE) is enabled. + * @rmtoll DIER CC1DE LL_TIM_IsEnabledDMAReq_CC1 + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_CC1(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->DIER, TIM_DIER_CC1DE) == (TIM_DIER_CC1DE)) ? 1UL : 0UL); +} + +/** + * @brief Enable capture/compare 2 DMA request (CC2DE). + * @rmtoll DIER CC2DE LL_TIM_EnableDMAReq_CC2 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableDMAReq_CC2(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->DIER, TIM_DIER_CC2DE); +} + +/** + * @brief Disable capture/compare 2 DMA request (CC2DE). + * @rmtoll DIER CC2DE LL_TIM_DisableDMAReq_CC2 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableDMAReq_CC2(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->DIER, TIM_DIER_CC2DE); +} + +/** + * @brief Indicates whether the capture/compare 2 DMA request (CC2DE) is enabled. + * @rmtoll DIER CC2DE LL_TIM_IsEnabledDMAReq_CC2 + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_CC2(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->DIER, TIM_DIER_CC2DE) == (TIM_DIER_CC2DE)) ? 1UL : 0UL); +} + +/** + * @brief Enable capture/compare 3 DMA request (CC3DE). + * @rmtoll DIER CC3DE LL_TIM_EnableDMAReq_CC3 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableDMAReq_CC3(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->DIER, TIM_DIER_CC3DE); +} + +/** + * @brief Disable capture/compare 3 DMA request (CC3DE). + * @rmtoll DIER CC3DE LL_TIM_DisableDMAReq_CC3 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableDMAReq_CC3(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->DIER, TIM_DIER_CC3DE); +} + +/** + * @brief Indicates whether the capture/compare 3 DMA request (CC3DE) is enabled. + * @rmtoll DIER CC3DE LL_TIM_IsEnabledDMAReq_CC3 + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_CC3(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->DIER, TIM_DIER_CC3DE) == (TIM_DIER_CC3DE)) ? 1UL : 0UL); +} + +/** + * @brief Enable capture/compare 4 DMA request (CC4DE). + * @rmtoll DIER CC4DE LL_TIM_EnableDMAReq_CC4 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableDMAReq_CC4(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->DIER, TIM_DIER_CC4DE); +} + +/** + * @brief Disable capture/compare 4 DMA request (CC4DE). + * @rmtoll DIER CC4DE LL_TIM_DisableDMAReq_CC4 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableDMAReq_CC4(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->DIER, TIM_DIER_CC4DE); +} + +/** + * @brief Indicates whether the capture/compare 4 DMA request (CC4DE) is enabled. + * @rmtoll DIER CC4DE LL_TIM_IsEnabledDMAReq_CC4 + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_CC4(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->DIER, TIM_DIER_CC4DE) == (TIM_DIER_CC4DE)) ? 1UL : 0UL); +} + +/** + * @brief Enable commutation DMA request (COMDE). + * @rmtoll DIER COMDE LL_TIM_EnableDMAReq_COM + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableDMAReq_COM(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->DIER, TIM_DIER_COMDE); +} + +/** + * @brief Disable commutation DMA request (COMDE). + * @rmtoll DIER COMDE LL_TIM_DisableDMAReq_COM + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableDMAReq_COM(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->DIER, TIM_DIER_COMDE); +} + +/** + * @brief Indicates whether the commutation DMA request (COMDE) is enabled. + * @rmtoll DIER COMDE LL_TIM_IsEnabledDMAReq_COM + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_COM(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->DIER, TIM_DIER_COMDE) == (TIM_DIER_COMDE)) ? 1UL : 0UL); +} + +/** + * @brief Enable trigger interrupt (TDE). + * @rmtoll DIER TDE LL_TIM_EnableDMAReq_TRIG + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableDMAReq_TRIG(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->DIER, TIM_DIER_TDE); +} + +/** + * @brief Disable trigger interrupt (TDE). + * @rmtoll DIER TDE LL_TIM_DisableDMAReq_TRIG + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableDMAReq_TRIG(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->DIER, TIM_DIER_TDE); +} + +/** + * @brief Indicates whether the trigger interrupt (TDE) is enabled. + * @rmtoll DIER TDE LL_TIM_IsEnabledDMAReq_TRIG + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_TRIG(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->DIER, TIM_DIER_TDE) == (TIM_DIER_TDE)) ? 1UL : 0UL); +} + +/** + * @} + */ + +/** @defgroup TIM_LL_EF_EVENT_Management EVENT-Management + * @{ + */ +/** + * @brief Generate an update event. + * @rmtoll EGR UG LL_TIM_GenerateEvent_UPDATE + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_GenerateEvent_UPDATE(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->EGR, TIM_EGR_UG); +} + +/** + * @brief Generate Capture/Compare 1 event. + * @rmtoll EGR CC1G LL_TIM_GenerateEvent_CC1 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_GenerateEvent_CC1(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->EGR, TIM_EGR_CC1G); +} + +/** + * @brief Generate Capture/Compare 2 event. + * @rmtoll EGR CC2G LL_TIM_GenerateEvent_CC2 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_GenerateEvent_CC2(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->EGR, TIM_EGR_CC2G); +} + +/** + * @brief Generate Capture/Compare 3 event. + * @rmtoll EGR CC3G LL_TIM_GenerateEvent_CC3 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_GenerateEvent_CC3(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->EGR, TIM_EGR_CC3G); +} + +/** + * @brief Generate Capture/Compare 4 event. + * @rmtoll EGR CC4G LL_TIM_GenerateEvent_CC4 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_GenerateEvent_CC4(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->EGR, TIM_EGR_CC4G); +} + +/** + * @brief Generate commutation event. + * @rmtoll EGR COMG LL_TIM_GenerateEvent_COM + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_GenerateEvent_COM(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->EGR, TIM_EGR_COMG); +} + +/** + * @brief Generate trigger event. + * @rmtoll EGR TG LL_TIM_GenerateEvent_TRIG + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_GenerateEvent_TRIG(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->EGR, TIM_EGR_TG); +} + +/** + * @brief Generate break event. + * @rmtoll EGR BG LL_TIM_GenerateEvent_BRK + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_GenerateEvent_BRK(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->EGR, TIM_EGR_BG); +} + +/** + * @brief Generate break 2 event. + * @rmtoll EGR B2G LL_TIM_GenerateEvent_BRK2 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_GenerateEvent_BRK2(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->EGR, TIM_EGR_B2G); +} + +/** + * @} + */ + +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup TIM_LL_EF_Init Initialisation and deinitialisation functions + * @{ + */ + +ErrorStatus LL_TIM_DeInit(TIM_TypeDef *TIMx); +void LL_TIM_StructInit(LL_TIM_InitTypeDef *TIM_InitStruct); +ErrorStatus LL_TIM_Init(TIM_TypeDef *TIMx, const LL_TIM_InitTypeDef *TIM_InitStruct); +void LL_TIM_OC_StructInit(LL_TIM_OC_InitTypeDef *TIM_OC_InitStruct); +ErrorStatus LL_TIM_OC_Init(TIM_TypeDef *TIMx, uint32_t Channel, const LL_TIM_OC_InitTypeDef *TIM_OC_InitStruct); +void LL_TIM_IC_StructInit(LL_TIM_IC_InitTypeDef *TIM_ICInitStruct); +ErrorStatus LL_TIM_IC_Init(TIM_TypeDef *TIMx, uint32_t Channel, const LL_TIM_IC_InitTypeDef *TIM_IC_InitStruct); +void LL_TIM_ENCODER_StructInit(LL_TIM_ENCODER_InitTypeDef *TIM_EncoderInitStruct); +ErrorStatus LL_TIM_ENCODER_Init(TIM_TypeDef *TIMx, const LL_TIM_ENCODER_InitTypeDef *TIM_EncoderInitStruct); +void LL_TIM_HALLSENSOR_StructInit(LL_TIM_HALLSENSOR_InitTypeDef *TIM_HallSensorInitStruct); +ErrorStatus LL_TIM_HALLSENSOR_Init(TIM_TypeDef *TIMx, const LL_TIM_HALLSENSOR_InitTypeDef *TIM_HallSensorInitStruct); +void LL_TIM_BDTR_StructInit(LL_TIM_BDTR_InitTypeDef *TIM_BDTRInitStruct); +ErrorStatus LL_TIM_BDTR_Init(TIM_TypeDef *TIMx, const LL_TIM_BDTR_InitTypeDef *TIM_BDTRInitStruct); +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* TIM1 || TIM2 || TIM3 || TIM4 || TIM14 || TIM15 || TIM16 || TIM17 || TIM6 || TIM7 */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32G0xx_LL_TIM_H */ diff --git a/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_ll_utils.h b/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_ll_utils.h new file mode 100644 index 0000000..6f664b8 --- /dev/null +++ b/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_ll_utils.h @@ -0,0 +1,343 @@ +/** + ****************************************************************************** + * @file stm32g0xx_ll_utils.h + * @author MCD Application Team + * @brief Header file of UTILS LL module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2018 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + @verbatim + ============================================================================== + ##### How to use this driver ##### + ============================================================================== + [..] + The LL UTILS driver contains a set of generic APIs that can be + used by user: + (+) Device electronic signature + (+) Timing functions + (+) PLL configuration functions + + @endverbatim + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32G0xx_LL_UTILS_H +#define STM32G0xx_LL_UTILS_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32g0xx.h" + +/** @addtogroup STM32G0xx_LL_Driver + * @{ + */ + +/** @defgroup UTILS_LL UTILS + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ + +/* Private constants ---------------------------------------------------------*/ +/** @defgroup UTILS_LL_Private_Constants UTILS Private Constants + * @{ + */ + +/* Max delay can be used in LL_mDelay */ +#define LL_MAX_DELAY 0xFFFFFFFFU + +/** + * @brief Unique device ID register base address + */ +#define UID_BASE_ADDRESS UID_BASE + +/** + * @brief Flash size data register base address + */ +#define FLASHSIZE_BASE_ADDRESS FLASHSIZE_BASE + +/** + * @brief Package data register base address + */ +#define PACKAGE_BASE_ADDRESS PACKAGE_BASE + +/** + * @} + */ + +/* Private macros ------------------------------------------------------------*/ +/** @defgroup UTILS_LL_Private_Macros UTILS Private Macros + * @{ + */ +/** + * @} + */ +/* Exported types ------------------------------------------------------------*/ +/** @defgroup UTILS_LL_ES_INIT UTILS Exported structures + * @{ + */ +/** + * @brief UTILS PLL structure definition + */ +typedef struct +{ + uint32_t PLLM; /*!< Division factor for PLL VCO input clock. + This parameter can be a value of @ref RCC_LL_EC_PLLM_DIV + + This feature can be modified afterwards using unitary function + @ref LL_RCC_PLL_ConfigDomain_SYS(). */ + + uint32_t PLLN; /*!< Multiplication factor for PLL VCO output clock. + This parameter must be a number between Min_Data = 8 and Max_Data = 86 + + This feature can be modified afterwards using unitary function + @ref LL_RCC_PLL_ConfigDomain_SYS(). */ + + uint32_t PLLR; /*!< Division for the main system clock. + This parameter can be a value of @ref RCC_LL_EC_PLLR_DIV + + This feature can be modified afterwards using unitary function + @ref LL_RCC_PLL_ConfigDomain_SYS(). */ +} LL_UTILS_PLLInitTypeDef; + +/** + * @brief UTILS System, AHB and APB buses clock configuration structure definition + */ +typedef struct +{ + uint32_t AHBCLKDivider; /*!< The AHB clock (HCLK) divider. This clock is derived from the system clock (SYSCLK). + This parameter can be a value of @ref RCC_LL_EC_SYSCLK_DIV + + This feature can be modified afterwards using unitary function + @ref LL_RCC_SetAHBPrescaler(). */ + + uint32_t APB1CLKDivider; /*!< The APB1 clock (PCLK1) divider. This clock is derived from the AHB clock (HCLK). + This parameter can be a value of @ref RCC_LL_EC_APB1_DIV + + This feature can be modified afterwards using unitary function + @ref LL_RCC_SetAPB1Prescaler(). */ +} LL_UTILS_ClkInitTypeDef; + +/** + * @} + */ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup UTILS_LL_Exported_Constants UTILS Exported Constants + * @{ + */ + +/** @defgroup UTILS_EC_HSE_BYPASS HSE Bypass activation + * @{ + */ +#define LL_UTILS_HSEBYPASS_OFF 0x00000000U /*!< HSE Bypass is not enabled */ +#define LL_UTILS_HSEBYPASS_ON 0x00000001U /*!< HSE Bypass is enabled */ +/** + * @} + */ + +/** @defgroup UTILS_EC_PACKAGETYPE PACKAGE TYPE + * @{ + */ +#if defined(STM32G0C1xx) || defined(STM32G0B1xx) || defined(STM32G0B0xx) +#define LL_UTILS_PACKAGETYPE_QFP100 0x00000000U /*!< LQFP100 package type */ +#define LL_UTILS_PACKAGETYPE_QFN32_GP 0x00000001U /*!< LQFP32/UFQFPN32 General purpose (GP) */ +#define LL_UTILS_PACKAGETYPE_QFN32_N 0x00000002U /*!< LQFP32/UFQFPN32 N-version */ +#define LL_UTILS_PACKAGETYPE_QFN48_GP 0x00000004U /*!< LQFP48/UFQPN48 General purpose (GP) */ +#define LL_UTILS_PACKAGETYPE_QFN48_N 0x00000005U /*!< LQFP48/UFQPN48 N-version */ +#define LL_UTILS_PACKAGETYPE_WLCSP52 0x00000006U /*!< WLCSP52 */ +#define LL_UTILS_PACKAGETYPE_QFN64_GP 0x00000007U /*!< LQFP64 General purpose (GP) */ +#define LL_UTILS_PACKAGETYPE_QFN64_N 0x00000008U /*!< LQFP64 N-version */ +#define LL_UTILS_PACKAGETYPE_BGA64_N 0x0000000AU /*!< UFBGA64 N-version */ +#define LL_UTILS_PACKAGETYPE_QFP80 0x0000000BU /*!< LQFP80 package type */ +#define LL_UTILS_PACKAGETYPE_BGA100 0x0000000CU /*!< UBGA100 package type */ +#elif defined(STM32G061xx) || defined(STM32G051xx) || defined(STM32G050xx) || defined(STM32G041xx) || defined(STM32G031xx) || defined(STM32G030xx) +#define LL_UTILS_PACKAGETYPE_SO8 0x00000001U /*!< SO8 package type */ +#define LL_UTILS_PACKAGETYPE_WLCSP18 0x00000002U /*!< WLCSP18 package type */ +#define LL_UTILS_PACKAGETYPE_TSSOP20 0x00000003U /*!< TSSOP20 package type */ +#define LL_UTILS_PACKAGETYPE_QFP28 0x00000004U /*!< UFQFPN28 package type */ +#define LL_UTILS_PACKAGETYPE_QFN32 0x00000005U /*!< UFQFPN32 / LQFP32 package type */ +#define LL_UTILS_PACKAGETYPE_QFN48 0x00000007U /*!< UFQFPN48 / LQFP48 package type */ +#elif defined(STM32G081xx) || defined(STM32G071xx) || defined(STM32G070xx) +#define LL_UTILS_PACKAGETYPE_QFN28_GP 0x00000000U /*!< UFQFPN28 general purpose (GP) package type */ +#define LL_UTILS_PACKAGETYPE_QFN28_PD 0x00000001U /*!< UFQFPN28 Power Delivery (PD) */ +#define LL_UTILS_PACKAGETYPE_QFN32_GP 0x00000004U /*!< UFQFPN32 / LQFP32 general purpose (GP) package type */ +#define LL_UTILS_PACKAGETYPE_QFN32_PD 0x00000005U /*!< UFQFPN32 / LQFP32 Power Delivery (PD) package type */ +#define LL_UTILS_PACKAGETYPE_QFN48 0x00000008U /*!< UFQFPN48 / LQFP488 package type */ +#define LL_UTILS_PACKAGETYPE_QFP64 0x0000000CU /*!< LQPF64 package type */ +#endif /* STM32G0C1xx || STM32G0B1xx || STM32G0B0xx */ +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup UTILS_LL_Exported_Functions UTILS Exported Functions + * @{ + */ + +/** @defgroup UTILS_EF_DEVICE_ELECTRONIC_SIGNATURE DEVICE ELECTRONIC SIGNATURE + * @{ + */ + +/** + * @brief Get Word0 of the unique device identifier (UID based on 96 bits) + * @retval UID[31:0]: X and Y coordinates on the wafer expressed in BCD format + */ +__STATIC_INLINE uint32_t LL_GetUID_Word0(void) +{ + return (uint32_t)(READ_REG(*((uint32_t *)UID_BASE_ADDRESS))); +} + +/** + * @brief Get Word1 of the unique device identifier (UID based on 96 bits) + * @retval UID[63:32]: Wafer number (UID[39:32]) & LOT_NUM[23:0] (UID[63:40]) + */ +__STATIC_INLINE uint32_t LL_GetUID_Word1(void) +{ + return (uint32_t)(READ_REG(*((uint32_t *)(UID_BASE_ADDRESS + 4U)))); +} + +/** + * @brief Get Word2 of the unique device identifier (UID based on 96 bits) + * @retval UID[95:64]: Lot number (ASCII encoded) - LOT_NUM[55:24] + */ +__STATIC_INLINE uint32_t LL_GetUID_Word2(void) +{ + return (uint32_t)(READ_REG(*((uint32_t *)(UID_BASE_ADDRESS + 8U)))); +} + +/** + * @brief Get Flash memory size + * @note This bitfield indicates the size of the device Flash memory expressed in + * Kbytes. As an example, 0x040 corresponds to 64 Kbytes. + * @retval FLASH_SIZE[15:0]: Flash memory size + */ +__STATIC_INLINE uint32_t LL_GetFlashSize(void) +{ + return (uint32_t)(READ_REG(*((uint32_t *)FLASHSIZE_BASE_ADDRESS)) & 0x0000FFFFUL); +} + +/** + * @brief Get Package type + * @retval PKG[3:0]: Package type - This parameter can be a value of @ref UTILS_EC_PACKAGETYPE + * @if defined(STM32G0C1xx) + * @arg @ref LL_UTILS_PACKAGETYPE_QFP100 + * @arg @ref LL_UTILS_PACKAGETYPE_QFN32_GP + * @arg @ref LL_UTILS_PACKAGETYPE_QFN32_N + * @arg @ref LL_UTILS_PACKAGETYPE_QFN48_GP + * @arg @ref LL_UTILS_PACKAGETYPE_QFN48_N + * @arg @ref LL_UTILS_PACKAGETYPE_WLCSP52 + * @arg @ref LL_UTILS_PACKAGETYPE_QFN64_GP + * @arg @ref LL_UTILS_PACKAGETYPE_QFN64_N + * @arg @ref LL_UTILS_PACKAGETYPE_BGA64_N + * @arg @ref LL_UTILS_PACKAGETYPE_QFP80 + * @arg @ref LL_UTILS_PACKAGETYPE_BGA100 + * @elif defined(STM32G061xx) || defined(STM32G041xx) + * @arg @ref LL_UTILS_PACKAGETYPE_SO8 + * @arg @ref LL_UTILS_PACKAGETYPE_WLCSP18 + * @arg @ref LL_UTILS_PACKAGETYPE_TSSOP20 + * @arg @ref LL_UTILS_PACKAGETYPE_QFP28 + * @arg @ref LL_UTILS_PACKAGETYPE_QFN32 + * @arg @ref LL_UTILS_PACKAGETYPE_QFN48 + * @elif defined(STM32G081xx) + * @arg @ref LL_UTILS_PACKAGETYPE_QFN28_GP + * @arg @ref LL_UTILS_PACKAGETYPE_QFN28_PD + * @arg @ref LL_UTILS_PACKAGETYPE_QFN32_GP + * @arg @ref LL_UTILS_PACKAGETYPE_QFN32_PD + * @arg @ref LL_UTILS_PACKAGETYPE_QFN48 + * @arg @ref LL_UTILS_PACKAGETYPE_QFP64 + * @endif + * + */ +__STATIC_INLINE uint32_t LL_GetPackageType(void) +{ +#if defined(STM32G0C1xx) || defined(STM32G0B1xx) || defined(STM32G0B0xx) + return (uint32_t)(READ_REG(*((uint32_t *)PACKAGE_BASE_ADDRESS)) & 0x1FU); +#else + return (uint32_t)(READ_REG(*((uint32_t *)PACKAGE_BASE_ADDRESS)) & 0xFU); +#endif /* STM32G0C1xx || STM32G0B1xx || STM32G0B0xx */ +} + +/** + * @} + */ + +/** @defgroup UTILS_LL_EF_DELAY DELAY + * @{ + */ + +/** + * @brief This function configures the Cortex-M SysTick source of the time base. + * @param HCLKFrequency HCLK frequency in Hz (can be calculated thanks to RCC helper macro) + * @note When a RTOS is used, it is recommended to avoid changing the SysTick + * configuration by calling this function, for a delay use rather osDelay RTOS service. + * @param Ticks Number of ticks + * @retval None + */ +__STATIC_INLINE void LL_InitTick(uint32_t HCLKFrequency, uint32_t Ticks) +{ + /* Configure the SysTick to have interrupt in 1ms time base */ + SysTick->LOAD = (uint32_t)((HCLKFrequency / Ticks) - 1UL); /* set reload register */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable the Systick Timer */ +} + +void LL_Init1msTick(uint32_t HCLKFrequency); +void LL_mDelay(uint32_t Delay); + +/** + * @} + */ + +/** @defgroup UTILS_EF_SYSTEM SYSTEM + * @{ + */ + +void LL_SetSystemCoreClock(uint32_t HCLKFrequency); +ErrorStatus LL_PLL_ConfigSystemClock_HSI(LL_UTILS_PLLInitTypeDef *UTILS_PLLInitStruct, + LL_UTILS_ClkInitTypeDef *UTILS_ClkInitStruct); +ErrorStatus LL_PLL_ConfigSystemClock_HSE(uint32_t HSEFrequency, uint32_t HSEBypass, + LL_UTILS_PLLInitTypeDef *UTILS_PLLInitStruct, LL_UTILS_ClkInitTypeDef *UTILS_ClkInitStruct); +ErrorStatus LL_SetFlashLatency(uint32_t HCLKFrequency); + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32G0xx_LL_UTILS_H */ diff --git a/firmware/Drivers/STM32G0xx_HAL_Driver/LICENSE.txt b/firmware/Drivers/STM32G0xx_HAL_Driver/LICENSE.txt new file mode 100644 index 0000000..3edc4d1 --- /dev/null +++ b/firmware/Drivers/STM32G0xx_HAL_Driver/LICENSE.txt @@ -0,0 +1,6 @@ +This software component is provided to you as part of a software package and +applicable license terms are in the Package_license file. If you received this +software component outside of a package or without applicable license terms, +the terms of the BSD-3-Clause license shall apply. +You may obtain a copy of the BSD-3-Clause at: +https://opensource.org/licenses/BSD-3-Clause diff --git a/firmware/Drivers/STM32G0xx_HAL_Driver/License.md b/firmware/Drivers/STM32G0xx_HAL_Driver/License.md new file mode 100644 index 0000000..d2ca26d --- /dev/null +++ b/firmware/Drivers/STM32G0xx_HAL_Driver/License.md @@ -0,0 +1,3 @@ +# Copyright (c) 2018 STMicroelectronics + +This software component is licensed by STMicroelectronics under the **BSD 3-Clause** license. You may not use this file except in compliance with this license. You may obtain a copy of the license [here](https://opensource.org/licenses/BSD-3-Clause). \ No newline at end of file diff --git a/firmware/Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.c b/firmware/Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.c new file mode 100644 index 0000000..7e4ffcf --- /dev/null +++ b/firmware/Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.c @@ -0,0 +1,759 @@ +/** + ****************************************************************************** + * @file stm32g0xx_hal.c + * @author MCD Application Team + * @brief HAL module driver. + * This is the common part of the HAL initialization + * + ****************************************************************************** + * @attention + * + * Copyright (c) 2018 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + @verbatim + ============================================================================== + ##### How to use this driver ##### + ============================================================================== + [..] + The common HAL driver contains a set of generic and common APIs that can be + used by the PPP peripheral drivers and the user to start using the HAL. + [..] + The HAL contains two APIs categories: + (+) Common HAL APIs + (+) Services HAL APIs + + @endverbatim + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32g0xx_hal.h" + +/** @addtogroup STM32G0xx_HAL_Driver + * @{ + */ + +/** @addtogroup HAL + * @brief HAL module driver + * @{ + */ + +#ifdef HAL_MODULE_ENABLED + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ + +/** @defgroup HAL_Private_Constants HAL Private Constants + * @{ + */ +/** + * @brief STM32G0xx HAL Driver version number + */ +#define __STM32G0xx_HAL_VERSION_MAIN (0x01U) /*!< [31:24] main version */ +#define __STM32G0xx_HAL_VERSION_SUB1 (0x04U) /*!< [23:16] sub1 version */ +#define __STM32G0xx_HAL_VERSION_SUB2 (0x05U) /*!< [15:8] sub2 version */ +#define __STM32G0xx_HAL_VERSION_RC (0x00U) /*!< [7:0] release candidate */ +#define __STM32G0xx_HAL_VERSION ((__STM32G0xx_HAL_VERSION_MAIN << 24U)\ + |(__STM32G0xx_HAL_VERSION_SUB1 << 16U)\ + |(__STM32G0xx_HAL_VERSION_SUB2 << 8U )\ + |(__STM32G0xx_HAL_VERSION_RC)) + +#if defined(VREFBUF) +#define VREFBUF_TIMEOUT_VALUE 10U /*!< 10 ms */ +#endif /* VREFBUF */ + +/** + * @} + */ + +/* Private macro -------------------------------------------------------------*/ +/* Exported variables ---------------------------------------------------------*/ +/** @defgroup HAL_Exported_Variables HAL Exported Variables + * @{ + */ +__IO uint32_t uwTick; +uint32_t uwTickPrio = (1UL << __NVIC_PRIO_BITS); /* Invalid PRIO */ +HAL_TickFreqTypeDef uwTickFreq = HAL_TICK_FREQ_DEFAULT; /* 1KHz */ +/** + * @} + */ + +/* Private function prototypes -----------------------------------------------*/ +/* Exported functions --------------------------------------------------------*/ + +/** @addtogroup HAL_Exported_Functions + * @{ + */ + +/** @addtogroup HAL_Exported_Functions_Group1 + * @brief HAL Initialization and Configuration functions + * +@verbatim + =============================================================================== + ##### HAL Initialization and Configuration functions ##### + =============================================================================== + [..] This section provides functions allowing to: + (+) Initialize the Flash interface the NVIC allocation and initial time base + clock configuration. + (+) De-initialize common part of the HAL. + (+) Configure the time base source to have 1ms time base with a dedicated + Tick interrupt priority. + (++) SysTick timer is used by default as source of time base, but user + can eventually implement his proper time base source (a general purpose + timer for example or other time source), keeping in mind that Time base + duration should be kept 1ms since PPP_TIMEOUT_VALUEs are defined and + handled in milliseconds basis. + (++) Time base configuration function (HAL_InitTick ()) is called automatically + at the beginning of the program after reset by HAL_Init() or at any time + when clock is configured, by HAL_RCC_ClockConfig(). + (++) Source of time base is configured to generate interrupts at regular + time intervals. Care must be taken if HAL_Delay() is called from a + peripheral ISR process, the Tick interrupt line must have higher priority + (numerically lower) than the peripheral interrupt. Otherwise the caller + ISR process will be blocked. + (++) functions affecting time base configurations are declared as __weak + to make override possible in case of other implementations in user file. +@endverbatim + * @{ + */ + +/** + * @brief Configure the Flash prefetch and the Instruction cache, + * the time base source, NVIC and any required global low level hardware + * by calling the HAL_MspInit() callback function to be optionally defined in user file + * stm32g0xx_hal_msp.c. + * + * @note HAL_Init() function is called at the beginning of program after reset and before + * the clock configuration. + * + * @note In the default implementation the System Timer (Systick) is used as source of time base. + * The Systick configuration is based on HSI clock, as HSI is the clock + * used after a system Reset. + * Once done, time base tick starts incrementing: the tick variable counter is incremented + * each 1ms in the SysTick_Handler() interrupt handler. + * + * @retval HAL status + */ +HAL_StatusTypeDef HAL_Init(void) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Configure Flash prefetch, Instruction cache */ + /* Default configuration at reset is: */ + /* - Prefetch disabled */ + /* - Instruction cache enabled */ + +#if (INSTRUCTION_CACHE_ENABLE == 0U) + __HAL_FLASH_INSTRUCTION_CACHE_DISABLE(); +#endif /* INSTRUCTION_CACHE_ENABLE */ + +#if (PREFETCH_ENABLE != 0U) + __HAL_FLASH_PREFETCH_BUFFER_ENABLE(); +#endif /* PREFETCH_ENABLE */ + + /* Use SysTick as time base source and configure 1ms tick (default clock after Reset is HSI) */ + if (HAL_InitTick(TICK_INT_PRIORITY) != HAL_OK) + { + status = HAL_ERROR; + } + else + { + /* Init the low level hardware */ + HAL_MspInit(); + } + + /* Return function status */ + return status; +} + +/** + * @brief This function de-Initializes common part of the HAL and stops the source of time base. + * @note This function is optional. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_DeInit(void) +{ + /* Reset of all peripherals */ + __HAL_RCC_APB1_FORCE_RESET(); + __HAL_RCC_APB1_RELEASE_RESET(); + + __HAL_RCC_APB2_FORCE_RESET(); + __HAL_RCC_APB2_RELEASE_RESET(); + + __HAL_RCC_AHB_FORCE_RESET(); + __HAL_RCC_AHB_RELEASE_RESET(); + + __HAL_RCC_IOP_FORCE_RESET(); + __HAL_RCC_IOP_RELEASE_RESET(); + + /* De-Init the low level hardware */ + HAL_MspDeInit(); + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Initialize the MSP. + * @retval None + */ +__weak void HAL_MspInit(void) +{ + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_MspInit could be implemented in the user file + */ +} + +/** + * @brief DeInitializes the MSP. + * @retval None + */ +__weak void HAL_MspDeInit(void) +{ + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_MspDeInit could be implemented in the user file + */ +} + +/** + * @brief This function configures the source of the time base: + * The time source is configured to have 1ms time base with a dedicated + * Tick interrupt priority. + * @note This function is called automatically at the beginning of program after + * reset by HAL_Init() or at any time when clock is reconfigured by HAL_RCC_ClockConfig(). + * @note In the default implementation, SysTick timer is the source of time base. + * It is used to generate interrupts at regular time intervals. + * Care must be taken if HAL_Delay() is called from a peripheral ISR process, + * The SysTick interrupt must have higher priority (numerically lower) + * than the peripheral interrupt. Otherwise the caller ISR process will be blocked. + * The function is declared as __weak to be overwritten in case of other + * implementation in user file. + * @param TickPriority Tick interrupt priority. + * @retval HAL status + */ +__weak HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Check uwTickFreq for MisraC 2012 (even if uwTickFreq is a enum type that doesn't take the value zero)*/ + if ((uint32_t)uwTickFreq != 0U) + { + /*Configure the SysTick to have interrupt in 1ms time basis*/ + if (HAL_SYSTICK_Config(SystemCoreClock / (1000U /(uint32_t)uwTickFreq)) == 0U) + { + /* Configure the SysTick IRQ priority */ + if (TickPriority < (1UL << __NVIC_PRIO_BITS)) + { + HAL_NVIC_SetPriority(SysTick_IRQn, TickPriority, 0U); + uwTickPrio = TickPriority; + } + else + { + status = HAL_ERROR; + } + } + else + { + status = HAL_ERROR; + } + } + else + { + status = HAL_ERROR; + } + + /* Return function status */ + return status; +} + +/** + * @} + */ + +/** @addtogroup HAL_Exported_Functions_Group2 + * @brief HAL Control functions + * +@verbatim + =============================================================================== + ##### HAL Control functions ##### + =============================================================================== + [..] This section provides functions allowing to: + (+) Provide a tick value in millisecond + (+) Provide a blocking delay in millisecond + (+) Suspend the time base source interrupt + (+) Resume the time base source interrupt + (+) Get the HAL API driver version + (+) Get the device identifier + (+) Get the device revision identifier + +@endverbatim + * @{ + */ + +/** + * @brief This function is called to increment a global variable "uwTick" + * used as application time base. + * @note In the default implementation, this variable is incremented each 1ms + * in SysTick ISR. + * @note This function is declared as __weak to be overwritten in case of other + * implementations in user file. + * @retval None + */ +__weak void HAL_IncTick(void) +{ + uwTick += (uint32_t)uwTickFreq; +} + +/** + * @brief Provides a tick value in millisecond. + * @note This function is declared as __weak to be overwritten in case of other + * implementations in user file. + * @retval tick value + */ +__weak uint32_t HAL_GetTick(void) +{ + return uwTick; +} + +/** + * @brief This function returns a tick priority. + * @retval tick priority + */ +uint32_t HAL_GetTickPrio(void) +{ + return uwTickPrio; +} + +/** + * @brief Set new tick Freq. + * @retval status + */ +HAL_StatusTypeDef HAL_SetTickFreq(HAL_TickFreqTypeDef Freq) +{ + HAL_StatusTypeDef status = HAL_OK; + HAL_TickFreqTypeDef prevTickFreq; + assert_param(IS_TICKFREQ(Freq)); + + if (uwTickFreq != Freq) + { + /* Back up uwTickFreq frequency */ + prevTickFreq = uwTickFreq; + + /* Update uwTickFreq global variable used by HAL_InitTick() */ + uwTickFreq = Freq; + + /* Apply the new tick Freq */ + status = HAL_InitTick(uwTickPrio); + if (status != HAL_OK) + { + /* Restore previous tick frequency */ + uwTickFreq = prevTickFreq; + } + } + + return status; +} + +/** + * @brief return tick frequency. + * @retval tick period in Hz + */ +HAL_TickFreqTypeDef HAL_GetTickFreq(void) +{ + return uwTickFreq; +} + +/** + * @brief This function provides minimum delay (in milliseconds) based + * on variable incremented. + * @note In the default implementation , SysTick timer is the source of time base. + * It is used to generate interrupts at regular time intervals where uwTick + * is incremented. + * @note This function is declared as __weak to be overwritten in case of other + * implementations in user file. + * @param Delay specifies the delay time length, in milliseconds. + * @retval None + */ +__weak void HAL_Delay(uint32_t Delay) +{ + uint32_t tickstart = HAL_GetTick(); + uint32_t wait = Delay; + + /* Add a freq to guarantee minimum wait */ + if (wait < HAL_MAX_DELAY) + { + wait += (uint32_t)(uwTickFreq); + } + + while ((HAL_GetTick() - tickstart) < wait) + { + } +} + +/** + * @brief Suspend Tick increment. + * @note In the default implementation , SysTick timer is the source of time base. It is + * used to generate interrupts at regular time intervals. Once HAL_SuspendTick() + * is called, the SysTick interrupt will be disabled and so Tick increment + * is suspended. + * @note This function is declared as __weak to be overwritten in case of other + * implementations in user file. + * @retval None + */ +__weak void HAL_SuspendTick(void) +{ + /* Disable SysTick Interrupt */ + CLEAR_BIT(SysTick->CTRL,SysTick_CTRL_TICKINT_Msk); +} + +/** + * @brief Resume Tick increment. + * @note In the default implementation , SysTick timer is the source of time base. It is + * used to generate interrupts at regular time intervals. Once HAL_ResumeTick() + * is called, the SysTick interrupt will be enabled and so Tick increment + * is resumed. + * @note This function is declared as __weak to be overwritten in case of other + * implementations in user file. + * @retval None + */ +__weak void HAL_ResumeTick(void) +{ + /* Enable SysTick Interrupt */ + SET_BIT(SysTick->CTRL, SysTick_CTRL_TICKINT_Msk); +} + +/** + * @brief Returns the HAL revision + * @retval version : 0xXYZR (8bits for each decimal, R for RC) + */ +uint32_t HAL_GetHalVersion(void) +{ + return __STM32G0xx_HAL_VERSION; +} + +/** + * @brief Returns the device revision identifier. + * @retval Device revision identifier + */ +uint32_t HAL_GetREVID(void) +{ + return ((DBG->IDCODE & DBG_IDCODE_REV_ID) >> 16U); +} + +/** + * @brief Returns the device identifier. + * @retval Device identifier + */ +uint32_t HAL_GetDEVID(void) +{ + return ((DBG->IDCODE) & DBG_IDCODE_DEV_ID); +} + +/** + * @brief Returns first word of the unique device identifier (UID based on 96 bits) + * @retval Device identifier + */ +uint32_t HAL_GetUIDw0(void) +{ + return (READ_REG(*((uint32_t *)UID_BASE))); +} + +/** + * @brief Returns second word of the unique device identifier (UID based on 96 bits) + * @retval Device identifier + */ +uint32_t HAL_GetUIDw1(void) +{ + return (READ_REG(*((uint32_t *)(UID_BASE + 4U)))); +} + +/** + * @brief Returns third word of the unique device identifier (UID based on 96 bits) + * @retval Device identifier + */ +uint32_t HAL_GetUIDw2(void) +{ + return (READ_REG(*((uint32_t *)(UID_BASE + 8U)))); +} + +/** + * @} + */ + +/** @addtogroup HAL_Exported_Functions_Group3 + * @brief HAL Debug functions + * +@verbatim + =============================================================================== + ##### HAL Debug functions ##### + =============================================================================== + [..] This section provides functions allowing to: + (+) Enable/Disable Debug module during STOP mode + (+) Enable/Disable Debug module during STANDBY mode + +@endverbatim + * @{ + */ + +/** + * @brief Enable the Debug Module during STOP mode + * @retval None + */ +void HAL_DBGMCU_EnableDBGStopMode(void) +{ + SET_BIT(DBG->CR, DBG_CR_DBG_STOP); +} + +/** + * @brief Disable the Debug Module during STOP mode + * @retval None + */ +void HAL_DBGMCU_DisableDBGStopMode(void) +{ + CLEAR_BIT(DBG->CR, DBG_CR_DBG_STOP); +} + +/** + * @brief Enable the Debug Module during STANDBY mode + * @retval None + */ +void HAL_DBGMCU_EnableDBGStandbyMode(void) +{ + SET_BIT(DBG->CR, DBG_CR_DBG_STANDBY); +} + +/** + * @brief Disable the Debug Module during STANDBY mode + * @retval None + */ +void HAL_DBGMCU_DisableDBGStandbyMode(void) +{ + CLEAR_BIT(DBG->CR, DBG_CR_DBG_STANDBY); +} + +/** + * @} + */ + +/** @addtogroup HAL_Exported_Functions_Group4 + * @brief SYSCFG configuration functions + * +@verbatim + =============================================================================== + ##### HAL SYSCFG configuration functions ##### + =============================================================================== + [..] This section provides functions allowing to: + (+) Enable/Disable Pin remap + (+) Configure the Voltage reference buffer + (+) Enable/Disable the Voltage reference buffer + (+) Enable/Disable the I/O analog switch voltage booster + (+) Enable/Disable dead battery behavior(*) + (+) Configure Clamping Diode on specific pins(*) + (*) Feature not available on all devices + +@endverbatim + * @{ + */ +#if defined(VREFBUF) +/** + * @brief Configure the internal voltage reference buffer voltage scale. + * @param VoltageScaling specifies the output voltage to achieve + * This parameter can be one of the following values: + * @arg @ref SYSCFG_VREFBUF_VoltageScale + * @retval None + */ +void HAL_SYSCFG_VREFBUF_VoltageScalingConfig(uint32_t VoltageScaling) +{ + /* Check the parameters */ + assert_param(IS_SYSCFG_VREFBUF_VOLTAGE_SCALE(VoltageScaling)); + + MODIFY_REG(VREFBUF->CSR, VREFBUF_CSR_VRS, VoltageScaling); +} + +/** + * @brief Configure the internal voltage reference buffer high impedance mode. + * @param Mode specifies the high impedance mode + * This parameter can be one of the following values: + * @arg @ref SYSCFG_VREFBUF_HighImpedance + * @retval None + */ +void HAL_SYSCFG_VREFBUF_HighImpedanceConfig(uint32_t Mode) +{ + /* Check the parameters */ + assert_param(IS_SYSCFG_VREFBUF_HIGH_IMPEDANCE(Mode)); + + MODIFY_REG(VREFBUF->CSR, VREFBUF_CSR_HIZ, Mode); +} + +/** + * @brief Tune the Internal Voltage Reference buffer (VREFBUF). + * @note VrefBuf voltage scale is calibrated in production for each device, + * using voltage scale 1. This calibration value is loaded + * as default trimming value at device power up. + * This trimming value can be fine tuned for voltage scales 0 and 1 + * using this function. + * @retval None + */ +void HAL_SYSCFG_VREFBUF_TrimmingConfig(uint32_t TrimmingValue) +{ + /* Check the parameters */ + assert_param(IS_SYSCFG_VREFBUF_TRIMMING(TrimmingValue)); + + MODIFY_REG(VREFBUF->CCR, VREFBUF_CCR_TRIM, TrimmingValue); +} + +/** + * @brief Enable the Internal Voltage Reference buffer (VREFBUF). + * @retval HAL_OK/HAL_TIMEOUT + */ +HAL_StatusTypeDef HAL_SYSCFG_EnableVREFBUF(void) +{ + uint32_t tickstart; + + SET_BIT(VREFBUF->CSR, VREFBUF_CSR_ENVR); + + /* Get Start Tick*/ + tickstart = HAL_GetTick(); + + /* Wait for VRR bit */ + while (READ_BIT(VREFBUF->CSR, VREFBUF_CSR_VRR) == 0x00U) + { + if ((HAL_GetTick() - tickstart) > VREFBUF_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + + return HAL_OK; +} + +/** + * @brief Disable the Internal Voltage Reference buffer (VREFBUF). + * + * @retval None + */ +void HAL_SYSCFG_DisableVREFBUF(void) +{ + CLEAR_BIT(VREFBUF->CSR, VREFBUF_CSR_ENVR); +} +#endif /* VREFBUF */ + +/** + * @brief Enable the I/O analog switch voltage booster + * @retval None + */ +void HAL_SYSCFG_EnableIOAnalogSwitchBooster(void) +{ + SET_BIT(SYSCFG->CFGR1, SYSCFG_CFGR1_BOOSTEN); +} + +/** + * @brief Disable the I/O analog switch voltage booster + * @retval None + */ +void HAL_SYSCFG_DisableIOAnalogSwitchBooster(void) +{ + CLEAR_BIT(SYSCFG->CFGR1, SYSCFG_CFGR1_BOOSTEN); +} + +/** + * @brief Enable the remap on PA11_PA12 + * @param PinRemap specifies which pins have to be remapped + * This parameter can be any combination of the following values: + * @arg @ref SYSCFG_REMAP_PA11 + * @arg @ref SYSCFG_REMAP_PA12 + * @retval None + */ +void HAL_SYSCFG_EnableRemap(uint32_t PinRemap) +{ + /* Check the parameter */ + assert_param(IS_HAL_REMAP_PIN(PinRemap)); + SET_BIT(SYSCFG->CFGR1, PinRemap); +} + +/** + * @brief Disable the remap on PA11_PA12 + * @param PinRemap specifies which pins will behave normally + * This parameter can be any combination of the following values: + * @arg @ref SYSCFG_REMAP_PA11 + * @arg @ref SYSCFG_REMAP_PA12 + * @retval None + */ +void HAL_SYSCFG_DisableRemap(uint32_t PinRemap) +{ + /* Check the parameter */ + assert_param(IS_HAL_REMAP_PIN(PinRemap)); + CLEAR_BIT(SYSCFG->CFGR1, PinRemap); +} + +#if defined(SYSCFG_CDEN_SUPPORT) +/** + * @brief Enable Clamping Diode on specified IO + * @param PinConfig specifies on which pins clamping Diode has to be enabled + * This parameter can be any combination of the following values: + * @arg @ref SYSCFG_ClampingDiode + * @retval None + */ +void HAL_SYSCFG_EnableClampingDiode(uint32_t PinConfig) +{ + /* Check the parameter */ + assert_param(IS_SYSCFG_CLAMPINGDIODE(PinConfig)); + SET_BIT(SYSCFG->CFGR2, PinConfig); +} + +/** + * @brief Disable Clamping Diode on specified IO + * @param PinConfig specifies on which pins clamping Diode has to be disabled + * This parameter can be any combination of the following values: + * @arg @ref SYSCFG_ClampingDiode + * @retval None + */ +void HAL_SYSCFG_DisableClampingDiode(uint32_t PinConfig) +{ + /* Check the parameter */ + assert_param(IS_SYSCFG_CLAMPINGDIODE(PinConfig)); + CLEAR_BIT(SYSCFG->CFGR2, PinConfig); +} +#endif /* SYSCFG_CDEN_SUPPORT */ + +#if defined (SYSCFG_CFGR1_UCPD1_STROBE) || defined (SYSCFG_CFGR1_UCPD2_STROBE) +/** + * @brief Strobe configuration of GPIO depending on UCPDx dead battery settings + * @param ConfigDeadBattery specifies on which pins to make effective or not Dead Battery sw configuration + * This parameter can be any combination of the following values: + * @arg @ref SYSCFG_UCPD1_STROBE + * @arg @ref SYSCFG_UCPD2_STROBE + * @retval None + */ +void HAL_SYSCFG_StrobeDBattpinsConfig(uint32_t ConfigDeadBattery) +{ + assert_param(IS_SYSCFG_DBATT_CONFIG(ConfigDeadBattery)); + + /* Change strobe configuration of GPIO depending on UCPDx dead battery settings */ + MODIFY_REG(SYSCFG->CFGR1, (SYSCFG_CFGR1_UCPD1_STROBE | SYSCFG_CFGR1_UCPD2_STROBE), ConfigDeadBattery); +} +#endif /* SYSCFG_CFGR1_UCPD1_STROBE || SYSCFG_CFGR1_UCPD2_STROBE */ +/** + * @} + */ + +/** + * @} + */ + +#endif /* HAL_MODULE_ENABLED */ +/** + * @} + */ + +/** + * @} + */ + + diff --git a/firmware/Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.c b/firmware/Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.c new file mode 100644 index 0000000..40a9be1 --- /dev/null +++ b/firmware/Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.c @@ -0,0 +1,418 @@ +/** + ****************************************************************************** + * @file stm32g0xx_hal_cortex.c + * @author MCD Application Team + * @brief CORTEX HAL module driver. + * This file provides firmware functions to manage the following + * functionalities of the CORTEX: + * + Initialization and Configuration functions + * + Peripheral Control functions + * + @verbatim + ============================================================================== + ##### How to use this driver ##### + ============================================================================== + [..] + *** How to configure Interrupts using CORTEX HAL driver *** + =========================================================== + [..] + This section provides functions allowing to configure the NVIC interrupts (IRQ). + The Cortex M0+ exceptions are managed by CMSIS functions. + (#) Enable and Configure the priority of the selected IRQ Channels. + The priority can be 0..3. + + -@- Lower priority values gives higher priority. + -@- Priority Order: + (#@) Lowest priority. + (#@) Lowest hardware priority (IRQn position). + + (#) Configure the priority of the selected IRQ Channels using HAL_NVIC_SetPriority() + + (#) Enable the selected IRQ Channels using HAL_NVIC_EnableIRQ() + + -@- Negative value of IRQn_Type are not allowed. + + *** How to configure Systick using CORTEX HAL driver *** + ======================================================== + [..] + Setup SysTick Timer for time base. + + (+) The HAL_SYSTICK_Config()function calls the SysTick_Config() function which + is a CMSIS function that: + (++) Configures the SysTick Reload register with value passed as function parameter. + (++) Configures the SysTick IRQ priority to the lowest value (0x03). + (++) Resets the SysTick Counter register. + (++) Configures the SysTick Counter clock source to be Core Clock Source (HCLK). + (++) Enables the SysTick Interrupt. + (++) Starts the SysTick Counter. + + (+) You can change the SysTick Clock source to be HCLK_Div8 by calling the macro + __HAL_CORTEX_SYSTICKCLK_CONFIG(SYSTICK_CLKSOURCE_HCLK_DIV8) just after the + HAL_SYSTICK_Config() function call. The __HAL_CORTEX_SYSTICKCLK_CONFIG() macro is defined + inside the stm32g0xx_hal_cortex.h file. + + (+) You can change the SysTick IRQ priority by calling the + HAL_NVIC_SetPriority(SysTick_IRQn,...) function just after the HAL_SYSTICK_Config() function + call. The HAL_NVIC_SetPriority() call the NVIC_SetPriority() function which is a CMSIS function. + + (+) To adjust the SysTick time base, use the following formula: + + Reload Value = SysTick Counter Clock (Hz) x Desired Time base (s) + (++) Reload Value is the parameter to be passed for HAL_SYSTICK_Config() function + (++) Reload Value should not exceed 0xFFFFFF + + @endverbatim + ****************************************************************************** + * @attention + * + * Copyright (c) 2018 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file in + * the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32g0xx_hal.h" + +/** @addtogroup STM32G0xx_HAL_Driver + * @{ + */ + +/** @addtogroup CORTEX + * @{ + */ + +#ifdef HAL_CORTEX_MODULE_ENABLED + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/* Private macros ------------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ +/* Exported functions --------------------------------------------------------*/ + +/** @addtogroup CORTEX_Exported_Functions + * @{ + */ + + +/** @addtogroup CORTEX_Exported_Functions_Group1 + * @brief Initialization and Configuration functions + * +@verbatim + ============================================================================== + ##### Initialization and Configuration functions ##### + ============================================================================== + [..] + This section provides the CORTEX HAL driver functions allowing to configure Interrupts + Systick functionalities + +@endverbatim + * @{ + */ + +/** + * @brief Sets the priority of an interrupt. + * @param IRQn External interrupt number . + * This parameter can be an enumerator of IRQn_Type enumeration + * (For the complete STM32 Devices IRQ Channels list, please refer to stm32g0xx.h file) + * @param PreemptPriority The preemption priority for the IRQn channel. + * This parameter can be a value between 0 and 3. + * A lower priority value indicates a higher priority + * @param SubPriority the subpriority level for the IRQ channel. + * with stm32g0xx devices, this parameter is a dummy value and it is ignored, because + * no subpriority supported in Cortex M0+ based products. + * @retval None + */ +void HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(SubPriority); + + /* Check the parameters */ + assert_param(IS_NVIC_PREEMPTION_PRIORITY(PreemptPriority)); + NVIC_SetPriority(IRQn, PreemptPriority); +} + +/** + * @brief Enable a device specific interrupt in the NVIC interrupt controller. + * @param IRQn External interrupt number. + * This parameter can be an enumerator of IRQn_Type enumeration + * (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32g0xxxx.h)) + * @retval None + */ +void HAL_NVIC_EnableIRQ(IRQn_Type IRQn) +{ + /* Check the parameters */ + assert_param(IS_NVIC_DEVICE_IRQ(IRQn)); + + /* Enable interrupt */ + NVIC_EnableIRQ(IRQn); +} + +/** + * @brief Disable a device specific interrupt in the NVIC interrupt controller. + * @param IRQn External interrupt number. + * This parameter can be an enumerator of IRQn_Type enumeration + * (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32g0xxxx.h)) + * @retval None + */ +void HAL_NVIC_DisableIRQ(IRQn_Type IRQn) +{ + /* Check the parameters */ + assert_param(IS_NVIC_DEVICE_IRQ(IRQn)); + + /* Disable interrupt */ + NVIC_DisableIRQ(IRQn); +} + +/** + * @brief Initiate a system reset request to reset the MCU. + * @retval None + */ +void HAL_NVIC_SystemReset(void) +{ + /* System Reset */ + NVIC_SystemReset(); +} + +/** + * @brief Initialize the System Timer with interrupt enabled and start the System Tick Timer (SysTick): + * Counter is in free running mode to generate periodic interrupts. + * @param TicksNumb Specifies the ticks Number of ticks between two interrupts. + * @retval status: - 0 Function succeeded. + * - 1 Function failed. + */ +uint32_t HAL_SYSTICK_Config(uint32_t TicksNumb) +{ + return SysTick_Config(TicksNumb); +} +/** + * @} + */ + +/** @addtogroup CORTEX_Exported_Functions_Group2 + * @brief Cortex control functions + * +@verbatim + ============================================================================== + ##### Peripheral Control functions ##### + ============================================================================== + [..] + This subsection provides a set of functions allowing to control the CORTEX + (NVIC, SYSTICK, MPU) functionalities. + + +@endverbatim + * @{ + */ + +/** + * @brief Get the priority of an interrupt. + * @param IRQn External interrupt number. + * This parameter can be an enumerator of IRQn_Type enumeration + * (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32g0xxxx.h)) + * @retval None + */ +uint32_t HAL_NVIC_GetPriority(IRQn_Type IRQn) +{ + /* Get priority for Cortex-M system or device specific interrupts */ + return NVIC_GetPriority(IRQn); +} + +/** + * @brief Set Pending bit of an external interrupt. + * @param IRQn External interrupt number + * This parameter can be an enumerator of IRQn_Type enumeration + * (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32g0xxxx.h)) + * @retval None + */ +void HAL_NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + /* Check the parameters */ + assert_param(IS_NVIC_DEVICE_IRQ(IRQn)); + + /* Set interrupt pending */ + NVIC_SetPendingIRQ(IRQn); +} + +/** + * @brief Get Pending Interrupt (read the pending register in the NVIC + * and return the pending bit for the specified interrupt). + * @param IRQn External interrupt number. + * This parameter can be an enumerator of IRQn_Type enumeration + * (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32g0xxxx.h)) + * @retval status: - 0 Interrupt status is not pending. + * - 1 Interrupt status is pending. + */ +uint32_t HAL_NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + /* Check the parameters */ + assert_param(IS_NVIC_DEVICE_IRQ(IRQn)); + + /* Return 1 if pending else 0 */ + return NVIC_GetPendingIRQ(IRQn); +} + +/** + * @brief Clear the pending bit of an external interrupt. + * @param IRQn External interrupt number. + * This parameter can be an enumerator of IRQn_Type enumeration + * (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32g0xxxx.h)) + * @retval None + */ +void HAL_NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + /* Check the parameters */ + assert_param(IS_NVIC_DEVICE_IRQ(IRQn)); + + /* Clear pending interrupt */ + NVIC_ClearPendingIRQ(IRQn); +} + +/** + * @brief Configure the SysTick clock source. + * @param CLKSource specifies the SysTick clock source. + * This parameter can be one of the following values: + * @arg SYSTICK_CLKSOURCE_HCLK_DIV8: AHB clock divided by 8 selected as SysTick clock source. + * @arg SYSTICK_CLKSOURCE_HCLK: AHB clock selected as SysTick clock source. + * @retval None + */ +void HAL_SYSTICK_CLKSourceConfig(uint32_t CLKSource) +{ + /* Check the parameters */ + assert_param(IS_SYSTICK_CLK_SOURCE(CLKSource)); + if (CLKSource == SYSTICK_CLKSOURCE_HCLK) + { + SysTick->CTRL |= SYSTICK_CLKSOURCE_HCLK; + } + else + { + SysTick->CTRL &= ~SYSTICK_CLKSOURCE_HCLK; + } +} + +/** + * @brief Handle SYSTICK interrupt request. + * @retval None + */ +void HAL_SYSTICK_IRQHandler(void) +{ + HAL_SYSTICK_Callback(); +} + +/** + * @brief SYSTICK callback. + * @retval None + */ +__weak void HAL_SYSTICK_Callback(void) +{ + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_SYSTICK_Callback could be implemented in the user file + */ +} + +#if (__MPU_PRESENT == 1U) +/** + * @brief Enable the MPU. + * @param MPU_Control Specifies the control mode of the MPU during hard fault, + * NMI, FAULTMASK and privileged access to the default memory + * This parameter can be one of the following values: + * @arg MPU_HFNMI_PRIVDEF_NONE + * @arg MPU_HARDFAULT_NMI + * @arg MPU_PRIVILEGED_DEFAULT + * @arg MPU_HFNMI_PRIVDEF + * @retval None + */ +void HAL_MPU_Enable(uint32_t MPU_Control) +{ + /* Enable the MPU */ + MPU->CTRL = (MPU_Control | MPU_CTRL_ENABLE_Msk); + + /* Ensure MPU setting take effects */ + __DSB(); + __ISB(); +} + + +/** + * @brief Disable the MPU. + * @retval None + */ +void HAL_MPU_Disable(void) +{ + /* Make sure outstanding transfers are done */ + __DMB(); + + /* Disable the MPU and clear the control register*/ + MPU->CTRL = 0; +} + + +/** + * @brief Initialize and configure the Region and the memory to be protected. + * @param MPU_Init Pointer to a MPU_Region_InitTypeDef structure that contains + * the initialization and configuration information. + * @retval None + */ +void HAL_MPU_ConfigRegion(MPU_Region_InitTypeDef *MPU_Init) +{ + /* Check the parameters */ + assert_param(IS_MPU_REGION_NUMBER(MPU_Init->Number)); + assert_param(IS_MPU_REGION_ENABLE(MPU_Init->Enable)); + + /* Set the Region number */ + MPU->RNR = MPU_Init->Number; + + if ((MPU_Init->Enable) != 0U) + { + /* Check the parameters */ + assert_param(IS_MPU_INSTRUCTION_ACCESS(MPU_Init->DisableExec)); + assert_param(IS_MPU_REGION_PERMISSION_ATTRIBUTE(MPU_Init->AccessPermission)); + assert_param(IS_MPU_TEX_LEVEL(MPU_Init->TypeExtField)); + assert_param(IS_MPU_ACCESS_SHAREABLE(MPU_Init->IsShareable)); + assert_param(IS_MPU_ACCESS_CACHEABLE(MPU_Init->IsCacheable)); + assert_param(IS_MPU_ACCESS_BUFFERABLE(MPU_Init->IsBufferable)); + assert_param(IS_MPU_SUB_REGION_DISABLE(MPU_Init->SubRegionDisable)); + assert_param(IS_MPU_REGION_SIZE(MPU_Init->Size)); + + MPU->RBAR = MPU_Init->BaseAddress; + MPU->RASR = ((uint32_t)MPU_Init->DisableExec << MPU_RASR_XN_Pos) | + ((uint32_t)MPU_Init->AccessPermission << MPU_RASR_AP_Pos) | + ((uint32_t)MPU_Init->TypeExtField << MPU_RASR_TEX_Pos) | + ((uint32_t)MPU_Init->IsShareable << MPU_RASR_S_Pos) | + ((uint32_t)MPU_Init->IsCacheable << MPU_RASR_C_Pos) | + ((uint32_t)MPU_Init->IsBufferable << MPU_RASR_B_Pos) | + ((uint32_t)MPU_Init->SubRegionDisable << MPU_RASR_SRD_Pos) | + ((uint32_t)MPU_Init->Size << MPU_RASR_SIZE_Pos) | + ((uint32_t)MPU_Init->Enable << MPU_RASR_ENABLE_Pos); + } + else + { + MPU->RBAR = 0x00U; + MPU->RASR = 0x00U; + } +} +#endif /* __MPU_PRESENT */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* HAL_CORTEX_MODULE_ENABLED */ +/** + * @} + */ + +/** + * @} + */ + diff --git a/firmware/Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_dma.c b/firmware/Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_dma.c new file mode 100644 index 0000000..a2b906a --- /dev/null +++ b/firmware/Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_dma.c @@ -0,0 +1,1193 @@ +/** + ****************************************************************************** + * @file stm32g0xx_hal_dma.c + * @author MCD Application Team + * @brief DMA HAL module driver. + * This file provides firmware functions to manage the following + * functionalities of the Direct Memory Access (DMA) peripheral: + * + Initialization and de-initialization functions + * + IO operation functions + * + Peripheral State and errors functions + * + ****************************************************************************** + * @attention + * + * Copyright (c) 2018 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + @verbatim + ============================================================================== + ##### How to use this driver ##### + ============================================================================== + [..] + (#) Enable and configure the peripheral to be connected to the DMA Channel + (except for internal SRAM / FLASH memories: no initialization is + necessary). Please refer to the Reference manual for connection between peripherals + and DMA requests. + + (#) For a given Channel, program the required configuration through the following parameters: + Channel request, Transfer Direction, Source and Destination data formats, + Circular or Normal mode, Channel Priority level, Source and Destination Increment mode + using HAL_DMA_Init() function. + + Prior to HAL_DMA_Init the peripheral clock shall be enabled for both DMA & DMAMUX + thanks to: + (##) DMA1 or DMA2: __HAL_RCC_DMA1_CLK_ENABLE() or __HAL_RCC_DMA2_CLK_ENABLE(); + + (#) Use HAL_DMA_GetState() function to return the DMA state and HAL_DMA_GetError() in case of error + detection. + + (#) Use HAL_DMA_Abort() function to abort the current transfer + + -@- In Memory-to-Memory transfer mode, Circular mode is not allowed. + + *** Polling mode IO operation *** + ================================= + [..] + (+) Use HAL_DMA_Start() to start DMA transfer after the configuration of Source + address and destination address and the Length of data to be transferred + (+) Use HAL_DMA_PollForTransfer() to poll for the end of current transfer, in this + case a fixed Timeout can be configured by User depending from his application. + + *** Interrupt mode IO operation *** + =================================== + [..] + (+) Configure the DMA interrupt priority using HAL_NVIC_SetPriority() + (+) Enable the DMA IRQ handler using HAL_NVIC_EnableIRQ() + (+) Use HAL_DMA_Start_IT() to start DMA transfer after the configuration of + Source address and destination address and the Length of data to be transferred. + In this case the DMA interrupt is configured + (+) Use HAL_DMA_IRQHandler() called under DMA_IRQHandler() Interrupt subroutine + (+) At the end of data transfer HAL_DMA_IRQHandler() function is executed and user can + add his own function to register callbacks with HAL_DMA_RegisterCallback(). + + *** DMA HAL driver macros list *** + ============================================= + [..] + Below the list of macros in DMA HAL driver. + + (+) __HAL_DMA_ENABLE: Enable the specified DMA Channel. + (+) __HAL_DMA_DISABLE: Disable the specified DMA Channel. + (+) __HAL_DMA_GET_FLAG: Get the DMA Channel pending flags. + (+) __HAL_DMA_CLEAR_FLAG: Clear the DMA Channel pending flags. + (+) __HAL_DMA_ENABLE_IT: Enable the specified DMA Channel interrupts. + (+) __HAL_DMA_DISABLE_IT: Disable the specified DMA Channel interrupts. + (+) __HAL_DMA_GET_IT_SOURCE: Check whether the specified DMA Channel interrupt is enabled or not. + + [..] + (@) You can refer to the DMA HAL driver header file for more useful macros + + @endverbatim + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32g0xx_hal.h" + +/** @addtogroup STM32G0xx_HAL_Driver + * @{ + */ + +/** @defgroup DMA DMA + * @brief DMA HAL module driver + * @{ + */ + +#ifdef HAL_DMA_MODULE_ENABLED + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/* Private macro -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ + +/** @defgroup DMA_Private_Functions DMA Private Functions + * @{ + */ +static void DMA_SetConfig(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength); +static void DMA_CalcDMAMUXChannelBaseAndMask(DMA_HandleTypeDef *hdma); +static void DMA_CalcDMAMUXRequestGenBaseAndMask(DMA_HandleTypeDef *hdma); + +/** + * @} + */ + +/* Exported functions ---------------------------------------------------------*/ + +/** @defgroup DMA_Exported_Functions DMA Exported Functions + * @{ + */ + +/** @defgroup DMA_Exported_Functions_Group1 Initialization and de-initialization functions + * @brief Initialization and de-initialization functions + * +@verbatim + =============================================================================== + ##### Initialization and de-initialization functions ##### + =============================================================================== + [..] + This section provides functions allowing to initialize the DMA Channel source + and destination addresses, incrementation and data sizes, transfer direction, + circular/normal mode selection, memory-to-memory mode selection and Channel priority value. + [..] + The HAL_DMA_Init() function follows the DMA configuration procedures as described in + reference manual. + +@endverbatim + * @{ + */ + +/** + * @brief Initialize the DMA according to the specified + * parameters in the DMA_InitTypeDef and initialize the associated handle. + * @param hdma Pointer to a DMA_HandleTypeDef structure that contains + * the configuration information for the specified DMA Channel. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_DMA_Init(DMA_HandleTypeDef *hdma) +{ + /* Check the DMA handle allocation */ + if (hdma == NULL) + { + return HAL_ERROR; + } + + /* Check the parameters */ + assert_param(IS_DMA_ALL_INSTANCE(hdma->Instance)); + assert_param(IS_DMA_DIRECTION(hdma->Init.Direction)); + assert_param(IS_DMA_PERIPHERAL_INC_STATE(hdma->Init.PeriphInc)); + assert_param(IS_DMA_MEMORY_INC_STATE(hdma->Init.MemInc)); + assert_param(IS_DMA_PERIPHERAL_DATA_SIZE(hdma->Init.PeriphDataAlignment)); + assert_param(IS_DMA_MEMORY_DATA_SIZE(hdma->Init.MemDataAlignment)); + assert_param(IS_DMA_MODE(hdma->Init.Mode)); + assert_param(IS_DMA_PRIORITY(hdma->Init.Priority)); + + assert_param(IS_DMA_ALL_REQUEST(hdma->Init.Request)); + + /* Compute the channel index */ +#if defined(DMA2) + if ((uint32_t)(hdma->Instance) < (uint32_t)(DMA2_Channel1)) + { + /* DMA1 */ + hdma->ChannelIndex = (((uint32_t)hdma->Instance - (uint32_t)DMA1_Channel1) / ((uint32_t)DMA1_Channel2 - (uint32_t)DMA1_Channel1)) << 2U; + hdma->DmaBaseAddress = DMA1; + } + else + { + /* DMA2 */ + hdma->ChannelIndex = (((uint32_t)hdma->Instance - (uint32_t)DMA2_Channel1) / ((uint32_t)DMA2_Channel2 - (uint32_t)DMA2_Channel1)) << 2U; + hdma->DmaBaseAddress = DMA2; + } +#else + hdma->ChannelIndex = (((uint32_t)hdma->Instance - (uint32_t)DMA1_Channel1) / ((uint32_t)DMA1_Channel2 - (uint32_t)DMA1_Channel1)) << 2U; +#endif /* DMA2 */ + + /* Change DMA peripheral state */ + hdma->State = HAL_DMA_STATE_BUSY; + + /* Clear PL, MSIZE, PSIZE, MINC, PINC, CIRC, DIR and MEM2MEM bits */ + CLEAR_BIT(hdma->Instance->CCR, (DMA_CCR_PL | DMA_CCR_MSIZE | DMA_CCR_PSIZE | \ + DMA_CCR_MINC | DMA_CCR_PINC | DMA_CCR_CIRC | \ + DMA_CCR_DIR | DMA_CCR_MEM2MEM)); + + /* Set the DMA Channel configuration */ + SET_BIT(hdma->Instance->CCR, (hdma->Init.Direction | \ + hdma->Init.PeriphInc | hdma->Init.MemInc | \ + hdma->Init.PeriphDataAlignment | hdma->Init.MemDataAlignment | \ + hdma->Init.Mode | hdma->Init.Priority)); + + /* Initialize parameters for DMAMUX channel : + DMAmuxChannel, DMAmuxChannelStatus and DMAmuxChannelStatusMask + */ + DMA_CalcDMAMUXChannelBaseAndMask(hdma); + + if (hdma->Init.Direction == DMA_MEMORY_TO_MEMORY) + { + /* if memory to memory force the request to 0*/ + hdma->Init.Request = DMA_REQUEST_MEM2MEM; + } + + /* Set peripheral request to DMAMUX channel */ + hdma->DMAmuxChannel->CCR = (hdma->Init.Request & DMAMUX_CxCR_DMAREQ_ID); + + /* Clear the DMAMUX synchro overrun flag */ + hdma->DMAmuxChannelStatus->CFR = hdma->DMAmuxChannelStatusMask; + + if (((hdma->Init.Request > 0UL) && (hdma->Init.Request <= DMA_REQUEST_GENERATOR3))) + { + /* Initialize parameters for DMAMUX request generator : + DMAmuxRequestGen, DMAmuxRequestGenStatus and DMAmuxRequestGenStatusMask + */ + DMA_CalcDMAMUXRequestGenBaseAndMask(hdma); + + /* Reset the DMAMUX request generator register*/ + hdma->DMAmuxRequestGen->RGCR = 0U; + + /* Clear the DMAMUX request generator overrun flag */ + hdma->DMAmuxRequestGenStatus->RGCFR = hdma->DMAmuxRequestGenStatusMask; + } + else + { + hdma->DMAmuxRequestGen = 0U; + hdma->DMAmuxRequestGenStatus = 0U; + hdma->DMAmuxRequestGenStatusMask = 0U; + } + + /* Initialize the error code */ + hdma->ErrorCode = HAL_DMA_ERROR_NONE; + + /* Initialize the DMA state*/ + hdma->State = HAL_DMA_STATE_READY; + + /* Release Lock */ + __HAL_UNLOCK(hdma); + + return HAL_OK; +} + +/** + * @brief DeInitialize the DMA peripheral. + * @param hdma Pointer to a DMA_HandleTypeDef structure that contains + * the configuration information for the specified DMA Channel. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_DMA_DeInit(DMA_HandleTypeDef *hdma) +{ + /* Check the DMA handle allocation */ + if (NULL == hdma) + { + return HAL_ERROR; + } + + /* Check the parameters */ + assert_param(IS_DMA_ALL_INSTANCE(hdma->Instance)); + + /* Disable the selected DMA Channelx */ + __HAL_DMA_DISABLE(hdma); + + /* Compute the channel index */ +#if defined(DMA2) + if ((uint32_t)(hdma->Instance) < (uint32_t)(DMA2_Channel1)) + { + /* DMA1 */ + hdma->ChannelIndex = (((uint32_t)hdma->Instance - (uint32_t)DMA1_Channel1) / ((uint32_t)DMA1_Channel2 - (uint32_t)DMA1_Channel1)) << 2U; + hdma->DmaBaseAddress = DMA1; + } + else + { + /* DMA2 */ + hdma->ChannelIndex = (((uint32_t)hdma->Instance - (uint32_t)DMA2_Channel1) / ((uint32_t)DMA2_Channel2 - (uint32_t)DMA2_Channel1)) << 2U; + hdma->DmaBaseAddress = DMA2; + } +#else + hdma->ChannelIndex = (((uint32_t)hdma->Instance - (uint32_t)DMA1_Channel1) / ((uint32_t)DMA1_Channel2 - (uint32_t)DMA1_Channel1)) << 2U; +#endif /* DMA2 */ + + /* Reset DMA Channel control register */ + hdma->Instance->CCR = 0U; + + /* Clear all flags */ +#if defined(DMA2) + hdma->DmaBaseAddress->IFCR = (DMA_ISR_GIF1 << (hdma->ChannelIndex & 0x1CU)); +#else + __HAL_DMA_CLEAR_FLAG(hdma, (DMA_FLAG_GI1 << (hdma->ChannelIndex & 0x1CU))); +#endif /* DMA2 */ + + /* Initialize parameters for DMAMUX channel : + DMAmuxChannel, DMAmuxChannelStatus and DMAmuxChannelStatusMask */ + + DMA_CalcDMAMUXChannelBaseAndMask(hdma); + + /* Reset the DMAMUX channel that corresponds to the DMA channel */ + hdma->DMAmuxChannel->CCR = 0U; + + /* Clear the DMAMUX synchro overrun flag */ + hdma->DMAmuxChannelStatus->CFR = hdma->DMAmuxChannelStatusMask; + + /* Reset Request generator parameters if any */ + if (((hdma->Init.Request > 0UL) && (hdma->Init.Request <= DMA_REQUEST_GENERATOR3))) + { + /* Initialize parameters for DMAMUX request generator : + DMAmuxRequestGen, DMAmuxRequestGenStatus and DMAmuxRequestGenStatusMask + */ + DMA_CalcDMAMUXRequestGenBaseAndMask(hdma); + + /* Reset the DMAMUX request generator register*/ + hdma->DMAmuxRequestGen->RGCR = 0U; + + /* Clear the DMAMUX request generator overrun flag */ + hdma->DMAmuxRequestGenStatus->RGCFR = hdma->DMAmuxRequestGenStatusMask; + } + + hdma->DMAmuxRequestGen = 0U; + hdma->DMAmuxRequestGenStatus = 0U; + hdma->DMAmuxRequestGenStatusMask = 0U; + + /* Clean callbacks */ + hdma->XferCpltCallback = NULL; + hdma->XferHalfCpltCallback = NULL; + hdma->XferErrorCallback = NULL; + hdma->XferAbortCallback = NULL; + + /* Initialize the error code */ + hdma->ErrorCode = HAL_DMA_ERROR_NONE; + + /* Initialize the DMA state */ + hdma->State = HAL_DMA_STATE_RESET; + + /* Release Lock */ + __HAL_UNLOCK(hdma); + + return HAL_OK; +} + +/** + * @} + */ + +/** @defgroup DMA_Exported_Functions_Group2 Input and Output operation functions + * @brief Input and Output operation functions + * +@verbatim + =============================================================================== + ##### IO operation functions ##### + =============================================================================== + [..] This section provides functions allowing to: + (+) Configure the source, destination address and data length and Start DMA transfer + (+) Configure the source, destination address and data length and + Start DMA transfer with interrupt + (+) Abort DMA transfer + (+) Poll for transfer complete + (+) Handle DMA interrupt request + (+) Register and Unregister DMA callbacks + +@endverbatim + * @{ + */ + +/** + * @brief Start the DMA Transfer. + * @param hdma Pointer to a DMA_HandleTypeDef structure that contains + * the configuration information for the specified DMA Channel. + * @param SrcAddress The source memory Buffer address + * @param DstAddress The destination memory Buffer address + * @param DataLength The length of data to be transferred from source to destination + * @retval HAL status + */ +HAL_StatusTypeDef HAL_DMA_Start(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Check the parameters */ + assert_param(IS_DMA_BUFFER_SIZE(DataLength)); + + /* Process locked */ + __HAL_LOCK(hdma); + + if (hdma->State == HAL_DMA_STATE_READY) + { + /* Change DMA peripheral state */ + hdma->State = HAL_DMA_STATE_BUSY; + + /* Initialize the error code */ + hdma->ErrorCode = HAL_DMA_ERROR_NONE; + + /* Disable the peripheral */ + __HAL_DMA_DISABLE(hdma); + + /* Configure the source, destination address and the data length & clear flags*/ + DMA_SetConfig(hdma, SrcAddress, DstAddress, DataLength); + + /* Enable the Peripheral */ + __HAL_DMA_ENABLE(hdma); + } + else + { + /* Change the error code */ + hdma->ErrorCode = HAL_DMA_ERROR_BUSY; + + /* Process Unlocked */ + __HAL_UNLOCK(hdma); + + /* Return error status */ + status = HAL_ERROR; + } + + return status; +} + +/** + * @brief Start the DMA Transfer with interrupt enabled. + * @param hdma Pointer to a DMA_HandleTypeDef structure that contains + * the configuration information for the specified DMA Channel. + * @param SrcAddress The source memory Buffer address + * @param DstAddress The destination memory Buffer address + * @param DataLength The length of data to be transferred from source to destination + * @retval HAL status + */ +HAL_StatusTypeDef HAL_DMA_Start_IT(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, + uint32_t DataLength) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Check the parameters */ + assert_param(IS_DMA_BUFFER_SIZE(DataLength)); + + /* Process locked */ + __HAL_LOCK(hdma); + + if (hdma->State == HAL_DMA_STATE_READY) + { + /* Change DMA peripheral state */ + hdma->State = HAL_DMA_STATE_BUSY; + hdma->ErrorCode = HAL_DMA_ERROR_NONE; + + /* Disable the peripheral */ + __HAL_DMA_DISABLE(hdma); + + /* Configure the source, destination address and the data length & clear flags*/ + DMA_SetConfig(hdma, SrcAddress, DstAddress, DataLength); + + /* Enable the transfer complete interrupt */ + /* Enable the transfer Error interrupt */ + if (NULL != hdma->XferHalfCpltCallback) + { + /* Enable the Half transfer complete interrupt as well */ + __HAL_DMA_ENABLE_IT(hdma, (DMA_IT_TC | DMA_IT_HT | DMA_IT_TE)); + } + else + { + __HAL_DMA_DISABLE_IT(hdma, DMA_IT_HT); + __HAL_DMA_ENABLE_IT(hdma, (DMA_IT_TC | DMA_IT_TE)); + } + + /* Check if DMAMUX Synchronization is enabled*/ + if ((hdma->DMAmuxChannel->CCR & DMAMUX_CxCR_SE) != 0U) + { + /* Enable DMAMUX sync overrun IT*/ + hdma->DMAmuxChannel->CCR |= DMAMUX_CxCR_SOIE; + } + + if (hdma->DMAmuxRequestGen != 0U) + { + /* if using DMAMUX request generator, enable the DMAMUX request generator overrun IT*/ + /* enable the request gen overrun IT*/ + hdma->DMAmuxRequestGen->RGCR |= DMAMUX_RGxCR_OIE; + } + + /* Enable the Peripheral */ + __HAL_DMA_ENABLE(hdma); + } + else + { + /* Change the error code */ + hdma->ErrorCode = HAL_DMA_ERROR_BUSY; + + /* Process Unlocked */ + __HAL_UNLOCK(hdma); + + /* Return error status */ + status = HAL_ERROR; + } + + return status; +} + +/** + * @brief Abort the DMA Transfer. + * @param hdma Pointer to a DMA_HandleTypeDef structure that contains + * the configuration information for the specified DMA Channel. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_DMA_Abort(DMA_HandleTypeDef *hdma) +{ + /* Check the DMA peripheral handle */ + if (NULL == hdma) + { + return HAL_ERROR; + } + + /* Check the DMA peripheral state */ + if (hdma->State != HAL_DMA_STATE_BUSY) + { + hdma->ErrorCode = HAL_DMA_ERROR_NO_XFER; + + /* Process Unlocked */ + __HAL_UNLOCK(hdma); + + return HAL_ERROR; + } + else + { + /* Disable DMA IT */ + __HAL_DMA_DISABLE_IT(hdma, (DMA_IT_TC | DMA_IT_HT | DMA_IT_TE)); + + /* disable the DMAMUX sync overrun IT*/ + hdma->DMAmuxChannel->CCR &= ~DMAMUX_CxCR_SOIE; + + /* Disable the channel */ + __HAL_DMA_DISABLE(hdma); + + /* Clear all flags */ +#if defined(DMA2) + hdma->DmaBaseAddress->IFCR = (DMA_ISR_GIF1 << (hdma->ChannelIndex & 0x1CU)); +#else + __HAL_DMA_CLEAR_FLAG(hdma, ((DMA_FLAG_GI1) << (hdma->ChannelIndex & 0x1CU))); +#endif /* DMA2 */ + + /* Clear the DMAMUX synchro overrun flag */ + hdma->DMAmuxChannelStatus->CFR = hdma->DMAmuxChannelStatusMask; + + if (hdma->DMAmuxRequestGen != 0U) + { + /* if using DMAMUX request generator, disable the DMAMUX request generator overrun IT*/ + /* disable the request gen overrun IT*/ + hdma->DMAmuxRequestGen->RGCR &= ~DMAMUX_RGxCR_OIE; + + /* Clear the DMAMUX request generator overrun flag */ + hdma->DMAmuxRequestGenStatus->RGCFR = hdma->DMAmuxRequestGenStatusMask; + } + + /* Change the DMA state */ + hdma->State = HAL_DMA_STATE_READY; + + /* Process Unlocked */ + __HAL_UNLOCK(hdma); + } + + return HAL_OK; +} + +/** + * @brief Aborts the DMA Transfer in Interrupt mode. + * @param hdma Pointer to a DMA_HandleTypeDef structure that contains + * the configuration information for the specified DMA Channel. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_DMA_Abort_IT(DMA_HandleTypeDef *hdma) +{ + HAL_StatusTypeDef status = HAL_OK; + + if (hdma->State != HAL_DMA_STATE_BUSY) + { + /* no transfer ongoing */ + hdma->ErrorCode = HAL_DMA_ERROR_NO_XFER; + + status = HAL_ERROR; + } + else + { + /* Disable DMA IT */ + __HAL_DMA_DISABLE_IT(hdma, (DMA_IT_TC | DMA_IT_HT | DMA_IT_TE)); + + /* Disable the channel */ + __HAL_DMA_DISABLE(hdma); + + /* disable the DMAMUX sync overrun IT*/ + hdma->DMAmuxChannel->CCR &= ~DMAMUX_CxCR_SOIE; + + /* Clear all flags */ +#if defined(DMA2) + hdma->DmaBaseAddress->IFCR = (DMA_ISR_GIF1 << (hdma->ChannelIndex & 0x1CU)); +#else + __HAL_DMA_CLEAR_FLAG(hdma, ((DMA_FLAG_GI1) << (hdma->ChannelIndex & 0x1CU))); +#endif /* DMA2 */ + + /* Clear the DMAMUX synchro overrun flag */ + hdma->DMAmuxChannelStatus->CFR = hdma->DMAmuxChannelStatusMask; + + if (hdma->DMAmuxRequestGen != 0U) + { + /* if using DMAMUX request generator, disable the DMAMUX request generator overrun IT*/ + /* disable the request gen overrun IT*/ + hdma->DMAmuxRequestGen->RGCR &= ~DMAMUX_RGxCR_OIE; + + /* Clear the DMAMUX request generator overrun flag */ + hdma->DMAmuxRequestGenStatus->RGCFR = hdma->DMAmuxRequestGenStatusMask; + } + + /* Change the DMA state */ + hdma->State = HAL_DMA_STATE_READY; + + /* Process Unlocked */ + __HAL_UNLOCK(hdma); + + /* Call User Abort callback */ + if (hdma->XferAbortCallback != NULL) + { + hdma->XferAbortCallback(hdma); + } + } + return status; +} + +/** + * @brief Polling for transfer complete. + * @param hdma Pointer to a DMA_HandleTypeDef structure that contains + * the configuration information for the specified DMA Channel. + * @param CompleteLevel Specifies the DMA level complete. + * @param Timeout Timeout duration. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_DMA_PollForTransfer(DMA_HandleTypeDef *hdma, HAL_DMA_LevelCompleteTypeDef CompleteLevel, + uint32_t Timeout) +{ + uint32_t temp; + uint32_t tickstart; + + if (hdma->State != HAL_DMA_STATE_BUSY) + { + /* no transfer ongoing */ + hdma->ErrorCode = HAL_DMA_ERROR_NO_XFER; + __HAL_UNLOCK(hdma); + return HAL_ERROR; + } + + /* Polling mode not supported in circular mode */ + if ((hdma->Instance->CCR & DMA_CCR_CIRC) != 0U) + { + hdma->ErrorCode = HAL_DMA_ERROR_NOT_SUPPORTED; + return HAL_ERROR; + } + + /* Get the level transfer complete flag */ + if (HAL_DMA_FULL_TRANSFER == CompleteLevel) + { + /* Transfer Complete flag */ + temp = DMA_FLAG_TC1 << (hdma->ChannelIndex & 0x1CU); + } + else + { + /* Half Transfer Complete flag */ + temp = DMA_FLAG_HT1 << (hdma->ChannelIndex & 0x1CU); + } + + /* Get tick */ + tickstart = HAL_GetTick(); + +#if defined(DMA2) + while ((hdma->DmaBaseAddress->ISR & temp) == 0U) + { + if ((hdma->DmaBaseAddress->ISR & (DMA_FLAG_TE1 << (hdma->ChannelIndex & 0x1CU))) != 0U) + { + /* When a DMA transfer error occurs */ + /* A hardware clear of its EN bits is performed */ + /* Clear all flags */ + hdma->DmaBaseAddress->IFCR = (DMA_ISR_GIF1 << (hdma->ChannelIndex & 0x1CU)); + + /* Update error code */ + hdma->ErrorCode = HAL_DMA_ERROR_TE; + + /* Change the DMA state */ + hdma->State = HAL_DMA_STATE_READY; + + /* Process Unlocked */ + __HAL_UNLOCK(hdma); + + return HAL_ERROR; + } +#else + while (0U == __HAL_DMA_GET_FLAG(hdma, temp)) + { + if (0U != __HAL_DMA_GET_FLAG(hdma, (DMA_FLAG_TE1 << (hdma->ChannelIndex & 0x1CU)))) + { + /* When a DMA transfer error occurs */ + /* A hardware clear of its EN bits is performed */ + /* Clear all flags */ + __HAL_DMA_CLEAR_FLAG(hdma, ((DMA_FLAG_GI1) << (hdma->ChannelIndex & 0x1CU))); + + /* Update error code */ + hdma->ErrorCode = HAL_DMA_ERROR_TE; + + /* Change the DMA state */ + hdma->State = HAL_DMA_STATE_READY; + + /* Process Unlocked */ + __HAL_UNLOCK(hdma); + + return HAL_ERROR; + } +#endif /* DMA2 */ + /* Check for the Timeout */ + if (Timeout != HAL_MAX_DELAY) + { + if (((HAL_GetTick() - tickstart) > Timeout) || (Timeout == 0U)) + { + /* Update error code */ + hdma->ErrorCode = HAL_DMA_ERROR_TIMEOUT; + + /* Change the DMA state */ + hdma->State = HAL_DMA_STATE_READY; + + /* Process Unlocked */ + __HAL_UNLOCK(hdma); + + return HAL_ERROR; + } + } + } + + /*Check for DMAMUX Request generator (if used) overrun status */ + if (hdma->DMAmuxRequestGen != 0U) + { + /* if using DMAMUX request generator Check for DMAMUX request generator overrun */ + if ((hdma->DMAmuxRequestGenStatus->RGSR & hdma->DMAmuxRequestGenStatusMask) != 0U) + { + /* Disable the request gen overrun interrupt */ + hdma->DMAmuxRequestGen->RGCR |= DMAMUX_RGxCR_OIE; + + /* Clear the DMAMUX request generator overrun flag */ + hdma->DMAmuxRequestGenStatus->RGCFR = hdma->DMAmuxRequestGenStatusMask; + + /* Update error code */ + hdma->ErrorCode |= HAL_DMA_ERROR_REQGEN; + } + } + + /* Check for DMAMUX Synchronization overrun */ + if ((hdma->DMAmuxChannelStatus->CSR & hdma->DMAmuxChannelStatusMask) != 0U) + { + /* Clear the DMAMUX synchro overrun flag */ + hdma->DMAmuxChannelStatus->CFR = hdma->DMAmuxChannelStatusMask; + + /* Update error code */ + hdma->ErrorCode |= HAL_DMA_ERROR_SYNC; + } + + if (HAL_DMA_FULL_TRANSFER == CompleteLevel) + { + /* Clear the transfer complete flag */ +#if defined(DMA2) + hdma->DmaBaseAddress->IFCR = (DMA_FLAG_TC1 << (hdma->ChannelIndex & 0x1CU)); +#else + __HAL_DMA_CLEAR_FLAG(hdma, (DMA_FLAG_TC1 << (hdma->ChannelIndex & 0x1CU))); +#endif /* DMA2 */ + + /* Process unlocked */ + __HAL_UNLOCK(hdma); + + /* The selected Channelx EN bit is cleared (DMA is disabled and + all transfers are complete) */ + hdma->State = HAL_DMA_STATE_READY; + } + else + { + /* Clear the half transfer complete flag */ +#if defined(DMA2) + hdma->DmaBaseAddress->IFCR = (DMA_FLAG_HT1 << (hdma->ChannelIndex & 0x1CU)); +#else + __HAL_DMA_CLEAR_FLAG(hdma, (DMA_FLAG_HT1 << (hdma->ChannelIndex & 0x1CU))); +#endif /* DMA2 */ + } + + return HAL_OK; +} + +/** + * @brief Handle DMA interrupt request. + * @param hdma Pointer to a DMA_HandleTypeDef structure that contains + * the configuration information for the specified DMA Channel. + * @retval None + */ +void HAL_DMA_IRQHandler(DMA_HandleTypeDef *hdma) +{ +#if defined(DMA2) + uint32_t flag_it = hdma->DmaBaseAddress->ISR; +#else + uint32_t flag_it = DMA1->ISR; +#endif /* DMA2 */ + uint32_t source_it = hdma->Instance->CCR; + + /* Half Transfer Complete Interrupt management ******************************/ + if (((flag_it & (DMA_FLAG_HT1 << (hdma->ChannelIndex & 0x1CU))) != 0U) && ((source_it & DMA_IT_HT) != 0U)) + { + /* Disable the half transfer interrupt if the DMA mode is not CIRCULAR */ + if ((hdma->Instance->CCR & DMA_CCR_CIRC) == 0U) + { + /* Disable the half transfer interrupt */ + __HAL_DMA_DISABLE_IT(hdma, DMA_IT_HT); + } + /* Clear the half transfer complete flag */ +#if defined(DMA2) + hdma->DmaBaseAddress->IFCR = DMA_ISR_HTIF1 << (hdma->ChannelIndex & 0x1CU); +#else + __HAL_DMA_CLEAR_FLAG(hdma, (DMA_FLAG_HT1 << (hdma->ChannelIndex & 0x1CU))); +#endif /* DMA2 */ + + /* DMA peripheral state is not updated in Half Transfer */ + /* but in Transfer Complete case */ + + if (hdma->XferHalfCpltCallback != NULL) + { + /* Half transfer callback */ + hdma->XferHalfCpltCallback(hdma); + } + } + + /* Transfer Complete Interrupt management ***********************************/ + else if ((0U != (flag_it & (DMA_FLAG_TC1 << (hdma->ChannelIndex & 0x1CU)))) && (0U != (source_it & DMA_IT_TC))) + { + if ((hdma->Instance->CCR & DMA_CCR_CIRC) == 0U) + { + /* Disable the transfer complete and error interrupt */ + __HAL_DMA_DISABLE_IT(hdma, DMA_IT_TE | DMA_IT_TC); + + /* Change the DMA state */ + hdma->State = HAL_DMA_STATE_READY; + } + /* Clear the transfer complete flag */ + __HAL_DMA_CLEAR_FLAG(hdma, (DMA_FLAG_TC1 << (hdma->ChannelIndex & 0x1CU))); + + /* Process Unlocked */ + __HAL_UNLOCK(hdma); + + if (hdma->XferCpltCallback != NULL) + { + /* Transfer complete callback */ + hdma->XferCpltCallback(hdma); + } + } + + /* Transfer Error Interrupt management **************************************/ + else if (((flag_it & (DMA_FLAG_TE1 << (hdma->ChannelIndex & 0x1CU))) != 0U) && ((source_it & DMA_IT_TE) != 0U)) + { + /* When a DMA transfer error occurs */ + /* A hardware clear of its EN bits is performed */ + /* Disable ALL DMA IT */ + __HAL_DMA_DISABLE_IT(hdma, (DMA_IT_TC | DMA_IT_HT | DMA_IT_TE)); + + /* Clear all flags */ +#if defined(DMA2) + hdma->DmaBaseAddress->IFCR = (DMA_ISR_GIF1 << (hdma->ChannelIndex & 0x1CU)); +#else + __HAL_DMA_CLEAR_FLAG(hdma, (DMA_FLAG_GI1 << (hdma->ChannelIndex & 0x1CU))); +#endif /* DMA2 */ + + /* Update error code */ + hdma->ErrorCode = HAL_DMA_ERROR_TE; + + /* Change the DMA state */ + hdma->State = HAL_DMA_STATE_READY; + + /* Process Unlocked */ + __HAL_UNLOCK(hdma); + + if (hdma->XferErrorCallback != NULL) + { + /* Transfer error callback */ + hdma->XferErrorCallback(hdma); + } + } + else + { + /* Nothing To Do */ + } + return; +} + +/** + * @brief Register callbacks + * @param hdma Pointer to a DMA_HandleTypeDef structure that contains + * the configuration information for the specified DMA Channel. + * @param CallbackID User Callback identifier + * a HAL_DMA_CallbackIDTypeDef ENUM as parameter. + * @param pCallback Pointer to private callback function which has pointer to + * a DMA_HandleTypeDef structure as parameter. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_DMA_RegisterCallback(DMA_HandleTypeDef *hdma, HAL_DMA_CallbackIDTypeDef CallbackID, void (* pCallback)(DMA_HandleTypeDef *_hdma)) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Process locked */ + __HAL_LOCK(hdma); + + if (hdma->State == HAL_DMA_STATE_READY) + { + switch (CallbackID) + { + case HAL_DMA_XFER_CPLT_CB_ID: + hdma->XferCpltCallback = pCallback; + break; + + case HAL_DMA_XFER_HALFCPLT_CB_ID: + hdma->XferHalfCpltCallback = pCallback; + break; + + case HAL_DMA_XFER_ERROR_CB_ID: + hdma->XferErrorCallback = pCallback; + break; + + case HAL_DMA_XFER_ABORT_CB_ID: + hdma->XferAbortCallback = pCallback; + break; + + default: + status = HAL_ERROR; + break; + } + } + else + { + status = HAL_ERROR; + } + + /* Release Lock */ + __HAL_UNLOCK(hdma); + + return status; +} + +/** + * @brief UnRegister callbacks + * @param hdma Pointer to a DMA_HandleTypeDef structure that contains + * the configuration information for the specified DMA Channel. + * @param CallbackID User Callback identifier + * a HAL_DMA_CallbackIDTypeDef ENUM as parameter. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_DMA_UnRegisterCallback(DMA_HandleTypeDef *hdma, HAL_DMA_CallbackIDTypeDef CallbackID) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Process locked */ + __HAL_LOCK(hdma); + + if (hdma->State == HAL_DMA_STATE_READY) + { + switch (CallbackID) + { + case HAL_DMA_XFER_CPLT_CB_ID: + hdma->XferCpltCallback = NULL; + break; + + case HAL_DMA_XFER_HALFCPLT_CB_ID: + hdma->XferHalfCpltCallback = NULL; + break; + + case HAL_DMA_XFER_ERROR_CB_ID: + hdma->XferErrorCallback = NULL; + break; + + case HAL_DMA_XFER_ABORT_CB_ID: + hdma->XferAbortCallback = NULL; + break; + + case HAL_DMA_XFER_ALL_CB_ID: + hdma->XferCpltCallback = NULL; + hdma->XferHalfCpltCallback = NULL; + hdma->XferErrorCallback = NULL; + hdma->XferAbortCallback = NULL; + break; + + default: + status = HAL_ERROR; + break; + } + } + else + { + status = HAL_ERROR; + } + + /* Release Lock */ + __HAL_UNLOCK(hdma); + + return status; +} + +/** + * @} + */ + + + +/** @defgroup DMA_Exported_Functions_Group3 Peripheral State and Errors functions + * @brief Peripheral State and Errors functions + * +@verbatim + =============================================================================== + ##### Peripheral State and Errors functions ##### + =============================================================================== + [..] + This subsection provides functions allowing to + (+) Check the DMA state + (+) Get error code + +@endverbatim + * @{ + */ + +/** + * @brief Return the DMA handle state. + * @param hdma Pointer to a DMA_HandleTypeDef structure that contains + * the configuration information for the specified DMA Channel. + * @retval HAL state + */ +HAL_DMA_StateTypeDef HAL_DMA_GetState(DMA_HandleTypeDef *hdma) +{ + /* Return DMA handle state */ + return hdma->State; +} + +/** + * @brief Return the DMA error code. + * @param hdma Pointer to a DMA_HandleTypeDef structure that contains + * the configuration information for the specified DMA Channel. + * @retval DMA Error Code + */ +uint32_t HAL_DMA_GetError(DMA_HandleTypeDef *hdma) +{ + /* Return the DMA error code */ + return hdma->ErrorCode; +} + +/** + * @} + */ + +/** + * @} + */ + +/** @addtogroup DMA_Private_Functions + * @{ + */ + +/** + * @brief Sets the DMA Transfer parameter. + * @param hdma Pointer to a DMA_HandleTypeDef structure that contains + * the configuration information for the specified DMA Channel. + * @param SrcAddress The source memory Buffer address + * @param DstAddress The destination memory Buffer address + * @param DataLength The length of data to be transferred from source to destination + * @retval HAL status + */ +static void DMA_SetConfig(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength) +{ + /* Clear the DMAMUX synchro overrun flag */ + hdma->DMAmuxChannelStatus->CFR = hdma->DMAmuxChannelStatusMask; + + if (hdma->DMAmuxRequestGen != 0U) + { + /* Clear the DMAMUX request generator overrun flag */ + hdma->DMAmuxRequestGenStatus->RGCFR = hdma->DMAmuxRequestGenStatusMask; + } + + /* Clear all flags */ +#if defined(DMA2) + hdma->DmaBaseAddress->IFCR = (DMA_ISR_GIF1 << (hdma->ChannelIndex & 0x1CU)); +#else + __HAL_DMA_CLEAR_FLAG(hdma, (DMA_FLAG_GI1 << (hdma->ChannelIndex & 0x1CU))); +#endif /* DMA2 */ + + /* Configure DMA Channel data length */ + hdma->Instance->CNDTR = DataLength; + + /* Memory to Peripheral */ + if ((hdma->Init.Direction) == DMA_MEMORY_TO_PERIPH) + { + /* Configure DMA Channel destination address */ + hdma->Instance->CPAR = DstAddress; + + /* Configure DMA Channel source address */ + hdma->Instance->CMAR = SrcAddress; + } + /* Peripheral to Memory */ + else + { + /* Configure DMA Channel source address */ + hdma->Instance->CPAR = SrcAddress; + + /* Configure DMA Channel destination address */ + hdma->Instance->CMAR = DstAddress; + } +} + +/** + * @brief Updates the DMA handle with the DMAMUX channel and status mask depending on channel number + * @param hdma Pointer to a DMA_HandleTypeDef structure that contains + * the configuration information for the specified DMA Channel. + * @retval None + */ +static void DMA_CalcDMAMUXChannelBaseAndMask(DMA_HandleTypeDef *hdma) +{ + uint32_t channel_number; + +#if defined(DMA2) + /* check if instance is not outside the DMA channel range */ + if ((uint32_t)hdma->Instance < (uint32_t)DMA2_Channel1) + { + /* DMA1 */ + /* Associate a DMA Channel to a DMAMUX channel */ + hdma->DMAmuxChannel = (DMAMUX1_Channel0 + (hdma->ChannelIndex >> 2U)); + + /* Prepare channel_number used for DMAmuxChannelStatusMask computation */ + channel_number = (((uint32_t)hdma->Instance & 0xFFU) - 8U) / 20U; + } + else + { + /* DMA2 */ + /* Associate a DMA Channel to a DMAMUX channel */ + hdma->DMAmuxChannel = (DMAMUX1_Channel7 + (hdma->ChannelIndex >> 2U)); + + /* Prepare channel_number used for DMAmuxChannelStatusMask computation */ + channel_number = (((((uint32_t)hdma->Instance & 0xFFU) - 8U) / 20U) + 7U); + } +#else + /* Associate a DMA Channel to a DMAMUX channel */ + hdma->DMAmuxChannel = (DMAMUX_Channel_TypeDef *)(uint32_t)((uint32_t)DMAMUX1_Channel0 + ((hdma->ChannelIndex >> 2U) * ((uint32_t)DMAMUX1_Channel1 - (uint32_t)DMAMUX1_Channel0))); + + /* Prepare channel_number used for DMAmuxChannelStatusMask computation */ + channel_number = (((uint32_t)hdma->Instance & 0xFFU) - 8U) / 20U; +#endif /* DMA2 */ + + /* Initialize the field DMAmuxChannelStatus to DMAMUX1_ChannelStatus base */ + hdma->DMAmuxChannelStatus = DMAMUX1_ChannelStatus; + + /* Initialize the field DMAmuxChannelStatusMask with the corresponding index of the DMAMUX channel selected for the current ChannelIndex */ + hdma->DMAmuxChannelStatusMask = 1UL << (channel_number & 0x1FU); +} + +/** + * @brief Updates the DMA handle with the DMAMUX request generator params + * @param hdma Pointer to a DMA_HandleTypeDef structure that contains + * the configuration information for the specified DMA Channel. + * @retval None + */ + +static void DMA_CalcDMAMUXRequestGenBaseAndMask(DMA_HandleTypeDef *hdma) +{ + uint32_t request = hdma->Init.Request & DMAMUX_CxCR_DMAREQ_ID; + + /* DMA Channels are connected to DMAMUX1 request generator blocks*/ + hdma->DMAmuxRequestGen = (DMAMUX_RequestGen_TypeDef *)((uint32_t)(((uint32_t)DMAMUX1_RequestGenerator0) + ((request - 1U) * 4U))); + + hdma->DMAmuxRequestGenStatus = DMAMUX1_RequestGenStatus; + + /* here "Request" is either DMA_REQUEST_GENERATOR0 to DMA_REQUEST_GENERATOR3, i.e. <= 4*/ + hdma->DMAmuxRequestGenStatusMask = 1UL << ((request - 1U) & 0x3U); +} + +/** + * @} + */ + +/** + * @} + */ + +#endif /* HAL_DMA_MODULE_ENABLED */ +/** + * @} + */ + +/** + * @} + */ + diff --git a/firmware/Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_dma_ex.c b/firmware/Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_dma_ex.c new file mode 100644 index 0000000..28309c9 --- /dev/null +++ b/firmware/Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_dma_ex.c @@ -0,0 +1,320 @@ +/** + ****************************************************************************** + * @file stm32g0xx_hal_dma_ex.c + * @author MCD Application Team + * @brief DMA Extension HAL module driver + * This file provides firmware functions to manage the following + * functionalities of the DMA Extension peripheral: + * + Extended features functions + * + @verbatim + ============================================================================== + ##### How to use this driver ##### + ============================================================================== + [..] + The DMA Extension HAL driver can be used as follows: + (+) Configure the DMAMUX Synchronization Block using HAL_DMAEx_ConfigMuxSync function. + (+) Configure the DMAMUX Request Generator Block using HAL_DMAEx_ConfigMuxRequestGenerator function. + Functions HAL_DMAEx_EnableMuxRequestGenerator and HAL_DMAEx_DisableMuxRequestGenerator can then be used + to respectively enable/disable the request generator. + + (+) To handle the DMAMUX Interrupts, the function HAL_DMAEx_MUX_IRQHandler should be called from + the DMAMUX IRQ handler i.e DMAMUX1_OVR_IRQHandler. + As only one interrupt line is available for all DMAMUX channels and request generators , HAL_DMAEx_MUX_IRQHandler should be + called with, as parameter, the appropriate DMA handle as many as used DMAs in the user project + (exception done if a given DMA is not using the DMAMUX SYNC block neither a request generator) + + @endverbatim + ****************************************************************************** + * @attention + * + * Copyright (c) 2018 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32g0xx_hal.h" + +/** @addtogroup STM32G0xx_HAL_Driver + * @{ + */ + +/** @defgroup DMAEx DMAEx + * @brief DMA Extended HAL module driver + * @{ + */ + +#ifdef HAL_DMA_MODULE_ENABLED + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/* Private macro -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private Constants ---------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ +/* Exported functions --------------------------------------------------------*/ + + +/** @defgroup DMAEx_Exported_Functions DMAEx Exported Functions + * @{ + */ + +/** @defgroup DMAEx_Exported_Functions_Group1 DMAEx Extended features functions + * @brief Extended features functions + * +@verbatim + =============================================================================== + ##### Extended features functions ##### + =============================================================================== + [..] This section provides functions allowing to: + + (+) Configure the DMAMUX Synchronization Block using HAL_DMAEx_ConfigMuxSync function. + (+) Configure the DMAMUX Request Generator Block using HAL_DMAEx_ConfigMuxRequestGenerator function. + Functions HAL_DMAEx_EnableMuxRequestGenerator and HAL_DMAEx_DisableMuxRequestGenerator can then be used + to respectively enable/disable the request generator. + (+) Handle DMAMUX interrupts using HAL_DMAEx_MUX_IRQHandler : should be called from + the DMAMUX IRQ handler + +@endverbatim + * @{ + */ + +/** + * @brief Configure the DMAMUX synchronization parameters for a given DMA channel (instance). + * @param hdma Pointer to a DMA_HandleTypeDef structure that contains + * the configuration information for the specified DMA channel. + * @param pSyncConfig Pointer to HAL_DMA_MuxSyncConfigTypeDef contains the DMAMUX synchronization parameters + * @retval HAL status + */ +HAL_StatusTypeDef HAL_DMAEx_ConfigMuxSync(DMA_HandleTypeDef *hdma, HAL_DMA_MuxSyncConfigTypeDef *pSyncConfig) +{ + /* Check the parameters */ + assert_param(IS_DMA_ALL_INSTANCE(hdma->Instance)); + + assert_param(IS_DMAMUX_SYNC_SIGNAL_ID(pSyncConfig->SyncSignalID)); + + assert_param(IS_DMAMUX_SYNC_POLARITY(pSyncConfig-> SyncPolarity)); + assert_param(IS_DMAMUX_SYNC_STATE(pSyncConfig->SyncEnable)); + assert_param(IS_DMAMUX_SYNC_EVENT(pSyncConfig->EventEnable)); + assert_param(IS_DMAMUX_SYNC_REQUEST_NUMBER(pSyncConfig->RequestNumber)); + + /*Check if the DMA state is ready */ + if (hdma->State == HAL_DMA_STATE_READY) + { + /* Process Locked */ + __HAL_LOCK(hdma); + + /* Set the new synchronization parameters (and keep the request ID filled during the Init)*/ + MODIFY_REG(hdma->DMAmuxChannel->CCR, \ + (~DMAMUX_CxCR_DMAREQ_ID), \ + (pSyncConfig->SyncSignalID | ((pSyncConfig->RequestNumber - 1U) << DMAMUX_CxCR_NBREQ_Pos) | \ + pSyncConfig->SyncPolarity | ((uint32_t)pSyncConfig->SyncEnable << DMAMUX_CxCR_SE_Pos) | \ + ((uint32_t)pSyncConfig->EventEnable << DMAMUX_CxCR_EGE_Pos))); + + /* Process UnLocked */ + __HAL_UNLOCK(hdma); + + return HAL_OK; + } + else + { + /* Set the error code to busy */ + hdma->ErrorCode = HAL_DMA_ERROR_BUSY; + + /* Return error status */ + return HAL_ERROR; + } +} + +/** + * @brief Configure the DMAMUX request generator block used by the given DMA channel (instance). + * @param hdma Pointer to a DMA_HandleTypeDef structure that contains + * the configuration information for the specified DMA channel. + * @param pRequestGeneratorConfig Pointer to HAL_DMA_MuxRequestGeneratorConfigTypeDef + * contains the request generator parameters. + * + * @retval HAL status + */ +HAL_StatusTypeDef HAL_DMAEx_ConfigMuxRequestGenerator(DMA_HandleTypeDef *hdma, + HAL_DMA_MuxRequestGeneratorConfigTypeDef *pRequestGeneratorConfig) +{ + HAL_StatusTypeDef status; + HAL_DMA_StateTypeDef temp_state = hdma->State; + + /* Check the parameters */ + assert_param(IS_DMA_ALL_INSTANCE(hdma->Instance)); + + assert_param(IS_DMAMUX_REQUEST_GEN_SIGNAL_ID(pRequestGeneratorConfig->SignalID)); + + assert_param(IS_DMAMUX_REQUEST_GEN_POLARITY(pRequestGeneratorConfig->Polarity)); + assert_param(IS_DMAMUX_REQUEST_GEN_REQUEST_NUMBER(pRequestGeneratorConfig->RequestNumber)); + + /* check if the DMA state is ready + and DMA is using a DMAMUX request generator block + */ + if (hdma->DMAmuxRequestGen == 0U) + { + /* Set the error code to busy */ + hdma->ErrorCode = HAL_DMA_ERROR_PARAM; + + /* error status */ + status = HAL_ERROR; + } + else if (((hdma->DMAmuxRequestGen->RGCR & DMAMUX_RGxCR_GE) == 0U) && (temp_state == HAL_DMA_STATE_READY)) + { + /* RequestGenerator must be disable prior to the configuration i.e GE bit is 0 */ + + /* Process Locked */ + __HAL_LOCK(hdma); + + /* Set the request generator new parameters*/ + hdma->DMAmuxRequestGen->RGCR = pRequestGeneratorConfig->SignalID | \ + ((pRequestGeneratorConfig->RequestNumber - 1U) << DMAMUX_RGxCR_GNBREQ_Pos) | \ + pRequestGeneratorConfig->Polarity; + /* Process UnLocked */ + __HAL_UNLOCK(hdma); + + return HAL_OK; + } + else + { + /* Set the error code to busy */ + hdma->ErrorCode = HAL_DMA_ERROR_BUSY; + + /* error status */ + status = HAL_ERROR; + } + + return status; +} + +/** + * @brief Enable the DMAMUX request generator block used by the given DMA channel (instance). + * @param hdma Pointer to a DMA_HandleTypeDef structure that contains + * the configuration information for the specified DMA channel. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_DMAEx_EnableMuxRequestGenerator(DMA_HandleTypeDef *hdma) +{ + /* Check the parameters */ + assert_param(IS_DMA_ALL_INSTANCE(hdma->Instance)); + + /* check if the DMA state is ready + and DMA is using a DMAMUX request generator block + */ + if ((hdma->State != HAL_DMA_STATE_RESET) && (hdma->DMAmuxRequestGen != 0)) + { + + /* Enable the request generator*/ + hdma->DMAmuxRequestGen->RGCR |= DMAMUX_RGxCR_GE; + + return HAL_OK; + } + else + { + return HAL_ERROR; + } +} + +/** + * @brief Disable the DMAMUX request generator block used by the given DMA channel (instance). + * @param hdma Pointer to a DMA_HandleTypeDef structure that contains + * the configuration information for the specified DMA channel. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_DMAEx_DisableMuxRequestGenerator(DMA_HandleTypeDef *hdma) +{ + /* Check the parameters */ + assert_param(IS_DMA_ALL_INSTANCE(hdma->Instance)); + + /* check if the DMA state is ready + and DMA is using a DMAMUX request generator block + */ + if ((hdma->State != HAL_DMA_STATE_RESET) && (hdma->DMAmuxRequestGen != 0)) + { + + /* Disable the request generator*/ + hdma->DMAmuxRequestGen->RGCR &= ~DMAMUX_RGxCR_GE; + + return HAL_OK; + } + else + { + return HAL_ERROR; + } +} + +/** + * @brief Handles DMAMUX interrupt request. + * @param hdma Pointer to a DMA_HandleTypeDef structure that contains + * the configuration information for the specified DMA channel. + * @retval None + */ +void HAL_DMAEx_MUX_IRQHandler(DMA_HandleTypeDef *hdma) +{ + /* Check for DMAMUX Synchronization overrun */ + if ((hdma->DMAmuxChannelStatus->CSR & hdma->DMAmuxChannelStatusMask) != 0U) + { + /* Disable the synchro overrun interrupt */ + hdma->DMAmuxChannel->CCR &= ~DMAMUX_CxCR_SOIE; + + /* Clear the DMAMUX synchro overrun flag */ + hdma->DMAmuxChannelStatus->CFR = hdma->DMAmuxChannelStatusMask; + + /* Update error code */ + hdma->ErrorCode |= HAL_DMA_ERROR_SYNC; + + if (hdma->XferErrorCallback != NULL) + { + /* Transfer error callback */ + hdma->XferErrorCallback(hdma); + } + } + + if (hdma->DMAmuxRequestGen != 0) + { + /* if using a DMAMUX request generator block Check for DMAMUX request generator overrun */ + if ((hdma->DMAmuxRequestGenStatus->RGSR & hdma->DMAmuxRequestGenStatusMask) != 0U) + { + /* Disable the request gen overrun interrupt */ + hdma->DMAmuxRequestGen->RGCR &= ~DMAMUX_RGxCR_OIE; + + /* Clear the DMAMUX request generator overrun flag */ + hdma->DMAmuxRequestGenStatus->RGCFR = hdma->DMAmuxRequestGenStatusMask; + + /* Update error code */ + hdma->ErrorCode |= HAL_DMA_ERROR_REQGEN; + + if (hdma->XferErrorCallback != NULL) + { + /* Transfer error callback */ + hdma->XferErrorCallback(hdma); + } + } + } +} + +/** + * @} + */ + +/** + * @} + */ + +#endif /* HAL_DMA_MODULE_ENABLED */ +/** + * @} + */ + +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/firmware/Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_exti.c b/firmware/Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_exti.c new file mode 100644 index 0000000..b13cef3 --- /dev/null +++ b/firmware/Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_exti.c @@ -0,0 +1,670 @@ +/** + ****************************************************************************** + * @file stm32g0xx_hal_exti.c + * @author MCD Application Team + * @brief EXTI HAL module driver. + * This file provides firmware functions to manage the following + * functionalities of the General Purpose Input/Output (EXTI) peripheral: + * + Initialization and de-initialization functions + * + IO operation functions + * + ****************************************************************************** + * @attention + * + * Copyright (c) 2018 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + @verbatim + ============================================================================== + ##### EXTI Peripheral features ##### + ============================================================================== + [..] + (+) Each Exti line can be configured within this driver. + + (+) Exti line can be configured in 3 different modes + (++) Interrupt + (++) Event + (++) Both of them + + (+) Configurable Exti lines can be configured with 3 different triggers + (++) Rising + (++) Falling + (++) Both of them + + (+) When set in interrupt mode, configurable Exti lines have two diffenrents + interrupt pending registers which allow to distinguish which transition + occurs: + (++) Rising edge pending interrupt + (++) Falling + + (+) Exti lines 0 to 15 are linked to gpio pin number 0 to 15. Gpio port can + be selected through multiplexer. + + ##### How to use this driver ##### + ============================================================================== + [..] + + (#) Configure the EXTI line using HAL_EXTI_SetConfigLine(). + (++) Choose the interrupt line number by setting "Line" member from + EXTI_ConfigTypeDef structure. + (++) Configure the interrupt and/or event mode using "Mode" member from + EXTI_ConfigTypeDef structure. + (++) For configurable lines, configure rising and/or falling trigger + "Trigger" member from EXTI_ConfigTypeDef structure. + (++) For Exti lines linked to gpio, choose gpio port using "GPIOSel" + member from GPIO_InitTypeDef structure. + + (#) Get current Exti configuration of a dedicated line using + HAL_EXTI_GetConfigLine(). + (++) Provide exiting handle as parameter. + (++) Provide pointer on EXTI_ConfigTypeDef structure as second parameter. + + (#) Clear Exti configuration of a dedicated line using HAL_EXTI_GetConfigLine(). + (++) Provide exiting handle as parameter. + + (#) Register callback to treat Exti interrupts using HAL_EXTI_RegisterCallback(). + (++) Provide exiting handle as first parameter. + (++) Provide which callback will be registered using one value from + EXTI_CallbackIDTypeDef. + (++) Provide callback function pointer. + + (#) Get interrupt pending bit using HAL_EXTI_GetPending(). + + (#) Clear interrupt pending bit using HAL_EXTI_GetPending(). + + (#) Generate software interrupt using HAL_EXTI_GenerateSWI(). + + @endverbatim + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32g0xx_hal.h" + +/** @addtogroup STM32G0xx_HAL_Driver + * @{ + */ + +/** @addtogroup EXTI + * @{ + */ +/** MISRA C:2012 deviation rule has been granted for following rule: + * Rule-18.1_b - Medium: Array `EXTICR' 1st subscript interval [0,7] may be out + * of bounds [0,3] in following API : + * HAL_EXTI_SetConfigLine + * HAL_EXTI_GetConfigLine + * HAL_EXTI_ClearConfigLine + */ + +#ifdef HAL_EXTI_MODULE_ENABLED + +/* Private typedef -----------------------------------------------------------*/ +/* Private defines ------------------------------------------------------------*/ +/** @defgroup EXTI_Private_Constants EXTI Private Constants + * @{ + */ +#define EXTI_MODE_OFFSET 0x04u /* 0x10: offset between CPU IMR/EMR registers */ +#define EXTI_CONFIG_OFFSET 0x08u /* 0x20: offset between CPU Rising/Falling configuration registers */ +/** + * @} + */ + +/* Private macros ------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ +/* Exported functions --------------------------------------------------------*/ + +/** @addtogroup EXTI_Exported_Functions + * @{ + */ + +/** @addtogroup EXTI_Exported_Functions_Group1 + * @brief Configuration functions + * +@verbatim + =============================================================================== + ##### Configuration functions ##### + =============================================================================== + +@endverbatim + * @{ + */ + +/** + * @brief Set configuration of a dedicated Exti line. + * @param hexti Exti handle. + * @param pExtiConfig Pointer on EXTI configuration to be set. + * @retval HAL Status. + */ +HAL_StatusTypeDef HAL_EXTI_SetConfigLine(EXTI_HandleTypeDef *hexti, EXTI_ConfigTypeDef *pExtiConfig) +{ + __IO uint32_t *regaddr; + uint32_t regval; + uint32_t linepos; + uint32_t maskline; + uint32_t offset; + + /* Check null pointer */ + if ((hexti == NULL) || (pExtiConfig == NULL)) + { + return HAL_ERROR; + } + + /* Check parameters */ + assert_param(IS_EXTI_LINE(pExtiConfig->Line)); + assert_param(IS_EXTI_MODE(pExtiConfig->Mode)); + + /* Assign line number to handle */ + hexti->Line = pExtiConfig->Line; + + /* compute line register offset and line mask */ + offset = ((pExtiConfig->Line & EXTI_REG_MASK) >> EXTI_REG_SHIFT); + linepos = (pExtiConfig->Line & EXTI_PIN_MASK); + maskline = (1uL << linepos); + + /* Configure triggers for configurable lines */ + if ((pExtiConfig->Line & EXTI_CONFIG) != 0x00u) + { + assert_param(IS_EXTI_TRIGGER(pExtiConfig->Trigger)); + + /* Configure rising trigger */ + regaddr = (&EXTI->RTSR1 + (EXTI_CONFIG_OFFSET * offset)); + regval = *regaddr; + + /* Mask or set line */ + if ((pExtiConfig->Trigger & EXTI_TRIGGER_RISING) != 0x00u) + { + regval |= maskline; + } + else + { + regval &= ~maskline; + } + + /* Store rising trigger mode */ + *regaddr = regval; + + /* Configure falling trigger */ + regaddr = (&EXTI->FTSR1 + (EXTI_CONFIG_OFFSET * offset)); + regval = *regaddr; + + /* Mask or set line */ + if ((pExtiConfig->Trigger & EXTI_TRIGGER_FALLING) != 0x00u) + { + regval |= maskline; + } + else + { + regval &= ~maskline; + } + + /* Store falling trigger mode */ + *regaddr = regval; + + /* Configure gpio port selection in case of gpio exti line */ + if ((pExtiConfig->Line & EXTI_GPIO) == EXTI_GPIO) + { + assert_param(IS_EXTI_GPIO_PORT(pExtiConfig->GPIOSel)); + assert_param(IS_EXTI_GPIO_PIN(linepos)); + + regval = EXTI->EXTICR[linepos >> 2u]; + regval &= ~(EXTI_EXTICR1_EXTI0 << (EXTI_EXTICR1_EXTI1_Pos * (linepos & 0x03u))); + regval |= (pExtiConfig->GPIOSel << (EXTI_EXTICR1_EXTI1_Pos * (linepos & 0x03u))); + EXTI->EXTICR[linepos >> 2u] = regval; + } + } + + /* Configure interrupt mode : read current mode */ + regaddr = (&EXTI->IMR1 + (EXTI_MODE_OFFSET * offset)); + regval = *regaddr; + + /* Mask or set line */ + if ((pExtiConfig->Mode & EXTI_MODE_INTERRUPT) != 0x00u) + { + regval |= maskline; + } + else + { + regval &= ~maskline; + } + + /* Store interrupt mode */ + *regaddr = regval; + + /* Configure event mode : read current mode */ + regaddr = (&EXTI->EMR1 + (EXTI_MODE_OFFSET * offset)); + regval = *regaddr; + + /* Mask or set line */ + if ((pExtiConfig->Mode & EXTI_MODE_EVENT) != 0x00u) + { + regval |= maskline; + } + else + { + regval &= ~maskline; + } + + /* Store event mode */ + *regaddr = regval; + + return HAL_OK; +} + + +/** + * @brief Get configuration of a dedicated Exti line. + * @param hexti Exti handle. + * @param pExtiConfig Pointer on structure to store Exti configuration. + * @retval HAL Status. + */ +HAL_StatusTypeDef HAL_EXTI_GetConfigLine(EXTI_HandleTypeDef *hexti, EXTI_ConfigTypeDef *pExtiConfig) +{ + __IO uint32_t *regaddr; + uint32_t regval; + uint32_t linepos; + uint32_t maskline; + uint32_t offset; + + /* Check null pointer */ + if ((hexti == NULL) || (pExtiConfig == NULL)) + { + return HAL_ERROR; + } + + /* Check the parameter */ + assert_param(IS_EXTI_LINE(hexti->Line)); + + /* Store handle line number to configiguration structure */ + pExtiConfig->Line = hexti->Line; + + /* compute line register offset and line mask */ + offset = ((pExtiConfig->Line & EXTI_REG_MASK) >> EXTI_REG_SHIFT); + linepos = (pExtiConfig->Line & EXTI_PIN_MASK); + maskline = (1uL << linepos); + + /* 1] Get core mode : interrupt */ + regaddr = (&EXTI->IMR1 + (EXTI_MODE_OFFSET * offset)); + regval = *regaddr; + + /* Check if selected line is enable */ + if ((regval & maskline) != 0x00u) + { + pExtiConfig->Mode = EXTI_MODE_INTERRUPT; + } + else + { + pExtiConfig->Mode = EXTI_MODE_NONE; + } + + /* Get event mode */ + regaddr = (&EXTI->EMR1 + (EXTI_MODE_OFFSET * offset)); + regval = *regaddr; + + /* Check if selected line is enable */ + if ((regval & maskline) != 0x00u) + { + pExtiConfig->Mode |= EXTI_MODE_EVENT; + } + + /* Get default Trigger and GPIOSel configuration */ + pExtiConfig->Trigger = EXTI_TRIGGER_NONE; + pExtiConfig->GPIOSel = 0x00u; + + /* 2] Get trigger for configurable lines : rising */ + if ((pExtiConfig->Line & EXTI_CONFIG) != 0x00u) + { + regaddr = (&EXTI->RTSR1 + (EXTI_CONFIG_OFFSET * offset)); + regval = *regaddr; + + /* Check if configuration of selected line is enable */ + if ((regval & maskline) != 0x00u) + { + pExtiConfig->Trigger = EXTI_TRIGGER_RISING; + } + + /* Get falling configuration */ + regaddr = (&EXTI->FTSR1 + (EXTI_CONFIG_OFFSET * offset)); + regval = *regaddr; + + /* Check if configuration of selected line is enable */ + if ((regval & maskline) != 0x00u) + { + pExtiConfig->Trigger |= EXTI_TRIGGER_FALLING; + } + + /* Get Gpio port selection for gpio lines */ + if ((pExtiConfig->Line & EXTI_GPIO) == EXTI_GPIO) + { + assert_param(IS_EXTI_GPIO_PIN(linepos)); + + regval = EXTI->EXTICR[linepos >> 2u]; + pExtiConfig->GPIOSel = ((regval << (EXTI_EXTICR1_EXTI1_Pos * (3uL - (linepos & 0x03u)))) >> 24); + } + } + + return HAL_OK; +} + + +/** + * @brief Clear whole configuration of a dedicated Exti line. + * @param hexti Exti handle. + * @retval HAL Status. + */ +HAL_StatusTypeDef HAL_EXTI_ClearConfigLine(EXTI_HandleTypeDef *hexti) +{ + __IO uint32_t *regaddr; + uint32_t regval; + uint32_t linepos; + uint32_t maskline; + uint32_t offset; + + /* Check null pointer */ + if (hexti == NULL) + { + return HAL_ERROR; + } + + /* Check the parameter */ + assert_param(IS_EXTI_LINE(hexti->Line)); + + /* compute line register offset and line mask */ + offset = ((hexti->Line & EXTI_REG_MASK) >> EXTI_REG_SHIFT); + linepos = (hexti->Line & EXTI_PIN_MASK); + maskline = (1uL << linepos); + + /* 1] Clear interrupt mode */ + regaddr = (&EXTI->IMR1 + (EXTI_MODE_OFFSET * offset)); + regval = (*regaddr & ~maskline); + *regaddr = regval; + + /* 2] Clear event mode */ + regaddr = (&EXTI->EMR1 + (EXTI_MODE_OFFSET * offset)); + regval = (*regaddr & ~maskline); + *regaddr = regval; + + /* 3] Clear triggers in case of configurable lines */ + if ((hexti->Line & EXTI_CONFIG) != 0x00u) + { + regaddr = (&EXTI->RTSR1 + (EXTI_CONFIG_OFFSET * offset)); + regval = (*regaddr & ~maskline); + *regaddr = regval; + + regaddr = (&EXTI->FTSR1 + (EXTI_CONFIG_OFFSET * offset)); + regval = (*regaddr & ~maskline); + *regaddr = regval; + + /* Get Gpio port selection for gpio lines */ + if ((hexti->Line & EXTI_GPIO) == EXTI_GPIO) + { + assert_param(IS_EXTI_GPIO_PIN(linepos)); + + regval = EXTI->EXTICR[linepos >> 2u]; + regval &= ~(EXTI_EXTICR1_EXTI0 << (EXTI_EXTICR1_EXTI1_Pos * (linepos & 0x03u))); + EXTI->EXTICR[linepos >> 2u] = regval; + } + } + + return HAL_OK; +} + + +/** + * @brief Register callback for a dedicaated Exti line. + * @param hexti Exti handle. + * @param CallbackID User callback identifier. + * This parameter can be one of @arg @ref EXTI_CallbackIDTypeDef values. + * @param pPendingCbfn function pointer to be stored as callback. + * @retval HAL Status. + */ +HAL_StatusTypeDef HAL_EXTI_RegisterCallback(EXTI_HandleTypeDef *hexti, EXTI_CallbackIDTypeDef CallbackID, void (*pPendingCbfn)(void)) +{ + HAL_StatusTypeDef status = HAL_OK; + + switch (CallbackID) + { + case HAL_EXTI_COMMON_CB_ID: + hexti->RisingCallback = pPendingCbfn; + hexti->FallingCallback = pPendingCbfn; + break; + + case HAL_EXTI_RISING_CB_ID: + hexti->RisingCallback = pPendingCbfn; + break; + + case HAL_EXTI_FALLING_CB_ID: + hexti->FallingCallback = pPendingCbfn; + break; + + default: + status = HAL_ERROR; + break; + } + + return status; +} + + +/** + * @brief Store line number as handle private field. + * @param hexti Exti handle. + * @param ExtiLine Exti line number. + * This parameter can be from 0 to @ref EXTI_LINE_NB. + * @retval HAL Status. + */ +HAL_StatusTypeDef HAL_EXTI_GetHandle(EXTI_HandleTypeDef *hexti, uint32_t ExtiLine) +{ + /* Check the parameters */ + assert_param(IS_EXTI_LINE(ExtiLine)); + + /* Check null pointer */ + if (hexti == NULL) + { + return HAL_ERROR; + } + else + { + /* Store line number as handle private field */ + hexti->Line = ExtiLine; + + return HAL_OK; + } +} + + +/** + * @} + */ + +/** @addtogroup EXTI_Exported_Functions_Group2 + * @brief EXTI IO functions. + * +@verbatim + =============================================================================== + ##### IO operation functions ##### + =============================================================================== + +@endverbatim + * @{ + */ + +/** + * @brief Handle EXTI interrupt request. + * @param hexti Exti handle. + * @retval none. + */ +void HAL_EXTI_IRQHandler(EXTI_HandleTypeDef *hexti) +{ + __IO uint32_t *regaddr; + uint32_t regval; + uint32_t maskline; + uint32_t offset; + + /* Compute line register offset and line mask */ + offset = ((hexti->Line & EXTI_REG_MASK) >> EXTI_REG_SHIFT); + maskline = (1uL << (hexti->Line & EXTI_PIN_MASK)); + + /* Get rising edge pending bit */ + regaddr = (&EXTI->RPR1 + (EXTI_CONFIG_OFFSET * offset)); + regval = (*regaddr & maskline); + + if (regval != 0x00u) + { + /* Clear pending bit */ + *regaddr = maskline; + + /* Call rising callback */ + if (hexti->RisingCallback != NULL) + { + hexti->RisingCallback(); + } + } + + /* Get falling edge pending bit */ + regaddr = (&EXTI->FPR1 + (EXTI_CONFIG_OFFSET * offset)); + regval = (*regaddr & maskline); + + if (regval != 0x00u) + { + /* Clear pending bit */ + *regaddr = maskline; + + /* Call rising callback */ + if (hexti->FallingCallback != NULL) + { + hexti->FallingCallback(); + } + } +} + + +/** + * @brief Get interrupt pending bit of a dedicated line. + * @param hexti Exti handle. + * @param Edge Specify which pending edge as to be checked. + * This parameter can be one of the following values: + * @arg @ref EXTI_TRIGGER_RISING + * @arg @ref EXTI_TRIGGER_FALLING + * @retval 1 if interrupt is pending else 0. + */ +uint32_t HAL_EXTI_GetPending(EXTI_HandleTypeDef *hexti, uint32_t Edge) +{ + __IO uint32_t *regaddr; + uint32_t regval; + uint32_t linepos; + uint32_t maskline; + uint32_t offset; + + /* Check parameters */ + assert_param(IS_EXTI_LINE(hexti->Line)); + assert_param(IS_EXTI_CONFIG_LINE(hexti->Line)); + assert_param(IS_EXTI_PENDING_EDGE(Edge)); + + /* compute line register offset and line mask */ + offset = ((hexti->Line & EXTI_REG_MASK) >> EXTI_REG_SHIFT); + linepos = (hexti->Line & EXTI_PIN_MASK); + maskline = (1uL << linepos); + + if (Edge != EXTI_TRIGGER_RISING) + { + /* Get falling edge pending bit */ + regaddr = (&EXTI->FPR1 + (EXTI_CONFIG_OFFSET * offset)); + } + else + { + /* Get rising edge pending bit */ + regaddr = (&EXTI->RPR1 + (EXTI_CONFIG_OFFSET * offset)); + } + + /* return 1 if bit is set else 0 */ + regval = ((*regaddr & maskline) >> linepos); + return regval; +} + + +/** + * @brief Clear interrupt pending bit of a dedicated line. + * @param hexti Exti handle. + * @param Edge Specify which pending edge as to be clear. + * This parameter can be one of the following values: + * @arg @ref EXTI_TRIGGER_RISING + * @arg @ref EXTI_TRIGGER_FALLING + * @retval None. + */ +void HAL_EXTI_ClearPending(EXTI_HandleTypeDef *hexti, uint32_t Edge) +{ + __IO uint32_t *regaddr; + uint32_t maskline; + uint32_t offset; + + /* Check parameters */ + assert_param(IS_EXTI_LINE(hexti->Line)); + assert_param(IS_EXTI_CONFIG_LINE(hexti->Line)); + assert_param(IS_EXTI_PENDING_EDGE(Edge)); + + /* compute line register offset and line mask */ + offset = ((hexti->Line & EXTI_REG_MASK) >> EXTI_REG_SHIFT); + maskline = (1uL << (hexti->Line & EXTI_PIN_MASK)); + + if (Edge != EXTI_TRIGGER_RISING) + { + /* Get falling edge pending register address */ + regaddr = (&EXTI->FPR1 + (EXTI_CONFIG_OFFSET * offset)); + } + else + { + /* Get falling edge pending register address */ + regaddr = (&EXTI->RPR1 + (EXTI_CONFIG_OFFSET * offset)); + } + + /* Clear Pending bit */ + *regaddr = maskline; +} + + +/** + * @brief Generate a software interrupt for a dedicated line. + * @param hexti Exti handle. + * @retval None. + */ +void HAL_EXTI_GenerateSWI(EXTI_HandleTypeDef *hexti) +{ + __IO uint32_t *regaddr; + uint32_t maskline; + uint32_t offset; + + /* Check parameterd */ + assert_param(IS_EXTI_LINE(hexti->Line)); + assert_param(IS_EXTI_CONFIG_LINE(hexti->Line)); + + /* compute line register offset and line mask */ + offset = ((hexti->Line & EXTI_REG_MASK) >> EXTI_REG_SHIFT); + maskline = (1uL << (hexti->Line & EXTI_PIN_MASK)); + + regaddr = (&EXTI->SWIER1 + (EXTI_CONFIG_OFFSET * offset)); + *regaddr = maskline; +} + + +/** + * @} + */ + +/** + * @} + */ + +#endif /* HAL_EXTI_MODULE_ENABLED */ +/** + * @} + */ + +/** + * @} + */ + diff --git a/firmware/Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_flash.c b/firmware/Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_flash.c new file mode 100644 index 0000000..281ffe7 --- /dev/null +++ b/firmware/Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_flash.c @@ -0,0 +1,720 @@ +/** + ****************************************************************************** + * @file stm32g0xx_hal_flash.c + * @author MCD Application Team + * @brief FLASH HAL module driver. + * This file provides firmware functions to manage the following + * functionalities of the internal FLASH memory: + * + Program operations functions + * + Memory Control functions + * + Peripheral Errors functions + * + @verbatim + ============================================================================== + ##### FLASH peripheral features ##### + ============================================================================== + + [..] The Flash memory interface manages CPU AHB I-Code and D-Code accesses + to the Flash memory. It implements the erase and program Flash memory operations + and the read and write protection mechanisms. + + [..] The Flash memory interface accelerates code execution with a system of instruction + prefetch and cache lines. + + [..] The FLASH main features are: + (+) Flash memory read operations + (+) Flash memory program/erase operations + (+) Read / write protections + (+) Option bytes programming + (+) Prefetch on I-Code + (+) 32 cache lines of 4*64 bits on I-Code + (+) Error code correction (ECC) : Data in flash are 72-bits word + (8 bits added per double word) + + ##### How to use this driver ##### + ============================================================================== + [..] + This driver provides functions and macros to configure and program the FLASH + memory of all STM32G0xx devices. + + (#) Flash Memory IO Programming functions: + (++) Lock and Unlock the FLASH interface using HAL_FLASH_Unlock() and + HAL_FLASH_Lock() functions + (++) Program functions: double word and fast program (full row programming) + (++) There are two modes of programming: + (+++) Polling mode using HAL_FLASH_Program() function + (+++) Interrupt mode using HAL_FLASH_Program_IT() function + + (#) Interrupts and flags management functions: + (++) Handle FLASH interrupts by calling HAL_FLASH_IRQHandler() + (++) Callback functions are called when the flash operations are finished : + HAL_FLASH_EndOfOperationCallback() when everything is ok, otherwise + HAL_FLASH_OperationErrorCallback() + (++) Get error flag status by calling HAL_GetError() + + (#) Option bytes management functions : + (++) Lock and Unlock the option bytes using HAL_FLASH_OB_Unlock() and + HAL_FLASH_OB_Lock() functions + (++) Launch the reload of the option bytes using HAL_FLASH_OB_Launch() function. + In this case, a reset is generated + + [..] + In addition to these functions, this driver includes a set of macros allowing + to handle the following operations: + (+) Set the latency + (+) Enable/Disable the prefetch buffer + (+) Enable/Disable the Instruction cache + (+) Reset the Instruction cache + (+) Enable/Disable the Flash power-down during low-power run and sleep modes + (+) Enable/Disable the Flash interrupts + (+) Monitor the Flash flags status + + @endverbatim + ****************************************************************************** + * @attention + * + * Copyright (c) 2018 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file in + * the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32g0xx_hal.h" + +/** @addtogroup STM32G0xx_HAL_Driver + * @{ + */ + +/** @defgroup FLASH FLASH + * @brief FLASH HAL module driver + * @{ + */ + +#ifdef HAL_FLASH_MODULE_ENABLED + +/* Private typedef -----------------------------------------------------------*/ +/* Private defines -----------------------------------------------------------*/ +/* Private macros ------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/** @defgroup FLASH_Private_Variables FLASH Private Variables + * @{ + */ +/** + * @brief Variable used for Program/Erase sectors under interruption + */ +FLASH_ProcessTypeDef pFlash = {.Lock = HAL_UNLOCKED, \ + .ErrorCode = HAL_FLASH_ERROR_NONE, \ + .ProcedureOnGoing = FLASH_TYPENONE, \ + .Address = 0U, \ + .Banks = 0U, \ + .Page = 0U, \ + .NbPagesToErase = 0U + }; +/** + * @} + */ + +/* Private function prototypes -----------------------------------------------*/ +/** @defgroup FLASH_Private_Functions FLASH Private Functions + * @{ + */ +static void FLASH_Program_DoubleWord(uint32_t Address, uint64_t Data); +static void FLASH_Program_Fast(uint32_t Address, uint32_t DataAddress); +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup FLASH_Exported_Functions FLASH Exported Functions + * @{ + */ + +/** @defgroup FLASH_Exported_Functions_Group1 Programming operation functions + * @brief Programming operation functions + * +@verbatim + =============================================================================== + ##### Programming operation functions ##### + =============================================================================== + [..] + This subsection provides a set of functions allowing to manage the FLASH + program operations. + +@endverbatim + * @{ + */ + +/** + * @brief Program double word or fast program of a row at a specified address. + * @param TypeProgram Indicate the way to program at a specified address. + * This parameter can be a value of @ref FLASH_Type_Program + * @param Address Specifies the address to be programmed. + * @param Data Specifies the data to be programmed + * This parameter is the data for the double word program and the address where + * are stored the data for the row fast program depending on the TypeProgram: + * TypeProgram = FLASH_TYPEPROGRAM_DOUBLEWORD (64-bit) + * TypeProgram = FLASH_TYPEPROGRAM_FAST (32-bit). + * + * @retval HAL_StatusTypeDef HAL Status + */ +HAL_StatusTypeDef HAL_FLASH_Program(uint32_t TypeProgram, uint32_t Address, uint64_t Data) +{ + HAL_StatusTypeDef status; + + /* Check the parameters */ + assert_param(IS_FLASH_TYPEPROGRAM(TypeProgram)); + + /* Process Locked */ + __HAL_LOCK(&pFlash); + + /* Reset error code */ + pFlash.ErrorCode = HAL_FLASH_ERROR_NONE; + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); + + if (status == HAL_OK) + { + if (TypeProgram == FLASH_TYPEPROGRAM_DOUBLEWORD) + { + /* Check the parameters */ + assert_param(IS_FLASH_PROGRAM_ADDRESS(Address)); + + /* Program double-word (64-bit) at a specified address */ + FLASH_Program_DoubleWord(Address, Data); + } + else + { + /* Check the parameters */ + assert_param(IS_FLASH_FAST_PROGRAM_ADDRESS(Address)); + + /* Fast program a 32 row double-word (64-bit) at a specified address */ + FLASH_Program_Fast(Address, (uint32_t)Data); + } + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); + + /* If the program operation is completed, disable the PG or FSTPG Bit */ + CLEAR_BIT(FLASH->CR, TypeProgram); + } + + /* Process Unlocked */ + __HAL_UNLOCK(&pFlash); + + /* return status */ + return status; +} + +/** + * @brief Program double word or fast program of a row at a specified address with interrupt enabled. + * @param TypeProgram Indicate the way to program at a specified address. + * This parameter can be a value of @ref FLASH_Type_Program + * @param Address Specifies the address to be programmed. + * @param Data Specifies the data to be programmed + * This parameter is the data for the double word program and the address where + * are stored the data for the row fast program depending on the TypeProgram: + * TypeProgram = FLASH_TYPEPROGRAM_DOUBLEWORD (64-bit) + * TypeProgram = FLASH_TYPEPROGRAM_FAST (32-bit). + * + * @retval HAL Status + */ +HAL_StatusTypeDef HAL_FLASH_Program_IT(uint32_t TypeProgram, uint32_t Address, uint64_t Data) +{ + HAL_StatusTypeDef status; + + /* Check the parameters */ + assert_param(IS_FLASH_TYPEPROGRAM(TypeProgram)); + + /* Process Locked */ + __HAL_LOCK(&pFlash); + + /* Reset error code */ + pFlash.ErrorCode = HAL_FLASH_ERROR_NONE; + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); + + if (status != HAL_OK) + { + /* Process Unlocked */ + __HAL_UNLOCK(&pFlash); + } + else + { + /* Set internal variables used by the IRQ handler */ + pFlash.ProcedureOnGoing = TypeProgram; + pFlash.Address = Address; + + /* Enable End of Operation and Error interrupts */ + FLASH->CR |= FLASH_CR_EOPIE | FLASH_CR_ERRIE; + + if (TypeProgram == FLASH_TYPEPROGRAM_DOUBLEWORD) + { + /* Check the parameters */ + assert_param(IS_FLASH_PROGRAM_ADDRESS(Address)); + + /* Program double-word (64-bit) at a specified address */ + FLASH_Program_DoubleWord(Address, Data); + } + else + { + /* Check the parameters */ + assert_param(IS_FLASH_FAST_PROGRAM_ADDRESS(Address)); + + /* Fast program a 32 row double-word (64-bit) at a specified address */ + FLASH_Program_Fast(Address, (uint32_t)Data); + } + } + + /* return status */ + return status; +} + +/** + * @brief Handle FLASH interrupt request. + * @retval None + */ +void HAL_FLASH_IRQHandler(void) +{ + uint32_t param; + uint32_t error; + + /* Save flash errors. */ + error = (FLASH->SR & FLASH_SR_ERRORS); + + /* A] Set parameter for user or error callbacks */ + /* check operation was a program or erase */ + if ((pFlash.ProcedureOnGoing & FLASH_TYPEERASE_MASS) != 0x00U) + { + /* return bank number */ + param = pFlash.Banks; + } + else + { + /* Clear operation only for page erase or program */ + CLEAR_BIT(FLASH->CR, pFlash.ProcedureOnGoing); + + if ((pFlash.ProcedureOnGoing & (FLASH_TYPEPROGRAM_DOUBLEWORD | FLASH_TYPEPROGRAM_FAST)) != 0x00U) + { + /* return address being programmed */ + param = pFlash.Address; + } + else + { + /* return page number being erased */ + param = pFlash.Page; + } + } + + /* B] Check errors */ + if (error != 0x00U) + { + /*Save the error code*/ + pFlash.ErrorCode |= error; + + /* clear error flags */ + FLASH->SR = FLASH_SR_ERRORS; + + /*Stop the procedure ongoing*/ + pFlash.ProcedureOnGoing = FLASH_TYPENONE; + + /* Error callback */ + HAL_FLASH_OperationErrorCallback(param); + } + + /* C] Check FLASH End of Operation flag */ + if ((FLASH->SR & FLASH_SR_EOP) != 0x00U) + { + /* Clear FLASH End of Operation pending bit */ + FLASH->SR = FLASH_SR_EOP; + + if (pFlash.ProcedureOnGoing == FLASH_TYPEERASE_PAGES) + { + /* Nb of pages to erased can be decreased */ + pFlash.NbPagesToErase--; + + /* Check if there are still pages to erase*/ + if (pFlash.NbPagesToErase != 0x00U) + { + /* Increment page number */ + pFlash.Page++; + FLASH_PageErase(pFlash.Banks, pFlash.Page); + } + else + { + /* No more pages to erase: stop erase pages procedure */ + pFlash.ProcedureOnGoing = FLASH_TYPENONE; + } + } + else + { + /*Stop the ongoing procedure */ + pFlash.ProcedureOnGoing = FLASH_TYPENONE; + } + + /* User callback */ + HAL_FLASH_EndOfOperationCallback(param); + } + + if (pFlash.ProcedureOnGoing == FLASH_TYPENONE) + { + /* Disable End of Operation and Error interrupts */ + FLASH->CR &= ~(FLASH_CR_EOPIE | FLASH_CR_ERRIE); + + /* Process Unlocked */ + __HAL_UNLOCK(&pFlash); + } +} + +/** + * @brief FLASH end of operation interrupt callback. + * @param ReturnValue The value saved in this parameter depends on the ongoing procedure + * Mass Erase: 0 + * Page Erase: Page which has been erased + * Program: Address which was selected for data program + * @retval None + */ +__weak void HAL_FLASH_EndOfOperationCallback(uint32_t ReturnValue) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(ReturnValue); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_FLASH_EndOfOperationCallback could be implemented in the user file + */ +} + +/** + * @brief FLASH operation error interrupt callback. + * @param ReturnValue The value saved in this parameter depends on the ongoing procedure + * Mass Erase: 0 + * Page Erase: Page number which returned an error + * Program: Address which was selected for data program + * @retval None + */ +__weak void HAL_FLASH_OperationErrorCallback(uint32_t ReturnValue) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(ReturnValue); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_FLASH_OperationErrorCallback could be implemented in the user file + */ +} + +/** + * @} + */ + +/** @defgroup FLASH_Exported_Functions_Group2 Peripheral Control functions + * @brief Management functions + * +@verbatim + =============================================================================== + ##### Peripheral Control functions ##### + =============================================================================== + [..] + This subsection provides a set of functions allowing to control the FLASH + memory operations. + +@endverbatim + * @{ + */ + +/** + * @brief Unlock the FLASH control register access. + * @retval HAL Status + */ +HAL_StatusTypeDef HAL_FLASH_Unlock(void) +{ + HAL_StatusTypeDef status = HAL_OK; + + if (READ_BIT(FLASH->CR, FLASH_CR_LOCK) != 0x00U) + { + /* Authorize the FLASH Registers access */ + WRITE_REG(FLASH->KEYR, FLASH_KEY1); + WRITE_REG(FLASH->KEYR, FLASH_KEY2); + + /* verify Flash is unlock */ + if (READ_BIT(FLASH->CR, FLASH_CR_LOCK) != 0x00U) + { + status = HAL_ERROR; + } + } + + return status; +} + +/** + * @brief Lock the FLASH control register access. + * @retval HAL Status + */ +HAL_StatusTypeDef HAL_FLASH_Lock(void) +{ + HAL_StatusTypeDef status = HAL_ERROR; + + /* Set the LOCK Bit to lock the FLASH Registers access */ + SET_BIT(FLASH->CR, FLASH_CR_LOCK); + + /* verify Flash is locked */ + if (READ_BIT(FLASH->CR, FLASH_CR_LOCK) != 0x00u) + { + status = HAL_OK; + } + + return status; +} + +/** + * @brief Unlock the FLASH Option Bytes Registers access. + * @retval HAL Status + */ +HAL_StatusTypeDef HAL_FLASH_OB_Unlock(void) +{ + HAL_StatusTypeDef status = HAL_ERROR; + + if (READ_BIT(FLASH->CR, FLASH_CR_OPTLOCK) != 0x00U) + { + /* Authorizes the Option Byte register programming */ + WRITE_REG(FLASH->OPTKEYR, FLASH_OPTKEY1); + WRITE_REG(FLASH->OPTKEYR, FLASH_OPTKEY2); + + /* verify option bytes are unlocked */ + if (READ_BIT(FLASH->CR, FLASH_CR_OPTLOCK) == 0x00U) + { + status = HAL_OK; + } + } + + return status; +} + +/** + * @brief Lock the FLASH Option Bytes Registers access. + * @retval HAL Status + */ +HAL_StatusTypeDef HAL_FLASH_OB_Lock(void) +{ + HAL_StatusTypeDef status = HAL_ERROR; + + /* Set the OPTLOCK Bit to lock the FLASH Option Byte Registers access */ + SET_BIT(FLASH->CR, FLASH_CR_OPTLOCK); + + /* verify option bytes are locked */ + if (READ_BIT(FLASH->CR, FLASH_CR_OPTLOCK) != 0x00u) + { + status = HAL_OK; + } + + return status; +} + +/** + * @brief Launch the option byte loading. + * @retval HAL Status + */ +HAL_StatusTypeDef HAL_FLASH_OB_Launch(void) +{ + /* Set the bit to force the option byte reloading */ + SET_BIT(FLASH->CR, FLASH_CR_OBL_LAUNCH); + + /* We should not reach here : Option byte launch generates Option byte reset + so return error */ + return HAL_ERROR; +} + +/** + * @} + */ + +/** @defgroup FLASH_Exported_Functions_Group3 Peripheral State and Errors functions + * @brief Peripheral Errors functions + * +@verbatim + =============================================================================== + ##### Peripheral Errors functions ##### + =============================================================================== + [..] + This subsection permits to get in run-time Errors of the FLASH peripheral. + +@endverbatim + * @{ + */ + +/** + * @brief Get the specific FLASH error flag. + * @retval FLASH_ErrorCode The returned value can be + * @arg @ref HAL_FLASH_ERROR_NONE No error set + * @arg @ref HAL_FLASH_ERROR_OP Operation error + * @arg @ref HAL_FLASH_ERROR_PROG Programming error + * @arg @ref HAL_FLASH_ERROR_WRP Write protection error + * @arg @ref HAL_FLASH_ERROR_PGA Programming alignment error + * @arg @ref HAL_FLASH_ERROR_SIZ Size error + * @arg @ref HAL_FLASH_ERROR_PGS Programming sequence error + * @arg @ref HAL_FLASH_ERROR_MIS Fast programming data miss error + * @arg @ref HAL_FLASH_ERROR_FAST Fast programming error + * @arg @ref HAL_FLASH_ERROR_RD Read Protection error (PCROP)(*) + * @arg @ref HAL_FLASH_ERROR_OPTV Option validity error + * @arg @ref HAL_FLASH_ERROR_ECCD two ECC errors have been detected + * @note (*) availability depends on devices + */ +uint32_t HAL_FLASH_GetError(void) +{ + return pFlash.ErrorCode; +} + +/** + * @} + */ + +/** + * @} + */ + +/* Private functions ---------------------------------------------------------*/ + +/** @addtogroup FLASH_Private_Functions + * @{ + */ + +/** + * @brief Wait for a FLASH operation to complete. + * @param Timeout maximum flash operation timeout + * @retval HAL_StatusTypeDef HAL Status + */ +HAL_StatusTypeDef FLASH_WaitForLastOperation(uint32_t Timeout) +{ + uint32_t error; + /* Wait for the FLASH operation to complete by polling on BUSY flag to be reset. + Even if the FLASH operation fails, the BUSY flag will be reset and an error + flag will be set */ + uint32_t timeout = HAL_GetTick() + Timeout; + + /* Wait if any operation is ongoing */ +#if defined(FLASH_DBANK_SUPPORT) + error = (FLASH_SR_BSY1 | FLASH_SR_BSY2); +#else + error = FLASH_SR_BSY1; +#endif /* FLASH_DBANK_SUPPORT */ + + while ((FLASH->SR & error) != 0x00U) + { + if (HAL_GetTick() >= timeout) + { + return HAL_TIMEOUT; + } + } + + /* check flash errors */ + error = (FLASH->SR & FLASH_SR_ERRORS); + + /* Clear SR register */ + FLASH->SR = FLASH_SR_CLEAR; + + if (error != 0x00U) + { + /*Save the error code*/ + pFlash.ErrorCode = error; + return HAL_ERROR; + } + + /* Wait for control register to be written */ + timeout = HAL_GetTick() + Timeout; + + while ((FLASH->SR & FLASH_SR_CFGBSY) != 0x00U) + { + if (HAL_GetTick() >= timeout) + { + return HAL_TIMEOUT; + } + } + + return HAL_OK; +} + +/** + * @brief Program double-word (64-bit) at a specified address. + * @param Address Specifies the address to be programmed. + * @param Data Specifies the data to be programmed. + * @retval None + */ +static void FLASH_Program_DoubleWord(uint32_t Address, uint64_t Data) +{ + /* Set PG bit */ + SET_BIT(FLASH->CR, FLASH_CR_PG); + + /* Program first word */ + *(uint32_t *)Address = (uint32_t)Data; + + /* Barrier to ensure programming is performed in 2 steps, in right order + (independently of compiler optimization behavior) */ + __ISB(); + + /* Program second word */ + *(uint32_t *)(Address + 4U) = (uint32_t)(Data >> 32U); +} + +/** + * @brief Fast program a 32 row double-word (64-bit) at a specified address. + * @param Address Specifies the address to be programmed. + * @param DataAddress Specifies the address where the data are stored. + * @retval None + */ +static __RAM_FUNC void FLASH_Program_Fast(uint32_t Address, uint32_t DataAddress) +{ + uint8_t index = 0; + uint32_t dest = Address; + uint32_t src = DataAddress; + uint32_t primask_bit; + + /* Set FSTPG bit */ + SET_BIT(FLASH->CR, FLASH_CR_FSTPG); + + /* Enter critical section: row programming should not be longer than 7 ms */ + primask_bit = __get_PRIMASK(); + __disable_irq(); + + /* Fast Program : 64 words */ + while (index < 64U) + { + *(uint32_t *)dest = *(uint32_t *)src; + src += 4U; + dest += 4U; + index++; + } + + /* wait for BSY1 in order to be sure that flash operation is ended befoire + allowing prefetch in flash. Timeout does not return status, as it will + be anyway done later */ + +#if defined(FLASH_DBANK_SUPPORT) + while ((FLASH->SR & (FLASH_SR_BSY1 | FLASH_SR_BSY2)) != 0x00U) +#else + while ((FLASH->SR & FLASH_SR_BSY1) != 0x00U) +#endif /* FLASH_DBANK_SUPPORT */ + { + } + + /* Exit critical section: restore previous priority mask */ + __set_PRIMASK(primask_bit); +} + +/** + * @} + */ + +#endif /* HAL_FLASH_MODULE_ENABLED */ + +/** + * @} + */ + +/** + * @} + */ + diff --git a/firmware/Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_flash_ex.c b/firmware/Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_flash_ex.c new file mode 100644 index 0000000..b590066 --- /dev/null +++ b/firmware/Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_flash_ex.c @@ -0,0 +1,1307 @@ +/** + ****************************************************************************** + * @file stm32g0xx_hal_flash_ex.c + * @author MCD Application Team + * @brief Extended FLASH HAL module driver. + * This file provides firmware functions to manage the following + * functionalities of the FLASH extended peripheral: + * + Extended programming operations functions + * + @verbatim + ============================================================================== + ##### Flash Extended features ##### + ============================================================================== + + [..] Comparing to other previous devices, the FLASH interface for STM32G0xx + devices contains the following additional features + + (+) Capacity up to 128 Kbytes with single bank architecture supporting read-while-write + capability (RWW) + (+) Single bank memory organization + (+) PCROP protection + + ##### How to use this driver ##### + ============================================================================== + [..] This driver provides functions to configure and program the FLASH memory + of all STM32G0xx devices. It includes + (#) Flash Memory Erase functions: + (++) Lock and Unlock the FLASH interface using HAL_FLASH_Unlock() and + HAL_FLASH_Lock() functions + (++) Erase function: Erase page, erase all sectors + (++) There are two modes of erase : + (+++) Polling Mode using HAL_FLASHEx_Erase() + (+++) Interrupt Mode using HAL_FLASHEx_Erase_IT() + + (#) Option Bytes Programming function: Use HAL_FLASHEx_OBProgram() to : + (++) Set/Reset the write protection + (++) Set the Read protection Level + (++) Program the user Option Bytes + (++) Configure the PCROP protection + (++) Set Securable memory area and boot entry point + + (#) Get Option Bytes Configuration function: Use HAL_FLASHEx_OBGetConfig() to : + (++) Get the value of a write protection area + (++) Know if the read protection is activated + (++) Get the value of the user Option Bytes + (++) Get Securable memory area and boot entry point information + + (#) Enable or disable debugger usage using HAL_FLASHEx_EnableDebugger and + HAL_FLASHEx_DisableDebugger. + + (#) Check is flash content is empty or not using HAL_FLASHEx_FlashEmptyCheck. + and modify this setting (for flash loader purpose e.g.) using + HAL_FLASHEx_ForceFlashEmpty. + + (#) Enable securable memory area protectionusing HAL_FLASHEx_EnableSecMemProtection + + @endverbatim + ****************************************************************************** + * @attention + * + * Copyright (c) 2018 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file in + * the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32g0xx_hal.h" + +/** @addtogroup STM32G0xx_HAL_Driver + * @{ + */ + +/** @defgroup FLASHEx FLASHEx + * @brief FLASH Extended HAL module driver + * @{ + */ + +#ifdef HAL_FLASH_MODULE_ENABLED + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/* Private macro -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ +/** @defgroup FLASHEx_Private_Functions FLASHEx Private Functions + * @{ + */ +static void FLASH_MassErase(uint32_t Banks); +void FLASH_FlushCaches(void); +static void FLASH_OB_WRPConfig(uint32_t WRPArea, uint32_t WRPStartOffset, uint32_t WRDPEndOffset); +static void FLASH_OB_GetWRP(uint32_t WRPArea, uint32_t *WRPStartOffset, uint32_t *WRDPEndOffset); +static void FLASH_OB_OptrConfig(uint32_t UserType, uint32_t UserConfig, uint32_t RDPLevel); +static uint32_t FLASH_OB_GetRDP(void); +static uint32_t FLASH_OB_GetUser(void); +#if defined(FLASH_PCROP_SUPPORT) +static void FLASH_OB_PCROP1AConfig(uint32_t PCROPConfig, uint32_t PCROP1AStartAddr, + uint32_t PCROP1AEndAddr); +static void FLASH_OB_PCROP1BConfig(uint32_t PCROP1BStartAddr, uint32_t PCROP1BEndAddr); +static void FLASH_OB_GetPCROP1A(uint32_t *PCROPConfig, uint32_t *PCROP1AStartAddr, + uint32_t *PCROP1AEndAddr); +static void FLASH_OB_GetPCROP1B(uint32_t *PCROP1BStartAddr, uint32_t *PCROP1BEndAddr); +#if defined(FLASH_DBANK_SUPPORT) +static void FLASH_OB_PCROP2AConfig(uint32_t PCROP2AStartAddr, uint32_t PCROP2AEndAddr); +static void FLASH_OB_PCROP2BConfig(uint32_t PCROP2BStartAddr, uint32_t PCROP2BEndAddr); +static void FLASH_OB_GetPCROP2A(uint32_t *PCROP2AStartAddr, uint32_t *PCROP2AEndAddr); +static void FLASH_OB_GetPCROP2B(uint32_t *PCROP2BStartAddr, uint32_t *PCROP2BEndAddr); +#endif /* FLASH_DBANK_SUPPORT */ +#endif /* FLASH_PCROP_SUPPORT */ +#if defined(FLASH_SECURABLE_MEMORY_SUPPORT) +#if defined(FLASH_DBANK_SUPPORT) +static void FLASH_OB_SecMemConfig(uint32_t BootEntry, uint32_t SecSize, uint32_t SecSize2); +static void FLASH_OB_GetSecMem(uint32_t *BootEntry, uint32_t *SecSize, uint32_t *SecSize2); +#else +static void FLASH_OB_SecMemConfig(uint32_t BootEntry, uint32_t SecSize); +static void FLASH_OB_GetSecMem(uint32_t *BootEntry, uint32_t *SecSize); +#endif /* FLASH_DBANK_SUPPORT */ +#endif /* FLASH_SECURABLE_MEMORY_SUPPORT */ +/** + * @} + */ + +/* Exported functions -------------------------------------------------------*/ +/** @defgroup FLASHEx_Exported_Functions FLASH Extended Exported Functions + * @{ + */ + +/** @defgroup FLASHEx_Exported_Functions_Group1 Extended IO operation functions + * @brief Extended IO operation functions + * +@verbatim + =============================================================================== + ##### Extended programming operation functions ##### + =============================================================================== + [..] + This subsection provides a set of functions allowing to manage the Extended FLASH + programming operations Operations. + +@endverbatim + * @{ + */ +/** + * @brief Perform a mass erase or erase the specified FLASH memory pages. + * @param[in] pEraseInit Pointer to an @ref FLASH_EraseInitTypeDef structure that + * contains the configuration information for the erasing. + * @param[out] PageError Pointer to variable that contains the configuration + * information on faulty page in case of error (0xFFFFFFFF means that all + * the pages have been correctly erased) + * @retval HAL Status + */ +HAL_StatusTypeDef HAL_FLASHEx_Erase(FLASH_EraseInitTypeDef *pEraseInit, uint32_t *PageError) +{ + HAL_StatusTypeDef status; + uint32_t index; + + /* Check the parameters */ + assert_param(IS_FLASH_TYPEERASE(pEraseInit->TypeErase)); + + /* Process Locked */ + __HAL_LOCK(&pFlash); + + /* Reset error code */ + pFlash.ErrorCode = HAL_FLASH_ERROR_NONE; + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); + + if (status == HAL_OK) + { +#if !defined(FLASH_DBANK_SUPPORT) + /* For single bank product force Banks to Bank 1 */ + pEraseInit->Banks = FLASH_BANK_1; +#endif /* FLASH_DBANK_SUPPORT */ + + if (pEraseInit->TypeErase == FLASH_TYPEERASE_MASS) + { + /* Proceed to Mass Erase */ + FLASH_MassErase(pEraseInit->Banks); + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); + } + else + { + /*Initialization of PageError variable*/ + *PageError = 0xFFFFFFFFU; + + for (index = pEraseInit->Page; index < (pEraseInit->Page + pEraseInit->NbPages); index++) + { + /* Start erase page */ + FLASH_PageErase(pEraseInit->Banks, index); + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); + + if (status != HAL_OK) + { + /* In case of error, stop erase procedure and return the faulty address */ + *PageError = index; + break; + } + } + + /* If operation is completed or interrupted, disable the Page Erase Bit */ + CLEAR_BIT(FLASH->CR, FLASH_CR_PER); + } + } + + /* Process Unlocked */ + __HAL_UNLOCK(&pFlash); + + /* return status */ + return status; +} + + +/** + * @brief Perform a mass erase or erase the specified FLASH memory pages with interrupt enabled. + * @param pEraseInit Pointer to an @ref FLASH_EraseInitTypeDef structure that + * contains the configuration information for the erasing. + * @retval HAL Status + */ +HAL_StatusTypeDef HAL_FLASHEx_Erase_IT(FLASH_EraseInitTypeDef *pEraseInit) +{ + HAL_StatusTypeDef status; + + /* Check the parameters */ + assert_param(IS_FLASH_TYPEERASE(pEraseInit->TypeErase)); + + /* Process Locked */ + __HAL_LOCK(&pFlash); + + /* Reset error code */ + pFlash.ErrorCode = HAL_FLASH_ERROR_NONE; + + /* save procedure for interrupt treatment */ + pFlash.ProcedureOnGoing = pEraseInit->TypeErase; + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); + + if (status != HAL_OK) + { + /* Process Unlocked */ + __HAL_UNLOCK(&pFlash); + } + else + { +#if !defined(FLASH_DBANK_SUPPORT) + /* For single bank product force Banks to Bank 1 */ + pEraseInit->Banks = FLASH_BANK_1; +#endif /* FLASH_DBANK_SUPPORT */ + /* Store Bank number */ + pFlash.Banks = pEraseInit->Banks; + + /* Enable End of Operation and Error interrupts */ + FLASH->CR |= FLASH_CR_EOPIE | FLASH_CR_ERRIE; + + if (pEraseInit->TypeErase == FLASH_TYPEERASE_MASS) + { + /* Set Page to 0 for Interrupt callback management */ + pFlash.Page = 0; + + /* Proceed to Mass Erase */ + FLASH_MassErase(pEraseInit->Banks); + } + else + { + /* Erase by page to be done */ + pFlash.NbPagesToErase = pEraseInit->NbPages; + pFlash.Page = pEraseInit->Page; + + /*Erase 1st page and wait for IT */ + FLASH_PageErase(pEraseInit->Banks, pEraseInit->Page); + } + } + + /* return status */ + return status; +} + +/** + * @brief Program Option bytes. + * @param pOBInit Pointer to an @ref FLASH_OBProgramInitTypeDef structure that + * contains the configuration information for the programming. + * @note To configure any option bytes, the option lock bit OPTLOCK must be + * cleared with the call of @ref HAL_FLASH_OB_Unlock() function. + * @note New option bytes configuration will be taken into account only + * - after an option bytes launch through the call of @ref HAL_FLASH_OB_Launch() + * - a Power On Reset + * - an exit from Standby or Shutdown mode. + * @retval HAL Status + */ +HAL_StatusTypeDef HAL_FLASHEx_OBProgram(FLASH_OBProgramInitTypeDef *pOBInit) +{ + uint32_t optr; + HAL_StatusTypeDef status; + + /* Check the parameters */ + assert_param(IS_OPTIONBYTE(pOBInit->OptionType)); + + /* Process Locked */ + __HAL_LOCK(&pFlash); + + pFlash.ErrorCode = HAL_FLASH_ERROR_NONE; + + /* Write protection configuration */ + if ((pOBInit->OptionType & OPTIONBYTE_WRP) != 0x00U) + { + /* Configure of Write protection on the selected area */ + FLASH_OB_WRPConfig(pOBInit->WRPArea, pOBInit->WRPStartOffset, pOBInit->WRPEndOffset); + } + + /* Option register */ + if ((pOBInit->OptionType & (OPTIONBYTE_RDP | OPTIONBYTE_USER)) == (OPTIONBYTE_RDP | OPTIONBYTE_USER)) + { + /* Fully modify OPTR register with RDP & user data */ + FLASH_OB_OptrConfig(pOBInit->USERType, pOBInit->USERConfig, pOBInit->RDPLevel); + } + else if ((pOBInit->OptionType & OPTIONBYTE_RDP) != 0x00U) + { + /* Only modify RDP so get current user data */ + optr = FLASH_OB_GetUser(); + FLASH_OB_OptrConfig(optr, optr, pOBInit->RDPLevel); + } + else if ((pOBInit->OptionType & OPTIONBYTE_USER) != 0x00U) + { + /* Only modify user so get current RDP level */ + optr = FLASH_OB_GetRDP(); + FLASH_OB_OptrConfig(pOBInit->USERType, pOBInit->USERConfig, optr); + } + else + { + /* nothing to do */ + } + +#if defined(FLASH_PCROP_SUPPORT) + /* PCROP Configuration */ + if ((pOBInit->OptionType & OPTIONBYTE_PCROP) != 0x00U) + { + /* Check the parameters */ + assert_param(IS_OB_PCROP_CONFIG(pOBInit->PCROPConfig)); + + if ((pOBInit->PCROPConfig & (OB_PCROP_ZONE_A | OB_PCROP_RDP_ERASE)) != 0x00U) + { + /* Configure the 1A Proprietary code readout protection */ + FLASH_OB_PCROP1AConfig(pOBInit->PCROPConfig, pOBInit->PCROP1AStartAddr, pOBInit->PCROP1AEndAddr); + } + + if ((pOBInit->PCROPConfig & OB_PCROP_ZONE_B) != 0x00U) + { + /* Configure the 1B Proprietary code readout protection */ + FLASH_OB_PCROP1BConfig(pOBInit->PCROP1BStartAddr, pOBInit->PCROP1BEndAddr); + } + +#if defined(FLASH_DBANK_SUPPORT) + if ((pOBInit->PCROPConfig & OB_PCROP_ZONE2_A) != 0x00U) + { + /* Configure the 2A Proprietary code readout protection */ + FLASH_OB_PCROP2AConfig(pOBInit->PCROP2AStartAddr, pOBInit->PCROP2AEndAddr); + } + + if ((pOBInit->PCROPConfig & OB_PCROP_ZONE2_B) != 0x00U) + { + /* Configure the 2B Proprietary code readout protection */ + FLASH_OB_PCROP2BConfig(pOBInit->PCROP2BStartAddr, pOBInit->PCROP2BEndAddr); + } +#endif /* FLASH_DBANK_SUPPORT */ + } +#endif /* FLASH_PCROP_SUPPORT */ + +#if defined(FLASH_SECURABLE_MEMORY_SUPPORT) + /* Securable Memory Area Configuration */ + if ((pOBInit->OptionType & OPTIONBYTE_SEC) != 0x00U) + { +#if defined(FLASH_DBANK_SUPPORT) + /* Configure the securable memory area protection */ + FLASH_OB_SecMemConfig(pOBInit->BootEntryPoint, pOBInit->SecSize, pOBInit->SecSize2); +#else + /* Configure the securable memory area protection */ + FLASH_OB_SecMemConfig(pOBInit->BootEntryPoint, pOBInit->SecSize); +#endif /* FLASH_DBANK_SUPPORT */ + } +#endif /* FLASH_SECURABLE_MEMORY_SUPPORT */ + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); + + if (status == HAL_OK) + { + /* Set OPTSTRT Bit */ + SET_BIT(FLASH->CR, FLASH_CR_OPTSTRT); + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); + + /* If the option byte program operation is completed, disable the OPTSTRT Bit */ + CLEAR_BIT(FLASH->CR, FLASH_CR_OPTSTRT); + } + + /* Process Unlocked */ + __HAL_UNLOCK(&pFlash); + + /* return status */ + return status; +} + +/** + * @brief Get the Option bytes configuration. + * @note warning: this API only read flash register, it does not reflect any + * change that would have been programmed between previous Option byte + * loading and current call. + * @param pOBInit Pointer to an @ref FLASH_OBProgramInitTypeDef structure that contains the + * configuration information. The fields pOBInit->WRPArea should + * indicate which area is requested for the WRP. + * @retval None + */ +void HAL_FLASHEx_OBGetConfig(FLASH_OBProgramInitTypeDef *pOBInit) +{ + pOBInit->OptionType = OPTIONBYTE_ALL; + + /* Get write protection on the selected area */ + FLASH_OB_GetWRP(pOBInit->WRPArea, &(pOBInit->WRPStartOffset), &(pOBInit->WRPEndOffset)); + + /* Get Read protection level */ + pOBInit->RDPLevel = FLASH_OB_GetRDP(); + + /* Get the user option bytes */ + pOBInit->USERConfig = FLASH_OB_GetUser(); + pOBInit->USERType = OB_USER_ALL; + +#if defined(FLASH_PCROP_SUPPORT) + /* Get the Proprietary code readout protection */ + FLASH_OB_GetPCROP1A(&(pOBInit->PCROPConfig), &(pOBInit->PCROP1AStartAddr), &(pOBInit->PCROP1AEndAddr)); + FLASH_OB_GetPCROP1B(&(pOBInit->PCROP1BStartAddr), &(pOBInit->PCROP1BEndAddr)); + pOBInit->PCROPConfig |= (OB_PCROP_ZONE_A | OB_PCROP_ZONE_B); +#if defined(FLASH_DBANK_SUPPORT) + FLASH_OB_GetPCROP2A(&(pOBInit->PCROP2AStartAddr), &(pOBInit->PCROP2AEndAddr)); + FLASH_OB_GetPCROP2B(&(pOBInit->PCROP2BStartAddr), &(pOBInit->PCROP2BEndAddr)); + pOBInit->PCROPConfig |= (OB_PCROP_ZONE2_A | OB_PCROP_ZONE2_B); +#endif /* FLASH_DBANK_SUPPORT */ +#endif /* FLASH_PCROP_SUPPORT */ + +#if defined(FLASH_SECURABLE_MEMORY_SUPPORT) +#if defined(FLASH_DBANK_SUPPORT) + /* Get the Securable Memory Area protection */ + FLASH_OB_GetSecMem(&(pOBInit->BootEntryPoint), &(pOBInit->SecSize), &(pOBInit->SecSize2)); +#else + /* Get the Securable Memory Area protection */ + FLASH_OB_GetSecMem(&(pOBInit->BootEntryPoint), &(pOBInit->SecSize)); +#endif /* FLASH_DBANK_SUPPORT */ +#endif /* FLASH_SECURABLE_MEMORY_SUPPORT */ +} + +#if defined(FLASH_ACR_DBG_SWEN) +/** + * @brief Enable Debugger. + * @note After calling this API, flash interface allow debugger intrusion. + * @retval None + */ +void HAL_FLASHEx_EnableDebugger(void) +{ + FLASH->ACR |= FLASH_ACR_DBG_SWEN; +} + + +/** + * @brief Disable Debugger. + * @note After calling this API, Debugger is disabled: it is no more possible to + * break, see CPU register, etc... + * @retval None + */ +void HAL_FLASHEx_DisableDebugger(void) +{ + FLASH->ACR &= ~FLASH_ACR_DBG_SWEN; +} +#endif /* FLASH_ACR_DBG_SWEN */ + +/** + * @brief Flash Empty check + * @note This API checks if first location in Flash is programmed or not. + * This check is done once by Option Byte Loader. + * @retval 0 if 1st location is not programmed else + */ +uint32_t HAL_FLASHEx_FlashEmptyCheck(void) +{ + return ((FLASH->ACR & FLASH_ACR_PROGEMPTY)); +} + + +/** + * @brief Force Empty check value. + * @note Allows to modify program empty check value in order to force this + * infrmation in Flash Interface, for all next reset that do not launch + * Option Byte Loader. + * @param FlashEmpty this parameter can be a value of @ref FLASHEx_Empty_Check + * @retval None + */ +void HAL_FLASHEx_ForceFlashEmpty(uint32_t FlashEmpty) +{ + uint32_t acr; + assert_param(IS_FLASH_EMPTY_CHECK(FlashEmpty)); + + acr = (FLASH->ACR & ~FLASH_ACR_PROGEMPTY); + FLASH->ACR = (acr | FlashEmpty); +} + + +#if defined(FLASH_SECURABLE_MEMORY_SUPPORT) +/** + * @brief Securable memory area protection enable + * @param Banks Select Bank to be secured. + * This parameter can be a value of @ref FLASH_Banks + * @note On some devices, there is only 1 bank so parameter has to be set FLASH_BANK_1. + * @note This API locks Securable memory area which is defined in SEC_SIZE option byte + * (that can be retrieved calling HAL_FLASHEx_OBGetConfig API and checking + * Secsize). + * @note SEC_PROT bit can only be set, it will be reset by system reset. + * @retval None + */ +void HAL_FLASHEx_EnableSecMemProtection(uint32_t Banks) +{ +#if defined(FLASH_DBANK_SUPPORT) + assert_param(IS_FLASH_BANK(Banks)); + + if (Banks == (FLASH_BANK_2 | FLASH_BANK_1)) + { + FLASH->CR |= (FLASH_CR_SEC_PROT2 | FLASH_CR_SEC_PROT); + } + else if (Banks == FLASH_BANK_2) + { + FLASH->CR |= FLASH_CR_SEC_PROT2; + } + else +#else + UNUSED(Banks); +#endif /* FLASH_DBANK_SUPPORT */ + { + FLASH->CR |= FLASH_CR_SEC_PROT; + } +} +#endif /* FLASH_SECURABLE_MEMORY_SUPPORT */ +/** + * @} + */ + +/** + * @} + */ + +/* Private functions ---------------------------------------------------------*/ +/** @addtogroup FLASHEx_Private_Functions + * @{ + */ + +/** + * @brief Mass erase of FLASH memory. + * @param Banks: Banks to be erased + * This parameter can be a combination of the following values: + * @arg FLASH_BANK_1: Bank1 to be erased + * @arg FLASH_BANK_2: Bank2 to be erased* + * @note (*) availability depends on devices + * @retval None + */ +static void FLASH_MassErase(uint32_t Banks) +{ + /* Check the parameters */ + assert_param(IS_FLASH_BANK(Banks)); + + /* Set the Mass Erase Bit and start bit */ + FLASH->CR |= (FLASH_CR_STRT | Banks); +} + +/** + * @brief Erase the specified FLASH memory page. + * @param Banks: Banks to be erased + * This parameter can one of the following values: + * @arg FLASH_BANK_1: Bank1 to be erased + * @arg FLASH_BANK_2: Bank2 to be erased* + * @param Page FLASH page to erase + * This parameter must be a value between 0 and (max number of pages in Flash - 1) + * @note (*) availability depends on devices + * @retval None + */ +void FLASH_PageErase(uint32_t Banks, uint32_t Page) +{ + uint32_t tmp; + + /* Check the parameters */ + assert_param(IS_FLASH_BANK(Banks)); + assert_param(IS_FLASH_PAGE(Page)); + + /* Get configuration register, then clear page number */ + tmp = (FLASH->CR & ~FLASH_CR_PNB); + +#if defined(FLASH_DBANK_SUPPORT) + /* Check if page has to be erased in bank 1 or 2 */ + if (Banks != FLASH_BANK_1) + { + tmp |= FLASH_CR_BKER; + } + else + { + tmp &= ~FLASH_CR_BKER; + } +#endif /* FLASH_DBANK_SUPPORT */ + + /* Set page number, Page Erase bit & Start bit */ + FLASH->CR = (tmp | (FLASH_CR_STRT | (Page << FLASH_CR_PNB_Pos) | FLASH_CR_PER)); +} + +/** + * @brief Flush the instruction cache. + * @retval None + */ +void FLASH_FlushCaches(void) +{ + /* Flush instruction cache */ + if (READ_BIT(FLASH->ACR, FLASH_ACR_ICEN) != 0U) + { + /* Disable instruction cache */ + __HAL_FLASH_INSTRUCTION_CACHE_DISABLE(); + /* Reset instruction cache */ + __HAL_FLASH_INSTRUCTION_CACHE_RESET(); + /* Enable instruction cache */ + __HAL_FLASH_INSTRUCTION_CACHE_ENABLE(); + } +} + + +/** + * @brief Configure the write protection of the desired pages. + * @note When WRP is active in a zone, it cannot be erased or programmed. + * Consequently, a software mass erase cannot be performed if one zone + * is write-protected. + * @note When the memory read protection level is selected (RDP level = 1), + * it is not possible to program or erase Flash memory if the CPU debug + * features are connected (JTAG or single wire) or boot code is being + * executed from RAM or System flash, even if WRP is not activated. + * @param WRPArea Specifies the area to be configured. + * This parameter can be one of the following values: + * @arg @ref OB_WRPAREA_ZONE_A Flash Zone A + * @arg @ref OB_WRPAREA_ZONE_B Flash Zone B + * @arg @ref OB_WRPAREA_ZONE2_A Flash Bank 2 Zone A (*) + * @arg @ref OB_WRPAREA_ZONE2_B Flash Bank 2 Zone B (*) + * @note (*) availability depends on devices + * @param WRPStartOffset Specifies the start page of the write protected area + * This parameter can be page number between 0 and (max number of pages in the Flash Bank - 1) + * @param WRDPEndOffset Specifies the end page of the write protected area + * This parameter can be page number between WRPStartOffset and (max number of pages in the Flash Bank - 1) + * @retval None + */ +static void FLASH_OB_WRPConfig(uint32_t WRPArea, uint32_t WRPStartOffset, uint32_t WRDPEndOffset) +{ + /* Check the parameters */ + assert_param(IS_OB_WRPAREA(WRPArea)); + assert_param(IS_FLASH_PAGE(WRPStartOffset)); + assert_param(IS_FLASH_PAGE(WRDPEndOffset)); + + /* Configure the write protected area */ + if (WRPArea == OB_WRPAREA_ZONE_A) + { + FLASH->WRP1AR = ((WRDPEndOffset << FLASH_WRP1AR_WRP1A_END_Pos) | WRPStartOffset); + } +#if defined(FLASH_DBANK_SUPPORT) + else if (WRPArea == OB_WRPAREA_ZONE2_A) + { + FLASH->WRP2AR = ((WRDPEndOffset << FLASH_WRP2AR_WRP2A_END_Pos) | WRPStartOffset); + } + else if (WRPArea == OB_WRPAREA_ZONE2_B) + { + FLASH->WRP2BR = ((WRDPEndOffset << FLASH_WRP2BR_WRP2B_END_Pos) | WRPStartOffset); + } +#endif /* FLASH_DBANK_SUPPORT */ + else + { + FLASH->WRP1BR = ((WRDPEndOffset << FLASH_WRP1BR_WRP1B_END_Pos) | WRPStartOffset); + } +} + +/** + * @brief Return the FLASH Write Protection Option Bytes value. + * @param[in] WRPArea Specifies the area to be returned. + * This parameter can be one of the following values: + * @arg @ref OB_WRPAREA_ZONE_A Flash Zone A + * @arg @ref OB_WRPAREA_ZONE_B Flash Zone B + * @arg @ref OB_WRPAREA_ZONE2_A Flash Bank 2 Zone A (*) + * @arg @ref OB_WRPAREA_ZONE2_B Flash Bank 2 Zone B (*) + * @note (*) availability depends on devices + * @param[out] WRPStartOffset Specifies the address where to copied the start page + * of the write protected area + * @param[out] WRDPEndOffset Dpecifies the address where to copied the end page of + * the write protected area + * @retval None + */ +static void FLASH_OB_GetWRP(uint32_t WRPArea, uint32_t *WRPStartOffset, uint32_t *WRDPEndOffset) +{ + /* Check the parameters */ + assert_param(IS_OB_WRPAREA(WRPArea)); + + /* Get the configuration of the write protected area */ + if (WRPArea == OB_WRPAREA_ZONE_A) + { + *WRPStartOffset = READ_BIT(FLASH->WRP1AR, FLASH_WRP1AR_WRP1A_STRT); + *WRDPEndOffset = (READ_BIT(FLASH->WRP1AR, FLASH_WRP1AR_WRP1A_END) >> FLASH_WRP1AR_WRP1A_END_Pos); + } +#if defined(FLASH_DBANK_SUPPORT) + else if (WRPArea == OB_WRPAREA_ZONE2_A) + { + *WRPStartOffset = READ_BIT(FLASH->WRP2AR, FLASH_WRP2AR_WRP2A_STRT); + *WRDPEndOffset = (READ_BIT(FLASH->WRP2AR, FLASH_WRP2AR_WRP2A_END) >> FLASH_WRP2AR_WRP2A_END_Pos); + } + else if (WRPArea == OB_WRPAREA_ZONE2_B) + { + *WRPStartOffset = READ_BIT(FLASH->WRP2BR, FLASH_WRP2BR_WRP2B_STRT); + *WRDPEndOffset = (READ_BIT(FLASH->WRP2BR, FLASH_WRP2BR_WRP2B_END) >> FLASH_WRP2BR_WRP2B_END_Pos); + } +#endif /* FLASH_DBANK_SUPPORT */ + else + { + *WRPStartOffset = READ_BIT(FLASH->WRP1BR, FLASH_WRP1BR_WRP1B_STRT); + *WRDPEndOffset = (READ_BIT(FLASH->WRP1BR, FLASH_WRP1BR_WRP1B_END) >> FLASH_WRP1BR_WRP1B_END_Pos); + } +} + +/** + * @brief Set user & RDP configuration + * @note !!! Warning : When enabling OB_RDP level 2 it is no more possible + * to go back to level 1 or 0 !!! + * @param UserType The FLASH User Option Bytes to be modified. + * This parameter can be a combination of @ref FLASH_OB_USER_Type + * @param UserConfig The FLASH User Option Bytes values. + * This parameter can be a combination of: + * @arg @ref FLASH_OB_USER_BOR_ENABLE(*) + * @arg @ref FLASH_OB_USER_BOR_LEVEL(*) + * @arg @ref FLASH_OB_USER_RESET_CONFIG(*) + * @arg @ref FLASH_OB_USER_nRST_STOP + * @arg @ref FLASH_OB_USER_nRST_STANDBY + * @arg @ref FLASH_OB_USER_nRST_SHUTDOWN(*) + * @arg @ref FLASH_OB_USER_IWDG_SW + * @arg @ref FLASH_OB_USER_IWDG_STOP + * @arg @ref FLASH_OB_USER_IWDG_STANDBY + * @arg @ref FLASH_OB_USER_WWDG_SW + * @arg @ref FLASH_OB_USER_SRAM_PARITY + * @arg @ref FLASH_OB_USER_BANK_SWAP(*) + * @arg @ref FLASH_OB_USER_DUAL_BANK(*) + * @arg @ref FLASH_OB_USER_nBOOT_SEL + * @arg @ref FLASH_OB_USER_nBOOT1 + * @arg @ref FLASH_OB_USER_nBOOT0 + * @arg @ref FLASH_OB_USER_INPUT_RESET_HOLDER(*) + * @param RDPLevel specifies the read protection level. + * This parameter can be one of the following values: + * @arg @ref OB_RDP_LEVEL_0 No protection + * @arg @ref OB_RDP_LEVEL_1 Memory Read protection + * @arg @ref OB_RDP_LEVEL_2 Full chip protection + * @note (*) availability depends on devices + * @retval None + */ +static void FLASH_OB_OptrConfig(uint32_t UserType, uint32_t UserConfig, uint32_t RDPLevel) +{ + uint32_t optr; + + /* Check the parameters */ + assert_param(IS_OB_USER_TYPE(UserType)); + assert_param(IS_OB_USER_CONFIG(UserType, UserConfig)); + assert_param(IS_OB_RDP_LEVEL(RDPLevel)); + + /* Configure the RDP level in the option bytes register */ + optr = FLASH->OPTR; + optr &= ~(UserType | FLASH_OPTR_RDP); + FLASH->OPTR = (optr | UserConfig | RDPLevel); +} + +/** + * @brief Return the FLASH Read Protection level. + * @retval FLASH ReadOut Protection Status: + * This return value can be one of the following values: + * @arg @ref OB_RDP_LEVEL_0 No protection + * @arg @ref OB_RDP_LEVEL_1 Read protection of the memory + * @arg @ref OB_RDP_LEVEL_2 Full chip protection + */ +static uint32_t FLASH_OB_GetRDP(void) +{ + uint32_t rdplvl = READ_BIT(FLASH->OPTR, FLASH_OPTR_RDP); + + if ((rdplvl != OB_RDP_LEVEL_0) && (rdplvl != OB_RDP_LEVEL_2)) + { + return (OB_RDP_LEVEL_1); + } + else + { + return rdplvl; + } +} + +/** + * @brief Return the FLASH User Option Byte value. + * @retval The FLASH User Option Bytes values. It will be a combination of all the following values: + * @arg @ref FLASH_OB_USER_BOR_ENABLE(*) + * @arg @ref FLASH_OB_USER_BOR_LEVEL(*) + * @arg @ref FLASH_OB_USER_RESET_CONFIG(*) + * @arg @ref FLASH_OB_USER_nRST_STOP + * @arg @ref FLASH_OB_USER_nRST_STANDBY + * @arg @ref FLASH_OB_USER_nRST_SHUTDOWN(*) + * @arg @ref FLASH_OB_USER_IWDG_SW + * @arg @ref FLASH_OB_USER_IWDG_STOP + * @arg @ref FLASH_OB_USER_IWDG_STANDBY + * @arg @ref FLASH_OB_USER_WWDG_SW + * @arg @ref FLASH_OB_USER_SRAM_PARITY + * @arg @ref FLASH_OB_USER_BANK_SWAP(*) + * @arg @ref FLASH_OB_USER_DUAL_BANK(*) + * @arg @ref FLASH_OB_USER_nBOOT_SEL + * @arg @ref FLASH_OB_USER_nBOOT1 + * @arg @ref FLASH_OB_USER_nBOOT0 + * @arg @ref FLASH_OB_USER_INPUT_RESET_HOLDER(*) + * @note (*) availability depends on devices + */ +static uint32_t FLASH_OB_GetUser(void) +{ + uint32_t user = ((FLASH->OPTR & ~FLASH_OPTR_RDP) & OB_USER_ALL); + return user; +} + +#if defined(FLASH_PCROP_SUPPORT) +/** + * @brief Configure the 1A Proprietary code readout protection & erase configuration on RDP regression. + * @note It is recommended to align PCROP zone with page granularity when using PCROP_RDP or avoid + * having some executable code in a page where PCROP zone starts or ends. + * @note Minimum PCROP area size is 2 times the chosen granularity: PCROPA_STRT and PCROPA_END. + * So if the requirement is to be able to read-protect 1KB areas, the ROP granularity + * has to be set to 512 Bytes + * @param PCROPConfig specifies the erase configuration (OB_PCROP_RDP_NOT_ERASE or OB_PCROP_RDP_ERASE) + * on RDP level 1 regression. + * @param PCROP1AStartAddr Specifies the Zone 1A Start address of the Proprietary code readout protection + * This parameter can be an address between begin and end of the flash + * @param PCROP1AEndAddr Specifies the Zone 1A end address of the Proprietary code readout protection + * This parameter can be an address between PCROP1AStartAddr and end of the flash + * @retval None + */ +static void FLASH_OB_PCROP1AConfig(uint32_t PCROPConfig, uint32_t PCROP1AStartAddr, uint32_t PCROP1AEndAddr) +{ + uint32_t startoffset; + uint32_t endoffset; + uint32_t pcrop1aend; + uint32_t ropbase; + + /* Check the parameters */ + assert_param(IS_OB_PCROP_CONFIG(PCROPConfig)); + +#if defined(FLASH_DBANK_SUPPORT) + /* Check if banks are swapped (valid if only one bank) */ + if (((FLASH->OPTR & FLASH_OPTR_nSWAP_BANK) != FLASH_OPTR_nSWAP_BANK) && (FLASH_BANK_NB == 2U)) + { + /* Check the parameters */ + assert_param(IS_FLASH_MAIN_SECONDHALF_MEM_ADDRESS(PCROP1AStartAddr)); + assert_param(IS_FLASH_MAIN_SECONDHALF_MEM_ADDRESS(PCROP1AEndAddr)); + + /* Bank swap, bank 1 read only protection is on second half of Flash */ + ropbase = (FLASH_BASE + FLASH_BANK_SIZE); + } + else +#endif /* FLASH_DBANK_SUPPORT */ + { + /* Check the parameters */ + assert_param(IS_FLASH_MAIN_FIRSTHALF_MEM_ADDRESS(PCROP1AStartAddr)); + assert_param(IS_FLASH_MAIN_FIRSTHALF_MEM_ADDRESS(PCROP1AEndAddr)); + + /* No Bank swap, bank 1 read only protection is on first half of Flash */ + ropbase = FLASH_BASE; + } + + /* get pcrop 1A end register */ + pcrop1aend = FLASH->PCROP1AER; + + /* Configure the Proprietary code readout protection offset */ + if ((PCROPConfig & OB_PCROP_ZONE_A) != 0x00U) + { + /* Compute offset depending on pcrop granularity */ + startoffset = ((PCROP1AStartAddr - ropbase) >> FLASH_PCROP_GRANULARITY_OFFSET); + endoffset = ((PCROP1AEndAddr - ropbase) >> FLASH_PCROP_GRANULARITY_OFFSET); + + /* Set Zone A start offset */ + FLASH->PCROP1ASR = startoffset; + + /* Set Zone A end offset */ + pcrop1aend &= ~FLASH_PCROP1AER_PCROP1A_END; + pcrop1aend |= endoffset; + } + + /* Set RDP erase protection if needed. This bit is only set & will be reset by mass erase */ + if ((PCROPConfig & OB_PCROP_RDP_ERASE) != 0x00U) + { + pcrop1aend |= FLASH_PCROP1AER_PCROP_RDP; + } + + /* set 1A End register */ + FLASH->PCROP1AER = pcrop1aend; +} + +/** + * @brief Configure the 1B Proprietary code readout protection. + * @note It is recommended to align PCROP zone with page granularity when using PCROP_RDP or avoid + * having some executable code in a page where PCROP zone starts or ends. + * @note Minimum PCROP area size is 2 times the chosen granularity: PCROPB_STRT and PCROPB_END. + * So if the requirement is to be able to read-protect 1KB areas, the ROP granularity + * has to be set to 512 Bytes + * @param PCROP1BStartAddr Specifies the Zone 1B Start address of the Proprietary code readout protection + * This parameter can be an address between begin and end of the flash + * @param PCROP1BEndAddr Specifies the Zone 1B end address of the Proprietary code readout protection + * This parameter can be an address between PCROP1BStartAddr and end of the flash + * @retval None + */ +static void FLASH_OB_PCROP1BConfig(uint32_t PCROP1BStartAddr, uint32_t PCROP1BEndAddr) +{ + uint32_t startoffset; + uint32_t endoffset; + uint32_t ropbase; + +#if defined(FLASH_DBANK_SUPPORT) + /* Check if banks are swapped (valid if only one bank) */ + if (((FLASH->OPTR & FLASH_OPTR_nSWAP_BANK) != FLASH_OPTR_nSWAP_BANK) && (FLASH_BANK_NB == 2U)) + { + /* Check the parameters */ + assert_param(IS_FLASH_MAIN_SECONDHALF_MEM_ADDRESS(PCROP1BStartAddr)); + assert_param(IS_FLASH_MAIN_SECONDHALF_MEM_ADDRESS(PCROP1BEndAddr)); + + /* Bank swap, bank 1 read only protection is on second half of Flash */ + ropbase = (FLASH_BASE + FLASH_BANK_SIZE); + } + else +#endif /* FLASH_DBANK_SUPPORT */ + { + /* Check the parameters */ + assert_param(IS_FLASH_MAIN_FIRSTHALF_MEM_ADDRESS(PCROP1BStartAddr)); + assert_param(IS_FLASH_MAIN_FIRSTHALF_MEM_ADDRESS(PCROP1BEndAddr)); + + /* No Bank swap, bank 1 read only protection is on first half of Flash */ + ropbase = FLASH_BASE; + } + + /* Configure the Proprietary code readout protection offset */ + startoffset = ((PCROP1BStartAddr - ropbase) >> FLASH_PCROP_GRANULARITY_OFFSET); + endoffset = ((PCROP1BEndAddr - ropbase) >> FLASH_PCROP_GRANULARITY_OFFSET); + + /* Set Zone B start offset */ + FLASH->PCROP1BSR = startoffset; + /* Set Zone B end offset */ + FLASH->PCROP1BER = endoffset; +} + +/** + * @brief Return the FLASH PCROP Protection Option Bytes value. + * @param PCROPConfig [out] specifies the configuration of PCROP_RDP option. + * @param PCROP1AStartAddr [out] Specifies the address where to copied the start address + * of the 1A Proprietary code readout protection + * @param PCROP1AEndAddr [out] Specifies the address where to copied the end address of + * the 1A Proprietary code readout protection + * @retval None + */ +static void FLASH_OB_GetPCROP1A(uint32_t *PCROPConfig, uint32_t *PCROP1AStartAddr, uint32_t *PCROP1AEndAddr) +{ + uint32_t pcrop; + uint32_t ropbase; + +#if defined(FLASH_DBANK_SUPPORT) + /* Check if banks are swapped (valid if only one bank) */ + if (((FLASH->OPTR & FLASH_OPTR_nSWAP_BANK) != FLASH_OPTR_nSWAP_BANK) && (FLASH_BANK_NB == 2U)) + { + /* Bank swap, bank 1 read only protection is on second half of Flash */ + ropbase = (FLASH_BASE + FLASH_BANK_SIZE); + } + else +#endif /* FLASH_DBANK_SUPPORT */ + { + /* No Bank swap, bank 1 read only protection is on first half of Flash */ + ropbase = FLASH_BASE; + } + + pcrop = (FLASH->PCROP1ASR & FLASH_PCROP1ASR_PCROP1A_STRT); + *PCROP1AStartAddr = (pcrop << FLASH_PCROP_GRANULARITY_OFFSET); + *PCROP1AStartAddr += ropbase; + + pcrop = FLASH->PCROP1AER; + *PCROP1AEndAddr = ((pcrop & FLASH_PCROP1AER_PCROP1A_END) << FLASH_PCROP_GRANULARITY_OFFSET); + *PCROP1AEndAddr += (ropbase + FLASH_PCROP_GRANULARITY - 1U); + + *PCROPConfig &= ~OB_PCROP_RDP_ERASE; + *PCROPConfig |= (pcrop & FLASH_PCROP1AER_PCROP_RDP); +} + +/** + * @brief Return the FLASH PCROP Protection Option Bytes value. + * @param PCROP1BStartAddr [out] Specifies the address where to copied the start address + * of the 1B Proprietary code readout protection + * @param PCROP1BEndAddr [out] Specifies the address where to copied the end address of + * the 1B Proprietary code readout protection + * @retval None + */ +static void FLASH_OB_GetPCROP1B(uint32_t *PCROP1BStartAddr, uint32_t *PCROP1BEndAddr) +{ + uint32_t pcrop; + uint32_t ropbase; + +#if defined(FLASH_DBANK_SUPPORT) + /* Check if banks are swapped (valid if only one bank) */ + if (((FLASH->OPTR & FLASH_OPTR_nSWAP_BANK) != FLASH_OPTR_nSWAP_BANK) && (FLASH_BANK_NB == 2U)) + { + /* Bank swap, bank 1 read only protection is on second half of Flash */ + ropbase = (FLASH_BASE + FLASH_BANK_SIZE); + } + else +#endif /* FLASH_DBANK_SUPPORT */ + { + /* No Bank swap, bank 1 read only protection is on first half of Flash */ + ropbase = FLASH_BASE; + } + + pcrop = (FLASH->PCROP1BSR & FLASH_PCROP1BSR_PCROP1B_STRT); + *PCROP1BStartAddr = (pcrop << FLASH_PCROP_GRANULARITY_OFFSET); + *PCROP1BStartAddr += ropbase; + + pcrop = (FLASH->PCROP1BER & FLASH_PCROP1BER_PCROP1B_END); + *PCROP1BEndAddr = (pcrop << FLASH_PCROP_GRANULARITY_OFFSET); + *PCROP1BEndAddr += (ropbase + FLASH_PCROP_GRANULARITY - 1U); +} + +#if defined(FLASH_DBANK_SUPPORT) +/** + * @brief Configure the 2A Proprietary code readout protection. + * @note It is recommended to align PCROP zone with page granularity when using PCROP_RDP or avoid + * having some executable code in a page where PCROP zone starts or ends. + * @note Minimum PCROP area size is 2 times the chosen granularity: PCROPA_STRT and PCROPA_END. + * So if the requirement is to be able to read-protect 1KB areas, the ROP granularity + * has to be set to 512 Bytes + * @param PCROP2AStartAddr Specifies the Zone 2A Start address of the Proprietary code readout protection + * This parameter can be an address between begin and end of the flash + * @param PCROP2AEndAddr Specifies the Zone 2A end address of the Proprietary code readout protection + * This parameter can be an address between PCROP2AStartAddr and end of the flash + * @retval None + */ +static void FLASH_OB_PCROP2AConfig(uint32_t PCROP2AStartAddr, uint32_t PCROP2AEndAddr) +{ + uint32_t startoffset; + uint32_t endoffset; + uint32_t ropbase; + + /* Check if banks are swapped */ + if ((FLASH->OPTR & FLASH_OPTR_nSWAP_BANK) != 0x00u) + { + /* Check the parameters */ + assert_param(IS_FLASH_MAIN_SECONDHALF_MEM_ADDRESS(PCROP2AStartAddr)); + assert_param(IS_FLASH_MAIN_SECONDHALF_MEM_ADDRESS(PCROP2AEndAddr)); + + /* No Bank swap, bank 2 read only protection is on second half of Flash */ + ropbase = (FLASH_BASE + FLASH_BANK_SIZE); + } + else + { + /* Check the parameters */ + assert_param(IS_FLASH_MAIN_FIRSTHALF_MEM_ADDRESS(PCROP2AStartAddr)); + assert_param(IS_FLASH_MAIN_FIRSTHALF_MEM_ADDRESS(PCROP2AEndAddr)); + + /* Bank swap, bank 2 read only protection is on first half of Flash */ + ropbase = FLASH_BASE; + } + + /* Configure the Proprietary code readout protection offset */ + startoffset = ((PCROP2AStartAddr - ropbase) >> FLASH_PCROP_GRANULARITY_OFFSET); + endoffset = ((PCROP2AEndAddr - ropbase) >> FLASH_PCROP_GRANULARITY_OFFSET); + + /* Set Zone A start offset */ + FLASH->PCROP2ASR = startoffset; + /* Set Zone A end offset */ + FLASH->PCROP2AER = endoffset; +} + +/** + * @brief Configure the 2B Proprietary code readout protection. + * @note It is recommended to align PCROP zone with page granularity when using PCROP_RDP or avoid + * having some executable code in a page where PCROP zone starts or ends. + * @note Minimum PCROP area size is 2 times the chosen granularity: PCROP_STRT and PCROP_END. + * So if the requirement is to be able to read-protect 1KB areas, the ROP granularity + * has to be set to 512 Bytes + * @param PCROP2BStartAddr Specifies the Zone 2B Start address of the Proprietary code readout protection + * This parameter can be an address between begin and end of the flash + * @param PCROP2BEndAddr Specifies the Zone 2B end address of the Proprietary code readout protection + * This parameter can be an address between PCROP2BStartAddr and end of the flash + * @retval None + */ +static void FLASH_OB_PCROP2BConfig(uint32_t PCROP2BStartAddr, uint32_t PCROP2BEndAddr) +{ + uint32_t startoffset; + uint32_t endoffset; + uint32_t ropbase; + + /* Check if banks are swapped */ + if ((FLASH->OPTR & FLASH_OPTR_nSWAP_BANK) != 0x00u) + { + /* Check the parameters */ + assert_param(IS_FLASH_MAIN_SECONDHALF_MEM_ADDRESS(PCROP2BStartAddr)); + assert_param(IS_FLASH_MAIN_SECONDHALF_MEM_ADDRESS(PCROP2BEndAddr)); + + /* No Bank swap, bank 2 read only protection is on second half of Flash */ + ropbase = (FLASH_BASE + FLASH_BANK_SIZE); + } + else + { + /* Check the parameters */ + assert_param(IS_FLASH_MAIN_FIRSTHALF_MEM_ADDRESS(PCROP2BStartAddr)); + assert_param(IS_FLASH_MAIN_FIRSTHALF_MEM_ADDRESS(PCROP2BEndAddr)); + + /* Bank swap, bank 2 read only protection is on first half of Flash */ + ropbase = FLASH_BASE; + } + + /* Configure the Proprietary code readout protection offset */ + startoffset = ((PCROP2BStartAddr - ropbase) >> FLASH_PCROP_GRANULARITY_OFFSET); + endoffset = ((PCROP2BEndAddr - ropbase) >> FLASH_PCROP_GRANULARITY_OFFSET); + + /* Set Zone B start offset */ + FLASH->PCROP2BSR = startoffset; + /* Set Zone B end offset */ + FLASH->PCROP2BER = endoffset; +} + +/** + * @brief Return the FLASH PCROP Protection Option Bytes value. + * @param PCROP2AStartAddr [out] Specifies the address where to copied the start address + * of the 2A Proprietary code readout protection + * @param PCROP2AEndAddr [out] Specifies the address where to copied the end address of + * the 2A Proprietary code readout protection + * @retval None + */ +static void FLASH_OB_GetPCROP2A(uint32_t *PCROP2AStartAddr, uint32_t *PCROP2AEndAddr) +{ + uint32_t pcrop; + uint32_t ropbase; + + /* Check if banks are swapped */ + if ((FLASH->OPTR & FLASH_OPTR_nSWAP_BANK) != 0x00u) + { + /* No Bank swap, bank 2 read only protection is on second half of Flash */ + ropbase = (FLASH_BASE + FLASH_BANK_SIZE); + } + else + { + /* Bank swap, bank 2 read only protection is on first half of Flash */ + ropbase = FLASH_BASE; + } + + pcrop = (FLASH->PCROP2ASR & FLASH_PCROP2ASR_PCROP2A_STRT); + *PCROP2AStartAddr = (pcrop << FLASH_PCROP_GRANULARITY_OFFSET); + *PCROP2AStartAddr += ropbase; + + pcrop = (FLASH->PCROP2AER & FLASH_PCROP2AER_PCROP2A_END); + *PCROP2AEndAddr = (pcrop << FLASH_PCROP_GRANULARITY_OFFSET); + *PCROP2AEndAddr += (ropbase + FLASH_PCROP_GRANULARITY - 1U); +} + +/** + * @brief Return the FLASH PCROP Protection Option Bytes value. + * @param PCROP2BStartAddr [out] Specifies the address where to copied the start address + * of the 2B Proprietary code readout protection + * @param PCROP2BEndAddr [out] Specifies the address where to copied the end address of + * the 2B Proprietary code readout protection + * @retval None + */ +static void FLASH_OB_GetPCROP2B(uint32_t *PCROP2BStartAddr, uint32_t *PCROP2BEndAddr) +{ + uint32_t pcrop; + uint32_t ropbase; + + /* Check if banks are swapped */ + if ((FLASH->OPTR & FLASH_OPTR_nSWAP_BANK) != 0x00u) + { + /* No Bank swap, bank 2 read only protection is on second half of Flash */ + ropbase = (FLASH_BASE + FLASH_BANK_SIZE); + } + else + { + /* Bank swap, bank 2 read only protection is on first half of Flash */ + ropbase = FLASH_BASE; + } + + pcrop = (FLASH->PCROP2BSR & FLASH_PCROP2BSR_PCROP2B_STRT); + *PCROP2BStartAddr = (pcrop << FLASH_PCROP_GRANULARITY_OFFSET); + *PCROP2BStartAddr += ropbase; + + pcrop = (FLASH->PCROP2BER & FLASH_PCROP2BER_PCROP2B_END); + *PCROP2BEndAddr = (pcrop << FLASH_PCROP_GRANULARITY_OFFSET); + *PCROP2BEndAddr += (ropbase + FLASH_PCROP_GRANULARITY - 1U); +} +#endif /* FLASH_DBANK_SUPPORT */ +#endif /* FLASH_PCROP_SUPPORT */ + +#if defined(FLASH_SECURABLE_MEMORY_SUPPORT) +#if defined(FLASH_DBANK_SUPPORT) +/** + * @brief Configure Securable Memory area feature. + * @param BootEntry specifies if boot scheme is forced to Flash (System or user) or not + * This parameter can be one of the following values: + * @arg @ref OB_BOOT_ENTRY_FORCED_NONE No boot entry forced + * @arg @ref OB_BOOT_ENTRY_FORCED_FLASH Flash selected as unique entry boot + * @param SecSize specifies number of pages to protect as securable memory area, starting from + * beginning of Bank1 (page 0). + * @param SecSize2 specifies number of pages to protect as securable memory area, starting from + * beginning of Bank2 (page 0). + * @retval None + */ +static void FLASH_OB_SecMemConfig(uint32_t BootEntry, uint32_t SecSize, uint32_t SecSize2) +{ + uint32_t secmem; + + /* Check the parameters */ + assert_param(IS_OB_SEC_BOOT_LOCK(BootEntry)); + assert_param(IS_OB_SEC_SIZE(SecSize)); + + if ((FLASH_BANK_NB == 2U)) + { + assert_param(IS_OB_SEC_SIZE(SecSize2)); + } + + /* Set securable memory area configuration */ + secmem = (FLASH->SECR & ~(FLASH_SECR_BOOT_LOCK | FLASH_SECR_SEC_SIZE | FLASH_SECR_SEC_SIZE2)); + FLASH->SECR = (secmem | BootEntry | SecSize | (SecSize2 << FLASH_SECR_SEC_SIZE2_Pos)); +} + +/** + * @brief Return the FLASH Securable memory area protection Option Bytes value. + * @param BootEntry specifies boot scheme configuration + * @param SecSize specifies number of pages to protect as secure memory area, starting from + * beginning of Bank1 (page 0). + * @param SecSize2 specifies number of pages to protect as secure memory area, starting from + * beginning of Bank2 (page 0). + * @retval None + */ +static void FLASH_OB_GetSecMem(uint32_t *BootEntry, uint32_t *SecSize, uint32_t *SecSize2) +{ + uint32_t secmem = FLASH->SECR; + + *BootEntry = (secmem & FLASH_SECR_BOOT_LOCK); + *SecSize = (secmem & FLASH_SECR_SEC_SIZE); + *SecSize2 = (secmem & FLASH_SECR_SEC_SIZE2) >> FLASH_SECR_SEC_SIZE2_Pos; +} + +#else +/** + * @brief Configure Securable Memory area feature. + * @param BootEntry specifies if boot scheme is forced to Flash (System or user) or not + * This parameter can be one of the following values: + * @arg @ref OB_BOOT_ENTRY_FORCED_NONE No boot entry forced + * @arg @ref OB_BOOT_ENTRY_FORCED_FLASH FLash selected as unique entry boot + * @param SecSize specifies number of pages to protect as securable memory area, starting from + * beginning of the Flash (page 0). + * @retval None + */ +static void FLASH_OB_SecMemConfig(uint32_t BootEntry, uint32_t SecSize) +{ + uint32_t secmem; + + /* Check the parameters */ + assert_param(IS_OB_SEC_BOOT_LOCK(BootEntry)); + assert_param(IS_OB_SEC_SIZE(SecSize)); + + /* Set securable memory area configuration */ + secmem = (FLASH->SECR & ~(FLASH_SECR_BOOT_LOCK | FLASH_SECR_SEC_SIZE)); + FLASH->SECR = (secmem | BootEntry | SecSize); +} + +/** + * @brief Return the FLASH Securable memory area protection Option Bytes value. + * @param BootEntry specifies boot scheme configuration + * @param SecSize specifies number of pages to protect as secure memory area, starting from + * beginning of the Flash (page 0). + * @retval None + */ +static void FLASH_OB_GetSecMem(uint32_t *BootEntry, uint32_t *SecSize) +{ + uint32_t secmem = FLASH->SECR; + + *BootEntry = (secmem & FLASH_SECR_BOOT_LOCK); + *SecSize = (secmem & FLASH_SECR_SEC_SIZE); +} +#endif /* FLASH_DBANK_SUPPORT */ +#endif /* FLASH_SECURABLE_MEMORY_SUPPORT */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* HAL_FLASH_MODULE_ENABLED */ + +/** + * @} + */ + +/** + * @} + */ + diff --git a/firmware/Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.c b/firmware/Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.c new file mode 100644 index 0000000..4b4cc8a --- /dev/null +++ b/firmware/Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.c @@ -0,0 +1,550 @@ +/** + ****************************************************************************** + * @file stm32g0xx_hal_gpio.c + * @author MCD Application Team + * @brief GPIO HAL module driver. + * This file provides firmware functions to manage the following + * functionalities of the General Purpose Input/Output (GPIO) peripheral: + * + Initialization and de-initialization functions + * + IO operation functions + * + ****************************************************************************** + * @attention + * + * Copyright (c) 2018 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + @verbatim + ============================================================================== + ##### GPIO Peripheral features ##### + ============================================================================== + [..] + (+) Each port bit of the general-purpose I/O (GPIO) ports can be individually + configured by software in several modes: + (++) Input mode + (++) Analog mode + (++) Output mode + (++) Alternate function mode + (++) External interrupt/event lines + + (+) During and just after reset, the alternate functions and external interrupt + lines are not active and the I/O ports are configured in input floating mode. + + (+) All GPIO pins have weak internal pull-up and pull-down resistors, which can be + activated or not. + + (+) In Output or Alternate mode, each IO can be configured on open-drain or push-pull + type and the IO speed can be selected depending on the VDD value. + + (+) The microcontroller IO pins are connected to onboard peripherals/modules through a + multiplexer that allows only one peripheral alternate function (AF) connected + to an IO pin at a time. In this way, there can be no conflict between peripherals + sharing the same IO pin. + + (+) All ports have external interrupt/event capability. To use external interrupt + lines, the port must be configured in input mode. All available GPIO pins are + connected to the 16 external interrupt/event lines from EXTI0 to EXTI15. + + (+) The external interrupt/event controller consists of up to 28 edge detectors + (16 lines are connected to GPIO) for generating event/interrupt requests (each + input line can be independently configured to select the type (interrupt or event) + and the corresponding trigger event (rising or falling or both). Each line can + also be masked independently. + + ##### How to use this driver ##### + ============================================================================== + [..] + (#) Enable the GPIO AHB clock using the following function: __HAL_RCC_GPIOx_CLK_ENABLE(). + + (#) Configure the GPIO pin(s) using HAL_GPIO_Init(). + (++) Configure the IO mode using "Mode" member from GPIO_InitTypeDef structure + (++) Activate Pull-up, Pull-down resistor using "Pull" member from GPIO_InitTypeDef + structure. + (++) In case of Output or alternate function mode selection: the speed is + configured through "Speed" member from GPIO_InitTypeDef structure. + (++) In alternate mode is selection, the alternate function connected to the IO + is configured through "Alternate" member from GPIO_InitTypeDef structure. + (++) Analog mode is required when a pin is to be used as ADC channel + or DAC output. + (++) In case of external interrupt/event selection the "Mode" member from + GPIO_InitTypeDef structure select the type (interrupt or event) and + the corresponding trigger event (rising or falling or both). + + (#) In case of external interrupt/event mode selection, configure NVIC IRQ priority + mapped to the EXTI line using HAL_NVIC_SetPriority() and enable it using + HAL_NVIC_EnableIRQ(). + + (#) To get the level of a pin configured in input mode use HAL_GPIO_ReadPin(). + + (#) To set/reset the level of a pin configured in output mode use + HAL_GPIO_WritePin()/HAL_GPIO_TogglePin(). + + (#) To lock pin configuration until next reset use HAL_GPIO_LockPin(). + + (#) During and just after reset, the alternate functions are not + active and the GPIO pins are configured in input floating mode (except JTAG + pins). + + (#) The LSE oscillator pins OSC32_IN and OSC32_OUT can be used as general purpose + (PC14 and PC15, respectively) when the LSE oscillator is off. The LSE has + priority over the GPIO function. + + (#) The HSE oscillator pins OSC_IN/OSC_OUT can be used as + general purpose PF0 and PF1, respectively, when the HSE oscillator is off. + The HSE has priority over the GPIO function. + + @endverbatim + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32g0xx_hal.h" + +/** @addtogroup STM32G0xx_HAL_Driver + * @{ + */ + +/** @addtogroup GPIO + * @{ + */ +/** MISRA C:2012 deviation rule has been granted for following rules: + * Rule-12.2 - Medium: RHS argument is in interval [0,INF] which is out of + * range of the shift operator in following API : + * HAL_GPIO_Init + * HAL_GPIO_DeInit + */ + +#ifdef HAL_GPIO_MODULE_ENABLED + +/* Private typedef -----------------------------------------------------------*/ +/* Private defines ------------------------------------------------------------*/ +/** @addtogroup GPIO_Private_Constants + * @{ + */ +#define GPIO_NUMBER (16u) +/** + * @} + */ + +/* Private macros ------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ +/* Exported functions --------------------------------------------------------*/ + +/** @addtogroup GPIO_Exported_Functions + * @{ + */ + +/** @addtogroup GPIO_Exported_Functions_Group1 + * @brief Initialization and Configuration functions + * +@verbatim + =============================================================================== + ##### Initialization and de-initialization functions ##### + =============================================================================== + +@endverbatim + * @{ + */ + +/** + * @brief Initialize the GPIOx peripheral according to the specified parameters in the GPIO_Init. + * @param GPIOx where x can be (A..F) to select the GPIO peripheral for STM32G0xx family + * @param GPIO_Init pointer to a GPIO_InitTypeDef structure that contains + * the configuration information for the specified GPIO peripheral. + * @retval None + */ +void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init) +{ + uint32_t position = 0x00u; + uint32_t iocurrent; + uint32_t temp; + + /* Check the parameters */ + assert_param(IS_GPIO_ALL_INSTANCE(GPIOx)); + assert_param(IS_GPIO_PIN(GPIO_Init->Pin)); + assert_param(IS_GPIO_MODE(GPIO_Init->Mode)); + + /* Configure the port pins */ + while (((GPIO_Init->Pin) >> position) != 0x00u) + { + /* Get current io position */ + iocurrent = (GPIO_Init->Pin) & (1uL << position); + + if (iocurrent != 0x00u) + { + /*--------------------- GPIO Mode Configuration ------------------------*/ + /* In case of Output or Alternate function mode selection */ + if (((GPIO_Init->Mode & GPIO_MODE) == MODE_OUTPUT) || ((GPIO_Init->Mode & GPIO_MODE) == MODE_AF)) + { + /* Check the Speed parameter */ + assert_param(IS_GPIO_SPEED(GPIO_Init->Speed)); + + /* Configure the IO Speed */ + temp = GPIOx->OSPEEDR; + temp &= ~(GPIO_OSPEEDR_OSPEED0 << (position * 2u)); + temp |= (GPIO_Init->Speed << (position * 2u)); + GPIOx->OSPEEDR = temp; + + /* Configure the IO Output Type */ + temp = GPIOx->OTYPER; + temp &= ~(GPIO_OTYPER_OT0 << position) ; + temp |= (((GPIO_Init->Mode & OUTPUT_TYPE) >> OUTPUT_TYPE_Pos) << position); + GPIOx->OTYPER = temp; + } + + if ((GPIO_Init->Mode & GPIO_MODE) != MODE_ANALOG) + { + /* Check the Pull parameter */ + assert_param(IS_GPIO_PULL(GPIO_Init->Pull)); + + /* Activate the Pull-up or Pull down resistor for the current IO */ + temp = GPIOx->PUPDR; + temp &= ~(GPIO_PUPDR_PUPD0 << (position * 2u)); + temp |= ((GPIO_Init->Pull) << (position * 2u)); + GPIOx->PUPDR = temp; + } + + /* In case of Alternate function mode selection */ + if ((GPIO_Init->Mode & GPIO_MODE) == MODE_AF) + { + /* Check the Alternate function parameters */ + assert_param(IS_GPIO_AF_INSTANCE(GPIOx)); + assert_param(IS_GPIO_AF(GPIO_Init->Alternate)); + + /* Configure Alternate function mapped with the current IO */ + temp = GPIOx->AFR[position >> 3u]; + temp &= ~(0xFu << ((position & 0x07u) * 4u)); + temp |= ((GPIO_Init->Alternate) << ((position & 0x07u) * 4u)); + GPIOx->AFR[position >> 3u] = temp; + } + + /* Configure IO Direction mode (Input, Output, Alternate or Analog) */ + temp = GPIOx->MODER; + temp &= ~(GPIO_MODER_MODE0 << (position * 2u)); + temp |= ((GPIO_Init->Mode & GPIO_MODE) << (position * 2u)); + GPIOx->MODER = temp; + + /*--------------------- EXTI Mode Configuration ------------------------*/ + /* Configure the External Interrupt or event for the current IO */ + if ((GPIO_Init->Mode & EXTI_MODE) != 0x00u) + { + temp = EXTI->EXTICR[position >> 2u]; + temp &= ~(0x0FuL << (8u * (position & 0x03u))); + temp |= (GPIO_GET_INDEX(GPIOx) << (8u * (position & 0x03u))); + EXTI->EXTICR[position >> 2u] = temp; + + /* Clear Rising Falling edge configuration */ + temp = EXTI->RTSR1; + temp &= ~(iocurrent); + if ((GPIO_Init->Mode & TRIGGER_RISING) != 0x00u) + { + temp |= iocurrent; + } + EXTI->RTSR1 = temp; + + temp = EXTI->FTSR1; + temp &= ~(iocurrent); + if ((GPIO_Init->Mode & TRIGGER_FALLING) != 0x00u) + { + temp |= iocurrent; + } + EXTI->FTSR1 = temp; + + /* Clear EXTI line configuration */ + temp = EXTI->EMR1; + temp &= ~(iocurrent); + if ((GPIO_Init->Mode & EXTI_EVT) != 0x00u) + { + temp |= iocurrent; + } + EXTI->EMR1 = temp; + + temp = EXTI->IMR1; + temp &= ~(iocurrent); + if ((GPIO_Init->Mode & EXTI_IT) != 0x00u) + { + temp |= iocurrent; + } + EXTI->IMR1 = temp; + } + } + + position++; + } +} + +/** + * @brief De-initialize the GPIOx peripheral registers to their default reset values. + * @param GPIOx where x can be (A..F) to select the GPIO peripheral for STM32G0xx family + * @param GPIO_Pin specifies the port bit to be written. + * This parameter can be any combination of GPIO_Pin_x where x can be (0..15). + * @retval None + */ +void HAL_GPIO_DeInit(GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin) +{ + uint32_t position = 0x00u; + uint32_t iocurrent; + uint32_t tmp; + + /* Check the parameters */ + assert_param(IS_GPIO_ALL_INSTANCE(GPIOx)); + assert_param(IS_GPIO_PIN(GPIO_Pin)); + + /* Configure the port pins */ + while ((GPIO_Pin >> position) != 0x00u) + { + /* Get current io position */ + iocurrent = (GPIO_Pin) & (1uL << position); + + if (iocurrent != 0x00u) + { + /*------------------------- EXTI Mode Configuration --------------------*/ + /* Clear the External Interrupt or Event for the current IO */ + + tmp = EXTI->EXTICR[position >> 2u]; + tmp &= (0x0FuL << (8u * (position & 0x03u))); + if (tmp == (GPIO_GET_INDEX(GPIOx) << (8u * (position & 0x03u)))) + { + /* Clear EXTI line configuration */ + EXTI->IMR1 &= ~(iocurrent); + EXTI->EMR1 &= ~(iocurrent); + + /* Clear Rising Falling edge configuration */ + EXTI->FTSR1 &= ~(iocurrent); + EXTI->RTSR1 &= ~(iocurrent); + + tmp = 0x0FuL << (8u * (position & 0x03u)); + EXTI->EXTICR[position >> 2u] &= ~tmp; + } + + /*------------------------- GPIO Mode Configuration --------------------*/ + /* Configure IO in Analog Mode */ + GPIOx->MODER |= (GPIO_MODER_MODE0 << (position * 2u)); + + /* Configure the default Alternate Function in current IO */ + GPIOx->AFR[position >> 3u] &= ~(0xFu << ((position & 0x07u) * 4u)) ; + + /* Configure the default value for IO Speed */ + GPIOx->OSPEEDR &= ~(GPIO_OSPEEDR_OSPEED0 << (position * 2u)); + + /* Configure the default value IO Output Type */ + GPIOx->OTYPER &= ~(GPIO_OTYPER_OT0 << position) ; + + /* Deactivate the Pull-up and Pull-down resistor for the current IO */ + GPIOx->PUPDR &= ~(GPIO_PUPDR_PUPD0 << (position * 2u)); + } + + position++; + } +} + +/** + * @} + */ + +/** @addtogroup GPIO_Exported_Functions_Group2 + * @brief GPIO Read, Write, Toggle, Lock and EXTI management functions. + * +@verbatim + =============================================================================== + ##### IO operation functions ##### + =============================================================================== + +@endverbatim + * @{ + */ + +/** + * @brief Read the specified input port pin. + * @param GPIOx where x can be (A..F) to select the GPIO peripheral for STM32G0xx family + * @param GPIO_Pin specifies the port bit to read. + * This parameter can be any combination of GPIO_Pin_x where x can be (0..15). + * @retval The input port pin value. + */ +GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin) +{ + GPIO_PinState bitstatus; + + /* Check the parameters */ + assert_param(IS_GPIO_PIN(GPIO_Pin)); + + if ((GPIOx->IDR & GPIO_Pin) != 0x00u) + { + bitstatus = GPIO_PIN_SET; + } + else + { + bitstatus = GPIO_PIN_RESET; + } + return bitstatus; +} + +/** + * @brief Set or clear the selected data port bit. + * + * @note This function uses GPIOx_BSRR and GPIOx_BRR registers to allow atomic read/modify + * accesses. In this way, there is no risk of an IRQ occurring between + * the read and the modify access. + * + * @param GPIOx where x can be (A..F) to select the GPIO peripheral for STM32G0xx family + * @param GPIO_Pin specifies the port bit to be written. + * This parameter can be any combination of GPIO_Pin_x where x can be (0..15). + * @param PinState specifies the value to be written to the selected bit. + * This parameter can be one of the GPIO_PinState enum values: + * @arg GPIO_PIN_RESET: to clear the port pin + * @arg GPIO_PIN_SET: to set the port pin + * @retval None + */ +void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState) +{ + /* Check the parameters */ + assert_param(IS_GPIO_PIN(GPIO_Pin)); + assert_param(IS_GPIO_PIN_ACTION(PinState)); + + if (PinState != GPIO_PIN_RESET) + { + GPIOx->BSRR = (uint32_t)GPIO_Pin; + } + else + { + GPIOx->BRR = (uint32_t)GPIO_Pin; + } +} + +/** + * @brief Toggle the specified GPIO pin. + * @param GPIOx where x can be (A..F) to select the GPIO peripheral for STM32G0xx family + * @param GPIO_Pin specifies the pin to be toggled. + * This parameter can be any combination of GPIO_Pin_x where x can be (0..15). + * @retval None + */ +void HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin) +{ + uint32_t odr; + + /* Check the parameters */ + assert_param(IS_GPIO_PIN(GPIO_Pin)); + + /* get current Output Data Register value */ + odr = GPIOx->ODR; + + /* Set selected pins that were at low level, and reset ones that were high */ + GPIOx->BSRR = ((odr & GPIO_Pin) << GPIO_NUMBER) | (~odr & GPIO_Pin); +} + +/** +* @brief Lock GPIO Pins configuration registers. + * @note The locked registers are GPIOx_MODER, GPIOx_OTYPER, GPIOx_OSPEEDR, + * GPIOx_PUPDR, GPIOx_AFRL and GPIOx_AFRH. + * @note The configuration of the locked GPIO pins can no longer be modified + * until the next reset. + * @param GPIOx where x can be (A..F) to select the GPIO peripheral for STM32G0xx family + * @param GPIO_Pin specifies the port bits to be locked. + * This parameter can be any combination of GPIO_Pin_x where x can be (0..15). + * @retval None + */ +HAL_StatusTypeDef HAL_GPIO_LockPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin) +{ + __IO uint32_t tmp = GPIO_LCKR_LCKK; + + /* Check the parameters */ + assert_param(IS_GPIO_LOCK_INSTANCE(GPIOx)); + assert_param(IS_GPIO_PIN(GPIO_Pin)); + + /* Apply lock key write sequence */ + tmp |= GPIO_Pin; + /* Set LCKx bit(s): LCKK='1' + LCK[15-0] */ + GPIOx->LCKR = tmp; + /* Reset LCKx bit(s): LCKK='0' + LCK[15-0] */ + GPIOx->LCKR = GPIO_Pin; + /* Set LCKx bit(s): LCKK='1' + LCK[15-0] */ + GPIOx->LCKR = tmp; + /* Read LCKK register. This read is mandatory to complete key lock sequence */ + tmp = GPIOx->LCKR; + + /* read again in order to confirm lock is active */ + if ((GPIOx->LCKR & GPIO_LCKR_LCKK) != 0x00u) + { + return HAL_OK; + } + else + { + return HAL_ERROR; + } +} + +/** + * @brief Handle EXTI interrupt request. + * @param GPIO_Pin Specifies the port pin connected to corresponding EXTI line. + * @retval None + */ +void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin) +{ + /* EXTI line interrupt detected */ + if (__HAL_GPIO_EXTI_GET_RISING_IT(GPIO_Pin) != 0x00u) + { + __HAL_GPIO_EXTI_CLEAR_RISING_IT(GPIO_Pin); + HAL_GPIO_EXTI_Rising_Callback(GPIO_Pin); + } + + if (__HAL_GPIO_EXTI_GET_FALLING_IT(GPIO_Pin) != 0x00u) + { + __HAL_GPIO_EXTI_CLEAR_FALLING_IT(GPIO_Pin); + HAL_GPIO_EXTI_Falling_Callback(GPIO_Pin); + } +} + +/** + * @brief EXTI line detection callback. + * @param GPIO_Pin Specifies the port pin connected to corresponding EXTI line. + * @retval None + */ +__weak void HAL_GPIO_EXTI_Rising_Callback(uint16_t GPIO_Pin) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(GPIO_Pin); + + /* NOTE: This function should not be modified, when the callback is needed, + the HAL_GPIO_EXTI_Rising_Callback could be implemented in the user file + */ +} + +/** + * @brief EXTI line detection callback. + * @param GPIO_Pin Specifies the port pin connected to corresponding EXTI line. + * @retval None + */ +__weak void HAL_GPIO_EXTI_Falling_Callback(uint16_t GPIO_Pin) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(GPIO_Pin); + + /* NOTE: This function should not be modified, when the callback is needed, + the HAL_GPIO_EXTI_Falling_Callback could be implemented in the user file + */ +} + +/** + * @} + */ + + +/** + * @} + */ + +#endif /* HAL_GPIO_MODULE_ENABLED */ +/** + * @} + */ + +/** + * @} + */ + diff --git a/firmware/Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.c b/firmware/Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.c new file mode 100644 index 0000000..4a5093e --- /dev/null +++ b/firmware/Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.c @@ -0,0 +1,7159 @@ +/** + ****************************************************************************** + * @file stm32g0xx_hal_i2c.c + * @author MCD Application Team + * @brief I2C HAL module driver. + * This file provides firmware functions to manage the following + * functionalities of the Inter Integrated Circuit (I2C) peripheral: + * + Initialization and de-initialization functions + * + IO operation functions + * + Peripheral State and Errors functions + * + ****************************************************************************** + * @attention + * + * Copyright (c) 2018 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + @verbatim + ============================================================================== + ##### How to use this driver ##### + ============================================================================== + [..] + The I2C HAL driver can be used as follows: + + (#) Declare a I2C_HandleTypeDef handle structure, for example: + I2C_HandleTypeDef hi2c; + + (#)Initialize the I2C low level resources by implementing the HAL_I2C_MspInit() API: + (##) Enable the I2Cx interface clock + (##) I2C pins configuration + (+++) Enable the clock for the I2C GPIOs + (+++) Configure I2C pins as alternate function open-drain + (##) NVIC configuration if you need to use interrupt process + (+++) Configure the I2Cx interrupt priority + (+++) Enable the NVIC I2C IRQ Channel + (##) DMA Configuration if you need to use DMA process + (+++) Declare a DMA_HandleTypeDef handle structure for + the transmit or receive channel + (+++) Enable the DMAx interface clock using + (+++) Configure the DMA handle parameters + (+++) Configure the DMA Tx or Rx channel + (+++) Associate the initialized DMA handle to the hi2c DMA Tx or Rx handle + (+++) Configure the priority and enable the NVIC for the transfer complete interrupt on + the DMA Tx or Rx channel + + (#) Configure the Communication Clock Timing, Own Address1, Master Addressing mode, Dual Addressing mode, + Own Address2, Own Address2 Mask, General call and Nostretch mode in the hi2c Init structure. + + (#) Initialize the I2C registers by calling the HAL_I2C_Init(), configures also the low level Hardware + (GPIO, CLOCK, NVIC...etc) by calling the customized HAL_I2C_MspInit(&hi2c) API. + + (#) To check if target device is ready for communication, use the function HAL_I2C_IsDeviceReady() + + (#) For I2C IO and IO MEM operations, three operation modes are available within this driver : + + *** Polling mode IO operation *** + ================================= + [..] + (+) Transmit in master mode an amount of data in blocking mode using HAL_I2C_Master_Transmit() + (+) Receive in master mode an amount of data in blocking mode using HAL_I2C_Master_Receive() + (+) Transmit in slave mode an amount of data in blocking mode using HAL_I2C_Slave_Transmit() + (+) Receive in slave mode an amount of data in blocking mode using HAL_I2C_Slave_Receive() + + *** Polling mode IO MEM operation *** + ===================================== + [..] + (+) Write an amount of data in blocking mode to a specific memory address using HAL_I2C_Mem_Write() + (+) Read an amount of data in blocking mode from a specific memory address using HAL_I2C_Mem_Read() + + + *** Interrupt mode IO operation *** + =================================== + [..] + (+) Transmit in master mode an amount of data in non-blocking mode using HAL_I2C_Master_Transmit_IT() + (+) At transmission end of transfer, HAL_I2C_MasterTxCpltCallback() is executed and users can + add their own code by customization of function pointer HAL_I2C_MasterTxCpltCallback() + (+) Receive in master mode an amount of data in non-blocking mode using HAL_I2C_Master_Receive_IT() + (+) At reception end of transfer, HAL_I2C_MasterRxCpltCallback() is executed and users can + add their own code by customization of function pointer HAL_I2C_MasterRxCpltCallback() + (+) Transmit in slave mode an amount of data in non-blocking mode using HAL_I2C_Slave_Transmit_IT() + (+) At transmission end of transfer, HAL_I2C_SlaveTxCpltCallback() is executed and users can + add their own code by customization of function pointer HAL_I2C_SlaveTxCpltCallback() + (+) Receive in slave mode an amount of data in non-blocking mode using HAL_I2C_Slave_Receive_IT() + (+) At reception end of transfer, HAL_I2C_SlaveRxCpltCallback() is executed and users can + add their own code by customization of function pointer HAL_I2C_SlaveRxCpltCallback() + (+) In case of transfer Error, HAL_I2C_ErrorCallback() function is executed and users can + add their own code by customization of function pointer HAL_I2C_ErrorCallback() + (+) Abort a master I2C process communication with Interrupt using HAL_I2C_Master_Abort_IT() + (+) End of abort process, HAL_I2C_AbortCpltCallback() is executed and users can + add their own code by customization of function pointer HAL_I2C_AbortCpltCallback() + (+) Discard a slave I2C process communication using __HAL_I2C_GENERATE_NACK() macro. + This action will inform Master to generate a Stop condition to discard the communication. + + + *** Interrupt mode or DMA mode IO sequential operation *** + ========================================================== + [..] + (@) These interfaces allow to manage a sequential transfer with a repeated start condition + when a direction change during transfer + [..] + (+) A specific option field manage the different steps of a sequential transfer + (+) Option field values are defined through I2C_XFEROPTIONS and are listed below: + (++) I2C_FIRST_AND_LAST_FRAME: No sequential usage, functional is same as associated interfaces in + no sequential mode + (++) I2C_FIRST_FRAME: Sequential usage, this option allow to manage a sequence with start condition, address + and data to transfer without a final stop condition + (++) I2C_FIRST_AND_NEXT_FRAME: Sequential usage (Master only), this option allow to manage a sequence with + start condition, address and data to transfer without a final stop condition, + an then permit a call the same master sequential interface several times + (like HAL_I2C_Master_Seq_Transmit_IT() then HAL_I2C_Master_Seq_Transmit_IT() + or HAL_I2C_Master_Seq_Transmit_DMA() then HAL_I2C_Master_Seq_Transmit_DMA()) + (++) I2C_NEXT_FRAME: Sequential usage, this option allow to manage a sequence with a restart condition, address + and with new data to transfer if the direction change or manage only the new data to + transfer + if no direction change and without a final stop condition in both cases + (++) I2C_LAST_FRAME: Sequential usage, this option allow to manage a sequance with a restart condition, address + and with new data to transfer if the direction change or manage only the new data to + transfer + if no direction change and with a final stop condition in both cases + (++) I2C_LAST_FRAME_NO_STOP: Sequential usage (Master only), this option allow to manage a restart condition + after several call of the same master sequential interface several times + (link with option I2C_FIRST_AND_NEXT_FRAME). + Usage can, transfer several bytes one by one using + HAL_I2C_Master_Seq_Transmit_IT + or HAL_I2C_Master_Seq_Receive_IT + or HAL_I2C_Master_Seq_Transmit_DMA + or HAL_I2C_Master_Seq_Receive_DMA + with option I2C_FIRST_AND_NEXT_FRAME then I2C_NEXT_FRAME. + Then usage of this option I2C_LAST_FRAME_NO_STOP at the last Transmit or + Receive sequence permit to call the opposite interface Receive or Transmit + without stopping the communication and so generate a restart condition. + (++) I2C_OTHER_FRAME: Sequential usage (Master only), this option allow to manage a restart condition after + each call of the same master sequential + interface. + Usage can, transfer several bytes one by one with a restart with slave address between + each bytes using + HAL_I2C_Master_Seq_Transmit_IT + or HAL_I2C_Master_Seq_Receive_IT + or HAL_I2C_Master_Seq_Transmit_DMA + or HAL_I2C_Master_Seq_Receive_DMA + with option I2C_FIRST_FRAME then I2C_OTHER_FRAME. + Then usage of this option I2C_OTHER_AND_LAST_FRAME at the last frame to help automatic + generation of STOP condition. + + (+) Different sequential I2C interfaces are listed below: + (++) Sequential transmit in master I2C mode an amount of data in non-blocking mode using + HAL_I2C_Master_Seq_Transmit_IT() or using HAL_I2C_Master_Seq_Transmit_DMA() + (+++) At transmission end of current frame transfer, HAL_I2C_MasterTxCpltCallback() is executed and + users can add their own code by customization of function pointer HAL_I2C_MasterTxCpltCallback() + (++) Sequential receive in master I2C mode an amount of data in non-blocking mode using + HAL_I2C_Master_Seq_Receive_IT() or using HAL_I2C_Master_Seq_Receive_DMA() + (+++) At reception end of current frame transfer, HAL_I2C_MasterRxCpltCallback() is executed and users can + add their own code by customization of function pointer HAL_I2C_MasterRxCpltCallback() + (++) Abort a master IT or DMA I2C process communication with Interrupt using HAL_I2C_Master_Abort_IT() + (+++) End of abort process, HAL_I2C_AbortCpltCallback() is executed and users can + add their own code by customization of function pointer HAL_I2C_AbortCpltCallback() + (++) Enable/disable the Address listen mode in slave I2C mode using HAL_I2C_EnableListen_IT() + HAL_I2C_DisableListen_IT() + (+++) When address slave I2C match, HAL_I2C_AddrCallback() is executed and users can + add their own code to check the Address Match Code and the transmission direction request by master + (Write/Read). + (+++) At Listen mode end HAL_I2C_ListenCpltCallback() is executed and users can + add their own code by customization of function pointer HAL_I2C_ListenCpltCallback() + (++) Sequential transmit in slave I2C mode an amount of data in non-blocking mode using + HAL_I2C_Slave_Seq_Transmit_IT() or using HAL_I2C_Slave_Seq_Transmit_DMA() + (+++) At transmission end of current frame transfer, HAL_I2C_SlaveTxCpltCallback() is executed and + users can add their own code by customization of function pointer HAL_I2C_SlaveTxCpltCallback() + (++) Sequential receive in slave I2C mode an amount of data in non-blocking mode using + HAL_I2C_Slave_Seq_Receive_IT() or using HAL_I2C_Slave_Seq_Receive_DMA() + (+++) At reception end of current frame transfer, HAL_I2C_SlaveRxCpltCallback() is executed and users can + add their own code by customization of function pointer HAL_I2C_SlaveRxCpltCallback() + (++) In case of transfer Error, HAL_I2C_ErrorCallback() function is executed and users can + add their own code by customization of function pointer HAL_I2C_ErrorCallback() + (++) Discard a slave I2C process communication using __HAL_I2C_GENERATE_NACK() macro. + This action will inform Master to generate a Stop condition to discard the communication. + + *** Interrupt mode IO MEM operation *** + ======================================= + [..] + (+) Write an amount of data in non-blocking mode with Interrupt to a specific memory address using + HAL_I2C_Mem_Write_IT() + (+) At Memory end of write transfer, HAL_I2C_MemTxCpltCallback() is executed and users can + add their own code by customization of function pointer HAL_I2C_MemTxCpltCallback() + (+) Read an amount of data in non-blocking mode with Interrupt from a specific memory address using + HAL_I2C_Mem_Read_IT() + (+) At Memory end of read transfer, HAL_I2C_MemRxCpltCallback() is executed and users can + add their own code by customization of function pointer HAL_I2C_MemRxCpltCallback() + (+) In case of transfer Error, HAL_I2C_ErrorCallback() function is executed and users can + add their own code by customization of function pointer HAL_I2C_ErrorCallback() + + *** DMA mode IO operation *** + ============================== + [..] + (+) Transmit in master mode an amount of data in non-blocking mode (DMA) using + HAL_I2C_Master_Transmit_DMA() + (+) At transmission end of transfer, HAL_I2C_MasterTxCpltCallback() is executed and users can + add their own code by customization of function pointer HAL_I2C_MasterTxCpltCallback() + (+) Receive in master mode an amount of data in non-blocking mode (DMA) using + HAL_I2C_Master_Receive_DMA() + (+) At reception end of transfer, HAL_I2C_MasterRxCpltCallback() is executed and users can + add their own code by customization of function pointer HAL_I2C_MasterRxCpltCallback() + (+) Transmit in slave mode an amount of data in non-blocking mode (DMA) using + HAL_I2C_Slave_Transmit_DMA() + (+) At transmission end of transfer, HAL_I2C_SlaveTxCpltCallback() is executed and users can + add their own code by customization of function pointer HAL_I2C_SlaveTxCpltCallback() + (+) Receive in slave mode an amount of data in non-blocking mode (DMA) using + HAL_I2C_Slave_Receive_DMA() + (+) At reception end of transfer, HAL_I2C_SlaveRxCpltCallback() is executed and users can + add their own code by customization of function pointer HAL_I2C_SlaveRxCpltCallback() + (+) In case of transfer Error, HAL_I2C_ErrorCallback() function is executed and users can + add their own code by customization of function pointer HAL_I2C_ErrorCallback() + (+) Abort a master I2C process communication with Interrupt using HAL_I2C_Master_Abort_IT() + (+) End of abort process, HAL_I2C_AbortCpltCallback() is executed and users can + add their own code by customization of function pointer HAL_I2C_AbortCpltCallback() + (+) Discard a slave I2C process communication using __HAL_I2C_GENERATE_NACK() macro. + This action will inform Master to generate a Stop condition to discard the communication. + + *** DMA mode IO MEM operation *** + ================================= + [..] + (+) Write an amount of data in non-blocking mode with DMA to a specific memory address using + HAL_I2C_Mem_Write_DMA() + (+) At Memory end of write transfer, HAL_I2C_MemTxCpltCallback() is executed and users can + add their own code by customization of function pointer HAL_I2C_MemTxCpltCallback() + (+) Read an amount of data in non-blocking mode with DMA from a specific memory address using + HAL_I2C_Mem_Read_DMA() + (+) At Memory end of read transfer, HAL_I2C_MemRxCpltCallback() is executed and users can + add their own code by customization of function pointer HAL_I2C_MemRxCpltCallback() + (+) In case of transfer Error, HAL_I2C_ErrorCallback() function is executed and users can + add their own code by customization of function pointer HAL_I2C_ErrorCallback() + + + *** I2C HAL driver macros list *** + ================================== + [..] + Below the list of most used macros in I2C HAL driver. + + (+) __HAL_I2C_ENABLE: Enable the I2C peripheral + (+) __HAL_I2C_DISABLE: Disable the I2C peripheral + (+) __HAL_I2C_GENERATE_NACK: Generate a Non-Acknowledge I2C peripheral in Slave mode + (+) __HAL_I2C_GET_FLAG: Check whether the specified I2C flag is set or not + (+) __HAL_I2C_CLEAR_FLAG: Clear the specified I2C pending flag + (+) __HAL_I2C_ENABLE_IT: Enable the specified I2C interrupt + (+) __HAL_I2C_DISABLE_IT: Disable the specified I2C interrupt + + *** Callback registration *** + ============================================= + [..] + The compilation flag USE_HAL_I2C_REGISTER_CALLBACKS when set to 1 + allows the user to configure dynamically the driver callbacks. + Use Functions HAL_I2C_RegisterCallback() or HAL_I2C_RegisterAddrCallback() + to register an interrupt callback. + [..] + Function HAL_I2C_RegisterCallback() allows to register following callbacks: + (+) MasterTxCpltCallback : callback for Master transmission end of transfer. + (+) MasterRxCpltCallback : callback for Master reception end of transfer. + (+) SlaveTxCpltCallback : callback for Slave transmission end of transfer. + (+) SlaveRxCpltCallback : callback for Slave reception end of transfer. + (+) ListenCpltCallback : callback for end of listen mode. + (+) MemTxCpltCallback : callback for Memory transmission end of transfer. + (+) MemRxCpltCallback : callback for Memory reception end of transfer. + (+) ErrorCallback : callback for error detection. + (+) AbortCpltCallback : callback for abort completion process. + (+) MspInitCallback : callback for Msp Init. + (+) MspDeInitCallback : callback for Msp DeInit. + This function takes as parameters the HAL peripheral handle, the Callback ID + and a pointer to the user callback function. + [..] + For specific callback AddrCallback use dedicated register callbacks : HAL_I2C_RegisterAddrCallback(). + [..] + Use function HAL_I2C_UnRegisterCallback to reset a callback to the default + weak function. + HAL_I2C_UnRegisterCallback takes as parameters the HAL peripheral handle, + and the Callback ID. + This function allows to reset following callbacks: + (+) MasterTxCpltCallback : callback for Master transmission end of transfer. + (+) MasterRxCpltCallback : callback for Master reception end of transfer. + (+) SlaveTxCpltCallback : callback for Slave transmission end of transfer. + (+) SlaveRxCpltCallback : callback for Slave reception end of transfer. + (+) ListenCpltCallback : callback for end of listen mode. + (+) MemTxCpltCallback : callback for Memory transmission end of transfer. + (+) MemRxCpltCallback : callback for Memory reception end of transfer. + (+) ErrorCallback : callback for error detection. + (+) AbortCpltCallback : callback for abort completion process. + (+) MspInitCallback : callback for Msp Init. + (+) MspDeInitCallback : callback for Msp DeInit. + [..] + For callback AddrCallback use dedicated register callbacks : HAL_I2C_UnRegisterAddrCallback(). + [..] + By default, after the HAL_I2C_Init() and when the state is HAL_I2C_STATE_RESET + all callbacks are set to the corresponding weak functions: + examples HAL_I2C_MasterTxCpltCallback(), HAL_I2C_MasterRxCpltCallback(). + Exception done for MspInit and MspDeInit functions that are + reset to the legacy weak functions in the HAL_I2C_Init()/ HAL_I2C_DeInit() only when + these callbacks are null (not registered beforehand). + If MspInit or MspDeInit are not null, the HAL_I2C_Init()/ HAL_I2C_DeInit() + keep and use the user MspInit/MspDeInit callbacks (registered beforehand) whatever the state. + [..] + Callbacks can be registered/unregistered in HAL_I2C_STATE_READY state only. + Exception done MspInit/MspDeInit functions that can be registered/unregistered + in HAL_I2C_STATE_READY or HAL_I2C_STATE_RESET state, + thus registered (user) MspInit/DeInit callbacks can be used during the Init/DeInit. + Then, the user first registers the MspInit/MspDeInit user callbacks + using HAL_I2C_RegisterCallback() before calling HAL_I2C_DeInit() + or HAL_I2C_Init() function. + [..] + When the compilation flag USE_HAL_I2C_REGISTER_CALLBACKS is set to 0 or + not defined, the callback registration feature is not available and all callbacks + are set to the corresponding weak functions. + + [..] + (@) You can refer to the I2C HAL driver header file for more useful macros + + @endverbatim + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32g0xx_hal.h" + +/** @addtogroup STM32G0xx_HAL_Driver + * @{ + */ + +/** @defgroup I2C I2C + * @brief I2C HAL module driver + * @{ + */ + +#ifdef HAL_I2C_MODULE_ENABLED + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ + +/** @defgroup I2C_Private_Define I2C Private Define + * @{ + */ +#define TIMING_CLEAR_MASK (0xF0FFFFFFU) /*!< I2C TIMING clear register Mask */ +#define I2C_TIMEOUT_ADDR (10000U) /*!< 10 s */ +#define I2C_TIMEOUT_BUSY (25U) /*!< 25 ms */ +#define I2C_TIMEOUT_DIR (25U) /*!< 25 ms */ +#define I2C_TIMEOUT_RXNE (25U) /*!< 25 ms */ +#define I2C_TIMEOUT_STOPF (25U) /*!< 25 ms */ +#define I2C_TIMEOUT_TC (25U) /*!< 25 ms */ +#define I2C_TIMEOUT_TCR (25U) /*!< 25 ms */ +#define I2C_TIMEOUT_TXIS (25U) /*!< 25 ms */ +#define I2C_TIMEOUT_FLAG (25U) /*!< 25 ms */ + +#define MAX_NBYTE_SIZE 255U +#define SLAVE_ADDR_SHIFT 7U +#define SLAVE_ADDR_MSK 0x06U + +/* Private define for @ref PreviousState usage */ +#define I2C_STATE_MSK ((uint32_t)((uint32_t)((uint32_t)HAL_I2C_STATE_BUSY_TX | \ + (uint32_t)HAL_I2C_STATE_BUSY_RX) & \ + (uint32_t)(~((uint32_t)HAL_I2C_STATE_READY)))) +/*!< Mask State define, keep only RX and TX bits */ +#define I2C_STATE_NONE ((uint32_t)(HAL_I2C_MODE_NONE)) +/*!< Default Value */ +#define I2C_STATE_MASTER_BUSY_TX ((uint32_t)(((uint32_t)HAL_I2C_STATE_BUSY_TX & I2C_STATE_MSK) | \ + (uint32_t)HAL_I2C_MODE_MASTER)) +/*!< Master Busy TX, combinaison of State LSB and Mode enum */ +#define I2C_STATE_MASTER_BUSY_RX ((uint32_t)(((uint32_t)HAL_I2C_STATE_BUSY_RX & I2C_STATE_MSK) | \ + (uint32_t)HAL_I2C_MODE_MASTER)) +/*!< Master Busy RX, combinaison of State LSB and Mode enum */ +#define I2C_STATE_SLAVE_BUSY_TX ((uint32_t)(((uint32_t)HAL_I2C_STATE_BUSY_TX & I2C_STATE_MSK) | \ + (uint32_t)HAL_I2C_MODE_SLAVE)) +/*!< Slave Busy TX, combinaison of State LSB and Mode enum */ +#define I2C_STATE_SLAVE_BUSY_RX ((uint32_t)(((uint32_t)HAL_I2C_STATE_BUSY_RX & I2C_STATE_MSK) | \ + (uint32_t)HAL_I2C_MODE_SLAVE)) +/*!< Slave Busy RX, combinaison of State LSB and Mode enum */ +#define I2C_STATE_MEM_BUSY_TX ((uint32_t)(((uint32_t)HAL_I2C_STATE_BUSY_TX & I2C_STATE_MSK) | \ + (uint32_t)HAL_I2C_MODE_MEM)) +/*!< Memory Busy TX, combinaison of State LSB and Mode enum */ +#define I2C_STATE_MEM_BUSY_RX ((uint32_t)(((uint32_t)HAL_I2C_STATE_BUSY_RX & I2C_STATE_MSK) | \ + (uint32_t)HAL_I2C_MODE_MEM)) +/*!< Memory Busy RX, combinaison of State LSB and Mode enum */ + + +/* Private define to centralize the enable/disable of Interrupts */ +#define I2C_XFER_TX_IT (uint16_t)(0x0001U) /*!< Bit field can be combinated with + @ref I2C_XFER_LISTEN_IT */ +#define I2C_XFER_RX_IT (uint16_t)(0x0002U) /*!< Bit field can be combinated with + @ref I2C_XFER_LISTEN_IT */ +#define I2C_XFER_LISTEN_IT (uint16_t)(0x8000U) /*!< Bit field can be combinated with @ref I2C_XFER_TX_IT + and @ref I2C_XFER_RX_IT */ + +#define I2C_XFER_ERROR_IT (uint16_t)(0x0010U) /*!< Bit definition to manage addition of global Error + and NACK treatment */ +#define I2C_XFER_CPLT_IT (uint16_t)(0x0020U) /*!< Bit definition to manage only STOP evenement */ +#define I2C_XFER_RELOAD_IT (uint16_t)(0x0040U) /*!< Bit definition to manage only Reload of NBYTE */ + +/* Private define Sequential Transfer Options default/reset value */ +#define I2C_NO_OPTION_FRAME (0xFFFF0000U) +/** + * @} + */ + +/* Private macro -------------------------------------------------------------*/ +/* Macro to get remaining data to transfer on DMA side */ +#define I2C_GET_DMA_REMAIN_DATA(__HANDLE__) __HAL_DMA_GET_COUNTER(__HANDLE__) + +/* Private variables ---------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ + +/** @defgroup I2C_Private_Functions I2C Private Functions + * @{ + */ +/* Private functions to handle DMA transfer */ +static void I2C_DMAMasterTransmitCplt(DMA_HandleTypeDef *hdma); +static void I2C_DMAMasterReceiveCplt(DMA_HandleTypeDef *hdma); +static void I2C_DMASlaveTransmitCplt(DMA_HandleTypeDef *hdma); +static void I2C_DMASlaveReceiveCplt(DMA_HandleTypeDef *hdma); +static void I2C_DMAError(DMA_HandleTypeDef *hdma); +static void I2C_DMAAbort(DMA_HandleTypeDef *hdma); + +/* Private functions to handle IT transfer */ +static void I2C_ITAddrCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags); +static void I2C_ITMasterSeqCplt(I2C_HandleTypeDef *hi2c); +static void I2C_ITSlaveSeqCplt(I2C_HandleTypeDef *hi2c); +static void I2C_ITMasterCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags); +static void I2C_ITSlaveCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags); +static void I2C_ITListenCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags); +static void I2C_ITError(I2C_HandleTypeDef *hi2c, uint32_t ErrorCode); + +/* Private functions to handle IT transfer */ +static HAL_StatusTypeDef I2C_RequestMemoryWrite(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, + uint16_t MemAddress, uint16_t MemAddSize, uint32_t Timeout, + uint32_t Tickstart); +static HAL_StatusTypeDef I2C_RequestMemoryRead(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, + uint16_t MemAddress, uint16_t MemAddSize, uint32_t Timeout, + uint32_t Tickstart); + +/* Private functions for I2C transfer IRQ handler */ +static HAL_StatusTypeDef I2C_Master_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, + uint32_t ITSources); +static HAL_StatusTypeDef I2C_Mem_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, + uint32_t ITSources); +static HAL_StatusTypeDef I2C_Slave_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, + uint32_t ITSources); +static HAL_StatusTypeDef I2C_Master_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, + uint32_t ITSources); +static HAL_StatusTypeDef I2C_Mem_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, + uint32_t ITSources); +static HAL_StatusTypeDef I2C_Slave_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, + uint32_t ITSources); + +/* Private functions to handle flags during polling transfer */ +static HAL_StatusTypeDef I2C_WaitOnFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Flag, FlagStatus Status, + uint32_t Timeout, uint32_t Tickstart); +static HAL_StatusTypeDef I2C_WaitOnTXISFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, + uint32_t Tickstart); +static HAL_StatusTypeDef I2C_WaitOnRXNEFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, + uint32_t Tickstart); +static HAL_StatusTypeDef I2C_WaitOnSTOPFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, + uint32_t Tickstart); +static HAL_StatusTypeDef I2C_IsErrorOccurred(I2C_HandleTypeDef *hi2c, uint32_t Timeout, + uint32_t Tickstart); + +/* Private functions to centralize the enable/disable of Interrupts */ +static void I2C_Enable_IRQ(I2C_HandleTypeDef *hi2c, uint16_t InterruptRequest); +static void I2C_Disable_IRQ(I2C_HandleTypeDef *hi2c, uint16_t InterruptRequest); + +/* Private function to treat different error callback */ +static void I2C_TreatErrorCallback(I2C_HandleTypeDef *hi2c); + +/* Private function to flush TXDR register */ +static void I2C_Flush_TXDR(I2C_HandleTypeDef *hi2c); + +/* Private function to handle start, restart or stop a transfer */ +static void I2C_TransferConfig(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t Size, uint32_t Mode, + uint32_t Request); + +/* Private function to Convert Specific options */ +static void I2C_ConvertOtherXferOptions(I2C_HandleTypeDef *hi2c); +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ + +/** @defgroup I2C_Exported_Functions I2C Exported Functions + * @{ + */ + +/** @defgroup I2C_Exported_Functions_Group1 Initialization and de-initialization functions + * @brief Initialization and Configuration functions + * +@verbatim + =============================================================================== + ##### Initialization and de-initialization functions ##### + =============================================================================== + [..] This subsection provides a set of functions allowing to initialize and + deinitialize the I2Cx peripheral: + + (+) User must Implement HAL_I2C_MspInit() function in which he configures + all related peripherals resources (CLOCK, GPIO, DMA, IT and NVIC ). + + (+) Call the function HAL_I2C_Init() to configure the selected device with + the selected configuration: + (++) Clock Timing + (++) Own Address 1 + (++) Addressing mode (Master, Slave) + (++) Dual Addressing mode + (++) Own Address 2 + (++) Own Address 2 Mask + (++) General call mode + (++) Nostretch mode + + (+) Call the function HAL_I2C_DeInit() to restore the default configuration + of the selected I2Cx peripheral. + +@endverbatim + * @{ + */ + +/** + * @brief Initializes the I2C according to the specified parameters + * in the I2C_InitTypeDef and initialize the associated handle. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Init(I2C_HandleTypeDef *hi2c) +{ + /* Check the I2C handle allocation */ + if (hi2c == NULL) + { + return HAL_ERROR; + } + + /* Check the parameters */ + assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance)); + assert_param(IS_I2C_OWN_ADDRESS1(hi2c->Init.OwnAddress1)); + assert_param(IS_I2C_ADDRESSING_MODE(hi2c->Init.AddressingMode)); + assert_param(IS_I2C_DUAL_ADDRESS(hi2c->Init.DualAddressMode)); + assert_param(IS_I2C_OWN_ADDRESS2(hi2c->Init.OwnAddress2)); + assert_param(IS_I2C_OWN_ADDRESS2_MASK(hi2c->Init.OwnAddress2Masks)); + assert_param(IS_I2C_GENERAL_CALL(hi2c->Init.GeneralCallMode)); + assert_param(IS_I2C_NO_STRETCH(hi2c->Init.NoStretchMode)); + + if (hi2c->State == HAL_I2C_STATE_RESET) + { + /* Allocate lock resource and initialize it */ + hi2c->Lock = HAL_UNLOCKED; + +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) + /* Init the I2C Callback settings */ + hi2c->MasterTxCpltCallback = HAL_I2C_MasterTxCpltCallback; /* Legacy weak MasterTxCpltCallback */ + hi2c->MasterRxCpltCallback = HAL_I2C_MasterRxCpltCallback; /* Legacy weak MasterRxCpltCallback */ + hi2c->SlaveTxCpltCallback = HAL_I2C_SlaveTxCpltCallback; /* Legacy weak SlaveTxCpltCallback */ + hi2c->SlaveRxCpltCallback = HAL_I2C_SlaveRxCpltCallback; /* Legacy weak SlaveRxCpltCallback */ + hi2c->ListenCpltCallback = HAL_I2C_ListenCpltCallback; /* Legacy weak ListenCpltCallback */ + hi2c->MemTxCpltCallback = HAL_I2C_MemTxCpltCallback; /* Legacy weak MemTxCpltCallback */ + hi2c->MemRxCpltCallback = HAL_I2C_MemRxCpltCallback; /* Legacy weak MemRxCpltCallback */ + hi2c->ErrorCallback = HAL_I2C_ErrorCallback; /* Legacy weak ErrorCallback */ + hi2c->AbortCpltCallback = HAL_I2C_AbortCpltCallback; /* Legacy weak AbortCpltCallback */ + hi2c->AddrCallback = HAL_I2C_AddrCallback; /* Legacy weak AddrCallback */ + + if (hi2c->MspInitCallback == NULL) + { + hi2c->MspInitCallback = HAL_I2C_MspInit; /* Legacy weak MspInit */ + } + + /* Init the low level hardware : GPIO, CLOCK, CORTEX...etc */ + hi2c->MspInitCallback(hi2c); +#else + /* Init the low level hardware : GPIO, CLOCK, CORTEX...etc */ + HAL_I2C_MspInit(hi2c); +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + } + + hi2c->State = HAL_I2C_STATE_BUSY; + + /* Disable the selected I2C peripheral */ + __HAL_I2C_DISABLE(hi2c); + + /*---------------------------- I2Cx TIMINGR Configuration ------------------*/ + /* Configure I2Cx: Frequency range */ + hi2c->Instance->TIMINGR = hi2c->Init.Timing & TIMING_CLEAR_MASK; + + /*---------------------------- I2Cx OAR1 Configuration ---------------------*/ + /* Disable Own Address1 before set the Own Address1 configuration */ + hi2c->Instance->OAR1 &= ~I2C_OAR1_OA1EN; + + /* Configure I2Cx: Own Address1 and ack own address1 mode */ + if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_7BIT) + { + hi2c->Instance->OAR1 = (I2C_OAR1_OA1EN | hi2c->Init.OwnAddress1); + } + else /* I2C_ADDRESSINGMODE_10BIT */ + { + hi2c->Instance->OAR1 = (I2C_OAR1_OA1EN | I2C_OAR1_OA1MODE | hi2c->Init.OwnAddress1); + } + + /*---------------------------- I2Cx CR2 Configuration ----------------------*/ + /* Configure I2Cx: Addressing Master mode */ + if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_10BIT) + { + hi2c->Instance->CR2 = (I2C_CR2_ADD10); + } + /* Enable the AUTOEND by default, and enable NACK (should be disable only during Slave process */ + hi2c->Instance->CR2 |= (I2C_CR2_AUTOEND | I2C_CR2_NACK); + + /*---------------------------- I2Cx OAR2 Configuration ---------------------*/ + /* Disable Own Address2 before set the Own Address2 configuration */ + hi2c->Instance->OAR2 &= ~I2C_DUALADDRESS_ENABLE; + + /* Configure I2Cx: Dual mode and Own Address2 */ + hi2c->Instance->OAR2 = (hi2c->Init.DualAddressMode | hi2c->Init.OwnAddress2 | \ + (hi2c->Init.OwnAddress2Masks << 8)); + + /*---------------------------- I2Cx CR1 Configuration ----------------------*/ + /* Configure I2Cx: Generalcall and NoStretch mode */ + hi2c->Instance->CR1 = (hi2c->Init.GeneralCallMode | hi2c->Init.NoStretchMode); + + /* Enable the selected I2C peripheral */ + __HAL_I2C_ENABLE(hi2c); + + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + hi2c->State = HAL_I2C_STATE_READY; + hi2c->PreviousState = I2C_STATE_NONE; + hi2c->Mode = HAL_I2C_MODE_NONE; + + return HAL_OK; +} + +/** + * @brief DeInitialize the I2C peripheral. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_DeInit(I2C_HandleTypeDef *hi2c) +{ + /* Check the I2C handle allocation */ + if (hi2c == NULL) + { + return HAL_ERROR; + } + + /* Check the parameters */ + assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance)); + + hi2c->State = HAL_I2C_STATE_BUSY; + + /* Disable the I2C Peripheral Clock */ + __HAL_I2C_DISABLE(hi2c); + +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) + if (hi2c->MspDeInitCallback == NULL) + { + hi2c->MspDeInitCallback = HAL_I2C_MspDeInit; /* Legacy weak MspDeInit */ + } + + /* DeInit the low level hardware: GPIO, CLOCK, NVIC */ + hi2c->MspDeInitCallback(hi2c); +#else + /* DeInit the low level hardware: GPIO, CLOCK, NVIC */ + HAL_I2C_MspDeInit(hi2c); +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + hi2c->State = HAL_I2C_STATE_RESET; + hi2c->PreviousState = I2C_STATE_NONE; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Release Lock */ + __HAL_UNLOCK(hi2c); + + return HAL_OK; +} + +/** + * @brief Initialize the I2C MSP. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @retval None + */ +__weak void HAL_I2C_MspInit(I2C_HandleTypeDef *hi2c) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hi2c); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_I2C_MspInit could be implemented in the user file + */ +} + +/** + * @brief DeInitialize the I2C MSP. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @retval None + */ +__weak void HAL_I2C_MspDeInit(I2C_HandleTypeDef *hi2c) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hi2c); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_I2C_MspDeInit could be implemented in the user file + */ +} + +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) +/** + * @brief Register a User I2C Callback + * To be used instead of the weak predefined callback + * @note The HAL_I2C_RegisterCallback() may be called before HAL_I2C_Init() in HAL_I2C_STATE_RESET + * to register callbacks for HAL_I2C_MSPINIT_CB_ID and HAL_I2C_MSPDEINIT_CB_ID. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param CallbackID ID of the callback to be registered + * This parameter can be one of the following values: + * @arg @ref HAL_I2C_MASTER_TX_COMPLETE_CB_ID Master Tx Transfer completed callback ID + * @arg @ref HAL_I2C_MASTER_RX_COMPLETE_CB_ID Master Rx Transfer completed callback ID + * @arg @ref HAL_I2C_SLAVE_TX_COMPLETE_CB_ID Slave Tx Transfer completed callback ID + * @arg @ref HAL_I2C_SLAVE_RX_COMPLETE_CB_ID Slave Rx Transfer completed callback ID + * @arg @ref HAL_I2C_LISTEN_COMPLETE_CB_ID Listen Complete callback ID + * @arg @ref HAL_I2C_MEM_TX_COMPLETE_CB_ID Memory Tx Transfer callback ID + * @arg @ref HAL_I2C_MEM_RX_COMPLETE_CB_ID Memory Rx Transfer completed callback ID + * @arg @ref HAL_I2C_ERROR_CB_ID Error callback ID + * @arg @ref HAL_I2C_ABORT_CB_ID Abort callback ID + * @arg @ref HAL_I2C_MSPINIT_CB_ID MspInit callback ID + * @arg @ref HAL_I2C_MSPDEINIT_CB_ID MspDeInit callback ID + * @param pCallback pointer to the Callback function + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_RegisterCallback(I2C_HandleTypeDef *hi2c, HAL_I2C_CallbackIDTypeDef CallbackID, + pI2C_CallbackTypeDef pCallback) +{ + HAL_StatusTypeDef status = HAL_OK; + + if (pCallback == NULL) + { + /* Update the error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; + + return HAL_ERROR; + } + + if (HAL_I2C_STATE_READY == hi2c->State) + { + switch (CallbackID) + { + case HAL_I2C_MASTER_TX_COMPLETE_CB_ID : + hi2c->MasterTxCpltCallback = pCallback; + break; + + case HAL_I2C_MASTER_RX_COMPLETE_CB_ID : + hi2c->MasterRxCpltCallback = pCallback; + break; + + case HAL_I2C_SLAVE_TX_COMPLETE_CB_ID : + hi2c->SlaveTxCpltCallback = pCallback; + break; + + case HAL_I2C_SLAVE_RX_COMPLETE_CB_ID : + hi2c->SlaveRxCpltCallback = pCallback; + break; + + case HAL_I2C_LISTEN_COMPLETE_CB_ID : + hi2c->ListenCpltCallback = pCallback; + break; + + case HAL_I2C_MEM_TX_COMPLETE_CB_ID : + hi2c->MemTxCpltCallback = pCallback; + break; + + case HAL_I2C_MEM_RX_COMPLETE_CB_ID : + hi2c->MemRxCpltCallback = pCallback; + break; + + case HAL_I2C_ERROR_CB_ID : + hi2c->ErrorCallback = pCallback; + break; + + case HAL_I2C_ABORT_CB_ID : + hi2c->AbortCpltCallback = pCallback; + break; + + case HAL_I2C_MSPINIT_CB_ID : + hi2c->MspInitCallback = pCallback; + break; + + case HAL_I2C_MSPDEINIT_CB_ID : + hi2c->MspDeInitCallback = pCallback; + break; + + default : + /* Update the error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; + + /* Return error status */ + status = HAL_ERROR; + break; + } + } + else if (HAL_I2C_STATE_RESET == hi2c->State) + { + switch (CallbackID) + { + case HAL_I2C_MSPINIT_CB_ID : + hi2c->MspInitCallback = pCallback; + break; + + case HAL_I2C_MSPDEINIT_CB_ID : + hi2c->MspDeInitCallback = pCallback; + break; + + default : + /* Update the error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; + + /* Return error status */ + status = HAL_ERROR; + break; + } + } + else + { + /* Update the error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; + + /* Return error status */ + status = HAL_ERROR; + } + + return status; +} + +/** + * @brief Unregister an I2C Callback + * I2C callback is redirected to the weak predefined callback + * @note The HAL_I2C_UnRegisterCallback() may be called before HAL_I2C_Init() in HAL_I2C_STATE_RESET + * to un-register callbacks for HAL_I2C_MSPINIT_CB_ID and HAL_I2C_MSPDEINIT_CB_ID. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param CallbackID ID of the callback to be unregistered + * This parameter can be one of the following values: + * This parameter can be one of the following values: + * @arg @ref HAL_I2C_MASTER_TX_COMPLETE_CB_ID Master Tx Transfer completed callback ID + * @arg @ref HAL_I2C_MASTER_RX_COMPLETE_CB_ID Master Rx Transfer completed callback ID + * @arg @ref HAL_I2C_SLAVE_TX_COMPLETE_CB_ID Slave Tx Transfer completed callback ID + * @arg @ref HAL_I2C_SLAVE_RX_COMPLETE_CB_ID Slave Rx Transfer completed callback ID + * @arg @ref HAL_I2C_LISTEN_COMPLETE_CB_ID Listen Complete callback ID + * @arg @ref HAL_I2C_MEM_TX_COMPLETE_CB_ID Memory Tx Transfer callback ID + * @arg @ref HAL_I2C_MEM_RX_COMPLETE_CB_ID Memory Rx Transfer completed callback ID + * @arg @ref HAL_I2C_ERROR_CB_ID Error callback ID + * @arg @ref HAL_I2C_ABORT_CB_ID Abort callback ID + * @arg @ref HAL_I2C_MSPINIT_CB_ID MspInit callback ID + * @arg @ref HAL_I2C_MSPDEINIT_CB_ID MspDeInit callback ID + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_UnRegisterCallback(I2C_HandleTypeDef *hi2c, HAL_I2C_CallbackIDTypeDef CallbackID) +{ + HAL_StatusTypeDef status = HAL_OK; + + if (HAL_I2C_STATE_READY == hi2c->State) + { + switch (CallbackID) + { + case HAL_I2C_MASTER_TX_COMPLETE_CB_ID : + hi2c->MasterTxCpltCallback = HAL_I2C_MasterTxCpltCallback; /* Legacy weak MasterTxCpltCallback */ + break; + + case HAL_I2C_MASTER_RX_COMPLETE_CB_ID : + hi2c->MasterRxCpltCallback = HAL_I2C_MasterRxCpltCallback; /* Legacy weak MasterRxCpltCallback */ + break; + + case HAL_I2C_SLAVE_TX_COMPLETE_CB_ID : + hi2c->SlaveTxCpltCallback = HAL_I2C_SlaveTxCpltCallback; /* Legacy weak SlaveTxCpltCallback */ + break; + + case HAL_I2C_SLAVE_RX_COMPLETE_CB_ID : + hi2c->SlaveRxCpltCallback = HAL_I2C_SlaveRxCpltCallback; /* Legacy weak SlaveRxCpltCallback */ + break; + + case HAL_I2C_LISTEN_COMPLETE_CB_ID : + hi2c->ListenCpltCallback = HAL_I2C_ListenCpltCallback; /* Legacy weak ListenCpltCallback */ + break; + + case HAL_I2C_MEM_TX_COMPLETE_CB_ID : + hi2c->MemTxCpltCallback = HAL_I2C_MemTxCpltCallback; /* Legacy weak MemTxCpltCallback */ + break; + + case HAL_I2C_MEM_RX_COMPLETE_CB_ID : + hi2c->MemRxCpltCallback = HAL_I2C_MemRxCpltCallback; /* Legacy weak MemRxCpltCallback */ + break; + + case HAL_I2C_ERROR_CB_ID : + hi2c->ErrorCallback = HAL_I2C_ErrorCallback; /* Legacy weak ErrorCallback */ + break; + + case HAL_I2C_ABORT_CB_ID : + hi2c->AbortCpltCallback = HAL_I2C_AbortCpltCallback; /* Legacy weak AbortCpltCallback */ + break; + + case HAL_I2C_MSPINIT_CB_ID : + hi2c->MspInitCallback = HAL_I2C_MspInit; /* Legacy weak MspInit */ + break; + + case HAL_I2C_MSPDEINIT_CB_ID : + hi2c->MspDeInitCallback = HAL_I2C_MspDeInit; /* Legacy weak MspDeInit */ + break; + + default : + /* Update the error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; + + /* Return error status */ + status = HAL_ERROR; + break; + } + } + else if (HAL_I2C_STATE_RESET == hi2c->State) + { + switch (CallbackID) + { + case HAL_I2C_MSPINIT_CB_ID : + hi2c->MspInitCallback = HAL_I2C_MspInit; /* Legacy weak MspInit */ + break; + + case HAL_I2C_MSPDEINIT_CB_ID : + hi2c->MspDeInitCallback = HAL_I2C_MspDeInit; /* Legacy weak MspDeInit */ + break; + + default : + /* Update the error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; + + /* Return error status */ + status = HAL_ERROR; + break; + } + } + else + { + /* Update the error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; + + /* Return error status */ + status = HAL_ERROR; + } + + return status; +} + +/** + * @brief Register the Slave Address Match I2C Callback + * To be used instead of the weak HAL_I2C_AddrCallback() predefined callback + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param pCallback pointer to the Address Match Callback function + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_RegisterAddrCallback(I2C_HandleTypeDef *hi2c, pI2C_AddrCallbackTypeDef pCallback) +{ + HAL_StatusTypeDef status = HAL_OK; + + if (pCallback == NULL) + { + /* Update the error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; + + return HAL_ERROR; + } + + if (HAL_I2C_STATE_READY == hi2c->State) + { + hi2c->AddrCallback = pCallback; + } + else + { + /* Update the error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; + + /* Return error status */ + status = HAL_ERROR; + } + + return status; +} + +/** + * @brief UnRegister the Slave Address Match I2C Callback + * Info Ready I2C Callback is redirected to the weak HAL_I2C_AddrCallback() predefined callback + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_UnRegisterAddrCallback(I2C_HandleTypeDef *hi2c) +{ + HAL_StatusTypeDef status = HAL_OK; + + if (HAL_I2C_STATE_READY == hi2c->State) + { + hi2c->AddrCallback = HAL_I2C_AddrCallback; /* Legacy weak AddrCallback */ + } + else + { + /* Update the error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; + + /* Return error status */ + status = HAL_ERROR; + } + + return status; +} + +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + +/** + * @} + */ + +/** @defgroup I2C_Exported_Functions_Group2 Input and Output operation functions + * @brief Data transfers functions + * +@verbatim + =============================================================================== + ##### IO operation functions ##### + =============================================================================== + [..] + This subsection provides a set of functions allowing to manage the I2C data + transfers. + + (#) There are two modes of transfer: + (++) Blocking mode : The communication is performed in the polling mode. + The status of all data processing is returned by the same function + after finishing transfer. + (++) No-Blocking mode : The communication is performed using Interrupts + or DMA. These functions return the status of the transfer startup. + The end of the data processing will be indicated through the + dedicated I2C IRQ when using Interrupt mode or the DMA IRQ when + using DMA mode. + + (#) Blocking mode functions are : + (++) HAL_I2C_Master_Transmit() + (++) HAL_I2C_Master_Receive() + (++) HAL_I2C_Slave_Transmit() + (++) HAL_I2C_Slave_Receive() + (++) HAL_I2C_Mem_Write() + (++) HAL_I2C_Mem_Read() + (++) HAL_I2C_IsDeviceReady() + + (#) No-Blocking mode functions with Interrupt are : + (++) HAL_I2C_Master_Transmit_IT() + (++) HAL_I2C_Master_Receive_IT() + (++) HAL_I2C_Slave_Transmit_IT() + (++) HAL_I2C_Slave_Receive_IT() + (++) HAL_I2C_Mem_Write_IT() + (++) HAL_I2C_Mem_Read_IT() + (++) HAL_I2C_Master_Seq_Transmit_IT() + (++) HAL_I2C_Master_Seq_Receive_IT() + (++) HAL_I2C_Slave_Seq_Transmit_IT() + (++) HAL_I2C_Slave_Seq_Receive_IT() + (++) HAL_I2C_EnableListen_IT() + (++) HAL_I2C_DisableListen_IT() + (++) HAL_I2C_Master_Abort_IT() + + (#) No-Blocking mode functions with DMA are : + (++) HAL_I2C_Master_Transmit_DMA() + (++) HAL_I2C_Master_Receive_DMA() + (++) HAL_I2C_Slave_Transmit_DMA() + (++) HAL_I2C_Slave_Receive_DMA() + (++) HAL_I2C_Mem_Write_DMA() + (++) HAL_I2C_Mem_Read_DMA() + (++) HAL_I2C_Master_Seq_Transmit_DMA() + (++) HAL_I2C_Master_Seq_Receive_DMA() + (++) HAL_I2C_Slave_Seq_Transmit_DMA() + (++) HAL_I2C_Slave_Seq_Receive_DMA() + + (#) A set of Transfer Complete Callbacks are provided in non Blocking mode: + (++) HAL_I2C_MasterTxCpltCallback() + (++) HAL_I2C_MasterRxCpltCallback() + (++) HAL_I2C_SlaveTxCpltCallback() + (++) HAL_I2C_SlaveRxCpltCallback() + (++) HAL_I2C_MemTxCpltCallback() + (++) HAL_I2C_MemRxCpltCallback() + (++) HAL_I2C_AddrCallback() + (++) HAL_I2C_ListenCpltCallback() + (++) HAL_I2C_ErrorCallback() + (++) HAL_I2C_AbortCpltCallback() + +@endverbatim + * @{ + */ + +/** + * @brief Transmits in master mode an amount of data in blocking mode. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param DevAddress Target device address: The device 7 bits address value + * in datasheet must be shifted to the left before calling the interface + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @param Timeout Timeout duration + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Master_Transmit(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, + uint16_t Size, uint32_t Timeout) +{ + uint32_t tickstart; + + if (hi2c->State == HAL_I2C_STATE_READY) + { + /* Process Locked */ + __HAL_LOCK(hi2c); + + /* Init tickstart for timeout management*/ + tickstart = HAL_GetTick(); + + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY, tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + hi2c->State = HAL_I2C_STATE_BUSY_TX; + hi2c->Mode = HAL_I2C_MODE_MASTER; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferISR = NULL; + + /* Send Slave Address */ + /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */ + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + hi2c->XferSize = MAX_NBYTE_SIZE; + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, + I2C_GENERATE_START_WRITE); + } + else + { + hi2c->XferSize = hi2c->XferCount; + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, + I2C_GENERATE_START_WRITE); + } + + while (hi2c->XferCount > 0U) + { + /* Wait until TXIS flag is set */ + if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) + { + return HAL_ERROR; + } + /* Write data to TXDR */ + hi2c->Instance->TXDR = *hi2c->pBuffPtr; + + /* Increment Buffer pointer */ + hi2c->pBuffPtr++; + + hi2c->XferCount--; + hi2c->XferSize--; + + if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) + { + /* Wait until TCR flag is set */ + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + hi2c->XferSize = MAX_NBYTE_SIZE; + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, + I2C_NO_STARTSTOP); + } + else + { + hi2c->XferSize = hi2c->XferCount; + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, + I2C_NO_STARTSTOP); + } + } + } + + /* No need to Check TC flag, with AUTOEND mode the stop is automatically generated */ + /* Wait until STOPF flag is set */ + if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + /* Clear STOP Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); + + /* Clear Configuration Register 2 */ + I2C_RESET_CR2(hi2c); + + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Receives in master mode an amount of data in blocking mode. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param DevAddress Target device address: The device 7 bits address value + * in datasheet must be shifted to the left before calling the interface + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @param Timeout Timeout duration + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Master_Receive(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, + uint16_t Size, uint32_t Timeout) +{ + uint32_t tickstart; + + if (hi2c->State == HAL_I2C_STATE_READY) + { + /* Process Locked */ + __HAL_LOCK(hi2c); + + /* Init tickstart for timeout management*/ + tickstart = HAL_GetTick(); + + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY, tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + hi2c->State = HAL_I2C_STATE_BUSY_RX; + hi2c->Mode = HAL_I2C_MODE_MASTER; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferISR = NULL; + + /* Send Slave Address */ + /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */ + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + hi2c->XferSize = MAX_NBYTE_SIZE; + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, + I2C_GENERATE_START_READ); + } + else + { + hi2c->XferSize = hi2c->XferCount; + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, + I2C_GENERATE_START_READ); + } + + while (hi2c->XferCount > 0U) + { + /* Wait until RXNE flag is set */ + if (I2C_WaitOnRXNEFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + /* Read data from RXDR */ + *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; + + /* Increment Buffer pointer */ + hi2c->pBuffPtr++; + + hi2c->XferSize--; + hi2c->XferCount--; + + if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) + { + /* Wait until TCR flag is set */ + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + hi2c->XferSize = MAX_NBYTE_SIZE; + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, + I2C_NO_STARTSTOP); + } + else + { + hi2c->XferSize = hi2c->XferCount; + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, + I2C_NO_STARTSTOP); + } + } + } + + /* No need to Check TC flag, with AUTOEND mode the stop is automatically generated */ + /* Wait until STOPF flag is set */ + if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + /* Clear STOP Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); + + /* Clear Configuration Register 2 */ + I2C_RESET_CR2(hi2c); + + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Transmits in slave mode an amount of data in blocking mode. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @param Timeout Timeout duration + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Slave_Transmit(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, + uint32_t Timeout) +{ + uint32_t tickstart; + + if (hi2c->State == HAL_I2C_STATE_READY) + { + if ((pData == NULL) || (Size == 0U)) + { + hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; + return HAL_ERROR; + } + /* Process Locked */ + __HAL_LOCK(hi2c); + + /* Init tickstart for timeout management*/ + tickstart = HAL_GetTick(); + + hi2c->State = HAL_I2C_STATE_BUSY_TX; + hi2c->Mode = HAL_I2C_MODE_SLAVE; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferISR = NULL; + + /* Enable Address Acknowledge */ + hi2c->Instance->CR2 &= ~I2C_CR2_NACK; + + /* Wait until ADDR flag is set */ + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_ADDR, RESET, Timeout, tickstart) != HAL_OK) + { + /* Disable Address Acknowledge */ + hi2c->Instance->CR2 |= I2C_CR2_NACK; + return HAL_ERROR; + } + + /* Clear ADDR flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); + + /* If 10bit addressing mode is selected */ + if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_10BIT) + { + /* Wait until ADDR flag is set */ + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_ADDR, RESET, Timeout, tickstart) != HAL_OK) + { + /* Disable Address Acknowledge */ + hi2c->Instance->CR2 |= I2C_CR2_NACK; + return HAL_ERROR; + } + + /* Clear ADDR flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); + } + + /* Wait until DIR flag is set Transmitter mode */ + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_DIR, RESET, Timeout, tickstart) != HAL_OK) + { + /* Disable Address Acknowledge */ + hi2c->Instance->CR2 |= I2C_CR2_NACK; + return HAL_ERROR; + } + + while (hi2c->XferCount > 0U) + { + /* Wait until TXIS flag is set */ + if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) + { + /* Disable Address Acknowledge */ + hi2c->Instance->CR2 |= I2C_CR2_NACK; + return HAL_ERROR; + } + + /* Write data to TXDR */ + hi2c->Instance->TXDR = *hi2c->pBuffPtr; + + /* Increment Buffer pointer */ + hi2c->pBuffPtr++; + + hi2c->XferCount--; + } + + /* Wait until AF flag is set */ + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_AF, RESET, Timeout, tickstart) != HAL_OK) + { + /* Disable Address Acknowledge */ + hi2c->Instance->CR2 |= I2C_CR2_NACK; + return HAL_ERROR; + } + + /* Flush TX register */ + I2C_Flush_TXDR(hi2c); + + /* Clear AF flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); + + /* Wait until STOP flag is set */ + if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) + { + /* Disable Address Acknowledge */ + hi2c->Instance->CR2 |= I2C_CR2_NACK; + + return HAL_ERROR; + } + + /* Clear STOP flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); + + /* Wait until BUSY flag is reset */ + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, Timeout, tickstart) != HAL_OK) + { + /* Disable Address Acknowledge */ + hi2c->Instance->CR2 |= I2C_CR2_NACK; + return HAL_ERROR; + } + + /* Disable Address Acknowledge */ + hi2c->Instance->CR2 |= I2C_CR2_NACK; + + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Receive in slave mode an amount of data in blocking mode + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @param Timeout Timeout duration + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Slave_Receive(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, + uint32_t Timeout) +{ + uint32_t tickstart; + + if (hi2c->State == HAL_I2C_STATE_READY) + { + if ((pData == NULL) || (Size == 0U)) + { + hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; + return HAL_ERROR; + } + /* Process Locked */ + __HAL_LOCK(hi2c); + + /* Init tickstart for timeout management*/ + tickstart = HAL_GetTick(); + + hi2c->State = HAL_I2C_STATE_BUSY_RX; + hi2c->Mode = HAL_I2C_MODE_SLAVE; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferSize = hi2c->XferCount; + hi2c->XferISR = NULL; + + /* Enable Address Acknowledge */ + hi2c->Instance->CR2 &= ~I2C_CR2_NACK; + + /* Wait until ADDR flag is set */ + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_ADDR, RESET, Timeout, tickstart) != HAL_OK) + { + /* Disable Address Acknowledge */ + hi2c->Instance->CR2 |= I2C_CR2_NACK; + return HAL_ERROR; + } + + /* Clear ADDR flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); + + /* Wait until DIR flag is reset Receiver mode */ + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_DIR, SET, Timeout, tickstart) != HAL_OK) + { + /* Disable Address Acknowledge */ + hi2c->Instance->CR2 |= I2C_CR2_NACK; + return HAL_ERROR; + } + + while (hi2c->XferCount > 0U) + { + /* Wait until RXNE flag is set */ + if (I2C_WaitOnRXNEFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) + { + /* Disable Address Acknowledge */ + hi2c->Instance->CR2 |= I2C_CR2_NACK; + + /* Store Last receive data if any */ + if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_RXNE) == SET) + { + /* Read data from RXDR */ + *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; + + /* Increment Buffer pointer */ + hi2c->pBuffPtr++; + + hi2c->XferCount--; + hi2c->XferSize--; + } + + return HAL_ERROR; + } + + /* Read data from RXDR */ + *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; + + /* Increment Buffer pointer */ + hi2c->pBuffPtr++; + + hi2c->XferCount--; + hi2c->XferSize--; + } + + /* Wait until STOP flag is set */ + if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) + { + /* Disable Address Acknowledge */ + hi2c->Instance->CR2 |= I2C_CR2_NACK; + return HAL_ERROR; + } + + /* Clear STOP flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); + + /* Wait until BUSY flag is reset */ + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, Timeout, tickstart) != HAL_OK) + { + /* Disable Address Acknowledge */ + hi2c->Instance->CR2 |= I2C_CR2_NACK; + return HAL_ERROR; + } + + /* Disable Address Acknowledge */ + hi2c->Instance->CR2 |= I2C_CR2_NACK; + + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Transmit in master mode an amount of data in non-blocking mode with Interrupt + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param DevAddress Target device address: The device 7 bits address value + * in datasheet must be shifted to the left before calling the interface + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Master_Transmit_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, + uint16_t Size) +{ + uint32_t xfermode; + + if (hi2c->State == HAL_I2C_STATE_READY) + { + if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) + { + return HAL_BUSY; + } + + /* Process Locked */ + __HAL_LOCK(hi2c); + + hi2c->State = HAL_I2C_STATE_BUSY_TX; + hi2c->Mode = HAL_I2C_MODE_MASTER; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferOptions = I2C_NO_OPTION_FRAME; + hi2c->XferISR = I2C_Master_ISR_IT; + + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + hi2c->XferSize = MAX_NBYTE_SIZE; + xfermode = I2C_RELOAD_MODE; + } + else + { + hi2c->XferSize = hi2c->XferCount; + xfermode = I2C_AUTOEND_MODE; + } + + /* Send Slave Address */ + /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE */ + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_GENERATE_START_WRITE); + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + + /* Enable ERR, TC, STOP, NACK, TXI interrupt */ + /* possible to enable all of these */ + /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | + I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ + I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Receive in master mode an amount of data in non-blocking mode with Interrupt + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param DevAddress Target device address: The device 7 bits address value + * in datasheet must be shifted to the left before calling the interface + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Master_Receive_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, + uint16_t Size) +{ + uint32_t xfermode; + + if (hi2c->State == HAL_I2C_STATE_READY) + { + if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) + { + return HAL_BUSY; + } + + /* Process Locked */ + __HAL_LOCK(hi2c); + + hi2c->State = HAL_I2C_STATE_BUSY_RX; + hi2c->Mode = HAL_I2C_MODE_MASTER; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferOptions = I2C_NO_OPTION_FRAME; + hi2c->XferISR = I2C_Master_ISR_IT; + + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + hi2c->XferSize = MAX_NBYTE_SIZE; + xfermode = I2C_RELOAD_MODE; + } + else + { + hi2c->XferSize = hi2c->XferCount; + xfermode = I2C_AUTOEND_MODE; + } + + /* Send Slave Address */ + /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE */ + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_GENERATE_START_READ); + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + + /* Enable ERR, TC, STOP, NACK, RXI interrupt */ + /* possible to enable all of these */ + /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | + I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ + I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT); + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Transmit in slave mode an amount of data in non-blocking mode with Interrupt + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Slave_Transmit_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size) +{ + if (hi2c->State == HAL_I2C_STATE_READY) + { + /* Process Locked */ + __HAL_LOCK(hi2c); + + hi2c->State = HAL_I2C_STATE_BUSY_TX; + hi2c->Mode = HAL_I2C_MODE_SLAVE; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Enable Address Acknowledge */ + hi2c->Instance->CR2 &= ~I2C_CR2_NACK; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferSize = hi2c->XferCount; + hi2c->XferOptions = I2C_NO_OPTION_FRAME; + hi2c->XferISR = I2C_Slave_ISR_IT; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + + /* Enable ERR, TC, STOP, NACK, TXI interrupt */ + /* possible to enable all of these */ + /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | + I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ + I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT | I2C_XFER_LISTEN_IT); + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Receive in slave mode an amount of data in non-blocking mode with Interrupt + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Slave_Receive_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size) +{ + if (hi2c->State == HAL_I2C_STATE_READY) + { + /* Process Locked */ + __HAL_LOCK(hi2c); + + hi2c->State = HAL_I2C_STATE_BUSY_RX; + hi2c->Mode = HAL_I2C_MODE_SLAVE; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Enable Address Acknowledge */ + hi2c->Instance->CR2 &= ~I2C_CR2_NACK; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferSize = hi2c->XferCount; + hi2c->XferOptions = I2C_NO_OPTION_FRAME; + hi2c->XferISR = I2C_Slave_ISR_IT; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + + /* Enable ERR, TC, STOP, NACK, RXI interrupt */ + /* possible to enable all of these */ + /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | + I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ + I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_LISTEN_IT); + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Transmit in master mode an amount of data in non-blocking mode with DMA + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param DevAddress Target device address: The device 7 bits address value + * in datasheet must be shifted to the left before calling the interface + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Master_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, + uint16_t Size) +{ + uint32_t xfermode; + HAL_StatusTypeDef dmaxferstatus; + + if (hi2c->State == HAL_I2C_STATE_READY) + { + if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) + { + return HAL_BUSY; + } + + /* Process Locked */ + __HAL_LOCK(hi2c); + + hi2c->State = HAL_I2C_STATE_BUSY_TX; + hi2c->Mode = HAL_I2C_MODE_MASTER; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferOptions = I2C_NO_OPTION_FRAME; + hi2c->XferISR = I2C_Master_ISR_DMA; + + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + hi2c->XferSize = MAX_NBYTE_SIZE; + xfermode = I2C_RELOAD_MODE; + } + else + { + hi2c->XferSize = hi2c->XferCount; + xfermode = I2C_AUTOEND_MODE; + } + + if (hi2c->XferSize > 0U) + { + if (hi2c->hdmatx != NULL) + { + /* Set the I2C DMA transfer complete callback */ + hi2c->hdmatx->XferCpltCallback = I2C_DMAMasterTransmitCplt; + + /* Set the DMA error callback */ + hi2c->hdmatx->XferErrorCallback = I2C_DMAError; + + /* Set the unused DMA callbacks to NULL */ + hi2c->hdmatx->XferHalfCpltCallback = NULL; + hi2c->hdmatx->XferAbortCallback = NULL; + + /* Enable the DMA channel */ + dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance->TXDR, + hi2c->XferSize); + } + else + { + /* Update I2C state */ + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Update I2C error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + + if (dmaxferstatus == HAL_OK) + { + /* Send Slave Address */ + /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */ + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_GENERATE_START_WRITE); + + /* Update XferCount value */ + hi2c->XferCount -= hi2c->XferSize; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + /* Enable ERR and NACK interrupts */ + I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); + + /* Enable DMA Request */ + hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; + } + else + { + /* Update I2C state */ + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Update I2C error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + } + else + { + /* Update Transfer ISR function pointer */ + hi2c->XferISR = I2C_Master_ISR_IT; + + /* Send Slave Address */ + /* Set NBYTES to write and generate START condition */ + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, + I2C_GENERATE_START_WRITE); + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + /* Enable ERR, TC, STOP, NACK, TXI interrupt */ + /* possible to enable all of these */ + /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | + I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ + I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); + } + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Receive in master mode an amount of data in non-blocking mode with DMA + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param DevAddress Target device address: The device 7 bits address value + * in datasheet must be shifted to the left before calling the interface + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Master_Receive_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, + uint16_t Size) +{ + uint32_t xfermode; + HAL_StatusTypeDef dmaxferstatus; + + if (hi2c->State == HAL_I2C_STATE_READY) + { + if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) + { + return HAL_BUSY; + } + + /* Process Locked */ + __HAL_LOCK(hi2c); + + hi2c->State = HAL_I2C_STATE_BUSY_RX; + hi2c->Mode = HAL_I2C_MODE_MASTER; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferOptions = I2C_NO_OPTION_FRAME; + hi2c->XferISR = I2C_Master_ISR_DMA; + + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + hi2c->XferSize = MAX_NBYTE_SIZE; + xfermode = I2C_RELOAD_MODE; + } + else + { + hi2c->XferSize = hi2c->XferCount; + xfermode = I2C_AUTOEND_MODE; + } + + if (hi2c->XferSize > 0U) + { + if (hi2c->hdmarx != NULL) + { + /* Set the I2C DMA transfer complete callback */ + hi2c->hdmarx->XferCpltCallback = I2C_DMAMasterReceiveCplt; + + /* Set the DMA error callback */ + hi2c->hdmarx->XferErrorCallback = I2C_DMAError; + + /* Set the unused DMA callbacks to NULL */ + hi2c->hdmarx->XferHalfCpltCallback = NULL; + hi2c->hdmarx->XferAbortCallback = NULL; + + /* Enable the DMA channel */ + dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)pData, + hi2c->XferSize); + } + else + { + /* Update I2C state */ + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Update I2C error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + + if (dmaxferstatus == HAL_OK) + { + /* Send Slave Address */ + /* Set NBYTES to read and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */ + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_GENERATE_START_READ); + + /* Update XferCount value */ + hi2c->XferCount -= hi2c->XferSize; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + /* Enable ERR and NACK interrupts */ + I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); + + /* Enable DMA Request */ + hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; + } + else + { + /* Update I2C state */ + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Update I2C error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + } + else + { + /* Update Transfer ISR function pointer */ + hi2c->XferISR = I2C_Master_ISR_IT; + + /* Send Slave Address */ + /* Set NBYTES to read and generate START condition */ + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, + I2C_GENERATE_START_READ); + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + /* Enable ERR, TC, STOP, NACK, TXI interrupt */ + /* possible to enable all of these */ + /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | + I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ + I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); + } + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Transmit in slave mode an amount of data in non-blocking mode with DMA + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Slave_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size) +{ + HAL_StatusTypeDef dmaxferstatus; + + if (hi2c->State == HAL_I2C_STATE_READY) + { + if ((pData == NULL) || (Size == 0U)) + { + hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; + return HAL_ERROR; + } + /* Process Locked */ + __HAL_LOCK(hi2c); + + hi2c->State = HAL_I2C_STATE_BUSY_TX; + hi2c->Mode = HAL_I2C_MODE_SLAVE; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferSize = hi2c->XferCount; + hi2c->XferOptions = I2C_NO_OPTION_FRAME; + hi2c->XferISR = I2C_Slave_ISR_DMA; + + if (hi2c->hdmatx != NULL) + { + /* Set the I2C DMA transfer complete callback */ + hi2c->hdmatx->XferCpltCallback = I2C_DMASlaveTransmitCplt; + + /* Set the DMA error callback */ + hi2c->hdmatx->XferErrorCallback = I2C_DMAError; + + /* Set the unused DMA callbacks to NULL */ + hi2c->hdmatx->XferHalfCpltCallback = NULL; + hi2c->hdmatx->XferAbortCallback = NULL; + + /* Enable the DMA channel */ + dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance->TXDR, + hi2c->XferSize); + } + else + { + /* Update I2C state */ + hi2c->State = HAL_I2C_STATE_LISTEN; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Update I2C error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + + if (dmaxferstatus == HAL_OK) + { + /* Enable Address Acknowledge */ + hi2c->Instance->CR2 &= ~I2C_CR2_NACK; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + /* Enable ERR, STOP, NACK, ADDR interrupts */ + I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT); + + /* Enable DMA Request */ + hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; + } + else + { + /* Update I2C state */ + hi2c->State = HAL_I2C_STATE_LISTEN; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Update I2C error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Receive in slave mode an amount of data in non-blocking mode with DMA + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Slave_Receive_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size) +{ + HAL_StatusTypeDef dmaxferstatus; + + if (hi2c->State == HAL_I2C_STATE_READY) + { + if ((pData == NULL) || (Size == 0U)) + { + hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; + return HAL_ERROR; + } + /* Process Locked */ + __HAL_LOCK(hi2c); + + hi2c->State = HAL_I2C_STATE_BUSY_RX; + hi2c->Mode = HAL_I2C_MODE_SLAVE; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferSize = hi2c->XferCount; + hi2c->XferOptions = I2C_NO_OPTION_FRAME; + hi2c->XferISR = I2C_Slave_ISR_DMA; + + if (hi2c->hdmarx != NULL) + { + /* Set the I2C DMA transfer complete callback */ + hi2c->hdmarx->XferCpltCallback = I2C_DMASlaveReceiveCplt; + + /* Set the DMA error callback */ + hi2c->hdmarx->XferErrorCallback = I2C_DMAError; + + /* Set the unused DMA callbacks to NULL */ + hi2c->hdmarx->XferHalfCpltCallback = NULL; + hi2c->hdmarx->XferAbortCallback = NULL; + + /* Enable the DMA channel */ + dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)pData, + hi2c->XferSize); + } + else + { + /* Update I2C state */ + hi2c->State = HAL_I2C_STATE_LISTEN; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Update I2C error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + + if (dmaxferstatus == HAL_OK) + { + /* Enable Address Acknowledge */ + hi2c->Instance->CR2 &= ~I2C_CR2_NACK; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + /* Enable ERR, STOP, NACK, ADDR interrupts */ + I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT); + + /* Enable DMA Request */ + hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; + } + else + { + /* Update I2C state */ + hi2c->State = HAL_I2C_STATE_LISTEN; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Update I2C error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} +/** + * @brief Write an amount of data in blocking mode to a specific memory address + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param DevAddress Target device address: The device 7 bits address value + * in datasheet must be shifted to the left before calling the interface + * @param MemAddress Internal memory address + * @param MemAddSize Size of internal memory address + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @param Timeout Timeout duration + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Mem_Write(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, + uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout) +{ + uint32_t tickstart; + + /* Check the parameters */ + assert_param(IS_I2C_MEMADD_SIZE(MemAddSize)); + + if (hi2c->State == HAL_I2C_STATE_READY) + { + if ((pData == NULL) || (Size == 0U)) + { + hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; + return HAL_ERROR; + } + + /* Process Locked */ + __HAL_LOCK(hi2c); + + /* Init tickstart for timeout management*/ + tickstart = HAL_GetTick(); + + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY, tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + hi2c->State = HAL_I2C_STATE_BUSY_TX; + hi2c->Mode = HAL_I2C_MODE_MEM; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferISR = NULL; + + /* Send Slave Address and Memory Address */ + if (I2C_RequestMemoryWrite(hi2c, DevAddress, MemAddress, MemAddSize, Timeout, tickstart) != HAL_OK) + { + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + return HAL_ERROR; + } + + /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE */ + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + hi2c->XferSize = MAX_NBYTE_SIZE; + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, I2C_NO_STARTSTOP); + } + else + { + hi2c->XferSize = hi2c->XferCount; + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, I2C_NO_STARTSTOP); + } + + do + { + /* Wait until TXIS flag is set */ + if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + /* Write data to TXDR */ + hi2c->Instance->TXDR = *hi2c->pBuffPtr; + + /* Increment Buffer pointer */ + hi2c->pBuffPtr++; + + hi2c->XferCount--; + hi2c->XferSize--; + + if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) + { + /* Wait until TCR flag is set */ + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + hi2c->XferSize = MAX_NBYTE_SIZE; + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, + I2C_NO_STARTSTOP); + } + else + { + hi2c->XferSize = hi2c->XferCount; + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, + I2C_NO_STARTSTOP); + } + } + + } while (hi2c->XferCount > 0U); + + /* No need to Check TC flag, with AUTOEND mode the stop is automatically generated */ + /* Wait until STOPF flag is reset */ + if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + /* Clear STOP Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); + + /* Clear Configuration Register 2 */ + I2C_RESET_CR2(hi2c); + + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Read an amount of data in blocking mode from a specific memory address + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param DevAddress Target device address: The device 7 bits address value + * in datasheet must be shifted to the left before calling the interface + * @param MemAddress Internal memory address + * @param MemAddSize Size of internal memory address + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @param Timeout Timeout duration + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Mem_Read(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, + uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout) +{ + uint32_t tickstart; + + /* Check the parameters */ + assert_param(IS_I2C_MEMADD_SIZE(MemAddSize)); + + if (hi2c->State == HAL_I2C_STATE_READY) + { + if ((pData == NULL) || (Size == 0U)) + { + hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; + return HAL_ERROR; + } + + /* Process Locked */ + __HAL_LOCK(hi2c); + + /* Init tickstart for timeout management*/ + tickstart = HAL_GetTick(); + + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY, tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + hi2c->State = HAL_I2C_STATE_BUSY_RX; + hi2c->Mode = HAL_I2C_MODE_MEM; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferISR = NULL; + + /* Send Slave Address and Memory Address */ + if (I2C_RequestMemoryRead(hi2c, DevAddress, MemAddress, MemAddSize, Timeout, tickstart) != HAL_OK) + { + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + return HAL_ERROR; + } + + /* Send Slave Address */ + /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */ + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + hi2c->XferSize = MAX_NBYTE_SIZE; + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, + I2C_GENERATE_START_READ); + } + else + { + hi2c->XferSize = hi2c->XferCount; + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, + I2C_GENERATE_START_READ); + } + + do + { + /* Wait until RXNE flag is set */ + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_RXNE, RESET, Timeout, tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + /* Read data from RXDR */ + *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; + + /* Increment Buffer pointer */ + hi2c->pBuffPtr++; + + hi2c->XferSize--; + hi2c->XferCount--; + + if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) + { + /* Wait until TCR flag is set */ + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + hi2c->XferSize = MAX_NBYTE_SIZE; + I2C_TransferConfig(hi2c, DevAddress, (uint8_t) hi2c->XferSize, I2C_RELOAD_MODE, + I2C_NO_STARTSTOP); + } + else + { + hi2c->XferSize = hi2c->XferCount; + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, + I2C_NO_STARTSTOP); + } + } + } while (hi2c->XferCount > 0U); + + /* No need to Check TC flag, with AUTOEND mode the stop is automatically generated */ + /* Wait until STOPF flag is reset */ + if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + /* Clear STOP Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); + + /* Clear Configuration Register 2 */ + I2C_RESET_CR2(hi2c); + + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} +/** + * @brief Write an amount of data in non-blocking mode with Interrupt to a specific memory address + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param DevAddress Target device address: The device 7 bits address value + * in datasheet must be shifted to the left before calling the interface + * @param MemAddress Internal memory address + * @param MemAddSize Size of internal memory address + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Mem_Write_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, + uint16_t MemAddSize, uint8_t *pData, uint16_t Size) +{ + /* Check the parameters */ + assert_param(IS_I2C_MEMADD_SIZE(MemAddSize)); + + if (hi2c->State == HAL_I2C_STATE_READY) + { + if ((pData == NULL) || (Size == 0U)) + { + hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; + return HAL_ERROR; + } + + if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) + { + return HAL_BUSY; + } + + /* Process Locked */ + __HAL_LOCK(hi2c); + + hi2c->State = HAL_I2C_STATE_BUSY_TX; + hi2c->Mode = HAL_I2C_MODE_MEM; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferOptions = I2C_NO_OPTION_FRAME; + hi2c->XferISR = I2C_Mem_ISR_IT; + hi2c->Devaddress = DevAddress; + + /* If Memory address size is 8Bit */ + if (MemAddSize == I2C_MEMADD_SIZE_8BIT) + { + /* Prefetch Memory Address */ + hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); + + /* Reset Memaddress content */ + hi2c->Memaddress = 0xFFFFFFFFU; + } + /* If Memory address size is 16Bit */ + else + { + /* Prefetch Memory Address (MSB part, LSB will be manage through interrupt) */ + hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress); + + /* Prepare Memaddress buffer for LSB part */ + hi2c->Memaddress = I2C_MEM_ADD_LSB(MemAddress); + } + /* Send Slave Address and Memory Address */ + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_RELOAD_MODE, I2C_GENERATE_START_WRITE); + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + + /* Enable ERR, TC, STOP, NACK, TXI interrupt */ + /* possible to enable all of these */ + /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | + I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ + I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Read an amount of data in non-blocking mode with Interrupt from a specific memory address + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param DevAddress Target device address: The device 7 bits address value + * in datasheet must be shifted to the left before calling the interface + * @param MemAddress Internal memory address + * @param MemAddSize Size of internal memory address + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Mem_Read_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, + uint16_t MemAddSize, uint8_t *pData, uint16_t Size) +{ + /* Check the parameters */ + assert_param(IS_I2C_MEMADD_SIZE(MemAddSize)); + + if (hi2c->State == HAL_I2C_STATE_READY) + { + if ((pData == NULL) || (Size == 0U)) + { + hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; + return HAL_ERROR; + } + + if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) + { + return HAL_BUSY; + } + + /* Process Locked */ + __HAL_LOCK(hi2c); + + hi2c->State = HAL_I2C_STATE_BUSY_RX; + hi2c->Mode = HAL_I2C_MODE_MEM; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferOptions = I2C_NO_OPTION_FRAME; + hi2c->XferISR = I2C_Mem_ISR_IT; + hi2c->Devaddress = DevAddress; + + /* If Memory address size is 8Bit */ + if (MemAddSize == I2C_MEMADD_SIZE_8BIT) + { + /* Prefetch Memory Address */ + hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); + + /* Reset Memaddress content */ + hi2c->Memaddress = 0xFFFFFFFFU; + } + /* If Memory address size is 16Bit */ + else + { + /* Prefetch Memory Address (MSB part, LSB will be manage through interrupt) */ + hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress); + + /* Prepare Memaddress buffer for LSB part */ + hi2c->Memaddress = I2C_MEM_ADD_LSB(MemAddress); + } + /* Send Slave Address and Memory Address */ + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_SOFTEND_MODE, I2C_GENERATE_START_WRITE); + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + + /* Enable ERR, TC, STOP, NACK, RXI interrupt */ + /* possible to enable all of these */ + /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | + I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ + I2C_Enable_IRQ(hi2c, (I2C_XFER_TX_IT | I2C_XFER_RX_IT)); + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} +/** + * @brief Write an amount of data in non-blocking mode with DMA to a specific memory address + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param DevAddress Target device address: The device 7 bits address value + * in datasheet must be shifted to the left before calling the interface + * @param MemAddress Internal memory address + * @param MemAddSize Size of internal memory address + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Mem_Write_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, + uint16_t MemAddSize, uint8_t *pData, uint16_t Size) +{ + HAL_StatusTypeDef dmaxferstatus; + + /* Check the parameters */ + assert_param(IS_I2C_MEMADD_SIZE(MemAddSize)); + + if (hi2c->State == HAL_I2C_STATE_READY) + { + if ((pData == NULL) || (Size == 0U)) + { + hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; + return HAL_ERROR; + } + + if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) + { + return HAL_BUSY; + } + + /* Process Locked */ + __HAL_LOCK(hi2c); + + hi2c->State = HAL_I2C_STATE_BUSY_TX; + hi2c->Mode = HAL_I2C_MODE_MEM; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferOptions = I2C_NO_OPTION_FRAME; + hi2c->XferISR = I2C_Mem_ISR_DMA; + hi2c->Devaddress = DevAddress; + + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + hi2c->XferSize = MAX_NBYTE_SIZE; + } + else + { + hi2c->XferSize = hi2c->XferCount; + } + + /* If Memory address size is 8Bit */ + if (MemAddSize == I2C_MEMADD_SIZE_8BIT) + { + /* Prefetch Memory Address */ + hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); + + /* Reset Memaddress content */ + hi2c->Memaddress = 0xFFFFFFFFU; + } + /* If Memory address size is 16Bit */ + else + { + /* Prefetch Memory Address (MSB part, LSB will be manage through interrupt) */ + hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress); + + /* Prepare Memaddress buffer for LSB part */ + hi2c->Memaddress = I2C_MEM_ADD_LSB(MemAddress); + } + + if (hi2c->hdmatx != NULL) + { + /* Set the I2C DMA transfer complete callback */ + hi2c->hdmatx->XferCpltCallback = I2C_DMAMasterTransmitCplt; + + /* Set the DMA error callback */ + hi2c->hdmatx->XferErrorCallback = I2C_DMAError; + + /* Set the unused DMA callbacks to NULL */ + hi2c->hdmatx->XferHalfCpltCallback = NULL; + hi2c->hdmatx->XferAbortCallback = NULL; + + /* Enable the DMA channel */ + dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance->TXDR, + hi2c->XferSize); + } + else + { + /* Update I2C state */ + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Update I2C error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + + if (dmaxferstatus == HAL_OK) + { + /* Send Slave Address and Memory Address */ + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_RELOAD_MODE, I2C_GENERATE_START_WRITE); + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + /* Enable ERR, TC, STOP, NACK, TXI interrupt */ + /* possible to enable all of these */ + /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | + I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ + I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); + } + else + { + /* Update I2C state */ + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Update I2C error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Reads an amount of data in non-blocking mode with DMA from a specific memory address. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param DevAddress Target device address: The device 7 bits address value + * in datasheet must be shifted to the left before calling the interface + * @param MemAddress Internal memory address + * @param MemAddSize Size of internal memory address + * @param pData Pointer to data buffer + * @param Size Amount of data to be read + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Mem_Read_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, + uint16_t MemAddSize, uint8_t *pData, uint16_t Size) +{ + HAL_StatusTypeDef dmaxferstatus; + + /* Check the parameters */ + assert_param(IS_I2C_MEMADD_SIZE(MemAddSize)); + + if (hi2c->State == HAL_I2C_STATE_READY) + { + if ((pData == NULL) || (Size == 0U)) + { + hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; + return HAL_ERROR; + } + + if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) + { + return HAL_BUSY; + } + + /* Process Locked */ + __HAL_LOCK(hi2c); + + hi2c->State = HAL_I2C_STATE_BUSY_RX; + hi2c->Mode = HAL_I2C_MODE_MEM; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferOptions = I2C_NO_OPTION_FRAME; + hi2c->XferISR = I2C_Mem_ISR_DMA; + hi2c->Devaddress = DevAddress; + + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + hi2c->XferSize = MAX_NBYTE_SIZE; + } + else + { + hi2c->XferSize = hi2c->XferCount; + } + + /* If Memory address size is 8Bit */ + if (MemAddSize == I2C_MEMADD_SIZE_8BIT) + { + /* Prefetch Memory Address */ + hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); + + /* Reset Memaddress content */ + hi2c->Memaddress = 0xFFFFFFFFU; + } + /* If Memory address size is 16Bit */ + else + { + /* Prefetch Memory Address (MSB part, LSB will be manage through interrupt) */ + hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress); + + /* Prepare Memaddress buffer for LSB part */ + hi2c->Memaddress = I2C_MEM_ADD_LSB(MemAddress); + } + + if (hi2c->hdmarx != NULL) + { + /* Set the I2C DMA transfer complete callback */ + hi2c->hdmarx->XferCpltCallback = I2C_DMAMasterReceiveCplt; + + /* Set the DMA error callback */ + hi2c->hdmarx->XferErrorCallback = I2C_DMAError; + + /* Set the unused DMA callbacks to NULL */ + hi2c->hdmarx->XferHalfCpltCallback = NULL; + hi2c->hdmarx->XferAbortCallback = NULL; + + /* Enable the DMA channel */ + dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)pData, + hi2c->XferSize); + } + else + { + /* Update I2C state */ + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Update I2C error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + + if (dmaxferstatus == HAL_OK) + { + /* Send Slave Address and Memory Address */ + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_SOFTEND_MODE, I2C_GENERATE_START_WRITE); + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + /* Enable ERR, TC, STOP, NACK, TXI interrupt */ + /* possible to enable all of these */ + /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | + I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ + I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); + } + else + { + /* Update I2C state */ + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Update I2C error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Checks if target device is ready for communication. + * @note This function is used with Memory devices + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param DevAddress Target device address: The device 7 bits address value + * in datasheet must be shifted to the left before calling the interface + * @param Trials Number of trials + * @param Timeout Timeout duration + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_IsDeviceReady(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint32_t Trials, + uint32_t Timeout) +{ + uint32_t tickstart; + + __IO uint32_t I2C_Trials = 0UL; + + FlagStatus tmp1; + FlagStatus tmp2; + + if (hi2c->State == HAL_I2C_STATE_READY) + { + if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) + { + return HAL_BUSY; + } + + /* Process Locked */ + __HAL_LOCK(hi2c); + + hi2c->State = HAL_I2C_STATE_BUSY; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + do + { + /* Generate Start */ + hi2c->Instance->CR2 = I2C_GENERATE_START(hi2c->Init.AddressingMode, DevAddress); + + /* No need to Check TC flag, with AUTOEND mode the stop is automatically generated */ + /* Wait until STOPF flag is set or a NACK flag is set*/ + tickstart = HAL_GetTick(); + + tmp1 = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF); + tmp2 = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF); + + while ((tmp1 == RESET) && (tmp2 == RESET)) + { + if (Timeout != HAL_MAX_DELAY) + { + if (((HAL_GetTick() - tickstart) > Timeout) || (Timeout == 0U)) + { + /* Update I2C state */ + hi2c->State = HAL_I2C_STATE_READY; + + /* Update I2C error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + } + + tmp1 = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF); + tmp2 = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF); + } + + /* Check if the NACKF flag has not been set */ + if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF) == RESET) + { + /* Wait until STOPF flag is reset */ + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_STOPF, RESET, Timeout, tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + /* Clear STOP Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); + + /* Device is ready */ + hi2c->State = HAL_I2C_STATE_READY; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_OK; + } + else + { + /* Wait until STOPF flag is reset */ + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_STOPF, RESET, Timeout, tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + /* Clear NACK Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); + + /* Clear STOP Flag, auto generated with autoend*/ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); + } + + /* Check if the maximum allowed number of trials has been reached */ + if (I2C_Trials == Trials) + { + /* Generate Stop */ + hi2c->Instance->CR2 |= I2C_CR2_STOP; + + /* Wait until STOPF flag is reset */ + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_STOPF, RESET, Timeout, tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + /* Clear STOP Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); + } + + /* Increment Trials */ + I2C_Trials++; + } while (I2C_Trials < Trials); + + /* Update I2C state */ + hi2c->State = HAL_I2C_STATE_READY; + + /* Update I2C error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Sequential transmit in master I2C mode an amount of data in non-blocking mode with Interrupt. + * @note This interface allow to manage repeated start condition when a direction change during transfer + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param DevAddress Target device address: The device 7 bits address value + * in datasheet must be shifted to the left before calling the interface + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @param XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Master_Seq_Transmit_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, + uint16_t Size, uint32_t XferOptions) +{ + uint32_t xfermode; + uint32_t xferrequest = I2C_GENERATE_START_WRITE; + + /* Check the parameters */ + assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions)); + + if (hi2c->State == HAL_I2C_STATE_READY) + { + /* Process Locked */ + __HAL_LOCK(hi2c); + + hi2c->State = HAL_I2C_STATE_BUSY_TX; + hi2c->Mode = HAL_I2C_MODE_MASTER; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferOptions = XferOptions; + hi2c->XferISR = I2C_Master_ISR_IT; + + /* If hi2c->XferCount > MAX_NBYTE_SIZE, use reload mode */ + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + hi2c->XferSize = MAX_NBYTE_SIZE; + xfermode = I2C_RELOAD_MODE; + } + else + { + hi2c->XferSize = hi2c->XferCount; + xfermode = hi2c->XferOptions; + } + + /* If transfer direction not change and there is no request to start another frame, + do not generate Restart Condition */ + /* Mean Previous state is same as current state */ + if ((hi2c->PreviousState == I2C_STATE_MASTER_BUSY_TX) && \ + (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0)) + { + xferrequest = I2C_NO_STARTSTOP; + } + else + { + /* Convert OTHER_xxx XferOptions if any */ + I2C_ConvertOtherXferOptions(hi2c); + + /* Update xfermode accordingly if no reload is necessary */ + if (hi2c->XferCount <= MAX_NBYTE_SIZE) + { + xfermode = hi2c->XferOptions; + } + } + + /* Send Slave Address and set NBYTES to write */ + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, xferrequest); + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + /* Enable ERR, TC, STOP, NACK, TXI interrupt */ + /* possible to enable all of these */ + /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | + I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ + I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Sequential transmit in master I2C mode an amount of data in non-blocking mode with DMA. + * @note This interface allow to manage repeated start condition when a direction change during transfer + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param DevAddress Target device address: The device 7 bits address value + * in datasheet must be shifted to the left before calling the interface + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @param XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Master_Seq_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, + uint16_t Size, uint32_t XferOptions) +{ + uint32_t xfermode; + uint32_t xferrequest = I2C_GENERATE_START_WRITE; + HAL_StatusTypeDef dmaxferstatus; + + /* Check the parameters */ + assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions)); + + if (hi2c->State == HAL_I2C_STATE_READY) + { + /* Process Locked */ + __HAL_LOCK(hi2c); + + hi2c->State = HAL_I2C_STATE_BUSY_TX; + hi2c->Mode = HAL_I2C_MODE_MASTER; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferOptions = XferOptions; + hi2c->XferISR = I2C_Master_ISR_DMA; + + /* If hi2c->XferCount > MAX_NBYTE_SIZE, use reload mode */ + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + hi2c->XferSize = MAX_NBYTE_SIZE; + xfermode = I2C_RELOAD_MODE; + } + else + { + hi2c->XferSize = hi2c->XferCount; + xfermode = hi2c->XferOptions; + } + + /* If transfer direction not change and there is no request to start another frame, + do not generate Restart Condition */ + /* Mean Previous state is same as current state */ + if ((hi2c->PreviousState == I2C_STATE_MASTER_BUSY_TX) && \ + (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0)) + { + xferrequest = I2C_NO_STARTSTOP; + } + else + { + /* Convert OTHER_xxx XferOptions if any */ + I2C_ConvertOtherXferOptions(hi2c); + + /* Update xfermode accordingly if no reload is necessary */ + if (hi2c->XferCount <= MAX_NBYTE_SIZE) + { + xfermode = hi2c->XferOptions; + } + } + + if (hi2c->XferSize > 0U) + { + if (hi2c->hdmatx != NULL) + { + /* Set the I2C DMA transfer complete callback */ + hi2c->hdmatx->XferCpltCallback = I2C_DMAMasterTransmitCplt; + + /* Set the DMA error callback */ + hi2c->hdmatx->XferErrorCallback = I2C_DMAError; + + /* Set the unused DMA callbacks to NULL */ + hi2c->hdmatx->XferHalfCpltCallback = NULL; + hi2c->hdmatx->XferAbortCallback = NULL; + + /* Enable the DMA channel */ + dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance->TXDR, + hi2c->XferSize); + } + else + { + /* Update I2C state */ + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Update I2C error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + + if (dmaxferstatus == HAL_OK) + { + /* Send Slave Address and set NBYTES to write */ + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, xferrequest); + + /* Update XferCount value */ + hi2c->XferCount -= hi2c->XferSize; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + /* Enable ERR and NACK interrupts */ + I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); + + /* Enable DMA Request */ + hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; + } + else + { + /* Update I2C state */ + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Update I2C error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + } + else + { + /* Update Transfer ISR function pointer */ + hi2c->XferISR = I2C_Master_ISR_IT; + + /* Send Slave Address */ + /* Set NBYTES to write and generate START condition */ + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, + I2C_GENERATE_START_WRITE); + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + /* Enable ERR, TC, STOP, NACK, TXI interrupt */ + /* possible to enable all of these */ + /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | + I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ + I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); + } + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Sequential receive in master I2C mode an amount of data in non-blocking mode with Interrupt + * @note This interface allow to manage repeated start condition when a direction change during transfer + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param DevAddress Target device address: The device 7 bits address value + * in datasheet must be shifted to the left before calling the interface + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @param XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Master_Seq_Receive_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, + uint16_t Size, uint32_t XferOptions) +{ + uint32_t xfermode; + uint32_t xferrequest = I2C_GENERATE_START_READ; + + /* Check the parameters */ + assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions)); + + if (hi2c->State == HAL_I2C_STATE_READY) + { + /* Process Locked */ + __HAL_LOCK(hi2c); + + hi2c->State = HAL_I2C_STATE_BUSY_RX; + hi2c->Mode = HAL_I2C_MODE_MASTER; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferOptions = XferOptions; + hi2c->XferISR = I2C_Master_ISR_IT; + + /* If hi2c->XferCount > MAX_NBYTE_SIZE, use reload mode */ + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + hi2c->XferSize = MAX_NBYTE_SIZE; + xfermode = I2C_RELOAD_MODE; + } + else + { + hi2c->XferSize = hi2c->XferCount; + xfermode = hi2c->XferOptions; + } + + /* If transfer direction not change and there is no request to start another frame, + do not generate Restart Condition */ + /* Mean Previous state is same as current state */ + if ((hi2c->PreviousState == I2C_STATE_MASTER_BUSY_RX) && \ + (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0)) + { + xferrequest = I2C_NO_STARTSTOP; + } + else + { + /* Convert OTHER_xxx XferOptions if any */ + I2C_ConvertOtherXferOptions(hi2c); + + /* Update xfermode accordingly if no reload is necessary */ + if (hi2c->XferCount <= MAX_NBYTE_SIZE) + { + xfermode = hi2c->XferOptions; + } + } + + /* Send Slave Address and set NBYTES to read */ + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, xferrequest); + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT); + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Sequential receive in master I2C mode an amount of data in non-blocking mode with DMA + * @note This interface allow to manage repeated start condition when a direction change during transfer + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param DevAddress Target device address: The device 7 bits address value + * in datasheet must be shifted to the left before calling the interface + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @param XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Master_Seq_Receive_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, + uint16_t Size, uint32_t XferOptions) +{ + uint32_t xfermode; + uint32_t xferrequest = I2C_GENERATE_START_READ; + HAL_StatusTypeDef dmaxferstatus; + + /* Check the parameters */ + assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions)); + + if (hi2c->State == HAL_I2C_STATE_READY) + { + /* Process Locked */ + __HAL_LOCK(hi2c); + + hi2c->State = HAL_I2C_STATE_BUSY_RX; + hi2c->Mode = HAL_I2C_MODE_MASTER; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferOptions = XferOptions; + hi2c->XferISR = I2C_Master_ISR_DMA; + + /* If hi2c->XferCount > MAX_NBYTE_SIZE, use reload mode */ + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + hi2c->XferSize = MAX_NBYTE_SIZE; + xfermode = I2C_RELOAD_MODE; + } + else + { + hi2c->XferSize = hi2c->XferCount; + xfermode = hi2c->XferOptions; + } + + /* If transfer direction not change and there is no request to start another frame, + do not generate Restart Condition */ + /* Mean Previous state is same as current state */ + if ((hi2c->PreviousState == I2C_STATE_MASTER_BUSY_RX) && \ + (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0)) + { + xferrequest = I2C_NO_STARTSTOP; + } + else + { + /* Convert OTHER_xxx XferOptions if any */ + I2C_ConvertOtherXferOptions(hi2c); + + /* Update xfermode accordingly if no reload is necessary */ + if (hi2c->XferCount <= MAX_NBYTE_SIZE) + { + xfermode = hi2c->XferOptions; + } + } + + if (hi2c->XferSize > 0U) + { + if (hi2c->hdmarx != NULL) + { + /* Set the I2C DMA transfer complete callback */ + hi2c->hdmarx->XferCpltCallback = I2C_DMAMasterReceiveCplt; + + /* Set the DMA error callback */ + hi2c->hdmarx->XferErrorCallback = I2C_DMAError; + + /* Set the unused DMA callbacks to NULL */ + hi2c->hdmarx->XferHalfCpltCallback = NULL; + hi2c->hdmarx->XferAbortCallback = NULL; + + /* Enable the DMA channel */ + dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)pData, + hi2c->XferSize); + } + else + { + /* Update I2C state */ + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Update I2C error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + + if (dmaxferstatus == HAL_OK) + { + /* Send Slave Address and set NBYTES to read */ + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, xferrequest); + + /* Update XferCount value */ + hi2c->XferCount -= hi2c->XferSize; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + /* Enable ERR and NACK interrupts */ + I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); + + /* Enable DMA Request */ + hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; + } + else + { + /* Update I2C state */ + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Update I2C error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + } + else + { + /* Update Transfer ISR function pointer */ + hi2c->XferISR = I2C_Master_ISR_IT; + + /* Send Slave Address */ + /* Set NBYTES to read and generate START condition */ + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, + I2C_GENERATE_START_READ); + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + /* Enable ERR, TC, STOP, NACK, TXI interrupt */ + /* possible to enable all of these */ + /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | + I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ + I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); + } + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Sequential transmit in slave/device I2C mode an amount of data in non-blocking mode with Interrupt + * @note This interface allow to manage repeated start condition when a direction change during transfer + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @param XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Slave_Seq_Transmit_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, + uint32_t XferOptions) +{ + /* Declaration of tmp to prevent undefined behavior of volatile usage */ + FlagStatus tmp; + + /* Check the parameters */ + assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions)); + + if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN) + { + if ((pData == NULL) || (Size == 0U)) + { + hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; + return HAL_ERROR; + } + + /* Disable Interrupts, to prevent preemption during treatment in case of multicall */ + I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_TX_IT); + + /* Process Locked */ + __HAL_LOCK(hi2c); + + /* I2C cannot manage full duplex exchange so disable previous IT enabled if any */ + /* and then toggle the HAL slave RX state to TX state */ + if (hi2c->State == HAL_I2C_STATE_BUSY_RX_LISTEN) + { + /* Disable associated Interrupts */ + I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); + + /* Abort DMA Xfer if any */ + if ((hi2c->Instance->CR1 & I2C_CR1_RXDMAEN) == I2C_CR1_RXDMAEN) + { + hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; + + if (hi2c->hdmarx != NULL) + { + /* Set the I2C DMA Abort callback : + will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */ + hi2c->hdmarx->XferAbortCallback = I2C_DMAAbort; + + /* Abort DMA RX */ + if (HAL_DMA_Abort_IT(hi2c->hdmarx) != HAL_OK) + { + /* Call Directly XferAbortCallback function in case of error */ + hi2c->hdmarx->XferAbortCallback(hi2c->hdmarx); + } + } + } + } + + hi2c->State = HAL_I2C_STATE_BUSY_TX_LISTEN; + hi2c->Mode = HAL_I2C_MODE_SLAVE; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Enable Address Acknowledge */ + hi2c->Instance->CR2 &= ~I2C_CR2_NACK; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferSize = hi2c->XferCount; + hi2c->XferOptions = XferOptions; + hi2c->XferISR = I2C_Slave_ISR_IT; + + tmp = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_ADDR); + if ((I2C_GET_DIR(hi2c) == I2C_DIRECTION_RECEIVE) && (tmp != RESET)) + { + /* Clear ADDR flag after prepare the transfer parameters */ + /* This action will generate an acknowledge to the Master */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); + } + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + /* REnable ADDR interrupt */ + I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT | I2C_XFER_LISTEN_IT); + + return HAL_OK; + } + else + { + return HAL_ERROR; + } +} + +/** + * @brief Sequential transmit in slave/device I2C mode an amount of data in non-blocking mode with DMA + * @note This interface allow to manage repeated start condition when a direction change during transfer + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @param XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Slave_Seq_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, + uint32_t XferOptions) +{ + /* Declaration of tmp to prevent undefined behavior of volatile usage */ + FlagStatus tmp; + HAL_StatusTypeDef dmaxferstatus; + + /* Check the parameters */ + assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions)); + + if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN) + { + if ((pData == NULL) || (Size == 0U)) + { + hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; + return HAL_ERROR; + } + + /* Process Locked */ + __HAL_LOCK(hi2c); + + /* Disable Interrupts, to prevent preemption during treatment in case of multicall */ + I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_TX_IT); + + /* I2C cannot manage full duplex exchange so disable previous IT enabled if any */ + /* and then toggle the HAL slave RX state to TX state */ + if (hi2c->State == HAL_I2C_STATE_BUSY_RX_LISTEN) + { + /* Disable associated Interrupts */ + I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); + + if ((hi2c->Instance->CR1 & I2C_CR1_RXDMAEN) == I2C_CR1_RXDMAEN) + { + /* Abort DMA Xfer if any */ + if (hi2c->hdmarx != NULL) + { + hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; + + /* Set the I2C DMA Abort callback : + will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */ + hi2c->hdmarx->XferAbortCallback = I2C_DMAAbort; + + /* Abort DMA RX */ + if (HAL_DMA_Abort_IT(hi2c->hdmarx) != HAL_OK) + { + /* Call Directly XferAbortCallback function in case of error */ + hi2c->hdmarx->XferAbortCallback(hi2c->hdmarx); + } + } + } + } + else if (hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) + { + if ((hi2c->Instance->CR1 & I2C_CR1_TXDMAEN) == I2C_CR1_TXDMAEN) + { + hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; + + /* Abort DMA Xfer if any */ + if (hi2c->hdmatx != NULL) + { + /* Set the I2C DMA Abort callback : + will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */ + hi2c->hdmatx->XferAbortCallback = I2C_DMAAbort; + + /* Abort DMA TX */ + if (HAL_DMA_Abort_IT(hi2c->hdmatx) != HAL_OK) + { + /* Call Directly XferAbortCallback function in case of error */ + hi2c->hdmatx->XferAbortCallback(hi2c->hdmatx); + } + } + } + } + else + { + /* Nothing to do */ + } + + hi2c->State = HAL_I2C_STATE_BUSY_TX_LISTEN; + hi2c->Mode = HAL_I2C_MODE_SLAVE; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Enable Address Acknowledge */ + hi2c->Instance->CR2 &= ~I2C_CR2_NACK; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferSize = hi2c->XferCount; + hi2c->XferOptions = XferOptions; + hi2c->XferISR = I2C_Slave_ISR_DMA; + + if (hi2c->hdmatx != NULL) + { + /* Set the I2C DMA transfer complete callback */ + hi2c->hdmatx->XferCpltCallback = I2C_DMASlaveTransmitCplt; + + /* Set the DMA error callback */ + hi2c->hdmatx->XferErrorCallback = I2C_DMAError; + + /* Set the unused DMA callbacks to NULL */ + hi2c->hdmatx->XferHalfCpltCallback = NULL; + hi2c->hdmatx->XferAbortCallback = NULL; + + /* Enable the DMA channel */ + dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance->TXDR, + hi2c->XferSize); + } + else + { + /* Update I2C state */ + hi2c->State = HAL_I2C_STATE_LISTEN; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Update I2C error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + + if (dmaxferstatus == HAL_OK) + { + /* Update XferCount value */ + hi2c->XferCount -= hi2c->XferSize; + + /* Reset XferSize */ + hi2c->XferSize = 0; + } + else + { + /* Update I2C state */ + hi2c->State = HAL_I2C_STATE_LISTEN; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Update I2C error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + + tmp = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_ADDR); + if ((I2C_GET_DIR(hi2c) == I2C_DIRECTION_RECEIVE) && (tmp != RESET)) + { + /* Clear ADDR flag after prepare the transfer parameters */ + /* This action will generate an acknowledge to the Master */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); + } + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Enable DMA Request */ + hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + /* Enable ERR, STOP, NACK, ADDR interrupts */ + I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT); + + return HAL_OK; + } + else + { + return HAL_ERROR; + } +} + +/** + * @brief Sequential receive in slave/device I2C mode an amount of data in non-blocking mode with Interrupt + * @note This interface allow to manage repeated start condition when a direction change during transfer + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @param XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Slave_Seq_Receive_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, + uint32_t XferOptions) +{ + /* Declaration of tmp to prevent undefined behavior of volatile usage */ + FlagStatus tmp; + + /* Check the parameters */ + assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions)); + + if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN) + { + if ((pData == NULL) || (Size == 0U)) + { + hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; + return HAL_ERROR; + } + + /* Disable Interrupts, to prevent preemption during treatment in case of multicall */ + I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT); + + /* Process Locked */ + __HAL_LOCK(hi2c); + + /* I2C cannot manage full duplex exchange so disable previous IT enabled if any */ + /* and then toggle the HAL slave TX state to RX state */ + if (hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) + { + /* Disable associated Interrupts */ + I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); + + if ((hi2c->Instance->CR1 & I2C_CR1_TXDMAEN) == I2C_CR1_TXDMAEN) + { + hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; + + /* Abort DMA Xfer if any */ + if (hi2c->hdmatx != NULL) + { + /* Set the I2C DMA Abort callback : + will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */ + hi2c->hdmatx->XferAbortCallback = I2C_DMAAbort; + + /* Abort DMA TX */ + if (HAL_DMA_Abort_IT(hi2c->hdmatx) != HAL_OK) + { + /* Call Directly XferAbortCallback function in case of error */ + hi2c->hdmatx->XferAbortCallback(hi2c->hdmatx); + } + } + } + } + + hi2c->State = HAL_I2C_STATE_BUSY_RX_LISTEN; + hi2c->Mode = HAL_I2C_MODE_SLAVE; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Enable Address Acknowledge */ + hi2c->Instance->CR2 &= ~I2C_CR2_NACK; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferSize = hi2c->XferCount; + hi2c->XferOptions = XferOptions; + hi2c->XferISR = I2C_Slave_ISR_IT; + + tmp = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_ADDR); + if ((I2C_GET_DIR(hi2c) == I2C_DIRECTION_TRANSMIT) && (tmp != RESET)) + { + /* Clear ADDR flag after prepare the transfer parameters */ + /* This action will generate an acknowledge to the Master */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); + } + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + /* REnable ADDR interrupt */ + I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_LISTEN_IT); + + return HAL_OK; + } + else + { + return HAL_ERROR; + } +} + +/** + * @brief Sequential receive in slave/device I2C mode an amount of data in non-blocking mode with DMA + * @note This interface allow to manage repeated start condition when a direction change during transfer + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @param XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Slave_Seq_Receive_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, + uint32_t XferOptions) +{ + /* Declaration of tmp to prevent undefined behavior of volatile usage */ + FlagStatus tmp; + HAL_StatusTypeDef dmaxferstatus; + + /* Check the parameters */ + assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions)); + + if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN) + { + if ((pData == NULL) || (Size == 0U)) + { + hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; + return HAL_ERROR; + } + + /* Disable Interrupts, to prevent preemption during treatment in case of multicall */ + I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT); + + /* Process Locked */ + __HAL_LOCK(hi2c); + + /* I2C cannot manage full duplex exchange so disable previous IT enabled if any */ + /* and then toggle the HAL slave TX state to RX state */ + if (hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) + { + /* Disable associated Interrupts */ + I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); + + if ((hi2c->Instance->CR1 & I2C_CR1_TXDMAEN) == I2C_CR1_TXDMAEN) + { + /* Abort DMA Xfer if any */ + if (hi2c->hdmatx != NULL) + { + hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; + + /* Set the I2C DMA Abort callback : + will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */ + hi2c->hdmatx->XferAbortCallback = I2C_DMAAbort; + + /* Abort DMA TX */ + if (HAL_DMA_Abort_IT(hi2c->hdmatx) != HAL_OK) + { + /* Call Directly XferAbortCallback function in case of error */ + hi2c->hdmatx->XferAbortCallback(hi2c->hdmatx); + } + } + } + } + else if (hi2c->State == HAL_I2C_STATE_BUSY_RX_LISTEN) + { + if ((hi2c->Instance->CR1 & I2C_CR1_RXDMAEN) == I2C_CR1_RXDMAEN) + { + hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; + + /* Abort DMA Xfer if any */ + if (hi2c->hdmarx != NULL) + { + /* Set the I2C DMA Abort callback : + will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */ + hi2c->hdmarx->XferAbortCallback = I2C_DMAAbort; + + /* Abort DMA RX */ + if (HAL_DMA_Abort_IT(hi2c->hdmarx) != HAL_OK) + { + /* Call Directly XferAbortCallback function in case of error */ + hi2c->hdmarx->XferAbortCallback(hi2c->hdmarx); + } + } + } + } + else + { + /* Nothing to do */ + } + + hi2c->State = HAL_I2C_STATE_BUSY_RX_LISTEN; + hi2c->Mode = HAL_I2C_MODE_SLAVE; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Enable Address Acknowledge */ + hi2c->Instance->CR2 &= ~I2C_CR2_NACK; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferSize = hi2c->XferCount; + hi2c->XferOptions = XferOptions; + hi2c->XferISR = I2C_Slave_ISR_DMA; + + if (hi2c->hdmarx != NULL) + { + /* Set the I2C DMA transfer complete callback */ + hi2c->hdmarx->XferCpltCallback = I2C_DMASlaveReceiveCplt; + + /* Set the DMA error callback */ + hi2c->hdmarx->XferErrorCallback = I2C_DMAError; + + /* Set the unused DMA callbacks to NULL */ + hi2c->hdmarx->XferHalfCpltCallback = NULL; + hi2c->hdmarx->XferAbortCallback = NULL; + + /* Enable the DMA channel */ + dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, + (uint32_t)pData, hi2c->XferSize); + } + else + { + /* Update I2C state */ + hi2c->State = HAL_I2C_STATE_LISTEN; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Update I2C error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + + if (dmaxferstatus == HAL_OK) + { + /* Update XferCount value */ + hi2c->XferCount -= hi2c->XferSize; + + /* Reset XferSize */ + hi2c->XferSize = 0; + } + else + { + /* Update I2C state */ + hi2c->State = HAL_I2C_STATE_LISTEN; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Update I2C error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + + tmp = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_ADDR); + if ((I2C_GET_DIR(hi2c) == I2C_DIRECTION_TRANSMIT) && (tmp != RESET)) + { + /* Clear ADDR flag after prepare the transfer parameters */ + /* This action will generate an acknowledge to the Master */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); + } + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Enable DMA Request */ + hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + /* REnable ADDR interrupt */ + I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_LISTEN_IT); + + return HAL_OK; + } + else + { + return HAL_ERROR; + } +} + +/** + * @brief Enable the Address listen mode with Interrupt. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_EnableListen_IT(I2C_HandleTypeDef *hi2c) +{ + if (hi2c->State == HAL_I2C_STATE_READY) + { + hi2c->State = HAL_I2C_STATE_LISTEN; + hi2c->XferISR = I2C_Slave_ISR_IT; + + /* Enable the Address Match interrupt */ + I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT); + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Disable the Address listen mode with Interrupt. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_DisableListen_IT(I2C_HandleTypeDef *hi2c) +{ + /* Declaration of tmp to prevent undefined behavior of volatile usage */ + uint32_t tmp; + + /* Disable Address listen mode only if a transfer is not ongoing */ + if (hi2c->State == HAL_I2C_STATE_LISTEN) + { + tmp = (uint32_t)(hi2c->State) & I2C_STATE_MSK; + hi2c->PreviousState = tmp | (uint32_t)(hi2c->Mode); + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + hi2c->XferISR = NULL; + + /* Disable the Address Match interrupt */ + I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT); + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Abort a master I2C IT or DMA process communication with Interrupt. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param DevAddress Target device address: The device 7 bits address value + * in datasheet must be shifted to the left before calling the interface + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Master_Abort_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress) +{ + if (hi2c->Mode == HAL_I2C_MODE_MASTER) + { + /* Process Locked */ + __HAL_LOCK(hi2c); + + /* Disable Interrupts and Store Previous state */ + if (hi2c->State == HAL_I2C_STATE_BUSY_TX) + { + I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); + hi2c->PreviousState = I2C_STATE_MASTER_BUSY_TX; + } + else if (hi2c->State == HAL_I2C_STATE_BUSY_RX) + { + I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); + hi2c->PreviousState = I2C_STATE_MASTER_BUSY_RX; + } + else + { + /* Do nothing */ + } + + /* Set State at HAL_I2C_STATE_ABORT */ + hi2c->State = HAL_I2C_STATE_ABORT; + + /* Set NBYTES to 1 to generate a dummy read on I2C peripheral */ + /* Set AUTOEND mode, this will generate a NACK then STOP condition to abort the current transfer */ + I2C_TransferConfig(hi2c, DevAddress, 1, I2C_AUTOEND_MODE, I2C_GENERATE_STOP); + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT); + + return HAL_OK; + } + else + { + /* Wrong usage of abort function */ + /* This function should be used only in case of abort monitored by master device */ + return HAL_ERROR; + } +} + +/** + * @} + */ + +/** @defgroup I2C_IRQ_Handler_and_Callbacks IRQ Handler and Callbacks + * @{ + */ + +/** + * @brief This function handles I2C event interrupt request. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @retval None + */ +void HAL_I2C_EV_IRQHandler(I2C_HandleTypeDef *hi2c) +{ + /* Get current IT Flags and IT sources value */ + uint32_t itflags = READ_REG(hi2c->Instance->ISR); + uint32_t itsources = READ_REG(hi2c->Instance->CR1); + + /* I2C events treatment -------------------------------------*/ + if (hi2c->XferISR != NULL) + { + hi2c->XferISR(hi2c, itflags, itsources); + } +} + +/** + * @brief This function handles I2C error interrupt request. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @retval None + */ +void HAL_I2C_ER_IRQHandler(I2C_HandleTypeDef *hi2c) +{ + uint32_t itflags = READ_REG(hi2c->Instance->ISR); + uint32_t itsources = READ_REG(hi2c->Instance->CR1); + uint32_t tmperror; + + /* I2C Bus error interrupt occurred ------------------------------------*/ + if ((I2C_CHECK_FLAG(itflags, I2C_FLAG_BERR) != RESET) && \ + (I2C_CHECK_IT_SOURCE(itsources, I2C_IT_ERRI) != RESET)) + { + hi2c->ErrorCode |= HAL_I2C_ERROR_BERR; + + /* Clear BERR flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_BERR); + } + + /* I2C Over-Run/Under-Run interrupt occurred ----------------------------------------*/ + if ((I2C_CHECK_FLAG(itflags, I2C_FLAG_OVR) != RESET) && \ + (I2C_CHECK_IT_SOURCE(itsources, I2C_IT_ERRI) != RESET)) + { + hi2c->ErrorCode |= HAL_I2C_ERROR_OVR; + + /* Clear OVR flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_OVR); + } + + /* I2C Arbitration Loss error interrupt occurred -------------------------------------*/ + if ((I2C_CHECK_FLAG(itflags, I2C_FLAG_ARLO) != RESET) && \ + (I2C_CHECK_IT_SOURCE(itsources, I2C_IT_ERRI) != RESET)) + { + hi2c->ErrorCode |= HAL_I2C_ERROR_ARLO; + + /* Clear ARLO flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ARLO); + } + + /* Store current volatile hi2c->ErrorCode, misra rule */ + tmperror = hi2c->ErrorCode; + + /* Call the Error Callback in case of Error detected */ + if ((tmperror & (HAL_I2C_ERROR_BERR | HAL_I2C_ERROR_OVR | HAL_I2C_ERROR_ARLO)) != HAL_I2C_ERROR_NONE) + { + I2C_ITError(hi2c, tmperror); + } +} + +/** + * @brief Master Tx Transfer completed callback. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @retval None + */ +__weak void HAL_I2C_MasterTxCpltCallback(I2C_HandleTypeDef *hi2c) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hi2c); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_I2C_MasterTxCpltCallback could be implemented in the user file + */ +} + +/** + * @brief Master Rx Transfer completed callback. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @retval None + */ +__weak void HAL_I2C_MasterRxCpltCallback(I2C_HandleTypeDef *hi2c) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hi2c); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_I2C_MasterRxCpltCallback could be implemented in the user file + */ +} + +/** @brief Slave Tx Transfer completed callback. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @retval None + */ +__weak void HAL_I2C_SlaveTxCpltCallback(I2C_HandleTypeDef *hi2c) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hi2c); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_I2C_SlaveTxCpltCallback could be implemented in the user file + */ +} + +/** + * @brief Slave Rx Transfer completed callback. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @retval None + */ +__weak void HAL_I2C_SlaveRxCpltCallback(I2C_HandleTypeDef *hi2c) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hi2c); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_I2C_SlaveRxCpltCallback could be implemented in the user file + */ +} + +/** + * @brief Slave Address Match callback. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param TransferDirection Master request Transfer Direction (Write/Read), value of @ref I2C_XFERDIRECTION + * @param AddrMatchCode Address Match Code + * @retval None + */ +__weak void HAL_I2C_AddrCallback(I2C_HandleTypeDef *hi2c, uint8_t TransferDirection, uint16_t AddrMatchCode) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hi2c); + UNUSED(TransferDirection); + UNUSED(AddrMatchCode); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_I2C_AddrCallback() could be implemented in the user file + */ +} + +/** + * @brief Listen Complete callback. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @retval None + */ +__weak void HAL_I2C_ListenCpltCallback(I2C_HandleTypeDef *hi2c) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hi2c); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_I2C_ListenCpltCallback() could be implemented in the user file + */ +} + +/** + * @brief Memory Tx Transfer completed callback. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @retval None + */ +__weak void HAL_I2C_MemTxCpltCallback(I2C_HandleTypeDef *hi2c) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hi2c); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_I2C_MemTxCpltCallback could be implemented in the user file + */ +} + +/** + * @brief Memory Rx Transfer completed callback. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @retval None + */ +__weak void HAL_I2C_MemRxCpltCallback(I2C_HandleTypeDef *hi2c) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hi2c); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_I2C_MemRxCpltCallback could be implemented in the user file + */ +} + +/** + * @brief I2C error callback. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @retval None + */ +__weak void HAL_I2C_ErrorCallback(I2C_HandleTypeDef *hi2c) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hi2c); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_I2C_ErrorCallback could be implemented in the user file + */ +} + +/** + * @brief I2C abort callback. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @retval None + */ +__weak void HAL_I2C_AbortCpltCallback(I2C_HandleTypeDef *hi2c) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hi2c); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_I2C_AbortCpltCallback could be implemented in the user file + */ +} + +/** + * @} + */ + +/** @defgroup I2C_Exported_Functions_Group3 Peripheral State, Mode and Error functions + * @brief Peripheral State, Mode and Error functions + * +@verbatim + =============================================================================== + ##### Peripheral State, Mode and Error functions ##### + =============================================================================== + [..] + This subsection permit to get in run-time the status of the peripheral + and the data flow. + +@endverbatim + * @{ + */ + +/** + * @brief Return the I2C handle state. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @retval HAL state + */ +HAL_I2C_StateTypeDef HAL_I2C_GetState(I2C_HandleTypeDef *hi2c) +{ + /* Return I2C handle state */ + return hi2c->State; +} + +/** + * @brief Returns the I2C Master, Slave, Memory or no mode. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for I2C module + * @retval HAL mode + */ +HAL_I2C_ModeTypeDef HAL_I2C_GetMode(I2C_HandleTypeDef *hi2c) +{ + return hi2c->Mode; +} + +/** + * @brief Return the I2C error code. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @retval I2C Error Code + */ +uint32_t HAL_I2C_GetError(I2C_HandleTypeDef *hi2c) +{ + return hi2c->ErrorCode; +} + +/** + * @} + */ + +/** + * @} + */ + +/** @addtogroup I2C_Private_Functions + * @{ + */ + +/** + * @brief Interrupt Sub-Routine which handle the Interrupt Flags Master Mode with Interrupt. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param ITFlags Interrupt flags to handle. + * @param ITSources Interrupt sources enabled. + * @retval HAL status + */ +static HAL_StatusTypeDef I2C_Master_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, + uint32_t ITSources) +{ + uint16_t devaddress; + uint32_t tmpITFlags = ITFlags; + + /* Process Locked */ + __HAL_LOCK(hi2c); + + if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_AF) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) + { + /* Clear NACK Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); + + /* Set corresponding Error Code */ + /* No need to generate STOP, it is automatically done */ + /* Error callback will be send during stop flag treatment */ + hi2c->ErrorCode |= HAL_I2C_ERROR_AF; + + /* Flush TX register */ + I2C_Flush_TXDR(hi2c); + } + else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_RXNE) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_RXI) != RESET)) + { + /* Remove RXNE flag on temporary variable as read done */ + tmpITFlags &= ~I2C_FLAG_RXNE; + + /* Read data from RXDR */ + *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; + + /* Increment Buffer pointer */ + hi2c->pBuffPtr++; + + hi2c->XferSize--; + hi2c->XferCount--; + } + else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TXIS) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TXI) != RESET)) + { + /* Write data to TXDR */ + hi2c->Instance->TXDR = *hi2c->pBuffPtr; + + /* Increment Buffer pointer */ + hi2c->pBuffPtr++; + + hi2c->XferSize--; + hi2c->XferCount--; + } + else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TCR) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) + { + if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) + { + devaddress = (uint16_t)(hi2c->Instance->CR2 & I2C_CR2_SADD); + + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + hi2c->XferSize = MAX_NBYTE_SIZE; + I2C_TransferConfig(hi2c, devaddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, I2C_NO_STARTSTOP); + } + else + { + hi2c->XferSize = hi2c->XferCount; + if (hi2c->XferOptions != I2C_NO_OPTION_FRAME) + { + I2C_TransferConfig(hi2c, devaddress, (uint8_t)hi2c->XferSize, + hi2c->XferOptions, I2C_NO_STARTSTOP); + } + else + { + I2C_TransferConfig(hi2c, devaddress, (uint8_t)hi2c->XferSize, + I2C_AUTOEND_MODE, I2C_NO_STARTSTOP); + } + } + } + else + { + /* Call TxCpltCallback() if no stop mode is set */ + if (I2C_GET_STOP_MODE(hi2c) != I2C_AUTOEND_MODE) + { + /* Call I2C Master Sequential complete process */ + I2C_ITMasterSeqCplt(hi2c); + } + else + { + /* Wrong size Status regarding TCR flag event */ + /* Call the corresponding callback to inform upper layer of End of Transfer */ + I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); + } + } + } + else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TC) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) + { + if (hi2c->XferCount == 0U) + { + if (I2C_GET_STOP_MODE(hi2c) != I2C_AUTOEND_MODE) + { + /* Generate a stop condition in case of no transfer option */ + if (hi2c->XferOptions == I2C_NO_OPTION_FRAME) + { + /* Generate Stop */ + hi2c->Instance->CR2 |= I2C_CR2_STOP; + } + else + { + /* Call I2C Master Sequential complete process */ + I2C_ITMasterSeqCplt(hi2c); + } + } + } + else + { + /* Wrong size Status regarding TC flag event */ + /* Call the corresponding callback to inform upper layer of End of Transfer */ + I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); + } + } + else + { + /* Nothing to do */ + } + + if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_STOPF) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) + { + /* Call I2C Master complete process */ + I2C_ITMasterCplt(hi2c, tmpITFlags); + } + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_OK; +} + +/** + * @brief Interrupt Sub-Routine which handle the Interrupt Flags Memory Mode with Interrupt. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param ITFlags Interrupt flags to handle. + * @param ITSources Interrupt sources enabled. + * @retval HAL status + */ +static HAL_StatusTypeDef I2C_Mem_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, + uint32_t ITSources) +{ + uint32_t direction = I2C_GENERATE_START_WRITE; + uint32_t tmpITFlags = ITFlags; + + /* Process Locked */ + __HAL_LOCK(hi2c); + + if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_AF) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) + { + /* Clear NACK Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); + + /* Set corresponding Error Code */ + /* No need to generate STOP, it is automatically done */ + /* Error callback will be send during stop flag treatment */ + hi2c->ErrorCode |= HAL_I2C_ERROR_AF; + + /* Flush TX register */ + I2C_Flush_TXDR(hi2c); + } + else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_RXNE) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_RXI) != RESET)) + { + /* Remove RXNE flag on temporary variable as read done */ + tmpITFlags &= ~I2C_FLAG_RXNE; + + /* Read data from RXDR */ + *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; + + /* Increment Buffer pointer */ + hi2c->pBuffPtr++; + + hi2c->XferSize--; + hi2c->XferCount--; + } + else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TXIS) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TXI) != RESET)) + { + if (hi2c->Memaddress == 0xFFFFFFFFU) + { + /* Write data to TXDR */ + hi2c->Instance->TXDR = *hi2c->pBuffPtr; + + /* Increment Buffer pointer */ + hi2c->pBuffPtr++; + + hi2c->XferSize--; + hi2c->XferCount--; + } + else + { + /* Write LSB part of Memory Address */ + hi2c->Instance->TXDR = hi2c->Memaddress; + + /* Reset Memaddress content */ + hi2c->Memaddress = 0xFFFFFFFFU; + } + } + else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TCR) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) + { + if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) + { + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + hi2c->XferSize = MAX_NBYTE_SIZE; + I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, + I2C_RELOAD_MODE, I2C_NO_STARTSTOP); + } + else + { + hi2c->XferSize = hi2c->XferCount; + I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, + I2C_AUTOEND_MODE, I2C_NO_STARTSTOP); + } + } + else + { + /* Wrong size Status regarding TCR flag event */ + /* Call the corresponding callback to inform upper layer of End of Transfer */ + I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); + } + } + else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TC) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) + { + if (hi2c->State == HAL_I2C_STATE_BUSY_RX) + { + direction = I2C_GENERATE_START_READ; + } + + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + hi2c->XferSize = MAX_NBYTE_SIZE; + + /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */ + I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, + I2C_RELOAD_MODE, direction); + } + else + { + hi2c->XferSize = hi2c->XferCount; + + /* Set NBYTES to write and generate RESTART */ + I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, + I2C_AUTOEND_MODE, direction); + } + } + else + { + /* Nothing to do */ + } + + if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_STOPF) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) + { + /* Call I2C Master complete process */ + I2C_ITMasterCplt(hi2c, tmpITFlags); + } + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_OK; +} + +/** + * @brief Interrupt Sub-Routine which handle the Interrupt Flags Slave Mode with Interrupt. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param ITFlags Interrupt flags to handle. + * @param ITSources Interrupt sources enabled. + * @retval HAL status + */ +static HAL_StatusTypeDef I2C_Slave_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, + uint32_t ITSources) +{ + uint32_t tmpoptions = hi2c->XferOptions; + uint32_t tmpITFlags = ITFlags; + + /* Process locked */ + __HAL_LOCK(hi2c); + + /* Check if STOPF is set */ + if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_STOPF) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) + { + /* Call I2C Slave complete process */ + I2C_ITSlaveCplt(hi2c, tmpITFlags); + } + + if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_AF) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) + { + /* Check that I2C transfer finished */ + /* if yes, normal use case, a NACK is sent by the MASTER when Transfer is finished */ + /* Mean XferCount == 0*/ + /* So clear Flag NACKF only */ + if (hi2c->XferCount == 0U) + { + if ((hi2c->State == HAL_I2C_STATE_LISTEN) && (tmpoptions == I2C_FIRST_AND_LAST_FRAME)) + /* Same action must be done for (tmpoptions == I2C_LAST_FRAME) which removed for + Warning[Pa134]: left and right operands are identical */ + { + /* Call I2C Listen complete process */ + I2C_ITListenCplt(hi2c, tmpITFlags); + } + else if ((hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) && (tmpoptions != I2C_NO_OPTION_FRAME)) + { + /* Clear NACK Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); + + /* Flush TX register */ + I2C_Flush_TXDR(hi2c); + + /* Last Byte is Transmitted */ + /* Call I2C Slave Sequential complete process */ + I2C_ITSlaveSeqCplt(hi2c); + } + else + { + /* Clear NACK Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); + } + } + else + { + /* if no, error use case, a Non-Acknowledge of last Data is generated by the MASTER*/ + /* Clear NACK Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); + + /* Set ErrorCode corresponding to a Non-Acknowledge */ + hi2c->ErrorCode |= HAL_I2C_ERROR_AF; + + if ((tmpoptions == I2C_FIRST_FRAME) || (tmpoptions == I2C_NEXT_FRAME)) + { + /* Call the corresponding callback to inform upper layer of End of Transfer */ + I2C_ITError(hi2c, hi2c->ErrorCode); + } + } + } + else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_RXNE) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_RXI) != RESET)) + { + if (hi2c->XferCount > 0U) + { + /* Read data from RXDR */ + *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; + + /* Increment Buffer pointer */ + hi2c->pBuffPtr++; + + hi2c->XferSize--; + hi2c->XferCount--; + } + + if ((hi2c->XferCount == 0U) && \ + (tmpoptions != I2C_NO_OPTION_FRAME)) + { + /* Call I2C Slave Sequential complete process */ + I2C_ITSlaveSeqCplt(hi2c); + } + } + else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_ADDR) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_ADDRI) != RESET)) + { + I2C_ITAddrCplt(hi2c, tmpITFlags); + } + else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TXIS) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TXI) != RESET)) + { + /* Write data to TXDR only if XferCount not reach "0" */ + /* A TXIS flag can be set, during STOP treatment */ + /* Check if all Data have already been sent */ + /* If it is the case, this last write in TXDR is not sent, correspond to a dummy TXIS event */ + if (hi2c->XferCount > 0U) + { + /* Write data to TXDR */ + hi2c->Instance->TXDR = *hi2c->pBuffPtr; + + /* Increment Buffer pointer */ + hi2c->pBuffPtr++; + + hi2c->XferCount--; + hi2c->XferSize--; + } + else + { + if ((tmpoptions == I2C_NEXT_FRAME) || (tmpoptions == I2C_FIRST_FRAME)) + { + /* Last Byte is Transmitted */ + /* Call I2C Slave Sequential complete process */ + I2C_ITSlaveSeqCplt(hi2c); + } + } + } + else + { + /* Nothing to do */ + } + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_OK; +} + +/** + * @brief Interrupt Sub-Routine which handle the Interrupt Flags Master Mode with DMA. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param ITFlags Interrupt flags to handle. + * @param ITSources Interrupt sources enabled. + * @retval HAL status + */ +static HAL_StatusTypeDef I2C_Master_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, + uint32_t ITSources) +{ + uint16_t devaddress; + uint32_t xfermode; + + /* Process Locked */ + __HAL_LOCK(hi2c); + + if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_AF) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) + { + /* Clear NACK Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); + + /* Set corresponding Error Code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_AF; + + /* No need to generate STOP, it is automatically done */ + /* But enable STOP interrupt, to treat it */ + /* Error callback will be send during stop flag treatment */ + I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT); + + /* Flush TX register */ + I2C_Flush_TXDR(hi2c); + } + else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_TCR) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) + { + /* Disable TC interrupt */ + __HAL_I2C_DISABLE_IT(hi2c, I2C_IT_TCI); + + if (hi2c->XferCount != 0U) + { + /* Recover Slave address */ + devaddress = (uint16_t)(hi2c->Instance->CR2 & I2C_CR2_SADD); + + /* Prepare the new XferSize to transfer */ + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + hi2c->XferSize = MAX_NBYTE_SIZE; + xfermode = I2C_RELOAD_MODE; + } + else + { + hi2c->XferSize = hi2c->XferCount; + if (hi2c->XferOptions != I2C_NO_OPTION_FRAME) + { + xfermode = hi2c->XferOptions; + } + else + { + xfermode = I2C_AUTOEND_MODE; + } + } + + /* Set the new XferSize in Nbytes register */ + I2C_TransferConfig(hi2c, devaddress, (uint8_t)hi2c->XferSize, xfermode, I2C_NO_STARTSTOP); + + /* Update XferCount value */ + hi2c->XferCount -= hi2c->XferSize; + + /* Enable DMA Request */ + if (hi2c->State == HAL_I2C_STATE_BUSY_RX) + { + hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; + } + else + { + hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; + } + } + else + { + /* Call TxCpltCallback() if no stop mode is set */ + if (I2C_GET_STOP_MODE(hi2c) != I2C_AUTOEND_MODE) + { + /* Call I2C Master Sequential complete process */ + I2C_ITMasterSeqCplt(hi2c); + } + else + { + /* Wrong size Status regarding TCR flag event */ + /* Call the corresponding callback to inform upper layer of End of Transfer */ + I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); + } + } + } + else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_TC) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) + { + if (hi2c->XferCount == 0U) + { + if (I2C_GET_STOP_MODE(hi2c) != I2C_AUTOEND_MODE) + { + /* Generate a stop condition in case of no transfer option */ + if (hi2c->XferOptions == I2C_NO_OPTION_FRAME) + { + /* Generate Stop */ + hi2c->Instance->CR2 |= I2C_CR2_STOP; + } + else + { + /* Call I2C Master Sequential complete process */ + I2C_ITMasterSeqCplt(hi2c); + } + } + } + else + { + /* Wrong size Status regarding TC flag event */ + /* Call the corresponding callback to inform upper layer of End of Transfer */ + I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); + } + } + else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_STOPF) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) + { + /* Call I2C Master complete process */ + I2C_ITMasterCplt(hi2c, ITFlags); + } + else + { + /* Nothing to do */ + } + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_OK; +} + +/** + * @brief Interrupt Sub-Routine which handle the Interrupt Flags Memory Mode with DMA. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param ITFlags Interrupt flags to handle. + * @param ITSources Interrupt sources enabled. + * @retval HAL status + */ +static HAL_StatusTypeDef I2C_Mem_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, + uint32_t ITSources) +{ + uint32_t direction = I2C_GENERATE_START_WRITE; + + /* Process Locked */ + __HAL_LOCK(hi2c); + + if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_AF) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) + { + /* Clear NACK Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); + + /* Set corresponding Error Code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_AF; + + /* No need to generate STOP, it is automatically done */ + /* But enable STOP interrupt, to treat it */ + /* Error callback will be send during stop flag treatment */ + I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT); + + /* Flush TX register */ + I2C_Flush_TXDR(hi2c); + } + else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_TXIS) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TXI) != RESET)) + { + /* Write LSB part of Memory Address */ + hi2c->Instance->TXDR = hi2c->Memaddress; + + /* Reset Memaddress content */ + hi2c->Memaddress = 0xFFFFFFFFU; + } + else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_TCR) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) + { + /* Enable only Error interrupt */ + I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); + + if (hi2c->XferCount != 0U) + { + /* Prepare the new XferSize to transfer */ + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + hi2c->XferSize = MAX_NBYTE_SIZE; + I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, + I2C_RELOAD_MODE, I2C_NO_STARTSTOP); + } + else + { + hi2c->XferSize = hi2c->XferCount; + I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, + I2C_AUTOEND_MODE, I2C_NO_STARTSTOP); + } + + /* Update XferCount value */ + hi2c->XferCount -= hi2c->XferSize; + + /* Enable DMA Request */ + if (hi2c->State == HAL_I2C_STATE_BUSY_RX) + { + hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; + } + else + { + hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; + } + } + else + { + /* Wrong size Status regarding TCR flag event */ + /* Call the corresponding callback to inform upper layer of End of Transfer */ + I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); + } + } + else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_TC) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) + { + if (hi2c->State == HAL_I2C_STATE_BUSY_RX) + { + direction = I2C_GENERATE_START_READ; + } + + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + hi2c->XferSize = MAX_NBYTE_SIZE; + + /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */ + I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, + I2C_RELOAD_MODE, direction); + } + else + { + hi2c->XferSize = hi2c->XferCount; + + /* Set NBYTES to write and generate RESTART */ + I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, + I2C_AUTOEND_MODE, direction); + } + + /* Update XferCount value */ + hi2c->XferCount -= hi2c->XferSize; + + /* Enable DMA Request */ + if (hi2c->State == HAL_I2C_STATE_BUSY_RX) + { + hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; + } + else + { + hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; + } + } + else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_STOPF) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) + { + /* Call I2C Master complete process */ + I2C_ITMasterCplt(hi2c, ITFlags); + } + else + { + /* Nothing to do */ + } + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_OK; +} + +/** + * @brief Interrupt Sub-Routine which handle the Interrupt Flags Slave Mode with DMA. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param ITFlags Interrupt flags to handle. + * @param ITSources Interrupt sources enabled. + * @retval HAL status + */ +static HAL_StatusTypeDef I2C_Slave_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, + uint32_t ITSources) +{ + uint32_t tmpoptions = hi2c->XferOptions; + uint32_t treatdmanack = 0U; + HAL_I2C_StateTypeDef tmpstate; + + /* Process locked */ + __HAL_LOCK(hi2c); + + /* Check if STOPF is set */ + if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_STOPF) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) + { + /* Call I2C Slave complete process */ + I2C_ITSlaveCplt(hi2c, ITFlags); + } + + if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_AF) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) + { + /* Check that I2C transfer finished */ + /* if yes, normal use case, a NACK is sent by the MASTER when Transfer is finished */ + /* Mean XferCount == 0 */ + /* So clear Flag NACKF only */ + if ((I2C_CHECK_IT_SOURCE(ITSources, I2C_CR1_TXDMAEN) != RESET) || + (I2C_CHECK_IT_SOURCE(ITSources, I2C_CR1_RXDMAEN) != RESET)) + { + /* Split check of hdmarx, for MISRA compliance */ + if (hi2c->hdmarx != NULL) + { + if (I2C_CHECK_IT_SOURCE(ITSources, I2C_CR1_RXDMAEN) != RESET) + { + if (I2C_GET_DMA_REMAIN_DATA(hi2c->hdmarx) == 0U) + { + treatdmanack = 1U; + } + } + } + + /* Split check of hdmatx, for MISRA compliance */ + if (hi2c->hdmatx != NULL) + { + if (I2C_CHECK_IT_SOURCE(ITSources, I2C_CR1_TXDMAEN) != RESET) + { + if (I2C_GET_DMA_REMAIN_DATA(hi2c->hdmatx) == 0U) + { + treatdmanack = 1U; + } + } + } + + if (treatdmanack == 1U) + { + if ((hi2c->State == HAL_I2C_STATE_LISTEN) && (tmpoptions == I2C_FIRST_AND_LAST_FRAME)) + /* Same action must be done for (tmpoptions == I2C_LAST_FRAME) which removed for + Warning[Pa134]: left and right operands are identical */ + { + /* Call I2C Listen complete process */ + I2C_ITListenCplt(hi2c, ITFlags); + } + else if ((hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) && (tmpoptions != I2C_NO_OPTION_FRAME)) + { + /* Clear NACK Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); + + /* Flush TX register */ + I2C_Flush_TXDR(hi2c); + + /* Last Byte is Transmitted */ + /* Call I2C Slave Sequential complete process */ + I2C_ITSlaveSeqCplt(hi2c); + } + else + { + /* Clear NACK Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); + } + } + else + { + /* if no, error use case, a Non-Acknowledge of last Data is generated by the MASTER*/ + /* Clear NACK Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); + + /* Set ErrorCode corresponding to a Non-Acknowledge */ + hi2c->ErrorCode |= HAL_I2C_ERROR_AF; + + /* Store current hi2c->State, solve MISRA2012-Rule-13.5 */ + tmpstate = hi2c->State; + + if ((tmpoptions == I2C_FIRST_FRAME) || (tmpoptions == I2C_NEXT_FRAME)) + { + if ((tmpstate == HAL_I2C_STATE_BUSY_TX) || (tmpstate == HAL_I2C_STATE_BUSY_TX_LISTEN)) + { + hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_TX; + } + else if ((tmpstate == HAL_I2C_STATE_BUSY_RX) || (tmpstate == HAL_I2C_STATE_BUSY_RX_LISTEN)) + { + hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_RX; + } + else + { + /* Do nothing */ + } + + /* Call the corresponding callback to inform upper layer of End of Transfer */ + I2C_ITError(hi2c, hi2c->ErrorCode); + } + } + } + else + { + /* Only Clear NACK Flag, no DMA treatment is pending */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); + } + } + else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_ADDR) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_ADDRI) != RESET)) + { + I2C_ITAddrCplt(hi2c, ITFlags); + } + else + { + /* Nothing to do */ + } + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_OK; +} + +/** + * @brief Master sends target device address followed by internal memory address for write request. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param DevAddress Target device address: The device 7 bits address value + * in datasheet must be shifted to the left before calling the interface + * @param MemAddress Internal memory address + * @param MemAddSize Size of internal memory address + * @param Timeout Timeout duration + * @param Tickstart Tick start value + * @retval HAL status + */ +static HAL_StatusTypeDef I2C_RequestMemoryWrite(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, + uint16_t MemAddress, uint16_t MemAddSize, uint32_t Timeout, + uint32_t Tickstart) +{ + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_RELOAD_MODE, I2C_GENERATE_START_WRITE); + + /* Wait until TXIS flag is set */ + if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + /* If Memory address size is 8Bit */ + if (MemAddSize == I2C_MEMADD_SIZE_8BIT) + { + /* Send Memory Address */ + hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); + } + /* If Memory address size is 16Bit */ + else + { + /* Send MSB of Memory Address */ + hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress); + + /* Wait until TXIS flag is set */ + if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + /* Send LSB of Memory Address */ + hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); + } + + /* Wait until TCR flag is set */ + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, Tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + return HAL_OK; +} + +/** + * @brief Master sends target device address followed by internal memory address for read request. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param DevAddress Target device address: The device 7 bits address value + * in datasheet must be shifted to the left before calling the interface + * @param MemAddress Internal memory address + * @param MemAddSize Size of internal memory address + * @param Timeout Timeout duration + * @param Tickstart Tick start value + * @retval HAL status + */ +static HAL_StatusTypeDef I2C_RequestMemoryRead(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, + uint16_t MemAddress, uint16_t MemAddSize, uint32_t Timeout, + uint32_t Tickstart) +{ + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_SOFTEND_MODE, I2C_GENERATE_START_WRITE); + + /* Wait until TXIS flag is set */ + if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + /* If Memory address size is 8Bit */ + if (MemAddSize == I2C_MEMADD_SIZE_8BIT) + { + /* Send Memory Address */ + hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); + } + /* If Memory address size is 16Bit */ + else + { + /* Send MSB of Memory Address */ + hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress); + + /* Wait until TXIS flag is set */ + if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + /* Send LSB of Memory Address */ + hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); + } + + /* Wait until TC flag is set */ + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TC, RESET, Timeout, Tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + return HAL_OK; +} + +/** + * @brief I2C Address complete process callback. + * @param hi2c I2C handle. + * @param ITFlags Interrupt flags to handle. + * @retval None + */ +static void I2C_ITAddrCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags) +{ + uint8_t transferdirection; + uint16_t slaveaddrcode; + uint16_t ownadd1code; + uint16_t ownadd2code; + + /* Prevent unused argument(s) compilation warning */ + UNUSED(ITFlags); + + /* In case of Listen state, need to inform upper layer of address match code event */ + if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN) + { + transferdirection = I2C_GET_DIR(hi2c); + slaveaddrcode = I2C_GET_ADDR_MATCH(hi2c); + ownadd1code = I2C_GET_OWN_ADDRESS1(hi2c); + ownadd2code = I2C_GET_OWN_ADDRESS2(hi2c); + + /* If 10bits addressing mode is selected */ + if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_10BIT) + { + if ((slaveaddrcode & SLAVE_ADDR_MSK) == ((ownadd1code >> SLAVE_ADDR_SHIFT) & SLAVE_ADDR_MSK)) + { + slaveaddrcode = ownadd1code; + hi2c->AddrEventCount++; + if (hi2c->AddrEventCount == 2U) + { + /* Reset Address Event counter */ + hi2c->AddrEventCount = 0U; + + /* Clear ADDR flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Call Slave Addr callback */ +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) + hi2c->AddrCallback(hi2c, transferdirection, slaveaddrcode); +#else + HAL_I2C_AddrCallback(hi2c, transferdirection, slaveaddrcode); +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + } + } + else + { + slaveaddrcode = ownadd2code; + + /* Disable ADDR Interrupts */ + I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT); + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Call Slave Addr callback */ +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) + hi2c->AddrCallback(hi2c, transferdirection, slaveaddrcode); +#else + HAL_I2C_AddrCallback(hi2c, transferdirection, slaveaddrcode); +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + } + } + /* else 7 bits addressing mode is selected */ + else + { + /* Disable ADDR Interrupts */ + I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT); + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Call Slave Addr callback */ +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) + hi2c->AddrCallback(hi2c, transferdirection, slaveaddrcode); +#else + HAL_I2C_AddrCallback(hi2c, transferdirection, slaveaddrcode); +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + } + } + /* Else clear address flag only */ + else + { + /* Clear ADDR flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + } +} + +/** + * @brief I2C Master sequential complete process. + * @param hi2c I2C handle. + * @retval None + */ +static void I2C_ITMasterSeqCplt(I2C_HandleTypeDef *hi2c) +{ + /* Reset I2C handle mode */ + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* No Generate Stop, to permit restart mode */ + /* The stop will be done at the end of transfer, when I2C_AUTOEND_MODE enable */ + if (hi2c->State == HAL_I2C_STATE_BUSY_TX) + { + hi2c->State = HAL_I2C_STATE_READY; + hi2c->PreviousState = I2C_STATE_MASTER_BUSY_TX; + hi2c->XferISR = NULL; + + /* Disable Interrupts */ + I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Call the corresponding callback to inform upper layer of End of Transfer */ +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) + hi2c->MasterTxCpltCallback(hi2c); +#else + HAL_I2C_MasterTxCpltCallback(hi2c); +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + } + /* hi2c->State == HAL_I2C_STATE_BUSY_RX */ + else + { + hi2c->State = HAL_I2C_STATE_READY; + hi2c->PreviousState = I2C_STATE_MASTER_BUSY_RX; + hi2c->XferISR = NULL; + + /* Disable Interrupts */ + I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Call the corresponding callback to inform upper layer of End of Transfer */ +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) + hi2c->MasterRxCpltCallback(hi2c); +#else + HAL_I2C_MasterRxCpltCallback(hi2c); +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + } +} + +/** + * @brief I2C Slave sequential complete process. + * @param hi2c I2C handle. + * @retval None + */ +static void I2C_ITSlaveSeqCplt(I2C_HandleTypeDef *hi2c) +{ + uint32_t tmpcr1value = READ_REG(hi2c->Instance->CR1); + + /* Reset I2C handle mode */ + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* If a DMA is ongoing, Update handle size context */ + if (I2C_CHECK_IT_SOURCE(tmpcr1value, I2C_CR1_TXDMAEN) != RESET) + { + /* Disable DMA Request */ + hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; + } + else if (I2C_CHECK_IT_SOURCE(tmpcr1value, I2C_CR1_RXDMAEN) != RESET) + { + /* Disable DMA Request */ + hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; + } + else + { + /* Do nothing */ + } + + if (hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) + { + /* Remove HAL_I2C_STATE_SLAVE_BUSY_TX, keep only HAL_I2C_STATE_LISTEN */ + hi2c->State = HAL_I2C_STATE_LISTEN; + hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_TX; + + /* Disable Interrupts */ + I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Call the corresponding callback to inform upper layer of End of Transfer */ +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) + hi2c->SlaveTxCpltCallback(hi2c); +#else + HAL_I2C_SlaveTxCpltCallback(hi2c); +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + } + + else if (hi2c->State == HAL_I2C_STATE_BUSY_RX_LISTEN) + { + /* Remove HAL_I2C_STATE_SLAVE_BUSY_RX, keep only HAL_I2C_STATE_LISTEN */ + hi2c->State = HAL_I2C_STATE_LISTEN; + hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_RX; + + /* Disable Interrupts */ + I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Call the corresponding callback to inform upper layer of End of Transfer */ +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) + hi2c->SlaveRxCpltCallback(hi2c); +#else + HAL_I2C_SlaveRxCpltCallback(hi2c); +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + } + else + { + /* Nothing to do */ + } +} + +/** + * @brief I2C Master complete process. + * @param hi2c I2C handle. + * @param ITFlags Interrupt flags to handle. + * @retval None + */ +static void I2C_ITMasterCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags) +{ + uint32_t tmperror; + uint32_t tmpITFlags = ITFlags; + __IO uint32_t tmpreg; + + /* Clear STOP Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); + + /* Disable Interrupts and Store Previous state */ + if (hi2c->State == HAL_I2C_STATE_BUSY_TX) + { + I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); + hi2c->PreviousState = I2C_STATE_MASTER_BUSY_TX; + } + else if (hi2c->State == HAL_I2C_STATE_BUSY_RX) + { + I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); + hi2c->PreviousState = I2C_STATE_MASTER_BUSY_RX; + } + else + { + /* Do nothing */ + } + + /* Clear Configuration Register 2 */ + I2C_RESET_CR2(hi2c); + + /* Reset handle parameters */ + hi2c->XferISR = NULL; + hi2c->XferOptions = I2C_NO_OPTION_FRAME; + + if (I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_AF) != RESET) + { + /* Clear NACK Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); + + /* Set acknowledge error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_AF; + } + + /* Fetch Last receive data if any */ + if ((hi2c->State == HAL_I2C_STATE_ABORT) && (I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_RXNE) != RESET)) + { + /* Read data from RXDR */ + tmpreg = (uint8_t)hi2c->Instance->RXDR; + UNUSED(tmpreg); + } + + /* Flush TX register */ + I2C_Flush_TXDR(hi2c); + + /* Store current volatile hi2c->ErrorCode, misra rule */ + tmperror = hi2c->ErrorCode; + + /* Call the corresponding callback to inform upper layer of End of Transfer */ + if ((hi2c->State == HAL_I2C_STATE_ABORT) || (tmperror != HAL_I2C_ERROR_NONE)) + { + /* Call the corresponding callback to inform upper layer of End of Transfer */ + I2C_ITError(hi2c, hi2c->ErrorCode); + } + /* hi2c->State == HAL_I2C_STATE_BUSY_TX */ + else if (hi2c->State == HAL_I2C_STATE_BUSY_TX) + { + hi2c->State = HAL_I2C_STATE_READY; + hi2c->PreviousState = I2C_STATE_NONE; + + if (hi2c->Mode == HAL_I2C_MODE_MEM) + { + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Call the corresponding callback to inform upper layer of End of Transfer */ +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) + hi2c->MemTxCpltCallback(hi2c); +#else + HAL_I2C_MemTxCpltCallback(hi2c); +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + } + else + { + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Call the corresponding callback to inform upper layer of End of Transfer */ +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) + hi2c->MasterTxCpltCallback(hi2c); +#else + HAL_I2C_MasterTxCpltCallback(hi2c); +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + } + } + /* hi2c->State == HAL_I2C_STATE_BUSY_RX */ + else if (hi2c->State == HAL_I2C_STATE_BUSY_RX) + { + hi2c->State = HAL_I2C_STATE_READY; + hi2c->PreviousState = I2C_STATE_NONE; + + if (hi2c->Mode == HAL_I2C_MODE_MEM) + { + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Call the corresponding callback to inform upper layer of End of Transfer */ +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) + hi2c->MemRxCpltCallback(hi2c); +#else + HAL_I2C_MemRxCpltCallback(hi2c); +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + } + else + { + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Call the corresponding callback to inform upper layer of End of Transfer */ +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) + hi2c->MasterRxCpltCallback(hi2c); +#else + HAL_I2C_MasterRxCpltCallback(hi2c); +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + } + } + else + { + /* Nothing to do */ + } +} + +/** + * @brief I2C Slave complete process. + * @param hi2c I2C handle. + * @param ITFlags Interrupt flags to handle. + * @retval None + */ +static void I2C_ITSlaveCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags) +{ + uint32_t tmpcr1value = READ_REG(hi2c->Instance->CR1); + uint32_t tmpITFlags = ITFlags; + HAL_I2C_StateTypeDef tmpstate = hi2c->State; + + /* Clear STOP Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); + + /* Disable Interrupts and Store Previous state */ + if ((tmpstate == HAL_I2C_STATE_BUSY_TX) || (tmpstate == HAL_I2C_STATE_BUSY_TX_LISTEN)) + { + I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_TX_IT); + hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_TX; + } + else if ((tmpstate == HAL_I2C_STATE_BUSY_RX) || (tmpstate == HAL_I2C_STATE_BUSY_RX_LISTEN)) + { + I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT); + hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_RX; + } + else + { + /* Do nothing */ + } + + /* Disable Address Acknowledge */ + hi2c->Instance->CR2 |= I2C_CR2_NACK; + + /* Clear Configuration Register 2 */ + I2C_RESET_CR2(hi2c); + + /* Flush TX register */ + I2C_Flush_TXDR(hi2c); + + /* If a DMA is ongoing, Update handle size context */ + if (I2C_CHECK_IT_SOURCE(tmpcr1value, I2C_CR1_TXDMAEN) != RESET) + { + /* Disable DMA Request */ + hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; + + if (hi2c->hdmatx != NULL) + { + hi2c->XferCount = (uint16_t)I2C_GET_DMA_REMAIN_DATA(hi2c->hdmatx); + } + } + else if (I2C_CHECK_IT_SOURCE(tmpcr1value, I2C_CR1_RXDMAEN) != RESET) + { + /* Disable DMA Request */ + hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; + + if (hi2c->hdmarx != NULL) + { + hi2c->XferCount = (uint16_t)I2C_GET_DMA_REMAIN_DATA(hi2c->hdmarx); + } + } + else + { + /* Do nothing */ + } + + /* Store Last receive data if any */ + if (I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_RXNE) != RESET) + { + /* Remove RXNE flag on temporary variable as read done */ + tmpITFlags &= ~I2C_FLAG_RXNE; + + /* Read data from RXDR */ + *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; + + /* Increment Buffer pointer */ + hi2c->pBuffPtr++; + + if ((hi2c->XferSize > 0U)) + { + hi2c->XferSize--; + hi2c->XferCount--; + } + } + + /* All data are not transferred, so set error code accordingly */ + if (hi2c->XferCount != 0U) + { + /* Set ErrorCode corresponding to a Non-Acknowledge */ + hi2c->ErrorCode |= HAL_I2C_ERROR_AF; + } + + hi2c->Mode = HAL_I2C_MODE_NONE; + hi2c->XferISR = NULL; + + if (hi2c->ErrorCode != HAL_I2C_ERROR_NONE) + { + /* Call the corresponding callback to inform upper layer of End of Transfer */ + I2C_ITError(hi2c, hi2c->ErrorCode); + + /* Call the Listen Complete callback, to inform upper layer of the end of Listen usecase */ + if (hi2c->State == HAL_I2C_STATE_LISTEN) + { + /* Call I2C Listen complete process */ + I2C_ITListenCplt(hi2c, tmpITFlags); + } + } + else if (hi2c->XferOptions != I2C_NO_OPTION_FRAME) + { + /* Call the Sequential Complete callback, to inform upper layer of the end of Transfer */ + I2C_ITSlaveSeqCplt(hi2c); + + hi2c->XferOptions = I2C_NO_OPTION_FRAME; + hi2c->State = HAL_I2C_STATE_READY; + hi2c->PreviousState = I2C_STATE_NONE; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Call the Listen Complete callback, to inform upper layer of the end of Listen usecase */ +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) + hi2c->ListenCpltCallback(hi2c); +#else + HAL_I2C_ListenCpltCallback(hi2c); +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + } + /* Call the corresponding callback to inform upper layer of End of Transfer */ + else if (hi2c->State == HAL_I2C_STATE_BUSY_RX) + { + hi2c->State = HAL_I2C_STATE_READY; + hi2c->PreviousState = I2C_STATE_NONE; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Call the corresponding callback to inform upper layer of End of Transfer */ +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) + hi2c->SlaveRxCpltCallback(hi2c); +#else + HAL_I2C_SlaveRxCpltCallback(hi2c); +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + } + else + { + hi2c->State = HAL_I2C_STATE_READY; + hi2c->PreviousState = I2C_STATE_NONE; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Call the corresponding callback to inform upper layer of End of Transfer */ +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) + hi2c->SlaveTxCpltCallback(hi2c); +#else + HAL_I2C_SlaveTxCpltCallback(hi2c); +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + } +} + +/** + * @brief I2C Listen complete process. + * @param hi2c I2C handle. + * @param ITFlags Interrupt flags to handle. + * @retval None + */ +static void I2C_ITListenCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags) +{ + /* Reset handle parameters */ + hi2c->XferOptions = I2C_NO_OPTION_FRAME; + hi2c->PreviousState = I2C_STATE_NONE; + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + hi2c->XferISR = NULL; + + /* Store Last receive data if any */ + if (I2C_CHECK_FLAG(ITFlags, I2C_FLAG_RXNE) != RESET) + { + /* Read data from RXDR */ + *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; + + /* Increment Buffer pointer */ + hi2c->pBuffPtr++; + + if ((hi2c->XferSize > 0U)) + { + hi2c->XferSize--; + hi2c->XferCount--; + + /* Set ErrorCode corresponding to a Non-Acknowledge */ + hi2c->ErrorCode |= HAL_I2C_ERROR_AF; + } + } + + /* Disable all Interrupts*/ + I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT | I2C_XFER_TX_IT); + + /* Clear NACK Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Call the Listen Complete callback, to inform upper layer of the end of Listen usecase */ +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) + hi2c->ListenCpltCallback(hi2c); +#else + HAL_I2C_ListenCpltCallback(hi2c); +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ +} + +/** + * @brief I2C interrupts error process. + * @param hi2c I2C handle. + * @param ErrorCode Error code to handle. + * @retval None + */ +static void I2C_ITError(I2C_HandleTypeDef *hi2c, uint32_t ErrorCode) +{ + HAL_I2C_StateTypeDef tmpstate = hi2c->State; + uint32_t tmppreviousstate; + + /* Reset handle parameters */ + hi2c->Mode = HAL_I2C_MODE_NONE; + hi2c->XferOptions = I2C_NO_OPTION_FRAME; + hi2c->XferCount = 0U; + + /* Set new error code */ + hi2c->ErrorCode |= ErrorCode; + + /* Disable Interrupts */ + if ((tmpstate == HAL_I2C_STATE_LISTEN) || + (tmpstate == HAL_I2C_STATE_BUSY_TX_LISTEN) || + (tmpstate == HAL_I2C_STATE_BUSY_RX_LISTEN)) + { + /* Disable all interrupts, except interrupts related to LISTEN state */ + I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_TX_IT); + + /* keep HAL_I2C_STATE_LISTEN if set */ + hi2c->State = HAL_I2C_STATE_LISTEN; + hi2c->XferISR = I2C_Slave_ISR_IT; + } + else + { + /* Disable all interrupts */ + I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT | I2C_XFER_TX_IT); + + /* If state is an abort treatment on going, don't change state */ + /* This change will be do later */ + if (hi2c->State != HAL_I2C_STATE_ABORT) + { + /* Set HAL_I2C_STATE_READY */ + hi2c->State = HAL_I2C_STATE_READY; + } + hi2c->XferISR = NULL; + } + + /* Abort DMA TX transfer if any */ + tmppreviousstate = hi2c->PreviousState; + if ((hi2c->hdmatx != NULL) && ((tmppreviousstate == I2C_STATE_MASTER_BUSY_TX) || \ + (tmppreviousstate == I2C_STATE_SLAVE_BUSY_TX))) + { + if ((hi2c->Instance->CR1 & I2C_CR1_TXDMAEN) == I2C_CR1_TXDMAEN) + { + hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; + } + + if (HAL_DMA_GetState(hi2c->hdmatx) != HAL_DMA_STATE_READY) + { + /* Set the I2C DMA Abort callback : + will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */ + hi2c->hdmatx->XferAbortCallback = I2C_DMAAbort; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Abort DMA TX */ + if (HAL_DMA_Abort_IT(hi2c->hdmatx) != HAL_OK) + { + /* Call Directly XferAbortCallback function in case of error */ + hi2c->hdmatx->XferAbortCallback(hi2c->hdmatx); + } + } + else + { + I2C_TreatErrorCallback(hi2c); + } + } + /* Abort DMA RX transfer if any */ + else if ((hi2c->hdmarx != NULL) && ((tmppreviousstate == I2C_STATE_MASTER_BUSY_RX) || \ + (tmppreviousstate == I2C_STATE_SLAVE_BUSY_RX))) + { + if ((hi2c->Instance->CR1 & I2C_CR1_RXDMAEN) == I2C_CR1_RXDMAEN) + { + hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; + } + + if (HAL_DMA_GetState(hi2c->hdmarx) != HAL_DMA_STATE_READY) + { + /* Set the I2C DMA Abort callback : + will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */ + hi2c->hdmarx->XferAbortCallback = I2C_DMAAbort; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Abort DMA RX */ + if (HAL_DMA_Abort_IT(hi2c->hdmarx) != HAL_OK) + { + /* Call Directly hi2c->hdmarx->XferAbortCallback function in case of error */ + hi2c->hdmarx->XferAbortCallback(hi2c->hdmarx); + } + } + else + { + I2C_TreatErrorCallback(hi2c); + } + } + else + { + I2C_TreatErrorCallback(hi2c); + } +} + +/** + * @brief I2C Error callback treatment. + * @param hi2c I2C handle. + * @retval None + */ +static void I2C_TreatErrorCallback(I2C_HandleTypeDef *hi2c) +{ + if (hi2c->State == HAL_I2C_STATE_ABORT) + { + hi2c->State = HAL_I2C_STATE_READY; + hi2c->PreviousState = I2C_STATE_NONE; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Call the corresponding callback to inform upper layer of End of Transfer */ +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) + hi2c->AbortCpltCallback(hi2c); +#else + HAL_I2C_AbortCpltCallback(hi2c); +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + } + else + { + hi2c->PreviousState = I2C_STATE_NONE; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Call the corresponding callback to inform upper layer of End of Transfer */ +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) + hi2c->ErrorCallback(hi2c); +#else + HAL_I2C_ErrorCallback(hi2c); +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + } +} + +/** + * @brief I2C Tx data register flush process. + * @param hi2c I2C handle. + * @retval None + */ +static void I2C_Flush_TXDR(I2C_HandleTypeDef *hi2c) +{ + /* If a pending TXIS flag is set */ + /* Write a dummy data in TXDR to clear it */ + if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXIS) != RESET) + { + hi2c->Instance->TXDR = 0x00U; + } + + /* Flush TX register if not empty */ + if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXE) == RESET) + { + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_TXE); + } +} + +/** + * @brief DMA I2C master transmit process complete callback. + * @param hdma DMA handle + * @retval None + */ +static void I2C_DMAMasterTransmitCplt(DMA_HandleTypeDef *hdma) +{ + /* Derogation MISRAC2012-Rule-11.5 */ + I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); + + /* Disable DMA Request */ + hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; + + /* If last transfer, enable STOP interrupt */ + if (hi2c->XferCount == 0U) + { + /* Enable STOP interrupt */ + I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT); + } + /* else prepare a new DMA transfer and enable TCReload interrupt */ + else + { + /* Update Buffer pointer */ + hi2c->pBuffPtr += hi2c->XferSize; + + /* Set the XferSize to transfer */ + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + hi2c->XferSize = MAX_NBYTE_SIZE; + } + else + { + hi2c->XferSize = hi2c->XferCount; + } + + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)hi2c->pBuffPtr, (uint32_t)&hi2c->Instance->TXDR, + hi2c->XferSize) != HAL_OK) + { + /* Call the corresponding callback to inform upper layer of End of Transfer */ + I2C_ITError(hi2c, HAL_I2C_ERROR_DMA); + } + else + { + /* Enable TC interrupts */ + I2C_Enable_IRQ(hi2c, I2C_XFER_RELOAD_IT); + } + } +} + +/** + * @brief DMA I2C slave transmit process complete callback. + * @param hdma DMA handle + * @retval None + */ +static void I2C_DMASlaveTransmitCplt(DMA_HandleTypeDef *hdma) +{ + /* Derogation MISRAC2012-Rule-11.5 */ + I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); + uint32_t tmpoptions = hi2c->XferOptions; + + if ((tmpoptions == I2C_NEXT_FRAME) || (tmpoptions == I2C_FIRST_FRAME)) + { + /* Disable DMA Request */ + hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; + + /* Last Byte is Transmitted */ + /* Call I2C Slave Sequential complete process */ + I2C_ITSlaveSeqCplt(hi2c); + } + else + { + /* No specific action, Master fully manage the generation of STOP condition */ + /* Mean that this generation can arrive at any time, at the end or during DMA process */ + /* So STOP condition should be manage through Interrupt treatment */ + } +} + +/** + * @brief DMA I2C master receive process complete callback. + * @param hdma DMA handle + * @retval None + */ +static void I2C_DMAMasterReceiveCplt(DMA_HandleTypeDef *hdma) +{ + /* Derogation MISRAC2012-Rule-11.5 */ + I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); + + /* Disable DMA Request */ + hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; + + /* If last transfer, enable STOP interrupt */ + if (hi2c->XferCount == 0U) + { + /* Enable STOP interrupt */ + I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT); + } + /* else prepare a new DMA transfer and enable TCReload interrupt */ + else + { + /* Update Buffer pointer */ + hi2c->pBuffPtr += hi2c->XferSize; + + /* Set the XferSize to transfer */ + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + hi2c->XferSize = MAX_NBYTE_SIZE; + } + else + { + hi2c->XferSize = hi2c->XferCount; + } + + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)hi2c->pBuffPtr, + hi2c->XferSize) != HAL_OK) + { + /* Call the corresponding callback to inform upper layer of End of Transfer */ + I2C_ITError(hi2c, HAL_I2C_ERROR_DMA); + } + else + { + /* Enable TC interrupts */ + I2C_Enable_IRQ(hi2c, I2C_XFER_RELOAD_IT); + } + } +} + +/** + * @brief DMA I2C slave receive process complete callback. + * @param hdma DMA handle + * @retval None + */ +static void I2C_DMASlaveReceiveCplt(DMA_HandleTypeDef *hdma) +{ + /* Derogation MISRAC2012-Rule-11.5 */ + I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); + uint32_t tmpoptions = hi2c->XferOptions; + + if ((I2C_GET_DMA_REMAIN_DATA(hi2c->hdmarx) == 0U) && \ + (tmpoptions != I2C_NO_OPTION_FRAME)) + { + /* Disable DMA Request */ + hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; + + /* Call I2C Slave Sequential complete process */ + I2C_ITSlaveSeqCplt(hi2c); + } + else + { + /* No specific action, Master fully manage the generation of STOP condition */ + /* Mean that this generation can arrive at any time, at the end or during DMA process */ + /* So STOP condition should be manage through Interrupt treatment */ + } +} + +/** + * @brief DMA I2C communication error callback. + * @param hdma DMA handle + * @retval None + */ +static void I2C_DMAError(DMA_HandleTypeDef *hdma) +{ + /* Derogation MISRAC2012-Rule-11.5 */ + I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); + + /* Disable Acknowledge */ + hi2c->Instance->CR2 |= I2C_CR2_NACK; + + /* Call the corresponding callback to inform upper layer of End of Transfer */ + I2C_ITError(hi2c, HAL_I2C_ERROR_DMA); +} + +/** + * @brief DMA I2C communication abort callback + * (To be called at end of DMA Abort procedure). + * @param hdma DMA handle. + * @retval None + */ +static void I2C_DMAAbort(DMA_HandleTypeDef *hdma) +{ + /* Derogation MISRAC2012-Rule-11.5 */ + I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); + + /* Reset AbortCpltCallback */ + if (hi2c->hdmatx != NULL) + { + hi2c->hdmatx->XferAbortCallback = NULL; + } + if (hi2c->hdmarx != NULL) + { + hi2c->hdmarx->XferAbortCallback = NULL; + } + + I2C_TreatErrorCallback(hi2c); +} + +/** + * @brief This function handles I2C Communication Timeout. It waits + * until a flag is no longer in the specified status. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param Flag Specifies the I2C flag to check. + * @param Status The actual Flag status (SET or RESET). + * @param Timeout Timeout duration + * @param Tickstart Tick start value + * @retval HAL status + */ +static HAL_StatusTypeDef I2C_WaitOnFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Flag, FlagStatus Status, + uint32_t Timeout, uint32_t Tickstart) +{ + while (__HAL_I2C_GET_FLAG(hi2c, Flag) == Status) + { + /* Check for the Timeout */ + if (Timeout != HAL_MAX_DELAY) + { + if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U)) + { + hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + return HAL_ERROR; + } + } + } + return HAL_OK; +} + +/** + * @brief This function handles I2C Communication Timeout for specific usage of TXIS flag. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param Timeout Timeout duration + * @param Tickstart Tick start value + * @retval HAL status + */ +static HAL_StatusTypeDef I2C_WaitOnTXISFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, + uint32_t Tickstart) +{ + while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXIS) == RESET) + { + /* Check if an error is detected */ + if (I2C_IsErrorOccurred(hi2c, Timeout, Tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + /* Check for the Timeout */ + if (Timeout != HAL_MAX_DELAY) + { + if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U)) + { + hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + } + } + return HAL_OK; +} + +/** + * @brief This function handles I2C Communication Timeout for specific usage of STOP flag. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param Timeout Timeout duration + * @param Tickstart Tick start value + * @retval HAL status + */ +static HAL_StatusTypeDef I2C_WaitOnSTOPFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, + uint32_t Tickstart) +{ + while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET) + { + /* Check if an error is detected */ + if (I2C_IsErrorOccurred(hi2c, Timeout, Tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + /* Check for the Timeout */ + if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U)) + { + hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + } + return HAL_OK; +} + +/** + * @brief This function handles I2C Communication Timeout for specific usage of RXNE flag. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param Timeout Timeout duration + * @param Tickstart Tick start value + * @retval HAL status + */ +static HAL_StatusTypeDef I2C_WaitOnRXNEFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, + uint32_t Tickstart) +{ + while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_RXNE) == RESET) + { + /* Check if an error is detected */ + if (I2C_IsErrorOccurred(hi2c, Timeout, Tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + /* Check if a STOPF is detected */ + if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == SET) + { + /* Check if an RXNE is pending */ + /* Store Last receive data if any */ + if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_RXNE) == SET) && (hi2c->XferSize > 0U)) + { + /* Return HAL_OK */ + /* The Reading of data from RXDR will be done in caller function */ + return HAL_OK; + } + else + { + if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF) == SET) + { + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); + hi2c->ErrorCode = HAL_I2C_ERROR_AF; + } + else + { + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + } + + /* Clear STOP Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); + + /* Clear Configuration Register 2 */ + I2C_RESET_CR2(hi2c); + + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + } + + /* Check for the Timeout */ + if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U)) + { + hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; + hi2c->State = HAL_I2C_STATE_READY; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + } + return HAL_OK; +} + +/** + * @brief This function handles errors detection during an I2C Communication. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param Timeout Timeout duration + * @param Tickstart Tick start value + * @retval HAL status + */ +static HAL_StatusTypeDef I2C_IsErrorOccurred(I2C_HandleTypeDef *hi2c, uint32_t Timeout, uint32_t Tickstart) +{ + HAL_StatusTypeDef status = HAL_OK; + uint32_t itflag = hi2c->Instance->ISR; + uint32_t error_code = 0; + uint32_t tickstart = Tickstart; + uint32_t tmp1; + HAL_I2C_ModeTypeDef tmp2; + + if (HAL_IS_BIT_SET(itflag, I2C_FLAG_AF)) + { + /* Clear NACKF Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); + + /* Wait until STOP Flag is set or timeout occurred */ + /* AutoEnd should be initiate after AF */ + while ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET) && (status == HAL_OK)) + { + /* Check for the Timeout */ + if (Timeout != HAL_MAX_DELAY) + { + if (((HAL_GetTick() - tickstart) > Timeout) || (Timeout == 0U)) + { + tmp1 = (uint32_t)(hi2c->Instance->CR2 & I2C_CR2_STOP); + tmp2 = hi2c->Mode; + + /* In case of I2C still busy, try to regenerate a STOP manually */ + if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) != RESET) && \ + (tmp1 != I2C_CR2_STOP) && \ + (tmp2 != HAL_I2C_MODE_SLAVE)) + { + /* Generate Stop */ + hi2c->Instance->CR2 |= I2C_CR2_STOP; + + /* Update Tick with new reference */ + tickstart = HAL_GetTick(); + } + + while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET) + { + /* Check for the Timeout */ + if ((HAL_GetTick() - tickstart) > I2C_TIMEOUT_STOPF) + { + error_code |=HAL_I2C_ERROR_TIMEOUT; + + status = HAL_ERROR; + + break; + } + } + } + } + } + + /* In case STOP Flag is detected, clear it */ + if (status == HAL_OK) + { + /* Clear STOP Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); + } + + error_code |= HAL_I2C_ERROR_AF; + + status = HAL_ERROR; + } + + /* Refresh Content of Status register */ + itflag = hi2c->Instance->ISR; + + /* Then verify if an additional errors occurs */ + /* Check if a Bus error occurred */ + if (HAL_IS_BIT_SET(itflag, I2C_FLAG_BERR)) + { + error_code |= HAL_I2C_ERROR_BERR; + + /* Clear BERR flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_BERR); + + status = HAL_ERROR; + } + + /* Check if an Over-Run/Under-Run error occurred */ + if (HAL_IS_BIT_SET(itflag, I2C_FLAG_OVR)) + { + error_code |= HAL_I2C_ERROR_OVR; + + /* Clear OVR flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_OVR); + + status = HAL_ERROR; + } + + /* Check if an Arbitration Loss error occurred */ + if (HAL_IS_BIT_SET(itflag, I2C_FLAG_ARLO)) + { + error_code |= HAL_I2C_ERROR_ARLO; + + /* Clear ARLO flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ARLO); + + status = HAL_ERROR; + } + + if (status != HAL_OK) + { + /* Flush TX register */ + I2C_Flush_TXDR(hi2c); + + /* Clear Configuration Register 2 */ + I2C_RESET_CR2(hi2c); + + hi2c->ErrorCode |= error_code; + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + } + + return status; +} + +/** + * @brief Handles I2Cx communication when starting transfer or during transfer (TC or TCR flag are set). + * @param hi2c I2C handle. + * @param DevAddress Specifies the slave address to be programmed. + * @param Size Specifies the number of bytes to be programmed. + * This parameter must be a value between 0 and 255. + * @param Mode New state of the I2C START condition generation. + * This parameter can be one of the following values: + * @arg @ref I2C_RELOAD_MODE Enable Reload mode . + * @arg @ref I2C_AUTOEND_MODE Enable Automatic end mode. + * @arg @ref I2C_SOFTEND_MODE Enable Software end mode. + * @param Request New state of the I2C START condition generation. + * This parameter can be one of the following values: + * @arg @ref I2C_NO_STARTSTOP Don't Generate stop and start condition. + * @arg @ref I2C_GENERATE_STOP Generate stop condition (Size should be set to 0). + * @arg @ref I2C_GENERATE_START_READ Generate Restart for read request. + * @arg @ref I2C_GENERATE_START_WRITE Generate Restart for write request. + * @retval None + */ +static void I2C_TransferConfig(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t Size, uint32_t Mode, + uint32_t Request) +{ + /* Check the parameters */ + assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance)); + assert_param(IS_TRANSFER_MODE(Mode)); + assert_param(IS_TRANSFER_REQUEST(Request)); + + /* Declaration of tmp to prevent undefined behavior of volatile usage */ + uint32_t tmp = ((uint32_t)(((uint32_t)DevAddress & I2C_CR2_SADD) | \ + (((uint32_t)Size << I2C_CR2_NBYTES_Pos) & I2C_CR2_NBYTES) | \ + (uint32_t)Mode | (uint32_t)Request) & (~0x80000000U)); + + /* update CR2 register */ + MODIFY_REG(hi2c->Instance->CR2, \ + ((I2C_CR2_SADD | I2C_CR2_NBYTES | I2C_CR2_RELOAD | I2C_CR2_AUTOEND | \ + (I2C_CR2_RD_WRN & (uint32_t)(Request >> (31U - I2C_CR2_RD_WRN_Pos))) | \ + I2C_CR2_START | I2C_CR2_STOP)), tmp); +} + +/** + * @brief Manage the enabling of Interrupts. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param InterruptRequest Value of @ref I2C_Interrupt_configuration_definition. + * @retval None + */ +static void I2C_Enable_IRQ(I2C_HandleTypeDef *hi2c, uint16_t InterruptRequest) +{ + uint32_t tmpisr = 0U; + + if ((hi2c->XferISR == I2C_Master_ISR_DMA) || \ + (hi2c->XferISR == I2C_Slave_ISR_DMA)) + { + if ((InterruptRequest & I2C_XFER_LISTEN_IT) == I2C_XFER_LISTEN_IT) + { + /* Enable ERR, STOP, NACK and ADDR interrupts */ + tmpisr |= I2C_IT_ADDRI | I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_ERRI; + } + + if (InterruptRequest == I2C_XFER_ERROR_IT) + { + /* Enable ERR and NACK interrupts */ + tmpisr |= I2C_IT_ERRI | I2C_IT_NACKI; + } + + if (InterruptRequest == I2C_XFER_CPLT_IT) + { + /* Enable STOP interrupts */ + tmpisr |= (I2C_IT_STOPI | I2C_IT_TCI); + } + + if (InterruptRequest == I2C_XFER_RELOAD_IT) + { + /* Enable TC interrupts */ + tmpisr |= I2C_IT_TCI; + } + } + else + { + if ((InterruptRequest & I2C_XFER_LISTEN_IT) == I2C_XFER_LISTEN_IT) + { + /* Enable ERR, STOP, NACK, and ADDR interrupts */ + tmpisr |= I2C_IT_ADDRI | I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_ERRI; + } + + if ((InterruptRequest & I2C_XFER_TX_IT) == I2C_XFER_TX_IT) + { + /* Enable ERR, TC, STOP, NACK and RXI interrupts */ + tmpisr |= I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_TXI; + } + + if ((InterruptRequest & I2C_XFER_RX_IT) == I2C_XFER_RX_IT) + { + /* Enable ERR, TC, STOP, NACK and TXI interrupts */ + tmpisr |= I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_RXI; + } + + if (InterruptRequest == I2C_XFER_ERROR_IT) + { + /* Enable ERR and NACK interrupts */ + tmpisr |= I2C_IT_ERRI | I2C_IT_NACKI; + } + + if (InterruptRequest == I2C_XFER_CPLT_IT) + { + /* Enable STOP interrupts */ + tmpisr |= I2C_IT_STOPI; + } + } + + /* Enable interrupts only at the end */ + /* to avoid the risk of I2C interrupt handle execution before */ + /* all interrupts requested done */ + __HAL_I2C_ENABLE_IT(hi2c, tmpisr); +} + +/** + * @brief Manage the disabling of Interrupts. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param InterruptRequest Value of @ref I2C_Interrupt_configuration_definition. + * @retval None + */ +static void I2C_Disable_IRQ(I2C_HandleTypeDef *hi2c, uint16_t InterruptRequest) +{ + uint32_t tmpisr = 0U; + + if ((InterruptRequest & I2C_XFER_TX_IT) == I2C_XFER_TX_IT) + { + /* Disable TC and TXI interrupts */ + tmpisr |= I2C_IT_TCI | I2C_IT_TXI; + + if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) != (uint32_t)HAL_I2C_STATE_LISTEN) + { + /* Disable NACK and STOP interrupts */ + tmpisr |= I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_ERRI; + } + } + + if ((InterruptRequest & I2C_XFER_RX_IT) == I2C_XFER_RX_IT) + { + /* Disable TC and RXI interrupts */ + tmpisr |= I2C_IT_TCI | I2C_IT_RXI; + + if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) != (uint32_t)HAL_I2C_STATE_LISTEN) + { + /* Disable NACK and STOP interrupts */ + tmpisr |= I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_ERRI; + } + } + + if ((InterruptRequest & I2C_XFER_LISTEN_IT) == I2C_XFER_LISTEN_IT) + { + /* Disable ADDR, NACK and STOP interrupts */ + tmpisr |= I2C_IT_ADDRI | I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_ERRI; + } + + if (InterruptRequest == I2C_XFER_ERROR_IT) + { + /* Enable ERR and NACK interrupts */ + tmpisr |= I2C_IT_ERRI | I2C_IT_NACKI; + } + + if (InterruptRequest == I2C_XFER_CPLT_IT) + { + /* Enable STOP interrupts */ + tmpisr |= I2C_IT_STOPI; + } + + if (InterruptRequest == I2C_XFER_RELOAD_IT) + { + /* Enable TC interrupts */ + tmpisr |= I2C_IT_TCI; + } + + /* Disable interrupts only at the end */ + /* to avoid a breaking situation like at "t" time */ + /* all disable interrupts request are not done */ + __HAL_I2C_DISABLE_IT(hi2c, tmpisr); +} + +/** + * @brief Convert I2Cx OTHER_xxx XferOptions to functional XferOptions. + * @param hi2c I2C handle. + * @retval None + */ +static void I2C_ConvertOtherXferOptions(I2C_HandleTypeDef *hi2c) +{ + /* if user set XferOptions to I2C_OTHER_FRAME */ + /* it request implicitly to generate a restart condition */ + /* set XferOptions to I2C_FIRST_FRAME */ + if (hi2c->XferOptions == I2C_OTHER_FRAME) + { + hi2c->XferOptions = I2C_FIRST_FRAME; + } + /* else if user set XferOptions to I2C_OTHER_AND_LAST_FRAME */ + /* it request implicitly to generate a restart condition */ + /* then generate a stop condition at the end of transfer */ + /* set XferOptions to I2C_FIRST_AND_LAST_FRAME */ + else if (hi2c->XferOptions == I2C_OTHER_AND_LAST_FRAME) + { + hi2c->XferOptions = I2C_FIRST_AND_LAST_FRAME; + } + else + { + /* Nothing to do */ + } +} + +/** + * @} + */ + +#endif /* HAL_I2C_MODULE_ENABLED */ +/** + * @} + */ + +/** + * @} + */ diff --git a/firmware/Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c_ex.c b/firmware/Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c_ex.c new file mode 100644 index 0000000..eda42d4 --- /dev/null +++ b/firmware/Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c_ex.c @@ -0,0 +1,364 @@ +/** + ****************************************************************************** + * @file stm32g0xx_hal_i2c_ex.c + * @author MCD Application Team + * @brief I2C Extended HAL module driver. + * This file provides firmware functions to manage the following + * functionalities of I2C Extended peripheral: + * + Filter Mode Functions + * + WakeUp Mode Functions + * + FastModePlus Functions + * + ****************************************************************************** + * @attention + * + * Copyright (c) 2018 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + @verbatim + ============================================================================== + ##### I2C peripheral Extended features ##### + ============================================================================== + + [..] Comparing to other previous devices, the I2C interface for STM32G0xx + devices contains the following additional features + + (+) Possibility to disable or enable Analog Noise Filter + (+) Use of a configured Digital Noise Filter + (+) Disable or enable wakeup from Stop mode(s) + (+) Disable or enable Fast Mode Plus + + ##### How to use this driver ##### + ============================================================================== + [..] This driver provides functions to configure Noise Filter and Wake Up Feature + (#) Configure I2C Analog noise filter using the function HAL_I2CEx_ConfigAnalogFilter() + (#) Configure I2C Digital noise filter using the function HAL_I2CEx_ConfigDigitalFilter() + (#) Configure the enable or disable of I2C Wake Up Mode using the functions : + (++) HAL_I2CEx_EnableWakeUp() + (++) HAL_I2CEx_DisableWakeUp() + (#) Configure the enable or disable of fast mode plus driving capability using the functions : + (++) HAL_I2CEx_EnableFastModePlus() + (++) HAL_I2CEx_DisableFastModePlus() + @endverbatim + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32g0xx_hal.h" + +/** @addtogroup STM32G0xx_HAL_Driver + * @{ + */ + +/** @defgroup I2CEx I2CEx + * @brief I2C Extended HAL module driver + * @{ + */ + +#ifdef HAL_I2C_MODULE_ENABLED + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/* Private macro -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ +/* Private functions ---------------------------------------------------------*/ + +/** @defgroup I2CEx_Exported_Functions I2C Extended Exported Functions + * @{ + */ + +/** @defgroup I2CEx_Exported_Functions_Group1 Filter Mode Functions + * @brief Filter Mode Functions + * +@verbatim + =============================================================================== + ##### Filter Mode Functions ##### + =============================================================================== + [..] This section provides functions allowing to: + (+) Configure Noise Filters + +@endverbatim + * @{ + */ + +/** + * @brief Configure I2C Analog noise filter. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2Cx peripheral. + * @param AnalogFilter New state of the Analog filter. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2CEx_ConfigAnalogFilter(I2C_HandleTypeDef *hi2c, uint32_t AnalogFilter) +{ + /* Check the parameters */ + assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance)); + assert_param(IS_I2C_ANALOG_FILTER(AnalogFilter)); + + if (hi2c->State == HAL_I2C_STATE_READY) + { + /* Process Locked */ + __HAL_LOCK(hi2c); + + hi2c->State = HAL_I2C_STATE_BUSY; + + /* Disable the selected I2C peripheral */ + __HAL_I2C_DISABLE(hi2c); + + /* Reset I2Cx ANOFF bit */ + hi2c->Instance->CR1 &= ~(I2C_CR1_ANFOFF); + + /* Set analog filter bit*/ + hi2c->Instance->CR1 |= AnalogFilter; + + __HAL_I2C_ENABLE(hi2c); + + hi2c->State = HAL_I2C_STATE_READY; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Configure I2C Digital noise filter. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2Cx peripheral. + * @param DigitalFilter Coefficient of digital noise filter between Min_Data=0x00 and Max_Data=0x0F. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2CEx_ConfigDigitalFilter(I2C_HandleTypeDef *hi2c, uint32_t DigitalFilter) +{ + uint32_t tmpreg; + + /* Check the parameters */ + assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance)); + assert_param(IS_I2C_DIGITAL_FILTER(DigitalFilter)); + + if (hi2c->State == HAL_I2C_STATE_READY) + { + /* Process Locked */ + __HAL_LOCK(hi2c); + + hi2c->State = HAL_I2C_STATE_BUSY; + + /* Disable the selected I2C peripheral */ + __HAL_I2C_DISABLE(hi2c); + + /* Get the old register value */ + tmpreg = hi2c->Instance->CR1; + + /* Reset I2Cx DNF bits [11:8] */ + tmpreg &= ~(I2C_CR1_DNF); + + /* Set I2Cx DNF coefficient */ + tmpreg |= DigitalFilter << 8U; + + /* Store the new register value */ + hi2c->Instance->CR1 = tmpreg; + + __HAL_I2C_ENABLE(hi2c); + + hi2c->State = HAL_I2C_STATE_READY; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} +/** + * @} + */ + +/** @defgroup I2CEx_Exported_Functions_Group2 WakeUp Mode Functions + * @brief WakeUp Mode Functions + * +@verbatim + =============================================================================== + ##### WakeUp Mode Functions ##### + =============================================================================== + [..] This section provides functions allowing to: + (+) Configure Wake Up Feature + +@endverbatim + * @{ + */ + +/** + * @brief Enable I2C wakeup from Stop mode(s). + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2Cx peripheral. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2CEx_EnableWakeUp(I2C_HandleTypeDef *hi2c) +{ + /* Check the parameters */ + assert_param(IS_I2C_WAKEUP_FROMSTOP_INSTANCE(hi2c->Instance)); + + if (hi2c->State == HAL_I2C_STATE_READY) + { + /* Process Locked */ + __HAL_LOCK(hi2c); + + hi2c->State = HAL_I2C_STATE_BUSY; + + /* Disable the selected I2C peripheral */ + __HAL_I2C_DISABLE(hi2c); + + /* Enable wakeup from stop mode */ + hi2c->Instance->CR1 |= I2C_CR1_WUPEN; + + __HAL_I2C_ENABLE(hi2c); + + hi2c->State = HAL_I2C_STATE_READY; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Disable I2C wakeup from Stop mode(s). + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2Cx peripheral. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2CEx_DisableWakeUp(I2C_HandleTypeDef *hi2c) +{ + /* Check the parameters */ + assert_param(IS_I2C_WAKEUP_FROMSTOP_INSTANCE(hi2c->Instance)); + + if (hi2c->State == HAL_I2C_STATE_READY) + { + /* Process Locked */ + __HAL_LOCK(hi2c); + + hi2c->State = HAL_I2C_STATE_BUSY; + + /* Disable the selected I2C peripheral */ + __HAL_I2C_DISABLE(hi2c); + + /* Enable wakeup from stop mode */ + hi2c->Instance->CR1 &= ~(I2C_CR1_WUPEN); + + __HAL_I2C_ENABLE(hi2c); + + hi2c->State = HAL_I2C_STATE_READY; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} +/** + * @} + */ + +/** @defgroup I2CEx_Exported_Functions_Group3 Fast Mode Plus Functions + * @brief Fast Mode Plus Functions + * +@verbatim + =============================================================================== + ##### Fast Mode Plus Functions ##### + =============================================================================== + [..] This section provides functions allowing to: + (+) Configure Fast Mode Plus + +@endverbatim + * @{ + */ + +/** + * @brief Enable the I2C fast mode plus driving capability. + * @param ConfigFastModePlus Selects the pin. + * This parameter can be one of the @ref I2CEx_FastModePlus values + * @note For I2C1, fast mode plus driving capability can be enabled on all selected + * I2C1 pins using I2C_FASTMODEPLUS_I2C1 parameter or independently + * on each one of the following pins PB6, PB7, PB8 and PB9. + * @note For remaining I2C1 pins (PA14, PA15...) fast mode plus driving capability + * can be enabled only by using I2C_FASTMODEPLUS_I2C1 parameter. + * @note For all I2C2 pins fast mode plus driving capability can be enabled + * only by using I2C_FASTMODEPLUS_I2C2 parameter. + * @note For all I2C3 pins fast mode plus driving capability can be enabled + * only by using I2C_FASTMODEPLUS_I2C3 parameter. + * @retval None + */ +void HAL_I2CEx_EnableFastModePlus(uint32_t ConfigFastModePlus) +{ + /* Check the parameter */ + assert_param(IS_I2C_FASTMODEPLUS(ConfigFastModePlus)); + + /* Enable SYSCFG clock */ + __HAL_RCC_SYSCFG_CLK_ENABLE(); + + /* Enable fast mode plus driving capability for selected pin */ + SET_BIT(SYSCFG->CFGR1, (uint32_t)ConfigFastModePlus); +} + +/** + * @brief Disable the I2C fast mode plus driving capability. + * @param ConfigFastModePlus Selects the pin. + * This parameter can be one of the @ref I2CEx_FastModePlus values + * @note For I2C1, fast mode plus driving capability can be disabled on all selected + * I2C1 pins using I2C_FASTMODEPLUS_I2C1 parameter or independently + * on each one of the following pins PB6, PB7, PB8 and PB9. + * @note For remaining I2C1 pins (PA14, PA15...) fast mode plus driving capability + * can be disabled only by using I2C_FASTMODEPLUS_I2C1 parameter. + * @note For all I2C2 pins fast mode plus driving capability can be disabled + * only by using I2C_FASTMODEPLUS_I2C2 parameter. + * @note For all I2C3 pins fast mode plus driving capability can be disabled + * only by using I2C_FASTMODEPLUS_I2C3 parameter. + * @retval None + */ +void HAL_I2CEx_DisableFastModePlus(uint32_t ConfigFastModePlus) +{ + /* Check the parameter */ + assert_param(IS_I2C_FASTMODEPLUS(ConfigFastModePlus)); + + /* Enable SYSCFG clock */ + __HAL_RCC_SYSCFG_CLK_ENABLE(); + + /* Disable fast mode plus driving capability for selected pin */ + CLEAR_BIT(SYSCFG->CFGR1, (uint32_t)ConfigFastModePlus); +} +/** + * @} + */ +/** + * @} + */ + +#endif /* HAL_I2C_MODULE_ENABLED */ +/** + * @} + */ + +/** + * @} + */ diff --git a/firmware/Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_pwr.c b/firmware/Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_pwr.c new file mode 100644 index 0000000..98cff75 --- /dev/null +++ b/firmware/Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_pwr.c @@ -0,0 +1,542 @@ +/** + ****************************************************************************** + * @file stm32g0xx_hal_pwr.c + * @author MCD Application Team + * @brief PWR HAL module driver. + * This file provides firmware functions to manage the following + * functionalities of the Power Controller (PWR) peripheral: + * + Initialization/de-initialization functions + * + Peripheral Control functions + * + ****************************************************************************** + * @attention + * + * Copyright (c) 2018 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32g0xx_hal.h" + +/** @addtogroup STM32G0xx_HAL_Driver + * @{ + */ + +/** @addtogroup PWR + * @{ + */ + +#ifdef HAL_PWR_MODULE_ENABLED + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/** @defgroup PWR_Private_Defines PWR Private Defines + * @{ + */ + +/** + * @} + */ + +/* Private macro -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup PWR_Exported_Functions PWR Exported Functions + * @{ + */ + +/** @addtogroup PWR_Exported_Functions_Group1 Initialization and de-initialization functions + * @brief Initialization and de-initialization functions + * +@verbatim + =============================================================================== + ##### Initialization and de-initialization functions ##### + =============================================================================== + [..] + +@endverbatim + * @{ + */ + +/** + * @brief Deinitialize the HAL PWR peripheral registers to their default reset + values. + * @retval None + */ +void HAL_PWR_DeInit(void) +{ + __HAL_RCC_PWR_FORCE_RESET(); + __HAL_RCC_PWR_RELEASE_RESET(); +} + +/** + * @} + */ + +/** @addtogroup PWR_Exported_Functions_Group2 Peripheral Control functions + * @brief Low Power modes configuration functions + * +@verbatim + + =============================================================================== + ##### Peripheral Control functions ##### + =============================================================================== + + [..] + *** WakeUp pin configuration *** + ================================ + [..] + (+) WakeUp pins are used to wakeup the system from Standby mode or + Shutdown mode. WakeUp pins polarity can be set to configure event + detection on high level (rising edge) or low level (falling edge). + + *** Low Power mode configuration *** + ===================================== + [..] + The devices feature 7 low-power modes: + (+) Low-power run mode: core and peripherals are running at low frequency. + Regulator is in low power mode. + (+) Sleep mode: Cortex-M0+ core stopped, peripherals kept running, + regulator is main mode. + (+) Low-power Sleep mode: Cortex-M0+ core stopped, peripherals kept running + and regulator in low power mode. + (+) Stop 0 mode: all clocks are stopped except LSI and LSE, regulator is + main mode. + (+) Stop 1 mode: all clocks are stopped except LSI and LSE, main regulator + off, low power regulator on. + (+) Standby mode: all clocks are stopped except LSI and LSE, regulator is + disable. + (+) Shutdown mode: all clocks are stopped except LSE, regulator is + disable. + + *** Low-power run mode *** + ========================== + [..] + (+) Entry: (from main run mode) + (++) set LPR bit with HAL_PWREx_EnableLowPowerRunMode() API after + having decreased the system clock below 2 MHz. + (+) Exit: + (++) clear LPR bit then wait for REGLPF bit to be reset with + HAL_PWREx_DisableLowPowerRunMode() API. Only then can the + system clock frequency be increased above 2 MHz. + + *** Sleep mode / Low-power sleep mode *** + ========================================= + [..] + (+) Entry: + The Sleep & Low-power Sleep modes are entered through + HAL_PWR_EnterSLEEPMode() API specifying whether or not the regulator + is forced to low-power mode and if exit is interrupt or event + triggered. + (++) PWR_MAINREGULATOR_ON: Sleep mode (regulator in main mode). + (++) PWR_LOWPOWERREGULATOR_ON: Low-power Sleep mode (regulator in low + power mode). In this case, the system clock frequency must have + been decreased below 2 MHz beforehand. + (++) PWR_SLEEPENTRY_WFI: Core enters sleep mode with WFI instruction + (++) PWR_SLEEPENTRY_WFE: Core enters sleep mode with WFE instruction + (+) WFI Exit: + (++) Any interrupt enabled in nested vectored interrupt controller (NVIC) + (+) WFE Exit: + (++) Any wakeup event if cortex is configured with SEVONPEND = 0 + (++) Interrupt even when disabled in NVIC if cortex is configured with + SEVONPEND = 1 + [..] When exiting the Low-power Sleep mode by issuing an interrupt or a wakeup event, + the MCU is in Low-power Run mode. + + *** Stop 0 & Stop 1 modes *** + ============================= + [..] + (+) Entry: + The Stop modes are entered through the following APIs: + (++) HAL_PWR_EnterSTOPMode() with following settings: + (+++) PWR_MAINREGULATOR_ON to enter STOP0 mode. + (+++) PWR_LOWPOWERREGULATOR_ON to enter STOP1 mode. + (+) Exit (interrupt or event-triggered, specified when entering STOP mode): + (++) PWR_STOPENTRY_WFI: enter Stop mode with WFI instruction + (++) PWR_STOPENTRY_WFE: enter Stop mode with WFE instruction + (+) WFI Exit: + (++) Any EXTI line (internal or external) configured in interrupt mode + with corresponding interrupt enable in NVIC + (+) WFE Exit: + (++) Any EXTI line (internal or external) configured in event mode if + cortex is configured with SEVONPEND = 0 + (++) Any EXTI line configured in interrupt mode (even if the + corresponding EXTI Interrupt vector is disabled in the NVIC) if + cortex is configured with SEVONPEND = 0. The interrupt source can + be external interrupts or peripherals with wakeup capability. + [..] When exiting Stop, the MCU is either in Run mode or in Low-power Run mode + depending on the LPR bit setting. + + *** Standby mode *** + ==================== + [..] In Standby mode, it is possible to keep backup SRAM content (defined as + full SRAM) keeping low power regulator on. This is achievable by setting + Ram retention bit calling HAL_PWREx_EnableSRAMRetention API. This increases + power consumption. + Its also possible to define I/O states using APIs: + HAL_PWREx_EnableGPIOPullUp, HAL_PWREx_EnableGPIOPullDown & + HAL_PWREx_EnablePullUpPullDownConfig + (+) Entry: + (++) The Standby mode is entered through HAL_PWR_EnterSTANDBYMode() API, by + setting SLEEPDEEP in Cortex control register. + (+) Exit: + (++) WKUP pin edge detection, RTC event (wakeup, alarm, timestamp), + tamper event (internal & external), LSE CSS detection, reset on + NRST pin, IWDG reset & BOR reset. + [..] Exiting Standby generates a power reset: Cortex is reset and execute + Reset handler vector, all registers in the Vcore domain are set to + their reset value. Registers outside the VCORE domain (RTC, WKUP, IWDG, + and Standby/Shutdown modes control) are not impacted. + + *** Shutdown mode *** + ====================== + [..] + In Shutdown mode, + voltage regulator is disabled, all clocks are off except LSE, RRS bit is + cleared. SRAM and registers contents are lost except for backup domain + registers. + (+) Entry: + (++) The Shutdown mode is entered through HAL_PWREx_EnterSHUTDOWNMode() API, + by setting SLEEPDEEP in Cortex control register. + (+) Exit: + (++) WKUP pin edge detection, RTC event (wakeup, alarm, timestamp), + tamper event (internal & external), LSE CSS detection, reset on + NRST pin. + [..] Exiting Shutdown generates a brown out reset: Cortex is reset and execute + Reset handler vector, all registers are set to their reset value but ones + in backup domain. + +@endverbatim + * @{ + */ + +/** + * @brief Enable access to the backup domain + * (RTC & TAMP registers, backup registers, RCC BDCR register). + * @note After reset, the backup domain is protected against + * possible unwanted write accesses. All RTC & TAMP registers (backup + * registers included) and RCC BDCR register are concerned. + * @retval None + */ +void HAL_PWR_EnableBkUpAccess(void) +{ + SET_BIT(PWR->CR1, PWR_CR1_DBP); +} + + +/** + * @brief Disable access to the backup domain + * @retval None + */ +void HAL_PWR_DisableBkUpAccess(void) +{ + CLEAR_BIT(PWR->CR1, PWR_CR1_DBP); +} + +/** + * @brief Enable the WakeUp PINx functionality. + * @param WakeUpPinPolarity Specifies which Wake-Up pin to enable. + * This parameter can be one of the following legacy values which set + * the default polarity i.e. detection on high level (rising edge): + * @arg @ref PWR_WAKEUP_PIN1, PWR_WAKEUP_PIN2, PWR_WAKEUP_PIN3(*), + * PWR_WAKEUP_PIN4, PWR_WAKEUP_PIN5(*),PWR_WAKEUP_PIN6 + * or one of the following value where the user can explicitly specify + * the enabled pin and the chosen polarity: + * @arg @ref PWR_WAKEUP_PIN1_HIGH or PWR_WAKEUP_PIN1_LOW + * @arg @ref PWR_WAKEUP_PIN2_HIGH or PWR_WAKEUP_PIN2_LOW + * @arg @ref PWR_WAKEUP_PIN3_HIGH or PWR_WAKEUP_PIN3_LOW (*) + * @arg @ref PWR_WAKEUP_PIN4_HIGH or PWR_WAKEUP_PIN4_LOW + * @arg @ref PWR_WAKEUP_PIN5_HIGH or PWR_WAKEUP_PIN5_LOW (*) + * @arg @ref PWR_WAKEUP_PIN6_HIGH or PWR_WAKEUP_PIN6_LOW + * @note PWR_WAKEUP_PINx and PWR_WAKEUP_PINx_HIGH are equivalent. + * @note (*) availability depends on devices + * @retval None + */ +void HAL_PWR_EnableWakeUpPin(uint32_t WakeUpPinPolarity) +{ + assert_param(IS_PWR_WAKEUP_PIN(WakeUpPinPolarity)); + + /* Specifies the Wake-Up pin polarity for the event detection + (rising or falling edge) */ + MODIFY_REG(PWR->CR4, (PWR_CR4_WP & WakeUpPinPolarity), (WakeUpPinPolarity >> PWR_WUP_POLARITY_SHIFT)); + + /* Enable wake-up pin */ + SET_BIT(PWR->CR3, (PWR_CR3_EWUP & WakeUpPinPolarity)); +} + + +/** + * @brief Disable the WakeUp PINx functionality. + * @param WakeUpPinx Specifies the Power Wake-Up pin to disable. + * This parameter can be one of the following values: + * @arg @ref PWR_WAKEUP_PIN1, PWR_WAKEUP_PIN2,PWR_WAKEUP_PIN3(*), + * PWR_WAKEUP_PIN4,PWR_WAKEUP_PIN5(*),PWR_WAKEUP_PIN6 + * @note (*) availability depends on devices + * @retval None + */ +void HAL_PWR_DisableWakeUpPin(uint32_t WakeUpPinx) +{ + assert_param(IS_PWR_WAKEUP_PIN(WakeUpPinx)); + + CLEAR_BIT(PWR->CR3, (PWR_CR3_EWUP & WakeUpPinx)); +} + + +/** + * @brief Enter Sleep or Low-power Sleep mode. + * @note In Sleep/Low-power Sleep mode, all I/O pins keep the same state as + * in Run mode. + * @param Regulator Specifies the regulator state in Sleep/Low-power Sleep + * mode. This parameter can be one of the following values: + * @arg @ref PWR_MAINREGULATOR_ON Sleep mode (regulator in main mode) + * @arg @ref PWR_LOWPOWERREGULATOR_ON Low-power Sleep mode (regulator + * in low-power mode) + * @note Low-power Sleep mode is entered from Low-power Run mode only. In + * case Regulator parameter is set to Low Power but MCU is in Run mode, + * we will first enter in Low-power Run mode. Therefore, user should + * take care that HCLK frequency is less than 2 MHz. + * @note When exiting Low-power Sleep mode, the MCU is in Low-power Run mode. + * To switch back to Run mode, user must call + * HAL_PWREx_DisableLowPowerRunMode() API. + * @param SLEEPEntry Specifies if Sleep mode is entered with WFI or WFE + * instruction. This parameter can be one of the following values: + * @arg @ref PWR_SLEEPENTRY_WFI enter Sleep or Low-power Sleep + * mode with WFI instruction + * @arg @ref PWR_SLEEPENTRY_WFE enter Sleep or Low-power Sleep + * mode with WFE instruction + * @note When WFI entry is used, tick interrupt have to be disabled if not + * desired as the interrupt wake up source. + * @retval None + */ +void HAL_PWR_EnterSLEEPMode(uint32_t Regulator, uint8_t SLEEPEntry) +{ + /* Check the parameters */ + assert_param(IS_PWR_REGULATOR(Regulator)); + assert_param(IS_PWR_SLEEP_ENTRY(SLEEPEntry)); + + /* Set Regulator parameter */ + if (Regulator != PWR_MAINREGULATOR_ON) + { + /* If in run mode, first move to low-power run mode. + The system clock frequency must be below 2 MHz at this point. */ + if ((PWR->SR2 & PWR_SR2_REGLPF) == 0x00u) + { + HAL_PWREx_EnableLowPowerRunMode(); + } + } + else + { + /* If in low-power run mode at this point, exit it */ + if ((PWR->SR2 & PWR_SR2_REGLPF) != 0x00u) + { + if (HAL_PWREx_DisableLowPowerRunMode() != HAL_OK) + { + return ; + } + } + } + + /* Clear SLEEPDEEP bit of Cortex System Control Register */ + CLEAR_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SLEEPDEEP_Msk)); + + /* Select SLEEP mode entry -------------------------------------------------*/ + if (SLEEPEntry == PWR_SLEEPENTRY_WFI) + { + /* Request Wait For Interrupt */ + __WFI(); + } + else + { + /* Request Wait For Event */ + __SEV(); + __WFE(); + __WFE(); + } +} + + +/** + * @brief Enter Stop mode + * @note This API is named HAL_PWR_EnterSTOPMode to ensure compatibility with + * legacy code running on devices where only "Stop mode" is mentioned + * with main or low power regulator ON. + * @note In Stop mode, all I/O pins keep the same state as in Run mode. + * @note All clocks in the VCORE domain are stopped; the PLL, the HSI and the + * HSE oscillators are disabled. Some peripherals with the wakeup + * capability can switch on the HSI to receive a frame, and switch off + * the HSI after receiving the frame if it is not a wakeup frame. + * SRAM and register contents are preserved. + * The BOR is available. + * The voltage regulator can be configured either in normal (Stop 0) or + * low-power mode (Stop 1). + * @note When exiting Stop 0 or Stop 1 mode by issuing an interrupt or a + * wakeup event, the HSI RC oscillator is selected as system clock + * @note When the voltage regulator operates in low power mode (Stop 1), + * an additional startup delay is incurred when waking up. By keeping + * the internal regulator ON during Stop mode (Stop 0), the consumption + * is higher although the startup time is reduced. + * @param Regulator Specifies the regulator state in Stop mode + * This parameter can be one of the following values: + * @arg @ref PWR_MAINREGULATOR_ON Stop 0 mode (main regulator ON) + * @arg @ref PWR_LOWPOWERREGULATOR_ON Stop 1 mode (low power + * regulator ON) + * @param STOPEntry Specifies Stop 0 or Stop 1 mode is entered with WFI or + * WFE instruction. This parameter can be one of the following values: + * @arg @ref PWR_STOPENTRY_WFI Enter Stop 0 or Stop 1 mode with WFI + * instruction. + * @arg @ref PWR_STOPENTRY_WFE Enter Stop 0 or Stop 1 mode with WFE + * instruction. + * @retval None + */ +void HAL_PWR_EnterSTOPMode(uint32_t Regulator, uint8_t STOPEntry) +{ + /* Check the parameters */ + assert_param(IS_PWR_REGULATOR(Regulator)); + assert_param(IS_PWR_STOP_ENTRY(STOPEntry)); + + if (Regulator != PWR_MAINREGULATOR_ON) + { + /* Stop mode with Low-Power Regulator */ + MODIFY_REG(PWR->CR1, PWR_CR1_LPMS, PWR_LOWPOWERMODE_STOP1); + } + else + { + /* Stop mode with Main Regulator */ + MODIFY_REG(PWR->CR1, PWR_CR1_LPMS, PWR_LOWPOWERMODE_STOP0); + } + + /* Set SLEEPDEEP bit of Cortex System Control Register */ + SET_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SLEEPDEEP_Msk)); + + /* Select Stop mode entry --------------------------------------------------*/ + if (STOPEntry == PWR_STOPENTRY_WFI) + { + /* Request Wait For Interrupt */ + __WFI(); + } + else + { + /* Request Wait For Event */ + __SEV(); + __WFE(); + __WFE(); + } + + /* Reset SLEEPDEEP bit of Cortex System Control Register */ + CLEAR_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SLEEPDEEP_Msk)); +} + + +/** + * @brief Enter Standby mode. + * @note In Standby mode, the PLL, the HSI and the HSE oscillators are + * switched off. The voltage regulator is disabled. SRAM and register + * contents are lost except for registers in the Backup domain and + * Standby circuitry. BOR is available. + * @note The I/Os can be configured either with a pull-up or pull-down or can + * be kept in analog state. + * HAL_PWREx_EnableGPIOPullUp() and HAL_PWREx_EnableGPIOPullDown() + * respectively enable Pull Up and PullDown state. + * HAL_PWREx_DisableGPIOPullUp() & HAL_PWREx_DisableGPIOPullDown() + * disable the same. These states are effective in Standby mode only if + * APC bit is set through HAL_PWREx_EnablePullUpPullDownConfig() API. + * @note Sram content can be kept setting RRS through HAL_PWREx_EnableSRAMRetention() + * @retval None + */ +void HAL_PWR_EnterSTANDBYMode(void) +{ + /* Set Stand-by mode */ + MODIFY_REG(PWR->CR1, PWR_CR1_LPMS, PWR_LOWPOWERMODE_STANDBY); + + /* Set SLEEPDEEP bit of Cortex System Control Register */ + SET_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SLEEPDEEP_Msk)); + + /* This option is used to ensure that store operations are completed */ +#if defined ( __CC_ARM) + __force_stores(); +#endif /* __CC_ARM */ + + /* Request Wait For Interrupt */ + __WFI(); +} + + +/** + * @brief Enable Sleep-On-Exit Cortex feature + * @note Set SLEEPONEXIT bit of SCR register. When this bit is set, the + * processor enters SLEEP or DEEPSLEEP mode when an interruption + * handling is over returning to thread mode. Setting this bit is + * useful when the processor is expected to run only on interruptions + * handling. + * @retval None + */ +void HAL_PWR_EnableSleepOnExit(void) +{ + /* Set SLEEPONEXIT bit of Cortex System Control Register */ + SET_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SLEEPONEXIT_Msk)); +} + + +/** + * @brief Disable Sleep-On-Exit Cortex feature + * @note Clear SLEEPONEXIT bit of SCR register. When this bit is set, the + * processor enters SLEEP or DEEPSLEEP mode when an interruption + * handling is over. + * @retval None + */ +void HAL_PWR_DisableSleepOnExit(void) +{ + /* Clear SLEEPONEXIT bit of Cortex System Control Register */ + CLEAR_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SLEEPONEXIT_Msk)); +} + + +/** + * @brief Enable Cortex Sev On Pending feature. + * @note Set SEVONPEND bit of SCR register. When this bit is set, enabled + * events and all interrupts, including disabled ones can wakeup + * processor from WFE. + * @retval None + */ +void HAL_PWR_EnableSEVOnPend(void) +{ + /* Set SEVONPEND bit of Cortex System Control Register */ + SET_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SEVONPEND_Msk)); +} + + +/** + * @brief Disable Cortex Sev On Pending feature. + * @note Clear SEVONPEND bit of SCR register. When this bit is clear, only + * enable interrupts or events can wakeup processor from WFE + * @retval None + */ +void HAL_PWR_DisableSEVOnPend(void) +{ + /* Clear SEVONPEND bit of Cortex System Control Register */ + CLEAR_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SEVONPEND_Msk)); +} + +/** + * @} + */ + +/** + * @} + */ + +#endif /* HAL_PWR_MODULE_ENABLED */ +/** + * @} + */ + +/** + * @} + */ diff --git a/firmware/Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_pwr_ex.c b/firmware/Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_pwr_ex.c new file mode 100644 index 0000000..4d9c89b --- /dev/null +++ b/firmware/Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_pwr_ex.c @@ -0,0 +1,1016 @@ +/** + ****************************************************************************** + * @file stm32g0xx_hal_pwr_ex.c + * @author MCD Application Team + * @brief Extended PWR HAL module driver. + * This file provides firmware functions to manage the following + * functionalities of the Power Controller (PWR) peripheral: + * + Extended Initialization and de-initialization functions + * + Extended Peripheral Control functions + * + ****************************************************************************** + * @attention + * + * Copyright (c) 2018 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32g0xx_hal.h" + +/** @addtogroup STM32G0xx_HAL_Driver + * @{ + */ + +/** @addtogroup PWREx + * @{ + */ + +#ifdef HAL_PWR_MODULE_ENABLED + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/** @defgroup PWR_Extended_Private_Defines PWR Extended Private Defines + * @{ + */ + +#if defined(PWR_PVD_SUPPORT) +/** @defgroup PWR_PVD_Mode_Mask PWR PVD Mode Mask + * @{ + */ +#define PVD_MODE_IT 0x00010000U /*!< Mask for interruption yielded + by PVD threshold crossing */ +#define PVD_MODE_EVT 0x00020000U /*!< Mask for event yielded + by PVD threshold crossing */ +#define PVD_RISING_EDGE 0x00000001U /*!< Mask for rising edge set as + PVD trigger */ +#define PVD_FALLING_EDGE 0x00000002U /*!< Mask for falling edge set as + PVD trigger */ +/** + * @} + */ +#endif /* PWR_PVD_SUPPORT */ + +/** @defgroup PWREx_TimeOut_Value PWREx Flag Setting Time Out Value + * @{ + */ +#define PWR_REGLPF_SETTING_DELAY_6_US 6u /*!< REGLPF should rise in about 5 us plus + 2 APB clock. Taking in account max Sysclk at + 2 MHz, and rounded to upper value */ + +#define PWR_VOSF_SETTING_DELAY_6_US 6u /*!< VOSF should rise in about 5 us plus + 2 APB clock. Taking in account max Sysclk at + 16 MHz, and rounded to upper value */ +/** + * @} + */ + +/** @defgroup PWREx_Gpio_Pin_Number PWREx Gpio Pin Number + * @{ + */ +#define PWR_GPIO_PIN_NB 16u /*!< Number of gpio pin in bank */ +/** + * @} + */ + +/** + * @} + */ + +/* Private macro -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup PWREx_Exported_Functions PWR Extended Exported Functions + * @{ + */ + +/** @addtogroup PWREx_Exported_Functions_Group1 Extended Peripheral Control functions + * @brief Extended Peripheral Control functions + * +@verbatim + =============================================================================== + ##### Extended Peripheral Initialization and de-initialization functions ##### + =============================================================================== + [..] + *** PVD configuration *** + ========================= + [..] + (+) The PVD is used to monitor the VDD power supply by comparing it to a + threshold selected by the PVD Level (PVDRT[2:0] & PVDFT[2:0] bits in + PWR CR2 register). + (+) PVDO flag is available to indicate if VDD/VDDA is higher or lower + than the PVD threshold. This event is internally connected to the EXTI + line 16 and can generate an interrupt if enabled. + (+) The PVD is stopped in Standby & Shutdown mode. + + *** PVM configuration *** + ========================= + [..] + +@endverbatim + * @{ + */ + +/** + * @brief Enable battery charging. + * @note When VDD is present, charge the external battery on VBAT through an + * internal resistor. + * @param ResistorSelection specifies the resistor impedance. + * This parameter can be one of the following values: + * @arg @ref PWR_BATTERY_CHARGING_RESISTOR_5 5 kOhms resistor + * @arg @ref PWR_BATTERY_CHARGING_RESISTOR_1_5 1.5 kOhms resistor + * @retval None + */ +void HAL_PWREx_EnableBatteryCharging(uint32_t ResistorSelection) +{ + uint32_t tmpreg; + assert_param(IS_PWR_BATTERY_RESISTOR_SELECT(ResistorSelection)); + + /* Specify resistor selection and enable battery charging */ + tmpreg = (PWR->CR4 & ~PWR_CR4_VBRS); + PWR->CR4 = (tmpreg | ResistorSelection | PWR_CR4_VBE); +} + + +/** + * @brief Disable battery charging. + * @retval None + */ +void HAL_PWREx_DisableBatteryCharging(void) +{ + CLEAR_BIT(PWR->CR4, PWR_CR4_VBE); +} + +#if defined(PWR_CR3_ENB_ULP) +/** + * @brief Enable POR Monitor sampling mode. + * @note When entering ultra low power modes (standby, shutdown) this feature + * can be enabled to reduce further consumption: Power On Reset monitor + * is then set in sampling mode, and no more in always on mode. + * @retval None + */ +void HAL_PWREx_EnablePORMonitorSampling(void) +{ + PWR->CR3 |= PWR_CR3_ENB_ULP; +} + + +/** + * @brief Disable POR Monitor sampling mode. + * @retval None + */ +void HAL_PWREx_DisablePORMonitorSampling(void) +{ + PWR->CR3 &= ~PWR_CR3_ENB_ULP; +} +#endif /* PWR_CR3_ENB_ULP */ + +#if defined(PWR_PVD_SUPPORT) +/** + * @brief Configure the Power Voltage Detector (PVD). + * @param sConfigPVD pointer to a PWR_PVDTypeDef structure that contains the + PVD configuration information: threshold levels, operating mode. + * @note Refer to the electrical characteristics of your device datasheet for + * more details about the voltage thresholds corresponding to each + * detection level. + * @note User should take care that rising threshold is higher than falling + * one in order to avoid having always PVDO output set. + * @retval HAL_OK + */ +HAL_StatusTypeDef HAL_PWREx_ConfigPVD(PWR_PVDTypeDef *sConfigPVD) +{ + /* Check the parameters */ + assert_param(IS_PWR_PVD_LEVEL(sConfigPVD->PVDLevel)); + assert_param(IS_PWR_PVD_MODE(sConfigPVD->Mode)); + + /* Set PVD level bits only according to PVDLevel value */ + MODIFY_REG(PWR->CR2, (PWR_CR2_PVDFT | PWR_CR2_PVDRT), sConfigPVD->PVDLevel); + + /* Clear any previous config, in case no event or IT mode is selected */ + __HAL_PWR_PVD_EXTI_DISABLE_EVENT(); + __HAL_PWR_PVD_EXTI_DISABLE_IT(); + __HAL_PWR_PVD_EXTI_DISABLE_FALLING_EDGE(); + __HAL_PWR_PVD_EXTI_DISABLE_RISING_EDGE(); + + /* Configure interrupt mode */ + if ((sConfigPVD->Mode & PVD_MODE_IT) == PVD_MODE_IT) + { + __HAL_PWR_PVD_EXTI_ENABLE_IT(); + } + + /* Configure event mode */ + if ((sConfigPVD->Mode & PVD_MODE_EVT) == PVD_MODE_EVT) + { + __HAL_PWR_PVD_EXTI_ENABLE_EVENT(); + } + + /* Configure the edge */ + if ((sConfigPVD->Mode & PVD_RISING_EDGE) == PVD_RISING_EDGE) + { + __HAL_PWR_PVD_EXTI_ENABLE_RISING_EDGE(); + } + + if ((sConfigPVD->Mode & PVD_FALLING_EDGE) == PVD_FALLING_EDGE) + { + __HAL_PWR_PVD_EXTI_ENABLE_FALLING_EDGE(); + } + + return HAL_OK; +} + + +/** + * @brief Enable the Power Voltage Detector (PVD). + * @retval None + */ +void HAL_PWREx_EnablePVD(void) +{ + SET_BIT(PWR->CR2, PWR_CR2_PVDE); +} + + +/** + * @brief Disable the Power Voltage Detector (PVD). + * @retval None + */ +void HAL_PWREx_DisablePVD(void) +{ + CLEAR_BIT(PWR->CR2, PWR_CR2_PVDE); +} +#endif /* PWR_PVD_SUPPORT */ + +#if defined(PWR_PVM_SUPPORT) +/** + * @brief Enable VDDUSB supply. + * @note Remove VDDUSB electrical and logical isolation, once VDDUSB supply is present. + * @retval None + */ +void HAL_PWREx_EnableVddUSB(void) +{ + SET_BIT(PWR->CR2, PWR_CR2_USV); +} + +/** + * @brief Disable VDDUSB supply. + * @retval None + */ +void HAL_PWREx_DisableVddUSB(void) +{ + CLEAR_BIT(PWR->CR2, PWR_CR2_USV); +} +#endif /* PWR_PVM_SUPPORT */ + +#if defined(PWR_CR2_IOSV) +/** + * @brief Enable VDDIO2 supply. + * @note Remove VDDIO2 electrical and logical isolation, once VDDIO2 supply is present. + * @retval None + */ +void HAL_PWREx_EnableVddIO2(void) +{ + SET_BIT(PWR->CR2, PWR_CR2_IOSV); +} + + +/** + * @brief Disable VDDIO2 supply. + * @retval None + */ +void HAL_PWREx_DisableVddIO2(void) +{ + CLEAR_BIT(PWR->CR2, PWR_CR2_IOSV); +} +#endif /* PWR_CR2_IOSV */ + +#if defined (PWR_PVM_SUPPORT) +/** + * @brief Enable the Power Voltage Monitoring for USB peripheral (power domain Vddio2) + * @retval None + */ +void HAL_PWREx_EnablePVMUSB(void) +{ + SET_BIT(PWR->CR2, PWR_PVM_USB); +} + +/** + * @brief Disable the Power Voltage Monitoring for USB peripheral (power domain Vddio2) + * @retval None + */ +void HAL_PWREx_DisablePVMUSB(void) +{ + CLEAR_BIT(PWR->CR2, PWR_PVM_USB); +} +#endif /* PWR_PVM_SUPPORT */ + +#if defined(PWR_PVM_SUPPORT) +/** + * @brief Configure the Peripheral Voltage Monitoring (PVM). + * @param sConfigPVM: pointer to a PWR_PVMTypeDef structure that contains the + * PVM configuration information. + * @note The API configures a single PVM according to the information contained + * in the input structure. To configure several PVMs, the API must be singly + * called for each PVM used. + * @note Refer to the electrical characteristics of your device datasheet for + * more details about the voltage thresholds corresponding to each + * detection level and to each monitored supply. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PWREx_ConfigPVM(PWR_PVMTypeDef *sConfigPVM) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Check the parameters */ + assert_param(IS_PWR_PVM_TYPE(sConfigPVM->PVMType)); + assert_param(IS_PWR_PVM_MODE(sConfigPVM->Mode)); + + /* Configure EXTI 34 interrupts if so required: + scan through PVMType to detect which PVMx is set and + configure the corresponding EXTI line accordingly. */ + switch (sConfigPVM->PVMType) + { + case PWR_PVM_USB: + /* Clear any previous config. Keep it clear if no event or IT mode is selected */ + __HAL_PWR_PVM_EXTI_DISABLE_EVENT(); + __HAL_PWR_PVM_EXTI_DISABLE_IT(); + __HAL_PWR_PVM_EXTI_DISABLE_FALLING_EDGE(); + __HAL_PWR_PVM_EXTI_DISABLE_RISING_EDGE(); + + /* Configure interrupt mode */ + if ((sConfigPVM->Mode & PVM_MODE_IT) == PVM_MODE_IT) + { + __HAL_PWR_PVM_EXTI_ENABLE_IT(); + } + + /* Configure event mode */ + if ((sConfigPVM->Mode & PVM_MODE_EVT) == PVM_MODE_EVT) + { + __HAL_PWR_PVM_EXTI_ENABLE_EVENT(); + } + + /* Configure the edge */ + if ((sConfigPVM->Mode & PVM_RISING_EDGE) == PVM_RISING_EDGE) + { + __HAL_PWR_PVM_EXTI_ENABLE_RISING_EDGE(); + } + + if ((sConfigPVM->Mode & PVM_FALLING_EDGE) == PVM_FALLING_EDGE) + { + __HAL_PWR_PVM_EXTI_ENABLE_FALLING_EDGE(); + } + break; + + default: + status = HAL_ERROR; + break; + } + + return status; +} +#endif /* PWR_PVM_SUPPORT */ +/** + * @brief Enable Internal Wake-up Line. + * @retval None + */ +void HAL_PWREx_EnableInternalWakeUpLine(void) +{ + SET_BIT(PWR->CR3, PWR_CR3_EIWUL); +} + +/** + * @brief Disable Internal Wake-up Line. + * @retval None + */ +void HAL_PWREx_DisableInternalWakeUpLine(void) +{ + CLEAR_BIT(PWR->CR3, PWR_CR3_EIWUL); +} + +/** + * @brief Enable GPIO pull-up state in Standby and Shutdown modes. + * @note Set the relevant PUy bit of PWR_PUCRx register to configure the I/O in + * pull-up state in Standby and Shutdown modes. + * @note This state is effective in Standby and Shutdown modes only if APC bit + * is set through HAL_PWREx_EnablePullUpPullDownConfig() API. + * @note The configuration is lost when exiting the Shutdown mode due to the + * power-on reset, maintained when exiting the Standby mode. + * @note To avoid any conflict at Standby and Shutdown modes exits, the corresponding + * PDy bit of PWR_PDCRx register is cleared unless it is reserved. + * @param GPIO Specify the IO port. This parameter can be PWR_GPIO_A, ..., PWR_GPIO_F + * to select the GPIO peripheral. + * @param GPIONumber Specify the I/O pins numbers. + * This parameter can be one of the following values: + * PWR_GPIO_BIT_0, ..., PWR_GPIO_BIT_15 (except for ports where less + * I/O pins are available) or the logical OR of several of them to set + * several bits for a given port in a single API call. + * @retval HAL Status + */ +HAL_StatusTypeDef HAL_PWREx_EnableGPIOPullUp(uint32_t GPIO, uint32_t GPIONumber) +{ + HAL_StatusTypeDef status = HAL_OK; + + assert_param(IS_PWR_GPIO(GPIO)); + assert_param(IS_PWR_GPIO_BIT_NUMBER(GPIONumber)); + + switch (GPIO) + { + case PWR_GPIO_A: + SET_BIT(PWR->PUCRA, (GPIONumber & ~PWR_GPIO_BIT_14)); + CLEAR_BIT(PWR->PDCRA, (GPIONumber & ~PWR_GPIO_BIT_13)); + break; + + case PWR_GPIO_B: + SET_BIT(PWR->PUCRB, GPIONumber); + CLEAR_BIT(PWR->PDCRB, GPIONumber); + break; + + case PWR_GPIO_C: + SET_BIT(PWR->PUCRC, GPIONumber); + CLEAR_BIT(PWR->PDCRC, GPIONumber); + break; + + case PWR_GPIO_D: + SET_BIT(PWR->PUCRD, GPIONumber); + CLEAR_BIT(PWR->PDCRD, GPIONumber); + break; + +#if defined(GPI0E) + case PWR_GPIO_E: + SET_BIT(PWR->PUCRE, GPIONumber); + CLEAR_BIT(PWR->PDCRE, GPIONumber); + break; +#endif /* GPI0E */ + case PWR_GPIO_F: + SET_BIT(PWR->PUCRF, GPIONumber); + CLEAR_BIT(PWR->PDCRF, GPIONumber); + break; + + default: + status = HAL_ERROR; + break; + } + + return status; +} + + +/** + * @brief Disable GPIO pull-up state in Standby mode and Shutdown modes. + * @note Reset the relevant PUy bit of PWR_PUCRx register used to configure the I/O + * in pull-up state in Standby and Shutdown modes. + * @param GPIO Specifies the IO port. This parameter can be PWR_GPIO_A, ..., PWR_GPIO_F + * to select the GPIO peripheral. + * @param GPIONumber Specify the I/O pins numbers. + * This parameter can be one of the following values: + * PWR_GPIO_BIT_0, ..., PWR_GPIO_BIT_15 (except for ports where less + * I/O pins are available) or the logical OR of several of them to reset + * several bits for a given port in a single API call. + * @retval HAL Status + */ +HAL_StatusTypeDef HAL_PWREx_DisableGPIOPullUp(uint32_t GPIO, uint32_t GPIONumber) +{ + HAL_StatusTypeDef status = HAL_OK; + + assert_param(IS_PWR_GPIO(GPIO)); + assert_param(IS_PWR_GPIO_BIT_NUMBER(GPIONumber)); + + switch (GPIO) + { + case PWR_GPIO_A: + CLEAR_BIT(PWR->PUCRA, (GPIONumber & ~PWR_GPIO_BIT_14)); + break; + + case PWR_GPIO_B: + CLEAR_BIT(PWR->PUCRB, GPIONumber); + break; + + case PWR_GPIO_C: + CLEAR_BIT(PWR->PUCRC, GPIONumber); + break; + + case PWR_GPIO_D: + CLEAR_BIT(PWR->PUCRD, GPIONumber); + break; + +#if defined(GPI0E) + case PWR_GPIO_E: + CLEAR_BIT(PWR->PUCRE, GPIONumber); + break; +#endif /* GPI0E */ + case PWR_GPIO_F: + CLEAR_BIT(PWR->PUCRF, GPIONumber); + break; + + default: + status = HAL_ERROR; + break; + } + + return status; +} + + +/** + * @brief Enable GPIO pull-down state in Standby and Shutdown modes. + * @note Set the relevant PDy bit of PWR_PDCRx register to configure the I/O in + * pull-down state in Standby and Shutdown modes. + * @note This state is effective in Standby and Shutdown modes only if APC bit + * is set through HAL_PWREx_EnablePullUpPullDownConfig() API. + * @note The configuration is lost when exiting the Shutdown mode due to the + * power-on reset, maintained when exiting the Standby mode. + * @note To avoid any conflict at Standby and Shutdown modes exits, the corresponding + * PUy bit of PWR_PUCRx register is cleared unless it is reserved. + * @param GPIO Specify the IO port. This parameter can be PWR_GPIO_A..PWR_GPIO_F + * to select the GPIO peripheral. + * @param GPIONumber Specify the I/O pins numbers. + * This parameter can be one of the following values: + * PWR_GPIO_BIT_0, ..., PWR_GPIO_BIT_15 (except for ports where less + * I/O pins are available) or the logical OR of several of them to set + * several bits for a given port in a single API call. + * @retval HAL Status + */ +HAL_StatusTypeDef HAL_PWREx_EnableGPIOPullDown(uint32_t GPIO, uint32_t GPIONumber) +{ + HAL_StatusTypeDef status = HAL_OK; + + assert_param(IS_PWR_GPIO(GPIO)); + assert_param(IS_PWR_GPIO_BIT_NUMBER(GPIONumber)); + + switch (GPIO) + { + case PWR_GPIO_A: + SET_BIT(PWR->PDCRA, (GPIONumber & ~PWR_GPIO_BIT_13)); + CLEAR_BIT(PWR->PUCRA, (GPIONumber & ~PWR_GPIO_BIT_14)); + break; + + case PWR_GPIO_B: + SET_BIT(PWR->PDCRB, GPIONumber); + CLEAR_BIT(PWR->PUCRB, GPIONumber); + break; + + case PWR_GPIO_C: + SET_BIT(PWR->PDCRC, GPIONumber); + CLEAR_BIT(PWR->PUCRC, GPIONumber); + break; + + case PWR_GPIO_D: + SET_BIT(PWR->PDCRD, GPIONumber); + CLEAR_BIT(PWR->PUCRD, GPIONumber); + break; + +#if defined(GPIOE) + case PWR_GPIO_E: + SET_BIT(PWR->PDCRE, GPIONumber); + CLEAR_BIT(PWR->PUCRE, GPIONumber); + break; +#endif /* GPI0E */ + case PWR_GPIO_F: + SET_BIT(PWR->PDCRF, GPIONumber); + CLEAR_BIT(PWR->PUCRF, GPIONumber); + break; + + default: + status = HAL_ERROR; + break; + } + + return status; +} + + +/** + * @brief Disable GPIO pull-down state in Standby and Shutdown modes. + * @note Reset the relevant PDy bit of PWR_PDCRx register used to configure the I/O + * in pull-down state in Standby and Shutdown modes. + * @param GPIO Specifies the IO port. This parameter can be PWR_GPIO_A..PWR_GPIO_F + * to select the GPIO peripheral. + * @param GPIONumber Specify the I/O pins numbers. + * This parameter can be one of the following values: + * PWR_GPIO_BIT_0, ..., PWR_GPIO_BIT_15 (except for ports where less + * I/O pins are available) or the logical OR of several of them to reset + * several bits for a given port in a single API call. + * @retval HAL Status + */ +HAL_StatusTypeDef HAL_PWREx_DisableGPIOPullDown(uint32_t GPIO, uint32_t GPIONumber) +{ + HAL_StatusTypeDef status = HAL_OK; + + assert_param(IS_PWR_GPIO(GPIO)); + assert_param(IS_PWR_GPIO_BIT_NUMBER(GPIONumber)); + + switch (GPIO) + { + case PWR_GPIO_A: + CLEAR_BIT(PWR->PDCRA, (GPIONumber & ~PWR_GPIO_BIT_13)); + break; + + case PWR_GPIO_B: + CLEAR_BIT(PWR->PDCRB, GPIONumber); + break; + + case PWR_GPIO_C: + CLEAR_BIT(PWR->PDCRC, GPIONumber); + break; + + case PWR_GPIO_D: + CLEAR_BIT(PWR->PDCRD, GPIONumber); + break; + +#if defined(GPIOE) + case PWR_GPIO_E: + CLEAR_BIT(PWR->PDCRE, GPIONumber); + break; +#endif /* GPI0E */ + case PWR_GPIO_F: + CLEAR_BIT(PWR->PDCRF, GPIONumber); + break; + + default: + status = HAL_ERROR; + break; + } + + return status; +} + + +/** + * @brief Enable pull-up and pull-down configuration. + * @note When APC bit is set, the I/O pull-up and pull-down configurations defined in + * PWR_PUCRx and PWR_PDCRx registers are applied in Standby and Shutdown modes. + * @note Pull-up set by PUy bit of PWR_PUCRx register is not activated if the corresponding + * PDy bit of PWR_PDCRx register is also set (pull-down configuration priority is higher). + * HAL_PWREx_EnableGPIOPullUp() and HAL_PWREx_EnableGPIOPullDown() APIs ensure there + * is no conflict when setting PUy or PDy bit. + * @retval None + */ +void HAL_PWREx_EnablePullUpPullDownConfig(void) +{ + SET_BIT(PWR->CR3, PWR_CR3_APC); +} + +/** + * @brief Disable pull-up and pull-down configuration. + * @note When APC bit is cleared, the I/O pull-up and pull-down configurations defined in + * PWR_PUCRx and PWR_PDCRx registers are not applied in Standby and Shutdown modes. + * @retval None + */ +void HAL_PWREx_DisablePullUpPullDownConfig(void) +{ + CLEAR_BIT(PWR->CR3, PWR_CR3_APC); +} + +#if defined(PWR_CR3_RRS) +/** + * @brief Enable SRAM content retention in Standby mode. + * @note When RRS bit is set, SRAM is powered by the low-power regulator in + * Standby mode and its content is kept. + * @retval None + */ +void HAL_PWREx_EnableSRAMRetention(void) +{ + SET_BIT(PWR->CR3, PWR_CR3_RRS); +} + + +/** + * @brief Disable SRAM content retention in Standby mode. + * @note When RRS bit is reset, SRAM is powered off in Standby mode + * and its content is lost. + * @retval None + */ +void HAL_PWREx_DisableSRAMRetention(void) +{ + CLEAR_BIT(PWR->CR3, PWR_CR3_RRS); +} +#endif /* PWR_CR3_RRS */ + +/** + * @brief Enable Flash Power Down. + * @note This API allows to enable flash power down capabilities in low power + * run, low power sleep and stop modes. + * @param PowerMode this can be a combination of following values: + * @arg @ref PWR_FLASHPD_LPRUN + * @arg @ref PWR_FLASHPD_LPSLEEP + * @arg @ref PWR_FLASHPD_STOP + * @retval None + */ +void HAL_PWREx_EnableFlashPowerDown(uint32_t PowerMode) +{ + assert_param(IS_PWR_FLASH_POWERDOWN(PowerMode)); + + PWR->CR1 |= PowerMode; +} + + +/** + * @brief Disable Flash Power Down. + * @note This API allows to disable flash power down capabilities in low power + * run, low power sleep and stop modes. + * @param PowerMode this can be a combination of following values: + * @arg @ref PWR_FLASHPD_LPRUN + * @arg @ref PWR_FLASHPD_LPSLEEP + * @arg @ref PWR_FLASHPD_STOP + * @retval None + */ +void HAL_PWREx_DisableFlashPowerDown(uint32_t PowerMode) +{ + assert_param(IS_PWR_FLASH_POWERDOWN(PowerMode)); + + PWR->CR1 &= ~PowerMode; +} + + +/** + * @brief Return Voltage Scaling Range. + * @retval VOS bit field: + * @arg @ref PWR_REGULATOR_VOLTAGE_SCALE1 + * @arg @ref PWR_REGULATOR_VOLTAGE_SCALE2 + */ +uint32_t HAL_PWREx_GetVoltageRange(void) +{ + return (PWR->CR1 & PWR_CR1_VOS); +} + + +/** + * @brief Configure the main regulator output voltage. + * @param VoltageScaling specifies the regulator output voltage to achieve + * a tradeoff between performance and power consumption. + * This parameter can be one of the following values: + * @arg @ref PWR_REGULATOR_VOLTAGE_SCALE1 Regulator voltage output range 1 mode, + * typical output voltage at 1.2 V, + * system frequency up to 64 MHz. + * @arg @ref PWR_REGULATOR_VOLTAGE_SCALE2 Regulator voltage output range 2 mode, + * typical output voltage at 1.0 V, + * system frequency up to 16 MHz. + * @note When moving from Range 1 to Range 2, the system frequency must be decreased to + * a value below 16 MHz before calling HAL_PWREx_ControlVoltageScaling() API. + * When moving from Range 2 to Range 1, the system frequency can be increased to + * a value up to 64 MHz after calling HAL_PWREx_ControlVoltageScaling() API. + * @note When moving from Range 2 to Range 1, the API waits for VOSF flag to be + * cleared before returning the status. If the flag is not cleared within + * 6 microseconds, HAL_TIMEOUT status is reported. + * @retval HAL Status + */ +HAL_StatusTypeDef HAL_PWREx_ControlVoltageScaling(uint32_t VoltageScaling) +{ + uint32_t wait_loop_index; + + assert_param(IS_PWR_VOLTAGE_SCALING_RANGE(VoltageScaling)); + + /* Modify voltage scaling range */ + MODIFY_REG(PWR->CR1, PWR_CR1_VOS, VoltageScaling); + + /* In case of Range 1 selected, we need to ensure that main regulator reaches new value */ + if (VoltageScaling == PWR_REGULATOR_VOLTAGE_SCALE1) + { + /* Set timeout value */ + wait_loop_index = ((PWR_VOSF_SETTING_DELAY_6_US * SystemCoreClock) / 1000000U) + 1U; + + /* Wait until VOSF is reset */ + while (HAL_IS_BIT_SET(PWR->SR2, PWR_SR2_VOSF)) + { + if (wait_loop_index != 0U) + { + wait_loop_index--; + } + else + { + return HAL_TIMEOUT; + } + } + } + + return HAL_OK; +} + + + +/** + * @brief Enter Low-power Run mode + * @note System clock frequency has to be decreased below 2 MHz before entering + * low power run mode + * @note In Low-power Run mode, all I/O pins keep the same state as in Run mode. + * @retval None + */ +void HAL_PWREx_EnableLowPowerRunMode(void) +{ + /* Set Regulator parameter */ + SET_BIT(PWR->CR1, PWR_CR1_LPR); +} + + +/** + * @brief Exit Low-power Run mode. + * @note Before HAL_PWREx_DisableLowPowerRunMode() completion, the function checks that + * REGLPF has been properly reset (otherwise, HAL_PWREx_DisableLowPowerRunMode + * returns HAL_TIMEOUT status). The system clock frequency can then be + * increased above 2 MHz. + * @retval HAL Status + */ +HAL_StatusTypeDef HAL_PWREx_DisableLowPowerRunMode(void) +{ + uint32_t wait_loop_index = ((PWR_REGLPF_SETTING_DELAY_6_US * SystemCoreClock) / 1000000U) + 1U; + + /* Clear LPR bit */ + CLEAR_BIT(PWR->CR1, PWR_CR1_LPR); + + /* Wait until REGLPF is reset */ + while (HAL_IS_BIT_SET(PWR->SR2, PWR_SR2_REGLPF)) + { + if (wait_loop_index != 0U) + { + wait_loop_index--; + } + else + { + return HAL_TIMEOUT; + } + } + + return HAL_OK; +} + + +#if defined(PWR_SHDW_SUPPORT) +/** + * @brief Enter Shutdown mode. + * @note In Shutdown mode, the PLL, the HSI, the LSI and the HSE oscillators are switched + * off. The voltage regulator is disabled and Vcore domain is powered off. + * SRAM and registers contents are lost except for registers in the Backup domain. + * The BOR is not available. + * @note The I/Os can be configured either with a pull-up or pull-down or can + * be kept in analog state. + * HAL_PWREx_EnableGPIOPullUp() and HAL_PWREx_EnableGPIOPullDown() + * respectively enable Pull Up and PullDown state. + * HAL_PWREx_DisableGPIOPullUp() & HAL_PWREx_DisableGPIOPullDown() + * disable the same. These states are effective in Standby mode only if + * APC bit is set through HAL_PWREx_EnablePullUpPullDownConfig() API. + * @retval None + + * @retval None + */ +void HAL_PWREx_EnterSHUTDOWNMode(void) +{ + /* Set Shutdown mode */ + MODIFY_REG(PWR->CR1, PWR_CR1_LPMS, PWR_LOWPOWERMODE_SHUTDOWN); + + /* Set SLEEPDEEP bit of Cortex System Control Register */ + SET_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SLEEPDEEP_Msk)); + + /* This option is used to ensure that store operations are completed */ +#if defined ( __CC_ARM) + __force_stores(); +#endif /* __CC_ARM */ + + /* Request Wait For Interrupt */ + __WFI(); +} +#endif /* PWR_SHDW_SUPPORT */ + +#if defined(PWR_PVD_SUPPORT) && defined(PWR_PVM_SUPPORT) +/** + * @brief This function handles the PWR PVD interrupt request. + * @note This API should be called under the PVD_IRQHandler(). + * @retval None + */ +void HAL_PWREx_PVD_PVM_IRQHandler(void) +{ + /* Check PWR PVD exti Rising flag */ + if (__HAL_PWR_PVD_EXTI_GET_RISING_FLAG() != 0x0U) + { + /* Clear PVD exti pending bit */ + __HAL_PWR_PVD_EXTI_CLEAR_RISING_FLAG(); + + /* PWR PVD interrupt rising user callback */ + HAL_PWREx_PVD_PVM_Rising_Callback(); + } + + /* Check PWR exti fallling flag */ + if (__HAL_PWR_PVD_EXTI_GET_FALLING_FLAG() != 0x0U) + { + /* Clear PVD exti pending bit */ + __HAL_PWR_PVD_EXTI_CLEAR_FALLING_FLAG(); + + /* PWR PVD interrupt falling user callback */ + HAL_PWREx_PVD_PVM_Falling_Callback(); + } + + /* Check PWR PVM exti Rising flag */ + if (__HAL_PWR_PVM_EXTI_GET_RISING_FLAG() != 0x0U) + { + /* Clear PVM exti pending bit */ + __HAL_PWR_PVM_EXTI_CLEAR_RISING_FLAG(); + + /* PWR PVD PVM interrupt rising user callback */ + HAL_PWREx_PVD_PVM_Rising_Callback(); + } + + /* Check PWR PVM exti fallling flag */ + if (__HAL_PWR_PVM_EXTI_GET_FALLING_FLAG() != 0x0U) + { + /* Clear PVM exti pending bit */ + __HAL_PWR_PVM_EXTI_CLEAR_FALLING_FLAG(); + + /* PWR PVM interrupt falling user callback */ + HAL_PWREx_PVD_PVM_Falling_Callback(); + } +} + +/** + * @brief PWR PVD interrupt rising callback + * @retval None + */ +__weak void HAL_PWREx_PVD_PVM_Rising_Callback(void) +{ + /* NOTE : This function should not be modified; when the callback is needed, + the HAL_PWR_PVD_Rising_Callback can be implemented in the user file + */ +} + +/** + * @brief PWR PVD interrupt Falling callback + * @retval None + */ +__weak void HAL_PWREx_PVD_PVM_Falling_Callback(void) +{ + /* NOTE : This function should not be modified; when the callback is needed, + the HAL_PWR_PVD_Falling_Callback can be implemented in the user file + */ +} +#elif defined(PWR_PVD_SUPPORT) +/** + * @brief This function handles the PWR PVD interrupt request. + * @note This API should be called under the PVD_IRQHandler(). + * @retval None + */ +void HAL_PWREx_PVD_IRQHandler(void) +{ + /* Check PWR exti Rising flag */ + if (__HAL_PWR_PVD_EXTI_GET_RISING_FLAG() != 0x0U) + { + /* Clear PVD exti pending bit */ + __HAL_PWR_PVD_EXTI_CLEAR_RISING_FLAG(); + + /* PWR PVD interrupt rising user callback */ + HAL_PWREx_PVD_Rising_Callback(); + } + + /* Check PWR exti fallling flag */ + if (__HAL_PWR_PVD_EXTI_GET_FALLING_FLAG() != 0x0U) + { + /* Clear PVD exti pending bit */ + __HAL_PWR_PVD_EXTI_CLEAR_FALLING_FLAG(); + + /* PWR PVD interrupt falling user callback */ + HAL_PWREx_PVD_Falling_Callback(); + } +} + +/** + * @brief PWR PVD interrupt rising callback + * @retval None + */ +__weak void HAL_PWREx_PVD_Rising_Callback(void) +{ + /* NOTE : This function should not be modified; when the callback is needed, + the HAL_PWR_PVD_Rising_Callback can be implemented in the user file + */ +} + +/** + * @brief PWR PVD interrupt Falling callback + * @retval None + */ +__weak void HAL_PWREx_PVD_Falling_Callback(void) +{ + /* NOTE : This function should not be modified; when the callback is needed, + the HAL_PWR_PVD_Falling_Callback can be implemented in the user file + */ +} + +#endif /* PWR_PVD_SUPPORT && PWR_PVM_SUPPORT */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* HAL_PWR_MODULE_ENABLED */ +/** + * @} + */ + +/** + * @} + */ diff --git a/firmware/Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.c b/firmware/Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.c new file mode 100644 index 0000000..656db75 --- /dev/null +++ b/firmware/Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.c @@ -0,0 +1,1457 @@ +/** + ****************************************************************************** + * @file stm32g0xx_hal_rcc.c + * @author MCD Application Team + * @brief RCC HAL module driver. + * This file provides firmware functions to manage the following + * functionalities of the Reset and Clock Control (RCC) peripheral: + * + Initialization and de-initialization functions + * + Peripheral Control functions + * + @verbatim + ============================================================================== + ##### RCC specific features ##### + ============================================================================== + [..] + After reset the device is running from High Speed Internal oscillator + (from 8 MHz to reach 16MHz) with Flash 0 wait state. Flash prefetch buffer, + D-Cache and I-Cache are disabled, and all peripherals are off except internal + SRAM, Flash and JTAG. + + (+) There is no prescaler on High speed (AHB) and Low speed (APB) buses: + all peripherals mapped on these buses are running at HSI speed. + (+) The clock for all peripherals is switched off, except the SRAM and FLASH. + (+) All GPIOs are in analog mode, except the JTAG pins which + are assigned to be used for debug purpose. + + [..] + Once the device started from reset, the user application has to: + (+) Configure the clock source to be used to drive the System clock + (if the application needs higher frequency/performance) + (+) Configure the System clock frequency and Flash settings + (+) Configure the AHB and APB buses prescalers + (+) Enable the clock for the peripheral(s) to be used + (+) Configure the clock source(s) for peripherals which clocks are not + derived from the System clock (RTC, ADC, RNG, HSTIM) + + @endverbatim + ****************************************************************************** + * @attention + * + * Copyright (c) 2018 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file in + * the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32g0xx_hal.h" + +/** @addtogroup STM32G0xx_HAL_Driver + * @{ + */ + +/** @defgroup RCC RCC + * @brief RCC HAL module driver + * @{ + */ + +#ifdef HAL_RCC_MODULE_ENABLED + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/** @defgroup RCC_Private_Constants RCC Private Constants + * @{ + */ +#define HSE_TIMEOUT_VALUE HSE_STARTUP_TIMEOUT +#define HSI_TIMEOUT_VALUE (2U) /* 2 ms (minimum Tick + 1) */ +#define LSI_TIMEOUT_VALUE (2U) /* 2 ms (minimum Tick + 1) */ +#define PLL_TIMEOUT_VALUE (2U) /* 2 ms (minimum Tick + 1) */ + +#if defined(RCC_HSI48_SUPPORT) +#define HSI48_TIMEOUT_VALUE (2U) /* 2 ms (minimum Tick + 1) */ +#endif /* RCC_HSI48_SUPPORT */ +#define CLOCKSWITCH_TIMEOUT_VALUE (5000U) /* 5 s */ + +#define PLLSOURCE_NONE (0U) +/** + * @} + */ + +/* Private macro -------------------------------------------------------------*/ +/** @defgroup RCC_Private_Macros RCC Private Macros + * @{ + */ +#define MCO1_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE() +#define MCO1_GPIO_PORT GPIOA +#define MCO1_PIN GPIO_PIN_8 + +#if defined(RCC_MCO2_SUPPORT) +#define MCO2_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE() +#define MCO2_GPIO_PORT GPIOA +#define MCO2_PIN GPIO_PIN_10 +#endif /* RCC_MCO2_SUPPORT */ + +#define RCC_PLL_OSCSOURCE_CONFIG(__HAL_RCC_PLLSOURCE__) \ + (MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC, (uint32_t)(__HAL_RCC_PLLSOURCE__))) +/** + * @} + */ + +/* Private variables ---------------------------------------------------------*/ +/** @defgroup RCC_Private_Variables RCC Private Variables + * @{ + */ + +/** + * @} + */ + +/* Private function prototypes -----------------------------------------------*/ +/* Exported functions --------------------------------------------------------*/ + +/** @defgroup RCC_Exported_Functions RCC Exported Functions + * @{ + */ + +/** @defgroup RCC_Exported_Functions_Group1 Initialization and de-initialization functions + * @brief Initialization and Configuration functions + * + @verbatim + =============================================================================== + ##### Initialization and de-initialization functions ##### + =============================================================================== + [..] + This section provides functions allowing to configure the internal and external oscillators + (HSE, HSI, LSE, LSI, PLL, CSS and MCO) and the System buses clocks (SYSCLK, AHB, APB) + + [..] Internal/external clock and PLL configuration + (+) HSI (high-speed internal): 16 MHz factory-trimmed RC used directly or through + the PLL as System clock source. + + (+) LSI (low-speed internal): 32 KHz low consumption RC used as IWDG and/or RTC + clock source. + + (+) HSE (high-speed external): 4 to 48 MHz crystal oscillator used directly or + through the PLL as System clock source. Can be used also optionally as RTC clock source. + + (+) LSE (low-speed external): 32.768 KHz oscillator used optionally as RTC clock source. + + (+) PLL (clocked by HSI, HSE) providing up to three independent output clocks: + (++) The first output (R) is used to generate the high speed system clock (up to 64MHz). + (++) The second output(Q) is used to generate the clock for the random analog generator and HStim. + (++) The Third output (P) is used to generate the clock for the Analog to Digital Converter and I2S. + + (+) CSS (Clock security system): once enabled, if a HSE or LSE clock failure occurs + (HSE used directly or through PLL as System clock source), the System clock + is automatically switched respectively to HSI or LSI and an interrupt is generated + if enabled. The interrupt is linked to the Cortex-M0+ NMI (Non-Maskable Interrupt) + exception vector. + + (+) MCOx (microcontroller clock output): + (++) MCO1 used to output LSI, HSI48(*), HSI, LSE, HSE or main PLL clock (through a configurable prescaler) on PA8 pin. + (++) MCO2(*) used to output LSI, HSI48(*), HSI, LSE, HSE, main PLLR clock, PLLQ clock, PLLP clock, RTC clock or RTC_Wakeup (through a configurable prescaler) on PA10 pin. + (*) available on certain devices only + + [..] System, AHB and APB buses clocks configuration + (+) Several clock sources can be used to drive the System clock (SYSCLK): HSI, + HSE, LSI, LSE and main PLL. + The AHB clock (HCLK) is derived from System clock through configurable + prescaler and used to clock the CPU, memory and peripherals mapped + on AHB bus (DMA, GPIO...).and APB (PCLK1) clock is derived + from AHB clock through configurable prescalers and used to clock + the peripherals mapped on these buses. You can use + "HAL_RCC_GetSysClockFreq()" function to retrieve the frequencies of these clocks. + + -@- All the peripheral clocks are derived from the System clock (SYSCLK) except: + + (+@) RTC: the RTC clock can be derived either from the LSI, LSE or HSE clock + divided by 2 to 31. + You have to use __HAL_RCC_RTC_ENABLE() and HAL_RCCEx_PeriphCLKConfig() function + to configure this clock. + + (+@) RNG(*) requires a frequency equal or lower than 48 MHz. + This clock is derived from the main PLL or HSI or System clock. + (*) available on certain devices only + + (+@) IWDG clock which is always the LSI clock. + + + (+) The maximum frequency of the SYSCLK, HCLK, PCLK is 64 MHz. + Depending on the device voltage range, the maximum frequency should be + adapted accordingly. + + @endverbatim + + (++) Table 1. HCLK clock frequency. + (++) +-------------------------------------------------------+ + (++) | Latency | HCLK clock frequency (MHz) | + (++) | |-------------------------------------| + (++) | | voltage range 1 | voltage range 2 | + (++) | | 1.2 V | 1.0 V | + (++) |-----------------|------------------|------------------| + (++) |0WS(1 CPU cycles)| HCLK <= 24 | HCLK <= 8 | + (++) |-----------------|------------------|------------------| + (++) |1WS(2 CPU cycles)| HCLK <= 48 | HCLK <= 16 | + (++) |-----------------|------------------|------------------| + (++) |2WS(3 CPU cycles)| HCLK <= 64 | - | + (++) |-----------------|------------------|------------------| + * @{ + */ + +/** + * @brief Reset the RCC clock configuration to the default reset state. + * @note The default reset state of the clock configuration is given below: + * - HSI ON and used as system clock source + * - HSE, PLL OFF + * - AHB and APB prescaler set to 1. + * - CSS, MCO1 OFF + * - All interrupts disabled + * @note This function does not modify the configuration of the + * - Peripheral clocks + * - LSI, LSE and RTC clocks + * @retval HAL status + */ +HAL_StatusTypeDef HAL_RCC_DeInit(void) +{ + uint32_t tickstart; + + /* Get Start Tick*/ + tickstart = HAL_GetTick(); + + /* Set HSION bit to the reset value */ + SET_BIT(RCC->CR, RCC_CR_HSION); + + /* Wait till HSI is ready */ + while (READ_BIT(RCC->CR, RCC_CR_HSIRDY) == 0U) + { + if ((HAL_GetTick() - tickstart) > HSI_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + + /* Set HSITRIM[6:0] bits to the reset value */ + RCC->ICSCR = RCC_ICSCR_HSITRIM_6; + + /* Get Start Tick*/ + tickstart = HAL_GetTick(); + + /* Reset CFGR register (HSI is selected as system clock source) */ + RCC->CFGR = 0x00000000u; + + /* Wait till HSI is ready */ + while (READ_BIT(RCC->CFGR, RCC_CFGR_SWS) != 0U) + { + if ((HAL_GetTick() - tickstart) > CLOCKSWITCH_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + + /* Clear CR register in 2 steps: first to clear HSEON in case bypass was enabled */ + RCC->CR = RCC_CR_HSION; + + /* Then again to HSEBYP in case bypass was enabled */ + RCC->CR = RCC_CR_HSION; + + /* Get Start Tick*/ + tickstart = HAL_GetTick(); + + /* Wait till PLL is ready */ + while (READ_BIT(RCC->CR, RCC_CR_PLLRDY) != 0U) + { + if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + + /* once PLL is OFF, reset PLLCFGR register to default value */ + RCC->PLLCFGR = RCC_PLLCFGR_PLLN_4; + + /* Disable all interrupts */ + RCC->CIER = 0x00000000u; + + /* Clear all flags */ + RCC->CICR = 0xFFFFFFFFu; + + /* Update the SystemCoreClock global variable */ + SystemCoreClock = HSI_VALUE; + + /* Adapt Systick interrupt period */ + if (HAL_InitTick(uwTickPrio) != HAL_OK) + { + return HAL_ERROR; + } + else + { + return HAL_OK; + } +} + +/** + * @brief Initialize the RCC Oscillators according to the specified parameters in the + * @ref RCC_OscInitTypeDef. + * @param RCC_OscInitStruct pointer to a @ref RCC_OscInitTypeDef structure that + * contains the configuration information for the RCC Oscillators. + * @note The PLL is not disabled when used as system clock. + * @note Transition HSE Bypass to HSE On and HSE On to HSE Bypass are not + * supported by this function. User should request a transition to HSE Off + * first and then to HSE On or HSE Bypass. + * @note Transition LSE Bypass to LSE On and LSE On to LSE Bypass are not + * supported by this function. User should request a transition to LSE Off + * first and then to LSE On or LSE Bypass. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct) +{ + uint32_t tickstart; + uint32_t temp_sysclksrc; + uint32_t temp_pllckcfg; + + /* Check Null pointer */ + if (RCC_OscInitStruct == NULL) + { + return HAL_ERROR; + } + + /* Check the parameters */ + assert_param(IS_RCC_OSCILLATORTYPE(RCC_OscInitStruct->OscillatorType)); + + /*------------------------------- HSE Configuration ------------------------*/ + if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSE) == RCC_OSCILLATORTYPE_HSE) + { + /* Check the parameters */ + assert_param(IS_RCC_HSE(RCC_OscInitStruct->HSEState)); + + temp_sysclksrc = __HAL_RCC_GET_SYSCLK_SOURCE(); + temp_pllckcfg = __HAL_RCC_GET_PLL_OSCSOURCE(); + + /* When the HSE is used as system clock or clock source for PLL in these cases it is not allowed to be disabled */ + if (((temp_sysclksrc == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && (temp_pllckcfg == RCC_PLLSOURCE_HSE)) + || (temp_sysclksrc == RCC_SYSCLKSOURCE_STATUS_HSE)) + { + if ((READ_BIT(RCC->CR, RCC_CR_HSERDY) != 0U) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF)) + { + return HAL_ERROR; + } + } + else + { + /* Set the new HSE configuration ---------------------------------------*/ + __HAL_RCC_HSE_CONFIG(RCC_OscInitStruct->HSEState); + + /* Check the HSE State */ + if (RCC_OscInitStruct->HSEState != RCC_HSE_OFF) + { + /* Get Start Tick*/ + tickstart = HAL_GetTick(); + + /* Wait till HSE is ready */ + while (READ_BIT(RCC->CR, RCC_CR_HSERDY) == 0U) + { + if ((HAL_GetTick() - tickstart) > HSE_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + } + else + { + /* Get Start Tick*/ + tickstart = HAL_GetTick(); + + /* Wait till HSE is disabled */ + while (READ_BIT(RCC->CR, RCC_CR_HSERDY) != 0U) + { + if ((HAL_GetTick() - tickstart) > HSE_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + } + } + } + /*----------------------------- HSI Configuration --------------------------*/ + if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSI) == RCC_OSCILLATORTYPE_HSI) + { + /* Check the parameters */ + assert_param(IS_RCC_HSI(RCC_OscInitStruct->HSIState)); + assert_param(IS_RCC_HSI_CALIBRATION_VALUE(RCC_OscInitStruct->HSICalibrationValue)); + assert_param(IS_RCC_HSIDIV(RCC_OscInitStruct->HSIDiv)); + + /* Check if HSI16 is used as system clock or as PLL source when PLL is selected as system clock */ + temp_sysclksrc = __HAL_RCC_GET_SYSCLK_SOURCE(); + temp_pllckcfg = __HAL_RCC_GET_PLL_OSCSOURCE(); + if (((temp_sysclksrc == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && (temp_pllckcfg == RCC_PLLSOURCE_HSI)) + || (temp_sysclksrc == RCC_SYSCLKSOURCE_STATUS_HSI)) + { + /* When HSI is used as system clock or as PLL input clock it can not be disabled */ + if ((READ_BIT(RCC->CR, RCC_CR_HSIRDY) != 0U) && (RCC_OscInitStruct->HSIState == RCC_HSI_OFF)) + { + return HAL_ERROR; + } + /* Otherwise, just the calibration is allowed */ + else + { + /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/ + __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue); + + if (temp_sysclksrc == RCC_SYSCLKSOURCE_STATUS_HSI) + { + /* Adjust the HSI16 division factor */ + __HAL_RCC_HSI_CONFIG(RCC_OscInitStruct->HSIDiv); + + /* Update the SystemCoreClock global variable with HSISYS value */ + SystemCoreClock = (HSI_VALUE / (1UL << ((READ_BIT(RCC->CR, RCC_CR_HSIDIV)) >> RCC_CR_HSIDIV_Pos))); + } + + /* Adapt Systick interrupt period */ + if (HAL_InitTick(uwTickPrio) != HAL_OK) + { + return HAL_ERROR; + } + } + } + else + { + /* Check the HSI State */ + if (RCC_OscInitStruct->HSIState != RCC_HSI_OFF) + { + /* Configure the HSI16 division factor */ + __HAL_RCC_HSI_CONFIG(RCC_OscInitStruct->HSIDiv); + + /* Enable the Internal High Speed oscillator (HSI16). */ + __HAL_RCC_HSI_ENABLE(); + + /* Get Start Tick*/ + tickstart = HAL_GetTick(); + + /* Wait till HSI is ready */ + while (READ_BIT(RCC->CR, RCC_CR_HSIRDY) == 0U) + { + if ((HAL_GetTick() - tickstart) > HSI_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + + /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/ + __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue); + } + else + { + /* Disable the Internal High Speed oscillator (HSI16). */ + __HAL_RCC_HSI_DISABLE(); + + /* Get Start Tick*/ + tickstart = HAL_GetTick(); + + /* Wait till HSI is disabled */ + while (READ_BIT(RCC->CR, RCC_CR_HSIRDY) != 0U) + { + if ((HAL_GetTick() - tickstart) > HSI_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + } + } + } + /*------------------------------ LSI Configuration -------------------------*/ + if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSI) == RCC_OSCILLATORTYPE_LSI) + { + /* Check the parameters */ + assert_param(IS_RCC_LSI(RCC_OscInitStruct->LSIState)); + + /* Check if LSI is used as system clock */ + if (__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_LSI) + { + /* When LSI is used as system clock it will not be disabled */ + if ((((RCC->CSR) & RCC_CSR_LSIRDY) != 0U) && (RCC_OscInitStruct->LSIState == RCC_LSI_OFF)) + { + return HAL_ERROR; + } + } + else + { + /* Check the LSI State */ + if (RCC_OscInitStruct->LSIState != RCC_LSI_OFF) + { + /* Enable the Internal Low Speed oscillator (LSI). */ + __HAL_RCC_LSI_ENABLE(); + + /* Get Start Tick*/ + tickstart = HAL_GetTick(); + + /* Wait till LSI is ready */ + while (READ_BIT(RCC->CSR, RCC_CSR_LSIRDY) == 0U) + { + if ((HAL_GetTick() - tickstart) > LSI_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + } + else + { + /* Disable the Internal Low Speed oscillator (LSI). */ + __HAL_RCC_LSI_DISABLE(); + + /* Get Start Tick*/ + tickstart = HAL_GetTick(); + + /* Wait till LSI is disabled */ + while (READ_BIT(RCC->CSR, RCC_CSR_LSIRDY) != 0U) + { + if ((HAL_GetTick() - tickstart) > LSI_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + } + } + } + /*------------------------------ LSE Configuration -------------------------*/ + if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSE) == RCC_OSCILLATORTYPE_LSE) + { + FlagStatus pwrclkchanged = RESET; + + /* Check the parameters */ + assert_param(IS_RCC_LSE(RCC_OscInitStruct->LSEState)); + + /* When the LSE is used as system clock, it is not allowed disable it */ + if (__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_LSE) + { + if ((((RCC->BDCR) & RCC_BDCR_LSERDY) != 0U) && (RCC_OscInitStruct->LSEState == RCC_LSE_OFF)) + { + return HAL_ERROR; + } + } + else + { + /* Update LSE configuration in Backup Domain control register */ + /* Requires to enable write access to Backup Domain of necessary */ + if (__HAL_RCC_PWR_IS_CLK_DISABLED() != 0U) + { + __HAL_RCC_PWR_CLK_ENABLE(); + pwrclkchanged = SET; + } + + if (HAL_IS_BIT_CLR(PWR->CR1, PWR_CR1_DBP)) + { + /* Enable write access to Backup domain */ + SET_BIT(PWR->CR1, PWR_CR1_DBP); + + /* Wait for Backup domain Write protection disable */ + tickstart = HAL_GetTick(); + + while (HAL_IS_BIT_CLR(PWR->CR1, PWR_CR1_DBP)) + { + if ((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + } + + /* Set the new LSE configuration -----------------------------------------*/ + __HAL_RCC_LSE_CONFIG(RCC_OscInitStruct->LSEState); + + /* Check the LSE State */ + if (RCC_OscInitStruct->LSEState != RCC_LSE_OFF) + { + /* Get Start Tick*/ + tickstart = HAL_GetTick(); + + /* Wait till LSE is ready */ + while (READ_BIT(RCC->BDCR, RCC_BDCR_LSERDY) == 0U) + { + if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + } + else + { + /* Get Start Tick*/ + tickstart = HAL_GetTick(); + + /* Wait till LSE is disabled */ + while (READ_BIT(RCC->BDCR, RCC_BDCR_LSERDY) != 0U) + { + if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + } + + /* Restore clock configuration if changed */ + if (pwrclkchanged == SET) + { + __HAL_RCC_PWR_CLK_DISABLE(); + } + } + } +#if defined(RCC_HSI48_SUPPORT) + /*------------------------------ HSI48 Configuration -----------------------*/ + if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSI48) == RCC_OSCILLATORTYPE_HSI48) + { + /* Check the parameters */ + assert_param(IS_RCC_HSI48(RCC_OscInitStruct->HSI48State)); + + /* Check the LSI State */ + if (RCC_OscInitStruct->HSI48State != RCC_HSI48_OFF) + { + /* Enable the Internal Low Speed oscillator (HSI48). */ + __HAL_RCC_HSI48_ENABLE(); + + /* Get Start Tick*/ + tickstart = HAL_GetTick(); + + /* Wait till HSI48 is ready */ + while (READ_BIT(RCC->CR, RCC_CR_HSI48RDY) == 0U) + { + if ((HAL_GetTick() - tickstart) > HSI48_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + } + else + { + /* Disable the Internal Low Speed oscillator (HSI48). */ + __HAL_RCC_HSI48_DISABLE(); + + /* Get Start Tick*/ + tickstart = HAL_GetTick(); + + /* Wait till HSI48 is disabled */ + while (READ_BIT(RCC->CR, RCC_CR_HSI48RDY) != 0U) + { + if ((HAL_GetTick() - tickstart) > HSI48_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + } + } +#endif /* RCC_HSI48_SUPPORT */ + /*-------------------------------- PLL Configuration -----------------------*/ + /* Check the parameters */ + assert_param(IS_RCC_PLL(RCC_OscInitStruct->PLL.PLLState)); + + if (RCC_OscInitStruct->PLL.PLLState != RCC_PLL_NONE) + { + /* Check if the PLL is used as system clock or not */ + if (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_PLLCLK) + { + if (RCC_OscInitStruct->PLL.PLLState == RCC_PLL_ON) + { + /* Check the parameters */ + assert_param(IS_RCC_PLLSOURCE(RCC_OscInitStruct->PLL.PLLSource)); + assert_param(IS_RCC_PLLM_VALUE(RCC_OscInitStruct->PLL.PLLM)); + assert_param(IS_RCC_PLLN_VALUE(RCC_OscInitStruct->PLL.PLLN)); + assert_param(IS_RCC_PLLP_VALUE(RCC_OscInitStruct->PLL.PLLP)); +#if defined(RCC_PLLQ_SUPPORT) + assert_param(IS_RCC_PLLQ_VALUE(RCC_OscInitStruct->PLL.PLLQ)); +#endif /* RCC_PLLQ_SUPPORT */ + assert_param(IS_RCC_PLLR_VALUE(RCC_OscInitStruct->PLL.PLLR)); + + /* Disable the main PLL. */ + __HAL_RCC_PLL_DISABLE(); + + /* Get Start Tick*/ + tickstart = HAL_GetTick(); + + /* Wait till PLL is ready */ + while (READ_BIT(RCC->CR, RCC_CR_PLLRDY) != 0U) + { + if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + + /* Configure the main PLL clock source, multiplication and division factors. */ +#if defined(RCC_PLLQ_SUPPORT) + __HAL_RCC_PLL_CONFIG(RCC_OscInitStruct->PLL.PLLSource, + RCC_OscInitStruct->PLL.PLLM, + RCC_OscInitStruct->PLL.PLLN, + RCC_OscInitStruct->PLL.PLLP, + RCC_OscInitStruct->PLL.PLLQ, + RCC_OscInitStruct->PLL.PLLR); +#else /* !RCC_PLLQ_SUPPORT */ + __HAL_RCC_PLL_CONFIG(RCC_OscInitStruct->PLL.PLLSource, + RCC_OscInitStruct->PLL.PLLM, + RCC_OscInitStruct->PLL.PLLN, + RCC_OscInitStruct->PLL.PLLP, + RCC_OscInitStruct->PLL.PLLR); +#endif /* RCC_PLLQ_SUPPORT */ + + /* Enable the main PLL. */ + __HAL_RCC_PLL_ENABLE(); + + /* Enable PLLR Clock output. */ + __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLLRCLK); + + /* Get Start Tick*/ + tickstart = HAL_GetTick(); + + /* Wait till PLL is ready */ + while (READ_BIT(RCC->CR, RCC_CR_PLLRDY) == 0U) + { + if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + } + else + { + /* Disable the main PLL. */ + __HAL_RCC_PLL_DISABLE(); + + /* Get Start Tick*/ + tickstart = HAL_GetTick(); + + /* Wait till PLL is disabled */ + while (READ_BIT(RCC->CR, RCC_CR_PLLRDY) != 0U) + { + if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + /* Unselect main PLL clock source and disable main PLL outputs to save power */ +#if defined(RCC_PLLQ_SUPPORT) + RCC->PLLCFGR &= ~(RCC_PLLCFGR_PLLSRC | RCC_PLLCFGR_PLLPEN | RCC_PLLCFGR_PLLQEN | RCC_PLLCFGR_PLLREN); +#else + RCC->PLLCFGR &= ~(RCC_PLLCFGR_PLLSRC | RCC_PLLCFGR_PLLPEN | RCC_PLLCFGR_PLLREN); +#endif /* RCC_PLLQ_SUPPORT */ + } + } + else + { + /* Check if there is a request to disable the PLL used as System clock source */ + if ((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_OFF) + { + return HAL_ERROR; + } + else + { + /* Do not return HAL_ERROR if request repeats the current configuration */ + temp_pllckcfg = RCC->PLLCFGR; + if ((READ_BIT(temp_pllckcfg, RCC_PLLCFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) || + (READ_BIT(temp_pllckcfg, RCC_PLLCFGR_PLLM) != RCC_OscInitStruct->PLL.PLLM) || + (READ_BIT(temp_pllckcfg, RCC_PLLCFGR_PLLN) != (RCC_OscInitStruct->PLL.PLLN << RCC_PLLCFGR_PLLN_Pos)) || + (READ_BIT(temp_pllckcfg, RCC_PLLCFGR_PLLP) != RCC_OscInitStruct->PLL.PLLP) || +#if defined (RCC_PLLQ_SUPPORT) + (READ_BIT(temp_pllckcfg, RCC_PLLCFGR_PLLQ) != RCC_OscInitStruct->PLL.PLLQ) || +#endif /* RCC_PLLQ_SUPPORT */ + (READ_BIT(temp_pllckcfg, RCC_PLLCFGR_PLLR) != RCC_OscInitStruct->PLL.PLLR)) + { + return HAL_ERROR; + } + } + } + } + return HAL_OK; +} + +/** + * @brief Initialize the CPU, AHB and APB buses clocks according to the specified + * parameters in the RCC_ClkInitStruct. + * @param RCC_ClkInitStruct pointer to a @ref RCC_ClkInitTypeDef structure that + * contains the configuration information for the RCC peripheral. + * @param FLatency FLASH Latency + * This parameter can be one of the following values: + * @arg FLASH_LATENCY_0 FLASH 0 Latency cycle + * @arg FLASH_LATENCY_1 FLASH 1 Latency cycle + * + * @note The SystemCoreClock CMSIS variable is used to store System Clock Frequency + * and updated by @ref HAL_RCC_GetHCLKFreq() function called within this function + * + * @note The HSI is used by default as system clock source after + * startup from Reset, wake-up from STANDBY mode. After restart from Reset, + * the HSI frequency is set to 8 Mhz, then it reaches its default value 16 MHz. + * + * @note The HSI can be selected as system clock source after + * from STOP modes or in case of failure of the HSE used directly or indirectly + * as system clock (if the Clock Security System CSS is enabled). + * + * @note The LSI can be selected as system clock source after + * in case of failure of the LSE used directly or indirectly + * as system clock (if the Clock Security System LSECSS is enabled). + * + * @note A switch from one clock source to another occurs only if the target + * clock source is ready (clock stable after startup delay or PLL locked). + * If a clock source which is not yet ready is selected, the switch will + * occur when the clock source is ready. + * + * @note You can use @ref HAL_RCC_GetClockConfig() function to know which clock is + * currently used as system clock source. + * + * @note Depending on the device voltage range, the software has to set correctly + * HPRE[3:0] bits to ensure that HCLK not exceed the maximum allowed frequency + * (for more details refer to section above "Initialization/de-initialization functions") + * @retval None + */ +HAL_StatusTypeDef HAL_RCC_ClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t FLatency) +{ + uint32_t tickstart; + + /* Check Null pointer */ + if (RCC_ClkInitStruct == NULL) + { + return HAL_ERROR; + } + + /* Check the parameters */ + assert_param(IS_RCC_CLOCKTYPE(RCC_ClkInitStruct->ClockType)); + assert_param(IS_FLASH_LATENCY(FLatency)); + + /* To correctly read data from FLASH memory, the number of wait states (LATENCY) + must be correctly programmed according to the frequency of the FLASH clock + (HCLK) and the supply voltage of the device. */ + + /* Increasing the number of wait states because of higher CPU frequency */ + if (FLatency > __HAL_FLASH_GET_LATENCY()) + { + /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */ + __HAL_FLASH_SET_LATENCY(FLatency); + + /* Check that the new number of wait states is taken into account to access the Flash + memory by polling the FLASH_ACR register */ + tickstart = HAL_GetTick(); + + while ((FLASH->ACR & FLASH_ACR_LATENCY) != FLatency) + { + if ((HAL_GetTick() - tickstart) > CLOCKSWITCH_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + } + + /*-------------------------- HCLK Configuration --------------------------*/ + if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_HCLK) == RCC_CLOCKTYPE_HCLK) + { + /* Set the highest APB divider in order to ensure that we do not go through + a non-spec phase whatever we decrease or increase HCLK. */ + if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1) + { + MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE, RCC_HCLK_DIV16); + } + + /* Set the new HCLK clock divider */ + assert_param(IS_RCC_HCLK(RCC_ClkInitStruct->AHBCLKDivider)); + MODIFY_REG(RCC->CFGR, RCC_CFGR_HPRE, RCC_ClkInitStruct->AHBCLKDivider); + } + + /*------------------------- SYSCLK Configuration ---------------------------*/ + if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_SYSCLK) == RCC_CLOCKTYPE_SYSCLK) + { + assert_param(IS_RCC_SYSCLKSOURCE(RCC_ClkInitStruct->SYSCLKSource)); + + /* HSE is selected as System Clock Source */ + if (RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSE) + { + /* Check the HSE ready flag */ + if (READ_BIT(RCC->CR, RCC_CR_HSERDY) == 0U) + { + return HAL_ERROR; + } + } + /* PLL is selected as System Clock Source */ + else if (RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK) + { + /* Check the PLL ready flag */ + if (READ_BIT(RCC->CR, RCC_CR_PLLRDY) == 0U) + { + return HAL_ERROR; + } + } + /* HSI is selected as System Clock Source */ + else if (RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSI) + { + /* Check the HSI ready flag */ + if (READ_BIT(RCC->CR, RCC_CR_HSIRDY) == 0U) + { + return HAL_ERROR; + } + } + /* LSI is selected as System Clock Source */ + else if (RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_LSI) + { + /* Check the LSI ready flag */ + if (READ_BIT(RCC->CSR, RCC_CSR_LSIRDY) == 0U) + { + return HAL_ERROR; + } + } + /* LSE is selected as System Clock Source */ + else + { + /* Check the LSE ready flag */ + if (READ_BIT(RCC->BDCR, RCC_BDCR_LSERDY) == 0U) + { + return HAL_ERROR; + } + } + MODIFY_REG(RCC->CFGR, RCC_CFGR_SW, RCC_ClkInitStruct->SYSCLKSource); + + /* Get Start Tick*/ + tickstart = HAL_GetTick(); + + while (__HAL_RCC_GET_SYSCLK_SOURCE() != (RCC_ClkInitStruct->SYSCLKSource << RCC_CFGR_SWS_Pos)) + { + if ((HAL_GetTick() - tickstart) > CLOCKSWITCH_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + } + + /* Decreasing the number of wait states because of lower CPU frequency */ + if (FLatency < __HAL_FLASH_GET_LATENCY()) + { + /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */ + __HAL_FLASH_SET_LATENCY(FLatency); + + /* Check that the new number of wait states is taken into account to access the Flash + memory by polling the FLASH_ACR register */ + tickstart = HAL_GetTick(); + + while ((FLASH->ACR & FLASH_ACR_LATENCY) != FLatency) + { + if ((HAL_GetTick() - tickstart) > CLOCKSWITCH_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + } + + /*-------------------------- PCLK1 Configuration ---------------------------*/ + if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1) + { + assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB1CLKDivider)); + MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE, RCC_ClkInitStruct->APB1CLKDivider); + } + + /* Update the SystemCoreClock global variable */ + SystemCoreClock = (HAL_RCC_GetSysClockFreq() >> ((AHBPrescTable[(RCC->CFGR & RCC_CFGR_HPRE) >> RCC_CFGR_HPRE_Pos]) & 0x1FU)); + + /* Configure the source of time base considering new system clocks settings*/ + return HAL_InitTick(uwTickPrio); +} + +/** + * @} + */ + +/** @defgroup RCC_Exported_Functions_Group2 Peripheral Control functions + * @brief RCC clocks control functions + * +@verbatim + =============================================================================== + ##### Peripheral Control functions ##### + =============================================================================== + [..] + This subsection provides a set of functions allowing to: + + (+) Output clock to MCO pin. + (+) Retrieve current clock frequencies. + (+) Enable the Clock Security System. + +@endverbatim + * @{ + */ + +/** + * @brief Select the clock source to output on MCO1 pin(PA8) or MC02 pin (PA10)(*). + * @note PA8, PA10(*) should be configured in alternate function mode. + * @param RCC_MCOx specifies the output direction for the clock source. + * For STM32G0xx family this parameter can have only one value: + * @arg @ref RCC_MCO1 Clock source to output on MCO1 pin(PA8). + * @arg @ref RCC_MCO2 Clock source to output on MCO2 pin(PA10)(*). + * @param RCC_MCOSource specifies the clock source to output. + * This parameter can be one of the following values: + * @arg @ref RCC_MCO1SOURCE_NOCLOCK MCO output disabled, no clock on MCO + * @arg @ref RCC_MCO1SOURCE_SYSCLK system clock selected as MCO source + * @arg @ref RCC_MCO1SOURCE_HSI48 HSI48 clock selected as MCO source for devices with HSI48(*) + * @arg @ref RCC_MCO1SOURCE_HSI HSI clock selected as MCO source + * @arg @ref RCC_MCO1SOURCE_HSE HSE clock selected as MCO sourcee + * @arg @ref RCC_MCO1SOURCE_PLLCLK main PLLR clock selected as MCO source + * @arg @ref RCC_MCO1SOURCE_LSI LSI clock selected as MCO source + * @arg @ref RCC_MCO1SOURCE_LSE LSE clock selected as MCO source + * @arg @ref RCC_MCO1SOURCE_PLLPCLK PLLP clock selected as MCO1 source(*) + * @arg @ref RCC_MCO1SOURCE_PLLQCLK PLLQ clock selected as MCO1 source(*) + * @arg @ref RCC_MCO1SOURCE_RTCCLK RTC clock selected as MCO1 source(*) + * @arg @ref RCC_MCO1SOURCE_RTC_WKUP RTC_Wakeup selected as MCO1 source(*) + * @arg @ref RCC_MCO2SOURCE_NOCLOCK MCO2 output disabled, no clock on MCO2(*) + * @arg @ref RCC_MCO2SOURCE_SYSCLK system clock selected as MCO2 source(*) + * @arg @ref RCC_MCO2SOURCE_HSI48 HSI48 clock selected as MCO2 source for devices with HSI48(*) + * @arg @ref RCC_MCO2SOURCE_HSI HSI clock selected as MCO2 source(*) + * @arg @ref RCC_MCO2SOURCE_HSE HSE clock selected as MCO2 source(*) + * @arg @ref RCC_MCO2SOURCE_PLLCLK main PLLR clock selected as MCO2 source(*) + * @arg @ref RCC_MCO2SOURCE_LSI LSI clock selected as MCO2 source(*) + * @arg @ref RCC_MCO2SOURCE_LSE LSE clock selected as MCO2 source(*) + * @arg @ref RCC_MCO2SOURCE_PLLPCLK PLLP clock selected as MCO2 source(*) + * @arg @ref RCC_MCO2SOURCE_PLLQCLK PLLQ clock selected as MCO2 source(*) + * @arg @ref RCC_MCO2SOURCE_RTCCLK RTC clock selected as MCO2 source(*) + * @arg @ref RCC_MCO2SOURCE_RTC_WKUP RTC_Wakeup selected as MCO2 source(*) + * @param RCC_MCODiv specifies the MCO prescaler. + * This parameter can be one of the following values: + * @arg @ref RCC_MCODIV_1 no division applied to MCO clock + * @arg @ref RCC_MCODIV_2 division by 2 applied to MCO clock + * @arg @ref RCC_MCODIV_4 division by 4 applied to MCO clock + * @arg @ref RCC_MCODIV_8 division by 8 applied to MCO clock + * @arg @ref RCC_MCODIV_16 division by 16 applied to MCO clock + * @arg @ref RCC_MCODIV_32 division by 32 applied to MCO clock + * @arg @ref RCC_MCODIV_64 division by 64 applied to MCO clock + * @arg @ref RCC_MCODIV_128 division by 128 applied to MCO clock + * @arg @ref RCC_MCO2DIV_1 no division applied to MCO2 clock(*) + * @arg @ref RCC_MCO2DIV_2 division by 2 applied to MCO2 clock(*) + * @arg @ref RCC_MCO2DIV_4 division by 4 applied to MCO2 clock(*) + * @arg @ref RCC_MCO2DIV_8 division by 8 applied to MCO2 clock(*) + * @arg @ref RCC_MCO2DIV_16 division by 16 applied to MCO2 clock(*) + * @arg @ref RCC_MCO2DIV_32 division by 32 applied to MCO2 clock(*) + * @arg @ref RCC_MCO2DIV_64 division by 64 applied to MCO2 clock(*) + * @arg @ref RCC_MCO2DIV_128 division by 128 applied to MCO2 clock(*) + * @arg @ref RCC_MCO2DIV_256 division by 256 applied to MCO2 clock(*) + * @arg @ref RCC_MCO2DIV_512 division by 512 applied to MCO2 clock(*) + * @arg @ref RCC_MCO2DIV_1024 division by 1024 applied to MCO2 clock(*) + * + * (*) Feature not available on all devices of the family + * @retval None + */ +void HAL_RCC_MCOConfig(uint32_t RCC_MCOx, uint32_t RCC_MCOSource, uint32_t RCC_MCODiv) +{ + GPIO_InitTypeDef GPIO_InitStruct; + + /* Check the parameters */ + assert_param(IS_RCC_MCO(RCC_MCOx)); + + /* Common GPIO init parameters */ + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + GPIO_InitStruct.Pull = GPIO_NOPULL; + + if (RCC_MCOx == RCC_MCO1) + { + assert_param(IS_RCC_MCODIV(RCC_MCODiv)); + assert_param(IS_RCC_MCO1SOURCE(RCC_MCOSource)); + /* MCO1 Clock Enable */ + MCO1_CLK_ENABLE(); + /* Configure the MCO1 pin in alternate function mode */ + GPIO_InitStruct.Pin = MCO1_PIN; + GPIO_InitStruct.Alternate = GPIO_AF0_MCO; + HAL_GPIO_Init(MCO1_GPIO_PORT, &GPIO_InitStruct); + /* Mask MCOSEL[] and MCOPRE[] bits then set MCO clock source and prescaler */ + MODIFY_REG(RCC->CFGR, (RCC_CFGR_MCOSEL | RCC_CFGR_MCOPRE), (RCC_MCOSource | RCC_MCODiv)); + } +#if defined(RCC_MCO2_SUPPORT) + else if (RCC_MCOx == RCC_MCO2) + { + assert_param(IS_RCC_MCO2DIV(RCC_MCODiv)); + assert_param(IS_RCC_MCO2SOURCE(RCC_MCOSource)); + /* MCO2 Clock Enable */ + MCO2_CLK_ENABLE(); + /* Configure the MCO2 pin in alternate function mode */ + GPIO_InitStruct.Pin = MCO2_PIN; + GPIO_InitStruct.Alternate = GPIO_AF3_MCO2; + HAL_GPIO_Init(MCO2_GPIO_PORT, &GPIO_InitStruct); + /* Mask MCOSEL[] and MCOPRE[] bits then set MCO clock source and prescaler */ + MODIFY_REG(RCC->CFGR, (RCC_CFGR_MCO2SEL | RCC_CFGR_MCO2PRE), (RCC_MCOSource | RCC_MCODiv)); + } +#endif /* RCC_MCO2_SUPPORT */ +} + +/** + * @brief Return the SYSCLK frequency. + * + * @note The system frequency computed by this function is not the real + * frequency in the chip. It is calculated based on the predefined + * constant and the selected clock source: + * @note If SYSCLK source is HSI, function returns values based on HSI_VALUE/HSIDIV(*) + * @note If SYSCLK source is HSE, function returns values based on HSE_VALUE(**) + * @note If SYSCLK source is PLL, function returns values based on HSE_VALUE(**), + * or HSI_VALUE(*) multiplied/divided by the PLL factors. + * @note If SYSCLK source is LSI, function returns values based on LSI_VALUE(***) + * @note If SYSCLK source is LSE, function returns values based on LSE_VALUE(****) + * @note (*) HSI_VALUE is a constant defined in stm32g0xx_hal_conf.h file (default value + * 16 MHz) but the real value may vary depending on the variations + * in voltage and temperature. + * @note (**) HSE_VALUE is a constant defined in stm32g0xx_hal_conf.h file (default value + * 8 MHz), user has to ensure that HSE_VALUE is same as the real + * frequency of the crystal used. Otherwise, this function may + * have wrong result. + * @note (***) LSE_VALUE is a constant defined in stm32g0xx_hal_conf.h file (default value + * 32768 Hz). + * @note (****) LSI_VALUE is a constant defined in stm32g0xx_hal_conf.h file (default value + * 32000 Hz). + * + * @note The result of this function could be not correct when using fractional + * value for HSE crystal. + * + * @note This function can be used by the user application to compute the + * baudrate for the communication peripherals or configure other parameters. + * + * @note Each time SYSCLK changes, this function must be called to update the + * right SYSCLK value. Otherwise, any configuration based on this function will be incorrect. + * + * + * @retval SYSCLK frequency + */ +uint32_t HAL_RCC_GetSysClockFreq(void) +{ + uint32_t pllvco, pllsource, pllr, pllm, hsidiv; + uint32_t sysclockfreq; + + if (__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_HSI) + { + /* HSISYS can be derived for HSI16 */ + hsidiv = (1UL << ((READ_BIT(RCC->CR, RCC_CR_HSIDIV)) >> RCC_CR_HSIDIV_Pos)); + + /* HSI used as system clock source */ + sysclockfreq = (HSI_VALUE / hsidiv); + } + else if (__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_HSE) + { + /* HSE used as system clock source */ + sysclockfreq = HSE_VALUE; + } + else if (__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_PLLCLK) + { + /* PLL used as system clock source */ + + /* PLL_VCO = ((HSE_VALUE or HSI_VALUE)/ PLLM) * PLLN + SYSCLK = PLL_VCO / PLLR + */ + pllsource = (RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC); + pllm = ((RCC->PLLCFGR & RCC_PLLCFGR_PLLM) >> RCC_PLLCFGR_PLLM_Pos) + 1U ; + + switch (pllsource) + { + case RCC_PLLSOURCE_HSE: /* HSE used as PLL clock source */ + pllvco = (HSE_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos); + break; + + case RCC_PLLSOURCE_HSI: /* HSI16 used as PLL clock source */ + default: /* HSI16 used as PLL clock source */ + pllvco = (HSI_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos) ; + break; + } + pllr = (((RCC->PLLCFGR & RCC_PLLCFGR_PLLR) >> RCC_PLLCFGR_PLLR_Pos) + 1U); + sysclockfreq = pllvco / pllr; + } + else if (__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_LSE) + { + /* LSE used as system clock source */ + sysclockfreq = LSE_VALUE; + } + else if (__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_LSI) + { + /* LSI used as system clock source */ + sysclockfreq = LSI_VALUE; + } + else + { + sysclockfreq = 0U; + } + + return sysclockfreq; +} + +/** + * @brief Return the HCLK frequency. + * @note Each time HCLK changes, this function must be called to update the + * right HCLK value. Otherwise, any configuration based on this function will be incorrect. + * + * @note The SystemCoreClock CMSIS variable is used to store System Clock Frequency. + * @retval HCLK frequency in Hz + */ +uint32_t HAL_RCC_GetHCLKFreq(void) +{ + return SystemCoreClock; +} + +/** + * @brief Return the PCLK1 frequency. + * @note Each time PCLK1 changes, this function must be called to update the + * right PCLK1 value. Otherwise, any configuration based on this function will be incorrect. + * @retval PCLK1 frequency in Hz + */ +uint32_t HAL_RCC_GetPCLK1Freq(void) +{ + /* Get HCLK source and Compute PCLK1 frequency ---------------------------*/ + return ((uint32_t)(__LL_RCC_CALC_PCLK1_FREQ(HAL_RCC_GetHCLKFreq(), LL_RCC_GetAPB1Prescaler()))); +} + +/** + * @brief Configure the RCC_OscInitStruct according to the internal + * RCC configuration registers. + * @param RCC_OscInitStruct pointer to an RCC_OscInitTypeDef structure that + * will be configured. + * @retval None + */ +void HAL_RCC_GetOscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct) +{ + /* Check the parameters */ + assert_param(RCC_OscInitStruct != (void *)NULL); + + /* Set all possible values for the Oscillator type parameter ---------------*/ +#if defined(RCC_HSI48_SUPPORT) + RCC_OscInitStruct->OscillatorType = RCC_OSCILLATORTYPE_HSE | RCC_OSCILLATORTYPE_HSI | \ + RCC_OSCILLATORTYPE_LSE | RCC_OSCILLATORTYPE_LSI | RCC_OSCILLATORTYPE_HSI48; +#else + RCC_OscInitStruct->OscillatorType = RCC_OSCILLATORTYPE_HSE | RCC_OSCILLATORTYPE_HSI | \ + RCC_OSCILLATORTYPE_LSE | RCC_OSCILLATORTYPE_LSI; +#endif /* RCC_HSI48_SUPPORT */ + + /* Get the HSE configuration -----------------------------------------------*/ + if ((RCC->CR & RCC_CR_HSEBYP) == RCC_CR_HSEBYP) + { + RCC_OscInitStruct->HSEState = RCC_HSE_BYPASS; + } + else if ((RCC->CR & RCC_CR_HSEON) == RCC_CR_HSEON) + { + RCC_OscInitStruct->HSEState = RCC_HSE_ON; + } + else + { + RCC_OscInitStruct->HSEState = RCC_HSE_OFF; + } + + /* Get the HSI configuration -----------------------------------------------*/ + if ((RCC->CR & RCC_CR_HSION) == RCC_CR_HSION) + { + RCC_OscInitStruct->HSIState = RCC_HSI_ON; + } + else + { + RCC_OscInitStruct->HSIState = RCC_HSI_OFF; + } + RCC_OscInitStruct->HSICalibrationValue = ((RCC->ICSCR & RCC_ICSCR_HSITRIM) >> RCC_ICSCR_HSITRIM_Pos); + RCC_OscInitStruct->HSIDiv = (RCC->CR & RCC_CR_HSIDIV); + + /* Get the LSE configuration -----------------------------------------------*/ + if ((RCC->BDCR & RCC_BDCR_LSEBYP) == RCC_BDCR_LSEBYP) + { + RCC_OscInitStruct->LSEState = RCC_LSE_BYPASS; + } + else if ((RCC->BDCR & RCC_BDCR_LSEON) == RCC_BDCR_LSEON) + { + RCC_OscInitStruct->LSEState = RCC_LSE_ON; + } + else + { + RCC_OscInitStruct->LSEState = RCC_LSE_OFF; + } + + /* Get the LSI configuration -----------------------------------------------*/ + if ((RCC->CSR & RCC_CSR_LSION) == RCC_CSR_LSION) + { + RCC_OscInitStruct->LSIState = RCC_LSI_ON; + } + else + { + RCC_OscInitStruct->LSIState = RCC_LSI_OFF; + } + +#if defined(RCC_HSI48_SUPPORT) + /* Get the HSI48 configuration ---------------------------------------------*/ + if (READ_BIT(RCC->CR, RCC_CR_HSI48ON) == RCC_CR_HSI48ON) + { + RCC_OscInitStruct->HSI48State = RCC_HSI48_ON; + } + else + { + RCC_OscInitStruct->HSI48State = RCC_HSI48_OFF; + } +#endif /* RCC_HSI48_SUPPORT */ + + /* Get the PLL configuration -----------------------------------------------*/ + if ((RCC->CR & RCC_CR_PLLON) == RCC_CR_PLLON) + { + RCC_OscInitStruct->PLL.PLLState = RCC_PLL_ON; + } + else + { + RCC_OscInitStruct->PLL.PLLState = RCC_PLL_OFF; + } + RCC_OscInitStruct->PLL.PLLSource = (RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC); + RCC_OscInitStruct->PLL.PLLM = (RCC->PLLCFGR & RCC_PLLCFGR_PLLM); + RCC_OscInitStruct->PLL.PLLN = ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos); + RCC_OscInitStruct->PLL.PLLP = (RCC->PLLCFGR & RCC_PLLCFGR_PLLP); +#if defined(RCC_PLLQ_SUPPORT) + RCC_OscInitStruct->PLL.PLLQ = (RCC->PLLCFGR & RCC_PLLCFGR_PLLQ); +#endif /* RCC_PLLQ_SUPPORT */ + RCC_OscInitStruct->PLL.PLLR = (RCC->PLLCFGR & RCC_PLLCFGR_PLLR); +} + +/** + * @brief Configure the RCC_ClkInitStruct according to the internal + * RCC configuration registers. + * @param RCC_ClkInitStruct Pointer to a @ref RCC_ClkInitTypeDef structure that + * will be configured. + * @param pFLatency Pointer on the Flash Latency. + * @retval None + */ +void HAL_RCC_GetClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t *pFLatency) +{ + /* Check the parameters */ + assert_param(RCC_ClkInitStruct != (void *)NULL); + assert_param(pFLatency != (void *)NULL); + + /* Set all possible values for the Clock type parameter --------------------*/ + RCC_ClkInitStruct->ClockType = RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1; + + /* Get the SYSCLK configuration --------------------------------------------*/ + RCC_ClkInitStruct->SYSCLKSource = (uint32_t)(RCC->CFGR & RCC_CFGR_SW); + + /* Get the HCLK configuration ----------------------------------------------*/ + RCC_ClkInitStruct->AHBCLKDivider = (uint32_t)(RCC->CFGR & RCC_CFGR_HPRE); + + /* Get the APB1 configuration ----------------------------------------------*/ + RCC_ClkInitStruct->APB1CLKDivider = (uint32_t)(RCC->CFGR & RCC_CFGR_PPRE); + + + /* Get the Flash Wait State (Latency) configuration ------------------------*/ + *pFLatency = (uint32_t)(FLASH->ACR & FLASH_ACR_LATENCY); +} + +/** + * @brief Enable the Clock Security System. + * @note If a failure is detected on the HSE oscillator clock, this oscillator + * is automatically disabled and an interrupt is generated to inform the + * software about the failure (Clock Security System Interrupt, CSSI), + * allowing the MCU to perform rescue operations. The CSSI is linked to + * the Cortex-M0+ NMI (Non-Maskable Interrupt) exception vector. + * @note The Clock Security System can only be cleared by reset. + * @retval None + */ +void HAL_RCC_EnableCSS(void) +{ + SET_BIT(RCC->CR, RCC_CR_CSSON) ; +} + +/** + * @brief Enable the LSE Clock Security System. + * @note If a failure is detected on the LSE oscillator clock, this oscillator + * is automatically disabled and an interrupt is generated to inform the + * software about the failure (Clock Security System Interrupt, CSSI), + * allowing the MCU to perform rescue operations. The CSSI is linked to + * the Cortex-M0+ NMI (Non-Maskable Interrupt) exception vector. + * @note The LSE Clock Security System Detection bit (LSECSSD in BDCR) can only be + * cleared by a backup domain reset. + * @retval None + */ +void HAL_RCC_EnableLSECSS(void) +{ + SET_BIT(RCC->BDCR, RCC_BDCR_LSECSSON) ; +} + +/** + * @brief Disable the LSE Clock Security System. + * @note After LSE failure detection, the software must disable LSECSSON + * @note The Clock Security System can only be cleared by reset otherwise. + * @retval None + */ +void HAL_RCC_DisableLSECSS(void) +{ + CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSECSSON) ; +} + +/** + * @brief Handle the RCC Clock Security System interrupt request. + * @note This API should be called under the NMI_Handler(). + * @retval None + */ +void HAL_RCC_NMI_IRQHandler(void) +{ + uint32_t itflag = RCC->CIFR; + + /* Clear interrupt flags related to CSS */ + RCC->CICR = (itflag & (RCC_CIFR_CSSF | RCC_CIFR_LSECSSF)); + + /* Check RCC CSSF interrupt flag */ + if ((itflag & RCC_CIFR_CSSF) != 0x00u) + { + /* RCC Clock Security System interrupt user callback */ + HAL_RCC_CSSCallback(); + } + + /* Check RCC LSECSSF interrupt flag */ + if ((itflag & RCC_CIFR_LSECSSF) != 0x00u) + { + /* RCC Clock Security System interrupt user callback */ + HAL_RCC_LSECSSCallback(); + } +} + +/** + * @brief Handle the RCC HSE Clock Security System interrupt callback. + * @retval none + */ +__weak void HAL_RCC_CSSCallback(void) +{ + /* NOTE : This function should not be modified, when the callback is needed, + the @ref HAL_RCC_CSSCallback should be implemented in the user file + */ +} + +/** + * @brief RCC LSE Clock Security System interrupt callback. + * @retval none + */ +__weak void HAL_RCC_LSECSSCallback(void) +{ + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_RCC_LSECSSCallback should be implemented in the user file + */ +} + +/** + * @brief Get and clear reset flags + * @note Once reset flags are retrieved, this API is clearing them in order + * to isolate next reset reason. + * @retval can be a combination of @ref RCC_Reset_Flag + */ +uint32_t HAL_RCC_GetResetSource(void) +{ + uint32_t reset; + + /* Get all reset flags */ + reset = RCC->CSR & RCC_RESET_FLAG_ALL; + + /* Clear Reset flags */ + RCC->CSR |= RCC_CSR_RMVF; + + return reset; +} + +/** + * @} + */ + +/** + * @} + */ + +#endif /* HAL_RCC_MODULE_ENABLED */ +/** + * @} + */ + +/** + * @} + */ + diff --git a/firmware/Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc_ex.c b/firmware/Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc_ex.c new file mode 100644 index 0000000..a8b6d37 --- /dev/null +++ b/firmware/Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc_ex.c @@ -0,0 +1,1678 @@ +/** + ****************************************************************************** + * @file stm32g0xx_hal_rcc_ex.c + * @author MCD Application Team + * @brief Extended RCC HAL module driver. + * This file provides firmware functions to manage the following + * functionalities RCC extended peripheral: + * + Extended Peripheral Control functions + * + Extended Clock management functions + * + Extended Clock Recovery System Control functions + * + ****************************************************************************** + * @attention + * + * Copyright (c) 2018 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file in + * the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32g0xx_hal.h" + +/** @addtogroup STM32G0xx_HAL_Driver + * @{ + */ + +/** @defgroup RCCEx RCCEx + * @brief RCC Extended HAL module driver + * @{ + */ + +#ifdef HAL_RCC_MODULE_ENABLED + +/* Private typedef -----------------------------------------------------------*/ +/* Private defines -----------------------------------------------------------*/ +/** @defgroup RCCEx_Private_Constants RCCEx Private Constants + * @{ + */ +#define PLL_TIMEOUT_VALUE 100U /* 100 ms (minimum Tick + 1) */ + +#define LSCO_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE() +#define LSCO_GPIO_PORT GPIOA +#define LSCO_PIN GPIO_PIN_2 +/** + * @} + */ + +/* Private macros ------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ +/* Exported functions --------------------------------------------------------*/ + +/** @defgroup RCCEx_Exported_Functions RCCEx Exported Functions + * @{ + */ + +/** @defgroup RCCEx_Exported_Functions_Group1 Extended Peripheral Control functions + * @brief Extended Peripheral Control functions + * +@verbatim + =============================================================================== + ##### Extended Peripheral Control functions ##### + =============================================================================== + [..] + This subsection provides a set of functions allowing to control the RCC Clocks + frequencies. + [..] + (@) Important note: Care must be taken when HAL_RCCEx_PeriphCLKConfig() is used to + select the RTC clock source; in this case the Backup domain will be reset in + order to modify the RTC Clock source, as consequence RTC registers (including + the backup registers) and RCC_BDCR register are set to their reset values. + +@endverbatim + * @{ + */ +/** + * @brief Initialize the RCC extended peripherals clocks according to the specified + * parameters in the @ref RCC_PeriphCLKInitTypeDef. + * @param PeriphClkInit pointer to a @ref RCC_PeriphCLKInitTypeDef structure that + * contains a field PeriphClockSelection which can be a combination of the following values: + * @arg @ref RCC_PERIPHCLK_RTC RTC peripheral clock + * @arg @ref RCC_PERIPHCLK_ADC ADC peripheral clock + * @arg @ref RCC_PERIPHCLK_I2C1 I2C1 peripheral clock + * @arg @ref RCC_PERIPHCLK_I2C2 I2C2 peripheral clock (2) + * @arg @ref RCC_PERIPHCLK_I2S1 I2S1 peripheral clock + * @arg @ref RCC_PERIPHCLK_I2S2 I2S2 peripheral clock (1) + * @arg @ref RCC_PERIPHCLK_USART1 USART1 peripheral clock + * @arg @ref RCC_PERIPHCLK_CEC CEC peripheral clock (1) + * @arg @ref RCC_PERIPHCLK_LPTIM1 LPTIM1 peripheral clock (1) + * @arg @ref RCC_PERIPHCLK_LPTIM2 LPTIM2 peripheral clock (1) + * @arg @ref RCC_PERIPHCLK_LPUART1 LPUART1 peripheral clock (1) + * @arg @ref RCC_PERIPHCLK_LPUART2 LPUART2 peripheral clock (1) + * @arg @ref RCC_PERIPHCLK_RNG RNG peripheral clock (1) + * @arg @ref RCC_PERIPHCLK_TIM1 TIM1 peripheral clock (1)(2) + * @arg @ref RCC_PERIPHCLK_TIM15 TIM15 peripheral clock (1)(2) + * @arg @ref RCC_PERIPHCLK_USART2 USART2 peripheral clock (2) + * @arg @ref RCC_PERIPHCLK_USART3 USART3 peripheral clock (2) + * @arg @ref RCC_PERIPHCLK_FDCAN FDCAN peripheral clock (1) + * @arg @ref RCC_PERIPHCLK_USB USB peripheral clock (1) + * + * @note (1) Peripherals are not available on all devices + * @note (2) Peripherals clock selection is not available on all devices + * @note Care must be taken when @ref HAL_RCCEx_PeriphCLKConfig() is used to select + * the RTC clock source: in this case the access to Backup domain is enabled. + * + * @retval HAL status + */ +HAL_StatusTypeDef HAL_RCCEx_PeriphCLKConfig(RCC_PeriphCLKInitTypeDef *PeriphClkInit) +{ + uint32_t tmpregister; + uint32_t tickstart; + HAL_StatusTypeDef ret = HAL_OK; /* Intermediate status */ + HAL_StatusTypeDef status = HAL_OK; /* Final status */ + + /* Check the parameters */ + assert_param(IS_RCC_PERIPHCLOCK(PeriphClkInit->PeriphClockSelection)); + + /*-------------------------- RTC clock source configuration ----------------------*/ + if ((PeriphClkInit->PeriphClockSelection & RCC_PERIPHCLK_RTC) == RCC_PERIPHCLK_RTC) + { + FlagStatus pwrclkchanged = RESET; + + /* Check for RTC Parameters used to output RTCCLK */ + assert_param(IS_RCC_RTCCLKSOURCE(PeriphClkInit->RTCClockSelection)); + + /* Enable Power Clock */ + if (__HAL_RCC_PWR_IS_CLK_DISABLED()) + { + __HAL_RCC_PWR_CLK_ENABLE(); + pwrclkchanged = SET; + } + + /* Enable write access to Backup domain */ + SET_BIT(PWR->CR1, PWR_CR1_DBP); + + /* Wait for Backup domain Write protection disable */ + tickstart = HAL_GetTick(); + + while ((PWR->CR1 & PWR_CR1_DBP) == 0U) + { + if ((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE) + { + ret = HAL_TIMEOUT; + break; + } + } + + if (ret == HAL_OK) + { + /* Reset the Backup domain only if the RTC Clock source selection is modified from default */ + tmpregister = READ_BIT(RCC->BDCR, RCC_BDCR_RTCSEL); + + /* Reset the Backup domain only if the RTC Clock source selection is modified */ + if ((tmpregister != RCC_RTCCLKSOURCE_NONE) && (tmpregister != PeriphClkInit->RTCClockSelection)) + { + /* Store the content of BDCR register before the reset of Backup Domain */ + tmpregister = READ_BIT(RCC->BDCR, ~(RCC_BDCR_RTCSEL)); + /* RTC Clock selection can be changed only if the Backup Domain is reset */ + __HAL_RCC_BACKUPRESET_FORCE(); + __HAL_RCC_BACKUPRESET_RELEASE(); + /* Restore the Content of BDCR register */ + RCC->BDCR = tmpregister; + } + + /* Wait for LSE reactivation if LSE was enable prior to Backup Domain reset */ + if (HAL_IS_BIT_SET(tmpregister, RCC_BDCR_LSEON)) + { + /* Get Start Tick*/ + tickstart = HAL_GetTick(); + + /* Wait till LSE is ready */ + while (READ_BIT(RCC->BDCR, RCC_BDCR_LSERDY) == 0U) + { + if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE) + { + ret = HAL_TIMEOUT; + break; + } + } + } + + if (ret == HAL_OK) + { + /* Apply new RTC clock source selection */ + __HAL_RCC_RTC_CONFIG(PeriphClkInit->RTCClockSelection); + } + else + { + /* set overall return value */ + status = ret; + } + } + else + { + /* set overall return value */ + status = ret; + } + + /* Restore clock configuration if changed */ + if (pwrclkchanged == SET) + { + __HAL_RCC_PWR_CLK_DISABLE(); + } + } + + /*-------------------------- USART1 clock source configuration -------------------*/ + if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USART1) == RCC_PERIPHCLK_USART1) + { + /* Check the parameters */ + assert_param(IS_RCC_USART1CLKSOURCE(PeriphClkInit->Usart1ClockSelection)); + + /* Configure the USART1 clock source */ + __HAL_RCC_USART1_CONFIG(PeriphClkInit->Usart1ClockSelection); + } + +#if defined(RCC_CCIPR_USART2SEL) + /*-------------------------- USART2 clock source configuration -------------------*/ + if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USART2) == RCC_PERIPHCLK_USART2) + { + /* Check the parameters */ + assert_param(IS_RCC_USART2CLKSOURCE(PeriphClkInit->Usart2ClockSelection)); + + /* Configure the USART2 clock source */ + __HAL_RCC_USART2_CONFIG(PeriphClkInit->Usart2ClockSelection); + } +#endif /* RCC_CCIPR_USART2SEL */ + +#if defined(RCC_CCIPR_USART3SEL) + /*-------------------------- USART3 clock source configuration -------------------*/ + if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USART3) == RCC_PERIPHCLK_USART3) + { + /* Check the parameters */ + assert_param(IS_RCC_USART3CLKSOURCE(PeriphClkInit->Usart3ClockSelection)); + + /* Configure the USART3 clock source */ + __HAL_RCC_USART3_CONFIG(PeriphClkInit->Usart3ClockSelection); + } +#endif /* RCC_CCIPR_USART3SEL */ + +#if defined(LPUART1) + /*-------------------------- LPUART1 clock source configuration ------------------*/ + if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_LPUART1) == RCC_PERIPHCLK_LPUART1) + { + /* Check the parameters */ + assert_param(IS_RCC_LPUART1CLKSOURCE(PeriphClkInit->Lpuart1ClockSelection)); + + /* Configure the LPUART1 clock source */ + __HAL_RCC_LPUART1_CONFIG(PeriphClkInit->Lpuart1ClockSelection); + } +#endif /* LPUART1 */ + +#if defined(LPUART2) + /*-------------------------- LPUART2 clock source configuration ------------------*/ + if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_LPUART2) == RCC_PERIPHCLK_LPUART2) + { + /* Check the parameters */ + assert_param(IS_RCC_LPUART2CLKSOURCE(PeriphClkInit->Lpuart2ClockSelection)); + + /* Configure the LPUART clock source */ + __HAL_RCC_LPUART2_CONFIG(PeriphClkInit->Lpuart2ClockSelection); + } +#endif /* LPUART2 */ + +#if defined(RCC_CCIPR_LPTIM1SEL) + /*-------------------------- LPTIM1 clock source configuration -------------------*/ + if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_LPTIM1) == (RCC_PERIPHCLK_LPTIM1)) + { + assert_param(IS_RCC_LPTIM1CLKSOURCE(PeriphClkInit->Lptim1ClockSelection)); + __HAL_RCC_LPTIM1_CONFIG(PeriphClkInit->Lptim1ClockSelection); + } +#endif /* RCC_CCIPR_LPTIM1SEL */ + +#if defined(RCC_CCIPR_LPTIM2SEL) + /*-------------------------- LPTIM2 clock source configuration -------------------*/ + if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_LPTIM2) == (RCC_PERIPHCLK_LPTIM2)) + { + assert_param(IS_RCC_LPTIM2CLKSOURCE(PeriphClkInit->Lptim2ClockSelection)); + __HAL_RCC_LPTIM2_CONFIG(PeriphClkInit->Lptim2ClockSelection); + } +#endif /* RCC_CCIPR_LPTIM2SEL */ + + /*-------------------------- I2C1 clock source configuration ---------------------*/ + if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2C1) == RCC_PERIPHCLK_I2C1) + { + /* Check the parameters */ + assert_param(IS_RCC_I2C1CLKSOURCE(PeriphClkInit->I2c1ClockSelection)); + + /* Configure the I2C1 clock source */ + __HAL_RCC_I2C1_CONFIG(PeriphClkInit->I2c1ClockSelection); + } + +#if defined(RCC_CCIPR_I2C2SEL) + /*-------------------------- I2C2 clock source configuration ---------------------*/ + if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2C2) == RCC_PERIPHCLK_I2C2) + { + /* Check the parameters */ + assert_param(IS_RCC_I2C2CLKSOURCE(PeriphClkInit->I2c2ClockSelection)); + + /* Configure the I2C2 clock source */ + __HAL_RCC_I2C2_CONFIG(PeriphClkInit->I2c2ClockSelection); + } +#endif /* (RCC_CCIPR_I2C2SEL */ + +#if defined(RNG) + /*-------------------------- RNG clock source configuration ----------------------*/ + if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_RNG) == (RCC_PERIPHCLK_RNG)) + { + assert_param(IS_RCC_RNGCLKSOURCE(PeriphClkInit->RngClockSelection)); + __HAL_RCC_RNG_CONFIG(PeriphClkInit->RngClockSelection); + + if (PeriphClkInit->RngClockSelection == RCC_RNGCLKSOURCE_PLL) + { + /* Enable PLLQCLK output */ + __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLLQCLK); + } + } +#endif /* RNG */ + /*-------------------------- ADC clock source configuration ----------------------*/ + if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_ADC) == RCC_PERIPHCLK_ADC) + { + /* Check the parameters */ + assert_param(IS_RCC_ADCCLKSOURCE(PeriphClkInit->AdcClockSelection)); + + /* Configure the ADC interface clock source */ + __HAL_RCC_ADC_CONFIG(PeriphClkInit->AdcClockSelection); + + if (PeriphClkInit->AdcClockSelection == RCC_ADCCLKSOURCE_PLLADC) + { + /* Enable PLLPCLK output */ + __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLLPCLK); + } + } + +#if defined(CEC) + /*-------------------------- CEC clock source configuration ---------------------*/ + if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_CEC) == RCC_PERIPHCLK_CEC) + { + /* Check the parameters */ + assert_param(IS_RCC_CECCLKSOURCE(PeriphClkInit->CecClockSelection)); + + /* Configure the CEC clock source */ + __HAL_RCC_CEC_CONFIG(PeriphClkInit->CecClockSelection); + } +#endif /* CEC */ + +#if defined(RCC_CCIPR_TIM1SEL) + /*-------------------------- TIM1 clock source configuration ---------------------*/ + if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_TIM1) == RCC_PERIPHCLK_TIM1) + { + /* Check the parameters */ + assert_param(IS_RCC_TIM1CLKSOURCE(PeriphClkInit->Tim1ClockSelection)); + + /* Configure the TIM1 clock source */ + __HAL_RCC_TIM1_CONFIG(PeriphClkInit->Tim1ClockSelection); + + if (PeriphClkInit->Tim1ClockSelection == RCC_TIM1CLKSOURCE_PLL) + { + /* Enable PLLQCLK output */ + __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLLQCLK); + } + } +#endif /* RCC_CCIPR_TIM1SEL */ + +#if defined(RCC_CCIPR_TIM15SEL) + /*-------------------------- TIM15 clock source configuration ---------------------*/ + if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_TIM15) == RCC_PERIPHCLK_TIM15) + { + /* Check the parameters */ + assert_param(IS_RCC_TIM15CLKSOURCE(PeriphClkInit->Tim15ClockSelection)); + + /* Configure the TIM15 clock source */ + __HAL_RCC_TIM15_CONFIG(PeriphClkInit->Tim15ClockSelection); + + if (PeriphClkInit->Tim15ClockSelection == RCC_TIM15CLKSOURCE_PLL) + { + /* Enable PLLQCLK output */ + __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLLQCLK); + } + } +#endif /* RCC_CCIPR_TIM15SEL */ + + /*-------------------------- I2S1 clock source configuration ---------------------*/ + if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2S1) == RCC_PERIPHCLK_I2S1) + { + /* Check the parameters */ + assert_param(IS_RCC_I2S1CLKSOURCE(PeriphClkInit->I2s1ClockSelection)); + + /* Configure the I2S1 clock source */ + __HAL_RCC_I2S1_CONFIG(PeriphClkInit->I2s1ClockSelection); + + if (PeriphClkInit->I2s1ClockSelection == RCC_I2S1CLKSOURCE_PLL) + { + /* Enable PLLPCLK output */ + __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLLPCLK); + } + } + +#if defined(RCC_CCIPR2_I2S2SEL) + /*-------------------------- I2S2 clock source configuration ---------------------*/ + if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2S2) == RCC_PERIPHCLK_I2S2) + { + /* Check the parameters */ + assert_param(IS_RCC_I2S2CLKSOURCE(PeriphClkInit->I2s2ClockSelection)); + + /* Configure the I2S2 clock source */ + __HAL_RCC_I2S2_CONFIG(PeriphClkInit->I2s2ClockSelection); + + if (PeriphClkInit->I2s2ClockSelection == RCC_I2S2CLKSOURCE_PLL) + { + /* Enable PLLPCLK output */ + __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLLPCLK); + } + } +#endif /* RCC_CCIPR2_I2S2SEL */ + +#if defined(STM32G0C1xx) || defined(STM32G0B1xx) || defined(STM32G0B0xx) + /*-------------------------- USB clock source configuration ---------------------*/ + if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USB) == RCC_PERIPHCLK_USB) + { + /* Check the parameters */ + assert_param(IS_RCC_USBCLKSOURCE(PeriphClkInit->UsbClockSelection)); + + /* Configure the USB clock source */ + __HAL_RCC_USB_CONFIG(PeriphClkInit->UsbClockSelection); + + if (PeriphClkInit->UsbClockSelection == RCC_USBCLKSOURCE_PLL) + { + /* Enable PLLQCLK output */ + __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLLQCLK); + } + } +#endif /* STM32G0C1xx || STM32G0B1xx || STM32G0B0xx */ + +#if defined(FDCAN1) || defined(FDCAN2) + /*-------------------------- FDCAN clock source configuration ---------------------*/ + if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_FDCAN) == RCC_PERIPHCLK_FDCAN) + { + /* Check the parameters */ + assert_param(IS_RCC_FDCANCLKSOURCE(PeriphClkInit->FdcanClockSelection)); + + /* Configure the FDCAN clock source */ + __HAL_RCC_FDCAN_CONFIG(PeriphClkInit->FdcanClockSelection); + + if (PeriphClkInit->FdcanClockSelection == RCC_FDCANCLKSOURCE_PLL) + { + /* Enable PLLQCLK output */ + __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLLQCLK); + } + } +#endif /* FDCAN1 || FDCAN2 */ + + return status; +} + +/** + * @brief Get the RCC_ClkInitStruct according to the internal RCC configuration registers. + * @param PeriphClkInit pointer to an RCC_PeriphCLKInitTypeDef structure that + * returns the configuration information for the Extended Peripherals + * clocks: I2C1, I2S1, USART1, RTC, ADC, + * LPTIM1 (1), LPTIM2 (1), TIM1 (2), TIM15 (1)(2), USART2 (2), LPUART1 (1), CEC (1) and RNG (1) + * @note (1) Peripheral is not available on all devices + * @note (2) Peripheral clock selection is not available on all devices + * @retval None + */ +void HAL_RCCEx_GetPeriphCLKConfig(RCC_PeriphCLKInitTypeDef *PeriphClkInit) +{ + /* Set all possible values for the extended clock type parameter------------*/ + PeriphClkInit->PeriphClockSelection = RCC_PERIPHCLK_USART1 | RCC_PERIPHCLK_I2C1 | RCC_PERIPHCLK_I2S1 | \ + RCC_PERIPHCLK_ADC | RCC_PERIPHCLK_RTC ; + +#if defined(RCC_CCIPR_LPTIM1SEL) && defined(RCC_CCIPR_LPTIM2SEL) + PeriphClkInit->PeriphClockSelection |= RCC_PERIPHCLK_LPTIM2 | RCC_PERIPHCLK_LPTIM1; +#endif /* RCC_CCIPR_LPTIM1SEL && RCC_CCIPR_LPTIM2SEL */ +#if defined(RCC_CCIPR_RNGSEL) + PeriphClkInit->PeriphClockSelection |= RCC_PERIPHCLK_RNG; +#endif /* RCC_CCIPR_RNGSEL */ +#if defined(RCC_CCIPR_LPUART1SEL) + PeriphClkInit->PeriphClockSelection |= RCC_PERIPHCLK_LPUART1; +#endif /* RCC_CCIPR_LPUART1SEL */ +#if defined(RCC_CCIPR_LPUART2SEL) + PeriphClkInit->PeriphClockSelection |= RCC_PERIPHCLK_LPUART2; +#endif /* RCC_CCIPR_LPUART2SEL */ +#if defined(RCC_CCIPR_CECSEL) + PeriphClkInit->PeriphClockSelection |= RCC_PERIPHCLK_CEC; +#endif /* RCC_CCIPR_CECSEL */ +#if defined(RCC_CCIPR_TIM1SEL) + PeriphClkInit->PeriphClockSelection |= RCC_PERIPHCLK_TIM1; +#endif /* RCC_CCIPR_TIM1SEL */ +#if defined(RCC_CCIPR_TIM15SEL) + PeriphClkInit->PeriphClockSelection |= RCC_PERIPHCLK_TIM15; +#endif /* RCC_CCIPR_TIM15SEL */ +#if defined(RCC_CCIPR_USART2SEL) + PeriphClkInit->PeriphClockSelection |= RCC_PERIPHCLK_USART2; +#endif /* RCC_CCIPR_USART2SEL */ +#if defined(RCC_CCIPR_USART3SEL) + PeriphClkInit->PeriphClockSelection |= RCC_PERIPHCLK_USART3; +#endif /* RCC_CCIPR_USART3SEL */ +#if defined(RCC_CCIPR_I2C2SEL) + PeriphClkInit->PeriphClockSelection |= RCC_PERIPHCLK_I2C2; +#endif /* RCC_CCIPR_I2C2SEL */ +#if defined(RCC_CCIPR2_I2S2SEL) + PeriphClkInit->PeriphClockSelection |= RCC_PERIPHCLK_I2S2; +#endif /* RCC_CCIPR2_I2S2SEL */ +#if defined(RCC_CCIPR2_USBSEL) + PeriphClkInit->PeriphClockSelection |= RCC_PERIPHCLK_USB; +#endif /* RCC_CCIPR2_USBSEL */ +#if defined(RCC_CCIPR2_FDCANSEL) + PeriphClkInit->PeriphClockSelection |= RCC_PERIPHCLK_FDCAN; +#endif /* RCC_CCIPR_FDCANSEL */ + /* Get the USART1 clock source ---------------------------------------------*/ + PeriphClkInit->Usart1ClockSelection = __HAL_RCC_GET_USART1_SOURCE(); +#if defined(RCC_CCIPR_USART2SEL) + /* Get the USART2 clock source ---------------------------------------------*/ + PeriphClkInit->Usart2ClockSelection = __HAL_RCC_GET_USART2_SOURCE(); +#endif /* RCC_CCIPR_USART2SEL */ +#if defined(RCC_CCIPR_USART3SEL) + /* Get the USART3 clock source ---------------------------------------------*/ + PeriphClkInit->Usart3ClockSelection = __HAL_RCC_GET_USART3_SOURCE(); +#endif /* RCC_CCIPR_USART3SEL */ +#if defined(RCC_CCIPR_LPUART1SEL) + /* Get the LPUART1 clock source --------------------------------------------*/ + PeriphClkInit->Lpuart1ClockSelection = __HAL_RCC_GET_LPUART1_SOURCE(); +#endif /* RCC_CCIPR_LPUART1SEL */ +#if defined(RCC_CCIPR_LPUART2SEL) + /* Get the LPUART2 clock source --------------------------------------------*/ + PeriphClkInit->Lpuart2ClockSelection = __HAL_RCC_GET_LPUART2_SOURCE(); +#endif /* RCC_CCIPR_LPUART2SEL */ + /* Get the I2C1 clock source -----------------------------------------------*/ + PeriphClkInit->I2c1ClockSelection = __HAL_RCC_GET_I2C1_SOURCE(); +#if defined(RCC_CCIPR_I2C2SEL) + /* Get the I2C2 clock source -----------------------------------------------*/ + PeriphClkInit->I2c2ClockSelection = __HAL_RCC_GET_I2C2_SOURCE(); +#endif /* RCC_CCIPR_I2C2SEL */ +#if defined(RCC_CCIPR_LPTIM1SEL) + /* Get the LPTIM1 clock source ---------------------------------------------*/ + PeriphClkInit->Lptim1ClockSelection = __HAL_RCC_GET_LPTIM1_SOURCE(); +#endif /* RCC_CCIPR_LPTIM1SEL */ +#if defined(RCC_CCIPR_LPTIM2SEL) + /* Get the LPTIM2 clock source ---------------------------------------------*/ + PeriphClkInit->Lptim2ClockSelection = __HAL_RCC_GET_LPTIM2_SOURCE(); +#endif /* RCC_CCIPR_LPTIM2SEL */ +#if defined(RCC_CCIPR_TIM1SEL) + /* Get the TIM1 clock source ---------------------------------------------*/ + PeriphClkInit->Tim1ClockSelection = __HAL_RCC_GET_TIM1_SOURCE(); +#endif /* RCC_CCIPR_TIM1SEL */ +#if defined(RCC_CCIPR_TIM15SEL) + /* Get the TIM15 clock source ---------------------------------------------*/ + PeriphClkInit->Tim15ClockSelection = __HAL_RCC_GET_TIM15_SOURCE(); +#endif /* RCC_CCIPR_TIM15SEL */ + /* Get the RTC clock source ------------------------------------------------*/ + PeriphClkInit->RTCClockSelection = __HAL_RCC_GET_RTC_SOURCE(); +#if defined(RCC_CCIPR_RNGSEL) + /* Get the RNG clock source ------------------------------------------------*/ + PeriphClkInit->RngClockSelection = __HAL_RCC_GET_RNG_SOURCE(); +#endif /* RCC_CCIPR_RNGSEL */ + /* Get the ADC clock source -----------------------------------------------*/ + PeriphClkInit->AdcClockSelection = __HAL_RCC_GET_ADC_SOURCE(); +#if defined(RCC_CCIPR_CECSEL) + /* Get the CEC clock source -----------------------------------------------*/ + PeriphClkInit->CecClockSelection = __HAL_RCC_GET_CEC_SOURCE(); +#endif /* RCC_CCIPR_CECSEL */ +#if defined(RCC_CCIPR2_USBSEL) + /* Get the USB clock source -----------------------------------------------*/ + PeriphClkInit->UsbClockSelection = __HAL_RCC_GET_USB_SOURCE(); +#endif /* RCC_CCIPR2_USBSEL */ +#if defined(RCC_CCIPR2_FDCANSEL) + /* Get the FDCAN clock source -----------------------------------------------*/ + PeriphClkInit->FdcanClockSelection = __HAL_RCC_GET_FDCAN_SOURCE(); +#endif /* RCC_CCIPR2_FDCANSEL */ + /* Get the I2S1 clock source -----------------------------------------------*/ + PeriphClkInit->I2s1ClockSelection = __HAL_RCC_GET_I2S1_SOURCE(); +#if defined(RCC_CCIPR2_I2S2SEL) + /* Get the I2S2 clock source -----------------------------------------------*/ + PeriphClkInit->I2s2ClockSelection = __HAL_RCC_GET_I2S2_SOURCE(); +#endif /* RCC_CCIPR2_I2S2SEL */ +} + +/** + * @brief Return the peripheral clock frequency for peripherals with clock source from PLL + * @note Return 0 if peripheral clock identifier not managed by this API + * @param PeriphClk Peripheral clock identifier + * This parameter can be one of the following values: + * @arg @ref RCC_PERIPHCLK_RTC RTC peripheral clock + * @arg @ref RCC_PERIPHCLK_ADC ADC peripheral clock + * @arg @ref RCC_PERIPHCLK_I2C1 I2C1 peripheral clock + * @arg @ref RCC_PERIPHCLK_I2C2 I2C2 peripheral clock (1) + * @arg @ref RCC_PERIPHCLK_I2S1 I2S1 peripheral clock + * @arg @ref RCC_PERIPHCLK_I2S2 I2S2 peripheral clock (1) + * @arg @ref RCC_PERIPHCLK_USART1 USART1 peripheral clock + * @arg @ref RCC_PERIPHCLK_USART2 USART2 peripheral clock (1)(2) + * @arg @ref RCC_PERIPHCLK_USART3 USART3 peripheral clock (1) + * @arg @ref RCC_PERIPHCLK_RNG RNG peripheral clock (1) + * @arg @ref RCC_PERIPHCLK_TIM15 TIM15 peripheral clock (1)(2) + * @arg @ref RCC_PERIPHCLK_TIM1 TIM1 peripheral clock (1)(2) + * @arg @ref RCC_PERIPHCLK_LPTIM1 LPTIM1 peripheral clock (1) + * @arg @ref RCC_PERIPHCLK_LPTIM2 LPTIM2 peripheral clock (1) + * @arg @ref RCC_PERIPHCLK_LPUART1 LPUART1 peripheral clock(1) + * @arg @ref RCC_PERIPHCLK_LPUART2 LPUART2 peripheral clock(1) + * @arg @ref RCC_PERIPHCLK_CEC CEC peripheral clock (1) + * @arg @ref RCC_PERIPHCLK_FDCAN FDCAN peripheral clock (1) + * @arg @ref RCC_PERIPHCLK_USB USB peripheral clock (1) + * @note (1) Peripheral not available on all devices + * @note (2) Peripheral Clock configuration not available on all devices + * @retval Frequency in Hz + */ +uint32_t HAL_RCCEx_GetPeriphCLKFreq(uint32_t PeriphClk) +{ + uint32_t frequency = 0U; + uint32_t srcclk; + uint32_t pllvco; + uint32_t plln; +#if defined(RCC_CCIPR_RNGSEL) + uint32_t rngclk; + uint32_t rngdiv; +#endif /* RCC_CCIPR_RNGSEL */ + /* Check the parameters */ + assert_param(IS_RCC_PERIPHCLOCK(PeriphClk)); + + if (PeriphClk == RCC_PERIPHCLK_RTC) + { + /* Get the current RTC source */ + srcclk = __HAL_RCC_GET_RTC_SOURCE(); + + /* Check if LSE is ready and if RTC clock selection is LSE */ + if ((HAL_IS_BIT_SET(RCC->BDCR, RCC_BDCR_LSERDY)) && (srcclk == RCC_RTCCLKSOURCE_LSE)) + { + frequency = LSE_VALUE; + } + /* Check if LSI is ready and if RTC clock selection is LSI */ + else if ((HAL_IS_BIT_SET(RCC->CSR, RCC_CSR_LSIRDY)) && (srcclk == RCC_RTCCLKSOURCE_LSI)) + { + frequency = LSI_VALUE; + } + /* Check if HSE is ready and if RTC clock selection is HSI_DIV32*/ + else if ((HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSERDY)) && (srcclk == RCC_RTCCLKSOURCE_HSE_DIV32)) + { + frequency = HSE_VALUE / 32U; + } + /* Clock not enabled for RTC*/ + else + { + /* Nothing to do as frequency already initialized to 0U */ + } + } + else + { + /* Other external peripheral clock source than RTC */ + + /* Compute PLL clock input */ + if (__HAL_RCC_GET_PLL_OSCSOURCE() == RCC_PLLSOURCE_HSI) /* HSI ? */ + { + pllvco = HSI_VALUE; + } + else if (__HAL_RCC_GET_PLL_OSCSOURCE() == RCC_PLLSOURCE_HSE) /* HSE ? */ + { + pllvco = HSE_VALUE; + } + else /* No source */ + { + pllvco = 0U; + } + + /* f(PLL Source) / PLLM */ + pllvco = (pllvco / ((READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLM) >> RCC_PLLCFGR_PLLM_Pos) + 1U)); + + switch (PeriphClk) + { +#if defined(RCC_CCIPR_RNGSEL) + case RCC_PERIPHCLK_RNG: + + srcclk = READ_BIT(RCC->CCIPR, RCC_CCIPR_RNGSEL); + if (srcclk == RCC_RNGCLKSOURCE_HSI_DIV8) /* HSI_DIV8 ? */ + { + rngclk = HSI_VALUE / 8U; + } + else if (srcclk == RCC_RNGCLKSOURCE_PLL) /* PLL ? */ + { + /* f(PLLQ) = f(VCO input) * PLLN / PLLQ */ + plln = READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos; + rngclk = (pllvco * plln) / ((READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLQ) >> RCC_PLLCFGR_PLLQ_Pos) + 1U); + } + else if (srcclk == RCC_RNGCLKSOURCE_SYSCLK) /* SYSCLK ? */ + { + rngclk = HAL_RCC_GetSysClockFreq(); + } + else /* No clock source */ + { + rngclk = 0U; + } + + rngdiv = (1UL << ((READ_BIT(RCC->CCIPR, RCC_CCIPR_RNGDIV)) >> RCC_CCIPR_RNGDIV_Pos)); + frequency = (rngclk / rngdiv); + + break; +#endif /* RCC_CCIPR_RNGSEL */ + case RCC_PERIPHCLK_USART1: + /* Get the current USART1 source */ + srcclk = __HAL_RCC_GET_USART1_SOURCE(); + + if (srcclk == RCC_USART1CLKSOURCE_PCLK1) /* PCLK1 ? */ + { + frequency = HAL_RCC_GetPCLK1Freq(); + } + else if (srcclk == RCC_USART1CLKSOURCE_SYSCLK) /* SYSCLK ? */ + { + frequency = HAL_RCC_GetSysClockFreq(); + } + else if ((HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSIRDY)) && (srcclk == RCC_USART1CLKSOURCE_HSI)) + { + frequency = HSI_VALUE; + } + else if ((HAL_IS_BIT_SET(RCC->BDCR, RCC_BDCR_LSERDY)) && (srcclk == RCC_USART1CLKSOURCE_LSE)) + { + frequency = LSE_VALUE; + } + /* Clock not enabled for USART1 */ + else + { + /* Nothing to do as frequency already initialized to 0U */ + } + break; +#if defined(RCC_CCIPR_USART2SEL) + case RCC_PERIPHCLK_USART2: + /* Get the current USART2 source */ + srcclk = __HAL_RCC_GET_USART2_SOURCE(); + + if (srcclk == RCC_USART2CLKSOURCE_PCLK1) + { + frequency = HAL_RCC_GetPCLK1Freq(); + } + else if (srcclk == RCC_USART2CLKSOURCE_SYSCLK) + { + frequency = HAL_RCC_GetSysClockFreq(); + } + else if ((HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSIRDY)) && (srcclk == RCC_USART2CLKSOURCE_HSI)) + { + frequency = HSI_VALUE; + } + else if ((HAL_IS_BIT_SET(RCC->BDCR, RCC_BDCR_LSERDY)) && (srcclk == RCC_USART2CLKSOURCE_LSE)) + { + frequency = LSE_VALUE; + } + /* Clock not enabled for USART2 */ + else + { + /* Nothing to do as frequency already initialized to 0U */ + } + break; +#endif /* RCC_CCIPR_USART2SEL */ + +#if defined(RCC_CCIPR_USART3SEL) + case RCC_PERIPHCLK_USART3: + /* Get the current USART3 source */ + srcclk = __HAL_RCC_GET_USART3_SOURCE(); + + if (srcclk == RCC_USART3CLKSOURCE_PCLK1) + { + frequency = HAL_RCC_GetPCLK1Freq(); + } + else if (srcclk == RCC_USART3CLKSOURCE_SYSCLK) + { + frequency = HAL_RCC_GetSysClockFreq(); + } + else if ((HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSIRDY)) && (srcclk == RCC_USART3CLKSOURCE_HSI)) + { + frequency = HSI_VALUE; + } + else if ((HAL_IS_BIT_SET(RCC->BDCR, RCC_BDCR_LSERDY)) && (srcclk == RCC_USART3CLKSOURCE_LSE)) + { + frequency = LSE_VALUE; + } + /* Clock not enabled for USART3 */ + else + { + /* Nothing to do as frequency already initialized to 0U */ + } + break; +#endif /* RCC_CCIPR_USART3SEL */ + +#if defined(RCC_CCIPR_CECSEL) + case RCC_PERIPHCLK_CEC: + /* Get the current CEC source */ + srcclk = __HAL_RCC_GET_CEC_SOURCE(); + + if ((HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSIRDY)) && (srcclk == RCC_CECCLKSOURCE_HSI_DIV488)) + { + frequency = (HSI_VALUE / 488U); + } + else if ((HAL_IS_BIT_SET(RCC->BDCR, RCC_BDCR_LSERDY)) && (srcclk == RCC_CECCLKSOURCE_LSE)) + { + frequency = LSE_VALUE; + } + /* Clock not enabled for CEC */ + else + { + /* Nothing to do as frequency already initialized to 0U */ + } + break; +#endif /* RCC_CCIPR_CECSEL */ + +#if defined(RCC_CCIPR_LPUART1SEL) + case RCC_PERIPHCLK_LPUART1: + /* Get the current LPUART1 source */ + srcclk = __HAL_RCC_GET_LPUART1_SOURCE(); + + if (srcclk == RCC_LPUART1CLKSOURCE_PCLK1) + { + frequency = HAL_RCC_GetPCLK1Freq(); + } + else if (srcclk == RCC_LPUART1CLKSOURCE_SYSCLK) + { + frequency = HAL_RCC_GetSysClockFreq(); + } + else if ((HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSIRDY)) && (srcclk == RCC_LPUART1CLKSOURCE_HSI)) + { + frequency = HSI_VALUE; + } + else if ((HAL_IS_BIT_SET(RCC->BDCR, RCC_BDCR_LSERDY)) && (srcclk == RCC_LPUART1CLKSOURCE_LSE)) + { + frequency = LSE_VALUE; + } + /* Clock not enabled for LPUART1 */ + else + { + /* Nothing to do as frequency already initialized to 0U */ + } + break; +#endif /* RCC_CCIPR_LPUART1SEL */ + +#if defined(RCC_CCIPR_LPUART2SEL) + case RCC_PERIPHCLK_LPUART2: + /* Get the current LPUART2 source */ + srcclk = __HAL_RCC_GET_LPUART2_SOURCE(); + + if (srcclk == RCC_LPUART2CLKSOURCE_PCLK1) + { + frequency = HAL_RCC_GetPCLK1Freq(); + } + else if (srcclk == RCC_LPUART2CLKSOURCE_SYSCLK) + { + frequency = HAL_RCC_GetSysClockFreq(); + } + else if ((HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSIRDY)) && (srcclk == RCC_LPUART2CLKSOURCE_HSI)) + { + frequency = HSI_VALUE; + } + else if ((HAL_IS_BIT_SET(RCC->BDCR, RCC_BDCR_LSERDY)) && (srcclk == RCC_LPUART2CLKSOURCE_LSE)) + { + frequency = LSE_VALUE; + } + /* Clock not enabled for LPUART2 */ + else + { + /* Nothing to do as frequency already initialized to 0U */ + } + break; +#endif /* RCC_CCIPR_LPUART2SEL */ + + case RCC_PERIPHCLK_ADC: + + srcclk = __HAL_RCC_GET_ADC_SOURCE(); + + if (srcclk == RCC_ADCCLKSOURCE_SYSCLK) + { + frequency = HAL_RCC_GetSysClockFreq(); + } + else if (srcclk == RCC_ADCCLKSOURCE_HSI) + { + frequency = HSI_VALUE; + } + else if (srcclk == RCC_ADCCLKSOURCE_PLLADC) + { + if (__HAL_RCC_GET_PLLCLKOUT_CONFIG(RCC_PLLPCLK) != 0U) + { + /* f(PLLP) = f(VCO input) * PLLN / PLLP */ + plln = READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos; + frequency = (pllvco * plln) / ((READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLP) >> RCC_PLLCFGR_PLLP_Pos) + 1U); + } + } + /* Clock not enabled for ADC */ + else + { + /* Nothing to do as frequency already initialized to 0U */ + } + break; + + case RCC_PERIPHCLK_I2C1: + /* Get the current I2C1 source */ + srcclk = __HAL_RCC_GET_I2C1_SOURCE(); + + if (srcclk == RCC_I2C1CLKSOURCE_PCLK1) + { + frequency = HAL_RCC_GetPCLK1Freq(); + } + else if (srcclk == RCC_I2C1CLKSOURCE_SYSCLK) + { + frequency = HAL_RCC_GetSysClockFreq(); + } + else if ((HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSIRDY)) && (srcclk == RCC_I2C1CLKSOURCE_HSI)) + { + frequency = HSI_VALUE; + } + /* Clock not enabled for I2C1 */ + else + { + /* Nothing to do as frequency already initialized to 0U */ + } + break; + +#if defined(RCC_CCIPR_I2C2SEL) + case RCC_PERIPHCLK_I2C2: + /* Get the current I2C2 source */ + srcclk = __HAL_RCC_GET_I2C2_SOURCE(); + + if (srcclk == RCC_I2C2CLKSOURCE_PCLK1) + { + frequency = HAL_RCC_GetPCLK1Freq(); + } + else if (srcclk == RCC_I2C2CLKSOURCE_SYSCLK) + { + frequency = HAL_RCC_GetSysClockFreq(); + } + else if ((HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSIRDY)) && (srcclk == RCC_I2C2CLKSOURCE_HSI)) + { + frequency = HSI_VALUE; + } + /* Clock not enabled for I2C2 */ + else + { + /* Nothing to do as frequency already initialized to 0U */ + } + break; +#endif /* RCC_CCIPR_I2C2SEL */ + + case RCC_PERIPHCLK_I2S1: + /* Get the current I2S1 source */ + srcclk = __HAL_RCC_GET_I2S1_SOURCE(); + + if (srcclk == RCC_I2S1CLKSOURCE_PLL) + { + if (__HAL_RCC_GET_PLLCLKOUT_CONFIG(RCC_PLLPCLK) != 0U) + { + /* f(PLLP) = f(VCO input) * PLLN / PLLP */ + plln = READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos; + frequency = (pllvco * plln) / ((READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLP) >> RCC_PLLCFGR_PLLP_Pos) + 1U); + } + } + else if (srcclk == RCC_I2S1CLKSOURCE_SYSCLK) + { + frequency = HAL_RCC_GetSysClockFreq(); + } + else if ((HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSIRDY)) && (srcclk == RCC_I2S1CLKSOURCE_HSI)) + { + frequency = HSI_VALUE; + } + else if (srcclk == RCC_I2S1CLKSOURCE_EXT) + { + /* External clock used.*/ + frequency = EXTERNAL_I2S1_CLOCK_VALUE; + } + /* Clock not enabled for I2S1 */ + else + { + /* Nothing to do as frequency already initialized to 0U */ + } + break; + +#if defined(RCC_CCIPR2_I2S2SEL) + case RCC_PERIPHCLK_I2S2: + /* Get the current I2S2 source */ + srcclk = __HAL_RCC_GET_I2S2_SOURCE(); + + if (srcclk == RCC_I2S2CLKSOURCE_PLL) + { + if (__HAL_RCC_GET_PLLCLKOUT_CONFIG(RCC_PLLPCLK) != 0U) + { + /* f(PLLP) = f(VCO input) * PLLN / PLLP */ + plln = READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos; + frequency = (pllvco * plln) / ((READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLP) >> RCC_PLLCFGR_PLLP_Pos) + 1U); + } + } + else if (srcclk == RCC_I2S2CLKSOURCE_SYSCLK) + { + frequency = HAL_RCC_GetSysClockFreq(); + } + else if ((HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSIRDY)) && (srcclk == RCC_I2S2CLKSOURCE_HSI)) + { + frequency = HSI_VALUE; + } + else if (srcclk == RCC_I2S2CLKSOURCE_EXT) + { + /* External clock used.*/ + frequency = EXTERNAL_I2S2_CLOCK_VALUE; + } + /* Clock not enabled for I2S2 */ + else + { + /* Nothing to do as frequency already initialized to 0U */ + } + break; +#endif /* RCC_CCIPR2_I2S2SEL */ + +#if defined(RCC_CCIPR_LPTIM1SEL) + case RCC_PERIPHCLK_LPTIM1: + /* Get the current LPTIM1 source */ + srcclk = __HAL_RCC_GET_LPTIM1_SOURCE(); + + if (srcclk == RCC_LPTIM1CLKSOURCE_PCLK1) + { + frequency = HAL_RCC_GetPCLK1Freq(); + } + else if ((HAL_IS_BIT_SET(RCC->CSR, RCC_CSR_LSIRDY)) && (srcclk == RCC_LPTIM1CLKSOURCE_LSI)) + { + frequency = LSI_VALUE; + } + else if ((HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSIRDY)) && (srcclk == RCC_LPTIM1CLKSOURCE_HSI)) + { + frequency = HSI_VALUE; + } + else if ((HAL_IS_BIT_SET(RCC->BDCR, RCC_BDCR_LSERDY)) && (srcclk == RCC_LPTIM1CLKSOURCE_LSE)) + { + frequency = LSE_VALUE; + } + /* Clock not enabled for LPTIM1 */ + else + { + /* Nothing to do as frequency already initialized to 0U */ + } + break; +#endif /* RCC_CCIPR_LPTIM1SEL */ + +#if defined(RCC_CCIPR_LPTIM2SEL) + case RCC_PERIPHCLK_LPTIM2: + /* Get the current LPTIM2 source */ + srcclk = __HAL_RCC_GET_LPTIM2_SOURCE(); + + if (srcclk == RCC_LPTIM2CLKSOURCE_PCLK1) + { + frequency = HAL_RCC_GetPCLK1Freq(); + } + else if ((HAL_IS_BIT_SET(RCC->CSR, RCC_CSR_LSIRDY)) && (srcclk == RCC_LPTIM2CLKSOURCE_LSI)) + { + frequency = LSI_VALUE; + } + else if ((HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSIRDY)) && (srcclk == RCC_LPTIM2CLKSOURCE_HSI)) + { + frequency = HSI_VALUE; + } + else if ((HAL_IS_BIT_SET(RCC->BDCR, RCC_BDCR_LSERDY)) && (srcclk == RCC_LPTIM2CLKSOURCE_LSE)) + { + frequency = LSE_VALUE; + } + /* Clock not enabled for LPTIM2 */ + else + { + /* Nothing to do as frequency already initialized to 0U */ + } + break; +#endif /* RCC_CCIPR_LPTIM2SEL */ + +#if defined(RCC_CCIPR_TIM1SEL) + case RCC_PERIPHCLK_TIM1: + + srcclk = READ_BIT(RCC->CCIPR, RCC_CCIPR_TIM1SEL); + + if (srcclk == RCC_TIM1CLKSOURCE_PLL) /* PLL ? */ + { + if (__HAL_RCC_GET_PLLCLKOUT_CONFIG(RCC_PLLQCLK) != 0U) + { + /* f(PLLQ) = f(VCO input) * PLLN / PLLQ */ + plln = READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos; + frequency = (pllvco * plln) / ((READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLQ) >> RCC_PLLCFGR_PLLQ_Pos) + 1U); + } + } + else if (srcclk == RCC_TIM1CLKSOURCE_PCLK1) /* PCLK1 ? */ + { + frequency = HAL_RCC_GetPCLK1Freq(); + } + else /* No clock source */ + { + /* Nothing to do as frequency already initialized to 0U */ + } + break; +#endif /* RCC_CCIPR_TIM1SEL */ + +#if defined(RCC_CCIPR_TIM15SEL) + case RCC_PERIPHCLK_TIM15: + + srcclk = READ_BIT(RCC->CCIPR, RCC_CCIPR_TIM15SEL); + + if (srcclk == RCC_TIM15CLKSOURCE_PLL) /* PLL ? */ + { + if (__HAL_RCC_GET_PLLCLKOUT_CONFIG(RCC_PLLQCLK) != 0U) + { + /* f(PLLQ) = f(VCO input) * PLLN / PLLQ */ + plln = READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos; + frequency = (pllvco * plln) / ((READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLQ) >> RCC_PLLCFGR_PLLQ_Pos) + 1U); + } + } + else if (srcclk == RCC_TIM15CLKSOURCE_PCLK1) /* PCLK1 ? */ + { + frequency = HAL_RCC_GetPCLK1Freq(); + } + else /* No clock source */ + { + /* Nothing to do as frequency already initialized to 0U */ + } + break; +#endif /* RCC_CCIPR_TIM15SEL */ + +#if defined(RCC_CCIPR2_USBSEL) + case RCC_PERIPHCLK_USB: + + srcclk = READ_BIT(RCC->CCIPR2, RCC_CCIPR2_USBSEL); + + if (srcclk == RCC_USBCLKSOURCE_PLL) /* PLL ? */ + { + if (__HAL_RCC_GET_PLLCLKOUT_CONFIG(RCC_PLLQCLK) != 0U) + { + /* f(PLLQ) = f(VCO input) * PLLN / PLLQ */ + plln = READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos; + frequency = (pllvco * plln) / ((READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLQ) >> RCC_PLLCFGR_PLLQ_Pos) + 1U); + } + } +#if defined(RCC_HSI48_SUPPORT) + else if (srcclk == RCC_USBCLKSOURCE_HSI48) /* HSI48 ? */ + { + if ((HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSI48RDY)) && (srcclk == RCC_USBCLKSOURCE_HSI48)) + { + frequency = HSI48_VALUE; + } + } +#endif /* RCC_HSI48_SUPPORT */ + else if (srcclk == RCC_USBCLKSOURCE_HSE) + { + if ((HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSERDY)) && (srcclk == RCC_USBCLKSOURCE_HSE)) + { + frequency = HSE_VALUE; + } + } + else /* No clock source */ + { + /* Nothing to do as frequency already initialized to 0U */ + } + break; +#endif /* RCC_CCIPR2_USBSEL */ + +#if defined(RCC_CCIPR2_FDCANSEL) + case RCC_PERIPHCLK_FDCAN: + + srcclk = READ_BIT(RCC->CCIPR2, RCC_CCIPR2_FDCANSEL); + + if (srcclk == RCC_FDCANCLKSOURCE_PLL) /* PLL ? */ + { + if (__HAL_RCC_GET_PLLCLKOUT_CONFIG(RCC_PLLQCLK) != 0U) + { + /* f(PLLQ) = f(VCO input) * PLLN / PLLQ */ + plln = READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos; + frequency = (pllvco * plln) / ((READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLQ) >> RCC_PLLCFGR_PLLQ_Pos) + 1U); + } + } + else if (srcclk == RCC_FDCANCLKSOURCE_PCLK1) /* PCLK1 ? */ + { + frequency = HAL_RCC_GetPCLK1Freq(); + } + else if ((HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSERDY)) && (srcclk == RCC_FDCANCLKSOURCE_HSE)) + { + frequency = HSE_VALUE; + } + else /* No clock source */ + { + /* Nothing to do as frequency already initialized to 0U */ + } + break; +#endif /* RCC_CCIPR2_FDCANSEL */ + + default: + break; + } + } + + return (frequency); +} + +/** + * @} + */ + +/** @defgroup RCCEx_Exported_Functions_Group2 Extended Clock management functions + * @brief Extended Clock management functions + * +@verbatim + =============================================================================== + ##### Extended clock management functions ##### + =============================================================================== + [..] + This subsection provides a set of functions allowing to control the + activation or deactivation of LSE CSS, Low speed clock output and + clock after wake-up from STOP mode. +@endverbatim + * @{ + */ + +/** + * @brief Select the Low Speed clock source to output on LSCO pin (PA2). + * @param LSCOSource specifies the Low Speed clock source to output. + * This parameter can be one of the following values: + * @arg @ref RCC_LSCOSOURCE_LSI LSI clock selected as LSCO source + * @arg @ref RCC_LSCOSOURCE_LSE LSE clock selected as LSCO source + * @retval None + */ +void HAL_RCCEx_EnableLSCO(uint32_t LSCOSource) +{ + GPIO_InitTypeDef GPIO_InitStruct; + FlagStatus pwrclkchanged = RESET; + FlagStatus backupchanged = RESET; + + /* Check the parameters */ + assert_param(IS_RCC_LSCOSOURCE(LSCOSource)); + + /* LSCO Pin Clock Enable */ + LSCO_CLK_ENABLE(); + + /* Configure the LSCO pin in analog mode */ + GPIO_InitStruct.Pin = LSCO_PIN; + GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(LSCO_GPIO_PORT, &GPIO_InitStruct); + + /* Update LSCOSEL clock source in Backup Domain control register */ + if (__HAL_RCC_PWR_IS_CLK_DISABLED()) + { + __HAL_RCC_PWR_CLK_ENABLE(); + pwrclkchanged = SET; + } + if (HAL_IS_BIT_CLR(PWR->CR1, PWR_CR1_DBP)) + { + HAL_PWR_EnableBkUpAccess(); + backupchanged = SET; + } + + MODIFY_REG(RCC->BDCR, RCC_BDCR_LSCOSEL | RCC_BDCR_LSCOEN, LSCOSource | RCC_BDCR_LSCOEN); + + if (backupchanged == SET) + { + HAL_PWR_DisableBkUpAccess(); + } + if (pwrclkchanged == SET) + { + __HAL_RCC_PWR_CLK_DISABLE(); + } +} + +/** + * @brief Disable the Low Speed clock output. + * @retval None + */ +void HAL_RCCEx_DisableLSCO(void) +{ + FlagStatus pwrclkchanged = RESET; + FlagStatus backupchanged = RESET; + + /* Update LSCOEN bit in Backup Domain control register */ + if (__HAL_RCC_PWR_IS_CLK_DISABLED()) + { + __HAL_RCC_PWR_CLK_ENABLE(); + pwrclkchanged = SET; + } + if (HAL_IS_BIT_CLR(PWR->CR1, PWR_CR1_DBP)) + { + /* Enable access to the backup domain */ + HAL_PWR_EnableBkUpAccess(); + backupchanged = SET; + } + + CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSCOEN); + + /* Restore previous configuration */ + if (backupchanged == SET) + { + /* Disable access to the backup domain */ + HAL_PWR_DisableBkUpAccess(); + } + if (pwrclkchanged == SET) + { + __HAL_RCC_PWR_CLK_DISABLE(); + } +} + +/** + * @} + */ + +#if defined(CRS) + +/** @defgroup RCCEx_Exported_Functions_Group3 Extended Clock Recovery System Control functions + * @brief Extended Clock Recovery System Control functions + * +@verbatim + =============================================================================== + ##### Extended Clock Recovery System Control functions ##### + =============================================================================== + [..] + For devices with Clock Recovery System feature (CRS), RCC Extension HAL driver can be used as follows: + + (#) In System clock config, HSI48 needs to be enabled + + (#) Enable CRS clock in IP MSP init which will use CRS functions + + (#) Call CRS functions as follows: + (##) Prepare synchronization configuration necessary for HSI48 calibration + (+++) Default values can be set for frequency Error Measurement (reload and error limit) + and also HSI48 oscillator smooth trimming. + (+++) Macro __HAL_RCC_CRS_RELOADVALUE_CALCULATE can be also used to calculate + directly reload value with target and synchronization frequencies values + (##) Call function HAL_RCCEx_CRSConfig which + (+++) Resets CRS registers to their default values. + (+++) Configures CRS registers with synchronization configuration + (+++) Enables automatic calibration and frequency error counter feature + Note: When using USB LPM (Link Power Management) and the device is in Sleep mode, the + periodic USB SOF will not be generated by the host. No SYNC signal will therefore be + provided to the CRS to calibrate the HSI48 on the run. To guarantee the required clock + precision after waking up from Sleep mode, the LSE or reference clock on the GPIOs + should be used as SYNC signal. + + (##) A polling function is provided to wait for complete synchronization + (+++) Call function HAL_RCCEx_CRSWaitSynchronization() + (+++) According to CRS status, user can decide to adjust again the calibration or continue + application if synchronization is OK + + (#) User can retrieve information related to synchronization in calling function + HAL_RCCEx_CRSGetSynchronizationInfo() + + (#) Regarding synchronization status and synchronization information, user can try a new calibration + in changing synchronization configuration and call again HAL_RCCEx_CRSConfig. + Note: When the SYNC event is detected during the downcounting phase (before reaching the zero value), + it means that the actual frequency is lower than the target (and so, that the TRIM value should be + incremented), while when it is detected during the upcounting phase it means that the actual frequency + is higher (and that the TRIM value should be decremented). + + (#) In interrupt mode, user can resort to the available macros (__HAL_RCC_CRS_XXX_IT). Interrupts will go + through CRS Handler (CRS_IRQn/CRS_IRQHandler) + (++) Call function HAL_RCCEx_CRSConfig() + (++) Enable CRS_IRQn (thanks to NVIC functions) + (++) Enable CRS interrupt (__HAL_RCC_CRS_ENABLE_IT) + (++) Implement CRS status management in the following user callbacks called from + HAL_RCCEx_CRS_IRQHandler(): + (+++) HAL_RCCEx_CRS_SyncOkCallback() + (+++) HAL_RCCEx_CRS_SyncWarnCallback() + (+++) HAL_RCCEx_CRS_ExpectedSyncCallback() + (+++) HAL_RCCEx_CRS_ErrorCallback() + + (#) To force a SYNC EVENT, user can use the function HAL_RCCEx_CRSSoftwareSynchronizationGenerate(). + This function can be called before calling HAL_RCCEx_CRSConfig (for instance in Systick handler) + +@endverbatim + * @{ + */ + +/** + * @brief Start automatic synchronization for polling mode + * @param pInit Pointer on RCC_CRSInitTypeDef structure + * @retval None + */ +void HAL_RCCEx_CRSConfig(RCC_CRSInitTypeDef *pInit) +{ + uint32_t value; /* no init needed */ + + /* Check the parameters */ + assert_param(IS_RCC_CRS_SYNC_DIV(pInit->Prescaler)); + assert_param(IS_RCC_CRS_SYNC_SOURCE(pInit->Source)); + assert_param(IS_RCC_CRS_SYNC_POLARITY(pInit->Polarity)); + assert_param(IS_RCC_CRS_RELOADVALUE(pInit->ReloadValue)); + assert_param(IS_RCC_CRS_ERRORLIMIT(pInit->ErrorLimitValue)); + assert_param(IS_RCC_CRS_HSI48CALIBRATION(pInit->HSI48CalibrationValue)); + + /* CONFIGURATION */ + + /* Before configuration, reset CRS registers to their default values*/ + __HAL_RCC_CRS_FORCE_RESET(); + __HAL_RCC_CRS_RELEASE_RESET(); + + /* Set the SYNCDIV[2:0] bits according to Prescaler value */ + /* Set the SYNCSRC[1:0] bits according to Source value */ + /* Set the SYNCSPOL bit according to Polarity value */ + value = (pInit->Prescaler | pInit->Source | pInit->Polarity); + /* Set the RELOAD[15:0] bits according to ReloadValue value */ + value |= pInit->ReloadValue; + /* Set the FELIM[7:0] bits according to ErrorLimitValue value */ + value |= (pInit->ErrorLimitValue << CRS_CFGR_FELIM_Pos); + WRITE_REG(CRS->CFGR, value); + + /* Adjust HSI48 oscillator smooth trimming */ + /* Set the TRIM[6:0] bits according to RCC_CRS_HSI48CalibrationValue value */ + MODIFY_REG(CRS->CR, CRS_CR_TRIM, (pInit->HSI48CalibrationValue << CRS_CR_TRIM_Pos)); + + /* START AUTOMATIC SYNCHRONIZATION*/ + + /* Enable Automatic trimming & Frequency error counter */ + SET_BIT(CRS->CR, CRS_CR_AUTOTRIMEN | CRS_CR_CEN); +} + +/** + * @brief Generate the software synchronization event + * @retval None + */ +void HAL_RCCEx_CRSSoftwareSynchronizationGenerate(void) +{ + SET_BIT(CRS->CR, CRS_CR_SWSYNC); +} + +/** + * @brief Return synchronization info + * @param pSynchroInfo Pointer on RCC_CRSSynchroInfoTypeDef structure + * @retval None + */ +void HAL_RCCEx_CRSGetSynchronizationInfo(RCC_CRSSynchroInfoTypeDef *pSynchroInfo) +{ + /* Check the parameter */ + assert_param(pSynchroInfo != (void *)NULL); + + /* Get the reload value */ + pSynchroInfo->ReloadValue = (READ_BIT(CRS->CFGR, CRS_CFGR_RELOAD)); + + /* Get HSI48 oscillator smooth trimming */ + pSynchroInfo->HSI48CalibrationValue = (READ_BIT(CRS->CR, CRS_CR_TRIM) >> CRS_CR_TRIM_Pos); + + /* Get Frequency error capture */ + pSynchroInfo->FreqErrorCapture = (READ_BIT(CRS->ISR, CRS_ISR_FECAP) >> CRS_ISR_FECAP_Pos); + + /* Get Frequency error direction */ + pSynchroInfo->FreqErrorDirection = (READ_BIT(CRS->ISR, CRS_ISR_FEDIR)); +} + +/** + * @brief Wait for CRS Synchronization status. + * @param Timeout Duration of the timeout + * @note Timeout is based on the maximum time to receive a SYNC event based on synchronization + * frequency. + * @note If Timeout set to HAL_MAX_DELAY, HAL_TIMEOUT will be never returned. + * @retval Combination of Synchronization status + * This parameter can be a combination of the following values: + * @arg @ref RCC_CRS_TIMEOUT + * @arg @ref RCC_CRS_SYNCOK + * @arg @ref RCC_CRS_SYNCWARN + * @arg @ref RCC_CRS_SYNCERR + * @arg @ref RCC_CRS_SYNCMISS + * @arg @ref RCC_CRS_TRIMOVF + */ +uint32_t HAL_RCCEx_CRSWaitSynchronization(uint32_t Timeout) +{ + uint32_t crsstatus = RCC_CRS_NONE; + uint32_t tickstart; + + /* Get timeout */ + tickstart = HAL_GetTick(); + + /* Wait for CRS flag or timeout detection */ + do + { + if (Timeout != HAL_MAX_DELAY) + { + if (((HAL_GetTick() - tickstart) > Timeout) || (Timeout == 0U)) + { + crsstatus = RCC_CRS_TIMEOUT; + } + } + /* Check CRS SYNCOK flag */ + if (__HAL_RCC_CRS_GET_FLAG(RCC_CRS_FLAG_SYNCOK)) + { + /* CRS SYNC event OK */ + crsstatus |= RCC_CRS_SYNCOK; + + /* Clear CRS SYNC event OK bit */ + __HAL_RCC_CRS_CLEAR_FLAG(RCC_CRS_FLAG_SYNCOK); + } + + /* Check CRS SYNCWARN flag */ + if (__HAL_RCC_CRS_GET_FLAG(RCC_CRS_FLAG_SYNCWARN)) + { + /* CRS SYNC warning */ + crsstatus |= RCC_CRS_SYNCWARN; + + /* Clear CRS SYNCWARN bit */ + __HAL_RCC_CRS_CLEAR_FLAG(RCC_CRS_FLAG_SYNCWARN); + } + + /* Check CRS TRIM overflow flag */ + if (__HAL_RCC_CRS_GET_FLAG(RCC_CRS_FLAG_TRIMOVF)) + { + /* CRS SYNC Error */ + crsstatus |= RCC_CRS_TRIMOVF; + + /* Clear CRS Error bit */ + __HAL_RCC_CRS_CLEAR_FLAG(RCC_CRS_FLAG_TRIMOVF); + } + + /* Check CRS Error flag */ + if (__HAL_RCC_CRS_GET_FLAG(RCC_CRS_FLAG_SYNCERR)) + { + /* CRS SYNC Error */ + crsstatus |= RCC_CRS_SYNCERR; + + /* Clear CRS Error bit */ + __HAL_RCC_CRS_CLEAR_FLAG(RCC_CRS_FLAG_SYNCERR); + } + + /* Check CRS SYNC Missed flag */ + if (__HAL_RCC_CRS_GET_FLAG(RCC_CRS_FLAG_SYNCMISS)) + { + /* CRS SYNC Missed */ + crsstatus |= RCC_CRS_SYNCMISS; + + /* Clear CRS SYNC Missed bit */ + __HAL_RCC_CRS_CLEAR_FLAG(RCC_CRS_FLAG_SYNCMISS); + } + + /* Check CRS Expected SYNC flag */ + if (__HAL_RCC_CRS_GET_FLAG(RCC_CRS_FLAG_ESYNC)) + { + /* frequency error counter reached a zero value */ + __HAL_RCC_CRS_CLEAR_FLAG(RCC_CRS_FLAG_ESYNC); + } + } while (RCC_CRS_NONE == crsstatus); + + return crsstatus; +} + +/** + * @brief Handle the Clock Recovery System interrupt request. + * @retval None + */ +void HAL_RCCEx_CRS_IRQHandler(void) +{ + uint32_t crserror = RCC_CRS_NONE; + /* Get current IT flags and IT sources values */ + uint32_t itflags = READ_REG(CRS->ISR); + uint32_t itsources = READ_REG(CRS->CR); + + /* Check CRS SYNCOK flag */ + if (((itflags & RCC_CRS_FLAG_SYNCOK) != 0U) && ((itsources & RCC_CRS_IT_SYNCOK) != 0U)) + { + /* Clear CRS SYNC event OK flag */ + WRITE_REG(CRS->ICR, CRS_ICR_SYNCOKC); + + /* user callback */ + HAL_RCCEx_CRS_SyncOkCallback(); + } + /* Check CRS SYNCWARN flag */ + else if (((itflags & RCC_CRS_FLAG_SYNCWARN) != 0U) && ((itsources & RCC_CRS_IT_SYNCWARN) != 0U)) + { + /* Clear CRS SYNCWARN flag */ + WRITE_REG(CRS->ICR, CRS_ICR_SYNCWARNC); + + /* user callback */ + HAL_RCCEx_CRS_SyncWarnCallback(); + } + /* Check CRS Expected SYNC flag */ + else if (((itflags & RCC_CRS_FLAG_ESYNC) != 0U) && ((itsources & RCC_CRS_IT_ESYNC) != 0U)) + { + /* frequency error counter reached a zero value */ + WRITE_REG(CRS->ICR, CRS_ICR_ESYNCC); + + /* user callback */ + HAL_RCCEx_CRS_ExpectedSyncCallback(); + } + /* Check CRS Error flags */ + else + { + if (((itflags & RCC_CRS_FLAG_ERR) != 0U) && ((itsources & RCC_CRS_IT_ERR) != 0U)) + { + if ((itflags & RCC_CRS_FLAG_SYNCERR) != 0U) + { + crserror |= RCC_CRS_SYNCERR; + } + if ((itflags & RCC_CRS_FLAG_SYNCMISS) != 0U) + { + crserror |= RCC_CRS_SYNCMISS; + } + if ((itflags & RCC_CRS_FLAG_TRIMOVF) != 0U) + { + crserror |= RCC_CRS_TRIMOVF; + } + + /* Clear CRS Error flags */ + WRITE_REG(CRS->ICR, CRS_ICR_ERRC); + + /* user error callback */ + HAL_RCCEx_CRS_ErrorCallback(crserror); + } + } +} + +/** + * @brief RCCEx Clock Recovery System SYNCOK interrupt callback. + * @retval none + */ +__weak void HAL_RCCEx_CRS_SyncOkCallback(void) +{ + /* NOTE : This function should not be modified, when the callback is needed, + the @ref HAL_RCCEx_CRS_SyncOkCallback should be implemented in the user file + */ +} + +/** + * @brief RCCEx Clock Recovery System SYNCWARN interrupt callback. + * @retval none + */ +__weak void HAL_RCCEx_CRS_SyncWarnCallback(void) +{ + /* NOTE : This function should not be modified, when the callback is needed, + the @ref HAL_RCCEx_CRS_SyncWarnCallback should be implemented in the user file + */ +} + +/** + * @brief RCCEx Clock Recovery System Expected SYNC interrupt callback. + * @retval none + */ +__weak void HAL_RCCEx_CRS_ExpectedSyncCallback(void) +{ + /* NOTE : This function should not be modified, when the callback is needed, + the @ref HAL_RCCEx_CRS_ExpectedSyncCallback should be implemented in the user file + */ +} + +/** + * @brief RCCEx Clock Recovery System Error interrupt callback. + * @param Error Combination of Error status. + * This parameter can be a combination of the following values: + * @arg @ref RCC_CRS_SYNCERR + * @arg @ref RCC_CRS_SYNCMISS + * @arg @ref RCC_CRS_TRIMOVF + * @retval none + */ +__weak void HAL_RCCEx_CRS_ErrorCallback(uint32_t Error) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(Error); + + /* NOTE : This function should not be modified, when the callback is needed, + the @ref HAL_RCCEx_CRS_ErrorCallback should be implemented in the user file + */ +} + +/** + * @} + */ + +#endif /* CRS */ + +/** + * @} + */ + + +/** + * @} + */ + +/** + * @} + */ + +#endif /* HAL_RCC_MODULE_ENABLED */ +/** + * @} + */ + +/** + * @} + */ + diff --git a/firmware/Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.c b/firmware/Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.c new file mode 100644 index 0000000..a56ceda --- /dev/null +++ b/firmware/Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.c @@ -0,0 +1,7925 @@ +/** + ****************************************************************************** + * @file stm32g0xx_hal_tim.c + * @author MCD Application Team + * @brief TIM HAL module driver. + * This file provides firmware functions to manage the following + * functionalities of the Timer (TIM) peripheral: + * + TIM Time Base Initialization + * + TIM Time Base Start + * + TIM Time Base Start Interruption + * + TIM Time Base Start DMA + * + TIM Output Compare/PWM Initialization + * + TIM Output Compare/PWM Channel Configuration + * + TIM Output Compare/PWM Start + * + TIM Output Compare/PWM Start Interruption + * + TIM Output Compare/PWM Start DMA + * + TIM Input Capture Initialization + * + TIM Input Capture Channel Configuration + * + TIM Input Capture Start + * + TIM Input Capture Start Interruption + * + TIM Input Capture Start DMA + * + TIM One Pulse Initialization + * + TIM One Pulse Channel Configuration + * + TIM One Pulse Start + * + TIM Encoder Interface Initialization + * + TIM Encoder Interface Start + * + TIM Encoder Interface Start Interruption + * + TIM Encoder Interface Start DMA + * + Commutation Event configuration with Interruption and DMA + * + TIM OCRef clear configuration + * + TIM External Clock configuration + ****************************************************************************** + * @attention + * + * Copyright (c) 2018 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + @verbatim + ============================================================================== + ##### TIMER Generic features ##### + ============================================================================== + [..] The Timer features include: + (#) 16-bit up, down, up/down auto-reload counter. + (#) 16-bit programmable prescaler allowing dividing (also on the fly) the + counter clock frequency either by any factor between 1 and 65536. + (#) Up to 4 independent channels for: + (++) Input Capture + (++) Output Compare + (++) PWM generation (Edge and Center-aligned Mode) + (++) One-pulse mode output + (#) Synchronization circuit to control the timer with external signals and to interconnect + several timers together. + (#) Supports incremental encoder for positioning purposes + + ##### How to use this driver ##### + ============================================================================== + [..] + (#) Initialize the TIM low level resources by implementing the following functions + depending on the selected feature: + (++) Time Base : HAL_TIM_Base_MspInit() + (++) Input Capture : HAL_TIM_IC_MspInit() + (++) Output Compare : HAL_TIM_OC_MspInit() + (++) PWM generation : HAL_TIM_PWM_MspInit() + (++) One-pulse mode output : HAL_TIM_OnePulse_MspInit() + (++) Encoder mode output : HAL_TIM_Encoder_MspInit() + + (#) Initialize the TIM low level resources : + (##) Enable the TIM interface clock using __HAL_RCC_TIMx_CLK_ENABLE(); + (##) TIM pins configuration + (+++) Enable the clock for the TIM GPIOs using the following function: + __HAL_RCC_GPIOx_CLK_ENABLE(); + (+++) Configure these TIM pins in Alternate function mode using HAL_GPIO_Init(); + + (#) The external Clock can be configured, if needed (the default clock is the + internal clock from the APBx), using the following function: + HAL_TIM_ConfigClockSource, the clock configuration should be done before + any start function. + + (#) Configure the TIM in the desired functioning mode using one of the + Initialization function of this driver: + (++) HAL_TIM_Base_Init: to use the Timer to generate a simple time base + (++) HAL_TIM_OC_Init and HAL_TIM_OC_ConfigChannel: to use the Timer to generate an + Output Compare signal. + (++) HAL_TIM_PWM_Init and HAL_TIM_PWM_ConfigChannel: to use the Timer to generate a + PWM signal. + (++) HAL_TIM_IC_Init and HAL_TIM_IC_ConfigChannel: to use the Timer to measure an + external signal. + (++) HAL_TIM_OnePulse_Init and HAL_TIM_OnePulse_ConfigChannel: to use the Timer + in One Pulse Mode. + (++) HAL_TIM_Encoder_Init: to use the Timer Encoder Interface. + + (#) Activate the TIM peripheral using one of the start functions depending from the feature used: + (++) Time Base : HAL_TIM_Base_Start(), HAL_TIM_Base_Start_DMA(), HAL_TIM_Base_Start_IT() + (++) Input Capture : HAL_TIM_IC_Start(), HAL_TIM_IC_Start_DMA(), HAL_TIM_IC_Start_IT() + (++) Output Compare : HAL_TIM_OC_Start(), HAL_TIM_OC_Start_DMA(), HAL_TIM_OC_Start_IT() + (++) PWM generation : HAL_TIM_PWM_Start(), HAL_TIM_PWM_Start_DMA(), HAL_TIM_PWM_Start_IT() + (++) One-pulse mode output : HAL_TIM_OnePulse_Start(), HAL_TIM_OnePulse_Start_IT() + (++) Encoder mode output : HAL_TIM_Encoder_Start(), HAL_TIM_Encoder_Start_DMA(), HAL_TIM_Encoder_Start_IT(). + + (#) The DMA Burst is managed with the two following functions: + HAL_TIM_DMABurst_WriteStart() + HAL_TIM_DMABurst_ReadStart() + + *** Callback registration *** + ============================================= + + [..] + The compilation define USE_HAL_TIM_REGISTER_CALLBACKS when set to 1 + allows the user to configure dynamically the driver callbacks. + + [..] + Use Function HAL_TIM_RegisterCallback() to register a callback. + HAL_TIM_RegisterCallback() takes as parameters the HAL peripheral handle, + the Callback ID and a pointer to the user callback function. + + [..] + Use function HAL_TIM_UnRegisterCallback() to reset a callback to the default + weak function. + HAL_TIM_UnRegisterCallback takes as parameters the HAL peripheral handle, + and the Callback ID. + + [..] + These functions allow to register/unregister following callbacks: + (+) Base_MspInitCallback : TIM Base Msp Init Callback. + (+) Base_MspDeInitCallback : TIM Base Msp DeInit Callback. + (+) IC_MspInitCallback : TIM IC Msp Init Callback. + (+) IC_MspDeInitCallback : TIM IC Msp DeInit Callback. + (+) OC_MspInitCallback : TIM OC Msp Init Callback. + (+) OC_MspDeInitCallback : TIM OC Msp DeInit Callback. + (+) PWM_MspInitCallback : TIM PWM Msp Init Callback. + (+) PWM_MspDeInitCallback : TIM PWM Msp DeInit Callback. + (+) OnePulse_MspInitCallback : TIM One Pulse Msp Init Callback. + (+) OnePulse_MspDeInitCallback : TIM One Pulse Msp DeInit Callback. + (+) Encoder_MspInitCallback : TIM Encoder Msp Init Callback. + (+) Encoder_MspDeInitCallback : TIM Encoder Msp DeInit Callback. + (+) HallSensor_MspInitCallback : TIM Hall Sensor Msp Init Callback. + (+) HallSensor_MspDeInitCallback : TIM Hall Sensor Msp DeInit Callback. + (+) PeriodElapsedCallback : TIM Period Elapsed Callback. + (+) PeriodElapsedHalfCpltCallback : TIM Period Elapsed half complete Callback. + (+) TriggerCallback : TIM Trigger Callback. + (+) TriggerHalfCpltCallback : TIM Trigger half complete Callback. + (+) IC_CaptureCallback : TIM Input Capture Callback. + (+) IC_CaptureHalfCpltCallback : TIM Input Capture half complete Callback. + (+) OC_DelayElapsedCallback : TIM Output Compare Delay Elapsed Callback. + (+) PWM_PulseFinishedCallback : TIM PWM Pulse Finished Callback. + (+) PWM_PulseFinishedHalfCpltCallback : TIM PWM Pulse Finished half complete Callback. + (+) ErrorCallback : TIM Error Callback. + (+) CommutationCallback : TIM Commutation Callback. + (+) CommutationHalfCpltCallback : TIM Commutation half complete Callback. + (+) BreakCallback : TIM Break Callback. + (+) Break2Callback : TIM Break2 Callback. + + [..] +By default, after the Init and when the state is HAL_TIM_STATE_RESET +all interrupt callbacks are set to the corresponding weak functions: + examples HAL_TIM_TriggerCallback(), HAL_TIM_ErrorCallback(). + + [..] + Exception done for MspInit and MspDeInit functions that are reset to the legacy weak + functionalities in the Init / DeInit only when these callbacks are null + (not registered beforehand). If not, MspInit or MspDeInit are not null, the Init / DeInit + keep and use the user MspInit / MspDeInit callbacks(registered beforehand) + + [..] + Callbacks can be registered / unregistered in HAL_TIM_STATE_READY state only. + Exception done MspInit / MspDeInit that can be registered / unregistered + in HAL_TIM_STATE_READY or HAL_TIM_STATE_RESET state, + thus registered(user) MspInit / DeInit callbacks can be used during the Init / DeInit. + In that case first register the MspInit/MspDeInit user callbacks + using HAL_TIM_RegisterCallback() before calling DeInit or Init function. + + [..] + When The compilation define USE_HAL_TIM_REGISTER_CALLBACKS is set to 0 or + not defined, the callback registration feature is not available and all callbacks + are set to the corresponding weak functions. + + @endverbatim + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32g0xx_hal.h" + +/** @addtogroup STM32G0xx_HAL_Driver + * @{ + */ + +/** @defgroup TIM TIM + * @brief TIM HAL module driver + * @{ + */ + +#ifdef HAL_TIM_MODULE_ENABLED + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/** @addtogroup TIM_Private_Constants + * @{ + */ +#define TIMx_OR1_OCREF_CLR 0x00000001U +/** + * @} + */ + +/* Private macros ------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ +/** @addtogroup TIM_Private_Functions + * @{ + */ +static void TIM_OC1_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config); +static void TIM_OC3_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config); +static void TIM_OC4_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config); +static void TIM_OC5_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config); +static void TIM_OC6_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config); +static void TIM_TI1_ConfigInputStage(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICFilter); +static void TIM_TI2_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection, + uint32_t TIM_ICFilter); +static void TIM_TI2_ConfigInputStage(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICFilter); +static void TIM_TI3_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection, + uint32_t TIM_ICFilter); +static void TIM_TI4_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection, + uint32_t TIM_ICFilter); +static void TIM_ITRx_SetConfig(TIM_TypeDef *TIMx, uint32_t InputTriggerSource); +static void TIM_DMAPeriodElapsedCplt(DMA_HandleTypeDef *hdma); +static void TIM_DMAPeriodElapsedHalfCplt(DMA_HandleTypeDef *hdma); +static void TIM_DMADelayPulseCplt(DMA_HandleTypeDef *hdma); +static void TIM_DMATriggerCplt(DMA_HandleTypeDef *hdma); +static void TIM_DMATriggerHalfCplt(DMA_HandleTypeDef *hdma); +static HAL_StatusTypeDef TIM_SlaveTimer_SetConfig(TIM_HandleTypeDef *htim, + const TIM_SlaveConfigTypeDef *sSlaveConfig); +/** + * @} + */ +/* Exported functions --------------------------------------------------------*/ + +/** @defgroup TIM_Exported_Functions TIM Exported Functions + * @{ + */ + +/** @defgroup TIM_Exported_Functions_Group1 TIM Time Base functions + * @brief Time Base functions + * +@verbatim + ============================================================================== + ##### Time Base functions ##### + ============================================================================== + [..] + This section provides functions allowing to: + (+) Initialize and configure the TIM base. + (+) De-initialize the TIM base. + (+) Start the Time Base. + (+) Stop the Time Base. + (+) Start the Time Base and enable interrupt. + (+) Stop the Time Base and disable interrupt. + (+) Start the Time Base and enable DMA transfer. + (+) Stop the Time Base and disable DMA transfer. + +@endverbatim + * @{ + */ +/** + * @brief Initializes the TIM Time base Unit according to the specified + * parameters in the TIM_HandleTypeDef and initialize the associated handle. + * @note Switching from Center Aligned counter mode to Edge counter mode (or reverse) + * requires a timer reset to avoid unexpected direction + * due to DIR bit readonly in center aligned mode. + * Ex: call @ref HAL_TIM_Base_DeInit() before HAL_TIM_Base_Init() + * @param htim TIM Base handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_Base_Init(TIM_HandleTypeDef *htim) +{ + /* Check the TIM handle allocation */ + if (htim == NULL) + { + return HAL_ERROR; + } + + /* Check the parameters */ + assert_param(IS_TIM_INSTANCE(htim->Instance)); + assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode)); + assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision)); + assert_param(IS_TIM_PERIOD(htim, htim->Init.Period)); + assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload)); + + if (htim->State == HAL_TIM_STATE_RESET) + { + /* Allocate lock resource and initialize it */ + htim->Lock = HAL_UNLOCKED; + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + /* Reset interrupt callbacks to legacy weak callbacks */ + TIM_ResetCallback(htim); + + if (htim->Base_MspInitCallback == NULL) + { + htim->Base_MspInitCallback = HAL_TIM_Base_MspInit; + } + /* Init the low level hardware : GPIO, CLOCK, NVIC */ + htim->Base_MspInitCallback(htim); +#else + /* Init the low level hardware : GPIO, CLOCK, NVIC */ + HAL_TIM_Base_MspInit(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + + /* Set the TIM state */ + htim->State = HAL_TIM_STATE_BUSY; + + /* Set the Time Base configuration */ + TIM_Base_SetConfig(htim->Instance, &htim->Init); + + /* Initialize the DMA burst operation state */ + htim->DMABurstState = HAL_DMA_BURST_STATE_READY; + + /* Initialize the TIM channels state */ + TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + + /* Initialize the TIM state*/ + htim->State = HAL_TIM_STATE_READY; + + return HAL_OK; +} + +/** + * @brief DeInitializes the TIM Base peripheral + * @param htim TIM Base handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_Base_DeInit(TIM_HandleTypeDef *htim) +{ + /* Check the parameters */ + assert_param(IS_TIM_INSTANCE(htim->Instance)); + + htim->State = HAL_TIM_STATE_BUSY; + + /* Disable the TIM Peripheral Clock */ + __HAL_TIM_DISABLE(htim); + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + if (htim->Base_MspDeInitCallback == NULL) + { + htim->Base_MspDeInitCallback = HAL_TIM_Base_MspDeInit; + } + /* DeInit the low level hardware */ + htim->Base_MspDeInitCallback(htim); +#else + /* DeInit the low level hardware: GPIO, CLOCK, NVIC */ + HAL_TIM_Base_MspDeInit(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + + /* Change the DMA burst operation state */ + htim->DMABurstState = HAL_DMA_BURST_STATE_RESET; + + /* Change the TIM channels state */ + TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_RESET); + TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_RESET); + + /* Change TIM state */ + htim->State = HAL_TIM_STATE_RESET; + + /* Release Lock */ + __HAL_UNLOCK(htim); + + return HAL_OK; +} + +/** + * @brief Initializes the TIM Base MSP. + * @param htim TIM Base handle + * @retval None + */ +__weak void HAL_TIM_Base_MspInit(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_Base_MspInit could be implemented in the user file + */ +} + +/** + * @brief DeInitializes TIM Base MSP. + * @param htim TIM Base handle + * @retval None + */ +__weak void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_Base_MspDeInit could be implemented in the user file + */ +} + + +/** + * @brief Starts the TIM Base generation. + * @param htim TIM Base handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_Base_Start(TIM_HandleTypeDef *htim) +{ + uint32_t tmpsmcr; + + /* Check the parameters */ + assert_param(IS_TIM_INSTANCE(htim->Instance)); + + /* Check the TIM state */ + if (htim->State != HAL_TIM_STATE_READY) + { + return HAL_ERROR; + } + + /* Set the TIM state */ + htim->State = HAL_TIM_STATE_BUSY; + + /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + { + tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + { + __HAL_TIM_ENABLE(htim); + } + } + else + { + __HAL_TIM_ENABLE(htim); + } + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Stops the TIM Base generation. + * @param htim TIM Base handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_Base_Stop(TIM_HandleTypeDef *htim) +{ + /* Check the parameters */ + assert_param(IS_TIM_INSTANCE(htim->Instance)); + + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM state */ + htim->State = HAL_TIM_STATE_READY; + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Starts the TIM Base generation in interrupt mode. + * @param htim TIM Base handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_Base_Start_IT(TIM_HandleTypeDef *htim) +{ + uint32_t tmpsmcr; + + /* Check the parameters */ + assert_param(IS_TIM_INSTANCE(htim->Instance)); + + /* Check the TIM state */ + if (htim->State != HAL_TIM_STATE_READY) + { + return HAL_ERROR; + } + + /* Set the TIM state */ + htim->State = HAL_TIM_STATE_BUSY; + + /* Enable the TIM Update interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_UPDATE); + + /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + { + tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + { + __HAL_TIM_ENABLE(htim); + } + } + else + { + __HAL_TIM_ENABLE(htim); + } + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Stops the TIM Base generation in interrupt mode. + * @param htim TIM Base handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_Base_Stop_IT(TIM_HandleTypeDef *htim) +{ + /* Check the parameters */ + assert_param(IS_TIM_INSTANCE(htim->Instance)); + + /* Disable the TIM Update interrupt */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_UPDATE); + + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM state */ + htim->State = HAL_TIM_STATE_READY; + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Starts the TIM Base generation in DMA mode. + * @param htim TIM Base handle + * @param pData The source Buffer address. + * @param Length The length of data to be transferred from memory to peripheral. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_Base_Start_DMA(TIM_HandleTypeDef *htim, const uint32_t *pData, uint16_t Length) +{ + uint32_t tmpsmcr; + + /* Check the parameters */ + assert_param(IS_TIM_DMA_INSTANCE(htim->Instance)); + + /* Set the TIM state */ + if (htim->State == HAL_TIM_STATE_BUSY) + { + return HAL_BUSY; + } + else if (htim->State == HAL_TIM_STATE_READY) + { + if ((pData == NULL) || (Length == 0U)) + { + return HAL_ERROR; + } + else + { + htim->State = HAL_TIM_STATE_BUSY; + } + } + else + { + return HAL_ERROR; + } + + /* Set the DMA Period elapsed callbacks */ + htim->hdma[TIM_DMA_ID_UPDATE]->XferCpltCallback = TIM_DMAPeriodElapsedCplt; + htim->hdma[TIM_DMA_ID_UPDATE]->XferHalfCpltCallback = TIM_DMAPeriodElapsedHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_UPDATE]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_UPDATE], (uint32_t)pData, (uint32_t)&htim->Instance->ARR, + Length) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + + /* Enable the TIM Update DMA request */ + __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_UPDATE); + + /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + { + tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + { + __HAL_TIM_ENABLE(htim); + } + } + else + { + __HAL_TIM_ENABLE(htim); + } + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Stops the TIM Base generation in DMA mode. + * @param htim TIM Base handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_Base_Stop_DMA(TIM_HandleTypeDef *htim) +{ + /* Check the parameters */ + assert_param(IS_TIM_DMA_INSTANCE(htim->Instance)); + + /* Disable the TIM Update DMA request */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_UPDATE); + + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_UPDATE]); + + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM state */ + htim->State = HAL_TIM_STATE_READY; + + /* Return function status */ + return HAL_OK; +} + +/** + * @} + */ + +/** @defgroup TIM_Exported_Functions_Group2 TIM Output Compare functions + * @brief TIM Output Compare functions + * +@verbatim + ============================================================================== + ##### TIM Output Compare functions ##### + ============================================================================== + [..] + This section provides functions allowing to: + (+) Initialize and configure the TIM Output Compare. + (+) De-initialize the TIM Output Compare. + (+) Start the TIM Output Compare. + (+) Stop the TIM Output Compare. + (+) Start the TIM Output Compare and enable interrupt. + (+) Stop the TIM Output Compare and disable interrupt. + (+) Start the TIM Output Compare and enable DMA transfer. + (+) Stop the TIM Output Compare and disable DMA transfer. + +@endverbatim + * @{ + */ +/** + * @brief Initializes the TIM Output Compare according to the specified + * parameters in the TIM_HandleTypeDef and initializes the associated handle. + * @note Switching from Center Aligned counter mode to Edge counter mode (or reverse) + * requires a timer reset to avoid unexpected direction + * due to DIR bit readonly in center aligned mode. + * Ex: call @ref HAL_TIM_OC_DeInit() before HAL_TIM_OC_Init() + * @param htim TIM Output Compare handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_OC_Init(TIM_HandleTypeDef *htim) +{ + /* Check the TIM handle allocation */ + if (htim == NULL) + { + return HAL_ERROR; + } + + /* Check the parameters */ + assert_param(IS_TIM_INSTANCE(htim->Instance)); + assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode)); + assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision)); + assert_param(IS_TIM_PERIOD(htim, htim->Init.Period)); + assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload)); + + if (htim->State == HAL_TIM_STATE_RESET) + { + /* Allocate lock resource and initialize it */ + htim->Lock = HAL_UNLOCKED; + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + /* Reset interrupt callbacks to legacy weak callbacks */ + TIM_ResetCallback(htim); + + if (htim->OC_MspInitCallback == NULL) + { + htim->OC_MspInitCallback = HAL_TIM_OC_MspInit; + } + /* Init the low level hardware : GPIO, CLOCK, NVIC */ + htim->OC_MspInitCallback(htim); +#else + /* Init the low level hardware : GPIO, CLOCK, NVIC and DMA */ + HAL_TIM_OC_MspInit(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + + /* Set the TIM state */ + htim->State = HAL_TIM_STATE_BUSY; + + /* Init the base time for the Output Compare */ + TIM_Base_SetConfig(htim->Instance, &htim->Init); + + /* Initialize the DMA burst operation state */ + htim->DMABurstState = HAL_DMA_BURST_STATE_READY; + + /* Initialize the TIM channels state */ + TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + + /* Initialize the TIM state*/ + htim->State = HAL_TIM_STATE_READY; + + return HAL_OK; +} + +/** + * @brief DeInitializes the TIM peripheral + * @param htim TIM Output Compare handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_OC_DeInit(TIM_HandleTypeDef *htim) +{ + /* Check the parameters */ + assert_param(IS_TIM_INSTANCE(htim->Instance)); + + htim->State = HAL_TIM_STATE_BUSY; + + /* Disable the TIM Peripheral Clock */ + __HAL_TIM_DISABLE(htim); + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + if (htim->OC_MspDeInitCallback == NULL) + { + htim->OC_MspDeInitCallback = HAL_TIM_OC_MspDeInit; + } + /* DeInit the low level hardware */ + htim->OC_MspDeInitCallback(htim); +#else + /* DeInit the low level hardware: GPIO, CLOCK, NVIC and DMA */ + HAL_TIM_OC_MspDeInit(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + + /* Change the DMA burst operation state */ + htim->DMABurstState = HAL_DMA_BURST_STATE_RESET; + + /* Change the TIM channels state */ + TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_RESET); + TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_RESET); + + /* Change TIM state */ + htim->State = HAL_TIM_STATE_RESET; + + /* Release Lock */ + __HAL_UNLOCK(htim); + + return HAL_OK; +} + +/** + * @brief Initializes the TIM Output Compare MSP. + * @param htim TIM Output Compare handle + * @retval None + */ +__weak void HAL_TIM_OC_MspInit(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_OC_MspInit could be implemented in the user file + */ +} + +/** + * @brief DeInitializes TIM Output Compare MSP. + * @param htim TIM Output Compare handle + * @retval None + */ +__weak void HAL_TIM_OC_MspDeInit(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_OC_MspDeInit could be implemented in the user file + */ +} + +/** + * @brief Starts the TIM Output Compare signal generation. + * @param htim TIM Output Compare handle + * @param Channel TIM Channel to be enabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @arg TIM_CHANNEL_5: TIM Channel 5 selected + * @arg TIM_CHANNEL_6: TIM Channel 6 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_OC_Start(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + uint32_t tmpsmcr; + + /* Check the parameters */ + assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel)); + + /* Check the TIM channel state */ + if (TIM_CHANNEL_STATE_GET(htim, Channel) != HAL_TIM_CHANNEL_STATE_READY) + { + return HAL_ERROR; + } + + /* Set the TIM channel state */ + TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + + /* Enable the Output compare channel */ + TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE); + + if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET) + { + /* Enable the main output */ + __HAL_TIM_MOE_ENABLE(htim); + } + + /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + { + tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + { + __HAL_TIM_ENABLE(htim); + } + } + else + { + __HAL_TIM_ENABLE(htim); + } + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Stops the TIM Output Compare signal generation. + * @param htim TIM Output Compare handle + * @param Channel TIM Channel to be disabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @arg TIM_CHANNEL_5: TIM Channel 5 selected + * @arg TIM_CHANNEL_6: TIM Channel 6 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_OC_Stop(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + /* Check the parameters */ + assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel)); + + /* Disable the Output compare channel */ + TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE); + + if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET) + { + /* Disable the Main Output */ + __HAL_TIM_MOE_DISABLE(htim); + } + + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM channel state */ + TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Starts the TIM Output Compare signal generation in interrupt mode. + * @param htim TIM Output Compare handle + * @param Channel TIM Channel to be enabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_OC_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + HAL_StatusTypeDef status = HAL_OK; + uint32_t tmpsmcr; + + /* Check the parameters */ + assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel)); + + /* Check the TIM channel state */ + if (TIM_CHANNEL_STATE_GET(htim, Channel) != HAL_TIM_CHANNEL_STATE_READY) + { + return HAL_ERROR; + } + + /* Set the TIM channel state */ + TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + + switch (Channel) + { + case TIM_CHANNEL_1: + { + /* Enable the TIM Capture/Compare 1 interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1); + break; + } + + case TIM_CHANNEL_2: + { + /* Enable the TIM Capture/Compare 2 interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2); + break; + } + + case TIM_CHANNEL_3: + { + /* Enable the TIM Capture/Compare 3 interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC3); + break; + } + + case TIM_CHANNEL_4: + { + /* Enable the TIM Capture/Compare 4 interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC4); + break; + } + + default: + status = HAL_ERROR; + break; + } + + if (status == HAL_OK) + { + /* Enable the Output compare channel */ + TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE); + + if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET) + { + /* Enable the main output */ + __HAL_TIM_MOE_ENABLE(htim); + } + + /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + { + tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + { + __HAL_TIM_ENABLE(htim); + } + } + else + { + __HAL_TIM_ENABLE(htim); + } + } + + /* Return function status */ + return status; +} + +/** + * @brief Stops the TIM Output Compare signal generation in interrupt mode. + * @param htim TIM Output Compare handle + * @param Channel TIM Channel to be disabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_OC_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Check the parameters */ + assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel)); + + switch (Channel) + { + case TIM_CHANNEL_1: + { + /* Disable the TIM Capture/Compare 1 interrupt */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1); + break; + } + + case TIM_CHANNEL_2: + { + /* Disable the TIM Capture/Compare 2 interrupt */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2); + break; + } + + case TIM_CHANNEL_3: + { + /* Disable the TIM Capture/Compare 3 interrupt */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC3); + break; + } + + case TIM_CHANNEL_4: + { + /* Disable the TIM Capture/Compare 4 interrupt */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC4); + break; + } + + default: + status = HAL_ERROR; + break; + } + + if (status == HAL_OK) + { + /* Disable the Output compare channel */ + TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE); + + if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET) + { + /* Disable the Main Output */ + __HAL_TIM_MOE_DISABLE(htim); + } + + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM channel state */ + TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + } + + /* Return function status */ + return status; +} + +/** + * @brief Starts the TIM Output Compare signal generation in DMA mode. + * @param htim TIM Output Compare handle + * @param Channel TIM Channel to be enabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @param pData The source Buffer address. + * @param Length The length of data to be transferred from memory to TIM peripheral + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_OC_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, const uint32_t *pData, + uint16_t Length) +{ + HAL_StatusTypeDef status = HAL_OK; + uint32_t tmpsmcr; + + /* Check the parameters */ + assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel)); + + /* Set the TIM channel state */ + if (TIM_CHANNEL_STATE_GET(htim, Channel) == HAL_TIM_CHANNEL_STATE_BUSY) + { + return HAL_BUSY; + } + else if (TIM_CHANNEL_STATE_GET(htim, Channel) == HAL_TIM_CHANNEL_STATE_READY) + { + if ((pData == NULL) || (Length == 0U)) + { + return HAL_ERROR; + } + else + { + TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + } + } + else + { + return HAL_ERROR; + } + + switch (Channel) + { + case TIM_CHANNEL_1: + { + /* Set the DMA compare callbacks */ + htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMADelayPulseCplt; + htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)pData, (uint32_t)&htim->Instance->CCR1, + Length) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + + /* Enable the TIM Capture/Compare 1 DMA request */ + __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC1); + break; + } + + case TIM_CHANNEL_2: + { + /* Set the DMA compare callbacks */ + htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback = TIM_DMADelayPulseCplt; + htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)pData, (uint32_t)&htim->Instance->CCR2, + Length) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + + /* Enable the TIM Capture/Compare 2 DMA request */ + __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC2); + break; + } + + case TIM_CHANNEL_3: + { + /* Set the DMA compare callbacks */ + htim->hdma[TIM_DMA_ID_CC3]->XferCpltCallback = TIM_DMADelayPulseCplt; + htim->hdma[TIM_DMA_ID_CC3]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC3]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)pData, (uint32_t)&htim->Instance->CCR3, + Length) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + /* Enable the TIM Capture/Compare 3 DMA request */ + __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC3); + break; + } + + case TIM_CHANNEL_4: + { + /* Set the DMA compare callbacks */ + htim->hdma[TIM_DMA_ID_CC4]->XferCpltCallback = TIM_DMADelayPulseCplt; + htim->hdma[TIM_DMA_ID_CC4]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC4]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC4], (uint32_t)pData, (uint32_t)&htim->Instance->CCR4, + Length) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + /* Enable the TIM Capture/Compare 4 DMA request */ + __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC4); + break; + } + + default: + status = HAL_ERROR; + break; + } + + if (status == HAL_OK) + { + /* Enable the Output compare channel */ + TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE); + + if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET) + { + /* Enable the main output */ + __HAL_TIM_MOE_ENABLE(htim); + } + + /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + { + tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + { + __HAL_TIM_ENABLE(htim); + } + } + else + { + __HAL_TIM_ENABLE(htim); + } + } + + /* Return function status */ + return status; +} + +/** + * @brief Stops the TIM Output Compare signal generation in DMA mode. + * @param htim TIM Output Compare handle + * @param Channel TIM Channel to be disabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_OC_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Check the parameters */ + assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel)); + + switch (Channel) + { + case TIM_CHANNEL_1: + { + /* Disable the TIM Capture/Compare 1 DMA request */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC1); + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC1]); + break; + } + + case TIM_CHANNEL_2: + { + /* Disable the TIM Capture/Compare 2 DMA request */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC2); + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC2]); + break; + } + + case TIM_CHANNEL_3: + { + /* Disable the TIM Capture/Compare 3 DMA request */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC3); + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC3]); + break; + } + + case TIM_CHANNEL_4: + { + /* Disable the TIM Capture/Compare 4 interrupt */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC4); + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC4]); + break; + } + + default: + status = HAL_ERROR; + break; + } + + if (status == HAL_OK) + { + /* Disable the Output compare channel */ + TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE); + + if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET) + { + /* Disable the Main Output */ + __HAL_TIM_MOE_DISABLE(htim); + } + + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM channel state */ + TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + } + + /* Return function status */ + return status; +} + +/** + * @} + */ + +/** @defgroup TIM_Exported_Functions_Group3 TIM PWM functions + * @brief TIM PWM functions + * +@verbatim + ============================================================================== + ##### TIM PWM functions ##### + ============================================================================== + [..] + This section provides functions allowing to: + (+) Initialize and configure the TIM PWM. + (+) De-initialize the TIM PWM. + (+) Start the TIM PWM. + (+) Stop the TIM PWM. + (+) Start the TIM PWM and enable interrupt. + (+) Stop the TIM PWM and disable interrupt. + (+) Start the TIM PWM and enable DMA transfer. + (+) Stop the TIM PWM and disable DMA transfer. + +@endverbatim + * @{ + */ +/** + * @brief Initializes the TIM PWM Time Base according to the specified + * parameters in the TIM_HandleTypeDef and initializes the associated handle. + * @note Switching from Center Aligned counter mode to Edge counter mode (or reverse) + * requires a timer reset to avoid unexpected direction + * due to DIR bit readonly in center aligned mode. + * Ex: call @ref HAL_TIM_PWM_DeInit() before HAL_TIM_PWM_Init() + * @param htim TIM PWM handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_PWM_Init(TIM_HandleTypeDef *htim) +{ + /* Check the TIM handle allocation */ + if (htim == NULL) + { + return HAL_ERROR; + } + + /* Check the parameters */ + assert_param(IS_TIM_INSTANCE(htim->Instance)); + assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode)); + assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision)); + assert_param(IS_TIM_PERIOD(htim, htim->Init.Period)); + assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload)); + + if (htim->State == HAL_TIM_STATE_RESET) + { + /* Allocate lock resource and initialize it */ + htim->Lock = HAL_UNLOCKED; + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + /* Reset interrupt callbacks to legacy weak callbacks */ + TIM_ResetCallback(htim); + + if (htim->PWM_MspInitCallback == NULL) + { + htim->PWM_MspInitCallback = HAL_TIM_PWM_MspInit; + } + /* Init the low level hardware : GPIO, CLOCK, NVIC */ + htim->PWM_MspInitCallback(htim); +#else + /* Init the low level hardware : GPIO, CLOCK, NVIC and DMA */ + HAL_TIM_PWM_MspInit(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + + /* Set the TIM state */ + htim->State = HAL_TIM_STATE_BUSY; + + /* Init the base time for the PWM */ + TIM_Base_SetConfig(htim->Instance, &htim->Init); + + /* Initialize the DMA burst operation state */ + htim->DMABurstState = HAL_DMA_BURST_STATE_READY; + + /* Initialize the TIM channels state */ + TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + + /* Initialize the TIM state*/ + htim->State = HAL_TIM_STATE_READY; + + return HAL_OK; +} + +/** + * @brief DeInitializes the TIM peripheral + * @param htim TIM PWM handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_PWM_DeInit(TIM_HandleTypeDef *htim) +{ + /* Check the parameters */ + assert_param(IS_TIM_INSTANCE(htim->Instance)); + + htim->State = HAL_TIM_STATE_BUSY; + + /* Disable the TIM Peripheral Clock */ + __HAL_TIM_DISABLE(htim); + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + if (htim->PWM_MspDeInitCallback == NULL) + { + htim->PWM_MspDeInitCallback = HAL_TIM_PWM_MspDeInit; + } + /* DeInit the low level hardware */ + htim->PWM_MspDeInitCallback(htim); +#else + /* DeInit the low level hardware: GPIO, CLOCK, NVIC and DMA */ + HAL_TIM_PWM_MspDeInit(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + + /* Change the DMA burst operation state */ + htim->DMABurstState = HAL_DMA_BURST_STATE_RESET; + + /* Change the TIM channels state */ + TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_RESET); + TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_RESET); + + /* Change TIM state */ + htim->State = HAL_TIM_STATE_RESET; + + /* Release Lock */ + __HAL_UNLOCK(htim); + + return HAL_OK; +} + +/** + * @brief Initializes the TIM PWM MSP. + * @param htim TIM PWM handle + * @retval None + */ +__weak void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_PWM_MspInit could be implemented in the user file + */ +} + +/** + * @brief DeInitializes TIM PWM MSP. + * @param htim TIM PWM handle + * @retval None + */ +__weak void HAL_TIM_PWM_MspDeInit(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_PWM_MspDeInit could be implemented in the user file + */ +} + +/** + * @brief Starts the PWM signal generation. + * @param htim TIM handle + * @param Channel TIM Channels to be enabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @arg TIM_CHANNEL_5: TIM Channel 5 selected + * @arg TIM_CHANNEL_6: TIM Channel 6 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_PWM_Start(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + uint32_t tmpsmcr; + + /* Check the parameters */ + assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel)); + + /* Check the TIM channel state */ + if (TIM_CHANNEL_STATE_GET(htim, Channel) != HAL_TIM_CHANNEL_STATE_READY) + { + return HAL_ERROR; + } + + /* Set the TIM channel state */ + TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + + /* Enable the Capture compare channel */ + TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE); + + if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET) + { + /* Enable the main output */ + __HAL_TIM_MOE_ENABLE(htim); + } + + /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + { + tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + { + __HAL_TIM_ENABLE(htim); + } + } + else + { + __HAL_TIM_ENABLE(htim); + } + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Stops the PWM signal generation. + * @param htim TIM PWM handle + * @param Channel TIM Channels to be disabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @arg TIM_CHANNEL_5: TIM Channel 5 selected + * @arg TIM_CHANNEL_6: TIM Channel 6 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_PWM_Stop(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + /* Check the parameters */ + assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel)); + + /* Disable the Capture compare channel */ + TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE); + + if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET) + { + /* Disable the Main Output */ + __HAL_TIM_MOE_DISABLE(htim); + } + + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM channel state */ + TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Starts the PWM signal generation in interrupt mode. + * @param htim TIM PWM handle + * @param Channel TIM Channel to be enabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_PWM_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + HAL_StatusTypeDef status = HAL_OK; + uint32_t tmpsmcr; + + /* Check the parameters */ + assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel)); + + /* Check the TIM channel state */ + if (TIM_CHANNEL_STATE_GET(htim, Channel) != HAL_TIM_CHANNEL_STATE_READY) + { + return HAL_ERROR; + } + + /* Set the TIM channel state */ + TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + + switch (Channel) + { + case TIM_CHANNEL_1: + { + /* Enable the TIM Capture/Compare 1 interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1); + break; + } + + case TIM_CHANNEL_2: + { + /* Enable the TIM Capture/Compare 2 interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2); + break; + } + + case TIM_CHANNEL_3: + { + /* Enable the TIM Capture/Compare 3 interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC3); + break; + } + + case TIM_CHANNEL_4: + { + /* Enable the TIM Capture/Compare 4 interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC4); + break; + } + + default: + status = HAL_ERROR; + break; + } + + if (status == HAL_OK) + { + /* Enable the Capture compare channel */ + TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE); + + if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET) + { + /* Enable the main output */ + __HAL_TIM_MOE_ENABLE(htim); + } + + /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + { + tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + { + __HAL_TIM_ENABLE(htim); + } + } + else + { + __HAL_TIM_ENABLE(htim); + } + } + + /* Return function status */ + return status; +} + +/** + * @brief Stops the PWM signal generation in interrupt mode. + * @param htim TIM PWM handle + * @param Channel TIM Channels to be disabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_PWM_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Check the parameters */ + assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel)); + + switch (Channel) + { + case TIM_CHANNEL_1: + { + /* Disable the TIM Capture/Compare 1 interrupt */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1); + break; + } + + case TIM_CHANNEL_2: + { + /* Disable the TIM Capture/Compare 2 interrupt */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2); + break; + } + + case TIM_CHANNEL_3: + { + /* Disable the TIM Capture/Compare 3 interrupt */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC3); + break; + } + + case TIM_CHANNEL_4: + { + /* Disable the TIM Capture/Compare 4 interrupt */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC4); + break; + } + + default: + status = HAL_ERROR; + break; + } + + if (status == HAL_OK) + { + /* Disable the Capture compare channel */ + TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE); + + if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET) + { + /* Disable the Main Output */ + __HAL_TIM_MOE_DISABLE(htim); + } + + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM channel state */ + TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + } + + /* Return function status */ + return status; +} + +/** + * @brief Starts the TIM PWM signal generation in DMA mode. + * @param htim TIM PWM handle + * @param Channel TIM Channels to be enabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @param pData The source Buffer address. + * @param Length The length of data to be transferred from memory to TIM peripheral + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_PWM_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, const uint32_t *pData, + uint16_t Length) +{ + HAL_StatusTypeDef status = HAL_OK; + uint32_t tmpsmcr; + + /* Check the parameters */ + assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel)); + + /* Set the TIM channel state */ + if (TIM_CHANNEL_STATE_GET(htim, Channel) == HAL_TIM_CHANNEL_STATE_BUSY) + { + return HAL_BUSY; + } + else if (TIM_CHANNEL_STATE_GET(htim, Channel) == HAL_TIM_CHANNEL_STATE_READY) + { + if ((pData == NULL) || (Length == 0U)) + { + return HAL_ERROR; + } + else + { + TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + } + } + else + { + return HAL_ERROR; + } + + switch (Channel) + { + case TIM_CHANNEL_1: + { + /* Set the DMA compare callbacks */ + htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMADelayPulseCplt; + htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)pData, (uint32_t)&htim->Instance->CCR1, + Length) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + + /* Enable the TIM Capture/Compare 1 DMA request */ + __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC1); + break; + } + + case TIM_CHANNEL_2: + { + /* Set the DMA compare callbacks */ + htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback = TIM_DMADelayPulseCplt; + htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)pData, (uint32_t)&htim->Instance->CCR2, + Length) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + /* Enable the TIM Capture/Compare 2 DMA request */ + __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC2); + break; + } + + case TIM_CHANNEL_3: + { + /* Set the DMA compare callbacks */ + htim->hdma[TIM_DMA_ID_CC3]->XferCpltCallback = TIM_DMADelayPulseCplt; + htim->hdma[TIM_DMA_ID_CC3]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC3]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)pData, (uint32_t)&htim->Instance->CCR3, + Length) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + /* Enable the TIM Output Capture/Compare 3 request */ + __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC3); + break; + } + + case TIM_CHANNEL_4: + { + /* Set the DMA compare callbacks */ + htim->hdma[TIM_DMA_ID_CC4]->XferCpltCallback = TIM_DMADelayPulseCplt; + htim->hdma[TIM_DMA_ID_CC4]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC4]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC4], (uint32_t)pData, (uint32_t)&htim->Instance->CCR4, + Length) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + /* Enable the TIM Capture/Compare 4 DMA request */ + __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC4); + break; + } + + default: + status = HAL_ERROR; + break; + } + + if (status == HAL_OK) + { + /* Enable the Capture compare channel */ + TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE); + + if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET) + { + /* Enable the main output */ + __HAL_TIM_MOE_ENABLE(htim); + } + + /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + { + tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + { + __HAL_TIM_ENABLE(htim); + } + } + else + { + __HAL_TIM_ENABLE(htim); + } + } + + /* Return function status */ + return status; +} + +/** + * @brief Stops the TIM PWM signal generation in DMA mode. + * @param htim TIM PWM handle + * @param Channel TIM Channels to be disabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_PWM_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Check the parameters */ + assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel)); + + switch (Channel) + { + case TIM_CHANNEL_1: + { + /* Disable the TIM Capture/Compare 1 DMA request */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC1); + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC1]); + break; + } + + case TIM_CHANNEL_2: + { + /* Disable the TIM Capture/Compare 2 DMA request */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC2); + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC2]); + break; + } + + case TIM_CHANNEL_3: + { + /* Disable the TIM Capture/Compare 3 DMA request */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC3); + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC3]); + break; + } + + case TIM_CHANNEL_4: + { + /* Disable the TIM Capture/Compare 4 interrupt */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC4); + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC4]); + break; + } + + default: + status = HAL_ERROR; + break; + } + + if (status == HAL_OK) + { + /* Disable the Capture compare channel */ + TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE); + + if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET) + { + /* Disable the Main Output */ + __HAL_TIM_MOE_DISABLE(htim); + } + + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM channel state */ + TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + } + + /* Return function status */ + return status; +} + +/** + * @} + */ + +/** @defgroup TIM_Exported_Functions_Group4 TIM Input Capture functions + * @brief TIM Input Capture functions + * +@verbatim + ============================================================================== + ##### TIM Input Capture functions ##### + ============================================================================== + [..] + This section provides functions allowing to: + (+) Initialize and configure the TIM Input Capture. + (+) De-initialize the TIM Input Capture. + (+) Start the TIM Input Capture. + (+) Stop the TIM Input Capture. + (+) Start the TIM Input Capture and enable interrupt. + (+) Stop the TIM Input Capture and disable interrupt. + (+) Start the TIM Input Capture and enable DMA transfer. + (+) Stop the TIM Input Capture and disable DMA transfer. + +@endverbatim + * @{ + */ +/** + * @brief Initializes the TIM Input Capture Time base according to the specified + * parameters in the TIM_HandleTypeDef and initializes the associated handle. + * @note Switching from Center Aligned counter mode to Edge counter mode (or reverse) + * requires a timer reset to avoid unexpected direction + * due to DIR bit readonly in center aligned mode. + * Ex: call @ref HAL_TIM_IC_DeInit() before HAL_TIM_IC_Init() + * @param htim TIM Input Capture handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_IC_Init(TIM_HandleTypeDef *htim) +{ + /* Check the TIM handle allocation */ + if (htim == NULL) + { + return HAL_ERROR; + } + + /* Check the parameters */ + assert_param(IS_TIM_INSTANCE(htim->Instance)); + assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode)); + assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision)); + assert_param(IS_TIM_PERIOD(htim, htim->Init.Period)); + assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload)); + + if (htim->State == HAL_TIM_STATE_RESET) + { + /* Allocate lock resource and initialize it */ + htim->Lock = HAL_UNLOCKED; + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + /* Reset interrupt callbacks to legacy weak callbacks */ + TIM_ResetCallback(htim); + + if (htim->IC_MspInitCallback == NULL) + { + htim->IC_MspInitCallback = HAL_TIM_IC_MspInit; + } + /* Init the low level hardware : GPIO, CLOCK, NVIC */ + htim->IC_MspInitCallback(htim); +#else + /* Init the low level hardware : GPIO, CLOCK, NVIC and DMA */ + HAL_TIM_IC_MspInit(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + + /* Set the TIM state */ + htim->State = HAL_TIM_STATE_BUSY; + + /* Init the base time for the input capture */ + TIM_Base_SetConfig(htim->Instance, &htim->Init); + + /* Initialize the DMA burst operation state */ + htim->DMABurstState = HAL_DMA_BURST_STATE_READY; + + /* Initialize the TIM channels state */ + TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + + /* Initialize the TIM state*/ + htim->State = HAL_TIM_STATE_READY; + + return HAL_OK; +} + +/** + * @brief DeInitializes the TIM peripheral + * @param htim TIM Input Capture handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_IC_DeInit(TIM_HandleTypeDef *htim) +{ + /* Check the parameters */ + assert_param(IS_TIM_INSTANCE(htim->Instance)); + + htim->State = HAL_TIM_STATE_BUSY; + + /* Disable the TIM Peripheral Clock */ + __HAL_TIM_DISABLE(htim); + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + if (htim->IC_MspDeInitCallback == NULL) + { + htim->IC_MspDeInitCallback = HAL_TIM_IC_MspDeInit; + } + /* DeInit the low level hardware */ + htim->IC_MspDeInitCallback(htim); +#else + /* DeInit the low level hardware: GPIO, CLOCK, NVIC and DMA */ + HAL_TIM_IC_MspDeInit(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + + /* Change the DMA burst operation state */ + htim->DMABurstState = HAL_DMA_BURST_STATE_RESET; + + /* Change the TIM channels state */ + TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_RESET); + TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_RESET); + + /* Change TIM state */ + htim->State = HAL_TIM_STATE_RESET; + + /* Release Lock */ + __HAL_UNLOCK(htim); + + return HAL_OK; +} + +/** + * @brief Initializes the TIM Input Capture MSP. + * @param htim TIM Input Capture handle + * @retval None + */ +__weak void HAL_TIM_IC_MspInit(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_IC_MspInit could be implemented in the user file + */ +} + +/** + * @brief DeInitializes TIM Input Capture MSP. + * @param htim TIM handle + * @retval None + */ +__weak void HAL_TIM_IC_MspDeInit(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_IC_MspDeInit could be implemented in the user file + */ +} + +/** + * @brief Starts the TIM Input Capture measurement. + * @param htim TIM Input Capture handle + * @param Channel TIM Channels to be enabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_IC_Start(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + uint32_t tmpsmcr; + HAL_TIM_ChannelStateTypeDef channel_state = TIM_CHANNEL_STATE_GET(htim, Channel); + HAL_TIM_ChannelStateTypeDef complementary_channel_state = TIM_CHANNEL_N_STATE_GET(htim, Channel); + + /* Check the parameters */ + assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel)); + + /* Check the TIM channel state */ + if ((channel_state != HAL_TIM_CHANNEL_STATE_READY) + || (complementary_channel_state != HAL_TIM_CHANNEL_STATE_READY)) + { + return HAL_ERROR; + } + + /* Set the TIM channel state */ + TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + + /* Enable the Input Capture channel */ + TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE); + + /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + { + tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + { + __HAL_TIM_ENABLE(htim); + } + } + else + { + __HAL_TIM_ENABLE(htim); + } + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Stops the TIM Input Capture measurement. + * @param htim TIM Input Capture handle + * @param Channel TIM Channels to be disabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_IC_Stop(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + /* Check the parameters */ + assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel)); + + /* Disable the Input Capture channel */ + TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE); + + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM channel state */ + TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Starts the TIM Input Capture measurement in interrupt mode. + * @param htim TIM Input Capture handle + * @param Channel TIM Channels to be enabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_IC_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + HAL_StatusTypeDef status = HAL_OK; + uint32_t tmpsmcr; + + HAL_TIM_ChannelStateTypeDef channel_state = TIM_CHANNEL_STATE_GET(htim, Channel); + HAL_TIM_ChannelStateTypeDef complementary_channel_state = TIM_CHANNEL_N_STATE_GET(htim, Channel); + + /* Check the parameters */ + assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel)); + + /* Check the TIM channel state */ + if ((channel_state != HAL_TIM_CHANNEL_STATE_READY) + || (complementary_channel_state != HAL_TIM_CHANNEL_STATE_READY)) + { + return HAL_ERROR; + } + + /* Set the TIM channel state */ + TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + + switch (Channel) + { + case TIM_CHANNEL_1: + { + /* Enable the TIM Capture/Compare 1 interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1); + break; + } + + case TIM_CHANNEL_2: + { + /* Enable the TIM Capture/Compare 2 interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2); + break; + } + + case TIM_CHANNEL_3: + { + /* Enable the TIM Capture/Compare 3 interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC3); + break; + } + + case TIM_CHANNEL_4: + { + /* Enable the TIM Capture/Compare 4 interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC4); + break; + } + + default: + status = HAL_ERROR; + break; + } + + if (status == HAL_OK) + { + /* Enable the Input Capture channel */ + TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE); + + /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + { + tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + { + __HAL_TIM_ENABLE(htim); + } + } + else + { + __HAL_TIM_ENABLE(htim); + } + } + + /* Return function status */ + return status; +} + +/** + * @brief Stops the TIM Input Capture measurement in interrupt mode. + * @param htim TIM Input Capture handle + * @param Channel TIM Channels to be disabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_IC_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Check the parameters */ + assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel)); + + switch (Channel) + { + case TIM_CHANNEL_1: + { + /* Disable the TIM Capture/Compare 1 interrupt */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1); + break; + } + + case TIM_CHANNEL_2: + { + /* Disable the TIM Capture/Compare 2 interrupt */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2); + break; + } + + case TIM_CHANNEL_3: + { + /* Disable the TIM Capture/Compare 3 interrupt */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC3); + break; + } + + case TIM_CHANNEL_4: + { + /* Disable the TIM Capture/Compare 4 interrupt */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC4); + break; + } + + default: + status = HAL_ERROR; + break; + } + + if (status == HAL_OK) + { + /* Disable the Input Capture channel */ + TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE); + + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM channel state */ + TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + } + + /* Return function status */ + return status; +} + +/** + * @brief Starts the TIM Input Capture measurement in DMA mode. + * @param htim TIM Input Capture handle + * @param Channel TIM Channels to be enabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @param pData The destination Buffer address. + * @param Length The length of data to be transferred from TIM peripheral to memory. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_IC_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length) +{ + HAL_StatusTypeDef status = HAL_OK; + uint32_t tmpsmcr; + + HAL_TIM_ChannelStateTypeDef channel_state = TIM_CHANNEL_STATE_GET(htim, Channel); + HAL_TIM_ChannelStateTypeDef complementary_channel_state = TIM_CHANNEL_N_STATE_GET(htim, Channel); + + /* Check the parameters */ + assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel)); + assert_param(IS_TIM_DMA_CC_INSTANCE(htim->Instance)); + + /* Set the TIM channel state */ + if ((channel_state == HAL_TIM_CHANNEL_STATE_BUSY) + || (complementary_channel_state == HAL_TIM_CHANNEL_STATE_BUSY)) + { + return HAL_BUSY; + } + else if ((channel_state == HAL_TIM_CHANNEL_STATE_READY) + && (complementary_channel_state == HAL_TIM_CHANNEL_STATE_READY)) + { + if ((pData == NULL) || (Length == 0U)) + { + return HAL_ERROR; + } + else + { + TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + } + } + else + { + return HAL_ERROR; + } + + /* Enable the Input Capture channel */ + TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE); + + switch (Channel) + { + case TIM_CHANNEL_1: + { + /* Set the DMA capture callbacks */ + htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMACaptureCplt; + htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)&htim->Instance->CCR1, (uint32_t)pData, + Length) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + /* Enable the TIM Capture/Compare 1 DMA request */ + __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC1); + break; + } + + case TIM_CHANNEL_2: + { + /* Set the DMA capture callbacks */ + htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback = TIM_DMACaptureCplt; + htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)&htim->Instance->CCR2, (uint32_t)pData, + Length) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + /* Enable the TIM Capture/Compare 2 DMA request */ + __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC2); + break; + } + + case TIM_CHANNEL_3: + { + /* Set the DMA capture callbacks */ + htim->hdma[TIM_DMA_ID_CC3]->XferCpltCallback = TIM_DMACaptureCplt; + htim->hdma[TIM_DMA_ID_CC3]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC3]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)&htim->Instance->CCR3, (uint32_t)pData, + Length) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + /* Enable the TIM Capture/Compare 3 DMA request */ + __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC3); + break; + } + + case TIM_CHANNEL_4: + { + /* Set the DMA capture callbacks */ + htim->hdma[TIM_DMA_ID_CC4]->XferCpltCallback = TIM_DMACaptureCplt; + htim->hdma[TIM_DMA_ID_CC4]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC4]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC4], (uint32_t)&htim->Instance->CCR4, (uint32_t)pData, + Length) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + /* Enable the TIM Capture/Compare 4 DMA request */ + __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC4); + break; + } + + default: + status = HAL_ERROR; + break; + } + + /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + { + tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + { + __HAL_TIM_ENABLE(htim); + } + } + else + { + __HAL_TIM_ENABLE(htim); + } + + /* Return function status */ + return status; +} + +/** + * @brief Stops the TIM Input Capture measurement in DMA mode. + * @param htim TIM Input Capture handle + * @param Channel TIM Channels to be disabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_IC_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Check the parameters */ + assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel)); + assert_param(IS_TIM_DMA_CC_INSTANCE(htim->Instance)); + + /* Disable the Input Capture channel */ + TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE); + + switch (Channel) + { + case TIM_CHANNEL_1: + { + /* Disable the TIM Capture/Compare 1 DMA request */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC1); + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC1]); + break; + } + + case TIM_CHANNEL_2: + { + /* Disable the TIM Capture/Compare 2 DMA request */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC2); + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC2]); + break; + } + + case TIM_CHANNEL_3: + { + /* Disable the TIM Capture/Compare 3 DMA request */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC3); + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC3]); + break; + } + + case TIM_CHANNEL_4: + { + /* Disable the TIM Capture/Compare 4 DMA request */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC4); + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC4]); + break; + } + + default: + status = HAL_ERROR; + break; + } + + if (status == HAL_OK) + { + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM channel state */ + TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + } + + /* Return function status */ + return status; +} +/** + * @} + */ + +/** @defgroup TIM_Exported_Functions_Group5 TIM One Pulse functions + * @brief TIM One Pulse functions + * +@verbatim + ============================================================================== + ##### TIM One Pulse functions ##### + ============================================================================== + [..] + This section provides functions allowing to: + (+) Initialize and configure the TIM One Pulse. + (+) De-initialize the TIM One Pulse. + (+) Start the TIM One Pulse. + (+) Stop the TIM One Pulse. + (+) Start the TIM One Pulse and enable interrupt. + (+) Stop the TIM One Pulse and disable interrupt. + (+) Start the TIM One Pulse and enable DMA transfer. + (+) Stop the TIM One Pulse and disable DMA transfer. + +@endverbatim + * @{ + */ +/** + * @brief Initializes the TIM One Pulse Time Base according to the specified + * parameters in the TIM_HandleTypeDef and initializes the associated handle. + * @note Switching from Center Aligned counter mode to Edge counter mode (or reverse) + * requires a timer reset to avoid unexpected direction + * due to DIR bit readonly in center aligned mode. + * Ex: call @ref HAL_TIM_OnePulse_DeInit() before HAL_TIM_OnePulse_Init() + * @note When the timer instance is initialized in One Pulse mode, timer + * channels 1 and channel 2 are reserved and cannot be used for other + * purpose. + * @param htim TIM One Pulse handle + * @param OnePulseMode Select the One pulse mode. + * This parameter can be one of the following values: + * @arg TIM_OPMODE_SINGLE: Only one pulse will be generated. + * @arg TIM_OPMODE_REPETITIVE: Repetitive pulses will be generated. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_OnePulse_Init(TIM_HandleTypeDef *htim, uint32_t OnePulseMode) +{ + /* Check the TIM handle allocation */ + if (htim == NULL) + { + return HAL_ERROR; + } + + /* Check the parameters */ + assert_param(IS_TIM_INSTANCE(htim->Instance)); + assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode)); + assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision)); + assert_param(IS_TIM_OPM_MODE(OnePulseMode)); + assert_param(IS_TIM_PERIOD(htim, htim->Init.Period)); + assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload)); + + if (htim->State == HAL_TIM_STATE_RESET) + { + /* Allocate lock resource and initialize it */ + htim->Lock = HAL_UNLOCKED; + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + /* Reset interrupt callbacks to legacy weak callbacks */ + TIM_ResetCallback(htim); + + if (htim->OnePulse_MspInitCallback == NULL) + { + htim->OnePulse_MspInitCallback = HAL_TIM_OnePulse_MspInit; + } + /* Init the low level hardware : GPIO, CLOCK, NVIC */ + htim->OnePulse_MspInitCallback(htim); +#else + /* Init the low level hardware : GPIO, CLOCK, NVIC and DMA */ + HAL_TIM_OnePulse_MspInit(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + + /* Set the TIM state */ + htim->State = HAL_TIM_STATE_BUSY; + + /* Configure the Time base in the One Pulse Mode */ + TIM_Base_SetConfig(htim->Instance, &htim->Init); + + /* Reset the OPM Bit */ + htim->Instance->CR1 &= ~TIM_CR1_OPM; + + /* Configure the OPM Mode */ + htim->Instance->CR1 |= OnePulseMode; + + /* Initialize the DMA burst operation state */ + htim->DMABurstState = HAL_DMA_BURST_STATE_READY; + + /* Initialize the TIM channels state */ + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + + /* Initialize the TIM state*/ + htim->State = HAL_TIM_STATE_READY; + + return HAL_OK; +} + +/** + * @brief DeInitializes the TIM One Pulse + * @param htim TIM One Pulse handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_OnePulse_DeInit(TIM_HandleTypeDef *htim) +{ + /* Check the parameters */ + assert_param(IS_TIM_INSTANCE(htim->Instance)); + + htim->State = HAL_TIM_STATE_BUSY; + + /* Disable the TIM Peripheral Clock */ + __HAL_TIM_DISABLE(htim); + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + if (htim->OnePulse_MspDeInitCallback == NULL) + { + htim->OnePulse_MspDeInitCallback = HAL_TIM_OnePulse_MspDeInit; + } + /* DeInit the low level hardware */ + htim->OnePulse_MspDeInitCallback(htim); +#else + /* DeInit the low level hardware: GPIO, CLOCK, NVIC */ + HAL_TIM_OnePulse_MspDeInit(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + + /* Change the DMA burst operation state */ + htim->DMABurstState = HAL_DMA_BURST_STATE_RESET; + + /* Set the TIM channel state */ + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_RESET); + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_RESET); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_RESET); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_RESET); + + /* Change TIM state */ + htim->State = HAL_TIM_STATE_RESET; + + /* Release Lock */ + __HAL_UNLOCK(htim); + + return HAL_OK; +} + +/** + * @brief Initializes the TIM One Pulse MSP. + * @param htim TIM One Pulse handle + * @retval None + */ +__weak void HAL_TIM_OnePulse_MspInit(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_OnePulse_MspInit could be implemented in the user file + */ +} + +/** + * @brief DeInitializes TIM One Pulse MSP. + * @param htim TIM One Pulse handle + * @retval None + */ +__weak void HAL_TIM_OnePulse_MspDeInit(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_OnePulse_MspDeInit could be implemented in the user file + */ +} + +/** + * @brief Starts the TIM One Pulse signal generation. + * @note Though OutputChannel parameter is deprecated and ignored by the function + * it has been kept to avoid HAL_TIM API compatibility break. + * @note The pulse output channel is determined when calling + * @ref HAL_TIM_OnePulse_ConfigChannel(). + * @param htim TIM One Pulse handle + * @param OutputChannel See note above + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_OnePulse_Start(TIM_HandleTypeDef *htim, uint32_t OutputChannel) +{ + HAL_TIM_ChannelStateTypeDef channel_1_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_1); + HAL_TIM_ChannelStateTypeDef channel_2_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_2); + HAL_TIM_ChannelStateTypeDef complementary_channel_1_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHANNEL_1); + HAL_TIM_ChannelStateTypeDef complementary_channel_2_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHANNEL_2); + + /* Prevent unused argument(s) compilation warning */ + UNUSED(OutputChannel); + + /* Check the TIM channels state */ + if ((channel_1_state != HAL_TIM_CHANNEL_STATE_READY) + || (channel_2_state != HAL_TIM_CHANNEL_STATE_READY) + || (complementary_channel_1_state != HAL_TIM_CHANNEL_STATE_READY) + || (complementary_channel_2_state != HAL_TIM_CHANNEL_STATE_READY)) + { + return HAL_ERROR; + } + + /* Set the TIM channels state */ + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + + /* Enable the Capture compare and the Input Capture channels + (in the OPM Mode the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2) + if TIM_CHANNEL_1 is used as output, the TIM_CHANNEL_2 will be used as input and + if TIM_CHANNEL_1 is used as input, the TIM_CHANNEL_2 will be used as output + whatever the combination, the TIM_CHANNEL_1 and TIM_CHANNEL_2 should be enabled together + + No need to enable the counter, it's enabled automatically by hardware + (the counter starts in response to a stimulus and generate a pulse */ + + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE); + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE); + + if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET) + { + /* Enable the main output */ + __HAL_TIM_MOE_ENABLE(htim); + } + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Stops the TIM One Pulse signal generation. + * @note Though OutputChannel parameter is deprecated and ignored by the function + * it has been kept to avoid HAL_TIM API compatibility break. + * @note The pulse output channel is determined when calling + * @ref HAL_TIM_OnePulse_ConfigChannel(). + * @param htim TIM One Pulse handle + * @param OutputChannel See note above + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_OnePulse_Stop(TIM_HandleTypeDef *htim, uint32_t OutputChannel) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(OutputChannel); + + /* Disable the Capture compare and the Input Capture channels + (in the OPM Mode the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2) + if TIM_CHANNEL_1 is used as output, the TIM_CHANNEL_2 will be used as input and + if TIM_CHANNEL_1 is used as input, the TIM_CHANNEL_2 will be used as output + whatever the combination, the TIM_CHANNEL_1 and TIM_CHANNEL_2 should be disabled together */ + + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE); + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE); + + if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET) + { + /* Disable the Main Output */ + __HAL_TIM_MOE_DISABLE(htim); + } + + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM channels state */ + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Starts the TIM One Pulse signal generation in interrupt mode. + * @note Though OutputChannel parameter is deprecated and ignored by the function + * it has been kept to avoid HAL_TIM API compatibility break. + * @note The pulse output channel is determined when calling + * @ref HAL_TIM_OnePulse_ConfigChannel(). + * @param htim TIM One Pulse handle + * @param OutputChannel See note above + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_OnePulse_Start_IT(TIM_HandleTypeDef *htim, uint32_t OutputChannel) +{ + HAL_TIM_ChannelStateTypeDef channel_1_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_1); + HAL_TIM_ChannelStateTypeDef channel_2_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_2); + HAL_TIM_ChannelStateTypeDef complementary_channel_1_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHANNEL_1); + HAL_TIM_ChannelStateTypeDef complementary_channel_2_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHANNEL_2); + + /* Prevent unused argument(s) compilation warning */ + UNUSED(OutputChannel); + + /* Check the TIM channels state */ + if ((channel_1_state != HAL_TIM_CHANNEL_STATE_READY) + || (channel_2_state != HAL_TIM_CHANNEL_STATE_READY) + || (complementary_channel_1_state != HAL_TIM_CHANNEL_STATE_READY) + || (complementary_channel_2_state != HAL_TIM_CHANNEL_STATE_READY)) + { + return HAL_ERROR; + } + + /* Set the TIM channels state */ + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + + /* Enable the Capture compare and the Input Capture channels + (in the OPM Mode the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2) + if TIM_CHANNEL_1 is used as output, the TIM_CHANNEL_2 will be used as input and + if TIM_CHANNEL_1 is used as input, the TIM_CHANNEL_2 will be used as output + whatever the combination, the TIM_CHANNEL_1 and TIM_CHANNEL_2 should be enabled together + + No need to enable the counter, it's enabled automatically by hardware + (the counter starts in response to a stimulus and generate a pulse */ + + /* Enable the TIM Capture/Compare 1 interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1); + + /* Enable the TIM Capture/Compare 2 interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2); + + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE); + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE); + + if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET) + { + /* Enable the main output */ + __HAL_TIM_MOE_ENABLE(htim); + } + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Stops the TIM One Pulse signal generation in interrupt mode. + * @note Though OutputChannel parameter is deprecated and ignored by the function + * it has been kept to avoid HAL_TIM API compatibility break. + * @note The pulse output channel is determined when calling + * @ref HAL_TIM_OnePulse_ConfigChannel(). + * @param htim TIM One Pulse handle + * @param OutputChannel See note above + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_OnePulse_Stop_IT(TIM_HandleTypeDef *htim, uint32_t OutputChannel) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(OutputChannel); + + /* Disable the TIM Capture/Compare 1 interrupt */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1); + + /* Disable the TIM Capture/Compare 2 interrupt */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2); + + /* Disable the Capture compare and the Input Capture channels + (in the OPM Mode the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2) + if TIM_CHANNEL_1 is used as output, the TIM_CHANNEL_2 will be used as input and + if TIM_CHANNEL_1 is used as input, the TIM_CHANNEL_2 will be used as output + whatever the combination, the TIM_CHANNEL_1 and TIM_CHANNEL_2 should be disabled together */ + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE); + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE); + + if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET) + { + /* Disable the Main Output */ + __HAL_TIM_MOE_DISABLE(htim); + } + + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM channels state */ + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + + /* Return function status */ + return HAL_OK; +} + +/** + * @} + */ + +/** @defgroup TIM_Exported_Functions_Group6 TIM Encoder functions + * @brief TIM Encoder functions + * +@verbatim + ============================================================================== + ##### TIM Encoder functions ##### + ============================================================================== + [..] + This section provides functions allowing to: + (+) Initialize and configure the TIM Encoder. + (+) De-initialize the TIM Encoder. + (+) Start the TIM Encoder. + (+) Stop the TIM Encoder. + (+) Start the TIM Encoder and enable interrupt. + (+) Stop the TIM Encoder and disable interrupt. + (+) Start the TIM Encoder and enable DMA transfer. + (+) Stop the TIM Encoder and disable DMA transfer. + +@endverbatim + * @{ + */ +/** + * @brief Initializes the TIM Encoder Interface and initialize the associated handle. + * @note Switching from Center Aligned counter mode to Edge counter mode (or reverse) + * requires a timer reset to avoid unexpected direction + * due to DIR bit readonly in center aligned mode. + * Ex: call @ref HAL_TIM_Encoder_DeInit() before HAL_TIM_Encoder_Init() + * @note Encoder mode and External clock mode 2 are not compatible and must not be selected together + * Ex: A call for @ref HAL_TIM_Encoder_Init will erase the settings of @ref HAL_TIM_ConfigClockSource + * using TIM_CLOCKSOURCE_ETRMODE2 and vice versa + * @note When the timer instance is initialized in Encoder mode, timer + * channels 1 and channel 2 are reserved and cannot be used for other + * purpose. + * @param htim TIM Encoder Interface handle + * @param sConfig TIM Encoder Interface configuration structure + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_Encoder_Init(TIM_HandleTypeDef *htim, TIM_Encoder_InitTypeDef *sConfig) +{ + uint32_t tmpsmcr; + uint32_t tmpccmr1; + uint32_t tmpccer; + + /* Check the TIM handle allocation */ + if (htim == NULL) + { + return HAL_ERROR; + } + + /* Check the parameters */ + assert_param(IS_TIM_ENCODER_INTERFACE_INSTANCE(htim->Instance)); + assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode)); + assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision)); + assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload)); + assert_param(IS_TIM_ENCODER_MODE(sConfig->EncoderMode)); + assert_param(IS_TIM_IC_SELECTION(sConfig->IC1Selection)); + assert_param(IS_TIM_IC_SELECTION(sConfig->IC2Selection)); + assert_param(IS_TIM_ENCODERINPUT_POLARITY(sConfig->IC1Polarity)); + assert_param(IS_TIM_ENCODERINPUT_POLARITY(sConfig->IC2Polarity)); + assert_param(IS_TIM_IC_PRESCALER(sConfig->IC1Prescaler)); + assert_param(IS_TIM_IC_PRESCALER(sConfig->IC2Prescaler)); + assert_param(IS_TIM_IC_FILTER(sConfig->IC1Filter)); + assert_param(IS_TIM_IC_FILTER(sConfig->IC2Filter)); + assert_param(IS_TIM_PERIOD(htim, htim->Init.Period)); + + if (htim->State == HAL_TIM_STATE_RESET) + { + /* Allocate lock resource and initialize it */ + htim->Lock = HAL_UNLOCKED; + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + /* Reset interrupt callbacks to legacy weak callbacks */ + TIM_ResetCallback(htim); + + if (htim->Encoder_MspInitCallback == NULL) + { + htim->Encoder_MspInitCallback = HAL_TIM_Encoder_MspInit; + } + /* Init the low level hardware : GPIO, CLOCK, NVIC */ + htim->Encoder_MspInitCallback(htim); +#else + /* Init the low level hardware : GPIO, CLOCK, NVIC and DMA */ + HAL_TIM_Encoder_MspInit(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + + /* Set the TIM state */ + htim->State = HAL_TIM_STATE_BUSY; + + /* Reset the SMS and ECE bits */ + htim->Instance->SMCR &= ~(TIM_SMCR_SMS | TIM_SMCR_ECE); + + /* Configure the Time base in the Encoder Mode */ + TIM_Base_SetConfig(htim->Instance, &htim->Init); + + /* Get the TIMx SMCR register value */ + tmpsmcr = htim->Instance->SMCR; + + /* Get the TIMx CCMR1 register value */ + tmpccmr1 = htim->Instance->CCMR1; + + /* Get the TIMx CCER register value */ + tmpccer = htim->Instance->CCER; + + /* Set the encoder Mode */ + tmpsmcr |= sConfig->EncoderMode; + + /* Select the Capture Compare 1 and the Capture Compare 2 as input */ + tmpccmr1 &= ~(TIM_CCMR1_CC1S | TIM_CCMR1_CC2S); + tmpccmr1 |= (sConfig->IC1Selection | (sConfig->IC2Selection << 8U)); + + /* Set the Capture Compare 1 and the Capture Compare 2 prescalers and filters */ + tmpccmr1 &= ~(TIM_CCMR1_IC1PSC | TIM_CCMR1_IC2PSC); + tmpccmr1 &= ~(TIM_CCMR1_IC1F | TIM_CCMR1_IC2F); + tmpccmr1 |= sConfig->IC1Prescaler | (sConfig->IC2Prescaler << 8U); + tmpccmr1 |= (sConfig->IC1Filter << 4U) | (sConfig->IC2Filter << 12U); + + /* Set the TI1 and the TI2 Polarities */ + tmpccer &= ~(TIM_CCER_CC1P | TIM_CCER_CC2P); + tmpccer &= ~(TIM_CCER_CC1NP | TIM_CCER_CC2NP); + tmpccer |= sConfig->IC1Polarity | (sConfig->IC2Polarity << 4U); + + /* Write to TIMx SMCR */ + htim->Instance->SMCR = tmpsmcr; + + /* Write to TIMx CCMR1 */ + htim->Instance->CCMR1 = tmpccmr1; + + /* Write to TIMx CCER */ + htim->Instance->CCER = tmpccer; + + /* Initialize the DMA burst operation state */ + htim->DMABurstState = HAL_DMA_BURST_STATE_READY; + + /* Set the TIM channels state */ + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + + /* Initialize the TIM state*/ + htim->State = HAL_TIM_STATE_READY; + + return HAL_OK; +} + + +/** + * @brief DeInitializes the TIM Encoder interface + * @param htim TIM Encoder Interface handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_Encoder_DeInit(TIM_HandleTypeDef *htim) +{ + /* Check the parameters */ + assert_param(IS_TIM_INSTANCE(htim->Instance)); + + htim->State = HAL_TIM_STATE_BUSY; + + /* Disable the TIM Peripheral Clock */ + __HAL_TIM_DISABLE(htim); + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + if (htim->Encoder_MspDeInitCallback == NULL) + { + htim->Encoder_MspDeInitCallback = HAL_TIM_Encoder_MspDeInit; + } + /* DeInit the low level hardware */ + htim->Encoder_MspDeInitCallback(htim); +#else + /* DeInit the low level hardware: GPIO, CLOCK, NVIC */ + HAL_TIM_Encoder_MspDeInit(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + + /* Change the DMA burst operation state */ + htim->DMABurstState = HAL_DMA_BURST_STATE_RESET; + + /* Set the TIM channels state */ + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_RESET); + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_RESET); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_RESET); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_RESET); + + /* Change TIM state */ + htim->State = HAL_TIM_STATE_RESET; + + /* Release Lock */ + __HAL_UNLOCK(htim); + + return HAL_OK; +} + +/** + * @brief Initializes the TIM Encoder Interface MSP. + * @param htim TIM Encoder Interface handle + * @retval None + */ +__weak void HAL_TIM_Encoder_MspInit(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_Encoder_MspInit could be implemented in the user file + */ +} + +/** + * @brief DeInitializes TIM Encoder Interface MSP. + * @param htim TIM Encoder Interface handle + * @retval None + */ +__weak void HAL_TIM_Encoder_MspDeInit(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_Encoder_MspDeInit could be implemented in the user file + */ +} + +/** + * @brief Starts the TIM Encoder Interface. + * @param htim TIM Encoder Interface handle + * @param Channel TIM Channels to be enabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_ALL: TIM Channel 1 and TIM Channel 2 are selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_Encoder_Start(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + HAL_TIM_ChannelStateTypeDef channel_1_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_1); + HAL_TIM_ChannelStateTypeDef channel_2_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_2); + HAL_TIM_ChannelStateTypeDef complementary_channel_1_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHANNEL_1); + HAL_TIM_ChannelStateTypeDef complementary_channel_2_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHANNEL_2); + + /* Check the parameters */ + assert_param(IS_TIM_ENCODER_INTERFACE_INSTANCE(htim->Instance)); + + /* Set the TIM channel(s) state */ + if (Channel == TIM_CHANNEL_1) + { + if ((channel_1_state != HAL_TIM_CHANNEL_STATE_READY) + || (complementary_channel_1_state != HAL_TIM_CHANNEL_STATE_READY)) + { + return HAL_ERROR; + } + else + { + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + } + } + else if (Channel == TIM_CHANNEL_2) + { + if ((channel_2_state != HAL_TIM_CHANNEL_STATE_READY) + || (complementary_channel_2_state != HAL_TIM_CHANNEL_STATE_READY)) + { + return HAL_ERROR; + } + else + { + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + } + } + else + { + if ((channel_1_state != HAL_TIM_CHANNEL_STATE_READY) + || (channel_2_state != HAL_TIM_CHANNEL_STATE_READY) + || (complementary_channel_1_state != HAL_TIM_CHANNEL_STATE_READY) + || (complementary_channel_2_state != HAL_TIM_CHANNEL_STATE_READY)) + { + return HAL_ERROR; + } + else + { + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + } + } + + /* Enable the encoder interface channels */ + switch (Channel) + { + case TIM_CHANNEL_1: + { + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE); + break; + } + + case TIM_CHANNEL_2: + { + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE); + break; + } + + default : + { + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE); + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE); + break; + } + } + /* Enable the Peripheral */ + __HAL_TIM_ENABLE(htim); + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Stops the TIM Encoder Interface. + * @param htim TIM Encoder Interface handle + * @param Channel TIM Channels to be disabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_ALL: TIM Channel 1 and TIM Channel 2 are selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_Encoder_Stop(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + /* Check the parameters */ + assert_param(IS_TIM_ENCODER_INTERFACE_INSTANCE(htim->Instance)); + + /* Disable the Input Capture channels 1 and 2 + (in the EncoderInterface the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2) */ + switch (Channel) + { + case TIM_CHANNEL_1: + { + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE); + break; + } + + case TIM_CHANNEL_2: + { + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE); + break; + } + + default : + { + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE); + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE); + break; + } + } + + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM channel(s) state */ + if ((Channel == TIM_CHANNEL_1) || (Channel == TIM_CHANNEL_2)) + { + TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + } + else + { + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + } + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Starts the TIM Encoder Interface in interrupt mode. + * @param htim TIM Encoder Interface handle + * @param Channel TIM Channels to be enabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_ALL: TIM Channel 1 and TIM Channel 2 are selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_Encoder_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + HAL_TIM_ChannelStateTypeDef channel_1_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_1); + HAL_TIM_ChannelStateTypeDef channel_2_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_2); + HAL_TIM_ChannelStateTypeDef complementary_channel_1_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHANNEL_1); + HAL_TIM_ChannelStateTypeDef complementary_channel_2_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHANNEL_2); + + /* Check the parameters */ + assert_param(IS_TIM_ENCODER_INTERFACE_INSTANCE(htim->Instance)); + + /* Set the TIM channel(s) state */ + if (Channel == TIM_CHANNEL_1) + { + if ((channel_1_state != HAL_TIM_CHANNEL_STATE_READY) + || (complementary_channel_1_state != HAL_TIM_CHANNEL_STATE_READY)) + { + return HAL_ERROR; + } + else + { + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + } + } + else if (Channel == TIM_CHANNEL_2) + { + if ((channel_2_state != HAL_TIM_CHANNEL_STATE_READY) + || (complementary_channel_2_state != HAL_TIM_CHANNEL_STATE_READY)) + { + return HAL_ERROR; + } + else + { + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + } + } + else + { + if ((channel_1_state != HAL_TIM_CHANNEL_STATE_READY) + || (channel_2_state != HAL_TIM_CHANNEL_STATE_READY) + || (complementary_channel_1_state != HAL_TIM_CHANNEL_STATE_READY) + || (complementary_channel_2_state != HAL_TIM_CHANNEL_STATE_READY)) + { + return HAL_ERROR; + } + else + { + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + } + } + + /* Enable the encoder interface channels */ + /* Enable the capture compare Interrupts 1 and/or 2 */ + switch (Channel) + { + case TIM_CHANNEL_1: + { + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE); + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1); + break; + } + + case TIM_CHANNEL_2: + { + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE); + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2); + break; + } + + default : + { + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE); + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE); + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1); + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2); + break; + } + } + + /* Enable the Peripheral */ + __HAL_TIM_ENABLE(htim); + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Stops the TIM Encoder Interface in interrupt mode. + * @param htim TIM Encoder Interface handle + * @param Channel TIM Channels to be disabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_ALL: TIM Channel 1 and TIM Channel 2 are selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_Encoder_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + /* Check the parameters */ + assert_param(IS_TIM_ENCODER_INTERFACE_INSTANCE(htim->Instance)); + + /* Disable the Input Capture channels 1 and 2 + (in the EncoderInterface the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2) */ + if (Channel == TIM_CHANNEL_1) + { + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE); + + /* Disable the capture compare Interrupts 1 */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1); + } + else if (Channel == TIM_CHANNEL_2) + { + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE); + + /* Disable the capture compare Interrupts 2 */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2); + } + else + { + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE); + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE); + + /* Disable the capture compare Interrupts 1 and 2 */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1); + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2); + } + + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM channel(s) state */ + if ((Channel == TIM_CHANNEL_1) || (Channel == TIM_CHANNEL_2)) + { + TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + } + else + { + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + } + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Starts the TIM Encoder Interface in DMA mode. + * @param htim TIM Encoder Interface handle + * @param Channel TIM Channels to be enabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_ALL: TIM Channel 1 and TIM Channel 2 are selected + * @param pData1 The destination Buffer address for IC1. + * @param pData2 The destination Buffer address for IC2. + * @param Length The length of data to be transferred from TIM peripheral to memory. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_Encoder_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData1, + uint32_t *pData2, uint16_t Length) +{ + HAL_TIM_ChannelStateTypeDef channel_1_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_1); + HAL_TIM_ChannelStateTypeDef channel_2_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_2); + HAL_TIM_ChannelStateTypeDef complementary_channel_1_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHANNEL_1); + HAL_TIM_ChannelStateTypeDef complementary_channel_2_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHANNEL_2); + + /* Check the parameters */ + assert_param(IS_TIM_ENCODER_INTERFACE_INSTANCE(htim->Instance)); + + /* Set the TIM channel(s) state */ + if (Channel == TIM_CHANNEL_1) + { + if ((channel_1_state == HAL_TIM_CHANNEL_STATE_BUSY) + || (complementary_channel_1_state == HAL_TIM_CHANNEL_STATE_BUSY)) + { + return HAL_BUSY; + } + else if ((channel_1_state == HAL_TIM_CHANNEL_STATE_READY) + && (complementary_channel_1_state == HAL_TIM_CHANNEL_STATE_READY)) + { + if ((pData1 == NULL) || (Length == 0U)) + { + return HAL_ERROR; + } + else + { + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + } + } + else + { + return HAL_ERROR; + } + } + else if (Channel == TIM_CHANNEL_2) + { + if ((channel_2_state == HAL_TIM_CHANNEL_STATE_BUSY) + || (complementary_channel_2_state == HAL_TIM_CHANNEL_STATE_BUSY)) + { + return HAL_BUSY; + } + else if ((channel_2_state == HAL_TIM_CHANNEL_STATE_READY) + && (complementary_channel_2_state == HAL_TIM_CHANNEL_STATE_READY)) + { + if ((pData2 == NULL) || (Length == 0U)) + { + return HAL_ERROR; + } + else + { + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + } + } + else + { + return HAL_ERROR; + } + } + else + { + if ((channel_1_state == HAL_TIM_CHANNEL_STATE_BUSY) + || (channel_2_state == HAL_TIM_CHANNEL_STATE_BUSY) + || (complementary_channel_1_state == HAL_TIM_CHANNEL_STATE_BUSY) + || (complementary_channel_2_state == HAL_TIM_CHANNEL_STATE_BUSY)) + { + return HAL_BUSY; + } + else if ((channel_1_state == HAL_TIM_CHANNEL_STATE_READY) + && (channel_2_state == HAL_TIM_CHANNEL_STATE_READY) + && (complementary_channel_1_state == HAL_TIM_CHANNEL_STATE_READY) + && (complementary_channel_2_state == HAL_TIM_CHANNEL_STATE_READY)) + { + if ((((pData1 == NULL) || (pData2 == NULL))) || (Length == 0U)) + { + return HAL_ERROR; + } + else + { + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + } + } + else + { + return HAL_ERROR; + } + } + + switch (Channel) + { + case TIM_CHANNEL_1: + { + /* Set the DMA capture callbacks */ + htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMACaptureCplt; + htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)&htim->Instance->CCR1, (uint32_t)pData1, + Length) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + /* Enable the TIM Input Capture DMA request */ + __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC1); + + /* Enable the Capture compare channel */ + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE); + + /* Enable the Peripheral */ + __HAL_TIM_ENABLE(htim); + + break; + } + + case TIM_CHANNEL_2: + { + /* Set the DMA capture callbacks */ + htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback = TIM_DMACaptureCplt; + htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError; + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)&htim->Instance->CCR2, (uint32_t)pData2, + Length) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + /* Enable the TIM Input Capture DMA request */ + __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC2); + + /* Enable the Capture compare channel */ + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE); + + /* Enable the Peripheral */ + __HAL_TIM_ENABLE(htim); + + break; + } + + default: + { + /* Set the DMA capture callbacks */ + htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMACaptureCplt; + htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)&htim->Instance->CCR1, (uint32_t)pData1, + Length) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + + /* Set the DMA capture callbacks */ + htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback = TIM_DMACaptureCplt; + htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)&htim->Instance->CCR2, (uint32_t)pData2, + Length) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + + /* Enable the TIM Input Capture DMA request */ + __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC1); + /* Enable the TIM Input Capture DMA request */ + __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC2); + + /* Enable the Capture compare channel */ + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE); + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE); + + /* Enable the Peripheral */ + __HAL_TIM_ENABLE(htim); + + break; + } + } + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Stops the TIM Encoder Interface in DMA mode. + * @param htim TIM Encoder Interface handle + * @param Channel TIM Channels to be enabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_ALL: TIM Channel 1 and TIM Channel 2 are selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_Encoder_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + /* Check the parameters */ + assert_param(IS_TIM_ENCODER_INTERFACE_INSTANCE(htim->Instance)); + + /* Disable the Input Capture channels 1 and 2 + (in the EncoderInterface the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2) */ + if (Channel == TIM_CHANNEL_1) + { + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE); + + /* Disable the capture compare DMA Request 1 */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC1); + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC1]); + } + else if (Channel == TIM_CHANNEL_2) + { + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE); + + /* Disable the capture compare DMA Request 2 */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC2); + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC2]); + } + else + { + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE); + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE); + + /* Disable the capture compare DMA Request 1 and 2 */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC1); + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC2); + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC1]); + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC2]); + } + + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM channel(s) state */ + if ((Channel == TIM_CHANNEL_1) || (Channel == TIM_CHANNEL_2)) + { + TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + } + else + { + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + } + + /* Return function status */ + return HAL_OK; +} + +/** + * @} + */ +/** @defgroup TIM_Exported_Functions_Group7 TIM IRQ handler management + * @brief TIM IRQ handler management + * +@verbatim + ============================================================================== + ##### IRQ handler management ##### + ============================================================================== + [..] + This section provides Timer IRQ handler function. + +@endverbatim + * @{ + */ +/** + * @brief This function handles TIM interrupts requests. + * @param htim TIM handle + * @retval None + */ +void HAL_TIM_IRQHandler(TIM_HandleTypeDef *htim) +{ + /* Capture compare 1 event */ + if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC1) != RESET) + { + if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC1) != RESET) + { + { + __HAL_TIM_CLEAR_IT(htim, TIM_IT_CC1); + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1; + + /* Input capture event */ + if ((htim->Instance->CCMR1 & TIM_CCMR1_CC1S) != 0x00U) + { +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->IC_CaptureCallback(htim); +#else + HAL_TIM_IC_CaptureCallback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + /* Output compare event */ + else + { +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->OC_DelayElapsedCallback(htim); + htim->PWM_PulseFinishedCallback(htim); +#else + HAL_TIM_OC_DelayElapsedCallback(htim); + HAL_TIM_PWM_PulseFinishedCallback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; + } + } + } + /* Capture compare 2 event */ + if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC2) != RESET) + { + if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC2) != RESET) + { + __HAL_TIM_CLEAR_IT(htim, TIM_IT_CC2); + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2; + /* Input capture event */ + if ((htim->Instance->CCMR1 & TIM_CCMR1_CC2S) != 0x00U) + { +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->IC_CaptureCallback(htim); +#else + HAL_TIM_IC_CaptureCallback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + /* Output compare event */ + else + { +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->OC_DelayElapsedCallback(htim); + htim->PWM_PulseFinishedCallback(htim); +#else + HAL_TIM_OC_DelayElapsedCallback(htim); + HAL_TIM_PWM_PulseFinishedCallback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; + } + } + /* Capture compare 3 event */ + if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC3) != RESET) + { + if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC3) != RESET) + { + __HAL_TIM_CLEAR_IT(htim, TIM_IT_CC3); + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3; + /* Input capture event */ + if ((htim->Instance->CCMR2 & TIM_CCMR2_CC3S) != 0x00U) + { +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->IC_CaptureCallback(htim); +#else + HAL_TIM_IC_CaptureCallback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + /* Output compare event */ + else + { +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->OC_DelayElapsedCallback(htim); + htim->PWM_PulseFinishedCallback(htim); +#else + HAL_TIM_OC_DelayElapsedCallback(htim); + HAL_TIM_PWM_PulseFinishedCallback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; + } + } + /* Capture compare 4 event */ + if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC4) != RESET) + { + if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC4) != RESET) + { + __HAL_TIM_CLEAR_IT(htim, TIM_IT_CC4); + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_4; + /* Input capture event */ + if ((htim->Instance->CCMR2 & TIM_CCMR2_CC4S) != 0x00U) + { +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->IC_CaptureCallback(htim); +#else + HAL_TIM_IC_CaptureCallback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + /* Output compare event */ + else + { +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->OC_DelayElapsedCallback(htim); + htim->PWM_PulseFinishedCallback(htim); +#else + HAL_TIM_OC_DelayElapsedCallback(htim); + HAL_TIM_PWM_PulseFinishedCallback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; + } + } + /* TIM Update event */ + if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_UPDATE) != RESET) + { + if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_UPDATE) != RESET) + { + __HAL_TIM_CLEAR_IT(htim, TIM_IT_UPDATE); +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->PeriodElapsedCallback(htim); +#else + HAL_TIM_PeriodElapsedCallback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + } + /* TIM Break input event */ + if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_BREAK) != RESET) + { + if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_BREAK) != RESET) + { + __HAL_TIM_CLEAR_IT(htim, TIM_IT_BREAK); +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->BreakCallback(htim); +#else + HAL_TIMEx_BreakCallback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + } + /* TIM Break2 input event */ + if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_BREAK2) != RESET) + { + if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_BREAK) != RESET) + { + __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_BREAK2); +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->Break2Callback(htim); +#else + HAL_TIMEx_Break2Callback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + } + /* TIM Trigger detection event */ + if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_TRIGGER) != RESET) + { + if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_TRIGGER) != RESET) + { + __HAL_TIM_CLEAR_IT(htim, TIM_IT_TRIGGER); +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->TriggerCallback(htim); +#else + HAL_TIM_TriggerCallback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + } + /* TIM commutation event */ + if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_COM) != RESET) + { + if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_COM) != RESET) + { + __HAL_TIM_CLEAR_IT(htim, TIM_FLAG_COM); +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->CommutationCallback(htim); +#else + HAL_TIMEx_CommutCallback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + } +} + +/** + * @} + */ + +/** @defgroup TIM_Exported_Functions_Group8 TIM Peripheral Control functions + * @brief TIM Peripheral Control functions + * +@verbatim + ============================================================================== + ##### Peripheral Control functions ##### + ============================================================================== + [..] + This section provides functions allowing to: + (+) Configure The Input Output channels for OC, PWM, IC or One Pulse mode. + (+) Configure External Clock source. + (+) Configure Complementary channels, break features and dead time. + (+) Configure Master and the Slave synchronization. + (+) Configure the DMA Burst Mode. + +@endverbatim + * @{ + */ + +/** + * @brief Initializes the TIM Output Compare Channels according to the specified + * parameters in the TIM_OC_InitTypeDef. + * @param htim TIM Output Compare handle + * @param sConfig TIM Output Compare configuration structure + * @param Channel TIM Channels to configure + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @arg TIM_CHANNEL_5: TIM Channel 5 selected + * @arg TIM_CHANNEL_6: TIM Channel 6 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_OC_ConfigChannel(TIM_HandleTypeDef *htim, + const TIM_OC_InitTypeDef *sConfig, + uint32_t Channel) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Check the parameters */ + assert_param(IS_TIM_CHANNELS(Channel)); + assert_param(IS_TIM_OC_MODE(sConfig->OCMode)); + assert_param(IS_TIM_OC_POLARITY(sConfig->OCPolarity)); + + /* Process Locked */ + __HAL_LOCK(htim); + + switch (Channel) + { + case TIM_CHANNEL_1: + { + /* Check the parameters */ + assert_param(IS_TIM_CC1_INSTANCE(htim->Instance)); + + /* Configure the TIM Channel 1 in Output Compare */ + TIM_OC1_SetConfig(htim->Instance, sConfig); + break; + } + + case TIM_CHANNEL_2: + { + /* Check the parameters */ + assert_param(IS_TIM_CC2_INSTANCE(htim->Instance)); + + /* Configure the TIM Channel 2 in Output Compare */ + TIM_OC2_SetConfig(htim->Instance, sConfig); + break; + } + + case TIM_CHANNEL_3: + { + /* Check the parameters */ + assert_param(IS_TIM_CC3_INSTANCE(htim->Instance)); + + /* Configure the TIM Channel 3 in Output Compare */ + TIM_OC3_SetConfig(htim->Instance, sConfig); + break; + } + + case TIM_CHANNEL_4: + { + /* Check the parameters */ + assert_param(IS_TIM_CC4_INSTANCE(htim->Instance)); + + /* Configure the TIM Channel 4 in Output Compare */ + TIM_OC4_SetConfig(htim->Instance, sConfig); + break; + } + + case TIM_CHANNEL_5: + { + /* Check the parameters */ + assert_param(IS_TIM_CC5_INSTANCE(htim->Instance)); + + /* Configure the TIM Channel 5 in Output Compare */ + TIM_OC5_SetConfig(htim->Instance, sConfig); + break; + } + + case TIM_CHANNEL_6: + { + /* Check the parameters */ + assert_param(IS_TIM_CC6_INSTANCE(htim->Instance)); + + /* Configure the TIM Channel 6 in Output Compare */ + TIM_OC6_SetConfig(htim->Instance, sConfig); + break; + } + + default: + status = HAL_ERROR; + break; + } + + __HAL_UNLOCK(htim); + + return status; +} + +/** + * @brief Initializes the TIM Input Capture Channels according to the specified + * parameters in the TIM_IC_InitTypeDef. + * @param htim TIM IC handle + * @param sConfig TIM Input Capture configuration structure + * @param Channel TIM Channel to configure + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_IC_ConfigChannel(TIM_HandleTypeDef *htim, const TIM_IC_InitTypeDef *sConfig, uint32_t Channel) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Check the parameters */ + assert_param(IS_TIM_CC1_INSTANCE(htim->Instance)); + assert_param(IS_TIM_IC_POLARITY(sConfig->ICPolarity)); + assert_param(IS_TIM_IC_SELECTION(sConfig->ICSelection)); + assert_param(IS_TIM_IC_PRESCALER(sConfig->ICPrescaler)); + assert_param(IS_TIM_IC_FILTER(sConfig->ICFilter)); + + /* Process Locked */ + __HAL_LOCK(htim); + + if (Channel == TIM_CHANNEL_1) + { + /* TI1 Configuration */ + TIM_TI1_SetConfig(htim->Instance, + sConfig->ICPolarity, + sConfig->ICSelection, + sConfig->ICFilter); + + /* Reset the IC1PSC Bits */ + htim->Instance->CCMR1 &= ~TIM_CCMR1_IC1PSC; + + /* Set the IC1PSC value */ + htim->Instance->CCMR1 |= sConfig->ICPrescaler; + } + else if (Channel == TIM_CHANNEL_2) + { + /* TI2 Configuration */ + assert_param(IS_TIM_CC2_INSTANCE(htim->Instance)); + + TIM_TI2_SetConfig(htim->Instance, + sConfig->ICPolarity, + sConfig->ICSelection, + sConfig->ICFilter); + + /* Reset the IC2PSC Bits */ + htim->Instance->CCMR1 &= ~TIM_CCMR1_IC2PSC; + + /* Set the IC2PSC value */ + htim->Instance->CCMR1 |= (sConfig->ICPrescaler << 8U); + } + else if (Channel == TIM_CHANNEL_3) + { + /* TI3 Configuration */ + assert_param(IS_TIM_CC3_INSTANCE(htim->Instance)); + + TIM_TI3_SetConfig(htim->Instance, + sConfig->ICPolarity, + sConfig->ICSelection, + sConfig->ICFilter); + + /* Reset the IC3PSC Bits */ + htim->Instance->CCMR2 &= ~TIM_CCMR2_IC3PSC; + + /* Set the IC3PSC value */ + htim->Instance->CCMR2 |= sConfig->ICPrescaler; + } + else if (Channel == TIM_CHANNEL_4) + { + /* TI4 Configuration */ + assert_param(IS_TIM_CC4_INSTANCE(htim->Instance)); + + TIM_TI4_SetConfig(htim->Instance, + sConfig->ICPolarity, + sConfig->ICSelection, + sConfig->ICFilter); + + /* Reset the IC4PSC Bits */ + htim->Instance->CCMR2 &= ~TIM_CCMR2_IC4PSC; + + /* Set the IC4PSC value */ + htim->Instance->CCMR2 |= (sConfig->ICPrescaler << 8U); + } + else + { + status = HAL_ERROR; + } + + __HAL_UNLOCK(htim); + + return status; +} + +/** + * @brief Initializes the TIM PWM channels according to the specified + * parameters in the TIM_OC_InitTypeDef. + * @param htim TIM PWM handle + * @param sConfig TIM PWM configuration structure + * @param Channel TIM Channels to be configured + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @arg TIM_CHANNEL_5: TIM Channel 5 selected + * @arg TIM_CHANNEL_6: TIM Channel 6 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_PWM_ConfigChannel(TIM_HandleTypeDef *htim, + const TIM_OC_InitTypeDef *sConfig, + uint32_t Channel) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Check the parameters */ + assert_param(IS_TIM_CHANNELS(Channel)); + assert_param(IS_TIM_PWM_MODE(sConfig->OCMode)); + assert_param(IS_TIM_OC_POLARITY(sConfig->OCPolarity)); + assert_param(IS_TIM_FAST_STATE(sConfig->OCFastMode)); + + /* Process Locked */ + __HAL_LOCK(htim); + + switch (Channel) + { + case TIM_CHANNEL_1: + { + /* Check the parameters */ + assert_param(IS_TIM_CC1_INSTANCE(htim->Instance)); + + /* Configure the Channel 1 in PWM mode */ + TIM_OC1_SetConfig(htim->Instance, sConfig); + + /* Set the Preload enable bit for channel1 */ + htim->Instance->CCMR1 |= TIM_CCMR1_OC1PE; + + /* Configure the Output Fast mode */ + htim->Instance->CCMR1 &= ~TIM_CCMR1_OC1FE; + htim->Instance->CCMR1 |= sConfig->OCFastMode; + break; + } + + case TIM_CHANNEL_2: + { + /* Check the parameters */ + assert_param(IS_TIM_CC2_INSTANCE(htim->Instance)); + + /* Configure the Channel 2 in PWM mode */ + TIM_OC2_SetConfig(htim->Instance, sConfig); + + /* Set the Preload enable bit for channel2 */ + htim->Instance->CCMR1 |= TIM_CCMR1_OC2PE; + + /* Configure the Output Fast mode */ + htim->Instance->CCMR1 &= ~TIM_CCMR1_OC2FE; + htim->Instance->CCMR1 |= sConfig->OCFastMode << 8U; + break; + } + + case TIM_CHANNEL_3: + { + /* Check the parameters */ + assert_param(IS_TIM_CC3_INSTANCE(htim->Instance)); + + /* Configure the Channel 3 in PWM mode */ + TIM_OC3_SetConfig(htim->Instance, sConfig); + + /* Set the Preload enable bit for channel3 */ + htim->Instance->CCMR2 |= TIM_CCMR2_OC3PE; + + /* Configure the Output Fast mode */ + htim->Instance->CCMR2 &= ~TIM_CCMR2_OC3FE; + htim->Instance->CCMR2 |= sConfig->OCFastMode; + break; + } + + case TIM_CHANNEL_4: + { + /* Check the parameters */ + assert_param(IS_TIM_CC4_INSTANCE(htim->Instance)); + + /* Configure the Channel 4 in PWM mode */ + TIM_OC4_SetConfig(htim->Instance, sConfig); + + /* Set the Preload enable bit for channel4 */ + htim->Instance->CCMR2 |= TIM_CCMR2_OC4PE; + + /* Configure the Output Fast mode */ + htim->Instance->CCMR2 &= ~TIM_CCMR2_OC4FE; + htim->Instance->CCMR2 |= sConfig->OCFastMode << 8U; + break; + } + + case TIM_CHANNEL_5: + { + /* Check the parameters */ + assert_param(IS_TIM_CC5_INSTANCE(htim->Instance)); + + /* Configure the Channel 5 in PWM mode */ + TIM_OC5_SetConfig(htim->Instance, sConfig); + + /* Set the Preload enable bit for channel5*/ + htim->Instance->CCMR3 |= TIM_CCMR3_OC5PE; + + /* Configure the Output Fast mode */ + htim->Instance->CCMR3 &= ~TIM_CCMR3_OC5FE; + htim->Instance->CCMR3 |= sConfig->OCFastMode; + break; + } + + case TIM_CHANNEL_6: + { + /* Check the parameters */ + assert_param(IS_TIM_CC6_INSTANCE(htim->Instance)); + + /* Configure the Channel 6 in PWM mode */ + TIM_OC6_SetConfig(htim->Instance, sConfig); + + /* Set the Preload enable bit for channel6 */ + htim->Instance->CCMR3 |= TIM_CCMR3_OC6PE; + + /* Configure the Output Fast mode */ + htim->Instance->CCMR3 &= ~TIM_CCMR3_OC6FE; + htim->Instance->CCMR3 |= sConfig->OCFastMode << 8U; + break; + } + + default: + status = HAL_ERROR; + break; + } + + __HAL_UNLOCK(htim); + + return status; +} + +/** + * @brief Initializes the TIM One Pulse Channels according to the specified + * parameters in the TIM_OnePulse_InitTypeDef. + * @param htim TIM One Pulse handle + * @param sConfig TIM One Pulse configuration structure + * @param OutputChannel TIM output channel to configure + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @param InputChannel TIM input Channel to configure + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @note To output a waveform with a minimum delay user can enable the fast + * mode by calling the @ref __HAL_TIM_ENABLE_OCxFAST macro. Then CCx + * output is forced in response to the edge detection on TIx input, + * without taking in account the comparison. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_OnePulse_ConfigChannel(TIM_HandleTypeDef *htim, TIM_OnePulse_InitTypeDef *sConfig, + uint32_t OutputChannel, uint32_t InputChannel) +{ + HAL_StatusTypeDef status = HAL_OK; + TIM_OC_InitTypeDef temp1; + + /* Check the parameters */ + assert_param(IS_TIM_OPM_CHANNELS(OutputChannel)); + assert_param(IS_TIM_OPM_CHANNELS(InputChannel)); + + if (OutputChannel != InputChannel) + { + /* Process Locked */ + __HAL_LOCK(htim); + + htim->State = HAL_TIM_STATE_BUSY; + + /* Extract the Output compare configuration from sConfig structure */ + temp1.OCMode = sConfig->OCMode; + temp1.Pulse = sConfig->Pulse; + temp1.OCPolarity = sConfig->OCPolarity; + temp1.OCNPolarity = sConfig->OCNPolarity; + temp1.OCIdleState = sConfig->OCIdleState; + temp1.OCNIdleState = sConfig->OCNIdleState; + + switch (OutputChannel) + { + case TIM_CHANNEL_1: + { + assert_param(IS_TIM_CC1_INSTANCE(htim->Instance)); + + TIM_OC1_SetConfig(htim->Instance, &temp1); + break; + } + + case TIM_CHANNEL_2: + { + assert_param(IS_TIM_CC2_INSTANCE(htim->Instance)); + + TIM_OC2_SetConfig(htim->Instance, &temp1); + break; + } + + default: + status = HAL_ERROR; + break; + } + + if (status == HAL_OK) + { + switch (InputChannel) + { + case TIM_CHANNEL_1: + { + assert_param(IS_TIM_CC1_INSTANCE(htim->Instance)); + + TIM_TI1_SetConfig(htim->Instance, sConfig->ICPolarity, + sConfig->ICSelection, sConfig->ICFilter); + + /* Reset the IC1PSC Bits */ + htim->Instance->CCMR1 &= ~TIM_CCMR1_IC1PSC; + + /* Select the Trigger source */ + htim->Instance->SMCR &= ~TIM_SMCR_TS; + htim->Instance->SMCR |= TIM_TS_TI1FP1; + + /* Select the Slave Mode */ + htim->Instance->SMCR &= ~TIM_SMCR_SMS; + htim->Instance->SMCR |= TIM_SLAVEMODE_TRIGGER; + break; + } + + case TIM_CHANNEL_2: + { + assert_param(IS_TIM_CC2_INSTANCE(htim->Instance)); + + TIM_TI2_SetConfig(htim->Instance, sConfig->ICPolarity, + sConfig->ICSelection, sConfig->ICFilter); + + /* Reset the IC2PSC Bits */ + htim->Instance->CCMR1 &= ~TIM_CCMR1_IC2PSC; + + /* Select the Trigger source */ + htim->Instance->SMCR &= ~TIM_SMCR_TS; + htim->Instance->SMCR |= TIM_TS_TI2FP2; + + /* Select the Slave Mode */ + htim->Instance->SMCR &= ~TIM_SMCR_SMS; + htim->Instance->SMCR |= TIM_SLAVEMODE_TRIGGER; + break; + } + + default: + status = HAL_ERROR; + break; + } + } + + htim->State = HAL_TIM_STATE_READY; + + __HAL_UNLOCK(htim); + + return status; + } + else + { + return HAL_ERROR; + } +} + +/** + * @brief Configure the DMA Burst to transfer Data from the memory to the TIM peripheral + * @param htim TIM handle + * @param BurstBaseAddress TIM Base address from where the DMA will start the Data write + * This parameter can be one of the following values: + * @arg TIM_DMABASE_CR1 + * @arg TIM_DMABASE_CR2 + * @arg TIM_DMABASE_SMCR + * @arg TIM_DMABASE_DIER + * @arg TIM_DMABASE_SR + * @arg TIM_DMABASE_EGR + * @arg TIM_DMABASE_CCMR1 + * @arg TIM_DMABASE_CCMR2 + * @arg TIM_DMABASE_CCER + * @arg TIM_DMABASE_CNT + * @arg TIM_DMABASE_PSC + * @arg TIM_DMABASE_ARR + * @arg TIM_DMABASE_RCR + * @arg TIM_DMABASE_CCR1 + * @arg TIM_DMABASE_CCR2 + * @arg TIM_DMABASE_CCR3 + * @arg TIM_DMABASE_CCR4 + * @arg TIM_DMABASE_BDTR + * @arg TIM_DMABASE_OR1 + * @arg TIM_DMABASE_CCMR3 + * @arg TIM_DMABASE_CCR5 + * @arg TIM_DMABASE_CCR6 + * @arg TIM_DMABASE_AF1 + * @arg TIM_DMABASE_AF2 + * @arg TIM_DMABASE_TISEL + * @param BurstRequestSrc TIM DMA Request sources + * This parameter can be one of the following values: + * @arg TIM_DMA_UPDATE: TIM update Interrupt source + * @arg TIM_DMA_CC1: TIM Capture Compare 1 DMA source + * @arg TIM_DMA_CC2: TIM Capture Compare 2 DMA source + * @arg TIM_DMA_CC3: TIM Capture Compare 3 DMA source + * @arg TIM_DMA_CC4: TIM Capture Compare 4 DMA source + * @arg TIM_DMA_COM: TIM Commutation DMA source + * @arg TIM_DMA_TRIGGER: TIM Trigger DMA source + * @param BurstBuffer The Buffer address. + * @param BurstLength DMA Burst length. This parameter can be one value + * between: TIM_DMABURSTLENGTH_1TRANSFER and TIM_DMABURSTLENGTH_18TRANSFERS. + * @note This function should be used only when BurstLength is equal to DMA data transfer length. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress, + uint32_t BurstRequestSrc, const uint32_t *BurstBuffer, uint32_t BurstLength) +{ + HAL_StatusTypeDef status; + + status = HAL_TIM_DMABurst_MultiWriteStart(htim, BurstBaseAddress, BurstRequestSrc, BurstBuffer, BurstLength, + ((BurstLength) >> 8U) + 1U); + + + + return status; +} + +/** + * @brief Configure the DMA Burst to transfer multiple Data from the memory to the TIM peripheral + * @param htim TIM handle + * @param BurstBaseAddress TIM Base address from where the DMA will start the Data write + * This parameter can be one of the following values: + * @arg TIM_DMABASE_CR1 + * @arg TIM_DMABASE_CR2 + * @arg TIM_DMABASE_SMCR + * @arg TIM_DMABASE_DIER + * @arg TIM_DMABASE_SR + * @arg TIM_DMABASE_EGR + * @arg TIM_DMABASE_CCMR1 + * @arg TIM_DMABASE_CCMR2 + * @arg TIM_DMABASE_CCER + * @arg TIM_DMABASE_CNT + * @arg TIM_DMABASE_PSC + * @arg TIM_DMABASE_ARR + * @arg TIM_DMABASE_RCR + * @arg TIM_DMABASE_CCR1 + * @arg TIM_DMABASE_CCR2 + * @arg TIM_DMABASE_CCR3 + * @arg TIM_DMABASE_CCR4 + * @arg TIM_DMABASE_BDTR + * @arg TIM_DMABASE_OR1 + * @arg TIM_DMABASE_CCMR3 + * @arg TIM_DMABASE_CCR5 + * @arg TIM_DMABASE_CCR6 + * @arg TIM_DMABASE_AF1 + * @arg TIM_DMABASE_AF2 + * @arg TIM_DMABASE_TISEL + * @param BurstRequestSrc TIM DMA Request sources + * This parameter can be one of the following values: + * @arg TIM_DMA_UPDATE: TIM update Interrupt source + * @arg TIM_DMA_CC1: TIM Capture Compare 1 DMA source + * @arg TIM_DMA_CC2: TIM Capture Compare 2 DMA source + * @arg TIM_DMA_CC3: TIM Capture Compare 3 DMA source + * @arg TIM_DMA_CC4: TIM Capture Compare 4 DMA source + * @arg TIM_DMA_COM: TIM Commutation DMA source + * @arg TIM_DMA_TRIGGER: TIM Trigger DMA source + * @param BurstBuffer The Buffer address. + * @param BurstLength DMA Burst length. This parameter can be one value + * between: TIM_DMABURSTLENGTH_1TRANSFER and TIM_DMABURSTLENGTH_18TRANSFERS. + * @param DataLength Data length. This parameter can be one value + * between 1 and 0xFFFF. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_DMABurst_MultiWriteStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress, + uint32_t BurstRequestSrc, const uint32_t *BurstBuffer, + uint32_t BurstLength, uint32_t DataLength) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Check the parameters */ + assert_param(IS_TIM_DMABURST_INSTANCE(htim->Instance)); + assert_param(IS_TIM_DMA_BASE(BurstBaseAddress)); + assert_param(IS_TIM_DMA_SOURCE(BurstRequestSrc)); + assert_param(IS_TIM_DMA_LENGTH(BurstLength)); + assert_param(IS_TIM_DMA_DATA_LENGTH(DataLength)); + + if (htim->DMABurstState == HAL_DMA_BURST_STATE_BUSY) + { + return HAL_BUSY; + } + else if (htim->DMABurstState == HAL_DMA_BURST_STATE_READY) + { + if ((BurstBuffer == NULL) && (BurstLength > 0U)) + { + return HAL_ERROR; + } + else + { + htim->DMABurstState = HAL_DMA_BURST_STATE_BUSY; + } + } + else + { + /* nothing to do */ + } + + switch (BurstRequestSrc) + { + case TIM_DMA_UPDATE: + { + /* Set the DMA Period elapsed callbacks */ + htim->hdma[TIM_DMA_ID_UPDATE]->XferCpltCallback = TIM_DMAPeriodElapsedCplt; + htim->hdma[TIM_DMA_ID_UPDATE]->XferHalfCpltCallback = TIM_DMAPeriodElapsedHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_UPDATE]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_UPDATE], (uint32_t)BurstBuffer, + (uint32_t)&htim->Instance->DMAR, DataLength) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + break; + } + case TIM_DMA_CC1: + { + /* Set the DMA compare callbacks */ + htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMADelayPulseCplt; + htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)BurstBuffer, + (uint32_t)&htim->Instance->DMAR, DataLength) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + break; + } + case TIM_DMA_CC2: + { + /* Set the DMA compare callbacks */ + htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback = TIM_DMADelayPulseCplt; + htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)BurstBuffer, + (uint32_t)&htim->Instance->DMAR, DataLength) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + break; + } + case TIM_DMA_CC3: + { + /* Set the DMA compare callbacks */ + htim->hdma[TIM_DMA_ID_CC3]->XferCpltCallback = TIM_DMADelayPulseCplt; + htim->hdma[TIM_DMA_ID_CC3]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC3]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)BurstBuffer, + (uint32_t)&htim->Instance->DMAR, DataLength) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + break; + } + case TIM_DMA_CC4: + { + /* Set the DMA compare callbacks */ + htim->hdma[TIM_DMA_ID_CC4]->XferCpltCallback = TIM_DMADelayPulseCplt; + htim->hdma[TIM_DMA_ID_CC4]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC4]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC4], (uint32_t)BurstBuffer, + (uint32_t)&htim->Instance->DMAR, DataLength) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + break; + } + case TIM_DMA_COM: + { + /* Set the DMA commutation callbacks */ + htim->hdma[TIM_DMA_ID_COMMUTATION]->XferCpltCallback = TIMEx_DMACommutationCplt; + htim->hdma[TIM_DMA_ID_COMMUTATION]->XferHalfCpltCallback = TIMEx_DMACommutationHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_COMMUTATION]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_COMMUTATION], (uint32_t)BurstBuffer, + (uint32_t)&htim->Instance->DMAR, DataLength) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + break; + } + case TIM_DMA_TRIGGER: + { + /* Set the DMA trigger callbacks */ + htim->hdma[TIM_DMA_ID_TRIGGER]->XferCpltCallback = TIM_DMATriggerCplt; + htim->hdma[TIM_DMA_ID_TRIGGER]->XferHalfCpltCallback = TIM_DMATriggerHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_TRIGGER]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_TRIGGER], (uint32_t)BurstBuffer, + (uint32_t)&htim->Instance->DMAR, DataLength) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + break; + } + default: + status = HAL_ERROR; + break; + } + + if (status == HAL_OK) + { + /* Configure the DMA Burst Mode */ + htim->Instance->DCR = (BurstBaseAddress | BurstLength); + /* Enable the TIM DMA Request */ + __HAL_TIM_ENABLE_DMA(htim, BurstRequestSrc); + } + + /* Return function status */ + return status; +} + +/** + * @brief Stops the TIM DMA Burst mode + * @param htim TIM handle + * @param BurstRequestSrc TIM DMA Request sources to disable + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStop(TIM_HandleTypeDef *htim, uint32_t BurstRequestSrc) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Check the parameters */ + assert_param(IS_TIM_DMA_SOURCE(BurstRequestSrc)); + + /* Abort the DMA transfer (at least disable the DMA channel) */ + switch (BurstRequestSrc) + { + case TIM_DMA_UPDATE: + { + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_UPDATE]); + break; + } + case TIM_DMA_CC1: + { + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC1]); + break; + } + case TIM_DMA_CC2: + { + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC2]); + break; + } + case TIM_DMA_CC3: + { + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC3]); + break; + } + case TIM_DMA_CC4: + { + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC4]); + break; + } + case TIM_DMA_COM: + { + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_COMMUTATION]); + break; + } + case TIM_DMA_TRIGGER: + { + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_TRIGGER]); + break; + } + default: + status = HAL_ERROR; + break; + } + + if (status == HAL_OK) + { + /* Disable the TIM Update DMA request */ + __HAL_TIM_DISABLE_DMA(htim, BurstRequestSrc); + + /* Change the DMA burst operation state */ + htim->DMABurstState = HAL_DMA_BURST_STATE_READY; + } + + /* Return function status */ + return status; +} + +/** + * @brief Configure the DMA Burst to transfer Data from the TIM peripheral to the memory + * @param htim TIM handle + * @param BurstBaseAddress TIM Base address from where the DMA will start the Data read + * This parameter can be one of the following values: + * @arg TIM_DMABASE_CR1 + * @arg TIM_DMABASE_CR2 + * @arg TIM_DMABASE_SMCR + * @arg TIM_DMABASE_DIER + * @arg TIM_DMABASE_SR + * @arg TIM_DMABASE_EGR + * @arg TIM_DMABASE_CCMR1 + * @arg TIM_DMABASE_CCMR2 + * @arg TIM_DMABASE_CCER + * @arg TIM_DMABASE_CNT + * @arg TIM_DMABASE_PSC + * @arg TIM_DMABASE_ARR + * @arg TIM_DMABASE_RCR + * @arg TIM_DMABASE_CCR1 + * @arg TIM_DMABASE_CCR2 + * @arg TIM_DMABASE_CCR3 + * @arg TIM_DMABASE_CCR4 + * @arg TIM_DMABASE_BDTR + * @arg TIM_DMABASE_OR1 + * @arg TIM_DMABASE_CCMR3 + * @arg TIM_DMABASE_CCR5 + * @arg TIM_DMABASE_CCR6 + * @arg TIM_DMABASE_AF1 + * @arg TIM_DMABASE_AF2 + * @arg TIM_DMABASE_TISEL + * @param BurstRequestSrc TIM DMA Request sources + * This parameter can be one of the following values: + * @arg TIM_DMA_UPDATE: TIM update Interrupt source + * @arg TIM_DMA_CC1: TIM Capture Compare 1 DMA source + * @arg TIM_DMA_CC2: TIM Capture Compare 2 DMA source + * @arg TIM_DMA_CC3: TIM Capture Compare 3 DMA source + * @arg TIM_DMA_CC4: TIM Capture Compare 4 DMA source + * @arg TIM_DMA_COM: TIM Commutation DMA source + * @arg TIM_DMA_TRIGGER: TIM Trigger DMA source + * @param BurstBuffer The Buffer address. + * @param BurstLength DMA Burst length. This parameter can be one value + * between: TIM_DMABURSTLENGTH_1TRANSFER and TIM_DMABURSTLENGTH_18TRANSFERS. + * @note This function should be used only when BurstLength is equal to DMA data transfer length. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_DMABurst_ReadStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress, + uint32_t BurstRequestSrc, uint32_t *BurstBuffer, uint32_t BurstLength) +{ + HAL_StatusTypeDef status; + + status = HAL_TIM_DMABurst_MultiReadStart(htim, BurstBaseAddress, BurstRequestSrc, BurstBuffer, BurstLength, + ((BurstLength) >> 8U) + 1U); + + + return status; +} + +/** + * @brief Configure the DMA Burst to transfer Data from the TIM peripheral to the memory + * @param htim TIM handle + * @param BurstBaseAddress TIM Base address from where the DMA will start the Data read + * This parameter can be one of the following values: + * @arg TIM_DMABASE_CR1 + * @arg TIM_DMABASE_CR2 + * @arg TIM_DMABASE_SMCR + * @arg TIM_DMABASE_DIER + * @arg TIM_DMABASE_SR + * @arg TIM_DMABASE_EGR + * @arg TIM_DMABASE_CCMR1 + * @arg TIM_DMABASE_CCMR2 + * @arg TIM_DMABASE_CCER + * @arg TIM_DMABASE_CNT + * @arg TIM_DMABASE_PSC + * @arg TIM_DMABASE_ARR + * @arg TIM_DMABASE_RCR + * @arg TIM_DMABASE_CCR1 + * @arg TIM_DMABASE_CCR2 + * @arg TIM_DMABASE_CCR3 + * @arg TIM_DMABASE_CCR4 + * @arg TIM_DMABASE_BDTR + * @arg TIM_DMABASE_OR1 + * @arg TIM_DMABASE_CCMR3 + * @arg TIM_DMABASE_CCR5 + * @arg TIM_DMABASE_CCR6 + * @arg TIM_DMABASE_AF1 + * @arg TIM_DMABASE_AF2 + * @arg TIM_DMABASE_TISEL + * @param BurstRequestSrc TIM DMA Request sources + * This parameter can be one of the following values: + * @arg TIM_DMA_UPDATE: TIM update Interrupt source + * @arg TIM_DMA_CC1: TIM Capture Compare 1 DMA source + * @arg TIM_DMA_CC2: TIM Capture Compare 2 DMA source + * @arg TIM_DMA_CC3: TIM Capture Compare 3 DMA source + * @arg TIM_DMA_CC4: TIM Capture Compare 4 DMA source + * @arg TIM_DMA_COM: TIM Commutation DMA source + * @arg TIM_DMA_TRIGGER: TIM Trigger DMA source + * @param BurstBuffer The Buffer address. + * @param BurstLength DMA Burst length. This parameter can be one value + * between: TIM_DMABURSTLENGTH_1TRANSFER and TIM_DMABURSTLENGTH_18TRANSFERS. + * @param DataLength Data length. This parameter can be one value + * between 1 and 0xFFFF. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_DMABurst_MultiReadStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress, + uint32_t BurstRequestSrc, uint32_t *BurstBuffer, + uint32_t BurstLength, uint32_t DataLength) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Check the parameters */ + assert_param(IS_TIM_DMABURST_INSTANCE(htim->Instance)); + assert_param(IS_TIM_DMA_BASE(BurstBaseAddress)); + assert_param(IS_TIM_DMA_SOURCE(BurstRequestSrc)); + assert_param(IS_TIM_DMA_LENGTH(BurstLength)); + assert_param(IS_TIM_DMA_DATA_LENGTH(DataLength)); + + if (htim->DMABurstState == HAL_DMA_BURST_STATE_BUSY) + { + return HAL_BUSY; + } + else if (htim->DMABurstState == HAL_DMA_BURST_STATE_READY) + { + if ((BurstBuffer == NULL) && (BurstLength > 0U)) + { + return HAL_ERROR; + } + else + { + htim->DMABurstState = HAL_DMA_BURST_STATE_BUSY; + } + } + else + { + /* nothing to do */ + } + switch (BurstRequestSrc) + { + case TIM_DMA_UPDATE: + { + /* Set the DMA Period elapsed callbacks */ + htim->hdma[TIM_DMA_ID_UPDATE]->XferCpltCallback = TIM_DMAPeriodElapsedCplt; + htim->hdma[TIM_DMA_ID_UPDATE]->XferHalfCpltCallback = TIM_DMAPeriodElapsedHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_UPDATE]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_UPDATE], (uint32_t)&htim->Instance->DMAR, (uint32_t)BurstBuffer, + DataLength) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + break; + } + case TIM_DMA_CC1: + { + /* Set the DMA capture callbacks */ + htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMACaptureCplt; + htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)&htim->Instance->DMAR, (uint32_t)BurstBuffer, + DataLength) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + break; + } + case TIM_DMA_CC2: + { + /* Set the DMA capture callbacks */ + htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback = TIM_DMACaptureCplt; + htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)&htim->Instance->DMAR, (uint32_t)BurstBuffer, + DataLength) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + break; + } + case TIM_DMA_CC3: + { + /* Set the DMA capture callbacks */ + htim->hdma[TIM_DMA_ID_CC3]->XferCpltCallback = TIM_DMACaptureCplt; + htim->hdma[TIM_DMA_ID_CC3]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC3]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)&htim->Instance->DMAR, (uint32_t)BurstBuffer, + DataLength) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + break; + } + case TIM_DMA_CC4: + { + /* Set the DMA capture callbacks */ + htim->hdma[TIM_DMA_ID_CC4]->XferCpltCallback = TIM_DMACaptureCplt; + htim->hdma[TIM_DMA_ID_CC4]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC4]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC4], (uint32_t)&htim->Instance->DMAR, (uint32_t)BurstBuffer, + DataLength) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + break; + } + case TIM_DMA_COM: + { + /* Set the DMA commutation callbacks */ + htim->hdma[TIM_DMA_ID_COMMUTATION]->XferCpltCallback = TIMEx_DMACommutationCplt; + htim->hdma[TIM_DMA_ID_COMMUTATION]->XferHalfCpltCallback = TIMEx_DMACommutationHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_COMMUTATION]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_COMMUTATION], (uint32_t)&htim->Instance->DMAR, (uint32_t)BurstBuffer, + DataLength) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + break; + } + case TIM_DMA_TRIGGER: + { + /* Set the DMA trigger callbacks */ + htim->hdma[TIM_DMA_ID_TRIGGER]->XferCpltCallback = TIM_DMATriggerCplt; + htim->hdma[TIM_DMA_ID_TRIGGER]->XferHalfCpltCallback = TIM_DMATriggerHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_TRIGGER]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_TRIGGER], (uint32_t)&htim->Instance->DMAR, (uint32_t)BurstBuffer, + DataLength) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + break; + } + default: + status = HAL_ERROR; + break; + } + + if (status == HAL_OK) + { + /* Configure the DMA Burst Mode */ + htim->Instance->DCR = (BurstBaseAddress | BurstLength); + + /* Enable the TIM DMA Request */ + __HAL_TIM_ENABLE_DMA(htim, BurstRequestSrc); + } + + /* Return function status */ + return status; +} + +/** + * @brief Stop the DMA burst reading + * @param htim TIM handle + * @param BurstRequestSrc TIM DMA Request sources to disable. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_DMABurst_ReadStop(TIM_HandleTypeDef *htim, uint32_t BurstRequestSrc) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Check the parameters */ + assert_param(IS_TIM_DMA_SOURCE(BurstRequestSrc)); + + /* Abort the DMA transfer (at least disable the DMA channel) */ + switch (BurstRequestSrc) + { + case TIM_DMA_UPDATE: + { + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_UPDATE]); + break; + } + case TIM_DMA_CC1: + { + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC1]); + break; + } + case TIM_DMA_CC2: + { + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC2]); + break; + } + case TIM_DMA_CC3: + { + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC3]); + break; + } + case TIM_DMA_CC4: + { + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC4]); + break; + } + case TIM_DMA_COM: + { + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_COMMUTATION]); + break; + } + case TIM_DMA_TRIGGER: + { + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_TRIGGER]); + break; + } + default: + status = HAL_ERROR; + break; + } + + if (status == HAL_OK) + { + /* Disable the TIM Update DMA request */ + __HAL_TIM_DISABLE_DMA(htim, BurstRequestSrc); + + /* Change the DMA burst operation state */ + htim->DMABurstState = HAL_DMA_BURST_STATE_READY; + } + + /* Return function status */ + return status; +} + +/** + * @brief Generate a software event + * @param htim TIM handle + * @param EventSource specifies the event source. + * This parameter can be one of the following values: + * @arg TIM_EVENTSOURCE_UPDATE: Timer update Event source + * @arg TIM_EVENTSOURCE_CC1: Timer Capture Compare 1 Event source + * @arg TIM_EVENTSOURCE_CC2: Timer Capture Compare 2 Event source + * @arg TIM_EVENTSOURCE_CC3: Timer Capture Compare 3 Event source + * @arg TIM_EVENTSOURCE_CC4: Timer Capture Compare 4 Event source + * @arg TIM_EVENTSOURCE_COM: Timer COM event source + * @arg TIM_EVENTSOURCE_TRIGGER: Timer Trigger Event source + * @arg TIM_EVENTSOURCE_BREAK: Timer Break event source + * @arg TIM_EVENTSOURCE_BREAK2: Timer Break2 event source + * @note Basic timers can only generate an update event. + * @note TIM_EVENTSOURCE_COM is relevant only with advanced timer instances. + * @note TIM_EVENTSOURCE_BREAK and TIM_EVENTSOURCE_BREAK2 are relevant + * only for timer instances supporting break input(s). + * @retval HAL status + */ + +HAL_StatusTypeDef HAL_TIM_GenerateEvent(TIM_HandleTypeDef *htim, uint32_t EventSource) +{ + /* Check the parameters */ + assert_param(IS_TIM_INSTANCE(htim->Instance)); + assert_param(IS_TIM_EVENT_SOURCE(EventSource)); + + /* Process Locked */ + __HAL_LOCK(htim); + + /* Change the TIM state */ + htim->State = HAL_TIM_STATE_BUSY; + + /* Set the event sources */ + htim->Instance->EGR = EventSource; + + /* Change the TIM state */ + htim->State = HAL_TIM_STATE_READY; + + __HAL_UNLOCK(htim); + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Configures the OCRef clear feature + * @param htim TIM handle + * @param sClearInputConfig pointer to a TIM_ClearInputConfigTypeDef structure that + * contains the OCREF clear feature and parameters for the TIM peripheral. + * @param Channel specifies the TIM Channel + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 + * @arg TIM_CHANNEL_2: TIM Channel 2 + * @arg TIM_CHANNEL_3: TIM Channel 3 + * @arg TIM_CHANNEL_4: TIM Channel 4 + * @arg TIM_CHANNEL_5: TIM Channel 5 + * @arg TIM_CHANNEL_6: TIM Channel 6 + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_ConfigOCrefClear(TIM_HandleTypeDef *htim, + const TIM_ClearInputConfigTypeDef *sClearInputConfig, + uint32_t Channel) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Check the parameters */ + assert_param(IS_TIM_OCXREF_CLEAR_INSTANCE(htim->Instance)); + assert_param(IS_TIM_CLEARINPUT_SOURCE(sClearInputConfig->ClearInputSource)); + + /* Process Locked */ + __HAL_LOCK(htim); + + htim->State = HAL_TIM_STATE_BUSY; + + switch (sClearInputConfig->ClearInputSource) + { + case TIM_CLEARINPUTSOURCE_NONE: + { + /* Clear the OCREF clear selection bit and the the ETR Bits */ + CLEAR_BIT(htim->Instance->SMCR, (TIM_SMCR_OCCS | TIM_SMCR_ETF | TIM_SMCR_ETPS | TIM_SMCR_ECE | TIM_SMCR_ETP)); + + /* Clear TIMx_OR1_OCREF_CLR (reset value) */ + CLEAR_BIT(htim->Instance->OR1, TIMx_OR1_OCREF_CLR); + break; + } +#if defined(COMP1) || defined(COMP2) || defined(COMP3) +#if defined(COMP1) && defined(COMP2) + case TIM_CLEARINPUTSOURCE_COMP1: + case TIM_CLEARINPUTSOURCE_COMP2: +#endif /* COMP1 && COMP2 */ +#if defined(COMP3) + case TIM_CLEARINPUTSOURCE_COMP3: +#endif /* COMP3 */ + { + /* Clear the OCREF clear selection bit */ + CLEAR_BIT(htim->Instance->SMCR, TIM_SMCR_OCCS); + + /* OCREF_CLR_INT is connected to COMPx output */ + MODIFY_REG(htim->Instance->OR1, TIMx_OR1_OCREF_CLR, sClearInputConfig->ClearInputSource); + break; + } +#endif /* COMP1 || COMP2 || COMP3 */ + + case TIM_CLEARINPUTSOURCE_ETR: + { + /* Check the parameters */ + assert_param(IS_TIM_CLEARINPUT_POLARITY(sClearInputConfig->ClearInputPolarity)); + assert_param(IS_TIM_CLEARINPUT_PRESCALER(sClearInputConfig->ClearInputPrescaler)); + assert_param(IS_TIM_CLEARINPUT_FILTER(sClearInputConfig->ClearInputFilter)); + + /* When OCRef clear feature is used with ETR source, ETR prescaler must be off */ + if (sClearInputConfig->ClearInputPrescaler != TIM_CLEARINPUTPRESCALER_DIV1) + { + htim->State = HAL_TIM_STATE_READY; + __HAL_UNLOCK(htim); + return HAL_ERROR; + } + + TIM_ETR_SetConfig(htim->Instance, + sClearInputConfig->ClearInputPrescaler, + sClearInputConfig->ClearInputPolarity, + sClearInputConfig->ClearInputFilter); + + /* Set the OCREF clear selection bit */ + SET_BIT(htim->Instance->SMCR, TIM_SMCR_OCCS); + + /* Clear TIMx_OR1_OCREF_CLR (reset value) */ + CLEAR_BIT(htim->Instance->OR1, TIMx_OR1_OCREF_CLR); + break; + } + + default: + status = HAL_ERROR; + break; + } + + if (status == HAL_OK) + { + switch (Channel) + { + case TIM_CHANNEL_1: + { + if (sClearInputConfig->ClearInputState != (uint32_t)DISABLE) + { + /* Enable the OCREF clear feature for Channel 1 */ + SET_BIT(htim->Instance->CCMR1, TIM_CCMR1_OC1CE); + } + else + { + /* Disable the OCREF clear feature for Channel 1 */ + CLEAR_BIT(htim->Instance->CCMR1, TIM_CCMR1_OC1CE); + } + break; + } + case TIM_CHANNEL_2: + { + if (sClearInputConfig->ClearInputState != (uint32_t)DISABLE) + { + /* Enable the OCREF clear feature for Channel 2 */ + SET_BIT(htim->Instance->CCMR1, TIM_CCMR1_OC2CE); + } + else + { + /* Disable the OCREF clear feature for Channel 2 */ + CLEAR_BIT(htim->Instance->CCMR1, TIM_CCMR1_OC2CE); + } + break; + } + case TIM_CHANNEL_3: + { + if (sClearInputConfig->ClearInputState != (uint32_t)DISABLE) + { + /* Enable the OCREF clear feature for Channel 3 */ + SET_BIT(htim->Instance->CCMR2, TIM_CCMR2_OC3CE); + } + else + { + /* Disable the OCREF clear feature for Channel 3 */ + CLEAR_BIT(htim->Instance->CCMR2, TIM_CCMR2_OC3CE); + } + break; + } + case TIM_CHANNEL_4: + { + if (sClearInputConfig->ClearInputState != (uint32_t)DISABLE) + { + /* Enable the OCREF clear feature for Channel 4 */ + SET_BIT(htim->Instance->CCMR2, TIM_CCMR2_OC4CE); + } + else + { + /* Disable the OCREF clear feature for Channel 4 */ + CLEAR_BIT(htim->Instance->CCMR2, TIM_CCMR2_OC4CE); + } + break; + } + case TIM_CHANNEL_5: + { + if (sClearInputConfig->ClearInputState != (uint32_t)DISABLE) + { + /* Enable the OCREF clear feature for Channel 5 */ + SET_BIT(htim->Instance->CCMR3, TIM_CCMR3_OC5CE); + } + else + { + /* Disable the OCREF clear feature for Channel 5 */ + CLEAR_BIT(htim->Instance->CCMR3, TIM_CCMR3_OC5CE); + } + break; + } + case TIM_CHANNEL_6: + { + if (sClearInputConfig->ClearInputState != (uint32_t)DISABLE) + { + /* Enable the OCREF clear feature for Channel 6 */ + SET_BIT(htim->Instance->CCMR3, TIM_CCMR3_OC6CE); + } + else + { + /* Disable the OCREF clear feature for Channel 6 */ + CLEAR_BIT(htim->Instance->CCMR3, TIM_CCMR3_OC6CE); + } + break; + } + default: + break; + } + } + + htim->State = HAL_TIM_STATE_READY; + + __HAL_UNLOCK(htim); + + return status; +} + +/** + * @brief Configures the clock source to be used + * @param htim TIM handle + * @param sClockSourceConfig pointer to a TIM_ClockConfigTypeDef structure that + * contains the clock source information for the TIM peripheral. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_ConfigClockSource(TIM_HandleTypeDef *htim, const TIM_ClockConfigTypeDef *sClockSourceConfig) +{ + HAL_StatusTypeDef status = HAL_OK; + uint32_t tmpsmcr; + + /* Process Locked */ + __HAL_LOCK(htim); + + htim->State = HAL_TIM_STATE_BUSY; + + /* Check the parameters */ + assert_param(IS_TIM_CLOCKSOURCE(sClockSourceConfig->ClockSource)); + + /* Reset the SMS, TS, ECE, ETPS and ETRF bits */ + tmpsmcr = htim->Instance->SMCR; + tmpsmcr &= ~(TIM_SMCR_SMS | TIM_SMCR_TS); + tmpsmcr &= ~(TIM_SMCR_ETF | TIM_SMCR_ETPS | TIM_SMCR_ECE | TIM_SMCR_ETP); + htim->Instance->SMCR = tmpsmcr; + + switch (sClockSourceConfig->ClockSource) + { + case TIM_CLOCKSOURCE_INTERNAL: + { + assert_param(IS_TIM_INSTANCE(htim->Instance)); + break; + } + + case TIM_CLOCKSOURCE_ETRMODE1: + { + /* Check whether or not the timer instance supports external trigger input mode 1 (ETRF)*/ + assert_param(IS_TIM_CLOCKSOURCE_ETRMODE1_INSTANCE(htim->Instance)); + + /* Check ETR input conditioning related parameters */ + assert_param(IS_TIM_CLOCKPRESCALER(sClockSourceConfig->ClockPrescaler)); + assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); + assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); + + /* Configure the ETR Clock source */ + TIM_ETR_SetConfig(htim->Instance, + sClockSourceConfig->ClockPrescaler, + sClockSourceConfig->ClockPolarity, + sClockSourceConfig->ClockFilter); + + /* Select the External clock mode1 and the ETRF trigger */ + tmpsmcr = htim->Instance->SMCR; + tmpsmcr |= (TIM_SLAVEMODE_EXTERNAL1 | TIM_CLOCKSOURCE_ETRMODE1); + /* Write to TIMx SMCR */ + htim->Instance->SMCR = tmpsmcr; + break; + } + + case TIM_CLOCKSOURCE_ETRMODE2: + { + /* Check whether or not the timer instance supports external trigger input mode 2 (ETRF)*/ + assert_param(IS_TIM_CLOCKSOURCE_ETRMODE2_INSTANCE(htim->Instance)); + + /* Check ETR input conditioning related parameters */ + assert_param(IS_TIM_CLOCKPRESCALER(sClockSourceConfig->ClockPrescaler)); + assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); + assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); + + /* Configure the ETR Clock source */ + TIM_ETR_SetConfig(htim->Instance, + sClockSourceConfig->ClockPrescaler, + sClockSourceConfig->ClockPolarity, + sClockSourceConfig->ClockFilter); + /* Enable the External clock mode2 */ + htim->Instance->SMCR |= TIM_SMCR_ECE; + break; + } + + case TIM_CLOCKSOURCE_TI1: + { + /* Check whether or not the timer instance supports external clock mode 1 */ + assert_param(IS_TIM_CLOCKSOURCE_TIX_INSTANCE(htim->Instance)); + + /* Check TI1 input conditioning related parameters */ + assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); + assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); + + TIM_TI1_ConfigInputStage(htim->Instance, + sClockSourceConfig->ClockPolarity, + sClockSourceConfig->ClockFilter); + TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI1); + break; + } + + case TIM_CLOCKSOURCE_TI2: + { + /* Check whether or not the timer instance supports external clock mode 1 (ETRF)*/ + assert_param(IS_TIM_CLOCKSOURCE_TIX_INSTANCE(htim->Instance)); + + /* Check TI2 input conditioning related parameters */ + assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); + assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); + + TIM_TI2_ConfigInputStage(htim->Instance, + sClockSourceConfig->ClockPolarity, + sClockSourceConfig->ClockFilter); + TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI2); + break; + } + + case TIM_CLOCKSOURCE_TI1ED: + { + /* Check whether or not the timer instance supports external clock mode 1 */ + assert_param(IS_TIM_CLOCKSOURCE_TIX_INSTANCE(htim->Instance)); + + /* Check TI1 input conditioning related parameters */ + assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); + assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); + + TIM_TI1_ConfigInputStage(htim->Instance, + sClockSourceConfig->ClockPolarity, + sClockSourceConfig->ClockFilter); + TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI1ED); + break; + } + + case TIM_CLOCKSOURCE_ITR0: + case TIM_CLOCKSOURCE_ITR1: + case TIM_CLOCKSOURCE_ITR2: + case TIM_CLOCKSOURCE_ITR3: + { + /* Check whether or not the timer instance supports internal trigger input */ + assert_param(IS_TIM_CLOCKSOURCE_ITRX_INSTANCE(htim->Instance)); + + TIM_ITRx_SetConfig(htim->Instance, sClockSourceConfig->ClockSource); + break; + } + + default: + status = HAL_ERROR; + break; + } + htim->State = HAL_TIM_STATE_READY; + + __HAL_UNLOCK(htim); + + return status; +} + +/** + * @brief Selects the signal connected to the TI1 input: direct from CH1_input + * or a XOR combination between CH1_input, CH2_input & CH3_input + * @param htim TIM handle. + * @param TI1_Selection Indicate whether or not channel 1 is connected to the + * output of a XOR gate. + * This parameter can be one of the following values: + * @arg TIM_TI1SELECTION_CH1: The TIMx_CH1 pin is connected to TI1 input + * @arg TIM_TI1SELECTION_XORCOMBINATION: The TIMx_CH1, CH2 and CH3 + * pins are connected to the TI1 input (XOR combination) + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_ConfigTI1Input(TIM_HandleTypeDef *htim, uint32_t TI1_Selection) +{ + uint32_t tmpcr2; + + /* Check the parameters */ + assert_param(IS_TIM_XOR_INSTANCE(htim->Instance)); + assert_param(IS_TIM_TI1SELECTION(TI1_Selection)); + + /* Get the TIMx CR2 register value */ + tmpcr2 = htim->Instance->CR2; + + /* Reset the TI1 selection */ + tmpcr2 &= ~TIM_CR2_TI1S; + + /* Set the TI1 selection */ + tmpcr2 |= TI1_Selection; + + /* Write to TIMxCR2 */ + htim->Instance->CR2 = tmpcr2; + + return HAL_OK; +} + +/** + * @brief Configures the TIM in Slave mode + * @param htim TIM handle. + * @param sSlaveConfig pointer to a TIM_SlaveConfigTypeDef structure that + * contains the selected trigger (internal trigger input, filtered + * timer input or external trigger input) and the Slave mode + * (Disable, Reset, Gated, Trigger, External clock mode 1). + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_SlaveConfigSynchro(TIM_HandleTypeDef *htim, const TIM_SlaveConfigTypeDef *sSlaveConfig) +{ + /* Check the parameters */ + assert_param(IS_TIM_SLAVE_INSTANCE(htim->Instance)); + assert_param(IS_TIM_SLAVE_MODE(sSlaveConfig->SlaveMode)); + assert_param(IS_TIM_TRIGGER_SELECTION(sSlaveConfig->InputTrigger)); + + __HAL_LOCK(htim); + + htim->State = HAL_TIM_STATE_BUSY; + + if (TIM_SlaveTimer_SetConfig(htim, sSlaveConfig) != HAL_OK) + { + htim->State = HAL_TIM_STATE_READY; + __HAL_UNLOCK(htim); + return HAL_ERROR; + } + + /* Disable Trigger Interrupt */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_TRIGGER); + + /* Disable Trigger DMA request */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_TRIGGER); + + htim->State = HAL_TIM_STATE_READY; + + __HAL_UNLOCK(htim); + + return HAL_OK; +} + +/** + * @brief Configures the TIM in Slave mode in interrupt mode + * @param htim TIM handle. + * @param sSlaveConfig pointer to a TIM_SlaveConfigTypeDef structure that + * contains the selected trigger (internal trigger input, filtered + * timer input or external trigger input) and the Slave mode + * (Disable, Reset, Gated, Trigger, External clock mode 1). + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_SlaveConfigSynchro_IT(TIM_HandleTypeDef *htim, + const TIM_SlaveConfigTypeDef *sSlaveConfig) +{ + /* Check the parameters */ + assert_param(IS_TIM_SLAVE_INSTANCE(htim->Instance)); + assert_param(IS_TIM_SLAVE_MODE(sSlaveConfig->SlaveMode)); + assert_param(IS_TIM_TRIGGER_SELECTION(sSlaveConfig->InputTrigger)); + + __HAL_LOCK(htim); + + htim->State = HAL_TIM_STATE_BUSY; + + if (TIM_SlaveTimer_SetConfig(htim, sSlaveConfig) != HAL_OK) + { + htim->State = HAL_TIM_STATE_READY; + __HAL_UNLOCK(htim); + return HAL_ERROR; + } + + /* Enable Trigger Interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_TRIGGER); + + /* Disable Trigger DMA request */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_TRIGGER); + + htim->State = HAL_TIM_STATE_READY; + + __HAL_UNLOCK(htim); + + return HAL_OK; +} + +/** + * @brief Read the captured value from Capture Compare unit + * @param htim TIM handle. + * @param Channel TIM Channels to be enabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @retval Captured value + */ +uint32_t HAL_TIM_ReadCapturedValue(const TIM_HandleTypeDef *htim, uint32_t Channel) +{ + uint32_t tmpreg = 0U; + + switch (Channel) + { + case TIM_CHANNEL_1: + { + /* Check the parameters */ + assert_param(IS_TIM_CC1_INSTANCE(htim->Instance)); + + /* Return the capture 1 value */ + tmpreg = htim->Instance->CCR1; + + break; + } + case TIM_CHANNEL_2: + { + /* Check the parameters */ + assert_param(IS_TIM_CC2_INSTANCE(htim->Instance)); + + /* Return the capture 2 value */ + tmpreg = htim->Instance->CCR2; + + break; + } + + case TIM_CHANNEL_3: + { + /* Check the parameters */ + assert_param(IS_TIM_CC3_INSTANCE(htim->Instance)); + + /* Return the capture 3 value */ + tmpreg = htim->Instance->CCR3; + + break; + } + + case TIM_CHANNEL_4: + { + /* Check the parameters */ + assert_param(IS_TIM_CC4_INSTANCE(htim->Instance)); + + /* Return the capture 4 value */ + tmpreg = htim->Instance->CCR4; + + break; + } + + default: + break; + } + + return tmpreg; +} + +/** + * @} + */ + +/** @defgroup TIM_Exported_Functions_Group9 TIM Callbacks functions + * @brief TIM Callbacks functions + * +@verbatim + ============================================================================== + ##### TIM Callbacks functions ##### + ============================================================================== + [..] + This section provides TIM callback functions: + (+) TIM Period elapsed callback + (+) TIM Output Compare callback + (+) TIM Input capture callback + (+) TIM Trigger callback + (+) TIM Error callback + +@endverbatim + * @{ + */ + +/** + * @brief Period elapsed callback in non-blocking mode + * @param htim TIM handle + * @retval None + */ +__weak void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_PeriodElapsedCallback could be implemented in the user file + */ +} + +/** + * @brief Period elapsed half complete callback in non-blocking mode + * @param htim TIM handle + * @retval None + */ +__weak void HAL_TIM_PeriodElapsedHalfCpltCallback(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_PeriodElapsedHalfCpltCallback could be implemented in the user file + */ +} + +/** + * @brief Output Compare callback in non-blocking mode + * @param htim TIM OC handle + * @retval None + */ +__weak void HAL_TIM_OC_DelayElapsedCallback(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_OC_DelayElapsedCallback could be implemented in the user file + */ +} + +/** + * @brief Input Capture callback in non-blocking mode + * @param htim TIM IC handle + * @retval None + */ +__weak void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_IC_CaptureCallback could be implemented in the user file + */ +} + +/** + * @brief Input Capture half complete callback in non-blocking mode + * @param htim TIM IC handle + * @retval None + */ +__weak void HAL_TIM_IC_CaptureHalfCpltCallback(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_IC_CaptureHalfCpltCallback could be implemented in the user file + */ +} + +/** + * @brief PWM Pulse finished callback in non-blocking mode + * @param htim TIM handle + * @retval None + */ +__weak void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_PWM_PulseFinishedCallback could be implemented in the user file + */ +} + +/** + * @brief PWM Pulse finished half complete callback in non-blocking mode + * @param htim TIM handle + * @retval None + */ +__weak void HAL_TIM_PWM_PulseFinishedHalfCpltCallback(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_PWM_PulseFinishedHalfCpltCallback could be implemented in the user file + */ +} + +/** + * @brief Hall Trigger detection callback in non-blocking mode + * @param htim TIM handle + * @retval None + */ +__weak void HAL_TIM_TriggerCallback(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_TriggerCallback could be implemented in the user file + */ +} + +/** + * @brief Hall Trigger detection half complete callback in non-blocking mode + * @param htim TIM handle + * @retval None + */ +__weak void HAL_TIM_TriggerHalfCpltCallback(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_TriggerHalfCpltCallback could be implemented in the user file + */ +} + +/** + * @brief Timer error callback in non-blocking mode + * @param htim TIM handle + * @retval None + */ +__weak void HAL_TIM_ErrorCallback(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_ErrorCallback could be implemented in the user file + */ +} + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) +/** + * @brief Register a User TIM callback to be used instead of the weak predefined callback + * @param htim tim handle + * @param CallbackID ID of the callback to be registered + * This parameter can be one of the following values: + * @arg @ref HAL_TIM_BASE_MSPINIT_CB_ID Base MspInit Callback ID + * @arg @ref HAL_TIM_BASE_MSPDEINIT_CB_ID Base MspDeInit Callback ID + * @arg @ref HAL_TIM_IC_MSPINIT_CB_ID IC MspInit Callback ID + * @arg @ref HAL_TIM_IC_MSPDEINIT_CB_ID IC MspDeInit Callback ID + * @arg @ref HAL_TIM_OC_MSPINIT_CB_ID OC MspInit Callback ID + * @arg @ref HAL_TIM_OC_MSPDEINIT_CB_ID OC MspDeInit Callback ID + * @arg @ref HAL_TIM_PWM_MSPINIT_CB_ID PWM MspInit Callback ID + * @arg @ref HAL_TIM_PWM_MSPDEINIT_CB_ID PWM MspDeInit Callback ID + * @arg @ref HAL_TIM_ONE_PULSE_MSPINIT_CB_ID One Pulse MspInit Callback ID + * @arg @ref HAL_TIM_ONE_PULSE_MSPDEINIT_CB_ID One Pulse MspDeInit Callback ID + * @arg @ref HAL_TIM_ENCODER_MSPINIT_CB_ID Encoder MspInit Callback ID + * @arg @ref HAL_TIM_ENCODER_MSPDEINIT_CB_ID Encoder MspDeInit Callback ID + * @arg @ref HAL_TIM_HALL_SENSOR_MSPINIT_CB_ID Hall Sensor MspInit Callback ID + * @arg @ref HAL_TIM_HALL_SENSOR_MSPDEINIT_CB_ID Hall Sensor MspDeInit Callback ID + * @arg @ref HAL_TIM_PERIOD_ELAPSED_CB_ID Period Elapsed Callback ID + * @arg @ref HAL_TIM_PERIOD_ELAPSED_HALF_CB_ID Period Elapsed half complete Callback ID + * @arg @ref HAL_TIM_TRIGGER_CB_ID Trigger Callback ID + * @arg @ref HAL_TIM_TRIGGER_HALF_CB_ID Trigger half complete Callback ID + * @arg @ref HAL_TIM_IC_CAPTURE_CB_ID Input Capture Callback ID + * @arg @ref HAL_TIM_IC_CAPTURE_HALF_CB_ID Input Capture half complete Callback ID + * @arg @ref HAL_TIM_OC_DELAY_ELAPSED_CB_ID Output Compare Delay Elapsed Callback ID + * @arg @ref HAL_TIM_PWM_PULSE_FINISHED_CB_ID PWM Pulse Finished Callback ID + * @arg @ref HAL_TIM_PWM_PULSE_FINISHED_HALF_CB_ID PWM Pulse Finished half complete Callback ID + * @arg @ref HAL_TIM_ERROR_CB_ID Error Callback ID + * @arg @ref HAL_TIM_COMMUTATION_CB_ID Commutation Callback ID + * @arg @ref HAL_TIM_COMMUTATION_HALF_CB_ID Commutation half complete Callback ID + * @arg @ref HAL_TIM_BREAK_CB_ID Break Callback ID + * @arg @ref HAL_TIM_BREAK2_CB_ID Break2 Callback ID + * @param pCallback pointer to the callback function + * @retval status + */ +HAL_StatusTypeDef HAL_TIM_RegisterCallback(TIM_HandleTypeDef *htim, HAL_TIM_CallbackIDTypeDef CallbackID, + pTIM_CallbackTypeDef pCallback) +{ + HAL_StatusTypeDef status = HAL_OK; + + if (pCallback == NULL) + { + return HAL_ERROR; + } + /* Process locked */ + __HAL_LOCK(htim); + + if (htim->State == HAL_TIM_STATE_READY) + { + switch (CallbackID) + { + case HAL_TIM_BASE_MSPINIT_CB_ID : + htim->Base_MspInitCallback = pCallback; + break; + + case HAL_TIM_BASE_MSPDEINIT_CB_ID : + htim->Base_MspDeInitCallback = pCallback; + break; + + case HAL_TIM_IC_MSPINIT_CB_ID : + htim->IC_MspInitCallback = pCallback; + break; + + case HAL_TIM_IC_MSPDEINIT_CB_ID : + htim->IC_MspDeInitCallback = pCallback; + break; + + case HAL_TIM_OC_MSPINIT_CB_ID : + htim->OC_MspInitCallback = pCallback; + break; + + case HAL_TIM_OC_MSPDEINIT_CB_ID : + htim->OC_MspDeInitCallback = pCallback; + break; + + case HAL_TIM_PWM_MSPINIT_CB_ID : + htim->PWM_MspInitCallback = pCallback; + break; + + case HAL_TIM_PWM_MSPDEINIT_CB_ID : + htim->PWM_MspDeInitCallback = pCallback; + break; + + case HAL_TIM_ONE_PULSE_MSPINIT_CB_ID : + htim->OnePulse_MspInitCallback = pCallback; + break; + + case HAL_TIM_ONE_PULSE_MSPDEINIT_CB_ID : + htim->OnePulse_MspDeInitCallback = pCallback; + break; + + case HAL_TIM_ENCODER_MSPINIT_CB_ID : + htim->Encoder_MspInitCallback = pCallback; + break; + + case HAL_TIM_ENCODER_MSPDEINIT_CB_ID : + htim->Encoder_MspDeInitCallback = pCallback; + break; + + case HAL_TIM_HALL_SENSOR_MSPINIT_CB_ID : + htim->HallSensor_MspInitCallback = pCallback; + break; + + case HAL_TIM_HALL_SENSOR_MSPDEINIT_CB_ID : + htim->HallSensor_MspDeInitCallback = pCallback; + break; + + case HAL_TIM_PERIOD_ELAPSED_CB_ID : + htim->PeriodElapsedCallback = pCallback; + break; + + case HAL_TIM_PERIOD_ELAPSED_HALF_CB_ID : + htim->PeriodElapsedHalfCpltCallback = pCallback; + break; + + case HAL_TIM_TRIGGER_CB_ID : + htim->TriggerCallback = pCallback; + break; + + case HAL_TIM_TRIGGER_HALF_CB_ID : + htim->TriggerHalfCpltCallback = pCallback; + break; + + case HAL_TIM_IC_CAPTURE_CB_ID : + htim->IC_CaptureCallback = pCallback; + break; + + case HAL_TIM_IC_CAPTURE_HALF_CB_ID : + htim->IC_CaptureHalfCpltCallback = pCallback; + break; + + case HAL_TIM_OC_DELAY_ELAPSED_CB_ID : + htim->OC_DelayElapsedCallback = pCallback; + break; + + case HAL_TIM_PWM_PULSE_FINISHED_CB_ID : + htim->PWM_PulseFinishedCallback = pCallback; + break; + + case HAL_TIM_PWM_PULSE_FINISHED_HALF_CB_ID : + htim->PWM_PulseFinishedHalfCpltCallback = pCallback; + break; + + case HAL_TIM_ERROR_CB_ID : + htim->ErrorCallback = pCallback; + break; + + case HAL_TIM_COMMUTATION_CB_ID : + htim->CommutationCallback = pCallback; + break; + + case HAL_TIM_COMMUTATION_HALF_CB_ID : + htim->CommutationHalfCpltCallback = pCallback; + break; + + case HAL_TIM_BREAK_CB_ID : + htim->BreakCallback = pCallback; + break; + + case HAL_TIM_BREAK2_CB_ID : + htim->Break2Callback = pCallback; + break; + + default : + /* Return error status */ + status = HAL_ERROR; + break; + } + } + else if (htim->State == HAL_TIM_STATE_RESET) + { + switch (CallbackID) + { + case HAL_TIM_BASE_MSPINIT_CB_ID : + htim->Base_MspInitCallback = pCallback; + break; + + case HAL_TIM_BASE_MSPDEINIT_CB_ID : + htim->Base_MspDeInitCallback = pCallback; + break; + + case HAL_TIM_IC_MSPINIT_CB_ID : + htim->IC_MspInitCallback = pCallback; + break; + + case HAL_TIM_IC_MSPDEINIT_CB_ID : + htim->IC_MspDeInitCallback = pCallback; + break; + + case HAL_TIM_OC_MSPINIT_CB_ID : + htim->OC_MspInitCallback = pCallback; + break; + + case HAL_TIM_OC_MSPDEINIT_CB_ID : + htim->OC_MspDeInitCallback = pCallback; + break; + + case HAL_TIM_PWM_MSPINIT_CB_ID : + htim->PWM_MspInitCallback = pCallback; + break; + + case HAL_TIM_PWM_MSPDEINIT_CB_ID : + htim->PWM_MspDeInitCallback = pCallback; + break; + + case HAL_TIM_ONE_PULSE_MSPINIT_CB_ID : + htim->OnePulse_MspInitCallback = pCallback; + break; + + case HAL_TIM_ONE_PULSE_MSPDEINIT_CB_ID : + htim->OnePulse_MspDeInitCallback = pCallback; + break; + + case HAL_TIM_ENCODER_MSPINIT_CB_ID : + htim->Encoder_MspInitCallback = pCallback; + break; + + case HAL_TIM_ENCODER_MSPDEINIT_CB_ID : + htim->Encoder_MspDeInitCallback = pCallback; + break; + + case HAL_TIM_HALL_SENSOR_MSPINIT_CB_ID : + htim->HallSensor_MspInitCallback = pCallback; + break; + + case HAL_TIM_HALL_SENSOR_MSPDEINIT_CB_ID : + htim->HallSensor_MspDeInitCallback = pCallback; + break; + + default : + /* Return error status */ + status = HAL_ERROR; + break; + } + } + else + { + /* Return error status */ + status = HAL_ERROR; + } + + /* Release Lock */ + __HAL_UNLOCK(htim); + + return status; +} + +/** + * @brief Unregister a TIM callback + * TIM callback is redirected to the weak predefined callback + * @param htim tim handle + * @param CallbackID ID of the callback to be unregistered + * This parameter can be one of the following values: + * @arg @ref HAL_TIM_BASE_MSPINIT_CB_ID Base MspInit Callback ID + * @arg @ref HAL_TIM_BASE_MSPDEINIT_CB_ID Base MspDeInit Callback ID + * @arg @ref HAL_TIM_IC_MSPINIT_CB_ID IC MspInit Callback ID + * @arg @ref HAL_TIM_IC_MSPDEINIT_CB_ID IC MspDeInit Callback ID + * @arg @ref HAL_TIM_OC_MSPINIT_CB_ID OC MspInit Callback ID + * @arg @ref HAL_TIM_OC_MSPDEINIT_CB_ID OC MspDeInit Callback ID + * @arg @ref HAL_TIM_PWM_MSPINIT_CB_ID PWM MspInit Callback ID + * @arg @ref HAL_TIM_PWM_MSPDEINIT_CB_ID PWM MspDeInit Callback ID + * @arg @ref HAL_TIM_ONE_PULSE_MSPINIT_CB_ID One Pulse MspInit Callback ID + * @arg @ref HAL_TIM_ONE_PULSE_MSPDEINIT_CB_ID One Pulse MspDeInit Callback ID + * @arg @ref HAL_TIM_ENCODER_MSPINIT_CB_ID Encoder MspInit Callback ID + * @arg @ref HAL_TIM_ENCODER_MSPDEINIT_CB_ID Encoder MspDeInit Callback ID + * @arg @ref HAL_TIM_HALL_SENSOR_MSPINIT_CB_ID Hall Sensor MspInit Callback ID + * @arg @ref HAL_TIM_HALL_SENSOR_MSPDEINIT_CB_ID Hall Sensor MspDeInit Callback ID + * @arg @ref HAL_TIM_PERIOD_ELAPSED_CB_ID Period Elapsed Callback ID + * @arg @ref HAL_TIM_PERIOD_ELAPSED_HALF_CB_ID Period Elapsed half complete Callback ID + * @arg @ref HAL_TIM_TRIGGER_CB_ID Trigger Callback ID + * @arg @ref HAL_TIM_TRIGGER_HALF_CB_ID Trigger half complete Callback ID + * @arg @ref HAL_TIM_IC_CAPTURE_CB_ID Input Capture Callback ID + * @arg @ref HAL_TIM_IC_CAPTURE_HALF_CB_ID Input Capture half complete Callback ID + * @arg @ref HAL_TIM_OC_DELAY_ELAPSED_CB_ID Output Compare Delay Elapsed Callback ID + * @arg @ref HAL_TIM_PWM_PULSE_FINISHED_CB_ID PWM Pulse Finished Callback ID + * @arg @ref HAL_TIM_PWM_PULSE_FINISHED_HALF_CB_ID PWM Pulse Finished half complete Callback ID + * @arg @ref HAL_TIM_ERROR_CB_ID Error Callback ID + * @arg @ref HAL_TIM_COMMUTATION_CB_ID Commutation Callback ID + * @arg @ref HAL_TIM_COMMUTATION_HALF_CB_ID Commutation half complete Callback ID + * @arg @ref HAL_TIM_BREAK_CB_ID Break Callback ID + * @arg @ref HAL_TIM_BREAK2_CB_ID Break2 Callback ID + * @retval status + */ +HAL_StatusTypeDef HAL_TIM_UnRegisterCallback(TIM_HandleTypeDef *htim, HAL_TIM_CallbackIDTypeDef CallbackID) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Process locked */ + __HAL_LOCK(htim); + + if (htim->State == HAL_TIM_STATE_READY) + { + switch (CallbackID) + { + case HAL_TIM_BASE_MSPINIT_CB_ID : + /* Legacy weak Base MspInit Callback */ + htim->Base_MspInitCallback = HAL_TIM_Base_MspInit; + break; + + case HAL_TIM_BASE_MSPDEINIT_CB_ID : + /* Legacy weak Base Msp DeInit Callback */ + htim->Base_MspDeInitCallback = HAL_TIM_Base_MspDeInit; + break; + + case HAL_TIM_IC_MSPINIT_CB_ID : + /* Legacy weak IC Msp Init Callback */ + htim->IC_MspInitCallback = HAL_TIM_IC_MspInit; + break; + + case HAL_TIM_IC_MSPDEINIT_CB_ID : + /* Legacy weak IC Msp DeInit Callback */ + htim->IC_MspDeInitCallback = HAL_TIM_IC_MspDeInit; + break; + + case HAL_TIM_OC_MSPINIT_CB_ID : + /* Legacy weak OC Msp Init Callback */ + htim->OC_MspInitCallback = HAL_TIM_OC_MspInit; + break; + + case HAL_TIM_OC_MSPDEINIT_CB_ID : + /* Legacy weak OC Msp DeInit Callback */ + htim->OC_MspDeInitCallback = HAL_TIM_OC_MspDeInit; + break; + + case HAL_TIM_PWM_MSPINIT_CB_ID : + /* Legacy weak PWM Msp Init Callback */ + htim->PWM_MspInitCallback = HAL_TIM_PWM_MspInit; + break; + + case HAL_TIM_PWM_MSPDEINIT_CB_ID : + /* Legacy weak PWM Msp DeInit Callback */ + htim->PWM_MspDeInitCallback = HAL_TIM_PWM_MspDeInit; + break; + + case HAL_TIM_ONE_PULSE_MSPINIT_CB_ID : + /* Legacy weak One Pulse Msp Init Callback */ + htim->OnePulse_MspInitCallback = HAL_TIM_OnePulse_MspInit; + break; + + case HAL_TIM_ONE_PULSE_MSPDEINIT_CB_ID : + /* Legacy weak One Pulse Msp DeInit Callback */ + htim->OnePulse_MspDeInitCallback = HAL_TIM_OnePulse_MspDeInit; + break; + + case HAL_TIM_ENCODER_MSPINIT_CB_ID : + /* Legacy weak Encoder Msp Init Callback */ + htim->Encoder_MspInitCallback = HAL_TIM_Encoder_MspInit; + break; + + case HAL_TIM_ENCODER_MSPDEINIT_CB_ID : + /* Legacy weak Encoder Msp DeInit Callback */ + htim->Encoder_MspDeInitCallback = HAL_TIM_Encoder_MspDeInit; + break; + + case HAL_TIM_HALL_SENSOR_MSPINIT_CB_ID : + /* Legacy weak Hall Sensor Msp Init Callback */ + htim->HallSensor_MspInitCallback = HAL_TIMEx_HallSensor_MspInit; + break; + + case HAL_TIM_HALL_SENSOR_MSPDEINIT_CB_ID : + /* Legacy weak Hall Sensor Msp DeInit Callback */ + htim->HallSensor_MspDeInitCallback = HAL_TIMEx_HallSensor_MspDeInit; + break; + + case HAL_TIM_PERIOD_ELAPSED_CB_ID : + /* Legacy weak Period Elapsed Callback */ + htim->PeriodElapsedCallback = HAL_TIM_PeriodElapsedCallback; + break; + + case HAL_TIM_PERIOD_ELAPSED_HALF_CB_ID : + /* Legacy weak Period Elapsed half complete Callback */ + htim->PeriodElapsedHalfCpltCallback = HAL_TIM_PeriodElapsedHalfCpltCallback; + break; + + case HAL_TIM_TRIGGER_CB_ID : + /* Legacy weak Trigger Callback */ + htim->TriggerCallback = HAL_TIM_TriggerCallback; + break; + + case HAL_TIM_TRIGGER_HALF_CB_ID : + /* Legacy weak Trigger half complete Callback */ + htim->TriggerHalfCpltCallback = HAL_TIM_TriggerHalfCpltCallback; + break; + + case HAL_TIM_IC_CAPTURE_CB_ID : + /* Legacy weak IC Capture Callback */ + htim->IC_CaptureCallback = HAL_TIM_IC_CaptureCallback; + break; + + case HAL_TIM_IC_CAPTURE_HALF_CB_ID : + /* Legacy weak IC Capture half complete Callback */ + htim->IC_CaptureHalfCpltCallback = HAL_TIM_IC_CaptureHalfCpltCallback; + break; + + case HAL_TIM_OC_DELAY_ELAPSED_CB_ID : + /* Legacy weak OC Delay Elapsed Callback */ + htim->OC_DelayElapsedCallback = HAL_TIM_OC_DelayElapsedCallback; + break; + + case HAL_TIM_PWM_PULSE_FINISHED_CB_ID : + /* Legacy weak PWM Pulse Finished Callback */ + htim->PWM_PulseFinishedCallback = HAL_TIM_PWM_PulseFinishedCallback; + break; + + case HAL_TIM_PWM_PULSE_FINISHED_HALF_CB_ID : + /* Legacy weak PWM Pulse Finished half complete Callback */ + htim->PWM_PulseFinishedHalfCpltCallback = HAL_TIM_PWM_PulseFinishedHalfCpltCallback; + break; + + case HAL_TIM_ERROR_CB_ID : + /* Legacy weak Error Callback */ + htim->ErrorCallback = HAL_TIM_ErrorCallback; + break; + + case HAL_TIM_COMMUTATION_CB_ID : + /* Legacy weak Commutation Callback */ + htim->CommutationCallback = HAL_TIMEx_CommutCallback; + break; + + case HAL_TIM_COMMUTATION_HALF_CB_ID : + /* Legacy weak Commutation half complete Callback */ + htim->CommutationHalfCpltCallback = HAL_TIMEx_CommutHalfCpltCallback; + break; + + case HAL_TIM_BREAK_CB_ID : + /* Legacy weak Break Callback */ + htim->BreakCallback = HAL_TIMEx_BreakCallback; + break; + + case HAL_TIM_BREAK2_CB_ID : + /* Legacy weak Break2 Callback */ + htim->Break2Callback = HAL_TIMEx_Break2Callback; + break; + + default : + /* Return error status */ + status = HAL_ERROR; + break; + } + } + else if (htim->State == HAL_TIM_STATE_RESET) + { + switch (CallbackID) + { + case HAL_TIM_BASE_MSPINIT_CB_ID : + /* Legacy weak Base MspInit Callback */ + htim->Base_MspInitCallback = HAL_TIM_Base_MspInit; + break; + + case HAL_TIM_BASE_MSPDEINIT_CB_ID : + /* Legacy weak Base Msp DeInit Callback */ + htim->Base_MspDeInitCallback = HAL_TIM_Base_MspDeInit; + break; + + case HAL_TIM_IC_MSPINIT_CB_ID : + /* Legacy weak IC Msp Init Callback */ + htim->IC_MspInitCallback = HAL_TIM_IC_MspInit; + break; + + case HAL_TIM_IC_MSPDEINIT_CB_ID : + /* Legacy weak IC Msp DeInit Callback */ + htim->IC_MspDeInitCallback = HAL_TIM_IC_MspDeInit; + break; + + case HAL_TIM_OC_MSPINIT_CB_ID : + /* Legacy weak OC Msp Init Callback */ + htim->OC_MspInitCallback = HAL_TIM_OC_MspInit; + break; + + case HAL_TIM_OC_MSPDEINIT_CB_ID : + /* Legacy weak OC Msp DeInit Callback */ + htim->OC_MspDeInitCallback = HAL_TIM_OC_MspDeInit; + break; + + case HAL_TIM_PWM_MSPINIT_CB_ID : + /* Legacy weak PWM Msp Init Callback */ + htim->PWM_MspInitCallback = HAL_TIM_PWM_MspInit; + break; + + case HAL_TIM_PWM_MSPDEINIT_CB_ID : + /* Legacy weak PWM Msp DeInit Callback */ + htim->PWM_MspDeInitCallback = HAL_TIM_PWM_MspDeInit; + break; + + case HAL_TIM_ONE_PULSE_MSPINIT_CB_ID : + /* Legacy weak One Pulse Msp Init Callback */ + htim->OnePulse_MspInitCallback = HAL_TIM_OnePulse_MspInit; + break; + + case HAL_TIM_ONE_PULSE_MSPDEINIT_CB_ID : + /* Legacy weak One Pulse Msp DeInit Callback */ + htim->OnePulse_MspDeInitCallback = HAL_TIM_OnePulse_MspDeInit; + break; + + case HAL_TIM_ENCODER_MSPINIT_CB_ID : + /* Legacy weak Encoder Msp Init Callback */ + htim->Encoder_MspInitCallback = HAL_TIM_Encoder_MspInit; + break; + + case HAL_TIM_ENCODER_MSPDEINIT_CB_ID : + /* Legacy weak Encoder Msp DeInit Callback */ + htim->Encoder_MspDeInitCallback = HAL_TIM_Encoder_MspDeInit; + break; + + case HAL_TIM_HALL_SENSOR_MSPINIT_CB_ID : + /* Legacy weak Hall Sensor Msp Init Callback */ + htim->HallSensor_MspInitCallback = HAL_TIMEx_HallSensor_MspInit; + break; + + case HAL_TIM_HALL_SENSOR_MSPDEINIT_CB_ID : + /* Legacy weak Hall Sensor Msp DeInit Callback */ + htim->HallSensor_MspDeInitCallback = HAL_TIMEx_HallSensor_MspDeInit; + break; + + default : + /* Return error status */ + status = HAL_ERROR; + break; + } + } + else + { + /* Return error status */ + status = HAL_ERROR; + } + + /* Release Lock */ + __HAL_UNLOCK(htim); + + return status; +} +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + +/** + * @} + */ + +/** @defgroup TIM_Exported_Functions_Group10 TIM Peripheral State functions + * @brief TIM Peripheral State functions + * +@verbatim + ============================================================================== + ##### Peripheral State functions ##### + ============================================================================== + [..] + This subsection permits to get in run-time the status of the peripheral + and the data flow. + +@endverbatim + * @{ + */ + +/** + * @brief Return the TIM Base handle state. + * @param htim TIM Base handle + * @retval HAL state + */ +HAL_TIM_StateTypeDef HAL_TIM_Base_GetState(const TIM_HandleTypeDef *htim) +{ + return htim->State; +} + +/** + * @brief Return the TIM OC handle state. + * @param htim TIM Output Compare handle + * @retval HAL state + */ +HAL_TIM_StateTypeDef HAL_TIM_OC_GetState(const TIM_HandleTypeDef *htim) +{ + return htim->State; +} + +/** + * @brief Return the TIM PWM handle state. + * @param htim TIM handle + * @retval HAL state + */ +HAL_TIM_StateTypeDef HAL_TIM_PWM_GetState(const TIM_HandleTypeDef *htim) +{ + return htim->State; +} + +/** + * @brief Return the TIM Input Capture handle state. + * @param htim TIM IC handle + * @retval HAL state + */ +HAL_TIM_StateTypeDef HAL_TIM_IC_GetState(const TIM_HandleTypeDef *htim) +{ + return htim->State; +} + +/** + * @brief Return the TIM One Pulse Mode handle state. + * @param htim TIM OPM handle + * @retval HAL state + */ +HAL_TIM_StateTypeDef HAL_TIM_OnePulse_GetState(const TIM_HandleTypeDef *htim) +{ + return htim->State; +} + +/** + * @brief Return the TIM Encoder Mode handle state. + * @param htim TIM Encoder Interface handle + * @retval HAL state + */ +HAL_TIM_StateTypeDef HAL_TIM_Encoder_GetState(const TIM_HandleTypeDef *htim) +{ + return htim->State; +} + +/** + * @brief Return the TIM Encoder Mode handle state. + * @param htim TIM handle + * @retval Active channel + */ +HAL_TIM_ActiveChannel HAL_TIM_GetActiveChannel(const TIM_HandleTypeDef *htim) +{ + return htim->Channel; +} + +/** + * @brief Return actual state of the TIM channel. + * @param htim TIM handle + * @param Channel TIM Channel + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 + * @arg TIM_CHANNEL_2: TIM Channel 2 + * @arg TIM_CHANNEL_3: TIM Channel 3 + * @arg TIM_CHANNEL_4: TIM Channel 4 + * @arg TIM_CHANNEL_5: TIM Channel 5 + * @arg TIM_CHANNEL_6: TIM Channel 6 + * @retval TIM Channel state + */ +HAL_TIM_ChannelStateTypeDef HAL_TIM_GetChannelState(const TIM_HandleTypeDef *htim, uint32_t Channel) +{ + HAL_TIM_ChannelStateTypeDef channel_state; + + /* Check the parameters */ + assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel)); + + channel_state = TIM_CHANNEL_STATE_GET(htim, Channel); + + return channel_state; +} + +/** + * @brief Return actual state of a DMA burst operation. + * @param htim TIM handle + * @retval DMA burst state + */ +HAL_TIM_DMABurstStateTypeDef HAL_TIM_DMABurstState(const TIM_HandleTypeDef *htim) +{ + /* Check the parameters */ + assert_param(IS_TIM_DMABURST_INSTANCE(htim->Instance)); + + return htim->DMABurstState; +} + +/** + * @} + */ + +/** + * @} + */ + +/** @defgroup TIM_Private_Functions TIM Private Functions + * @{ + */ + +/** + * @brief TIM DMA error callback + * @param hdma pointer to DMA handle. + * @retval None + */ +void TIM_DMAError(DMA_HandleTypeDef *hdma) +{ + TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; + + if (hdma == htim->hdma[TIM_DMA_ID_CC1]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1; + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + } + else if (hdma == htim->hdma[TIM_DMA_ID_CC2]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2; + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + } + else if (hdma == htim->hdma[TIM_DMA_ID_CC3]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3; + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_3, HAL_TIM_CHANNEL_STATE_READY); + } + else if (hdma == htim->hdma[TIM_DMA_ID_CC4]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_4; + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_4, HAL_TIM_CHANNEL_STATE_READY); + } + else + { + htim->State = HAL_TIM_STATE_READY; + } + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->ErrorCallback(htim); +#else + HAL_TIM_ErrorCallback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; +} + +/** + * @brief TIM DMA Delay Pulse complete callback. + * @param hdma pointer to DMA handle. + * @retval None + */ +static void TIM_DMADelayPulseCplt(DMA_HandleTypeDef *hdma) +{ + TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; + + if (hdma == htim->hdma[TIM_DMA_ID_CC1]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1; + + if (hdma->Init.Mode == DMA_NORMAL) + { + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + } + } + else if (hdma == htim->hdma[TIM_DMA_ID_CC2]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2; + + if (hdma->Init.Mode == DMA_NORMAL) + { + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + } + } + else if (hdma == htim->hdma[TIM_DMA_ID_CC3]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3; + + if (hdma->Init.Mode == DMA_NORMAL) + { + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_3, HAL_TIM_CHANNEL_STATE_READY); + } + } + else if (hdma == htim->hdma[TIM_DMA_ID_CC4]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_4; + + if (hdma->Init.Mode == DMA_NORMAL) + { + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_4, HAL_TIM_CHANNEL_STATE_READY); + } + } + else + { + /* nothing to do */ + } + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->PWM_PulseFinishedCallback(htim); +#else + HAL_TIM_PWM_PulseFinishedCallback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; +} + +/** + * @brief TIM DMA Delay Pulse half complete callback. + * @param hdma pointer to DMA handle. + * @retval None + */ +void TIM_DMADelayPulseHalfCplt(DMA_HandleTypeDef *hdma) +{ + TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; + + if (hdma == htim->hdma[TIM_DMA_ID_CC1]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1; + } + else if (hdma == htim->hdma[TIM_DMA_ID_CC2]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2; + } + else if (hdma == htim->hdma[TIM_DMA_ID_CC3]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3; + } + else if (hdma == htim->hdma[TIM_DMA_ID_CC4]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_4; + } + else + { + /* nothing to do */ + } + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->PWM_PulseFinishedHalfCpltCallback(htim); +#else + HAL_TIM_PWM_PulseFinishedHalfCpltCallback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; +} + +/** + * @brief TIM DMA Capture complete callback. + * @param hdma pointer to DMA handle. + * @retval None + */ +void TIM_DMACaptureCplt(DMA_HandleTypeDef *hdma) +{ + TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; + + if (hdma == htim->hdma[TIM_DMA_ID_CC1]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1; + + if (hdma->Init.Mode == DMA_NORMAL) + { + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + } + } + else if (hdma == htim->hdma[TIM_DMA_ID_CC2]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2; + + if (hdma->Init.Mode == DMA_NORMAL) + { + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + } + } + else if (hdma == htim->hdma[TIM_DMA_ID_CC3]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3; + + if (hdma->Init.Mode == DMA_NORMAL) + { + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_3, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_3, HAL_TIM_CHANNEL_STATE_READY); + } + } + else if (hdma == htim->hdma[TIM_DMA_ID_CC4]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_4; + + if (hdma->Init.Mode == DMA_NORMAL) + { + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_4, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_4, HAL_TIM_CHANNEL_STATE_READY); + } + } + else + { + /* nothing to do */ + } + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->IC_CaptureCallback(htim); +#else + HAL_TIM_IC_CaptureCallback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; +} + +/** + * @brief TIM DMA Capture half complete callback. + * @param hdma pointer to DMA handle. + * @retval None + */ +void TIM_DMACaptureHalfCplt(DMA_HandleTypeDef *hdma) +{ + TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; + + if (hdma == htim->hdma[TIM_DMA_ID_CC1]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1; + } + else if (hdma == htim->hdma[TIM_DMA_ID_CC2]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2; + } + else if (hdma == htim->hdma[TIM_DMA_ID_CC3]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3; + } + else if (hdma == htim->hdma[TIM_DMA_ID_CC4]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_4; + } + else + { + /* nothing to do */ + } + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->IC_CaptureHalfCpltCallback(htim); +#else + HAL_TIM_IC_CaptureHalfCpltCallback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; +} + +/** + * @brief TIM DMA Period Elapse complete callback. + * @param hdma pointer to DMA handle. + * @retval None + */ +static void TIM_DMAPeriodElapsedCplt(DMA_HandleTypeDef *hdma) +{ + TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; + + if (htim->hdma[TIM_DMA_ID_UPDATE]->Init.Mode == DMA_NORMAL) + { + htim->State = HAL_TIM_STATE_READY; + } + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->PeriodElapsedCallback(htim); +#else + HAL_TIM_PeriodElapsedCallback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ +} + +/** + * @brief TIM DMA Period Elapse half complete callback. + * @param hdma pointer to DMA handle. + * @retval None + */ +static void TIM_DMAPeriodElapsedHalfCplt(DMA_HandleTypeDef *hdma) +{ + TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->PeriodElapsedHalfCpltCallback(htim); +#else + HAL_TIM_PeriodElapsedHalfCpltCallback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ +} + +/** + * @brief TIM DMA Trigger callback. + * @param hdma pointer to DMA handle. + * @retval None + */ +static void TIM_DMATriggerCplt(DMA_HandleTypeDef *hdma) +{ + TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; + + if (htim->hdma[TIM_DMA_ID_TRIGGER]->Init.Mode == DMA_NORMAL) + { + htim->State = HAL_TIM_STATE_READY; + } + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->TriggerCallback(htim); +#else + HAL_TIM_TriggerCallback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ +} + +/** + * @brief TIM DMA Trigger half complete callback. + * @param hdma pointer to DMA handle. + * @retval None + */ +static void TIM_DMATriggerHalfCplt(DMA_HandleTypeDef *hdma) +{ + TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->TriggerHalfCpltCallback(htim); +#else + HAL_TIM_TriggerHalfCpltCallback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ +} + +/** + * @brief Time Base configuration + * @param TIMx TIM peripheral + * @param Structure TIM Base configuration structure + * @retval None + */ +void TIM_Base_SetConfig(TIM_TypeDef *TIMx, const TIM_Base_InitTypeDef *Structure) +{ + uint32_t tmpcr1; + tmpcr1 = TIMx->CR1; + + /* Set TIM Time Base Unit parameters ---------------------------------------*/ + if (IS_TIM_COUNTER_MODE_SELECT_INSTANCE(TIMx)) + { + /* Select the Counter Mode */ + tmpcr1 &= ~(TIM_CR1_DIR | TIM_CR1_CMS); + tmpcr1 |= Structure->CounterMode; + } + + if (IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx)) + { + /* Set the clock division */ + tmpcr1 &= ~TIM_CR1_CKD; + tmpcr1 |= (uint32_t)Structure->ClockDivision; + } + + /* Set the auto-reload preload */ + MODIFY_REG(tmpcr1, TIM_CR1_ARPE, Structure->AutoReloadPreload); + + TIMx->CR1 = tmpcr1; + + /* Set the Autoreload value */ + TIMx->ARR = (uint32_t)Structure->Period ; + + /* Set the Prescaler value */ + TIMx->PSC = Structure->Prescaler; + + if (IS_TIM_REPETITION_COUNTER_INSTANCE(TIMx)) + { + /* Set the Repetition Counter value */ + TIMx->RCR = Structure->RepetitionCounter; + } + + /* Generate an update event to reload the Prescaler + and the repetition counter (only for advanced timer) value immediately */ + TIMx->EGR = TIM_EGR_UG; +} + +/** + * @brief Timer Output Compare 1 configuration + * @param TIMx to select the TIM peripheral + * @param OC_Config The output configuration structure + * @retval None + */ +static void TIM_OC1_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config) +{ + uint32_t tmpccmrx; + uint32_t tmpccer; + uint32_t tmpcr2; + + /* Disable the Channel 1: Reset the CC1E Bit */ + TIMx->CCER &= ~TIM_CCER_CC1E; + + /* Get the TIMx CCER register value */ + tmpccer = TIMx->CCER; + /* Get the TIMx CR2 register value */ + tmpcr2 = TIMx->CR2; + + /* Get the TIMx CCMR1 register value */ + tmpccmrx = TIMx->CCMR1; + + /* Reset the Output Compare Mode Bits */ + tmpccmrx &= ~TIM_CCMR1_OC1M; + tmpccmrx &= ~TIM_CCMR1_CC1S; + /* Select the Output Compare Mode */ + tmpccmrx |= OC_Config->OCMode; + + /* Reset the Output Polarity level */ + tmpccer &= ~TIM_CCER_CC1P; + /* Set the Output Compare Polarity */ + tmpccer |= OC_Config->OCPolarity; + + if (IS_TIM_CCXN_INSTANCE(TIMx, TIM_CHANNEL_1)) + { + /* Check parameters */ + assert_param(IS_TIM_OCN_POLARITY(OC_Config->OCNPolarity)); + + /* Reset the Output N Polarity level */ + tmpccer &= ~TIM_CCER_CC1NP; + /* Set the Output N Polarity */ + tmpccer |= OC_Config->OCNPolarity; + /* Reset the Output N State */ + tmpccer &= ~TIM_CCER_CC1NE; + } + + if (IS_TIM_BREAK_INSTANCE(TIMx)) + { + /* Check parameters */ + assert_param(IS_TIM_OCNIDLE_STATE(OC_Config->OCNIdleState)); + assert_param(IS_TIM_OCIDLE_STATE(OC_Config->OCIdleState)); + + /* Reset the Output Compare and Output Compare N IDLE State */ + tmpcr2 &= ~TIM_CR2_OIS1; + tmpcr2 &= ~TIM_CR2_OIS1N; + /* Set the Output Idle state */ + tmpcr2 |= OC_Config->OCIdleState; + /* Set the Output N Idle state */ + tmpcr2 |= OC_Config->OCNIdleState; + } + + /* Write to TIMx CR2 */ + TIMx->CR2 = tmpcr2; + + /* Write to TIMx CCMR1 */ + TIMx->CCMR1 = tmpccmrx; + + /* Set the Capture Compare Register value */ + TIMx->CCR1 = OC_Config->Pulse; + + /* Write to TIMx CCER */ + TIMx->CCER = tmpccer; +} + +/** + * @brief Timer Output Compare 2 configuration + * @param TIMx to select the TIM peripheral + * @param OC_Config The output configuration structure + * @retval None + */ +void TIM_OC2_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config) +{ + uint32_t tmpccmrx; + uint32_t tmpccer; + uint32_t tmpcr2; + + /* Disable the Channel 2: Reset the CC2E Bit */ + TIMx->CCER &= ~TIM_CCER_CC2E; + + /* Get the TIMx CCER register value */ + tmpccer = TIMx->CCER; + /* Get the TIMx CR2 register value */ + tmpcr2 = TIMx->CR2; + + /* Get the TIMx CCMR1 register value */ + tmpccmrx = TIMx->CCMR1; + + /* Reset the Output Compare mode and Capture/Compare selection Bits */ + tmpccmrx &= ~TIM_CCMR1_OC2M; + tmpccmrx &= ~TIM_CCMR1_CC2S; + + /* Select the Output Compare Mode */ + tmpccmrx |= (OC_Config->OCMode << 8U); + + /* Reset the Output Polarity level */ + tmpccer &= ~TIM_CCER_CC2P; + /* Set the Output Compare Polarity */ + tmpccer |= (OC_Config->OCPolarity << 4U); + + if (IS_TIM_CCXN_INSTANCE(TIMx, TIM_CHANNEL_2)) + { + assert_param(IS_TIM_OCN_POLARITY(OC_Config->OCNPolarity)); + + /* Reset the Output N Polarity level */ + tmpccer &= ~TIM_CCER_CC2NP; + /* Set the Output N Polarity */ + tmpccer |= (OC_Config->OCNPolarity << 4U); + /* Reset the Output N State */ + tmpccer &= ~TIM_CCER_CC2NE; + + } + + if (IS_TIM_BREAK_INSTANCE(TIMx)) + { + /* Check parameters */ + assert_param(IS_TIM_OCNIDLE_STATE(OC_Config->OCNIdleState)); + assert_param(IS_TIM_OCIDLE_STATE(OC_Config->OCIdleState)); + + /* Reset the Output Compare and Output Compare N IDLE State */ + tmpcr2 &= ~TIM_CR2_OIS2; + tmpcr2 &= ~TIM_CR2_OIS2N; + /* Set the Output Idle state */ + tmpcr2 |= (OC_Config->OCIdleState << 2U); + /* Set the Output N Idle state */ + tmpcr2 |= (OC_Config->OCNIdleState << 2U); + } + + /* Write to TIMx CR2 */ + TIMx->CR2 = tmpcr2; + + /* Write to TIMx CCMR1 */ + TIMx->CCMR1 = tmpccmrx; + + /* Set the Capture Compare Register value */ + TIMx->CCR2 = OC_Config->Pulse; + + /* Write to TIMx CCER */ + TIMx->CCER = tmpccer; +} + +/** + * @brief Timer Output Compare 3 configuration + * @param TIMx to select the TIM peripheral + * @param OC_Config The output configuration structure + * @retval None + */ +static void TIM_OC3_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config) +{ + uint32_t tmpccmrx; + uint32_t tmpccer; + uint32_t tmpcr2; + + /* Disable the Channel 3: Reset the CC2E Bit */ + TIMx->CCER &= ~TIM_CCER_CC3E; + + /* Get the TIMx CCER register value */ + tmpccer = TIMx->CCER; + /* Get the TIMx CR2 register value */ + tmpcr2 = TIMx->CR2; + + /* Get the TIMx CCMR2 register value */ + tmpccmrx = TIMx->CCMR2; + + /* Reset the Output Compare mode and Capture/Compare selection Bits */ + tmpccmrx &= ~TIM_CCMR2_OC3M; + tmpccmrx &= ~TIM_CCMR2_CC3S; + /* Select the Output Compare Mode */ + tmpccmrx |= OC_Config->OCMode; + + /* Reset the Output Polarity level */ + tmpccer &= ~TIM_CCER_CC3P; + /* Set the Output Compare Polarity */ + tmpccer |= (OC_Config->OCPolarity << 8U); + + if (IS_TIM_CCXN_INSTANCE(TIMx, TIM_CHANNEL_3)) + { + assert_param(IS_TIM_OCN_POLARITY(OC_Config->OCNPolarity)); + + /* Reset the Output N Polarity level */ + tmpccer &= ~TIM_CCER_CC3NP; + /* Set the Output N Polarity */ + tmpccer |= (OC_Config->OCNPolarity << 8U); + /* Reset the Output N State */ + tmpccer &= ~TIM_CCER_CC3NE; + } + + if (IS_TIM_BREAK_INSTANCE(TIMx)) + { + /* Check parameters */ + assert_param(IS_TIM_OCNIDLE_STATE(OC_Config->OCNIdleState)); + assert_param(IS_TIM_OCIDLE_STATE(OC_Config->OCIdleState)); + + /* Reset the Output Compare and Output Compare N IDLE State */ + tmpcr2 &= ~TIM_CR2_OIS3; + tmpcr2 &= ~TIM_CR2_OIS3N; + /* Set the Output Idle state */ + tmpcr2 |= (OC_Config->OCIdleState << 4U); + /* Set the Output N Idle state */ + tmpcr2 |= (OC_Config->OCNIdleState << 4U); + } + + /* Write to TIMx CR2 */ + TIMx->CR2 = tmpcr2; + + /* Write to TIMx CCMR2 */ + TIMx->CCMR2 = tmpccmrx; + + /* Set the Capture Compare Register value */ + TIMx->CCR3 = OC_Config->Pulse; + + /* Write to TIMx CCER */ + TIMx->CCER = tmpccer; +} + +/** + * @brief Timer Output Compare 4 configuration + * @param TIMx to select the TIM peripheral + * @param OC_Config The output configuration structure + * @retval None + */ +static void TIM_OC4_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config) +{ + uint32_t tmpccmrx; + uint32_t tmpccer; + uint32_t tmpcr2; + + /* Disable the Channel 4: Reset the CC4E Bit */ + TIMx->CCER &= ~TIM_CCER_CC4E; + + /* Get the TIMx CCER register value */ + tmpccer = TIMx->CCER; + /* Get the TIMx CR2 register value */ + tmpcr2 = TIMx->CR2; + + /* Get the TIMx CCMR2 register value */ + tmpccmrx = TIMx->CCMR2; + + /* Reset the Output Compare mode and Capture/Compare selection Bits */ + tmpccmrx &= ~TIM_CCMR2_OC4M; + tmpccmrx &= ~TIM_CCMR2_CC4S; + + /* Select the Output Compare Mode */ + tmpccmrx |= (OC_Config->OCMode << 8U); + + /* Reset the Output Polarity level */ + tmpccer &= ~TIM_CCER_CC4P; + /* Set the Output Compare Polarity */ + tmpccer |= (OC_Config->OCPolarity << 12U); + + if (IS_TIM_BREAK_INSTANCE(TIMx)) + { + /* Check parameters */ + assert_param(IS_TIM_OCIDLE_STATE(OC_Config->OCIdleState)); + + /* Reset the Output Compare IDLE State */ + tmpcr2 &= ~TIM_CR2_OIS4; + + /* Set the Output Idle state */ + tmpcr2 |= (OC_Config->OCIdleState << 6U); + } + + /* Write to TIMx CR2 */ + TIMx->CR2 = tmpcr2; + + /* Write to TIMx CCMR2 */ + TIMx->CCMR2 = tmpccmrx; + + /* Set the Capture Compare Register value */ + TIMx->CCR4 = OC_Config->Pulse; + + /* Write to TIMx CCER */ + TIMx->CCER = tmpccer; +} + +/** + * @brief Timer Output Compare 5 configuration + * @param TIMx to select the TIM peripheral + * @param OC_Config The output configuration structure + * @retval None + */ +static void TIM_OC5_SetConfig(TIM_TypeDef *TIMx, + const TIM_OC_InitTypeDef *OC_Config) +{ + uint32_t tmpccmrx; + uint32_t tmpccer; + uint32_t tmpcr2; + + /* Disable the output: Reset the CCxE Bit */ + TIMx->CCER &= ~TIM_CCER_CC5E; + + /* Get the TIMx CCER register value */ + tmpccer = TIMx->CCER; + /* Get the TIMx CR2 register value */ + tmpcr2 = TIMx->CR2; + /* Get the TIMx CCMR1 register value */ + tmpccmrx = TIMx->CCMR3; + + /* Reset the Output Compare Mode Bits */ + tmpccmrx &= ~(TIM_CCMR3_OC5M); + /* Select the Output Compare Mode */ + tmpccmrx |= OC_Config->OCMode; + + /* Reset the Output Polarity level */ + tmpccer &= ~TIM_CCER_CC5P; + /* Set the Output Compare Polarity */ + tmpccer |= (OC_Config->OCPolarity << 16U); + + if (IS_TIM_BREAK_INSTANCE(TIMx)) + { + /* Reset the Output Compare IDLE State */ + tmpcr2 &= ~TIM_CR2_OIS5; + /* Set the Output Idle state */ + tmpcr2 |= (OC_Config->OCIdleState << 8U); + } + /* Write to TIMx CR2 */ + TIMx->CR2 = tmpcr2; + + /* Write to TIMx CCMR3 */ + TIMx->CCMR3 = tmpccmrx; + + /* Set the Capture Compare Register value */ + TIMx->CCR5 = OC_Config->Pulse; + + /* Write to TIMx CCER */ + TIMx->CCER = tmpccer; +} + +/** + * @brief Timer Output Compare 6 configuration + * @param TIMx to select the TIM peripheral + * @param OC_Config The output configuration structure + * @retval None + */ +static void TIM_OC6_SetConfig(TIM_TypeDef *TIMx, + const TIM_OC_InitTypeDef *OC_Config) +{ + uint32_t tmpccmrx; + uint32_t tmpccer; + uint32_t tmpcr2; + + /* Disable the output: Reset the CCxE Bit */ + TIMx->CCER &= ~TIM_CCER_CC6E; + + /* Get the TIMx CCER register value */ + tmpccer = TIMx->CCER; + /* Get the TIMx CR2 register value */ + tmpcr2 = TIMx->CR2; + /* Get the TIMx CCMR1 register value */ + tmpccmrx = TIMx->CCMR3; + + /* Reset the Output Compare Mode Bits */ + tmpccmrx &= ~(TIM_CCMR3_OC6M); + /* Select the Output Compare Mode */ + tmpccmrx |= (OC_Config->OCMode << 8U); + + /* Reset the Output Polarity level */ + tmpccer &= (uint32_t)~TIM_CCER_CC6P; + /* Set the Output Compare Polarity */ + tmpccer |= (OC_Config->OCPolarity << 20U); + + if (IS_TIM_BREAK_INSTANCE(TIMx)) + { + /* Reset the Output Compare IDLE State */ + tmpcr2 &= ~TIM_CR2_OIS6; + /* Set the Output Idle state */ + tmpcr2 |= (OC_Config->OCIdleState << 10U); + } + + /* Write to TIMx CR2 */ + TIMx->CR2 = tmpcr2; + + /* Write to TIMx CCMR3 */ + TIMx->CCMR3 = tmpccmrx; + + /* Set the Capture Compare Register value */ + TIMx->CCR6 = OC_Config->Pulse; + + /* Write to TIMx CCER */ + TIMx->CCER = tmpccer; +} + +/** + * @brief Slave Timer configuration function + * @param htim TIM handle + * @param sSlaveConfig Slave timer configuration + * @retval None + */ +static HAL_StatusTypeDef TIM_SlaveTimer_SetConfig(TIM_HandleTypeDef *htim, + const TIM_SlaveConfigTypeDef *sSlaveConfig) +{ + HAL_StatusTypeDef status = HAL_OK; + uint32_t tmpsmcr; + uint32_t tmpccmr1; + uint32_t tmpccer; + + /* Get the TIMx SMCR register value */ + tmpsmcr = htim->Instance->SMCR; + + /* Reset the Trigger Selection Bits */ + tmpsmcr &= ~TIM_SMCR_TS; + /* Set the Input Trigger source */ + tmpsmcr |= sSlaveConfig->InputTrigger; + + /* Reset the slave mode Bits */ + tmpsmcr &= ~TIM_SMCR_SMS; + /* Set the slave mode */ + tmpsmcr |= sSlaveConfig->SlaveMode; + + /* Write to TIMx SMCR */ + htim->Instance->SMCR = tmpsmcr; + + /* Configure the trigger prescaler, filter, and polarity */ + switch (sSlaveConfig->InputTrigger) + { + case TIM_TS_ETRF: + { + /* Check the parameters */ + assert_param(IS_TIM_CLOCKSOURCE_ETRMODE1_INSTANCE(htim->Instance)); + assert_param(IS_TIM_TRIGGERPRESCALER(sSlaveConfig->TriggerPrescaler)); + assert_param(IS_TIM_TRIGGERPOLARITY(sSlaveConfig->TriggerPolarity)); + assert_param(IS_TIM_TRIGGERFILTER(sSlaveConfig->TriggerFilter)); + /* Configure the ETR Trigger source */ + TIM_ETR_SetConfig(htim->Instance, + sSlaveConfig->TriggerPrescaler, + sSlaveConfig->TriggerPolarity, + sSlaveConfig->TriggerFilter); + break; + } + + case TIM_TS_TI1F_ED: + { + /* Check the parameters */ + assert_param(IS_TIM_CC1_INSTANCE(htim->Instance)); + assert_param(IS_TIM_TRIGGERFILTER(sSlaveConfig->TriggerFilter)); + + if (sSlaveConfig->SlaveMode == TIM_SLAVEMODE_GATED) + { + return HAL_ERROR; + } + + /* Disable the Channel 1: Reset the CC1E Bit */ + tmpccer = htim->Instance->CCER; + htim->Instance->CCER &= ~TIM_CCER_CC1E; + tmpccmr1 = htim->Instance->CCMR1; + + /* Set the filter */ + tmpccmr1 &= ~TIM_CCMR1_IC1F; + tmpccmr1 |= ((sSlaveConfig->TriggerFilter) << 4U); + + /* Write to TIMx CCMR1 and CCER registers */ + htim->Instance->CCMR1 = tmpccmr1; + htim->Instance->CCER = tmpccer; + break; + } + + case TIM_TS_TI1FP1: + { + /* Check the parameters */ + assert_param(IS_TIM_CC1_INSTANCE(htim->Instance)); + assert_param(IS_TIM_TRIGGERPOLARITY(sSlaveConfig->TriggerPolarity)); + assert_param(IS_TIM_TRIGGERFILTER(sSlaveConfig->TriggerFilter)); + + /* Configure TI1 Filter and Polarity */ + TIM_TI1_ConfigInputStage(htim->Instance, + sSlaveConfig->TriggerPolarity, + sSlaveConfig->TriggerFilter); + break; + } + + case TIM_TS_TI2FP2: + { + /* Check the parameters */ + assert_param(IS_TIM_CC2_INSTANCE(htim->Instance)); + assert_param(IS_TIM_TRIGGERPOLARITY(sSlaveConfig->TriggerPolarity)); + assert_param(IS_TIM_TRIGGERFILTER(sSlaveConfig->TriggerFilter)); + + /* Configure TI2 Filter and Polarity */ + TIM_TI2_ConfigInputStage(htim->Instance, + sSlaveConfig->TriggerPolarity, + sSlaveConfig->TriggerFilter); + break; + } + + case TIM_TS_ITR0: + case TIM_TS_ITR1: + case TIM_TS_ITR2: + case TIM_TS_ITR3: + { + /* Check the parameter */ + assert_param(IS_TIM_CC2_INSTANCE(htim->Instance)); + break; + } + + default: + status = HAL_ERROR; + break; + } + + return status; +} + +/** + * @brief Configure the TI1 as Input. + * @param TIMx to select the TIM peripheral. + * @param TIM_ICPolarity The Input Polarity. + * This parameter can be one of the following values: + * @arg TIM_ICPOLARITY_RISING + * @arg TIM_ICPOLARITY_FALLING + * @arg TIM_ICPOLARITY_BOTHEDGE + * @param TIM_ICSelection specifies the input to be used. + * This parameter can be one of the following values: + * @arg TIM_ICSELECTION_DIRECTTI: TIM Input 1 is selected to be connected to IC1. + * @arg TIM_ICSELECTION_INDIRECTTI: TIM Input 1 is selected to be connected to IC2. + * @arg TIM_ICSELECTION_TRC: TIM Input 1 is selected to be connected to TRC. + * @param TIM_ICFilter Specifies the Input Capture Filter. + * This parameter must be a value between 0x00 and 0x0F. + * @retval None + * @note TIM_ICFilter and TIM_ICPolarity are not used in INDIRECT mode as TI2FP1 + * (on channel2 path) is used as the input signal. Therefore CCMR1 must be + * protected against un-initialized filter and polarity values. + */ +void TIM_TI1_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection, + uint32_t TIM_ICFilter) +{ + uint32_t tmpccmr1; + uint32_t tmpccer; + + /* Disable the Channel 1: Reset the CC1E Bit */ + TIMx->CCER &= ~TIM_CCER_CC1E; + tmpccmr1 = TIMx->CCMR1; + tmpccer = TIMx->CCER; + + /* Select the Input */ + if (IS_TIM_CC2_INSTANCE(TIMx) != RESET) + { + tmpccmr1 &= ~TIM_CCMR1_CC1S; + tmpccmr1 |= TIM_ICSelection; + } + else + { + tmpccmr1 |= TIM_CCMR1_CC1S_0; + } + + /* Set the filter */ + tmpccmr1 &= ~TIM_CCMR1_IC1F; + tmpccmr1 |= ((TIM_ICFilter << 4U) & TIM_CCMR1_IC1F); + + /* Select the Polarity and set the CC1E Bit */ + tmpccer &= ~(TIM_CCER_CC1P | TIM_CCER_CC1NP); + tmpccer |= (TIM_ICPolarity & (TIM_CCER_CC1P | TIM_CCER_CC1NP)); + + /* Write to TIMx CCMR1 and CCER registers */ + TIMx->CCMR1 = tmpccmr1; + TIMx->CCER = tmpccer; +} + +/** + * @brief Configure the Polarity and Filter for TI1. + * @param TIMx to select the TIM peripheral. + * @param TIM_ICPolarity The Input Polarity. + * This parameter can be one of the following values: + * @arg TIM_ICPOLARITY_RISING + * @arg TIM_ICPOLARITY_FALLING + * @arg TIM_ICPOLARITY_BOTHEDGE + * @param TIM_ICFilter Specifies the Input Capture Filter. + * This parameter must be a value between 0x00 and 0x0F. + * @retval None + */ +static void TIM_TI1_ConfigInputStage(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICFilter) +{ + uint32_t tmpccmr1; + uint32_t tmpccer; + + /* Disable the Channel 1: Reset the CC1E Bit */ + tmpccer = TIMx->CCER; + TIMx->CCER &= ~TIM_CCER_CC1E; + tmpccmr1 = TIMx->CCMR1; + + /* Set the filter */ + tmpccmr1 &= ~TIM_CCMR1_IC1F; + tmpccmr1 |= (TIM_ICFilter << 4U); + + /* Select the Polarity and set the CC1E Bit */ + tmpccer &= ~(TIM_CCER_CC1P | TIM_CCER_CC1NP); + tmpccer |= TIM_ICPolarity; + + /* Write to TIMx CCMR1 and CCER registers */ + TIMx->CCMR1 = tmpccmr1; + TIMx->CCER = tmpccer; +} + +/** + * @brief Configure the TI2 as Input. + * @param TIMx to select the TIM peripheral + * @param TIM_ICPolarity The Input Polarity. + * This parameter can be one of the following values: + * @arg TIM_ICPOLARITY_RISING + * @arg TIM_ICPOLARITY_FALLING + * @arg TIM_ICPOLARITY_BOTHEDGE + * @param TIM_ICSelection specifies the input to be used. + * This parameter can be one of the following values: + * @arg TIM_ICSELECTION_DIRECTTI: TIM Input 2 is selected to be connected to IC2. + * @arg TIM_ICSELECTION_INDIRECTTI: TIM Input 2 is selected to be connected to IC1. + * @arg TIM_ICSELECTION_TRC: TIM Input 2 is selected to be connected to TRC. + * @param TIM_ICFilter Specifies the Input Capture Filter. + * This parameter must be a value between 0x00 and 0x0F. + * @retval None + * @note TIM_ICFilter and TIM_ICPolarity are not used in INDIRECT mode as TI1FP2 + * (on channel1 path) is used as the input signal. Therefore CCMR1 must be + * protected against un-initialized filter and polarity values. + */ +static void TIM_TI2_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection, + uint32_t TIM_ICFilter) +{ + uint32_t tmpccmr1; + uint32_t tmpccer; + + /* Disable the Channel 2: Reset the CC2E Bit */ + TIMx->CCER &= ~TIM_CCER_CC2E; + tmpccmr1 = TIMx->CCMR1; + tmpccer = TIMx->CCER; + + /* Select the Input */ + tmpccmr1 &= ~TIM_CCMR1_CC2S; + tmpccmr1 |= (TIM_ICSelection << 8U); + + /* Set the filter */ + tmpccmr1 &= ~TIM_CCMR1_IC2F; + tmpccmr1 |= ((TIM_ICFilter << 12U) & TIM_CCMR1_IC2F); + + /* Select the Polarity and set the CC2E Bit */ + tmpccer &= ~(TIM_CCER_CC2P | TIM_CCER_CC2NP); + tmpccer |= ((TIM_ICPolarity << 4U) & (TIM_CCER_CC2P | TIM_CCER_CC2NP)); + + /* Write to TIMx CCMR1 and CCER registers */ + TIMx->CCMR1 = tmpccmr1 ; + TIMx->CCER = tmpccer; +} + +/** + * @brief Configure the Polarity and Filter for TI2. + * @param TIMx to select the TIM peripheral. + * @param TIM_ICPolarity The Input Polarity. + * This parameter can be one of the following values: + * @arg TIM_ICPOLARITY_RISING + * @arg TIM_ICPOLARITY_FALLING + * @arg TIM_ICPOLARITY_BOTHEDGE + * @param TIM_ICFilter Specifies the Input Capture Filter. + * This parameter must be a value between 0x00 and 0x0F. + * @retval None + */ +static void TIM_TI2_ConfigInputStage(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICFilter) +{ + uint32_t tmpccmr1; + uint32_t tmpccer; + + /* Disable the Channel 2: Reset the CC2E Bit */ + TIMx->CCER &= ~TIM_CCER_CC2E; + tmpccmr1 = TIMx->CCMR1; + tmpccer = TIMx->CCER; + + /* Set the filter */ + tmpccmr1 &= ~TIM_CCMR1_IC2F; + tmpccmr1 |= (TIM_ICFilter << 12U); + + /* Select the Polarity and set the CC2E Bit */ + tmpccer &= ~(TIM_CCER_CC2P | TIM_CCER_CC2NP); + tmpccer |= (TIM_ICPolarity << 4U); + + /* Write to TIMx CCMR1 and CCER registers */ + TIMx->CCMR1 = tmpccmr1 ; + TIMx->CCER = tmpccer; +} + +/** + * @brief Configure the TI3 as Input. + * @param TIMx to select the TIM peripheral + * @param TIM_ICPolarity The Input Polarity. + * This parameter can be one of the following values: + * @arg TIM_ICPOLARITY_RISING + * @arg TIM_ICPOLARITY_FALLING + * @arg TIM_ICPOLARITY_BOTHEDGE + * @param TIM_ICSelection specifies the input to be used. + * This parameter can be one of the following values: + * @arg TIM_ICSELECTION_DIRECTTI: TIM Input 3 is selected to be connected to IC3. + * @arg TIM_ICSELECTION_INDIRECTTI: TIM Input 3 is selected to be connected to IC4. + * @arg TIM_ICSELECTION_TRC: TIM Input 3 is selected to be connected to TRC. + * @param TIM_ICFilter Specifies the Input Capture Filter. + * This parameter must be a value between 0x00 and 0x0F. + * @retval None + * @note TIM_ICFilter and TIM_ICPolarity are not used in INDIRECT mode as TI3FP4 + * (on channel1 path) is used as the input signal. Therefore CCMR2 must be + * protected against un-initialized filter and polarity values. + */ +static void TIM_TI3_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection, + uint32_t TIM_ICFilter) +{ + uint32_t tmpccmr2; + uint32_t tmpccer; + + /* Disable the Channel 3: Reset the CC3E Bit */ + TIMx->CCER &= ~TIM_CCER_CC3E; + tmpccmr2 = TIMx->CCMR2; + tmpccer = TIMx->CCER; + + /* Select the Input */ + tmpccmr2 &= ~TIM_CCMR2_CC3S; + tmpccmr2 |= TIM_ICSelection; + + /* Set the filter */ + tmpccmr2 &= ~TIM_CCMR2_IC3F; + tmpccmr2 |= ((TIM_ICFilter << 4U) & TIM_CCMR2_IC3F); + + /* Select the Polarity and set the CC3E Bit */ + tmpccer &= ~(TIM_CCER_CC3P | TIM_CCER_CC3NP); + tmpccer |= ((TIM_ICPolarity << 8U) & (TIM_CCER_CC3P | TIM_CCER_CC3NP)); + + /* Write to TIMx CCMR2 and CCER registers */ + TIMx->CCMR2 = tmpccmr2; + TIMx->CCER = tmpccer; +} + +/** + * @brief Configure the TI4 as Input. + * @param TIMx to select the TIM peripheral + * @param TIM_ICPolarity The Input Polarity. + * This parameter can be one of the following values: + * @arg TIM_ICPOLARITY_RISING + * @arg TIM_ICPOLARITY_FALLING + * @arg TIM_ICPOLARITY_BOTHEDGE + * @param TIM_ICSelection specifies the input to be used. + * This parameter can be one of the following values: + * @arg TIM_ICSELECTION_DIRECTTI: TIM Input 4 is selected to be connected to IC4. + * @arg TIM_ICSELECTION_INDIRECTTI: TIM Input 4 is selected to be connected to IC3. + * @arg TIM_ICSELECTION_TRC: TIM Input 4 is selected to be connected to TRC. + * @param TIM_ICFilter Specifies the Input Capture Filter. + * This parameter must be a value between 0x00 and 0x0F. + * @note TIM_ICFilter and TIM_ICPolarity are not used in INDIRECT mode as TI4FP3 + * (on channel1 path) is used as the input signal. Therefore CCMR2 must be + * protected against un-initialized filter and polarity values. + * @retval None + */ +static void TIM_TI4_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection, + uint32_t TIM_ICFilter) +{ + uint32_t tmpccmr2; + uint32_t tmpccer; + + /* Disable the Channel 4: Reset the CC4E Bit */ + TIMx->CCER &= ~TIM_CCER_CC4E; + tmpccmr2 = TIMx->CCMR2; + tmpccer = TIMx->CCER; + + /* Select the Input */ + tmpccmr2 &= ~TIM_CCMR2_CC4S; + tmpccmr2 |= (TIM_ICSelection << 8U); + + /* Set the filter */ + tmpccmr2 &= ~TIM_CCMR2_IC4F; + tmpccmr2 |= ((TIM_ICFilter << 12U) & TIM_CCMR2_IC4F); + + /* Select the Polarity and set the CC4E Bit */ + tmpccer &= ~(TIM_CCER_CC4P | TIM_CCER_CC4NP); + tmpccer |= ((TIM_ICPolarity << 12U) & (TIM_CCER_CC4P | TIM_CCER_CC4NP)); + + /* Write to TIMx CCMR2 and CCER registers */ + TIMx->CCMR2 = tmpccmr2; + TIMx->CCER = tmpccer ; +} + +/** + * @brief Selects the Input Trigger source + * @param TIMx to select the TIM peripheral + * @param InputTriggerSource The Input Trigger source. + * This parameter can be one of the following values: + * @arg TIM_TS_ITR0: Internal Trigger 0 + * @arg TIM_TS_ITR1: Internal Trigger 1 + * @arg TIM_TS_ITR2: Internal Trigger 2 + * @arg TIM_TS_ITR3: Internal Trigger 3 + * @arg TIM_TS_TI1F_ED: TI1 Edge Detector + * @arg TIM_TS_TI1FP1: Filtered Timer Input 1 + * @arg TIM_TS_TI2FP2: Filtered Timer Input 2 + * @arg TIM_TS_ETRF: External Trigger input + * @retval None + */ +static void TIM_ITRx_SetConfig(TIM_TypeDef *TIMx, uint32_t InputTriggerSource) +{ + uint32_t tmpsmcr; + + /* Get the TIMx SMCR register value */ + tmpsmcr = TIMx->SMCR; + /* Reset the TS Bits */ + tmpsmcr &= ~TIM_SMCR_TS; + /* Set the Input Trigger source and the slave mode*/ + tmpsmcr |= (InputTriggerSource | TIM_SLAVEMODE_EXTERNAL1); + /* Write to TIMx SMCR */ + TIMx->SMCR = tmpsmcr; +} +/** + * @brief Configures the TIMx External Trigger (ETR). + * @param TIMx to select the TIM peripheral + * @param TIM_ExtTRGPrescaler The external Trigger Prescaler. + * This parameter can be one of the following values: + * @arg TIM_ETRPRESCALER_DIV1: ETRP Prescaler OFF. + * @arg TIM_ETRPRESCALER_DIV2: ETRP frequency divided by 2. + * @arg TIM_ETRPRESCALER_DIV4: ETRP frequency divided by 4. + * @arg TIM_ETRPRESCALER_DIV8: ETRP frequency divided by 8. + * @param TIM_ExtTRGPolarity The external Trigger Polarity. + * This parameter can be one of the following values: + * @arg TIM_ETRPOLARITY_INVERTED: active low or falling edge active. + * @arg TIM_ETRPOLARITY_NONINVERTED: active high or rising edge active. + * @param ExtTRGFilter External Trigger Filter. + * This parameter must be a value between 0x00 and 0x0F + * @retval None + */ +void TIM_ETR_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ExtTRGPrescaler, + uint32_t TIM_ExtTRGPolarity, uint32_t ExtTRGFilter) +{ + uint32_t tmpsmcr; + + tmpsmcr = TIMx->SMCR; + + /* Reset the ETR Bits */ + tmpsmcr &= ~(TIM_SMCR_ETF | TIM_SMCR_ETPS | TIM_SMCR_ECE | TIM_SMCR_ETP); + + /* Set the Prescaler, the Filter value and the Polarity */ + tmpsmcr |= (uint32_t)(TIM_ExtTRGPrescaler | (TIM_ExtTRGPolarity | (ExtTRGFilter << 8U))); + + /* Write to TIMx SMCR */ + TIMx->SMCR = tmpsmcr; +} + +/** + * @brief Enables or disables the TIM Capture Compare Channel x. + * @param TIMx to select the TIM peripheral + * @param Channel specifies the TIM Channel + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 + * @arg TIM_CHANNEL_2: TIM Channel 2 + * @arg TIM_CHANNEL_3: TIM Channel 3 + * @arg TIM_CHANNEL_4: TIM Channel 4 + * @arg TIM_CHANNEL_5: TIM Channel 5 selected + * @arg TIM_CHANNEL_6: TIM Channel 6 selected + * @param ChannelState specifies the TIM Channel CCxE bit new state. + * This parameter can be: TIM_CCx_ENABLE or TIM_CCx_DISABLE. + * @retval None + */ +void TIM_CCxChannelCmd(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ChannelState) +{ + uint32_t tmp; + + /* Check the parameters */ + assert_param(IS_TIM_CC1_INSTANCE(TIMx)); + assert_param(IS_TIM_CHANNELS(Channel)); + + tmp = TIM_CCER_CC1E << (Channel & 0x1FU); /* 0x1FU = 31 bits max shift */ + + /* Reset the CCxE Bit */ + TIMx->CCER &= ~tmp; + + /* Set or reset the CCxE Bit */ + TIMx->CCER |= (uint32_t)(ChannelState << (Channel & 0x1FU)); /* 0x1FU = 31 bits max shift */ +} + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) +/** + * @brief Reset interrupt callbacks to the legacy weak callbacks. + * @param htim pointer to a TIM_HandleTypeDef structure that contains + * the configuration information for TIM module. + * @retval None + */ +void TIM_ResetCallback(TIM_HandleTypeDef *htim) +{ + /* Reset the TIM callback to the legacy weak callbacks */ + htim->PeriodElapsedCallback = HAL_TIM_PeriodElapsedCallback; + htim->PeriodElapsedHalfCpltCallback = HAL_TIM_PeriodElapsedHalfCpltCallback; + htim->TriggerCallback = HAL_TIM_TriggerCallback; + htim->TriggerHalfCpltCallback = HAL_TIM_TriggerHalfCpltCallback; + htim->IC_CaptureCallback = HAL_TIM_IC_CaptureCallback; + htim->IC_CaptureHalfCpltCallback = HAL_TIM_IC_CaptureHalfCpltCallback; + htim->OC_DelayElapsedCallback = HAL_TIM_OC_DelayElapsedCallback; + htim->PWM_PulseFinishedCallback = HAL_TIM_PWM_PulseFinishedCallback; + htim->PWM_PulseFinishedHalfCpltCallback = HAL_TIM_PWM_PulseFinishedHalfCpltCallback; + htim->ErrorCallback = HAL_TIM_ErrorCallback; + htim->CommutationCallback = HAL_TIMEx_CommutCallback; + htim->CommutationHalfCpltCallback = HAL_TIMEx_CommutHalfCpltCallback; + htim->BreakCallback = HAL_TIMEx_BreakCallback; + htim->Break2Callback = HAL_TIMEx_Break2Callback; +} +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + +/** + * @} + */ + +#endif /* HAL_TIM_MODULE_ENABLED */ +/** + * @} + */ + +/** + * @} + */ diff --git a/firmware/Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim_ex.c b/firmware/Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim_ex.c new file mode 100644 index 0000000..aab8dd3 --- /dev/null +++ b/firmware/Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim_ex.c @@ -0,0 +1,2893 @@ +/** + ****************************************************************************** + * @file stm32g0xx_hal_tim_ex.c + * @author MCD Application Team + * @brief TIM HAL module driver. + * This file provides firmware functions to manage the following + * functionalities of the Timer Extended peripheral: + * + Time Hall Sensor Interface Initialization + * + Time Hall Sensor Interface Start + * + Time Complementary signal break and dead time configuration + * + Time Master and Slave synchronization configuration + * + Time Output Compare/PWM Channel Configuration (for channels 5 and 6) + * + Time OCRef clear configuration + * + Timer remapping capabilities configuration + ****************************************************************************** + * @attention + * + * Copyright (c) 2018 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + @verbatim + ============================================================================== + ##### TIMER Extended features ##### + ============================================================================== + [..] + The Timer Extended features include: + (#) Complementary outputs with programmable dead-time for : + (++) Output Compare + (++) PWM generation (Edge and Center-aligned Mode) + (++) One-pulse mode output + (#) Synchronization circuit to control the timer with external signals and to + interconnect several timers together. + (#) Break input to put the timer output signals in reset state or in a known state. + (#) Supports incremental (quadrature) encoder and hall-sensor circuitry for + positioning purposes + + ##### How to use this driver ##### + ============================================================================== + [..] + (#) Initialize the TIM low level resources by implementing the following functions + depending on the selected feature: + (++) Hall Sensor output : HAL_TIMEx_HallSensor_MspInit() + + (#) Initialize the TIM low level resources : + (##) Enable the TIM interface clock using __HAL_RCC_TIMx_CLK_ENABLE(); + (##) TIM pins configuration + (+++) Enable the clock for the TIM GPIOs using the following function: + __HAL_RCC_GPIOx_CLK_ENABLE(); + (+++) Configure these TIM pins in Alternate function mode using HAL_GPIO_Init(); + + (#) The external Clock can be configured, if needed (the default clock is the + internal clock from the APBx), using the following function: + HAL_TIM_ConfigClockSource, the clock configuration should be done before + any start function. + + (#) Configure the TIM in the desired functioning mode using one of the + initialization function of this driver: + (++) HAL_TIMEx_HallSensor_Init() and HAL_TIMEx_ConfigCommutEvent(): to use the + Timer Hall Sensor Interface and the commutation event with the corresponding + Interrupt and DMA request if needed (Note that One Timer is used to interface + with the Hall sensor Interface and another Timer should be used to use + the commutation event). + + (#) Activate the TIM peripheral using one of the start functions: + (++) Complementary Output Compare : HAL_TIMEx_OCN_Start(), HAL_TIMEx_OCN_Start_DMA(), + HAL_TIMEx_OCN_Start_IT() + (++) Complementary PWM generation : HAL_TIMEx_PWMN_Start(), HAL_TIMEx_PWMN_Start_DMA(), + HAL_TIMEx_PWMN_Start_IT() + (++) Complementary One-pulse mode output : HAL_TIMEx_OnePulseN_Start(), HAL_TIMEx_OnePulseN_Start_IT() + (++) Hall Sensor output : HAL_TIMEx_HallSensor_Start(), HAL_TIMEx_HallSensor_Start_DMA(), + HAL_TIMEx_HallSensor_Start_IT(). + + @endverbatim + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32g0xx_hal.h" + +/** @addtogroup STM32G0xx_HAL_Driver + * @{ + */ + +/** @defgroup TIMEx TIMEx + * @brief TIM Extended HAL module driver + * @{ + */ + +#ifdef HAL_TIM_MODULE_ENABLED + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/** @defgroup TIMEx_Private_Constants TIM Extended Private Constants + * @{ + */ +/* Timeout for break input rearm */ +#define TIM_BREAKINPUT_REARM_TIMEOUT 5UL /* 5 milliseconds */ +/** + * @} + */ +/* End of private constants --------------------------------------------------*/ + +/* Private macros ------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ +static void TIM_DMADelayPulseNCplt(DMA_HandleTypeDef *hdma); +static void TIM_DMAErrorCCxN(DMA_HandleTypeDef *hdma); +static void TIM_CCxNChannelCmd(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ChannelNState); + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup TIMEx_Exported_Functions TIM Extended Exported Functions + * @{ + */ + +/** @defgroup TIMEx_Exported_Functions_Group1 Extended Timer Hall Sensor functions + * @brief Timer Hall Sensor functions + * +@verbatim + ============================================================================== + ##### Timer Hall Sensor functions ##### + ============================================================================== + [..] + This section provides functions allowing to: + (+) Initialize and configure TIM HAL Sensor. + (+) De-initialize TIM HAL Sensor. + (+) Start the Hall Sensor Interface. + (+) Stop the Hall Sensor Interface. + (+) Start the Hall Sensor Interface and enable interrupts. + (+) Stop the Hall Sensor Interface and disable interrupts. + (+) Start the Hall Sensor Interface and enable DMA transfers. + (+) Stop the Hall Sensor Interface and disable DMA transfers. + +@endverbatim + * @{ + */ +/** + * @brief Initializes the TIM Hall Sensor Interface and initialize the associated handle. + * @note When the timer instance is initialized in Hall Sensor Interface mode, + * timer channels 1 and channel 2 are reserved and cannot be used for + * other purpose. + * @param htim TIM Hall Sensor Interface handle + * @param sConfig TIM Hall Sensor configuration structure + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_HallSensor_Init(TIM_HandleTypeDef *htim, const TIM_HallSensor_InitTypeDef *sConfig) +{ + TIM_OC_InitTypeDef OC_Config; + + /* Check the TIM handle allocation */ + if (htim == NULL) + { + return HAL_ERROR; + } + + /* Check the parameters */ + assert_param(IS_TIM_HALL_SENSOR_INTERFACE_INSTANCE(htim->Instance)); + assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode)); + assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision)); + assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload)); + assert_param(IS_TIM_IC_POLARITY(sConfig->IC1Polarity)); + assert_param(IS_TIM_PERIOD(htim, htim->Init.Period)); + assert_param(IS_TIM_IC_PRESCALER(sConfig->IC1Prescaler)); + assert_param(IS_TIM_IC_FILTER(sConfig->IC1Filter)); + + if (htim->State == HAL_TIM_STATE_RESET) + { + /* Allocate lock resource and initialize it */ + htim->Lock = HAL_UNLOCKED; + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + /* Reset interrupt callbacks to legacy week callbacks */ + TIM_ResetCallback(htim); + + if (htim->HallSensor_MspInitCallback == NULL) + { + htim->HallSensor_MspInitCallback = HAL_TIMEx_HallSensor_MspInit; + } + /* Init the low level hardware : GPIO, CLOCK, NVIC */ + htim->HallSensor_MspInitCallback(htim); +#else + /* Init the low level hardware : GPIO, CLOCK, NVIC and DMA */ + HAL_TIMEx_HallSensor_MspInit(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + + /* Set the TIM state */ + htim->State = HAL_TIM_STATE_BUSY; + + /* Configure the Time base in the Encoder Mode */ + TIM_Base_SetConfig(htim->Instance, &htim->Init); + + /* Configure the Channel 1 as Input Channel to interface with the three Outputs of the Hall sensor */ + TIM_TI1_SetConfig(htim->Instance, sConfig->IC1Polarity, TIM_ICSELECTION_TRC, sConfig->IC1Filter); + + /* Reset the IC1PSC Bits */ + htim->Instance->CCMR1 &= ~TIM_CCMR1_IC1PSC; + /* Set the IC1PSC value */ + htim->Instance->CCMR1 |= sConfig->IC1Prescaler; + + /* Enable the Hall sensor interface (XOR function of the three inputs) */ + htim->Instance->CR2 |= TIM_CR2_TI1S; + + /* Select the TIM_TS_TI1F_ED signal as Input trigger for the TIM */ + htim->Instance->SMCR &= ~TIM_SMCR_TS; + htim->Instance->SMCR |= TIM_TS_TI1F_ED; + + /* Use the TIM_TS_TI1F_ED signal to reset the TIM counter each edge detection */ + htim->Instance->SMCR &= ~TIM_SMCR_SMS; + htim->Instance->SMCR |= TIM_SLAVEMODE_RESET; + + /* Program channel 2 in PWM 2 mode with the desired Commutation_Delay*/ + OC_Config.OCFastMode = TIM_OCFAST_DISABLE; + OC_Config.OCIdleState = TIM_OCIDLESTATE_RESET; + OC_Config.OCMode = TIM_OCMODE_PWM2; + OC_Config.OCNIdleState = TIM_OCNIDLESTATE_RESET; + OC_Config.OCNPolarity = TIM_OCNPOLARITY_HIGH; + OC_Config.OCPolarity = TIM_OCPOLARITY_HIGH; + OC_Config.Pulse = sConfig->Commutation_Delay; + + TIM_OC2_SetConfig(htim->Instance, &OC_Config); + + /* Select OC2REF as trigger output on TRGO: write the MMS bits in the TIMx_CR2 + register to 101 */ + htim->Instance->CR2 &= ~TIM_CR2_MMS; + htim->Instance->CR2 |= TIM_TRGO_OC2REF; + + /* Initialize the DMA burst operation state */ + htim->DMABurstState = HAL_DMA_BURST_STATE_READY; + + /* Initialize the TIM channels state */ + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + + /* Initialize the TIM state*/ + htim->State = HAL_TIM_STATE_READY; + + return HAL_OK; +} + +/** + * @brief DeInitializes the TIM Hall Sensor interface + * @param htim TIM Hall Sensor Interface handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_HallSensor_DeInit(TIM_HandleTypeDef *htim) +{ + /* Check the parameters */ + assert_param(IS_TIM_INSTANCE(htim->Instance)); + + htim->State = HAL_TIM_STATE_BUSY; + + /* Disable the TIM Peripheral Clock */ + __HAL_TIM_DISABLE(htim); + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + if (htim->HallSensor_MspDeInitCallback == NULL) + { + htim->HallSensor_MspDeInitCallback = HAL_TIMEx_HallSensor_MspDeInit; + } + /* DeInit the low level hardware */ + htim->HallSensor_MspDeInitCallback(htim); +#else + /* DeInit the low level hardware: GPIO, CLOCK, NVIC */ + HAL_TIMEx_HallSensor_MspDeInit(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + + /* Change the DMA burst operation state */ + htim->DMABurstState = HAL_DMA_BURST_STATE_RESET; + + /* Change the TIM channels state */ + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_RESET); + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_RESET); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_RESET); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_RESET); + + /* Change TIM state */ + htim->State = HAL_TIM_STATE_RESET; + + /* Release Lock */ + __HAL_UNLOCK(htim); + + return HAL_OK; +} + +/** + * @brief Initializes the TIM Hall Sensor MSP. + * @param htim TIM Hall Sensor Interface handle + * @retval None + */ +__weak void HAL_TIMEx_HallSensor_MspInit(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIMEx_HallSensor_MspInit could be implemented in the user file + */ +} + +/** + * @brief DeInitializes TIM Hall Sensor MSP. + * @param htim TIM Hall Sensor Interface handle + * @retval None + */ +__weak void HAL_TIMEx_HallSensor_MspDeInit(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIMEx_HallSensor_MspDeInit could be implemented in the user file + */ +} + +/** + * @brief Starts the TIM Hall Sensor Interface. + * @param htim TIM Hall Sensor Interface handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_HallSensor_Start(TIM_HandleTypeDef *htim) +{ + uint32_t tmpsmcr; + HAL_TIM_ChannelStateTypeDef channel_1_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_1); + HAL_TIM_ChannelStateTypeDef channel_2_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_2); + HAL_TIM_ChannelStateTypeDef complementary_channel_1_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHANNEL_1); + HAL_TIM_ChannelStateTypeDef complementary_channel_2_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHANNEL_2); + + /* Check the parameters */ + assert_param(IS_TIM_HALL_SENSOR_INTERFACE_INSTANCE(htim->Instance)); + + /* Check the TIM channels state */ + if ((channel_1_state != HAL_TIM_CHANNEL_STATE_READY) + || (channel_2_state != HAL_TIM_CHANNEL_STATE_READY) + || (complementary_channel_1_state != HAL_TIM_CHANNEL_STATE_READY) + || (complementary_channel_2_state != HAL_TIM_CHANNEL_STATE_READY)) + { + return HAL_ERROR; + } + + /* Set the TIM channels state */ + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + + /* Enable the Input Capture channel 1 + (in the Hall Sensor Interface the three possible channels that can be used are TIM_CHANNEL_1, + TIM_CHANNEL_2 and TIM_CHANNEL_3) */ + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE); + + /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + { + tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + { + __HAL_TIM_ENABLE(htim); + } + } + else + { + __HAL_TIM_ENABLE(htim); + } + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Stops the TIM Hall sensor Interface. + * @param htim TIM Hall Sensor Interface handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_HallSensor_Stop(TIM_HandleTypeDef *htim) +{ + /* Check the parameters */ + assert_param(IS_TIM_HALL_SENSOR_INTERFACE_INSTANCE(htim->Instance)); + + /* Disable the Input Capture channels 1, 2 and 3 + (in the Hall Sensor Interface the three possible channels that can be used are TIM_CHANNEL_1, + TIM_CHANNEL_2 and TIM_CHANNEL_3) */ + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE); + + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM channels state */ + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Starts the TIM Hall Sensor Interface in interrupt mode. + * @param htim TIM Hall Sensor Interface handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_HallSensor_Start_IT(TIM_HandleTypeDef *htim) +{ + uint32_t tmpsmcr; + HAL_TIM_ChannelStateTypeDef channel_1_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_1); + HAL_TIM_ChannelStateTypeDef channel_2_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_2); + HAL_TIM_ChannelStateTypeDef complementary_channel_1_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHANNEL_1); + HAL_TIM_ChannelStateTypeDef complementary_channel_2_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHANNEL_2); + + /* Check the parameters */ + assert_param(IS_TIM_HALL_SENSOR_INTERFACE_INSTANCE(htim->Instance)); + + /* Check the TIM channels state */ + if ((channel_1_state != HAL_TIM_CHANNEL_STATE_READY) + || (channel_2_state != HAL_TIM_CHANNEL_STATE_READY) + || (complementary_channel_1_state != HAL_TIM_CHANNEL_STATE_READY) + || (complementary_channel_2_state != HAL_TIM_CHANNEL_STATE_READY)) + { + return HAL_ERROR; + } + + /* Set the TIM channels state */ + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + + /* Enable the capture compare Interrupts 1 event */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1); + + /* Enable the Input Capture channel 1 + (in the Hall Sensor Interface the three possible channels that can be used are TIM_CHANNEL_1, + TIM_CHANNEL_2 and TIM_CHANNEL_3) */ + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE); + + /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + { + tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + { + __HAL_TIM_ENABLE(htim); + } + } + else + { + __HAL_TIM_ENABLE(htim); + } + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Stops the TIM Hall Sensor Interface in interrupt mode. + * @param htim TIM Hall Sensor Interface handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_HallSensor_Stop_IT(TIM_HandleTypeDef *htim) +{ + /* Check the parameters */ + assert_param(IS_TIM_HALL_SENSOR_INTERFACE_INSTANCE(htim->Instance)); + + /* Disable the Input Capture channel 1 + (in the Hall Sensor Interface the three possible channels that can be used are TIM_CHANNEL_1, + TIM_CHANNEL_2 and TIM_CHANNEL_3) */ + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE); + + /* Disable the capture compare Interrupts event */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1); + + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM channels state */ + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Starts the TIM Hall Sensor Interface in DMA mode. + * @param htim TIM Hall Sensor Interface handle + * @param pData The destination Buffer address. + * @param Length The length of data to be transferred from TIM peripheral to memory. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_HallSensor_Start_DMA(TIM_HandleTypeDef *htim, uint32_t *pData, uint16_t Length) +{ + uint32_t tmpsmcr; + HAL_TIM_ChannelStateTypeDef channel_1_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_1); + HAL_TIM_ChannelStateTypeDef complementary_channel_1_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHANNEL_1); + + /* Check the parameters */ + assert_param(IS_TIM_HALL_SENSOR_INTERFACE_INSTANCE(htim->Instance)); + + /* Set the TIM channel state */ + if ((channel_1_state == HAL_TIM_CHANNEL_STATE_BUSY) + || (complementary_channel_1_state == HAL_TIM_CHANNEL_STATE_BUSY)) + { + return HAL_BUSY; + } + else if ((channel_1_state == HAL_TIM_CHANNEL_STATE_READY) + && (complementary_channel_1_state == HAL_TIM_CHANNEL_STATE_READY)) + { + if ((pData == NULL) || (Length == 0U)) + { + return HAL_ERROR; + } + else + { + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + } + } + else + { + return HAL_ERROR; + } + + /* Enable the Input Capture channel 1 + (in the Hall Sensor Interface the three possible channels that can be used are TIM_CHANNEL_1, + TIM_CHANNEL_2 and TIM_CHANNEL_3) */ + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE); + + /* Set the DMA Input Capture 1 Callbacks */ + htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMACaptureCplt; + htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA channel for Capture 1*/ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)&htim->Instance->CCR1, (uint32_t)pData, Length) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + /* Enable the capture compare 1 Interrupt */ + __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC1); + + /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + { + tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + { + __HAL_TIM_ENABLE(htim); + } + } + else + { + __HAL_TIM_ENABLE(htim); + } + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Stops the TIM Hall Sensor Interface in DMA mode. + * @param htim TIM Hall Sensor Interface handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_HallSensor_Stop_DMA(TIM_HandleTypeDef *htim) +{ + /* Check the parameters */ + assert_param(IS_TIM_HALL_SENSOR_INTERFACE_INSTANCE(htim->Instance)); + + /* Disable the Input Capture channel 1 + (in the Hall Sensor Interface the three possible channels that can be used are TIM_CHANNEL_1, + TIM_CHANNEL_2 and TIM_CHANNEL_3) */ + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE); + + + /* Disable the capture compare Interrupts 1 event */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC1); + + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC1]); + + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM channel state */ + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + + /* Return function status */ + return HAL_OK; +} + +/** + * @} + */ + +/** @defgroup TIMEx_Exported_Functions_Group2 Extended Timer Complementary Output Compare functions + * @brief Timer Complementary Output Compare functions + * +@verbatim + ============================================================================== + ##### Timer Complementary Output Compare functions ##### + ============================================================================== + [..] + This section provides functions allowing to: + (+) Start the Complementary Output Compare/PWM. + (+) Stop the Complementary Output Compare/PWM. + (+) Start the Complementary Output Compare/PWM and enable interrupts. + (+) Stop the Complementary Output Compare/PWM and disable interrupts. + (+) Start the Complementary Output Compare/PWM and enable DMA transfers. + (+) Stop the Complementary Output Compare/PWM and disable DMA transfers. + +@endverbatim + * @{ + */ + +/** + * @brief Starts the TIM Output Compare signal generation on the complementary + * output. + * @param htim TIM Output Compare handle + * @param Channel TIM Channel to be enabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_OCN_Start(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + uint32_t tmpsmcr; + + /* Check the parameters */ + assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel)); + + /* Check the TIM complementary channel state */ + if (TIM_CHANNEL_N_STATE_GET(htim, Channel) != HAL_TIM_CHANNEL_STATE_READY) + { + return HAL_ERROR; + } + + /* Set the TIM complementary channel state */ + TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + + /* Enable the Capture compare channel N */ + TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_ENABLE); + + /* Enable the Main Output */ + __HAL_TIM_MOE_ENABLE(htim); + + /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + { + tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + { + __HAL_TIM_ENABLE(htim); + } + } + else + { + __HAL_TIM_ENABLE(htim); + } + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Stops the TIM Output Compare signal generation on the complementary + * output. + * @param htim TIM handle + * @param Channel TIM Channel to be disabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_OCN_Stop(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + /* Check the parameters */ + assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel)); + + /* Disable the Capture compare channel N */ + TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_DISABLE); + + /* Disable the Main Output */ + __HAL_TIM_MOE_DISABLE(htim); + + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM complementary channel state */ + TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Starts the TIM Output Compare signal generation in interrupt mode + * on the complementary output. + * @param htim TIM OC handle + * @param Channel TIM Channel to be enabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_OCN_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + HAL_StatusTypeDef status = HAL_OK; + uint32_t tmpsmcr; + + /* Check the parameters */ + assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel)); + + /* Check the TIM complementary channel state */ + if (TIM_CHANNEL_N_STATE_GET(htim, Channel) != HAL_TIM_CHANNEL_STATE_READY) + { + return HAL_ERROR; + } + + /* Set the TIM complementary channel state */ + TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + + switch (Channel) + { + case TIM_CHANNEL_1: + { + /* Enable the TIM Output Compare interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1); + break; + } + + case TIM_CHANNEL_2: + { + /* Enable the TIM Output Compare interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2); + break; + } + + case TIM_CHANNEL_3: + { + /* Enable the TIM Output Compare interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC3); + break; + } + + + default: + status = HAL_ERROR; + break; + } + + if (status == HAL_OK) + { + /* Enable the TIM Break interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_BREAK); + + /* Enable the Capture compare channel N */ + TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_ENABLE); + + /* Enable the Main Output */ + __HAL_TIM_MOE_ENABLE(htim); + + /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + { + tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + { + __HAL_TIM_ENABLE(htim); + } + } + else + { + __HAL_TIM_ENABLE(htim); + } + } + + /* Return function status */ + return status; +} + +/** + * @brief Stops the TIM Output Compare signal generation in interrupt mode + * on the complementary output. + * @param htim TIM Output Compare handle + * @param Channel TIM Channel to be disabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_OCN_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + HAL_StatusTypeDef status = HAL_OK; + uint32_t tmpccer; + + /* Check the parameters */ + assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel)); + + switch (Channel) + { + case TIM_CHANNEL_1: + { + /* Disable the TIM Output Compare interrupt */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1); + break; + } + + case TIM_CHANNEL_2: + { + /* Disable the TIM Output Compare interrupt */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2); + break; + } + + case TIM_CHANNEL_3: + { + /* Disable the TIM Output Compare interrupt */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC3); + break; + } + + default: + status = HAL_ERROR; + break; + } + + if (status == HAL_OK) + { + /* Disable the Capture compare channel N */ + TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_DISABLE); + + /* Disable the TIM Break interrupt (only if no more channel is active) */ + tmpccer = htim->Instance->CCER; + if ((tmpccer & (TIM_CCER_CC1NE | TIM_CCER_CC2NE | TIM_CCER_CC3NE)) == (uint32_t)RESET) + { + __HAL_TIM_DISABLE_IT(htim, TIM_IT_BREAK); + } + + /* Disable the Main Output */ + __HAL_TIM_MOE_DISABLE(htim); + + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM complementary channel state */ + TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + } + + /* Return function status */ + return status; +} + +/** + * @brief Starts the TIM Output Compare signal generation in DMA mode + * on the complementary output. + * @param htim TIM Output Compare handle + * @param Channel TIM Channel to be enabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @param pData The source Buffer address. + * @param Length The length of data to be transferred from memory to TIM peripheral + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_OCN_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, const uint32_t *pData, + uint16_t Length) +{ + HAL_StatusTypeDef status = HAL_OK; + uint32_t tmpsmcr; + + /* Check the parameters */ + assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel)); + + /* Set the TIM complementary channel state */ + if (TIM_CHANNEL_N_STATE_GET(htim, Channel) == HAL_TIM_CHANNEL_STATE_BUSY) + { + return HAL_BUSY; + } + else if (TIM_CHANNEL_N_STATE_GET(htim, Channel) == HAL_TIM_CHANNEL_STATE_READY) + { + if ((pData == NULL) || (Length == 0U)) + { + return HAL_ERROR; + } + else + { + TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + } + } + else + { + return HAL_ERROR; + } + + switch (Channel) + { + case TIM_CHANNEL_1: + { + /* Set the DMA compare callbacks */ + htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMADelayPulseNCplt; + htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAErrorCCxN ; + + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)pData, (uint32_t)&htim->Instance->CCR1, + Length) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + /* Enable the TIM Output Compare DMA request */ + __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC1); + break; + } + + case TIM_CHANNEL_2: + { + /* Set the DMA compare callbacks */ + htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback = TIM_DMADelayPulseNCplt; + htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAErrorCCxN ; + + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)pData, (uint32_t)&htim->Instance->CCR2, + Length) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + /* Enable the TIM Output Compare DMA request */ + __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC2); + break; + } + + case TIM_CHANNEL_3: + { + /* Set the DMA compare callbacks */ + htim->hdma[TIM_DMA_ID_CC3]->XferCpltCallback = TIM_DMADelayPulseNCplt; + htim->hdma[TIM_DMA_ID_CC3]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC3]->XferErrorCallback = TIM_DMAErrorCCxN ; + + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)pData, (uint32_t)&htim->Instance->CCR3, + Length) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + /* Enable the TIM Output Compare DMA request */ + __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC3); + break; + } + + default: + status = HAL_ERROR; + break; + } + + if (status == HAL_OK) + { + /* Enable the Capture compare channel N */ + TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_ENABLE); + + /* Enable the Main Output */ + __HAL_TIM_MOE_ENABLE(htim); + + /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + { + tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + { + __HAL_TIM_ENABLE(htim); + } + } + else + { + __HAL_TIM_ENABLE(htim); + } + } + + /* Return function status */ + return status; +} + +/** + * @brief Stops the TIM Output Compare signal generation in DMA mode + * on the complementary output. + * @param htim TIM Output Compare handle + * @param Channel TIM Channel to be disabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_OCN_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Check the parameters */ + assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel)); + + switch (Channel) + { + case TIM_CHANNEL_1: + { + /* Disable the TIM Output Compare DMA request */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC1); + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC1]); + break; + } + + case TIM_CHANNEL_2: + { + /* Disable the TIM Output Compare DMA request */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC2); + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC2]); + break; + } + + case TIM_CHANNEL_3: + { + /* Disable the TIM Output Compare DMA request */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC3); + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC3]); + break; + } + + default: + status = HAL_ERROR; + break; + } + + if (status == HAL_OK) + { + /* Disable the Capture compare channel N */ + TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_DISABLE); + + /* Disable the Main Output */ + __HAL_TIM_MOE_DISABLE(htim); + + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM complementary channel state */ + TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + } + + /* Return function status */ + return status; +} + +/** + * @} + */ + +/** @defgroup TIMEx_Exported_Functions_Group3 Extended Timer Complementary PWM functions + * @brief Timer Complementary PWM functions + * +@verbatim + ============================================================================== + ##### Timer Complementary PWM functions ##### + ============================================================================== + [..] + This section provides functions allowing to: + (+) Start the Complementary PWM. + (+) Stop the Complementary PWM. + (+) Start the Complementary PWM and enable interrupts. + (+) Stop the Complementary PWM and disable interrupts. + (+) Start the Complementary PWM and enable DMA transfers. + (+) Stop the Complementary PWM and disable DMA transfers. + (+) Start the Complementary Input Capture measurement. + (+) Stop the Complementary Input Capture. + (+) Start the Complementary Input Capture and enable interrupts. + (+) Stop the Complementary Input Capture and disable interrupts. + (+) Start the Complementary Input Capture and enable DMA transfers. + (+) Stop the Complementary Input Capture and disable DMA transfers. + (+) Start the Complementary One Pulse generation. + (+) Stop the Complementary One Pulse. + (+) Start the Complementary One Pulse and enable interrupts. + (+) Stop the Complementary One Pulse and disable interrupts. + +@endverbatim + * @{ + */ + +/** + * @brief Starts the PWM signal generation on the complementary output. + * @param htim TIM handle + * @param Channel TIM Channel to be enabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_PWMN_Start(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + uint32_t tmpsmcr; + + /* Check the parameters */ + assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel)); + + /* Check the TIM complementary channel state */ + if (TIM_CHANNEL_N_STATE_GET(htim, Channel) != HAL_TIM_CHANNEL_STATE_READY) + { + return HAL_ERROR; + } + + /* Set the TIM complementary channel state */ + TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + + /* Enable the complementary PWM output */ + TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_ENABLE); + + /* Enable the Main Output */ + __HAL_TIM_MOE_ENABLE(htim); + + /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + { + tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + { + __HAL_TIM_ENABLE(htim); + } + } + else + { + __HAL_TIM_ENABLE(htim); + } + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Stops the PWM signal generation on the complementary output. + * @param htim TIM handle + * @param Channel TIM Channel to be disabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_PWMN_Stop(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + /* Check the parameters */ + assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel)); + + /* Disable the complementary PWM output */ + TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_DISABLE); + + /* Disable the Main Output */ + __HAL_TIM_MOE_DISABLE(htim); + + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM complementary channel state */ + TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Starts the PWM signal generation in interrupt mode on the + * complementary output. + * @param htim TIM handle + * @param Channel TIM Channel to be disabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_PWMN_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + HAL_StatusTypeDef status = HAL_OK; + uint32_t tmpsmcr; + + /* Check the parameters */ + assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel)); + + /* Check the TIM complementary channel state */ + if (TIM_CHANNEL_N_STATE_GET(htim, Channel) != HAL_TIM_CHANNEL_STATE_READY) + { + return HAL_ERROR; + } + + /* Set the TIM complementary channel state */ + TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + + switch (Channel) + { + case TIM_CHANNEL_1: + { + /* Enable the TIM Capture/Compare 1 interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1); + break; + } + + case TIM_CHANNEL_2: + { + /* Enable the TIM Capture/Compare 2 interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2); + break; + } + + case TIM_CHANNEL_3: + { + /* Enable the TIM Capture/Compare 3 interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC3); + break; + } + + default: + status = HAL_ERROR; + break; + } + + if (status == HAL_OK) + { + /* Enable the TIM Break interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_BREAK); + + /* Enable the complementary PWM output */ + TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_ENABLE); + + /* Enable the Main Output */ + __HAL_TIM_MOE_ENABLE(htim); + + /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + { + tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + { + __HAL_TIM_ENABLE(htim); + } + } + else + { + __HAL_TIM_ENABLE(htim); + } + } + + /* Return function status */ + return status; +} + +/** + * @brief Stops the PWM signal generation in interrupt mode on the + * complementary output. + * @param htim TIM handle + * @param Channel TIM Channel to be disabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_PWMN_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + HAL_StatusTypeDef status = HAL_OK; + uint32_t tmpccer; + + /* Check the parameters */ + assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel)); + + switch (Channel) + { + case TIM_CHANNEL_1: + { + /* Disable the TIM Capture/Compare 1 interrupt */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1); + break; + } + + case TIM_CHANNEL_2: + { + /* Disable the TIM Capture/Compare 2 interrupt */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2); + break; + } + + case TIM_CHANNEL_3: + { + /* Disable the TIM Capture/Compare 3 interrupt */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC3); + break; + } + + default: + status = HAL_ERROR; + break; + } + + if (status == HAL_OK) + { + /* Disable the complementary PWM output */ + TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_DISABLE); + + /* Disable the TIM Break interrupt (only if no more channel is active) */ + tmpccer = htim->Instance->CCER; + if ((tmpccer & (TIM_CCER_CC1NE | TIM_CCER_CC2NE | TIM_CCER_CC3NE)) == (uint32_t)RESET) + { + __HAL_TIM_DISABLE_IT(htim, TIM_IT_BREAK); + } + + /* Disable the Main Output */ + __HAL_TIM_MOE_DISABLE(htim); + + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM complementary channel state */ + TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + } + + /* Return function status */ + return status; +} + +/** + * @brief Starts the TIM PWM signal generation in DMA mode on the + * complementary output + * @param htim TIM handle + * @param Channel TIM Channel to be enabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @param pData The source Buffer address. + * @param Length The length of data to be transferred from memory to TIM peripheral + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_PWMN_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, const uint32_t *pData, + uint16_t Length) +{ + HAL_StatusTypeDef status = HAL_OK; + uint32_t tmpsmcr; + + /* Check the parameters */ + assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel)); + + /* Set the TIM complementary channel state */ + if (TIM_CHANNEL_N_STATE_GET(htim, Channel) == HAL_TIM_CHANNEL_STATE_BUSY) + { + return HAL_BUSY; + } + else if (TIM_CHANNEL_N_STATE_GET(htim, Channel) == HAL_TIM_CHANNEL_STATE_READY) + { + if ((pData == NULL) || (Length == 0U)) + { + return HAL_ERROR; + } + else + { + TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + } + } + else + { + return HAL_ERROR; + } + + switch (Channel) + { + case TIM_CHANNEL_1: + { + /* Set the DMA compare callbacks */ + htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMADelayPulseNCplt; + htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAErrorCCxN ; + + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)pData, (uint32_t)&htim->Instance->CCR1, + Length) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + /* Enable the TIM Capture/Compare 1 DMA request */ + __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC1); + break; + } + + case TIM_CHANNEL_2: + { + /* Set the DMA compare callbacks */ + htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback = TIM_DMADelayPulseNCplt; + htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAErrorCCxN ; + + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)pData, (uint32_t)&htim->Instance->CCR2, + Length) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + /* Enable the TIM Capture/Compare 2 DMA request */ + __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC2); + break; + } + + case TIM_CHANNEL_3: + { + /* Set the DMA compare callbacks */ + htim->hdma[TIM_DMA_ID_CC3]->XferCpltCallback = TIM_DMADelayPulseNCplt; + htim->hdma[TIM_DMA_ID_CC3]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC3]->XferErrorCallback = TIM_DMAErrorCCxN ; + + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)pData, (uint32_t)&htim->Instance->CCR3, + Length) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + /* Enable the TIM Capture/Compare 3 DMA request */ + __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC3); + break; + } + + default: + status = HAL_ERROR; + break; + } + + if (status == HAL_OK) + { + /* Enable the complementary PWM output */ + TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_ENABLE); + + /* Enable the Main Output */ + __HAL_TIM_MOE_ENABLE(htim); + + /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + { + tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + { + __HAL_TIM_ENABLE(htim); + } + } + else + { + __HAL_TIM_ENABLE(htim); + } + } + + /* Return function status */ + return status; +} + +/** + * @brief Stops the TIM PWM signal generation in DMA mode on the complementary + * output + * @param htim TIM handle + * @param Channel TIM Channel to be disabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_PWMN_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Check the parameters */ + assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel)); + + switch (Channel) + { + case TIM_CHANNEL_1: + { + /* Disable the TIM Capture/Compare 1 DMA request */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC1); + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC1]); + break; + } + + case TIM_CHANNEL_2: + { + /* Disable the TIM Capture/Compare 2 DMA request */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC2); + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC2]); + break; + } + + case TIM_CHANNEL_3: + { + /* Disable the TIM Capture/Compare 3 DMA request */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC3); + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC3]); + break; + } + + default: + status = HAL_ERROR; + break; + } + + if (status == HAL_OK) + { + /* Disable the complementary PWM output */ + TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_DISABLE); + + /* Disable the Main Output */ + __HAL_TIM_MOE_DISABLE(htim); + + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM complementary channel state */ + TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + } + + /* Return function status */ + return status; +} + +/** + * @} + */ + +/** @defgroup TIMEx_Exported_Functions_Group4 Extended Timer Complementary One Pulse functions + * @brief Timer Complementary One Pulse functions + * +@verbatim + ============================================================================== + ##### Timer Complementary One Pulse functions ##### + ============================================================================== + [..] + This section provides functions allowing to: + (+) Start the Complementary One Pulse generation. + (+) Stop the Complementary One Pulse. + (+) Start the Complementary One Pulse and enable interrupts. + (+) Stop the Complementary One Pulse and disable interrupts. + +@endverbatim + * @{ + */ + +/** + * @brief Starts the TIM One Pulse signal generation on the complementary + * output. + * @note OutputChannel must match the pulse output channel chosen when calling + * @ref HAL_TIM_OnePulse_ConfigChannel(). + * @param htim TIM One Pulse handle + * @param OutputChannel pulse output channel to enable + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Start(TIM_HandleTypeDef *htim, uint32_t OutputChannel) +{ + uint32_t input_channel = (OutputChannel == TIM_CHANNEL_1) ? TIM_CHANNEL_2 : TIM_CHANNEL_1; + HAL_TIM_ChannelStateTypeDef channel_1_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_1); + HAL_TIM_ChannelStateTypeDef channel_2_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_2); + HAL_TIM_ChannelStateTypeDef complementary_channel_1_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHANNEL_1); + HAL_TIM_ChannelStateTypeDef complementary_channel_2_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHANNEL_2); + + /* Check the parameters */ + assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, OutputChannel)); + + /* Check the TIM channels state */ + if ((channel_1_state != HAL_TIM_CHANNEL_STATE_READY) + || (channel_2_state != HAL_TIM_CHANNEL_STATE_READY) + || (complementary_channel_1_state != HAL_TIM_CHANNEL_STATE_READY) + || (complementary_channel_2_state != HAL_TIM_CHANNEL_STATE_READY)) + { + return HAL_ERROR; + } + + /* Set the TIM channels state */ + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + + /* Enable the complementary One Pulse output channel and the Input Capture channel */ + TIM_CCxNChannelCmd(htim->Instance, OutputChannel, TIM_CCxN_ENABLE); + TIM_CCxChannelCmd(htim->Instance, input_channel, TIM_CCx_ENABLE); + + /* Enable the Main Output */ + __HAL_TIM_MOE_ENABLE(htim); + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Stops the TIM One Pulse signal generation on the complementary + * output. + * @note OutputChannel must match the pulse output channel chosen when calling + * @ref HAL_TIM_OnePulse_ConfigChannel(). + * @param htim TIM One Pulse handle + * @param OutputChannel pulse output channel to disable + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Stop(TIM_HandleTypeDef *htim, uint32_t OutputChannel) +{ + uint32_t input_channel = (OutputChannel == TIM_CHANNEL_1) ? TIM_CHANNEL_2 : TIM_CHANNEL_1; + + /* Check the parameters */ + assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, OutputChannel)); + + /* Disable the complementary One Pulse output channel and the Input Capture channel */ + TIM_CCxNChannelCmd(htim->Instance, OutputChannel, TIM_CCxN_DISABLE); + TIM_CCxChannelCmd(htim->Instance, input_channel, TIM_CCx_DISABLE); + + /* Disable the Main Output */ + __HAL_TIM_MOE_DISABLE(htim); + + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM channels state */ + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Starts the TIM One Pulse signal generation in interrupt mode on the + * complementary channel. + * @note OutputChannel must match the pulse output channel chosen when calling + * @ref HAL_TIM_OnePulse_ConfigChannel(). + * @param htim TIM One Pulse handle + * @param OutputChannel pulse output channel to enable + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Start_IT(TIM_HandleTypeDef *htim, uint32_t OutputChannel) +{ + uint32_t input_channel = (OutputChannel == TIM_CHANNEL_1) ? TIM_CHANNEL_2 : TIM_CHANNEL_1; + HAL_TIM_ChannelStateTypeDef channel_1_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_1); + HAL_TIM_ChannelStateTypeDef channel_2_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_2); + HAL_TIM_ChannelStateTypeDef complementary_channel_1_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHANNEL_1); + HAL_TIM_ChannelStateTypeDef complementary_channel_2_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHANNEL_2); + + /* Check the parameters */ + assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, OutputChannel)); + + /* Check the TIM channels state */ + if ((channel_1_state != HAL_TIM_CHANNEL_STATE_READY) + || (channel_2_state != HAL_TIM_CHANNEL_STATE_READY) + || (complementary_channel_1_state != HAL_TIM_CHANNEL_STATE_READY) + || (complementary_channel_2_state != HAL_TIM_CHANNEL_STATE_READY)) + { + return HAL_ERROR; + } + + /* Set the TIM channels state */ + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + + /* Enable the TIM Capture/Compare 1 interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1); + + /* Enable the TIM Capture/Compare 2 interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2); + + /* Enable the complementary One Pulse output channel and the Input Capture channel */ + TIM_CCxNChannelCmd(htim->Instance, OutputChannel, TIM_CCxN_ENABLE); + TIM_CCxChannelCmd(htim->Instance, input_channel, TIM_CCx_ENABLE); + + /* Enable the Main Output */ + __HAL_TIM_MOE_ENABLE(htim); + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Stops the TIM One Pulse signal generation in interrupt mode on the + * complementary channel. + * @note OutputChannel must match the pulse output channel chosen when calling + * @ref HAL_TIM_OnePulse_ConfigChannel(). + * @param htim TIM One Pulse handle + * @param OutputChannel pulse output channel to disable + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Stop_IT(TIM_HandleTypeDef *htim, uint32_t OutputChannel) +{ + uint32_t input_channel = (OutputChannel == TIM_CHANNEL_1) ? TIM_CHANNEL_2 : TIM_CHANNEL_1; + + /* Check the parameters */ + assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, OutputChannel)); + + /* Disable the TIM Capture/Compare 1 interrupt */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1); + + /* Disable the TIM Capture/Compare 2 interrupt */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2); + + /* Disable the complementary One Pulse output channel and the Input Capture channel */ + TIM_CCxNChannelCmd(htim->Instance, OutputChannel, TIM_CCxN_DISABLE); + TIM_CCxChannelCmd(htim->Instance, input_channel, TIM_CCx_DISABLE); + + /* Disable the Main Output */ + __HAL_TIM_MOE_DISABLE(htim); + + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM channels state */ + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + + /* Return function status */ + return HAL_OK; +} + +/** + * @} + */ + +/** @defgroup TIMEx_Exported_Functions_Group5 Extended Peripheral Control functions + * @brief Peripheral Control functions + * +@verbatim + ============================================================================== + ##### Peripheral Control functions ##### + ============================================================================== + [..] + This section provides functions allowing to: + (+) Configure the commutation event in case of use of the Hall sensor interface. + (+) Configure Output channels for OC and PWM mode. + + (+) Configure Complementary channels, break features and dead time. + (+) Configure Master synchronization. + (+) Configure timer remapping capabilities. + (+) Select timer input source. + (+) Enable or disable channel grouping. + +@endverbatim + * @{ + */ + +/** + * @brief Configure the TIM commutation event sequence. + * @note This function is mandatory to use the commutation event in order to + * update the configuration at each commutation detection on the TRGI input of the Timer, + * the typical use of this feature is with the use of another Timer(interface Timer) + * configured in Hall sensor interface, this interface Timer will generate the + * commutation at its TRGO output (connected to Timer used in this function) each time + * the TI1 of the Interface Timer detect a commutation at its input TI1. + * @param htim TIM handle + * @param InputTrigger the Internal trigger corresponding to the Timer Interfacing with the Hall sensor + * This parameter can be one of the following values: + * @arg TIM_TS_ITR0: Internal trigger 0 selected + * @arg TIM_TS_ITR1: Internal trigger 1 selected + * @arg TIM_TS_ITR2: Internal trigger 2 selected + * @arg TIM_TS_ITR3: Internal trigger 3 selected + * @arg TIM_TS_NONE: No trigger is needed + * @param CommutationSource the Commutation Event source + * This parameter can be one of the following values: + * @arg TIM_COMMUTATION_TRGI: Commutation source is the TRGI of the Interface Timer + * @arg TIM_COMMUTATION_SOFTWARE: Commutation source is set by software using the COMG bit + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_ConfigCommutEvent(TIM_HandleTypeDef *htim, uint32_t InputTrigger, + uint32_t CommutationSource) +{ + /* Check the parameters */ + assert_param(IS_TIM_COMMUTATION_EVENT_INSTANCE(htim->Instance)); + assert_param(IS_TIM_INTERNAL_TRIGGEREVENT_SELECTION(InputTrigger)); + + __HAL_LOCK(htim); + + if ((InputTrigger == TIM_TS_ITR0) || (InputTrigger == TIM_TS_ITR1) || + (InputTrigger == TIM_TS_ITR2) || (InputTrigger == TIM_TS_ITR3)) + { + /* Select the Input trigger */ + htim->Instance->SMCR &= ~TIM_SMCR_TS; + htim->Instance->SMCR |= InputTrigger; + } + + /* Select the Capture Compare preload feature */ + htim->Instance->CR2 |= TIM_CR2_CCPC; + /* Select the Commutation event source */ + htim->Instance->CR2 &= ~TIM_CR2_CCUS; + htim->Instance->CR2 |= CommutationSource; + + /* Disable Commutation Interrupt */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_COM); + + /* Disable Commutation DMA request */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_COM); + + __HAL_UNLOCK(htim); + + return HAL_OK; +} + +/** + * @brief Configure the TIM commutation event sequence with interrupt. + * @note This function is mandatory to use the commutation event in order to + * update the configuration at each commutation detection on the TRGI input of the Timer, + * the typical use of this feature is with the use of another Timer(interface Timer) + * configured in Hall sensor interface, this interface Timer will generate the + * commutation at its TRGO output (connected to Timer used in this function) each time + * the TI1 of the Interface Timer detect a commutation at its input TI1. + * @param htim TIM handle + * @param InputTrigger the Internal trigger corresponding to the Timer Interfacing with the Hall sensor + * This parameter can be one of the following values: + * @arg TIM_TS_ITR0: Internal trigger 0 selected + * @arg TIM_TS_ITR1: Internal trigger 1 selected + * @arg TIM_TS_ITR2: Internal trigger 2 selected + * @arg TIM_TS_ITR3: Internal trigger 3 selected + * @arg TIM_TS_NONE: No trigger is needed + * @param CommutationSource the Commutation Event source + * This parameter can be one of the following values: + * @arg TIM_COMMUTATION_TRGI: Commutation source is the TRGI of the Interface Timer + * @arg TIM_COMMUTATION_SOFTWARE: Commutation source is set by software using the COMG bit + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_ConfigCommutEvent_IT(TIM_HandleTypeDef *htim, uint32_t InputTrigger, + uint32_t CommutationSource) +{ + /* Check the parameters */ + assert_param(IS_TIM_COMMUTATION_EVENT_INSTANCE(htim->Instance)); + assert_param(IS_TIM_INTERNAL_TRIGGEREVENT_SELECTION(InputTrigger)); + + __HAL_LOCK(htim); + + if ((InputTrigger == TIM_TS_ITR0) || (InputTrigger == TIM_TS_ITR1) || + (InputTrigger == TIM_TS_ITR2) || (InputTrigger == TIM_TS_ITR3)) + { + /* Select the Input trigger */ + htim->Instance->SMCR &= ~TIM_SMCR_TS; + htim->Instance->SMCR |= InputTrigger; + } + + /* Select the Capture Compare preload feature */ + htim->Instance->CR2 |= TIM_CR2_CCPC; + /* Select the Commutation event source */ + htim->Instance->CR2 &= ~TIM_CR2_CCUS; + htim->Instance->CR2 |= CommutationSource; + + /* Disable Commutation DMA request */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_COM); + + /* Enable the Commutation Interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_COM); + + __HAL_UNLOCK(htim); + + return HAL_OK; +} + +/** + * @brief Configure the TIM commutation event sequence with DMA. + * @note This function is mandatory to use the commutation event in order to + * update the configuration at each commutation detection on the TRGI input of the Timer, + * the typical use of this feature is with the use of another Timer(interface Timer) + * configured in Hall sensor interface, this interface Timer will generate the + * commutation at its TRGO output (connected to Timer used in this function) each time + * the TI1 of the Interface Timer detect a commutation at its input TI1. + * @note The user should configure the DMA in his own software, in This function only the COMDE bit is set + * @param htim TIM handle + * @param InputTrigger the Internal trigger corresponding to the Timer Interfacing with the Hall sensor + * This parameter can be one of the following values: + * @arg TIM_TS_ITR0: Internal trigger 0 selected + * @arg TIM_TS_ITR1: Internal trigger 1 selected + * @arg TIM_TS_ITR2: Internal trigger 2 selected + * @arg TIM_TS_ITR3: Internal trigger 3 selected + * @arg TIM_TS_NONE: No trigger is needed + * @param CommutationSource the Commutation Event source + * This parameter can be one of the following values: + * @arg TIM_COMMUTATION_TRGI: Commutation source is the TRGI of the Interface Timer + * @arg TIM_COMMUTATION_SOFTWARE: Commutation source is set by software using the COMG bit + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_ConfigCommutEvent_DMA(TIM_HandleTypeDef *htim, uint32_t InputTrigger, + uint32_t CommutationSource) +{ + /* Check the parameters */ + assert_param(IS_TIM_COMMUTATION_EVENT_INSTANCE(htim->Instance)); + assert_param(IS_TIM_INTERNAL_TRIGGEREVENT_SELECTION(InputTrigger)); + + __HAL_LOCK(htim); + + if ((InputTrigger == TIM_TS_ITR0) || (InputTrigger == TIM_TS_ITR1) || + (InputTrigger == TIM_TS_ITR2) || (InputTrigger == TIM_TS_ITR3)) + { + /* Select the Input trigger */ + htim->Instance->SMCR &= ~TIM_SMCR_TS; + htim->Instance->SMCR |= InputTrigger; + } + + /* Select the Capture Compare preload feature */ + htim->Instance->CR2 |= TIM_CR2_CCPC; + /* Select the Commutation event source */ + htim->Instance->CR2 &= ~TIM_CR2_CCUS; + htim->Instance->CR2 |= CommutationSource; + + /* Enable the Commutation DMA Request */ + /* Set the DMA Commutation Callback */ + htim->hdma[TIM_DMA_ID_COMMUTATION]->XferCpltCallback = TIMEx_DMACommutationCplt; + htim->hdma[TIM_DMA_ID_COMMUTATION]->XferHalfCpltCallback = TIMEx_DMACommutationHalfCplt; + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_COMMUTATION]->XferErrorCallback = TIM_DMAError; + + /* Disable Commutation Interrupt */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_COM); + + /* Enable the Commutation DMA Request */ + __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_COM); + + __HAL_UNLOCK(htim); + + return HAL_OK; +} + +/** + * @brief Configures the TIM in master mode. + * @param htim TIM handle. + * @param sMasterConfig pointer to a TIM_MasterConfigTypeDef structure that + * contains the selected trigger output (TRGO) and the Master/Slave + * mode. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_MasterConfigSynchronization(TIM_HandleTypeDef *htim, + const TIM_MasterConfigTypeDef *sMasterConfig) +{ + uint32_t tmpcr2; + uint32_t tmpsmcr; + + /* Check the parameters */ + assert_param(IS_TIM_MASTER_INSTANCE(htim->Instance)); + assert_param(IS_TIM_TRGO_SOURCE(sMasterConfig->MasterOutputTrigger)); + assert_param(IS_TIM_MSM_STATE(sMasterConfig->MasterSlaveMode)); + + /* Check input state */ + __HAL_LOCK(htim); + + /* Change the handler state */ + htim->State = HAL_TIM_STATE_BUSY; + + /* Get the TIMx CR2 register value */ + tmpcr2 = htim->Instance->CR2; + + /* Get the TIMx SMCR register value */ + tmpsmcr = htim->Instance->SMCR; + + /* If the timer supports ADC synchronization through TRGO2, set the master mode selection 2 */ + if (IS_TIM_TRGO2_INSTANCE(htim->Instance)) + { + /* Check the parameters */ + assert_param(IS_TIM_TRGO2_SOURCE(sMasterConfig->MasterOutputTrigger2)); + + /* Clear the MMS2 bits */ + tmpcr2 &= ~TIM_CR2_MMS2; + /* Select the TRGO2 source*/ + tmpcr2 |= sMasterConfig->MasterOutputTrigger2; + } + + /* Reset the MMS Bits */ + tmpcr2 &= ~TIM_CR2_MMS; + /* Select the TRGO source */ + tmpcr2 |= sMasterConfig->MasterOutputTrigger; + + /* Update TIMx CR2 */ + htim->Instance->CR2 = tmpcr2; + + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + { + /* Reset the MSM Bit */ + tmpsmcr &= ~TIM_SMCR_MSM; + /* Set master mode */ + tmpsmcr |= sMasterConfig->MasterSlaveMode; + + /* Update TIMx SMCR */ + htim->Instance->SMCR = tmpsmcr; + } + + /* Change the htim state */ + htim->State = HAL_TIM_STATE_READY; + + __HAL_UNLOCK(htim); + + return HAL_OK; +} + +/** + * @brief Configures the Break feature, dead time, Lock level, OSSI/OSSR State + * and the AOE(automatic output enable). + * @param htim TIM handle + * @param sBreakDeadTimeConfig pointer to a TIM_ConfigBreakDeadConfigTypeDef structure that + * contains the BDTR Register configuration information for the TIM peripheral. + * @note Interrupts can be generated when an active level is detected on the + * break input, the break 2 input or the system break input. Break + * interrupt can be enabled by calling the @ref __HAL_TIM_ENABLE_IT macro. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_ConfigBreakDeadTime(TIM_HandleTypeDef *htim, + const TIM_BreakDeadTimeConfigTypeDef *sBreakDeadTimeConfig) +{ + /* Keep this variable initialized to 0 as it is used to configure BDTR register */ + uint32_t tmpbdtr = 0U; + + /* Check the parameters */ + assert_param(IS_TIM_BREAK_INSTANCE(htim->Instance)); + assert_param(IS_TIM_OSSR_STATE(sBreakDeadTimeConfig->OffStateRunMode)); + assert_param(IS_TIM_OSSI_STATE(sBreakDeadTimeConfig->OffStateIDLEMode)); + assert_param(IS_TIM_LOCK_LEVEL(sBreakDeadTimeConfig->LockLevel)); + assert_param(IS_TIM_DEADTIME(sBreakDeadTimeConfig->DeadTime)); + assert_param(IS_TIM_BREAK_STATE(sBreakDeadTimeConfig->BreakState)); + assert_param(IS_TIM_BREAK_POLARITY(sBreakDeadTimeConfig->BreakPolarity)); + assert_param(IS_TIM_BREAK_FILTER(sBreakDeadTimeConfig->BreakFilter)); + assert_param(IS_TIM_AUTOMATIC_OUTPUT_STATE(sBreakDeadTimeConfig->AutomaticOutput)); + + /* Check input state */ + __HAL_LOCK(htim); + + /* Set the Lock level, the Break enable Bit and the Polarity, the OSSR State, + the OSSI State, the dead time value and the Automatic Output Enable Bit */ + + /* Set the BDTR bits */ + MODIFY_REG(tmpbdtr, TIM_BDTR_DTG, sBreakDeadTimeConfig->DeadTime); + MODIFY_REG(tmpbdtr, TIM_BDTR_LOCK, sBreakDeadTimeConfig->LockLevel); + MODIFY_REG(tmpbdtr, TIM_BDTR_OSSI, sBreakDeadTimeConfig->OffStateIDLEMode); + MODIFY_REG(tmpbdtr, TIM_BDTR_OSSR, sBreakDeadTimeConfig->OffStateRunMode); + MODIFY_REG(tmpbdtr, TIM_BDTR_BKE, sBreakDeadTimeConfig->BreakState); + MODIFY_REG(tmpbdtr, TIM_BDTR_BKP, sBreakDeadTimeConfig->BreakPolarity); + MODIFY_REG(tmpbdtr, TIM_BDTR_AOE, sBreakDeadTimeConfig->AutomaticOutput); + MODIFY_REG(tmpbdtr, TIM_BDTR_BKF, (sBreakDeadTimeConfig->BreakFilter << TIM_BDTR_BKF_Pos)); + + if (IS_TIM_ADVANCED_INSTANCE(htim->Instance)) + { + /* Check the parameters */ + assert_param(IS_TIM_BREAK_AFMODE(sBreakDeadTimeConfig->BreakAFMode)); + + /* Set BREAK AF mode */ + MODIFY_REG(tmpbdtr, TIM_BDTR_BKBID, sBreakDeadTimeConfig->BreakAFMode); + } + + if (IS_TIM_BKIN2_INSTANCE(htim->Instance)) + { + /* Check the parameters */ + assert_param(IS_TIM_BREAK2_STATE(sBreakDeadTimeConfig->Break2State)); + assert_param(IS_TIM_BREAK2_POLARITY(sBreakDeadTimeConfig->Break2Polarity)); + assert_param(IS_TIM_BREAK_FILTER(sBreakDeadTimeConfig->Break2Filter)); + + /* Set the BREAK2 input related BDTR bits */ + MODIFY_REG(tmpbdtr, TIM_BDTR_BK2F, (sBreakDeadTimeConfig->Break2Filter << TIM_BDTR_BK2F_Pos)); + MODIFY_REG(tmpbdtr, TIM_BDTR_BK2E, sBreakDeadTimeConfig->Break2State); + MODIFY_REG(tmpbdtr, TIM_BDTR_BK2P, sBreakDeadTimeConfig->Break2Polarity); + + if (IS_TIM_ADVANCED_INSTANCE(htim->Instance)) + { + /* Check the parameters */ + assert_param(IS_TIM_BREAK2_AFMODE(sBreakDeadTimeConfig->Break2AFMode)); + + /* Set BREAK2 AF mode */ + MODIFY_REG(tmpbdtr, TIM_BDTR_BK2BID, sBreakDeadTimeConfig->Break2AFMode); + } + } + + /* Set TIMx_BDTR */ + htim->Instance->BDTR = tmpbdtr; + + __HAL_UNLOCK(htim); + + return HAL_OK; +} + +/** + * @brief Configures the break input source. + * @param htim TIM handle. + * @param BreakInput Break input to configure + * This parameter can be one of the following values: + * @arg TIM_BREAKINPUT_BRK: Timer break input + * @arg TIM_BREAKINPUT_BRK2: Timer break 2 input + * @param sBreakInputConfig Break input source configuration + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_ConfigBreakInput(TIM_HandleTypeDef *htim, + uint32_t BreakInput, + const TIMEx_BreakInputConfigTypeDef *sBreakInputConfig) + +{ + HAL_StatusTypeDef status = HAL_OK; + uint32_t tmporx; + uint32_t bkin_enable_mask; + uint32_t bkin_polarity_mask; + uint32_t bkin_enable_bitpos; + uint32_t bkin_polarity_bitpos; + + /* Check the parameters */ + assert_param(IS_TIM_BREAK_INSTANCE(htim->Instance)); + assert_param(IS_TIM_BREAKINPUT(BreakInput)); + assert_param(IS_TIM_BREAKINPUTSOURCE(sBreakInputConfig->Source)); + assert_param(IS_TIM_BREAKINPUTSOURCE_STATE(sBreakInputConfig->Enable)); + assert_param(IS_TIM_BREAKINPUTSOURCE_POLARITY(sBreakInputConfig->Polarity)); + + /* Check input state */ + __HAL_LOCK(htim); + + switch (sBreakInputConfig->Source) + { + case TIM_BREAKINPUTSOURCE_BKIN: + { + bkin_enable_mask = TIM1_AF1_BKINE; + bkin_enable_bitpos = TIM1_AF1_BKINE_Pos; + bkin_polarity_mask = TIM1_AF1_BKINP; + bkin_polarity_bitpos = TIM1_AF1_BKINP_Pos; + break; + } +#if defined(COMP1) && defined(COMP2) + case TIM_BREAKINPUTSOURCE_COMP1: + { + bkin_enable_mask = TIM1_AF1_BKCMP1E; + bkin_enable_bitpos = TIM1_AF1_BKCMP1E_Pos; + bkin_polarity_mask = TIM1_AF1_BKCMP1P; + bkin_polarity_bitpos = TIM1_AF1_BKCMP1P_Pos; + break; + } + case TIM_BREAKINPUTSOURCE_COMP2: + { + bkin_enable_mask = TIM1_AF1_BKCMP2E; + bkin_enable_bitpos = TIM1_AF1_BKCMP2E_Pos; + bkin_polarity_mask = TIM1_AF1_BKCMP2P; + bkin_polarity_bitpos = TIM1_AF1_BKCMP2P_Pos; + break; + } +#endif /* COMP1 && COMP2 */ +#if defined(COMP3) + case TIM_BREAKINPUTSOURCE_COMP3: + { + bkin_enable_mask = TIM1_AF1_BKCMP3E; + bkin_enable_bitpos = TIM1_AF1_BKCMP3E_Pos; + bkin_polarity_mask = TIM1_AF1_BKCMP3P; + bkin_polarity_bitpos = TIM1_AF1_BKCMP3P_Pos; + break; + } +#endif /* COMP3 */ + + default: + { + bkin_enable_mask = 0U; + bkin_polarity_mask = 0U; + bkin_enable_bitpos = 0U; + bkin_polarity_bitpos = 0U; + break; + } + } + + switch (BreakInput) + { + case TIM_BREAKINPUT_BRK: + { + /* Get the TIMx_AF1 register value */ + tmporx = htim->Instance->AF1; + + /* Enable the break input */ + tmporx &= ~bkin_enable_mask; + tmporx |= (sBreakInputConfig->Enable << bkin_enable_bitpos) & bkin_enable_mask; + + /* Set the break input polarity */ + tmporx &= ~bkin_polarity_mask; + tmporx |= (sBreakInputConfig->Polarity << bkin_polarity_bitpos) & bkin_polarity_mask; + + /* Set TIMx_AF1 */ + htim->Instance->AF1 = tmporx; + break; + } + case TIM_BREAKINPUT_BRK2: + { + /* Get the TIMx_AF2 register value */ + tmporx = htim->Instance->AF2; + + /* Enable the break input */ + tmporx &= ~bkin_enable_mask; + tmporx |= (sBreakInputConfig->Enable << bkin_enable_bitpos) & bkin_enable_mask; + + /* Set the break input polarity */ + tmporx &= ~bkin_polarity_mask; + tmporx |= (sBreakInputConfig->Polarity << bkin_polarity_bitpos) & bkin_polarity_mask; + + /* Set TIMx_AF2 */ + htim->Instance->AF2 = tmporx; + break; + } + default: + status = HAL_ERROR; + break; + } + + __HAL_UNLOCK(htim); + + return status; +} + +/** + * @brief Configures the TIMx Remapping input capabilities. + * @param htim TIM handle. + * @param Remap specifies the TIM remapping source. + * For TIM1, the parameter can take one of the following values: + * @arg TIM_TIM1_ETR_GPIO: TIM1 ETR is is connected to GPIO + * @arg TIM_TIM1_ETR_COMP1: TIM1 ETR is connected to COMP1 output + * @arg TIM_TIM1_ETR_COMP2: TIM1 ETR is connected to COMP2 output + * @arg TIM_TIM1_ETR_COMP3: TIM1 ETR is connected to COMP3 output (**) + * @arg TIM_TIM1_ETR_ADC1_AWD1: TIM1 ETR is connected to ADC1 AWD1 + * @arg TIM_TIM1_ETR_ADC1_AWD2: TIM1 ETR is connected to ADC1 AWD2 + * @arg TIM_TIM1_ETR_ADC1_AWD3: TIM1 ETR is connected to ADC1 AWD3 + * + * For TIM2, the parameter can take one of the following values: (*) + * @arg TIM_TIM2_ETR_GPIO: TIM2_ETR is connected to GPIO + * @arg TIM_TIM2_ETR_COMP1: TIM2_ETR is connected to COMP1 output + * @arg TIM_TIM2_ETR_COMP2: TIM2_ETR is connected to COMP2 output + * @arg TIM_TIM2_ETR_COMP3: TIM2_ETR is connected to COMP3 output (**) + * @arg TIM_TIM2_ETR_LSE: TIM2_ETR is connected to LSE + * @arg TIM_TIM2_ETR_MCO: TIM2_ETR is connected to MCO (**) + * @arg TIM_TIM2_ETR_MCO2: TIM2_ETR is connected to MCO2 (**) + * + * For TIM3, the parameter can take one of the following values: + * @arg TIM_TIM3_ETR_GPIO TIM3_ETR is connected to GPIO + * @arg TIM_TIM3_ETR_COMP1 TIM3_ETR is connected to COMP1 output + * @arg TIM_TIM3_ETR_COMP2 TIM3_ETR is connected to COMP2 output + * @arg TIM_TIM3_ETR_COMP3 TIM3_ETR is connected to COMP3 output (**) + * + * For TIM4, the parameter can take one of the following values:(*) + * @arg TIM_TIM4_ETR_GPIO TIM4_ETR is connected to GPIO + * @arg TIM_TIM4_ETR_COMP1 TIM4_ETR is connected to COMP1 output + * @arg TIM_TIM4_ETR_COMP2 TIM4_ETR is connected to COMP2 output + * @arg TIM_TIM4_ETR_COMP3 TIM4_ETR is connected to COMP3 output (**) + * + * (*) Timer instance not available on all devices \n + * (**) Value not defined in all devices. \n + * + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_RemapConfig(TIM_HandleTypeDef *htim, uint32_t Remap) +{ + /* Check parameters */ + assert_param(IS_TIM_REMAP_INSTANCE(htim->Instance)); + assert_param(IS_TIM_REMAP(Remap)); + + __HAL_LOCK(htim); + + MODIFY_REG(htim->Instance->AF1, TIM1_AF1_ETRSEL_Msk, Remap); + + __HAL_UNLOCK(htim); + + return HAL_OK; +} + +/** + * @brief Select the timer input source + * @param htim TIM handle. + * @param Channel specifies the TIM Channel + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TI1 input channel + * @arg TIM_CHANNEL_2: TI2 input channel + * @arg TIM_CHANNEL_3: TI3 input channel + * @param TISelection specifies the timer input source + * + * For TIM1 this parameter can be one of the following values: + * @arg TIM_TIM1_TI1_GPIO: TIM1 TI1 is connected to GPIO + * @arg TIM_TIM1_TI1_COMP1: TIM1 TI1 is connected to COMP1 output + * @arg TIM_TIM1_TI2_GPIO: TIM1 TI2 is connected to GPIO + * @arg TIM_TIM1_TI2_COMP2: TIM1 TI2 is connected to COMP2 output + * @arg TIM_TIM1_TI3_GPIO: TIM1 TI3 is connected to GPIO + * @arg TIM_TIM1_TI3_COMP3: TIM1 TI3 is connected to COMP3 output (**) + * + * For TIM2, the parameter is one of the following values: (*) + * @arg TIM_TIM2_TI1_GPIO: TIM2 TI1 is connected to GPIO + * @arg TIM_TIM2_TI1_COMP1: TIM2 TI1 is connected to COMP1 output + * @arg TIM_TIM2_TI2_GPIO: TIM2 TI2 is connected to GPIO + * @arg TIM_TIM2_TI2_COMP2: TIM2 TI2 is connected to COMP2 output + * @arg TIM_TIM2_TI3_GPIO: TIM2 TI3 is connected to GPIO + * @arg TIM_TIM2_TI3_COMP3: TIM2 TI3 is connected to COMP3 output (**) + * + * For TIM3, the parameter is one of the following values: + * @arg TIM_TIM3_TI1_GPIO: TIM3 TI1 is connected to GPIO + * @arg TIM_TIM3_TI1_COMP1: TIM3 TI1 is connected to COMP1 output + * @arg TIM_TIM3_TI2_GPIO: TIM3 TI2 is connected to GPIO + * @arg TIM_TIM3_TI2_COMP2: TIM3 TI2 is connected to COMP2 output + * @arg TIM_TIM3_TI3_GPIO: TIM3 TI3 is connected to GPIO + * @arg TIM_TIM3_TI3_COMP3: TIM3 TI3 is connected to COMP3 output (**) + * + * For TIM4, the parameter is one of the following values: (*) + * @arg TIM_TIM4_TI1_GPIO: TIM4 TI1 is connected to GPIO + * @arg TIM_TIM4_TI1_COMP1: TIM4 TI1 is connected to COMP1 output + * @arg TIM_TIM4_TI2_GPIO: TIM4 TI2 is connected to GPIO + * @arg TIM_TIM4_TI2_COMP2: TIM4 TI2 is connected to COMP2 output + * @arg TIM_TIM4_TI3_GPIO: TIM4 TI3 is connected to GPIO + * @arg TIM_TIM4_TI3_COMP3: TIM4 TI3 is connected to COMP3 output + * + * For TIM14, the parameter is one of the following values: + * @arg TIM_TIM14_TI1_GPIO: TIM14 TI1 is connected to GPIO + * @arg TIM_TIM14_TI1_RTC: TIM14 TI1 is connected to RTC clock + * @arg TIM_TIM14_TI1_HSE_32: TIM14 TI1 is connected to HSE div 32 + * @arg TIM_TIM14_TI1_MCO: TIM14 TI1 is connected to MCO + * @arg TIM_TIM14_TI1_MCO2: TIM14 TI1 is connected to MCO2 (**) + * + * For TIM15, the parameter is one of the following values: + * @arg TIM_TIM15_TI1_GPIO: TIM15 TI1 is connected to GPIO + * @arg TIM_TIM15_TI1_TIM2_CH1: TIM15 TI1 is connected to TIM2 CH1 + * @arg TIM_TIM15_TI1_TIM3_CH1: TIM15 TI1 is connected to TIM3 CH1 + * @arg TIM_TIM15_TI2_GPIO: TIM15 TI2 is connected to GPIO + * @arg TIM_TIM15_TI2_TIM2_CH2: TIM15 TI2 is connected to TIM2 CH2 + * @arg TIM_TIM15_TI2_TIM3_CH2: TIM15 TI2 is connected to TIM3 CH2 + * + * For TIM16, the parameter can have the following values: + * @arg TIM_TIM16_TI1_GPIO: TIM16 TI1 is connected to GPIO + * @arg TIM_TIM16_TI1_LSI: TIM16 TI1 is connected to LSI + * @arg TIM_TIM16_TI1_LSE: TIM16 TI1 is connected to LSE + * @arg TIM_TIM16_TI1_RTC_WAKEUP: TIM16 TI1 is connected to TRC wakeup interrupt + * @arg TIM_TIM16_TI1_MCO2: TIM16 TI1 is connected to MCO2 (**) + * + * For TIM17, the parameter can have the following values: + * @arg TIM_TIM17_TI1_GPIO: TIM17 TI1 is connected to GPIO + * @arg TIM_TIM14_TI1_HSI: TIM17 TI1 is connected to HSI (**) + * @arg TIM_TIM17_TI1_HSE_32: TIM17 TI1 is connected to HSE div 32 + * @arg TIM_TIM17_TI1_MCO: TIM17 TI1 is connected to MCO + * @arg TIM_TIM17_TI1_MCO2: TIM17 TI1 is connected to MCO2 (**) + * + * (*) Timer instance not available on all devices \n + * (**) Value not defined in all devices. \n + * + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_TISelection(TIM_HandleTypeDef *htim, uint32_t TISelection, uint32_t Channel) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Check parameters */ + assert_param(IS_TIM_TISEL_INSTANCE(htim->Instance)); + assert_param(IS_TIM_TISEL(TISelection)); + + __HAL_LOCK(htim); + + switch (Channel) + { + case TIM_CHANNEL_1: + MODIFY_REG(htim->Instance->TISEL, TIM_TISEL_TI1SEL, TISelection); + break; + case TIM_CHANNEL_2: + MODIFY_REG(htim->Instance->TISEL, TIM_TISEL_TI2SEL, TISelection); + break; + case TIM_CHANNEL_3: + MODIFY_REG(htim->Instance->TISEL, TIM_TISEL_TI3SEL, TISelection); + break; + default: + status = HAL_ERROR; + break; + } + + __HAL_UNLOCK(htim); + + return status; +} + +/** + * @brief Group channel 5 and channel 1, 2 or 3 + * @param htim TIM handle. + * @param Channels specifies the reference signal(s) the OC5REF is combined with. + * This parameter can be any combination of the following values: + * TIM_GROUPCH5_NONE: No effect of OC5REF on OC1REFC, OC2REFC and OC3REFC + * TIM_GROUPCH5_OC1REFC: OC1REFC is the logical AND of OC1REFC and OC5REF + * TIM_GROUPCH5_OC2REFC: OC2REFC is the logical AND of OC2REFC and OC5REF + * TIM_GROUPCH5_OC3REFC: OC3REFC is the logical AND of OC3REFC and OC5REF + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_GroupChannel5(TIM_HandleTypeDef *htim, uint32_t Channels) +{ + /* Check parameters */ + assert_param(IS_TIM_COMBINED3PHASEPWM_INSTANCE(htim->Instance)); + assert_param(IS_TIM_GROUPCH5(Channels)); + + /* Process Locked */ + __HAL_LOCK(htim); + + htim->State = HAL_TIM_STATE_BUSY; + + /* Clear GC5Cx bit fields */ + htim->Instance->CCR5 &= ~(TIM_CCR5_GC5C3 | TIM_CCR5_GC5C2 | TIM_CCR5_GC5C1); + + /* Set GC5Cx bit fields */ + htim->Instance->CCR5 |= Channels; + + /* Change the htim state */ + htim->State = HAL_TIM_STATE_READY; + + __HAL_UNLOCK(htim); + + return HAL_OK; +} + +/** + * @brief Disarm the designated break input (when it operates in bidirectional mode). + * @param htim TIM handle. + * @param BreakInput Break input to disarm + * This parameter can be one of the following values: + * @arg TIM_BREAKINPUT_BRK: Timer break input + * @arg TIM_BREAKINPUT_BRK2: Timer break 2 input + * @note The break input can be disarmed only when it is configured in + * bidirectional mode and when when MOE is reset. + * @note Purpose is to be able to have the input voltage back to high-state, + * whatever the time constant on the output . + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_DisarmBreakInput(TIM_HandleTypeDef *htim, uint32_t BreakInput) +{ + HAL_StatusTypeDef status = HAL_OK; + uint32_t tmpbdtr; + + /* Check the parameters */ + assert_param(IS_TIM_ADVANCED_INSTANCE(htim->Instance)); + assert_param(IS_TIM_BREAKINPUT(BreakInput)); + + switch (BreakInput) + { + case TIM_BREAKINPUT_BRK: + { + /* Check initial conditions */ + tmpbdtr = READ_REG(htim->Instance->BDTR); + if ((READ_BIT(tmpbdtr, TIM_BDTR_BKBID) == TIM_BDTR_BKBID) && + (READ_BIT(tmpbdtr, TIM_BDTR_MOE) == 0U)) + { + /* Break input BRK is disarmed */ + SET_BIT(htim->Instance->BDTR, TIM_BDTR_BKDSRM); + } + break; + } + + case TIM_BREAKINPUT_BRK2: + { + /* Check initial conditions */ + tmpbdtr = READ_REG(htim->Instance->BDTR); + if ((READ_BIT(tmpbdtr, TIM_BDTR_BK2BID) == TIM_BDTR_BK2BID) && + (READ_BIT(tmpbdtr, TIM_BDTR_MOE) == 0U)) + { + /* Break input BRK is disarmed */ + SET_BIT(htim->Instance->BDTR, TIM_BDTR_BK2DSRM); + } + break; + } + default: + status = HAL_ERROR; + break; + } + + return status; +} + +/** + * @brief Arm the designated break input (when it operates in bidirectional mode). + * @param htim TIM handle. + * @param BreakInput Break input to arm + * This parameter can be one of the following values: + * @arg TIM_BREAKINPUT_BRK: Timer break input + * @arg TIM_BREAKINPUT_BRK2: Timer break 2 input + * @note Arming is possible at anytime, even if fault is present. + * @note Break input is automatically armed as soon as MOE bit is set. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_ReArmBreakInput(TIM_HandleTypeDef *htim, uint32_t BreakInput) +{ + HAL_StatusTypeDef status = HAL_OK; + uint32_t tickstart; + + /* Check the parameters */ + assert_param(IS_TIM_ADVANCED_INSTANCE(htim->Instance)); + assert_param(IS_TIM_BREAKINPUT(BreakInput)); + + switch (BreakInput) + { + case TIM_BREAKINPUT_BRK: + { + /* Check initial conditions */ + if (READ_BIT(htim->Instance->BDTR, TIM_BDTR_BKBID) == TIM_BDTR_BKBID) + { + /* Break input BRK is re-armed automatically by hardware. Poll to check whether fault condition disappeared */ + /* Init tickstart for timeout management */ + tickstart = HAL_GetTick(); + while (READ_BIT(htim->Instance->BDTR, TIM_BDTR_BKDSRM) != 0UL) + { + if ((HAL_GetTick() - tickstart) > TIM_BREAKINPUT_REARM_TIMEOUT) + { + /* New check to avoid false timeout detection in case of preemption */ + if (READ_BIT(htim->Instance->BDTR, TIM_BDTR_BKDSRM) != 0UL) + { + return HAL_TIMEOUT; + } + } + } + } + break; + } + + case TIM_BREAKINPUT_BRK2: + { + /* Check initial conditions */ + if (READ_BIT(htim->Instance->BDTR, TIM_BDTR_BK2BID) == TIM_BDTR_BK2BID) + { + /* Break input BRK2 is re-armed automatically by hardware. Poll to check whether fault condition disappeared */ + /* Init tickstart for timeout management */ + tickstart = HAL_GetTick(); + while (READ_BIT(htim->Instance->BDTR, TIM_BDTR_BK2DSRM) != 0UL) + { + if ((HAL_GetTick() - tickstart) > TIM_BREAKINPUT_REARM_TIMEOUT) + { + /* New check to avoid false timeout detection in case of preemption */ + if (READ_BIT(htim->Instance->BDTR, TIM_BDTR_BK2DSRM) != 0UL) + { + return HAL_TIMEOUT; + } + } + } + } + break; + } + default: + status = HAL_ERROR; + break; + } + + return status; +} + +/** + * @} + */ + +/** @defgroup TIMEx_Exported_Functions_Group6 Extended Callbacks functions + * @brief Extended Callbacks functions + * +@verbatim + ============================================================================== + ##### Extended Callbacks functions ##### + ============================================================================== + [..] + This section provides Extended TIM callback functions: + (+) Timer Commutation callback + (+) Timer Break callback + +@endverbatim + * @{ + */ + +/** + * @brief Hall commutation changed callback in non-blocking mode + * @param htim TIM handle + * @retval None + */ +__weak void HAL_TIMEx_CommutCallback(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIMEx_CommutCallback could be implemented in the user file + */ +} +/** + * @brief Hall commutation changed half complete callback in non-blocking mode + * @param htim TIM handle + * @retval None + */ +__weak void HAL_TIMEx_CommutHalfCpltCallback(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIMEx_CommutHalfCpltCallback could be implemented in the user file + */ +} + +/** + * @brief Hall Break detection callback in non-blocking mode + * @param htim TIM handle + * @retval None + */ +__weak void HAL_TIMEx_BreakCallback(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIMEx_BreakCallback could be implemented in the user file + */ +} + +/** + * @brief Hall Break2 detection callback in non blocking mode + * @param htim: TIM handle + * @retval None + */ +__weak void HAL_TIMEx_Break2Callback(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(htim); + + /* NOTE : This function Should not be modified, when the callback is needed, + the HAL_TIMEx_Break2Callback could be implemented in the user file + */ +} +/** + * @} + */ + +/** @defgroup TIMEx_Exported_Functions_Group7 Extended Peripheral State functions + * @brief Extended Peripheral State functions + * +@verbatim + ============================================================================== + ##### Extended Peripheral State functions ##### + ============================================================================== + [..] + This subsection permits to get in run-time the status of the peripheral + and the data flow. + +@endverbatim + * @{ + */ + +/** + * @brief Return the TIM Hall Sensor interface handle state. + * @param htim TIM Hall Sensor handle + * @retval HAL state + */ +HAL_TIM_StateTypeDef HAL_TIMEx_HallSensor_GetState(const TIM_HandleTypeDef *htim) +{ + return htim->State; +} + +/** + * @brief Return actual state of the TIM complementary channel. + * @param htim TIM handle + * @param ChannelN TIM Complementary channel + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 + * @arg TIM_CHANNEL_2: TIM Channel 2 + * @arg TIM_CHANNEL_3: TIM Channel 3 + * @retval TIM Complementary channel state + */ +HAL_TIM_ChannelStateTypeDef HAL_TIMEx_GetChannelNState(const TIM_HandleTypeDef *htim, uint32_t ChannelN) +{ + HAL_TIM_ChannelStateTypeDef channel_state; + + /* Check the parameters */ + assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, ChannelN)); + + channel_state = TIM_CHANNEL_N_STATE_GET(htim, ChannelN); + + return channel_state; +} +/** + * @} + */ + +/** + * @} + */ + +/* Private functions ---------------------------------------------------------*/ +/** @defgroup TIMEx_Private_Functions TIM Extended Private Functions + * @{ + */ + +/** + * @brief TIM DMA Commutation callback. + * @param hdma pointer to DMA handle. + * @retval None + */ +void TIMEx_DMACommutationCplt(DMA_HandleTypeDef *hdma) +{ + TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; + + /* Change the htim state */ + htim->State = HAL_TIM_STATE_READY; + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->CommutationCallback(htim); +#else + HAL_TIMEx_CommutCallback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ +} + +/** + * @brief TIM DMA Commutation half complete callback. + * @param hdma pointer to DMA handle. + * @retval None + */ +void TIMEx_DMACommutationHalfCplt(DMA_HandleTypeDef *hdma) +{ + TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; + + /* Change the htim state */ + htim->State = HAL_TIM_STATE_READY; + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->CommutationHalfCpltCallback(htim); +#else + HAL_TIMEx_CommutHalfCpltCallback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ +} + + +/** + * @brief TIM DMA Delay Pulse complete callback (complementary channel). + * @param hdma pointer to DMA handle. + * @retval None + */ +static void TIM_DMADelayPulseNCplt(DMA_HandleTypeDef *hdma) +{ + TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; + + if (hdma == htim->hdma[TIM_DMA_ID_CC1]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1; + + if (hdma->Init.Mode == DMA_NORMAL) + { + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + } + } + else if (hdma == htim->hdma[TIM_DMA_ID_CC2]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2; + + if (hdma->Init.Mode == DMA_NORMAL) + { + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + } + } + else if (hdma == htim->hdma[TIM_DMA_ID_CC3]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3; + + if (hdma->Init.Mode == DMA_NORMAL) + { + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_3, HAL_TIM_CHANNEL_STATE_READY); + } + } + else if (hdma == htim->hdma[TIM_DMA_ID_CC4]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_4; + + if (hdma->Init.Mode == DMA_NORMAL) + { + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_4, HAL_TIM_CHANNEL_STATE_READY); + } + } + else + { + /* nothing to do */ + } + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->PWM_PulseFinishedCallback(htim); +#else + HAL_TIM_PWM_PulseFinishedCallback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; +} + +/** + * @brief TIM DMA error callback (complementary channel) + * @param hdma pointer to DMA handle. + * @retval None + */ +static void TIM_DMAErrorCCxN(DMA_HandleTypeDef *hdma) +{ + TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; + + if (hdma == htim->hdma[TIM_DMA_ID_CC1]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1; + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + } + else if (hdma == htim->hdma[TIM_DMA_ID_CC2]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2; + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + } + else if (hdma == htim->hdma[TIM_DMA_ID_CC3]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3; + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_3, HAL_TIM_CHANNEL_STATE_READY); + } + else + { + /* nothing to do */ + } + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->ErrorCallback(htim); +#else + HAL_TIM_ErrorCallback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; +} + +/** + * @brief Enables or disables the TIM Capture Compare Channel xN. + * @param TIMx to select the TIM peripheral + * @param Channel specifies the TIM Channel + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 + * @arg TIM_CHANNEL_2: TIM Channel 2 + * @arg TIM_CHANNEL_3: TIM Channel 3 + * @param ChannelNState specifies the TIM Channel CCxNE bit new state. + * This parameter can be: TIM_CCxN_ENABLE or TIM_CCxN_Disable. + * @retval None + */ +static void TIM_CCxNChannelCmd(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ChannelNState) +{ + uint32_t tmp; + + tmp = TIM_CCER_CC1NE << (Channel & 0x1FU); /* 0x1FU = 31 bits max shift */ + + /* Reset the CCxNE Bit */ + TIMx->CCER &= ~tmp; + + /* Set or reset the CCxNE Bit */ + TIMx->CCER |= (uint32_t)(ChannelNState << (Channel & 0x1FU)); /* 0x1FU = 31 bits max shift */ +} +/** + * @} + */ + +#endif /* HAL_TIM_MODULE_ENABLED */ +/** + * @} + */ + +/** + * @} + */ diff --git a/firmware/Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_ll_dma.c b/firmware/Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_ll_dma.c new file mode 100644 index 0000000..2b18c9f --- /dev/null +++ b/firmware/Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_ll_dma.c @@ -0,0 +1,367 @@ +/** + ****************************************************************************** + * @file stm32g0xx_ll_dma.c + * @author MCD Application Team + * @brief DMA LL module driver. + ****************************************************************************** + * @attention + * + * Copyright (c) 2018 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +#if defined(USE_FULL_LL_DRIVER) + +/* Includes ------------------------------------------------------------------*/ +#include "stm32g0xx_ll_dma.h" +#include "stm32g0xx_ll_bus.h" +#ifdef USE_FULL_ASSERT +#include "stm32_assert.h" +#else +#define assert_param(expr) ((void)0U) +#endif /* USE_FULL_ASSERT */ + +/** @addtogroup STM32G0xx_LL_Driver + * @{ + */ + +#if defined (DMA1) || defined (DMA2) + +/** @defgroup DMA_LL DMA + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/* Private macros ------------------------------------------------------------*/ +/** @addtogroup DMA_LL_Private_Macros + * @{ + */ +#define IS_LL_DMA_DIRECTION(__VALUE__) (((__VALUE__) == LL_DMA_DIRECTION_PERIPH_TO_MEMORY) || \ + ((__VALUE__) == LL_DMA_DIRECTION_MEMORY_TO_PERIPH) || \ + ((__VALUE__) == LL_DMA_DIRECTION_MEMORY_TO_MEMORY)) + +#define IS_LL_DMA_MODE(__VALUE__) (((__VALUE__) == LL_DMA_MODE_NORMAL) || \ + ((__VALUE__) == LL_DMA_MODE_CIRCULAR)) + +#define IS_LL_DMA_PERIPHINCMODE(__VALUE__) (((__VALUE__) == LL_DMA_PERIPH_INCREMENT) || \ + ((__VALUE__) == LL_DMA_PERIPH_NOINCREMENT)) + +#define IS_LL_DMA_MEMORYINCMODE(__VALUE__) (((__VALUE__) == LL_DMA_MEMORY_INCREMENT) || \ + ((__VALUE__) == LL_DMA_MEMORY_NOINCREMENT)) + +#define IS_LL_DMA_PERIPHDATASIZE(__VALUE__) (((__VALUE__) == LL_DMA_PDATAALIGN_BYTE) || \ + ((__VALUE__) == LL_DMA_PDATAALIGN_HALFWORD) || \ + ((__VALUE__) == LL_DMA_PDATAALIGN_WORD)) + +#define IS_LL_DMA_MEMORYDATASIZE(__VALUE__) (((__VALUE__) == LL_DMA_MDATAALIGN_BYTE) || \ + ((__VALUE__) == LL_DMA_MDATAALIGN_HALFWORD) || \ + ((__VALUE__) == LL_DMA_MDATAALIGN_WORD)) + +#define IS_LL_DMA_NBDATA(__VALUE__) ((__VALUE__) <= 0x0000FFFFU) + +#define IS_LL_DMA_PERIPHREQUEST(__VALUE__) ((__VALUE__) <= LL_DMAMUX_MAX_REQ) + +#define IS_LL_DMA_PRIORITY(__VALUE__) (((__VALUE__) == LL_DMA_PRIORITY_LOW) || \ + ((__VALUE__) == LL_DMA_PRIORITY_MEDIUM) || \ + ((__VALUE__) == LL_DMA_PRIORITY_HIGH) || \ + ((__VALUE__) == LL_DMA_PRIORITY_VERYHIGH)) + +#if defined(DMA2) +#define IS_LL_DMA_ALL_CHANNEL_INSTANCE(INSTANCE, CHANNEL) ((((INSTANCE) == DMA1) && \ + (((CHANNEL) == LL_DMA_CHANNEL_1) || \ + ((CHANNEL) == LL_DMA_CHANNEL_2) || \ + ((CHANNEL) == LL_DMA_CHANNEL_3) || \ + ((CHANNEL) == LL_DMA_CHANNEL_4) || \ + ((CHANNEL) == LL_DMA_CHANNEL_5) || \ + ((CHANNEL) == LL_DMA_CHANNEL_6) || \ + ((CHANNEL) == LL_DMA_CHANNEL_7))) || \ + (((INSTANCE) == DMA2) && \ + (((CHANNEL) == LL_DMA_CHANNEL_1) || \ + ((CHANNEL) == LL_DMA_CHANNEL_2) || \ + ((CHANNEL) == LL_DMA_CHANNEL_3) || \ + ((CHANNEL) == LL_DMA_CHANNEL_4) || \ + ((CHANNEL) == LL_DMA_CHANNEL_5)))) +#else /* DMA1 */ +#if defined(DMA1_Channel7) +#define IS_LL_DMA_ALL_CHANNEL_INSTANCE(INSTANCE, CHANNEL) ((((INSTANCE) == DMA1) && \ + (((CHANNEL) == LL_DMA_CHANNEL_1) || \ + ((CHANNEL) == LL_DMA_CHANNEL_2) || \ + ((CHANNEL) == LL_DMA_CHANNEL_3) || \ + ((CHANNEL) == LL_DMA_CHANNEL_4) || \ + ((CHANNEL) == LL_DMA_CHANNEL_5) || \ + ((CHANNEL) == LL_DMA_CHANNEL_6) || \ + ((CHANNEL) == LL_DMA_CHANNEL_7)))) +#else +#define IS_LL_DMA_ALL_CHANNEL_INSTANCE(INSTANCE, CHANNEL) ((((INSTANCE) == DMA1) && \ + (((CHANNEL) == LL_DMA_CHANNEL_1) || \ + ((CHANNEL) == LL_DMA_CHANNEL_2) || \ + ((CHANNEL) == LL_DMA_CHANNEL_3) || \ + ((CHANNEL) == LL_DMA_CHANNEL_4) || \ + ((CHANNEL) == LL_DMA_CHANNEL_5)))) +#endif /* DMA1_Channel8 */ +#endif /* DMA2 */ +/** + * @} + */ + +/* Private function prototypes -----------------------------------------------*/ + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup DMA_LL_Exported_Functions + * @{ + */ + +/** @addtogroup DMA_LL_EF_Init + * @{ + */ + +/** + * @brief De-initialize the DMA registers to their default reset values. + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @arg @ref LL_DMA_CHANNEL_ALL + * @retval An ErrorStatus enumeration value: + * - SUCCESS: DMA registers are de-initialized + * - ERROR: DMA registers are not de-initialized + */ +ErrorStatus LL_DMA_DeInit(DMA_TypeDef *DMAx, uint32_t Channel) +{ + ErrorStatus status = SUCCESS; + + /* Check the DMA Instance DMAx and Channel parameters*/ + assert_param(IS_LL_DMA_ALL_CHANNEL_INSTANCE(DMAx, Channel) || (Channel == LL_DMA_CHANNEL_ALL)); + + if (Channel == LL_DMA_CHANNEL_ALL) + { + if (DMAx == DMA1) + { + /* Force reset of DMA clock */ + LL_AHB1_GRP1_ForceReset(LL_AHB1_GRP1_PERIPH_DMA1); + + /* Release reset of DMA clock */ + LL_AHB1_GRP1_ReleaseReset(LL_AHB1_GRP1_PERIPH_DMA1); + } +#if defined(DMA2) + else if (DMAx == DMA2) + { + /* Force reset of DMA clock */ + LL_AHB1_GRP1_ForceReset(LL_AHB1_GRP1_PERIPH_DMA2); + + /* Release reset of DMA clock */ + LL_AHB1_GRP1_ReleaseReset(LL_AHB1_GRP1_PERIPH_DMA2); + } +#endif /* DMA2 */ + else + { + status = ERROR; + } + } + else + { + DMA_Channel_TypeDef *tmp; + + tmp = (DMA_Channel_TypeDef *)(__LL_DMA_GET_CHANNEL_INSTANCE(DMAx, Channel)); + + /* Disable the selected DMAx_Channely */ + CLEAR_BIT(tmp->CCR, DMA_CCR_EN); + + /* Reset DMAx_Channely control register */ + WRITE_REG(tmp->CCR, 0U); + + /* Reset DMAx_Channely remaining bytes register */ + WRITE_REG(tmp->CNDTR, 0U); + + /* Reset DMAx_Channely peripheral address register */ + WRITE_REG(tmp->CPAR, 0U); + + /* Reset DMAx_Channely memory address register */ + WRITE_REG(tmp->CMAR, 0U); + + /* Reset Request register field for DMAx Channel */ + LL_DMA_SetPeriphRequest(DMAx, Channel, LL_DMAMUX_REQ_MEM2MEM); + + if (Channel == LL_DMA_CHANNEL_1) + { + /* Reset interrupt pending bits for DMAx Channel1 */ + LL_DMA_ClearFlag_GI1(DMAx); + } + else if (Channel == LL_DMA_CHANNEL_2) + { + /* Reset interrupt pending bits for DMAx Channel2 */ + LL_DMA_ClearFlag_GI2(DMAx); + } + else if (Channel == LL_DMA_CHANNEL_3) + { + /* Reset interrupt pending bits for DMAx Channel3 */ + LL_DMA_ClearFlag_GI3(DMAx); + } + else if (Channel == LL_DMA_CHANNEL_4) + { + /* Reset interrupt pending bits for DMAx Channel4 */ + LL_DMA_ClearFlag_GI4(DMAx); + } + else if (Channel == LL_DMA_CHANNEL_5) + { + /* Reset interrupt pending bits for DMAx Channel5 */ + LL_DMA_ClearFlag_GI5(DMAx); + } +#if defined(DMA1_Channel6) + else if (Channel == LL_DMA_CHANNEL_6) + { + /* Reset interrupt pending bits for DMAx Channel6 */ + LL_DMA_ClearFlag_GI6(DMAx); + } +#endif /* DMA1_Channel6 */ +#if defined(DMA1_Channel7) + else if (Channel == LL_DMA_CHANNEL_7) + { + /* Reset interrupt pending bits for DMAx Channel7 */ + LL_DMA_ClearFlag_GI7(DMAx); + } +#endif /* DMA1_Channel7 */ + else + { + status = ERROR; + } + } + + return status; +} + +/** + * @brief Initialize the DMA registers according to the specified parameters in DMA_InitStruct. + * @note To convert DMAx_Channely Instance to DMAx Instance and Channely, use helper macros : + * @arg @ref __LL_DMA_GET_INSTANCE + * @arg @ref __LL_DMA_GET_CHANNEL + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param DMA_InitStruct pointer to a @ref LL_DMA_InitTypeDef structure. + * @retval An ErrorStatus enumeration value: + * - SUCCESS: DMA registers are initialized + * - ERROR: Not applicable + */ +ErrorStatus LL_DMA_Init(DMA_TypeDef *DMAx, uint32_t Channel, LL_DMA_InitTypeDef *DMA_InitStruct) +{ + /* Check the DMA Instance DMAx and Channel parameters*/ + assert_param(IS_LL_DMA_ALL_CHANNEL_INSTANCE(DMAx, Channel)); + + /* Check the DMA parameters from DMA_InitStruct */ + assert_param(IS_LL_DMA_DIRECTION(DMA_InitStruct->Direction)); + assert_param(IS_LL_DMA_MODE(DMA_InitStruct->Mode)); + assert_param(IS_LL_DMA_PERIPHINCMODE(DMA_InitStruct->PeriphOrM2MSrcIncMode)); + assert_param(IS_LL_DMA_MEMORYINCMODE(DMA_InitStruct->MemoryOrM2MDstIncMode)); + assert_param(IS_LL_DMA_PERIPHDATASIZE(DMA_InitStruct->PeriphOrM2MSrcDataSize)); + assert_param(IS_LL_DMA_MEMORYDATASIZE(DMA_InitStruct->MemoryOrM2MDstDataSize)); + assert_param(IS_LL_DMA_NBDATA(DMA_InitStruct->NbData)); + assert_param(IS_LL_DMA_PERIPHREQUEST(DMA_InitStruct->PeriphRequest)); + assert_param(IS_LL_DMA_PRIORITY(DMA_InitStruct->Priority)); + + /*---------------------------- DMAx CCR Configuration ------------------------ + * Configure DMAx_Channely: data transfer direction, data transfer mode, + * peripheral and memory increment mode, + * data size alignment and priority level with parameters : + * - Direction: DMA_CCR_DIR and DMA_CCR_MEM2MEM bits + * - Mode: DMA_CCR_CIRC bit + * - PeriphOrM2MSrcIncMode: DMA_CCR_PINC bit + * - MemoryOrM2MDstIncMode: DMA_CCR_MINC bit + * - PeriphOrM2MSrcDataSize: DMA_CCR_PSIZE[1:0] bits + * - MemoryOrM2MDstDataSize: DMA_CCR_MSIZE[1:0] bits + * - Priority: DMA_CCR_PL[1:0] bits + */ + LL_DMA_ConfigTransfer(DMAx, Channel, DMA_InitStruct->Direction | \ + DMA_InitStruct->Mode | \ + DMA_InitStruct->PeriphOrM2MSrcIncMode | \ + DMA_InitStruct->MemoryOrM2MDstIncMode | \ + DMA_InitStruct->PeriphOrM2MSrcDataSize | \ + DMA_InitStruct->MemoryOrM2MDstDataSize | \ + DMA_InitStruct->Priority); + + /*-------------------------- DMAx CMAR Configuration ------------------------- + * Configure the memory or destination base address with parameter : + * - MemoryOrM2MDstAddress: DMA_CMAR_MA[31:0] bits + */ + LL_DMA_SetMemoryAddress(DMAx, Channel, DMA_InitStruct->MemoryOrM2MDstAddress); + + /*-------------------------- DMAx CPAR Configuration ------------------------- + * Configure the peripheral or source base address with parameter : + * - PeriphOrM2MSrcAddress: DMA_CPAR_PA[31:0] bits + */ + LL_DMA_SetPeriphAddress(DMAx, Channel, DMA_InitStruct->PeriphOrM2MSrcAddress); + + /*--------------------------- DMAx CNDTR Configuration ----------------------- + * Configure the peripheral base address with parameter : + * - NbData: DMA_CNDTR_NDT[15:0] bits + */ + LL_DMA_SetDataLength(DMAx, Channel, DMA_InitStruct->NbData); + + /*--------------------------- DMAMUXx CCR Configuration ---------------------- + * Configure the DMA request for DMA Channels on DMAMUX Channel x with parameter : + * - PeriphRequest: DMA_CxCR[7:0] bits + */ + LL_DMA_SetPeriphRequest(DMAx, Channel, DMA_InitStruct->PeriphRequest); + + return SUCCESS; +} + +/** + * @brief Set each @ref LL_DMA_InitTypeDef field to default value. + * @param DMA_InitStruct Pointer to a @ref LL_DMA_InitTypeDef structure. + * @retval None + */ +void LL_DMA_StructInit(LL_DMA_InitTypeDef *DMA_InitStruct) +{ + /* Set DMA_InitStruct fields to default values */ + DMA_InitStruct->PeriphOrM2MSrcAddress = 0x00000000U; + DMA_InitStruct->MemoryOrM2MDstAddress = 0x00000000U; + DMA_InitStruct->Direction = LL_DMA_DIRECTION_PERIPH_TO_MEMORY; + DMA_InitStruct->Mode = LL_DMA_MODE_NORMAL; + DMA_InitStruct->PeriphOrM2MSrcIncMode = LL_DMA_PERIPH_NOINCREMENT; + DMA_InitStruct->MemoryOrM2MDstIncMode = LL_DMA_MEMORY_NOINCREMENT; + DMA_InitStruct->PeriphOrM2MSrcDataSize = LL_DMA_PDATAALIGN_BYTE; + DMA_InitStruct->MemoryOrM2MDstDataSize = LL_DMA_MDATAALIGN_BYTE; + DMA_InitStruct->NbData = 0x00000000U; + DMA_InitStruct->PeriphRequest = LL_DMAMUX_REQ_MEM2MEM; + DMA_InitStruct->Priority = LL_DMA_PRIORITY_LOW; +} + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* DMA1 || DMA2 */ + +/** + * @} + */ + +#endif /* USE_FULL_LL_DRIVER */ + diff --git a/firmware/Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_ll_rcc.c b/firmware/Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_ll_rcc.c new file mode 100644 index 0000000..3575197 --- /dev/null +++ b/firmware/Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_ll_rcc.c @@ -0,0 +1,1380 @@ +/** + ****************************************************************************** + * @file stm32g0xx_ll_rcc.c + * @author MCD Application Team + * @brief RCC LL module driver. + ****************************************************************************** + * @attention + * + * Copyright (c) 2018 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file in + * the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + ****************************************************************************** + */ +#if defined(USE_FULL_LL_DRIVER) + +/* Includes ------------------------------------------------------------------*/ +#include "stm32g0xx_ll_rcc.h" +#ifdef USE_FULL_ASSERT +#include "stm32_assert.h" +#else +#define assert_param(expr) ((void)0U) +#endif /* USE_FULL_ASSERT */ +/** @addtogroup STM32G0xx_LL_Driver + * @{ + */ + +#if defined(RCC) + +/** @addtogroup RCC_LL + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/* Private macros ------------------------------------------------------------*/ +/** @addtogroup RCC_LL_Private_Macros + * @{ + */ +#if defined(STM32G0C1xx) || defined(STM32G0B1xx) || defined(STM32G0B0xx) +#define IS_LL_RCC_USART_CLKSOURCE(__VALUE__) (((__VALUE__) == LL_RCC_USART1_CLKSOURCE) \ + || ((__VALUE__) == LL_RCC_USART2_CLKSOURCE) \ + || ((__VALUE__) == LL_RCC_USART3_CLKSOURCE)) +#elif defined(STM32G081xx) || defined(STM32G071xx) || defined(STM32G070xx) +#define IS_LL_RCC_USART_CLKSOURCE(__VALUE__) (((__VALUE__) == LL_RCC_USART1_CLKSOURCE) \ + || ((__VALUE__) == LL_RCC_USART2_CLKSOURCE)) +#else +#define IS_LL_RCC_USART_CLKSOURCE(__VALUE__) ((__VALUE__) == LL_RCC_USART1_CLKSOURCE) +#endif /* STM32G0C1xx || STM32G0B1xx || STM32G0B0xx */ + +#if defined(LPUART1) && defined(LPUART2) +#define IS_LL_RCC_LPUART_CLKSOURCE(__VALUE__) (((__VALUE__) == LL_RCC_LPUART1_CLKSOURCE) \ + || ((__VALUE__) == LL_RCC_LPUART2_CLKSOURCE)) +#elif defined(LPUART1) +#define IS_LL_RCC_LPUART_CLKSOURCE(__VALUE__) ((__VALUE__) == LL_RCC_LPUART1_CLKSOURCE) +#endif /* LPUART1 && LPUART2 */ + +#if defined(STM32G0C1xx) || defined(STM32G0B1xx) || defined(STM32G0B0xx) +#define IS_LL_RCC_I2C_CLKSOURCE(__VALUE__) (((__VALUE__) == LL_RCC_I2C1_CLKSOURCE) \ + || ((__VALUE__) == LL_RCC_I2C2_CLKSOURCE)) +#else +#define IS_LL_RCC_I2C_CLKSOURCE(__VALUE__) ((__VALUE__) == LL_RCC_I2C1_CLKSOURCE) +#endif /* STM32G0C1xx || STM32G0B1xx || STM32G0B0xx */ + +#if defined(LPTIM1) || defined(LPTIM2) +#define IS_LL_RCC_LPTIM_CLKSOURCE(__VALUE__) (((__VALUE__) == LL_RCC_LPTIM1_CLKSOURCE) \ + || ((__VALUE__) == LL_RCC_LPTIM2_CLKSOURCE)) +#endif /* LPTIM1 || LPTIM2 */ + +#if defined(RNG) +#define IS_LL_RCC_RNG_CLKSOURCE(__VALUE__) (((__VALUE__) == LL_RCC_RNG_CLKSOURCE)) +#endif /* RNG */ + +#define IS_LL_RCC_ADC_CLKSOURCE(__VALUE__) (((__VALUE__) == LL_RCC_ADC_CLKSOURCE)) + +#if defined(STM32G0C1xx) || defined(STM32G0B1xx) || defined(STM32G0B0xx) +#define IS_LL_RCC_I2S_CLKSOURCE(__VALUE__) (((__VALUE__) == LL_RCC_I2S1_CLKSOURCE) \ + || ((__VALUE__) == LL_RCC_I2S2_CLKSOURCE)) +#else +#define IS_LL_RCC_I2S_CLKSOURCE(__VALUE__) (((__VALUE__) == LL_RCC_I2S1_CLKSOURCE)) +#endif /* STM32G0C1xx || STM32G0B1xx || STM32G0B0xx */ + +#if defined(CEC) +#define IS_LL_RCC_CEC_CLKSOURCE(__VALUE__) (((__VALUE__) == LL_RCC_CEC_CLKSOURCE)) +#endif /* CEC */ + +#if defined(STM32G0C1xx) || defined(STM32G0B1xx) || defined(STM32G0B0xx) +#define IS_LL_RCC_USB_CLKSOURCE(__VALUE__) (((__VALUE__) == LL_RCC_USB_CLKSOURCE)) +#endif /* STM32G0C1xx || STM32G0B1xx || STM32G0B0xx */ + +#if defined(FDCAN1) || defined(FDCAN2) +#define IS_LL_RCC_FDCAN_CLKSOURCE(__VALUE__) (((__VALUE__) == LL_RCC_FDCAN_CLKSOURCE)) +#endif /* FDCAN1 || FDCAN2 */ + +#if defined(RCC_CCIPR_TIM1SEL) && defined(RCC_CCIPR_TIM15SEL) +#define IS_LL_RCC_TIM_CLKSOURCE(__VALUE__) (((__VALUE__) == LL_RCC_TIM1_CLKSOURCE) \ + || ((__VALUE__) == LL_RCC_TIM15_CLKSOURCE)) +#elif defined(RCC_CCIPR_TIM1SEL) +#define IS_LL_RCC_TIM_CLKSOURCE(__VALUE__) (((__VALUE__) == LL_RCC_TIM1_CLKSOURCE)) +#endif /* RCC_CCIPR_TIM1SEL */ + + + +/** + * @} + */ + +/* Private function prototypes -----------------------------------------------*/ +/** @defgroup RCC_LL_Private_Functions RCC Private functions + * @{ + */ +static uint32_t RCC_GetSystemClockFreq(void); +static uint32_t RCC_GetHCLKClockFreq(uint32_t SYSCLK_Frequency); +static uint32_t RCC_GetPCLK1ClockFreq(uint32_t HCLK_Frequency); +static uint32_t RCC_PLL_GetFreqDomain_SYS(void); +static uint32_t RCC_PLL_GetFreqDomain_ADC(void); +static uint32_t RCC_PLL_GetFreqDomain_I2S1(void); +#if defined(STM32G0C1xx) || defined(STM32G0B1xx) || defined(STM32G0B0xx) +static uint32_t RCC_PLL_GetFreqDomain_I2S2(void); +static uint32_t RCC_PLL_GetFreqDomain_USB(void); +#endif /* STM32G0C1xx || STM32G0B1xx || STM32G0B0xx */ +#if defined(FDCAN1) || defined(FDCAN2) +static uint32_t RCC_PLL_GetFreqDomain_FDCAN(void); +#endif /* FDCAN1 || FDCAN2 */ +#if defined(RNG) +static uint32_t RCC_PLL_GetFreqDomain_RNG(void); +#endif /* RNG */ +#if defined(RCC_PLLQ_SUPPORT) && defined(RCC_CCIPR_TIM1SEL) +static uint32_t RCC_PLL_GetFreqDomain_TIM1(void); +#endif /* RCC_PLLQ_SUPPORT && RCC_CCIPR_TIM1SEL */ +#if defined(RCC_CCIPR_TIM15SEL) +static uint32_t RCC_PLL_GetFreqDomain_TIM15(void); +#endif /* RCC_CCIPR_TIM15SEL */ +/** + * @} + */ + + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup RCC_LL_Exported_Functions + * @{ + */ + +/** @addtogroup RCC_LL_EF_Init + * @{ + */ + +/** + * @brief Reset the RCC clock configuration to the default reset state. + * @note The default reset state of the clock configuration is given below: + * - HSI ON and used as system clock source + * - HSE and PLL OFF + * - AHB and APB1 prescaler set to 1. + * - CSS, MCO OFF + * - All interrupts disabled + * @note This function does not modify the configuration of the + * - Peripheral clocks + * - LSI, LSE and RTC clocks + * @retval An ErrorStatus enumeration value: + * - SUCCESS: RCC registers are de-initialized + * - ERROR: not applicable + */ +ErrorStatus LL_RCC_DeInit(void) +{ + /* Set HSION bit and wait for HSI READY bit */ + LL_RCC_HSI_Enable(); + while (LL_RCC_HSI_IsReady() != 1U) + {} + + /* Set HSITRIM bits to reset value*/ + LL_RCC_HSI_SetCalibTrimming(0x40U); + + /* Reset CFGR register */ + LL_RCC_WriteReg(CFGR, 0x00000000U); + + /* Reset whole CR register but HSI in 2 steps in case HSEBYP is set */ + LL_RCC_WriteReg(CR, RCC_CR_HSION); + while (LL_RCC_HSE_IsReady() != 0U) + {} + LL_RCC_WriteReg(CR, RCC_CR_HSION); + + /* Wait for PLL READY bit to be reset */ + while (LL_RCC_PLL_IsReady() != 0U) + {} + + /* Reset PLLCFGR register */ + LL_RCC_WriteReg(PLLCFGR, 16U << RCC_PLLCFGR_PLLN_Pos); + + /* Disable all interrupts */ + LL_RCC_WriteReg(CIER, 0x00000000U); + + /* Clear all interrupts flags */ + LL_RCC_WriteReg(CICR, 0xFFFFFFFFU); + + return SUCCESS; +} + +/** + * @} + */ + +/** @addtogroup RCC_LL_EF_Get_Freq + * @brief Return the frequencies of different on chip clocks; System, AHB and APB1 buses clocks + * and different peripheral clocks available on the device. + * @note If SYSCLK source is HSI, function returns values based on HSI_VALUE divided by HSI division factor(**) + * @note If SYSCLK source is HSE, function returns values based on HSE_VALUE(***) + * @note If SYSCLK source is PLL, function returns values based on HSE_VALUE(***) + * or HSI_VALUE(**) multiplied/divided by the PLL factors. + * @note (**) HSI_VALUE is a constant defined in this file (default value + * 16 MHz) but the real value may vary depending on the variations + * in voltage and temperature. + * @note (***) HSE_VALUE is a constant defined in this file (default value + * 8 MHz), user has to ensure that HSE_VALUE is same as the real + * frequency of the crystal used. Otherwise, this function may + * have wrong result. + * @note The result of this function could be incorrect when using fractional + * value for HSE crystal. + * @note This function can be used by the user application to compute the + * baud-rate for the communication peripherals or configure other parameters. + * @{ + */ + +/** + * @brief Return the frequencies of different on chip clocks; System, AHB and APB1 buses clocks + * @note Each time SYSCLK, HCLK and/or PCLK1 clock changes, this function + * must be called to update structure fields. Otherwise, any + * configuration based on this function will be incorrect. + * @param RCC_Clocks pointer to a @ref LL_RCC_ClocksTypeDef structure which will hold the clocks frequencies + * @retval None + */ +void LL_RCC_GetSystemClocksFreq(LL_RCC_ClocksTypeDef *RCC_Clocks) +{ + /* Get SYSCLK frequency */ + RCC_Clocks->SYSCLK_Frequency = RCC_GetSystemClockFreq(); + + /* HCLK clock frequency */ + RCC_Clocks->HCLK_Frequency = RCC_GetHCLKClockFreq(RCC_Clocks->SYSCLK_Frequency); + + /* PCLK1 clock frequency */ + RCC_Clocks->PCLK1_Frequency = RCC_GetPCLK1ClockFreq(RCC_Clocks->HCLK_Frequency); +} + +/** + * @brief Return USARTx clock frequency + * @param USARTxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_USART1_CLKSOURCE + * @arg @ref LL_RCC_USART2_CLKSOURCE + * @arg @ref LL_RCC_USART3_CLKSOURCE + * @retval USART clock frequency (in Hz) + * - @ref LL_RCC_PERIPH_FREQUENCY_NO indicates that oscillator (HSI or LSE) is not ready + */ +uint32_t LL_RCC_GetUSARTClockFreq(uint32_t USARTxSource) +{ + uint32_t usart_frequency = LL_RCC_PERIPH_FREQUENCY_NO; + + /* Check parameter */ + assert_param(IS_LL_RCC_USART_CLKSOURCE(USARTxSource)); + + if (USARTxSource == LL_RCC_USART1_CLKSOURCE) + { + /* USART1CLK clock frequency */ + switch (LL_RCC_GetUSARTClockSource(USARTxSource)) + { + case LL_RCC_USART1_CLKSOURCE_SYSCLK: /* USART1 Clock is System Clock */ + usart_frequency = RCC_GetSystemClockFreq(); + break; + + case LL_RCC_USART1_CLKSOURCE_HSI: /* USART1 Clock is HSI Osc. */ + if (LL_RCC_HSI_IsReady() == 1U) + { + usart_frequency = HSI_VALUE; + } + break; + + case LL_RCC_USART1_CLKSOURCE_LSE: /* USART1 Clock is LSE Osc. */ + if (LL_RCC_LSE_IsReady() == 1U) + { + usart_frequency = LSE_VALUE; + } + break; + + case LL_RCC_USART1_CLKSOURCE_PCLK1: /* USART1 Clock is PCLK1 */ + default: + usart_frequency = RCC_GetPCLK1ClockFreq(RCC_GetHCLKClockFreq(RCC_GetSystemClockFreq())); + break; + } + } +#if defined(RCC_CCIPR_USART2SEL) + else if (USARTxSource == LL_RCC_USART2_CLKSOURCE) + { + /* USART2CLK clock frequency */ + switch (LL_RCC_GetUSARTClockSource(USARTxSource)) + { + case LL_RCC_USART2_CLKSOURCE_SYSCLK: /* USART2 Clock is System Clock */ + usart_frequency = RCC_GetSystemClockFreq(); + break; + + case LL_RCC_USART2_CLKSOURCE_HSI: /* USART2 Clock is HSI Osc. */ + if (LL_RCC_HSI_IsReady() == 1U) + { + usart_frequency = HSI_VALUE; + } + break; + + case LL_RCC_USART2_CLKSOURCE_LSE: /* USART2 Clock is LSE Osc. */ + if (LL_RCC_LSE_IsReady() == 1U) + { + usart_frequency = LSE_VALUE; + } + break; + + case LL_RCC_USART2_CLKSOURCE_PCLK1: /* USART2 Clock is PCLK1 */ + default: + usart_frequency = RCC_GetPCLK1ClockFreq(RCC_GetHCLKClockFreq(RCC_GetSystemClockFreq())); + break; + } + } +#endif /* RCC_CCIPR_USART2SEL */ +#if defined(RCC_CCIPR_USART3SEL) + else if (USARTxSource == LL_RCC_USART3_CLKSOURCE) + { + /* USART3CLK clock frequency */ + switch (LL_RCC_GetUSARTClockSource(USARTxSource)) + { + case LL_RCC_USART3_CLKSOURCE_SYSCLK: /* USART3 Clock is System Clock */ + usart_frequency = RCC_GetSystemClockFreq(); + break; + + case LL_RCC_USART3_CLKSOURCE_HSI: /* USART3 Clock is HSI Osc. */ + if (LL_RCC_HSI_IsReady() == 1U) + { + usart_frequency = HSI_VALUE; + } + break; + + case LL_RCC_USART3_CLKSOURCE_LSE: /* USART3 Clock is LSE Osc. */ + if (LL_RCC_LSE_IsReady() == 1U) + { + usart_frequency = LSE_VALUE; + } + break; + + case LL_RCC_USART3_CLKSOURCE_PCLK1: /* USART3 Clock is PCLK1 */ + default: + usart_frequency = RCC_GetPCLK1ClockFreq(RCC_GetHCLKClockFreq(RCC_GetSystemClockFreq())); + break; + } + } +#endif /* RCC_CCIPR_USART3SEL */ + else + { + /* nothing to do */ + } + return usart_frequency; +} + +/** + * @brief Return I2Cx clock frequency + * @param I2CxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_I2C1_CLKSOURCE + * @retval I2C clock frequency (in Hz) + * - @ref LL_RCC_PERIPH_FREQUENCY_NO indicates that HSI oscillator is not ready + */ +uint32_t LL_RCC_GetI2CClockFreq(uint32_t I2CxSource) +{ + uint32_t i2c_frequency = LL_RCC_PERIPH_FREQUENCY_NO; + + /* Check parameter */ + assert_param(IS_LL_RCC_I2C_CLKSOURCE(I2CxSource)); + + if (I2CxSource == LL_RCC_I2C1_CLKSOURCE) + { + /* I2C1 CLK clock frequency */ + switch (LL_RCC_GetI2CClockSource(I2CxSource)) + { + case LL_RCC_I2C1_CLKSOURCE_SYSCLK: /* I2C1 Clock is System Clock */ + i2c_frequency = RCC_GetSystemClockFreq(); + break; + + case LL_RCC_I2C1_CLKSOURCE_HSI: /* I2C1 Clock is HSI Osc. */ + if (LL_RCC_HSI_IsReady() == 1U) + { + i2c_frequency = HSI_VALUE; + } + break; + + case LL_RCC_I2C1_CLKSOURCE_PCLK1: /* I2C1 Clock is PCLK1 */ + default: + i2c_frequency = RCC_GetPCLK1ClockFreq(RCC_GetHCLKClockFreq(RCC_GetSystemClockFreq())); + break; + } + } +#if defined(RCC_CCIPR_I2C2SEL) + else if (I2CxSource == LL_RCC_I2C2_CLKSOURCE) + { + /* I2C2 CLK clock frequency */ + switch (LL_RCC_GetI2CClockSource(I2CxSource)) + { + case LL_RCC_I2C2_CLKSOURCE_SYSCLK: /* I2C2 Clock is System Clock */ + i2c_frequency = RCC_GetSystemClockFreq(); + break; + + case LL_RCC_I2C2_CLKSOURCE_HSI: /* I2C2 Clock is HSI Osc. */ + if (LL_RCC_HSI_IsReady() == 1U) + { + i2c_frequency = HSI_VALUE; + } + break; + + case LL_RCC_I2C2_CLKSOURCE_PCLK1: /* I2C2 Clock is PCLK1 */ + default: + i2c_frequency = RCC_GetPCLK1ClockFreq(RCC_GetHCLKClockFreq(RCC_GetSystemClockFreq())); + break; + } + } +#endif /* RCC_CCIPR_I2C2SEL */ + else + { + /* nothing to do */ + } + + return i2c_frequency; +} + +/** + * @brief Return I2Sx clock frequency + * @param I2SxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_I2S1_CLKSOURCE + * @retval I2S clock frequency (in Hz) + * @arg @ref LL_RCC_PERIPH_FREQUENCY_NO indicates that oscillator is not ready + */ +uint32_t LL_RCC_GetI2SClockFreq(uint32_t I2SxSource) +{ + uint32_t i2s_frequency = LL_RCC_PERIPH_FREQUENCY_NO; + + /* Check parameter */ + assert_param(IS_LL_RCC_I2S_CLKSOURCE(I2SxSource)); + + if (I2SxSource == LL_RCC_I2S1_CLKSOURCE) + { + /* I2S1 CLK clock frequency */ + switch (LL_RCC_GetI2SClockSource(I2SxSource)) + { + case LL_RCC_I2S1_CLKSOURCE_HSI: /* I2S1 Clock is HSI */ + i2s_frequency = HSI_VALUE; + break; + + case LL_RCC_I2S1_CLKSOURCE_PLL: /* I2S1 Clock is PLL"P" */ + if (LL_RCC_PLL_IsReady() == 1U) + { + if (LL_RCC_PLL_IsEnabledDomain_I2S1() == 1U) + { + i2s_frequency = RCC_PLL_GetFreqDomain_I2S1(); + } + } + break; + + + case LL_RCC_I2S1_CLKSOURCE_PIN: /* I2S1 Clock is External clock */ + i2s_frequency = EXTERNAL_CLOCK_VALUE; + break; + + case LL_RCC_I2S1_CLKSOURCE_SYSCLK: /* I2S1 Clock is System Clock */ + default: + i2s_frequency = RCC_GetSystemClockFreq(); + break; + } + } +#if defined(RCC_CCIPR2_I2S2SEL) + else if (I2SxSource == LL_RCC_I2S2_CLKSOURCE) + { + /* I2S2 CLK clock frequency */ + switch (LL_RCC_GetI2SClockSource(I2SxSource)) + { + case LL_RCC_I2S2_CLKSOURCE_HSI: /* I2S2 Clock is HSI */ + i2s_frequency = HSI_VALUE; + break; + + case LL_RCC_I2S2_CLKSOURCE_PLL: /* I2S2 Clock is PLL"P" */ + if (LL_RCC_PLL_IsReady() == 1U) + { + if (LL_RCC_PLL_IsEnabledDomain_I2S2() == 1U) + { + i2s_frequency = RCC_PLL_GetFreqDomain_I2S2(); + } + } + break; + + case LL_RCC_I2S2_CLKSOURCE_PIN: /* I2S2 Clock is External clock */ + i2s_frequency = EXTERNAL_CLOCK_VALUE; + break; + + case LL_RCC_I2S2_CLKSOURCE_SYSCLK: /* I2S2 Clock is System Clock */ + default: + i2s_frequency = RCC_GetSystemClockFreq(); + break; + } + } +#endif /* RCC_CCIPR2_I2S2SEL */ + else + { + } + return i2s_frequency; +} + +#if defined(LPUART1) || defined(LPUART2) +/** + * @brief Return LPUARTx clock frequency + * @param LPUARTxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_LPUART1_CLKSOURCE + * @arg @ref LL_RCC_LPUART2_CLKSOURCE (*) + * @retval LPUART clock frequency (in Hz) + * @arg @ref LL_RCC_PERIPH_FREQUENCY_NO indicates that oscillator (HSI or LSE) is not ready + * (*) feature not available on all devices + */ +uint32_t LL_RCC_GetLPUARTClockFreq(uint32_t LPUARTxSource) +{ + uint32_t lpuart_frequency = LL_RCC_PERIPH_FREQUENCY_NO; + + /* Check parameter */ + assert_param(IS_LL_RCC_LPUART_CLKSOURCE(LPUARTxSource)); + + if (LPUARTxSource == LL_RCC_LPUART1_CLKSOURCE) + { + /* LPUART1CLK clock frequency */ + switch (LL_RCC_GetLPUARTClockSource(LPUARTxSource)) + { + case LL_RCC_LPUART1_CLKSOURCE_SYSCLK: /* LPUART1 Clock is System Clock */ + lpuart_frequency = RCC_GetSystemClockFreq(); + break; + + case LL_RCC_LPUART1_CLKSOURCE_HSI: /* LPUART1 Clock is HSI Osc. */ + if (LL_RCC_HSI_IsReady() == 1U) + { + lpuart_frequency = HSI_VALUE; + } + break; + + case LL_RCC_LPUART1_CLKSOURCE_LSE: /* LPUART1 Clock is LSE Osc. */ + if (LL_RCC_LSE_IsReady() == 1U) + { + lpuart_frequency = LSE_VALUE; + } + break; + + case LL_RCC_LPUART1_CLKSOURCE_PCLK1: /* LPUART1 Clock is PCLK1 */ + default: + lpuart_frequency = RCC_GetPCLK1ClockFreq(RCC_GetHCLKClockFreq(RCC_GetSystemClockFreq())); + break; + } + } +#if defined(LPUART2) + else if (LPUARTxSource == LL_RCC_LPUART2_CLKSOURCE) + { + /* LPUART2CLK clock frequency */ + switch (LL_RCC_GetLPUARTClockSource(LPUARTxSource)) + { + case LL_RCC_LPUART2_CLKSOURCE_SYSCLK: /* LPUART2 Clock is System Clock */ + lpuart_frequency = RCC_GetSystemClockFreq(); + break; + + case LL_RCC_LPUART2_CLKSOURCE_HSI: /* LPUART2 Clock is HSI Osc. */ + if (LL_RCC_HSI_IsReady() == 1U) + { + lpuart_frequency = HSI_VALUE; + } + break; + + case LL_RCC_LPUART2_CLKSOURCE_LSE: /* LPUART2 Clock is LSE Osc. */ + if (LL_RCC_LSE_IsReady() == 1U) + { + lpuart_frequency = LSE_VALUE; + } + break; + + case LL_RCC_LPUART2_CLKSOURCE_PCLK1: /* LPUART2 Clock is PCLK1 */ + default: + lpuart_frequency = RCC_GetPCLK1ClockFreq(RCC_GetHCLKClockFreq(RCC_GetSystemClockFreq())); + break; + } + } +#endif /* LPUART2 */ + else + { + /*nothing to do*/ + } + + return lpuart_frequency; +} +#endif /* LPUART1 */ + +#if defined(LPTIM1) && defined(LPTIM2) +/** + * @brief Return LPTIMx clock frequency + * @param LPTIMxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_LPTIM1_CLKSOURCE + * @arg @ref LL_RCC_LPTIM2_CLKSOURCE + * @retval LPTIM clock frequency (in Hz) + * - @ref LL_RCC_PERIPH_FREQUENCY_NO indicates that oscillator (HSI, LSI or LSE) is not ready + */ +uint32_t LL_RCC_GetLPTIMClockFreq(uint32_t LPTIMxSource) +{ + uint32_t lptim_frequency = LL_RCC_PERIPH_FREQUENCY_NO; + + /* Check parameter */ + assert_param(IS_LL_RCC_LPTIM_CLKSOURCE(LPTIMxSource)); + + if (LPTIMxSource == LL_RCC_LPTIM1_CLKSOURCE) + { + /* LPTIM1CLK clock frequency */ + switch (LL_RCC_GetLPTIMClockSource(LPTIMxSource)) + { + case LL_RCC_LPTIM1_CLKSOURCE_LSI: /* LPTIM1 Clock is LSI Osc. */ + if (LL_RCC_LSI_IsReady() == 1U) + { + lptim_frequency = LSI_VALUE; + } + break; + + case LL_RCC_LPTIM1_CLKSOURCE_HSI: /* LPTIM1 Clock is HSI Osc. */ + if (LL_RCC_HSI_IsReady() == 1U) + { + lptim_frequency = HSI_VALUE; + } + break; + + case LL_RCC_LPTIM1_CLKSOURCE_LSE: /* LPTIM1 Clock is LSE Osc. */ + if (LL_RCC_LSE_IsReady() == 1U) + { + lptim_frequency = LSE_VALUE; + } + break; + + case LL_RCC_LPTIM1_CLKSOURCE_PCLK1: /* LPTIM1 Clock is PCLK1 */ + default: + lptim_frequency = RCC_GetPCLK1ClockFreq(RCC_GetHCLKClockFreq(RCC_GetSystemClockFreq())); + break; + } + } + else + { + /* LPTIM2CLK clock frequency */ + switch (LL_RCC_GetLPTIMClockSource(LPTIMxSource)) + { + case LL_RCC_LPTIM2_CLKSOURCE_LSI: /* LPTIM2 Clock is LSI Osc. */ + if (LL_RCC_LSI_IsReady() == 1U) + { + lptim_frequency = LSI_VALUE; + } + break; + + case LL_RCC_LPTIM2_CLKSOURCE_HSI: /* LPTIM2 Clock is HSI Osc. */ + if (LL_RCC_HSI_IsReady() == 1U) + { + lptim_frequency = HSI_VALUE; + } + break; + + case LL_RCC_LPTIM2_CLKSOURCE_LSE: /* LPTIM2 Clock is LSE Osc. */ + if (LL_RCC_LSE_IsReady() == 1U) + { + lptim_frequency = LSE_VALUE; + } + break; + + case LL_RCC_LPTIM2_CLKSOURCE_PCLK1: /* LPTIM2 Clock is PCLK1 */ + default: + lptim_frequency = RCC_GetPCLK1ClockFreq(RCC_GetHCLKClockFreq(RCC_GetSystemClockFreq())); + break; + } + } + + return lptim_frequency; +} +#endif /* LPTIM1 && LPTIM2 */ + +#if defined(RCC_CCIPR_TIM1SEL) || defined(RCC_CCIPR_TIM15SEL) +/** + * @brief Return TIMx clock frequency + * @param TIMxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_TIM1_CLKSOURCE + * @if defined(STM32G081xx) + * @arg @ref LL_RCC_TIM15_CLKSOURCE + * @endif + * @retval TIMx clock frequency (in Hz) + * - @ref LL_RCC_PERIPH_FREQUENCY_NO indicates that oscillator (HSI or LSE) is not ready + */ +uint32_t LL_RCC_GetTIMClockFreq(uint32_t TIMxSource) +{ + uint32_t tim_frequency = LL_RCC_PERIPH_FREQUENCY_NO; + + /* Check parameter */ + assert_param(IS_LL_RCC_TIM_CLKSOURCE(TIMxSource)); + + if (TIMxSource == LL_RCC_TIM1_CLKSOURCE) + { + /* TIM1CLK clock frequency */ + switch (LL_RCC_GetTIMClockSource(TIMxSource)) + { + case LL_RCC_TIM1_CLKSOURCE_PLL: /* TIM1 Clock is PLLQ */ + if (LL_RCC_PLL_IsReady() == 1U) + { + if (LL_RCC_PLL_IsEnabledDomain_TIM1() == 1U) + { + tim_frequency = RCC_PLL_GetFreqDomain_TIM1(); + } + } + break; + + case LL_RCC_TIM1_CLKSOURCE_PCLK1: /* TIM1 Clock is PCLK1 */ + default: + tim_frequency = RCC_GetPCLK1ClockFreq(RCC_GetHCLKClockFreq(RCC_GetSystemClockFreq())); + break; + } + } +#if defined(TIM15) + else + { + if (TIMxSource == LL_RCC_TIM15_CLKSOURCE) + { + /* TIM15CLK clock frequency */ + switch (LL_RCC_GetTIMClockSource(TIMxSource)) + { + case LL_RCC_TIM15_CLKSOURCE_PLL: /* TIM1 Clock is PLLQ */ + if (LL_RCC_PLL_IsReady() == 1U) + { + if (LL_RCC_PLL_IsEnabledDomain_TIM15() == 1U) + { + tim_frequency = RCC_PLL_GetFreqDomain_TIM15(); + } + } + break; + + case LL_RCC_TIM15_CLKSOURCE_PCLK1: /* TIM15 Clock is PCLK1 */ + default: + tim_frequency = RCC_GetPCLK1ClockFreq(RCC_GetHCLKClockFreq(RCC_GetSystemClockFreq())); + break; + } + } + } +#endif /* TIM15 */ + return tim_frequency; +} +#endif /* RCC_CCIPR_TIM1SEL && RCC_CCIPR_TIM15SEL */ + + +#if defined(RNG) +/** + * @brief Return RNGx clock frequency + * @param RNGxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_RNG_CLKSOURCE + * @retval RNG clock frequency (in Hz) + * - @ref LL_RCC_PERIPH_FREQUENCY_NO indicates that oscillator (HSI) or PLL is not ready + * - @ref LL_RCC_PERIPH_FREQUENCY_NA indicates that no clock source selected + */ +uint32_t LL_RCC_GetRNGClockFreq(uint32_t RNGxSource) +{ + uint32_t rng_frequency = LL_RCC_PERIPH_FREQUENCY_NO; + uint32_t rngdiv; + + /* Check parameter */ + assert_param(IS_LL_RCC_RNG_CLKSOURCE(RNGxSource)); + + /* RNGCLK clock frequency */ + switch (LL_RCC_GetRNGClockSource(RNGxSource)) + { + case LL_RCC_RNG_CLKSOURCE_PLL: /* PLL clock used as RNG clock source */ + if (LL_RCC_PLL_IsReady() == 1U) + { + if (LL_RCC_PLL_IsEnabledDomain_RNG() == 1U) + { + rng_frequency = RCC_PLL_GetFreqDomain_RNG(); + rngdiv = (1UL << ((READ_BIT(RCC->CCIPR, RCC_CCIPR_RNGDIV)) >> RCC_CCIPR_RNGDIV_Pos)); + rng_frequency = (rng_frequency / rngdiv); + } + } + break; + + case LL_RCC_RNG_CLKSOURCE_HSI_DIV8: /* HSI clock divided by 8 used as RNG clock source */ + rng_frequency = HSI_VALUE / 8U; + rngdiv = (1UL << ((READ_BIT(RCC->CCIPR, RCC_CCIPR_RNGDIV)) >> RCC_CCIPR_RNGDIV_Pos)); + rng_frequency = (rng_frequency / rngdiv); + break; + case LL_RCC_RNG_CLKSOURCE_SYSCLK: /* SYSCLK clock used as RNG clock source */ + rng_frequency = RCC_GetSystemClockFreq(); + rngdiv = (1UL << ((READ_BIT(RCC->CCIPR, RCC_CCIPR_RNGDIV)) >> RCC_CCIPR_RNGDIV_Pos)); + rng_frequency = (rng_frequency / rngdiv); + break; + + case LL_RCC_RNG_CLKSOURCE_NONE: /* No clock used as RNG clock source */ + default: + rng_frequency = LL_RCC_PERIPH_FREQUENCY_NA; + break; + + } + + return rng_frequency; +} +#endif /* RNG */ + +#if defined(CEC) +/** + * @brief Return CEC clock frequency + * @param CECxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_CEC_CLKSOURCE + * @retval CEC clock frequency (in Hz) + * - @ref LL_RCC_PERIPH_FREQUENCY_NO indicates that oscillator (HSI or LSE) is not ready + */ +uint32_t LL_RCC_GetCECClockFreq(uint32_t CECxSource) +{ + uint32_t cec_frequency = LL_RCC_PERIPH_FREQUENCY_NO; + + /* Check parameter */ + assert_param(IS_LL_RCC_CEC_CLKSOURCE(CECxSource)); + + /* CECCLK clock frequency */ + switch (LL_RCC_GetCECClockSource(CECxSource)) + { + case LL_RCC_CEC_CLKSOURCE_LSE: /* CEC Clock is LSE Osc. */ + if (LL_RCC_LSE_IsReady() == 1U) + { + cec_frequency = LSE_VALUE; + } + break; + + case LL_RCC_CEC_CLKSOURCE_HSI_DIV488: /* CEC Clock is HSI Osc. */ + default: + if (LL_RCC_HSI_IsReady() == 1U) + { + cec_frequency = (HSI_VALUE / 488U); + } + break; + } + + return cec_frequency; +} +#endif /* CEC */ + +#if defined(FDCAN1) || defined(FDCAN2) +/** + * @brief Return FDCANx clock frequency + * @param FDCANxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_FDCAN_CLKSOURCE + * @retval FDCANx clock frequency (in Hz) + * - @ref LL_RCC_PERIPH_FREQUENCY_NO indicates that oscillator (HSI, LSI or LSE) is not ready + */ +uint32_t LL_RCC_GetFDCANClockFreq(uint32_t FDCANxSource) +{ + uint32_t fdcan_frequency = LL_RCC_PERIPH_FREQUENCY_NO; + + /* Check parameter */ + assert_param(IS_LL_RCC_FDCAN_CLKSOURCE(FDCANxSource)); + + /* FDCANCLK clock frequency */ + switch (LL_RCC_GetFDCANClockSource(FDCANxSource)) + { + case LL_RCC_FDCAN_CLKSOURCE_PLL: /* FDCAN Clock is PLL "Q" Osc. */ + if (LL_RCC_PLL_IsReady() == 1U) + { + if (LL_RCC_PLL_IsEnabledDomain_FDCAN() == 1U) + { + fdcan_frequency = RCC_PLL_GetFreqDomain_FDCAN(); + } + } + break; + + case LL_RCC_FDCAN_CLKSOURCE_HSE: /* FDCAN Clock is HSE Osc. */ + if (LL_RCC_HSE_IsReady() == 1U) + { + fdcan_frequency = HSE_VALUE; + } + break; + + case LL_RCC_FDCAN_CLKSOURCE_PCLK1: /* FDCAN Clock is PCLK1 */ + default: + fdcan_frequency = RCC_GetPCLK1ClockFreq(RCC_GetHCLKClockFreq(RCC_GetSystemClockFreq())); + break; + } + + return fdcan_frequency; +} +#endif /* FDCAN1 || FDCAN2 */ + +/** + * @brief Return ADCx clock frequency + * @param ADCxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_ADC_CLKSOURCE + * @retval ADC clock frequency (in Hz) + * - @ref LL_RCC_PERIPH_FREQUENCY_NO indicates that oscillator (HSI) or PLL is not ready + * - @ref LL_RCC_PERIPH_FREQUENCY_NA indicates that no clock source selected + */ +uint32_t LL_RCC_GetADCClockFreq(uint32_t ADCxSource) +{ + uint32_t adc_frequency = LL_RCC_PERIPH_FREQUENCY_NO; + + /* Check parameter */ + assert_param(IS_LL_RCC_ADC_CLKSOURCE(ADCxSource)); + + /* ADCCLK clock frequency */ + switch (LL_RCC_GetADCClockSource(ADCxSource)) + { + case LL_RCC_ADC_CLKSOURCE_SYSCLK: /* SYSCLK clock used as ADC clock source */ + adc_frequency = RCC_GetSystemClockFreq(); + break; + case LL_RCC_ADC_CLKSOURCE_HSI : /* HSI clock used as ADC clock source */ + adc_frequency = HSI_VALUE; + break; + + case LL_RCC_ADC_CLKSOURCE_PLL: /* PLLP clock used as ADC clock source */ + if (LL_RCC_PLL_IsReady() == 1U) + { + if (LL_RCC_PLL_IsEnabledDomain_ADC() == 1U) + { + adc_frequency = RCC_PLL_GetFreqDomain_ADC(); + } + } + break; + default: + adc_frequency = LL_RCC_PERIPH_FREQUENCY_NA; + break; + } + + return adc_frequency; +} + +/** + * @brief Return RTC clock frequency + * @retval RTC clock frequency (in Hz) + * - @ref LL_RCC_PERIPH_FREQUENCY_NO indicates that oscillators (LSI, LSE or HSE) are not ready + * - @ref LL_RCC_PERIPH_FREQUENCY_NA indicates that no clock source selected + */ +uint32_t LL_RCC_GetRTCClockFreq(void) +{ + uint32_t rtc_frequency = LL_RCC_PERIPH_FREQUENCY_NO; + + /* RTCCLK clock frequency */ + switch (LL_RCC_GetRTCClockSource()) + { + case LL_RCC_RTC_CLKSOURCE_LSE: /* LSE clock used as RTC clock source */ + if (LL_RCC_LSE_IsReady() == 1U) + { + rtc_frequency = LSE_VALUE; + } + break; + + case LL_RCC_RTC_CLKSOURCE_LSI: /* LSI clock used as RTC clock source */ + if (LL_RCC_LSI_IsReady() == 1U) + { + rtc_frequency = LSI_VALUE; + } + break; + + case LL_RCC_RTC_CLKSOURCE_HSE_DIV32: /* HSE clock used as ADC clock source */ + rtc_frequency = HSE_VALUE / 32U; + break; + + case LL_RCC_RTC_CLKSOURCE_NONE: /* No clock used as RTC clock source */ + default: + rtc_frequency = LL_RCC_PERIPH_FREQUENCY_NA; + break; + } + + return rtc_frequency; +} + +#if defined(STM32G0C1xx) || defined(STM32G0B1xx) || defined(STM32G0B0xx) +/** + * @brief Return USBx clock frequency + * @param USBxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_USB_CLKSOURCE + * @retval USB clock frequency (in Hz) + * - @ref LL_RCC_PERIPH_FREQUENCY_NO indicates that oscillator (HSI48) or PLL is not ready + * - @ref LL_RCC_PERIPH_FREQUENCY_NA indicates that no clock source selected + */ +uint32_t LL_RCC_GetUSBClockFreq(uint32_t USBxSource) +{ + uint32_t usb_frequency = LL_RCC_PERIPH_FREQUENCY_NO; + + /* Check parameter */ + assert_param(IS_LL_RCC_USB_CLKSOURCE(USBxSource)); + + /* USBCLK clock frequency */ + switch (LL_RCC_GetUSBClockSource(USBxSource)) + { +#if defined(RCC_HSI48_SUPPORT) + case LL_RCC_USB_CLKSOURCE_HSI48: /* HSI48 used as USB clock source */ + if (LL_RCC_HSI48_IsReady() != 0U) + { + usb_frequency = HSI48_VALUE; + } + break; +#endif /* RCC_HSI48_SUPPORT */ + + case LL_RCC_USB_CLKSOURCE_HSE: /* HSE used as USB clock source */ + if (LL_RCC_HSE_IsReady() != 0U) + { + usb_frequency = HSE_VALUE; + } + break; + + case LL_RCC_USB_CLKSOURCE_PLL: /* PLL clock used as USB clock source */ + if (LL_RCC_PLL_IsReady() != 0U) + { + if (LL_RCC_PLL_IsEnabledDomain_USB() != 0U) + { + usb_frequency = RCC_PLL_GetFreqDomain_USB(); + } + } + break; + + default: + usb_frequency = LL_RCC_PERIPH_FREQUENCY_NA; + break; + } + + return usb_frequency; +} +#endif /* STM32G0C1xx || STM32G0B1xx || STM32G0B0xx) */ + +/** + * @} + */ + +/** + * @} + */ + +/** @addtogroup RCC_LL_Private_Functions + * @{ + */ + +/** + * @brief Return SYSTEM clock frequency + * @retval SYSTEM clock frequency (in Hz) + */ +static uint32_t RCC_GetSystemClockFreq(void) +{ + uint32_t frequency; + uint32_t hsidiv; + + /* Get SYSCLK source -------------------------------------------------------*/ + switch (LL_RCC_GetSysClkSource()) + { + case LL_RCC_SYS_CLKSOURCE_STATUS_HSE: /* HSE used as system clock source */ + frequency = HSE_VALUE; + break; + + case LL_RCC_SYS_CLKSOURCE_STATUS_PLL: /* PLL used as system clock source */ + frequency = RCC_PLL_GetFreqDomain_SYS(); + break; + + case LL_RCC_SYS_CLKSOURCE_STATUS_HSI: /* HSI used as system clock source */ + default: + hsidiv = (1UL << ((READ_BIT(RCC->CR, RCC_CR_HSIDIV)) >> RCC_CR_HSIDIV_Pos)); + frequency = (HSI_VALUE / hsidiv); + break; + } + + return frequency; +} + +/** + * @brief Return HCLK clock frequency + * @param SYSCLK_Frequency SYSCLK clock frequency + * @retval HCLK clock frequency (in Hz) + */ +static uint32_t RCC_GetHCLKClockFreq(uint32_t SYSCLK_Frequency) +{ + /* HCLK clock frequency */ + return __LL_RCC_CALC_HCLK_FREQ(SYSCLK_Frequency, LL_RCC_GetAHBPrescaler()); +} + +/** + * @brief Return PCLK1 clock frequency + * @param HCLK_Frequency HCLK clock frequency + * @retval PCLK1 clock frequency (in Hz) + */ +static uint32_t RCC_GetPCLK1ClockFreq(uint32_t HCLK_Frequency) +{ + /* PCLK1 clock frequency */ + return __LL_RCC_CALC_PCLK1_FREQ(HCLK_Frequency, LL_RCC_GetAPB1Prescaler()); +} +/** + * @brief Return PLL clock frequency used for system domain + * @retval PLL clock frequency (in Hz) + */ +static uint32_t RCC_PLL_GetFreqDomain_SYS(void) +{ + uint32_t pllinputfreq; + uint32_t pllsource; + + /* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLLM) * PLLN + SYSCLK = PLL_VCO / PLLR + */ + pllsource = LL_RCC_PLL_GetMainSource(); + + switch (pllsource) + { + case LL_RCC_PLLSOURCE_HSI: /* HSI used as PLL clock source */ + pllinputfreq = HSI_VALUE; + break; + + case LL_RCC_PLLSOURCE_HSE: /* HSE used as PLL clock source */ + pllinputfreq = HSE_VALUE; + break; + + default: + pllinputfreq = HSI_VALUE; + break; + } + return __LL_RCC_CALC_PLLCLK_FREQ(pllinputfreq, LL_RCC_PLL_GetDivider(), + LL_RCC_PLL_GetN(), LL_RCC_PLL_GetR()); +} +/** + * @brief Return PLL clock frequency used for ADC domain + * @retval PLL clock frequency (in Hz) + */ +static uint32_t RCC_PLL_GetFreqDomain_ADC(void) +{ + uint32_t pllinputfreq; + uint32_t pllsource; + + /* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLLM) * PLLN + ADC Domain clock = PLL_VCO / PLLP + */ + pllsource = LL_RCC_PLL_GetMainSource(); + + switch (pllsource) + { + case LL_RCC_PLLSOURCE_HSE: /* HSE used as PLL clock source */ + pllinputfreq = HSE_VALUE; + break; + + case LL_RCC_PLLSOURCE_HSI: /* HSI used as PLL clock source */ + default: + pllinputfreq = HSI_VALUE; + break; + } + return __LL_RCC_CALC_PLLCLK_ADC_FREQ(pllinputfreq, LL_RCC_PLL_GetDivider(), + LL_RCC_PLL_GetN(), LL_RCC_PLL_GetP()); +} + +#if defined(FDCAN1) || defined(FDCAN2) +/** + * @brief Return PLL clock frequency used for FDCAN domain + * @retval PLL clock frequency (in Hz) + */ +static uint32_t RCC_PLL_GetFreqDomain_FDCAN(void) +{ + uint32_t pllinputfreq; + uint32_t pllsource; + + /* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLLM ) * PLLN + + FDCAN Domain clock = PLL_VCO / PLLQ + */ + pllsource = LL_RCC_PLL_GetMainSource(); + + switch (pllsource) + { + case LL_RCC_PLLSOURCE_HSE: /* HSE used as PLL clock source */ + pllinputfreq = HSE_VALUE; + break; + + case LL_RCC_PLLSOURCE_HSI: /* HSI used as PLL clock source */ + default: + pllinputfreq = HSI_VALUE; + break; + } + return __LL_RCC_CALC_PLLCLK_FDCAN_FREQ(pllinputfreq, LL_RCC_PLL_GetDivider(), + LL_RCC_PLL_GetN(), LL_RCC_PLL_GetQ()); +} +#endif /* FDCAN1 || FDCAN2 */ + +/** + * @brief Return PLL clock frequency used for I2S1 domain + * @retval PLL clock frequency (in Hz) + */ +static uint32_t RCC_PLL_GetFreqDomain_I2S1(void) +{ + uint32_t pllinputfreq; + uint32_t pllsource; + + /* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLLM) * PLLN + I2S1 Domain clock = PLL_VCO / PLLP + */ + pllsource = LL_RCC_PLL_GetMainSource(); + + switch (pllsource) + { + case LL_RCC_PLLSOURCE_HSE: /* HSE used as PLL clock source */ + pllinputfreq = HSE_VALUE; + break; + + case LL_RCC_PLLSOURCE_HSI: /* HSI used as PLL clock source */ + default: + pllinputfreq = HSI_VALUE; + break; + } + return __LL_RCC_CALC_PLLCLK_I2S1_FREQ(pllinputfreq, LL_RCC_PLL_GetDivider(), + LL_RCC_PLL_GetN(), LL_RCC_PLL_GetP()); +} + +#if defined(RCC_CCIPR2_I2S2SEL) +/** + * @brief Return PLL clock frequency used for I2S2 domain + * @retval PLL clock frequency (in Hz) + */ +static uint32_t RCC_PLL_GetFreqDomain_I2S2(void) +{ + uint32_t pllinputfreq; + uint32_t pllsource; + + /* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLLM) * PLLN + I2S2 Domain clock = PLL_VCO / PLLP + */ + pllsource = LL_RCC_PLL_GetMainSource(); + + switch (pllsource) + { + case LL_RCC_PLLSOURCE_HSE: /* HSE used as PLL clock source */ + pllinputfreq = HSE_VALUE; + break; + + case LL_RCC_PLLSOURCE_HSI: /* HSI used as PLL clock source */ + default: + pllinputfreq = HSI_VALUE; + break; + } + return __LL_RCC_CALC_PLLCLK_I2S2_FREQ(pllinputfreq, LL_RCC_PLL_GetDivider(), + LL_RCC_PLL_GetN(), LL_RCC_PLL_GetP()); +} +#endif /* RCC_CCIPR2_I2S2SEL */ + +#if defined(RNG) +/** + * @brief Return PLL clock frequency used for RNG domain + * @retval PLL clock frequency (in Hz) + */ +static uint32_t RCC_PLL_GetFreqDomain_RNG(void) +{ + uint32_t pllinputfreq; + uint32_t pllsource; + + /* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLLM ) * PLLN + + RNG Domain clock = PLL_VCO / PLLQ + */ + pllsource = LL_RCC_PLL_GetMainSource(); + + switch (pllsource) + { + case LL_RCC_PLLSOURCE_HSE: /* HSE used as PLL clock source */ + pllinputfreq = HSE_VALUE; + break; + + case LL_RCC_PLLSOURCE_HSI: /* HSI used as PLL clock source */ + default: + pllinputfreq = HSI_VALUE; + break; + } + return __LL_RCC_CALC_PLLCLK_RNG_FREQ(pllinputfreq, LL_RCC_PLL_GetDivider(), + LL_RCC_PLL_GetN(), LL_RCC_PLL_GetQ()); +} +#endif /* RNG */ + +#if defined(STM32G0C1xx) || defined(STM32G0B1xx) || defined(STM32G0B0xx) +/** + * @brief Return PLL clock frequency used for USB domain + * @retval PLL clock frequency (in Hz) + */ +static uint32_t RCC_PLL_GetFreqDomain_USB(void) +{ + uint32_t pllinputfreq; + uint32_t pllsource; + + /* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLLM ) * PLLN + + RNG Domain clock = PLL_VCO / PLLQ + */ + pllsource = LL_RCC_PLL_GetMainSource(); + + switch (pllsource) + { + case LL_RCC_PLLSOURCE_HSE: /* HSE used as PLL clock source */ + pllinputfreq = HSE_VALUE; + break; + + case LL_RCC_PLLSOURCE_HSI: /* HSI used as PLL clock source */ + default: + pllinputfreq = HSI_VALUE; + break; + } + return __LL_RCC_CALC_PLLCLK_USB_FREQ(pllinputfreq, LL_RCC_PLL_GetDivider(), + LL_RCC_PLL_GetN(), LL_RCC_PLL_GetQ()); +} +#endif /* STM32G0C1xx || STM32G0B1xx || STM32G0B0xx */ + +#if defined(RCC_PLLQ_SUPPORT) && defined(RCC_CCIPR_TIM1SEL) +/** + * @brief Return PLL clock frequency used for TIM1 domain + * @retval PLL clock frequency (in Hz) + */ +static uint32_t RCC_PLL_GetFreqDomain_TIM1(void) +{ + uint32_t pllinputfreq; + uint32_t pllsource; + + /* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLLM ) * PLLN + + TIM1 Domain clock = PLL_VCO / PLLQ + */ + pllsource = LL_RCC_PLL_GetMainSource(); + + switch (pllsource) + { + case LL_RCC_PLLSOURCE_HSE: /* HSE used as PLL clock source */ + pllinputfreq = HSE_VALUE; + break; + + case LL_RCC_PLLSOURCE_HSI: /* HSI used as PLL clock source */ + default: + pllinputfreq = HSI_VALUE; + break; + } + return __LL_RCC_CALC_PLLCLK_TIM1_FREQ(pllinputfreq, LL_RCC_PLL_GetDivider(), + LL_RCC_PLL_GetN(), LL_RCC_PLL_GetQ()); +} +#endif /* RCC_PLLQ_SUPPORT */ + +#if defined(RCC_CCIPR_TIM15SEL) +/** + * @brief Return PLL clock frequency used for TIM15 domain + * @retval PLL clock frequency (in Hz) + */ +static uint32_t RCC_PLL_GetFreqDomain_TIM15(void) +{ + uint32_t pllinputfreq; + uint32_t pllsource; + + /* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLLM ) * PLLN + + TIM15 Domain clock = PLL_VCO / PLLQ + */ + pllsource = LL_RCC_PLL_GetMainSource(); + + switch (pllsource) + { + case LL_RCC_PLLSOURCE_HSE: /* HSE used as PLL clock source */ + pllinputfreq = HSE_VALUE; + break; + + case LL_RCC_PLLSOURCE_HSI: /* HSI used as PLL clock source */ + default: + pllinputfreq = HSI_VALUE; + break; + } + return __LL_RCC_CALC_PLLCLK_TIM15_FREQ(pllinputfreq, LL_RCC_PLL_GetDivider(), + LL_RCC_PLL_GetN(), LL_RCC_PLL_GetQ()); +} +#endif /* RCC_CCIPR_TIM15SEL */ +/** + * @} + */ + +/** + * @} + */ + +#endif /* RCC */ + +/** + * @} + */ + +#endif /* USE_FULL_LL_DRIVER */ + diff --git a/firmware/Drivers/bme280/BME280_STM32.c b/firmware/Drivers/bme280/BME280_STM32.c new file mode 100644 index 0000000..8cad653 --- /dev/null +++ b/firmware/Drivers/bme280/BME280_STM32.c @@ -0,0 +1,339 @@ +/* + *************************************************************************************************************** + *************************************************************************************************************** + *************************************************************************************************************** + + File: BME280_STM32.c + Author: ControllersTech.com + Updated: Dec 14, 2021 + + *************************************************************************************************************** + Copyright (C) 2017 ControllersTech.com + + This is a free software under the GNU license, you can redistribute it and/or modify it under the terms + of the GNU General Public License version 3 as published by the Free Software Foundation. + This software library is shared with public for educational purposes, without WARRANTY and Author is not liable for any damages caused directly + or indirectly by this software, read more about this on the GNU General Public License. + + *************************************************************************************************************** +*/ + +#include "BME280_STM32.h" + +extern I2C_HandleTypeDef hi2c1; +#define BME280_I2C &hi2c1 + +//#define SUPPORT_64BIT 1 +#define SUPPORT_32BIT 1 + +#define BME280_ADDRESS 0xEC // SDIO is grounded, the 7 bit address is 0x76 and 8 bit address = 0x76<<1 = 0xEC + +extern float Temperature, Pressure, Humidity; + +uint8_t chipID; + +uint8_t TrimParam[36]; +int32_t tRaw, pRaw, hRaw; + +uint16_t dig_T1, \ + dig_P1, \ + dig_H1, dig_H3; + +int16_t dig_T2, dig_T3, \ + dig_P2, dig_P3, dig_P4, dig_P5, dig_P6, dig_P7, dig_P8, dig_P9, \ + dig_H2, dig_H4, dig_H5, dig_H6; + + + +// Read the Trimming parameters saved in the NVM ROM of the device +void TrimRead(void) +{ + uint8_t trimdata[32]; + // Read NVM from 0x88 to 0xA1 + HAL_I2C_Mem_Read(BME280_I2C, BME280_ADDRESS, 0x88, 1, trimdata, 25, HAL_MAX_DELAY); + + // Read NVM from 0xE1 to 0xE7 + HAL_I2C_Mem_Read(BME280_I2C, BME280_ADDRESS, 0xE1, 1, (uint8_t *)trimdata+25, 7, HAL_MAX_DELAY); + + // Arrange the data as per the datasheet (page no. 24) + dig_T1 = (trimdata[1]<<8) | trimdata[0]; + dig_T2 = (trimdata[3]<<8) | trimdata[2]; + dig_T3 = (trimdata[5]<<8) | trimdata[4]; + dig_P1 = (trimdata[7]<<8) | trimdata[5]; + dig_P2 = (trimdata[9]<<8) | trimdata[6]; + dig_P3 = (trimdata[11]<<8) | trimdata[10]; + dig_P4 = (trimdata[13]<<8) | trimdata[12]; + dig_P5 = (trimdata[15]<<8) | trimdata[14]; + dig_P6 = (trimdata[17]<<8) | trimdata[16]; + dig_P7 = (trimdata[19]<<8) | trimdata[18]; + dig_P8 = (trimdata[21]<<8) | trimdata[20]; + dig_P9 = (trimdata[23]<<8) | trimdata[22]; + dig_H1 = trimdata[24]; + dig_H2 = (trimdata[26]<<8) | trimdata[25]; + dig_H3 = (trimdata[27]); + dig_H4 = (trimdata[28]<<4) | (trimdata[29] & 0x0f); + dig_H5 = (trimdata[30]<<4) | (trimdata[29]>>4); + dig_H6 = (trimdata[31]); +} + +/* Configuration for the BME280 + + * @osrs is the oversampling to improve the accuracy + * if osrs is set to OSRS_OFF, the respective measurement will be skipped + * It can be set to OSRS_1, OSRS_2, OSRS_4, etc. Check the header file + * + * @mode can be used to set the mode for the device + * MODE_SLEEP will put the device in sleep + * MODE_FORCED device goes back to sleep after one measurement. You need to use the BME280_WakeUP() function before every measurement + * MODE_NORMAL device performs measurement in the normal mode. Check datasheet page no 16 + * + * @t_sb is the standby time. The time sensor waits before performing another measurement + * It is used along with the normal mode. Check datasheet page no 16 and page no 30 + * + * @filter is the IIR filter coefficients + * IIR is used to avoid the short term fluctuations + * Check datasheet page no 18 and page no 30 + */ + +int BME280_Config (uint8_t osrs_t, uint8_t osrs_p, uint8_t osrs_h, uint8_t mode, uint8_t t_sb, uint8_t filter) +{ + // Read the Trimming parameters + TrimRead(); + + + uint8_t datatowrite = 0; + uint8_t datacheck = 0; + + // Reset the device + datatowrite = 0xB6; // reset sequence + if (HAL_I2C_Mem_Write(BME280_I2C, BME280_ADDRESS, RESET_REG, 1, &datatowrite, 1, 1000) != HAL_OK) + { + return -1; + } + + HAL_Delay (100); + + + // write the humidity oversampling to 0xF2 + datatowrite = osrs_h; + if (HAL_I2C_Mem_Write(BME280_I2C, BME280_ADDRESS, CTRL_HUM_REG, 1, &datatowrite, 1, 1000) != HAL_OK) + { + return -1; + } + HAL_Delay (100); + HAL_I2C_Mem_Read(BME280_I2C, BME280_ADDRESS, CTRL_HUM_REG, 1, &datacheck, 1, 1000); + if (datacheck != datatowrite) + { + return -1; + } + + + // write the standby time and IIR filter coeff to 0xF5 + datatowrite = (t_sb <<5) |(filter << 2); + if (HAL_I2C_Mem_Write(BME280_I2C, BME280_ADDRESS, CONFIG_REG, 1, &datatowrite, 1, 1000) != HAL_OK) + { + return -1; + } + HAL_Delay (100); + HAL_I2C_Mem_Read(BME280_I2C, BME280_ADDRESS, CONFIG_REG, 1, &datacheck, 1, 1000); + if (datacheck != datatowrite) + { + return -1; + } + + + // write the pressure and temp oversampling along with mode to 0xF4 + datatowrite = (osrs_t <<5) |(osrs_p << 2) | mode; + if (HAL_I2C_Mem_Write(BME280_I2C, BME280_ADDRESS, CTRL_MEAS_REG, 1, &datatowrite, 1, 1000) != HAL_OK) + { + return -1; + } + HAL_Delay (100); + HAL_I2C_Mem_Read(BME280_I2C, BME280_ADDRESS, CTRL_MEAS_REG, 1, &datacheck, 1, 1000); + if (datacheck != datatowrite) + { + return -1; + } + + return 0; +} + + +int BMEReadRaw(void) +{ + uint8_t RawData[8]; + + // Check the chip ID before reading + HAL_I2C_Mem_Read(&hi2c1, BME280_ADDRESS, ID_REG, 1, &chipID, 1, 1000); + + if (chipID == 0x60) + { + // Read the Registers 0xF7 to 0xFE + HAL_I2C_Mem_Read(BME280_I2C, BME280_ADDRESS, PRESS_MSB_REG, 1, RawData, 8, HAL_MAX_DELAY); + + /* Calculate the Raw data for the parameters + * Here the Pressure and Temperature are in 20 bit format and humidity in 16 bit format + */ + pRaw = (RawData[0]<<12)|(RawData[1]<<4)|(RawData[2]>>4); + tRaw = (RawData[3]<<12)|(RawData[4]<<4)|(RawData[5]>>4); + hRaw = (RawData[6]<<8)|(RawData[7]); + + return 0; + } + + else return -1; +} + +/* To be used when doing the force measurement + * the Device need to be put in forced mode every time the measurement is needed + */ +void BME280_WakeUP(void) +{ + uint8_t datatowrite = 0; + + // first read the register + HAL_I2C_Mem_Read(BME280_I2C, BME280_ADDRESS, CTRL_MEAS_REG, 1, &datatowrite, 1, 1000); + + // modify the data with the forced mode + datatowrite = datatowrite | MODE_FORCED; + + // write the new data to the register + HAL_I2C_Mem_Write(BME280_I2C, BME280_ADDRESS, CTRL_MEAS_REG, 1, &datatowrite, 1, 1000); + + HAL_Delay (100); +} + +/************* COMPENSATION CALCULATION AS PER DATASHEET (page 25) **************************/ + +/* Returns temperature in DegC, resolution is 0.01 DegC. Output value of “5123” equals 51.23 DegC. + t_fine carries fine temperature as global value +*/ +int32_t t_fine; +int32_t BME280_compensate_T_int32(int32_t adc_T) +{ + int32_t var1, var2, T; + var1 = ((((adc_T>>3) - ((int32_t)dig_T1<<1))) * ((int32_t)dig_T2)) >> 11; + var2 = (((((adc_T>>4) - ((int32_t)dig_T1)) * ((adc_T>>4) - ((int32_t)dig_T1)))>> 12) *((int32_t)dig_T3)) >> 14; + t_fine = var1 + var2; + T = (t_fine * 5 + 128) >> 8; + return T; +} + + +#if SUPPORT_64BIT +/* Returns pressure in Pa as unsigned 32 bit integer in Q24.8 format (24 integer bits and 8 fractional bits). + Output value of “24674867” represents 24674867/256 = 96386.2 Pa = 963.862 hPa +*/ +uint32_t BME280_compensate_P_int64(int32_t adc_P) +{ + int64_t var1, var2, p; + var1 = ((int64_t)t_fine) - 128000; + var2 = var1 * var1 * (int64_t)dig_P6; + var2 = var2 + ((var1*(int64_t)dig_P5)<<17); + var2 = var2 + (((int64_t)dig_P4)<<35); + var1 = ((var1 * var1 * (int64_t)dig_P3)>>8) + ((var1 * (int64_t)dig_P2)<<12); + var1 = (((((int64_t)1)<<47)+var1))*((int64_t)dig_P1)>>33; + if (var1 == 0) + { + return 0; // avoid exception caused by division by zero + } + p = 1048576-adc_P; + p = (((p<<31)-var2)*3125)/var1; + var1 = (((int64_t)dig_P9) * (p>>13) * (p>>13)) >> 25; + var2 = (((int64_t)dig_P8) * p) >> 19; + p = ((p + var1 + var2) >> 8) + (((int64_t)dig_P7)<<4); + return (uint32_t)p; +} + +#elif SUPPORT_32BIT +// Returns pressure in Pa as unsigned 32 bit integer. Output value of “96386” equals 96386 Pa = 963.86 hPa +uint32_t BME280_compensate_P_int32(int32_t adc_P) +{ + int32_t var1, var2; + uint32_t p; + var1 = (((int32_t)t_fine)>>1) - (int32_t)64000; + var2 = (((var1>>2) * (var1>>2)) >> 11 ) * ((int32_t)dig_P6); + var2 = var2 + ((var1*((int32_t)dig_P5))<<1); + var2 = (var2>>2)+(((int32_t)dig_P4)<<16); + var1 = (((dig_P3 * (((var1>>2) * (var1>>2)) >> 13 )) >> 3) + ((((int32_t)dig_P2) *var1)>>1))>>18; + var1 =((((32768+var1))*((int32_t)dig_P1))>>15); + if (var1 == 0) + { + return 0; // avoid exception caused by division by zero + } + p = (((uint32_t)(((int32_t)1048576)-adc_P)-(var2>>12)))*3125; + if (p < 0x80000000) + { + p = (p << 1) / ((uint32_t)var1); + } + else + { + p = (p / (uint32_t)var1) * 2; + } + var1 = (((int32_t)dig_P9) * ((int32_t)(((p>>3) * (p>>3))>>13)))>>12; + var2 = (((int32_t)(p>>2)) * ((int32_t)dig_P8))>>13; + p = (uint32_t)((int32_t)p + ((var1 + var2 + dig_P7) >> 4)); + return p; +} +#endif + +/* Returns humidity in %RH as unsigned 32 bit integer in Q22.10 format (22 integer and 10 fractional bits). + Output value of “47445” represents 47445/1024 = 46.333 %RH +*/ +uint32_t bme280_compensate_H_int32(int32_t adc_H) +{ + int32_t v_x1_u32r; + v_x1_u32r = (t_fine - ((int32_t)76800)); + v_x1_u32r = (((((adc_H << 14) - (((int32_t)dig_H4) << 20) - (((int32_t)dig_H5) *\ + v_x1_u32r)) + ((int32_t)16384)) >> 15) * (((((((v_x1_u32r *\ + ((int32_t)dig_H6)) >> 10) * (((v_x1_u32r * ((int32_t)dig_H3)) >> 11) +\ + ((int32_t)32768))) >> 10) + ((int32_t)2097152)) * ((int32_t)dig_H2) +\ + 8192) >> 14)); + v_x1_u32r = (v_x1_u32r - (((((v_x1_u32r >> 15) * (v_x1_u32r >> 15)) >> 7) *\ + ((int32_t)dig_H1)) >> 4)); + v_x1_u32r = (v_x1_u32r < 0 ? 0 : v_x1_u32r); + v_x1_u32r = (v_x1_u32r > 419430400 ? 419430400 : v_x1_u32r); + return (uint32_t)(v_x1_u32r>>12); +} +/*********************************************************************************************************/ + + +/* measure the temp, pressure and humidity + * the values will be stored in the parameters passed to the function + */ +void BME280_Measure (void) +{ + if (BMEReadRaw() == 0) + { + if (tRaw == 0x800000) Temperature = 0; // value in case temp measurement was disabled + else + { + Temperature = (BME280_compensate_T_int32 (tRaw))/100.0; // as per datasheet, the temp is x100 + } + + if (pRaw == 0x800000) Pressure = 0; // value in case temp measurement was disabled + else + { +#if SUPPORT_64BIT + Pressure = (BME280_compensate_P_int64 (pRaw))/256.0; // as per datasheet, the pressure is x256 + +#elif SUPPORT_32BIT + Pressure = (BME280_compensate_P_int32 (pRaw)); // as per datasheet, the pressure is Pa + +#endif + } + + if (hRaw == 0x8000) Humidity = 0; // value in case temp measurement was disabled + else + { + Humidity = (bme280_compensate_H_int32 (hRaw))/1024.0; // as per datasheet, the temp is x1024 + } + } + + + // if the device is detached + else + { + Temperature = Pressure = Humidity = 0; + } +} diff --git a/firmware/Drivers/bme280/BME280_STM32.h b/firmware/Drivers/bme280/BME280_STM32.h new file mode 100644 index 0000000..7f8e604 --- /dev/null +++ b/firmware/Drivers/bme280/BME280_STM32.h @@ -0,0 +1,104 @@ +/* + *************************************************************************************************************** + *************************************************************************************************************** + *************************************************************************************************************** + + File: BME280_STM32.h + Author: ControllersTech.com + Updated: Dec 14, 2021 + + *************************************************************************************************************** + Copyright (C) 2017 ControllersTech.com + + This is a free software under the GNU license, you can redistribute it and/or modify it under the terms + of the GNU General Public License version 3 as published by the Free Software Foundation. + This software library is shared with public for educational purposes, without WARRANTY and Author is not liable for any damages caused directly + or indirectly by this software, read more about this on the GNU General Public License. + + *************************************************************************************************************** + */ + + +#ifndef INC_BME280_STM32_H_ +#define INC_BME280_STM32_H_ + +#include "stm32g0xx_hal.h" + +/* Configuration for the BME280 + + * @osrs is the oversampling to improve the accuracy + * if osrs is set to OSRS_OFF, the respective measurement will be skipped + * It can be set to OSRS_1, OSRS_2, OSRS_4, etc. Check the header file + * + * @mode can be used to set the mode for the device + * MODE_SLEEP will put the device in sleep + * MODE_FORCED device goes back to sleep after one measurement. You need to use the BME280_WakeUP() function before every measurement + * MODE_NORMAL device performs measurement in the normal mode. Check datasheet page no 16 + * + * @t_sb is the standby time. The time sensor waits before performing another measurement + * It is used along with the normal mode. Check datasheet page no 16 and page no 30 + * + * @filter is the IIR filter coefficients + * IIR is used to avoid the short term fluctuations + * Check datasheet page no 18 and page no 30 + */ + +int BME280_Config (uint8_t osrs_t, uint8_t osrs_p, uint8_t osrs_h, uint8_t mode, uint8_t t_sb, uint8_t filter); + + +// Read the Trimming parameters saved in the NVM ROM of the device +void TrimRead(void); + +/* To be used when doing the force measurement + * the Device need to be put in forced mode every time the measurement is needed + */ +void BME280_WakeUP(void); + +/* measure the temp, pressure and humidity + * the values will be stored in the parameters passed to the function + */ +void BME280_Measure (void); + + +// Oversampling definitions +#define OSRS_OFF 0x00 +#define OSRS_1 0x01 +#define OSRS_2 0x02 +#define OSRS_4 0x03 +#define OSRS_8 0x04 +#define OSRS_16 0x05 + +// MODE Definitions +#define MODE_SLEEP 0x00 +#define MODE_FORCED 0x01 +#define MODE_NORMAL 0x03 + +// Standby Time +#define T_SB_0p5 0x00 +#define T_SB_62p5 0x01 +#define T_SB_125 0x02 +#define T_SB_250 0x03 +#define T_SB_500 0x04 +#define T_SB_1000 0x05 +#define T_SB_10 0x06 +#define T_SB_20 0x07 + +// IIR Filter Coefficients +#define IIR_OFF 0x00 +#define IIR_2 0x01 +#define IIR_4 0x02 +#define IIR_8 0x03 +#define IIR_16 0x04 + + +// REGISTERS DEFINITIONS +#define ID_REG 0xD0 +#define RESET_REG 0xE0 +#define CTRL_HUM_REG 0xF2 +#define STATUS_REG 0xF3 +#define CTRL_MEAS_REG 0xF4 +#define CONFIG_REG 0xF5 +#define PRESS_MSB_REG 0xF7 + + +#endif /* INC_BME280_STM32_H_ */ diff --git a/firmware/Drivers/oled/ssd1306.c b/firmware/Drivers/oled/ssd1306.c new file mode 100644 index 0000000..df8b764 --- /dev/null +++ b/firmware/Drivers/oled/ssd1306.c @@ -0,0 +1,519 @@ +#include "ssd1306.h" +#include +#include +#include // For memcpy + +#if defined(SSD1306_USE_I2C) + +void ssd1306_Reset(void) { + /* for I2C - do nothing */ +} + +// Send a byte to the command register +void ssd1306_WriteCommand(uint8_t byte) { + HAL_I2C_Mem_Write(&SSD1306_I2C_PORT, SSD1306_I2C_ADDR, 0x00, 1, &byte, 1, HAL_MAX_DELAY); +} + +// Send data +void ssd1306_WriteData(uint8_t* buffer, size_t buff_size) { + HAL_I2C_Mem_Write(&SSD1306_I2C_PORT, SSD1306_I2C_ADDR, 0x40, 1, buffer, buff_size, HAL_MAX_DELAY); +} + +#elif defined(SSD1306_USE_SPI) + +void ssd1306_Reset(void) { + // CS = High (not selected) + HAL_GPIO_WritePin(SSD1306_CS_Port, SSD1306_CS_Pin, GPIO_PIN_SET); + + // Reset the OLED + HAL_GPIO_WritePin(SSD1306_Reset_Port, SSD1306_Reset_Pin, GPIO_PIN_RESET); + HAL_Delay(10); + HAL_GPIO_WritePin(SSD1306_Reset_Port, SSD1306_Reset_Pin, GPIO_PIN_SET); + HAL_Delay(10); +} + +// Send a byte to the command register +void ssd1306_WriteCommand(uint8_t byte) { + HAL_GPIO_WritePin(SSD1306_CS_Port, SSD1306_CS_Pin, GPIO_PIN_RESET); // select OLED + HAL_GPIO_WritePin(SSD1306_DC_Port, SSD1306_DC_Pin, GPIO_PIN_RESET); // command + HAL_SPI_Transmit(&SSD1306_SPI_PORT, (uint8_t *) &byte, 1, HAL_MAX_DELAY); + HAL_GPIO_WritePin(SSD1306_CS_Port, SSD1306_CS_Pin, GPIO_PIN_SET); // un-select OLED +} + +// Send data +void ssd1306_WriteData(uint8_t* buffer, size_t buff_size) { + HAL_GPIO_WritePin(SSD1306_CS_Port, SSD1306_CS_Pin, GPIO_PIN_RESET); // select OLED + HAL_GPIO_WritePin(SSD1306_DC_Port, SSD1306_DC_Pin, GPIO_PIN_SET); // data + HAL_SPI_Transmit(&SSD1306_SPI_PORT, buffer, buff_size, HAL_MAX_DELAY); + HAL_GPIO_WritePin(SSD1306_CS_Port, SSD1306_CS_Pin, GPIO_PIN_SET); // un-select OLED +} + +#else +#error "You should define SSD1306_USE_SPI or SSD1306_USE_I2C macro" +#endif + + +// Screenbuffer +static uint8_t SSD1306_Buffer[SSD1306_BUFFER_SIZE]; + +// Screen object +static SSD1306_t SSD1306; + +/* Fills the Screenbuffer with values from a given buffer of a fixed length */ +SSD1306_Error_t ssd1306_FillBuffer(uint8_t* buf, uint32_t len) { + SSD1306_Error_t ret = SSD1306_ERR; + if (len <= SSD1306_BUFFER_SIZE) { + memcpy(SSD1306_Buffer,buf,len); + ret = SSD1306_OK; + } + return ret; +} + +// Initialize the oled screen +void ssd1306_Init(void) { + // Reset OLED + ssd1306_Reset(); + + // Wait for the screen to boot + HAL_Delay(100); + + // Init OLED + ssd1306_SetDisplayOn(0); //display off + + ssd1306_WriteCommand(0x20); //Set Memory Addressing Mode + ssd1306_WriteCommand(0x00); // 00b,Horizontal Addressing Mode; 01b,Vertical Addressing Mode; + // 10b,Page Addressing Mode (RESET); 11b,Invalid + + ssd1306_WriteCommand(0xB0); //Set Page Start Address for Page Addressing Mode,0-7 + +#ifdef SSD1306_MIRROR_VERT + ssd1306_WriteCommand(0xC0); // Mirror vertically +#else + ssd1306_WriteCommand(0xC8); //Set COM Output Scan Direction +#endif + + ssd1306_WriteCommand(0x00); //---set low column address + ssd1306_WriteCommand(0x10); //---set high column address + + ssd1306_WriteCommand(0x40); //--set start line address - CHECK + + ssd1306_SetContrast(0xFF); + +#ifdef SSD1306_MIRROR_HORIZ + ssd1306_WriteCommand(0xA0); // Mirror horizontally +#else + ssd1306_WriteCommand(0xA1); //--set segment re-map 0 to 127 - CHECK +#endif + +#ifdef SSD1306_INVERSE_COLOR + ssd1306_WriteCommand(0xA7); //--set inverse color +#else + ssd1306_WriteCommand(0xA6); //--set normal color +#endif + +// Set multiplex ratio. +#if (SSD1306_HEIGHT == 128) + // Found in the Luma Python lib for SH1106. + ssd1306_WriteCommand(0xFF); +#else + ssd1306_WriteCommand(0xA8); //--set multiplex ratio(1 to 64) - CHECK +#endif + +#if (SSD1306_HEIGHT == 32) + ssd1306_WriteCommand(0x1F); // +#elif (SSD1306_HEIGHT == 64) + ssd1306_WriteCommand(0x3F); // +#elif (SSD1306_HEIGHT == 128) + ssd1306_WriteCommand(0x3F); // Seems to work for 128px high displays too. +#else +#error "Only 32, 64, or 128 lines of height are supported!" +#endif + + ssd1306_WriteCommand(0xA4); //0xa4,Output follows RAM content;0xa5,Output ignores RAM content + + ssd1306_WriteCommand(0xD3); //-set display offset - CHECK + ssd1306_WriteCommand(0x00); //-not offset + + ssd1306_WriteCommand(0xD5); //--set display clock divide ratio/oscillator frequency + ssd1306_WriteCommand(0xF0); //--set divide ratio + + ssd1306_WriteCommand(0xD9); //--set pre-charge period + ssd1306_WriteCommand(0x22); // + + ssd1306_WriteCommand(0xDA); //--set com pins hardware configuration - CHECK +#if (SSD1306_HEIGHT == 32) + ssd1306_WriteCommand(0x02); +#elif (SSD1306_HEIGHT == 64) + ssd1306_WriteCommand(0x12); +#elif (SSD1306_HEIGHT == 128) + ssd1306_WriteCommand(0x12); +#else +#error "Only 32, 64, or 128 lines of height are supported!" +#endif + + ssd1306_WriteCommand(0xDB); //--set vcomh + ssd1306_WriteCommand(0x20); //0x20,0.77xVcc + + ssd1306_WriteCommand(0x8D); //--set DC-DC enable + ssd1306_WriteCommand(0x14); // + ssd1306_SetDisplayOn(1); //--turn on SSD1306 panel + + // Clear screen + ssd1306_Fill(Black); + + // Flush buffer to screen + ssd1306_UpdateScreen(); + + // Set default values for screen object + SSD1306.CurrentX = 0; + SSD1306.CurrentY = 0; + + SSD1306.Initialized = 1; +} + +// Fill the whole screen with the given color +void ssd1306_Fill(SSD1306_COLOR color) { + /* Set memory */ + uint32_t i; + + for(i = 0; i < sizeof(SSD1306_Buffer); i++) { + SSD1306_Buffer[i] = (color == Black) ? 0x00 : 0xFF; + } +} + +// Write the screenbuffer with changed to the screen +void ssd1306_UpdateScreen(void) { + // Write data to each page of RAM. Number of pages + // depends on the screen height: + // + // * 32px == 4 pages + // * 64px == 8 pages + // * 128px == 16 pages + for(uint8_t i = 0; i < SSD1306_HEIGHT/8; i++) { + ssd1306_WriteCommand(0xB0 + i); // Set the current RAM page address. + ssd1306_WriteCommand(0x00 + SSD1306_X_OFFSET_LOWER); + ssd1306_WriteCommand(0x10 + SSD1306_X_OFFSET_UPPER); + ssd1306_WriteData(&SSD1306_Buffer[SSD1306_WIDTH*i],SSD1306_WIDTH); + } +} + +// Draw one pixel in the screenbuffer +// X => X Coordinate +// Y => Y Coordinate +// color => Pixel color +void ssd1306_DrawPixel(uint8_t x, uint8_t y, SSD1306_COLOR color) { + if(x >= SSD1306_WIDTH || y >= SSD1306_HEIGHT) { + // Don't write outside the buffer + return; + } + + // Draw in the right color + if(color == White) { + SSD1306_Buffer[x + (y / 8) * SSD1306_WIDTH] |= 1 << (y % 8); + } else { + SSD1306_Buffer[x + (y / 8) * SSD1306_WIDTH] &= ~(1 << (y % 8)); + } +} + +// Draw 1 char to the screen buffer +// ch => char om weg te schrijven +// Font => Font waarmee we gaan schrijven +// color => Black or White +char ssd1306_WriteChar(char ch, FontDef Font, SSD1306_COLOR color) { + uint32_t i, b, j; + + // Check if character is valid + if (ch < 32 || ch > 126) + return 0; + + // Check remaining space on current line + if (SSD1306_WIDTH < (SSD1306.CurrentX + Font.FontWidth) || + SSD1306_HEIGHT < (SSD1306.CurrentY + Font.FontHeight)) + { + // Not enough space on current line + return 0; + } + + // Use the font to write + for(i = 0; i < Font.FontHeight; i++) { + b = Font.data[(ch - 32) * Font.FontHeight + i]; + for(j = 0; j < Font.FontWidth; j++) { + if((b << j) & 0x8000) { + ssd1306_DrawPixel(SSD1306.CurrentX + j, (SSD1306.CurrentY + i), (SSD1306_COLOR) color); + } else { + ssd1306_DrawPixel(SSD1306.CurrentX + j, (SSD1306.CurrentY + i), (SSD1306_COLOR)!color); + } + } + } + + // The current space is now taken + SSD1306.CurrentX += Font.FontWidth; + + // Return written char for validation + return ch; +} + +// Write full string to screenbuffer +char ssd1306_WriteString(char* str, FontDef Font, SSD1306_COLOR color) { + // Write until null-byte + while (*str) { + if (ssd1306_WriteChar(*str, Font, color) != *str) { + // Char could not be written + return *str; + } + + // Next char + str++; + } + + // Everything ok + return *str; +} + +// Position the cursor +void ssd1306_SetCursor(uint8_t x, uint8_t y) { + SSD1306.CurrentX = x; + SSD1306.CurrentY = y; +} + +// Draw line by Bresenhem's algorithm +void ssd1306_Line(uint8_t x1, uint8_t y1, uint8_t x2, uint8_t y2, SSD1306_COLOR color) { + int32_t deltaX = abs(x2 - x1); + int32_t deltaY = abs(y2 - y1); + int32_t signX = ((x1 < x2) ? 1 : -1); + int32_t signY = ((y1 < y2) ? 1 : -1); + int32_t error = deltaX - deltaY; + int32_t error2; + + ssd1306_DrawPixel(x2, y2, color); + while((x1 != x2) || (y1 != y2)) + { + ssd1306_DrawPixel(x1, y1, color); + error2 = error * 2; + if(error2 > -deltaY) + { + error -= deltaY; + x1 += signX; + } + else + { + /*nothing to do*/ + } + + if(error2 < deltaX) + { + error += deltaX; + y1 += signY; + } + else + { + /*nothing to do*/ + } + } + return; +} +//Draw polyline +void ssd1306_Polyline(const SSD1306_VERTEX *par_vertex, uint16_t par_size, SSD1306_COLOR color) { + uint16_t i; + if(par_vertex != 0){ + for(i = 1; i < par_size; i++){ + ssd1306_Line(par_vertex[i - 1].x, par_vertex[i - 1].y, par_vertex[i].x, par_vertex[i].y, color); + } + } + else + { + /*nothing to do*/ + } + return; +} +/*Convert Degrees to Radians*/ +static float ssd1306_DegToRad(float par_deg) { + return par_deg * 3.14 / 180.0; +} +/*Normalize degree to [0;360]*/ +static uint16_t ssd1306_NormalizeTo0_360(uint16_t par_deg) { + uint16_t loc_angle; + if(par_deg <= 360) + { + loc_angle = par_deg; + } + else + { + loc_angle = par_deg % 360; + loc_angle = ((par_deg != 0)?par_deg:360); + } + return loc_angle; +} +/*DrawArc. Draw angle is beginning from 4 quart of trigonometric circle (3pi/2) + * start_angle in degree + * sweep in degree + */ +void ssd1306_DrawArc(uint8_t x, uint8_t y, uint8_t radius, uint16_t start_angle, uint16_t sweep, SSD1306_COLOR color) { + #define CIRCLE_APPROXIMATION_SEGMENTS 36 + float approx_degree; + uint32_t approx_segments; + uint8_t xp1,xp2; + uint8_t yp1,yp2; + uint32_t count = 0; + uint32_t loc_sweep = 0; + float rad; + + loc_sweep = ssd1306_NormalizeTo0_360(sweep); + + count = (ssd1306_NormalizeTo0_360(start_angle) * CIRCLE_APPROXIMATION_SEGMENTS) / 360; + approx_segments = (loc_sweep * CIRCLE_APPROXIMATION_SEGMENTS) / 360; + approx_degree = loc_sweep / (float)approx_segments; + while(count < approx_segments) + { + rad = ssd1306_DegToRad(count*approx_degree); + xp1 = x + (int8_t)(sin(rad)*radius); + yp1 = y + (int8_t)(cos(rad)*radius); + count++; + if(count != approx_segments) + { + rad = ssd1306_DegToRad(count*approx_degree); + } + else + { + rad = ssd1306_DegToRad(loc_sweep); + } + xp2 = x + (int8_t)(sin(rad)*radius); + yp2 = y + (int8_t)(cos(rad)*radius); + ssd1306_Line(xp1,yp1,xp2,yp2,color); + } + + return; +} +//Draw circle by Bresenhem's algorithm +void ssd1306_DrawCircle(uint8_t par_x,uint8_t par_y,uint8_t par_r,SSD1306_COLOR par_color) { + int32_t x = -par_r; + int32_t y = 0; + int32_t err = 2 - 2 * par_r; + int32_t e2; + + if (par_x >= SSD1306_WIDTH || par_y >= SSD1306_HEIGHT) { + return; + } + + do { + ssd1306_DrawPixel(par_x - x, par_y + y, par_color); + ssd1306_DrawPixel(par_x + x, par_y + y, par_color); + ssd1306_DrawPixel(par_x + x, par_y - y, par_color); + ssd1306_DrawPixel(par_x - x, par_y - y, par_color); + e2 = err; + if (e2 <= y) { + y++; + err = err + (y * 2 + 1); + if(-x == y && e2 <= x) { + e2 = 0; + } + else + { + /*nothing to do*/ + } + } + else + { + /*nothing to do*/ + } + if(e2 > x) { + x++; + err = err + (x * 2 + 1); + } + else + { + /*nothing to do*/ + } + } while(x <= 0); + + return; +} + +//Draw rectangle +void ssd1306_DrawRectangle(uint8_t x1, uint8_t y1, uint8_t x2, uint8_t y2, SSD1306_COLOR color, uint8_t fill) { + ssd1306_Line(x1,y1,x2,y1,color); + ssd1306_Line(x2,y1,x2,y2,color); + ssd1306_Line(x2,y2,x1,y2,color); + ssd1306_Line(x1,y2,x1,y1,color); + + if (fill) { + uint8_t xx1, xx2; + xx1 = x1+1; + xx2 = x2-1; + for (uint8_t yy = y1+1; yy= SSD1306_WIDTH || y >= SSD1306_HEIGHT) { + return; + } + + for (uint8_t j = 0; j < h; j++, y++) { + for (uint8_t i = 0; i < w; i++) { + if (i & 7) + byte <<= 1; + else + byte = (*(const unsigned char *)(&bitmap[j * byteWidth + i / 8])); + if (byte & 0x80) + ssd1306_DrawPixel(x + i, y, color); + } + } + return; +} + +void ssd1306_SetContrast(const uint8_t value) { + const uint8_t kSetContrastControlRegister = 0x81; + ssd1306_WriteCommand(kSetContrastControlRegister); + ssd1306_WriteCommand(value); +} + +void ssd1306_SetDisplayOn(const uint8_t on) { + uint8_t value; + if (on) { + value = 0xAF; // Display on + SSD1306.DisplayOn = 1; + } else { + value = 0xAE; // Display off + SSD1306.DisplayOn = 0; + } + ssd1306_WriteCommand(value); +} + +uint8_t ssd1306_GetDisplayOn() { + return SSD1306.DisplayOn; +} diff --git a/firmware/Drivers/oled/ssd1306.h b/firmware/Drivers/oled/ssd1306.h new file mode 100644 index 0000000..dbb9a2a --- /dev/null +++ b/firmware/Drivers/oled/ssd1306.h @@ -0,0 +1,184 @@ +/** + * This Library was originally written by Olivier Van den Eede (4ilo) in 2016. + * Some refactoring was done and SPI support was added by Aleksander Alekseev (afiskon) in 2018. + * + * https://github.com/afiskon/stm32-ssd1306 + */ + +#ifndef __SSD1306_H__ +#define __SSD1306_H__ + +#include +#include <_ansi.h> + +_BEGIN_STD_C + +#include "ssd1306_conf.h" + +#if defined(STM32F0) +#include "stm32f0xx_hal.h" +#elif defined(STM32F1) +#include "stm32f1xx_hal.h" +#elif defined(STM32F4) +#include "stm32f4xx_hal.h" +#include "stm32f4xx_hal_gpio.h" +#elif defined(STM32L0) +#include "stm32l0xx_hal.h" +#elif defined(STM32L1) +#include "stm32l1xx_hal.h" +#elif defined(STM32L4) +#include "stm32l4xx_hal.h" +#elif defined(STM32F3) +#include "stm32f3xx_hal.h" +#elif defined(STM32H7) +#include "stm32h7xx_hal.h" +#elif defined(STM32F7) +#include "stm32f7xx_hal.h" +#elif defined(STM32G0) +#include "stm32g0xx_hal.h" +#elif defined(STM32G4) +#include "stm32g4xx_hal.h" +#else +#error "SSD1306 library was tested only on STM32F0, STM32F1, STM32F3, STM32F4, STM32F7, STM32L0, STM32L1, STM32L4, STM32H7, STM32G0, STM32G4 MCU families. Please modify ssd1306.h if you know what you are doing. Also please send a pull request if it turns out the library works on other MCU's as well!" +#endif + +#ifdef SSD1306_X_OFFSET +#define SSD1306_X_OFFSET_LOWER (SSD1306_X_OFFSET & 0x0F) +#define SSD1306_X_OFFSET_UPPER ((SSD1306_X_OFFSET >> 4) & 0x07) +#else +#define SSD1306_X_OFFSET_LOWER 0 +#define SSD1306_X_OFFSET_UPPER 0 +#endif + +#include "ssd1306_fonts.h" + +/* vvv I2C config vvv */ + +#ifndef SSD1306_I2C_PORT +#define SSD1306_I2C_PORT hi2c1 +#endif + +#ifndef SSD1306_I2C_ADDR +#define SSD1306_I2C_ADDR (0x3C << 1) +#endif + +/* ^^^ I2C config ^^^ */ + +/* vvv SPI config vvv */ + +#ifndef SSD1306_SPI_PORT +#define SSD1306_SPI_PORT hspi2 +#endif + +#ifndef SSD1306_CS_Port +#define SSD1306_CS_Port GPIOB +#endif +#ifndef SSD1306_CS_Pin +#define SSD1306_CS_Pin GPIO_PIN_12 +#endif + +#ifndef SSD1306_DC_Port +#define SSD1306_DC_Port GPIOB +#endif +#ifndef SSD1306_DC_Pin +#define SSD1306_DC_Pin GPIO_PIN_14 +#endif + +#ifndef SSD1306_Reset_Port +#define SSD1306_Reset_Port GPIOA +#endif +#ifndef SSD1306_Reset_Pin +#define SSD1306_Reset_Pin GPIO_PIN_8 +#endif + +/* ^^^ SPI config ^^^ */ + +#if defined(SSD1306_USE_I2C) +extern I2C_HandleTypeDef SSD1306_I2C_PORT; +#elif defined(SSD1306_USE_SPI) +extern SPI_HandleTypeDef SSD1306_SPI_PORT; +#else +#error "You should define SSD1306_USE_SPI or SSD1306_USE_I2C macro!" +#endif + +// SSD1306 OLED height in pixels +#ifndef SSD1306_HEIGHT +#define SSD1306_HEIGHT 64 +#endif + +// SSD1306 width in pixels +#ifndef SSD1306_WIDTH +#define SSD1306_WIDTH 128 +#endif + +#ifndef SSD1306_BUFFER_SIZE +#define SSD1306_BUFFER_SIZE SSD1306_WIDTH * SSD1306_HEIGHT / 8 +#endif + +// Enumeration for screen colors +typedef enum { + Black = 0x00, // Black color, no pixel + White = 0x01 // Pixel is set. Color depends on OLED +} SSD1306_COLOR; + +typedef enum { + SSD1306_OK = 0x00, + SSD1306_ERR = 0x01 // Generic error. +} SSD1306_Error_t; + +// Struct to store transformations +typedef struct { + uint16_t CurrentX; + uint16_t CurrentY; + uint8_t Initialized; + uint8_t DisplayOn; +} SSD1306_t; + +typedef struct { + uint8_t x; + uint8_t y; +} SSD1306_VERTEX; + +// Procedure definitions +void ssd1306_Init(void); +void ssd1306_Fill(SSD1306_COLOR color); +void ssd1306_UpdateScreen(void); +void ssd1306_DrawPixel(uint8_t x, uint8_t y, SSD1306_COLOR color); +char ssd1306_WriteChar(char ch, FontDef Font, SSD1306_COLOR color); +char ssd1306_WriteString(char* str, FontDef Font, SSD1306_COLOR color); +void ssd1306_SetCursor(uint8_t x, uint8_t y); +void ssd1306_Line(uint8_t x1, uint8_t y1, uint8_t x2, uint8_t y2, SSD1306_COLOR color); +void ssd1306_DrawArc(uint8_t x, uint8_t y, uint8_t radius, uint16_t start_angle, uint16_t sweep, SSD1306_COLOR color); +void ssd1306_DrawCircle(uint8_t par_x, uint8_t par_y, uint8_t par_r, SSD1306_COLOR color); +void ssd1306_Polyline(const SSD1306_VERTEX *par_vertex, uint16_t par_size, SSD1306_COLOR color); +void ssd1306_DrawRectangle(uint8_t x1, uint8_t y1, uint8_t x2, uint8_t y2, SSD1306_COLOR color, uint8_t fill); +void ssd1306_DrawRoundRectangle(uint8_t x1, uint8_t y1, uint8_t x2, uint8_t y2, SSD1306_COLOR color); +void ssd1306_DrawBitmap(uint8_t x, uint8_t y, const unsigned char* bitmap, uint8_t w, uint8_t h, SSD1306_COLOR color); +/** + * @brief Sets the contrast of the display. + * @param[in] value contrast to set. + * @note Contrast increases as the value increases. + * @note RESET = 7Fh. + */ +void ssd1306_SetContrast(const uint8_t value); +/** + * @brief Set Display ON/OFF. + * @param[in] on 0 for OFF, any for ON. + */ +void ssd1306_SetDisplayOn(const uint8_t on); +/** + * @brief Reads DisplayOn state. + * @return 0: OFF. + * 1: ON. + */ +uint8_t ssd1306_GetDisplayOn(); + +// Low-level procedures +void ssd1306_Reset(void); +void ssd1306_WriteCommand(uint8_t byte); +void ssd1306_WriteData(uint8_t* buffer, size_t buff_size); +SSD1306_Error_t ssd1306_FillBuffer(uint8_t* buf, uint32_t len); + +_END_STD_C + +#endif // __SSD1306_H__ diff --git a/firmware/Drivers/oled/ssd1306_conf.h b/firmware/Drivers/oled/ssd1306_conf.h new file mode 100644 index 0000000..7a84c9e --- /dev/null +++ b/firmware/Drivers/oled/ssd1306_conf.h @@ -0,0 +1,64 @@ +/** + * Private configuration file for the SSD1306 library. + * This example is configured for STM32F0, I2C and including all fonts. + */ + +#ifndef __SSD1306_CONF_H__ +#define __SSD1306_CONF_H__ + +// Choose a microcontroller family +//#define STM32F0 +//#define STM32F1 +//#define STM32F4 +//#define STM32L0 +//#define STM32L1 +//#define STM32L4 +//#define STM32F3 +//#define STM32H7 +//#define STM32F7 +#define STM32G0 + +// Choose a bus +#define SSD1306_USE_I2C +//#define SSD1306_USE_SPI + +// I2C Configuration +#define SSD1306_I2C_PORT hi2c2 +#define SSD1306_I2C_ADDR (0x3C << 1) + +// SPI Configuration +//#define SSD1306_SPI_PORT hspi1 +//#define SSD1306_CS_Port OLED_CS_GPIO_Port +//#define SSD1306_CS_Pin OLED_CS_Pin +//#define SSD1306_DC_Port OLED_DC_GPIO_Port +//#define SSD1306_DC_Pin OLED_DC_Pin +//#define SSD1306_Reset_Port OLED_Res_GPIO_Port +//#define SSD1306_Reset_Pin OLED_Res_Pin + +// Mirror the screen if needed +// #define SSD1306_MIRROR_VERT +// #define SSD1306_MIRROR_HORIZ + +// Set inverse color if needed +// # define SSD1306_INVERSE_COLOR + +// Include only needed fonts +#define SSD1306_INCLUDE_FONT_6x8 +#define SSD1306_INCLUDE_FONT_7x10 +#define SSD1306_INCLUDE_FONT_11x18 +#define SSD1306_INCLUDE_FONT_16x26 + +// The width of the screen can be set using this +// define. The default value is 128. +// #define SSD1306_WIDTH 64 + +// If your screen horizontal axis does not start +// in column 0 you can use this define to +// adjust the horizontal offset +// #define SSD1306_X_OFFSET + +// The height can be changed as well if necessary. +// It can be 32, 64 or 128. The default value is 64. +// #define SSD1306_HEIGHT 64 + +#endif /* __SSD1306_CONF_H__ */ diff --git a/firmware/Drivers/oled/ssd1306_fonts.c b/firmware/Drivers/oled/ssd1306_fonts.c new file mode 100644 index 0000000..9bed638 --- /dev/null +++ b/firmware/Drivers/oled/ssd1306_fonts.c @@ -0,0 +1,413 @@ + +#include "ssd1306_fonts.h" + +#ifdef SSD1306_INCLUDE_FONT_7x10 +static const uint16_t Font7x10 [] = { +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // sp +0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x0000, 0x1000, 0x0000, 0x0000, // ! +0x2800, 0x2800, 0x2800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // " +0x2400, 0x2400, 0x7C00, 0x2400, 0x4800, 0x7C00, 0x4800, 0x4800, 0x0000, 0x0000, // # +0x3800, 0x5400, 0x5000, 0x3800, 0x1400, 0x5400, 0x5400, 0x3800, 0x1000, 0x0000, // $ +0x2000, 0x5400, 0x5800, 0x3000, 0x2800, 0x5400, 0x1400, 0x0800, 0x0000, 0x0000, // % +0x1000, 0x2800, 0x2800, 0x1000, 0x3400, 0x4800, 0x4800, 0x3400, 0x0000, 0x0000, // & +0x1000, 0x1000, 0x1000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // ' +0x0800, 0x1000, 0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x1000, 0x0800, // ( +0x2000, 0x1000, 0x0800, 0x0800, 0x0800, 0x0800, 0x0800, 0x0800, 0x1000, 0x2000, // ) +0x1000, 0x3800, 0x1000, 0x2800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // * +0x0000, 0x0000, 0x1000, 0x1000, 0x7C00, 0x1000, 0x1000, 0x0000, 0x0000, 0x0000, // + +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1000, 0x1000, 0x1000, // , +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3800, 0x0000, 0x0000, 0x0000, 0x0000, // - +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1000, 0x0000, 0x0000, // . +0x0800, 0x0800, 0x1000, 0x1000, 0x1000, 0x1000, 0x2000, 0x2000, 0x0000, 0x0000, // / +0x3800, 0x4400, 0x4400, 0x5400, 0x4400, 0x4400, 0x4400, 0x3800, 0x0000, 0x0000, // 0 +0x1000, 0x3000, 0x5000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x0000, 0x0000, // 1 +0x3800, 0x4400, 0x4400, 0x0400, 0x0800, 0x1000, 0x2000, 0x7C00, 0x0000, 0x0000, // 2 +0x3800, 0x4400, 0x0400, 0x1800, 0x0400, 0x0400, 0x4400, 0x3800, 0x0000, 0x0000, // 3 +0x0800, 0x1800, 0x2800, 0x2800, 0x4800, 0x7C00, 0x0800, 0x0800, 0x0000, 0x0000, // 4 +0x7C00, 0x4000, 0x4000, 0x7800, 0x0400, 0x0400, 0x4400, 0x3800, 0x0000, 0x0000, // 5 +0x3800, 0x4400, 0x4000, 0x7800, 0x4400, 0x4400, 0x4400, 0x3800, 0x0000, 0x0000, // 6 +0x7C00, 0x0400, 0x0800, 0x1000, 0x1000, 0x2000, 0x2000, 0x2000, 0x0000, 0x0000, // 7 +0x3800, 0x4400, 0x4400, 0x3800, 0x4400, 0x4400, 0x4400, 0x3800, 0x0000, 0x0000, // 8 +0x3800, 0x4400, 0x4400, 0x4400, 0x3C00, 0x0400, 0x4400, 0x3800, 0x0000, 0x0000, // 9 +0x0000, 0x0000, 0x1000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1000, 0x0000, 0x0000, // : +0x0000, 0x0000, 0x0000, 0x1000, 0x0000, 0x0000, 0x0000, 0x1000, 0x1000, 0x1000, // ; +0x0000, 0x0000, 0x0C00, 0x3000, 0x4000, 0x3000, 0x0C00, 0x0000, 0x0000, 0x0000, // < +0x0000, 0x0000, 0x0000, 0x7C00, 0x0000, 0x7C00, 0x0000, 0x0000, 0x0000, 0x0000, // = +0x0000, 0x0000, 0x6000, 0x1800, 0x0400, 0x1800, 0x6000, 0x0000, 0x0000, 0x0000, // > +0x3800, 0x4400, 0x0400, 0x0800, 0x1000, 0x1000, 0x0000, 0x1000, 0x0000, 0x0000, // ? +0x3800, 0x4400, 0x4C00, 0x5400, 0x5C00, 0x4000, 0x4000, 0x3800, 0x0000, 0x0000, // @ +0x1000, 0x2800, 0x2800, 0x2800, 0x2800, 0x7C00, 0x4400, 0x4400, 0x0000, 0x0000, // A +0x7800, 0x4400, 0x4400, 0x7800, 0x4400, 0x4400, 0x4400, 0x7800, 0x0000, 0x0000, // B +0x3800, 0x4400, 0x4000, 0x4000, 0x4000, 0x4000, 0x4400, 0x3800, 0x0000, 0x0000, // C +0x7000, 0x4800, 0x4400, 0x4400, 0x4400, 0x4400, 0x4800, 0x7000, 0x0000, 0x0000, // D +0x7C00, 0x4000, 0x4000, 0x7C00, 0x4000, 0x4000, 0x4000, 0x7C00, 0x0000, 0x0000, // E +0x7C00, 0x4000, 0x4000, 0x7800, 0x4000, 0x4000, 0x4000, 0x4000, 0x0000, 0x0000, // F +0x3800, 0x4400, 0x4000, 0x4000, 0x5C00, 0x4400, 0x4400, 0x3800, 0x0000, 0x0000, // G +0x4400, 0x4400, 0x4400, 0x7C00, 0x4400, 0x4400, 0x4400, 0x4400, 0x0000, 0x0000, // H +0x3800, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x3800, 0x0000, 0x0000, // I +0x0400, 0x0400, 0x0400, 0x0400, 0x0400, 0x0400, 0x4400, 0x3800, 0x0000, 0x0000, // J +0x4400, 0x4800, 0x5000, 0x6000, 0x5000, 0x4800, 0x4800, 0x4400, 0x0000, 0x0000, // K +0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x7C00, 0x0000, 0x0000, // L +0x4400, 0x6C00, 0x6C00, 0x5400, 0x4400, 0x4400, 0x4400, 0x4400, 0x0000, 0x0000, // M +0x4400, 0x6400, 0x6400, 0x5400, 0x5400, 0x4C00, 0x4C00, 0x4400, 0x0000, 0x0000, // N +0x3800, 0x4400, 0x4400, 0x4400, 0x4400, 0x4400, 0x4400, 0x3800, 0x0000, 0x0000, // O +0x7800, 0x4400, 0x4400, 0x4400, 0x7800, 0x4000, 0x4000, 0x4000, 0x0000, 0x0000, // P +0x3800, 0x4400, 0x4400, 0x4400, 0x4400, 0x4400, 0x5400, 0x3800, 0x0400, 0x0000, // Q +0x7800, 0x4400, 0x4400, 0x4400, 0x7800, 0x4800, 0x4800, 0x4400, 0x0000, 0x0000, // R +0x3800, 0x4400, 0x4000, 0x3000, 0x0800, 0x0400, 0x4400, 0x3800, 0x0000, 0x0000, // S +0x7C00, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x0000, 0x0000, // T +0x4400, 0x4400, 0x4400, 0x4400, 0x4400, 0x4400, 0x4400, 0x3800, 0x0000, 0x0000, // U +0x4400, 0x4400, 0x4400, 0x2800, 0x2800, 0x2800, 0x1000, 0x1000, 0x0000, 0x0000, // V +0x4400, 0x4400, 0x5400, 0x5400, 0x5400, 0x6C00, 0x2800, 0x2800, 0x0000, 0x0000, // W +0x4400, 0x2800, 0x2800, 0x1000, 0x1000, 0x2800, 0x2800, 0x4400, 0x0000, 0x0000, // X +0x4400, 0x4400, 0x2800, 0x2800, 0x1000, 0x1000, 0x1000, 0x1000, 0x0000, 0x0000, // Y +0x7C00, 0x0400, 0x0800, 0x1000, 0x1000, 0x2000, 0x4000, 0x7C00, 0x0000, 0x0000, // Z +0x1800, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1800, // [ +0x2000, 0x2000, 0x1000, 0x1000, 0x1000, 0x1000, 0x0800, 0x0800, 0x0000, 0x0000, /* \ */ +0x3000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x3000, // ] +0x1000, 0x2800, 0x2800, 0x4400, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // ^ +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFE00, // _ +0x2000, 0x1000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // ` +0x0000, 0x0000, 0x3800, 0x4400, 0x3C00, 0x4400, 0x4C00, 0x3400, 0x0000, 0x0000, // a +0x4000, 0x4000, 0x5800, 0x6400, 0x4400, 0x4400, 0x6400, 0x5800, 0x0000, 0x0000, // b +0x0000, 0x0000, 0x3800, 0x4400, 0x4000, 0x4000, 0x4400, 0x3800, 0x0000, 0x0000, // c +0x0400, 0x0400, 0x3400, 0x4C00, 0x4400, 0x4400, 0x4C00, 0x3400, 0x0000, 0x0000, // d +0x0000, 0x0000, 0x3800, 0x4400, 0x7C00, 0x4000, 0x4400, 0x3800, 0x0000, 0x0000, // e +0x0C00, 0x1000, 0x7C00, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x0000, 0x0000, // f +0x0000, 0x0000, 0x3400, 0x4C00, 0x4400, 0x4400, 0x4C00, 0x3400, 0x0400, 0x7800, // g +0x4000, 0x4000, 0x5800, 0x6400, 0x4400, 0x4400, 0x4400, 0x4400, 0x0000, 0x0000, // h +0x1000, 0x0000, 0x7000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x0000, 0x0000, // i +0x1000, 0x0000, 0x7000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0xE000, // j +0x4000, 0x4000, 0x4800, 0x5000, 0x6000, 0x5000, 0x4800, 0x4400, 0x0000, 0x0000, // k +0x7000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x0000, 0x0000, // l +0x0000, 0x0000, 0x7800, 0x5400, 0x5400, 0x5400, 0x5400, 0x5400, 0x0000, 0x0000, // m +0x0000, 0x0000, 0x5800, 0x6400, 0x4400, 0x4400, 0x4400, 0x4400, 0x0000, 0x0000, // n +0x0000, 0x0000, 0x3800, 0x4400, 0x4400, 0x4400, 0x4400, 0x3800, 0x0000, 0x0000, // o +0x0000, 0x0000, 0x5800, 0x6400, 0x4400, 0x4400, 0x6400, 0x5800, 0x4000, 0x4000, // p +0x0000, 0x0000, 0x3400, 0x4C00, 0x4400, 0x4400, 0x4C00, 0x3400, 0x0400, 0x0400, // q +0x0000, 0x0000, 0x5800, 0x6400, 0x4000, 0x4000, 0x4000, 0x4000, 0x0000, 0x0000, // r +0x0000, 0x0000, 0x3800, 0x4400, 0x3000, 0x0800, 0x4400, 0x3800, 0x0000, 0x0000, // s +0x2000, 0x2000, 0x7800, 0x2000, 0x2000, 0x2000, 0x2000, 0x1800, 0x0000, 0x0000, // t +0x0000, 0x0000, 0x4400, 0x4400, 0x4400, 0x4400, 0x4C00, 0x3400, 0x0000, 0x0000, // u +0x0000, 0x0000, 0x4400, 0x4400, 0x2800, 0x2800, 0x2800, 0x1000, 0x0000, 0x0000, // v +0x0000, 0x0000, 0x5400, 0x5400, 0x5400, 0x6C00, 0x2800, 0x2800, 0x0000, 0x0000, // w +0x0000, 0x0000, 0x4400, 0x2800, 0x1000, 0x1000, 0x2800, 0x4400, 0x0000, 0x0000, // x +0x0000, 0x0000, 0x4400, 0x4400, 0x2800, 0x2800, 0x1000, 0x1000, 0x1000, 0x6000, // y +0x0000, 0x0000, 0x7C00, 0x0800, 0x1000, 0x2000, 0x4000, 0x7C00, 0x0000, 0x0000, // z +0x1800, 0x1000, 0x1000, 0x1000, 0x2000, 0x2000, 0x1000, 0x1000, 0x1000, 0x1800, // { +0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, // | +0x3000, 0x1000, 0x1000, 0x1000, 0x0800, 0x0800, 0x1000, 0x1000, 0x1000, 0x3000, // } +0x0000, 0x0000, 0x0000, 0x7400, 0x4C00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // ~ +}; +#endif + +#ifdef SSD1306_INCLUDE_FONT_11x18 +static const uint16_t Font11x18 [] = { +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // sp +0x0000, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0000, 0x0C00, 0x0C00, 0x0000, 0x0000, 0x0000, // ! +0x0000, 0x1B00, 0x1B00, 0x1B00, 0x1B00, 0x1B00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // " +0x0000, 0x1980, 0x1980, 0x1980, 0x1980, 0x7FC0, 0x7FC0, 0x1980, 0x3300, 0x7FC0, 0x7FC0, 0x3300, 0x3300, 0x3300, 0x3300, 0x0000, 0x0000, 0x0000, // # +0x0000, 0x1E00, 0x3F00, 0x7580, 0x6580, 0x7400, 0x3C00, 0x1E00, 0x0700, 0x0580, 0x6580, 0x6580, 0x7580, 0x3F00, 0x1E00, 0x0400, 0x0400, 0x0000, // $ +0x0000, 0x7000, 0xD800, 0xD840, 0xD8C0, 0xD980, 0x7300, 0x0600, 0x0C00, 0x1B80, 0x36C0, 0x66C0, 0x46C0, 0x06C0, 0x0380, 0x0000, 0x0000, 0x0000, // % +0x0000, 0x1E00, 0x3F00, 0x3300, 0x3300, 0x3300, 0x1E00, 0x0C00, 0x3CC0, 0x66C0, 0x6380, 0x6180, 0x6380, 0x3EC0, 0x1C80, 0x0000, 0x0000, 0x0000, // & +0x0000, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // ' +0x0080, 0x0100, 0x0300, 0x0600, 0x0600, 0x0400, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0400, 0x0600, 0x0600, 0x0300, 0x0100, 0x0080, // ( +0x2000, 0x1000, 0x1800, 0x0C00, 0x0C00, 0x0400, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0400, 0x0C00, 0x0C00, 0x1800, 0x1000, 0x2000, // ) +0x0000, 0x0C00, 0x2D00, 0x3F00, 0x1E00, 0x3300, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // * +0x0000, 0x0000, 0x0000, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0xFFC0, 0xFFC0, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // + +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0C00, 0x0C00, 0x0400, 0x0400, 0x0800, // , +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1E00, 0x1E00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // - +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0C00, 0x0C00, 0x0000, 0x0000, 0x0000, // . +0x0000, 0x0300, 0x0300, 0x0300, 0x0600, 0x0600, 0x0600, 0x0600, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x1800, 0x1800, 0x1800, 0x0000, 0x0000, 0x0000, // / +0x0000, 0x1E00, 0x3F00, 0x3300, 0x6180, 0x6180, 0x6180, 0x6D80, 0x6D80, 0x6180, 0x6180, 0x6180, 0x3300, 0x3F00, 0x1E00, 0x0000, 0x0000, 0x0000, // 0 +0x0000, 0x0600, 0x0E00, 0x1E00, 0x3600, 0x2600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0000, 0x0000, 0x0000, // 1 +0x0000, 0x1E00, 0x3F00, 0x7380, 0x6180, 0x6180, 0x0180, 0x0300, 0x0600, 0x0C00, 0x1800, 0x3000, 0x6000, 0x7F80, 0x7F80, 0x0000, 0x0000, 0x0000, // 2 +0x0000, 0x1C00, 0x3E00, 0x6300, 0x6300, 0x0300, 0x0E00, 0x0E00, 0x0300, 0x0180, 0x0180, 0x6180, 0x7380, 0x3F00, 0x1E00, 0x0000, 0x0000, 0x0000, // 3 +0x0000, 0x0600, 0x0E00, 0x0E00, 0x1E00, 0x1E00, 0x1600, 0x3600, 0x3600, 0x6600, 0x7F80, 0x7F80, 0x0600, 0x0600, 0x0600, 0x0000, 0x0000, 0x0000, // 4 +0x0000, 0x7F00, 0x7F00, 0x6000, 0x6000, 0x6000, 0x6E00, 0x7F00, 0x6380, 0x0180, 0x0180, 0x6180, 0x7380, 0x3F00, 0x1E00, 0x0000, 0x0000, 0x0000, // 5 +0x0000, 0x1E00, 0x3F00, 0x3380, 0x6180, 0x6000, 0x6E00, 0x7F00, 0x7380, 0x6180, 0x6180, 0x6180, 0x3380, 0x3F00, 0x1E00, 0x0000, 0x0000, 0x0000, // 6 +0x0000, 0x7F80, 0x7F80, 0x0180, 0x0300, 0x0300, 0x0600, 0x0600, 0x0C00, 0x0C00, 0x0C00, 0x0800, 0x1800, 0x1800, 0x1800, 0x0000, 0x0000, 0x0000, // 7 +0x0000, 0x1E00, 0x3F00, 0x6380, 0x6180, 0x6180, 0x2100, 0x1E00, 0x3F00, 0x6180, 0x6180, 0x6180, 0x6180, 0x3F00, 0x1E00, 0x0000, 0x0000, 0x0000, // 8 +0x0000, 0x1E00, 0x3F00, 0x7300, 0x6180, 0x6180, 0x6180, 0x7380, 0x3F80, 0x1D80, 0x0180, 0x6180, 0x7300, 0x3F00, 0x1E00, 0x0000, 0x0000, 0x0000, // 9 +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0C00, 0x0C00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0C00, 0x0C00, 0x0000, 0x0000, 0x0000, // : +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0C00, 0x0C00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0C00, 0x0C00, 0x0400, 0x0400, 0x0800, // ; +0x0000, 0x0000, 0x0000, 0x0000, 0x0080, 0x0380, 0x0E00, 0x3800, 0x6000, 0x3800, 0x0E00, 0x0380, 0x0080, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // < +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7F80, 0x7F80, 0x0000, 0x0000, 0x7F80, 0x7F80, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // = +0x0000, 0x0000, 0x0000, 0x0000, 0x4000, 0x7000, 0x1C00, 0x0700, 0x0180, 0x0700, 0x1C00, 0x7000, 0x4000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // > +0x0000, 0x1F00, 0x3F80, 0x71C0, 0x60C0, 0x00C0, 0x01C0, 0x0380, 0x0700, 0x0E00, 0x0C00, 0x0C00, 0x0000, 0x0C00, 0x0C00, 0x0000, 0x0000, 0x0000, // ? +0x0000, 0x1E00, 0x3F00, 0x3180, 0x7180, 0x6380, 0x6F80, 0x6D80, 0x6D80, 0x6F80, 0x6780, 0x6000, 0x3200, 0x3E00, 0x1C00, 0x0000, 0x0000, 0x0000, // @ +0x0000, 0x0E00, 0x0E00, 0x1B00, 0x1B00, 0x1B00, 0x1B00, 0x3180, 0x3180, 0x3F80, 0x3F80, 0x3180, 0x60C0, 0x60C0, 0x60C0, 0x0000, 0x0000, 0x0000, // A +0x0000, 0x7C00, 0x7E00, 0x6300, 0x6300, 0x6300, 0x6300, 0x7E00, 0x7E00, 0x6300, 0x6180, 0x6180, 0x6380, 0x7F00, 0x7E00, 0x0000, 0x0000, 0x0000, // B +0x0000, 0x1E00, 0x3F00, 0x3180, 0x6180, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6180, 0x3180, 0x3F00, 0x1E00, 0x0000, 0x0000, 0x0000, // C +0x0000, 0x7C00, 0x7F00, 0x6300, 0x6380, 0x6180, 0x6180, 0x6180, 0x6180, 0x6180, 0x6180, 0x6300, 0x6300, 0x7E00, 0x7C00, 0x0000, 0x0000, 0x0000, // D +0x0000, 0x7F80, 0x7F80, 0x6000, 0x6000, 0x6000, 0x6000, 0x7F00, 0x7F00, 0x6000, 0x6000, 0x6000, 0x6000, 0x7F80, 0x7F80, 0x0000, 0x0000, 0x0000, // E +0x0000, 0x7F80, 0x7F80, 0x6000, 0x6000, 0x6000, 0x6000, 0x7F00, 0x7F00, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x0000, 0x0000, 0x0000, // F +0x0000, 0x1E00, 0x3F00, 0x3180, 0x6180, 0x6000, 0x6000, 0x6000, 0x6380, 0x6380, 0x6180, 0x6180, 0x3180, 0x3F80, 0x1E00, 0x0000, 0x0000, 0x0000, // G +0x0000, 0x6180, 0x6180, 0x6180, 0x6180, 0x6180, 0x6180, 0x7F80, 0x7F80, 0x6180, 0x6180, 0x6180, 0x6180, 0x6180, 0x6180, 0x0000, 0x0000, 0x0000, // H +0x0000, 0x3F00, 0x3F00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x3F00, 0x3F00, 0x0000, 0x0000, 0x0000, // I +0x0000, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x6180, 0x6180, 0x7380, 0x3F00, 0x1E00, 0x0000, 0x0000, 0x0000, // J +0x0000, 0x60C0, 0x6180, 0x6300, 0x6600, 0x6600, 0x6C00, 0x7800, 0x7C00, 0x6600, 0x6600, 0x6300, 0x6180, 0x6180, 0x60C0, 0x0000, 0x0000, 0x0000, // K +0x0000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x7F80, 0x7F80, 0x0000, 0x0000, 0x0000, // L +0x0000, 0x71C0, 0x71C0, 0x7BC0, 0x7AC0, 0x6AC0, 0x6AC0, 0x6EC0, 0x64C0, 0x60C0, 0x60C0, 0x60C0, 0x60C0, 0x60C0, 0x60C0, 0x0000, 0x0000, 0x0000, // M +0x0000, 0x7180, 0x7180, 0x7980, 0x7980, 0x7980, 0x6D80, 0x6D80, 0x6D80, 0x6580, 0x6780, 0x6780, 0x6780, 0x6380, 0x6380, 0x0000, 0x0000, 0x0000, // N +0x0000, 0x1E00, 0x3F00, 0x3300, 0x6180, 0x6180, 0x6180, 0x6180, 0x6180, 0x6180, 0x6180, 0x6180, 0x3300, 0x3F00, 0x1E00, 0x0000, 0x0000, 0x0000, // O +0x0000, 0x7E00, 0x7F00, 0x6380, 0x6180, 0x6180, 0x6180, 0x6380, 0x7F00, 0x7E00, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x0000, 0x0000, 0x0000, // P +0x0000, 0x1E00, 0x3F00, 0x3300, 0x6180, 0x6180, 0x6180, 0x6180, 0x6180, 0x6180, 0x6580, 0x6780, 0x3300, 0x3F80, 0x1E40, 0x0000, 0x0000, 0x0000, // Q +0x0000, 0x7E00, 0x7F00, 0x6380, 0x6180, 0x6180, 0x6380, 0x7F00, 0x7E00, 0x6600, 0x6300, 0x6300, 0x6180, 0x6180, 0x60C0, 0x0000, 0x0000, 0x0000, // R +0x0000, 0x0E00, 0x1F00, 0x3180, 0x3180, 0x3000, 0x3800, 0x1E00, 0x0700, 0x0380, 0x6180, 0x6180, 0x3180, 0x3F00, 0x1E00, 0x0000, 0x0000, 0x0000, // S +0x0000, 0xFFC0, 0xFFC0, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0000, 0x0000, 0x0000, // T +0x0000, 0x6180, 0x6180, 0x6180, 0x6180, 0x6180, 0x6180, 0x6180, 0x6180, 0x6180, 0x6180, 0x6180, 0x7380, 0x3F00, 0x1E00, 0x0000, 0x0000, 0x0000, // U +0x0000, 0x60C0, 0x60C0, 0x60C0, 0x3180, 0x3180, 0x3180, 0x1B00, 0x1B00, 0x1B00, 0x1B00, 0x0E00, 0x0E00, 0x0E00, 0x0400, 0x0000, 0x0000, 0x0000, // V +0x0000, 0xC0C0, 0xC0C0, 0xC0C0, 0xC0C0, 0xC0C0, 0xCCC0, 0x4C80, 0x4C80, 0x5E80, 0x5280, 0x5280, 0x7380, 0x6180, 0x6180, 0x0000, 0x0000, 0x0000, // W +0x0000, 0xC0C0, 0x6080, 0x6180, 0x3300, 0x3B00, 0x1E00, 0x0C00, 0x0C00, 0x1E00, 0x1F00, 0x3B00, 0x7180, 0x6180, 0xC0C0, 0x0000, 0x0000, 0x0000, // X +0x0000, 0xC0C0, 0x6180, 0x6180, 0x3300, 0x3300, 0x1E00, 0x1E00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0000, 0x0000, 0x0000, // Y +0x0000, 0x3F80, 0x3F80, 0x0180, 0x0300, 0x0300, 0x0600, 0x0C00, 0x0C00, 0x1800, 0x1800, 0x3000, 0x6000, 0x7F80, 0x7F80, 0x0000, 0x0000, 0x0000, // Z +0x0F00, 0x0F00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0F00, 0x0F00, // [ +0x0000, 0x1800, 0x1800, 0x1800, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0600, 0x0600, 0x0600, 0x0600, 0x0300, 0x0300, 0x0300, 0x0000, 0x0000, 0x0000, /* \ */ +0x1E00, 0x1E00, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x1E00, 0x1E00, // ] +0x0000, 0x0C00, 0x0C00, 0x1E00, 0x1200, 0x3300, 0x3300, 0x6180, 0x6180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // ^ +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFE0, 0x0000, // _ +0x0000, 0x3800, 0x1800, 0x0C00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // ` +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1F00, 0x3F80, 0x6180, 0x0180, 0x1F80, 0x3F80, 0x6180, 0x6380, 0x7F80, 0x38C0, 0x0000, 0x0000, 0x0000, // a +0x0000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6E00, 0x7F00, 0x7380, 0x6180, 0x6180, 0x6180, 0x6180, 0x7380, 0x7F00, 0x6E00, 0x0000, 0x0000, 0x0000, // b +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1E00, 0x3F00, 0x7380, 0x6180, 0x6000, 0x6000, 0x6180, 0x7380, 0x3F00, 0x1E00, 0x0000, 0x0000, 0x0000, // c +0x0000, 0x0180, 0x0180, 0x0180, 0x0180, 0x1D80, 0x3F80, 0x7380, 0x6180, 0x6180, 0x6180, 0x6180, 0x7380, 0x3F80, 0x1D80, 0x0000, 0x0000, 0x0000, // d +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1E00, 0x3F00, 0x7300, 0x6180, 0x7F80, 0x7F80, 0x6000, 0x7180, 0x3F00, 0x1E00, 0x0000, 0x0000, 0x0000, // e +0x0000, 0x07C0, 0x0FC0, 0x0C00, 0x0C00, 0x7F80, 0x7F80, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0000, 0x0000, 0x0000, // f +0x0000, 0x0000, 0x0000, 0x0000, 0x1D80, 0x3F80, 0x7380, 0x6180, 0x6180, 0x6180, 0x6180, 0x7380, 0x3F80, 0x1D80, 0x0180, 0x6380, 0x7F00, 0x3E00, // g +0x0000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6F00, 0x7F80, 0x7180, 0x6180, 0x6180, 0x6180, 0x6180, 0x6180, 0x6180, 0x6180, 0x0000, 0x0000, 0x0000, // h +0x0000, 0x0600, 0x0600, 0x0000, 0x0000, 0x3E00, 0x3E00, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0000, 0x0000, 0x0000, // i +0x0600, 0x0600, 0x0000, 0x0000, 0x3E00, 0x3E00, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x4600, 0x7E00, 0x3C00, // j +0x0000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6180, 0x6300, 0x6600, 0x6C00, 0x7C00, 0x7600, 0x6300, 0x6300, 0x6180, 0x60C0, 0x0000, 0x0000, 0x0000, // k +0x0000, 0x3E00, 0x3E00, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0000, 0x0000, 0x0000, // l +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xDD80, 0xFFC0, 0xCEC0, 0xCCC0, 0xCCC0, 0xCCC0, 0xCCC0, 0xCCC0, 0xCCC0, 0xCCC0, 0x0000, 0x0000, 0x0000, // m +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6F00, 0x7F80, 0x7180, 0x6180, 0x6180, 0x6180, 0x6180, 0x6180, 0x6180, 0x6180, 0x0000, 0x0000, 0x0000, // n +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1E00, 0x3F00, 0x7380, 0x6180, 0x6180, 0x6180, 0x6180, 0x7380, 0x3F00, 0x1E00, 0x0000, 0x0000, 0x0000, // o +0x0000, 0x0000, 0x0000, 0x0000, 0x6E00, 0x7F00, 0x7380, 0x6180, 0x6180, 0x6180, 0x6180, 0x7380, 0x7F00, 0x6E00, 0x6000, 0x6000, 0x6000, 0x6000, // p +0x0000, 0x0000, 0x0000, 0x0000, 0x1D80, 0x3F80, 0x7380, 0x6180, 0x6180, 0x6180, 0x6180, 0x7380, 0x3F80, 0x1D80, 0x0180, 0x0180, 0x0180, 0x0180, // q +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6700, 0x3F80, 0x3900, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x0000, 0x0000, 0x0000, // r +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1E00, 0x3F80, 0x6180, 0x6000, 0x7F00, 0x3F80, 0x0180, 0x6180, 0x7F00, 0x1E00, 0x0000, 0x0000, 0x0000, // s +0x0000, 0x0000, 0x0800, 0x1800, 0x1800, 0x7F00, 0x7F00, 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, 0x1F80, 0x0F80, 0x0000, 0x0000, 0x0000, // t +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6180, 0x6180, 0x6180, 0x6180, 0x6180, 0x6180, 0x6180, 0x6380, 0x7F80, 0x3D80, 0x0000, 0x0000, 0x0000, // u +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x60C0, 0x3180, 0x3180, 0x3180, 0x1B00, 0x1B00, 0x1B00, 0x0E00, 0x0E00, 0x0600, 0x0000, 0x0000, 0x0000, // v +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xDD80, 0xDD80, 0xDD80, 0x5500, 0x5500, 0x5500, 0x7700, 0x7700, 0x2200, 0x2200, 0x0000, 0x0000, 0x0000, // w +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6180, 0x3300, 0x3300, 0x1E00, 0x0C00, 0x0C00, 0x1E00, 0x3300, 0x3300, 0x6180, 0x0000, 0x0000, 0x0000, // x +0x0000, 0x0000, 0x0000, 0x0000, 0x6180, 0x6180, 0x3180, 0x3300, 0x3300, 0x1B00, 0x1B00, 0x1B00, 0x0E00, 0x0E00, 0x0E00, 0x1C00, 0x7C00, 0x7000, // y +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7FC0, 0x7FC0, 0x0180, 0x0300, 0x0600, 0x0C00, 0x1800, 0x3000, 0x7FC0, 0x7FC0, 0x0000, 0x0000, 0x0000, // z +0x0380, 0x0780, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0E00, 0x1C00, 0x1C00, 0x0E00, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0780, 0x0380, // { +0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, // | +0x3800, 0x3C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0E00, 0x0700, 0x0700, 0x0E00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x3C00, 0x3800, // } +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3880, 0x7F80, 0x4700, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // ~ +}; +#endif +#ifdef SSD1306_INCLUDE_FONT_16x26 +static const uint16_t Font16x26 [] = { +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [ ] +0x03E0,0x03E0,0x03E0,0x03E0,0x03E0,0x03E0,0x03E0,0x03E0,0x03C0,0x03C0,0x01C0,0x01C0,0x01C0,0x01C0,0x01C0,0x0000,0x0000,0x0000,0x03E0,0x03E0,0x03E0,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [!] +0x1E3C,0x1E3C,0x1E3C,0x1E3C,0x1E3C,0x1E3C,0x1E3C,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = ["] +0x01CE,0x03CE,0x03DE,0x039E,0x039C,0x079C,0x3FFF,0x7FFF,0x0738,0x0F38,0x0F78,0x0F78,0x0E78,0xFFFF,0xFFFF,0x1EF0,0x1CF0,0x1CE0,0x3CE0,0x3DE0,0x39E0,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [#] +0x03FC,0x0FFE,0x1FEE,0x1EE0,0x1EE0,0x1EE0,0x1EE0,0x1FE0,0x0FE0,0x07E0,0x03F0,0x01FC,0x01FE,0x01FE,0x01FE,0x01FE,0x01FE,0x01FE,0x3DFE,0x3FFC,0x0FF0,0x01E0,0x01E0,0x0000,0x0000,0x0000, // Ascii = [$] +0x3E03,0xF707,0xE78F,0xE78E,0xE39E,0xE3BC,0xE7B8,0xE7F8,0xF7F0,0x3FE0,0x01C0,0x03FF,0x07FF,0x07F3,0x0FF3,0x1EF3,0x3CF3,0x38F3,0x78F3,0xF07F,0xE03F,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [%] +0x07E0,0x0FF8,0x0F78,0x1F78,0x1F78,0x1F78,0x0F78,0x0FF0,0x0FE0,0x1F80,0x7FC3,0xFBC3,0xF3E7,0xF1F7,0xF0F7,0xF0FF,0xF07F,0xF83E,0x7C7F,0x3FFF,0x1FEF,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [&] +0x03E0,0x03E0,0x03E0,0x03E0,0x03E0,0x03C0,0x01C0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = ['] +0x003F,0x007C,0x01F0,0x01E0,0x03C0,0x07C0,0x0780,0x0780,0x0F80,0x0F00,0x0F00,0x0F00,0x0F00,0x0F00,0x0F00,0x0F80,0x0780,0x0780,0x07C0,0x03C0,0x01E0,0x01F0,0x007C,0x003F,0x000F,0x0000, // Ascii = [(] +0x7E00,0x1F00,0x07C0,0x03C0,0x01E0,0x01F0,0x00F0,0x00F0,0x00F8,0x0078,0x0078,0x0078,0x0078,0x0078,0x0078,0x00F8,0x00F0,0x00F0,0x01F0,0x01E0,0x03C0,0x07C0,0x1F00,0x7E00,0x7800,0x0000, // Ascii = [)] +0x03E0,0x03C0,0x01C0,0x39CE,0x3FFF,0x3F7F,0x0320,0x0370,0x07F8,0x0F78,0x1F3C,0x0638,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [*] +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x01C0,0x01C0,0x01C0,0x01C0,0x01C0,0x01C0,0x01C0,0xFFFF,0xFFFF,0x01C0,0x01C0,0x01C0,0x01C0,0x01C0,0x01C0,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [+] +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x03E0,0x03E0,0x03E0,0x03E0,0x01E0,0x01E0,0x01E0,0x01C0,0x0380, // Ascii = [,] +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3FFE,0x3FFE,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [-] +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x03E0,0x03E0,0x03E0,0x03E0,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [.] +0x000F,0x000F,0x001E,0x001E,0x003C,0x003C,0x0078,0x0078,0x00F0,0x00F0,0x01E0,0x01E0,0x03C0,0x03C0,0x0780,0x0780,0x0F00,0x0F00,0x1E00,0x1E00,0x3C00,0x3C00,0x7800,0x7800,0xF000,0x0000, // Ascii = [/] +0x07F0,0x0FF8,0x1F7C,0x3E3E,0x3C1E,0x7C1F,0x7C1F,0x780F,0x780F,0x780F,0x780F,0x780F,0x780F,0x780F,0x7C1F,0x7C1F,0x3C1E,0x3E3E,0x1F7C,0x0FF8,0x07F0,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [0] +0x00F0,0x07F0,0x3FF0,0x3FF0,0x01F0,0x01F0,0x01F0,0x01F0,0x01F0,0x01F0,0x01F0,0x01F0,0x01F0,0x01F0,0x01F0,0x01F0,0x01F0,0x01F0,0x01F0,0x3FFF,0x3FFF,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [1] +0x0FE0,0x3FF8,0x3C7C,0x003C,0x003E,0x003E,0x003E,0x003C,0x003C,0x007C,0x00F8,0x01F0,0x03E0,0x07C0,0x0780,0x0F00,0x1E00,0x3E00,0x3C00,0x3FFE,0x3FFE,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [2] +0x0FF0,0x1FF8,0x1C7C,0x003E,0x003E,0x003E,0x003C,0x003C,0x00F8,0x0FF0,0x0FF8,0x007C,0x003E,0x001E,0x001E,0x001E,0x001E,0x003E,0x1C7C,0x1FF8,0x1FE0,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [3] +0x0078,0x00F8,0x00F8,0x01F8,0x03F8,0x07F8,0x07F8,0x0F78,0x1E78,0x1E78,0x3C78,0x7878,0x7878,0xFFFF,0xFFFF,0x0078,0x0078,0x0078,0x0078,0x0078,0x0078,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [4] +0x1FFC,0x1FFC,0x1FFC,0x1E00,0x1E00,0x1E00,0x1E00,0x1E00,0x1FE0,0x1FF8,0x00FC,0x007C,0x003E,0x003E,0x001E,0x003E,0x003E,0x003C,0x1C7C,0x1FF8,0x1FE0,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [5] +0x01FC,0x07FE,0x0F8E,0x1F00,0x1E00,0x3E00,0x3C00,0x3C00,0x3DF8,0x3FFC,0x7F3E,0x7E1F,0x3C0F,0x3C0F,0x3C0F,0x3C0F,0x3E0F,0x1E1F,0x1F3E,0x0FFC,0x03F0,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [6] +0x3FFF,0x3FFF,0x3FFF,0x000F,0x001E,0x001E,0x003C,0x0038,0x0078,0x00F0,0x00F0,0x01E0,0x01E0,0x03C0,0x03C0,0x0780,0x0F80,0x0F80,0x0F00,0x1F00,0x1F00,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [7] +0x07F8,0x0FFC,0x1F3E,0x1E1E,0x3E1E,0x3E1E,0x1E1E,0x1F3C,0x0FF8,0x07F0,0x0FF8,0x1EFC,0x3E3E,0x3C1F,0x7C1F,0x7C0F,0x7C0F,0x3C1F,0x3F3E,0x1FFC,0x07F0,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [8] +0x07F0,0x0FF8,0x1E7C,0x3C3E,0x3C1E,0x7C1F,0x7C1F,0x7C1F,0x7C1F,0x3C1F,0x3E3F,0x1FFF,0x07EF,0x001F,0x001E,0x001E,0x003E,0x003C,0x38F8,0x3FF0,0x1FE0,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [9] +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x03E0,0x03E0,0x03E0,0x03E0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x03E0,0x03E0,0x03E0,0x03E0,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [:] +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x03E0,0x03E0,0x03E0,0x03E0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x03E0,0x03E0,0x03E0,0x03E0,0x01E0,0x01E0,0x01E0,0x03C0,0x0380, // Ascii = [;] +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0003,0x000F,0x003F,0x00FC,0x03F0,0x0FC0,0x3F00,0xFE00,0x3F00,0x0FC0,0x03F0,0x00FC,0x003F,0x000F,0x0003,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [<] +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xFFFF,0xFFFF,0x0000,0x0000,0x0000,0xFFFF,0xFFFF,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [=] +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xE000,0xF800,0x7E00,0x1F80,0x07E0,0x01F8,0x007E,0x001F,0x007E,0x01F8,0x07E0,0x1F80,0x7E00,0xF800,0xE000,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [>] +0x1FF0,0x3FFC,0x383E,0x381F,0x381F,0x001E,0x001E,0x003C,0x0078,0x00F0,0x01E0,0x03C0,0x03C0,0x07C0,0x07C0,0x0000,0x0000,0x0000,0x07C0,0x07C0,0x07C0,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [?] +0x03F8,0x0FFE,0x1F1E,0x3E0F,0x3C7F,0x78FF,0x79EF,0x73C7,0xF3C7,0xF38F,0xF38F,0xF38F,0xF39F,0xF39F,0x73FF,0x7BFF,0x79F7,0x3C00,0x1F1C,0x0FFC,0x03F8,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [@] +0x0000,0x0000,0x0000,0x03E0,0x03E0,0x07F0,0x07F0,0x07F0,0x0F78,0x0F78,0x0E7C,0x1E3C,0x1E3C,0x3C3E,0x3FFE,0x3FFF,0x781F,0x780F,0xF00F,0xF007,0xF007,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [A] +0x0000,0x0000,0x0000,0x3FF8,0x3FFC,0x3C3E,0x3C1E,0x3C1E,0x3C1E,0x3C3E,0x3C7C,0x3FF0,0x3FF8,0x3C7E,0x3C1F,0x3C1F,0x3C0F,0x3C0F,0x3C1F,0x3FFE,0x3FF8,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [B] +0x0000,0x0000,0x0000,0x01FF,0x07FF,0x1F87,0x3E00,0x3C00,0x7C00,0x7800,0x7800,0x7800,0x7800,0x7800,0x7C00,0x7C00,0x3E00,0x3F00,0x1F83,0x07FF,0x01FF,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [C] +0x0000,0x0000,0x0000,0x7FF0,0x7FFC,0x787E,0x781F,0x781F,0x780F,0x780F,0x780F,0x780F,0x780F,0x780F,0x780F,0x780F,0x781F,0x781E,0x787E,0x7FF8,0x7FE0,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [D] +0x0000,0x0000,0x0000,0x3FFF,0x3FFF,0x3E00,0x3E00,0x3E00,0x3E00,0x3E00,0x3E00,0x3FFE,0x3FFE,0x3E00,0x3E00,0x3E00,0x3E00,0x3E00,0x3E00,0x3FFF,0x3FFF,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [E] +0x0000,0x0000,0x0000,0x1FFF,0x1FFF,0x1E00,0x1E00,0x1E00,0x1E00,0x1E00,0x1E00,0x1FFF,0x1FFF,0x1E00,0x1E00,0x1E00,0x1E00,0x1E00,0x1E00,0x1E00,0x1E00,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [F] +0x0000,0x0000,0x0000,0x03FE,0x0FFF,0x1F87,0x3E00,0x7C00,0x7C00,0x7800,0xF800,0xF800,0xF87F,0xF87F,0x780F,0x7C0F,0x7C0F,0x3E0F,0x1F8F,0x0FFF,0x03FE,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [G] +0x0000,0x0000,0x0000,0x7C1F,0x7C1F,0x7C1F,0x7C1F,0x7C1F,0x7C1F,0x7C1F,0x7C1F,0x7FFF,0x7FFF,0x7C1F,0x7C1F,0x7C1F,0x7C1F,0x7C1F,0x7C1F,0x7C1F,0x7C1F,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [H] +0x0000,0x0000,0x0000,0x3FFF,0x3FFF,0x03E0,0x03E0,0x03E0,0x03E0,0x03E0,0x03E0,0x03E0,0x03E0,0x03E0,0x03E0,0x03E0,0x03E0,0x03E0,0x03E0,0x3FFF,0x3FFF,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [I] +0x0000,0x0000,0x0000,0x1FFC,0x1FFC,0x007C,0x007C,0x007C,0x007C,0x007C,0x007C,0x007C,0x007C,0x007C,0x007C,0x007C,0x0078,0x0078,0x38F8,0x3FF0,0x3FC0,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [J] +0x0000,0x0000,0x0000,0x3C1F,0x3C1E,0x3C3C,0x3C78,0x3CF0,0x3DE0,0x3FE0,0x3FC0,0x3F80,0x3FC0,0x3FE0,0x3DF0,0x3CF0,0x3C78,0x3C7C,0x3C3E,0x3C1F,0x3C0F,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [K] +0x0000,0x0000,0x0000,0x3E00,0x3E00,0x3E00,0x3E00,0x3E00,0x3E00,0x3E00,0x3E00,0x3E00,0x3E00,0x3E00,0x3E00,0x3E00,0x3E00,0x3E00,0x3E00,0x3FFF,0x3FFF,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [L] +0x0000,0x0000,0x0000,0xF81F,0xFC1F,0xFC1F,0xFE3F,0xFE3F,0xFE3F,0xFF7F,0xFF77,0xFF77,0xF7F7,0xF7E7,0xF3E7,0xF3E7,0xF3C7,0xF007,0xF007,0xF007,0xF007,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [M] +0x0000,0x0000,0x0000,0x7C0F,0x7C0F,0x7E0F,0x7F0F,0x7F0F,0x7F8F,0x7F8F,0x7FCF,0x7BEF,0x79EF,0x79FF,0x78FF,0x78FF,0x787F,0x783F,0x783F,0x781F,0x781F,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [N] +0x0000,0x0000,0x0000,0x07F0,0x1FFC,0x3E3E,0x7C1F,0x780F,0x780F,0xF80F,0xF80F,0xF80F,0xF80F,0xF80F,0xF80F,0x780F,0x780F,0x7C1F,0x3E3E,0x1FFC,0x07F0,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [O] +0x0000,0x0000,0x0000,0x3FFC,0x3FFF,0x3E1F,0x3E0F,0x3E0F,0x3E0F,0x3E0F,0x3E1F,0x3E3F,0x3FFC,0x3FF0,0x3E00,0x3E00,0x3E00,0x3E00,0x3E00,0x3E00,0x3E00,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [P] +0x0000,0x0000,0x0000,0x07F0,0x1FFC,0x3E3E,0x7C1F,0x780F,0x780F,0xF80F,0xF80F,0xF80F,0xF80F,0xF80F,0xF80F,0x780F,0x780F,0x7C1F,0x3E3E,0x1FFC,0x07F8,0x007C,0x003F,0x000F,0x0003,0x0000, // Ascii = [Q] +0x0000,0x0000,0x0000,0x3FF0,0x3FFC,0x3C7E,0x3C3E,0x3C1E,0x3C1E,0x3C3E,0x3C3C,0x3CFC,0x3FF0,0x3FE0,0x3DF0,0x3CF8,0x3C7C,0x3C3E,0x3C1E,0x3C1F,0x3C0F,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [R] +0x0000,0x0000,0x0000,0x07FC,0x1FFE,0x3E0E,0x3C00,0x3C00,0x3C00,0x3E00,0x1FC0,0x0FF8,0x03FE,0x007F,0x001F,0x000F,0x000F,0x201F,0x3C3E,0x3FFC,0x1FF0,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [S] +0x0000,0x0000,0x0000,0xFFFF,0xFFFF,0x03E0,0x03E0,0x03E0,0x03E0,0x03E0,0x03E0,0x03E0,0x03E0,0x03E0,0x03E0,0x03E0,0x03E0,0x03E0,0x03E0,0x03E0,0x03E0,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [T] +0x0000,0x0000,0x0000,0x7C0F,0x7C0F,0x7C0F,0x7C0F,0x7C0F,0x7C0F,0x7C0F,0x7C0F,0x7C0F,0x7C0F,0x7C0F,0x7C0F,0x7C0F,0x3C1E,0x3C1E,0x3E3E,0x1FFC,0x07F0,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [U] +0x0000,0x0000,0x0000,0xF007,0xF007,0xF807,0x780F,0x7C0F,0x3C1E,0x3C1E,0x3E1E,0x1E3C,0x1F3C,0x1F78,0x0F78,0x0FF8,0x07F0,0x07F0,0x07F0,0x03E0,0x03E0,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [V] +0x0000,0x0000,0x0000,0xE003,0xF003,0xF003,0xF007,0xF3E7,0xF3E7,0xF3E7,0x73E7,0x7BF7,0x7FF7,0x7FFF,0x7F7F,0x7F7F,0x7F7E,0x3F7E,0x3E3E,0x3E3E,0x3E3E,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [W] +0x0000,0x0000,0x0000,0xF807,0x7C0F,0x3E1E,0x3E3E,0x1F3C,0x0FF8,0x07F0,0x07E0,0x03E0,0x03E0,0x07F0,0x0FF8,0x0F7C,0x1E7C,0x3C3E,0x781F,0x780F,0xF00F,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [X] +0x0000,0x0000,0x0000,0xF807,0x7807,0x7C0F,0x3C1E,0x3E1E,0x1F3C,0x0F78,0x0FF8,0x07F0,0x03E0,0x03E0,0x03E0,0x03E0,0x03E0,0x03E0,0x03E0,0x03E0,0x03E0,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [Y] +0x0000,0x0000,0x0000,0x7FFF,0x7FFF,0x000F,0x001F,0x003E,0x007C,0x00F8,0x00F0,0x01E0,0x03E0,0x07C0,0x0F80,0x0F00,0x1E00,0x3E00,0x7C00,0x7FFF,0x7FFF,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [Z] +0x07FF,0x0780,0x0780,0x0780,0x0780,0x0780,0x0780,0x0780,0x0780,0x0780,0x0780,0x0780,0x0780,0x0780,0x0780,0x0780,0x0780,0x0780,0x0780,0x0780,0x0780,0x0780,0x0780,0x07FF,0x07FF,0x0000, // Ascii = [[] +0x7800,0x7800,0x3C00,0x3C00,0x1E00,0x1E00,0x0F00,0x0F00,0x0780,0x0780,0x03C0,0x03C0,0x01E0,0x01E0,0x00F0,0x00F0,0x0078,0x0078,0x003C,0x003C,0x001E,0x001E,0x000F,0x000F,0x0007,0x0000, // Ascii = [\] +0x7FF0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x00F0,0x7FF0,0x7FF0,0x0000, // Ascii = []] +0x00C0,0x01C0,0x01C0,0x03E0,0x03E0,0x07F0,0x07F0,0x0778,0x0F78,0x0F38,0x1E3C,0x1E3C,0x3C1E,0x3C1E,0x380F,0x780F,0x7807,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [^] +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xFFFF,0xFFFF,0x0000,0x0000,0x0000, // Ascii = [_] +0x00F0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [`] +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0FF8,0x3FFC,0x3C7C,0x003E,0x003E,0x003E,0x07FE,0x1FFE,0x3E3E,0x7C3E,0x783E,0x7C3E,0x7C7E,0x3FFF,0x1FCF,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [a] +0x3C00,0x3C00,0x3C00,0x3C00,0x3C00,0x3C00,0x3DF8,0x3FFE,0x3F3E,0x3E1F,0x3C0F,0x3C0F,0x3C0F,0x3C0F,0x3C0F,0x3C0F,0x3C1F,0x3C1E,0x3F3E,0x3FFC,0x3BF0,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [b] +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x03FE,0x0FFF,0x1F87,0x3E00,0x3E00,0x3C00,0x7C00,0x7C00,0x7C00,0x3C00,0x3E00,0x3E00,0x1F87,0x0FFF,0x03FE,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [c] +0x001F,0x001F,0x001F,0x001F,0x001F,0x001F,0x07FF,0x1FFF,0x3E3F,0x3C1F,0x7C1F,0x7C1F,0x7C1F,0x781F,0x781F,0x7C1F,0x7C1F,0x3C3F,0x3E7F,0x1FFF,0x0FDF,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [d] +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x03F8,0x0FFC,0x1F3E,0x3E1E,0x3C1F,0x7C1F,0x7FFF,0x7FFF,0x7C00,0x7C00,0x3C00,0x3E00,0x1F07,0x0FFF,0x03FE,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [e] +0x01FF,0x03E1,0x03C0,0x07C0,0x07C0,0x07C0,0x7FFF,0x7FFF,0x07C0,0x07C0,0x07C0,0x07C0,0x07C0,0x07C0,0x07C0,0x07C0,0x07C0,0x07C0,0x07C0,0x07C0,0x07C0,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [f] +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x07EF,0x1FFF,0x3E7F,0x3C1F,0x7C1F,0x7C1F,0x781F,0x781F,0x781F,0x7C1F,0x7C1F,0x3C3F,0x3E7F,0x1FFF,0x0FDF,0x001E,0x001E,0x001E,0x387C,0x3FF8, // Ascii = [g] +0x3C00,0x3C00,0x3C00,0x3C00,0x3C00,0x3C00,0x3DFC,0x3FFE,0x3F9E,0x3F1F,0x3E1F,0x3C1F,0x3C1F,0x3C1F,0x3C1F,0x3C1F,0x3C1F,0x3C1F,0x3C1F,0x3C1F,0x3C1F,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [h] +0x01F0,0x01F0,0x0000,0x0000,0x0000,0x0000,0x7FE0,0x7FE0,0x01E0,0x01E0,0x01E0,0x01E0,0x01E0,0x01E0,0x01E0,0x01E0,0x01E0,0x01E0,0x01E0,0x01E0,0x01E0,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [i] +0x00F8,0x00F8,0x0000,0x0000,0x0000,0x0000,0x3FF8,0x3FF8,0x00F8,0x00F8,0x00F8,0x00F8,0x00F8,0x00F8,0x00F8,0x00F8,0x00F8,0x00F8,0x00F8,0x00F8,0x00F8,0x00F8,0x00F8,0x00F0,0x71F0,0x7FE0, // Ascii = [j] +0x3C00,0x3C00,0x3C00,0x3C00,0x3C00,0x3C00,0x3C1F,0x3C3E,0x3C7C,0x3CF8,0x3DF0,0x3DE0,0x3FC0,0x3FC0,0x3FE0,0x3DF0,0x3CF8,0x3C7C,0x3C3E,0x3C1F,0x3C1F,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [k] +0x7FF0,0x01F0,0x01F0,0x01F0,0x01F0,0x01F0,0x01F0,0x01F0,0x01F0,0x01F0,0x01F0,0x01F0,0x01F0,0x01F0,0x01F0,0x01F0,0x01F0,0x01F0,0x01F0,0x01F0,0x01F0,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [l] +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xF79E,0xFFFF,0xFFFF,0xFFFF,0xFBE7,0xF9E7,0xF1C7,0xF1C7,0xF1C7,0xF1C7,0xF1C7,0xF1C7,0xF1C7,0xF1C7,0xF1C7,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [m] +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3DFC,0x3FFE,0x3F9E,0x3F1F,0x3E1F,0x3C1F,0x3C1F,0x3C1F,0x3C1F,0x3C1F,0x3C1F,0x3C1F,0x3C1F,0x3C1F,0x3C1F,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [n] +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x07F0,0x1FFC,0x3E3E,0x3C1F,0x7C1F,0x780F,0x780F,0x780F,0x780F,0x780F,0x7C1F,0x3C1F,0x3E3E,0x1FFC,0x07F0,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [o] +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3DF8,0x3FFE,0x3F3E,0x3E1F,0x3C0F,0x3C0F,0x3C0F,0x3C0F,0x3C0F,0x3C0F,0x3C1F,0x3E1E,0x3F3E,0x3FFC,0x3FF8,0x3C00,0x3C00,0x3C00,0x3C00,0x3C00, // Ascii = [p] +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x07EE,0x1FFE,0x3E7E,0x3C1E,0x7C1E,0x781E,0x781E,0x781E,0x781E,0x781E,0x7C1E,0x7C3E,0x3E7E,0x1FFE,0x0FDE,0x001E,0x001E,0x001E,0x001E,0x001E, // Ascii = [q] +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1F7F,0x1FFF,0x1FE7,0x1FC7,0x1F87,0x1F00,0x1F00,0x1F00,0x1F00,0x1F00,0x1F00,0x1F00,0x1F00,0x1F00,0x1F00,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [r] +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x07FC,0x1FFE,0x1E0E,0x3E00,0x3E00,0x3F00,0x1FE0,0x07FC,0x00FE,0x003E,0x001E,0x001E,0x3C3E,0x3FFC,0x1FF0,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [s] +0x0000,0x0000,0x0000,0x0780,0x0780,0x0780,0x7FFF,0x7FFF,0x0780,0x0780,0x0780,0x0780,0x0780,0x0780,0x0780,0x0780,0x0780,0x0780,0x07C0,0x03FF,0x01FF,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [t] +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3C1E,0x3C1E,0x3C1E,0x3C1E,0x3C1E,0x3C1E,0x3C1E,0x3C1E,0x3C1E,0x3C1E,0x3C3E,0x3C7E,0x3EFE,0x1FFE,0x0FDE,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [u] +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xF007,0x780F,0x780F,0x3C1E,0x3C1E,0x3E1E,0x1E3C,0x1E3C,0x0F78,0x0F78,0x0FF0,0x07F0,0x07F0,0x03E0,0x03E0,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [v] +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xF003,0xF1E3,0xF3E3,0xF3E7,0xF3F7,0xF3F7,0x7FF7,0x7F77,0x7F7F,0x7F7F,0x7F7F,0x3E3E,0x3E3E,0x3E3E,0x3E3E,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [w] +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7C0F,0x3E1E,0x3E3C,0x1F3C,0x0FF8,0x07F0,0x07F0,0x03E0,0x07F0,0x07F8,0x0FF8,0x1E7C,0x3E3E,0x3C1F,0x781F,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [x] +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xF807,0x780F,0x7C0F,0x3C1E,0x3C1E,0x1E3C,0x1E3C,0x1F3C,0x0F78,0x0FF8,0x07F0,0x07F0,0x03E0,0x03E0,0x03C0,0x03C0,0x03C0,0x0780,0x0F80,0x7F00, // Ascii = [y] +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3FFF,0x3FFF,0x001F,0x003E,0x007C,0x00F8,0x01F0,0x03E0,0x07C0,0x0F80,0x1F00,0x1E00,0x3C00,0x7FFF,0x7FFF,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [z] +0x01FE,0x03E0,0x03C0,0x03C0,0x03C0,0x03C0,0x01E0,0x01E0,0x01E0,0x01C0,0x03C0,0x3F80,0x3F80,0x03C0,0x01C0,0x01E0,0x01E0,0x01E0,0x03C0,0x03C0,0x03C0,0x03C0,0x03E0,0x01FE,0x007E,0x0000, // Ascii = [{] +0x01C0,0x01C0,0x01C0,0x01C0,0x01C0,0x01C0,0x01C0,0x01C0,0x01C0,0x01C0,0x01C0,0x01C0,0x01C0,0x01C0,0x01C0,0x01C0,0x01C0,0x01C0,0x01C0,0x01C0,0x01C0,0x01C0,0x01C0,0x01C0,0x01C0,0x0000, // Ascii = [|] +0x3FC0,0x03E0,0x01E0,0x01E0,0x01E0,0x01E0,0x01C0,0x03C0,0x03C0,0x01C0,0x01E0,0x00FE,0x00FE,0x01E0,0x01C0,0x03C0,0x03C0,0x01C0,0x01E0,0x01E0,0x01E0,0x01E0,0x03E0,0x3FC0,0x3F00,0x0000, // Ascii = [}] +0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3F07,0x7FC7,0x73E7,0xF1FF,0xF07E,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, // Ascii = [~] +}; +#endif +#ifdef SSD1306_INCLUDE_FONT_6x8 +static const uint16_t Font6x8 [] = { +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // sp +0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x0000, 0x2000, 0x0000, // ! +0x5000, 0x5000, 0x5000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // " +0x5000, 0x5000, 0xf800, 0x5000, 0xf800, 0x5000, 0x5000, 0x0000, // # +0x2000, 0x7800, 0xa000, 0x7000, 0x2800, 0xf000, 0x2000, 0x0000, // $ +0xc000, 0xc800, 0x1000, 0x2000, 0x4000, 0x9800, 0x1800, 0x0000, // % +0x4000, 0xa000, 0xa000, 0x4000, 0xa800, 0x9000, 0x6800, 0x0000, // & +0x3000, 0x3000, 0x2000, 0x4000, 0x0000, 0x0000, 0x0000, 0x0000, // ' +0x1000, 0x2000, 0x4000, 0x4000, 0x4000, 0x2000, 0x1000, 0x0000, // ( +0x4000, 0x2000, 0x1000, 0x1000, 0x1000, 0x2000, 0x4000, 0x0000, // ) +0x2000, 0xa800, 0x7000, 0xf800, 0x7000, 0xa800, 0x2000, 0x0000, // * +0x0000, 0x2000, 0x2000, 0xf800, 0x2000, 0x2000, 0x0000, 0x0000, // + +0x0000, 0x0000, 0x0000, 0x0000, 0x3000, 0x3000, 0x2000, 0x0000, // , +0x0000, 0x0000, 0x0000, 0xf800, 0x0000, 0x0000, 0x0000, 0x0000, // - +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3000, 0x3000, 0x0000, // . +0x0000, 0x0800, 0x1000, 0x2000, 0x4000, 0x8000, 0x0000, 0x0000, // / +0x7000, 0x8800, 0x9800, 0xa800, 0xc800, 0x8800, 0x7000, 0x0000, // 0 +0x2000, 0x6000, 0x2000, 0x2000, 0x2000, 0x2000, 0x7000, 0x0000, // 1 +0x7000, 0x8800, 0x0800, 0x7000, 0x8000, 0x8000, 0xf800, 0x0000, // 2 +0xf800, 0x0800, 0x1000, 0x3000, 0x0800, 0x8800, 0x7000, 0x0000, // 3 +0x1000, 0x3000, 0x5000, 0x9000, 0xf800, 0x1000, 0x1000, 0x0000, // 4 +0xf800, 0x8000, 0xf000, 0x0800, 0x0800, 0x8800, 0x7000, 0x0000, // 5 +0x3800, 0x4000, 0x8000, 0xf000, 0x8800, 0x8800, 0x7000, 0x0000, // 6 +0xf800, 0x0800, 0x0800, 0x1000, 0x2000, 0x4000, 0x8000, 0x0000, // 7 +0x7000, 0x8800, 0x8800, 0x7000, 0x8800, 0x8800, 0x7000, 0x0000, // 8 +0x7000, 0x8800, 0x8800, 0x7800, 0x0800, 0x1000, 0xe000, 0x0000, // 9 +0x0000, 0x0000, 0x2000, 0x0000, 0x2000, 0x0000, 0x0000, 0x0000, // : +0x0000, 0x0000, 0x2000, 0x0000, 0x2000, 0x2000, 0x4000, 0x0000, // ; +0x0800, 0x1000, 0x2000, 0x4000, 0x2000, 0x1000, 0x0800, 0x0000, // < +0x0000, 0x0000, 0xf800, 0x0000, 0xf800, 0x0000, 0x0000, 0x0000, // = +0x4000, 0x2000, 0x1000, 0x0800, 0x1000, 0x2000, 0x4000, 0x0000, // > +0x7000, 0x8800, 0x0800, 0x3000, 0x2000, 0x0000, 0x2000, 0x0000, // ? +0x7000, 0x8800, 0xa800, 0xb800, 0xb000, 0x8000, 0x7800, 0x0000, // @ +0x2000, 0x5000, 0x8800, 0x8800, 0xf800, 0x8800, 0x8800, 0x0000, // A +0xf000, 0x8800, 0x8800, 0xf000, 0x8800, 0x8800, 0xf000, 0x0000, // B +0x7000, 0x8800, 0x8000, 0x8000, 0x8000, 0x8800, 0x7000, 0x0000, // C +0xf000, 0x8800, 0x8800, 0x8800, 0x8800, 0x8800, 0xf000, 0x0000, // D +0xf800, 0x8000, 0x8000, 0xf000, 0x8000, 0x8000, 0xf800, 0x0000, // E +0xf800, 0x8000, 0x8000, 0xf000, 0x8000, 0x8000, 0x8000, 0x0000, // F +0x7800, 0x8800, 0x8000, 0x8000, 0x9800, 0x8800, 0x7800, 0x0000, // G +0x8800, 0x8800, 0x8800, 0xf800, 0x8800, 0x8800, 0x8800, 0x0000, // H +0x7000, 0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x7000, 0x0000, // I +0x3800, 0x1000, 0x1000, 0x1000, 0x1000, 0x9000, 0x6000, 0x0000, // J +0x8800, 0x9000, 0xa000, 0xc000, 0xa000, 0x9000, 0x8800, 0x0000, // K +0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0xf800, 0x0000, // L +0x8800, 0xd800, 0xa800, 0xa800, 0xa800, 0x8800, 0x8800, 0x0000, // M +0x8800, 0x8800, 0xc800, 0xa800, 0x9800, 0x8800, 0x8800, 0x0000, // N +0x7000, 0x8800, 0x8800, 0x8800, 0x8800, 0x8800, 0x7000, 0x0000, // O +0xf000, 0x8800, 0x8800, 0xf000, 0x8000, 0x8000, 0x8000, 0x0000, // P +0x7000, 0x8800, 0x8800, 0x8800, 0xa800, 0x9000, 0x6800, 0x0000, // Q +0xf000, 0x8800, 0x8800, 0xf000, 0xa000, 0x9000, 0x8800, 0x0000, // R +0x7000, 0x8800, 0x8000, 0x7000, 0x0800, 0x8800, 0x7000, 0x0000, // S +0xf800, 0xa800, 0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x0000, // T +0x8800, 0x8800, 0x8800, 0x8800, 0x8800, 0x8800, 0x7000, 0x0000, // U +0x8800, 0x8800, 0x8800, 0x8800, 0x8800, 0x5000, 0x2000, 0x0000, // V +0x8800, 0x8800, 0x8800, 0xa800, 0xa800, 0xa800, 0x5000, 0x0000, // W +0x8800, 0x8800, 0x5000, 0x2000, 0x5000, 0x8800, 0x8800, 0x0000, // X +0x8800, 0x8800, 0x5000, 0x2000, 0x2000, 0x2000, 0x2000, 0x0000, // Y +0xf800, 0x0800, 0x1000, 0x7000, 0x4000, 0x8000, 0xf800, 0x0000, // Z +0x7800, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x7800, 0x0000, // [ +0x0000, 0x8000, 0x4000, 0x2000, 0x1000, 0x0800, 0x0000, 0x0000, /* \ */ +0x7800, 0x0800, 0x0800, 0x0800, 0x0800, 0x0800, 0x7800, 0x0000, // ] +0x2000, 0x5000, 0x8800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // ^ +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf800, 0x0000, // _ +0x6000, 0x6000, 0x2000, 0x1000, 0x0000, 0x0000, 0x0000, 0x0000, // ` +0x0000, 0x0000, 0x6000, 0x1000, 0x7000, 0x9000, 0x7800, 0x0000, // a +0x8000, 0x8000, 0xb000, 0xc800, 0x8800, 0xc800, 0xb000, 0x0000, // b +0x0000, 0x0000, 0x7000, 0x8800, 0x8000, 0x8800, 0x7000, 0x0000, // c +0x0800, 0x0800, 0x6800, 0x9800, 0x8800, 0x9800, 0x6800, 0x0000, // d +0x0000, 0x0000, 0x7000, 0x8800, 0xf800, 0x8000, 0x7000, 0x0000, // e +0x1000, 0x2800, 0x2000, 0x7000, 0x2000, 0x2000, 0x2000, 0x0000, // f +0x0000, 0x0000, 0x7000, 0x9800, 0x9800, 0x6800, 0x0800, 0x0000, // g +0x8000, 0x8000, 0xb000, 0xc800, 0x8800, 0x8800, 0x8800, 0x0000, // h +0x2000, 0x0000, 0x6000, 0x2000, 0x2000, 0x2000, 0x7000, 0x0000, // i +0x1000, 0x0000, 0x1000, 0x1000, 0x1000, 0x9000, 0x6000, 0x0000, // j +0x8000, 0x8000, 0x9000, 0xa000, 0xc000, 0xa000, 0x9000, 0x0000, // k +0x6000, 0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x7000, 0x0000, // l +0x0000, 0x0000, 0xd000, 0xa800, 0xa800, 0xa800, 0xa800, 0x0000, // m +0x0000, 0x0000, 0xb000, 0xc800, 0x8800, 0x8800, 0x8800, 0x0000, // n +0x0000, 0x0000, 0x7000, 0x8800, 0x8800, 0x8800, 0x7000, 0x0000, // o +0x0000, 0x0000, 0xb000, 0xc800, 0xc800, 0xb000, 0x8000, 0x0000, // p +0x0000, 0x0000, 0x6800, 0x9800, 0x9800, 0x6800, 0x0800, 0x0000, // q +0x0000, 0x0000, 0xb000, 0xc800, 0x8000, 0x8000, 0x8000, 0x0000, // r +0x0000, 0x0000, 0x7800, 0x8000, 0x7000, 0x0800, 0xf000, 0x0000, // s +0x2000, 0x2000, 0xf800, 0x2000, 0x2000, 0x2800, 0x1000, 0x0000, // t +0x0000, 0x0000, 0x8800, 0x8800, 0x8800, 0x9800, 0x6800, 0x0000, // u +0x0000, 0x0000, 0x8800, 0x8800, 0x8800, 0x5000, 0x2000, 0x0000, // v +0x0000, 0x0000, 0x8800, 0x8800, 0xa800, 0xa800, 0x5000, 0x0000, // w +0x0000, 0x0000, 0x8800, 0x5000, 0x2000, 0x5000, 0x8800, 0x0000, // x +0x0000, 0x0000, 0x8800, 0x8800, 0x7800, 0x0800, 0x8800, 0x0000, // y +0x0000, 0x0000, 0xf800, 0x1000, 0x2000, 0x4000, 0xf800, 0x0000, // z +0x1000, 0x2000, 0x2000, 0x4000, 0x2000, 0x2000, 0x1000, 0x0000, // { +0x2000, 0x2000, 0x2000, 0x0000, 0x2000, 0x2000, 0x2000, 0x0000, // | +0x4000, 0x2000, 0x2000, 0x1000, 0x2000, 0x2000, 0x4000, 0x0000, // } +0x4000, 0xa800, 0x1000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // ~ +}; +#endif + +#ifdef SSD1306_INCLUDE_FONT_6x8 +FontDef Font_6x8 = {6,8,Font6x8}; +#endif +#ifdef SSD1306_INCLUDE_FONT_7x10 +FontDef Font_7x10 = {7,10,Font7x10}; +#endif +#ifdef SSD1306_INCLUDE_FONT_11x18 +FontDef Font_11x18 = {11,18,Font11x18}; +#endif +#ifdef SSD1306_INCLUDE_FONT_16x26 +FontDef Font_16x26 = {16,26,Font16x26}; +#endif diff --git a/firmware/Drivers/oled/ssd1306_fonts.h b/firmware/Drivers/oled/ssd1306_fonts.h new file mode 100644 index 0000000..5354334 --- /dev/null +++ b/firmware/Drivers/oled/ssd1306_fonts.h @@ -0,0 +1,26 @@ +#include + +#ifndef __SSD1306_FONTS_H__ +#define __SSD1306_FONTS_H__ + +#include "ssd1306_conf.h" + +typedef struct { + const uint8_t FontWidth; /*!< Font width in pixels */ + uint8_t FontHeight; /*!< Font height in pixels */ + const uint16_t *data; /*!< Pointer to data font data array */ +} FontDef; + +#ifdef SSD1306_INCLUDE_FONT_6x8 +extern FontDef Font_6x8; +#endif +#ifdef SSD1306_INCLUDE_FONT_7x10 +extern FontDef Font_7x10; +#endif +#ifdef SSD1306_INCLUDE_FONT_11x18 +extern FontDef Font_11x18; +#endif +#ifdef SSD1306_INCLUDE_FONT_16x26 +extern FontDef Font_16x26; +#endif +#endif // __SSD1306_FONTS_H__ diff --git a/firmware/FilaDry2.ioc b/firmware/FilaDry2.ioc new file mode 100644 index 0000000..398a43a --- /dev/null +++ b/firmware/FilaDry2.ioc @@ -0,0 +1,215 @@ +#MicroXplorer Configuration settings - do not modify +FREERTOS.FootprintOK=true +FREERTOS.IPParameters=Tasks01,FootprintOK,Queues01,Timers01,configUSE_NEWLIB_REENTRANT +FREERTOS.Queues01=qKeysPressed,16,uint8_t,0,Dynamic,NULL,NULL;qDisplay,16,uint8_t,0,Dynamic,NULL,NULL +FREERTOS.Tasks01=defaultTask,24,128,StartDefaultTask,Default,NULL,Dynamic,NULL,NULL;svcDisplay,8,128,svc_display,Default,NULL,Dynamic,NULL,NULL;svcSensors,8,128,svc_sensors,Default,NULL,Dynamic,NULL,NULL;svcKeys,8,128,svc_keys,Default,NULL,Dynamic,NULL,NULL +FREERTOS.Timers01=timeCounter,clock_tick,osTimerPeriodic,Default,NULL,Dynamic,NULL +FREERTOS.configUSE_NEWLIB_REENTRANT=1 +File.Version=6 +GPIO.groupedBy=Group By Peripherals +I2C1.IPParameters=Timing +I2C1.Timing=0x10707DBC +I2C2.IPParameters=Timing +I2C2.Timing=0x10707DBC +KeepUserPlacement=false +Mcu.CPN=STM32G070RBT6 +Mcu.Family=STM32G0 +Mcu.IP0=FREERTOS +Mcu.IP1=I2C1 +Mcu.IP2=I2C2 +Mcu.IP3=NVIC +Mcu.IP4=RCC +Mcu.IP5=SYS +Mcu.IP6=TIM3 +Mcu.IP7=TIM17 +Mcu.IPNb=8 +Mcu.Name=STM32G070RBTx +Mcu.Package=LQFP64 +Mcu.Pin0=PF0-OSC_IN (PF0) +Mcu.Pin1=PF1-OSC_OUT (PF1) +Mcu.Pin10=PD2 +Mcu.Pin11=PB4 +Mcu.Pin12=PB5 +Mcu.Pin13=PB8 +Mcu.Pin14=PB9 +Mcu.Pin15=VP_FREERTOS_VS_CMSIS_V2 +Mcu.Pin16=VP_SYS_VS_tim6 +Mcu.Pin17=VP_SYS_VS_DBSignals +Mcu.Pin18=VP_TIM3_VS_ControllerModeTrigger +Mcu.Pin19=VP_TIM3_VS_OPM +Mcu.Pin2=PA7 +Mcu.Pin20=VP_TIM17_VS_ClockSourceINT +Mcu.Pin3=PB0 +Mcu.Pin4=PB1 +Mcu.Pin5=PB2 +Mcu.Pin6=PB10 +Mcu.Pin7=PB11 +Mcu.Pin8=PA13 +Mcu.Pin9=PA14-BOOT0 +Mcu.PinsNb=21 +Mcu.ThirdPartyNb=0 +Mcu.UserConstants= +Mcu.UserName=STM32G070RBTx +MxCube.Version=6.6.1 +MxDb.Version=DB.6.0.60 +NVIC.ForceEnableDMAVector=true +NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false\:false +NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false\:false +NVIC.PendSV_IRQn=true\:3\:0\:false\:false\:false\:true\:false\:false\:false +NVIC.SVC_IRQn=true\:0\:0\:false\:false\:false\:false\:false\:false\:true +NVIC.SavedPendsvIrqHandlerGenerated=true +NVIC.SavedSvcallIrqHandlerGenerated=true +NVIC.SavedSystickIrqHandlerGenerated=true +NVIC.SysTick_IRQn=true\:3\:0\:false\:false\:false\:true\:false\:true\:false +NVIC.TIM6_IRQn=true\:3\:0\:false\:false\:true\:false\:false\:true\:true +NVIC.TimeBase=TIM6_IRQn +NVIC.TimeBaseIP=TIM6 +PA13.Mode=Serial_Wire +PA13.Signal=SYS_SWDIO +PA14-BOOT0.Mode=Serial_Wire +PA14-BOOT0.Signal=SYS_SWCLK +PA7.GPIOParameters=GPIO_Label +PA7.GPIO_Label=TIM17_BUZZER +PA7.Signal=S_TIM17_CH1 +PB0.GPIOParameters=GPIO_PuPd,GPIO_Label +PB0.GPIO_Label=KEY_DN +PB0.GPIO_PuPd=GPIO_PULLUP +PB0.Locked=true +PB0.Signal=GPIO_Input +PB1.GPIOParameters=GPIO_PuPd,GPIO_Label +PB1.GPIO_Label=KEY_OK +PB1.GPIO_PuPd=GPIO_PULLUP +PB1.Locked=true +PB1.Signal=GPIO_Input +PB10.GPIOParameters=GPIO_Label +PB10.GPIO_Label=I2C2_SCL_OLED +PB10.Mode=I2C +PB10.Signal=I2C2_SCL +PB11.GPIOParameters=GPIO_Label +PB11.GPIO_Label=I2C2_SDA_OLED +PB11.Mode=I2C +PB11.Signal=I2C2_SDA +PB2.GPIOParameters=GPIO_PuPd,GPIO_Label +PB2.GPIO_Label=KEY_UP +PB2.GPIO_PuPd=GPIO_PULLUP +PB2.Locked=true +PB2.Signal=GPIO_Input +PB4.GPIOParameters=GPIO_Label +PB4.GPIO_Label=TIM3_Heater +PB4.Locked=true +PB4.Signal=S_TIM3_CH1 +PB5.GPIOParameters=GPIO_Label +PB5.GPIO_Label=TIM3_Fan +PB5.Locked=true +PB5.Signal=S_TIM3_CH2 +PB8.GPIOParameters=GPIO_Label +PB8.GPIO_Label=I2C1_SCL_BME +PB8.Locked=true +PB8.Mode=I2C +PB8.Signal=I2C1_SCL +PB9.GPIOParameters=GPIO_Label +PB9.GPIO_Label=I2C1_SDA_BME +PB9.Locked=true +PB9.Mode=I2C +PB9.Signal=I2C1_SDA +PD2.GPIOParameters=GPIO_Label +PD2.GPIO_Label=TIM3_ZeroCross +PD2.Signal=S_TIM3_ETR +PF0-OSC_IN\ (PF0).Mode=HSE-External-Oscillator +PF0-OSC_IN\ (PF0).Signal=RCC_OSC_IN +PF1-OSC_OUT\ (PF1).Mode=HSE-External-Oscillator +PF1-OSC_OUT\ (PF1).Signal=RCC_OSC_OUT +PinOutPanel.RotationAngle=0 +ProjectManager.AskForMigrate=true +ProjectManager.BackupPrevious=false +ProjectManager.CompilerOptimize=6 +ProjectManager.ComputerToolchain=false +ProjectManager.CoupleFile=true +ProjectManager.CustomerFirmwarePackage= +ProjectManager.DefaultFWLocation=true +ProjectManager.DeletePrevious=true +ProjectManager.DeviceId=STM32G070RBTx +ProjectManager.FirmwarePackage=STM32Cube FW_G0 V1.6.1 +ProjectManager.FreePins=false +ProjectManager.HalAssertFull=false +ProjectManager.HeapSize=0x200 +ProjectManager.KeepUserCode=true +ProjectManager.LastFirmware=true +ProjectManager.LibraryCopy=1 +ProjectManager.MainLocation=Core/Src +ProjectManager.NoMain=false +ProjectManager.PreviousToolchain= +ProjectManager.ProjectBuild=false +ProjectManager.ProjectFileName=FilaDry2.ioc +ProjectManager.ProjectName=FilaDry2 +ProjectManager.RegisterCallBack= +ProjectManager.StackSize=0x400 +ProjectManager.TargetToolchain=STM32CubeIDE +ProjectManager.ToolChainLocation= +ProjectManager.UnderRoot=true +ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_I2C1_Init-I2C1-false-HAL-true,4-MX_I2C2_Init-I2C2-false-HAL-true,5-MX_TIM3_Init-TIM3-false-HAL-true,6-MX_TIM17_Init-TIM17-false-HAL-true +RCC.ADCFreq_Value=64000000 +RCC.AHBFreq_Value=64000000 +RCC.APBFreq_Value=64000000 +RCC.APBTimFreq_Value=64000000 +RCC.CortexFreq_Value=64000000 +RCC.EXTERNAL_CLOCK_VALUE=48000 +RCC.FCLKCortexFreq_Value=64000000 +RCC.FamilyName=M +RCC.HCLKFreq_Value=64000000 +RCC.HSE_VALUE=16000000 +RCC.HSI_VALUE=16000000 +RCC.I2C1Freq_Value=64000000 +RCC.I2S1Freq_Value=64000000 +RCC.IPParameters=ADCFreq_Value,AHBFreq_Value,APBFreq_Value,APBTimFreq_Value,CortexFreq_Value,EXTERNAL_CLOCK_VALUE,FCLKCortexFreq_Value,FamilyName,HCLKFreq_Value,HSE_VALUE,HSI_VALUE,I2C1Freq_Value,I2S1Freq_Value,LSCOPinFreq_Value,LSE_VALUE,LSI_VALUE,MCO1PinFreq_Value,PLLPoutputFreq_Value,PLLRCLKFreq_Value,PWRFreq_Value,SYSCLKFreq_VALUE,SYSCLKSource,USART1Freq_Value,USART2Freq_Value,VCOInputFreq_Value,VCOOutputFreq_Value +RCC.LSCOPinFreq_Value=32000 +RCC.LSE_VALUE=32768 +RCC.LSI_VALUE=32000 +RCC.MCO1PinFreq_Value=64000000 +RCC.PLLPoutputFreq_Value=64000000 +RCC.PLLRCLKFreq_Value=64000000 +RCC.PWRFreq_Value=64000000 +RCC.SYSCLKFreq_VALUE=64000000 +RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK +RCC.USART1Freq_Value=64000000 +RCC.USART2Freq_Value=64000000 +RCC.VCOInputFreq_Value=16000000 +RCC.VCOOutputFreq_Value=128000000 +SH.S_TIM17_CH1.0=TIM17_CH1,PWM Generation1 CH1 +SH.S_TIM17_CH1.ConfNb=1 +SH.S_TIM3_CH1.0=TIM3_CH1,PWM Generation1 CH1 +SH.S_TIM3_CH1.ConfNb=1 +SH.S_TIM3_CH2.0=TIM3_CH2,PWM Generation2 CH2 +SH.S_TIM3_CH2.ConfNb=1 +SH.S_TIM3_ETR.0=TIM3_ETR,TriggerSource_ETR +SH.S_TIM3_ETR.ConfNb=1 +TIM17.Channel=TIM_CHANNEL_1 +TIM17.IPParameters=Channel,Prescaler,Period,OCMode_PWM +TIM17.OCMode_PWM=TIM_OCMODE_PWM2 +TIM17.Period=20000 +TIM17.Prescaler=3199 +TIM3.AutoReloadPreload=TIM_AUTORELOAD_PRELOAD_ENABLE +TIM3.Channel-PWM\ Generation1\ CH1=TIM_CHANNEL_1 +TIM3.Channel-PWM\ Generation2\ CH2=TIM_CHANNEL_2 +TIM3.CounterMode=TIM_COUNTERMODE_DOWN +TIM3.IPParameters=Channel-PWM Generation1 CH1,Channel-PWM Generation2 CH2,Prescaler,Period,OCMode_PWM-PWM Generation1 CH1,OCMode_PWM-PWM Generation2 CH2,Pulse-PWM Generation1 CH1,Pulse-PWM Generation2 CH2,CounterMode,AutoReloadPreload +TIM3.OCMode_PWM-PWM\ Generation1\ CH1=TIM_OCMODE_PWM2 +TIM3.OCMode_PWM-PWM\ Generation2\ CH2=TIM_OCMODE_PWM2 +TIM3.Period=1000 +TIM3.Prescaler=639 +TIM3.Pulse-PWM\ Generation1\ CH1=500 +TIM3.Pulse-PWM\ Generation2\ CH2=500 +VP_FREERTOS_VS_CMSIS_V2.Mode=CMSIS_V2 +VP_FREERTOS_VS_CMSIS_V2.Signal=FREERTOS_VS_CMSIS_V2 +VP_SYS_VS_DBSignals.Mode=DisableDeadBatterySignals +VP_SYS_VS_DBSignals.Signal=SYS_VS_DBSignals +VP_SYS_VS_tim6.Mode=TIM6 +VP_SYS_VS_tim6.Signal=SYS_VS_tim6 +VP_TIM17_VS_ClockSourceINT.Mode=Enable_Timer +VP_TIM17_VS_ClockSourceINT.Signal=TIM17_VS_ClockSourceINT +VP_TIM3_VS_ControllerModeTrigger.Mode=Trigger Mode +VP_TIM3_VS_ControllerModeTrigger.Signal=TIM3_VS_ControllerModeTrigger +VP_TIM3_VS_OPM.Mode=OPM_bit +VP_TIM3_VS_OPM.Signal=TIM3_VS_OPM +board=custom +isbadioc=false diff --git a/firmware/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os.h b/firmware/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os.h new file mode 100644 index 0000000..711408a --- /dev/null +++ b/firmware/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os.h @@ -0,0 +1,846 @@ +/* + * Copyright (c) 2013-2019 ARM Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * ---------------------------------------------------------------------- + * + * $Date: 10. January 2017 + * $Revision: V2.1.0 + * + * Project: CMSIS-RTOS API + * Title: cmsis_os.h FreeRTOS header file + * + * Version 0.02 + * Initial Proposal Phase + * Version 0.03 + * osKernelStart added, optional feature: main started as thread + * osSemaphores have standard behavior + * osTimerCreate does not start the timer, added osTimerStart + * osThreadPass is renamed to osThreadYield + * Version 1.01 + * Support for C++ interface + * - const attribute removed from the osXxxxDef_t typedefs + * - const attribute added to the osXxxxDef macros + * Added: osTimerDelete, osMutexDelete, osSemaphoreDelete + * Added: osKernelInitialize + * Version 1.02 + * Control functions for short timeouts in microsecond resolution: + * Added: osKernelSysTick, osKernelSysTickFrequency, osKernelSysTickMicroSec + * Removed: osSignalGet + * Version 2.0.0 + * OS objects creation without macros (dynamic creation and resource allocation): + * - added: osXxxxNew functions which replace osXxxxCreate + * - added: osXxxxAttr_t structures + * - deprecated: osXxxxCreate functions, osXxxxDef_t structures + * - deprecated: osXxxxDef and osXxxx macros + * osStatus codes simplified and renamed to osStatus_t + * osEvent return structure deprecated + * Kernel: + * - added: osKernelInfo_t and osKernelGetInfo + * - added: osKernelState_t and osKernelGetState (replaces osKernelRunning) + * - added: osKernelLock, osKernelUnlock + * - added: osKernelSuspend, osKernelResume + * - added: osKernelGetTickCount, osKernelGetTickFreq + * - renamed osKernelSysTick to osKernelGetSysTimerCount + * - replaced osKernelSysTickFrequency with osKernelGetSysTimerFreq + * - deprecated osKernelSysTickMicroSec + * Thread: + * - extended number of thread priorities + * - renamed osPrioriry to osPrioriry_t + * - replaced osThreadCreate with osThreadNew + * - added: osThreadGetName + * - added: osThreadState_t and osThreadGetState + * - added: osThreadGetStackSize, osThreadGetStackSpace + * - added: osThreadSuspend, osThreadResume + * - added: osThreadJoin, osThreadDetach, osThreadExit + * - added: osThreadGetCount, osThreadEnumerate + * - added: Thread Flags (moved from Signals) + * Signals: + * - renamed osSignals to osThreadFlags (moved to Thread Flags) + * - changed return value of Set/Clear/Wait functions + * - Clear function limited to current running thread + * - extended Wait function (options) + * - added: osThreadFlagsGet + * Event Flags: + * - added new independent object for handling Event Flags + * Delay and Wait functions: + * - added: osDelayUntil + * - deprecated: osWait + * Timer: + * - replaced osTimerCreate with osTimerNew + * - added: osTimerGetName, osTimerIsRunning + * Mutex: + * - extended: attributes (Recursive, Priority Inherit, Robust) + * - replaced osMutexCreate with osMutexNew + * - renamed osMutexWait to osMutexAcquire + * - added: osMutexGetName, osMutexGetOwner + * Semaphore: + * - extended: maximum and initial token count + * - replaced osSemaphoreCreate with osSemaphoreNew + * - renamed osSemaphoreWait to osSemaphoreAcquire (changed return value) + * - added: osSemaphoreGetName, osSemaphoreGetCount + * Memory Pool: + * - using osMemoryPool prefix instead of osPool + * - replaced osPoolCreate with osMemoryPoolNew + * - extended osMemoryPoolAlloc (timeout) + * - added: osMemoryPoolGetName + * - added: osMemoryPoolGetCapacity, osMemoryPoolGetBlockSize + * - added: osMemoryPoolGetCount, osMemoryPoolGetSpace + * - added: osMemoryPoolDelete + * - deprecated: osPoolCAlloc + * Message Queue: + * - extended: fixed size message instead of a single 32-bit value + * - using osMessageQueue prefix instead of osMessage + * - replaced osMessageCreate with osMessageQueueNew + * - updated: osMessageQueuePut, osMessageQueueGet + * - added: osMessageQueueGetName + * - added: osMessageQueueGetCapacity, osMessageQueueGetMsgSize + * - added: osMessageQueueGetCount, osMessageQueueGetSpace + * - added: osMessageQueueReset, osMessageQueueDelete + * Mail Queue: + * - deprecated (superseded by extended Message Queue functionality) + * Version 2.1.0 + * Support for critical and uncritical sections (nesting safe): + * - updated: osKernelLock, osKernelUnlock + * - added: osKernelRestoreLock + * Updated Thread and Event Flags: + * - changed flags parameter and return type from int32_t to uint32_t + *---------------------------------------------------------------------------*/ + +#ifndef CMSIS_OS_H_ +#define CMSIS_OS_H_ + +#include "FreeRTOS.h" +#include "task.h" + +#define RTOS_ID_n ((tskKERNEL_VERSION_MAJOR << 16) | (tskKERNEL_VERSION_MINOR)) +#define RTOS_ID_s ("FreeRTOS " tskKERNEL_VERSION_NUMBER) + +#define osCMSIS 0x20001U ///< API version (main[31:16].sub[15:0]) + +#define osCMSIS_FreeRTOS RTOS_ID_n ///< RTOS identification and version (main[31:16].sub[15:0]) + +#define osKernelSystemId RTOS_ID_s ///< RTOS identification string + +#define osFeature_MainThread 0 ///< main thread 1=main can be thread, 0=not available +#define osFeature_Signals 24U ///< maximum number of Signal Flags available per thread +#define osFeature_Semaphore 65535U ///< maximum count for \ref osSemaphoreCreate function +#define osFeature_Wait 0 ///< osWait function: 1=available, 0=not available +#define osFeature_SysTick 1 ///< osKernelSysTick functions: 1=available, 0=not available +#define osFeature_Pool 0 ///< Memory Pools: 1=available, 0=not available +#define osFeature_MessageQ 1 ///< Message Queues: 1=available, 0=not available +#define osFeature_MailQ 0 ///< Mail Queues: 1=available, 0=not available + +#if defined(__CC_ARM) +#define os_InRegs __value_in_regs +#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) +#define os_InRegs __attribute__((value_in_regs)) +#else +#define os_InRegs +#endif + +#include "cmsis_os2.h" + +#ifdef __cplusplus +extern "C" +{ +#endif + + +// ==== Enumerations, structures, defines ==== + +/// Priority values. +#if (osCMSIS < 0x20000U) +typedef enum { + osPriorityIdle = -3, ///< Priority: idle (lowest) + osPriorityLow = -2, ///< Priority: low + osPriorityBelowNormal = -1, ///< Priority: below normal + osPriorityNormal = 0, ///< Priority: normal (default) + osPriorityAboveNormal = +1, ///< Priority: above normal + osPriorityHigh = +2, ///< Priority: high + osPriorityRealtime = +3, ///< Priority: realtime (highest) + osPriorityError = 0x84, ///< System cannot determine priority or illegal priority. + osPriorityReserved = 0x7FFFFFFF ///< Prevents enum down-size compiler optimization. +} osPriority; +#else +#define osPriority osPriority_t +#endif + +/// Entry point of a thread. +typedef void (*os_pthread) (void const *argument); + +/// Entry point of a timer call back function. +typedef void (*os_ptimer) (void const *argument); + +/// Timer type. +#if (osCMSIS < 0x20000U) +typedef enum { + osTimerOnce = 0, ///< One-shot timer. + osTimerPeriodic = 1 ///< Repeating timer. +} os_timer_type; +#else +#define os_timer_type osTimerType_t +#endif + +/// Timeout value. +#define osWaitForever 0xFFFFFFFFU ///< Wait forever timeout value. + +/// Status code values returned by CMSIS-RTOS functions. +#if (osCMSIS < 0x20000U) +typedef enum { + osOK = 0, ///< Function completed; no error or event occurred. + osEventSignal = 0x08, ///< Function completed; signal event occurred. + osEventMessage = 0x10, ///< Function completed; message event occurred. + osEventMail = 0x20, ///< Function completed; mail event occurred. + osEventTimeout = 0x40, ///< Function completed; timeout occurred. + osErrorParameter = 0x80, ///< Parameter error: a mandatory parameter was missing or specified an incorrect object. + osErrorResource = 0x81, ///< Resource not available: a specified resource was not available. + osErrorTimeoutResource = 0xC1, ///< Resource not available within given time: a specified resource was not available within the timeout period. + osErrorISR = 0x82, ///< Not allowed in ISR context: the function cannot be called from interrupt service routines. + osErrorISRRecursive = 0x83, ///< Function called multiple times from ISR with same object. + osErrorPriority = 0x84, ///< System cannot determine priority or thread has illegal priority. + osErrorNoMemory = 0x85, ///< System is out of memory: it was impossible to allocate or reserve memory for the operation. + osErrorValue = 0x86, ///< Value of a parameter is out of range. + osErrorOS = 0xFF, ///< Unspecified RTOS error: run-time error but no other error message fits. + osStatusReserved = 0x7FFFFFFF ///< Prevents enum down-size compiler optimization. +} osStatus; +#else +typedef int32_t osStatus; +#define osEventSignal (0x08) +#define osEventMessage (0x10) +#define osEventMail (0x20) +#define osEventTimeout (0x40) +#define osErrorOS osError +#define osErrorTimeoutResource osErrorTimeout +#define osErrorISRRecursive (-126) +#define osErrorValue (-127) +#define osErrorPriority (-128) +#endif + + +// >>> the following data type definitions may be adapted towards a specific RTOS + +/// Thread ID identifies the thread. +#if (osCMSIS < 0x20000U) +typedef void *osThreadId; +#else +#define osThreadId osThreadId_t +#endif + +/// Timer ID identifies the timer. +#if (osCMSIS < 0x20000U) +typedef void *osTimerId; +#else +#define osTimerId osTimerId_t +#endif + +/// Mutex ID identifies the mutex. +#if (osCMSIS < 0x20000U) +typedef void *osMutexId; +#else +#define osMutexId osMutexId_t +#endif + +/// Semaphore ID identifies the semaphore. +#if (osCMSIS < 0x20000U) +typedef void *osSemaphoreId; +#else +#define osSemaphoreId osSemaphoreId_t +#endif + +/// Pool ID identifies the memory pool. +typedef void *osPoolId; + +/// Message ID identifies the message queue. +typedef void *osMessageQId; + +/// Mail ID identifies the mail queue. +typedef void *osMailQId; + + +/// Thread Definition structure contains startup information of a thread. +#if (osCMSIS < 0x20000U) +typedef struct os_thread_def { + os_pthread pthread; ///< start address of thread function + osPriority tpriority; ///< initial thread priority + uint32_t instances; ///< maximum number of instances of that thread function + uint32_t stacksize; ///< stack size requirements in bytes; 0 is default stack size +} osThreadDef_t; +#else +typedef struct os_thread_def { + os_pthread pthread; ///< start address of thread function + osThreadAttr_t attr; ///< thread attributes +} osThreadDef_t; +#endif + +/// Timer Definition structure contains timer parameters. +#if (osCMSIS < 0x20000U) +typedef struct os_timer_def { + os_ptimer ptimer; ///< start address of a timer function +} osTimerDef_t; +#else +typedef struct os_timer_def { + os_ptimer ptimer; ///< start address of a timer function + osTimerAttr_t attr; ///< timer attributes +} osTimerDef_t; +#endif + +/// Mutex Definition structure contains setup information for a mutex. +#if (osCMSIS < 0x20000U) +typedef struct os_mutex_def { + uint32_t dummy; ///< dummy value +} osMutexDef_t; +#else +#define osMutexDef_t osMutexAttr_t +#endif + +/// Semaphore Definition structure contains setup information for a semaphore. +#if (osCMSIS < 0x20000U) +typedef struct os_semaphore_def { + uint32_t dummy; ///< dummy value +} osSemaphoreDef_t; +#else +#define osSemaphoreDef_t osSemaphoreAttr_t +#endif + +/// Definition structure for memory block allocation. +#if (osCMSIS < 0x20000U) +typedef struct os_pool_def { + uint32_t pool_sz; ///< number of items (elements) in the pool + uint32_t item_sz; ///< size of an item + void *pool; ///< pointer to memory for pool +} osPoolDef_t; +#else +typedef struct os_pool_def { + uint32_t pool_sz; ///< number of items (elements) in the pool + uint32_t item_sz; ///< size of an item + osMemoryPoolAttr_t attr; ///< memory pool attributes +} osPoolDef_t; +#endif + +/// Definition structure for message queue. +#if (osCMSIS < 0x20000U) +typedef struct os_messageQ_def { + uint32_t queue_sz; ///< number of elements in the queue + void *pool; ///< memory array for messages +} osMessageQDef_t; +#else +typedef struct os_messageQ_def { + uint32_t queue_sz; ///< number of elements in the queue + osMessageQueueAttr_t attr; ///< message queue attributes +} osMessageQDef_t; +#endif + +/// Definition structure for mail queue. +#if (osCMSIS < 0x20000U) +typedef struct os_mailQ_def { + uint32_t queue_sz; ///< number of elements in the queue + uint32_t item_sz; ///< size of an item + void *pool; ///< memory array for mail +} osMailQDef_t; +#else +typedef struct os_mailQ_def { + uint32_t queue_sz; ///< number of elements in the queue + uint32_t item_sz; ///< size of an item + void *mail; ///< pointer to mail + osMemoryPoolAttr_t mp_attr; ///< memory pool attributes + osMessageQueueAttr_t mq_attr; ///< message queue attributes +} osMailQDef_t; +#endif + + +/// Event structure contains detailed information about an event. +typedef struct { + osStatus status; ///< status code: event or error information + union { + uint32_t v; ///< message as 32-bit value + void *p; ///< message or mail as void pointer + int32_t signals; ///< signal flags + } value; ///< event value + union { + osMailQId mail_id; ///< mail id obtained by \ref osMailCreate + osMessageQId message_id; ///< message id obtained by \ref osMessageCreate + } def; ///< event definition +} osEvent; + + +// ==== Kernel Management Functions ==== + +/// Initialize the RTOS Kernel for creating objects. +/// \return status code that indicates the execution status of the function. +#if (osCMSIS < 0x20000U) +osStatus osKernelInitialize (void); +#endif + +/// Start the RTOS Kernel scheduler. +/// \return status code that indicates the execution status of the function. +#if (osCMSIS < 0x20000U) +osStatus osKernelStart (void); +#endif + +/// Check if the RTOS kernel is already started. +/// \return 0 RTOS is not started, 1 RTOS is started. +#if (osCMSIS < 0x20000U) +int32_t osKernelRunning(void); +#endif + +#if (defined(osFeature_SysTick) && (osFeature_SysTick != 0)) // System Timer available + +/// Get the RTOS kernel system timer counter. +/// \return RTOS kernel system timer as 32-bit value +#if (osCMSIS < 0x20000U) +uint32_t osKernelSysTick (void); +#else +#define osKernelSysTick osKernelGetSysTimerCount +#endif + +/// The RTOS kernel system timer frequency in Hz. +/// \note Reflects the system timer setting and is typically defined in a configuration file. +#if (osCMSIS < 0x20000U) +#define osKernelSysTickFrequency 100000000 +#endif + +/// Convert a microseconds value to a RTOS kernel system timer value. +/// \param microsec time value in microseconds. +/// \return time value normalized to the \ref osKernelSysTickFrequency +#if (osCMSIS < 0x20000U) +#define osKernelSysTickMicroSec(microsec) (((uint64_t)microsec * (osKernelSysTickFrequency)) / 1000000) +#else +#define osKernelSysTickMicroSec(microsec) (((uint64_t)microsec * osKernelGetSysTimerFreq()) / 1000000) +#endif + +#endif // System Timer available + + +// ==== Thread Management Functions ==== + +/// Create a Thread Definition with function, priority, and stack requirements. +/// \param name name of the thread function. +/// \param priority initial priority of the thread function. +/// \param instances number of possible thread instances. +/// \param stacksz stack size (in bytes) requirements for the thread function. +#if defined (osObjectsExternal) // object is external +#define osThreadDef(name, priority, instances, stacksz) \ +extern const osThreadDef_t os_thread_def_##name +#else // define the object +#define osThreadDef(name, priority, instances, stacksz) \ +static uint64_t os_thread_stack##name[(stacksz)?(((stacksz+7)/8)):1]; \ +static StaticTask_t os_thread_cb_##name; \ +const osThreadDef_t os_thread_def_##name = \ +{ (name), \ + { NULL, osThreadDetached, \ + (instances == 1) ? (&os_thread_cb_##name) : NULL,\ + (instances == 1) ? sizeof(StaticTask_t) : 0U, \ + ((stacksz) && (instances == 1)) ? (&os_thread_stack##name) : NULL, \ + 8*((stacksz+7)/8), \ + (priority), 0U, 0U } } +#endif + +/// Access a Thread definition. +/// \param name name of the thread definition object. +#define osThread(name) \ +&os_thread_def_##name + +/// Create a thread and add it to Active Threads and set it to state READY. +/// \param[in] thread_def thread definition referenced with \ref osThread. +/// \param[in] argument pointer that is passed to the thread function as start argument. +/// \return thread ID for reference by other functions or NULL in case of error. +osThreadId osThreadCreate (const osThreadDef_t *thread_def, void *argument); + +/// Return the thread ID of the current running thread. +/// \return thread ID for reference by other functions or NULL in case of error. +#if (osCMSIS < 0x20000U) +osThreadId osThreadGetId (void); +#endif + +/// Change priority of a thread. +/// \param[in] thread_id thread ID obtained by \ref osThreadCreate or \ref osThreadGetId. +/// \param[in] priority new priority value for the thread function. +/// \return status code that indicates the execution status of the function. +#if (osCMSIS < 0x20000U) +osStatus osThreadSetPriority (osThreadId thread_id, osPriority priority); +#endif + +/// Get current priority of a thread. +/// \param[in] thread_id thread ID obtained by \ref osThreadCreate or \ref osThreadGetId. +/// \return current priority value of the specified thread. +#if (osCMSIS < 0x20000U) +osPriority osThreadGetPriority (osThreadId thread_id); +#endif + +/// Pass control to next thread that is in state \b READY. +/// \return status code that indicates the execution status of the function. +#if (osCMSIS < 0x20000U) +osStatus osThreadYield (void); +#endif + +/// Terminate execution of a thread. +/// \param[in] thread_id thread ID obtained by \ref osThreadCreate or \ref osThreadGetId. +/// \return status code that indicates the execution status of the function. +#if (osCMSIS < 0x20000U) +osStatus osThreadTerminate (osThreadId thread_id); +#endif + + +// ==== Signal Management ==== + +/// Set the specified Signal Flags of an active thread. +/// \param[in] thread_id thread ID obtained by \ref osThreadCreate or \ref osThreadGetId. +/// \param[in] signals specifies the signal flags of the thread that should be set. +/// \return previous signal flags of the specified thread or 0x80000000 in case of incorrect parameters. +int32_t osSignalSet (osThreadId thread_id, int32_t signals); + +/// Clear the specified Signal Flags of an active thread. +/// \param[in] thread_id thread ID obtained by \ref osThreadCreate or \ref osThreadGetId. +/// \param[in] signals specifies the signal flags of the thread that shall be cleared. +/// \return previous signal flags of the specified thread or 0x80000000 in case of incorrect parameters or call from ISR. +int32_t osSignalClear (osThreadId thread_id, int32_t signals); + +/// Wait for one or more Signal Flags to become signaled for the current \b RUNNING thread. +/// \param[in] signals wait until all specified signal flags set or 0 for any single signal flag. +/// \param[in] millisec \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out. +/// \return event flag information or error code. +os_InRegs osEvent osSignalWait (int32_t signals, uint32_t millisec); + + +// ==== Generic Wait Functions ==== + +/// Wait for Timeout (Time Delay). +/// \param[in] millisec \ref CMSIS_RTOS_TimeOutValue "time delay" value +/// \return status code that indicates the execution status of the function. +#if (osCMSIS < 0x20000U) +osStatus osDelay (uint32_t millisec); +#endif + +#if (defined (osFeature_Wait) && (osFeature_Wait != 0)) // Generic Wait available + +/// Wait for Signal, Message, Mail, or Timeout. +/// \param[in] millisec \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out +/// \return event that contains signal, message, or mail information or error code. +os_InRegs osEvent osWait (uint32_t millisec); + +#endif // Generic Wait available + + +// ==== Timer Management Functions ==== + +/// Define a Timer object. +/// \param name name of the timer object. +/// \param function name of the timer call back function. +#if defined (osObjectsExternal) // object is external +#define osTimerDef(name, function) \ +extern const osTimerDef_t os_timer_def_##name +#else // define the object +#define osTimerDef(name, function) \ +static StaticTimer_t os_timer_cb_##name; \ +const osTimerDef_t os_timer_def_##name = \ +{ (function), { NULL, 0U, (&os_timer_cb_##name), sizeof(StaticTimer_t) } } +#endif + +/// Access a Timer definition. +/// \param name name of the timer object. +#define osTimer(name) \ +&os_timer_def_##name + +/// Create and Initialize a timer. +/// \param[in] timer_def timer object referenced with \ref osTimer. +/// \param[in] type osTimerOnce for one-shot or osTimerPeriodic for periodic behavior. +/// \param[in] argument argument to the timer call back function. +/// \return timer ID for reference by other functions or NULL in case of error. +osTimerId osTimerCreate (const osTimerDef_t *timer_def, os_timer_type type, void *argument); + +/// Start or restart a timer. +/// \param[in] timer_id timer ID obtained by \ref osTimerCreate. +/// \param[in] millisec \ref CMSIS_RTOS_TimeOutValue "time delay" value of the timer. +/// \return status code that indicates the execution status of the function. +#if (osCMSIS < 0x20000U) +osStatus osTimerStart (osTimerId timer_id, uint32_t millisec); +#endif + +/// Stop a timer. +/// \param[in] timer_id timer ID obtained by \ref osTimerCreate. +/// \return status code that indicates the execution status of the function. +#if (osCMSIS < 0x20000U) +osStatus osTimerStop (osTimerId timer_id); +#endif + +/// Delete a timer. +/// \param[in] timer_id timer ID obtained by \ref osTimerCreate. +/// \return status code that indicates the execution status of the function. +#if (osCMSIS < 0x20000U) +osStatus osTimerDelete (osTimerId timer_id); +#endif + + +// ==== Mutex Management Functions ==== + +/// Define a Mutex. +/// \param name name of the mutex object. +#if defined (osObjectsExternal) // object is external +#define osMutexDef(name) \ +extern const osMutexDef_t os_mutex_def_##name +#else // define the object +#define osMutexDef(name) \ +static StaticSemaphore_t os_mutex_cb_##name; \ +const osMutexDef_t os_mutex_def_##name = \ +{ NULL, osMutexRecursive | osMutexPrioInherit, (&os_mutex_cb_##name), sizeof(StaticSemaphore_t) } +#endif + +/// Access a Mutex definition. +/// \param name name of the mutex object. +#define osMutex(name) \ +&os_mutex_def_##name + +/// Create and Initialize a Mutex object. +/// \param[in] mutex_def mutex definition referenced with \ref osMutex. +/// \return mutex ID for reference by other functions or NULL in case of error. +osMutexId osMutexCreate (const osMutexDef_t *mutex_def); + +/// Wait until a Mutex becomes available. +/// \param[in] mutex_id mutex ID obtained by \ref osMutexCreate. +/// \param[in] millisec \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out. +/// \return status code that indicates the execution status of the function. +#if (osCMSIS < 0x20000U) +osStatus osMutexWait (osMutexId mutex_id, uint32_t millisec); +#else +#define osMutexWait osMutexAcquire +#endif + +/// Release a Mutex that was obtained by \ref osMutexWait. +/// \param[in] mutex_id mutex ID obtained by \ref osMutexCreate. +/// \return status code that indicates the execution status of the function. +#if (osCMSIS < 0x20000U) +osStatus osMutexRelease (osMutexId mutex_id); +#endif + +/// Delete a Mutex object. +/// \param[in] mutex_id mutex ID obtained by \ref osMutexCreate. +/// \return status code that indicates the execution status of the function. +#if (osCMSIS < 0x20000U) +osStatus osMutexDelete (osMutexId mutex_id); +#endif + + +// ==== Semaphore Management Functions ==== + +#if (defined (osFeature_Semaphore) && (osFeature_Semaphore != 0U)) // Semaphore available + +/// Define a Semaphore object. +/// \param name name of the semaphore object. +#if defined (osObjectsExternal) // object is external +#define osSemaphoreDef(name) \ +extern const osSemaphoreDef_t os_semaphore_def_##name +#else // define the object +#define osSemaphoreDef(name) \ +static StaticSemaphore_t os_semaphore_cb_##name; \ +const osSemaphoreDef_t os_semaphore_def_##name = \ +{ NULL, 0U, (&os_semaphore_cb_##name), sizeof(StaticSemaphore_t) } +#endif + +/// Access a Semaphore definition. +/// \param name name of the semaphore object. +#define osSemaphore(name) \ +&os_semaphore_def_##name + +/// Create and Initialize a Semaphore object. +/// \param[in] semaphore_def semaphore definition referenced with \ref osSemaphore. +/// \param[in] count maximum and initial number of available tokens. +/// \return semaphore ID for reference by other functions or NULL in case of error. +osSemaphoreId osSemaphoreCreate (const osSemaphoreDef_t *semaphore_def, int32_t count); + +/// Wait until a Semaphore token becomes available. +/// \param[in] semaphore_id semaphore object referenced with \ref osSemaphoreCreate. +/// \param[in] millisec \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out. +/// \return number of available tokens, or -1 in case of incorrect parameters. +int32_t osSemaphoreWait (osSemaphoreId semaphore_id, uint32_t millisec); + +/// Release a Semaphore token. +/// \param[in] semaphore_id semaphore object referenced with \ref osSemaphoreCreate. +/// \return status code that indicates the execution status of the function. +#if (osCMSIS < 0x20000U) +osStatus osSemaphoreRelease (osSemaphoreId semaphore_id); +#endif + +/// Delete a Semaphore object. +/// \param[in] semaphore_id semaphore object referenced with \ref osSemaphoreCreate. +/// \return status code that indicates the execution status of the function. +#if (osCMSIS < 0x20000U) +osStatus osSemaphoreDelete (osSemaphoreId semaphore_id); +#endif + +#endif // Semaphore available + + +// ==== Memory Pool Management Functions ==== + +#if (defined(osFeature_Pool) && (osFeature_Pool != 0)) // Memory Pool available + +/// \brief Define a Memory Pool. +/// \param name name of the memory pool. +/// \param no maximum number of blocks (objects) in the memory pool. +/// \param type data type of a single block (object). +#if defined (osObjectsExternal) // object is external +#define osPoolDef(name, no, type) \ +extern const osPoolDef_t os_pool_def_##name +#else // define the object +#define osPoolDef(name, no, type) \ +const osPoolDef_t os_pool_def_##name = \ +{ (no), sizeof(type), {NULL} } +#endif + +/// \brief Access a Memory Pool definition. +/// \param name name of the memory pool +#define osPool(name) \ +&os_pool_def_##name + +/// Create and Initialize a Memory Pool object. +/// \param[in] pool_def memory pool definition referenced with \ref osPool. +/// \return memory pool ID for reference by other functions or NULL in case of error. +osPoolId osPoolCreate (const osPoolDef_t *pool_def); + +/// Allocate a memory block from a Memory Pool. +/// \param[in] pool_id memory pool ID obtain referenced with \ref osPoolCreate. +/// \return address of the allocated memory block or NULL in case of no memory available. +void *osPoolAlloc (osPoolId pool_id); + +/// Allocate a memory block from a Memory Pool and set memory block to zero. +/// \param[in] pool_id memory pool ID obtain referenced with \ref osPoolCreate. +/// \return address of the allocated memory block or NULL in case of no memory available. +void *osPoolCAlloc (osPoolId pool_id); + +/// Return an allocated memory block back to a Memory Pool. +/// \param[in] pool_id memory pool ID obtain referenced with \ref osPoolCreate. +/// \param[in] block address of the allocated memory block to be returned to the memory pool. +/// \return status code that indicates the execution status of the function. +osStatus osPoolFree (osPoolId pool_id, void *block); + +#endif // Memory Pool available + + +// ==== Message Queue Management Functions ==== + +#if (defined(osFeature_MessageQ) && (osFeature_MessageQ != 0)) // Message Queue available + +/// \brief Create a Message Queue Definition. +/// \param name name of the queue. +/// \param queue_sz maximum number of messages in the queue. +/// \param type data type of a single message element (for debugger). +#if defined (osObjectsExternal) // object is external +#define osMessageQDef(name, queue_sz, type) \ +extern const osMessageQDef_t os_messageQ_def_##name +#else // define the object +#define osMessageQDef(name, queue_sz, type) \ +static StaticQueue_t os_mq_cb_##name; \ +static uint32_t os_mq_data_##name[(queue_sz) * sizeof(type)]; \ +const osMessageQDef_t os_messageQ_def_##name = \ +{ (queue_sz), \ + { NULL, 0U, (&os_mq_cb_##name), sizeof(StaticQueue_t), \ + (&os_mq_data_##name), sizeof(os_mq_data_##name) } } +#endif + +/// \brief Access a Message Queue Definition. +/// \param name name of the queue +#define osMessageQ(name) \ +&os_messageQ_def_##name + +/// Create and Initialize a Message Queue object. +/// \param[in] queue_def message queue definition referenced with \ref osMessageQ. +/// \param[in] thread_id thread ID (obtained by \ref osThreadCreate or \ref osThreadGetId) or NULL. +/// \return message queue ID for reference by other functions or NULL in case of error. +osMessageQId osMessageCreate (const osMessageQDef_t *queue_def, osThreadId thread_id); + +/// Put a Message to a Queue. +/// \param[in] queue_id message queue ID obtained with \ref osMessageCreate. +/// \param[in] info message information. +/// \param[in] millisec \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out. +/// \return status code that indicates the execution status of the function. +osStatus osMessagePut (osMessageQId queue_id, uint32_t info, uint32_t millisec); + +/// Get a Message from a Queue or timeout if Queue is empty. +/// \param[in] queue_id message queue ID obtained with \ref osMessageCreate. +/// \param[in] millisec \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out. +/// \return event information that includes status code. +os_InRegs osEvent osMessageGet (osMessageQId queue_id, uint32_t millisec); + +#endif // Message Queue available + + +// ==== Mail Queue Management Functions ==== + +#if (defined(osFeature_MailQ) && (osFeature_MailQ != 0)) // Mail Queue available + +/// \brief Create a Mail Queue Definition. +/// \param name name of the queue. +/// \param queue_sz maximum number of mails in the queue. +/// \param type data type of a single mail element. +#if defined (osObjectsExternal) // object is external +#define osMailQDef(name, queue_sz, type) \ +extern const osMailQDef_t os_mailQ_def_##name +#else // define the object +#define osMailQDef(name, queue_sz, type) \ +const osMailQDef_t os_mailQ_def_##name = \ +{ (queue_sz), sizeof(type), NULL } +#endif + +/// \brief Access a Mail Queue Definition. +/// \param name name of the queue +#define osMailQ(name) \ +&os_mailQ_def_##name + +/// Create and Initialize a Mail Queue object. +/// \param[in] queue_def mail queue definition referenced with \ref osMailQ. +/// \param[in] thread_id thread ID (obtained by \ref osThreadCreate or \ref osThreadGetId) or NULL. +/// \return mail queue ID for reference by other functions or NULL in case of error. +osMailQId osMailCreate (const osMailQDef_t *queue_def, osThreadId thread_id); + +/// Allocate a memory block for mail from a mail memory pool. +/// \param[in] queue_id mail queue ID obtained with \ref osMailCreate. +/// \param[in] millisec \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out +/// \return pointer to memory block that can be filled with mail or NULL in case of error. +void *osMailAlloc (osMailQId queue_id, uint32_t millisec); + +/// Allocate a memory block for mail from a mail memory pool and set memory block to zero. +/// \param[in] queue_id mail queue ID obtained with \ref osMailCreate. +/// \param[in] millisec \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out +/// \return pointer to memory block that can be filled with mail or NULL in case of error. +void *osMailCAlloc (osMailQId queue_id, uint32_t millisec); + +/// Put a Mail into a Queue. +/// \param[in] queue_id mail queue ID obtained with \ref osMailCreate. +/// \param[in] mail pointer to memory with mail to put into a queue. +/// \return status code that indicates the execution status of the function. +osStatus osMailPut (osMailQId queue_id, const void *mail); + +/// Get a Mail from a Queue or timeout if Queue is empty. +/// \param[in] queue_id mail queue ID obtained with \ref osMailCreate. +/// \param[in] millisec \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out. +/// \return event information that includes status code. +os_InRegs osEvent osMailGet (osMailQId queue_id, uint32_t millisec); + +/// Free a memory block by returning it to a mail memory pool. +/// \param[in] queue_id mail queue ID obtained with \ref osMailCreate. +/// \param[in] mail pointer to memory block that was obtained with \ref osMailGet. +/// \return status code that indicates the execution status of the function. +osStatus osMailFree (osMailQId queue_id, void *mail); + +#endif // Mail Queue available + + +#ifdef __cplusplus +} +#endif + +#endif // CMSIS_OS_H_ diff --git a/firmware/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.c b/firmware/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.c new file mode 100644 index 0000000..69ac328 --- /dev/null +++ b/firmware/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.c @@ -0,0 +1,2482 @@ +/* -------------------------------------------------------------------------- + * Copyright (c) 2013-2020 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Name: cmsis_os2.c + * Purpose: CMSIS RTOS2 wrapper for FreeRTOS + * + *---------------------------------------------------------------------------*/ + +#include + +#include "cmsis_os2.h" // ::CMSIS:RTOS2 +#include "cmsis_compiler.h" // Compiler agnostic definitions + +#include "FreeRTOS.h" // ARM.FreeRTOS::RTOS:Core +#include "task.h" // ARM.FreeRTOS::RTOS:Core +#include "event_groups.h" // ARM.FreeRTOS::RTOS:Event Groups +#include "semphr.h" // ARM.FreeRTOS::RTOS:Core + +#include "freertos_mpool.h" // osMemoryPool definitions +#include "freertos_os2.h" // Configuration check and setup + +/*---------------------------------------------------------------------------*/ +#ifndef __ARM_ARCH_6M__ + #define __ARM_ARCH_6M__ 0 +#endif +#ifndef __ARM_ARCH_7M__ + #define __ARM_ARCH_7M__ 0 +#endif +#ifndef __ARM_ARCH_7EM__ + #define __ARM_ARCH_7EM__ 0 +#endif +#ifndef __ARM_ARCH_8M_MAIN__ + #define __ARM_ARCH_8M_MAIN__ 0 +#endif +#ifndef __ARM_ARCH_7A__ + #define __ARM_ARCH_7A__ 0 +#endif + +#if ((__ARM_ARCH_7M__ == 1U) || \ + (__ARM_ARCH_7EM__ == 1U) || \ + (__ARM_ARCH_8M_MAIN__ == 1U)) +#define IS_IRQ_MASKED() ((__get_PRIMASK() != 0U) || (__get_BASEPRI() != 0U)) +#elif (__ARM_ARCH_6M__ == 1U) +#define IS_IRQ_MASKED() (__get_PRIMASK() != 0U) +#elif (__ARM_ARCH_7A__ == 1U) +/* CPSR mask bits */ +#define CPSR_MASKBIT_I 0x80U + +#define IS_IRQ_MASKED() ((__get_CPSR() & CPSR_MASKBIT_I) != 0U) +#else +#define IS_IRQ_MASKED() (__get_PRIMASK() != 0U) +#endif + +#if (__ARM_ARCH_7A__ == 1U) +/* CPSR mode bitmasks */ +#define CPSR_MODE_USER 0x10U +#define CPSR_MODE_SYSTEM 0x1FU + +#define IS_IRQ_MODE() ((__get_mode() != CPSR_MODE_USER) && (__get_mode() != CPSR_MODE_SYSTEM)) +#else +#define IS_IRQ_MODE() (__get_IPSR() != 0U) +#endif + +#define IS_IRQ() IS_IRQ_MODE() + +#define SVCall_IRQ_NBR (IRQn_Type) -5 /* SVCall_IRQ_NBR added as SV_Call handler name is not the same for CM0 and for all other CMx */ + +/* Limits */ +#define MAX_BITS_TASK_NOTIFY 31U +#define MAX_BITS_EVENT_GROUPS 24U + +#define THREAD_FLAGS_INVALID_BITS (~((1UL << MAX_BITS_TASK_NOTIFY) - 1U)) +#define EVENT_FLAGS_INVALID_BITS (~((1UL << MAX_BITS_EVENT_GROUPS) - 1U)) + +/* Kernel version and identification string definition (major.minor.rev: mmnnnrrrr dec) */ +#define KERNEL_VERSION (((uint32_t)tskKERNEL_VERSION_MAJOR * 10000000UL) | \ + ((uint32_t)tskKERNEL_VERSION_MINOR * 10000UL) | \ + ((uint32_t)tskKERNEL_VERSION_BUILD * 1UL)) + +#define KERNEL_ID ("FreeRTOS " tskKERNEL_VERSION_NUMBER) + +/* Timer callback information structure definition */ +typedef struct { + osTimerFunc_t func; + void *arg; +} TimerCallback_t; + +/* Kernel initialization state */ +static osKernelState_t KernelState = osKernelInactive; + +/* + Heap region definition used by heap_5 variant + + Define configAPPLICATION_ALLOCATED_HEAP as nonzero value in FreeRTOSConfig.h if + heap regions are already defined and vPortDefineHeapRegions is called in application. + + Otherwise vPortDefineHeapRegions will be called by osKernelInitialize using + definition configHEAP_5_REGIONS as parameter. Overriding configHEAP_5_REGIONS + is possible by defining it globally or in FreeRTOSConfig.h. +*/ +#if defined(USE_FreeRTOS_HEAP_5) +#if (configAPPLICATION_ALLOCATED_HEAP == 0) + /* + FreeRTOS heap is not defined by the application. + Single region of size configTOTAL_HEAP_SIZE (defined in FreeRTOSConfig.h) + is provided by default. Define configHEAP_5_REGIONS to provide custom + HeapRegion_t array. + */ + #define HEAP_5_REGION_SETUP 1 + + #ifndef configHEAP_5_REGIONS + #define configHEAP_5_REGIONS xHeapRegions + + static uint8_t ucHeap[configTOTAL_HEAP_SIZE]; + + static HeapRegion_t xHeapRegions[] = { + { ucHeap, configTOTAL_HEAP_SIZE }, + { NULL, 0 } + }; + #else + /* Global definition is provided to override default heap array */ + extern HeapRegion_t configHEAP_5_REGIONS[]; + #endif +#else + /* + The application already defined the array used for the FreeRTOS heap and + called vPortDefineHeapRegions to initialize heap. + */ + #define HEAP_5_REGION_SETUP 0 +#endif /* configAPPLICATION_ALLOCATED_HEAP */ +#endif /* USE_FreeRTOS_HEAP_5 */ + +#if defined(SysTick) +#undef SysTick_Handler + +/* CMSIS SysTick interrupt handler prototype */ +extern void SysTick_Handler (void); +/* FreeRTOS tick timer interrupt handler prototype */ +extern void xPortSysTickHandler (void); + +/* + SysTick handler implementation that also clears overflow flag. +*/ +#if (USE_CUSTOM_SYSTICK_HANDLER_IMPLEMENTATION == 0) +void SysTick_Handler (void) { + /* Clear overflow flag */ + SysTick->CTRL; + + if (xTaskGetSchedulerState() != taskSCHEDULER_NOT_STARTED) { + /* Call tick handler */ + xPortSysTickHandler(); + } +} +#endif +#endif /* SysTick */ + +/* + Setup SVC to reset value. +*/ +__STATIC_INLINE void SVC_Setup (void) { +#if (__ARM_ARCH_7A__ == 0U) + /* Service Call interrupt might be configured before kernel start */ + /* and when its priority is lower or equal to BASEPRI, svc intruction */ + /* causes a Hard Fault. */ + NVIC_SetPriority (SVCall_IRQ_NBR, 0U); +#endif +} + +/* + Function macro used to retrieve semaphore count from ISR +*/ +#ifndef uxSemaphoreGetCountFromISR +#define uxSemaphoreGetCountFromISR( xSemaphore ) uxQueueMessagesWaitingFromISR( ( QueueHandle_t ) ( xSemaphore ) ) +#endif + +/* Get OS Tick count value */ +static uint32_t OS_Tick_GetCount (void); +/* Get OS Tick overflow status */ +static uint32_t OS_Tick_GetOverflow (void); +/* Get OS Tick interval */ +static uint32_t OS_Tick_GetInterval (void); +/*---------------------------------------------------------------------------*/ + +osStatus_t osKernelInitialize (void) { + osStatus_t stat; + + if (IS_IRQ()) { + stat = osErrorISR; + } + else { + if (KernelState == osKernelInactive) { + #if defined(USE_TRACE_EVENT_RECORDER) + EvrFreeRTOSSetup(0U); + #endif + #if defined(USE_FreeRTOS_HEAP_5) && (HEAP_5_REGION_SETUP == 1) + vPortDefineHeapRegions (configHEAP_5_REGIONS); + #endif + KernelState = osKernelReady; + stat = osOK; + } else { + stat = osError; + } + } + + return (stat); +} + +osStatus_t osKernelGetInfo (osVersion_t *version, char *id_buf, uint32_t id_size) { + + if (version != NULL) { + /* Version encoding is major.minor.rev: mmnnnrrrr dec */ + version->api = KERNEL_VERSION; + version->kernel = KERNEL_VERSION; + } + + if ((id_buf != NULL) && (id_size != 0U)) { + if (id_size > sizeof(KERNEL_ID)) { + id_size = sizeof(KERNEL_ID); + } + memcpy(id_buf, KERNEL_ID, id_size); + } + + return (osOK); +} + +osKernelState_t osKernelGetState (void) { + osKernelState_t state; + + switch (xTaskGetSchedulerState()) { + case taskSCHEDULER_RUNNING: + state = osKernelRunning; + break; + + case taskSCHEDULER_SUSPENDED: + state = osKernelLocked; + break; + + case taskSCHEDULER_NOT_STARTED: + default: + if (KernelState == osKernelReady) { + state = osKernelReady; + } else { + state = osKernelInactive; + } + break; + } + + return (state); +} + +osStatus_t osKernelStart (void) { + osStatus_t stat; + + if (IS_IRQ()) { + stat = osErrorISR; + } + else { + if (KernelState == osKernelReady) { + /* Ensure SVC priority is at the reset value */ + SVC_Setup(); + /* Change state to enable IRQ masking check */ + KernelState = osKernelRunning; + /* Start the kernel scheduler */ + vTaskStartScheduler(); + stat = osOK; + } else { + stat = osError; + } + } + + return (stat); +} + +int32_t osKernelLock (void) { + int32_t lock; + + if (IS_IRQ()) { + lock = (int32_t)osErrorISR; + } + else { + switch (xTaskGetSchedulerState()) { + case taskSCHEDULER_SUSPENDED: + lock = 1; + break; + + case taskSCHEDULER_RUNNING: + vTaskSuspendAll(); + lock = 0; + break; + + case taskSCHEDULER_NOT_STARTED: + default: + lock = (int32_t)osError; + break; + } + } + + return (lock); +} + +int32_t osKernelUnlock (void) { + int32_t lock; + + if (IS_IRQ()) { + lock = (int32_t)osErrorISR; + } + else { + switch (xTaskGetSchedulerState()) { + case taskSCHEDULER_SUSPENDED: + lock = 1; + + if (xTaskResumeAll() != pdTRUE) { + if (xTaskGetSchedulerState() == taskSCHEDULER_SUSPENDED) { + lock = (int32_t)osError; + } + } + break; + + case taskSCHEDULER_RUNNING: + lock = 0; + break; + + case taskSCHEDULER_NOT_STARTED: + default: + lock = (int32_t)osError; + break; + } + } + + return (lock); +} + +int32_t osKernelRestoreLock (int32_t lock) { + + if (IS_IRQ()) { + lock = (int32_t)osErrorISR; + } + else { + switch (xTaskGetSchedulerState()) { + case taskSCHEDULER_SUSPENDED: + case taskSCHEDULER_RUNNING: + if (lock == 1) { + vTaskSuspendAll(); + } + else { + if (lock != 0) { + lock = (int32_t)osError; + } + else { + if (xTaskResumeAll() != pdTRUE) { + if (xTaskGetSchedulerState() != taskSCHEDULER_RUNNING) { + lock = (int32_t)osError; + } + } + } + } + break; + + case taskSCHEDULER_NOT_STARTED: + default: + lock = (int32_t)osError; + break; + } + } + + return (lock); +} + +uint32_t osKernelGetTickCount (void) { + TickType_t ticks; + + if (IS_IRQ()) { + ticks = xTaskGetTickCountFromISR(); + } else { + ticks = xTaskGetTickCount(); + } + + return (ticks); +} + +uint32_t osKernelGetTickFreq (void) { + return (configTICK_RATE_HZ); +} + +/* Get OS Tick count value */ +static uint32_t OS_Tick_GetCount (void) { + uint32_t load = SysTick->LOAD; + return (load - SysTick->VAL); +} + +/* Get OS Tick overflow status */ +static uint32_t OS_Tick_GetOverflow (void) { + return ((SysTick->CTRL >> 16) & 1U); +} + +/* Get OS Tick interval */ +static uint32_t OS_Tick_GetInterval (void) { + return (SysTick->LOAD + 1U); +} + +uint32_t osKernelGetSysTimerCount (void) { + uint32_t irqmask = IS_IRQ_MASKED(); + TickType_t ticks; + uint32_t val; + + __disable_irq(); + + ticks = xTaskGetTickCount(); + val = OS_Tick_GetCount(); + + if (OS_Tick_GetOverflow() != 0U) { + val = OS_Tick_GetCount(); + ticks++; + } + val += ticks * OS_Tick_GetInterval(); + + if (irqmask == 0U) { + __enable_irq(); + } + + return (val); +} + +uint32_t osKernelGetSysTimerFreq (void) { + return (configCPU_CLOCK_HZ); +} + +/*---------------------------------------------------------------------------*/ + +osThreadId_t osThreadNew (osThreadFunc_t func, void *argument, const osThreadAttr_t *attr) { + const char *name; + uint32_t stack; + TaskHandle_t hTask; + UBaseType_t prio; + int32_t mem; + + hTask = NULL; + + if (!IS_IRQ() && (func != NULL)) { + stack = configMINIMAL_STACK_SIZE; + prio = (UBaseType_t)osPriorityNormal; + + name = NULL; + mem = -1; + + if (attr != NULL) { + if (attr->name != NULL) { + name = attr->name; + } + if (attr->priority != osPriorityNone) { + prio = (UBaseType_t)attr->priority; + } + + if ((prio < osPriorityIdle) || (prio > osPriorityISR) || ((attr->attr_bits & osThreadJoinable) == osThreadJoinable)) { + return (NULL); + } + + if (attr->stack_size > 0U) { + /* In FreeRTOS stack is not in bytes, but in sizeof(StackType_t) which is 4 on ARM ports. */ + /* Stack size should be therefore 4 byte aligned in order to avoid division caused side effects */ + stack = attr->stack_size / sizeof(StackType_t); + } + + if ((attr->cb_mem != NULL) && (attr->cb_size >= sizeof(StaticTask_t)) && + (attr->stack_mem != NULL) && (attr->stack_size > 0U)) { + mem = 1; + } + else { + if ((attr->cb_mem == NULL) && (attr->cb_size == 0U) && (attr->stack_mem == NULL)) { + mem = 0; + } + } + } + else { + mem = 0; + } + + if (mem == 1) { + #if (configSUPPORT_STATIC_ALLOCATION == 1) + hTask = xTaskCreateStatic ((TaskFunction_t)func, name, stack, argument, prio, (StackType_t *)attr->stack_mem, + (StaticTask_t *)attr->cb_mem); + #endif + } + else { + if (mem == 0) { + #if (configSUPPORT_DYNAMIC_ALLOCATION == 1) + if (xTaskCreate ((TaskFunction_t)func, name, (uint16_t)stack, argument, prio, &hTask) != pdPASS) { + hTask = NULL; + } + #endif + } + } + } + + return ((osThreadId_t)hTask); +} + +const char *osThreadGetName (osThreadId_t thread_id) { + TaskHandle_t hTask = (TaskHandle_t)thread_id; + const char *name; + + if (IS_IRQ() || (hTask == NULL)) { + name = NULL; + } else { + name = pcTaskGetName (hTask); + } + + return (name); +} + +osThreadId_t osThreadGetId (void) { + osThreadId_t id; + + id = (osThreadId_t)xTaskGetCurrentTaskHandle(); + + return (id); +} + +osThreadState_t osThreadGetState (osThreadId_t thread_id) { + TaskHandle_t hTask = (TaskHandle_t)thread_id; + osThreadState_t state; + + if (IS_IRQ() || (hTask == NULL)) { + state = osThreadError; + } + else { + switch (eTaskGetState (hTask)) { + case eRunning: state = osThreadRunning; break; + case eReady: state = osThreadReady; break; + case eBlocked: + case eSuspended: state = osThreadBlocked; break; + case eDeleted: state = osThreadTerminated; break; + case eInvalid: + default: state = osThreadError; break; + } + } + + return (state); +} + +uint32_t osThreadGetStackSpace (osThreadId_t thread_id) { + TaskHandle_t hTask = (TaskHandle_t)thread_id; + uint32_t sz; + + if (IS_IRQ() || (hTask == NULL)) { + sz = 0U; + } else { + sz = (uint32_t)(uxTaskGetStackHighWaterMark(hTask) * sizeof(StackType_t)); + } + + return (sz); +} + +osStatus_t osThreadSetPriority (osThreadId_t thread_id, osPriority_t priority) { + TaskHandle_t hTask = (TaskHandle_t)thread_id; + osStatus_t stat; + + if (IS_IRQ()) { + stat = osErrorISR; + } + else if ((hTask == NULL) || (priority < osPriorityIdle) || (priority > osPriorityISR)) { + stat = osErrorParameter; + } + else { + stat = osOK; + vTaskPrioritySet (hTask, (UBaseType_t)priority); + } + + return (stat); +} + +osPriority_t osThreadGetPriority (osThreadId_t thread_id) { + TaskHandle_t hTask = (TaskHandle_t)thread_id; + osPriority_t prio; + + if (IS_IRQ() || (hTask == NULL)) { + prio = osPriorityError; + } else { + prio = (osPriority_t)((int32_t)uxTaskPriorityGet (hTask)); + } + + return (prio); +} + +osStatus_t osThreadYield (void) { + osStatus_t stat; + + if (IS_IRQ()) { + stat = osErrorISR; + } else { + stat = osOK; + taskYIELD(); + } + + return (stat); +} + +#if (configUSE_OS2_THREAD_SUSPEND_RESUME == 1) +osStatus_t osThreadSuspend (osThreadId_t thread_id) { + TaskHandle_t hTask = (TaskHandle_t)thread_id; + osStatus_t stat; + + if (IS_IRQ()) { + stat = osErrorISR; + } + else if (hTask == NULL) { + stat = osErrorParameter; + } + else { + stat = osOK; + vTaskSuspend (hTask); + } + + return (stat); +} + +osStatus_t osThreadResume (osThreadId_t thread_id) { + TaskHandle_t hTask = (TaskHandle_t)thread_id; + osStatus_t stat; + + if (IS_IRQ()) { + stat = osErrorISR; + } + else if (hTask == NULL) { + stat = osErrorParameter; + } + else { + stat = osOK; + vTaskResume (hTask); + } + + return (stat); +} +#endif /* (configUSE_OS2_THREAD_SUSPEND_RESUME == 1) */ + +__NO_RETURN void osThreadExit (void) { +#ifndef USE_FreeRTOS_HEAP_1 + vTaskDelete (NULL); +#endif + for (;;); +} + +osStatus_t osThreadTerminate (osThreadId_t thread_id) { + TaskHandle_t hTask = (TaskHandle_t)thread_id; + osStatus_t stat; +#ifndef USE_FreeRTOS_HEAP_1 + eTaskState tstate; + + if (IS_IRQ()) { + stat = osErrorISR; + } + else if (hTask == NULL) { + stat = osErrorParameter; + } + else { + tstate = eTaskGetState (hTask); + + if (tstate != eDeleted) { + stat = osOK; + vTaskDelete (hTask); + } else { + stat = osErrorResource; + } + } +#else + stat = osError; +#endif + + return (stat); +} + +uint32_t osThreadGetCount (void) { + uint32_t count; + + if (IS_IRQ()) { + count = 0U; + } else { + count = uxTaskGetNumberOfTasks(); + } + + return (count); +} + +#if (configUSE_OS2_THREAD_ENUMERATE == 1) +uint32_t osThreadEnumerate (osThreadId_t *thread_array, uint32_t array_items) { + uint32_t i, count; + TaskStatus_t *task; + + if (IS_IRQ() || (thread_array == NULL) || (array_items == 0U)) { + count = 0U; + } else { + vTaskSuspendAll(); + + count = uxTaskGetNumberOfTasks(); + task = pvPortMalloc (count * sizeof(TaskStatus_t)); + + if (task != NULL) { + count = uxTaskGetSystemState (task, count, NULL); + + for (i = 0U; (i < count) && (i < array_items); i++) { + thread_array[i] = (osThreadId_t)task[i].xHandle; + } + count = i; + } + (void)xTaskResumeAll(); + + vPortFree (task); + } + + return (count); +} +#endif /* (configUSE_OS2_THREAD_ENUMERATE == 1) */ + +#if (configUSE_OS2_THREAD_FLAGS == 1) +uint32_t osThreadFlagsSet (osThreadId_t thread_id, uint32_t flags) { + TaskHandle_t hTask = (TaskHandle_t)thread_id; + uint32_t rflags; + BaseType_t yield; + + if ((hTask == NULL) || ((flags & THREAD_FLAGS_INVALID_BITS) != 0U)) { + rflags = (uint32_t)osErrorParameter; + } + else { + rflags = (uint32_t)osError; + + if (IS_IRQ()) { + yield = pdFALSE; + + (void)xTaskNotifyFromISR (hTask, flags, eSetBits, &yield); + (void)xTaskNotifyAndQueryFromISR (hTask, 0, eNoAction, &rflags, NULL); + + portYIELD_FROM_ISR (yield); + } + else { + (void)xTaskNotify (hTask, flags, eSetBits); + (void)xTaskNotifyAndQuery (hTask, 0, eNoAction, &rflags); + } + } + /* Return flags after setting */ + return (rflags); +} + +uint32_t osThreadFlagsClear (uint32_t flags) { + TaskHandle_t hTask; + uint32_t rflags, cflags; + + if (IS_IRQ()) { + rflags = (uint32_t)osErrorISR; + } + else if ((flags & THREAD_FLAGS_INVALID_BITS) != 0U) { + rflags = (uint32_t)osErrorParameter; + } + else { + hTask = xTaskGetCurrentTaskHandle(); + + if (xTaskNotifyAndQuery (hTask, 0, eNoAction, &cflags) == pdPASS) { + rflags = cflags; + cflags &= ~flags; + + if (xTaskNotify (hTask, cflags, eSetValueWithOverwrite) != pdPASS) { + rflags = (uint32_t)osError; + } + } + else { + rflags = (uint32_t)osError; + } + } + + /* Return flags before clearing */ + return (rflags); +} + +uint32_t osThreadFlagsGet (void) { + TaskHandle_t hTask; + uint32_t rflags; + + if (IS_IRQ()) { + rflags = (uint32_t)osErrorISR; + } + else { + hTask = xTaskGetCurrentTaskHandle(); + + if (xTaskNotifyAndQuery (hTask, 0, eNoAction, &rflags) != pdPASS) { + rflags = (uint32_t)osError; + } + } + + return (rflags); +} + +uint32_t osThreadFlagsWait (uint32_t flags, uint32_t options, uint32_t timeout) { + uint32_t rflags, nval; + uint32_t clear; + TickType_t t0, td, tout; + BaseType_t rval; + + if (IS_IRQ()) { + rflags = (uint32_t)osErrorISR; + } + else if ((flags & THREAD_FLAGS_INVALID_BITS) != 0U) { + rflags = (uint32_t)osErrorParameter; + } + else { + if ((options & osFlagsNoClear) == osFlagsNoClear) { + clear = 0U; + } else { + clear = flags; + } + + rflags = 0U; + tout = timeout; + + t0 = xTaskGetTickCount(); + do { + rval = xTaskNotifyWait (0, clear, &nval, tout); + + if (rval == pdPASS) { + rflags &= flags; + rflags |= nval; + + if ((options & osFlagsWaitAll) == osFlagsWaitAll) { + if ((flags & rflags) == flags) { + break; + } else { + if (timeout == 0U) { + rflags = (uint32_t)osErrorResource; + break; + } + } + } + else { + if ((flags & rflags) != 0) { + break; + } else { + if (timeout == 0U) { + rflags = (uint32_t)osErrorResource; + break; + } + } + } + + /* Update timeout */ + td = xTaskGetTickCount() - t0; + + if (td > tout) { + tout = 0; + } else { + tout -= td; + } + } + else { + if (timeout == 0) { + rflags = (uint32_t)osErrorResource; + } else { + rflags = (uint32_t)osErrorTimeout; + } + } + } + while (rval != pdFAIL); + } + + /* Return flags before clearing */ + return (rflags); +} +#endif /* (configUSE_OS2_THREAD_FLAGS == 1) */ + +osStatus_t osDelay (uint32_t ticks) { + osStatus_t stat; + + if (IS_IRQ()) { + stat = osErrorISR; + } + else { + stat = osOK; + + if (ticks != 0U) { + vTaskDelay(ticks); + } + } + + return (stat); +} + +osStatus_t osDelayUntil (uint32_t ticks) { + TickType_t tcnt, delay; + osStatus_t stat; + + if (IS_IRQ()) { + stat = osErrorISR; + } + else { + stat = osOK; + tcnt = xTaskGetTickCount(); + + /* Determine remaining number of ticks to delay */ + delay = (TickType_t)ticks - tcnt; + + /* Check if target tick has not expired */ + if((delay != 0U) && (0 == (delay >> (8 * sizeof(TickType_t) - 1)))) { + vTaskDelayUntil (&tcnt, delay); + } + else + { + /* No delay or already expired */ + stat = osErrorParameter; + } + } + + return (stat); +} + +/*---------------------------------------------------------------------------*/ +#if (configUSE_OS2_TIMER == 1) + +static void TimerCallback (TimerHandle_t hTimer) { + TimerCallback_t *callb; + + callb = (TimerCallback_t *)pvTimerGetTimerID (hTimer); + + if (callb != NULL) { + callb->func (callb->arg); + } +} + +osTimerId_t osTimerNew (osTimerFunc_t func, osTimerType_t type, void *argument, const osTimerAttr_t *attr) { + const char *name; + TimerHandle_t hTimer; + TimerCallback_t *callb; + UBaseType_t reload; + int32_t mem; + + hTimer = NULL; + + if (!IS_IRQ() && (func != NULL)) { + /* Allocate memory to store callback function and argument */ + callb = pvPortMalloc (sizeof(TimerCallback_t)); + + if (callb != NULL) { + callb->func = func; + callb->arg = argument; + + if (type == osTimerOnce) { + reload = pdFALSE; + } else { + reload = pdTRUE; + } + + mem = -1; + name = NULL; + + if (attr != NULL) { + if (attr->name != NULL) { + name = attr->name; + } + + if ((attr->cb_mem != NULL) && (attr->cb_size >= sizeof(StaticTimer_t))) { + mem = 1; + } + else { + if ((attr->cb_mem == NULL) && (attr->cb_size == 0U)) { + mem = 0; + } + } + } + else { + mem = 0; + } + + if (mem == 1) { + #if (configSUPPORT_STATIC_ALLOCATION == 1) + hTimer = xTimerCreateStatic (name, 1, reload, callb, TimerCallback, (StaticTimer_t *)attr->cb_mem); + #endif + } + else { + if (mem == 0) { + #if (configSUPPORT_DYNAMIC_ALLOCATION == 1) + hTimer = xTimerCreate (name, 1, reload, callb, TimerCallback); + #endif + } + } + + if ((hTimer == NULL) && (callb != NULL)) { + vPortFree (callb); + } + } + } + + return ((osTimerId_t)hTimer); +} + +const char *osTimerGetName (osTimerId_t timer_id) { + TimerHandle_t hTimer = (TimerHandle_t)timer_id; + const char *p; + + if (IS_IRQ() || (hTimer == NULL)) { + p = NULL; + } else { + p = pcTimerGetName (hTimer); + } + + return (p); +} + +osStatus_t osTimerStart (osTimerId_t timer_id, uint32_t ticks) { + TimerHandle_t hTimer = (TimerHandle_t)timer_id; + osStatus_t stat; + + if (IS_IRQ()) { + stat = osErrorISR; + } + else if (hTimer == NULL) { + stat = osErrorParameter; + } + else { + if (xTimerChangePeriod (hTimer, ticks, 0) == pdPASS) { + stat = osOK; + } else { + stat = osErrorResource; + } + } + + return (stat); +} + +osStatus_t osTimerStop (osTimerId_t timer_id) { + TimerHandle_t hTimer = (TimerHandle_t)timer_id; + osStatus_t stat; + + if (IS_IRQ()) { + stat = osErrorISR; + } + else if (hTimer == NULL) { + stat = osErrorParameter; + } + else { + if (xTimerIsTimerActive (hTimer) == pdFALSE) { + stat = osErrorResource; + } + else { + if (xTimerStop (hTimer, 0) == pdPASS) { + stat = osOK; + } else { + stat = osError; + } + } + } + + return (stat); +} + +uint32_t osTimerIsRunning (osTimerId_t timer_id) { + TimerHandle_t hTimer = (TimerHandle_t)timer_id; + uint32_t running; + + if (IS_IRQ() || (hTimer == NULL)) { + running = 0U; + } else { + running = (uint32_t)xTimerIsTimerActive (hTimer); + } + + return (running); +} + +osStatus_t osTimerDelete (osTimerId_t timer_id) { + TimerHandle_t hTimer = (TimerHandle_t)timer_id; + osStatus_t stat; +#ifndef USE_FreeRTOS_HEAP_1 + TimerCallback_t *callb; + + if (IS_IRQ()) { + stat = osErrorISR; + } + else if (hTimer == NULL) { + stat = osErrorParameter; + } + else { + callb = (TimerCallback_t *)pvTimerGetTimerID (hTimer); + + if (xTimerDelete (hTimer, 0) == pdPASS) { + vPortFree (callb); + stat = osOK; + } else { + stat = osErrorResource; + } + } +#else + stat = osError; +#endif + + return (stat); +} +#endif /* (configUSE_OS2_TIMER == 1) */ + +/*---------------------------------------------------------------------------*/ + +osEventFlagsId_t osEventFlagsNew (const osEventFlagsAttr_t *attr) { + EventGroupHandle_t hEventGroup; + int32_t mem; + + hEventGroup = NULL; + + if (!IS_IRQ()) { + mem = -1; + + if (attr != NULL) { + if ((attr->cb_mem != NULL) && (attr->cb_size >= sizeof(StaticEventGroup_t))) { + mem = 1; + } + else { + if ((attr->cb_mem == NULL) && (attr->cb_size == 0U)) { + mem = 0; + } + } + } + else { + mem = 0; + } + + if (mem == 1) { + #if (configSUPPORT_STATIC_ALLOCATION == 1) + hEventGroup = xEventGroupCreateStatic (attr->cb_mem); + #endif + } + else { + if (mem == 0) { + #if (configSUPPORT_DYNAMIC_ALLOCATION == 1) + hEventGroup = xEventGroupCreate(); + #endif + } + } + } + + return ((osEventFlagsId_t)hEventGroup); +} + +uint32_t osEventFlagsSet (osEventFlagsId_t ef_id, uint32_t flags) { + EventGroupHandle_t hEventGroup = (EventGroupHandle_t)ef_id; + uint32_t rflags; + BaseType_t yield; + + if ((hEventGroup == NULL) || ((flags & EVENT_FLAGS_INVALID_BITS) != 0U)) { + rflags = (uint32_t)osErrorParameter; + } + else if (IS_IRQ()) { + #if (configUSE_OS2_EVENTFLAGS_FROM_ISR == 0) + (void)yield; + /* Enable timers and xTimerPendFunctionCall function to support osEventFlagsSet from ISR */ + rflags = (uint32_t)osErrorResource; + #else + yield = pdFALSE; + + if (xEventGroupSetBitsFromISR (hEventGroup, (EventBits_t)flags, &yield) == pdFAIL) { + rflags = (uint32_t)osErrorResource; + } else { + rflags = flags; + portYIELD_FROM_ISR (yield); + } + #endif + } + else { + rflags = xEventGroupSetBits (hEventGroup, (EventBits_t)flags); + } + + return (rflags); +} + +uint32_t osEventFlagsClear (osEventFlagsId_t ef_id, uint32_t flags) { + EventGroupHandle_t hEventGroup = (EventGroupHandle_t)ef_id; + uint32_t rflags; + + if ((hEventGroup == NULL) || ((flags & EVENT_FLAGS_INVALID_BITS) != 0U)) { + rflags = (uint32_t)osErrorParameter; + } + else if (IS_IRQ()) { + #if (configUSE_OS2_EVENTFLAGS_FROM_ISR == 0) + /* Enable timers and xTimerPendFunctionCall function to support osEventFlagsSet from ISR */ + rflags = (uint32_t)osErrorResource; + #else + rflags = xEventGroupGetBitsFromISR (hEventGroup); + + if (xEventGroupClearBitsFromISR (hEventGroup, (EventBits_t)flags) == pdFAIL) { + rflags = (uint32_t)osErrorResource; + } + #endif + } + else { + rflags = xEventGroupClearBits (hEventGroup, (EventBits_t)flags); + } + + return (rflags); +} + +uint32_t osEventFlagsGet (osEventFlagsId_t ef_id) { + EventGroupHandle_t hEventGroup = (EventGroupHandle_t)ef_id; + uint32_t rflags; + + if (ef_id == NULL) { + rflags = 0U; + } + else if (IS_IRQ()) { + rflags = xEventGroupGetBitsFromISR (hEventGroup); + } + else { + rflags = xEventGroupGetBits (hEventGroup); + } + + return (rflags); +} + +uint32_t osEventFlagsWait (osEventFlagsId_t ef_id, uint32_t flags, uint32_t options, uint32_t timeout) { + EventGroupHandle_t hEventGroup = (EventGroupHandle_t)ef_id; + BaseType_t wait_all; + BaseType_t exit_clr; + uint32_t rflags; + + if ((hEventGroup == NULL) || ((flags & EVENT_FLAGS_INVALID_BITS) != 0U)) { + rflags = (uint32_t)osErrorParameter; + } + else if (IS_IRQ()) { + rflags = (uint32_t)osErrorISR; + } + else { + if (options & osFlagsWaitAll) { + wait_all = pdTRUE; + } else { + wait_all = pdFAIL; + } + + if (options & osFlagsNoClear) { + exit_clr = pdFAIL; + } else { + exit_clr = pdTRUE; + } + + rflags = xEventGroupWaitBits (hEventGroup, (EventBits_t)flags, exit_clr, wait_all, (TickType_t)timeout); + + if (options & osFlagsWaitAll) { + if ((flags & rflags) != flags) { + if (timeout > 0U) { + rflags = (uint32_t)osErrorTimeout; + } else { + rflags = (uint32_t)osErrorResource; + } + } + } + else { + if ((flags & rflags) == 0U) { + if (timeout > 0U) { + rflags = (uint32_t)osErrorTimeout; + } else { + rflags = (uint32_t)osErrorResource; + } + } + } + } + + return (rflags); +} + +osStatus_t osEventFlagsDelete (osEventFlagsId_t ef_id) { + EventGroupHandle_t hEventGroup = (EventGroupHandle_t)ef_id; + osStatus_t stat; + +#ifndef USE_FreeRTOS_HEAP_1 + if (IS_IRQ()) { + stat = osErrorISR; + } + else if (hEventGroup == NULL) { + stat = osErrorParameter; + } + else { + stat = osOK; + vEventGroupDelete (hEventGroup); + } +#else + stat = osError; +#endif + + return (stat); +} + +/*---------------------------------------------------------------------------*/ +#if (configUSE_OS2_MUTEX == 1) + +osMutexId_t osMutexNew (const osMutexAttr_t *attr) { + SemaphoreHandle_t hMutex; + uint32_t type; + uint32_t rmtx; + int32_t mem; + #if (configQUEUE_REGISTRY_SIZE > 0) + const char *name; + #endif + + hMutex = NULL; + + if (!IS_IRQ()) { + if (attr != NULL) { + type = attr->attr_bits; + } else { + type = 0U; + } + + if ((type & osMutexRecursive) == osMutexRecursive) { + rmtx = 1U; + } else { + rmtx = 0U; + } + + if ((type & osMutexRobust) != osMutexRobust) { + mem = -1; + + if (attr != NULL) { + if ((attr->cb_mem != NULL) && (attr->cb_size >= sizeof(StaticSemaphore_t))) { + mem = 1; + } + else { + if ((attr->cb_mem == NULL) && (attr->cb_size == 0U)) { + mem = 0; + } + } + } + else { + mem = 0; + } + + if (mem == 1) { + #if (configSUPPORT_STATIC_ALLOCATION == 1) + if (rmtx != 0U) { + #if (configUSE_RECURSIVE_MUTEXES == 1) + hMutex = xSemaphoreCreateRecursiveMutexStatic (attr->cb_mem); + #endif + } + else { + hMutex = xSemaphoreCreateMutexStatic (attr->cb_mem); + } + #endif + } + else { + if (mem == 0) { + #if (configSUPPORT_DYNAMIC_ALLOCATION == 1) + if (rmtx != 0U) { + #if (configUSE_RECURSIVE_MUTEXES == 1) + hMutex = xSemaphoreCreateRecursiveMutex (); + #endif + } else { + hMutex = xSemaphoreCreateMutex (); + } + #endif + } + } + + #if (configQUEUE_REGISTRY_SIZE > 0) + if (hMutex != NULL) { + if (attr != NULL) { + name = attr->name; + } else { + name = NULL; + } + vQueueAddToRegistry (hMutex, name); + } + #endif + + if ((hMutex != NULL) && (rmtx != 0U)) { + hMutex = (SemaphoreHandle_t)((uint32_t)hMutex | 1U); + } + } + } + + return ((osMutexId_t)hMutex); +} + +osStatus_t osMutexAcquire (osMutexId_t mutex_id, uint32_t timeout) { + SemaphoreHandle_t hMutex; + osStatus_t stat; + uint32_t rmtx; + + hMutex = (SemaphoreHandle_t)((uint32_t)mutex_id & ~1U); + + rmtx = (uint32_t)mutex_id & 1U; + + stat = osOK; + + if (IS_IRQ()) { + stat = osErrorISR; + } + else if (hMutex == NULL) { + stat = osErrorParameter; + } + else { + if (rmtx != 0U) { + #if (configUSE_RECURSIVE_MUTEXES == 1) + if (xSemaphoreTakeRecursive (hMutex, timeout) != pdPASS) { + if (timeout != 0U) { + stat = osErrorTimeout; + } else { + stat = osErrorResource; + } + } + #endif + } + else { + if (xSemaphoreTake (hMutex, timeout) != pdPASS) { + if (timeout != 0U) { + stat = osErrorTimeout; + } else { + stat = osErrorResource; + } + } + } + } + + return (stat); +} + +osStatus_t osMutexRelease (osMutexId_t mutex_id) { + SemaphoreHandle_t hMutex; + osStatus_t stat; + uint32_t rmtx; + + hMutex = (SemaphoreHandle_t)((uint32_t)mutex_id & ~1U); + + rmtx = (uint32_t)mutex_id & 1U; + + stat = osOK; + + if (IS_IRQ()) { + stat = osErrorISR; + } + else if (hMutex == NULL) { + stat = osErrorParameter; + } + else { + if (rmtx != 0U) { + #if (configUSE_RECURSIVE_MUTEXES == 1) + if (xSemaphoreGiveRecursive (hMutex) != pdPASS) { + stat = osErrorResource; + } + #endif + } + else { + if (xSemaphoreGive (hMutex) != pdPASS) { + stat = osErrorResource; + } + } + } + + return (stat); +} + +osThreadId_t osMutexGetOwner (osMutexId_t mutex_id) { + SemaphoreHandle_t hMutex; + osThreadId_t owner; + + hMutex = (SemaphoreHandle_t)((uint32_t)mutex_id & ~1U); + + if (IS_IRQ() || (hMutex == NULL)) { + owner = NULL; + } else { + owner = (osThreadId_t)xSemaphoreGetMutexHolder (hMutex); + } + + return (owner); +} + +osStatus_t osMutexDelete (osMutexId_t mutex_id) { + osStatus_t stat; +#ifndef USE_FreeRTOS_HEAP_1 + SemaphoreHandle_t hMutex; + + hMutex = (SemaphoreHandle_t)((uint32_t)mutex_id & ~1U); + + if (IS_IRQ()) { + stat = osErrorISR; + } + else if (hMutex == NULL) { + stat = osErrorParameter; + } + else { + #if (configQUEUE_REGISTRY_SIZE > 0) + vQueueUnregisterQueue (hMutex); + #endif + stat = osOK; + vSemaphoreDelete (hMutex); + } +#else + stat = osError; +#endif + + return (stat); +} +#endif /* (configUSE_OS2_MUTEX == 1) */ + +/*---------------------------------------------------------------------------*/ + +osSemaphoreId_t osSemaphoreNew (uint32_t max_count, uint32_t initial_count, const osSemaphoreAttr_t *attr) { + SemaphoreHandle_t hSemaphore; + int32_t mem; + #if (configQUEUE_REGISTRY_SIZE > 0) + const char *name; + #endif + + hSemaphore = NULL; + + if (!IS_IRQ() && (max_count > 0U) && (initial_count <= max_count)) { + mem = -1; + + if (attr != NULL) { + if ((attr->cb_mem != NULL) && (attr->cb_size >= sizeof(StaticSemaphore_t))) { + mem = 1; + } + else { + if ((attr->cb_mem == NULL) && (attr->cb_size == 0U)) { + mem = 0; + } + } + } + else { + mem = 0; + } + + if (mem != -1) { + if (max_count == 1U) { + if (mem == 1) { + #if (configSUPPORT_STATIC_ALLOCATION == 1) + hSemaphore = xSemaphoreCreateBinaryStatic ((StaticSemaphore_t *)attr->cb_mem); + #endif + } + else { + #if (configSUPPORT_DYNAMIC_ALLOCATION == 1) + hSemaphore = xSemaphoreCreateBinary(); + #endif + } + + if ((hSemaphore != NULL) && (initial_count != 0U)) { + if (xSemaphoreGive (hSemaphore) != pdPASS) { + vSemaphoreDelete (hSemaphore); + hSemaphore = NULL; + } + } + } + else { + if (mem == 1) { + #if (configSUPPORT_STATIC_ALLOCATION == 1) + hSemaphore = xSemaphoreCreateCountingStatic (max_count, initial_count, (StaticSemaphore_t *)attr->cb_mem); + #endif + } + else { + #if (configSUPPORT_DYNAMIC_ALLOCATION == 1) + hSemaphore = xSemaphoreCreateCounting (max_count, initial_count); + #endif + } + } + + #if (configQUEUE_REGISTRY_SIZE > 0) + if (hSemaphore != NULL) { + if (attr != NULL) { + name = attr->name; + } else { + name = NULL; + } + vQueueAddToRegistry (hSemaphore, name); + } + #endif + } + } + + return ((osSemaphoreId_t)hSemaphore); +} + +osStatus_t osSemaphoreAcquire (osSemaphoreId_t semaphore_id, uint32_t timeout) { + SemaphoreHandle_t hSemaphore = (SemaphoreHandle_t)semaphore_id; + osStatus_t stat; + BaseType_t yield; + + stat = osOK; + + if (hSemaphore == NULL) { + stat = osErrorParameter; + } + else if (IS_IRQ()) { + if (timeout != 0U) { + stat = osErrorParameter; + } + else { + yield = pdFALSE; + + if (xSemaphoreTakeFromISR (hSemaphore, &yield) != pdPASS) { + stat = osErrorResource; + } else { + portYIELD_FROM_ISR (yield); + } + } + } + else { + if (xSemaphoreTake (hSemaphore, (TickType_t)timeout) != pdPASS) { + if (timeout != 0U) { + stat = osErrorTimeout; + } else { + stat = osErrorResource; + } + } + } + + return (stat); +} + +osStatus_t osSemaphoreRelease (osSemaphoreId_t semaphore_id) { + SemaphoreHandle_t hSemaphore = (SemaphoreHandle_t)semaphore_id; + osStatus_t stat; + BaseType_t yield; + + stat = osOK; + + if (hSemaphore == NULL) { + stat = osErrorParameter; + } + else if (IS_IRQ()) { + yield = pdFALSE; + + if (xSemaphoreGiveFromISR (hSemaphore, &yield) != pdTRUE) { + stat = osErrorResource; + } else { + portYIELD_FROM_ISR (yield); + } + } + else { + if (xSemaphoreGive (hSemaphore) != pdPASS) { + stat = osErrorResource; + } + } + + return (stat); +} + +uint32_t osSemaphoreGetCount (osSemaphoreId_t semaphore_id) { + SemaphoreHandle_t hSemaphore = (SemaphoreHandle_t)semaphore_id; + uint32_t count; + + if (hSemaphore == NULL) { + count = 0U; + } + else if (IS_IRQ()) { + count = uxQueueMessagesWaitingFromISR (hSemaphore); + } else { + count = (uint32_t)uxSemaphoreGetCount (hSemaphore); + } + + return (count); +} + +osStatus_t osSemaphoreDelete (osSemaphoreId_t semaphore_id) { + SemaphoreHandle_t hSemaphore = (SemaphoreHandle_t)semaphore_id; + osStatus_t stat; + +#ifndef USE_FreeRTOS_HEAP_1 + if (IS_IRQ()) { + stat = osErrorISR; + } + else if (hSemaphore == NULL) { + stat = osErrorParameter; + } + else { + #if (configQUEUE_REGISTRY_SIZE > 0) + vQueueUnregisterQueue (hSemaphore); + #endif + + stat = osOK; + vSemaphoreDelete (hSemaphore); + } +#else + stat = osError; +#endif + + return (stat); +} + +/*---------------------------------------------------------------------------*/ + +osMessageQueueId_t osMessageQueueNew (uint32_t msg_count, uint32_t msg_size, const osMessageQueueAttr_t *attr) { + QueueHandle_t hQueue; + int32_t mem; + #if (configQUEUE_REGISTRY_SIZE > 0) + const char *name; + #endif + + hQueue = NULL; + + if (!IS_IRQ() && (msg_count > 0U) && (msg_size > 0U)) { + mem = -1; + + if (attr != NULL) { + if ((attr->cb_mem != NULL) && (attr->cb_size >= sizeof(StaticQueue_t)) && + (attr->mq_mem != NULL) && (attr->mq_size >= (msg_count * msg_size))) { + mem = 1; + } + else { + if ((attr->cb_mem == NULL) && (attr->cb_size == 0U) && + (attr->mq_mem == NULL) && (attr->mq_size == 0U)) { + mem = 0; + } + } + } + else { + mem = 0; + } + + if (mem == 1) { + #if (configSUPPORT_STATIC_ALLOCATION == 1) + hQueue = xQueueCreateStatic (msg_count, msg_size, attr->mq_mem, attr->cb_mem); + #endif + } + else { + if (mem == 0) { + #if (configSUPPORT_DYNAMIC_ALLOCATION == 1) + hQueue = xQueueCreate (msg_count, msg_size); + #endif + } + } + + #if (configQUEUE_REGISTRY_SIZE > 0) + if (hQueue != NULL) { + if (attr != NULL) { + name = attr->name; + } else { + name = NULL; + } + vQueueAddToRegistry (hQueue, name); + } + #endif + + } + + return ((osMessageQueueId_t)hQueue); +} + +osStatus_t osMessageQueuePut (osMessageQueueId_t mq_id, const void *msg_ptr, uint8_t msg_prio, uint32_t timeout) { + QueueHandle_t hQueue = (QueueHandle_t)mq_id; + osStatus_t stat; + BaseType_t yield; + + (void)msg_prio; /* Message priority is ignored */ + + stat = osOK; + + if (IS_IRQ()) { + if ((hQueue == NULL) || (msg_ptr == NULL) || (timeout != 0U)) { + stat = osErrorParameter; + } + else { + yield = pdFALSE; + + if (xQueueSendToBackFromISR (hQueue, msg_ptr, &yield) != pdTRUE) { + stat = osErrorResource; + } else { + portYIELD_FROM_ISR (yield); + } + } + } + else { + if ((hQueue == NULL) || (msg_ptr == NULL)) { + stat = osErrorParameter; + } + else { + if (xQueueSendToBack (hQueue, msg_ptr, (TickType_t)timeout) != pdPASS) { + if (timeout != 0U) { + stat = osErrorTimeout; + } else { + stat = osErrorResource; + } + } + } + } + + return (stat); +} + +osStatus_t osMessageQueueGet (osMessageQueueId_t mq_id, void *msg_ptr, uint8_t *msg_prio, uint32_t timeout) { + QueueHandle_t hQueue = (QueueHandle_t)mq_id; + osStatus_t stat; + BaseType_t yield; + + (void)msg_prio; /* Message priority is ignored */ + + stat = osOK; + + if (IS_IRQ()) { + if ((hQueue == NULL) || (msg_ptr == NULL) || (timeout != 0U)) { + stat = osErrorParameter; + } + else { + yield = pdFALSE; + + if (xQueueReceiveFromISR (hQueue, msg_ptr, &yield) != pdPASS) { + stat = osErrorResource; + } else { + portYIELD_FROM_ISR (yield); + } + } + } + else { + if ((hQueue == NULL) || (msg_ptr == NULL)) { + stat = osErrorParameter; + } + else { + if (xQueueReceive (hQueue, msg_ptr, (TickType_t)timeout) != pdPASS) { + if (timeout != 0U) { + stat = osErrorTimeout; + } else { + stat = osErrorResource; + } + } + } + } + + return (stat); +} + +uint32_t osMessageQueueGetCapacity (osMessageQueueId_t mq_id) { + StaticQueue_t *mq = (StaticQueue_t *)mq_id; + uint32_t capacity; + + if (mq == NULL) { + capacity = 0U; + } else { + /* capacity = pxQueue->uxLength */ + capacity = mq->uxDummy4[1]; + } + + return (capacity); +} + +uint32_t osMessageQueueGetMsgSize (osMessageQueueId_t mq_id) { + StaticQueue_t *mq = (StaticQueue_t *)mq_id; + uint32_t size; + + if (mq == NULL) { + size = 0U; + } else { + /* size = pxQueue->uxItemSize */ + size = mq->uxDummy4[2]; + } + + return (size); +} + +uint32_t osMessageQueueGetCount (osMessageQueueId_t mq_id) { + QueueHandle_t hQueue = (QueueHandle_t)mq_id; + UBaseType_t count; + + if (hQueue == NULL) { + count = 0U; + } + else if (IS_IRQ()) { + count = uxQueueMessagesWaitingFromISR (hQueue); + } + else { + count = uxQueueMessagesWaiting (hQueue); + } + + return ((uint32_t)count); +} + +uint32_t osMessageQueueGetSpace (osMessageQueueId_t mq_id) { + StaticQueue_t *mq = (StaticQueue_t *)mq_id; + uint32_t space; + uint32_t isrm; + + if (mq == NULL) { + space = 0U; + } + else if (IS_IRQ()) { + isrm = taskENTER_CRITICAL_FROM_ISR(); + + /* space = pxQueue->uxLength - pxQueue->uxMessagesWaiting; */ + space = mq->uxDummy4[1] - mq->uxDummy4[0]; + + taskEXIT_CRITICAL_FROM_ISR(isrm); + } + else { + space = (uint32_t)uxQueueSpacesAvailable ((QueueHandle_t)mq); + } + + return (space); +} + +osStatus_t osMessageQueueReset (osMessageQueueId_t mq_id) { + QueueHandle_t hQueue = (QueueHandle_t)mq_id; + osStatus_t stat; + + if (IS_IRQ()) { + stat = osErrorISR; + } + else if (hQueue == NULL) { + stat = osErrorParameter; + } + else { + stat = osOK; + (void)xQueueReset (hQueue); + } + + return (stat); +} + +osStatus_t osMessageQueueDelete (osMessageQueueId_t mq_id) { + QueueHandle_t hQueue = (QueueHandle_t)mq_id; + osStatus_t stat; + +#ifndef USE_FreeRTOS_HEAP_1 + if (IS_IRQ()) { + stat = osErrorISR; + } + else if (hQueue == NULL) { + stat = osErrorParameter; + } + else { + #if (configQUEUE_REGISTRY_SIZE > 0) + vQueueUnregisterQueue (hQueue); + #endif + + stat = osOK; + vQueueDelete (hQueue); + } +#else + stat = osError; +#endif + + return (stat); +} + +/*---------------------------------------------------------------------------*/ +#ifdef FREERTOS_MPOOL_H_ + +/* Static memory pool functions */ +static void FreeBlock (MemPool_t *mp, void *block); +static void *AllocBlock (MemPool_t *mp); +static void *CreateBlock (MemPool_t *mp); + +osMemoryPoolId_t osMemoryPoolNew (uint32_t block_count, uint32_t block_size, const osMemoryPoolAttr_t *attr) { + MemPool_t *mp; + const char *name; + int32_t mem_cb, mem_mp; + uint32_t sz; + + if (IS_IRQ()) { + mp = NULL; + } + else if ((block_count == 0U) || (block_size == 0U)) { + mp = NULL; + } + else { + mp = NULL; + sz = MEMPOOL_ARR_SIZE (block_count, block_size); + + name = NULL; + mem_cb = -1; + mem_mp = -1; + + if (attr != NULL) { + if (attr->name != NULL) { + name = attr->name; + } + + if ((attr->cb_mem != NULL) && (attr->cb_size >= sizeof(MemPool_t))) { + /* Static control block is provided */ + mem_cb = 1; + } + else if ((attr->cb_mem == NULL) && (attr->cb_size == 0U)) { + /* Allocate control block memory on heap */ + mem_cb = 0; + } + + if ((attr->mp_mem == NULL) && (attr->mp_size == 0U)) { + /* Allocate memory array on heap */ + mem_mp = 0; + } + else { + if (attr->mp_mem != NULL) { + /* Check if array is 4-byte aligned */ + if (((uint32_t)attr->mp_mem & 3U) == 0U) { + /* Check if array big enough */ + if (attr->mp_size >= sz) { + /* Static memory pool array is provided */ + mem_mp = 1; + } + } + } + } + } + else { + /* Attributes not provided, allocate memory on heap */ + mem_cb = 0; + mem_mp = 0; + } + + if (mem_cb == 0) { + mp = pvPortMalloc (sizeof(MemPool_t)); + } else { + mp = attr->cb_mem; + } + + if (mp != NULL) { + /* Create a semaphore (max count == initial count == block_count) */ + #if (configSUPPORT_STATIC_ALLOCATION == 1) + mp->sem = xSemaphoreCreateCountingStatic (block_count, block_count, &mp->mem_sem); + #elif (configSUPPORT_DYNAMIC_ALLOCATION == 1) + mp->sem = xSemaphoreCreateCounting (block_count, block_count); + #else + mp->sem == NULL; + #endif + + if (mp->sem != NULL) { + /* Setup memory array */ + if (mem_mp == 0) { + mp->mem_arr = pvPortMalloc (sz); + } else { + mp->mem_arr = attr->mp_mem; + } + } + } + + if ((mp != NULL) && (mp->mem_arr != NULL)) { + /* Memory pool can be created */ + mp->head = NULL; + mp->mem_sz = sz; + mp->name = name; + mp->bl_sz = block_size; + mp->bl_cnt = block_count; + mp->n = 0U; + + /* Set heap allocated memory flags */ + mp->status = MPOOL_STATUS; + + if (mem_cb == 0) { + /* Control block on heap */ + mp->status |= 1U; + } + if (mem_mp == 0) { + /* Memory array on heap */ + mp->status |= 2U; + } + } + else { + /* Memory pool cannot be created, release allocated resources */ + if ((mem_cb == 0) && (mp != NULL)) { + /* Free control block memory */ + vPortFree (mp); + } + mp = NULL; + } + } + + return (mp); +} + +const char *osMemoryPoolGetName (osMemoryPoolId_t mp_id) { + MemPool_t *mp = (osMemoryPoolId_t)mp_id; + const char *p; + + if (IS_IRQ()) { + p = NULL; + } + else if (mp_id == NULL) { + p = NULL; + } + else { + p = mp->name; + } + + return (p); +} + +void *osMemoryPoolAlloc (osMemoryPoolId_t mp_id, uint32_t timeout) { + MemPool_t *mp; + void *block; + uint32_t isrm; + + if (mp_id == NULL) { + /* Invalid input parameters */ + block = NULL; + } + else { + block = NULL; + + mp = (MemPool_t *)mp_id; + + if ((mp->status & MPOOL_STATUS) == MPOOL_STATUS) { + if (IS_IRQ()) { + if (timeout == 0U) { + if (xSemaphoreTakeFromISR (mp->sem, NULL) == pdTRUE) { + if ((mp->status & MPOOL_STATUS) == MPOOL_STATUS) { + isrm = taskENTER_CRITICAL_FROM_ISR(); + + /* Get a block from the free-list */ + block = AllocBlock(mp); + + if (block == NULL) { + /* List of free blocks is empty, 'create' new block */ + block = CreateBlock(mp); + } + + taskEXIT_CRITICAL_FROM_ISR(isrm); + } + } + } + } + else { + if (xSemaphoreTake (mp->sem, (TickType_t)timeout) == pdTRUE) { + if ((mp->status & MPOOL_STATUS) == MPOOL_STATUS) { + taskENTER_CRITICAL(); + + /* Get a block from the free-list */ + block = AllocBlock(mp); + + if (block == NULL) { + /* List of free blocks is empty, 'create' new block */ + block = CreateBlock(mp); + } + + taskEXIT_CRITICAL(); + } + } + } + } + } + + return (block); +} + +osStatus_t osMemoryPoolFree (osMemoryPoolId_t mp_id, void *block) { + MemPool_t *mp; + osStatus_t stat; + uint32_t isrm; + BaseType_t yield; + + if ((mp_id == NULL) || (block == NULL)) { + /* Invalid input parameters */ + stat = osErrorParameter; + } + else { + mp = (MemPool_t *)mp_id; + + if ((mp->status & MPOOL_STATUS) != MPOOL_STATUS) { + /* Invalid object status */ + stat = osErrorResource; + } + else if ((block < (void *)&mp->mem_arr[0]) || (block > (void*)&mp->mem_arr[mp->mem_sz-1])) { + /* Block pointer outside of memory array area */ + stat = osErrorParameter; + } + else { + stat = osOK; + + if (IS_IRQ()) { + if (uxSemaphoreGetCountFromISR (mp->sem) == mp->bl_cnt) { + stat = osErrorResource; + } + else { + isrm = taskENTER_CRITICAL_FROM_ISR(); + + /* Add block to the list of free blocks */ + FreeBlock(mp, block); + + taskEXIT_CRITICAL_FROM_ISR(isrm); + + yield = pdFALSE; + xSemaphoreGiveFromISR (mp->sem, &yield); + portYIELD_FROM_ISR (yield); + } + } + else { + if (uxSemaphoreGetCount (mp->sem) == mp->bl_cnt) { + stat = osErrorResource; + } + else { + taskENTER_CRITICAL(); + + /* Add block to the list of free blocks */ + FreeBlock(mp, block); + + taskEXIT_CRITICAL(); + + xSemaphoreGive (mp->sem); + } + } + } + } + + return (stat); +} + +uint32_t osMemoryPoolGetCapacity (osMemoryPoolId_t mp_id) { + MemPool_t *mp; + uint32_t n; + + if (mp_id == NULL) { + /* Invalid input parameters */ + n = 0U; + } + else { + mp = (MemPool_t *)mp_id; + + if ((mp->status & MPOOL_STATUS) != MPOOL_STATUS) { + /* Invalid object status */ + n = 0U; + } + else { + n = mp->bl_cnt; + } + } + + /* Return maximum number of memory blocks */ + return (n); +} + +uint32_t osMemoryPoolGetBlockSize (osMemoryPoolId_t mp_id) { + MemPool_t *mp; + uint32_t sz; + + if (mp_id == NULL) { + /* Invalid input parameters */ + sz = 0U; + } + else { + mp = (MemPool_t *)mp_id; + + if ((mp->status & MPOOL_STATUS) != MPOOL_STATUS) { + /* Invalid object status */ + sz = 0U; + } + else { + sz = mp->bl_sz; + } + } + + /* Return memory block size in bytes */ + return (sz); +} + +uint32_t osMemoryPoolGetCount (osMemoryPoolId_t mp_id) { + MemPool_t *mp; + uint32_t n; + + if (mp_id == NULL) { + /* Invalid input parameters */ + n = 0U; + } + else { + mp = (MemPool_t *)mp_id; + + if ((mp->status & MPOOL_STATUS) != MPOOL_STATUS) { + /* Invalid object status */ + n = 0U; + } + else { + if (IS_IRQ()) { + n = uxSemaphoreGetCountFromISR (mp->sem); + } else { + n = uxSemaphoreGetCount (mp->sem); + } + + n = mp->bl_cnt - n; + } + } + + /* Return number of memory blocks used */ + return (n); +} + +uint32_t osMemoryPoolGetSpace (osMemoryPoolId_t mp_id) { + MemPool_t *mp; + uint32_t n; + + if (mp_id == NULL) { + /* Invalid input parameters */ + n = 0U; + } + else { + mp = (MemPool_t *)mp_id; + + if ((mp->status & MPOOL_STATUS) != MPOOL_STATUS) { + /* Invalid object status */ + n = 0U; + } + else { + if (IS_IRQ()) { + n = uxSemaphoreGetCountFromISR (mp->sem); + } else { + n = uxSemaphoreGetCount (mp->sem); + } + } + } + + /* Return number of memory blocks available */ + return (n); +} + +osStatus_t osMemoryPoolDelete (osMemoryPoolId_t mp_id) { + MemPool_t *mp; + osStatus_t stat; + + if (mp_id == NULL) { + /* Invalid input parameters */ + stat = osErrorParameter; + } + else if (IS_IRQ()) { + stat = osErrorISR; + } + else { + mp = (MemPool_t *)mp_id; + + taskENTER_CRITICAL(); + + /* Invalidate control block status */ + mp->status = mp->status & 3U; + + /* Wake-up tasks waiting for pool semaphore */ + while (xSemaphoreGive (mp->sem) == pdTRUE); + + mp->head = NULL; + mp->bl_sz = 0U; + mp->bl_cnt = 0U; + + if ((mp->status & 2U) != 0U) { + /* Memory pool array allocated on heap */ + vPortFree (mp->mem_arr); + } + if ((mp->status & 1U) != 0U) { + /* Memory pool control block allocated on heap */ + vPortFree (mp); + } + + taskEXIT_CRITICAL(); + + stat = osOK; + } + + return (stat); +} + +/* + Create new block given according to the current block index. +*/ +static void *CreateBlock (MemPool_t *mp) { + MemPoolBlock_t *p = NULL; + + if (mp->n < mp->bl_cnt) { + /* Unallocated blocks exist, set pointer to new block */ + p = (void *)(mp->mem_arr + (mp->bl_sz * mp->n)); + + /* Increment block index */ + mp->n += 1U; + } + + return (p); +} + +/* + Allocate a block by reading the list of free blocks. +*/ +static void *AllocBlock (MemPool_t *mp) { + MemPoolBlock_t *p = NULL; + + if (mp->head != NULL) { + /* List of free block exists, get head block */ + p = mp->head; + + /* Head block is now next on the list */ + mp->head = p->next; + } + + return (p); +} + +/* + Free block by putting it to the list of free blocks. +*/ +static void FreeBlock (MemPool_t *mp, void *block) { + MemPoolBlock_t *p = block; + + /* Store current head into block memory space */ + p->next = mp->head; + + /* Store current block as new head */ + mp->head = p; +} +#endif /* FREERTOS_MPOOL_H_ */ +/*---------------------------------------------------------------------------*/ + +/* Callback function prototypes */ +extern void vApplicationIdleHook (void); +extern void vApplicationTickHook (void); +extern void vApplicationMallocFailedHook (void); +extern void vApplicationDaemonTaskStartupHook (void); +extern void vApplicationStackOverflowHook (TaskHandle_t xTask, signed char *pcTaskName); + +/** + Dummy implementation of the callback function vApplicationIdleHook(). +*/ +#if (configUSE_IDLE_HOOK == 1) +__WEAK void vApplicationIdleHook (void){} +#endif + +/** + Dummy implementation of the callback function vApplicationTickHook(). +*/ +#if (configUSE_TICK_HOOK == 1) + __WEAK void vApplicationTickHook (void){} +#endif + +/** + Dummy implementation of the callback function vApplicationMallocFailedHook(). +*/ +#if (configUSE_MALLOC_FAILED_HOOK == 1) +__WEAK void vApplicationMallocFailedHook (void){} +#endif + +/** + Dummy implementation of the callback function vApplicationDaemonTaskStartupHook(). +*/ +#if (configUSE_DAEMON_TASK_STARTUP_HOOK == 1) +__WEAK void vApplicationDaemonTaskStartupHook (void){} +#endif + +/** + Dummy implementation of the callback function vApplicationStackOverflowHook(). +*/ +#if (configCHECK_FOR_STACK_OVERFLOW > 0) +__WEAK void vApplicationStackOverflowHook (TaskHandle_t xTask, signed char *pcTaskName) { + (void)xTask; + (void)pcTaskName; + configASSERT(0); +} +#endif + +/*---------------------------------------------------------------------------*/ +#if (configSUPPORT_STATIC_ALLOCATION == 1) +/* External Idle and Timer task static memory allocation functions */ +extern void vApplicationGetIdleTaskMemory (StaticTask_t **ppxIdleTaskTCBBuffer, StackType_t **ppxIdleTaskStackBuffer, uint32_t *pulIdleTaskStackSize); +extern void vApplicationGetTimerTaskMemory (StaticTask_t **ppxTimerTaskTCBBuffer, StackType_t **ppxTimerTaskStackBuffer, uint32_t *pulTimerTaskStackSize); + +/* + vApplicationGetIdleTaskMemory gets called when configSUPPORT_STATIC_ALLOCATION + equals to 1 and is required for static memory allocation support. +*/ +__WEAK void vApplicationGetIdleTaskMemory (StaticTask_t **ppxIdleTaskTCBBuffer, StackType_t **ppxIdleTaskStackBuffer, uint32_t *pulIdleTaskStackSize) { + /* Idle task control block and stack */ + static StaticTask_t Idle_TCB; + static StackType_t Idle_Stack[configMINIMAL_STACK_SIZE]; + + *ppxIdleTaskTCBBuffer = &Idle_TCB; + *ppxIdleTaskStackBuffer = &Idle_Stack[0]; + *pulIdleTaskStackSize = (uint32_t)configMINIMAL_STACK_SIZE; +} + +/* + vApplicationGetTimerTaskMemory gets called when configSUPPORT_STATIC_ALLOCATION + equals to 1 and is required for static memory allocation support. +*/ +__WEAK void vApplicationGetTimerTaskMemory (StaticTask_t **ppxTimerTaskTCBBuffer, StackType_t **ppxTimerTaskStackBuffer, uint32_t *pulTimerTaskStackSize) { + /* Timer task control block and stack */ + static StaticTask_t Timer_TCB; + static StackType_t Timer_Stack[configTIMER_TASK_STACK_DEPTH]; + + *ppxTimerTaskTCBBuffer = &Timer_TCB; + *ppxTimerTaskStackBuffer = &Timer_Stack[0]; + *pulTimerTaskStackSize = (uint32_t)configTIMER_TASK_STACK_DEPTH; +} +#endif diff --git a/firmware/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.h b/firmware/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.h new file mode 100644 index 0000000..9774cc7 --- /dev/null +++ b/firmware/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.h @@ -0,0 +1,734 @@ +/* -------------------------------------------------------------------------- + * Portions Copyright © 2017 STMicroelectronics International N.V. All rights reserved. + * Portions Copyright (c) 2013-2017 ARM Limited. All rights reserved. + * -------------------------------------------------------------------------- + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Name: cmsis_os2.h + * Purpose: CMSIS RTOS2 wrapper for FreeRTOS + * + *---------------------------------------------------------------------------*/ + +#ifndef CMSIS_OS2_H_ +#define CMSIS_OS2_H_ + +#ifndef __NO_RETURN +#if defined(__CC_ARM) +#define __NO_RETURN __declspec(noreturn) +#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) +#define __NO_RETURN __attribute__((__noreturn__)) +#elif defined(__GNUC__) +#define __NO_RETURN __attribute__((__noreturn__)) +#elif defined(__ICCARM__) +#define __NO_RETURN __noreturn +#else +#define __NO_RETURN +#endif +#endif + +#include +#include + +#ifdef __cplusplus +extern "C" +{ +#endif + + +// ==== Enumerations, structures, defines ==== + +/// Version information. +typedef struct { + uint32_t api; ///< API version (major.minor.rev: mmnnnrrrr dec). + uint32_t kernel; ///< Kernel version (major.minor.rev: mmnnnrrrr dec). +} osVersion_t; + +/// Kernel state. +typedef enum { + osKernelInactive = 0, ///< Inactive. + osKernelReady = 1, ///< Ready. + osKernelRunning = 2, ///< Running. + osKernelLocked = 3, ///< Locked. + osKernelSuspended = 4, ///< Suspended. + osKernelError = -1, ///< Error. + osKernelReserved = 0x7FFFFFFFU ///< Prevents enum down-size compiler optimization. +} osKernelState_t; + +/// Thread state. +typedef enum { + osThreadInactive = 0, ///< Inactive. + osThreadReady = 1, ///< Ready. + osThreadRunning = 2, ///< Running. + osThreadBlocked = 3, ///< Blocked. + osThreadTerminated = 4, ///< Terminated. + osThreadError = -1, ///< Error. + osThreadReserved = 0x7FFFFFFF ///< Prevents enum down-size compiler optimization. +} osThreadState_t; + +/// Priority values. +typedef enum { + osPriorityNone = 0, ///< No priority (not initialized). + osPriorityIdle = 1, ///< Reserved for Idle thread. + osPriorityLow = 8, ///< Priority: low + osPriorityLow1 = 8+1, ///< Priority: low + 1 + osPriorityLow2 = 8+2, ///< Priority: low + 2 + osPriorityLow3 = 8+3, ///< Priority: low + 3 + osPriorityLow4 = 8+4, ///< Priority: low + 4 + osPriorityLow5 = 8+5, ///< Priority: low + 5 + osPriorityLow6 = 8+6, ///< Priority: low + 6 + osPriorityLow7 = 8+7, ///< Priority: low + 7 + osPriorityBelowNormal = 16, ///< Priority: below normal + osPriorityBelowNormal1 = 16+1, ///< Priority: below normal + 1 + osPriorityBelowNormal2 = 16+2, ///< Priority: below normal + 2 + osPriorityBelowNormal3 = 16+3, ///< Priority: below normal + 3 + osPriorityBelowNormal4 = 16+4, ///< Priority: below normal + 4 + osPriorityBelowNormal5 = 16+5, ///< Priority: below normal + 5 + osPriorityBelowNormal6 = 16+6, ///< Priority: below normal + 6 + osPriorityBelowNormal7 = 16+7, ///< Priority: below normal + 7 + osPriorityNormal = 24, ///< Priority: normal + osPriorityNormal1 = 24+1, ///< Priority: normal + 1 + osPriorityNormal2 = 24+2, ///< Priority: normal + 2 + osPriorityNormal3 = 24+3, ///< Priority: normal + 3 + osPriorityNormal4 = 24+4, ///< Priority: normal + 4 + osPriorityNormal5 = 24+5, ///< Priority: normal + 5 + osPriorityNormal6 = 24+6, ///< Priority: normal + 6 + osPriorityNormal7 = 24+7, ///< Priority: normal + 7 + osPriorityAboveNormal = 32, ///< Priority: above normal + osPriorityAboveNormal1 = 32+1, ///< Priority: above normal + 1 + osPriorityAboveNormal2 = 32+2, ///< Priority: above normal + 2 + osPriorityAboveNormal3 = 32+3, ///< Priority: above normal + 3 + osPriorityAboveNormal4 = 32+4, ///< Priority: above normal + 4 + osPriorityAboveNormal5 = 32+5, ///< Priority: above normal + 5 + osPriorityAboveNormal6 = 32+6, ///< Priority: above normal + 6 + osPriorityAboveNormal7 = 32+7, ///< Priority: above normal + 7 + osPriorityHigh = 40, ///< Priority: high + osPriorityHigh1 = 40+1, ///< Priority: high + 1 + osPriorityHigh2 = 40+2, ///< Priority: high + 2 + osPriorityHigh3 = 40+3, ///< Priority: high + 3 + osPriorityHigh4 = 40+4, ///< Priority: high + 4 + osPriorityHigh5 = 40+5, ///< Priority: high + 5 + osPriorityHigh6 = 40+6, ///< Priority: high + 6 + osPriorityHigh7 = 40+7, ///< Priority: high + 7 + osPriorityRealtime = 48, ///< Priority: realtime + osPriorityRealtime1 = 48+1, ///< Priority: realtime + 1 + osPriorityRealtime2 = 48+2, ///< Priority: realtime + 2 + osPriorityRealtime3 = 48+3, ///< Priority: realtime + 3 + osPriorityRealtime4 = 48+4, ///< Priority: realtime + 4 + osPriorityRealtime5 = 48+5, ///< Priority: realtime + 5 + osPriorityRealtime6 = 48+6, ///< Priority: realtime + 6 + osPriorityRealtime7 = 48+7, ///< Priority: realtime + 7 + osPriorityISR = 56, ///< Reserved for ISR deferred thread. + osPriorityError = -1, ///< System cannot determine priority or illegal priority. + osPriorityReserved = 0x7FFFFFFF ///< Prevents enum down-size compiler optimization. +} osPriority_t; + +/// Entry point of a thread. +typedef void (*osThreadFunc_t) (void *argument); + +/// Timer callback function. +typedef void (*osTimerFunc_t) (void *argument); + +/// Timer type. +typedef enum { + osTimerOnce = 0, ///< One-shot timer. + osTimerPeriodic = 1 ///< Repeating timer. +} osTimerType_t; + +// Timeout value. +#define osWaitForever 0xFFFFFFFFU ///< Wait forever timeout value. + +// Flags options (\ref osThreadFlagsWait and \ref osEventFlagsWait). +#define osFlagsWaitAny 0x00000000U ///< Wait for any flag (default). +#define osFlagsWaitAll 0x00000001U ///< Wait for all flags. +#define osFlagsNoClear 0x00000002U ///< Do not clear flags which have been specified to wait for. + +// Flags errors (returned by osThreadFlagsXxxx and osEventFlagsXxxx). +#define osFlagsError 0x80000000U ///< Error indicator. +#define osFlagsErrorUnknown 0xFFFFFFFFU ///< osError (-1). +#define osFlagsErrorTimeout 0xFFFFFFFEU ///< osErrorTimeout (-2). +#define osFlagsErrorResource 0xFFFFFFFDU ///< osErrorResource (-3). +#define osFlagsErrorParameter 0xFFFFFFFCU ///< osErrorParameter (-4). +#define osFlagsErrorISR 0xFFFFFFFAU ///< osErrorISR (-6). + +// Thread attributes (attr_bits in \ref osThreadAttr_t). +#define osThreadDetached 0x00000000U ///< Thread created in detached mode (default) +#define osThreadJoinable 0x00000001U ///< Thread created in joinable mode + +// Mutex attributes (attr_bits in \ref osMutexAttr_t). +#define osMutexRecursive 0x00000001U ///< Recursive mutex. +#define osMutexPrioInherit 0x00000002U ///< Priority inherit protocol. +#define osMutexRobust 0x00000008U ///< Robust mutex. + +/// Status code values returned by CMSIS-RTOS functions. +typedef enum { + osOK = 0, ///< Operation completed successfully. + osError = -1, ///< Unspecified RTOS error: run-time error but no other error message fits. + osErrorTimeout = -2, ///< Operation not completed within the timeout period. + osErrorResource = -3, ///< Resource not available. + osErrorParameter = -4, ///< Parameter error. + osErrorNoMemory = -5, ///< System is out of memory: it was impossible to allocate or reserve memory for the operation. + osErrorISR = -6, ///< Not allowed in ISR context: the function cannot be called from interrupt service routines. + osStatusReserved = 0x7FFFFFFF ///< Prevents enum down-size compiler optimization. +} osStatus_t; + + +/// \details Thread ID identifies the thread. +typedef void *osThreadId_t; + +/// \details Timer ID identifies the timer. +typedef void *osTimerId_t; + +/// \details Event Flags ID identifies the event flags. +typedef void *osEventFlagsId_t; + +/// \details Mutex ID identifies the mutex. +typedef void *osMutexId_t; + +/// \details Semaphore ID identifies the semaphore. +typedef void *osSemaphoreId_t; + +/// \details Memory Pool ID identifies the memory pool. +typedef void *osMemoryPoolId_t; + +/// \details Message Queue ID identifies the message queue. +typedef void *osMessageQueueId_t; + + +#ifndef TZ_MODULEID_T +#define TZ_MODULEID_T +/// \details Data type that identifies secure software modules called by a process. +typedef uint32_t TZ_ModuleId_t; +#endif + + +/// Attributes structure for thread. +typedef struct { + const char *name; ///< name of the thread + uint32_t attr_bits; ///< attribute bits + void *cb_mem; ///< memory for control block + uint32_t cb_size; ///< size of provided memory for control block + void *stack_mem; ///< memory for stack + uint32_t stack_size; ///< size of stack + osPriority_t priority; ///< initial thread priority (default: osPriorityNormal) + TZ_ModuleId_t tz_module; ///< TrustZone module identifier + uint32_t reserved; ///< reserved (must be 0) +} osThreadAttr_t; + +/// Attributes structure for timer. +typedef struct { + const char *name; ///< name of the timer + uint32_t attr_bits; ///< attribute bits + void *cb_mem; ///< memory for control block + uint32_t cb_size; ///< size of provided memory for control block +} osTimerAttr_t; + +/// Attributes structure for event flags. +typedef struct { + const char *name; ///< name of the event flags + uint32_t attr_bits; ///< attribute bits + void *cb_mem; ///< memory for control block + uint32_t cb_size; ///< size of provided memory for control block +} osEventFlagsAttr_t; + +/// Attributes structure for mutex. +typedef struct { + const char *name; ///< name of the mutex + uint32_t attr_bits; ///< attribute bits + void *cb_mem; ///< memory for control block + uint32_t cb_size; ///< size of provided memory for control block +} osMutexAttr_t; + +/// Attributes structure for semaphore. +typedef struct { + const char *name; ///< name of the semaphore + uint32_t attr_bits; ///< attribute bits + void *cb_mem; ///< memory for control block + uint32_t cb_size; ///< size of provided memory for control block +} osSemaphoreAttr_t; + +/// Attributes structure for memory pool. +typedef struct { + const char *name; ///< name of the memory pool + uint32_t attr_bits; ///< attribute bits + void *cb_mem; ///< memory for control block + uint32_t cb_size; ///< size of provided memory for control block + void *mp_mem; ///< memory for data storage + uint32_t mp_size; ///< size of provided memory for data storage +} osMemoryPoolAttr_t; + +/// Attributes structure for message queue. +typedef struct { + const char *name; ///< name of the message queue + uint32_t attr_bits; ///< attribute bits + void *cb_mem; ///< memory for control block + uint32_t cb_size; ///< size of provided memory for control block + void *mq_mem; ///< memory for data storage + uint32_t mq_size; ///< size of provided memory for data storage +} osMessageQueueAttr_t; + + +// ==== Kernel Management Functions ==== + +/// Initialize the RTOS Kernel. +/// \return status code that indicates the execution status of the function. +osStatus_t osKernelInitialize (void); + +/// Get RTOS Kernel Information. +/// \param[out] version pointer to buffer for retrieving version information. +/// \param[out] id_buf pointer to buffer for retrieving kernel identification string. +/// \param[in] id_size size of buffer for kernel identification string. +/// \return status code that indicates the execution status of the function. +osStatus_t osKernelGetInfo (osVersion_t *version, char *id_buf, uint32_t id_size); + +/// Get the current RTOS Kernel state. +/// \return current RTOS Kernel state. +osKernelState_t osKernelGetState (void); + +/// Start the RTOS Kernel scheduler. +/// \return status code that indicates the execution status of the function. +osStatus_t osKernelStart (void); + +/// Lock the RTOS Kernel scheduler. +/// \return previous lock state (1 - locked, 0 - not locked, error code if negative). +int32_t osKernelLock (void); + +/// Unlock the RTOS Kernel scheduler. +/// \return previous lock state (1 - locked, 0 - not locked, error code if negative). +int32_t osKernelUnlock (void); + +/// Restore the RTOS Kernel scheduler lock state. +/// \param[in] lock lock state obtained by \ref osKernelLock or \ref osKernelUnlock. +/// \return new lock state (1 - locked, 0 - not locked, error code if negative). +int32_t osKernelRestoreLock (int32_t lock); + +/// Suspend the RTOS Kernel scheduler. +/// \return time in ticks, for how long the system can sleep or power-down. +uint32_t osKernelSuspend (void); + +/// Resume the RTOS Kernel scheduler. +/// \param[in] sleep_ticks time in ticks for how long the system was in sleep or power-down mode. +void osKernelResume (uint32_t sleep_ticks); + +/// Get the RTOS kernel tick count. +/// \return RTOS kernel current tick count. +uint32_t osKernelGetTickCount (void); + +/// Get the RTOS kernel tick frequency. +/// \return frequency of the kernel tick in hertz, i.e. kernel ticks per second. +uint32_t osKernelGetTickFreq (void); + +/// Get the RTOS kernel system timer count. +/// \return RTOS kernel current system timer count as 32-bit value. +uint32_t osKernelGetSysTimerCount (void); + +/// Get the RTOS kernel system timer frequency. +/// \return frequency of the system timer in hertz, i.e. timer ticks per second. +uint32_t osKernelGetSysTimerFreq (void); + + +// ==== Thread Management Functions ==== + +/// Create a thread and add it to Active Threads. +/// \param[in] func thread function. +/// \param[in] argument pointer that is passed to the thread function as start argument. +/// \param[in] attr thread attributes; NULL: default values. +/// \return thread ID for reference by other functions or NULL in case of error. +osThreadId_t osThreadNew (osThreadFunc_t func, void *argument, const osThreadAttr_t *attr); + +/// Get name of a thread. +/// \param[in] thread_id thread ID obtained by \ref osThreadNew or \ref osThreadGetId. +/// \return name as NULL terminated string. +const char *osThreadGetName (osThreadId_t thread_id); + +/// Return the thread ID of the current running thread. +/// \return thread ID for reference by other functions or NULL in case of error. +osThreadId_t osThreadGetId (void); + +/// Get current thread state of a thread. +/// \param[in] thread_id thread ID obtained by \ref osThreadNew or \ref osThreadGetId. +/// \return current thread state of the specified thread. +osThreadState_t osThreadGetState (osThreadId_t thread_id); + +/// Get stack size of a thread. +/// \param[in] thread_id thread ID obtained by \ref osThreadNew or \ref osThreadGetId. +/// \return stack size in bytes. +uint32_t osThreadGetStackSize (osThreadId_t thread_id); + +/// Get available stack space of a thread based on stack watermark recording during execution. +/// \param[in] thread_id thread ID obtained by \ref osThreadNew or \ref osThreadGetId. +/// \return remaining stack space in bytes. +uint32_t osThreadGetStackSpace (osThreadId_t thread_id); + +/// Change priority of a thread. +/// \param[in] thread_id thread ID obtained by \ref osThreadNew or \ref osThreadGetId. +/// \param[in] priority new priority value for the thread function. +/// \return status code that indicates the execution status of the function. +osStatus_t osThreadSetPriority (osThreadId_t thread_id, osPriority_t priority); + +/// Get current priority of a thread. +/// \param[in] thread_id thread ID obtained by \ref osThreadNew or \ref osThreadGetId. +/// \return current priority value of the specified thread. +osPriority_t osThreadGetPriority (osThreadId_t thread_id); + +/// Pass control to next thread that is in state \b READY. +/// \return status code that indicates the execution status of the function. +osStatus_t osThreadYield (void); + +/// Suspend execution of a thread. +/// \param[in] thread_id thread ID obtained by \ref osThreadNew or \ref osThreadGetId. +/// \return status code that indicates the execution status of the function. +osStatus_t osThreadSuspend (osThreadId_t thread_id); + +/// Resume execution of a thread. +/// \param[in] thread_id thread ID obtained by \ref osThreadNew or \ref osThreadGetId. +/// \return status code that indicates the execution status of the function. +osStatus_t osThreadResume (osThreadId_t thread_id); + +/// Detach a thread (thread storage can be reclaimed when thread terminates). +/// \param[in] thread_id thread ID obtained by \ref osThreadNew or \ref osThreadGetId. +/// \return status code that indicates the execution status of the function. +osStatus_t osThreadDetach (osThreadId_t thread_id); + +/// Wait for specified thread to terminate. +/// \param[in] thread_id thread ID obtained by \ref osThreadNew or \ref osThreadGetId. +/// \return status code that indicates the execution status of the function. +osStatus_t osThreadJoin (osThreadId_t thread_id); + +/// Terminate execution of current running thread. +__NO_RETURN void osThreadExit (void); + +/// Terminate execution of a thread. +/// \param[in] thread_id thread ID obtained by \ref osThreadNew or \ref osThreadGetId. +/// \return status code that indicates the execution status of the function. +osStatus_t osThreadTerminate (osThreadId_t thread_id); + +/// Get number of active threads. +/// \return number of active threads. +uint32_t osThreadGetCount (void); + +/// Enumerate active threads. +/// \param[out] thread_array pointer to array for retrieving thread IDs. +/// \param[in] array_items maximum number of items in array for retrieving thread IDs. +/// \return number of enumerated threads. +uint32_t osThreadEnumerate (osThreadId_t *thread_array, uint32_t array_items); + + +// ==== Thread Flags Functions ==== + +/// Set the specified Thread Flags of a thread. +/// \param[in] thread_id thread ID obtained by \ref osThreadNew or \ref osThreadGetId. +/// \param[in] flags specifies the flags of the thread that shall be set. +/// \return thread flags after setting or error code if highest bit set. +uint32_t osThreadFlagsSet (osThreadId_t thread_id, uint32_t flags); + +/// Clear the specified Thread Flags of current running thread. +/// \param[in] flags specifies the flags of the thread that shall be cleared. +/// \return thread flags before clearing or error code if highest bit set. +uint32_t osThreadFlagsClear (uint32_t flags); + +/// Get the current Thread Flags of current running thread. +/// \return current thread flags. +uint32_t osThreadFlagsGet (void); + +/// Wait for one or more Thread Flags of the current running thread to become signaled. +/// \param[in] flags specifies the flags to wait for. +/// \param[in] options specifies flags options (osFlagsXxxx). +/// \param[in] timeout \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out. +/// \return thread flags before clearing or error code if highest bit set. +uint32_t osThreadFlagsWait (uint32_t flags, uint32_t options, uint32_t timeout); + + +// ==== Generic Wait Functions ==== + +/// Wait for Timeout (Time Delay). +/// \param[in] ticks \ref CMSIS_RTOS_TimeOutValue "time ticks" value +/// \return status code that indicates the execution status of the function. +osStatus_t osDelay (uint32_t ticks); + +/// Wait until specified time. +/// \param[in] ticks absolute time in ticks +/// \return status code that indicates the execution status of the function. +osStatus_t osDelayUntil (uint32_t ticks); + + +// ==== Timer Management Functions ==== + +/// Create and Initialize a timer. +/// \param[in] func function pointer to callback function. +/// \param[in] type \ref osTimerOnce for one-shot or \ref osTimerPeriodic for periodic behavior. +/// \param[in] argument argument to the timer callback function. +/// \param[in] attr timer attributes; NULL: default values. +/// \return timer ID for reference by other functions or NULL in case of error. +osTimerId_t osTimerNew (osTimerFunc_t func, osTimerType_t type, void *argument, const osTimerAttr_t *attr); + +/// Get name of a timer. +/// \param[in] timer_id timer ID obtained by \ref osTimerNew. +/// \return name as NULL terminated string. +const char *osTimerGetName (osTimerId_t timer_id); + +/// Start or restart a timer. +/// \param[in] timer_id timer ID obtained by \ref osTimerNew. +/// \param[in] ticks \ref CMSIS_RTOS_TimeOutValue "time ticks" value of the timer. +/// \return status code that indicates the execution status of the function. +osStatus_t osTimerStart (osTimerId_t timer_id, uint32_t ticks); + +/// Stop a timer. +/// \param[in] timer_id timer ID obtained by \ref osTimerNew. +/// \return status code that indicates the execution status of the function. +osStatus_t osTimerStop (osTimerId_t timer_id); + +/// Check if a timer is running. +/// \param[in] timer_id timer ID obtained by \ref osTimerNew. +/// \return 0 not running, 1 running. +uint32_t osTimerIsRunning (osTimerId_t timer_id); + +/// Delete a timer. +/// \param[in] timer_id timer ID obtained by \ref osTimerNew. +/// \return status code that indicates the execution status of the function. +osStatus_t osTimerDelete (osTimerId_t timer_id); + + +// ==== Event Flags Management Functions ==== + +/// Create and Initialize an Event Flags object. +/// \param[in] attr event flags attributes; NULL: default values. +/// \return event flags ID for reference by other functions or NULL in case of error. +osEventFlagsId_t osEventFlagsNew (const osEventFlagsAttr_t *attr); + +/// Get name of an Event Flags object. +/// \param[in] ef_id event flags ID obtained by \ref osEventFlagsNew. +/// \return name as NULL terminated string. +const char *osEventFlagsGetName (osEventFlagsId_t ef_id); + +/// Set the specified Event Flags. +/// \param[in] ef_id event flags ID obtained by \ref osEventFlagsNew. +/// \param[in] flags specifies the flags that shall be set. +/// \return event flags after setting or error code if highest bit set. +uint32_t osEventFlagsSet (osEventFlagsId_t ef_id, uint32_t flags); + +/// Clear the specified Event Flags. +/// \param[in] ef_id event flags ID obtained by \ref osEventFlagsNew. +/// \param[in] flags specifies the flags that shall be cleared. +/// \return event flags before clearing or error code if highest bit set. +uint32_t osEventFlagsClear (osEventFlagsId_t ef_id, uint32_t flags); + +/// Get the current Event Flags. +/// \param[in] ef_id event flags ID obtained by \ref osEventFlagsNew. +/// \return current event flags. +uint32_t osEventFlagsGet (osEventFlagsId_t ef_id); + +/// Wait for one or more Event Flags to become signaled. +/// \param[in] ef_id event flags ID obtained by \ref osEventFlagsNew. +/// \param[in] flags specifies the flags to wait for. +/// \param[in] options specifies flags options (osFlagsXxxx). +/// \param[in] timeout \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out. +/// \return event flags before clearing or error code if highest bit set. +uint32_t osEventFlagsWait (osEventFlagsId_t ef_id, uint32_t flags, uint32_t options, uint32_t timeout); + +/// Delete an Event Flags object. +/// \param[in] ef_id event flags ID obtained by \ref osEventFlagsNew. +/// \return status code that indicates the execution status of the function. +osStatus_t osEventFlagsDelete (osEventFlagsId_t ef_id); + + +// ==== Mutex Management Functions ==== + +/// Create and Initialize a Mutex object. +/// \param[in] attr mutex attributes; NULL: default values. +/// \return mutex ID for reference by other functions or NULL in case of error. +osMutexId_t osMutexNew (const osMutexAttr_t *attr); + +/// Get name of a Mutex object. +/// \param[in] mutex_id mutex ID obtained by \ref osMutexNew. +/// \return name as NULL terminated string. +const char *osMutexGetName (osMutexId_t mutex_id); + +/// Acquire a Mutex or timeout if it is locked. +/// \param[in] mutex_id mutex ID obtained by \ref osMutexNew. +/// \param[in] timeout \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out. +/// \return status code that indicates the execution status of the function. +osStatus_t osMutexAcquire (osMutexId_t mutex_id, uint32_t timeout); + +/// Release a Mutex that was acquired by \ref osMutexAcquire. +/// \param[in] mutex_id mutex ID obtained by \ref osMutexNew. +/// \return status code that indicates the execution status of the function. +osStatus_t osMutexRelease (osMutexId_t mutex_id); + +/// Get Thread which owns a Mutex object. +/// \param[in] mutex_id mutex ID obtained by \ref osMutexNew. +/// \return thread ID of owner thread or NULL when mutex was not acquired. +osThreadId_t osMutexGetOwner (osMutexId_t mutex_id); + +/// Delete a Mutex object. +/// \param[in] mutex_id mutex ID obtained by \ref osMutexNew. +/// \return status code that indicates the execution status of the function. +osStatus_t osMutexDelete (osMutexId_t mutex_id); + + +// ==== Semaphore Management Functions ==== + +/// Create and Initialize a Semaphore object. +/// \param[in] max_count maximum number of available tokens. +/// \param[in] initial_count initial number of available tokens. +/// \param[in] attr semaphore attributes; NULL: default values. +/// \return semaphore ID for reference by other functions or NULL in case of error. +osSemaphoreId_t osSemaphoreNew (uint32_t max_count, uint32_t initial_count, const osSemaphoreAttr_t *attr); + +/// Get name of a Semaphore object. +/// \param[in] semaphore_id semaphore ID obtained by \ref osSemaphoreNew. +/// \return name as NULL terminated string. +const char *osSemaphoreGetName (osSemaphoreId_t semaphore_id); + +/// Acquire a Semaphore token or timeout if no tokens are available. +/// \param[in] semaphore_id semaphore ID obtained by \ref osSemaphoreNew. +/// \param[in] timeout \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out. +/// \return status code that indicates the execution status of the function. +osStatus_t osSemaphoreAcquire (osSemaphoreId_t semaphore_id, uint32_t timeout); + +/// Release a Semaphore token up to the initial maximum count. +/// \param[in] semaphore_id semaphore ID obtained by \ref osSemaphoreNew. +/// \return status code that indicates the execution status of the function. +osStatus_t osSemaphoreRelease (osSemaphoreId_t semaphore_id); + +/// Get current Semaphore token count. +/// \param[in] semaphore_id semaphore ID obtained by \ref osSemaphoreNew. +/// \return number of tokens available. +uint32_t osSemaphoreGetCount (osSemaphoreId_t semaphore_id); + +/// Delete a Semaphore object. +/// \param[in] semaphore_id semaphore ID obtained by \ref osSemaphoreNew. +/// \return status code that indicates the execution status of the function. +osStatus_t osSemaphoreDelete (osSemaphoreId_t semaphore_id); + + +// ==== Memory Pool Management Functions ==== + +/// Create and Initialize a Memory Pool object. +/// \param[in] block_count maximum number of memory blocks in memory pool. +/// \param[in] block_size memory block size in bytes. +/// \param[in] attr memory pool attributes; NULL: default values. +/// \return memory pool ID for reference by other functions or NULL in case of error. +osMemoryPoolId_t osMemoryPoolNew (uint32_t block_count, uint32_t block_size, const osMemoryPoolAttr_t *attr); + +/// Get name of a Memory Pool object. +/// \param[in] mp_id memory pool ID obtained by \ref osMemoryPoolNew. +/// \return name as NULL terminated string. +const char *osMemoryPoolGetName (osMemoryPoolId_t mp_id); + +/// Allocate a memory block from a Memory Pool. +/// \param[in] mp_id memory pool ID obtained by \ref osMemoryPoolNew. +/// \param[in] timeout \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out. +/// \return address of the allocated memory block or NULL in case of no memory is available. +void *osMemoryPoolAlloc (osMemoryPoolId_t mp_id, uint32_t timeout); + +/// Return an allocated memory block back to a Memory Pool. +/// \param[in] mp_id memory pool ID obtained by \ref osMemoryPoolNew. +/// \param[in] block address of the allocated memory block to be returned to the memory pool. +/// \return status code that indicates the execution status of the function. +osStatus_t osMemoryPoolFree (osMemoryPoolId_t mp_id, void *block); + +/// Get maximum number of memory blocks in a Memory Pool. +/// \param[in] mp_id memory pool ID obtained by \ref osMemoryPoolNew. +/// \return maximum number of memory blocks. +uint32_t osMemoryPoolGetCapacity (osMemoryPoolId_t mp_id); + +/// Get memory block size in a Memory Pool. +/// \param[in] mp_id memory pool ID obtained by \ref osMemoryPoolNew. +/// \return memory block size in bytes. +uint32_t osMemoryPoolGetBlockSize (osMemoryPoolId_t mp_id); + +/// Get number of memory blocks used in a Memory Pool. +/// \param[in] mp_id memory pool ID obtained by \ref osMemoryPoolNew. +/// \return number of memory blocks used. +uint32_t osMemoryPoolGetCount (osMemoryPoolId_t mp_id); + +/// Get number of memory blocks available in a Memory Pool. +/// \param[in] mp_id memory pool ID obtained by \ref osMemoryPoolNew. +/// \return number of memory blocks available. +uint32_t osMemoryPoolGetSpace (osMemoryPoolId_t mp_id); + +/// Delete a Memory Pool object. +/// \param[in] mp_id memory pool ID obtained by \ref osMemoryPoolNew. +/// \return status code that indicates the execution status of the function. +osStatus_t osMemoryPoolDelete (osMemoryPoolId_t mp_id); + + +// ==== Message Queue Management Functions ==== + +/// Create and Initialize a Message Queue object. +/// \param[in] msg_count maximum number of messages in queue. +/// \param[in] msg_size maximum message size in bytes. +/// \param[in] attr message queue attributes; NULL: default values. +/// \return message queue ID for reference by other functions or NULL in case of error. +osMessageQueueId_t osMessageQueueNew (uint32_t msg_count, uint32_t msg_size, const osMessageQueueAttr_t *attr); + +/// Get name of a Message Queue object. +/// \param[in] mq_id message queue ID obtained by \ref osMessageQueueNew. +/// \return name as NULL terminated string. +const char *osMessageQueueGetName (osMessageQueueId_t mq_id); + +/// Put a Message into a Queue or timeout if Queue is full. +/// \param[in] mq_id message queue ID obtained by \ref osMessageQueueNew. +/// \param[in] msg_ptr pointer to buffer with message to put into a queue. +/// \param[in] msg_prio message priority. +/// \param[in] timeout \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out. +/// \return status code that indicates the execution status of the function. +osStatus_t osMessageQueuePut (osMessageQueueId_t mq_id, const void *msg_ptr, uint8_t msg_prio, uint32_t timeout); + +/// Get a Message from a Queue or timeout if Queue is empty. +/// \param[in] mq_id message queue ID obtained by \ref osMessageQueueNew. +/// \param[out] msg_ptr pointer to buffer for message to get from a queue. +/// \param[out] msg_prio pointer to buffer for message priority or NULL. +/// \param[in] timeout \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out. +/// \return status code that indicates the execution status of the function. +osStatus_t osMessageQueueGet (osMessageQueueId_t mq_id, void *msg_ptr, uint8_t *msg_prio, uint32_t timeout); + +/// Get maximum number of messages in a Message Queue. +/// \param[in] mq_id message queue ID obtained by \ref osMessageQueueNew. +/// \return maximum number of messages. +uint32_t osMessageQueueGetCapacity (osMessageQueueId_t mq_id); + +/// Get maximum message size in a Memory Pool. +/// \param[in] mq_id message queue ID obtained by \ref osMessageQueueNew. +/// \return maximum message size in bytes. +uint32_t osMessageQueueGetMsgSize (osMessageQueueId_t mq_id); + +/// Get number of queued messages in a Message Queue. +/// \param[in] mq_id message queue ID obtained by \ref osMessageQueueNew. +/// \return number of queued messages. +uint32_t osMessageQueueGetCount (osMessageQueueId_t mq_id); + +/// Get number of available slots for messages in a Message Queue. +/// \param[in] mq_id message queue ID obtained by \ref osMessageQueueNew. +/// \return number of available slots for messages. +uint32_t osMessageQueueGetSpace (osMessageQueueId_t mq_id); + +/// Reset a Message Queue to initial empty state. +/// \param[in] mq_id message queue ID obtained by \ref osMessageQueueNew. +/// \return status code that indicates the execution status of the function. +osStatus_t osMessageQueueReset (osMessageQueueId_t mq_id); + +/// Delete a Message Queue object. +/// \param[in] mq_id message queue ID obtained by \ref osMessageQueueNew. +/// \return status code that indicates the execution status of the function. +osStatus_t osMessageQueueDelete (osMessageQueueId_t mq_id); + + +#ifdef __cplusplus +} +#endif + +#endif // CMSIS_OS2_H_ diff --git a/firmware/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/freertos_mpool.h b/firmware/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/freertos_mpool.h new file mode 100644 index 0000000..cea5017 --- /dev/null +++ b/firmware/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/freertos_mpool.h @@ -0,0 +1,63 @@ +/* -------------------------------------------------------------------------- + * Copyright (c) 2013-2020 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Name: freertos_mpool.h + * Purpose: CMSIS RTOS2 wrapper for FreeRTOS + * + *---------------------------------------------------------------------------*/ + +#ifndef FREERTOS_MPOOL_H_ +#define FREERTOS_MPOOL_H_ + +#include +#include "FreeRTOS.h" +#include "semphr.h" + +/* Memory Pool implementation definitions */ +#define MPOOL_STATUS 0x5EED0000U + +/* Memory Block header */ +typedef struct { + void *next; /* Pointer to next block */ +} MemPoolBlock_t; + +/* Memory Pool control block */ +typedef struct MemPoolDef_t { + MemPoolBlock_t *head; /* Pointer to head block */ + SemaphoreHandle_t sem; /* Pool semaphore handle */ + uint8_t *mem_arr; /* Pool memory array */ + uint32_t mem_sz; /* Pool memory array size */ + const char *name; /* Pointer to name string */ + uint32_t bl_sz; /* Size of a single block */ + uint32_t bl_cnt; /* Number of blocks */ + uint32_t n; /* Block allocation index */ + volatile uint32_t status; /* Object status flags */ +#if (configSUPPORT_STATIC_ALLOCATION == 1) + StaticSemaphore_t mem_sem; /* Semaphore object memory */ +#endif +} MemPool_t; + +/* No need to hide static object type, just align to coding style */ +#define StaticMemPool_t MemPool_t + +/* Define memory pool control block size */ +#define MEMPOOL_CB_SIZE (sizeof(StaticMemPool_t)) + +/* Define size of the byte array required to create count of blocks of given size */ +#define MEMPOOL_ARR_SIZE(bl_count, bl_size) (((((bl_size) + (4 - 1)) / 4) * 4)*(bl_count)) + +#endif /* FREERTOS_MPOOL_H_ */ diff --git a/firmware/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/freertos_os2.h b/firmware/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/freertos_os2.h new file mode 100644 index 0000000..c125e2a --- /dev/null +++ b/firmware/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/freertos_os2.h @@ -0,0 +1,310 @@ +/* -------------------------------------------------------------------------- + * Copyright (c) 2013-2020 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Name: freertos_os2.h + * Purpose: CMSIS RTOS2 wrapper for FreeRTOS + * + *---------------------------------------------------------------------------*/ + +#ifndef FREERTOS_OS2_H_ +#define FREERTOS_OS2_H_ + +#include +#include + +#include "FreeRTOS.h" // ARM.FreeRTOS::RTOS:Core + +#include CMSIS_device_header + +/* + CMSIS-RTOS2 FreeRTOS image size optimization definitions. + + Note: Definitions configUSE_OS2 can be used to optimize FreeRTOS image size when + certain functionality is not required when using CMSIS-RTOS2 API. + In general optimization decisions are left to the tool chain but in cases + when coding style prevents it to optimize the code following optional + definitions can be used. +*/ + +/* + Option to exclude CMSIS-RTOS2 functions osThreadSuspend and osThreadResume from + the application image. +*/ +#ifndef configUSE_OS2_THREAD_SUSPEND_RESUME +#define configUSE_OS2_THREAD_SUSPEND_RESUME 1 +#endif + +/* + Option to exclude CMSIS-RTOS2 function osThreadEnumerate from the application image. +*/ +#ifndef configUSE_OS2_THREAD_ENUMERATE +#define configUSE_OS2_THREAD_ENUMERATE 1 +#endif + +/* + Option to disable CMSIS-RTOS2 function osEventFlagsSet and osEventFlagsClear + operation from ISR. +*/ +#ifndef configUSE_OS2_EVENTFLAGS_FROM_ISR +#define configUSE_OS2_EVENTFLAGS_FROM_ISR 1 +#endif + +/* + Option to exclude CMSIS-RTOS2 Thread Flags API functions from the application image. +*/ +#ifndef configUSE_OS2_THREAD_FLAGS +#define configUSE_OS2_THREAD_FLAGS configUSE_TASK_NOTIFICATIONS +#endif + +/* + Option to exclude CMSIS-RTOS2 Timer API functions from the application image. +*/ +#ifndef configUSE_OS2_TIMER +#define configUSE_OS2_TIMER configUSE_TIMERS +#endif + +/* + Option to exclude CMSIS-RTOS2 Mutex API functions from the application image. +*/ +#ifndef configUSE_OS2_MUTEX +#define configUSE_OS2_MUTEX configUSE_MUTEXES +#endif + + +/* + CMSIS-RTOS2 FreeRTOS configuration check (FreeRTOSConfig.h). + + Note: CMSIS-RTOS API requires functions included by using following definitions. + In case if certain API function is not used compiler will optimize it away. +*/ +#if (INCLUDE_xSemaphoreGetMutexHolder == 0) + /* + CMSIS-RTOS2 function osMutexGetOwner uses FreeRTOS function xSemaphoreGetMutexHolder. In case if + osMutexGetOwner is not used in the application image, compiler will optimize it away. + Set #define INCLUDE_xSemaphoreGetMutexHolder 1 to fix this error. + */ + #error "Definition INCLUDE_xSemaphoreGetMutexHolder must equal 1 to implement Mutex Management API." +#endif +#if (INCLUDE_vTaskDelay == 0) + /* + CMSIS-RTOS2 function osDelay uses FreeRTOS function vTaskDelay. In case if + osDelay is not used in the application image, compiler will optimize it away. + Set #define INCLUDE_vTaskDelay 1 to fix this error. + */ + #error "Definition INCLUDE_vTaskDelay must equal 1 to implement Generic Wait Functions API." +#endif +#if (INCLUDE_vTaskDelayUntil == 0) + /* + CMSIS-RTOS2 function osDelayUntil uses FreeRTOS function vTaskDelayUntil. In case if + osDelayUntil is not used in the application image, compiler will optimize it away. + Set #define INCLUDE_vTaskDelayUntil 1 to fix this error. + */ + #error "Definition INCLUDE_vTaskDelayUntil must equal 1 to implement Generic Wait Functions API." +#endif +#if (INCLUDE_vTaskDelete == 0) + /* + CMSIS-RTOS2 function osThreadTerminate and osThreadExit uses FreeRTOS function + vTaskDelete. In case if they are not used in the application image, compiler + will optimize them away. + Set #define INCLUDE_vTaskDelete 1 to fix this error. + */ + #error "Definition INCLUDE_vTaskDelete must equal 1 to implement Thread Management API." +#endif +#if (INCLUDE_xTaskGetCurrentTaskHandle == 0) + /* + CMSIS-RTOS2 API uses FreeRTOS function xTaskGetCurrentTaskHandle to implement + functions osThreadGetId, osThreadFlagsClear and osThreadFlagsGet. In case if these + functions are not used in the application image, compiler will optimize them away. + Set #define INCLUDE_xTaskGetCurrentTaskHandle 1 to fix this error. + */ + #error "Definition INCLUDE_xTaskGetCurrentTaskHandle must equal 1 to implement Thread Management API." +#endif +#if (INCLUDE_xTaskGetSchedulerState == 0) + /* + CMSIS-RTOS2 API uses FreeRTOS function xTaskGetSchedulerState to implement Kernel + tick handling and therefore it is vital that xTaskGetSchedulerState is included into + the application image. + Set #define INCLUDE_xTaskGetSchedulerState 1 to fix this error. + */ + #error "Definition INCLUDE_xTaskGetSchedulerState must equal 1 to implement Kernel Information and Control API." +#endif +#if (INCLUDE_uxTaskGetStackHighWaterMark == 0) + /* + CMSIS-RTOS2 function osThreadGetStackSpace uses FreeRTOS function uxTaskGetStackHighWaterMark. + In case if osThreadGetStackSpace is not used in the application image, compiler will + optimize it away. + Set #define INCLUDE_uxTaskGetStackHighWaterMark 1 to fix this error. + */ + #error "Definition INCLUDE_uxTaskGetStackHighWaterMark must equal 1 to implement Thread Management API." +#endif +#if (INCLUDE_uxTaskPriorityGet == 0) + /* + CMSIS-RTOS2 function osThreadGetPriority uses FreeRTOS function uxTaskPriorityGet. In case if + osThreadGetPriority is not used in the application image, compiler will optimize it away. + Set #define INCLUDE_uxTaskPriorityGet 1 to fix this error. + */ + #error "Definition INCLUDE_uxTaskPriorityGet must equal 1 to implement Thread Management API." +#endif +#if (INCLUDE_vTaskPrioritySet == 0) + /* + CMSIS-RTOS2 function osThreadSetPriority uses FreeRTOS function vTaskPrioritySet. In case if + osThreadSetPriority is not used in the application image, compiler will optimize it away. + Set #define INCLUDE_vTaskPrioritySet 1 to fix this error. + */ + #error "Definition INCLUDE_vTaskPrioritySet must equal 1 to implement Thread Management API." +#endif +#if (INCLUDE_eTaskGetState == 0) + /* + CMSIS-RTOS2 API uses FreeRTOS function vTaskDelayUntil to implement functions osThreadGetState + and osThreadTerminate. In case if these functions are not used in the application image, + compiler will optimize them away. + Set #define INCLUDE_eTaskGetState 1 to fix this error. + */ + #error "Definition INCLUDE_eTaskGetState must equal 1 to implement Thread Management API." +#endif +#if (INCLUDE_vTaskSuspend == 0) + /* + CMSIS-RTOS2 API uses FreeRTOS functions vTaskSuspend and vTaskResume to implement + functions osThreadSuspend and osThreadResume. In case if these functions are not + used in the application image, compiler will optimize them away. + Set #define INCLUDE_vTaskSuspend 1 to fix this error. + + Alternatively, if the application does not use osThreadSuspend and + osThreadResume they can be excluded from the image code by setting: + #define configUSE_OS2_THREAD_SUSPEND_RESUME 0 (in FreeRTOSConfig.h) + */ + #if (configUSE_OS2_THREAD_SUSPEND_RESUME == 1) + #error "Definition INCLUDE_vTaskSuspend must equal 1 to implement Kernel Information and Control API." + #endif +#endif +#if (INCLUDE_xTimerPendFunctionCall == 0) + /* + CMSIS-RTOS2 function osEventFlagsSet and osEventFlagsClear, when called from + the ISR, call FreeRTOS functions xEventGroupSetBitsFromISR and + xEventGroupClearBitsFromISR which are only enabled if timers are operational and + xTimerPendFunctionCall in enabled. + Set #define INCLUDE_xTimerPendFunctionCall 1 and #define configUSE_TIMERS 1 + to fix this error. + + Alternatively, if the application does not use osEventFlagsSet and osEventFlagsClear + from the ISR their operation from ISR can be restricted by setting: + #define configUSE_OS2_EVENTFLAGS_FROM_ISR 0 (in FreeRTOSConfig.h) + */ + #if (configUSE_OS2_EVENTFLAGS_FROM_ISR == 1) + #error "Definition INCLUDE_xTimerPendFunctionCall must equal 1 to implement Event Flags API." + #endif +#endif + +#if (configUSE_TIMERS == 0) + /* + CMSIS-RTOS2 Timer Management API functions use FreeRTOS timer functions to implement + timer management. In case if these functions are not used in the application image, + compiler will optimize them away. + Set #define configUSE_TIMERS 1 to fix this error. + + Alternatively, if the application does not use timer functions they can be + excluded from the image code by setting: + #define configUSE_OS2_TIMER 0 (in FreeRTOSConfig.h) + */ + #if (configUSE_OS2_TIMER == 1) + #error "Definition configUSE_TIMERS must equal 1 to implement Timer Management API." + #endif +#endif + +#if (configUSE_MUTEXES == 0) + /* + CMSIS-RTOS2 Mutex Management API functions use FreeRTOS mutex functions to implement + mutex management. In case if these functions are not used in the application image, + compiler will optimize them away. + Set #define configUSE_MUTEXES 1 to fix this error. + + Alternatively, if the application does not use mutex functions they can be + excluded from the image code by setting: + #define configUSE_OS2_MUTEX 0 (in FreeRTOSConfig.h) + */ + #if (configUSE_OS2_MUTEX == 1) + #error "Definition configUSE_MUTEXES must equal 1 to implement Mutex Management API." + #endif +#endif + +#if (configUSE_COUNTING_SEMAPHORES == 0) + /* + CMSIS-RTOS2 Memory Pool functions use FreeRTOS function xSemaphoreCreateCounting + to implement memory pools. In case if these functions are not used in the application image, + compiler will optimize them away. + Set #define configUSE_COUNTING_SEMAPHORES 1 to fix this error. + */ + #error "Definition configUSE_COUNTING_SEMAPHORES must equal 1 to implement Memory Pool API." +#endif +#if (configUSE_TASK_NOTIFICATIONS == 0) + /* + CMSIS-RTOS2 Thread Flags API functions use FreeRTOS Task Notification functions to implement + thread flag management. In case if these functions are not used in the application image, + compiler will optimize them away. + Set #define configUSE_TASK_NOTIFICATIONS 1 to fix this error. + + Alternatively, if the application does not use thread flags functions they can be + excluded from the image code by setting: + #define configUSE_OS2_THREAD_FLAGS 0 (in FreeRTOSConfig.h) + */ + #if (configUSE_OS2_THREAD_FLAGS == 1) + #error "Definition configUSE_TASK_NOTIFICATIONS must equal 1 to implement Thread Flags API." + #endif +#endif + +#if (configUSE_TRACE_FACILITY == 0) + /* + CMSIS-RTOS2 function osThreadEnumerate requires FreeRTOS function uxTaskGetSystemState + which is only enabled if configUSE_TRACE_FACILITY == 1. + Set #define configUSE_TRACE_FACILITY 1 to fix this error. + + Alternatively, if the application does not use osThreadEnumerate it can be + excluded from the image code by setting: + #define configUSE_OS2_THREAD_ENUMERATE 0 (in FreeRTOSConfig.h) + */ + #if (configUSE_OS2_THREAD_ENUMERATE == 1) + #error "Definition configUSE_TRACE_FACILITY must equal 1 to implement osThreadEnumerate." + #endif +#endif + +#if (configUSE_16_BIT_TICKS == 1) + /* + CMSIS-RTOS2 wrapper for FreeRTOS relies on 32-bit tick timer which is also optimal on + a 32-bit CPU architectures. + Set #define configUSE_16_BIT_TICKS 0 to fix this error. + */ + #error "Definition configUSE_16_BIT_TICKS must be zero to implement CMSIS-RTOS2 API." +#endif + +#if (configMAX_PRIORITIES != 56) + /* + CMSIS-RTOS2 defines 56 different priorities (see osPriority_t) and portable CMSIS-RTOS2 + implementation should implement the same number of priorities. + Set #define configMAX_PRIORITIES 56 to fix this error. + */ + #error "Definition configMAX_PRIORITIES must equal 56 to implement Thread Management API." +#endif +#if (configUSE_PORT_OPTIMISED_TASK_SELECTION != 0) + /* + CMSIS-RTOS2 requires handling of 56 different priorities (see osPriority_t) while FreeRTOS port + optimised selection for Cortex core only handles 32 different priorities. + Set #define configUSE_PORT_OPTIMISED_TASK_SELECTION 0 to fix this error. + */ + #error "Definition configUSE_PORT_OPTIMISED_TASK_SELECTION must be zero to implement Thread Management API." +#endif + +#endif /* FREERTOS_OS2_H_ */ diff --git a/firmware/Middlewares/Third_Party/FreeRTOS/Source/LICENSE b/firmware/Middlewares/Third_Party/FreeRTOS/Source/LICENSE new file mode 100644 index 0000000..2ce4711 --- /dev/null +++ b/firmware/Middlewares/Third_Party/FreeRTOS/Source/LICENSE @@ -0,0 +1,18 @@ +Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + diff --git a/firmware/Middlewares/Third_Party/FreeRTOS/Source/croutine.c b/firmware/Middlewares/Third_Party/FreeRTOS/Source/croutine.c new file mode 100644 index 0000000..9ce5003 --- /dev/null +++ b/firmware/Middlewares/Third_Party/FreeRTOS/Source/croutine.c @@ -0,0 +1,353 @@ +/* + * FreeRTOS Kernel V10.3.1 + * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * http://www.FreeRTOS.org + * http://aws.amazon.com/freertos + * + * 1 tab == 4 spaces! + */ + +#include "FreeRTOS.h" +#include "task.h" +#include "croutine.h" + +/* Remove the whole file is co-routines are not being used. */ +#if( configUSE_CO_ROUTINES != 0 ) + +/* + * Some kernel aware debuggers require data to be viewed to be global, rather + * than file scope. + */ +#ifdef portREMOVE_STATIC_QUALIFIER + #define static +#endif + + +/* Lists for ready and blocked co-routines. --------------------*/ +static List_t pxReadyCoRoutineLists[ configMAX_CO_ROUTINE_PRIORITIES ]; /*< Prioritised ready co-routines. */ +static List_t xDelayedCoRoutineList1; /*< Delayed co-routines. */ +static List_t xDelayedCoRoutineList2; /*< Delayed co-routines (two lists are used - one for delays that have overflowed the current tick count. */ +static List_t * pxDelayedCoRoutineList; /*< Points to the delayed co-routine list currently being used. */ +static List_t * pxOverflowDelayedCoRoutineList; /*< Points to the delayed co-routine list currently being used to hold co-routines that have overflowed the current tick count. */ +static List_t xPendingReadyCoRoutineList; /*< Holds co-routines that have been readied by an external event. They cannot be added directly to the ready lists as the ready lists cannot be accessed by interrupts. */ + +/* Other file private variables. --------------------------------*/ +CRCB_t * pxCurrentCoRoutine = NULL; +static UBaseType_t uxTopCoRoutineReadyPriority = 0; +static TickType_t xCoRoutineTickCount = 0, xLastTickCount = 0, xPassedTicks = 0; + +/* The initial state of the co-routine when it is created. */ +#define corINITIAL_STATE ( 0 ) + +/* + * Place the co-routine represented by pxCRCB into the appropriate ready queue + * for the priority. It is inserted at the end of the list. + * + * This macro accesses the co-routine ready lists and therefore must not be + * used from within an ISR. + */ +#define prvAddCoRoutineToReadyQueue( pxCRCB ) \ +{ \ + if( pxCRCB->uxPriority > uxTopCoRoutineReadyPriority ) \ + { \ + uxTopCoRoutineReadyPriority = pxCRCB->uxPriority; \ + } \ + vListInsertEnd( ( List_t * ) &( pxReadyCoRoutineLists[ pxCRCB->uxPriority ] ), &( pxCRCB->xGenericListItem ) ); \ +} + +/* + * Utility to ready all the lists used by the scheduler. This is called + * automatically upon the creation of the first co-routine. + */ +static void prvInitialiseCoRoutineLists( void ); + +/* + * Co-routines that are readied by an interrupt cannot be placed directly into + * the ready lists (there is no mutual exclusion). Instead they are placed in + * in the pending ready list in order that they can later be moved to the ready + * list by the co-routine scheduler. + */ +static void prvCheckPendingReadyList( void ); + +/* + * Macro that looks at the list of co-routines that are currently delayed to + * see if any require waking. + * + * Co-routines are stored in the queue in the order of their wake time - + * meaning once one co-routine has been found whose timer has not expired + * we need not look any further down the list. + */ +static void prvCheckDelayedList( void ); + +/*-----------------------------------------------------------*/ + +BaseType_t xCoRoutineCreate( crCOROUTINE_CODE pxCoRoutineCode, UBaseType_t uxPriority, UBaseType_t uxIndex ) +{ +BaseType_t xReturn; +CRCB_t *pxCoRoutine; + + /* Allocate the memory that will store the co-routine control block. */ + pxCoRoutine = ( CRCB_t * ) pvPortMalloc( sizeof( CRCB_t ) ); + if( pxCoRoutine ) + { + /* If pxCurrentCoRoutine is NULL then this is the first co-routine to + be created and the co-routine data structures need initialising. */ + if( pxCurrentCoRoutine == NULL ) + { + pxCurrentCoRoutine = pxCoRoutine; + prvInitialiseCoRoutineLists(); + } + + /* Check the priority is within limits. */ + if( uxPriority >= configMAX_CO_ROUTINE_PRIORITIES ) + { + uxPriority = configMAX_CO_ROUTINE_PRIORITIES - 1; + } + + /* Fill out the co-routine control block from the function parameters. */ + pxCoRoutine->uxState = corINITIAL_STATE; + pxCoRoutine->uxPriority = uxPriority; + pxCoRoutine->uxIndex = uxIndex; + pxCoRoutine->pxCoRoutineFunction = pxCoRoutineCode; + + /* Initialise all the other co-routine control block parameters. */ + vListInitialiseItem( &( pxCoRoutine->xGenericListItem ) ); + vListInitialiseItem( &( pxCoRoutine->xEventListItem ) ); + + /* Set the co-routine control block as a link back from the ListItem_t. + This is so we can get back to the containing CRCB from a generic item + in a list. */ + listSET_LIST_ITEM_OWNER( &( pxCoRoutine->xGenericListItem ), pxCoRoutine ); + listSET_LIST_ITEM_OWNER( &( pxCoRoutine->xEventListItem ), pxCoRoutine ); + + /* Event lists are always in priority order. */ + listSET_LIST_ITEM_VALUE( &( pxCoRoutine->xEventListItem ), ( ( TickType_t ) configMAX_CO_ROUTINE_PRIORITIES - ( TickType_t ) uxPriority ) ); + + /* Now the co-routine has been initialised it can be added to the ready + list at the correct priority. */ + prvAddCoRoutineToReadyQueue( pxCoRoutine ); + + xReturn = pdPASS; + } + else + { + xReturn = errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY; + } + + return xReturn; +} +/*-----------------------------------------------------------*/ + +void vCoRoutineAddToDelayedList( TickType_t xTicksToDelay, List_t *pxEventList ) +{ +TickType_t xTimeToWake; + + /* Calculate the time to wake - this may overflow but this is + not a problem. */ + xTimeToWake = xCoRoutineTickCount + xTicksToDelay; + + /* We must remove ourselves from the ready list before adding + ourselves to the blocked list as the same list item is used for + both lists. */ + ( void ) uxListRemove( ( ListItem_t * ) &( pxCurrentCoRoutine->xGenericListItem ) ); + + /* The list item will be inserted in wake time order. */ + listSET_LIST_ITEM_VALUE( &( pxCurrentCoRoutine->xGenericListItem ), xTimeToWake ); + + if( xTimeToWake < xCoRoutineTickCount ) + { + /* Wake time has overflowed. Place this item in the + overflow list. */ + vListInsert( ( List_t * ) pxOverflowDelayedCoRoutineList, ( ListItem_t * ) &( pxCurrentCoRoutine->xGenericListItem ) ); + } + else + { + /* The wake time has not overflowed, so we can use the + current block list. */ + vListInsert( ( List_t * ) pxDelayedCoRoutineList, ( ListItem_t * ) &( pxCurrentCoRoutine->xGenericListItem ) ); + } + + if( pxEventList ) + { + /* Also add the co-routine to an event list. If this is done then the + function must be called with interrupts disabled. */ + vListInsert( pxEventList, &( pxCurrentCoRoutine->xEventListItem ) ); + } +} +/*-----------------------------------------------------------*/ + +static void prvCheckPendingReadyList( void ) +{ + /* Are there any co-routines waiting to get moved to the ready list? These + are co-routines that have been readied by an ISR. The ISR cannot access + the ready lists itself. */ + while( listLIST_IS_EMPTY( &xPendingReadyCoRoutineList ) == pdFALSE ) + { + CRCB_t *pxUnblockedCRCB; + + /* The pending ready list can be accessed by an ISR. */ + portDISABLE_INTERRUPTS(); + { + pxUnblockedCRCB = ( CRCB_t * ) listGET_OWNER_OF_HEAD_ENTRY( (&xPendingReadyCoRoutineList) ); + ( void ) uxListRemove( &( pxUnblockedCRCB->xEventListItem ) ); + } + portENABLE_INTERRUPTS(); + + ( void ) uxListRemove( &( pxUnblockedCRCB->xGenericListItem ) ); + prvAddCoRoutineToReadyQueue( pxUnblockedCRCB ); + } +} +/*-----------------------------------------------------------*/ + +static void prvCheckDelayedList( void ) +{ +CRCB_t *pxCRCB; + + xPassedTicks = xTaskGetTickCount() - xLastTickCount; + while( xPassedTicks ) + { + xCoRoutineTickCount++; + xPassedTicks--; + + /* If the tick count has overflowed we need to swap the ready lists. */ + if( xCoRoutineTickCount == 0 ) + { + List_t * pxTemp; + + /* Tick count has overflowed so we need to swap the delay lists. If there are + any items in pxDelayedCoRoutineList here then there is an error! */ + pxTemp = pxDelayedCoRoutineList; + pxDelayedCoRoutineList = pxOverflowDelayedCoRoutineList; + pxOverflowDelayedCoRoutineList = pxTemp; + } + + /* See if this tick has made a timeout expire. */ + while( listLIST_IS_EMPTY( pxDelayedCoRoutineList ) == pdFALSE ) + { + pxCRCB = ( CRCB_t * ) listGET_OWNER_OF_HEAD_ENTRY( pxDelayedCoRoutineList ); + + if( xCoRoutineTickCount < listGET_LIST_ITEM_VALUE( &( pxCRCB->xGenericListItem ) ) ) + { + /* Timeout not yet expired. */ + break; + } + + portDISABLE_INTERRUPTS(); + { + /* The event could have occurred just before this critical + section. If this is the case then the generic list item will + have been moved to the pending ready list and the following + line is still valid. Also the pvContainer parameter will have + been set to NULL so the following lines are also valid. */ + ( void ) uxListRemove( &( pxCRCB->xGenericListItem ) ); + + /* Is the co-routine waiting on an event also? */ + if( pxCRCB->xEventListItem.pxContainer ) + { + ( void ) uxListRemove( &( pxCRCB->xEventListItem ) ); + } + } + portENABLE_INTERRUPTS(); + + prvAddCoRoutineToReadyQueue( pxCRCB ); + } + } + + xLastTickCount = xCoRoutineTickCount; +} +/*-----------------------------------------------------------*/ + +void vCoRoutineSchedule( void ) +{ + /* See if any co-routines readied by events need moving to the ready lists. */ + prvCheckPendingReadyList(); + + /* See if any delayed co-routines have timed out. */ + prvCheckDelayedList(); + + /* Find the highest priority queue that contains ready co-routines. */ + while( listLIST_IS_EMPTY( &( pxReadyCoRoutineLists[ uxTopCoRoutineReadyPriority ] ) ) ) + { + if( uxTopCoRoutineReadyPriority == 0 ) + { + /* No more co-routines to check. */ + return; + } + --uxTopCoRoutineReadyPriority; + } + + /* listGET_OWNER_OF_NEXT_ENTRY walks through the list, so the co-routines + of the same priority get an equal share of the processor time. */ + listGET_OWNER_OF_NEXT_ENTRY( pxCurrentCoRoutine, &( pxReadyCoRoutineLists[ uxTopCoRoutineReadyPriority ] ) ); + + /* Call the co-routine. */ + ( pxCurrentCoRoutine->pxCoRoutineFunction )( pxCurrentCoRoutine, pxCurrentCoRoutine->uxIndex ); + + return; +} +/*-----------------------------------------------------------*/ + +static void prvInitialiseCoRoutineLists( void ) +{ +UBaseType_t uxPriority; + + for( uxPriority = 0; uxPriority < configMAX_CO_ROUTINE_PRIORITIES; uxPriority++ ) + { + vListInitialise( ( List_t * ) &( pxReadyCoRoutineLists[ uxPriority ] ) ); + } + + vListInitialise( ( List_t * ) &xDelayedCoRoutineList1 ); + vListInitialise( ( List_t * ) &xDelayedCoRoutineList2 ); + vListInitialise( ( List_t * ) &xPendingReadyCoRoutineList ); + + /* Start with pxDelayedCoRoutineList using list1 and the + pxOverflowDelayedCoRoutineList using list2. */ + pxDelayedCoRoutineList = &xDelayedCoRoutineList1; + pxOverflowDelayedCoRoutineList = &xDelayedCoRoutineList2; +} +/*-----------------------------------------------------------*/ + +BaseType_t xCoRoutineRemoveFromEventList( const List_t *pxEventList ) +{ +CRCB_t *pxUnblockedCRCB; +BaseType_t xReturn; + + /* This function is called from within an interrupt. It can only access + event lists and the pending ready list. This function assumes that a + check has already been made to ensure pxEventList is not empty. */ + pxUnblockedCRCB = ( CRCB_t * ) listGET_OWNER_OF_HEAD_ENTRY( pxEventList ); + ( void ) uxListRemove( &( pxUnblockedCRCB->xEventListItem ) ); + vListInsertEnd( ( List_t * ) &( xPendingReadyCoRoutineList ), &( pxUnblockedCRCB->xEventListItem ) ); + + if( pxUnblockedCRCB->uxPriority >= pxCurrentCoRoutine->uxPriority ) + { + xReturn = pdTRUE; + } + else + { + xReturn = pdFALSE; + } + + return xReturn; +} + +#endif /* configUSE_CO_ROUTINES == 0 */ + diff --git a/firmware/Middlewares/Third_Party/FreeRTOS/Source/event_groups.c b/firmware/Middlewares/Third_Party/FreeRTOS/Source/event_groups.c new file mode 100644 index 0000000..bf4ec24 --- /dev/null +++ b/firmware/Middlewares/Third_Party/FreeRTOS/Source/event_groups.c @@ -0,0 +1,753 @@ +/* + * FreeRTOS Kernel V10.3.1 + * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * http://www.FreeRTOS.org + * http://aws.amazon.com/freertos + * + * 1 tab == 4 spaces! + */ + +/* Standard includes. */ +#include + +/* Defining MPU_WRAPPERS_INCLUDED_FROM_API_FILE prevents task.h from redefining +all the API functions to use the MPU wrappers. That should only be done when +task.h is included from an application file. */ +#define MPU_WRAPPERS_INCLUDED_FROM_API_FILE + +/* FreeRTOS includes. */ +#include "FreeRTOS.h" +#include "task.h" +#include "timers.h" +#include "event_groups.h" + +/* Lint e961, e750 and e9021 are suppressed as a MISRA exception justified +because the MPU ports require MPU_WRAPPERS_INCLUDED_FROM_API_FILE to be defined +for the header files above, but not in this file, in order to generate the +correct privileged Vs unprivileged linkage and placement. */ +#undef MPU_WRAPPERS_INCLUDED_FROM_API_FILE /*lint !e961 !e750 !e9021 See comment above. */ + +/* The following bit fields convey control information in a task's event list +item value. It is important they don't clash with the +taskEVENT_LIST_ITEM_VALUE_IN_USE definition. */ +#if configUSE_16_BIT_TICKS == 1 + #define eventCLEAR_EVENTS_ON_EXIT_BIT 0x0100U + #define eventUNBLOCKED_DUE_TO_BIT_SET 0x0200U + #define eventWAIT_FOR_ALL_BITS 0x0400U + #define eventEVENT_BITS_CONTROL_BYTES 0xff00U +#else + #define eventCLEAR_EVENTS_ON_EXIT_BIT 0x01000000UL + #define eventUNBLOCKED_DUE_TO_BIT_SET 0x02000000UL + #define eventWAIT_FOR_ALL_BITS 0x04000000UL + #define eventEVENT_BITS_CONTROL_BYTES 0xff000000UL +#endif + +typedef struct EventGroupDef_t +{ + EventBits_t uxEventBits; + List_t xTasksWaitingForBits; /*< List of tasks waiting for a bit to be set. */ + + #if( configUSE_TRACE_FACILITY == 1 ) + UBaseType_t uxEventGroupNumber; + #endif + + #if( ( configSUPPORT_STATIC_ALLOCATION == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) ) + uint8_t ucStaticallyAllocated; /*< Set to pdTRUE if the event group is statically allocated to ensure no attempt is made to free the memory. */ + #endif +} EventGroup_t; + +/*-----------------------------------------------------------*/ + +/* + * Test the bits set in uxCurrentEventBits to see if the wait condition is met. + * The wait condition is defined by xWaitForAllBits. If xWaitForAllBits is + * pdTRUE then the wait condition is met if all the bits set in uxBitsToWaitFor + * are also set in uxCurrentEventBits. If xWaitForAllBits is pdFALSE then the + * wait condition is met if any of the bits set in uxBitsToWait for are also set + * in uxCurrentEventBits. + */ +static BaseType_t prvTestWaitCondition( const EventBits_t uxCurrentEventBits, const EventBits_t uxBitsToWaitFor, const BaseType_t xWaitForAllBits ) PRIVILEGED_FUNCTION; + +/*-----------------------------------------------------------*/ + +#if( configSUPPORT_STATIC_ALLOCATION == 1 ) + + EventGroupHandle_t xEventGroupCreateStatic( StaticEventGroup_t *pxEventGroupBuffer ) + { + EventGroup_t *pxEventBits; + + /* A StaticEventGroup_t object must be provided. */ + configASSERT( pxEventGroupBuffer ); + + #if( configASSERT_DEFINED == 1 ) + { + /* Sanity check that the size of the structure used to declare a + variable of type StaticEventGroup_t equals the size of the real + event group structure. */ + volatile size_t xSize = sizeof( StaticEventGroup_t ); + configASSERT( xSize == sizeof( EventGroup_t ) ); + } /*lint !e529 xSize is referenced if configASSERT() is defined. */ + #endif /* configASSERT_DEFINED */ + + /* The user has provided a statically allocated event group - use it. */ + pxEventBits = ( EventGroup_t * ) pxEventGroupBuffer; /*lint !e740 !e9087 EventGroup_t and StaticEventGroup_t are deliberately aliased for data hiding purposes and guaranteed to have the same size and alignment requirement - checked by configASSERT(). */ + + if( pxEventBits != NULL ) + { + pxEventBits->uxEventBits = 0; + vListInitialise( &( pxEventBits->xTasksWaitingForBits ) ); + + #if( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) + { + /* Both static and dynamic allocation can be used, so note that + this event group was created statically in case the event group + is later deleted. */ + pxEventBits->ucStaticallyAllocated = pdTRUE; + } + #endif /* configSUPPORT_DYNAMIC_ALLOCATION */ + + traceEVENT_GROUP_CREATE( pxEventBits ); + } + else + { + /* xEventGroupCreateStatic should only ever be called with + pxEventGroupBuffer pointing to a pre-allocated (compile time + allocated) StaticEventGroup_t variable. */ + traceEVENT_GROUP_CREATE_FAILED(); + } + + return pxEventBits; + } + +#endif /* configSUPPORT_STATIC_ALLOCATION */ +/*-----------------------------------------------------------*/ + +#if( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) + + EventGroupHandle_t xEventGroupCreate( void ) + { + EventGroup_t *pxEventBits; + + /* Allocate the event group. Justification for MISRA deviation as + follows: pvPortMalloc() always ensures returned memory blocks are + aligned per the requirements of the MCU stack. In this case + pvPortMalloc() must return a pointer that is guaranteed to meet the + alignment requirements of the EventGroup_t structure - which (if you + follow it through) is the alignment requirements of the TickType_t type + (EventBits_t being of TickType_t itself). Therefore, whenever the + stack alignment requirements are greater than or equal to the + TickType_t alignment requirements the cast is safe. In other cases, + where the natural word size of the architecture is less than + sizeof( TickType_t ), the TickType_t variables will be accessed in two + or more reads operations, and the alignment requirements is only that + of each individual read. */ + pxEventBits = ( EventGroup_t * ) pvPortMalloc( sizeof( EventGroup_t ) ); /*lint !e9087 !e9079 see comment above. */ + + if( pxEventBits != NULL ) + { + pxEventBits->uxEventBits = 0; + vListInitialise( &( pxEventBits->xTasksWaitingForBits ) ); + + #if( configSUPPORT_STATIC_ALLOCATION == 1 ) + { + /* Both static and dynamic allocation can be used, so note this + event group was allocated statically in case the event group is + later deleted. */ + pxEventBits->ucStaticallyAllocated = pdFALSE; + } + #endif /* configSUPPORT_STATIC_ALLOCATION */ + + traceEVENT_GROUP_CREATE( pxEventBits ); + } + else + { + traceEVENT_GROUP_CREATE_FAILED(); /*lint !e9063 Else branch only exists to allow tracing and does not generate code if trace macros are not defined. */ + } + + return pxEventBits; + } + +#endif /* configSUPPORT_DYNAMIC_ALLOCATION */ +/*-----------------------------------------------------------*/ + +EventBits_t xEventGroupSync( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToSet, const EventBits_t uxBitsToWaitFor, TickType_t xTicksToWait ) +{ +EventBits_t uxOriginalBitValue, uxReturn; +EventGroup_t *pxEventBits = xEventGroup; +BaseType_t xAlreadyYielded; +BaseType_t xTimeoutOccurred = pdFALSE; + + configASSERT( ( uxBitsToWaitFor & eventEVENT_BITS_CONTROL_BYTES ) == 0 ); + configASSERT( uxBitsToWaitFor != 0 ); + #if ( ( INCLUDE_xTaskGetSchedulerState == 1 ) || ( configUSE_TIMERS == 1 ) ) + { + configASSERT( !( ( xTaskGetSchedulerState() == taskSCHEDULER_SUSPENDED ) && ( xTicksToWait != 0 ) ) ); + } + #endif + + vTaskSuspendAll(); + { + uxOriginalBitValue = pxEventBits->uxEventBits; + + ( void ) xEventGroupSetBits( xEventGroup, uxBitsToSet ); + + if( ( ( uxOriginalBitValue | uxBitsToSet ) & uxBitsToWaitFor ) == uxBitsToWaitFor ) + { + /* All the rendezvous bits are now set - no need to block. */ + uxReturn = ( uxOriginalBitValue | uxBitsToSet ); + + /* Rendezvous always clear the bits. They will have been cleared + already unless this is the only task in the rendezvous. */ + pxEventBits->uxEventBits &= ~uxBitsToWaitFor; + + xTicksToWait = 0; + } + else + { + if( xTicksToWait != ( TickType_t ) 0 ) + { + traceEVENT_GROUP_SYNC_BLOCK( xEventGroup, uxBitsToSet, uxBitsToWaitFor ); + + /* Store the bits that the calling task is waiting for in the + task's event list item so the kernel knows when a match is + found. Then enter the blocked state. */ + vTaskPlaceOnUnorderedEventList( &( pxEventBits->xTasksWaitingForBits ), ( uxBitsToWaitFor | eventCLEAR_EVENTS_ON_EXIT_BIT | eventWAIT_FOR_ALL_BITS ), xTicksToWait ); + + /* This assignment is obsolete as uxReturn will get set after + the task unblocks, but some compilers mistakenly generate a + warning about uxReturn being returned without being set if the + assignment is omitted. */ + uxReturn = 0; + } + else + { + /* The rendezvous bits were not set, but no block time was + specified - just return the current event bit value. */ + uxReturn = pxEventBits->uxEventBits; + xTimeoutOccurred = pdTRUE; + } + } + } + xAlreadyYielded = xTaskResumeAll(); + + if( xTicksToWait != ( TickType_t ) 0 ) + { + if( xAlreadyYielded == pdFALSE ) + { + portYIELD_WITHIN_API(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + /* The task blocked to wait for its required bits to be set - at this + point either the required bits were set or the block time expired. If + the required bits were set they will have been stored in the task's + event list item, and they should now be retrieved then cleared. */ + uxReturn = uxTaskResetEventItemValue(); + + if( ( uxReturn & eventUNBLOCKED_DUE_TO_BIT_SET ) == ( EventBits_t ) 0 ) + { + /* The task timed out, just return the current event bit value. */ + taskENTER_CRITICAL(); + { + uxReturn = pxEventBits->uxEventBits; + + /* Although the task got here because it timed out before the + bits it was waiting for were set, it is possible that since it + unblocked another task has set the bits. If this is the case + then it needs to clear the bits before exiting. */ + if( ( uxReturn & uxBitsToWaitFor ) == uxBitsToWaitFor ) + { + pxEventBits->uxEventBits &= ~uxBitsToWaitFor; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + taskEXIT_CRITICAL(); + + xTimeoutOccurred = pdTRUE; + } + else + { + /* The task unblocked because the bits were set. */ + } + + /* Control bits might be set as the task had blocked should not be + returned. */ + uxReturn &= ~eventEVENT_BITS_CONTROL_BYTES; + } + + traceEVENT_GROUP_SYNC_END( xEventGroup, uxBitsToSet, uxBitsToWaitFor, xTimeoutOccurred ); + + /* Prevent compiler warnings when trace macros are not used. */ + ( void ) xTimeoutOccurred; + + return uxReturn; +} +/*-----------------------------------------------------------*/ + +EventBits_t xEventGroupWaitBits( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToWaitFor, const BaseType_t xClearOnExit, const BaseType_t xWaitForAllBits, TickType_t xTicksToWait ) +{ +EventGroup_t *pxEventBits = xEventGroup; +EventBits_t uxReturn, uxControlBits = 0; +BaseType_t xWaitConditionMet, xAlreadyYielded; +BaseType_t xTimeoutOccurred = pdFALSE; + + /* Check the user is not attempting to wait on the bits used by the kernel + itself, and that at least one bit is being requested. */ + configASSERT( xEventGroup ); + configASSERT( ( uxBitsToWaitFor & eventEVENT_BITS_CONTROL_BYTES ) == 0 ); + configASSERT( uxBitsToWaitFor != 0 ); + #if ( ( INCLUDE_xTaskGetSchedulerState == 1 ) || ( configUSE_TIMERS == 1 ) ) + { + configASSERT( !( ( xTaskGetSchedulerState() == taskSCHEDULER_SUSPENDED ) && ( xTicksToWait != 0 ) ) ); + } + #endif + + vTaskSuspendAll(); + { + const EventBits_t uxCurrentEventBits = pxEventBits->uxEventBits; + + /* Check to see if the wait condition is already met or not. */ + xWaitConditionMet = prvTestWaitCondition( uxCurrentEventBits, uxBitsToWaitFor, xWaitForAllBits ); + + if( xWaitConditionMet != pdFALSE ) + { + /* The wait condition has already been met so there is no need to + block. */ + uxReturn = uxCurrentEventBits; + xTicksToWait = ( TickType_t ) 0; + + /* Clear the wait bits if requested to do so. */ + if( xClearOnExit != pdFALSE ) + { + pxEventBits->uxEventBits &= ~uxBitsToWaitFor; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else if( xTicksToWait == ( TickType_t ) 0 ) + { + /* The wait condition has not been met, but no block time was + specified, so just return the current value. */ + uxReturn = uxCurrentEventBits; + xTimeoutOccurred = pdTRUE; + } + else + { + /* The task is going to block to wait for its required bits to be + set. uxControlBits are used to remember the specified behaviour of + this call to xEventGroupWaitBits() - for use when the event bits + unblock the task. */ + if( xClearOnExit != pdFALSE ) + { + uxControlBits |= eventCLEAR_EVENTS_ON_EXIT_BIT; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + if( xWaitForAllBits != pdFALSE ) + { + uxControlBits |= eventWAIT_FOR_ALL_BITS; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + /* Store the bits that the calling task is waiting for in the + task's event list item so the kernel knows when a match is + found. Then enter the blocked state. */ + vTaskPlaceOnUnorderedEventList( &( pxEventBits->xTasksWaitingForBits ), ( uxBitsToWaitFor | uxControlBits ), xTicksToWait ); + + /* This is obsolete as it will get set after the task unblocks, but + some compilers mistakenly generate a warning about the variable + being returned without being set if it is not done. */ + uxReturn = 0; + + traceEVENT_GROUP_WAIT_BITS_BLOCK( xEventGroup, uxBitsToWaitFor ); + } + } + xAlreadyYielded = xTaskResumeAll(); + + if( xTicksToWait != ( TickType_t ) 0 ) + { + if( xAlreadyYielded == pdFALSE ) + { + portYIELD_WITHIN_API(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + /* The task blocked to wait for its required bits to be set - at this + point either the required bits were set or the block time expired. If + the required bits were set they will have been stored in the task's + event list item, and they should now be retrieved then cleared. */ + uxReturn = uxTaskResetEventItemValue(); + + if( ( uxReturn & eventUNBLOCKED_DUE_TO_BIT_SET ) == ( EventBits_t ) 0 ) + { + taskENTER_CRITICAL(); + { + /* The task timed out, just return the current event bit value. */ + uxReturn = pxEventBits->uxEventBits; + + /* It is possible that the event bits were updated between this + task leaving the Blocked state and running again. */ + if( prvTestWaitCondition( uxReturn, uxBitsToWaitFor, xWaitForAllBits ) != pdFALSE ) + { + if( xClearOnExit != pdFALSE ) + { + pxEventBits->uxEventBits &= ~uxBitsToWaitFor; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + xTimeoutOccurred = pdTRUE; + } + taskEXIT_CRITICAL(); + } + else + { + /* The task unblocked because the bits were set. */ + } + + /* The task blocked so control bits may have been set. */ + uxReturn &= ~eventEVENT_BITS_CONTROL_BYTES; + } + traceEVENT_GROUP_WAIT_BITS_END( xEventGroup, uxBitsToWaitFor, xTimeoutOccurred ); + + /* Prevent compiler warnings when trace macros are not used. */ + ( void ) xTimeoutOccurred; + + return uxReturn; +} +/*-----------------------------------------------------------*/ + +EventBits_t xEventGroupClearBits( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToClear ) +{ +EventGroup_t *pxEventBits = xEventGroup; +EventBits_t uxReturn; + + /* Check the user is not attempting to clear the bits used by the kernel + itself. */ + configASSERT( xEventGroup ); + configASSERT( ( uxBitsToClear & eventEVENT_BITS_CONTROL_BYTES ) == 0 ); + + taskENTER_CRITICAL(); + { + traceEVENT_GROUP_CLEAR_BITS( xEventGroup, uxBitsToClear ); + + /* The value returned is the event group value prior to the bits being + cleared. */ + uxReturn = pxEventBits->uxEventBits; + + /* Clear the bits. */ + pxEventBits->uxEventBits &= ~uxBitsToClear; + } + taskEXIT_CRITICAL(); + + return uxReturn; +} +/*-----------------------------------------------------------*/ + +#if ( ( configUSE_TRACE_FACILITY == 1 ) && ( INCLUDE_xTimerPendFunctionCall == 1 ) && ( configUSE_TIMERS == 1 ) ) + + BaseType_t xEventGroupClearBitsFromISR( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToClear ) + { + BaseType_t xReturn; + + traceEVENT_GROUP_CLEAR_BITS_FROM_ISR( xEventGroup, uxBitsToClear ); + xReturn = xTimerPendFunctionCallFromISR( vEventGroupClearBitsCallback, ( void * ) xEventGroup, ( uint32_t ) uxBitsToClear, NULL ); /*lint !e9087 Can't avoid cast to void* as a generic callback function not specific to this use case. Callback casts back to original type so safe. */ + + return xReturn; + } + +#endif +/*-----------------------------------------------------------*/ + +EventBits_t xEventGroupGetBitsFromISR( EventGroupHandle_t xEventGroup ) +{ +UBaseType_t uxSavedInterruptStatus; +EventGroup_t const * const pxEventBits = xEventGroup; +EventBits_t uxReturn; + + uxSavedInterruptStatus = portSET_INTERRUPT_MASK_FROM_ISR(); + { + uxReturn = pxEventBits->uxEventBits; + } + portCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedInterruptStatus ); + + return uxReturn; +} /*lint !e818 EventGroupHandle_t is a typedef used in other functions to so can't be pointer to const. */ +/*-----------------------------------------------------------*/ + +EventBits_t xEventGroupSetBits( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToSet ) +{ +ListItem_t *pxListItem, *pxNext; +ListItem_t const *pxListEnd; +List_t const * pxList; +EventBits_t uxBitsToClear = 0, uxBitsWaitedFor, uxControlBits; +EventGroup_t *pxEventBits = xEventGroup; +BaseType_t xMatchFound = pdFALSE; + + /* Check the user is not attempting to set the bits used by the kernel + itself. */ + configASSERT( xEventGroup ); + configASSERT( ( uxBitsToSet & eventEVENT_BITS_CONTROL_BYTES ) == 0 ); + + pxList = &( pxEventBits->xTasksWaitingForBits ); + pxListEnd = listGET_END_MARKER( pxList ); /*lint !e826 !e740 !e9087 The mini list structure is used as the list end to save RAM. This is checked and valid. */ + vTaskSuspendAll(); + { + traceEVENT_GROUP_SET_BITS( xEventGroup, uxBitsToSet ); + + pxListItem = listGET_HEAD_ENTRY( pxList ); + + /* Set the bits. */ + pxEventBits->uxEventBits |= uxBitsToSet; + + /* See if the new bit value should unblock any tasks. */ + while( pxListItem != pxListEnd ) + { + pxNext = listGET_NEXT( pxListItem ); + uxBitsWaitedFor = listGET_LIST_ITEM_VALUE( pxListItem ); + xMatchFound = pdFALSE; + + /* Split the bits waited for from the control bits. */ + uxControlBits = uxBitsWaitedFor & eventEVENT_BITS_CONTROL_BYTES; + uxBitsWaitedFor &= ~eventEVENT_BITS_CONTROL_BYTES; + + if( ( uxControlBits & eventWAIT_FOR_ALL_BITS ) == ( EventBits_t ) 0 ) + { + /* Just looking for single bit being set. */ + if( ( uxBitsWaitedFor & pxEventBits->uxEventBits ) != ( EventBits_t ) 0 ) + { + xMatchFound = pdTRUE; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else if( ( uxBitsWaitedFor & pxEventBits->uxEventBits ) == uxBitsWaitedFor ) + { + /* All bits are set. */ + xMatchFound = pdTRUE; + } + else + { + /* Need all bits to be set, but not all the bits were set. */ + } + + if( xMatchFound != pdFALSE ) + { + /* The bits match. Should the bits be cleared on exit? */ + if( ( uxControlBits & eventCLEAR_EVENTS_ON_EXIT_BIT ) != ( EventBits_t ) 0 ) + { + uxBitsToClear |= uxBitsWaitedFor; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + /* Store the actual event flag value in the task's event list + item before removing the task from the event list. The + eventUNBLOCKED_DUE_TO_BIT_SET bit is set so the task knows + that is was unblocked due to its required bits matching, rather + than because it timed out. */ + vTaskRemoveFromUnorderedEventList( pxListItem, pxEventBits->uxEventBits | eventUNBLOCKED_DUE_TO_BIT_SET ); + } + + /* Move onto the next list item. Note pxListItem->pxNext is not + used here as the list item may have been removed from the event list + and inserted into the ready/pending reading list. */ + pxListItem = pxNext; + } + + /* Clear any bits that matched when the eventCLEAR_EVENTS_ON_EXIT_BIT + bit was set in the control word. */ + pxEventBits->uxEventBits &= ~uxBitsToClear; + } + ( void ) xTaskResumeAll(); + + return pxEventBits->uxEventBits; +} +/*-----------------------------------------------------------*/ + +void vEventGroupDelete( EventGroupHandle_t xEventGroup ) +{ +EventGroup_t *pxEventBits = xEventGroup; +const List_t *pxTasksWaitingForBits = &( pxEventBits->xTasksWaitingForBits ); + + vTaskSuspendAll(); + { + traceEVENT_GROUP_DELETE( xEventGroup ); + + while( listCURRENT_LIST_LENGTH( pxTasksWaitingForBits ) > ( UBaseType_t ) 0 ) + { + /* Unblock the task, returning 0 as the event list is being deleted + and cannot therefore have any bits set. */ + configASSERT( pxTasksWaitingForBits->xListEnd.pxNext != ( const ListItem_t * ) &( pxTasksWaitingForBits->xListEnd ) ); + vTaskRemoveFromUnorderedEventList( pxTasksWaitingForBits->xListEnd.pxNext, eventUNBLOCKED_DUE_TO_BIT_SET ); + } + + #if( ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) && ( configSUPPORT_STATIC_ALLOCATION == 0 ) ) + { + /* The event group can only have been allocated dynamically - free + it again. */ + vPortFree( pxEventBits ); + } + #elif( ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) && ( configSUPPORT_STATIC_ALLOCATION == 1 ) ) + { + /* The event group could have been allocated statically or + dynamically, so check before attempting to free the memory. */ + if( pxEventBits->ucStaticallyAllocated == ( uint8_t ) pdFALSE ) + { + vPortFree( pxEventBits ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + #endif /* configSUPPORT_DYNAMIC_ALLOCATION */ + } + ( void ) xTaskResumeAll(); +} +/*-----------------------------------------------------------*/ + +/* For internal use only - execute a 'set bits' command that was pended from +an interrupt. */ +void vEventGroupSetBitsCallback( void *pvEventGroup, const uint32_t ulBitsToSet ) +{ + ( void ) xEventGroupSetBits( pvEventGroup, ( EventBits_t ) ulBitsToSet ); /*lint !e9079 Can't avoid cast to void* as a generic timer callback prototype. Callback casts back to original type so safe. */ +} +/*-----------------------------------------------------------*/ + +/* For internal use only - execute a 'clear bits' command that was pended from +an interrupt. */ +void vEventGroupClearBitsCallback( void *pvEventGroup, const uint32_t ulBitsToClear ) +{ + ( void ) xEventGroupClearBits( pvEventGroup, ( EventBits_t ) ulBitsToClear ); /*lint !e9079 Can't avoid cast to void* as a generic timer callback prototype. Callback casts back to original type so safe. */ +} +/*-----------------------------------------------------------*/ + +static BaseType_t prvTestWaitCondition( const EventBits_t uxCurrentEventBits, const EventBits_t uxBitsToWaitFor, const BaseType_t xWaitForAllBits ) +{ +BaseType_t xWaitConditionMet = pdFALSE; + + if( xWaitForAllBits == pdFALSE ) + { + /* Task only has to wait for one bit within uxBitsToWaitFor to be + set. Is one already set? */ + if( ( uxCurrentEventBits & uxBitsToWaitFor ) != ( EventBits_t ) 0 ) + { + xWaitConditionMet = pdTRUE; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + /* Task has to wait for all the bits in uxBitsToWaitFor to be set. + Are they set already? */ + if( ( uxCurrentEventBits & uxBitsToWaitFor ) == uxBitsToWaitFor ) + { + xWaitConditionMet = pdTRUE; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + + return xWaitConditionMet; +} +/*-----------------------------------------------------------*/ + +#if ( ( configUSE_TRACE_FACILITY == 1 ) && ( INCLUDE_xTimerPendFunctionCall == 1 ) && ( configUSE_TIMERS == 1 ) ) + + BaseType_t xEventGroupSetBitsFromISR( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToSet, BaseType_t *pxHigherPriorityTaskWoken ) + { + BaseType_t xReturn; + + traceEVENT_GROUP_SET_BITS_FROM_ISR( xEventGroup, uxBitsToSet ); + xReturn = xTimerPendFunctionCallFromISR( vEventGroupSetBitsCallback, ( void * ) xEventGroup, ( uint32_t ) uxBitsToSet, pxHigherPriorityTaskWoken ); /*lint !e9087 Can't avoid cast to void* as a generic callback function not specific to this use case. Callback casts back to original type so safe. */ + + return xReturn; + } + +#endif +/*-----------------------------------------------------------*/ + +#if (configUSE_TRACE_FACILITY == 1) + + UBaseType_t uxEventGroupGetNumber( void* xEventGroup ) + { + UBaseType_t xReturn; + EventGroup_t const *pxEventBits = ( EventGroup_t * ) xEventGroup; /*lint !e9087 !e9079 EventGroupHandle_t is a pointer to an EventGroup_t, but EventGroupHandle_t is kept opaque outside of this file for data hiding purposes. */ + + if( xEventGroup == NULL ) + { + xReturn = 0; + } + else + { + xReturn = pxEventBits->uxEventGroupNumber; + } + + return xReturn; + } + +#endif /* configUSE_TRACE_FACILITY */ +/*-----------------------------------------------------------*/ + +#if ( configUSE_TRACE_FACILITY == 1 ) + + void vEventGroupSetNumber( void * xEventGroup, UBaseType_t uxEventGroupNumber ) + { + ( ( EventGroup_t * ) xEventGroup )->uxEventGroupNumber = uxEventGroupNumber; /*lint !e9087 !e9079 EventGroupHandle_t is a pointer to an EventGroup_t, but EventGroupHandle_t is kept opaque outside of this file for data hiding purposes. */ + } + +#endif /* configUSE_TRACE_FACILITY */ +/*-----------------------------------------------------------*/ + + diff --git a/firmware/Middlewares/Third_Party/FreeRTOS/Source/include/FreeRTOS.h b/firmware/Middlewares/Third_Party/FreeRTOS/Source/include/FreeRTOS.h new file mode 100644 index 0000000..ceb469a --- /dev/null +++ b/firmware/Middlewares/Third_Party/FreeRTOS/Source/include/FreeRTOS.h @@ -0,0 +1,1295 @@ +/* + * FreeRTOS Kernel V10.3.1 + * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * http://www.FreeRTOS.org + * http://aws.amazon.com/freertos + * + * 1 tab == 4 spaces! + */ + +#ifndef INC_FREERTOS_H +#define INC_FREERTOS_H + +/* + * Include the generic headers required for the FreeRTOS port being used. + */ +#include + +/* + * If stdint.h cannot be located then: + * + If using GCC ensure the -nostdint options is *not* being used. + * + Ensure the project's include path includes the directory in which your + * compiler stores stdint.h. + * + Set any compiler options necessary for it to support C99, as technically + * stdint.h is only mandatory with C99 (FreeRTOS does not require C99 in any + * other way). + * + The FreeRTOS download includes a simple stdint.h definition that can be + * used in cases where none is provided by the compiler. The files only + * contains the typedefs required to build FreeRTOS. Read the instructions + * in FreeRTOS/source/stdint.readme for more information. + */ +#include /* READ COMMENT ABOVE. */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* Application specific configuration options. */ +#include "FreeRTOSConfig.h" + +/* Basic FreeRTOS definitions. */ +#include "projdefs.h" + +/* Definitions specific to the port being used. */ +#include "portable.h" + +/* Must be defaulted before configUSE_NEWLIB_REENTRANT is used below. */ +#ifndef configUSE_NEWLIB_REENTRANT + #define configUSE_NEWLIB_REENTRANT 0 +#endif + +/* Required if struct _reent is used. */ +#if ( configUSE_NEWLIB_REENTRANT == 1 ) + #include +#endif +/* + * Check all the required application specific macros have been defined. + * These macros are application specific and (as downloaded) are defined + * within FreeRTOSConfig.h. + */ + +#ifndef configMINIMAL_STACK_SIZE + #error Missing definition: configMINIMAL_STACK_SIZE must be defined in FreeRTOSConfig.h. configMINIMAL_STACK_SIZE defines the size (in words) of the stack allocated to the idle task. Refer to the demo project provided for your port for a suitable value. +#endif + +#ifndef configMAX_PRIORITIES + #error Missing definition: configMAX_PRIORITIES must be defined in FreeRTOSConfig.h. See the Configuration section of the FreeRTOS API documentation for details. +#endif + +#if configMAX_PRIORITIES < 1 + #error configMAX_PRIORITIES must be defined to be greater than or equal to 1. +#endif + +#ifndef configUSE_PREEMPTION + #error Missing definition: configUSE_PREEMPTION must be defined in FreeRTOSConfig.h as either 1 or 0. See the Configuration section of the FreeRTOS API documentation for details. +#endif + +#ifndef configUSE_IDLE_HOOK + #error Missing definition: configUSE_IDLE_HOOK must be defined in FreeRTOSConfig.h as either 1 or 0. See the Configuration section of the FreeRTOS API documentation for details. +#endif + +#ifndef configUSE_TICK_HOOK + #error Missing definition: configUSE_TICK_HOOK must be defined in FreeRTOSConfig.h as either 1 or 0. See the Configuration section of the FreeRTOS API documentation for details. +#endif + +#ifndef configUSE_16_BIT_TICKS + #error Missing definition: configUSE_16_BIT_TICKS must be defined in FreeRTOSConfig.h as either 1 or 0. See the Configuration section of the FreeRTOS API documentation for details. +#endif + +#ifndef configUSE_CO_ROUTINES + #define configUSE_CO_ROUTINES 0 +#endif + +#ifndef INCLUDE_vTaskPrioritySet + #define INCLUDE_vTaskPrioritySet 0 +#endif + +#ifndef INCLUDE_uxTaskPriorityGet + #define INCLUDE_uxTaskPriorityGet 0 +#endif + +#ifndef INCLUDE_vTaskDelete + #define INCLUDE_vTaskDelete 0 +#endif + +#ifndef INCLUDE_vTaskSuspend + #define INCLUDE_vTaskSuspend 0 +#endif + +#ifndef INCLUDE_vTaskDelayUntil + #define INCLUDE_vTaskDelayUntil 0 +#endif + +#ifndef INCLUDE_vTaskDelay + #define INCLUDE_vTaskDelay 0 +#endif + +#ifndef INCLUDE_xTaskGetIdleTaskHandle + #define INCLUDE_xTaskGetIdleTaskHandle 0 +#endif + +#ifndef INCLUDE_xTaskAbortDelay + #define INCLUDE_xTaskAbortDelay 0 +#endif + +#ifndef INCLUDE_xQueueGetMutexHolder + #define INCLUDE_xQueueGetMutexHolder 0 +#endif + +#ifndef INCLUDE_xSemaphoreGetMutexHolder + #define INCLUDE_xSemaphoreGetMutexHolder INCLUDE_xQueueGetMutexHolder +#endif + +#ifndef INCLUDE_xTaskGetHandle + #define INCLUDE_xTaskGetHandle 0 +#endif + +#ifndef INCLUDE_uxTaskGetStackHighWaterMark + #define INCLUDE_uxTaskGetStackHighWaterMark 0 +#endif + +#ifndef INCLUDE_uxTaskGetStackHighWaterMark2 + #define INCLUDE_uxTaskGetStackHighWaterMark2 0 +#endif + +#ifndef INCLUDE_eTaskGetState + #define INCLUDE_eTaskGetState 0 +#endif + +#ifndef INCLUDE_xTaskResumeFromISR + #define INCLUDE_xTaskResumeFromISR 1 +#endif + +#ifndef INCLUDE_xTimerPendFunctionCall + #define INCLUDE_xTimerPendFunctionCall 0 +#endif + +#ifndef INCLUDE_xTaskGetSchedulerState + #define INCLUDE_xTaskGetSchedulerState 0 +#endif + +#ifndef INCLUDE_xTaskGetCurrentTaskHandle + #define INCLUDE_xTaskGetCurrentTaskHandle 0 +#endif + +#if configUSE_CO_ROUTINES != 0 + #ifndef configMAX_CO_ROUTINE_PRIORITIES + #error configMAX_CO_ROUTINE_PRIORITIES must be greater than or equal to 1. + #endif +#endif + +#ifndef configUSE_DAEMON_TASK_STARTUP_HOOK + #define configUSE_DAEMON_TASK_STARTUP_HOOK 0 +#endif + +#ifndef configUSE_APPLICATION_TASK_TAG + #define configUSE_APPLICATION_TASK_TAG 0 +#endif + +#ifndef configNUM_THREAD_LOCAL_STORAGE_POINTERS + #define configNUM_THREAD_LOCAL_STORAGE_POINTERS 0 +#endif + +#ifndef configUSE_RECURSIVE_MUTEXES + #define configUSE_RECURSIVE_MUTEXES 0 +#endif + +#ifndef configUSE_MUTEXES + #define configUSE_MUTEXES 0 +#endif + +#ifndef configUSE_TIMERS + #define configUSE_TIMERS 0 +#endif + +#ifndef configUSE_COUNTING_SEMAPHORES + #define configUSE_COUNTING_SEMAPHORES 0 +#endif + +#ifndef configUSE_ALTERNATIVE_API + #define configUSE_ALTERNATIVE_API 0 +#endif + +#ifndef portCRITICAL_NESTING_IN_TCB + #define portCRITICAL_NESTING_IN_TCB 0 +#endif + +#ifndef configMAX_TASK_NAME_LEN + #define configMAX_TASK_NAME_LEN 16 +#endif + +#ifndef configIDLE_SHOULD_YIELD + #define configIDLE_SHOULD_YIELD 1 +#endif + +#if configMAX_TASK_NAME_LEN < 1 + #error configMAX_TASK_NAME_LEN must be set to a minimum of 1 in FreeRTOSConfig.h +#endif + +#ifndef configASSERT + #define configASSERT( x ) + #define configASSERT_DEFINED 0 +#else + #define configASSERT_DEFINED 1 +#endif + +/* configPRECONDITION should be defined as configASSERT. +The CBMC proofs need a way to track assumptions and assertions. +A configPRECONDITION statement should express an implicit invariant or +assumption made. A configASSERT statement should express an invariant that must +hold explicit before calling the code. */ +#ifndef configPRECONDITION + #define configPRECONDITION( X ) configASSERT(X) + #define configPRECONDITION_DEFINED 0 +#else + #define configPRECONDITION_DEFINED 1 +#endif + +#ifndef portMEMORY_BARRIER + #define portMEMORY_BARRIER() +#endif + +#ifndef portSOFTWARE_BARRIER + #define portSOFTWARE_BARRIER() +#endif + +/* The timers module relies on xTaskGetSchedulerState(). */ +#if configUSE_TIMERS == 1 + + #ifndef configTIMER_TASK_PRIORITY + #error If configUSE_TIMERS is set to 1 then configTIMER_TASK_PRIORITY must also be defined. + #endif /* configTIMER_TASK_PRIORITY */ + + #ifndef configTIMER_QUEUE_LENGTH + #error If configUSE_TIMERS is set to 1 then configTIMER_QUEUE_LENGTH must also be defined. + #endif /* configTIMER_QUEUE_LENGTH */ + + #ifndef configTIMER_TASK_STACK_DEPTH + #error If configUSE_TIMERS is set to 1 then configTIMER_TASK_STACK_DEPTH must also be defined. + #endif /* configTIMER_TASK_STACK_DEPTH */ + +#endif /* configUSE_TIMERS */ + +#ifndef portSET_INTERRUPT_MASK_FROM_ISR + #define portSET_INTERRUPT_MASK_FROM_ISR() 0 +#endif + +#ifndef portCLEAR_INTERRUPT_MASK_FROM_ISR + #define portCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedStatusValue ) ( void ) uxSavedStatusValue +#endif + +#ifndef portCLEAN_UP_TCB + #define portCLEAN_UP_TCB( pxTCB ) ( void ) pxTCB +#endif + +#ifndef portPRE_TASK_DELETE_HOOK + #define portPRE_TASK_DELETE_HOOK( pvTaskToDelete, pxYieldPending ) +#endif + +#ifndef portSETUP_TCB + #define portSETUP_TCB( pxTCB ) ( void ) pxTCB +#endif + +#ifndef configQUEUE_REGISTRY_SIZE + #define configQUEUE_REGISTRY_SIZE 0U +#endif + +#if ( configQUEUE_REGISTRY_SIZE < 1 ) + #define vQueueAddToRegistry( xQueue, pcName ) + #define vQueueUnregisterQueue( xQueue ) + #define pcQueueGetName( xQueue ) +#endif + +#ifndef portPOINTER_SIZE_TYPE + #define portPOINTER_SIZE_TYPE uint32_t +#endif + +/* Remove any unused trace macros. */ +#ifndef traceSTART + /* Used to perform any necessary initialisation - for example, open a file + into which trace is to be written. */ + #define traceSTART() +#endif + +#ifndef traceEND + /* Use to close a trace, for example close a file into which trace has been + written. */ + #define traceEND() +#endif + +#ifndef traceTASK_SWITCHED_IN + /* Called after a task has been selected to run. pxCurrentTCB holds a pointer + to the task control block of the selected task. */ + #define traceTASK_SWITCHED_IN() +#endif + +#ifndef traceINCREASE_TICK_COUNT + /* Called before stepping the tick count after waking from tickless idle + sleep. */ + #define traceINCREASE_TICK_COUNT( x ) +#endif + +#ifndef traceLOW_POWER_IDLE_BEGIN + /* Called immediately before entering tickless idle. */ + #define traceLOW_POWER_IDLE_BEGIN() +#endif + +#ifndef traceLOW_POWER_IDLE_END + /* Called when returning to the Idle task after a tickless idle. */ + #define traceLOW_POWER_IDLE_END() +#endif + +#ifndef traceTASK_SWITCHED_OUT + /* Called before a task has been selected to run. pxCurrentTCB holds a pointer + to the task control block of the task being switched out. */ + #define traceTASK_SWITCHED_OUT() +#endif + +#ifndef traceTASK_PRIORITY_INHERIT + /* Called when a task attempts to take a mutex that is already held by a + lower priority task. pxTCBOfMutexHolder is a pointer to the TCB of the task + that holds the mutex. uxInheritedPriority is the priority the mutex holder + will inherit (the priority of the task that is attempting to obtain the + muted. */ + #define traceTASK_PRIORITY_INHERIT( pxTCBOfMutexHolder, uxInheritedPriority ) +#endif + +#ifndef traceTASK_PRIORITY_DISINHERIT + /* Called when a task releases a mutex, the holding of which had resulted in + the task inheriting the priority of a higher priority task. + pxTCBOfMutexHolder is a pointer to the TCB of the task that is releasing the + mutex. uxOriginalPriority is the task's configured (base) priority. */ + #define traceTASK_PRIORITY_DISINHERIT( pxTCBOfMutexHolder, uxOriginalPriority ) +#endif + +#ifndef traceBLOCKING_ON_QUEUE_RECEIVE + /* Task is about to block because it cannot read from a + queue/mutex/semaphore. pxQueue is a pointer to the queue/mutex/semaphore + upon which the read was attempted. pxCurrentTCB points to the TCB of the + task that attempted the read. */ + #define traceBLOCKING_ON_QUEUE_RECEIVE( pxQueue ) +#endif + +#ifndef traceBLOCKING_ON_QUEUE_PEEK + /* Task is about to block because it cannot read from a + queue/mutex/semaphore. pxQueue is a pointer to the queue/mutex/semaphore + upon which the read was attempted. pxCurrentTCB points to the TCB of the + task that attempted the read. */ + #define traceBLOCKING_ON_QUEUE_PEEK( pxQueue ) +#endif + +#ifndef traceBLOCKING_ON_QUEUE_SEND + /* Task is about to block because it cannot write to a + queue/mutex/semaphore. pxQueue is a pointer to the queue/mutex/semaphore + upon which the write was attempted. pxCurrentTCB points to the TCB of the + task that attempted the write. */ + #define traceBLOCKING_ON_QUEUE_SEND( pxQueue ) +#endif + +#ifndef configCHECK_FOR_STACK_OVERFLOW + #define configCHECK_FOR_STACK_OVERFLOW 0 +#endif + +#ifndef configRECORD_STACK_HIGH_ADDRESS + #define configRECORD_STACK_HIGH_ADDRESS 0 +#endif + +#ifndef configINCLUDE_FREERTOS_TASK_C_ADDITIONS_H + #define configINCLUDE_FREERTOS_TASK_C_ADDITIONS_H 0 +#endif + +/* The following event macros are embedded in the kernel API calls. */ + +#ifndef traceMOVED_TASK_TO_READY_STATE + #define traceMOVED_TASK_TO_READY_STATE( pxTCB ) +#endif + +#ifndef tracePOST_MOVED_TASK_TO_READY_STATE + #define tracePOST_MOVED_TASK_TO_READY_STATE( pxTCB ) +#endif + +#ifndef traceQUEUE_CREATE + #define traceQUEUE_CREATE( pxNewQueue ) +#endif + +#ifndef traceQUEUE_CREATE_FAILED + #define traceQUEUE_CREATE_FAILED( ucQueueType ) +#endif + +#ifndef traceCREATE_MUTEX + #define traceCREATE_MUTEX( pxNewQueue ) +#endif + +#ifndef traceCREATE_MUTEX_FAILED + #define traceCREATE_MUTEX_FAILED() +#endif + +#ifndef traceGIVE_MUTEX_RECURSIVE + #define traceGIVE_MUTEX_RECURSIVE( pxMutex ) +#endif + +#ifndef traceGIVE_MUTEX_RECURSIVE_FAILED + #define traceGIVE_MUTEX_RECURSIVE_FAILED( pxMutex ) +#endif + +#ifndef traceTAKE_MUTEX_RECURSIVE + #define traceTAKE_MUTEX_RECURSIVE( pxMutex ) +#endif + +#ifndef traceTAKE_MUTEX_RECURSIVE_FAILED + #define traceTAKE_MUTEX_RECURSIVE_FAILED( pxMutex ) +#endif + +#ifndef traceCREATE_COUNTING_SEMAPHORE + #define traceCREATE_COUNTING_SEMAPHORE() +#endif + +#ifndef traceCREATE_COUNTING_SEMAPHORE_FAILED + #define traceCREATE_COUNTING_SEMAPHORE_FAILED() +#endif + +#ifndef traceQUEUE_SEND + #define traceQUEUE_SEND( pxQueue ) +#endif + +#ifndef traceQUEUE_SEND_FAILED + #define traceQUEUE_SEND_FAILED( pxQueue ) +#endif + +#ifndef traceQUEUE_RECEIVE + #define traceQUEUE_RECEIVE( pxQueue ) +#endif + +#ifndef traceQUEUE_PEEK + #define traceQUEUE_PEEK( pxQueue ) +#endif + +#ifndef traceQUEUE_PEEK_FAILED + #define traceQUEUE_PEEK_FAILED( pxQueue ) +#endif + +#ifndef traceQUEUE_PEEK_FROM_ISR + #define traceQUEUE_PEEK_FROM_ISR( pxQueue ) +#endif + +#ifndef traceQUEUE_RECEIVE_FAILED + #define traceQUEUE_RECEIVE_FAILED( pxQueue ) +#endif + +#ifndef traceQUEUE_SEND_FROM_ISR + #define traceQUEUE_SEND_FROM_ISR( pxQueue ) +#endif + +#ifndef traceQUEUE_SEND_FROM_ISR_FAILED + #define traceQUEUE_SEND_FROM_ISR_FAILED( pxQueue ) +#endif + +#ifndef traceQUEUE_RECEIVE_FROM_ISR + #define traceQUEUE_RECEIVE_FROM_ISR( pxQueue ) +#endif + +#ifndef traceQUEUE_RECEIVE_FROM_ISR_FAILED + #define traceQUEUE_RECEIVE_FROM_ISR_FAILED( pxQueue ) +#endif + +#ifndef traceQUEUE_PEEK_FROM_ISR_FAILED + #define traceQUEUE_PEEK_FROM_ISR_FAILED( pxQueue ) +#endif + +#ifndef traceQUEUE_DELETE + #define traceQUEUE_DELETE( pxQueue ) +#endif + +#ifndef traceTASK_CREATE + #define traceTASK_CREATE( pxNewTCB ) +#endif + +#ifndef traceTASK_CREATE_FAILED + #define traceTASK_CREATE_FAILED() +#endif + +#ifndef traceTASK_DELETE + #define traceTASK_DELETE( pxTaskToDelete ) +#endif + +#ifndef traceTASK_DELAY_UNTIL + #define traceTASK_DELAY_UNTIL( x ) +#endif + +#ifndef traceTASK_DELAY + #define traceTASK_DELAY() +#endif + +#ifndef traceTASK_PRIORITY_SET + #define traceTASK_PRIORITY_SET( pxTask, uxNewPriority ) +#endif + +#ifndef traceTASK_SUSPEND + #define traceTASK_SUSPEND( pxTaskToSuspend ) +#endif + +#ifndef traceTASK_RESUME + #define traceTASK_RESUME( pxTaskToResume ) +#endif + +#ifndef traceTASK_RESUME_FROM_ISR + #define traceTASK_RESUME_FROM_ISR( pxTaskToResume ) +#endif + +#ifndef traceTASK_INCREMENT_TICK + #define traceTASK_INCREMENT_TICK( xTickCount ) +#endif + +#ifndef traceTIMER_CREATE + #define traceTIMER_CREATE( pxNewTimer ) +#endif + +#ifndef traceTIMER_CREATE_FAILED + #define traceTIMER_CREATE_FAILED() +#endif + +#ifndef traceTIMER_COMMAND_SEND + #define traceTIMER_COMMAND_SEND( xTimer, xMessageID, xMessageValueValue, xReturn ) +#endif + +#ifndef traceTIMER_EXPIRED + #define traceTIMER_EXPIRED( pxTimer ) +#endif + +#ifndef traceTIMER_COMMAND_RECEIVED + #define traceTIMER_COMMAND_RECEIVED( pxTimer, xMessageID, xMessageValue ) +#endif + +#ifndef traceMALLOC + #define traceMALLOC( pvAddress, uiSize ) +#endif + +#ifndef traceFREE + #define traceFREE( pvAddress, uiSize ) +#endif + +#ifndef traceEVENT_GROUP_CREATE + #define traceEVENT_GROUP_CREATE( xEventGroup ) +#endif + +#ifndef traceEVENT_GROUP_CREATE_FAILED + #define traceEVENT_GROUP_CREATE_FAILED() +#endif + +#ifndef traceEVENT_GROUP_SYNC_BLOCK + #define traceEVENT_GROUP_SYNC_BLOCK( xEventGroup, uxBitsToSet, uxBitsToWaitFor ) +#endif + +#ifndef traceEVENT_GROUP_SYNC_END + #define traceEVENT_GROUP_SYNC_END( xEventGroup, uxBitsToSet, uxBitsToWaitFor, xTimeoutOccurred ) ( void ) xTimeoutOccurred +#endif + +#ifndef traceEVENT_GROUP_WAIT_BITS_BLOCK + #define traceEVENT_GROUP_WAIT_BITS_BLOCK( xEventGroup, uxBitsToWaitFor ) +#endif + +#ifndef traceEVENT_GROUP_WAIT_BITS_END + #define traceEVENT_GROUP_WAIT_BITS_END( xEventGroup, uxBitsToWaitFor, xTimeoutOccurred ) ( void ) xTimeoutOccurred +#endif + +#ifndef traceEVENT_GROUP_CLEAR_BITS + #define traceEVENT_GROUP_CLEAR_BITS( xEventGroup, uxBitsToClear ) +#endif + +#ifndef traceEVENT_GROUP_CLEAR_BITS_FROM_ISR + #define traceEVENT_GROUP_CLEAR_BITS_FROM_ISR( xEventGroup, uxBitsToClear ) +#endif + +#ifndef traceEVENT_GROUP_SET_BITS + #define traceEVENT_GROUP_SET_BITS( xEventGroup, uxBitsToSet ) +#endif + +#ifndef traceEVENT_GROUP_SET_BITS_FROM_ISR + #define traceEVENT_GROUP_SET_BITS_FROM_ISR( xEventGroup, uxBitsToSet ) +#endif + +#ifndef traceEVENT_GROUP_DELETE + #define traceEVENT_GROUP_DELETE( xEventGroup ) +#endif + +#ifndef tracePEND_FUNC_CALL + #define tracePEND_FUNC_CALL(xFunctionToPend, pvParameter1, ulParameter2, ret) +#endif + +#ifndef tracePEND_FUNC_CALL_FROM_ISR + #define tracePEND_FUNC_CALL_FROM_ISR(xFunctionToPend, pvParameter1, ulParameter2, ret) +#endif + +#ifndef traceQUEUE_REGISTRY_ADD + #define traceQUEUE_REGISTRY_ADD(xQueue, pcQueueName) +#endif + +#ifndef traceTASK_NOTIFY_TAKE_BLOCK + #define traceTASK_NOTIFY_TAKE_BLOCK() +#endif + +#ifndef traceTASK_NOTIFY_TAKE + #define traceTASK_NOTIFY_TAKE() +#endif + +#ifndef traceTASK_NOTIFY_WAIT_BLOCK + #define traceTASK_NOTIFY_WAIT_BLOCK() +#endif + +#ifndef traceTASK_NOTIFY_WAIT + #define traceTASK_NOTIFY_WAIT() +#endif + +#ifndef traceTASK_NOTIFY + #define traceTASK_NOTIFY() +#endif + +#ifndef traceTASK_NOTIFY_FROM_ISR + #define traceTASK_NOTIFY_FROM_ISR() +#endif + +#ifndef traceTASK_NOTIFY_GIVE_FROM_ISR + #define traceTASK_NOTIFY_GIVE_FROM_ISR() +#endif + +#ifndef traceSTREAM_BUFFER_CREATE_FAILED + #define traceSTREAM_BUFFER_CREATE_FAILED( xIsMessageBuffer ) +#endif + +#ifndef traceSTREAM_BUFFER_CREATE_STATIC_FAILED + #define traceSTREAM_BUFFER_CREATE_STATIC_FAILED( xReturn, xIsMessageBuffer ) +#endif + +#ifndef traceSTREAM_BUFFER_CREATE + #define traceSTREAM_BUFFER_CREATE( pxStreamBuffer, xIsMessageBuffer ) +#endif + +#ifndef traceSTREAM_BUFFER_DELETE + #define traceSTREAM_BUFFER_DELETE( xStreamBuffer ) +#endif + +#ifndef traceSTREAM_BUFFER_RESET + #define traceSTREAM_BUFFER_RESET( xStreamBuffer ) +#endif + +#ifndef traceBLOCKING_ON_STREAM_BUFFER_SEND + #define traceBLOCKING_ON_STREAM_BUFFER_SEND( xStreamBuffer ) +#endif + +#ifndef traceSTREAM_BUFFER_SEND + #define traceSTREAM_BUFFER_SEND( xStreamBuffer, xBytesSent ) +#endif + +#ifndef traceSTREAM_BUFFER_SEND_FAILED + #define traceSTREAM_BUFFER_SEND_FAILED( xStreamBuffer ) +#endif + +#ifndef traceSTREAM_BUFFER_SEND_FROM_ISR + #define traceSTREAM_BUFFER_SEND_FROM_ISR( xStreamBuffer, xBytesSent ) +#endif + +#ifndef traceBLOCKING_ON_STREAM_BUFFER_RECEIVE + #define traceBLOCKING_ON_STREAM_BUFFER_RECEIVE( xStreamBuffer ) +#endif + +#ifndef traceSTREAM_BUFFER_RECEIVE + #define traceSTREAM_BUFFER_RECEIVE( xStreamBuffer, xReceivedLength ) +#endif + +#ifndef traceSTREAM_BUFFER_RECEIVE_FAILED + #define traceSTREAM_BUFFER_RECEIVE_FAILED( xStreamBuffer ) +#endif + +#ifndef traceSTREAM_BUFFER_RECEIVE_FROM_ISR + #define traceSTREAM_BUFFER_RECEIVE_FROM_ISR( xStreamBuffer, xReceivedLength ) +#endif + +#ifndef configGENERATE_RUN_TIME_STATS + #define configGENERATE_RUN_TIME_STATS 0 +#endif + +#if ( configGENERATE_RUN_TIME_STATS == 1 ) + + #ifndef portCONFIGURE_TIMER_FOR_RUN_TIME_STATS + #error If configGENERATE_RUN_TIME_STATS is defined then portCONFIGURE_TIMER_FOR_RUN_TIME_STATS must also be defined. portCONFIGURE_TIMER_FOR_RUN_TIME_STATS should call a port layer function to setup a peripheral timer/counter that can then be used as the run time counter time base. + #endif /* portCONFIGURE_TIMER_FOR_RUN_TIME_STATS */ + + #ifndef portGET_RUN_TIME_COUNTER_VALUE + #ifndef portALT_GET_RUN_TIME_COUNTER_VALUE + #error If configGENERATE_RUN_TIME_STATS is defined then either portGET_RUN_TIME_COUNTER_VALUE or portALT_GET_RUN_TIME_COUNTER_VALUE must also be defined. See the examples provided and the FreeRTOS web site for more information. + #endif /* portALT_GET_RUN_TIME_COUNTER_VALUE */ + #endif /* portGET_RUN_TIME_COUNTER_VALUE */ + +#endif /* configGENERATE_RUN_TIME_STATS */ + +#ifndef portCONFIGURE_TIMER_FOR_RUN_TIME_STATS + #define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() +#endif + +#ifndef configUSE_MALLOC_FAILED_HOOK + #define configUSE_MALLOC_FAILED_HOOK 0 +#endif + +#ifndef portPRIVILEGE_BIT + #define portPRIVILEGE_BIT ( ( UBaseType_t ) 0x00 ) +#endif + +#ifndef portYIELD_WITHIN_API + #define portYIELD_WITHIN_API portYIELD +#endif + +#ifndef portSUPPRESS_TICKS_AND_SLEEP + #define portSUPPRESS_TICKS_AND_SLEEP( xExpectedIdleTime ) +#endif + +#ifndef configEXPECTED_IDLE_TIME_BEFORE_SLEEP + #define configEXPECTED_IDLE_TIME_BEFORE_SLEEP 2 +#endif + +#if configEXPECTED_IDLE_TIME_BEFORE_SLEEP < 2 + #error configEXPECTED_IDLE_TIME_BEFORE_SLEEP must not be less than 2 +#endif + +#ifndef configUSE_TICKLESS_IDLE + #define configUSE_TICKLESS_IDLE 0 +#endif + +#ifndef configPRE_SUPPRESS_TICKS_AND_SLEEP_PROCESSING + #define configPRE_SUPPRESS_TICKS_AND_SLEEP_PROCESSING( x ) +#endif + +#ifndef configPRE_SLEEP_PROCESSING + #define configPRE_SLEEP_PROCESSING( x ) +#endif + +#ifndef configPOST_SLEEP_PROCESSING + #define configPOST_SLEEP_PROCESSING( x ) +#endif + +#ifndef configUSE_QUEUE_SETS + #define configUSE_QUEUE_SETS 0 +#endif + +#ifndef portTASK_USES_FLOATING_POINT + #define portTASK_USES_FLOATING_POINT() +#endif + +#ifndef portALLOCATE_SECURE_CONTEXT + #define portALLOCATE_SECURE_CONTEXT( ulSecureStackSize ) +#endif + +#ifndef portDONT_DISCARD + #define portDONT_DISCARD +#endif + +#ifndef configUSE_TIME_SLICING + #define configUSE_TIME_SLICING 1 +#endif + +#ifndef configINCLUDE_APPLICATION_DEFINED_PRIVILEGED_FUNCTIONS + #define configINCLUDE_APPLICATION_DEFINED_PRIVILEGED_FUNCTIONS 0 +#endif + +#ifndef configUSE_STATS_FORMATTING_FUNCTIONS + #define configUSE_STATS_FORMATTING_FUNCTIONS 0 +#endif + +#ifndef portASSERT_IF_INTERRUPT_PRIORITY_INVALID + #define portASSERT_IF_INTERRUPT_PRIORITY_INVALID() +#endif + +#ifndef configUSE_TRACE_FACILITY + #define configUSE_TRACE_FACILITY 0 +#endif + +#ifndef mtCOVERAGE_TEST_MARKER + #define mtCOVERAGE_TEST_MARKER() +#endif + +#ifndef mtCOVERAGE_TEST_DELAY + #define mtCOVERAGE_TEST_DELAY() +#endif + +#ifndef portASSERT_IF_IN_ISR + #define portASSERT_IF_IN_ISR() +#endif + +#ifndef configUSE_PORT_OPTIMISED_TASK_SELECTION + #define configUSE_PORT_OPTIMISED_TASK_SELECTION 0 +#endif + +#ifndef configAPPLICATION_ALLOCATED_HEAP + #define configAPPLICATION_ALLOCATED_HEAP 0 +#endif + +#ifndef configUSE_TASK_NOTIFICATIONS + #define configUSE_TASK_NOTIFICATIONS 1 +#endif + +#ifndef configUSE_POSIX_ERRNO + #define configUSE_POSIX_ERRNO 0 +#endif + +#ifndef portTICK_TYPE_IS_ATOMIC + #define portTICK_TYPE_IS_ATOMIC 0 +#endif + +#ifndef configSUPPORT_STATIC_ALLOCATION + /* Defaults to 0 for backward compatibility. */ + #define configSUPPORT_STATIC_ALLOCATION 0 +#endif + +#ifndef configSUPPORT_DYNAMIC_ALLOCATION + /* Defaults to 1 for backward compatibility. */ + #define configSUPPORT_DYNAMIC_ALLOCATION 1 +#endif + +#ifndef configSTACK_DEPTH_TYPE + /* Defaults to uint16_t for backward compatibility, but can be overridden + in FreeRTOSConfig.h if uint16_t is too restrictive. */ + #define configSTACK_DEPTH_TYPE uint16_t +#endif + +#ifndef configMESSAGE_BUFFER_LENGTH_TYPE + /* Defaults to size_t for backward compatibility, but can be overridden + in FreeRTOSConfig.h if lengths will always be less than the number of bytes + in a size_t. */ + #define configMESSAGE_BUFFER_LENGTH_TYPE size_t +#endif + +/* Sanity check the configuration. */ +#if( configUSE_TICKLESS_IDLE != 0 ) + #if( INCLUDE_vTaskSuspend != 1 ) + #error INCLUDE_vTaskSuspend must be set to 1 if configUSE_TICKLESS_IDLE is not set to 0 + #endif /* INCLUDE_vTaskSuspend */ +#endif /* configUSE_TICKLESS_IDLE */ + +#if( ( configSUPPORT_STATIC_ALLOCATION == 0 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 0 ) ) + #error configSUPPORT_STATIC_ALLOCATION and configSUPPORT_DYNAMIC_ALLOCATION cannot both be 0, but can both be 1. +#endif + +#if( ( configUSE_RECURSIVE_MUTEXES == 1 ) && ( configUSE_MUTEXES != 1 ) ) + #error configUSE_MUTEXES must be set to 1 to use recursive mutexes +#endif + +#ifndef configINITIAL_TICK_COUNT + #define configINITIAL_TICK_COUNT 0 +#endif + +#if( portTICK_TYPE_IS_ATOMIC == 0 ) + /* Either variables of tick type cannot be read atomically, or + portTICK_TYPE_IS_ATOMIC was not set - map the critical sections used when + the tick count is returned to the standard critical section macros. */ + #define portTICK_TYPE_ENTER_CRITICAL() portENTER_CRITICAL() + #define portTICK_TYPE_EXIT_CRITICAL() portEXIT_CRITICAL() + #define portTICK_TYPE_SET_INTERRUPT_MASK_FROM_ISR() portSET_INTERRUPT_MASK_FROM_ISR() + #define portTICK_TYPE_CLEAR_INTERRUPT_MASK_FROM_ISR( x ) portCLEAR_INTERRUPT_MASK_FROM_ISR( ( x ) ) +#else + /* The tick type can be read atomically, so critical sections used when the + tick count is returned can be defined away. */ + #define portTICK_TYPE_ENTER_CRITICAL() + #define portTICK_TYPE_EXIT_CRITICAL() + #define portTICK_TYPE_SET_INTERRUPT_MASK_FROM_ISR() 0 + #define portTICK_TYPE_CLEAR_INTERRUPT_MASK_FROM_ISR( x ) ( void ) x +#endif + +/* Definitions to allow backward compatibility with FreeRTOS versions prior to +V8 if desired. */ +#ifndef configENABLE_BACKWARD_COMPATIBILITY + #define configENABLE_BACKWARD_COMPATIBILITY 1 +#endif + +#ifndef configPRINTF + /* configPRINTF() was not defined, so define it away to nothing. To use + configPRINTF() then define it as follows (where MyPrintFunction() is + provided by the application writer): + + void MyPrintFunction(const char *pcFormat, ... ); + #define configPRINTF( X ) MyPrintFunction X + + Then call like a standard printf() function, but placing brackets around + all parameters so they are passed as a single parameter. For example: + configPRINTF( ("Value = %d", MyVariable) ); */ + #define configPRINTF( X ) +#endif + +#ifndef configMAX + /* The application writer has not provided their own MAX macro, so define + the following generic implementation. */ + #define configMAX( a, b ) ( ( ( a ) > ( b ) ) ? ( a ) : ( b ) ) +#endif + +#ifndef configMIN + /* The application writer has not provided their own MAX macro, so define + the following generic implementation. */ + #define configMIN( a, b ) ( ( ( a ) < ( b ) ) ? ( a ) : ( b ) ) +#endif + +#if configENABLE_BACKWARD_COMPATIBILITY == 1 + #define eTaskStateGet eTaskGetState + #define portTickType TickType_t + #define xTaskHandle TaskHandle_t + #define xQueueHandle QueueHandle_t + #define xSemaphoreHandle SemaphoreHandle_t + #define xQueueSetHandle QueueSetHandle_t + #define xQueueSetMemberHandle QueueSetMemberHandle_t + #define xTimeOutType TimeOut_t + #define xMemoryRegion MemoryRegion_t + #define xTaskParameters TaskParameters_t + #define xTaskStatusType TaskStatus_t + #define xTimerHandle TimerHandle_t + #define xCoRoutineHandle CoRoutineHandle_t + #define pdTASK_HOOK_CODE TaskHookFunction_t + #define portTICK_RATE_MS portTICK_PERIOD_MS + #define pcTaskGetTaskName pcTaskGetName + #define pcTimerGetTimerName pcTimerGetName + #define pcQueueGetQueueName pcQueueGetName + #define vTaskGetTaskInfo vTaskGetInfo + #define xTaskGetIdleRunTimeCounter ulTaskGetIdleRunTimeCounter + + /* Backward compatibility within the scheduler code only - these definitions + are not really required but are included for completeness. */ + #define tmrTIMER_CALLBACK TimerCallbackFunction_t + #define pdTASK_CODE TaskFunction_t + #define xListItem ListItem_t + #define xList List_t + + /* For libraries that break the list data hiding, and access list structure + members directly (which is not supposed to be done). */ + #define pxContainer pvContainer +#endif /* configENABLE_BACKWARD_COMPATIBILITY */ + +#if( configUSE_ALTERNATIVE_API != 0 ) + #error The alternative API was deprecated some time ago, and was removed in FreeRTOS V9.0 0 +#endif + +/* Set configUSE_TASK_FPU_SUPPORT to 0 to omit floating point support even +if floating point hardware is otherwise supported by the FreeRTOS port in use. +This constant is not supported by all FreeRTOS ports that include floating +point support. */ +#ifndef configUSE_TASK_FPU_SUPPORT + #define configUSE_TASK_FPU_SUPPORT 1 +#endif + +/* Set configENABLE_MPU to 1 to enable MPU support and 0 to disable it. This is +currently used in ARMv8M ports. */ +#ifndef configENABLE_MPU + #define configENABLE_MPU 0 +#endif + +/* Set configENABLE_FPU to 1 to enable FPU support and 0 to disable it. This is +currently used in ARMv8M ports. */ +#ifndef configENABLE_FPU + #define configENABLE_FPU 1 +#endif + +/* Set configENABLE_TRUSTZONE to 1 enable TrustZone support and 0 to disable it. +This is currently used in ARMv8M ports. */ +#ifndef configENABLE_TRUSTZONE + #define configENABLE_TRUSTZONE 1 +#endif + +/* Set configRUN_FREERTOS_SECURE_ONLY to 1 to run the FreeRTOS ARMv8M port on +the Secure Side only. */ +#ifndef configRUN_FREERTOS_SECURE_ONLY + #define configRUN_FREERTOS_SECURE_ONLY 0 +#endif + +/* Sometimes the FreeRTOSConfig.h settings only allow a task to be created using + * dynamically allocated RAM, in which case when any task is deleted it is known + * that both the task's stack and TCB need to be freed. Sometimes the + * FreeRTOSConfig.h settings only allow a task to be created using statically + * allocated RAM, in which case when any task is deleted it is known that neither + * the task's stack or TCB should be freed. Sometimes the FreeRTOSConfig.h + * settings allow a task to be created using either statically or dynamically + * allocated RAM, in which case a member of the TCB is used to record whether the + * stack and/or TCB were allocated statically or dynamically, so when a task is + * deleted the RAM that was allocated dynamically is freed again and no attempt is + * made to free the RAM that was allocated statically. + * tskSTATIC_AND_DYNAMIC_ALLOCATION_POSSIBLE is only true if it is possible for a + * task to be created using either statically or dynamically allocated RAM. Note + * that if portUSING_MPU_WRAPPERS is 1 then a protected task can be created with + * a statically allocated stack and a dynamically allocated TCB. + * + * The following table lists various combinations of portUSING_MPU_WRAPPERS, + * configSUPPORT_DYNAMIC_ALLOCATION and configSUPPORT_STATIC_ALLOCATION and + * when it is possible to have both static and dynamic allocation: + * +-----+---------+--------+-----------------------------+-----------------------------------+------------------+-----------+ + * | MPU | Dynamic | Static | Available Functions | Possible Allocations | Both Dynamic and | Need Free | + * | | | | | | Static Possible | | + * +-----+---------+--------+-----------------------------+-----------------------------------+------------------+-----------+ + * | 0 | 0 | 1 | xTaskCreateStatic | TCB - Static, Stack - Static | No | No | + * +-----|---------|--------|-----------------------------|-----------------------------------|------------------|-----------| + * | 0 | 1 | 0 | xTaskCreate | TCB - Dynamic, Stack - Dynamic | No | Yes | + * +-----|---------|--------|-----------------------------|-----------------------------------|------------------|-----------| + * | 0 | 1 | 1 | xTaskCreate, | 1. TCB - Dynamic, Stack - Dynamic | Yes | Yes | + * | | | | xTaskCreateStatic | 2. TCB - Static, Stack - Static | | | + * +-----|---------|--------|-----------------------------|-----------------------------------|------------------|-----------| + * | 1 | 0 | 1 | xTaskCreateStatic, | TCB - Static, Stack - Static | No | No | + * | | | | xTaskCreateRestrictedStatic | | | | + * +-----|---------|--------|-----------------------------|-----------------------------------|------------------|-----------| + * | 1 | 1 | 0 | xTaskCreate, | 1. TCB - Dynamic, Stack - Dynamic | Yes | Yes | + * | | | | xTaskCreateRestricted | 2. TCB - Dynamic, Stack - Static | | | + * +-----|---------|--------|-----------------------------|-----------------------------------|------------------|-----------| + * | 1 | 1 | 1 | xTaskCreate, | 1. TCB - Dynamic, Stack - Dynamic | Yes | Yes | + * | | | | xTaskCreateStatic, | 2. TCB - Dynamic, Stack - Static | | | + * | | | | xTaskCreateRestricted, | 3. TCB - Static, Stack - Static | | | + * | | | | xTaskCreateRestrictedStatic | | | | + * +-----+---------+--------+-----------------------------+-----------------------------------+------------------+-----------+ + */ +#define tskSTATIC_AND_DYNAMIC_ALLOCATION_POSSIBLE ( ( ( portUSING_MPU_WRAPPERS == 0 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) && ( configSUPPORT_STATIC_ALLOCATION == 1 ) ) || \ + ( ( portUSING_MPU_WRAPPERS == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) ) ) + +/* + * In line with software engineering best practice, FreeRTOS implements a strict + * data hiding policy, so the real structures used by FreeRTOS to maintain the + * state of tasks, queues, semaphores, etc. are not accessible to the application + * code. However, if the application writer wants to statically allocate such + * an object then the size of the object needs to be know. Dummy structures + * that are guaranteed to have the same size and alignment requirements of the + * real objects are used for this purpose. The dummy list and list item + * structures below are used for inclusion in such a dummy structure. + */ +struct xSTATIC_LIST_ITEM +{ + #if( configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES == 1 ) + TickType_t xDummy1; + #endif + TickType_t xDummy2; + void *pvDummy3[ 4 ]; + #if( configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES == 1 ) + TickType_t xDummy4; + #endif +}; +typedef struct xSTATIC_LIST_ITEM StaticListItem_t; + +/* See the comments above the struct xSTATIC_LIST_ITEM definition. */ +struct xSTATIC_MINI_LIST_ITEM +{ + #if( configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES == 1 ) + TickType_t xDummy1; + #endif + TickType_t xDummy2; + void *pvDummy3[ 2 ]; +}; +typedef struct xSTATIC_MINI_LIST_ITEM StaticMiniListItem_t; + +/* See the comments above the struct xSTATIC_LIST_ITEM definition. */ +typedef struct xSTATIC_LIST +{ + #if( configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES == 1 ) + TickType_t xDummy1; + #endif + UBaseType_t uxDummy2; + void *pvDummy3; + StaticMiniListItem_t xDummy4; + #if( configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES == 1 ) + TickType_t xDummy5; + #endif +} StaticList_t; + +/* + * In line with software engineering best practice, especially when supplying a + * library that is likely to change in future versions, FreeRTOS implements a + * strict data hiding policy. This means the Task structure used internally by + * FreeRTOS is not accessible to application code. However, if the application + * writer wants to statically allocate the memory required to create a task then + * the size of the task object needs to be know. The StaticTask_t structure + * below is provided for this purpose. Its sizes and alignment requirements are + * guaranteed to match those of the genuine structure, no matter which + * architecture is being used, and no matter how the values in FreeRTOSConfig.h + * are set. Its contents are somewhat obfuscated in the hope users will + * recognise that it would be unwise to make direct use of the structure members. + */ +typedef struct xSTATIC_TCB +{ + void *pxDummy1; + #if ( portUSING_MPU_WRAPPERS == 1 ) + xMPU_SETTINGS xDummy2; + #endif + StaticListItem_t xDummy3[ 2 ]; + UBaseType_t uxDummy5; + void *pxDummy6; + uint8_t ucDummy7[ configMAX_TASK_NAME_LEN ]; + #if ( ( portSTACK_GROWTH > 0 ) || ( configRECORD_STACK_HIGH_ADDRESS == 1 ) ) + void *pxDummy8; + #endif + #if ( portCRITICAL_NESTING_IN_TCB == 1 ) + UBaseType_t uxDummy9; + #endif + #if ( configUSE_TRACE_FACILITY == 1 ) + UBaseType_t uxDummy10[ 2 ]; + #endif + #if ( configUSE_MUTEXES == 1 ) + UBaseType_t uxDummy12[ 2 ]; + #endif + #if ( configUSE_APPLICATION_TASK_TAG == 1 ) + void *pxDummy14; + #endif + #if( configNUM_THREAD_LOCAL_STORAGE_POINTERS > 0 ) + void *pvDummy15[ configNUM_THREAD_LOCAL_STORAGE_POINTERS ]; + #endif + #if ( configGENERATE_RUN_TIME_STATS == 1 ) + uint32_t ulDummy16; + #endif + #if ( configUSE_NEWLIB_REENTRANT == 1 ) + struct _reent xDummy17; + #endif + #if ( configUSE_TASK_NOTIFICATIONS == 1 ) + uint32_t ulDummy18; + uint8_t ucDummy19; + #endif + #if ( tskSTATIC_AND_DYNAMIC_ALLOCATION_POSSIBLE != 0 ) + uint8_t uxDummy20; + #endif + + #if( INCLUDE_xTaskAbortDelay == 1 ) + uint8_t ucDummy21; + #endif + #if ( configUSE_POSIX_ERRNO == 1 ) + int iDummy22; + #endif +} StaticTask_t; + +/* + * In line with software engineering best practice, especially when supplying a + * library that is likely to change in future versions, FreeRTOS implements a + * strict data hiding policy. This means the Queue structure used internally by + * FreeRTOS is not accessible to application code. However, if the application + * writer wants to statically allocate the memory required to create a queue + * then the size of the queue object needs to be know. The StaticQueue_t + * structure below is provided for this purpose. Its sizes and alignment + * requirements are guaranteed to match those of the genuine structure, no + * matter which architecture is being used, and no matter how the values in + * FreeRTOSConfig.h are set. Its contents are somewhat obfuscated in the hope + * users will recognise that it would be unwise to make direct use of the + * structure members. + */ +typedef struct xSTATIC_QUEUE +{ + void *pvDummy1[ 3 ]; + + union + { + void *pvDummy2; + UBaseType_t uxDummy2; + } u; + + StaticList_t xDummy3[ 2 ]; + UBaseType_t uxDummy4[ 3 ]; + uint8_t ucDummy5[ 2 ]; + + #if( ( configSUPPORT_STATIC_ALLOCATION == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) ) + uint8_t ucDummy6; + #endif + + #if ( configUSE_QUEUE_SETS == 1 ) + void *pvDummy7; + #endif + + #if ( configUSE_TRACE_FACILITY == 1 ) + UBaseType_t uxDummy8; + uint8_t ucDummy9; + #endif + +} StaticQueue_t; +typedef StaticQueue_t StaticSemaphore_t; + +/* + * In line with software engineering best practice, especially when supplying a + * library that is likely to change in future versions, FreeRTOS implements a + * strict data hiding policy. This means the event group structure used + * internally by FreeRTOS is not accessible to application code. However, if + * the application writer wants to statically allocate the memory required to + * create an event group then the size of the event group object needs to be + * know. The StaticEventGroup_t structure below is provided for this purpose. + * Its sizes and alignment requirements are guaranteed to match those of the + * genuine structure, no matter which architecture is being used, and no matter + * how the values in FreeRTOSConfig.h are set. Its contents are somewhat + * obfuscated in the hope users will recognise that it would be unwise to make + * direct use of the structure members. + */ +typedef struct xSTATIC_EVENT_GROUP +{ + TickType_t xDummy1; + StaticList_t xDummy2; + + #if( configUSE_TRACE_FACILITY == 1 ) + UBaseType_t uxDummy3; + #endif + + #if( ( configSUPPORT_STATIC_ALLOCATION == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) ) + uint8_t ucDummy4; + #endif + +} StaticEventGroup_t; + +/* + * In line with software engineering best practice, especially when supplying a + * library that is likely to change in future versions, FreeRTOS implements a + * strict data hiding policy. This means the software timer structure used + * internally by FreeRTOS is not accessible to application code. However, if + * the application writer wants to statically allocate the memory required to + * create a software timer then the size of the queue object needs to be know. + * The StaticTimer_t structure below is provided for this purpose. Its sizes + * and alignment requirements are guaranteed to match those of the genuine + * structure, no matter which architecture is being used, and no matter how the + * values in FreeRTOSConfig.h are set. Its contents are somewhat obfuscated in + * the hope users will recognise that it would be unwise to make direct use of + * the structure members. + */ +typedef struct xSTATIC_TIMER +{ + void *pvDummy1; + StaticListItem_t xDummy2; + TickType_t xDummy3; + void *pvDummy5; + TaskFunction_t pvDummy6; + #if( configUSE_TRACE_FACILITY == 1 ) + UBaseType_t uxDummy7; + #endif + uint8_t ucDummy8; + +} StaticTimer_t; + +/* +* In line with software engineering best practice, especially when supplying a +* library that is likely to change in future versions, FreeRTOS implements a +* strict data hiding policy. This means the stream buffer structure used +* internally by FreeRTOS is not accessible to application code. However, if +* the application writer wants to statically allocate the memory required to +* create a stream buffer then the size of the stream buffer object needs to be +* know. The StaticStreamBuffer_t structure below is provided for this purpose. +* Its size and alignment requirements are guaranteed to match those of the +* genuine structure, no matter which architecture is being used, and no matter +* how the values in FreeRTOSConfig.h are set. Its contents are somewhat +* obfuscated in the hope users will recognise that it would be unwise to make +* direct use of the structure members. +*/ +typedef struct xSTATIC_STREAM_BUFFER +{ + size_t uxDummy1[ 4 ]; + void * pvDummy2[ 3 ]; + uint8_t ucDummy3; + #if ( configUSE_TRACE_FACILITY == 1 ) + UBaseType_t uxDummy4; + #endif +} StaticStreamBuffer_t; + +/* Message buffers are built on stream buffers. */ +typedef StaticStreamBuffer_t StaticMessageBuffer_t; + +#ifdef __cplusplus +} +#endif + +#endif /* INC_FREERTOS_H */ + diff --git a/firmware/Middlewares/Third_Party/FreeRTOS/Source/include/StackMacros.h b/firmware/Middlewares/Third_Party/FreeRTOS/Source/include/StackMacros.h new file mode 100644 index 0000000..5643991 --- /dev/null +++ b/firmware/Middlewares/Third_Party/FreeRTOS/Source/include/StackMacros.h @@ -0,0 +1,133 @@ +/* + * FreeRTOS Kernel V10.3.1 + * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * http://www.FreeRTOS.org + * http://aws.amazon.com/freertos + * + * 1 tab == 4 spaces! + */ + +#ifndef STACK_MACROS_H +#define STACK_MACROS_H + +#ifndef _MSC_VER /* Visual Studio doesn't support #warning. */ + #warning The name of this file has changed to stack_macros.h. Please update your code accordingly. This source file (which has the original name) will be removed in future released. +#endif + +/* + * Call the stack overflow hook function if the stack of the task being swapped + * out is currently overflowed, or looks like it might have overflowed in the + * past. + * + * Setting configCHECK_FOR_STACK_OVERFLOW to 1 will cause the macro to check + * the current stack state only - comparing the current top of stack value to + * the stack limit. Setting configCHECK_FOR_STACK_OVERFLOW to greater than 1 + * will also cause the last few stack bytes to be checked to ensure the value + * to which the bytes were set when the task was created have not been + * overwritten. Note this second test does not guarantee that an overflowed + * stack will always be recognised. + */ + +/*-----------------------------------------------------------*/ + +#if( ( configCHECK_FOR_STACK_OVERFLOW == 1 ) && ( portSTACK_GROWTH < 0 ) ) + + /* Only the current stack state is to be checked. */ + #define taskCHECK_FOR_STACK_OVERFLOW() \ + { \ + /* Is the currently saved stack pointer within the stack limit? */ \ + if( pxCurrentTCB->pxTopOfStack <= pxCurrentTCB->pxStack ) \ + { \ + vApplicationStackOverflowHook( ( TaskHandle_t ) pxCurrentTCB, pxCurrentTCB->pcTaskName ); \ + } \ + } + +#endif /* configCHECK_FOR_STACK_OVERFLOW == 1 */ +/*-----------------------------------------------------------*/ + +#if( ( configCHECK_FOR_STACK_OVERFLOW == 1 ) && ( portSTACK_GROWTH > 0 ) ) + + /* Only the current stack state is to be checked. */ + #define taskCHECK_FOR_STACK_OVERFLOW() \ + { \ + \ + /* Is the currently saved stack pointer within the stack limit? */ \ + if( pxCurrentTCB->pxTopOfStack >= pxCurrentTCB->pxEndOfStack ) \ + { \ + vApplicationStackOverflowHook( ( TaskHandle_t ) pxCurrentTCB, pxCurrentTCB->pcTaskName ); \ + } \ + } + +#endif /* configCHECK_FOR_STACK_OVERFLOW == 1 */ +/*-----------------------------------------------------------*/ + +#if( ( configCHECK_FOR_STACK_OVERFLOW > 1 ) && ( portSTACK_GROWTH < 0 ) ) + + #define taskCHECK_FOR_STACK_OVERFLOW() \ + { \ + const uint32_t * const pulStack = ( uint32_t * ) pxCurrentTCB->pxStack; \ + const uint32_t ulCheckValue = ( uint32_t ) 0xa5a5a5a5; \ + \ + if( ( pulStack[ 0 ] != ulCheckValue ) || \ + ( pulStack[ 1 ] != ulCheckValue ) || \ + ( pulStack[ 2 ] != ulCheckValue ) || \ + ( pulStack[ 3 ] != ulCheckValue ) ) \ + { \ + vApplicationStackOverflowHook( ( TaskHandle_t ) pxCurrentTCB, pxCurrentTCB->pcTaskName ); \ + } \ + } + +#endif /* #if( configCHECK_FOR_STACK_OVERFLOW > 1 ) */ +/*-----------------------------------------------------------*/ + +#if( ( configCHECK_FOR_STACK_OVERFLOW > 1 ) && ( portSTACK_GROWTH > 0 ) ) + + #define taskCHECK_FOR_STACK_OVERFLOW() \ + { \ + int8_t *pcEndOfStack = ( int8_t * ) pxCurrentTCB->pxEndOfStack; \ + static const uint8_t ucExpectedStackBytes[] = { tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, \ + tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, \ + tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, \ + tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, \ + tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE }; \ + \ + \ + pcEndOfStack -= sizeof( ucExpectedStackBytes ); \ + \ + /* Has the extremity of the task stack ever been written over? */ \ + if( memcmp( ( void * ) pcEndOfStack, ( void * ) ucExpectedStackBytes, sizeof( ucExpectedStackBytes ) ) != 0 ) \ + { \ + vApplicationStackOverflowHook( ( TaskHandle_t ) pxCurrentTCB, pxCurrentTCB->pcTaskName ); \ + } \ + } + +#endif /* #if( configCHECK_FOR_STACK_OVERFLOW > 1 ) */ +/*-----------------------------------------------------------*/ + +/* Remove stack overflow macro if not being used. */ +#ifndef taskCHECK_FOR_STACK_OVERFLOW + #define taskCHECK_FOR_STACK_OVERFLOW() +#endif + + + +#endif /* STACK_MACROS_H */ + diff --git a/firmware/Middlewares/Third_Party/FreeRTOS/Source/include/atomic.h b/firmware/Middlewares/Third_Party/FreeRTOS/Source/include/atomic.h new file mode 100644 index 0000000..ceca696 --- /dev/null +++ b/firmware/Middlewares/Third_Party/FreeRTOS/Source/include/atomic.h @@ -0,0 +1,414 @@ +/* + * FreeRTOS Kernel V10.3.1 + * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * http://www.FreeRTOS.org + * http://aws.amazon.com/freertos + * + * 1 tab == 4 spaces! + */ + +/** + * @file atomic.h + * @brief FreeRTOS atomic operation support. + * + * This file implements atomic functions by disabling interrupts globally. + * Implementations with architecture specific atomic instructions can be + * provided under each compiler directory. + */ + +#ifndef ATOMIC_H +#define ATOMIC_H + +#ifndef INC_FREERTOS_H + #error "include FreeRTOS.h must appear in source files before include atomic.h" +#endif + +/* Standard includes. */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Port specific definitions -- entering/exiting critical section. + * Refer template -- ./lib/FreeRTOS/portable/Compiler/Arch/portmacro.h + * + * Every call to ATOMIC_EXIT_CRITICAL() must be closely paired with + * ATOMIC_ENTER_CRITICAL(). + * + */ +#if defined( portSET_INTERRUPT_MASK_FROM_ISR ) + + /* Nested interrupt scheme is supported in this port. */ + #define ATOMIC_ENTER_CRITICAL() \ + UBaseType_t uxCriticalSectionType = portSET_INTERRUPT_MASK_FROM_ISR() + + #define ATOMIC_EXIT_CRITICAL() \ + portCLEAR_INTERRUPT_MASK_FROM_ISR( uxCriticalSectionType ) + +#else + + /* Nested interrupt scheme is NOT supported in this port. */ + #define ATOMIC_ENTER_CRITICAL() portENTER_CRITICAL() + #define ATOMIC_EXIT_CRITICAL() portEXIT_CRITICAL() + +#endif /* portSET_INTERRUPT_MASK_FROM_ISR() */ + +/* + * Port specific definition -- "always inline". + * Inline is compiler specific, and may not always get inlined depending on your + * optimization level. Also, inline is considered as performance optimization + * for atomic. Thus, if portFORCE_INLINE is not provided by portmacro.h, + * instead of resulting error, simply define it away. + */ +#ifndef portFORCE_INLINE + #define portFORCE_INLINE +#endif + +#define ATOMIC_COMPARE_AND_SWAP_SUCCESS 0x1U /**< Compare and swap succeeded, swapped. */ +#define ATOMIC_COMPARE_AND_SWAP_FAILURE 0x0U /**< Compare and swap failed, did not swap. */ + +/*----------------------------- Swap && CAS ------------------------------*/ + +/** + * Atomic compare-and-swap + * + * @brief Performs an atomic compare-and-swap operation on the specified values. + * + * @param[in, out] pulDestination Pointer to memory location from where value is + * to be loaded and checked. + * @param[in] ulExchange If condition meets, write this value to memory. + * @param[in] ulComparand Swap condition. + * + * @return Unsigned integer of value 1 or 0. 1 for swapped, 0 for not swapped. + * + * @note This function only swaps *pulDestination with ulExchange, if previous + * *pulDestination value equals ulComparand. + */ +static portFORCE_INLINE uint32_t Atomic_CompareAndSwap_u32( uint32_t volatile * pulDestination, + uint32_t ulExchange, + uint32_t ulComparand ) +{ +uint32_t ulReturnValue; + + ATOMIC_ENTER_CRITICAL(); + { + if( *pulDestination == ulComparand ) + { + *pulDestination = ulExchange; + ulReturnValue = ATOMIC_COMPARE_AND_SWAP_SUCCESS; + } + else + { + ulReturnValue = ATOMIC_COMPARE_AND_SWAP_FAILURE; + } + } + ATOMIC_EXIT_CRITICAL(); + + return ulReturnValue; +} +/*-----------------------------------------------------------*/ + +/** + * Atomic swap (pointers) + * + * @brief Atomically sets the address pointed to by *ppvDestination to the value + * of *pvExchange. + * + * @param[in, out] ppvDestination Pointer to memory location from where a pointer + * value is to be loaded and written back to. + * @param[in] pvExchange Pointer value to be written to *ppvDestination. + * + * @return The initial value of *ppvDestination. + */ +static portFORCE_INLINE void * Atomic_SwapPointers_p32( void * volatile * ppvDestination, + void * pvExchange ) +{ +void * pReturnValue; + + ATOMIC_ENTER_CRITICAL(); + { + pReturnValue = *ppvDestination; + *ppvDestination = pvExchange; + } + ATOMIC_EXIT_CRITICAL(); + + return pReturnValue; +} +/*-----------------------------------------------------------*/ + +/** + * Atomic compare-and-swap (pointers) + * + * @brief Performs an atomic compare-and-swap operation on the specified pointer + * values. + * + * @param[in, out] ppvDestination Pointer to memory location from where a pointer + * value is to be loaded and checked. + * @param[in] pvExchange If condition meets, write this value to memory. + * @param[in] pvComparand Swap condition. + * + * @return Unsigned integer of value 1 or 0. 1 for swapped, 0 for not swapped. + * + * @note This function only swaps *ppvDestination with pvExchange, if previous + * *ppvDestination value equals pvComparand. + */ +static portFORCE_INLINE uint32_t Atomic_CompareAndSwapPointers_p32( void * volatile * ppvDestination, + void * pvExchange, + void * pvComparand ) +{ +uint32_t ulReturnValue = ATOMIC_COMPARE_AND_SWAP_FAILURE; + + ATOMIC_ENTER_CRITICAL(); + { + if( *ppvDestination == pvComparand ) + { + *ppvDestination = pvExchange; + ulReturnValue = ATOMIC_COMPARE_AND_SWAP_SUCCESS; + } + } + ATOMIC_EXIT_CRITICAL(); + + return ulReturnValue; +} + + +/*----------------------------- Arithmetic ------------------------------*/ + +/** + * Atomic add + * + * @brief Atomically adds count to the value of the specified pointer points to. + * + * @param[in,out] pulAddend Pointer to memory location from where value is to be + * loaded and written back to. + * @param[in] ulCount Value to be added to *pulAddend. + * + * @return previous *pulAddend value. + */ +static portFORCE_INLINE uint32_t Atomic_Add_u32( uint32_t volatile * pulAddend, + uint32_t ulCount ) +{ + uint32_t ulCurrent; + + ATOMIC_ENTER_CRITICAL(); + { + ulCurrent = *pulAddend; + *pulAddend += ulCount; + } + ATOMIC_EXIT_CRITICAL(); + + return ulCurrent; +} +/*-----------------------------------------------------------*/ + +/** + * Atomic subtract + * + * @brief Atomically subtracts count from the value of the specified pointer + * pointers to. + * + * @param[in,out] pulAddend Pointer to memory location from where value is to be + * loaded and written back to. + * @param[in] ulCount Value to be subtract from *pulAddend. + * + * @return previous *pulAddend value. + */ +static portFORCE_INLINE uint32_t Atomic_Subtract_u32( uint32_t volatile * pulAddend, + uint32_t ulCount ) +{ + uint32_t ulCurrent; + + ATOMIC_ENTER_CRITICAL(); + { + ulCurrent = *pulAddend; + *pulAddend -= ulCount; + } + ATOMIC_EXIT_CRITICAL(); + + return ulCurrent; +} +/*-----------------------------------------------------------*/ + +/** + * Atomic increment + * + * @brief Atomically increments the value of the specified pointer points to. + * + * @param[in,out] pulAddend Pointer to memory location from where value is to be + * loaded and written back to. + * + * @return *pulAddend value before increment. + */ +static portFORCE_INLINE uint32_t Atomic_Increment_u32( uint32_t volatile * pulAddend ) +{ +uint32_t ulCurrent; + + ATOMIC_ENTER_CRITICAL(); + { + ulCurrent = *pulAddend; + *pulAddend += 1; + } + ATOMIC_EXIT_CRITICAL(); + + return ulCurrent; +} +/*-----------------------------------------------------------*/ + +/** + * Atomic decrement + * + * @brief Atomically decrements the value of the specified pointer points to + * + * @param[in,out] pulAddend Pointer to memory location from where value is to be + * loaded and written back to. + * + * @return *pulAddend value before decrement. + */ +static portFORCE_INLINE uint32_t Atomic_Decrement_u32( uint32_t volatile * pulAddend ) +{ +uint32_t ulCurrent; + + ATOMIC_ENTER_CRITICAL(); + { + ulCurrent = *pulAddend; + *pulAddend -= 1; + } + ATOMIC_EXIT_CRITICAL(); + + return ulCurrent; +} + +/*----------------------------- Bitwise Logical ------------------------------*/ + +/** + * Atomic OR + * + * @brief Performs an atomic OR operation on the specified values. + * + * @param [in, out] pulDestination Pointer to memory location from where value is + * to be loaded and written back to. + * @param [in] ulValue Value to be ORed with *pulDestination. + * + * @return The original value of *pulDestination. + */ +static portFORCE_INLINE uint32_t Atomic_OR_u32( uint32_t volatile * pulDestination, + uint32_t ulValue ) +{ +uint32_t ulCurrent; + + ATOMIC_ENTER_CRITICAL(); + { + ulCurrent = *pulDestination; + *pulDestination |= ulValue; + } + ATOMIC_EXIT_CRITICAL(); + + return ulCurrent; +} +/*-----------------------------------------------------------*/ + +/** + * Atomic AND + * + * @brief Performs an atomic AND operation on the specified values. + * + * @param [in, out] pulDestination Pointer to memory location from where value is + * to be loaded and written back to. + * @param [in] ulValue Value to be ANDed with *pulDestination. + * + * @return The original value of *pulDestination. + */ +static portFORCE_INLINE uint32_t Atomic_AND_u32( uint32_t volatile * pulDestination, + uint32_t ulValue ) +{ +uint32_t ulCurrent; + + ATOMIC_ENTER_CRITICAL(); + { + ulCurrent = *pulDestination; + *pulDestination &= ulValue; + } + ATOMIC_EXIT_CRITICAL(); + + return ulCurrent; +} +/*-----------------------------------------------------------*/ + +/** + * Atomic NAND + * + * @brief Performs an atomic NAND operation on the specified values. + * + * @param [in, out] pulDestination Pointer to memory location from where value is + * to be loaded and written back to. + * @param [in] ulValue Value to be NANDed with *pulDestination. + * + * @return The original value of *pulDestination. + */ +static portFORCE_INLINE uint32_t Atomic_NAND_u32( uint32_t volatile * pulDestination, + uint32_t ulValue ) +{ +uint32_t ulCurrent; + + ATOMIC_ENTER_CRITICAL(); + { + ulCurrent = *pulDestination; + *pulDestination = ~( ulCurrent & ulValue ); + } + ATOMIC_EXIT_CRITICAL(); + + return ulCurrent; +} +/*-----------------------------------------------------------*/ + +/** + * Atomic XOR + * + * @brief Performs an atomic XOR operation on the specified values. + * + * @param [in, out] pulDestination Pointer to memory location from where value is + * to be loaded and written back to. + * @param [in] ulValue Value to be XORed with *pulDestination. + * + * @return The original value of *pulDestination. + */ +static portFORCE_INLINE uint32_t Atomic_XOR_u32( uint32_t volatile * pulDestination, + uint32_t ulValue ) +{ +uint32_t ulCurrent; + + ATOMIC_ENTER_CRITICAL(); + { + ulCurrent = *pulDestination; + *pulDestination ^= ulValue; + } + ATOMIC_EXIT_CRITICAL(); + + return ulCurrent; +} + +#ifdef __cplusplus +} +#endif + +#endif /* ATOMIC_H */ diff --git a/firmware/Middlewares/Third_Party/FreeRTOS/Source/include/croutine.h b/firmware/Middlewares/Third_Party/FreeRTOS/Source/include/croutine.h new file mode 100644 index 0000000..8d7069c --- /dev/null +++ b/firmware/Middlewares/Third_Party/FreeRTOS/Source/include/croutine.h @@ -0,0 +1,720 @@ +/* + * FreeRTOS Kernel V10.3.1 + * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * http://www.FreeRTOS.org + * http://aws.amazon.com/freertos + * + * 1 tab == 4 spaces! + */ + +#ifndef CO_ROUTINE_H +#define CO_ROUTINE_H + +#ifndef INC_FREERTOS_H + #error "include FreeRTOS.h must appear in source files before include croutine.h" +#endif + +#include "list.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Used to hide the implementation of the co-routine control block. The +control block structure however has to be included in the header due to +the macro implementation of the co-routine functionality. */ +typedef void * CoRoutineHandle_t; + +/* Defines the prototype to which co-routine functions must conform. */ +typedef void (*crCOROUTINE_CODE)( CoRoutineHandle_t, UBaseType_t ); + +typedef struct corCoRoutineControlBlock +{ + crCOROUTINE_CODE pxCoRoutineFunction; + ListItem_t xGenericListItem; /*< List item used to place the CRCB in ready and blocked queues. */ + ListItem_t xEventListItem; /*< List item used to place the CRCB in event lists. */ + UBaseType_t uxPriority; /*< The priority of the co-routine in relation to other co-routines. */ + UBaseType_t uxIndex; /*< Used to distinguish between co-routines when multiple co-routines use the same co-routine function. */ + uint16_t uxState; /*< Used internally by the co-routine implementation. */ +} CRCB_t; /* Co-routine control block. Note must be identical in size down to uxPriority with TCB_t. */ + +/** + * croutine. h + *

+ BaseType_t xCoRoutineCreate(
+                                 crCOROUTINE_CODE pxCoRoutineCode,
+                                 UBaseType_t uxPriority,
+                                 UBaseType_t uxIndex
+                               );
+ * + * Create a new co-routine and add it to the list of co-routines that are + * ready to run. + * + * @param pxCoRoutineCode Pointer to the co-routine function. Co-routine + * functions require special syntax - see the co-routine section of the WEB + * documentation for more information. + * + * @param uxPriority The priority with respect to other co-routines at which + * the co-routine will run. + * + * @param uxIndex Used to distinguish between different co-routines that + * execute the same function. See the example below and the co-routine section + * of the WEB documentation for further information. + * + * @return pdPASS if the co-routine was successfully created and added to a ready + * list, otherwise an error code defined with ProjDefs.h. + * + * Example usage: +
+ // Co-routine to be created.
+ void vFlashCoRoutine( CoRoutineHandle_t xHandle, UBaseType_t uxIndex )
+ {
+ // Variables in co-routines must be declared static if they must maintain value across a blocking call.
+ // This may not be necessary for const variables.
+ static const char cLedToFlash[ 2 ] = { 5, 6 };
+ static const TickType_t uxFlashRates[ 2 ] = { 200, 400 };
+
+     // Must start every co-routine with a call to crSTART();
+     crSTART( xHandle );
+
+     for( ;; )
+     {
+         // This co-routine just delays for a fixed period, then toggles
+         // an LED.  Two co-routines are created using this function, so
+         // the uxIndex parameter is used to tell the co-routine which
+         // LED to flash and how int32_t to delay.  This assumes xQueue has
+         // already been created.
+         vParTestToggleLED( cLedToFlash[ uxIndex ] );
+         crDELAY( xHandle, uxFlashRates[ uxIndex ] );
+     }
+
+     // Must end every co-routine with a call to crEND();
+     crEND();
+ }
+
+ // Function that creates two co-routines.
+ void vOtherFunction( void )
+ {
+ uint8_t ucParameterToPass;
+ TaskHandle_t xHandle;
+
+     // Create two co-routines at priority 0.  The first is given index 0
+     // so (from the code above) toggles LED 5 every 200 ticks.  The second
+     // is given index 1 so toggles LED 6 every 400 ticks.
+     for( uxIndex = 0; uxIndex < 2; uxIndex++ )
+     {
+         xCoRoutineCreate( vFlashCoRoutine, 0, uxIndex );
+     }
+ }
+   
+ * \defgroup xCoRoutineCreate xCoRoutineCreate + * \ingroup Tasks + */ +BaseType_t xCoRoutineCreate( crCOROUTINE_CODE pxCoRoutineCode, UBaseType_t uxPriority, UBaseType_t uxIndex ); + + +/** + * croutine. h + *
+ void vCoRoutineSchedule( void );
+ * + * Run a co-routine. + * + * vCoRoutineSchedule() executes the highest priority co-routine that is able + * to run. The co-routine will execute until it either blocks, yields or is + * preempted by a task. Co-routines execute cooperatively so one + * co-routine cannot be preempted by another, but can be preempted by a task. + * + * If an application comprises of both tasks and co-routines then + * vCoRoutineSchedule should be called from the idle task (in an idle task + * hook). + * + * Example usage: +
+ // This idle task hook will schedule a co-routine each time it is called.
+ // The rest of the idle task will execute between co-routine calls.
+ void vApplicationIdleHook( void )
+ {
+	vCoRoutineSchedule();
+ }
+
+ // Alternatively, if you do not require any other part of the idle task to
+ // execute, the idle task hook can call vCoRoutineSchedule() within an
+ // infinite loop.
+ void vApplicationIdleHook( void )
+ {
+    for( ;; )
+    {
+        vCoRoutineSchedule();
+    }
+ }
+ 
+ * \defgroup vCoRoutineSchedule vCoRoutineSchedule + * \ingroup Tasks + */ +void vCoRoutineSchedule( void ); + +/** + * croutine. h + *
+ crSTART( CoRoutineHandle_t xHandle );
+ * + * This macro MUST always be called at the start of a co-routine function. + * + * Example usage: +
+ // Co-routine to be created.
+ void vACoRoutine( CoRoutineHandle_t xHandle, UBaseType_t uxIndex )
+ {
+ // Variables in co-routines must be declared static if they must maintain value across a blocking call.
+ static int32_t ulAVariable;
+
+     // Must start every co-routine with a call to crSTART();
+     crSTART( xHandle );
+
+     for( ;; )
+     {
+          // Co-routine functionality goes here.
+     }
+
+     // Must end every co-routine with a call to crEND();
+     crEND();
+ }
+ * \defgroup crSTART crSTART + * \ingroup Tasks + */ +#define crSTART( pxCRCB ) switch( ( ( CRCB_t * )( pxCRCB ) )->uxState ) { case 0: + +/** + * croutine. h + *
+ crEND();
+ * + * This macro MUST always be called at the end of a co-routine function. + * + * Example usage: +
+ // Co-routine to be created.
+ void vACoRoutine( CoRoutineHandle_t xHandle, UBaseType_t uxIndex )
+ {
+ // Variables in co-routines must be declared static if they must maintain value across a blocking call.
+ static int32_t ulAVariable;
+
+     // Must start every co-routine with a call to crSTART();
+     crSTART( xHandle );
+
+     for( ;; )
+     {
+          // Co-routine functionality goes here.
+     }
+
+     // Must end every co-routine with a call to crEND();
+     crEND();
+ }
+ * \defgroup crSTART crSTART + * \ingroup Tasks + */ +#define crEND() } + +/* + * These macros are intended for internal use by the co-routine implementation + * only. The macros should not be used directly by application writers. + */ +#define crSET_STATE0( xHandle ) ( ( CRCB_t * )( xHandle ) )->uxState = (__LINE__ * 2); return; case (__LINE__ * 2): +#define crSET_STATE1( xHandle ) ( ( CRCB_t * )( xHandle ) )->uxState = ((__LINE__ * 2)+1); return; case ((__LINE__ * 2)+1): + +/** + * croutine. h + *
+ crDELAY( CoRoutineHandle_t xHandle, TickType_t xTicksToDelay );
+ * + * Delay a co-routine for a fixed period of time. + * + * crDELAY can only be called from the co-routine function itself - not + * from within a function called by the co-routine function. This is because + * co-routines do not maintain their own stack. + * + * @param xHandle The handle of the co-routine to delay. This is the xHandle + * parameter of the co-routine function. + * + * @param xTickToDelay The number of ticks that the co-routine should delay + * for. The actual amount of time this equates to is defined by + * configTICK_RATE_HZ (set in FreeRTOSConfig.h). The constant portTICK_PERIOD_MS + * can be used to convert ticks to milliseconds. + * + * Example usage: +
+ // Co-routine to be created.
+ void vACoRoutine( CoRoutineHandle_t xHandle, UBaseType_t uxIndex )
+ {
+ // Variables in co-routines must be declared static if they must maintain value across a blocking call.
+ // This may not be necessary for const variables.
+ // We are to delay for 200ms.
+ static const xTickType xDelayTime = 200 / portTICK_PERIOD_MS;
+
+     // Must start every co-routine with a call to crSTART();
+     crSTART( xHandle );
+
+     for( ;; )
+     {
+        // Delay for 200ms.
+        crDELAY( xHandle, xDelayTime );
+
+        // Do something here.
+     }
+
+     // Must end every co-routine with a call to crEND();
+     crEND();
+ }
+ * \defgroup crDELAY crDELAY + * \ingroup Tasks + */ +#define crDELAY( xHandle, xTicksToDelay ) \ + if( ( xTicksToDelay ) > 0 ) \ + { \ + vCoRoutineAddToDelayedList( ( xTicksToDelay ), NULL ); \ + } \ + crSET_STATE0( ( xHandle ) ); + +/** + *
+ crQUEUE_SEND(
+                  CoRoutineHandle_t xHandle,
+                  QueueHandle_t pxQueue,
+                  void *pvItemToQueue,
+                  TickType_t xTicksToWait,
+                  BaseType_t *pxResult
+             )
+ * + * The macro's crQUEUE_SEND() and crQUEUE_RECEIVE() are the co-routine + * equivalent to the xQueueSend() and xQueueReceive() functions used by tasks. + * + * crQUEUE_SEND and crQUEUE_RECEIVE can only be used from a co-routine whereas + * xQueueSend() and xQueueReceive() can only be used from tasks. + * + * crQUEUE_SEND can only be called from the co-routine function itself - not + * from within a function called by the co-routine function. This is because + * co-routines do not maintain their own stack. + * + * See the co-routine section of the WEB documentation for information on + * passing data between tasks and co-routines and between ISR's and + * co-routines. + * + * @param xHandle The handle of the calling co-routine. This is the xHandle + * parameter of the co-routine function. + * + * @param pxQueue The handle of the queue on which the data will be posted. + * The handle is obtained as the return value when the queue is created using + * the xQueueCreate() API function. + * + * @param pvItemToQueue A pointer to the data being posted onto the queue. + * The number of bytes of each queued item is specified when the queue is + * created. This number of bytes is copied from pvItemToQueue into the queue + * itself. + * + * @param xTickToDelay The number of ticks that the co-routine should block + * to wait for space to become available on the queue, should space not be + * available immediately. The actual amount of time this equates to is defined + * by configTICK_RATE_HZ (set in FreeRTOSConfig.h). The constant + * portTICK_PERIOD_MS can be used to convert ticks to milliseconds (see example + * below). + * + * @param pxResult The variable pointed to by pxResult will be set to pdPASS if + * data was successfully posted onto the queue, otherwise it will be set to an + * error defined within ProjDefs.h. + * + * Example usage: +
+ // Co-routine function that blocks for a fixed period then posts a number onto
+ // a queue.
+ static void prvCoRoutineFlashTask( CoRoutineHandle_t xHandle, UBaseType_t uxIndex )
+ {
+ // Variables in co-routines must be declared static if they must maintain value across a blocking call.
+ static BaseType_t xNumberToPost = 0;
+ static BaseType_t xResult;
+
+    // Co-routines must begin with a call to crSTART().
+    crSTART( xHandle );
+
+    for( ;; )
+    {
+        // This assumes the queue has already been created.
+        crQUEUE_SEND( xHandle, xCoRoutineQueue, &xNumberToPost, NO_DELAY, &xResult );
+
+        if( xResult != pdPASS )
+        {
+            // The message was not posted!
+        }
+
+        // Increment the number to be posted onto the queue.
+        xNumberToPost++;
+
+        // Delay for 100 ticks.
+        crDELAY( xHandle, 100 );
+    }
+
+    // Co-routines must end with a call to crEND().
+    crEND();
+ }
+ * \defgroup crQUEUE_SEND crQUEUE_SEND + * \ingroup Tasks + */ +#define crQUEUE_SEND( xHandle, pxQueue, pvItemToQueue, xTicksToWait, pxResult ) \ +{ \ + *( pxResult ) = xQueueCRSend( ( pxQueue) , ( pvItemToQueue) , ( xTicksToWait ) ); \ + if( *( pxResult ) == errQUEUE_BLOCKED ) \ + { \ + crSET_STATE0( ( xHandle ) ); \ + *pxResult = xQueueCRSend( ( pxQueue ), ( pvItemToQueue ), 0 ); \ + } \ + if( *pxResult == errQUEUE_YIELD ) \ + { \ + crSET_STATE1( ( xHandle ) ); \ + *pxResult = pdPASS; \ + } \ +} + +/** + * croutine. h + *
+  crQUEUE_RECEIVE(
+                     CoRoutineHandle_t xHandle,
+                     QueueHandle_t pxQueue,
+                     void *pvBuffer,
+                     TickType_t xTicksToWait,
+                     BaseType_t *pxResult
+                 )
+ * + * The macro's crQUEUE_SEND() and crQUEUE_RECEIVE() are the co-routine + * equivalent to the xQueueSend() and xQueueReceive() functions used by tasks. + * + * crQUEUE_SEND and crQUEUE_RECEIVE can only be used from a co-routine whereas + * xQueueSend() and xQueueReceive() can only be used from tasks. + * + * crQUEUE_RECEIVE can only be called from the co-routine function itself - not + * from within a function called by the co-routine function. This is because + * co-routines do not maintain their own stack. + * + * See the co-routine section of the WEB documentation for information on + * passing data between tasks and co-routines and between ISR's and + * co-routines. + * + * @param xHandle The handle of the calling co-routine. This is the xHandle + * parameter of the co-routine function. + * + * @param pxQueue The handle of the queue from which the data will be received. + * The handle is obtained as the return value when the queue is created using + * the xQueueCreate() API function. + * + * @param pvBuffer The buffer into which the received item is to be copied. + * The number of bytes of each queued item is specified when the queue is + * created. This number of bytes is copied into pvBuffer. + * + * @param xTickToDelay The number of ticks that the co-routine should block + * to wait for data to become available from the queue, should data not be + * available immediately. The actual amount of time this equates to is defined + * by configTICK_RATE_HZ (set in FreeRTOSConfig.h). The constant + * portTICK_PERIOD_MS can be used to convert ticks to milliseconds (see the + * crQUEUE_SEND example). + * + * @param pxResult The variable pointed to by pxResult will be set to pdPASS if + * data was successfully retrieved from the queue, otherwise it will be set to + * an error code as defined within ProjDefs.h. + * + * Example usage: +
+ // A co-routine receives the number of an LED to flash from a queue.  It
+ // blocks on the queue until the number is received.
+ static void prvCoRoutineFlashWorkTask( CoRoutineHandle_t xHandle, UBaseType_t uxIndex )
+ {
+ // Variables in co-routines must be declared static if they must maintain value across a blocking call.
+ static BaseType_t xResult;
+ static UBaseType_t uxLEDToFlash;
+
+    // All co-routines must start with a call to crSTART().
+    crSTART( xHandle );
+
+    for( ;; )
+    {
+        // Wait for data to become available on the queue.
+        crQUEUE_RECEIVE( xHandle, xCoRoutineQueue, &uxLEDToFlash, portMAX_DELAY, &xResult );
+
+        if( xResult == pdPASS )
+        {
+            // We received the LED to flash - flash it!
+            vParTestToggleLED( uxLEDToFlash );
+        }
+    }
+
+    crEND();
+ }
+ * \defgroup crQUEUE_RECEIVE crQUEUE_RECEIVE + * \ingroup Tasks + */ +#define crQUEUE_RECEIVE( xHandle, pxQueue, pvBuffer, xTicksToWait, pxResult ) \ +{ \ + *( pxResult ) = xQueueCRReceive( ( pxQueue) , ( pvBuffer ), ( xTicksToWait ) ); \ + if( *( pxResult ) == errQUEUE_BLOCKED ) \ + { \ + crSET_STATE0( ( xHandle ) ); \ + *( pxResult ) = xQueueCRReceive( ( pxQueue) , ( pvBuffer ), 0 ); \ + } \ + if( *( pxResult ) == errQUEUE_YIELD ) \ + { \ + crSET_STATE1( ( xHandle ) ); \ + *( pxResult ) = pdPASS; \ + } \ +} + +/** + * croutine. h + *
+  crQUEUE_SEND_FROM_ISR(
+                            QueueHandle_t pxQueue,
+                            void *pvItemToQueue,
+                            BaseType_t xCoRoutinePreviouslyWoken
+                       )
+ * + * The macro's crQUEUE_SEND_FROM_ISR() and crQUEUE_RECEIVE_FROM_ISR() are the + * co-routine equivalent to the xQueueSendFromISR() and xQueueReceiveFromISR() + * functions used by tasks. + * + * crQUEUE_SEND_FROM_ISR() and crQUEUE_RECEIVE_FROM_ISR() can only be used to + * pass data between a co-routine and and ISR, whereas xQueueSendFromISR() and + * xQueueReceiveFromISR() can only be used to pass data between a task and and + * ISR. + * + * crQUEUE_SEND_FROM_ISR can only be called from an ISR to send data to a queue + * that is being used from within a co-routine. + * + * See the co-routine section of the WEB documentation for information on + * passing data between tasks and co-routines and between ISR's and + * co-routines. + * + * @param xQueue The handle to the queue on which the item is to be posted. + * + * @param pvItemToQueue A pointer to the item that is to be placed on the + * queue. The size of the items the queue will hold was defined when the + * queue was created, so this many bytes will be copied from pvItemToQueue + * into the queue storage area. + * + * @param xCoRoutinePreviouslyWoken This is included so an ISR can post onto + * the same queue multiple times from a single interrupt. The first call + * should always pass in pdFALSE. Subsequent calls should pass in + * the value returned from the previous call. + * + * @return pdTRUE if a co-routine was woken by posting onto the queue. This is + * used by the ISR to determine if a context switch may be required following + * the ISR. + * + * Example usage: +
+ // A co-routine that blocks on a queue waiting for characters to be received.
+ static void vReceivingCoRoutine( CoRoutineHandle_t xHandle, UBaseType_t uxIndex )
+ {
+ char cRxedChar;
+ BaseType_t xResult;
+
+     // All co-routines must start with a call to crSTART().
+     crSTART( xHandle );
+
+     for( ;; )
+     {
+         // Wait for data to become available on the queue.  This assumes the
+         // queue xCommsRxQueue has already been created!
+         crQUEUE_RECEIVE( xHandle, xCommsRxQueue, &uxLEDToFlash, portMAX_DELAY, &xResult );
+
+         // Was a character received?
+         if( xResult == pdPASS )
+         {
+             // Process the character here.
+         }
+     }
+
+     // All co-routines must end with a call to crEND().
+     crEND();
+ }
+
+ // An ISR that uses a queue to send characters received on a serial port to
+ // a co-routine.
+ void vUART_ISR( void )
+ {
+ char cRxedChar;
+ BaseType_t xCRWokenByPost = pdFALSE;
+
+     // We loop around reading characters until there are none left in the UART.
+     while( UART_RX_REG_NOT_EMPTY() )
+     {
+         // Obtain the character from the UART.
+         cRxedChar = UART_RX_REG;
+
+         // Post the character onto a queue.  xCRWokenByPost will be pdFALSE
+         // the first time around the loop.  If the post causes a co-routine
+         // to be woken (unblocked) then xCRWokenByPost will be set to pdTRUE.
+         // In this manner we can ensure that if more than one co-routine is
+         // blocked on the queue only one is woken by this ISR no matter how
+         // many characters are posted to the queue.
+         xCRWokenByPost = crQUEUE_SEND_FROM_ISR( xCommsRxQueue, &cRxedChar, xCRWokenByPost );
+     }
+ }
+ * \defgroup crQUEUE_SEND_FROM_ISR crQUEUE_SEND_FROM_ISR + * \ingroup Tasks + */ +#define crQUEUE_SEND_FROM_ISR( pxQueue, pvItemToQueue, xCoRoutinePreviouslyWoken ) xQueueCRSendFromISR( ( pxQueue ), ( pvItemToQueue ), ( xCoRoutinePreviouslyWoken ) ) + + +/** + * croutine. h + *
+  crQUEUE_SEND_FROM_ISR(
+                            QueueHandle_t pxQueue,
+                            void *pvBuffer,
+                            BaseType_t * pxCoRoutineWoken
+                       )
+ * + * The macro's crQUEUE_SEND_FROM_ISR() and crQUEUE_RECEIVE_FROM_ISR() are the + * co-routine equivalent to the xQueueSendFromISR() and xQueueReceiveFromISR() + * functions used by tasks. + * + * crQUEUE_SEND_FROM_ISR() and crQUEUE_RECEIVE_FROM_ISR() can only be used to + * pass data between a co-routine and and ISR, whereas xQueueSendFromISR() and + * xQueueReceiveFromISR() can only be used to pass data between a task and and + * ISR. + * + * crQUEUE_RECEIVE_FROM_ISR can only be called from an ISR to receive data + * from a queue that is being used from within a co-routine (a co-routine + * posted to the queue). + * + * See the co-routine section of the WEB documentation for information on + * passing data between tasks and co-routines and between ISR's and + * co-routines. + * + * @param xQueue The handle to the queue on which the item is to be posted. + * + * @param pvBuffer A pointer to a buffer into which the received item will be + * placed. The size of the items the queue will hold was defined when the + * queue was created, so this many bytes will be copied from the queue into + * pvBuffer. + * + * @param pxCoRoutineWoken A co-routine may be blocked waiting for space to become + * available on the queue. If crQUEUE_RECEIVE_FROM_ISR causes such a + * co-routine to unblock *pxCoRoutineWoken will get set to pdTRUE, otherwise + * *pxCoRoutineWoken will remain unchanged. + * + * @return pdTRUE an item was successfully received from the queue, otherwise + * pdFALSE. + * + * Example usage: +
+ // A co-routine that posts a character to a queue then blocks for a fixed
+ // period.  The character is incremented each time.
+ static void vSendingCoRoutine( CoRoutineHandle_t xHandle, UBaseType_t uxIndex )
+ {
+ // cChar holds its value while this co-routine is blocked and must therefore
+ // be declared static.
+ static char cCharToTx = 'a';
+ BaseType_t xResult;
+
+     // All co-routines must start with a call to crSTART().
+     crSTART( xHandle );
+
+     for( ;; )
+     {
+         // Send the next character to the queue.
+         crQUEUE_SEND( xHandle, xCoRoutineQueue, &cCharToTx, NO_DELAY, &xResult );
+
+         if( xResult == pdPASS )
+         {
+             // The character was successfully posted to the queue.
+         }
+		 else
+		 {
+			// Could not post the character to the queue.
+		 }
+
+         // Enable the UART Tx interrupt to cause an interrupt in this
+		 // hypothetical UART.  The interrupt will obtain the character
+		 // from the queue and send it.
+		 ENABLE_RX_INTERRUPT();
+
+		 // Increment to the next character then block for a fixed period.
+		 // cCharToTx will maintain its value across the delay as it is
+		 // declared static.
+		 cCharToTx++;
+		 if( cCharToTx > 'x' )
+		 {
+			cCharToTx = 'a';
+		 }
+		 crDELAY( 100 );
+     }
+
+     // All co-routines must end with a call to crEND().
+     crEND();
+ }
+
+ // An ISR that uses a queue to receive characters to send on a UART.
+ void vUART_ISR( void )
+ {
+ char cCharToTx;
+ BaseType_t xCRWokenByPost = pdFALSE;
+
+     while( UART_TX_REG_EMPTY() )
+     {
+         // Are there any characters in the queue waiting to be sent?
+		 // xCRWokenByPost will automatically be set to pdTRUE if a co-routine
+		 // is woken by the post - ensuring that only a single co-routine is
+		 // woken no matter how many times we go around this loop.
+         if( crQUEUE_RECEIVE_FROM_ISR( pxQueue, &cCharToTx, &xCRWokenByPost ) )
+		 {
+			 SEND_CHARACTER( cCharToTx );
+		 }
+     }
+ }
+ * \defgroup crQUEUE_RECEIVE_FROM_ISR crQUEUE_RECEIVE_FROM_ISR + * \ingroup Tasks + */ +#define crQUEUE_RECEIVE_FROM_ISR( pxQueue, pvBuffer, pxCoRoutineWoken ) xQueueCRReceiveFromISR( ( pxQueue ), ( pvBuffer ), ( pxCoRoutineWoken ) ) + +/* + * This function is intended for internal use by the co-routine macros only. + * The macro nature of the co-routine implementation requires that the + * prototype appears here. The function should not be used by application + * writers. + * + * Removes the current co-routine from its ready list and places it in the + * appropriate delayed list. + */ +void vCoRoutineAddToDelayedList( TickType_t xTicksToDelay, List_t *pxEventList ); + +/* + * This function is intended for internal use by the queue implementation only. + * The function should not be used by application writers. + * + * Removes the highest priority co-routine from the event list and places it in + * the pending ready list. + */ +BaseType_t xCoRoutineRemoveFromEventList( const List_t *pxEventList ); + +#ifdef __cplusplus +} +#endif + +#endif /* CO_ROUTINE_H */ diff --git a/firmware/Middlewares/Third_Party/FreeRTOS/Source/include/deprecated_definitions.h b/firmware/Middlewares/Third_Party/FreeRTOS/Source/include/deprecated_definitions.h new file mode 100644 index 0000000..21657b9 --- /dev/null +++ b/firmware/Middlewares/Third_Party/FreeRTOS/Source/include/deprecated_definitions.h @@ -0,0 +1,279 @@ +/* + * FreeRTOS Kernel V10.3.1 + * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * http://www.FreeRTOS.org + * http://aws.amazon.com/freertos + * + * 1 tab == 4 spaces! + */ + +#ifndef DEPRECATED_DEFINITIONS_H +#define DEPRECATED_DEFINITIONS_H + + +/* Each FreeRTOS port has a unique portmacro.h header file. Originally a +pre-processor definition was used to ensure the pre-processor found the correct +portmacro.h file for the port being used. That scheme was deprecated in favour +of setting the compiler's include path such that it found the correct +portmacro.h file - removing the need for the constant and allowing the +portmacro.h file to be located anywhere in relation to the port being used. The +definitions below remain in the code for backward compatibility only. New +projects should not use them. */ + +#ifdef OPEN_WATCOM_INDUSTRIAL_PC_PORT + #include "..\..\Source\portable\owatcom\16bitdos\pc\portmacro.h" + typedef void ( __interrupt __far *pxISR )(); +#endif + +#ifdef OPEN_WATCOM_FLASH_LITE_186_PORT + #include "..\..\Source\portable\owatcom\16bitdos\flsh186\portmacro.h" + typedef void ( __interrupt __far *pxISR )(); +#endif + +#ifdef GCC_MEGA_AVR + #include "../portable/GCC/ATMega323/portmacro.h" +#endif + +#ifdef IAR_MEGA_AVR + #include "../portable/IAR/ATMega323/portmacro.h" +#endif + +#ifdef MPLAB_PIC24_PORT + #include "../../Source/portable/MPLAB/PIC24_dsPIC/portmacro.h" +#endif + +#ifdef MPLAB_DSPIC_PORT + #include "../../Source/portable/MPLAB/PIC24_dsPIC/portmacro.h" +#endif + +#ifdef MPLAB_PIC18F_PORT + #include "../../Source/portable/MPLAB/PIC18F/portmacro.h" +#endif + +#ifdef MPLAB_PIC32MX_PORT + #include "../../Source/portable/MPLAB/PIC32MX/portmacro.h" +#endif + +#ifdef _FEDPICC + #include "libFreeRTOS/Include/portmacro.h" +#endif + +#ifdef SDCC_CYGNAL + #include "../../Source/portable/SDCC/Cygnal/portmacro.h" +#endif + +#ifdef GCC_ARM7 + #include "../../Source/portable/GCC/ARM7_LPC2000/portmacro.h" +#endif + +#ifdef GCC_ARM7_ECLIPSE + #include "portmacro.h" +#endif + +#ifdef ROWLEY_LPC23xx + #include "../../Source/portable/GCC/ARM7_LPC23xx/portmacro.h" +#endif + +#ifdef IAR_MSP430 + #include "..\..\Source\portable\IAR\MSP430\portmacro.h" +#endif + +#ifdef GCC_MSP430 + #include "../../Source/portable/GCC/MSP430F449/portmacro.h" +#endif + +#ifdef ROWLEY_MSP430 + #include "../../Source/portable/Rowley/MSP430F449/portmacro.h" +#endif + +#ifdef ARM7_LPC21xx_KEIL_RVDS + #include "..\..\Source\portable\RVDS\ARM7_LPC21xx\portmacro.h" +#endif + +#ifdef SAM7_GCC + #include "../../Source/portable/GCC/ARM7_AT91SAM7S/portmacro.h" +#endif + +#ifdef SAM7_IAR + #include "..\..\Source\portable\IAR\AtmelSAM7S64\portmacro.h" +#endif + +#ifdef SAM9XE_IAR + #include "..\..\Source\portable\IAR\AtmelSAM9XE\portmacro.h" +#endif + +#ifdef LPC2000_IAR + #include "..\..\Source\portable\IAR\LPC2000\portmacro.h" +#endif + +#ifdef STR71X_IAR + #include "..\..\Source\portable\IAR\STR71x\portmacro.h" +#endif + +#ifdef STR75X_IAR + #include "..\..\Source\portable\IAR\STR75x\portmacro.h" +#endif + +#ifdef STR75X_GCC + #include "..\..\Source\portable\GCC\STR75x\portmacro.h" +#endif + +#ifdef STR91X_IAR + #include "..\..\Source\portable\IAR\STR91x\portmacro.h" +#endif + +#ifdef GCC_H8S + #include "../../Source/portable/GCC/H8S2329/portmacro.h" +#endif + +#ifdef GCC_AT91FR40008 + #include "../../Source/portable/GCC/ARM7_AT91FR40008/portmacro.h" +#endif + +#ifdef RVDS_ARMCM3_LM3S102 + #include "../../Source/portable/RVDS/ARM_CM3/portmacro.h" +#endif + +#ifdef GCC_ARMCM3_LM3S102 + #include "../../Source/portable/GCC/ARM_CM3/portmacro.h" +#endif + +#ifdef GCC_ARMCM3 + #include "../../Source/portable/GCC/ARM_CM3/portmacro.h" +#endif + +#ifdef IAR_ARM_CM3 + #include "../../Source/portable/IAR/ARM_CM3/portmacro.h" +#endif + +#ifdef IAR_ARMCM3_LM + #include "../../Source/portable/IAR/ARM_CM3/portmacro.h" +#endif + +#ifdef HCS12_CODE_WARRIOR + #include "../../Source/portable/CodeWarrior/HCS12/portmacro.h" +#endif + +#ifdef MICROBLAZE_GCC + #include "../../Source/portable/GCC/MicroBlaze/portmacro.h" +#endif + +#ifdef TERN_EE + #include "..\..\Source\portable\Paradigm\Tern_EE\small\portmacro.h" +#endif + +#ifdef GCC_HCS12 + #include "../../Source/portable/GCC/HCS12/portmacro.h" +#endif + +#ifdef GCC_MCF5235 + #include "../../Source/portable/GCC/MCF5235/portmacro.h" +#endif + +#ifdef COLDFIRE_V2_GCC + #include "../../../Source/portable/GCC/ColdFire_V2/portmacro.h" +#endif + +#ifdef COLDFIRE_V2_CODEWARRIOR + #include "../../Source/portable/CodeWarrior/ColdFire_V2/portmacro.h" +#endif + +#ifdef GCC_PPC405 + #include "../../Source/portable/GCC/PPC405_Xilinx/portmacro.h" +#endif + +#ifdef GCC_PPC440 + #include "../../Source/portable/GCC/PPC440_Xilinx/portmacro.h" +#endif + +#ifdef _16FX_SOFTUNE + #include "..\..\Source\portable\Softune\MB96340\portmacro.h" +#endif + +#ifdef BCC_INDUSTRIAL_PC_PORT + /* A short file name has to be used in place of the normal + FreeRTOSConfig.h when using the Borland compiler. */ + #include "frconfig.h" + #include "..\portable\BCC\16BitDOS\PC\prtmacro.h" + typedef void ( __interrupt __far *pxISR )(); +#endif + +#ifdef BCC_FLASH_LITE_186_PORT + /* A short file name has to be used in place of the normal + FreeRTOSConfig.h when using the Borland compiler. */ + #include "frconfig.h" + #include "..\portable\BCC\16BitDOS\flsh186\prtmacro.h" + typedef void ( __interrupt __far *pxISR )(); +#endif + +#ifdef __GNUC__ + #ifdef __AVR32_AVR32A__ + #include "portmacro.h" + #endif +#endif + +#ifdef __ICCAVR32__ + #ifdef __CORE__ + #if __CORE__ == __AVR32A__ + #include "portmacro.h" + #endif + #endif +#endif + +#ifdef __91467D + #include "portmacro.h" +#endif + +#ifdef __96340 + #include "portmacro.h" +#endif + + +#ifdef __IAR_V850ES_Fx3__ + #include "../../Source/portable/IAR/V850ES/portmacro.h" +#endif + +#ifdef __IAR_V850ES_Jx3__ + #include "../../Source/portable/IAR/V850ES/portmacro.h" +#endif + +#ifdef __IAR_V850ES_Jx3_L__ + #include "../../Source/portable/IAR/V850ES/portmacro.h" +#endif + +#ifdef __IAR_V850ES_Jx2__ + #include "../../Source/portable/IAR/V850ES/portmacro.h" +#endif + +#ifdef __IAR_V850ES_Hx2__ + #include "../../Source/portable/IAR/V850ES/portmacro.h" +#endif + +#ifdef __IAR_78K0R_Kx3__ + #include "../../Source/portable/IAR/78K0R/portmacro.h" +#endif + +#ifdef __IAR_78K0R_Kx3L__ + #include "../../Source/portable/IAR/78K0R/portmacro.h" +#endif + +#endif /* DEPRECATED_DEFINITIONS_H */ + diff --git a/firmware/Middlewares/Third_Party/FreeRTOS/Source/include/event_groups.h b/firmware/Middlewares/Third_Party/FreeRTOS/Source/include/event_groups.h new file mode 100644 index 0000000..a87fdf3 --- /dev/null +++ b/firmware/Middlewares/Third_Party/FreeRTOS/Source/include/event_groups.h @@ -0,0 +1,757 @@ +/* + * FreeRTOS Kernel V10.3.1 + * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * http://www.FreeRTOS.org + * http://aws.amazon.com/freertos + * + * 1 tab == 4 spaces! + */ + +#ifndef EVENT_GROUPS_H +#define EVENT_GROUPS_H + +#ifndef INC_FREERTOS_H + #error "include FreeRTOS.h" must appear in source files before "include event_groups.h" +#endif + +/* FreeRTOS includes. */ +#include "timers.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * An event group is a collection of bits to which an application can assign a + * meaning. For example, an application may create an event group to convey + * the status of various CAN bus related events in which bit 0 might mean "A CAN + * message has been received and is ready for processing", bit 1 might mean "The + * application has queued a message that is ready for sending onto the CAN + * network", and bit 2 might mean "It is time to send a SYNC message onto the + * CAN network" etc. A task can then test the bit values to see which events + * are active, and optionally enter the Blocked state to wait for a specified + * bit or a group of specified bits to be active. To continue the CAN bus + * example, a CAN controlling task can enter the Blocked state (and therefore + * not consume any processing time) until either bit 0, bit 1 or bit 2 are + * active, at which time the bit that was actually active would inform the task + * which action it had to take (process a received message, send a message, or + * send a SYNC). + * + * The event groups implementation contains intelligence to avoid race + * conditions that would otherwise occur were an application to use a simple + * variable for the same purpose. This is particularly important with respect + * to when a bit within an event group is to be cleared, and when bits have to + * be set and then tested atomically - as is the case where event groups are + * used to create a synchronisation point between multiple tasks (a + * 'rendezvous'). + * + * \defgroup EventGroup + */ + + + +/** + * event_groups.h + * + * Type by which event groups are referenced. For example, a call to + * xEventGroupCreate() returns an EventGroupHandle_t variable that can then + * be used as a parameter to other event group functions. + * + * \defgroup EventGroupHandle_t EventGroupHandle_t + * \ingroup EventGroup + */ +struct EventGroupDef_t; +typedef struct EventGroupDef_t * EventGroupHandle_t; + +/* + * The type that holds event bits always matches TickType_t - therefore the + * number of bits it holds is set by configUSE_16_BIT_TICKS (16 bits if set to 1, + * 32 bits if set to 0. + * + * \defgroup EventBits_t EventBits_t + * \ingroup EventGroup + */ +typedef TickType_t EventBits_t; + +/** + * event_groups.h + *
+ EventGroupHandle_t xEventGroupCreate( void );
+ 
+ * + * Create a new event group. + * + * Internally, within the FreeRTOS implementation, event groups use a [small] + * block of memory, in which the event group's structure is stored. If an event + * groups is created using xEventGropuCreate() then the required memory is + * automatically dynamically allocated inside the xEventGroupCreate() function. + * (see http://www.freertos.org/a00111.html). If an event group is created + * using xEventGropuCreateStatic() then the application writer must instead + * provide the memory that will get used by the event group. + * xEventGroupCreateStatic() therefore allows an event group to be created + * without using any dynamic memory allocation. + * + * Although event groups are not related to ticks, for internal implementation + * reasons the number of bits available for use in an event group is dependent + * on the configUSE_16_BIT_TICKS setting in FreeRTOSConfig.h. If + * configUSE_16_BIT_TICKS is 1 then each event group contains 8 usable bits (bit + * 0 to bit 7). If configUSE_16_BIT_TICKS is set to 0 then each event group has + * 24 usable bits (bit 0 to bit 23). The EventBits_t type is used to store + * event bits within an event group. + * + * @return If the event group was created then a handle to the event group is + * returned. If there was insufficient FreeRTOS heap available to create the + * event group then NULL is returned. See http://www.freertos.org/a00111.html + * + * Example usage: +
+	// Declare a variable to hold the created event group.
+	EventGroupHandle_t xCreatedEventGroup;
+
+	// Attempt to create the event group.
+	xCreatedEventGroup = xEventGroupCreate();
+
+	// Was the event group created successfully?
+	if( xCreatedEventGroup == NULL )
+	{
+		// The event group was not created because there was insufficient
+		// FreeRTOS heap available.
+	}
+	else
+	{
+		// The event group was created.
+	}
+   
+ * \defgroup xEventGroupCreate xEventGroupCreate + * \ingroup EventGroup + */ +#if( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) + EventGroupHandle_t xEventGroupCreate( void ) PRIVILEGED_FUNCTION; +#endif + +/** + * event_groups.h + *
+ EventGroupHandle_t xEventGroupCreateStatic( EventGroupHandle_t * pxEventGroupBuffer );
+ 
+ * + * Create a new event group. + * + * Internally, within the FreeRTOS implementation, event groups use a [small] + * block of memory, in which the event group's structure is stored. If an event + * groups is created using xEventGropuCreate() then the required memory is + * automatically dynamically allocated inside the xEventGroupCreate() function. + * (see http://www.freertos.org/a00111.html). If an event group is created + * using xEventGropuCreateStatic() then the application writer must instead + * provide the memory that will get used by the event group. + * xEventGroupCreateStatic() therefore allows an event group to be created + * without using any dynamic memory allocation. + * + * Although event groups are not related to ticks, for internal implementation + * reasons the number of bits available for use in an event group is dependent + * on the configUSE_16_BIT_TICKS setting in FreeRTOSConfig.h. If + * configUSE_16_BIT_TICKS is 1 then each event group contains 8 usable bits (bit + * 0 to bit 7). If configUSE_16_BIT_TICKS is set to 0 then each event group has + * 24 usable bits (bit 0 to bit 23). The EventBits_t type is used to store + * event bits within an event group. + * + * @param pxEventGroupBuffer pxEventGroupBuffer must point to a variable of type + * StaticEventGroup_t, which will be then be used to hold the event group's data + * structures, removing the need for the memory to be allocated dynamically. + * + * @return If the event group was created then a handle to the event group is + * returned. If pxEventGroupBuffer was NULL then NULL is returned. + * + * Example usage: +
+	// StaticEventGroup_t is a publicly accessible structure that has the same
+	// size and alignment requirements as the real event group structure.  It is
+	// provided as a mechanism for applications to know the size of the event
+	// group (which is dependent on the architecture and configuration file
+	// settings) without breaking the strict data hiding policy by exposing the
+	// real event group internals.  This StaticEventGroup_t variable is passed
+	// into the xSemaphoreCreateEventGroupStatic() function and is used to store
+	// the event group's data structures
+	StaticEventGroup_t xEventGroupBuffer;
+
+	// Create the event group without dynamically allocating any memory.
+	xEventGroup = xEventGroupCreateStatic( &xEventGroupBuffer );
+   
+ */ +#if( configSUPPORT_STATIC_ALLOCATION == 1 ) + EventGroupHandle_t xEventGroupCreateStatic( StaticEventGroup_t *pxEventGroupBuffer ) PRIVILEGED_FUNCTION; +#endif + +/** + * event_groups.h + *
+	EventBits_t xEventGroupWaitBits( 	EventGroupHandle_t xEventGroup,
+										const EventBits_t uxBitsToWaitFor,
+										const BaseType_t xClearOnExit,
+										const BaseType_t xWaitForAllBits,
+										const TickType_t xTicksToWait );
+ 
+ * + * [Potentially] block to wait for one or more bits to be set within a + * previously created event group. + * + * This function cannot be called from an interrupt. + * + * @param xEventGroup The event group in which the bits are being tested. The + * event group must have previously been created using a call to + * xEventGroupCreate(). + * + * @param uxBitsToWaitFor A bitwise value that indicates the bit or bits to test + * inside the event group. For example, to wait for bit 0 and/or bit 2 set + * uxBitsToWaitFor to 0x05. To wait for bits 0 and/or bit 1 and/or bit 2 set + * uxBitsToWaitFor to 0x07. Etc. + * + * @param xClearOnExit If xClearOnExit is set to pdTRUE then any bits within + * uxBitsToWaitFor that are set within the event group will be cleared before + * xEventGroupWaitBits() returns if the wait condition was met (if the function + * returns for a reason other than a timeout). If xClearOnExit is set to + * pdFALSE then the bits set in the event group are not altered when the call to + * xEventGroupWaitBits() returns. + * + * @param xWaitForAllBits If xWaitForAllBits is set to pdTRUE then + * xEventGroupWaitBits() will return when either all the bits in uxBitsToWaitFor + * are set or the specified block time expires. If xWaitForAllBits is set to + * pdFALSE then xEventGroupWaitBits() will return when any one of the bits set + * in uxBitsToWaitFor is set or the specified block time expires. The block + * time is specified by the xTicksToWait parameter. + * + * @param xTicksToWait The maximum amount of time (specified in 'ticks') to wait + * for one/all (depending on the xWaitForAllBits value) of the bits specified by + * uxBitsToWaitFor to become set. + * + * @return The value of the event group at the time either the bits being waited + * for became set, or the block time expired. Test the return value to know + * which bits were set. If xEventGroupWaitBits() returned because its timeout + * expired then not all the bits being waited for will be set. If + * xEventGroupWaitBits() returned because the bits it was waiting for were set + * then the returned value is the event group value before any bits were + * automatically cleared in the case that xClearOnExit parameter was set to + * pdTRUE. + * + * Example usage: +
+   #define BIT_0	( 1 << 0 )
+   #define BIT_4	( 1 << 4 )
+
+   void aFunction( EventGroupHandle_t xEventGroup )
+   {
+   EventBits_t uxBits;
+   const TickType_t xTicksToWait = 100 / portTICK_PERIOD_MS;
+
+		// Wait a maximum of 100ms for either bit 0 or bit 4 to be set within
+		// the event group.  Clear the bits before exiting.
+		uxBits = xEventGroupWaitBits(
+					xEventGroup,	// The event group being tested.
+					BIT_0 | BIT_4,	// The bits within the event group to wait for.
+					pdTRUE,			// BIT_0 and BIT_4 should be cleared before returning.
+					pdFALSE,		// Don't wait for both bits, either bit will do.
+					xTicksToWait );	// Wait a maximum of 100ms for either bit to be set.
+
+		if( ( uxBits & ( BIT_0 | BIT_4 ) ) == ( BIT_0 | BIT_4 ) )
+		{
+			// xEventGroupWaitBits() returned because both bits were set.
+		}
+		else if( ( uxBits & BIT_0 ) != 0 )
+		{
+			// xEventGroupWaitBits() returned because just BIT_0 was set.
+		}
+		else if( ( uxBits & BIT_4 ) != 0 )
+		{
+			// xEventGroupWaitBits() returned because just BIT_4 was set.
+		}
+		else
+		{
+			// xEventGroupWaitBits() returned because xTicksToWait ticks passed
+			// without either BIT_0 or BIT_4 becoming set.
+		}
+   }
+   
+ * \defgroup xEventGroupWaitBits xEventGroupWaitBits + * \ingroup EventGroup + */ +EventBits_t xEventGroupWaitBits( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToWaitFor, const BaseType_t xClearOnExit, const BaseType_t xWaitForAllBits, TickType_t xTicksToWait ) PRIVILEGED_FUNCTION; + +/** + * event_groups.h + *
+	EventBits_t xEventGroupClearBits( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToClear );
+ 
+ * + * Clear bits within an event group. This function cannot be called from an + * interrupt. + * + * @param xEventGroup The event group in which the bits are to be cleared. + * + * @param uxBitsToClear A bitwise value that indicates the bit or bits to clear + * in the event group. For example, to clear bit 3 only, set uxBitsToClear to + * 0x08. To clear bit 3 and bit 0 set uxBitsToClear to 0x09. + * + * @return The value of the event group before the specified bits were cleared. + * + * Example usage: +
+   #define BIT_0	( 1 << 0 )
+   #define BIT_4	( 1 << 4 )
+
+   void aFunction( EventGroupHandle_t xEventGroup )
+   {
+   EventBits_t uxBits;
+
+		// Clear bit 0 and bit 4 in xEventGroup.
+		uxBits = xEventGroupClearBits(
+								xEventGroup,	// The event group being updated.
+								BIT_0 | BIT_4 );// The bits being cleared.
+
+		if( ( uxBits & ( BIT_0 | BIT_4 ) ) == ( BIT_0 | BIT_4 ) )
+		{
+			// Both bit 0 and bit 4 were set before xEventGroupClearBits() was
+			// called.  Both will now be clear (not set).
+		}
+		else if( ( uxBits & BIT_0 ) != 0 )
+		{
+			// Bit 0 was set before xEventGroupClearBits() was called.  It will
+			// now be clear.
+		}
+		else if( ( uxBits & BIT_4 ) != 0 )
+		{
+			// Bit 4 was set before xEventGroupClearBits() was called.  It will
+			// now be clear.
+		}
+		else
+		{
+			// Neither bit 0 nor bit 4 were set in the first place.
+		}
+   }
+   
+ * \defgroup xEventGroupClearBits xEventGroupClearBits + * \ingroup EventGroup + */ +EventBits_t xEventGroupClearBits( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToClear ) PRIVILEGED_FUNCTION; + +/** + * event_groups.h + *
+	BaseType_t xEventGroupClearBitsFromISR( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToSet );
+ 
+ * + * A version of xEventGroupClearBits() that can be called from an interrupt. + * + * Setting bits in an event group is not a deterministic operation because there + * are an unknown number of tasks that may be waiting for the bit or bits being + * set. FreeRTOS does not allow nondeterministic operations to be performed + * while interrupts are disabled, so protects event groups that are accessed + * from tasks by suspending the scheduler rather than disabling interrupts. As + * a result event groups cannot be accessed directly from an interrupt service + * routine. Therefore xEventGroupClearBitsFromISR() sends a message to the + * timer task to have the clear operation performed in the context of the timer + * task. + * + * @param xEventGroup The event group in which the bits are to be cleared. + * + * @param uxBitsToClear A bitwise value that indicates the bit or bits to clear. + * For example, to clear bit 3 only, set uxBitsToClear to 0x08. To clear bit 3 + * and bit 0 set uxBitsToClear to 0x09. + * + * @return If the request to execute the function was posted successfully then + * pdPASS is returned, otherwise pdFALSE is returned. pdFALSE will be returned + * if the timer service queue was full. + * + * Example usage: +
+   #define BIT_0	( 1 << 0 )
+   #define BIT_4	( 1 << 4 )
+
+   // An event group which it is assumed has already been created by a call to
+   // xEventGroupCreate().
+   EventGroupHandle_t xEventGroup;
+
+   void anInterruptHandler( void )
+   {
+		// Clear bit 0 and bit 4 in xEventGroup.
+		xResult = xEventGroupClearBitsFromISR(
+							xEventGroup,	 // The event group being updated.
+							BIT_0 | BIT_4 ); // The bits being set.
+
+		if( xResult == pdPASS )
+		{
+			// The message was posted successfully.
+		}
+  }
+   
+ * \defgroup xEventGroupClearBitsFromISR xEventGroupClearBitsFromISR + * \ingroup EventGroup + */ +#if( configUSE_TRACE_FACILITY == 1 ) + BaseType_t xEventGroupClearBitsFromISR( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToClear ) PRIVILEGED_FUNCTION; +#else + #define xEventGroupClearBitsFromISR( xEventGroup, uxBitsToClear ) xTimerPendFunctionCallFromISR( vEventGroupClearBitsCallback, ( void * ) xEventGroup, ( uint32_t ) uxBitsToClear, NULL ) +#endif + +/** + * event_groups.h + *
+	EventBits_t xEventGroupSetBits( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToSet );
+ 
+ * + * Set bits within an event group. + * This function cannot be called from an interrupt. xEventGroupSetBitsFromISR() + * is a version that can be called from an interrupt. + * + * Setting bits in an event group will automatically unblock tasks that are + * blocked waiting for the bits. + * + * @param xEventGroup The event group in which the bits are to be set. + * + * @param uxBitsToSet A bitwise value that indicates the bit or bits to set. + * For example, to set bit 3 only, set uxBitsToSet to 0x08. To set bit 3 + * and bit 0 set uxBitsToSet to 0x09. + * + * @return The value of the event group at the time the call to + * xEventGroupSetBits() returns. There are two reasons why the returned value + * might have the bits specified by the uxBitsToSet parameter cleared. First, + * if setting a bit results in a task that was waiting for the bit leaving the + * blocked state then it is possible the bit will be cleared automatically + * (see the xClearBitOnExit parameter of xEventGroupWaitBits()). Second, any + * unblocked (or otherwise Ready state) task that has a priority above that of + * the task that called xEventGroupSetBits() will execute and may change the + * event group value before the call to xEventGroupSetBits() returns. + * + * Example usage: +
+   #define BIT_0	( 1 << 0 )
+   #define BIT_4	( 1 << 4 )
+
+   void aFunction( EventGroupHandle_t xEventGroup )
+   {
+   EventBits_t uxBits;
+
+		// Set bit 0 and bit 4 in xEventGroup.
+		uxBits = xEventGroupSetBits(
+							xEventGroup,	// The event group being updated.
+							BIT_0 | BIT_4 );// The bits being set.
+
+		if( ( uxBits & ( BIT_0 | BIT_4 ) ) == ( BIT_0 | BIT_4 ) )
+		{
+			// Both bit 0 and bit 4 remained set when the function returned.
+		}
+		else if( ( uxBits & BIT_0 ) != 0 )
+		{
+			// Bit 0 remained set when the function returned, but bit 4 was
+			// cleared.  It might be that bit 4 was cleared automatically as a
+			// task that was waiting for bit 4 was removed from the Blocked
+			// state.
+		}
+		else if( ( uxBits & BIT_4 ) != 0 )
+		{
+			// Bit 4 remained set when the function returned, but bit 0 was
+			// cleared.  It might be that bit 0 was cleared automatically as a
+			// task that was waiting for bit 0 was removed from the Blocked
+			// state.
+		}
+		else
+		{
+			// Neither bit 0 nor bit 4 remained set.  It might be that a task
+			// was waiting for both of the bits to be set, and the bits were
+			// cleared as the task left the Blocked state.
+		}
+   }
+   
+ * \defgroup xEventGroupSetBits xEventGroupSetBits + * \ingroup EventGroup + */ +EventBits_t xEventGroupSetBits( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToSet ) PRIVILEGED_FUNCTION; + +/** + * event_groups.h + *
+	BaseType_t xEventGroupSetBitsFromISR( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToSet, BaseType_t *pxHigherPriorityTaskWoken );
+ 
+ * + * A version of xEventGroupSetBits() that can be called from an interrupt. + * + * Setting bits in an event group is not a deterministic operation because there + * are an unknown number of tasks that may be waiting for the bit or bits being + * set. FreeRTOS does not allow nondeterministic operations to be performed in + * interrupts or from critical sections. Therefore xEventGroupSetBitsFromISR() + * sends a message to the timer task to have the set operation performed in the + * context of the timer task - where a scheduler lock is used in place of a + * critical section. + * + * @param xEventGroup The event group in which the bits are to be set. + * + * @param uxBitsToSet A bitwise value that indicates the bit or bits to set. + * For example, to set bit 3 only, set uxBitsToSet to 0x08. To set bit 3 + * and bit 0 set uxBitsToSet to 0x09. + * + * @param pxHigherPriorityTaskWoken As mentioned above, calling this function + * will result in a message being sent to the timer daemon task. If the + * priority of the timer daemon task is higher than the priority of the + * currently running task (the task the interrupt interrupted) then + * *pxHigherPriorityTaskWoken will be set to pdTRUE by + * xEventGroupSetBitsFromISR(), indicating that a context switch should be + * requested before the interrupt exits. For that reason + * *pxHigherPriorityTaskWoken must be initialised to pdFALSE. See the + * example code below. + * + * @return If the request to execute the function was posted successfully then + * pdPASS is returned, otherwise pdFALSE is returned. pdFALSE will be returned + * if the timer service queue was full. + * + * Example usage: +
+   #define BIT_0	( 1 << 0 )
+   #define BIT_4	( 1 << 4 )
+
+   // An event group which it is assumed has already been created by a call to
+   // xEventGroupCreate().
+   EventGroupHandle_t xEventGroup;
+
+   void anInterruptHandler( void )
+   {
+   BaseType_t xHigherPriorityTaskWoken, xResult;
+
+		// xHigherPriorityTaskWoken must be initialised to pdFALSE.
+		xHigherPriorityTaskWoken = pdFALSE;
+
+		// Set bit 0 and bit 4 in xEventGroup.
+		xResult = xEventGroupSetBitsFromISR(
+							xEventGroup,	// The event group being updated.
+							BIT_0 | BIT_4   // The bits being set.
+							&xHigherPriorityTaskWoken );
+
+		// Was the message posted successfully?
+		if( xResult == pdPASS )
+		{
+			// If xHigherPriorityTaskWoken is now set to pdTRUE then a context
+			// switch should be requested.  The macro used is port specific and
+			// will be either portYIELD_FROM_ISR() or portEND_SWITCHING_ISR() -
+			// refer to the documentation page for the port being used.
+			portYIELD_FROM_ISR( xHigherPriorityTaskWoken );
+		}
+  }
+   
+ * \defgroup xEventGroupSetBitsFromISR xEventGroupSetBitsFromISR + * \ingroup EventGroup + */ +#if( configUSE_TRACE_FACILITY == 1 ) + BaseType_t xEventGroupSetBitsFromISR( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToSet, BaseType_t *pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION; +#else + #define xEventGroupSetBitsFromISR( xEventGroup, uxBitsToSet, pxHigherPriorityTaskWoken ) xTimerPendFunctionCallFromISR( vEventGroupSetBitsCallback, ( void * ) xEventGroup, ( uint32_t ) uxBitsToSet, pxHigherPriorityTaskWoken ) +#endif + +/** + * event_groups.h + *
+	EventBits_t xEventGroupSync(	EventGroupHandle_t xEventGroup,
+									const EventBits_t uxBitsToSet,
+									const EventBits_t uxBitsToWaitFor,
+									TickType_t xTicksToWait );
+ 
+ * + * Atomically set bits within an event group, then wait for a combination of + * bits to be set within the same event group. This functionality is typically + * used to synchronise multiple tasks, where each task has to wait for the other + * tasks to reach a synchronisation point before proceeding. + * + * This function cannot be used from an interrupt. + * + * The function will return before its block time expires if the bits specified + * by the uxBitsToWait parameter are set, or become set within that time. In + * this case all the bits specified by uxBitsToWait will be automatically + * cleared before the function returns. + * + * @param xEventGroup The event group in which the bits are being tested. The + * event group must have previously been created using a call to + * xEventGroupCreate(). + * + * @param uxBitsToSet The bits to set in the event group before determining + * if, and possibly waiting for, all the bits specified by the uxBitsToWait + * parameter are set. + * + * @param uxBitsToWaitFor A bitwise value that indicates the bit or bits to test + * inside the event group. For example, to wait for bit 0 and bit 2 set + * uxBitsToWaitFor to 0x05. To wait for bits 0 and bit 1 and bit 2 set + * uxBitsToWaitFor to 0x07. Etc. + * + * @param xTicksToWait The maximum amount of time (specified in 'ticks') to wait + * for all of the bits specified by uxBitsToWaitFor to become set. + * + * @return The value of the event group at the time either the bits being waited + * for became set, or the block time expired. Test the return value to know + * which bits were set. If xEventGroupSync() returned because its timeout + * expired then not all the bits being waited for will be set. If + * xEventGroupSync() returned because all the bits it was waiting for were + * set then the returned value is the event group value before any bits were + * automatically cleared. + * + * Example usage: +
+ // Bits used by the three tasks.
+ #define TASK_0_BIT		( 1 << 0 )
+ #define TASK_1_BIT		( 1 << 1 )
+ #define TASK_2_BIT		( 1 << 2 )
+
+ #define ALL_SYNC_BITS ( TASK_0_BIT | TASK_1_BIT | TASK_2_BIT )
+
+ // Use an event group to synchronise three tasks.  It is assumed this event
+ // group has already been created elsewhere.
+ EventGroupHandle_t xEventBits;
+
+ void vTask0( void *pvParameters )
+ {
+ EventBits_t uxReturn;
+ TickType_t xTicksToWait = 100 / portTICK_PERIOD_MS;
+
+	 for( ;; )
+	 {
+		// Perform task functionality here.
+
+		// Set bit 0 in the event flag to note this task has reached the
+		// sync point.  The other two tasks will set the other two bits defined
+		// by ALL_SYNC_BITS.  All three tasks have reached the synchronisation
+		// point when all the ALL_SYNC_BITS are set.  Wait a maximum of 100ms
+		// for this to happen.
+		uxReturn = xEventGroupSync( xEventBits, TASK_0_BIT, ALL_SYNC_BITS, xTicksToWait );
+
+		if( ( uxReturn & ALL_SYNC_BITS ) == ALL_SYNC_BITS )
+		{
+			// All three tasks reached the synchronisation point before the call
+			// to xEventGroupSync() timed out.
+		}
+	}
+ }
+
+ void vTask1( void *pvParameters )
+ {
+	 for( ;; )
+	 {
+		// Perform task functionality here.
+
+		// Set bit 1 in the event flag to note this task has reached the
+		// synchronisation point.  The other two tasks will set the other two
+		// bits defined by ALL_SYNC_BITS.  All three tasks have reached the
+		// synchronisation point when all the ALL_SYNC_BITS are set.  Wait
+		// indefinitely for this to happen.
+		xEventGroupSync( xEventBits, TASK_1_BIT, ALL_SYNC_BITS, portMAX_DELAY );
+
+		// xEventGroupSync() was called with an indefinite block time, so
+		// this task will only reach here if the syncrhonisation was made by all
+		// three tasks, so there is no need to test the return value.
+	 }
+ }
+
+ void vTask2( void *pvParameters )
+ {
+	 for( ;; )
+	 {
+		// Perform task functionality here.
+
+		// Set bit 2 in the event flag to note this task has reached the
+		// synchronisation point.  The other two tasks will set the other two
+		// bits defined by ALL_SYNC_BITS.  All three tasks have reached the
+		// synchronisation point when all the ALL_SYNC_BITS are set.  Wait
+		// indefinitely for this to happen.
+		xEventGroupSync( xEventBits, TASK_2_BIT, ALL_SYNC_BITS, portMAX_DELAY );
+
+		// xEventGroupSync() was called with an indefinite block time, so
+		// this task will only reach here if the syncrhonisation was made by all
+		// three tasks, so there is no need to test the return value.
+	}
+ }
+
+ 
+ * \defgroup xEventGroupSync xEventGroupSync + * \ingroup EventGroup + */ +EventBits_t xEventGroupSync( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToSet, const EventBits_t uxBitsToWaitFor, TickType_t xTicksToWait ) PRIVILEGED_FUNCTION; + + +/** + * event_groups.h + *
+	EventBits_t xEventGroupGetBits( EventGroupHandle_t xEventGroup );
+ 
+ * + * Returns the current value of the bits in an event group. This function + * cannot be used from an interrupt. + * + * @param xEventGroup The event group being queried. + * + * @return The event group bits at the time xEventGroupGetBits() was called. + * + * \defgroup xEventGroupGetBits xEventGroupGetBits + * \ingroup EventGroup + */ +#define xEventGroupGetBits( xEventGroup ) xEventGroupClearBits( xEventGroup, 0 ) + +/** + * event_groups.h + *
+	EventBits_t xEventGroupGetBitsFromISR( EventGroupHandle_t xEventGroup );
+ 
+ * + * A version of xEventGroupGetBits() that can be called from an ISR. + * + * @param xEventGroup The event group being queried. + * + * @return The event group bits at the time xEventGroupGetBitsFromISR() was called. + * + * \defgroup xEventGroupGetBitsFromISR xEventGroupGetBitsFromISR + * \ingroup EventGroup + */ +EventBits_t xEventGroupGetBitsFromISR( EventGroupHandle_t xEventGroup ) PRIVILEGED_FUNCTION; + +/** + * event_groups.h + *
+	void xEventGroupDelete( EventGroupHandle_t xEventGroup );
+ 
+ * + * Delete an event group that was previously created by a call to + * xEventGroupCreate(). Tasks that are blocked on the event group will be + * unblocked and obtain 0 as the event group's value. + * + * @param xEventGroup The event group being deleted. + */ +void vEventGroupDelete( EventGroupHandle_t xEventGroup ) PRIVILEGED_FUNCTION; + +/* For internal use only. */ +void vEventGroupSetBitsCallback( void *pvEventGroup, const uint32_t ulBitsToSet ) PRIVILEGED_FUNCTION; +void vEventGroupClearBitsCallback( void *pvEventGroup, const uint32_t ulBitsToClear ) PRIVILEGED_FUNCTION; + + +#if (configUSE_TRACE_FACILITY == 1) + UBaseType_t uxEventGroupGetNumber( void* xEventGroup ) PRIVILEGED_FUNCTION; + void vEventGroupSetNumber( void* xEventGroup, UBaseType_t uxEventGroupNumber ) PRIVILEGED_FUNCTION; +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* EVENT_GROUPS_H */ + + diff --git a/firmware/Middlewares/Third_Party/FreeRTOS/Source/include/list.h b/firmware/Middlewares/Third_Party/FreeRTOS/Source/include/list.h new file mode 100644 index 0000000..a3e3024 --- /dev/null +++ b/firmware/Middlewares/Third_Party/FreeRTOS/Source/include/list.h @@ -0,0 +1,412 @@ +/* + * FreeRTOS Kernel V10.3.1 + * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * http://www.FreeRTOS.org + * http://aws.amazon.com/freertos + * + * 1 tab == 4 spaces! + */ + +/* + * This is the list implementation used by the scheduler. While it is tailored + * heavily for the schedulers needs, it is also available for use by + * application code. + * + * list_ts can only store pointers to list_item_ts. Each ListItem_t contains a + * numeric value (xItemValue). Most of the time the lists are sorted in + * descending item value order. + * + * Lists are created already containing one list item. The value of this + * item is the maximum possible that can be stored, it is therefore always at + * the end of the list and acts as a marker. The list member pxHead always + * points to this marker - even though it is at the tail of the list. This + * is because the tail contains a wrap back pointer to the true head of + * the list. + * + * In addition to it's value, each list item contains a pointer to the next + * item in the list (pxNext), a pointer to the list it is in (pxContainer) + * and a pointer to back to the object that contains it. These later two + * pointers are included for efficiency of list manipulation. There is + * effectively a two way link between the object containing the list item and + * the list item itself. + * + * + * \page ListIntroduction List Implementation + * \ingroup FreeRTOSIntro + */ + +#ifndef INC_FREERTOS_H + #error FreeRTOS.h must be included before list.h +#endif + +#ifndef LIST_H +#define LIST_H + +/* + * The list structure members are modified from within interrupts, and therefore + * by rights should be declared volatile. However, they are only modified in a + * functionally atomic way (within critical sections of with the scheduler + * suspended) and are either passed by reference into a function or indexed via + * a volatile variable. Therefore, in all use cases tested so far, the volatile + * qualifier can be omitted in order to provide a moderate performance + * improvement without adversely affecting functional behaviour. The assembly + * instructions generated by the IAR, ARM and GCC compilers when the respective + * compiler's options were set for maximum optimisation has been inspected and + * deemed to be as intended. That said, as compiler technology advances, and + * especially if aggressive cross module optimisation is used (a use case that + * has not been exercised to any great extend) then it is feasible that the + * volatile qualifier will be needed for correct optimisation. It is expected + * that a compiler removing essential code because, without the volatile + * qualifier on the list structure members and with aggressive cross module + * optimisation, the compiler deemed the code unnecessary will result in + * complete and obvious failure of the scheduler. If this is ever experienced + * then the volatile qualifier can be inserted in the relevant places within the + * list structures by simply defining configLIST_VOLATILE to volatile in + * FreeRTOSConfig.h (as per the example at the bottom of this comment block). + * If configLIST_VOLATILE is not defined then the preprocessor directives below + * will simply #define configLIST_VOLATILE away completely. + * + * To use volatile list structure members then add the following line to + * FreeRTOSConfig.h (without the quotes): + * "#define configLIST_VOLATILE volatile" + */ +#ifndef configLIST_VOLATILE + #define configLIST_VOLATILE +#endif /* configSUPPORT_CROSS_MODULE_OPTIMISATION */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* Macros that can be used to place known values within the list structures, +then check that the known values do not get corrupted during the execution of +the application. These may catch the list data structures being overwritten in +memory. They will not catch data errors caused by incorrect configuration or +use of FreeRTOS.*/ +#if( configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES == 0 ) + /* Define the macros to do nothing. */ + #define listFIRST_LIST_ITEM_INTEGRITY_CHECK_VALUE + #define listSECOND_LIST_ITEM_INTEGRITY_CHECK_VALUE + #define listFIRST_LIST_INTEGRITY_CHECK_VALUE + #define listSECOND_LIST_INTEGRITY_CHECK_VALUE + #define listSET_FIRST_LIST_ITEM_INTEGRITY_CHECK_VALUE( pxItem ) + #define listSET_SECOND_LIST_ITEM_INTEGRITY_CHECK_VALUE( pxItem ) + #define listSET_LIST_INTEGRITY_CHECK_1_VALUE( pxList ) + #define listSET_LIST_INTEGRITY_CHECK_2_VALUE( pxList ) + #define listTEST_LIST_ITEM_INTEGRITY( pxItem ) + #define listTEST_LIST_INTEGRITY( pxList ) +#else + /* Define macros that add new members into the list structures. */ + #define listFIRST_LIST_ITEM_INTEGRITY_CHECK_VALUE TickType_t xListItemIntegrityValue1; + #define listSECOND_LIST_ITEM_INTEGRITY_CHECK_VALUE TickType_t xListItemIntegrityValue2; + #define listFIRST_LIST_INTEGRITY_CHECK_VALUE TickType_t xListIntegrityValue1; + #define listSECOND_LIST_INTEGRITY_CHECK_VALUE TickType_t xListIntegrityValue2; + + /* Define macros that set the new structure members to known values. */ + #define listSET_FIRST_LIST_ITEM_INTEGRITY_CHECK_VALUE( pxItem ) ( pxItem )->xListItemIntegrityValue1 = pdINTEGRITY_CHECK_VALUE + #define listSET_SECOND_LIST_ITEM_INTEGRITY_CHECK_VALUE( pxItem ) ( pxItem )->xListItemIntegrityValue2 = pdINTEGRITY_CHECK_VALUE + #define listSET_LIST_INTEGRITY_CHECK_1_VALUE( pxList ) ( pxList )->xListIntegrityValue1 = pdINTEGRITY_CHECK_VALUE + #define listSET_LIST_INTEGRITY_CHECK_2_VALUE( pxList ) ( pxList )->xListIntegrityValue2 = pdINTEGRITY_CHECK_VALUE + + /* Define macros that will assert if one of the structure members does not + contain its expected value. */ + #define listTEST_LIST_ITEM_INTEGRITY( pxItem ) configASSERT( ( ( pxItem )->xListItemIntegrityValue1 == pdINTEGRITY_CHECK_VALUE ) && ( ( pxItem )->xListItemIntegrityValue2 == pdINTEGRITY_CHECK_VALUE ) ) + #define listTEST_LIST_INTEGRITY( pxList ) configASSERT( ( ( pxList )->xListIntegrityValue1 == pdINTEGRITY_CHECK_VALUE ) && ( ( pxList )->xListIntegrityValue2 == pdINTEGRITY_CHECK_VALUE ) ) +#endif /* configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES */ + + +/* + * Definition of the only type of object that a list can contain. + */ +struct xLIST; +struct xLIST_ITEM +{ + listFIRST_LIST_ITEM_INTEGRITY_CHECK_VALUE /*< Set to a known value if configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES is set to 1. */ + configLIST_VOLATILE TickType_t xItemValue; /*< The value being listed. In most cases this is used to sort the list in descending order. */ + struct xLIST_ITEM * configLIST_VOLATILE pxNext; /*< Pointer to the next ListItem_t in the list. */ + struct xLIST_ITEM * configLIST_VOLATILE pxPrevious; /*< Pointer to the previous ListItem_t in the list. */ + void * pvOwner; /*< Pointer to the object (normally a TCB) that contains the list item. There is therefore a two way link between the object containing the list item and the list item itself. */ + struct xLIST * configLIST_VOLATILE pxContainer; /*< Pointer to the list in which this list item is placed (if any). */ + listSECOND_LIST_ITEM_INTEGRITY_CHECK_VALUE /*< Set to a known value if configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES is set to 1. */ +}; +typedef struct xLIST_ITEM ListItem_t; /* For some reason lint wants this as two separate definitions. */ + +struct xMINI_LIST_ITEM +{ + listFIRST_LIST_ITEM_INTEGRITY_CHECK_VALUE /*< Set to a known value if configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES is set to 1. */ + configLIST_VOLATILE TickType_t xItemValue; + struct xLIST_ITEM * configLIST_VOLATILE pxNext; + struct xLIST_ITEM * configLIST_VOLATILE pxPrevious; +}; +typedef struct xMINI_LIST_ITEM MiniListItem_t; + +/* + * Definition of the type of queue used by the scheduler. + */ +typedef struct xLIST +{ + listFIRST_LIST_INTEGRITY_CHECK_VALUE /*< Set to a known value if configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES is set to 1. */ + volatile UBaseType_t uxNumberOfItems; + ListItem_t * configLIST_VOLATILE pxIndex; /*< Used to walk through the list. Points to the last item returned by a call to listGET_OWNER_OF_NEXT_ENTRY (). */ + MiniListItem_t xListEnd; /*< List item that contains the maximum possible item value meaning it is always at the end of the list and is therefore used as a marker. */ + listSECOND_LIST_INTEGRITY_CHECK_VALUE /*< Set to a known value if configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES is set to 1. */ +} List_t; + +/* + * Access macro to set the owner of a list item. The owner of a list item + * is the object (usually a TCB) that contains the list item. + * + * \page listSET_LIST_ITEM_OWNER listSET_LIST_ITEM_OWNER + * \ingroup LinkedList + */ +#define listSET_LIST_ITEM_OWNER( pxListItem, pxOwner ) ( ( pxListItem )->pvOwner = ( void * ) ( pxOwner ) ) + +/* + * Access macro to get the owner of a list item. The owner of a list item + * is the object (usually a TCB) that contains the list item. + * + * \page listGET_LIST_ITEM_OWNER listSET_LIST_ITEM_OWNER + * \ingroup LinkedList + */ +#define listGET_LIST_ITEM_OWNER( pxListItem ) ( ( pxListItem )->pvOwner ) + +/* + * Access macro to set the value of the list item. In most cases the value is + * used to sort the list in descending order. + * + * \page listSET_LIST_ITEM_VALUE listSET_LIST_ITEM_VALUE + * \ingroup LinkedList + */ +#define listSET_LIST_ITEM_VALUE( pxListItem, xValue ) ( ( pxListItem )->xItemValue = ( xValue ) ) + +/* + * Access macro to retrieve the value of the list item. The value can + * represent anything - for example the priority of a task, or the time at + * which a task should be unblocked. + * + * \page listGET_LIST_ITEM_VALUE listGET_LIST_ITEM_VALUE + * \ingroup LinkedList + */ +#define listGET_LIST_ITEM_VALUE( pxListItem ) ( ( pxListItem )->xItemValue ) + +/* + * Access macro to retrieve the value of the list item at the head of a given + * list. + * + * \page listGET_LIST_ITEM_VALUE listGET_LIST_ITEM_VALUE + * \ingroup LinkedList + */ +#define listGET_ITEM_VALUE_OF_HEAD_ENTRY( pxList ) ( ( ( pxList )->xListEnd ).pxNext->xItemValue ) + +/* + * Return the list item at the head of the list. + * + * \page listGET_HEAD_ENTRY listGET_HEAD_ENTRY + * \ingroup LinkedList + */ +#define listGET_HEAD_ENTRY( pxList ) ( ( ( pxList )->xListEnd ).pxNext ) + +/* + * Return the next list item. + * + * \page listGET_NEXT listGET_NEXT + * \ingroup LinkedList + */ +#define listGET_NEXT( pxListItem ) ( ( pxListItem )->pxNext ) + +/* + * Return the list item that marks the end of the list + * + * \page listGET_END_MARKER listGET_END_MARKER + * \ingroup LinkedList + */ +#define listGET_END_MARKER( pxList ) ( ( ListItem_t const * ) ( &( ( pxList )->xListEnd ) ) ) + +/* + * Access macro to determine if a list contains any items. The macro will + * only have the value true if the list is empty. + * + * \page listLIST_IS_EMPTY listLIST_IS_EMPTY + * \ingroup LinkedList + */ +#define listLIST_IS_EMPTY( pxList ) ( ( ( pxList )->uxNumberOfItems == ( UBaseType_t ) 0 ) ? pdTRUE : pdFALSE ) + +/* + * Access macro to return the number of items in the list. + */ +#define listCURRENT_LIST_LENGTH( pxList ) ( ( pxList )->uxNumberOfItems ) + +/* + * Access function to obtain the owner of the next entry in a list. + * + * The list member pxIndex is used to walk through a list. Calling + * listGET_OWNER_OF_NEXT_ENTRY increments pxIndex to the next item in the list + * and returns that entry's pxOwner parameter. Using multiple calls to this + * function it is therefore possible to move through every item contained in + * a list. + * + * The pxOwner parameter of a list item is a pointer to the object that owns + * the list item. In the scheduler this is normally a task control block. + * The pxOwner parameter effectively creates a two way link between the list + * item and its owner. + * + * @param pxTCB pxTCB is set to the address of the owner of the next list item. + * @param pxList The list from which the next item owner is to be returned. + * + * \page listGET_OWNER_OF_NEXT_ENTRY listGET_OWNER_OF_NEXT_ENTRY + * \ingroup LinkedList + */ +#define listGET_OWNER_OF_NEXT_ENTRY( pxTCB, pxList ) \ +{ \ +List_t * const pxConstList = ( pxList ); \ + /* Increment the index to the next item and return the item, ensuring */ \ + /* we don't return the marker used at the end of the list. */ \ + ( pxConstList )->pxIndex = ( pxConstList )->pxIndex->pxNext; \ + if( ( void * ) ( pxConstList )->pxIndex == ( void * ) &( ( pxConstList )->xListEnd ) ) \ + { \ + ( pxConstList )->pxIndex = ( pxConstList )->pxIndex->pxNext; \ + } \ + ( pxTCB ) = ( pxConstList )->pxIndex->pvOwner; \ +} + + +/* + * Access function to obtain the owner of the first entry in a list. Lists + * are normally sorted in ascending item value order. + * + * This function returns the pxOwner member of the first item in the list. + * The pxOwner parameter of a list item is a pointer to the object that owns + * the list item. In the scheduler this is normally a task control block. + * The pxOwner parameter effectively creates a two way link between the list + * item and its owner. + * + * @param pxList The list from which the owner of the head item is to be + * returned. + * + * \page listGET_OWNER_OF_HEAD_ENTRY listGET_OWNER_OF_HEAD_ENTRY + * \ingroup LinkedList + */ +#define listGET_OWNER_OF_HEAD_ENTRY( pxList ) ( (&( ( pxList )->xListEnd ))->pxNext->pvOwner ) + +/* + * Check to see if a list item is within a list. The list item maintains a + * "container" pointer that points to the list it is in. All this macro does + * is check to see if the container and the list match. + * + * @param pxList The list we want to know if the list item is within. + * @param pxListItem The list item we want to know if is in the list. + * @return pdTRUE if the list item is in the list, otherwise pdFALSE. + */ +#define listIS_CONTAINED_WITHIN( pxList, pxListItem ) ( ( ( pxListItem )->pxContainer == ( pxList ) ) ? ( pdTRUE ) : ( pdFALSE ) ) + +/* + * Return the list a list item is contained within (referenced from). + * + * @param pxListItem The list item being queried. + * @return A pointer to the List_t object that references the pxListItem + */ +#define listLIST_ITEM_CONTAINER( pxListItem ) ( ( pxListItem )->pxContainer ) + +/* + * This provides a crude means of knowing if a list has been initialised, as + * pxList->xListEnd.xItemValue is set to portMAX_DELAY by the vListInitialise() + * function. + */ +#define listLIST_IS_INITIALISED( pxList ) ( ( pxList )->xListEnd.xItemValue == portMAX_DELAY ) + +/* + * Must be called before a list is used! This initialises all the members + * of the list structure and inserts the xListEnd item into the list as a + * marker to the back of the list. + * + * @param pxList Pointer to the list being initialised. + * + * \page vListInitialise vListInitialise + * \ingroup LinkedList + */ +void vListInitialise( List_t * const pxList ) PRIVILEGED_FUNCTION; + +/* + * Must be called before a list item is used. This sets the list container to + * null so the item does not think that it is already contained in a list. + * + * @param pxItem Pointer to the list item being initialised. + * + * \page vListInitialiseItem vListInitialiseItem + * \ingroup LinkedList + */ +void vListInitialiseItem( ListItem_t * const pxItem ) PRIVILEGED_FUNCTION; + +/* + * Insert a list item into a list. The item will be inserted into the list in + * a position determined by its item value (descending item value order). + * + * @param pxList The list into which the item is to be inserted. + * + * @param pxNewListItem The item that is to be placed in the list. + * + * \page vListInsert vListInsert + * \ingroup LinkedList + */ +void vListInsert( List_t * const pxList, ListItem_t * const pxNewListItem ) PRIVILEGED_FUNCTION; + +/* + * Insert a list item into a list. The item will be inserted in a position + * such that it will be the last item within the list returned by multiple + * calls to listGET_OWNER_OF_NEXT_ENTRY. + * + * The list member pxIndex is used to walk through a list. Calling + * listGET_OWNER_OF_NEXT_ENTRY increments pxIndex to the next item in the list. + * Placing an item in a list using vListInsertEnd effectively places the item + * in the list position pointed to by pxIndex. This means that every other + * item within the list will be returned by listGET_OWNER_OF_NEXT_ENTRY before + * the pxIndex parameter again points to the item being inserted. + * + * @param pxList The list into which the item is to be inserted. + * + * @param pxNewListItem The list item to be inserted into the list. + * + * \page vListInsertEnd vListInsertEnd + * \ingroup LinkedList + */ +void vListInsertEnd( List_t * const pxList, ListItem_t * const pxNewListItem ) PRIVILEGED_FUNCTION; + +/* + * Remove an item from a list. The list item has a pointer to the list that + * it is in, so only the list item need be passed into the function. + * + * @param uxListRemove The item to be removed. The item will remove itself from + * the list pointed to by it's pxContainer parameter. + * + * @return The number of items that remain in the list after the list item has + * been removed. + * + * \page uxListRemove uxListRemove + * \ingroup LinkedList + */ +UBaseType_t uxListRemove( ListItem_t * const pxItemToRemove ) PRIVILEGED_FUNCTION; + +#ifdef __cplusplus +} +#endif + +#endif + diff --git a/firmware/Middlewares/Third_Party/FreeRTOS/Source/include/message_buffer.h b/firmware/Middlewares/Third_Party/FreeRTOS/Source/include/message_buffer.h new file mode 100644 index 0000000..0c3edb9 --- /dev/null +++ b/firmware/Middlewares/Third_Party/FreeRTOS/Source/include/message_buffer.h @@ -0,0 +1,803 @@ +/* + * FreeRTOS Kernel V10.3.1 + * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * http://www.FreeRTOS.org + * http://aws.amazon.com/freertos + * + * 1 tab == 4 spaces! + */ + + +/* + * Message buffers build functionality on top of FreeRTOS stream buffers. + * Whereas stream buffers are used to send a continuous stream of data from one + * task or interrupt to another, message buffers are used to send variable + * length discrete messages from one task or interrupt to another. Their + * implementation is light weight, making them particularly suited for interrupt + * to task and core to core communication scenarios. + * + * ***NOTE***: Uniquely among FreeRTOS objects, the stream buffer + * implementation (so also the message buffer implementation, as message buffers + * are built on top of stream buffers) assumes there is only one task or + * interrupt that will write to the buffer (the writer), and only one task or + * interrupt that will read from the buffer (the reader). It is safe for the + * writer and reader to be different tasks or interrupts, but, unlike other + * FreeRTOS objects, it is not safe to have multiple different writers or + * multiple different readers. If there are to be multiple different writers + * then the application writer must place each call to a writing API function + * (such as xMessageBufferSend()) inside a critical section and set the send + * block time to 0. Likewise, if there are to be multiple different readers + * then the application writer must place each call to a reading API function + * (such as xMessageBufferRead()) inside a critical section and set the receive + * timeout to 0. + * + * Message buffers hold variable length messages. To enable that, when a + * message is written to the message buffer an additional sizeof( size_t ) bytes + * are also written to store the message's length (that happens internally, with + * the API function). sizeof( size_t ) is typically 4 bytes on a 32-bit + * architecture, so writing a 10 byte message to a message buffer on a 32-bit + * architecture will actually reduce the available space in the message buffer + * by 14 bytes (10 byte are used by the message, and 4 bytes to hold the length + * of the message). + */ + +#ifndef FREERTOS_MESSAGE_BUFFER_H +#define FREERTOS_MESSAGE_BUFFER_H + +#ifndef INC_FREERTOS_H + #error "include FreeRTOS.h must appear in source files before include message_buffer.h" +#endif + +/* Message buffers are built onto of stream buffers. */ +#include "stream_buffer.h" + +#if defined( __cplusplus ) +extern "C" { +#endif + +/** + * Type by which message buffers are referenced. For example, a call to + * xMessageBufferCreate() returns an MessageBufferHandle_t variable that can + * then be used as a parameter to xMessageBufferSend(), xMessageBufferReceive(), + * etc. + */ +typedef void * MessageBufferHandle_t; + +/*-----------------------------------------------------------*/ + +/** + * message_buffer.h + * +
+MessageBufferHandle_t xMessageBufferCreate( size_t xBufferSizeBytes );
+
+ * + * Creates a new message buffer using dynamically allocated memory. See + * xMessageBufferCreateStatic() for a version that uses statically allocated + * memory (memory that is allocated at compile time). + * + * configSUPPORT_DYNAMIC_ALLOCATION must be set to 1 or left undefined in + * FreeRTOSConfig.h for xMessageBufferCreate() to be available. + * + * @param xBufferSizeBytes The total number of bytes (not messages) the message + * buffer will be able to hold at any one time. When a message is written to + * the message buffer an additional sizeof( size_t ) bytes are also written to + * store the message's length. sizeof( size_t ) is typically 4 bytes on a + * 32-bit architecture, so on most 32-bit architectures a 10 byte message will + * take up 14 bytes of message buffer space. + * + * @return If NULL is returned, then the message buffer cannot be created + * because there is insufficient heap memory available for FreeRTOS to allocate + * the message buffer data structures and storage area. A non-NULL value being + * returned indicates that the message buffer has been created successfully - + * the returned value should be stored as the handle to the created message + * buffer. + * + * Example use: +
+
+void vAFunction( void )
+{
+MessageBufferHandle_t xMessageBuffer;
+const size_t xMessageBufferSizeBytes = 100;
+
+    // Create a message buffer that can hold 100 bytes.  The memory used to hold
+    // both the message buffer structure and the messages themselves is allocated
+    // dynamically.  Each message added to the buffer consumes an additional 4
+    // bytes which are used to hold the lengh of the message.
+    xMessageBuffer = xMessageBufferCreate( xMessageBufferSizeBytes );
+
+    if( xMessageBuffer == NULL )
+    {
+        // There was not enough heap memory space available to create the
+        // message buffer.
+    }
+    else
+    {
+        // The message buffer was created successfully and can now be used.
+    }
+
+
+ * \defgroup xMessageBufferCreate xMessageBufferCreate + * \ingroup MessageBufferManagement + */ +#define xMessageBufferCreate( xBufferSizeBytes ) ( MessageBufferHandle_t ) xStreamBufferGenericCreate( xBufferSizeBytes, ( size_t ) 0, pdTRUE ) + +/** + * message_buffer.h + * +
+MessageBufferHandle_t xMessageBufferCreateStatic( size_t xBufferSizeBytes,
+                                                  uint8_t *pucMessageBufferStorageArea,
+                                                  StaticMessageBuffer_t *pxStaticMessageBuffer );
+
+ * Creates a new message buffer using statically allocated memory. See + * xMessageBufferCreate() for a version that uses dynamically allocated memory. + * + * @param xBufferSizeBytes The size, in bytes, of the buffer pointed to by the + * pucMessageBufferStorageArea parameter. When a message is written to the + * message buffer an additional sizeof( size_t ) bytes are also written to store + * the message's length. sizeof( size_t ) is typically 4 bytes on a 32-bit + * architecture, so on most 32-bit architecture a 10 byte message will take up + * 14 bytes of message buffer space. The maximum number of bytes that can be + * stored in the message buffer is actually (xBufferSizeBytes - 1). + * + * @param pucMessageBufferStorageArea Must point to a uint8_t array that is at + * least xBufferSizeBytes + 1 big. This is the array to which messages are + * copied when they are written to the message buffer. + * + * @param pxStaticMessageBuffer Must point to a variable of type + * StaticMessageBuffer_t, which will be used to hold the message buffer's data + * structure. + * + * @return If the message buffer is created successfully then a handle to the + * created message buffer is returned. If either pucMessageBufferStorageArea or + * pxStaticmessageBuffer are NULL then NULL is returned. + * + * Example use: +
+
+// Used to dimension the array used to hold the messages.  The available space
+// will actually be one less than this, so 999.
+#define STORAGE_SIZE_BYTES 1000
+
+// Defines the memory that will actually hold the messages within the message
+// buffer.
+static uint8_t ucStorageBuffer[ STORAGE_SIZE_BYTES ];
+
+// The variable used to hold the message buffer structure.
+StaticMessageBuffer_t xMessageBufferStruct;
+
+void MyFunction( void )
+{
+MessageBufferHandle_t xMessageBuffer;
+
+    xMessageBuffer = xMessageBufferCreateStatic( sizeof( ucBufferStorage ),
+                                                 ucBufferStorage,
+                                                 &xMessageBufferStruct );
+
+    // As neither the pucMessageBufferStorageArea or pxStaticMessageBuffer
+    // parameters were NULL, xMessageBuffer will not be NULL, and can be used to
+    // reference the created message buffer in other message buffer API calls.
+
+    // Other code that uses the message buffer can go here.
+}
+
+
+ * \defgroup xMessageBufferCreateStatic xMessageBufferCreateStatic + * \ingroup MessageBufferManagement + */ +#define xMessageBufferCreateStatic( xBufferSizeBytes, pucMessageBufferStorageArea, pxStaticMessageBuffer ) ( MessageBufferHandle_t ) xStreamBufferGenericCreateStatic( xBufferSizeBytes, 0, pdTRUE, pucMessageBufferStorageArea, pxStaticMessageBuffer ) + +/** + * message_buffer.h + * +
+size_t xMessageBufferSend( MessageBufferHandle_t xMessageBuffer,
+                           const void *pvTxData,
+                           size_t xDataLengthBytes,
+                           TickType_t xTicksToWait );
+
+ *
+ * Sends a discrete message to the message buffer.  The message can be any
+ * length that fits within the buffer's free space, and is copied into the
+ * buffer.
+ *
+ * ***NOTE***:  Uniquely among FreeRTOS objects, the stream buffer
+ * implementation (so also the message buffer implementation, as message buffers
+ * are built on top of stream buffers) assumes there is only one task or
+ * interrupt that will write to the buffer (the writer), and only one task or
+ * interrupt that will read from the buffer (the reader).  It is safe for the
+ * writer and reader to be different tasks or interrupts, but, unlike other
+ * FreeRTOS objects, it is not safe to have multiple different writers or
+ * multiple different readers.  If there are to be multiple different writers
+ * then the application writer must place each call to a writing API function
+ * (such as xMessageBufferSend()) inside a critical section and set the send
+ * block time to 0.  Likewise, if there are to be multiple different readers
+ * then the application writer must place each call to a reading API function
+ * (such as xMessageBufferRead()) inside a critical section and set the receive
+ * block time to 0.
+ *
+ * Use xMessageBufferSend() to write to a message buffer from a task.  Use
+ * xMessageBufferSendFromISR() to write to a message buffer from an interrupt
+ * service routine (ISR).
+ *
+ * @param xMessageBuffer The handle of the message buffer to which a message is
+ * being sent.
+ *
+ * @param pvTxData A pointer to the message that is to be copied into the
+ * message buffer.
+ *
+ * @param xDataLengthBytes The length of the message.  That is, the number of
+ * bytes to copy from pvTxData into the message buffer.  When a message is
+ * written to the message buffer an additional sizeof( size_t ) bytes are also
+ * written to store the message's length.  sizeof( size_t ) is typically 4 bytes
+ * on a 32-bit architecture, so on most 32-bit architecture setting
+ * xDataLengthBytes to 20 will reduce the free space in the message buffer by 24
+ * bytes (20 bytes of message data and 4 bytes to hold the message length).
+ *
+ * @param xTicksToWait The maximum amount of time the calling task should remain
+ * in the Blocked state to wait for enough space to become available in the
+ * message buffer, should the message buffer have insufficient space when
+ * xMessageBufferSend() is called.  The calling task will never block if
+ * xTicksToWait is zero.  The block time is specified in tick periods, so the
+ * absolute time it represents is dependent on the tick frequency.  The macro
+ * pdMS_TO_TICKS() can be used to convert a time specified in milliseconds into
+ * a time specified in ticks.  Setting xTicksToWait to portMAX_DELAY will cause
+ * the task to wait indefinitely (without timing out), provided
+ * INCLUDE_vTaskSuspend is set to 1 in FreeRTOSConfig.h.  Tasks do not use any
+ * CPU time when they are in the Blocked state.
+ *
+ * @return The number of bytes written to the message buffer.  If the call to
+ * xMessageBufferSend() times out before there was enough space to write the
+ * message into the message buffer then zero is returned.  If the call did not
+ * time out then xDataLengthBytes is returned.
+ *
+ * Example use:
+
+void vAFunction( MessageBufferHandle_t xMessageBuffer )
+{
+size_t xBytesSent;
+uint8_t ucArrayToSend[] = { 0, 1, 2, 3 };
+char *pcStringToSend = "String to send";
+const TickType_t x100ms = pdMS_TO_TICKS( 100 );
+
+    // Send an array to the message buffer, blocking for a maximum of 100ms to
+    // wait for enough space to be available in the message buffer.
+    xBytesSent = xMessageBufferSend( xMessageBuffer, ( void * ) ucArrayToSend, sizeof( ucArrayToSend ), x100ms );
+
+    if( xBytesSent != sizeof( ucArrayToSend ) )
+    {
+        // The call to xMessageBufferSend() times out before there was enough
+        // space in the buffer for the data to be written.
+    }
+
+    // Send the string to the message buffer.  Return immediately if there is
+    // not enough space in the buffer.
+    xBytesSent = xMessageBufferSend( xMessageBuffer, ( void * ) pcStringToSend, strlen( pcStringToSend ), 0 );
+
+    if( xBytesSent != strlen( pcStringToSend ) )
+    {
+        // The string could not be added to the message buffer because there was
+        // not enough free space in the buffer.
+    }
+}
+
+ * \defgroup xMessageBufferSend xMessageBufferSend + * \ingroup MessageBufferManagement + */ +#define xMessageBufferSend( xMessageBuffer, pvTxData, xDataLengthBytes, xTicksToWait ) xStreamBufferSend( ( StreamBufferHandle_t ) xMessageBuffer, pvTxData, xDataLengthBytes, xTicksToWait ) + +/** + * message_buffer.h + * +
+size_t xMessageBufferSendFromISR( MessageBufferHandle_t xMessageBuffer,
+                                  const void *pvTxData,
+                                  size_t xDataLengthBytes,
+                                  BaseType_t *pxHigherPriorityTaskWoken );
+
+ *
+ * Interrupt safe version of the API function that sends a discrete message to
+ * the message buffer.  The message can be any length that fits within the
+ * buffer's free space, and is copied into the buffer.
+ *
+ * ***NOTE***:  Uniquely among FreeRTOS objects, the stream buffer
+ * implementation (so also the message buffer implementation, as message buffers
+ * are built on top of stream buffers) assumes there is only one task or
+ * interrupt that will write to the buffer (the writer), and only one task or
+ * interrupt that will read from the buffer (the reader).  It is safe for the
+ * writer and reader to be different tasks or interrupts, but, unlike other
+ * FreeRTOS objects, it is not safe to have multiple different writers or
+ * multiple different readers.  If there are to be multiple different writers
+ * then the application writer must place each call to a writing API function
+ * (such as xMessageBufferSend()) inside a critical section and set the send
+ * block time to 0.  Likewise, if there are to be multiple different readers
+ * then the application writer must place each call to a reading API function
+ * (such as xMessageBufferRead()) inside a critical section and set the receive
+ * block time to 0.
+ *
+ * Use xMessageBufferSend() to write to a message buffer from a task.  Use
+ * xMessageBufferSendFromISR() to write to a message buffer from an interrupt
+ * service routine (ISR).
+ *
+ * @param xMessageBuffer The handle of the message buffer to which a message is
+ * being sent.
+ *
+ * @param pvTxData A pointer to the message that is to be copied into the
+ * message buffer.
+ *
+ * @param xDataLengthBytes The length of the message.  That is, the number of
+ * bytes to copy from pvTxData into the message buffer.  When a message is
+ * written to the message buffer an additional sizeof( size_t ) bytes are also
+ * written to store the message's length.  sizeof( size_t ) is typically 4 bytes
+ * on a 32-bit architecture, so on most 32-bit architecture setting
+ * xDataLengthBytes to 20 will reduce the free space in the message buffer by 24
+ * bytes (20 bytes of message data and 4 bytes to hold the message length).
+ *
+ * @param pxHigherPriorityTaskWoken  It is possible that a message buffer will
+ * have a task blocked on it waiting for data.  Calling
+ * xMessageBufferSendFromISR() can make data available, and so cause a task that
+ * was waiting for data to leave the Blocked state.  If calling
+ * xMessageBufferSendFromISR() causes a task to leave the Blocked state, and the
+ * unblocked task has a priority higher than the currently executing task (the
+ * task that was interrupted), then, internally, xMessageBufferSendFromISR()
+ * will set *pxHigherPriorityTaskWoken to pdTRUE.  If
+ * xMessageBufferSendFromISR() sets this value to pdTRUE, then normally a
+ * context switch should be performed before the interrupt is exited.  This will
+ * ensure that the interrupt returns directly to the highest priority Ready
+ * state task.  *pxHigherPriorityTaskWoken should be set to pdFALSE before it
+ * is passed into the function.  See the code example below for an example.
+ *
+ * @return The number of bytes actually written to the message buffer.  If the
+ * message buffer didn't have enough free space for the message to be stored
+ * then 0 is returned, otherwise xDataLengthBytes is returned.
+ *
+ * Example use:
+
+// A message buffer that has already been created.
+MessageBufferHandle_t xMessageBuffer;
+
+void vAnInterruptServiceRoutine( void )
+{
+size_t xBytesSent;
+char *pcStringToSend = "String to send";
+BaseType_t xHigherPriorityTaskWoken = pdFALSE; // Initialised to pdFALSE.
+
+    // Attempt to send the string to the message buffer.
+    xBytesSent = xMessageBufferSendFromISR( xMessageBuffer,
+                                            ( void * ) pcStringToSend,
+                                            strlen( pcStringToSend ),
+                                            &xHigherPriorityTaskWoken );
+
+    if( xBytesSent != strlen( pcStringToSend ) )
+    {
+        // The string could not be added to the message buffer because there was
+        // not enough free space in the buffer.
+    }
+
+    // If xHigherPriorityTaskWoken was set to pdTRUE inside
+    // xMessageBufferSendFromISR() then a task that has a priority above the
+    // priority of the currently executing task was unblocked and a context
+    // switch should be performed to ensure the ISR returns to the unblocked
+    // task.  In most FreeRTOS ports this is done by simply passing
+    // xHigherPriorityTaskWoken into portYIELD_FROM_ISR(), which will test the
+    // variables value, and perform the context switch if necessary.  Check the
+    // documentation for the port in use for port specific instructions.
+    portYIELD_FROM_ISR( xHigherPriorityTaskWoken );
+}
+
+ * \defgroup xMessageBufferSendFromISR xMessageBufferSendFromISR + * \ingroup MessageBufferManagement + */ +#define xMessageBufferSendFromISR( xMessageBuffer, pvTxData, xDataLengthBytes, pxHigherPriorityTaskWoken ) xStreamBufferSendFromISR( ( StreamBufferHandle_t ) xMessageBuffer, pvTxData, xDataLengthBytes, pxHigherPriorityTaskWoken ) + +/** + * message_buffer.h + * +
+size_t xMessageBufferReceive( MessageBufferHandle_t xMessageBuffer,
+                              void *pvRxData,
+                              size_t xBufferLengthBytes,
+                              TickType_t xTicksToWait );
+
+ * + * Receives a discrete message from a message buffer. Messages can be of + * variable length and are copied out of the buffer. + * + * ***NOTE***: Uniquely among FreeRTOS objects, the stream buffer + * implementation (so also the message buffer implementation, as message buffers + * are built on top of stream buffers) assumes there is only one task or + * interrupt that will write to the buffer (the writer), and only one task or + * interrupt that will read from the buffer (the reader). It is safe for the + * writer and reader to be different tasks or interrupts, but, unlike other + * FreeRTOS objects, it is not safe to have multiple different writers or + * multiple different readers. If there are to be multiple different writers + * then the application writer must place each call to a writing API function + * (such as xMessageBufferSend()) inside a critical section and set the send + * block time to 0. Likewise, if there are to be multiple different readers + * then the application writer must place each call to a reading API function + * (such as xMessageBufferRead()) inside a critical section and set the receive + * block time to 0. + * + * Use xMessageBufferReceive() to read from a message buffer from a task. Use + * xMessageBufferReceiveFromISR() to read from a message buffer from an + * interrupt service routine (ISR). + * + * @param xMessageBuffer The handle of the message buffer from which a message + * is being received. + * + * @param pvRxData A pointer to the buffer into which the received message is + * to be copied. + * + * @param xBufferLengthBytes The length of the buffer pointed to by the pvRxData + * parameter. This sets the maximum length of the message that can be received. + * If xBufferLengthBytes is too small to hold the next message then the message + * will be left in the message buffer and 0 will be returned. + * + * @param xTicksToWait The maximum amount of time the task should remain in the + * Blocked state to wait for a message, should the message buffer be empty. + * xMessageBufferReceive() will return immediately if xTicksToWait is zero and + * the message buffer is empty. The block time is specified in tick periods, so + * the absolute time it represents is dependent on the tick frequency. The + * macro pdMS_TO_TICKS() can be used to convert a time specified in milliseconds + * into a time specified in ticks. Setting xTicksToWait to portMAX_DELAY will + * cause the task to wait indefinitely (without timing out), provided + * INCLUDE_vTaskSuspend is set to 1 in FreeRTOSConfig.h. Tasks do not use any + * CPU time when they are in the Blocked state. + * + * @return The length, in bytes, of the message read from the message buffer, if + * any. If xMessageBufferReceive() times out before a message became available + * then zero is returned. If the length of the message is greater than + * xBufferLengthBytes then the message will be left in the message buffer and + * zero is returned. + * + * Example use: +
+void vAFunction( MessageBuffer_t xMessageBuffer )
+{
+uint8_t ucRxData[ 20 ];
+size_t xReceivedBytes;
+const TickType_t xBlockTime = pdMS_TO_TICKS( 20 );
+
+    // Receive the next message from the message buffer.  Wait in the Blocked
+    // state (so not using any CPU processing time) for a maximum of 100ms for
+    // a message to become available.
+    xReceivedBytes = xMessageBufferReceive( xMessageBuffer,
+                                            ( void * ) ucRxData,
+                                            sizeof( ucRxData ),
+                                            xBlockTime );
+
+    if( xReceivedBytes > 0 )
+    {
+        // A ucRxData contains a message that is xReceivedBytes long.  Process
+        // the message here....
+    }
+}
+
+ * \defgroup xMessageBufferReceive xMessageBufferReceive + * \ingroup MessageBufferManagement + */ +#define xMessageBufferReceive( xMessageBuffer, pvRxData, xBufferLengthBytes, xTicksToWait ) xStreamBufferReceive( ( StreamBufferHandle_t ) xMessageBuffer, pvRxData, xBufferLengthBytes, xTicksToWait ) + + +/** + * message_buffer.h + * +
+size_t xMessageBufferReceiveFromISR( MessageBufferHandle_t xMessageBuffer,
+                                     void *pvRxData,
+                                     size_t xBufferLengthBytes,
+                                     BaseType_t *pxHigherPriorityTaskWoken );
+
+ * + * An interrupt safe version of the API function that receives a discrete + * message from a message buffer. Messages can be of variable length and are + * copied out of the buffer. + * + * ***NOTE***: Uniquely among FreeRTOS objects, the stream buffer + * implementation (so also the message buffer implementation, as message buffers + * are built on top of stream buffers) assumes there is only one task or + * interrupt that will write to the buffer (the writer), and only one task or + * interrupt that will read from the buffer (the reader). It is safe for the + * writer and reader to be different tasks or interrupts, but, unlike other + * FreeRTOS objects, it is not safe to have multiple different writers or + * multiple different readers. If there are to be multiple different writers + * then the application writer must place each call to a writing API function + * (such as xMessageBufferSend()) inside a critical section and set the send + * block time to 0. Likewise, if there are to be multiple different readers + * then the application writer must place each call to a reading API function + * (such as xMessageBufferRead()) inside a critical section and set the receive + * block time to 0. + * + * Use xMessageBufferReceive() to read from a message buffer from a task. Use + * xMessageBufferReceiveFromISR() to read from a message buffer from an + * interrupt service routine (ISR). + * + * @param xMessageBuffer The handle of the message buffer from which a message + * is being received. + * + * @param pvRxData A pointer to the buffer into which the received message is + * to be copied. + * + * @param xBufferLengthBytes The length of the buffer pointed to by the pvRxData + * parameter. This sets the maximum length of the message that can be received. + * If xBufferLengthBytes is too small to hold the next message then the message + * will be left in the message buffer and 0 will be returned. + * + * @param pxHigherPriorityTaskWoken It is possible that a message buffer will + * have a task blocked on it waiting for space to become available. Calling + * xMessageBufferReceiveFromISR() can make space available, and so cause a task + * that is waiting for space to leave the Blocked state. If calling + * xMessageBufferReceiveFromISR() causes a task to leave the Blocked state, and + * the unblocked task has a priority higher than the currently executing task + * (the task that was interrupted), then, internally, + * xMessageBufferReceiveFromISR() will set *pxHigherPriorityTaskWoken to pdTRUE. + * If xMessageBufferReceiveFromISR() sets this value to pdTRUE, then normally a + * context switch should be performed before the interrupt is exited. That will + * ensure the interrupt returns directly to the highest priority Ready state + * task. *pxHigherPriorityTaskWoken should be set to pdFALSE before it is + * passed into the function. See the code example below for an example. + * + * @return The length, in bytes, of the message read from the message buffer, if + * any. + * + * Example use: +
+// A message buffer that has already been created.
+MessageBuffer_t xMessageBuffer;
+
+void vAnInterruptServiceRoutine( void )
+{
+uint8_t ucRxData[ 20 ];
+size_t xReceivedBytes;
+BaseType_t xHigherPriorityTaskWoken = pdFALSE;  // Initialised to pdFALSE.
+
+    // Receive the next message from the message buffer.
+    xReceivedBytes = xMessageBufferReceiveFromISR( xMessageBuffer,
+                                                  ( void * ) ucRxData,
+                                                  sizeof( ucRxData ),
+                                                  &xHigherPriorityTaskWoken );
+
+    if( xReceivedBytes > 0 )
+    {
+        // A ucRxData contains a message that is xReceivedBytes long.  Process
+        // the message here....
+    }
+
+    // If xHigherPriorityTaskWoken was set to pdTRUE inside
+    // xMessageBufferReceiveFromISR() then a task that has a priority above the
+    // priority of the currently executing task was unblocked and a context
+    // switch should be performed to ensure the ISR returns to the unblocked
+    // task.  In most FreeRTOS ports this is done by simply passing
+    // xHigherPriorityTaskWoken into portYIELD_FROM_ISR(), which will test the
+    // variables value, and perform the context switch if necessary.  Check the
+    // documentation for the port in use for port specific instructions.
+    portYIELD_FROM_ISR( xHigherPriorityTaskWoken );
+}
+
+ * \defgroup xMessageBufferReceiveFromISR xMessageBufferReceiveFromISR + * \ingroup MessageBufferManagement + */ +#define xMessageBufferReceiveFromISR( xMessageBuffer, pvRxData, xBufferLengthBytes, pxHigherPriorityTaskWoken ) xStreamBufferReceiveFromISR( ( StreamBufferHandle_t ) xMessageBuffer, pvRxData, xBufferLengthBytes, pxHigherPriorityTaskWoken ) + +/** + * message_buffer.h + * +
+void vMessageBufferDelete( MessageBufferHandle_t xMessageBuffer );
+
+ * + * Deletes a message buffer that was previously created using a call to + * xMessageBufferCreate() or xMessageBufferCreateStatic(). If the message + * buffer was created using dynamic memory (that is, by xMessageBufferCreate()), + * then the allocated memory is freed. + * + * A message buffer handle must not be used after the message buffer has been + * deleted. + * + * @param xMessageBuffer The handle of the message buffer to be deleted. + * + */ +#define vMessageBufferDelete( xMessageBuffer ) vStreamBufferDelete( ( StreamBufferHandle_t ) xMessageBuffer ) + +/** + * message_buffer.h +
+BaseType_t xMessageBufferIsFull( MessageBufferHandle_t xMessageBuffer ) );
+
+ * + * Tests to see if a message buffer is full. A message buffer is full if it + * cannot accept any more messages, of any size, until space is made available + * by a message being removed from the message buffer. + * + * @param xMessageBuffer The handle of the message buffer being queried. + * + * @return If the message buffer referenced by xMessageBuffer is full then + * pdTRUE is returned. Otherwise pdFALSE is returned. + */ +#define xMessageBufferIsFull( xMessageBuffer ) xStreamBufferIsFull( ( StreamBufferHandle_t ) xMessageBuffer ) + +/** + * message_buffer.h +
+BaseType_t xMessageBufferIsEmpty( MessageBufferHandle_t xMessageBuffer ) );
+
+ * + * Tests to see if a message buffer is empty (does not contain any messages). + * + * @param xMessageBuffer The handle of the message buffer being queried. + * + * @return If the message buffer referenced by xMessageBuffer is empty then + * pdTRUE is returned. Otherwise pdFALSE is returned. + * + */ +#define xMessageBufferIsEmpty( xMessageBuffer ) xStreamBufferIsEmpty( ( StreamBufferHandle_t ) xMessageBuffer ) + +/** + * message_buffer.h +
+BaseType_t xMessageBufferReset( MessageBufferHandle_t xMessageBuffer );
+
+ * + * Resets a message buffer to its initial empty state, discarding any message it + * contained. + * + * A message buffer can only be reset if there are no tasks blocked on it. + * + * @param xMessageBuffer The handle of the message buffer being reset. + * + * @return If the message buffer was reset then pdPASS is returned. If the + * message buffer could not be reset because either there was a task blocked on + * the message queue to wait for space to become available, or to wait for a + * a message to be available, then pdFAIL is returned. + * + * \defgroup xMessageBufferReset xMessageBufferReset + * \ingroup MessageBufferManagement + */ +#define xMessageBufferReset( xMessageBuffer ) xStreamBufferReset( ( StreamBufferHandle_t ) xMessageBuffer ) + + +/** + * message_buffer.h +
+size_t xMessageBufferSpaceAvailable( MessageBufferHandle_t xMessageBuffer ) );
+
+ * Returns the number of bytes of free space in the message buffer. + * + * @param xMessageBuffer The handle of the message buffer being queried. + * + * @return The number of bytes that can be written to the message buffer before + * the message buffer would be full. When a message is written to the message + * buffer an additional sizeof( size_t ) bytes are also written to store the + * message's length. sizeof( size_t ) is typically 4 bytes on a 32-bit + * architecture, so if xMessageBufferSpacesAvailable() returns 10, then the size + * of the largest message that can be written to the message buffer is 6 bytes. + * + * \defgroup xMessageBufferSpaceAvailable xMessageBufferSpaceAvailable + * \ingroup MessageBufferManagement + */ +#define xMessageBufferSpaceAvailable( xMessageBuffer ) xStreamBufferSpacesAvailable( ( StreamBufferHandle_t ) xMessageBuffer ) +#define xMessageBufferSpacesAvailable( xMessageBuffer ) xStreamBufferSpacesAvailable( ( StreamBufferHandle_t ) xMessageBuffer ) /* Corrects typo in original macro name. */ + +/** + * message_buffer.h +
+ size_t xMessageBufferNextLengthBytes( MessageBufferHandle_t xMessageBuffer ) );
+ 
+ * Returns the length (in bytes) of the next message in a message buffer. + * Useful if xMessageBufferReceive() returned 0 because the size of the buffer + * passed into xMessageBufferReceive() was too small to hold the next message. + * + * @param xMessageBuffer The handle of the message buffer being queried. + * + * @return The length (in bytes) of the next message in the message buffer, or 0 + * if the message buffer is empty. + * + * \defgroup xMessageBufferNextLengthBytes xMessageBufferNextLengthBytes + * \ingroup MessageBufferManagement + */ +#define xMessageBufferNextLengthBytes( xMessageBuffer ) xStreamBufferNextMessageLengthBytes( ( StreamBufferHandle_t ) xMessageBuffer ) PRIVILEGED_FUNCTION; + +/** + * message_buffer.h + * +
+BaseType_t xMessageBufferSendCompletedFromISR( MessageBufferHandle_t xStreamBuffer, BaseType_t *pxHigherPriorityTaskWoken );
+
+ * + * For advanced users only. + * + * The sbSEND_COMPLETED() macro is called from within the FreeRTOS APIs when + * data is sent to a message buffer or stream buffer. If there was a task that + * was blocked on the message or stream buffer waiting for data to arrive then + * the sbSEND_COMPLETED() macro sends a notification to the task to remove it + * from the Blocked state. xMessageBufferSendCompletedFromISR() does the same + * thing. It is provided to enable application writers to implement their own + * version of sbSEND_COMPLETED(), and MUST NOT BE USED AT ANY OTHER TIME. + * + * See the example implemented in FreeRTOS/Demo/Minimal/MessageBufferAMP.c for + * additional information. + * + * @param xStreamBuffer The handle of the stream buffer to which data was + * written. + * + * @param pxHigherPriorityTaskWoken *pxHigherPriorityTaskWoken should be + * initialised to pdFALSE before it is passed into + * xMessageBufferSendCompletedFromISR(). If calling + * xMessageBufferSendCompletedFromISR() removes a task from the Blocked state, + * and the task has a priority above the priority of the currently running task, + * then *pxHigherPriorityTaskWoken will get set to pdTRUE indicating that a + * context switch should be performed before exiting the ISR. + * + * @return If a task was removed from the Blocked state then pdTRUE is returned. + * Otherwise pdFALSE is returned. + * + * \defgroup xMessageBufferSendCompletedFromISR xMessageBufferSendCompletedFromISR + * \ingroup StreamBufferManagement + */ +#define xMessageBufferSendCompletedFromISR( xMessageBuffer, pxHigherPriorityTaskWoken ) xStreamBufferSendCompletedFromISR( ( StreamBufferHandle_t ) xMessageBuffer, pxHigherPriorityTaskWoken ) + +/** + * message_buffer.h + * +
+BaseType_t xMessageBufferReceiveCompletedFromISR( MessageBufferHandle_t xStreamBuffer, BaseType_t *pxHigherPriorityTaskWoken );
+
+ * + * For advanced users only. + * + * The sbRECEIVE_COMPLETED() macro is called from within the FreeRTOS APIs when + * data is read out of a message buffer or stream buffer. If there was a task + * that was blocked on the message or stream buffer waiting for data to arrive + * then the sbRECEIVE_COMPLETED() macro sends a notification to the task to + * remove it from the Blocked state. xMessageBufferReceiveCompletedFromISR() + * does the same thing. It is provided to enable application writers to + * implement their own version of sbRECEIVE_COMPLETED(), and MUST NOT BE USED AT + * ANY OTHER TIME. + * + * See the example implemented in FreeRTOS/Demo/Minimal/MessageBufferAMP.c for + * additional information. + * + * @param xStreamBuffer The handle of the stream buffer from which data was + * read. + * + * @param pxHigherPriorityTaskWoken *pxHigherPriorityTaskWoken should be + * initialised to pdFALSE before it is passed into + * xMessageBufferReceiveCompletedFromISR(). If calling + * xMessageBufferReceiveCompletedFromISR() removes a task from the Blocked state, + * and the task has a priority above the priority of the currently running task, + * then *pxHigherPriorityTaskWoken will get set to pdTRUE indicating that a + * context switch should be performed before exiting the ISR. + * + * @return If a task was removed from the Blocked state then pdTRUE is returned. + * Otherwise pdFALSE is returned. + * + * \defgroup xMessageBufferReceiveCompletedFromISR xMessageBufferReceiveCompletedFromISR + * \ingroup StreamBufferManagement + */ +#define xMessageBufferReceiveCompletedFromISR( xMessageBuffer, pxHigherPriorityTaskWoken ) xStreamBufferReceiveCompletedFromISR( ( StreamBufferHandle_t ) xMessageBuffer, pxHigherPriorityTaskWoken ) + +#if defined( __cplusplus ) +} /* extern "C" */ +#endif + +#endif /* !defined( FREERTOS_MESSAGE_BUFFER_H ) */ diff --git a/firmware/Middlewares/Third_Party/FreeRTOS/Source/include/mpu_prototypes.h b/firmware/Middlewares/Third_Party/FreeRTOS/Source/include/mpu_prototypes.h new file mode 100644 index 0000000..a21b7a6 --- /dev/null +++ b/firmware/Middlewares/Third_Party/FreeRTOS/Source/include/mpu_prototypes.h @@ -0,0 +1,160 @@ +/* + * FreeRTOS Kernel V10.3.1 + * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * http://www.FreeRTOS.org + * http://aws.amazon.com/freertos + * + * 1 tab == 4 spaces! + */ + +/* + * When the MPU is used the standard (non MPU) API functions are mapped to + * equivalents that start "MPU_", the prototypes for which are defined in this + * header files. This will cause the application code to call the MPU_ version + * which wraps the non-MPU version with privilege promoting then demoting code, + * so the kernel code always runs will full privileges. + */ + + +#ifndef MPU_PROTOTYPES_H +#define MPU_PROTOTYPES_H + +/* MPU versions of tasks.h API functions. */ +BaseType_t MPU_xTaskCreate( TaskFunction_t pxTaskCode, const char * const pcName, const uint16_t usStackDepth, void * const pvParameters, UBaseType_t uxPriority, TaskHandle_t * const pxCreatedTask ) FREERTOS_SYSTEM_CALL; +TaskHandle_t MPU_xTaskCreateStatic( TaskFunction_t pxTaskCode, const char * const pcName, const uint32_t ulStackDepth, void * const pvParameters, UBaseType_t uxPriority, StackType_t * const puxStackBuffer, StaticTask_t * const pxTaskBuffer ) FREERTOS_SYSTEM_CALL; +BaseType_t MPU_xTaskCreateRestricted( const TaskParameters_t * const pxTaskDefinition, TaskHandle_t *pxCreatedTask ) FREERTOS_SYSTEM_CALL; +BaseType_t MPU_xTaskCreateRestrictedStatic( const TaskParameters_t * const pxTaskDefinition, TaskHandle_t *pxCreatedTask ) FREERTOS_SYSTEM_CALL; +void MPU_vTaskAllocateMPURegions( TaskHandle_t xTask, const MemoryRegion_t * const pxRegions ) FREERTOS_SYSTEM_CALL; +void MPU_vTaskDelete( TaskHandle_t xTaskToDelete ) FREERTOS_SYSTEM_CALL; +void MPU_vTaskDelay( const TickType_t xTicksToDelay ) FREERTOS_SYSTEM_CALL; +void MPU_vTaskDelayUntil( TickType_t * const pxPreviousWakeTime, const TickType_t xTimeIncrement ) FREERTOS_SYSTEM_CALL; +BaseType_t MPU_xTaskAbortDelay( TaskHandle_t xTask ) FREERTOS_SYSTEM_CALL; +UBaseType_t MPU_uxTaskPriorityGet( const TaskHandle_t xTask ) FREERTOS_SYSTEM_CALL; +eTaskState MPU_eTaskGetState( TaskHandle_t xTask ) FREERTOS_SYSTEM_CALL; +void MPU_vTaskGetInfo( TaskHandle_t xTask, TaskStatus_t *pxTaskStatus, BaseType_t xGetFreeStackSpace, eTaskState eState ) FREERTOS_SYSTEM_CALL; +void MPU_vTaskPrioritySet( TaskHandle_t xTask, UBaseType_t uxNewPriority ) FREERTOS_SYSTEM_CALL; +void MPU_vTaskSuspend( TaskHandle_t xTaskToSuspend ) FREERTOS_SYSTEM_CALL; +void MPU_vTaskResume( TaskHandle_t xTaskToResume ) FREERTOS_SYSTEM_CALL; +void MPU_vTaskStartScheduler( void ) FREERTOS_SYSTEM_CALL; +void MPU_vTaskSuspendAll( void ) FREERTOS_SYSTEM_CALL; +BaseType_t MPU_xTaskResumeAll( void ) FREERTOS_SYSTEM_CALL; +TickType_t MPU_xTaskGetTickCount( void ) FREERTOS_SYSTEM_CALL; +UBaseType_t MPU_uxTaskGetNumberOfTasks( void ) FREERTOS_SYSTEM_CALL; +char * MPU_pcTaskGetName( TaskHandle_t xTaskToQuery ) FREERTOS_SYSTEM_CALL; +TaskHandle_t MPU_xTaskGetHandle( const char *pcNameToQuery ) FREERTOS_SYSTEM_CALL; +UBaseType_t MPU_uxTaskGetStackHighWaterMark( TaskHandle_t xTask ) FREERTOS_SYSTEM_CALL; +configSTACK_DEPTH_TYPE MPU_uxTaskGetStackHighWaterMark2( TaskHandle_t xTask ) FREERTOS_SYSTEM_CALL; +void MPU_vTaskSetApplicationTaskTag( TaskHandle_t xTask, TaskHookFunction_t pxHookFunction ) FREERTOS_SYSTEM_CALL; +TaskHookFunction_t MPU_xTaskGetApplicationTaskTag( TaskHandle_t xTask ) FREERTOS_SYSTEM_CALL; +void MPU_vTaskSetThreadLocalStoragePointer( TaskHandle_t xTaskToSet, BaseType_t xIndex, void *pvValue ) FREERTOS_SYSTEM_CALL; +void * MPU_pvTaskGetThreadLocalStoragePointer( TaskHandle_t xTaskToQuery, BaseType_t xIndex ) FREERTOS_SYSTEM_CALL; +BaseType_t MPU_xTaskCallApplicationTaskHook( TaskHandle_t xTask, void *pvParameter ) FREERTOS_SYSTEM_CALL; +TaskHandle_t MPU_xTaskGetIdleTaskHandle( void ) FREERTOS_SYSTEM_CALL; +UBaseType_t MPU_uxTaskGetSystemState( TaskStatus_t * const pxTaskStatusArray, const UBaseType_t uxArraySize, uint32_t * const pulTotalRunTime ) FREERTOS_SYSTEM_CALL; +uint32_t MPU_ulTaskGetIdleRunTimeCounter( void ) FREERTOS_SYSTEM_CALL; +void MPU_vTaskList( char * pcWriteBuffer ) FREERTOS_SYSTEM_CALL; +void MPU_vTaskGetRunTimeStats( char *pcWriteBuffer ) FREERTOS_SYSTEM_CALL; +BaseType_t MPU_xTaskGenericNotify( TaskHandle_t xTaskToNotify, uint32_t ulValue, eNotifyAction eAction, uint32_t *pulPreviousNotificationValue ) FREERTOS_SYSTEM_CALL; +BaseType_t MPU_xTaskNotifyWait( uint32_t ulBitsToClearOnEntry, uint32_t ulBitsToClearOnExit, uint32_t *pulNotificationValue, TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL; +uint32_t MPU_ulTaskNotifyTake( BaseType_t xClearCountOnExit, TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL; +BaseType_t MPU_xTaskNotifyStateClear( TaskHandle_t xTask ) FREERTOS_SYSTEM_CALL; +uint32_t MPU_ulTaskNotifyValueClear( TaskHandle_t xTask, uint32_t ulBitsToClear ) FREERTOS_SYSTEM_CALL; +BaseType_t MPU_xTaskIncrementTick( void ) FREERTOS_SYSTEM_CALL; +TaskHandle_t MPU_xTaskGetCurrentTaskHandle( void ) FREERTOS_SYSTEM_CALL; +void MPU_vTaskSetTimeOutState( TimeOut_t * const pxTimeOut ) FREERTOS_SYSTEM_CALL; +BaseType_t MPU_xTaskCheckForTimeOut( TimeOut_t * const pxTimeOut, TickType_t * const pxTicksToWait ) FREERTOS_SYSTEM_CALL; +void MPU_vTaskMissedYield( void ) FREERTOS_SYSTEM_CALL; +BaseType_t MPU_xTaskGetSchedulerState( void ) FREERTOS_SYSTEM_CALL; +BaseType_t MPU_xTaskCatchUpTicks( TickType_t xTicksToCatchUp ) FREERTOS_SYSTEM_CALL; + +/* MPU versions of queue.h API functions. */ +BaseType_t MPU_xQueueGenericSend( QueueHandle_t xQueue, const void * const pvItemToQueue, TickType_t xTicksToWait, const BaseType_t xCopyPosition ) FREERTOS_SYSTEM_CALL; +BaseType_t MPU_xQueueReceive( QueueHandle_t xQueue, void * const pvBuffer, TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL; +BaseType_t MPU_xQueuePeek( QueueHandle_t xQueue, void * const pvBuffer, TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL; +BaseType_t MPU_xQueueSemaphoreTake( QueueHandle_t xQueue, TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL; +UBaseType_t MPU_uxQueueMessagesWaiting( const QueueHandle_t xQueue ) FREERTOS_SYSTEM_CALL; +UBaseType_t MPU_uxQueueSpacesAvailable( const QueueHandle_t xQueue ) FREERTOS_SYSTEM_CALL; +void MPU_vQueueDelete( QueueHandle_t xQueue ) FREERTOS_SYSTEM_CALL; +QueueHandle_t MPU_xQueueCreateMutex( const uint8_t ucQueueType ) FREERTOS_SYSTEM_CALL; +QueueHandle_t MPU_xQueueCreateMutexStatic( const uint8_t ucQueueType, StaticQueue_t *pxStaticQueue ) FREERTOS_SYSTEM_CALL; +QueueHandle_t MPU_xQueueCreateCountingSemaphore( const UBaseType_t uxMaxCount, const UBaseType_t uxInitialCount ) FREERTOS_SYSTEM_CALL; +QueueHandle_t MPU_xQueueCreateCountingSemaphoreStatic( const UBaseType_t uxMaxCount, const UBaseType_t uxInitialCount, StaticQueue_t *pxStaticQueue ) FREERTOS_SYSTEM_CALL; +TaskHandle_t MPU_xQueueGetMutexHolder( QueueHandle_t xSemaphore ) FREERTOS_SYSTEM_CALL; +BaseType_t MPU_xQueueTakeMutexRecursive( QueueHandle_t xMutex, TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL; +BaseType_t MPU_xQueueGiveMutexRecursive( QueueHandle_t pxMutex ) FREERTOS_SYSTEM_CALL; +void MPU_vQueueAddToRegistry( QueueHandle_t xQueue, const char *pcName ) FREERTOS_SYSTEM_CALL; +void MPU_vQueueUnregisterQueue( QueueHandle_t xQueue ) FREERTOS_SYSTEM_CALL; +const char * MPU_pcQueueGetName( QueueHandle_t xQueue ) FREERTOS_SYSTEM_CALL; +QueueHandle_t MPU_xQueueGenericCreate( const UBaseType_t uxQueueLength, const UBaseType_t uxItemSize, const uint8_t ucQueueType ) FREERTOS_SYSTEM_CALL; +QueueHandle_t MPU_xQueueGenericCreateStatic( const UBaseType_t uxQueueLength, const UBaseType_t uxItemSize, uint8_t *pucQueueStorage, StaticQueue_t *pxStaticQueue, const uint8_t ucQueueType ) FREERTOS_SYSTEM_CALL; +QueueSetHandle_t MPU_xQueueCreateSet( const UBaseType_t uxEventQueueLength ) FREERTOS_SYSTEM_CALL; +BaseType_t MPU_xQueueAddToSet( QueueSetMemberHandle_t xQueueOrSemaphore, QueueSetHandle_t xQueueSet ) FREERTOS_SYSTEM_CALL; +BaseType_t MPU_xQueueRemoveFromSet( QueueSetMemberHandle_t xQueueOrSemaphore, QueueSetHandle_t xQueueSet ) FREERTOS_SYSTEM_CALL; +QueueSetMemberHandle_t MPU_xQueueSelectFromSet( QueueSetHandle_t xQueueSet, const TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL; +BaseType_t MPU_xQueueGenericReset( QueueHandle_t xQueue, BaseType_t xNewQueue ) FREERTOS_SYSTEM_CALL; +void MPU_vQueueSetQueueNumber( QueueHandle_t xQueue, UBaseType_t uxQueueNumber ) FREERTOS_SYSTEM_CALL; +UBaseType_t MPU_uxQueueGetQueueNumber( QueueHandle_t xQueue ) FREERTOS_SYSTEM_CALL; +uint8_t MPU_ucQueueGetQueueType( QueueHandle_t xQueue ) FREERTOS_SYSTEM_CALL; + +/* MPU versions of timers.h API functions. */ +TimerHandle_t MPU_xTimerCreate( const char * const pcTimerName, const TickType_t xTimerPeriodInTicks, const UBaseType_t uxAutoReload, void * const pvTimerID, TimerCallbackFunction_t pxCallbackFunction ) FREERTOS_SYSTEM_CALL; +TimerHandle_t MPU_xTimerCreateStatic( const char * const pcTimerName, const TickType_t xTimerPeriodInTicks, const UBaseType_t uxAutoReload, void * const pvTimerID, TimerCallbackFunction_t pxCallbackFunction, StaticTimer_t *pxTimerBuffer ) FREERTOS_SYSTEM_CALL; +void * MPU_pvTimerGetTimerID( const TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL; +void MPU_vTimerSetTimerID( TimerHandle_t xTimer, void *pvNewID ) FREERTOS_SYSTEM_CALL; +BaseType_t MPU_xTimerIsTimerActive( TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL; +TaskHandle_t MPU_xTimerGetTimerDaemonTaskHandle( void ) FREERTOS_SYSTEM_CALL; +BaseType_t MPU_xTimerPendFunctionCall( PendedFunction_t xFunctionToPend, void *pvParameter1, uint32_t ulParameter2, TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL; +const char * MPU_pcTimerGetName( TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL; +void MPU_vTimerSetReloadMode( TimerHandle_t xTimer, const UBaseType_t uxAutoReload ) FREERTOS_SYSTEM_CALL; +UBaseType_t MPU_uxTimerGetReloadMode( TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL; +TickType_t MPU_xTimerGetPeriod( TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL; +TickType_t MPU_xTimerGetExpiryTime( TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL; +BaseType_t MPU_xTimerCreateTimerTask( void ) FREERTOS_SYSTEM_CALL; +BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer, const BaseType_t xCommandID, const TickType_t xOptionalValue, BaseType_t * const pxHigherPriorityTaskWoken, const TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL; + +/* MPU versions of event_group.h API functions. */ +EventGroupHandle_t MPU_xEventGroupCreate( void ) FREERTOS_SYSTEM_CALL; +EventGroupHandle_t MPU_xEventGroupCreateStatic( StaticEventGroup_t *pxEventGroupBuffer ) FREERTOS_SYSTEM_CALL; +EventBits_t MPU_xEventGroupWaitBits( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToWaitFor, const BaseType_t xClearOnExit, const BaseType_t xWaitForAllBits, TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL; +EventBits_t MPU_xEventGroupClearBits( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToClear ) FREERTOS_SYSTEM_CALL; +EventBits_t MPU_xEventGroupSetBits( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToSet ) FREERTOS_SYSTEM_CALL; +EventBits_t MPU_xEventGroupSync( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToSet, const EventBits_t uxBitsToWaitFor, TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL; +void MPU_vEventGroupDelete( EventGroupHandle_t xEventGroup ) FREERTOS_SYSTEM_CALL; +UBaseType_t MPU_uxEventGroupGetNumber( void* xEventGroup ) FREERTOS_SYSTEM_CALL; + +/* MPU versions of message/stream_buffer.h API functions. */ +size_t MPU_xStreamBufferSend( StreamBufferHandle_t xStreamBuffer, const void *pvTxData, size_t xDataLengthBytes, TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL; +size_t MPU_xStreamBufferReceive( StreamBufferHandle_t xStreamBuffer, void *pvRxData, size_t xBufferLengthBytes, TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL; +size_t MPU_xStreamBufferNextMessageLengthBytes( StreamBufferHandle_t xStreamBuffer ) FREERTOS_SYSTEM_CALL; +void MPU_vStreamBufferDelete( StreamBufferHandle_t xStreamBuffer ) FREERTOS_SYSTEM_CALL; +BaseType_t MPU_xStreamBufferIsFull( StreamBufferHandle_t xStreamBuffer ) FREERTOS_SYSTEM_CALL; +BaseType_t MPU_xStreamBufferIsEmpty( StreamBufferHandle_t xStreamBuffer ) FREERTOS_SYSTEM_CALL; +BaseType_t MPU_xStreamBufferReset( StreamBufferHandle_t xStreamBuffer ) FREERTOS_SYSTEM_CALL; +size_t MPU_xStreamBufferSpacesAvailable( StreamBufferHandle_t xStreamBuffer ) FREERTOS_SYSTEM_CALL; +size_t MPU_xStreamBufferBytesAvailable( StreamBufferHandle_t xStreamBuffer ) FREERTOS_SYSTEM_CALL; +BaseType_t MPU_xStreamBufferSetTriggerLevel( StreamBufferHandle_t xStreamBuffer, size_t xTriggerLevel ) FREERTOS_SYSTEM_CALL; +StreamBufferHandle_t MPU_xStreamBufferGenericCreate( size_t xBufferSizeBytes, size_t xTriggerLevelBytes, BaseType_t xIsMessageBuffer ) FREERTOS_SYSTEM_CALL; +StreamBufferHandle_t MPU_xStreamBufferGenericCreateStatic( size_t xBufferSizeBytes, size_t xTriggerLevelBytes, BaseType_t xIsMessageBuffer, uint8_t * const pucStreamBufferStorageArea, StaticStreamBuffer_t * const pxStaticStreamBuffer ) FREERTOS_SYSTEM_CALL; + + + +#endif /* MPU_PROTOTYPES_H */ + diff --git a/firmware/Middlewares/Third_Party/FreeRTOS/Source/include/mpu_wrappers.h b/firmware/Middlewares/Third_Party/FreeRTOS/Source/include/mpu_wrappers.h new file mode 100644 index 0000000..5f63d4f --- /dev/null +++ b/firmware/Middlewares/Third_Party/FreeRTOS/Source/include/mpu_wrappers.h @@ -0,0 +1,189 @@ +/* + * FreeRTOS Kernel V10.3.1 + * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * http://www.FreeRTOS.org + * http://aws.amazon.com/freertos + * + * 1 tab == 4 spaces! + */ + +#ifndef MPU_WRAPPERS_H +#define MPU_WRAPPERS_H + +/* This file redefines API functions to be called through a wrapper macro, but +only for ports that are using the MPU. */ +#ifdef portUSING_MPU_WRAPPERS + + /* MPU_WRAPPERS_INCLUDED_FROM_API_FILE will be defined when this file is + included from queue.c or task.c to prevent it from having an effect within + those files. */ + #ifndef MPU_WRAPPERS_INCLUDED_FROM_API_FILE + + /* + * Map standard (non MPU) API functions to equivalents that start + * "MPU_". This will cause the application code to call the MPU_ + * version, which wraps the non-MPU version with privilege promoting + * then demoting code, so the kernel code always runs will full + * privileges. + */ + + /* Map standard tasks.h API functions to the MPU equivalents. */ + #define xTaskCreate MPU_xTaskCreate + #define xTaskCreateStatic MPU_xTaskCreateStatic + #define xTaskCreateRestricted MPU_xTaskCreateRestricted + #define vTaskAllocateMPURegions MPU_vTaskAllocateMPURegions + #define vTaskDelete MPU_vTaskDelete + #define vTaskDelay MPU_vTaskDelay + #define vTaskDelayUntil MPU_vTaskDelayUntil + #define xTaskAbortDelay MPU_xTaskAbortDelay + #define uxTaskPriorityGet MPU_uxTaskPriorityGet + #define eTaskGetState MPU_eTaskGetState + #define vTaskGetInfo MPU_vTaskGetInfo + #define vTaskPrioritySet MPU_vTaskPrioritySet + #define vTaskSuspend MPU_vTaskSuspend + #define vTaskResume MPU_vTaskResume + #define vTaskSuspendAll MPU_vTaskSuspendAll + #define xTaskResumeAll MPU_xTaskResumeAll + #define xTaskGetTickCount MPU_xTaskGetTickCount + #define uxTaskGetNumberOfTasks MPU_uxTaskGetNumberOfTasks + #define pcTaskGetName MPU_pcTaskGetName + #define xTaskGetHandle MPU_xTaskGetHandle + #define uxTaskGetStackHighWaterMark MPU_uxTaskGetStackHighWaterMark + #define uxTaskGetStackHighWaterMark2 MPU_uxTaskGetStackHighWaterMark2 + #define vTaskSetApplicationTaskTag MPU_vTaskSetApplicationTaskTag + #define xTaskGetApplicationTaskTag MPU_xTaskGetApplicationTaskTag + #define vTaskSetThreadLocalStoragePointer MPU_vTaskSetThreadLocalStoragePointer + #define pvTaskGetThreadLocalStoragePointer MPU_pvTaskGetThreadLocalStoragePointer + #define xTaskCallApplicationTaskHook MPU_xTaskCallApplicationTaskHook + #define xTaskGetIdleTaskHandle MPU_xTaskGetIdleTaskHandle + #define uxTaskGetSystemState MPU_uxTaskGetSystemState + #define vTaskList MPU_vTaskList + #define vTaskGetRunTimeStats MPU_vTaskGetRunTimeStats + #define ulTaskGetIdleRunTimeCounter MPU_ulTaskGetIdleRunTimeCounter + #define xTaskGenericNotify MPU_xTaskGenericNotify + #define xTaskNotifyWait MPU_xTaskNotifyWait + #define ulTaskNotifyTake MPU_ulTaskNotifyTake + #define xTaskNotifyStateClear MPU_xTaskNotifyStateClear + #define ulTaskNotifyValueClear MPU_ulTaskNotifyValueClear + #define xTaskCatchUpTicks MPU_xTaskCatchUpTicks + + #define xTaskGetCurrentTaskHandle MPU_xTaskGetCurrentTaskHandle + #define vTaskSetTimeOutState MPU_vTaskSetTimeOutState + #define xTaskCheckForTimeOut MPU_xTaskCheckForTimeOut + #define xTaskGetSchedulerState MPU_xTaskGetSchedulerState + + /* Map standard queue.h API functions to the MPU equivalents. */ + #define xQueueGenericSend MPU_xQueueGenericSend + #define xQueueReceive MPU_xQueueReceive + #define xQueuePeek MPU_xQueuePeek + #define xQueueSemaphoreTake MPU_xQueueSemaphoreTake + #define uxQueueMessagesWaiting MPU_uxQueueMessagesWaiting + #define uxQueueSpacesAvailable MPU_uxQueueSpacesAvailable + #define vQueueDelete MPU_vQueueDelete + #define xQueueCreateMutex MPU_xQueueCreateMutex + #define xQueueCreateMutexStatic MPU_xQueueCreateMutexStatic + #define xQueueCreateCountingSemaphore MPU_xQueueCreateCountingSemaphore + #define xQueueCreateCountingSemaphoreStatic MPU_xQueueCreateCountingSemaphoreStatic + #define xQueueGetMutexHolder MPU_xQueueGetMutexHolder + #define xQueueTakeMutexRecursive MPU_xQueueTakeMutexRecursive + #define xQueueGiveMutexRecursive MPU_xQueueGiveMutexRecursive + #define xQueueGenericCreate MPU_xQueueGenericCreate + #define xQueueGenericCreateStatic MPU_xQueueGenericCreateStatic + #define xQueueCreateSet MPU_xQueueCreateSet + #define xQueueAddToSet MPU_xQueueAddToSet + #define xQueueRemoveFromSet MPU_xQueueRemoveFromSet + #define xQueueSelectFromSet MPU_xQueueSelectFromSet + #define xQueueGenericReset MPU_xQueueGenericReset + + #if( configQUEUE_REGISTRY_SIZE > 0 ) + #define vQueueAddToRegistry MPU_vQueueAddToRegistry + #define vQueueUnregisterQueue MPU_vQueueUnregisterQueue + #define pcQueueGetName MPU_pcQueueGetName + #endif + + /* Map standard timer.h API functions to the MPU equivalents. */ + #define xTimerCreate MPU_xTimerCreate + #define xTimerCreateStatic MPU_xTimerCreateStatic + #define pvTimerGetTimerID MPU_pvTimerGetTimerID + #define vTimerSetTimerID MPU_vTimerSetTimerID + #define xTimerIsTimerActive MPU_xTimerIsTimerActive + #define xTimerGetTimerDaemonTaskHandle MPU_xTimerGetTimerDaemonTaskHandle + #define xTimerPendFunctionCall MPU_xTimerPendFunctionCall + #define pcTimerGetName MPU_pcTimerGetName + #define vTimerSetReloadMode MPU_vTimerSetReloadMode + #define uxTimerGetReloadMode MPU_uxTimerGetReloadMode + #define xTimerGetPeriod MPU_xTimerGetPeriod + #define xTimerGetExpiryTime MPU_xTimerGetExpiryTime + #define xTimerGenericCommand MPU_xTimerGenericCommand + + /* Map standard event_group.h API functions to the MPU equivalents. */ + #define xEventGroupCreate MPU_xEventGroupCreate + #define xEventGroupCreateStatic MPU_xEventGroupCreateStatic + #define xEventGroupWaitBits MPU_xEventGroupWaitBits + #define xEventGroupClearBits MPU_xEventGroupClearBits + #define xEventGroupSetBits MPU_xEventGroupSetBits + #define xEventGroupSync MPU_xEventGroupSync + #define vEventGroupDelete MPU_vEventGroupDelete + + /* Map standard message/stream_buffer.h API functions to the MPU + equivalents. */ + #define xStreamBufferSend MPU_xStreamBufferSend + #define xStreamBufferReceive MPU_xStreamBufferReceive + #define xStreamBufferNextMessageLengthBytes MPU_xStreamBufferNextMessageLengthBytes + #define vStreamBufferDelete MPU_vStreamBufferDelete + #define xStreamBufferIsFull MPU_xStreamBufferIsFull + #define xStreamBufferIsEmpty MPU_xStreamBufferIsEmpty + #define xStreamBufferReset MPU_xStreamBufferReset + #define xStreamBufferSpacesAvailable MPU_xStreamBufferSpacesAvailable + #define xStreamBufferBytesAvailable MPU_xStreamBufferBytesAvailable + #define xStreamBufferSetTriggerLevel MPU_xStreamBufferSetTriggerLevel + #define xStreamBufferGenericCreate MPU_xStreamBufferGenericCreate + #define xStreamBufferGenericCreateStatic MPU_xStreamBufferGenericCreateStatic + + + /* Remove the privileged function macro, but keep the PRIVILEGED_DATA + macro so applications can place data in privileged access sections + (useful when using statically allocated objects). */ + #define PRIVILEGED_FUNCTION + #define PRIVILEGED_DATA __attribute__((section("privileged_data"))) + #define FREERTOS_SYSTEM_CALL + + #else /* MPU_WRAPPERS_INCLUDED_FROM_API_FILE */ + + /* Ensure API functions go in the privileged execution section. */ + #define PRIVILEGED_FUNCTION __attribute__((section("privileged_functions"))) + #define PRIVILEGED_DATA __attribute__((section("privileged_data"))) + #define FREERTOS_SYSTEM_CALL __attribute__((section( "freertos_system_calls"))) + + #endif /* MPU_WRAPPERS_INCLUDED_FROM_API_FILE */ + +#else /* portUSING_MPU_WRAPPERS */ + + #define PRIVILEGED_FUNCTION + #define PRIVILEGED_DATA + #define FREERTOS_SYSTEM_CALL + #define portUSING_MPU_WRAPPERS 0 + +#endif /* portUSING_MPU_WRAPPERS */ + + +#endif /* MPU_WRAPPERS_H */ + diff --git a/firmware/Middlewares/Third_Party/FreeRTOS/Source/include/portable.h b/firmware/Middlewares/Third_Party/FreeRTOS/Source/include/portable.h new file mode 100644 index 0000000..a2099c3 --- /dev/null +++ b/firmware/Middlewares/Third_Party/FreeRTOS/Source/include/portable.h @@ -0,0 +1,199 @@ +/* + * FreeRTOS Kernel V10.3.1 + * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * http://www.FreeRTOS.org + * http://aws.amazon.com/freertos + * + * 1 tab == 4 spaces! + */ + +/*----------------------------------------------------------- + * Portable layer API. Each function must be defined for each port. + *----------------------------------------------------------*/ + +#ifndef PORTABLE_H +#define PORTABLE_H + +/* Each FreeRTOS port has a unique portmacro.h header file. Originally a +pre-processor definition was used to ensure the pre-processor found the correct +portmacro.h file for the port being used. That scheme was deprecated in favour +of setting the compiler's include path such that it found the correct +portmacro.h file - removing the need for the constant and allowing the +portmacro.h file to be located anywhere in relation to the port being used. +Purely for reasons of backward compatibility the old method is still valid, but +to make it clear that new projects should not use it, support for the port +specific constants has been moved into the deprecated_definitions.h header +file. */ +#include "deprecated_definitions.h" + +/* If portENTER_CRITICAL is not defined then including deprecated_definitions.h +did not result in a portmacro.h header file being included - and it should be +included here. In this case the path to the correct portmacro.h header file +must be set in the compiler's include path. */ +#ifndef portENTER_CRITICAL + #include "portmacro.h" +#endif + +#if portBYTE_ALIGNMENT == 32 + #define portBYTE_ALIGNMENT_MASK ( 0x001f ) +#endif + +#if portBYTE_ALIGNMENT == 16 + #define portBYTE_ALIGNMENT_MASK ( 0x000f ) +#endif + +#if portBYTE_ALIGNMENT == 8 + #define portBYTE_ALIGNMENT_MASK ( 0x0007 ) +#endif + +#if portBYTE_ALIGNMENT == 4 + #define portBYTE_ALIGNMENT_MASK ( 0x0003 ) +#endif + +#if portBYTE_ALIGNMENT == 2 + #define portBYTE_ALIGNMENT_MASK ( 0x0001 ) +#endif + +#if portBYTE_ALIGNMENT == 1 + #define portBYTE_ALIGNMENT_MASK ( 0x0000 ) +#endif + +#ifndef portBYTE_ALIGNMENT_MASK + #error "Invalid portBYTE_ALIGNMENT definition" +#endif + +#ifndef portNUM_CONFIGURABLE_REGIONS + #define portNUM_CONFIGURABLE_REGIONS 1 +#endif + +#ifndef portHAS_STACK_OVERFLOW_CHECKING + #define portHAS_STACK_OVERFLOW_CHECKING 0 +#endif + +#ifndef portARCH_NAME + #define portARCH_NAME NULL +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#include "mpu_wrappers.h" + +/* + * Setup the stack of a new task so it is ready to be placed under the + * scheduler control. The registers have to be placed on the stack in + * the order that the port expects to find them. + * + */ +#if( portUSING_MPU_WRAPPERS == 1 ) + #if( portHAS_STACK_OVERFLOW_CHECKING == 1 ) + StackType_t *pxPortInitialiseStack( StackType_t *pxTopOfStack, StackType_t *pxEndOfStack, TaskFunction_t pxCode, void *pvParameters, BaseType_t xRunPrivileged ) PRIVILEGED_FUNCTION; + #else + StackType_t *pxPortInitialiseStack( StackType_t *pxTopOfStack, TaskFunction_t pxCode, void *pvParameters, BaseType_t xRunPrivileged ) PRIVILEGED_FUNCTION; + #endif +#else + #if( portHAS_STACK_OVERFLOW_CHECKING == 1 ) + StackType_t *pxPortInitialiseStack( StackType_t *pxTopOfStack, StackType_t *pxEndOfStack, TaskFunction_t pxCode, void *pvParameters ) PRIVILEGED_FUNCTION; + #else + StackType_t *pxPortInitialiseStack( StackType_t *pxTopOfStack, TaskFunction_t pxCode, void *pvParameters ) PRIVILEGED_FUNCTION; + #endif +#endif + +/* Used by heap_5.c to define the start address and size of each memory region +that together comprise the total FreeRTOS heap space. */ +typedef struct HeapRegion +{ + uint8_t *pucStartAddress; + size_t xSizeInBytes; +} HeapRegion_t; + +/* Used to pass information about the heap out of vPortGetHeapStats(). */ +typedef struct xHeapStats +{ + size_t xAvailableHeapSpaceInBytes; /* The total heap size currently available - this is the sum of all the free blocks, not the largest block that can be allocated. */ + size_t xSizeOfLargestFreeBlockInBytes; /* The maximum size, in bytes, of all the free blocks within the heap at the time vPortGetHeapStats() is called. */ + size_t xSizeOfSmallestFreeBlockInBytes; /* The minimum size, in bytes, of all the free blocks within the heap at the time vPortGetHeapStats() is called. */ + size_t xNumberOfFreeBlocks; /* The number of free memory blocks within the heap at the time vPortGetHeapStats() is called. */ + size_t xMinimumEverFreeBytesRemaining; /* The minimum amount of total free memory (sum of all free blocks) there has been in the heap since the system booted. */ + size_t xNumberOfSuccessfulAllocations; /* The number of calls to pvPortMalloc() that have returned a valid memory block. */ + size_t xNumberOfSuccessfulFrees; /* The number of calls to vPortFree() that has successfully freed a block of memory. */ +} HeapStats_t; + +/* + * Used to define multiple heap regions for use by heap_5.c. This function + * must be called before any calls to pvPortMalloc() - not creating a task, + * queue, semaphore, mutex, software timer, event group, etc. will result in + * pvPortMalloc being called. + * + * pxHeapRegions passes in an array of HeapRegion_t structures - each of which + * defines a region of memory that can be used as the heap. The array is + * terminated by a HeapRegions_t structure that has a size of 0. The region + * with the lowest start address must appear first in the array. + */ +void vPortDefineHeapRegions( const HeapRegion_t * const pxHeapRegions ) PRIVILEGED_FUNCTION; + +/* + * Returns a HeapStats_t structure filled with information about the current + * heap state. + */ +void vPortGetHeapStats( HeapStats_t *pxHeapStats ); + +/* + * Map to the memory management routines required for the port. + */ +void *pvPortMalloc( size_t xSize ) PRIVILEGED_FUNCTION; +void vPortFree( void *pv ) PRIVILEGED_FUNCTION; +void vPortInitialiseBlocks( void ) PRIVILEGED_FUNCTION; +size_t xPortGetFreeHeapSize( void ) PRIVILEGED_FUNCTION; +size_t xPortGetMinimumEverFreeHeapSize( void ) PRIVILEGED_FUNCTION; + +/* + * Setup the hardware ready for the scheduler to take control. This generally + * sets up a tick interrupt and sets timers for the correct tick frequency. + */ +BaseType_t xPortStartScheduler( void ) PRIVILEGED_FUNCTION; + +/* + * Undo any hardware/ISR setup that was performed by xPortStartScheduler() so + * the hardware is left in its original condition after the scheduler stops + * executing. + */ +void vPortEndScheduler( void ) PRIVILEGED_FUNCTION; + +/* + * The structures and methods of manipulating the MPU are contained within the + * port layer. + * + * Fills the xMPUSettings structure with the memory region information + * contained in xRegions. + */ +#if( portUSING_MPU_WRAPPERS == 1 ) + struct xMEMORY_REGION; + void vPortStoreTaskMPUSettings( xMPU_SETTINGS *xMPUSettings, const struct xMEMORY_REGION * const xRegions, StackType_t *pxBottomOfStack, uint32_t ulStackDepth ) PRIVILEGED_FUNCTION; +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* PORTABLE_H */ + diff --git a/firmware/Middlewares/Third_Party/FreeRTOS/Source/include/projdefs.h b/firmware/Middlewares/Third_Party/FreeRTOS/Source/include/projdefs.h new file mode 100644 index 0000000..0d95130 --- /dev/null +++ b/firmware/Middlewares/Third_Party/FreeRTOS/Source/include/projdefs.h @@ -0,0 +1,124 @@ +/* + * FreeRTOS Kernel V10.3.1 + * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * http://www.FreeRTOS.org + * http://aws.amazon.com/freertos + * + * 1 tab == 4 spaces! + */ + +#ifndef PROJDEFS_H +#define PROJDEFS_H + +/* + * Defines the prototype to which task functions must conform. Defined in this + * file to ensure the type is known before portable.h is included. + */ +typedef void (*TaskFunction_t)( void * ); + +/* Converts a time in milliseconds to a time in ticks. This macro can be +overridden by a macro of the same name defined in FreeRTOSConfig.h in case the +definition here is not suitable for your application. */ +#ifndef pdMS_TO_TICKS + #define pdMS_TO_TICKS( xTimeInMs ) ( ( TickType_t ) ( ( ( TickType_t ) ( xTimeInMs ) * ( TickType_t ) configTICK_RATE_HZ ) / ( TickType_t ) 1000 ) ) +#endif + +#define pdFALSE ( ( BaseType_t ) 0 ) +#define pdTRUE ( ( BaseType_t ) 1 ) + +#define pdPASS ( pdTRUE ) +#define pdFAIL ( pdFALSE ) +#define errQUEUE_EMPTY ( ( BaseType_t ) 0 ) +#define errQUEUE_FULL ( ( BaseType_t ) 0 ) + +/* FreeRTOS error definitions. */ +#define errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY ( -1 ) +#define errQUEUE_BLOCKED ( -4 ) +#define errQUEUE_YIELD ( -5 ) + +/* Macros used for basic data corruption checks. */ +#ifndef configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES + #define configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES 0 +#endif + +#if( configUSE_16_BIT_TICKS == 1 ) + #define pdINTEGRITY_CHECK_VALUE 0x5a5a +#else + #define pdINTEGRITY_CHECK_VALUE 0x5a5a5a5aUL +#endif + +/* The following errno values are used by FreeRTOS+ components, not FreeRTOS +itself. */ +#define pdFREERTOS_ERRNO_NONE 0 /* No errors */ +#define pdFREERTOS_ERRNO_ENOENT 2 /* No such file or directory */ +#define pdFREERTOS_ERRNO_EINTR 4 /* Interrupted system call */ +#define pdFREERTOS_ERRNO_EIO 5 /* I/O error */ +#define pdFREERTOS_ERRNO_ENXIO 6 /* No such device or address */ +#define pdFREERTOS_ERRNO_EBADF 9 /* Bad file number */ +#define pdFREERTOS_ERRNO_EAGAIN 11 /* No more processes */ +#define pdFREERTOS_ERRNO_EWOULDBLOCK 11 /* Operation would block */ +#define pdFREERTOS_ERRNO_ENOMEM 12 /* Not enough memory */ +#define pdFREERTOS_ERRNO_EACCES 13 /* Permission denied */ +#define pdFREERTOS_ERRNO_EFAULT 14 /* Bad address */ +#define pdFREERTOS_ERRNO_EBUSY 16 /* Mount device busy */ +#define pdFREERTOS_ERRNO_EEXIST 17 /* File exists */ +#define pdFREERTOS_ERRNO_EXDEV 18 /* Cross-device link */ +#define pdFREERTOS_ERRNO_ENODEV 19 /* No such device */ +#define pdFREERTOS_ERRNO_ENOTDIR 20 /* Not a directory */ +#define pdFREERTOS_ERRNO_EISDIR 21 /* Is a directory */ +#define pdFREERTOS_ERRNO_EINVAL 22 /* Invalid argument */ +#define pdFREERTOS_ERRNO_ENOSPC 28 /* No space left on device */ +#define pdFREERTOS_ERRNO_ESPIPE 29 /* Illegal seek */ +#define pdFREERTOS_ERRNO_EROFS 30 /* Read only file system */ +#define pdFREERTOS_ERRNO_EUNATCH 42 /* Protocol driver not attached */ +#define pdFREERTOS_ERRNO_EBADE 50 /* Invalid exchange */ +#define pdFREERTOS_ERRNO_EFTYPE 79 /* Inappropriate file type or format */ +#define pdFREERTOS_ERRNO_ENMFILE 89 /* No more files */ +#define pdFREERTOS_ERRNO_ENOTEMPTY 90 /* Directory not empty */ +#define pdFREERTOS_ERRNO_ENAMETOOLONG 91 /* File or path name too long */ +#define pdFREERTOS_ERRNO_EOPNOTSUPP 95 /* Operation not supported on transport endpoint */ +#define pdFREERTOS_ERRNO_ENOBUFS 105 /* No buffer space available */ +#define pdFREERTOS_ERRNO_ENOPROTOOPT 109 /* Protocol not available */ +#define pdFREERTOS_ERRNO_EADDRINUSE 112 /* Address already in use */ +#define pdFREERTOS_ERRNO_ETIMEDOUT 116 /* Connection timed out */ +#define pdFREERTOS_ERRNO_EINPROGRESS 119 /* Connection already in progress */ +#define pdFREERTOS_ERRNO_EALREADY 120 /* Socket already connected */ +#define pdFREERTOS_ERRNO_EADDRNOTAVAIL 125 /* Address not available */ +#define pdFREERTOS_ERRNO_EISCONN 127 /* Socket is already connected */ +#define pdFREERTOS_ERRNO_ENOTCONN 128 /* Socket is not connected */ +#define pdFREERTOS_ERRNO_ENOMEDIUM 135 /* No medium inserted */ +#define pdFREERTOS_ERRNO_EILSEQ 138 /* An invalid UTF-16 sequence was encountered. */ +#define pdFREERTOS_ERRNO_ECANCELED 140 /* Operation canceled. */ + +/* The following endian values are used by FreeRTOS+ components, not FreeRTOS +itself. */ +#define pdFREERTOS_LITTLE_ENDIAN 0 +#define pdFREERTOS_BIG_ENDIAN 1 + +/* Re-defining endian values for generic naming. */ +#define pdLITTLE_ENDIAN pdFREERTOS_LITTLE_ENDIAN +#define pdBIG_ENDIAN pdFREERTOS_BIG_ENDIAN + + +#endif /* PROJDEFS_H */ + + + diff --git a/firmware/Middlewares/Third_Party/FreeRTOS/Source/include/queue.h b/firmware/Middlewares/Third_Party/FreeRTOS/Source/include/queue.h new file mode 100644 index 0000000..52ccca5 --- /dev/null +++ b/firmware/Middlewares/Third_Party/FreeRTOS/Source/include/queue.h @@ -0,0 +1,1655 @@ +/* + * FreeRTOS Kernel V10.3.1 + * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * http://www.FreeRTOS.org + * http://aws.amazon.com/freertos + * + * 1 tab == 4 spaces! + */ + + +#ifndef QUEUE_H +#define QUEUE_H + +#ifndef INC_FREERTOS_H + #error "include FreeRTOS.h" must appear in source files before "include queue.h" +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#include "task.h" + +/** + * Type by which queues are referenced. For example, a call to xQueueCreate() + * returns an QueueHandle_t variable that can then be used as a parameter to + * xQueueSend(), xQueueReceive(), etc. + */ +struct QueueDefinition; /* Using old naming convention so as not to break kernel aware debuggers. */ +typedef struct QueueDefinition * QueueHandle_t; + +/** + * Type by which queue sets are referenced. For example, a call to + * xQueueCreateSet() returns an xQueueSet variable that can then be used as a + * parameter to xQueueSelectFromSet(), xQueueAddToSet(), etc. + */ +typedef struct QueueDefinition * QueueSetHandle_t; + +/** + * Queue sets can contain both queues and semaphores, so the + * QueueSetMemberHandle_t is defined as a type to be used where a parameter or + * return value can be either an QueueHandle_t or an SemaphoreHandle_t. + */ +typedef struct QueueDefinition * QueueSetMemberHandle_t; + +/* For internal use only. */ +#define queueSEND_TO_BACK ( ( BaseType_t ) 0 ) +#define queueSEND_TO_FRONT ( ( BaseType_t ) 1 ) +#define queueOVERWRITE ( ( BaseType_t ) 2 ) + +/* For internal use only. These definitions *must* match those in queue.c. */ +#define queueQUEUE_TYPE_BASE ( ( uint8_t ) 0U ) +#define queueQUEUE_TYPE_SET ( ( uint8_t ) 0U ) +#define queueQUEUE_TYPE_MUTEX ( ( uint8_t ) 1U ) +#define queueQUEUE_TYPE_COUNTING_SEMAPHORE ( ( uint8_t ) 2U ) +#define queueQUEUE_TYPE_BINARY_SEMAPHORE ( ( uint8_t ) 3U ) +#define queueQUEUE_TYPE_RECURSIVE_MUTEX ( ( uint8_t ) 4U ) + +/** + * queue. h + *
+ QueueHandle_t xQueueCreate(
+							  UBaseType_t uxQueueLength,
+							  UBaseType_t uxItemSize
+						  );
+ * 
+ * + * Creates a new queue instance, and returns a handle by which the new queue + * can be referenced. + * + * Internally, within the FreeRTOS implementation, queues use two blocks of + * memory. The first block is used to hold the queue's data structures. The + * second block is used to hold items placed into the queue. If a queue is + * created using xQueueCreate() then both blocks of memory are automatically + * dynamically allocated inside the xQueueCreate() function. (see + * http://www.freertos.org/a00111.html). If a queue is created using + * xQueueCreateStatic() then the application writer must provide the memory that + * will get used by the queue. xQueueCreateStatic() therefore allows a queue to + * be created without using any dynamic memory allocation. + * + * http://www.FreeRTOS.org/Embedded-RTOS-Queues.html + * + * @param uxQueueLength The maximum number of items that the queue can contain. + * + * @param uxItemSize The number of bytes each item in the queue will require. + * Items are queued by copy, not by reference, so this is the number of bytes + * that will be copied for each posted item. Each item on the queue must be + * the same size. + * + * @return If the queue is successfully create then a handle to the newly + * created queue is returned. If the queue cannot be created then 0 is + * returned. + * + * Example usage: +
+ struct AMessage
+ {
+	char ucMessageID;
+	char ucData[ 20 ];
+ };
+
+ void vATask( void *pvParameters )
+ {
+ QueueHandle_t xQueue1, xQueue2;
+
+	// Create a queue capable of containing 10 uint32_t values.
+	xQueue1 = xQueueCreate( 10, sizeof( uint32_t ) );
+	if( xQueue1 == 0 )
+	{
+		// Queue was not created and must not be used.
+	}
+
+	// Create a queue capable of containing 10 pointers to AMessage structures.
+	// These should be passed by pointer as they contain a lot of data.
+	xQueue2 = xQueueCreate( 10, sizeof( struct AMessage * ) );
+	if( xQueue2 == 0 )
+	{
+		// Queue was not created and must not be used.
+	}
+
+	// ... Rest of task code.
+ }
+ 
+ * \defgroup xQueueCreate xQueueCreate + * \ingroup QueueManagement + */ +#if( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) + #define xQueueCreate( uxQueueLength, uxItemSize ) xQueueGenericCreate( ( uxQueueLength ), ( uxItemSize ), ( queueQUEUE_TYPE_BASE ) ) +#endif + +/** + * queue. h + *
+ QueueHandle_t xQueueCreateStatic(
+							  UBaseType_t uxQueueLength,
+							  UBaseType_t uxItemSize,
+							  uint8_t *pucQueueStorageBuffer,
+							  StaticQueue_t *pxQueueBuffer
+						  );
+ * 
+ * + * Creates a new queue instance, and returns a handle by which the new queue + * can be referenced. + * + * Internally, within the FreeRTOS implementation, queues use two blocks of + * memory. The first block is used to hold the queue's data structures. The + * second block is used to hold items placed into the queue. If a queue is + * created using xQueueCreate() then both blocks of memory are automatically + * dynamically allocated inside the xQueueCreate() function. (see + * http://www.freertos.org/a00111.html). If a queue is created using + * xQueueCreateStatic() then the application writer must provide the memory that + * will get used by the queue. xQueueCreateStatic() therefore allows a queue to + * be created without using any dynamic memory allocation. + * + * http://www.FreeRTOS.org/Embedded-RTOS-Queues.html + * + * @param uxQueueLength The maximum number of items that the queue can contain. + * + * @param uxItemSize The number of bytes each item in the queue will require. + * Items are queued by copy, not by reference, so this is the number of bytes + * that will be copied for each posted item. Each item on the queue must be + * the same size. + * + * @param pucQueueStorageBuffer If uxItemSize is not zero then + * pucQueueStorageBuffer must point to a uint8_t array that is at least large + * enough to hold the maximum number of items that can be in the queue at any + * one time - which is ( uxQueueLength * uxItemsSize ) bytes. If uxItemSize is + * zero then pucQueueStorageBuffer can be NULL. + * + * @param pxQueueBuffer Must point to a variable of type StaticQueue_t, which + * will be used to hold the queue's data structure. + * + * @return If the queue is created then a handle to the created queue is + * returned. If pxQueueBuffer is NULL then NULL is returned. + * + * Example usage: +
+ struct AMessage
+ {
+	char ucMessageID;
+	char ucData[ 20 ];
+ };
+
+ #define QUEUE_LENGTH 10
+ #define ITEM_SIZE sizeof( uint32_t )
+
+ // xQueueBuffer will hold the queue structure.
+ StaticQueue_t xQueueBuffer;
+
+ // ucQueueStorage will hold the items posted to the queue.  Must be at least
+ // [(queue length) * ( queue item size)] bytes long.
+ uint8_t ucQueueStorage[ QUEUE_LENGTH * ITEM_SIZE ];
+
+ void vATask( void *pvParameters )
+ {
+ QueueHandle_t xQueue1;
+
+	// Create a queue capable of containing 10 uint32_t values.
+	xQueue1 = xQueueCreate( QUEUE_LENGTH, // The number of items the queue can hold.
+							ITEM_SIZE	  // The size of each item in the queue
+							&( ucQueueStorage[ 0 ] ), // The buffer that will hold the items in the queue.
+							&xQueueBuffer ); // The buffer that will hold the queue structure.
+
+	// The queue is guaranteed to be created successfully as no dynamic memory
+	// allocation is used.  Therefore xQueue1 is now a handle to a valid queue.
+
+	// ... Rest of task code.
+ }
+ 
+ * \defgroup xQueueCreateStatic xQueueCreateStatic + * \ingroup QueueManagement + */ +#if( configSUPPORT_STATIC_ALLOCATION == 1 ) + #define xQueueCreateStatic( uxQueueLength, uxItemSize, pucQueueStorage, pxQueueBuffer ) xQueueGenericCreateStatic( ( uxQueueLength ), ( uxItemSize ), ( pucQueueStorage ), ( pxQueueBuffer ), ( queueQUEUE_TYPE_BASE ) ) +#endif /* configSUPPORT_STATIC_ALLOCATION */ + +/** + * queue. h + *
+ BaseType_t xQueueSendToToFront(
+								   QueueHandle_t	xQueue,
+								   const void		*pvItemToQueue,
+								   TickType_t		xTicksToWait
+							   );
+ * 
+ * + * Post an item to the front of a queue. The item is queued by copy, not by + * reference. This function must not be called from an interrupt service + * routine. See xQueueSendFromISR () for an alternative which may be used + * in an ISR. + * + * @param xQueue The handle to the queue on which the item is to be posted. + * + * @param pvItemToQueue A pointer to the item that is to be placed on the + * queue. The size of the items the queue will hold was defined when the + * queue was created, so this many bytes will be copied from pvItemToQueue + * into the queue storage area. + * + * @param xTicksToWait The maximum amount of time the task should block + * waiting for space to become available on the queue, should it already + * be full. The call will return immediately if this is set to 0 and the + * queue is full. The time is defined in tick periods so the constant + * portTICK_PERIOD_MS should be used to convert to real time if this is required. + * + * @return pdTRUE if the item was successfully posted, otherwise errQUEUE_FULL. + * + * Example usage: +
+ struct AMessage
+ {
+	char ucMessageID;
+	char ucData[ 20 ];
+ } xMessage;
+
+ uint32_t ulVar = 10UL;
+
+ void vATask( void *pvParameters )
+ {
+ QueueHandle_t xQueue1, xQueue2;
+ struct AMessage *pxMessage;
+
+	// Create a queue capable of containing 10 uint32_t values.
+	xQueue1 = xQueueCreate( 10, sizeof( uint32_t ) );
+
+	// Create a queue capable of containing 10 pointers to AMessage structures.
+	// These should be passed by pointer as they contain a lot of data.
+	xQueue2 = xQueueCreate( 10, sizeof( struct AMessage * ) );
+
+	// ...
+
+	if( xQueue1 != 0 )
+	{
+		// Send an uint32_t.  Wait for 10 ticks for space to become
+		// available if necessary.
+		if( xQueueSendToFront( xQueue1, ( void * ) &ulVar, ( TickType_t ) 10 ) != pdPASS )
+		{
+			// Failed to post the message, even after 10 ticks.
+		}
+	}
+
+	if( xQueue2 != 0 )
+	{
+		// Send a pointer to a struct AMessage object.  Don't block if the
+		// queue is already full.
+		pxMessage = & xMessage;
+		xQueueSendToFront( xQueue2, ( void * ) &pxMessage, ( TickType_t ) 0 );
+	}
+
+	// ... Rest of task code.
+ }
+ 
+ * \defgroup xQueueSend xQueueSend + * \ingroup QueueManagement + */ +#define xQueueSendToFront( xQueue, pvItemToQueue, xTicksToWait ) xQueueGenericSend( ( xQueue ), ( pvItemToQueue ), ( xTicksToWait ), queueSEND_TO_FRONT ) + +/** + * queue. h + *
+ BaseType_t xQueueSendToBack(
+								   QueueHandle_t	xQueue,
+								   const void		*pvItemToQueue,
+								   TickType_t		xTicksToWait
+							   );
+ * 
+ * + * This is a macro that calls xQueueGenericSend(). + * + * Post an item to the back of a queue. The item is queued by copy, not by + * reference. This function must not be called from an interrupt service + * routine. See xQueueSendFromISR () for an alternative which may be used + * in an ISR. + * + * @param xQueue The handle to the queue on which the item is to be posted. + * + * @param pvItemToQueue A pointer to the item that is to be placed on the + * queue. The size of the items the queue will hold was defined when the + * queue was created, so this many bytes will be copied from pvItemToQueue + * into the queue storage area. + * + * @param xTicksToWait The maximum amount of time the task should block + * waiting for space to become available on the queue, should it already + * be full. The call will return immediately if this is set to 0 and the queue + * is full. The time is defined in tick periods so the constant + * portTICK_PERIOD_MS should be used to convert to real time if this is required. + * + * @return pdTRUE if the item was successfully posted, otherwise errQUEUE_FULL. + * + * Example usage: +
+ struct AMessage
+ {
+	char ucMessageID;
+	char ucData[ 20 ];
+ } xMessage;
+
+ uint32_t ulVar = 10UL;
+
+ void vATask( void *pvParameters )
+ {
+ QueueHandle_t xQueue1, xQueue2;
+ struct AMessage *pxMessage;
+
+	// Create a queue capable of containing 10 uint32_t values.
+	xQueue1 = xQueueCreate( 10, sizeof( uint32_t ) );
+
+	// Create a queue capable of containing 10 pointers to AMessage structures.
+	// These should be passed by pointer as they contain a lot of data.
+	xQueue2 = xQueueCreate( 10, sizeof( struct AMessage * ) );
+
+	// ...
+
+	if( xQueue1 != 0 )
+	{
+		// Send an uint32_t.  Wait for 10 ticks for space to become
+		// available if necessary.
+		if( xQueueSendToBack( xQueue1, ( void * ) &ulVar, ( TickType_t ) 10 ) != pdPASS )
+		{
+			// Failed to post the message, even after 10 ticks.
+		}
+	}
+
+	if( xQueue2 != 0 )
+	{
+		// Send a pointer to a struct AMessage object.  Don't block if the
+		// queue is already full.
+		pxMessage = & xMessage;
+		xQueueSendToBack( xQueue2, ( void * ) &pxMessage, ( TickType_t ) 0 );
+	}
+
+	// ... Rest of task code.
+ }
+ 
+ * \defgroup xQueueSend xQueueSend + * \ingroup QueueManagement + */ +#define xQueueSendToBack( xQueue, pvItemToQueue, xTicksToWait ) xQueueGenericSend( ( xQueue ), ( pvItemToQueue ), ( xTicksToWait ), queueSEND_TO_BACK ) + +/** + * queue. h + *
+ BaseType_t xQueueSend(
+							  QueueHandle_t xQueue,
+							  const void * pvItemToQueue,
+							  TickType_t xTicksToWait
+						 );
+ * 
+ * + * This is a macro that calls xQueueGenericSend(). It is included for + * backward compatibility with versions of FreeRTOS.org that did not + * include the xQueueSendToFront() and xQueueSendToBack() macros. It is + * equivalent to xQueueSendToBack(). + * + * Post an item on a queue. The item is queued by copy, not by reference. + * This function must not be called from an interrupt service routine. + * See xQueueSendFromISR () for an alternative which may be used in an ISR. + * + * @param xQueue The handle to the queue on which the item is to be posted. + * + * @param pvItemToQueue A pointer to the item that is to be placed on the + * queue. The size of the items the queue will hold was defined when the + * queue was created, so this many bytes will be copied from pvItemToQueue + * into the queue storage area. + * + * @param xTicksToWait The maximum amount of time the task should block + * waiting for space to become available on the queue, should it already + * be full. The call will return immediately if this is set to 0 and the + * queue is full. The time is defined in tick periods so the constant + * portTICK_PERIOD_MS should be used to convert to real time if this is required. + * + * @return pdTRUE if the item was successfully posted, otherwise errQUEUE_FULL. + * + * Example usage: +
+ struct AMessage
+ {
+	char ucMessageID;
+	char ucData[ 20 ];
+ } xMessage;
+
+ uint32_t ulVar = 10UL;
+
+ void vATask( void *pvParameters )
+ {
+ QueueHandle_t xQueue1, xQueue2;
+ struct AMessage *pxMessage;
+
+	// Create a queue capable of containing 10 uint32_t values.
+	xQueue1 = xQueueCreate( 10, sizeof( uint32_t ) );
+
+	// Create a queue capable of containing 10 pointers to AMessage structures.
+	// These should be passed by pointer as they contain a lot of data.
+	xQueue2 = xQueueCreate( 10, sizeof( struct AMessage * ) );
+
+	// ...
+
+	if( xQueue1 != 0 )
+	{
+		// Send an uint32_t.  Wait for 10 ticks for space to become
+		// available if necessary.
+		if( xQueueSend( xQueue1, ( void * ) &ulVar, ( TickType_t ) 10 ) != pdPASS )
+		{
+			// Failed to post the message, even after 10 ticks.
+		}
+	}
+
+	if( xQueue2 != 0 )
+	{
+		// Send a pointer to a struct AMessage object.  Don't block if the
+		// queue is already full.
+		pxMessage = & xMessage;
+		xQueueSend( xQueue2, ( void * ) &pxMessage, ( TickType_t ) 0 );
+	}
+
+	// ... Rest of task code.
+ }
+ 
+ * \defgroup xQueueSend xQueueSend + * \ingroup QueueManagement + */ +#define xQueueSend( xQueue, pvItemToQueue, xTicksToWait ) xQueueGenericSend( ( xQueue ), ( pvItemToQueue ), ( xTicksToWait ), queueSEND_TO_BACK ) + +/** + * queue. h + *
+ BaseType_t xQueueOverwrite(
+							  QueueHandle_t xQueue,
+							  const void * pvItemToQueue
+						 );
+ * 
+ * + * Only for use with queues that have a length of one - so the queue is either + * empty or full. + * + * Post an item on a queue. If the queue is already full then overwrite the + * value held in the queue. The item is queued by copy, not by reference. + * + * This function must not be called from an interrupt service routine. + * See xQueueOverwriteFromISR () for an alternative which may be used in an ISR. + * + * @param xQueue The handle of the queue to which the data is being sent. + * + * @param pvItemToQueue A pointer to the item that is to be placed on the + * queue. The size of the items the queue will hold was defined when the + * queue was created, so this many bytes will be copied from pvItemToQueue + * into the queue storage area. + * + * @return xQueueOverwrite() is a macro that calls xQueueGenericSend(), and + * therefore has the same return values as xQueueSendToFront(). However, pdPASS + * is the only value that can be returned because xQueueOverwrite() will write + * to the queue even when the queue is already full. + * + * Example usage: +
+
+ void vFunction( void *pvParameters )
+ {
+ QueueHandle_t xQueue;
+ uint32_t ulVarToSend, ulValReceived;
+
+	// Create a queue to hold one uint32_t value.  It is strongly
+	// recommended *not* to use xQueueOverwrite() on queues that can
+	// contain more than one value, and doing so will trigger an assertion
+	// if configASSERT() is defined.
+	xQueue = xQueueCreate( 1, sizeof( uint32_t ) );
+
+	// Write the value 10 to the queue using xQueueOverwrite().
+	ulVarToSend = 10;
+	xQueueOverwrite( xQueue, &ulVarToSend );
+
+	// Peeking the queue should now return 10, but leave the value 10 in
+	// the queue.  A block time of zero is used as it is known that the
+	// queue holds a value.
+	ulValReceived = 0;
+	xQueuePeek( xQueue, &ulValReceived, 0 );
+
+	if( ulValReceived != 10 )
+	{
+		// Error unless the item was removed by a different task.
+	}
+
+	// The queue is still full.  Use xQueueOverwrite() to overwrite the
+	// value held in the queue with 100.
+	ulVarToSend = 100;
+	xQueueOverwrite( xQueue, &ulVarToSend );
+
+	// This time read from the queue, leaving the queue empty once more.
+	// A block time of 0 is used again.
+	xQueueReceive( xQueue, &ulValReceived, 0 );
+
+	// The value read should be the last value written, even though the
+	// queue was already full when the value was written.
+	if( ulValReceived != 100 )
+	{
+		// Error!
+	}
+
+	// ...
+}
+ 
+ * \defgroup xQueueOverwrite xQueueOverwrite + * \ingroup QueueManagement + */ +#define xQueueOverwrite( xQueue, pvItemToQueue ) xQueueGenericSend( ( xQueue ), ( pvItemToQueue ), 0, queueOVERWRITE ) + + +/** + * queue. h + *
+ BaseType_t xQueueGenericSend(
+									QueueHandle_t xQueue,
+									const void * pvItemToQueue,
+									TickType_t xTicksToWait
+									BaseType_t xCopyPosition
+								);
+ * 
+ * + * It is preferred that the macros xQueueSend(), xQueueSendToFront() and + * xQueueSendToBack() are used in place of calling this function directly. + * + * Post an item on a queue. The item is queued by copy, not by reference. + * This function must not be called from an interrupt service routine. + * See xQueueSendFromISR () for an alternative which may be used in an ISR. + * + * @param xQueue The handle to the queue on which the item is to be posted. + * + * @param pvItemToQueue A pointer to the item that is to be placed on the + * queue. The size of the items the queue will hold was defined when the + * queue was created, so this many bytes will be copied from pvItemToQueue + * into the queue storage area. + * + * @param xTicksToWait The maximum amount of time the task should block + * waiting for space to become available on the queue, should it already + * be full. The call will return immediately if this is set to 0 and the + * queue is full. The time is defined in tick periods so the constant + * portTICK_PERIOD_MS should be used to convert to real time if this is required. + * + * @param xCopyPosition Can take the value queueSEND_TO_BACK to place the + * item at the back of the queue, or queueSEND_TO_FRONT to place the item + * at the front of the queue (for high priority messages). + * + * @return pdTRUE if the item was successfully posted, otherwise errQUEUE_FULL. + * + * Example usage: +
+ struct AMessage
+ {
+	char ucMessageID;
+	char ucData[ 20 ];
+ } xMessage;
+
+ uint32_t ulVar = 10UL;
+
+ void vATask( void *pvParameters )
+ {
+ QueueHandle_t xQueue1, xQueue2;
+ struct AMessage *pxMessage;
+
+	// Create a queue capable of containing 10 uint32_t values.
+	xQueue1 = xQueueCreate( 10, sizeof( uint32_t ) );
+
+	// Create a queue capable of containing 10 pointers to AMessage structures.
+	// These should be passed by pointer as they contain a lot of data.
+	xQueue2 = xQueueCreate( 10, sizeof( struct AMessage * ) );
+
+	// ...
+
+	if( xQueue1 != 0 )
+	{
+		// Send an uint32_t.  Wait for 10 ticks for space to become
+		// available if necessary.
+		if( xQueueGenericSend( xQueue1, ( void * ) &ulVar, ( TickType_t ) 10, queueSEND_TO_BACK ) != pdPASS )
+		{
+			// Failed to post the message, even after 10 ticks.
+		}
+	}
+
+	if( xQueue2 != 0 )
+	{
+		// Send a pointer to a struct AMessage object.  Don't block if the
+		// queue is already full.
+		pxMessage = & xMessage;
+		xQueueGenericSend( xQueue2, ( void * ) &pxMessage, ( TickType_t ) 0, queueSEND_TO_BACK );
+	}
+
+	// ... Rest of task code.
+ }
+ 
+ * \defgroup xQueueSend xQueueSend + * \ingroup QueueManagement + */ +BaseType_t xQueueGenericSend( QueueHandle_t xQueue, const void * const pvItemToQueue, TickType_t xTicksToWait, const BaseType_t xCopyPosition ) PRIVILEGED_FUNCTION; + +/** + * queue. h + *
+ BaseType_t xQueuePeek(
+							 QueueHandle_t xQueue,
+							 void * const pvBuffer,
+							 TickType_t xTicksToWait
+						 );
+ * + * Receive an item from a queue without removing the item from the queue. + * The item is received by copy so a buffer of adequate size must be + * provided. The number of bytes copied into the buffer was defined when + * the queue was created. + * + * Successfully received items remain on the queue so will be returned again + * by the next call, or a call to xQueueReceive(). + * + * This macro must not be used in an interrupt service routine. See + * xQueuePeekFromISR() for an alternative that can be called from an interrupt + * service routine. + * + * @param xQueue The handle to the queue from which the item is to be + * received. + * + * @param pvBuffer Pointer to the buffer into which the received item will + * be copied. + * + * @param xTicksToWait The maximum amount of time the task should block + * waiting for an item to receive should the queue be empty at the time + * of the call. The time is defined in tick periods so the constant + * portTICK_PERIOD_MS should be used to convert to real time if this is required. + * xQueuePeek() will return immediately if xTicksToWait is 0 and the queue + * is empty. + * + * @return pdTRUE if an item was successfully received from the queue, + * otherwise pdFALSE. + * + * Example usage: +
+ struct AMessage
+ {
+	char ucMessageID;
+	char ucData[ 20 ];
+ } xMessage;
+
+ QueueHandle_t xQueue;
+
+ // Task to create a queue and post a value.
+ void vATask( void *pvParameters )
+ {
+ struct AMessage *pxMessage;
+
+	// Create a queue capable of containing 10 pointers to AMessage structures.
+	// These should be passed by pointer as they contain a lot of data.
+	xQueue = xQueueCreate( 10, sizeof( struct AMessage * ) );
+	if( xQueue == 0 )
+	{
+		// Failed to create the queue.
+	}
+
+	// ...
+
+	// Send a pointer to a struct AMessage object.  Don't block if the
+	// queue is already full.
+	pxMessage = & xMessage;
+	xQueueSend( xQueue, ( void * ) &pxMessage, ( TickType_t ) 0 );
+
+	// ... Rest of task code.
+ }
+
+ // Task to peek the data from the queue.
+ void vADifferentTask( void *pvParameters )
+ {
+ struct AMessage *pxRxedMessage;
+
+	if( xQueue != 0 )
+	{
+		// Peek a message on the created queue.  Block for 10 ticks if a
+		// message is not immediately available.
+		if( xQueuePeek( xQueue, &( pxRxedMessage ), ( TickType_t ) 10 ) )
+		{
+			// pcRxedMessage now points to the struct AMessage variable posted
+			// by vATask, but the item still remains on the queue.
+		}
+	}
+
+	// ... Rest of task code.
+ }
+ 
+ * \defgroup xQueuePeek xQueuePeek + * \ingroup QueueManagement + */ +BaseType_t xQueuePeek( QueueHandle_t xQueue, void * const pvBuffer, TickType_t xTicksToWait ) PRIVILEGED_FUNCTION; + +/** + * queue. h + *
+ BaseType_t xQueuePeekFromISR(
+									QueueHandle_t xQueue,
+									void *pvBuffer,
+								);
+ * + * A version of xQueuePeek() that can be called from an interrupt service + * routine (ISR). + * + * Receive an item from a queue without removing the item from the queue. + * The item is received by copy so a buffer of adequate size must be + * provided. The number of bytes copied into the buffer was defined when + * the queue was created. + * + * Successfully received items remain on the queue so will be returned again + * by the next call, or a call to xQueueReceive(). + * + * @param xQueue The handle to the queue from which the item is to be + * received. + * + * @param pvBuffer Pointer to the buffer into which the received item will + * be copied. + * + * @return pdTRUE if an item was successfully received from the queue, + * otherwise pdFALSE. + * + * \defgroup xQueuePeekFromISR xQueuePeekFromISR + * \ingroup QueueManagement + */ +BaseType_t xQueuePeekFromISR( QueueHandle_t xQueue, void * const pvBuffer ) PRIVILEGED_FUNCTION; + +/** + * queue. h + *
+ BaseType_t xQueueReceive(
+								 QueueHandle_t xQueue,
+								 void *pvBuffer,
+								 TickType_t xTicksToWait
+							);
+ * + * Receive an item from a queue. The item is received by copy so a buffer of + * adequate size must be provided. The number of bytes copied into the buffer + * was defined when the queue was created. + * + * Successfully received items are removed from the queue. + * + * This function must not be used in an interrupt service routine. See + * xQueueReceiveFromISR for an alternative that can. + * + * @param xQueue The handle to the queue from which the item is to be + * received. + * + * @param pvBuffer Pointer to the buffer into which the received item will + * be copied. + * + * @param xTicksToWait The maximum amount of time the task should block + * waiting for an item to receive should the queue be empty at the time + * of the call. xQueueReceive() will return immediately if xTicksToWait + * is zero and the queue is empty. The time is defined in tick periods so the + * constant portTICK_PERIOD_MS should be used to convert to real time if this is + * required. + * + * @return pdTRUE if an item was successfully received from the queue, + * otherwise pdFALSE. + * + * Example usage: +
+ struct AMessage
+ {
+	char ucMessageID;
+	char ucData[ 20 ];
+ } xMessage;
+
+ QueueHandle_t xQueue;
+
+ // Task to create a queue and post a value.
+ void vATask( void *pvParameters )
+ {
+ struct AMessage *pxMessage;
+
+	// Create a queue capable of containing 10 pointers to AMessage structures.
+	// These should be passed by pointer as they contain a lot of data.
+	xQueue = xQueueCreate( 10, sizeof( struct AMessage * ) );
+	if( xQueue == 0 )
+	{
+		// Failed to create the queue.
+	}
+
+	// ...
+
+	// Send a pointer to a struct AMessage object.  Don't block if the
+	// queue is already full.
+	pxMessage = & xMessage;
+	xQueueSend( xQueue, ( void * ) &pxMessage, ( TickType_t ) 0 );
+
+	// ... Rest of task code.
+ }
+
+ // Task to receive from the queue.
+ void vADifferentTask( void *pvParameters )
+ {
+ struct AMessage *pxRxedMessage;
+
+	if( xQueue != 0 )
+	{
+		// Receive a message on the created queue.  Block for 10 ticks if a
+		// message is not immediately available.
+		if( xQueueReceive( xQueue, &( pxRxedMessage ), ( TickType_t ) 10 ) )
+		{
+			// pcRxedMessage now points to the struct AMessage variable posted
+			// by vATask.
+		}
+	}
+
+	// ... Rest of task code.
+ }
+ 
+ * \defgroup xQueueReceive xQueueReceive + * \ingroup QueueManagement + */ +BaseType_t xQueueReceive( QueueHandle_t xQueue, void * const pvBuffer, TickType_t xTicksToWait ) PRIVILEGED_FUNCTION; + +/** + * queue. h + *
UBaseType_t uxQueueMessagesWaiting( const QueueHandle_t xQueue );
+ * + * Return the number of messages stored in a queue. + * + * @param xQueue A handle to the queue being queried. + * + * @return The number of messages available in the queue. + * + * \defgroup uxQueueMessagesWaiting uxQueueMessagesWaiting + * \ingroup QueueManagement + */ +UBaseType_t uxQueueMessagesWaiting( const QueueHandle_t xQueue ) PRIVILEGED_FUNCTION; + +/** + * queue. h + *
UBaseType_t uxQueueSpacesAvailable( const QueueHandle_t xQueue );
+ * + * Return the number of free spaces available in a queue. This is equal to the + * number of items that can be sent to the queue before the queue becomes full + * if no items are removed. + * + * @param xQueue A handle to the queue being queried. + * + * @return The number of spaces available in the queue. + * + * \defgroup uxQueueMessagesWaiting uxQueueMessagesWaiting + * \ingroup QueueManagement + */ +UBaseType_t uxQueueSpacesAvailable( const QueueHandle_t xQueue ) PRIVILEGED_FUNCTION; + +/** + * queue. h + *
void vQueueDelete( QueueHandle_t xQueue );
+ * + * Delete a queue - freeing all the memory allocated for storing of items + * placed on the queue. + * + * @param xQueue A handle to the queue to be deleted. + * + * \defgroup vQueueDelete vQueueDelete + * \ingroup QueueManagement + */ +void vQueueDelete( QueueHandle_t xQueue ) PRIVILEGED_FUNCTION; + +/** + * queue. h + *
+ BaseType_t xQueueSendToFrontFromISR(
+										 QueueHandle_t xQueue,
+										 const void *pvItemToQueue,
+										 BaseType_t *pxHigherPriorityTaskWoken
+									  );
+ 
+ * + * This is a macro that calls xQueueGenericSendFromISR(). + * + * Post an item to the front of a queue. It is safe to use this macro from + * within an interrupt service routine. + * + * Items are queued by copy not reference so it is preferable to only + * queue small items, especially when called from an ISR. In most cases + * it would be preferable to store a pointer to the item being queued. + * + * @param xQueue The handle to the queue on which the item is to be posted. + * + * @param pvItemToQueue A pointer to the item that is to be placed on the + * queue. The size of the items the queue will hold was defined when the + * queue was created, so this many bytes will be copied from pvItemToQueue + * into the queue storage area. + * + * @param pxHigherPriorityTaskWoken xQueueSendToFrontFromISR() will set + * *pxHigherPriorityTaskWoken to pdTRUE if sending to the queue caused a task + * to unblock, and the unblocked task has a priority higher than the currently + * running task. If xQueueSendToFromFromISR() sets this value to pdTRUE then + * a context switch should be requested before the interrupt is exited. + * + * @return pdTRUE if the data was successfully sent to the queue, otherwise + * errQUEUE_FULL. + * + * Example usage for buffered IO (where the ISR can obtain more than one value + * per call): +
+ void vBufferISR( void )
+ {
+ char cIn;
+ BaseType_t xHigherPrioritTaskWoken;
+
+	// We have not woken a task at the start of the ISR.
+	xHigherPriorityTaskWoken = pdFALSE;
+
+	// Loop until the buffer is empty.
+	do
+	{
+		// Obtain a byte from the buffer.
+		cIn = portINPUT_BYTE( RX_REGISTER_ADDRESS );
+
+		// Post the byte.
+		xQueueSendToFrontFromISR( xRxQueue, &cIn, &xHigherPriorityTaskWoken );
+
+	} while( portINPUT_BYTE( BUFFER_COUNT ) );
+
+	// Now the buffer is empty we can switch context if necessary.
+	if( xHigherPriorityTaskWoken )
+	{
+		taskYIELD ();
+	}
+ }
+ 
+ * + * \defgroup xQueueSendFromISR xQueueSendFromISR + * \ingroup QueueManagement + */ +#define xQueueSendToFrontFromISR( xQueue, pvItemToQueue, pxHigherPriorityTaskWoken ) xQueueGenericSendFromISR( ( xQueue ), ( pvItemToQueue ), ( pxHigherPriorityTaskWoken ), queueSEND_TO_FRONT ) + + +/** + * queue. h + *
+ BaseType_t xQueueSendToBackFromISR(
+										 QueueHandle_t xQueue,
+										 const void *pvItemToQueue,
+										 BaseType_t *pxHigherPriorityTaskWoken
+									  );
+ 
+ * + * This is a macro that calls xQueueGenericSendFromISR(). + * + * Post an item to the back of a queue. It is safe to use this macro from + * within an interrupt service routine. + * + * Items are queued by copy not reference so it is preferable to only + * queue small items, especially when called from an ISR. In most cases + * it would be preferable to store a pointer to the item being queued. + * + * @param xQueue The handle to the queue on which the item is to be posted. + * + * @param pvItemToQueue A pointer to the item that is to be placed on the + * queue. The size of the items the queue will hold was defined when the + * queue was created, so this many bytes will be copied from pvItemToQueue + * into the queue storage area. + * + * @param pxHigherPriorityTaskWoken xQueueSendToBackFromISR() will set + * *pxHigherPriorityTaskWoken to pdTRUE if sending to the queue caused a task + * to unblock, and the unblocked task has a priority higher than the currently + * running task. If xQueueSendToBackFromISR() sets this value to pdTRUE then + * a context switch should be requested before the interrupt is exited. + * + * @return pdTRUE if the data was successfully sent to the queue, otherwise + * errQUEUE_FULL. + * + * Example usage for buffered IO (where the ISR can obtain more than one value + * per call): +
+ void vBufferISR( void )
+ {
+ char cIn;
+ BaseType_t xHigherPriorityTaskWoken;
+
+	// We have not woken a task at the start of the ISR.
+	xHigherPriorityTaskWoken = pdFALSE;
+
+	// Loop until the buffer is empty.
+	do
+	{
+		// Obtain a byte from the buffer.
+		cIn = portINPUT_BYTE( RX_REGISTER_ADDRESS );
+
+		// Post the byte.
+		xQueueSendToBackFromISR( xRxQueue, &cIn, &xHigherPriorityTaskWoken );
+
+	} while( portINPUT_BYTE( BUFFER_COUNT ) );
+
+	// Now the buffer is empty we can switch context if necessary.
+	if( xHigherPriorityTaskWoken )
+	{
+		taskYIELD ();
+	}
+ }
+ 
+ * + * \defgroup xQueueSendFromISR xQueueSendFromISR + * \ingroup QueueManagement + */ +#define xQueueSendToBackFromISR( xQueue, pvItemToQueue, pxHigherPriorityTaskWoken ) xQueueGenericSendFromISR( ( xQueue ), ( pvItemToQueue ), ( pxHigherPriorityTaskWoken ), queueSEND_TO_BACK ) + +/** + * queue. h + *
+ BaseType_t xQueueOverwriteFromISR(
+							  QueueHandle_t xQueue,
+							  const void * pvItemToQueue,
+							  BaseType_t *pxHigherPriorityTaskWoken
+						 );
+ * 
+ * + * A version of xQueueOverwrite() that can be used in an interrupt service + * routine (ISR). + * + * Only for use with queues that can hold a single item - so the queue is either + * empty or full. + * + * Post an item on a queue. If the queue is already full then overwrite the + * value held in the queue. The item is queued by copy, not by reference. + * + * @param xQueue The handle to the queue on which the item is to be posted. + * + * @param pvItemToQueue A pointer to the item that is to be placed on the + * queue. The size of the items the queue will hold was defined when the + * queue was created, so this many bytes will be copied from pvItemToQueue + * into the queue storage area. + * + * @param pxHigherPriorityTaskWoken xQueueOverwriteFromISR() will set + * *pxHigherPriorityTaskWoken to pdTRUE if sending to the queue caused a task + * to unblock, and the unblocked task has a priority higher than the currently + * running task. If xQueueOverwriteFromISR() sets this value to pdTRUE then + * a context switch should be requested before the interrupt is exited. + * + * @return xQueueOverwriteFromISR() is a macro that calls + * xQueueGenericSendFromISR(), and therefore has the same return values as + * xQueueSendToFrontFromISR(). However, pdPASS is the only value that can be + * returned because xQueueOverwriteFromISR() will write to the queue even when + * the queue is already full. + * + * Example usage: +
+
+ QueueHandle_t xQueue;
+
+ void vFunction( void *pvParameters )
+ {
+ 	// Create a queue to hold one uint32_t value.  It is strongly
+	// recommended *not* to use xQueueOverwriteFromISR() on queues that can
+	// contain more than one value, and doing so will trigger an assertion
+	// if configASSERT() is defined.
+	xQueue = xQueueCreate( 1, sizeof( uint32_t ) );
+}
+
+void vAnInterruptHandler( void )
+{
+// xHigherPriorityTaskWoken must be set to pdFALSE before it is used.
+BaseType_t xHigherPriorityTaskWoken = pdFALSE;
+uint32_t ulVarToSend, ulValReceived;
+
+	// Write the value 10 to the queue using xQueueOverwriteFromISR().
+	ulVarToSend = 10;
+	xQueueOverwriteFromISR( xQueue, &ulVarToSend, &xHigherPriorityTaskWoken );
+
+	// The queue is full, but calling xQueueOverwriteFromISR() again will still
+	// pass because the value held in the queue will be overwritten with the
+	// new value.
+	ulVarToSend = 100;
+	xQueueOverwriteFromISR( xQueue, &ulVarToSend, &xHigherPriorityTaskWoken );
+
+	// Reading from the queue will now return 100.
+
+	// ...
+
+	if( xHigherPrioritytaskWoken == pdTRUE )
+	{
+		// Writing to the queue caused a task to unblock and the unblocked task
+		// has a priority higher than or equal to the priority of the currently
+		// executing task (the task this interrupt interrupted).  Perform a context
+		// switch so this interrupt returns directly to the unblocked task.
+		portYIELD_FROM_ISR(); // or portEND_SWITCHING_ISR() depending on the port.
+	}
+}
+ 
+ * \defgroup xQueueOverwriteFromISR xQueueOverwriteFromISR + * \ingroup QueueManagement + */ +#define xQueueOverwriteFromISR( xQueue, pvItemToQueue, pxHigherPriorityTaskWoken ) xQueueGenericSendFromISR( ( xQueue ), ( pvItemToQueue ), ( pxHigherPriorityTaskWoken ), queueOVERWRITE ) + +/** + * queue. h + *
+ BaseType_t xQueueSendFromISR(
+									 QueueHandle_t xQueue,
+									 const void *pvItemToQueue,
+									 BaseType_t *pxHigherPriorityTaskWoken
+								);
+ 
+ * + * This is a macro that calls xQueueGenericSendFromISR(). It is included + * for backward compatibility with versions of FreeRTOS.org that did not + * include the xQueueSendToBackFromISR() and xQueueSendToFrontFromISR() + * macros. + * + * Post an item to the back of a queue. It is safe to use this function from + * within an interrupt service routine. + * + * Items are queued by copy not reference so it is preferable to only + * queue small items, especially when called from an ISR. In most cases + * it would be preferable to store a pointer to the item being queued. + * + * @param xQueue The handle to the queue on which the item is to be posted. + * + * @param pvItemToQueue A pointer to the item that is to be placed on the + * queue. The size of the items the queue will hold was defined when the + * queue was created, so this many bytes will be copied from pvItemToQueue + * into the queue storage area. + * + * @param pxHigherPriorityTaskWoken xQueueSendFromISR() will set + * *pxHigherPriorityTaskWoken to pdTRUE if sending to the queue caused a task + * to unblock, and the unblocked task has a priority higher than the currently + * running task. If xQueueSendFromISR() sets this value to pdTRUE then + * a context switch should be requested before the interrupt is exited. + * + * @return pdTRUE if the data was successfully sent to the queue, otherwise + * errQUEUE_FULL. + * + * Example usage for buffered IO (where the ISR can obtain more than one value + * per call): +
+ void vBufferISR( void )
+ {
+ char cIn;
+ BaseType_t xHigherPriorityTaskWoken;
+
+	// We have not woken a task at the start of the ISR.
+	xHigherPriorityTaskWoken = pdFALSE;
+
+	// Loop until the buffer is empty.
+	do
+	{
+		// Obtain a byte from the buffer.
+		cIn = portINPUT_BYTE( RX_REGISTER_ADDRESS );
+
+		// Post the byte.
+		xQueueSendFromISR( xRxQueue, &cIn, &xHigherPriorityTaskWoken );
+
+	} while( portINPUT_BYTE( BUFFER_COUNT ) );
+
+	// Now the buffer is empty we can switch context if necessary.
+	if( xHigherPriorityTaskWoken )
+	{
+		// Actual macro used here is port specific.
+		portYIELD_FROM_ISR ();
+	}
+ }
+ 
+ * + * \defgroup xQueueSendFromISR xQueueSendFromISR + * \ingroup QueueManagement + */ +#define xQueueSendFromISR( xQueue, pvItemToQueue, pxHigherPriorityTaskWoken ) xQueueGenericSendFromISR( ( xQueue ), ( pvItemToQueue ), ( pxHigherPriorityTaskWoken ), queueSEND_TO_BACK ) + +/** + * queue. h + *
+ BaseType_t xQueueGenericSendFromISR(
+										   QueueHandle_t		xQueue,
+										   const	void	*pvItemToQueue,
+										   BaseType_t	*pxHigherPriorityTaskWoken,
+										   BaseType_t	xCopyPosition
+									   );
+ 
+ * + * It is preferred that the macros xQueueSendFromISR(), + * xQueueSendToFrontFromISR() and xQueueSendToBackFromISR() be used in place + * of calling this function directly. xQueueGiveFromISR() is an + * equivalent for use by semaphores that don't actually copy any data. + * + * Post an item on a queue. It is safe to use this function from within an + * interrupt service routine. + * + * Items are queued by copy not reference so it is preferable to only + * queue small items, especially when called from an ISR. In most cases + * it would be preferable to store a pointer to the item being queued. + * + * @param xQueue The handle to the queue on which the item is to be posted. + * + * @param pvItemToQueue A pointer to the item that is to be placed on the + * queue. The size of the items the queue will hold was defined when the + * queue was created, so this many bytes will be copied from pvItemToQueue + * into the queue storage area. + * + * @param pxHigherPriorityTaskWoken xQueueGenericSendFromISR() will set + * *pxHigherPriorityTaskWoken to pdTRUE if sending to the queue caused a task + * to unblock, and the unblocked task has a priority higher than the currently + * running task. If xQueueGenericSendFromISR() sets this value to pdTRUE then + * a context switch should be requested before the interrupt is exited. + * + * @param xCopyPosition Can take the value queueSEND_TO_BACK to place the + * item at the back of the queue, or queueSEND_TO_FRONT to place the item + * at the front of the queue (for high priority messages). + * + * @return pdTRUE if the data was successfully sent to the queue, otherwise + * errQUEUE_FULL. + * + * Example usage for buffered IO (where the ISR can obtain more than one value + * per call): +
+ void vBufferISR( void )
+ {
+ char cIn;
+ BaseType_t xHigherPriorityTaskWokenByPost;
+
+	// We have not woken a task at the start of the ISR.
+	xHigherPriorityTaskWokenByPost = pdFALSE;
+
+	// Loop until the buffer is empty.
+	do
+	{
+		// Obtain a byte from the buffer.
+		cIn = portINPUT_BYTE( RX_REGISTER_ADDRESS );
+
+		// Post each byte.
+		xQueueGenericSendFromISR( xRxQueue, &cIn, &xHigherPriorityTaskWokenByPost, queueSEND_TO_BACK );
+
+	} while( portINPUT_BYTE( BUFFER_COUNT ) );
+
+	// Now the buffer is empty we can switch context if necessary.  Note that the
+	// name of the yield function required is port specific.
+	if( xHigherPriorityTaskWokenByPost )
+	{
+		portYIELD_FROM_ISR();
+	}
+ }
+ 
+ * + * \defgroup xQueueSendFromISR xQueueSendFromISR + * \ingroup QueueManagement + */ +BaseType_t xQueueGenericSendFromISR( QueueHandle_t xQueue, const void * const pvItemToQueue, BaseType_t * const pxHigherPriorityTaskWoken, const BaseType_t xCopyPosition ) PRIVILEGED_FUNCTION; +BaseType_t xQueueGiveFromISR( QueueHandle_t xQueue, BaseType_t * const pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION; + +/** + * queue. h + *
+ BaseType_t xQueueReceiveFromISR(
+									   QueueHandle_t	xQueue,
+									   void	*pvBuffer,
+									   BaseType_t *pxTaskWoken
+								   );
+ * 
+ * + * Receive an item from a queue. It is safe to use this function from within an + * interrupt service routine. + * + * @param xQueue The handle to the queue from which the item is to be + * received. + * + * @param pvBuffer Pointer to the buffer into which the received item will + * be copied. + * + * @param pxTaskWoken A task may be blocked waiting for space to become + * available on the queue. If xQueueReceiveFromISR causes such a task to + * unblock *pxTaskWoken will get set to pdTRUE, otherwise *pxTaskWoken will + * remain unchanged. + * + * @return pdTRUE if an item was successfully received from the queue, + * otherwise pdFALSE. + * + * Example usage: +
+
+ QueueHandle_t xQueue;
+
+ // Function to create a queue and post some values.
+ void vAFunction( void *pvParameters )
+ {
+ char cValueToPost;
+ const TickType_t xTicksToWait = ( TickType_t )0xff;
+
+	// Create a queue capable of containing 10 characters.
+	xQueue = xQueueCreate( 10, sizeof( char ) );
+	if( xQueue == 0 )
+	{
+		// Failed to create the queue.
+	}
+
+	// ...
+
+	// Post some characters that will be used within an ISR.  If the queue
+	// is full then this task will block for xTicksToWait ticks.
+	cValueToPost = 'a';
+	xQueueSend( xQueue, ( void * ) &cValueToPost, xTicksToWait );
+	cValueToPost = 'b';
+	xQueueSend( xQueue, ( void * ) &cValueToPost, xTicksToWait );
+
+	// ... keep posting characters ... this task may block when the queue
+	// becomes full.
+
+	cValueToPost = 'c';
+	xQueueSend( xQueue, ( void * ) &cValueToPost, xTicksToWait );
+ }
+
+ // ISR that outputs all the characters received on the queue.
+ void vISR_Routine( void )
+ {
+ BaseType_t xTaskWokenByReceive = pdFALSE;
+ char cRxedChar;
+
+	while( xQueueReceiveFromISR( xQueue, ( void * ) &cRxedChar, &xTaskWokenByReceive) )
+	{
+		// A character was received.  Output the character now.
+		vOutputCharacter( cRxedChar );
+
+		// If removing the character from the queue woke the task that was
+		// posting onto the queue cTaskWokenByReceive will have been set to
+		// pdTRUE.  No matter how many times this loop iterates only one
+		// task will be woken.
+	}
+
+	if( cTaskWokenByPost != ( char ) pdFALSE;
+	{
+		taskYIELD ();
+	}
+ }
+ 
+ * \defgroup xQueueReceiveFromISR xQueueReceiveFromISR + * \ingroup QueueManagement + */ +BaseType_t xQueueReceiveFromISR( QueueHandle_t xQueue, void * const pvBuffer, BaseType_t * const pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION; + +/* + * Utilities to query queues that are safe to use from an ISR. These utilities + * should be used only from witin an ISR, or within a critical section. + */ +BaseType_t xQueueIsQueueEmptyFromISR( const QueueHandle_t xQueue ) PRIVILEGED_FUNCTION; +BaseType_t xQueueIsQueueFullFromISR( const QueueHandle_t xQueue ) PRIVILEGED_FUNCTION; +UBaseType_t uxQueueMessagesWaitingFromISR( const QueueHandle_t xQueue ) PRIVILEGED_FUNCTION; + +/* + * The functions defined above are for passing data to and from tasks. The + * functions below are the equivalents for passing data to and from + * co-routines. + * + * These functions are called from the co-routine macro implementation and + * should not be called directly from application code. Instead use the macro + * wrappers defined within croutine.h. + */ +BaseType_t xQueueCRSendFromISR( QueueHandle_t xQueue, const void *pvItemToQueue, BaseType_t xCoRoutinePreviouslyWoken ); +BaseType_t xQueueCRReceiveFromISR( QueueHandle_t xQueue, void *pvBuffer, BaseType_t *pxTaskWoken ); +BaseType_t xQueueCRSend( QueueHandle_t xQueue, const void *pvItemToQueue, TickType_t xTicksToWait ); +BaseType_t xQueueCRReceive( QueueHandle_t xQueue, void *pvBuffer, TickType_t xTicksToWait ); + +/* + * For internal use only. Use xSemaphoreCreateMutex(), + * xSemaphoreCreateCounting() or xSemaphoreGetMutexHolder() instead of calling + * these functions directly. + */ +QueueHandle_t xQueueCreateMutex( const uint8_t ucQueueType ) PRIVILEGED_FUNCTION; +QueueHandle_t xQueueCreateMutexStatic( const uint8_t ucQueueType, StaticQueue_t *pxStaticQueue ) PRIVILEGED_FUNCTION; +QueueHandle_t xQueueCreateCountingSemaphore( const UBaseType_t uxMaxCount, const UBaseType_t uxInitialCount ) PRIVILEGED_FUNCTION; +QueueHandle_t xQueueCreateCountingSemaphoreStatic( const UBaseType_t uxMaxCount, const UBaseType_t uxInitialCount, StaticQueue_t *pxStaticQueue ) PRIVILEGED_FUNCTION; +BaseType_t xQueueSemaphoreTake( QueueHandle_t xQueue, TickType_t xTicksToWait ) PRIVILEGED_FUNCTION; +TaskHandle_t xQueueGetMutexHolder( QueueHandle_t xSemaphore ) PRIVILEGED_FUNCTION; +TaskHandle_t xQueueGetMutexHolderFromISR( QueueHandle_t xSemaphore ) PRIVILEGED_FUNCTION; + +/* + * For internal use only. Use xSemaphoreTakeMutexRecursive() or + * xSemaphoreGiveMutexRecursive() instead of calling these functions directly. + */ +BaseType_t xQueueTakeMutexRecursive( QueueHandle_t xMutex, TickType_t xTicksToWait ) PRIVILEGED_FUNCTION; +BaseType_t xQueueGiveMutexRecursive( QueueHandle_t xMutex ) PRIVILEGED_FUNCTION; + +/* + * Reset a queue back to its original empty state. The return value is now + * obsolete and is always set to pdPASS. + */ +#define xQueueReset( xQueue ) xQueueGenericReset( xQueue, pdFALSE ) + +/* + * The registry is provided as a means for kernel aware debuggers to + * locate queues, semaphores and mutexes. Call vQueueAddToRegistry() add + * a queue, semaphore or mutex handle to the registry if you want the handle + * to be available to a kernel aware debugger. If you are not using a kernel + * aware debugger then this function can be ignored. + * + * configQUEUE_REGISTRY_SIZE defines the maximum number of handles the + * registry can hold. configQUEUE_REGISTRY_SIZE must be greater than 0 + * within FreeRTOSConfig.h for the registry to be available. Its value + * does not effect the number of queues, semaphores and mutexes that can be + * created - just the number that the registry can hold. + * + * @param xQueue The handle of the queue being added to the registry. This + * is the handle returned by a call to xQueueCreate(). Semaphore and mutex + * handles can also be passed in here. + * + * @param pcName The name to be associated with the handle. This is the + * name that the kernel aware debugger will display. The queue registry only + * stores a pointer to the string - so the string must be persistent (global or + * preferably in ROM/Flash), not on the stack. + */ +#if( configQUEUE_REGISTRY_SIZE > 0 ) + void vQueueAddToRegistry( QueueHandle_t xQueue, const char *pcQueueName ) PRIVILEGED_FUNCTION; /*lint !e971 Unqualified char types are allowed for strings and single characters only. */ +#endif + +/* + * The registry is provided as a means for kernel aware debuggers to + * locate queues, semaphores and mutexes. Call vQueueAddToRegistry() add + * a queue, semaphore or mutex handle to the registry if you want the handle + * to be available to a kernel aware debugger, and vQueueUnregisterQueue() to + * remove the queue, semaphore or mutex from the register. If you are not using + * a kernel aware debugger then this function can be ignored. + * + * @param xQueue The handle of the queue being removed from the registry. + */ +#if( configQUEUE_REGISTRY_SIZE > 0 ) + void vQueueUnregisterQueue( QueueHandle_t xQueue ) PRIVILEGED_FUNCTION; +#endif + +/* + * The queue registry is provided as a means for kernel aware debuggers to + * locate queues, semaphores and mutexes. Call pcQueueGetName() to look + * up and return the name of a queue in the queue registry from the queue's + * handle. + * + * @param xQueue The handle of the queue the name of which will be returned. + * @return If the queue is in the registry then a pointer to the name of the + * queue is returned. If the queue is not in the registry then NULL is + * returned. + */ +#if( configQUEUE_REGISTRY_SIZE > 0 ) + const char *pcQueueGetName( QueueHandle_t xQueue ) PRIVILEGED_FUNCTION; /*lint !e971 Unqualified char types are allowed for strings and single characters only. */ +#endif + +/* + * Generic version of the function used to creaet a queue using dynamic memory + * allocation. This is called by other functions and macros that create other + * RTOS objects that use the queue structure as their base. + */ +#if( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) + QueueHandle_t xQueueGenericCreate( const UBaseType_t uxQueueLength, const UBaseType_t uxItemSize, const uint8_t ucQueueType ) PRIVILEGED_FUNCTION; +#endif + +/* + * Generic version of the function used to creaet a queue using dynamic memory + * allocation. This is called by other functions and macros that create other + * RTOS objects that use the queue structure as their base. + */ +#if( configSUPPORT_STATIC_ALLOCATION == 1 ) + QueueHandle_t xQueueGenericCreateStatic( const UBaseType_t uxQueueLength, const UBaseType_t uxItemSize, uint8_t *pucQueueStorage, StaticQueue_t *pxStaticQueue, const uint8_t ucQueueType ) PRIVILEGED_FUNCTION; +#endif + +/* + * Queue sets provide a mechanism to allow a task to block (pend) on a read + * operation from multiple queues or semaphores simultaneously. + * + * See FreeRTOS/Source/Demo/Common/Minimal/QueueSet.c for an example using this + * function. + * + * A queue set must be explicitly created using a call to xQueueCreateSet() + * before it can be used. Once created, standard FreeRTOS queues and semaphores + * can be added to the set using calls to xQueueAddToSet(). + * xQueueSelectFromSet() is then used to determine which, if any, of the queues + * or semaphores contained in the set is in a state where a queue read or + * semaphore take operation would be successful. + * + * Note 1: See the documentation on http://wwwFreeRTOS.org/RTOS-queue-sets.html + * for reasons why queue sets are very rarely needed in practice as there are + * simpler methods of blocking on multiple objects. + * + * Note 2: Blocking on a queue set that contains a mutex will not cause the + * mutex holder to inherit the priority of the blocked task. + * + * Note 3: An additional 4 bytes of RAM is required for each space in a every + * queue added to a queue set. Therefore counting semaphores that have a high + * maximum count value should not be added to a queue set. + * + * Note 4: A receive (in the case of a queue) or take (in the case of a + * semaphore) operation must not be performed on a member of a queue set unless + * a call to xQueueSelectFromSet() has first returned a handle to that set member. + * + * @param uxEventQueueLength Queue sets store events that occur on + * the queues and semaphores contained in the set. uxEventQueueLength specifies + * the maximum number of events that can be queued at once. To be absolutely + * certain that events are not lost uxEventQueueLength should be set to the + * total sum of the length of the queues added to the set, where binary + * semaphores and mutexes have a length of 1, and counting semaphores have a + * length set by their maximum count value. Examples: + * + If a queue set is to hold a queue of length 5, another queue of length 12, + * and a binary semaphore, then uxEventQueueLength should be set to + * (5 + 12 + 1), or 18. + * + If a queue set is to hold three binary semaphores then uxEventQueueLength + * should be set to (1 + 1 + 1 ), or 3. + * + If a queue set is to hold a counting semaphore that has a maximum count of + * 5, and a counting semaphore that has a maximum count of 3, then + * uxEventQueueLength should be set to (5 + 3), or 8. + * + * @return If the queue set is created successfully then a handle to the created + * queue set is returned. Otherwise NULL is returned. + */ +QueueSetHandle_t xQueueCreateSet( const UBaseType_t uxEventQueueLength ) PRIVILEGED_FUNCTION; + +/* + * Adds a queue or semaphore to a queue set that was previously created by a + * call to xQueueCreateSet(). + * + * See FreeRTOS/Source/Demo/Common/Minimal/QueueSet.c for an example using this + * function. + * + * Note 1: A receive (in the case of a queue) or take (in the case of a + * semaphore) operation must not be performed on a member of a queue set unless + * a call to xQueueSelectFromSet() has first returned a handle to that set member. + * + * @param xQueueOrSemaphore The handle of the queue or semaphore being added to + * the queue set (cast to an QueueSetMemberHandle_t type). + * + * @param xQueueSet The handle of the queue set to which the queue or semaphore + * is being added. + * + * @return If the queue or semaphore was successfully added to the queue set + * then pdPASS is returned. If the queue could not be successfully added to the + * queue set because it is already a member of a different queue set then pdFAIL + * is returned. + */ +BaseType_t xQueueAddToSet( QueueSetMemberHandle_t xQueueOrSemaphore, QueueSetHandle_t xQueueSet ) PRIVILEGED_FUNCTION; + +/* + * Removes a queue or semaphore from a queue set. A queue or semaphore can only + * be removed from a set if the queue or semaphore is empty. + * + * See FreeRTOS/Source/Demo/Common/Minimal/QueueSet.c for an example using this + * function. + * + * @param xQueueOrSemaphore The handle of the queue or semaphore being removed + * from the queue set (cast to an QueueSetMemberHandle_t type). + * + * @param xQueueSet The handle of the queue set in which the queue or semaphore + * is included. + * + * @return If the queue or semaphore was successfully removed from the queue set + * then pdPASS is returned. If the queue was not in the queue set, or the + * queue (or semaphore) was not empty, then pdFAIL is returned. + */ +BaseType_t xQueueRemoveFromSet( QueueSetMemberHandle_t xQueueOrSemaphore, QueueSetHandle_t xQueueSet ) PRIVILEGED_FUNCTION; + +/* + * xQueueSelectFromSet() selects from the members of a queue set a queue or + * semaphore that either contains data (in the case of a queue) or is available + * to take (in the case of a semaphore). xQueueSelectFromSet() effectively + * allows a task to block (pend) on a read operation on all the queues and + * semaphores in a queue set simultaneously. + * + * See FreeRTOS/Source/Demo/Common/Minimal/QueueSet.c for an example using this + * function. + * + * Note 1: See the documentation on http://wwwFreeRTOS.org/RTOS-queue-sets.html + * for reasons why queue sets are very rarely needed in practice as there are + * simpler methods of blocking on multiple objects. + * + * Note 2: Blocking on a queue set that contains a mutex will not cause the + * mutex holder to inherit the priority of the blocked task. + * + * Note 3: A receive (in the case of a queue) or take (in the case of a + * semaphore) operation must not be performed on a member of a queue set unless + * a call to xQueueSelectFromSet() has first returned a handle to that set member. + * + * @param xQueueSet The queue set on which the task will (potentially) block. + * + * @param xTicksToWait The maximum time, in ticks, that the calling task will + * remain in the Blocked state (with other tasks executing) to wait for a member + * of the queue set to be ready for a successful queue read or semaphore take + * operation. + * + * @return xQueueSelectFromSet() will return the handle of a queue (cast to + * a QueueSetMemberHandle_t type) contained in the queue set that contains data, + * or the handle of a semaphore (cast to a QueueSetMemberHandle_t type) contained + * in the queue set that is available, or NULL if no such queue or semaphore + * exists before before the specified block time expires. + */ +QueueSetMemberHandle_t xQueueSelectFromSet( QueueSetHandle_t xQueueSet, const TickType_t xTicksToWait ) PRIVILEGED_FUNCTION; + +/* + * A version of xQueueSelectFromSet() that can be used from an ISR. + */ +QueueSetMemberHandle_t xQueueSelectFromSetFromISR( QueueSetHandle_t xQueueSet ) PRIVILEGED_FUNCTION; + +/* Not public API functions. */ +void vQueueWaitForMessageRestricted( QueueHandle_t xQueue, TickType_t xTicksToWait, const BaseType_t xWaitIndefinitely ) PRIVILEGED_FUNCTION; +BaseType_t xQueueGenericReset( QueueHandle_t xQueue, BaseType_t xNewQueue ) PRIVILEGED_FUNCTION; +void vQueueSetQueueNumber( QueueHandle_t xQueue, UBaseType_t uxQueueNumber ) PRIVILEGED_FUNCTION; +UBaseType_t uxQueueGetQueueNumber( QueueHandle_t xQueue ) PRIVILEGED_FUNCTION; +uint8_t ucQueueGetQueueType( QueueHandle_t xQueue ) PRIVILEGED_FUNCTION; + + +#ifdef __cplusplus +} +#endif + +#endif /* QUEUE_H */ + diff --git a/firmware/Middlewares/Third_Party/FreeRTOS/Source/include/semphr.h b/firmware/Middlewares/Third_Party/FreeRTOS/Source/include/semphr.h new file mode 100644 index 0000000..787c791 --- /dev/null +++ b/firmware/Middlewares/Third_Party/FreeRTOS/Source/include/semphr.h @@ -0,0 +1,1140 @@ +/* + * FreeRTOS Kernel V10.3.1 + * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * http://www.FreeRTOS.org + * http://aws.amazon.com/freertos + * + * 1 tab == 4 spaces! + */ + +#ifndef SEMAPHORE_H +#define SEMAPHORE_H + +#ifndef INC_FREERTOS_H + #error "include FreeRTOS.h" must appear in source files before "include semphr.h" +#endif + +#include "queue.h" + +typedef QueueHandle_t SemaphoreHandle_t; + +#define semBINARY_SEMAPHORE_QUEUE_LENGTH ( ( uint8_t ) 1U ) +#define semSEMAPHORE_QUEUE_ITEM_LENGTH ( ( uint8_t ) 0U ) +#define semGIVE_BLOCK_TIME ( ( TickType_t ) 0U ) + + +/** + * semphr. h + *
vSemaphoreCreateBinary( SemaphoreHandle_t xSemaphore )
+ * + * In many usage scenarios it is faster and more memory efficient to use a + * direct to task notification in place of a binary semaphore! + * http://www.freertos.org/RTOS-task-notifications.html + * + * This old vSemaphoreCreateBinary() macro is now deprecated in favour of the + * xSemaphoreCreateBinary() function. Note that binary semaphores created using + * the vSemaphoreCreateBinary() macro are created in a state such that the + * first call to 'take' the semaphore would pass, whereas binary semaphores + * created using xSemaphoreCreateBinary() are created in a state such that the + * the semaphore must first be 'given' before it can be 'taken'. + * + * Macro that implements a semaphore by using the existing queue mechanism. + * The queue length is 1 as this is a binary semaphore. The data size is 0 + * as we don't want to actually store any data - we just want to know if the + * queue is empty or full. + * + * This type of semaphore can be used for pure synchronisation between tasks or + * between an interrupt and a task. The semaphore need not be given back once + * obtained, so one task/interrupt can continuously 'give' the semaphore while + * another continuously 'takes' the semaphore. For this reason this type of + * semaphore does not use a priority inheritance mechanism. For an alternative + * that does use priority inheritance see xSemaphoreCreateMutex(). + * + * @param xSemaphore Handle to the created semaphore. Should be of type SemaphoreHandle_t. + * + * Example usage: +
+ SemaphoreHandle_t xSemaphore = NULL;
+
+ void vATask( void * pvParameters )
+ {
+    // Semaphore cannot be used before a call to vSemaphoreCreateBinary ().
+    // This is a macro so pass the variable in directly.
+    vSemaphoreCreateBinary( xSemaphore );
+
+    if( xSemaphore != NULL )
+    {
+        // The semaphore was created successfully.
+        // The semaphore can now be used.
+    }
+ }
+ 
+ * \defgroup vSemaphoreCreateBinary vSemaphoreCreateBinary + * \ingroup Semaphores + */ +#if( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) + #define vSemaphoreCreateBinary( xSemaphore ) \ + { \ + ( xSemaphore ) = xQueueGenericCreate( ( UBaseType_t ) 1, semSEMAPHORE_QUEUE_ITEM_LENGTH, queueQUEUE_TYPE_BINARY_SEMAPHORE ); \ + if( ( xSemaphore ) != NULL ) \ + { \ + ( void ) xSemaphoreGive( ( xSemaphore ) ); \ + } \ + } +#endif + +/** + * semphr. h + *
SemaphoreHandle_t xSemaphoreCreateBinary( void )
+ * + * Creates a new binary semaphore instance, and returns a handle by which the + * new semaphore can be referenced. + * + * In many usage scenarios it is faster and more memory efficient to use a + * direct to task notification in place of a binary semaphore! + * http://www.freertos.org/RTOS-task-notifications.html + * + * Internally, within the FreeRTOS implementation, binary semaphores use a block + * of memory, in which the semaphore structure is stored. If a binary semaphore + * is created using xSemaphoreCreateBinary() then the required memory is + * automatically dynamically allocated inside the xSemaphoreCreateBinary() + * function. (see http://www.freertos.org/a00111.html). If a binary semaphore + * is created using xSemaphoreCreateBinaryStatic() then the application writer + * must provide the memory. xSemaphoreCreateBinaryStatic() therefore allows a + * binary semaphore to be created without using any dynamic memory allocation. + * + * The old vSemaphoreCreateBinary() macro is now deprecated in favour of this + * xSemaphoreCreateBinary() function. Note that binary semaphores created using + * the vSemaphoreCreateBinary() macro are created in a state such that the + * first call to 'take' the semaphore would pass, whereas binary semaphores + * created using xSemaphoreCreateBinary() are created in a state such that the + * the semaphore must first be 'given' before it can be 'taken'. + * + * This type of semaphore can be used for pure synchronisation between tasks or + * between an interrupt and a task. The semaphore need not be given back once + * obtained, so one task/interrupt can continuously 'give' the semaphore while + * another continuously 'takes' the semaphore. For this reason this type of + * semaphore does not use a priority inheritance mechanism. For an alternative + * that does use priority inheritance see xSemaphoreCreateMutex(). + * + * @return Handle to the created semaphore, or NULL if the memory required to + * hold the semaphore's data structures could not be allocated. + * + * Example usage: +
+ SemaphoreHandle_t xSemaphore = NULL;
+
+ void vATask( void * pvParameters )
+ {
+    // Semaphore cannot be used before a call to xSemaphoreCreateBinary().
+    // This is a macro so pass the variable in directly.
+    xSemaphore = xSemaphoreCreateBinary();
+
+    if( xSemaphore != NULL )
+    {
+        // The semaphore was created successfully.
+        // The semaphore can now be used.
+    }
+ }
+ 
+ * \defgroup xSemaphoreCreateBinary xSemaphoreCreateBinary + * \ingroup Semaphores + */ +#if( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) + #define xSemaphoreCreateBinary() xQueueGenericCreate( ( UBaseType_t ) 1, semSEMAPHORE_QUEUE_ITEM_LENGTH, queueQUEUE_TYPE_BINARY_SEMAPHORE ) +#endif + +/** + * semphr. h + *
SemaphoreHandle_t xSemaphoreCreateBinaryStatic( StaticSemaphore_t *pxSemaphoreBuffer )
+ * + * Creates a new binary semaphore instance, and returns a handle by which the + * new semaphore can be referenced. + * + * NOTE: In many usage scenarios it is faster and more memory efficient to use a + * direct to task notification in place of a binary semaphore! + * http://www.freertos.org/RTOS-task-notifications.html + * + * Internally, within the FreeRTOS implementation, binary semaphores use a block + * of memory, in which the semaphore structure is stored. If a binary semaphore + * is created using xSemaphoreCreateBinary() then the required memory is + * automatically dynamically allocated inside the xSemaphoreCreateBinary() + * function. (see http://www.freertos.org/a00111.html). If a binary semaphore + * is created using xSemaphoreCreateBinaryStatic() then the application writer + * must provide the memory. xSemaphoreCreateBinaryStatic() therefore allows a + * binary semaphore to be created without using any dynamic memory allocation. + * + * This type of semaphore can be used for pure synchronisation between tasks or + * between an interrupt and a task. The semaphore need not be given back once + * obtained, so one task/interrupt can continuously 'give' the semaphore while + * another continuously 'takes' the semaphore. For this reason this type of + * semaphore does not use a priority inheritance mechanism. For an alternative + * that does use priority inheritance see xSemaphoreCreateMutex(). + * + * @param pxSemaphoreBuffer Must point to a variable of type StaticSemaphore_t, + * which will then be used to hold the semaphore's data structure, removing the + * need for the memory to be allocated dynamically. + * + * @return If the semaphore is created then a handle to the created semaphore is + * returned. If pxSemaphoreBuffer is NULL then NULL is returned. + * + * Example usage: +
+ SemaphoreHandle_t xSemaphore = NULL;
+ StaticSemaphore_t xSemaphoreBuffer;
+
+ void vATask( void * pvParameters )
+ {
+    // Semaphore cannot be used before a call to xSemaphoreCreateBinary().
+    // The semaphore's data structures will be placed in the xSemaphoreBuffer
+    // variable, the address of which is passed into the function.  The
+    // function's parameter is not NULL, so the function will not attempt any
+    // dynamic memory allocation, and therefore the function will not return
+    // return NULL.
+    xSemaphore = xSemaphoreCreateBinary( &xSemaphoreBuffer );
+
+    // Rest of task code goes here.
+ }
+ 
+ * \defgroup xSemaphoreCreateBinaryStatic xSemaphoreCreateBinaryStatic + * \ingroup Semaphores + */ +#if( configSUPPORT_STATIC_ALLOCATION == 1 ) + #define xSemaphoreCreateBinaryStatic( pxStaticSemaphore ) xQueueGenericCreateStatic( ( UBaseType_t ) 1, semSEMAPHORE_QUEUE_ITEM_LENGTH, NULL, pxStaticSemaphore, queueQUEUE_TYPE_BINARY_SEMAPHORE ) +#endif /* configSUPPORT_STATIC_ALLOCATION */ + +/** + * semphr. h + *
xSemaphoreTake(
+ *                   SemaphoreHandle_t xSemaphore,
+ *                   TickType_t xBlockTime
+ *               )
+ * + * Macro to obtain a semaphore. The semaphore must have previously been + * created with a call to xSemaphoreCreateBinary(), xSemaphoreCreateMutex() or + * xSemaphoreCreateCounting(). + * + * @param xSemaphore A handle to the semaphore being taken - obtained when + * the semaphore was created. + * + * @param xBlockTime The time in ticks to wait for the semaphore to become + * available. The macro portTICK_PERIOD_MS can be used to convert this to a + * real time. A block time of zero can be used to poll the semaphore. A block + * time of portMAX_DELAY can be used to block indefinitely (provided + * INCLUDE_vTaskSuspend is set to 1 in FreeRTOSConfig.h). + * + * @return pdTRUE if the semaphore was obtained. pdFALSE + * if xBlockTime expired without the semaphore becoming available. + * + * Example usage: +
+ SemaphoreHandle_t xSemaphore = NULL;
+
+ // A task that creates a semaphore.
+ void vATask( void * pvParameters )
+ {
+    // Create the semaphore to guard a shared resource.
+    xSemaphore = xSemaphoreCreateBinary();
+ }
+
+ // A task that uses the semaphore.
+ void vAnotherTask( void * pvParameters )
+ {
+    // ... Do other things.
+
+    if( xSemaphore != NULL )
+    {
+        // See if we can obtain the semaphore.  If the semaphore is not available
+        // wait 10 ticks to see if it becomes free.
+        if( xSemaphoreTake( xSemaphore, ( TickType_t ) 10 ) == pdTRUE )
+        {
+            // We were able to obtain the semaphore and can now access the
+            // shared resource.
+
+            // ...
+
+            // We have finished accessing the shared resource.  Release the
+            // semaphore.
+            xSemaphoreGive( xSemaphore );
+        }
+        else
+        {
+            // We could not obtain the semaphore and can therefore not access
+            // the shared resource safely.
+        }
+    }
+ }
+ 
+ * \defgroup xSemaphoreTake xSemaphoreTake + * \ingroup Semaphores + */ +#define xSemaphoreTake( xSemaphore, xBlockTime ) xQueueSemaphoreTake( ( xSemaphore ), ( xBlockTime ) ) + +/** + * semphr. h + * xSemaphoreTakeRecursive( + * SemaphoreHandle_t xMutex, + * TickType_t xBlockTime + * ) + * + * Macro to recursively obtain, or 'take', a mutex type semaphore. + * The mutex must have previously been created using a call to + * xSemaphoreCreateRecursiveMutex(); + * + * configUSE_RECURSIVE_MUTEXES must be set to 1 in FreeRTOSConfig.h for this + * macro to be available. + * + * This macro must not be used on mutexes created using xSemaphoreCreateMutex(). + * + * A mutex used recursively can be 'taken' repeatedly by the owner. The mutex + * doesn't become available again until the owner has called + * xSemaphoreGiveRecursive() for each successful 'take' request. For example, + * if a task successfully 'takes' the same mutex 5 times then the mutex will + * not be available to any other task until it has also 'given' the mutex back + * exactly five times. + * + * @param xMutex A handle to the mutex being obtained. This is the + * handle returned by xSemaphoreCreateRecursiveMutex(); + * + * @param xBlockTime The time in ticks to wait for the semaphore to become + * available. The macro portTICK_PERIOD_MS can be used to convert this to a + * real time. A block time of zero can be used to poll the semaphore. If + * the task already owns the semaphore then xSemaphoreTakeRecursive() will + * return immediately no matter what the value of xBlockTime. + * + * @return pdTRUE if the semaphore was obtained. pdFALSE if xBlockTime + * expired without the semaphore becoming available. + * + * Example usage: +
+ SemaphoreHandle_t xMutex = NULL;
+
+ // A task that creates a mutex.
+ void vATask( void * pvParameters )
+ {
+    // Create the mutex to guard a shared resource.
+    xMutex = xSemaphoreCreateRecursiveMutex();
+ }
+
+ // A task that uses the mutex.
+ void vAnotherTask( void * pvParameters )
+ {
+    // ... Do other things.
+
+    if( xMutex != NULL )
+    {
+        // See if we can obtain the mutex.  If the mutex is not available
+        // wait 10 ticks to see if it becomes free.
+        if( xSemaphoreTakeRecursive( xSemaphore, ( TickType_t ) 10 ) == pdTRUE )
+        {
+            // We were able to obtain the mutex and can now access the
+            // shared resource.
+
+            // ...
+            // For some reason due to the nature of the code further calls to
+            // xSemaphoreTakeRecursive() are made on the same mutex.  In real
+            // code these would not be just sequential calls as this would make
+            // no sense.  Instead the calls are likely to be buried inside
+            // a more complex call structure.
+            xSemaphoreTakeRecursive( xMutex, ( TickType_t ) 10 );
+            xSemaphoreTakeRecursive( xMutex, ( TickType_t ) 10 );
+
+            // The mutex has now been 'taken' three times, so will not be
+            // available to another task until it has also been given back
+            // three times.  Again it is unlikely that real code would have
+            // these calls sequentially, but instead buried in a more complex
+            // call structure.  This is just for illustrative purposes.
+            xSemaphoreGiveRecursive( xMutex );
+            xSemaphoreGiveRecursive( xMutex );
+            xSemaphoreGiveRecursive( xMutex );
+
+            // Now the mutex can be taken by other tasks.
+        }
+        else
+        {
+            // We could not obtain the mutex and can therefore not access
+            // the shared resource safely.
+        }
+    }
+ }
+ 
+ * \defgroup xSemaphoreTakeRecursive xSemaphoreTakeRecursive + * \ingroup Semaphores + */ +#if( configUSE_RECURSIVE_MUTEXES == 1 ) + #define xSemaphoreTakeRecursive( xMutex, xBlockTime ) xQueueTakeMutexRecursive( ( xMutex ), ( xBlockTime ) ) +#endif + +/** + * semphr. h + *
xSemaphoreGive( SemaphoreHandle_t xSemaphore )
+ * + * Macro to release a semaphore. The semaphore must have previously been + * created with a call to xSemaphoreCreateBinary(), xSemaphoreCreateMutex() or + * xSemaphoreCreateCounting(). and obtained using sSemaphoreTake(). + * + * This macro must not be used from an ISR. See xSemaphoreGiveFromISR () for + * an alternative which can be used from an ISR. + * + * This macro must also not be used on semaphores created using + * xSemaphoreCreateRecursiveMutex(). + * + * @param xSemaphore A handle to the semaphore being released. This is the + * handle returned when the semaphore was created. + * + * @return pdTRUE if the semaphore was released. pdFALSE if an error occurred. + * Semaphores are implemented using queues. An error can occur if there is + * no space on the queue to post a message - indicating that the + * semaphore was not first obtained correctly. + * + * Example usage: +
+ SemaphoreHandle_t xSemaphore = NULL;
+
+ void vATask( void * pvParameters )
+ {
+    // Create the semaphore to guard a shared resource.
+    xSemaphore = vSemaphoreCreateBinary();
+
+    if( xSemaphore != NULL )
+    {
+        if( xSemaphoreGive( xSemaphore ) != pdTRUE )
+        {
+            // We would expect this call to fail because we cannot give
+            // a semaphore without first "taking" it!
+        }
+
+        // Obtain the semaphore - don't block if the semaphore is not
+        // immediately available.
+        if( xSemaphoreTake( xSemaphore, ( TickType_t ) 0 ) )
+        {
+            // We now have the semaphore and can access the shared resource.
+
+            // ...
+
+            // We have finished accessing the shared resource so can free the
+            // semaphore.
+            if( xSemaphoreGive( xSemaphore ) != pdTRUE )
+            {
+                // We would not expect this call to fail because we must have
+                // obtained the semaphore to get here.
+            }
+        }
+    }
+ }
+ 
+ * \defgroup xSemaphoreGive xSemaphoreGive + * \ingroup Semaphores + */ +#define xSemaphoreGive( xSemaphore ) xQueueGenericSend( ( QueueHandle_t ) ( xSemaphore ), NULL, semGIVE_BLOCK_TIME, queueSEND_TO_BACK ) + +/** + * semphr. h + *
xSemaphoreGiveRecursive( SemaphoreHandle_t xMutex )
+ * + * Macro to recursively release, or 'give', a mutex type semaphore. + * The mutex must have previously been created using a call to + * xSemaphoreCreateRecursiveMutex(); + * + * configUSE_RECURSIVE_MUTEXES must be set to 1 in FreeRTOSConfig.h for this + * macro to be available. + * + * This macro must not be used on mutexes created using xSemaphoreCreateMutex(). + * + * A mutex used recursively can be 'taken' repeatedly by the owner. The mutex + * doesn't become available again until the owner has called + * xSemaphoreGiveRecursive() for each successful 'take' request. For example, + * if a task successfully 'takes' the same mutex 5 times then the mutex will + * not be available to any other task until it has also 'given' the mutex back + * exactly five times. + * + * @param xMutex A handle to the mutex being released, or 'given'. This is the + * handle returned by xSemaphoreCreateMutex(); + * + * @return pdTRUE if the semaphore was given. + * + * Example usage: +
+ SemaphoreHandle_t xMutex = NULL;
+
+ // A task that creates a mutex.
+ void vATask( void * pvParameters )
+ {
+    // Create the mutex to guard a shared resource.
+    xMutex = xSemaphoreCreateRecursiveMutex();
+ }
+
+ // A task that uses the mutex.
+ void vAnotherTask( void * pvParameters )
+ {
+    // ... Do other things.
+
+    if( xMutex != NULL )
+    {
+        // See if we can obtain the mutex.  If the mutex is not available
+        // wait 10 ticks to see if it becomes free.
+        if( xSemaphoreTakeRecursive( xMutex, ( TickType_t ) 10 ) == pdTRUE )
+        {
+            // We were able to obtain the mutex and can now access the
+            // shared resource.
+
+            // ...
+            // For some reason due to the nature of the code further calls to
+			// xSemaphoreTakeRecursive() are made on the same mutex.  In real
+			// code these would not be just sequential calls as this would make
+			// no sense.  Instead the calls are likely to be buried inside
+			// a more complex call structure.
+            xSemaphoreTakeRecursive( xMutex, ( TickType_t ) 10 );
+            xSemaphoreTakeRecursive( xMutex, ( TickType_t ) 10 );
+
+            // The mutex has now been 'taken' three times, so will not be
+			// available to another task until it has also been given back
+			// three times.  Again it is unlikely that real code would have
+			// these calls sequentially, it would be more likely that the calls
+			// to xSemaphoreGiveRecursive() would be called as a call stack
+			// unwound.  This is just for demonstrative purposes.
+            xSemaphoreGiveRecursive( xMutex );
+			xSemaphoreGiveRecursive( xMutex );
+			xSemaphoreGiveRecursive( xMutex );
+
+			// Now the mutex can be taken by other tasks.
+        }
+        else
+        {
+            // We could not obtain the mutex and can therefore not access
+            // the shared resource safely.
+        }
+    }
+ }
+ 
+ * \defgroup xSemaphoreGiveRecursive xSemaphoreGiveRecursive + * \ingroup Semaphores + */ +#if( configUSE_RECURSIVE_MUTEXES == 1 ) + #define xSemaphoreGiveRecursive( xMutex ) xQueueGiveMutexRecursive( ( xMutex ) ) +#endif + +/** + * semphr. h + *
+ xSemaphoreGiveFromISR(
+                          SemaphoreHandle_t xSemaphore,
+                          BaseType_t *pxHigherPriorityTaskWoken
+                      )
+ * + * Macro to release a semaphore. The semaphore must have previously been + * created with a call to xSemaphoreCreateBinary() or xSemaphoreCreateCounting(). + * + * Mutex type semaphores (those created using a call to xSemaphoreCreateMutex()) + * must not be used with this macro. + * + * This macro can be used from an ISR. + * + * @param xSemaphore A handle to the semaphore being released. This is the + * handle returned when the semaphore was created. + * + * @param pxHigherPriorityTaskWoken xSemaphoreGiveFromISR() will set + * *pxHigherPriorityTaskWoken to pdTRUE if giving the semaphore caused a task + * to unblock, and the unblocked task has a priority higher than the currently + * running task. If xSemaphoreGiveFromISR() sets this value to pdTRUE then + * a context switch should be requested before the interrupt is exited. + * + * @return pdTRUE if the semaphore was successfully given, otherwise errQUEUE_FULL. + * + * Example usage: +
+ \#define LONG_TIME 0xffff
+ \#define TICKS_TO_WAIT	10
+ SemaphoreHandle_t xSemaphore = NULL;
+
+ // Repetitive task.
+ void vATask( void * pvParameters )
+ {
+    for( ;; )
+    {
+        // We want this task to run every 10 ticks of a timer.  The semaphore
+        // was created before this task was started.
+
+        // Block waiting for the semaphore to become available.
+        if( xSemaphoreTake( xSemaphore, LONG_TIME ) == pdTRUE )
+        {
+            // It is time to execute.
+
+            // ...
+
+            // We have finished our task.  Return to the top of the loop where
+            // we will block on the semaphore until it is time to execute
+            // again.  Note when using the semaphore for synchronisation with an
+			// ISR in this manner there is no need to 'give' the semaphore back.
+        }
+    }
+ }
+
+ // Timer ISR
+ void vTimerISR( void * pvParameters )
+ {
+ static uint8_t ucLocalTickCount = 0;
+ static BaseType_t xHigherPriorityTaskWoken;
+
+    // A timer tick has occurred.
+
+    // ... Do other time functions.
+
+    // Is it time for vATask () to run?
+	xHigherPriorityTaskWoken = pdFALSE;
+    ucLocalTickCount++;
+    if( ucLocalTickCount >= TICKS_TO_WAIT )
+    {
+        // Unblock the task by releasing the semaphore.
+        xSemaphoreGiveFromISR( xSemaphore, &xHigherPriorityTaskWoken );
+
+        // Reset the count so we release the semaphore again in 10 ticks time.
+        ucLocalTickCount = 0;
+    }
+
+    if( xHigherPriorityTaskWoken != pdFALSE )
+    {
+        // We can force a context switch here.  Context switching from an
+        // ISR uses port specific syntax.  Check the demo task for your port
+        // to find the syntax required.
+    }
+ }
+ 
+ * \defgroup xSemaphoreGiveFromISR xSemaphoreGiveFromISR + * \ingroup Semaphores + */ +#define xSemaphoreGiveFromISR( xSemaphore, pxHigherPriorityTaskWoken ) xQueueGiveFromISR( ( QueueHandle_t ) ( xSemaphore ), ( pxHigherPriorityTaskWoken ) ) + +/** + * semphr. h + *
+ xSemaphoreTakeFromISR(
+                          SemaphoreHandle_t xSemaphore,
+                          BaseType_t *pxHigherPriorityTaskWoken
+                      )
+ * + * Macro to take a semaphore from an ISR. The semaphore must have + * previously been created with a call to xSemaphoreCreateBinary() or + * xSemaphoreCreateCounting(). + * + * Mutex type semaphores (those created using a call to xSemaphoreCreateMutex()) + * must not be used with this macro. + * + * This macro can be used from an ISR, however taking a semaphore from an ISR + * is not a common operation. It is likely to only be useful when taking a + * counting semaphore when an interrupt is obtaining an object from a resource + * pool (when the semaphore count indicates the number of resources available). + * + * @param xSemaphore A handle to the semaphore being taken. This is the + * handle returned when the semaphore was created. + * + * @param pxHigherPriorityTaskWoken xSemaphoreTakeFromISR() will set + * *pxHigherPriorityTaskWoken to pdTRUE if taking the semaphore caused a task + * to unblock, and the unblocked task has a priority higher than the currently + * running task. If xSemaphoreTakeFromISR() sets this value to pdTRUE then + * a context switch should be requested before the interrupt is exited. + * + * @return pdTRUE if the semaphore was successfully taken, otherwise + * pdFALSE + */ +#define xSemaphoreTakeFromISR( xSemaphore, pxHigherPriorityTaskWoken ) xQueueReceiveFromISR( ( QueueHandle_t ) ( xSemaphore ), NULL, ( pxHigherPriorityTaskWoken ) ) + +/** + * semphr. h + *
SemaphoreHandle_t xSemaphoreCreateMutex( void )
+ * + * Creates a new mutex type semaphore instance, and returns a handle by which + * the new mutex can be referenced. + * + * Internally, within the FreeRTOS implementation, mutex semaphores use a block + * of memory, in which the mutex structure is stored. If a mutex is created + * using xSemaphoreCreateMutex() then the required memory is automatically + * dynamically allocated inside the xSemaphoreCreateMutex() function. (see + * http://www.freertos.org/a00111.html). If a mutex is created using + * xSemaphoreCreateMutexStatic() then the application writer must provided the + * memory. xSemaphoreCreateMutexStatic() therefore allows a mutex to be created + * without using any dynamic memory allocation. + * + * Mutexes created using this function can be accessed using the xSemaphoreTake() + * and xSemaphoreGive() macros. The xSemaphoreTakeRecursive() and + * xSemaphoreGiveRecursive() macros must not be used. + * + * This type of semaphore uses a priority inheritance mechanism so a task + * 'taking' a semaphore MUST ALWAYS 'give' the semaphore back once the + * semaphore it is no longer required. + * + * Mutex type semaphores cannot be used from within interrupt service routines. + * + * See xSemaphoreCreateBinary() for an alternative implementation that can be + * used for pure synchronisation (where one task or interrupt always 'gives' the + * semaphore and another always 'takes' the semaphore) and from within interrupt + * service routines. + * + * @return If the mutex was successfully created then a handle to the created + * semaphore is returned. If there was not enough heap to allocate the mutex + * data structures then NULL is returned. + * + * Example usage: +
+ SemaphoreHandle_t xSemaphore;
+
+ void vATask( void * pvParameters )
+ {
+    // Semaphore cannot be used before a call to xSemaphoreCreateMutex().
+    // This is a macro so pass the variable in directly.
+    xSemaphore = xSemaphoreCreateMutex();
+
+    if( xSemaphore != NULL )
+    {
+        // The semaphore was created successfully.
+        // The semaphore can now be used.
+    }
+ }
+ 
+ * \defgroup xSemaphoreCreateMutex xSemaphoreCreateMutex + * \ingroup Semaphores + */ +#if( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) + #define xSemaphoreCreateMutex() xQueueCreateMutex( queueQUEUE_TYPE_MUTEX ) +#endif + +/** + * semphr. h + *
SemaphoreHandle_t xSemaphoreCreateMutexStatic( StaticSemaphore_t *pxMutexBuffer )
+ * + * Creates a new mutex type semaphore instance, and returns a handle by which + * the new mutex can be referenced. + * + * Internally, within the FreeRTOS implementation, mutex semaphores use a block + * of memory, in which the mutex structure is stored. If a mutex is created + * using xSemaphoreCreateMutex() then the required memory is automatically + * dynamically allocated inside the xSemaphoreCreateMutex() function. (see + * http://www.freertos.org/a00111.html). If a mutex is created using + * xSemaphoreCreateMutexStatic() then the application writer must provided the + * memory. xSemaphoreCreateMutexStatic() therefore allows a mutex to be created + * without using any dynamic memory allocation. + * + * Mutexes created using this function can be accessed using the xSemaphoreTake() + * and xSemaphoreGive() macros. The xSemaphoreTakeRecursive() and + * xSemaphoreGiveRecursive() macros must not be used. + * + * This type of semaphore uses a priority inheritance mechanism so a task + * 'taking' a semaphore MUST ALWAYS 'give' the semaphore back once the + * semaphore it is no longer required. + * + * Mutex type semaphores cannot be used from within interrupt service routines. + * + * See xSemaphoreCreateBinary() for an alternative implementation that can be + * used for pure synchronisation (where one task or interrupt always 'gives' the + * semaphore and another always 'takes' the semaphore) and from within interrupt + * service routines. + * + * @param pxMutexBuffer Must point to a variable of type StaticSemaphore_t, + * which will be used to hold the mutex's data structure, removing the need for + * the memory to be allocated dynamically. + * + * @return If the mutex was successfully created then a handle to the created + * mutex is returned. If pxMutexBuffer was NULL then NULL is returned. + * + * Example usage: +
+ SemaphoreHandle_t xSemaphore;
+ StaticSemaphore_t xMutexBuffer;
+
+ void vATask( void * pvParameters )
+ {
+    // A mutex cannot be used before it has been created.  xMutexBuffer is
+    // into xSemaphoreCreateMutexStatic() so no dynamic memory allocation is
+    // attempted.
+    xSemaphore = xSemaphoreCreateMutexStatic( &xMutexBuffer );
+
+    // As no dynamic memory allocation was performed, xSemaphore cannot be NULL,
+    // so there is no need to check it.
+ }
+ 
+ * \defgroup xSemaphoreCreateMutexStatic xSemaphoreCreateMutexStatic + * \ingroup Semaphores + */ + #if( configSUPPORT_STATIC_ALLOCATION == 1 ) + #define xSemaphoreCreateMutexStatic( pxMutexBuffer ) xQueueCreateMutexStatic( queueQUEUE_TYPE_MUTEX, ( pxMutexBuffer ) ) +#endif /* configSUPPORT_STATIC_ALLOCATION */ + + +/** + * semphr. h + *
SemaphoreHandle_t xSemaphoreCreateRecursiveMutex( void )
+ * + * Creates a new recursive mutex type semaphore instance, and returns a handle + * by which the new recursive mutex can be referenced. + * + * Internally, within the FreeRTOS implementation, recursive mutexs use a block + * of memory, in which the mutex structure is stored. If a recursive mutex is + * created using xSemaphoreCreateRecursiveMutex() then the required memory is + * automatically dynamically allocated inside the + * xSemaphoreCreateRecursiveMutex() function. (see + * http://www.freertos.org/a00111.html). If a recursive mutex is created using + * xSemaphoreCreateRecursiveMutexStatic() then the application writer must + * provide the memory that will get used by the mutex. + * xSemaphoreCreateRecursiveMutexStatic() therefore allows a recursive mutex to + * be created without using any dynamic memory allocation. + * + * Mutexes created using this macro can be accessed using the + * xSemaphoreTakeRecursive() and xSemaphoreGiveRecursive() macros. The + * xSemaphoreTake() and xSemaphoreGive() macros must not be used. + * + * A mutex used recursively can be 'taken' repeatedly by the owner. The mutex + * doesn't become available again until the owner has called + * xSemaphoreGiveRecursive() for each successful 'take' request. For example, + * if a task successfully 'takes' the same mutex 5 times then the mutex will + * not be available to any other task until it has also 'given' the mutex back + * exactly five times. + * + * This type of semaphore uses a priority inheritance mechanism so a task + * 'taking' a semaphore MUST ALWAYS 'give' the semaphore back once the + * semaphore it is no longer required. + * + * Mutex type semaphores cannot be used from within interrupt service routines. + * + * See xSemaphoreCreateBinary() for an alternative implementation that can be + * used for pure synchronisation (where one task or interrupt always 'gives' the + * semaphore and another always 'takes' the semaphore) and from within interrupt + * service routines. + * + * @return xSemaphore Handle to the created mutex semaphore. Should be of type + * SemaphoreHandle_t. + * + * Example usage: +
+ SemaphoreHandle_t xSemaphore;
+
+ void vATask( void * pvParameters )
+ {
+    // Semaphore cannot be used before a call to xSemaphoreCreateMutex().
+    // This is a macro so pass the variable in directly.
+    xSemaphore = xSemaphoreCreateRecursiveMutex();
+
+    if( xSemaphore != NULL )
+    {
+        // The semaphore was created successfully.
+        // The semaphore can now be used.
+    }
+ }
+ 
+ * \defgroup xSemaphoreCreateRecursiveMutex xSemaphoreCreateRecursiveMutex + * \ingroup Semaphores + */ +#if( ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) && ( configUSE_RECURSIVE_MUTEXES == 1 ) ) + #define xSemaphoreCreateRecursiveMutex() xQueueCreateMutex( queueQUEUE_TYPE_RECURSIVE_MUTEX ) +#endif + +/** + * semphr. h + *
SemaphoreHandle_t xSemaphoreCreateRecursiveMutexStatic( StaticSemaphore_t *pxMutexBuffer )
+ * + * Creates a new recursive mutex type semaphore instance, and returns a handle + * by which the new recursive mutex can be referenced. + * + * Internally, within the FreeRTOS implementation, recursive mutexs use a block + * of memory, in which the mutex structure is stored. If a recursive mutex is + * created using xSemaphoreCreateRecursiveMutex() then the required memory is + * automatically dynamically allocated inside the + * xSemaphoreCreateRecursiveMutex() function. (see + * http://www.freertos.org/a00111.html). If a recursive mutex is created using + * xSemaphoreCreateRecursiveMutexStatic() then the application writer must + * provide the memory that will get used by the mutex. + * xSemaphoreCreateRecursiveMutexStatic() therefore allows a recursive mutex to + * be created without using any dynamic memory allocation. + * + * Mutexes created using this macro can be accessed using the + * xSemaphoreTakeRecursive() and xSemaphoreGiveRecursive() macros. The + * xSemaphoreTake() and xSemaphoreGive() macros must not be used. + * + * A mutex used recursively can be 'taken' repeatedly by the owner. The mutex + * doesn't become available again until the owner has called + * xSemaphoreGiveRecursive() for each successful 'take' request. For example, + * if a task successfully 'takes' the same mutex 5 times then the mutex will + * not be available to any other task until it has also 'given' the mutex back + * exactly five times. + * + * This type of semaphore uses a priority inheritance mechanism so a task + * 'taking' a semaphore MUST ALWAYS 'give' the semaphore back once the + * semaphore it is no longer required. + * + * Mutex type semaphores cannot be used from within interrupt service routines. + * + * See xSemaphoreCreateBinary() for an alternative implementation that can be + * used for pure synchronisation (where one task or interrupt always 'gives' the + * semaphore and another always 'takes' the semaphore) and from within interrupt + * service routines. + * + * @param pxMutexBuffer Must point to a variable of type StaticSemaphore_t, + * which will then be used to hold the recursive mutex's data structure, + * removing the need for the memory to be allocated dynamically. + * + * @return If the recursive mutex was successfully created then a handle to the + * created recursive mutex is returned. If pxMutexBuffer was NULL then NULL is + * returned. + * + * Example usage: +
+ SemaphoreHandle_t xSemaphore;
+ StaticSemaphore_t xMutexBuffer;
+
+ void vATask( void * pvParameters )
+ {
+    // A recursive semaphore cannot be used before it is created.  Here a
+    // recursive mutex is created using xSemaphoreCreateRecursiveMutexStatic().
+    // The address of xMutexBuffer is passed into the function, and will hold
+    // the mutexes data structures - so no dynamic memory allocation will be
+    // attempted.
+    xSemaphore = xSemaphoreCreateRecursiveMutexStatic( &xMutexBuffer );
+
+    // As no dynamic memory allocation was performed, xSemaphore cannot be NULL,
+    // so there is no need to check it.
+ }
+ 
+ * \defgroup xSemaphoreCreateRecursiveMutexStatic xSemaphoreCreateRecursiveMutexStatic + * \ingroup Semaphores + */ +#if( ( configSUPPORT_STATIC_ALLOCATION == 1 ) && ( configUSE_RECURSIVE_MUTEXES == 1 ) ) + #define xSemaphoreCreateRecursiveMutexStatic( pxStaticSemaphore ) xQueueCreateMutexStatic( queueQUEUE_TYPE_RECURSIVE_MUTEX, pxStaticSemaphore ) +#endif /* configSUPPORT_STATIC_ALLOCATION */ + +/** + * semphr. h + *
SemaphoreHandle_t xSemaphoreCreateCounting( UBaseType_t uxMaxCount, UBaseType_t uxInitialCount )
+ * + * Creates a new counting semaphore instance, and returns a handle by which the + * new counting semaphore can be referenced. + * + * In many usage scenarios it is faster and more memory efficient to use a + * direct to task notification in place of a counting semaphore! + * http://www.freertos.org/RTOS-task-notifications.html + * + * Internally, within the FreeRTOS implementation, counting semaphores use a + * block of memory, in which the counting semaphore structure is stored. If a + * counting semaphore is created using xSemaphoreCreateCounting() then the + * required memory is automatically dynamically allocated inside the + * xSemaphoreCreateCounting() function. (see + * http://www.freertos.org/a00111.html). If a counting semaphore is created + * using xSemaphoreCreateCountingStatic() then the application writer can + * instead optionally provide the memory that will get used by the counting + * semaphore. xSemaphoreCreateCountingStatic() therefore allows a counting + * semaphore to be created without using any dynamic memory allocation. + * + * Counting semaphores are typically used for two things: + * + * 1) Counting events. + * + * In this usage scenario an event handler will 'give' a semaphore each time + * an event occurs (incrementing the semaphore count value), and a handler + * task will 'take' a semaphore each time it processes an event + * (decrementing the semaphore count value). The count value is therefore + * the difference between the number of events that have occurred and the + * number that have been processed. In this case it is desirable for the + * initial count value to be zero. + * + * 2) Resource management. + * + * In this usage scenario the count value indicates the number of resources + * available. To obtain control of a resource a task must first obtain a + * semaphore - decrementing the semaphore count value. When the count value + * reaches zero there are no free resources. When a task finishes with the + * resource it 'gives' the semaphore back - incrementing the semaphore count + * value. In this case it is desirable for the initial count value to be + * equal to the maximum count value, indicating that all resources are free. + * + * @param uxMaxCount The maximum count value that can be reached. When the + * semaphore reaches this value it can no longer be 'given'. + * + * @param uxInitialCount The count value assigned to the semaphore when it is + * created. + * + * @return Handle to the created semaphore. Null if the semaphore could not be + * created. + * + * Example usage: +
+ SemaphoreHandle_t xSemaphore;
+
+ void vATask( void * pvParameters )
+ {
+ SemaphoreHandle_t xSemaphore = NULL;
+
+    // Semaphore cannot be used before a call to xSemaphoreCreateCounting().
+    // The max value to which the semaphore can count should be 10, and the
+    // initial value assigned to the count should be 0.
+    xSemaphore = xSemaphoreCreateCounting( 10, 0 );
+
+    if( xSemaphore != NULL )
+    {
+        // The semaphore was created successfully.
+        // The semaphore can now be used.
+    }
+ }
+ 
+ * \defgroup xSemaphoreCreateCounting xSemaphoreCreateCounting + * \ingroup Semaphores + */ +#if( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) + #define xSemaphoreCreateCounting( uxMaxCount, uxInitialCount ) xQueueCreateCountingSemaphore( ( uxMaxCount ), ( uxInitialCount ) ) +#endif + +/** + * semphr. h + *
SemaphoreHandle_t xSemaphoreCreateCountingStatic( UBaseType_t uxMaxCount, UBaseType_t uxInitialCount, StaticSemaphore_t *pxSemaphoreBuffer )
+ * + * Creates a new counting semaphore instance, and returns a handle by which the + * new counting semaphore can be referenced. + * + * In many usage scenarios it is faster and more memory efficient to use a + * direct to task notification in place of a counting semaphore! + * http://www.freertos.org/RTOS-task-notifications.html + * + * Internally, within the FreeRTOS implementation, counting semaphores use a + * block of memory, in which the counting semaphore structure is stored. If a + * counting semaphore is created using xSemaphoreCreateCounting() then the + * required memory is automatically dynamically allocated inside the + * xSemaphoreCreateCounting() function. (see + * http://www.freertos.org/a00111.html). If a counting semaphore is created + * using xSemaphoreCreateCountingStatic() then the application writer must + * provide the memory. xSemaphoreCreateCountingStatic() therefore allows a + * counting semaphore to be created without using any dynamic memory allocation. + * + * Counting semaphores are typically used for two things: + * + * 1) Counting events. + * + * In this usage scenario an event handler will 'give' a semaphore each time + * an event occurs (incrementing the semaphore count value), and a handler + * task will 'take' a semaphore each time it processes an event + * (decrementing the semaphore count value). The count value is therefore + * the difference between the number of events that have occurred and the + * number that have been processed. In this case it is desirable for the + * initial count value to be zero. + * + * 2) Resource management. + * + * In this usage scenario the count value indicates the number of resources + * available. To obtain control of a resource a task must first obtain a + * semaphore - decrementing the semaphore count value. When the count value + * reaches zero there are no free resources. When a task finishes with the + * resource it 'gives' the semaphore back - incrementing the semaphore count + * value. In this case it is desirable for the initial count value to be + * equal to the maximum count value, indicating that all resources are free. + * + * @param uxMaxCount The maximum count value that can be reached. When the + * semaphore reaches this value it can no longer be 'given'. + * + * @param uxInitialCount The count value assigned to the semaphore when it is + * created. + * + * @param pxSemaphoreBuffer Must point to a variable of type StaticSemaphore_t, + * which will then be used to hold the semaphore's data structure, removing the + * need for the memory to be allocated dynamically. + * + * @return If the counting semaphore was successfully created then a handle to + * the created counting semaphore is returned. If pxSemaphoreBuffer was NULL + * then NULL is returned. + * + * Example usage: +
+ SemaphoreHandle_t xSemaphore;
+ StaticSemaphore_t xSemaphoreBuffer;
+
+ void vATask( void * pvParameters )
+ {
+ SemaphoreHandle_t xSemaphore = NULL;
+
+    // Counting semaphore cannot be used before they have been created.  Create
+    // a counting semaphore using xSemaphoreCreateCountingStatic().  The max
+    // value to which the semaphore can count is 10, and the initial value
+    // assigned to the count will be 0.  The address of xSemaphoreBuffer is
+    // passed in and will be used to hold the semaphore structure, so no dynamic
+    // memory allocation will be used.
+    xSemaphore = xSemaphoreCreateCounting( 10, 0, &xSemaphoreBuffer );
+
+    // No memory allocation was attempted so xSemaphore cannot be NULL, so there
+    // is no need to check its value.
+ }
+ 
+ * \defgroup xSemaphoreCreateCountingStatic xSemaphoreCreateCountingStatic + * \ingroup Semaphores + */ +#if( configSUPPORT_STATIC_ALLOCATION == 1 ) + #define xSemaphoreCreateCountingStatic( uxMaxCount, uxInitialCount, pxSemaphoreBuffer ) xQueueCreateCountingSemaphoreStatic( ( uxMaxCount ), ( uxInitialCount ), ( pxSemaphoreBuffer ) ) +#endif /* configSUPPORT_STATIC_ALLOCATION */ + +/** + * semphr. h + *
void vSemaphoreDelete( SemaphoreHandle_t xSemaphore );
+ * + * Delete a semaphore. This function must be used with care. For example, + * do not delete a mutex type semaphore if the mutex is held by a task. + * + * @param xSemaphore A handle to the semaphore to be deleted. + * + * \defgroup vSemaphoreDelete vSemaphoreDelete + * \ingroup Semaphores + */ +#define vSemaphoreDelete( xSemaphore ) vQueueDelete( ( QueueHandle_t ) ( xSemaphore ) ) + +/** + * semphr.h + *
TaskHandle_t xSemaphoreGetMutexHolder( SemaphoreHandle_t xMutex );
+ * + * If xMutex is indeed a mutex type semaphore, return the current mutex holder. + * If xMutex is not a mutex type semaphore, or the mutex is available (not held + * by a task), return NULL. + * + * Note: This is a good way of determining if the calling task is the mutex + * holder, but not a good way of determining the identity of the mutex holder as + * the holder may change between the function exiting and the returned value + * being tested. + */ +#define xSemaphoreGetMutexHolder( xSemaphore ) xQueueGetMutexHolder( ( xSemaphore ) ) + +/** + * semphr.h + *
TaskHandle_t xSemaphoreGetMutexHolderFromISR( SemaphoreHandle_t xMutex );
+ * + * If xMutex is indeed a mutex type semaphore, return the current mutex holder. + * If xMutex is not a mutex type semaphore, or the mutex is available (not held + * by a task), return NULL. + * + */ +#define xSemaphoreGetMutexHolderFromISR( xSemaphore ) xQueueGetMutexHolderFromISR( ( xSemaphore ) ) + +/** + * semphr.h + *
UBaseType_t uxSemaphoreGetCount( SemaphoreHandle_t xSemaphore );
+ * + * If the semaphore is a counting semaphore then uxSemaphoreGetCount() returns + * its current count value. If the semaphore is a binary semaphore then + * uxSemaphoreGetCount() returns 1 if the semaphore is available, and 0 if the + * semaphore is not available. + * + */ +#define uxSemaphoreGetCount( xSemaphore ) uxQueueMessagesWaiting( ( QueueHandle_t ) ( xSemaphore ) ) + +#endif /* SEMAPHORE_H */ + + diff --git a/firmware/Middlewares/Third_Party/FreeRTOS/Source/include/stack_macros.h b/firmware/Middlewares/Third_Party/FreeRTOS/Source/include/stack_macros.h new file mode 100644 index 0000000..b5bac08 --- /dev/null +++ b/firmware/Middlewares/Third_Party/FreeRTOS/Source/include/stack_macros.h @@ -0,0 +1,129 @@ +/* + * FreeRTOS Kernel V10.3.1 + * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * http://www.FreeRTOS.org + * http://aws.amazon.com/freertos + * + * 1 tab == 4 spaces! + */ + +#ifndef STACK_MACROS_H +#define STACK_MACROS_H + +/* + * Call the stack overflow hook function if the stack of the task being swapped + * out is currently overflowed, or looks like it might have overflowed in the + * past. + * + * Setting configCHECK_FOR_STACK_OVERFLOW to 1 will cause the macro to check + * the current stack state only - comparing the current top of stack value to + * the stack limit. Setting configCHECK_FOR_STACK_OVERFLOW to greater than 1 + * will also cause the last few stack bytes to be checked to ensure the value + * to which the bytes were set when the task was created have not been + * overwritten. Note this second test does not guarantee that an overflowed + * stack will always be recognised. + */ + +/*-----------------------------------------------------------*/ + +#if( ( configCHECK_FOR_STACK_OVERFLOW == 1 ) && ( portSTACK_GROWTH < 0 ) ) + + /* Only the current stack state is to be checked. */ + #define taskCHECK_FOR_STACK_OVERFLOW() \ + { \ + /* Is the currently saved stack pointer within the stack limit? */ \ + if( pxCurrentTCB->pxTopOfStack <= pxCurrentTCB->pxStack ) \ + { \ + vApplicationStackOverflowHook( ( TaskHandle_t ) pxCurrentTCB, pxCurrentTCB->pcTaskName ); \ + } \ + } + +#endif /* configCHECK_FOR_STACK_OVERFLOW == 1 */ +/*-----------------------------------------------------------*/ + +#if( ( configCHECK_FOR_STACK_OVERFLOW == 1 ) && ( portSTACK_GROWTH > 0 ) ) + + /* Only the current stack state is to be checked. */ + #define taskCHECK_FOR_STACK_OVERFLOW() \ + { \ + \ + /* Is the currently saved stack pointer within the stack limit? */ \ + if( pxCurrentTCB->pxTopOfStack >= pxCurrentTCB->pxEndOfStack ) \ + { \ + vApplicationStackOverflowHook( ( TaskHandle_t ) pxCurrentTCB, pxCurrentTCB->pcTaskName ); \ + } \ + } + +#endif /* configCHECK_FOR_STACK_OVERFLOW == 1 */ +/*-----------------------------------------------------------*/ + +#if( ( configCHECK_FOR_STACK_OVERFLOW > 1 ) && ( portSTACK_GROWTH < 0 ) ) + + #define taskCHECK_FOR_STACK_OVERFLOW() \ + { \ + const uint32_t * const pulStack = ( uint32_t * ) pxCurrentTCB->pxStack; \ + const uint32_t ulCheckValue = ( uint32_t ) 0xa5a5a5a5; \ + \ + if( ( pulStack[ 0 ] != ulCheckValue ) || \ + ( pulStack[ 1 ] != ulCheckValue ) || \ + ( pulStack[ 2 ] != ulCheckValue ) || \ + ( pulStack[ 3 ] != ulCheckValue ) ) \ + { \ + vApplicationStackOverflowHook( ( TaskHandle_t ) pxCurrentTCB, pxCurrentTCB->pcTaskName ); \ + } \ + } + +#endif /* #if( configCHECK_FOR_STACK_OVERFLOW > 1 ) */ +/*-----------------------------------------------------------*/ + +#if( ( configCHECK_FOR_STACK_OVERFLOW > 1 ) && ( portSTACK_GROWTH > 0 ) ) + + #define taskCHECK_FOR_STACK_OVERFLOW() \ + { \ + int8_t *pcEndOfStack = ( int8_t * ) pxCurrentTCB->pxEndOfStack; \ + static const uint8_t ucExpectedStackBytes[] = { tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, \ + tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, \ + tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, \ + tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, \ + tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE }; \ + \ + \ + pcEndOfStack -= sizeof( ucExpectedStackBytes ); \ + \ + /* Has the extremity of the task stack ever been written over? */ \ + if( memcmp( ( void * ) pcEndOfStack, ( void * ) ucExpectedStackBytes, sizeof( ucExpectedStackBytes ) ) != 0 ) \ + { \ + vApplicationStackOverflowHook( ( TaskHandle_t ) pxCurrentTCB, pxCurrentTCB->pcTaskName ); \ + } \ + } + +#endif /* #if( configCHECK_FOR_STACK_OVERFLOW > 1 ) */ +/*-----------------------------------------------------------*/ + +/* Remove stack overflow macro if not being used. */ +#ifndef taskCHECK_FOR_STACK_OVERFLOW + #define taskCHECK_FOR_STACK_OVERFLOW() +#endif + + + +#endif /* STACK_MACROS_H */ + diff --git a/firmware/Middlewares/Third_Party/FreeRTOS/Source/include/stream_buffer.h b/firmware/Middlewares/Third_Party/FreeRTOS/Source/include/stream_buffer.h new file mode 100644 index 0000000..a8b68ad --- /dev/null +++ b/firmware/Middlewares/Third_Party/FreeRTOS/Source/include/stream_buffer.h @@ -0,0 +1,859 @@ +/* + * FreeRTOS Kernel V10.3.1 + * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * http://www.FreeRTOS.org + * http://aws.amazon.com/freertos + * + * 1 tab == 4 spaces! + */ + +/* + * Stream buffers are used to send a continuous stream of data from one task or + * interrupt to another. Their implementation is light weight, making them + * particularly suited for interrupt to task and core to core communication + * scenarios. + * + * ***NOTE***: Uniquely among FreeRTOS objects, the stream buffer + * implementation (so also the message buffer implementation, as message buffers + * are built on top of stream buffers) assumes there is only one task or + * interrupt that will write to the buffer (the writer), and only one task or + * interrupt that will read from the buffer (the reader). It is safe for the + * writer and reader to be different tasks or interrupts, but, unlike other + * FreeRTOS objects, it is not safe to have multiple different writers or + * multiple different readers. If there are to be multiple different writers + * then the application writer must place each call to a writing API function + * (such as xStreamBufferSend()) inside a critical section and set the send + * block time to 0. Likewise, if there are to be multiple different readers + * then the application writer must place each call to a reading API function + * (such as xStreamBufferReceive()) inside a critical section section and set the + * receive block time to 0. + * + */ + +#ifndef STREAM_BUFFER_H +#define STREAM_BUFFER_H + +#ifndef INC_FREERTOS_H + #error "include FreeRTOS.h must appear in source files before include stream_buffer.h" +#endif + +#if defined( __cplusplus ) +extern "C" { +#endif + +/** + * Type by which stream buffers are referenced. For example, a call to + * xStreamBufferCreate() returns an StreamBufferHandle_t variable that can + * then be used as a parameter to xStreamBufferSend(), xStreamBufferReceive(), + * etc. + */ +struct StreamBufferDef_t; +typedef struct StreamBufferDef_t * StreamBufferHandle_t; + + +/** + * message_buffer.h + * +
+StreamBufferHandle_t xStreamBufferCreate( size_t xBufferSizeBytes, size_t xTriggerLevelBytes );
+
+ * + * Creates a new stream buffer using dynamically allocated memory. See + * xStreamBufferCreateStatic() for a version that uses statically allocated + * memory (memory that is allocated at compile time). + * + * configSUPPORT_DYNAMIC_ALLOCATION must be set to 1 or left undefined in + * FreeRTOSConfig.h for xStreamBufferCreate() to be available. + * + * @param xBufferSizeBytes The total number of bytes the stream buffer will be + * able to hold at any one time. + * + * @param xTriggerLevelBytes The number of bytes that must be in the stream + * buffer before a task that is blocked on the stream buffer to wait for data is + * moved out of the blocked state. For example, if a task is blocked on a read + * of an empty stream buffer that has a trigger level of 1 then the task will be + * unblocked when a single byte is written to the buffer or the task's block + * time expires. As another example, if a task is blocked on a read of an empty + * stream buffer that has a trigger level of 10 then the task will not be + * unblocked until the stream buffer contains at least 10 bytes or the task's + * block time expires. If a reading task's block time expires before the + * trigger level is reached then the task will still receive however many bytes + * are actually available. Setting a trigger level of 0 will result in a + * trigger level of 1 being used. It is not valid to specify a trigger level + * that is greater than the buffer size. + * + * @return If NULL is returned, then the stream buffer cannot be created + * because there is insufficient heap memory available for FreeRTOS to allocate + * the stream buffer data structures and storage area. A non-NULL value being + * returned indicates that the stream buffer has been created successfully - + * the returned value should be stored as the handle to the created stream + * buffer. + * + * Example use: +
+
+void vAFunction( void )
+{
+StreamBufferHandle_t xStreamBuffer;
+const size_t xStreamBufferSizeBytes = 100, xTriggerLevel = 10;
+
+    // Create a stream buffer that can hold 100 bytes.  The memory used to hold
+    // both the stream buffer structure and the data in the stream buffer is
+    // allocated dynamically.
+    xStreamBuffer = xStreamBufferCreate( xStreamBufferSizeBytes, xTriggerLevel );
+
+    if( xStreamBuffer == NULL )
+    {
+        // There was not enough heap memory space available to create the
+        // stream buffer.
+    }
+    else
+    {
+        // The stream buffer was created successfully and can now be used.
+    }
+}
+
+ * \defgroup xStreamBufferCreate xStreamBufferCreate + * \ingroup StreamBufferManagement + */ +#define xStreamBufferCreate( xBufferSizeBytes, xTriggerLevelBytes ) xStreamBufferGenericCreate( xBufferSizeBytes, xTriggerLevelBytes, pdFALSE ) + +/** + * stream_buffer.h + * +
+StreamBufferHandle_t xStreamBufferCreateStatic( size_t xBufferSizeBytes,
+                                                size_t xTriggerLevelBytes,
+                                                uint8_t *pucStreamBufferStorageArea,
+                                                StaticStreamBuffer_t *pxStaticStreamBuffer );
+
+ * Creates a new stream buffer using statically allocated memory. See + * xStreamBufferCreate() for a version that uses dynamically allocated memory. + * + * configSUPPORT_STATIC_ALLOCATION must be set to 1 in FreeRTOSConfig.h for + * xStreamBufferCreateStatic() to be available. + * + * @param xBufferSizeBytes The size, in bytes, of the buffer pointed to by the + * pucStreamBufferStorageArea parameter. + * + * @param xTriggerLevelBytes The number of bytes that must be in the stream + * buffer before a task that is blocked on the stream buffer to wait for data is + * moved out of the blocked state. For example, if a task is blocked on a read + * of an empty stream buffer that has a trigger level of 1 then the task will be + * unblocked when a single byte is written to the buffer or the task's block + * time expires. As another example, if a task is blocked on a read of an empty + * stream buffer that has a trigger level of 10 then the task will not be + * unblocked until the stream buffer contains at least 10 bytes or the task's + * block time expires. If a reading task's block time expires before the + * trigger level is reached then the task will still receive however many bytes + * are actually available. Setting a trigger level of 0 will result in a + * trigger level of 1 being used. It is not valid to specify a trigger level + * that is greater than the buffer size. + * + * @param pucStreamBufferStorageArea Must point to a uint8_t array that is at + * least xBufferSizeBytes + 1 big. This is the array to which streams are + * copied when they are written to the stream buffer. + * + * @param pxStaticStreamBuffer Must point to a variable of type + * StaticStreamBuffer_t, which will be used to hold the stream buffer's data + * structure. + * + * @return If the stream buffer is created successfully then a handle to the + * created stream buffer is returned. If either pucStreamBufferStorageArea or + * pxStaticstreamBuffer are NULL then NULL is returned. + * + * Example use: +
+
+// Used to dimension the array used to hold the streams.  The available space
+// will actually be one less than this, so 999.
+#define STORAGE_SIZE_BYTES 1000
+
+// Defines the memory that will actually hold the streams within the stream
+// buffer.
+static uint8_t ucStorageBuffer[ STORAGE_SIZE_BYTES ];
+
+// The variable used to hold the stream buffer structure.
+StaticStreamBuffer_t xStreamBufferStruct;
+
+void MyFunction( void )
+{
+StreamBufferHandle_t xStreamBuffer;
+const size_t xTriggerLevel = 1;
+
+    xStreamBuffer = xStreamBufferCreateStatic( sizeof( ucBufferStorage ),
+                                               xTriggerLevel,
+                                               ucBufferStorage,
+                                               &xStreamBufferStruct );
+
+    // As neither the pucStreamBufferStorageArea or pxStaticStreamBuffer
+    // parameters were NULL, xStreamBuffer will not be NULL, and can be used to
+    // reference the created stream buffer in other stream buffer API calls.
+
+    // Other code that uses the stream buffer can go here.
+}
+
+
+ * \defgroup xStreamBufferCreateStatic xStreamBufferCreateStatic + * \ingroup StreamBufferManagement + */ +#define xStreamBufferCreateStatic( xBufferSizeBytes, xTriggerLevelBytes, pucStreamBufferStorageArea, pxStaticStreamBuffer ) xStreamBufferGenericCreateStatic( xBufferSizeBytes, xTriggerLevelBytes, pdFALSE, pucStreamBufferStorageArea, pxStaticStreamBuffer ) + +/** + * stream_buffer.h + * +
+size_t xStreamBufferSend( StreamBufferHandle_t xStreamBuffer,
+                          const void *pvTxData,
+                          size_t xDataLengthBytes,
+                          TickType_t xTicksToWait );
+
+ * + * Sends bytes to a stream buffer. The bytes are copied into the stream buffer. + * + * ***NOTE***: Uniquely among FreeRTOS objects, the stream buffer + * implementation (so also the message buffer implementation, as message buffers + * are built on top of stream buffers) assumes there is only one task or + * interrupt that will write to the buffer (the writer), and only one task or + * interrupt that will read from the buffer (the reader). It is safe for the + * writer and reader to be different tasks or interrupts, but, unlike other + * FreeRTOS objects, it is not safe to have multiple different writers or + * multiple different readers. If there are to be multiple different writers + * then the application writer must place each call to a writing API function + * (such as xStreamBufferSend()) inside a critical section and set the send + * block time to 0. Likewise, if there are to be multiple different readers + * then the application writer must place each call to a reading API function + * (such as xStreamBufferReceive()) inside a critical section and set the receive + * block time to 0. + * + * Use xStreamBufferSend() to write to a stream buffer from a task. Use + * xStreamBufferSendFromISR() to write to a stream buffer from an interrupt + * service routine (ISR). + * + * @param xStreamBuffer The handle of the stream buffer to which a stream is + * being sent. + * + * @param pvTxData A pointer to the buffer that holds the bytes to be copied + * into the stream buffer. + * + * @param xDataLengthBytes The maximum number of bytes to copy from pvTxData + * into the stream buffer. + * + * @param xTicksToWait The maximum amount of time the task should remain in the + * Blocked state to wait for enough space to become available in the stream + * buffer, should the stream buffer contain too little space to hold the + * another xDataLengthBytes bytes. The block time is specified in tick periods, + * so the absolute time it represents is dependent on the tick frequency. The + * macro pdMS_TO_TICKS() can be used to convert a time specified in milliseconds + * into a time specified in ticks. Setting xTicksToWait to portMAX_DELAY will + * cause the task to wait indefinitely (without timing out), provided + * INCLUDE_vTaskSuspend is set to 1 in FreeRTOSConfig.h. If a task times out + * before it can write all xDataLengthBytes into the buffer it will still write + * as many bytes as possible. A task does not use any CPU time when it is in + * the blocked state. + * + * @return The number of bytes written to the stream buffer. If a task times + * out before it can write all xDataLengthBytes into the buffer it will still + * write as many bytes as possible. + * + * Example use: +
+void vAFunction( StreamBufferHandle_t xStreamBuffer )
+{
+size_t xBytesSent;
+uint8_t ucArrayToSend[] = { 0, 1, 2, 3 };
+char *pcStringToSend = "String to send";
+const TickType_t x100ms = pdMS_TO_TICKS( 100 );
+
+    // Send an array to the stream buffer, blocking for a maximum of 100ms to
+    // wait for enough space to be available in the stream buffer.
+    xBytesSent = xStreamBufferSend( xStreamBuffer, ( void * ) ucArrayToSend, sizeof( ucArrayToSend ), x100ms );
+
+    if( xBytesSent != sizeof( ucArrayToSend ) )
+    {
+        // The call to xStreamBufferSend() times out before there was enough
+        // space in the buffer for the data to be written, but it did
+        // successfully write xBytesSent bytes.
+    }
+
+    // Send the string to the stream buffer.  Return immediately if there is not
+    // enough space in the buffer.
+    xBytesSent = xStreamBufferSend( xStreamBuffer, ( void * ) pcStringToSend, strlen( pcStringToSend ), 0 );
+
+    if( xBytesSent != strlen( pcStringToSend ) )
+    {
+        // The entire string could not be added to the stream buffer because
+        // there was not enough free space in the buffer, but xBytesSent bytes
+        // were sent.  Could try again to send the remaining bytes.
+    }
+}
+
+ * \defgroup xStreamBufferSend xStreamBufferSend + * \ingroup StreamBufferManagement + */ +size_t xStreamBufferSend( StreamBufferHandle_t xStreamBuffer, + const void *pvTxData, + size_t xDataLengthBytes, + TickType_t xTicksToWait ) PRIVILEGED_FUNCTION; + +/** + * stream_buffer.h + * +
+size_t xStreamBufferSendFromISR( StreamBufferHandle_t xStreamBuffer,
+                                 const void *pvTxData,
+                                 size_t xDataLengthBytes,
+                                 BaseType_t *pxHigherPriorityTaskWoken );
+
+ * + * Interrupt safe version of the API function that sends a stream of bytes to + * the stream buffer. + * + * ***NOTE***: Uniquely among FreeRTOS objects, the stream buffer + * implementation (so also the message buffer implementation, as message buffers + * are built on top of stream buffers) assumes there is only one task or + * interrupt that will write to the buffer (the writer), and only one task or + * interrupt that will read from the buffer (the reader). It is safe for the + * writer and reader to be different tasks or interrupts, but, unlike other + * FreeRTOS objects, it is not safe to have multiple different writers or + * multiple different readers. If there are to be multiple different writers + * then the application writer must place each call to a writing API function + * (such as xStreamBufferSend()) inside a critical section and set the send + * block time to 0. Likewise, if there are to be multiple different readers + * then the application writer must place each call to a reading API function + * (such as xStreamBufferReceive()) inside a critical section and set the receive + * block time to 0. + * + * Use xStreamBufferSend() to write to a stream buffer from a task. Use + * xStreamBufferSendFromISR() to write to a stream buffer from an interrupt + * service routine (ISR). + * + * @param xStreamBuffer The handle of the stream buffer to which a stream is + * being sent. + * + * @param pvTxData A pointer to the data that is to be copied into the stream + * buffer. + * + * @param xDataLengthBytes The maximum number of bytes to copy from pvTxData + * into the stream buffer. + * + * @param pxHigherPriorityTaskWoken It is possible that a stream buffer will + * have a task blocked on it waiting for data. Calling + * xStreamBufferSendFromISR() can make data available, and so cause a task that + * was waiting for data to leave the Blocked state. If calling + * xStreamBufferSendFromISR() causes a task to leave the Blocked state, and the + * unblocked task has a priority higher than the currently executing task (the + * task that was interrupted), then, internally, xStreamBufferSendFromISR() + * will set *pxHigherPriorityTaskWoken to pdTRUE. If + * xStreamBufferSendFromISR() sets this value to pdTRUE, then normally a + * context switch should be performed before the interrupt is exited. This will + * ensure that the interrupt returns directly to the highest priority Ready + * state task. *pxHigherPriorityTaskWoken should be set to pdFALSE before it + * is passed into the function. See the example code below for an example. + * + * @return The number of bytes actually written to the stream buffer, which will + * be less than xDataLengthBytes if the stream buffer didn't have enough free + * space for all the bytes to be written. + * + * Example use: +
+// A stream buffer that has already been created.
+StreamBufferHandle_t xStreamBuffer;
+
+void vAnInterruptServiceRoutine( void )
+{
+size_t xBytesSent;
+char *pcStringToSend = "String to send";
+BaseType_t xHigherPriorityTaskWoken = pdFALSE; // Initialised to pdFALSE.
+
+    // Attempt to send the string to the stream buffer.
+    xBytesSent = xStreamBufferSendFromISR( xStreamBuffer,
+                                           ( void * ) pcStringToSend,
+                                           strlen( pcStringToSend ),
+                                           &xHigherPriorityTaskWoken );
+
+    if( xBytesSent != strlen( pcStringToSend ) )
+    {
+        // There was not enough free space in the stream buffer for the entire
+        // string to be written, ut xBytesSent bytes were written.
+    }
+
+    // If xHigherPriorityTaskWoken was set to pdTRUE inside
+    // xStreamBufferSendFromISR() then a task that has a priority above the
+    // priority of the currently executing task was unblocked and a context
+    // switch should be performed to ensure the ISR returns to the unblocked
+    // task.  In most FreeRTOS ports this is done by simply passing
+    // xHigherPriorityTaskWoken into taskYIELD_FROM_ISR(), which will test the
+    // variables value, and perform the context switch if necessary.  Check the
+    // documentation for the port in use for port specific instructions.
+    taskYIELD_FROM_ISR( xHigherPriorityTaskWoken );
+}
+
+ * \defgroup xStreamBufferSendFromISR xStreamBufferSendFromISR + * \ingroup StreamBufferManagement + */ +size_t xStreamBufferSendFromISR( StreamBufferHandle_t xStreamBuffer, + const void *pvTxData, + size_t xDataLengthBytes, + BaseType_t * const pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION; + +/** + * stream_buffer.h + * +
+size_t xStreamBufferReceive( StreamBufferHandle_t xStreamBuffer,
+                             void *pvRxData,
+                             size_t xBufferLengthBytes,
+                             TickType_t xTicksToWait );
+
+ * + * Receives bytes from a stream buffer. + * + * ***NOTE***: Uniquely among FreeRTOS objects, the stream buffer + * implementation (so also the message buffer implementation, as message buffers + * are built on top of stream buffers) assumes there is only one task or + * interrupt that will write to the buffer (the writer), and only one task or + * interrupt that will read from the buffer (the reader). It is safe for the + * writer and reader to be different tasks or interrupts, but, unlike other + * FreeRTOS objects, it is not safe to have multiple different writers or + * multiple different readers. If there are to be multiple different writers + * then the application writer must place each call to a writing API function + * (such as xStreamBufferSend()) inside a critical section and set the send + * block time to 0. Likewise, if there are to be multiple different readers + * then the application writer must place each call to a reading API function + * (such as xStreamBufferReceive()) inside a critical section and set the receive + * block time to 0. + * + * Use xStreamBufferReceive() to read from a stream buffer from a task. Use + * xStreamBufferReceiveFromISR() to read from a stream buffer from an + * interrupt service routine (ISR). + * + * @param xStreamBuffer The handle of the stream buffer from which bytes are to + * be received. + * + * @param pvRxData A pointer to the buffer into which the received bytes will be + * copied. + * + * @param xBufferLengthBytes The length of the buffer pointed to by the + * pvRxData parameter. This sets the maximum number of bytes to receive in one + * call. xStreamBufferReceive will return as many bytes as possible up to a + * maximum set by xBufferLengthBytes. + * + * @param xTicksToWait The maximum amount of time the task should remain in the + * Blocked state to wait for data to become available if the stream buffer is + * empty. xStreamBufferReceive() will return immediately if xTicksToWait is + * zero. The block time is specified in tick periods, so the absolute time it + * represents is dependent on the tick frequency. The macro pdMS_TO_TICKS() can + * be used to convert a time specified in milliseconds into a time specified in + * ticks. Setting xTicksToWait to portMAX_DELAY will cause the task to wait + * indefinitely (without timing out), provided INCLUDE_vTaskSuspend is set to 1 + * in FreeRTOSConfig.h. A task does not use any CPU time when it is in the + * Blocked state. + * + * @return The number of bytes actually read from the stream buffer, which will + * be less than xBufferLengthBytes if the call to xStreamBufferReceive() timed + * out before xBufferLengthBytes were available. + * + * Example use: +
+void vAFunction( StreamBuffer_t xStreamBuffer )
+{
+uint8_t ucRxData[ 20 ];
+size_t xReceivedBytes;
+const TickType_t xBlockTime = pdMS_TO_TICKS( 20 );
+
+    // Receive up to another sizeof( ucRxData ) bytes from the stream buffer.
+    // Wait in the Blocked state (so not using any CPU processing time) for a
+    // maximum of 100ms for the full sizeof( ucRxData ) number of bytes to be
+    // available.
+    xReceivedBytes = xStreamBufferReceive( xStreamBuffer,
+                                           ( void * ) ucRxData,
+                                           sizeof( ucRxData ),
+                                           xBlockTime );
+
+    if( xReceivedBytes > 0 )
+    {
+        // A ucRxData contains another xRecievedBytes bytes of data, which can
+        // be processed here....
+    }
+}
+
+ * \defgroup xStreamBufferReceive xStreamBufferReceive + * \ingroup StreamBufferManagement + */ +size_t xStreamBufferReceive( StreamBufferHandle_t xStreamBuffer, + void *pvRxData, + size_t xBufferLengthBytes, + TickType_t xTicksToWait ) PRIVILEGED_FUNCTION; + +/** + * stream_buffer.h + * +
+size_t xStreamBufferReceiveFromISR( StreamBufferHandle_t xStreamBuffer,
+                                    void *pvRxData,
+                                    size_t xBufferLengthBytes,
+                                    BaseType_t *pxHigherPriorityTaskWoken );
+
+ * + * An interrupt safe version of the API function that receives bytes from a + * stream buffer. + * + * Use xStreamBufferReceive() to read bytes from a stream buffer from a task. + * Use xStreamBufferReceiveFromISR() to read bytes from a stream buffer from an + * interrupt service routine (ISR). + * + * @param xStreamBuffer The handle of the stream buffer from which a stream + * is being received. + * + * @param pvRxData A pointer to the buffer into which the received bytes are + * copied. + * + * @param xBufferLengthBytes The length of the buffer pointed to by the + * pvRxData parameter. This sets the maximum number of bytes to receive in one + * call. xStreamBufferReceive will return as many bytes as possible up to a + * maximum set by xBufferLengthBytes. + * + * @param pxHigherPriorityTaskWoken It is possible that a stream buffer will + * have a task blocked on it waiting for space to become available. Calling + * xStreamBufferReceiveFromISR() can make space available, and so cause a task + * that is waiting for space to leave the Blocked state. If calling + * xStreamBufferReceiveFromISR() causes a task to leave the Blocked state, and + * the unblocked task has a priority higher than the currently executing task + * (the task that was interrupted), then, internally, + * xStreamBufferReceiveFromISR() will set *pxHigherPriorityTaskWoken to pdTRUE. + * If xStreamBufferReceiveFromISR() sets this value to pdTRUE, then normally a + * context switch should be performed before the interrupt is exited. That will + * ensure the interrupt returns directly to the highest priority Ready state + * task. *pxHigherPriorityTaskWoken should be set to pdFALSE before it is + * passed into the function. See the code example below for an example. + * + * @return The number of bytes read from the stream buffer, if any. + * + * Example use: +
+// A stream buffer that has already been created.
+StreamBuffer_t xStreamBuffer;
+
+void vAnInterruptServiceRoutine( void )
+{
+uint8_t ucRxData[ 20 ];
+size_t xReceivedBytes;
+BaseType_t xHigherPriorityTaskWoken = pdFALSE;  // Initialised to pdFALSE.
+
+    // Receive the next stream from the stream buffer.
+    xReceivedBytes = xStreamBufferReceiveFromISR( xStreamBuffer,
+                                                  ( void * ) ucRxData,
+                                                  sizeof( ucRxData ),
+                                                  &xHigherPriorityTaskWoken );
+
+    if( xReceivedBytes > 0 )
+    {
+        // ucRxData contains xReceivedBytes read from the stream buffer.
+        // Process the stream here....
+    }
+
+    // If xHigherPriorityTaskWoken was set to pdTRUE inside
+    // xStreamBufferReceiveFromISR() then a task that has a priority above the
+    // priority of the currently executing task was unblocked and a context
+    // switch should be performed to ensure the ISR returns to the unblocked
+    // task.  In most FreeRTOS ports this is done by simply passing
+    // xHigherPriorityTaskWoken into taskYIELD_FROM_ISR(), which will test the
+    // variables value, and perform the context switch if necessary.  Check the
+    // documentation for the port in use for port specific instructions.
+    taskYIELD_FROM_ISR( xHigherPriorityTaskWoken );
+}
+
+ * \defgroup xStreamBufferReceiveFromISR xStreamBufferReceiveFromISR + * \ingroup StreamBufferManagement + */ +size_t xStreamBufferReceiveFromISR( StreamBufferHandle_t xStreamBuffer, + void *pvRxData, + size_t xBufferLengthBytes, + BaseType_t * const pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION; + +/** + * stream_buffer.h + * +
+void vStreamBufferDelete( StreamBufferHandle_t xStreamBuffer );
+
+ * + * Deletes a stream buffer that was previously created using a call to + * xStreamBufferCreate() or xStreamBufferCreateStatic(). If the stream + * buffer was created using dynamic memory (that is, by xStreamBufferCreate()), + * then the allocated memory is freed. + * + * A stream buffer handle must not be used after the stream buffer has been + * deleted. + * + * @param xStreamBuffer The handle of the stream buffer to be deleted. + * + * \defgroup vStreamBufferDelete vStreamBufferDelete + * \ingroup StreamBufferManagement + */ +void vStreamBufferDelete( StreamBufferHandle_t xStreamBuffer ) PRIVILEGED_FUNCTION; + +/** + * stream_buffer.h + * +
+BaseType_t xStreamBufferIsFull( StreamBufferHandle_t xStreamBuffer );
+
+ * + * Queries a stream buffer to see if it is full. A stream buffer is full if it + * does not have any free space, and therefore cannot accept any more data. + * + * @param xStreamBuffer The handle of the stream buffer being queried. + * + * @return If the stream buffer is full then pdTRUE is returned. Otherwise + * pdFALSE is returned. + * + * \defgroup xStreamBufferIsFull xStreamBufferIsFull + * \ingroup StreamBufferManagement + */ +BaseType_t xStreamBufferIsFull( StreamBufferHandle_t xStreamBuffer ) PRIVILEGED_FUNCTION; + +/** + * stream_buffer.h + * +
+BaseType_t xStreamBufferIsEmpty( StreamBufferHandle_t xStreamBuffer );
+
+ * + * Queries a stream buffer to see if it is empty. A stream buffer is empty if + * it does not contain any data. + * + * @param xStreamBuffer The handle of the stream buffer being queried. + * + * @return If the stream buffer is empty then pdTRUE is returned. Otherwise + * pdFALSE is returned. + * + * \defgroup xStreamBufferIsEmpty xStreamBufferIsEmpty + * \ingroup StreamBufferManagement + */ +BaseType_t xStreamBufferIsEmpty( StreamBufferHandle_t xStreamBuffer ) PRIVILEGED_FUNCTION; + +/** + * stream_buffer.h + * +
+BaseType_t xStreamBufferReset( StreamBufferHandle_t xStreamBuffer );
+
+ * + * Resets a stream buffer to its initial, empty, state. Any data that was in + * the stream buffer is discarded. A stream buffer can only be reset if there + * are no tasks blocked waiting to either send to or receive from the stream + * buffer. + * + * @param xStreamBuffer The handle of the stream buffer being reset. + * + * @return If the stream buffer is reset then pdPASS is returned. If there was + * a task blocked waiting to send to or read from the stream buffer then the + * stream buffer is not reset and pdFAIL is returned. + * + * \defgroup xStreamBufferReset xStreamBufferReset + * \ingroup StreamBufferManagement + */ +BaseType_t xStreamBufferReset( StreamBufferHandle_t xStreamBuffer ) PRIVILEGED_FUNCTION; + +/** + * stream_buffer.h + * +
+size_t xStreamBufferSpacesAvailable( StreamBufferHandle_t xStreamBuffer );
+
+ * + * Queries a stream buffer to see how much free space it contains, which is + * equal to the amount of data that can be sent to the stream buffer before it + * is full. + * + * @param xStreamBuffer The handle of the stream buffer being queried. + * + * @return The number of bytes that can be written to the stream buffer before + * the stream buffer would be full. + * + * \defgroup xStreamBufferSpacesAvailable xStreamBufferSpacesAvailable + * \ingroup StreamBufferManagement + */ +size_t xStreamBufferSpacesAvailable( StreamBufferHandle_t xStreamBuffer ) PRIVILEGED_FUNCTION; + +/** + * stream_buffer.h + * +
+size_t xStreamBufferBytesAvailable( StreamBufferHandle_t xStreamBuffer );
+
+ * + * Queries a stream buffer to see how much data it contains, which is equal to + * the number of bytes that can be read from the stream buffer before the stream + * buffer would be empty. + * + * @param xStreamBuffer The handle of the stream buffer being queried. + * + * @return The number of bytes that can be read from the stream buffer before + * the stream buffer would be empty. + * + * \defgroup xStreamBufferBytesAvailable xStreamBufferBytesAvailable + * \ingroup StreamBufferManagement + */ +size_t xStreamBufferBytesAvailable( StreamBufferHandle_t xStreamBuffer ) PRIVILEGED_FUNCTION; + +/** + * stream_buffer.h + * +
+BaseType_t xStreamBufferSetTriggerLevel( StreamBufferHandle_t xStreamBuffer, size_t xTriggerLevel );
+
+ * + * A stream buffer's trigger level is the number of bytes that must be in the + * stream buffer before a task that is blocked on the stream buffer to + * wait for data is moved out of the blocked state. For example, if a task is + * blocked on a read of an empty stream buffer that has a trigger level of 1 + * then the task will be unblocked when a single byte is written to the buffer + * or the task's block time expires. As another example, if a task is blocked + * on a read of an empty stream buffer that has a trigger level of 10 then the + * task will not be unblocked until the stream buffer contains at least 10 bytes + * or the task's block time expires. If a reading task's block time expires + * before the trigger level is reached then the task will still receive however + * many bytes are actually available. Setting a trigger level of 0 will result + * in a trigger level of 1 being used. It is not valid to specify a trigger + * level that is greater than the buffer size. + * + * A trigger level is set when the stream buffer is created, and can be modified + * using xStreamBufferSetTriggerLevel(). + * + * @param xStreamBuffer The handle of the stream buffer being updated. + * + * @param xTriggerLevel The new trigger level for the stream buffer. + * + * @return If xTriggerLevel was less than or equal to the stream buffer's length + * then the trigger level will be updated and pdTRUE is returned. Otherwise + * pdFALSE is returned. + * + * \defgroup xStreamBufferSetTriggerLevel xStreamBufferSetTriggerLevel + * \ingroup StreamBufferManagement + */ +BaseType_t xStreamBufferSetTriggerLevel( StreamBufferHandle_t xStreamBuffer, size_t xTriggerLevel ) PRIVILEGED_FUNCTION; + +/** + * stream_buffer.h + * +
+BaseType_t xStreamBufferSendCompletedFromISR( StreamBufferHandle_t xStreamBuffer, BaseType_t *pxHigherPriorityTaskWoken );
+
+ * + * For advanced users only. + * + * The sbSEND_COMPLETED() macro is called from within the FreeRTOS APIs when + * data is sent to a message buffer or stream buffer. If there was a task that + * was blocked on the message or stream buffer waiting for data to arrive then + * the sbSEND_COMPLETED() macro sends a notification to the task to remove it + * from the Blocked state. xStreamBufferSendCompletedFromISR() does the same + * thing. It is provided to enable application writers to implement their own + * version of sbSEND_COMPLETED(), and MUST NOT BE USED AT ANY OTHER TIME. + * + * See the example implemented in FreeRTOS/Demo/Minimal/MessageBufferAMP.c for + * additional information. + * + * @param xStreamBuffer The handle of the stream buffer to which data was + * written. + * + * @param pxHigherPriorityTaskWoken *pxHigherPriorityTaskWoken should be + * initialised to pdFALSE before it is passed into + * xStreamBufferSendCompletedFromISR(). If calling + * xStreamBufferSendCompletedFromISR() removes a task from the Blocked state, + * and the task has a priority above the priority of the currently running task, + * then *pxHigherPriorityTaskWoken will get set to pdTRUE indicating that a + * context switch should be performed before exiting the ISR. + * + * @return If a task was removed from the Blocked state then pdTRUE is returned. + * Otherwise pdFALSE is returned. + * + * \defgroup xStreamBufferSendCompletedFromISR xStreamBufferSendCompletedFromISR + * \ingroup StreamBufferManagement + */ +BaseType_t xStreamBufferSendCompletedFromISR( StreamBufferHandle_t xStreamBuffer, BaseType_t *pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION; + +/** + * stream_buffer.h + * +
+BaseType_t xStreamBufferReceiveCompletedFromISR( StreamBufferHandle_t xStreamBuffer, BaseType_t *pxHigherPriorityTaskWoken );
+
+ * + * For advanced users only. + * + * The sbRECEIVE_COMPLETED() macro is called from within the FreeRTOS APIs when + * data is read out of a message buffer or stream buffer. If there was a task + * that was blocked on the message or stream buffer waiting for data to arrive + * then the sbRECEIVE_COMPLETED() macro sends a notification to the task to + * remove it from the Blocked state. xStreamBufferReceiveCompletedFromISR() + * does the same thing. It is provided to enable application writers to + * implement their own version of sbRECEIVE_COMPLETED(), and MUST NOT BE USED AT + * ANY OTHER TIME. + * + * See the example implemented in FreeRTOS/Demo/Minimal/MessageBufferAMP.c for + * additional information. + * + * @param xStreamBuffer The handle of the stream buffer from which data was + * read. + * + * @param pxHigherPriorityTaskWoken *pxHigherPriorityTaskWoken should be + * initialised to pdFALSE before it is passed into + * xStreamBufferReceiveCompletedFromISR(). If calling + * xStreamBufferReceiveCompletedFromISR() removes a task from the Blocked state, + * and the task has a priority above the priority of the currently running task, + * then *pxHigherPriorityTaskWoken will get set to pdTRUE indicating that a + * context switch should be performed before exiting the ISR. + * + * @return If a task was removed from the Blocked state then pdTRUE is returned. + * Otherwise pdFALSE is returned. + * + * \defgroup xStreamBufferReceiveCompletedFromISR xStreamBufferReceiveCompletedFromISR + * \ingroup StreamBufferManagement + */ +BaseType_t xStreamBufferReceiveCompletedFromISR( StreamBufferHandle_t xStreamBuffer, BaseType_t *pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION; + +/* Functions below here are not part of the public API. */ +StreamBufferHandle_t xStreamBufferGenericCreate( size_t xBufferSizeBytes, + size_t xTriggerLevelBytes, + BaseType_t xIsMessageBuffer ) PRIVILEGED_FUNCTION; + +StreamBufferHandle_t xStreamBufferGenericCreateStatic( size_t xBufferSizeBytes, + size_t xTriggerLevelBytes, + BaseType_t xIsMessageBuffer, + uint8_t * const pucStreamBufferStorageArea, + StaticStreamBuffer_t * const pxStaticStreamBuffer ) PRIVILEGED_FUNCTION; + +size_t xStreamBufferNextMessageLengthBytes( StreamBufferHandle_t xStreamBuffer ) PRIVILEGED_FUNCTION; + +#if( configUSE_TRACE_FACILITY == 1 ) + void vStreamBufferSetStreamBufferNumber( StreamBufferHandle_t xStreamBuffer, UBaseType_t uxStreamBufferNumber ) PRIVILEGED_FUNCTION; + UBaseType_t uxStreamBufferGetStreamBufferNumber( StreamBufferHandle_t xStreamBuffer ) PRIVILEGED_FUNCTION; + uint8_t ucStreamBufferGetStreamBufferType( StreamBufferHandle_t xStreamBuffer ) PRIVILEGED_FUNCTION; +#endif + +#if defined( __cplusplus ) +} +#endif + +#endif /* !defined( STREAM_BUFFER_H ) */ diff --git a/firmware/Middlewares/Third_Party/FreeRTOS/Source/include/task.h b/firmware/Middlewares/Third_Party/FreeRTOS/Source/include/task.h new file mode 100644 index 0000000..b0cc60b --- /dev/null +++ b/firmware/Middlewares/Third_Party/FreeRTOS/Source/include/task.h @@ -0,0 +1,2543 @@ +/* + * FreeRTOS Kernel V10.3.1 + * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * http://www.FreeRTOS.org + * http://aws.amazon.com/freertos + * + * 1 tab == 4 spaces! + */ + + +#ifndef INC_TASK_H +#define INC_TASK_H + +#ifndef INC_FREERTOS_H + #error "include FreeRTOS.h must appear in source files before include task.h" +#endif + +#include "list.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/*----------------------------------------------------------- + * MACROS AND DEFINITIONS + *----------------------------------------------------------*/ + +#define tskKERNEL_VERSION_NUMBER "V10.3.1" +#define tskKERNEL_VERSION_MAJOR 10 +#define tskKERNEL_VERSION_MINOR 3 +#define tskKERNEL_VERSION_BUILD 1 + +/* MPU region parameters passed in ulParameters + * of MemoryRegion_t struct. */ +#define tskMPU_REGION_READ_ONLY ( 1UL << 0UL ) +#define tskMPU_REGION_READ_WRITE ( 1UL << 1UL ) +#define tskMPU_REGION_EXECUTE_NEVER ( 1UL << 2UL ) +#define tskMPU_REGION_NORMAL_MEMORY ( 1UL << 3UL ) +#define tskMPU_REGION_DEVICE_MEMORY ( 1UL << 4UL ) + +/** + * task. h + * + * Type by which tasks are referenced. For example, a call to xTaskCreate + * returns (via a pointer parameter) an TaskHandle_t variable that can then + * be used as a parameter to vTaskDelete to delete the task. + * + * \defgroup TaskHandle_t TaskHandle_t + * \ingroup Tasks + */ +struct tskTaskControlBlock; /* The old naming convention is used to prevent breaking kernel aware debuggers. */ +typedef struct tskTaskControlBlock* TaskHandle_t; + +/* + * Defines the prototype to which the application task hook function must + * conform. + */ +typedef BaseType_t (*TaskHookFunction_t)( void * ); + +/* Task states returned by eTaskGetState. */ +typedef enum +{ + eRunning = 0, /* A task is querying the state of itself, so must be running. */ + eReady, /* The task being queried is in a read or pending ready list. */ + eBlocked, /* The task being queried is in the Blocked state. */ + eSuspended, /* The task being queried is in the Suspended state, or is in the Blocked state with an infinite time out. */ + eDeleted, /* The task being queried has been deleted, but its TCB has not yet been freed. */ + eInvalid /* Used as an 'invalid state' value. */ +} eTaskState; + +/* Actions that can be performed when vTaskNotify() is called. */ +typedef enum +{ + eNoAction = 0, /* Notify the task without updating its notify value. */ + eSetBits, /* Set bits in the task's notification value. */ + eIncrement, /* Increment the task's notification value. */ + eSetValueWithOverwrite, /* Set the task's notification value to a specific value even if the previous value has not yet been read by the task. */ + eSetValueWithoutOverwrite /* Set the task's notification value if the previous value has been read by the task. */ +} eNotifyAction; + +/* + * Used internally only. + */ +typedef struct xTIME_OUT +{ + BaseType_t xOverflowCount; + TickType_t xTimeOnEntering; +} TimeOut_t; + +/* + * Defines the memory ranges allocated to the task when an MPU is used. + */ +typedef struct xMEMORY_REGION +{ + void *pvBaseAddress; + uint32_t ulLengthInBytes; + uint32_t ulParameters; +} MemoryRegion_t; + +/* + * Parameters required to create an MPU protected task. + */ +typedef struct xTASK_PARAMETERS +{ + TaskFunction_t pvTaskCode; + const char * const pcName; /*lint !e971 Unqualified char types are allowed for strings and single characters only. */ + configSTACK_DEPTH_TYPE usStackDepth; + void *pvParameters; + UBaseType_t uxPriority; + StackType_t *puxStackBuffer; + MemoryRegion_t xRegions[ portNUM_CONFIGURABLE_REGIONS ]; + #if ( ( portUSING_MPU_WRAPPERS == 1 ) && ( configSUPPORT_STATIC_ALLOCATION == 1 ) ) + StaticTask_t * const pxTaskBuffer; + #endif +} TaskParameters_t; + +/* Used with the uxTaskGetSystemState() function to return the state of each task +in the system. */ +typedef struct xTASK_STATUS +{ + TaskHandle_t xHandle; /* The handle of the task to which the rest of the information in the structure relates. */ + const char *pcTaskName; /* A pointer to the task's name. This value will be invalid if the task was deleted since the structure was populated! */ /*lint !e971 Unqualified char types are allowed for strings and single characters only. */ + UBaseType_t xTaskNumber; /* A number unique to the task. */ + eTaskState eCurrentState; /* The state in which the task existed when the structure was populated. */ + UBaseType_t uxCurrentPriority; /* The priority at which the task was running (may be inherited) when the structure was populated. */ + UBaseType_t uxBasePriority; /* The priority to which the task will return if the task's current priority has been inherited to avoid unbounded priority inversion when obtaining a mutex. Only valid if configUSE_MUTEXES is defined as 1 in FreeRTOSConfig.h. */ + uint32_t ulRunTimeCounter; /* The total run time allocated to the task so far, as defined by the run time stats clock. See http://www.freertos.org/rtos-run-time-stats.html. Only valid when configGENERATE_RUN_TIME_STATS is defined as 1 in FreeRTOSConfig.h. */ + StackType_t *pxStackBase; /* Points to the lowest address of the task's stack area. */ + configSTACK_DEPTH_TYPE usStackHighWaterMark; /* The minimum amount of stack space that has remained for the task since the task was created. The closer this value is to zero the closer the task has come to overflowing its stack. */ +} TaskStatus_t; + +/* Possible return values for eTaskConfirmSleepModeStatus(). */ +typedef enum +{ + eAbortSleep = 0, /* A task has been made ready or a context switch pended since portSUPPORESS_TICKS_AND_SLEEP() was called - abort entering a sleep mode. */ + eStandardSleep, /* Enter a sleep mode that will not last any longer than the expected idle time. */ + eNoTasksWaitingTimeout /* No tasks are waiting for a timeout so it is safe to enter a sleep mode that can only be exited by an external interrupt. */ +} eSleepModeStatus; + +/** + * Defines the priority used by the idle task. This must not be modified. + * + * \ingroup TaskUtils + */ +#define tskIDLE_PRIORITY ( ( UBaseType_t ) 0U ) + +/** + * task. h + * + * Macro for forcing a context switch. + * + * \defgroup taskYIELD taskYIELD + * \ingroup SchedulerControl + */ +#define taskYIELD() portYIELD() + +/** + * task. h + * + * Macro to mark the start of a critical code region. Preemptive context + * switches cannot occur when in a critical region. + * + * NOTE: This may alter the stack (depending on the portable implementation) + * so must be used with care! + * + * \defgroup taskENTER_CRITICAL taskENTER_CRITICAL + * \ingroup SchedulerControl + */ +#define taskENTER_CRITICAL() portENTER_CRITICAL() +#define taskENTER_CRITICAL_FROM_ISR() portSET_INTERRUPT_MASK_FROM_ISR() + +/** + * task. h + * + * Macro to mark the end of a critical code region. Preemptive context + * switches cannot occur when in a critical region. + * + * NOTE: This may alter the stack (depending on the portable implementation) + * so must be used with care! + * + * \defgroup taskEXIT_CRITICAL taskEXIT_CRITICAL + * \ingroup SchedulerControl + */ +#define taskEXIT_CRITICAL() portEXIT_CRITICAL() +#define taskEXIT_CRITICAL_FROM_ISR( x ) portCLEAR_INTERRUPT_MASK_FROM_ISR( x ) +/** + * task. h + * + * Macro to disable all maskable interrupts. + * + * \defgroup taskDISABLE_INTERRUPTS taskDISABLE_INTERRUPTS + * \ingroup SchedulerControl + */ +#define taskDISABLE_INTERRUPTS() portDISABLE_INTERRUPTS() + +/** + * task. h + * + * Macro to enable microcontroller interrupts. + * + * \defgroup taskENABLE_INTERRUPTS taskENABLE_INTERRUPTS + * \ingroup SchedulerControl + */ +#define taskENABLE_INTERRUPTS() portENABLE_INTERRUPTS() + +/* Definitions returned by xTaskGetSchedulerState(). taskSCHEDULER_SUSPENDED is +0 to generate more optimal code when configASSERT() is defined as the constant +is used in assert() statements. */ +#define taskSCHEDULER_SUSPENDED ( ( BaseType_t ) 0 ) +#define taskSCHEDULER_NOT_STARTED ( ( BaseType_t ) 1 ) +#define taskSCHEDULER_RUNNING ( ( BaseType_t ) 2 ) + + +/*----------------------------------------------------------- + * TASK CREATION API + *----------------------------------------------------------*/ + +/** + * task. h + *
+ BaseType_t xTaskCreate(
+							  TaskFunction_t pvTaskCode,
+							  const char * const pcName,
+							  configSTACK_DEPTH_TYPE usStackDepth,
+							  void *pvParameters,
+							  UBaseType_t uxPriority,
+							  TaskHandle_t *pvCreatedTask
+						  );
+ * + * Create a new task and add it to the list of tasks that are ready to run. + * + * Internally, within the FreeRTOS implementation, tasks use two blocks of + * memory. The first block is used to hold the task's data structures. The + * second block is used by the task as its stack. If a task is created using + * xTaskCreate() then both blocks of memory are automatically dynamically + * allocated inside the xTaskCreate() function. (see + * http://www.freertos.org/a00111.html). If a task is created using + * xTaskCreateStatic() then the application writer must provide the required + * memory. xTaskCreateStatic() therefore allows a task to be created without + * using any dynamic memory allocation. + * + * See xTaskCreateStatic() for a version that does not use any dynamic memory + * allocation. + * + * xTaskCreate() can only be used to create a task that has unrestricted + * access to the entire microcontroller memory map. Systems that include MPU + * support can alternatively create an MPU constrained task using + * xTaskCreateRestricted(). + * + * @param pvTaskCode Pointer to the task entry function. Tasks + * must be implemented to never return (i.e. continuous loop). + * + * @param pcName A descriptive name for the task. This is mainly used to + * facilitate debugging. Max length defined by configMAX_TASK_NAME_LEN - default + * is 16. + * + * @param usStackDepth The size of the task stack specified as the number of + * variables the stack can hold - not the number of bytes. For example, if + * the stack is 16 bits wide and usStackDepth is defined as 100, 200 bytes + * will be allocated for stack storage. + * + * @param pvParameters Pointer that will be used as the parameter for the task + * being created. + * + * @param uxPriority The priority at which the task should run. Systems that + * include MPU support can optionally create tasks in a privileged (system) + * mode by setting bit portPRIVILEGE_BIT of the priority parameter. For + * example, to create a privileged task at priority 2 the uxPriority parameter + * should be set to ( 2 | portPRIVILEGE_BIT ). + * + * @param pvCreatedTask Used to pass back a handle by which the created task + * can be referenced. + * + * @return pdPASS if the task was successfully created and added to a ready + * list, otherwise an error code defined in the file projdefs.h + * + * Example usage: +
+ // Task to be created.
+ void vTaskCode( void * pvParameters )
+ {
+	 for( ;; )
+	 {
+		 // Task code goes here.
+	 }
+ }
+
+ // Function that creates a task.
+ void vOtherFunction( void )
+ {
+ static uint8_t ucParameterToPass;
+ TaskHandle_t xHandle = NULL;
+
+	 // Create the task, storing the handle.  Note that the passed parameter ucParameterToPass
+	 // must exist for the lifetime of the task, so in this case is declared static.  If it was just an
+	 // an automatic stack variable it might no longer exist, or at least have been corrupted, by the time
+	 // the new task attempts to access it.
+	 xTaskCreate( vTaskCode, "NAME", STACK_SIZE, &ucParameterToPass, tskIDLE_PRIORITY, &xHandle );
+	 configASSERT( xHandle );
+
+	 // Use the handle to delete the task.
+	 if( xHandle != NULL )
+	 {
+	 	vTaskDelete( xHandle );
+	 }
+ }
+   
+ * \defgroup xTaskCreate xTaskCreate + * \ingroup Tasks + */ +#if( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) + BaseType_t xTaskCreate( TaskFunction_t pxTaskCode, + const char * const pcName, /*lint !e971 Unqualified char types are allowed for strings and single characters only. */ + const configSTACK_DEPTH_TYPE usStackDepth, + void * const pvParameters, + UBaseType_t uxPriority, + TaskHandle_t * const pxCreatedTask ) PRIVILEGED_FUNCTION; +#endif + +/** + * task. h + *
+ TaskHandle_t xTaskCreateStatic( TaskFunction_t pvTaskCode,
+								 const char * const pcName,
+								 uint32_t ulStackDepth,
+								 void *pvParameters,
+								 UBaseType_t uxPriority,
+								 StackType_t *pxStackBuffer,
+								 StaticTask_t *pxTaskBuffer );
+ * + * Create a new task and add it to the list of tasks that are ready to run. + * + * Internally, within the FreeRTOS implementation, tasks use two blocks of + * memory. The first block is used to hold the task's data structures. The + * second block is used by the task as its stack. If a task is created using + * xTaskCreate() then both blocks of memory are automatically dynamically + * allocated inside the xTaskCreate() function. (see + * http://www.freertos.org/a00111.html). If a task is created using + * xTaskCreateStatic() then the application writer must provide the required + * memory. xTaskCreateStatic() therefore allows a task to be created without + * using any dynamic memory allocation. + * + * @param pvTaskCode Pointer to the task entry function. Tasks + * must be implemented to never return (i.e. continuous loop). + * + * @param pcName A descriptive name for the task. This is mainly used to + * facilitate debugging. The maximum length of the string is defined by + * configMAX_TASK_NAME_LEN in FreeRTOSConfig.h. + * + * @param ulStackDepth The size of the task stack specified as the number of + * variables the stack can hold - not the number of bytes. For example, if + * the stack is 32-bits wide and ulStackDepth is defined as 100 then 400 bytes + * will be allocated for stack storage. + * + * @param pvParameters Pointer that will be used as the parameter for the task + * being created. + * + * @param uxPriority The priority at which the task will run. + * + * @param pxStackBuffer Must point to a StackType_t array that has at least + * ulStackDepth indexes - the array will then be used as the task's stack, + * removing the need for the stack to be allocated dynamically. + * + * @param pxTaskBuffer Must point to a variable of type StaticTask_t, which will + * then be used to hold the task's data structures, removing the need for the + * memory to be allocated dynamically. + * + * @return If neither pxStackBuffer or pxTaskBuffer are NULL, then the task will + * be created and a handle to the created task is returned. If either + * pxStackBuffer or pxTaskBuffer are NULL then the task will not be created and + * NULL is returned. + * + * Example usage: +
+
+    // Dimensions the buffer that the task being created will use as its stack.
+    // NOTE:  This is the number of words the stack will hold, not the number of
+    // bytes.  For example, if each stack item is 32-bits, and this is set to 100,
+    // then 400 bytes (100 * 32-bits) will be allocated.
+    #define STACK_SIZE 200
+
+    // Structure that will hold the TCB of the task being created.
+    StaticTask_t xTaskBuffer;
+
+    // Buffer that the task being created will use as its stack.  Note this is
+    // an array of StackType_t variables.  The size of StackType_t is dependent on
+    // the RTOS port.
+    StackType_t xStack[ STACK_SIZE ];
+
+    // Function that implements the task being created.
+    void vTaskCode( void * pvParameters )
+    {
+        // The parameter value is expected to be 1 as 1 is passed in the
+        // pvParameters value in the call to xTaskCreateStatic().
+        configASSERT( ( uint32_t ) pvParameters == 1UL );
+
+        for( ;; )
+        {
+            // Task code goes here.
+        }
+    }
+
+    // Function that creates a task.
+    void vOtherFunction( void )
+    {
+        TaskHandle_t xHandle = NULL;
+
+        // Create the task without using any dynamic memory allocation.
+        xHandle = xTaskCreateStatic(
+                      vTaskCode,       // Function that implements the task.
+                      "NAME",          // Text name for the task.
+                      STACK_SIZE,      // Stack size in words, not bytes.
+                      ( void * ) 1,    // Parameter passed into the task.
+                      tskIDLE_PRIORITY,// Priority at which the task is created.
+                      xStack,          // Array to use as the task's stack.
+                      &xTaskBuffer );  // Variable to hold the task's data structure.
+
+        // puxStackBuffer and pxTaskBuffer were not NULL, so the task will have
+        // been created, and xHandle will be the task's handle.  Use the handle
+        // to suspend the task.
+        vTaskSuspend( xHandle );
+    }
+   
+ * \defgroup xTaskCreateStatic xTaskCreateStatic + * \ingroup Tasks + */ +#if( configSUPPORT_STATIC_ALLOCATION == 1 ) + TaskHandle_t xTaskCreateStatic( TaskFunction_t pxTaskCode, + const char * const pcName, /*lint !e971 Unqualified char types are allowed for strings and single characters only. */ + const uint32_t ulStackDepth, + void * const pvParameters, + UBaseType_t uxPriority, + StackType_t * const puxStackBuffer, + StaticTask_t * const pxTaskBuffer ) PRIVILEGED_FUNCTION; +#endif /* configSUPPORT_STATIC_ALLOCATION */ + +/** + * task. h + *
+ BaseType_t xTaskCreateRestricted( TaskParameters_t *pxTaskDefinition, TaskHandle_t *pxCreatedTask );
+ * + * Only available when configSUPPORT_DYNAMIC_ALLOCATION is set to 1. + * + * xTaskCreateRestricted() should only be used in systems that include an MPU + * implementation. + * + * Create a new task and add it to the list of tasks that are ready to run. + * The function parameters define the memory regions and associated access + * permissions allocated to the task. + * + * See xTaskCreateRestrictedStatic() for a version that does not use any + * dynamic memory allocation. + * + * @param pxTaskDefinition Pointer to a structure that contains a member + * for each of the normal xTaskCreate() parameters (see the xTaskCreate() API + * documentation) plus an optional stack buffer and the memory region + * definitions. + * + * @param pxCreatedTask Used to pass back a handle by which the created task + * can be referenced. + * + * @return pdPASS if the task was successfully created and added to a ready + * list, otherwise an error code defined in the file projdefs.h + * + * Example usage: +
+// Create an TaskParameters_t structure that defines the task to be created.
+static const TaskParameters_t xCheckTaskParameters =
+{
+	vATask,		// pvTaskCode - the function that implements the task.
+	"ATask",	// pcName - just a text name for the task to assist debugging.
+	100,		// usStackDepth	- the stack size DEFINED IN WORDS.
+	NULL,		// pvParameters - passed into the task function as the function parameters.
+	( 1UL | portPRIVILEGE_BIT ),// uxPriority - task priority, set the portPRIVILEGE_BIT if the task should run in a privileged state.
+	cStackBuffer,// puxStackBuffer - the buffer to be used as the task stack.
+
+	// xRegions - Allocate up to three separate memory regions for access by
+	// the task, with appropriate access permissions.  Different processors have
+	// different memory alignment requirements - refer to the FreeRTOS documentation
+	// for full information.
+	{
+		// Base address					Length	Parameters
+		{ cReadWriteArray,				32,		portMPU_REGION_READ_WRITE },
+		{ cReadOnlyArray,				32,		portMPU_REGION_READ_ONLY },
+		{ cPrivilegedOnlyAccessArray,	128,	portMPU_REGION_PRIVILEGED_READ_WRITE }
+	}
+};
+
+int main( void )
+{
+TaskHandle_t xHandle;
+
+	// Create a task from the const structure defined above.  The task handle
+	// is requested (the second parameter is not NULL) but in this case just for
+	// demonstration purposes as its not actually used.
+	xTaskCreateRestricted( &xRegTest1Parameters, &xHandle );
+
+	// Start the scheduler.
+	vTaskStartScheduler();
+
+	// Will only get here if there was insufficient memory to create the idle
+	// and/or timer task.
+	for( ;; );
+}
+   
+ * \defgroup xTaskCreateRestricted xTaskCreateRestricted + * \ingroup Tasks + */ +#if( portUSING_MPU_WRAPPERS == 1 ) + BaseType_t xTaskCreateRestricted( const TaskParameters_t * const pxTaskDefinition, TaskHandle_t *pxCreatedTask ) PRIVILEGED_FUNCTION; +#endif + +/** + * task. h + *
+ BaseType_t xTaskCreateRestrictedStatic( TaskParameters_t *pxTaskDefinition, TaskHandle_t *pxCreatedTask );
+ * + * Only available when configSUPPORT_STATIC_ALLOCATION is set to 1. + * + * xTaskCreateRestrictedStatic() should only be used in systems that include an + * MPU implementation. + * + * Internally, within the FreeRTOS implementation, tasks use two blocks of + * memory. The first block is used to hold the task's data structures. The + * second block is used by the task as its stack. If a task is created using + * xTaskCreateRestricted() then the stack is provided by the application writer, + * and the memory used to hold the task's data structure is automatically + * dynamically allocated inside the xTaskCreateRestricted() function. If a task + * is created using xTaskCreateRestrictedStatic() then the application writer + * must provide the memory used to hold the task's data structures too. + * xTaskCreateRestrictedStatic() therefore allows a memory protected task to be + * created without using any dynamic memory allocation. + * + * @param pxTaskDefinition Pointer to a structure that contains a member + * for each of the normal xTaskCreate() parameters (see the xTaskCreate() API + * documentation) plus an optional stack buffer and the memory region + * definitions. If configSUPPORT_STATIC_ALLOCATION is set to 1 the structure + * contains an additional member, which is used to point to a variable of type + * StaticTask_t - which is then used to hold the task's data structure. + * + * @param pxCreatedTask Used to pass back a handle by which the created task + * can be referenced. + * + * @return pdPASS if the task was successfully created and added to a ready + * list, otherwise an error code defined in the file projdefs.h + * + * Example usage: +
+// Create an TaskParameters_t structure that defines the task to be created.
+// The StaticTask_t variable is only included in the structure when
+// configSUPPORT_STATIC_ALLOCATION is set to 1.  The PRIVILEGED_DATA macro can
+// be used to force the variable into the RTOS kernel's privileged data area.
+static PRIVILEGED_DATA StaticTask_t xTaskBuffer;
+static const TaskParameters_t xCheckTaskParameters =
+{
+	vATask,		// pvTaskCode - the function that implements the task.
+	"ATask",	// pcName - just a text name for the task to assist debugging.
+	100,		// usStackDepth	- the stack size DEFINED IN WORDS.
+	NULL,		// pvParameters - passed into the task function as the function parameters.
+	( 1UL | portPRIVILEGE_BIT ),// uxPriority - task priority, set the portPRIVILEGE_BIT if the task should run in a privileged state.
+	cStackBuffer,// puxStackBuffer - the buffer to be used as the task stack.
+
+	// xRegions - Allocate up to three separate memory regions for access by
+	// the task, with appropriate access permissions.  Different processors have
+	// different memory alignment requirements - refer to the FreeRTOS documentation
+	// for full information.
+	{
+		// Base address					Length	Parameters
+		{ cReadWriteArray,				32,		portMPU_REGION_READ_WRITE },
+		{ cReadOnlyArray,				32,		portMPU_REGION_READ_ONLY },
+		{ cPrivilegedOnlyAccessArray,	128,	portMPU_REGION_PRIVILEGED_READ_WRITE }
+	}
+
+	&xTaskBuffer; // Holds the task's data structure.
+};
+
+int main( void )
+{
+TaskHandle_t xHandle;
+
+	// Create a task from the const structure defined above.  The task handle
+	// is requested (the second parameter is not NULL) but in this case just for
+	// demonstration purposes as its not actually used.
+	xTaskCreateRestricted( &xRegTest1Parameters, &xHandle );
+
+	// Start the scheduler.
+	vTaskStartScheduler();
+
+	// Will only get here if there was insufficient memory to create the idle
+	// and/or timer task.
+	for( ;; );
+}
+   
+ * \defgroup xTaskCreateRestrictedStatic xTaskCreateRestrictedStatic + * \ingroup Tasks + */ +#if( ( portUSING_MPU_WRAPPERS == 1 ) && ( configSUPPORT_STATIC_ALLOCATION == 1 ) ) + BaseType_t xTaskCreateRestrictedStatic( const TaskParameters_t * const pxTaskDefinition, TaskHandle_t *pxCreatedTask ) PRIVILEGED_FUNCTION; +#endif + +/** + * task. h + *
+ void vTaskAllocateMPURegions( TaskHandle_t xTask, const MemoryRegion_t * const pxRegions );
+ * + * Memory regions are assigned to a restricted task when the task is created by + * a call to xTaskCreateRestricted(). These regions can be redefined using + * vTaskAllocateMPURegions(). + * + * @param xTask The handle of the task being updated. + * + * @param xRegions A pointer to an MemoryRegion_t structure that contains the + * new memory region definitions. + * + * Example usage: +
+// Define an array of MemoryRegion_t structures that configures an MPU region
+// allowing read/write access for 1024 bytes starting at the beginning of the
+// ucOneKByte array.  The other two of the maximum 3 definable regions are
+// unused so set to zero.
+static const MemoryRegion_t xAltRegions[ portNUM_CONFIGURABLE_REGIONS ] =
+{
+	// Base address		Length		Parameters
+	{ ucOneKByte,		1024,		portMPU_REGION_READ_WRITE },
+	{ 0,				0,			0 },
+	{ 0,				0,			0 }
+};
+
+void vATask( void *pvParameters )
+{
+	// This task was created such that it has access to certain regions of
+	// memory as defined by the MPU configuration.  At some point it is
+	// desired that these MPU regions are replaced with that defined in the
+	// xAltRegions const struct above.  Use a call to vTaskAllocateMPURegions()
+	// for this purpose.  NULL is used as the task handle to indicate that this
+	// function should modify the MPU regions of the calling task.
+	vTaskAllocateMPURegions( NULL, xAltRegions );
+
+	// Now the task can continue its function, but from this point on can only
+	// access its stack and the ucOneKByte array (unless any other statically
+	// defined or shared regions have been declared elsewhere).
+}
+   
+ * \defgroup xTaskCreateRestricted xTaskCreateRestricted + * \ingroup Tasks + */ +void vTaskAllocateMPURegions( TaskHandle_t xTask, const MemoryRegion_t * const pxRegions ) PRIVILEGED_FUNCTION; + +/** + * task. h + *
void vTaskDelete( TaskHandle_t xTask );
+ * + * INCLUDE_vTaskDelete must be defined as 1 for this function to be available. + * See the configuration section for more information. + * + * Remove a task from the RTOS real time kernel's management. The task being + * deleted will be removed from all ready, blocked, suspended and event lists. + * + * NOTE: The idle task is responsible for freeing the kernel allocated + * memory from tasks that have been deleted. It is therefore important that + * the idle task is not starved of microcontroller processing time if your + * application makes any calls to vTaskDelete (). Memory allocated by the + * task code is not automatically freed, and should be freed before the task + * is deleted. + * + * See the demo application file death.c for sample code that utilises + * vTaskDelete (). + * + * @param xTask The handle of the task to be deleted. Passing NULL will + * cause the calling task to be deleted. + * + * Example usage: +
+ void vOtherFunction( void )
+ {
+ TaskHandle_t xHandle;
+
+	 // Create the task, storing the handle.
+	 xTaskCreate( vTaskCode, "NAME", STACK_SIZE, NULL, tskIDLE_PRIORITY, &xHandle );
+
+	 // Use the handle to delete the task.
+	 vTaskDelete( xHandle );
+ }
+   
+ * \defgroup vTaskDelete vTaskDelete + * \ingroup Tasks + */ +void vTaskDelete( TaskHandle_t xTaskToDelete ) PRIVILEGED_FUNCTION; + +/*----------------------------------------------------------- + * TASK CONTROL API + *----------------------------------------------------------*/ + +/** + * task. h + *
void vTaskDelay( const TickType_t xTicksToDelay );
+ * + * Delay a task for a given number of ticks. The actual time that the + * task remains blocked depends on the tick rate. The constant + * portTICK_PERIOD_MS can be used to calculate real time from the tick + * rate - with the resolution of one tick period. + * + * INCLUDE_vTaskDelay must be defined as 1 for this function to be available. + * See the configuration section for more information. + * + * + * vTaskDelay() specifies a time at which the task wishes to unblock relative to + * the time at which vTaskDelay() is called. For example, specifying a block + * period of 100 ticks will cause the task to unblock 100 ticks after + * vTaskDelay() is called. vTaskDelay() does not therefore provide a good method + * of controlling the frequency of a periodic task as the path taken through the + * code, as well as other task and interrupt activity, will effect the frequency + * at which vTaskDelay() gets called and therefore the time at which the task + * next executes. See vTaskDelayUntil() for an alternative API function designed + * to facilitate fixed frequency execution. It does this by specifying an + * absolute time (rather than a relative time) at which the calling task should + * unblock. + * + * @param xTicksToDelay The amount of time, in tick periods, that + * the calling task should block. + * + * Example usage: + + void vTaskFunction( void * pvParameters ) + { + // Block for 500ms. + const TickType_t xDelay = 500 / portTICK_PERIOD_MS; + + for( ;; ) + { + // Simply toggle the LED every 500ms, blocking between each toggle. + vToggleLED(); + vTaskDelay( xDelay ); + } + } + + * \defgroup vTaskDelay vTaskDelay + * \ingroup TaskCtrl + */ +void vTaskDelay( const TickType_t xTicksToDelay ) PRIVILEGED_FUNCTION; + +/** + * task. h + *
void vTaskDelayUntil( TickType_t *pxPreviousWakeTime, const TickType_t xTimeIncrement );
+ * + * INCLUDE_vTaskDelayUntil must be defined as 1 for this function to be available. + * See the configuration section for more information. + * + * Delay a task until a specified time. This function can be used by periodic + * tasks to ensure a constant execution frequency. + * + * This function differs from vTaskDelay () in one important aspect: vTaskDelay () will + * cause a task to block for the specified number of ticks from the time vTaskDelay () is + * called. It is therefore difficult to use vTaskDelay () by itself to generate a fixed + * execution frequency as the time between a task starting to execute and that task + * calling vTaskDelay () may not be fixed [the task may take a different path though the + * code between calls, or may get interrupted or preempted a different number of times + * each time it executes]. + * + * Whereas vTaskDelay () specifies a wake time relative to the time at which the function + * is called, vTaskDelayUntil () specifies the absolute (exact) time at which it wishes to + * unblock. + * + * The constant portTICK_PERIOD_MS can be used to calculate real time from the tick + * rate - with the resolution of one tick period. + * + * @param pxPreviousWakeTime Pointer to a variable that holds the time at which the + * task was last unblocked. The variable must be initialised with the current time + * prior to its first use (see the example below). Following this the variable is + * automatically updated within vTaskDelayUntil (). + * + * @param xTimeIncrement The cycle time period. The task will be unblocked at + * time *pxPreviousWakeTime + xTimeIncrement. Calling vTaskDelayUntil with the + * same xTimeIncrement parameter value will cause the task to execute with + * a fixed interface period. + * + * Example usage: +
+ // Perform an action every 10 ticks.
+ void vTaskFunction( void * pvParameters )
+ {
+ TickType_t xLastWakeTime;
+ const TickType_t xFrequency = 10;
+
+	 // Initialise the xLastWakeTime variable with the current time.
+	 xLastWakeTime = xTaskGetTickCount ();
+	 for( ;; )
+	 {
+		 // Wait for the next cycle.
+		 vTaskDelayUntil( &xLastWakeTime, xFrequency );
+
+		 // Perform action here.
+	 }
+ }
+   
+ * \defgroup vTaskDelayUntil vTaskDelayUntil + * \ingroup TaskCtrl + */ +void vTaskDelayUntil( TickType_t * const pxPreviousWakeTime, const TickType_t xTimeIncrement ) PRIVILEGED_FUNCTION; + +/** + * task. h + *
BaseType_t xTaskAbortDelay( TaskHandle_t xTask );
+ * + * INCLUDE_xTaskAbortDelay must be defined as 1 in FreeRTOSConfig.h for this + * function to be available. + * + * A task will enter the Blocked state when it is waiting for an event. The + * event it is waiting for can be a temporal event (waiting for a time), such + * as when vTaskDelay() is called, or an event on an object, such as when + * xQueueReceive() or ulTaskNotifyTake() is called. If the handle of a task + * that is in the Blocked state is used in a call to xTaskAbortDelay() then the + * task will leave the Blocked state, and return from whichever function call + * placed the task into the Blocked state. + * + * There is no 'FromISR' version of this function as an interrupt would need to + * know which object a task was blocked on in order to know which actions to + * take. For example, if the task was blocked on a queue the interrupt handler + * would then need to know if the queue was locked. + * + * @param xTask The handle of the task to remove from the Blocked state. + * + * @return If the task referenced by xTask was not in the Blocked state then + * pdFAIL is returned. Otherwise pdPASS is returned. + * + * \defgroup xTaskAbortDelay xTaskAbortDelay + * \ingroup TaskCtrl + */ +BaseType_t xTaskAbortDelay( TaskHandle_t xTask ) PRIVILEGED_FUNCTION; + +/** + * task. h + *
UBaseType_t uxTaskPriorityGet( const TaskHandle_t xTask );
+ * + * INCLUDE_uxTaskPriorityGet must be defined as 1 for this function to be available. + * See the configuration section for more information. + * + * Obtain the priority of any task. + * + * @param xTask Handle of the task to be queried. Passing a NULL + * handle results in the priority of the calling task being returned. + * + * @return The priority of xTask. + * + * Example usage: +
+ void vAFunction( void )
+ {
+ TaskHandle_t xHandle;
+
+	 // Create a task, storing the handle.
+	 xTaskCreate( vTaskCode, "NAME", STACK_SIZE, NULL, tskIDLE_PRIORITY, &xHandle );
+
+	 // ...
+
+	 // Use the handle to obtain the priority of the created task.
+	 // It was created with tskIDLE_PRIORITY, but may have changed
+	 // it itself.
+	 if( uxTaskPriorityGet( xHandle ) != tskIDLE_PRIORITY )
+	 {
+		 // The task has changed it's priority.
+	 }
+
+	 // ...
+
+	 // Is our priority higher than the created task?
+	 if( uxTaskPriorityGet( xHandle ) < uxTaskPriorityGet( NULL ) )
+	 {
+		 // Our priority (obtained using NULL handle) is higher.
+	 }
+ }
+   
+ * \defgroup uxTaskPriorityGet uxTaskPriorityGet + * \ingroup TaskCtrl + */ +UBaseType_t uxTaskPriorityGet( const TaskHandle_t xTask ) PRIVILEGED_FUNCTION; + +/** + * task. h + *
UBaseType_t uxTaskPriorityGetFromISR( const TaskHandle_t xTask );
+ * + * A version of uxTaskPriorityGet() that can be used from an ISR. + */ +UBaseType_t uxTaskPriorityGetFromISR( const TaskHandle_t xTask ) PRIVILEGED_FUNCTION; + +/** + * task. h + *
eTaskState eTaskGetState( TaskHandle_t xTask );
+ * + * INCLUDE_eTaskGetState must be defined as 1 for this function to be available. + * See the configuration section for more information. + * + * Obtain the state of any task. States are encoded by the eTaskState + * enumerated type. + * + * @param xTask Handle of the task to be queried. + * + * @return The state of xTask at the time the function was called. Note the + * state of the task might change between the function being called, and the + * functions return value being tested by the calling task. + */ +eTaskState eTaskGetState( TaskHandle_t xTask ) PRIVILEGED_FUNCTION; + +/** + * task. h + *
void vTaskGetInfo( TaskHandle_t xTask, TaskStatus_t *pxTaskStatus, BaseType_t xGetFreeStackSpace, eTaskState eState );
+ * + * configUSE_TRACE_FACILITY must be defined as 1 for this function to be + * available. See the configuration section for more information. + * + * Populates a TaskStatus_t structure with information about a task. + * + * @param xTask Handle of the task being queried. If xTask is NULL then + * information will be returned about the calling task. + * + * @param pxTaskStatus A pointer to the TaskStatus_t structure that will be + * filled with information about the task referenced by the handle passed using + * the xTask parameter. + * + * @xGetFreeStackSpace The TaskStatus_t structure contains a member to report + * the stack high water mark of the task being queried. Calculating the stack + * high water mark takes a relatively long time, and can make the system + * temporarily unresponsive - so the xGetFreeStackSpace parameter is provided to + * allow the high water mark checking to be skipped. The high watermark value + * will only be written to the TaskStatus_t structure if xGetFreeStackSpace is + * not set to pdFALSE; + * + * @param eState The TaskStatus_t structure contains a member to report the + * state of the task being queried. Obtaining the task state is not as fast as + * a simple assignment - so the eState parameter is provided to allow the state + * information to be omitted from the TaskStatus_t structure. To obtain state + * information then set eState to eInvalid - otherwise the value passed in + * eState will be reported as the task state in the TaskStatus_t structure. + * + * Example usage: +
+ void vAFunction( void )
+ {
+ TaskHandle_t xHandle;
+ TaskStatus_t xTaskDetails;
+
+    // Obtain the handle of a task from its name.
+    xHandle = xTaskGetHandle( "Task_Name" );
+
+    // Check the handle is not NULL.
+    configASSERT( xHandle );
+
+    // Use the handle to obtain further information about the task.
+    vTaskGetInfo( xHandle,
+                  &xTaskDetails,
+                  pdTRUE, // Include the high water mark in xTaskDetails.
+                  eInvalid ); // Include the task state in xTaskDetails.
+ }
+   
+ * \defgroup vTaskGetInfo vTaskGetInfo + * \ingroup TaskCtrl + */ +void vTaskGetInfo( TaskHandle_t xTask, TaskStatus_t *pxTaskStatus, BaseType_t xGetFreeStackSpace, eTaskState eState ) PRIVILEGED_FUNCTION; + +/** + * task. h + *
void vTaskPrioritySet( TaskHandle_t xTask, UBaseType_t uxNewPriority );
+ * + * INCLUDE_vTaskPrioritySet must be defined as 1 for this function to be available. + * See the configuration section for more information. + * + * Set the priority of any task. + * + * A context switch will occur before the function returns if the priority + * being set is higher than the currently executing task. + * + * @param xTask Handle to the task for which the priority is being set. + * Passing a NULL handle results in the priority of the calling task being set. + * + * @param uxNewPriority The priority to which the task will be set. + * + * Example usage: +
+ void vAFunction( void )
+ {
+ TaskHandle_t xHandle;
+
+	 // Create a task, storing the handle.
+	 xTaskCreate( vTaskCode, "NAME", STACK_SIZE, NULL, tskIDLE_PRIORITY, &xHandle );
+
+	 // ...
+
+	 // Use the handle to raise the priority of the created task.
+	 vTaskPrioritySet( xHandle, tskIDLE_PRIORITY + 1 );
+
+	 // ...
+
+	 // Use a NULL handle to raise our priority to the same value.
+	 vTaskPrioritySet( NULL, tskIDLE_PRIORITY + 1 );
+ }
+   
+ * \defgroup vTaskPrioritySet vTaskPrioritySet + * \ingroup TaskCtrl + */ +void vTaskPrioritySet( TaskHandle_t xTask, UBaseType_t uxNewPriority ) PRIVILEGED_FUNCTION; + +/** + * task. h + *
void vTaskSuspend( TaskHandle_t xTaskToSuspend );
+ * + * INCLUDE_vTaskSuspend must be defined as 1 for this function to be available. + * See the configuration section for more information. + * + * Suspend any task. When suspended a task will never get any microcontroller + * processing time, no matter what its priority. + * + * Calls to vTaskSuspend are not accumulative - + * i.e. calling vTaskSuspend () twice on the same task still only requires one + * call to vTaskResume () to ready the suspended task. + * + * @param xTaskToSuspend Handle to the task being suspended. Passing a NULL + * handle will cause the calling task to be suspended. + * + * Example usage: +
+ void vAFunction( void )
+ {
+ TaskHandle_t xHandle;
+
+	 // Create a task, storing the handle.
+	 xTaskCreate( vTaskCode, "NAME", STACK_SIZE, NULL, tskIDLE_PRIORITY, &xHandle );
+
+	 // ...
+
+	 // Use the handle to suspend the created task.
+	 vTaskSuspend( xHandle );
+
+	 // ...
+
+	 // The created task will not run during this period, unless
+	 // another task calls vTaskResume( xHandle ).
+
+	 //...
+
+
+	 // Suspend ourselves.
+	 vTaskSuspend( NULL );
+
+	 // We cannot get here unless another task calls vTaskResume
+	 // with our handle as the parameter.
+ }
+   
+ * \defgroup vTaskSuspend vTaskSuspend + * \ingroup TaskCtrl + */ +void vTaskSuspend( TaskHandle_t xTaskToSuspend ) PRIVILEGED_FUNCTION; + +/** + * task. h + *
void vTaskResume( TaskHandle_t xTaskToResume );
+ * + * INCLUDE_vTaskSuspend must be defined as 1 for this function to be available. + * See the configuration section for more information. + * + * Resumes a suspended task. + * + * A task that has been suspended by one or more calls to vTaskSuspend () + * will be made available for running again by a single call to + * vTaskResume (). + * + * @param xTaskToResume Handle to the task being readied. + * + * Example usage: +
+ void vAFunction( void )
+ {
+ TaskHandle_t xHandle;
+
+	 // Create a task, storing the handle.
+	 xTaskCreate( vTaskCode, "NAME", STACK_SIZE, NULL, tskIDLE_PRIORITY, &xHandle );
+
+	 // ...
+
+	 // Use the handle to suspend the created task.
+	 vTaskSuspend( xHandle );
+
+	 // ...
+
+	 // The created task will not run during this period, unless
+	 // another task calls vTaskResume( xHandle ).
+
+	 //...
+
+
+	 // Resume the suspended task ourselves.
+	 vTaskResume( xHandle );
+
+	 // The created task will once again get microcontroller processing
+	 // time in accordance with its priority within the system.
+ }
+   
+ * \defgroup vTaskResume vTaskResume + * \ingroup TaskCtrl + */ +void vTaskResume( TaskHandle_t xTaskToResume ) PRIVILEGED_FUNCTION; + +/** + * task. h + *
void xTaskResumeFromISR( TaskHandle_t xTaskToResume );
+ * + * INCLUDE_xTaskResumeFromISR must be defined as 1 for this function to be + * available. See the configuration section for more information. + * + * An implementation of vTaskResume() that can be called from within an ISR. + * + * A task that has been suspended by one or more calls to vTaskSuspend () + * will be made available for running again by a single call to + * xTaskResumeFromISR (). + * + * xTaskResumeFromISR() should not be used to synchronise a task with an + * interrupt if there is a chance that the interrupt could arrive prior to the + * task being suspended - as this can lead to interrupts being missed. Use of a + * semaphore as a synchronisation mechanism would avoid this eventuality. + * + * @param xTaskToResume Handle to the task being readied. + * + * @return pdTRUE if resuming the task should result in a context switch, + * otherwise pdFALSE. This is used by the ISR to determine if a context switch + * may be required following the ISR. + * + * \defgroup vTaskResumeFromISR vTaskResumeFromISR + * \ingroup TaskCtrl + */ +BaseType_t xTaskResumeFromISR( TaskHandle_t xTaskToResume ) PRIVILEGED_FUNCTION; + +/*----------------------------------------------------------- + * SCHEDULER CONTROL + *----------------------------------------------------------*/ + +/** + * task. h + *
void vTaskStartScheduler( void );
+ * + * Starts the real time kernel tick processing. After calling the kernel + * has control over which tasks are executed and when. + * + * See the demo application file main.c for an example of creating + * tasks and starting the kernel. + * + * Example usage: +
+ void vAFunction( void )
+ {
+	 // Create at least one task before starting the kernel.
+	 xTaskCreate( vTaskCode, "NAME", STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL );
+
+	 // Start the real time kernel with preemption.
+	 vTaskStartScheduler ();
+
+	 // Will not get here unless a task calls vTaskEndScheduler ()
+ }
+   
+ * + * \defgroup vTaskStartScheduler vTaskStartScheduler + * \ingroup SchedulerControl + */ +void vTaskStartScheduler( void ) PRIVILEGED_FUNCTION; + +/** + * task. h + *
void vTaskEndScheduler( void );
+ * + * NOTE: At the time of writing only the x86 real mode port, which runs on a PC + * in place of DOS, implements this function. + * + * Stops the real time kernel tick. All created tasks will be automatically + * deleted and multitasking (either preemptive or cooperative) will + * stop. Execution then resumes from the point where vTaskStartScheduler () + * was called, as if vTaskStartScheduler () had just returned. + * + * See the demo application file main. c in the demo/PC directory for an + * example that uses vTaskEndScheduler (). + * + * vTaskEndScheduler () requires an exit function to be defined within the + * portable layer (see vPortEndScheduler () in port. c for the PC port). This + * performs hardware specific operations such as stopping the kernel tick. + * + * vTaskEndScheduler () will cause all of the resources allocated by the + * kernel to be freed - but will not free resources allocated by application + * tasks. + * + * Example usage: +
+ void vTaskCode( void * pvParameters )
+ {
+	 for( ;; )
+	 {
+		 // Task code goes here.
+
+		 // At some point we want to end the real time kernel processing
+		 // so call ...
+		 vTaskEndScheduler ();
+	 }
+ }
+
+ void vAFunction( void )
+ {
+	 // Create at least one task before starting the kernel.
+	 xTaskCreate( vTaskCode, "NAME", STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL );
+
+	 // Start the real time kernel with preemption.
+	 vTaskStartScheduler ();
+
+	 // Will only get here when the vTaskCode () task has called
+	 // vTaskEndScheduler ().  When we get here we are back to single task
+	 // execution.
+ }
+   
+ * + * \defgroup vTaskEndScheduler vTaskEndScheduler + * \ingroup SchedulerControl + */ +void vTaskEndScheduler( void ) PRIVILEGED_FUNCTION; + +/** + * task. h + *
void vTaskSuspendAll( void );
+ * + * Suspends the scheduler without disabling interrupts. Context switches will + * not occur while the scheduler is suspended. + * + * After calling vTaskSuspendAll () the calling task will continue to execute + * without risk of being swapped out until a call to xTaskResumeAll () has been + * made. + * + * API functions that have the potential to cause a context switch (for example, + * vTaskDelayUntil(), xQueueSend(), etc.) must not be called while the scheduler + * is suspended. + * + * Example usage: +
+ void vTask1( void * pvParameters )
+ {
+	 for( ;; )
+	 {
+		 // Task code goes here.
+
+		 // ...
+
+		 // At some point the task wants to perform a long operation during
+		 // which it does not want to get swapped out.  It cannot use
+		 // taskENTER_CRITICAL ()/taskEXIT_CRITICAL () as the length of the
+		 // operation may cause interrupts to be missed - including the
+		 // ticks.
+
+		 // Prevent the real time kernel swapping out the task.
+		 vTaskSuspendAll ();
+
+		 // Perform the operation here.  There is no need to use critical
+		 // sections as we have all the microcontroller processing time.
+		 // During this time interrupts will still operate and the kernel
+		 // tick count will be maintained.
+
+		 // ...
+
+		 // The operation is complete.  Restart the kernel.
+		 xTaskResumeAll ();
+	 }
+ }
+   
+ * \defgroup vTaskSuspendAll vTaskSuspendAll + * \ingroup SchedulerControl + */ +void vTaskSuspendAll( void ) PRIVILEGED_FUNCTION; + +/** + * task. h + *
BaseType_t xTaskResumeAll( void );
+ * + * Resumes scheduler activity after it was suspended by a call to + * vTaskSuspendAll(). + * + * xTaskResumeAll() only resumes the scheduler. It does not unsuspend tasks + * that were previously suspended by a call to vTaskSuspend(). + * + * @return If resuming the scheduler caused a context switch then pdTRUE is + * returned, otherwise pdFALSE is returned. + * + * Example usage: +
+ void vTask1( void * pvParameters )
+ {
+	 for( ;; )
+	 {
+		 // Task code goes here.
+
+		 // ...
+
+		 // At some point the task wants to perform a long operation during
+		 // which it does not want to get swapped out.  It cannot use
+		 // taskENTER_CRITICAL ()/taskEXIT_CRITICAL () as the length of the
+		 // operation may cause interrupts to be missed - including the
+		 // ticks.
+
+		 // Prevent the real time kernel swapping out the task.
+		 vTaskSuspendAll ();
+
+		 // Perform the operation here.  There is no need to use critical
+		 // sections as we have all the microcontroller processing time.
+		 // During this time interrupts will still operate and the real
+		 // time kernel tick count will be maintained.
+
+		 // ...
+
+		 // The operation is complete.  Restart the kernel.  We want to force
+		 // a context switch - but there is no point if resuming the scheduler
+		 // caused a context switch already.
+		 if( !xTaskResumeAll () )
+		 {
+			  taskYIELD ();
+		 }
+	 }
+ }
+   
+ * \defgroup xTaskResumeAll xTaskResumeAll + * \ingroup SchedulerControl + */ +BaseType_t xTaskResumeAll( void ) PRIVILEGED_FUNCTION; + +/*----------------------------------------------------------- + * TASK UTILITIES + *----------------------------------------------------------*/ + +/** + * task. h + *
TickType_t xTaskGetTickCount( void );
+ * + * @return The count of ticks since vTaskStartScheduler was called. + * + * \defgroup xTaskGetTickCount xTaskGetTickCount + * \ingroup TaskUtils + */ +TickType_t xTaskGetTickCount( void ) PRIVILEGED_FUNCTION; + +/** + * task. h + *
TickType_t xTaskGetTickCountFromISR( void );
+ * + * @return The count of ticks since vTaskStartScheduler was called. + * + * This is a version of xTaskGetTickCount() that is safe to be called from an + * ISR - provided that TickType_t is the natural word size of the + * microcontroller being used or interrupt nesting is either not supported or + * not being used. + * + * \defgroup xTaskGetTickCountFromISR xTaskGetTickCountFromISR + * \ingroup TaskUtils + */ +TickType_t xTaskGetTickCountFromISR( void ) PRIVILEGED_FUNCTION; + +/** + * task. h + *
uint16_t uxTaskGetNumberOfTasks( void );
+ * + * @return The number of tasks that the real time kernel is currently managing. + * This includes all ready, blocked and suspended tasks. A task that + * has been deleted but not yet freed by the idle task will also be + * included in the count. + * + * \defgroup uxTaskGetNumberOfTasks uxTaskGetNumberOfTasks + * \ingroup TaskUtils + */ +UBaseType_t uxTaskGetNumberOfTasks( void ) PRIVILEGED_FUNCTION; + +/** + * task. h + *
char *pcTaskGetName( TaskHandle_t xTaskToQuery );
+ * + * @return The text (human readable) name of the task referenced by the handle + * xTaskToQuery. A task can query its own name by either passing in its own + * handle, or by setting xTaskToQuery to NULL. + * + * \defgroup pcTaskGetName pcTaskGetName + * \ingroup TaskUtils + */ +char *pcTaskGetName( TaskHandle_t xTaskToQuery ) PRIVILEGED_FUNCTION; /*lint !e971 Unqualified char types are allowed for strings and single characters only. */ + +/** + * task. h + *
TaskHandle_t xTaskGetHandle( const char *pcNameToQuery );
+ * + * NOTE: This function takes a relatively long time to complete and should be + * used sparingly. + * + * @return The handle of the task that has the human readable name pcNameToQuery. + * NULL is returned if no matching name is found. INCLUDE_xTaskGetHandle + * must be set to 1 in FreeRTOSConfig.h for pcTaskGetHandle() to be available. + * + * \defgroup pcTaskGetHandle pcTaskGetHandle + * \ingroup TaskUtils + */ +TaskHandle_t xTaskGetHandle( const char *pcNameToQuery ) PRIVILEGED_FUNCTION; /*lint !e971 Unqualified char types are allowed for strings and single characters only. */ + +/** + * task.h + *
UBaseType_t uxTaskGetStackHighWaterMark( TaskHandle_t xTask );
+ * + * INCLUDE_uxTaskGetStackHighWaterMark must be set to 1 in FreeRTOSConfig.h for + * this function to be available. + * + * Returns the high water mark of the stack associated with xTask. That is, + * the minimum free stack space there has been (in words, so on a 32 bit machine + * a value of 1 means 4 bytes) since the task started. The smaller the returned + * number the closer the task has come to overflowing its stack. + * + * uxTaskGetStackHighWaterMark() and uxTaskGetStackHighWaterMark2() are the + * same except for their return type. Using configSTACK_DEPTH_TYPE allows the + * user to determine the return type. It gets around the problem of the value + * overflowing on 8-bit types without breaking backward compatibility for + * applications that expect an 8-bit return type. + * + * @param xTask Handle of the task associated with the stack to be checked. + * Set xTask to NULL to check the stack of the calling task. + * + * @return The smallest amount of free stack space there has been (in words, so + * actual spaces on the stack rather than bytes) since the task referenced by + * xTask was created. + */ +UBaseType_t uxTaskGetStackHighWaterMark( TaskHandle_t xTask ) PRIVILEGED_FUNCTION; + +/** + * task.h + *
configSTACK_DEPTH_TYPE uxTaskGetStackHighWaterMark2( TaskHandle_t xTask );
+ * + * INCLUDE_uxTaskGetStackHighWaterMark2 must be set to 1 in FreeRTOSConfig.h for + * this function to be available. + * + * Returns the high water mark of the stack associated with xTask. That is, + * the minimum free stack space there has been (in words, so on a 32 bit machine + * a value of 1 means 4 bytes) since the task started. The smaller the returned + * number the closer the task has come to overflowing its stack. + * + * uxTaskGetStackHighWaterMark() and uxTaskGetStackHighWaterMark2() are the + * same except for their return type. Using configSTACK_DEPTH_TYPE allows the + * user to determine the return type. It gets around the problem of the value + * overflowing on 8-bit types without breaking backward compatibility for + * applications that expect an 8-bit return type. + * + * @param xTask Handle of the task associated with the stack to be checked. + * Set xTask to NULL to check the stack of the calling task. + * + * @return The smallest amount of free stack space there has been (in words, so + * actual spaces on the stack rather than bytes) since the task referenced by + * xTask was created. + */ +configSTACK_DEPTH_TYPE uxTaskGetStackHighWaterMark2( TaskHandle_t xTask ) PRIVILEGED_FUNCTION; + +/* When using trace macros it is sometimes necessary to include task.h before +FreeRTOS.h. When this is done TaskHookFunction_t will not yet have been defined, +so the following two prototypes will cause a compilation error. This can be +fixed by simply guarding against the inclusion of these two prototypes unless +they are explicitly required by the configUSE_APPLICATION_TASK_TAG configuration +constant. */ +#ifdef configUSE_APPLICATION_TASK_TAG + #if configUSE_APPLICATION_TASK_TAG == 1 + /** + * task.h + *
void vTaskSetApplicationTaskTag( TaskHandle_t xTask, TaskHookFunction_t pxHookFunction );
+ * + * Sets pxHookFunction to be the task hook function used by the task xTask. + * Passing xTask as NULL has the effect of setting the calling tasks hook + * function. + */ + void vTaskSetApplicationTaskTag( TaskHandle_t xTask, TaskHookFunction_t pxHookFunction ) PRIVILEGED_FUNCTION; + + /** + * task.h + *
void xTaskGetApplicationTaskTag( TaskHandle_t xTask );
+ * + * Returns the pxHookFunction value assigned to the task xTask. Do not + * call from an interrupt service routine - call + * xTaskGetApplicationTaskTagFromISR() instead. + */ + TaskHookFunction_t xTaskGetApplicationTaskTag( TaskHandle_t xTask ) PRIVILEGED_FUNCTION; + + /** + * task.h + *
void xTaskGetApplicationTaskTagFromISR( TaskHandle_t xTask );
+ * + * Returns the pxHookFunction value assigned to the task xTask. Can + * be called from an interrupt service routine. + */ + TaskHookFunction_t xTaskGetApplicationTaskTagFromISR( TaskHandle_t xTask ) PRIVILEGED_FUNCTION; + #endif /* configUSE_APPLICATION_TASK_TAG ==1 */ +#endif /* ifdef configUSE_APPLICATION_TASK_TAG */ + +#if( configNUM_THREAD_LOCAL_STORAGE_POINTERS > 0 ) + + /* Each task contains an array of pointers that is dimensioned by the + configNUM_THREAD_LOCAL_STORAGE_POINTERS setting in FreeRTOSConfig.h. The + kernel does not use the pointers itself, so the application writer can use + the pointers for any purpose they wish. The following two functions are + used to set and query a pointer respectively. */ + void vTaskSetThreadLocalStoragePointer( TaskHandle_t xTaskToSet, BaseType_t xIndex, void *pvValue ) PRIVILEGED_FUNCTION; + void *pvTaskGetThreadLocalStoragePointer( TaskHandle_t xTaskToQuery, BaseType_t xIndex ) PRIVILEGED_FUNCTION; + +#endif + +/** + * task.h + *
BaseType_t xTaskCallApplicationTaskHook( TaskHandle_t xTask, void *pvParameter );
+ * + * Calls the hook function associated with xTask. Passing xTask as NULL has + * the effect of calling the Running tasks (the calling task) hook function. + * + * pvParameter is passed to the hook function for the task to interpret as it + * wants. The return value is the value returned by the task hook function + * registered by the user. + */ +BaseType_t xTaskCallApplicationTaskHook( TaskHandle_t xTask, void *pvParameter ) PRIVILEGED_FUNCTION; + +/** + * xTaskGetIdleTaskHandle() is only available if + * INCLUDE_xTaskGetIdleTaskHandle is set to 1 in FreeRTOSConfig.h. + * + * Simply returns the handle of the idle task. It is not valid to call + * xTaskGetIdleTaskHandle() before the scheduler has been started. + */ +TaskHandle_t xTaskGetIdleTaskHandle( void ) PRIVILEGED_FUNCTION; + +/** + * configUSE_TRACE_FACILITY must be defined as 1 in FreeRTOSConfig.h for + * uxTaskGetSystemState() to be available. + * + * uxTaskGetSystemState() populates an TaskStatus_t structure for each task in + * the system. TaskStatus_t structures contain, among other things, members + * for the task handle, task name, task priority, task state, and total amount + * of run time consumed by the task. See the TaskStatus_t structure + * definition in this file for the full member list. + * + * NOTE: This function is intended for debugging use only as its use results in + * the scheduler remaining suspended for an extended period. + * + * @param pxTaskStatusArray A pointer to an array of TaskStatus_t structures. + * The array must contain at least one TaskStatus_t structure for each task + * that is under the control of the RTOS. The number of tasks under the control + * of the RTOS can be determined using the uxTaskGetNumberOfTasks() API function. + * + * @param uxArraySize The size of the array pointed to by the pxTaskStatusArray + * parameter. The size is specified as the number of indexes in the array, or + * the number of TaskStatus_t structures contained in the array, not by the + * number of bytes in the array. + * + * @param pulTotalRunTime If configGENERATE_RUN_TIME_STATS is set to 1 in + * FreeRTOSConfig.h then *pulTotalRunTime is set by uxTaskGetSystemState() to the + * total run time (as defined by the run time stats clock, see + * http://www.freertos.org/rtos-run-time-stats.html) since the target booted. + * pulTotalRunTime can be set to NULL to omit the total run time information. + * + * @return The number of TaskStatus_t structures that were populated by + * uxTaskGetSystemState(). This should equal the number returned by the + * uxTaskGetNumberOfTasks() API function, but will be zero if the value passed + * in the uxArraySize parameter was too small. + * + * Example usage: +
+    // This example demonstrates how a human readable table of run time stats
+	// information is generated from raw data provided by uxTaskGetSystemState().
+	// The human readable table is written to pcWriteBuffer
+	void vTaskGetRunTimeStats( char *pcWriteBuffer )
+	{
+	TaskStatus_t *pxTaskStatusArray;
+	volatile UBaseType_t uxArraySize, x;
+	uint32_t ulTotalRunTime, ulStatsAsPercentage;
+
+		// Make sure the write buffer does not contain a string.
+		*pcWriteBuffer = 0x00;
+
+		// Take a snapshot of the number of tasks in case it changes while this
+		// function is executing.
+		uxArraySize = uxTaskGetNumberOfTasks();
+
+		// Allocate a TaskStatus_t structure for each task.  An array could be
+		// allocated statically at compile time.
+		pxTaskStatusArray = pvPortMalloc( uxArraySize * sizeof( TaskStatus_t ) );
+
+		if( pxTaskStatusArray != NULL )
+		{
+			// Generate raw status information about each task.
+			uxArraySize = uxTaskGetSystemState( pxTaskStatusArray, uxArraySize, &ulTotalRunTime );
+
+			// For percentage calculations.
+			ulTotalRunTime /= 100UL;
+
+			// Avoid divide by zero errors.
+			if( ulTotalRunTime > 0 )
+			{
+				// For each populated position in the pxTaskStatusArray array,
+				// format the raw data as human readable ASCII data
+				for( x = 0; x < uxArraySize; x++ )
+				{
+					// What percentage of the total run time has the task used?
+					// This will always be rounded down to the nearest integer.
+					// ulTotalRunTimeDiv100 has already been divided by 100.
+					ulStatsAsPercentage = pxTaskStatusArray[ x ].ulRunTimeCounter / ulTotalRunTime;
+
+					if( ulStatsAsPercentage > 0UL )
+					{
+						sprintf( pcWriteBuffer, "%s\t\t%lu\t\t%lu%%\r\n", pxTaskStatusArray[ x ].pcTaskName, pxTaskStatusArray[ x ].ulRunTimeCounter, ulStatsAsPercentage );
+					}
+					else
+					{
+						// If the percentage is zero here then the task has
+						// consumed less than 1% of the total run time.
+						sprintf( pcWriteBuffer, "%s\t\t%lu\t\t<1%%\r\n", pxTaskStatusArray[ x ].pcTaskName, pxTaskStatusArray[ x ].ulRunTimeCounter );
+					}
+
+					pcWriteBuffer += strlen( ( char * ) pcWriteBuffer );
+				}
+			}
+
+			// The array is no longer needed, free the memory it consumes.
+			vPortFree( pxTaskStatusArray );
+		}
+	}
+	
+ */ +UBaseType_t uxTaskGetSystemState( TaskStatus_t * const pxTaskStatusArray, const UBaseType_t uxArraySize, uint32_t * const pulTotalRunTime ) PRIVILEGED_FUNCTION; + +/** + * task. h + *
void vTaskList( char *pcWriteBuffer );
+ * + * configUSE_TRACE_FACILITY and configUSE_STATS_FORMATTING_FUNCTIONS must + * both be defined as 1 for this function to be available. See the + * configuration section of the FreeRTOS.org website for more information. + * + * NOTE 1: This function will disable interrupts for its duration. It is + * not intended for normal application runtime use but as a debug aid. + * + * Lists all the current tasks, along with their current state and stack + * usage high water mark. + * + * Tasks are reported as blocked ('B'), ready ('R'), deleted ('D') or + * suspended ('S'). + * + * PLEASE NOTE: + * + * This function is provided for convenience only, and is used by many of the + * demo applications. Do not consider it to be part of the scheduler. + * + * vTaskList() calls uxTaskGetSystemState(), then formats part of the + * uxTaskGetSystemState() output into a human readable table that displays task + * names, states and stack usage. + * + * vTaskList() has a dependency on the sprintf() C library function that might + * bloat the code size, use a lot of stack, and provide different results on + * different platforms. An alternative, tiny, third party, and limited + * functionality implementation of sprintf() is provided in many of the + * FreeRTOS/Demo sub-directories in a file called printf-stdarg.c (note + * printf-stdarg.c does not provide a full snprintf() implementation!). + * + * It is recommended that production systems call uxTaskGetSystemState() + * directly to get access to raw stats data, rather than indirectly through a + * call to vTaskList(). + * + * @param pcWriteBuffer A buffer into which the above mentioned details + * will be written, in ASCII form. This buffer is assumed to be large + * enough to contain the generated report. Approximately 40 bytes per + * task should be sufficient. + * + * \defgroup vTaskList vTaskList + * \ingroup TaskUtils + */ +void vTaskList( char * pcWriteBuffer ) PRIVILEGED_FUNCTION; /*lint !e971 Unqualified char types are allowed for strings and single characters only. */ + +/** + * task. h + *
void vTaskGetRunTimeStats( char *pcWriteBuffer );
+ * + * configGENERATE_RUN_TIME_STATS and configUSE_STATS_FORMATTING_FUNCTIONS + * must both be defined as 1 for this function to be available. The application + * must also then provide definitions for + * portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() and portGET_RUN_TIME_COUNTER_VALUE() + * to configure a peripheral timer/counter and return the timers current count + * value respectively. The counter should be at least 10 times the frequency of + * the tick count. + * + * NOTE 1: This function will disable interrupts for its duration. It is + * not intended for normal application runtime use but as a debug aid. + * + * Setting configGENERATE_RUN_TIME_STATS to 1 will result in a total + * accumulated execution time being stored for each task. The resolution + * of the accumulated time value depends on the frequency of the timer + * configured by the portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() macro. + * Calling vTaskGetRunTimeStats() writes the total execution time of each + * task into a buffer, both as an absolute count value and as a percentage + * of the total system execution time. + * + * NOTE 2: + * + * This function is provided for convenience only, and is used by many of the + * demo applications. Do not consider it to be part of the scheduler. + * + * vTaskGetRunTimeStats() calls uxTaskGetSystemState(), then formats part of the + * uxTaskGetSystemState() output into a human readable table that displays the + * amount of time each task has spent in the Running state in both absolute and + * percentage terms. + * + * vTaskGetRunTimeStats() has a dependency on the sprintf() C library function + * that might bloat the code size, use a lot of stack, and provide different + * results on different platforms. An alternative, tiny, third party, and + * limited functionality implementation of sprintf() is provided in many of the + * FreeRTOS/Demo sub-directories in a file called printf-stdarg.c (note + * printf-stdarg.c does not provide a full snprintf() implementation!). + * + * It is recommended that production systems call uxTaskGetSystemState() directly + * to get access to raw stats data, rather than indirectly through a call to + * vTaskGetRunTimeStats(). + * + * @param pcWriteBuffer A buffer into which the execution times will be + * written, in ASCII form. This buffer is assumed to be large enough to + * contain the generated report. Approximately 40 bytes per task should + * be sufficient. + * + * \defgroup vTaskGetRunTimeStats vTaskGetRunTimeStats + * \ingroup TaskUtils + */ +void vTaskGetRunTimeStats( char *pcWriteBuffer ) PRIVILEGED_FUNCTION; /*lint !e971 Unqualified char types are allowed for strings and single characters only. */ + +/** +* task. h +*
uint32_t ulTaskGetIdleRunTimeCounter( void );
+* +* configGENERATE_RUN_TIME_STATS and configUSE_STATS_FORMATTING_FUNCTIONS +* must both be defined as 1 for this function to be available. The application +* must also then provide definitions for +* portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() and portGET_RUN_TIME_COUNTER_VALUE() +* to configure a peripheral timer/counter and return the timers current count +* value respectively. The counter should be at least 10 times the frequency of +* the tick count. +* +* Setting configGENERATE_RUN_TIME_STATS to 1 will result in a total +* accumulated execution time being stored for each task. The resolution +* of the accumulated time value depends on the frequency of the timer +* configured by the portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() macro. +* While uxTaskGetSystemState() and vTaskGetRunTimeStats() writes the total +* execution time of each task into a buffer, ulTaskGetIdleRunTimeCounter() +* returns the total execution time of just the idle task. +* +* @return The total run time of the idle task. This is the amount of time the +* idle task has actually been executing. The unit of time is dependent on the +* frequency configured using the portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() and +* portGET_RUN_TIME_COUNTER_VALUE() macros. +* +* \defgroup ulTaskGetIdleRunTimeCounter ulTaskGetIdleRunTimeCounter +* \ingroup TaskUtils +*/ +uint32_t ulTaskGetIdleRunTimeCounter( void ) PRIVILEGED_FUNCTION; + +/** + * task. h + *
BaseType_t xTaskNotify( TaskHandle_t xTaskToNotify, uint32_t ulValue, eNotifyAction eAction );
+ * + * configUSE_TASK_NOTIFICATIONS must be undefined or defined as 1 for this + * function to be available. + * + * When configUSE_TASK_NOTIFICATIONS is set to one each task has its own private + * "notification value", which is a 32-bit unsigned integer (uint32_t). + * + * Events can be sent to a task using an intermediary object. Examples of such + * objects are queues, semaphores, mutexes and event groups. Task notifications + * are a method of sending an event directly to a task without the need for such + * an intermediary object. + * + * A notification sent to a task can optionally perform an action, such as + * update, overwrite or increment the task's notification value. In that way + * task notifications can be used to send data to a task, or be used as light + * weight and fast binary or counting semaphores. + * + * A notification sent to a task will remain pending until it is cleared by the + * task calling xTaskNotifyWait() or ulTaskNotifyTake(). If the task was + * already in the Blocked state to wait for a notification when the notification + * arrives then the task will automatically be removed from the Blocked state + * (unblocked) and the notification cleared. + * + * A task can use xTaskNotifyWait() to [optionally] block to wait for a + * notification to be pending, or ulTaskNotifyTake() to [optionally] block + * to wait for its notification value to have a non-zero value. The task does + * not consume any CPU time while it is in the Blocked state. + * + * See http://www.FreeRTOS.org/RTOS-task-notifications.html for details. + * + * @param xTaskToNotify The handle of the task being notified. The handle to a + * task can be returned from the xTaskCreate() API function used to create the + * task, and the handle of the currently running task can be obtained by calling + * xTaskGetCurrentTaskHandle(). + * + * @param ulValue Data that can be sent with the notification. How the data is + * used depends on the value of the eAction parameter. + * + * @param eAction Specifies how the notification updates the task's notification + * value, if at all. Valid values for eAction are as follows: + * + * eSetBits - + * The task's notification value is bitwise ORed with ulValue. xTaskNofify() + * always returns pdPASS in this case. + * + * eIncrement - + * The task's notification value is incremented. ulValue is not used and + * xTaskNotify() always returns pdPASS in this case. + * + * eSetValueWithOverwrite - + * The task's notification value is set to the value of ulValue, even if the + * task being notified had not yet processed the previous notification (the + * task already had a notification pending). xTaskNotify() always returns + * pdPASS in this case. + * + * eSetValueWithoutOverwrite - + * If the task being notified did not already have a notification pending then + * the task's notification value is set to ulValue and xTaskNotify() will + * return pdPASS. If the task being notified already had a notification + * pending then no action is performed and pdFAIL is returned. + * + * eNoAction - + * The task receives a notification without its notification value being + * updated. ulValue is not used and xTaskNotify() always returns pdPASS in + * this case. + * + * pulPreviousNotificationValue - + * Can be used to pass out the subject task's notification value before any + * bits are modified by the notify function. + * + * @return Dependent on the value of eAction. See the description of the + * eAction parameter. + * + * \defgroup xTaskNotify xTaskNotify + * \ingroup TaskNotifications + */ +BaseType_t xTaskGenericNotify( TaskHandle_t xTaskToNotify, uint32_t ulValue, eNotifyAction eAction, uint32_t *pulPreviousNotificationValue ) PRIVILEGED_FUNCTION; +#define xTaskNotify( xTaskToNotify, ulValue, eAction ) xTaskGenericNotify( ( xTaskToNotify ), ( ulValue ), ( eAction ), NULL ) +#define xTaskNotifyAndQuery( xTaskToNotify, ulValue, eAction, pulPreviousNotifyValue ) xTaskGenericNotify( ( xTaskToNotify ), ( ulValue ), ( eAction ), ( pulPreviousNotifyValue ) ) + +/** + * task. h + *
BaseType_t xTaskNotifyFromISR( TaskHandle_t xTaskToNotify, uint32_t ulValue, eNotifyAction eAction, BaseType_t *pxHigherPriorityTaskWoken );
+ * + * configUSE_TASK_NOTIFICATIONS must be undefined or defined as 1 for this + * function to be available. + * + * When configUSE_TASK_NOTIFICATIONS is set to one each task has its own private + * "notification value", which is a 32-bit unsigned integer (uint32_t). + * + * A version of xTaskNotify() that can be used from an interrupt service routine + * (ISR). + * + * Events can be sent to a task using an intermediary object. Examples of such + * objects are queues, semaphores, mutexes and event groups. Task notifications + * are a method of sending an event directly to a task without the need for such + * an intermediary object. + * + * A notification sent to a task can optionally perform an action, such as + * update, overwrite or increment the task's notification value. In that way + * task notifications can be used to send data to a task, or be used as light + * weight and fast binary or counting semaphores. + * + * A notification sent to a task will remain pending until it is cleared by the + * task calling xTaskNotifyWait() or ulTaskNotifyTake(). If the task was + * already in the Blocked state to wait for a notification when the notification + * arrives then the task will automatically be removed from the Blocked state + * (unblocked) and the notification cleared. + * + * A task can use xTaskNotifyWait() to [optionally] block to wait for a + * notification to be pending, or ulTaskNotifyTake() to [optionally] block + * to wait for its notification value to have a non-zero value. The task does + * not consume any CPU time while it is in the Blocked state. + * + * See http://www.FreeRTOS.org/RTOS-task-notifications.html for details. + * + * @param xTaskToNotify The handle of the task being notified. The handle to a + * task can be returned from the xTaskCreate() API function used to create the + * task, and the handle of the currently running task can be obtained by calling + * xTaskGetCurrentTaskHandle(). + * + * @param ulValue Data that can be sent with the notification. How the data is + * used depends on the value of the eAction parameter. + * + * @param eAction Specifies how the notification updates the task's notification + * value, if at all. Valid values for eAction are as follows: + * + * eSetBits - + * The task's notification value is bitwise ORed with ulValue. xTaskNofify() + * always returns pdPASS in this case. + * + * eIncrement - + * The task's notification value is incremented. ulValue is not used and + * xTaskNotify() always returns pdPASS in this case. + * + * eSetValueWithOverwrite - + * The task's notification value is set to the value of ulValue, even if the + * task being notified had not yet processed the previous notification (the + * task already had a notification pending). xTaskNotify() always returns + * pdPASS in this case. + * + * eSetValueWithoutOverwrite - + * If the task being notified did not already have a notification pending then + * the task's notification value is set to ulValue and xTaskNotify() will + * return pdPASS. If the task being notified already had a notification + * pending then no action is performed and pdFAIL is returned. + * + * eNoAction - + * The task receives a notification without its notification value being + * updated. ulValue is not used and xTaskNotify() always returns pdPASS in + * this case. + * + * @param pxHigherPriorityTaskWoken xTaskNotifyFromISR() will set + * *pxHigherPriorityTaskWoken to pdTRUE if sending the notification caused the + * task to which the notification was sent to leave the Blocked state, and the + * unblocked task has a priority higher than the currently running task. If + * xTaskNotifyFromISR() sets this value to pdTRUE then a context switch should + * be requested before the interrupt is exited. How a context switch is + * requested from an ISR is dependent on the port - see the documentation page + * for the port in use. + * + * @return Dependent on the value of eAction. See the description of the + * eAction parameter. + * + * \defgroup xTaskNotify xTaskNotify + * \ingroup TaskNotifications + */ +BaseType_t xTaskGenericNotifyFromISR( TaskHandle_t xTaskToNotify, uint32_t ulValue, eNotifyAction eAction, uint32_t *pulPreviousNotificationValue, BaseType_t *pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION; +#define xTaskNotifyFromISR( xTaskToNotify, ulValue, eAction, pxHigherPriorityTaskWoken ) xTaskGenericNotifyFromISR( ( xTaskToNotify ), ( ulValue ), ( eAction ), NULL, ( pxHigherPriorityTaskWoken ) ) +#define xTaskNotifyAndQueryFromISR( xTaskToNotify, ulValue, eAction, pulPreviousNotificationValue, pxHigherPriorityTaskWoken ) xTaskGenericNotifyFromISR( ( xTaskToNotify ), ( ulValue ), ( eAction ), ( pulPreviousNotificationValue ), ( pxHigherPriorityTaskWoken ) ) + +/** + * task. h + *
BaseType_t xTaskNotifyWait( uint32_t ulBitsToClearOnEntry, uint32_t ulBitsToClearOnExit, uint32_t *pulNotificationValue, TickType_t xTicksToWait );
+ * + * configUSE_TASK_NOTIFICATIONS must be undefined or defined as 1 for this + * function to be available. + * + * When configUSE_TASK_NOTIFICATIONS is set to one each task has its own private + * "notification value", which is a 32-bit unsigned integer (uint32_t). + * + * Events can be sent to a task using an intermediary object. Examples of such + * objects are queues, semaphores, mutexes and event groups. Task notifications + * are a method of sending an event directly to a task without the need for such + * an intermediary object. + * + * A notification sent to a task can optionally perform an action, such as + * update, overwrite or increment the task's notification value. In that way + * task notifications can be used to send data to a task, or be used as light + * weight and fast binary or counting semaphores. + * + * A notification sent to a task will remain pending until it is cleared by the + * task calling xTaskNotifyWait() or ulTaskNotifyTake(). If the task was + * already in the Blocked state to wait for a notification when the notification + * arrives then the task will automatically be removed from the Blocked state + * (unblocked) and the notification cleared. + * + * A task can use xTaskNotifyWait() to [optionally] block to wait for a + * notification to be pending, or ulTaskNotifyTake() to [optionally] block + * to wait for its notification value to have a non-zero value. The task does + * not consume any CPU time while it is in the Blocked state. + * + * See http://www.FreeRTOS.org/RTOS-task-notifications.html for details. + * + * @param ulBitsToClearOnEntry Bits that are set in ulBitsToClearOnEntry value + * will be cleared in the calling task's notification value before the task + * checks to see if any notifications are pending, and optionally blocks if no + * notifications are pending. Setting ulBitsToClearOnEntry to ULONG_MAX (if + * limits.h is included) or 0xffffffffUL (if limits.h is not included) will have + * the effect of resetting the task's notification value to 0. Setting + * ulBitsToClearOnEntry to 0 will leave the task's notification value unchanged. + * + * @param ulBitsToClearOnExit If a notification is pending or received before + * the calling task exits the xTaskNotifyWait() function then the task's + * notification value (see the xTaskNotify() API function) is passed out using + * the pulNotificationValue parameter. Then any bits that are set in + * ulBitsToClearOnExit will be cleared in the task's notification value (note + * *pulNotificationValue is set before any bits are cleared). Setting + * ulBitsToClearOnExit to ULONG_MAX (if limits.h is included) or 0xffffffffUL + * (if limits.h is not included) will have the effect of resetting the task's + * notification value to 0 before the function exits. Setting + * ulBitsToClearOnExit to 0 will leave the task's notification value unchanged + * when the function exits (in which case the value passed out in + * pulNotificationValue will match the task's notification value). + * + * @param pulNotificationValue Used to pass the task's notification value out + * of the function. Note the value passed out will not be effected by the + * clearing of any bits caused by ulBitsToClearOnExit being non-zero. + * + * @param xTicksToWait The maximum amount of time that the task should wait in + * the Blocked state for a notification to be received, should a notification + * not already be pending when xTaskNotifyWait() was called. The task + * will not consume any processing time while it is in the Blocked state. This + * is specified in kernel ticks, the macro pdMS_TO_TICSK( value_in_ms ) can be + * used to convert a time specified in milliseconds to a time specified in + * ticks. + * + * @return If a notification was received (including notifications that were + * already pending when xTaskNotifyWait was called) then pdPASS is + * returned. Otherwise pdFAIL is returned. + * + * \defgroup xTaskNotifyWait xTaskNotifyWait + * \ingroup TaskNotifications + */ +BaseType_t xTaskNotifyWait( uint32_t ulBitsToClearOnEntry, uint32_t ulBitsToClearOnExit, uint32_t *pulNotificationValue, TickType_t xTicksToWait ) PRIVILEGED_FUNCTION; + +/** + * task. h + *
BaseType_t xTaskNotifyGive( TaskHandle_t xTaskToNotify );
+ * + * configUSE_TASK_NOTIFICATIONS must be undefined or defined as 1 for this macro + * to be available. + * + * When configUSE_TASK_NOTIFICATIONS is set to one each task has its own private + * "notification value", which is a 32-bit unsigned integer (uint32_t). + * + * Events can be sent to a task using an intermediary object. Examples of such + * objects are queues, semaphores, mutexes and event groups. Task notifications + * are a method of sending an event directly to a task without the need for such + * an intermediary object. + * + * A notification sent to a task can optionally perform an action, such as + * update, overwrite or increment the task's notification value. In that way + * task notifications can be used to send data to a task, or be used as light + * weight and fast binary or counting semaphores. + * + * xTaskNotifyGive() is a helper macro intended for use when task notifications + * are used as light weight and faster binary or counting semaphore equivalents. + * Actual FreeRTOS semaphores are given using the xSemaphoreGive() API function, + * the equivalent action that instead uses a task notification is + * xTaskNotifyGive(). + * + * When task notifications are being used as a binary or counting semaphore + * equivalent then the task being notified should wait for the notification + * using the ulTaskNotificationTake() API function rather than the + * xTaskNotifyWait() API function. + * + * See http://www.FreeRTOS.org/RTOS-task-notifications.html for more details. + * + * @param xTaskToNotify The handle of the task being notified. The handle to a + * task can be returned from the xTaskCreate() API function used to create the + * task, and the handle of the currently running task can be obtained by calling + * xTaskGetCurrentTaskHandle(). + * + * @return xTaskNotifyGive() is a macro that calls xTaskNotify() with the + * eAction parameter set to eIncrement - so pdPASS is always returned. + * + * \defgroup xTaskNotifyGive xTaskNotifyGive + * \ingroup TaskNotifications + */ +#define xTaskNotifyGive( xTaskToNotify ) xTaskGenericNotify( ( xTaskToNotify ), ( 0 ), eIncrement, NULL ) + +/** + * task. h + *
void vTaskNotifyGiveFromISR( TaskHandle_t xTaskHandle, BaseType_t *pxHigherPriorityTaskWoken );
+ *
+ * configUSE_TASK_NOTIFICATIONS must be undefined or defined as 1 for this macro
+ * to be available.
+ *
+ * When configUSE_TASK_NOTIFICATIONS is set to one each task has its own private
+ * "notification value", which is a 32-bit unsigned integer (uint32_t).
+ *
+ * A version of xTaskNotifyGive() that can be called from an interrupt service
+ * routine (ISR).
+ *
+ * Events can be sent to a task using an intermediary object.  Examples of such
+ * objects are queues, semaphores, mutexes and event groups.  Task notifications
+ * are a method of sending an event directly to a task without the need for such
+ * an intermediary object.
+ *
+ * A notification sent to a task can optionally perform an action, such as
+ * update, overwrite or increment the task's notification value.  In that way
+ * task notifications can be used to send data to a task, or be used as light
+ * weight and fast binary or counting semaphores.
+ *
+ * vTaskNotifyGiveFromISR() is intended for use when task notifications are
+ * used as light weight and faster binary or counting semaphore equivalents.
+ * Actual FreeRTOS semaphores are given from an ISR using the
+ * xSemaphoreGiveFromISR() API function, the equivalent action that instead uses
+ * a task notification is vTaskNotifyGiveFromISR().
+ *
+ * When task notifications are being used as a binary or counting semaphore
+ * equivalent then the task being notified should wait for the notification
+ * using the ulTaskNotificationTake() API function rather than the
+ * xTaskNotifyWait() API function.
+ *
+ * See http://www.FreeRTOS.org/RTOS-task-notifications.html for more details.
+ *
+ * @param xTaskToNotify The handle of the task being notified.  The handle to a
+ * task can be returned from the xTaskCreate() API function used to create the
+ * task, and the handle of the currently running task can be obtained by calling
+ * xTaskGetCurrentTaskHandle().
+ *
+ * @param pxHigherPriorityTaskWoken  vTaskNotifyGiveFromISR() will set
+ * *pxHigherPriorityTaskWoken to pdTRUE if sending the notification caused the
+ * task to which the notification was sent to leave the Blocked state, and the
+ * unblocked task has a priority higher than the currently running task.  If
+ * vTaskNotifyGiveFromISR() sets this value to pdTRUE then a context switch
+ * should be requested before the interrupt is exited.  How a context switch is
+ * requested from an ISR is dependent on the port - see the documentation page
+ * for the port in use.
+ *
+ * \defgroup xTaskNotifyWait xTaskNotifyWait
+ * \ingroup TaskNotifications
+ */
+void vTaskNotifyGiveFromISR( TaskHandle_t xTaskToNotify, BaseType_t *pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION;
+
+/**
+ * task. h
+ * 
uint32_t ulTaskNotifyTake( BaseType_t xClearCountOnExit, TickType_t xTicksToWait );
+ * + * configUSE_TASK_NOTIFICATIONS must be undefined or defined as 1 for this + * function to be available. + * + * When configUSE_TASK_NOTIFICATIONS is set to one each task has its own private + * "notification value", which is a 32-bit unsigned integer (uint32_t). + * + * Events can be sent to a task using an intermediary object. Examples of such + * objects are queues, semaphores, mutexes and event groups. Task notifications + * are a method of sending an event directly to a task without the need for such + * an intermediary object. + * + * A notification sent to a task can optionally perform an action, such as + * update, overwrite or increment the task's notification value. In that way + * task notifications can be used to send data to a task, or be used as light + * weight and fast binary or counting semaphores. + * + * ulTaskNotifyTake() is intended for use when a task notification is used as a + * faster and lighter weight binary or counting semaphore alternative. Actual + * FreeRTOS semaphores are taken using the xSemaphoreTake() API function, the + * equivalent action that instead uses a task notification is + * ulTaskNotifyTake(). + * + * When a task is using its notification value as a binary or counting semaphore + * other tasks should send notifications to it using the xTaskNotifyGive() + * macro, or xTaskNotify() function with the eAction parameter set to + * eIncrement. + * + * ulTaskNotifyTake() can either clear the task's notification value to + * zero on exit, in which case the notification value acts like a binary + * semaphore, or decrement the task's notification value on exit, in which case + * the notification value acts like a counting semaphore. + * + * A task can use ulTaskNotifyTake() to [optionally] block to wait for a + * the task's notification value to be non-zero. The task does not consume any + * CPU time while it is in the Blocked state. + * + * Where as xTaskNotifyWait() will return when a notification is pending, + * ulTaskNotifyTake() will return when the task's notification value is + * not zero. + * + * See http://www.FreeRTOS.org/RTOS-task-notifications.html for details. + * + * @param xClearCountOnExit if xClearCountOnExit is pdFALSE then the task's + * notification value is decremented when the function exits. In this way the + * notification value acts like a counting semaphore. If xClearCountOnExit is + * not pdFALSE then the task's notification value is cleared to zero when the + * function exits. In this way the notification value acts like a binary + * semaphore. + * + * @param xTicksToWait The maximum amount of time that the task should wait in + * the Blocked state for the task's notification value to be greater than zero, + * should the count not already be greater than zero when + * ulTaskNotifyTake() was called. The task will not consume any processing + * time while it is in the Blocked state. This is specified in kernel ticks, + * the macro pdMS_TO_TICSK( value_in_ms ) can be used to convert a time + * specified in milliseconds to a time specified in ticks. + * + * @return The task's notification count before it is either cleared to zero or + * decremented (see the xClearCountOnExit parameter). + * + * \defgroup ulTaskNotifyTake ulTaskNotifyTake + * \ingroup TaskNotifications + */ +uint32_t ulTaskNotifyTake( BaseType_t xClearCountOnExit, TickType_t xTicksToWait ) PRIVILEGED_FUNCTION; + +/** + * task. h + *
BaseType_t xTaskNotifyStateClear( TaskHandle_t xTask );
+ * + * If the notification state of the task referenced by the handle xTask is + * eNotified, then set the task's notification state to eNotWaitingNotification. + * The task's notification value is not altered. Set xTask to NULL to clear the + * notification state of the calling task. + * + * @return pdTRUE if the task's notification state was set to + * eNotWaitingNotification, otherwise pdFALSE. + * \defgroup xTaskNotifyStateClear xTaskNotifyStateClear + * \ingroup TaskNotifications + */ +BaseType_t xTaskNotifyStateClear( TaskHandle_t xTask ); + +/** +* task. h +*
uint32_t ulTaskNotifyValueClear( TaskHandle_t xTask, uint32_t ulBitsToClear );
+* +* Clears the bits specified by the ulBitsToClear bit mask in the notification +* value of the task referenced by xTask. +* +* Set ulBitsToClear to 0xffffffff (UINT_MAX on 32-bit architectures) to clear +* the notification value to 0. Set ulBitsToClear to 0 to query the task's +* notification value without clearing any bits. +* +* @return The value of the target task's notification value before the bits +* specified by ulBitsToClear were cleared. +* \defgroup ulTaskNotifyValueClear ulTaskNotifyValueClear +* \ingroup TaskNotifications +*/ +uint32_t ulTaskNotifyValueClear( TaskHandle_t xTask, uint32_t ulBitsToClear ) PRIVILEGED_FUNCTION; + +/** + * task.h + *
void vTaskSetTimeOutState( TimeOut_t * const pxTimeOut )
+ * + * Capture the current time for future use with xTaskCheckForTimeOut(). + * + * @param pxTimeOut Pointer to a timeout object into which the current time + * is to be captured. The captured time includes the tick count and the number + * of times the tick count has overflowed since the system first booted. + * \defgroup vTaskSetTimeOutState vTaskSetTimeOutState + * \ingroup TaskCtrl + */ +void vTaskSetTimeOutState( TimeOut_t * const pxTimeOut ) PRIVILEGED_FUNCTION; + +/** + * task.h + *
BaseType_t xTaskCheckForTimeOut( TimeOut_t * const pxTimeOut, TickType_t * const pxTicksToWait );
+ * + * Determines if pxTicksToWait ticks has passed since a time was captured + * using a call to vTaskSetTimeOutState(). The captured time includes the tick + * count and the number of times the tick count has overflowed. + * + * @param pxTimeOut The time status as captured previously using + * vTaskSetTimeOutState. If the timeout has not yet occurred, it is updated + * to reflect the current time status. + * @param pxTicksToWait The number of ticks to check for timeout i.e. if + * pxTicksToWait ticks have passed since pxTimeOut was last updated (either by + * vTaskSetTimeOutState() or xTaskCheckForTimeOut()), the timeout has occurred. + * If the timeout has not occurred, pxTIcksToWait is updated to reflect the + * number of remaining ticks. + * + * @return If timeout has occurred, pdTRUE is returned. Otherwise pdFALSE is + * returned and pxTicksToWait is updated to reflect the number of remaining + * ticks. + * + * @see https://www.freertos.org/xTaskCheckForTimeOut.html + * + * Example Usage: + *
+	// Driver library function used to receive uxWantedBytes from an Rx buffer
+	// that is filled by a UART interrupt. If there are not enough bytes in the
+	// Rx buffer then the task enters the Blocked state until it is notified that
+	// more data has been placed into the buffer. If there is still not enough
+	// data then the task re-enters the Blocked state, and xTaskCheckForTimeOut()
+	// is used to re-calculate the Block time to ensure the total amount of time
+	// spent in the Blocked state does not exceed MAX_TIME_TO_WAIT. This
+	// continues until either the buffer contains at least uxWantedBytes bytes,
+	// or the total amount of time spent in the Blocked state reaches
+	// MAX_TIME_TO_WAIT – at which point the task reads however many bytes are
+	// available up to a maximum of uxWantedBytes.
+
+	size_t xUART_Receive( uint8_t *pucBuffer, size_t uxWantedBytes )
+	{
+	size_t uxReceived = 0;
+	TickType_t xTicksToWait = MAX_TIME_TO_WAIT;
+	TimeOut_t xTimeOut;
+
+		// Initialize xTimeOut.  This records the time at which this function
+		// was entered.
+		vTaskSetTimeOutState( &xTimeOut );
+
+		// Loop until the buffer contains the wanted number of bytes, or a
+		// timeout occurs.
+		while( UART_bytes_in_rx_buffer( pxUARTInstance ) < uxWantedBytes )
+		{
+			// The buffer didn't contain enough data so this task is going to
+			// enter the Blocked state. Adjusting xTicksToWait to account for
+			// any time that has been spent in the Blocked state within this
+			// function so far to ensure the total amount of time spent in the
+			// Blocked state does not exceed MAX_TIME_TO_WAIT.
+			if( xTaskCheckForTimeOut( &xTimeOut, &xTicksToWait ) != pdFALSE )
+			{
+				//Timed out before the wanted number of bytes were available,
+				// exit the loop.
+				break;
+			}
+
+			// Wait for a maximum of xTicksToWait ticks to be notified that the
+			// receive interrupt has placed more data into the buffer.
+			ulTaskNotifyTake( pdTRUE, xTicksToWait );
+		}
+
+		// Attempt to read uxWantedBytes from the receive buffer into pucBuffer.
+		// The actual number of bytes read (which might be less than
+		// uxWantedBytes) is returned.
+		uxReceived = UART_read_from_receive_buffer( pxUARTInstance,
+													pucBuffer,
+													uxWantedBytes );
+
+		return uxReceived;
+	}
+ 
+ * \defgroup xTaskCheckForTimeOut xTaskCheckForTimeOut + * \ingroup TaskCtrl + */ +BaseType_t xTaskCheckForTimeOut( TimeOut_t * const pxTimeOut, TickType_t * const pxTicksToWait ) PRIVILEGED_FUNCTION; + +/*----------------------------------------------------------- + * SCHEDULER INTERNALS AVAILABLE FOR PORTING PURPOSES + *----------------------------------------------------------*/ + +/* + * THIS FUNCTION MUST NOT BE USED FROM APPLICATION CODE. IT IS ONLY + * INTENDED FOR USE WHEN IMPLEMENTING A PORT OF THE SCHEDULER AND IS + * AN INTERFACE WHICH IS FOR THE EXCLUSIVE USE OF THE SCHEDULER. + * + * Called from the real time kernel tick (either preemptive or cooperative), + * this increments the tick count and checks if any tasks that are blocked + * for a finite period required removing from a blocked list and placing on + * a ready list. If a non-zero value is returned then a context switch is + * required because either: + * + A task was removed from a blocked list because its timeout had expired, + * or + * + Time slicing is in use and there is a task of equal priority to the + * currently running task. + */ +BaseType_t xTaskIncrementTick( void ) PRIVILEGED_FUNCTION; + +/* + * THIS FUNCTION MUST NOT BE USED FROM APPLICATION CODE. IT IS AN + * INTERFACE WHICH IS FOR THE EXCLUSIVE USE OF THE SCHEDULER. + * + * THIS FUNCTION MUST BE CALLED WITH INTERRUPTS DISABLED. + * + * Removes the calling task from the ready list and places it both + * on the list of tasks waiting for a particular event, and the + * list of delayed tasks. The task will be removed from both lists + * and replaced on the ready list should either the event occur (and + * there be no higher priority tasks waiting on the same event) or + * the delay period expires. + * + * The 'unordered' version replaces the event list item value with the + * xItemValue value, and inserts the list item at the end of the list. + * + * The 'ordered' version uses the existing event list item value (which is the + * owning tasks priority) to insert the list item into the event list is task + * priority order. + * + * @param pxEventList The list containing tasks that are blocked waiting + * for the event to occur. + * + * @param xItemValue The item value to use for the event list item when the + * event list is not ordered by task priority. + * + * @param xTicksToWait The maximum amount of time that the task should wait + * for the event to occur. This is specified in kernel ticks,the constant + * portTICK_PERIOD_MS can be used to convert kernel ticks into a real time + * period. + */ +void vTaskPlaceOnEventList( List_t * const pxEventList, const TickType_t xTicksToWait ) PRIVILEGED_FUNCTION; +void vTaskPlaceOnUnorderedEventList( List_t * pxEventList, const TickType_t xItemValue, const TickType_t xTicksToWait ) PRIVILEGED_FUNCTION; + +/* + * THIS FUNCTION MUST NOT BE USED FROM APPLICATION CODE. IT IS AN + * INTERFACE WHICH IS FOR THE EXCLUSIVE USE OF THE SCHEDULER. + * + * THIS FUNCTION MUST BE CALLED WITH INTERRUPTS DISABLED. + * + * This function performs nearly the same function as vTaskPlaceOnEventList(). + * The difference being that this function does not permit tasks to block + * indefinitely, whereas vTaskPlaceOnEventList() does. + * + */ +void vTaskPlaceOnEventListRestricted( List_t * const pxEventList, TickType_t xTicksToWait, const BaseType_t xWaitIndefinitely ) PRIVILEGED_FUNCTION; + +/* + * THIS FUNCTION MUST NOT BE USED FROM APPLICATION CODE. IT IS AN + * INTERFACE WHICH IS FOR THE EXCLUSIVE USE OF THE SCHEDULER. + * + * THIS FUNCTION MUST BE CALLED WITH INTERRUPTS DISABLED. + * + * Removes a task from both the specified event list and the list of blocked + * tasks, and places it on a ready queue. + * + * xTaskRemoveFromEventList()/vTaskRemoveFromUnorderedEventList() will be called + * if either an event occurs to unblock a task, or the block timeout period + * expires. + * + * xTaskRemoveFromEventList() is used when the event list is in task priority + * order. It removes the list item from the head of the event list as that will + * have the highest priority owning task of all the tasks on the event list. + * vTaskRemoveFromUnorderedEventList() is used when the event list is not + * ordered and the event list items hold something other than the owning tasks + * priority. In this case the event list item value is updated to the value + * passed in the xItemValue parameter. + * + * @return pdTRUE if the task being removed has a higher priority than the task + * making the call, otherwise pdFALSE. + */ +BaseType_t xTaskRemoveFromEventList( const List_t * const pxEventList ) PRIVILEGED_FUNCTION; +void vTaskRemoveFromUnorderedEventList( ListItem_t * pxEventListItem, const TickType_t xItemValue ) PRIVILEGED_FUNCTION; + +/* + * THIS FUNCTION MUST NOT BE USED FROM APPLICATION CODE. IT IS ONLY + * INTENDED FOR USE WHEN IMPLEMENTING A PORT OF THE SCHEDULER AND IS + * AN INTERFACE WHICH IS FOR THE EXCLUSIVE USE OF THE SCHEDULER. + * + * Sets the pointer to the current TCB to the TCB of the highest priority task + * that is ready to run. + */ +portDONT_DISCARD void vTaskSwitchContext( void ) PRIVILEGED_FUNCTION; + +/* + * THESE FUNCTIONS MUST NOT BE USED FROM APPLICATION CODE. THEY ARE USED BY + * THE EVENT BITS MODULE. + */ +TickType_t uxTaskResetEventItemValue( void ) PRIVILEGED_FUNCTION; + +/* + * Return the handle of the calling task. + */ +TaskHandle_t xTaskGetCurrentTaskHandle( void ) PRIVILEGED_FUNCTION; + +/* + * Shortcut used by the queue implementation to prevent unnecessary call to + * taskYIELD(); + */ +void vTaskMissedYield( void ) PRIVILEGED_FUNCTION; + +/* + * Returns the scheduler state as taskSCHEDULER_RUNNING, + * taskSCHEDULER_NOT_STARTED or taskSCHEDULER_SUSPENDED. + */ +BaseType_t xTaskGetSchedulerState( void ) PRIVILEGED_FUNCTION; + +/* + * Raises the priority of the mutex holder to that of the calling task should + * the mutex holder have a priority less than the calling task. + */ +BaseType_t xTaskPriorityInherit( TaskHandle_t const pxMutexHolder ) PRIVILEGED_FUNCTION; + +/* + * Set the priority of a task back to its proper priority in the case that it + * inherited a higher priority while it was holding a semaphore. + */ +BaseType_t xTaskPriorityDisinherit( TaskHandle_t const pxMutexHolder ) PRIVILEGED_FUNCTION; + +/* + * If a higher priority task attempting to obtain a mutex caused a lower + * priority task to inherit the higher priority task's priority - but the higher + * priority task then timed out without obtaining the mutex, then the lower + * priority task will disinherit the priority again - but only down as far as + * the highest priority task that is still waiting for the mutex (if there were + * more than one task waiting for the mutex). + */ +void vTaskPriorityDisinheritAfterTimeout( TaskHandle_t const pxMutexHolder, UBaseType_t uxHighestPriorityWaitingTask ) PRIVILEGED_FUNCTION; + +/* + * Get the uxTCBNumber assigned to the task referenced by the xTask parameter. + */ +UBaseType_t uxTaskGetTaskNumber( TaskHandle_t xTask ) PRIVILEGED_FUNCTION; + +/* + * Set the uxTaskNumber of the task referenced by the xTask parameter to + * uxHandle. + */ +void vTaskSetTaskNumber( TaskHandle_t xTask, const UBaseType_t uxHandle ) PRIVILEGED_FUNCTION; + +/* + * Only available when configUSE_TICKLESS_IDLE is set to 1. + * If tickless mode is being used, or a low power mode is implemented, then + * the tick interrupt will not execute during idle periods. When this is the + * case, the tick count value maintained by the scheduler needs to be kept up + * to date with the actual execution time by being skipped forward by a time + * equal to the idle period. + */ +void vTaskStepTick( const TickType_t xTicksToJump ) PRIVILEGED_FUNCTION; + +/* Correct the tick count value after the application code has held +interrupts disabled for an extended period. xTicksToCatchUp is the number +of tick interrupts that have been missed due to interrupts being disabled. +Its value is not computed automatically, so must be computed by the +application writer. + +This function is similar to vTaskStepTick(), however, unlike +vTaskStepTick(), xTaskCatchUpTicks() may move the tick count forward past a +time at which a task should be removed from the blocked state. That means +tasks may have to be removed from the blocked state as the tick count is +moved. */ +BaseType_t xTaskCatchUpTicks( TickType_t xTicksToCatchUp ) PRIVILEGED_FUNCTION; + +/* + * Only available when configUSE_TICKLESS_IDLE is set to 1. + * Provided for use within portSUPPRESS_TICKS_AND_SLEEP() to allow the port + * specific sleep function to determine if it is ok to proceed with the sleep, + * and if it is ok to proceed, if it is ok to sleep indefinitely. + * + * This function is necessary because portSUPPRESS_TICKS_AND_SLEEP() is only + * called with the scheduler suspended, not from within a critical section. It + * is therefore possible for an interrupt to request a context switch between + * portSUPPRESS_TICKS_AND_SLEEP() and the low power mode actually being + * entered. eTaskConfirmSleepModeStatus() should be called from a short + * critical section between the timer being stopped and the sleep mode being + * entered to ensure it is ok to proceed into the sleep mode. + */ +eSleepModeStatus eTaskConfirmSleepModeStatus( void ) PRIVILEGED_FUNCTION; + +/* + * For internal use only. Increment the mutex held count when a mutex is + * taken and return the handle of the task that has taken the mutex. + */ +TaskHandle_t pvTaskIncrementMutexHeldCount( void ) PRIVILEGED_FUNCTION; + +/* + * For internal use only. Same as vTaskSetTimeOutState(), but without a critial + * section. + */ +void vTaskInternalSetTimeOutState( TimeOut_t * const pxTimeOut ) PRIVILEGED_FUNCTION; + + +#ifdef __cplusplus +} +#endif +#endif /* INC_TASK_H */ + + + diff --git a/firmware/Middlewares/Third_Party/FreeRTOS/Source/include/timers.h b/firmware/Middlewares/Third_Party/FreeRTOS/Source/include/timers.h new file mode 100644 index 0000000..307ea1f --- /dev/null +++ b/firmware/Middlewares/Third_Party/FreeRTOS/Source/include/timers.h @@ -0,0 +1,1309 @@ +/* + * FreeRTOS Kernel V10.3.1 + * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * http://www.FreeRTOS.org + * http://aws.amazon.com/freertos + * + * 1 tab == 4 spaces! + */ + + +#ifndef TIMERS_H +#define TIMERS_H + +#ifndef INC_FREERTOS_H + #error "include FreeRTOS.h must appear in source files before include timers.h" +#endif + +/*lint -save -e537 This headers are only multiply included if the application code +happens to also be including task.h. */ +#include "task.h" +/*lint -restore */ + +#ifdef __cplusplus +extern "C" { +#endif + +/*----------------------------------------------------------- + * MACROS AND DEFINITIONS + *----------------------------------------------------------*/ + +/* IDs for commands that can be sent/received on the timer queue. These are to +be used solely through the macros that make up the public software timer API, +as defined below. The commands that are sent from interrupts must use the +highest numbers as tmrFIRST_FROM_ISR_COMMAND is used to determine if the task +or interrupt version of the queue send function should be used. */ +#define tmrCOMMAND_EXECUTE_CALLBACK_FROM_ISR ( ( BaseType_t ) -2 ) +#define tmrCOMMAND_EXECUTE_CALLBACK ( ( BaseType_t ) -1 ) +#define tmrCOMMAND_START_DONT_TRACE ( ( BaseType_t ) 0 ) +#define tmrCOMMAND_START ( ( BaseType_t ) 1 ) +#define tmrCOMMAND_RESET ( ( BaseType_t ) 2 ) +#define tmrCOMMAND_STOP ( ( BaseType_t ) 3 ) +#define tmrCOMMAND_CHANGE_PERIOD ( ( BaseType_t ) 4 ) +#define tmrCOMMAND_DELETE ( ( BaseType_t ) 5 ) + +#define tmrFIRST_FROM_ISR_COMMAND ( ( BaseType_t ) 6 ) +#define tmrCOMMAND_START_FROM_ISR ( ( BaseType_t ) 6 ) +#define tmrCOMMAND_RESET_FROM_ISR ( ( BaseType_t ) 7 ) +#define tmrCOMMAND_STOP_FROM_ISR ( ( BaseType_t ) 8 ) +#define tmrCOMMAND_CHANGE_PERIOD_FROM_ISR ( ( BaseType_t ) 9 ) + + +/** + * Type by which software timers are referenced. For example, a call to + * xTimerCreate() returns an TimerHandle_t variable that can then be used to + * reference the subject timer in calls to other software timer API functions + * (for example, xTimerStart(), xTimerReset(), etc.). + */ +struct tmrTimerControl; /* The old naming convention is used to prevent breaking kernel aware debuggers. */ +typedef struct tmrTimerControl * TimerHandle_t; + +/* + * Defines the prototype to which timer callback functions must conform. + */ +typedef void (*TimerCallbackFunction_t)( TimerHandle_t xTimer ); + +/* + * Defines the prototype to which functions used with the + * xTimerPendFunctionCallFromISR() function must conform. + */ +typedef void (*PendedFunction_t)( void *, uint32_t ); + +/** + * TimerHandle_t xTimerCreate( const char * const pcTimerName, + * TickType_t xTimerPeriodInTicks, + * UBaseType_t uxAutoReload, + * void * pvTimerID, + * TimerCallbackFunction_t pxCallbackFunction ); + * + * Creates a new software timer instance, and returns a handle by which the + * created software timer can be referenced. + * + * Internally, within the FreeRTOS implementation, software timers use a block + * of memory, in which the timer data structure is stored. If a software timer + * is created using xTimerCreate() then the required memory is automatically + * dynamically allocated inside the xTimerCreate() function. (see + * http://www.freertos.org/a00111.html). If a software timer is created using + * xTimerCreateStatic() then the application writer must provide the memory that + * will get used by the software timer. xTimerCreateStatic() therefore allows a + * software timer to be created without using any dynamic memory allocation. + * + * Timers are created in the dormant state. The xTimerStart(), xTimerReset(), + * xTimerStartFromISR(), xTimerResetFromISR(), xTimerChangePeriod() and + * xTimerChangePeriodFromISR() API functions can all be used to transition a + * timer into the active state. + * + * @param pcTimerName A text name that is assigned to the timer. This is done + * purely to assist debugging. The kernel itself only ever references a timer + * by its handle, and never by its name. + * + * @param xTimerPeriodInTicks The timer period. The time is defined in tick + * periods so the constant portTICK_PERIOD_MS can be used to convert a time that + * has been specified in milliseconds. For example, if the timer must expire + * after 100 ticks, then xTimerPeriodInTicks should be set to 100. + * Alternatively, if the timer must expire after 500ms, then xPeriod can be set + * to ( 500 / portTICK_PERIOD_MS ) provided configTICK_RATE_HZ is less than or + * equal to 1000. Time timer period must be greater than 0. + * + * @param uxAutoReload If uxAutoReload is set to pdTRUE then the timer will + * expire repeatedly with a frequency set by the xTimerPeriodInTicks parameter. + * If uxAutoReload is set to pdFALSE then the timer will be a one-shot timer and + * enter the dormant state after it expires. + * + * @param pvTimerID An identifier that is assigned to the timer being created. + * Typically this would be used in the timer callback function to identify which + * timer expired when the same callback function is assigned to more than one + * timer. + * + * @param pxCallbackFunction The function to call when the timer expires. + * Callback functions must have the prototype defined by TimerCallbackFunction_t, + * which is "void vCallbackFunction( TimerHandle_t xTimer );". + * + * @return If the timer is successfully created then a handle to the newly + * created timer is returned. If the timer cannot be created because there is + * insufficient FreeRTOS heap remaining to allocate the timer + * structures then NULL is returned. + * + * Example usage: + * @verbatim + * #define NUM_TIMERS 5 + * + * // An array to hold handles to the created timers. + * TimerHandle_t xTimers[ NUM_TIMERS ]; + * + * // An array to hold a count of the number of times each timer expires. + * int32_t lExpireCounters[ NUM_TIMERS ] = { 0 }; + * + * // Define a callback function that will be used by multiple timer instances. + * // The callback function does nothing but count the number of times the + * // associated timer expires, and stop the timer once the timer has expired + * // 10 times. + * void vTimerCallback( TimerHandle_t pxTimer ) + * { + * int32_t lArrayIndex; + * const int32_t xMaxExpiryCountBeforeStopping = 10; + * + * // Optionally do something if the pxTimer parameter is NULL. + * configASSERT( pxTimer ); + * + * // Which timer expired? + * lArrayIndex = ( int32_t ) pvTimerGetTimerID( pxTimer ); + * + * // Increment the number of times that pxTimer has expired. + * lExpireCounters[ lArrayIndex ] += 1; + * + * // If the timer has expired 10 times then stop it from running. + * if( lExpireCounters[ lArrayIndex ] == xMaxExpiryCountBeforeStopping ) + * { + * // Do not use a block time if calling a timer API function from a + * // timer callback function, as doing so could cause a deadlock! + * xTimerStop( pxTimer, 0 ); + * } + * } + * + * void main( void ) + * { + * int32_t x; + * + * // Create then start some timers. Starting the timers before the scheduler + * // has been started means the timers will start running immediately that + * // the scheduler starts. + * for( x = 0; x < NUM_TIMERS; x++ ) + * { + * xTimers[ x ] = xTimerCreate( "Timer", // Just a text name, not used by the kernel. + * ( 100 * x ), // The timer period in ticks. + * pdTRUE, // The timers will auto-reload themselves when they expire. + * ( void * ) x, // Assign each timer a unique id equal to its array index. + * vTimerCallback // Each timer calls the same callback when it expires. + * ); + * + * if( xTimers[ x ] == NULL ) + * { + * // The timer was not created. + * } + * else + * { + * // Start the timer. No block time is specified, and even if one was + * // it would be ignored because the scheduler has not yet been + * // started. + * if( xTimerStart( xTimers[ x ], 0 ) != pdPASS ) + * { + * // The timer could not be set into the Active state. + * } + * } + * } + * + * // ... + * // Create tasks here. + * // ... + * + * // Starting the scheduler will start the timers running as they have already + * // been set into the active state. + * vTaskStartScheduler(); + * + * // Should not reach here. + * for( ;; ); + * } + * @endverbatim + */ +#if( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) + TimerHandle_t xTimerCreate( const char * const pcTimerName, /*lint !e971 Unqualified char types are allowed for strings and single characters only. */ + const TickType_t xTimerPeriodInTicks, + const UBaseType_t uxAutoReload, + void * const pvTimerID, + TimerCallbackFunction_t pxCallbackFunction ) PRIVILEGED_FUNCTION; +#endif + +/** + * TimerHandle_t xTimerCreateStatic(const char * const pcTimerName, + * TickType_t xTimerPeriodInTicks, + * UBaseType_t uxAutoReload, + * void * pvTimerID, + * TimerCallbackFunction_t pxCallbackFunction, + * StaticTimer_t *pxTimerBuffer ); + * + * Creates a new software timer instance, and returns a handle by which the + * created software timer can be referenced. + * + * Internally, within the FreeRTOS implementation, software timers use a block + * of memory, in which the timer data structure is stored. If a software timer + * is created using xTimerCreate() then the required memory is automatically + * dynamically allocated inside the xTimerCreate() function. (see + * http://www.freertos.org/a00111.html). If a software timer is created using + * xTimerCreateStatic() then the application writer must provide the memory that + * will get used by the software timer. xTimerCreateStatic() therefore allows a + * software timer to be created without using any dynamic memory allocation. + * + * Timers are created in the dormant state. The xTimerStart(), xTimerReset(), + * xTimerStartFromISR(), xTimerResetFromISR(), xTimerChangePeriod() and + * xTimerChangePeriodFromISR() API functions can all be used to transition a + * timer into the active state. + * + * @param pcTimerName A text name that is assigned to the timer. This is done + * purely to assist debugging. The kernel itself only ever references a timer + * by its handle, and never by its name. + * + * @param xTimerPeriodInTicks The timer period. The time is defined in tick + * periods so the constant portTICK_PERIOD_MS can be used to convert a time that + * has been specified in milliseconds. For example, if the timer must expire + * after 100 ticks, then xTimerPeriodInTicks should be set to 100. + * Alternatively, if the timer must expire after 500ms, then xPeriod can be set + * to ( 500 / portTICK_PERIOD_MS ) provided configTICK_RATE_HZ is less than or + * equal to 1000. The timer period must be greater than 0. + * + * @param uxAutoReload If uxAutoReload is set to pdTRUE then the timer will + * expire repeatedly with a frequency set by the xTimerPeriodInTicks parameter. + * If uxAutoReload is set to pdFALSE then the timer will be a one-shot timer and + * enter the dormant state after it expires. + * + * @param pvTimerID An identifier that is assigned to the timer being created. + * Typically this would be used in the timer callback function to identify which + * timer expired when the same callback function is assigned to more than one + * timer. + * + * @param pxCallbackFunction The function to call when the timer expires. + * Callback functions must have the prototype defined by TimerCallbackFunction_t, + * which is "void vCallbackFunction( TimerHandle_t xTimer );". + * + * @param pxTimerBuffer Must point to a variable of type StaticTimer_t, which + * will be then be used to hold the software timer's data structures, removing + * the need for the memory to be allocated dynamically. + * + * @return If the timer is created then a handle to the created timer is + * returned. If pxTimerBuffer was NULL then NULL is returned. + * + * Example usage: + * @verbatim + * + * // The buffer used to hold the software timer's data structure. + * static StaticTimer_t xTimerBuffer; + * + * // A variable that will be incremented by the software timer's callback + * // function. + * UBaseType_t uxVariableToIncrement = 0; + * + * // A software timer callback function that increments a variable passed to + * // it when the software timer was created. After the 5th increment the + * // callback function stops the software timer. + * static void prvTimerCallback( TimerHandle_t xExpiredTimer ) + * { + * UBaseType_t *puxVariableToIncrement; + * BaseType_t xReturned; + * + * // Obtain the address of the variable to increment from the timer ID. + * puxVariableToIncrement = ( UBaseType_t * ) pvTimerGetTimerID( xExpiredTimer ); + * + * // Increment the variable to show the timer callback has executed. + * ( *puxVariableToIncrement )++; + * + * // If this callback has executed the required number of times, stop the + * // timer. + * if( *puxVariableToIncrement == 5 ) + * { + * // This is called from a timer callback so must not block. + * xTimerStop( xExpiredTimer, staticDONT_BLOCK ); + * } + * } + * + * + * void main( void ) + * { + * // Create the software time. xTimerCreateStatic() has an extra parameter + * // than the normal xTimerCreate() API function. The parameter is a pointer + * // to the StaticTimer_t structure that will hold the software timer + * // structure. If the parameter is passed as NULL then the structure will be + * // allocated dynamically, just as if xTimerCreate() had been called. + * xTimer = xTimerCreateStatic( "T1", // Text name for the task. Helps debugging only. Not used by FreeRTOS. + * xTimerPeriod, // The period of the timer in ticks. + * pdTRUE, // This is an auto-reload timer. + * ( void * ) &uxVariableToIncrement, // A variable incremented by the software timer's callback function + * prvTimerCallback, // The function to execute when the timer expires. + * &xTimerBuffer ); // The buffer that will hold the software timer structure. + * + * // The scheduler has not started yet so a block time is not used. + * xReturned = xTimerStart( xTimer, 0 ); + * + * // ... + * // Create tasks here. + * // ... + * + * // Starting the scheduler will start the timers running as they have already + * // been set into the active state. + * vTaskStartScheduler(); + * + * // Should not reach here. + * for( ;; ); + * } + * @endverbatim + */ +#if( configSUPPORT_STATIC_ALLOCATION == 1 ) + TimerHandle_t xTimerCreateStatic( const char * const pcTimerName, /*lint !e971 Unqualified char types are allowed for strings and single characters only. */ + const TickType_t xTimerPeriodInTicks, + const UBaseType_t uxAutoReload, + void * const pvTimerID, + TimerCallbackFunction_t pxCallbackFunction, + StaticTimer_t *pxTimerBuffer ) PRIVILEGED_FUNCTION; +#endif /* configSUPPORT_STATIC_ALLOCATION */ + +/** + * void *pvTimerGetTimerID( TimerHandle_t xTimer ); + * + * Returns the ID assigned to the timer. + * + * IDs are assigned to timers using the pvTimerID parameter of the call to + * xTimerCreated() that was used to create the timer, and by calling the + * vTimerSetTimerID() API function. + * + * If the same callback function is assigned to multiple timers then the timer + * ID can be used as time specific (timer local) storage. + * + * @param xTimer The timer being queried. + * + * @return The ID assigned to the timer being queried. + * + * Example usage: + * + * See the xTimerCreate() API function example usage scenario. + */ +void *pvTimerGetTimerID( const TimerHandle_t xTimer ) PRIVILEGED_FUNCTION; + +/** + * void vTimerSetTimerID( TimerHandle_t xTimer, void *pvNewID ); + * + * Sets the ID assigned to the timer. + * + * IDs are assigned to timers using the pvTimerID parameter of the call to + * xTimerCreated() that was used to create the timer. + * + * If the same callback function is assigned to multiple timers then the timer + * ID can be used as time specific (timer local) storage. + * + * @param xTimer The timer being updated. + * + * @param pvNewID The ID to assign to the timer. + * + * Example usage: + * + * See the xTimerCreate() API function example usage scenario. + */ +void vTimerSetTimerID( TimerHandle_t xTimer, void *pvNewID ) PRIVILEGED_FUNCTION; + +/** + * BaseType_t xTimerIsTimerActive( TimerHandle_t xTimer ); + * + * Queries a timer to see if it is active or dormant. + * + * A timer will be dormant if: + * 1) It has been created but not started, or + * 2) It is an expired one-shot timer that has not been restarted. + * + * Timers are created in the dormant state. The xTimerStart(), xTimerReset(), + * xTimerStartFromISR(), xTimerResetFromISR(), xTimerChangePeriod() and + * xTimerChangePeriodFromISR() API functions can all be used to transition a timer into the + * active state. + * + * @param xTimer The timer being queried. + * + * @return pdFALSE will be returned if the timer is dormant. A value other than + * pdFALSE will be returned if the timer is active. + * + * Example usage: + * @verbatim + * // This function assumes xTimer has already been created. + * void vAFunction( TimerHandle_t xTimer ) + * { + * if( xTimerIsTimerActive( xTimer ) != pdFALSE ) // or more simply and equivalently "if( xTimerIsTimerActive( xTimer ) )" + * { + * // xTimer is active, do something. + * } + * else + * { + * // xTimer is not active, do something else. + * } + * } + * @endverbatim + */ +BaseType_t xTimerIsTimerActive( TimerHandle_t xTimer ) PRIVILEGED_FUNCTION; + +/** + * TaskHandle_t xTimerGetTimerDaemonTaskHandle( void ); + * + * Simply returns the handle of the timer service/daemon task. It it not valid + * to call xTimerGetTimerDaemonTaskHandle() before the scheduler has been started. + */ +TaskHandle_t xTimerGetTimerDaemonTaskHandle( void ) PRIVILEGED_FUNCTION; + +/** + * BaseType_t xTimerStart( TimerHandle_t xTimer, TickType_t xTicksToWait ); + * + * Timer functionality is provided by a timer service/daemon task. Many of the + * public FreeRTOS timer API functions send commands to the timer service task + * through a queue called the timer command queue. The timer command queue is + * private to the kernel itself and is not directly accessible to application + * code. The length of the timer command queue is set by the + * configTIMER_QUEUE_LENGTH configuration constant. + * + * xTimerStart() starts a timer that was previously created using the + * xTimerCreate() API function. If the timer had already been started and was + * already in the active state, then xTimerStart() has equivalent functionality + * to the xTimerReset() API function. + * + * Starting a timer ensures the timer is in the active state. If the timer + * is not stopped, deleted, or reset in the mean time, the callback function + * associated with the timer will get called 'n' ticks after xTimerStart() was + * called, where 'n' is the timers defined period. + * + * It is valid to call xTimerStart() before the scheduler has been started, but + * when this is done the timer will not actually start until the scheduler is + * started, and the timers expiry time will be relative to when the scheduler is + * started, not relative to when xTimerStart() was called. + * + * The configUSE_TIMERS configuration constant must be set to 1 for xTimerStart() + * to be available. + * + * @param xTimer The handle of the timer being started/restarted. + * + * @param xTicksToWait Specifies the time, in ticks, that the calling task should + * be held in the Blocked state to wait for the start command to be successfully + * sent to the timer command queue, should the queue already be full when + * xTimerStart() was called. xTicksToWait is ignored if xTimerStart() is called + * before the scheduler is started. + * + * @return pdFAIL will be returned if the start command could not be sent to + * the timer command queue even after xTicksToWait ticks had passed. pdPASS will + * be returned if the command was successfully sent to the timer command queue. + * When the command is actually processed will depend on the priority of the + * timer service/daemon task relative to other tasks in the system, although the + * timers expiry time is relative to when xTimerStart() is actually called. The + * timer service/daemon task priority is set by the configTIMER_TASK_PRIORITY + * configuration constant. + * + * Example usage: + * + * See the xTimerCreate() API function example usage scenario. + * + */ +#define xTimerStart( xTimer, xTicksToWait ) xTimerGenericCommand( ( xTimer ), tmrCOMMAND_START, ( xTaskGetTickCount() ), NULL, ( xTicksToWait ) ) + +/** + * BaseType_t xTimerStop( TimerHandle_t xTimer, TickType_t xTicksToWait ); + * + * Timer functionality is provided by a timer service/daemon task. Many of the + * public FreeRTOS timer API functions send commands to the timer service task + * through a queue called the timer command queue. The timer command queue is + * private to the kernel itself and is not directly accessible to application + * code. The length of the timer command queue is set by the + * configTIMER_QUEUE_LENGTH configuration constant. + * + * xTimerStop() stops a timer that was previously started using either of the + * The xTimerStart(), xTimerReset(), xTimerStartFromISR(), xTimerResetFromISR(), + * xTimerChangePeriod() or xTimerChangePeriodFromISR() API functions. + * + * Stopping a timer ensures the timer is not in the active state. + * + * The configUSE_TIMERS configuration constant must be set to 1 for xTimerStop() + * to be available. + * + * @param xTimer The handle of the timer being stopped. + * + * @param xTicksToWait Specifies the time, in ticks, that the calling task should + * be held in the Blocked state to wait for the stop command to be successfully + * sent to the timer command queue, should the queue already be full when + * xTimerStop() was called. xTicksToWait is ignored if xTimerStop() is called + * before the scheduler is started. + * + * @return pdFAIL will be returned if the stop command could not be sent to + * the timer command queue even after xTicksToWait ticks had passed. pdPASS will + * be returned if the command was successfully sent to the timer command queue. + * When the command is actually processed will depend on the priority of the + * timer service/daemon task relative to other tasks in the system. The timer + * service/daemon task priority is set by the configTIMER_TASK_PRIORITY + * configuration constant. + * + * Example usage: + * + * See the xTimerCreate() API function example usage scenario. + * + */ +#define xTimerStop( xTimer, xTicksToWait ) xTimerGenericCommand( ( xTimer ), tmrCOMMAND_STOP, 0U, NULL, ( xTicksToWait ) ) + +/** + * BaseType_t xTimerChangePeriod( TimerHandle_t xTimer, + * TickType_t xNewPeriod, + * TickType_t xTicksToWait ); + * + * Timer functionality is provided by a timer service/daemon task. Many of the + * public FreeRTOS timer API functions send commands to the timer service task + * through a queue called the timer command queue. The timer command queue is + * private to the kernel itself and is not directly accessible to application + * code. The length of the timer command queue is set by the + * configTIMER_QUEUE_LENGTH configuration constant. + * + * xTimerChangePeriod() changes the period of a timer that was previously + * created using the xTimerCreate() API function. + * + * xTimerChangePeriod() can be called to change the period of an active or + * dormant state timer. + * + * The configUSE_TIMERS configuration constant must be set to 1 for + * xTimerChangePeriod() to be available. + * + * @param xTimer The handle of the timer that is having its period changed. + * + * @param xNewPeriod The new period for xTimer. Timer periods are specified in + * tick periods, so the constant portTICK_PERIOD_MS can be used to convert a time + * that has been specified in milliseconds. For example, if the timer must + * expire after 100 ticks, then xNewPeriod should be set to 100. Alternatively, + * if the timer must expire after 500ms, then xNewPeriod can be set to + * ( 500 / portTICK_PERIOD_MS ) provided configTICK_RATE_HZ is less than + * or equal to 1000. + * + * @param xTicksToWait Specifies the time, in ticks, that the calling task should + * be held in the Blocked state to wait for the change period command to be + * successfully sent to the timer command queue, should the queue already be + * full when xTimerChangePeriod() was called. xTicksToWait is ignored if + * xTimerChangePeriod() is called before the scheduler is started. + * + * @return pdFAIL will be returned if the change period command could not be + * sent to the timer command queue even after xTicksToWait ticks had passed. + * pdPASS will be returned if the command was successfully sent to the timer + * command queue. When the command is actually processed will depend on the + * priority of the timer service/daemon task relative to other tasks in the + * system. The timer service/daemon task priority is set by the + * configTIMER_TASK_PRIORITY configuration constant. + * + * Example usage: + * @verbatim + * // This function assumes xTimer has already been created. If the timer + * // referenced by xTimer is already active when it is called, then the timer + * // is deleted. If the timer referenced by xTimer is not active when it is + * // called, then the period of the timer is set to 500ms and the timer is + * // started. + * void vAFunction( TimerHandle_t xTimer ) + * { + * if( xTimerIsTimerActive( xTimer ) != pdFALSE ) // or more simply and equivalently "if( xTimerIsTimerActive( xTimer ) )" + * { + * // xTimer is already active - delete it. + * xTimerDelete( xTimer ); + * } + * else + * { + * // xTimer is not active, change its period to 500ms. This will also + * // cause the timer to start. Block for a maximum of 100 ticks if the + * // change period command cannot immediately be sent to the timer + * // command queue. + * if( xTimerChangePeriod( xTimer, 500 / portTICK_PERIOD_MS, 100 ) == pdPASS ) + * { + * // The command was successfully sent. + * } + * else + * { + * // The command could not be sent, even after waiting for 100 ticks + * // to pass. Take appropriate action here. + * } + * } + * } + * @endverbatim + */ + #define xTimerChangePeriod( xTimer, xNewPeriod, xTicksToWait ) xTimerGenericCommand( ( xTimer ), tmrCOMMAND_CHANGE_PERIOD, ( xNewPeriod ), NULL, ( xTicksToWait ) ) + +/** + * BaseType_t xTimerDelete( TimerHandle_t xTimer, TickType_t xTicksToWait ); + * + * Timer functionality is provided by a timer service/daemon task. Many of the + * public FreeRTOS timer API functions send commands to the timer service task + * through a queue called the timer command queue. The timer command queue is + * private to the kernel itself and is not directly accessible to application + * code. The length of the timer command queue is set by the + * configTIMER_QUEUE_LENGTH configuration constant. + * + * xTimerDelete() deletes a timer that was previously created using the + * xTimerCreate() API function. + * + * The configUSE_TIMERS configuration constant must be set to 1 for + * xTimerDelete() to be available. + * + * @param xTimer The handle of the timer being deleted. + * + * @param xTicksToWait Specifies the time, in ticks, that the calling task should + * be held in the Blocked state to wait for the delete command to be + * successfully sent to the timer command queue, should the queue already be + * full when xTimerDelete() was called. xTicksToWait is ignored if xTimerDelete() + * is called before the scheduler is started. + * + * @return pdFAIL will be returned if the delete command could not be sent to + * the timer command queue even after xTicksToWait ticks had passed. pdPASS will + * be returned if the command was successfully sent to the timer command queue. + * When the command is actually processed will depend on the priority of the + * timer service/daemon task relative to other tasks in the system. The timer + * service/daemon task priority is set by the configTIMER_TASK_PRIORITY + * configuration constant. + * + * Example usage: + * + * See the xTimerChangePeriod() API function example usage scenario. + */ +#define xTimerDelete( xTimer, xTicksToWait ) xTimerGenericCommand( ( xTimer ), tmrCOMMAND_DELETE, 0U, NULL, ( xTicksToWait ) ) + +/** + * BaseType_t xTimerReset( TimerHandle_t xTimer, TickType_t xTicksToWait ); + * + * Timer functionality is provided by a timer service/daemon task. Many of the + * public FreeRTOS timer API functions send commands to the timer service task + * through a queue called the timer command queue. The timer command queue is + * private to the kernel itself and is not directly accessible to application + * code. The length of the timer command queue is set by the + * configTIMER_QUEUE_LENGTH configuration constant. + * + * xTimerReset() re-starts a timer that was previously created using the + * xTimerCreate() API function. If the timer had already been started and was + * already in the active state, then xTimerReset() will cause the timer to + * re-evaluate its expiry time so that it is relative to when xTimerReset() was + * called. If the timer was in the dormant state then xTimerReset() has + * equivalent functionality to the xTimerStart() API function. + * + * Resetting a timer ensures the timer is in the active state. If the timer + * is not stopped, deleted, or reset in the mean time, the callback function + * associated with the timer will get called 'n' ticks after xTimerReset() was + * called, where 'n' is the timers defined period. + * + * It is valid to call xTimerReset() before the scheduler has been started, but + * when this is done the timer will not actually start until the scheduler is + * started, and the timers expiry time will be relative to when the scheduler is + * started, not relative to when xTimerReset() was called. + * + * The configUSE_TIMERS configuration constant must be set to 1 for xTimerReset() + * to be available. + * + * @param xTimer The handle of the timer being reset/started/restarted. + * + * @param xTicksToWait Specifies the time, in ticks, that the calling task should + * be held in the Blocked state to wait for the reset command to be successfully + * sent to the timer command queue, should the queue already be full when + * xTimerReset() was called. xTicksToWait is ignored if xTimerReset() is called + * before the scheduler is started. + * + * @return pdFAIL will be returned if the reset command could not be sent to + * the timer command queue even after xTicksToWait ticks had passed. pdPASS will + * be returned if the command was successfully sent to the timer command queue. + * When the command is actually processed will depend on the priority of the + * timer service/daemon task relative to other tasks in the system, although the + * timers expiry time is relative to when xTimerStart() is actually called. The + * timer service/daemon task priority is set by the configTIMER_TASK_PRIORITY + * configuration constant. + * + * Example usage: + * @verbatim + * // When a key is pressed, an LCD back-light is switched on. If 5 seconds pass + * // without a key being pressed, then the LCD back-light is switched off. In + * // this case, the timer is a one-shot timer. + * + * TimerHandle_t xBacklightTimer = NULL; + * + * // The callback function assigned to the one-shot timer. In this case the + * // parameter is not used. + * void vBacklightTimerCallback( TimerHandle_t pxTimer ) + * { + * // The timer expired, therefore 5 seconds must have passed since a key + * // was pressed. Switch off the LCD back-light. + * vSetBacklightState( BACKLIGHT_OFF ); + * } + * + * // The key press event handler. + * void vKeyPressEventHandler( char cKey ) + * { + * // Ensure the LCD back-light is on, then reset the timer that is + * // responsible for turning the back-light off after 5 seconds of + * // key inactivity. Wait 10 ticks for the command to be successfully sent + * // if it cannot be sent immediately. + * vSetBacklightState( BACKLIGHT_ON ); + * if( xTimerReset( xBacklightTimer, 100 ) != pdPASS ) + * { + * // The reset command was not executed successfully. Take appropriate + * // action here. + * } + * + * // Perform the rest of the key processing here. + * } + * + * void main( void ) + * { + * int32_t x; + * + * // Create then start the one-shot timer that is responsible for turning + * // the back-light off if no keys are pressed within a 5 second period. + * xBacklightTimer = xTimerCreate( "BacklightTimer", // Just a text name, not used by the kernel. + * ( 5000 / portTICK_PERIOD_MS), // The timer period in ticks. + * pdFALSE, // The timer is a one-shot timer. + * 0, // The id is not used by the callback so can take any value. + * vBacklightTimerCallback // The callback function that switches the LCD back-light off. + * ); + * + * if( xBacklightTimer == NULL ) + * { + * // The timer was not created. + * } + * else + * { + * // Start the timer. No block time is specified, and even if one was + * // it would be ignored because the scheduler has not yet been + * // started. + * if( xTimerStart( xBacklightTimer, 0 ) != pdPASS ) + * { + * // The timer could not be set into the Active state. + * } + * } + * + * // ... + * // Create tasks here. + * // ... + * + * // Starting the scheduler will start the timer running as it has already + * // been set into the active state. + * vTaskStartScheduler(); + * + * // Should not reach here. + * for( ;; ); + * } + * @endverbatim + */ +#define xTimerReset( xTimer, xTicksToWait ) xTimerGenericCommand( ( xTimer ), tmrCOMMAND_RESET, ( xTaskGetTickCount() ), NULL, ( xTicksToWait ) ) + +/** + * BaseType_t xTimerStartFromISR( TimerHandle_t xTimer, + * BaseType_t *pxHigherPriorityTaskWoken ); + * + * A version of xTimerStart() that can be called from an interrupt service + * routine. + * + * @param xTimer The handle of the timer being started/restarted. + * + * @param pxHigherPriorityTaskWoken The timer service/daemon task spends most + * of its time in the Blocked state, waiting for messages to arrive on the timer + * command queue. Calling xTimerStartFromISR() writes a message to the timer + * command queue, so has the potential to transition the timer service/daemon + * task out of the Blocked state. If calling xTimerStartFromISR() causes the + * timer service/daemon task to leave the Blocked state, and the timer service/ + * daemon task has a priority equal to or greater than the currently executing + * task (the task that was interrupted), then *pxHigherPriorityTaskWoken will + * get set to pdTRUE internally within the xTimerStartFromISR() function. If + * xTimerStartFromISR() sets this value to pdTRUE then a context switch should + * be performed before the interrupt exits. + * + * @return pdFAIL will be returned if the start command could not be sent to + * the timer command queue. pdPASS will be returned if the command was + * successfully sent to the timer command queue. When the command is actually + * processed will depend on the priority of the timer service/daemon task + * relative to other tasks in the system, although the timers expiry time is + * relative to when xTimerStartFromISR() is actually called. The timer + * service/daemon task priority is set by the configTIMER_TASK_PRIORITY + * configuration constant. + * + * Example usage: + * @verbatim + * // This scenario assumes xBacklightTimer has already been created. When a + * // key is pressed, an LCD back-light is switched on. If 5 seconds pass + * // without a key being pressed, then the LCD back-light is switched off. In + * // this case, the timer is a one-shot timer, and unlike the example given for + * // the xTimerReset() function, the key press event handler is an interrupt + * // service routine. + * + * // The callback function assigned to the one-shot timer. In this case the + * // parameter is not used. + * void vBacklightTimerCallback( TimerHandle_t pxTimer ) + * { + * // The timer expired, therefore 5 seconds must have passed since a key + * // was pressed. Switch off the LCD back-light. + * vSetBacklightState( BACKLIGHT_OFF ); + * } + * + * // The key press interrupt service routine. + * void vKeyPressEventInterruptHandler( void ) + * { + * BaseType_t xHigherPriorityTaskWoken = pdFALSE; + * + * // Ensure the LCD back-light is on, then restart the timer that is + * // responsible for turning the back-light off after 5 seconds of + * // key inactivity. This is an interrupt service routine so can only + * // call FreeRTOS API functions that end in "FromISR". + * vSetBacklightState( BACKLIGHT_ON ); + * + * // xTimerStartFromISR() or xTimerResetFromISR() could be called here + * // as both cause the timer to re-calculate its expiry time. + * // xHigherPriorityTaskWoken was initialised to pdFALSE when it was + * // declared (in this function). + * if( xTimerStartFromISR( xBacklightTimer, &xHigherPriorityTaskWoken ) != pdPASS ) + * { + * // The start command was not executed successfully. Take appropriate + * // action here. + * } + * + * // Perform the rest of the key processing here. + * + * // If xHigherPriorityTaskWoken equals pdTRUE, then a context switch + * // should be performed. The syntax required to perform a context switch + * // from inside an ISR varies from port to port, and from compiler to + * // compiler. Inspect the demos for the port you are using to find the + * // actual syntax required. + * if( xHigherPriorityTaskWoken != pdFALSE ) + * { + * // Call the interrupt safe yield function here (actual function + * // depends on the FreeRTOS port being used). + * } + * } + * @endverbatim + */ +#define xTimerStartFromISR( xTimer, pxHigherPriorityTaskWoken ) xTimerGenericCommand( ( xTimer ), tmrCOMMAND_START_FROM_ISR, ( xTaskGetTickCountFromISR() ), ( pxHigherPriorityTaskWoken ), 0U ) + +/** + * BaseType_t xTimerStopFromISR( TimerHandle_t xTimer, + * BaseType_t *pxHigherPriorityTaskWoken ); + * + * A version of xTimerStop() that can be called from an interrupt service + * routine. + * + * @param xTimer The handle of the timer being stopped. + * + * @param pxHigherPriorityTaskWoken The timer service/daemon task spends most + * of its time in the Blocked state, waiting for messages to arrive on the timer + * command queue. Calling xTimerStopFromISR() writes a message to the timer + * command queue, so has the potential to transition the timer service/daemon + * task out of the Blocked state. If calling xTimerStopFromISR() causes the + * timer service/daemon task to leave the Blocked state, and the timer service/ + * daemon task has a priority equal to or greater than the currently executing + * task (the task that was interrupted), then *pxHigherPriorityTaskWoken will + * get set to pdTRUE internally within the xTimerStopFromISR() function. If + * xTimerStopFromISR() sets this value to pdTRUE then a context switch should + * be performed before the interrupt exits. + * + * @return pdFAIL will be returned if the stop command could not be sent to + * the timer command queue. pdPASS will be returned if the command was + * successfully sent to the timer command queue. When the command is actually + * processed will depend on the priority of the timer service/daemon task + * relative to other tasks in the system. The timer service/daemon task + * priority is set by the configTIMER_TASK_PRIORITY configuration constant. + * + * Example usage: + * @verbatim + * // This scenario assumes xTimer has already been created and started. When + * // an interrupt occurs, the timer should be simply stopped. + * + * // The interrupt service routine that stops the timer. + * void vAnExampleInterruptServiceRoutine( void ) + * { + * BaseType_t xHigherPriorityTaskWoken = pdFALSE; + * + * // The interrupt has occurred - simply stop the timer. + * // xHigherPriorityTaskWoken was set to pdFALSE where it was defined + * // (within this function). As this is an interrupt service routine, only + * // FreeRTOS API functions that end in "FromISR" can be used. + * if( xTimerStopFromISR( xTimer, &xHigherPriorityTaskWoken ) != pdPASS ) + * { + * // The stop command was not executed successfully. Take appropriate + * // action here. + * } + * + * // If xHigherPriorityTaskWoken equals pdTRUE, then a context switch + * // should be performed. The syntax required to perform a context switch + * // from inside an ISR varies from port to port, and from compiler to + * // compiler. Inspect the demos for the port you are using to find the + * // actual syntax required. + * if( xHigherPriorityTaskWoken != pdFALSE ) + * { + * // Call the interrupt safe yield function here (actual function + * // depends on the FreeRTOS port being used). + * } + * } + * @endverbatim + */ +#define xTimerStopFromISR( xTimer, pxHigherPriorityTaskWoken ) xTimerGenericCommand( ( xTimer ), tmrCOMMAND_STOP_FROM_ISR, 0, ( pxHigherPriorityTaskWoken ), 0U ) + +/** + * BaseType_t xTimerChangePeriodFromISR( TimerHandle_t xTimer, + * TickType_t xNewPeriod, + * BaseType_t *pxHigherPriorityTaskWoken ); + * + * A version of xTimerChangePeriod() that can be called from an interrupt + * service routine. + * + * @param xTimer The handle of the timer that is having its period changed. + * + * @param xNewPeriod The new period for xTimer. Timer periods are specified in + * tick periods, so the constant portTICK_PERIOD_MS can be used to convert a time + * that has been specified in milliseconds. For example, if the timer must + * expire after 100 ticks, then xNewPeriod should be set to 100. Alternatively, + * if the timer must expire after 500ms, then xNewPeriod can be set to + * ( 500 / portTICK_PERIOD_MS ) provided configTICK_RATE_HZ is less than + * or equal to 1000. + * + * @param pxHigherPriorityTaskWoken The timer service/daemon task spends most + * of its time in the Blocked state, waiting for messages to arrive on the timer + * command queue. Calling xTimerChangePeriodFromISR() writes a message to the + * timer command queue, so has the potential to transition the timer service/ + * daemon task out of the Blocked state. If calling xTimerChangePeriodFromISR() + * causes the timer service/daemon task to leave the Blocked state, and the + * timer service/daemon task has a priority equal to or greater than the + * currently executing task (the task that was interrupted), then + * *pxHigherPriorityTaskWoken will get set to pdTRUE internally within the + * xTimerChangePeriodFromISR() function. If xTimerChangePeriodFromISR() sets + * this value to pdTRUE then a context switch should be performed before the + * interrupt exits. + * + * @return pdFAIL will be returned if the command to change the timers period + * could not be sent to the timer command queue. pdPASS will be returned if the + * command was successfully sent to the timer command queue. When the command + * is actually processed will depend on the priority of the timer service/daemon + * task relative to other tasks in the system. The timer service/daemon task + * priority is set by the configTIMER_TASK_PRIORITY configuration constant. + * + * Example usage: + * @verbatim + * // This scenario assumes xTimer has already been created and started. When + * // an interrupt occurs, the period of xTimer should be changed to 500ms. + * + * // The interrupt service routine that changes the period of xTimer. + * void vAnExampleInterruptServiceRoutine( void ) + * { + * BaseType_t xHigherPriorityTaskWoken = pdFALSE; + * + * // The interrupt has occurred - change the period of xTimer to 500ms. + * // xHigherPriorityTaskWoken was set to pdFALSE where it was defined + * // (within this function). As this is an interrupt service routine, only + * // FreeRTOS API functions that end in "FromISR" can be used. + * if( xTimerChangePeriodFromISR( xTimer, &xHigherPriorityTaskWoken ) != pdPASS ) + * { + * // The command to change the timers period was not executed + * // successfully. Take appropriate action here. + * } + * + * // If xHigherPriorityTaskWoken equals pdTRUE, then a context switch + * // should be performed. The syntax required to perform a context switch + * // from inside an ISR varies from port to port, and from compiler to + * // compiler. Inspect the demos for the port you are using to find the + * // actual syntax required. + * if( xHigherPriorityTaskWoken != pdFALSE ) + * { + * // Call the interrupt safe yield function here (actual function + * // depends on the FreeRTOS port being used). + * } + * } + * @endverbatim + */ +#define xTimerChangePeriodFromISR( xTimer, xNewPeriod, pxHigherPriorityTaskWoken ) xTimerGenericCommand( ( xTimer ), tmrCOMMAND_CHANGE_PERIOD_FROM_ISR, ( xNewPeriod ), ( pxHigherPriorityTaskWoken ), 0U ) + +/** + * BaseType_t xTimerResetFromISR( TimerHandle_t xTimer, + * BaseType_t *pxHigherPriorityTaskWoken ); + * + * A version of xTimerReset() that can be called from an interrupt service + * routine. + * + * @param xTimer The handle of the timer that is to be started, reset, or + * restarted. + * + * @param pxHigherPriorityTaskWoken The timer service/daemon task spends most + * of its time in the Blocked state, waiting for messages to arrive on the timer + * command queue. Calling xTimerResetFromISR() writes a message to the timer + * command queue, so has the potential to transition the timer service/daemon + * task out of the Blocked state. If calling xTimerResetFromISR() causes the + * timer service/daemon task to leave the Blocked state, and the timer service/ + * daemon task has a priority equal to or greater than the currently executing + * task (the task that was interrupted), then *pxHigherPriorityTaskWoken will + * get set to pdTRUE internally within the xTimerResetFromISR() function. If + * xTimerResetFromISR() sets this value to pdTRUE then a context switch should + * be performed before the interrupt exits. + * + * @return pdFAIL will be returned if the reset command could not be sent to + * the timer command queue. pdPASS will be returned if the command was + * successfully sent to the timer command queue. When the command is actually + * processed will depend on the priority of the timer service/daemon task + * relative to other tasks in the system, although the timers expiry time is + * relative to when xTimerResetFromISR() is actually called. The timer service/daemon + * task priority is set by the configTIMER_TASK_PRIORITY configuration constant. + * + * Example usage: + * @verbatim + * // This scenario assumes xBacklightTimer has already been created. When a + * // key is pressed, an LCD back-light is switched on. If 5 seconds pass + * // without a key being pressed, then the LCD back-light is switched off. In + * // this case, the timer is a one-shot timer, and unlike the example given for + * // the xTimerReset() function, the key press event handler is an interrupt + * // service routine. + * + * // The callback function assigned to the one-shot timer. In this case the + * // parameter is not used. + * void vBacklightTimerCallback( TimerHandle_t pxTimer ) + * { + * // The timer expired, therefore 5 seconds must have passed since a key + * // was pressed. Switch off the LCD back-light. + * vSetBacklightState( BACKLIGHT_OFF ); + * } + * + * // The key press interrupt service routine. + * void vKeyPressEventInterruptHandler( void ) + * { + * BaseType_t xHigherPriorityTaskWoken = pdFALSE; + * + * // Ensure the LCD back-light is on, then reset the timer that is + * // responsible for turning the back-light off after 5 seconds of + * // key inactivity. This is an interrupt service routine so can only + * // call FreeRTOS API functions that end in "FromISR". + * vSetBacklightState( BACKLIGHT_ON ); + * + * // xTimerStartFromISR() or xTimerResetFromISR() could be called here + * // as both cause the timer to re-calculate its expiry time. + * // xHigherPriorityTaskWoken was initialised to pdFALSE when it was + * // declared (in this function). + * if( xTimerResetFromISR( xBacklightTimer, &xHigherPriorityTaskWoken ) != pdPASS ) + * { + * // The reset command was not executed successfully. Take appropriate + * // action here. + * } + * + * // Perform the rest of the key processing here. + * + * // If xHigherPriorityTaskWoken equals pdTRUE, then a context switch + * // should be performed. The syntax required to perform a context switch + * // from inside an ISR varies from port to port, and from compiler to + * // compiler. Inspect the demos for the port you are using to find the + * // actual syntax required. + * if( xHigherPriorityTaskWoken != pdFALSE ) + * { + * // Call the interrupt safe yield function here (actual function + * // depends on the FreeRTOS port being used). + * } + * } + * @endverbatim + */ +#define xTimerResetFromISR( xTimer, pxHigherPriorityTaskWoken ) xTimerGenericCommand( ( xTimer ), tmrCOMMAND_RESET_FROM_ISR, ( xTaskGetTickCountFromISR() ), ( pxHigherPriorityTaskWoken ), 0U ) + + +/** + * BaseType_t xTimerPendFunctionCallFromISR( PendedFunction_t xFunctionToPend, + * void *pvParameter1, + * uint32_t ulParameter2, + * BaseType_t *pxHigherPriorityTaskWoken ); + * + * + * Used from application interrupt service routines to defer the execution of a + * function to the RTOS daemon task (the timer service task, hence this function + * is implemented in timers.c and is prefixed with 'Timer'). + * + * Ideally an interrupt service routine (ISR) is kept as short as possible, but + * sometimes an ISR either has a lot of processing to do, or needs to perform + * processing that is not deterministic. In these cases + * xTimerPendFunctionCallFromISR() can be used to defer processing of a function + * to the RTOS daemon task. + * + * A mechanism is provided that allows the interrupt to return directly to the + * task that will subsequently execute the pended callback function. This + * allows the callback function to execute contiguously in time with the + * interrupt - just as if the callback had executed in the interrupt itself. + * + * @param xFunctionToPend The function to execute from the timer service/ + * daemon task. The function must conform to the PendedFunction_t + * prototype. + * + * @param pvParameter1 The value of the callback function's first parameter. + * The parameter has a void * type to allow it to be used to pass any type. + * For example, unsigned longs can be cast to a void *, or the void * can be + * used to point to a structure. + * + * @param ulParameter2 The value of the callback function's second parameter. + * + * @param pxHigherPriorityTaskWoken As mentioned above, calling this function + * will result in a message being sent to the timer daemon task. If the + * priority of the timer daemon task (which is set using + * configTIMER_TASK_PRIORITY in FreeRTOSConfig.h) is higher than the priority of + * the currently running task (the task the interrupt interrupted) then + * *pxHigherPriorityTaskWoken will be set to pdTRUE within + * xTimerPendFunctionCallFromISR(), indicating that a context switch should be + * requested before the interrupt exits. For that reason + * *pxHigherPriorityTaskWoken must be initialised to pdFALSE. See the + * example code below. + * + * @return pdPASS is returned if the message was successfully sent to the + * timer daemon task, otherwise pdFALSE is returned. + * + * Example usage: + * @verbatim + * + * // The callback function that will execute in the context of the daemon task. + * // Note callback functions must all use this same prototype. + * void vProcessInterface( void *pvParameter1, uint32_t ulParameter2 ) + * { + * BaseType_t xInterfaceToService; + * + * // The interface that requires servicing is passed in the second + * // parameter. The first parameter is not used in this case. + * xInterfaceToService = ( BaseType_t ) ulParameter2; + * + * // ...Perform the processing here... + * } + * + * // An ISR that receives data packets from multiple interfaces + * void vAnISR( void ) + * { + * BaseType_t xInterfaceToService, xHigherPriorityTaskWoken; + * + * // Query the hardware to determine which interface needs processing. + * xInterfaceToService = prvCheckInterfaces(); + * + * // The actual processing is to be deferred to a task. Request the + * // vProcessInterface() callback function is executed, passing in the + * // number of the interface that needs processing. The interface to + * // service is passed in the second parameter. The first parameter is + * // not used in this case. + * xHigherPriorityTaskWoken = pdFALSE; + * xTimerPendFunctionCallFromISR( vProcessInterface, NULL, ( uint32_t ) xInterfaceToService, &xHigherPriorityTaskWoken ); + * + * // If xHigherPriorityTaskWoken is now set to pdTRUE then a context + * // switch should be requested. The macro used is port specific and will + * // be either portYIELD_FROM_ISR() or portEND_SWITCHING_ISR() - refer to + * // the documentation page for the port being used. + * portYIELD_FROM_ISR( xHigherPriorityTaskWoken ); + * + * } + * @endverbatim + */ +BaseType_t xTimerPendFunctionCallFromISR( PendedFunction_t xFunctionToPend, void *pvParameter1, uint32_t ulParameter2, BaseType_t *pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION; + + /** + * BaseType_t xTimerPendFunctionCall( PendedFunction_t xFunctionToPend, + * void *pvParameter1, + * uint32_t ulParameter2, + * TickType_t xTicksToWait ); + * + * + * Used to defer the execution of a function to the RTOS daemon task (the timer + * service task, hence this function is implemented in timers.c and is prefixed + * with 'Timer'). + * + * @param xFunctionToPend The function to execute from the timer service/ + * daemon task. The function must conform to the PendedFunction_t + * prototype. + * + * @param pvParameter1 The value of the callback function's first parameter. + * The parameter has a void * type to allow it to be used to pass any type. + * For example, unsigned longs can be cast to a void *, or the void * can be + * used to point to a structure. + * + * @param ulParameter2 The value of the callback function's second parameter. + * + * @param xTicksToWait Calling this function will result in a message being + * sent to the timer daemon task on a queue. xTicksToWait is the amount of + * time the calling task should remain in the Blocked state (so not using any + * processing time) for space to become available on the timer queue if the + * queue is found to be full. + * + * @return pdPASS is returned if the message was successfully sent to the + * timer daemon task, otherwise pdFALSE is returned. + * + */ +BaseType_t xTimerPendFunctionCall( PendedFunction_t xFunctionToPend, void *pvParameter1, uint32_t ulParameter2, TickType_t xTicksToWait ) PRIVILEGED_FUNCTION; + +/** + * const char * const pcTimerGetName( TimerHandle_t xTimer ); + * + * Returns the name that was assigned to a timer when the timer was created. + * + * @param xTimer The handle of the timer being queried. + * + * @return The name assigned to the timer specified by the xTimer parameter. + */ +const char * pcTimerGetName( TimerHandle_t xTimer ) PRIVILEGED_FUNCTION; /*lint !e971 Unqualified char types are allowed for strings and single characters only. */ + +/** + * void vTimerSetReloadMode( TimerHandle_t xTimer, const UBaseType_t uxAutoReload ); + * + * Updates a timer to be either an auto-reload timer, in which case the timer + * automatically resets itself each time it expires, or a one-shot timer, in + * which case the timer will only expire once unless it is manually restarted. + * + * @param xTimer The handle of the timer being updated. + * + * @param uxAutoReload If uxAutoReload is set to pdTRUE then the timer will + * expire repeatedly with a frequency set by the timer's period (see the + * xTimerPeriodInTicks parameter of the xTimerCreate() API function). If + * uxAutoReload is set to pdFALSE then the timer will be a one-shot timer and + * enter the dormant state after it expires. + */ +void vTimerSetReloadMode( TimerHandle_t xTimer, const UBaseType_t uxAutoReload ) PRIVILEGED_FUNCTION; + +/** +* UBaseType_t uxTimerGetReloadMode( TimerHandle_t xTimer ); +* +* Queries a timer to determine if it is an auto-reload timer, in which case the timer +* automatically resets itself each time it expires, or a one-shot timer, in +* which case the timer will only expire once unless it is manually restarted. +* +* @param xTimer The handle of the timer being queried. +* +* @return If the timer is an auto-reload timer then pdTRUE is returned, otherwise +* pdFALSE is returned. +*/ +UBaseType_t uxTimerGetReloadMode( TimerHandle_t xTimer ) PRIVILEGED_FUNCTION; + +/** + * TickType_t xTimerGetPeriod( TimerHandle_t xTimer ); + * + * Returns the period of a timer. + * + * @param xTimer The handle of the timer being queried. + * + * @return The period of the timer in ticks. + */ +TickType_t xTimerGetPeriod( TimerHandle_t xTimer ) PRIVILEGED_FUNCTION; + +/** +* TickType_t xTimerGetExpiryTime( TimerHandle_t xTimer ); +* +* Returns the time in ticks at which the timer will expire. If this is less +* than the current tick count then the expiry time has overflowed from the +* current time. +* +* @param xTimer The handle of the timer being queried. +* +* @return If the timer is running then the time in ticks at which the timer +* will next expire is returned. If the timer is not running then the return +* value is undefined. +*/ +TickType_t xTimerGetExpiryTime( TimerHandle_t xTimer ) PRIVILEGED_FUNCTION; + +/* + * Functions beyond this part are not part of the public API and are intended + * for use by the kernel only. + */ +BaseType_t xTimerCreateTimerTask( void ) PRIVILEGED_FUNCTION; +BaseType_t xTimerGenericCommand( TimerHandle_t xTimer, const BaseType_t xCommandID, const TickType_t xOptionalValue, BaseType_t * const pxHigherPriorityTaskWoken, const TickType_t xTicksToWait ) PRIVILEGED_FUNCTION; + +#if( configUSE_TRACE_FACILITY == 1 ) + void vTimerSetTimerNumber( TimerHandle_t xTimer, UBaseType_t uxTimerNumber ) PRIVILEGED_FUNCTION; + UBaseType_t uxTimerGetTimerNumber( TimerHandle_t xTimer ) PRIVILEGED_FUNCTION; +#endif + +#ifdef __cplusplus +} +#endif +#endif /* TIMERS_H */ + + + diff --git a/firmware/Middlewares/Third_Party/FreeRTOS/Source/list.c b/firmware/Middlewares/Third_Party/FreeRTOS/Source/list.c new file mode 100644 index 0000000..7618ee8 --- /dev/null +++ b/firmware/Middlewares/Third_Party/FreeRTOS/Source/list.c @@ -0,0 +1,198 @@ +/* + * FreeRTOS Kernel V10.3.1 + * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * http://www.FreeRTOS.org + * http://aws.amazon.com/freertos + * + * 1 tab == 4 spaces! + */ + + +#include +#include "FreeRTOS.h" +#include "list.h" + +/*----------------------------------------------------------- + * PUBLIC LIST API documented in list.h + *----------------------------------------------------------*/ + +void vListInitialise( List_t * const pxList ) +{ + /* The list structure contains a list item which is used to mark the + end of the list. To initialise the list the list end is inserted + as the only list entry. */ + pxList->pxIndex = ( ListItem_t * ) &( pxList->xListEnd ); /*lint !e826 !e740 !e9087 The mini list structure is used as the list end to save RAM. This is checked and valid. */ + + /* The list end value is the highest possible value in the list to + ensure it remains at the end of the list. */ + pxList->xListEnd.xItemValue = portMAX_DELAY; + + /* The list end next and previous pointers point to itself so we know + when the list is empty. */ + pxList->xListEnd.pxNext = ( ListItem_t * ) &( pxList->xListEnd ); /*lint !e826 !e740 !e9087 The mini list structure is used as the list end to save RAM. This is checked and valid. */ + pxList->xListEnd.pxPrevious = ( ListItem_t * ) &( pxList->xListEnd );/*lint !e826 !e740 !e9087 The mini list structure is used as the list end to save RAM. This is checked and valid. */ + + pxList->uxNumberOfItems = ( UBaseType_t ) 0U; + + /* Write known values into the list if + configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES is set to 1. */ + listSET_LIST_INTEGRITY_CHECK_1_VALUE( pxList ); + listSET_LIST_INTEGRITY_CHECK_2_VALUE( pxList ); +} +/*-----------------------------------------------------------*/ + +void vListInitialiseItem( ListItem_t * const pxItem ) +{ + /* Make sure the list item is not recorded as being on a list. */ + pxItem->pxContainer = NULL; + + /* Write known values into the list item if + configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES is set to 1. */ + listSET_FIRST_LIST_ITEM_INTEGRITY_CHECK_VALUE( pxItem ); + listSET_SECOND_LIST_ITEM_INTEGRITY_CHECK_VALUE( pxItem ); +} +/*-----------------------------------------------------------*/ + +void vListInsertEnd( List_t * const pxList, ListItem_t * const pxNewListItem ) +{ +ListItem_t * const pxIndex = pxList->pxIndex; + + /* Only effective when configASSERT() is also defined, these tests may catch + the list data structures being overwritten in memory. They will not catch + data errors caused by incorrect configuration or use of FreeRTOS. */ + listTEST_LIST_INTEGRITY( pxList ); + listTEST_LIST_ITEM_INTEGRITY( pxNewListItem ); + + /* Insert a new list item into pxList, but rather than sort the list, + makes the new list item the last item to be removed by a call to + listGET_OWNER_OF_NEXT_ENTRY(). */ + pxNewListItem->pxNext = pxIndex; + pxNewListItem->pxPrevious = pxIndex->pxPrevious; + + /* Only used during decision coverage testing. */ + mtCOVERAGE_TEST_DELAY(); + + pxIndex->pxPrevious->pxNext = pxNewListItem; + pxIndex->pxPrevious = pxNewListItem; + + /* Remember which list the item is in. */ + pxNewListItem->pxContainer = pxList; + + ( pxList->uxNumberOfItems )++; +} +/*-----------------------------------------------------------*/ + +void vListInsert( List_t * const pxList, ListItem_t * const pxNewListItem ) +{ +ListItem_t *pxIterator; +const TickType_t xValueOfInsertion = pxNewListItem->xItemValue; + + /* Only effective when configASSERT() is also defined, these tests may catch + the list data structures being overwritten in memory. They will not catch + data errors caused by incorrect configuration or use of FreeRTOS. */ + listTEST_LIST_INTEGRITY( pxList ); + listTEST_LIST_ITEM_INTEGRITY( pxNewListItem ); + + /* Insert the new list item into the list, sorted in xItemValue order. + + If the list already contains a list item with the same item value then the + new list item should be placed after it. This ensures that TCBs which are + stored in ready lists (all of which have the same xItemValue value) get a + share of the CPU. However, if the xItemValue is the same as the back marker + the iteration loop below will not end. Therefore the value is checked + first, and the algorithm slightly modified if necessary. */ + if( xValueOfInsertion == portMAX_DELAY ) + { + pxIterator = pxList->xListEnd.pxPrevious; + } + else + { + /* *** NOTE *********************************************************** + If you find your application is crashing here then likely causes are + listed below. In addition see https://www.freertos.org/FAQHelp.html for + more tips, and ensure configASSERT() is defined! + https://www.freertos.org/a00110.html#configASSERT + + 1) Stack overflow - + see https://www.freertos.org/Stacks-and-stack-overflow-checking.html + 2) Incorrect interrupt priority assignment, especially on Cortex-M + parts where numerically high priority values denote low actual + interrupt priorities, which can seem counter intuitive. See + https://www.freertos.org/RTOS-Cortex-M3-M4.html and the definition + of configMAX_SYSCALL_INTERRUPT_PRIORITY on + https://www.freertos.org/a00110.html + 3) Calling an API function from within a critical section or when + the scheduler is suspended, or calling an API function that does + not end in "FromISR" from an interrupt. + 4) Using a queue or semaphore before it has been initialised or + before the scheduler has been started (are interrupts firing + before vTaskStartScheduler() has been called?). + **********************************************************************/ + + for( pxIterator = ( ListItem_t * ) &( pxList->xListEnd ); pxIterator->pxNext->xItemValue <= xValueOfInsertion; pxIterator = pxIterator->pxNext ) /*lint !e826 !e740 !e9087 The mini list structure is used as the list end to save RAM. This is checked and valid. *//*lint !e440 The iterator moves to a different value, not xValueOfInsertion. */ + { + /* There is nothing to do here, just iterating to the wanted + insertion position. */ + } + } + + pxNewListItem->pxNext = pxIterator->pxNext; + pxNewListItem->pxNext->pxPrevious = pxNewListItem; + pxNewListItem->pxPrevious = pxIterator; + pxIterator->pxNext = pxNewListItem; + + /* Remember which list the item is in. This allows fast removal of the + item later. */ + pxNewListItem->pxContainer = pxList; + + ( pxList->uxNumberOfItems )++; +} +/*-----------------------------------------------------------*/ + +UBaseType_t uxListRemove( ListItem_t * const pxItemToRemove ) +{ +/* The list item knows which list it is in. Obtain the list from the list +item. */ +List_t * const pxList = pxItemToRemove->pxContainer; + + pxItemToRemove->pxNext->pxPrevious = pxItemToRemove->pxPrevious; + pxItemToRemove->pxPrevious->pxNext = pxItemToRemove->pxNext; + + /* Only used during decision coverage testing. */ + mtCOVERAGE_TEST_DELAY(); + + /* Make sure the index is left pointing to a valid item. */ + if( pxList->pxIndex == pxItemToRemove ) + { + pxList->pxIndex = pxItemToRemove->pxPrevious; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + pxItemToRemove->pxContainer = NULL; + ( pxList->uxNumberOfItems )--; + + return pxList->uxNumberOfItems; +} +/*-----------------------------------------------------------*/ + diff --git a/firmware/Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM0/port.c b/firmware/Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM0/port.c new file mode 100644 index 0000000..fea473e --- /dev/null +++ b/firmware/Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM0/port.c @@ -0,0 +1,560 @@ +/* + * FreeRTOS Kernel V10.3.1 + * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * http://www.FreeRTOS.org + * http://aws.amazon.com/freertos + * + * 1 tab == 4 spaces! + */ + +/*----------------------------------------------------------- + * Implementation of functions defined in portable.h for the ARM CM0 port. + *----------------------------------------------------------*/ + +/* Scheduler includes. */ +#include "FreeRTOS.h" +#include "task.h" + +/* Constants required to manipulate the NVIC. */ +#define portNVIC_SYSTICK_CTRL_REG ( * ( ( volatile uint32_t * ) 0xe000e010 ) ) +#define portNVIC_SYSTICK_LOAD_REG ( * ( ( volatile uint32_t * ) 0xe000e014 ) ) +#define portNVIC_SYSTICK_CURRENT_VALUE_REG ( * ( ( volatile uint32_t * ) 0xe000e018 ) ) +#define portNVIC_INT_CTRL_REG ( * ( ( volatile uint32_t * ) 0xe000ed04 ) ) +#define portNVIC_SYSPRI2_REG ( * ( ( volatile uint32_t * ) 0xe000ed20 ) ) +#define portNVIC_SYSTICK_CLK_BIT ( 1UL << 2UL ) +#define portNVIC_SYSTICK_INT_BIT ( 1UL << 1UL ) +#define portNVIC_SYSTICK_ENABLE_BIT ( 1UL << 0UL ) +#define portNVIC_SYSTICK_COUNT_FLAG_BIT ( 1UL << 16UL ) +#define portNVIC_PENDSVSET_BIT ( 1UL << 28UL ) +#define portMIN_INTERRUPT_PRIORITY ( 255UL ) +#define portNVIC_PENDSV_PRI ( portMIN_INTERRUPT_PRIORITY << 16UL ) +#define portNVIC_SYSTICK_PRI ( portMIN_INTERRUPT_PRIORITY << 24UL ) + +/* Constants required to set up the initial stack. */ +#define portINITIAL_XPSR ( 0x01000000 ) + +/* The systick is a 24-bit counter. */ +#define portMAX_24_BIT_NUMBER ( 0xffffffUL ) + +/* A fiddle factor to estimate the number of SysTick counts that would have +occurred while the SysTick counter is stopped during tickless idle +calculations. */ +#ifndef portMISSED_COUNTS_FACTOR + #define portMISSED_COUNTS_FACTOR ( 45UL ) +#endif + +/* Let the user override the pre-loading of the initial LR with the address of +prvTaskExitError() in case it messes up unwinding of the stack in the +debugger. */ +#ifdef configTASK_RETURN_ADDRESS + #define portTASK_RETURN_ADDRESS configTASK_RETURN_ADDRESS +#else + #define portTASK_RETURN_ADDRESS prvTaskExitError +#endif + +/* + * Setup the timer to generate the tick interrupts. The implementation in this + * file is weak to allow application writers to change the timer used to + * generate the tick interrupt. + */ +void vPortSetupTimerInterrupt( void ); + +/* + * Exception handlers. + */ +void xPortPendSVHandler( void ) __attribute__ (( naked )); +void xPortSysTickHandler( void ); +void vPortSVCHandler( void ); + +/* + * Start first task is a separate function so it can be tested in isolation. + */ +static void vPortStartFirstTask( void ) __attribute__ (( naked )); + +/* + * Used to catch tasks that attempt to return from their implementing function. + */ +static void prvTaskExitError( void ); + +/*-----------------------------------------------------------*/ + +/* Each task maintains its own interrupt status in the critical nesting +variable. */ +static UBaseType_t uxCriticalNesting = 0xaaaaaaaa; + +/*-----------------------------------------------------------*/ + +/* +* The number of SysTick increments that make up one tick period. +*/ +#if( configUSE_TICKLESS_IDLE == 1 ) + static uint32_t ulTimerCountsForOneTick = 0; +#endif /* configUSE_TICKLESS_IDLE */ + +/* + * The maximum number of tick periods that can be suppressed is limited by the + * 24 bit resolution of the SysTick timer. + */ +#if( configUSE_TICKLESS_IDLE == 1 ) + static uint32_t xMaximumPossibleSuppressedTicks = 0; +#endif /* configUSE_TICKLESS_IDLE */ + +/* + * Compensate for the CPU cycles that pass while the SysTick is stopped (low + * power functionality only. + */ +#if( configUSE_TICKLESS_IDLE == 1 ) + static uint32_t ulStoppedTimerCompensation = 0; +#endif /* configUSE_TICKLESS_IDLE */ + +/*-----------------------------------------------------------*/ + +/* + * See header file for description. + */ +StackType_t *pxPortInitialiseStack( StackType_t *pxTopOfStack, TaskFunction_t pxCode, void *pvParameters ) +{ + /* Simulate the stack frame as it would be created by a context switch + interrupt. */ + pxTopOfStack--; /* Offset added to account for the way the MCU uses the stack on entry/exit of interrupts. */ + *pxTopOfStack = portINITIAL_XPSR; /* xPSR */ + pxTopOfStack--; + *pxTopOfStack = ( StackType_t ) pxCode; /* PC */ + pxTopOfStack--; + *pxTopOfStack = ( StackType_t ) portTASK_RETURN_ADDRESS; /* LR */ + pxTopOfStack -= 5; /* R12, R3, R2 and R1. */ + *pxTopOfStack = ( StackType_t ) pvParameters; /* R0 */ + pxTopOfStack -= 8; /* R11..R4. */ + + return pxTopOfStack; +} +/*-----------------------------------------------------------*/ + +static void prvTaskExitError( void ) +{ +volatile uint32_t ulDummy = 0UL; + + /* A function that implements a task must not exit or attempt to return to + its caller as there is nothing to return to. If a task wants to exit it + should instead call vTaskDelete( NULL ). + + Artificially force an assert() to be triggered if configASSERT() is + defined, then stop here so application writers can catch the error. */ + configASSERT( uxCriticalNesting == ~0UL ); + portDISABLE_INTERRUPTS(); + while( ulDummy == 0 ) + { + /* This file calls prvTaskExitError() after the scheduler has been + started to remove a compiler warning about the function being defined + but never called. ulDummy is used purely to quieten other warnings + about code appearing after this function is called - making ulDummy + volatile makes the compiler think the function could return and + therefore not output an 'unreachable code' warning for code that appears + after it. */ + } +} +/*-----------------------------------------------------------*/ + +void vPortSVCHandler( void ) +{ + /* This function is no longer used, but retained for backward + compatibility. */ +} +/*-----------------------------------------------------------*/ + +void vPortStartFirstTask( void ) +{ + /* The MSP stack is not reset as, unlike on M3/4 parts, there is no vector + table offset register that can be used to locate the initial stack value. + Not all M0 parts have the application vector table at address 0. */ + __asm volatile( + " .syntax unified \n" + " ldr r2, pxCurrentTCBConst2 \n" /* Obtain location of pxCurrentTCB. */ + " ldr r3, [r2] \n" + " ldr r0, [r3] \n" /* The first item in pxCurrentTCB is the task top of stack. */ + " adds r0, #32 \n" /* Discard everything up to r0. */ + " msr psp, r0 \n" /* This is now the new top of stack to use in the task. */ + " movs r0, #2 \n" /* Switch to the psp stack. */ + " msr CONTROL, r0 \n" + " isb \n" + " pop {r0-r5} \n" /* Pop the registers that are saved automatically. */ + " mov lr, r5 \n" /* lr is now in r5. */ + " pop {r3} \n" /* Return address is now in r3. */ + " pop {r2} \n" /* Pop and discard XPSR. */ + " cpsie i \n" /* The first task has its context and interrupts can be enabled. */ + " bx r3 \n" /* Finally, jump to the user defined task code. */ + " \n" + " .align 4 \n" + "pxCurrentTCBConst2: .word pxCurrentTCB " + ); +} +/*-----------------------------------------------------------*/ + +/* + * See header file for description. + */ +BaseType_t xPortStartScheduler( void ) +{ + /* Make PendSV, CallSV and SysTick the same priority as the kernel. */ + portNVIC_SYSPRI2_REG |= portNVIC_PENDSV_PRI; + portNVIC_SYSPRI2_REG |= portNVIC_SYSTICK_PRI; + + /* Start the timer that generates the tick ISR. Interrupts are disabled + here already. */ + vPortSetupTimerInterrupt(); + + /* Initialise the critical nesting count ready for the first task. */ + uxCriticalNesting = 0; + + /* Start the first task. */ + vPortStartFirstTask(); + + /* Should never get here as the tasks will now be executing! Call the task + exit error function to prevent compiler warnings about a static function + not being called in the case that the application writer overrides this + functionality by defining configTASK_RETURN_ADDRESS. Call + vTaskSwitchContext() so link time optimisation does not remove the + symbol. */ + vTaskSwitchContext(); + prvTaskExitError(); + + /* Should not get here! */ + return 0; +} +/*-----------------------------------------------------------*/ + +void vPortEndScheduler( void ) +{ + /* Not implemented in ports where there is nothing to return to. + Artificially force an assert. */ + configASSERT( uxCriticalNesting == 1000UL ); +} +/*-----------------------------------------------------------*/ + +void vPortYield( void ) +{ + /* Set a PendSV to request a context switch. */ + portNVIC_INT_CTRL_REG = portNVIC_PENDSVSET_BIT; + + /* Barriers are normally not required but do ensure the code is completely + within the specified behaviour for the architecture. */ + __asm volatile( "dsb" ::: "memory" ); + __asm volatile( "isb" ); +} +/*-----------------------------------------------------------*/ + +void vPortEnterCritical( void ) +{ + portDISABLE_INTERRUPTS(); + uxCriticalNesting++; + __asm volatile( "dsb" ::: "memory" ); + __asm volatile( "isb" ); +} +/*-----------------------------------------------------------*/ + +void vPortExitCritical( void ) +{ + configASSERT( uxCriticalNesting ); + uxCriticalNesting--; + if( uxCriticalNesting == 0 ) + { + portENABLE_INTERRUPTS(); + } +} +/*-----------------------------------------------------------*/ + +uint32_t ulSetInterruptMaskFromISR( void ) +{ + __asm volatile( + " mrs r0, PRIMASK \n" + " cpsid i \n" + " bx lr " + ::: "memory" + ); +} +/*-----------------------------------------------------------*/ + +void vClearInterruptMaskFromISR( __attribute__( ( unused ) ) uint32_t ulMask ) +{ + __asm volatile( + " msr PRIMASK, r0 \n" + " bx lr " + ::: "memory" + ); +} +/*-----------------------------------------------------------*/ + +void xPortPendSVHandler( void ) +{ + /* This is a naked function. */ + + __asm volatile + ( + " .syntax unified \n" + " mrs r0, psp \n" + " \n" + " ldr r3, pxCurrentTCBConst \n" /* Get the location of the current TCB. */ + " ldr r2, [r3] \n" + " \n" + " subs r0, r0, #32 \n" /* Make space for the remaining low registers. */ + " str r0, [r2] \n" /* Save the new top of stack. */ + " stmia r0!, {r4-r7} \n" /* Store the low registers that are not saved automatically. */ + " mov r4, r8 \n" /* Store the high registers. */ + " mov r5, r9 \n" + " mov r6, r10 \n" + " mov r7, r11 \n" + " stmia r0!, {r4-r7} \n" + " \n" + " push {r3, r14} \n" + " cpsid i \n" + " bl vTaskSwitchContext \n" + " cpsie i \n" + " pop {r2, r3} \n" /* lr goes in r3. r2 now holds tcb pointer. */ + " \n" + " ldr r1, [r2] \n" + " ldr r0, [r1] \n" /* The first item in pxCurrentTCB is the task top of stack. */ + " adds r0, r0, #16 \n" /* Move to the high registers. */ + " ldmia r0!, {r4-r7} \n" /* Pop the high registers. */ + " mov r8, r4 \n" + " mov r9, r5 \n" + " mov r10, r6 \n" + " mov r11, r7 \n" + " \n" + " msr psp, r0 \n" /* Remember the new top of stack for the task. */ + " \n" + " subs r0, r0, #32 \n" /* Go back for the low registers that are not automatically restored. */ + " ldmia r0!, {r4-r7} \n" /* Pop low registers. */ + " \n" + " bx r3 \n" + " \n" + " .align 4 \n" + "pxCurrentTCBConst: .word pxCurrentTCB " + ); +} +/*-----------------------------------------------------------*/ + +void xPortSysTickHandler( void ) +{ +uint32_t ulPreviousMask; + + ulPreviousMask = portSET_INTERRUPT_MASK_FROM_ISR(); + { + /* Increment the RTOS tick. */ + if( xTaskIncrementTick() != pdFALSE ) + { + /* Pend a context switch. */ + portNVIC_INT_CTRL_REG = portNVIC_PENDSVSET_BIT; + } + } + portCLEAR_INTERRUPT_MASK_FROM_ISR( ulPreviousMask ); +} +/*-----------------------------------------------------------*/ + +/* + * Setup the systick timer to generate the tick interrupts at the required + * frequency. + */ +__attribute__(( weak )) void vPortSetupTimerInterrupt( void ) +{ + /* Calculate the constants required to configure the tick interrupt. */ + #if( configUSE_TICKLESS_IDLE == 1 ) + { + ulTimerCountsForOneTick = ( configCPU_CLOCK_HZ / configTICK_RATE_HZ ); + xMaximumPossibleSuppressedTicks = portMAX_24_BIT_NUMBER / ulTimerCountsForOneTick; + ulStoppedTimerCompensation = portMISSED_COUNTS_FACTOR; + } + #endif /* configUSE_TICKLESS_IDLE */ + + /* Stop and reset the SysTick. */ + portNVIC_SYSTICK_CTRL_REG = 0UL; + portNVIC_SYSTICK_CURRENT_VALUE_REG = 0UL; + + /* Configure SysTick to interrupt at the requested rate. */ + portNVIC_SYSTICK_LOAD_REG = ( configCPU_CLOCK_HZ / configTICK_RATE_HZ ) - 1UL; + portNVIC_SYSTICK_CTRL_REG = portNVIC_SYSTICK_CLK_BIT | portNVIC_SYSTICK_INT_BIT | portNVIC_SYSTICK_ENABLE_BIT; +} +/*-----------------------------------------------------------*/ + +#if( configUSE_TICKLESS_IDLE == 1 ) + + __attribute__((weak)) void vPortSuppressTicksAndSleep( TickType_t xExpectedIdleTime ) + { + uint32_t ulReloadValue, ulCompleteTickPeriods, ulCompletedSysTickDecrements; + TickType_t xModifiableIdleTime; + + /* Make sure the SysTick reload value does not overflow the counter. */ + if( xExpectedIdleTime > xMaximumPossibleSuppressedTicks ) + { + xExpectedIdleTime = xMaximumPossibleSuppressedTicks; + } + + /* Stop the SysTick momentarily. The time the SysTick is stopped for + is accounted for as best it can be, but using the tickless mode will + inevitably result in some tiny drift of the time maintained by the + kernel with respect to calendar time. */ + portNVIC_SYSTICK_CTRL_REG &= ~portNVIC_SYSTICK_ENABLE_BIT; + + /* Calculate the reload value required to wait xExpectedIdleTime + tick periods. -1 is used because this code will execute part way + through one of the tick periods. */ + ulReloadValue = portNVIC_SYSTICK_CURRENT_VALUE_REG + ( ulTimerCountsForOneTick * ( xExpectedIdleTime - 1UL ) ); + if( ulReloadValue > ulStoppedTimerCompensation ) + { + ulReloadValue -= ulStoppedTimerCompensation; + } + + /* Enter a critical section but don't use the taskENTER_CRITICAL() + method as that will mask interrupts that should exit sleep mode. */ + __asm volatile( "cpsid i" ::: "memory" ); + __asm volatile( "dsb" ); + __asm volatile( "isb" ); + + /* If a context switch is pending or a task is waiting for the scheduler + to be unsuspended then abandon the low power entry. */ + if( eTaskConfirmSleepModeStatus() == eAbortSleep ) + { + /* Restart from whatever is left in the count register to complete + this tick period. */ + portNVIC_SYSTICK_LOAD_REG = portNVIC_SYSTICK_CURRENT_VALUE_REG; + + /* Restart SysTick. */ + portNVIC_SYSTICK_CTRL_REG |= portNVIC_SYSTICK_ENABLE_BIT; + + /* Reset the reload register to the value required for normal tick + periods. */ + portNVIC_SYSTICK_LOAD_REG = ulTimerCountsForOneTick - 1UL; + + /* Re-enable interrupts - see comments above the cpsid instruction() + above. */ + __asm volatile( "cpsie i" ::: "memory" ); + } + else + { + /* Set the new reload value. */ + portNVIC_SYSTICK_LOAD_REG = ulReloadValue; + + /* Clear the SysTick count flag and set the count value back to + zero. */ + portNVIC_SYSTICK_CURRENT_VALUE_REG = 0UL; + + /* Restart SysTick. */ + portNVIC_SYSTICK_CTRL_REG |= portNVIC_SYSTICK_ENABLE_BIT; + + /* Sleep until something happens. configPRE_SLEEP_PROCESSING() can + set its parameter to 0 to indicate that its implementation contains + its own wait for interrupt or wait for event instruction, and so wfi + should not be executed again. However, the original expected idle + time variable must remain unmodified, so a copy is taken. */ + xModifiableIdleTime = xExpectedIdleTime; + configPRE_SLEEP_PROCESSING( xModifiableIdleTime ); + if( xModifiableIdleTime > 0 ) + { + __asm volatile( "dsb" ::: "memory" ); + __asm volatile( "wfi" ); + __asm volatile( "isb" ); + } + configPOST_SLEEP_PROCESSING( xExpectedIdleTime ); + + /* Re-enable interrupts to allow the interrupt that brought the MCU + out of sleep mode to execute immediately. see comments above + __disable_interrupt() call above. */ + __asm volatile( "cpsie i" ::: "memory" ); + __asm volatile( "dsb" ); + __asm volatile( "isb" ); + + /* Disable interrupts again because the clock is about to be stopped + and interrupts that execute while the clock is stopped will increase + any slippage between the time maintained by the RTOS and calendar + time. */ + __asm volatile( "cpsid i" ::: "memory" ); + __asm volatile( "dsb" ); + __asm volatile( "isb" ); + + /* Disable the SysTick clock without reading the + portNVIC_SYSTICK_CTRL_REG register to ensure the + portNVIC_SYSTICK_COUNT_FLAG_BIT is not cleared if it is set. Again, + the time the SysTick is stopped for is accounted for as best it can + be, but using the tickless mode will inevitably result in some tiny + drift of the time maintained by the kernel with respect to calendar + time*/ + portNVIC_SYSTICK_CTRL_REG = ( portNVIC_SYSTICK_CLK_BIT | portNVIC_SYSTICK_INT_BIT ); + + /* Determine if the SysTick clock has already counted to zero and + been set back to the current reload value (the reload back being + correct for the entire expected idle time) or if the SysTick is yet + to count to zero (in which case an interrupt other than the SysTick + must have brought the system out of sleep mode). */ + if( ( portNVIC_SYSTICK_CTRL_REG & portNVIC_SYSTICK_COUNT_FLAG_BIT ) != 0 ) + { + uint32_t ulCalculatedLoadValue; + + /* The tick interrupt is already pending, and the SysTick count + reloaded with ulReloadValue. Reset the + portNVIC_SYSTICK_LOAD_REG with whatever remains of this tick + period. */ + ulCalculatedLoadValue = ( ulTimerCountsForOneTick - 1UL ) - ( ulReloadValue - portNVIC_SYSTICK_CURRENT_VALUE_REG ); + + /* Don't allow a tiny value, or values that have somehow + underflowed because the post sleep hook did something + that took too long. */ + if( ( ulCalculatedLoadValue < ulStoppedTimerCompensation ) || ( ulCalculatedLoadValue > ulTimerCountsForOneTick ) ) + { + ulCalculatedLoadValue = ( ulTimerCountsForOneTick - 1UL ); + } + + portNVIC_SYSTICK_LOAD_REG = ulCalculatedLoadValue; + + /* As the pending tick will be processed as soon as this + function exits, the tick value maintained by the tick is stepped + forward by one less than the time spent waiting. */ + ulCompleteTickPeriods = xExpectedIdleTime - 1UL; + } + else + { + /* Something other than the tick interrupt ended the sleep. + Work out how long the sleep lasted rounded to complete tick + periods (not the ulReload value which accounted for part + ticks). */ + ulCompletedSysTickDecrements = ( xExpectedIdleTime * ulTimerCountsForOneTick ) - portNVIC_SYSTICK_CURRENT_VALUE_REG; + + /* How many complete tick periods passed while the processor + was waiting? */ + ulCompleteTickPeriods = ulCompletedSysTickDecrements / ulTimerCountsForOneTick; + + /* The reload value is set to whatever fraction of a single tick + period remains. */ + portNVIC_SYSTICK_LOAD_REG = ( ( ulCompleteTickPeriods + 1UL ) * ulTimerCountsForOneTick ) - ulCompletedSysTickDecrements; + } + + /* Restart SysTick so it runs from portNVIC_SYSTICK_LOAD_REG + again, then set portNVIC_SYSTICK_LOAD_REG back to its standard + value. */ + portNVIC_SYSTICK_CURRENT_VALUE_REG = 0UL; + portNVIC_SYSTICK_CTRL_REG |= portNVIC_SYSTICK_ENABLE_BIT; + vTaskStepTick( ulCompleteTickPeriods ); + portNVIC_SYSTICK_LOAD_REG = ulTimerCountsForOneTick - 1UL; + + /* Exit with interrpts enabled. */ + __asm volatile( "cpsie i" ::: "memory" ); + } + } + +#endif /* configUSE_TICKLESS_IDLE */ diff --git a/firmware/Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM0/portmacro.h b/firmware/Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM0/portmacro.h new file mode 100644 index 0000000..54397af --- /dev/null +++ b/firmware/Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM0/portmacro.h @@ -0,0 +1,124 @@ +/* + * FreeRTOS Kernel V10.3.1 + * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * http://www.FreeRTOS.org + * http://aws.amazon.com/freertos + * + * 1 tab == 4 spaces! + */ + + +#ifndef PORTMACRO_H +#define PORTMACRO_H + +#ifdef __cplusplus +extern "C" { +#endif + +/*----------------------------------------------------------- + * Port specific definitions. + * + * The settings in this file configure FreeRTOS correctly for the + * given hardware and compiler. + * + * These settings should not be altered. + *----------------------------------------------------------- + */ + +/* Type definitions. */ +#define portCHAR char +#define portFLOAT float +#define portDOUBLE double +#define portLONG long +#define portSHORT short +#define portSTACK_TYPE uint32_t +#define portBASE_TYPE long + +typedef portSTACK_TYPE StackType_t; +typedef long BaseType_t; +typedef unsigned long UBaseType_t; + +#if( configUSE_16_BIT_TICKS == 1 ) + typedef uint16_t TickType_t; + #define portMAX_DELAY ( TickType_t ) 0xffff +#else + typedef uint32_t TickType_t; + #define portMAX_DELAY ( TickType_t ) 0xffffffffUL + + /* 32-bit tick type on a 32-bit architecture, so reads of the tick count do + not need to be guarded with a critical section. */ + #define portTICK_TYPE_IS_ATOMIC 1 +#endif +/*-----------------------------------------------------------*/ + +/* Architecture specifics. */ +#define portSTACK_GROWTH ( -1 ) +#define portTICK_PERIOD_MS ( ( TickType_t ) 1000 / configTICK_RATE_HZ ) +#define portBYTE_ALIGNMENT 8 +/*-----------------------------------------------------------*/ + + +/* Scheduler utilities. */ +extern void vPortYield( void ); +#define portNVIC_INT_CTRL_REG ( * ( ( volatile uint32_t * ) 0xe000ed04 ) ) +#define portNVIC_PENDSVSET_BIT ( 1UL << 28UL ) +#define portYIELD() vPortYield() +#define portEND_SWITCHING_ISR( xSwitchRequired ) if( xSwitchRequired ) portNVIC_INT_CTRL_REG = portNVIC_PENDSVSET_BIT +#define portYIELD_FROM_ISR( x ) portEND_SWITCHING_ISR( x ) +/*-----------------------------------------------------------*/ + + +/* Critical section management. */ +extern void vPortEnterCritical( void ); +extern void vPortExitCritical( void ); +extern uint32_t ulSetInterruptMaskFromISR( void ) __attribute__((naked)); +extern void vClearInterruptMaskFromISR( uint32_t ulMask ) __attribute__((naked)); + +#define portSET_INTERRUPT_MASK_FROM_ISR() ulSetInterruptMaskFromISR() +#define portCLEAR_INTERRUPT_MASK_FROM_ISR(x) vClearInterruptMaskFromISR( x ) +#define portDISABLE_INTERRUPTS() __asm volatile ( " cpsid i " ::: "memory" ) +#define portENABLE_INTERRUPTS() __asm volatile ( " cpsie i " ::: "memory" ) +#define portENTER_CRITICAL() vPortEnterCritical() +#define portEXIT_CRITICAL() vPortExitCritical() + +/*-----------------------------------------------------------*/ + +/* Tickless idle/low power functionality. */ +#ifndef portSUPPRESS_TICKS_AND_SLEEP + extern void vPortSuppressTicksAndSleep( TickType_t xExpectedIdleTime ); + #define portSUPPRESS_TICKS_AND_SLEEP( xExpectedIdleTime ) vPortSuppressTicksAndSleep( xExpectedIdleTime ) +#endif +/*-----------------------------------------------------------*/ + +/* Task function macros as described on the FreeRTOS.org WEB site. */ +#define portTASK_FUNCTION_PROTO( vFunction, pvParameters ) void vFunction( void *pvParameters ) +#define portTASK_FUNCTION( vFunction, pvParameters ) void vFunction( void *pvParameters ) + +#define portNOP() + +#define portMEMORY_BARRIER() __asm volatile( "" ::: "memory" ) + +#ifdef __cplusplus +} +#endif + +#endif /* PORTMACRO_H */ + diff --git a/firmware/Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.c b/firmware/Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.c new file mode 100644 index 0000000..eaf443f --- /dev/null +++ b/firmware/Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.c @@ -0,0 +1,492 @@ +/* + * FreeRTOS Kernel V10.3.1 + * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * http://www.FreeRTOS.org + * http://aws.amazon.com/freertos + * + * 1 tab == 4 spaces! + */ + +/* + * A sample implementation of pvPortMalloc() and vPortFree() that combines + * (coalescences) adjacent memory blocks as they are freed, and in so doing + * limits memory fragmentation. + * + * See heap_1.c, heap_2.c and heap_3.c for alternative implementations, and the + * memory management pages of http://www.FreeRTOS.org for more information. + */ +#include + +/* Defining MPU_WRAPPERS_INCLUDED_FROM_API_FILE prevents task.h from redefining +all the API functions to use the MPU wrappers. That should only be done when +task.h is included from an application file. */ +#define MPU_WRAPPERS_INCLUDED_FROM_API_FILE + +#include "FreeRTOS.h" +#include "task.h" + +#undef MPU_WRAPPERS_INCLUDED_FROM_API_FILE + +#if( configSUPPORT_DYNAMIC_ALLOCATION == 0 ) + #error This file must not be used if configSUPPORT_DYNAMIC_ALLOCATION is 0 +#endif + +/* Block sizes must not get too small. */ +#define heapMINIMUM_BLOCK_SIZE ( ( size_t ) ( xHeapStructSize << 1 ) ) + +/* Assumes 8bit bytes! */ +#define heapBITS_PER_BYTE ( ( size_t ) 8 ) + +/* Allocate the memory for the heap. */ +#if( configAPPLICATION_ALLOCATED_HEAP == 1 ) + /* The application writer has already defined the array used for the RTOS + heap - probably so it can be placed in a special segment or address. */ + extern uint8_t ucHeap[ configTOTAL_HEAP_SIZE ]; +#else + static uint8_t ucHeap[ configTOTAL_HEAP_SIZE ]; +#endif /* configAPPLICATION_ALLOCATED_HEAP */ + +/* Define the linked list structure. This is used to link free blocks in order +of their memory address. */ +typedef struct A_BLOCK_LINK +{ + struct A_BLOCK_LINK *pxNextFreeBlock; /*<< The next free block in the list. */ + size_t xBlockSize; /*<< The size of the free block. */ +} BlockLink_t; + +/*-----------------------------------------------------------*/ + +/* + * Inserts a block of memory that is being freed into the correct position in + * the list of free memory blocks. The block being freed will be merged with + * the block in front it and/or the block behind it if the memory blocks are + * adjacent to each other. + */ +static void prvInsertBlockIntoFreeList( BlockLink_t *pxBlockToInsert ); + +/* + * Called automatically to setup the required heap structures the first time + * pvPortMalloc() is called. + */ +static void prvHeapInit( void ); + +/*-----------------------------------------------------------*/ + +/* The size of the structure placed at the beginning of each allocated memory +block must by correctly byte aligned. */ +static const size_t xHeapStructSize = ( sizeof( BlockLink_t ) + ( ( size_t ) ( portBYTE_ALIGNMENT - 1 ) ) ) & ~( ( size_t ) portBYTE_ALIGNMENT_MASK ); + +/* Create a couple of list links to mark the start and end of the list. */ +static BlockLink_t xStart, *pxEnd = NULL; + +/* Keeps track of the number of calls to allocate and free memory as well as the +number of free bytes remaining, but says nothing about fragmentation. */ +static size_t xFreeBytesRemaining = 0U; +static size_t xMinimumEverFreeBytesRemaining = 0U; +static size_t xNumberOfSuccessfulAllocations = 0; +static size_t xNumberOfSuccessfulFrees = 0; + +/* Gets set to the top bit of an size_t type. When this bit in the xBlockSize +member of an BlockLink_t structure is set then the block belongs to the +application. When the bit is free the block is still part of the free heap +space. */ +static size_t xBlockAllocatedBit = 0; + +/*-----------------------------------------------------------*/ + +void *pvPortMalloc( size_t xWantedSize ) +{ +BlockLink_t *pxBlock, *pxPreviousBlock, *pxNewBlockLink; +void *pvReturn = NULL; + + vTaskSuspendAll(); + { + /* If this is the first call to malloc then the heap will require + initialisation to setup the list of free blocks. */ + if( pxEnd == NULL ) + { + prvHeapInit(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + /* Check the requested block size is not so large that the top bit is + set. The top bit of the block size member of the BlockLink_t structure + is used to determine who owns the block - the application or the + kernel, so it must be free. */ + if( ( xWantedSize & xBlockAllocatedBit ) == 0 ) + { + /* The wanted size is increased so it can contain a BlockLink_t + structure in addition to the requested amount of bytes. */ + if( xWantedSize > 0 ) + { + xWantedSize += xHeapStructSize; + + /* Ensure that blocks are always aligned to the required number + of bytes. */ + if( ( xWantedSize & portBYTE_ALIGNMENT_MASK ) != 0x00 ) + { + /* Byte alignment required. */ + xWantedSize += ( portBYTE_ALIGNMENT - ( xWantedSize & portBYTE_ALIGNMENT_MASK ) ); + configASSERT( ( xWantedSize & portBYTE_ALIGNMENT_MASK ) == 0 ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + if( ( xWantedSize > 0 ) && ( xWantedSize <= xFreeBytesRemaining ) ) + { + /* Traverse the list from the start (lowest address) block until + one of adequate size is found. */ + pxPreviousBlock = &xStart; + pxBlock = xStart.pxNextFreeBlock; + while( ( pxBlock->xBlockSize < xWantedSize ) && ( pxBlock->pxNextFreeBlock != NULL ) ) + { + pxPreviousBlock = pxBlock; + pxBlock = pxBlock->pxNextFreeBlock; + } + + /* If the end marker was reached then a block of adequate size + was not found. */ + if( pxBlock != pxEnd ) + { + /* Return the memory space pointed to - jumping over the + BlockLink_t structure at its start. */ + pvReturn = ( void * ) ( ( ( uint8_t * ) pxPreviousBlock->pxNextFreeBlock ) + xHeapStructSize ); + + /* This block is being returned for use so must be taken out + of the list of free blocks. */ + pxPreviousBlock->pxNextFreeBlock = pxBlock->pxNextFreeBlock; + + /* If the block is larger than required it can be split into + two. */ + if( ( pxBlock->xBlockSize - xWantedSize ) > heapMINIMUM_BLOCK_SIZE ) + { + /* This block is to be split into two. Create a new + block following the number of bytes requested. The void + cast is used to prevent byte alignment warnings from the + compiler. */ + pxNewBlockLink = ( void * ) ( ( ( uint8_t * ) pxBlock ) + xWantedSize ); + configASSERT( ( ( ( size_t ) pxNewBlockLink ) & portBYTE_ALIGNMENT_MASK ) == 0 ); + + /* Calculate the sizes of two blocks split from the + single block. */ + pxNewBlockLink->xBlockSize = pxBlock->xBlockSize - xWantedSize; + pxBlock->xBlockSize = xWantedSize; + + /* Insert the new block into the list of free blocks. */ + prvInsertBlockIntoFreeList( pxNewBlockLink ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + xFreeBytesRemaining -= pxBlock->xBlockSize; + + if( xFreeBytesRemaining < xMinimumEverFreeBytesRemaining ) + { + xMinimumEverFreeBytesRemaining = xFreeBytesRemaining; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + /* The block is being returned - it is allocated and owned + by the application and has no "next" block. */ + pxBlock->xBlockSize |= xBlockAllocatedBit; + pxBlock->pxNextFreeBlock = NULL; + xNumberOfSuccessfulAllocations++; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + traceMALLOC( pvReturn, xWantedSize ); + } + ( void ) xTaskResumeAll(); + + #if( configUSE_MALLOC_FAILED_HOOK == 1 ) + { + if( pvReturn == NULL ) + { + extern void vApplicationMallocFailedHook( void ); + vApplicationMallocFailedHook(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + #endif + + configASSERT( ( ( ( size_t ) pvReturn ) & ( size_t ) portBYTE_ALIGNMENT_MASK ) == 0 ); + return pvReturn; +} +/*-----------------------------------------------------------*/ + +void vPortFree( void *pv ) +{ +uint8_t *puc = ( uint8_t * ) pv; +BlockLink_t *pxLink; + + if( pv != NULL ) + { + /* The memory being freed will have an BlockLink_t structure immediately + before it. */ + puc -= xHeapStructSize; + + /* This casting is to keep the compiler from issuing warnings. */ + pxLink = ( void * ) puc; + + /* Check the block is actually allocated. */ + configASSERT( ( pxLink->xBlockSize & xBlockAllocatedBit ) != 0 ); + configASSERT( pxLink->pxNextFreeBlock == NULL ); + + if( ( pxLink->xBlockSize & xBlockAllocatedBit ) != 0 ) + { + if( pxLink->pxNextFreeBlock == NULL ) + { + /* The block is being returned to the heap - it is no longer + allocated. */ + pxLink->xBlockSize &= ~xBlockAllocatedBit; + + vTaskSuspendAll(); + { + /* Add this block to the list of free blocks. */ + xFreeBytesRemaining += pxLink->xBlockSize; + traceFREE( pv, pxLink->xBlockSize ); + prvInsertBlockIntoFreeList( ( ( BlockLink_t * ) pxLink ) ); + xNumberOfSuccessfulFrees++; + } + ( void ) xTaskResumeAll(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } +} +/*-----------------------------------------------------------*/ + +size_t xPortGetFreeHeapSize( void ) +{ + return xFreeBytesRemaining; +} +/*-----------------------------------------------------------*/ + +size_t xPortGetMinimumEverFreeHeapSize( void ) +{ + return xMinimumEverFreeBytesRemaining; +} +/*-----------------------------------------------------------*/ + +void vPortInitialiseBlocks( void ) +{ + /* This just exists to keep the linker quiet. */ +} +/*-----------------------------------------------------------*/ + +static void prvHeapInit( void ) +{ +BlockLink_t *pxFirstFreeBlock; +uint8_t *pucAlignedHeap; +size_t uxAddress; +size_t xTotalHeapSize = configTOTAL_HEAP_SIZE; + + /* Ensure the heap starts on a correctly aligned boundary. */ + uxAddress = ( size_t ) ucHeap; + + if( ( uxAddress & portBYTE_ALIGNMENT_MASK ) != 0 ) + { + uxAddress += ( portBYTE_ALIGNMENT - 1 ); + uxAddress &= ~( ( size_t ) portBYTE_ALIGNMENT_MASK ); + xTotalHeapSize -= uxAddress - ( size_t ) ucHeap; + } + + pucAlignedHeap = ( uint8_t * ) uxAddress; + + /* xStart is used to hold a pointer to the first item in the list of free + blocks. The void cast is used to prevent compiler warnings. */ + xStart.pxNextFreeBlock = ( void * ) pucAlignedHeap; + xStart.xBlockSize = ( size_t ) 0; + + /* pxEnd is used to mark the end of the list of free blocks and is inserted + at the end of the heap space. */ + uxAddress = ( ( size_t ) pucAlignedHeap ) + xTotalHeapSize; + uxAddress -= xHeapStructSize; + uxAddress &= ~( ( size_t ) portBYTE_ALIGNMENT_MASK ); + pxEnd = ( void * ) uxAddress; + pxEnd->xBlockSize = 0; + pxEnd->pxNextFreeBlock = NULL; + + /* To start with there is a single free block that is sized to take up the + entire heap space, minus the space taken by pxEnd. */ + pxFirstFreeBlock = ( void * ) pucAlignedHeap; + pxFirstFreeBlock->xBlockSize = uxAddress - ( size_t ) pxFirstFreeBlock; + pxFirstFreeBlock->pxNextFreeBlock = pxEnd; + + /* Only one block exists - and it covers the entire usable heap space. */ + xMinimumEverFreeBytesRemaining = pxFirstFreeBlock->xBlockSize; + xFreeBytesRemaining = pxFirstFreeBlock->xBlockSize; + + /* Work out the position of the top bit in a size_t variable. */ + xBlockAllocatedBit = ( ( size_t ) 1 ) << ( ( sizeof( size_t ) * heapBITS_PER_BYTE ) - 1 ); +} +/*-----------------------------------------------------------*/ + +static void prvInsertBlockIntoFreeList( BlockLink_t *pxBlockToInsert ) +{ +BlockLink_t *pxIterator; +uint8_t *puc; + + /* Iterate through the list until a block is found that has a higher address + than the block being inserted. */ + for( pxIterator = &xStart; pxIterator->pxNextFreeBlock < pxBlockToInsert; pxIterator = pxIterator->pxNextFreeBlock ) + { + /* Nothing to do here, just iterate to the right position. */ + } + + /* Do the block being inserted, and the block it is being inserted after + make a contiguous block of memory? */ + puc = ( uint8_t * ) pxIterator; + if( ( puc + pxIterator->xBlockSize ) == ( uint8_t * ) pxBlockToInsert ) + { + pxIterator->xBlockSize += pxBlockToInsert->xBlockSize; + pxBlockToInsert = pxIterator; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + /* Do the block being inserted, and the block it is being inserted before + make a contiguous block of memory? */ + puc = ( uint8_t * ) pxBlockToInsert; + if( ( puc + pxBlockToInsert->xBlockSize ) == ( uint8_t * ) pxIterator->pxNextFreeBlock ) + { + if( pxIterator->pxNextFreeBlock != pxEnd ) + { + /* Form one big block from the two blocks. */ + pxBlockToInsert->xBlockSize += pxIterator->pxNextFreeBlock->xBlockSize; + pxBlockToInsert->pxNextFreeBlock = pxIterator->pxNextFreeBlock->pxNextFreeBlock; + } + else + { + pxBlockToInsert->pxNextFreeBlock = pxEnd; + } + } + else + { + pxBlockToInsert->pxNextFreeBlock = pxIterator->pxNextFreeBlock; + } + + /* If the block being inserted plugged a gab, so was merged with the block + before and the block after, then it's pxNextFreeBlock pointer will have + already been set, and should not be set here as that would make it point + to itself. */ + if( pxIterator != pxBlockToInsert ) + { + pxIterator->pxNextFreeBlock = pxBlockToInsert; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } +} +/*-----------------------------------------------------------*/ + +void vPortGetHeapStats( HeapStats_t *pxHeapStats ) +{ +BlockLink_t *pxBlock; +size_t xBlocks = 0, xMaxSize = 0, xMinSize = portMAX_DELAY; /* portMAX_DELAY used as a portable way of getting the maximum value. */ + + vTaskSuspendAll(); + { + pxBlock = xStart.pxNextFreeBlock; + + /* pxBlock will be NULL if the heap has not been initialised. The heap + is initialised automatically when the first allocation is made. */ + if( pxBlock != NULL ) + { + do + { + /* Increment the number of blocks and record the largest block seen + so far. */ + xBlocks++; + + if( pxBlock->xBlockSize > xMaxSize ) + { + xMaxSize = pxBlock->xBlockSize; + } + + if( pxBlock->xBlockSize < xMinSize ) + { + xMinSize = pxBlock->xBlockSize; + } + + /* Move to the next block in the chain until the last block is + reached. */ + pxBlock = pxBlock->pxNextFreeBlock; + } while( pxBlock != pxEnd ); + } + } + xTaskResumeAll(); + + pxHeapStats->xSizeOfLargestFreeBlockInBytes = xMaxSize; + pxHeapStats->xSizeOfSmallestFreeBlockInBytes = xMinSize; + pxHeapStats->xNumberOfFreeBlocks = xBlocks; + + taskENTER_CRITICAL(); + { + pxHeapStats->xAvailableHeapSpaceInBytes = xFreeBytesRemaining; + pxHeapStats->xNumberOfSuccessfulAllocations = xNumberOfSuccessfulAllocations; + pxHeapStats->xNumberOfSuccessfulFrees = xNumberOfSuccessfulFrees; + pxHeapStats->xMinimumEverFreeBytesRemaining = xMinimumEverFreeBytesRemaining; + } + taskEXIT_CRITICAL(); +} + diff --git a/firmware/Middlewares/Third_Party/FreeRTOS/Source/queue.c b/firmware/Middlewares/Third_Party/FreeRTOS/Source/queue.c new file mode 100644 index 0000000..b3203b8 --- /dev/null +++ b/firmware/Middlewares/Third_Party/FreeRTOS/Source/queue.c @@ -0,0 +1,2945 @@ +/* + * FreeRTOS Kernel V10.3.1 + * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * http://www.FreeRTOS.org + * http://aws.amazon.com/freertos + * + * 1 tab == 4 spaces! + */ + +#include +#include + +/* Defining MPU_WRAPPERS_INCLUDED_FROM_API_FILE prevents task.h from redefining +all the API functions to use the MPU wrappers. That should only be done when +task.h is included from an application file. */ +#define MPU_WRAPPERS_INCLUDED_FROM_API_FILE + +#include "FreeRTOS.h" +#include "task.h" +#include "queue.h" + +#if ( configUSE_CO_ROUTINES == 1 ) + #include "croutine.h" +#endif + +/* Lint e9021, e961 and e750 are suppressed as a MISRA exception justified +because the MPU ports require MPU_WRAPPERS_INCLUDED_FROM_API_FILE to be defined +for the header files above, but not in this file, in order to generate the +correct privileged Vs unprivileged linkage and placement. */ +#undef MPU_WRAPPERS_INCLUDED_FROM_API_FILE /*lint !e961 !e750 !e9021. */ + + +/* Constants used with the cRxLock and cTxLock structure members. */ +#define queueUNLOCKED ( ( int8_t ) -1 ) +#define queueLOCKED_UNMODIFIED ( ( int8_t ) 0 ) + +/* When the Queue_t structure is used to represent a base queue its pcHead and +pcTail members are used as pointers into the queue storage area. When the +Queue_t structure is used to represent a mutex pcHead and pcTail pointers are +not necessary, and the pcHead pointer is set to NULL to indicate that the +structure instead holds a pointer to the mutex holder (if any). Map alternative +names to the pcHead and structure member to ensure the readability of the code +is maintained. The QueuePointers_t and SemaphoreData_t types are used to form +a union as their usage is mutually exclusive dependent on what the queue is +being used for. */ +#define uxQueueType pcHead +#define queueQUEUE_IS_MUTEX NULL + +typedef struct QueuePointers +{ + int8_t *pcTail; /*< Points to the byte at the end of the queue storage area. Once more byte is allocated than necessary to store the queue items, this is used as a marker. */ + int8_t *pcReadFrom; /*< Points to the last place that a queued item was read from when the structure is used as a queue. */ +} QueuePointers_t; + +typedef struct SemaphoreData +{ + TaskHandle_t xMutexHolder; /*< The handle of the task that holds the mutex. */ + UBaseType_t uxRecursiveCallCount;/*< Maintains a count of the number of times a recursive mutex has been recursively 'taken' when the structure is used as a mutex. */ +} SemaphoreData_t; + +/* Semaphores do not actually store or copy data, so have an item size of +zero. */ +#define queueSEMAPHORE_QUEUE_ITEM_LENGTH ( ( UBaseType_t ) 0 ) +#define queueMUTEX_GIVE_BLOCK_TIME ( ( TickType_t ) 0U ) + +#if( configUSE_PREEMPTION == 0 ) + /* If the cooperative scheduler is being used then a yield should not be + performed just because a higher priority task has been woken. */ + #define queueYIELD_IF_USING_PREEMPTION() +#else + #define queueYIELD_IF_USING_PREEMPTION() portYIELD_WITHIN_API() +#endif + +/* + * Definition of the queue used by the scheduler. + * Items are queued by copy, not reference. See the following link for the + * rationale: https://www.freertos.org/Embedded-RTOS-Queues.html + */ +typedef struct QueueDefinition /* The old naming convention is used to prevent breaking kernel aware debuggers. */ +{ + int8_t *pcHead; /*< Points to the beginning of the queue storage area. */ + int8_t *pcWriteTo; /*< Points to the free next place in the storage area. */ + + union + { + QueuePointers_t xQueue; /*< Data required exclusively when this structure is used as a queue. */ + SemaphoreData_t xSemaphore; /*< Data required exclusively when this structure is used as a semaphore. */ + } u; + + List_t xTasksWaitingToSend; /*< List of tasks that are blocked waiting to post onto this queue. Stored in priority order. */ + List_t xTasksWaitingToReceive; /*< List of tasks that are blocked waiting to read from this queue. Stored in priority order. */ + + volatile UBaseType_t uxMessagesWaiting;/*< The number of items currently in the queue. */ + UBaseType_t uxLength; /*< The length of the queue defined as the number of items it will hold, not the number of bytes. */ + UBaseType_t uxItemSize; /*< The size of each items that the queue will hold. */ + + volatile int8_t cRxLock; /*< Stores the number of items received from the queue (removed from the queue) while the queue was locked. Set to queueUNLOCKED when the queue is not locked. */ + volatile int8_t cTxLock; /*< Stores the number of items transmitted to the queue (added to the queue) while the queue was locked. Set to queueUNLOCKED when the queue is not locked. */ + + #if( ( configSUPPORT_STATIC_ALLOCATION == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) ) + uint8_t ucStaticallyAllocated; /*< Set to pdTRUE if the memory used by the queue was statically allocated to ensure no attempt is made to free the memory. */ + #endif + + #if ( configUSE_QUEUE_SETS == 1 ) + struct QueueDefinition *pxQueueSetContainer; + #endif + + #if ( configUSE_TRACE_FACILITY == 1 ) + UBaseType_t uxQueueNumber; + uint8_t ucQueueType; + #endif + +} xQUEUE; + +/* The old xQUEUE name is maintained above then typedefed to the new Queue_t +name below to enable the use of older kernel aware debuggers. */ +typedef xQUEUE Queue_t; + +/*-----------------------------------------------------------*/ + +/* + * The queue registry is just a means for kernel aware debuggers to locate + * queue structures. It has no other purpose so is an optional component. + */ +#if ( configQUEUE_REGISTRY_SIZE > 0 ) + + /* The type stored within the queue registry array. This allows a name + to be assigned to each queue making kernel aware debugging a little + more user friendly. */ + typedef struct QUEUE_REGISTRY_ITEM + { + const char *pcQueueName; /*lint !e971 Unqualified char types are allowed for strings and single characters only. */ + QueueHandle_t xHandle; + } xQueueRegistryItem; + + /* The old xQueueRegistryItem name is maintained above then typedefed to the + new xQueueRegistryItem name below to enable the use of older kernel aware + debuggers. */ + typedef xQueueRegistryItem QueueRegistryItem_t; + + /* The queue registry is simply an array of QueueRegistryItem_t structures. + The pcQueueName member of a structure being NULL is indicative of the + array position being vacant. */ + PRIVILEGED_DATA QueueRegistryItem_t xQueueRegistry[ configQUEUE_REGISTRY_SIZE ]; + +#endif /* configQUEUE_REGISTRY_SIZE */ + +/* + * Unlocks a queue locked by a call to prvLockQueue. Locking a queue does not + * prevent an ISR from adding or removing items to the queue, but does prevent + * an ISR from removing tasks from the queue event lists. If an ISR finds a + * queue is locked it will instead increment the appropriate queue lock count + * to indicate that a task may require unblocking. When the queue in unlocked + * these lock counts are inspected, and the appropriate action taken. + */ +static void prvUnlockQueue( Queue_t * const pxQueue ) PRIVILEGED_FUNCTION; + +/* + * Uses a critical section to determine if there is any data in a queue. + * + * @return pdTRUE if the queue contains no items, otherwise pdFALSE. + */ +static BaseType_t prvIsQueueEmpty( const Queue_t *pxQueue ) PRIVILEGED_FUNCTION; + +/* + * Uses a critical section to determine if there is any space in a queue. + * + * @return pdTRUE if there is no space, otherwise pdFALSE; + */ +static BaseType_t prvIsQueueFull( const Queue_t *pxQueue ) PRIVILEGED_FUNCTION; + +/* + * Copies an item into the queue, either at the front of the queue or the + * back of the queue. + */ +static BaseType_t prvCopyDataToQueue( Queue_t * const pxQueue, const void *pvItemToQueue, const BaseType_t xPosition ) PRIVILEGED_FUNCTION; + +/* + * Copies an item out of a queue. + */ +static void prvCopyDataFromQueue( Queue_t * const pxQueue, void * const pvBuffer ) PRIVILEGED_FUNCTION; + +#if ( configUSE_QUEUE_SETS == 1 ) + /* + * Checks to see if a queue is a member of a queue set, and if so, notifies + * the queue set that the queue contains data. + */ + static BaseType_t prvNotifyQueueSetContainer( const Queue_t * const pxQueue ) PRIVILEGED_FUNCTION; +#endif + +/* + * Called after a Queue_t structure has been allocated either statically or + * dynamically to fill in the structure's members. + */ +static void prvInitialiseNewQueue( const UBaseType_t uxQueueLength, const UBaseType_t uxItemSize, uint8_t *pucQueueStorage, const uint8_t ucQueueType, Queue_t *pxNewQueue ) PRIVILEGED_FUNCTION; + +/* + * Mutexes are a special type of queue. When a mutex is created, first the + * queue is created, then prvInitialiseMutex() is called to configure the queue + * as a mutex. + */ +#if( configUSE_MUTEXES == 1 ) + static void prvInitialiseMutex( Queue_t *pxNewQueue ) PRIVILEGED_FUNCTION; +#endif + +#if( configUSE_MUTEXES == 1 ) + /* + * If a task waiting for a mutex causes the mutex holder to inherit a + * priority, but the waiting task times out, then the holder should + * disinherit the priority - but only down to the highest priority of any + * other tasks that are waiting for the same mutex. This function returns + * that priority. + */ + static UBaseType_t prvGetDisinheritPriorityAfterTimeout( const Queue_t * const pxQueue ) PRIVILEGED_FUNCTION; +#endif +/*-----------------------------------------------------------*/ + +/* + * Macro to mark a queue as locked. Locking a queue prevents an ISR from + * accessing the queue event lists. + */ +#define prvLockQueue( pxQueue ) \ + taskENTER_CRITICAL(); \ + { \ + if( ( pxQueue )->cRxLock == queueUNLOCKED ) \ + { \ + ( pxQueue )->cRxLock = queueLOCKED_UNMODIFIED; \ + } \ + if( ( pxQueue )->cTxLock == queueUNLOCKED ) \ + { \ + ( pxQueue )->cTxLock = queueLOCKED_UNMODIFIED; \ + } \ + } \ + taskEXIT_CRITICAL() +/*-----------------------------------------------------------*/ + +BaseType_t xQueueGenericReset( QueueHandle_t xQueue, BaseType_t xNewQueue ) +{ +Queue_t * const pxQueue = xQueue; + + configASSERT( pxQueue ); + + taskENTER_CRITICAL(); + { + pxQueue->u.xQueue.pcTail = pxQueue->pcHead + ( pxQueue->uxLength * pxQueue->uxItemSize ); /*lint !e9016 Pointer arithmetic allowed on char types, especially when it assists conveying intent. */ + pxQueue->uxMessagesWaiting = ( UBaseType_t ) 0U; + pxQueue->pcWriteTo = pxQueue->pcHead; + pxQueue->u.xQueue.pcReadFrom = pxQueue->pcHead + ( ( pxQueue->uxLength - 1U ) * pxQueue->uxItemSize ); /*lint !e9016 Pointer arithmetic allowed on char types, especially when it assists conveying intent. */ + pxQueue->cRxLock = queueUNLOCKED; + pxQueue->cTxLock = queueUNLOCKED; + + if( xNewQueue == pdFALSE ) + { + /* If there are tasks blocked waiting to read from the queue, then + the tasks will remain blocked as after this function exits the queue + will still be empty. If there are tasks blocked waiting to write to + the queue, then one should be unblocked as after this function exits + it will be possible to write to it. */ + if( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToSend ) ) == pdFALSE ) + { + if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToSend ) ) != pdFALSE ) + { + queueYIELD_IF_USING_PREEMPTION(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + /* Ensure the event queues start in the correct state. */ + vListInitialise( &( pxQueue->xTasksWaitingToSend ) ); + vListInitialise( &( pxQueue->xTasksWaitingToReceive ) ); + } + } + taskEXIT_CRITICAL(); + + /* A value is returned for calling semantic consistency with previous + versions. */ + return pdPASS; +} +/*-----------------------------------------------------------*/ + +#if( configSUPPORT_STATIC_ALLOCATION == 1 ) + + QueueHandle_t xQueueGenericCreateStatic( const UBaseType_t uxQueueLength, const UBaseType_t uxItemSize, uint8_t *pucQueueStorage, StaticQueue_t *pxStaticQueue, const uint8_t ucQueueType ) + { + Queue_t *pxNewQueue; + + configASSERT( uxQueueLength > ( UBaseType_t ) 0 ); + + /* The StaticQueue_t structure and the queue storage area must be + supplied. */ + configASSERT( pxStaticQueue != NULL ); + + /* A queue storage area should be provided if the item size is not 0, and + should not be provided if the item size is 0. */ + configASSERT( !( ( pucQueueStorage != NULL ) && ( uxItemSize == 0 ) ) ); + configASSERT( !( ( pucQueueStorage == NULL ) && ( uxItemSize != 0 ) ) ); + + #if( configASSERT_DEFINED == 1 ) + { + /* Sanity check that the size of the structure used to declare a + variable of type StaticQueue_t or StaticSemaphore_t equals the size of + the real queue and semaphore structures. */ + volatile size_t xSize = sizeof( StaticQueue_t ); + configASSERT( xSize == sizeof( Queue_t ) ); + ( void ) xSize; /* Keeps lint quiet when configASSERT() is not defined. */ + } + #endif /* configASSERT_DEFINED */ + + /* The address of a statically allocated queue was passed in, use it. + The address of a statically allocated storage area was also passed in + but is already set. */ + pxNewQueue = ( Queue_t * ) pxStaticQueue; /*lint !e740 !e9087 Unusual cast is ok as the structures are designed to have the same alignment, and the size is checked by an assert. */ + + if( pxNewQueue != NULL ) + { + #if( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) + { + /* Queues can be allocated wither statically or dynamically, so + note this queue was allocated statically in case the queue is + later deleted. */ + pxNewQueue->ucStaticallyAllocated = pdTRUE; + } + #endif /* configSUPPORT_DYNAMIC_ALLOCATION */ + + prvInitialiseNewQueue( uxQueueLength, uxItemSize, pucQueueStorage, ucQueueType, pxNewQueue ); + } + else + { + traceQUEUE_CREATE_FAILED( ucQueueType ); + mtCOVERAGE_TEST_MARKER(); + } + + return pxNewQueue; + } + +#endif /* configSUPPORT_STATIC_ALLOCATION */ +/*-----------------------------------------------------------*/ + +#if( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) + + QueueHandle_t xQueueGenericCreate( const UBaseType_t uxQueueLength, const UBaseType_t uxItemSize, const uint8_t ucQueueType ) + { + Queue_t *pxNewQueue; + size_t xQueueSizeInBytes; + uint8_t *pucQueueStorage; + + configASSERT( uxQueueLength > ( UBaseType_t ) 0 ); + + /* Allocate enough space to hold the maximum number of items that + can be in the queue at any time. It is valid for uxItemSize to be + zero in the case the queue is used as a semaphore. */ + xQueueSizeInBytes = ( size_t ) ( uxQueueLength * uxItemSize ); /*lint !e961 MISRA exception as the casts are only redundant for some ports. */ + + /* Allocate the queue and storage area. Justification for MISRA + deviation as follows: pvPortMalloc() always ensures returned memory + blocks are aligned per the requirements of the MCU stack. In this case + pvPortMalloc() must return a pointer that is guaranteed to meet the + alignment requirements of the Queue_t structure - which in this case + is an int8_t *. Therefore, whenever the stack alignment requirements + are greater than or equal to the pointer to char requirements the cast + is safe. In other cases alignment requirements are not strict (one or + two bytes). */ + pxNewQueue = ( Queue_t * ) pvPortMalloc( sizeof( Queue_t ) + xQueueSizeInBytes ); /*lint !e9087 !e9079 see comment above. */ + + if( pxNewQueue != NULL ) + { + /* Jump past the queue structure to find the location of the queue + storage area. */ + pucQueueStorage = ( uint8_t * ) pxNewQueue; + pucQueueStorage += sizeof( Queue_t ); /*lint !e9016 Pointer arithmetic allowed on char types, especially when it assists conveying intent. */ + + #if( configSUPPORT_STATIC_ALLOCATION == 1 ) + { + /* Queues can be created either statically or dynamically, so + note this task was created dynamically in case it is later + deleted. */ + pxNewQueue->ucStaticallyAllocated = pdFALSE; + } + #endif /* configSUPPORT_STATIC_ALLOCATION */ + + prvInitialiseNewQueue( uxQueueLength, uxItemSize, pucQueueStorage, ucQueueType, pxNewQueue ); + } + else + { + traceQUEUE_CREATE_FAILED( ucQueueType ); + mtCOVERAGE_TEST_MARKER(); + } + + return pxNewQueue; + } + +#endif /* configSUPPORT_STATIC_ALLOCATION */ +/*-----------------------------------------------------------*/ + +static void prvInitialiseNewQueue( const UBaseType_t uxQueueLength, const UBaseType_t uxItemSize, uint8_t *pucQueueStorage, const uint8_t ucQueueType, Queue_t *pxNewQueue ) +{ + /* Remove compiler warnings about unused parameters should + configUSE_TRACE_FACILITY not be set to 1. */ + ( void ) ucQueueType; + + if( uxItemSize == ( UBaseType_t ) 0 ) + { + /* No RAM was allocated for the queue storage area, but PC head cannot + be set to NULL because NULL is used as a key to say the queue is used as + a mutex. Therefore just set pcHead to point to the queue as a benign + value that is known to be within the memory map. */ + pxNewQueue->pcHead = ( int8_t * ) pxNewQueue; + } + else + { + /* Set the head to the start of the queue storage area. */ + pxNewQueue->pcHead = ( int8_t * ) pucQueueStorage; + } + + /* Initialise the queue members as described where the queue type is + defined. */ + pxNewQueue->uxLength = uxQueueLength; + pxNewQueue->uxItemSize = uxItemSize; + ( void ) xQueueGenericReset( pxNewQueue, pdTRUE ); + + #if ( configUSE_TRACE_FACILITY == 1 ) + { + pxNewQueue->ucQueueType = ucQueueType; + } + #endif /* configUSE_TRACE_FACILITY */ + + #if( configUSE_QUEUE_SETS == 1 ) + { + pxNewQueue->pxQueueSetContainer = NULL; + } + #endif /* configUSE_QUEUE_SETS */ + + traceQUEUE_CREATE( pxNewQueue ); +} +/*-----------------------------------------------------------*/ + +#if( configUSE_MUTEXES == 1 ) + + static void prvInitialiseMutex( Queue_t *pxNewQueue ) + { + if( pxNewQueue != NULL ) + { + /* The queue create function will set all the queue structure members + correctly for a generic queue, but this function is creating a + mutex. Overwrite those members that need to be set differently - + in particular the information required for priority inheritance. */ + pxNewQueue->u.xSemaphore.xMutexHolder = NULL; + pxNewQueue->uxQueueType = queueQUEUE_IS_MUTEX; + + /* In case this is a recursive mutex. */ + pxNewQueue->u.xSemaphore.uxRecursiveCallCount = 0; + + traceCREATE_MUTEX( pxNewQueue ); + + /* Start with the semaphore in the expected state. */ + ( void ) xQueueGenericSend( pxNewQueue, NULL, ( TickType_t ) 0U, queueSEND_TO_BACK ); + } + else + { + traceCREATE_MUTEX_FAILED(); + } + } + +#endif /* configUSE_MUTEXES */ +/*-----------------------------------------------------------*/ + +#if( ( configUSE_MUTEXES == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) ) + + QueueHandle_t xQueueCreateMutex( const uint8_t ucQueueType ) + { + QueueHandle_t xNewQueue; + const UBaseType_t uxMutexLength = ( UBaseType_t ) 1, uxMutexSize = ( UBaseType_t ) 0; + + xNewQueue = xQueueGenericCreate( uxMutexLength, uxMutexSize, ucQueueType ); + prvInitialiseMutex( ( Queue_t * ) xNewQueue ); + + return xNewQueue; + } + +#endif /* configUSE_MUTEXES */ +/*-----------------------------------------------------------*/ + +#if( ( configUSE_MUTEXES == 1 ) && ( configSUPPORT_STATIC_ALLOCATION == 1 ) ) + + QueueHandle_t xQueueCreateMutexStatic( const uint8_t ucQueueType, StaticQueue_t *pxStaticQueue ) + { + QueueHandle_t xNewQueue; + const UBaseType_t uxMutexLength = ( UBaseType_t ) 1, uxMutexSize = ( UBaseType_t ) 0; + + /* Prevent compiler warnings about unused parameters if + configUSE_TRACE_FACILITY does not equal 1. */ + ( void ) ucQueueType; + + xNewQueue = xQueueGenericCreateStatic( uxMutexLength, uxMutexSize, NULL, pxStaticQueue, ucQueueType ); + prvInitialiseMutex( ( Queue_t * ) xNewQueue ); + + return xNewQueue; + } + +#endif /* configUSE_MUTEXES */ +/*-----------------------------------------------------------*/ + +#if ( ( configUSE_MUTEXES == 1 ) && ( INCLUDE_xSemaphoreGetMutexHolder == 1 ) ) + + TaskHandle_t xQueueGetMutexHolder( QueueHandle_t xSemaphore ) + { + TaskHandle_t pxReturn; + Queue_t * const pxSemaphore = ( Queue_t * ) xSemaphore; + + /* This function is called by xSemaphoreGetMutexHolder(), and should not + be called directly. Note: This is a good way of determining if the + calling task is the mutex holder, but not a good way of determining the + identity of the mutex holder, as the holder may change between the + following critical section exiting and the function returning. */ + taskENTER_CRITICAL(); + { + if( pxSemaphore->uxQueueType == queueQUEUE_IS_MUTEX ) + { + pxReturn = pxSemaphore->u.xSemaphore.xMutexHolder; + } + else + { + pxReturn = NULL; + } + } + taskEXIT_CRITICAL(); + + return pxReturn; + } /*lint !e818 xSemaphore cannot be a pointer to const because it is a typedef. */ + +#endif +/*-----------------------------------------------------------*/ + +#if ( ( configUSE_MUTEXES == 1 ) && ( INCLUDE_xSemaphoreGetMutexHolder == 1 ) ) + + TaskHandle_t xQueueGetMutexHolderFromISR( QueueHandle_t xSemaphore ) + { + TaskHandle_t pxReturn; + + configASSERT( xSemaphore ); + + /* Mutexes cannot be used in interrupt service routines, so the mutex + holder should not change in an ISR, and therefore a critical section is + not required here. */ + if( ( ( Queue_t * ) xSemaphore )->uxQueueType == queueQUEUE_IS_MUTEX ) + { + pxReturn = ( ( Queue_t * ) xSemaphore )->u.xSemaphore.xMutexHolder; + } + else + { + pxReturn = NULL; + } + + return pxReturn; + } /*lint !e818 xSemaphore cannot be a pointer to const because it is a typedef. */ + +#endif +/*-----------------------------------------------------------*/ + +#if ( configUSE_RECURSIVE_MUTEXES == 1 ) + + BaseType_t xQueueGiveMutexRecursive( QueueHandle_t xMutex ) + { + BaseType_t xReturn; + Queue_t * const pxMutex = ( Queue_t * ) xMutex; + + configASSERT( pxMutex ); + + /* If this is the task that holds the mutex then xMutexHolder will not + change outside of this task. If this task does not hold the mutex then + pxMutexHolder can never coincidentally equal the tasks handle, and as + this is the only condition we are interested in it does not matter if + pxMutexHolder is accessed simultaneously by another task. Therefore no + mutual exclusion is required to test the pxMutexHolder variable. */ + if( pxMutex->u.xSemaphore.xMutexHolder == xTaskGetCurrentTaskHandle() ) + { + traceGIVE_MUTEX_RECURSIVE( pxMutex ); + + /* uxRecursiveCallCount cannot be zero if xMutexHolder is equal to + the task handle, therefore no underflow check is required. Also, + uxRecursiveCallCount is only modified by the mutex holder, and as + there can only be one, no mutual exclusion is required to modify the + uxRecursiveCallCount member. */ + ( pxMutex->u.xSemaphore.uxRecursiveCallCount )--; + + /* Has the recursive call count unwound to 0? */ + if( pxMutex->u.xSemaphore.uxRecursiveCallCount == ( UBaseType_t ) 0 ) + { + /* Return the mutex. This will automatically unblock any other + task that might be waiting to access the mutex. */ + ( void ) xQueueGenericSend( pxMutex, NULL, queueMUTEX_GIVE_BLOCK_TIME, queueSEND_TO_BACK ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + xReturn = pdPASS; + } + else + { + /* The mutex cannot be given because the calling task is not the + holder. */ + xReturn = pdFAIL; + + traceGIVE_MUTEX_RECURSIVE_FAILED( pxMutex ); + } + + return xReturn; + } + +#endif /* configUSE_RECURSIVE_MUTEXES */ +/*-----------------------------------------------------------*/ + +#if ( configUSE_RECURSIVE_MUTEXES == 1 ) + + BaseType_t xQueueTakeMutexRecursive( QueueHandle_t xMutex, TickType_t xTicksToWait ) + { + BaseType_t xReturn; + Queue_t * const pxMutex = ( Queue_t * ) xMutex; + + configASSERT( pxMutex ); + + /* Comments regarding mutual exclusion as per those within + xQueueGiveMutexRecursive(). */ + + traceTAKE_MUTEX_RECURSIVE( pxMutex ); + + if( pxMutex->u.xSemaphore.xMutexHolder == xTaskGetCurrentTaskHandle() ) + { + ( pxMutex->u.xSemaphore.uxRecursiveCallCount )++; + xReturn = pdPASS; + } + else + { + xReturn = xQueueSemaphoreTake( pxMutex, xTicksToWait ); + + /* pdPASS will only be returned if the mutex was successfully + obtained. The calling task may have entered the Blocked state + before reaching here. */ + if( xReturn != pdFAIL ) + { + ( pxMutex->u.xSemaphore.uxRecursiveCallCount )++; + } + else + { + traceTAKE_MUTEX_RECURSIVE_FAILED( pxMutex ); + } + } + + return xReturn; + } + +#endif /* configUSE_RECURSIVE_MUTEXES */ +/*-----------------------------------------------------------*/ + +#if( ( configUSE_COUNTING_SEMAPHORES == 1 ) && ( configSUPPORT_STATIC_ALLOCATION == 1 ) ) + + QueueHandle_t xQueueCreateCountingSemaphoreStatic( const UBaseType_t uxMaxCount, const UBaseType_t uxInitialCount, StaticQueue_t *pxStaticQueue ) + { + QueueHandle_t xHandle; + + configASSERT( uxMaxCount != 0 ); + configASSERT( uxInitialCount <= uxMaxCount ); + + xHandle = xQueueGenericCreateStatic( uxMaxCount, queueSEMAPHORE_QUEUE_ITEM_LENGTH, NULL, pxStaticQueue, queueQUEUE_TYPE_COUNTING_SEMAPHORE ); + + if( xHandle != NULL ) + { + ( ( Queue_t * ) xHandle )->uxMessagesWaiting = uxInitialCount; + + traceCREATE_COUNTING_SEMAPHORE(); + } + else + { + traceCREATE_COUNTING_SEMAPHORE_FAILED(); + } + + return xHandle; + } + +#endif /* ( ( configUSE_COUNTING_SEMAPHORES == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) ) */ +/*-----------------------------------------------------------*/ + +#if( ( configUSE_COUNTING_SEMAPHORES == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) ) + + QueueHandle_t xQueueCreateCountingSemaphore( const UBaseType_t uxMaxCount, const UBaseType_t uxInitialCount ) + { + QueueHandle_t xHandle; + + configASSERT( uxMaxCount != 0 ); + configASSERT( uxInitialCount <= uxMaxCount ); + + xHandle = xQueueGenericCreate( uxMaxCount, queueSEMAPHORE_QUEUE_ITEM_LENGTH, queueQUEUE_TYPE_COUNTING_SEMAPHORE ); + + if( xHandle != NULL ) + { + ( ( Queue_t * ) xHandle )->uxMessagesWaiting = uxInitialCount; + + traceCREATE_COUNTING_SEMAPHORE(); + } + else + { + traceCREATE_COUNTING_SEMAPHORE_FAILED(); + } + + return xHandle; + } + +#endif /* ( ( configUSE_COUNTING_SEMAPHORES == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) ) */ +/*-----------------------------------------------------------*/ + +BaseType_t xQueueGenericSend( QueueHandle_t xQueue, const void * const pvItemToQueue, TickType_t xTicksToWait, const BaseType_t xCopyPosition ) +{ +BaseType_t xEntryTimeSet = pdFALSE, xYieldRequired; +TimeOut_t xTimeOut; +Queue_t * const pxQueue = xQueue; + + configASSERT( pxQueue ); + configASSERT( !( ( pvItemToQueue == NULL ) && ( pxQueue->uxItemSize != ( UBaseType_t ) 0U ) ) ); + configASSERT( !( ( xCopyPosition == queueOVERWRITE ) && ( pxQueue->uxLength != 1 ) ) ); + #if ( ( INCLUDE_xTaskGetSchedulerState == 1 ) || ( configUSE_TIMERS == 1 ) ) + { + configASSERT( !( ( xTaskGetSchedulerState() == taskSCHEDULER_SUSPENDED ) && ( xTicksToWait != 0 ) ) ); + } + #endif + + + /*lint -save -e904 This function relaxes the coding standard somewhat to + allow return statements within the function itself. This is done in the + interest of execution time efficiency. */ + for( ;; ) + { + taskENTER_CRITICAL(); + { + /* Is there room on the queue now? The running task must be the + highest priority task wanting to access the queue. If the head item + in the queue is to be overwritten then it does not matter if the + queue is full. */ + if( ( pxQueue->uxMessagesWaiting < pxQueue->uxLength ) || ( xCopyPosition == queueOVERWRITE ) ) + { + traceQUEUE_SEND( pxQueue ); + + #if ( configUSE_QUEUE_SETS == 1 ) + { + const UBaseType_t uxPreviousMessagesWaiting = pxQueue->uxMessagesWaiting; + + xYieldRequired = prvCopyDataToQueue( pxQueue, pvItemToQueue, xCopyPosition ); + + if( pxQueue->pxQueueSetContainer != NULL ) + { + if( ( xCopyPosition == queueOVERWRITE ) && ( uxPreviousMessagesWaiting != ( UBaseType_t ) 0 ) ) + { + /* Do not notify the queue set as an existing item + was overwritten in the queue so the number of items + in the queue has not changed. */ + mtCOVERAGE_TEST_MARKER(); + } + else if( prvNotifyQueueSetContainer( pxQueue ) != pdFALSE ) + { + /* The queue is a member of a queue set, and posting + to the queue set caused a higher priority task to + unblock. A context switch is required. */ + queueYIELD_IF_USING_PREEMPTION(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + /* If there was a task waiting for data to arrive on the + queue then unblock it now. */ + if( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToReceive ) ) == pdFALSE ) + { + if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToReceive ) ) != pdFALSE ) + { + /* The unblocked task has a priority higher than + our own so yield immediately. Yes it is ok to + do this from within the critical section - the + kernel takes care of that. */ + queueYIELD_IF_USING_PREEMPTION(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else if( xYieldRequired != pdFALSE ) + { + /* This path is a special case that will only get + executed if the task was holding multiple mutexes + and the mutexes were given back in an order that is + different to that in which they were taken. */ + queueYIELD_IF_USING_PREEMPTION(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + } + #else /* configUSE_QUEUE_SETS */ + { + xYieldRequired = prvCopyDataToQueue( pxQueue, pvItemToQueue, xCopyPosition ); + + /* If there was a task waiting for data to arrive on the + queue then unblock it now. */ + if( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToReceive ) ) == pdFALSE ) + { + if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToReceive ) ) != pdFALSE ) + { + /* The unblocked task has a priority higher than + our own so yield immediately. Yes it is ok to do + this from within the critical section - the kernel + takes care of that. */ + queueYIELD_IF_USING_PREEMPTION(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else if( xYieldRequired != pdFALSE ) + { + /* This path is a special case that will only get + executed if the task was holding multiple mutexes and + the mutexes were given back in an order that is + different to that in which they were taken. */ + queueYIELD_IF_USING_PREEMPTION(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + #endif /* configUSE_QUEUE_SETS */ + + taskEXIT_CRITICAL(); + return pdPASS; + } + else + { + if( xTicksToWait == ( TickType_t ) 0 ) + { + /* The queue was full and no block time is specified (or + the block time has expired) so leave now. */ + taskEXIT_CRITICAL(); + + /* Return to the original privilege level before exiting + the function. */ + traceQUEUE_SEND_FAILED( pxQueue ); + return errQUEUE_FULL; + } + else if( xEntryTimeSet == pdFALSE ) + { + /* The queue was full and a block time was specified so + configure the timeout structure. */ + vTaskInternalSetTimeOutState( &xTimeOut ); + xEntryTimeSet = pdTRUE; + } + else + { + /* Entry time was already set. */ + mtCOVERAGE_TEST_MARKER(); + } + } + } + taskEXIT_CRITICAL(); + + /* Interrupts and other tasks can send to and receive from the queue + now the critical section has been exited. */ + + vTaskSuspendAll(); + prvLockQueue( pxQueue ); + + /* Update the timeout state to see if it has expired yet. */ + if( xTaskCheckForTimeOut( &xTimeOut, &xTicksToWait ) == pdFALSE ) + { + if( prvIsQueueFull( pxQueue ) != pdFALSE ) + { + traceBLOCKING_ON_QUEUE_SEND( pxQueue ); + vTaskPlaceOnEventList( &( pxQueue->xTasksWaitingToSend ), xTicksToWait ); + + /* Unlocking the queue means queue events can effect the + event list. It is possible that interrupts occurring now + remove this task from the event list again - but as the + scheduler is suspended the task will go onto the pending + ready last instead of the actual ready list. */ + prvUnlockQueue( pxQueue ); + + /* Resuming the scheduler will move tasks from the pending + ready list into the ready list - so it is feasible that this + task is already in a ready list before it yields - in which + case the yield will not cause a context switch unless there + is also a higher priority task in the pending ready list. */ + if( xTaskResumeAll() == pdFALSE ) + { + portYIELD_WITHIN_API(); + } + } + else + { + /* Try again. */ + prvUnlockQueue( pxQueue ); + ( void ) xTaskResumeAll(); + } + } + else + { + /* The timeout has expired. */ + prvUnlockQueue( pxQueue ); + ( void ) xTaskResumeAll(); + + traceQUEUE_SEND_FAILED( pxQueue ); + return errQUEUE_FULL; + } + } /*lint -restore */ +} +/*-----------------------------------------------------------*/ + +BaseType_t xQueueGenericSendFromISR( QueueHandle_t xQueue, const void * const pvItemToQueue, BaseType_t * const pxHigherPriorityTaskWoken, const BaseType_t xCopyPosition ) +{ +BaseType_t xReturn; +UBaseType_t uxSavedInterruptStatus; +Queue_t * const pxQueue = xQueue; + + configASSERT( pxQueue ); + configASSERT( !( ( pvItemToQueue == NULL ) && ( pxQueue->uxItemSize != ( UBaseType_t ) 0U ) ) ); + configASSERT( !( ( xCopyPosition == queueOVERWRITE ) && ( pxQueue->uxLength != 1 ) ) ); + + /* RTOS ports that support interrupt nesting have the concept of a maximum + system call (or maximum API call) interrupt priority. Interrupts that are + above the maximum system call priority are kept permanently enabled, even + when the RTOS kernel is in a critical section, but cannot make any calls to + FreeRTOS API functions. If configASSERT() is defined in FreeRTOSConfig.h + then portASSERT_IF_INTERRUPT_PRIORITY_INVALID() will result in an assertion + failure if a FreeRTOS API function is called from an interrupt that has been + assigned a priority above the configured maximum system call priority. + Only FreeRTOS functions that end in FromISR can be called from interrupts + that have been assigned a priority at or (logically) below the maximum + system call interrupt priority. FreeRTOS maintains a separate interrupt + safe API to ensure interrupt entry is as fast and as simple as possible. + More information (albeit Cortex-M specific) is provided on the following + link: http://www.freertos.org/RTOS-Cortex-M3-M4.html */ + portASSERT_IF_INTERRUPT_PRIORITY_INVALID(); + + /* Similar to xQueueGenericSend, except without blocking if there is no room + in the queue. Also don't directly wake a task that was blocked on a queue + read, instead return a flag to say whether a context switch is required or + not (i.e. has a task with a higher priority than us been woken by this + post). */ + uxSavedInterruptStatus = portSET_INTERRUPT_MASK_FROM_ISR(); + { + if( ( pxQueue->uxMessagesWaiting < pxQueue->uxLength ) || ( xCopyPosition == queueOVERWRITE ) ) + { + const int8_t cTxLock = pxQueue->cTxLock; + const UBaseType_t uxPreviousMessagesWaiting = pxQueue->uxMessagesWaiting; + + traceQUEUE_SEND_FROM_ISR( pxQueue ); + + /* Semaphores use xQueueGiveFromISR(), so pxQueue will not be a + semaphore or mutex. That means prvCopyDataToQueue() cannot result + in a task disinheriting a priority and prvCopyDataToQueue() can be + called here even though the disinherit function does not check if + the scheduler is suspended before accessing the ready lists. */ + ( void ) prvCopyDataToQueue( pxQueue, pvItemToQueue, xCopyPosition ); + + /* The event list is not altered if the queue is locked. This will + be done when the queue is unlocked later. */ + if( cTxLock == queueUNLOCKED ) + { + #if ( configUSE_QUEUE_SETS == 1 ) + { + if( pxQueue->pxQueueSetContainer != NULL ) + { + if( ( xCopyPosition == queueOVERWRITE ) && ( uxPreviousMessagesWaiting != ( UBaseType_t ) 0 ) ) + { + /* Do not notify the queue set as an existing item + was overwritten in the queue so the number of items + in the queue has not changed. */ + mtCOVERAGE_TEST_MARKER(); + } + else if( prvNotifyQueueSetContainer( pxQueue ) != pdFALSE ) + { + /* The queue is a member of a queue set, and posting + to the queue set caused a higher priority task to + unblock. A context switch is required. */ + if( pxHigherPriorityTaskWoken != NULL ) + { + *pxHigherPriorityTaskWoken = pdTRUE; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + if( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToReceive ) ) == pdFALSE ) + { + if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToReceive ) ) != pdFALSE ) + { + /* The task waiting has a higher priority so + record that a context switch is required. */ + if( pxHigherPriorityTaskWoken != NULL ) + { + *pxHigherPriorityTaskWoken = pdTRUE; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + } + #else /* configUSE_QUEUE_SETS */ + { + if( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToReceive ) ) == pdFALSE ) + { + if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToReceive ) ) != pdFALSE ) + { + /* The task waiting has a higher priority so record that a + context switch is required. */ + if( pxHigherPriorityTaskWoken != NULL ) + { + *pxHigherPriorityTaskWoken = pdTRUE; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + /* Not used in this path. */ + ( void ) uxPreviousMessagesWaiting; + } + #endif /* configUSE_QUEUE_SETS */ + } + else + { + /* Increment the lock count so the task that unlocks the queue + knows that data was posted while it was locked. */ + pxQueue->cTxLock = ( int8_t ) ( cTxLock + 1 ); + } + + xReturn = pdPASS; + } + else + { + traceQUEUE_SEND_FROM_ISR_FAILED( pxQueue ); + xReturn = errQUEUE_FULL; + } + } + portCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedInterruptStatus ); + + return xReturn; +} +/*-----------------------------------------------------------*/ + +BaseType_t xQueueGiveFromISR( QueueHandle_t xQueue, BaseType_t * const pxHigherPriorityTaskWoken ) +{ +BaseType_t xReturn; +UBaseType_t uxSavedInterruptStatus; +Queue_t * const pxQueue = xQueue; + + /* Similar to xQueueGenericSendFromISR() but used with semaphores where the + item size is 0. Don't directly wake a task that was blocked on a queue + read, instead return a flag to say whether a context switch is required or + not (i.e. has a task with a higher priority than us been woken by this + post). */ + + configASSERT( pxQueue ); + + /* xQueueGenericSendFromISR() should be used instead of xQueueGiveFromISR() + if the item size is not 0. */ + configASSERT( pxQueue->uxItemSize == 0 ); + + /* Normally a mutex would not be given from an interrupt, especially if + there is a mutex holder, as priority inheritance makes no sense for an + interrupts, only tasks. */ + configASSERT( !( ( pxQueue->uxQueueType == queueQUEUE_IS_MUTEX ) && ( pxQueue->u.xSemaphore.xMutexHolder != NULL ) ) ); + + /* RTOS ports that support interrupt nesting have the concept of a maximum + system call (or maximum API call) interrupt priority. Interrupts that are + above the maximum system call priority are kept permanently enabled, even + when the RTOS kernel is in a critical section, but cannot make any calls to + FreeRTOS API functions. If configASSERT() is defined in FreeRTOSConfig.h + then portASSERT_IF_INTERRUPT_PRIORITY_INVALID() will result in an assertion + failure if a FreeRTOS API function is called from an interrupt that has been + assigned a priority above the configured maximum system call priority. + Only FreeRTOS functions that end in FromISR can be called from interrupts + that have been assigned a priority at or (logically) below the maximum + system call interrupt priority. FreeRTOS maintains a separate interrupt + safe API to ensure interrupt entry is as fast and as simple as possible. + More information (albeit Cortex-M specific) is provided on the following + link: http://www.freertos.org/RTOS-Cortex-M3-M4.html */ + portASSERT_IF_INTERRUPT_PRIORITY_INVALID(); + + uxSavedInterruptStatus = portSET_INTERRUPT_MASK_FROM_ISR(); + { + const UBaseType_t uxMessagesWaiting = pxQueue->uxMessagesWaiting; + + /* When the queue is used to implement a semaphore no data is ever + moved through the queue but it is still valid to see if the queue 'has + space'. */ + if( uxMessagesWaiting < pxQueue->uxLength ) + { + const int8_t cTxLock = pxQueue->cTxLock; + + traceQUEUE_SEND_FROM_ISR( pxQueue ); + + /* A task can only have an inherited priority if it is a mutex + holder - and if there is a mutex holder then the mutex cannot be + given from an ISR. As this is the ISR version of the function it + can be assumed there is no mutex holder and no need to determine if + priority disinheritance is needed. Simply increase the count of + messages (semaphores) available. */ + pxQueue->uxMessagesWaiting = uxMessagesWaiting + ( UBaseType_t ) 1; + + /* The event list is not altered if the queue is locked. This will + be done when the queue is unlocked later. */ + if( cTxLock == queueUNLOCKED ) + { + #if ( configUSE_QUEUE_SETS == 1 ) + { + if( pxQueue->pxQueueSetContainer != NULL ) + { + if( prvNotifyQueueSetContainer( pxQueue ) != pdFALSE ) + { + /* The semaphore is a member of a queue set, and + posting to the queue set caused a higher priority + task to unblock. A context switch is required. */ + if( pxHigherPriorityTaskWoken != NULL ) + { + *pxHigherPriorityTaskWoken = pdTRUE; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + if( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToReceive ) ) == pdFALSE ) + { + if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToReceive ) ) != pdFALSE ) + { + /* The task waiting has a higher priority so + record that a context switch is required. */ + if( pxHigherPriorityTaskWoken != NULL ) + { + *pxHigherPriorityTaskWoken = pdTRUE; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + } + #else /* configUSE_QUEUE_SETS */ + { + if( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToReceive ) ) == pdFALSE ) + { + if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToReceive ) ) != pdFALSE ) + { + /* The task waiting has a higher priority so record that a + context switch is required. */ + if( pxHigherPriorityTaskWoken != NULL ) + { + *pxHigherPriorityTaskWoken = pdTRUE; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + #endif /* configUSE_QUEUE_SETS */ + } + else + { + /* Increment the lock count so the task that unlocks the queue + knows that data was posted while it was locked. */ + pxQueue->cTxLock = ( int8_t ) ( cTxLock + 1 ); + } + + xReturn = pdPASS; + } + else + { + traceQUEUE_SEND_FROM_ISR_FAILED( pxQueue ); + xReturn = errQUEUE_FULL; + } + } + portCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedInterruptStatus ); + + return xReturn; +} +/*-----------------------------------------------------------*/ + +BaseType_t xQueueReceive( QueueHandle_t xQueue, void * const pvBuffer, TickType_t xTicksToWait ) +{ +BaseType_t xEntryTimeSet = pdFALSE; +TimeOut_t xTimeOut; +Queue_t * const pxQueue = xQueue; + + /* Check the pointer is not NULL. */ + configASSERT( ( pxQueue ) ); + + /* The buffer into which data is received can only be NULL if the data size + is zero (so no data is copied into the buffer. */ + configASSERT( !( ( ( pvBuffer ) == NULL ) && ( ( pxQueue )->uxItemSize != ( UBaseType_t ) 0U ) ) ); + + /* Cannot block if the scheduler is suspended. */ + #if ( ( INCLUDE_xTaskGetSchedulerState == 1 ) || ( configUSE_TIMERS == 1 ) ) + { + configASSERT( !( ( xTaskGetSchedulerState() == taskSCHEDULER_SUSPENDED ) && ( xTicksToWait != 0 ) ) ); + } + #endif + + + /*lint -save -e904 This function relaxes the coding standard somewhat to + allow return statements within the function itself. This is done in the + interest of execution time efficiency. */ + for( ;; ) + { + taskENTER_CRITICAL(); + { + const UBaseType_t uxMessagesWaiting = pxQueue->uxMessagesWaiting; + + /* Is there data in the queue now? To be running the calling task + must be the highest priority task wanting to access the queue. */ + if( uxMessagesWaiting > ( UBaseType_t ) 0 ) + { + /* Data available, remove one item. */ + prvCopyDataFromQueue( pxQueue, pvBuffer ); + traceQUEUE_RECEIVE( pxQueue ); + pxQueue->uxMessagesWaiting = uxMessagesWaiting - ( UBaseType_t ) 1; + + /* There is now space in the queue, were any tasks waiting to + post to the queue? If so, unblock the highest priority waiting + task. */ + if( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToSend ) ) == pdFALSE ) + { + if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToSend ) ) != pdFALSE ) + { + queueYIELD_IF_USING_PREEMPTION(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + taskEXIT_CRITICAL(); + return pdPASS; + } + else + { + if( xTicksToWait == ( TickType_t ) 0 ) + { + /* The queue was empty and no block time is specified (or + the block time has expired) so leave now. */ + taskEXIT_CRITICAL(); + traceQUEUE_RECEIVE_FAILED( pxQueue ); + return errQUEUE_EMPTY; + } + else if( xEntryTimeSet == pdFALSE ) + { + /* The queue was empty and a block time was specified so + configure the timeout structure. */ + vTaskInternalSetTimeOutState( &xTimeOut ); + xEntryTimeSet = pdTRUE; + } + else + { + /* Entry time was already set. */ + mtCOVERAGE_TEST_MARKER(); + } + } + } + taskEXIT_CRITICAL(); + + /* Interrupts and other tasks can send to and receive from the queue + now the critical section has been exited. */ + + vTaskSuspendAll(); + prvLockQueue( pxQueue ); + + /* Update the timeout state to see if it has expired yet. */ + if( xTaskCheckForTimeOut( &xTimeOut, &xTicksToWait ) == pdFALSE ) + { + /* The timeout has not expired. If the queue is still empty place + the task on the list of tasks waiting to receive from the queue. */ + if( prvIsQueueEmpty( pxQueue ) != pdFALSE ) + { + traceBLOCKING_ON_QUEUE_RECEIVE( pxQueue ); + vTaskPlaceOnEventList( &( pxQueue->xTasksWaitingToReceive ), xTicksToWait ); + prvUnlockQueue( pxQueue ); + if( xTaskResumeAll() == pdFALSE ) + { + portYIELD_WITHIN_API(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + /* The queue contains data again. Loop back to try and read the + data. */ + prvUnlockQueue( pxQueue ); + ( void ) xTaskResumeAll(); + } + } + else + { + /* Timed out. If there is no data in the queue exit, otherwise loop + back and attempt to read the data. */ + prvUnlockQueue( pxQueue ); + ( void ) xTaskResumeAll(); + + if( prvIsQueueEmpty( pxQueue ) != pdFALSE ) + { + traceQUEUE_RECEIVE_FAILED( pxQueue ); + return errQUEUE_EMPTY; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + } /*lint -restore */ +} +/*-----------------------------------------------------------*/ + +BaseType_t xQueueSemaphoreTake( QueueHandle_t xQueue, TickType_t xTicksToWait ) +{ +BaseType_t xEntryTimeSet = pdFALSE; +TimeOut_t xTimeOut; +Queue_t * const pxQueue = xQueue; + +#if( configUSE_MUTEXES == 1 ) + BaseType_t xInheritanceOccurred = pdFALSE; +#endif + + /* Check the queue pointer is not NULL. */ + configASSERT( ( pxQueue ) ); + + /* Check this really is a semaphore, in which case the item size will be + 0. */ + configASSERT( pxQueue->uxItemSize == 0 ); + + /* Cannot block if the scheduler is suspended. */ + #if ( ( INCLUDE_xTaskGetSchedulerState == 1 ) || ( configUSE_TIMERS == 1 ) ) + { + configASSERT( !( ( xTaskGetSchedulerState() == taskSCHEDULER_SUSPENDED ) && ( xTicksToWait != 0 ) ) ); + } + #endif + + + /*lint -save -e904 This function relaxes the coding standard somewhat to allow return + statements within the function itself. This is done in the interest + of execution time efficiency. */ + for( ;; ) + { + taskENTER_CRITICAL(); + { + /* Semaphores are queues with an item size of 0, and where the + number of messages in the queue is the semaphore's count value. */ + const UBaseType_t uxSemaphoreCount = pxQueue->uxMessagesWaiting; + + /* Is there data in the queue now? To be running the calling task + must be the highest priority task wanting to access the queue. */ + if( uxSemaphoreCount > ( UBaseType_t ) 0 ) + { + traceQUEUE_RECEIVE( pxQueue ); + + /* Semaphores are queues with a data size of zero and where the + messages waiting is the semaphore's count. Reduce the count. */ + pxQueue->uxMessagesWaiting = uxSemaphoreCount - ( UBaseType_t ) 1; + + #if ( configUSE_MUTEXES == 1 ) + { + if( pxQueue->uxQueueType == queueQUEUE_IS_MUTEX ) + { + /* Record the information required to implement + priority inheritance should it become necessary. */ + pxQueue->u.xSemaphore.xMutexHolder = pvTaskIncrementMutexHeldCount(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + #endif /* configUSE_MUTEXES */ + + /* Check to see if other tasks are blocked waiting to give the + semaphore, and if so, unblock the highest priority such task. */ + if( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToSend ) ) == pdFALSE ) + { + if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToSend ) ) != pdFALSE ) + { + queueYIELD_IF_USING_PREEMPTION(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + taskEXIT_CRITICAL(); + return pdPASS; + } + else + { + if( xTicksToWait == ( TickType_t ) 0 ) + { + /* For inheritance to have occurred there must have been an + initial timeout, and an adjusted timeout cannot become 0, as + if it were 0 the function would have exited. */ + #if( configUSE_MUTEXES == 1 ) + { + configASSERT( xInheritanceOccurred == pdFALSE ); + } + #endif /* configUSE_MUTEXES */ + + /* The semaphore count was 0 and no block time is specified + (or the block time has expired) so exit now. */ + taskEXIT_CRITICAL(); + traceQUEUE_RECEIVE_FAILED( pxQueue ); + return errQUEUE_EMPTY; + } + else if( xEntryTimeSet == pdFALSE ) + { + /* The semaphore count was 0 and a block time was specified + so configure the timeout structure ready to block. */ + vTaskInternalSetTimeOutState( &xTimeOut ); + xEntryTimeSet = pdTRUE; + } + else + { + /* Entry time was already set. */ + mtCOVERAGE_TEST_MARKER(); + } + } + } + taskEXIT_CRITICAL(); + + /* Interrupts and other tasks can give to and take from the semaphore + now the critical section has been exited. */ + + vTaskSuspendAll(); + prvLockQueue( pxQueue ); + + /* Update the timeout state to see if it has expired yet. */ + if( xTaskCheckForTimeOut( &xTimeOut, &xTicksToWait ) == pdFALSE ) + { + /* A block time is specified and not expired. If the semaphore + count is 0 then enter the Blocked state to wait for a semaphore to + become available. As semaphores are implemented with queues the + queue being empty is equivalent to the semaphore count being 0. */ + if( prvIsQueueEmpty( pxQueue ) != pdFALSE ) + { + traceBLOCKING_ON_QUEUE_RECEIVE( pxQueue ); + + #if ( configUSE_MUTEXES == 1 ) + { + if( pxQueue->uxQueueType == queueQUEUE_IS_MUTEX ) + { + taskENTER_CRITICAL(); + { + xInheritanceOccurred = xTaskPriorityInherit( pxQueue->u.xSemaphore.xMutexHolder ); + } + taskEXIT_CRITICAL(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + #endif + + vTaskPlaceOnEventList( &( pxQueue->xTasksWaitingToReceive ), xTicksToWait ); + prvUnlockQueue( pxQueue ); + if( xTaskResumeAll() == pdFALSE ) + { + portYIELD_WITHIN_API(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + /* There was no timeout and the semaphore count was not 0, so + attempt to take the semaphore again. */ + prvUnlockQueue( pxQueue ); + ( void ) xTaskResumeAll(); + } + } + else + { + /* Timed out. */ + prvUnlockQueue( pxQueue ); + ( void ) xTaskResumeAll(); + + /* If the semaphore count is 0 exit now as the timeout has + expired. Otherwise return to attempt to take the semaphore that is + known to be available. As semaphores are implemented by queues the + queue being empty is equivalent to the semaphore count being 0. */ + if( prvIsQueueEmpty( pxQueue ) != pdFALSE ) + { + #if ( configUSE_MUTEXES == 1 ) + { + /* xInheritanceOccurred could only have be set if + pxQueue->uxQueueType == queueQUEUE_IS_MUTEX so no need to + test the mutex type again to check it is actually a mutex. */ + if( xInheritanceOccurred != pdFALSE ) + { + taskENTER_CRITICAL(); + { + UBaseType_t uxHighestWaitingPriority; + + /* This task blocking on the mutex caused another + task to inherit this task's priority. Now this task + has timed out the priority should be disinherited + again, but only as low as the next highest priority + task that is waiting for the same mutex. */ + uxHighestWaitingPriority = prvGetDisinheritPriorityAfterTimeout( pxQueue ); + vTaskPriorityDisinheritAfterTimeout( pxQueue->u.xSemaphore.xMutexHolder, uxHighestWaitingPriority ); + } + taskEXIT_CRITICAL(); + } + } + #endif /* configUSE_MUTEXES */ + + traceQUEUE_RECEIVE_FAILED( pxQueue ); + return errQUEUE_EMPTY; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + } /*lint -restore */ +} +/*-----------------------------------------------------------*/ + +BaseType_t xQueuePeek( QueueHandle_t xQueue, void * const pvBuffer, TickType_t xTicksToWait ) +{ +BaseType_t xEntryTimeSet = pdFALSE; +TimeOut_t xTimeOut; +int8_t *pcOriginalReadPosition; +Queue_t * const pxQueue = xQueue; + + /* Check the pointer is not NULL. */ + configASSERT( ( pxQueue ) ); + + /* The buffer into which data is received can only be NULL if the data size + is zero (so no data is copied into the buffer. */ + configASSERT( !( ( ( pvBuffer ) == NULL ) && ( ( pxQueue )->uxItemSize != ( UBaseType_t ) 0U ) ) ); + + /* Cannot block if the scheduler is suspended. */ + #if ( ( INCLUDE_xTaskGetSchedulerState == 1 ) || ( configUSE_TIMERS == 1 ) ) + { + configASSERT( !( ( xTaskGetSchedulerState() == taskSCHEDULER_SUSPENDED ) && ( xTicksToWait != 0 ) ) ); + } + #endif + + + /*lint -save -e904 This function relaxes the coding standard somewhat to + allow return statements within the function itself. This is done in the + interest of execution time efficiency. */ + for( ;; ) + { + taskENTER_CRITICAL(); + { + const UBaseType_t uxMessagesWaiting = pxQueue->uxMessagesWaiting; + + /* Is there data in the queue now? To be running the calling task + must be the highest priority task wanting to access the queue. */ + if( uxMessagesWaiting > ( UBaseType_t ) 0 ) + { + /* Remember the read position so it can be reset after the data + is read from the queue as this function is only peeking the + data, not removing it. */ + pcOriginalReadPosition = pxQueue->u.xQueue.pcReadFrom; + + prvCopyDataFromQueue( pxQueue, pvBuffer ); + traceQUEUE_PEEK( pxQueue ); + + /* The data is not being removed, so reset the read pointer. */ + pxQueue->u.xQueue.pcReadFrom = pcOriginalReadPosition; + + /* The data is being left in the queue, so see if there are + any other tasks waiting for the data. */ + if( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToReceive ) ) == pdFALSE ) + { + if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToReceive ) ) != pdFALSE ) + { + /* The task waiting has a higher priority than this task. */ + queueYIELD_IF_USING_PREEMPTION(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + taskEXIT_CRITICAL(); + return pdPASS; + } + else + { + if( xTicksToWait == ( TickType_t ) 0 ) + { + /* The queue was empty and no block time is specified (or + the block time has expired) so leave now. */ + taskEXIT_CRITICAL(); + traceQUEUE_PEEK_FAILED( pxQueue ); + return errQUEUE_EMPTY; + } + else if( xEntryTimeSet == pdFALSE ) + { + /* The queue was empty and a block time was specified so + configure the timeout structure ready to enter the blocked + state. */ + vTaskInternalSetTimeOutState( &xTimeOut ); + xEntryTimeSet = pdTRUE; + } + else + { + /* Entry time was already set. */ + mtCOVERAGE_TEST_MARKER(); + } + } + } + taskEXIT_CRITICAL(); + + /* Interrupts and other tasks can send to and receive from the queue + now the critical section has been exited. */ + + vTaskSuspendAll(); + prvLockQueue( pxQueue ); + + /* Update the timeout state to see if it has expired yet. */ + if( xTaskCheckForTimeOut( &xTimeOut, &xTicksToWait ) == pdFALSE ) + { + /* Timeout has not expired yet, check to see if there is data in the + queue now, and if not enter the Blocked state to wait for data. */ + if( prvIsQueueEmpty( pxQueue ) != pdFALSE ) + { + traceBLOCKING_ON_QUEUE_PEEK( pxQueue ); + vTaskPlaceOnEventList( &( pxQueue->xTasksWaitingToReceive ), xTicksToWait ); + prvUnlockQueue( pxQueue ); + if( xTaskResumeAll() == pdFALSE ) + { + portYIELD_WITHIN_API(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + /* There is data in the queue now, so don't enter the blocked + state, instead return to try and obtain the data. */ + prvUnlockQueue( pxQueue ); + ( void ) xTaskResumeAll(); + } + } + else + { + /* The timeout has expired. If there is still no data in the queue + exit, otherwise go back and try to read the data again. */ + prvUnlockQueue( pxQueue ); + ( void ) xTaskResumeAll(); + + if( prvIsQueueEmpty( pxQueue ) != pdFALSE ) + { + traceQUEUE_PEEK_FAILED( pxQueue ); + return errQUEUE_EMPTY; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + } /*lint -restore */ +} +/*-----------------------------------------------------------*/ + +BaseType_t xQueueReceiveFromISR( QueueHandle_t xQueue, void * const pvBuffer, BaseType_t * const pxHigherPriorityTaskWoken ) +{ +BaseType_t xReturn; +UBaseType_t uxSavedInterruptStatus; +Queue_t * const pxQueue = xQueue; + + configASSERT( pxQueue ); + configASSERT( !( ( pvBuffer == NULL ) && ( pxQueue->uxItemSize != ( UBaseType_t ) 0U ) ) ); + + /* RTOS ports that support interrupt nesting have the concept of a maximum + system call (or maximum API call) interrupt priority. Interrupts that are + above the maximum system call priority are kept permanently enabled, even + when the RTOS kernel is in a critical section, but cannot make any calls to + FreeRTOS API functions. If configASSERT() is defined in FreeRTOSConfig.h + then portASSERT_IF_INTERRUPT_PRIORITY_INVALID() will result in an assertion + failure if a FreeRTOS API function is called from an interrupt that has been + assigned a priority above the configured maximum system call priority. + Only FreeRTOS functions that end in FromISR can be called from interrupts + that have been assigned a priority at or (logically) below the maximum + system call interrupt priority. FreeRTOS maintains a separate interrupt + safe API to ensure interrupt entry is as fast and as simple as possible. + More information (albeit Cortex-M specific) is provided on the following + link: http://www.freertos.org/RTOS-Cortex-M3-M4.html */ + portASSERT_IF_INTERRUPT_PRIORITY_INVALID(); + + uxSavedInterruptStatus = portSET_INTERRUPT_MASK_FROM_ISR(); + { + const UBaseType_t uxMessagesWaiting = pxQueue->uxMessagesWaiting; + + /* Cannot block in an ISR, so check there is data available. */ + if( uxMessagesWaiting > ( UBaseType_t ) 0 ) + { + const int8_t cRxLock = pxQueue->cRxLock; + + traceQUEUE_RECEIVE_FROM_ISR( pxQueue ); + + prvCopyDataFromQueue( pxQueue, pvBuffer ); + pxQueue->uxMessagesWaiting = uxMessagesWaiting - ( UBaseType_t ) 1; + + /* If the queue is locked the event list will not be modified. + Instead update the lock count so the task that unlocks the queue + will know that an ISR has removed data while the queue was + locked. */ + if( cRxLock == queueUNLOCKED ) + { + if( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToSend ) ) == pdFALSE ) + { + if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToSend ) ) != pdFALSE ) + { + /* The task waiting has a higher priority than us so + force a context switch. */ + if( pxHigherPriorityTaskWoken != NULL ) + { + *pxHigherPriorityTaskWoken = pdTRUE; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + /* Increment the lock count so the task that unlocks the queue + knows that data was removed while it was locked. */ + pxQueue->cRxLock = ( int8_t ) ( cRxLock + 1 ); + } + + xReturn = pdPASS; + } + else + { + xReturn = pdFAIL; + traceQUEUE_RECEIVE_FROM_ISR_FAILED( pxQueue ); + } + } + portCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedInterruptStatus ); + + return xReturn; +} +/*-----------------------------------------------------------*/ + +BaseType_t xQueuePeekFromISR( QueueHandle_t xQueue, void * const pvBuffer ) +{ +BaseType_t xReturn; +UBaseType_t uxSavedInterruptStatus; +int8_t *pcOriginalReadPosition; +Queue_t * const pxQueue = xQueue; + + configASSERT( pxQueue ); + configASSERT( !( ( pvBuffer == NULL ) && ( pxQueue->uxItemSize != ( UBaseType_t ) 0U ) ) ); + configASSERT( pxQueue->uxItemSize != 0 ); /* Can't peek a semaphore. */ + + /* RTOS ports that support interrupt nesting have the concept of a maximum + system call (or maximum API call) interrupt priority. Interrupts that are + above the maximum system call priority are kept permanently enabled, even + when the RTOS kernel is in a critical section, but cannot make any calls to + FreeRTOS API functions. If configASSERT() is defined in FreeRTOSConfig.h + then portASSERT_IF_INTERRUPT_PRIORITY_INVALID() will result in an assertion + failure if a FreeRTOS API function is called from an interrupt that has been + assigned a priority above the configured maximum system call priority. + Only FreeRTOS functions that end in FromISR can be called from interrupts + that have been assigned a priority at or (logically) below the maximum + system call interrupt priority. FreeRTOS maintains a separate interrupt + safe API to ensure interrupt entry is as fast and as simple as possible. + More information (albeit Cortex-M specific) is provided on the following + link: http://www.freertos.org/RTOS-Cortex-M3-M4.html */ + portASSERT_IF_INTERRUPT_PRIORITY_INVALID(); + + uxSavedInterruptStatus = portSET_INTERRUPT_MASK_FROM_ISR(); + { + /* Cannot block in an ISR, so check there is data available. */ + if( pxQueue->uxMessagesWaiting > ( UBaseType_t ) 0 ) + { + traceQUEUE_PEEK_FROM_ISR( pxQueue ); + + /* Remember the read position so it can be reset as nothing is + actually being removed from the queue. */ + pcOriginalReadPosition = pxQueue->u.xQueue.pcReadFrom; + prvCopyDataFromQueue( pxQueue, pvBuffer ); + pxQueue->u.xQueue.pcReadFrom = pcOriginalReadPosition; + + xReturn = pdPASS; + } + else + { + xReturn = pdFAIL; + traceQUEUE_PEEK_FROM_ISR_FAILED( pxQueue ); + } + } + portCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedInterruptStatus ); + + return xReturn; +} +/*-----------------------------------------------------------*/ + +UBaseType_t uxQueueMessagesWaiting( const QueueHandle_t xQueue ) +{ +UBaseType_t uxReturn; + + configASSERT( xQueue ); + + taskENTER_CRITICAL(); + { + uxReturn = ( ( Queue_t * ) xQueue )->uxMessagesWaiting; + } + taskEXIT_CRITICAL(); + + return uxReturn; +} /*lint !e818 Pointer cannot be declared const as xQueue is a typedef not pointer. */ +/*-----------------------------------------------------------*/ + +UBaseType_t uxQueueSpacesAvailable( const QueueHandle_t xQueue ) +{ +UBaseType_t uxReturn; +Queue_t * const pxQueue = xQueue; + + configASSERT( pxQueue ); + + taskENTER_CRITICAL(); + { + uxReturn = pxQueue->uxLength - pxQueue->uxMessagesWaiting; + } + taskEXIT_CRITICAL(); + + return uxReturn; +} /*lint !e818 Pointer cannot be declared const as xQueue is a typedef not pointer. */ +/*-----------------------------------------------------------*/ + +UBaseType_t uxQueueMessagesWaitingFromISR( const QueueHandle_t xQueue ) +{ +UBaseType_t uxReturn; +Queue_t * const pxQueue = xQueue; + + configASSERT( pxQueue ); + uxReturn = pxQueue->uxMessagesWaiting; + + return uxReturn; +} /*lint !e818 Pointer cannot be declared const as xQueue is a typedef not pointer. */ +/*-----------------------------------------------------------*/ + +void vQueueDelete( QueueHandle_t xQueue ) +{ +Queue_t * const pxQueue = xQueue; + + configASSERT( pxQueue ); + traceQUEUE_DELETE( pxQueue ); + + #if ( configQUEUE_REGISTRY_SIZE > 0 ) + { + vQueueUnregisterQueue( pxQueue ); + } + #endif + + #if( ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) && ( configSUPPORT_STATIC_ALLOCATION == 0 ) ) + { + /* The queue can only have been allocated dynamically - free it + again. */ + vPortFree( pxQueue ); + } + #elif( ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) && ( configSUPPORT_STATIC_ALLOCATION == 1 ) ) + { + /* The queue could have been allocated statically or dynamically, so + check before attempting to free the memory. */ + if( pxQueue->ucStaticallyAllocated == ( uint8_t ) pdFALSE ) + { + vPortFree( pxQueue ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + #else + { + /* The queue must have been statically allocated, so is not going to be + deleted. Avoid compiler warnings about the unused parameter. */ + ( void ) pxQueue; + } + #endif /* configSUPPORT_DYNAMIC_ALLOCATION */ +} +/*-----------------------------------------------------------*/ + +#if ( configUSE_TRACE_FACILITY == 1 ) + + UBaseType_t uxQueueGetQueueNumber( QueueHandle_t xQueue ) + { + return ( ( Queue_t * ) xQueue )->uxQueueNumber; + } + +#endif /* configUSE_TRACE_FACILITY */ +/*-----------------------------------------------------------*/ + +#if ( configUSE_TRACE_FACILITY == 1 ) + + void vQueueSetQueueNumber( QueueHandle_t xQueue, UBaseType_t uxQueueNumber ) + { + ( ( Queue_t * ) xQueue )->uxQueueNumber = uxQueueNumber; + } + +#endif /* configUSE_TRACE_FACILITY */ +/*-----------------------------------------------------------*/ + +#if ( configUSE_TRACE_FACILITY == 1 ) + + uint8_t ucQueueGetQueueType( QueueHandle_t xQueue ) + { + return ( ( Queue_t * ) xQueue )->ucQueueType; + } + +#endif /* configUSE_TRACE_FACILITY */ +/*-----------------------------------------------------------*/ + +#if( configUSE_MUTEXES == 1 ) + + static UBaseType_t prvGetDisinheritPriorityAfterTimeout( const Queue_t * const pxQueue ) + { + UBaseType_t uxHighestPriorityOfWaitingTasks; + + /* If a task waiting for a mutex causes the mutex holder to inherit a + priority, but the waiting task times out, then the holder should + disinherit the priority - but only down to the highest priority of any + other tasks that are waiting for the same mutex. For this purpose, + return the priority of the highest priority task that is waiting for the + mutex. */ + if( listCURRENT_LIST_LENGTH( &( pxQueue->xTasksWaitingToReceive ) ) > 0U ) + { + uxHighestPriorityOfWaitingTasks = ( UBaseType_t ) configMAX_PRIORITIES - ( UBaseType_t ) listGET_ITEM_VALUE_OF_HEAD_ENTRY( &( pxQueue->xTasksWaitingToReceive ) ); + } + else + { + uxHighestPriorityOfWaitingTasks = tskIDLE_PRIORITY; + } + + return uxHighestPriorityOfWaitingTasks; + } + +#endif /* configUSE_MUTEXES */ +/*-----------------------------------------------------------*/ + +static BaseType_t prvCopyDataToQueue( Queue_t * const pxQueue, const void *pvItemToQueue, const BaseType_t xPosition ) +{ +BaseType_t xReturn = pdFALSE; +UBaseType_t uxMessagesWaiting; + + /* This function is called from a critical section. */ + + uxMessagesWaiting = pxQueue->uxMessagesWaiting; + + if( pxQueue->uxItemSize == ( UBaseType_t ) 0 ) + { + #if ( configUSE_MUTEXES == 1 ) + { + if( pxQueue->uxQueueType == queueQUEUE_IS_MUTEX ) + { + /* The mutex is no longer being held. */ + xReturn = xTaskPriorityDisinherit( pxQueue->u.xSemaphore.xMutexHolder ); + pxQueue->u.xSemaphore.xMutexHolder = NULL; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + #endif /* configUSE_MUTEXES */ + } + else if( xPosition == queueSEND_TO_BACK ) + { + ( void ) memcpy( ( void * ) pxQueue->pcWriteTo, pvItemToQueue, ( size_t ) pxQueue->uxItemSize ); /*lint !e961 !e418 !e9087 MISRA exception as the casts are only redundant for some ports, plus previous logic ensures a null pointer can only be passed to memcpy() if the copy size is 0. Cast to void required by function signature and safe as no alignment requirement and copy length specified in bytes. */ + pxQueue->pcWriteTo += pxQueue->uxItemSize; /*lint !e9016 Pointer arithmetic on char types ok, especially in this use case where it is the clearest way of conveying intent. */ + if( pxQueue->pcWriteTo >= pxQueue->u.xQueue.pcTail ) /*lint !e946 MISRA exception justified as comparison of pointers is the cleanest solution. */ + { + pxQueue->pcWriteTo = pxQueue->pcHead; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + ( void ) memcpy( ( void * ) pxQueue->u.xQueue.pcReadFrom, pvItemToQueue, ( size_t ) pxQueue->uxItemSize ); /*lint !e961 !e9087 !e418 MISRA exception as the casts are only redundant for some ports. Cast to void required by function signature and safe as no alignment requirement and copy length specified in bytes. Assert checks null pointer only used when length is 0. */ + pxQueue->u.xQueue.pcReadFrom -= pxQueue->uxItemSize; + if( pxQueue->u.xQueue.pcReadFrom < pxQueue->pcHead ) /*lint !e946 MISRA exception justified as comparison of pointers is the cleanest solution. */ + { + pxQueue->u.xQueue.pcReadFrom = ( pxQueue->u.xQueue.pcTail - pxQueue->uxItemSize ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + if( xPosition == queueOVERWRITE ) + { + if( uxMessagesWaiting > ( UBaseType_t ) 0 ) + { + /* An item is not being added but overwritten, so subtract + one from the recorded number of items in the queue so when + one is added again below the number of recorded items remains + correct. */ + --uxMessagesWaiting; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + + pxQueue->uxMessagesWaiting = uxMessagesWaiting + ( UBaseType_t ) 1; + + return xReturn; +} +/*-----------------------------------------------------------*/ + +static void prvCopyDataFromQueue( Queue_t * const pxQueue, void * const pvBuffer ) +{ + if( pxQueue->uxItemSize != ( UBaseType_t ) 0 ) + { + pxQueue->u.xQueue.pcReadFrom += pxQueue->uxItemSize; /*lint !e9016 Pointer arithmetic on char types ok, especially in this use case where it is the clearest way of conveying intent. */ + if( pxQueue->u.xQueue.pcReadFrom >= pxQueue->u.xQueue.pcTail ) /*lint !e946 MISRA exception justified as use of the relational operator is the cleanest solutions. */ + { + pxQueue->u.xQueue.pcReadFrom = pxQueue->pcHead; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + ( void ) memcpy( ( void * ) pvBuffer, ( void * ) pxQueue->u.xQueue.pcReadFrom, ( size_t ) pxQueue->uxItemSize ); /*lint !e961 !e418 !e9087 MISRA exception as the casts are only redundant for some ports. Also previous logic ensures a null pointer can only be passed to memcpy() when the count is 0. Cast to void required by function signature and safe as no alignment requirement and copy length specified in bytes. */ + } +} +/*-----------------------------------------------------------*/ + +static void prvUnlockQueue( Queue_t * const pxQueue ) +{ + /* THIS FUNCTION MUST BE CALLED WITH THE SCHEDULER SUSPENDED. */ + + /* The lock counts contains the number of extra data items placed or + removed from the queue while the queue was locked. When a queue is + locked items can be added or removed, but the event lists cannot be + updated. */ + taskENTER_CRITICAL(); + { + int8_t cTxLock = pxQueue->cTxLock; + + /* See if data was added to the queue while it was locked. */ + while( cTxLock > queueLOCKED_UNMODIFIED ) + { + /* Data was posted while the queue was locked. Are any tasks + blocked waiting for data to become available? */ + #if ( configUSE_QUEUE_SETS == 1 ) + { + if( pxQueue->pxQueueSetContainer != NULL ) + { + if( prvNotifyQueueSetContainer( pxQueue ) != pdFALSE ) + { + /* The queue is a member of a queue set, and posting to + the queue set caused a higher priority task to unblock. + A context switch is required. */ + vTaskMissedYield(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + /* Tasks that are removed from the event list will get + added to the pending ready list as the scheduler is still + suspended. */ + if( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToReceive ) ) == pdFALSE ) + { + if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToReceive ) ) != pdFALSE ) + { + /* The task waiting has a higher priority so record that a + context switch is required. */ + vTaskMissedYield(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + break; + } + } + } + #else /* configUSE_QUEUE_SETS */ + { + /* Tasks that are removed from the event list will get added to + the pending ready list as the scheduler is still suspended. */ + if( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToReceive ) ) == pdFALSE ) + { + if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToReceive ) ) != pdFALSE ) + { + /* The task waiting has a higher priority so record that + a context switch is required. */ + vTaskMissedYield(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + break; + } + } + #endif /* configUSE_QUEUE_SETS */ + + --cTxLock; + } + + pxQueue->cTxLock = queueUNLOCKED; + } + taskEXIT_CRITICAL(); + + /* Do the same for the Rx lock. */ + taskENTER_CRITICAL(); + { + int8_t cRxLock = pxQueue->cRxLock; + + while( cRxLock > queueLOCKED_UNMODIFIED ) + { + if( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToSend ) ) == pdFALSE ) + { + if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToSend ) ) != pdFALSE ) + { + vTaskMissedYield(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + --cRxLock; + } + else + { + break; + } + } + + pxQueue->cRxLock = queueUNLOCKED; + } + taskEXIT_CRITICAL(); +} +/*-----------------------------------------------------------*/ + +static BaseType_t prvIsQueueEmpty( const Queue_t *pxQueue ) +{ +BaseType_t xReturn; + + taskENTER_CRITICAL(); + { + if( pxQueue->uxMessagesWaiting == ( UBaseType_t ) 0 ) + { + xReturn = pdTRUE; + } + else + { + xReturn = pdFALSE; + } + } + taskEXIT_CRITICAL(); + + return xReturn; +} +/*-----------------------------------------------------------*/ + +BaseType_t xQueueIsQueueEmptyFromISR( const QueueHandle_t xQueue ) +{ +BaseType_t xReturn; +Queue_t * const pxQueue = xQueue; + + configASSERT( pxQueue ); + if( pxQueue->uxMessagesWaiting == ( UBaseType_t ) 0 ) + { + xReturn = pdTRUE; + } + else + { + xReturn = pdFALSE; + } + + return xReturn; +} /*lint !e818 xQueue could not be pointer to const because it is a typedef. */ +/*-----------------------------------------------------------*/ + +static BaseType_t prvIsQueueFull( const Queue_t *pxQueue ) +{ +BaseType_t xReturn; + + taskENTER_CRITICAL(); + { + if( pxQueue->uxMessagesWaiting == pxQueue->uxLength ) + { + xReturn = pdTRUE; + } + else + { + xReturn = pdFALSE; + } + } + taskEXIT_CRITICAL(); + + return xReturn; +} +/*-----------------------------------------------------------*/ + +BaseType_t xQueueIsQueueFullFromISR( const QueueHandle_t xQueue ) +{ +BaseType_t xReturn; +Queue_t * const pxQueue = xQueue; + + configASSERT( pxQueue ); + if( pxQueue->uxMessagesWaiting == pxQueue->uxLength ) + { + xReturn = pdTRUE; + } + else + { + xReturn = pdFALSE; + } + + return xReturn; +} /*lint !e818 xQueue could not be pointer to const because it is a typedef. */ +/*-----------------------------------------------------------*/ + +#if ( configUSE_CO_ROUTINES == 1 ) + + BaseType_t xQueueCRSend( QueueHandle_t xQueue, const void *pvItemToQueue, TickType_t xTicksToWait ) + { + BaseType_t xReturn; + Queue_t * const pxQueue = xQueue; + + /* If the queue is already full we may have to block. A critical section + is required to prevent an interrupt removing something from the queue + between the check to see if the queue is full and blocking on the queue. */ + portDISABLE_INTERRUPTS(); + { + if( prvIsQueueFull( pxQueue ) != pdFALSE ) + { + /* The queue is full - do we want to block or just leave without + posting? */ + if( xTicksToWait > ( TickType_t ) 0 ) + { + /* As this is called from a coroutine we cannot block directly, but + return indicating that we need to block. */ + vCoRoutineAddToDelayedList( xTicksToWait, &( pxQueue->xTasksWaitingToSend ) ); + portENABLE_INTERRUPTS(); + return errQUEUE_BLOCKED; + } + else + { + portENABLE_INTERRUPTS(); + return errQUEUE_FULL; + } + } + } + portENABLE_INTERRUPTS(); + + portDISABLE_INTERRUPTS(); + { + if( pxQueue->uxMessagesWaiting < pxQueue->uxLength ) + { + /* There is room in the queue, copy the data into the queue. */ + prvCopyDataToQueue( pxQueue, pvItemToQueue, queueSEND_TO_BACK ); + xReturn = pdPASS; + + /* Were any co-routines waiting for data to become available? */ + if( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToReceive ) ) == pdFALSE ) + { + /* In this instance the co-routine could be placed directly + into the ready list as we are within a critical section. + Instead the same pending ready list mechanism is used as if + the event were caused from within an interrupt. */ + if( xCoRoutineRemoveFromEventList( &( pxQueue->xTasksWaitingToReceive ) ) != pdFALSE ) + { + /* The co-routine waiting has a higher priority so record + that a yield might be appropriate. */ + xReturn = errQUEUE_YIELD; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + xReturn = errQUEUE_FULL; + } + } + portENABLE_INTERRUPTS(); + + return xReturn; + } + +#endif /* configUSE_CO_ROUTINES */ +/*-----------------------------------------------------------*/ + +#if ( configUSE_CO_ROUTINES == 1 ) + + BaseType_t xQueueCRReceive( QueueHandle_t xQueue, void *pvBuffer, TickType_t xTicksToWait ) + { + BaseType_t xReturn; + Queue_t * const pxQueue = xQueue; + + /* If the queue is already empty we may have to block. A critical section + is required to prevent an interrupt adding something to the queue + between the check to see if the queue is empty and blocking on the queue. */ + portDISABLE_INTERRUPTS(); + { + if( pxQueue->uxMessagesWaiting == ( UBaseType_t ) 0 ) + { + /* There are no messages in the queue, do we want to block or just + leave with nothing? */ + if( xTicksToWait > ( TickType_t ) 0 ) + { + /* As this is a co-routine we cannot block directly, but return + indicating that we need to block. */ + vCoRoutineAddToDelayedList( xTicksToWait, &( pxQueue->xTasksWaitingToReceive ) ); + portENABLE_INTERRUPTS(); + return errQUEUE_BLOCKED; + } + else + { + portENABLE_INTERRUPTS(); + return errQUEUE_FULL; + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + portENABLE_INTERRUPTS(); + + portDISABLE_INTERRUPTS(); + { + if( pxQueue->uxMessagesWaiting > ( UBaseType_t ) 0 ) + { + /* Data is available from the queue. */ + pxQueue->u.xQueue.pcReadFrom += pxQueue->uxItemSize; + if( pxQueue->u.xQueue.pcReadFrom >= pxQueue->u.xQueue.pcTail ) + { + pxQueue->u.xQueue.pcReadFrom = pxQueue->pcHead; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + --( pxQueue->uxMessagesWaiting ); + ( void ) memcpy( ( void * ) pvBuffer, ( void * ) pxQueue->u.xQueue.pcReadFrom, ( unsigned ) pxQueue->uxItemSize ); + + xReturn = pdPASS; + + /* Were any co-routines waiting for space to become available? */ + if( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToSend ) ) == pdFALSE ) + { + /* In this instance the co-routine could be placed directly + into the ready list as we are within a critical section. + Instead the same pending ready list mechanism is used as if + the event were caused from within an interrupt. */ + if( xCoRoutineRemoveFromEventList( &( pxQueue->xTasksWaitingToSend ) ) != pdFALSE ) + { + xReturn = errQUEUE_YIELD; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + xReturn = pdFAIL; + } + } + portENABLE_INTERRUPTS(); + + return xReturn; + } + +#endif /* configUSE_CO_ROUTINES */ +/*-----------------------------------------------------------*/ + +#if ( configUSE_CO_ROUTINES == 1 ) + + BaseType_t xQueueCRSendFromISR( QueueHandle_t xQueue, const void *pvItemToQueue, BaseType_t xCoRoutinePreviouslyWoken ) + { + Queue_t * const pxQueue = xQueue; + + /* Cannot block within an ISR so if there is no space on the queue then + exit without doing anything. */ + if( pxQueue->uxMessagesWaiting < pxQueue->uxLength ) + { + prvCopyDataToQueue( pxQueue, pvItemToQueue, queueSEND_TO_BACK ); + + /* We only want to wake one co-routine per ISR, so check that a + co-routine has not already been woken. */ + if( xCoRoutinePreviouslyWoken == pdFALSE ) + { + if( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToReceive ) ) == pdFALSE ) + { + if( xCoRoutineRemoveFromEventList( &( pxQueue->xTasksWaitingToReceive ) ) != pdFALSE ) + { + return pdTRUE; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + return xCoRoutinePreviouslyWoken; + } + +#endif /* configUSE_CO_ROUTINES */ +/*-----------------------------------------------------------*/ + +#if ( configUSE_CO_ROUTINES == 1 ) + + BaseType_t xQueueCRReceiveFromISR( QueueHandle_t xQueue, void *pvBuffer, BaseType_t *pxCoRoutineWoken ) + { + BaseType_t xReturn; + Queue_t * const pxQueue = xQueue; + + /* We cannot block from an ISR, so check there is data available. If + not then just leave without doing anything. */ + if( pxQueue->uxMessagesWaiting > ( UBaseType_t ) 0 ) + { + /* Copy the data from the queue. */ + pxQueue->u.xQueue.pcReadFrom += pxQueue->uxItemSize; + if( pxQueue->u.xQueue.pcReadFrom >= pxQueue->u.xQueue.pcTail ) + { + pxQueue->u.xQueue.pcReadFrom = pxQueue->pcHead; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + --( pxQueue->uxMessagesWaiting ); + ( void ) memcpy( ( void * ) pvBuffer, ( void * ) pxQueue->u.xQueue.pcReadFrom, ( unsigned ) pxQueue->uxItemSize ); + + if( ( *pxCoRoutineWoken ) == pdFALSE ) + { + if( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToSend ) ) == pdFALSE ) + { + if( xCoRoutineRemoveFromEventList( &( pxQueue->xTasksWaitingToSend ) ) != pdFALSE ) + { + *pxCoRoutineWoken = pdTRUE; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + xReturn = pdPASS; + } + else + { + xReturn = pdFAIL; + } + + return xReturn; + } + +#endif /* configUSE_CO_ROUTINES */ +/*-----------------------------------------------------------*/ + +#if ( configQUEUE_REGISTRY_SIZE > 0 ) + + void vQueueAddToRegistry( QueueHandle_t xQueue, const char *pcQueueName ) /*lint !e971 Unqualified char types are allowed for strings and single characters only. */ + { + UBaseType_t ux; + + /* See if there is an empty space in the registry. A NULL name denotes + a free slot. */ + for( ux = ( UBaseType_t ) 0U; ux < ( UBaseType_t ) configQUEUE_REGISTRY_SIZE; ux++ ) + { + if( xQueueRegistry[ ux ].pcQueueName == NULL ) + { + /* Store the information on this queue. */ + xQueueRegistry[ ux ].pcQueueName = pcQueueName; + xQueueRegistry[ ux ].xHandle = xQueue; + + traceQUEUE_REGISTRY_ADD( xQueue, pcQueueName ); + break; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + } + +#endif /* configQUEUE_REGISTRY_SIZE */ +/*-----------------------------------------------------------*/ + +#if ( configQUEUE_REGISTRY_SIZE > 0 ) + + const char *pcQueueGetName( QueueHandle_t xQueue ) /*lint !e971 Unqualified char types are allowed for strings and single characters only. */ + { + UBaseType_t ux; + const char *pcReturn = NULL; /*lint !e971 Unqualified char types are allowed for strings and single characters only. */ + + /* Note there is nothing here to protect against another task adding or + removing entries from the registry while it is being searched. */ + for( ux = ( UBaseType_t ) 0U; ux < ( UBaseType_t ) configQUEUE_REGISTRY_SIZE; ux++ ) + { + if( xQueueRegistry[ ux ].xHandle == xQueue ) + { + pcReturn = xQueueRegistry[ ux ].pcQueueName; + break; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + + return pcReturn; + } /*lint !e818 xQueue cannot be a pointer to const because it is a typedef. */ + +#endif /* configQUEUE_REGISTRY_SIZE */ +/*-----------------------------------------------------------*/ + +#if ( configQUEUE_REGISTRY_SIZE > 0 ) + + void vQueueUnregisterQueue( QueueHandle_t xQueue ) + { + UBaseType_t ux; + + /* See if the handle of the queue being unregistered in actually in the + registry. */ + for( ux = ( UBaseType_t ) 0U; ux < ( UBaseType_t ) configQUEUE_REGISTRY_SIZE; ux++ ) + { + if( xQueueRegistry[ ux ].xHandle == xQueue ) + { + /* Set the name to NULL to show that this slot if free again. */ + xQueueRegistry[ ux ].pcQueueName = NULL; + + /* Set the handle to NULL to ensure the same queue handle cannot + appear in the registry twice if it is added, removed, then + added again. */ + xQueueRegistry[ ux ].xHandle = ( QueueHandle_t ) 0; + break; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + + } /*lint !e818 xQueue could not be pointer to const because it is a typedef. */ + +#endif /* configQUEUE_REGISTRY_SIZE */ +/*-----------------------------------------------------------*/ + +#if ( configUSE_TIMERS == 1 ) + + void vQueueWaitForMessageRestricted( QueueHandle_t xQueue, TickType_t xTicksToWait, const BaseType_t xWaitIndefinitely ) + { + Queue_t * const pxQueue = xQueue; + + /* This function should not be called by application code hence the + 'Restricted' in its name. It is not part of the public API. It is + designed for use by kernel code, and has special calling requirements. + It can result in vListInsert() being called on a list that can only + possibly ever have one item in it, so the list will be fast, but even + so it should be called with the scheduler locked and not from a critical + section. */ + + /* Only do anything if there are no messages in the queue. This function + will not actually cause the task to block, just place it on a blocked + list. It will not block until the scheduler is unlocked - at which + time a yield will be performed. If an item is added to the queue while + the queue is locked, and the calling task blocks on the queue, then the + calling task will be immediately unblocked when the queue is unlocked. */ + prvLockQueue( pxQueue ); + if( pxQueue->uxMessagesWaiting == ( UBaseType_t ) 0U ) + { + /* There is nothing in the queue, block for the specified period. */ + vTaskPlaceOnEventListRestricted( &( pxQueue->xTasksWaitingToReceive ), xTicksToWait, xWaitIndefinitely ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + prvUnlockQueue( pxQueue ); + } + +#endif /* configUSE_TIMERS */ +/*-----------------------------------------------------------*/ + +#if( ( configUSE_QUEUE_SETS == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) ) + + QueueSetHandle_t xQueueCreateSet( const UBaseType_t uxEventQueueLength ) + { + QueueSetHandle_t pxQueue; + + pxQueue = xQueueGenericCreate( uxEventQueueLength, ( UBaseType_t ) sizeof( Queue_t * ), queueQUEUE_TYPE_SET ); + + return pxQueue; + } + +#endif /* configUSE_QUEUE_SETS */ +/*-----------------------------------------------------------*/ + +#if ( configUSE_QUEUE_SETS == 1 ) + + BaseType_t xQueueAddToSet( QueueSetMemberHandle_t xQueueOrSemaphore, QueueSetHandle_t xQueueSet ) + { + BaseType_t xReturn; + + taskENTER_CRITICAL(); + { + if( ( ( Queue_t * ) xQueueOrSemaphore )->pxQueueSetContainer != NULL ) + { + /* Cannot add a queue/semaphore to more than one queue set. */ + xReturn = pdFAIL; + } + else if( ( ( Queue_t * ) xQueueOrSemaphore )->uxMessagesWaiting != ( UBaseType_t ) 0 ) + { + /* Cannot add a queue/semaphore to a queue set if there are already + items in the queue/semaphore. */ + xReturn = pdFAIL; + } + else + { + ( ( Queue_t * ) xQueueOrSemaphore )->pxQueueSetContainer = xQueueSet; + xReturn = pdPASS; + } + } + taskEXIT_CRITICAL(); + + return xReturn; + } + +#endif /* configUSE_QUEUE_SETS */ +/*-----------------------------------------------------------*/ + +#if ( configUSE_QUEUE_SETS == 1 ) + + BaseType_t xQueueRemoveFromSet( QueueSetMemberHandle_t xQueueOrSemaphore, QueueSetHandle_t xQueueSet ) + { + BaseType_t xReturn; + Queue_t * const pxQueueOrSemaphore = ( Queue_t * ) xQueueOrSemaphore; + + if( pxQueueOrSemaphore->pxQueueSetContainer != xQueueSet ) + { + /* The queue was not a member of the set. */ + xReturn = pdFAIL; + } + else if( pxQueueOrSemaphore->uxMessagesWaiting != ( UBaseType_t ) 0 ) + { + /* It is dangerous to remove a queue from a set when the queue is + not empty because the queue set will still hold pending events for + the queue. */ + xReturn = pdFAIL; + } + else + { + taskENTER_CRITICAL(); + { + /* The queue is no longer contained in the set. */ + pxQueueOrSemaphore->pxQueueSetContainer = NULL; + } + taskEXIT_CRITICAL(); + xReturn = pdPASS; + } + + return xReturn; + } /*lint !e818 xQueueSet could not be declared as pointing to const as it is a typedef. */ + +#endif /* configUSE_QUEUE_SETS */ +/*-----------------------------------------------------------*/ + +#if ( configUSE_QUEUE_SETS == 1 ) + + QueueSetMemberHandle_t xQueueSelectFromSet( QueueSetHandle_t xQueueSet, TickType_t const xTicksToWait ) + { + QueueSetMemberHandle_t xReturn = NULL; + + ( void ) xQueueReceive( ( QueueHandle_t ) xQueueSet, &xReturn, xTicksToWait ); /*lint !e961 Casting from one typedef to another is not redundant. */ + return xReturn; + } + +#endif /* configUSE_QUEUE_SETS */ +/*-----------------------------------------------------------*/ + +#if ( configUSE_QUEUE_SETS == 1 ) + + QueueSetMemberHandle_t xQueueSelectFromSetFromISR( QueueSetHandle_t xQueueSet ) + { + QueueSetMemberHandle_t xReturn = NULL; + + ( void ) xQueueReceiveFromISR( ( QueueHandle_t ) xQueueSet, &xReturn, NULL ); /*lint !e961 Casting from one typedef to another is not redundant. */ + return xReturn; + } + +#endif /* configUSE_QUEUE_SETS */ +/*-----------------------------------------------------------*/ + +#if ( configUSE_QUEUE_SETS == 1 ) + + static BaseType_t prvNotifyQueueSetContainer( const Queue_t * const pxQueue ) + { + Queue_t *pxQueueSetContainer = pxQueue->pxQueueSetContainer; + BaseType_t xReturn = pdFALSE; + + /* This function must be called form a critical section. */ + + configASSERT( pxQueueSetContainer ); + configASSERT( pxQueueSetContainer->uxMessagesWaiting < pxQueueSetContainer->uxLength ); + + if( pxQueueSetContainer->uxMessagesWaiting < pxQueueSetContainer->uxLength ) + { + const int8_t cTxLock = pxQueueSetContainer->cTxLock; + + traceQUEUE_SEND( pxQueueSetContainer ); + + /* The data copied is the handle of the queue that contains data. */ + xReturn = prvCopyDataToQueue( pxQueueSetContainer, &pxQueue, queueSEND_TO_BACK ); + + if( cTxLock == queueUNLOCKED ) + { + if( listLIST_IS_EMPTY( &( pxQueueSetContainer->xTasksWaitingToReceive ) ) == pdFALSE ) + { + if( xTaskRemoveFromEventList( &( pxQueueSetContainer->xTasksWaitingToReceive ) ) != pdFALSE ) + { + /* The task waiting has a higher priority. */ + xReturn = pdTRUE; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + pxQueueSetContainer->cTxLock = ( int8_t ) ( cTxLock + 1 ); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + return xReturn; + } + +#endif /* configUSE_QUEUE_SETS */ + + + + + + + + + + + + diff --git a/firmware/Middlewares/Third_Party/FreeRTOS/Source/stream_buffer.c b/firmware/Middlewares/Third_Party/FreeRTOS/Source/stream_buffer.c new file mode 100644 index 0000000..7ad5d54 --- /dev/null +++ b/firmware/Middlewares/Third_Party/FreeRTOS/Source/stream_buffer.c @@ -0,0 +1,1263 @@ +/* + * FreeRTOS Kernel V10.3.1 + * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * http://www.FreeRTOS.org + * http://aws.amazon.com/freertos + * + * 1 tab == 4 spaces! + */ + +/* Standard includes. */ +#include +#include + +/* Defining MPU_WRAPPERS_INCLUDED_FROM_API_FILE prevents task.h from redefining +all the API functions to use the MPU wrappers. That should only be done when +task.h is included from an application file. */ +#define MPU_WRAPPERS_INCLUDED_FROM_API_FILE + +/* FreeRTOS includes. */ +#include "FreeRTOS.h" +#include "task.h" +#include "stream_buffer.h" + +#if( configUSE_TASK_NOTIFICATIONS != 1 ) + #error configUSE_TASK_NOTIFICATIONS must be set to 1 to build stream_buffer.c +#endif + +/* Lint e961, e9021 and e750 are suppressed as a MISRA exception justified +because the MPU ports require MPU_WRAPPERS_INCLUDED_FROM_API_FILE to be defined +for the header files above, but not in this file, in order to generate the +correct privileged Vs unprivileged linkage and placement. */ +#undef MPU_WRAPPERS_INCLUDED_FROM_API_FILE /*lint !e961 !e750 !e9021. */ + +/* If the user has not provided application specific Rx notification macros, +or #defined the notification macros away, them provide default implementations +that uses task notifications. */ +/*lint -save -e9026 Function like macros allowed and needed here so they can be overidden. */ +#ifndef sbRECEIVE_COMPLETED + #define sbRECEIVE_COMPLETED( pxStreamBuffer ) \ + vTaskSuspendAll(); \ + { \ + if( ( pxStreamBuffer )->xTaskWaitingToSend != NULL ) \ + { \ + ( void ) xTaskNotify( ( pxStreamBuffer )->xTaskWaitingToSend, \ + ( uint32_t ) 0, \ + eNoAction ); \ + ( pxStreamBuffer )->xTaskWaitingToSend = NULL; \ + } \ + } \ + ( void ) xTaskResumeAll(); +#endif /* sbRECEIVE_COMPLETED */ + +#ifndef sbRECEIVE_COMPLETED_FROM_ISR + #define sbRECEIVE_COMPLETED_FROM_ISR( pxStreamBuffer, \ + pxHigherPriorityTaskWoken ) \ + { \ + UBaseType_t uxSavedInterruptStatus; \ + \ + uxSavedInterruptStatus = ( UBaseType_t ) portSET_INTERRUPT_MASK_FROM_ISR(); \ + { \ + if( ( pxStreamBuffer )->xTaskWaitingToSend != NULL ) \ + { \ + ( void ) xTaskNotifyFromISR( ( pxStreamBuffer )->xTaskWaitingToSend, \ + ( uint32_t ) 0, \ + eNoAction, \ + pxHigherPriorityTaskWoken ); \ + ( pxStreamBuffer )->xTaskWaitingToSend = NULL; \ + } \ + } \ + portCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedInterruptStatus ); \ + } +#endif /* sbRECEIVE_COMPLETED_FROM_ISR */ + +/* If the user has not provided an application specific Tx notification macro, +or #defined the notification macro away, them provide a default implementation +that uses task notifications. */ +#ifndef sbSEND_COMPLETED + #define sbSEND_COMPLETED( pxStreamBuffer ) \ + vTaskSuspendAll(); \ + { \ + if( ( pxStreamBuffer )->xTaskWaitingToReceive != NULL ) \ + { \ + ( void ) xTaskNotify( ( pxStreamBuffer )->xTaskWaitingToReceive, \ + ( uint32_t ) 0, \ + eNoAction ); \ + ( pxStreamBuffer )->xTaskWaitingToReceive = NULL; \ + } \ + } \ + ( void ) xTaskResumeAll(); +#endif /* sbSEND_COMPLETED */ + +#ifndef sbSEND_COMPLETE_FROM_ISR + #define sbSEND_COMPLETE_FROM_ISR( pxStreamBuffer, pxHigherPriorityTaskWoken ) \ + { \ + UBaseType_t uxSavedInterruptStatus; \ + \ + uxSavedInterruptStatus = ( UBaseType_t ) portSET_INTERRUPT_MASK_FROM_ISR(); \ + { \ + if( ( pxStreamBuffer )->xTaskWaitingToReceive != NULL ) \ + { \ + ( void ) xTaskNotifyFromISR( ( pxStreamBuffer )->xTaskWaitingToReceive, \ + ( uint32_t ) 0, \ + eNoAction, \ + pxHigherPriorityTaskWoken ); \ + ( pxStreamBuffer )->xTaskWaitingToReceive = NULL; \ + } \ + } \ + portCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedInterruptStatus ); \ + } +#endif /* sbSEND_COMPLETE_FROM_ISR */ +/*lint -restore (9026) */ + +/* The number of bytes used to hold the length of a message in the buffer. */ +#define sbBYTES_TO_STORE_MESSAGE_LENGTH ( sizeof( configMESSAGE_BUFFER_LENGTH_TYPE ) ) + +/* Bits stored in the ucFlags field of the stream buffer. */ +#define sbFLAGS_IS_MESSAGE_BUFFER ( ( uint8_t ) 1 ) /* Set if the stream buffer was created as a message buffer, in which case it holds discrete messages rather than a stream. */ +#define sbFLAGS_IS_STATICALLY_ALLOCATED ( ( uint8_t ) 2 ) /* Set if the stream buffer was created using statically allocated memory. */ + +/*-----------------------------------------------------------*/ + +/* Structure that hold state information on the buffer. */ +typedef struct StreamBufferDef_t /*lint !e9058 Style convention uses tag. */ +{ + volatile size_t xTail; /* Index to the next item to read within the buffer. */ + volatile size_t xHead; /* Index to the next item to write within the buffer. */ + size_t xLength; /* The length of the buffer pointed to by pucBuffer. */ + size_t xTriggerLevelBytes; /* The number of bytes that must be in the stream buffer before a task that is waiting for data is unblocked. */ + volatile TaskHandle_t xTaskWaitingToReceive; /* Holds the handle of a task waiting for data, or NULL if no tasks are waiting. */ + volatile TaskHandle_t xTaskWaitingToSend; /* Holds the handle of a task waiting to send data to a message buffer that is full. */ + uint8_t *pucBuffer; /* Points to the buffer itself - that is - the RAM that stores the data passed through the buffer. */ + uint8_t ucFlags; + + #if ( configUSE_TRACE_FACILITY == 1 ) + UBaseType_t uxStreamBufferNumber; /* Used for tracing purposes. */ + #endif +} StreamBuffer_t; + +/* + * The number of bytes available to be read from the buffer. + */ +static size_t prvBytesInBuffer( const StreamBuffer_t * const pxStreamBuffer ) PRIVILEGED_FUNCTION; + +/* + * Add xCount bytes from pucData into the pxStreamBuffer message buffer. + * Returns the number of bytes written, which will either equal xCount in the + * success case, or 0 if there was not enough space in the buffer (in which case + * no data is written into the buffer). + */ +static size_t prvWriteBytesToBuffer( StreamBuffer_t * const pxStreamBuffer, const uint8_t *pucData, size_t xCount ) PRIVILEGED_FUNCTION; + +/* + * If the stream buffer is being used as a message buffer, then reads an entire + * message out of the buffer. If the stream buffer is being used as a stream + * buffer then read as many bytes as possible from the buffer. + * prvReadBytesFromBuffer() is called to actually extract the bytes from the + * buffer's data storage area. + */ +static size_t prvReadMessageFromBuffer( StreamBuffer_t *pxStreamBuffer, + void *pvRxData, + size_t xBufferLengthBytes, + size_t xBytesAvailable, + size_t xBytesToStoreMessageLength ) PRIVILEGED_FUNCTION; + +/* + * If the stream buffer is being used as a message buffer, then writes an entire + * message to the buffer. If the stream buffer is being used as a stream + * buffer then write as many bytes as possible to the buffer. + * prvWriteBytestoBuffer() is called to actually send the bytes to the buffer's + * data storage area. + */ +static size_t prvWriteMessageToBuffer( StreamBuffer_t * const pxStreamBuffer, + const void * pvTxData, + size_t xDataLengthBytes, + size_t xSpace, + size_t xRequiredSpace ) PRIVILEGED_FUNCTION; + +/* + * Read xMaxCount bytes from the pxStreamBuffer message buffer and write them + * to pucData. + */ +static size_t prvReadBytesFromBuffer( StreamBuffer_t *pxStreamBuffer, + uint8_t *pucData, + size_t xMaxCount, + size_t xBytesAvailable ) PRIVILEGED_FUNCTION; + +/* + * Called by both pxStreamBufferCreate() and pxStreamBufferCreateStatic() to + * initialise the members of the newly created stream buffer structure. + */ +static void prvInitialiseNewStreamBuffer( StreamBuffer_t * const pxStreamBuffer, + uint8_t * const pucBuffer, + size_t xBufferSizeBytes, + size_t xTriggerLevelBytes, + uint8_t ucFlags ) PRIVILEGED_FUNCTION; + +/*-----------------------------------------------------------*/ + +#if( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) + + StreamBufferHandle_t xStreamBufferGenericCreate( size_t xBufferSizeBytes, size_t xTriggerLevelBytes, BaseType_t xIsMessageBuffer ) + { + uint8_t *pucAllocatedMemory; + uint8_t ucFlags; + + /* In case the stream buffer is going to be used as a message buffer + (that is, it will hold discrete messages with a little meta data that + says how big the next message is) check the buffer will be large enough + to hold at least one message. */ + if( xIsMessageBuffer == pdTRUE ) + { + /* Is a message buffer but not statically allocated. */ + ucFlags = sbFLAGS_IS_MESSAGE_BUFFER; + configASSERT( xBufferSizeBytes > sbBYTES_TO_STORE_MESSAGE_LENGTH ); + } + else + { + /* Not a message buffer and not statically allocated. */ + ucFlags = 0; + configASSERT( xBufferSizeBytes > 0 ); + } + configASSERT( xTriggerLevelBytes <= xBufferSizeBytes ); + + /* A trigger level of 0 would cause a waiting task to unblock even when + the buffer was empty. */ + if( xTriggerLevelBytes == ( size_t ) 0 ) + { + xTriggerLevelBytes = ( size_t ) 1; + } + + /* A stream buffer requires a StreamBuffer_t structure and a buffer. + Both are allocated in a single call to pvPortMalloc(). The + StreamBuffer_t structure is placed at the start of the allocated memory + and the buffer follows immediately after. The requested size is + incremented so the free space is returned as the user would expect - + this is a quirk of the implementation that means otherwise the free + space would be reported as one byte smaller than would be logically + expected. */ + xBufferSizeBytes++; + pucAllocatedMemory = ( uint8_t * ) pvPortMalloc( xBufferSizeBytes + sizeof( StreamBuffer_t ) ); /*lint !e9079 malloc() only returns void*. */ + + if( pucAllocatedMemory != NULL ) + { + prvInitialiseNewStreamBuffer( ( StreamBuffer_t * ) pucAllocatedMemory, /* Structure at the start of the allocated memory. */ /*lint !e9087 Safe cast as allocated memory is aligned. */ /*lint !e826 Area is not too small and alignment is guaranteed provided malloc() behaves as expected and returns aligned buffer. */ + pucAllocatedMemory + sizeof( StreamBuffer_t ), /* Storage area follows. */ /*lint !e9016 Indexing past structure valid for uint8_t pointer, also storage area has no alignment requirement. */ + xBufferSizeBytes, + xTriggerLevelBytes, + ucFlags ); + + traceSTREAM_BUFFER_CREATE( ( ( StreamBuffer_t * ) pucAllocatedMemory ), xIsMessageBuffer ); + } + else + { + traceSTREAM_BUFFER_CREATE_FAILED( xIsMessageBuffer ); + } + + return ( StreamBufferHandle_t ) pucAllocatedMemory; /*lint !e9087 !e826 Safe cast as allocated memory is aligned. */ + } + +#endif /* configSUPPORT_DYNAMIC_ALLOCATION */ +/*-----------------------------------------------------------*/ + +#if( configSUPPORT_STATIC_ALLOCATION == 1 ) + + StreamBufferHandle_t xStreamBufferGenericCreateStatic( size_t xBufferSizeBytes, + size_t xTriggerLevelBytes, + BaseType_t xIsMessageBuffer, + uint8_t * const pucStreamBufferStorageArea, + StaticStreamBuffer_t * const pxStaticStreamBuffer ) + { + StreamBuffer_t * const pxStreamBuffer = ( StreamBuffer_t * ) pxStaticStreamBuffer; /*lint !e740 !e9087 Safe cast as StaticStreamBuffer_t is opaque Streambuffer_t. */ + StreamBufferHandle_t xReturn; + uint8_t ucFlags; + + configASSERT( pucStreamBufferStorageArea ); + configASSERT( pxStaticStreamBuffer ); + configASSERT( xTriggerLevelBytes <= xBufferSizeBytes ); + + /* A trigger level of 0 would cause a waiting task to unblock even when + the buffer was empty. */ + if( xTriggerLevelBytes == ( size_t ) 0 ) + { + xTriggerLevelBytes = ( size_t ) 1; + } + + if( xIsMessageBuffer != pdFALSE ) + { + /* Statically allocated message buffer. */ + ucFlags = sbFLAGS_IS_MESSAGE_BUFFER | sbFLAGS_IS_STATICALLY_ALLOCATED; + } + else + { + /* Statically allocated stream buffer. */ + ucFlags = sbFLAGS_IS_STATICALLY_ALLOCATED; + } + + /* In case the stream buffer is going to be used as a message buffer + (that is, it will hold discrete messages with a little meta data that + says how big the next message is) check the buffer will be large enough + to hold at least one message. */ + configASSERT( xBufferSizeBytes > sbBYTES_TO_STORE_MESSAGE_LENGTH ); + + #if( configASSERT_DEFINED == 1 ) + { + /* Sanity check that the size of the structure used to declare a + variable of type StaticStreamBuffer_t equals the size of the real + message buffer structure. */ + volatile size_t xSize = sizeof( StaticStreamBuffer_t ); + configASSERT( xSize == sizeof( StreamBuffer_t ) ); + } /*lint !e529 xSize is referenced is configASSERT() is defined. */ + #endif /* configASSERT_DEFINED */ + + if( ( pucStreamBufferStorageArea != NULL ) && ( pxStaticStreamBuffer != NULL ) ) + { + prvInitialiseNewStreamBuffer( pxStreamBuffer, + pucStreamBufferStorageArea, + xBufferSizeBytes, + xTriggerLevelBytes, + ucFlags ); + + /* Remember this was statically allocated in case it is ever deleted + again. */ + pxStreamBuffer->ucFlags |= sbFLAGS_IS_STATICALLY_ALLOCATED; + + traceSTREAM_BUFFER_CREATE( pxStreamBuffer, xIsMessageBuffer ); + + xReturn = ( StreamBufferHandle_t ) pxStaticStreamBuffer; /*lint !e9087 Data hiding requires cast to opaque type. */ + } + else + { + xReturn = NULL; + traceSTREAM_BUFFER_CREATE_STATIC_FAILED( xReturn, xIsMessageBuffer ); + } + + return xReturn; + } + +#endif /* ( configSUPPORT_STATIC_ALLOCATION == 1 ) */ +/*-----------------------------------------------------------*/ + +void vStreamBufferDelete( StreamBufferHandle_t xStreamBuffer ) +{ +StreamBuffer_t * pxStreamBuffer = xStreamBuffer; + + configASSERT( pxStreamBuffer ); + + traceSTREAM_BUFFER_DELETE( xStreamBuffer ); + + if( ( pxStreamBuffer->ucFlags & sbFLAGS_IS_STATICALLY_ALLOCATED ) == ( uint8_t ) pdFALSE ) + { + #if( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) + { + /* Both the structure and the buffer were allocated using a single call + to pvPortMalloc(), hence only one call to vPortFree() is required. */ + vPortFree( ( void * ) pxStreamBuffer ); /*lint !e9087 Standard free() semantics require void *, plus pxStreamBuffer was allocated by pvPortMalloc(). */ + } + #else + { + /* Should not be possible to get here, ucFlags must be corrupt. + Force an assert. */ + configASSERT( xStreamBuffer == ( StreamBufferHandle_t ) ~0 ); + } + #endif + } + else + { + /* The structure and buffer were not allocated dynamically and cannot be + freed - just scrub the structure so future use will assert. */ + ( void ) memset( pxStreamBuffer, 0x00, sizeof( StreamBuffer_t ) ); + } +} +/*-----------------------------------------------------------*/ + +BaseType_t xStreamBufferReset( StreamBufferHandle_t xStreamBuffer ) +{ +StreamBuffer_t * const pxStreamBuffer = xStreamBuffer; +BaseType_t xReturn = pdFAIL; + +#if( configUSE_TRACE_FACILITY == 1 ) + UBaseType_t uxStreamBufferNumber; +#endif + + configASSERT( pxStreamBuffer ); + + #if( configUSE_TRACE_FACILITY == 1 ) + { + /* Store the stream buffer number so it can be restored after the + reset. */ + uxStreamBufferNumber = pxStreamBuffer->uxStreamBufferNumber; + } + #endif + + /* Can only reset a message buffer if there are no tasks blocked on it. */ + taskENTER_CRITICAL(); + { + if( pxStreamBuffer->xTaskWaitingToReceive == NULL ) + { + if( pxStreamBuffer->xTaskWaitingToSend == NULL ) + { + prvInitialiseNewStreamBuffer( pxStreamBuffer, + pxStreamBuffer->pucBuffer, + pxStreamBuffer->xLength, + pxStreamBuffer->xTriggerLevelBytes, + pxStreamBuffer->ucFlags ); + xReturn = pdPASS; + + #if( configUSE_TRACE_FACILITY == 1 ) + { + pxStreamBuffer->uxStreamBufferNumber = uxStreamBufferNumber; + } + #endif + + traceSTREAM_BUFFER_RESET( xStreamBuffer ); + } + } + } + taskEXIT_CRITICAL(); + + return xReturn; +} +/*-----------------------------------------------------------*/ + +BaseType_t xStreamBufferSetTriggerLevel( StreamBufferHandle_t xStreamBuffer, size_t xTriggerLevel ) +{ +StreamBuffer_t * const pxStreamBuffer = xStreamBuffer; +BaseType_t xReturn; + + configASSERT( pxStreamBuffer ); + + /* It is not valid for the trigger level to be 0. */ + if( xTriggerLevel == ( size_t ) 0 ) + { + xTriggerLevel = ( size_t ) 1; + } + + /* The trigger level is the number of bytes that must be in the stream + buffer before a task that is waiting for data is unblocked. */ + if( xTriggerLevel <= pxStreamBuffer->xLength ) + { + pxStreamBuffer->xTriggerLevelBytes = xTriggerLevel; + xReturn = pdPASS; + } + else + { + xReturn = pdFALSE; + } + + return xReturn; +} +/*-----------------------------------------------------------*/ + +size_t xStreamBufferSpacesAvailable( StreamBufferHandle_t xStreamBuffer ) +{ +const StreamBuffer_t * const pxStreamBuffer = xStreamBuffer; +size_t xSpace; + + configASSERT( pxStreamBuffer ); + + xSpace = pxStreamBuffer->xLength + pxStreamBuffer->xTail; + xSpace -= pxStreamBuffer->xHead; + xSpace -= ( size_t ) 1; + + if( xSpace >= pxStreamBuffer->xLength ) + { + xSpace -= pxStreamBuffer->xLength; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + return xSpace; +} +/*-----------------------------------------------------------*/ + +size_t xStreamBufferBytesAvailable( StreamBufferHandle_t xStreamBuffer ) +{ +const StreamBuffer_t * const pxStreamBuffer = xStreamBuffer; +size_t xReturn; + + configASSERT( pxStreamBuffer ); + + xReturn = prvBytesInBuffer( pxStreamBuffer ); + return xReturn; +} +/*-----------------------------------------------------------*/ + +size_t xStreamBufferSend( StreamBufferHandle_t xStreamBuffer, + const void *pvTxData, + size_t xDataLengthBytes, + TickType_t xTicksToWait ) +{ +StreamBuffer_t * const pxStreamBuffer = xStreamBuffer; +size_t xReturn, xSpace = 0; +size_t xRequiredSpace = xDataLengthBytes; +TimeOut_t xTimeOut; + + configASSERT( pvTxData ); + configASSERT( pxStreamBuffer ); + + /* This send function is used to write to both message buffers and stream + buffers. If this is a message buffer then the space needed must be + increased by the amount of bytes needed to store the length of the + message. */ + if( ( pxStreamBuffer->ucFlags & sbFLAGS_IS_MESSAGE_BUFFER ) != ( uint8_t ) 0 ) + { + xRequiredSpace += sbBYTES_TO_STORE_MESSAGE_LENGTH; + + /* Overflow? */ + configASSERT( xRequiredSpace > xDataLengthBytes ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + if( xTicksToWait != ( TickType_t ) 0 ) + { + vTaskSetTimeOutState( &xTimeOut ); + + do + { + /* Wait until the required number of bytes are free in the message + buffer. */ + taskENTER_CRITICAL(); + { + xSpace = xStreamBufferSpacesAvailable( pxStreamBuffer ); + + if( xSpace < xRequiredSpace ) + { + /* Clear notification state as going to wait for space. */ + ( void ) xTaskNotifyStateClear( NULL ); + + /* Should only be one writer. */ + configASSERT( pxStreamBuffer->xTaskWaitingToSend == NULL ); + pxStreamBuffer->xTaskWaitingToSend = xTaskGetCurrentTaskHandle(); + } + else + { + taskEXIT_CRITICAL(); + break; + } + } + taskEXIT_CRITICAL(); + + traceBLOCKING_ON_STREAM_BUFFER_SEND( xStreamBuffer ); + ( void ) xTaskNotifyWait( ( uint32_t ) 0, ( uint32_t ) 0, NULL, xTicksToWait ); + pxStreamBuffer->xTaskWaitingToSend = NULL; + + } while( xTaskCheckForTimeOut( &xTimeOut, &xTicksToWait ) == pdFALSE ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + if( xSpace == ( size_t ) 0 ) + { + xSpace = xStreamBufferSpacesAvailable( pxStreamBuffer ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + xReturn = prvWriteMessageToBuffer( pxStreamBuffer, pvTxData, xDataLengthBytes, xSpace, xRequiredSpace ); + + if( xReturn > ( size_t ) 0 ) + { + traceSTREAM_BUFFER_SEND( xStreamBuffer, xReturn ); + + /* Was a task waiting for the data? */ + if( prvBytesInBuffer( pxStreamBuffer ) >= pxStreamBuffer->xTriggerLevelBytes ) + { + sbSEND_COMPLETED( pxStreamBuffer ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + traceSTREAM_BUFFER_SEND_FAILED( xStreamBuffer ); + } + + return xReturn; +} +/*-----------------------------------------------------------*/ + +size_t xStreamBufferSendFromISR( StreamBufferHandle_t xStreamBuffer, + const void *pvTxData, + size_t xDataLengthBytes, + BaseType_t * const pxHigherPriorityTaskWoken ) +{ +StreamBuffer_t * const pxStreamBuffer = xStreamBuffer; +size_t xReturn, xSpace; +size_t xRequiredSpace = xDataLengthBytes; + + configASSERT( pvTxData ); + configASSERT( pxStreamBuffer ); + + /* This send function is used to write to both message buffers and stream + buffers. If this is a message buffer then the space needed must be + increased by the amount of bytes needed to store the length of the + message. */ + if( ( pxStreamBuffer->ucFlags & sbFLAGS_IS_MESSAGE_BUFFER ) != ( uint8_t ) 0 ) + { + xRequiredSpace += sbBYTES_TO_STORE_MESSAGE_LENGTH; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + xSpace = xStreamBufferSpacesAvailable( pxStreamBuffer ); + xReturn = prvWriteMessageToBuffer( pxStreamBuffer, pvTxData, xDataLengthBytes, xSpace, xRequiredSpace ); + + if( xReturn > ( size_t ) 0 ) + { + /* Was a task waiting for the data? */ + if( prvBytesInBuffer( pxStreamBuffer ) >= pxStreamBuffer->xTriggerLevelBytes ) + { + sbSEND_COMPLETE_FROM_ISR( pxStreamBuffer, pxHigherPriorityTaskWoken ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + traceSTREAM_BUFFER_SEND_FROM_ISR( xStreamBuffer, xReturn ); + + return xReturn; +} +/*-----------------------------------------------------------*/ + +static size_t prvWriteMessageToBuffer( StreamBuffer_t * const pxStreamBuffer, + const void * pvTxData, + size_t xDataLengthBytes, + size_t xSpace, + size_t xRequiredSpace ) +{ + BaseType_t xShouldWrite; + size_t xReturn; + + if( xSpace == ( size_t ) 0 ) + { + /* Doesn't matter if this is a stream buffer or a message buffer, there + is no space to write. */ + xShouldWrite = pdFALSE; + } + else if( ( pxStreamBuffer->ucFlags & sbFLAGS_IS_MESSAGE_BUFFER ) == ( uint8_t ) 0 ) + { + /* This is a stream buffer, as opposed to a message buffer, so writing a + stream of bytes rather than discrete messages. Write as many bytes as + possible. */ + xShouldWrite = pdTRUE; + xDataLengthBytes = configMIN( xDataLengthBytes, xSpace ); + } + else if( xSpace >= xRequiredSpace ) + { + /* This is a message buffer, as opposed to a stream buffer, and there + is enough space to write both the message length and the message itself + into the buffer. Start by writing the length of the data, the data + itself will be written later in this function. */ + xShouldWrite = pdTRUE; + ( void ) prvWriteBytesToBuffer( pxStreamBuffer, ( const uint8_t * ) &( xDataLengthBytes ), sbBYTES_TO_STORE_MESSAGE_LENGTH ); + } + else + { + /* There is space available, but not enough space. */ + xShouldWrite = pdFALSE; + } + + if( xShouldWrite != pdFALSE ) + { + /* Writes the data itself. */ + xReturn = prvWriteBytesToBuffer( pxStreamBuffer, ( const uint8_t * ) pvTxData, xDataLengthBytes ); /*lint !e9079 Storage buffer is implemented as uint8_t for ease of sizing, alighment and access. */ + } + else + { + xReturn = 0; + } + + return xReturn; +} +/*-----------------------------------------------------------*/ + +size_t xStreamBufferReceive( StreamBufferHandle_t xStreamBuffer, + void *pvRxData, + size_t xBufferLengthBytes, + TickType_t xTicksToWait ) +{ +StreamBuffer_t * const pxStreamBuffer = xStreamBuffer; +size_t xReceivedLength = 0, xBytesAvailable, xBytesToStoreMessageLength; + + configASSERT( pvRxData ); + configASSERT( pxStreamBuffer ); + + /* This receive function is used by both message buffers, which store + discrete messages, and stream buffers, which store a continuous stream of + bytes. Discrete messages include an additional + sbBYTES_TO_STORE_MESSAGE_LENGTH bytes that hold the length of the + message. */ + if( ( pxStreamBuffer->ucFlags & sbFLAGS_IS_MESSAGE_BUFFER ) != ( uint8_t ) 0 ) + { + xBytesToStoreMessageLength = sbBYTES_TO_STORE_MESSAGE_LENGTH; + } + else + { + xBytesToStoreMessageLength = 0; + } + + if( xTicksToWait != ( TickType_t ) 0 ) + { + /* Checking if there is data and clearing the notification state must be + performed atomically. */ + taskENTER_CRITICAL(); + { + xBytesAvailable = prvBytesInBuffer( pxStreamBuffer ); + + /* If this function was invoked by a message buffer read then + xBytesToStoreMessageLength holds the number of bytes used to hold + the length of the next discrete message. If this function was + invoked by a stream buffer read then xBytesToStoreMessageLength will + be 0. */ + if( xBytesAvailable <= xBytesToStoreMessageLength ) + { + /* Clear notification state as going to wait for data. */ + ( void ) xTaskNotifyStateClear( NULL ); + + /* Should only be one reader. */ + configASSERT( pxStreamBuffer->xTaskWaitingToReceive == NULL ); + pxStreamBuffer->xTaskWaitingToReceive = xTaskGetCurrentTaskHandle(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + taskEXIT_CRITICAL(); + + if( xBytesAvailable <= xBytesToStoreMessageLength ) + { + /* Wait for data to be available. */ + traceBLOCKING_ON_STREAM_BUFFER_RECEIVE( xStreamBuffer ); + ( void ) xTaskNotifyWait( ( uint32_t ) 0, ( uint32_t ) 0, NULL, xTicksToWait ); + pxStreamBuffer->xTaskWaitingToReceive = NULL; + + /* Recheck the data available after blocking. */ + xBytesAvailable = prvBytesInBuffer( pxStreamBuffer ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + xBytesAvailable = prvBytesInBuffer( pxStreamBuffer ); + } + + /* Whether receiving a discrete message (where xBytesToStoreMessageLength + holds the number of bytes used to store the message length) or a stream of + bytes (where xBytesToStoreMessageLength is zero), the number of bytes + available must be greater than xBytesToStoreMessageLength to be able to + read bytes from the buffer. */ + if( xBytesAvailable > xBytesToStoreMessageLength ) + { + xReceivedLength = prvReadMessageFromBuffer( pxStreamBuffer, pvRxData, xBufferLengthBytes, xBytesAvailable, xBytesToStoreMessageLength ); + + /* Was a task waiting for space in the buffer? */ + if( xReceivedLength != ( size_t ) 0 ) + { + traceSTREAM_BUFFER_RECEIVE( xStreamBuffer, xReceivedLength ); + sbRECEIVE_COMPLETED( pxStreamBuffer ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + traceSTREAM_BUFFER_RECEIVE_FAILED( xStreamBuffer ); + mtCOVERAGE_TEST_MARKER(); + } + + return xReceivedLength; +} +/*-----------------------------------------------------------*/ + +size_t xStreamBufferNextMessageLengthBytes( StreamBufferHandle_t xStreamBuffer ) +{ +StreamBuffer_t * const pxStreamBuffer = xStreamBuffer; +size_t xReturn, xBytesAvailable, xOriginalTail; +configMESSAGE_BUFFER_LENGTH_TYPE xTempReturn; + + configASSERT( pxStreamBuffer ); + + /* Ensure the stream buffer is being used as a message buffer. */ + if( ( pxStreamBuffer->ucFlags & sbFLAGS_IS_MESSAGE_BUFFER ) != ( uint8_t ) 0 ) + { + xBytesAvailable = prvBytesInBuffer( pxStreamBuffer ); + if( xBytesAvailable > sbBYTES_TO_STORE_MESSAGE_LENGTH ) + { + /* The number of bytes available is greater than the number of bytes + required to hold the length of the next message, so another message + is available. Return its length without removing the length bytes + from the buffer. A copy of the tail is stored so the buffer can be + returned to its prior state as the message is not actually being + removed from the buffer. */ + xOriginalTail = pxStreamBuffer->xTail; + ( void ) prvReadBytesFromBuffer( pxStreamBuffer, ( uint8_t * ) &xTempReturn, sbBYTES_TO_STORE_MESSAGE_LENGTH, xBytesAvailable ); + xReturn = ( size_t ) xTempReturn; + pxStreamBuffer->xTail = xOriginalTail; + } + else + { + /* The minimum amount of bytes in a message buffer is + ( sbBYTES_TO_STORE_MESSAGE_LENGTH + 1 ), so if xBytesAvailable is + less than sbBYTES_TO_STORE_MESSAGE_LENGTH the only other valid + value is 0. */ + configASSERT( xBytesAvailable == 0 ); + xReturn = 0; + } + } + else + { + xReturn = 0; + } + + return xReturn; +} +/*-----------------------------------------------------------*/ + +size_t xStreamBufferReceiveFromISR( StreamBufferHandle_t xStreamBuffer, + void *pvRxData, + size_t xBufferLengthBytes, + BaseType_t * const pxHigherPriorityTaskWoken ) +{ +StreamBuffer_t * const pxStreamBuffer = xStreamBuffer; +size_t xReceivedLength = 0, xBytesAvailable, xBytesToStoreMessageLength; + + configASSERT( pvRxData ); + configASSERT( pxStreamBuffer ); + + /* This receive function is used by both message buffers, which store + discrete messages, and stream buffers, which store a continuous stream of + bytes. Discrete messages include an additional + sbBYTES_TO_STORE_MESSAGE_LENGTH bytes that hold the length of the + message. */ + if( ( pxStreamBuffer->ucFlags & sbFLAGS_IS_MESSAGE_BUFFER ) != ( uint8_t ) 0 ) + { + xBytesToStoreMessageLength = sbBYTES_TO_STORE_MESSAGE_LENGTH; + } + else + { + xBytesToStoreMessageLength = 0; + } + + xBytesAvailable = prvBytesInBuffer( pxStreamBuffer ); + + /* Whether receiving a discrete message (where xBytesToStoreMessageLength + holds the number of bytes used to store the message length) or a stream of + bytes (where xBytesToStoreMessageLength is zero), the number of bytes + available must be greater than xBytesToStoreMessageLength to be able to + read bytes from the buffer. */ + if( xBytesAvailable > xBytesToStoreMessageLength ) + { + xReceivedLength = prvReadMessageFromBuffer( pxStreamBuffer, pvRxData, xBufferLengthBytes, xBytesAvailable, xBytesToStoreMessageLength ); + + /* Was a task waiting for space in the buffer? */ + if( xReceivedLength != ( size_t ) 0 ) + { + sbRECEIVE_COMPLETED_FROM_ISR( pxStreamBuffer, pxHigherPriorityTaskWoken ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + traceSTREAM_BUFFER_RECEIVE_FROM_ISR( xStreamBuffer, xReceivedLength ); + + return xReceivedLength; +} +/*-----------------------------------------------------------*/ + +static size_t prvReadMessageFromBuffer( StreamBuffer_t *pxStreamBuffer, + void *pvRxData, + size_t xBufferLengthBytes, + size_t xBytesAvailable, + size_t xBytesToStoreMessageLength ) +{ +size_t xOriginalTail, xReceivedLength, xNextMessageLength; +configMESSAGE_BUFFER_LENGTH_TYPE xTempNextMessageLength; + + if( xBytesToStoreMessageLength != ( size_t ) 0 ) + { + /* A discrete message is being received. First receive the length + of the message. A copy of the tail is stored so the buffer can be + returned to its prior state if the length of the message is too + large for the provided buffer. */ + xOriginalTail = pxStreamBuffer->xTail; + ( void ) prvReadBytesFromBuffer( pxStreamBuffer, ( uint8_t * ) &xTempNextMessageLength, xBytesToStoreMessageLength, xBytesAvailable ); + xNextMessageLength = ( size_t ) xTempNextMessageLength; + + /* Reduce the number of bytes available by the number of bytes just + read out. */ + xBytesAvailable -= xBytesToStoreMessageLength; + + /* Check there is enough space in the buffer provided by the + user. */ + if( xNextMessageLength > xBufferLengthBytes ) + { + /* The user has provided insufficient space to read the message + so return the buffer to its previous state (so the length of + the message is in the buffer again). */ + pxStreamBuffer->xTail = xOriginalTail; + xNextMessageLength = 0; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + /* A stream of bytes is being received (as opposed to a discrete + message), so read as many bytes as possible. */ + xNextMessageLength = xBufferLengthBytes; + } + + /* Read the actual data. */ + xReceivedLength = prvReadBytesFromBuffer( pxStreamBuffer, ( uint8_t * ) pvRxData, xNextMessageLength, xBytesAvailable ); /*lint !e9079 Data storage area is implemented as uint8_t array for ease of sizing, indexing and alignment. */ + + return xReceivedLength; +} +/*-----------------------------------------------------------*/ + +BaseType_t xStreamBufferIsEmpty( StreamBufferHandle_t xStreamBuffer ) +{ +const StreamBuffer_t * const pxStreamBuffer = xStreamBuffer; +BaseType_t xReturn; +size_t xTail; + + configASSERT( pxStreamBuffer ); + + /* True if no bytes are available. */ + xTail = pxStreamBuffer->xTail; + if( pxStreamBuffer->xHead == xTail ) + { + xReturn = pdTRUE; + } + else + { + xReturn = pdFALSE; + } + + return xReturn; +} +/*-----------------------------------------------------------*/ + +BaseType_t xStreamBufferIsFull( StreamBufferHandle_t xStreamBuffer ) +{ +BaseType_t xReturn; +size_t xBytesToStoreMessageLength; +const StreamBuffer_t * const pxStreamBuffer = xStreamBuffer; + + configASSERT( pxStreamBuffer ); + + /* This generic version of the receive function is used by both message + buffers, which store discrete messages, and stream buffers, which store a + continuous stream of bytes. Discrete messages include an additional + sbBYTES_TO_STORE_MESSAGE_LENGTH bytes that hold the length of the message. */ + if( ( pxStreamBuffer->ucFlags & sbFLAGS_IS_MESSAGE_BUFFER ) != ( uint8_t ) 0 ) + { + xBytesToStoreMessageLength = sbBYTES_TO_STORE_MESSAGE_LENGTH; + } + else + { + xBytesToStoreMessageLength = 0; + } + + /* True if the available space equals zero. */ + if( xStreamBufferSpacesAvailable( xStreamBuffer ) <= xBytesToStoreMessageLength ) + { + xReturn = pdTRUE; + } + else + { + xReturn = pdFALSE; + } + + return xReturn; +} +/*-----------------------------------------------------------*/ + +BaseType_t xStreamBufferSendCompletedFromISR( StreamBufferHandle_t xStreamBuffer, BaseType_t *pxHigherPriorityTaskWoken ) +{ +StreamBuffer_t * const pxStreamBuffer = xStreamBuffer; +BaseType_t xReturn; +UBaseType_t uxSavedInterruptStatus; + + configASSERT( pxStreamBuffer ); + + uxSavedInterruptStatus = ( UBaseType_t ) portSET_INTERRUPT_MASK_FROM_ISR(); + { + if( ( pxStreamBuffer )->xTaskWaitingToReceive != NULL ) + { + ( void ) xTaskNotifyFromISR( ( pxStreamBuffer )->xTaskWaitingToReceive, + ( uint32_t ) 0, + eNoAction, + pxHigherPriorityTaskWoken ); + ( pxStreamBuffer )->xTaskWaitingToReceive = NULL; + xReturn = pdTRUE; + } + else + { + xReturn = pdFALSE; + } + } + portCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedInterruptStatus ); + + return xReturn; +} +/*-----------------------------------------------------------*/ + +BaseType_t xStreamBufferReceiveCompletedFromISR( StreamBufferHandle_t xStreamBuffer, BaseType_t *pxHigherPriorityTaskWoken ) +{ +StreamBuffer_t * const pxStreamBuffer = xStreamBuffer; +BaseType_t xReturn; +UBaseType_t uxSavedInterruptStatus; + + configASSERT( pxStreamBuffer ); + + uxSavedInterruptStatus = ( UBaseType_t ) portSET_INTERRUPT_MASK_FROM_ISR(); + { + if( ( pxStreamBuffer )->xTaskWaitingToSend != NULL ) + { + ( void ) xTaskNotifyFromISR( ( pxStreamBuffer )->xTaskWaitingToSend, + ( uint32_t ) 0, + eNoAction, + pxHigherPriorityTaskWoken ); + ( pxStreamBuffer )->xTaskWaitingToSend = NULL; + xReturn = pdTRUE; + } + else + { + xReturn = pdFALSE; + } + } + portCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedInterruptStatus ); + + return xReturn; +} +/*-----------------------------------------------------------*/ + +static size_t prvWriteBytesToBuffer( StreamBuffer_t * const pxStreamBuffer, const uint8_t *pucData, size_t xCount ) +{ +size_t xNextHead, xFirstLength; + + configASSERT( xCount > ( size_t ) 0 ); + + xNextHead = pxStreamBuffer->xHead; + + /* Calculate the number of bytes that can be added in the first write - + which may be less than the total number of bytes that need to be added if + the buffer will wrap back to the beginning. */ + xFirstLength = configMIN( pxStreamBuffer->xLength - xNextHead, xCount ); + + /* Write as many bytes as can be written in the first write. */ + configASSERT( ( xNextHead + xFirstLength ) <= pxStreamBuffer->xLength ); + ( void ) memcpy( ( void* ) ( &( pxStreamBuffer->pucBuffer[ xNextHead ] ) ), ( const void * ) pucData, xFirstLength ); /*lint !e9087 memcpy() requires void *. */ + + /* If the number of bytes written was less than the number that could be + written in the first write... */ + if( xCount > xFirstLength ) + { + /* ...then write the remaining bytes to the start of the buffer. */ + configASSERT( ( xCount - xFirstLength ) <= pxStreamBuffer->xLength ); + ( void ) memcpy( ( void * ) pxStreamBuffer->pucBuffer, ( const void * ) &( pucData[ xFirstLength ] ), xCount - xFirstLength ); /*lint !e9087 memcpy() requires void *. */ + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + xNextHead += xCount; + if( xNextHead >= pxStreamBuffer->xLength ) + { + xNextHead -= pxStreamBuffer->xLength; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + pxStreamBuffer->xHead = xNextHead; + + return xCount; +} +/*-----------------------------------------------------------*/ + +static size_t prvReadBytesFromBuffer( StreamBuffer_t *pxStreamBuffer, uint8_t *pucData, size_t xMaxCount, size_t xBytesAvailable ) +{ +size_t xCount, xFirstLength, xNextTail; + + /* Use the minimum of the wanted bytes and the available bytes. */ + xCount = configMIN( xBytesAvailable, xMaxCount ); + + if( xCount > ( size_t ) 0 ) + { + xNextTail = pxStreamBuffer->xTail; + + /* Calculate the number of bytes that can be read - which may be + less than the number wanted if the data wraps around to the start of + the buffer. */ + xFirstLength = configMIN( pxStreamBuffer->xLength - xNextTail, xCount ); + + /* Obtain the number of bytes it is possible to obtain in the first + read. Asserts check bounds of read and write. */ + configASSERT( xFirstLength <= xMaxCount ); + configASSERT( ( xNextTail + xFirstLength ) <= pxStreamBuffer->xLength ); + ( void ) memcpy( ( void * ) pucData, ( const void * ) &( pxStreamBuffer->pucBuffer[ xNextTail ] ), xFirstLength ); /*lint !e9087 memcpy() requires void *. */ + + /* If the total number of wanted bytes is greater than the number + that could be read in the first read... */ + if( xCount > xFirstLength ) + { + /*...then read the remaining bytes from the start of the buffer. */ + configASSERT( xCount <= xMaxCount ); + ( void ) memcpy( ( void * ) &( pucData[ xFirstLength ] ), ( void * ) ( pxStreamBuffer->pucBuffer ), xCount - xFirstLength ); /*lint !e9087 memcpy() requires void *. */ + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + /* Move the tail pointer to effectively remove the data read from + the buffer. */ + xNextTail += xCount; + + if( xNextTail >= pxStreamBuffer->xLength ) + { + xNextTail -= pxStreamBuffer->xLength; + } + + pxStreamBuffer->xTail = xNextTail; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + return xCount; +} +/*-----------------------------------------------------------*/ + +static size_t prvBytesInBuffer( const StreamBuffer_t * const pxStreamBuffer ) +{ +/* Returns the distance between xTail and xHead. */ +size_t xCount; + + xCount = pxStreamBuffer->xLength + pxStreamBuffer->xHead; + xCount -= pxStreamBuffer->xTail; + if ( xCount >= pxStreamBuffer->xLength ) + { + xCount -= pxStreamBuffer->xLength; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + return xCount; +} +/*-----------------------------------------------------------*/ + +static void prvInitialiseNewStreamBuffer( StreamBuffer_t * const pxStreamBuffer, + uint8_t * const pucBuffer, + size_t xBufferSizeBytes, + size_t xTriggerLevelBytes, + uint8_t ucFlags ) +{ + /* Assert here is deliberately writing to the entire buffer to ensure it can + be written to without generating exceptions, and is setting the buffer to a + known value to assist in development/debugging. */ + #if( configASSERT_DEFINED == 1 ) + { + /* The value written just has to be identifiable when looking at the + memory. Don't use 0xA5 as that is the stack fill value and could + result in confusion as to what is actually being observed. */ + const BaseType_t xWriteValue = 0x55; + configASSERT( memset( pucBuffer, ( int ) xWriteValue, xBufferSizeBytes ) == pucBuffer ); + } /*lint !e529 !e438 xWriteValue is only used if configASSERT() is defined. */ + #endif + + ( void ) memset( ( void * ) pxStreamBuffer, 0x00, sizeof( StreamBuffer_t ) ); /*lint !e9087 memset() requires void *. */ + pxStreamBuffer->pucBuffer = pucBuffer; + pxStreamBuffer->xLength = xBufferSizeBytes; + pxStreamBuffer->xTriggerLevelBytes = xTriggerLevelBytes; + pxStreamBuffer->ucFlags = ucFlags; +} + +#if ( configUSE_TRACE_FACILITY == 1 ) + + UBaseType_t uxStreamBufferGetStreamBufferNumber( StreamBufferHandle_t xStreamBuffer ) + { + return xStreamBuffer->uxStreamBufferNumber; + } + +#endif /* configUSE_TRACE_FACILITY */ +/*-----------------------------------------------------------*/ + +#if ( configUSE_TRACE_FACILITY == 1 ) + + void vStreamBufferSetStreamBufferNumber( StreamBufferHandle_t xStreamBuffer, UBaseType_t uxStreamBufferNumber ) + { + xStreamBuffer->uxStreamBufferNumber = uxStreamBufferNumber; + } + +#endif /* configUSE_TRACE_FACILITY */ +/*-----------------------------------------------------------*/ + +#if ( configUSE_TRACE_FACILITY == 1 ) + + uint8_t ucStreamBufferGetStreamBufferType( StreamBufferHandle_t xStreamBuffer ) + { + return ( xStreamBuffer->ucFlags & sbFLAGS_IS_MESSAGE_BUFFER ); + } + +#endif /* configUSE_TRACE_FACILITY */ +/*-----------------------------------------------------------*/ diff --git a/firmware/Middlewares/Third_Party/FreeRTOS/Source/tasks.c b/firmware/Middlewares/Third_Party/FreeRTOS/Source/tasks.c new file mode 100644 index 0000000..f6a6a9b --- /dev/null +++ b/firmware/Middlewares/Third_Party/FreeRTOS/Source/tasks.c @@ -0,0 +1,5310 @@ +/* + * FreeRTOS Kernel V10.3.1 + * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * http://www.FreeRTOS.org + * http://aws.amazon.com/freertos + * + * 1 tab == 4 spaces! + */ + +/* Standard includes. */ +#include +#include + +/* Defining MPU_WRAPPERS_INCLUDED_FROM_API_FILE prevents task.h from redefining +all the API functions to use the MPU wrappers. That should only be done when +task.h is included from an application file. */ +#define MPU_WRAPPERS_INCLUDED_FROM_API_FILE + +/* FreeRTOS includes. */ +#include "FreeRTOS.h" +#include "task.h" +#include "timers.h" +#include "stack_macros.h" + +/* Lint e9021, e961 and e750 are suppressed as a MISRA exception justified +because the MPU ports require MPU_WRAPPERS_INCLUDED_FROM_API_FILE to be defined +for the header files above, but not in this file, in order to generate the +correct privileged Vs unprivileged linkage and placement. */ +#undef MPU_WRAPPERS_INCLUDED_FROM_API_FILE /*lint !e961 !e750 !e9021. */ + +/* Set configUSE_STATS_FORMATTING_FUNCTIONS to 2 to include the stats formatting +functions but without including stdio.h here. */ +#if ( configUSE_STATS_FORMATTING_FUNCTIONS == 1 ) + /* At the bottom of this file are two optional functions that can be used + to generate human readable text from the raw data generated by the + uxTaskGetSystemState() function. Note the formatting functions are provided + for convenience only, and are NOT considered part of the kernel. */ + #include +#endif /* configUSE_STATS_FORMATTING_FUNCTIONS == 1 ) */ + +#if( configUSE_PREEMPTION == 0 ) + /* If the cooperative scheduler is being used then a yield should not be + performed just because a higher priority task has been woken. */ + #define taskYIELD_IF_USING_PREEMPTION() +#else + #define taskYIELD_IF_USING_PREEMPTION() portYIELD_WITHIN_API() +#endif + +/* Values that can be assigned to the ucNotifyState member of the TCB. */ +#define taskNOT_WAITING_NOTIFICATION ( ( uint8_t ) 0 ) +#define taskWAITING_NOTIFICATION ( ( uint8_t ) 1 ) +#define taskNOTIFICATION_RECEIVED ( ( uint8_t ) 2 ) + +/* + * The value used to fill the stack of a task when the task is created. This + * is used purely for checking the high water mark for tasks. + */ +#define tskSTACK_FILL_BYTE ( 0xa5U ) + +/* Bits used to recored how a task's stack and TCB were allocated. */ +#define tskDYNAMICALLY_ALLOCATED_STACK_AND_TCB ( ( uint8_t ) 0 ) +#define tskSTATICALLY_ALLOCATED_STACK_ONLY ( ( uint8_t ) 1 ) +#define tskSTATICALLY_ALLOCATED_STACK_AND_TCB ( ( uint8_t ) 2 ) + +/* If any of the following are set then task stacks are filled with a known +value so the high water mark can be determined. If none of the following are +set then don't fill the stack so there is no unnecessary dependency on memset. */ +#if( ( configCHECK_FOR_STACK_OVERFLOW > 1 ) || ( configUSE_TRACE_FACILITY == 1 ) || ( INCLUDE_uxTaskGetStackHighWaterMark == 1 ) || ( INCLUDE_uxTaskGetStackHighWaterMark2 == 1 ) ) + #define tskSET_NEW_STACKS_TO_KNOWN_VALUE 1 +#else + #define tskSET_NEW_STACKS_TO_KNOWN_VALUE 0 +#endif + +/* + * Macros used by vListTask to indicate which state a task is in. + */ +#define tskRUNNING_CHAR ( 'X' ) +#define tskBLOCKED_CHAR ( 'B' ) +#define tskREADY_CHAR ( 'R' ) +#define tskDELETED_CHAR ( 'D' ) +#define tskSUSPENDED_CHAR ( 'S' ) + +/* + * Some kernel aware debuggers require the data the debugger needs access to be + * global, rather than file scope. + */ +#ifdef portREMOVE_STATIC_QUALIFIER + #define static +#endif + +/* The name allocated to the Idle task. This can be overridden by defining +configIDLE_TASK_NAME in FreeRTOSConfig.h. */ +#ifndef configIDLE_TASK_NAME + #define configIDLE_TASK_NAME "IDLE" +#endif + +#if ( configUSE_PORT_OPTIMISED_TASK_SELECTION == 0 ) + + /* If configUSE_PORT_OPTIMISED_TASK_SELECTION is 0 then task selection is + performed in a generic way that is not optimised to any particular + microcontroller architecture. */ + + /* uxTopReadyPriority holds the priority of the highest priority ready + state task. */ + #define taskRECORD_READY_PRIORITY( uxPriority ) \ + { \ + if( ( uxPriority ) > uxTopReadyPriority ) \ + { \ + uxTopReadyPriority = ( uxPriority ); \ + } \ + } /* taskRECORD_READY_PRIORITY */ + + /*-----------------------------------------------------------*/ + + #define taskSELECT_HIGHEST_PRIORITY_TASK() \ + { \ + UBaseType_t uxTopPriority = uxTopReadyPriority; \ + \ + /* Find the highest priority queue that contains ready tasks. */ \ + while( listLIST_IS_EMPTY( &( pxReadyTasksLists[ uxTopPriority ] ) ) ) \ + { \ + configASSERT( uxTopPriority ); \ + --uxTopPriority; \ + } \ + \ + /* listGET_OWNER_OF_NEXT_ENTRY indexes through the list, so the tasks of \ + the same priority get an equal share of the processor time. */ \ + listGET_OWNER_OF_NEXT_ENTRY( pxCurrentTCB, &( pxReadyTasksLists[ uxTopPriority ] ) ); \ + uxTopReadyPriority = uxTopPriority; \ + } /* taskSELECT_HIGHEST_PRIORITY_TASK */ + + /*-----------------------------------------------------------*/ + + /* Define away taskRESET_READY_PRIORITY() and portRESET_READY_PRIORITY() as + they are only required when a port optimised method of task selection is + being used. */ + #define taskRESET_READY_PRIORITY( uxPriority ) + #define portRESET_READY_PRIORITY( uxPriority, uxTopReadyPriority ) + +#else /* configUSE_PORT_OPTIMISED_TASK_SELECTION */ + + /* If configUSE_PORT_OPTIMISED_TASK_SELECTION is 1 then task selection is + performed in a way that is tailored to the particular microcontroller + architecture being used. */ + + /* A port optimised version is provided. Call the port defined macros. */ + #define taskRECORD_READY_PRIORITY( uxPriority ) portRECORD_READY_PRIORITY( uxPriority, uxTopReadyPriority ) + + /*-----------------------------------------------------------*/ + + #define taskSELECT_HIGHEST_PRIORITY_TASK() \ + { \ + UBaseType_t uxTopPriority; \ + \ + /* Find the highest priority list that contains ready tasks. */ \ + portGET_HIGHEST_PRIORITY( uxTopPriority, uxTopReadyPriority ); \ + configASSERT( listCURRENT_LIST_LENGTH( &( pxReadyTasksLists[ uxTopPriority ] ) ) > 0 ); \ + listGET_OWNER_OF_NEXT_ENTRY( pxCurrentTCB, &( pxReadyTasksLists[ uxTopPriority ] ) ); \ + } /* taskSELECT_HIGHEST_PRIORITY_TASK() */ + + /*-----------------------------------------------------------*/ + + /* A port optimised version is provided, call it only if the TCB being reset + is being referenced from a ready list. If it is referenced from a delayed + or suspended list then it won't be in a ready list. */ + #define taskRESET_READY_PRIORITY( uxPriority ) \ + { \ + if( listCURRENT_LIST_LENGTH( &( pxReadyTasksLists[ ( uxPriority ) ] ) ) == ( UBaseType_t ) 0 ) \ + { \ + portRESET_READY_PRIORITY( ( uxPriority ), ( uxTopReadyPriority ) ); \ + } \ + } + +#endif /* configUSE_PORT_OPTIMISED_TASK_SELECTION */ + +/*-----------------------------------------------------------*/ + +/* pxDelayedTaskList and pxOverflowDelayedTaskList are switched when the tick +count overflows. */ +#define taskSWITCH_DELAYED_LISTS() \ +{ \ + List_t *pxTemp; \ + \ + /* The delayed tasks list should be empty when the lists are switched. */ \ + configASSERT( ( listLIST_IS_EMPTY( pxDelayedTaskList ) ) ); \ + \ + pxTemp = pxDelayedTaskList; \ + pxDelayedTaskList = pxOverflowDelayedTaskList; \ + pxOverflowDelayedTaskList = pxTemp; \ + xNumOfOverflows++; \ + prvResetNextTaskUnblockTime(); \ +} + +/*-----------------------------------------------------------*/ + +/* + * Place the task represented by pxTCB into the appropriate ready list for + * the task. It is inserted at the end of the list. + */ +#define prvAddTaskToReadyList( pxTCB ) \ + traceMOVED_TASK_TO_READY_STATE( pxTCB ); \ + taskRECORD_READY_PRIORITY( ( pxTCB )->uxPriority ); \ + vListInsertEnd( &( pxReadyTasksLists[ ( pxTCB )->uxPriority ] ), &( ( pxTCB )->xStateListItem ) ); \ + tracePOST_MOVED_TASK_TO_READY_STATE( pxTCB ) +/*-----------------------------------------------------------*/ + +/* + * Several functions take an TaskHandle_t parameter that can optionally be NULL, + * where NULL is used to indicate that the handle of the currently executing + * task should be used in place of the parameter. This macro simply checks to + * see if the parameter is NULL and returns a pointer to the appropriate TCB. + */ +#define prvGetTCBFromHandle( pxHandle ) ( ( ( pxHandle ) == NULL ) ? pxCurrentTCB : ( pxHandle ) ) + +/* The item value of the event list item is normally used to hold the priority +of the task to which it belongs (coded to allow it to be held in reverse +priority order). However, it is occasionally borrowed for other purposes. It +is important its value is not updated due to a task priority change while it is +being used for another purpose. The following bit definition is used to inform +the scheduler that the value should not be changed - in which case it is the +responsibility of whichever module is using the value to ensure it gets set back +to its original value when it is released. */ +#if( configUSE_16_BIT_TICKS == 1 ) + #define taskEVENT_LIST_ITEM_VALUE_IN_USE 0x8000U +#else + #define taskEVENT_LIST_ITEM_VALUE_IN_USE 0x80000000UL +#endif + +/* + * Task control block. A task control block (TCB) is allocated for each task, + * and stores task state information, including a pointer to the task's context + * (the task's run time environment, including register values) + */ +typedef struct tskTaskControlBlock /* The old naming convention is used to prevent breaking kernel aware debuggers. */ +{ + volatile StackType_t *pxTopOfStack; /*< Points to the location of the last item placed on the tasks stack. THIS MUST BE THE FIRST MEMBER OF THE TCB STRUCT. */ + + #if ( portUSING_MPU_WRAPPERS == 1 ) + xMPU_SETTINGS xMPUSettings; /*< The MPU settings are defined as part of the port layer. THIS MUST BE THE SECOND MEMBER OF THE TCB STRUCT. */ + #endif + + ListItem_t xStateListItem; /*< The list that the state list item of a task is reference from denotes the state of that task (Ready, Blocked, Suspended ). */ + ListItem_t xEventListItem; /*< Used to reference a task from an event list. */ + UBaseType_t uxPriority; /*< The priority of the task. 0 is the lowest priority. */ + StackType_t *pxStack; /*< Points to the start of the stack. */ + char pcTaskName[ configMAX_TASK_NAME_LEN ];/*< Descriptive name given to the task when created. Facilitates debugging only. */ /*lint !e971 Unqualified char types are allowed for strings and single characters only. */ + + #if ( ( portSTACK_GROWTH > 0 ) || ( configRECORD_STACK_HIGH_ADDRESS == 1 ) ) + StackType_t *pxEndOfStack; /*< Points to the highest valid address for the stack. */ + #endif + + #if ( portCRITICAL_NESTING_IN_TCB == 1 ) + UBaseType_t uxCriticalNesting; /*< Holds the critical section nesting depth for ports that do not maintain their own count in the port layer. */ + #endif + + #if ( configUSE_TRACE_FACILITY == 1 ) + UBaseType_t uxTCBNumber; /*< Stores a number that increments each time a TCB is created. It allows debuggers to determine when a task has been deleted and then recreated. */ + UBaseType_t uxTaskNumber; /*< Stores a number specifically for use by third party trace code. */ + #endif + + #if ( configUSE_MUTEXES == 1 ) + UBaseType_t uxBasePriority; /*< The priority last assigned to the task - used by the priority inheritance mechanism. */ + UBaseType_t uxMutexesHeld; + #endif + + #if ( configUSE_APPLICATION_TASK_TAG == 1 ) + TaskHookFunction_t pxTaskTag; + #endif + + #if( configNUM_THREAD_LOCAL_STORAGE_POINTERS > 0 ) + void *pvThreadLocalStoragePointers[ configNUM_THREAD_LOCAL_STORAGE_POINTERS ]; + #endif + + #if( configGENERATE_RUN_TIME_STATS == 1 ) + uint32_t ulRunTimeCounter; /*< Stores the amount of time the task has spent in the Running state. */ + #endif + + #if ( configUSE_NEWLIB_REENTRANT == 1 ) + /* Allocate a Newlib reent structure that is specific to this task. + Note Newlib support has been included by popular demand, but is not + used by the FreeRTOS maintainers themselves. FreeRTOS is not + responsible for resulting newlib operation. User must be familiar with + newlib and must provide system-wide implementations of the necessary + stubs. Be warned that (at the time of writing) the current newlib design + implements a system-wide malloc() that must be provided with locks. + + See the third party link http://www.nadler.com/embedded/newlibAndFreeRTOS.html + for additional information. */ + struct _reent xNewLib_reent; + #endif + + #if( configUSE_TASK_NOTIFICATIONS == 1 ) + volatile uint32_t ulNotifiedValue; + volatile uint8_t ucNotifyState; + #endif + + /* See the comments in FreeRTOS.h with the definition of + tskSTATIC_AND_DYNAMIC_ALLOCATION_POSSIBLE. */ + #if( tskSTATIC_AND_DYNAMIC_ALLOCATION_POSSIBLE != 0 ) /*lint !e731 !e9029 Macro has been consolidated for readability reasons. */ + uint8_t ucStaticallyAllocated; /*< Set to pdTRUE if the task is a statically allocated to ensure no attempt is made to free the memory. */ + #endif + + #if( INCLUDE_xTaskAbortDelay == 1 ) + uint8_t ucDelayAborted; + #endif + + #if( configUSE_POSIX_ERRNO == 1 ) + int iTaskErrno; + #endif + +} tskTCB; + +/* The old tskTCB name is maintained above then typedefed to the new TCB_t name +below to enable the use of older kernel aware debuggers. */ +typedef tskTCB TCB_t; + +/*lint -save -e956 A manual analysis and inspection has been used to determine +which static variables must be declared volatile. */ +PRIVILEGED_DATA TCB_t * volatile pxCurrentTCB = NULL; + +/* Lists for ready and blocked tasks. -------------------- +xDelayedTaskList1 and xDelayedTaskList2 could be move to function scople but +doing so breaks some kernel aware debuggers and debuggers that rely on removing +the static qualifier. */ +PRIVILEGED_DATA static List_t pxReadyTasksLists[ configMAX_PRIORITIES ];/*< Prioritised ready tasks. */ +PRIVILEGED_DATA static List_t xDelayedTaskList1; /*< Delayed tasks. */ +PRIVILEGED_DATA static List_t xDelayedTaskList2; /*< Delayed tasks (two lists are used - one for delays that have overflowed the current tick count. */ +PRIVILEGED_DATA static List_t * volatile pxDelayedTaskList; /*< Points to the delayed task list currently being used. */ +PRIVILEGED_DATA static List_t * volatile pxOverflowDelayedTaskList; /*< Points to the delayed task list currently being used to hold tasks that have overflowed the current tick count. */ +PRIVILEGED_DATA static List_t xPendingReadyList; /*< Tasks that have been readied while the scheduler was suspended. They will be moved to the ready list when the scheduler is resumed. */ + +#if( INCLUDE_vTaskDelete == 1 ) + + PRIVILEGED_DATA static List_t xTasksWaitingTermination; /*< Tasks that have been deleted - but their memory not yet freed. */ + PRIVILEGED_DATA static volatile UBaseType_t uxDeletedTasksWaitingCleanUp = ( UBaseType_t ) 0U; + +#endif + +#if ( INCLUDE_vTaskSuspend == 1 ) + + PRIVILEGED_DATA static List_t xSuspendedTaskList; /*< Tasks that are currently suspended. */ + +#endif + +/* Global POSIX errno. Its value is changed upon context switching to match +the errno of the currently running task. */ +#if ( configUSE_POSIX_ERRNO == 1 ) + int FreeRTOS_errno = 0; +#endif + +/* Other file private variables. --------------------------------*/ +PRIVILEGED_DATA static volatile UBaseType_t uxCurrentNumberOfTasks = ( UBaseType_t ) 0U; +PRIVILEGED_DATA static volatile TickType_t xTickCount = ( TickType_t ) configINITIAL_TICK_COUNT; +PRIVILEGED_DATA static volatile UBaseType_t uxTopReadyPriority = tskIDLE_PRIORITY; +PRIVILEGED_DATA static volatile BaseType_t xSchedulerRunning = pdFALSE; +PRIVILEGED_DATA static volatile TickType_t xPendedTicks = ( TickType_t ) 0U; +PRIVILEGED_DATA static volatile BaseType_t xYieldPending = pdFALSE; +PRIVILEGED_DATA static volatile BaseType_t xNumOfOverflows = ( BaseType_t ) 0; +PRIVILEGED_DATA static UBaseType_t uxTaskNumber = ( UBaseType_t ) 0U; +PRIVILEGED_DATA static volatile TickType_t xNextTaskUnblockTime = ( TickType_t ) 0U; /* Initialised to portMAX_DELAY before the scheduler starts. */ +PRIVILEGED_DATA static TaskHandle_t xIdleTaskHandle = NULL; /*< Holds the handle of the idle task. The idle task is created automatically when the scheduler is started. */ + +/* Context switches are held pending while the scheduler is suspended. Also, +interrupts must not manipulate the xStateListItem of a TCB, or any of the +lists the xStateListItem can be referenced from, if the scheduler is suspended. +If an interrupt needs to unblock a task while the scheduler is suspended then it +moves the task's event list item into the xPendingReadyList, ready for the +kernel to move the task from the pending ready list into the real ready list +when the scheduler is unsuspended. The pending ready list itself can only be +accessed from a critical section. */ +PRIVILEGED_DATA static volatile UBaseType_t uxSchedulerSuspended = ( UBaseType_t ) pdFALSE; + +#if ( configGENERATE_RUN_TIME_STATS == 1 ) + + /* Do not move these variables to function scope as doing so prevents the + code working with debuggers that need to remove the static qualifier. */ + PRIVILEGED_DATA static uint32_t ulTaskSwitchedInTime = 0UL; /*< Holds the value of a timer/counter the last time a task was switched in. */ + PRIVILEGED_DATA static uint32_t ulTotalRunTime = 0UL; /*< Holds the total amount of execution time as defined by the run time counter clock. */ + +#endif + +/*lint -restore */ + +/*-----------------------------------------------------------*/ + +/* Callback function prototypes. --------------------------*/ +#if( configCHECK_FOR_STACK_OVERFLOW > 0 ) + + extern void vApplicationStackOverflowHook( TaskHandle_t xTask, char *pcTaskName ); + +#endif + +#if( configUSE_TICK_HOOK > 0 ) + + extern void vApplicationTickHook( void ); /*lint !e526 Symbol not defined as it is an application callback. */ + +#endif + +#if( configSUPPORT_STATIC_ALLOCATION == 1 ) + + extern void vApplicationGetIdleTaskMemory( StaticTask_t **ppxIdleTaskTCBBuffer, StackType_t **ppxIdleTaskStackBuffer, uint32_t *pulIdleTaskStackSize ); /*lint !e526 Symbol not defined as it is an application callback. */ + +#endif + +/* File private functions. --------------------------------*/ + +/** + * Utility task that simply returns pdTRUE if the task referenced by xTask is + * currently in the Suspended state, or pdFALSE if the task referenced by xTask + * is in any other state. + */ +#if ( INCLUDE_vTaskSuspend == 1 ) + + static BaseType_t prvTaskIsTaskSuspended( const TaskHandle_t xTask ) PRIVILEGED_FUNCTION; + +#endif /* INCLUDE_vTaskSuspend */ + +/* + * Utility to ready all the lists used by the scheduler. This is called + * automatically upon the creation of the first task. + */ +static void prvInitialiseTaskLists( void ) PRIVILEGED_FUNCTION; + +/* + * The idle task, which as all tasks is implemented as a never ending loop. + * The idle task is automatically created and added to the ready lists upon + * creation of the first user task. + * + * The portTASK_FUNCTION_PROTO() macro is used to allow port/compiler specific + * language extensions. The equivalent prototype for this function is: + * + * void prvIdleTask( void *pvParameters ); + * + */ +static portTASK_FUNCTION_PROTO( prvIdleTask, pvParameters ); + +/* + * Utility to free all memory allocated by the scheduler to hold a TCB, + * including the stack pointed to by the TCB. + * + * This does not free memory allocated by the task itself (i.e. memory + * allocated by calls to pvPortMalloc from within the tasks application code). + */ +#if ( INCLUDE_vTaskDelete == 1 ) + + static void prvDeleteTCB( TCB_t *pxTCB ) PRIVILEGED_FUNCTION; + +#endif + +/* + * Used only by the idle task. This checks to see if anything has been placed + * in the list of tasks waiting to be deleted. If so the task is cleaned up + * and its TCB deleted. + */ +static void prvCheckTasksWaitingTermination( void ) PRIVILEGED_FUNCTION; + +/* + * The currently executing task is entering the Blocked state. Add the task to + * either the current or the overflow delayed task list. + */ +static void prvAddCurrentTaskToDelayedList( TickType_t xTicksToWait, const BaseType_t xCanBlockIndefinitely ) PRIVILEGED_FUNCTION; + +/* + * Fills an TaskStatus_t structure with information on each task that is + * referenced from the pxList list (which may be a ready list, a delayed list, + * a suspended list, etc.). + * + * THIS FUNCTION IS INTENDED FOR DEBUGGING ONLY, AND SHOULD NOT BE CALLED FROM + * NORMAL APPLICATION CODE. + */ +#if ( configUSE_TRACE_FACILITY == 1 ) + + static UBaseType_t prvListTasksWithinSingleList( TaskStatus_t *pxTaskStatusArray, List_t *pxList, eTaskState eState ) PRIVILEGED_FUNCTION; + +#endif + +/* + * Searches pxList for a task with name pcNameToQuery - returning a handle to + * the task if it is found, or NULL if the task is not found. + */ +#if ( INCLUDE_xTaskGetHandle == 1 ) + + static TCB_t *prvSearchForNameWithinSingleList( List_t *pxList, const char pcNameToQuery[] ) PRIVILEGED_FUNCTION; + +#endif + +/* + * When a task is created, the stack of the task is filled with a known value. + * This function determines the 'high water mark' of the task stack by + * determining how much of the stack remains at the original preset value. + */ +#if ( ( configUSE_TRACE_FACILITY == 1 ) || ( INCLUDE_uxTaskGetStackHighWaterMark == 1 ) || ( INCLUDE_uxTaskGetStackHighWaterMark2 == 1 ) ) + + static configSTACK_DEPTH_TYPE prvTaskCheckFreeStackSpace( const uint8_t * pucStackByte ) PRIVILEGED_FUNCTION; + +#endif + +/* + * Return the amount of time, in ticks, that will pass before the kernel will + * next move a task from the Blocked state to the Running state. + * + * This conditional compilation should use inequality to 0, not equality to 1. + * This is to ensure portSUPPRESS_TICKS_AND_SLEEP() can be called when user + * defined low power mode implementations require configUSE_TICKLESS_IDLE to be + * set to a value other than 1. + */ +#if ( configUSE_TICKLESS_IDLE != 0 ) + + static TickType_t prvGetExpectedIdleTime( void ) PRIVILEGED_FUNCTION; + +#endif + +/* + * Set xNextTaskUnblockTime to the time at which the next Blocked state task + * will exit the Blocked state. + */ +static void prvResetNextTaskUnblockTime( void ); + +#if ( ( configUSE_TRACE_FACILITY == 1 ) && ( configUSE_STATS_FORMATTING_FUNCTIONS > 0 ) ) + + /* + * Helper function used to pad task names with spaces when printing out + * human readable tables of task information. + */ + static char *prvWriteNameToBuffer( char *pcBuffer, const char *pcTaskName ) PRIVILEGED_FUNCTION; + +#endif + +/* + * Called after a Task_t structure has been allocated either statically or + * dynamically to fill in the structure's members. + */ +static void prvInitialiseNewTask( TaskFunction_t pxTaskCode, + const char * const pcName, /*lint !e971 Unqualified char types are allowed for strings and single characters only. */ + const uint32_t ulStackDepth, + void * const pvParameters, + UBaseType_t uxPriority, + TaskHandle_t * const pxCreatedTask, + TCB_t *pxNewTCB, + const MemoryRegion_t * const xRegions ) PRIVILEGED_FUNCTION; + +/* + * Called after a new task has been created and initialised to place the task + * under the control of the scheduler. + */ +static void prvAddNewTaskToReadyList( TCB_t *pxNewTCB ) PRIVILEGED_FUNCTION; + +/* + * freertos_tasks_c_additions_init() should only be called if the user definable + * macro FREERTOS_TASKS_C_ADDITIONS_INIT() is defined, as that is the only macro + * called by the function. + */ +#ifdef FREERTOS_TASKS_C_ADDITIONS_INIT + + static void freertos_tasks_c_additions_init( void ) PRIVILEGED_FUNCTION; + +#endif + +/*-----------------------------------------------------------*/ + +#if( configSUPPORT_STATIC_ALLOCATION == 1 ) + + TaskHandle_t xTaskCreateStatic( TaskFunction_t pxTaskCode, + const char * const pcName, /*lint !e971 Unqualified char types are allowed for strings and single characters only. */ + const uint32_t ulStackDepth, + void * const pvParameters, + UBaseType_t uxPriority, + StackType_t * const puxStackBuffer, + StaticTask_t * const pxTaskBuffer ) + { + TCB_t *pxNewTCB; + TaskHandle_t xReturn; + + configASSERT( puxStackBuffer != NULL ); + configASSERT( pxTaskBuffer != NULL ); + + #if( configASSERT_DEFINED == 1 ) + { + /* Sanity check that the size of the structure used to declare a + variable of type StaticTask_t equals the size of the real task + structure. */ + volatile size_t xSize = sizeof( StaticTask_t ); + configASSERT( xSize == sizeof( TCB_t ) ); + ( void ) xSize; /* Prevent lint warning when configASSERT() is not used. */ + } + #endif /* configASSERT_DEFINED */ + + + if( ( pxTaskBuffer != NULL ) && ( puxStackBuffer != NULL ) ) + { + /* The memory used for the task's TCB and stack are passed into this + function - use them. */ + pxNewTCB = ( TCB_t * ) pxTaskBuffer; /*lint !e740 !e9087 Unusual cast is ok as the structures are designed to have the same alignment, and the size is checked by an assert. */ + pxNewTCB->pxStack = ( StackType_t * ) puxStackBuffer; + + #if( tskSTATIC_AND_DYNAMIC_ALLOCATION_POSSIBLE != 0 ) /*lint !e731 !e9029 Macro has been consolidated for readability reasons. */ + { + /* Tasks can be created statically or dynamically, so note this + task was created statically in case the task is later deleted. */ + pxNewTCB->ucStaticallyAllocated = tskSTATICALLY_ALLOCATED_STACK_AND_TCB; + } + #endif /* tskSTATIC_AND_DYNAMIC_ALLOCATION_POSSIBLE */ + + prvInitialiseNewTask( pxTaskCode, pcName, ulStackDepth, pvParameters, uxPriority, &xReturn, pxNewTCB, NULL ); + prvAddNewTaskToReadyList( pxNewTCB ); + } + else + { + xReturn = NULL; + } + + return xReturn; + } + +#endif /* SUPPORT_STATIC_ALLOCATION */ +/*-----------------------------------------------------------*/ + +#if( ( portUSING_MPU_WRAPPERS == 1 ) && ( configSUPPORT_STATIC_ALLOCATION == 1 ) ) + + BaseType_t xTaskCreateRestrictedStatic( const TaskParameters_t * const pxTaskDefinition, TaskHandle_t *pxCreatedTask ) + { + TCB_t *pxNewTCB; + BaseType_t xReturn = errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY; + + configASSERT( pxTaskDefinition->puxStackBuffer != NULL ); + configASSERT( pxTaskDefinition->pxTaskBuffer != NULL ); + + if( ( pxTaskDefinition->puxStackBuffer != NULL ) && ( pxTaskDefinition->pxTaskBuffer != NULL ) ) + { + /* Allocate space for the TCB. Where the memory comes from depends + on the implementation of the port malloc function and whether or + not static allocation is being used. */ + pxNewTCB = ( TCB_t * ) pxTaskDefinition->pxTaskBuffer; + + /* Store the stack location in the TCB. */ + pxNewTCB->pxStack = pxTaskDefinition->puxStackBuffer; + + #if( tskSTATIC_AND_DYNAMIC_ALLOCATION_POSSIBLE != 0 ) + { + /* Tasks can be created statically or dynamically, so note this + task was created statically in case the task is later deleted. */ + pxNewTCB->ucStaticallyAllocated = tskSTATICALLY_ALLOCATED_STACK_AND_TCB; + } + #endif /* tskSTATIC_AND_DYNAMIC_ALLOCATION_POSSIBLE */ + + prvInitialiseNewTask( pxTaskDefinition->pvTaskCode, + pxTaskDefinition->pcName, + ( uint32_t ) pxTaskDefinition->usStackDepth, + pxTaskDefinition->pvParameters, + pxTaskDefinition->uxPriority, + pxCreatedTask, pxNewTCB, + pxTaskDefinition->xRegions ); + + prvAddNewTaskToReadyList( pxNewTCB ); + xReturn = pdPASS; + } + + return xReturn; + } + +#endif /* ( portUSING_MPU_WRAPPERS == 1 ) && ( configSUPPORT_STATIC_ALLOCATION == 1 ) */ +/*-----------------------------------------------------------*/ + +#if( ( portUSING_MPU_WRAPPERS == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) ) + + BaseType_t xTaskCreateRestricted( const TaskParameters_t * const pxTaskDefinition, TaskHandle_t *pxCreatedTask ) + { + TCB_t *pxNewTCB; + BaseType_t xReturn = errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY; + + configASSERT( pxTaskDefinition->puxStackBuffer ); + + if( pxTaskDefinition->puxStackBuffer != NULL ) + { + /* Allocate space for the TCB. Where the memory comes from depends + on the implementation of the port malloc function and whether or + not static allocation is being used. */ + pxNewTCB = ( TCB_t * ) pvPortMalloc( sizeof( TCB_t ) ); + + if( pxNewTCB != NULL ) + { + /* Store the stack location in the TCB. */ + pxNewTCB->pxStack = pxTaskDefinition->puxStackBuffer; + + #if( tskSTATIC_AND_DYNAMIC_ALLOCATION_POSSIBLE != 0 ) + { + /* Tasks can be created statically or dynamically, so note + this task had a statically allocated stack in case it is + later deleted. The TCB was allocated dynamically. */ + pxNewTCB->ucStaticallyAllocated = tskSTATICALLY_ALLOCATED_STACK_ONLY; + } + #endif /* tskSTATIC_AND_DYNAMIC_ALLOCATION_POSSIBLE */ + + prvInitialiseNewTask( pxTaskDefinition->pvTaskCode, + pxTaskDefinition->pcName, + ( uint32_t ) pxTaskDefinition->usStackDepth, + pxTaskDefinition->pvParameters, + pxTaskDefinition->uxPriority, + pxCreatedTask, pxNewTCB, + pxTaskDefinition->xRegions ); + + prvAddNewTaskToReadyList( pxNewTCB ); + xReturn = pdPASS; + } + } + + return xReturn; + } + +#endif /* portUSING_MPU_WRAPPERS */ +/*-----------------------------------------------------------*/ + +#if( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) + + BaseType_t xTaskCreate( TaskFunction_t pxTaskCode, + const char * const pcName, /*lint !e971 Unqualified char types are allowed for strings and single characters only. */ + const configSTACK_DEPTH_TYPE usStackDepth, + void * const pvParameters, + UBaseType_t uxPriority, + TaskHandle_t * const pxCreatedTask ) + { + TCB_t *pxNewTCB; + BaseType_t xReturn; + + /* If the stack grows down then allocate the stack then the TCB so the stack + does not grow into the TCB. Likewise if the stack grows up then allocate + the TCB then the stack. */ + #if( portSTACK_GROWTH > 0 ) + { + /* Allocate space for the TCB. Where the memory comes from depends on + the implementation of the port malloc function and whether or not static + allocation is being used. */ + pxNewTCB = ( TCB_t * ) pvPortMalloc( sizeof( TCB_t ) ); + + if( pxNewTCB != NULL ) + { + /* Allocate space for the stack used by the task being created. + The base of the stack memory stored in the TCB so the task can + be deleted later if required. */ + pxNewTCB->pxStack = ( StackType_t * ) pvPortMalloc( ( ( ( size_t ) usStackDepth ) * sizeof( StackType_t ) ) ); /*lint !e961 MISRA exception as the casts are only redundant for some ports. */ + + if( pxNewTCB->pxStack == NULL ) + { + /* Could not allocate the stack. Delete the allocated TCB. */ + vPortFree( pxNewTCB ); + pxNewTCB = NULL; + } + } + } + #else /* portSTACK_GROWTH */ + { + StackType_t *pxStack; + + /* Allocate space for the stack used by the task being created. */ + pxStack = pvPortMalloc( ( ( ( size_t ) usStackDepth ) * sizeof( StackType_t ) ) ); /*lint !e9079 All values returned by pvPortMalloc() have at least the alignment required by the MCU's stack and this allocation is the stack. */ + + if( pxStack != NULL ) + { + /* Allocate space for the TCB. */ + pxNewTCB = ( TCB_t * ) pvPortMalloc( sizeof( TCB_t ) ); /*lint !e9087 !e9079 All values returned by pvPortMalloc() have at least the alignment required by the MCU's stack, and the first member of TCB_t is always a pointer to the task's stack. */ + + if( pxNewTCB != NULL ) + { + /* Store the stack location in the TCB. */ + pxNewTCB->pxStack = pxStack; + } + else + { + /* The stack cannot be used as the TCB was not created. Free + it again. */ + vPortFree( pxStack ); + } + } + else + { + pxNewTCB = NULL; + } + } + #endif /* portSTACK_GROWTH */ + + if( pxNewTCB != NULL ) + { + #if( tskSTATIC_AND_DYNAMIC_ALLOCATION_POSSIBLE != 0 ) /*lint !e9029 !e731 Macro has been consolidated for readability reasons. */ + { + /* Tasks can be created statically or dynamically, so note this + task was created dynamically in case it is later deleted. */ + pxNewTCB->ucStaticallyAllocated = tskDYNAMICALLY_ALLOCATED_STACK_AND_TCB; + } + #endif /* tskSTATIC_AND_DYNAMIC_ALLOCATION_POSSIBLE */ + + prvInitialiseNewTask( pxTaskCode, pcName, ( uint32_t ) usStackDepth, pvParameters, uxPriority, pxCreatedTask, pxNewTCB, NULL ); + prvAddNewTaskToReadyList( pxNewTCB ); + xReturn = pdPASS; + } + else + { + xReturn = errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY; + } + + return xReturn; + } + +#endif /* configSUPPORT_DYNAMIC_ALLOCATION */ +/*-----------------------------------------------------------*/ + +static void prvInitialiseNewTask( TaskFunction_t pxTaskCode, + const char * const pcName, /*lint !e971 Unqualified char types are allowed for strings and single characters only. */ + const uint32_t ulStackDepth, + void * const pvParameters, + UBaseType_t uxPriority, + TaskHandle_t * const pxCreatedTask, + TCB_t *pxNewTCB, + const MemoryRegion_t * const xRegions ) +{ +StackType_t *pxTopOfStack; +UBaseType_t x; + + #if( portUSING_MPU_WRAPPERS == 1 ) + /* Should the task be created in privileged mode? */ + BaseType_t xRunPrivileged; + if( ( uxPriority & portPRIVILEGE_BIT ) != 0U ) + { + xRunPrivileged = pdTRUE; + } + else + { + xRunPrivileged = pdFALSE; + } + uxPriority &= ~portPRIVILEGE_BIT; + #endif /* portUSING_MPU_WRAPPERS == 1 */ + + /* Avoid dependency on memset() if it is not required. */ + #if( tskSET_NEW_STACKS_TO_KNOWN_VALUE == 1 ) + { + /* Fill the stack with a known value to assist debugging. */ + ( void ) memset( pxNewTCB->pxStack, ( int ) tskSTACK_FILL_BYTE, ( size_t ) ulStackDepth * sizeof( StackType_t ) ); + } + #endif /* tskSET_NEW_STACKS_TO_KNOWN_VALUE */ + + /* Calculate the top of stack address. This depends on whether the stack + grows from high memory to low (as per the 80x86) or vice versa. + portSTACK_GROWTH is used to make the result positive or negative as required + by the port. */ + #if( portSTACK_GROWTH < 0 ) + { + pxTopOfStack = &( pxNewTCB->pxStack[ ulStackDepth - ( uint32_t ) 1 ] ); + pxTopOfStack = ( StackType_t * ) ( ( ( portPOINTER_SIZE_TYPE ) pxTopOfStack ) & ( ~( ( portPOINTER_SIZE_TYPE ) portBYTE_ALIGNMENT_MASK ) ) ); /*lint !e923 !e9033 !e9078 MISRA exception. Avoiding casts between pointers and integers is not practical. Size differences accounted for using portPOINTER_SIZE_TYPE type. Checked by assert(). */ + + /* Check the alignment of the calculated top of stack is correct. */ + configASSERT( ( ( ( portPOINTER_SIZE_TYPE ) pxTopOfStack & ( portPOINTER_SIZE_TYPE ) portBYTE_ALIGNMENT_MASK ) == 0UL ) ); + + #if( configRECORD_STACK_HIGH_ADDRESS == 1 ) + { + /* Also record the stack's high address, which may assist + debugging. */ + pxNewTCB->pxEndOfStack = pxTopOfStack; + } + #endif /* configRECORD_STACK_HIGH_ADDRESS */ + } + #else /* portSTACK_GROWTH */ + { + pxTopOfStack = pxNewTCB->pxStack; + + /* Check the alignment of the stack buffer is correct. */ + configASSERT( ( ( ( portPOINTER_SIZE_TYPE ) pxNewTCB->pxStack & ( portPOINTER_SIZE_TYPE ) portBYTE_ALIGNMENT_MASK ) == 0UL ) ); + + /* The other extreme of the stack space is required if stack checking is + performed. */ + pxNewTCB->pxEndOfStack = pxNewTCB->pxStack + ( ulStackDepth - ( uint32_t ) 1 ); + } + #endif /* portSTACK_GROWTH */ + + /* Store the task name in the TCB. */ + if( pcName != NULL ) + { + for( x = ( UBaseType_t ) 0; x < ( UBaseType_t ) configMAX_TASK_NAME_LEN; x++ ) + { + pxNewTCB->pcTaskName[ x ] = pcName[ x ]; + + /* Don't copy all configMAX_TASK_NAME_LEN if the string is shorter than + configMAX_TASK_NAME_LEN characters just in case the memory after the + string is not accessible (extremely unlikely). */ + if( pcName[ x ] == ( char ) 0x00 ) + { + break; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + + /* Ensure the name string is terminated in the case that the string length + was greater or equal to configMAX_TASK_NAME_LEN. */ + pxNewTCB->pcTaskName[ configMAX_TASK_NAME_LEN - 1 ] = '\0'; + } + else + { + /* The task has not been given a name, so just ensure there is a NULL + terminator when it is read out. */ + pxNewTCB->pcTaskName[ 0 ] = 0x00; + } + + /* This is used as an array index so must ensure it's not too large. First + remove the privilege bit if one is present. */ + if( uxPriority >= ( UBaseType_t ) configMAX_PRIORITIES ) + { + uxPriority = ( UBaseType_t ) configMAX_PRIORITIES - ( UBaseType_t ) 1U; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + pxNewTCB->uxPriority = uxPriority; + #if ( configUSE_MUTEXES == 1 ) + { + pxNewTCB->uxBasePriority = uxPriority; + pxNewTCB->uxMutexesHeld = 0; + } + #endif /* configUSE_MUTEXES */ + + vListInitialiseItem( &( pxNewTCB->xStateListItem ) ); + vListInitialiseItem( &( pxNewTCB->xEventListItem ) ); + + /* Set the pxNewTCB as a link back from the ListItem_t. This is so we can get + back to the containing TCB from a generic item in a list. */ + listSET_LIST_ITEM_OWNER( &( pxNewTCB->xStateListItem ), pxNewTCB ); + + /* Event lists are always in priority order. */ + listSET_LIST_ITEM_VALUE( &( pxNewTCB->xEventListItem ), ( TickType_t ) configMAX_PRIORITIES - ( TickType_t ) uxPriority ); /*lint !e961 MISRA exception as the casts are only redundant for some ports. */ + listSET_LIST_ITEM_OWNER( &( pxNewTCB->xEventListItem ), pxNewTCB ); + + #if ( portCRITICAL_NESTING_IN_TCB == 1 ) + { + pxNewTCB->uxCriticalNesting = ( UBaseType_t ) 0U; + } + #endif /* portCRITICAL_NESTING_IN_TCB */ + + #if ( configUSE_APPLICATION_TASK_TAG == 1 ) + { + pxNewTCB->pxTaskTag = NULL; + } + #endif /* configUSE_APPLICATION_TASK_TAG */ + + #if ( configGENERATE_RUN_TIME_STATS == 1 ) + { + pxNewTCB->ulRunTimeCounter = 0UL; + } + #endif /* configGENERATE_RUN_TIME_STATS */ + + #if ( portUSING_MPU_WRAPPERS == 1 ) + { + vPortStoreTaskMPUSettings( &( pxNewTCB->xMPUSettings ), xRegions, pxNewTCB->pxStack, ulStackDepth ); + } + #else + { + /* Avoid compiler warning about unreferenced parameter. */ + ( void ) xRegions; + } + #endif + + #if( configNUM_THREAD_LOCAL_STORAGE_POINTERS != 0 ) + { + for( x = 0; x < ( UBaseType_t ) configNUM_THREAD_LOCAL_STORAGE_POINTERS; x++ ) + { + pxNewTCB->pvThreadLocalStoragePointers[ x ] = NULL; + } + } + #endif + + #if ( configUSE_TASK_NOTIFICATIONS == 1 ) + { + pxNewTCB->ulNotifiedValue = 0; + pxNewTCB->ucNotifyState = taskNOT_WAITING_NOTIFICATION; + } + #endif + + #if ( configUSE_NEWLIB_REENTRANT == 1 ) + { + /* Initialise this task's Newlib reent structure. + See the third party link http://www.nadler.com/embedded/newlibAndFreeRTOS.html + for additional information. */ + _REENT_INIT_PTR( ( &( pxNewTCB->xNewLib_reent ) ) ); + } + #endif + + #if( INCLUDE_xTaskAbortDelay == 1 ) + { + pxNewTCB->ucDelayAborted = pdFALSE; + } + #endif + + /* Initialize the TCB stack to look as if the task was already running, + but had been interrupted by the scheduler. The return address is set + to the start of the task function. Once the stack has been initialised + the top of stack variable is updated. */ + #if( portUSING_MPU_WRAPPERS == 1 ) + { + /* If the port has capability to detect stack overflow, + pass the stack end address to the stack initialization + function as well. */ + #if( portHAS_STACK_OVERFLOW_CHECKING == 1 ) + { + #if( portSTACK_GROWTH < 0 ) + { + pxNewTCB->pxTopOfStack = pxPortInitialiseStack( pxTopOfStack, pxNewTCB->pxStack, pxTaskCode, pvParameters, xRunPrivileged ); + } + #else /* portSTACK_GROWTH */ + { + pxNewTCB->pxTopOfStack = pxPortInitialiseStack( pxTopOfStack, pxNewTCB->pxEndOfStack, pxTaskCode, pvParameters, xRunPrivileged ); + } + #endif /* portSTACK_GROWTH */ + } + #else /* portHAS_STACK_OVERFLOW_CHECKING */ + { + pxNewTCB->pxTopOfStack = pxPortInitialiseStack( pxTopOfStack, pxTaskCode, pvParameters, xRunPrivileged ); + } + #endif /* portHAS_STACK_OVERFLOW_CHECKING */ + } + #else /* portUSING_MPU_WRAPPERS */ + { + /* If the port has capability to detect stack overflow, + pass the stack end address to the stack initialization + function as well. */ + #if( portHAS_STACK_OVERFLOW_CHECKING == 1 ) + { + #if( portSTACK_GROWTH < 0 ) + { + pxNewTCB->pxTopOfStack = pxPortInitialiseStack( pxTopOfStack, pxNewTCB->pxStack, pxTaskCode, pvParameters ); + } + #else /* portSTACK_GROWTH */ + { + pxNewTCB->pxTopOfStack = pxPortInitialiseStack( pxTopOfStack, pxNewTCB->pxEndOfStack, pxTaskCode, pvParameters ); + } + #endif /* portSTACK_GROWTH */ + } + #else /* portHAS_STACK_OVERFLOW_CHECKING */ + { + pxNewTCB->pxTopOfStack = pxPortInitialiseStack( pxTopOfStack, pxTaskCode, pvParameters ); + } + #endif /* portHAS_STACK_OVERFLOW_CHECKING */ + } + #endif /* portUSING_MPU_WRAPPERS */ + + if( pxCreatedTask != NULL ) + { + /* Pass the handle out in an anonymous way. The handle can be used to + change the created task's priority, delete the created task, etc.*/ + *pxCreatedTask = ( TaskHandle_t ) pxNewTCB; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } +} +/*-----------------------------------------------------------*/ + +static void prvAddNewTaskToReadyList( TCB_t *pxNewTCB ) +{ + /* Ensure interrupts don't access the task lists while the lists are being + updated. */ + taskENTER_CRITICAL(); + { + uxCurrentNumberOfTasks++; + if( pxCurrentTCB == NULL ) + { + /* There are no other tasks, or all the other tasks are in + the suspended state - make this the current task. */ + pxCurrentTCB = pxNewTCB; + + if( uxCurrentNumberOfTasks == ( UBaseType_t ) 1 ) + { + /* This is the first task to be created so do the preliminary + initialisation required. We will not recover if this call + fails, but we will report the failure. */ + prvInitialiseTaskLists(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + /* If the scheduler is not already running, make this task the + current task if it is the highest priority task to be created + so far. */ + if( xSchedulerRunning == pdFALSE ) + { + if( pxCurrentTCB->uxPriority <= pxNewTCB->uxPriority ) + { + pxCurrentTCB = pxNewTCB; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + + uxTaskNumber++; + + #if ( configUSE_TRACE_FACILITY == 1 ) + { + /* Add a counter into the TCB for tracing only. */ + pxNewTCB->uxTCBNumber = uxTaskNumber; + } + #endif /* configUSE_TRACE_FACILITY */ + traceTASK_CREATE( pxNewTCB ); + + prvAddTaskToReadyList( pxNewTCB ); + + portSETUP_TCB( pxNewTCB ); + } + taskEXIT_CRITICAL(); + + if( xSchedulerRunning != pdFALSE ) + { + /* If the created task is of a higher priority than the current task + then it should run now. */ + if( pxCurrentTCB->uxPriority < pxNewTCB->uxPriority ) + { + taskYIELD_IF_USING_PREEMPTION(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } +} +/*-----------------------------------------------------------*/ + +#if ( INCLUDE_vTaskDelete == 1 ) + + void vTaskDelete( TaskHandle_t xTaskToDelete ) + { + TCB_t *pxTCB; + + taskENTER_CRITICAL(); + { + /* If null is passed in here then it is the calling task that is + being deleted. */ + pxTCB = prvGetTCBFromHandle( xTaskToDelete ); + + /* Remove task from the ready/delayed list. */ + if( uxListRemove( &( pxTCB->xStateListItem ) ) == ( UBaseType_t ) 0 ) + { + taskRESET_READY_PRIORITY( pxTCB->uxPriority ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + /* Is the task waiting on an event also? */ + if( listLIST_ITEM_CONTAINER( &( pxTCB->xEventListItem ) ) != NULL ) + { + ( void ) uxListRemove( &( pxTCB->xEventListItem ) ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + /* Increment the uxTaskNumber also so kernel aware debuggers can + detect that the task lists need re-generating. This is done before + portPRE_TASK_DELETE_HOOK() as in the Windows port that macro will + not return. */ + uxTaskNumber++; + + if( pxTCB == pxCurrentTCB ) + { + /* A task is deleting itself. This cannot complete within the + task itself, as a context switch to another task is required. + Place the task in the termination list. The idle task will + check the termination list and free up any memory allocated by + the scheduler for the TCB and stack of the deleted task. */ + vListInsertEnd( &xTasksWaitingTermination, &( pxTCB->xStateListItem ) ); + + /* Increment the ucTasksDeleted variable so the idle task knows + there is a task that has been deleted and that it should therefore + check the xTasksWaitingTermination list. */ + ++uxDeletedTasksWaitingCleanUp; + + /* Call the delete hook before portPRE_TASK_DELETE_HOOK() as + portPRE_TASK_DELETE_HOOK() does not return in the Win32 port. */ + traceTASK_DELETE( pxTCB ); + + /* The pre-delete hook is primarily for the Windows simulator, + in which Windows specific clean up operations are performed, + after which it is not possible to yield away from this task - + hence xYieldPending is used to latch that a context switch is + required. */ + portPRE_TASK_DELETE_HOOK( pxTCB, &xYieldPending ); + } + else + { + --uxCurrentNumberOfTasks; + traceTASK_DELETE( pxTCB ); + prvDeleteTCB( pxTCB ); + + /* Reset the next expected unblock time in case it referred to + the task that has just been deleted. */ + prvResetNextTaskUnblockTime(); + } + } + taskEXIT_CRITICAL(); + + /* Force a reschedule if it is the currently running task that has just + been deleted. */ + if( xSchedulerRunning != pdFALSE ) + { + if( pxTCB == pxCurrentTCB ) + { + configASSERT( uxSchedulerSuspended == 0 ); + portYIELD_WITHIN_API(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + } + +#endif /* INCLUDE_vTaskDelete */ +/*-----------------------------------------------------------*/ + +#if ( INCLUDE_vTaskDelayUntil == 1 ) + + void vTaskDelayUntil( TickType_t * const pxPreviousWakeTime, const TickType_t xTimeIncrement ) + { + TickType_t xTimeToWake; + BaseType_t xAlreadyYielded, xShouldDelay = pdFALSE; + + configASSERT( pxPreviousWakeTime ); + configASSERT( ( xTimeIncrement > 0U ) ); + configASSERT( uxSchedulerSuspended == 0 ); + + vTaskSuspendAll(); + { + /* Minor optimisation. The tick count cannot change in this + block. */ + const TickType_t xConstTickCount = xTickCount; + + /* Generate the tick time at which the task wants to wake. */ + xTimeToWake = *pxPreviousWakeTime + xTimeIncrement; + + if( xConstTickCount < *pxPreviousWakeTime ) + { + /* The tick count has overflowed since this function was + lasted called. In this case the only time we should ever + actually delay is if the wake time has also overflowed, + and the wake time is greater than the tick time. When this + is the case it is as if neither time had overflowed. */ + if( ( xTimeToWake < *pxPreviousWakeTime ) && ( xTimeToWake > xConstTickCount ) ) + { + xShouldDelay = pdTRUE; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + /* The tick time has not overflowed. In this case we will + delay if either the wake time has overflowed, and/or the + tick time is less than the wake time. */ + if( ( xTimeToWake < *pxPreviousWakeTime ) || ( xTimeToWake > xConstTickCount ) ) + { + xShouldDelay = pdTRUE; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + + /* Update the wake time ready for the next call. */ + *pxPreviousWakeTime = xTimeToWake; + + if( xShouldDelay != pdFALSE ) + { + traceTASK_DELAY_UNTIL( xTimeToWake ); + + /* prvAddCurrentTaskToDelayedList() needs the block time, not + the time to wake, so subtract the current tick count. */ + prvAddCurrentTaskToDelayedList( xTimeToWake - xConstTickCount, pdFALSE ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + xAlreadyYielded = xTaskResumeAll(); + + /* Force a reschedule if xTaskResumeAll has not already done so, we may + have put ourselves to sleep. */ + if( xAlreadyYielded == pdFALSE ) + { + portYIELD_WITHIN_API(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + +#endif /* INCLUDE_vTaskDelayUntil */ +/*-----------------------------------------------------------*/ + +#if ( INCLUDE_vTaskDelay == 1 ) + + void vTaskDelay( const TickType_t xTicksToDelay ) + { + BaseType_t xAlreadyYielded = pdFALSE; + + /* A delay time of zero just forces a reschedule. */ + if( xTicksToDelay > ( TickType_t ) 0U ) + { + configASSERT( uxSchedulerSuspended == 0 ); + vTaskSuspendAll(); + { + traceTASK_DELAY(); + + /* A task that is removed from the event list while the + scheduler is suspended will not get placed in the ready + list or removed from the blocked list until the scheduler + is resumed. + + This task cannot be in an event list as it is the currently + executing task. */ + prvAddCurrentTaskToDelayedList( xTicksToDelay, pdFALSE ); + } + xAlreadyYielded = xTaskResumeAll(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + /* Force a reschedule if xTaskResumeAll has not already done so, we may + have put ourselves to sleep. */ + if( xAlreadyYielded == pdFALSE ) + { + portYIELD_WITHIN_API(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + +#endif /* INCLUDE_vTaskDelay */ +/*-----------------------------------------------------------*/ + +#if( ( INCLUDE_eTaskGetState == 1 ) || ( configUSE_TRACE_FACILITY == 1 ) || ( INCLUDE_xTaskAbortDelay == 1 ) ) + + eTaskState eTaskGetState( TaskHandle_t xTask ) + { + eTaskState eReturn; + List_t const * pxStateList, *pxDelayedList, *pxOverflowedDelayedList; + const TCB_t * const pxTCB = xTask; + + configASSERT( pxTCB ); + + if( pxTCB == pxCurrentTCB ) + { + /* The task calling this function is querying its own state. */ + eReturn = eRunning; + } + else + { + taskENTER_CRITICAL(); + { + pxStateList = listLIST_ITEM_CONTAINER( &( pxTCB->xStateListItem ) ); + pxDelayedList = pxDelayedTaskList; + pxOverflowedDelayedList = pxOverflowDelayedTaskList; + } + taskEXIT_CRITICAL(); + + if( ( pxStateList == pxDelayedList ) || ( pxStateList == pxOverflowedDelayedList ) ) + { + /* The task being queried is referenced from one of the Blocked + lists. */ + eReturn = eBlocked; + } + + #if ( INCLUDE_vTaskSuspend == 1 ) + else if( pxStateList == &xSuspendedTaskList ) + { + /* The task being queried is referenced from the suspended + list. Is it genuinely suspended or is it blocked + indefinitely? */ + if( listLIST_ITEM_CONTAINER( &( pxTCB->xEventListItem ) ) == NULL ) + { + #if( configUSE_TASK_NOTIFICATIONS == 1 ) + { + /* The task does not appear on the event list item of + and of the RTOS objects, but could still be in the + blocked state if it is waiting on its notification + rather than waiting on an object. */ + if( pxTCB->ucNotifyState == taskWAITING_NOTIFICATION ) + { + eReturn = eBlocked; + } + else + { + eReturn = eSuspended; + } + } + #else + { + eReturn = eSuspended; + } + #endif + } + else + { + eReturn = eBlocked; + } + } + #endif + + #if ( INCLUDE_vTaskDelete == 1 ) + else if( ( pxStateList == &xTasksWaitingTermination ) || ( pxStateList == NULL ) ) + { + /* The task being queried is referenced from the deleted + tasks list, or it is not referenced from any lists at + all. */ + eReturn = eDeleted; + } + #endif + + else /*lint !e525 Negative indentation is intended to make use of pre-processor clearer. */ + { + /* If the task is not in any other state, it must be in the + Ready (including pending ready) state. */ + eReturn = eReady; + } + } + + return eReturn; + } /*lint !e818 xTask cannot be a pointer to const because it is a typedef. */ + +#endif /* INCLUDE_eTaskGetState */ +/*-----------------------------------------------------------*/ + +#if ( INCLUDE_uxTaskPriorityGet == 1 ) + + UBaseType_t uxTaskPriorityGet( const TaskHandle_t xTask ) + { + TCB_t const *pxTCB; + UBaseType_t uxReturn; + + taskENTER_CRITICAL(); + { + /* If null is passed in here then it is the priority of the task + that called uxTaskPriorityGet() that is being queried. */ + pxTCB = prvGetTCBFromHandle( xTask ); + uxReturn = pxTCB->uxPriority; + } + taskEXIT_CRITICAL(); + + return uxReturn; + } + +#endif /* INCLUDE_uxTaskPriorityGet */ +/*-----------------------------------------------------------*/ + +#if ( INCLUDE_uxTaskPriorityGet == 1 ) + + UBaseType_t uxTaskPriorityGetFromISR( const TaskHandle_t xTask ) + { + TCB_t const *pxTCB; + UBaseType_t uxReturn, uxSavedInterruptState; + + /* RTOS ports that support interrupt nesting have the concept of a + maximum system call (or maximum API call) interrupt priority. + Interrupts that are above the maximum system call priority are keep + permanently enabled, even when the RTOS kernel is in a critical section, + but cannot make any calls to FreeRTOS API functions. If configASSERT() + is defined in FreeRTOSConfig.h then + portASSERT_IF_INTERRUPT_PRIORITY_INVALID() will result in an assertion + failure if a FreeRTOS API function is called from an interrupt that has + been assigned a priority above the configured maximum system call + priority. Only FreeRTOS functions that end in FromISR can be called + from interrupts that have been assigned a priority at or (logically) + below the maximum system call interrupt priority. FreeRTOS maintains a + separate interrupt safe API to ensure interrupt entry is as fast and as + simple as possible. More information (albeit Cortex-M specific) is + provided on the following link: + https://www.freertos.org/RTOS-Cortex-M3-M4.html */ + portASSERT_IF_INTERRUPT_PRIORITY_INVALID(); + + uxSavedInterruptState = portSET_INTERRUPT_MASK_FROM_ISR(); + { + /* If null is passed in here then it is the priority of the calling + task that is being queried. */ + pxTCB = prvGetTCBFromHandle( xTask ); + uxReturn = pxTCB->uxPriority; + } + portCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedInterruptState ); + + return uxReturn; + } + +#endif /* INCLUDE_uxTaskPriorityGet */ +/*-----------------------------------------------------------*/ + +#if ( INCLUDE_vTaskPrioritySet == 1 ) + + void vTaskPrioritySet( TaskHandle_t xTask, UBaseType_t uxNewPriority ) + { + TCB_t *pxTCB; + UBaseType_t uxCurrentBasePriority, uxPriorityUsedOnEntry; + BaseType_t xYieldRequired = pdFALSE; + + configASSERT( ( uxNewPriority < configMAX_PRIORITIES ) ); + + /* Ensure the new priority is valid. */ + if( uxNewPriority >= ( UBaseType_t ) configMAX_PRIORITIES ) + { + uxNewPriority = ( UBaseType_t ) configMAX_PRIORITIES - ( UBaseType_t ) 1U; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + taskENTER_CRITICAL(); + { + /* If null is passed in here then it is the priority of the calling + task that is being changed. */ + pxTCB = prvGetTCBFromHandle( xTask ); + + traceTASK_PRIORITY_SET( pxTCB, uxNewPriority ); + + #if ( configUSE_MUTEXES == 1 ) + { + uxCurrentBasePriority = pxTCB->uxBasePriority; + } + #else + { + uxCurrentBasePriority = pxTCB->uxPriority; + } + #endif + + if( uxCurrentBasePriority != uxNewPriority ) + { + /* The priority change may have readied a task of higher + priority than the calling task. */ + if( uxNewPriority > uxCurrentBasePriority ) + { + if( pxTCB != pxCurrentTCB ) + { + /* The priority of a task other than the currently + running task is being raised. Is the priority being + raised above that of the running task? */ + if( uxNewPriority >= pxCurrentTCB->uxPriority ) + { + xYieldRequired = pdTRUE; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + /* The priority of the running task is being raised, + but the running task must already be the highest + priority task able to run so no yield is required. */ + } + } + else if( pxTCB == pxCurrentTCB ) + { + /* Setting the priority of the running task down means + there may now be another task of higher priority that + is ready to execute. */ + xYieldRequired = pdTRUE; + } + else + { + /* Setting the priority of any other task down does not + require a yield as the running task must be above the + new priority of the task being modified. */ + } + + /* Remember the ready list the task might be referenced from + before its uxPriority member is changed so the + taskRESET_READY_PRIORITY() macro can function correctly. */ + uxPriorityUsedOnEntry = pxTCB->uxPriority; + + #if ( configUSE_MUTEXES == 1 ) + { + /* Only change the priority being used if the task is not + currently using an inherited priority. */ + if( pxTCB->uxBasePriority == pxTCB->uxPriority ) + { + pxTCB->uxPriority = uxNewPriority; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + /* The base priority gets set whatever. */ + pxTCB->uxBasePriority = uxNewPriority; + } + #else + { + pxTCB->uxPriority = uxNewPriority; + } + #endif + + /* Only reset the event list item value if the value is not + being used for anything else. */ + if( ( listGET_LIST_ITEM_VALUE( &( pxTCB->xEventListItem ) ) & taskEVENT_LIST_ITEM_VALUE_IN_USE ) == 0UL ) + { + listSET_LIST_ITEM_VALUE( &( pxTCB->xEventListItem ), ( ( TickType_t ) configMAX_PRIORITIES - ( TickType_t ) uxNewPriority ) ); /*lint !e961 MISRA exception as the casts are only redundant for some ports. */ + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + /* If the task is in the blocked or suspended list we need do + nothing more than change its priority variable. However, if + the task is in a ready list it needs to be removed and placed + in the list appropriate to its new priority. */ + if( listIS_CONTAINED_WITHIN( &( pxReadyTasksLists[ uxPriorityUsedOnEntry ] ), &( pxTCB->xStateListItem ) ) != pdFALSE ) + { + /* The task is currently in its ready list - remove before + adding it to it's new ready list. As we are in a critical + section we can do this even if the scheduler is suspended. */ + if( uxListRemove( &( pxTCB->xStateListItem ) ) == ( UBaseType_t ) 0 ) + { + /* It is known that the task is in its ready list so + there is no need to check again and the port level + reset macro can be called directly. */ + portRESET_READY_PRIORITY( uxPriorityUsedOnEntry, uxTopReadyPriority ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + prvAddTaskToReadyList( pxTCB ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + if( xYieldRequired != pdFALSE ) + { + taskYIELD_IF_USING_PREEMPTION(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + /* Remove compiler warning about unused variables when the port + optimised task selection is not being used. */ + ( void ) uxPriorityUsedOnEntry; + } + } + taskEXIT_CRITICAL(); + } + +#endif /* INCLUDE_vTaskPrioritySet */ +/*-----------------------------------------------------------*/ + +#if ( INCLUDE_vTaskSuspend == 1 ) + + void vTaskSuspend( TaskHandle_t xTaskToSuspend ) + { + TCB_t *pxTCB; + + taskENTER_CRITICAL(); + { + /* If null is passed in here then it is the running task that is + being suspended. */ + pxTCB = prvGetTCBFromHandle( xTaskToSuspend ); + + traceTASK_SUSPEND( pxTCB ); + + /* Remove task from the ready/delayed list and place in the + suspended list. */ + if( uxListRemove( &( pxTCB->xStateListItem ) ) == ( UBaseType_t ) 0 ) + { + taskRESET_READY_PRIORITY( pxTCB->uxPriority ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + /* Is the task waiting on an event also? */ + if( listLIST_ITEM_CONTAINER( &( pxTCB->xEventListItem ) ) != NULL ) + { + ( void ) uxListRemove( &( pxTCB->xEventListItem ) ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + vListInsertEnd( &xSuspendedTaskList, &( pxTCB->xStateListItem ) ); + + #if( configUSE_TASK_NOTIFICATIONS == 1 ) + { + if( pxTCB->ucNotifyState == taskWAITING_NOTIFICATION ) + { + /* The task was blocked to wait for a notification, but is + now suspended, so no notification was received. */ + pxTCB->ucNotifyState = taskNOT_WAITING_NOTIFICATION; + } + } + #endif + } + taskEXIT_CRITICAL(); + + if( xSchedulerRunning != pdFALSE ) + { + /* Reset the next expected unblock time in case it referred to the + task that is now in the Suspended state. */ + taskENTER_CRITICAL(); + { + prvResetNextTaskUnblockTime(); + } + taskEXIT_CRITICAL(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + if( pxTCB == pxCurrentTCB ) + { + if( xSchedulerRunning != pdFALSE ) + { + /* The current task has just been suspended. */ + configASSERT( uxSchedulerSuspended == 0 ); + portYIELD_WITHIN_API(); + } + else + { + /* The scheduler is not running, but the task that was pointed + to by pxCurrentTCB has just been suspended and pxCurrentTCB + must be adjusted to point to a different task. */ + if( listCURRENT_LIST_LENGTH( &xSuspendedTaskList ) == uxCurrentNumberOfTasks ) /*lint !e931 Right has no side effect, just volatile. */ + { + /* No other tasks are ready, so set pxCurrentTCB back to + NULL so when the next task is created pxCurrentTCB will + be set to point to it no matter what its relative priority + is. */ + pxCurrentTCB = NULL; + } + else + { + vTaskSwitchContext(); + } + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + +#endif /* INCLUDE_vTaskSuspend */ +/*-----------------------------------------------------------*/ + +#if ( INCLUDE_vTaskSuspend == 1 ) + + static BaseType_t prvTaskIsTaskSuspended( const TaskHandle_t xTask ) + { + BaseType_t xReturn = pdFALSE; + const TCB_t * const pxTCB = xTask; + + /* Accesses xPendingReadyList so must be called from a critical + section. */ + + /* It does not make sense to check if the calling task is suspended. */ + configASSERT( xTask ); + + /* Is the task being resumed actually in the suspended list? */ + if( listIS_CONTAINED_WITHIN( &xSuspendedTaskList, &( pxTCB->xStateListItem ) ) != pdFALSE ) + { + /* Has the task already been resumed from within an ISR? */ + if( listIS_CONTAINED_WITHIN( &xPendingReadyList, &( pxTCB->xEventListItem ) ) == pdFALSE ) + { + /* Is it in the suspended list because it is in the Suspended + state, or because is is blocked with no timeout? */ + if( listIS_CONTAINED_WITHIN( NULL, &( pxTCB->xEventListItem ) ) != pdFALSE ) /*lint !e961. The cast is only redundant when NULL is used. */ + { + xReturn = pdTRUE; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + return xReturn; + } /*lint !e818 xTask cannot be a pointer to const because it is a typedef. */ + +#endif /* INCLUDE_vTaskSuspend */ +/*-----------------------------------------------------------*/ + +#if ( INCLUDE_vTaskSuspend == 1 ) + + void vTaskResume( TaskHandle_t xTaskToResume ) + { + TCB_t * const pxTCB = xTaskToResume; + + /* It does not make sense to resume the calling task. */ + configASSERT( xTaskToResume ); + + /* The parameter cannot be NULL as it is impossible to resume the + currently executing task. */ + if( ( pxTCB != pxCurrentTCB ) && ( pxTCB != NULL ) ) + { + taskENTER_CRITICAL(); + { + if( prvTaskIsTaskSuspended( pxTCB ) != pdFALSE ) + { + traceTASK_RESUME( pxTCB ); + + /* The ready list can be accessed even if the scheduler is + suspended because this is inside a critical section. */ + ( void ) uxListRemove( &( pxTCB->xStateListItem ) ); + prvAddTaskToReadyList( pxTCB ); + + /* A higher priority task may have just been resumed. */ + if( pxTCB->uxPriority >= pxCurrentTCB->uxPriority ) + { + /* This yield may not cause the task just resumed to run, + but will leave the lists in the correct state for the + next yield. */ + taskYIELD_IF_USING_PREEMPTION(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + taskEXIT_CRITICAL(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + +#endif /* INCLUDE_vTaskSuspend */ + +/*-----------------------------------------------------------*/ + +#if ( ( INCLUDE_xTaskResumeFromISR == 1 ) && ( INCLUDE_vTaskSuspend == 1 ) ) + + BaseType_t xTaskResumeFromISR( TaskHandle_t xTaskToResume ) + { + BaseType_t xYieldRequired = pdFALSE; + TCB_t * const pxTCB = xTaskToResume; + UBaseType_t uxSavedInterruptStatus; + + configASSERT( xTaskToResume ); + + /* RTOS ports that support interrupt nesting have the concept of a + maximum system call (or maximum API call) interrupt priority. + Interrupts that are above the maximum system call priority are keep + permanently enabled, even when the RTOS kernel is in a critical section, + but cannot make any calls to FreeRTOS API functions. If configASSERT() + is defined in FreeRTOSConfig.h then + portASSERT_IF_INTERRUPT_PRIORITY_INVALID() will result in an assertion + failure if a FreeRTOS API function is called from an interrupt that has + been assigned a priority above the configured maximum system call + priority. Only FreeRTOS functions that end in FromISR can be called + from interrupts that have been assigned a priority at or (logically) + below the maximum system call interrupt priority. FreeRTOS maintains a + separate interrupt safe API to ensure interrupt entry is as fast and as + simple as possible. More information (albeit Cortex-M specific) is + provided on the following link: + https://www.freertos.org/RTOS-Cortex-M3-M4.html */ + portASSERT_IF_INTERRUPT_PRIORITY_INVALID(); + + uxSavedInterruptStatus = portSET_INTERRUPT_MASK_FROM_ISR(); + { + if( prvTaskIsTaskSuspended( pxTCB ) != pdFALSE ) + { + traceTASK_RESUME_FROM_ISR( pxTCB ); + + /* Check the ready lists can be accessed. */ + if( uxSchedulerSuspended == ( UBaseType_t ) pdFALSE ) + { + /* Ready lists can be accessed so move the task from the + suspended list to the ready list directly. */ + if( pxTCB->uxPriority >= pxCurrentTCB->uxPriority ) + { + xYieldRequired = pdTRUE; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + ( void ) uxListRemove( &( pxTCB->xStateListItem ) ); + prvAddTaskToReadyList( pxTCB ); + } + else + { + /* The delayed or ready lists cannot be accessed so the task + is held in the pending ready list until the scheduler is + unsuspended. */ + vListInsertEnd( &( xPendingReadyList ), &( pxTCB->xEventListItem ) ); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + portCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedInterruptStatus ); + + return xYieldRequired; + } + +#endif /* ( ( INCLUDE_xTaskResumeFromISR == 1 ) && ( INCLUDE_vTaskSuspend == 1 ) ) */ +/*-----------------------------------------------------------*/ + +void vTaskStartScheduler( void ) +{ +BaseType_t xReturn; + + /* Add the idle task at the lowest priority. */ + #if( configSUPPORT_STATIC_ALLOCATION == 1 ) + { + StaticTask_t *pxIdleTaskTCBBuffer = NULL; + StackType_t *pxIdleTaskStackBuffer = NULL; + uint32_t ulIdleTaskStackSize; + + /* The Idle task is created using user provided RAM - obtain the + address of the RAM then create the idle task. */ + vApplicationGetIdleTaskMemory( &pxIdleTaskTCBBuffer, &pxIdleTaskStackBuffer, &ulIdleTaskStackSize ); + xIdleTaskHandle = xTaskCreateStatic( prvIdleTask, + configIDLE_TASK_NAME, + ulIdleTaskStackSize, + ( void * ) NULL, /*lint !e961. The cast is not redundant for all compilers. */ + portPRIVILEGE_BIT, /* In effect ( tskIDLE_PRIORITY | portPRIVILEGE_BIT ), but tskIDLE_PRIORITY is zero. */ + pxIdleTaskStackBuffer, + pxIdleTaskTCBBuffer ); /*lint !e961 MISRA exception, justified as it is not a redundant explicit cast to all supported compilers. */ + + if( xIdleTaskHandle != NULL ) + { + xReturn = pdPASS; + } + else + { + xReturn = pdFAIL; + } + } + #else + { + /* The Idle task is being created using dynamically allocated RAM. */ + xReturn = xTaskCreate( prvIdleTask, + configIDLE_TASK_NAME, + configMINIMAL_STACK_SIZE, + ( void * ) NULL, + portPRIVILEGE_BIT, /* In effect ( tskIDLE_PRIORITY | portPRIVILEGE_BIT ), but tskIDLE_PRIORITY is zero. */ + &xIdleTaskHandle ); /*lint !e961 MISRA exception, justified as it is not a redundant explicit cast to all supported compilers. */ + } + #endif /* configSUPPORT_STATIC_ALLOCATION */ + + #if ( configUSE_TIMERS == 1 ) + { + if( xReturn == pdPASS ) + { + xReturn = xTimerCreateTimerTask(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + #endif /* configUSE_TIMERS */ + + if( xReturn == pdPASS ) + { + /* freertos_tasks_c_additions_init() should only be called if the user + definable macro FREERTOS_TASKS_C_ADDITIONS_INIT() is defined, as that is + the only macro called by the function. */ + #ifdef FREERTOS_TASKS_C_ADDITIONS_INIT + { + freertos_tasks_c_additions_init(); + } + #endif + + /* Interrupts are turned off here, to ensure a tick does not occur + before or during the call to xPortStartScheduler(). The stacks of + the created tasks contain a status word with interrupts switched on + so interrupts will automatically get re-enabled when the first task + starts to run. */ + portDISABLE_INTERRUPTS(); + + #if ( configUSE_NEWLIB_REENTRANT == 1 ) + { + /* Switch Newlib's _impure_ptr variable to point to the _reent + structure specific to the task that will run first. + See the third party link http://www.nadler.com/embedded/newlibAndFreeRTOS.html + for additional information. */ + _impure_ptr = &( pxCurrentTCB->xNewLib_reent ); + } + #endif /* configUSE_NEWLIB_REENTRANT */ + + xNextTaskUnblockTime = portMAX_DELAY; + xSchedulerRunning = pdTRUE; + xTickCount = ( TickType_t ) configINITIAL_TICK_COUNT; + + /* If configGENERATE_RUN_TIME_STATS is defined then the following + macro must be defined to configure the timer/counter used to generate + the run time counter time base. NOTE: If configGENERATE_RUN_TIME_STATS + is set to 0 and the following line fails to build then ensure you do not + have portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() defined in your + FreeRTOSConfig.h file. */ + portCONFIGURE_TIMER_FOR_RUN_TIME_STATS(); + + traceTASK_SWITCHED_IN(); + + /* Setting up the timer tick is hardware specific and thus in the + portable interface. */ + if( xPortStartScheduler() != pdFALSE ) + { + /* Should not reach here as if the scheduler is running the + function will not return. */ + } + else + { + /* Should only reach here if a task calls xTaskEndScheduler(). */ + } + } + else + { + /* This line will only be reached if the kernel could not be started, + because there was not enough FreeRTOS heap to create the idle task + or the timer task. */ + configASSERT( xReturn != errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY ); + } + + /* Prevent compiler warnings if INCLUDE_xTaskGetIdleTaskHandle is set to 0, + meaning xIdleTaskHandle is not used anywhere else. */ + ( void ) xIdleTaskHandle; +} +/*-----------------------------------------------------------*/ + +void vTaskEndScheduler( void ) +{ + /* Stop the scheduler interrupts and call the portable scheduler end + routine so the original ISRs can be restored if necessary. The port + layer must ensure interrupts enable bit is left in the correct state. */ + portDISABLE_INTERRUPTS(); + xSchedulerRunning = pdFALSE; + vPortEndScheduler(); +} +/*----------------------------------------------------------*/ + +void vTaskSuspendAll( void ) +{ + /* A critical section is not required as the variable is of type + BaseType_t. Please read Richard Barry's reply in the following link to a + post in the FreeRTOS support forum before reporting this as a bug! - + http://goo.gl/wu4acr */ + + /* portSOFRWARE_BARRIER() is only implemented for emulated/simulated ports that + do not otherwise exhibit real time behaviour. */ + portSOFTWARE_BARRIER(); + + /* The scheduler is suspended if uxSchedulerSuspended is non-zero. An increment + is used to allow calls to vTaskSuspendAll() to nest. */ + ++uxSchedulerSuspended; + + /* Enforces ordering for ports and optimised compilers that may otherwise place + the above increment elsewhere. */ + portMEMORY_BARRIER(); +} +/*----------------------------------------------------------*/ + +#if ( configUSE_TICKLESS_IDLE != 0 ) + + static TickType_t prvGetExpectedIdleTime( void ) + { + TickType_t xReturn; + UBaseType_t uxHigherPriorityReadyTasks = pdFALSE; + + /* uxHigherPriorityReadyTasks takes care of the case where + configUSE_PREEMPTION is 0, so there may be tasks above the idle priority + task that are in the Ready state, even though the idle task is + running. */ + #if( configUSE_PORT_OPTIMISED_TASK_SELECTION == 0 ) + { + if( uxTopReadyPriority > tskIDLE_PRIORITY ) + { + uxHigherPriorityReadyTasks = pdTRUE; + } + } + #else + { + const UBaseType_t uxLeastSignificantBit = ( UBaseType_t ) 0x01; + + /* When port optimised task selection is used the uxTopReadyPriority + variable is used as a bit map. If bits other than the least + significant bit are set then there are tasks that have a priority + above the idle priority that are in the Ready state. This takes + care of the case where the co-operative scheduler is in use. */ + if( uxTopReadyPriority > uxLeastSignificantBit ) + { + uxHigherPriorityReadyTasks = pdTRUE; + } + } + #endif + + if( pxCurrentTCB->uxPriority > tskIDLE_PRIORITY ) + { + xReturn = 0; + } + else if( listCURRENT_LIST_LENGTH( &( pxReadyTasksLists[ tskIDLE_PRIORITY ] ) ) > 1 ) + { + /* There are other idle priority tasks in the ready state. If + time slicing is used then the very next tick interrupt must be + processed. */ + xReturn = 0; + } + else if( uxHigherPriorityReadyTasks != pdFALSE ) + { + /* There are tasks in the Ready state that have a priority above the + idle priority. This path can only be reached if + configUSE_PREEMPTION is 0. */ + xReturn = 0; + } + else + { + xReturn = xNextTaskUnblockTime - xTickCount; + } + + return xReturn; + } + +#endif /* configUSE_TICKLESS_IDLE */ +/*----------------------------------------------------------*/ + +BaseType_t xTaskResumeAll( void ) +{ +TCB_t *pxTCB = NULL; +BaseType_t xAlreadyYielded = pdFALSE; + + /* If uxSchedulerSuspended is zero then this function does not match a + previous call to vTaskSuspendAll(). */ + configASSERT( uxSchedulerSuspended ); + + /* It is possible that an ISR caused a task to be removed from an event + list while the scheduler was suspended. If this was the case then the + removed task will have been added to the xPendingReadyList. Once the + scheduler has been resumed it is safe to move all the pending ready + tasks from this list into their appropriate ready list. */ + taskENTER_CRITICAL(); + { + --uxSchedulerSuspended; + + if( uxSchedulerSuspended == ( UBaseType_t ) pdFALSE ) + { + if( uxCurrentNumberOfTasks > ( UBaseType_t ) 0U ) + { + /* Move any readied tasks from the pending list into the + appropriate ready list. */ + while( listLIST_IS_EMPTY( &xPendingReadyList ) == pdFALSE ) + { + pxTCB = listGET_OWNER_OF_HEAD_ENTRY( ( &xPendingReadyList ) ); /*lint !e9079 void * is used as this macro is used with timers and co-routines too. Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */ + ( void ) uxListRemove( &( pxTCB->xEventListItem ) ); + ( void ) uxListRemove( &( pxTCB->xStateListItem ) ); + prvAddTaskToReadyList( pxTCB ); + + /* If the moved task has a priority higher than the current + task then a yield must be performed. */ + if( pxTCB->uxPriority >= pxCurrentTCB->uxPriority ) + { + xYieldPending = pdTRUE; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + + if( pxTCB != NULL ) + { + /* A task was unblocked while the scheduler was suspended, + which may have prevented the next unblock time from being + re-calculated, in which case re-calculate it now. Mainly + important for low power tickless implementations, where + this can prevent an unnecessary exit from low power + state. */ + prvResetNextTaskUnblockTime(); + } + + /* If any ticks occurred while the scheduler was suspended then + they should be processed now. This ensures the tick count does + not slip, and that any delayed tasks are resumed at the correct + time. */ + { + TickType_t xPendedCounts = xPendedTicks; /* Non-volatile copy. */ + + if( xPendedCounts > ( TickType_t ) 0U ) + { + do + { + if( xTaskIncrementTick() != pdFALSE ) + { + xYieldPending = pdTRUE; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + --xPendedCounts; + } while( xPendedCounts > ( TickType_t ) 0U ); + + xPendedTicks = 0; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + + if( xYieldPending != pdFALSE ) + { + #if( configUSE_PREEMPTION != 0 ) + { + xAlreadyYielded = pdTRUE; + } + #endif + taskYIELD_IF_USING_PREEMPTION(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + taskEXIT_CRITICAL(); + + return xAlreadyYielded; +} +/*-----------------------------------------------------------*/ + +TickType_t xTaskGetTickCount( void ) +{ +TickType_t xTicks; + + /* Critical section required if running on a 16 bit processor. */ + portTICK_TYPE_ENTER_CRITICAL(); + { + xTicks = xTickCount; + } + portTICK_TYPE_EXIT_CRITICAL(); + + return xTicks; +} +/*-----------------------------------------------------------*/ + +TickType_t xTaskGetTickCountFromISR( void ) +{ +TickType_t xReturn; +UBaseType_t uxSavedInterruptStatus; + + /* RTOS ports that support interrupt nesting have the concept of a maximum + system call (or maximum API call) interrupt priority. Interrupts that are + above the maximum system call priority are kept permanently enabled, even + when the RTOS kernel is in a critical section, but cannot make any calls to + FreeRTOS API functions. If configASSERT() is defined in FreeRTOSConfig.h + then portASSERT_IF_INTERRUPT_PRIORITY_INVALID() will result in an assertion + failure if a FreeRTOS API function is called from an interrupt that has been + assigned a priority above the configured maximum system call priority. + Only FreeRTOS functions that end in FromISR can be called from interrupts + that have been assigned a priority at or (logically) below the maximum + system call interrupt priority. FreeRTOS maintains a separate interrupt + safe API to ensure interrupt entry is as fast and as simple as possible. + More information (albeit Cortex-M specific) is provided on the following + link: https://www.freertos.org/RTOS-Cortex-M3-M4.html */ + portASSERT_IF_INTERRUPT_PRIORITY_INVALID(); + + uxSavedInterruptStatus = portTICK_TYPE_SET_INTERRUPT_MASK_FROM_ISR(); + { + xReturn = xTickCount; + } + portTICK_TYPE_CLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedInterruptStatus ); + + return xReturn; +} +/*-----------------------------------------------------------*/ + +UBaseType_t uxTaskGetNumberOfTasks( void ) +{ + /* A critical section is not required because the variables are of type + BaseType_t. */ + return uxCurrentNumberOfTasks; +} +/*-----------------------------------------------------------*/ + +char *pcTaskGetName( TaskHandle_t xTaskToQuery ) /*lint !e971 Unqualified char types are allowed for strings and single characters only. */ +{ +TCB_t *pxTCB; + + /* If null is passed in here then the name of the calling task is being + queried. */ + pxTCB = prvGetTCBFromHandle( xTaskToQuery ); + configASSERT( pxTCB ); + return &( pxTCB->pcTaskName[ 0 ] ); +} +/*-----------------------------------------------------------*/ + +#if ( INCLUDE_xTaskGetHandle == 1 ) + + static TCB_t *prvSearchForNameWithinSingleList( List_t *pxList, const char pcNameToQuery[] ) + { + TCB_t *pxNextTCB, *pxFirstTCB, *pxReturn = NULL; + UBaseType_t x; + char cNextChar; + BaseType_t xBreakLoop; + + /* This function is called with the scheduler suspended. */ + + if( listCURRENT_LIST_LENGTH( pxList ) > ( UBaseType_t ) 0 ) + { + listGET_OWNER_OF_NEXT_ENTRY( pxFirstTCB, pxList ); /*lint !e9079 void * is used as this macro is used with timers and co-routines too. Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */ + + do + { + listGET_OWNER_OF_NEXT_ENTRY( pxNextTCB, pxList ); /*lint !e9079 void * is used as this macro is used with timers and co-routines too. Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */ + + /* Check each character in the name looking for a match or + mismatch. */ + xBreakLoop = pdFALSE; + for( x = ( UBaseType_t ) 0; x < ( UBaseType_t ) configMAX_TASK_NAME_LEN; x++ ) + { + cNextChar = pxNextTCB->pcTaskName[ x ]; + + if( cNextChar != pcNameToQuery[ x ] ) + { + /* Characters didn't match. */ + xBreakLoop = pdTRUE; + } + else if( cNextChar == ( char ) 0x00 ) + { + /* Both strings terminated, a match must have been + found. */ + pxReturn = pxNextTCB; + xBreakLoop = pdTRUE; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + if( xBreakLoop != pdFALSE ) + { + break; + } + } + + if( pxReturn != NULL ) + { + /* The handle has been found. */ + break; + } + + } while( pxNextTCB != pxFirstTCB ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + return pxReturn; + } + +#endif /* INCLUDE_xTaskGetHandle */ +/*-----------------------------------------------------------*/ + +#if ( INCLUDE_xTaskGetHandle == 1 ) + + TaskHandle_t xTaskGetHandle( const char *pcNameToQuery ) /*lint !e971 Unqualified char types are allowed for strings and single characters only. */ + { + UBaseType_t uxQueue = configMAX_PRIORITIES; + TCB_t* pxTCB; + + /* Task names will be truncated to configMAX_TASK_NAME_LEN - 1 bytes. */ + configASSERT( strlen( pcNameToQuery ) < configMAX_TASK_NAME_LEN ); + + vTaskSuspendAll(); + { + /* Search the ready lists. */ + do + { + uxQueue--; + pxTCB = prvSearchForNameWithinSingleList( ( List_t * ) &( pxReadyTasksLists[ uxQueue ] ), pcNameToQuery ); + + if( pxTCB != NULL ) + { + /* Found the handle. */ + break; + } + + } while( uxQueue > ( UBaseType_t ) tskIDLE_PRIORITY ); /*lint !e961 MISRA exception as the casts are only redundant for some ports. */ + + /* Search the delayed lists. */ + if( pxTCB == NULL ) + { + pxTCB = prvSearchForNameWithinSingleList( ( List_t * ) pxDelayedTaskList, pcNameToQuery ); + } + + if( pxTCB == NULL ) + { + pxTCB = prvSearchForNameWithinSingleList( ( List_t * ) pxOverflowDelayedTaskList, pcNameToQuery ); + } + + #if ( INCLUDE_vTaskSuspend == 1 ) + { + if( pxTCB == NULL ) + { + /* Search the suspended list. */ + pxTCB = prvSearchForNameWithinSingleList( &xSuspendedTaskList, pcNameToQuery ); + } + } + #endif + + #if( INCLUDE_vTaskDelete == 1 ) + { + if( pxTCB == NULL ) + { + /* Search the deleted list. */ + pxTCB = prvSearchForNameWithinSingleList( &xTasksWaitingTermination, pcNameToQuery ); + } + } + #endif + } + ( void ) xTaskResumeAll(); + + return pxTCB; + } + +#endif /* INCLUDE_xTaskGetHandle */ +/*-----------------------------------------------------------*/ + +#if ( configUSE_TRACE_FACILITY == 1 ) + + UBaseType_t uxTaskGetSystemState( TaskStatus_t * const pxTaskStatusArray, const UBaseType_t uxArraySize, uint32_t * const pulTotalRunTime ) + { + UBaseType_t uxTask = 0, uxQueue = configMAX_PRIORITIES; + + vTaskSuspendAll(); + { + /* Is there a space in the array for each task in the system? */ + if( uxArraySize >= uxCurrentNumberOfTasks ) + { + /* Fill in an TaskStatus_t structure with information on each + task in the Ready state. */ + do + { + uxQueue--; + uxTask += prvListTasksWithinSingleList( &( pxTaskStatusArray[ uxTask ] ), &( pxReadyTasksLists[ uxQueue ] ), eReady ); + + } while( uxQueue > ( UBaseType_t ) tskIDLE_PRIORITY ); /*lint !e961 MISRA exception as the casts are only redundant for some ports. */ + + /* Fill in an TaskStatus_t structure with information on each + task in the Blocked state. */ + uxTask += prvListTasksWithinSingleList( &( pxTaskStatusArray[ uxTask ] ), ( List_t * ) pxDelayedTaskList, eBlocked ); + uxTask += prvListTasksWithinSingleList( &( pxTaskStatusArray[ uxTask ] ), ( List_t * ) pxOverflowDelayedTaskList, eBlocked ); + + #if( INCLUDE_vTaskDelete == 1 ) + { + /* Fill in an TaskStatus_t structure with information on + each task that has been deleted but not yet cleaned up. */ + uxTask += prvListTasksWithinSingleList( &( pxTaskStatusArray[ uxTask ] ), &xTasksWaitingTermination, eDeleted ); + } + #endif + + #if ( INCLUDE_vTaskSuspend == 1 ) + { + /* Fill in an TaskStatus_t structure with information on + each task in the Suspended state. */ + uxTask += prvListTasksWithinSingleList( &( pxTaskStatusArray[ uxTask ] ), &xSuspendedTaskList, eSuspended ); + } + #endif + + #if ( configGENERATE_RUN_TIME_STATS == 1) + { + if( pulTotalRunTime != NULL ) + { + #ifdef portALT_GET_RUN_TIME_COUNTER_VALUE + portALT_GET_RUN_TIME_COUNTER_VALUE( ( *pulTotalRunTime ) ); + #else + *pulTotalRunTime = portGET_RUN_TIME_COUNTER_VALUE(); + #endif + } + } + #else + { + if( pulTotalRunTime != NULL ) + { + *pulTotalRunTime = 0; + } + } + #endif + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + ( void ) xTaskResumeAll(); + + return uxTask; + } + +#endif /* configUSE_TRACE_FACILITY */ +/*----------------------------------------------------------*/ + +#if ( INCLUDE_xTaskGetIdleTaskHandle == 1 ) + + TaskHandle_t xTaskGetIdleTaskHandle( void ) + { + /* If xTaskGetIdleTaskHandle() is called before the scheduler has been + started, then xIdleTaskHandle will be NULL. */ + configASSERT( ( xIdleTaskHandle != NULL ) ); + return xIdleTaskHandle; + } + +#endif /* INCLUDE_xTaskGetIdleTaskHandle */ +/*----------------------------------------------------------*/ + +/* This conditional compilation should use inequality to 0, not equality to 1. +This is to ensure vTaskStepTick() is available when user defined low power mode +implementations require configUSE_TICKLESS_IDLE to be set to a value other than +1. */ +#if ( configUSE_TICKLESS_IDLE != 0 ) + + void vTaskStepTick( const TickType_t xTicksToJump ) + { + /* Correct the tick count value after a period during which the tick + was suppressed. Note this does *not* call the tick hook function for + each stepped tick. */ + configASSERT( ( xTickCount + xTicksToJump ) <= xNextTaskUnblockTime ); + xTickCount += xTicksToJump; + traceINCREASE_TICK_COUNT( xTicksToJump ); + } + +#endif /* configUSE_TICKLESS_IDLE */ +/*----------------------------------------------------------*/ + +BaseType_t xTaskCatchUpTicks( TickType_t xTicksToCatchUp ) +{ +BaseType_t xYieldRequired = pdFALSE; + + /* Must not be called with the scheduler suspended as the implementation + relies on xPendedTicks being wound down to 0 in xTaskResumeAll(). */ + configASSERT( uxSchedulerSuspended == 0 ); + + /* Use xPendedTicks to mimic xTicksToCatchUp number of ticks occurring when + the scheduler is suspended so the ticks are executed in xTaskResumeAll(). */ + vTaskSuspendAll(); + xPendedTicks += xTicksToCatchUp; + xYieldRequired = xTaskResumeAll(); + + return xYieldRequired; +} +/*----------------------------------------------------------*/ + +#if ( INCLUDE_xTaskAbortDelay == 1 ) + + BaseType_t xTaskAbortDelay( TaskHandle_t xTask ) + { + TCB_t *pxTCB = xTask; + BaseType_t xReturn; + + configASSERT( pxTCB ); + + vTaskSuspendAll(); + { + /* A task can only be prematurely removed from the Blocked state if + it is actually in the Blocked state. */ + if( eTaskGetState( xTask ) == eBlocked ) + { + xReturn = pdPASS; + + /* Remove the reference to the task from the blocked list. An + interrupt won't touch the xStateListItem because the + scheduler is suspended. */ + ( void ) uxListRemove( &( pxTCB->xStateListItem ) ); + + /* Is the task waiting on an event also? If so remove it from + the event list too. Interrupts can touch the event list item, + even though the scheduler is suspended, so a critical section + is used. */ + taskENTER_CRITICAL(); + { + if( listLIST_ITEM_CONTAINER( &( pxTCB->xEventListItem ) ) != NULL ) + { + ( void ) uxListRemove( &( pxTCB->xEventListItem ) ); + + /* This lets the task know it was forcibly removed from the + blocked state so it should not re-evaluate its block time and + then block again. */ + pxTCB->ucDelayAborted = pdTRUE; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + taskEXIT_CRITICAL(); + + /* Place the unblocked task into the appropriate ready list. */ + prvAddTaskToReadyList( pxTCB ); + + /* A task being unblocked cannot cause an immediate context + switch if preemption is turned off. */ + #if ( configUSE_PREEMPTION == 1 ) + { + /* Preemption is on, but a context switch should only be + performed if the unblocked task has a priority that is + equal to or higher than the currently executing task. */ + if( pxTCB->uxPriority > pxCurrentTCB->uxPriority ) + { + /* Pend the yield to be performed when the scheduler + is unsuspended. */ + xYieldPending = pdTRUE; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + #endif /* configUSE_PREEMPTION */ + } + else + { + xReturn = pdFAIL; + } + } + ( void ) xTaskResumeAll(); + + return xReturn; + } + +#endif /* INCLUDE_xTaskAbortDelay */ +/*----------------------------------------------------------*/ + +BaseType_t xTaskIncrementTick( void ) +{ +TCB_t * pxTCB; +TickType_t xItemValue; +BaseType_t xSwitchRequired = pdFALSE; + + /* Called by the portable layer each time a tick interrupt occurs. + Increments the tick then checks to see if the new tick value will cause any + tasks to be unblocked. */ + traceTASK_INCREMENT_TICK( xTickCount ); + if( uxSchedulerSuspended == ( UBaseType_t ) pdFALSE ) + { + /* Minor optimisation. The tick count cannot change in this + block. */ + const TickType_t xConstTickCount = xTickCount + ( TickType_t ) 1; + + /* Increment the RTOS tick, switching the delayed and overflowed + delayed lists if it wraps to 0. */ + xTickCount = xConstTickCount; + + if( xConstTickCount == ( TickType_t ) 0U ) /*lint !e774 'if' does not always evaluate to false as it is looking for an overflow. */ + { + taskSWITCH_DELAYED_LISTS(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + /* See if this tick has made a timeout expire. Tasks are stored in + the queue in the order of their wake time - meaning once one task + has been found whose block time has not expired there is no need to + look any further down the list. */ + if( xConstTickCount >= xNextTaskUnblockTime ) + { + for( ;; ) + { + if( listLIST_IS_EMPTY( pxDelayedTaskList ) != pdFALSE ) + { + /* The delayed list is empty. Set xNextTaskUnblockTime + to the maximum possible value so it is extremely + unlikely that the + if( xTickCount >= xNextTaskUnblockTime ) test will pass + next time through. */ + xNextTaskUnblockTime = portMAX_DELAY; /*lint !e961 MISRA exception as the casts are only redundant for some ports. */ + break; + } + else + { + /* The delayed list is not empty, get the value of the + item at the head of the delayed list. This is the time + at which the task at the head of the delayed list must + be removed from the Blocked state. */ + pxTCB = listGET_OWNER_OF_HEAD_ENTRY( pxDelayedTaskList ); /*lint !e9079 void * is used as this macro is used with timers and co-routines too. Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */ + xItemValue = listGET_LIST_ITEM_VALUE( &( pxTCB->xStateListItem ) ); + + if( xConstTickCount < xItemValue ) + { + /* It is not time to unblock this item yet, but the + item value is the time at which the task at the head + of the blocked list must be removed from the Blocked + state - so record the item value in + xNextTaskUnblockTime. */ + xNextTaskUnblockTime = xItemValue; + break; /*lint !e9011 Code structure here is deedmed easier to understand with multiple breaks. */ + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + /* It is time to remove the item from the Blocked state. */ + ( void ) uxListRemove( &( pxTCB->xStateListItem ) ); + + /* Is the task waiting on an event also? If so remove + it from the event list. */ + if( listLIST_ITEM_CONTAINER( &( pxTCB->xEventListItem ) ) != NULL ) + { + ( void ) uxListRemove( &( pxTCB->xEventListItem ) ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + /* Place the unblocked task into the appropriate ready + list. */ + prvAddTaskToReadyList( pxTCB ); + + /* A task being unblocked cannot cause an immediate + context switch if preemption is turned off. */ + #if ( configUSE_PREEMPTION == 1 ) + { + /* Preemption is on, but a context switch should + only be performed if the unblocked task has a + priority that is equal to or higher than the + currently executing task. */ + if( pxTCB->uxPriority >= pxCurrentTCB->uxPriority ) + { + xSwitchRequired = pdTRUE; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + #endif /* configUSE_PREEMPTION */ + } + } + } + + /* Tasks of equal priority to the currently running task will share + processing time (time slice) if preemption is on, and the application + writer has not explicitly turned time slicing off. */ + #if ( ( configUSE_PREEMPTION == 1 ) && ( configUSE_TIME_SLICING == 1 ) ) + { + if( listCURRENT_LIST_LENGTH( &( pxReadyTasksLists[ pxCurrentTCB->uxPriority ] ) ) > ( UBaseType_t ) 1 ) + { + xSwitchRequired = pdTRUE; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + #endif /* ( ( configUSE_PREEMPTION == 1 ) && ( configUSE_TIME_SLICING == 1 ) ) */ + + #if ( configUSE_TICK_HOOK == 1 ) + { + /* Guard against the tick hook being called when the pended tick + count is being unwound (when the scheduler is being unlocked). */ + if( xPendedTicks == ( TickType_t ) 0 ) + { + vApplicationTickHook(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + #endif /* configUSE_TICK_HOOK */ + + #if ( configUSE_PREEMPTION == 1 ) + { + if( xYieldPending != pdFALSE ) + { + xSwitchRequired = pdTRUE; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + #endif /* configUSE_PREEMPTION */ + } + else + { + ++xPendedTicks; + + /* The tick hook gets called at regular intervals, even if the + scheduler is locked. */ + #if ( configUSE_TICK_HOOK == 1 ) + { + vApplicationTickHook(); + } + #endif + } + + return xSwitchRequired; +} +/*-----------------------------------------------------------*/ + +#if ( configUSE_APPLICATION_TASK_TAG == 1 ) + + void vTaskSetApplicationTaskTag( TaskHandle_t xTask, TaskHookFunction_t pxHookFunction ) + { + TCB_t *xTCB; + + /* If xTask is NULL then it is the task hook of the calling task that is + getting set. */ + if( xTask == NULL ) + { + xTCB = ( TCB_t * ) pxCurrentTCB; + } + else + { + xTCB = xTask; + } + + /* Save the hook function in the TCB. A critical section is required as + the value can be accessed from an interrupt. */ + taskENTER_CRITICAL(); + { + xTCB->pxTaskTag = pxHookFunction; + } + taskEXIT_CRITICAL(); + } + +#endif /* configUSE_APPLICATION_TASK_TAG */ +/*-----------------------------------------------------------*/ + +#if ( configUSE_APPLICATION_TASK_TAG == 1 ) + + TaskHookFunction_t xTaskGetApplicationTaskTag( TaskHandle_t xTask ) + { + TCB_t *pxTCB; + TaskHookFunction_t xReturn; + + /* If xTask is NULL then set the calling task's hook. */ + pxTCB = prvGetTCBFromHandle( xTask ); + + /* Save the hook function in the TCB. A critical section is required as + the value can be accessed from an interrupt. */ + taskENTER_CRITICAL(); + { + xReturn = pxTCB->pxTaskTag; + } + taskEXIT_CRITICAL(); + + return xReturn; + } + +#endif /* configUSE_APPLICATION_TASK_TAG */ +/*-----------------------------------------------------------*/ + +#if ( configUSE_APPLICATION_TASK_TAG == 1 ) + + TaskHookFunction_t xTaskGetApplicationTaskTagFromISR( TaskHandle_t xTask ) + { + TCB_t *pxTCB; + TaskHookFunction_t xReturn; + UBaseType_t uxSavedInterruptStatus; + + /* If xTask is NULL then set the calling task's hook. */ + pxTCB = prvGetTCBFromHandle( xTask ); + + /* Save the hook function in the TCB. A critical section is required as + the value can be accessed from an interrupt. */ + uxSavedInterruptStatus = portSET_INTERRUPT_MASK_FROM_ISR(); + { + xReturn = pxTCB->pxTaskTag; + } + portCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedInterruptStatus ); + + return xReturn; + } + +#endif /* configUSE_APPLICATION_TASK_TAG */ +/*-----------------------------------------------------------*/ + +#if ( configUSE_APPLICATION_TASK_TAG == 1 ) + + BaseType_t xTaskCallApplicationTaskHook( TaskHandle_t xTask, void *pvParameter ) + { + TCB_t *xTCB; + BaseType_t xReturn; + + /* If xTask is NULL then we are calling our own task hook. */ + if( xTask == NULL ) + { + xTCB = pxCurrentTCB; + } + else + { + xTCB = xTask; + } + + if( xTCB->pxTaskTag != NULL ) + { + xReturn = xTCB->pxTaskTag( pvParameter ); + } + else + { + xReturn = pdFAIL; + } + + return xReturn; + } + +#endif /* configUSE_APPLICATION_TASK_TAG */ +/*-----------------------------------------------------------*/ + +void vTaskSwitchContext( void ) +{ + if( uxSchedulerSuspended != ( UBaseType_t ) pdFALSE ) + { + /* The scheduler is currently suspended - do not allow a context + switch. */ + xYieldPending = pdTRUE; + } + else + { + xYieldPending = pdFALSE; + traceTASK_SWITCHED_OUT(); + + #if ( configGENERATE_RUN_TIME_STATS == 1 ) + { + #ifdef portALT_GET_RUN_TIME_COUNTER_VALUE + portALT_GET_RUN_TIME_COUNTER_VALUE( ulTotalRunTime ); + #else + ulTotalRunTime = portGET_RUN_TIME_COUNTER_VALUE(); + #endif + + /* Add the amount of time the task has been running to the + accumulated time so far. The time the task started running was + stored in ulTaskSwitchedInTime. Note that there is no overflow + protection here so count values are only valid until the timer + overflows. The guard against negative values is to protect + against suspect run time stat counter implementations - which + are provided by the application, not the kernel. */ + if( ulTotalRunTime > ulTaskSwitchedInTime ) + { + pxCurrentTCB->ulRunTimeCounter += ( ulTotalRunTime - ulTaskSwitchedInTime ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + ulTaskSwitchedInTime = ulTotalRunTime; + } + #endif /* configGENERATE_RUN_TIME_STATS */ + + /* Check for stack overflow, if configured. */ + taskCHECK_FOR_STACK_OVERFLOW(); + + /* Before the currently running task is switched out, save its errno. */ + #if( configUSE_POSIX_ERRNO == 1 ) + { + pxCurrentTCB->iTaskErrno = FreeRTOS_errno; + } + #endif + + /* Select a new task to run using either the generic C or port + optimised asm code. */ + taskSELECT_HIGHEST_PRIORITY_TASK(); /*lint !e9079 void * is used as this macro is used with timers and co-routines too. Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */ + traceTASK_SWITCHED_IN(); + + /* After the new task is switched in, update the global errno. */ + #if( configUSE_POSIX_ERRNO == 1 ) + { + FreeRTOS_errno = pxCurrentTCB->iTaskErrno; + } + #endif + + #if ( configUSE_NEWLIB_REENTRANT == 1 ) + { + /* Switch Newlib's _impure_ptr variable to point to the _reent + structure specific to this task. + See the third party link http://www.nadler.com/embedded/newlibAndFreeRTOS.html + for additional information. */ + _impure_ptr = &( pxCurrentTCB->xNewLib_reent ); + } + #endif /* configUSE_NEWLIB_REENTRANT */ + } +} +/*-----------------------------------------------------------*/ + +void vTaskPlaceOnEventList( List_t * const pxEventList, const TickType_t xTicksToWait ) +{ + configASSERT( pxEventList ); + + /* THIS FUNCTION MUST BE CALLED WITH EITHER INTERRUPTS DISABLED OR THE + SCHEDULER SUSPENDED AND THE QUEUE BEING ACCESSED LOCKED. */ + + /* Place the event list item of the TCB in the appropriate event list. + This is placed in the list in priority order so the highest priority task + is the first to be woken by the event. The queue that contains the event + list is locked, preventing simultaneous access from interrupts. */ + vListInsert( pxEventList, &( pxCurrentTCB->xEventListItem ) ); + + prvAddCurrentTaskToDelayedList( xTicksToWait, pdTRUE ); +} +/*-----------------------------------------------------------*/ + +void vTaskPlaceOnUnorderedEventList( List_t * pxEventList, const TickType_t xItemValue, const TickType_t xTicksToWait ) +{ + configASSERT( pxEventList ); + + /* THIS FUNCTION MUST BE CALLED WITH THE SCHEDULER SUSPENDED. It is used by + the event groups implementation. */ + configASSERT( uxSchedulerSuspended != 0 ); + + /* Store the item value in the event list item. It is safe to access the + event list item here as interrupts won't access the event list item of a + task that is not in the Blocked state. */ + listSET_LIST_ITEM_VALUE( &( pxCurrentTCB->xEventListItem ), xItemValue | taskEVENT_LIST_ITEM_VALUE_IN_USE ); + + /* Place the event list item of the TCB at the end of the appropriate event + list. It is safe to access the event list here because it is part of an + event group implementation - and interrupts don't access event groups + directly (instead they access them indirectly by pending function calls to + the task level). */ + vListInsertEnd( pxEventList, &( pxCurrentTCB->xEventListItem ) ); + + prvAddCurrentTaskToDelayedList( xTicksToWait, pdTRUE ); +} +/*-----------------------------------------------------------*/ + +#if( configUSE_TIMERS == 1 ) + + void vTaskPlaceOnEventListRestricted( List_t * const pxEventList, TickType_t xTicksToWait, const BaseType_t xWaitIndefinitely ) + { + configASSERT( pxEventList ); + + /* This function should not be called by application code hence the + 'Restricted' in its name. It is not part of the public API. It is + designed for use by kernel code, and has special calling requirements - + it should be called with the scheduler suspended. */ + + + /* Place the event list item of the TCB in the appropriate event list. + In this case it is assume that this is the only task that is going to + be waiting on this event list, so the faster vListInsertEnd() function + can be used in place of vListInsert. */ + vListInsertEnd( pxEventList, &( pxCurrentTCB->xEventListItem ) ); + + /* If the task should block indefinitely then set the block time to a + value that will be recognised as an indefinite delay inside the + prvAddCurrentTaskToDelayedList() function. */ + if( xWaitIndefinitely != pdFALSE ) + { + xTicksToWait = portMAX_DELAY; + } + + traceTASK_DELAY_UNTIL( ( xTickCount + xTicksToWait ) ); + prvAddCurrentTaskToDelayedList( xTicksToWait, xWaitIndefinitely ); + } + +#endif /* configUSE_TIMERS */ +/*-----------------------------------------------------------*/ + +BaseType_t xTaskRemoveFromEventList( const List_t * const pxEventList ) +{ +TCB_t *pxUnblockedTCB; +BaseType_t xReturn; + + /* THIS FUNCTION MUST BE CALLED FROM A CRITICAL SECTION. It can also be + called from a critical section within an ISR. */ + + /* The event list is sorted in priority order, so the first in the list can + be removed as it is known to be the highest priority. Remove the TCB from + the delayed list, and add it to the ready list. + + If an event is for a queue that is locked then this function will never + get called - the lock count on the queue will get modified instead. This + means exclusive access to the event list is guaranteed here. + + This function assumes that a check has already been made to ensure that + pxEventList is not empty. */ + pxUnblockedTCB = listGET_OWNER_OF_HEAD_ENTRY( pxEventList ); /*lint !e9079 void * is used as this macro is used with timers and co-routines too. Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */ + configASSERT( pxUnblockedTCB ); + ( void ) uxListRemove( &( pxUnblockedTCB->xEventListItem ) ); + + if( uxSchedulerSuspended == ( UBaseType_t ) pdFALSE ) + { + ( void ) uxListRemove( &( pxUnblockedTCB->xStateListItem ) ); + prvAddTaskToReadyList( pxUnblockedTCB ); + + #if( configUSE_TICKLESS_IDLE != 0 ) + { + /* If a task is blocked on a kernel object then xNextTaskUnblockTime + might be set to the blocked task's time out time. If the task is + unblocked for a reason other than a timeout xNextTaskUnblockTime is + normally left unchanged, because it is automatically reset to a new + value when the tick count equals xNextTaskUnblockTime. However if + tickless idling is used it might be more important to enter sleep mode + at the earliest possible time - so reset xNextTaskUnblockTime here to + ensure it is updated at the earliest possible time. */ + prvResetNextTaskUnblockTime(); + } + #endif + } + else + { + /* The delayed and ready lists cannot be accessed, so hold this task + pending until the scheduler is resumed. */ + vListInsertEnd( &( xPendingReadyList ), &( pxUnblockedTCB->xEventListItem ) ); + } + + if( pxUnblockedTCB->uxPriority > pxCurrentTCB->uxPriority ) + { + /* Return true if the task removed from the event list has a higher + priority than the calling task. This allows the calling task to know if + it should force a context switch now. */ + xReturn = pdTRUE; + + /* Mark that a yield is pending in case the user is not using the + "xHigherPriorityTaskWoken" parameter to an ISR safe FreeRTOS function. */ + xYieldPending = pdTRUE; + } + else + { + xReturn = pdFALSE; + } + + return xReturn; +} +/*-----------------------------------------------------------*/ + +void vTaskRemoveFromUnorderedEventList( ListItem_t * pxEventListItem, const TickType_t xItemValue ) +{ +TCB_t *pxUnblockedTCB; + + /* THIS FUNCTION MUST BE CALLED WITH THE SCHEDULER SUSPENDED. It is used by + the event flags implementation. */ + configASSERT( uxSchedulerSuspended != pdFALSE ); + + /* Store the new item value in the event list. */ + listSET_LIST_ITEM_VALUE( pxEventListItem, xItemValue | taskEVENT_LIST_ITEM_VALUE_IN_USE ); + + /* Remove the event list form the event flag. Interrupts do not access + event flags. */ + pxUnblockedTCB = listGET_LIST_ITEM_OWNER( pxEventListItem ); /*lint !e9079 void * is used as this macro is used with timers and co-routines too. Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */ + configASSERT( pxUnblockedTCB ); + ( void ) uxListRemove( pxEventListItem ); + + #if( configUSE_TICKLESS_IDLE != 0 ) + { + /* If a task is blocked on a kernel object then xNextTaskUnblockTime + might be set to the blocked task's time out time. If the task is + unblocked for a reason other than a timeout xNextTaskUnblockTime is + normally left unchanged, because it is automatically reset to a new + value when the tick count equals xNextTaskUnblockTime. However if + tickless idling is used it might be more important to enter sleep mode + at the earliest possible time - so reset xNextTaskUnblockTime here to + ensure it is updated at the earliest possible time. */ + prvResetNextTaskUnblockTime(); + } + #endif + + /* Remove the task from the delayed list and add it to the ready list. The + scheduler is suspended so interrupts will not be accessing the ready + lists. */ + ( void ) uxListRemove( &( pxUnblockedTCB->xStateListItem ) ); + prvAddTaskToReadyList( pxUnblockedTCB ); + + if( pxUnblockedTCB->uxPriority > pxCurrentTCB->uxPriority ) + { + /* The unblocked task has a priority above that of the calling task, so + a context switch is required. This function is called with the + scheduler suspended so xYieldPending is set so the context switch + occurs immediately that the scheduler is resumed (unsuspended). */ + xYieldPending = pdTRUE; + } +} +/*-----------------------------------------------------------*/ + +void vTaskSetTimeOutState( TimeOut_t * const pxTimeOut ) +{ + configASSERT( pxTimeOut ); + taskENTER_CRITICAL(); + { + pxTimeOut->xOverflowCount = xNumOfOverflows; + pxTimeOut->xTimeOnEntering = xTickCount; + } + taskEXIT_CRITICAL(); +} +/*-----------------------------------------------------------*/ + +void vTaskInternalSetTimeOutState( TimeOut_t * const pxTimeOut ) +{ + /* For internal use only as it does not use a critical section. */ + pxTimeOut->xOverflowCount = xNumOfOverflows; + pxTimeOut->xTimeOnEntering = xTickCount; +} +/*-----------------------------------------------------------*/ + +BaseType_t xTaskCheckForTimeOut( TimeOut_t * const pxTimeOut, TickType_t * const pxTicksToWait ) +{ +BaseType_t xReturn; + + configASSERT( pxTimeOut ); + configASSERT( pxTicksToWait ); + + taskENTER_CRITICAL(); + { + /* Minor optimisation. The tick count cannot change in this block. */ + const TickType_t xConstTickCount = xTickCount; + const TickType_t xElapsedTime = xConstTickCount - pxTimeOut->xTimeOnEntering; + + #if( INCLUDE_xTaskAbortDelay == 1 ) + if( pxCurrentTCB->ucDelayAborted != ( uint8_t ) pdFALSE ) + { + /* The delay was aborted, which is not the same as a time out, + but has the same result. */ + pxCurrentTCB->ucDelayAborted = pdFALSE; + xReturn = pdTRUE; + } + else + #endif + + #if ( INCLUDE_vTaskSuspend == 1 ) + if( *pxTicksToWait == portMAX_DELAY ) + { + /* If INCLUDE_vTaskSuspend is set to 1 and the block time + specified is the maximum block time then the task should block + indefinitely, and therefore never time out. */ + xReturn = pdFALSE; + } + else + #endif + + if( ( xNumOfOverflows != pxTimeOut->xOverflowCount ) && ( xConstTickCount >= pxTimeOut->xTimeOnEntering ) ) /*lint !e525 Indentation preferred as is to make code within pre-processor directives clearer. */ + { + /* The tick count is greater than the time at which + vTaskSetTimeout() was called, but has also overflowed since + vTaskSetTimeOut() was called. It must have wrapped all the way + around and gone past again. This passed since vTaskSetTimeout() + was called. */ + xReturn = pdTRUE; + } + else if( xElapsedTime < *pxTicksToWait ) /*lint !e961 Explicit casting is only redundant with some compilers, whereas others require it to prevent integer conversion errors. */ + { + /* Not a genuine timeout. Adjust parameters for time remaining. */ + *pxTicksToWait -= xElapsedTime; + vTaskInternalSetTimeOutState( pxTimeOut ); + xReturn = pdFALSE; + } + else + { + *pxTicksToWait = 0; + xReturn = pdTRUE; + } + } + taskEXIT_CRITICAL(); + + return xReturn; +} +/*-----------------------------------------------------------*/ + +void vTaskMissedYield( void ) +{ + xYieldPending = pdTRUE; +} +/*-----------------------------------------------------------*/ + +#if ( configUSE_TRACE_FACILITY == 1 ) + + UBaseType_t uxTaskGetTaskNumber( TaskHandle_t xTask ) + { + UBaseType_t uxReturn; + TCB_t const *pxTCB; + + if( xTask != NULL ) + { + pxTCB = xTask; + uxReturn = pxTCB->uxTaskNumber; + } + else + { + uxReturn = 0U; + } + + return uxReturn; + } + +#endif /* configUSE_TRACE_FACILITY */ +/*-----------------------------------------------------------*/ + +#if ( configUSE_TRACE_FACILITY == 1 ) + + void vTaskSetTaskNumber( TaskHandle_t xTask, const UBaseType_t uxHandle ) + { + TCB_t * pxTCB; + + if( xTask != NULL ) + { + pxTCB = xTask; + pxTCB->uxTaskNumber = uxHandle; + } + } + +#endif /* configUSE_TRACE_FACILITY */ + +/* + * ----------------------------------------------------------- + * The Idle task. + * ---------------------------------------------------------- + * + * The portTASK_FUNCTION() macro is used to allow port/compiler specific + * language extensions. The equivalent prototype for this function is: + * + * void prvIdleTask( void *pvParameters ); + * + */ +static portTASK_FUNCTION( prvIdleTask, pvParameters ) +{ + /* Stop warnings. */ + ( void ) pvParameters; + + /** THIS IS THE RTOS IDLE TASK - WHICH IS CREATED AUTOMATICALLY WHEN THE + SCHEDULER IS STARTED. **/ + + /* In case a task that has a secure context deletes itself, in which case + the idle task is responsible for deleting the task's secure context, if + any. */ + portALLOCATE_SECURE_CONTEXT( configMINIMAL_SECURE_STACK_SIZE ); + + for( ;; ) + { + /* See if any tasks have deleted themselves - if so then the idle task + is responsible for freeing the deleted task's TCB and stack. */ + prvCheckTasksWaitingTermination(); + + #if ( configUSE_PREEMPTION == 0 ) + { + /* If we are not using preemption we keep forcing a task switch to + see if any other task has become available. If we are using + preemption we don't need to do this as any task becoming available + will automatically get the processor anyway. */ + taskYIELD(); + } + #endif /* configUSE_PREEMPTION */ + + #if ( ( configUSE_PREEMPTION == 1 ) && ( configIDLE_SHOULD_YIELD == 1 ) ) + { + /* When using preemption tasks of equal priority will be + timesliced. If a task that is sharing the idle priority is ready + to run then the idle task should yield before the end of the + timeslice. + + A critical region is not required here as we are just reading from + the list, and an occasional incorrect value will not matter. If + the ready list at the idle priority contains more than one task + then a task other than the idle task is ready to execute. */ + if( listCURRENT_LIST_LENGTH( &( pxReadyTasksLists[ tskIDLE_PRIORITY ] ) ) > ( UBaseType_t ) 1 ) + { + taskYIELD(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + #endif /* ( ( configUSE_PREEMPTION == 1 ) && ( configIDLE_SHOULD_YIELD == 1 ) ) */ + + #if ( configUSE_IDLE_HOOK == 1 ) + { + extern void vApplicationIdleHook( void ); + + /* Call the user defined function from within the idle task. This + allows the application designer to add background functionality + without the overhead of a separate task. + NOTE: vApplicationIdleHook() MUST NOT, UNDER ANY CIRCUMSTANCES, + CALL A FUNCTION THAT MIGHT BLOCK. */ + vApplicationIdleHook(); + } + #endif /* configUSE_IDLE_HOOK */ + + /* This conditional compilation should use inequality to 0, not equality + to 1. This is to ensure portSUPPRESS_TICKS_AND_SLEEP() is called when + user defined low power mode implementations require + configUSE_TICKLESS_IDLE to be set to a value other than 1. */ + #if ( configUSE_TICKLESS_IDLE != 0 ) + { + TickType_t xExpectedIdleTime; + + /* It is not desirable to suspend then resume the scheduler on + each iteration of the idle task. Therefore, a preliminary + test of the expected idle time is performed without the + scheduler suspended. The result here is not necessarily + valid. */ + xExpectedIdleTime = prvGetExpectedIdleTime(); + + if( xExpectedIdleTime >= configEXPECTED_IDLE_TIME_BEFORE_SLEEP ) + { + vTaskSuspendAll(); + { + /* Now the scheduler is suspended, the expected idle + time can be sampled again, and this time its value can + be used. */ + configASSERT( xNextTaskUnblockTime >= xTickCount ); + xExpectedIdleTime = prvGetExpectedIdleTime(); + + /* Define the following macro to set xExpectedIdleTime to 0 + if the application does not want + portSUPPRESS_TICKS_AND_SLEEP() to be called. */ + configPRE_SUPPRESS_TICKS_AND_SLEEP_PROCESSING( xExpectedIdleTime ); + + if( xExpectedIdleTime >= configEXPECTED_IDLE_TIME_BEFORE_SLEEP ) + { + traceLOW_POWER_IDLE_BEGIN(); + portSUPPRESS_TICKS_AND_SLEEP( xExpectedIdleTime ); + traceLOW_POWER_IDLE_END(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + ( void ) xTaskResumeAll(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + #endif /* configUSE_TICKLESS_IDLE */ + } +} +/*-----------------------------------------------------------*/ + +#if( configUSE_TICKLESS_IDLE != 0 ) + + eSleepModeStatus eTaskConfirmSleepModeStatus( void ) + { + /* The idle task exists in addition to the application tasks. */ + const UBaseType_t uxNonApplicationTasks = 1; + eSleepModeStatus eReturn = eStandardSleep; + + /* This function must be called from a critical section. */ + + if( listCURRENT_LIST_LENGTH( &xPendingReadyList ) != 0 ) + { + /* A task was made ready while the scheduler was suspended. */ + eReturn = eAbortSleep; + } + else if( xYieldPending != pdFALSE ) + { + /* A yield was pended while the scheduler was suspended. */ + eReturn = eAbortSleep; + } + else + { + /* If all the tasks are in the suspended list (which might mean they + have an infinite block time rather than actually being suspended) + then it is safe to turn all clocks off and just wait for external + interrupts. */ + if( listCURRENT_LIST_LENGTH( &xSuspendedTaskList ) == ( uxCurrentNumberOfTasks - uxNonApplicationTasks ) ) + { + eReturn = eNoTasksWaitingTimeout; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + + return eReturn; + } + +#endif /* configUSE_TICKLESS_IDLE */ +/*-----------------------------------------------------------*/ + +#if ( configNUM_THREAD_LOCAL_STORAGE_POINTERS != 0 ) + + void vTaskSetThreadLocalStoragePointer( TaskHandle_t xTaskToSet, BaseType_t xIndex, void *pvValue ) + { + TCB_t *pxTCB; + + if( xIndex < configNUM_THREAD_LOCAL_STORAGE_POINTERS ) + { + pxTCB = prvGetTCBFromHandle( xTaskToSet ); + configASSERT( pxTCB != NULL ); + pxTCB->pvThreadLocalStoragePointers[ xIndex ] = pvValue; + } + } + +#endif /* configNUM_THREAD_LOCAL_STORAGE_POINTERS */ +/*-----------------------------------------------------------*/ + +#if ( configNUM_THREAD_LOCAL_STORAGE_POINTERS != 0 ) + + void *pvTaskGetThreadLocalStoragePointer( TaskHandle_t xTaskToQuery, BaseType_t xIndex ) + { + void *pvReturn = NULL; + TCB_t *pxTCB; + + if( xIndex < configNUM_THREAD_LOCAL_STORAGE_POINTERS ) + { + pxTCB = prvGetTCBFromHandle( xTaskToQuery ); + pvReturn = pxTCB->pvThreadLocalStoragePointers[ xIndex ]; + } + else + { + pvReturn = NULL; + } + + return pvReturn; + } + +#endif /* configNUM_THREAD_LOCAL_STORAGE_POINTERS */ +/*-----------------------------------------------------------*/ + +#if ( portUSING_MPU_WRAPPERS == 1 ) + + void vTaskAllocateMPURegions( TaskHandle_t xTaskToModify, const MemoryRegion_t * const xRegions ) + { + TCB_t *pxTCB; + + /* If null is passed in here then we are modifying the MPU settings of + the calling task. */ + pxTCB = prvGetTCBFromHandle( xTaskToModify ); + + vPortStoreTaskMPUSettings( &( pxTCB->xMPUSettings ), xRegions, NULL, 0 ); + } + +#endif /* portUSING_MPU_WRAPPERS */ +/*-----------------------------------------------------------*/ + +static void prvInitialiseTaskLists( void ) +{ +UBaseType_t uxPriority; + + for( uxPriority = ( UBaseType_t ) 0U; uxPriority < ( UBaseType_t ) configMAX_PRIORITIES; uxPriority++ ) + { + vListInitialise( &( pxReadyTasksLists[ uxPriority ] ) ); + } + + vListInitialise( &xDelayedTaskList1 ); + vListInitialise( &xDelayedTaskList2 ); + vListInitialise( &xPendingReadyList ); + + #if ( INCLUDE_vTaskDelete == 1 ) + { + vListInitialise( &xTasksWaitingTermination ); + } + #endif /* INCLUDE_vTaskDelete */ + + #if ( INCLUDE_vTaskSuspend == 1 ) + { + vListInitialise( &xSuspendedTaskList ); + } + #endif /* INCLUDE_vTaskSuspend */ + + /* Start with pxDelayedTaskList using list1 and the pxOverflowDelayedTaskList + using list2. */ + pxDelayedTaskList = &xDelayedTaskList1; + pxOverflowDelayedTaskList = &xDelayedTaskList2; +} +/*-----------------------------------------------------------*/ + +static void prvCheckTasksWaitingTermination( void ) +{ + + /** THIS FUNCTION IS CALLED FROM THE RTOS IDLE TASK **/ + + #if ( INCLUDE_vTaskDelete == 1 ) + { + TCB_t *pxTCB; + + /* uxDeletedTasksWaitingCleanUp is used to prevent taskENTER_CRITICAL() + being called too often in the idle task. */ + while( uxDeletedTasksWaitingCleanUp > ( UBaseType_t ) 0U ) + { + taskENTER_CRITICAL(); + { + pxTCB = listGET_OWNER_OF_HEAD_ENTRY( ( &xTasksWaitingTermination ) ); /*lint !e9079 void * is used as this macro is used with timers and co-routines too. Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */ + ( void ) uxListRemove( &( pxTCB->xStateListItem ) ); + --uxCurrentNumberOfTasks; + --uxDeletedTasksWaitingCleanUp; + } + taskEXIT_CRITICAL(); + + prvDeleteTCB( pxTCB ); + } + } + #endif /* INCLUDE_vTaskDelete */ +} +/*-----------------------------------------------------------*/ + +#if( configUSE_TRACE_FACILITY == 1 ) + + void vTaskGetInfo( TaskHandle_t xTask, TaskStatus_t *pxTaskStatus, BaseType_t xGetFreeStackSpace, eTaskState eState ) + { + TCB_t *pxTCB; + + /* xTask is NULL then get the state of the calling task. */ + pxTCB = prvGetTCBFromHandle( xTask ); + + pxTaskStatus->xHandle = ( TaskHandle_t ) pxTCB; + pxTaskStatus->pcTaskName = ( const char * ) &( pxTCB->pcTaskName [ 0 ] ); + pxTaskStatus->uxCurrentPriority = pxTCB->uxPriority; + pxTaskStatus->pxStackBase = pxTCB->pxStack; + pxTaskStatus->xTaskNumber = pxTCB->uxTCBNumber; + + #if ( configUSE_MUTEXES == 1 ) + { + pxTaskStatus->uxBasePriority = pxTCB->uxBasePriority; + } + #else + { + pxTaskStatus->uxBasePriority = 0; + } + #endif + + #if ( configGENERATE_RUN_TIME_STATS == 1 ) + { + pxTaskStatus->ulRunTimeCounter = pxTCB->ulRunTimeCounter; + } + #else + { + pxTaskStatus->ulRunTimeCounter = 0; + } + #endif + + /* Obtaining the task state is a little fiddly, so is only done if the + value of eState passed into this function is eInvalid - otherwise the + state is just set to whatever is passed in. */ + if( eState != eInvalid ) + { + if( pxTCB == pxCurrentTCB ) + { + pxTaskStatus->eCurrentState = eRunning; + } + else + { + pxTaskStatus->eCurrentState = eState; + + #if ( INCLUDE_vTaskSuspend == 1 ) + { + /* If the task is in the suspended list then there is a + chance it is actually just blocked indefinitely - so really + it should be reported as being in the Blocked state. */ + if( eState == eSuspended ) + { + vTaskSuspendAll(); + { + if( listLIST_ITEM_CONTAINER( &( pxTCB->xEventListItem ) ) != NULL ) + { + pxTaskStatus->eCurrentState = eBlocked; + } + } + ( void ) xTaskResumeAll(); + } + } + #endif /* INCLUDE_vTaskSuspend */ + } + } + else + { + pxTaskStatus->eCurrentState = eTaskGetState( pxTCB ); + } + + /* Obtaining the stack space takes some time, so the xGetFreeStackSpace + parameter is provided to allow it to be skipped. */ + if( xGetFreeStackSpace != pdFALSE ) + { + #if ( portSTACK_GROWTH > 0 ) + { + pxTaskStatus->usStackHighWaterMark = prvTaskCheckFreeStackSpace( ( uint8_t * ) pxTCB->pxEndOfStack ); + } + #else + { + pxTaskStatus->usStackHighWaterMark = prvTaskCheckFreeStackSpace( ( uint8_t * ) pxTCB->pxStack ); + } + #endif + } + else + { + pxTaskStatus->usStackHighWaterMark = 0; + } + } + +#endif /* configUSE_TRACE_FACILITY */ +/*-----------------------------------------------------------*/ + +#if ( configUSE_TRACE_FACILITY == 1 ) + + static UBaseType_t prvListTasksWithinSingleList( TaskStatus_t *pxTaskStatusArray, List_t *pxList, eTaskState eState ) + { + configLIST_VOLATILE TCB_t *pxNextTCB, *pxFirstTCB; + UBaseType_t uxTask = 0; + + if( listCURRENT_LIST_LENGTH( pxList ) > ( UBaseType_t ) 0 ) + { + listGET_OWNER_OF_NEXT_ENTRY( pxFirstTCB, pxList ); /*lint !e9079 void * is used as this macro is used with timers and co-routines too. Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */ + + /* Populate an TaskStatus_t structure within the + pxTaskStatusArray array for each task that is referenced from + pxList. See the definition of TaskStatus_t in task.h for the + meaning of each TaskStatus_t structure member. */ + do + { + listGET_OWNER_OF_NEXT_ENTRY( pxNextTCB, pxList ); /*lint !e9079 void * is used as this macro is used with timers and co-routines too. Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */ + vTaskGetInfo( ( TaskHandle_t ) pxNextTCB, &( pxTaskStatusArray[ uxTask ] ), pdTRUE, eState ); + uxTask++; + } while( pxNextTCB != pxFirstTCB ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + return uxTask; + } + +#endif /* configUSE_TRACE_FACILITY */ +/*-----------------------------------------------------------*/ + +#if ( ( configUSE_TRACE_FACILITY == 1 ) || ( INCLUDE_uxTaskGetStackHighWaterMark == 1 ) || ( INCLUDE_uxTaskGetStackHighWaterMark2 == 1 ) ) + + static configSTACK_DEPTH_TYPE prvTaskCheckFreeStackSpace( const uint8_t * pucStackByte ) + { + uint32_t ulCount = 0U; + + while( *pucStackByte == ( uint8_t ) tskSTACK_FILL_BYTE ) + { + pucStackByte -= portSTACK_GROWTH; + ulCount++; + } + + ulCount /= ( uint32_t ) sizeof( StackType_t ); /*lint !e961 Casting is not redundant on smaller architectures. */ + + return ( configSTACK_DEPTH_TYPE ) ulCount; + } + +#endif /* ( ( configUSE_TRACE_FACILITY == 1 ) || ( INCLUDE_uxTaskGetStackHighWaterMark == 1 ) || ( INCLUDE_uxTaskGetStackHighWaterMark2 == 1 ) ) */ +/*-----------------------------------------------------------*/ + +#if ( INCLUDE_uxTaskGetStackHighWaterMark2 == 1 ) + + /* uxTaskGetStackHighWaterMark() and uxTaskGetStackHighWaterMark2() are the + same except for their return type. Using configSTACK_DEPTH_TYPE allows the + user to determine the return type. It gets around the problem of the value + overflowing on 8-bit types without breaking backward compatibility for + applications that expect an 8-bit return type. */ + configSTACK_DEPTH_TYPE uxTaskGetStackHighWaterMark2( TaskHandle_t xTask ) + { + TCB_t *pxTCB; + uint8_t *pucEndOfStack; + configSTACK_DEPTH_TYPE uxReturn; + + /* uxTaskGetStackHighWaterMark() and uxTaskGetStackHighWaterMark2() are + the same except for their return type. Using configSTACK_DEPTH_TYPE + allows the user to determine the return type. It gets around the + problem of the value overflowing on 8-bit types without breaking + backward compatibility for applications that expect an 8-bit return + type. */ + + pxTCB = prvGetTCBFromHandle( xTask ); + + #if portSTACK_GROWTH < 0 + { + pucEndOfStack = ( uint8_t * ) pxTCB->pxStack; + } + #else + { + pucEndOfStack = ( uint8_t * ) pxTCB->pxEndOfStack; + } + #endif + + uxReturn = prvTaskCheckFreeStackSpace( pucEndOfStack ); + + return uxReturn; + } + +#endif /* INCLUDE_uxTaskGetStackHighWaterMark2 */ +/*-----------------------------------------------------------*/ + +#if ( INCLUDE_uxTaskGetStackHighWaterMark == 1 ) + + UBaseType_t uxTaskGetStackHighWaterMark( TaskHandle_t xTask ) + { + TCB_t *pxTCB; + uint8_t *pucEndOfStack; + UBaseType_t uxReturn; + + pxTCB = prvGetTCBFromHandle( xTask ); + + #if portSTACK_GROWTH < 0 + { + pucEndOfStack = ( uint8_t * ) pxTCB->pxStack; + } + #else + { + pucEndOfStack = ( uint8_t * ) pxTCB->pxEndOfStack; + } + #endif + + uxReturn = ( UBaseType_t ) prvTaskCheckFreeStackSpace( pucEndOfStack ); + + return uxReturn; + } + +#endif /* INCLUDE_uxTaskGetStackHighWaterMark */ +/*-----------------------------------------------------------*/ + +#if ( INCLUDE_vTaskDelete == 1 ) + + static void prvDeleteTCB( TCB_t *pxTCB ) + { + /* This call is required specifically for the TriCore port. It must be + above the vPortFree() calls. The call is also used by ports/demos that + want to allocate and clean RAM statically. */ + portCLEAN_UP_TCB( pxTCB ); + + /* Free up the memory allocated by the scheduler for the task. It is up + to the task to free any memory allocated at the application level. + See the third party link http://www.nadler.com/embedded/newlibAndFreeRTOS.html + for additional information. */ + #if ( configUSE_NEWLIB_REENTRANT == 1 ) + { + _reclaim_reent( &( pxTCB->xNewLib_reent ) ); + } + #endif /* configUSE_NEWLIB_REENTRANT */ + + #if( ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) && ( configSUPPORT_STATIC_ALLOCATION == 0 ) && ( portUSING_MPU_WRAPPERS == 0 ) ) + { + /* The task can only have been allocated dynamically - free both + the stack and TCB. */ + vPortFree( pxTCB->pxStack ); + vPortFree( pxTCB ); + } + #elif( tskSTATIC_AND_DYNAMIC_ALLOCATION_POSSIBLE != 0 ) /*lint !e731 !e9029 Macro has been consolidated for readability reasons. */ + { + /* The task could have been allocated statically or dynamically, so + check what was statically allocated before trying to free the + memory. */ + if( pxTCB->ucStaticallyAllocated == tskDYNAMICALLY_ALLOCATED_STACK_AND_TCB ) + { + /* Both the stack and TCB were allocated dynamically, so both + must be freed. */ + vPortFree( pxTCB->pxStack ); + vPortFree( pxTCB ); + } + else if( pxTCB->ucStaticallyAllocated == tskSTATICALLY_ALLOCATED_STACK_ONLY ) + { + /* Only the stack was statically allocated, so the TCB is the + only memory that must be freed. */ + vPortFree( pxTCB ); + } + else + { + /* Neither the stack nor the TCB were allocated dynamically, so + nothing needs to be freed. */ + configASSERT( pxTCB->ucStaticallyAllocated == tskSTATICALLY_ALLOCATED_STACK_AND_TCB ); + mtCOVERAGE_TEST_MARKER(); + } + } + #endif /* configSUPPORT_DYNAMIC_ALLOCATION */ + } + +#endif /* INCLUDE_vTaskDelete */ +/*-----------------------------------------------------------*/ + +static void prvResetNextTaskUnblockTime( void ) +{ +TCB_t *pxTCB; + + if( listLIST_IS_EMPTY( pxDelayedTaskList ) != pdFALSE ) + { + /* The new current delayed list is empty. Set xNextTaskUnblockTime to + the maximum possible value so it is extremely unlikely that the + if( xTickCount >= xNextTaskUnblockTime ) test will pass until + there is an item in the delayed list. */ + xNextTaskUnblockTime = portMAX_DELAY; + } + else + { + /* The new current delayed list is not empty, get the value of + the item at the head of the delayed list. This is the time at + which the task at the head of the delayed list should be removed + from the Blocked state. */ + ( pxTCB ) = listGET_OWNER_OF_HEAD_ENTRY( pxDelayedTaskList ); /*lint !e9079 void * is used as this macro is used with timers and co-routines too. Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */ + xNextTaskUnblockTime = listGET_LIST_ITEM_VALUE( &( ( pxTCB )->xStateListItem ) ); + } +} +/*-----------------------------------------------------------*/ + +#if ( ( INCLUDE_xTaskGetCurrentTaskHandle == 1 ) || ( configUSE_MUTEXES == 1 ) ) + + TaskHandle_t xTaskGetCurrentTaskHandle( void ) + { + TaskHandle_t xReturn; + + /* A critical section is not required as this is not called from + an interrupt and the current TCB will always be the same for any + individual execution thread. */ + xReturn = pxCurrentTCB; + + return xReturn; + } + +#endif /* ( ( INCLUDE_xTaskGetCurrentTaskHandle == 1 ) || ( configUSE_MUTEXES == 1 ) ) */ +/*-----------------------------------------------------------*/ + +#if ( ( INCLUDE_xTaskGetSchedulerState == 1 ) || ( configUSE_TIMERS == 1 ) ) + + BaseType_t xTaskGetSchedulerState( void ) + { + BaseType_t xReturn; + + if( xSchedulerRunning == pdFALSE ) + { + xReturn = taskSCHEDULER_NOT_STARTED; + } + else + { + if( uxSchedulerSuspended == ( UBaseType_t ) pdFALSE ) + { + xReturn = taskSCHEDULER_RUNNING; + } + else + { + xReturn = taskSCHEDULER_SUSPENDED; + } + } + + return xReturn; + } + +#endif /* ( ( INCLUDE_xTaskGetSchedulerState == 1 ) || ( configUSE_TIMERS == 1 ) ) */ +/*-----------------------------------------------------------*/ + +#if ( configUSE_MUTEXES == 1 ) + + BaseType_t xTaskPriorityInherit( TaskHandle_t const pxMutexHolder ) + { + TCB_t * const pxMutexHolderTCB = pxMutexHolder; + BaseType_t xReturn = pdFALSE; + + /* If the mutex was given back by an interrupt while the queue was + locked then the mutex holder might now be NULL. _RB_ Is this still + needed as interrupts can no longer use mutexes? */ + if( pxMutexHolder != NULL ) + { + /* If the holder of the mutex has a priority below the priority of + the task attempting to obtain the mutex then it will temporarily + inherit the priority of the task attempting to obtain the mutex. */ + if( pxMutexHolderTCB->uxPriority < pxCurrentTCB->uxPriority ) + { + /* Adjust the mutex holder state to account for its new + priority. Only reset the event list item value if the value is + not being used for anything else. */ + if( ( listGET_LIST_ITEM_VALUE( &( pxMutexHolderTCB->xEventListItem ) ) & taskEVENT_LIST_ITEM_VALUE_IN_USE ) == 0UL ) + { + listSET_LIST_ITEM_VALUE( &( pxMutexHolderTCB->xEventListItem ), ( TickType_t ) configMAX_PRIORITIES - ( TickType_t ) pxCurrentTCB->uxPriority ); /*lint !e961 MISRA exception as the casts are only redundant for some ports. */ + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + /* If the task being modified is in the ready state it will need + to be moved into a new list. */ + if( listIS_CONTAINED_WITHIN( &( pxReadyTasksLists[ pxMutexHolderTCB->uxPriority ] ), &( pxMutexHolderTCB->xStateListItem ) ) != pdFALSE ) + { + if( uxListRemove( &( pxMutexHolderTCB->xStateListItem ) ) == ( UBaseType_t ) 0 ) + { + /* It is known that the task is in its ready list so + there is no need to check again and the port level + reset macro can be called directly. */ + portRESET_READY_PRIORITY( pxMutexHolderTCB->uxPriority, uxTopReadyPriority ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + /* Inherit the priority before being moved into the new list. */ + pxMutexHolderTCB->uxPriority = pxCurrentTCB->uxPriority; + prvAddTaskToReadyList( pxMutexHolderTCB ); + } + else + { + /* Just inherit the priority. */ + pxMutexHolderTCB->uxPriority = pxCurrentTCB->uxPriority; + } + + traceTASK_PRIORITY_INHERIT( pxMutexHolderTCB, pxCurrentTCB->uxPriority ); + + /* Inheritance occurred. */ + xReturn = pdTRUE; + } + else + { + if( pxMutexHolderTCB->uxBasePriority < pxCurrentTCB->uxPriority ) + { + /* The base priority of the mutex holder is lower than the + priority of the task attempting to take the mutex, but the + current priority of the mutex holder is not lower than the + priority of the task attempting to take the mutex. + Therefore the mutex holder must have already inherited a + priority, but inheritance would have occurred if that had + not been the case. */ + xReturn = pdTRUE; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + return xReturn; + } + +#endif /* configUSE_MUTEXES */ +/*-----------------------------------------------------------*/ + +#if ( configUSE_MUTEXES == 1 ) + + BaseType_t xTaskPriorityDisinherit( TaskHandle_t const pxMutexHolder ) + { + TCB_t * const pxTCB = pxMutexHolder; + BaseType_t xReturn = pdFALSE; + + if( pxMutexHolder != NULL ) + { + /* A task can only have an inherited priority if it holds the mutex. + If the mutex is held by a task then it cannot be given from an + interrupt, and if a mutex is given by the holding task then it must + be the running state task. */ + configASSERT( pxTCB == pxCurrentTCB ); + configASSERT( pxTCB->uxMutexesHeld ); + ( pxTCB->uxMutexesHeld )--; + + /* Has the holder of the mutex inherited the priority of another + task? */ + if( pxTCB->uxPriority != pxTCB->uxBasePriority ) + { + /* Only disinherit if no other mutexes are held. */ + if( pxTCB->uxMutexesHeld == ( UBaseType_t ) 0 ) + { + /* A task can only have an inherited priority if it holds + the mutex. If the mutex is held by a task then it cannot be + given from an interrupt, and if a mutex is given by the + holding task then it must be the running state task. Remove + the holding task from the ready/delayed list. */ + if( uxListRemove( &( pxTCB->xStateListItem ) ) == ( UBaseType_t ) 0 ) + { + taskRESET_READY_PRIORITY( pxTCB->uxPriority ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + /* Disinherit the priority before adding the task into the + new ready list. */ + traceTASK_PRIORITY_DISINHERIT( pxTCB, pxTCB->uxBasePriority ); + pxTCB->uxPriority = pxTCB->uxBasePriority; + + /* Reset the event list item value. It cannot be in use for + any other purpose if this task is running, and it must be + running to give back the mutex. */ + listSET_LIST_ITEM_VALUE( &( pxTCB->xEventListItem ), ( TickType_t ) configMAX_PRIORITIES - ( TickType_t ) pxTCB->uxPriority ); /*lint !e961 MISRA exception as the casts are only redundant for some ports. */ + prvAddTaskToReadyList( pxTCB ); + + /* Return true to indicate that a context switch is required. + This is only actually required in the corner case whereby + multiple mutexes were held and the mutexes were given back + in an order different to that in which they were taken. + If a context switch did not occur when the first mutex was + returned, even if a task was waiting on it, then a context + switch should occur when the last mutex is returned whether + a task is waiting on it or not. */ + xReturn = pdTRUE; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + return xReturn; + } + +#endif /* configUSE_MUTEXES */ +/*-----------------------------------------------------------*/ + +#if ( configUSE_MUTEXES == 1 ) + + void vTaskPriorityDisinheritAfterTimeout( TaskHandle_t const pxMutexHolder, UBaseType_t uxHighestPriorityWaitingTask ) + { + TCB_t * const pxTCB = pxMutexHolder; + UBaseType_t uxPriorityUsedOnEntry, uxPriorityToUse; + const UBaseType_t uxOnlyOneMutexHeld = ( UBaseType_t ) 1; + + if( pxMutexHolder != NULL ) + { + /* If pxMutexHolder is not NULL then the holder must hold at least + one mutex. */ + configASSERT( pxTCB->uxMutexesHeld ); + + /* Determine the priority to which the priority of the task that + holds the mutex should be set. This will be the greater of the + holding task's base priority and the priority of the highest + priority task that is waiting to obtain the mutex. */ + if( pxTCB->uxBasePriority < uxHighestPriorityWaitingTask ) + { + uxPriorityToUse = uxHighestPriorityWaitingTask; + } + else + { + uxPriorityToUse = pxTCB->uxBasePriority; + } + + /* Does the priority need to change? */ + if( pxTCB->uxPriority != uxPriorityToUse ) + { + /* Only disinherit if no other mutexes are held. This is a + simplification in the priority inheritance implementation. If + the task that holds the mutex is also holding other mutexes then + the other mutexes may have caused the priority inheritance. */ + if( pxTCB->uxMutexesHeld == uxOnlyOneMutexHeld ) + { + /* If a task has timed out because it already holds the + mutex it was trying to obtain then it cannot of inherited + its own priority. */ + configASSERT( pxTCB != pxCurrentTCB ); + + /* Disinherit the priority, remembering the previous + priority to facilitate determining the subject task's + state. */ + traceTASK_PRIORITY_DISINHERIT( pxTCB, pxTCB->uxBasePriority ); + uxPriorityUsedOnEntry = pxTCB->uxPriority; + pxTCB->uxPriority = uxPriorityToUse; + + /* Only reset the event list item value if the value is not + being used for anything else. */ + if( ( listGET_LIST_ITEM_VALUE( &( pxTCB->xEventListItem ) ) & taskEVENT_LIST_ITEM_VALUE_IN_USE ) == 0UL ) + { + listSET_LIST_ITEM_VALUE( &( pxTCB->xEventListItem ), ( TickType_t ) configMAX_PRIORITIES - ( TickType_t ) uxPriorityToUse ); /*lint !e961 MISRA exception as the casts are only redundant for some ports. */ + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + /* If the running task is not the task that holds the mutex + then the task that holds the mutex could be in either the + Ready, Blocked or Suspended states. Only remove the task + from its current state list if it is in the Ready state as + the task's priority is going to change and there is one + Ready list per priority. */ + if( listIS_CONTAINED_WITHIN( &( pxReadyTasksLists[ uxPriorityUsedOnEntry ] ), &( pxTCB->xStateListItem ) ) != pdFALSE ) + { + if( uxListRemove( &( pxTCB->xStateListItem ) ) == ( UBaseType_t ) 0 ) + { + /* It is known that the task is in its ready list so + there is no need to check again and the port level + reset macro can be called directly. */ + portRESET_READY_PRIORITY( pxTCB->uxPriority, uxTopReadyPriority ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + prvAddTaskToReadyList( pxTCB ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + +#endif /* configUSE_MUTEXES */ +/*-----------------------------------------------------------*/ + +#if ( portCRITICAL_NESTING_IN_TCB == 1 ) + + void vTaskEnterCritical( void ) + { + portDISABLE_INTERRUPTS(); + + if( xSchedulerRunning != pdFALSE ) + { + ( pxCurrentTCB->uxCriticalNesting )++; + + /* This is not the interrupt safe version of the enter critical + function so assert() if it is being called from an interrupt + context. Only API functions that end in "FromISR" can be used in an + interrupt. Only assert if the critical nesting count is 1 to + protect against recursive calls if the assert function also uses a + critical section. */ + if( pxCurrentTCB->uxCriticalNesting == 1 ) + { + portASSERT_IF_IN_ISR(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + +#endif /* portCRITICAL_NESTING_IN_TCB */ +/*-----------------------------------------------------------*/ + +#if ( portCRITICAL_NESTING_IN_TCB == 1 ) + + void vTaskExitCritical( void ) + { + if( xSchedulerRunning != pdFALSE ) + { + if( pxCurrentTCB->uxCriticalNesting > 0U ) + { + ( pxCurrentTCB->uxCriticalNesting )--; + + if( pxCurrentTCB->uxCriticalNesting == 0U ) + { + portENABLE_INTERRUPTS(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + +#endif /* portCRITICAL_NESTING_IN_TCB */ +/*-----------------------------------------------------------*/ + +#if ( ( configUSE_TRACE_FACILITY == 1 ) && ( configUSE_STATS_FORMATTING_FUNCTIONS > 0 ) ) + + static char *prvWriteNameToBuffer( char *pcBuffer, const char *pcTaskName ) + { + size_t x; + + /* Start by copying the entire string. */ + strcpy( pcBuffer, pcTaskName ); + + /* Pad the end of the string with spaces to ensure columns line up when + printed out. */ + for( x = strlen( pcBuffer ); x < ( size_t ) ( configMAX_TASK_NAME_LEN - 1 ); x++ ) + { + pcBuffer[ x ] = ' '; + } + + /* Terminate. */ + pcBuffer[ x ] = ( char ) 0x00; + + /* Return the new end of string. */ + return &( pcBuffer[ x ] ); + } + +#endif /* ( configUSE_TRACE_FACILITY == 1 ) && ( configUSE_STATS_FORMATTING_FUNCTIONS > 0 ) */ +/*-----------------------------------------------------------*/ + +#if ( ( configUSE_TRACE_FACILITY == 1 ) && ( configUSE_STATS_FORMATTING_FUNCTIONS > 0 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) ) + + void vTaskList( char * pcWriteBuffer ) + { + TaskStatus_t *pxTaskStatusArray; + UBaseType_t uxArraySize, x; + char cStatus; + + /* + * PLEASE NOTE: + * + * This function is provided for convenience only, and is used by many + * of the demo applications. Do not consider it to be part of the + * scheduler. + * + * vTaskList() calls uxTaskGetSystemState(), then formats part of the + * uxTaskGetSystemState() output into a human readable table that + * displays task names, states and stack usage. + * + * vTaskList() has a dependency on the sprintf() C library function that + * might bloat the code size, use a lot of stack, and provide different + * results on different platforms. An alternative, tiny, third party, + * and limited functionality implementation of sprintf() is provided in + * many of the FreeRTOS/Demo sub-directories in a file called + * printf-stdarg.c (note printf-stdarg.c does not provide a full + * snprintf() implementation!). + * + * It is recommended that production systems call uxTaskGetSystemState() + * directly to get access to raw stats data, rather than indirectly + * through a call to vTaskList(). + */ + + + /* Make sure the write buffer does not contain a string. */ + *pcWriteBuffer = ( char ) 0x00; + + /* Take a snapshot of the number of tasks in case it changes while this + function is executing. */ + uxArraySize = uxCurrentNumberOfTasks; + + /* Allocate an array index for each task. NOTE! if + configSUPPORT_DYNAMIC_ALLOCATION is set to 0 then pvPortMalloc() will + equate to NULL. */ + pxTaskStatusArray = pvPortMalloc( uxCurrentNumberOfTasks * sizeof( TaskStatus_t ) ); /*lint !e9079 All values returned by pvPortMalloc() have at least the alignment required by the MCU's stack and this allocation allocates a struct that has the alignment requirements of a pointer. */ + + if( pxTaskStatusArray != NULL ) + { + /* Generate the (binary) data. */ + uxArraySize = uxTaskGetSystemState( pxTaskStatusArray, uxArraySize, NULL ); + + /* Create a human readable table from the binary data. */ + for( x = 0; x < uxArraySize; x++ ) + { + switch( pxTaskStatusArray[ x ].eCurrentState ) + { + case eRunning: cStatus = tskRUNNING_CHAR; + break; + + case eReady: cStatus = tskREADY_CHAR; + break; + + case eBlocked: cStatus = tskBLOCKED_CHAR; + break; + + case eSuspended: cStatus = tskSUSPENDED_CHAR; + break; + + case eDeleted: cStatus = tskDELETED_CHAR; + break; + + case eInvalid: /* Fall through. */ + default: /* Should not get here, but it is included + to prevent static checking errors. */ + cStatus = ( char ) 0x00; + break; + } + + /* Write the task name to the string, padding with spaces so it + can be printed in tabular form more easily. */ + pcWriteBuffer = prvWriteNameToBuffer( pcWriteBuffer, pxTaskStatusArray[ x ].pcTaskName ); + + /* Write the rest of the string. */ + sprintf( pcWriteBuffer, "\t%c\t%u\t%u\t%u\r\n", cStatus, ( unsigned int ) pxTaskStatusArray[ x ].uxCurrentPriority, ( unsigned int ) pxTaskStatusArray[ x ].usStackHighWaterMark, ( unsigned int ) pxTaskStatusArray[ x ].xTaskNumber ); /*lint !e586 sprintf() allowed as this is compiled with many compilers and this is a utility function only - not part of the core kernel implementation. */ + pcWriteBuffer += strlen( pcWriteBuffer ); /*lint !e9016 Pointer arithmetic ok on char pointers especially as in this case where it best denotes the intent of the code. */ + } + + /* Free the array again. NOTE! If configSUPPORT_DYNAMIC_ALLOCATION + is 0 then vPortFree() will be #defined to nothing. */ + vPortFree( pxTaskStatusArray ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + +#endif /* ( ( configUSE_TRACE_FACILITY == 1 ) && ( configUSE_STATS_FORMATTING_FUNCTIONS > 0 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) ) */ +/*----------------------------------------------------------*/ + +#if ( ( configGENERATE_RUN_TIME_STATS == 1 ) && ( configUSE_STATS_FORMATTING_FUNCTIONS > 0 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) ) + + void vTaskGetRunTimeStats( char *pcWriteBuffer ) + { + TaskStatus_t *pxTaskStatusArray; + UBaseType_t uxArraySize, x; + uint32_t ulTotalTime, ulStatsAsPercentage; + + #if( configUSE_TRACE_FACILITY != 1 ) + { + #error configUSE_TRACE_FACILITY must also be set to 1 in FreeRTOSConfig.h to use vTaskGetRunTimeStats(). + } + #endif + + /* + * PLEASE NOTE: + * + * This function is provided for convenience only, and is used by many + * of the demo applications. Do not consider it to be part of the + * scheduler. + * + * vTaskGetRunTimeStats() calls uxTaskGetSystemState(), then formats part + * of the uxTaskGetSystemState() output into a human readable table that + * displays the amount of time each task has spent in the Running state + * in both absolute and percentage terms. + * + * vTaskGetRunTimeStats() has a dependency on the sprintf() C library + * function that might bloat the code size, use a lot of stack, and + * provide different results on different platforms. An alternative, + * tiny, third party, and limited functionality implementation of + * sprintf() is provided in many of the FreeRTOS/Demo sub-directories in + * a file called printf-stdarg.c (note printf-stdarg.c does not provide + * a full snprintf() implementation!). + * + * It is recommended that production systems call uxTaskGetSystemState() + * directly to get access to raw stats data, rather than indirectly + * through a call to vTaskGetRunTimeStats(). + */ + + /* Make sure the write buffer does not contain a string. */ + *pcWriteBuffer = ( char ) 0x00; + + /* Take a snapshot of the number of tasks in case it changes while this + function is executing. */ + uxArraySize = uxCurrentNumberOfTasks; + + /* Allocate an array index for each task. NOTE! If + configSUPPORT_DYNAMIC_ALLOCATION is set to 0 then pvPortMalloc() will + equate to NULL. */ + pxTaskStatusArray = pvPortMalloc( uxCurrentNumberOfTasks * sizeof( TaskStatus_t ) ); /*lint !e9079 All values returned by pvPortMalloc() have at least the alignment required by the MCU's stack and this allocation allocates a struct that has the alignment requirements of a pointer. */ + + if( pxTaskStatusArray != NULL ) + { + /* Generate the (binary) data. */ + uxArraySize = uxTaskGetSystemState( pxTaskStatusArray, uxArraySize, &ulTotalTime ); + + /* For percentage calculations. */ + ulTotalTime /= 100UL; + + /* Avoid divide by zero errors. */ + if( ulTotalTime > 0UL ) + { + /* Create a human readable table from the binary data. */ + for( x = 0; x < uxArraySize; x++ ) + { + /* What percentage of the total run time has the task used? + This will always be rounded down to the nearest integer. + ulTotalRunTimeDiv100 has already been divided by 100. */ + ulStatsAsPercentage = pxTaskStatusArray[ x ].ulRunTimeCounter / ulTotalTime; + + /* Write the task name to the string, padding with + spaces so it can be printed in tabular form more + easily. */ + pcWriteBuffer = prvWriteNameToBuffer( pcWriteBuffer, pxTaskStatusArray[ x ].pcTaskName ); + + if( ulStatsAsPercentage > 0UL ) + { + #ifdef portLU_PRINTF_SPECIFIER_REQUIRED + { + sprintf( pcWriteBuffer, "\t%lu\t\t%lu%%\r\n", pxTaskStatusArray[ x ].ulRunTimeCounter, ulStatsAsPercentage ); + } + #else + { + /* sizeof( int ) == sizeof( long ) so a smaller + printf() library can be used. */ + sprintf( pcWriteBuffer, "\t%u\t\t%u%%\r\n", ( unsigned int ) pxTaskStatusArray[ x ].ulRunTimeCounter, ( unsigned int ) ulStatsAsPercentage ); /*lint !e586 sprintf() allowed as this is compiled with many compilers and this is a utility function only - not part of the core kernel implementation. */ + } + #endif + } + else + { + /* If the percentage is zero here then the task has + consumed less than 1% of the total run time. */ + #ifdef portLU_PRINTF_SPECIFIER_REQUIRED + { + sprintf( pcWriteBuffer, "\t%lu\t\t<1%%\r\n", pxTaskStatusArray[ x ].ulRunTimeCounter ); + } + #else + { + /* sizeof( int ) == sizeof( long ) so a smaller + printf() library can be used. */ + sprintf( pcWriteBuffer, "\t%u\t\t<1%%\r\n", ( unsigned int ) pxTaskStatusArray[ x ].ulRunTimeCounter ); /*lint !e586 sprintf() allowed as this is compiled with many compilers and this is a utility function only - not part of the core kernel implementation. */ + } + #endif + } + + pcWriteBuffer += strlen( pcWriteBuffer ); /*lint !e9016 Pointer arithmetic ok on char pointers especially as in this case where it best denotes the intent of the code. */ + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + /* Free the array again. NOTE! If configSUPPORT_DYNAMIC_ALLOCATION + is 0 then vPortFree() will be #defined to nothing. */ + vPortFree( pxTaskStatusArray ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + +#endif /* ( ( configGENERATE_RUN_TIME_STATS == 1 ) && ( configUSE_STATS_FORMATTING_FUNCTIONS > 0 ) && ( configSUPPORT_STATIC_ALLOCATION == 1 ) ) */ +/*-----------------------------------------------------------*/ + +TickType_t uxTaskResetEventItemValue( void ) +{ +TickType_t uxReturn; + + uxReturn = listGET_LIST_ITEM_VALUE( &( pxCurrentTCB->xEventListItem ) ); + + /* Reset the event list item to its normal value - so it can be used with + queues and semaphores. */ + listSET_LIST_ITEM_VALUE( &( pxCurrentTCB->xEventListItem ), ( ( TickType_t ) configMAX_PRIORITIES - ( TickType_t ) pxCurrentTCB->uxPriority ) ); /*lint !e961 MISRA exception as the casts are only redundant for some ports. */ + + return uxReturn; +} +/*-----------------------------------------------------------*/ + +#if ( configUSE_MUTEXES == 1 ) + + TaskHandle_t pvTaskIncrementMutexHeldCount( void ) + { + /* If xSemaphoreCreateMutex() is called before any tasks have been created + then pxCurrentTCB will be NULL. */ + if( pxCurrentTCB != NULL ) + { + ( pxCurrentTCB->uxMutexesHeld )++; + } + + return pxCurrentTCB; + } + +#endif /* configUSE_MUTEXES */ +/*-----------------------------------------------------------*/ + +#if( configUSE_TASK_NOTIFICATIONS == 1 ) + + uint32_t ulTaskNotifyTake( BaseType_t xClearCountOnExit, TickType_t xTicksToWait ) + { + uint32_t ulReturn; + + taskENTER_CRITICAL(); + { + /* Only block if the notification count is not already non-zero. */ + if( pxCurrentTCB->ulNotifiedValue == 0UL ) + { + /* Mark this task as waiting for a notification. */ + pxCurrentTCB->ucNotifyState = taskWAITING_NOTIFICATION; + + if( xTicksToWait > ( TickType_t ) 0 ) + { + prvAddCurrentTaskToDelayedList( xTicksToWait, pdTRUE ); + traceTASK_NOTIFY_TAKE_BLOCK(); + + /* All ports are written to allow a yield in a critical + section (some will yield immediately, others wait until the + critical section exits) - but it is not something that + application code should ever do. */ + portYIELD_WITHIN_API(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + taskEXIT_CRITICAL(); + + taskENTER_CRITICAL(); + { + traceTASK_NOTIFY_TAKE(); + ulReturn = pxCurrentTCB->ulNotifiedValue; + + if( ulReturn != 0UL ) + { + if( xClearCountOnExit != pdFALSE ) + { + pxCurrentTCB->ulNotifiedValue = 0UL; + } + else + { + pxCurrentTCB->ulNotifiedValue = ulReturn - ( uint32_t ) 1; + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + pxCurrentTCB->ucNotifyState = taskNOT_WAITING_NOTIFICATION; + } + taskEXIT_CRITICAL(); + + return ulReturn; + } + +#endif /* configUSE_TASK_NOTIFICATIONS */ +/*-----------------------------------------------------------*/ + +#if( configUSE_TASK_NOTIFICATIONS == 1 ) + + BaseType_t xTaskNotifyWait( uint32_t ulBitsToClearOnEntry, uint32_t ulBitsToClearOnExit, uint32_t *pulNotificationValue, TickType_t xTicksToWait ) + { + BaseType_t xReturn; + + taskENTER_CRITICAL(); + { + /* Only block if a notification is not already pending. */ + if( pxCurrentTCB->ucNotifyState != taskNOTIFICATION_RECEIVED ) + { + /* Clear bits in the task's notification value as bits may get + set by the notifying task or interrupt. This can be used to + clear the value to zero. */ + pxCurrentTCB->ulNotifiedValue &= ~ulBitsToClearOnEntry; + + /* Mark this task as waiting for a notification. */ + pxCurrentTCB->ucNotifyState = taskWAITING_NOTIFICATION; + + if( xTicksToWait > ( TickType_t ) 0 ) + { + prvAddCurrentTaskToDelayedList( xTicksToWait, pdTRUE ); + traceTASK_NOTIFY_WAIT_BLOCK(); + + /* All ports are written to allow a yield in a critical + section (some will yield immediately, others wait until the + critical section exits) - but it is not something that + application code should ever do. */ + portYIELD_WITHIN_API(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + taskEXIT_CRITICAL(); + + taskENTER_CRITICAL(); + { + traceTASK_NOTIFY_WAIT(); + + if( pulNotificationValue != NULL ) + { + /* Output the current notification value, which may or may not + have changed. */ + *pulNotificationValue = pxCurrentTCB->ulNotifiedValue; + } + + /* If ucNotifyValue is set then either the task never entered the + blocked state (because a notification was already pending) or the + task unblocked because of a notification. Otherwise the task + unblocked because of a timeout. */ + if( pxCurrentTCB->ucNotifyState != taskNOTIFICATION_RECEIVED ) + { + /* A notification was not received. */ + xReturn = pdFALSE; + } + else + { + /* A notification was already pending or a notification was + received while the task was waiting. */ + pxCurrentTCB->ulNotifiedValue &= ~ulBitsToClearOnExit; + xReturn = pdTRUE; + } + + pxCurrentTCB->ucNotifyState = taskNOT_WAITING_NOTIFICATION; + } + taskEXIT_CRITICAL(); + + return xReturn; + } + +#endif /* configUSE_TASK_NOTIFICATIONS */ +/*-----------------------------------------------------------*/ + +#if( configUSE_TASK_NOTIFICATIONS == 1 ) + + BaseType_t xTaskGenericNotify( TaskHandle_t xTaskToNotify, uint32_t ulValue, eNotifyAction eAction, uint32_t *pulPreviousNotificationValue ) + { + TCB_t * pxTCB; + BaseType_t xReturn = pdPASS; + uint8_t ucOriginalNotifyState; + + configASSERT( xTaskToNotify ); + pxTCB = xTaskToNotify; + + taskENTER_CRITICAL(); + { + if( pulPreviousNotificationValue != NULL ) + { + *pulPreviousNotificationValue = pxTCB->ulNotifiedValue; + } + + ucOriginalNotifyState = pxTCB->ucNotifyState; + + pxTCB->ucNotifyState = taskNOTIFICATION_RECEIVED; + + switch( eAction ) + { + case eSetBits : + pxTCB->ulNotifiedValue |= ulValue; + break; + + case eIncrement : + ( pxTCB->ulNotifiedValue )++; + break; + + case eSetValueWithOverwrite : + pxTCB->ulNotifiedValue = ulValue; + break; + + case eSetValueWithoutOverwrite : + if( ucOriginalNotifyState != taskNOTIFICATION_RECEIVED ) + { + pxTCB->ulNotifiedValue = ulValue; + } + else + { + /* The value could not be written to the task. */ + xReturn = pdFAIL; + } + break; + + case eNoAction: + /* The task is being notified without its notify value being + updated. */ + break; + + default: + /* Should not get here if all enums are handled. + Artificially force an assert by testing a value the + compiler can't assume is const. */ + configASSERT( pxTCB->ulNotifiedValue == ~0UL ); + + break; + } + + traceTASK_NOTIFY(); + + /* If the task is in the blocked state specifically to wait for a + notification then unblock it now. */ + if( ucOriginalNotifyState == taskWAITING_NOTIFICATION ) + { + ( void ) uxListRemove( &( pxTCB->xStateListItem ) ); + prvAddTaskToReadyList( pxTCB ); + + /* The task should not have been on an event list. */ + configASSERT( listLIST_ITEM_CONTAINER( &( pxTCB->xEventListItem ) ) == NULL ); + + #if( configUSE_TICKLESS_IDLE != 0 ) + { + /* If a task is blocked waiting for a notification then + xNextTaskUnblockTime might be set to the blocked task's time + out time. If the task is unblocked for a reason other than + a timeout xNextTaskUnblockTime is normally left unchanged, + because it will automatically get reset to a new value when + the tick count equals xNextTaskUnblockTime. However if + tickless idling is used it might be more important to enter + sleep mode at the earliest possible time - so reset + xNextTaskUnblockTime here to ensure it is updated at the + earliest possible time. */ + prvResetNextTaskUnblockTime(); + } + #endif + + if( pxTCB->uxPriority > pxCurrentTCB->uxPriority ) + { + /* The notified task has a priority above the currently + executing task so a yield is required. */ + taskYIELD_IF_USING_PREEMPTION(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + taskEXIT_CRITICAL(); + + return xReturn; + } + +#endif /* configUSE_TASK_NOTIFICATIONS */ +/*-----------------------------------------------------------*/ + +#if( configUSE_TASK_NOTIFICATIONS == 1 ) + + BaseType_t xTaskGenericNotifyFromISR( TaskHandle_t xTaskToNotify, uint32_t ulValue, eNotifyAction eAction, uint32_t *pulPreviousNotificationValue, BaseType_t *pxHigherPriorityTaskWoken ) + { + TCB_t * pxTCB; + uint8_t ucOriginalNotifyState; + BaseType_t xReturn = pdPASS; + UBaseType_t uxSavedInterruptStatus; + + configASSERT( xTaskToNotify ); + + /* RTOS ports that support interrupt nesting have the concept of a + maximum system call (or maximum API call) interrupt priority. + Interrupts that are above the maximum system call priority are keep + permanently enabled, even when the RTOS kernel is in a critical section, + but cannot make any calls to FreeRTOS API functions. If configASSERT() + is defined in FreeRTOSConfig.h then + portASSERT_IF_INTERRUPT_PRIORITY_INVALID() will result in an assertion + failure if a FreeRTOS API function is called from an interrupt that has + been assigned a priority above the configured maximum system call + priority. Only FreeRTOS functions that end in FromISR can be called + from interrupts that have been assigned a priority at or (logically) + below the maximum system call interrupt priority. FreeRTOS maintains a + separate interrupt safe API to ensure interrupt entry is as fast and as + simple as possible. More information (albeit Cortex-M specific) is + provided on the following link: + http://www.freertos.org/RTOS-Cortex-M3-M4.html */ + portASSERT_IF_INTERRUPT_PRIORITY_INVALID(); + + pxTCB = xTaskToNotify; + + uxSavedInterruptStatus = portSET_INTERRUPT_MASK_FROM_ISR(); + { + if( pulPreviousNotificationValue != NULL ) + { + *pulPreviousNotificationValue = pxTCB->ulNotifiedValue; + } + + ucOriginalNotifyState = pxTCB->ucNotifyState; + pxTCB->ucNotifyState = taskNOTIFICATION_RECEIVED; + + switch( eAction ) + { + case eSetBits : + pxTCB->ulNotifiedValue |= ulValue; + break; + + case eIncrement : + ( pxTCB->ulNotifiedValue )++; + break; + + case eSetValueWithOverwrite : + pxTCB->ulNotifiedValue = ulValue; + break; + + case eSetValueWithoutOverwrite : + if( ucOriginalNotifyState != taskNOTIFICATION_RECEIVED ) + { + pxTCB->ulNotifiedValue = ulValue; + } + else + { + /* The value could not be written to the task. */ + xReturn = pdFAIL; + } + break; + + case eNoAction : + /* The task is being notified without its notify value being + updated. */ + break; + + default: + /* Should not get here if all enums are handled. + Artificially force an assert by testing a value the + compiler can't assume is const. */ + configASSERT( pxTCB->ulNotifiedValue == ~0UL ); + break; + } + + traceTASK_NOTIFY_FROM_ISR(); + + /* If the task is in the blocked state specifically to wait for a + notification then unblock it now. */ + if( ucOriginalNotifyState == taskWAITING_NOTIFICATION ) + { + /* The task should not have been on an event list. */ + configASSERT( listLIST_ITEM_CONTAINER( &( pxTCB->xEventListItem ) ) == NULL ); + + if( uxSchedulerSuspended == ( UBaseType_t ) pdFALSE ) + { + ( void ) uxListRemove( &( pxTCB->xStateListItem ) ); + prvAddTaskToReadyList( pxTCB ); + } + else + { + /* The delayed and ready lists cannot be accessed, so hold + this task pending until the scheduler is resumed. */ + vListInsertEnd( &( xPendingReadyList ), &( pxTCB->xEventListItem ) ); + } + + if( pxTCB->uxPriority > pxCurrentTCB->uxPriority ) + { + /* The notified task has a priority above the currently + executing task so a yield is required. */ + if( pxHigherPriorityTaskWoken != NULL ) + { + *pxHigherPriorityTaskWoken = pdTRUE; + } + + /* Mark that a yield is pending in case the user is not + using the "xHigherPriorityTaskWoken" parameter to an ISR + safe FreeRTOS function. */ + xYieldPending = pdTRUE; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + } + portCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedInterruptStatus ); + + return xReturn; + } + +#endif /* configUSE_TASK_NOTIFICATIONS */ +/*-----------------------------------------------------------*/ + +#if( configUSE_TASK_NOTIFICATIONS == 1 ) + + void vTaskNotifyGiveFromISR( TaskHandle_t xTaskToNotify, BaseType_t *pxHigherPriorityTaskWoken ) + { + TCB_t * pxTCB; + uint8_t ucOriginalNotifyState; + UBaseType_t uxSavedInterruptStatus; + + configASSERT( xTaskToNotify ); + + /* RTOS ports that support interrupt nesting have the concept of a + maximum system call (or maximum API call) interrupt priority. + Interrupts that are above the maximum system call priority are keep + permanently enabled, even when the RTOS kernel is in a critical section, + but cannot make any calls to FreeRTOS API functions. If configASSERT() + is defined in FreeRTOSConfig.h then + portASSERT_IF_INTERRUPT_PRIORITY_INVALID() will result in an assertion + failure if a FreeRTOS API function is called from an interrupt that has + been assigned a priority above the configured maximum system call + priority. Only FreeRTOS functions that end in FromISR can be called + from interrupts that have been assigned a priority at or (logically) + below the maximum system call interrupt priority. FreeRTOS maintains a + separate interrupt safe API to ensure interrupt entry is as fast and as + simple as possible. More information (albeit Cortex-M specific) is + provided on the following link: + http://www.freertos.org/RTOS-Cortex-M3-M4.html */ + portASSERT_IF_INTERRUPT_PRIORITY_INVALID(); + + pxTCB = xTaskToNotify; + + uxSavedInterruptStatus = portSET_INTERRUPT_MASK_FROM_ISR(); + { + ucOriginalNotifyState = pxTCB->ucNotifyState; + pxTCB->ucNotifyState = taskNOTIFICATION_RECEIVED; + + /* 'Giving' is equivalent to incrementing a count in a counting + semaphore. */ + ( pxTCB->ulNotifiedValue )++; + + traceTASK_NOTIFY_GIVE_FROM_ISR(); + + /* If the task is in the blocked state specifically to wait for a + notification then unblock it now. */ + if( ucOriginalNotifyState == taskWAITING_NOTIFICATION ) + { + /* The task should not have been on an event list. */ + configASSERT( listLIST_ITEM_CONTAINER( &( pxTCB->xEventListItem ) ) == NULL ); + + if( uxSchedulerSuspended == ( UBaseType_t ) pdFALSE ) + { + ( void ) uxListRemove( &( pxTCB->xStateListItem ) ); + prvAddTaskToReadyList( pxTCB ); + } + else + { + /* The delayed and ready lists cannot be accessed, so hold + this task pending until the scheduler is resumed. */ + vListInsertEnd( &( xPendingReadyList ), &( pxTCB->xEventListItem ) ); + } + + if( pxTCB->uxPriority > pxCurrentTCB->uxPriority ) + { + /* The notified task has a priority above the currently + executing task so a yield is required. */ + if( pxHigherPriorityTaskWoken != NULL ) + { + *pxHigherPriorityTaskWoken = pdTRUE; + } + + /* Mark that a yield is pending in case the user is not + using the "xHigherPriorityTaskWoken" parameter in an ISR + safe FreeRTOS function. */ + xYieldPending = pdTRUE; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + } + portCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedInterruptStatus ); + } + +#endif /* configUSE_TASK_NOTIFICATIONS */ +/*-----------------------------------------------------------*/ + +#if( configUSE_TASK_NOTIFICATIONS == 1 ) + + BaseType_t xTaskNotifyStateClear( TaskHandle_t xTask ) + { + TCB_t *pxTCB; + BaseType_t xReturn; + + /* If null is passed in here then it is the calling task that is having + its notification state cleared. */ + pxTCB = prvGetTCBFromHandle( xTask ); + + taskENTER_CRITICAL(); + { + if( pxTCB->ucNotifyState == taskNOTIFICATION_RECEIVED ) + { + pxTCB->ucNotifyState = taskNOT_WAITING_NOTIFICATION; + xReturn = pdPASS; + } + else + { + xReturn = pdFAIL; + } + } + taskEXIT_CRITICAL(); + + return xReturn; + } + +#endif /* configUSE_TASK_NOTIFICATIONS */ +/*-----------------------------------------------------------*/ + +#if( configUSE_TASK_NOTIFICATIONS == 1 ) + + uint32_t ulTaskNotifyValueClear( TaskHandle_t xTask, uint32_t ulBitsToClear ) + { + TCB_t *pxTCB; + uint32_t ulReturn; + + /* If null is passed in here then it is the calling task that is having + its notification state cleared. */ + pxTCB = prvGetTCBFromHandle( xTask ); + + taskENTER_CRITICAL(); + { + /* Return the notification as it was before the bits were cleared, + then clear the bit mask. */ + ulReturn = pxCurrentTCB->ulNotifiedValue; + pxTCB->ulNotifiedValue &= ~ulBitsToClear; + } + taskEXIT_CRITICAL(); + + return ulReturn; + } + +#endif /* configUSE_TASK_NOTIFICATIONS */ +/*-----------------------------------------------------------*/ + +#if( ( configGENERATE_RUN_TIME_STATS == 1 ) && ( INCLUDE_xTaskGetIdleTaskHandle == 1 ) ) + + uint32_t ulTaskGetIdleRunTimeCounter( void ) + { + return xIdleTaskHandle->ulRunTimeCounter; + } + +#endif +/*-----------------------------------------------------------*/ + +static void prvAddCurrentTaskToDelayedList( TickType_t xTicksToWait, const BaseType_t xCanBlockIndefinitely ) +{ +TickType_t xTimeToWake; +const TickType_t xConstTickCount = xTickCount; + + #if( INCLUDE_xTaskAbortDelay == 1 ) + { + /* About to enter a delayed list, so ensure the ucDelayAborted flag is + reset to pdFALSE so it can be detected as having been set to pdTRUE + when the task leaves the Blocked state. */ + pxCurrentTCB->ucDelayAborted = pdFALSE; + } + #endif + + /* Remove the task from the ready list before adding it to the blocked list + as the same list item is used for both lists. */ + if( uxListRemove( &( pxCurrentTCB->xStateListItem ) ) == ( UBaseType_t ) 0 ) + { + /* The current task must be in a ready list, so there is no need to + check, and the port reset macro can be called directly. */ + portRESET_READY_PRIORITY( pxCurrentTCB->uxPriority, uxTopReadyPriority ); /*lint !e931 pxCurrentTCB cannot change as it is the calling task. pxCurrentTCB->uxPriority and uxTopReadyPriority cannot change as called with scheduler suspended or in a critical section. */ + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + #if ( INCLUDE_vTaskSuspend == 1 ) + { + if( ( xTicksToWait == portMAX_DELAY ) && ( xCanBlockIndefinitely != pdFALSE ) ) + { + /* Add the task to the suspended task list instead of a delayed task + list to ensure it is not woken by a timing event. It will block + indefinitely. */ + vListInsertEnd( &xSuspendedTaskList, &( pxCurrentTCB->xStateListItem ) ); + } + else + { + /* Calculate the time at which the task should be woken if the event + does not occur. This may overflow but this doesn't matter, the + kernel will manage it correctly. */ + xTimeToWake = xConstTickCount + xTicksToWait; + + /* The list item will be inserted in wake time order. */ + listSET_LIST_ITEM_VALUE( &( pxCurrentTCB->xStateListItem ), xTimeToWake ); + + if( xTimeToWake < xConstTickCount ) + { + /* Wake time has overflowed. Place this item in the overflow + list. */ + vListInsert( pxOverflowDelayedTaskList, &( pxCurrentTCB->xStateListItem ) ); + } + else + { + /* The wake time has not overflowed, so the current block list + is used. */ + vListInsert( pxDelayedTaskList, &( pxCurrentTCB->xStateListItem ) ); + + /* If the task entering the blocked state was placed at the + head of the list of blocked tasks then xNextTaskUnblockTime + needs to be updated too. */ + if( xTimeToWake < xNextTaskUnblockTime ) + { + xNextTaskUnblockTime = xTimeToWake; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + } + } + #else /* INCLUDE_vTaskSuspend */ + { + /* Calculate the time at which the task should be woken if the event + does not occur. This may overflow but this doesn't matter, the kernel + will manage it correctly. */ + xTimeToWake = xConstTickCount + xTicksToWait; + + /* The list item will be inserted in wake time order. */ + listSET_LIST_ITEM_VALUE( &( pxCurrentTCB->xStateListItem ), xTimeToWake ); + + if( xTimeToWake < xConstTickCount ) + { + /* Wake time has overflowed. Place this item in the overflow list. */ + vListInsert( pxOverflowDelayedTaskList, &( pxCurrentTCB->xStateListItem ) ); + } + else + { + /* The wake time has not overflowed, so the current block list is used. */ + vListInsert( pxDelayedTaskList, &( pxCurrentTCB->xStateListItem ) ); + + /* If the task entering the blocked state was placed at the head of the + list of blocked tasks then xNextTaskUnblockTime needs to be updated + too. */ + if( xTimeToWake < xNextTaskUnblockTime ) + { + xNextTaskUnblockTime = xTimeToWake; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + + /* Avoid compiler warning when INCLUDE_vTaskSuspend is not 1. */ + ( void ) xCanBlockIndefinitely; + } + #endif /* INCLUDE_vTaskSuspend */ +} + +/* Code below here allows additional code to be inserted into this source file, +especially where access to file scope functions and data is needed (for example +when performing module tests). */ + +#ifdef FREERTOS_MODULE_TEST + #include "tasks_test_access_functions.h" +#endif + + +#if( configINCLUDE_FREERTOS_TASK_C_ADDITIONS_H == 1 ) + + #include "freertos_tasks_c_additions.h" + + #ifdef FREERTOS_TASKS_C_ADDITIONS_INIT + static void freertos_tasks_c_additions_init( void ) + { + FREERTOS_TASKS_C_ADDITIONS_INIT(); + } + #endif + +#endif + + diff --git a/firmware/Middlewares/Third_Party/FreeRTOS/Source/timers.c b/firmware/Middlewares/Third_Party/FreeRTOS/Source/timers.c new file mode 100644 index 0000000..00200b8 --- /dev/null +++ b/firmware/Middlewares/Third_Party/FreeRTOS/Source/timers.c @@ -0,0 +1,1127 @@ +/* + * FreeRTOS Kernel V10.3.1 + * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * http://www.FreeRTOS.org + * http://aws.amazon.com/freertos + * + * 1 tab == 4 spaces! + */ + +/* Standard includes. */ +#include + +/* Defining MPU_WRAPPERS_INCLUDED_FROM_API_FILE prevents task.h from redefining +all the API functions to use the MPU wrappers. That should only be done when +task.h is included from an application file. */ +#define MPU_WRAPPERS_INCLUDED_FROM_API_FILE + +#include "FreeRTOS.h" +#include "task.h" +#include "queue.h" +#include "timers.h" + +#if ( INCLUDE_xTimerPendFunctionCall == 1 ) && ( configUSE_TIMERS == 0 ) + #error configUSE_TIMERS must be set to 1 to make the xTimerPendFunctionCall() function available. +#endif + +/* Lint e9021, e961 and e750 are suppressed as a MISRA exception justified +because the MPU ports require MPU_WRAPPERS_INCLUDED_FROM_API_FILE to be defined +for the header files above, but not in this file, in order to generate the +correct privileged Vs unprivileged linkage and placement. */ +#undef MPU_WRAPPERS_INCLUDED_FROM_API_FILE /*lint !e9021 !e961 !e750. */ + + +/* This entire source file will be skipped if the application is not configured +to include software timer functionality. This #if is closed at the very bottom +of this file. If you want to include software timer functionality then ensure +configUSE_TIMERS is set to 1 in FreeRTOSConfig.h. */ +#if ( configUSE_TIMERS == 1 ) + +/* Misc definitions. */ +#define tmrNO_DELAY ( TickType_t ) 0U + +/* The name assigned to the timer service task. This can be overridden by +defining trmTIMER_SERVICE_TASK_NAME in FreeRTOSConfig.h. */ +#ifndef configTIMER_SERVICE_TASK_NAME + #define configTIMER_SERVICE_TASK_NAME "Tmr Svc" +#endif + +/* Bit definitions used in the ucStatus member of a timer structure. */ +#define tmrSTATUS_IS_ACTIVE ( ( uint8_t ) 0x01 ) +#define tmrSTATUS_IS_STATICALLY_ALLOCATED ( ( uint8_t ) 0x02 ) +#define tmrSTATUS_IS_AUTORELOAD ( ( uint8_t ) 0x04 ) + +/* The definition of the timers themselves. */ +typedef struct tmrTimerControl /* The old naming convention is used to prevent breaking kernel aware debuggers. */ +{ + const char *pcTimerName; /*<< Text name. This is not used by the kernel, it is included simply to make debugging easier. */ /*lint !e971 Unqualified char types are allowed for strings and single characters only. */ + ListItem_t xTimerListItem; /*<< Standard linked list item as used by all kernel features for event management. */ + TickType_t xTimerPeriodInTicks;/*<< How quickly and often the timer expires. */ + void *pvTimerID; /*<< An ID to identify the timer. This allows the timer to be identified when the same callback is used for multiple timers. */ + TimerCallbackFunction_t pxCallbackFunction; /*<< The function that will be called when the timer expires. */ + #if( configUSE_TRACE_FACILITY == 1 ) + UBaseType_t uxTimerNumber; /*<< An ID assigned by trace tools such as FreeRTOS+Trace */ + #endif + uint8_t ucStatus; /*<< Holds bits to say if the timer was statically allocated or not, and if it is active or not. */ +} xTIMER; + +/* The old xTIMER name is maintained above then typedefed to the new Timer_t +name below to enable the use of older kernel aware debuggers. */ +typedef xTIMER Timer_t; + +/* The definition of messages that can be sent and received on the timer queue. +Two types of message can be queued - messages that manipulate a software timer, +and messages that request the execution of a non-timer related callback. The +two message types are defined in two separate structures, xTimerParametersType +and xCallbackParametersType respectively. */ +typedef struct tmrTimerParameters +{ + TickType_t xMessageValue; /*<< An optional value used by a subset of commands, for example, when changing the period of a timer. */ + Timer_t * pxTimer; /*<< The timer to which the command will be applied. */ +} TimerParameter_t; + + +typedef struct tmrCallbackParameters +{ + PendedFunction_t pxCallbackFunction; /* << The callback function to execute. */ + void *pvParameter1; /* << The value that will be used as the callback functions first parameter. */ + uint32_t ulParameter2; /* << The value that will be used as the callback functions second parameter. */ +} CallbackParameters_t; + +/* The structure that contains the two message types, along with an identifier +that is used to determine which message type is valid. */ +typedef struct tmrTimerQueueMessage +{ + BaseType_t xMessageID; /*<< The command being sent to the timer service task. */ + union + { + TimerParameter_t xTimerParameters; + + /* Don't include xCallbackParameters if it is not going to be used as + it makes the structure (and therefore the timer queue) larger. */ + #if ( INCLUDE_xTimerPendFunctionCall == 1 ) + CallbackParameters_t xCallbackParameters; + #endif /* INCLUDE_xTimerPendFunctionCall */ + } u; +} DaemonTaskMessage_t; + +/*lint -save -e956 A manual analysis and inspection has been used to determine +which static variables must be declared volatile. */ + +/* The list in which active timers are stored. Timers are referenced in expire +time order, with the nearest expiry time at the front of the list. Only the +timer service task is allowed to access these lists. +xActiveTimerList1 and xActiveTimerList2 could be at function scope but that +breaks some kernel aware debuggers, and debuggers that reply on removing the +static qualifier. */ +PRIVILEGED_DATA static List_t xActiveTimerList1; +PRIVILEGED_DATA static List_t xActiveTimerList2; +PRIVILEGED_DATA static List_t *pxCurrentTimerList; +PRIVILEGED_DATA static List_t *pxOverflowTimerList; + +/* A queue that is used to send commands to the timer service task. */ +PRIVILEGED_DATA static QueueHandle_t xTimerQueue = NULL; +PRIVILEGED_DATA static TaskHandle_t xTimerTaskHandle = NULL; + +/*lint -restore */ + +/*-----------------------------------------------------------*/ + +#if( configSUPPORT_STATIC_ALLOCATION == 1 ) + + /* If static allocation is supported then the application must provide the + following callback function - which enables the application to optionally + provide the memory that will be used by the timer task as the task's stack + and TCB. */ + extern void vApplicationGetTimerTaskMemory( StaticTask_t **ppxTimerTaskTCBBuffer, StackType_t **ppxTimerTaskStackBuffer, uint32_t *pulTimerTaskStackSize ); + +#endif + +/* + * Initialise the infrastructure used by the timer service task if it has not + * been initialised already. + */ +static void prvCheckForValidListAndQueue( void ) PRIVILEGED_FUNCTION; + +/* + * The timer service task (daemon). Timer functionality is controlled by this + * task. Other tasks communicate with the timer service task using the + * xTimerQueue queue. + */ +static portTASK_FUNCTION_PROTO( prvTimerTask, pvParameters ) PRIVILEGED_FUNCTION; + +/* + * Called by the timer service task to interpret and process a command it + * received on the timer queue. + */ +static void prvProcessReceivedCommands( void ) PRIVILEGED_FUNCTION; + +/* + * Insert the timer into either xActiveTimerList1, or xActiveTimerList2, + * depending on if the expire time causes a timer counter overflow. + */ +static BaseType_t prvInsertTimerInActiveList( Timer_t * const pxTimer, const TickType_t xNextExpiryTime, const TickType_t xTimeNow, const TickType_t xCommandTime ) PRIVILEGED_FUNCTION; + +/* + * An active timer has reached its expire time. Reload the timer if it is an + * auto-reload timer, then call its callback. + */ +static void prvProcessExpiredTimer( const TickType_t xNextExpireTime, const TickType_t xTimeNow ) PRIVILEGED_FUNCTION; + +/* + * The tick count has overflowed. Switch the timer lists after ensuring the + * current timer list does not still reference some timers. + */ +static void prvSwitchTimerLists( void ) PRIVILEGED_FUNCTION; + +/* + * Obtain the current tick count, setting *pxTimerListsWereSwitched to pdTRUE + * if a tick count overflow occurred since prvSampleTimeNow() was last called. + */ +static TickType_t prvSampleTimeNow( BaseType_t * const pxTimerListsWereSwitched ) PRIVILEGED_FUNCTION; + +/* + * If the timer list contains any active timers then return the expire time of + * the timer that will expire first and set *pxListWasEmpty to false. If the + * timer list does not contain any timers then return 0 and set *pxListWasEmpty + * to pdTRUE. + */ +static TickType_t prvGetNextExpireTime( BaseType_t * const pxListWasEmpty ) PRIVILEGED_FUNCTION; + +/* + * If a timer has expired, process it. Otherwise, block the timer service task + * until either a timer does expire or a command is received. + */ +static void prvProcessTimerOrBlockTask( const TickType_t xNextExpireTime, BaseType_t xListWasEmpty ) PRIVILEGED_FUNCTION; + +/* + * Called after a Timer_t structure has been allocated either statically or + * dynamically to fill in the structure's members. + */ +static void prvInitialiseNewTimer( const char * const pcTimerName, /*lint !e971 Unqualified char types are allowed for strings and single characters only. */ + const TickType_t xTimerPeriodInTicks, + const UBaseType_t uxAutoReload, + void * const pvTimerID, + TimerCallbackFunction_t pxCallbackFunction, + Timer_t *pxNewTimer ) PRIVILEGED_FUNCTION; +/*-----------------------------------------------------------*/ + +BaseType_t xTimerCreateTimerTask( void ) +{ +BaseType_t xReturn = pdFAIL; + + /* This function is called when the scheduler is started if + configUSE_TIMERS is set to 1. Check that the infrastructure used by the + timer service task has been created/initialised. If timers have already + been created then the initialisation will already have been performed. */ + prvCheckForValidListAndQueue(); + + if( xTimerQueue != NULL ) + { + #if( configSUPPORT_STATIC_ALLOCATION == 1 ) + { + StaticTask_t *pxTimerTaskTCBBuffer = NULL; + StackType_t *pxTimerTaskStackBuffer = NULL; + uint32_t ulTimerTaskStackSize; + + vApplicationGetTimerTaskMemory( &pxTimerTaskTCBBuffer, &pxTimerTaskStackBuffer, &ulTimerTaskStackSize ); + xTimerTaskHandle = xTaskCreateStatic( prvTimerTask, + configTIMER_SERVICE_TASK_NAME, + ulTimerTaskStackSize, + NULL, + ( ( UBaseType_t ) configTIMER_TASK_PRIORITY ) | portPRIVILEGE_BIT, + pxTimerTaskStackBuffer, + pxTimerTaskTCBBuffer ); + + if( xTimerTaskHandle != NULL ) + { + xReturn = pdPASS; + } + } + #else + { + xReturn = xTaskCreate( prvTimerTask, + configTIMER_SERVICE_TASK_NAME, + configTIMER_TASK_STACK_DEPTH, + NULL, + ( ( UBaseType_t ) configTIMER_TASK_PRIORITY ) | portPRIVILEGE_BIT, + &xTimerTaskHandle ); + } + #endif /* configSUPPORT_STATIC_ALLOCATION */ + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + configASSERT( xReturn ); + return xReturn; +} +/*-----------------------------------------------------------*/ + +#if( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) + + TimerHandle_t xTimerCreate( const char * const pcTimerName, /*lint !e971 Unqualified char types are allowed for strings and single characters only. */ + const TickType_t xTimerPeriodInTicks, + const UBaseType_t uxAutoReload, + void * const pvTimerID, + TimerCallbackFunction_t pxCallbackFunction ) + { + Timer_t *pxNewTimer; + + pxNewTimer = ( Timer_t * ) pvPortMalloc( sizeof( Timer_t ) ); /*lint !e9087 !e9079 All values returned by pvPortMalloc() have at least the alignment required by the MCU's stack, and the first member of Timer_t is always a pointer to the timer's mame. */ + + if( pxNewTimer != NULL ) + { + /* Status is thus far zero as the timer is not created statically + and has not been started. The auto-reload bit may get set in + prvInitialiseNewTimer. */ + pxNewTimer->ucStatus = 0x00; + prvInitialiseNewTimer( pcTimerName, xTimerPeriodInTicks, uxAutoReload, pvTimerID, pxCallbackFunction, pxNewTimer ); + } + + return pxNewTimer; + } + +#endif /* configSUPPORT_DYNAMIC_ALLOCATION */ +/*-----------------------------------------------------------*/ + +#if( configSUPPORT_STATIC_ALLOCATION == 1 ) + + TimerHandle_t xTimerCreateStatic( const char * const pcTimerName, /*lint !e971 Unqualified char types are allowed for strings and single characters only. */ + const TickType_t xTimerPeriodInTicks, + const UBaseType_t uxAutoReload, + void * const pvTimerID, + TimerCallbackFunction_t pxCallbackFunction, + StaticTimer_t *pxTimerBuffer ) + { + Timer_t *pxNewTimer; + + #if( configASSERT_DEFINED == 1 ) + { + /* Sanity check that the size of the structure used to declare a + variable of type StaticTimer_t equals the size of the real timer + structure. */ + volatile size_t xSize = sizeof( StaticTimer_t ); + configASSERT( xSize == sizeof( Timer_t ) ); + ( void ) xSize; /* Keeps lint quiet when configASSERT() is not defined. */ + } + #endif /* configASSERT_DEFINED */ + + /* A pointer to a StaticTimer_t structure MUST be provided, use it. */ + configASSERT( pxTimerBuffer ); + pxNewTimer = ( Timer_t * ) pxTimerBuffer; /*lint !e740 !e9087 StaticTimer_t is a pointer to a Timer_t, so guaranteed to be aligned and sized correctly (checked by an assert()), so this is safe. */ + + if( pxNewTimer != NULL ) + { + /* Timers can be created statically or dynamically so note this + timer was created statically in case it is later deleted. The + auto-reload bit may get set in prvInitialiseNewTimer(). */ + pxNewTimer->ucStatus = tmrSTATUS_IS_STATICALLY_ALLOCATED; + + prvInitialiseNewTimer( pcTimerName, xTimerPeriodInTicks, uxAutoReload, pvTimerID, pxCallbackFunction, pxNewTimer ); + } + + return pxNewTimer; + } + +#endif /* configSUPPORT_STATIC_ALLOCATION */ +/*-----------------------------------------------------------*/ + +static void prvInitialiseNewTimer( const char * const pcTimerName, /*lint !e971 Unqualified char types are allowed for strings and single characters only. */ + const TickType_t xTimerPeriodInTicks, + const UBaseType_t uxAutoReload, + void * const pvTimerID, + TimerCallbackFunction_t pxCallbackFunction, + Timer_t *pxNewTimer ) +{ + /* 0 is not a valid value for xTimerPeriodInTicks. */ + configASSERT( ( xTimerPeriodInTicks > 0 ) ); + + if( pxNewTimer != NULL ) + { + /* Ensure the infrastructure used by the timer service task has been + created/initialised. */ + prvCheckForValidListAndQueue(); + + /* Initialise the timer structure members using the function + parameters. */ + pxNewTimer->pcTimerName = pcTimerName; + pxNewTimer->xTimerPeriodInTicks = xTimerPeriodInTicks; + pxNewTimer->pvTimerID = pvTimerID; + pxNewTimer->pxCallbackFunction = pxCallbackFunction; + vListInitialiseItem( &( pxNewTimer->xTimerListItem ) ); + if( uxAutoReload != pdFALSE ) + { + pxNewTimer->ucStatus |= tmrSTATUS_IS_AUTORELOAD; + } + traceTIMER_CREATE( pxNewTimer ); + } +} +/*-----------------------------------------------------------*/ + +BaseType_t xTimerGenericCommand( TimerHandle_t xTimer, const BaseType_t xCommandID, const TickType_t xOptionalValue, BaseType_t * const pxHigherPriorityTaskWoken, const TickType_t xTicksToWait ) +{ +BaseType_t xReturn = pdFAIL; +DaemonTaskMessage_t xMessage; + + configASSERT( xTimer ); + + /* Send a message to the timer service task to perform a particular action + on a particular timer definition. */ + if( xTimerQueue != NULL ) + { + /* Send a command to the timer service task to start the xTimer timer. */ + xMessage.xMessageID = xCommandID; + xMessage.u.xTimerParameters.xMessageValue = xOptionalValue; + xMessage.u.xTimerParameters.pxTimer = xTimer; + + if( xCommandID < tmrFIRST_FROM_ISR_COMMAND ) + { + if( xTaskGetSchedulerState() == taskSCHEDULER_RUNNING ) + { + xReturn = xQueueSendToBack( xTimerQueue, &xMessage, xTicksToWait ); + } + else + { + xReturn = xQueueSendToBack( xTimerQueue, &xMessage, tmrNO_DELAY ); + } + } + else + { + xReturn = xQueueSendToBackFromISR( xTimerQueue, &xMessage, pxHigherPriorityTaskWoken ); + } + + traceTIMER_COMMAND_SEND( xTimer, xCommandID, xOptionalValue, xReturn ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + return xReturn; +} +/*-----------------------------------------------------------*/ + +TaskHandle_t xTimerGetTimerDaemonTaskHandle( void ) +{ + /* If xTimerGetTimerDaemonTaskHandle() is called before the scheduler has been + started, then xTimerTaskHandle will be NULL. */ + configASSERT( ( xTimerTaskHandle != NULL ) ); + return xTimerTaskHandle; +} +/*-----------------------------------------------------------*/ + +TickType_t xTimerGetPeriod( TimerHandle_t xTimer ) +{ +Timer_t *pxTimer = xTimer; + + configASSERT( xTimer ); + return pxTimer->xTimerPeriodInTicks; +} +/*-----------------------------------------------------------*/ + +void vTimerSetReloadMode( TimerHandle_t xTimer, const UBaseType_t uxAutoReload ) +{ +Timer_t * pxTimer = xTimer; + + configASSERT( xTimer ); + taskENTER_CRITICAL(); + { + if( uxAutoReload != pdFALSE ) + { + pxTimer->ucStatus |= tmrSTATUS_IS_AUTORELOAD; + } + else + { + pxTimer->ucStatus &= ~tmrSTATUS_IS_AUTORELOAD; + } + } + taskEXIT_CRITICAL(); +} +/*-----------------------------------------------------------*/ + +UBaseType_t uxTimerGetReloadMode( TimerHandle_t xTimer ) +{ +Timer_t * pxTimer = xTimer; +UBaseType_t uxReturn; + + configASSERT( xTimer ); + taskENTER_CRITICAL(); + { + if( ( pxTimer->ucStatus & tmrSTATUS_IS_AUTORELOAD ) == 0 ) + { + /* Not an auto-reload timer. */ + uxReturn = ( UBaseType_t ) pdFALSE; + } + else + { + /* Is an auto-reload timer. */ + uxReturn = ( UBaseType_t ) pdTRUE; + } + } + taskEXIT_CRITICAL(); + + return uxReturn; +} +/*-----------------------------------------------------------*/ + +TickType_t xTimerGetExpiryTime( TimerHandle_t xTimer ) +{ +Timer_t * pxTimer = xTimer; +TickType_t xReturn; + + configASSERT( xTimer ); + xReturn = listGET_LIST_ITEM_VALUE( &( pxTimer->xTimerListItem ) ); + return xReturn; +} +/*-----------------------------------------------------------*/ + +const char * pcTimerGetName( TimerHandle_t xTimer ) /*lint !e971 Unqualified char types are allowed for strings and single characters only. */ +{ +Timer_t *pxTimer = xTimer; + + configASSERT( xTimer ); + return pxTimer->pcTimerName; +} +/*-----------------------------------------------------------*/ + +static void prvProcessExpiredTimer( const TickType_t xNextExpireTime, const TickType_t xTimeNow ) +{ +BaseType_t xResult; +Timer_t * const pxTimer = ( Timer_t * ) listGET_OWNER_OF_HEAD_ENTRY( pxCurrentTimerList ); /*lint !e9087 !e9079 void * is used as this macro is used with tasks and co-routines too. Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */ + + /* Remove the timer from the list of active timers. A check has already + been performed to ensure the list is not empty. */ + ( void ) uxListRemove( &( pxTimer->xTimerListItem ) ); + traceTIMER_EXPIRED( pxTimer ); + + /* If the timer is an auto-reload timer then calculate the next + expiry time and re-insert the timer in the list of active timers. */ + if( ( pxTimer->ucStatus & tmrSTATUS_IS_AUTORELOAD ) != 0 ) + { + /* The timer is inserted into a list using a time relative to anything + other than the current time. It will therefore be inserted into the + correct list relative to the time this task thinks it is now. */ + if( prvInsertTimerInActiveList( pxTimer, ( xNextExpireTime + pxTimer->xTimerPeriodInTicks ), xTimeNow, xNextExpireTime ) != pdFALSE ) + { + /* The timer expired before it was added to the active timer + list. Reload it now. */ + xResult = xTimerGenericCommand( pxTimer, tmrCOMMAND_START_DONT_TRACE, xNextExpireTime, NULL, tmrNO_DELAY ); + configASSERT( xResult ); + ( void ) xResult; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + pxTimer->ucStatus &= ~tmrSTATUS_IS_ACTIVE; + mtCOVERAGE_TEST_MARKER(); + } + + /* Call the timer callback. */ + pxTimer->pxCallbackFunction( ( TimerHandle_t ) pxTimer ); +} +/*-----------------------------------------------------------*/ + +static portTASK_FUNCTION( prvTimerTask, pvParameters ) +{ +TickType_t xNextExpireTime; +BaseType_t xListWasEmpty; + + /* Just to avoid compiler warnings. */ + ( void ) pvParameters; + + #if( configUSE_DAEMON_TASK_STARTUP_HOOK == 1 ) + { + extern void vApplicationDaemonTaskStartupHook( void ); + + /* Allow the application writer to execute some code in the context of + this task at the point the task starts executing. This is useful if the + application includes initialisation code that would benefit from + executing after the scheduler has been started. */ + vApplicationDaemonTaskStartupHook(); + } + #endif /* configUSE_DAEMON_TASK_STARTUP_HOOK */ + + for( ;; ) + { + /* Query the timers list to see if it contains any timers, and if so, + obtain the time at which the next timer will expire. */ + xNextExpireTime = prvGetNextExpireTime( &xListWasEmpty ); + + /* If a timer has expired, process it. Otherwise, block this task + until either a timer does expire, or a command is received. */ + prvProcessTimerOrBlockTask( xNextExpireTime, xListWasEmpty ); + + /* Empty the command queue. */ + prvProcessReceivedCommands(); + } +} +/*-----------------------------------------------------------*/ + +static void prvProcessTimerOrBlockTask( const TickType_t xNextExpireTime, BaseType_t xListWasEmpty ) +{ +TickType_t xTimeNow; +BaseType_t xTimerListsWereSwitched; + + vTaskSuspendAll(); + { + /* Obtain the time now to make an assessment as to whether the timer + has expired or not. If obtaining the time causes the lists to switch + then don't process this timer as any timers that remained in the list + when the lists were switched will have been processed within the + prvSampleTimeNow() function. */ + xTimeNow = prvSampleTimeNow( &xTimerListsWereSwitched ); + if( xTimerListsWereSwitched == pdFALSE ) + { + /* The tick count has not overflowed, has the timer expired? */ + if( ( xListWasEmpty == pdFALSE ) && ( xNextExpireTime <= xTimeNow ) ) + { + ( void ) xTaskResumeAll(); + prvProcessExpiredTimer( xNextExpireTime, xTimeNow ); + } + else + { + /* The tick count has not overflowed, and the next expire + time has not been reached yet. This task should therefore + block to wait for the next expire time or a command to be + received - whichever comes first. The following line cannot + be reached unless xNextExpireTime > xTimeNow, except in the + case when the current timer list is empty. */ + if( xListWasEmpty != pdFALSE ) + { + /* The current timer list is empty - is the overflow list + also empty? */ + xListWasEmpty = listLIST_IS_EMPTY( pxOverflowTimerList ); + } + + vQueueWaitForMessageRestricted( xTimerQueue, ( xNextExpireTime - xTimeNow ), xListWasEmpty ); + + if( xTaskResumeAll() == pdFALSE ) + { + /* Yield to wait for either a command to arrive, or the + block time to expire. If a command arrived between the + critical section being exited and this yield then the yield + will not cause the task to block. */ + portYIELD_WITHIN_API(); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + } + else + { + ( void ) xTaskResumeAll(); + } + } +} +/*-----------------------------------------------------------*/ + +static TickType_t prvGetNextExpireTime( BaseType_t * const pxListWasEmpty ) +{ +TickType_t xNextExpireTime; + + /* Timers are listed in expiry time order, with the head of the list + referencing the task that will expire first. Obtain the time at which + the timer with the nearest expiry time will expire. If there are no + active timers then just set the next expire time to 0. That will cause + this task to unblock when the tick count overflows, at which point the + timer lists will be switched and the next expiry time can be + re-assessed. */ + *pxListWasEmpty = listLIST_IS_EMPTY( pxCurrentTimerList ); + if( *pxListWasEmpty == pdFALSE ) + { + xNextExpireTime = listGET_ITEM_VALUE_OF_HEAD_ENTRY( pxCurrentTimerList ); + } + else + { + /* Ensure the task unblocks when the tick count rolls over. */ + xNextExpireTime = ( TickType_t ) 0U; + } + + return xNextExpireTime; +} +/*-----------------------------------------------------------*/ + +static TickType_t prvSampleTimeNow( BaseType_t * const pxTimerListsWereSwitched ) +{ +TickType_t xTimeNow; +PRIVILEGED_DATA static TickType_t xLastTime = ( TickType_t ) 0U; /*lint !e956 Variable is only accessible to one task. */ + + xTimeNow = xTaskGetTickCount(); + + if( xTimeNow < xLastTime ) + { + prvSwitchTimerLists(); + *pxTimerListsWereSwitched = pdTRUE; + } + else + { + *pxTimerListsWereSwitched = pdFALSE; + } + + xLastTime = xTimeNow; + + return xTimeNow; +} +/*-----------------------------------------------------------*/ + +static BaseType_t prvInsertTimerInActiveList( Timer_t * const pxTimer, const TickType_t xNextExpiryTime, const TickType_t xTimeNow, const TickType_t xCommandTime ) +{ +BaseType_t xProcessTimerNow = pdFALSE; + + listSET_LIST_ITEM_VALUE( &( pxTimer->xTimerListItem ), xNextExpiryTime ); + listSET_LIST_ITEM_OWNER( &( pxTimer->xTimerListItem ), pxTimer ); + + if( xNextExpiryTime <= xTimeNow ) + { + /* Has the expiry time elapsed between the command to start/reset a + timer was issued, and the time the command was processed? */ + if( ( ( TickType_t ) ( xTimeNow - xCommandTime ) ) >= pxTimer->xTimerPeriodInTicks ) /*lint !e961 MISRA exception as the casts are only redundant for some ports. */ + { + /* The time between a command being issued and the command being + processed actually exceeds the timers period. */ + xProcessTimerNow = pdTRUE; + } + else + { + vListInsert( pxOverflowTimerList, &( pxTimer->xTimerListItem ) ); + } + } + else + { + if( ( xTimeNow < xCommandTime ) && ( xNextExpiryTime >= xCommandTime ) ) + { + /* If, since the command was issued, the tick count has overflowed + but the expiry time has not, then the timer must have already passed + its expiry time and should be processed immediately. */ + xProcessTimerNow = pdTRUE; + } + else + { + vListInsert( pxCurrentTimerList, &( pxTimer->xTimerListItem ) ); + } + } + + return xProcessTimerNow; +} +/*-----------------------------------------------------------*/ + +static void prvProcessReceivedCommands( void ) +{ +DaemonTaskMessage_t xMessage; +Timer_t *pxTimer; +BaseType_t xTimerListsWereSwitched, xResult; +TickType_t xTimeNow; + + while( xQueueReceive( xTimerQueue, &xMessage, tmrNO_DELAY ) != pdFAIL ) /*lint !e603 xMessage does not have to be initialised as it is passed out, not in, and it is not used unless xQueueReceive() returns pdTRUE. */ + { + #if ( INCLUDE_xTimerPendFunctionCall == 1 ) + { + /* Negative commands are pended function calls rather than timer + commands. */ + if( xMessage.xMessageID < ( BaseType_t ) 0 ) + { + const CallbackParameters_t * const pxCallback = &( xMessage.u.xCallbackParameters ); + + /* The timer uses the xCallbackParameters member to request a + callback be executed. Check the callback is not NULL. */ + configASSERT( pxCallback ); + + /* Call the function. */ + pxCallback->pxCallbackFunction( pxCallback->pvParameter1, pxCallback->ulParameter2 ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + #endif /* INCLUDE_xTimerPendFunctionCall */ + + /* Commands that are positive are timer commands rather than pended + function calls. */ + if( xMessage.xMessageID >= ( BaseType_t ) 0 ) + { + /* The messages uses the xTimerParameters member to work on a + software timer. */ + pxTimer = xMessage.u.xTimerParameters.pxTimer; + + if( listIS_CONTAINED_WITHIN( NULL, &( pxTimer->xTimerListItem ) ) == pdFALSE ) /*lint !e961. The cast is only redundant when NULL is passed into the macro. */ + { + /* The timer is in a list, remove it. */ + ( void ) uxListRemove( &( pxTimer->xTimerListItem ) ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + + traceTIMER_COMMAND_RECEIVED( pxTimer, xMessage.xMessageID, xMessage.u.xTimerParameters.xMessageValue ); + + /* In this case the xTimerListsWereSwitched parameter is not used, but + it must be present in the function call. prvSampleTimeNow() must be + called after the message is received from xTimerQueue so there is no + possibility of a higher priority task adding a message to the message + queue with a time that is ahead of the timer daemon task (because it + pre-empted the timer daemon task after the xTimeNow value was set). */ + xTimeNow = prvSampleTimeNow( &xTimerListsWereSwitched ); + + switch( xMessage.xMessageID ) + { + case tmrCOMMAND_START : + case tmrCOMMAND_START_FROM_ISR : + case tmrCOMMAND_RESET : + case tmrCOMMAND_RESET_FROM_ISR : + case tmrCOMMAND_START_DONT_TRACE : + /* Start or restart a timer. */ + pxTimer->ucStatus |= tmrSTATUS_IS_ACTIVE; + if( prvInsertTimerInActiveList( pxTimer, xMessage.u.xTimerParameters.xMessageValue + pxTimer->xTimerPeriodInTicks, xTimeNow, xMessage.u.xTimerParameters.xMessageValue ) != pdFALSE ) + { + /* The timer expired before it was added to the active + timer list. Process it now. */ + pxTimer->pxCallbackFunction( ( TimerHandle_t ) pxTimer ); + traceTIMER_EXPIRED( pxTimer ); + + if( ( pxTimer->ucStatus & tmrSTATUS_IS_AUTORELOAD ) != 0 ) + { + xResult = xTimerGenericCommand( pxTimer, tmrCOMMAND_START_DONT_TRACE, xMessage.u.xTimerParameters.xMessageValue + pxTimer->xTimerPeriodInTicks, NULL, tmrNO_DELAY ); + configASSERT( xResult ); + ( void ) xResult; + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + break; + + case tmrCOMMAND_STOP : + case tmrCOMMAND_STOP_FROM_ISR : + /* The timer has already been removed from the active list. */ + pxTimer->ucStatus &= ~tmrSTATUS_IS_ACTIVE; + break; + + case tmrCOMMAND_CHANGE_PERIOD : + case tmrCOMMAND_CHANGE_PERIOD_FROM_ISR : + pxTimer->ucStatus |= tmrSTATUS_IS_ACTIVE; + pxTimer->xTimerPeriodInTicks = xMessage.u.xTimerParameters.xMessageValue; + configASSERT( ( pxTimer->xTimerPeriodInTicks > 0 ) ); + + /* The new period does not really have a reference, and can + be longer or shorter than the old one. The command time is + therefore set to the current time, and as the period cannot + be zero the next expiry time can only be in the future, + meaning (unlike for the xTimerStart() case above) there is + no fail case that needs to be handled here. */ + ( void ) prvInsertTimerInActiveList( pxTimer, ( xTimeNow + pxTimer->xTimerPeriodInTicks ), xTimeNow, xTimeNow ); + break; + + case tmrCOMMAND_DELETE : + #if ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) + { + /* The timer has already been removed from the active list, + just free up the memory if the memory was dynamically + allocated. */ + if( ( pxTimer->ucStatus & tmrSTATUS_IS_STATICALLY_ALLOCATED ) == ( uint8_t ) 0 ) + { + vPortFree( pxTimer ); + } + else + { + pxTimer->ucStatus &= ~tmrSTATUS_IS_ACTIVE; + } + } + #else + { + /* If dynamic allocation is not enabled, the memory + could not have been dynamically allocated. So there is + no need to free the memory - just mark the timer as + "not active". */ + pxTimer->ucStatus &= ~tmrSTATUS_IS_ACTIVE; + } + #endif /* configSUPPORT_DYNAMIC_ALLOCATION */ + break; + + default : + /* Don't expect to get here. */ + break; + } + } + } +} +/*-----------------------------------------------------------*/ + +static void prvSwitchTimerLists( void ) +{ +TickType_t xNextExpireTime, xReloadTime; +List_t *pxTemp; +Timer_t *pxTimer; +BaseType_t xResult; + + /* The tick count has overflowed. The timer lists must be switched. + If there are any timers still referenced from the current timer list + then they must have expired and should be processed before the lists + are switched. */ + while( listLIST_IS_EMPTY( pxCurrentTimerList ) == pdFALSE ) + { + xNextExpireTime = listGET_ITEM_VALUE_OF_HEAD_ENTRY( pxCurrentTimerList ); + + /* Remove the timer from the list. */ + pxTimer = ( Timer_t * ) listGET_OWNER_OF_HEAD_ENTRY( pxCurrentTimerList ); /*lint !e9087 !e9079 void * is used as this macro is used with tasks and co-routines too. Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */ + ( void ) uxListRemove( &( pxTimer->xTimerListItem ) ); + traceTIMER_EXPIRED( pxTimer ); + + /* Execute its callback, then send a command to restart the timer if + it is an auto-reload timer. It cannot be restarted here as the lists + have not yet been switched. */ + pxTimer->pxCallbackFunction( ( TimerHandle_t ) pxTimer ); + + if( ( pxTimer->ucStatus & tmrSTATUS_IS_AUTORELOAD ) != 0 ) + { + /* Calculate the reload value, and if the reload value results in + the timer going into the same timer list then it has already expired + and the timer should be re-inserted into the current list so it is + processed again within this loop. Otherwise a command should be sent + to restart the timer to ensure it is only inserted into a list after + the lists have been swapped. */ + xReloadTime = ( xNextExpireTime + pxTimer->xTimerPeriodInTicks ); + if( xReloadTime > xNextExpireTime ) + { + listSET_LIST_ITEM_VALUE( &( pxTimer->xTimerListItem ), xReloadTime ); + listSET_LIST_ITEM_OWNER( &( pxTimer->xTimerListItem ), pxTimer ); + vListInsert( pxCurrentTimerList, &( pxTimer->xTimerListItem ) ); + } + else + { + xResult = xTimerGenericCommand( pxTimer, tmrCOMMAND_START_DONT_TRACE, xNextExpireTime, NULL, tmrNO_DELAY ); + configASSERT( xResult ); + ( void ) xResult; + } + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + + pxTemp = pxCurrentTimerList; + pxCurrentTimerList = pxOverflowTimerList; + pxOverflowTimerList = pxTemp; +} +/*-----------------------------------------------------------*/ + +static void prvCheckForValidListAndQueue( void ) +{ + /* Check that the list from which active timers are referenced, and the + queue used to communicate with the timer service, have been + initialised. */ + taskENTER_CRITICAL(); + { + if( xTimerQueue == NULL ) + { + vListInitialise( &xActiveTimerList1 ); + vListInitialise( &xActiveTimerList2 ); + pxCurrentTimerList = &xActiveTimerList1; + pxOverflowTimerList = &xActiveTimerList2; + + #if( configSUPPORT_STATIC_ALLOCATION == 1 ) + { + /* The timer queue is allocated statically in case + configSUPPORT_DYNAMIC_ALLOCATION is 0. */ + static StaticQueue_t xStaticTimerQueue; /*lint !e956 Ok to declare in this manner to prevent additional conditional compilation guards in other locations. */ + static uint8_t ucStaticTimerQueueStorage[ ( size_t ) configTIMER_QUEUE_LENGTH * sizeof( DaemonTaskMessage_t ) ]; /*lint !e956 Ok to declare in this manner to prevent additional conditional compilation guards in other locations. */ + + xTimerQueue = xQueueCreateStatic( ( UBaseType_t ) configTIMER_QUEUE_LENGTH, ( UBaseType_t ) sizeof( DaemonTaskMessage_t ), &( ucStaticTimerQueueStorage[ 0 ] ), &xStaticTimerQueue ); + } + #else + { + xTimerQueue = xQueueCreate( ( UBaseType_t ) configTIMER_QUEUE_LENGTH, sizeof( DaemonTaskMessage_t ) ); + } + #endif + + #if ( configQUEUE_REGISTRY_SIZE > 0 ) + { + if( xTimerQueue != NULL ) + { + vQueueAddToRegistry( xTimerQueue, "TmrQ" ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + #endif /* configQUEUE_REGISTRY_SIZE */ + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + } + taskEXIT_CRITICAL(); +} +/*-----------------------------------------------------------*/ + +BaseType_t xTimerIsTimerActive( TimerHandle_t xTimer ) +{ +BaseType_t xReturn; +Timer_t *pxTimer = xTimer; + + configASSERT( xTimer ); + + /* Is the timer in the list of active timers? */ + taskENTER_CRITICAL(); + { + if( ( pxTimer->ucStatus & tmrSTATUS_IS_ACTIVE ) == 0 ) + { + xReturn = pdFALSE; + } + else + { + xReturn = pdTRUE; + } + } + taskEXIT_CRITICAL(); + + return xReturn; +} /*lint !e818 Can't be pointer to const due to the typedef. */ +/*-----------------------------------------------------------*/ + +void *pvTimerGetTimerID( const TimerHandle_t xTimer ) +{ +Timer_t * const pxTimer = xTimer; +void *pvReturn; + + configASSERT( xTimer ); + + taskENTER_CRITICAL(); + { + pvReturn = pxTimer->pvTimerID; + } + taskEXIT_CRITICAL(); + + return pvReturn; +} +/*-----------------------------------------------------------*/ + +void vTimerSetTimerID( TimerHandle_t xTimer, void *pvNewID ) +{ +Timer_t * const pxTimer = xTimer; + + configASSERT( xTimer ); + + taskENTER_CRITICAL(); + { + pxTimer->pvTimerID = pvNewID; + } + taskEXIT_CRITICAL(); +} +/*-----------------------------------------------------------*/ + +#if( INCLUDE_xTimerPendFunctionCall == 1 ) + + BaseType_t xTimerPendFunctionCallFromISR( PendedFunction_t xFunctionToPend, void *pvParameter1, uint32_t ulParameter2, BaseType_t *pxHigherPriorityTaskWoken ) + { + DaemonTaskMessage_t xMessage; + BaseType_t xReturn; + + /* Complete the message with the function parameters and post it to the + daemon task. */ + xMessage.xMessageID = tmrCOMMAND_EXECUTE_CALLBACK_FROM_ISR; + xMessage.u.xCallbackParameters.pxCallbackFunction = xFunctionToPend; + xMessage.u.xCallbackParameters.pvParameter1 = pvParameter1; + xMessage.u.xCallbackParameters.ulParameter2 = ulParameter2; + + xReturn = xQueueSendFromISR( xTimerQueue, &xMessage, pxHigherPriorityTaskWoken ); + + tracePEND_FUNC_CALL_FROM_ISR( xFunctionToPend, pvParameter1, ulParameter2, xReturn ); + + return xReturn; + } + +#endif /* INCLUDE_xTimerPendFunctionCall */ +/*-----------------------------------------------------------*/ + +#if( INCLUDE_xTimerPendFunctionCall == 1 ) + + BaseType_t xTimerPendFunctionCall( PendedFunction_t xFunctionToPend, void *pvParameter1, uint32_t ulParameter2, TickType_t xTicksToWait ) + { + DaemonTaskMessage_t xMessage; + BaseType_t xReturn; + + /* This function can only be called after a timer has been created or + after the scheduler has been started because, until then, the timer + queue does not exist. */ + configASSERT( xTimerQueue ); + + /* Complete the message with the function parameters and post it to the + daemon task. */ + xMessage.xMessageID = tmrCOMMAND_EXECUTE_CALLBACK; + xMessage.u.xCallbackParameters.pxCallbackFunction = xFunctionToPend; + xMessage.u.xCallbackParameters.pvParameter1 = pvParameter1; + xMessage.u.xCallbackParameters.ulParameter2 = ulParameter2; + + xReturn = xQueueSendToBack( xTimerQueue, &xMessage, xTicksToWait ); + + tracePEND_FUNC_CALL( xFunctionToPend, pvParameter1, ulParameter2, xReturn ); + + return xReturn; + } + +#endif /* INCLUDE_xTimerPendFunctionCall */ +/*-----------------------------------------------------------*/ + +#if ( configUSE_TRACE_FACILITY == 1 ) + + UBaseType_t uxTimerGetTimerNumber( TimerHandle_t xTimer ) + { + return ( ( Timer_t * ) xTimer )->uxTimerNumber; + } + +#endif /* configUSE_TRACE_FACILITY */ +/*-----------------------------------------------------------*/ + +#if ( configUSE_TRACE_FACILITY == 1 ) + + void vTimerSetTimerNumber( TimerHandle_t xTimer, UBaseType_t uxTimerNumber ) + { + ( ( Timer_t * ) xTimer )->uxTimerNumber = uxTimerNumber; + } + +#endif /* configUSE_TRACE_FACILITY */ +/*-----------------------------------------------------------*/ + +/* This entire source file will be skipped if the application is not configured +to include software timer functionality. If you want to include software timer +functionality then ensure configUSE_TIMERS is set to 1 in FreeRTOSConfig.h. */ +#endif /* configUSE_TIMERS == 1 */ + + + diff --git a/firmware/STM32G070RBTX_FLASH.ld b/firmware/STM32G070RBTX_FLASH.ld new file mode 100644 index 0000000..0ea9ffa --- /dev/null +++ b/firmware/STM32G070RBTX_FLASH.ld @@ -0,0 +1,185 @@ +/* +****************************************************************************** +** +** @file : LinkerScript.ld +** +** @author : Auto-generated by STM32CubeIDE +** +** @brief : Linker script for STM32G070RBTx Device from STM32G0 series +** 128Kbytes FLASH +** 36Kbytes RAM +** +** Set heap size, stack size and stack location according +** to application requirements. +** +** Set memory bank area and size if external memory is used +** +** Target : STMicroelectronics STM32 +** +** Distribution: The file is distributed as is, without any warranty +** of any kind. +** +****************************************************************************** +** @attention +** +** Copyright (c) 2021 STMicroelectronics. +** All rights reserved. +** +** This software is licensed under terms that can be found in the LICENSE file +** in the root directory of this software component. +** If no LICENSE file comes with this software, it is provided AS-IS. +** +****************************************************************************** +*/ + +/* Entry Point */ +ENTRY(Reset_Handler) + +/* Highest address of the user mode stack */ +_estack = ORIGIN(RAM) + LENGTH(RAM); /* end of "RAM" Ram type memory */ + +_Min_Heap_Size = 0x200 ; /* required amount of heap */ +_Min_Stack_Size = 0x400 ; /* required amount of stack */ + +/* Memories definition */ +MEMORY +{ + RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 36K + FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 128K +} + +/* Sections */ +SECTIONS +{ + /* The startup code into "FLASH" Rom type memory */ + .isr_vector : + { + . = ALIGN(4); + KEEP(*(.isr_vector)) /* Startup code */ + . = ALIGN(4); + } >FLASH + + /* The program code and other data into "FLASH" Rom type memory */ + .text : + { + . = ALIGN(4); + *(.text) /* .text sections (code) */ + *(.text*) /* .text* sections (code) */ + *(.glue_7) /* glue arm to thumb code */ + *(.glue_7t) /* glue thumb to arm code */ + *(.eh_frame) + + KEEP (*(.init)) + KEEP (*(.fini)) + + . = ALIGN(4); + _etext = .; /* define a global symbols at end of code */ + } >FLASH + + /* Constant data into "FLASH" Rom type memory */ + .rodata : + { + . = ALIGN(4); + *(.rodata) /* .rodata sections (constants, strings, etc.) */ + *(.rodata*) /* .rodata* sections (constants, strings, etc.) */ + . = ALIGN(4); + } >FLASH + + .ARM.extab : { + . = ALIGN(4); + *(.ARM.extab* .gnu.linkonce.armextab.*) + . = ALIGN(4); + } >FLASH + + .ARM : { + . = ALIGN(4); + __exidx_start = .; + *(.ARM.exidx*) + __exidx_end = .; + . = ALIGN(4); + } >FLASH + + .preinit_array : + { + . = ALIGN(4); + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP (*(.preinit_array*)) + PROVIDE_HIDDEN (__preinit_array_end = .); + . = ALIGN(4); + } >FLASH + + .init_array : + { + . = ALIGN(4); + PROVIDE_HIDDEN (__init_array_start = .); + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array*)) + PROVIDE_HIDDEN (__init_array_end = .); + . = ALIGN(4); + } >FLASH + + .fini_array : + { + . = ALIGN(4); + PROVIDE_HIDDEN (__fini_array_start = .); + KEEP (*(SORT(.fini_array.*))) + KEEP (*(.fini_array*)) + PROVIDE_HIDDEN (__fini_array_end = .); + . = ALIGN(4); + } >FLASH + + /* Used by the startup to initialize data */ + _sidata = LOADADDR(.data); + + /* Initialized data sections into "RAM" Ram type memory */ + .data : + { + . = ALIGN(4); + _sdata = .; /* create a global symbol at data start */ + *(.data) /* .data sections */ + *(.data*) /* .data* sections */ + *(.RamFunc) /* .RamFunc sections */ + *(.RamFunc*) /* .RamFunc* sections */ + + . = ALIGN(4); + _edata = .; /* define a global symbol at data end */ + + } >RAM AT> FLASH + + /* Uninitialized data section into "RAM" Ram type memory */ + . = ALIGN(4); + .bss : + { + /* This is used by the startup in order to initialize the .bss section */ + _sbss = .; /* define a global symbol at bss start */ + __bss_start__ = _sbss; + *(.bss) + *(.bss*) + *(COMMON) + + . = ALIGN(4); + _ebss = .; /* define a global symbol at bss end */ + __bss_end__ = _ebss; + } >RAM + + /* User_heap_stack section, used to check that there is enough "RAM" Ram type memory left */ + ._user_heap_stack : + { + . = ALIGN(8); + PROVIDE ( end = . ); + PROVIDE ( _end = . ); + . = . + _Min_Heap_Size; + . = . + _Min_Stack_Size; + . = ALIGN(8); + } >RAM + + /* Remove information from the compiler libraries */ + /DISCARD/ : + { + libc.a ( * ) + libm.a ( * ) + libgcc.a ( * ) + } + + .ARM.attributes 0 : { *(.ARM.attributes) } +} diff --git a/kicad/bom/ibom.html b/kicad/bom/ibom.html new file mode 100644 index 0000000..4b52aeb --- /dev/null +++ b/kicad/bom/ibom.html @@ -0,0 +1,4345 @@ + + + + + + + Interactive BOM for KiCAD + + + + + + +
+
+
+ +
+ + + +
+
+ + + +
+
+ + + +
+ + +
+
+ + + + + + + + + + + +
+ Title + + Revision +
+ Company + + Date +
+
+
+
+
+
+ + +
+ +
+
+
+ + + + + +
+
+
+
+
+ + + + +
+
+
+
+ + + + +
+
+
+
+
+ + + + diff --git a/kicad/filadry2-cache.lib b/kicad/filadry2-cache.lib new file mode 100644 index 0000000..01972a8 --- /dev/null +++ b/kicad/filadry2-cache.lib @@ -0,0 +1,497 @@ +EESchema-LIBRARY Version 2.4 +#encoding utf-8 +# +# Connector_Generic_Conn_01x04 +# +DEF Connector_Generic_Conn_01x04 J 0 40 Y N 1 F N +F0 "J" 0 200 50 H V C CNN +F1 "Connector_Generic_Conn_01x04" 0 -300 50 H V C CNN +F2 "" 0 0 50 H I C CNN +F3 "" 0 0 50 H I C CNN +$FPLIST + Connector*:*_1x??_* +$ENDFPLIST +DRAW +S -50 -195 0 -205 1 1 6 N +S -50 -95 0 -105 1 1 6 N +S -50 5 0 -5 1 1 6 N +S -50 105 0 95 1 1 6 N +S -50 150 50 -250 1 1 10 f +X Pin_1 1 -200 100 150 R 50 50 1 1 P +X Pin_2 2 -200 0 150 R 50 50 1 1 P +X Pin_3 3 -200 -100 150 R 50 50 1 1 P +X Pin_4 4 -200 -200 150 R 50 50 1 1 P +ENDDRAW +ENDDEF +# +# Connector_Generic_Conn_01x08 +# +DEF Connector_Generic_Conn_01x08 J 0 40 Y N 1 F N +F0 "J" 0 400 50 H V C CNN +F1 "Connector_Generic_Conn_01x08" 0 -500 50 H V C CNN +F2 "" 0 0 50 H I C CNN +F3 "" 0 0 50 H I C CNN +$FPLIST + Connector*:*_1x??_* +$ENDFPLIST +DRAW +S -50 -395 0 -405 1 1 6 N +S -50 -295 0 -305 1 1 6 N +S -50 -195 0 -205 1 1 6 N +S -50 -95 0 -105 1 1 6 N +S -50 5 0 -5 1 1 6 N +S -50 105 0 95 1 1 6 N +S -50 205 0 195 1 1 6 N +S -50 305 0 295 1 1 6 N +S -50 350 50 -450 1 1 10 f +X Pin_1 1 -200 300 150 R 50 50 1 1 P +X Pin_2 2 -200 200 150 R 50 50 1 1 P +X Pin_3 3 -200 100 150 R 50 50 1 1 P +X Pin_4 4 -200 0 150 R 50 50 1 1 P +X Pin_5 5 -200 -100 150 R 50 50 1 1 P +X Pin_6 6 -200 -200 150 R 50 50 1 1 P +X Pin_7 7 -200 -300 150 R 50 50 1 1 P +X Pin_8 8 -200 -400 150 R 50 50 1 1 P +ENDDRAW +ENDDEF +# +# Connector_Generic_Conn_02x07_Odd_Even +# +DEF Connector_Generic_Conn_02x07_Odd_Even J 0 40 Y N 1 F N +F0 "J" 50 400 50 H V C CNN +F1 "Connector_Generic_Conn_02x07_Odd_Even" 50 -400 50 H V C CNN +F2 "" 0 0 50 H I C CNN +F3 "" 0 0 50 H I C CNN +$FPLIST + Connector*:*_2x??_* +$ENDFPLIST +DRAW +S -50 -295 0 -305 1 1 6 N +S -50 -195 0 -205 1 1 6 N +S -50 -95 0 -105 1 1 6 N +S -50 5 0 -5 1 1 6 N +S -50 105 0 95 1 1 6 N +S -50 205 0 195 1 1 6 N +S -50 305 0 295 1 1 6 N +S -50 350 150 -350 1 1 10 f +S 150 -295 100 -305 1 1 6 N +S 150 -195 100 -205 1 1 6 N +S 150 -95 100 -105 1 1 6 N +S 150 5 100 -5 1 1 6 N +S 150 105 100 95 1 1 6 N +S 150 205 100 195 1 1 6 N +S 150 305 100 295 1 1 6 N +X Pin_1 1 -200 300 150 R 50 50 1 1 P +X Pin_10 10 300 -100 150 L 50 50 1 1 P +X Pin_11 11 -200 -200 150 R 50 50 1 1 P +X Pin_12 12 300 -200 150 L 50 50 1 1 P +X Pin_13 13 -200 -300 150 R 50 50 1 1 P +X Pin_14 14 300 -300 150 L 50 50 1 1 P +X Pin_2 2 300 300 150 L 50 50 1 1 P +X Pin_3 3 -200 200 150 R 50 50 1 1 P +X Pin_4 4 300 200 150 L 50 50 1 1 P +X Pin_5 5 -200 100 150 R 50 50 1 1 P +X Pin_6 6 300 100 150 L 50 50 1 1 P +X Pin_7 7 -200 0 150 R 50 50 1 1 P +X Pin_8 8 300 0 150 L 50 50 1 1 P +X Pin_9 9 -200 -100 150 R 50 50 1 1 P +ENDDRAW +ENDDEF +# +# Connector_Screw_Terminal_01x02 +# +DEF Connector_Screw_Terminal_01x02 J 0 40 Y N 1 F N +F0 "J" 0 100 50 H V C CNN +F1 "Connector_Screw_Terminal_01x02" 0 -200 50 H V C CNN +F2 "" 0 0 50 H I C CNN +F3 "" 0 0 50 H I C CNN +$FPLIST + TerminalBlock*:* +$ENDFPLIST +DRAW +C 0 -100 25 1 1 6 N +C 0 0 25 1 1 6 N +S -50 50 50 -150 1 1 10 f +P 2 1 1 6 -21 -87 13 -120 N +P 2 1 1 6 -21 13 13 -20 N +P 2 1 1 6 -14 -80 20 -113 N +P 2 1 1 6 -14 20 20 -13 N +X Pin_1 1 -200 0 150 R 50 50 1 1 P +X Pin_2 2 -200 -100 150 R 50 50 1 1 P +ENDDRAW +ENDDEF +# +# Converter_ACDC_HLK-PM03 +# +DEF Converter_ACDC_HLK-PM03 PS 0 20 Y Y 1 F N +F0 "PS" 0 200 50 H V C CNN +F1 "Converter_ACDC_HLK-PM03" 0 -200 50 H V C CNN +F2 "Converter_ACDC:Converter_ACDC_HiLink_HLK-PMxx" 0 -300 50 H I C CNN +F3 "" 400 -350 50 H I C CNN +ALIAS HLK-PM03 HLK-PM12 HLK-PM24 +$FPLIST + Converter*ACDC*HiLink*HLK?PM* +$ENDFPLIST +DRAW +A -185 38 28 -1525 -275 0 1 0 N -210 25 -160 25 +A -135 11 29 292 1508 0 1 0 N -110 25 -160 25 +S -300 150 300 -150 0 1 10 f +P 2 0 1 0 -210 -25 -110 -25 N +P 2 0 1 0 0 -100 0 -125 N +P 2 0 1 0 0 -50 0 -75 N +P 2 0 1 0 0 0 0 -25 N +P 2 0 1 0 0 50 0 25 N +P 2 0 1 0 0 100 0 75 N +P 2 0 1 0 0 150 0 125 N +P 2 0 1 0 110 -25 210 -25 N +P 2 0 1 0 110 25 130 25 N +P 2 0 1 0 150 25 170 25 N +P 2 0 1 0 190 25 210 25 N +X AC/L 1 -400 100 100 R 50 50 1 1 W +X AC/N 2 -400 -100 100 R 50 50 1 1 W +X -Vout 3 400 -100 100 L 50 50 1 1 w +X +Vout 4 400 100 100 L 50 50 1 1 w +ENDDRAW +ENDDEF +# +# Device_Buzzer +# +DEF Device_Buzzer BZ 0 1 Y N 1 F N +F0 "BZ" 150 50 50 H V L CNN +F1 "Device_Buzzer" 150 -50 50 H V L CNN +F2 "" -25 100 50 V I C CNN +F3 "" -25 100 50 V I C CNN +$FPLIST + *Buzzer* +$ENDFPLIST +DRAW +A 0 0 125 -899 899 0 1 0 N 0 -125 0 125 +P 2 0 1 0 -65 75 -45 75 N +P 2 0 1 0 -55 85 -55 65 N +P 2 0 1 0 0 125 0 -125 N +X - 1 -100 100 100 R 50 50 1 1 P +X + 2 -100 -100 100 R 50 50 1 1 P +ENDDRAW +ENDDEF +# +# Device_C_Small +# +DEF Device_C_Small C 0 10 N N 1 F N +F0 "C" 10 70 50 H V L CNN +F1 "Device_C_Small" 10 -80 50 H V L CNN +F2 "" 0 0 50 H I C CNN +F3 "" 0 0 50 H I C CNN +$FPLIST + C_* +$ENDFPLIST +DRAW +P 2 0 1 13 -60 -20 60 -20 N +P 2 0 1 12 -60 20 60 20 N +X ~ 1 0 100 80 D 50 50 1 1 P +X ~ 2 0 -100 80 U 50 50 1 1 P +ENDDRAW +ENDDEF +# +# Device_Crystal_Small +# +DEF Device_Crystal_Small Y 0 40 N N 1 F N +F0 "Y" 0 100 50 H V C CNN +F1 "Device_Crystal_Small" 0 -100 50 H V C CNN +F2 "" 0 0 50 H I C CNN +F3 "" 0 0 50 H I C CNN +$FPLIST + Crystal* +$ENDFPLIST +DRAW +S -30 -60 30 60 0 1 0 N +P 2 0 1 15 -50 -30 -50 30 N +P 2 0 1 15 50 -30 50 30 N +X 1 1 -100 0 50 R 50 50 1 1 P +X 2 2 100 0 50 L 50 50 1 1 P +ENDDRAW +ENDDEF +# +# Device_Q_NPN_BEC +# +DEF Device_Q_NPN_BEC Q 0 0 Y N 1 F N +F0 "Q" 200 50 50 H V L CNN +F1 "Device_Q_NPN_BEC" 200 -50 50 H V L CNN +F2 "" 200 100 50 H I C CNN +F3 "" 0 0 50 H I C CNN +DRAW +C 50 0 111 0 1 10 N +P 2 0 1 0 25 25 100 100 N +P 3 0 1 0 25 -25 100 -100 100 -100 N +P 3 0 1 20 25 75 25 -75 25 -75 N +P 5 0 1 0 50 -70 70 -50 90 -90 50 -70 50 -70 F +X B 1 -200 0 225 R 50 50 1 1 I +X E 2 100 -200 100 U 50 50 1 1 P +X C 3 100 200 100 D 50 50 1 1 P +ENDDRAW +ENDDEF +# +# Device_R +# +DEF Device_R R 0 0 N Y 1 F N +F0 "R" 80 0 50 V V C CNN +F1 "Device_R" 0 0 50 V V C CNN +F2 "" -70 0 50 V I C CNN +F3 "" 0 0 50 H I C CNN +$FPLIST + R_* +$ENDFPLIST +DRAW +S -40 -100 40 100 0 1 10 N +X ~ 1 0 150 50 D 50 50 1 1 P +X ~ 2 0 -150 50 U 50 50 1 1 P +ENDDRAW +ENDDEF +# +# Device_R_Small +# +DEF Device_R_Small R 0 10 N N 1 F N +F0 "R" 30 20 50 H V L CNN +F1 "Device_R_Small" 30 -40 50 H V L CNN +F2 "" 0 0 50 H I C CNN +F3 "" 0 0 50 H I C CNN +$FPLIST + R_* +$ENDFPLIST +DRAW +S -30 70 30 -70 0 1 8 N +X ~ 1 0 100 30 D 50 50 1 1 P +X ~ 2 0 -100 30 U 50 50 1 1 P +ENDDRAW +ENDDEF +# +# Isolator_LTV-814 +# +DEF Isolator_LTV-814 U 0 40 Y Y 1 F N +F0 "U" -200 200 50 H V L CNN +F1 "Isolator_LTV-814" 0 200 50 H V L CNN +F2 "Package_DIP:DIP-4_W7.62mm" -200 -200 50 H I L CIN +F3 "" 75 0 50 H I L CNN +$FPLIST + DIP*W7.62mm* +$ENDFPLIST +DRAW +C -125 -100 5 0 1 0 N +C -125 100 5 0 1 0 N +S -200 150 200 -150 0 1 10 f +P 2 0 1 0 -125 100 -125 -100 N +P 2 0 1 10 -75 -25 -25 -25 N +P 2 0 1 0 100 25 175 100 N +P 2 0 1 0 175 -100 100 -25 F +P 2 0 1 0 175 -100 200 -100 N +P 2 0 1 0 175 100 200 100 N +P 3 0 1 0 -200 100 -50 100 -50 -30 N +P 3 0 1 0 -50 -25 -50 -100 -200 -100 N +P 3 0 1 20 100 75 100 -75 100 -75 N +P 4 0 1 10 -50 -25 -75 25 -25 25 -50 -25 N +P 5 0 1 0 5 -20 55 -20 40 -25 40 -15 55 -20 N +P 5 0 1 0 5 20 55 20 40 15 40 25 55 20 N +P 5 0 1 0 120 -65 140 -45 160 -85 120 -65 120 -65 F +P 2 1 1 10 -150 25 -100 25 N +P 4 1 1 10 -125 25 -150 -25 -100 -25 -125 25 N +X ~ 1 -300 100 100 R 50 50 1 1 P +X ~ 2 -300 -100 100 R 50 50 1 1 P +X ~ 3 300 -100 100 L 50 50 1 1 P +X ~ 4 300 100 100 L 50 50 1 1 P +ENDDRAW +ENDDEF +# +# Mechanical_MountingHole +# +DEF Mechanical_MountingHole H 0 40 Y Y 1 F N +F0 "H" 0 200 50 H V C CNN +F1 "Mechanical_MountingHole" 0 125 50 H V C CNN +F2 "" 0 0 50 H I C CNN +F3 "" 0 0 50 H I C CNN +$FPLIST + MountingHole* +$ENDFPLIST +DRAW +C 0 0 50 0 1 50 N +ENDDRAW +ENDDEF +# +# Relay_SolidState_MOC3023M +# +DEF Relay_SolidState_MOC3023M U 0 20 Y Y 1 F N +F0 "U" -210 190 50 H V L CNN +F1 "Relay_SolidState_MOC3023M" 0 200 50 H V L CNN +F2 "" -200 -200 50 H I L CIN +F3 "" 0 0 50 H I L CNN +ALIAS MOC3011M MOC3012M MOC3020M MOC3021M MOC3022M MOC3023M MOC3051M MOC3052M +$FPLIST + DIP*W7.62mm* + SMDIP*W9.53mm* + DIP*W10.16mm* +$ENDFPLIST +DRAW +S -200 150 200 -150 0 1 10 f +P 2 0 1 0 -125 -25 -75 -25 N +P 2 0 1 0 60 -25 60 25 N +P 2 0 1 0 120 25 120 -25 N +P 3 0 1 0 90 -25 90 -100 200 -100 N +P 3 0 1 0 90 25 90 100 200 100 N +P 4 0 1 0 -200 100 -100 100 -100 -100 -200 -100 N +P 4 0 1 0 -100 -25 -125 25 -75 25 -100 -25 N +P 4 0 1 0 35 -25 145 -25 120 25 95 -25 N +P 4 0 1 0 145 25 35 25 60 -25 85 25 N +P 5 0 1 0 -45 -20 5 -20 -10 -25 -10 -15 5 -20 N +P 5 0 1 0 -45 20 5 20 -10 15 -10 25 5 20 N +X ~ 1 -300 100 100 R 50 50 1 1 P +X ~ 2 -300 -100 100 R 50 50 1 1 P +X NC 3 -200 0 100 R 50 50 1 1 N N +X ~ 4 300 -100 100 L 50 50 1 1 P +X NC 5 200 0 100 L 50 50 1 1 N N +X ~ 6 300 100 100 L 50 50 1 1 P +ENDDRAW +ENDDEF +# +# Triac_Thyristor_BT138-800 +# +DEF Triac_Thyristor_BT138-800 Q 0 0 Y Y 1 F N +F0 "Q" 200 75 50 H V L CNN +F1 "Triac_Thyristor_BT138-800" 200 0 50 H V L CNN +F2 "Package_TO_SOT_THT:TO-220-3_Vertical" 200 -75 50 H I L CIN +F3 "" 0 0 50 H I L CNN +ALIAS TIC206 BT138-600 BT138-800 TIC216 BT136-500 BT136-600 BT136-800 BT139-600 BTA16-600B BTA16-600BW BTA16-600C BTA16-600CW BTA16-600SW BTA16-800B BTA16-800BW BTA16-800C BTA16-800CW BTA16-800SW BTB16-600B BTB16-600BW BTB16-600C BTB16-600CW BTB16-600SW BTB16-800B BTB16-800BW BTB16-800C BTB16-800CW BTB16-800SW +$FPLIST + TO?220* +$ENDFPLIST +DRAW +P 2 0 1 8 -100 -50 100 -50 N +P 2 0 1 8 -100 50 100 50 N +P 2 0 1 0 -50 -100 -25 -50 N +P 3 0 1 8 -100 50 -50 -50 0 50 N +P 3 0 1 8 0 -50 50 50 100 -50 N +X A1 1 0 -150 100 U 50 25 1 1 P +X A2 2 0 150 100 D 50 25 1 1 P +X G 3 -150 -100 100 R 50 25 1 1 I +ENDDRAW +ENDDEF +# +# my_additions_STM32G070RBTx +# +DEF my_additions_STM32G070RBTx U 0 20 Y Y 1 F N +F0 "U" -550 1950 50 H V L CNN +F1 "my_additions_STM32G070RBTx" -325 1350 50 H V L CNN +F2 "Package_QFP:LQFP-64_10x10mm_P0.5mm" -50 -1975 50 H I R CNN +F3 "" 1800 -2600 50 H I C CNN +$FPLIST + LQFP-64*10x10mm*P0.5mm* +$ENDFPLIST +DRAW +S -550 1900 550 -1900 0 1 0 f +X PC11 1 -650 -1400 100 R 50 50 1 1 B +X PF0-OSC_IN 10 -650 1800 100 R 50 50 1 1 B +X PF1-OSC_OUT 11 -650 1700 100 R 50 50 1 1 B +X NRST 12 -650 1550 100 R 50 50 1 1 I +X PC0 13 -650 -300 100 R 50 50 1 1 B +X PC1 14 -650 -400 100 R 50 50 1 1 B +X PC2 15 -650 -500 100 R 50 50 1 1 B +X PC3 16 -650 -600 100 R 50 50 1 1 B +X PA0 17 -650 1400 100 R 50 50 1 1 B +X PA1 18 -650 1300 100 R 50 50 1 1 B +X PA2 19 -650 1200 100 R 50 50 1 1 B +X PC12 2 -650 -1500 100 R 50 50 1 1 B +X PA3 20 -650 1100 100 R 50 50 1 1 B +X PA4 21 -650 1000 100 R 50 50 1 1 B +X PA5 22 -650 900 100 R 50 50 1 1 B +X PA6 23 -650 800 100 R 50 50 1 1 B +X PA7 24 -650 700 100 R 50 50 1 1 B +X PC4 25 -650 -700 100 R 50 50 1 1 B +X PC5 26 -650 -800 100 R 50 50 1 1 B +X PB0 27 650 1400 100 L 50 50 1 1 B +X PB1 28 650 1300 100 L 50 50 1 1 B +X PB2 29 650 1200 100 L 50 50 1 1 B +X PC13 3 -650 -1600 100 R 50 50 1 1 B +X PB10 30 650 400 100 L 50 50 1 1 B +X PB11 31 650 300 100 L 50 50 1 1 B +X PB12 32 650 200 100 L 50 50 1 1 B +X PB13 33 650 100 100 L 50 50 1 1 B +X PB14 34 650 0 100 L 50 50 1 1 B +X PB15 35 650 -100 100 L 50 50 1 1 B +X PA8 36 -650 600 100 R 50 50 1 1 B +X PA9 37 -650 500 100 R 50 50 1 1 B +X PC6 38 -650 -900 100 R 50 50 1 1 B +X PC7 39 -650 -1000 100 R 50 50 1 1 B +X PC14-OSC32_IN 4 -650 -1700 100 R 50 50 1 1 B +X PD8 40 650 -1100 100 L 50 50 1 1 B +X PD9 41 650 -1200 100 L 50 50 1 1 B +X PA10 42 -650 400 100 R 50 50 1 1 B +X PA11[PA9] 43 -650 300 100 R 50 50 1 1 B +X PA12[PA10] 44 -650 200 100 R 50 50 1 1 B +X PA13-SWDIO 45 -650 100 100 R 50 50 1 1 B +X PA14-BOOT0-SWCLK 46 -650 0 100 R 50 50 1 1 B +X PA15 47 -650 -100 100 R 50 50 1 1 B +X PC8 48 -650 -1100 100 R 50 50 1 1 B +X PC9 49 -650 -1200 100 R 50 50 1 1 B +X PC15-OSC32_OUT 5 -650 -1800 100 R 50 50 1 1 B +X PD0 50 650 -300 100 L 50 50 1 1 B +X PD1 51 650 -400 100 L 50 50 1 1 B +X PD2 52 650 -500 100 L 50 50 1 1 B +X PD3 53 650 -600 100 L 50 50 1 1 B +X PD4 54 650 -700 100 L 50 50 1 1 B +X PD5 55 650 -800 100 L 50 50 1 1 B +X PD6 56 650 -900 100 L 50 50 1 1 B +X PB3 57 650 1100 100 L 50 50 1 1 B +X PB4 58 650 1000 100 L 50 50 1 1 B +X PB5 59 650 900 100 L 50 50 1 1 B +X VBAT 6 50 2000 100 D 50 50 1 1 W +X PB6 60 650 800 100 L 50 50 1 1 B +X PB7 61 650 700 100 L 50 50 1 1 B +X PB8 62 650 600 100 L 50 50 1 1 B +X PB9 63 650 500 100 L 50 50 1 1 B +X PC10 64 -650 -1300 100 R 50 50 1 1 B +X VREF+ 7 150 2000 100 D 50 50 1 1 I +X VDD 8 250 2000 100 D 50 50 1 1 W +X VSS 9 250 -2000 100 U 50 50 1 1 W +ENDDRAW +ENDDEF +# +# power_+3V3 +# +DEF power_+3V3 #PWR 0 0 Y Y 1 F P +F0 "#PWR" 0 -150 50 H I C CNN +F1 "power_+3V3" 0 140 50 H V C CNN +F2 "" 0 0 50 H I C CNN +F3 "" 0 0 50 H I C CNN +ALIAS +3.3V +DRAW +P 2 0 1 0 -30 50 0 100 N +P 2 0 1 0 0 0 0 100 N +P 2 0 1 0 0 100 30 50 N +X +3V3 1 0 0 0 U 50 50 1 1 W N +ENDDRAW +ENDDEF +# +# power_GND +# +DEF power_GND #PWR 0 0 Y Y 1 F P +F0 "#PWR" 0 -250 50 H I C CNN +F1 "power_GND" 0 -150 50 H V C CNN +F2 "" 0 0 50 H I C CNN +F3 "" 0 0 50 H I C CNN +DRAW +P 6 0 1 0 0 0 0 -50 50 -50 0 -100 -50 -50 0 -50 N +X GND 1 0 0 0 D 50 50 1 1 W N +ENDDRAW +ENDDEF +# +# power_PWR_FLAG +# +DEF power_PWR_FLAG #FLG 0 0 N N 1 F P +F0 "#FLG" 0 75 50 H I C CNN +F1 "power_PWR_FLAG" 0 150 50 H V C CNN +F2 "" 0 0 50 H I C CNN +F3 "" 0 0 50 H I C CNN +DRAW +P 6 0 1 0 0 0 0 50 -40 75 0 100 40 75 0 50 N +X pwr 1 0 0 0 U 50 50 0 0 w +ENDDRAW +ENDDEF +# +#End Library diff --git a/kicad/filadry2.kicad_pcb b/kicad/filadry2.kicad_pcb new file mode 100644 index 0000000..2d30890 --- /dev/null +++ b/kicad/filadry2.kicad_pcb @@ -0,0 +1,7366 @@ +(kicad_pcb (version 20211014) (generator pcbnew) + + (general + (thickness 1.6) + ) + + (paper "A4") + (layers + (0 "F.Cu" signal) + (31 "B.Cu" signal) + (32 "B.Adhes" user "B.Adhesive") + (33 "F.Adhes" user "F.Adhesive") + (34 "B.Paste" user) + (35 "F.Paste" user) + (36 "B.SilkS" user "B.Silkscreen") + (37 "F.SilkS" user "F.Silkscreen") + (38 "B.Mask" user) + (39 "F.Mask" user) + (40 "Dwgs.User" user "User.Drawings") + (41 "Cmts.User" user "User.Comments") + (42 "Eco1.User" user "User.Eco1") + (43 "Eco2.User" user "User.Eco2") + (44 "Edge.Cuts" user) + (45 "Margin" user) + (46 "B.CrtYd" user "B.Courtyard") + (47 "F.CrtYd" user "F.Courtyard") + (48 "B.Fab" user) + (49 "F.Fab" user) + ) + + (setup + (pad_to_mask_clearance 0) + (pcbplotparams + (layerselection 0x00010fc_ffffffff) + (disableapertmacros false) + (usegerberextensions false) + (usegerberattributes true) + (usegerberadvancedattributes true) + (creategerberjobfile true) + (svguseinch false) + (svgprecision 6) + (excludeedgelayer true) + (plotframeref false) + (viasonmask false) + (mode 1) + (useauxorigin false) + (hpglpennumber 1) + (hpglpenspeed 20) + (hpglpendiameter 15.000000) + (dxfpolygonmode true) + (dxfimperialunits true) + (dxfusepcbnewfont true) + (psnegative false) + (psa4output false) + (plotreference true) + (plotvalue true) + (plotinvisibletext false) + (sketchpadsonfab false) + (subtractmaskfromsilk false) + (outputformat 1) + (mirror false) + (drillshape 0) + (scaleselection 1) + (outputdirectory "gerber/") + ) + ) + + (net 0 "") + (net 1 "Net-(BZ1-Pad2)") + (net 2 "+3V3") + (net 3 "GND") + (net 4 "Net-(C1-Pad1)") + (net 5 "Net-(C2-Pad1)") + (net 6 "NRST") + (net 7 "Net-(J1-Pad4)") + (net 8 "Net-(J1-Pad3)") + (net 9 "KEY_DN") + (net 10 "KEY_OK") + (net 11 "KEY_UP") + (net 12 "Net-(J2-Pad5)") + (net 13 "Net-(J2-Pad4)") + (net 14 "Net-(J2-Pad3)") + (net 15 "AC_L") + (net 16 "Net-(J3-Pad1)") + (net 17 "Net-(J5-Pad14)") + (net 18 "Net-(J5-Pad13)") + (net 19 "Net-(J5-Pad12)") + (net 20 "Net-(J5-Pad10)") + (net 21 "Net-(J5-Pad9)") + (net 22 "Net-(J5-Pad8)") + (net 23 "Net-(J5-Pad6)") + (net 24 "Net-(J5-Pad4)") + (net 25 "Net-(J5-Pad2)") + (net 26 "Net-(J5-Pad1)") + (net 27 "AC_N") + (net 28 "Net-(Q1-Pad1)") + (net 29 "Net-(Q2-Pad3)") + (net 30 "Net-(Q3-Pad3)") + (net 31 "Buzzer") + (net 32 "Net-(R2-Pad1)") + (net 33 "BME_SCL") + (net 34 "BME_SDA") + (net 35 "OLED_SCL") + (net 36 "OLED_SDA") + (net 37 "Gate_Heater") + (net 38 "Net-(R7-Pad1)") + (net 39 "Gate_Fan") + (net 40 "Net-(R8-Pad1)") + (net 41 "ZeroCross") + (net 42 "Net-(R10-Pad2)") + (net 43 "Net-(R10-Pad1)") + (net 44 "Net-(R11-Pad2)") + (net 45 "Net-(R11-Pad1)") + (net 46 "Net-(R12-Pad1)") + (net 47 "Net-(R13-Pad1)") + (net 48 "SWDIO") + (net 49 "SWCLK") + (net 50 "Net-(U1-Pad64)") + (net 51 "Net-(U1-Pad61)") + (net 52 "Net-(U1-Pad60)") + (net 53 "Net-(U1-Pad57)") + (net 54 "Net-(U1-Pad56)") + (net 55 "Net-(U1-Pad55)") + (net 56 "Net-(U1-Pad54)") + (net 57 "Net-(U1-Pad53)") + (net 58 "Net-(U1-Pad51)") + (net 59 "Net-(U1-Pad50)") + (net 60 "Net-(U1-Pad49)") + (net 61 "Net-(U1-Pad48)") + (net 62 "Net-(U1-Pad47)") + (net 63 "Net-(U1-Pad44)") + (net 64 "Net-(U1-Pad43)") + (net 65 "Net-(U1-Pad42)") + (net 66 "Net-(U1-Pad41)") + (net 67 "Net-(U1-Pad40)") + (net 68 "Net-(U1-Pad39)") + (net 69 "Net-(U1-Pad38)") + (net 70 "Net-(U1-Pad37)") + (net 71 "Net-(U1-Pad36)") + (net 72 "Net-(U1-Pad35)") + (net 73 "Net-(U1-Pad34)") + (net 74 "Net-(U1-Pad33)") + (net 75 "Net-(U1-Pad32)") + (net 76 "Net-(U1-Pad26)") + (net 77 "Net-(U1-Pad25)") + (net 78 "Net-(U1-Pad23)") + (net 79 "Net-(U1-Pad22)") + (net 80 "Net-(U1-Pad21)") + (net 81 "Net-(U1-Pad20)") + (net 82 "Net-(U1-Pad19)") + (net 83 "Net-(U1-Pad18)") + (net 84 "Net-(U1-Pad17)") + (net 85 "Net-(U1-Pad16)") + (net 86 "Net-(U1-Pad15)") + (net 87 "Net-(U1-Pad14)") + (net 88 "Net-(U1-Pad13)") + (net 89 "Net-(U1-Pad5)") + (net 90 "Net-(U1-Pad4)") + (net 91 "Net-(U1-Pad3)") + (net 92 "Net-(U1-Pad2)") + (net 93 "Net-(U1-Pad1)") + (net 94 "Net-(U3-Pad3)") + (net 95 "Net-(U3-Pad5)") + (net 96 "Net-(U4-Pad3)") + (net 97 "Net-(U4-Pad5)") + (net 98 "Net-(J4-Pad2)") + + (footprint "Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical" (layer "F.Cu") + (tedit 59FED5CC) (tstamp 00000000-0000-0000-0000-000061c50984) + (at 73.5076 80.5688 128) + (descr "Through hole straight pin header, 1x04, 2.54mm pitch, single row") + (tags "Through hole pin header THT 1x04 2.54mm single row") + (path "/00000000-0000-0000-0000-000061d5dac8") + (attr through_hole) + (fp_text reference "J1" (at -0.323948 -2.638342 218) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp d3267fc1-ba64-42a2-bd6b-590e7db04745) + ) + (fp_text value "BME280" (at 0 9.95 128) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 9ad4442c-995e-4288-b46a-1af3fcc824b7) + ) + (fp_text user "${REFERENCE}" (at 0 3.81 38) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 2c61b25f-b098-465b-869c-97e24dad512c) + ) + (fp_line (start -1.33 -1.33) (end 0 -1.33) (layer "F.SilkS") (width 0.12) (tstamp 0a23c61d-9479-4870-a713-c96227a10ec9)) + (fp_line (start 1.33 1.27) (end 1.33 8.95) (layer "F.SilkS") (width 0.12) (tstamp 94e45e5b-a0b4-4cbb-8e0b-8256c5a8f453)) + (fp_line (start -1.33 1.27) (end 1.33 1.27) (layer "F.SilkS") (width 0.12) (tstamp 9d484b93-b205-4287-83f7-3bc3eb4e07c9)) + (fp_line (start -1.33 1.27) (end -1.33 8.95) (layer "F.SilkS") (width 0.12) (tstamp c51bca3a-1f85-4d63-a9d9-4ff8d48252aa)) + (fp_line (start -1.33 0) (end -1.33 -1.33) (layer "F.SilkS") (width 0.12) (tstamp ebbf1c41-d49e-4e78-8a1d-ff83a26dac40)) + (fp_line (start -1.33 8.95) (end 1.33 8.95) (layer "F.SilkS") (width 0.12) (tstamp f06060bb-560c-45df-801f-1634cda80db0)) + (fp_line (start -1.8 9.4) (end 1.8 9.4) (layer "F.CrtYd") (width 0.05) (tstamp 1f601df5-52cb-4372-95ff-ca0ad4b7d829)) + (fp_line (start 1.8 9.4) (end 1.8 -1.8) (layer "F.CrtYd") (width 0.05) (tstamp 201ab50c-3e0b-4078-9cc6-bb50a2dfaf3d)) + (fp_line (start 1.8 -1.8) (end -1.8 -1.8) (layer "F.CrtYd") (width 0.05) (tstamp 728ea632-9a88-4984-9fcf-cfb9b5b2cc80)) + (fp_line (start -1.8 -1.8) (end -1.8 9.4) (layer "F.CrtYd") (width 0.05) (tstamp f25d7314-aae0-4146-b6bc-023ecbc68898)) + (fp_line (start -1.27 8.89) (end -1.27 -0.635) (layer "F.Fab") (width 0.1) (tstamp 2cddc268-4ebf-457c-aed8-c47c3c1d6ec5)) + (fp_line (start -0.635 -1.27) (end 1.27 -1.27) (layer "F.Fab") (width 0.1) (tstamp 39ae6725-813f-4555-be10-dcbdc0fa23c7)) + (fp_line (start 1.27 8.89) (end -1.27 8.89) (layer "F.Fab") (width 0.1) (tstamp 52d8fbef-17d4-411b-81ba-b8ee9493a081)) + (fp_line (start -1.27 -0.635) (end -0.635 -1.27) (layer "F.Fab") (width 0.1) (tstamp 58bb02a7-4305-4662-9dc5-5d58e7857737)) + (fp_line (start 1.27 -1.27) (end 1.27 8.89) (layer "F.Fab") (width 0.1) (tstamp 96bfb76b-e1f1-4f24-ae77-eaae01612d81)) + (pad "1" thru_hole rect locked (at 0 0 128) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 2 "+3V3") (tstamp f1f9f459-1044-4c5c-8244-ed47640aeada)) + (pad "2" thru_hole oval locked (at 0 2.54 128) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 3 "GND") (tstamp 5bc24963-19b5-4120-8cc6-cbc5c6e99a6d)) + (pad "3" thru_hole oval locked (at 0 5.08 128) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 8 "Net-(J1-Pad3)") (tstamp 9040d812-7766-41fd-82a1-206b24a295a6)) + (pad "4" thru_hole oval locked (at 0 7.62 128) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 7 "Net-(J1-Pad4)") (tstamp 86009af2-0eab-4f41-bafe-55307af84a1a)) + (model "${KISYS3DMOD}/Connector_PinHeader_2.54mm.3dshapes/PinHeader_1x04_P2.54mm_Vertical.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Connector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_Vertical" (layer "F.Cu") + (tedit 59FED5CC) (tstamp 00000000-0000-0000-0000-000061c509a0) + (at 86.9188 44.4246 45) + (descr "Through hole straight pin header, 1x08, 2.54mm pitch, single row") + (tags "Through hole pin header THT 1x08 2.54mm single row") + (path "/00000000-0000-0000-0000-000061d92a4a") + (attr through_hole) + (fp_text reference "J2" (at -0.089803 20.205576 45) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 8edfbe33-17ce-4020-81df-1afb40885bef) + ) + (fp_text value "Front Panel" (at 0 20.11 45) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 8040a297-9307-47d2-9b87-204016f2da76) + ) + (fp_text user "${REFERENCE}" (at 0 8.89 135) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 8896ada3-4a55-4395-998e-ca9004e13957) + ) + (fp_line (start -1.33 19.11) (end 1.33 19.11) (layer "F.SilkS") (width 0.12) (tstamp 321b3741-0b42-4d6e-b96c-537201856c67)) + (fp_line (start -1.33 1.27) (end -1.33 19.11) (layer "F.SilkS") (width 0.12) (tstamp 5f062463-04d1-46b3-9518-208607d2c78f)) + (fp_line (start -1.33 0) (end -1.33 -1.33) (layer "F.SilkS") (width 0.12) (tstamp 62f72630-8c05-49af-b769-81addad4c1bf)) + (fp_line (start -1.33 1.27) (end 1.33 1.27) (layer "F.SilkS") (width 0.12) (tstamp 73bf160b-2c34-462f-8c7b-ac9f6c52bb86)) + (fp_line (start -1.33 -1.33) (end 0 -1.33) (layer "F.SilkS") (width 0.12) (tstamp acab8bb4-0a4c-40ef-a116-fd0fa89ae6f2)) + (fp_line (start 1.33 1.27) (end 1.33 19.11) (layer "F.SilkS") (width 0.12) (tstamp d58c11e6-db34-4c4f-a676-3c738d348b21)) + (fp_line (start 1.8 19.55) (end 1.8 -1.8) (layer "F.CrtYd") (width 0.05) (tstamp 130951e0-4cbf-4a47-9d97-68af59f73c15)) + (fp_line (start -1.8 -1.8) (end -1.8 19.55) (layer "F.CrtYd") (width 0.05) (tstamp 84fdc0ea-0fa0-4ded-af95-8a56165b819f)) + (fp_line (start 1.8 -1.8) (end -1.8 -1.8) (layer "F.CrtYd") (width 0.05) (tstamp e7a954a6-2d94-4922-bd98-5b9e5fb21ad3)) + (fp_line (start -1.8 19.55) (end 1.8 19.55) (layer "F.CrtYd") (width 0.05) (tstamp e9070e15-7c44-4e02-9537-7a8c378b62aa)) + (fp_line (start 1.27 -1.27) (end 1.27 19.05) (layer "F.Fab") (width 0.1) (tstamp 3842eb55-850a-4714-9fd5-18050be51f22)) + (fp_line (start -1.27 -0.635) (end -0.635 -1.27) (layer "F.Fab") (width 0.1) (tstamp 4480b264-91b1-4809-ae3d-6e16ce6f7f22)) + (fp_line (start -1.27 19.05) (end -1.27 -0.635) (layer "F.Fab") (width 0.1) (tstamp 598cd177-e2a6-4cf2-ab4a-dd99f6cf3695)) + (fp_line (start 1.27 19.05) (end -1.27 19.05) (layer "F.Fab") (width 0.1) (tstamp 8110bbfc-0be0-49f4-a121-69f3a078f5c8)) + (fp_line (start -0.635 -1.27) (end 1.27 -1.27) (layer "F.Fab") (width 0.1) (tstamp fb79787c-0f4c-49d4-9ae8-bf458fd3f314)) + (pad "1" thru_hole rect locked (at 0 0 45) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 2 "+3V3") (tstamp 5f4a6da0-8691-452c-947d-57319d93f461)) + (pad "2" thru_hole oval locked (at 0 2.54 45) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 3 "GND") (tstamp 1c27e0fa-0c99-4ab4-829e-fdca49d58b25)) + (pad "3" thru_hole oval locked (at 0 5.08 45) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 14 "Net-(J2-Pad3)") (tstamp 6b73ec16-0899-412a-8479-8ea41603760a)) + (pad "4" thru_hole oval locked (at 0 7.62 45) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 13 "Net-(J2-Pad4)") (tstamp 63bfeb42-49ac-49cc-8529-976a1e0d4db8)) + (pad "5" thru_hole oval locked (at 0 10.16 45) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 12 "Net-(J2-Pad5)") (tstamp 32122330-8468-4e1d-9886-c98449562c29)) + (pad "6" thru_hole oval locked (at 0 12.7 45) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 11 "KEY_UP") (tstamp a7fb8d85-c4bf-4cfd-aa5d-df220ece48a8)) + (pad "7" thru_hole oval locked (at 0 15.24 45) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 10 "KEY_OK") (tstamp 58cde43d-802e-4a58-aea6-f46b1981fa40)) + (pad "8" thru_hole oval locked (at 0 17.78 45) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 9 "KEY_DN") (tstamp 7d5507c1-58a8-42ed-9cfc-c6d8ffd892a7)) + (model "${KISYS3DMOD}/Connector_PinHeader_2.54mm.3dshapes/PinHeader_1x08_P2.54mm_Vertical.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Connector_PinHeader_1.27mm:PinHeader_2x07_P1.27mm_Vertical_SMD" (layer "F.Cu") + (tedit 59FED6E3) (tstamp 00000000-0000-0000-0000-000061c50a45) + (at 62.992 36.2712) + (descr "surface-mounted straight pin header, 2x07, 1.27mm pitch, double rows") + (tags "Surface mounted pin header SMD 2x07 1.27mm double row") + (path "/00000000-0000-0000-0000-000061e01d46") + (attr smd) + (fp_text reference "J5" (at 0 -5.505) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp abae20d8-a14c-4317-9921-156d599c8892) + ) + (fp_text value "SWD" (at 0 5.505) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 334eb3f2-dbd0-4f46-ba30-64423b1f52af) + ) + (fp_text user "${REFERENCE}" (at 0 0 90) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 2c786ec9-3dbd-47c8-a6ce-62a4dd6abb31) + ) + (fp_line (start -1.765 -4.505) (end 1.765 -4.505) (layer "F.SilkS") (width 0.12) (tstamp 0a0318a8-8d6d-46a4-8c71-c16f9aecbdc7)) + (fp_line (start -1.765 4.44) (end -1.765 4.505) (layer "F.SilkS") (width 0.12) (tstamp 24b1d9c0-4588-4258-a519-ea01b546d28a)) + (fp_line (start 1.765 4.44) (end 1.765 4.505) (layer "F.SilkS") (width 0.12) (tstamp 37493c12-8642-4510-8b1a-7a692c547e48)) + (fp_line (start -1.765 -4.505) (end -1.765 -4.44) (layer "F.SilkS") (width 0.12) (tstamp 4a1bade3-160b-44db-8507-cee1b7ed3e10)) + (fp_line (start 1.765 -4.505) (end 1.765 -4.44) (layer "F.SilkS") (width 0.12) (tstamp a742af29-354d-46c4-93f0-5523c1285d0b)) + (fp_line (start -1.765 4.505) (end 1.765 4.505) (layer "F.SilkS") (width 0.12) (tstamp f1cabdd7-acd5-4b95-a29a-c9599b70d170)) + (fp_line (start -3.09 -4.44) (end -1.765 -4.44) (layer "F.SilkS") (width 0.12) (tstamp fad38b89-7e2c-486f-8104-27f9bbc1d8d9)) + (fp_line (start 4.3 -4.95) (end -4.3 -4.95) (layer "F.CrtYd") (width 0.05) (tstamp 207deb5d-8205-4f80-b7df-276cab0f7e26)) + (fp_line (start -4.3 4.95) (end 4.3 4.95) (layer "F.CrtYd") (width 0.05) (tstamp 9398b13a-8c50-41c5-8c0d-ea729e6c5064)) + (fp_line (start 4.3 4.95) (end 4.3 -4.95) (layer "F.CrtYd") (width 0.05) (tstamp 97b18e78-9cc1-45f9-aaf8-1300f69f822a)) + (fp_line (start -4.3 -4.95) (end -4.3 4.95) (layer "F.CrtYd") (width 0.05) (tstamp f6757adf-651a-4bc5-b268-9aecf80c868e)) + (fp_line (start -2.75 -0.2) (end -2.75 0.2) (layer "F.Fab") (width 0.1) (tstamp 00071db8-0acd-4d9b-8800-b1caff224671)) + (fp_line (start 1.705 4.445) (end -1.705 4.445) (layer "F.Fab") (width 0.1) (tstamp 00d47bdd-e423-4313-9e61-bcddfc230fde)) + (fp_line (start -1.705 -4.01) (end -1.27 -4.445) (layer "F.Fab") (width 0.1) (tstamp 03d29425-7161-43e6-b93e-b533cf2f2440)) + (fp_line (start 1.705 -0.2) (end 2.75 -0.2) (layer "F.Fab") (width 0.1) (tstamp 044056aa-bad9-4286-86c7-78bb22f9a762)) + (fp_line (start 2.75 2.34) (end 2.75 2.74) (layer "F.Fab") (width 0.1) (tstamp 08ca63e1-5a9a-4435-b625-13f9403ce4f3)) + (fp_line (start 1.705 1.07) (end 2.75 1.07) (layer "F.Fab") (width 0.1) (tstamp 0c9e375f-1047-4cc1-841b-0fa499705b22)) + (fp_line (start -2.75 1.07) (end -2.75 1.47) (layer "F.Fab") (width 0.1) (tstamp 0fc59b07-1128-4b85-a942-7d3679994126)) + (fp_line (start -2.75 -1.47) (end -2.75 -1.07) (layer "F.Fab") (width 0.1) (tstamp 11be29c7-a46d-42e0-b6ec-3320328b5c3b)) + (fp_line (start -2.75 1.47) (end -1.705 1.47) (layer "F.Fab") (width 0.1) (tstamp 3942279b-1b24-4bc4-a8f2-7abff7729e09)) + (fp_line (start 2.75 -1.47) (end 2.75 -1.07) (layer "F.Fab") (width 0.1) (tstamp 3ac252f9-a765-4329-a1ec-c91edf6a181a)) + (fp_line (start 1.705 2.34) (end 2.75 2.34) (layer "F.Fab") (width 0.1) (tstamp 3ad9786d-b7ce-4baf-b51a-687ccf20f1e3)) + (fp_line (start -2.75 2.34) (end -2.75 2.74) (layer "F.Fab") (width 0.1) (tstamp 3e5694d6-22ef-4d12-a5f2-731b53965053)) + (fp_line (start 2.75 0.2) (end 1.705 0.2) (layer "F.Fab") (width 0.1) (tstamp 43974bf2-6a13-46f3-b61a-896cf7c08c78)) + (fp_line (start 2.75 -2.74) (end 2.75 -2.34) (layer "F.Fab") (width 0.1) (tstamp 43cae593-18af-4342-9cf9-8acf96d46e3c)) + (fp_line (start 2.75 3.61) (end 2.75 4.01) (layer "F.Fab") (width 0.1) (tstamp 46422991-5260-4bd8-8a2f-4bc10942ed78)) + (fp_line (start 1.705 -4.01) (end 2.75 -4.01) (layer "F.Fab") (width 0.1) (tstamp 466a1074-4956-4a1f-b66f-beb676faae8f)) + (fp_line (start 2.75 -3.61) (end 1.705 -3.61) (layer "F.Fab") (width 0.1) (tstamp 4be942f7-a9a6-4d7e-bc29-9bc195cff82e)) + (fp_line (start -1.705 3.61) (end -2.75 3.61) (layer "F.Fab") (width 0.1) (tstamp 4e47b21b-e73e-495e-b348-c8d8ebfce1f9)) + (fp_line (start -2.75 3.61) (end -2.75 4.01) (layer "F.Fab") (width 0.1) (tstamp 512aee6b-5e2b-419a-bb2c-216210f3a5f2)) + (fp_line (start 2.75 4.01) (end 1.705 4.01) (layer "F.Fab") (width 0.1) (tstamp 58c962de-412f-4a70-9afd-ecadd18f0301)) + (fp_line (start -1.27 -4.445) (end 1.705 -4.445) (layer "F.Fab") (width 0.1) (tstamp 5a299feb-a4c4-4f41-8177-81d18a5baa67)) + (fp_line (start 1.705 3.61) (end 2.75 3.61) (layer "F.Fab") (width 0.1) (tstamp 605fc8a3-8363-4a33-87b2-3f87026bd514)) + (fp_line (start -2.75 -3.61) (end -1.705 -3.61) (layer "F.Fab") (width 0.1) (tstamp 61156b10-f244-4929-b4c2-a0b3b79b90dd)) + (fp_line (start 2.75 -4.01) (end 2.75 -3.61) (layer "F.Fab") (width 0.1) (tstamp 63178626-c266-438e-8047-44edbfe6801d)) + (fp_line (start 2.75 -1.07) (end 1.705 -1.07) (layer "F.Fab") (width 0.1) (tstamp 67836a12-aa24-43ff-bb99-51c2c0077000)) + (fp_line (start -1.705 -2.74) (end -2.75 -2.74) (layer "F.Fab") (width 0.1) (tstamp 6cec5c78-1589-4fa7-a9dc-caff2a1f33fb)) + (fp_line (start -2.75 -4.01) (end -2.75 -3.61) (layer "F.Fab") (width 0.1) (tstamp 704f98f7-8fe2-47bc-94a9-809dcbd68ea4)) + (fp_line (start -1.705 -0.2) (end -2.75 -0.2) (layer "F.Fab") (width 0.1) (tstamp 77aab5e9-26cd-476d-a3a3-394e85107ae0)) + (fp_line (start -1.705 -4.01) (end -2.75 -4.01) (layer "F.Fab") (width 0.1) (tstamp 7ac73642-4439-430e-9279-907c33816950)) + (fp_line (start -2.75 4.01) (end -1.705 4.01) (layer "F.Fab") (width 0.1) (tstamp 7ee4c230-1b99-4e47-92bd-53a3234ce631)) + (fp_line (start -1.705 4.445) (end -1.705 -4.01) (layer "F.Fab") (width 0.1) (tstamp 8004b833-b02a-4651-a478-5a6fec061a9d)) + (fp_line (start -1.705 2.34) (end -2.75 2.34) (layer "F.Fab") (width 0.1) (tstamp 87877169-9849-4485-9c9f-de7d36f582df)) + (fp_line (start -2.75 -2.74) (end -2.75 -2.34) (layer "F.Fab") (width 0.1) (tstamp 87f83528-a751-486e-8ea0-531c522abccd)) + (fp_line (start 2.75 2.74) (end 1.705 2.74) (layer "F.Fab") (width 0.1) (tstamp 88c967fe-3e21-4664-b206-e02768eeeac0)) + (fp_line (start -2.75 -2.34) (end -1.705 -2.34) (layer "F.Fab") (width 0.1) (tstamp 8a7e1a95-de71-4739-bd86-afab2652e509)) + (fp_line (start -1.705 -1.47) (end -2.75 -1.47) (layer "F.Fab") (width 0.1) (tstamp 923e2d7c-4bf6-4a3f-98d7-595f9e642798)) + (fp_line (start -2.75 -1.07) (end -1.705 -1.07) (layer "F.Fab") (width 0.1) (tstamp 95898c09-063e-46b3-a1e5-0bfa0da3345d)) + (fp_line (start -1.705 1.07) (end -2.75 1.07) (layer "F.Fab") (width 0.1) (tstamp 9e49c5ce-fe7e-48ca-8a23-15c5bc48a9e1)) + (fp_line (start -2.75 2.74) (end -1.705 2.74) (layer "F.Fab") (width 0.1) (tstamp a8f26166-a15f-4863-bcb3-5e94c0ce275e)) + (fp_line (start -2.75 0.2) (end -1.705 0.2) (layer "F.Fab") (width 0.1) (tstamp b009707b-a7a8-492a-868c-5665d5c52d63)) + (fp_line (start 1.705 -2.74) (end 2.75 -2.74) (layer "F.Fab") (width 0.1) (tstamp b12a8590-7704-49a6-b4b5-c79f42a927e7)) + (fp_line (start 2.75 1.47) (end 1.705 1.47) (layer "F.Fab") (width 0.1) (tstamp b5248b05-7802-4674-9253-3b1f6a76311f)) + (fp_line (start 1.705 -4.445) (end 1.705 4.445) (layer "F.Fab") (width 0.1) (tstamp c4b0e540-88f6-4c9a-840f-d382e687a7f5)) + (fp_line (start 2.75 -2.34) (end 1.705 -2.34) (layer "F.Fab") (width 0.1) (tstamp d08f732e-af45-4b04-b0fb-707190419780)) + (fp_line (start 2.75 -0.2) (end 2.75 0.2) (layer "F.Fab") (width 0.1) (tstamp dd74a1a7-5fde-4ff5-af56-736480098865)) + (fp_line (start 1.705 -1.47) (end 2.75 -1.47) (layer "F.Fab") (width 0.1) (tstamp df64a891-9396-4d7f-b105-c6091a07b523)) + (fp_line (start 2.75 1.07) (end 2.75 1.47) (layer "F.Fab") (width 0.1) (tstamp f684e04c-8fa7-4dae-92b2-8588724751ef)) + (pad "1" smd rect locked (at -1.95 -3.81) (size 2.4 0.74) (layers "F.Cu" "F.Paste" "F.Mask") + (net 26 "Net-(J5-Pad1)") (tstamp 15b7e5d1-e323-43c1-b94c-eec67d07c5eb)) + (pad "2" smd rect locked (at 1.95 -3.81) (size 2.4 0.74) (layers "F.Cu" "F.Paste" "F.Mask") + (net 25 "Net-(J5-Pad2)") (tstamp fec3d536-48ff-4a8b-9873-004985f5ae54)) + (pad "3" smd rect locked (at -1.95 -2.54) (size 2.4 0.74) (layers "F.Cu" "F.Paste" "F.Mask") + (net 2 "+3V3") (tstamp 8682742d-6c2f-4588-8afc-98b5f79c63c2)) + (pad "4" smd rect locked (at 1.95 -2.54) (size 2.4 0.74) (layers "F.Cu" "F.Paste" "F.Mask") + (net 24 "Net-(J5-Pad4)") (tstamp 680cba06-e111-4eae-a6ad-917dc5b64b1e)) + (pad "5" smd rect locked (at -1.95 -1.27) (size 2.4 0.74) (layers "F.Cu" "F.Paste" "F.Mask") + (net 3 "GND") (tstamp d1fba39b-21f8-48d6-90b5-d45c6c7f03ed)) + (pad "6" smd rect locked (at 1.95 -1.27) (size 2.4 0.74) (layers "F.Cu" "F.Paste" "F.Mask") + (net 23 "Net-(J5-Pad6)") (tstamp e58ff82c-3746-4ea4-ba44-c55a7a452d38)) + (pad "7" smd rect locked (at -1.95 0) (size 2.4 0.74) (layers "F.Cu" "F.Paste" "F.Mask") + (net 3 "GND") (tstamp 5d347c5c-1a0d-40ec-a995-924c7f8145de)) + (pad "8" smd rect locked (at 1.95 0) (size 2.4 0.74) (layers "F.Cu" "F.Paste" "F.Mask") + (net 22 "Net-(J5-Pad8)") (tstamp 56b4ba51-52d8-4ab6-94c5-5053a7be1e78)) + (pad "9" smd rect locked (at -1.95 1.27) (size 2.4 0.74) (layers "F.Cu" "F.Paste" "F.Mask") + (net 21 "Net-(J5-Pad9)") (tstamp baa4c20f-bb95-4c2a-b262-5489d55fda29)) + (pad "10" smd rect locked (at 1.95 1.27) (size 2.4 0.74) (layers "F.Cu" "F.Paste" "F.Mask") + (net 20 "Net-(J5-Pad10)") (tstamp 762115f3-649e-4ed0-adb5-2dd790cfc7e8)) + (pad "11" smd rect locked (at -1.95 2.54) (size 2.4 0.74) (layers "F.Cu" "F.Paste" "F.Mask") + (net 3 "GND") (tstamp 49453350-9576-4ce1-b499-a7bd11f463ff)) + (pad "12" smd rect locked (at 1.95 2.54) (size 2.4 0.74) (layers "F.Cu" "F.Paste" "F.Mask") + (net 19 "Net-(J5-Pad12)") (tstamp b29053ad-1b90-4ceb-a5cd-04e580f747dc)) + (pad "13" smd rect locked (at -1.95 3.81) (size 2.4 0.74) (layers "F.Cu" "F.Paste" "F.Mask") + (net 18 "Net-(J5-Pad13)") (tstamp 5a3a7ffe-ed0f-4101-8bd8-a07353b8ab71)) + (pad "14" smd rect locked (at 1.95 3.81) (size 2.4 0.74) (layers "F.Cu" "F.Paste" "F.Mask") + (net 17 "Net-(J5-Pad14)") (tstamp 22fa2eab-bee7-4fe0-b15c-f7d644e4ccbb)) + (model "${KISYS3DMOD}/Connector_PinHeader_1.27mm.3dshapes/PinHeader_2x07_P1.27mm_Vertical_SMD.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Package_TO_SOT_THT:TO-220-3_Vertical" (layer "F.Cu") + (tedit 5AC8BA0D) (tstamp 00000000-0000-0000-0000-000061c50ad3) + (at 55.1688 58.7756 -30) + (descr "TO-220-3, Vertical, RM 2.54mm, see https://www.vishay.com/docs/66542/to-220-1.pdf") + (tags "TO-220-3 Vertical RM 2.54mm") + (path "/00000000-0000-0000-0000-000061cae0c2") + (attr through_hole) + (fp_text reference "Q3" (at 2.54 -4.27 150) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 9abe449e-6862-44ac-a6de-759abd96ee9c) + ) + (fp_text value "BT138-800" (at 2.54 2.5 150) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp b8dee303-c2bd-406f-a54b-791ccb8eafd1) + ) + (fp_text user "${REFERENCE}" (at 2.54 -4.27 150) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp ff0cc91e-568b-4f39-aedb-be0cba4cb6ef) + ) + (fp_line (start 0.69 -3.27) (end 0.69 -1.76) (layer "F.SilkS") (width 0.12) (tstamp 1a03be15-6c83-4d89-857f-5c90be8c4dd1)) + (fp_line (start -2.58 -3.27) (end 7.66 -3.27) (layer "F.SilkS") (width 0.12) (tstamp 623c732b-5c98-4ff1-8c97-104a1a1f91e9)) + (fp_line (start 7.66 -3.27) (end 7.66 1.371) (layer "F.SilkS") (width 0.12) (tstamp 6685b73e-8993-45bb-a229-5fbfd167439b)) + (fp_line (start -2.58 -1.76) (end 7.66 -1.76) (layer "F.SilkS") (width 0.12) (tstamp 98920d05-921f-4b90-9b4b-56fa40012e20)) + (fp_line (start -2.58 -3.27) (end -2.58 1.371) (layer "F.SilkS") (width 0.12) (tstamp b3abcd5d-084d-49ba-a005-d467d8820570)) + (fp_line (start 4.391 -3.27) (end 4.391 -1.76) (layer "F.SilkS") (width 0.12) (tstamp bd850059-4c0a-4854-94d6-fca75cf0b080)) + (fp_line (start -2.58 1.371) (end 7.66 1.371) (layer "F.SilkS") (width 0.12) (tstamp fa93bafa-895b-429b-935c-54f2c4d0c602)) + (fp_line (start 7.79 -3.4) (end -2.71 -3.4) (layer "F.CrtYd") (width 0.05) (tstamp 5105c75f-5224-47d1-aa15-ed1f3b48622b)) + (fp_line (start 7.79 1.51) (end 7.79 -3.4) (layer "F.CrtYd") (width 0.05) (tstamp 8c68b0bc-22e4-40e7-b934-83347b4e6e79)) + (fp_line (start -2.71 -3.4) (end -2.71 1.51) (layer "F.CrtYd") (width 0.05) (tstamp 9d2cb05c-5bce-4942-9ce8-2f86fd981a92)) + (fp_line (start -2.71 1.51) (end 7.79 1.51) (layer "F.CrtYd") (width 0.05) (tstamp e07a02a8-5af6-448a-a8b5-6b9a09e7c811)) + (fp_line (start -2.46 -3.15) (end -2.46 1.25) (layer "F.Fab") (width 0.1) (tstamp 0210ca24-bcfe-4371-8c23-0fe7383e625e)) + (fp_line (start 7.54 1.25) (end 7.54 -3.15) (layer "F.Fab") (width 0.1) (tstamp 156b9134-152a-491a-b358-cfeba1de09e2)) + (fp_line (start -2.46 1.25) (end 7.54 1.25) (layer "F.Fab") (width 0.1) (tstamp 45d7e95b-a509-4aa5-92e6-bb18f2d40725)) + (fp_line (start -2.46 -1.88) (end 7.54 -1.88) (layer "F.Fab") (width 0.1) (tstamp 64c9db8a-8368-4865-afee-dfbb03b99d22)) + (fp_line (start 4.39 -3.15) (end 4.39 -1.88) (layer "F.Fab") (width 0.1) (tstamp 8bc19c67-d596-4daa-9ba7-38f63cac1725)) + (fp_line (start 7.54 -3.15) (end -2.46 -3.15) (layer "F.Fab") (width 0.1) (tstamp b29aa5ec-bf58-47df-b9c8-58d395c4ba8d)) + (fp_line (start 0.69 -3.15) (end 0.69 -1.88) (layer "F.Fab") (width 0.1) (tstamp e884069f-8a73-4e12-9d9a-933a9e3d40bf)) + (pad "1" thru_hole rect locked (at 0 0 330) (size 1.905 2) (drill 1.1) (layers *.Cu *.Mask) + (net 27 "AC_N") (tstamp 460e85ff-d16f-4623-ac38-62bc61908aab)) + (pad "2" thru_hole oval locked (at 2.54 0 330) (size 1.905 2) (drill 1.1) (layers *.Cu *.Mask) + (net 98 "Net-(J4-Pad2)") (tstamp e11c5449-e75e-4b5e-b637-f31c38da6c2a)) + (pad "3" thru_hole oval locked (at 5.08 0 330) (size 1.905 2) (drill 1.1) (layers *.Cu *.Mask) + (net 30 "Net-(Q3-Pad3)") (tstamp 64dabba9-4f0d-4391-901b-0b6dc8929de5)) + (model "${KISYS3DMOD}/Package_TO_SOT_THT.3dshapes/TO-220-3_Vertical.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder" (layer "F.Cu") + (tedit 5F68FEEE) (tstamp 00000000-0000-0000-0000-000061c50b5b) + (at 71.8058 73.6346 -55) + (descr "Resistor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") + (tags "resistor handsolder") + (path "/00000000-0000-0000-0000-000061cae0c8") + (attr smd) + (fp_text reference "R8" (at 0 -1.65 125) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp ea0bb50d-300b-4c3a-974b-58912ca721a4) + ) + (fp_text value "270" (at 0 1.65 125) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 620d40fe-ab40-49f1-88b3-7b75b8506d5a) + ) + (fp_text user "${REFERENCE}" (at 0 0 125) (layer "F.Fab") + (effects (font (size 0.5 0.5) (thickness 0.08))) + (tstamp d3f8e881-8da0-4921-8206-7224b7ed345b) + ) + (fp_line (start -0.227064 -0.735) (end 0.227064 -0.735) (layer "F.SilkS") (width 0.12) (tstamp 4043fd3f-ce5a-42ce-a6fa-01704b610626)) + (fp_line (start -0.227064 0.735) (end 0.227064 0.735) (layer "F.SilkS") (width 0.12) (tstamp 4d3b65dd-b796-49ac-8556-47a10a363b93)) + (fp_line (start -1.85 0.95) (end -1.85 -0.95) (layer "F.CrtYd") (width 0.05) (tstamp 80694cb1-2f10-49f5-980b-399a3a6d3f8b)) + (fp_line (start 1.85 -0.95) (end 1.85 0.95) (layer "F.CrtYd") (width 0.05) (tstamp 841fd0f0-07eb-4bc9-9eed-bb22e874556b)) + (fp_line (start -1.85 -0.95) (end 1.85 -0.95) (layer "F.CrtYd") (width 0.05) (tstamp 9354f35c-4dd8-491f-bbb2-a65bd6fd647f)) + (fp_line (start 1.85 0.95) (end -1.85 0.95) (layer "F.CrtYd") (width 0.05) (tstamp b7ecf858-0eb0-4cf3-bb2d-743cbbf325eb)) + (fp_line (start 1 0.625) (end -1 0.625) (layer "F.Fab") (width 0.1) (tstamp bf27b351-9202-478f-a2b2-0e33444de00f)) + (fp_line (start 1 -0.625) (end 1 0.625) (layer "F.Fab") (width 0.1) (tstamp d09c44c2-8727-4f26-8865-add0608c0dcc)) + (fp_line (start -1 -0.625) (end 1 -0.625) (layer "F.Fab") (width 0.1) (tstamp f073ec5a-ab30-4019-bdcb-f1c4810f37df)) + (fp_line (start -1 0.625) (end -1 -0.625) (layer "F.Fab") (width 0.1) (tstamp feb7cdd8-7b99-447b-a6ac-8ddb5abb165c)) + (pad "1" smd roundrect locked (at -1 0 305) (size 1.2 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.2083325) + (net 40 "Net-(R8-Pad1)") (tstamp 03c04db1-bd04-49a6-81b5-45029d28d919)) + (pad "2" smd roundrect locked (at 1 0 305) (size 1.2 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.2083325) + (net 39 "Gate_Fan") (tstamp 0c142d2b-5d05-4a04-8d49-edaefee2dd2c)) + (model "${KISYS3DMOD}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder" (layer "F.Cu") + (tedit 5F68FEEE) (tstamp 00000000-0000-0000-0000-000061c50b7d) + (at 54.0672 49.6824) + (descr "Resistor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") + (tags "resistor handsolder") + (path "/00000000-0000-0000-0000-000061d2dbf2") + (attr smd) + (fp_text reference "R10" (at 0 -1.65) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 73a683fe-aaf8-4263-a09e-58085ad58a4f) + ) + (fp_text value "220" (at 0 1.65) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 20dcbbec-0084-4fc8-aecc-bb246ebf7778) + ) + (fp_text user "${REFERENCE}" (at 0 0) (layer "F.Fab") + (effects (font (size 0.5 0.5) (thickness 0.08))) + (tstamp 6b55af09-3962-46a5-8b5e-b94b04af67ca) + ) + (fp_line (start -0.227064 0.735) (end 0.227064 0.735) (layer "F.SilkS") (width 0.12) (tstamp 4c2e0783-3fe9-4390-9236-b58baaf56c14)) + (fp_line (start -0.227064 -0.735) (end 0.227064 -0.735) (layer "F.SilkS") (width 0.12) (tstamp da1747b7-4c9f-436a-8851-2e70231767b1)) + (fp_line (start -1.85 0.95) (end -1.85 -0.95) (layer "F.CrtYd") (width 0.05) (tstamp 043b4fff-d83d-44e0-86bf-f74e1b44ed83)) + (fp_line (start 1.85 0.95) (end -1.85 0.95) (layer "F.CrtYd") (width 0.05) (tstamp 134f06f0-72d2-41fb-b11a-ff6fe8a30a3a)) + (fp_line (start 1.85 -0.95) (end 1.85 0.95) (layer "F.CrtYd") (width 0.05) (tstamp 3cbbcfff-35e1-4945-9f0a-054e2a4e43d7)) + (fp_line (start -1.85 -0.95) (end 1.85 -0.95) (layer "F.CrtYd") (width 0.05) (tstamp 7bd6f037-c6dc-4d42-a08a-5a4c87152204)) + (fp_line (start -1 -0.625) (end 1 -0.625) (layer "F.Fab") (width 0.1) (tstamp 20d4e317-fb5f-40eb-8f03-744e6d4d985f)) + (fp_line (start -1 0.625) (end -1 -0.625) (layer "F.Fab") (width 0.1) (tstamp 2d40207b-ca6a-4855-8a86-d01c03facf7f)) + (fp_line (start 1 -0.625) (end 1 0.625) (layer "F.Fab") (width 0.1) (tstamp 4d36d681-1262-4ada-8709-6a1a7cb3211b)) + (fp_line (start 1 0.625) (end -1 0.625) (layer "F.Fab") (width 0.1) (tstamp e9188bc2-4c85-439f-947b-71b57ba29f5a)) + (pad "1" smd roundrect locked (at -1 0) (size 1.2 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.2083325) + (net 43 "Net-(R10-Pad1)") (tstamp c630995c-7bdb-4e77-ba82-65cebeabf8db)) + (pad "2" smd roundrect locked (at 1 0) (size 1.2 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.2083325) + (net 42 "Net-(R10-Pad2)") (tstamp 17975278-5cf3-4642-9506-473946116d71)) + (model "${KISYS3DMOD}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder" (layer "F.Cu") + (tedit 5F68FEEE) (tstamp 00000000-0000-0000-0000-000061c50b8e) + (at 59.732801 73.149575 60) + (descr "Resistor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") + (tags "resistor handsolder") + (path "/00000000-0000-0000-0000-000061cae0d9") + (attr smd) + (fp_text reference "R11" (at 0 -1.65 60) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp dcb172be-2a68-4a50-bf79-973c85d407b0) + ) + (fp_text value "220" (at 0 1.65 60) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 121a9f1b-818e-45a1-8365-29bc79842443) + ) + (fp_text user "${REFERENCE}" (at 0 0 60) (layer "F.Fab") + (effects (font (size 0.5 0.5) (thickness 0.08))) + (tstamp e9ac7750-614f-4f73-a5c2-1c96540abde1) + ) + (fp_line (start -0.227064 0.735) (end 0.227064 0.735) (layer "F.SilkS") (width 0.12) (tstamp 387121c9-9165-4932-8667-f3985981ee6f)) + (fp_line (start -0.227064 -0.735) (end 0.227064 -0.735) (layer "F.SilkS") (width 0.12) (tstamp 6669a0a7-aba8-4fa8-9063-13df3cbeafaf)) + (fp_line (start 1.85 0.95) (end -1.85 0.95) (layer "F.CrtYd") (width 0.05) (tstamp 1bcc5097-d794-4ac1-b8eb-c262f7c96b49)) + (fp_line (start -1.85 0.95) (end -1.85 -0.95) (layer "F.CrtYd") (width 0.05) (tstamp 6021c2ba-d0d4-42eb-9933-19063e208ccb)) + (fp_line (start -1.85 -0.95) (end 1.85 -0.95) (layer "F.CrtYd") (width 0.05) (tstamp 912e6fa3-75e0-4fcd-b616-1382d6611cc3)) + (fp_line (start 1.85 -0.95) (end 1.85 0.95) (layer "F.CrtYd") (width 0.05) (tstamp d1b3d20c-ad7c-4319-854f-8840fcef5eb6)) + (fp_line (start 1 0.625) (end -1 0.625) (layer "F.Fab") (width 0.1) (tstamp 0bdaf055-b853-46bd-baf3-1176ddc1d04d)) + (fp_line (start -1 0.625) (end -1 -0.625) (layer "F.Fab") (width 0.1) (tstamp 5eb8c4ae-b763-42c5-94b0-4f18da239799)) + (fp_line (start 1 -0.625) (end 1 0.625) (layer "F.Fab") (width 0.1) (tstamp c28144b3-c463-4945-a5bb-ee1966214539)) + (fp_line (start -1 -0.625) (end 1 -0.625) (layer "F.Fab") (width 0.1) (tstamp d1530f44-b5b7-4287-a869-e7865c0ccdc1)) + (pad "1" smd roundrect locked (at -1 0 60) (size 1.2 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.2083325) + (net 45 "Net-(R11-Pad1)") (tstamp b599c1a6-1f8c-46dc-ae90-627f56b7e89b)) + (pad "2" smd roundrect locked (at 1 0 60) (size 1.2 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.2083325) + (net 44 "Net-(R11-Pad2)") (tstamp 7e3fe560-b38c-4df2-9da8-5481382bed3f)) + (model "${KISYS3DMOD}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder" (layer "F.Cu") + (tedit 5F68FEEE) (tstamp 00000000-0000-0000-0000-000061c50bc1) + (at 42.672 57.2008 -20) + (descr "Resistor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") + (tags "resistor handsolder") + (path "/00000000-0000-0000-0000-000061c517c6") + (attr smd) + (fp_text reference "R14" (at 3.32891 0.085821 -20) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp aacbb238-94e5-4b41-a128-758a6997ec10) + ) + (fp_text value "470" (at 0 1.65 -20) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp abeed738-ebe5-47b3-b1f6-9d6d4f4a141f) + ) + (fp_text user "${REFERENCE}" (at 0 0 -20) (layer "F.Fab") + (effects (font (size 0.5 0.5) (thickness 0.08))) + (tstamp 4ec8c970-6ac0-48d1-aecf-8469914d834c) + ) + (fp_line (start -0.227064 0.735) (end 0.227064 0.735) (layer "F.SilkS") (width 0.12) (tstamp 1facb602-c78f-440a-ad00-a54643350753)) + (fp_line (start -0.227064 -0.735) (end 0.227064 -0.735) (layer "F.SilkS") (width 0.12) (tstamp 67239da5-02bd-426c-9056-2d673feadcd2)) + (fp_line (start 1.85 0.95) (end -1.85 0.95) (layer "F.CrtYd") (width 0.05) (tstamp 0472c502-5180-41b9-8708-01b0a46d1f10)) + (fp_line (start -1.85 -0.95) (end 1.85 -0.95) (layer "F.CrtYd") (width 0.05) (tstamp 9f5267f4-363c-4865-8d68-6fe82d947c64)) + (fp_line (start 1.85 -0.95) (end 1.85 0.95) (layer "F.CrtYd") (width 0.05) (tstamp a1d7ecc9-50f9-4630-aff8-a73629050fe7)) + (fp_line (start -1.85 0.95) (end -1.85 -0.95) (layer "F.CrtYd") (width 0.05) (tstamp a58cb12b-d236-460d-8426-1347ac6d108d)) + (fp_line (start 1 0.625) (end -1 0.625) (layer "F.Fab") (width 0.1) (tstamp 0b08e5a1-f6ea-4446-a51b-2e66a14265e5)) + (fp_line (start 1 -0.625) (end 1 0.625) (layer "F.Fab") (width 0.1) (tstamp 9909e239-3043-489c-aa68-5b7b488a8309)) + (fp_line (start -1 0.625) (end -1 -0.625) (layer "F.Fab") (width 0.1) (tstamp f764909d-221d-48b6-a6d1-5cacea8a3890)) + (fp_line (start -1 -0.625) (end 1 -0.625) (layer "F.Fab") (width 0.1) (tstamp fd983ffb-b7a4-43d7-8f1f-a3d1de0cae6c)) + (pad "1" smd roundrect locked (at -1 0 340) (size 1.2 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.2083325) + (net 27 "AC_N") (tstamp 7941961d-f796-4745-94ed-5bb5dfad8a49)) + (pad "2" smd roundrect locked (at 1 0 340) (size 1.2 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.2083325) + (net 29 "Net-(Q2-Pad3)") (tstamp 96162b5c-06ef-491d-a311-883bb3169cea)) + (model "${KISYS3DMOD}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder" (layer "F.Cu") + (tedit 5F68FEEE) (tstamp 00000000-0000-0000-0000-000061c50be3) + (at 49.4952 49.6824) + (descr "Resistor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") + (tags "resistor handsolder") + (path "/00000000-0000-0000-0000-000061d2eec6") + (attr smd) + (fp_text reference "R16" (at 0 -1.65) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp d3f3ec59-c654-4948-b005-a233be34a0c9) + ) + (fp_text value "220" (at 0 1.65) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 1e13b237-8e2b-4b93-a304-31bb1437a5bd) + ) + (fp_text user "${REFERENCE}" (at 0 0) (layer "F.Fab") + (effects (font (size 0.5 0.5) (thickness 0.08))) + (tstamp 3629cedc-76a1-4f44-8dd0-5f93b4f90fbd) + ) + (fp_line (start -0.227064 -0.735) (end 0.227064 -0.735) (layer "F.SilkS") (width 0.12) (tstamp 0c2cdc36-d0ff-4357-b6a7-713b9e6351e5)) + (fp_line (start -0.227064 0.735) (end 0.227064 0.735) (layer "F.SilkS") (width 0.12) (tstamp ffd63ef7-b2f6-4ac7-a6c4-af264eb18af7)) + (fp_line (start -1.85 -0.95) (end 1.85 -0.95) (layer "F.CrtYd") (width 0.05) (tstamp ad642ddb-5099-4249-9147-00a498e7ca97)) + (fp_line (start 1.85 -0.95) (end 1.85 0.95) (layer "F.CrtYd") (width 0.05) (tstamp bf4f4cb1-e661-4ad1-9f1f-91cdf6632a72)) + (fp_line (start -1.85 0.95) (end -1.85 -0.95) (layer "F.CrtYd") (width 0.05) (tstamp d6a2f73e-87d1-4de5-a30b-35b56912e09b)) + (fp_line (start 1.85 0.95) (end -1.85 0.95) (layer "F.CrtYd") (width 0.05) (tstamp f87bd00c-eb81-4495-ade0-015af7d66eda)) + (fp_line (start 1 0.625) (end -1 0.625) (layer "F.Fab") (width 0.1) (tstamp 60c538c0-24ae-49d5-bb44-91b553d70a5c)) + (fp_line (start 1 -0.625) (end 1 0.625) (layer "F.Fab") (width 0.1) (tstamp 64176688-9285-4246-a054-b0b52e1b83d5)) + (fp_line (start -1 -0.625) (end 1 -0.625) (layer "F.Fab") (width 0.1) (tstamp 7b6e8af1-0704-4a88-93c3-4bd3d254e535)) + (fp_line (start -1 0.625) (end -1 -0.625) (layer "F.Fab") (width 0.1) (tstamp abe5d832-4a28-412f-8181-99779e9f8c9c)) + (pad "1" smd roundrect locked (at -1 0) (size 1.2 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.2083325) + (net 16 "Net-(J3-Pad1)") (tstamp 83cd4b3e-95e8-4cf0-81a3-0e072d2e2f7d)) + (pad "2" smd roundrect locked (at 1 0) (size 1.2 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.2083325) + (net 43 "Net-(R10-Pad1)") (tstamp a43fd2cc-c699-4400-81f0-81692d55ff47)) + (model "${KISYS3DMOD}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder" (layer "F.Cu") + (tedit 5F68FEEE) (tstamp 00000000-0000-0000-0000-000061c50bf4) + (at 57.462799 76.913625 60) + (descr "Resistor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") + (tags "resistor handsolder") + (path "/00000000-0000-0000-0000-000061cae0df") + (attr smd) + (fp_text reference "R17" (at 0 -1.65 60) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 3d946c75-3632-4c7b-8586-f42e889f4c95) + ) + (fp_text value "220" (at 0 1.65 60) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 401af2a4-9f02-4e5e-ae4b-f1a946c961d6) + ) + (fp_text user "${REFERENCE}" (at 0 0 60) (layer "F.Fab") + (effects (font (size 0.5 0.5) (thickness 0.08))) + (tstamp 7a016940-b664-4c39-baed-ebbf0b4c570d) + ) + (fp_line (start -0.227064 0.735) (end 0.227064 0.735) (layer "F.SilkS") (width 0.12) (tstamp 615f945f-a648-4ab8-95a4-6012074e9ad7)) + (fp_line (start -0.227064 -0.735) (end 0.227064 -0.735) (layer "F.SilkS") (width 0.12) (tstamp 73b57892-9eb6-4dac-b8c9-dc15b7f4f233)) + (fp_line (start -1.85 0.95) (end -1.85 -0.95) (layer "F.CrtYd") (width 0.05) (tstamp 0d86580f-5ca7-403b-af37-1e795dc9f0f8)) + (fp_line (start 1.85 0.95) (end -1.85 0.95) (layer "F.CrtYd") (width 0.05) (tstamp 4bdfd576-ca64-4d40-96b0-b8f038e67f01)) + (fp_line (start -1.85 -0.95) (end 1.85 -0.95) (layer "F.CrtYd") (width 0.05) (tstamp 871ec90d-cf6c-43c4-83c8-0ae213ce0713)) + (fp_line (start 1.85 -0.95) (end 1.85 0.95) (layer "F.CrtYd") (width 0.05) (tstamp 98bd1db6-8d48-43f9-a16c-ad56d7599ae3)) + (fp_line (start -1 -0.625) (end 1 -0.625) (layer "F.Fab") (width 0.1) (tstamp 5299b614-3dcc-465c-b0b5-9bca13851230)) + (fp_line (start 1 0.625) (end -1 0.625) (layer "F.Fab") (width 0.1) (tstamp 7014888a-559e-4219-bcdd-5c010a7fae54)) + (fp_line (start 1 -0.625) (end 1 0.625) (layer "F.Fab") (width 0.1) (tstamp d3601688-4eed-4670-a99b-046db06f7ecb)) + (fp_line (start -1 0.625) (end -1 -0.625) (layer "F.Fab") (width 0.1) (tstamp da1bc6e6-034b-4dc4-bb86-d5db74d1da07)) + (pad "1" smd roundrect locked (at -1 0 60) (size 1.2 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.2083325) + (net 98 "Net-(J4-Pad2)") (tstamp 18c299c2-1a03-4976-ab71-0e5ab74019da)) + (pad "2" smd roundrect locked (at 1 0 60) (size 1.2 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.2083325) + (net 45 "Net-(R11-Pad1)") (tstamp 5aa25019-fca6-47c3-b80f-1d5dfd5546b2)) + (model "${KISYS3DMOD}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder" (layer "F.Cu") + (tedit 5F68FEEE) (tstamp 00000000-0000-0000-0000-000061c50c16) + (at 74.009946 43.755319 90) + (descr "Resistor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") + (tags "resistor handsolder") + (path "/00000000-0000-0000-0000-000061e45925") + (attr smd) + (fp_text reference "R19" (at 3.267719 -0.045146 90) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 249028d7-4a4d-4d0a-94f5-4c3c34dc322b) + ) + (fp_text value "22" (at 0 1.65 90) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 79aad31c-01a9-4136-b2e3-579520609299) + ) + (fp_text user "${REFERENCE}" (at 0 0 90) (layer "F.Fab") + (effects (font (size 0.5 0.5) (thickness 0.08))) + (tstamp 0644a51e-1b21-470f-8eb2-25905351e7f6) + ) + (fp_line (start -0.227064 0.735) (end 0.227064 0.735) (layer "F.SilkS") (width 0.12) (tstamp a77a29f7-d47d-481f-b0df-1a7176195839)) + (fp_line (start -0.227064 -0.735) (end 0.227064 -0.735) (layer "F.SilkS") (width 0.12) (tstamp ed84a5bd-7037-4b37-96f4-14f31c248f17)) + (fp_line (start 1.85 -0.95) (end 1.85 0.95) (layer "F.CrtYd") (width 0.05) (tstamp 01903289-d669-41ce-99d6-f31155e82a6c)) + (fp_line (start -1.85 0.95) (end -1.85 -0.95) (layer "F.CrtYd") (width 0.05) (tstamp 5e56dc35-b397-401a-b78d-e18a1f089ba2)) + (fp_line (start 1.85 0.95) (end -1.85 0.95) (layer "F.CrtYd") (width 0.05) (tstamp 7f25ddbf-3ace-47ae-9c16-593878f02be5)) + (fp_line (start -1.85 -0.95) (end 1.85 -0.95) (layer "F.CrtYd") (width 0.05) (tstamp e348300c-ba35-4d42-a00b-019eb00f7174)) + (fp_line (start -1 -0.625) (end 1 -0.625) (layer "F.Fab") (width 0.1) (tstamp 0a1f3441-8142-4c0c-8553-9f04bb59a877)) + (fp_line (start 1 -0.625) (end 1 0.625) (layer "F.Fab") (width 0.1) (tstamp 0f824c45-c8c9-431c-85c3-63337d398c42)) + (fp_line (start 1 0.625) (end -1 0.625) (layer "F.Fab") (width 0.1) (tstamp 7b648862-789d-4cbd-93d0-cd0227bc9561)) + (fp_line (start -1 0.625) (end -1 -0.625) (layer "F.Fab") (width 0.1) (tstamp ea8c4f82-fbca-4bdb-8ca8-c8833fc81cf4)) + (pad "1" smd roundrect locked (at -1 0 90) (size 1.2 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.2083325) + (net 49 "SWCLK") (tstamp d9e345a1-4da7-4abe-96e1-9ecf81c49a41)) + (pad "2" smd roundrect locked (at 1 0 90) (size 1.2 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.2083325) + (net 23 "Net-(J5-Pad6)") (tstamp 919a4fdb-c2fb-4658-9526-9e4a9c2e257a)) + (model "${KISYS3DMOD}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder" (layer "F.Cu") + (tedit 5F68FEEE) (tstamp 00000000-0000-0000-0000-000061c50c27) + (at 71.2978 46.2186 90) + (descr "Resistor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") + (tags "resistor handsolder") + (path "/00000000-0000-0000-0000-000061e4a7da") + (attr smd) + (fp_text reference "R20" (at 0 -1.65 90) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 9ef3819b-b8d6-4f2d-964d-2aaf4fa58482) + ) + (fp_text value "22" (at 0 1.65 90) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp fb8052f5-27fc-4157-92d4-b0032550b3a4) + ) + (fp_text user "${REFERENCE}" (at 0 0 90) (layer "F.Fab") + (effects (font (size 0.5 0.5) (thickness 0.08))) + (tstamp 365f116a-d6bf-41f9-8686-d3eacb626a67) + ) + (fp_line (start -0.227064 -0.735) (end 0.227064 -0.735) (layer "F.SilkS") (width 0.12) (tstamp 44a0cab6-291a-4e1b-a238-e2f1cea78b1c)) + (fp_line (start -0.227064 0.735) (end 0.227064 0.735) (layer "F.SilkS") (width 0.12) (tstamp 6103c5f1-47c5-46d3-b3a2-bd4674072865)) + (fp_line (start 1.85 -0.95) (end 1.85 0.95) (layer "F.CrtYd") (width 0.05) (tstamp 351bbff2-f6d2-4b38-ae82-92810756c39d)) + (fp_line (start -1.85 0.95) (end -1.85 -0.95) (layer "F.CrtYd") (width 0.05) (tstamp 423deee8-b3e1-4544-893b-ea793d247037)) + (fp_line (start 1.85 0.95) (end -1.85 0.95) (layer "F.CrtYd") (width 0.05) (tstamp a4d53eeb-5bb9-49f1-8f00-f7b73ec2def9)) + (fp_line (start -1.85 -0.95) (end 1.85 -0.95) (layer "F.CrtYd") (width 0.05) (tstamp da99809a-959a-4727-92a2-aa15bb6a8947)) + (fp_line (start -1 0.625) (end -1 -0.625) (layer "F.Fab") (width 0.1) (tstamp 415b2d76-40c9-40b8-bc5c-ace85693aa72)) + (fp_line (start 1 -0.625) (end 1 0.625) (layer "F.Fab") (width 0.1) (tstamp bb412522-e798-40bd-8b38-feb1aca71321)) + (fp_line (start -1 -0.625) (end 1 -0.625) (layer "F.Fab") (width 0.1) (tstamp bbd2323a-4672-4e20-b1a6-6cfbf9a3a777)) + (fp_line (start 1 0.625) (end -1 0.625) (layer "F.Fab") (width 0.1) (tstamp d06bf5d2-2260-4534-b735-bcf4d021c27b)) + (pad "1" smd roundrect locked (at -1 0 90) (size 1.2 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.2083325) + (net 6 "NRST") (tstamp 8ecfd16e-16be-498b-ab72-1e5279229b4d)) + (pad "2" smd roundrect locked (at 1 0 90) (size 1.2 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.2083325) + (net 19 "Net-(J5-Pad12)") (tstamp 7fa4a4d7-ba43-4bac-8d42-b7524f2be752)) + (model "${KISYS3DMOD}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Package_QFP:LQFP-64_10x10mm_P0.5mm" (layer "F.Cu") + (tedit 5D9F72AF) (tstamp 00000000-0000-0000-0000-000061c50c92) + (at 77.5208 54.7116 90) + (descr "LQFP, 64 Pin (https://www.analog.com/media/en/technical-documentation/data-sheets/ad7606_7606-6_7606-4.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py") + (tags "LQFP QFP") + (path "/00000000-0000-0000-0000-000061c46d88") + (attr smd) + (fp_text reference "U1" (at 3.302 -0.254 180) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 71a87e33-a67d-44d1-b794-2d485762964c) + ) + (fp_text value "STM32G070RBTx" (at 0 7.4 90) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp dc40fb36-0a8e-472c-b98f-e495eee6e261) + ) + (fp_text user "${REFERENCE}" (at 0 0 90) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 1dd5cc6f-c4f8-4f23-b380-8d11fe3f84a3) + ) + (fp_line (start 5.11 -5.11) (end 5.11 -4.16) (layer "F.SilkS") (width 0.12) (tstamp 2b4d7c07-fdf7-45f8-9c98-1c360840daa3)) + (fp_line (start -5.11 5.11) (end -5.11 4.16) (layer "F.SilkS") (width 0.12) (tstamp 5611bc90-9ee6-44e4-b6f1-8bf4cd33b7ab)) + (fp_line (start -5.11 -4.16) (end -6.45 -4.16) (layer "F.SilkS") (width 0.12) (tstamp 5a6dd05b-faf7-4c79-9a79-39bbaad6dc3d)) + (fp_line (start -4.16 -5.11) (end -5.11 -5.11) (layer "F.SilkS") (width 0.12) (tstamp 98d418a5-a896-4385-a1f3-d52cc7b44b89)) + (fp_line (start -4.16 5.11) (end -5.11 5.11) (layer "F.SilkS") (width 0.12) (tstamp a23b5a4a-0151-4d81-8500-d630ec6aceab)) + (fp_line (start -5.11 -5.11) (end -5.11 -4.16) (layer "F.SilkS") (width 0.12) (tstamp c61bf0af-35d3-436a-9ccc-1f01caae2ff2)) + (fp_line (start 4.16 5.11) (end 5.11 5.11) (layer "F.SilkS") (width 0.12) (tstamp cee1d582-ef04-402b-b692-72a0c0ebd566)) + (fp_line (start 5.11 5.11) (end 5.11 4.16) (layer "F.SilkS") (width 0.12) (tstamp dbd27732-ae53-4fb4-bb28-c9f7e04c03b1)) + (fp_line (start 4.16 -5.11) (end 5.11 -5.11) (layer "F.SilkS") (width 0.12) (tstamp fc7acd69-86fd-4bf2-b398-942c26d435f2)) + (fp_line (start -4.15 5.25) (end -5.25 5.25) (layer "F.CrtYd") (width 0.05) (tstamp 0bb40a8f-0e36-45d7-9d71-4a5dc0b7cb78)) + (fp_line (start 0 -6.7) (end 4.15 -6.7) (layer "F.CrtYd") (width 0.05) (tstamp 108813ac-39fe-4035-8bd5-32d4adc7f2bb)) + (fp_line (start 6.7 -4.15) (end 6.7 0) (layer "F.CrtYd") (width 0.05) (tstamp 16162733-23ea-4812-88e2-f7c8e93768db)) + (fp_line (start 4.15 5.25) (end 5.25 5.25) (layer "F.CrtYd") (width 0.05) (tstamp 17757e71-daee-4185-baa7-7b4f5a160f94)) + (fp_line (start -5.25 -5.25) (end -5.25 -4.15) (layer "F.CrtYd") (width 0.05) (tstamp 1fd98572-43f8-4f12-a107-97fdc89e73f1)) + (fp_line (start 4.15 -5.25) (end 5.25 -5.25) (layer "F.CrtYd") (width 0.05) (tstamp 2398e136-96b8-4825-9796-bf92f0976b02)) + (fp_line (start 0 6.7) (end 4.15 6.7) (layer "F.CrtYd") (width 0.05) (tstamp 2e1f678a-c60b-4089-9282-fae50b412bc4)) + (fp_line (start 0 6.7) (end -4.15 6.7) (layer "F.CrtYd") (width 0.05) (tstamp 405a8acb-5356-4aaa-8924-79a08d70badc)) + (fp_line (start 6.7 4.15) (end 6.7 0) (layer "F.CrtYd") (width 0.05) (tstamp 490c1814-8d34-48d6-88b8-48e5a302f141)) + (fp_line (start -6.7 4.15) (end -6.7 0) (layer "F.CrtYd") (width 0.05) (tstamp 5b4bc180-e8c4-4d47-8da9-e974353206f3)) + (fp_line (start -4.15 -6.7) (end -4.15 -5.25) (layer "F.CrtYd") (width 0.05) (tstamp 5b9683fe-fd6e-46b4-951e-0801a61f4aad)) + (fp_line (start -6.7 -4.15) (end -6.7 0) (layer "F.CrtYd") (width 0.05) (tstamp 61e80f1b-ef74-4b73-9396-3b5137d10925)) + (fp_line (start -5.25 4.15) (end -6.7 4.15) (layer "F.CrtYd") (width 0.05) (tstamp 7b8029a4-ea6a-4b8e-bea1-c1a7414fe61b)) + (fp_line (start -5.25 5.25) (end -5.25 4.15) (layer "F.CrtYd") (width 0.05) (tstamp 7e7d9c36-0a34-455f-9605-5687c306f817)) + (fp_line (start 4.15 6.7) (end 4.15 5.25) (layer "F.CrtYd") (width 0.05) (tstamp 8af334c6-17fa-46ee-8a12-aaa24901aade)) + (fp_line (start 5.25 4.15) (end 6.7 4.15) (layer "F.CrtYd") (width 0.05) (tstamp 95892954-3c0f-41e4-9732-989619694ffd)) + (fp_line (start 5.25 -5.25) (end 5.25 -4.15) (layer "F.CrtYd") (width 0.05) (tstamp 9cd32dc8-fdb4-42c8-8922-611559f31624)) + (fp_line (start -4.15 6.7) (end -4.15 5.25) (layer "F.CrtYd") (width 0.05) (tstamp b29abd95-320a-463e-a6d8-ce787f615590)) + (fp_line (start 5.25 -4.15) (end 6.7 -4.15) (layer "F.CrtYd") (width 0.05) (tstamp b74a5802-bdc3-4c64-b40d-85b9e78b0bc1)) + (fp_line (start 5.25 5.25) (end 5.25 4.15) (layer "F.CrtYd") (width 0.05) (tstamp beda7999-29c8-4c08-97ea-407f77b06414)) + (fp_line (start 4.15 -6.7) (end 4.15 -5.25) (layer "F.CrtYd") (width 0.05) (tstamp c172d69f-7aa5-4c16-866d-3a14bf6e362c)) + (fp_line (start -5.25 -4.15) (end -6.7 -4.15) (layer "F.CrtYd") (width 0.05) (tstamp c661c743-976c-49ef-b336-22ea34732ab0)) + (fp_line (start -4.15 -5.25) (end -5.25 -5.25) (layer "F.CrtYd") (width 0.05) (tstamp d8fa5957-0a6e-46ae-9e5c-c42dead71fe3)) + (fp_line (start 0 -6.7) (end -4.15 -6.7) (layer "F.CrtYd") (width 0.05) (tstamp fe3c2cae-9b8f-458a-8d78-99986afe92a2)) + (fp_line (start 5 -5) (end 5 5) (layer "F.Fab") (width 0.1) (tstamp 41f65e3e-52a6-4b74-ac05-c363ce0426d4)) + (fp_line (start -5 -4) (end -4 -5) (layer "F.Fab") (width 0.1) (tstamp 9cb13fff-2c6e-4fb0-94cd-7b96ec592874)) + (fp_line (start -4 -5) (end 5 -5) (layer "F.Fab") (width 0.1) (tstamp ccc04998-7983-4c89-9d2a-b5d71d0fb312)) + (fp_line (start -5 5) (end -5 -4) (layer "F.Fab") (width 0.1) (tstamp f0c28df8-096b-4bdb-8abe-3c7a22d7ca61)) + (fp_line (start 5 5) (end -5 5) (layer "F.Fab") (width 0.1) (tstamp f6ce69b4-b099-43b9-979c-3ff38cfe56ba)) + (pad "1" smd roundrect locked (at -5.675 -3.75 90) (size 1.55 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 93 "Net-(U1-Pad1)") (tstamp 69b1eb30-b01b-4411-a561-ce707339b10d)) + (pad "2" smd roundrect locked (at -5.675 -3.25 90) (size 1.55 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 92 "Net-(U1-Pad2)") (tstamp 90d46717-abe6-4de0-947f-082a5b3cdf63)) + (pad "3" smd roundrect locked (at -5.675 -2.75 90) (size 1.55 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 91 "Net-(U1-Pad3)") (tstamp ff853c07-f40d-4a54-8d67-e93766071a78)) + (pad "4" smd roundrect locked (at -5.675 -2.25 90) (size 1.55 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 90 "Net-(U1-Pad4)") (tstamp a7afb8f9-ec38-4c1c-9b99-ad46e9c85653)) + (pad "5" smd roundrect locked (at -5.675 -1.75 90) (size 1.55 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 89 "Net-(U1-Pad5)") (tstamp 72db934d-109d-4d82-80c4-e66076614e58)) + (pad "6" smd roundrect locked (at -5.675 -1.25 90) (size 1.55 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 2 "+3V3") (tstamp 2c370e45-49ed-46d8-b98d-d80b5679ed3b)) + (pad "7" smd roundrect locked (at -5.675 -0.75 90) (size 1.55 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 2 "+3V3") (tstamp 041fecdd-2c2a-4b70-9c97-c11a33e00011)) + (pad "8" smd roundrect locked (at -5.675 -0.25 90) (size 1.55 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 2 "+3V3") (tstamp d10d6f70-7a31-4c06-8cf5-eaa8df2dc369)) + (pad "9" smd roundrect locked (at -5.675 0.25 90) (size 1.55 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 3 "GND") (tstamp 98c308ed-2994-4e2c-ae97-baea355fec11)) + (pad "10" smd roundrect locked (at -5.675 0.75 90) (size 1.55 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 4 "Net-(C1-Pad1)") (tstamp 9a34bdc6-fbbd-48ce-b703-293f8403fc25)) + (pad "11" smd roundrect locked (at -5.675 1.25 90) (size 1.55 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 32 "Net-(R2-Pad1)") (tstamp 8179cc33-df1a-4166-b6e7-f395709579a8)) + (pad "12" smd roundrect locked (at -5.675 1.75 90) (size 1.55 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 6 "NRST") (tstamp ef779618-7612-4526-859d-9dd65280bdda)) + (pad "13" smd roundrect locked (at -5.675 2.25 90) (size 1.55 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 88 "Net-(U1-Pad13)") (tstamp ab7138ad-f174-402e-8b0f-55fa41d7156b)) + (pad "14" smd roundrect locked (at -5.675 2.75 90) (size 1.55 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 87 "Net-(U1-Pad14)") (tstamp ef7ce9bf-7106-4d26-a3c5-70cf9c6125e4)) + (pad "15" smd roundrect locked (at -5.675 3.25 90) (size 1.55 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 86 "Net-(U1-Pad15)") (tstamp ce4afc85-f2c4-4389-9a6b-a7d8cdedb7b7)) + (pad "16" smd roundrect locked (at -5.675 3.75 90) (size 1.55 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 85 "Net-(U1-Pad16)") (tstamp 3b1d66e6-2302-4b65-8bc6-94ccbe245eb6)) + (pad "17" smd roundrect locked (at -3.75 5.675 90) (size 0.3 1.55) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 84 "Net-(U1-Pad17)") (tstamp 1090f795-a358-497b-90c4-005c702634f2)) + (pad "18" smd roundrect locked (at -3.25 5.675 90) (size 0.3 1.55) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 83 "Net-(U1-Pad18)") (tstamp e129c299-3e9b-42ec-97d5-db88a0cad41a)) + (pad "19" smd roundrect locked (at -2.75 5.675 90) (size 0.3 1.55) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 82 "Net-(U1-Pad19)") (tstamp 558f27a2-a535-4a61-8093-437707b4e516)) + (pad "20" smd roundrect locked (at -2.25 5.675 90) (size 0.3 1.55) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 81 "Net-(U1-Pad20)") (tstamp 62fc29c3-1551-4ca1-ac9a-14cca4162207)) + (pad "21" smd roundrect locked (at -1.75 5.675 90) (size 0.3 1.55) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 80 "Net-(U1-Pad21)") (tstamp 655474f8-9497-48ac-a384-d6ffa2c8d9ed)) + (pad "22" smd roundrect locked (at -1.25 5.675 90) (size 0.3 1.55) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 79 "Net-(U1-Pad22)") (tstamp 7b2caa6f-63d5-40f0-acba-18be9ab4281e)) + (pad "23" smd roundrect locked (at -0.75 5.675 90) (size 0.3 1.55) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 78 "Net-(U1-Pad23)") (tstamp 1a8489eb-7d24-4e8b-b638-2343a2adfc39)) + (pad "24" smd roundrect locked (at -0.25 5.675 90) (size 0.3 1.55) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 31 "Buzzer") (tstamp 45f4e365-2e17-4e0e-bd72-fcc237ae3975)) + (pad "25" smd roundrect locked (at 0.25 5.675 90) (size 0.3 1.55) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 77 "Net-(U1-Pad25)") (tstamp c901079d-a6e1-46d7-b63c-c64d8e733a48)) + (pad "26" smd roundrect locked (at 0.75 5.675 90) (size 0.3 1.55) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 76 "Net-(U1-Pad26)") (tstamp ab4230ab-3cec-45d4-84bd-6b4f317af0e2)) + (pad "27" smd roundrect locked (at 1.25 5.675 90) (size 0.3 1.55) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 9 "KEY_DN") (tstamp 70200732-e978-47e2-874d-8c771787fd9c)) + (pad "28" smd roundrect locked (at 1.75 5.675 90) (size 0.3 1.55) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 10 "KEY_OK") (tstamp 27a09fd2-af40-4613-88c7-c614b242af37)) + (pad "29" smd roundrect locked (at 2.25 5.675 90) (size 0.3 1.55) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 11 "KEY_UP") (tstamp cbc9a311-3b63-4055-a811-940ecdbbb52b)) + (pad "30" smd roundrect locked (at 2.75 5.675 90) (size 0.3 1.55) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 35 "OLED_SCL") (tstamp 5e7212cb-3e58-42aa-af06-e351520eccd4)) + (pad "31" smd roundrect locked (at 3.25 5.675 90) (size 0.3 1.55) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 36 "OLED_SDA") (tstamp c89778bb-fca1-421b-a8fc-2b0cd3c91192)) + (pad "32" smd roundrect locked (at 3.75 5.675 90) (size 0.3 1.55) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 75 "Net-(U1-Pad32)") (tstamp 9cf8b9ba-d116-478a-aee0-cfa82bfd8fd3)) + (pad "33" smd roundrect locked (at 5.675 3.75 90) (size 1.55 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 74 "Net-(U1-Pad33)") (tstamp b7840526-0ca3-48d6-935e-02a719ebb8a8)) + (pad "34" smd roundrect locked (at 5.675 3.25 90) (size 1.55 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 73 "Net-(U1-Pad34)") (tstamp 27042d28-3d62-45f6-9dbf-3630b610f676)) + (pad "35" smd roundrect locked (at 5.675 2.75 90) (size 1.55 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 72 "Net-(U1-Pad35)") (tstamp 2c776d3b-be6c-4245-89e3-f860da50284d)) + (pad "36" smd roundrect locked (at 5.675 2.25 90) (size 1.55 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 71 "Net-(U1-Pad36)") (tstamp 99d99d92-fb98-4239-b403-b81ad50e8ff7)) + (pad "37" smd roundrect locked (at 5.675 1.75 90) (size 1.55 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 70 "Net-(U1-Pad37)") (tstamp a482da51-5243-4028-be35-da36ea8ded9d)) + (pad "38" smd roundrect locked (at 5.675 1.25 90) (size 1.55 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 69 "Net-(U1-Pad38)") (tstamp c60bab69-94d8-44a1-8406-d12619713577)) + (pad "39" smd roundrect locked (at 5.675 0.75 90) (size 1.55 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 68 "Net-(U1-Pad39)") (tstamp b6a6456d-e191-4880-9825-c8de60fdc47a)) + (pad "40" smd roundrect locked (at 5.675 0.25 90) (size 1.55 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 67 "Net-(U1-Pad40)") (tstamp 1ec1f730-1327-4160-af16-964c83d5e197)) + (pad "41" smd roundrect locked (at 5.675 -0.25 90) (size 1.55 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 66 "Net-(U1-Pad41)") (tstamp 4f11d1e8-fa17-4f84-8a2b-ce18d655fb00)) + (pad "42" smd roundrect locked (at 5.675 -0.75 90) (size 1.55 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 65 "Net-(U1-Pad42)") (tstamp feb78155-b4a9-458b-92bf-570cbe44423c)) + (pad "43" smd roundrect locked (at 5.675 -1.25 90) (size 1.55 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 64 "Net-(U1-Pad43)") (tstamp a65af192-b4da-49fb-b605-c071614972fa)) + (pad "44" smd roundrect locked (at 5.675 -1.75 90) (size 1.55 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 63 "Net-(U1-Pad44)") (tstamp 8c88561d-27c6-4db6-b265-2b53874ce38b)) + (pad "45" smd roundrect locked (at 5.675 -2.25 90) (size 1.55 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 48 "SWDIO") (tstamp b12ddea0-88ad-483b-8010-169d45e99689)) + (pad "46" smd roundrect locked (at 5.675 -2.75 90) (size 1.55 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 49 "SWCLK") (tstamp 0fa3a414-b02d-46be-b4b4-d6115e74bef6)) + (pad "47" smd roundrect locked (at 5.675 -3.25 90) (size 1.55 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 62 "Net-(U1-Pad47)") (tstamp 2f853b85-42e3-4cd0-a72e-e5ac7f6f883f)) + (pad "48" smd roundrect locked (at 5.675 -3.75 90) (size 1.55 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 61 "Net-(U1-Pad48)") (tstamp 4d6fe62d-c69e-47ea-aa7b-58ca51962699)) + (pad "49" smd roundrect locked (at 3.75 -5.675 90) (size 0.3 1.55) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 60 "Net-(U1-Pad49)") (tstamp cc594973-faf6-42a7-a1a7-6416118e90ad)) + (pad "50" smd roundrect locked (at 3.25 -5.675 90) (size 0.3 1.55) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 59 "Net-(U1-Pad50)") (tstamp 37a7b350-46a3-4741-b500-2ba8706f4898)) + (pad "51" smd roundrect locked (at 2.75 -5.675 90) (size 0.3 1.55) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 58 "Net-(U1-Pad51)") (tstamp 5323fd99-759a-4ab2-aac7-ff6a24b77667)) + (pad "52" smd roundrect locked (at 2.25 -5.675 90) (size 0.3 1.55) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 41 "ZeroCross") (tstamp e001386c-6515-4896-92b6-17b46f02e29b)) + (pad "53" smd roundrect locked (at 1.75 -5.675 90) (size 0.3 1.55) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 57 "Net-(U1-Pad53)") (tstamp f1f8fdd8-fd57-4587-90bd-11bcd9a0be8e)) + (pad "54" smd roundrect locked (at 1.25 -5.675 90) (size 0.3 1.55) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 56 "Net-(U1-Pad54)") (tstamp ead67967-1e0f-4d72-9bdd-62ddf0b87c5b)) + (pad "55" smd roundrect locked (at 0.75 -5.675 90) (size 0.3 1.55) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 55 "Net-(U1-Pad55)") (tstamp 26eebe24-278b-44df-8f6d-127bd529b5f4)) + (pad "56" smd roundrect locked (at 0.25 -5.675 90) (size 0.3 1.55) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 54 "Net-(U1-Pad56)") (tstamp 9f1ede68-d452-42c8-b863-6920c0b6559a)) + (pad "57" smd roundrect locked (at -0.25 -5.675 90) (size 0.3 1.55) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 53 "Net-(U1-Pad57)") (tstamp d155fab7-7caf-476e-a239-d9eea3e9ef6e)) + (pad "58" smd roundrect locked (at -0.75 -5.675 90) (size 0.3 1.55) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 37 "Gate_Heater") (tstamp ebf85aba-66be-499a-8a71-c6452f4e842c)) + (pad "59" smd roundrect locked (at -1.25 -5.675 90) (size 0.3 1.55) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 39 "Gate_Fan") (tstamp 64c21c8b-7269-4d39-9a49-32fb0f71b3e9)) + (pad "60" smd roundrect locked (at -1.75 -5.675 90) (size 0.3 1.55) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 52 "Net-(U1-Pad60)") (tstamp 3dc41cf9-bd15-4097-9554-0e4fc749481d)) + (pad "61" smd roundrect locked (at -2.25 -5.675 90) (size 0.3 1.55) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 51 "Net-(U1-Pad61)") (tstamp d9d02290-9c9a-4fb5-ba0f-7afb7ab5d516)) + (pad "62" smd roundrect locked (at -2.75 -5.675 90) (size 0.3 1.55) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 33 "BME_SCL") (tstamp 6f920796-d836-4f72-9f2a-a4a98c35a7a1)) + (pad "63" smd roundrect locked (at -3.25 -5.675 90) (size 0.3 1.55) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 34 "BME_SDA") (tstamp b709fb95-e33b-47e6-9619-60478314a2c2)) + (pad "64" smd roundrect locked (at -3.75 -5.675 90) (size 0.3 1.55) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 50 "Net-(U1-Pad64)") (tstamp bd8e82fe-de31-4d47-b594-9a5d7fde6cc5)) + (model "${KISYS3DMOD}/Package_QFP.3dshapes/LQFP-64_10x10mm_P0.5mm.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Package_DIP:DIP-6_W7.62mm_LongPads" (layer "F.Cu") + (tedit 5A02E8C5) (tstamp 00000000-0000-0000-0000-000061c50cd8) + (at 71.1708 69.6976 180) + (descr "6-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), LongPads") + (tags "THT DIP DIL PDIP 2.54mm 7.62mm 300mil LongPads") + (path "/00000000-0000-0000-0000-000061cae0bc") + (attr through_hole) + (fp_text reference "U4" (at 3.81 7.239) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp e21f3731-ea8a-4a7e-b766-3f128cf70f3a) + ) + (fp_text value "MOC3023M" (at 3.81 7.41) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp d924bf70-962b-47e5-90d6-6949be4a3ca6) + ) + (fp_text user "${REFERENCE}" (at 3.81 2.54) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 59dd48ff-a434-4783-a599-ab924908fb12) + ) + (fp_line (start 6.06 -1.33) (end 4.81 -1.33) (layer "F.SilkS") (width 0.12) (tstamp 19d94e2c-ccfd-4864-9ca8-8bf695583d45)) + (fp_line (start 1.56 6.41) (end 6.06 6.41) (layer "F.SilkS") (width 0.12) (tstamp 7f023804-cae2-4a7b-9d19-a7d239643325)) + (fp_line (start 6.06 6.41) (end 6.06 -1.33) (layer "F.SilkS") (width 0.12) (tstamp a1a23877-4e5d-481f-8aef-ae615b99f6dd)) + (fp_line (start 2.81 -1.33) (end 1.56 -1.33) (layer "F.SilkS") (width 0.12) (tstamp b70ca152-ab44-4152-82a8-54ea12232a53)) + (fp_line (start 1.56 -1.33) (end 1.56 6.41) (layer "F.SilkS") (width 0.12) (tstamp d15af578-a0e8-40aa-af2f-59df99f63782)) + (fp_arc (start 4.81 -1.33) (mid 3.81 -0.33) (end 2.81 -1.33) (layer "F.SilkS") (width 0.12) (tstamp 545ff3c7-736f-42cb-8d1f-1748cf381ade)) + (fp_line (start 9.1 6.6) (end 9.1 -1.55) (layer "F.CrtYd") (width 0.05) (tstamp 3fd347ec-6ec0-40d9-8a95-397878a15ad4)) + (fp_line (start -1.45 6.6) (end 9.1 6.6) (layer "F.CrtYd") (width 0.05) (tstamp 6cf5eb41-ec9a-4efa-a187-6341fedfc0ed)) + (fp_line (start -1.45 -1.55) (end -1.45 6.6) (layer "F.CrtYd") (width 0.05) (tstamp 7392e079-977e-47b3-8d29-4b1559dfd3d3)) + (fp_line (start 9.1 -1.55) (end -1.45 -1.55) (layer "F.CrtYd") (width 0.05) (tstamp ad8b21b0-249b-44d7-815d-4cfaf60d36ec)) + (fp_line (start 0.635 6.35) (end 0.635 -0.27) (layer "F.Fab") (width 0.1) (tstamp 144c260d-22d5-4692-add6-a7f16502ce98)) + (fp_line (start 6.985 -1.27) (end 6.985 6.35) (layer "F.Fab") (width 0.1) (tstamp 6c4633ce-05da-4fff-93d7-b8ff1d4d972f)) + (fp_line (start 1.635 -1.27) (end 6.985 -1.27) (layer "F.Fab") (width 0.1) (tstamp b24e674f-643c-4321-a74c-0cb36067f88b)) + (fp_line (start 0.635 -0.27) (end 1.635 -1.27) (layer "F.Fab") (width 0.1) (tstamp b52c351d-c807-4054-9452-8ed812f07b10)) + (fp_line (start 6.985 6.35) (end 0.635 6.35) (layer "F.Fab") (width 0.1) (tstamp f1501d8f-45dd-4e36-9ad9-47d376a6d01c)) + (pad "1" thru_hole rect locked (at 0 0 180) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask) + (net 40 "Net-(R8-Pad1)") (tstamp ac24e012-c070-423b-a332-07e2ca09cf49)) + (pad "2" thru_hole oval locked (at 0 2.54 180) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask) + (net 3 "GND") (tstamp d58cc5ce-356e-4031-8c10-7bcb08bf622e)) + (pad "3" thru_hole oval locked (at 0 5.08 180) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask) + (net 96 "Net-(U4-Pad3)") (tstamp b4df3f2f-29c3-4648-81ed-44e0a0ad7d22)) + (pad "4" thru_hole oval locked (at 7.62 5.08 180) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask) + (net 30 "Net-(Q3-Pad3)") (tstamp 34714ee5-f1f0-4a85-b96f-33c8c3c16254)) + (pad "5" thru_hole oval locked (at 7.62 2.54 180) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask) + (net 97 "Net-(U4-Pad5)") (tstamp d080452c-10a1-4d2d-966e-7c3642244174)) + (pad "6" thru_hole oval locked (at 7.62 0 180) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask) + (net 44 "Net-(R11-Pad2)") (tstamp f20840f8-58b0-4332-8fa8-7dcc29831e15)) + (model "${KISYS3DMOD}/Package_DIP.3dshapes/DIP-6_W7.62mm.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-3-2-5.08_1x02_P5.08mm_Horizontal" (layer "F.Cu") + (tedit 5B294F11) (tstamp 00000000-0000-0000-0000-000061c5608b) + (at 26.2128 49.8856 -90) + (descr "Terminal Block Phoenix MKDS-3-2-5.08, 2 pins, pitch 5.08mm, size 10.2x11.2mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.farnell.com/datasheets/2138224.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix") + (tags "THT Terminal Block Phoenix MKDS-3-2-5.08 pitch 5.08mm size 10.2x11.2mm^2 drill 1.3mm pad 2.6mm") + (path "/00000000-0000-0000-0000-000061c984ae") + (attr through_hole) + (fp_text reference "J6" (at 2.54 -6.96 90) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp ac7dc7e9-f097-417a-92d1-a66fefeb4233) + ) + (fp_text value "220V" (at 2.54 6.36 90) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 4fe1231f-c65c-4258-b428-2c2e1febbdb9) + ) + (fp_text user "${REFERENCE}" (at 2.54 3.1 90) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 424601db-d9f3-4e3c-aaf5-3f25a8db3013) + ) + (fp_line (start 6.734 -1.388) (end 6.339 -0.992) (layer "F.SilkS") (width 0.12) (tstamp 120a4667-9799-4804-9bb9-ccb421bce9af)) + (fp_line (start 4.073 1.274) (end 3.693 1.654) (layer "F.SilkS") (width 0.12) (tstamp 23292dfa-2285-4540-a20d-c6f6b6203956)) + (fp_line (start -2.6 -5.96) (end 7.68 -5.96) (layer "F.SilkS") (width 0.12) (tstamp 24a8ccb1-61e7-4f23-850b-e7e40b9116e1)) + (fp_line (start -2.6 -3.9) (end 7.68 -3.9) (layer "F.SilkS") (width 0.12) (tstamp 31964b36-a73d-4d20-a527-5ca799e5a24b)) + (fp_line (start 1.654 -1.388) (end 1.547 -1.281) (layer "F.SilkS") (width 0.12) (tstamp 42db8173-6b85-427a-a3b0-ba1e2cbdf046)) + (fp_line (start -2.6 -5.96) (end -2.6 5.36) (layer "F.SilkS") (width 0.12) (tstamp 431cba1e-89d6-482d-9dd0-01e715259dea)) + (fp_line (start -2.6 4.8) (end 7.68 4.8) (layer "F.SilkS") (width 0.12) (tstamp 4e1aef39-37ed-4d40-91e4-0e3a6e84b595)) + (fp_line (start 3.822 0.992) (end 3.427 1.388) (layer "F.SilkS") (width 0.12) (tstamp 57777530-bc7b-4e84-ab70-7e96be2a2b12)) + (fp_line (start 1.388 -1.654) (end 1.281 -1.547) (layer "F.SilkS") (width 0.12) (tstamp 838315f5-3a9b-4efe-989d-c6115b2675fd)) + (fp_line (start -2.84 4.86) (end -2.84 5.6) (layer "F.SilkS") (width 0.12) (tstamp 8d53011c-1b01-4caf-8e3e-2bece1a86a8b)) + (fp_line (start -2.6 5.36) (end 7.68 5.36) (layer "F.SilkS") (width 0.12) (tstamp 97f6400a-cbf6-4755-844a-84dc28038ebb)) + (fp_line (start -2.6 2.3) (end 7.68 2.3) (layer "F.SilkS") (width 0.12) (tstamp 9d795f17-d746-44c3-8ebd-94705a881a72)) + (fp_line (start 7.68 -5.96) (end 7.68 5.36) (layer "F.SilkS") (width 0.12) (tstamp a0976f67-c0a6-4869-b308-16ab03fe3929)) + (fp_line (start 6.468 -1.654) (end 6.088 -1.274) (layer "F.SilkS") (width 0.12) (tstamp b6b636f5-8462-4f81-8614-33dc64456991)) + (fp_line (start -1.548 1.281) (end -1.654 1.388) (layer "F.SilkS") (width 0.12) (tstamp c7ac829c-174a-4474-a415-a0ddbf3dc020)) + (fp_line (start -2.84 5.6) (end -2.34 5.6) (layer "F.SilkS") (width 0.12) (tstamp d856550d-06f9-491a-86a3-d64e394e535f)) + (fp_line (start -1.282 1.547) (end -1.388 1.654) (layer "F.SilkS") (width 0.12) (tstamp fac4fa80-83c6-4f44-80de-de7f0d28795f)) + (fp_circle (center 5.08 0) (end 7.26 0) (layer "F.SilkS") (width 0.12) (fill none) (tstamp 4bb29316-7b37-441b-bdbc-49b2b2f89169)) + (fp_circle (center 0 0) (end 2.18 0) (layer "F.SilkS") (width 0.12) (fill none) (tstamp 557835df-83c2-473d-8f1a-0e42889aca79)) + (fp_line (start -3.04 5.8) (end 8.13 5.8) (layer "F.CrtYd") (width 0.05) (tstamp 16176954-c40f-47f1-8241-ffc3993bf1fe)) + (fp_line (start 8.13 5.8) (end 8.13 -6.4) (layer "F.CrtYd") (width 0.05) (tstamp 322ecd0f-00b5-4bf7-a68a-bd8f772c1e25)) + (fp_line (start 8.13 -6.4) (end -3.04 -6.4) (layer "F.CrtYd") (width 0.05) (tstamp ae2ab47d-6a28-4ee4-8db0-d4c823f87d63)) + (fp_line (start -3.04 -6.4) (end -3.04 5.8) (layer "F.CrtYd") (width 0.05) (tstamp d512f751-a4dd-4bb0-bb3e-a8002ec6da25)) + (fp_line (start -2.54 4.8) (end 7.62 4.8) (layer "F.Fab") (width 0.1) (tstamp 1f371c0d-7820-4fc2-ad91-cfc52268dbc5)) + (fp_line (start -2.54 4.8) (end -2.54 -5.9) (layer "F.Fab") (width 0.1) (tstamp 255a4d8c-4a0f-4c2e-b5a9-48932853c8b4)) + (fp_line (start 6.597 -1.273) (end 3.808 1.517) (layer "F.Fab") (width 0.1) (tstamp 3324518f-2fed-470b-8659-82f74bcd07c6)) + (fp_line (start -2.54 2.3) (end 7.62 2.3) (layer "F.Fab") (width 0.1) (tstamp 59495a0f-f780-4264-83b1-f69c5d964d62)) + (fp_line (start 7.62 -5.9) (end 7.62 5.3) (layer "F.Fab") (width 0.1) (tstamp 6269f48c-8878-483d-ad66-9ea10c7ec1bd)) + (fp_line (start 1.273 -1.517) (end -1.517 1.273) (layer "F.Fab") (width 0.1) (tstamp 671966ed-92ff-4d7f-b798-57bc851f350d)) + (fp_line (start -2.54 -3.9) (end 7.62 -3.9) (layer "F.Fab") (width 0.1) (tstamp 86f2915e-1079-4278-98ff-9fe186f84073)) + (fp_line (start -2.04 5.3) (end -2.54 4.8) (layer "F.Fab") (width 0.1) (tstamp bbea5578-835e-4ba9-957c-a9f745d66503)) + (fp_line (start -2.54 -5.9) (end 7.62 -5.9) (layer "F.Fab") (width 0.1) (tstamp ceb832c1-2e46-43c5-ada3-febc9d16dab1)) + (fp_line (start 1.517 -1.273) (end -1.273 1.517) (layer "F.Fab") (width 0.1) (tstamp e453fc4c-af28-4034-8f9a-2a87a297a5d1)) + (fp_line (start 7.62 5.3) (end -2.04 5.3) (layer "F.Fab") (width 0.1) (tstamp ed4ad079-8784-426c-a8f6-5d29d94620b7)) + (fp_line (start 6.353 -1.517) (end 3.564 1.273) (layer "F.Fab") (width 0.1) (tstamp f2282b3e-6c69-4116-9799-61ce6aa2616e)) + (fp_circle (center 5.08 0) (end 7.08 0) (layer "F.Fab") (width 0.1) (fill none) (tstamp 433505d6-b176-4360-b32c-b16b9b252b7d)) + (fp_circle (center 0 0) (end 2 0) (layer "F.Fab") (width 0.1) (fill none) (tstamp b2924e7e-5595-4570-b8aa-316a7449745f)) + (pad "1" thru_hole rect locked (at 0 0 270) (size 2.6 2.6) (drill 1.3) (layers *.Cu *.Mask) + (net 27 "AC_N") (tstamp 5627980a-cfcc-4c5f-95b2-4dcd78cfdb28)) + (pad "2" thru_hole circle locked (at 5.08 0 270) (size 2.6 2.6) (drill 1.3) (layers *.Cu *.Mask) + (net 15 "AC_L") (tstamp 67cca278-8e55-4490-96fd-7f051f3e9e0f)) + (model "${KISYS3DMOD}/TerminalBlock_Phoenix.3dshapes/TerminalBlock_Phoenix_MKDS-3-2-5.08_1x02_P5.08mm_Horizontal.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-3-2-5.08_1x02_P5.08mm_Horizontal" (layer "F.Cu") + (tedit 5B294F11) (tstamp 00000000-0000-0000-0000-000061c5610c) + (at 36.6268 63.3476 -20) + (descr "Terminal Block Phoenix MKDS-3-2-5.08, 2 pins, pitch 5.08mm, size 10.2x11.2mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.farnell.com/datasheets/2138224.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix") + (tags "THT Terminal Block Phoenix MKDS-3-2-5.08 pitch 5.08mm size 10.2x11.2mm^2 drill 1.3mm pad 2.6mm") + (path "/00000000-0000-0000-0000-000061c68cae") + (attr through_hole) + (fp_text reference "J3" (at -1.837849 -6.683269 160) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 60161e6e-bd1a-472f-a2f6-ab30abdd27c6) + ) + (fp_text value "Heater" (at 2.54 6.36 160) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 83a86c62-4fb9-4f9f-8430-d90287a8a23f) + ) + (fp_text user "${REFERENCE}" (at 2.54 3.1 160) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 8dd8208b-8f00-46dd-845b-3074e354552f) + ) + (fp_line (start -2.6 -5.96) (end 7.68 -5.96) (layer "F.SilkS") (width 0.12) (tstamp 0e85faa6-08d2-433a-8dba-94b68bc6b61a)) + (fp_line (start -2.6 -5.96) (end -2.6 5.36) (layer "F.SilkS") (width 0.12) (tstamp 11abf297-11c3-432a-bb0c-2a3739cfa0d1)) + (fp_line (start 6.734 -1.388) (end 6.339 -0.992) (layer "F.SilkS") (width 0.12) (tstamp 17514e32-b34a-432f-841f-f90d121e7094)) + (fp_line (start 1.388 -1.654) (end 1.281 -1.547) (layer "F.SilkS") (width 0.12) (tstamp 386c2db4-075f-4107-915f-ec7fd86964a1)) + (fp_line (start 4.073 1.274) (end 3.693 1.654) (layer "F.SilkS") (width 0.12) (tstamp 5bc5c485-f17f-4572-bf4a-a1333feda1b5)) + (fp_line (start -2.6 -3.9) (end 7.68 -3.9) (layer "F.SilkS") (width 0.12) (tstamp 6f10dd0b-e831-450b-905e-f00696567b49)) + (fp_line (start -2.84 4.86) (end -2.84 5.6) (layer "F.SilkS") (width 0.12) (tstamp 729a339a-0645-45e5-b24b-a228d6c99e84)) + (fp_line (start -2.6 2.3) (end 7.68 2.3) (layer "F.SilkS") (width 0.12) (tstamp 73e93f2f-cd61-4b27-a520-80f014f82db5)) + (fp_line (start 7.68 -5.96) (end 7.68 5.36) (layer "F.SilkS") (width 0.12) (tstamp 82555141-8fac-4c9a-b47f-5700f006ecd9)) + (fp_line (start -1.282 1.547) (end -1.388 1.654) (layer "F.SilkS") (width 0.12) (tstamp 8badfb5a-0d1d-4cff-b641-e760aad090d3)) + (fp_line (start -2.6 4.8) (end 7.68 4.8) (layer "F.SilkS") (width 0.12) (tstamp 944ccde3-76af-4f70-8862-25971954c394)) + (fp_line (start 3.822 0.992) (end 3.427 1.388) (layer "F.SilkS") (width 0.12) (tstamp a51a11a5-242a-42d3-9410-0ab1dddea841)) + (fp_line (start -2.6 5.36) (end 7.68 5.36) (layer "F.SilkS") (width 0.12) (tstamp b4d5796f-12f5-4fd8-a3b2-a83127cc0995)) + (fp_line (start 1.654 -1.388) (end 1.547 -1.281) (layer "F.SilkS") (width 0.12) (tstamp c62ff665-f2d9-46b7-a62e-4931c27bc7fd)) + (fp_line (start -2.84 5.6) (end -2.34 5.6) (layer "F.SilkS") (width 0.12) (tstamp d19dbab8-d038-498a-95d2-d0cf6fc92af9)) + (fp_line (start 6.468 -1.654) (end 6.088 -1.274) (layer "F.SilkS") (width 0.12) (tstamp ef64643f-752e-4e40-b0b3-aa58ea306f34)) + (fp_line (start -1.548 1.281) (end -1.654 1.388) (layer "F.SilkS") (width 0.12) (tstamp f9e1e9fc-f639-4d42-8709-d73d09ee76e5)) + (fp_circle (center 5.08 0) (end 7.26 0) (layer "F.SilkS") (width 0.12) (fill none) (tstamp 8a856551-5729-4d55-ae7f-9ffb1cdeea49)) + (fp_circle (center 0 0) (end 2.18 0) (layer "F.SilkS") (width 0.12) (fill none) (tstamp acf4d4cc-7cf1-425d-9448-1ee25f84ab0a)) + (fp_line (start 8.13 5.8) (end 8.13 -6.4) (layer "F.CrtYd") (width 0.05) (tstamp 19fe5866-3fe1-4744-9007-9e1104dfac1e)) + (fp_line (start 8.13 -6.4) (end -3.04 -6.4) (layer "F.CrtYd") (width 0.05) (tstamp 5a5262a3-e2d5-4621-90bc-4139db41bc39)) + (fp_line (start -3.04 -6.4) (end -3.04 5.8) (layer "F.CrtYd") (width 0.05) (tstamp aeccc2d8-38f6-4cb7-a791-a831a1429cde)) + (fp_line (start -3.04 5.8) (end 8.13 5.8) (layer "F.CrtYd") (width 0.05) (tstamp b793d455-b91f-47d4-bd81-77bf052acdec)) + (fp_line (start 1.273 -1.517) (end -1.517 1.273) (layer "F.Fab") (width 0.1) (tstamp 2f510c24-16c7-4f67-b41c-fbc487e03bd5)) + (fp_line (start 6.353 -1.517) (end 3.564 1.273) (layer "F.Fab") (width 0.1) (tstamp 36eb3e69-1238-4770-a71b-db69db4aae32)) + (fp_line (start -2.54 -5.9) (end 7.62 -5.9) (layer "F.Fab") (width 0.1) (tstamp 4e8d0763-cfa7-45f2-9b95-31399ca5fcf7)) + (fp_line (start 7.62 -5.9) (end 7.62 5.3) (layer "F.Fab") (width 0.1) (tstamp 551aa35f-7384-431e-aa60-2f5490797869)) + (fp_line (start 7.62 5.3) (end -2.04 5.3) (layer "F.Fab") (width 0.1) (tstamp 60a6e05d-f2df-4eba-94b9-02df1bb7ded5)) + (fp_line (start -2.54 2.3) (end 7.62 2.3) (layer "F.Fab") (width 0.1) (tstamp 6e5c56eb-c50a-49eb-8339-3e0638d3ae3f)) + (fp_line (start -2.54 4.8) (end 7.62 4.8) (layer "F.Fab") (width 0.1) (tstamp 7582b7d4-e538-4dc0-a60a-025c3ca10f71)) + (fp_line (start 1.517 -1.273) (end -1.273 1.517) (layer "F.Fab") (width 0.1) (tstamp 8be49da9-d26b-4375-a8ba-1b2ab85ca279)) + (fp_line (start -2.54 -3.9) (end 7.62 -3.9) (layer "F.Fab") (width 0.1) (tstamp b8f2519a-eee5-4ac1-a2e2-5fa2302c51f7)) + (fp_line (start -2.54 4.8) (end -2.54 -5.9) (layer "F.Fab") (width 0.1) (tstamp ba99822c-b1a3-44b8-8762-feb70e0a2e2f)) + (fp_line (start 6.597 -1.273) (end 3.808 1.517) (layer "F.Fab") (width 0.1) (tstamp d926d7f6-5863-46fb-8c97-a103c3a1c7a3)) + (fp_line (start -2.04 5.3) (end -2.54 4.8) (layer "F.Fab") (width 0.1) (tstamp e232dfbd-f485-4cec-941e-73c35b021679)) + (fp_circle (center 5.08 0) (end 7.08 0) (layer "F.Fab") (width 0.1) (fill none) (tstamp 7c80d7c5-1ed4-4e1e-85e7-86f272639013)) + (fp_circle (center 0 0) (end 2 0) (layer "F.Fab") (width 0.1) (fill none) (tstamp fe665288-fb57-47be-bba2-75d4be0d157a)) + (pad "1" thru_hole rect locked (at 0 0 340) (size 2.6 2.6) (drill 1.3) (layers *.Cu *.Mask) + (net 16 "Net-(J3-Pad1)") (tstamp ea44abb9-8c61-4ce8-a1c6-f6a0696853c4)) + (pad "2" thru_hole circle locked (at 5.08 0 340) (size 2.6 2.6) (drill 1.3) (layers *.Cu *.Mask) + (net 15 "AC_L") (tstamp ab393ac7-6693-45dd-b4c9-e4213007dba7)) + (model "${KISYS3DMOD}/TerminalBlock_Phoenix.3dshapes/TerminalBlock_Phoenix_MKDS-3-2-5.08_1x02_P5.08mm_Horizontal.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-3-2-5.08_1x02_P5.08mm_Horizontal" (layer "F.Cu") + (tedit 5B294F11) (tstamp 00000000-0000-0000-0000-000061c5618d) + (at 49.3268 68.6816 -30) + (descr "Terminal Block Phoenix MKDS-3-2-5.08, 2 pins, pitch 5.08mm, size 10.2x11.2mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.farnell.com/datasheets/2138224.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix") + (tags "THT Terminal Block Phoenix MKDS-3-2-5.08 pitch 5.08mm size 10.2x11.2mm^2 drill 1.3mm pad 2.6mm") + (path "/00000000-0000-0000-0000-000061cae0fd") + (attr through_hole) + (fp_text reference "J4" (at 2.54 -6.96 150) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp eab405b9-61ab-4ba2-88e6-d3c578099caa) + ) + (fp_text value "Fan" (at 2.54 6.36 150) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 33d22371-fd00-4f66-90b6-f149b0e48304) + ) + (fp_text user "${REFERENCE}" (at 2.54 3.1 150) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 218c9797-2ffd-4715-897e-b3336f35870b) + ) + (fp_line (start -1.548 1.281) (end -1.654 1.388) (layer "F.SilkS") (width 0.12) (tstamp 1234b260-557f-4a54-bea7-fec346e54f60)) + (fp_line (start -2.6 -5.96) (end -2.6 5.36) (layer "F.SilkS") (width 0.12) (tstamp 1d57f99e-b2d0-4e5a-b447-a9adf14a3e1a)) + (fp_line (start 6.734 -1.388) (end 6.339 -0.992) (layer "F.SilkS") (width 0.12) (tstamp 254c9bc4-6135-49a4-ae35-27ee8dfc1e79)) + (fp_line (start -2.6 -5.96) (end 7.68 -5.96) (layer "F.SilkS") (width 0.12) (tstamp 2554de7a-6517-4277-bacb-32574ececd59)) + (fp_line (start -1.282 1.547) (end -1.388 1.654) (layer "F.SilkS") (width 0.12) (tstamp 34f11a6a-c27b-472c-b0ce-6bb3079d6005)) + (fp_line (start -2.84 4.86) (end -2.84 5.6) (layer "F.SilkS") (width 0.12) (tstamp 3d4d10ad-8a9c-472c-b0e7-d45f822c537d)) + (fp_line (start -2.84 5.6) (end -2.34 5.6) (layer "F.SilkS") (width 0.12) (tstamp 49202714-6a4b-4a4d-8083-ba5bc263e0fe)) + (fp_line (start 3.822 0.992) (end 3.427 1.388) (layer "F.SilkS") (width 0.12) (tstamp 531d22f1-d9d4-4ecb-b462-7a8b3e4457d7)) + (fp_line (start -2.6 4.8) (end 7.68 4.8) (layer "F.SilkS") (width 0.12) (tstamp 585c42bb-6132-4bb2-a022-30619f256497)) + (fp_line (start 4.073 1.274) (end 3.693 1.654) (layer "F.SilkS") (width 0.12) (tstamp 63bba808-60c1-4940-bab8-964b8256df3a)) + (fp_line (start 6.468 -1.654) (end 6.088 -1.274) (layer "F.SilkS") (width 0.12) (tstamp 64308799-5584-4736-99bd-00691bd9225d)) + (fp_line (start 1.388 -1.654) (end 1.281 -1.547) (layer "F.SilkS") (width 0.12) (tstamp 675410d0-45a9-4a96-b239-590c3ee4e7c5)) + (fp_line (start -2.6 2.3) (end 7.68 2.3) (layer "F.SilkS") (width 0.12) (tstamp 96ea2c43-3028-44d1-822f-149e92738a29)) + (fp_line (start 7.68 -5.96) (end 7.68 5.36) (layer "F.SilkS") (width 0.12) (tstamp 9a31abc1-15c9-4ad9-9aa6-3e0e8c8f295b)) + (fp_line (start -2.6 5.36) (end 7.68 5.36) (layer "F.SilkS") (width 0.12) (tstamp 9ff67cb8-eb8d-4558-9ef9-7912b78a4ff4)) + (fp_line (start -2.6 -3.9) (end 7.68 -3.9) (layer "F.SilkS") (width 0.12) (tstamp e19c5679-581b-45cf-903d-62aa22ff582b)) + (fp_line (start 1.654 -1.388) (end 1.547 -1.281) (layer "F.SilkS") (width 0.12) (tstamp e4096750-3ef3-4cf7-82c7-2eb870329a00)) + (fp_circle (center 0 0) (end 2.18 0) (layer "F.SilkS") (width 0.12) (fill none) (tstamp b05671b5-9a96-48da-8f1a-becd2428e4d2)) + (fp_circle (center 5.08 0) (end 7.26 0) (layer "F.SilkS") (width 0.12) (fill none) (tstamp dd7f4a5b-f65c-4396-844f-90bd6ac5da10)) + (fp_line (start 8.13 5.8) (end 8.13 -6.4) (layer "F.CrtYd") (width 0.05) (tstamp 1481cd52-b699-4aa3-8f57-20492f6d16d2)) + (fp_line (start -3.04 -6.4) (end -3.04 5.8) (layer "F.CrtYd") (width 0.05) (tstamp 4527dcd6-0ad3-4f34-ab5f-f4587e7c8e70)) + (fp_line (start -3.04 5.8) (end 8.13 5.8) (layer "F.CrtYd") (width 0.05) (tstamp 564f84f4-89f7-4ea9-9705-73e9a86049dd)) + (fp_line (start 8.13 -6.4) (end -3.04 -6.4) (layer "F.CrtYd") (width 0.05) (tstamp 97c5093e-7621-4249-98c2-b772e615e9bd)) + (fp_line (start 7.62 -5.9) (end 7.62 5.3) (layer "F.Fab") (width 0.1) (tstamp 2de33846-d08c-4869-b08d-ef275739f210)) + (fp_line (start 1.517 -1.273) (end -1.273 1.517) (layer "F.Fab") (width 0.1) (tstamp 30e40613-68b0-470a-a4b8-1063b786973b)) + (fp_line (start -2.54 2.3) (end 7.62 2.3) (layer "F.Fab") (width 0.1) (tstamp 3f88ae98-196c-45b7-b19e-dd0a1143dbd3)) + (fp_line (start -2.54 -3.9) (end 7.62 -3.9) (layer "F.Fab") (width 0.1) (tstamp 51bb14ed-b801-4c37-b4dc-62ed03511064)) + (fp_line (start 1.273 -1.517) (end -1.517 1.273) (layer "F.Fab") (width 0.1) (tstamp 56984da0-6a77-4f73-bf4b-e73471930078)) + (fp_line (start -2.54 4.8) (end -2.54 -5.9) (layer "F.Fab") (width 0.1) (tstamp 6e49e4a6-d06b-41a8-81af-bfec69c86b0d)) + (fp_line (start -2.54 -5.9) (end 7.62 -5.9) (layer "F.Fab") (width 0.1) (tstamp 8216ebc9-d6d8-475f-a441-0b1edbbd82b2)) + (fp_line (start -2.54 4.8) (end 7.62 4.8) (layer "F.Fab") (width 0.1) (tstamp 89454df6-158a-4c65-b9ef-7a60f4a0ef6a)) + (fp_line (start -2.04 5.3) (end -2.54 4.8) (layer "F.Fab") (width 0.1) (tstamp 97c7b994-a6a0-43c7-a593-69e9e687f833)) + (fp_line (start 6.597 -1.273) (end 3.808 1.517) (layer "F.Fab") (width 0.1) (tstamp c0672e0c-7826-4aaa-87e7-29836fe5ed40)) + (fp_line (start 7.62 5.3) (end -2.04 5.3) (layer "F.Fab") (width 0.1) (tstamp df4d919b-145a-416f-b614-75315320d0dc)) + (fp_line (start 6.353 -1.517) (end 3.564 1.273) (layer "F.Fab") (width 0.1) (tstamp f3564f58-1edf-41e3-acb9-9ffbcdd5ab34)) + (fp_circle (center 0 0) (end 2 0) (layer "F.Fab") (width 0.1) (fill none) (tstamp 404c69ad-0060-41f7-8dca-b2a2a920c64f)) + (fp_circle (center 5.08 0) (end 7.08 0) (layer "F.Fab") (width 0.1) (fill none) (tstamp 4204bf02-f2f6-4c12-8a88-aacbd18b0eb2)) + (pad "1" thru_hole rect locked (at 0 0 330) (size 2.6 2.6) (drill 1.3) (layers *.Cu *.Mask) + (net 15 "AC_L") (tstamp 52c46aaa-ee89-4a7d-af8c-681ad1b5a2ac)) + (pad "2" thru_hole circle locked (at 5.08 0 330) (size 2.6 2.6) (drill 1.3) (layers *.Cu *.Mask) + (net 98 "Net-(J4-Pad2)") (tstamp a9fbfeec-ef47-4496-9d8b-92d5db3b4ba4)) + (model "${KISYS3DMOD}/TerminalBlock_Phoenix.3dshapes/TerminalBlock_Phoenix_MKDS-3-2-5.08_1x02_P5.08mm_Horizontal.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Converter_ACDC:Converter_ACDC_HiLink_HLK-PMxx" (layer "F.Cu") + (tedit 61C4D38A) (tstamp 00000000-0000-0000-0000-000061c57000) + (at 22.9108 32.6136) + (descr "ACDC-Converter, 3W, HiLink, HLK-PMxx, THT, http://www.hlktech.net/product_detail.php?ProId=54") + (tags "ACDC-Converter 3W THT HiLink board mount module") + (path "/00000000-0000-0000-0000-000061c4985c") + (attr through_hole) + (fp_text reference "PS1" (at 23.0632 -8.4836 180) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 8e320e4b-3a05-4ae2-a7d8-d325de6647e4) + ) + (fp_text value "HLK-PM03" (at 15.79 13.85) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 5d8b39e9-61ac-4771-92c7-ef3544875c76) + ) + (fp_text user "${REFERENCE}" (at 14.68 1.17) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp c2d68de3-c7fc-4c00-9904-3a06a2dd15ec) + ) + (fp_line (start -2.4 12.6) (end 31.8 12.6) (layer "F.SilkS") (width 0.12) (tstamp 25c6461d-65bd-4f9d-8d23-53a7a5a4cf99)) + (fp_line (start -2.4 -7.6) (end -2.4 12.6) (layer "F.SilkS") (width 0.12) (tstamp 54b26366-bfed-4686-ac6f-6f8fdf4dd579)) + (fp_line (start -2.79 -1) (end -2.79 1.01) (layer "F.SilkS") (width 0.12) (tstamp 577ac7e0-11cc-4bfd-a7c9-60ba18f4b610)) + (fp_line (start 31.8 12.6) (end 31.8 -7.6) (layer "F.SilkS") (width 0.12) (tstamp af11b5d4-b948-4a4d-83b7-61a2eddb7073)) + (fp_line (start 31.8 -7.6) (end -2.4 -7.6) (layer "F.SilkS") (width 0.12) (tstamp cc951c8c-6565-4675-8202-67a5feb8e39d)) + (fp_line (start 31.95 -7.75) (end -2.55 -7.75) (layer "F.CrtYd") (width 0.05) (tstamp 385d6f75-ad62-45ef-839c-ad542b758fc9)) + (fp_line (start 31.95 12.75) (end 31.95 -7.75) (layer "F.CrtYd") (width 0.05) (tstamp 4b7a6b5d-cc83-42b4-963a-d7c77094cbf8)) + (fp_line (start -2.55 12.75) (end 31.95 12.75) (layer "F.CrtYd") (width 0.05) (tstamp b187bfe2-d910-442b-a572-d8467e8ad84b)) + (fp_line (start -2.55 -7.75) (end -2.55 12.75) (layer "F.CrtYd") (width 0.05) (tstamp ca3126d0-0baf-469b-910d-2d5a3e418287)) + (fp_line (start -2.3 12.5) (end 31.7 12.5) (layer "F.Fab") (width 0.1) (tstamp 2c4a2838-b56d-4cc5-b74e-a25d6f82c635)) + (fp_line (start -2.3 -7.5) (end 31.7 -7.5) (layer "F.Fab") (width 0.1) (tstamp 3772b6e1-09a3-4318-87f2-63efabcd6553)) + (fp_line (start -1.29 0) (end -2.29 1) (layer "F.Fab") (width 0.1) (tstamp 3e9777df-579e-4be4-ad26-f283d50bc8c8)) + (fp_line (start -2.29 -1) (end -1.29 0) (layer "F.Fab") (width 0.1) (tstamp 709fafef-5642-484a-9bef-913397161d11)) + (fp_line (start 31.7 12.5) (end 31.7 -7.5) (layer "F.Fab") (width 0.1) (tstamp 844ddfa1-8aa1-41b5-8ec0-fa56a9f38309)) + (fp_line (start -2.3 -1) (end -2.3 -7.5) (layer "F.Fab") (width 0.1) (tstamp 896b6546-d2f6-4d55-bfbc-330587862cb3)) + (fp_line (start -2.3 12.5) (end -2.3 0.99) (layer "F.Fab") (width 0.1) (tstamp e475e59f-8c36-4a7c-b677-c4e1927b8f07)) + (pad "1" thru_hole rect locked (at 0 0) (size 2.3 2) (drill 1) (layers *.Cu *.Mask) + (net 15 "AC_L") (tstamp 367602ba-2d1f-4eff-9b25-d6cc1f3645be)) + (pad "2" thru_hole circle locked (at 0 5) (size 2.3 2.3) (drill 1) (layers *.Cu *.Mask) + (net 27 "AC_N") (tstamp da9ccee5-c75e-4ddf-8bdc-7edbca471ab0)) + (pad "3" thru_hole circle locked (at 29.4 -5.2) (size 2.3 2.3) (drill 1) (layers *.Cu *.Mask) + (net 3 "GND") (tstamp 3bfa7665-2c76-4dd7-b567-937ce74e944b)) + (pad "4" thru_hole circle locked (at 29.4 10.2) (size 2.3 2.3) (drill 1) (layers *.Cu *.Mask) + (net 2 "+3V3") (tstamp 20ff5bfa-cada-4910-b31c-61b8a901209f)) + (model "${my_additions}/Hi-Link_HLK_3W.step" + (offset (xyz 14.7 -2.5 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Package_DIP:DIP-6_W7.62mm_LongPads" (layer "F.Cu") + (tedit 5A02E8C5) (tstamp 00000000-0000-0000-0000-000061c57c8a) + (at 66.8528 52.1716 180) + (descr "6-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), LongPads") + (tags "THT DIP DIL PDIP 2.54mm 7.62mm 300mil LongPads") + (path "/00000000-0000-0000-0000-000061c4be67") + (attr through_hole) + (fp_text reference "U3" (at 3.81 7.112) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 47e14901-7162-4843-b663-d42899328e2f) + ) + (fp_text value "MOC3023M" (at 3.81 7.41) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 56ae799d-1a7b-40dd-a7a2-c9588e8878aa) + ) + (fp_text user "${REFERENCE}" (at 3.81 2.54) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp e1639b20-63e4-4003-9dab-1c04a9e7ecdc) + ) + (fp_line (start 1.56 6.41) (end 6.06 6.41) (layer "F.SilkS") (width 0.12) (tstamp 2107cc64-e332-4fab-8c6f-77f7834f6ff6)) + (fp_line (start 2.81 -1.33) (end 1.56 -1.33) (layer "F.SilkS") (width 0.12) (tstamp 3464c54d-9dc0-4751-915e-02b0852ea5b4)) + (fp_line (start 1.56 -1.33) (end 1.56 6.41) (layer "F.SilkS") (width 0.12) (tstamp 97f53409-4134-4ddf-a1a2-db5381a62e91)) + (fp_line (start 6.06 6.41) (end 6.06 -1.33) (layer "F.SilkS") (width 0.12) (tstamp d048386d-8f42-439b-ba67-5c19246185cd)) + (fp_line (start 6.06 -1.33) (end 4.81 -1.33) (layer "F.SilkS") (width 0.12) (tstamp e43dc174-c47b-4125-abd9-171f9d83dda1)) + (fp_arc (start 4.81 -1.33) (mid 3.81 -0.33) (end 2.81 -1.33) (layer "F.SilkS") (width 0.12) (tstamp ee690958-97bb-44c8-98b0-d45937d35323)) + (fp_line (start -1.45 -1.55) (end -1.45 6.6) (layer "F.CrtYd") (width 0.05) (tstamp 10597f65-18ef-4412-ae31-0429cbac4ecb)) + (fp_line (start 9.1 6.6) (end 9.1 -1.55) (layer "F.CrtYd") (width 0.05) (tstamp 45bf64b1-6c35-4f5c-9b9a-1dec13ac26f7)) + (fp_line (start -1.45 6.6) (end 9.1 6.6) (layer "F.CrtYd") (width 0.05) (tstamp 81e2d8db-0cb3-4254-aa06-36ad79d8866f)) + (fp_line (start 9.1 -1.55) (end -1.45 -1.55) (layer "F.CrtYd") (width 0.05) (tstamp 82a96856-2d29-41a3-baaf-6fb9f80436bf)) + (fp_line (start 0.635 6.35) (end 0.635 -0.27) (layer "F.Fab") (width 0.1) (tstamp 38d6f156-9964-408a-94ca-06243a83995a)) + (fp_line (start 6.985 6.35) (end 0.635 6.35) (layer "F.Fab") (width 0.1) (tstamp 40006997-19f4-4b9a-9539-74d13a46f9aa)) + (fp_line (start 1.635 -1.27) (end 6.985 -1.27) (layer "F.Fab") (width 0.1) (tstamp 41ed7f57-2519-42ab-b3e1-eb2c76808c7a)) + (fp_line (start 0.635 -0.27) (end 1.635 -1.27) (layer "F.Fab") (width 0.1) (tstamp e195134d-9cdc-4654-89d1-7d07b5547ceb)) + (fp_line (start 6.985 -1.27) (end 6.985 6.35) (layer "F.Fab") (width 0.1) (tstamp e688ac89-f9e6-40ee-b368-6626885d7100)) + (pad "1" thru_hole rect locked (at 0 0 180) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask) + (net 38 "Net-(R7-Pad1)") (tstamp 1d252e3b-6f39-4b00-8ce1-60fff513a670)) + (pad "2" thru_hole oval locked (at 0 2.54 180) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask) + (net 3 "GND") (tstamp ca7fa4d7-ad82-4348-93ed-a42ba6cda863)) + (pad "3" thru_hole oval locked (at 0 5.08 180) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask) + (net 94 "Net-(U3-Pad3)") (tstamp fa4bccb9-0e8b-43bb-abcb-16ae72a67159)) + (pad "4" thru_hole oval locked (at 7.62 5.08 180) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask) + (net 29 "Net-(Q2-Pad3)") (tstamp 67007bdf-18dc-49e5-b4c5-20806dd8ae47)) + (pad "5" thru_hole oval locked (at 7.62 2.54 180) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask) + (net 95 "Net-(U3-Pad5)") (tstamp 6f95ddaa-80fa-4069-a6bb-a91ff63b9049)) + (pad "6" thru_hole oval locked (at 7.62 0 180) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask) + (net 42 "Net-(R10-Pad2)") (tstamp 4c3be2f7-b777-4bb9-8e2d-f66137c61aad)) + (model "${KISYS3DMOD}/Package_DIP.3dshapes/DIP-6_W7.62mm.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "MountingHole:MountingHole_3.2mm_M3" (layer "F.Cu") + (tedit 56D1B4CB) (tstamp 00000000-0000-0000-0000-000061c5be32) + (at 25.7048 63.0936) + (descr "Mounting Hole 3.2mm, no annular, M3") + (tags "mounting hole 3.2mm no annular m3") + (path "/00000000-0000-0000-0000-000061f02955") + (attr exclude_from_pos_files exclude_from_bom) + (fp_text reference "H1" (at -0.0508 0.0508) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp ffd50db1-1a04-4f59-a97d-d7442830a717) + ) + (fp_text value "MountingHole" (at 0 4.2) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 5d2e968d-f1c0-467e-8afc-e3e8fb493754) + ) + (fp_text user "${REFERENCE}" (at 0.3 0) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp cfffec17-9ef9-4df2-a7ec-435af73846d3) + ) + (fp_circle (center 0 0) (end 3.2 0) (layer "Cmts.User") (width 0.15) (fill none) (tstamp 7de93f33-e055-4d78-a120-1f11d65eca51)) + (fp_circle (center 0 0) (end 3.45 0) (layer "F.CrtYd") (width 0.05) (fill none) (tstamp 1c94d319-3c15-4664-92cd-4988efd7ca90)) + (pad "" np_thru_hole circle locked (at 0 0) (size 3.2 3.2) (drill 3.2) (layers *.Cu *.Mask) (tstamp 1e419e93-afaa-4052-a5ea-ad4a074ccdb8)) + ) + + (footprint "Package_TO_SOT_THT:TO-220-3_Vertical" (layer "F.Cu") + (tedit 5AC8BA0D) (tstamp 00000000-0000-0000-0000-000061c5da06) + (at 40.4368 52.6796 -20) + (descr "TO-220-3, Vertical, RM 2.54mm, see https://www.vishay.com/docs/66542/to-220-1.pdf") + (tags "TO-220-3 Vertical RM 2.54mm") + (path "/00000000-0000-0000-0000-000061c4cfc6") + (attr through_hole) + (fp_text reference "Q2" (at 2.54 -4.27 160) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 52e72acd-82e5-45eb-8a00-1769e3a3607e) + ) + (fp_text value "BT138-800" (at 2.54 2.5 160) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 698b777a-23cd-4f67-96dd-f3c1be0adece) + ) + (fp_text user "${REFERENCE}" (at 2.54 -4.27 160) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 03b0de4b-81a4-40d4-b72c-7cb62293073b) + ) + (fp_line (start 4.391 -3.27) (end 4.391 -1.76) (layer "F.SilkS") (width 0.12) (tstamp 0412d70e-d2b2-4c21-bd64-d7d40a794e37)) + (fp_line (start -2.58 1.371) (end 7.66 1.371) (layer "F.SilkS") (width 0.12) (tstamp 2149c33b-7c9a-44a4-b771-311fdc6fd713)) + (fp_line (start -2.58 -1.76) (end 7.66 -1.76) (layer "F.SilkS") (width 0.12) (tstamp 6145b426-a6f2-4092-bc27-1f122cdb5b3d)) + (fp_line (start 0.69 -3.27) (end 0.69 -1.76) (layer "F.SilkS") (width 0.12) (tstamp 90812fac-a7cc-4965-9687-501e1e0f6b6d)) + (fp_line (start -2.58 -3.27) (end -2.58 1.371) (layer "F.SilkS") (width 0.12) (tstamp 9377d41e-9819-45a3-9000-84eeac1a5a41)) + (fp_line (start 7.66 -3.27) (end 7.66 1.371) (layer "F.SilkS") (width 0.12) (tstamp c7d9ae4f-c50a-494c-9e57-a695e83a9bb1)) + (fp_line (start -2.58 -3.27) (end 7.66 -3.27) (layer "F.SilkS") (width 0.12) (tstamp fa77b02a-77dc-4a82-812d-1aebdf64a56b)) + (fp_line (start 7.79 -3.4) (end -2.71 -3.4) (layer "F.CrtYd") (width 0.05) (tstamp 05c7f5ee-f86a-4d31-a166-3e027c16b0b1)) + (fp_line (start -2.71 -3.4) (end -2.71 1.51) (layer "F.CrtYd") (width 0.05) (tstamp 408eee29-3ac2-4958-a5b3-06cc049c6f37)) + (fp_line (start -2.71 1.51) (end 7.79 1.51) (layer "F.CrtYd") (width 0.05) (tstamp ab49ad20-6eed-404e-8f55-f5512da30c46)) + (fp_line (start 7.79 1.51) (end 7.79 -3.4) (layer "F.CrtYd") (width 0.05) (tstamp b2f38a5e-cecc-4ab0-a06f-06e09cfc36fe)) + (fp_line (start 7.54 1.25) (end 7.54 -3.15) (layer "F.Fab") (width 0.1) (tstamp 485f940a-cf4c-4b65-98b4-7c2026584a28)) + (fp_line (start -2.46 1.25) (end 7.54 1.25) (layer "F.Fab") (width 0.1) (tstamp 590ec20b-8486-445f-a510-54c39a5a5cfc)) + (fp_line (start -2.46 -3.15) (end -2.46 1.25) (layer "F.Fab") (width 0.1) (tstamp 69c4ea53-2852-4dd6-a60e-3a2d677a95b4)) + (fp_line (start 0.69 -3.15) (end 0.69 -1.88) (layer "F.Fab") (width 0.1) (tstamp 9d3c6a9e-e18a-4e48-8ea8-dcb6ee35ea4b)) + (fp_line (start -2.46 -1.88) (end 7.54 -1.88) (layer "F.Fab") (width 0.1) (tstamp a593ecfd-e8c2-4eda-8aec-af1cd687a5aa)) + (fp_line (start 7.54 -3.15) (end -2.46 -3.15) (layer "F.Fab") (width 0.1) (tstamp a5c84d1a-54e3-4810-b538-a06df8f6791c)) + (fp_line (start 4.39 -3.15) (end 4.39 -1.88) (layer "F.Fab") (width 0.1) (tstamp af51591d-653f-4e17-89a9-d0fd9ea27fbd)) + (pad "1" thru_hole rect locked (at 0 0 340) (size 1.905 2) (drill 1.1) (layers *.Cu *.Mask) + (net 27 "AC_N") (tstamp 9adf7a3e-aa98-4c45-8d91-521a7b9e4280)) + (pad "2" thru_hole oval locked (at 2.54 0 340) (size 1.905 2) (drill 1.1) (layers *.Cu *.Mask) + (net 16 "Net-(J3-Pad1)") (tstamp 5f1c4111-caf2-4b6c-8249-b3b24167090d)) + (pad "3" thru_hole oval locked (at 5.08 0 340) (size 1.905 2) (drill 1.1) (layers *.Cu *.Mask) + (net 29 "Net-(Q2-Pad3)") (tstamp 9b2e4f0e-48f2-4d7f-83e1-f04cdf85c7cb)) + (model "${KISYS3DMOD}/Package_TO_SOT_THT.3dshapes/TO-220-3_Vertical.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder" (layer "F.Cu") + (tedit 5F68FEEE) (tstamp 00000000-0000-0000-0000-000061c6024a) + (at 67.852799 55.473601) + (descr "Resistor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") + (tags "resistor handsolder") + (path "/00000000-0000-0000-0000-000061d21cef") + (attr smd) + (fp_text reference "R7" (at -0.034799 1.676399) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp f79e711b-0b53-4698-b453-7fc2840195d3) + ) + (fp_text value "270" (at 0 1.65) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp c2ad0176-b80b-43df-a11c-a276ae628f22) + ) + (fp_text user "${REFERENCE}" (at 0 0) (layer "F.Fab") + (effects (font (size 0.5 0.5) (thickness 0.08))) + (tstamp 5fa04512-ad16-4cd2-82b9-055f2df4f5cc) + ) + (fp_line (start -0.227064 -0.735) (end 0.227064 -0.735) (layer "F.SilkS") (width 0.12) (tstamp 30329d40-6b1b-405d-990a-d2aa896e7c2b)) + (fp_line (start -0.227064 0.735) (end 0.227064 0.735) (layer "F.SilkS") (width 0.12) (tstamp 4ca55795-c7ab-4811-ae9a-d47a22197f86)) + (fp_line (start -1.85 0.95) (end -1.85 -0.95) (layer "F.CrtYd") (width 0.05) (tstamp 63907ad7-83ef-4912-8361-39f075a9e31c)) + (fp_line (start 1.85 -0.95) (end 1.85 0.95) (layer "F.CrtYd") (width 0.05) (tstamp 7096943a-a21b-477e-ac02-febd82be7834)) + (fp_line (start 1.85 0.95) (end -1.85 0.95) (layer "F.CrtYd") (width 0.05) (tstamp 9251f717-fd97-470a-b49e-a476838b1eae)) + (fp_line (start -1.85 -0.95) (end 1.85 -0.95) (layer "F.CrtYd") (width 0.05) (tstamp e08aee10-e345-4822-a9a1-1b4852a37cf3)) + (fp_line (start 1 -0.625) (end 1 0.625) (layer "F.Fab") (width 0.1) (tstamp 04346339-ca3f-4565-b1b4-b0632cb28799)) + (fp_line (start -1 -0.625) (end 1 -0.625) (layer "F.Fab") (width 0.1) (tstamp 1023af2c-3581-49c3-94e5-14eec06f7026)) + (fp_line (start 1 0.625) (end -1 0.625) (layer "F.Fab") (width 0.1) (tstamp 8d223dd8-51db-4d99-a063-a496940c1e3f)) + (fp_line (start -1 0.625) (end -1 -0.625) (layer "F.Fab") (width 0.1) (tstamp 90356559-c1e4-4028-9e8a-b4462c5f5bbd)) + (pad "1" smd roundrect locked (at -1 0) (size 1.2 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.2083325) + (net 38 "Net-(R7-Pad1)") (tstamp 6134c6a8-7ae9-4763-93e4-219d2ef9baaa)) + (pad "2" smd roundrect locked (at 1 0) (size 1.2 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.2083325) + (net 37 "Gate_Heater") (tstamp a712dab3-769f-41c7-9582-1042e62acf00)) + (model "${KISYS3DMOD}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Package_TO_SOT_SMD:SOT-23_Handsoldering" (layer "F.Cu") + (tedit 60425E26) (tstamp 00000000-0000-0000-0000-000061c653a3) + (at 93.8784 61.9506 -50) + (descr "SOT-23, Standard") + (tags "SOT-23") + (path "/00000000-0000-0000-0000-000061c52c32") + (attr smd) + (fp_text reference "Q1" (at 0 -2.5 130) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp d8f5731e-cc44-4a4a-8e2f-7d8b571ffcd3) + ) + (fp_text value "LBC817" (at 0 2.5 130) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 08376695-adfc-45c0-81f4-d32913ac2dbc) + ) + (fp_text user "${REFERENCE}" (at 0 0 40) (layer "F.Fab") + (effects (font (size 0.5 0.5) (thickness 0.075))) + (tstamp 8d22fc8b-455c-4813-b741-a009eb2798ab) + ) + (fp_line (start 0.76 1.58) (end -0.7 1.58) (layer "F.SilkS") (width 0.12) (tstamp 3bb1ee9f-633e-44b9-b7ea-0e03c4038230)) + (fp_line (start 0.76 -1.58) (end -1.4 -1.58) (layer "F.SilkS") (width 0.12) (tstamp 6092b141-3f6f-4302-aad3-7d8a5cbd8c2e)) + (fp_line (start 0.76 1.58) (end 0.76 0.65) (layer "F.SilkS") (width 0.12) (tstamp c5bc7fd5-6b63-4d0a-9aed-8bc228d98693)) + (fp_line (start 0.76 -1.58) (end 0.76 -0.65) (layer "F.SilkS") (width 0.12) (tstamp c6bcd254-142d-498e-ac2d-2b14b5ff8be1)) + (fp_line (start -1.7 -1.75) (end 1.7 -1.75) (layer "F.CrtYd") (width 0.05) (tstamp 2fccc658-dbb0-4d67-a668-329b5eba8985)) + (fp_line (start -1.7 1.75) (end -1.7 -1.75) (layer "F.CrtYd") (width 0.05) (tstamp a2471d8f-ae62-490e-95db-279c3f2a6643)) + (fp_line (start 1.7 -1.75) (end 1.7 1.75) (layer "F.CrtYd") (width 0.05) (tstamp dcba4abb-a597-4ec6-8b48-5c4c6be9b1ea)) + (fp_line (start 1.7 1.75) (end -1.7 1.75) (layer "F.CrtYd") (width 0.05) (tstamp fec30dbc-031d-4114-b161-e73327decda1)) + (fp_line (start -0.7 -0.95) (end -0.15 -1.52) (layer "F.Fab") (width 0.1) (tstamp 000c581e-901d-498b-912c-f8e3a2344125)) + (fp_line (start -0.7 -0.95) (end -0.7 1.5) (layer "F.Fab") (width 0.1) (tstamp 078f0aa1-c625-457d-9b31-b79fb7cd5402)) + (fp_line (start -0.7 1.52) (end 0.7 1.52) (layer "F.Fab") (width 0.1) (tstamp 1d77d191-b86c-4280-a905-4fab611cc064)) + (fp_line (start -0.15 -1.52) (end 0.7 -1.52) (layer "F.Fab") (width 0.1) (tstamp 20b007e7-9b6c-4938-8eb1-b3a6f0b96d0e)) + (fp_line (start 0.7 -1.52) (end 0.7 1.52) (layer "F.Fab") (width 0.1) (tstamp d61c0e26-9274-443c-aa4d-c5d9ed92cfb3)) + (pad "1" smd rect locked (at -1.35 -0.95 310) (size 1.56 0.8) (layers "F.Cu" "F.Paste" "F.Mask") + (net 28 "Net-(Q1-Pad1)") (tstamp 4ed81402-2e3c-445c-9f8f-cd658fd04c5b)) + (pad "2" smd rect locked (at -1.35 0.95 310) (size 1.56 0.8) (layers "F.Cu" "F.Paste" "F.Mask") + (net 3 "GND") (tstamp 134ecdd9-a188-4f4e-9b12-c3544e85a21f)) + (pad "3" smd rect locked (at 1.35 0 310) (size 1.56 0.8) (layers "F.Cu" "F.Paste" "F.Mask") + (net 1 "Net-(BZ1-Pad2)") (tstamp 2e900d8b-1e4e-4994-8e07-5c583225889a)) + (model "${KISYS3DMOD}/Package_TO_SOT_SMD.3dshapes/SOT-23.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder" (layer "F.Cu") + (tedit 5F68FEEE) (tstamp 00000000-0000-0000-0000-000061c653db) + (at 91.2876 57.3532 130) + (descr "Resistor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") + (tags "resistor handsolder") + (path "/00000000-0000-0000-0000-000061c6d131") + (attr smd) + (fp_text reference "R1" (at -0.038039 1.625949 130) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 0f9963ca-761b-400b-9930-76d75c59eddf) + ) + (fp_text value "220" (at 0 1.65 130) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 239ff3f7-1465-42e1-ac40-6c3653097c9c) + ) + (fp_text user "${REFERENCE}" (at 0 0 130) (layer "F.Fab") + (effects (font (size 0.5 0.5) (thickness 0.08))) + (tstamp 52a73de5-49e3-4df0-bc41-2dba4ec5f656) + ) + (fp_line (start -0.227064 -0.735) (end 0.227064 -0.735) (layer "F.SilkS") (width 0.12) (tstamp 5533052a-9b9e-4926-a887-7194ca737350)) + (fp_line (start -0.227064 0.735) (end 0.227064 0.735) (layer "F.SilkS") (width 0.12) (tstamp b6828abd-da5c-4cdb-a965-e9c2404ffbcc)) + (fp_line (start 1.85 0.95) (end -1.85 0.95) (layer "F.CrtYd") (width 0.05) (tstamp 05456292-ecf7-4de6-94d6-71f8f0d14ce3)) + (fp_line (start -1.85 -0.95) (end 1.85 -0.95) (layer "F.CrtYd") (width 0.05) (tstamp 28e336e8-63d2-4902-9e01-62c81c4735e1)) + (fp_line (start -1.85 0.95) (end -1.85 -0.95) (layer "F.CrtYd") (width 0.05) (tstamp 4164e5a7-560f-4dc4-a09c-db7ead7bc4da)) + (fp_line (start 1.85 -0.95) (end 1.85 0.95) (layer "F.CrtYd") (width 0.05) (tstamp 5b945b7b-9a9d-4253-9e2f-16e0e48bf7a1)) + (fp_line (start 1 0.625) (end -1 0.625) (layer "F.Fab") (width 0.1) (tstamp 0ee496dc-383a-4840-9408-60725815189e)) + (fp_line (start -1 -0.625) (end 1 -0.625) (layer "F.Fab") (width 0.1) (tstamp 2ce6c1e8-76ec-4929-b35a-69735540282e)) + (fp_line (start 1 -0.625) (end 1 0.625) (layer "F.Fab") (width 0.1) (tstamp c601871b-62d9-47e8-a825-810e68ede476)) + (fp_line (start -1 0.625) (end -1 -0.625) (layer "F.Fab") (width 0.1) (tstamp ed01080d-6486-46a2-a195-31f4a12caba2)) + (pad "1" smd roundrect locked (at -1 0 130) (size 1.2 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.2083325) + (net 28 "Net-(Q1-Pad1)") (tstamp 2f65c423-cba7-4dc7-88c6-df47025acced)) + (pad "2" smd roundrect locked (at 1 0 130) (size 1.2 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.2083325) + (net 31 "Buzzer") (tstamp 1d348e95-4983-4fd4-88b1-95097b6fb0b5)) + (model "${KISYS3DMOD}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "my_additions:Buzzer_D9_H5.5" (layer "F.Cu") + (tedit 604A9093) (tstamp 00000000-0000-0000-0000-000061c65403) + (at 64.6684 80.6704 35) + (tags "buzzer") + (path "/00000000-0000-0000-0000-000061c556db") + (attr through_hole) + (fp_text reference "BZ1" (at 0 0 125) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 007004a8-fac4-4c5b-b5ca-3b6862ba8705) + ) + (fp_text value "Buzzer" (at 0.1 5.6 35) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 673d1305-6e10-4720-a4a6-32faf37a4652) + ) + (fp_line (start -2.6 -1.5) (end -2.2 -1.5) (layer "F.SilkS") (width 0.12) (tstamp 6b07bdec-6acd-476b-a320-2c7daf1b153a)) + (fp_line (start -2.4 -1.3) (end -2.4 -1.7) (layer "F.SilkS") (width 0.12) (tstamp e6aa4c4e-fdc0-498e-88e8-3f7096878b0e)) + (fp_circle (center 0 0) (end 4.5 0) (layer "F.SilkS") (width 0.12) (fill none) (tstamp fca3fcb2-bf03-40f7-b859-fcbf4f94b4da)) + (pad "1" thru_hole rect locked (at -2.5 0 35) (size 1.8 1.8) (drill 0.9) (layers *.Cu *.Mask) + (net 2 "+3V3") (tstamp 0fdf5003-d22f-42f6-b88e-814652c83579)) + (pad "2" thru_hole circle locked (at 2.5 0 35) (size 1.8 1.8) (drill 0.9) (layers *.Cu *.Mask) + (net 1 "Net-(BZ1-Pad2)") (tstamp 94660a53-5e30-4ff2-83fd-89df79b19ff5)) + (model "$(my_additions)/Buzzer_D9_H5.5.step" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder" (layer "F.Cu") + (tedit 5F68FEEF) (tstamp 00000000-0000-0000-0000-000061c6669e) + (at 86.9696 60.0964 40) + (descr "Capacitor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf, https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing), generated with kicad-footprint-generator") + (tags "capacitor handsolder") + (path "/00000000-0000-0000-0000-000061e5fba3") + (attr smd) + (fp_text reference "C7" (at 0 -1.68 40) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp a8aefa0a-26a7-4ef2-9866-e4876bc87541) + ) + (fp_text value "100n" (at 0 1.68 40) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp f38bc27e-7c4e-4036-af09-a4bd070598c4) + ) + (fp_text user "${REFERENCE}" (at 0 0 40) (layer "F.Fab") + (effects (font (size 0.5 0.5) (thickness 0.08))) + (tstamp 5cc04f96-ed55-40e0-9957-4d7a9374cb24) + ) + (fp_line (start -0.261252 -0.735) (end 0.261252 -0.735) (layer "F.SilkS") (width 0.12) (tstamp 432c48a3-9ea4-4759-93e3-38492b4d9c17)) + (fp_line (start -0.261252 0.735) (end 0.261252 0.735) (layer "F.SilkS") (width 0.12) (tstamp 5b3a0c69-ec6b-49c6-a895-2e83834881b1)) + (fp_line (start -1.88 0.98) (end -1.88 -0.98) (layer "F.CrtYd") (width 0.05) (tstamp 82dfdade-d7bc-4f65-82c6-43b60ca30cad)) + (fp_line (start 1.88 -0.98) (end 1.88 0.98) (layer "F.CrtYd") (width 0.05) (tstamp b1ee69e6-0d7b-45ab-aefa-e7cedd7e9889)) + (fp_line (start 1.88 0.98) (end -1.88 0.98) (layer "F.CrtYd") (width 0.05) (tstamp bde78249-d39a-49cd-9460-baa8f6571ac7)) + (fp_line (start -1.88 -0.98) (end 1.88 -0.98) (layer "F.CrtYd") (width 0.05) (tstamp ee02988c-4c29-4151-9ea6-ee14242fbd5b)) + (fp_line (start -1 -0.625) (end 1 -0.625) (layer "F.Fab") (width 0.1) (tstamp 5b7001fa-12e7-400f-951f-c8ac50b186c0)) + (fp_line (start 1 -0.625) (end 1 0.625) (layer "F.Fab") (width 0.1) (tstamp 8dee5bf6-ace8-4908-9383-1db4a653cd44)) + (fp_line (start 1 0.625) (end -1 0.625) (layer "F.Fab") (width 0.1) (tstamp f0bcd72d-00cc-4f3d-9b18-2df0f2c91c0b)) + (fp_line (start -1 0.625) (end -1 -0.625) (layer "F.Fab") (width 0.1) (tstamp f8cd2f43-b65e-4f0e-90d5-362928507e1a)) + (pad "1" smd roundrect locked (at -1.0375 0 40) (size 1.175 1.45) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.2127659574) + (net 6 "NRST") (tstamp 8ff325f1-9ddd-4445-97ab-4b364771d3bd)) + (pad "2" smd roundrect locked (at 1.0375 0 40) (size 1.175 1.45) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.2127659574) + (net 3 "GND") (tstamp de06208e-1a11-460b-81d4-1d9bee3d3780)) + (model "${KISYS3DMOD}/Capacitor_SMD.3dshapes/C_0805_2012Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder" (layer "F.Cu") + (tedit 5F68FEEE) (tstamp 00000000-0000-0000-0000-000061c67ec5) + (at 83.642646 63.531674) + (descr "Resistor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") + (tags "resistor handsolder") + (path "/00000000-0000-0000-0000-000061c5e1f7") + (attr smd) + (fp_text reference "R2" (at 0 -1.65) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 6e22d234-ebe2-430f-ada4-4fb6c4ef0b65) + ) + (fp_text value "0" (at 0 1.65) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp cde70c54-8d4f-45f5-b5d4-f9c25d8f5579) + ) + (fp_text user "${REFERENCE}" (at 0 0) (layer "F.Fab") + (effects (font (size 0.5 0.5) (thickness 0.08))) + (tstamp 9e4a2af3-3e03-4cb3-ab97-2156d081d76d) + ) + (fp_line (start -0.227064 -0.735) (end 0.227064 -0.735) (layer "F.SilkS") (width 0.12) (tstamp 730873f2-04e8-490e-8560-5dbe6ab99ba3)) + (fp_line (start -0.227064 0.735) (end 0.227064 0.735) (layer "F.SilkS") (width 0.12) (tstamp b6663a1f-bba7-4851-8985-a530b2a271b0)) + (fp_line (start 1.85 -0.95) (end 1.85 0.95) (layer "F.CrtYd") (width 0.05) (tstamp 61d74b3f-7159-433e-aad7-d723e396adf2)) + (fp_line (start 1.85 0.95) (end -1.85 0.95) (layer "F.CrtYd") (width 0.05) (tstamp 631e00cd-5f8d-4070-9de9-ade37ffea80d)) + (fp_line (start -1.85 0.95) (end -1.85 -0.95) (layer "F.CrtYd") (width 0.05) (tstamp 927730e7-e5f9-482c-a809-0140dbdb0aba)) + (fp_line (start -1.85 -0.95) (end 1.85 -0.95) (layer "F.CrtYd") (width 0.05) (tstamp b7fca307-c7db-41ce-a09b-d748944431ab)) + (fp_line (start 1 0.625) (end -1 0.625) (layer "F.Fab") (width 0.1) (tstamp 02e40efc-c221-4722-8f98-d436cbce8f32)) + (fp_line (start -1 -0.625) (end 1 -0.625) (layer "F.Fab") (width 0.1) (tstamp 1ba45416-ef7f-41dd-8118-af6c7afa5330)) + (fp_line (start -1 0.625) (end -1 -0.625) (layer "F.Fab") (width 0.1) (tstamp 4d5a8efc-644a-4118-bd71-80f487cbbd89)) + (fp_line (start 1 -0.625) (end 1 0.625) (layer "F.Fab") (width 0.1) (tstamp ce2247a8-1d42-4377-ad5c-64207daba670)) + (pad "1" smd roundrect locked (at -1 0) (size 1.2 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.2083325) + (net 32 "Net-(R2-Pad1)") (tstamp 3931e2a8-a16f-46ee-97e0-aad0d34d757a)) + (pad "2" smd roundrect locked (at 1 0) (size 1.2 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.2083325) + (net 5 "Net-(C2-Pad1)") (tstamp f0ba8d76-a118-49e1-bfbd-9ce4cf32b10e)) + (model "${KISYS3DMOD}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "my_additions:OSC-TH_L10.0-W4.5-P5.00" (layer "F.Cu") + (tedit 604A1333) (tstamp 00000000-0000-0000-0000-000061c67ef1) + (at 82.134646 67.214675) + (path "/00000000-0000-0000-0000-000061c5fa39") + (attr through_hole) + (fp_text reference "Y1" (at 6.511354 0.044525) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp d209d1fb-0dfd-4bae-80ee-15af4e4649b3) + ) + (fp_text value "16MHz" (at 0 3.175) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp ba3012c5-1692-4671-aff0-68bfcc3282b7) + ) + (fp_line (start -3.15 2.248) (end 3.15 2.248) (layer "F.SilkS") (width 0.12) (tstamp 40264413-f3f7-4118-b3d4-cab8821551ff)) + (fp_line (start -3.15 -2.248) (end 3.15 -2.248) (layer "F.SilkS") (width 0.12) (tstamp 97cda719-390c-445a-99e0-c451aa77c3c9)) + (fp_arc (start 3.15 -2.248) (mid 5.398 0) (end 3.15 2.248) (layer "F.SilkS") (width 0.12) (tstamp 534250fd-20a4-44cd-a4f7-eb6b2d6a7ed1)) + (fp_arc (start -3.15 2.248) (mid -5.398 0) (end -3.15 -2.248) (layer "F.SilkS") (width 0.12) (tstamp f642e49f-43c4-4a69-b77b-ea1071536303)) + (pad "1" thru_hole circle locked (at -2.45 0) (size 1.6 1.6) (drill 0.7) (layers *.Cu *.Mask) + (net 4 "Net-(C1-Pad1)") (tstamp e8b3bd3b-b9c2-4ed8-84a7-fb874d247bf9)) + (pad "2" thru_hole circle locked (at 2.45 0) (size 1.6 1.6) (drill 0.7) (layers *.Cu *.Mask) + (net 5 "Net-(C2-Pad1)") (tstamp 944f83d0-5b14-474d-8376-1dbcc5c862d4)) + (model "${KISYS3DMOD}/Crystal.3dshapes/Crystal_HC49-4H_Vertical.wrl" + (offset (xyz -2.5 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder" (layer "F.Cu") + (tedit 5F68FEEE) (tstamp 00000000-0000-0000-0000-000061c6c9b7) + (at 76.295947 43.74584 90) + (descr "Resistor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") + (tags "resistor handsolder") + (path "/00000000-0000-0000-0000-000061e444d0") + (attr smd) + (fp_text reference "R18" (at 3.25824 0.081853 90) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 4eae1b27-5564-4e83-b851-85507f8306c4) + ) + (fp_text value "22" (at 0 1.65 90) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp a1c6055f-7f8a-43e2-bb4c-4f5e8ce1ffcb) + ) + (fp_text user "${REFERENCE}" (at 0 0 90) (layer "F.Fab") + (effects (font (size 0.5 0.5) (thickness 0.08))) + (tstamp f587aada-fddf-4031-9c9b-888c03a21dc1) + ) + (fp_line (start -0.227064 0.735) (end 0.227064 0.735) (layer "F.SilkS") (width 0.12) (tstamp 47e8288f-f685-4e32-9cea-ef4b9908b614)) + (fp_line (start -0.227064 -0.735) (end 0.227064 -0.735) (layer "F.SilkS") (width 0.12) (tstamp ea42c0e7-0b85-4cc7-8a29-7aeaea0934ff)) + (fp_line (start -1.85 0.95) (end -1.85 -0.95) (layer "F.CrtYd") (width 0.05) (tstamp 22f0c5e5-78ee-46ce-8201-1167ac7efc10)) + (fp_line (start 1.85 0.95) (end -1.85 0.95) (layer "F.CrtYd") (width 0.05) (tstamp 290c84d3-9f9c-4c8b-990b-7f8259d9ff99)) + (fp_line (start 1.85 -0.95) (end 1.85 0.95) (layer "F.CrtYd") (width 0.05) (tstamp 90d989fd-35ab-4ac4-9e0d-f5b26b173666)) + (fp_line (start -1.85 -0.95) (end 1.85 -0.95) (layer "F.CrtYd") (width 0.05) (tstamp e36c697d-9441-4ad3-9251-ac14a2abc58d)) + (fp_line (start 1 -0.625) (end 1 0.625) (layer "F.Fab") (width 0.1) (tstamp 4020805f-8339-4573-86af-8f1bdc53f1d4)) + (fp_line (start -1 0.625) (end -1 -0.625) (layer "F.Fab") (width 0.1) (tstamp 4c45e56b-0154-46db-a952-c011a0234388)) + (fp_line (start 1 0.625) (end -1 0.625) (layer "F.Fab") (width 0.1) (tstamp 7cc53b02-2c86-4b07-968d-a8fca2596810)) + (fp_line (start -1 -0.625) (end 1 -0.625) (layer "F.Fab") (width 0.1) (tstamp b4c4088e-5e86-42b8-93f8-dc5181a44f65)) + (pad "1" smd roundrect locked (at -1 0 90) (size 1.2 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.2083325) + (net 48 "SWDIO") (tstamp 400b3fe6-4ab5-40b7-bbcc-2951d550dd4d)) + (pad "2" smd roundrect locked (at 1 0 90) (size 1.2 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.2083325) + (net 24 "Net-(J5-Pad4)") (tstamp af976897-4ed9-4edd-94b6-bd25a3aad48a)) + (model "${KISYS3DMOD}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder" (layer "F.Cu") + (tedit 5F68FEEE) (tstamp 00000000-0000-0000-0000-000061c70401) + (at 87.1728 51.1556 90) + (descr "Resistor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") + (tags "resistor handsolder") + (path "/00000000-0000-0000-0000-000061d9989f") + (attr smd) + (fp_text reference "R6" (at -2.6416 0.1016 180) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 8a14b545-2f7f-40df-a29f-236be7e3c308) + ) + (fp_text value "120" (at 0 1.65 90) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 747b00d1-d19a-49c4-bce9-8316523eacf7) + ) + (fp_text user "${REFERENCE}" (at 0 0 90) (layer "F.Fab") + (effects (font (size 0.5 0.5) (thickness 0.08))) + (tstamp 0447dff0-4dc3-461a-b2a3-1836c62c47ff) + ) + (fp_line (start -0.227064 0.735) (end 0.227064 0.735) (layer "F.SilkS") (width 0.12) (tstamp 3bec4156-9d15-417c-9fbd-eceb89fd16c3)) + (fp_line (start -0.227064 -0.735) (end 0.227064 -0.735) (layer "F.SilkS") (width 0.12) (tstamp 67a23809-3ad8-4fa7-af2e-8ac2e410c064)) + (fp_line (start -1.85 -0.95) (end 1.85 -0.95) (layer "F.CrtYd") (width 0.05) (tstamp 53ae73b1-275b-48cf-8aae-c5562335cb2c)) + (fp_line (start 1.85 0.95) (end -1.85 0.95) (layer "F.CrtYd") (width 0.05) (tstamp 89aeef9b-5b3d-4cb8-a073-93f5ce3c3cc4)) + (fp_line (start 1.85 -0.95) (end 1.85 0.95) (layer "F.CrtYd") (width 0.05) (tstamp a769cb60-2d71-4830-8f90-24fbb64626c2)) + (fp_line (start -1.85 0.95) (end -1.85 -0.95) (layer "F.CrtYd") (width 0.05) (tstamp b4d5d100-b3a6-4c4e-a4d5-f8565989d47d)) + (fp_line (start -1 -0.625) (end 1 -0.625) (layer "F.Fab") (width 0.1) (tstamp 40c84588-b4a6-446d-8a3e-221cc6058388)) + (fp_line (start 1 -0.625) (end 1 0.625) (layer "F.Fab") (width 0.1) (tstamp 816731a3-9709-45ad-92fe-ef11b266a17f)) + (fp_line (start -1 0.625) (end -1 -0.625) (layer "F.Fab") (width 0.1) (tstamp 888443ad-1b15-46c1-8343-2eaaf8a93eac)) + (fp_line (start 1 0.625) (end -1 0.625) (layer "F.Fab") (width 0.1) (tstamp c1963d9d-6cf9-40ff-9d66-3bee35d02cbc)) + (pad "1" smd roundrect locked (at -1 0 90) (size 1.2 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.2083325) + (net 13 "Net-(J2-Pad4)") (tstamp 22752c58-2fa0-4cfa-a4fd-39ccbbb39f4e)) + (pad "2" smd roundrect locked (at 1 0 90) (size 1.2 1.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.2083325) + (net 36 "OLED_SDA") (tstamp 99729fec-1b43-4c88-b06e-11a480a4db72)) + (model "${KISYS3DMOD}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder" (layer "B.Cu") + (tedit 5F68FEEF) (tstamp 00000000-0000-0000-0000-000061c50928) + (at 76.7588 57.2516) + (descr "Capacitor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf, https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing), generated with kicad-footprint-generator") + (tags "capacitor handsolder") + (path "/00000000-0000-0000-0000-000061c57f2c") + (attr smd) + (fp_text reference "C3" (at 2.9464 0) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 36bdd724-6aba-4b13-b0ee-eb191cf88624) + ) + (fp_text value "4u7" (at 0 -1.68) (layer "B.Fab") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 0863c469-4b7e-428d-acff-074c59bdba7b) + ) + (fp_text user "${REFERENCE}" (at 0 0) (layer "B.Fab") + (effects (font (size 0.5 0.5) (thickness 0.08)) (justify mirror)) + (tstamp e16116b0-b6d6-487e-ae06-05f86651c9f5) + ) + (fp_line (start -0.261252 -0.735) (end 0.261252 -0.735) (layer "B.SilkS") (width 0.12) (tstamp 0042caaf-df20-43c3-8ed8-110f8d84bb29)) + (fp_line (start -0.261252 0.735) (end 0.261252 0.735) (layer "B.SilkS") (width 0.12) (tstamp 892b1a45-92f2-4e27-a326-c81e9a1b1631)) + (fp_line (start -1.88 -0.98) (end -1.88 0.98) (layer "B.CrtYd") (width 0.05) (tstamp 05d02b9d-732b-43c2-b17e-be780da5be1e)) + (fp_line (start 1.88 0.98) (end 1.88 -0.98) (layer "B.CrtYd") (width 0.05) (tstamp 1f196531-4f89-499e-b0d8-96a4875da54e)) + (fp_line (start -1.88 0.98) (end 1.88 0.98) (layer "B.CrtYd") (width 0.05) (tstamp a96b79e6-b8b5-4460-a113-0efa13499dc7)) + (fp_line (start 1.88 -0.98) (end -1.88 -0.98) (layer "B.CrtYd") (width 0.05) (tstamp ef3103dd-888d-4841-9b18-b39b163b4ad8)) + (fp_line (start 1 0.625) (end 1 -0.625) (layer "B.Fab") (width 0.1) (tstamp 1092b81f-f56f-4602-b408-83d65fa414b1)) + (fp_line (start 1 -0.625) (end -1 -0.625) (layer "B.Fab") (width 0.1) (tstamp 5e000bba-22b9-44f1-a8e6-f3d6c05a7034)) + (fp_line (start -1 0.625) (end 1 0.625) (layer "B.Fab") (width 0.1) (tstamp 771ef2c4-76fe-4ca6-940e-bc7e446dc85b)) + (fp_line (start -1 -0.625) (end -1 0.625) (layer "B.Fab") (width 0.1) (tstamp e042cd54-6ced-4f8a-8bdd-4f7860219916)) + (pad "1" smd roundrect locked (at -1.0375 0) (size 1.175 1.45) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.2127659574) + (net 2 "+3V3") (tstamp 15b4d930-8079-44e0-8b03-3e05018af443)) + (pad "2" smd roundrect locked (at 1.0375 0) (size 1.175 1.45) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.2127659574) + (net 3 "GND") (tstamp 80fdd700-3407-4e76-8f21-a274f0324008)) + (model "${KISYS3DMOD}/Capacitor_SMD.3dshapes/C_0805_2012Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder" (layer "B.Cu") + (tedit 5F68FEEF) (tstamp 00000000-0000-0000-0000-000061c50939) + (at 76.8233 54.8776) + (descr "Capacitor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf, https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing), generated with kicad-footprint-generator") + (tags "capacitor handsolder") + (path "/00000000-0000-0000-0000-000061c5a31b") + (attr smd) + (fp_text reference "C4" (at 2.9327 -0.0644) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp f73fcf13-960a-41e1-8c7d-17fad25d5684) + ) + (fp_text value "100n" (at 0 -1.68) (layer "B.Fab") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp d11ff647-d310-4023-8c5c-ef7abf13c4fa) + ) + (fp_text user "${REFERENCE}" (at 0 0) (layer "B.Fab") + (effects (font (size 0.5 0.5) (thickness 0.08)) (justify mirror)) + (tstamp dd913d45-b1be-4454-8e2d-d40b931e7c6d) + ) + (fp_line (start -0.261252 0.735) (end 0.261252 0.735) (layer "B.SilkS") (width 0.12) (tstamp d08c1709-ee94-48ff-aabc-a0c0b7803cc8)) + (fp_line (start -0.261252 -0.735) (end 0.261252 -0.735) (layer "B.SilkS") (width 0.12) (tstamp f9b39d7e-eb14-4f81-9623-2971c90502cb)) + (fp_line (start -1.88 0.98) (end 1.88 0.98) (layer "B.CrtYd") (width 0.05) (tstamp 82a804cd-9149-4d8c-b6cf-ce23d9cfe5d3)) + (fp_line (start 1.88 0.98) (end 1.88 -0.98) (layer "B.CrtYd") (width 0.05) (tstamp a4490547-0fed-4eef-b7ff-d5885722e8eb)) + (fp_line (start -1.88 -0.98) (end -1.88 0.98) (layer "B.CrtYd") (width 0.05) (tstamp bd1771f6-2a24-4cdc-8609-9a52e12fc5e9)) + (fp_line (start 1.88 -0.98) (end -1.88 -0.98) (layer "B.CrtYd") (width 0.05) (tstamp fe60e6f5-839d-4de4-8b9b-d2230cb94650)) + (fp_line (start 1 -0.625) (end -1 -0.625) (layer "B.Fab") (width 0.1) (tstamp a9556e67-bcb1-4b03-8b50-9dcc0d2e555b)) + (fp_line (start -1 -0.625) (end -1 0.625) (layer "B.Fab") (width 0.1) (tstamp ab02a646-eabf-4f66-abb8-67bf5df3e499)) + (fp_line (start 1 0.625) (end 1 -0.625) (layer "B.Fab") (width 0.1) (tstamp c1dc7be5-04e3-40c4-9bd9-84d4e818f43d)) + (fp_line (start -1 0.625) (end 1 0.625) (layer "B.Fab") (width 0.1) (tstamp e3270dbb-4526-41cd-a142-57d555deecab)) + (pad "1" smd roundrect locked (at -1.0375 0) (size 1.175 1.45) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.2127659574) + (net 2 "+3V3") (tstamp df8690a2-875e-4b8f-b75c-4fe523bc0aa4)) + (pad "2" smd roundrect locked (at 1.0375 0) (size 1.175 1.45) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.2127659574) + (net 3 "GND") (tstamp bc58ad74-e56e-41c2-bad4-477af8dc2f29)) + (model "${KISYS3DMOD}/Capacitor_SMD.3dshapes/C_0805_2012Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder" (layer "B.Cu") + (tedit 5F68FEEE) (tstamp 00000000-0000-0000-0000-000061c50b6c) + (at 51.2064 39.7256 180) + (descr "Resistor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") + (tags "resistor handsolder") + (path "/00000000-0000-0000-0000-000061c925e4") + (attr smd) + (fp_text reference "R9" (at 0 1.65) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp a30e2cfc-0ebf-4dc2-a4f8-5f0c000e9756) + ) + (fp_text value "10k" (at 0 -1.65) (layer "B.Fab") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 4158c11c-91ce-449d-8861-3aaa0635482e) + ) + (fp_text user "${REFERENCE}" (at 0 0) (layer "B.Fab") + (effects (font (size 0.5 0.5) (thickness 0.08)) (justify mirror)) + (tstamp 9381e39c-dd4c-49bb-92e7-f9153c781315) + ) + (fp_line (start -0.227064 0.735) (end 0.227064 0.735) (layer "B.SilkS") (width 0.12) (tstamp 42f5b335-d52e-421f-82b1-70c3fb31c6b6)) + (fp_line (start -0.227064 -0.735) (end 0.227064 -0.735) (layer "B.SilkS") (width 0.12) (tstamp 741bfc6a-bee4-44b6-b53f-dbce8ec24d9d)) + (fp_line (start 1.85 -0.95) (end -1.85 -0.95) (layer "B.CrtYd") (width 0.05) (tstamp 0ffdd048-0f8a-4db6-9088-cf586f8590cd)) + (fp_line (start -1.85 0.95) (end 1.85 0.95) (layer "B.CrtYd") (width 0.05) (tstamp 76f39628-c864-4959-b1b4-da2d47a0ff62)) + (fp_line (start 1.85 0.95) (end 1.85 -0.95) (layer "B.CrtYd") (width 0.05) (tstamp 875800c0-1c12-4647-8486-a87cdd8386b5)) + (fp_line (start -1.85 -0.95) (end -1.85 0.95) (layer "B.CrtYd") (width 0.05) (tstamp ab7aee03-1bcd-4ccc-b17f-ca94d05c6b2e)) + (fp_line (start -1 -0.625) (end -1 0.625) (layer "B.Fab") (width 0.1) (tstamp 45d0a872-65f6-48f7-812a-77aaea815636)) + (fp_line (start 1 -0.625) (end -1 -0.625) (layer "B.Fab") (width 0.1) (tstamp 8d45f759-b3d8-4a93-80d5-9e8fb2f9dd28)) + (fp_line (start 1 0.625) (end 1 -0.625) (layer "B.Fab") (width 0.1) (tstamp dd84eaf3-3b85-466c-b1be-c77749c280e9)) + (fp_line (start -1 0.625) (end 1 0.625) (layer "B.Fab") (width 0.1) (tstamp f07eb558-073e-4c11-b3f0-58bbc299d717)) + (pad "1" smd roundrect locked (at -1 0 180) (size 1.2 1.4) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.2083325) + (net 2 "+3V3") (tstamp e1c00d98-5a8c-4a52-8ea7-1d4fa2e09f49)) + (pad "2" smd roundrect locked (at 1 0 180) (size 1.2 1.4) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.2083325) + (net 41 "ZeroCross") (tstamp 3a3495b0-6afa-41a6-9580-bdb46f4ef99d)) + (model "${KISYS3DMOD}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder" (layer "B.Cu") + (tedit 5F68FEEE) (tstamp 00000000-0000-0000-0000-000061c50bd2) + (at 54.810774 64.1176 -30) + (descr "Resistor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") + (tags "resistor handsolder") + (path "/00000000-0000-0000-0000-000061cae0ed") + (attr smd) + (fp_text reference "R15" (at 0 1.65 150) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp d7c30ab4-e19f-4bf4-b0d2-7a938857b220) + ) + (fp_text value "470" (at 0 -1.65 150) (layer "B.Fab") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp b269a887-0bdf-42ef-b037-87b5a3ee5d64) + ) + (fp_text user "${REFERENCE}" (at 0 0 150) (layer "B.Fab") + (effects (font (size 0.5 0.5) (thickness 0.08)) (justify mirror)) + (tstamp fec5cb68-b977-4397-a5d3-047b6bc9952c) + ) + (fp_line (start -0.227064 0.735) (end 0.227064 0.735) (layer "B.SilkS") (width 0.12) (tstamp 6594edc5-1afb-4143-8251-238575c2acdc)) + (fp_line (start -0.227064 -0.735) (end 0.227064 -0.735) (layer "B.SilkS") (width 0.12) (tstamp 663b5ff6-c231-4304-b576-979defa6aa96)) + (fp_line (start -1.85 0.95) (end 1.85 0.95) (layer "B.CrtYd") (width 0.05) (tstamp 07b6cf34-a5aa-47a2-881e-48573394c969)) + (fp_line (start 1.85 0.95) (end 1.85 -0.95) (layer "B.CrtYd") (width 0.05) (tstamp 5a53cdc9-18f7-4c0a-a276-01b15b703166)) + (fp_line (start 1.85 -0.95) (end -1.85 -0.95) (layer "B.CrtYd") (width 0.05) (tstamp bbbb6c00-3c8d-421f-8fb7-41c15ec53ce2)) + (fp_line (start -1.85 -0.95) (end -1.85 0.95) (layer "B.CrtYd") (width 0.05) (tstamp f5b25ec9-b264-4c09-aa57-ec6db1a5a0d5)) + (fp_line (start -1 -0.625) (end -1 0.625) (layer "B.Fab") (width 0.1) (tstamp 2db41177-811d-41dd-8980-0a9cc7a139c2)) + (fp_line (start 1 0.625) (end 1 -0.625) (layer "B.Fab") (width 0.1) (tstamp 3359cf5b-d0cd-47dd-ab29-4746ffabfee0)) + (fp_line (start 1 -0.625) (end -1 -0.625) (layer "B.Fab") (width 0.1) (tstamp c6cd9dc5-144c-4ab0-82e9-82fb4522ffca)) + (fp_line (start -1 0.625) (end 1 0.625) (layer "B.Fab") (width 0.1) (tstamp faa9788a-7843-49a5-ab75-037f50e89273)) + (pad "1" smd roundrect locked (at -1 0 330) (size 1.2 1.4) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.2083325) + (net 27 "AC_N") (tstamp 67d4a141-fb94-4347-b288-dde05b2e1891)) + (pad "2" smd roundrect locked (at 1 0 330) (size 1.2 1.4) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.2083325) + (net 30 "Net-(Q3-Pad3)") (tstamp 120525f8-6cf3-4063-ae9e-553b176dce0d)) + (model "${KISYS3DMOD}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "my_additions:OPTO-SMD4" (layer "B.Cu") + (tedit 6054DF13) (tstamp 00000000-0000-0000-0000-000061c50ca4) + (at 39.6748 36.4236 90) + (path "/00000000-0000-0000-0000-000061c4acca") + (attr through_hole) + (fp_text reference "U2" (at 3.2004 0) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 06e22b83-e735-4db9-9283-5395297babc6) + ) + (fp_text value "LTV-814" (at -3.2512 0.0508) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 47477874-0be4-4042-84d8-be29a69e20ca) + ) + (fp_line (start -2.4 -3.25) (end 2.4 -3.25) (layer "B.SilkS") (width 0.15) (tstamp 0874cb64-7501-40ba-a914-a94dfa391142)) + (fp_line (start 2.39998 3.24866) (end 2.39998 -3.24866) (layer "B.SilkS") (width 0.15) (tstamp 108d064e-087a-4847-8141-b189d914c446)) + (fp_line (start -2.39998 -2.64922) (end -1.798 -2.64922) (layer "B.SilkS") (width 0.15) (tstamp 3ee68853-5f50-4d38-902a-2a7da67c6fc4)) + (fp_line (start -2.39998 3.24866) (end -2.39998 -3.24866) (layer "B.SilkS") (width 0.15) (tstamp 7cce1ef6-39e6-4de6-886d-8c247f0456de)) + (fp_line (start -1.798 -2.64922) (end -1.798 -3.24866) (layer "B.SilkS") (width 0.15) (tstamp c8f9b92d-636f-4942-a086-d24277688100)) + (fp_line (start -2.4 3.25) (end 2.4 3.25) (layer "B.SilkS") (width 0.15) (tstamp f589215c-3942-4a54-b49c-78181b0b947b)) + (fp_line (start -2.54 -4.445) (end -2.54 4.445) (layer "B.CrtYd") (width 0.12) (tstamp 21d5cc1a-95cd-45c8-a3c9-4a633b85915b)) + (fp_line (start 2.54 -4.445) (end -2.54 -4.445) (layer "B.CrtYd") (width 0.12) (tstamp 2d70e4e4-895d-4c2c-a179-13da5aa6b550)) + (fp_line (start 2.54 4.445) (end 2.54 -4.445) (layer "B.CrtYd") (width 0.12) (tstamp 37d2fab6-7e1a-47d1-be63-281842eb6754)) + (fp_line (start -2.54 4.445) (end 2.54 4.445) (layer "B.CrtYd") (width 0.12) (tstamp 4da7830e-357d-40d1-bc31-48905db6585b)) + (pad "1" smd rect locked (at -1.27 -4.7 270) (size 1.5 1.7) (layers "B.Cu" "B.Paste" "B.Mask") + (net 46 "Net-(R12-Pad1)") (tstamp 304d00f9-0aad-4778-ac8b-130fe6c4f684)) + (pad "2" smd rect locked (at 1.27 -4.7 270) (size 1.5 1.7) (layers "B.Cu" "B.Paste" "B.Mask") + (net 47 "Net-(R13-Pad1)") (tstamp 5379d407-ed00-47b9-881c-bbc62a99287a)) + (pad "3" smd rect locked (at 1.27 4.7 90) (size 1.5 1.7) (layers "B.Cu" "B.Paste" "B.Mask") + (net 3 "GND") (tstamp 4393d243-9392-4583-bfef-f2d18fa0e328)) + (pad "4" smd rect locked (at -1.27 4.7 90) (size 1.5 1.7) (layers "B.Cu" "B.Paste" "B.Mask") + (net 41 "ZeroCross") (tstamp 70097f79-e26d-4386-8bae-781a6af66290)) + (model "${my_additions}/SMD-4.stp" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 -90)) + ) + ) + + (footprint "Resistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolder" (layer "B.Cu") + (tedit 5F68FEEE) (tstamp 00000000-0000-0000-0000-000061c5b17c) + (at 29.2868 32.6136 180) + (descr "Resistor SMD 1206 (3216 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") + (tags "resistor handsolder") + (path "/00000000-0000-0000-0000-000061c8ef1c") + (attr smd) + (fp_text reference "R13" (at 0 1.82) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 3edf5a01-5a35-4a0c-b2db-ba134222b2b6) + ) + (fp_text value "47k" (at 0 -1.82) (layer "B.Fab") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 20ec082d-1c14-4c8e-b714-138cbf80f2f4) + ) + (fp_text user "${REFERENCE}" (at 0 0) (layer "B.Fab") + (effects (font (size 0.8 0.8) (thickness 0.12)) (justify mirror)) + (tstamp 81366cd8-34ac-4487-b340-cdfdaadf5f1f) + ) + (fp_line (start -0.727064 0.91) (end 0.727064 0.91) (layer "B.SilkS") (width 0.12) (tstamp 083ddfa4-74e0-4225-8197-645c6e4798f0)) + (fp_line (start -0.727064 -0.91) (end 0.727064 -0.91) (layer "B.SilkS") (width 0.12) (tstamp cb2083fd-1517-4eda-af1b-361cce246a48)) + (fp_line (start -2.45 1.12) (end 2.45 1.12) (layer "B.CrtYd") (width 0.05) (tstamp 4ea88818-9094-467c-b54c-5184c365ce59)) + (fp_line (start 2.45 -1.12) (end -2.45 -1.12) (layer "B.CrtYd") (width 0.05) (tstamp 81105b60-92c3-49ea-837b-773ecd5c50a3)) + (fp_line (start -2.45 -1.12) (end -2.45 1.12) (layer "B.CrtYd") (width 0.05) (tstamp eeac3ee6-d449-4a1e-8a4d-7eb396b9ddfd)) + (fp_line (start 2.45 1.12) (end 2.45 -1.12) (layer "B.CrtYd") (width 0.05) (tstamp fb04974f-24af-49fb-83de-7889c2a9b92d)) + (fp_line (start -1.6 0.8) (end 1.6 0.8) (layer "B.Fab") (width 0.1) (tstamp 24fec844-0fb8-4bce-a56c-c6c6862b00f0)) + (fp_line (start 1.6 0.8) (end 1.6 -0.8) (layer "B.Fab") (width 0.1) (tstamp 3b8bcc1a-2eb2-41ec-a233-f991585a3622)) + (fp_line (start -1.6 -0.8) (end -1.6 0.8) (layer "B.Fab") (width 0.1) (tstamp 89a5c8f7-4a51-463b-9f82-a7f95af113a2)) + (fp_line (start 1.6 -0.8) (end -1.6 -0.8) (layer "B.Fab") (width 0.1) (tstamp 8ee1c1e7-2d37-421e-a223-b0c285728450)) + (pad "1" smd roundrect locked (at -1.55 0 180) (size 1.3 1.75) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.1923076923) + (net 47 "Net-(R13-Pad1)") (tstamp 372ad405-675b-440c-93e5-5114c7ff2e86)) + (pad "2" smd roundrect locked (at 1.55 0 180) (size 1.3 1.75) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.1923076923) + (net 15 "AC_L") (tstamp dfa4dce3-6207-46d8-81e2-0cdeefd68319)) + (model "${KISYS3DMOD}/Resistor_SMD.3dshapes/R_1206_3216Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Resistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolder" (layer "B.Cu") + (tedit 5F68FEEE) (tstamp 00000000-0000-0000-0000-000061c5f9a3) + (at 29.2348 37.6936 180) + (descr "Resistor SMD 1206 (3216 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") + (tags "resistor handsolder") + (path "/00000000-0000-0000-0000-000061c8da64") + (attr smd) + (fp_text reference "R12" (at 0 1.82) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp b6a23b2f-e375-49e2-a05e-811537542161) + ) + (fp_text value "47k" (at 0 -1.82) (layer "B.Fab") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp bee1a554-9f10-4761-b5cc-95207d01b84f) + ) + (fp_text user "${REFERENCE}" (at 0 0) (layer "B.Fab") + (effects (font (size 0.8 0.8) (thickness 0.12)) (justify mirror)) + (tstamp c9f13581-a405-445a-83ec-88be29ee62d1) + ) + (fp_line (start -0.727064 0.91) (end 0.727064 0.91) (layer "B.SilkS") (width 0.12) (tstamp 528fbf19-e5a3-4e30-814a-ed05306db00d)) + (fp_line (start -0.727064 -0.91) (end 0.727064 -0.91) (layer "B.SilkS") (width 0.12) (tstamp bb6fa0c3-7484-4c12-80da-eba1559b97ef)) + (fp_line (start -2.45 -1.12) (end -2.45 1.12) (layer "B.CrtYd") (width 0.05) (tstamp 010a4b86-9590-49c1-b460-9044f814dbcc)) + (fp_line (start 2.45 -1.12) (end -2.45 -1.12) (layer "B.CrtYd") (width 0.05) (tstamp 5fffee7d-be64-43cb-86d3-7e2701a6b639)) + (fp_line (start -2.45 1.12) (end 2.45 1.12) (layer "B.CrtYd") (width 0.05) (tstamp cde9398b-0592-4065-9dc3-86d96614a672)) + (fp_line (start 2.45 1.12) (end 2.45 -1.12) (layer "B.CrtYd") (width 0.05) (tstamp cfe4e991-5db9-434e-b278-41fa53d48d4b)) + (fp_line (start -1.6 0.8) (end 1.6 0.8) (layer "B.Fab") (width 0.1) (tstamp 48e24e57-90cf-408c-b237-e8542256bcbc)) + (fp_line (start -1.6 -0.8) (end -1.6 0.8) (layer "B.Fab") (width 0.1) (tstamp 918cc508-aec3-4788-a827-b42fd46e0941)) + (fp_line (start 1.6 0.8) (end 1.6 -0.8) (layer "B.Fab") (width 0.1) (tstamp cbce38bf-c61a-4e97-b9c4-302eed40ef58)) + (fp_line (start 1.6 -0.8) (end -1.6 -0.8) (layer "B.Fab") (width 0.1) (tstamp d3c7e2f6-4843-4500-af48-6a44cc8af34f)) + (pad "1" smd roundrect locked (at -1.55 0 180) (size 1.3 1.75) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.1923076923) + (net 46 "Net-(R12-Pad1)") (tstamp 3274150f-722d-45c2-8b1e-0a9728c6a924)) + (pad "2" smd roundrect locked (at 1.55 0 180) (size 1.3 1.75) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.1923076923) + (net 27 "AC_N") (tstamp 769461b4-c5c9-432c-ad80-8674f2e637f7)) + (model "${KISYS3DMOD}/Resistor_SMD.3dshapes/R_1206_3216Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder" (layer "B.Cu") + (tedit 5F68FEEF) (tstamp 00000000-0000-0000-0000-000061c5fa36) + (at 52.374798 34.624098 90) + (descr "Capacitor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf, https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing), generated with kicad-footprint-generator") + (tags "capacitor handsolder") + (path "/00000000-0000-0000-0000-000061d53522") + (attr smd) + (fp_text reference "C6" (at 2.823298 0.000002 90) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 19d5c44d-b290-436e-b9d0-74893a5c7781) + ) + (fp_text value "100n" (at 0 -1.68 90) (layer "B.Fab") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 12c3f5ad-cccb-4567-9700-c5be4ebaf397) + ) + (fp_text user "${REFERENCE}" (at 0 0 90) (layer "B.Fab") + (effects (font (size 0.5 0.5) (thickness 0.08)) (justify mirror)) + (tstamp 0ab97705-60d1-48bf-b315-476b072ac7df) + ) + (fp_line (start -0.261252 -0.735) (end 0.261252 -0.735) (layer "B.SilkS") (width 0.12) (tstamp e94b21ba-f5d8-4701-ae42-4ea9e4685e55)) + (fp_line (start -0.261252 0.735) (end 0.261252 0.735) (layer "B.SilkS") (width 0.12) (tstamp f7c2d2bf-0beb-4657-bb92-329e5da165f6)) + (fp_line (start 1.88 0.98) (end 1.88 -0.98) (layer "B.CrtYd") (width 0.05) (tstamp 48844dad-284d-4001-9fdc-2cf4424d2b56)) + (fp_line (start -1.88 0.98) (end 1.88 0.98) (layer "B.CrtYd") (width 0.05) (tstamp 783c118b-cf4a-4cd9-ab06-29341372c6b3)) + (fp_line (start -1.88 -0.98) (end -1.88 0.98) (layer "B.CrtYd") (width 0.05) (tstamp 8a2e5eb6-cf4b-4c95-b0f1-d4a65651e88d)) + (fp_line (start 1.88 -0.98) (end -1.88 -0.98) (layer "B.CrtYd") (width 0.05) (tstamp f07d5a07-d482-472e-a6d7-a716ffb66e23)) + (fp_line (start -1 0.625) (end 1 0.625) (layer "B.Fab") (width 0.1) (tstamp 35a7fa0d-1a37-4adb-87ea-31ccd17a93c4)) + (fp_line (start -1 -0.625) (end -1 0.625) (layer "B.Fab") (width 0.1) (tstamp bd8383c3-c307-4b81-a31d-409b2348fff6)) + (fp_line (start 1 -0.625) (end -1 -0.625) (layer "B.Fab") (width 0.1) (tstamp c159f2c7-8811-4023-a488-3bd5bb03947b)) + (fp_line (start 1 0.625) (end 1 -0.625) (layer "B.Fab") (width 0.1) (tstamp d85e845d-b8a8-4aad-adf4-9cdf418439e4)) + (pad "1" smd roundrect locked (at -1.0375 0 90) (size 1.175 1.45) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.2127659574) + (net 2 "+3V3") (tstamp 1afcd29d-d98b-41f0-b5c8-649e62308a29)) + (pad "2" smd roundrect locked (at 1.0375 0 90) (size 1.175 1.45) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.2127659574) + (net 3 "GND") (tstamp df0026d1-ca9f-41d2-ab4f-3edf16176311)) + (model "${KISYS3DMOD}/Capacitor_SMD.3dshapes/C_0805_2012Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder" (layer "B.Cu") + (tedit 5F68FEEF) (tstamp 00000000-0000-0000-0000-000061c5fa66) + (at 50.0888 34.6456 90) + (descr "Capacitor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf, https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing), generated with kicad-footprint-generator") + (tags "capacitor handsolder") + (path "/00000000-0000-0000-0000-000061d5351c") + (attr smd) + (fp_text reference "C5" (at 2.8448 0.0508 90) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 2ebd8e21-408c-44f9-ba66-e47555ba1811) + ) + (fp_text value "4u7" (at 0 -1.68 90) (layer "B.Fab") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 7d3034f3-6154-4215-bb5d-f1ac1101b91c) + ) + (fp_text user "${REFERENCE}" (at 0 0 90) (layer "B.Fab") + (effects (font (size 0.5 0.5) (thickness 0.08)) (justify mirror)) + (tstamp f37ede32-ef9b-4a7d-a91c-f668297134ef) + ) + (fp_line (start -0.261252 0.735) (end 0.261252 0.735) (layer "B.SilkS") (width 0.12) (tstamp 19f16b35-3161-4867-930b-358869903f9c)) + (fp_line (start -0.261252 -0.735) (end 0.261252 -0.735) (layer "B.SilkS") (width 0.12) (tstamp 2cc8430d-bd9a-4229-b216-1a0cd8597e41)) + (fp_line (start -1.88 0.98) (end 1.88 0.98) (layer "B.CrtYd") (width 0.05) (tstamp 3fee4df7-61b6-47de-8e61-b85c6374b9d6)) + (fp_line (start 1.88 -0.98) (end -1.88 -0.98) (layer "B.CrtYd") (width 0.05) (tstamp afaf6aa4-3370-4d75-a331-94990a4c95bb)) + (fp_line (start 1.88 0.98) (end 1.88 -0.98) (layer "B.CrtYd") (width 0.05) (tstamp dc096ec6-23a9-47d0-8d0a-4dfbd75f87e8)) + (fp_line (start -1.88 -0.98) (end -1.88 0.98) (layer "B.CrtYd") (width 0.05) (tstamp efe9b520-0909-4c14-bcfe-12e1d952e9cc)) + (fp_line (start -1 0.625) (end 1 0.625) (layer "B.Fab") (width 0.1) (tstamp 2fc95727-bc29-42ab-aed9-255978fc35cc)) + (fp_line (start 1 -0.625) (end -1 -0.625) (layer "B.Fab") (width 0.1) (tstamp 30f7794b-dd60-4b92-8b9a-bd186dafa89b)) + (fp_line (start 1 0.625) (end 1 -0.625) (layer "B.Fab") (width 0.1) (tstamp 80b2aa08-21b6-414c-b30d-90db05460f6b)) + (fp_line (start -1 -0.625) (end -1 0.625) (layer "B.Fab") (width 0.1) (tstamp debb8222-276f-4835-bc13-f660c4d623af)) + (pad "1" smd roundrect locked (at -1.0375 0 90) (size 1.175 1.45) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.2127659574) + (net 2 "+3V3") (tstamp 30591cf3-31cb-4747-a25a-fefc336d2ad2)) + (pad "2" smd roundrect locked (at 1.0375 0 90) (size 1.175 1.45) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.2127659574) + (net 3 "GND") (tstamp f40af433-8dd3-44fc-8700-a899f2743671)) + (model "${KISYS3DMOD}/Capacitor_SMD.3dshapes/C_0805_2012Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder" (layer "B.Cu") + (tedit 5F68FEEE) (tstamp 00000000-0000-0000-0000-000061c609d3) + (at 73.024193 59.939502 90) + (descr "Resistor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") + (tags "resistor handsolder") + (path "/00000000-0000-0000-0000-000061d705e3") + (attr smd) + (fp_text reference "R4" (at 2.840302 0.026207 90) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp f2ce3423-811b-4caa-8fcc-e2d1f99567fc) + ) + (fp_text value "120" (at 0 -1.65 90) (layer "B.Fab") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 4222a925-a90f-4dde-a127-d0cd8b805df7) + ) + (fp_text user "${REFERENCE}" (at 0 0 90) (layer "B.Fab") + (effects (font (size 0.5 0.5) (thickness 0.08)) (justify mirror)) + (tstamp 25f4d943-8c54-4243-9c52-21ab84230f55) + ) + (fp_line (start -0.227064 -0.735) (end 0.227064 -0.735) (layer "B.SilkS") (width 0.12) (tstamp a5684929-aaa7-401b-840f-9f91581bf34e)) + (fp_line (start -0.227064 0.735) (end 0.227064 0.735) (layer "B.SilkS") (width 0.12) (tstamp afb122c3-2aed-44c1-968e-292f5d194db7)) + (fp_line (start -1.85 -0.95) (end -1.85 0.95) (layer "B.CrtYd") (width 0.05) (tstamp 28dc4192-3354-4f6f-9219-9ef7fc1f16f8)) + (fp_line (start 1.85 -0.95) (end -1.85 -0.95) (layer "B.CrtYd") (width 0.05) (tstamp 557fdd37-fdc9-4176-9d2c-7ffdb78a53f8)) + (fp_line (start -1.85 0.95) (end 1.85 0.95) (layer "B.CrtYd") (width 0.05) (tstamp 69e0f4c9-7068-4230-ad47-8900a1cc2d53)) + (fp_line (start 1.85 0.95) (end 1.85 -0.95) (layer "B.CrtYd") (width 0.05) (tstamp 7ab0e266-f639-488f-825f-7e1f6ccfced1)) + (fp_line (start -1 0.625) (end 1 0.625) (layer "B.Fab") (width 0.1) (tstamp 0273e28e-e8ff-436b-aa73-b4fbf76e9cff)) + (fp_line (start 1 0.625) (end 1 -0.625) (layer "B.Fab") (width 0.1) (tstamp 73b8b20c-93f2-4068-a2cb-e3479f398c65)) + (fp_line (start 1 -0.625) (end -1 -0.625) (layer "B.Fab") (width 0.1) (tstamp a216c160-e071-4f2e-927e-c442aeba9830)) + (fp_line (start -1 -0.625) (end -1 0.625) (layer "B.Fab") (width 0.1) (tstamp fa3c3adb-1583-44b3-a7d1-4e957c7f0b18)) + (pad "1" smd roundrect locked (at -1 0 90) (size 1.2 1.4) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.2083325) + (net 7 "Net-(J1-Pad4)") (tstamp 98d0f67f-0bd4-4492-bbe3-edfe6db52809)) + (pad "2" smd roundrect locked (at 1 0 90) (size 1.2 1.4) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.2083325) + (net 34 "BME_SDA") (tstamp 5244ec96-d3f0-4808-9d5b-bc606bdf4881)) + (model "${KISYS3DMOD}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder" (layer "B.Cu") + (tedit 5F68FEEE) (tstamp 00000000-0000-0000-0000-000061c6506f) + (at 87.1728 51.1556 -90) + (descr "Resistor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") + (tags "resistor handsolder") + (path "/00000000-0000-0000-0000-000061d99899") + (attr smd) + (fp_text reference "R5" (at 0 1.65 -90) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 65a81e5a-23f0-4745-8005-99070863dbfb) + ) + (fp_text value "120" (at 0 -1.65 -90) (layer "B.Fab") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp b93b6636-692f-449a-8664-f951ceb10997) + ) + (fp_text user "${REFERENCE}" (at 0 0 -90) (layer "B.Fab") + (effects (font (size 0.5 0.5) (thickness 0.08)) (justify mirror)) + (tstamp 02374ecd-d122-4fad-ad5f-318aa881e9fb) + ) + (fp_line (start -0.227064 0.735) (end 0.227064 0.735) (layer "B.SilkS") (width 0.12) (tstamp 67a20263-3d10-42eb-9fcc-3e0e7f831285)) + (fp_line (start -0.227064 -0.735) (end 0.227064 -0.735) (layer "B.SilkS") (width 0.12) (tstamp af9b8ebc-c6ac-428f-8f7d-f93768c2b270)) + (fp_line (start 1.85 0.95) (end 1.85 -0.95) (layer "B.CrtYd") (width 0.05) (tstamp 14f44462-9cb9-4428-9d70-eec8a94ed573)) + (fp_line (start -1.85 -0.95) (end -1.85 0.95) (layer "B.CrtYd") (width 0.05) (tstamp 549d0d18-86f6-40ae-abf8-bad774b724a7)) + (fp_line (start 1.85 -0.95) (end -1.85 -0.95) (layer "B.CrtYd") (width 0.05) (tstamp 61453e81-85e6-4334-a094-c0724982bd40)) + (fp_line (start -1.85 0.95) (end 1.85 0.95) (layer "B.CrtYd") (width 0.05) (tstamp cbeb36bd-dc2a-4c3e-b606-2c50855d8d19)) + (fp_line (start -1 -0.625) (end -1 0.625) (layer "B.Fab") (width 0.1) (tstamp 443105b6-a5cc-405b-99c8-21f9337d418f)) + (fp_line (start 1 -0.625) (end -1 -0.625) (layer "B.Fab") (width 0.1) (tstamp 6ad8bb87-4cca-4b67-b21d-7c1e5f9bfd5b)) + (fp_line (start -1 0.625) (end 1 0.625) (layer "B.Fab") (width 0.1) (tstamp 783aed8d-0f07-4788-8376-8ec078d555fb)) + (fp_line (start 1 0.625) (end 1 -0.625) (layer "B.Fab") (width 0.1) (tstamp c6439446-21f0-4abb-ad3b-429e41cfb447)) + (pad "1" smd roundrect locked (at -1 0 270) (size 1.2 1.4) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.2083325) + (net 14 "Net-(J2-Pad3)") (tstamp a80d2d2b-0e36-4314-8244-a30fdcea176e)) + (pad "2" smd roundrect locked (at 1 0 270) (size 1.2 1.4) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.2083325) + (net 35 "OLED_SCL") (tstamp 1762dacb-917c-46fc-9211-5e0abdcc0937)) + (model "${KISYS3DMOD}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder" (layer "B.Cu") + (tedit 5F68FEEF) (tstamp 00000000-0000-0000-0000-000061c67f43) + (at 80.102647 69.754676) + (descr "Capacitor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf, https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing), generated with kicad-footprint-generator") + (tags "capacitor handsolder") + (path "/00000000-0000-0000-0000-000061c617e6") + (attr smd) + (fp_text reference "C1" (at 0 1.68) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp bf9a36c7-8358-4b6f-9e06-db09bdd429f9) + ) + (fp_text value "30p" (at 0 -1.68) (layer "B.Fab") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 85425df1-a531-4567-b7ab-b8a685cdb2c5) + ) + (fp_text user "${REFERENCE}" (at 0 0) (layer "B.Fab") + (effects (font (size 0.5 0.5) (thickness 0.08)) (justify mirror)) + (tstamp 9c6c46d0-b9b4-4d2a-bf29-16f30ca90b0a) + ) + (fp_line (start -0.261252 0.735) (end 0.261252 0.735) (layer "B.SilkS") (width 0.12) (tstamp 0adb49dd-3731-4c3f-b4df-878a3bec8ec6)) + (fp_line (start -0.261252 -0.735) (end 0.261252 -0.735) (layer "B.SilkS") (width 0.12) (tstamp 6539e301-2778-43c3-90b6-09737a609fea)) + (fp_line (start 1.88 0.98) (end 1.88 -0.98) (layer "B.CrtYd") (width 0.05) (tstamp 0546e299-b504-4931-a301-0f75c7ef147d)) + (fp_line (start -1.88 -0.98) (end -1.88 0.98) (layer "B.CrtYd") (width 0.05) (tstamp 1e05ab0f-5a60-4715-8388-3da8980333a5)) + (fp_line (start 1.88 -0.98) (end -1.88 -0.98) (layer "B.CrtYd") (width 0.05) (tstamp 89cd6a72-603d-435e-83f7-be497bc04f05)) + (fp_line (start -1.88 0.98) (end 1.88 0.98) (layer "B.CrtYd") (width 0.05) (tstamp 9a95b646-4eb7-4290-a96b-e98be75fd5d5)) + (fp_line (start -1 -0.625) (end -1 0.625) (layer "B.Fab") (width 0.1) (tstamp 2f2cec7e-29b3-4c6e-91e9-725fd7e3a760)) + (fp_line (start 1 -0.625) (end -1 -0.625) (layer "B.Fab") (width 0.1) (tstamp 698defdc-ff99-408d-8a85-85ffe81226f0)) + (fp_line (start -1 0.625) (end 1 0.625) (layer "B.Fab") (width 0.1) (tstamp 91a2a745-004b-4b3f-9341-4b6c1f110c06)) + (fp_line (start 1 0.625) (end 1 -0.625) (layer "B.Fab") (width 0.1) (tstamp e510aa32-c2dc-4ea9-80ad-3a8de1298885)) + (pad "1" smd roundrect locked (at -1.0375 0) (size 1.175 1.45) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.2127659574) + (net 4 "Net-(C1-Pad1)") (tstamp 9ae6d27b-c921-4c47-b2d4-ceb29ceaeef5)) + (pad "2" smd roundrect locked (at 1.0375 0) (size 1.175 1.45) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.2127659574) + (net 3 "GND") (tstamp c19e8840-df3c-4399-8c37-13275c2ded64)) + (model "${KISYS3DMOD}/Capacitor_SMD.3dshapes/C_0805_2012Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder" (layer "B.Cu") + (tedit 5F68FEEF) (tstamp 00000000-0000-0000-0000-000061c6adf9) + (at 84.188152 69.754673 180) + (descr "Capacitor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf, https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing), generated with kicad-footprint-generator") + (tags "capacitor handsolder") + (path "/00000000-0000-0000-0000-000061c62d85") + (attr smd) + (fp_text reference "C2" (at 0.114151 -1.670127) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 54028712-c84d-450f-a4e7-076ac6a210f0) + ) + (fp_text value "30p" (at 0 -1.68) (layer "B.Fab") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp cf6701b0-7b50-4056-a2df-8b5166e35837) + ) + (fp_text user "${REFERENCE}" (at 0 0) (layer "B.Fab") + (effects (font (size 0.5 0.5) (thickness 0.08)) (justify mirror)) + (tstamp d5717589-e910-4269-b1e7-4d3e29d11a70) + ) + (fp_line (start -0.261252 0.735) (end 0.261252 0.735) (layer "B.SilkS") (width 0.12) (tstamp 068f73b5-2300-477f-91cc-9f221748c52f)) + (fp_line (start -0.261252 -0.735) (end 0.261252 -0.735) (layer "B.SilkS") (width 0.12) (tstamp 0dfd0dde-5cf0-4eb1-8703-3ed02393369b)) + (fp_line (start -1.88 0.98) (end 1.88 0.98) (layer "B.CrtYd") (width 0.05) (tstamp 17eaabd1-ed9e-4bb0-98e9-a658b831ff00)) + (fp_line (start 1.88 0.98) (end 1.88 -0.98) (layer "B.CrtYd") (width 0.05) (tstamp 3e670b56-8ad4-4334-893b-f99313a9dedc)) + (fp_line (start -1.88 -0.98) (end -1.88 0.98) (layer "B.CrtYd") (width 0.05) (tstamp 61cc6aeb-d711-4904-a866-bf62f850279f)) + (fp_line (start 1.88 -0.98) (end -1.88 -0.98) (layer "B.CrtYd") (width 0.05) (tstamp bd50274f-75fb-4daa-a3dc-851aa19a02ca)) + (fp_line (start 1 -0.625) (end -1 -0.625) (layer "B.Fab") (width 0.1) (tstamp 2b2a4aea-609d-4dff-a0dc-9e4a8dfca816)) + (fp_line (start -1 -0.625) (end -1 0.625) (layer "B.Fab") (width 0.1) (tstamp 7f2eb6f6-e04e-4741-b223-ed28db8c1d91)) + (fp_line (start 1 0.625) (end 1 -0.625) (layer "B.Fab") (width 0.1) (tstamp a482225d-aee8-4565-9ea3-c5b5c312f92d)) + (fp_line (start -1 0.625) (end 1 0.625) (layer "B.Fab") (width 0.1) (tstamp cc08f511-c3aa-4c81-8922-ede5c8102769)) + (pad "1" smd roundrect locked (at -1.0375 0 180) (size 1.175 1.45) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.2127659574) + (net 5 "Net-(C2-Pad1)") (tstamp 5278bdf1-b6af-499c-b106-05d977228506)) + (pad "2" smd roundrect locked (at 1.0375 0 180) (size 1.175 1.45) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.2127659574) + (net 3 "GND") (tstamp e73f771c-a453-49ea-80e8-89f235432b72)) + (model "${KISYS3DMOD}/Capacitor_SMD.3dshapes/C_0805_2012Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (footprint "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder" (layer "B.Cu") + (tedit 5F68FEEE) (tstamp 00000000-0000-0000-0000-000061c71c53) + (at 70.738187 59.9395 90) + (descr "Resistor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") + (tags "resistor handsolder") + (path "/00000000-0000-0000-0000-000061d6e92c") + (attr smd) + (fp_text reference "R3" (at 2.8403 0.077013 90) (layer "B.SilkS") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 62ceeffc-23d6-4d05-8c1c-e152f397315e) + ) + (fp_text value "120" (at 0 -1.65 90) (layer "B.Fab") + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + (tstamp 88de9f0c-dc09-48a6-b6f0-c6f644781375) + ) + (fp_text user "${REFERENCE}" (at 0 0 90) (layer "B.Fab") + (effects (font (size 0.5 0.5) (thickness 0.08)) (justify mirror)) + (tstamp 72464c13-7c99-43a1-94c1-3915599523de) + ) + (fp_line (start -0.227064 0.735) (end 0.227064 0.735) (layer "B.SilkS") (width 0.12) (tstamp 1ec5df13-b823-45af-a768-0c3f7c52381b)) + (fp_line (start -0.227064 -0.735) (end 0.227064 -0.735) (layer "B.SilkS") (width 0.12) (tstamp cafa2b26-718b-4df1-abf7-0894b6aedc4b)) + (fp_line (start 1.85 -0.95) (end -1.85 -0.95) (layer "B.CrtYd") (width 0.05) (tstamp 11fca383-e0a5-4cbf-8066-4d3c31b72dda)) + (fp_line (start -1.85 0.95) (end 1.85 0.95) (layer "B.CrtYd") (width 0.05) (tstamp 32f146c2-562e-4f85-ac53-4e5d8f98cea1)) + (fp_line (start 1.85 0.95) (end 1.85 -0.95) (layer "B.CrtYd") (width 0.05) (tstamp 4381deb0-dc65-4fe2-ad8e-365ceb1e27a3)) + (fp_line (start -1.85 -0.95) (end -1.85 0.95) (layer "B.CrtYd") (width 0.05) (tstamp 90f3d7b6-ec99-4225-9f7c-29462fb4fcb5)) + (fp_line (start 1 -0.625) (end -1 -0.625) (layer "B.Fab") (width 0.1) (tstamp 76072659-2cbf-4a77-9f0b-c9113505044d)) + (fp_line (start -1 0.625) (end 1 0.625) (layer "B.Fab") (width 0.1) (tstamp 8ed26ea9-95cc-477b-9083-72eb8a48015e)) + (fp_line (start 1 0.625) (end 1 -0.625) (layer "B.Fab") (width 0.1) (tstamp 9b7cd300-28e9-4a1d-9dff-fdb8229f3931)) + (fp_line (start -1 -0.625) (end -1 0.625) (layer "B.Fab") (width 0.1) (tstamp b1fb0900-10c6-47d1-9a44-3e90fc58b415)) + (pad "1" smd roundrect locked (at -1 0 90) (size 1.2 1.4) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.2083325) + (net 8 "Net-(J1-Pad3)") (tstamp 5f03a1e8-9059-4157-bb65-35e661190c6f)) + (pad "2" smd roundrect locked (at 1 0 90) (size 1.2 1.4) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.2083325) + (net 33 "BME_SCL") (tstamp dfa3db03-f85f-4765-8de8-1fd674a852ef)) + (model "${KISYS3DMOD}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (gr_line (start 20.0408 68.4936) (end 20.0408 18.4936) (layer "Edge.Cuts") (width 0.05) (tstamp 00000000-0000-0000-0000-000061c5575c)) + (gr_arc (start 20.0408 68.4936) (mid 44.80877 74.211737) (end 64.563408 90.208727) (layer "Edge.Cuts") (width 0.05) (tstamp 00000000-0000-0000-0000-000061c7043f)) + (gr_line (start 64.563408 90.208727) (end 103.963945 59.425653) (layer "Edge.Cuts") (width 0.05) (tstamp 00000000-0000-0000-0000-000061c70447)) + (gr_arc (start 20.0408 18.4936) (mid 66.727327 29.272034) (end 103.963945 59.425653) (layer "Edge.Cuts") (width 0.05) (tstamp ea4de6c1-db88-4a1b-a1ba-6b1488d94327)) + (gr_text "FilaDry rev.2\n©McFLY December 2021" (at 30.327601 22.148802) (layer "B.SilkS") (tstamp 00000000-0000-0000-0000-000061c7e175) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (gr_text "3v3" (at 72.4408 79.1972 -52) (layer "F.SilkS") (tstamp 00000000-0000-0000-0000-000061c7e254) + (effects (font (size 0.7 0.7) (thickness 0.15)) (justify right)) + ) + (gr_text "SDA" (at 78.5876 74.7776 -52) (layer "F.SilkS") (tstamp 00000000-0000-0000-0000-000061c7e2bd) + (effects (font (size 0.7 0.7) (thickness 0.15)) (justify right)) + ) + (gr_text "Front\nPanel" (at 84.1756 42.3164 -45) (layer "F.SilkS") (tstamp 00000000-0000-0000-0000-000061c7e3bc) + (effects (font (size 0.7 0.7) (thickness 0.15))) + ) + (gr_text "Fan" (at 48.3616 75.1332 -30) (layer "F.SilkS") (tstamp 2246264e-ee17-4150-aa6d-9dc188a4a011) + (effects (font (size 1 1) (thickness 0.15))) + ) + (gr_text "UP" (at 94.1832 55.0672 45) (layer "F.SilkS") (tstamp 30ef8cda-504c-4613-a9a6-1065b1f517d5) + (effects (font (size 0.7 0.7) (thickness 0.15))) + ) + (gr_text "GND" (at 86.9188 47.9552 45) (layer "F.SilkS") (tstamp 3f116536-f396-48b4-85a9-4f2b145bfea1) + (effects (font (size 0.7 0.7) (thickness 0.15))) + ) + (gr_text "Heater" (at 36.7792 70.0024 -20) (layer "F.SilkS") (tstamp 58a8552b-5978-428d-89c5-13b7d614b1ab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (gr_text "SCL" (at 89.154 50.038 45) (layer "F.SilkS") (tstamp 6fda5aeb-22f7-4593-9aec-7669383ad180) + (effects (font (size 0.7 0.7) (thickness 0.15))) + ) + (gr_text "DN" (at 97.8408 58.7756 45) (layer "F.SilkS") (tstamp 71359172-5d23-4bd1-9d7d-e1031c847ddd) + (effects (font (size 0.7 0.7) (thickness 0.15))) + ) + (gr_text "GND" (at 74.5744 77.8256 -52) (layer "F.SilkS") (tstamp 9c77b188-80ff-4e02-96fd-7d6627693913) + (effects (font (size 0.7 0.7) (thickness 0.15)) (justify right)) + ) + (gr_text "3v3" (at 85.09 46.1264 45) (layer "F.SilkS") (tstamp 9f2d55fe-c99f-46f3-9e50-0cf9557df781) + (effects (font (size 0.7 0.7) (thickness 0.15))) + ) + (gr_text "220V" (at 22.606 58.5724) (layer "F.SilkS") (tstamp a614bc5e-b53c-4d74-b6c7-956fddd2a1aa) + (effects (font (size 1 1) (thickness 0.15))) + ) + (gr_text "OK" (at 96.012 56.9468 45) (layer "F.SilkS") (tstamp ad3f96a4-6d52-4496-afa9-952387a7c872) + (effects (font (size 0.7 0.7) (thickness 0.15))) + ) + (gr_text "FilaDry rev.2\n©McFLY December 2021" (at 30.2768 22.1488) (layer "F.SilkS") (tstamp c16b4ff6-e72e-4506-81a7-99ef9a25be8b) + (effects (font (size 1 1) (thickness 0.15))) + ) + (gr_text "Sensor" (at 81.3308 75.5396 37) (layer "F.SilkS") (tstamp cf8a26f6-b86c-4ac9-a7d9-d27ec5685fd7) + (effects (font (size 0.7 0.7) (thickness 0.15)) (justify left)) + ) + (gr_text "SDA" (at 90.6272 51.562 45) (layer "F.SilkS") (tstamp eb5c8811-2f1f-4f66-b65b-1407f8c32e16) + (effects (font (size 0.7 0.7) (thickness 0.15))) + ) + (gr_text "JLCJLCJLCJLC" (at 49.6824 73.152 -30) (layer "F.SilkS") (tstamp ee7d39bc-2ff6-4033-93f9-55dd929693cf) + (effects (font (size 1 1) (thickness 0.15))) + ) + (gr_text "SCL" (at 76.5048 76.3524 -52) (layer "F.SilkS") (tstamp f65ce643-36b6-45bc-bb9d-6c31cc663f65) + (effects (font (size 0.7 0.7) (thickness 0.15)) (justify right)) + ) + + (segment (start 78.6892 73.0504) (end 84.582 73.0504) (width 0.3) (layer "F.Cu") (net 1) (tstamp 131fccc5-1ad1-4372-9122-8a72f831c6d2)) + (segment (start 70.420341 79.236459) (end 78.6892 73.0504) (width 0.3) (layer "F.Cu") (net 1) (tstamp 75b64433-3fc4-49e6-a7fd-6a03049c90f6)) + (segment (start 66.71628 79.236459) (end 70.420341 79.236459) (width 0.3) (layer "F.Cu") (net 1) (tstamp a2c90184-23fd-4ed2-abda-d1a738efc249)) + (segment (start 84.582 73.0504) (end 94.6912 65.2272) (width 0.3) (layer "F.Cu") (net 1) (tstamp b46e5b01-34a5-491a-b207-97bf706031d4)) + (segment (start 94.6912 65.2272) (end 94.746163 62.98476) (width 0.3) (layer "F.Cu") (net 1) (tstamp c92aaa9b-6b18-43cb-90e5-4602f9cc7b27)) + (segment (start 77.2708 59.3384) (end 77.2708 60.3866) (width 0.3) (layer "F.Cu") (net 2) (tstamp 07adc88e-8b8d-4679-a3ce-b67bc24cb7c9)) + (segment (start 56.0832 39.0412) (end 52.3108 42.8136) (width 0.5) (layer "F.Cu") (net 2) (tstamp 17885558-9bda-407e-9adf-c6f13502be7d)) + (segment (start 75.7428 74.0664) (end 73.7616 75.5396) (width 0.5) (layer "F.Cu") (net 2) (tstamp 1db18bd8-2016-46b0-943b-e033359de9d3)) + (segment (start 57.4548 33.7312) (end 56.0832 35.1028) (width 0.5) (layer "F.Cu") (net 2) (tstamp 2aebdc0b-f8ab-4f37-822e-4e4169f30cfc)) + (segment (start 75.7428 69.0372) (end 75.7428 74.0664) (width 0.5) (layer "F.Cu") (net 2) (tstamp 43a86dd1-bfbd-4794-879f-e223b2d3eaa3)) + (segment (start 76.7708 59.2956) (end 76.728 59.2528) (width 0.3) (layer "F.Cu") (net 2) (tstamp 4838ad44-8b4e-4fc4-bd2a-c355b45be0d5)) + (segment (start 76.2708 60.3866) (end 76.2708 59.2528) (width 0.3) (layer "F.Cu") (net 2) (tstamp 497c918f-cda9-4bb2-91a5-793bc78d0e23)) + (segment (start 76.7708 60.3866) (end 76.7708 59.2956) (width 0.3) (layer "F.Cu") (net 2) (tstamp 70e5b024-fc8e-4e9c-b683-1c4313dc7937)) + (segment (start 76.2708 59.2528) (end 76.728 59.2528) (width 0.3) (layer "F.Cu") (net 2) (tstamp 797c22a4-6c78-499d-83cc-9ce0cc18b8a2)) + (segment (start 56.0832 35.1028) (end 56.0832 39.0412) (width 0.5) (layer "F.Cu") (net 2) (tstamp 7a0c9e16-901b-4fe8-ae70-97e22d0233a6)) + (segment (start 77.1852 59.2528) (end 77.2708 59.3384) (width 0.3) (layer "F.Cu") (net 2) (tstamp c69df135-a075-40f9-bd80-a50ac8e1f091)) + (segment (start 76.728 59.2528) (end 77.1852 59.2528) (width 0.3) (layer "F.Cu") (net 2) (tstamp d202f76e-ed71-4b1f-9016-059d22d4a415)) + (segment (start 61.042 33.7312) (end 57.4548 33.7312) (width 0.5) (layer "F.Cu") (net 2) (tstamp d56e172f-1b39-45b7-95f5-f504f784eeed)) + (segment (start 76.2708 59.2528) (end 75.7428 58.7248) (width 0.3) (layer "F.Cu") (net 2) (tstamp e7898c0c-1768-43d1-8b9b-e0e9a00b6644)) + (via (at 75.7428 58.7248) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 2) (tstamp 475a2457-00fa-40b7-b4cc-985d7351c489)) + (via (at 73.7616 75.5396) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 2) (tstamp 501c95d9-7719-4458-bf13-1ab0fbce562a)) + (via (at 75.7428 69.0372) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 2) (tstamp 8f9fa535-a14a-4444-abdb-ffe9b1d7eeb7)) + (segment (start 75.7213 58.7033) (end 75.7428 58.7248) (width 0.5) (layer "B.Cu") (net 2) (tstamp 062dfb64-35f8-46bd-8ad6-929d49f37d46)) + (segment (start 73.7616 75.5396) (end 72.8472 76.2) (width 0.5) (layer "B.Cu") (net 2) (tstamp 2607bcd6-56bf-4865-a690-5b2375bd3c58)) + (segment (start 75.7858 54.8776) (end 75.7858 57.1871) (width 0.5) (layer "B.Cu") (net 2) (tstamp 3b48487f-0e88-410c-9556-7ff1df5a6f94)) + (segment (start 72.6948 79.5528) (end 73.5076 80.5688) (width 0.5) (layer "B.Cu") (net 2) (tstamp 472c48bf-c0dd-4fc3-8b51-0cc8b7537099)) + (segment (start 75.7858 57.1871) (end 75.7213 57.2516) (width 0.5) (layer "B.Cu") (net 2) (tstamp 475e2beb-49e0-4ca5-8f79-be41905689c9)) + (segment (start 56.5672 38.5572) (end 68.072 38.5572) (width 0.5) (layer "B.Cu") (net 2) (tstamp 4dd8fb33-ce32-4906-86d5-09bfc866c850)) + (segment (start 75.7428 58.7248) (end 75.7428 69.0372) (width 0.5) (layer "B.Cu") (net 2) (tstamp 5ecda5ab-5900-4a03-927f-8b3a97f417eb)) + (segment (start 74.2442 44.4246) (end 74.0918 44.577) (width 0.5) (layer "B.Cu") (net 2) (tstamp 70361d18-796d-481b-9145-1c6264e5e709)) + (segment (start 52.3108 39.83) (end 52.2064 39.7256) (width 0.5) (layer "B.Cu") (net 2) (tstamp 748d43d0-d8e9-46f9-97d7-b56603e29528)) + (segment (start 50.0888 35.6831) (end 52.353296 35.6831) (width 0.5) (layer "B.Cu") (net 2) (tstamp 7bbfe6ee-1a2d-48bd-8488-238ee3c9d448)) + (segment (start 72.8472 76.2) (end 72.6948 79.5528) (width 0.5) (layer "B.Cu") (net 2) (tstamp 86327b94-9d7e-4f56-a8ad-349c8f077c08)) + (segment (start 68.072 38.5572) (end 74.0918 44.577) (width 0.5) (layer "B.Cu") (net 2) (tstamp 8925f3bf-e679-451e-8bda-046c3d3df7aa)) + (segment (start 71.5264 82.0928) (end 73.5076 80.5688) (width 0.5) (layer "B.Cu") (net 2) (tstamp 8afd33ba-1b90-4caf-bf73-8472d865c2ff)) + (segment (start 52.2548 42.7576) (end 52.3108 42.8136) (width 0.5) (layer "B.Cu") (net 2) (tstamp 93384c6a-87d5-4989-87f2-552226afd020)) + (segment (start 75.7213 57.2516) (end 75.7213 58.7033) (width 0.5) (layer "B.Cu") (net 2) (tstamp a8efe243-e453-4d5c-ad0b-abb99353f98e)) + (segment (start 62.62052 82.104341) (end 71.5264 82.0928) (width 0.5) (layer "B.Cu") (net 2) (tstamp b27336d5-afff-41b1-b354-2ef23035ef92)) + (segment (start 74.0918 44.577) (end 75.7858 46.271) (width 0.5) (layer "B.Cu") (net 2) (tstamp b907f31e-a584-4937-a01c-56bc9be97502)) + (segment (start 75.7213 54.9421) (end 75.7858 54.8776) (width 0.3) (layer "B.Cu") (net 2) (tstamp c5ead35e-3f8d-431d-b63d-af004177308c)) + (segment (start 86.9188 44.4246) (end 74.2442 44.4246) (width 0.5) (layer "B.Cu") (net 2) (tstamp c7e8b895-bf97-4212-834d-a9326a35ce53)) + (segment (start 52.2064 35.829996) (end 52.374798 35.661598) (width 0.5) (layer "B.Cu") (net 2) (tstamp c85a6644-e51b-4163-8633-d9f3c4a757e3)) + (segment (start 52.353296 35.6831) (end 52.374798 35.661598) (width 0.5) (layer "B.Cu") (net 2) (tstamp cfe032d1-1ce3-41d0-9e39-c5c55ca3c920)) + (segment (start 52.3108 42.8136) (end 56.5672 38.5572) (width 0.5) (layer "B.Cu") (net 2) (tstamp d08127ee-e177-49ce-9fdb-224fc8d76c8c)) + (segment (start 52.2064 39.7256) (end 52.2064 35.829996) (width 0.5) (layer "B.Cu") (net 2) (tstamp d8965a35-ff5c-4270-854f-dae630c29c1f)) + (segment (start 75.7858 46.271) (end 75.7858 54.8776) (width 0.5) (layer "B.Cu") (net 2) (tstamp df7d0738-f394-4d61-b981-97f725a61b0e)) + (segment (start 52.3108 42.8136) (end 52.3108 39.83) (width 0.5) (layer "B.Cu") (net 2) (tstamp e111ab07-5f86-4c0f-95f4-5be046a734a8)) + (segment (start 75.7428 57.2731) (end 75.7213 57.2516) (width 0.3) (layer "B.Cu") (net 2) (tstamp e3f33689-13fd-48d5-906a-db320a3d4d7c)) + (segment (start 77.7708 60.3866) (end 77.7708 58.7288) (width 0.3) (layer "F.Cu") (net 3) (tstamp c04c42f0-92b8-4398-99e2-740c081633d0)) + (segment (start 77.7708 58.7288) (end 77.7748 58.7248) (width 0.3) (layer "F.Cu") (net 3) (tstamp e10bdb98-d88f-4437-97b9-4445b4ad5eb4)) + (via (at 42.9768 26.162) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 3) (tstamp 00000000-0000-0000-0000-000061c7df6f)) + (via (at 44.7548 26.162) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 3) (tstamp 097cc304-c90f-4bd0-ba97-9d0e170bec87)) + (via (at 88.3412 63.6016) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 3) (tstamp 5cb4ffc7-c8b0-4cbc-b99c-57b382e08d4f)) + (via (at 82.1436 71.374) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 3) (tstamp 65fb6236-b32e-4d79-b380-cea79e2697ec)) + (via (at 90.2716 65.8876) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 3) (tstamp 6c140fce-ab5b-4727-91b9-96b35fcd2c91)) + (via (at 43.8404 27.432) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 3) (tstamp 74dfc23e-d348-4101-972b-7f8d636e6f6e)) + (via (at 65.1256 86.2076) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 3) (tstamp 7b874381-83c1-4bd4-8984-448222f8a5db)) + (via (at 89.2556 64.7192) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 3) (tstamp 7d4360da-9602-4a76-9af4-833dddbc5494)) + (via (at 42.1132 27.432) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 3) (tstamp 92ba7ec4-778a-4aba-a7fa-68c185cbbca3)) + (via (at 63.7032 87.2236) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 3) (tstamp 96e07445-6e5d-4359-8726-0e458b209fe6)) + (via (at 64.77 88.3412) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 3) (tstamp aae635cd-d1dd-45c7-9a37-b301ba3c341b)) + (via (at 90.7796 64.6176) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 3) (tstamp b00580cb-dd7d-4ab4-95f3-f4bacb77b351)) + (via (at 42.9768 28.7528) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 3) (tstamp b006df29-7c9d-4d75-acbe-ea7e037b55ef)) + (via (at 91.2876 63.1952) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 3) (tstamp c778525e-81a5-4818-8dea-672b4e411237)) + (via (at 66.5988 85.09) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 3) (tstamp e4af4603-2610-4882-8c2f-72933148e80e)) + (via (at 67.6656 86.4108) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 3) (tstamp eab860d9-02d4-487b-a165-ade3b96939fc)) + (via (at 77.7748 58.7248) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 3) (tstamp ede655ed-aaa0-4f87-82d2-20649e8be4e3)) + (via (at 66.1416 87.4268) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 3) (tstamp f01f66c7-86e1-4193-8ff7-c395e1fd062d)) + (via (at 41.2496 26.162) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 3) (tstamp f5648c33-7f9f-4fa9-a0a4-5a8576cc9c19)) + (via (at 89.8144 63.3984) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 3) (tstamp ffa0b245-e48f-4386-b6c6-f96cf3fb2efc)) + (segment (start 77.7963 54.9421) (end 77.8608 54.8776) (width 0.3) (layer "B.Cu") (net 3) (tstamp 033eaa43-74b2-46de-8d70-bd57cb8e66fe)) + (segment (start 82.137324 69.754676) (end 83.150648 69.754677) (width 0.3) (layer "B.Cu") (net 3) (tstamp 08f72e17-0870-4f35-bae4-ed08c9778f95)) + (segment (start 82.137324 69.754676) (end 82.137324 71.367724) (width 0.3) (layer "B.Cu") (net 3) (tstamp 602bf54b-4fae-49d4-91e6-6fa1c3d94026)) + (segment (start 81.140146 69.754676) (end 82.137324 69.754676) (width 0.3) (layer "B.Cu") (net 3) (tstamp 6410c0fd-9393-4ce5-9ce0-276203240451)) + (segment (start 77.7748 57.2731) (end 77.7963 57.2516) (width 0.3) (layer "B.Cu") (net 3) (tstamp 762bcc8f-55ef-4155-bdb5-5ca52ef2bd84)) + (segment (start 83.150648 69.754677) (end 83.150651 69.754675) (width 0.3) (layer "B.Cu") (net 3) (tstamp b23a1f3c-a464-4c39-a354-dcfaeb308621)) + (segment (start 82.137324 71.367724) (end 82.1436 71.374) (width 0.3) (layer "B.Cu") (net 3) (tstamp ebdd2aaa-1363-4a32-92be-9c748f90ffe2)) + (segment (start 78.2708 63.3864) (end 79.684646 64.800246) (width 0.3) (layer "F.Cu") (net 4) (tstamp 4cc436a7-ae7c-439b-bbf0-61632da1c16e)) + (segment (start 79.684646 64.800246) (end 79.684646 67.214675) (width 0.3) (layer "F.Cu") (net 4) (tstamp acb28873-7ac3-4b72-9c21-a7c470716809)) + (segment (start 78.2708 60.3866) (end 78.2708 63.3864) (width 0.3) (layer "F.Cu") (net 4) (tstamp afa59abf-cd14-48eb-83be-e25d6d4016a2)) + (segment (start 79.065146 69.754676) (end 79.065146 67.834175) (width 0.3) (layer "B.Cu") (net 4) (tstamp 096b7223-9d8a-473f-be14-fbe2c8acbdab)) + (segment (start 79.065146 67.834175) (end 79.684645 67.214675) (width 0.3) (layer "B.Cu") (net 4) (tstamp e98113cf-a2b7-4a4a-aa4f-345926e38fd1)) + (segment (start 84.642647 63.531674) (end 84.642647 67.156674) (width 0.3) (layer "F.Cu") (net 5) (tstamp 6094f338-fd2f-421e-8701-2b46b2373063)) + (segment (start 84.642647 67.156674) (end 84.584646 67.214675) (width 0.3) (layer "F.Cu") (net 5) (tstamp e1cde01a-3952-4346-a98d-6b3d5966ea86)) + (segment (start 85.225651 69.754673) (end 85.225651 67.85568) (width 0.3) (layer "B.Cu") (net 5) (tstamp c249daee-d1e8-44fb-a1c8-4978998c7695)) + (segment (start 85.225651 67.85568) (end 84.584646 67.214675) (width 0.3) (layer "B.Cu") (net 5) (tstamp e8bfd437-3880-4fa4-bb00-85ab72fae38a)) + (segment (start 71.2978 48.4886) (end 79.2708 56.4616) (width 0.3) (layer "F.Cu") (net 6) (tstamp 16bf5b19-b511-4be2-b53c-246e6b663c13)) + (segment (start 79.2708 60.3866) (end 79.2708 61.5416) (width 0.3) (layer "F.Cu") (net 6) (tstamp 7a3fee32-19c8-4bb9-9f6d-286223c627a9)) + (segment (start 71.2978 47.2186) (end 71.2978 48.4886) (width 0.3) (layer "F.Cu") (net 6) (tstamp 84dcecb9-187c-485e-bf77-afd2183d313c)) + (segment (start 79.2708 61.5416) (end 79.647029 61.917829) (width 0.3) (layer "F.Cu") (net 6) (tstamp 8ca95058-dd9c-44ae-bd0b-b583d59a7c9e)) + (segment (start 79.647029 61.917829) (end 85.020292 61.917829) (width 0.3) (layer "F.Cu") (net 6) (tstamp 8ebeffbb-7d6a-46c5-8f3e-c188dba1c6b6)) + (segment (start 85.020292 61.917829) (end 86.174829 60.763292) (width 0.3) (layer "F.Cu") (net 6) (tstamp b31a3f58-68fa-441d-9153-02f3cbf58e68)) + (segment (start 79.2708 56.4616) (end 79.2708 60.3866) (width 0.3) (layer "F.Cu") (net 6) (tstamp dbeff367-3a9c-4de0-bf8b-73298ffac219)) + (segment (start 74.6252 63.5508) (end 74.6252 69.4436) (width 0.3) (layer "B.Cu") (net 7) (tstamp 4f2f5a3e-eba4-4122-87d3-952314a131bf)) + (segment (start 74.6252 69.4436) (end 79.512242 75.87746) (width 0.3) (layer "B.Cu") (net 7) (tstamp 8a3e74dc-2a4b-44f1-bf45-a5f7d7257ca5)) + (segment (start 73.024193 61.949793) (end 74.6252 63.5508) (width 0.3) (layer "B.Cu") (net 7) (tstamp 8f944317-1b81-4d72-8dbb-8a2d0fa28995)) + (segment (start 73.024193 60.939502) (end 73.024193 61.949793) (width 0.3) (layer "B.Cu") (net 7) (tstamp 973cd9c5-2b44-414e-8769-fb0f3cf28e81)) + (segment (start 73.024193 60.939502) (end 73.024193 61.187793) (width 0.3) (layer "B.Cu") (net 7) (tstamp fd6b3e1c-2e67-4d54-a092-da551a8b5277)) + (segment (start 73.7616 63.9572) (end 73.7616 72.943087) (width 0.3) (layer "B.Cu") (net 8) (tstamp 33492625-7db7-4456-b948-724dbaeae02e)) + (segment (start 70.738187 60.9395) (end 73.7616 63.9572) (width 0.3) (layer "B.Cu") (net 8) (tstamp 7a3c17e5-48bd-4784-8123-7952e9230563)) + (segment (start 73.7616 72.9488) (end 77.510695 77.44124) (width 0.3) (layer "B.Cu") (net 8) (tstamp bf94e401-7bb2-48ab-87d6-1d90f08c22c8)) + (segment (start 93.423356 54.404876) (end 96.015439 56.996959) (width 0.3) (layer "F.Cu") (net 9) (tstamp 0bb3f26e-5897-4f23-a2d9-adcae6da4f5e)) + (segment (start 96.015439 56.996959) (end 99.491159 56.996959) (width 0.3) (layer "F.Cu") (net 9) (tstamp 62921601-7fb0-4435-a64b-e673d6308841)) + (segment (start 83.1958 53.4616) (end 84.462555 53.4616) (width 0.3) (layer "F.Cu") (net 9) (tstamp 736dd8af-8a74-4ec5-b4e1-951b324f0a32)) + (segment (start 85.405831 54.404876) (end 93.423356 54.404876) (width 0.3) (layer "F.Cu") (net 9) (tstamp b9737680-e285-45d7-b54c-026d75186c2b)) + (segment (start 84.462555 53.4616) (end 85.405831 54.404876) (width 0.3) (layer "F.Cu") (net 9) (tstamp e28d830f-2b18-404f-9aed-80ec67afd079)) + (segment (start 84.669675 52.9616) (end 85.612941 53.904866) (width 0.3) (layer "F.Cu") (net 10) (tstamp 51e157f1-d7c3-496a-b900-503f31771c5e)) + (segment (start 93.630466 53.904866) (end 94.926507 55.200907) (width 0.3) (layer "F.Cu") (net 10) (tstamp a1b5b7d6-62bc-4ff6-9817-d5f7ed46983c)) + (segment (start 94.926507 55.200907) (end 97.695107 55.200907) (width 0.3) (layer "F.Cu") (net 10) (tstamp afe478e3-0744-4a1d-b98b-c09dc87e3f7b)) + (segment (start 85.612941 53.904866) (end 93.630466 53.904866) (width 0.3) (layer "F.Cu") (net 10) (tstamp dbd332b5-a59e-43ce-b257-7e94e6f4241e)) + (segment (start 83.1958 52.9616) (end 84.669675 52.9616) (width 0.3) (layer "F.Cu") (net 10) (tstamp dd7e1577-32fa-4293-913a-684736dce5a1)) + (segment (start 85.820051 53.404856) (end 95.899056 53.404856) (width 0.3) (layer "F.Cu") (net 11) (tstamp 8311095f-42b1-4fe9-ad81-108226bf955e)) + (segment (start 83.1958 52.4616) (end 84.876795 52.4616) (width 0.3) (layer "F.Cu") (net 11) (tstamp b6e7aa5e-fd4d-4c72-875d-2878b12bffa8)) + (segment (start 84.876795 52.4616) (end 85.820051 53.404856) (width 0.3) (layer "F.Cu") (net 11) (tstamp e55b62ed-c4b0-47e6-a717-95c246bb8c1a)) + (segment (start 89.964108 52.1556) (end 92.306954 49.812754) (width 0.3) (layer "F.Cu") (net 13) (tstamp 0ecc19ae-3c2d-4008-aa90-fea2c0d2fb42)) + (segment (start 87.1728 52.1556) (end 89.964108 52.1556) (width 0.3) (layer "F.Cu") (net 13) (tstamp c9be3025-e9e3-4714-a549-44bf6f3d5017)) + (segment (start 87.1728 50.1556) (end 88.372004 50.1556) (width 0.3) (layer "B.Cu") (net 14) (tstamp 52eb725d-4cc4-4b48-be60-02658d563265)) + (segment (start 88.372004 50.1556) (end 90.510902 48.016702) (width 0.3) (layer "B.Cu") (net 14) (tstamp bb0c85db-ade0-498e-a06d-b521c54f1887)) + (segment (start 22.9108 43.7388) (end 26.2128 40.4368) (width 0.7) (layer "F.Cu") (net 15) (tstamp 08c64f01-a2a0-4570-97ab-c4422349abb3)) + (segment (start 22.9108 51.6636) (end 22.9108 43.7388) (width 0.7) (layer "F.Cu") (net 15) (tstamp 19975db4-7cf9-41f6-8404-00fe91f72170)) + (segment (start 32.1564 60.9092) (end 26.2128 54.9656) (width 1.905) (layer "F.Cu") (net 15) (tstamp 2d38faa8-dd23-41ff-a458-baae74c930cd)) + (segment (start 23.9776 32.6136) (end 22.9108 32.6136) (width 0.7) (layer "F.Cu") (net 15) (tstamp 76bbdea8-d25e-4a49-8b24-a644fa75bb33)) + (segment (start 32.1564 66.0908) (end 32.1564 60.9092) (width 1.905) (layer "F.Cu") (net 15) (tstamp a094cac7-4306-4c53-be7f-4f9cfe6182c2)) + (segment (start 26.2128 40.4368) (end 26.2128 34.8488) (width 0.7) (layer "F.Cu") (net 15) (tstamp b776cca1-8eff-48d9-a712-f2a1c54c6019)) + (segment (start 26.2128 54.9656) (end 22.9108 51.6636) (width 0.7) (layer "F.Cu") (net 15) (tstamp ceb6ca24-9e0e-44f4-ac2b-cd706de94a3c)) + (segment (start 38.1 68.3768) (end 32.1564 66.0908) (width 1.905) (layer "F.Cu") (net 15) (tstamp e7dc88b3-f189-4551-923e-6ef7903e76a7)) + (segment (start 26.2128 34.8488) (end 23.9776 32.6136) (width 0.7) (layer "F.Cu") (net 15) (tstamp ebc4cde3-c546-420d-92fb-864d2713eeb9)) + (segment (start 41.400439 65.085062) (end 38.1 68.3768) (width 1.905) (layer "F.Cu") (net 15) (tstamp edf27eb2-c187-4ecb-b1f7-9f096094fab5)) + (segment (start 49.3268 68.6816) (end 41.400439 65.085062) (width 1.905) (layer "F.Cu") (net 15) (tstamp f52d4906-9bb1-45c3-a2f4-caa00f80a402)) + (segment (start 22.9108 32.6136) (end 27.7368 32.6136) (width 0.7) (layer "B.Cu") (net 15) (tstamp 8fcf3b73-08fa-4617-b98e-f911e14a0a3d)) + (segment (start 48.4952 49.6824) (end 46.68955 49.6824) (width 0.7) (layer "F.Cu") (net 16) (tstamp 0b980446-38d8-4388-8a33-da7b1f68acb7)) + (segment (start 46.68955 49.6824) (end 42.823619 53.548331) (width 0.7) (layer "F.Cu") (net 16) (tstamp 7345d892-20e7-4f74-85bb-d181ae3d1b0e)) + (segment (start 38.5064 58.3692) (end 41.8592 56.134) (width 1.905) (layer "B.Cu") (net 16) (tstamp 38d1f70a-36d4-486d-9013-7a88e3ed1e97)) + (segment (start 41.8592 56.134) (end 42.823619 53.548331) (width 1.905) (layer "B.Cu") (net 16) (tstamp c30514bb-72ab-40d4-8f84-7708bd766cb8)) + (segment (start 36.6268 63.3476) (end 38.5064 58.3692) (width 1.905) (layer "B.Cu") (net 16) (tstamp cd2ddbef-6bd6-4733-a3f3-0d359a304df5)) + (segment (start 66.4972 38.8112) (end 71.2978 43.6118) (width 0.3) (layer "F.Cu") (net 19) (tstamp 4b3ab85c-65a6-4286-8f90-32672a24f3eb)) + (segment (start 71.2978 43.6118) (end 71.2978 45.2186) (width 0.3) (layer "F.Cu") (net 19) (tstamp d5982ab1-a467-4da5-8ea7-7eedc5d7edc8)) + (segment (start 64.942 38.8112) (end 66.4972 38.8112) (width 0.3) (layer "F.Cu") (net 19) (tstamp f60a4f5c-5e54-438b-9c6e-5a0355bb2f7e)) + (segment (start 64.942 35.0012) (end 66.255827 35.0012) (width 0.3) (layer "F.Cu") (net 23) (tstamp fc14befc-e984-45fb-a492-7a232fcacd76)) + (segment (start 66.255827 35.0012) (end 74.009946 42.755319) (width 0.3) (layer "F.Cu") (net 23) (tstamp fd2bfbe7-3c9c-4e79-831c-0824499f4c47)) + (segment (start 67.281307 33.7312) (end 76.295947 42.74584) (width 0.3) (layer "F.Cu") (net 24) (tstamp 83483d55-c344-474b-8286-08bb2fcdac3f)) + (segment (start 64.942 33.7312) (end 67.281307 33.7312) (width 0.3) (layer "F.Cu") (net 24) (tstamp aa24bcc6-9b94-4270-94ab-3e700fd7699d)) + (segment (start 39.064254 56.85878) (end 39.020717 56.902317) (width 0.7) (layer "F.Cu") (net 27) (tstamp 093e7f3e-32a6-48ee-a17a-bbe9847fcae6)) + (segment (start 40.4368 52.6796) (end 39.020717 56.902317) (width 1.905) (layer "F.Cu") (net 27) (tstamp 387b7211-aa84-43d8-a551-83328bbd8149)) + (segment (start 33.02 49.8856) (end 40.4368 52.6796) (width 1.905) (layer "F.Cu") (net 27) (tstamp 421bd1d0-1e92-4b36-8a72-f93fa981b867)) + (segment (start 39.020717 56.902317) (end 38.130002 59.558398) (width 1.905) (layer "F.Cu") (net 27) (tstamp 478af864-25ba-48e4-ba83-8c49a9342a49)) + (segment (start 41.732307 56.85878) (end 39.064254 56.85878) (width 0.7) (layer "F.Cu") (net 27) (tstamp 8f3e62d1-298a-423c-b92c-d32dd85e938b)) + (segment (start 26.2128 49.8856) (end 33.02 49.8856) (width 1.905) (layer "F.Cu") (net 27) (tstamp 93d3766f-f078-41d2-9354-27946ec241b4)) + (segment (start 38.130002 59.558398) (end 45.212 62.0776) (width 1.905) (layer "F.Cu") (net 27) (tstamp 9543974a-b0c6-44d0-ae78-15dcd2ab0396)) + (segment (start 38.130002 59.558398) (end 38.130002 59.567602) (width 1.905) (layer "F.Cu") (net 27) (tstamp b72e40c1-82d8-498a-9b68-6e7ecef8ec55)) + (segment (start 45.212 62.0776) (end 55.1688 58.7756) (width 1.905) (layer "F.Cu") (net 27) (tstamp fb5d2e7d-80e9-4056-948a-49ddcb773238)) + (segment (start 27.6048 37.6136) (end 27.6848 37.6936) (width 0.7) (layer "B.Cu") (net 27) (tstamp 0417ea58-8c0c-47c8-9d8a-e4deb1d41175)) + (segment (start 53.086 62.0776) (end 55.1688 58.7756) (width 0.7) (layer "B.Cu") (net 27) (tstamp 1913a80a-0718-40b3-baa7-c38c2a8f82a4)) + (segment (start 22.9108 37.6136) (end 27.6048 37.6136) (width 0.7) (layer "B.Cu") (net 27) (tstamp 4e69a14b-be27-40da-8a38-e4d0711ec436)) + (segment (start 22.9108 46.5836) (end 26.2128 49.8856) (width 0.7) (layer "B.Cu") (net 27) (tstamp 90b7b6c4-6bd7-4e70-b67a-f5cde587bc3c)) + (segment (start 22.9108 37.6136) (end 22.9108 46.5836) (width 0.7) (layer "B.Cu") (net 27) (tstamp c4137b6e-24a8-4fb1-8ebc-9051c3a5b3eb)) + (segment (start 53.944749 63.6176) (end 53.086 62.0776) (width 0.7) (layer "B.Cu") (net 27) (tstamp c8e9f573-9b29-48b5-94ad-58a8891ecf96)) + (segment (start 93.738379 60.305792) (end 91.930388 58.119244) (width 0.3) (layer "F.Cu") (net 28) (tstamp 8cf78165-42a2-4764-abd2-29e8bb75f97a)) + (segment (start 45.210439 54.417062) (end 45.210439 55.944074) (width 0.7) (layer "F.Cu") (net 29) (tstamp 5b9f64da-f37a-42fe-97e0-cef6e71e5404)) + (segment (start 45.210439 55.944074) (end 43.611693 57.54282) (width 0.7) (layer "F.Cu") (net 29) (tstamp 92d535c9-54cb-4d00-947a-def714800fec)) + (segment (start 45.210439 54.417062) (end 45.210439 55.041387) (width 0.7) (layer "F.Cu") (net 29) (tstamp cc9272ee-dd19-4366-9fec-ae7de6073f4f)) + (segment (start 59.2328 47.0916) (end 57.3024 47.0916) (width 0.7) (layer "B.Cu") (net 29) (tstamp 3c712723-c0c6-40ca-b6ff-ca3ac420c046)) + (segment (start 57.3024 47.0916) (end 50.9524 54.4576) (width 0.7) (layer "B.Cu") (net 29) (tstamp 53d7a391-ef0f-4edf-978a-10ac62832c8a)) + (segment (start 50.9524 54.4576) (end 45.210439 54.417062) (width 0.7) (layer "B.Cu") (net 29) (tstamp 8cf4b561-e359-4cc7-b638-8df23f1704a1)) + (segment (start 63.5508 63.7032) (end 59.568209 61.3156) (width 0.7) (layer "F.Cu") (net 30) (tstamp 2817579e-1d66-4a66-945c-670a03edcdea)) + (segment (start 63.5508 64.6176) (end 63.5508 63.7032) (width 0.7) (layer "F.Cu") (net 30) (tstamp 5ed37ef0-d171-4653-bb85-ea86658bf782)) + (segment (start 57.6072 64.5668) (end 59.568209 61.3156) (width 0.7) (layer "B.Cu") (net 30) (tstamp 9b770fd9-26c8-48de-83d5-317998e03983)) + (segment (start 55.676799 64.6176) (end 57.6072 64.5668) (width 0.7) (layer "B.Cu") (net 30) (tstamp c70fd7d8-e5cb-412e-97d5-18a00313624f)) + (segment (start 89.019256 54.9616) (end 90.644812 56.587156) (width 0.3) (layer "F.Cu") (net 31) (tstamp 2bc8de2d-6e22-4729-b1a8-2829876aba1b)) + (segment (start 83.1958 54.9616) (end 89.019256 54.9616) (width 0.3) (layer "F.Cu") (net 31) (tstamp 5e90bfbe-a776-4dfa-b681-dfa05fbd075b)) + (segment (start 78.7708 60.3866) (end 78.7708 61.8544) (width 0.3) (layer "F.Cu") (net 32) (tstamp 4dfa9899-a5cb-4aff-89b9-f4f3c5ed5c4b)) + (segment (start 78.7708 61.8544) (end 80.448074 63.531674) (width 0.3) (layer "F.Cu") (net 32) (tstamp 5f78051e-0e40-4b06-8c99-706b69018a57)) + (segment (start 80.448074 63.531674) (end 82.642646 63.531674) (width 0.3) (layer "F.Cu") (net 32) (tstamp 72aae86a-0fa1-4b5f-b150-a6205070966a)) + (segment (start 70.4664 57.4616) (end 70.4596 57.4548) (width 0.3) (layer "F.Cu") (net 33) (tstamp 00458fa8-92f7-4ebc-b0a4-3f7004fdd785)) + (segment (start 71.8458 57.4616) (end 70.4664 57.4616) (width 0.3) (layer "F.Cu") (net 33) (tstamp f47fd80d-4481-4ae1-b91c-f9ac1c2ceccb)) + (via (at 70.4596 57.4548) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 33) (tstamp 637366a7-628b-4927-83c8-4cb41e9ba2f6)) + (segment (start 70.4596 57.4548) (end 70.4596 58.660913) (width 0.3) (layer "B.Cu") (net 33) (tstamp 2235e695-0a58-422a-a1c9-7232f1a3b68f)) + (segment (start 70.4596 58.660913) (end 70.738187 58.9395) (width 0.3) (layer "B.Cu") (net 33) (tstamp ea795892-98c9-40e3-850a-8d0798491fbd)) + (segment (start 71.8458 57.9616) (end 72.8484 57.9616) (width 0.3) (layer "F.Cu") (net 34) (tstamp 0be9726b-f1ad-4133-b37b-950544360879)) + (segment (start 72.8484 57.9616) (end 73.3552 57.4548) (width 0.3) (layer "F.Cu") (net 34) (tstamp b47007ae-1d2c-4ea9-bc64-f5bcf08ebab1)) + (via (at 73.3552 57.4548) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 34) (tstamp 8c6d437a-9cb3-4e47-a2d0-8e66c2349179)) + (segment (start 73.3552 58.608495) (end 73.024193 58.939502) (width 0.3) (layer "B.Cu") (net 34) (tstamp 051ae03f-2070-4208-a5bf-d4dfd0771930)) + (segment (start 73.3552 57.4548) (end 73.3552 58.608495) (width 0.3) (layer "B.Cu") (net 34) (tstamp 949239ed-fc26-4a47-8167-22a5c5457b93)) + (segment (start 84.88 51.9616) (end 83.1958 51.9616) (width 0.3) (layer "F.Cu") (net 35) (tstamp 7020984d-658a-4f12-a68a-714766745152)) + (segment (start 85.6996 51.9684) (end 84.88 51.9616) (width 0.3) (layer "F.Cu") (net 35) (tstamp 911be86e-621c-4fbb-ba0d-82eb623e615a)) + (via (at 85.6996 51.9684) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 35) (tstamp d5d12e21-00ee-44f7-9bc4-4faa62a49828)) + (segment (start 86.9856 51.9684) (end 87.1728 52.1556) (width 0.3) (layer "B.Cu") (net 35) (tstamp 69665318-82a2-4b4d-98b7-1992f4acc1d9)) + (segment (start 85.6996 51.9684) (end 86.9856 51.9684) (width 0.3) (layer "B.Cu") (net 35) (tstamp 92101d59-7bcf-4235-9177-01949ba5fd36)) + (segment (start 85.7852 50.1556) (end 87.1728 50.1556) (width 0.3) (layer "F.Cu") (net 36) (tstamp 6ea7d0f1-a808-4e28-af4b-406ee8437d57)) + (segment (start 84.4792 51.4616) (end 85.7852 50.1556) (width 0.3) (layer "F.Cu") (net 36) (tstamp 9216ac9c-4ac5-46fe-90c8-b8a3677e4157)) + (segment (start 83.1958 51.4616) (end 84.4792 51.4616) (width 0.3) (layer "F.Cu") (net 36) (tstamp b7c26eef-d04a-45b5-a988-95e53b926bf7)) + (segment (start 68.8648 55.4616) (end 68.852799 55.473601) (width 0.3) (layer "F.Cu") (net 37) (tstamp 82cd68d3-9fd0-4db4-a539-25087d4cc280)) + (segment (start 71.8458 55.4616) (end 68.8648 55.4616) (width 0.3) (layer "F.Cu") (net 37) (tstamp c663a4a7-7c7b-4fef-b4cb-ad45e341cb31)) + (segment (start 66.8528 54.7736) (end 66.8528 52.1716) (width 0.3) (layer "F.Cu") (net 38) (tstamp a65e6997-fd42-40b0-8ad8-7e2a8cce152a)) + (segment (start 66.852799 55.473601) (end 66.8528 54.7736) (width 0.3) (layer "F.Cu") (net 38) (tstamp e9c88102-1bfd-4cd7-b595-0ec0c2044594)) + (segment (start 74.2188 73.7108) (end 74.2188 63.9064) (width 0.3) (layer "F.Cu") (net 39) (tstamp 0cf6ea11-b126-4ec2-b670-f29163daedd2)) + (segment (start 74.2188 63.9064) (end 69.5452 59.2328) (width 0.3) (layer "F.Cu") (net 39) (tstamp 17792922-39a2-4d22-bf78-bd26a38448d1)) + (segment (start 72.379376 74.453752) (end 73.475848 74.453752) (width 0.3) (layer "F.Cu") (net 39) (tstamp 1b7c52df-6008-4890-b685-443a463ccf3a)) + (segment (start 70.632 55.9616) (end 69.5452 57.0484) (width 0.3) (layer "F.Cu") (net 39) (tstamp 3ab1e8e8-0d8c-4aae-bbc8-0460ff850ab3)) + (segment (start 69.5452 59.2328) (end 69.5452 57.0484) (width 0.3) (layer "F.Cu") (net 39) (tstamp 8b882600-edc9-45a5-b920-c3cdc58b0c4f)) + (segment (start 71.8458 55.9616) (end 70.632 55.9616) (width 0.3) (layer "F.Cu") (net 39) (tstamp c4356eae-f932-4ea2-b9ff-624e687fc7e9)) + (segment (start 73.475848 74.453752) (end 74.2188 73.7108) (width 0.3) (layer "F.Cu") (net 39) (tstamp fa94f773-9faf-49ef-8d7f-00c9c035f962)) + (segment (start 71.1708 72.754024) (end 71.232224 72.815448) (width 0.3) (layer "F.Cu") (net 40) (tstamp 9270c307-38f1-4a00-bf27-cca51d0b9afa)) + (segment (start 71.1708 69.6976) (end 71.1708 72.754024) (width 0.3) (layer "F.Cu") (net 40) (tstamp fd0005eb-9bcb-47af-98da-8b24bb9b70d4)) + (segment (start 70.1188 52.4616) (end 71.8458 52.4616) (width 0.3) (layer "F.Cu") (net 41) (tstamp 180d6547-6047-4e45-bb21-9723404661bd)) + (segment (start 70.104 52.4764) (end 70.1188 52.4616) (width 0.3) (layer "F.Cu") (net 41) (tstamp 6e725ef3-18ac-429d-80e4-473068798b37)) + (via (at 70.104 52.4764) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 41) (tstamp f81d8046-f237-45ea-aaaf-b8afb9582e14)) + (segment (start 48.1744 37.6936) (end 50.2064 39.7256) (width 0.3) (layer "B.Cu") (net 41) (tstamp 0540cebc-fa23-4873-b6d1-06c833bff8c2)) + (segment (start 55.5752 43.18) (end 53.7464 45.0088) (width 0.3) (layer "B.Cu") (net 41) (tstamp 1128d9e3-707d-45d5-a470-5fd2ccb5511a)) + (segment (start 70.104 52.4764) (end 70.104 46.3804) (width 0.3) (layer "B.Cu") (net 41) (tstamp 42d226dc-90af-4cd6-9770-801c24269994)) + (segment (start 44.3748 37.6936) (end 48.1744 37.6936) (width 0.3) (layer "B.Cu") (net 41) (tstamp 4a7423d4-4d87-4acc-9c5c-28f3e0aeb771)) + (segment (start 66.9036 43.18) (end 55.5752 43.18) (width 0.3) (layer "B.Cu") (net 41) (tstamp a9b2fa6f-95c4-41ca-a444-f6bb6602199a)) + (segment (start 44.3748 39.2948) (end 44.3748 37.6936) (width 0.3) (layer "B.Cu") (net 41) (tstamp c0c12b6b-0353-481d-b7d8-d62ac12beea5)) + (segment (start 70.104 46.3804) (end 66.9036 43.18) (width 0.3) (layer "B.Cu") (net 41) (tstamp c58f6914-9722-4264-8c54-b64bccf9196a)) + (segment (start 50.0888 45.0088) (end 44.3748 39.2948) (width 0.3) (layer "B.Cu") (net 41) (tstamp ff1af53e-39f5-4257-8092-7d0e968efb78)) + (segment (start 53.7464 45.0088) (end 50.0888 45.0088) (width 0.3) (layer "B.Cu") (net 41) (tstamp ffaaacf4-bf1e-42be-83e3-83a89b2ea763)) + (segment (start 57.5564 52.1716) (end 55.0672 49.6824) (width 0.7) (layer "F.Cu") (net 42) (tstamp a150e579-21bc-41bd-b190-f290a97268dc)) + (segment (start 59.2328 52.1716) (end 57.5564 52.1716) (width 0.7) (layer "F.Cu") (net 42) (tstamp dc860675-c31e-4476-99ed-1084bfd88251)) + (segment (start 50.4952 49.6824) (end 53.0672 49.6824) (width 0.7) (layer "F.Cu") (net 43) (tstamp c905d6ad-37ea-4b89-9af9-212f884e532f)) + (segment (start 61.7728 69.6976) (end 63.5508 69.6976) (width 0.7) (layer "F.Cu") (net 44) (tstamp 0cd220dd-cd64-4dd6-81c9-1e120fd72db5)) + (segment (start 60.232801 72.28355) (end 61.7728 69.6976) (width 0.7) (layer "F.Cu") (net 44) (tstamp e3166a26-1995-4d1d-b204-dcd55ae8f53d)) + (segment (start 57.962799 76.0476) (end 59.232801 74.0156) (width 0.7) (layer "F.Cu") (net 45) (tstamp 7fb601c4-40bc-49dd-8ae2-fc25078a4dcb)) + (segment (start 30.7848 37.6936) (end 34.9748 37.6936) (width 0.7) (layer "B.Cu") (net 46) (tstamp 4629ce87-c84b-477e-b6bb-74c2d08f8d34)) + (segment (start 32.4348 32.6136) (end 34.9748 35.1536) (width 0.7) (layer "B.Cu") (net 47) (tstamp 46822a52-3272-4f25-9e65-41e28c295a70)) + (segment (start 30.8368 32.6136) (end 32.4348 32.6136) (width 0.7) (layer "B.Cu") (net 47) (tstamp 5937d673-bb24-44f5-a58b-f26f58dc1b68)) + (segment (start 75.2708 47.0048) (end 76.295947 45.979653) (width 0.3) (layer "F.Cu") (net 48) (tstamp 9fa74eaf-1a6b-4e7c-9fc5-66b4817bc277)) + (segment (start 75.2708 49.0366) (end 75.2708 47.0048) (width 0.3) (layer "F.Cu") (net 48) (tstamp e21d82f7-75cc-4ce0-b614-5b92d94857b5)) + (segment (start 76.295947 45.979653) (end 76.295947 44.74584) (width 0.3) (layer "F.Cu") (net 48) (tstamp fc7d8ba9-04a3-4654-ad58-4fabb674ab6f)) + (segment (start 74.009946 46.273146) (end 74.009946 44.755319) (width 0.3) (layer "F.Cu") (net 49) (tstamp 4a37176d-5ab7-4ada-936a-c688922089a2)) + (segment (start 74.7708 49.0366) (end 74.7708 47.034) (width 0.3) (layer "F.Cu") (net 49) (tstamp 68cfad3c-397c-4de1-beb2-4f01e4a2d012)) + (segment (start 74.7708 47.034) (end 74.009946 46.273146) (width 0.3) (layer "F.Cu") (net 49) (tstamp 6cca5882-e4f6-4fbf-8d89-689d323ec0e2)) + (segment (start 57.368505 60.0456) (end 56.0324 62.1792) (width 1.905) (layer "F.Cu") (net 98) (tstamp 0e3a5706-c0a7-4371-8f0d-ee92a59375c8)) + (segment (start 53.6956 75.8952) (end 53.726209 71.2216) (width 0.7) (layer "F.Cu") (net 98) (tstamp 6ffb45dd-bcbb-4276-a587-8ee1b50c342b)) + (segment (start 56.0832 68.0212) (end 53.726209 71.2216) (width 1.905) (layer "F.Cu") (net 98) (tstamp c9d0a07d-e555-49fb-b6a4-6fb3f7b5deb6)) + (segment (start 56.0324 62.1792) (end 56.0832 68.0212) (width 1.905) (layer "F.Cu") (net 98) (tstamp d229481d-9ec5-4ea2-ae6a-04d7dc59ff86)) + (segment (start 56.962799 77.77965) (end 53.6956 75.8952) (width 0.7) (layer "F.Cu") (net 98) (tstamp ecaa81f9-3034-4602-9e3d-306f16f337ef)) + + (zone (net 3) (net_name "GND") (layer "F.Cu") (tstamp 00000000-0000-0000-0000-000061c7fb98) (hatch edge 0.508) + (connect_pads (clearance 0.3)) + (min_thickness 0.254) + (fill yes (thermal_gap 0.3) (thermal_bridge_width 0.3) (smoothing fillet) (radius 0.127)) + (polygon + (pts + (xy 80.1116 30.8864) + (xy 105.0036 59.436) + (xy 64.5668 90.6272) + (xy 54.61 84.4296) + (xy 63.0936 75.3872) + (xy 67.3608 72.644) + (xy 67.3608 59.7408) + (xy 63.0428 54.9656) + (xy 63.0174 44.1706) + (xy 56.769 44.2214) + (xy 55.0418 45.8216) + (xy 39.751 45.8216) + (xy 39.7764 19.1516) + ) + ) + (filled_polygon + (layer "F.Cu") + (pts + (xy 40.275685 20.89408) + (xy 44.256937 21.747586) + (xy 48.202486 22.753294) + (xy 52.10651 23.90972) + (xy 55.963256 25.215156) + (xy 59.767053 26.667685) + (xy 63.512278 28.265159) + (xy 67.193433 30.005233) + (xy 70.805085 31.88534) + (xy 74.341872 33.902688) + (xy 77.798632 36.054332) + (xy 81.170236 38.337078) + (xy 84.451727 40.747572) + (xy 87.053599 42.817195) + (xy 87.002507 42.801696) + (xy 86.9188 42.793452) + (xy 86.835093 42.801696) + (xy 86.754604 42.826113) + (xy 86.680424 42.865763) + (xy 86.615405 42.919123) + (xy 85.413323 44.121205) + (xy 85.359963 44.186224) + (xy 85.320313 44.260404) + (xy 85.295896 44.340893) + (xy 85.287652 44.4246) + (xy 85.295896 44.508307) + (xy 85.320313 44.588796) + (xy 85.359963 44.662976) + (xy 85.413323 44.727995) + (xy 86.615405 45.930077) + (xy 86.680424 45.983437) + (xy 86.754604 46.023087) + (xy 86.835093 46.047504) + (xy 86.9188 46.055748) + (xy 87.002507 46.047504) + (xy 87.082996 46.023087) + (xy 87.157176 45.983437) + (xy 87.222195 45.930077) + (xy 87.806971 45.345301) + (xy 87.871239 45.409569) + (xy 87.668384 45.488777) + (xy 87.54571 45.706995) + (xy 87.467966 45.944953) + (xy 87.438138 46.193506) + (xy 87.457374 46.443102) + (xy 87.524934 46.684149) + (xy 87.638222 46.907385) + (xy 87.668385 46.952524) + (xy 87.871256 47.031719) + (xy 88.682324 46.220651) + (xy 88.668182 46.206509) + (xy 88.700709 46.173982) + (xy 88.714851 46.188124) + (xy 89.525919 45.377056) + (xy 89.446724 45.174185) + (xy 89.401585 45.144022) + (xy 89.178349 45.030734) + (xy 88.937302 44.963174) + (xy 88.687706 44.943938) + (xy 88.439153 44.973766) + (xy 88.201195 45.05151) + (xy 87.982977 45.174184) + (xy 87.903769 45.377039) + (xy 87.839501 45.312771) + (xy 88.424277 44.727995) + (xy 88.477637 44.662976) + (xy 88.517287 44.588796) + (xy 88.541704 44.508307) + (xy 88.549948 44.4246) + (xy 88.541704 44.340893) + (xy 88.517287 44.260404) + (xy 88.477637 44.186224) + (xy 88.424277 44.121205) + (xy 87.379503 43.076431) + (xy 87.638295 43.282283) + (xy 90.725181 45.937424) + (xy 93.707877 48.709117) + (xy 96.581969 51.593258) + (xy 99.343237 54.585616) + (xy 101.9886 57.682939) + (xy 103.325107 59.351172) + (xy 64.638216 89.576685) + (xy 64.303286 89.155621) + (xy 64.298204 89.149565) + (xy 64.293251 89.143448) + (xy 62.372186 86.89417) + (xy 62.356352 86.876584) + (xy 62.356333 86.876565) + (xy 60.320222 84.730952) + (xy 60.320203 84.730931) + (xy 60.30347 84.714198) + (xy 58.157835 82.678067) + (xy 58.157816 82.678048) + (xy 58.149483 82.670546) + (xy 58.14023 82.662213) + (xy 58.140207 82.662195) + (xy 57.239226 81.892683) + (xy 60.9381 81.892683) + (xy 60.948169 81.97619) + (xy 60.974335 82.056128) + (xy 61.015594 82.129425) + (xy 62.048032 83.603899) + (xy 62.102797 83.667739) + (xy 62.168965 83.719668) + (xy 62.243992 83.75769) + (xy 62.324996 83.780345) + (xy 62.408862 83.786761) + (xy 62.492369 83.776692) + (xy 62.572307 83.750526) + (xy 62.645604 83.709267) + (xy 64.120078 82.676829) + (xy 64.183918 82.622064) + (xy 64.235847 82.555896) + (xy 64.273869 82.480869) + (xy 64.296524 82.399865) + (xy 64.30294 82.315999) + (xy 64.292871 82.232492) + (xy 64.266705 82.152554) + (xy 64.225446 82.079257) + (xy 63.193008 80.604783) + (xy 63.138243 80.540943) + (xy 63.072075 80.489014) + (xy 62.997048 80.450992) + (xy 62.916044 80.428337) + (xy 62.832178 80.421921) + (xy 62.748671 80.43199) + (xy 62.668733 80.458156) + (xy 62.595436 80.499415) + (xy 61.120962 81.531853) + (xy 61.057122 81.586618) + (xy 61.005193 81.652786) + (xy 60.967171 81.727813) + (xy 60.944516 81.808817) + (xy 60.9381 81.892683) + (xy 57.239226 81.892683) + (xy 57.197622 81.85715) + (xy 63.170131 75.491243) + (xy 63.182057 75.481313) + (xy 67.371152 72.788324) + (xy 67.395436 72.768024) + (xy 67.438229 72.722051) + (xy 67.453324 72.702253) + (xy 67.464266 72.67989) + (xy 67.468325 72.666925) + (xy 67.483856 72.606068) + (xy 67.4878 72.574664) + (xy 67.4878 67.372228) + (xy 69.562718 67.372228) + (xy 69.56289 67.374416) + (xy 69.628398 67.605902) + (xy 69.737808 67.82016) + (xy 69.886916 68.008956) + (xy 70.069991 68.165035) + (xy 70.279998 68.282398) + (xy 70.508866 68.356536) + (xy 70.7478 68.3846) + (xy 71.1478 68.3846) + (xy 71.1478 67.1806) + (xy 71.1938 67.1806) + (xy 71.1938 68.3846) + (xy 71.5938 68.3846) + (xy 71.832734 68.356536) + (xy 72.061602 68.282398) + (xy 72.271609 68.165035) + (xy 72.454684 68.008956) + (xy 72.603792 67.82016) + (xy 72.713202 67.605902) + (xy 72.77871 67.374416) + (xy 72.778882 67.372228) + (xy 72.690814 67.1806) + (xy 71.1938 67.1806) + (xy 71.1478 67.1806) + (xy 69.650786 67.1806) + (xy 69.562718 67.372228) + (xy 67.4878 67.372228) + (xy 67.4878 66.942972) + (xy 69.562718 66.942972) + (xy 69.650786 67.1346) + (xy 71.1478 67.1346) + (xy 71.1478 65.9306) + (xy 71.1938 65.9306) + (xy 71.1938 67.1346) + (xy 72.690814 67.1346) + (xy 72.778882 66.942972) + (xy 72.77871 66.940784) + (xy 72.713202 66.709298) + (xy 72.603792 66.49504) + (xy 72.454684 66.306244) + (xy 72.271609 66.150165) + (xy 72.061602 66.032802) + (xy 71.832734 65.958664) + (xy 71.5938 65.9306) + (xy 71.1938 65.9306) + (xy 71.1478 65.9306) + (xy 70.7478 65.9306) + (xy 70.508866 65.958664) + (xy 70.279998 66.032802) + (xy 70.069991 66.150165) + (xy 69.886916 66.306244) + (xy 69.737808 66.49504) + (xy 69.628398 66.709298) + (xy 69.56289 66.940784) + (xy 69.562718 66.942972) + (xy 67.4878 66.942972) + (xy 67.4878 64.6176) + (xy 69.537864 64.6176) + (xy 69.561555 64.858134) + (xy 69.631716 65.089424) + (xy 69.745651 65.302583) + (xy 69.898983 65.489417) + (xy 70.085817 65.642749) + (xy 70.298976 65.756684) + (xy 70.530266 65.826845) + (xy 70.710532 65.8446) + (xy 71.631068 65.8446) + (xy 71.811334 65.826845) + (xy 72.042624 65.756684) + (xy 72.255783 65.642749) + (xy 72.442617 65.489417) + (xy 72.595949 65.302583) + (xy 72.709884 65.089424) + (xy 72.780045 64.858134) + (xy 72.803736 64.6176) + (xy 72.780045 64.377066) + (xy 72.709884 64.145776) + (xy 72.595949 63.932617) + (xy 72.442617 63.745783) + (xy 72.255783 63.592451) + (xy 72.042624 63.478516) + (xy 71.811334 63.408355) + (xy 71.631068 63.3906) + (xy 70.710532 63.3906) + (xy 70.530266 63.408355) + (xy 70.298976 63.478516) + (xy 70.085817 63.592451) + (xy 69.898983 63.745783) + (xy 69.745651 63.932617) + (xy 69.631716 64.145776) + (xy 69.561555 64.377066) + (xy 69.537864 64.6176) + (xy 67.4878 64.6176) + (xy 67.4878 59.789705) + (xy 67.48536 59.764929) + (xy 67.479316 59.744066) + (xy 67.446515 59.658887) + (xy 67.435334 59.636643) + (xy 67.422198 59.619346) + (xy 63.185467 54.93402) + (xy 63.16963 54.893036) + (xy 63.157756 49.846228) + (xy 65.244718 49.846228) + (xy 65.24489 49.848416) + (xy 65.310398 50.079902) + (xy 65.419808 50.29416) + (xy 65.568916 50.482956) + (xy 65.751991 50.639035) + (xy 65.961998 50.756398) + (xy 66.190866 50.830536) + (xy 66.4298 50.8586) + (xy 66.8298 50.8586) + (xy 66.8298 49.6546) + (xy 66.8758 49.6546) + (xy 66.8758 50.8586) + (xy 67.2758 50.8586) + (xy 67.514734 50.830536) + (xy 67.743602 50.756398) + (xy 67.953609 50.639035) + (xy 68.136684 50.482956) + (xy 68.285792 50.29416) + (xy 68.395202 50.079902) + (xy 68.46071 49.848416) + (xy 68.460882 49.846228) + (xy 68.372814 49.6546) + (xy 66.8758 49.6546) + (xy 66.8298 49.6546) + (xy 65.332786 49.6546) + (xy 65.244718 49.846228) + (xy 63.157756 49.846228) + (xy 63.156746 49.416972) + (xy 65.244718 49.416972) + (xy 65.332786 49.6086) + (xy 66.8298 49.6086) + (xy 66.8298 48.4046) + (xy 66.8758 48.4046) + (xy 66.8758 49.6086) + (xy 68.372814 49.6086) + (xy 68.460882 49.416972) + (xy 68.46071 49.414784) + (xy 68.395202 49.183298) + (xy 68.285792 48.96904) + (xy 68.136684 48.780244) + (xy 67.953609 48.624165) + (xy 67.743602 48.506802) + (xy 67.514734 48.432664) + (xy 67.2758 48.4046) + (xy 66.8758 48.4046) + (xy 66.8298 48.4046) + (xy 66.4298 48.4046) + (xy 66.190866 48.432664) + (xy 65.961998 48.506802) + (xy 65.751991 48.624165) + (xy 65.568916 48.780244) + (xy 65.419808 48.96904) + (xy 65.310398 49.183298) + (xy 65.24489 49.414784) + (xy 65.244718 49.416972) + (xy 63.156746 49.416972) + (xy 63.151274 47.0916) + (xy 65.219864 47.0916) + (xy 65.243555 47.332134) + (xy 65.313716 47.563424) + (xy 65.427651 47.776583) + (xy 65.580983 47.963417) + (xy 65.767817 48.116749) + (xy 65.980976 48.230684) + (xy 66.212266 48.300845) + (xy 66.392532 48.3186) + (xy 67.313068 48.3186) + (xy 67.493334 48.300845) + (xy 67.724624 48.230684) + (xy 67.937783 48.116749) + (xy 68.124617 47.963417) + (xy 68.277949 47.776583) + (xy 68.391884 47.563424) + (xy 68.462045 47.332134) + (xy 68.485736 47.0916) + (xy 68.462045 46.851066) + (xy 68.391884 46.619776) + (xy 68.277949 46.406617) + (xy 68.124617 46.219783) + (xy 67.937783 46.066451) + (xy 67.724624 45.952516) + (xy 67.493334 45.882355) + (xy 67.313068 45.8646) + (xy 66.392532 45.8646) + (xy 66.212266 45.882355) + (xy 65.980976 45.952516) + (xy 65.767817 46.066451) + (xy 65.580983 46.219783) + (xy 65.427651 46.406617) + (xy 65.313716 46.619776) + (xy 65.243555 46.851066) + (xy 65.219864 47.0916) + (xy 63.151274 47.0916) + (xy 63.144701 44.298036) + (xy 63.140263 44.265057) + (xy 63.122975 44.201386) + (xy 63.114128 44.178114) + (xy 63.100911 44.157016) + (xy 63.089744 44.144392) + (xy 63.042848 44.097985) + (xy 63.02352 44.082292) + (xy 63.001502 44.070671) + (xy 62.985507 44.065352) + (xy 62.921658 44.048733) + (xy 62.888636 44.044642) + (xy 56.817161 44.094004) + (xy 56.792405 44.096646) + (xy 56.771358 44.102951) + (xy 56.686078 44.136785) + (xy 56.663948 44.14819) + (xy 56.646601 44.161672) + (xy 55.00962 45.678286) + (xy 54.968007 45.6946) + (xy 39.89485 45.6946) + (xy 39.881661 45.691064) + (xy 39.878137 45.67787) + (xy 39.881012 42.658279) + (xy 50.7338 42.658279) + (xy 50.7338 42.968921) + (xy 50.794404 43.273594) + (xy 50.913281 43.560589) + (xy 51.085864 43.818879) + (xy 51.305521 44.038536) + (xy 51.563811 44.211119) + (xy 51.850806 44.329996) + (xy 52.155479 44.3906) + (xy 52.466121 44.3906) + (xy 52.770794 44.329996) + (xy 53.057789 44.211119) + (xy 53.316079 44.038536) + (xy 53.535736 43.818879) + (xy 53.708319 43.560589) + (xy 53.827196 43.273594) + (xy 53.8878 42.968921) + (xy 53.8878 42.658279) + (xy 53.827196 42.353606) + (xy 53.798205 42.283617) + (xy 56.538396 39.543426) + (xy 56.564227 39.522227) + (xy 56.648828 39.419141) + (xy 56.711692 39.30153) + (xy 56.748194 39.1812) + (xy 59.412934 39.1812) + (xy 59.421178 39.264907) + (xy 59.445595 39.345396) + (xy 59.485245 39.419576) + (xy 59.507095 39.4462) + (xy 59.485245 39.472824) + (xy 59.445595 39.547004) + (xy 59.421178 39.627493) + (xy 59.412934 39.7112) + (xy 59.412934 40.4512) + (xy 59.421178 40.534907) + (xy 59.445595 40.615396) + (xy 59.485245 40.689576) + (xy 59.538605 40.754595) + (xy 59.603624 40.807955) + (xy 59.677804 40.847605) + (xy 59.758293 40.872022) + (xy 59.842 40.880266) + (xy 62.242 40.880266) + (xy 62.325707 40.872022) + (xy 62.406196 40.847605) + (xy 62.480376 40.807955) + (xy 62.545395 40.754595) + (xy 62.598755 40.689576) + (xy 62.638405 40.615396) + (xy 62.662822 40.534907) + (xy 62.671066 40.4512) + (xy 62.671066 39.7112) + (xy 62.662822 39.627493) + (xy 62.638405 39.547004) + (xy 62.598755 39.472824) + (xy 62.576905 39.4462) + (xy 62.598755 39.419576) + (xy 62.638405 39.345396) + (xy 62.662822 39.264907) + (xy 62.671066 39.1812) + (xy 62.669 38.94095) + (xy 62.56225 38.8342) + (xy 61.065 38.8342) + (xy 61.065 38.8542) + (xy 61.019 38.8542) + (xy 61.019 38.8342) + (xy 59.52175 38.8342) + (xy 59.415 38.94095) + (xy 59.412934 39.1812) + (xy 56.748194 39.1812) + (xy 56.750404 39.173915) + (xy 56.7602 39.074452) + (xy 56.7602 39.074443) + (xy 56.763474 39.041201) + (xy 56.7602 39.007959) + (xy 56.7602 36.6412) + (xy 59.412934 36.6412) + (xy 59.421178 36.724907) + (xy 59.445595 36.805396) + (xy 59.485245 36.879576) + (xy 59.507095 36.9062) + (xy 59.485245 36.932824) + (xy 59.445595 37.007004) + (xy 59.421178 37.087493) + (xy 59.412934 37.1712) + (xy 59.412934 37.9112) + (xy 59.421178 37.994907) + (xy 59.445595 38.075396) + (xy 59.485245 38.149576) + (xy 59.507095 38.1762) + (xy 59.485245 38.202824) + (xy 59.445595 38.277004) + (xy 59.421178 38.357493) + (xy 59.412934 38.4412) + (xy 59.415 38.68145) + (xy 59.52175 38.7882) + (xy 61.019 38.7882) + (xy 61.019 38.7682) + (xy 61.065 38.7682) + (xy 61.065 38.7882) + (xy 62.56225 38.7882) + (xy 62.669 38.68145) + (xy 62.671066 38.4412) + (xy 62.662822 38.357493) + (xy 62.638405 38.277004) + (xy 62.598755 38.202824) + (xy 62.576905 38.1762) + (xy 62.598755 38.149576) + (xy 62.638405 38.075396) + (xy 62.662822 37.994907) + (xy 62.671066 37.9112) + (xy 62.671066 37.1712) + (xy 62.662822 37.087493) + (xy 62.638405 37.007004) + (xy 62.598755 36.932824) + (xy 62.576905 36.9062) + (xy 62.598755 36.879576) + (xy 62.638405 36.805396) + (xy 62.662822 36.724907) + (xy 62.671066 36.6412) + (xy 62.669 36.40095) + (xy 62.56225 36.2942) + (xy 61.065 36.2942) + (xy 61.065 36.3142) + (xy 61.019 36.3142) + (xy 61.019 36.2942) + (xy 59.52175 36.2942) + (xy 59.415 36.40095) + (xy 59.412934 36.6412) + (xy 56.7602 36.6412) + (xy 56.7602 35.383222) + (xy 56.772222 35.3712) + (xy 59.412934 35.3712) + (xy 59.421178 35.454907) + (xy 59.445595 35.535396) + (xy 59.485245 35.609576) + (xy 59.507095 35.6362) + (xy 59.485245 35.662824) + (xy 59.445595 35.737004) + (xy 59.421178 35.817493) + (xy 59.412934 35.9012) + (xy 59.415 36.14145) + (xy 59.52175 36.2482) + (xy 61.019 36.2482) + (xy 61.019 35.0242) + (xy 61.065 35.0242) + (xy 61.065 36.2482) + (xy 62.56225 36.2482) + (xy 62.669 36.14145) + (xy 62.671066 35.9012) + (xy 62.662822 35.817493) + (xy 62.638405 35.737004) + (xy 62.598755 35.662824) + (xy 62.576905 35.6362) + (xy 62.598755 35.609576) + (xy 62.638405 35.535396) + (xy 62.662822 35.454907) + (xy 62.671066 35.3712) + (xy 62.669 35.13095) + (xy 62.56225 35.0242) + (xy 61.065 35.0242) + (xy 61.019 35.0242) + (xy 59.52175 35.0242) + (xy 59.415 35.13095) + (xy 59.412934 35.3712) + (xy 56.772222 35.3712) + (xy 57.735222 34.4082) + (xy 59.477026 34.4082) + (xy 59.445595 34.467004) + (xy 59.421178 34.547493) + (xy 59.412934 34.6312) + (xy 59.415 34.87145) + (xy 59.52175 34.9782) + (xy 61.019 34.9782) + (xy 61.019 34.9582) + (xy 61.065 34.9582) + (xy 61.065 34.9782) + (xy 62.56225 34.9782) + (xy 62.669 34.87145) + (xy 62.671066 34.6312) + (xy 62.662822 34.547493) + (xy 62.638405 34.467004) + (xy 62.598755 34.392824) + (xy 62.576905 34.3662) + (xy 62.598755 34.339576) + (xy 62.638405 34.265396) + (xy 62.662822 34.184907) + (xy 62.671066 34.1012) + (xy 62.671066 33.3612) + (xy 62.662822 33.277493) + (xy 62.638405 33.197004) + (xy 62.598755 33.122824) + (xy 62.576905 33.0962) + (xy 62.598755 33.069576) + (xy 62.638405 32.995396) + (xy 62.662822 32.914907) + (xy 62.671066 32.8312) + (xy 62.671066 32.0912) + (xy 63.312934 32.0912) + (xy 63.312934 32.8312) + (xy 63.321178 32.914907) + (xy 63.345595 32.995396) + (xy 63.385245 33.069576) + (xy 63.407095 33.0962) + (xy 63.385245 33.122824) + (xy 63.345595 33.197004) + (xy 63.321178 33.277493) + (xy 63.312934 33.3612) + (xy 63.312934 34.1012) + (xy 63.321178 34.184907) + (xy 63.345595 34.265396) + (xy 63.385245 34.339576) + (xy 63.407095 34.3662) + (xy 63.385245 34.392824) + (xy 63.345595 34.467004) + (xy 63.321178 34.547493) + (xy 63.312934 34.6312) + (xy 63.312934 35.3712) + (xy 63.321178 35.454907) + (xy 63.345595 35.535396) + (xy 63.385245 35.609576) + (xy 63.407095 35.6362) + (xy 63.385245 35.662824) + (xy 63.345595 35.737004) + (xy 63.321178 35.817493) + (xy 63.312934 35.9012) + (xy 63.312934 36.6412) + (xy 63.321178 36.724907) + (xy 63.345595 36.805396) + (xy 63.385245 36.879576) + (xy 63.407095 36.9062) + (xy 63.385245 36.932824) + (xy 63.345595 37.007004) + (xy 63.321178 37.087493) + (xy 63.312934 37.1712) + (xy 63.312934 37.9112) + (xy 63.321178 37.994907) + (xy 63.345595 38.075396) + (xy 63.385245 38.149576) + (xy 63.407095 38.1762) + (xy 63.385245 38.202824) + (xy 63.345595 38.277004) + (xy 63.321178 38.357493) + (xy 63.312934 38.4412) + (xy 63.312934 39.1812) + (xy 63.321178 39.264907) + (xy 63.345595 39.345396) + (xy 63.385245 39.419576) + (xy 63.407095 39.4462) + (xy 63.385245 39.472824) + (xy 63.345595 39.547004) + (xy 63.321178 39.627493) + (xy 63.312934 39.7112) + (xy 63.312934 40.4512) + (xy 63.321178 40.534907) + (xy 63.345595 40.615396) + (xy 63.385245 40.689576) + (xy 63.438605 40.754595) + (xy 63.503624 40.807955) + (xy 63.577804 40.847605) + (xy 63.658293 40.872022) + (xy 63.742 40.880266) + (xy 66.142 40.880266) + (xy 66.225707 40.872022) + (xy 66.306196 40.847605) + (xy 66.380376 40.807955) + (xy 66.445395 40.754595) + (xy 66.498755 40.689576) + (xy 66.538405 40.615396) + (xy 66.562822 40.534907) + (xy 66.571066 40.4512) + (xy 66.571066 39.7112) + (xy 66.569959 39.69996) + (xy 70.7208 43.850801) + (xy 70.7208 44.202042) + (xy 70.71532 44.202582) + (xy 70.587932 44.241225) + (xy 70.470531 44.303977) + (xy 70.367628 44.388428) + (xy 70.283177 44.491331) + (xy 70.220425 44.608732) + (xy 70.181782 44.73612) + (xy 70.168734 44.868599) + (xy 70.168734 45.568601) + (xy 70.181782 45.70108) + (xy 70.220425 45.828468) + (xy 70.283177 45.945869) + (xy 70.367628 46.048772) + (xy 70.470531 46.133223) + (xy 70.587932 46.195975) + (xy 70.662516 46.2186) + (xy 70.587932 46.241225) + (xy 70.470531 46.303977) + (xy 70.367628 46.388428) + (xy 70.283177 46.491331) + (xy 70.220425 46.608732) + (xy 70.181782 46.73612) + (xy 70.168734 46.868599) + (xy 70.168734 47.568601) + (xy 70.181782 47.70108) + (xy 70.220425 47.828468) + (xy 70.283177 47.945869) + (xy 70.367628 48.048772) + (xy 70.470531 48.133223) + (xy 70.587932 48.195975) + (xy 70.71532 48.234618) + (xy 70.720801 48.235158) + (xy 70.720801 48.460259) + (xy 70.71801 48.4886) + (xy 70.729149 48.601711) + (xy 70.759866 48.702966) + (xy 70.762144 48.710476) + (xy 70.815722 48.810715) + (xy 70.836332 48.835828) + (xy 70.869763 48.876564) + (xy 70.869766 48.876567) + (xy 70.887827 48.898574) + (xy 70.909834 48.916635) + (xy 72.375733 50.382534) + (xy 71.1458 50.382534) + (xy 71.047462 50.392219) + (xy 70.952902 50.420904) + (xy 70.865756 50.467484) + (xy 70.789372 50.530172) + (xy 70.726684 50.606556) + (xy 70.680104 50.693702) + (xy 70.651419 50.788262) + (xy 70.641734 50.8866) + (xy 70.641734 51.0366) + (xy 70.651419 51.134938) + (xy 70.674675 51.2116) + (xy 70.651419 51.288262) + (xy 70.641734 51.3866) + (xy 70.641734 51.5366) + (xy 70.651419 51.634938) + (xy 70.674675 51.7116) + (xy 70.651419 51.788262) + (xy 70.645501 51.848348) + (xy 70.631181 51.834028) + (xy 70.495731 51.743523) + (xy 70.345227 51.681182) + (xy 70.185452 51.6494) + (xy 70.022548 51.6494) + (xy 69.862773 51.681182) + (xy 69.712269 51.743523) + (xy 69.576819 51.834028) + (xy 69.461628 51.949219) + (xy 69.371123 52.084669) + (xy 69.308782 52.235173) + (xy 69.277 52.394948) + (xy 69.277 52.557852) + (xy 69.308782 52.717627) + (xy 69.371123 52.868131) + (xy 69.461628 53.003581) + (xy 69.576819 53.118772) + (xy 69.712269 53.209277) + (xy 69.862773 53.271618) + (xy 70.022548 53.3034) + (xy 70.185452 53.3034) + (xy 70.345227 53.271618) + (xy 70.495731 53.209277) + (xy 70.631181 53.118772) + (xy 70.648155 53.101798) + (xy 70.651419 53.134938) + (xy 70.674675 53.2116) + (xy 70.651419 53.288262) + (xy 70.641734 53.3866) + (xy 70.641734 53.5366) + (xy 70.651419 53.634938) + (xy 70.674675 53.7116) + (xy 70.651419 53.788262) + (xy 70.641734 53.8866) + (xy 70.641734 54.0366) + (xy 70.651419 54.134938) + (xy 70.674675 54.2116) + (xy 70.651419 54.288262) + (xy 70.641734 54.3866) + (xy 70.641734 54.5366) + (xy 70.651419 54.634938) + (xy 70.674675 54.7116) + (xy 70.651419 54.788262) + (xy 70.641931 54.8846) + (xy 69.866839 54.8846) + (xy 69.830174 54.763733) + (xy 69.767422 54.646332) + (xy 69.682971 54.543429) + (xy 69.580068 54.458978) + (xy 69.462667 54.396226) + (xy 69.335279 54.357583) + (xy 69.2028 54.344535) + (xy 68.502798 54.344535) + (xy 68.370319 54.357583) + (xy 68.242931 54.396226) + (xy 68.12553 54.458978) + (xy 68.022627 54.543429) + (xy 67.938176 54.646332) + (xy 67.875424 54.763733) + (xy 67.852799 54.838317) + (xy 67.830174 54.763733) + (xy 67.767422 54.646332) + (xy 67.682971 54.543429) + (xy 67.580068 54.458978) + (xy 67.462667 54.396226) + (xy 67.4298 54.386256) + (xy 67.4298 53.400666) + (xy 68.0528 53.400666) + (xy 68.136507 53.392422) + (xy 68.216996 53.368005) + (xy 68.291176 53.328355) + (xy 68.356195 53.274995) + (xy 68.409555 53.209976) + (xy 68.449205 53.135796) + (xy 68.473622 53.055307) + (xy 68.481866 52.9716) + (xy 68.481866 51.3716) + (xy 68.473622 51.287893) + (xy 68.449205 51.207404) + (xy 68.409555 51.133224) + (xy 68.356195 51.068205) + (xy 68.291176 51.014845) + (xy 68.216996 50.975195) + (xy 68.136507 50.950778) + (xy 68.0528 50.942534) + (xy 65.6528 50.942534) + (xy 65.569093 50.950778) + (xy 65.488604 50.975195) + (xy 65.414424 51.014845) + (xy 65.349405 51.068205) + (xy 65.296045 51.133224) + (xy 65.256395 51.207404) + (xy 65.231978 51.287893) + (xy 65.223734 51.3716) + (xy 65.223734 52.9716) + (xy 65.231978 53.055307) + (xy 65.256395 53.135796) + (xy 65.296045 53.209976) + (xy 65.349405 53.274995) + (xy 65.414424 53.328355) + (xy 65.488604 53.368005) + (xy 65.569093 53.392422) + (xy 65.6528 53.400666) + (xy 66.275801 53.400666) + (xy 66.2758 54.386255) + (xy 66.242931 54.396226) + (xy 66.12553 54.458978) + (xy 66.022627 54.543429) + (xy 65.938176 54.646332) + (xy 65.875424 54.763733) + (xy 65.836781 54.891121) + (xy 65.823733 55.0236) + (xy 65.823733 55.923602) + (xy 65.836781 56.056081) + (xy 65.875424 56.183469) + (xy 65.938176 56.30087) + (xy 66.022627 56.403773) + (xy 66.12553 56.488224) + (xy 66.242931 56.550976) + (xy 66.370319 56.589619) + (xy 66.502798 56.602667) + (xy 67.2028 56.602667) + (xy 67.335279 56.589619) + (xy 67.462667 56.550976) + (xy 67.580068 56.488224) + (xy 67.682971 56.403773) + (xy 67.767422 56.30087) + (xy 67.830174 56.183469) + (xy 67.852799 56.108885) + (xy 67.875424 56.183469) + (xy 67.938176 56.30087) + (xy 68.022627 56.403773) + (xy 68.12553 56.488224) + (xy 68.242931 56.550976) + (xy 68.370319 56.589619) + (xy 68.502798 56.602667) + (xy 69.174932 56.602667) + (xy 69.157234 56.620365) + (xy 69.135227 56.638426) + (xy 69.117166 56.660433) + (xy 69.117163 56.660436) + (xy 69.105339 56.674844) + (xy 69.063122 56.726285) + (xy 69.032426 56.783714) + (xy 69.009544 56.826524) + (xy 68.976549 56.935289) + (xy 68.96541 57.0484) + (xy 68.968201 57.076741) + (xy 68.9682 59.204469) + (xy 68.96541 59.2328) + (xy 68.9682 59.261131) + (xy 68.9682 59.261135) + (xy 68.969267 59.271969) + (xy 68.976549 59.345911) + (xy 68.990342 59.391377) + (xy 69.009543 59.454675) + (xy 69.063121 59.554914) + (xy 69.135226 59.642774) + (xy 69.157238 59.660839) + (xy 73.641801 64.145402) + (xy 73.6418 73.471799) + (xy 73.305571 73.808028) + (xy 73.1035 73.519442) + (xy 73.016825 73.418406) + (xy 72.912105 73.33622) + (xy 72.793362 73.276044) + (xy 72.665162 73.24019) + (xy 72.532429 73.230035) + (xy 72.400267 73.24597) + (xy 72.326195 73.270216) + (xy 72.374314 73.208903) + (xy 72.43449 73.090161) + (xy 72.470345 72.96196) + (xy 72.480499 72.829228) + (xy 72.464564 72.697065) + (xy 72.423152 72.570551) + (xy 72.357853 72.454546) + (xy 71.956348 71.881138) + (xy 71.869673 71.780102) + (xy 71.764953 71.697916) + (xy 71.7478 71.689223) + (xy 71.7478 70.926666) + (xy 72.3708 70.926666) + (xy 72.454507 70.918422) + (xy 72.534996 70.894005) + (xy 72.609176 70.854355) + (xy 72.674195 70.800995) + (xy 72.727555 70.735976) + (xy 72.767205 70.661796) + (xy 72.791622 70.581307) + (xy 72.799866 70.4976) + (xy 72.799866 68.8976) + (xy 72.791622 68.813893) + (xy 72.767205 68.733404) + (xy 72.727555 68.659224) + (xy 72.674195 68.594205) + (xy 72.609176 68.540845) + (xy 72.534996 68.501195) + (xy 72.454507 68.476778) + (xy 72.3708 68.468534) + (xy 69.9708 68.468534) + (xy 69.887093 68.476778) + (xy 69.806604 68.501195) + (xy 69.732424 68.540845) + (xy 69.667405 68.594205) + (xy 69.614045 68.659224) + (xy 69.574395 68.733404) + (xy 69.549978 68.813893) + (xy 69.541734 68.8976) + (xy 69.541734 70.4976) + (xy 69.549978 70.581307) + (xy 69.574395 70.661796) + (xy 69.614045 70.735976) + (xy 69.667405 70.800995) + (xy 69.732424 70.854355) + (xy 69.806604 70.894005) + (xy 69.887093 70.918422) + (xy 69.9708 70.926666) + (xy 70.5938 70.926666) + (xy 70.593801 72.006218) + (xy 70.273356 72.230596) + (xy 70.17232 72.317272) + (xy 70.090134 72.421993) + (xy 70.029958 72.540735) + (xy 69.994103 72.668936) + (xy 69.983949 72.801668) + (xy 69.999884 72.933831) + (xy 70.041296 73.060345) + (xy 70.106595 73.17635) + (xy 70.5081 73.749758) + (xy 70.594775 73.850794) + (xy 70.699495 73.93298) + (xy 70.818238 73.993156) + (xy 70.946438 74.02901) + (xy 71.079171 74.039165) + (xy 71.211333 74.02323) + (xy 71.285405 73.998984) + (xy 71.237286 74.060297) + (xy 71.17711 74.179039) + (xy 71.141255 74.30724) + (xy 71.131101 74.439972) + (xy 71.147036 74.572135) + (xy 71.188448 74.698649) + (xy 71.253747 74.814654) + (xy 71.655252 75.388062) + (xy 71.741927 75.489098) + (xy 71.846647 75.571284) + (xy 71.96539 75.63146) + (xy 72.09359 75.667314) + (xy 72.226323 75.677469) + (xy 72.358485 75.661534) + (xy 72.485 75.620122) + (xy 72.601005 75.554824) + (xy 72.966241 75.299083) + (xy 72.9346 75.458148) + (xy 72.9346 75.621052) + (xy 72.966382 75.780827) + (xy 73.028723 75.931331) + (xy 73.119228 76.066781) + (xy 73.234419 76.181972) + (xy 73.369869 76.272477) + (xy 73.401528 76.285591) + (xy 70.228396 78.659459) + (xy 67.913613 78.659459) + (xy 67.892252 78.607889) + (xy 67.747028 78.390546) + (xy 67.562193 78.205711) + (xy 67.34485 78.060487) + (xy 67.103352 77.960455) + (xy 66.846978 77.909459) + (xy 66.585582 77.909459) + (xy 66.329208 77.960455) + (xy 66.08771 78.060487) + (xy 65.870367 78.205711) + (xy 65.685532 78.390546) + (xy 65.540308 78.607889) + (xy 65.440276 78.849387) + (xy 65.38928 79.105761) + (xy 65.38928 79.367157) + (xy 65.440276 79.623531) + (xy 65.540308 79.865029) + (xy 65.685532 80.082372) + (xy 65.870367 80.267207) + (xy 66.08771 80.412431) + (xy 66.329208 80.512463) + (xy 66.585582 80.563459) + (xy 66.846978 80.563459) + (xy 67.103352 80.512463) + (xy 67.244252 80.4541) + (xy 71.886593 80.4541) + (xy 71.901018 80.536966) + (xy 71.931332 80.615425) + (xy 71.97637 80.686462) + (xy 73.022994 82.02608) + (xy 73.081026 82.086966) + (xy 73.149821 82.135361) + (xy 73.226735 82.169405) + (xy 73.308813 82.187789) + (xy 73.3929 82.189807) + (xy 73.475766 82.175382) + (xy 73.554225 82.145068) + (xy 73.625262 82.10003) + (xy 74.96488 81.053406) + (xy 75.025766 80.995374) + (xy 75.074161 80.926579) + (xy 75.108205 80.849665) + (xy 75.126589 80.767587) + (xy 75.128607 80.6835) + (xy 75.114182 80.600634) + (xy 75.083868 80.522175) + (xy 75.03883 80.451138) + (xy 74.529679 79.799455) + (xy 74.601301 79.743498) + (xy 74.655196 79.954494) + (xy 74.856837 80.102847) + (xy 75.083547 80.209012) + (xy 75.326612 80.268909) + (xy 75.576692 80.280234) + (xy 75.824176 80.242554) + (xy 76.059554 80.157316) + (xy 76.108033 80.132879) + (xy 76.211361 79.941172) + (xy 75.505183 79.037304) + (xy 75.489423 79.049617) + (xy 75.461102 79.01337) + (xy 75.476863 79.001056) + (xy 74.770684 78.097189) + (xy 74.559674 78.15107) + (xy 74.524234 78.192197) + (xy 74.384585 78.399963) + (xy 74.288153 78.630979) + (xy 74.238642 78.876371) + (xy 74.237957 79.126706) + (xy 74.286122 79.372365) + (xy 74.381287 79.603906) + (xy 74.572978 79.707246) + (xy 74.501356 79.763203) + (xy 73.992206 79.11152) + (xy 73.934174 79.050634) + (xy 73.865379 79.002239) + (xy 73.788465 78.968195) + (xy 73.706387 78.949811) + (xy 73.6223 78.947793) + (xy 73.539434 78.962218) + (xy 73.460975 78.992532) + (xy 73.389938 79.03757) + (xy 72.05032 80.084194) + (xy 71.989434 80.142226) + (xy 71.941039 80.211021) + (xy 71.906995 80.287935) + (xy 71.888611 80.370013) + (xy 71.886593 80.4541) + (xy 67.244252 80.4541) + (xy 67.34485 80.412431) + (xy 67.562193 80.267207) + (xy 67.747028 80.082372) + (xy 67.892252 79.865029) + (xy 67.913613 79.813459) + (xy 70.407403 79.813459) + (xy 70.451197 79.815428) + (xy 70.492183 79.809174) + (xy 70.533453 79.805109) + (xy 70.548262 79.800617) + (xy 70.563556 79.798283) + (xy 70.602529 79.784155) + (xy 70.642217 79.772116) + (xy 70.655868 79.76482) + (xy 70.67041 79.759548) + (xy 70.705868 79.738094) + (xy 70.742456 79.718538) + (xy 70.776367 79.690708) + (xy 72.944268 78.068868) + (xy 74.806933 78.068868) + (xy 75.513111 78.972736) + (xy 75.528871 78.960423) + (xy 75.557192 78.99667) + (xy 75.541431 79.008984) + (xy 76.24761 79.912851) + (xy 76.45862 79.85897) + (xy 76.49406 79.817843) + (xy 76.633709 79.610077) + (xy 76.730141 79.379061) + (xy 76.779652 79.133669) + (xy 76.780337 78.883334) + (xy 76.732172 78.637675) + (xy 76.637007 78.406134) + (xy 76.445316 78.302794) + (xy 76.514444 78.248785) + (xy 76.518784 78.25528) + (xy 76.696655 78.433151) + (xy 76.905809 78.572903) + (xy 77.138208 78.669166) + (xy 77.384921 78.71824) + (xy 77.636469 78.71824) + (xy 77.883182 78.669166) + (xy 78.115581 78.572903) + (xy 78.324735 78.433151) + (xy 78.502606 78.25528) + (xy 78.642358 78.046126) + (xy 78.738621 77.813727) + (xy 78.787695 77.567014) + (xy 78.787695 77.315466) + (xy 78.738621 77.068753) + (xy 78.642358 76.836354) + (xy 78.596392 76.767561) + (xy 78.698202 76.869371) + (xy 78.907356 77.009123) + (xy 79.139755 77.105386) + (xy 79.386468 77.15446) + (xy 79.638016 77.15446) + (xy 79.884729 77.105386) + (xy 80.117128 77.009123) + (xy 80.326282 76.869371) + (xy 80.504153 76.6915) + (xy 80.643905 76.482346) + (xy 80.740168 76.249947) + (xy 80.789242 76.003234) + (xy 80.789242 75.751686) + (xy 80.740168 75.504973) + (xy 80.643905 75.272574) + (xy 80.504153 75.06342) + (xy 80.326282 74.885549) + (xy 80.117128 74.745797) + (xy 79.884729 74.649534) + (xy 79.638016 74.60046) + (xy 79.386468 74.60046) + (xy 79.139755 74.649534) + (xy 78.907356 74.745797) + (xy 78.698202 74.885549) + (xy 78.520331 75.06342) + (xy 78.380579 75.272574) + (xy 78.284316 75.504973) + (xy 78.235242 75.751686) + (xy 78.235242 76.003234) + (xy 78.284316 76.249947) + (xy 78.380579 76.482346) + (xy 78.426545 76.551139) + (xy 78.324735 76.449329) + (xy 78.115581 76.309577) + (xy 77.883182 76.213314) + (xy 77.636469 76.16424) + (xy 77.384921 76.16424) + (xy 77.138208 76.213314) + (xy 76.905809 76.309577) + (xy 76.696655 76.449329) + (xy 76.518784 76.6272) + (xy 76.379032 76.836354) + (xy 76.282769 77.068753) + (xy 76.233695 77.315466) + (xy 76.233695 77.567014) + (xy 76.282769 77.813727) + (xy 76.379032 78.046126) + (xy 76.488815 78.210429) + (xy 76.416993 78.266542) + (xy 76.363098 78.055546) + (xy 76.161457 77.907193) + (xy 75.934747 77.801028) + (xy 75.691682 77.741131) + (xy 75.441602 77.729806) + (xy 75.194118 77.767486) + (xy 74.95874 77.852724) + (xy 74.910261 77.877161) + (xy 74.806933 78.068868) + (xy 72.944268 78.068868) + (xy 78.881146 73.6274) + (xy 84.573783 73.6274) + (xy 84.622294 73.628789) + (xy 84.658534 73.622653) + (xy 84.695112 73.61905) + (xy 84.714443 73.613186) + (xy 84.734358 73.609814) + (xy 84.768697 73.596729) + (xy 84.803876 73.586057) + (xy 84.821698 73.576531) + (xy 84.840566 73.569341) + (xy 84.871682 73.549814) + (xy 84.904115 73.532479) + (xy 84.941664 73.501663) + (xy 95.000338 65.717564) + (xy 95.001405 65.717027) + (xy 95.045043 65.682968) + (xy 95.066741 65.666177) + (xy 95.067616 65.66535) + (xy 95.091005 65.647096) + (xy 95.10883 65.626431) + (xy 95.128675 65.60769) + (xy 95.14586 65.583499) + (xy 95.165241 65.56103) + (xy 95.178691 65.537286) + (xy 95.194499 65.515033) + (xy 95.206638 65.487946) + (xy 95.221259 65.462134) + (xy 95.229816 65.436229) + (xy 95.240982 65.411313) + (xy 95.247604 65.382376) + (xy 95.256907 65.354211) + (xy 95.260246 65.32713) + (xy 95.266336 65.300518) + (xy 95.267185 65.270854) + (xy 95.267332 65.269665) + (xy 95.268002 65.242348) + (xy 95.269589 65.186906) + (xy 95.269389 65.185727) + (xy 95.295958 64.101751) + (xy 95.829753 63.653844) + (xy 95.888577 63.593723) + (xy 95.934541 63.523281) + (xy 95.96588 63.445225) + (xy 95.981388 63.362556) + (xy 95.980471 63.278449) + (xy 95.963163 63.196137) + (xy 95.930129 63.118784) + (xy 95.882639 63.049362) + (xy 94.87989 61.854332) + (xy 94.819768 61.795508) + (xy 94.749326 61.749544) + (xy 94.671271 61.718205) + (xy 94.588601 61.702697) + (xy 94.504495 61.703614) + (xy 94.422183 61.720923) + (xy 94.34483 61.753956) + (xy 94.275408 61.801446) + (xy 93.662573 62.315676) + (xy 93.603749 62.375797) + (xy 93.557785 62.446239) + (xy 93.526446 62.524295) + (xy 93.510938 62.606964) + (xy 93.511855 62.691071) + (xy 93.529163 62.773383) + (xy 93.562197 62.850736) + (xy 93.609687 62.920158) + (xy 94.154655 63.569625) + (xy 94.121096 64.93879) + (xy 84.384814 72.4734) + (xy 78.702137 72.4734) + (xy 78.658343 72.471431) + (xy 78.617355 72.477685) + (xy 78.576088 72.48175) + (xy 78.56128 72.486242) + (xy 78.545984 72.488576) + (xy 78.507006 72.502706) + (xy 78.467324 72.514743) + (xy 78.453675 72.522038) + (xy 78.43913 72.527311) + (xy 78.403665 72.548769) + (xy 78.367085 72.568321) + (xy 78.333184 72.596143) + (xy 76.421352 74.026414) + (xy 76.4198 74.016044) + (xy 76.4198 69.512557) + (xy 76.475677 69.428931) + (xy 76.538018 69.278427) + (xy 76.5698 69.118652) + (xy 76.5698 68.955748) + (xy 76.538018 68.795973) + (xy 76.475677 68.645469) + (xy 76.385172 68.510019) + (xy 76.269981 68.394828) + (xy 76.134531 68.304323) + (xy 75.984027 68.241982) + (xy 75.824252 68.2102) + (xy 75.661348 68.2102) + (xy 75.501573 68.241982) + (xy 75.351069 68.304323) + (xy 75.215619 68.394828) + (xy 75.100428 68.510019) + (xy 75.009923 68.645469) + (xy 74.947582 68.795973) + (xy 74.9158 68.955748) + (xy 74.9158 69.118652) + (xy 74.947582 69.278427) + (xy 75.009923 69.428931) + (xy 75.0658 69.512557) + (xy 75.065801 73.726156) + (xy 74.732287 73.974154) + (xy 74.754457 73.932676) + (xy 74.773803 73.8689) + (xy 74.787451 73.823912) + (xy 74.793574 73.761736) + (xy 74.7958 73.739136) + (xy 74.7958 73.739131) + (xy 74.79859 73.7108) + (xy 74.7958 73.682469) + (xy 74.7958 63.934739) + (xy 74.798591 63.9064) + (xy 74.787451 63.793288) + (xy 74.754457 63.684523) + (xy 74.733216 63.644785) + (xy 74.700879 63.584285) + (xy 74.628774 63.496426) + (xy 74.606762 63.478361) + (xy 70.1222 58.993799) + (xy 70.1222 58.210182) + (xy 70.218373 58.250018) + (xy 70.378148 58.2818) + (xy 70.541052 58.2818) + (xy 70.660593 58.258021) + (xy 70.651419 58.288262) + (xy 70.641734 58.3866) + (xy 70.641734 58.5366) + (xy 70.651419 58.634938) + (xy 70.680104 58.729498) + (xy 70.726684 58.816644) + (xy 70.789372 58.893028) + (xy 70.865756 58.955716) + (xy 70.952902 59.002296) + (xy 71.047462 59.030981) + (xy 71.1458 59.040666) + (xy 72.5458 59.040666) + (xy 72.644138 59.030981) + (xy 72.738698 59.002296) + (xy 72.825844 58.955716) + (xy 72.902228 58.893028) + (xy 72.964916 58.816644) + (xy 73.011496 58.729498) + (xy 73.040181 58.634938) + (xy 73.049866 58.5366) + (xy 73.049866 58.503448) + (xy 73.070276 58.497257) + (xy 73.170515 58.443679) + (xy 73.258374 58.371574) + (xy 73.276439 58.349562) + (xy 73.344201 58.2818) + (xy 73.436652 58.2818) + (xy 73.596427 58.250018) + (xy 73.746931 58.187677) + (xy 73.882381 58.097172) + (xy 73.997572 57.981981) + (xy 74.088077 57.846531) + (xy 74.150418 57.696027) + (xy 74.1822 57.536252) + (xy 74.1822 57.373348) + (xy 74.150418 57.213573) + (xy 74.088077 57.063069) + (xy 73.997572 56.927619) + (xy 73.882381 56.812428) + (xy 73.746931 56.721923) + (xy 73.596427 56.659582) + (xy 73.436652 56.6278) + (xy 73.273748 56.6278) + (xy 73.113973 56.659582) + (xy 73.021026 56.698082) + (xy 73.040181 56.634938) + (xy 73.049866 56.5366) + (xy 73.049866 56.3866) + (xy 73.040181 56.288262) + (xy 73.016925 56.2116) + (xy 73.040181 56.134938) + (xy 73.049866 56.0366) + (xy 73.049866 55.8866) + (xy 73.040181 55.788262) + (xy 73.016925 55.7116) + (xy 73.040181 55.634938) + (xy 73.049866 55.5366) + (xy 73.049866 55.3866) + (xy 73.040181 55.288262) + (xy 73.016925 55.2116) + (xy 73.040181 55.134938) + (xy 73.049866 55.0366) + (xy 73.049866 54.8866) + (xy 73.040181 54.788262) + (xy 73.016925 54.7116) + (xy 73.040181 54.634938) + (xy 73.049866 54.5366) + (xy 73.049866 54.3866) + (xy 73.040181 54.288262) + (xy 73.016925 54.2116) + (xy 73.040181 54.134938) + (xy 73.049866 54.0366) + (xy 73.049866 53.8866) + (xy 73.040181 53.788262) + (xy 73.016925 53.7116) + (xy 73.040181 53.634938) + (xy 73.049866 53.5366) + (xy 73.049866 53.3866) + (xy 73.040181 53.288262) + (xy 73.016925 53.2116) + (xy 73.040181 53.134938) + (xy 73.049866 53.0366) + (xy 73.049866 52.8866) + (xy 73.040181 52.788262) + (xy 73.016925 52.7116) + (xy 73.040181 52.634938) + (xy 73.049866 52.5366) + (xy 73.049866 52.3866) + (xy 73.040181 52.288262) + (xy 73.016925 52.2116) + (xy 73.040181 52.134938) + (xy 73.049866 52.0366) + (xy 73.049866 51.8866) + (xy 73.040181 51.788262) + (xy 73.016925 51.7116) + (xy 73.040181 51.634938) + (xy 73.049866 51.5366) + (xy 73.049866 51.3866) + (xy 73.040181 51.288262) + (xy 73.016925 51.2116) + (xy 73.040181 51.134938) + (xy 73.048067 51.054868) + (xy 78.6938 56.700601) + (xy 78.693801 59.182731) + (xy 78.597462 59.192219) + (xy 78.5208 59.215475) + (xy 78.444138 59.192219) + (xy 78.3458 59.182534) + (xy 78.1958 59.182534) + (xy 78.097462 59.192219) + (xy 78.053359 59.205598) + (xy 78.004507 59.190778) + (xy 77.9208 59.182534) + (xy 77.90055 59.1846) + (xy 77.841281 59.243869) + (xy 77.839451 59.225289) + (xy 77.817905 59.154263) + (xy 77.806457 59.116524) + (xy 77.752879 59.016285) + (xy 77.680774 58.928426) + (xy 77.658759 58.910359) + (xy 77.613237 58.864836) + (xy 77.595174 58.842826) + (xy 77.507315 58.770721) + (xy 77.407076 58.717143) + (xy 77.332933 58.694652) + (xy 77.298311 58.684149) + (xy 77.242573 58.67866) + (xy 77.213536 58.6758) + (xy 77.213531 58.6758) + (xy 77.1852 58.67301) + (xy 77.156869 58.6758) + (xy 76.756331 58.6758) + (xy 76.728 58.67301) + (xy 76.699669 58.6758) + (xy 76.5698 58.6758) + (xy 76.5698 58.643348) + (xy 76.538018 58.483573) + (xy 76.475677 58.333069) + (xy 76.385172 58.197619) + (xy 76.269981 58.082428) + (xy 76.134531 57.991923) + (xy 75.984027 57.929582) + (xy 75.824252 57.8978) + (xy 75.661348 57.8978) + (xy 75.501573 57.929582) + (xy 75.351069 57.991923) + (xy 75.215619 58.082428) + (xy 75.100428 58.197619) + (xy 75.009923 58.333069) + (xy 74.947582 58.483573) + (xy 74.9158 58.643348) + (xy 74.9158 58.806252) + (xy 74.947582 58.966027) + (xy 75.009923 59.116531) + (xy 75.066726 59.201543) + (xy 75.0208 59.215475) + (xy 74.944138 59.192219) + (xy 74.8458 59.182534) + (xy 74.6958 59.182534) + (xy 74.597462 59.192219) + (xy 74.5208 59.215475) + (xy 74.444138 59.192219) + (xy 74.3458 59.182534) + (xy 74.1958 59.182534) + (xy 74.097462 59.192219) + (xy 74.0208 59.215475) + (xy 73.944138 59.192219) + (xy 73.8458 59.182534) + (xy 73.6958 59.182534) + (xy 73.597462 59.192219) + (xy 73.502902 59.220904) + (xy 73.415756 59.267484) + (xy 73.339372 59.330172) + (xy 73.276684 59.406556) + (xy 73.230104 59.493702) + (xy 73.201419 59.588262) + (xy 73.191734 59.6866) + (xy 73.191734 61.0866) + (xy 73.201419 61.184938) + (xy 73.230104 61.279498) + (xy 73.276684 61.366644) + (xy 73.339372 61.443028) + (xy 73.415756 61.505716) + (xy 73.502902 61.552296) + (xy 73.597462 61.580981) + (xy 73.6958 61.590666) + (xy 73.8458 61.590666) + (xy 73.944138 61.580981) + (xy 74.0208 61.557725) + (xy 74.097462 61.580981) + (xy 74.1958 61.590666) + (xy 74.3458 61.590666) + (xy 74.444138 61.580981) + (xy 74.5208 61.557725) + (xy 74.597462 61.580981) + (xy 74.6958 61.590666) + (xy 74.8458 61.590666) + (xy 74.944138 61.580981) + (xy 75.0208 61.557725) + (xy 75.097462 61.580981) + (xy 75.1958 61.590666) + (xy 75.3458 61.590666) + (xy 75.444138 61.580981) + (xy 75.5208 61.557725) + (xy 75.597462 61.580981) + (xy 75.6958 61.590666) + (xy 75.8458 61.590666) + (xy 75.944138 61.580981) + (xy 76.0208 61.557725) + (xy 76.097462 61.580981) + (xy 76.1958 61.590666) + (xy 76.3458 61.590666) + (xy 76.444138 61.580981) + (xy 76.5208 61.557725) + (xy 76.597462 61.580981) + (xy 76.6958 61.590666) + (xy 76.8458 61.590666) + (xy 76.944138 61.580981) + (xy 77.0208 61.557725) + (xy 77.097462 61.580981) + (xy 77.1958 61.590666) + (xy 77.3458 61.590666) + (xy 77.444138 61.580981) + (xy 77.488241 61.567602) + (xy 77.537093 61.582422) + (xy 77.6208 61.590666) + (xy 77.64105 61.5886) + (xy 77.6938 61.53585) + (xy 77.693801 63.358059) + (xy 77.69101 63.3864) + (xy 77.702149 63.499511) + (xy 77.730729 63.593723) + (xy 77.735144 63.608276) + (xy 77.788722 63.708515) + (xy 77.81068 63.73527) + (xy 77.842763 63.774364) + (xy 77.842766 63.774367) + (xy 77.860827 63.796374) + (xy 77.882833 63.814434) + (xy 78.863798 64.7954) + (xy 78.7908 64.7954) + (xy 78.76419 64.798219) + (xy 78.05299 64.950619) + (xy 78.03363 64.956412) + (xy 78.011417 64.967655) + (xy 77.452617 65.323255) + (xy 77.426828 65.344971) + (xy 76.918828 65.903771) + (xy 76.909658 65.915101) + (xy 76.897183 65.936647) + (xy 76.643183 66.495447) + (xy 76.633277 66.528689) + (xy 76.531677 67.189089) + (xy 76.530977 67.222425) + (xy 76.581777 67.679625) + (xy 76.587517 67.705761) + (xy 76.790717 68.315361) + (xy 76.796686 68.330115) + (xy 76.8096 68.3514) + (xy 77.2668 68.961) + (xy 77.29043 68.985048) + (xy 77.74763 69.340648) + (xy 77.765288 69.352165) + (xy 77.788251 69.361784) + (xy 78.359 69.537399) + (xy 78.359 70.4596) + (xy 78.361272 70.483517) + (xy 78.368335 70.50739) + (xy 78.379919 70.529428) + (xy 78.39558 70.548781) + (xy 78.414716 70.564708) + (xy 78.436591 70.576595) + (xy 78.460365 70.583986) + (xy 78.485124 70.586597) + (xy 85.851124 70.637397) + (xy 85.876776 70.63496) + (xy 85.900601 70.627733) + (xy 85.922557 70.615997) + (xy 85.941803 70.600203) + (xy 85.957597 70.580957) + (xy 85.969333 70.559001) + (xy 85.97656 70.535176) + (xy 85.979 70.5104) + (xy 85.979 69.581623) + (xy 86.55799 69.358935) + (xy 86.577855 69.349233) + (xy 86.597829 69.334372) + (xy 87.156629 68.826372) + (xy 87.175242 68.80523) + (xy 87.530842 68.29723) + (xy 87.547283 68.264561) + (xy 87.750483 67.654961) + (xy 87.75456 67.639576) + (xy 87.757 67.6148) + (xy 87.757 66.9544) + (xy 87.752114 66.91951) + (xy 87.548914 66.20831) + (xy 87.533945 66.175017) + (xy 87.178345 65.616217) + (xy 87.156159 65.590002) + (xy 86.648159 65.132802) + (xy 86.633978 65.121751) + (xy 86.612046 65.109969) + (xy 86.002446 64.855969) + (xy 85.989552 64.851395) + (xy 85.965098 64.846722) + (xy 85.406298 64.795922) + (xy 85.3948 64.7954) + (xy 85.219647 64.7954) + (xy 85.219647 64.619019) + (xy 85.252514 64.609049) + (xy 85.369915 64.546297) + (xy 85.472818 64.461846) + (xy 85.557269 64.358943) + (xy 85.620021 64.241542) + (xy 85.658664 64.114154) + (xy 85.671712 63.981675) + (xy 85.671712 63.081673) + (xy 85.658664 62.949194) + (xy 85.620021 62.821806) + (xy 85.557269 62.704405) + (xy 85.472818 62.601502) + (xy 85.369915 62.517051) + (xy 85.252514 62.454299) + (xy 85.244943 62.452002) + (xy 85.342407 62.399908) + (xy 85.430266 62.327803) + (xy 85.448331 62.305791) + (xy 85.596054 62.158068) + (xy 91.732778 62.158068) + (xy 92.149168 62.657516) + (xy 92.209289 62.71634) + (xy 92.279731 62.762303) + (xy 92.357787 62.793642) + (xy 92.440456 62.80915) + (xy 92.524563 62.808233) + (xy 92.606874 62.790925) + (xy 92.684227 62.757892) + (xy 92.75365 62.710401) + (xy 92.959345 62.535105) + (xy 92.972503 62.384713) + (xy 92.28006 61.559491) + (xy 91.745936 62.007675) + (xy 91.732778 62.158068) + (xy 85.596054 62.158068) + (xy 85.847314 61.906808) + (xy 85.908055 61.946443) + (xy 86.031591 61.996041) + (xy 86.162429 62.020586) + (xy 86.295541 62.019134) + (xy 86.425812 61.991741) + (xy 86.548236 61.939459) + (xy 86.658108 61.864299) + (xy 87.175188 61.430417) + (xy 87.268286 61.335265) + (xy 87.341032 61.22378) + (xy 87.370937 61.149293) + (xy 91.04767 61.149293) + (xy 91.048588 61.233399) + (xy 91.065896 61.315711) + (xy 91.098929 61.393064) + (xy 91.146419 61.462487) + (xy 91.565975 61.959279) + (xy 91.716367 61.972437) + (xy 92.243734 61.529923) + (xy 92.315298 61.529923) + (xy 93.007741 62.355144) + (xy 93.158134 62.368302) + (xy 93.366485 62.196171) + (xy 93.42531 62.13605) + (xy 93.471273 62.065608) + (xy 93.502611 61.987553) + (xy 93.51812 61.904883) + (xy 93.517202 61.820777) + (xy 93.499894 61.738465) + (xy 93.466861 61.661112) + (xy 93.419371 61.591689) + (xy 92.999815 61.094897) + (xy 92.849423 61.081739) + (xy 92.315298 61.529923) + (xy 92.243734 61.529923) + (xy 92.250492 61.524253) + (xy 91.558049 60.699032) + (xy 91.407656 60.685874) + (xy 91.199305 60.858005) + (xy 91.14048 60.918126) + (xy 91.094517 60.988568) + (xy 91.063179 61.066623) + (xy 91.04767 61.149293) + (xy 87.370937 61.149293) + (xy 87.39063 61.100244) + (xy 87.415175 60.969407) + (xy 87.413723 60.836294) + (xy 87.38633 60.706023) + (xy 87.334048 60.583599) + (xy 87.258888 60.473727) + (xy 87.01327 60.18101) + (xy 87.070621 60.18101) + (xy 87.451657 60.638326) + (xy 87.511778 60.69715) + (xy 87.58222 60.743114) + (xy 87.660276 60.774452) + (xy 87.742945 60.789961) + (xy 87.827052 60.789043) + (xy 87.909364 60.771735) + (xy 87.986717 60.738702) + (xy 88.056139 60.691212) + (xy 88.081822 60.669463) + (xy 91.593287 60.669463) + (xy 92.28573 61.494685) + (xy 92.819854 61.046501) + (xy 92.833012 60.896108) + (xy 92.416622 60.39666) + (xy 92.356501 60.337836) + (xy 92.286059 60.291873) + (xy 92.208003 60.260534) + (xy 92.125334 60.245026) + (xy 92.041227 60.245943) + (xy 91.958916 60.263251) + (xy 91.881563 60.296284) + (xy 91.81214 60.343775) + (xy 91.606445 60.519071) + (xy 91.593287 60.669463) + (xy 88.081822 60.669463) + (xy 88.405468 60.395393) + (xy 88.418626 60.245) + (xy 87.761536 59.461911) + (xy 87.083778 60.030617) + (xy 87.070621 60.18101) + (xy 87.01327 60.18101) + (xy 86.64824 59.745985) + (xy 86.553088 59.652887) + (xy 86.441603 59.580141) + (xy 86.318067 59.530543) + (xy 86.187229 59.505998) + (xy 86.054117 59.50745) + (xy 85.923846 59.534843) + (xy 85.801422 59.587125) + (xy 85.69155 59.662285) + (xy 85.17447 60.096167) + (xy 85.081372 60.191319) + (xy 85.008626 60.302804) + (xy 84.959028 60.42634) + (xy 84.934483 60.557177) + (xy 84.935935 60.69029) + (xy 84.963328 60.820561) + (xy 85.01561 60.942985) + (xy 85.082034 61.040086) + (xy 84.781291 61.340829) + (xy 81.778714 61.340829) + (xy 81.811496 61.279498) + (xy 81.840181 61.184938) + (xy 81.849866 61.0866) + (xy 81.849866 59.6866) + (xy 81.840181 59.588262) + (xy 81.811496 59.493702) + (xy 81.764916 59.406556) + (xy 81.702228 59.330172) + (xy 81.625844 59.267484) + (xy 81.538698 59.220904) + (xy 81.517153 59.214368) + (xy 86.420866 59.214368) + (xy 86.421784 59.298475) + (xy 86.439092 59.380786) + (xy 86.472125 59.458139) + (xy 86.519615 59.527562) + (xy 86.903817 59.982222) + (xy 87.05421 59.995379) + (xy 87.72521 59.432343) + (xy 87.796774 59.432343) + (xy 88.453864 60.215432) + (xy 88.604257 60.22859) + (xy 88.956241 59.935936) + (xy 89.015066 59.875815) + (xy 89.061029 59.805373) + (xy 89.092367 59.727318) + (xy 89.107876 59.644648) + (xy 89.106958 59.560541) + (xy 89.08965 59.47823) + (xy 89.056617 59.400877) + (xy 89.009127 59.331454) + (xy 88.624925 58.876794) + (xy 88.474532 58.863637) + (xy 87.796774 59.432343) + (xy 87.72521 59.432343) + (xy 87.731968 59.426673) + (xy 87.074878 58.643584) + (xy 86.924485 58.630426) + (xy 86.572501 58.92308) + (xy 86.513676 58.983201) + (xy 86.467713 59.053643) + (xy 86.436375 59.131698) + (xy 86.420866 59.214368) + (xy 81.517153 59.214368) + (xy 81.444138 59.192219) + (xy 81.3458 59.182534) + (xy 81.1958 59.182534) + (xy 81.097462 59.192219) + (xy 81.0208 59.215475) + (xy 80.944138 59.192219) + (xy 80.8458 59.182534) + (xy 80.6958 59.182534) + (xy 80.597462 59.192219) + (xy 80.5208 59.215475) + (xy 80.444138 59.192219) + (xy 80.3458 59.182534) + (xy 80.1958 59.182534) + (xy 80.097462 59.192219) + (xy 80.0208 59.215475) + (xy 79.944138 59.192219) + (xy 79.8478 59.182731) + (xy 79.8478 56.489931) + (xy 79.85059 56.4616) + (xy 79.847364 56.428833) + (xy 79.844471 56.399463) + (xy 79.839451 56.348488) + (xy 79.819394 56.282371) + (xy 79.806457 56.239724) + (xy 79.752879 56.139485) + (xy 79.680774 56.051626) + (xy 79.658763 56.033562) + (xy 74.511801 50.8866) + (xy 81.991734 50.8866) + (xy 81.991734 51.0366) + (xy 82.001419 51.134938) + (xy 82.024675 51.2116) + (xy 82.001419 51.288262) + (xy 81.991734 51.3866) + (xy 81.991734 51.5366) + (xy 82.001419 51.634938) + (xy 82.024675 51.7116) + (xy 82.001419 51.788262) + (xy 81.991734 51.8866) + (xy 81.991734 52.0366) + (xy 82.001419 52.134938) + (xy 82.024675 52.2116) + (xy 82.001419 52.288262) + (xy 81.991734 52.3866) + (xy 81.991734 52.5366) + (xy 82.001419 52.634938) + (xy 82.024675 52.7116) + (xy 82.001419 52.788262) + (xy 81.991734 52.8866) + (xy 81.991734 53.0366) + (xy 82.001419 53.134938) + (xy 82.024675 53.2116) + (xy 82.001419 53.288262) + (xy 81.991734 53.3866) + (xy 81.991734 53.5366) + (xy 82.001419 53.634938) + (xy 82.024675 53.7116) + (xy 82.001419 53.788262) + (xy 81.991734 53.8866) + (xy 81.991734 54.0366) + (xy 82.001419 54.134938) + (xy 82.024675 54.2116) + (xy 82.001419 54.288262) + (xy 81.991734 54.3866) + (xy 81.991734 54.5366) + (xy 82.001419 54.634938) + (xy 82.024675 54.7116) + (xy 82.001419 54.788262) + (xy 81.991734 54.8866) + (xy 81.991734 55.0366) + (xy 82.001419 55.134938) + (xy 82.024675 55.2116) + (xy 82.001419 55.288262) + (xy 81.991734 55.3866) + (xy 81.991734 55.5366) + (xy 82.001419 55.634938) + (xy 82.024675 55.7116) + (xy 82.001419 55.788262) + (xy 81.991734 55.8866) + (xy 81.991734 56.0366) + (xy 82.001419 56.134938) + (xy 82.024675 56.2116) + (xy 82.001419 56.288262) + (xy 81.991734 56.3866) + (xy 81.991734 56.5366) + (xy 82.001419 56.634938) + (xy 82.024675 56.7116) + (xy 82.001419 56.788262) + (xy 81.991734 56.8866) + (xy 81.991734 57.0366) + (xy 82.001419 57.134938) + (xy 82.024675 57.2116) + (xy 82.001419 57.288262) + (xy 81.991734 57.3866) + (xy 81.991734 57.5366) + (xy 82.001419 57.634938) + (xy 82.024675 57.7116) + (xy 82.001419 57.788262) + (xy 81.991734 57.8866) + (xy 81.991734 58.0366) + (xy 82.001419 58.134938) + (xy 82.024675 58.2116) + (xy 82.001419 58.288262) + (xy 81.991734 58.3866) + (xy 81.991734 58.5366) + (xy 82.001419 58.634938) + (xy 82.030104 58.729498) + (xy 82.076684 58.816644) + (xy 82.139372 58.893028) + (xy 82.215756 58.955716) + (xy 82.302902 59.002296) + (xy 82.397462 59.030981) + (xy 82.4958 59.040666) + (xy 83.8958 59.040666) + (xy 83.994138 59.030981) + (xy 84.088698 59.002296) + (xy 84.175844 58.955716) + (xy 84.252228 58.893028) + (xy 84.314916 58.816644) + (xy 84.361496 58.729498) + (xy 84.390181 58.634938) + (xy 84.392241 58.614016) + (xy 87.110116 58.614016) + (xy 87.767206 59.397105) + (xy 88.444964 58.828399) + (xy 88.458121 58.678006) + (xy 88.077085 58.22069) + (xy 88.016964 58.161866) + (xy 87.946522 58.115902) + (xy 87.868466 58.084564) + (xy 87.785797 58.069055) + (xy 87.70169 58.069973) + (xy 87.619378 58.087281) + (xy 87.542025 58.120314) + (xy 87.472603 58.167804) + (xy 87.123274 58.463623) + (xy 87.110116 58.614016) + (xy 84.392241 58.614016) + (xy 84.399866 58.5366) + (xy 84.399866 58.3866) + (xy 84.390181 58.288262) + (xy 84.366925 58.2116) + (xy 84.390181 58.134938) + (xy 84.399866 58.0366) + (xy 84.399866 57.8866) + (xy 84.390181 57.788262) + (xy 84.366925 57.7116) + (xy 84.390181 57.634938) + (xy 84.399866 57.5366) + (xy 84.399866 57.3866) + (xy 84.390181 57.288262) + (xy 84.366925 57.2116) + (xy 84.390181 57.134938) + (xy 84.399866 57.0366) + (xy 84.399866 56.8866) + (xy 84.390181 56.788262) + (xy 84.366925 56.7116) + (xy 84.390181 56.634938) + (xy 84.399866 56.5366) + (xy 84.399866 56.3866) + (xy 84.390181 56.288262) + (xy 84.366925 56.2116) + (xy 84.390181 56.134938) + (xy 84.399866 56.0366) + (xy 84.399866 55.8866) + (xy 84.390181 55.788262) + (xy 84.366925 55.7116) + (xy 84.390181 55.634938) + (xy 84.399669 55.5386) + (xy 88.780255 55.5386) + (xy 89.497896 56.256241) + (xy 89.472777 56.294738) + (xy 89.423179 56.418274) + (xy 89.398634 56.549111) + (xy 89.400086 56.682223) + (xy 89.427479 56.812494) + (xy 89.479761 56.934918) + (xy 89.554921 57.04479) + (xy 90.004874 57.581022) + (xy 90.100025 57.674119) + (xy 90.211511 57.746865) + (xy 90.335046 57.796463) + (xy 90.465884 57.821008) + (xy 90.598996 57.819556) + (xy 90.729267 57.792163) + (xy 90.800944 57.761553) + (xy 90.758353 57.826826) + (xy 90.708755 57.950362) + (xy 90.68421 58.081199) + (xy 90.685662 58.214311) + (xy 90.713055 58.344582) + (xy 90.765337 58.467006) + (xy 90.840497 58.576878) + (xy 91.29045 59.11311) + (xy 91.385601 59.206207) + (xy 91.497087 59.278953) + (xy 91.620622 59.328551) + (xy 91.75146 59.353096) + (xy 91.884572 59.351644) + (xy 92.014843 59.324251) + (xy 92.135472 59.272735) + (xy 92.548167 59.77184) + (xy 92.518662 59.845327) + (xy 92.503154 59.927996) + (xy 92.504071 60.012103) + (xy 92.521379 60.094415) + (xy 92.554413 60.171768) + (xy 92.601903 60.24119) + (xy 93.604652 61.43622) + (xy 93.664774 61.495044) + (xy 93.735216 61.541008) + (xy 93.813271 61.572347) + (xy 93.895941 61.587855) + (xy 93.980047 61.586938) + (xy 94.062359 61.569629) + (xy 94.139712 61.536596) + (xy 94.209134 61.489106) + (xy 94.821969 60.974876) + (xy 94.880793 60.914755) + (xy 94.926757 60.844313) + (xy 94.958096 60.766257) + (xy 94.973604 60.683588) + (xy 94.972687 60.599481) + (xy 94.955379 60.517169) + (xy 94.922345 60.439816) + (xy 94.874855 60.370394) + (xy 93.872106 59.175364) + (xy 93.811984 59.11654) + (xy 93.741542 59.070576) + (xy 93.663487 59.039237) + (xy 93.580817 59.023729) + (xy 93.496711 59.024646) + (xy 93.437957 59.037001) + (xy 93.020675 58.532348) + (xy 93.029678 58.523147) + (xy 93.102423 58.411662) + (xy 93.152021 58.288126) + (xy 93.176566 58.157289) + (xy 93.175114 58.024177) + (xy 93.147721 57.893906) + (xy 93.095439 57.771482) + (xy 93.020279 57.66161) + (xy 92.570326 57.125378) + (xy 92.475175 57.032281) + (xy 92.363689 56.959535) + (xy 92.240154 56.909937) + (xy 92.109316 56.885392) + (xy 91.976204 56.886844) + (xy 91.845933 56.914237) + (xy 91.774256 56.944847) + (xy 91.816847 56.879574) + (xy 91.866445 56.756038) + (xy 91.89099 56.625201) + (xy 91.889538 56.492089) + (xy 91.862145 56.361818) + (xy 91.809863 56.239394) + (xy 91.734703 56.129522) + (xy 91.28475 55.59329) + (xy 91.189599 55.500193) + (xy 91.078113 55.427447) + (xy 90.954578 55.377849) + (xy 90.82374 55.353304) + (xy 90.690628 55.354756) + (xy 90.560357 55.382149) + (xy 90.437933 55.434431) + (xy 90.360831 55.487174) + (xy 89.855533 54.981876) + (xy 93.184355 54.981876) + (xy 95.5874 57.384921) + (xy 95.605465 57.406933) + (xy 95.693324 57.479038) + (xy 95.793563 57.532616) + (xy 95.838221 57.546163) + (xy 95.902327 57.56561) + (xy 95.960325 57.571322) + (xy 95.987103 57.573959) + (xy 95.987108 57.573959) + (xy 96.015439 57.576749) + (xy 96.04377 57.573959) + (xy 98.347945 57.573959) + (xy 98.359496 57.601845) + (xy 98.499248 57.810999) + (xy 98.677119 57.98887) + (xy 98.886273 58.128622) + (xy 99.118672 58.224885) + (xy 99.365385 58.273959) + (xy 99.616933 58.273959) + (xy 99.863646 58.224885) + (xy 100.096045 58.128622) + (xy 100.305199 57.98887) + (xy 100.48307 57.810999) + (xy 100.622822 57.601845) + (xy 100.719085 57.369446) + (xy 100.768159 57.122733) + (xy 100.768159 56.871185) + (xy 100.719085 56.624472) + (xy 100.622822 56.392073) + (xy 100.48307 56.182919) + (xy 100.305199 56.005048) + (xy 100.096045 55.865296) + (xy 99.863646 55.769033) + (xy 99.616933 55.719959) + (xy 99.365385 55.719959) + (xy 99.118672 55.769033) + (xy 98.886273 55.865296) + (xy 98.706951 55.985115) + (xy 98.82677 55.805793) + (xy 98.923033 55.573394) + (xy 98.972107 55.326681) + (xy 98.972107 55.075133) + (xy 98.923033 54.82842) + (xy 98.82677 54.596021) + (xy 98.687018 54.386867) + (xy 98.509147 54.208996) + (xy 98.299993 54.069244) + (xy 98.067594 53.972981) + (xy 97.820881 53.923907) + (xy 97.569333 53.923907) + (xy 97.32262 53.972981) + (xy 97.090221 54.069244) + (xy 96.910902 54.189061) + (xy 97.030719 54.009742) + (xy 97.126982 53.777343) + (xy 97.176056 53.53063) + (xy 97.176056 53.279082) + (xy 97.126982 53.032369) + (xy 97.030719 52.79997) + (xy 96.890967 52.590816) + (xy 96.713096 52.412945) + (xy 96.503942 52.273193) + (xy 96.271543 52.17693) + (xy 96.02483 52.127856) + (xy 95.773282 52.127856) + (xy 95.526569 52.17693) + (xy 95.29417 52.273193) + (xy 95.114851 52.39301) + (xy 95.234668 52.213691) + (xy 95.330931 51.981292) + (xy 95.380005 51.734579) + (xy 95.380005 51.483031) + (xy 95.330931 51.236318) + (xy 95.234668 51.003919) + (xy 95.094916 50.794765) + (xy 94.917045 50.616894) + (xy 94.707891 50.477142) + (xy 94.475492 50.380879) + (xy 94.228779 50.331805) + (xy 93.977231 50.331805) + (xy 93.730518 50.380879) + (xy 93.498119 50.477142) + (xy 93.3188 50.596959) + (xy 93.438617 50.41764) + (xy 93.53488 50.185241) + (xy 93.583954 49.938528) + (xy 93.583954 49.68698) + (xy 93.53488 49.440267) + (xy 93.438617 49.207868) + (xy 93.298865 48.998714) + (xy 93.120994 48.820843) + (xy 92.91184 48.681091) + (xy 92.679441 48.584828) + (xy 92.432728 48.535754) + (xy 92.18118 48.535754) + (xy 91.934467 48.584828) + (xy 91.702068 48.681091) + (xy 91.522746 48.80091) + (xy 91.642565 48.621588) + (xy 91.738828 48.389189) + (xy 91.787902 48.142476) + (xy 91.787902 47.890928) + (xy 91.738828 47.644215) + (xy 91.642565 47.411816) + (xy 91.502813 47.202662) + (xy 91.324942 47.024791) + (xy 91.115788 46.885039) + (xy 90.883389 46.788776) + (xy 90.636676 46.739702) + (xy 90.385128 46.739702) + (xy 90.138415 46.788776) + (xy 89.906016 46.885039) + (xy 89.696862 47.024791) + (xy 89.624191 47.097462) + (xy 89.558463 47.031733) + (xy 89.761318 46.952525) + (xy 89.883992 46.734307) + (xy 89.961736 46.496349) + (xy 89.991564 46.247796) + (xy 89.972328 45.9982) + (xy 89.904768 45.757153) + (xy 89.79148 45.533917) + (xy 89.761317 45.488778) + (xy 89.558446 45.409583) + (xy 88.747378 46.220651) + (xy 88.76152 46.234793) + (xy 88.728993 46.26732) + (xy 88.714851 46.253178) + (xy 87.903783 47.064246) + (xy 87.982978 47.267117) + (xy 88.028117 47.29728) + (xy 88.251353 47.410568) + (xy 88.4924 47.478128) + (xy 88.741996 47.497364) + (xy 88.990549 47.467536) + (xy 89.228507 47.389792) + (xy 89.446725 47.267118) + (xy 89.525933 47.064263) + (xy 89.591662 47.129991) + (xy 89.518991 47.202662) + (xy 89.379239 47.411816) + (xy 89.282976 47.644215) + (xy 89.233902 47.890928) + (xy 89.233902 48.142476) + (xy 89.282976 48.389189) + (xy 89.379239 48.621588) + (xy 89.518991 48.830742) + (xy 89.696862 49.008613) + (xy 89.906016 49.148365) + (xy 90.138415 49.244628) + (xy 90.385128 49.293702) + (xy 90.636676 49.293702) + (xy 90.883389 49.244628) + (xy 91.115788 49.148365) + (xy 91.29511 49.028546) + (xy 91.175291 49.207868) + (xy 91.079028 49.440267) + (xy 91.029954 49.68698) + (xy 91.029954 49.938528) + (xy 91.079028 50.185241) + (xy 91.090579 50.213128) + (xy 89.725107 51.5786) + (xy 88.260145 51.5786) + (xy 88.250175 51.545732) + (xy 88.187423 51.428331) + (xy 88.102972 51.325428) + (xy 88.000069 51.240977) + (xy 87.882668 51.178225) + (xy 87.808084 51.1556) + (xy 87.882668 51.132975) + (xy 88.000069 51.070223) + (xy 88.102972 50.985772) + (xy 88.187423 50.882869) + (xy 88.250175 50.765468) + (xy 88.288818 50.63808) + (xy 88.301866 50.505601) + (xy 88.301866 49.805599) + (xy 88.288818 49.67312) + (xy 88.250175 49.545732) + (xy 88.187423 49.428331) + (xy 88.102972 49.325428) + (xy 88.000069 49.240977) + (xy 87.882668 49.178225) + (xy 87.75528 49.139582) + (xy 87.622801 49.126534) + (xy 86.722799 49.126534) + (xy 86.59032 49.139582) + (xy 86.462932 49.178225) + (xy 86.345531 49.240977) + (xy 86.242628 49.325428) + (xy 86.158177 49.428331) + (xy 86.095425 49.545732) + (xy 86.085455 49.5786) + (xy 85.813531 49.5786) + (xy 85.7852 49.57581) + (xy 85.756869 49.5786) + (xy 85.756864 49.5786) + (xy 85.730086 49.581237) + (xy 85.672088 49.586949) + (xy 85.607982 49.606396) + (xy 85.563324 49.619943) + (xy 85.463085 49.673521) + (xy 85.375226 49.745626) + (xy 85.357161 49.767638) + (xy 84.377695 50.747104) + (xy 84.361496 50.693702) + (xy 84.314916 50.606556) + (xy 84.252228 50.530172) + (xy 84.175844 50.467484) + (xy 84.088698 50.420904) + (xy 83.994138 50.392219) + (xy 83.8958 50.382534) + (xy 82.4958 50.382534) + (xy 82.397462 50.392219) + (xy 82.302902 50.420904) + (xy 82.215756 50.467484) + (xy 82.139372 50.530172) + (xy 82.076684 50.606556) + (xy 82.030104 50.693702) + (xy 82.001419 50.788262) + (xy 81.991734 50.8866) + (xy 74.511801 50.8866) + (xy 73.864068 50.238867) + (xy 73.944138 50.230981) + (xy 74.0208 50.207725) + (xy 74.097462 50.230981) + (xy 74.1958 50.240666) + (xy 74.3458 50.240666) + (xy 74.444138 50.230981) + (xy 74.5208 50.207725) + (xy 74.597462 50.230981) + (xy 74.6958 50.240666) + (xy 74.8458 50.240666) + (xy 74.944138 50.230981) + (xy 75.0208 50.207725) + (xy 75.097462 50.230981) + (xy 75.1958 50.240666) + (xy 75.3458 50.240666) + (xy 75.444138 50.230981) + (xy 75.5208 50.207725) + (xy 75.597462 50.230981) + (xy 75.6958 50.240666) + (xy 75.8458 50.240666) + (xy 75.944138 50.230981) + (xy 76.0208 50.207725) + (xy 76.097462 50.230981) + (xy 76.1958 50.240666) + (xy 76.3458 50.240666) + (xy 76.444138 50.230981) + (xy 76.5208 50.207725) + (xy 76.597462 50.230981) + (xy 76.6958 50.240666) + (xy 76.8458 50.240666) + (xy 76.944138 50.230981) + (xy 77.0208 50.207725) + (xy 77.097462 50.230981) + (xy 77.1958 50.240666) + (xy 77.3458 50.240666) + (xy 77.444138 50.230981) + (xy 77.5208 50.207725) + (xy 77.597462 50.230981) + (xy 77.6958 50.240666) + (xy 77.8458 50.240666) + (xy 77.944138 50.230981) + (xy 78.0208 50.207725) + (xy 78.097462 50.230981) + (xy 78.1958 50.240666) + (xy 78.3458 50.240666) + (xy 78.444138 50.230981) + (xy 78.5208 50.207725) + (xy 78.597462 50.230981) + (xy 78.6958 50.240666) + (xy 78.8458 50.240666) + (xy 78.944138 50.230981) + (xy 79.0208 50.207725) + (xy 79.097462 50.230981) + (xy 79.1958 50.240666) + (xy 79.3458 50.240666) + (xy 79.444138 50.230981) + (xy 79.5208 50.207725) + (xy 79.597462 50.230981) + (xy 79.6958 50.240666) + (xy 79.8458 50.240666) + (xy 79.944138 50.230981) + (xy 80.0208 50.207725) + (xy 80.097462 50.230981) + (xy 80.1958 50.240666) + (xy 80.3458 50.240666) + (xy 80.444138 50.230981) + (xy 80.5208 50.207725) + (xy 80.597462 50.230981) + (xy 80.6958 50.240666) + (xy 80.8458 50.240666) + (xy 80.944138 50.230981) + (xy 81.0208 50.207725) + (xy 81.097462 50.230981) + (xy 81.1958 50.240666) + (xy 81.3458 50.240666) + (xy 81.444138 50.230981) + (xy 81.538698 50.202296) + (xy 81.625844 50.155716) + (xy 81.702228 50.093028) + (xy 81.764916 50.016644) + (xy 81.811496 49.929498) + (xy 81.840181 49.834938) + (xy 81.849866 49.7366) + (xy 81.849866 48.3366) + (xy 81.840181 48.238262) + (xy 81.811496 48.143702) + (xy 81.764916 48.056556) + (xy 81.702228 47.980172) + (xy 81.625844 47.917484) + (xy 81.538698 47.870904) + (xy 81.444138 47.842219) + (xy 81.3458 47.832534) + (xy 81.1958 47.832534) + (xy 81.097462 47.842219) + (xy 81.0208 47.865475) + (xy 80.944138 47.842219) + (xy 80.8458 47.832534) + (xy 80.6958 47.832534) + (xy 80.597462 47.842219) + (xy 80.5208 47.865475) + (xy 80.444138 47.842219) + (xy 80.3458 47.832534) + (xy 80.1958 47.832534) + (xy 80.097462 47.842219) + (xy 80.0208 47.865475) + (xy 79.944138 47.842219) + (xy 79.8458 47.832534) + (xy 79.6958 47.832534) + (xy 79.597462 47.842219) + (xy 79.5208 47.865475) + (xy 79.444138 47.842219) + (xy 79.3458 47.832534) + (xy 79.1958 47.832534) + (xy 79.097462 47.842219) + (xy 79.0208 47.865475) + (xy 78.944138 47.842219) + (xy 78.8458 47.832534) + (xy 78.6958 47.832534) + (xy 78.597462 47.842219) + (xy 78.5208 47.865475) + (xy 78.444138 47.842219) + (xy 78.3458 47.832534) + (xy 78.1958 47.832534) + (xy 78.097462 47.842219) + (xy 78.0208 47.865475) + (xy 77.944138 47.842219) + (xy 77.8458 47.832534) + (xy 77.6958 47.832534) + (xy 77.597462 47.842219) + (xy 77.5208 47.865475) + (xy 77.444138 47.842219) + (xy 77.3458 47.832534) + (xy 77.1958 47.832534) + (xy 77.097462 47.842219) + (xy 77.0208 47.865475) + (xy 76.944138 47.842219) + (xy 76.8458 47.832534) + (xy 76.6958 47.832534) + (xy 76.597462 47.842219) + (xy 76.5208 47.865475) + (xy 76.444138 47.842219) + (xy 76.3458 47.832534) + (xy 76.1958 47.832534) + (xy 76.097462 47.842219) + (xy 76.0208 47.865475) + (xy 75.944138 47.842219) + (xy 75.8478 47.832731) + (xy 75.8478 47.243801) + (xy 76.68391 46.407691) + (xy 76.705921 46.389627) + (xy 76.778026 46.301768) + (xy 76.831604 46.201529) + (xy 76.845151 46.156871) + (xy 76.864598 46.092765) + (xy 76.871501 46.022666) + (xy 76.872947 46.007989) + (xy 76.872947 46.007984) + (xy 76.875737 45.979653) + (xy 76.872947 45.951322) + (xy 76.872947 45.762398) + (xy 76.878427 45.761858) + (xy 77.005815 45.723215) + (xy 77.123216 45.660463) + (xy 77.226119 45.576012) + (xy 77.31057 45.473109) + (xy 77.373322 45.355708) + (xy 77.411965 45.22832) + (xy 77.425013 45.095841) + (xy 77.425013 44.395839) + (xy 77.411965 44.26336) + (xy 77.373322 44.135972) + (xy 77.31057 44.018571) + (xy 77.226119 43.915668) + (xy 77.123216 43.831217) + (xy 77.005815 43.768465) + (xy 76.931231 43.74584) + (xy 77.005815 43.723215) + (xy 77.123216 43.660463) + (xy 77.226119 43.576012) + (xy 77.31057 43.473109) + (xy 77.373322 43.355708) + (xy 77.411965 43.22832) + (xy 77.425013 43.095841) + (xy 77.425013 42.395839) + (xy 77.411965 42.26336) + (xy 77.373322 42.135972) + (xy 77.31057 42.018571) + (xy 77.226119 41.915668) + (xy 77.123216 41.831217) + (xy 77.005815 41.768465) + (xy 76.878427 41.729822) + (xy 76.745948 41.716774) + (xy 76.082883 41.716774) + (xy 67.709346 33.343238) + (xy 67.691281 33.321226) + (xy 67.603422 33.249121) + (xy 67.503183 33.195543) + (xy 67.439077 33.176097) + (xy 67.394418 33.162549) + (xy 67.339352 33.157126) + (xy 67.309643 33.1542) + (xy 67.309638 33.1542) + (xy 67.281307 33.15141) + (xy 67.252976 33.1542) + (xy 66.515526 33.1542) + (xy 66.498755 33.122824) + (xy 66.476905 33.0962) + (xy 66.498755 33.069576) + (xy 66.538405 32.995396) + (xy 66.562822 32.914907) + (xy 66.571066 32.8312) + (xy 66.571066 32.0912) + (xy 66.562822 32.007493) + (xy 66.538405 31.927004) + (xy 66.498755 31.852824) + (xy 66.445395 31.787805) + (xy 66.380376 31.734445) + (xy 66.306196 31.694795) + (xy 66.225707 31.670378) + (xy 66.142 31.662134) + (xy 63.742 31.662134) + (xy 63.658293 31.670378) + (xy 63.577804 31.694795) + (xy 63.503624 31.734445) + (xy 63.438605 31.787805) + (xy 63.385245 31.852824) + (xy 63.345595 31.927004) + (xy 63.321178 32.007493) + (xy 63.312934 32.0912) + (xy 62.671066 32.0912) + (xy 62.662822 32.007493) + (xy 62.638405 31.927004) + (xy 62.598755 31.852824) + (xy 62.545395 31.787805) + (xy 62.480376 31.734445) + (xy 62.406196 31.694795) + (xy 62.325707 31.670378) + (xy 62.242 31.662134) + (xy 59.842 31.662134) + (xy 59.758293 31.670378) + (xy 59.677804 31.694795) + (xy 59.603624 31.734445) + (xy 59.538605 31.787805) + (xy 59.485245 31.852824) + (xy 59.445595 31.927004) + (xy 59.421178 32.007493) + (xy 59.412934 32.0912) + (xy 59.412934 32.8312) + (xy 59.421178 32.914907) + (xy 59.445595 32.995396) + (xy 59.477026 33.0542) + (xy 57.488041 33.0542) + (xy 57.454799 33.050926) + (xy 57.421557 33.0542) + (xy 57.421548 33.0542) + (xy 57.322085 33.063996) + (xy 57.19447 33.102708) + (xy 57.076859 33.165572) + (xy 56.973773 33.250173) + (xy 56.952574 33.276004) + (xy 55.628 34.600578) + (xy 55.602173 34.621774) + (xy 55.517572 34.72486) + (xy 55.454708 34.842471) + (xy 55.415996 34.970086) + (xy 55.4062 35.069549) + (xy 55.4062 35.069555) + (xy 55.402926 35.1028) + (xy 55.4062 35.136045) + (xy 55.406201 38.760777) + (xy 52.840783 41.326195) + (xy 52.770794 41.297204) + (xy 52.466121 41.2366) + (xy 52.155479 41.2366) + (xy 51.850806 41.297204) + (xy 51.563811 41.416081) + (xy 51.305521 41.588664) + (xy 51.085864 41.808321) + (xy 50.913281 42.066611) + (xy 50.794404 42.353606) + (xy 50.7338 42.658279) + (xy 39.881012 42.658279) + (xy 39.89452 28.474756) + (xy 51.282171 28.474756) + (xy 51.398083 28.708976) + (xy 51.668336 28.862149) + (xy 51.963278 28.959654) + (xy 52.271576 28.997745) + (xy 52.581381 28.974958) + (xy 52.880788 28.892169) + (xy 53.158291 28.75256) + (xy 53.223517 28.708976) + (xy 53.339429 28.474756) + (xy 52.3108 27.446127) + (xy 51.282171 28.474756) + (xy 39.89452 28.474756) + (xy 39.895569 27.374376) + (xy 50.726655 27.374376) + (xy 50.749442 27.684181) + (xy 50.832231 27.983588) + (xy 50.97184 28.261091) + (xy 51.015424 28.326317) + (xy 51.249644 28.442229) + (xy 52.278273 27.4136) + (xy 52.343327 27.4136) + (xy 53.371956 28.442229) + (xy 53.606176 28.326317) + (xy 53.759349 28.056064) + (xy 53.856854 27.761122) + (xy 53.894945 27.452824) + (xy 53.872158 27.143019) + (xy 53.789369 26.843612) + (xy 53.64976 26.566109) + (xy 53.606176 26.500883) + (xy 53.371956 26.384971) + (xy 52.343327 27.4136) + (xy 52.278273 27.4136) + (xy 51.249644 26.384971) + (xy 51.015424 26.500883) + (xy 50.862251 26.771136) + (xy 50.764746 27.066078) + (xy 50.726655 27.374376) + (xy 39.895569 27.374376) + (xy 39.896542 26.352444) + (xy 51.282171 26.352444) + (xy 52.3108 27.381073) + (xy 53.339429 26.352444) + (xy 53.223517 26.118224) + (xy 52.953264 25.965051) + (xy 52.658322 25.867546) + (xy 52.350024 25.829455) + (xy 52.040219 25.852242) + (xy 51.740812 25.935031) + (xy 51.463309 26.07464) + (xy 51.398083 26.118224) + (xy 51.282171 26.352444) + (xy 39.896542 26.352444) + (xy 39.901803 20.828827) + ) + ) + ) + (zone (net 0) (net_name "") (layers F&B.Cu) (tstamp 7c7604e2-0e63-4d5b-aec8-03758f4aefed) (hatch edge 0.508) + (connect_pads (clearance 0)) + (min_thickness 0.254) + (keepout (tracks allowed) (vias allowed) (pads allowed) (copperpour not_allowed) (footprints allowed)) + (fill (thermal_gap 0.508) (thermal_bridge_width 0.508)) + (polygon + (pts + (xy 85.9536 64.9732) + (xy 86.5632 65.2272) + (xy 87.0712 65.6844) + (xy 87.4268 66.2432) + (xy 87.63 66.9544) + (xy 87.63 67.6148) + (xy 87.4268 68.2244) + (xy 87.0712 68.7324) + (xy 86.5124 69.2404) + (xy 85.852 69.4944) + (xy 85.852 70.5104) + (xy 78.486 70.4596) + (xy 78.486 69.4436) + (xy 77.8256 69.2404) + (xy 77.3684 68.8848) + (xy 76.9112 68.2752) + (xy 76.708 67.6656) + (xy 76.6572 67.2084) + (xy 76.7588 66.548) + (xy 77.0128 65.9892) + (xy 77.5208 65.4304) + (xy 78.0796 65.0748) + (xy 78.7908 64.9224) + (xy 85.3948 64.9224) + ) + ) + ) + (zone (net 3) (net_name "GND") (layer "B.Cu") (tstamp 00000000-0000-0000-0000-000061c7fb9b) (hatch edge 0.508) + (connect_pads (clearance 0.3)) + (min_thickness 0.254) + (fill yes (thermal_gap 0.3) (thermal_bridge_width 0.3) (smoothing fillet) (radius 0.127)) + (polygon + (pts + (xy 80.1116 30.8864) + (xy 105.0036 59.436) + (xy 64.5668 90.6272) + (xy 54.61 84.4296) + (xy 63.0936 75.3872) + (xy 67.3608 72.644) + (xy 67.3608 59.7408) + (xy 63.0428 54.9656) + (xy 63.0174 44.1706) + (xy 56.769 44.2214) + (xy 55.0418 45.8216) + (xy 39.751 45.8216) + (xy 39.7764 19.1516) + ) + ) + (filled_polygon + (layer "B.Cu") + (pts + (xy 40.275685 20.89408) + (xy 44.256937 21.747586) + (xy 48.202486 22.753294) + (xy 52.10651 23.90972) + (xy 55.963256 25.215156) + (xy 59.767053 26.667685) + (xy 63.512278 28.265159) + (xy 67.193433 30.005233) + (xy 70.805085 31.88534) + (xy 74.341872 33.902688) + (xy 77.798632 36.054332) + (xy 81.170236 38.337078) + (xy 84.451727 40.747572) + (xy 87.053599 42.817195) + (xy 87.002507 42.801696) + (xy 86.9188 42.793452) + (xy 86.835093 42.801696) + (xy 86.754604 42.826113) + (xy 86.680424 42.865763) + (xy 86.615405 42.919123) + (xy 85.786928 43.7476) + (xy 74.277441 43.7476) + (xy 74.244199 43.744326) + (xy 74.219028 43.746805) + (xy 68.574226 38.102004) + (xy 68.553027 38.076173) + (xy 68.449941 37.991572) + (xy 68.33233 37.928708) + (xy 68.204715 37.889996) + (xy 68.105252 37.8802) + (xy 68.105245 37.8802) + (xy 68.072 37.876926) + (xy 68.038755 37.8802) + (xy 56.600452 37.8802) + (xy 56.5672 37.876925) + (xy 56.434485 37.889996) + (xy 56.30687 37.928708) + (xy 56.189259 37.991572) + (xy 56.121801 38.046934) + (xy 56.086173 38.076173) + (xy 56.064978 38.101999) + (xy 52.9878 41.179178) + (xy 52.9878 40.695798) + (xy 53.036572 40.655772) + (xy 53.121023 40.552869) + (xy 53.183775 40.435468) + (xy 53.222418 40.30808) + (xy 53.235466 40.175601) + (xy 53.235466 39.275599) + (xy 53.222418 39.14312) + (xy 53.183775 39.015732) + (xy 53.121023 38.898331) + (xy 53.036572 38.795428) + (xy 52.933669 38.710977) + (xy 52.8834 38.684108) + (xy 52.8834 36.674855) + (xy 52.982277 36.665116) + (xy 53.109665 36.626473) + (xy 53.227067 36.563721) + (xy 53.32997 36.47927) + (xy 53.414421 36.376367) + (xy 53.477173 36.258965) + (xy 53.515816 36.131577) + (xy 53.528864 35.999098) + (xy 53.528864 35.324098) + (xy 53.515816 35.191619) + (xy 53.477173 35.064231) + (xy 53.414421 34.946829) + (xy 53.32997 34.843926) + (xy 53.227067 34.759475) + (xy 53.109665 34.696723) + (xy 52.982277 34.65808) + (xy 52.849798 34.645032) + (xy 51.899798 34.645032) + (xy 51.767319 34.65808) + (xy 51.639931 34.696723) + (xy 51.522529 34.759475) + (xy 51.419626 34.843926) + (xy 51.335175 34.946829) + (xy 51.303494 35.0061) + (xy 51.148611 35.0061) + (xy 51.128423 34.968331) + (xy 51.043972 34.865428) + (xy 50.941069 34.780977) + (xy 50.823667 34.718225) + (xy 50.696279 34.679582) + (xy 50.5638 34.666534) + (xy 49.6138 34.666534) + (xy 49.481321 34.679582) + (xy 49.353933 34.718225) + (xy 49.236531 34.780977) + (xy 49.133628 34.865428) + (xy 49.049177 34.968331) + (xy 48.986425 35.085733) + (xy 48.947782 35.213121) + (xy 48.934734 35.3456) + (xy 48.934734 36.0206) + (xy 48.947782 36.153079) + (xy 48.986425 36.280467) + (xy 49.049177 36.397869) + (xy 49.133628 36.500772) + (xy 49.236531 36.585223) + (xy 49.353933 36.647975) + (xy 49.481321 36.686618) + (xy 49.6138 36.699666) + (xy 50.5638 36.699666) + (xy 50.696279 36.686618) + (xy 50.823667 36.647975) + (xy 50.941069 36.585223) + (xy 51.043972 36.500772) + (xy 51.128423 36.397869) + (xy 51.148611 36.3601) + (xy 51.32648 36.3601) + (xy 51.335175 36.376367) + (xy 51.419626 36.47927) + (xy 51.522529 36.563721) + (xy 51.529401 36.567394) + (xy 51.5294 38.684108) + (xy 51.479131 38.710977) + (xy 51.376228 38.795428) + (xy 51.291777 38.898331) + (xy 51.229025 39.015732) + (xy 51.2064 39.090316) + (xy 51.183775 39.015732) + (xy 51.121023 38.898331) + (xy 51.036572 38.795428) + (xy 50.933669 38.710977) + (xy 50.816268 38.648225) + (xy 50.68888 38.609582) + (xy 50.556401 38.596534) + (xy 49.893336 38.596534) + (xy 48.602439 37.305638) + (xy 48.584374 37.283626) + (xy 48.496515 37.211521) + (xy 48.396276 37.157943) + (xy 48.33217 37.138497) + (xy 48.287511 37.124949) + (xy 48.232445 37.119526) + (xy 48.202736 37.1166) + (xy 48.202731 37.1166) + (xy 48.1744 37.11381) + (xy 48.146069 37.1166) + (xy 45.653866 37.1166) + (xy 45.653866 36.9436) + (xy 45.645622 36.859893) + (xy 45.621205 36.779404) + (xy 45.581555 36.705224) + (xy 45.528195 36.640205) + (xy 45.463176 36.586845) + (xy 45.388996 36.547195) + (xy 45.308507 36.522778) + (xy 45.2248 36.514534) + (xy 43.5248 36.514534) + (xy 43.441093 36.522778) + (xy 43.360604 36.547195) + (xy 43.286424 36.586845) + (xy 43.221405 36.640205) + (xy 43.168045 36.705224) + (xy 43.128395 36.779404) + (xy 43.103978 36.859893) + (xy 43.095734 36.9436) + (xy 43.095734 38.4436) + (xy 43.103978 38.527307) + (xy 43.128395 38.607796) + (xy 43.168045 38.681976) + (xy 43.221405 38.746995) + (xy 43.286424 38.800355) + (xy 43.360604 38.840005) + (xy 43.441093 38.864422) + (xy 43.5248 38.872666) + (xy 43.7978 38.872666) + (xy 43.7978 39.266469) + (xy 43.79501 39.2948) + (xy 43.806149 39.407911) + (xy 43.819542 39.452059) + (xy 43.839143 39.516675) + (xy 43.892721 39.616914) + (xy 43.964826 39.704774) + (xy 43.986838 39.722839) + (xy 49.660761 45.396762) + (xy 49.678826 45.418774) + (xy 49.766685 45.490879) + (xy 49.866924 45.544457) + (xy 49.975688 45.57745) + (xy 50.060464 45.5858) + (xy 50.06047 45.5858) + (xy 50.088799 45.58859) + (xy 50.117128 45.5858) + (xy 53.718069 45.5858) + (xy 53.7464 45.58859) + (xy 53.774731 45.5858) + (xy 53.774736 45.5858) + (xy 53.804445 45.582874) + (xy 53.859511 45.577451) + (xy 53.90417 45.563903) + (xy 53.968276 45.544457) + (xy 54.068515 45.490879) + (xy 54.156374 45.418774) + (xy 54.174439 45.396762) + (xy 55.814201 43.757) + (xy 66.664599 43.757) + (xy 69.527001 46.619403) + (xy 69.527 51.883847) + (xy 69.461628 51.949219) + (xy 69.371123 52.084669) + (xy 69.308782 52.235173) + (xy 69.277 52.394948) + (xy 69.277 52.557852) + (xy 69.308782 52.717627) + (xy 69.371123 52.868131) + (xy 69.461628 53.003581) + (xy 69.576819 53.118772) + (xy 69.712269 53.209277) + (xy 69.862773 53.271618) + (xy 70.022548 53.3034) + (xy 70.185452 53.3034) + (xy 70.345227 53.271618) + (xy 70.495731 53.209277) + (xy 70.631181 53.118772) + (xy 70.746372 53.003581) + (xy 70.836877 52.868131) + (xy 70.899218 52.717627) + (xy 70.931 52.557852) + (xy 70.931 52.394948) + (xy 70.899218 52.235173) + (xy 70.836877 52.084669) + (xy 70.746372 51.949219) + (xy 70.681 51.883847) + (xy 70.681 46.408728) + (xy 70.68379 46.380399) + (xy 70.681 46.35207) + (xy 70.681 46.352064) + (xy 70.67265 46.267288) + (xy 70.639657 46.158524) + (xy 70.586079 46.058285) + (xy 70.536768 45.9982) + (xy 70.532037 45.992435) + (xy 70.532035 45.992433) + (xy 70.513974 45.970426) + (xy 70.491967 45.952365) + (xy 67.331639 42.792038) + (xy 67.313574 42.770026) + (xy 67.225715 42.697921) + (xy 67.125476 42.644343) + (xy 67.061334 42.624886) + (xy 67.016711 42.611349) + (xy 66.961645 42.605926) + (xy 66.931936 42.603) + (xy 66.931931 42.603) + (xy 66.9036 42.60021) + (xy 66.875269 42.603) + (xy 55.603531 42.603) + (xy 55.5752 42.60021) + (xy 55.546869 42.603) + (xy 55.546864 42.603) + (xy 55.520086 42.605637) + (xy 55.462088 42.611349) + (xy 55.397982 42.630796) + (xy 55.353324 42.644343) + (xy 55.253085 42.697921) + (xy 55.165226 42.770026) + (xy 55.147161 42.792038) + (xy 53.507399 44.4318) + (xy 50.327801 44.4318) + (xy 44.9518 39.055799) + (xy 44.9518 38.872666) + (xy 45.2248 38.872666) + (xy 45.308507 38.864422) + (xy 45.388996 38.840005) + (xy 45.463176 38.800355) + (xy 45.528195 38.746995) + (xy 45.581555 38.681976) + (xy 45.621205 38.607796) + (xy 45.645622 38.527307) + (xy 45.653866 38.4436) + (xy 45.653866 38.2706) + (xy 47.935399 38.2706) + (xy 49.177334 39.512536) + (xy 49.177334 40.175601) + (xy 49.190382 40.30808) + (xy 49.229025 40.435468) + (xy 49.291777 40.552869) + (xy 49.376228 40.655772) + (xy 49.479131 40.740223) + (xy 49.596532 40.802975) + (xy 49.72392 40.841618) + (xy 49.856399 40.854666) + (xy 50.556401 40.854666) + (xy 50.68888 40.841618) + (xy 50.816268 40.802975) + (xy 50.933669 40.740223) + (xy 51.036572 40.655772) + (xy 51.121023 40.552869) + (xy 51.183775 40.435468) + (xy 51.2064 40.360884) + (xy 51.229025 40.435468) + (xy 51.291777 40.552869) + (xy 51.376228 40.655772) + (xy 51.479131 40.740223) + (xy 51.596532 40.802975) + (xy 51.633801 40.81428) + (xy 51.6338 41.38709) + (xy 51.563811 41.416081) + (xy 51.305521 41.588664) + (xy 51.085864 41.808321) + (xy 50.913281 42.066611) + (xy 50.794404 42.353606) + (xy 50.7338 42.658279) + (xy 50.7338 42.968921) + (xy 50.794404 43.273594) + (xy 50.913281 43.560589) + (xy 51.085864 43.818879) + (xy 51.305521 44.038536) + (xy 51.563811 44.211119) + (xy 51.850806 44.329996) + (xy 52.155479 44.3906) + (xy 52.466121 44.3906) + (xy 52.770794 44.329996) + (xy 53.057789 44.211119) + (xy 53.316079 44.038536) + (xy 53.535736 43.818879) + (xy 53.708319 43.560589) + (xy 53.827196 43.273594) + (xy 53.8878 42.968921) + (xy 53.8878 42.658279) + (xy 53.827196 42.353606) + (xy 53.798206 42.283617) + (xy 56.847623 39.2342) + (xy 67.791578 39.2342) + (xy 73.589579 45.032202) + (xy 73.610773 45.058027) + (xy 73.636598 45.079221) + (xy 73.636601 45.079224) + (xy 73.636606 45.079228) + (xy 75.1088 46.551423) + (xy 75.108801 53.817789) + (xy 75.071031 53.837977) + (xy 74.968128 53.922428) + (xy 74.883677 54.025331) + (xy 74.820925 54.142733) + (xy 74.782282 54.270121) + (xy 74.769234 54.4026) + (xy 74.769234 55.3526) + (xy 74.782282 55.485079) + (xy 74.820925 55.612467) + (xy 74.883677 55.729869) + (xy 74.968128 55.832772) + (xy 75.071031 55.917223) + (xy 75.1088 55.937411) + (xy 75.108801 56.157313) + (xy 75.006531 56.211977) + (xy 74.903628 56.296428) + (xy 74.819177 56.399331) + (xy 74.756425 56.516733) + (xy 74.717782 56.644121) + (xy 74.704734 56.7766) + (xy 74.704734 57.7266) + (xy 74.717782 57.859079) + (xy 74.756425 57.986467) + (xy 74.819177 58.103869) + (xy 74.903628 58.206772) + (xy 75.006531 58.291223) + (xy 75.029633 58.303571) + (xy 75.009923 58.333069) + (xy 74.947582 58.483573) + (xy 74.9158 58.643348) + (xy 74.9158 58.806252) + (xy 74.947582 58.966027) + (xy 75.009923 59.116531) + (xy 75.0658 59.200157) + (xy 75.0658 63.178144) + (xy 75.035174 63.140826) + (xy 75.013163 63.122762) + (xy 73.781775 61.891374) + (xy 73.851462 61.854125) + (xy 73.954365 61.769674) + (xy 74.038816 61.666771) + (xy 74.101568 61.54937) + (xy 74.140211 61.421982) + (xy 74.153259 61.289503) + (xy 74.153259 60.589501) + (xy 74.140211 60.457022) + (xy 74.101568 60.329634) + (xy 74.038816 60.212233) + (xy 73.954365 60.10933) + (xy 73.851462 60.024879) + (xy 73.734061 59.962127) + (xy 73.659477 59.939502) + (xy 73.734061 59.916877) + (xy 73.851462 59.854125) + (xy 73.954365 59.769674) + (xy 74.038816 59.666771) + (xy 74.101568 59.54937) + (xy 74.140211 59.421982) + (xy 74.153259 59.289503) + (xy 74.153259 58.589501) + (xy 74.140211 58.457022) + (xy 74.101568 58.329634) + (xy 74.038816 58.212233) + (xy 73.954365 58.10933) + (xy 73.9322 58.09114) + (xy 73.9322 58.047353) + (xy 73.997572 57.981981) + (xy 74.088077 57.846531) + (xy 74.150418 57.696027) + (xy 74.1822 57.536252) + (xy 74.1822 57.373348) + (xy 74.150418 57.213573) + (xy 74.088077 57.063069) + (xy 73.997572 56.927619) + (xy 73.882381 56.812428) + (xy 73.746931 56.721923) + (xy 73.596427 56.659582) + (xy 73.436652 56.6278) + (xy 73.273748 56.6278) + (xy 73.113973 56.659582) + (xy 72.963469 56.721923) + (xy 72.828019 56.812428) + (xy 72.712828 56.927619) + (xy 72.622323 57.063069) + (xy 72.559982 57.213573) + (xy 72.5282 57.373348) + (xy 72.5282 57.536252) + (xy 72.559982 57.696027) + (xy 72.622323 57.846531) + (xy 72.665023 57.910436) + (xy 72.574192 57.910436) + (xy 72.441713 57.923484) + (xy 72.314325 57.962127) + (xy 72.196924 58.024879) + (xy 72.094021 58.10933) + (xy 72.00957 58.212233) + (xy 71.946818 58.329634) + (xy 71.908175 58.457022) + (xy 71.895127 58.589501) + (xy 71.895127 59.289503) + (xy 71.908175 59.421982) + (xy 71.946818 59.54937) + (xy 72.00957 59.666771) + (xy 72.094021 59.769674) + (xy 72.196924 59.854125) + (xy 72.314325 59.916877) + (xy 72.388909 59.939502) + (xy 72.314325 59.962127) + (xy 72.196924 60.024879) + (xy 72.094021 60.10933) + (xy 72.00957 60.212233) + (xy 71.946818 60.329634) + (xy 71.908175 60.457022) + (xy 71.895127 60.589501) + (xy 71.895127 61.279024) + (xy 71.867253 61.251203) + (xy 71.867253 60.589499) + (xy 71.854205 60.45702) + (xy 71.815562 60.329632) + (xy 71.75281 60.212231) + (xy 71.668359 60.109328) + (xy 71.565456 60.024877) + (xy 71.448055 59.962125) + (xy 71.373471 59.9395) + (xy 71.448055 59.916875) + (xy 71.565456 59.854123) + (xy 71.668359 59.769672) + (xy 71.75281 59.666769) + (xy 71.815562 59.549368) + (xy 71.854205 59.42198) + (xy 71.867253 59.289501) + (xy 71.867253 58.589499) + (xy 71.854205 58.45702) + (xy 71.815562 58.329632) + (xy 71.75281 58.212231) + (xy 71.668359 58.109328) + (xy 71.565456 58.024877) + (xy 71.448055 57.962125) + (xy 71.320667 57.923482) + (xy 71.188188 57.910434) + (xy 71.149778 57.910434) + (xy 71.192477 57.846531) + (xy 71.254818 57.696027) + (xy 71.2866 57.536252) + (xy 71.2866 57.373348) + (xy 71.254818 57.213573) + (xy 71.192477 57.063069) + (xy 71.101972 56.927619) + (xy 70.986781 56.812428) + (xy 70.851331 56.721923) + (xy 70.700827 56.659582) + (xy 70.541052 56.6278) + (xy 70.378148 56.6278) + (xy 70.218373 56.659582) + (xy 70.067869 56.721923) + (xy 69.932419 56.812428) + (xy 69.817228 56.927619) + (xy 69.726723 57.063069) + (xy 69.664382 57.213573) + (xy 69.6326 57.373348) + (xy 69.6326 57.536252) + (xy 69.664382 57.696027) + (xy 69.726723 57.846531) + (xy 69.817228 57.981981) + (xy 69.8826 58.047353) + (xy 69.8826 58.048117) + (xy 69.808015 58.109328) + (xy 69.723564 58.212231) + (xy 69.660812 58.329632) + (xy 69.622169 58.45702) + (xy 69.609121 58.589499) + (xy 69.609121 59.289501) + (xy 69.622169 59.42198) + (xy 69.660812 59.549368) + (xy 69.723564 59.666769) + (xy 69.808015 59.769672) + (xy 69.910918 59.854123) + (xy 70.028319 59.916875) + (xy 70.102903 59.9395) + (xy 70.028319 59.962125) + (xy 69.910918 60.024877) + (xy 69.808015 60.109328) + (xy 69.723564 60.212231) + (xy 69.660812 60.329632) + (xy 69.622169 60.45702) + (xy 69.609121 60.589499) + (xy 69.609121 61.289501) + (xy 69.622169 61.42198) + (xy 69.660812 61.549368) + (xy 69.723564 61.666769) + (xy 69.808015 61.769672) + (xy 69.910918 61.854123) + (xy 70.028319 61.916875) + (xy 70.155707 61.955518) + (xy 70.288186 61.968566) + (xy 70.952428 61.968566) + (xy 73.1846 64.19652) + (xy 73.184601 72.89437) + (xy 73.184154 72.896718) + (xy 73.184601 72.951111) + (xy 73.184601 72.971423) + (xy 73.184783 72.973272) + (xy 73.185088 73.010372) + (xy 73.191464 73.041104) + (xy 73.192951 73.056199) + (xy 73.198156 73.073359) + (xy 73.208178 73.121661) + (xy 73.224462 73.160077) + (xy 73.225944 73.164963) + (xy 73.228789 73.170286) + (xy 73.252535 73.226306) + (xy 73.300443 73.296744) + (xy 76.33768 76.936185) + (xy 76.282769 77.068753) + (xy 76.233695 77.315466) + (xy 76.233695 77.567014) + (xy 76.282769 77.813727) + (xy 76.379032 78.046126) + (xy 76.488815 78.210429) + (xy 76.416993 78.266542) + (xy 76.363098 78.055546) + (xy 76.161457 77.907193) + (xy 75.934747 77.801028) + (xy 75.691682 77.741131) + (xy 75.441602 77.729806) + (xy 75.194118 77.767486) + (xy 74.95874 77.852724) + (xy 74.910261 77.877161) + (xy 74.806933 78.068868) + (xy 75.513111 78.972736) + (xy 75.528871 78.960423) + (xy 75.557192 78.99667) + (xy 75.541431 79.008984) + (xy 76.24761 79.912851) + (xy 76.45862 79.85897) + (xy 76.49406 79.817843) + (xy 76.633709 79.610077) + (xy 76.730141 79.379061) + (xy 76.779652 79.133669) + (xy 76.780337 78.883334) + (xy 76.732172 78.637675) + (xy 76.637007 78.406134) + (xy 76.445316 78.302794) + (xy 76.514444 78.248785) + (xy 76.518784 78.25528) + (xy 76.696655 78.433151) + (xy 76.905809 78.572903) + (xy 77.138208 78.669166) + (xy 77.384921 78.71824) + (xy 77.636469 78.71824) + (xy 77.883182 78.669166) + (xy 78.115581 78.572903) + (xy 78.324735 78.433151) + (xy 78.502606 78.25528) + (xy 78.642358 78.046126) + (xy 78.738621 77.813727) + (xy 78.787695 77.567014) + (xy 78.787695 77.315466) + (xy 78.738621 77.068753) + (xy 78.642358 76.836354) + (xy 78.596392 76.767561) + (xy 78.698202 76.869371) + (xy 78.907356 77.009123) + (xy 79.139755 77.105386) + (xy 79.386468 77.15446) + (xy 79.638016 77.15446) + (xy 79.884729 77.105386) + (xy 80.117128 77.009123) + (xy 80.326282 76.869371) + (xy 80.504153 76.6915) + (xy 80.643905 76.482346) + (xy 80.740168 76.249947) + (xy 80.789242 76.003234) + (xy 80.789242 75.751686) + (xy 80.740168 75.504973) + (xy 80.643905 75.272574) + (xy 80.504153 75.06342) + (xy 80.326282 74.885549) + (xy 80.117128 74.745797) + (xy 79.884729 74.649534) + (xy 79.638016 74.60046) + (xy 79.386468 74.60046) + (xy 79.282539 74.621133) + (xy 75.66926 69.8642) + (xy 75.824252 69.8642) + (xy 75.984027 69.832418) + (xy 76.134531 69.770077) + (xy 76.269981 69.679572) + (xy 76.385172 69.564381) + (xy 76.475677 69.428931) + (xy 76.538018 69.278427) + (xy 76.5698 69.118652) + (xy 76.5698 68.955748) + (xy 76.538018 68.795973) + (xy 76.475677 68.645469) + (xy 76.4198 68.561843) + (xy 76.4198 67.222425) + (xy 76.530977 67.222425) + (xy 76.581777 67.679625) + (xy 76.587517 67.705761) + (xy 76.790717 68.315361) + (xy 76.796686 68.330115) + (xy 76.8096 68.3514) + (xy 77.2668 68.961) + (xy 77.29043 68.985048) + (xy 77.74763 69.340648) + (xy 77.765288 69.352165) + (xy 77.788251 69.361784) + (xy 78.048581 69.441886) + (xy 78.048581 70.229676) + (xy 78.061629 70.362155) + (xy 78.100272 70.489543) + (xy 78.163024 70.606945) + (xy 78.247475 70.709848) + (xy 78.350378 70.794299) + (xy 78.46778 70.857051) + (xy 78.595168 70.895694) + (xy 78.727647 70.908742) + (xy 79.402647 70.908742) + (xy 79.535126 70.895694) + (xy 79.662514 70.857051) + (xy 79.779916 70.794299) + (xy 79.882819 70.709848) + (xy 79.96727 70.606945) + (xy 79.972663 70.596856) + (xy 80.142334 70.598026) + (xy 80.156242 70.643872) + (xy 80.195892 70.718052) + (xy 80.249252 70.783071) + (xy 80.314271 70.836431) + (xy 80.388451 70.876081) + (xy 80.46894 70.900498) + (xy 80.552647 70.908742) + (xy 81.010397 70.906676) + (xy 81.117147 70.799926) + (xy 81.117147 70.604749) + (xy 81.163147 70.605066) + (xy 81.163147 70.799926) + (xy 81.269897 70.906676) + (xy 81.727647 70.908742) + (xy 81.811354 70.900498) + (xy 81.891843 70.876081) + (xy 81.966023 70.836431) + (xy 82.031042 70.783071) + (xy 82.084402 70.718052) + (xy 82.124052 70.643872) + (xy 82.133793 70.61176) + (xy 82.157055 70.611921) + (xy 82.166747 70.643869) + (xy 82.206397 70.718049) + (xy 82.259757 70.783068) + (xy 82.324776 70.836428) + (xy 82.398956 70.876078) + (xy 82.479445 70.900495) + (xy 82.563152 70.908739) + (xy 83.020902 70.906673) + (xy 83.127652 70.799923) + (xy 83.127652 70.618614) + (xy 83.173652 70.618932) + (xy 83.173652 70.799923) + (xy 83.280402 70.906673) + (xy 83.738152 70.908739) + (xy 83.821859 70.900495) + (xy 83.902348 70.876078) + (xy 83.976528 70.836428) + (xy 84.041547 70.783068) + (xy 84.094907 70.718049) + (xy 84.134557 70.643869) + (xy 84.1401 70.625597) + (xy 84.33997 70.626975) + (xy 84.40798 70.709845) + (xy 84.510883 70.794296) + (xy 84.628285 70.857048) + (xy 84.755673 70.895691) + (xy 84.888152 70.908739) + (xy 85.563152 70.908739) + (xy 85.695631 70.895691) + (xy 85.823019 70.857048) + (xy 85.940421 70.794296) + (xy 86.043324 70.709845) + (xy 86.127775 70.606942) + (xy 86.190527 70.48954) + (xy 86.22917 70.362152) + (xy 86.242218 70.229673) + (xy 86.242218 69.480386) + (xy 86.55799 69.358935) + (xy 86.577855 69.349233) + (xy 86.597829 69.334372) + (xy 87.156629 68.826372) + (xy 87.175242 68.80523) + (xy 87.530842 68.29723) + (xy 87.547283 68.264561) + (xy 87.750483 67.654961) + (xy 87.75456 67.639576) + (xy 87.757 67.6148) + (xy 87.757 66.9544) + (xy 87.752114 66.91951) + (xy 87.548914 66.20831) + (xy 87.533945 66.175017) + (xy 87.178345 65.616217) + (xy 87.156159 65.590002) + (xy 86.648159 65.132802) + (xy 86.633978 65.121751) + (xy 86.612046 65.109969) + (xy 86.002446 64.855969) + (xy 85.989552 64.851395) + (xy 85.965098 64.846722) + (xy 85.406298 64.795922) + (xy 85.3948 64.7954) + (xy 78.7908 64.7954) + (xy 78.76419 64.798219) + (xy 78.05299 64.950619) + (xy 78.03363 64.956412) + (xy 78.011417 64.967655) + (xy 77.452617 65.323255) + (xy 77.426828 65.344971) + (xy 76.918828 65.903771) + (xy 76.909658 65.915101) + (xy 76.897183 65.936647) + (xy 76.643183 66.495447) + (xy 76.633277 66.528689) + (xy 76.531677 67.189089) + (xy 76.530977 67.222425) + (xy 76.4198 67.222425) + (xy 76.4198 59.200157) + (xy 76.475677 59.116531) + (xy 76.538018 58.966027) + (xy 76.5698 58.806252) + (xy 76.5698 58.643348) + (xy 76.538018 58.483573) + (xy 76.475677 58.333069) + (xy 76.443591 58.28505) + (xy 76.538972 58.206772) + (xy 76.623423 58.103869) + (xy 76.686175 57.986467) + (xy 76.689168 57.9766) + (xy 76.779734 57.9766) + (xy 76.787978 58.060307) + (xy 76.812395 58.140796) + (xy 76.852045 58.214976) + (xy 76.905405 58.279995) + (xy 76.970424 58.333355) + (xy 77.044604 58.373005) + (xy 77.125093 58.397422) + (xy 77.2088 58.405666) + (xy 77.66655 58.4036) + (xy 77.7733 58.29685) + (xy 77.7733 57.2746) + (xy 77.8193 57.2746) + (xy 77.8193 58.29685) + (xy 77.92605 58.4036) + (xy 78.3838 58.405666) + (xy 78.467507 58.397422) + (xy 78.547996 58.373005) + (xy 78.622176 58.333355) + (xy 78.687195 58.279995) + (xy 78.740555 58.214976) + (xy 78.780205 58.140796) + (xy 78.804622 58.060307) + (xy 78.812866 57.9766) + (xy 78.8108 57.38135) + (xy 78.70405 57.2746) + (xy 77.8193 57.2746) + (xy 77.7733 57.2746) + (xy 76.88855 57.2746) + (xy 76.7818 57.38135) + (xy 76.779734 57.9766) + (xy 76.689168 57.9766) + (xy 76.724818 57.859079) + (xy 76.737866 57.7266) + (xy 76.737866 56.7766) + (xy 76.724818 56.644121) + (xy 76.689169 56.5266) + (xy 76.779734 56.5266) + (xy 76.7818 57.12185) + (xy 76.88855 57.2286) + (xy 77.7733 57.2286) + (xy 77.7733 56.20635) + (xy 77.8193 56.20635) + (xy 77.8193 57.2286) + (xy 78.70405 57.2286) + (xy 78.8108 57.12185) + (xy 78.812866 56.5266) + (xy 78.804622 56.442893) + (xy 78.780205 56.362404) + (xy 78.740555 56.288224) + (xy 78.687195 56.223205) + (xy 78.622176 56.169845) + (xy 78.547996 56.130195) + (xy 78.467507 56.105778) + (xy 78.3838 56.097534) + (xy 77.92605 56.0996) + (xy 77.8193 56.20635) + (xy 77.7733 56.20635) + (xy 77.66655 56.0996) + (xy 77.2088 56.097534) + (xy 77.125093 56.105778) + (xy 77.044604 56.130195) + (xy 76.970424 56.169845) + (xy 76.905405 56.223205) + (xy 76.852045 56.288224) + (xy 76.812395 56.362404) + (xy 76.787978 56.442893) + (xy 76.779734 56.5266) + (xy 76.689169 56.5266) + (xy 76.686175 56.516733) + (xy 76.623423 56.399331) + (xy 76.538972 56.296428) + (xy 76.4628 56.233915) + (xy 76.4628 55.937411) + (xy 76.500569 55.917223) + (xy 76.603472 55.832772) + (xy 76.687923 55.729869) + (xy 76.750675 55.612467) + (xy 76.753668 55.6026) + (xy 76.844234 55.6026) + (xy 76.852478 55.686307) + (xy 76.876895 55.766796) + (xy 76.916545 55.840976) + (xy 76.969905 55.905995) + (xy 77.034924 55.959355) + (xy 77.109104 55.999005) + (xy 77.189593 56.023422) + (xy 77.2733 56.031666) + (xy 77.73105 56.0296) + (xy 77.8378 55.92285) + (xy 77.8378 54.9006) + (xy 77.8838 54.9006) + (xy 77.8838 55.92285) + (xy 77.99055 56.0296) + (xy 78.4483 56.031666) + (xy 78.532007 56.023422) + (xy 78.612496 55.999005) + (xy 78.686676 55.959355) + (xy 78.751695 55.905995) + (xy 78.805055 55.840976) + (xy 78.844705 55.766796) + (xy 78.869122 55.686307) + (xy 78.877366 55.6026) + (xy 78.8753 55.00735) + (xy 78.76855 54.9006) + (xy 77.8838 54.9006) + (xy 77.8378 54.9006) + (xy 76.95305 54.9006) + (xy 76.8463 55.00735) + (xy 76.844234 55.6026) + (xy 76.753668 55.6026) + (xy 76.789318 55.485079) + (xy 76.802366 55.3526) + (xy 76.802366 54.4026) + (xy 76.789318 54.270121) + (xy 76.753669 54.1526) + (xy 76.844234 54.1526) + (xy 76.8463 54.74785) + (xy 76.95305 54.8546) + (xy 77.8378 54.8546) + (xy 77.8378 53.83235) + (xy 77.8838 53.83235) + (xy 77.8838 54.8546) + (xy 78.76855 54.8546) + (xy 78.8753 54.74785) + (xy 78.877366 54.1526) + (xy 78.869122 54.068893) + (xy 78.844705 53.988404) + (xy 78.805055 53.914224) + (xy 78.751695 53.849205) + (xy 78.686676 53.795845) + (xy 78.612496 53.756195) + (xy 78.532007 53.731778) + (xy 78.4483 53.723534) + (xy 77.99055 53.7256) + (xy 77.8838 53.83235) + (xy 77.8378 53.83235) + (xy 77.73105 53.7256) + (xy 77.2733 53.723534) + (xy 77.189593 53.731778) + (xy 77.109104 53.756195) + (xy 77.034924 53.795845) + (xy 76.969905 53.849205) + (xy 76.916545 53.914224) + (xy 76.876895 53.988404) + (xy 76.852478 54.068893) + (xy 76.844234 54.1526) + (xy 76.753669 54.1526) + (xy 76.750675 54.142733) + (xy 76.687923 54.025331) + (xy 76.603472 53.922428) + (xy 76.500569 53.837977) + (xy 76.4628 53.817789) + (xy 76.4628 51.886948) + (xy 84.8726 51.886948) + (xy 84.8726 52.049852) + (xy 84.904382 52.209627) + (xy 84.966723 52.360131) + (xy 85.057228 52.495581) + (xy 85.172419 52.610772) + (xy 85.307869 52.701277) + (xy 85.458373 52.763618) + (xy 85.618148 52.7954) + (xy 85.781052 52.7954) + (xy 85.940827 52.763618) + (xy 86.077669 52.706936) + (xy 86.095425 52.765468) + (xy 86.158177 52.882869) + (xy 86.242628 52.985772) + (xy 86.345531 53.070223) + (xy 86.462932 53.132975) + (xy 86.59032 53.171618) + (xy 86.722799 53.184666) + (xy 87.622801 53.184666) + (xy 87.75528 53.171618) + (xy 87.882668 53.132975) + (xy 88.000069 53.070223) + (xy 88.102972 52.985772) + (xy 88.187423 52.882869) + (xy 88.250175 52.765468) + (xy 88.288818 52.63808) + (xy 88.301866 52.505601) + (xy 88.301866 51.805599) + (xy 88.288818 51.67312) + (xy 88.250175 51.545732) + (xy 88.187423 51.428331) + (xy 88.102972 51.325428) + (xy 88.000069 51.240977) + (xy 87.882668 51.178225) + (xy 87.808084 51.1556) + (xy 87.882668 51.132975) + (xy 88.000069 51.070223) + (xy 88.102972 50.985772) + (xy 88.187423 50.882869) + (xy 88.250175 50.765468) + (xy 88.260145 50.7326) + (xy 88.343673 50.7326) + (xy 88.372004 50.73539) + (xy 88.400335 50.7326) + (xy 88.40034 50.7326) + (xy 88.430049 50.729674) + (xy 88.485115 50.724251) + (xy 88.529774 50.710703) + (xy 88.59388 50.691257) + (xy 88.694119 50.637679) + (xy 88.781978 50.565574) + (xy 88.800043 50.543562) + (xy 90.110528 49.233077) + (xy 90.138415 49.244628) + (xy 90.385128 49.293702) + (xy 90.636676 49.293702) + (xy 90.883389 49.244628) + (xy 91.115788 49.148365) + (xy 91.29511 49.028546) + (xy 91.175291 49.207868) + (xy 91.079028 49.440267) + (xy 91.029954 49.68698) + (xy 91.029954 49.938528) + (xy 91.079028 50.185241) + (xy 91.175291 50.41764) + (xy 91.315043 50.626794) + (xy 91.492914 50.804665) + (xy 91.702068 50.944417) + (xy 91.934467 51.04068) + (xy 92.18118 51.089754) + (xy 92.432728 51.089754) + (xy 92.679441 51.04068) + (xy 92.91184 50.944417) + (xy 93.091159 50.8246) + (xy 92.971342 51.003919) + (xy 92.875079 51.236318) + (xy 92.826005 51.483031) + (xy 92.826005 51.734579) + (xy 92.875079 51.981292) + (xy 92.971342 52.213691) + (xy 93.111094 52.422845) + (xy 93.288965 52.600716) + (xy 93.498119 52.740468) + (xy 93.730518 52.836731) + (xy 93.977231 52.885805) + (xy 94.228779 52.885805) + (xy 94.475492 52.836731) + (xy 94.707891 52.740468) + (xy 94.88721 52.620651) + (xy 94.767393 52.79997) + (xy 94.67113 53.032369) + (xy 94.622056 53.279082) + (xy 94.622056 53.53063) + (xy 94.67113 53.777343) + (xy 94.767393 54.009742) + (xy 94.907145 54.218896) + (xy 95.085016 54.396767) + (xy 95.29417 54.536519) + (xy 95.526569 54.632782) + (xy 95.773282 54.681856) + (xy 96.02483 54.681856) + (xy 96.271543 54.632782) + (xy 96.503942 54.536519) + (xy 96.683261 54.416702) + (xy 96.563444 54.596021) + (xy 96.467181 54.82842) + (xy 96.418107 55.075133) + (xy 96.418107 55.326681) + (xy 96.467181 55.573394) + (xy 96.563444 55.805793) + (xy 96.703196 56.014947) + (xy 96.881067 56.192818) + (xy 97.090221 56.33257) + (xy 97.32262 56.428833) + (xy 97.569333 56.477907) + (xy 97.820881 56.477907) + (xy 98.067594 56.428833) + (xy 98.299993 56.33257) + (xy 98.479315 56.212751) + (xy 98.359496 56.392073) + (xy 98.263233 56.624472) + (xy 98.214159 56.871185) + (xy 98.214159 57.122733) + (xy 98.263233 57.369446) + (xy 98.359496 57.601845) + (xy 98.499248 57.810999) + (xy 98.677119 57.98887) + (xy 98.886273 58.128622) + (xy 99.118672 58.224885) + (xy 99.365385 58.273959) + (xy 99.616933 58.273959) + (xy 99.863646 58.224885) + (xy 100.096045 58.128622) + (xy 100.305199 57.98887) + (xy 100.48307 57.810999) + (xy 100.622822 57.601845) + (xy 100.719085 57.369446) + (xy 100.768159 57.122733) + (xy 100.768159 56.871185) + (xy 100.719085 56.624472) + (xy 100.622822 56.392073) + (xy 100.48307 56.182919) + (xy 100.305199 56.005048) + (xy 100.096045 55.865296) + (xy 99.863646 55.769033) + (xy 99.616933 55.719959) + (xy 99.365385 55.719959) + (xy 99.118672 55.769033) + (xy 98.886273 55.865296) + (xy 98.706951 55.985115) + (xy 98.82677 55.805793) + (xy 98.923033 55.573394) + (xy 98.972107 55.326681) + (xy 98.972107 55.075133) + (xy 98.923033 54.82842) + (xy 98.82677 54.596021) + (xy 98.687018 54.386867) + (xy 98.509147 54.208996) + (xy 98.299993 54.069244) + (xy 98.067594 53.972981) + (xy 97.820881 53.923907) + (xy 97.569333 53.923907) + (xy 97.32262 53.972981) + (xy 97.090221 54.069244) + (xy 96.910902 54.189061) + (xy 97.030719 54.009742) + (xy 97.126982 53.777343) + (xy 97.176056 53.53063) + (xy 97.176056 53.279082) + (xy 97.126982 53.032369) + (xy 97.030719 52.79997) + (xy 96.890967 52.590816) + (xy 96.713096 52.412945) + (xy 96.503942 52.273193) + (xy 96.271543 52.17693) + (xy 96.02483 52.127856) + (xy 95.773282 52.127856) + (xy 95.526569 52.17693) + (xy 95.29417 52.273193) + (xy 95.114851 52.39301) + (xy 95.234668 52.213691) + (xy 95.330931 51.981292) + (xy 95.380005 51.734579) + (xy 95.380005 51.483031) + (xy 95.330931 51.236318) + (xy 95.234668 51.003919) + (xy 95.094916 50.794765) + (xy 94.917045 50.616894) + (xy 94.707891 50.477142) + (xy 94.475492 50.380879) + (xy 94.228779 50.331805) + (xy 93.977231 50.331805) + (xy 93.730518 50.380879) + (xy 93.498119 50.477142) + (xy 93.3188 50.596959) + (xy 93.438617 50.41764) + (xy 93.53488 50.185241) + (xy 93.583954 49.938528) + (xy 93.583954 49.68698) + (xy 93.53488 49.440267) + (xy 93.438617 49.207868) + (xy 93.298865 48.998714) + (xy 93.120994 48.820843) + (xy 92.91184 48.681091) + (xy 92.679441 48.584828) + (xy 92.432728 48.535754) + (xy 92.18118 48.535754) + (xy 91.934467 48.584828) + (xy 91.702068 48.681091) + (xy 91.522746 48.80091) + (xy 91.642565 48.621588) + (xy 91.738828 48.389189) + (xy 91.787902 48.142476) + (xy 91.787902 47.890928) + (xy 91.738828 47.644215) + (xy 91.642565 47.411816) + (xy 91.502813 47.202662) + (xy 91.324942 47.024791) + (xy 91.115788 46.885039) + (xy 90.883389 46.788776) + (xy 90.636676 46.739702) + (xy 90.385128 46.739702) + (xy 90.138415 46.788776) + (xy 89.906016 46.885039) + (xy 89.696862 47.024791) + (xy 89.624191 47.097462) + (xy 89.558463 47.031733) + (xy 89.761318 46.952525) + (xy 89.883992 46.734307) + (xy 89.961736 46.496349) + (xy 89.991564 46.247796) + (xy 89.972328 45.9982) + (xy 89.904768 45.757153) + (xy 89.79148 45.533917) + (xy 89.761317 45.488778) + (xy 89.558446 45.409583) + (xy 88.747378 46.220651) + (xy 88.76152 46.234793) + (xy 88.728993 46.26732) + (xy 88.714851 46.253178) + (xy 87.903783 47.064246) + (xy 87.982978 47.267117) + (xy 88.028117 47.29728) + (xy 88.251353 47.410568) + (xy 88.4924 47.478128) + (xy 88.741996 47.497364) + (xy 88.990549 47.467536) + (xy 89.228507 47.389792) + (xy 89.446725 47.267118) + (xy 89.525933 47.064263) + (xy 89.591662 47.129991) + (xy 89.518991 47.202662) + (xy 89.379239 47.411816) + (xy 89.282976 47.644215) + (xy 89.233902 47.890928) + (xy 89.233902 48.142476) + (xy 89.282976 48.389189) + (xy 89.294527 48.417076) + (xy 88.22081 49.490793) + (xy 88.187423 49.428331) + (xy 88.102972 49.325428) + (xy 88.000069 49.240977) + (xy 87.882668 49.178225) + (xy 87.75528 49.139582) + (xy 87.622801 49.126534) + (xy 86.722799 49.126534) + (xy 86.59032 49.139582) + (xy 86.462932 49.178225) + (xy 86.345531 49.240977) + (xy 86.242628 49.325428) + (xy 86.158177 49.428331) + (xy 86.095425 49.545732) + (xy 86.056782 49.67312) + (xy 86.043734 49.805599) + (xy 86.043734 50.505601) + (xy 86.056782 50.63808) + (xy 86.095425 50.765468) + (xy 86.158177 50.882869) + (xy 86.242628 50.985772) + (xy 86.345531 51.070223) + (xy 86.462932 51.132975) + (xy 86.537516 51.1556) + (xy 86.462932 51.178225) + (xy 86.345531 51.240977) + (xy 86.242628 51.325428) + (xy 86.235214 51.334461) + (xy 86.226781 51.326028) + (xy 86.091331 51.235523) + (xy 85.940827 51.173182) + (xy 85.781052 51.1414) + (xy 85.618148 51.1414) + (xy 85.458373 51.173182) + (xy 85.307869 51.235523) + (xy 85.172419 51.326028) + (xy 85.057228 51.441219) + (xy 84.966723 51.576669) + (xy 84.904382 51.727173) + (xy 84.8726 51.886948) + (xy 76.4628 51.886948) + (xy 76.4628 46.304252) + (xy 76.466075 46.271) + (xy 76.453004 46.138285) + (xy 76.414292 46.01067) + (xy 76.351428 45.893059) + (xy 76.288024 45.815801) + (xy 76.288018 45.815795) + (xy 76.266826 45.789973) + (xy 76.241006 45.768783) + (xy 75.573823 45.1016) + (xy 85.786928 45.1016) + (xy 86.615405 45.930077) + (xy 86.680424 45.983437) + (xy 86.754604 46.023087) + (xy 86.835093 46.047504) + (xy 86.9188 46.055748) + (xy 87.002507 46.047504) + (xy 87.082996 46.023087) + (xy 87.157176 45.983437) + (xy 87.222195 45.930077) + (xy 87.806971 45.345301) + (xy 87.871239 45.409569) + (xy 87.668384 45.488777) + (xy 87.54571 45.706995) + (xy 87.467966 45.944953) + (xy 87.438138 46.193506) + (xy 87.457374 46.443102) + (xy 87.524934 46.684149) + (xy 87.638222 46.907385) + (xy 87.668385 46.952524) + (xy 87.871256 47.031719) + (xy 88.682324 46.220651) + (xy 88.668182 46.206509) + (xy 88.700709 46.173982) + (xy 88.714851 46.188124) + (xy 89.525919 45.377056) + (xy 89.446724 45.174185) + (xy 89.401585 45.144022) + (xy 89.178349 45.030734) + (xy 88.937302 44.963174) + (xy 88.687706 44.943938) + (xy 88.439153 44.973766) + (xy 88.201195 45.05151) + (xy 87.982977 45.174184) + (xy 87.903769 45.377039) + (xy 87.839501 45.312771) + (xy 88.424277 44.727995) + (xy 88.477637 44.662976) + (xy 88.517287 44.588796) + (xy 88.541704 44.508307) + (xy 88.549948 44.4246) + (xy 88.541704 44.340893) + (xy 88.517287 44.260404) + (xy 88.477637 44.186224) + (xy 88.424277 44.121205) + (xy 87.379503 43.076431) + (xy 87.638295 43.282283) + (xy 90.725181 45.937424) + (xy 93.707877 48.709117) + (xy 96.581969 51.593258) + (xy 99.343237 54.585616) + (xy 101.9886 57.682939) + (xy 103.325107 59.351172) + (xy 64.638216 89.576685) + (xy 64.303286 89.155621) + (xy 64.298204 89.149565) + (xy 64.293251 89.143448) + (xy 62.372186 86.89417) + (xy 62.356352 86.876584) + (xy 62.356333 86.876565) + (xy 60.320222 84.730952) + (xy 60.320203 84.730931) + (xy 60.30347 84.714198) + (xy 58.157835 82.678067) + (xy 58.157816 82.678048) + (xy 58.149386 82.670458) + (xy 58.14023 82.662213) + (xy 58.140207 82.662195) + (xy 57.239226 81.892683) + (xy 60.9381 81.892683) + (xy 60.948169 81.97619) + (xy 60.974335 82.056128) + (xy 61.015594 82.129425) + (xy 62.048032 83.603899) + (xy 62.102797 83.667739) + (xy 62.168965 83.719668) + (xy 62.243992 83.75769) + (xy 62.324996 83.780345) + (xy 62.408862 83.786761) + (xy 62.492369 83.776692) + (xy 62.572307 83.750526) + (xy 62.645604 83.709267) + (xy 63.973323 82.779588) + (xy 71.516184 82.769813) + (xy 71.571704 82.771565) + (xy 71.615651 82.764255) + (xy 71.659979 82.759831) + (xy 71.681288 82.753337) + (xy 71.703254 82.749683) + (xy 71.744924 82.733943) + (xy 71.787543 82.720954) + (xy 71.807171 82.71043) + (xy 71.828008 82.702559) + (xy 71.865813 82.678988) + (xy 71.905073 82.657937) + (xy 71.947967 82.622641) + (xy 72.910567 81.88218) + (xy 73.022994 82.02608) + (xy 73.081026 82.086966) + (xy 73.149821 82.135361) + (xy 73.226735 82.169405) + (xy 73.308813 82.187789) + (xy 73.3929 82.189807) + (xy 73.475766 82.175382) + (xy 73.554225 82.145068) + (xy 73.625262 82.10003) + (xy 74.96488 81.053406) + (xy 75.025766 80.995374) + (xy 75.074161 80.926579) + (xy 75.108205 80.849665) + (xy 75.126589 80.767587) + (xy 75.128607 80.6835) + (xy 75.114182 80.600634) + (xy 75.083868 80.522175) + (xy 75.03883 80.451138) + (xy 74.529679 79.799455) + (xy 74.601301 79.743498) + (xy 74.655196 79.954494) + (xy 74.856837 80.102847) + (xy 75.083547 80.209012) + (xy 75.326612 80.268909) + (xy 75.576692 80.280234) + (xy 75.824176 80.242554) + (xy 76.059554 80.157316) + (xy 76.108033 80.132879) + (xy 76.211361 79.941172) + (xy 75.505183 79.037304) + (xy 75.489423 79.049617) + (xy 75.461102 79.01337) + (xy 75.476863 79.001056) + (xy 74.770684 78.097189) + (xy 74.559674 78.15107) + (xy 74.524234 78.192197) + (xy 74.384585 78.399963) + (xy 74.288153 78.630979) + (xy 74.238642 78.876371) + (xy 74.237957 79.126706) + (xy 74.286122 79.372365) + (xy 74.381287 79.603906) + (xy 74.572978 79.707246) + (xy 74.501356 79.763203) + (xy 73.992206 79.11152) + (xy 73.934174 79.050634) + (xy 73.865379 79.002239) + (xy 73.788465 78.968195) + (xy 73.706387 78.949811) + (xy 73.6223 78.947793) + (xy 73.539434 78.962218) + (xy 73.460975 78.992532) + (xy 73.396095 79.033666) + (xy 73.508654 76.557385) + (xy 73.772818 76.3666) + (xy 73.843052 76.3666) + (xy 74.002827 76.334818) + (xy 74.153331 76.272477) + (xy 74.288781 76.181972) + (xy 74.403972 76.066781) + (xy 74.494477 75.931331) + (xy 74.556818 75.780827) + (xy 74.5886 75.621052) + (xy 74.5886 75.458148) + (xy 74.556818 75.298373) + (xy 74.494477 75.147869) + (xy 74.403972 75.012419) + (xy 74.288781 74.897228) + (xy 74.153331 74.806723) + (xy 74.002827 74.744382) + (xy 73.843052 74.7126) + (xy 73.680148 74.7126) + (xy 73.520373 74.744382) + (xy 73.369869 74.806723) + (xy 73.234419 74.897228) + (xy 73.119228 75.012419) + (xy 73.028723 75.147869) + (xy 72.977937 75.270477) + (xy 72.500361 75.615394) + (xy 72.495333 75.617794) + (xy 72.446363 75.654392) + (xy 72.423867 75.670639) + (xy 72.419716 75.674306) + (xy 72.388512 75.697627) + (xy 72.369864 75.718354) + (xy 72.34897 75.736815) + (xy 72.325375 75.767802) + (xy 72.299317 75.796765) + (xy 72.285069 75.820736) + (xy 72.26818 75.842916) + (xy 72.251081 75.877917) + (xy 72.231178 75.911401) + (xy 72.221882 75.937685) + (xy 72.209642 75.962739) + (xy 72.1997 76.0004) + (xy 72.186711 76.037126) + (xy 72.182721 76.064722) + (xy 72.175605 76.091679) + (xy 72.173201 76.130562) + (xy 72.172409 76.136042) + (xy 72.171149 76.163762) + (xy 72.167377 76.22478) + (xy 72.168125 76.2303) + (xy 72.021016 79.466682) + (xy 72.018686 79.477677) + (xy 72.017993 79.533192) + (xy 72.016989 79.555276) + (xy 72.017578 79.566429) + (xy 72.017021 79.611022) + (xy 72.021086 79.632879) + (xy 72.022258 79.655081) + (xy 72.033252 79.698298) + (xy 72.041404 79.742132) + (xy 72.049655 79.762777) + (xy 72.055136 79.784323) + (xy 72.074344 79.824553) + (xy 72.090895 79.865966) + (xy 72.103018 79.884609) + (xy 72.112595 79.904667) + (xy 72.139285 79.94038) + (xy 72.14538 79.949753) + (xy 72.159202 79.96703) + (xy 72.174346 79.987294) + (xy 72.05032 80.084194) + (xy 71.989434 80.142226) + (xy 71.941039 80.211021) + (xy 71.906995 80.287935) + (xy 71.888611 80.370013) + (xy 71.886593 80.4541) + (xy 71.901018 80.536966) + (xy 71.931332 80.615425) + (xy 71.97637 80.686462) + (xy 72.076939 80.815184) + (xy 71.29575 81.416099) + (xy 63.767928 81.425854) + (xy 63.193008 80.604783) + (xy 63.138243 80.540943) + (xy 63.072075 80.489014) + (xy 62.997048 80.450992) + (xy 62.916044 80.428337) + (xy 62.832178 80.421921) + (xy 62.748671 80.43199) + (xy 62.668733 80.458156) + (xy 62.595436 80.499415) + (xy 61.120962 81.531853) + (xy 61.057122 81.586618) + (xy 61.005193 81.652786) + (xy 60.967171 81.727813) + (xy 60.944516 81.808817) + (xy 60.9381 81.892683) + (xy 57.239226 81.892683) + (xy 57.197622 81.85715) + (xy 59.778981 79.105761) + (xy 65.38928 79.105761) + (xy 65.38928 79.367157) + (xy 65.440276 79.623531) + (xy 65.540308 79.865029) + (xy 65.685532 80.082372) + (xy 65.870367 80.267207) + (xy 66.08771 80.412431) + (xy 66.329208 80.512463) + (xy 66.585582 80.563459) + (xy 66.846978 80.563459) + (xy 67.103352 80.512463) + (xy 67.34485 80.412431) + (xy 67.562193 80.267207) + (xy 67.747028 80.082372) + (xy 67.892252 79.865029) + (xy 67.992284 79.623531) + (xy 68.04328 79.367157) + (xy 68.04328 79.105761) + (xy 67.992284 78.849387) + (xy 67.892252 78.607889) + (xy 67.747028 78.390546) + (xy 67.562193 78.205711) + (xy 67.34485 78.060487) + (xy 67.103352 77.960455) + (xy 66.846978 77.909459) + (xy 66.585582 77.909459) + (xy 66.329208 77.960455) + (xy 66.08771 78.060487) + (xy 65.870367 78.205711) + (xy 65.685532 78.390546) + (xy 65.540308 78.607889) + (xy 65.440276 78.849387) + (xy 65.38928 79.105761) + (xy 59.778981 79.105761) + (xy 63.170131 75.491243) + (xy 63.182057 75.481313) + (xy 67.371152 72.788324) + (xy 67.395436 72.768024) + (xy 67.438229 72.722051) + (xy 67.453324 72.702253) + (xy 67.464266 72.67989) + (xy 67.468325 72.666925) + (xy 67.483856 72.606068) + (xy 67.4878 72.574664) + (xy 67.4878 68.8976) + (xy 69.541734 68.8976) + (xy 69.541734 70.4976) + (xy 69.549978 70.581307) + (xy 69.574395 70.661796) + (xy 69.614045 70.735976) + (xy 69.667405 70.800995) + (xy 69.732424 70.854355) + (xy 69.806604 70.894005) + (xy 69.887093 70.918422) + (xy 69.9708 70.926666) + (xy 72.3708 70.926666) + (xy 72.454507 70.918422) + (xy 72.534996 70.894005) + (xy 72.609176 70.854355) + (xy 72.674195 70.800995) + (xy 72.727555 70.735976) + (xy 72.767205 70.661796) + (xy 72.791622 70.581307) + (xy 72.799866 70.4976) + (xy 72.799866 68.8976) + (xy 72.791622 68.813893) + (xy 72.767205 68.733404) + (xy 72.727555 68.659224) + (xy 72.674195 68.594205) + (xy 72.609176 68.540845) + (xy 72.534996 68.501195) + (xy 72.454507 68.476778) + (xy 72.3708 68.468534) + (xy 69.9708 68.468534) + (xy 69.887093 68.476778) + (xy 69.806604 68.501195) + (xy 69.732424 68.540845) + (xy 69.667405 68.594205) + (xy 69.614045 68.659224) + (xy 69.574395 68.733404) + (xy 69.549978 68.813893) + (xy 69.541734 68.8976) + (xy 67.4878 68.8976) + (xy 67.4878 67.372228) + (xy 69.562718 67.372228) + (xy 69.56289 67.374416) + (xy 69.628398 67.605902) + (xy 69.737808 67.82016) + (xy 69.886916 68.008956) + (xy 70.069991 68.165035) + (xy 70.279998 68.282398) + (xy 70.508866 68.356536) + (xy 70.7478 68.3846) + (xy 71.1478 68.3846) + (xy 71.1478 67.1806) + (xy 71.1938 67.1806) + (xy 71.1938 68.3846) + (xy 71.5938 68.3846) + (xy 71.832734 68.356536) + (xy 72.061602 68.282398) + (xy 72.271609 68.165035) + (xy 72.454684 68.008956) + (xy 72.603792 67.82016) + (xy 72.713202 67.605902) + (xy 72.77871 67.374416) + (xy 72.778882 67.372228) + (xy 72.690814 67.1806) + (xy 71.1938 67.1806) + (xy 71.1478 67.1806) + (xy 69.650786 67.1806) + (xy 69.562718 67.372228) + (xy 67.4878 67.372228) + (xy 67.4878 66.942972) + (xy 69.562718 66.942972) + (xy 69.650786 67.1346) + (xy 71.1478 67.1346) + (xy 71.1478 65.9306) + (xy 71.1938 65.9306) + (xy 71.1938 67.1346) + (xy 72.690814 67.1346) + (xy 72.778882 66.942972) + (xy 72.77871 66.940784) + (xy 72.713202 66.709298) + (xy 72.603792 66.49504) + (xy 72.454684 66.306244) + (xy 72.271609 66.150165) + (xy 72.061602 66.032802) + (xy 71.832734 65.958664) + (xy 71.5938 65.9306) + (xy 71.1938 65.9306) + (xy 71.1478 65.9306) + (xy 70.7478 65.9306) + (xy 70.508866 65.958664) + (xy 70.279998 66.032802) + (xy 70.069991 66.150165) + (xy 69.886916 66.306244) + (xy 69.737808 66.49504) + (xy 69.628398 66.709298) + (xy 69.56289 66.940784) + (xy 69.562718 66.942972) + (xy 67.4878 66.942972) + (xy 67.4878 64.6176) + (xy 69.537864 64.6176) + (xy 69.561555 64.858134) + (xy 69.631716 65.089424) + (xy 69.745651 65.302583) + (xy 69.898983 65.489417) + (xy 70.085817 65.642749) + (xy 70.298976 65.756684) + (xy 70.530266 65.826845) + (xy 70.710532 65.8446) + (xy 71.631068 65.8446) + (xy 71.811334 65.826845) + (xy 72.042624 65.756684) + (xy 72.255783 65.642749) + (xy 72.442617 65.489417) + (xy 72.595949 65.302583) + (xy 72.709884 65.089424) + (xy 72.780045 64.858134) + (xy 72.803736 64.6176) + (xy 72.780045 64.377066) + (xy 72.709884 64.145776) + (xy 72.595949 63.932617) + (xy 72.442617 63.745783) + (xy 72.255783 63.592451) + (xy 72.042624 63.478516) + (xy 71.811334 63.408355) + (xy 71.631068 63.3906) + (xy 70.710532 63.3906) + (xy 70.530266 63.408355) + (xy 70.298976 63.478516) + (xy 70.085817 63.592451) + (xy 69.898983 63.745783) + (xy 69.745651 63.932617) + (xy 69.631716 64.145776) + (xy 69.561555 64.377066) + (xy 69.537864 64.6176) + (xy 67.4878 64.6176) + (xy 67.4878 59.789705) + (xy 67.48536 59.764929) + (xy 67.479316 59.744066) + (xy 67.446515 59.658887) + (xy 67.435334 59.636643) + (xy 67.422198 59.619346) + (xy 63.185467 54.93402) + (xy 63.16963 54.893036) + (xy 63.161345 51.3716) + (xy 65.223734 51.3716) + (xy 65.223734 52.9716) + (xy 65.231978 53.055307) + (xy 65.256395 53.135796) + (xy 65.296045 53.209976) + (xy 65.349405 53.274995) + (xy 65.414424 53.328355) + (xy 65.488604 53.368005) + (xy 65.569093 53.392422) + (xy 65.6528 53.400666) + (xy 68.0528 53.400666) + (xy 68.136507 53.392422) + (xy 68.216996 53.368005) + (xy 68.291176 53.328355) + (xy 68.356195 53.274995) + (xy 68.409555 53.209976) + (xy 68.449205 53.135796) + (xy 68.473622 53.055307) + (xy 68.481866 52.9716) + (xy 68.481866 51.3716) + (xy 68.473622 51.287893) + (xy 68.449205 51.207404) + (xy 68.409555 51.133224) + (xy 68.356195 51.068205) + (xy 68.291176 51.014845) + (xy 68.216996 50.975195) + (xy 68.136507 50.950778) + (xy 68.0528 50.942534) + (xy 65.6528 50.942534) + (xy 65.569093 50.950778) + (xy 65.488604 50.975195) + (xy 65.414424 51.014845) + (xy 65.349405 51.068205) + (xy 65.296045 51.133224) + (xy 65.256395 51.207404) + (xy 65.231978 51.287893) + (xy 65.223734 51.3716) + (xy 63.161345 51.3716) + (xy 63.157756 49.846228) + (xy 65.244718 49.846228) + (xy 65.24489 49.848416) + (xy 65.310398 50.079902) + (xy 65.419808 50.29416) + (xy 65.568916 50.482956) + (xy 65.751991 50.639035) + (xy 65.961998 50.756398) + (xy 66.190866 50.830536) + (xy 66.4298 50.8586) + (xy 66.8298 50.8586) + (xy 66.8298 49.6546) + (xy 66.8758 49.6546) + (xy 66.8758 50.8586) + (xy 67.2758 50.8586) + (xy 67.514734 50.830536) + (xy 67.743602 50.756398) + (xy 67.953609 50.639035) + (xy 68.136684 50.482956) + (xy 68.285792 50.29416) + (xy 68.395202 50.079902) + (xy 68.46071 49.848416) + (xy 68.460882 49.846228) + (xy 68.372814 49.6546) + (xy 66.8758 49.6546) + (xy 66.8298 49.6546) + (xy 65.332786 49.6546) + (xy 65.244718 49.846228) + (xy 63.157756 49.846228) + (xy 63.156746 49.416972) + (xy 65.244718 49.416972) + (xy 65.332786 49.6086) + (xy 66.8298 49.6086) + (xy 66.8298 48.4046) + (xy 66.8758 48.4046) + (xy 66.8758 49.6086) + (xy 68.372814 49.6086) + (xy 68.460882 49.416972) + (xy 68.46071 49.414784) + (xy 68.395202 49.183298) + (xy 68.285792 48.96904) + (xy 68.136684 48.780244) + (xy 67.953609 48.624165) + (xy 67.743602 48.506802) + (xy 67.514734 48.432664) + (xy 67.2758 48.4046) + (xy 66.8758 48.4046) + (xy 66.8298 48.4046) + (xy 66.4298 48.4046) + (xy 66.190866 48.432664) + (xy 65.961998 48.506802) + (xy 65.751991 48.624165) + (xy 65.568916 48.780244) + (xy 65.419808 48.96904) + (xy 65.310398 49.183298) + (xy 65.24489 49.414784) + (xy 65.244718 49.416972) + (xy 63.156746 49.416972) + (xy 63.151274 47.0916) + (xy 65.219864 47.0916) + (xy 65.243555 47.332134) + (xy 65.313716 47.563424) + (xy 65.427651 47.776583) + (xy 65.580983 47.963417) + (xy 65.767817 48.116749) + (xy 65.980976 48.230684) + (xy 66.212266 48.300845) + (xy 66.392532 48.3186) + (xy 67.313068 48.3186) + (xy 67.493334 48.300845) + (xy 67.724624 48.230684) + (xy 67.937783 48.116749) + (xy 68.124617 47.963417) + (xy 68.277949 47.776583) + (xy 68.391884 47.563424) + (xy 68.462045 47.332134) + (xy 68.485736 47.0916) + (xy 68.462045 46.851066) + (xy 68.391884 46.619776) + (xy 68.277949 46.406617) + (xy 68.124617 46.219783) + (xy 67.937783 46.066451) + (xy 67.724624 45.952516) + (xy 67.493334 45.882355) + (xy 67.313068 45.8646) + (xy 66.392532 45.8646) + (xy 66.212266 45.882355) + (xy 65.980976 45.952516) + (xy 65.767817 46.066451) + (xy 65.580983 46.219783) + (xy 65.427651 46.406617) + (xy 65.313716 46.619776) + (xy 65.243555 46.851066) + (xy 65.219864 47.0916) + (xy 63.151274 47.0916) + (xy 63.144701 44.298036) + (xy 63.140263 44.265057) + (xy 63.122975 44.201386) + (xy 63.114128 44.178114) + (xy 63.100911 44.157016) + (xy 63.089744 44.144392) + (xy 63.042848 44.097985) + (xy 63.02352 44.082292) + (xy 63.001502 44.070671) + (xy 62.985507 44.065352) + (xy 62.921658 44.048733) + (xy 62.888636 44.044642) + (xy 56.817161 44.094004) + (xy 56.792405 44.096646) + (xy 56.771358 44.102951) + (xy 56.686078 44.136785) + (xy 56.663948 44.14819) + (xy 56.646601 44.161672) + (xy 55.00962 45.678286) + (xy 54.968007 45.6946) + (xy 39.89485 45.6946) + (xy 39.881661 45.691064) + (xy 39.878137 45.67787) + (xy 39.887445 35.9036) + (xy 43.095734 35.9036) + (xy 43.103978 35.987307) + (xy 43.128395 36.067796) + (xy 43.168045 36.141976) + (xy 43.221405 36.206995) + (xy 43.286424 36.260355) + (xy 43.360604 36.300005) + (xy 43.441093 36.324422) + (xy 43.5248 36.332666) + (xy 44.24505 36.3306) + (xy 44.3518 36.22385) + (xy 44.3518 35.1766) + (xy 44.3978 35.1766) + (xy 44.3978 36.22385) + (xy 44.50455 36.3306) + (xy 45.2248 36.332666) + (xy 45.308507 36.324422) + (xy 45.388996 36.300005) + (xy 45.463176 36.260355) + (xy 45.528195 36.206995) + (xy 45.581555 36.141976) + (xy 45.621205 36.067796) + (xy 45.645622 35.987307) + (xy 45.653866 35.9036) + (xy 45.6518 35.28335) + (xy 45.54505 35.1766) + (xy 44.3978 35.1766) + (xy 44.3518 35.1766) + (xy 43.20455 35.1766) + (xy 43.0978 35.28335) + (xy 43.095734 35.9036) + (xy 39.887445 35.9036) + (xy 39.888873 34.4036) + (xy 43.095734 34.4036) + (xy 43.0978 35.02385) + (xy 43.20455 35.1306) + (xy 44.3518 35.1306) + (xy 44.3518 34.08335) + (xy 44.3978 34.08335) + (xy 44.3978 35.1306) + (xy 45.54505 35.1306) + (xy 45.6518 35.02385) + (xy 45.653866 34.4036) + (xy 45.645622 34.319893) + (xy 45.621205 34.239404) + (xy 45.597792 34.1956) + (xy 48.934734 34.1956) + (xy 48.942978 34.279307) + (xy 48.967395 34.359796) + (xy 49.007045 34.433976) + (xy 49.060405 34.498995) + (xy 49.125424 34.552355) + (xy 49.199604 34.592005) + (xy 49.280093 34.616422) + (xy 49.3638 34.624666) + (xy 49.95905 34.6226) + (xy 50.0658 34.51585) + (xy 50.0658 33.6311) + (xy 50.1118 33.6311) + (xy 50.1118 34.51585) + (xy 50.21855 34.6226) + (xy 50.8138 34.624666) + (xy 50.897507 34.616422) + (xy 50.977996 34.592005) + (xy 51.052176 34.552355) + (xy 51.117195 34.498995) + (xy 51.170555 34.433976) + (xy 51.210205 34.359796) + (xy 51.234622 34.279307) + (xy 51.234837 34.277125) + (xy 51.253393 34.338294) + (xy 51.293043 34.412474) + (xy 51.346403 34.477493) + (xy 51.411422 34.530853) + (xy 51.485602 34.570503) + (xy 51.566091 34.59492) + (xy 51.649798 34.603164) + (xy 52.245048 34.601098) + (xy 52.351798 34.494348) + (xy 52.351798 33.609598) + (xy 52.397798 33.609598) + (xy 52.397798 34.494348) + (xy 52.504548 34.601098) + (xy 53.099798 34.603164) + (xy 53.183505 34.59492) + (xy 53.263994 34.570503) + (xy 53.338174 34.530853) + (xy 53.403193 34.477493) + (xy 53.456553 34.412474) + (xy 53.496203 34.338294) + (xy 53.52062 34.257805) + (xy 53.528864 34.174098) + (xy 53.526798 33.716348) + (xy 53.420048 33.609598) + (xy 52.397798 33.609598) + (xy 52.351798 33.609598) + (xy 51.329548 33.609598) + (xy 51.222798 33.716348) + (xy 51.222782 33.719832) + (xy 51.13405 33.6311) + (xy 50.1118 33.6311) + (xy 50.0658 33.6311) + (xy 49.04355 33.6311) + (xy 48.9368 33.73785) + (xy 48.934734 34.1956) + (xy 45.597792 34.1956) + (xy 45.581555 34.165224) + (xy 45.528195 34.100205) + (xy 45.463176 34.046845) + (xy 45.388996 34.007195) + (xy 45.308507 33.982778) + (xy 45.2248 33.974534) + (xy 44.50455 33.9766) + (xy 44.3978 34.08335) + (xy 44.3518 34.08335) + (xy 44.24505 33.9766) + (xy 43.5248 33.974534) + (xy 43.441093 33.982778) + (xy 43.360604 34.007195) + (xy 43.286424 34.046845) + (xy 43.221405 34.100205) + (xy 43.168045 34.165224) + (xy 43.128395 34.239404) + (xy 43.103978 34.319893) + (xy 43.095734 34.4036) + (xy 39.888873 34.4036) + (xy 39.89019 33.0206) + (xy 48.934734 33.0206) + (xy 48.9368 33.47835) + (xy 49.04355 33.5851) + (xy 50.0658 33.5851) + (xy 50.0658 32.70035) + (xy 50.1118 32.70035) + (xy 50.1118 33.5851) + (xy 51.13405 33.5851) + (xy 51.2408 33.47835) + (xy 51.240816 33.474866) + (xy 51.329548 33.563598) + (xy 52.351798 33.563598) + (xy 52.351798 32.678848) + (xy 52.397798 32.678848) + (xy 52.397798 33.563598) + (xy 53.420048 33.563598) + (xy 53.526798 33.456848) + (xy 53.528864 32.999098) + (xy 53.52062 32.915391) + (xy 53.496203 32.834902) + (xy 53.456553 32.760722) + (xy 53.403193 32.695703) + (xy 53.338174 32.642343) + (xy 53.263994 32.602693) + (xy 53.183505 32.578276) + (xy 53.099798 32.570032) + (xy 52.504548 32.572098) + (xy 52.397798 32.678848) + (xy 52.351798 32.678848) + (xy 52.245048 32.572098) + (xy 51.649798 32.570032) + (xy 51.566091 32.578276) + (xy 51.485602 32.602693) + (xy 51.411422 32.642343) + (xy 51.346403 32.695703) + (xy 51.293043 32.760722) + (xy 51.253393 32.834902) + (xy 51.228976 32.915391) + (xy 51.228761 32.917573) + (xy 51.210205 32.856404) + (xy 51.170555 32.782224) + (xy 51.117195 32.717205) + (xy 51.052176 32.663845) + (xy 50.977996 32.624195) + (xy 50.897507 32.599778) + (xy 50.8138 32.591534) + (xy 50.21855 32.5936) + (xy 50.1118 32.70035) + (xy 50.0658 32.70035) + (xy 49.95905 32.5936) + (xy 49.3638 32.591534) + (xy 49.280093 32.599778) + (xy 49.199604 32.624195) + (xy 49.125424 32.663845) + (xy 49.060405 32.717205) + (xy 49.007045 32.782224) + (xy 48.967395 32.856404) + (xy 48.942978 32.936893) + (xy 48.934734 33.0206) + (xy 39.89019 33.0206) + (xy 39.894519 28.474756) + (xy 51.282171 28.474756) + (xy 51.398083 28.708976) + (xy 51.668336 28.862149) + (xy 51.963278 28.959654) + (xy 52.271576 28.997745) + (xy 52.581381 28.974958) + (xy 52.880788 28.892169) + (xy 53.158291 28.75256) + (xy 53.223517 28.708976) + (xy 53.339429 28.474756) + (xy 52.3108 27.446127) + (xy 51.282171 28.474756) + (xy 39.894519 28.474756) + (xy 39.895568 27.374376) + (xy 50.726655 27.374376) + (xy 50.749442 27.684181) + (xy 50.832231 27.983588) + (xy 50.97184 28.261091) + (xy 51.015424 28.326317) + (xy 51.249644 28.442229) + (xy 52.278273 27.4136) + (xy 52.343327 27.4136) + (xy 53.371956 28.442229) + (xy 53.606176 28.326317) + (xy 53.759349 28.056064) + (xy 53.856854 27.761122) + (xy 53.894945 27.452824) + (xy 53.872158 27.143019) + (xy 53.789369 26.843612) + (xy 53.64976 26.566109) + (xy 53.606176 26.500883) + (xy 53.371956 26.384971) + (xy 52.343327 27.4136) + (xy 52.278273 27.4136) + (xy 51.249644 26.384971) + (xy 51.015424 26.500883) + (xy 50.862251 26.771136) + (xy 50.764746 27.066078) + (xy 50.726655 27.374376) + (xy 39.895568 27.374376) + (xy 39.896541 26.352444) + (xy 51.282171 26.352444) + (xy 52.3108 27.381073) + (xy 53.339429 26.352444) + (xy 53.223517 26.118224) + (xy 52.953264 25.965051) + (xy 52.658322 25.867546) + (xy 52.350024 25.829455) + (xy 52.040219 25.852242) + (xy 51.740812 25.935031) + (xy 51.463309 26.07464) + (xy 51.398083 26.118224) + (xy 51.282171 26.352444) + (xy 39.896541 26.352444) + (xy 39.901803 20.828827) + ) + ) + ) +) diff --git a/kicad/filadry2.kicad_pcb-bak b/kicad/filadry2.kicad_pcb-bak new file mode 100644 index 0000000..ab5a4d1 --- /dev/null +++ b/kicad/filadry2.kicad_pcb-bak @@ -0,0 +1,3667 @@ +(kicad_pcb (version 20171130) (host pcbnew "(5.1.9)-1") + + (general + (thickness 1.6) + (drawings 23) + (tracks 236) + (zones 0) + (modules 44) + (nets 99) + ) + + (page A4) + (layers + (0 F.Cu signal) + (31 B.Cu signal) + (32 B.Adhes user) + (33 F.Adhes user) + (34 B.Paste user) + (35 F.Paste user) + (36 B.SilkS user) + (37 F.SilkS user) + (38 B.Mask user) + (39 F.Mask user) + (40 Dwgs.User user) + (41 Cmts.User user) + (42 Eco1.User user) + (43 Eco2.User user) + (44 Edge.Cuts user) + (45 Margin user) + (46 B.CrtYd user hide) + (47 F.CrtYd user hide) + (48 B.Fab user hide) + (49 F.Fab user hide) + ) + + (setup + (last_trace_width 0.3) + (user_trace_width 0.25) + (user_trace_width 0.3) + (user_trace_width 0.5) + (user_trace_width 0.7) + (user_trace_width 1) + (user_trace_width 1.25) + (user_trace_width 1.5) + (user_trace_width 1.75) + (user_trace_width 1.905) + (user_trace_width 2) + (user_trace_width 2.5) + (trace_clearance 0.2) + (zone_clearance 0.3) + (zone_45_only no) + (trace_min 0.2) + (via_size 0.8) + (via_drill 0.4) + (via_min_size 0.4) + (via_min_drill 0.3) + (user_via 0.6 0.3) + (user_via 0.8 0.4) + (uvia_size 0.3) + (uvia_drill 0.1) + (uvias_allowed no) + (uvia_min_size 0.2) + (uvia_min_drill 0.1) + (edge_width 0.05) + (segment_width 0.2) + (pcb_text_width 0.3) + (pcb_text_size 1.5 1.5) + (mod_edge_width 0.12) + (mod_text_size 1 1) + (mod_text_width 0.15) + (pad_size 1.524 1.524) + (pad_drill 0.762) + (pad_to_mask_clearance 0) + (aux_axis_origin 0 0) + (visible_elements 7FFFFFFF) + (pcbplotparams + (layerselection 0x010fc_ffffffff) + (usegerberextensions false) + (usegerberattributes true) + (usegerberadvancedattributes true) + (creategerberjobfile true) + (excludeedgelayer true) + (linewidth 0.100000) + (plotframeref false) + (viasonmask false) + (mode 1) + (useauxorigin false) + (hpglpennumber 1) + (hpglpenspeed 20) + (hpglpendiameter 15.000000) + (psnegative false) + (psa4output false) + (plotreference true) + (plotvalue true) + (plotinvisibletext false) + (padsonsilk false) + (subtractmaskfromsilk false) + (outputformat 1) + (mirror false) + (drillshape 0) + (scaleselection 1) + (outputdirectory "gerber/")) + ) + + (net 0 "") + (net 1 "Net-(BZ1-Pad2)") + (net 2 +3V3) + (net 3 GND) + (net 4 "Net-(C1-Pad1)") + (net 5 "Net-(C2-Pad1)") + (net 6 NRST) + (net 7 "Net-(J1-Pad4)") + (net 8 "Net-(J1-Pad3)") + (net 9 KEY_DN) + (net 10 KEY_OK) + (net 11 KEY_UP) + (net 12 "Net-(J2-Pad5)") + (net 13 "Net-(J2-Pad4)") + (net 14 "Net-(J2-Pad3)") + (net 15 AC_L) + (net 16 "Net-(J3-Pad1)") + (net 17 "Net-(J5-Pad14)") + (net 18 "Net-(J5-Pad13)") + (net 19 "Net-(J5-Pad12)") + (net 20 "Net-(J5-Pad10)") + (net 21 "Net-(J5-Pad9)") + (net 22 "Net-(J5-Pad8)") + (net 23 "Net-(J5-Pad6)") + (net 24 "Net-(J5-Pad4)") + (net 25 "Net-(J5-Pad2)") + (net 26 "Net-(J5-Pad1)") + (net 27 AC_N) + (net 28 "Net-(Q1-Pad1)") + (net 29 "Net-(Q2-Pad3)") + (net 30 "Net-(Q3-Pad3)") + (net 31 Buzzer) + (net 32 "Net-(R2-Pad1)") + (net 33 BME_SCL) + (net 34 BME_SDA) + (net 35 OLED_SCL) + (net 36 OLED_SDA) + (net 37 Gate_Heater) + (net 38 "Net-(R7-Pad1)") + (net 39 Gate_Fan) + (net 40 "Net-(R8-Pad1)") + (net 41 ZeroCross) + (net 42 "Net-(R10-Pad2)") + (net 43 "Net-(R10-Pad1)") + (net 44 "Net-(R11-Pad2)") + (net 45 "Net-(R11-Pad1)") + (net 46 "Net-(R12-Pad1)") + (net 47 "Net-(R13-Pad1)") + (net 48 SWDIO) + (net 49 SWCLK) + (net 50 "Net-(U1-Pad64)") + (net 51 "Net-(U1-Pad61)") + (net 52 "Net-(U1-Pad60)") + (net 53 "Net-(U1-Pad57)") + (net 54 "Net-(U1-Pad56)") + (net 55 "Net-(U1-Pad55)") + (net 56 "Net-(U1-Pad54)") + (net 57 "Net-(U1-Pad53)") + (net 58 "Net-(U1-Pad51)") + (net 59 "Net-(U1-Pad50)") + (net 60 "Net-(U1-Pad49)") + (net 61 "Net-(U1-Pad48)") + (net 62 "Net-(U1-Pad47)") + (net 63 "Net-(U1-Pad44)") + (net 64 "Net-(U1-Pad43)") + (net 65 "Net-(U1-Pad42)") + (net 66 "Net-(U1-Pad41)") + (net 67 "Net-(U1-Pad40)") + (net 68 "Net-(U1-Pad39)") + (net 69 "Net-(U1-Pad38)") + (net 70 "Net-(U1-Pad37)") + (net 71 "Net-(U1-Pad36)") + (net 72 "Net-(U1-Pad35)") + (net 73 "Net-(U1-Pad34)") + (net 74 "Net-(U1-Pad33)") + (net 75 "Net-(U1-Pad32)") + (net 76 "Net-(U1-Pad26)") + (net 77 "Net-(U1-Pad25)") + (net 78 "Net-(U1-Pad23)") + (net 79 "Net-(U1-Pad22)") + (net 80 "Net-(U1-Pad21)") + (net 81 "Net-(U1-Pad20)") + (net 82 "Net-(U1-Pad19)") + (net 83 "Net-(U1-Pad18)") + (net 84 "Net-(U1-Pad17)") + (net 85 "Net-(U1-Pad16)") + (net 86 "Net-(U1-Pad15)") + (net 87 "Net-(U1-Pad14)") + (net 88 "Net-(U1-Pad13)") + (net 89 "Net-(U1-Pad5)") + (net 90 "Net-(U1-Pad4)") + (net 91 "Net-(U1-Pad3)") + (net 92 "Net-(U1-Pad2)") + (net 93 "Net-(U1-Pad1)") + (net 94 "Net-(U3-Pad3)") + (net 95 "Net-(U3-Pad5)") + (net 96 "Net-(U4-Pad3)") + (net 97 "Net-(U4-Pad5)") + (net 98 "Net-(J4-Pad2)") + + (net_class Default "This is the default net class." + (clearance 0.2) + (trace_width 0.25) + (via_dia 0.8) + (via_drill 0.4) + (uvia_dia 0.3) + (uvia_drill 0.1) + (add_net +3V3) + (add_net AC_L) + (add_net AC_N) + (add_net BME_SCL) + (add_net BME_SDA) + (add_net Buzzer) + (add_net GND) + (add_net Gate_Fan) + (add_net Gate_Heater) + (add_net KEY_DN) + (add_net KEY_OK) + (add_net KEY_UP) + (add_net NRST) + (add_net "Net-(BZ1-Pad2)") + (add_net "Net-(C1-Pad1)") + (add_net "Net-(C2-Pad1)") + (add_net "Net-(J1-Pad3)") + (add_net "Net-(J1-Pad4)") + (add_net "Net-(J2-Pad3)") + (add_net "Net-(J2-Pad4)") + (add_net "Net-(J2-Pad5)") + (add_net "Net-(J3-Pad1)") + (add_net "Net-(J4-Pad2)") + (add_net "Net-(J5-Pad1)") + (add_net "Net-(J5-Pad10)") + (add_net "Net-(J5-Pad12)") + (add_net "Net-(J5-Pad13)") + (add_net "Net-(J5-Pad14)") + (add_net "Net-(J5-Pad2)") + (add_net "Net-(J5-Pad4)") + (add_net "Net-(J5-Pad6)") + (add_net "Net-(J5-Pad8)") + (add_net "Net-(J5-Pad9)") + (add_net "Net-(Q1-Pad1)") + (add_net "Net-(Q2-Pad3)") + (add_net "Net-(Q3-Pad3)") + (add_net "Net-(R10-Pad1)") + (add_net "Net-(R10-Pad2)") + (add_net "Net-(R11-Pad1)") + (add_net "Net-(R11-Pad2)") + (add_net "Net-(R12-Pad1)") + (add_net "Net-(R13-Pad1)") + (add_net "Net-(R2-Pad1)") + (add_net "Net-(R7-Pad1)") + (add_net "Net-(R8-Pad1)") + (add_net "Net-(U1-Pad1)") + (add_net "Net-(U1-Pad13)") + (add_net "Net-(U1-Pad14)") + (add_net "Net-(U1-Pad15)") + (add_net "Net-(U1-Pad16)") + (add_net "Net-(U1-Pad17)") + (add_net "Net-(U1-Pad18)") + (add_net "Net-(U1-Pad19)") + (add_net "Net-(U1-Pad2)") + (add_net "Net-(U1-Pad20)") + (add_net "Net-(U1-Pad21)") + (add_net "Net-(U1-Pad22)") + (add_net "Net-(U1-Pad23)") + (add_net "Net-(U1-Pad25)") + (add_net "Net-(U1-Pad26)") + (add_net "Net-(U1-Pad3)") + (add_net "Net-(U1-Pad32)") + (add_net "Net-(U1-Pad33)") + (add_net "Net-(U1-Pad34)") + (add_net "Net-(U1-Pad35)") + (add_net "Net-(U1-Pad36)") + (add_net "Net-(U1-Pad37)") + (add_net "Net-(U1-Pad38)") + (add_net "Net-(U1-Pad39)") + (add_net "Net-(U1-Pad4)") + (add_net "Net-(U1-Pad40)") + (add_net "Net-(U1-Pad41)") + (add_net "Net-(U1-Pad42)") + (add_net "Net-(U1-Pad43)") + (add_net "Net-(U1-Pad44)") + (add_net "Net-(U1-Pad47)") + (add_net "Net-(U1-Pad48)") + (add_net "Net-(U1-Pad49)") + (add_net "Net-(U1-Pad5)") + (add_net "Net-(U1-Pad50)") + (add_net "Net-(U1-Pad51)") + (add_net "Net-(U1-Pad53)") + (add_net "Net-(U1-Pad54)") + (add_net "Net-(U1-Pad55)") + (add_net "Net-(U1-Pad56)") + (add_net "Net-(U1-Pad57)") + (add_net "Net-(U1-Pad60)") + (add_net "Net-(U1-Pad61)") + (add_net "Net-(U1-Pad64)") + (add_net "Net-(U3-Pad3)") + (add_net "Net-(U3-Pad5)") + (add_net "Net-(U4-Pad3)") + (add_net "Net-(U4-Pad5)") + (add_net OLED_SCL) + (add_net OLED_SDA) + (add_net SWCLK) + (add_net SWDIO) + (add_net ZeroCross) + ) + + (module MountingHole:MountingHole_3.2mm_M3 (layer F.Cu) (tedit 56D1B4CB) (tstamp 61C5BE32) + (at 25.7048 63.0936) + (descr "Mounting Hole 3.2mm, no annular, M3") + (tags "mounting hole 3.2mm no annular m3") + (path /61F02955) + (attr virtual) + (fp_text reference H1 (at -0.0508 0.0508) (layer F.SilkS) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_text value MountingHole (at 0 4.2) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_circle (center 0 0) (end 3.45 0) (layer F.CrtYd) (width 0.05)) + (fp_circle (center 0 0) (end 3.2 0) (layer Cmts.User) (width 0.15)) + (fp_text user %R (at 0.3 0) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (pad 1 np_thru_hole circle (at 0 0) (size 3.2 3.2) (drill 3.2) (layers *.Cu *.Mask)) + ) + + (module Converter_ACDC:Converter_ACDC_HiLink_HLK-PMxx (layer F.Cu) (tedit 61C4D38A) (tstamp 61C57000) + (at 22.9108 32.6136) + (descr "ACDC-Converter, 3W, HiLink, HLK-PMxx, THT, http://www.hlktech.net/product_detail.php?ProId=54") + (tags "ACDC-Converter 3W THT HiLink board mount module") + (path /61C4985C) + (fp_text reference PS1 (at 23.0632 -8.4836 180) (layer F.SilkS) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_text value HLK-PM03 (at 15.79 13.85) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_line (start -2.3 12.5) (end 31.7 12.5) (layer F.Fab) (width 0.1)) + (fp_line (start 31.7 12.5) (end 31.7 -7.5) (layer F.Fab) (width 0.1)) + (fp_line (start -2.3 12.5) (end -2.3 0.99) (layer F.Fab) (width 0.1)) + (fp_line (start -2.3 -7.5) (end 31.7 -7.5) (layer F.Fab) (width 0.1)) + (fp_line (start -1.29 0) (end -2.29 1) (layer F.Fab) (width 0.1)) + (fp_line (start -2.29 -1) (end -1.29 0) (layer F.Fab) (width 0.1)) + (fp_line (start -2.3 -1) (end -2.3 -7.5) (layer F.Fab) (width 0.1)) + (fp_line (start -2.55 12.75) (end 31.95 12.75) (layer F.CrtYd) (width 0.05)) + (fp_line (start 31.95 12.75) (end 31.95 -7.75) (layer F.CrtYd) (width 0.05)) + (fp_line (start 31.95 -7.75) (end -2.55 -7.75) (layer F.CrtYd) (width 0.05)) + (fp_line (start -2.55 -7.75) (end -2.55 12.75) (layer F.CrtYd) (width 0.05)) + (fp_line (start -2.4 -7.6) (end -2.4 12.6) (layer F.SilkS) (width 0.12)) + (fp_line (start -2.4 12.6) (end 31.8 12.6) (layer F.SilkS) (width 0.12)) + (fp_line (start 31.8 12.6) (end 31.8 -7.6) (layer F.SilkS) (width 0.12)) + (fp_line (start 31.8 -7.6) (end -2.4 -7.6) (layer F.SilkS) (width 0.12)) + (fp_line (start -2.79 -1) (end -2.79 1.01) (layer F.SilkS) (width 0.12)) + (fp_text user %R (at 14.68 1.17) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (pad 4 thru_hole circle (at 29.4 10.2) (size 2.3 2.3) (drill 1) (layers *.Cu *.Mask) + (net 2 +3V3)) + (pad 2 thru_hole circle (at 0 5) (size 2.3 2.3) (drill 1) (layers *.Cu *.Mask) + (net 27 AC_N)) + (pad 1 thru_hole rect (at 0 0) (size 2.3 2) (drill 1) (layers *.Cu *.Mask) + (net 15 AC_L)) + (pad 3 thru_hole circle (at 29.4 -5.2) (size 2.3 2.3) (drill 1) (layers *.Cu *.Mask) + (net 3 GND)) + (model ${my_additions}/Hi-Link_HLK_3W.step + (offset (xyz 14.7 -2.5 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module my_additions:OSC-TH_L10.0-W4.5-P5.00 (layer F.Cu) (tedit 604A1333) (tstamp 61C67EF1) + (at 82.134646 67.214675) + (path /61C5FA39) + (fp_text reference Y1 (at 6.511354 0.044525) (layer F.SilkS) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_text value 16MHz (at 0 3.175) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_line (start -3.15 2.248) (end 3.15 2.248) (layer F.SilkS) (width 0.12)) + (fp_line (start -3.15 -2.248) (end 3.15 -2.248) (layer F.SilkS) (width 0.12)) + (fp_arc (start 3.15 0) (end 3.15 2.248) (angle -180) (layer F.SilkS) (width 0.12)) + (fp_arc (start -3.15 0) (end -3.15 -2.248) (angle -180) (layer F.SilkS) (width 0.12)) + (pad 2 thru_hole circle (at 2.45 0) (size 1.6 1.6) (drill 0.7) (layers *.Cu *.Mask) + (net 5 "Net-(C2-Pad1)")) + (pad 1 thru_hole circle (at -2.45 0) (size 1.6 1.6) (drill 0.7) (layers *.Cu *.Mask) + (net 4 "Net-(C1-Pad1)")) + (model ${KISYS3DMOD}/Crystal.3dshapes/Crystal_HC49-4H_Vertical.wrl + (offset (xyz -2.5 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Package_DIP:DIP-6_W7.62mm_LongPads (layer F.Cu) (tedit 5A02E8C5) (tstamp 61C50CD8) + (at 71.1708 69.6976 180) + (descr "6-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), LongPads") + (tags "THT DIP DIL PDIP 2.54mm 7.62mm 300mil LongPads") + (path /61CAE0BC) + (fp_text reference U4 (at 3.81 7.239) (layer F.SilkS) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_text value MOC3023M (at 3.81 7.41) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_line (start 1.635 -1.27) (end 6.985 -1.27) (layer F.Fab) (width 0.1)) + (fp_line (start 6.985 -1.27) (end 6.985 6.35) (layer F.Fab) (width 0.1)) + (fp_line (start 6.985 6.35) (end 0.635 6.35) (layer F.Fab) (width 0.1)) + (fp_line (start 0.635 6.35) (end 0.635 -0.27) (layer F.Fab) (width 0.1)) + (fp_line (start 0.635 -0.27) (end 1.635 -1.27) (layer F.Fab) (width 0.1)) + (fp_line (start 2.81 -1.33) (end 1.56 -1.33) (layer F.SilkS) (width 0.12)) + (fp_line (start 1.56 -1.33) (end 1.56 6.41) (layer F.SilkS) (width 0.12)) + (fp_line (start 1.56 6.41) (end 6.06 6.41) (layer F.SilkS) (width 0.12)) + (fp_line (start 6.06 6.41) (end 6.06 -1.33) (layer F.SilkS) (width 0.12)) + (fp_line (start 6.06 -1.33) (end 4.81 -1.33) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.45 -1.55) (end -1.45 6.6) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.45 6.6) (end 9.1 6.6) (layer F.CrtYd) (width 0.05)) + (fp_line (start 9.1 6.6) (end 9.1 -1.55) (layer F.CrtYd) (width 0.05)) + (fp_line (start 9.1 -1.55) (end -1.45 -1.55) (layer F.CrtYd) (width 0.05)) + (fp_text user %R (at 3.81 2.54) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_arc (start 3.81 -1.33) (end 2.81 -1.33) (angle -180) (layer F.SilkS) (width 0.12)) + (pad 6 thru_hole oval (at 7.62 0 180) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask) + (net 44 "Net-(R11-Pad2)")) + (pad 3 thru_hole oval (at 0 5.08 180) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask) + (net 96 "Net-(U4-Pad3)")) + (pad 5 thru_hole oval (at 7.62 2.54 180) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask) + (net 97 "Net-(U4-Pad5)")) + (pad 2 thru_hole oval (at 0 2.54 180) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask) + (net 3 GND)) + (pad 4 thru_hole oval (at 7.62 5.08 180) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask) + (net 30 "Net-(Q3-Pad3)")) + (pad 1 thru_hole rect (at 0 0 180) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask) + (net 40 "Net-(R8-Pad1)")) + (model ${KISYS3DMOD}/Package_DIP.3dshapes/DIP-6_W7.62mm.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Package_DIP:DIP-6_W7.62mm_LongPads (layer F.Cu) (tedit 5A02E8C5) (tstamp 61C57C8A) + (at 66.8528 52.1716 180) + (descr "6-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), LongPads") + (tags "THT DIP DIL PDIP 2.54mm 7.62mm 300mil LongPads") + (path /61C4BE67) + (fp_text reference U3 (at 3.81 7.112) (layer F.SilkS) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_text value MOC3023M (at 3.81 7.41) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_line (start 1.635 -1.27) (end 6.985 -1.27) (layer F.Fab) (width 0.1)) + (fp_line (start 6.985 -1.27) (end 6.985 6.35) (layer F.Fab) (width 0.1)) + (fp_line (start 6.985 6.35) (end 0.635 6.35) (layer F.Fab) (width 0.1)) + (fp_line (start 0.635 6.35) (end 0.635 -0.27) (layer F.Fab) (width 0.1)) + (fp_line (start 0.635 -0.27) (end 1.635 -1.27) (layer F.Fab) (width 0.1)) + (fp_line (start 2.81 -1.33) (end 1.56 -1.33) (layer F.SilkS) (width 0.12)) + (fp_line (start 1.56 -1.33) (end 1.56 6.41) (layer F.SilkS) (width 0.12)) + (fp_line (start 1.56 6.41) (end 6.06 6.41) (layer F.SilkS) (width 0.12)) + (fp_line (start 6.06 6.41) (end 6.06 -1.33) (layer F.SilkS) (width 0.12)) + (fp_line (start 6.06 -1.33) (end 4.81 -1.33) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.45 -1.55) (end -1.45 6.6) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.45 6.6) (end 9.1 6.6) (layer F.CrtYd) (width 0.05)) + (fp_line (start 9.1 6.6) (end 9.1 -1.55) (layer F.CrtYd) (width 0.05)) + (fp_line (start 9.1 -1.55) (end -1.45 -1.55) (layer F.CrtYd) (width 0.05)) + (fp_text user %R (at 3.81 2.54) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_arc (start 3.81 -1.33) (end 2.81 -1.33) (angle -180) (layer F.SilkS) (width 0.12)) + (pad 6 thru_hole oval (at 7.62 0 180) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask) + (net 42 "Net-(R10-Pad2)")) + (pad 3 thru_hole oval (at 0 5.08 180) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask) + (net 94 "Net-(U3-Pad3)")) + (pad 5 thru_hole oval (at 7.62 2.54 180) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask) + (net 95 "Net-(U3-Pad5)")) + (pad 2 thru_hole oval (at 0 2.54 180) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask) + (net 3 GND)) + (pad 4 thru_hole oval (at 7.62 5.08 180) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask) + (net 29 "Net-(Q2-Pad3)")) + (pad 1 thru_hole rect (at 0 0 180) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask) + (net 38 "Net-(R7-Pad1)")) + (model ${KISYS3DMOD}/Package_DIP.3dshapes/DIP-6_W7.62mm.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module my_additions:OPTO-SMD4 (layer B.Cu) (tedit 6054DF13) (tstamp 61C50CA4) + (at 39.6748 36.4236 90) + (path /61C4ACCA) + (fp_text reference U2 (at 3.2004 0) (layer B.SilkS) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_text value LTV-814 (at -3.2512 0.0508) (layer B.SilkS) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_line (start -2.4 3.25) (end 2.4 3.25) (layer B.SilkS) (width 0.15)) + (fp_line (start -2.4 -3.25) (end 2.4 -3.25) (layer B.SilkS) (width 0.15)) + (fp_line (start 2.39998 3.24866) (end 2.39998 -3.24866) (layer B.SilkS) (width 0.15)) + (fp_line (start -2.39998 3.24866) (end -2.39998 -3.24866) (layer B.SilkS) (width 0.15)) + (fp_line (start -2.39998 -2.64922) (end -1.798 -2.64922) (layer B.SilkS) (width 0.15)) + (fp_line (start -1.798 -2.64922) (end -1.798 -3.24866) (layer B.SilkS) (width 0.15)) + (fp_line (start -2.54 4.445) (end 2.54 4.445) (layer B.CrtYd) (width 0.12)) + (fp_line (start 2.54 4.445) (end 2.54 -4.445) (layer B.CrtYd) (width 0.12)) + (fp_line (start 2.54 -4.445) (end -2.54 -4.445) (layer B.CrtYd) (width 0.12)) + (fp_line (start -2.54 -4.445) (end -2.54 4.445) (layer B.CrtYd) (width 0.12)) + (pad 4 smd rect (at -1.27 4.7 90) (size 1.5 1.7) (layers B.Cu B.Paste B.Mask) + (net 41 ZeroCross)) + (pad 3 smd rect (at 1.27 4.7 90) (size 1.5 1.7) (layers B.Cu B.Paste B.Mask) + (net 3 GND)) + (pad 2 smd rect (at 1.27 -4.7 270) (size 1.5 1.7) (layers B.Cu B.Paste B.Mask) + (net 47 "Net-(R13-Pad1)")) + (pad 1 smd rect (at -1.27 -4.7 270) (size 1.5 1.7) (layers B.Cu B.Paste B.Mask) + (net 46 "Net-(R12-Pad1)")) + (model ${my_additions}/SMD-4.stp + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 -90)) + ) + ) + + (module Package_QFP:LQFP-64_10x10mm_P0.5mm (layer F.Cu) (tedit 5D9F72AF) (tstamp 61C50C92) + (at 77.5208 54.7116 90) + (descr "LQFP, 64 Pin (https://www.analog.com/media/en/technical-documentation/data-sheets/ad7606_7606-6_7606-4.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py") + (tags "LQFP QFP") + (path /61C46D88) + (attr smd) + (fp_text reference U1 (at 3.302 -0.254 180) (layer F.SilkS) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_text value STM32G070RBTx (at 0 7.4 90) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_line (start 4.16 5.11) (end 5.11 5.11) (layer F.SilkS) (width 0.12)) + (fp_line (start 5.11 5.11) (end 5.11 4.16) (layer F.SilkS) (width 0.12)) + (fp_line (start -4.16 5.11) (end -5.11 5.11) (layer F.SilkS) (width 0.12)) + (fp_line (start -5.11 5.11) (end -5.11 4.16) (layer F.SilkS) (width 0.12)) + (fp_line (start 4.16 -5.11) (end 5.11 -5.11) (layer F.SilkS) (width 0.12)) + (fp_line (start 5.11 -5.11) (end 5.11 -4.16) (layer F.SilkS) (width 0.12)) + (fp_line (start -4.16 -5.11) (end -5.11 -5.11) (layer F.SilkS) (width 0.12)) + (fp_line (start -5.11 -5.11) (end -5.11 -4.16) (layer F.SilkS) (width 0.12)) + (fp_line (start -5.11 -4.16) (end -6.45 -4.16) (layer F.SilkS) (width 0.12)) + (fp_line (start -4 -5) (end 5 -5) (layer F.Fab) (width 0.1)) + (fp_line (start 5 -5) (end 5 5) (layer F.Fab) (width 0.1)) + (fp_line (start 5 5) (end -5 5) (layer F.Fab) (width 0.1)) + (fp_line (start -5 5) (end -5 -4) (layer F.Fab) (width 0.1)) + (fp_line (start -5 -4) (end -4 -5) (layer F.Fab) (width 0.1)) + (fp_line (start 0 -6.7) (end -4.15 -6.7) (layer F.CrtYd) (width 0.05)) + (fp_line (start -4.15 -6.7) (end -4.15 -5.25) (layer F.CrtYd) (width 0.05)) + (fp_line (start -4.15 -5.25) (end -5.25 -5.25) (layer F.CrtYd) (width 0.05)) + (fp_line (start -5.25 -5.25) (end -5.25 -4.15) (layer F.CrtYd) (width 0.05)) + (fp_line (start -5.25 -4.15) (end -6.7 -4.15) (layer F.CrtYd) (width 0.05)) + (fp_line (start -6.7 -4.15) (end -6.7 0) (layer F.CrtYd) (width 0.05)) + (fp_line (start 0 -6.7) (end 4.15 -6.7) (layer F.CrtYd) (width 0.05)) + (fp_line (start 4.15 -6.7) (end 4.15 -5.25) (layer F.CrtYd) (width 0.05)) + (fp_line (start 4.15 -5.25) (end 5.25 -5.25) (layer F.CrtYd) (width 0.05)) + (fp_line (start 5.25 -5.25) (end 5.25 -4.15) (layer F.CrtYd) (width 0.05)) + (fp_line (start 5.25 -4.15) (end 6.7 -4.15) (layer F.CrtYd) (width 0.05)) + (fp_line (start 6.7 -4.15) (end 6.7 0) (layer F.CrtYd) (width 0.05)) + (fp_line (start 0 6.7) (end -4.15 6.7) (layer F.CrtYd) (width 0.05)) + (fp_line (start -4.15 6.7) (end -4.15 5.25) (layer F.CrtYd) (width 0.05)) + (fp_line (start -4.15 5.25) (end -5.25 5.25) (layer F.CrtYd) (width 0.05)) + (fp_line (start -5.25 5.25) (end -5.25 4.15) (layer F.CrtYd) (width 0.05)) + (fp_line (start -5.25 4.15) (end -6.7 4.15) (layer F.CrtYd) (width 0.05)) + (fp_line (start -6.7 4.15) (end -6.7 0) (layer F.CrtYd) (width 0.05)) + (fp_line (start 0 6.7) (end 4.15 6.7) (layer F.CrtYd) (width 0.05)) + (fp_line (start 4.15 6.7) (end 4.15 5.25) (layer F.CrtYd) (width 0.05)) + (fp_line (start 4.15 5.25) (end 5.25 5.25) (layer F.CrtYd) (width 0.05)) + (fp_line (start 5.25 5.25) (end 5.25 4.15) (layer F.CrtYd) (width 0.05)) + (fp_line (start 5.25 4.15) (end 6.7 4.15) (layer F.CrtYd) (width 0.05)) + (fp_line (start 6.7 4.15) (end 6.7 0) (layer F.CrtYd) (width 0.05)) + (fp_text user %R (at 0 0 90) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (pad 64 smd roundrect (at -3.75 -5.675 90) (size 0.3 1.55) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25) + (net 50 "Net-(U1-Pad64)")) + (pad 63 smd roundrect (at -3.25 -5.675 90) (size 0.3 1.55) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25) + (net 34 BME_SDA)) + (pad 62 smd roundrect (at -2.75 -5.675 90) (size 0.3 1.55) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25) + (net 33 BME_SCL)) + (pad 61 smd roundrect (at -2.25 -5.675 90) (size 0.3 1.55) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25) + (net 51 "Net-(U1-Pad61)")) + (pad 60 smd roundrect (at -1.75 -5.675 90) (size 0.3 1.55) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25) + (net 52 "Net-(U1-Pad60)")) + (pad 59 smd roundrect (at -1.25 -5.675 90) (size 0.3 1.55) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25) + (net 39 Gate_Fan)) + (pad 58 smd roundrect (at -0.75 -5.675 90) (size 0.3 1.55) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25) + (net 37 Gate_Heater)) + (pad 57 smd roundrect (at -0.25 -5.675 90) (size 0.3 1.55) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25) + (net 53 "Net-(U1-Pad57)")) + (pad 56 smd roundrect (at 0.25 -5.675 90) (size 0.3 1.55) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25) + (net 54 "Net-(U1-Pad56)")) + (pad 55 smd roundrect (at 0.75 -5.675 90) (size 0.3 1.55) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25) + (net 55 "Net-(U1-Pad55)")) + (pad 54 smd roundrect (at 1.25 -5.675 90) (size 0.3 1.55) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25) + (net 56 "Net-(U1-Pad54)")) + (pad 53 smd roundrect (at 1.75 -5.675 90) (size 0.3 1.55) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25) + (net 57 "Net-(U1-Pad53)")) + (pad 52 smd roundrect (at 2.25 -5.675 90) (size 0.3 1.55) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25) + (net 41 ZeroCross)) + (pad 51 smd roundrect (at 2.75 -5.675 90) (size 0.3 1.55) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25) + (net 58 "Net-(U1-Pad51)")) + (pad 50 smd roundrect (at 3.25 -5.675 90) (size 0.3 1.55) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25) + (net 59 "Net-(U1-Pad50)")) + (pad 49 smd roundrect (at 3.75 -5.675 90) (size 0.3 1.55) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25) + (net 60 "Net-(U1-Pad49)")) + (pad 48 smd roundrect (at 5.675 -3.75 90) (size 1.55 0.3) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25) + (net 61 "Net-(U1-Pad48)")) + (pad 47 smd roundrect (at 5.675 -3.25 90) (size 1.55 0.3) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25) + (net 62 "Net-(U1-Pad47)")) + (pad 46 smd roundrect (at 5.675 -2.75 90) (size 1.55 0.3) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25) + (net 49 SWCLK)) + (pad 45 smd roundrect (at 5.675 -2.25 90) (size 1.55 0.3) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25) + (net 48 SWDIO)) + (pad 44 smd roundrect (at 5.675 -1.75 90) (size 1.55 0.3) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25) + (net 63 "Net-(U1-Pad44)")) + (pad 43 smd roundrect (at 5.675 -1.25 90) (size 1.55 0.3) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25) + (net 64 "Net-(U1-Pad43)")) + (pad 42 smd roundrect (at 5.675 -0.75 90) (size 1.55 0.3) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25) + (net 65 "Net-(U1-Pad42)")) + (pad 41 smd roundrect (at 5.675 -0.25 90) (size 1.55 0.3) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25) + (net 66 "Net-(U1-Pad41)")) + (pad 40 smd roundrect (at 5.675 0.25 90) (size 1.55 0.3) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25) + (net 67 "Net-(U1-Pad40)")) + (pad 39 smd roundrect (at 5.675 0.75 90) (size 1.55 0.3) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25) + (net 68 "Net-(U1-Pad39)")) + (pad 38 smd roundrect (at 5.675 1.25 90) (size 1.55 0.3) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25) + (net 69 "Net-(U1-Pad38)")) + (pad 37 smd roundrect (at 5.675 1.75 90) (size 1.55 0.3) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25) + (net 70 "Net-(U1-Pad37)")) + (pad 36 smd roundrect (at 5.675 2.25 90) (size 1.55 0.3) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25) + (net 71 "Net-(U1-Pad36)")) + (pad 35 smd roundrect (at 5.675 2.75 90) (size 1.55 0.3) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25) + (net 72 "Net-(U1-Pad35)")) + (pad 34 smd roundrect (at 5.675 3.25 90) (size 1.55 0.3) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25) + (net 73 "Net-(U1-Pad34)")) + (pad 33 smd roundrect (at 5.675 3.75 90) (size 1.55 0.3) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25) + (net 74 "Net-(U1-Pad33)")) + (pad 32 smd roundrect (at 3.75 5.675 90) (size 0.3 1.55) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25) + (net 75 "Net-(U1-Pad32)")) + (pad 31 smd roundrect (at 3.25 5.675 90) (size 0.3 1.55) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25) + (net 36 OLED_SDA)) + (pad 30 smd roundrect (at 2.75 5.675 90) (size 0.3 1.55) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25) + (net 35 OLED_SCL)) + (pad 29 smd roundrect (at 2.25 5.675 90) (size 0.3 1.55) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25) + (net 11 KEY_UP)) + (pad 28 smd roundrect (at 1.75 5.675 90) (size 0.3 1.55) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25) + (net 10 KEY_OK)) + (pad 27 smd roundrect (at 1.25 5.675 90) (size 0.3 1.55) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25) + (net 9 KEY_DN)) + (pad 26 smd roundrect (at 0.75 5.675 90) (size 0.3 1.55) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25) + (net 76 "Net-(U1-Pad26)")) + (pad 25 smd roundrect (at 0.25 5.675 90) (size 0.3 1.55) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25) + (net 77 "Net-(U1-Pad25)")) + (pad 24 smd roundrect (at -0.25 5.675 90) (size 0.3 1.55) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25) + (net 31 Buzzer)) + (pad 23 smd roundrect (at -0.75 5.675 90) (size 0.3 1.55) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25) + (net 78 "Net-(U1-Pad23)")) + (pad 22 smd roundrect (at -1.25 5.675 90) (size 0.3 1.55) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25) + (net 79 "Net-(U1-Pad22)")) + (pad 21 smd roundrect (at -1.75 5.675 90) (size 0.3 1.55) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25) + (net 80 "Net-(U1-Pad21)")) + (pad 20 smd roundrect (at -2.25 5.675 90) (size 0.3 1.55) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25) + (net 81 "Net-(U1-Pad20)")) + (pad 19 smd roundrect (at -2.75 5.675 90) (size 0.3 1.55) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25) + (net 82 "Net-(U1-Pad19)")) + (pad 18 smd roundrect (at -3.25 5.675 90) (size 0.3 1.55) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25) + (net 83 "Net-(U1-Pad18)")) + (pad 17 smd roundrect (at -3.75 5.675 90) (size 0.3 1.55) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25) + (net 84 "Net-(U1-Pad17)")) + (pad 16 smd roundrect (at -5.675 3.75 90) (size 1.55 0.3) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25) + (net 85 "Net-(U1-Pad16)")) + (pad 15 smd roundrect (at -5.675 3.25 90) (size 1.55 0.3) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25) + (net 86 "Net-(U1-Pad15)")) + (pad 14 smd roundrect (at -5.675 2.75 90) (size 1.55 0.3) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25) + (net 87 "Net-(U1-Pad14)")) + (pad 13 smd roundrect (at -5.675 2.25 90) (size 1.55 0.3) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25) + (net 88 "Net-(U1-Pad13)")) + (pad 12 smd roundrect (at -5.675 1.75 90) (size 1.55 0.3) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25) + (net 6 NRST)) + (pad 11 smd roundrect (at -5.675 1.25 90) (size 1.55 0.3) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25) + (net 32 "Net-(R2-Pad1)")) + (pad 10 smd roundrect (at -5.675 0.75 90) (size 1.55 0.3) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25) + (net 4 "Net-(C1-Pad1)")) + (pad 9 smd roundrect (at -5.675 0.25 90) (size 1.55 0.3) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25) + (net 3 GND)) + (pad 8 smd roundrect (at -5.675 -0.25 90) (size 1.55 0.3) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25) + (net 2 +3V3)) + (pad 7 smd roundrect (at -5.675 -0.75 90) (size 1.55 0.3) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25) + (net 2 +3V3)) + (pad 6 smd roundrect (at -5.675 -1.25 90) (size 1.55 0.3) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25) + (net 2 +3V3)) + (pad 5 smd roundrect (at -5.675 -1.75 90) (size 1.55 0.3) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25) + (net 89 "Net-(U1-Pad5)")) + (pad 4 smd roundrect (at -5.675 -2.25 90) (size 1.55 0.3) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25) + (net 90 "Net-(U1-Pad4)")) + (pad 3 smd roundrect (at -5.675 -2.75 90) (size 1.55 0.3) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25) + (net 91 "Net-(U1-Pad3)")) + (pad 2 smd roundrect (at -5.675 -3.25 90) (size 1.55 0.3) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25) + (net 92 "Net-(U1-Pad2)")) + (pad 1 smd roundrect (at -5.675 -3.75 90) (size 1.55 0.3) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25) + (net 93 "Net-(U1-Pad1)")) + (model ${KISYS3DMOD}/Package_QFP.3dshapes/LQFP-64_10x10mm_P0.5mm.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder (layer F.Cu) (tedit 5F68FEEE) (tstamp 61C50C27) + (at 71.2978 46.2186 90) + (descr "Resistor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") + (tags "resistor handsolder") + (path /61E4A7DA) + (attr smd) + (fp_text reference R20 (at 0 -1.65 90) (layer F.SilkS) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_text value 22 (at 0 1.65 90) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_line (start -1 0.625) (end -1 -0.625) (layer F.Fab) (width 0.1)) + (fp_line (start -1 -0.625) (end 1 -0.625) (layer F.Fab) (width 0.1)) + (fp_line (start 1 -0.625) (end 1 0.625) (layer F.Fab) (width 0.1)) + (fp_line (start 1 0.625) (end -1 0.625) (layer F.Fab) (width 0.1)) + (fp_line (start -0.227064 -0.735) (end 0.227064 -0.735) (layer F.SilkS) (width 0.12)) + (fp_line (start -0.227064 0.735) (end 0.227064 0.735) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.85 0.95) (end -1.85 -0.95) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.85 -0.95) (end 1.85 -0.95) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.85 -0.95) (end 1.85 0.95) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.85 0.95) (end -1.85 0.95) (layer F.CrtYd) (width 0.05)) + (fp_text user %R (at 0 0 90) (layer F.Fab) + (effects (font (size 0.5 0.5) (thickness 0.08))) + ) + (pad 2 smd roundrect (at 1 0 90) (size 1.2 1.4) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.2083325) + (net 19 "Net-(J5-Pad12)")) + (pad 1 smd roundrect (at -1 0 90) (size 1.2 1.4) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.2083325) + (net 6 NRST)) + (model ${KISYS3DMOD}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder (layer F.Cu) (tedit 5F68FEEE) (tstamp 61C50C16) + (at 74.009946 43.755319 90) + (descr "Resistor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") + (tags "resistor handsolder") + (path /61E45925) + (attr smd) + (fp_text reference R19 (at 3.267719 -0.045146 90) (layer F.SilkS) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_text value 22 (at 0 1.65 90) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_line (start -1 0.625) (end -1 -0.625) (layer F.Fab) (width 0.1)) + (fp_line (start -1 -0.625) (end 1 -0.625) (layer F.Fab) (width 0.1)) + (fp_line (start 1 -0.625) (end 1 0.625) (layer F.Fab) (width 0.1)) + (fp_line (start 1 0.625) (end -1 0.625) (layer F.Fab) (width 0.1)) + (fp_line (start -0.227064 -0.735) (end 0.227064 -0.735) (layer F.SilkS) (width 0.12)) + (fp_line (start -0.227064 0.735) (end 0.227064 0.735) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.85 0.95) (end -1.85 -0.95) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.85 -0.95) (end 1.85 -0.95) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.85 -0.95) (end 1.85 0.95) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.85 0.95) (end -1.85 0.95) (layer F.CrtYd) (width 0.05)) + (fp_text user %R (at 0 0 90) (layer F.Fab) + (effects (font (size 0.5 0.5) (thickness 0.08))) + ) + (pad 2 smd roundrect (at 1 0 90) (size 1.2 1.4) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.2083325) + (net 23 "Net-(J5-Pad6)")) + (pad 1 smd roundrect (at -1 0 90) (size 1.2 1.4) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.2083325) + (net 49 SWCLK)) + (model ${KISYS3DMOD}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder (layer F.Cu) (tedit 5F68FEEE) (tstamp 61C6C9B7) + (at 76.295947 43.74584 90) + (descr "Resistor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") + (tags "resistor handsolder") + (path /61E444D0) + (attr smd) + (fp_text reference R18 (at 3.25824 0.081853 90) (layer F.SilkS) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_text value 22 (at 0 1.65 90) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_line (start -1 0.625) (end -1 -0.625) (layer F.Fab) (width 0.1)) + (fp_line (start -1 -0.625) (end 1 -0.625) (layer F.Fab) (width 0.1)) + (fp_line (start 1 -0.625) (end 1 0.625) (layer F.Fab) (width 0.1)) + (fp_line (start 1 0.625) (end -1 0.625) (layer F.Fab) (width 0.1)) + (fp_line (start -0.227064 -0.735) (end 0.227064 -0.735) (layer F.SilkS) (width 0.12)) + (fp_line (start -0.227064 0.735) (end 0.227064 0.735) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.85 0.95) (end -1.85 -0.95) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.85 -0.95) (end 1.85 -0.95) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.85 -0.95) (end 1.85 0.95) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.85 0.95) (end -1.85 0.95) (layer F.CrtYd) (width 0.05)) + (fp_text user %R (at 0 0 90) (layer F.Fab) + (effects (font (size 0.5 0.5) (thickness 0.08))) + ) + (pad 2 smd roundrect (at 1 0 90) (size 1.2 1.4) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.2083325) + (net 24 "Net-(J5-Pad4)")) + (pad 1 smd roundrect (at -1 0 90) (size 1.2 1.4) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.2083325) + (net 48 SWDIO)) + (model ${KISYS3DMOD}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder (layer F.Cu) (tedit 5F68FEEE) (tstamp 61C50BF4) + (at 57.462799 76.913625 60) + (descr "Resistor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") + (tags "resistor handsolder") + (path /61CAE0DF) + (attr smd) + (fp_text reference R17 (at 0 -1.65 60) (layer F.SilkS) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_text value 220 (at 0 1.65 60) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_line (start -1 0.625) (end -1 -0.625) (layer F.Fab) (width 0.1)) + (fp_line (start -1 -0.625) (end 1 -0.625) (layer F.Fab) (width 0.1)) + (fp_line (start 1 -0.625) (end 1 0.625) (layer F.Fab) (width 0.1)) + (fp_line (start 1 0.625) (end -1 0.625) (layer F.Fab) (width 0.1)) + (fp_line (start -0.227064 -0.735) (end 0.227064 -0.735) (layer F.SilkS) (width 0.12)) + (fp_line (start -0.227064 0.735) (end 0.227064 0.735) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.85 0.95) (end -1.85 -0.95) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.85 -0.95) (end 1.85 -0.95) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.85 -0.95) (end 1.85 0.95) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.85 0.95) (end -1.85 0.95) (layer F.CrtYd) (width 0.05)) + (fp_text user %R (at 0 0 60) (layer F.Fab) + (effects (font (size 0.5 0.5) (thickness 0.08))) + ) + (pad 2 smd roundrect (at 1 0 60) (size 1.2 1.4) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.2083325) + (net 45 "Net-(R11-Pad1)")) + (pad 1 smd roundrect (at -1 0 60) (size 1.2 1.4) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.2083325) + (net 98 "Net-(J4-Pad2)")) + (model ${KISYS3DMOD}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder (layer F.Cu) (tedit 5F68FEEE) (tstamp 61C50BE3) + (at 49.4952 49.6824) + (descr "Resistor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") + (tags "resistor handsolder") + (path /61D2EEC6) + (attr smd) + (fp_text reference R16 (at 0 -1.65) (layer F.SilkS) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_text value 220 (at 0 1.65) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_line (start -1 0.625) (end -1 -0.625) (layer F.Fab) (width 0.1)) + (fp_line (start -1 -0.625) (end 1 -0.625) (layer F.Fab) (width 0.1)) + (fp_line (start 1 -0.625) (end 1 0.625) (layer F.Fab) (width 0.1)) + (fp_line (start 1 0.625) (end -1 0.625) (layer F.Fab) (width 0.1)) + (fp_line (start -0.227064 -0.735) (end 0.227064 -0.735) (layer F.SilkS) (width 0.12)) + (fp_line (start -0.227064 0.735) (end 0.227064 0.735) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.85 0.95) (end -1.85 -0.95) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.85 -0.95) (end 1.85 -0.95) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.85 -0.95) (end 1.85 0.95) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.85 0.95) (end -1.85 0.95) (layer F.CrtYd) (width 0.05)) + (fp_text user %R (at 0 0) (layer F.Fab) + (effects (font (size 0.5 0.5) (thickness 0.08))) + ) + (pad 2 smd roundrect (at 1 0) (size 1.2 1.4) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.2083325) + (net 43 "Net-(R10-Pad1)")) + (pad 1 smd roundrect (at -1 0) (size 1.2 1.4) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.2083325) + (net 16 "Net-(J3-Pad1)")) + (model ${KISYS3DMOD}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder (layer B.Cu) (tedit 5F68FEEE) (tstamp 61C50BD2) + (at 54.810774 64.1176 330) + (descr "Resistor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") + (tags "resistor handsolder") + (path /61CAE0ED) + (attr smd) + (fp_text reference R15 (at 0 1.65 150) (layer B.SilkS) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_text value 470 (at 0 -1.65 150) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_line (start -1 -0.625) (end -1 0.625) (layer B.Fab) (width 0.1)) + (fp_line (start -1 0.625) (end 1 0.625) (layer B.Fab) (width 0.1)) + (fp_line (start 1 0.625) (end 1 -0.625) (layer B.Fab) (width 0.1)) + (fp_line (start 1 -0.625) (end -1 -0.625) (layer B.Fab) (width 0.1)) + (fp_line (start -0.227064 0.735) (end 0.227064 0.735) (layer B.SilkS) (width 0.12)) + (fp_line (start -0.227064 -0.735) (end 0.227064 -0.735) (layer B.SilkS) (width 0.12)) + (fp_line (start -1.85 -0.95) (end -1.85 0.95) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.85 0.95) (end 1.85 0.95) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.85 0.95) (end 1.85 -0.95) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.85 -0.95) (end -1.85 -0.95) (layer B.CrtYd) (width 0.05)) + (fp_text user %R (at 0 0 150) (layer B.Fab) + (effects (font (size 0.5 0.5) (thickness 0.08)) (justify mirror)) + ) + (pad 2 smd roundrect (at 1 0 330) (size 1.2 1.4) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.2083325) + (net 30 "Net-(Q3-Pad3)")) + (pad 1 smd roundrect (at -1 0 330) (size 1.2 1.4) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.2083325) + (net 27 AC_N)) + (model ${KISYS3DMOD}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder (layer F.Cu) (tedit 5F68FEEE) (tstamp 61C50BC1) + (at 42.672 57.2008 340) + (descr "Resistor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") + (tags "resistor handsolder") + (path /61C517C6) + (attr smd) + (fp_text reference R14 (at 3.32891 0.085821 340) (layer F.SilkS) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_text value 470 (at 0 1.65 340) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_line (start -1 0.625) (end -1 -0.625) (layer F.Fab) (width 0.1)) + (fp_line (start -1 -0.625) (end 1 -0.625) (layer F.Fab) (width 0.1)) + (fp_line (start 1 -0.625) (end 1 0.625) (layer F.Fab) (width 0.1)) + (fp_line (start 1 0.625) (end -1 0.625) (layer F.Fab) (width 0.1)) + (fp_line (start -0.227064 -0.735) (end 0.227064 -0.735) (layer F.SilkS) (width 0.12)) + (fp_line (start -0.227064 0.735) (end 0.227064 0.735) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.85 0.95) (end -1.85 -0.95) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.85 -0.95) (end 1.85 -0.95) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.85 -0.95) (end 1.85 0.95) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.85 0.95) (end -1.85 0.95) (layer F.CrtYd) (width 0.05)) + (fp_text user %R (at 0 0 340) (layer F.Fab) + (effects (font (size 0.5 0.5) (thickness 0.08))) + ) + (pad 2 smd roundrect (at 1 0 340) (size 1.2 1.4) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.2083325) + (net 29 "Net-(Q2-Pad3)")) + (pad 1 smd roundrect (at -1 0 340) (size 1.2 1.4) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.2083325) + (net 27 AC_N)) + (model ${KISYS3DMOD}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Resistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolder (layer B.Cu) (tedit 5F68FEEE) (tstamp 61C5B17C) + (at 29.2868 32.6136 180) + (descr "Resistor SMD 1206 (3216 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") + (tags "resistor handsolder") + (path /61C8EF1C) + (attr smd) + (fp_text reference R13 (at 0 1.82) (layer B.SilkS) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_text value 47k (at 0 -1.82) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_line (start -1.6 -0.8) (end -1.6 0.8) (layer B.Fab) (width 0.1)) + (fp_line (start -1.6 0.8) (end 1.6 0.8) (layer B.Fab) (width 0.1)) + (fp_line (start 1.6 0.8) (end 1.6 -0.8) (layer B.Fab) (width 0.1)) + (fp_line (start 1.6 -0.8) (end -1.6 -0.8) (layer B.Fab) (width 0.1)) + (fp_line (start -0.727064 0.91) (end 0.727064 0.91) (layer B.SilkS) (width 0.12)) + (fp_line (start -0.727064 -0.91) (end 0.727064 -0.91) (layer B.SilkS) (width 0.12)) + (fp_line (start -2.45 -1.12) (end -2.45 1.12) (layer B.CrtYd) (width 0.05)) + (fp_line (start -2.45 1.12) (end 2.45 1.12) (layer B.CrtYd) (width 0.05)) + (fp_line (start 2.45 1.12) (end 2.45 -1.12) (layer B.CrtYd) (width 0.05)) + (fp_line (start 2.45 -1.12) (end -2.45 -1.12) (layer B.CrtYd) (width 0.05)) + (fp_text user %R (at 0 0) (layer B.Fab) + (effects (font (size 0.8 0.8) (thickness 0.12)) (justify mirror)) + ) + (pad 2 smd roundrect (at 1.55 0 180) (size 1.3 1.75) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.1923076923076923) + (net 15 AC_L)) + (pad 1 smd roundrect (at -1.55 0 180) (size 1.3 1.75) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.1923076923076923) + (net 47 "Net-(R13-Pad1)")) + (model ${KISYS3DMOD}/Resistor_SMD.3dshapes/R_1206_3216Metric.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Resistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolder (layer B.Cu) (tedit 5F68FEEE) (tstamp 61C5F9A3) + (at 29.2348 37.6936 180) + (descr "Resistor SMD 1206 (3216 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") + (tags "resistor handsolder") + (path /61C8DA64) + (attr smd) + (fp_text reference R12 (at 0 1.82) (layer B.SilkS) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_text value 47k (at 0 -1.82) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_line (start -1.6 -0.8) (end -1.6 0.8) (layer B.Fab) (width 0.1)) + (fp_line (start -1.6 0.8) (end 1.6 0.8) (layer B.Fab) (width 0.1)) + (fp_line (start 1.6 0.8) (end 1.6 -0.8) (layer B.Fab) (width 0.1)) + (fp_line (start 1.6 -0.8) (end -1.6 -0.8) (layer B.Fab) (width 0.1)) + (fp_line (start -0.727064 0.91) (end 0.727064 0.91) (layer B.SilkS) (width 0.12)) + (fp_line (start -0.727064 -0.91) (end 0.727064 -0.91) (layer B.SilkS) (width 0.12)) + (fp_line (start -2.45 -1.12) (end -2.45 1.12) (layer B.CrtYd) (width 0.05)) + (fp_line (start -2.45 1.12) (end 2.45 1.12) (layer B.CrtYd) (width 0.05)) + (fp_line (start 2.45 1.12) (end 2.45 -1.12) (layer B.CrtYd) (width 0.05)) + (fp_line (start 2.45 -1.12) (end -2.45 -1.12) (layer B.CrtYd) (width 0.05)) + (fp_text user %R (at 0 0) (layer B.Fab) + (effects (font (size 0.8 0.8) (thickness 0.12)) (justify mirror)) + ) + (pad 2 smd roundrect (at 1.55 0 180) (size 1.3 1.75) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.1923076923076923) + (net 27 AC_N)) + (pad 1 smd roundrect (at -1.55 0 180) (size 1.3 1.75) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.1923076923076923) + (net 46 "Net-(R12-Pad1)")) + (model ${KISYS3DMOD}/Resistor_SMD.3dshapes/R_1206_3216Metric.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder (layer F.Cu) (tedit 5F68FEEE) (tstamp 61C50B8E) + (at 59.732801 73.149575 60) + (descr "Resistor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") + (tags "resistor handsolder") + (path /61CAE0D9) + (attr smd) + (fp_text reference R11 (at 0 -1.65 60) (layer F.SilkS) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_text value 220 (at 0 1.65 60) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_line (start -1 0.625) (end -1 -0.625) (layer F.Fab) (width 0.1)) + (fp_line (start -1 -0.625) (end 1 -0.625) (layer F.Fab) (width 0.1)) + (fp_line (start 1 -0.625) (end 1 0.625) (layer F.Fab) (width 0.1)) + (fp_line (start 1 0.625) (end -1 0.625) (layer F.Fab) (width 0.1)) + (fp_line (start -0.227064 -0.735) (end 0.227064 -0.735) (layer F.SilkS) (width 0.12)) + (fp_line (start -0.227064 0.735) (end 0.227064 0.735) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.85 0.95) (end -1.85 -0.95) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.85 -0.95) (end 1.85 -0.95) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.85 -0.95) (end 1.85 0.95) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.85 0.95) (end -1.85 0.95) (layer F.CrtYd) (width 0.05)) + (fp_text user %R (at 0 0 60) (layer F.Fab) + (effects (font (size 0.5 0.5) (thickness 0.08))) + ) + (pad 2 smd roundrect (at 1 0 60) (size 1.2 1.4) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.2083325) + (net 44 "Net-(R11-Pad2)")) + (pad 1 smd roundrect (at -1 0 60) (size 1.2 1.4) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.2083325) + (net 45 "Net-(R11-Pad1)")) + (model ${KISYS3DMOD}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder (layer F.Cu) (tedit 5F68FEEE) (tstamp 61C50B7D) + (at 54.0672 49.6824) + (descr "Resistor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") + (tags "resistor handsolder") + (path /61D2DBF2) + (attr smd) + (fp_text reference R10 (at 0 -1.65) (layer F.SilkS) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_text value 220 (at 0 1.65) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_line (start -1 0.625) (end -1 -0.625) (layer F.Fab) (width 0.1)) + (fp_line (start -1 -0.625) (end 1 -0.625) (layer F.Fab) (width 0.1)) + (fp_line (start 1 -0.625) (end 1 0.625) (layer F.Fab) (width 0.1)) + (fp_line (start 1 0.625) (end -1 0.625) (layer F.Fab) (width 0.1)) + (fp_line (start -0.227064 -0.735) (end 0.227064 -0.735) (layer F.SilkS) (width 0.12)) + (fp_line (start -0.227064 0.735) (end 0.227064 0.735) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.85 0.95) (end -1.85 -0.95) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.85 -0.95) (end 1.85 -0.95) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.85 -0.95) (end 1.85 0.95) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.85 0.95) (end -1.85 0.95) (layer F.CrtYd) (width 0.05)) + (fp_text user %R (at 0 0) (layer F.Fab) + (effects (font (size 0.5 0.5) (thickness 0.08))) + ) + (pad 2 smd roundrect (at 1 0) (size 1.2 1.4) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.2083325) + (net 42 "Net-(R10-Pad2)")) + (pad 1 smd roundrect (at -1 0) (size 1.2 1.4) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.2083325) + (net 43 "Net-(R10-Pad1)")) + (model ${KISYS3DMOD}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder (layer B.Cu) (tedit 5F68FEEE) (tstamp 61C50B6C) + (at 51.2064 39.7256 180) + (descr "Resistor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") + (tags "resistor handsolder") + (path /61C925E4) + (attr smd) + (fp_text reference R9 (at 0 1.65) (layer B.SilkS) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_text value 10k (at 0 -1.65) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_line (start -1 -0.625) (end -1 0.625) (layer B.Fab) (width 0.1)) + (fp_line (start -1 0.625) (end 1 0.625) (layer B.Fab) (width 0.1)) + (fp_line (start 1 0.625) (end 1 -0.625) (layer B.Fab) (width 0.1)) + (fp_line (start 1 -0.625) (end -1 -0.625) (layer B.Fab) (width 0.1)) + (fp_line (start -0.227064 0.735) (end 0.227064 0.735) (layer B.SilkS) (width 0.12)) + (fp_line (start -0.227064 -0.735) (end 0.227064 -0.735) (layer B.SilkS) (width 0.12)) + (fp_line (start -1.85 -0.95) (end -1.85 0.95) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.85 0.95) (end 1.85 0.95) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.85 0.95) (end 1.85 -0.95) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.85 -0.95) (end -1.85 -0.95) (layer B.CrtYd) (width 0.05)) + (fp_text user %R (at 0 0) (layer B.Fab) + (effects (font (size 0.5 0.5) (thickness 0.08)) (justify mirror)) + ) + (pad 2 smd roundrect (at 1 0 180) (size 1.2 1.4) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.2083325) + (net 41 ZeroCross)) + (pad 1 smd roundrect (at -1 0 180) (size 1.2 1.4) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.2083325) + (net 2 +3V3)) + (model ${KISYS3DMOD}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder (layer F.Cu) (tedit 5F68FEEE) (tstamp 61C50B5B) + (at 71.8058 73.6346 305) + (descr "Resistor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") + (tags "resistor handsolder") + (path /61CAE0C8) + (attr smd) + (fp_text reference R8 (at 0 -1.65 125) (layer F.SilkS) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_text value 270 (at 0 1.65 125) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_line (start -1 0.625) (end -1 -0.625) (layer F.Fab) (width 0.1)) + (fp_line (start -1 -0.625) (end 1 -0.625) (layer F.Fab) (width 0.1)) + (fp_line (start 1 -0.625) (end 1 0.625) (layer F.Fab) (width 0.1)) + (fp_line (start 1 0.625) (end -1 0.625) (layer F.Fab) (width 0.1)) + (fp_line (start -0.227064 -0.735) (end 0.227064 -0.735) (layer F.SilkS) (width 0.12)) + (fp_line (start -0.227064 0.735) (end 0.227064 0.735) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.85 0.95) (end -1.85 -0.95) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.85 -0.95) (end 1.85 -0.95) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.85 -0.95) (end 1.85 0.95) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.85 0.95) (end -1.85 0.95) (layer F.CrtYd) (width 0.05)) + (fp_text user %R (at 0 0 125) (layer F.Fab) + (effects (font (size 0.5 0.5) (thickness 0.08))) + ) + (pad 2 smd roundrect (at 1 0 305) (size 1.2 1.4) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.2083325) + (net 39 Gate_Fan)) + (pad 1 smd roundrect (at -1 0 305) (size 1.2 1.4) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.2083325) + (net 40 "Net-(R8-Pad1)")) + (model ${KISYS3DMOD}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder (layer F.Cu) (tedit 5F68FEEE) (tstamp 61C6024A) + (at 67.852799 55.473601) + (descr "Resistor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") + (tags "resistor handsolder") + (path /61D21CEF) + (attr smd) + (fp_text reference R7 (at -0.034799 1.676399) (layer F.SilkS) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_text value 270 (at 0 1.65) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_line (start -1 0.625) (end -1 -0.625) (layer F.Fab) (width 0.1)) + (fp_line (start -1 -0.625) (end 1 -0.625) (layer F.Fab) (width 0.1)) + (fp_line (start 1 -0.625) (end 1 0.625) (layer F.Fab) (width 0.1)) + (fp_line (start 1 0.625) (end -1 0.625) (layer F.Fab) (width 0.1)) + (fp_line (start -0.227064 -0.735) (end 0.227064 -0.735) (layer F.SilkS) (width 0.12)) + (fp_line (start -0.227064 0.735) (end 0.227064 0.735) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.85 0.95) (end -1.85 -0.95) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.85 -0.95) (end 1.85 -0.95) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.85 -0.95) (end 1.85 0.95) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.85 0.95) (end -1.85 0.95) (layer F.CrtYd) (width 0.05)) + (fp_text user %R (at 0 0) (layer F.Fab) + (effects (font (size 0.5 0.5) (thickness 0.08))) + ) + (pad 2 smd roundrect (at 1 0) (size 1.2 1.4) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.2083325) + (net 37 Gate_Heater)) + (pad 1 smd roundrect (at -1 0) (size 1.2 1.4) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.2083325) + (net 38 "Net-(R7-Pad1)")) + (model ${KISYS3DMOD}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder (layer F.Cu) (tedit 5F68FEEE) (tstamp 61C70401) + (at 87.1728 51.1556 90) + (descr "Resistor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") + (tags "resistor handsolder") + (path /61D9989F) + (attr smd) + (fp_text reference R6 (at -2.6416 0.1016 180) (layer F.SilkS) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_text value 120 (at 0 1.65 90) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_line (start -1 0.625) (end -1 -0.625) (layer F.Fab) (width 0.1)) + (fp_line (start -1 -0.625) (end 1 -0.625) (layer F.Fab) (width 0.1)) + (fp_line (start 1 -0.625) (end 1 0.625) (layer F.Fab) (width 0.1)) + (fp_line (start 1 0.625) (end -1 0.625) (layer F.Fab) (width 0.1)) + (fp_line (start -0.227064 -0.735) (end 0.227064 -0.735) (layer F.SilkS) (width 0.12)) + (fp_line (start -0.227064 0.735) (end 0.227064 0.735) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.85 0.95) (end -1.85 -0.95) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.85 -0.95) (end 1.85 -0.95) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.85 -0.95) (end 1.85 0.95) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.85 0.95) (end -1.85 0.95) (layer F.CrtYd) (width 0.05)) + (fp_text user %R (at 0 0 90) (layer F.Fab) + (effects (font (size 0.5 0.5) (thickness 0.08))) + ) + (pad 2 smd roundrect (at 1 0 90) (size 1.2 1.4) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.2083325) + (net 36 OLED_SDA)) + (pad 1 smd roundrect (at -1 0 90) (size 1.2 1.4) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.2083325) + (net 13 "Net-(J2-Pad4)")) + (model ${KISYS3DMOD}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder (layer B.Cu) (tedit 5F68FEEE) (tstamp 61C6506F) + (at 87.1728 51.1556 270) + (descr "Resistor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") + (tags "resistor handsolder") + (path /61D99899) + (attr smd) + (fp_text reference R5 (at 0 1.65 270) (layer B.SilkS) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_text value 120 (at 0 -1.65 270) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_line (start -1 -0.625) (end -1 0.625) (layer B.Fab) (width 0.1)) + (fp_line (start -1 0.625) (end 1 0.625) (layer B.Fab) (width 0.1)) + (fp_line (start 1 0.625) (end 1 -0.625) (layer B.Fab) (width 0.1)) + (fp_line (start 1 -0.625) (end -1 -0.625) (layer B.Fab) (width 0.1)) + (fp_line (start -0.227064 0.735) (end 0.227064 0.735) (layer B.SilkS) (width 0.12)) + (fp_line (start -0.227064 -0.735) (end 0.227064 -0.735) (layer B.SilkS) (width 0.12)) + (fp_line (start -1.85 -0.95) (end -1.85 0.95) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.85 0.95) (end 1.85 0.95) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.85 0.95) (end 1.85 -0.95) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.85 -0.95) (end -1.85 -0.95) (layer B.CrtYd) (width 0.05)) + (fp_text user %R (at 0 0 270) (layer B.Fab) + (effects (font (size 0.5 0.5) (thickness 0.08)) (justify mirror)) + ) + (pad 2 smd roundrect (at 1 0 270) (size 1.2 1.4) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.2083325) + (net 35 OLED_SCL)) + (pad 1 smd roundrect (at -1 0 270) (size 1.2 1.4) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.2083325) + (net 14 "Net-(J2-Pad3)")) + (model ${KISYS3DMOD}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder (layer B.Cu) (tedit 5F68FEEE) (tstamp 61C609D3) + (at 73.024193 59.939502 90) + (descr "Resistor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") + (tags "resistor handsolder") + (path /61D705E3) + (attr smd) + (fp_text reference R4 (at 2.840302 0.026207 90) (layer B.SilkS) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_text value 120 (at 0 -1.65 90) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_line (start -1 -0.625) (end -1 0.625) (layer B.Fab) (width 0.1)) + (fp_line (start -1 0.625) (end 1 0.625) (layer B.Fab) (width 0.1)) + (fp_line (start 1 0.625) (end 1 -0.625) (layer B.Fab) (width 0.1)) + (fp_line (start 1 -0.625) (end -1 -0.625) (layer B.Fab) (width 0.1)) + (fp_line (start -0.227064 0.735) (end 0.227064 0.735) (layer B.SilkS) (width 0.12)) + (fp_line (start -0.227064 -0.735) (end 0.227064 -0.735) (layer B.SilkS) (width 0.12)) + (fp_line (start -1.85 -0.95) (end -1.85 0.95) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.85 0.95) (end 1.85 0.95) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.85 0.95) (end 1.85 -0.95) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.85 -0.95) (end -1.85 -0.95) (layer B.CrtYd) (width 0.05)) + (fp_text user %R (at 0 0 90) (layer B.Fab) + (effects (font (size 0.5 0.5) (thickness 0.08)) (justify mirror)) + ) + (pad 2 smd roundrect (at 1 0 90) (size 1.2 1.4) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.2083325) + (net 34 BME_SDA)) + (pad 1 smd roundrect (at -1 0 90) (size 1.2 1.4) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.2083325) + (net 7 "Net-(J1-Pad4)")) + (model ${KISYS3DMOD}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder (layer B.Cu) (tedit 5F68FEEE) (tstamp 61C71C53) + (at 70.738187 59.9395 90) + (descr "Resistor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") + (tags "resistor handsolder") + (path /61D6E92C) + (attr smd) + (fp_text reference R3 (at 2.8403 0.077013 90) (layer B.SilkS) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_text value 120 (at 0 -1.65 90) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_line (start -1 -0.625) (end -1 0.625) (layer B.Fab) (width 0.1)) + (fp_line (start -1 0.625) (end 1 0.625) (layer B.Fab) (width 0.1)) + (fp_line (start 1 0.625) (end 1 -0.625) (layer B.Fab) (width 0.1)) + (fp_line (start 1 -0.625) (end -1 -0.625) (layer B.Fab) (width 0.1)) + (fp_line (start -0.227064 0.735) (end 0.227064 0.735) (layer B.SilkS) (width 0.12)) + (fp_line (start -0.227064 -0.735) (end 0.227064 -0.735) (layer B.SilkS) (width 0.12)) + (fp_line (start -1.85 -0.95) (end -1.85 0.95) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.85 0.95) (end 1.85 0.95) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.85 0.95) (end 1.85 -0.95) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.85 -0.95) (end -1.85 -0.95) (layer B.CrtYd) (width 0.05)) + (fp_text user %R (at 0 0 90) (layer B.Fab) + (effects (font (size 0.5 0.5) (thickness 0.08)) (justify mirror)) + ) + (pad 2 smd roundrect (at 1 0 90) (size 1.2 1.4) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.2083325) + (net 33 BME_SCL)) + (pad 1 smd roundrect (at -1 0 90) (size 1.2 1.4) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.2083325) + (net 8 "Net-(J1-Pad3)")) + (model ${KISYS3DMOD}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder (layer F.Cu) (tedit 5F68FEEE) (tstamp 61C67EC5) + (at 83.642646 63.531674) + (descr "Resistor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") + (tags "resistor handsolder") + (path /61C5E1F7) + (attr smd) + (fp_text reference R2 (at 0 -1.65) (layer F.SilkS) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_text value 0 (at 0 1.65) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_line (start -1 0.625) (end -1 -0.625) (layer F.Fab) (width 0.1)) + (fp_line (start -1 -0.625) (end 1 -0.625) (layer F.Fab) (width 0.1)) + (fp_line (start 1 -0.625) (end 1 0.625) (layer F.Fab) (width 0.1)) + (fp_line (start 1 0.625) (end -1 0.625) (layer F.Fab) (width 0.1)) + (fp_line (start -0.227064 -0.735) (end 0.227064 -0.735) (layer F.SilkS) (width 0.12)) + (fp_line (start -0.227064 0.735) (end 0.227064 0.735) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.85 0.95) (end -1.85 -0.95) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.85 -0.95) (end 1.85 -0.95) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.85 -0.95) (end 1.85 0.95) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.85 0.95) (end -1.85 0.95) (layer F.CrtYd) (width 0.05)) + (fp_text user %R (at 0 0) (layer F.Fab) + (effects (font (size 0.5 0.5) (thickness 0.08))) + ) + (pad 2 smd roundrect (at 1 0) (size 1.2 1.4) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.2083325) + (net 5 "Net-(C2-Pad1)")) + (pad 1 smd roundrect (at -1 0) (size 1.2 1.4) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.2083325) + (net 32 "Net-(R2-Pad1)")) + (model ${KISYS3DMOD}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder (layer F.Cu) (tedit 5F68FEEE) (tstamp 61C653DB) + (at 91.2876 57.3532 130) + (descr "Resistor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") + (tags "resistor handsolder") + (path /61C6D131) + (attr smd) + (fp_text reference R1 (at -0.038039 1.625949 130) (layer F.SilkS) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_text value 220 (at 0 1.65 130) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_line (start -1 0.625) (end -1 -0.625) (layer F.Fab) (width 0.1)) + (fp_line (start -1 -0.625) (end 1 -0.625) (layer F.Fab) (width 0.1)) + (fp_line (start 1 -0.625) (end 1 0.625) (layer F.Fab) (width 0.1)) + (fp_line (start 1 0.625) (end -1 0.625) (layer F.Fab) (width 0.1)) + (fp_line (start -0.227064 -0.735) (end 0.227064 -0.735) (layer F.SilkS) (width 0.12)) + (fp_line (start -0.227064 0.735) (end 0.227064 0.735) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.85 0.95) (end -1.85 -0.95) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.85 -0.95) (end 1.85 -0.95) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.85 -0.95) (end 1.85 0.95) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.85 0.95) (end -1.85 0.95) (layer F.CrtYd) (width 0.05)) + (fp_text user %R (at 0 0 130) (layer F.Fab) + (effects (font (size 0.5 0.5) (thickness 0.08))) + ) + (pad 2 smd roundrect (at 1 0 130) (size 1.2 1.4) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.2083325) + (net 31 Buzzer)) + (pad 1 smd roundrect (at -1 0 130) (size 1.2 1.4) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.2083325) + (net 28 "Net-(Q1-Pad1)")) + (model ${KISYS3DMOD}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Package_TO_SOT_THT:TO-220-3_Vertical (layer F.Cu) (tedit 5AC8BA0D) (tstamp 61C50AD3) + (at 55.1688 58.7756 330) + (descr "TO-220-3, Vertical, RM 2.54mm, see https://www.vishay.com/docs/66542/to-220-1.pdf") + (tags "TO-220-3 Vertical RM 2.54mm") + (path /61CAE0C2) + (fp_text reference Q3 (at 2.54 -4.27 150) (layer F.SilkS) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_text value BT138-800 (at 2.54 2.5 150) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_line (start 7.79 -3.4) (end -2.71 -3.4) (layer F.CrtYd) (width 0.05)) + (fp_line (start 7.79 1.51) (end 7.79 -3.4) (layer F.CrtYd) (width 0.05)) + (fp_line (start -2.71 1.51) (end 7.79 1.51) (layer F.CrtYd) (width 0.05)) + (fp_line (start -2.71 -3.4) (end -2.71 1.51) (layer F.CrtYd) (width 0.05)) + (fp_line (start 4.391 -3.27) (end 4.391 -1.76) (layer F.SilkS) (width 0.12)) + (fp_line (start 0.69 -3.27) (end 0.69 -1.76) (layer F.SilkS) (width 0.12)) + (fp_line (start -2.58 -1.76) (end 7.66 -1.76) (layer F.SilkS) (width 0.12)) + (fp_line (start 7.66 -3.27) (end 7.66 1.371) (layer F.SilkS) (width 0.12)) + (fp_line (start -2.58 -3.27) (end -2.58 1.371) (layer F.SilkS) (width 0.12)) + (fp_line (start -2.58 1.371) (end 7.66 1.371) (layer F.SilkS) (width 0.12)) + (fp_line (start -2.58 -3.27) (end 7.66 -3.27) (layer F.SilkS) (width 0.12)) + (fp_line (start 4.39 -3.15) (end 4.39 -1.88) (layer F.Fab) (width 0.1)) + (fp_line (start 0.69 -3.15) (end 0.69 -1.88) (layer F.Fab) (width 0.1)) + (fp_line (start -2.46 -1.88) (end 7.54 -1.88) (layer F.Fab) (width 0.1)) + (fp_line (start 7.54 -3.15) (end -2.46 -3.15) (layer F.Fab) (width 0.1)) + (fp_line (start 7.54 1.25) (end 7.54 -3.15) (layer F.Fab) (width 0.1)) + (fp_line (start -2.46 1.25) (end 7.54 1.25) (layer F.Fab) (width 0.1)) + (fp_line (start -2.46 -3.15) (end -2.46 1.25) (layer F.Fab) (width 0.1)) + (fp_text user %R (at 2.54 -4.27 150) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (pad 1 thru_hole rect (at 0 0 330) (size 1.905 2) (drill 1.1) (layers *.Cu *.Mask) + (net 27 AC_N)) + (pad 2 thru_hole oval (at 2.54 0 330) (size 1.905 2) (drill 1.1) (layers *.Cu *.Mask) + (net 98 "Net-(J4-Pad2)")) + (pad 3 thru_hole oval (at 5.08 0 330) (size 1.905 2) (drill 1.1) (layers *.Cu *.Mask) + (net 30 "Net-(Q3-Pad3)")) + (model ${KISYS3DMOD}/Package_TO_SOT_THT.3dshapes/TO-220-3_Vertical.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Package_TO_SOT_THT:TO-220-3_Vertical (layer F.Cu) (tedit 5AC8BA0D) (tstamp 61C5DA06) + (at 40.4368 52.6796 340) + (descr "TO-220-3, Vertical, RM 2.54mm, see https://www.vishay.com/docs/66542/to-220-1.pdf") + (tags "TO-220-3 Vertical RM 2.54mm") + (path /61C4CFC6) + (fp_text reference Q2 (at 2.54 -4.27 160) (layer F.SilkS) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_text value BT138-800 (at 2.54 2.5 160) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_line (start 7.79 -3.4) (end -2.71 -3.4) (layer F.CrtYd) (width 0.05)) + (fp_line (start 7.79 1.51) (end 7.79 -3.4) (layer F.CrtYd) (width 0.05)) + (fp_line (start -2.71 1.51) (end 7.79 1.51) (layer F.CrtYd) (width 0.05)) + (fp_line (start -2.71 -3.4) (end -2.71 1.51) (layer F.CrtYd) (width 0.05)) + (fp_line (start 4.391 -3.27) (end 4.391 -1.76) (layer F.SilkS) (width 0.12)) + (fp_line (start 0.69 -3.27) (end 0.69 -1.76) (layer F.SilkS) (width 0.12)) + (fp_line (start -2.58 -1.76) (end 7.66 -1.76) (layer F.SilkS) (width 0.12)) + (fp_line (start 7.66 -3.27) (end 7.66 1.371) (layer F.SilkS) (width 0.12)) + (fp_line (start -2.58 -3.27) (end -2.58 1.371) (layer F.SilkS) (width 0.12)) + (fp_line (start -2.58 1.371) (end 7.66 1.371) (layer F.SilkS) (width 0.12)) + (fp_line (start -2.58 -3.27) (end 7.66 -3.27) (layer F.SilkS) (width 0.12)) + (fp_line (start 4.39 -3.15) (end 4.39 -1.88) (layer F.Fab) (width 0.1)) + (fp_line (start 0.69 -3.15) (end 0.69 -1.88) (layer F.Fab) (width 0.1)) + (fp_line (start -2.46 -1.88) (end 7.54 -1.88) (layer F.Fab) (width 0.1)) + (fp_line (start 7.54 -3.15) (end -2.46 -3.15) (layer F.Fab) (width 0.1)) + (fp_line (start 7.54 1.25) (end 7.54 -3.15) (layer F.Fab) (width 0.1)) + (fp_line (start -2.46 1.25) (end 7.54 1.25) (layer F.Fab) (width 0.1)) + (fp_line (start -2.46 -3.15) (end -2.46 1.25) (layer F.Fab) (width 0.1)) + (fp_text user %R (at 2.54 -4.27 160) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (pad 1 thru_hole rect (at 0 0 340) (size 1.905 2) (drill 1.1) (layers *.Cu *.Mask) + (net 27 AC_N)) + (pad 2 thru_hole oval (at 2.54 0 340) (size 1.905 2) (drill 1.1) (layers *.Cu *.Mask) + (net 16 "Net-(J3-Pad1)")) + (pad 3 thru_hole oval (at 5.08 0 340) (size 1.905 2) (drill 1.1) (layers *.Cu *.Mask) + (net 29 "Net-(Q2-Pad3)")) + (model ${KISYS3DMOD}/Package_TO_SOT_THT.3dshapes/TO-220-3_Vertical.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Package_TO_SOT_SMD:SOT-23_Handsoldering (layer F.Cu) (tedit 60425E26) (tstamp 61C653A3) + (at 93.8784 61.9506 310) + (descr "SOT-23, Standard") + (tags SOT-23) + (path /61C52C32) + (attr smd) + (fp_text reference Q1 (at 0 -2.5 130) (layer F.SilkS) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_text value LBC817 (at 0 2.5 130) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_line (start -0.7 -0.95) (end -0.7 1.5) (layer F.Fab) (width 0.1)) + (fp_line (start -0.15 -1.52) (end 0.7 -1.52) (layer F.Fab) (width 0.1)) + (fp_line (start -0.7 -0.95) (end -0.15 -1.52) (layer F.Fab) (width 0.1)) + (fp_line (start 0.7 -1.52) (end 0.7 1.52) (layer F.Fab) (width 0.1)) + (fp_line (start -0.7 1.52) (end 0.7 1.52) (layer F.Fab) (width 0.1)) + (fp_line (start 0.76 1.58) (end 0.76 0.65) (layer F.SilkS) (width 0.12)) + (fp_line (start 0.76 -1.58) (end 0.76 -0.65) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.7 -1.75) (end 1.7 -1.75) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.7 -1.75) (end 1.7 1.75) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.7 1.75) (end -1.7 1.75) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.7 1.75) (end -1.7 -1.75) (layer F.CrtYd) (width 0.05)) + (fp_line (start 0.76 -1.58) (end -1.4 -1.58) (layer F.SilkS) (width 0.12)) + (fp_line (start 0.76 1.58) (end -0.7 1.58) (layer F.SilkS) (width 0.12)) + (fp_text user %R (at 0 0 40) (layer F.Fab) + (effects (font (size 0.5 0.5) (thickness 0.075))) + ) + (pad 1 smd rect (at -1.35 -0.95 310) (size 1.56 0.8) (layers F.Cu F.Paste F.Mask) + (net 28 "Net-(Q1-Pad1)")) + (pad 2 smd rect (at -1.35 0.95 310) (size 1.56 0.8) (layers F.Cu F.Paste F.Mask) + (net 3 GND)) + (pad 3 smd rect (at 1.35 0 310) (size 1.56 0.8) (layers F.Cu F.Paste F.Mask) + (net 1 "Net-(BZ1-Pad2)")) + (model ${KISYS3DMOD}/Package_TO_SOT_SMD.3dshapes/SOT-23.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-3-2-5.08_1x02_P5.08mm_Horizontal (layer F.Cu) (tedit 5B294F11) (tstamp 61C5608B) + (at 26.2128 49.8856 270) + (descr "Terminal Block Phoenix MKDS-3-2-5.08, 2 pins, pitch 5.08mm, size 10.2x11.2mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.farnell.com/datasheets/2138224.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix") + (tags "THT Terminal Block Phoenix MKDS-3-2-5.08 pitch 5.08mm size 10.2x11.2mm^2 drill 1.3mm pad 2.6mm") + (path /61C984AE) + (fp_text reference J6 (at 2.54 -6.96 90) (layer F.SilkS) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_text value 220V (at 2.54 6.36 90) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_line (start 8.13 -6.4) (end -3.04 -6.4) (layer F.CrtYd) (width 0.05)) + (fp_line (start 8.13 5.8) (end 8.13 -6.4) (layer F.CrtYd) (width 0.05)) + (fp_line (start -3.04 5.8) (end 8.13 5.8) (layer F.CrtYd) (width 0.05)) + (fp_line (start -3.04 -6.4) (end -3.04 5.8) (layer F.CrtYd) (width 0.05)) + (fp_line (start -2.84 5.6) (end -2.34 5.6) (layer F.SilkS) (width 0.12)) + (fp_line (start -2.84 4.86) (end -2.84 5.6) (layer F.SilkS) (width 0.12)) + (fp_line (start 3.822 0.992) (end 3.427 1.388) (layer F.SilkS) (width 0.12)) + (fp_line (start 6.468 -1.654) (end 6.088 -1.274) (layer F.SilkS) (width 0.12)) + (fp_line (start 4.073 1.274) (end 3.693 1.654) (layer F.SilkS) (width 0.12)) + (fp_line (start 6.734 -1.388) (end 6.339 -0.992) (layer F.SilkS) (width 0.12)) + (fp_line (start 6.353 -1.517) (end 3.564 1.273) (layer F.Fab) (width 0.1)) + (fp_line (start 6.597 -1.273) (end 3.808 1.517) (layer F.Fab) (width 0.1)) + (fp_line (start -1.548 1.281) (end -1.654 1.388) (layer F.SilkS) (width 0.12)) + (fp_line (start 1.388 -1.654) (end 1.281 -1.547) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.282 1.547) (end -1.388 1.654) (layer F.SilkS) (width 0.12)) + (fp_line (start 1.654 -1.388) (end 1.547 -1.281) (layer F.SilkS) (width 0.12)) + (fp_line (start 1.273 -1.517) (end -1.517 1.273) (layer F.Fab) (width 0.1)) + (fp_line (start 1.517 -1.273) (end -1.273 1.517) (layer F.Fab) (width 0.1)) + (fp_line (start 7.68 -5.96) (end 7.68 5.36) (layer F.SilkS) (width 0.12)) + (fp_line (start -2.6 -5.96) (end -2.6 5.36) (layer F.SilkS) (width 0.12)) + (fp_line (start -2.6 5.36) (end 7.68 5.36) (layer F.SilkS) (width 0.12)) + (fp_line (start -2.6 -5.96) (end 7.68 -5.96) (layer F.SilkS) (width 0.12)) + (fp_line (start -2.6 -3.9) (end 7.68 -3.9) (layer F.SilkS) (width 0.12)) + (fp_line (start -2.54 -3.9) (end 7.62 -3.9) (layer F.Fab) (width 0.1)) + (fp_line (start -2.6 2.3) (end 7.68 2.3) (layer F.SilkS) (width 0.12)) + (fp_line (start -2.54 2.3) (end 7.62 2.3) (layer F.Fab) (width 0.1)) + (fp_line (start -2.6 4.8) (end 7.68 4.8) (layer F.SilkS) (width 0.12)) + (fp_line (start -2.54 4.8) (end 7.62 4.8) (layer F.Fab) (width 0.1)) + (fp_line (start -2.54 4.8) (end -2.54 -5.9) (layer F.Fab) (width 0.1)) + (fp_line (start -2.04 5.3) (end -2.54 4.8) (layer F.Fab) (width 0.1)) + (fp_line (start 7.62 5.3) (end -2.04 5.3) (layer F.Fab) (width 0.1)) + (fp_line (start 7.62 -5.9) (end 7.62 5.3) (layer F.Fab) (width 0.1)) + (fp_line (start -2.54 -5.9) (end 7.62 -5.9) (layer F.Fab) (width 0.1)) + (fp_circle (center 5.08 0) (end 7.26 0) (layer F.SilkS) (width 0.12)) + (fp_circle (center 5.08 0) (end 7.08 0) (layer F.Fab) (width 0.1)) + (fp_circle (center 0 0) (end 2.18 0) (layer F.SilkS) (width 0.12)) + (fp_circle (center 0 0) (end 2 0) (layer F.Fab) (width 0.1)) + (fp_text user %R (at 2.54 3.1 90) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (pad 1 thru_hole rect (at 0 0 270) (size 2.6 2.6) (drill 1.3) (layers *.Cu *.Mask) + (net 27 AC_N)) + (pad 2 thru_hole circle (at 5.08 0 270) (size 2.6 2.6) (drill 1.3) (layers *.Cu *.Mask) + (net 15 AC_L)) + (model ${KISYS3DMOD}/TerminalBlock_Phoenix.3dshapes/TerminalBlock_Phoenix_MKDS-3-2-5.08_1x02_P5.08mm_Horizontal.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Connector_PinHeader_1.27mm:PinHeader_2x07_P1.27mm_Vertical_SMD (layer F.Cu) (tedit 59FED6E3) (tstamp 61C50A45) + (at 62.992 36.2712) + (descr "surface-mounted straight pin header, 2x07, 1.27mm pitch, double rows") + (tags "Surface mounted pin header SMD 2x07 1.27mm double row") + (path /61E01D46) + (attr smd) + (fp_text reference J5 (at 0 -5.505) (layer F.SilkS) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_text value SWD (at 0 5.505) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_line (start 1.705 4.445) (end -1.705 4.445) (layer F.Fab) (width 0.1)) + (fp_line (start -1.27 -4.445) (end 1.705 -4.445) (layer F.Fab) (width 0.1)) + (fp_line (start -1.705 4.445) (end -1.705 -4.01) (layer F.Fab) (width 0.1)) + (fp_line (start -1.705 -4.01) (end -1.27 -4.445) (layer F.Fab) (width 0.1)) + (fp_line (start 1.705 -4.445) (end 1.705 4.445) (layer F.Fab) (width 0.1)) + (fp_line (start -1.705 -4.01) (end -2.75 -4.01) (layer F.Fab) (width 0.1)) + (fp_line (start -2.75 -4.01) (end -2.75 -3.61) (layer F.Fab) (width 0.1)) + (fp_line (start -2.75 -3.61) (end -1.705 -3.61) (layer F.Fab) (width 0.1)) + (fp_line (start 1.705 -4.01) (end 2.75 -4.01) (layer F.Fab) (width 0.1)) + (fp_line (start 2.75 -4.01) (end 2.75 -3.61) (layer F.Fab) (width 0.1)) + (fp_line (start 2.75 -3.61) (end 1.705 -3.61) (layer F.Fab) (width 0.1)) + (fp_line (start -1.705 -2.74) (end -2.75 -2.74) (layer F.Fab) (width 0.1)) + (fp_line (start -2.75 -2.74) (end -2.75 -2.34) (layer F.Fab) (width 0.1)) + (fp_line (start -2.75 -2.34) (end -1.705 -2.34) (layer F.Fab) (width 0.1)) + (fp_line (start 1.705 -2.74) (end 2.75 -2.74) (layer F.Fab) (width 0.1)) + (fp_line (start 2.75 -2.74) (end 2.75 -2.34) (layer F.Fab) (width 0.1)) + (fp_line (start 2.75 -2.34) (end 1.705 -2.34) (layer F.Fab) (width 0.1)) + (fp_line (start -1.705 -1.47) (end -2.75 -1.47) (layer F.Fab) (width 0.1)) + (fp_line (start -2.75 -1.47) (end -2.75 -1.07) (layer F.Fab) (width 0.1)) + (fp_line (start -2.75 -1.07) (end -1.705 -1.07) (layer F.Fab) (width 0.1)) + (fp_line (start 1.705 -1.47) (end 2.75 -1.47) (layer F.Fab) (width 0.1)) + (fp_line (start 2.75 -1.47) (end 2.75 -1.07) (layer F.Fab) (width 0.1)) + (fp_line (start 2.75 -1.07) (end 1.705 -1.07) (layer F.Fab) (width 0.1)) + (fp_line (start -1.705 -0.2) (end -2.75 -0.2) (layer F.Fab) (width 0.1)) + (fp_line (start -2.75 -0.2) (end -2.75 0.2) (layer F.Fab) (width 0.1)) + (fp_line (start -2.75 0.2) (end -1.705 0.2) (layer F.Fab) (width 0.1)) + (fp_line (start 1.705 -0.2) (end 2.75 -0.2) (layer F.Fab) (width 0.1)) + (fp_line (start 2.75 -0.2) (end 2.75 0.2) (layer F.Fab) (width 0.1)) + (fp_line (start 2.75 0.2) (end 1.705 0.2) (layer F.Fab) (width 0.1)) + (fp_line (start -1.705 1.07) (end -2.75 1.07) (layer F.Fab) (width 0.1)) + (fp_line (start -2.75 1.07) (end -2.75 1.47) (layer F.Fab) (width 0.1)) + (fp_line (start -2.75 1.47) (end -1.705 1.47) (layer F.Fab) (width 0.1)) + (fp_line (start 1.705 1.07) (end 2.75 1.07) (layer F.Fab) (width 0.1)) + (fp_line (start 2.75 1.07) (end 2.75 1.47) (layer F.Fab) (width 0.1)) + (fp_line (start 2.75 1.47) (end 1.705 1.47) (layer F.Fab) (width 0.1)) + (fp_line (start -1.705 2.34) (end -2.75 2.34) (layer F.Fab) (width 0.1)) + (fp_line (start -2.75 2.34) (end -2.75 2.74) (layer F.Fab) (width 0.1)) + (fp_line (start -2.75 2.74) (end -1.705 2.74) (layer F.Fab) (width 0.1)) + (fp_line (start 1.705 2.34) (end 2.75 2.34) (layer F.Fab) (width 0.1)) + (fp_line (start 2.75 2.34) (end 2.75 2.74) (layer F.Fab) (width 0.1)) + (fp_line (start 2.75 2.74) (end 1.705 2.74) (layer F.Fab) (width 0.1)) + (fp_line (start -1.705 3.61) (end -2.75 3.61) (layer F.Fab) (width 0.1)) + (fp_line (start -2.75 3.61) (end -2.75 4.01) (layer F.Fab) (width 0.1)) + (fp_line (start -2.75 4.01) (end -1.705 4.01) (layer F.Fab) (width 0.1)) + (fp_line (start 1.705 3.61) (end 2.75 3.61) (layer F.Fab) (width 0.1)) + (fp_line (start 2.75 3.61) (end 2.75 4.01) (layer F.Fab) (width 0.1)) + (fp_line (start 2.75 4.01) (end 1.705 4.01) (layer F.Fab) (width 0.1)) + (fp_line (start -1.765 -4.505) (end 1.765 -4.505) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.765 4.505) (end 1.765 4.505) (layer F.SilkS) (width 0.12)) + (fp_line (start -3.09 -4.44) (end -1.765 -4.44) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.765 -4.505) (end -1.765 -4.44) (layer F.SilkS) (width 0.12)) + (fp_line (start 1.765 -4.505) (end 1.765 -4.44) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.765 4.44) (end -1.765 4.505) (layer F.SilkS) (width 0.12)) + (fp_line (start 1.765 4.44) (end 1.765 4.505) (layer F.SilkS) (width 0.12)) + (fp_line (start -4.3 -4.95) (end -4.3 4.95) (layer F.CrtYd) (width 0.05)) + (fp_line (start -4.3 4.95) (end 4.3 4.95) (layer F.CrtYd) (width 0.05)) + (fp_line (start 4.3 4.95) (end 4.3 -4.95) (layer F.CrtYd) (width 0.05)) + (fp_line (start 4.3 -4.95) (end -4.3 -4.95) (layer F.CrtYd) (width 0.05)) + (fp_text user %R (at 0 0 90) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (pad 14 smd rect (at 1.95 3.81) (size 2.4 0.74) (layers F.Cu F.Paste F.Mask) + (net 17 "Net-(J5-Pad14)")) + (pad 13 smd rect (at -1.95 3.81) (size 2.4 0.74) (layers F.Cu F.Paste F.Mask) + (net 18 "Net-(J5-Pad13)")) + (pad 12 smd rect (at 1.95 2.54) (size 2.4 0.74) (layers F.Cu F.Paste F.Mask) + (net 19 "Net-(J5-Pad12)")) + (pad 11 smd rect (at -1.95 2.54) (size 2.4 0.74) (layers F.Cu F.Paste F.Mask) + (net 3 GND)) + (pad 10 smd rect (at 1.95 1.27) (size 2.4 0.74) (layers F.Cu F.Paste F.Mask) + (net 20 "Net-(J5-Pad10)")) + (pad 9 smd rect (at -1.95 1.27) (size 2.4 0.74) (layers F.Cu F.Paste F.Mask) + (net 21 "Net-(J5-Pad9)")) + (pad 8 smd rect (at 1.95 0) (size 2.4 0.74) (layers F.Cu F.Paste F.Mask) + (net 22 "Net-(J5-Pad8)")) + (pad 7 smd rect (at -1.95 0) (size 2.4 0.74) (layers F.Cu F.Paste F.Mask) + (net 3 GND)) + (pad 6 smd rect (at 1.95 -1.27) (size 2.4 0.74) (layers F.Cu F.Paste F.Mask) + (net 23 "Net-(J5-Pad6)")) + (pad 5 smd rect (at -1.95 -1.27) (size 2.4 0.74) (layers F.Cu F.Paste F.Mask) + (net 3 GND)) + (pad 4 smd rect (at 1.95 -2.54) (size 2.4 0.74) (layers F.Cu F.Paste F.Mask) + (net 24 "Net-(J5-Pad4)")) + (pad 3 smd rect (at -1.95 -2.54) (size 2.4 0.74) (layers F.Cu F.Paste F.Mask) + (net 2 +3V3)) + (pad 2 smd rect (at 1.95 -3.81) (size 2.4 0.74) (layers F.Cu F.Paste F.Mask) + (net 25 "Net-(J5-Pad2)")) + (pad 1 smd rect (at -1.95 -3.81) (size 2.4 0.74) (layers F.Cu F.Paste F.Mask) + (net 26 "Net-(J5-Pad1)")) + (model ${KISYS3DMOD}/Connector_PinHeader_1.27mm.3dshapes/PinHeader_2x07_P1.27mm_Vertical_SMD.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-3-2-5.08_1x02_P5.08mm_Horizontal (layer F.Cu) (tedit 5B294F11) (tstamp 61C5618D) + (at 49.3268 68.6816 330) + (descr "Terminal Block Phoenix MKDS-3-2-5.08, 2 pins, pitch 5.08mm, size 10.2x11.2mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.farnell.com/datasheets/2138224.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix") + (tags "THT Terminal Block Phoenix MKDS-3-2-5.08 pitch 5.08mm size 10.2x11.2mm^2 drill 1.3mm pad 2.6mm") + (path /61CAE0FD) + (fp_text reference J4 (at 2.54 -6.96 150) (layer F.SilkS) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_text value Fan (at 2.54 6.36 150) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_line (start 8.13 -6.4) (end -3.04 -6.4) (layer F.CrtYd) (width 0.05)) + (fp_line (start 8.13 5.8) (end 8.13 -6.4) (layer F.CrtYd) (width 0.05)) + (fp_line (start -3.04 5.8) (end 8.13 5.8) (layer F.CrtYd) (width 0.05)) + (fp_line (start -3.04 -6.4) (end -3.04 5.8) (layer F.CrtYd) (width 0.05)) + (fp_line (start -2.84 5.6) (end -2.34 5.6) (layer F.SilkS) (width 0.12)) + (fp_line (start -2.84 4.86) (end -2.84 5.6) (layer F.SilkS) (width 0.12)) + (fp_line (start 3.822 0.992) (end 3.427 1.388) (layer F.SilkS) (width 0.12)) + (fp_line (start 6.468 -1.654) (end 6.088 -1.274) (layer F.SilkS) (width 0.12)) + (fp_line (start 4.073 1.274) (end 3.693 1.654) (layer F.SilkS) (width 0.12)) + (fp_line (start 6.734 -1.388) (end 6.339 -0.992) (layer F.SilkS) (width 0.12)) + (fp_line (start 6.353 -1.517) (end 3.564 1.273) (layer F.Fab) (width 0.1)) + (fp_line (start 6.597 -1.273) (end 3.808 1.517) (layer F.Fab) (width 0.1)) + (fp_line (start -1.548 1.281) (end -1.654 1.388) (layer F.SilkS) (width 0.12)) + (fp_line (start 1.388 -1.654) (end 1.281 -1.547) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.282 1.547) (end -1.388 1.654) (layer F.SilkS) (width 0.12)) + (fp_line (start 1.654 -1.388) (end 1.547 -1.281) (layer F.SilkS) (width 0.12)) + (fp_line (start 1.273 -1.517) (end -1.517 1.273) (layer F.Fab) (width 0.1)) + (fp_line (start 1.517 -1.273) (end -1.273 1.517) (layer F.Fab) (width 0.1)) + (fp_line (start 7.68 -5.96) (end 7.68 5.36) (layer F.SilkS) (width 0.12)) + (fp_line (start -2.6 -5.96) (end -2.6 5.36) (layer F.SilkS) (width 0.12)) + (fp_line (start -2.6 5.36) (end 7.68 5.36) (layer F.SilkS) (width 0.12)) + (fp_line (start -2.6 -5.96) (end 7.68 -5.96) (layer F.SilkS) (width 0.12)) + (fp_line (start -2.6 -3.9) (end 7.68 -3.9) (layer F.SilkS) (width 0.12)) + (fp_line (start -2.54 -3.9) (end 7.62 -3.9) (layer F.Fab) (width 0.1)) + (fp_line (start -2.6 2.3) (end 7.68 2.3) (layer F.SilkS) (width 0.12)) + (fp_line (start -2.54 2.3) (end 7.62 2.3) (layer F.Fab) (width 0.1)) + (fp_line (start -2.6 4.8) (end 7.68 4.8) (layer F.SilkS) (width 0.12)) + (fp_line (start -2.54 4.8) (end 7.62 4.8) (layer F.Fab) (width 0.1)) + (fp_line (start -2.54 4.8) (end -2.54 -5.9) (layer F.Fab) (width 0.1)) + (fp_line (start -2.04 5.3) (end -2.54 4.8) (layer F.Fab) (width 0.1)) + (fp_line (start 7.62 5.3) (end -2.04 5.3) (layer F.Fab) (width 0.1)) + (fp_line (start 7.62 -5.9) (end 7.62 5.3) (layer F.Fab) (width 0.1)) + (fp_line (start -2.54 -5.9) (end 7.62 -5.9) (layer F.Fab) (width 0.1)) + (fp_circle (center 5.08 0) (end 7.26 0) (layer F.SilkS) (width 0.12)) + (fp_circle (center 5.08 0) (end 7.08 0) (layer F.Fab) (width 0.1)) + (fp_circle (center 0 0) (end 2.18 0) (layer F.SilkS) (width 0.12)) + (fp_circle (center 0 0) (end 2 0) (layer F.Fab) (width 0.1)) + (fp_text user %R (at 2.54 3.1 150) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (pad 1 thru_hole rect (at 0 0 330) (size 2.6 2.6) (drill 1.3) (layers *.Cu *.Mask) + (net 15 AC_L)) + (pad 2 thru_hole circle (at 5.08 0 330) (size 2.6 2.6) (drill 1.3) (layers *.Cu *.Mask) + (net 98 "Net-(J4-Pad2)")) + (model ${KISYS3DMOD}/TerminalBlock_Phoenix.3dshapes/TerminalBlock_Phoenix_MKDS-3-2-5.08_1x02_P5.08mm_Horizontal.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-3-2-5.08_1x02_P5.08mm_Horizontal (layer F.Cu) (tedit 5B294F11) (tstamp 61C5610C) + (at 36.6268 63.3476 340) + (descr "Terminal Block Phoenix MKDS-3-2-5.08, 2 pins, pitch 5.08mm, size 10.2x11.2mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.farnell.com/datasheets/2138224.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix") + (tags "THT Terminal Block Phoenix MKDS-3-2-5.08 pitch 5.08mm size 10.2x11.2mm^2 drill 1.3mm pad 2.6mm") + (path /61C68CAE) + (fp_text reference J3 (at -1.837849 -6.683269 160) (layer F.SilkS) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_text value Heater (at 2.54 6.36 160) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_line (start 8.13 -6.4) (end -3.04 -6.4) (layer F.CrtYd) (width 0.05)) + (fp_line (start 8.13 5.8) (end 8.13 -6.4) (layer F.CrtYd) (width 0.05)) + (fp_line (start -3.04 5.8) (end 8.13 5.8) (layer F.CrtYd) (width 0.05)) + (fp_line (start -3.04 -6.4) (end -3.04 5.8) (layer F.CrtYd) (width 0.05)) + (fp_line (start -2.84 5.6) (end -2.34 5.6) (layer F.SilkS) (width 0.12)) + (fp_line (start -2.84 4.86) (end -2.84 5.6) (layer F.SilkS) (width 0.12)) + (fp_line (start 3.822 0.992) (end 3.427 1.388) (layer F.SilkS) (width 0.12)) + (fp_line (start 6.468 -1.654) (end 6.088 -1.274) (layer F.SilkS) (width 0.12)) + (fp_line (start 4.073 1.274) (end 3.693 1.654) (layer F.SilkS) (width 0.12)) + (fp_line (start 6.734 -1.388) (end 6.339 -0.992) (layer F.SilkS) (width 0.12)) + (fp_line (start 6.353 -1.517) (end 3.564 1.273) (layer F.Fab) (width 0.1)) + (fp_line (start 6.597 -1.273) (end 3.808 1.517) (layer F.Fab) (width 0.1)) + (fp_line (start -1.548 1.281) (end -1.654 1.388) (layer F.SilkS) (width 0.12)) + (fp_line (start 1.388 -1.654) (end 1.281 -1.547) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.282 1.547) (end -1.388 1.654) (layer F.SilkS) (width 0.12)) + (fp_line (start 1.654 -1.388) (end 1.547 -1.281) (layer F.SilkS) (width 0.12)) + (fp_line (start 1.273 -1.517) (end -1.517 1.273) (layer F.Fab) (width 0.1)) + (fp_line (start 1.517 -1.273) (end -1.273 1.517) (layer F.Fab) (width 0.1)) + (fp_line (start 7.68 -5.96) (end 7.68 5.36) (layer F.SilkS) (width 0.12)) + (fp_line (start -2.6 -5.96) (end -2.6 5.36) (layer F.SilkS) (width 0.12)) + (fp_line (start -2.6 5.36) (end 7.68 5.36) (layer F.SilkS) (width 0.12)) + (fp_line (start -2.6 -5.96) (end 7.68 -5.96) (layer F.SilkS) (width 0.12)) + (fp_line (start -2.6 -3.9) (end 7.68 -3.9) (layer F.SilkS) (width 0.12)) + (fp_line (start -2.54 -3.9) (end 7.62 -3.9) (layer F.Fab) (width 0.1)) + (fp_line (start -2.6 2.3) (end 7.68 2.3) (layer F.SilkS) (width 0.12)) + (fp_line (start -2.54 2.3) (end 7.62 2.3) (layer F.Fab) (width 0.1)) + (fp_line (start -2.6 4.8) (end 7.68 4.8) (layer F.SilkS) (width 0.12)) + (fp_line (start -2.54 4.8) (end 7.62 4.8) (layer F.Fab) (width 0.1)) + (fp_line (start -2.54 4.8) (end -2.54 -5.9) (layer F.Fab) (width 0.1)) + (fp_line (start -2.04 5.3) (end -2.54 4.8) (layer F.Fab) (width 0.1)) + (fp_line (start 7.62 5.3) (end -2.04 5.3) (layer F.Fab) (width 0.1)) + (fp_line (start 7.62 -5.9) (end 7.62 5.3) (layer F.Fab) (width 0.1)) + (fp_line (start -2.54 -5.9) (end 7.62 -5.9) (layer F.Fab) (width 0.1)) + (fp_circle (center 5.08 0) (end 7.26 0) (layer F.SilkS) (width 0.12)) + (fp_circle (center 5.08 0) (end 7.08 0) (layer F.Fab) (width 0.1)) + (fp_circle (center 0 0) (end 2.18 0) (layer F.SilkS) (width 0.12)) + (fp_circle (center 0 0) (end 2 0) (layer F.Fab) (width 0.1)) + (fp_text user %R (at 2.54 3.1 160) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (pad 1 thru_hole rect (at 0 0 340) (size 2.6 2.6) (drill 1.3) (layers *.Cu *.Mask) + (net 16 "Net-(J3-Pad1)")) + (pad 2 thru_hole circle (at 5.08 0 340) (size 2.6 2.6) (drill 1.3) (layers *.Cu *.Mask) + (net 15 AC_L)) + (model ${KISYS3DMOD}/TerminalBlock_Phoenix.3dshapes/TerminalBlock_Phoenix_MKDS-3-2-5.08_1x02_P5.08mm_Horizontal.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Connector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_Vertical (layer F.Cu) (tedit 59FED5CC) (tstamp 61C509A0) + (at 86.9188 44.4246 45) + (descr "Through hole straight pin header, 1x08, 2.54mm pitch, single row") + (tags "Through hole pin header THT 1x08 2.54mm single row") + (path /61D92A4A) + (fp_text reference J2 (at -0.089803 20.205576 45) (layer F.SilkS) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_text value "Front Panel" (at 0 20.11 45) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_line (start -0.635 -1.27) (end 1.27 -1.27) (layer F.Fab) (width 0.1)) + (fp_line (start 1.27 -1.27) (end 1.27 19.05) (layer F.Fab) (width 0.1)) + (fp_line (start 1.27 19.05) (end -1.27 19.05) (layer F.Fab) (width 0.1)) + (fp_line (start -1.27 19.05) (end -1.27 -0.635) (layer F.Fab) (width 0.1)) + (fp_line (start -1.27 -0.635) (end -0.635 -1.27) (layer F.Fab) (width 0.1)) + (fp_line (start -1.33 19.11) (end 1.33 19.11) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.33 1.27) (end -1.33 19.11) (layer F.SilkS) (width 0.12)) + (fp_line (start 1.33 1.27) (end 1.33 19.11) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.33 1.27) (end 1.33 1.27) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.33 0) (end -1.33 -1.33) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.33 -1.33) (end 0 -1.33) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.8 -1.8) (end -1.8 19.55) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.8 19.55) (end 1.8 19.55) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.8 19.55) (end 1.8 -1.8) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.8 -1.8) (end -1.8 -1.8) (layer F.CrtYd) (width 0.05)) + (fp_text user %R (at 0 8.89 135) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (pad 8 thru_hole oval (at 0 17.78 45) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 9 KEY_DN)) + (pad 7 thru_hole oval (at 0 15.24 45) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 10 KEY_OK)) + (pad 6 thru_hole oval (at 0 12.7 45) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 11 KEY_UP)) + (pad 5 thru_hole oval (at 0 10.16 45) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 12 "Net-(J2-Pad5)")) + (pad 4 thru_hole oval (at 0 7.62 45) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 13 "Net-(J2-Pad4)")) + (pad 3 thru_hole oval (at 0 5.08 45) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 14 "Net-(J2-Pad3)")) + (pad 2 thru_hole oval (at 0 2.54 45) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 3 GND)) + (pad 1 thru_hole rect (at 0 0 45) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 2 +3V3)) + (model ${KISYS3DMOD}/Connector_PinHeader_2.54mm.3dshapes/PinHeader_1x08_P2.54mm_Vertical.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical (layer F.Cu) (tedit 59FED5CC) (tstamp 61C50984) + (at 73.5076 80.5688 128) + (descr "Through hole straight pin header, 1x04, 2.54mm pitch, single row") + (tags "Through hole pin header THT 1x04 2.54mm single row") + (path /61D5DAC8) + (fp_text reference J1 (at -0.323948 -2.638342 218) (layer F.SilkS) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_text value BME280 (at 0 9.95 128) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_line (start -0.635 -1.27) (end 1.27 -1.27) (layer F.Fab) (width 0.1)) + (fp_line (start 1.27 -1.27) (end 1.27 8.89) (layer F.Fab) (width 0.1)) + (fp_line (start 1.27 8.89) (end -1.27 8.89) (layer F.Fab) (width 0.1)) + (fp_line (start -1.27 8.89) (end -1.27 -0.635) (layer F.Fab) (width 0.1)) + (fp_line (start -1.27 -0.635) (end -0.635 -1.27) (layer F.Fab) (width 0.1)) + (fp_line (start -1.33 8.95) (end 1.33 8.95) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.33 1.27) (end -1.33 8.95) (layer F.SilkS) (width 0.12)) + (fp_line (start 1.33 1.27) (end 1.33 8.95) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.33 1.27) (end 1.33 1.27) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.33 0) (end -1.33 -1.33) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.33 -1.33) (end 0 -1.33) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.8 -1.8) (end -1.8 9.4) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.8 9.4) (end 1.8 9.4) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.8 9.4) (end 1.8 -1.8) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.8 -1.8) (end -1.8 -1.8) (layer F.CrtYd) (width 0.05)) + (fp_text user %R (at 0 3.81 38) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (pad 4 thru_hole oval (at 0 7.62 128) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 7 "Net-(J1-Pad4)")) + (pad 3 thru_hole oval (at 0 5.08 128) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 8 "Net-(J1-Pad3)")) + (pad 2 thru_hole oval (at 0 2.54 128) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 3 GND)) + (pad 1 thru_hole rect (at 0 0 128) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 2 +3V3)) + (model ${KISYS3DMOD}/Connector_PinHeader_2.54mm.3dshapes/PinHeader_1x04_P2.54mm_Vertical.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder (layer F.Cu) (tedit 5F68FEEF) (tstamp 61C6669E) + (at 86.9696 60.0964 40) + (descr "Capacitor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf, https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing), generated with kicad-footprint-generator") + (tags "capacitor handsolder") + (path /61E5FBA3) + (attr smd) + (fp_text reference C7 (at 0 -1.68 40) (layer F.SilkS) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_text value 100n (at 0 1.68 40) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_line (start -1 0.625) (end -1 -0.625) (layer F.Fab) (width 0.1)) + (fp_line (start -1 -0.625) (end 1 -0.625) (layer F.Fab) (width 0.1)) + (fp_line (start 1 -0.625) (end 1 0.625) (layer F.Fab) (width 0.1)) + (fp_line (start 1 0.625) (end -1 0.625) (layer F.Fab) (width 0.1)) + (fp_line (start -0.261252 -0.735) (end 0.261252 -0.735) (layer F.SilkS) (width 0.12)) + (fp_line (start -0.261252 0.735) (end 0.261252 0.735) (layer F.SilkS) (width 0.12)) + (fp_line (start -1.88 0.98) (end -1.88 -0.98) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.88 -0.98) (end 1.88 -0.98) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.88 -0.98) (end 1.88 0.98) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.88 0.98) (end -1.88 0.98) (layer F.CrtYd) (width 0.05)) + (fp_text user %R (at 0 0 40) (layer F.Fab) + (effects (font (size 0.5 0.5) (thickness 0.08))) + ) + (pad 2 smd roundrect (at 1.0375 0 40) (size 1.175 1.45) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.2127659574468085) + (net 3 GND)) + (pad 1 smd roundrect (at -1.0375 0 40) (size 1.175 1.45) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.2127659574468085) + (net 6 NRST)) + (model ${KISYS3DMOD}/Capacitor_SMD.3dshapes/C_0805_2012Metric.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder (layer B.Cu) (tedit 5F68FEEF) (tstamp 61C5FA36) + (at 52.374798 34.624098 90) + (descr "Capacitor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf, https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing), generated with kicad-footprint-generator") + (tags "capacitor handsolder") + (path /61D53522) + (attr smd) + (fp_text reference C6 (at 2.823298 0.000002 90) (layer B.SilkS) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_text value 100n (at 0 -1.68 90) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_line (start -1 -0.625) (end -1 0.625) (layer B.Fab) (width 0.1)) + (fp_line (start -1 0.625) (end 1 0.625) (layer B.Fab) (width 0.1)) + (fp_line (start 1 0.625) (end 1 -0.625) (layer B.Fab) (width 0.1)) + (fp_line (start 1 -0.625) (end -1 -0.625) (layer B.Fab) (width 0.1)) + (fp_line (start -0.261252 0.735) (end 0.261252 0.735) (layer B.SilkS) (width 0.12)) + (fp_line (start -0.261252 -0.735) (end 0.261252 -0.735) (layer B.SilkS) (width 0.12)) + (fp_line (start -1.88 -0.98) (end -1.88 0.98) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.88 0.98) (end 1.88 0.98) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.88 0.98) (end 1.88 -0.98) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.88 -0.98) (end -1.88 -0.98) (layer B.CrtYd) (width 0.05)) + (fp_text user %R (at 0 0 90) (layer B.Fab) + (effects (font (size 0.5 0.5) (thickness 0.08)) (justify mirror)) + ) + (pad 2 smd roundrect (at 1.0375 0 90) (size 1.175 1.45) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.2127659574468085) + (net 3 GND)) + (pad 1 smd roundrect (at -1.0375 0 90) (size 1.175 1.45) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.2127659574468085) + (net 2 +3V3)) + (model ${KISYS3DMOD}/Capacitor_SMD.3dshapes/C_0805_2012Metric.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder (layer B.Cu) (tedit 5F68FEEF) (tstamp 61C5FA66) + (at 50.0888 34.6456 90) + (descr "Capacitor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf, https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing), generated with kicad-footprint-generator") + (tags "capacitor handsolder") + (path /61D5351C) + (attr smd) + (fp_text reference C5 (at 2.8448 0.0508 90) (layer B.SilkS) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_text value 4u7 (at 0 -1.68 90) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_line (start -1 -0.625) (end -1 0.625) (layer B.Fab) (width 0.1)) + (fp_line (start -1 0.625) (end 1 0.625) (layer B.Fab) (width 0.1)) + (fp_line (start 1 0.625) (end 1 -0.625) (layer B.Fab) (width 0.1)) + (fp_line (start 1 -0.625) (end -1 -0.625) (layer B.Fab) (width 0.1)) + (fp_line (start -0.261252 0.735) (end 0.261252 0.735) (layer B.SilkS) (width 0.12)) + (fp_line (start -0.261252 -0.735) (end 0.261252 -0.735) (layer B.SilkS) (width 0.12)) + (fp_line (start -1.88 -0.98) (end -1.88 0.98) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.88 0.98) (end 1.88 0.98) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.88 0.98) (end 1.88 -0.98) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.88 -0.98) (end -1.88 -0.98) (layer B.CrtYd) (width 0.05)) + (fp_text user %R (at 0 0 90) (layer B.Fab) + (effects (font (size 0.5 0.5) (thickness 0.08)) (justify mirror)) + ) + (pad 2 smd roundrect (at 1.0375 0 90) (size 1.175 1.45) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.2127659574468085) + (net 3 GND)) + (pad 1 smd roundrect (at -1.0375 0 90) (size 1.175 1.45) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.2127659574468085) + (net 2 +3V3)) + (model ${KISYS3DMOD}/Capacitor_SMD.3dshapes/C_0805_2012Metric.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder (layer B.Cu) (tedit 5F68FEEF) (tstamp 61C50939) + (at 76.8233 54.8776) + (descr "Capacitor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf, https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing), generated with kicad-footprint-generator") + (tags "capacitor handsolder") + (path /61C5A31B) + (attr smd) + (fp_text reference C4 (at 2.9327 -0.0644) (layer B.SilkS) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_text value 100n (at 0 -1.68) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_line (start -1 -0.625) (end -1 0.625) (layer B.Fab) (width 0.1)) + (fp_line (start -1 0.625) (end 1 0.625) (layer B.Fab) (width 0.1)) + (fp_line (start 1 0.625) (end 1 -0.625) (layer B.Fab) (width 0.1)) + (fp_line (start 1 -0.625) (end -1 -0.625) (layer B.Fab) (width 0.1)) + (fp_line (start -0.261252 0.735) (end 0.261252 0.735) (layer B.SilkS) (width 0.12)) + (fp_line (start -0.261252 -0.735) (end 0.261252 -0.735) (layer B.SilkS) (width 0.12)) + (fp_line (start -1.88 -0.98) (end -1.88 0.98) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.88 0.98) (end 1.88 0.98) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.88 0.98) (end 1.88 -0.98) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.88 -0.98) (end -1.88 -0.98) (layer B.CrtYd) (width 0.05)) + (fp_text user %R (at 0 0) (layer B.Fab) + (effects (font (size 0.5 0.5) (thickness 0.08)) (justify mirror)) + ) + (pad 2 smd roundrect (at 1.0375 0) (size 1.175 1.45) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.2127659574468085) + (net 3 GND)) + (pad 1 smd roundrect (at -1.0375 0) (size 1.175 1.45) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.2127659574468085) + (net 2 +3V3)) + (model ${KISYS3DMOD}/Capacitor_SMD.3dshapes/C_0805_2012Metric.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder (layer B.Cu) (tedit 5F68FEEF) (tstamp 61C50928) + (at 76.7588 57.2516) + (descr "Capacitor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf, https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing), generated with kicad-footprint-generator") + (tags "capacitor handsolder") + (path /61C57F2C) + (attr smd) + (fp_text reference C3 (at 2.9464 0) (layer B.SilkS) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_text value 4u7 (at 0 -1.68) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_line (start -1 -0.625) (end -1 0.625) (layer B.Fab) (width 0.1)) + (fp_line (start -1 0.625) (end 1 0.625) (layer B.Fab) (width 0.1)) + (fp_line (start 1 0.625) (end 1 -0.625) (layer B.Fab) (width 0.1)) + (fp_line (start 1 -0.625) (end -1 -0.625) (layer B.Fab) (width 0.1)) + (fp_line (start -0.261252 0.735) (end 0.261252 0.735) (layer B.SilkS) (width 0.12)) + (fp_line (start -0.261252 -0.735) (end 0.261252 -0.735) (layer B.SilkS) (width 0.12)) + (fp_line (start -1.88 -0.98) (end -1.88 0.98) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.88 0.98) (end 1.88 0.98) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.88 0.98) (end 1.88 -0.98) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.88 -0.98) (end -1.88 -0.98) (layer B.CrtYd) (width 0.05)) + (fp_text user %R (at 0 0) (layer B.Fab) + (effects (font (size 0.5 0.5) (thickness 0.08)) (justify mirror)) + ) + (pad 2 smd roundrect (at 1.0375 0) (size 1.175 1.45) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.2127659574468085) + (net 3 GND)) + (pad 1 smd roundrect (at -1.0375 0) (size 1.175 1.45) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.2127659574468085) + (net 2 +3V3)) + (model ${KISYS3DMOD}/Capacitor_SMD.3dshapes/C_0805_2012Metric.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder (layer B.Cu) (tedit 5F68FEEF) (tstamp 61C6ADF9) + (at 84.188152 69.754673 180) + (descr "Capacitor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf, https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing), generated with kicad-footprint-generator") + (tags "capacitor handsolder") + (path /61C62D85) + (attr smd) + (fp_text reference C2 (at 0.114151 -1.670127) (layer B.SilkS) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_text value 30p (at 0 -1.68) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_line (start -1 -0.625) (end -1 0.625) (layer B.Fab) (width 0.1)) + (fp_line (start -1 0.625) (end 1 0.625) (layer B.Fab) (width 0.1)) + (fp_line (start 1 0.625) (end 1 -0.625) (layer B.Fab) (width 0.1)) + (fp_line (start 1 -0.625) (end -1 -0.625) (layer B.Fab) (width 0.1)) + (fp_line (start -0.261252 0.735) (end 0.261252 0.735) (layer B.SilkS) (width 0.12)) + (fp_line (start -0.261252 -0.735) (end 0.261252 -0.735) (layer B.SilkS) (width 0.12)) + (fp_line (start -1.88 -0.98) (end -1.88 0.98) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.88 0.98) (end 1.88 0.98) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.88 0.98) (end 1.88 -0.98) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.88 -0.98) (end -1.88 -0.98) (layer B.CrtYd) (width 0.05)) + (fp_text user %R (at 0 0) (layer B.Fab) + (effects (font (size 0.5 0.5) (thickness 0.08)) (justify mirror)) + ) + (pad 2 smd roundrect (at 1.0375 0 180) (size 1.175 1.45) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.2127659574468085) + (net 3 GND)) + (pad 1 smd roundrect (at -1.0375 0 180) (size 1.175 1.45) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.2127659574468085) + (net 5 "Net-(C2-Pad1)")) + (model ${KISYS3DMOD}/Capacitor_SMD.3dshapes/C_0805_2012Metric.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder (layer B.Cu) (tedit 5F68FEEF) (tstamp 61C67F43) + (at 80.102647 69.754676) + (descr "Capacitor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf, https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing), generated with kicad-footprint-generator") + (tags "capacitor handsolder") + (path /61C617E6) + (attr smd) + (fp_text reference C1 (at 0 1.68) (layer B.SilkS) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_text value 30p (at 0 -1.68) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_line (start -1 -0.625) (end -1 0.625) (layer B.Fab) (width 0.1)) + (fp_line (start -1 0.625) (end 1 0.625) (layer B.Fab) (width 0.1)) + (fp_line (start 1 0.625) (end 1 -0.625) (layer B.Fab) (width 0.1)) + (fp_line (start 1 -0.625) (end -1 -0.625) (layer B.Fab) (width 0.1)) + (fp_line (start -0.261252 0.735) (end 0.261252 0.735) (layer B.SilkS) (width 0.12)) + (fp_line (start -0.261252 -0.735) (end 0.261252 -0.735) (layer B.SilkS) (width 0.12)) + (fp_line (start -1.88 -0.98) (end -1.88 0.98) (layer B.CrtYd) (width 0.05)) + (fp_line (start -1.88 0.98) (end 1.88 0.98) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.88 0.98) (end 1.88 -0.98) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.88 -0.98) (end -1.88 -0.98) (layer B.CrtYd) (width 0.05)) + (fp_text user %R (at 0 0) (layer B.Fab) + (effects (font (size 0.5 0.5) (thickness 0.08)) (justify mirror)) + ) + (pad 2 smd roundrect (at 1.0375 0) (size 1.175 1.45) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.2127659574468085) + (net 3 GND)) + (pad 1 smd roundrect (at -1.0375 0) (size 1.175 1.45) (layers B.Cu B.Paste B.Mask) (roundrect_rratio 0.2127659574468085) + (net 4 "Net-(C1-Pad1)")) + (model ${KISYS3DMOD}/Capacitor_SMD.3dshapes/C_0805_2012Metric.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module my_additions:Buzzer_D9_H5.5 (layer F.Cu) (tedit 604A9093) (tstamp 61C65403) + (at 64.6684 80.6704 35) + (tags buzzer) + (path /61C556DB) + (fp_text reference BZ1 (at 0 0 125) (layer F.SilkS) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_text value Buzzer (at 0.1 5.6 35) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_line (start -2.6 -1.5) (end -2.2 -1.5) (layer F.SilkS) (width 0.12)) + (fp_line (start -2.4 -1.3) (end -2.4 -1.7) (layer F.SilkS) (width 0.12)) + (fp_circle (center 0 0) (end 4.5 0) (layer F.SilkS) (width 0.12)) + (pad 2 thru_hole circle (at 2.5 0 35) (size 1.8 1.8) (drill 0.9) (layers *.Cu *.Mask) + (net 1 "Net-(BZ1-Pad2)")) + (pad 1 thru_hole rect (at -2.5 0 35) (size 1.8 1.8) (drill 0.9) (layers *.Cu *.Mask) + (net 2 +3V3)) + (model "$(my_additions)/Buzzer_D9_H5.5.step" + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (gr_text 220V (at 22.606 58.5724) (layer F.SilkS) + (effects (font (size 1 1) (thickness 0.15))) + ) + (gr_text Fan (at 48.3616 75.1332 -30) (layer F.SilkS) + (effects (font (size 1 1) (thickness 0.15))) + ) + (gr_text Heater (at 36.7792 70.0024 -20) (layer F.SilkS) + (effects (font (size 1 1) (thickness 0.15))) + ) + (gr_text JLCJLCJLCJLC (at 49.6824 73.152 -30) (layer F.SilkS) + (effects (font (size 1 1) (thickness 0.15))) + ) + (gr_text "Front\nPanel" (at 84.1756 42.3164 -45) (layer F.SilkS) (tstamp 61C7E3BC) + (effects (font (size 0.7 0.7) (thickness 0.15))) + ) + (gr_text DN (at 97.8408 58.7756 45) (layer F.SilkS) (tstamp 61C7E3BC) + (effects (font (size 0.7 0.7) (thickness 0.15))) + ) + (gr_text OK (at 96.012 56.9468 45) (layer F.SilkS) (tstamp 61C7E3BC) + (effects (font (size 0.7 0.7) (thickness 0.15))) + ) + (gr_text UP (at 94.1832 55.0672 45) (layer F.SilkS) (tstamp 61C7E3BC) + (effects (font (size 0.7 0.7) (thickness 0.15))) + ) + (gr_text SDA (at 90.6272 51.562 45) (layer F.SilkS) (tstamp 61C7E3BC) + (effects (font (size 0.7 0.7) (thickness 0.15))) + ) + (gr_text SCL (at 89.154 50.038 45) (layer F.SilkS) (tstamp 61C7E3BC) + (effects (font (size 0.7 0.7) (thickness 0.15))) + ) + (gr_text GND (at 86.9188 47.9552 45) (layer F.SilkS) (tstamp 61C7E3BC) + (effects (font (size 0.7 0.7) (thickness 0.15))) + ) + (gr_text 3v3 (at 85.09 46.1264 45) (layer F.SilkS) + (effects (font (size 0.7 0.7) (thickness 0.15))) + ) + (gr_text Sensor (at 81.3308 75.5396 37) (layer F.SilkS) + (effects (font (size 0.7 0.7) (thickness 0.15)) (justify left)) + ) + (gr_text SDA (at 78.5876 74.7776 -52) (layer F.SilkS) (tstamp 61C7E2BD) + (effects (font (size 0.7 0.7) (thickness 0.15)) (justify right)) + ) + (gr_text SCL (at 76.5048 76.3524 -52) (layer F.SilkS) (tstamp 61C7E2BD) + (effects (font (size 0.7 0.7) (thickness 0.15)) (justify right)) + ) + (gr_text GND (at 74.5744 77.8256 -52) (layer F.SilkS) (tstamp 61C7E2BD) + (effects (font (size 0.7 0.7) (thickness 0.15)) (justify right)) + ) + (gr_text 3v3 (at 72.4408 79.1972 -52) (layer F.SilkS) (tstamp 61C7E254) + (effects (font (size 0.7 0.7) (thickness 0.15)) (justify right)) + ) + (gr_text "FilaDry rev.2\n©McFLY December 2021" (at 30.327601 22.148802) (layer B.SilkS) (tstamp 61C7E175) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (gr_text "FilaDry rev.2\n©McFLY December 2021" (at 30.2768 22.1488) (layer F.SilkS) + (effects (font (size 1 1) (thickness 0.15))) + ) + (gr_line (start 64.563408 90.208727) (end 103.963945 59.425653) (layer Edge.Cuts) (width 0.05) (tstamp 61C70447)) + (gr_arc (start 20.0408 124.9936) (end 20.0408 18.4936) (angle 52) (layer Edge.Cuts) (width 0.05)) + (gr_arc (start 20.0408 124.9936) (end 20.0408 68.4936) (angle 52) (layer Edge.Cuts) (width 0.05) (tstamp 61C7043F)) + (gr_line (start 20.0408 68.4936) (end 20.0408 18.4936) (layer Edge.Cuts) (width 0.05) (tstamp 61C5575C)) + + (via (at 42.9768 26.162) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 61C7DF6F)) + (via (at 44.7548 26.162) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 61C7DF6F)) + (via (at 42.1132 27.432) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 61C7DF6F)) + (via (at 43.8404 27.432) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 61C7DF6F)) + (via (at 42.9768 28.7528) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 61C7DF6F)) + (via (at 64.77 88.3412) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 61C7DF6F)) + (via (at 63.7032 87.2236) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 61C7DF6F)) + (via (at 66.1416 87.4268) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 61C7DF6F)) + (via (at 67.6656 86.4108) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 61C7DF6F)) + (via (at 65.1256 86.2076) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 61C7DF6F)) + (via (at 66.5988 85.09) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 61C7DF6F)) + (via (at 88.3412 63.6016) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 61C7DF6F)) + (via (at 89.2556 64.7192) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 61C7DF6F)) + (via (at 90.2716 65.8876) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 61C7DF6F)) + (via (at 89.8144 63.3984) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 61C7DF6F)) + (via (at 90.7796 64.6176) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 61C7DF6F)) + (via (at 91.2876 63.1952) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 61C7DF6F)) + (segment (start 94.6912 65.2272) (end 94.746163 62.98476) (width 0.3) (layer F.Cu) (net 1)) + (segment (start 84.582 73.0504) (end 94.6912 65.2272) (width 0.3) (layer F.Cu) (net 1)) + (segment (start 78.6892 73.0504) (end 84.582 73.0504) (width 0.3) (layer F.Cu) (net 1)) + (segment (start 70.420341 79.236459) (end 78.6892 73.0504) (width 0.3) (layer F.Cu) (net 1)) + (segment (start 66.71628 79.236459) (end 70.420341 79.236459) (width 0.3) (layer F.Cu) (net 1)) + (via (at 75.7428 58.7248) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 2)) + (segment (start 76.2708 59.2528) (end 75.7428 58.7248) (width 0.3) (layer F.Cu) (net 2)) + (segment (start 76.2708 60.3866) (end 76.2708 59.2528) (width 0.3) (layer F.Cu) (net 2)) + (segment (start 75.7428 57.2731) (end 75.7213 57.2516) (width 0.3) (layer B.Cu) (net 2)) + (segment (start 75.7213 54.9421) (end 75.7858 54.8776) (width 0.3) (layer B.Cu) (net 2)) + (segment (start 52.2548 42.7576) (end 52.3108 42.8136) (width 0.5) (layer B.Cu) (net 2)) + (segment (start 52.353296 35.6831) (end 52.374798 35.661598) (width 0.5) (layer B.Cu) (net 2)) + (segment (start 50.0888 35.6831) (end 52.353296 35.6831) (width 0.5) (layer B.Cu) (net 2)) + (segment (start 61.042 33.7312) (end 57.4548 33.7312) (width 0.5) (layer F.Cu) (net 2)) + (segment (start 57.4548 33.7312) (end 56.0832 35.1028) (width 0.5) (layer F.Cu) (net 2)) + (segment (start 56.0832 39.0412) (end 52.3108 42.8136) (width 0.5) (layer F.Cu) (net 2)) + (segment (start 56.0832 35.1028) (end 56.0832 39.0412) (width 0.5) (layer F.Cu) (net 2)) + (segment (start 52.3108 39.83) (end 52.2064 39.7256) (width 0.5) (layer B.Cu) (net 2)) + (segment (start 52.3108 42.8136) (end 52.3108 39.83) (width 0.5) (layer B.Cu) (net 2)) + (segment (start 52.2064 35.829996) (end 52.374798 35.661598) (width 0.5) (layer B.Cu) (net 2)) + (segment (start 52.2064 39.7256) (end 52.2064 35.829996) (width 0.5) (layer B.Cu) (net 2)) + (segment (start 52.3108 42.8136) (end 56.5672 38.5572) (width 0.5) (layer B.Cu) (net 2)) + (segment (start 56.5672 38.5572) (end 68.072 38.5572) (width 0.5) (layer B.Cu) (net 2)) + (segment (start 75.7858 46.271) (end 75.7858 54.8776) (width 0.5) (layer B.Cu) (net 2)) + (segment (start 74.2442 44.4246) (end 74.0918 44.577) (width 0.5) (layer B.Cu) (net 2)) + (segment (start 86.9188 44.4246) (end 74.2442 44.4246) (width 0.5) (layer B.Cu) (net 2)) + (segment (start 74.0918 44.577) (end 75.7858 46.271) (width 0.5) (layer B.Cu) (net 2)) + (segment (start 68.072 38.5572) (end 74.0918 44.577) (width 0.5) (layer B.Cu) (net 2)) + (segment (start 71.5264 82.0928) (end 73.5076 80.5688) (width 0.5) (layer B.Cu) (net 2)) + (segment (start 62.62052 82.104341) (end 71.5264 82.0928) (width 0.5) (layer B.Cu) (net 2)) + (segment (start 75.7858 57.1871) (end 75.7213 57.2516) (width 0.5) (layer B.Cu) (net 2)) + (segment (start 75.7858 54.8776) (end 75.7858 57.1871) (width 0.5) (layer B.Cu) (net 2)) + (segment (start 75.7213 58.7033) (end 75.7428 58.7248) (width 0.5) (layer B.Cu) (net 2)) + (segment (start 75.7213 57.2516) (end 75.7213 58.7033) (width 0.5) (layer B.Cu) (net 2)) + (via (at 75.7428 69.0372) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 2)) + (segment (start 75.7428 58.7248) (end 75.7428 69.0372) (width 0.5) (layer B.Cu) (net 2)) + (via (at 73.7616 75.5396) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 2)) + (segment (start 72.6948 79.5528) (end 73.5076 80.5688) (width 0.5) (layer B.Cu) (net 2)) + (segment (start 72.8472 76.2) (end 72.6948 79.5528) (width 0.5) (layer B.Cu) (net 2)) + (segment (start 73.7616 75.5396) (end 72.8472 76.2) (width 0.5) (layer B.Cu) (net 2)) + (segment (start 75.7428 74.0664) (end 73.7616 75.5396) (width 0.5) (layer F.Cu) (net 2)) + (segment (start 75.7428 69.0372) (end 75.7428 74.0664) (width 0.5) (layer F.Cu) (net 2)) + (segment (start 77.2708 59.3384) (end 77.2708 60.3866) (width 0.3) (layer F.Cu) (net 2)) + (segment (start 77.1852 59.2528) (end 77.2708 59.3384) (width 0.3) (layer F.Cu) (net 2)) + (segment (start 76.7708 59.2956) (end 76.728 59.2528) (width 0.3) (layer F.Cu) (net 2)) + (segment (start 76.728 59.2528) (end 77.1852 59.2528) (width 0.3) (layer F.Cu) (net 2)) + (segment (start 76.7708 60.3866) (end 76.7708 59.2956) (width 0.3) (layer F.Cu) (net 2)) + (segment (start 76.2708 59.2528) (end 76.728 59.2528) (width 0.3) (layer F.Cu) (net 2)) + (segment (start 83.150648 69.754677) (end 83.150651 69.754675) (width 0.3) (layer B.Cu) (net 3)) + (via (at 77.7748 58.7248) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 3)) + (segment (start 77.7708 58.7288) (end 77.7748 58.7248) (width 0.3) (layer F.Cu) (net 3)) + (segment (start 77.7708 60.3866) (end 77.7708 58.7288) (width 0.3) (layer F.Cu) (net 3)) + (segment (start 77.7748 57.2731) (end 77.7963 57.2516) (width 0.3) (layer B.Cu) (net 3)) + (segment (start 77.7963 54.9421) (end 77.8608 54.8776) (width 0.3) (layer B.Cu) (net 3)) + (via (at 82.1436 71.374) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 3)) + (segment (start 82.137324 71.367724) (end 82.1436 71.374) (width 0.3) (layer B.Cu) (net 3)) + (segment (start 82.137324 69.754676) (end 82.137324 71.367724) (width 0.3) (layer B.Cu) (net 3)) + (segment (start 81.140146 69.754676) (end 82.137324 69.754676) (width 0.3) (layer B.Cu) (net 3)) + (segment (start 82.137324 69.754676) (end 83.150648 69.754677) (width 0.3) (layer B.Cu) (net 3)) + (via (at 41.2496 26.162) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 3)) + (segment (start 79.065146 67.834175) (end 79.684645 67.214675) (width 0.3) (layer B.Cu) (net 4)) + (segment (start 79.065146 69.754676) (end 79.065146 67.834175) (width 0.3) (layer B.Cu) (net 4)) + (segment (start 78.2708 60.3866) (end 78.2708 63.3864) (width 0.3) (layer F.Cu) (net 4)) + (segment (start 79.684646 64.800246) (end 79.684646 67.214675) (width 0.3) (layer F.Cu) (net 4)) + (segment (start 78.2708 63.3864) (end 79.684646 64.800246) (width 0.3) (layer F.Cu) (net 4)) + (segment (start 84.642647 67.156674) (end 84.584646 67.214675) (width 0.3) (layer F.Cu) (net 5)) + (segment (start 84.642647 63.531674) (end 84.642647 67.156674) (width 0.3) (layer F.Cu) (net 5)) + (segment (start 85.225651 67.85568) (end 84.584646 67.214675) (width 0.3) (layer B.Cu) (net 5)) + (segment (start 85.225651 69.754673) (end 85.225651 67.85568) (width 0.3) (layer B.Cu) (net 5)) + (segment (start 85.020292 61.917829) (end 86.174829 60.763292) (width 0.3) (layer F.Cu) (net 6)) + (segment (start 79.647029 61.917829) (end 85.020292 61.917829) (width 0.3) (layer F.Cu) (net 6)) + (segment (start 79.2708 61.5416) (end 79.647029 61.917829) (width 0.3) (layer F.Cu) (net 6)) + (segment (start 79.2708 60.3866) (end 79.2708 61.5416) (width 0.3) (layer F.Cu) (net 6)) + (segment (start 71.2978 47.2186) (end 71.2978 48.4886) (width 0.3) (layer F.Cu) (net 6)) + (segment (start 79.2708 56.4616) (end 79.2708 60.3866) (width 0.3) (layer F.Cu) (net 6)) + (segment (start 71.2978 48.4886) (end 79.2708 56.4616) (width 0.3) (layer F.Cu) (net 6)) + (segment (start 73.024193 60.939502) (end 73.024193 61.187793) (width 0.3) (layer B.Cu) (net 7)) + (segment (start 74.6252 69.4436) (end 79.512242 75.87746) (width 0.3) (layer B.Cu) (net 7)) + (segment (start 74.6252 63.5508) (end 74.6252 69.4436) (width 0.3) (layer B.Cu) (net 7)) + (segment (start 73.024193 61.949793) (end 74.6252 63.5508) (width 0.3) (layer B.Cu) (net 7)) + (segment (start 73.024193 60.939502) (end 73.024193 61.949793) (width 0.3) (layer B.Cu) (net 7)) + (segment (start 73.7616 63.9572) (end 73.7616 72.943087) (width 0.3) (layer B.Cu) (net 8)) + (segment (start 70.738187 60.9395) (end 73.7616 63.9572) (width 0.3) (layer B.Cu) (net 8)) + (segment (start 73.7616 72.9488) (end 77.510695 77.44124) (width 0.3) (layer B.Cu) (net 8)) + (segment (start 84.462555 53.4616) (end 85.405831 54.404876) (width 0.3) (layer F.Cu) (net 9)) + (segment (start 83.1958 53.4616) (end 84.462555 53.4616) (width 0.3) (layer F.Cu) (net 9)) + (segment (start 96.015439 56.996959) (end 99.491159 56.996959) (width 0.3) (layer F.Cu) (net 9)) + (segment (start 93.423356 54.404876) (end 96.015439 56.996959) (width 0.3) (layer F.Cu) (net 9)) + (segment (start 85.405831 54.404876) (end 93.423356 54.404876) (width 0.3) (layer F.Cu) (net 9)) + (segment (start 84.669675 52.9616) (end 85.612941 53.904866) (width 0.3) (layer F.Cu) (net 10)) + (segment (start 83.1958 52.9616) (end 84.669675 52.9616) (width 0.3) (layer F.Cu) (net 10)) + (segment (start 85.612941 53.904866) (end 93.630466 53.904866) (width 0.3) (layer F.Cu) (net 10)) + (segment (start 94.926507 55.200907) (end 97.695107 55.200907) (width 0.3) (layer F.Cu) (net 10)) + (segment (start 93.630466 53.904866) (end 94.926507 55.200907) (width 0.3) (layer F.Cu) (net 10)) + (segment (start 85.820051 53.404856) (end 95.899056 53.404856) (width 0.3) (layer F.Cu) (net 11)) + (segment (start 84.876795 52.4616) (end 85.820051 53.404856) (width 0.3) (layer F.Cu) (net 11)) + (segment (start 83.1958 52.4616) (end 84.876795 52.4616) (width 0.3) (layer F.Cu) (net 11)) + (segment (start 89.964108 52.1556) (end 92.306954 49.812754) (width 0.3) (layer F.Cu) (net 13)) + (segment (start 87.1728 52.1556) (end 89.964108 52.1556) (width 0.3) (layer F.Cu) (net 13)) + (segment (start 88.372004 50.1556) (end 90.510902 48.016702) (width 0.3) (layer B.Cu) (net 14)) + (segment (start 87.1728 50.1556) (end 88.372004 50.1556) (width 0.3) (layer B.Cu) (net 14)) + (segment (start 22.9108 32.6136) (end 27.7368 32.6136) (width 0.7) (layer B.Cu) (net 15)) + (segment (start 26.2128 54.9656) (end 22.9108 51.6636) (width 0.7) (layer F.Cu) (net 15)) + (segment (start 22.9108 51.6636) (end 22.9108 43.7388) (width 0.7) (layer F.Cu) (net 15)) + (segment (start 22.9108 43.7388) (end 26.2128 40.4368) (width 0.7) (layer F.Cu) (net 15)) + (segment (start 26.2128 40.4368) (end 26.2128 34.8488) (width 0.7) (layer F.Cu) (net 15)) + (segment (start 23.9776 32.6136) (end 22.9108 32.6136) (width 0.7) (layer F.Cu) (net 15)) + (segment (start 26.2128 34.8488) (end 23.9776 32.6136) (width 0.7) (layer F.Cu) (net 15)) + (segment (start 49.3268 68.6816) (end 41.400439 65.085062) (width 1.905) (layer F.Cu) (net 15)) + (segment (start 32.1564 66.0908) (end 32.1564 60.9092) (width 1.905) (layer F.Cu) (net 15)) + (segment (start 38.1 68.3768) (end 32.1564 66.0908) (width 1.905) (layer F.Cu) (net 15)) + (segment (start 32.1564 60.9092) (end 26.2128 54.9656) (width 1.905) (layer F.Cu) (net 15)) + (segment (start 41.400439 65.085062) (end 38.1 68.3768) (width 1.905) (layer F.Cu) (net 15)) + (segment (start 48.4952 49.6824) (end 46.68955 49.6824) (width 0.7) (layer F.Cu) (net 16)) + (segment (start 46.68955 49.6824) (end 42.823619 53.548331) (width 0.7) (layer F.Cu) (net 16)) + (segment (start 41.8592 56.134) (end 42.823619 53.548331) (width 1.905) (layer B.Cu) (net 16)) + (segment (start 38.5064 58.3692) (end 41.8592 56.134) (width 1.905) (layer B.Cu) (net 16)) + (segment (start 36.6268 63.3476) (end 38.5064 58.3692) (width 1.905) (layer B.Cu) (net 16)) + (segment (start 64.942 38.8112) (end 66.4972 38.8112) (width 0.3) (layer F.Cu) (net 19)) + (segment (start 71.2978 43.6118) (end 71.2978 45.2186) (width 0.3) (layer F.Cu) (net 19)) + (segment (start 66.4972 38.8112) (end 71.2978 43.6118) (width 0.3) (layer F.Cu) (net 19)) + (segment (start 66.255827 35.0012) (end 74.009946 42.755319) (width 0.3) (layer F.Cu) (net 23)) + (segment (start 64.942 35.0012) (end 66.255827 35.0012) (width 0.3) (layer F.Cu) (net 23)) + (segment (start 67.281307 33.7312) (end 76.295947 42.74584) (width 0.3) (layer F.Cu) (net 24)) + (segment (start 64.942 33.7312) (end 67.281307 33.7312) (width 0.3) (layer F.Cu) (net 24)) + (segment (start 53.086 62.0776) (end 55.1688 58.7756) (width 0.7) (layer B.Cu) (net 27)) + (segment (start 53.944749 63.6176) (end 53.086 62.0776) (width 0.7) (layer B.Cu) (net 27)) + (segment (start 27.6048 37.6136) (end 27.6848 37.6936) (width 0.7) (layer B.Cu) (net 27)) + (segment (start 22.9108 37.6136) (end 27.6048 37.6136) (width 0.7) (layer B.Cu) (net 27)) + (segment (start 22.9108 46.5836) (end 26.2128 49.8856) (width 0.7) (layer B.Cu) (net 27)) + (segment (start 22.9108 37.6136) (end 22.9108 46.5836) (width 0.7) (layer B.Cu) (net 27)) + (segment (start 38.130002 59.558398) (end 38.130002 59.567602) (width 1.905) (layer F.Cu) (net 27)) + (segment (start 45.212 62.0776) (end 55.1688 58.7756) (width 1.905) (layer F.Cu) (net 27)) + (segment (start 38.130002 59.558398) (end 45.212 62.0776) (width 1.905) (layer F.Cu) (net 27)) + (segment (start 39.064254 56.85878) (end 39.020717 56.902317) (width 0.7) (layer F.Cu) (net 27)) + (segment (start 41.732307 56.85878) (end 39.064254 56.85878) (width 0.7) (layer F.Cu) (net 27)) + (segment (start 39.020717 56.902317) (end 38.130002 59.558398) (width 1.905) (layer F.Cu) (net 27)) + (segment (start 40.4368 52.6796) (end 39.020717 56.902317) (width 1.905) (layer F.Cu) (net 27)) + (segment (start 33.02 49.8856) (end 40.4368 52.6796) (width 1.905) (layer F.Cu) (net 27)) + (segment (start 26.2128 49.8856) (end 33.02 49.8856) (width 1.905) (layer F.Cu) (net 27)) + (segment (start 93.738379 60.305792) (end 91.930388 58.119244) (width 0.3) (layer F.Cu) (net 28)) + (segment (start 45.210439 54.417062) (end 45.210439 55.041387) (width 0.7) (layer F.Cu) (net 29)) + (segment (start 45.210439 55.944074) (end 43.611693 57.54282) (width 0.7) (layer F.Cu) (net 29)) + (segment (start 45.210439 54.417062) (end 45.210439 55.944074) (width 0.7) (layer F.Cu) (net 29)) + (segment (start 50.9524 54.4576) (end 45.210439 54.417062) (width 0.7) (layer B.Cu) (net 29)) + (segment (start 57.3024 47.0916) (end 50.9524 54.4576) (width 0.7) (layer B.Cu) (net 29)) + (segment (start 59.2328 47.0916) (end 57.3024 47.0916) (width 0.7) (layer B.Cu) (net 29)) + (segment (start 63.5508 63.7032) (end 59.568209 61.3156) (width 0.7) (layer F.Cu) (net 30)) + (segment (start 63.5508 64.6176) (end 63.5508 63.7032) (width 0.7) (layer F.Cu) (net 30)) + (segment (start 57.6072 64.5668) (end 59.568209 61.3156) (width 0.7) (layer B.Cu) (net 30)) + (segment (start 55.676799 64.6176) (end 57.6072 64.5668) (width 0.7) (layer B.Cu) (net 30)) + (segment (start 89.019256 54.9616) (end 90.644812 56.587156) (width 0.3) (layer F.Cu) (net 31)) + (segment (start 83.1958 54.9616) (end 89.019256 54.9616) (width 0.3) (layer F.Cu) (net 31)) + (segment (start 78.7708 60.3866) (end 78.7708 61.8544) (width 0.3) (layer F.Cu) (net 32)) + (segment (start 80.448074 63.531674) (end 82.642646 63.531674) (width 0.3) (layer F.Cu) (net 32)) + (segment (start 78.7708 61.8544) (end 80.448074 63.531674) (width 0.3) (layer F.Cu) (net 32)) + (via (at 70.4596 57.4548) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 33)) + (segment (start 70.4664 57.4616) (end 70.4596 57.4548) (width 0.3) (layer F.Cu) (net 33)) + (segment (start 71.8458 57.4616) (end 70.4664 57.4616) (width 0.3) (layer F.Cu) (net 33)) + (segment (start 70.4596 58.660913) (end 70.738187 58.9395) (width 0.3) (layer B.Cu) (net 33)) + (segment (start 70.4596 57.4548) (end 70.4596 58.660913) (width 0.3) (layer B.Cu) (net 33)) + (via (at 73.3552 57.4548) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 34)) + (segment (start 72.8484 57.9616) (end 73.3552 57.4548) (width 0.3) (layer F.Cu) (net 34)) + (segment (start 71.8458 57.9616) (end 72.8484 57.9616) (width 0.3) (layer F.Cu) (net 34)) + (segment (start 73.3552 58.608495) (end 73.024193 58.939502) (width 0.3) (layer B.Cu) (net 34)) + (segment (start 73.3552 57.4548) (end 73.3552 58.608495) (width 0.3) (layer B.Cu) (net 34)) + (segment (start 86.9856 51.9684) (end 87.1728 52.1556) (width 0.3) (layer B.Cu) (net 35)) + (segment (start 84.88 51.9616) (end 83.1958 51.9616) (width 0.3) (layer F.Cu) (net 35)) + (segment (start 85.6996 51.9684) (end 84.88 51.9616) (width 0.3) (layer F.Cu) (net 35)) + (segment (start 85.6996 51.9684) (end 86.9856 51.9684) (width 0.3) (layer B.Cu) (net 35)) + (via (at 85.6996 51.9684) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 35)) + (segment (start 83.1958 51.4616) (end 84.4792 51.4616) (width 0.3) (layer F.Cu) (net 36)) + (segment (start 85.7852 50.1556) (end 87.1728 50.1556) (width 0.3) (layer F.Cu) (net 36)) + (segment (start 84.4792 51.4616) (end 85.7852 50.1556) (width 0.3) (layer F.Cu) (net 36)) + (segment (start 68.8648 55.4616) (end 68.852799 55.473601) (width 0.3) (layer F.Cu) (net 37)) + (segment (start 71.8458 55.4616) (end 68.8648 55.4616) (width 0.3) (layer F.Cu) (net 37)) + (segment (start 66.8528 54.7736) (end 66.8528 52.1716) (width 0.3) (layer F.Cu) (net 38)) + (segment (start 66.852799 55.473601) (end 66.8528 54.7736) (width 0.3) (layer F.Cu) (net 38)) + (segment (start 72.379376 74.453752) (end 73.475848 74.453752) (width 0.3) (layer F.Cu) (net 39)) + (segment (start 73.475848 74.453752) (end 74.2188 73.7108) (width 0.3) (layer F.Cu) (net 39)) + (segment (start 74.2188 73.7108) (end 74.2188 63.9064) (width 0.3) (layer F.Cu) (net 39)) + (segment (start 74.2188 63.9064) (end 69.5452 59.2328) (width 0.3) (layer F.Cu) (net 39)) + (segment (start 69.5452 59.2328) (end 69.5452 57.0484) (width 0.3) (layer F.Cu) (net 39)) + (segment (start 70.632 55.9616) (end 69.5452 57.0484) (width 0.3) (layer F.Cu) (net 39)) + (segment (start 71.8458 55.9616) (end 70.632 55.9616) (width 0.3) (layer F.Cu) (net 39)) + (segment (start 71.1708 72.754024) (end 71.232224 72.815448) (width 0.3) (layer F.Cu) (net 40)) + (segment (start 71.1708 69.6976) (end 71.1708 72.754024) (width 0.3) (layer F.Cu) (net 40)) + (via (at 70.104 52.4764) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 41)) + (segment (start 70.1188 52.4616) (end 71.8458 52.4616) (width 0.3) (layer F.Cu) (net 41)) + (segment (start 70.104 52.4764) (end 70.1188 52.4616) (width 0.3) (layer F.Cu) (net 41)) + (segment (start 48.1744 37.6936) (end 50.2064 39.7256) (width 0.3) (layer B.Cu) (net 41)) + (segment (start 44.3748 37.6936) (end 48.1744 37.6936) (width 0.3) (layer B.Cu) (net 41)) + (segment (start 44.3748 39.2948) (end 44.3748 37.6936) (width 0.3) (layer B.Cu) (net 41)) + (segment (start 50.0888 45.0088) (end 44.3748 39.2948) (width 0.3) (layer B.Cu) (net 41)) + (segment (start 53.7464 45.0088) (end 50.0888 45.0088) (width 0.3) (layer B.Cu) (net 41)) + (segment (start 55.5752 43.18) (end 53.7464 45.0088) (width 0.3) (layer B.Cu) (net 41)) + (segment (start 66.9036 43.18) (end 55.5752 43.18) (width 0.3) (layer B.Cu) (net 41)) + (segment (start 70.104 46.3804) (end 66.9036 43.18) (width 0.3) (layer B.Cu) (net 41)) + (segment (start 70.104 52.4764) (end 70.104 46.3804) (width 0.3) (layer B.Cu) (net 41)) + (segment (start 57.5564 52.1716) (end 55.0672 49.6824) (width 0.7) (layer F.Cu) (net 42)) + (segment (start 59.2328 52.1716) (end 57.5564 52.1716) (width 0.7) (layer F.Cu) (net 42)) + (segment (start 50.4952 49.6824) (end 53.0672 49.6824) (width 0.7) (layer F.Cu) (net 43)) + (segment (start 61.7728 69.6976) (end 63.5508 69.6976) (width 0.7) (layer F.Cu) (net 44)) + (segment (start 60.232801 72.28355) (end 61.7728 69.6976) (width 0.7) (layer F.Cu) (net 44)) + (segment (start 57.962799 76.0476) (end 59.232801 74.0156) (width 0.7) (layer F.Cu) (net 45)) + (segment (start 30.7848 37.6936) (end 34.9748 37.6936) (width 0.7) (layer B.Cu) (net 46)) + (segment (start 32.4348 32.6136) (end 34.9748 35.1536) (width 0.7) (layer B.Cu) (net 47)) + (segment (start 30.8368 32.6136) (end 32.4348 32.6136) (width 0.7) (layer B.Cu) (net 47)) + (segment (start 75.2708 49.0366) (end 75.2708 47.0048) (width 0.3) (layer F.Cu) (net 48)) + (segment (start 76.295947 45.979653) (end 76.295947 44.74584) (width 0.3) (layer F.Cu) (net 48)) + (segment (start 75.2708 47.0048) (end 76.295947 45.979653) (width 0.3) (layer F.Cu) (net 48)) + (segment (start 74.7708 49.0366) (end 74.7708 47.034) (width 0.3) (layer F.Cu) (net 49)) + (segment (start 74.009946 46.273146) (end 74.009946 44.755319) (width 0.3) (layer F.Cu) (net 49)) + (segment (start 74.7708 47.034) (end 74.009946 46.273146) (width 0.3) (layer F.Cu) (net 49)) + (segment (start 56.0832 68.0212) (end 53.726209 71.2216) (width 1.905) (layer F.Cu) (net 98)) + (segment (start 56.0324 62.1792) (end 56.0832 68.0212) (width 1.905) (layer F.Cu) (net 98)) + (segment (start 57.368505 60.0456) (end 56.0324 62.1792) (width 1.905) (layer F.Cu) (net 98)) + (segment (start 53.6956 75.8952) (end 53.726209 71.2216) (width 0.7) (layer F.Cu) (net 98)) + (segment (start 56.962799 77.77965) (end 53.6956 75.8952) (width 0.7) (layer F.Cu) (net 98)) + + (zone (net 0) (net_name "") (layers F&B.Cu) (tstamp 0) (hatch edge 0.508) + (connect_pads (clearance 0.508)) + (min_thickness 0.254) + (keepout (tracks allowed) (vias allowed) (copperpour not_allowed)) + (fill (arc_segments 32) (thermal_gap 0.508) (thermal_bridge_width 0.508)) + (polygon + (pts + (xy 85.9536 64.9732) (xy 86.5632 65.2272) (xy 87.0712 65.6844) (xy 87.4268 66.2432) (xy 87.63 66.9544) + (xy 87.63 67.6148) (xy 87.4268 68.2244) (xy 87.0712 68.7324) (xy 86.5124 69.2404) (xy 85.852 69.4944) + (xy 85.852 70.5104) (xy 78.486 70.4596) (xy 78.486 69.4436) (xy 77.8256 69.2404) (xy 77.3684 68.8848) + (xy 76.9112 68.2752) (xy 76.708 67.6656) (xy 76.6572 67.2084) (xy 76.7588 66.548) (xy 77.0128 65.9892) + (xy 77.5208 65.4304) (xy 78.0796 65.0748) (xy 78.7908 64.9224) (xy 85.3948 64.9224) + ) + ) + ) + (zone (net 3) (net_name GND) (layer B.Cu) (tstamp 61C7FB9B) (hatch edge 0.508) + (connect_pads (clearance 0.3)) + (min_thickness 0.254) + (fill yes (arc_segments 32) (thermal_gap 0.3) (thermal_bridge_width 0.3) (smoothing fillet) (radius 0.127)) + (polygon + (pts + (xy 80.1116 30.8864) (xy 105.0036 59.436) (xy 64.5668 90.6272) (xy 54.61 84.4296) (xy 63.0936 75.3872) + (xy 67.3608 72.644) (xy 67.3608 59.7408) (xy 63.0428 54.9656) (xy 63.0174 44.1706) (xy 56.769 44.2214) + (xy 55.0418 45.8216) (xy 39.751 45.8216) (xy 39.7764 19.1516) + ) + ) + (filled_polygon + (pts + (xy 40.275685 20.89408) (xy 44.256937 21.747586) (xy 48.202486 22.753294) (xy 52.10651 23.90972) (xy 55.963256 25.215156) + (xy 59.767053 26.667685) (xy 63.512278 28.265159) (xy 67.193433 30.005233) (xy 70.805085 31.88534) (xy 74.341872 33.902688) + (xy 77.798632 36.054332) (xy 81.170236 38.337078) (xy 84.451727 40.747572) (xy 87.053599 42.817195) (xy 87.002507 42.801696) + (xy 86.9188 42.793452) (xy 86.835093 42.801696) (xy 86.754604 42.826113) (xy 86.680424 42.865763) (xy 86.615405 42.919123) + (xy 85.786928 43.7476) (xy 74.277441 43.7476) (xy 74.244199 43.744326) (xy 74.219028 43.746805) (xy 68.574226 38.102004) + (xy 68.553027 38.076173) (xy 68.449941 37.991572) (xy 68.33233 37.928708) (xy 68.204715 37.889996) (xy 68.105252 37.8802) + (xy 68.105245 37.8802) (xy 68.072 37.876926) (xy 68.038755 37.8802) (xy 56.600452 37.8802) (xy 56.5672 37.876925) + (xy 56.434485 37.889996) (xy 56.30687 37.928708) (xy 56.189259 37.991572) (xy 56.121801 38.046934) (xy 56.086173 38.076173) + (xy 56.064978 38.101999) (xy 52.9878 41.179178) (xy 52.9878 40.695798) (xy 53.036572 40.655772) (xy 53.121023 40.552869) + (xy 53.183775 40.435468) (xy 53.222418 40.30808) (xy 53.235466 40.175601) (xy 53.235466 39.275599) (xy 53.222418 39.14312) + (xy 53.183775 39.015732) (xy 53.121023 38.898331) (xy 53.036572 38.795428) (xy 52.933669 38.710977) (xy 52.8834 38.684108) + (xy 52.8834 36.674855) (xy 52.982277 36.665116) (xy 53.109665 36.626473) (xy 53.227067 36.563721) (xy 53.32997 36.47927) + (xy 53.414421 36.376367) (xy 53.477173 36.258965) (xy 53.515816 36.131577) (xy 53.528864 35.999098) (xy 53.528864 35.324098) + (xy 53.515816 35.191619) (xy 53.477173 35.064231) (xy 53.414421 34.946829) (xy 53.32997 34.843926) (xy 53.227067 34.759475) + (xy 53.109665 34.696723) (xy 52.982277 34.65808) (xy 52.849798 34.645032) (xy 51.899798 34.645032) (xy 51.767319 34.65808) + (xy 51.639931 34.696723) (xy 51.522529 34.759475) (xy 51.419626 34.843926) (xy 51.335175 34.946829) (xy 51.303494 35.0061) + (xy 51.148611 35.0061) (xy 51.128423 34.968331) (xy 51.043972 34.865428) (xy 50.941069 34.780977) (xy 50.823667 34.718225) + (xy 50.696279 34.679582) (xy 50.5638 34.666534) (xy 49.6138 34.666534) (xy 49.481321 34.679582) (xy 49.353933 34.718225) + (xy 49.236531 34.780977) (xy 49.133628 34.865428) (xy 49.049177 34.968331) (xy 48.986425 35.085733) (xy 48.947782 35.213121) + (xy 48.934734 35.3456) (xy 48.934734 36.0206) (xy 48.947782 36.153079) (xy 48.986425 36.280467) (xy 49.049177 36.397869) + (xy 49.133628 36.500772) (xy 49.236531 36.585223) (xy 49.353933 36.647975) (xy 49.481321 36.686618) (xy 49.6138 36.699666) + (xy 50.5638 36.699666) (xy 50.696279 36.686618) (xy 50.823667 36.647975) (xy 50.941069 36.585223) (xy 51.043972 36.500772) + (xy 51.128423 36.397869) (xy 51.148611 36.3601) (xy 51.32648 36.3601) (xy 51.335175 36.376367) (xy 51.419626 36.47927) + (xy 51.522529 36.563721) (xy 51.529401 36.567394) (xy 51.5294 38.684108) (xy 51.479131 38.710977) (xy 51.376228 38.795428) + (xy 51.291777 38.898331) (xy 51.229025 39.015732) (xy 51.2064 39.090316) (xy 51.183775 39.015732) (xy 51.121023 38.898331) + (xy 51.036572 38.795428) (xy 50.933669 38.710977) (xy 50.816268 38.648225) (xy 50.68888 38.609582) (xy 50.556401 38.596534) + (xy 49.893336 38.596534) (xy 48.602439 37.305638) (xy 48.584374 37.283626) (xy 48.496515 37.211521) (xy 48.396276 37.157943) + (xy 48.33217 37.138497) (xy 48.287511 37.124949) (xy 48.232445 37.119526) (xy 48.202736 37.1166) (xy 48.202731 37.1166) + (xy 48.1744 37.11381) (xy 48.146069 37.1166) (xy 45.653866 37.1166) (xy 45.653866 36.9436) (xy 45.645622 36.859893) + (xy 45.621205 36.779404) (xy 45.581555 36.705224) (xy 45.528195 36.640205) (xy 45.463176 36.586845) (xy 45.388996 36.547195) + (xy 45.308507 36.522778) (xy 45.2248 36.514534) (xy 43.5248 36.514534) (xy 43.441093 36.522778) (xy 43.360604 36.547195) + (xy 43.286424 36.586845) (xy 43.221405 36.640205) (xy 43.168045 36.705224) (xy 43.128395 36.779404) (xy 43.103978 36.859893) + (xy 43.095734 36.9436) (xy 43.095734 38.4436) (xy 43.103978 38.527307) (xy 43.128395 38.607796) (xy 43.168045 38.681976) + (xy 43.221405 38.746995) (xy 43.286424 38.800355) (xy 43.360604 38.840005) (xy 43.441093 38.864422) (xy 43.5248 38.872666) + (xy 43.7978 38.872666) (xy 43.7978 39.266469) (xy 43.79501 39.2948) (xy 43.806149 39.407911) (xy 43.819542 39.452059) + (xy 43.839143 39.516675) (xy 43.892721 39.616914) (xy 43.964826 39.704774) (xy 43.986838 39.722839) (xy 49.660761 45.396762) + (xy 49.678826 45.418774) (xy 49.766685 45.490879) (xy 49.866924 45.544457) (xy 49.975688 45.57745) (xy 50.060464 45.5858) + (xy 50.06047 45.5858) (xy 50.088799 45.58859) (xy 50.117128 45.5858) (xy 53.718069 45.5858) (xy 53.7464 45.58859) + (xy 53.774731 45.5858) (xy 53.774736 45.5858) (xy 53.804445 45.582874) (xy 53.859511 45.577451) (xy 53.90417 45.563903) + (xy 53.968276 45.544457) (xy 54.068515 45.490879) (xy 54.156374 45.418774) (xy 54.174439 45.396762) (xy 55.814201 43.757) + (xy 66.664599 43.757) (xy 69.527001 46.619403) (xy 69.527 51.883847) (xy 69.461628 51.949219) (xy 69.371123 52.084669) + (xy 69.308782 52.235173) (xy 69.277 52.394948) (xy 69.277 52.557852) (xy 69.308782 52.717627) (xy 69.371123 52.868131) + (xy 69.461628 53.003581) (xy 69.576819 53.118772) (xy 69.712269 53.209277) (xy 69.862773 53.271618) (xy 70.022548 53.3034) + (xy 70.185452 53.3034) (xy 70.345227 53.271618) (xy 70.495731 53.209277) (xy 70.631181 53.118772) (xy 70.746372 53.003581) + (xy 70.836877 52.868131) (xy 70.899218 52.717627) (xy 70.931 52.557852) (xy 70.931 52.394948) (xy 70.899218 52.235173) + (xy 70.836877 52.084669) (xy 70.746372 51.949219) (xy 70.681 51.883847) (xy 70.681 46.408728) (xy 70.68379 46.380399) + (xy 70.681 46.35207) (xy 70.681 46.352064) (xy 70.67265 46.267288) (xy 70.639657 46.158524) (xy 70.586079 46.058285) + (xy 70.536768 45.9982) (xy 70.532037 45.992435) (xy 70.532035 45.992433) (xy 70.513974 45.970426) (xy 70.491967 45.952365) + (xy 67.331639 42.792038) (xy 67.313574 42.770026) (xy 67.225715 42.697921) (xy 67.125476 42.644343) (xy 67.061334 42.624886) + (xy 67.016711 42.611349) (xy 66.961645 42.605926) (xy 66.931936 42.603) (xy 66.931931 42.603) (xy 66.9036 42.60021) + (xy 66.875269 42.603) (xy 55.603531 42.603) (xy 55.5752 42.60021) (xy 55.546869 42.603) (xy 55.546864 42.603) + (xy 55.520086 42.605637) (xy 55.462088 42.611349) (xy 55.397982 42.630796) (xy 55.353324 42.644343) (xy 55.253085 42.697921) + (xy 55.165226 42.770026) (xy 55.147161 42.792038) (xy 53.507399 44.4318) (xy 50.327801 44.4318) (xy 44.9518 39.055799) + (xy 44.9518 38.872666) (xy 45.2248 38.872666) (xy 45.308507 38.864422) (xy 45.388996 38.840005) (xy 45.463176 38.800355) + (xy 45.528195 38.746995) (xy 45.581555 38.681976) (xy 45.621205 38.607796) (xy 45.645622 38.527307) (xy 45.653866 38.4436) + (xy 45.653866 38.2706) (xy 47.935399 38.2706) (xy 49.177334 39.512536) (xy 49.177334 40.175601) (xy 49.190382 40.30808) + (xy 49.229025 40.435468) (xy 49.291777 40.552869) (xy 49.376228 40.655772) (xy 49.479131 40.740223) (xy 49.596532 40.802975) + (xy 49.72392 40.841618) (xy 49.856399 40.854666) (xy 50.556401 40.854666) (xy 50.68888 40.841618) (xy 50.816268 40.802975) + (xy 50.933669 40.740223) (xy 51.036572 40.655772) (xy 51.121023 40.552869) (xy 51.183775 40.435468) (xy 51.2064 40.360884) + (xy 51.229025 40.435468) (xy 51.291777 40.552869) (xy 51.376228 40.655772) (xy 51.479131 40.740223) (xy 51.596532 40.802975) + (xy 51.633801 40.81428) (xy 51.6338 41.38709) (xy 51.563811 41.416081) (xy 51.305521 41.588664) (xy 51.085864 41.808321) + (xy 50.913281 42.066611) (xy 50.794404 42.353606) (xy 50.7338 42.658279) (xy 50.7338 42.968921) (xy 50.794404 43.273594) + (xy 50.913281 43.560589) (xy 51.085864 43.818879) (xy 51.305521 44.038536) (xy 51.563811 44.211119) (xy 51.850806 44.329996) + (xy 52.155479 44.3906) (xy 52.466121 44.3906) (xy 52.770794 44.329996) (xy 53.057789 44.211119) (xy 53.316079 44.038536) + (xy 53.535736 43.818879) (xy 53.708319 43.560589) (xy 53.827196 43.273594) (xy 53.8878 42.968921) (xy 53.8878 42.658279) + (xy 53.827196 42.353606) (xy 53.798206 42.283617) (xy 56.847623 39.2342) (xy 67.791578 39.2342) (xy 73.589579 45.032202) + (xy 73.610773 45.058027) (xy 73.636598 45.079221) (xy 73.636601 45.079224) (xy 73.636606 45.079228) (xy 75.1088 46.551423) + (xy 75.108801 53.817789) (xy 75.071031 53.837977) (xy 74.968128 53.922428) (xy 74.883677 54.025331) (xy 74.820925 54.142733) + (xy 74.782282 54.270121) (xy 74.769234 54.4026) (xy 74.769234 55.3526) (xy 74.782282 55.485079) (xy 74.820925 55.612467) + (xy 74.883677 55.729869) (xy 74.968128 55.832772) (xy 75.071031 55.917223) (xy 75.1088 55.937411) (xy 75.108801 56.157313) + (xy 75.006531 56.211977) (xy 74.903628 56.296428) (xy 74.819177 56.399331) (xy 74.756425 56.516733) (xy 74.717782 56.644121) + (xy 74.704734 56.7766) (xy 74.704734 57.7266) (xy 74.717782 57.859079) (xy 74.756425 57.986467) (xy 74.819177 58.103869) + (xy 74.903628 58.206772) (xy 75.006531 58.291223) (xy 75.029633 58.303571) (xy 75.009923 58.333069) (xy 74.947582 58.483573) + (xy 74.9158 58.643348) (xy 74.9158 58.806252) (xy 74.947582 58.966027) (xy 75.009923 59.116531) (xy 75.0658 59.200157) + (xy 75.0658 63.178144) (xy 75.035174 63.140826) (xy 75.013163 63.122762) (xy 73.781775 61.891374) (xy 73.851462 61.854125) + (xy 73.954365 61.769674) (xy 74.038816 61.666771) (xy 74.101568 61.54937) (xy 74.140211 61.421982) (xy 74.153259 61.289503) + (xy 74.153259 60.589501) (xy 74.140211 60.457022) (xy 74.101568 60.329634) (xy 74.038816 60.212233) (xy 73.954365 60.10933) + (xy 73.851462 60.024879) (xy 73.734061 59.962127) (xy 73.659477 59.939502) (xy 73.734061 59.916877) (xy 73.851462 59.854125) + (xy 73.954365 59.769674) (xy 74.038816 59.666771) (xy 74.101568 59.54937) (xy 74.140211 59.421982) (xy 74.153259 59.289503) + (xy 74.153259 58.589501) (xy 74.140211 58.457022) (xy 74.101568 58.329634) (xy 74.038816 58.212233) (xy 73.954365 58.10933) + (xy 73.9322 58.09114) (xy 73.9322 58.047353) (xy 73.997572 57.981981) (xy 74.088077 57.846531) (xy 74.150418 57.696027) + (xy 74.1822 57.536252) (xy 74.1822 57.373348) (xy 74.150418 57.213573) (xy 74.088077 57.063069) (xy 73.997572 56.927619) + (xy 73.882381 56.812428) (xy 73.746931 56.721923) (xy 73.596427 56.659582) (xy 73.436652 56.6278) (xy 73.273748 56.6278) + (xy 73.113973 56.659582) (xy 72.963469 56.721923) (xy 72.828019 56.812428) (xy 72.712828 56.927619) (xy 72.622323 57.063069) + (xy 72.559982 57.213573) (xy 72.5282 57.373348) (xy 72.5282 57.536252) (xy 72.559982 57.696027) (xy 72.622323 57.846531) + (xy 72.665023 57.910436) (xy 72.574192 57.910436) (xy 72.441713 57.923484) (xy 72.314325 57.962127) (xy 72.196924 58.024879) + (xy 72.094021 58.10933) (xy 72.00957 58.212233) (xy 71.946818 58.329634) (xy 71.908175 58.457022) (xy 71.895127 58.589501) + (xy 71.895127 59.289503) (xy 71.908175 59.421982) (xy 71.946818 59.54937) (xy 72.00957 59.666771) (xy 72.094021 59.769674) + (xy 72.196924 59.854125) (xy 72.314325 59.916877) (xy 72.388909 59.939502) (xy 72.314325 59.962127) (xy 72.196924 60.024879) + (xy 72.094021 60.10933) (xy 72.00957 60.212233) (xy 71.946818 60.329634) (xy 71.908175 60.457022) (xy 71.895127 60.589501) + (xy 71.895127 61.279024) (xy 71.867253 61.251203) (xy 71.867253 60.589499) (xy 71.854205 60.45702) (xy 71.815562 60.329632) + (xy 71.75281 60.212231) (xy 71.668359 60.109328) (xy 71.565456 60.024877) (xy 71.448055 59.962125) (xy 71.373471 59.9395) + (xy 71.448055 59.916875) (xy 71.565456 59.854123) (xy 71.668359 59.769672) (xy 71.75281 59.666769) (xy 71.815562 59.549368) + (xy 71.854205 59.42198) (xy 71.867253 59.289501) (xy 71.867253 58.589499) (xy 71.854205 58.45702) (xy 71.815562 58.329632) + (xy 71.75281 58.212231) (xy 71.668359 58.109328) (xy 71.565456 58.024877) (xy 71.448055 57.962125) (xy 71.320667 57.923482) + (xy 71.188188 57.910434) (xy 71.149778 57.910434) (xy 71.192477 57.846531) (xy 71.254818 57.696027) (xy 71.2866 57.536252) + (xy 71.2866 57.373348) (xy 71.254818 57.213573) (xy 71.192477 57.063069) (xy 71.101972 56.927619) (xy 70.986781 56.812428) + (xy 70.851331 56.721923) (xy 70.700827 56.659582) (xy 70.541052 56.6278) (xy 70.378148 56.6278) (xy 70.218373 56.659582) + (xy 70.067869 56.721923) (xy 69.932419 56.812428) (xy 69.817228 56.927619) (xy 69.726723 57.063069) (xy 69.664382 57.213573) + (xy 69.6326 57.373348) (xy 69.6326 57.536252) (xy 69.664382 57.696027) (xy 69.726723 57.846531) (xy 69.817228 57.981981) + (xy 69.8826 58.047353) (xy 69.8826 58.048117) (xy 69.808015 58.109328) (xy 69.723564 58.212231) (xy 69.660812 58.329632) + (xy 69.622169 58.45702) (xy 69.609121 58.589499) (xy 69.609121 59.289501) (xy 69.622169 59.42198) (xy 69.660812 59.549368) + (xy 69.723564 59.666769) (xy 69.808015 59.769672) (xy 69.910918 59.854123) (xy 70.028319 59.916875) (xy 70.102903 59.9395) + (xy 70.028319 59.962125) (xy 69.910918 60.024877) (xy 69.808015 60.109328) (xy 69.723564 60.212231) (xy 69.660812 60.329632) + (xy 69.622169 60.45702) (xy 69.609121 60.589499) (xy 69.609121 61.289501) (xy 69.622169 61.42198) (xy 69.660812 61.549368) + (xy 69.723564 61.666769) (xy 69.808015 61.769672) (xy 69.910918 61.854123) (xy 70.028319 61.916875) (xy 70.155707 61.955518) + (xy 70.288186 61.968566) (xy 70.952428 61.968566) (xy 73.1846 64.19652) (xy 73.184601 72.89437) (xy 73.184154 72.896718) + (xy 73.184601 72.951111) (xy 73.184601 72.971423) (xy 73.184783 72.973272) (xy 73.185088 73.010372) (xy 73.191464 73.041104) + (xy 73.192951 73.056199) (xy 73.198156 73.073359) (xy 73.208178 73.121661) (xy 73.224462 73.160077) (xy 73.225944 73.164963) + (xy 73.228789 73.170286) (xy 73.252535 73.226306) (xy 73.300443 73.296744) (xy 76.33768 76.936185) (xy 76.282769 77.068753) + (xy 76.233695 77.315466) (xy 76.233695 77.567014) (xy 76.282769 77.813727) (xy 76.379032 78.046126) (xy 76.488815 78.210429) + (xy 76.416993 78.266542) (xy 76.363098 78.055546) (xy 76.161457 77.907193) (xy 75.934747 77.801028) (xy 75.691682 77.741131) + (xy 75.441602 77.729806) (xy 75.194118 77.767486) (xy 74.95874 77.852724) (xy 74.910261 77.877161) (xy 74.806933 78.068868) + (xy 75.513111 78.972736) (xy 75.528871 78.960423) (xy 75.557192 78.99667) (xy 75.541431 79.008984) (xy 76.24761 79.912851) + (xy 76.45862 79.85897) (xy 76.49406 79.817843) (xy 76.633709 79.610077) (xy 76.730141 79.379061) (xy 76.779652 79.133669) + (xy 76.780337 78.883334) (xy 76.732172 78.637675) (xy 76.637007 78.406134) (xy 76.445316 78.302794) (xy 76.514444 78.248785) + (xy 76.518784 78.25528) (xy 76.696655 78.433151) (xy 76.905809 78.572903) (xy 77.138208 78.669166) (xy 77.384921 78.71824) + (xy 77.636469 78.71824) (xy 77.883182 78.669166) (xy 78.115581 78.572903) (xy 78.324735 78.433151) (xy 78.502606 78.25528) + (xy 78.642358 78.046126) (xy 78.738621 77.813727) (xy 78.787695 77.567014) (xy 78.787695 77.315466) (xy 78.738621 77.068753) + (xy 78.642358 76.836354) (xy 78.596392 76.767561) (xy 78.698202 76.869371) (xy 78.907356 77.009123) (xy 79.139755 77.105386) + (xy 79.386468 77.15446) (xy 79.638016 77.15446) (xy 79.884729 77.105386) (xy 80.117128 77.009123) (xy 80.326282 76.869371) + (xy 80.504153 76.6915) (xy 80.643905 76.482346) (xy 80.740168 76.249947) (xy 80.789242 76.003234) (xy 80.789242 75.751686) + (xy 80.740168 75.504973) (xy 80.643905 75.272574) (xy 80.504153 75.06342) (xy 80.326282 74.885549) (xy 80.117128 74.745797) + (xy 79.884729 74.649534) (xy 79.638016 74.60046) (xy 79.386468 74.60046) (xy 79.282539 74.621133) (xy 75.66926 69.8642) + (xy 75.824252 69.8642) (xy 75.984027 69.832418) (xy 76.134531 69.770077) (xy 76.269981 69.679572) (xy 76.385172 69.564381) + (xy 76.475677 69.428931) (xy 76.538018 69.278427) (xy 76.5698 69.118652) (xy 76.5698 68.955748) (xy 76.538018 68.795973) + (xy 76.475677 68.645469) (xy 76.4198 68.561843) (xy 76.4198 67.222425) (xy 76.530977 67.222425) (xy 76.581777 67.679625) + (xy 76.587517 67.705761) (xy 76.790717 68.315361) (xy 76.796686 68.330115) (xy 76.8096 68.3514) (xy 77.2668 68.961) + (xy 77.29043 68.985048) (xy 77.74763 69.340648) (xy 77.765288 69.352165) (xy 77.788251 69.361784) (xy 78.048581 69.441886) + (xy 78.048581 70.229676) (xy 78.061629 70.362155) (xy 78.100272 70.489543) (xy 78.163024 70.606945) (xy 78.247475 70.709848) + (xy 78.350378 70.794299) (xy 78.46778 70.857051) (xy 78.595168 70.895694) (xy 78.727647 70.908742) (xy 79.402647 70.908742) + (xy 79.535126 70.895694) (xy 79.662514 70.857051) (xy 79.779916 70.794299) (xy 79.882819 70.709848) (xy 79.96727 70.606945) + (xy 79.972663 70.596856) (xy 80.142334 70.598026) (xy 80.156242 70.643872) (xy 80.195892 70.718052) (xy 80.249252 70.783071) + (xy 80.314271 70.836431) (xy 80.388451 70.876081) (xy 80.46894 70.900498) (xy 80.552647 70.908742) (xy 81.010397 70.906676) + (xy 81.117147 70.799926) (xy 81.117147 70.604749) (xy 81.163147 70.605066) (xy 81.163147 70.799926) (xy 81.269897 70.906676) + (xy 81.727647 70.908742) (xy 81.811354 70.900498) (xy 81.891843 70.876081) (xy 81.966023 70.836431) (xy 82.031042 70.783071) + (xy 82.084402 70.718052) (xy 82.124052 70.643872) (xy 82.133793 70.61176) (xy 82.157055 70.611921) (xy 82.166747 70.643869) + (xy 82.206397 70.718049) (xy 82.259757 70.783068) (xy 82.324776 70.836428) (xy 82.398956 70.876078) (xy 82.479445 70.900495) + (xy 82.563152 70.908739) (xy 83.020902 70.906673) (xy 83.127652 70.799923) (xy 83.127652 70.618614) (xy 83.173652 70.618932) + (xy 83.173652 70.799923) (xy 83.280402 70.906673) (xy 83.738152 70.908739) (xy 83.821859 70.900495) (xy 83.902348 70.876078) + (xy 83.976528 70.836428) (xy 84.041547 70.783068) (xy 84.094907 70.718049) (xy 84.134557 70.643869) (xy 84.1401 70.625597) + (xy 84.33997 70.626975) (xy 84.40798 70.709845) (xy 84.510883 70.794296) (xy 84.628285 70.857048) (xy 84.755673 70.895691) + (xy 84.888152 70.908739) (xy 85.563152 70.908739) (xy 85.695631 70.895691) (xy 85.823019 70.857048) (xy 85.940421 70.794296) + (xy 86.043324 70.709845) (xy 86.127775 70.606942) (xy 86.190527 70.48954) (xy 86.22917 70.362152) (xy 86.242218 70.229673) + (xy 86.242218 69.480386) (xy 86.55799 69.358935) (xy 86.577855 69.349233) (xy 86.597829 69.334372) (xy 87.156629 68.826372) + (xy 87.175242 68.80523) (xy 87.530842 68.29723) (xy 87.547283 68.264561) (xy 87.750483 67.654961) (xy 87.75456 67.639576) + (xy 87.757 67.6148) (xy 87.757 66.9544) (xy 87.752114 66.91951) (xy 87.548914 66.20831) (xy 87.533945 66.175017) + (xy 87.178345 65.616217) (xy 87.156159 65.590002) (xy 86.648159 65.132802) (xy 86.633978 65.121751) (xy 86.612046 65.109969) + (xy 86.002446 64.855969) (xy 85.989552 64.851395) (xy 85.965098 64.846722) (xy 85.406298 64.795922) (xy 85.3948 64.7954) + (xy 78.7908 64.7954) (xy 78.76419 64.798219) (xy 78.05299 64.950619) (xy 78.03363 64.956412) (xy 78.011417 64.967655) + (xy 77.452617 65.323255) (xy 77.426828 65.344971) (xy 76.918828 65.903771) (xy 76.909658 65.915101) (xy 76.897183 65.936647) + (xy 76.643183 66.495447) (xy 76.633277 66.528689) (xy 76.531677 67.189089) (xy 76.530977 67.222425) (xy 76.4198 67.222425) + (xy 76.4198 63.520148) (xy 87.5142 63.520148) (xy 87.5142 63.683052) (xy 87.545982 63.842827) (xy 87.608323 63.993331) + (xy 87.698828 64.128781) (xy 87.814019 64.243972) (xy 87.949469 64.334477) (xy 88.099973 64.396818) (xy 88.259748 64.4286) + (xy 88.422652 64.4286) (xy 88.486057 64.415988) (xy 88.460382 64.477973) (xy 88.4286 64.637748) (xy 88.4286 64.800652) + (xy 88.460382 64.960427) (xy 88.522723 65.110931) (xy 88.613228 65.246381) (xy 88.728419 65.361572) (xy 88.863869 65.452077) + (xy 89.014373 65.514418) (xy 89.174148 65.5462) (xy 89.337052 65.5462) (xy 89.496827 65.514418) (xy 89.538125 65.497312) + (xy 89.476382 65.646373) (xy 89.4446 65.806148) (xy 89.4446 65.969052) (xy 89.476382 66.128827) (xy 89.538723 66.279331) + (xy 89.629228 66.414781) (xy 89.744419 66.529972) (xy 89.879869 66.620477) (xy 90.030373 66.682818) (xy 90.190148 66.7146) + (xy 90.353052 66.7146) (xy 90.512827 66.682818) (xy 90.663331 66.620477) (xy 90.798781 66.529972) (xy 90.913972 66.414781) + (xy 91.004477 66.279331) (xy 91.066818 66.128827) (xy 91.0986 65.969052) (xy 91.0986 65.806148) (xy 91.066818 65.646373) + (xy 91.004477 65.495869) (xy 90.957413 65.425432) (xy 91.020827 65.412818) (xy 91.171331 65.350477) (xy 91.306781 65.259972) + (xy 91.421972 65.144781) (xy 91.512477 65.009331) (xy 91.574818 64.858827) (xy 91.6066 64.699052) (xy 91.6066 64.536148) + (xy 91.574818 64.376373) (xy 91.512477 64.225869) (xy 91.421972 64.090419) (xy 91.353753 64.0222) (xy 91.369052 64.0222) + (xy 91.528827 63.990418) (xy 91.679331 63.928077) (xy 91.814781 63.837572) (xy 91.929972 63.722381) (xy 92.020477 63.586931) + (xy 92.082818 63.436427) (xy 92.1146 63.276652) (xy 92.1146 63.113748) (xy 92.082818 62.953973) (xy 92.020477 62.803469) + (xy 91.929972 62.668019) (xy 91.814781 62.552828) (xy 91.679331 62.462323) (xy 91.528827 62.399982) (xy 91.369052 62.3682) + (xy 91.206148 62.3682) (xy 91.046373 62.399982) (xy 90.895869 62.462323) (xy 90.760419 62.552828) (xy 90.645228 62.668019) + (xy 90.554723 62.803469) (xy 90.499915 62.935787) (xy 90.456772 62.871219) (xy 90.341581 62.756028) (xy 90.206131 62.665523) + (xy 90.055627 62.603182) (xy 89.895852 62.5714) (xy 89.732948 62.5714) (xy 89.573173 62.603182) (xy 89.422669 62.665523) + (xy 89.287219 62.756028) (xy 89.172028 62.871219) (xy 89.081523 63.006669) (xy 89.026715 63.138987) (xy 88.983572 63.074419) + (xy 88.868381 62.959228) (xy 88.732931 62.868723) (xy 88.582427 62.806382) (xy 88.422652 62.7746) (xy 88.259748 62.7746) + (xy 88.099973 62.806382) (xy 87.949469 62.868723) (xy 87.814019 62.959228) (xy 87.698828 63.074419) (xy 87.608323 63.209869) + (xy 87.545982 63.360373) (xy 87.5142 63.520148) (xy 76.4198 63.520148) (xy 76.4198 59.200157) (xy 76.475677 59.116531) + (xy 76.538018 58.966027) (xy 76.5698 58.806252) (xy 76.5698 58.643348) (xy 76.538018 58.483573) (xy 76.475677 58.333069) + (xy 76.443591 58.28505) (xy 76.538972 58.206772) (xy 76.623423 58.103869) (xy 76.686175 57.986467) (xy 76.689168 57.9766) + (xy 76.779734 57.9766) (xy 76.787978 58.060307) (xy 76.812395 58.140796) (xy 76.852045 58.214976) (xy 76.905405 58.279995) + (xy 76.970424 58.333355) (xy 77.044604 58.373005) (xy 77.125093 58.397422) (xy 77.2088 58.405666) (xy 77.66655 58.4036) + (xy 77.7733 58.29685) (xy 77.7733 57.2746) (xy 77.8193 57.2746) (xy 77.8193 58.29685) (xy 77.92605 58.4036) + (xy 78.3838 58.405666) (xy 78.467507 58.397422) (xy 78.547996 58.373005) (xy 78.622176 58.333355) (xy 78.687195 58.279995) + (xy 78.740555 58.214976) (xy 78.780205 58.140796) (xy 78.804622 58.060307) (xy 78.812866 57.9766) (xy 78.8108 57.38135) + (xy 78.70405 57.2746) (xy 77.8193 57.2746) (xy 77.7733 57.2746) (xy 76.88855 57.2746) (xy 76.7818 57.38135) + (xy 76.779734 57.9766) (xy 76.689168 57.9766) (xy 76.724818 57.859079) (xy 76.737866 57.7266) (xy 76.737866 56.7766) + (xy 76.724818 56.644121) (xy 76.689169 56.5266) (xy 76.779734 56.5266) (xy 76.7818 57.12185) (xy 76.88855 57.2286) + (xy 77.7733 57.2286) (xy 77.7733 56.20635) (xy 77.8193 56.20635) (xy 77.8193 57.2286) (xy 78.70405 57.2286) + (xy 78.8108 57.12185) (xy 78.812866 56.5266) (xy 78.804622 56.442893) (xy 78.780205 56.362404) (xy 78.740555 56.288224) + (xy 78.687195 56.223205) (xy 78.622176 56.169845) (xy 78.547996 56.130195) (xy 78.467507 56.105778) (xy 78.3838 56.097534) + (xy 77.92605 56.0996) (xy 77.8193 56.20635) (xy 77.7733 56.20635) (xy 77.66655 56.0996) (xy 77.2088 56.097534) + (xy 77.125093 56.105778) (xy 77.044604 56.130195) (xy 76.970424 56.169845) (xy 76.905405 56.223205) (xy 76.852045 56.288224) + (xy 76.812395 56.362404) (xy 76.787978 56.442893) (xy 76.779734 56.5266) (xy 76.689169 56.5266) (xy 76.686175 56.516733) + (xy 76.623423 56.399331) (xy 76.538972 56.296428) (xy 76.4628 56.233915) (xy 76.4628 55.937411) (xy 76.500569 55.917223) + (xy 76.603472 55.832772) (xy 76.687923 55.729869) (xy 76.750675 55.612467) (xy 76.753668 55.6026) (xy 76.844234 55.6026) + (xy 76.852478 55.686307) (xy 76.876895 55.766796) (xy 76.916545 55.840976) (xy 76.969905 55.905995) (xy 77.034924 55.959355) + (xy 77.109104 55.999005) (xy 77.189593 56.023422) (xy 77.2733 56.031666) (xy 77.73105 56.0296) (xy 77.8378 55.92285) + (xy 77.8378 54.9006) (xy 77.8838 54.9006) (xy 77.8838 55.92285) (xy 77.99055 56.0296) (xy 78.4483 56.031666) + (xy 78.532007 56.023422) (xy 78.612496 55.999005) (xy 78.686676 55.959355) (xy 78.751695 55.905995) (xy 78.805055 55.840976) + (xy 78.844705 55.766796) (xy 78.869122 55.686307) (xy 78.877366 55.6026) (xy 78.8753 55.00735) (xy 78.76855 54.9006) + (xy 77.8838 54.9006) (xy 77.8378 54.9006) (xy 76.95305 54.9006) (xy 76.8463 55.00735) (xy 76.844234 55.6026) + (xy 76.753668 55.6026) (xy 76.789318 55.485079) (xy 76.802366 55.3526) (xy 76.802366 54.4026) (xy 76.789318 54.270121) + (xy 76.753669 54.1526) (xy 76.844234 54.1526) (xy 76.8463 54.74785) (xy 76.95305 54.8546) (xy 77.8378 54.8546) + (xy 77.8378 53.83235) (xy 77.8838 53.83235) (xy 77.8838 54.8546) (xy 78.76855 54.8546) (xy 78.8753 54.74785) + (xy 78.877366 54.1526) (xy 78.869122 54.068893) (xy 78.844705 53.988404) (xy 78.805055 53.914224) (xy 78.751695 53.849205) + (xy 78.686676 53.795845) (xy 78.612496 53.756195) (xy 78.532007 53.731778) (xy 78.4483 53.723534) (xy 77.99055 53.7256) + (xy 77.8838 53.83235) (xy 77.8378 53.83235) (xy 77.73105 53.7256) (xy 77.2733 53.723534) (xy 77.189593 53.731778) + (xy 77.109104 53.756195) (xy 77.034924 53.795845) (xy 76.969905 53.849205) (xy 76.916545 53.914224) (xy 76.876895 53.988404) + (xy 76.852478 54.068893) (xy 76.844234 54.1526) (xy 76.753669 54.1526) (xy 76.750675 54.142733) (xy 76.687923 54.025331) + (xy 76.603472 53.922428) (xy 76.500569 53.837977) (xy 76.4628 53.817789) (xy 76.4628 51.886948) (xy 84.8726 51.886948) + (xy 84.8726 52.049852) (xy 84.904382 52.209627) (xy 84.966723 52.360131) (xy 85.057228 52.495581) (xy 85.172419 52.610772) + (xy 85.307869 52.701277) (xy 85.458373 52.763618) (xy 85.618148 52.7954) (xy 85.781052 52.7954) (xy 85.940827 52.763618) + (xy 86.077669 52.706936) (xy 86.095425 52.765468) (xy 86.158177 52.882869) (xy 86.242628 52.985772) (xy 86.345531 53.070223) + (xy 86.462932 53.132975) (xy 86.59032 53.171618) (xy 86.722799 53.184666) (xy 87.622801 53.184666) (xy 87.75528 53.171618) + (xy 87.882668 53.132975) (xy 88.000069 53.070223) (xy 88.102972 52.985772) (xy 88.187423 52.882869) (xy 88.250175 52.765468) + (xy 88.288818 52.63808) (xy 88.301866 52.505601) (xy 88.301866 51.805599) (xy 88.288818 51.67312) (xy 88.250175 51.545732) + (xy 88.187423 51.428331) (xy 88.102972 51.325428) (xy 88.000069 51.240977) (xy 87.882668 51.178225) (xy 87.808084 51.1556) + (xy 87.882668 51.132975) (xy 88.000069 51.070223) (xy 88.102972 50.985772) (xy 88.187423 50.882869) (xy 88.250175 50.765468) + (xy 88.260145 50.7326) (xy 88.343673 50.7326) (xy 88.372004 50.73539) (xy 88.400335 50.7326) (xy 88.40034 50.7326) + (xy 88.430049 50.729674) (xy 88.485115 50.724251) (xy 88.529774 50.710703) (xy 88.59388 50.691257) (xy 88.694119 50.637679) + (xy 88.781978 50.565574) (xy 88.800043 50.543562) (xy 90.110528 49.233077) (xy 90.138415 49.244628) (xy 90.385128 49.293702) + (xy 90.636676 49.293702) (xy 90.883389 49.244628) (xy 91.115788 49.148365) (xy 91.29511 49.028546) (xy 91.175291 49.207868) + (xy 91.079028 49.440267) (xy 91.029954 49.68698) (xy 91.029954 49.938528) (xy 91.079028 50.185241) (xy 91.175291 50.41764) + (xy 91.315043 50.626794) (xy 91.492914 50.804665) (xy 91.702068 50.944417) (xy 91.934467 51.04068) (xy 92.18118 51.089754) + (xy 92.432728 51.089754) (xy 92.679441 51.04068) (xy 92.91184 50.944417) (xy 93.091159 50.8246) (xy 92.971342 51.003919) + (xy 92.875079 51.236318) (xy 92.826005 51.483031) (xy 92.826005 51.734579) (xy 92.875079 51.981292) (xy 92.971342 52.213691) + (xy 93.111094 52.422845) (xy 93.288965 52.600716) (xy 93.498119 52.740468) (xy 93.730518 52.836731) (xy 93.977231 52.885805) + (xy 94.228779 52.885805) (xy 94.475492 52.836731) (xy 94.707891 52.740468) (xy 94.88721 52.620651) (xy 94.767393 52.79997) + (xy 94.67113 53.032369) (xy 94.622056 53.279082) (xy 94.622056 53.53063) (xy 94.67113 53.777343) (xy 94.767393 54.009742) + (xy 94.907145 54.218896) (xy 95.085016 54.396767) (xy 95.29417 54.536519) (xy 95.526569 54.632782) (xy 95.773282 54.681856) + (xy 96.02483 54.681856) (xy 96.271543 54.632782) (xy 96.503942 54.536519) (xy 96.683261 54.416702) (xy 96.563444 54.596021) + (xy 96.467181 54.82842) (xy 96.418107 55.075133) (xy 96.418107 55.326681) (xy 96.467181 55.573394) (xy 96.563444 55.805793) + (xy 96.703196 56.014947) (xy 96.881067 56.192818) (xy 97.090221 56.33257) (xy 97.32262 56.428833) (xy 97.569333 56.477907) + (xy 97.820881 56.477907) (xy 98.067594 56.428833) (xy 98.299993 56.33257) (xy 98.479315 56.212751) (xy 98.359496 56.392073) + (xy 98.263233 56.624472) (xy 98.214159 56.871185) (xy 98.214159 57.122733) (xy 98.263233 57.369446) (xy 98.359496 57.601845) + (xy 98.499248 57.810999) (xy 98.677119 57.98887) (xy 98.886273 58.128622) (xy 99.118672 58.224885) (xy 99.365385 58.273959) + (xy 99.616933 58.273959) (xy 99.863646 58.224885) (xy 100.096045 58.128622) (xy 100.305199 57.98887) (xy 100.48307 57.810999) + (xy 100.622822 57.601845) (xy 100.719085 57.369446) (xy 100.768159 57.122733) (xy 100.768159 56.871185) (xy 100.719085 56.624472) + (xy 100.622822 56.392073) (xy 100.48307 56.182919) (xy 100.305199 56.005048) (xy 100.096045 55.865296) (xy 99.863646 55.769033) + (xy 99.616933 55.719959) (xy 99.365385 55.719959) (xy 99.118672 55.769033) (xy 98.886273 55.865296) (xy 98.706951 55.985115) + (xy 98.82677 55.805793) (xy 98.923033 55.573394) (xy 98.972107 55.326681) (xy 98.972107 55.075133) (xy 98.923033 54.82842) + (xy 98.82677 54.596021) (xy 98.687018 54.386867) (xy 98.509147 54.208996) (xy 98.299993 54.069244) (xy 98.067594 53.972981) + (xy 97.820881 53.923907) (xy 97.569333 53.923907) (xy 97.32262 53.972981) (xy 97.090221 54.069244) (xy 96.910902 54.189061) + (xy 97.030719 54.009742) (xy 97.126982 53.777343) (xy 97.176056 53.53063) (xy 97.176056 53.279082) (xy 97.126982 53.032369) + (xy 97.030719 52.79997) (xy 96.890967 52.590816) (xy 96.713096 52.412945) (xy 96.503942 52.273193) (xy 96.271543 52.17693) + (xy 96.02483 52.127856) (xy 95.773282 52.127856) (xy 95.526569 52.17693) (xy 95.29417 52.273193) (xy 95.114851 52.39301) + (xy 95.234668 52.213691) (xy 95.330931 51.981292) (xy 95.380005 51.734579) (xy 95.380005 51.483031) (xy 95.330931 51.236318) + (xy 95.234668 51.003919) (xy 95.094916 50.794765) (xy 94.917045 50.616894) (xy 94.707891 50.477142) (xy 94.475492 50.380879) + (xy 94.228779 50.331805) (xy 93.977231 50.331805) (xy 93.730518 50.380879) (xy 93.498119 50.477142) (xy 93.3188 50.596959) + (xy 93.438617 50.41764) (xy 93.53488 50.185241) (xy 93.583954 49.938528) (xy 93.583954 49.68698) (xy 93.53488 49.440267) + (xy 93.438617 49.207868) (xy 93.298865 48.998714) (xy 93.120994 48.820843) (xy 92.91184 48.681091) (xy 92.679441 48.584828) + (xy 92.432728 48.535754) (xy 92.18118 48.535754) (xy 91.934467 48.584828) (xy 91.702068 48.681091) (xy 91.522746 48.80091) + (xy 91.642565 48.621588) (xy 91.738828 48.389189) (xy 91.787902 48.142476) (xy 91.787902 47.890928) (xy 91.738828 47.644215) + (xy 91.642565 47.411816) (xy 91.502813 47.202662) (xy 91.324942 47.024791) (xy 91.115788 46.885039) (xy 90.883389 46.788776) + (xy 90.636676 46.739702) (xy 90.385128 46.739702) (xy 90.138415 46.788776) (xy 89.906016 46.885039) (xy 89.696862 47.024791) + (xy 89.624191 47.097462) (xy 89.558463 47.031733) (xy 89.761318 46.952525) (xy 89.883992 46.734307) (xy 89.961736 46.496349) + (xy 89.991564 46.247796) (xy 89.972328 45.9982) (xy 89.904768 45.757153) (xy 89.79148 45.533917) (xy 89.761317 45.488778) + (xy 89.558446 45.409583) (xy 88.747378 46.220651) (xy 88.76152 46.234793) (xy 88.728993 46.26732) (xy 88.714851 46.253178) + (xy 87.903783 47.064246) (xy 87.982978 47.267117) (xy 88.028117 47.29728) (xy 88.251353 47.410568) (xy 88.4924 47.478128) + (xy 88.741996 47.497364) (xy 88.990549 47.467536) (xy 89.228507 47.389792) (xy 89.446725 47.267118) (xy 89.525933 47.064263) + (xy 89.591662 47.129991) (xy 89.518991 47.202662) (xy 89.379239 47.411816) (xy 89.282976 47.644215) (xy 89.233902 47.890928) + (xy 89.233902 48.142476) (xy 89.282976 48.389189) (xy 89.294527 48.417076) (xy 88.22081 49.490793) (xy 88.187423 49.428331) + (xy 88.102972 49.325428) (xy 88.000069 49.240977) (xy 87.882668 49.178225) (xy 87.75528 49.139582) (xy 87.622801 49.126534) + (xy 86.722799 49.126534) (xy 86.59032 49.139582) (xy 86.462932 49.178225) (xy 86.345531 49.240977) (xy 86.242628 49.325428) + (xy 86.158177 49.428331) (xy 86.095425 49.545732) (xy 86.056782 49.67312) (xy 86.043734 49.805599) (xy 86.043734 50.505601) + (xy 86.056782 50.63808) (xy 86.095425 50.765468) (xy 86.158177 50.882869) (xy 86.242628 50.985772) (xy 86.345531 51.070223) + (xy 86.462932 51.132975) (xy 86.537516 51.1556) (xy 86.462932 51.178225) (xy 86.345531 51.240977) (xy 86.242628 51.325428) + (xy 86.235214 51.334461) (xy 86.226781 51.326028) (xy 86.091331 51.235523) (xy 85.940827 51.173182) (xy 85.781052 51.1414) + (xy 85.618148 51.1414) (xy 85.458373 51.173182) (xy 85.307869 51.235523) (xy 85.172419 51.326028) (xy 85.057228 51.441219) + (xy 84.966723 51.576669) (xy 84.904382 51.727173) (xy 84.8726 51.886948) (xy 76.4628 51.886948) (xy 76.4628 46.304252) + (xy 76.466075 46.271) (xy 76.453004 46.138285) (xy 76.414292 46.01067) (xy 76.351428 45.893059) (xy 76.288024 45.815801) + (xy 76.288018 45.815795) (xy 76.266826 45.789973) (xy 76.241006 45.768783) (xy 75.573823 45.1016) (xy 85.786928 45.1016) + (xy 86.615405 45.930077) (xy 86.680424 45.983437) (xy 86.754604 46.023087) (xy 86.835093 46.047504) (xy 86.9188 46.055748) + (xy 87.002507 46.047504) (xy 87.082996 46.023087) (xy 87.157176 45.983437) (xy 87.222195 45.930077) (xy 87.806971 45.345301) + (xy 87.871239 45.409569) (xy 87.668384 45.488777) (xy 87.54571 45.706995) (xy 87.467966 45.944953) (xy 87.438138 46.193506) + (xy 87.457374 46.443102) (xy 87.524934 46.684149) (xy 87.638222 46.907385) (xy 87.668385 46.952524) (xy 87.871256 47.031719) + (xy 88.682324 46.220651) (xy 88.668182 46.206509) (xy 88.700709 46.173982) (xy 88.714851 46.188124) (xy 89.525919 45.377056) + (xy 89.446724 45.174185) (xy 89.401585 45.144022) (xy 89.178349 45.030734) (xy 88.937302 44.963174) (xy 88.687706 44.943938) + (xy 88.439153 44.973766) (xy 88.201195 45.05151) (xy 87.982977 45.174184) (xy 87.903769 45.377039) (xy 87.839501 45.312771) + (xy 88.424277 44.727995) (xy 88.477637 44.662976) (xy 88.517287 44.588796) (xy 88.541704 44.508307) (xy 88.549948 44.4246) + (xy 88.541704 44.340893) (xy 88.517287 44.260404) (xy 88.477637 44.186224) (xy 88.424277 44.121205) (xy 87.379503 43.076431) + (xy 87.638295 43.282283) (xy 90.725181 45.937424) (xy 93.707877 48.709117) (xy 96.581969 51.593258) (xy 99.343237 54.585616) + (xy 101.9886 57.682939) (xy 103.325107 59.351172) (xy 68.475393 86.578753) (xy 68.4926 86.492252) (xy 68.4926 86.329348) + (xy 68.460818 86.169573) (xy 68.398477 86.019069) (xy 68.307972 85.883619) (xy 68.192781 85.768428) (xy 68.057331 85.677923) + (xy 67.906827 85.615582) (xy 67.747052 85.5838) (xy 67.584148 85.5838) (xy 67.424373 85.615582) (xy 67.273869 85.677923) + (xy 67.138419 85.768428) (xy 67.023228 85.883619) (xy 66.932723 86.019069) (xy 66.870382 86.169573) (xy 66.8386 86.329348) + (xy 66.8386 86.492252) (xy 66.870382 86.652027) (xy 66.932723 86.802531) (xy 67.023228 86.937981) (xy 67.138419 87.053172) + (xy 67.273869 87.143677) (xy 67.424373 87.206018) (xy 67.584148 87.2378) (xy 67.631852 87.2378) (xy 66.859106 87.841536) + (xy 66.874477 87.818531) (xy 66.936818 87.668027) (xy 66.9686 87.508252) (xy 66.9686 87.345348) (xy 66.936818 87.185573) + (xy 66.874477 87.035069) (xy 66.783972 86.899619) (xy 66.668781 86.784428) (xy 66.533331 86.693923) (xy 66.382827 86.631582) + (xy 66.223052 86.5998) (xy 66.060148 86.5998) (xy 65.900373 86.631582) (xy 65.812648 86.667919) (xy 65.858477 86.599331) + (xy 65.920818 86.448827) (xy 65.9526 86.289052) (xy 65.9526 86.126148) (xy 65.920818 85.966373) (xy 65.858477 85.815869) + (xy 65.767972 85.680419) (xy 65.652781 85.565228) (xy 65.517331 85.474723) (xy 65.366827 85.412382) (xy 65.207052 85.3806) + (xy 65.044148 85.3806) (xy 64.884373 85.412382) (xy 64.733869 85.474723) (xy 64.598419 85.565228) (xy 64.483228 85.680419) + (xy 64.392723 85.815869) (xy 64.330382 85.966373) (xy 64.2986 86.126148) (xy 64.2986 86.289052) (xy 64.330382 86.448827) + (xy 64.392723 86.599331) (xy 64.483228 86.734781) (xy 64.598419 86.849972) (xy 64.733869 86.940477) (xy 64.884373 87.002818) + (xy 65.044148 87.0346) (xy 65.207052 87.0346) (xy 65.366827 87.002818) (xy 65.454552 86.966481) (xy 65.408723 87.035069) + (xy 65.346382 87.185573) (xy 65.3146 87.345348) (xy 65.3146 87.508252) (xy 65.346382 87.668027) (xy 65.402952 87.804599) + (xy 65.297181 87.698828) (xy 65.161731 87.608323) (xy 65.011227 87.545982) (xy 64.851452 87.5142) (xy 64.688548 87.5142) + (xy 64.528773 87.545982) (xy 64.451554 87.577967) (xy 64.498418 87.464827) (xy 64.5302 87.305052) (xy 64.5302 87.142148) + (xy 64.498418 86.982373) (xy 64.436077 86.831869) (xy 64.345572 86.696419) (xy 64.230381 86.581228) (xy 64.094931 86.490723) + (xy 63.944427 86.428382) (xy 63.784652 86.3966) (xy 63.621748 86.3966) (xy 63.461973 86.428382) (xy 63.311469 86.490723) + (xy 63.176019 86.581228) (xy 63.060828 86.696419) (xy 62.970323 86.831869) (xy 62.907982 86.982373) (xy 62.8762 87.142148) + (xy 62.8762 87.305052) (xy 62.907982 87.464827) (xy 62.953568 87.574881) (xy 62.372186 86.89417) (xy 62.356352 86.876584) + (xy 62.356333 86.876565) (xy 60.583651 85.008548) (xy 65.7718 85.008548) (xy 65.7718 85.171452) (xy 65.803582 85.331227) + (xy 65.865923 85.481731) (xy 65.956428 85.617181) (xy 66.071619 85.732372) (xy 66.207069 85.822877) (xy 66.357573 85.885218) + (xy 66.517348 85.917) (xy 66.680252 85.917) (xy 66.840027 85.885218) (xy 66.990531 85.822877) (xy 67.125981 85.732372) + (xy 67.241172 85.617181) (xy 67.331677 85.481731) (xy 67.394018 85.331227) (xy 67.4258 85.171452) (xy 67.4258 85.008548) + (xy 67.394018 84.848773) (xy 67.331677 84.698269) (xy 67.241172 84.562819) (xy 67.125981 84.447628) (xy 66.990531 84.357123) + (xy 66.840027 84.294782) (xy 66.680252 84.263) (xy 66.517348 84.263) (xy 66.357573 84.294782) (xy 66.207069 84.357123) + (xy 66.071619 84.447628) (xy 65.956428 84.562819) (xy 65.865923 84.698269) (xy 65.803582 84.848773) (xy 65.7718 85.008548) + (xy 60.583651 85.008548) (xy 60.320222 84.730952) (xy 60.320203 84.730931) (xy 60.30347 84.714198) (xy 58.157835 82.678067) + (xy 58.157816 82.678048) (xy 58.149386 82.670458) (xy 58.14023 82.662213) (xy 58.140207 82.662195) (xy 57.239226 81.892683) + (xy 60.9381 81.892683) (xy 60.948169 81.97619) (xy 60.974335 82.056128) (xy 61.015594 82.129425) (xy 62.048032 83.603899) + (xy 62.102797 83.667739) (xy 62.168965 83.719668) (xy 62.243992 83.75769) (xy 62.324996 83.780345) (xy 62.408862 83.786761) + (xy 62.492369 83.776692) (xy 62.572307 83.750526) (xy 62.645604 83.709267) (xy 63.973323 82.779588) (xy 71.516184 82.769813) + (xy 71.571704 82.771565) (xy 71.615651 82.764255) (xy 71.659979 82.759831) (xy 71.681288 82.753337) (xy 71.703254 82.749683) + (xy 71.744924 82.733943) (xy 71.787543 82.720954) (xy 71.807171 82.71043) (xy 71.828008 82.702559) (xy 71.865813 82.678988) + (xy 71.905073 82.657937) (xy 71.947967 82.622641) (xy 72.910567 81.88218) (xy 73.022994 82.02608) (xy 73.081026 82.086966) + (xy 73.149821 82.135361) (xy 73.226735 82.169405) (xy 73.308813 82.187789) (xy 73.3929 82.189807) (xy 73.475766 82.175382) + (xy 73.554225 82.145068) (xy 73.625262 82.10003) (xy 74.96488 81.053406) (xy 75.025766 80.995374) (xy 75.074161 80.926579) + (xy 75.108205 80.849665) (xy 75.126589 80.767587) (xy 75.128607 80.6835) (xy 75.114182 80.600634) (xy 75.083868 80.522175) + (xy 75.03883 80.451138) (xy 74.529679 79.799455) (xy 74.601301 79.743498) (xy 74.655196 79.954494) (xy 74.856837 80.102847) + (xy 75.083547 80.209012) (xy 75.326612 80.268909) (xy 75.576692 80.280234) (xy 75.824176 80.242554) (xy 76.059554 80.157316) + (xy 76.108033 80.132879) (xy 76.211361 79.941172) (xy 75.505183 79.037304) (xy 75.489423 79.049617) (xy 75.461102 79.01337) + (xy 75.476863 79.001056) (xy 74.770684 78.097189) (xy 74.559674 78.15107) (xy 74.524234 78.192197) (xy 74.384585 78.399963) + (xy 74.288153 78.630979) (xy 74.238642 78.876371) (xy 74.237957 79.126706) (xy 74.286122 79.372365) (xy 74.381287 79.603906) + (xy 74.572978 79.707246) (xy 74.501356 79.763203) (xy 73.992206 79.11152) (xy 73.934174 79.050634) (xy 73.865379 79.002239) + (xy 73.788465 78.968195) (xy 73.706387 78.949811) (xy 73.6223 78.947793) (xy 73.539434 78.962218) (xy 73.460975 78.992532) + (xy 73.396095 79.033666) (xy 73.508654 76.557385) (xy 73.772818 76.3666) (xy 73.843052 76.3666) (xy 74.002827 76.334818) + (xy 74.153331 76.272477) (xy 74.288781 76.181972) (xy 74.403972 76.066781) (xy 74.494477 75.931331) (xy 74.556818 75.780827) + (xy 74.5886 75.621052) (xy 74.5886 75.458148) (xy 74.556818 75.298373) (xy 74.494477 75.147869) (xy 74.403972 75.012419) + (xy 74.288781 74.897228) (xy 74.153331 74.806723) (xy 74.002827 74.744382) (xy 73.843052 74.7126) (xy 73.680148 74.7126) + (xy 73.520373 74.744382) (xy 73.369869 74.806723) (xy 73.234419 74.897228) (xy 73.119228 75.012419) (xy 73.028723 75.147869) + (xy 72.977937 75.270477) (xy 72.500361 75.615394) (xy 72.495333 75.617794) (xy 72.446363 75.654392) (xy 72.423867 75.670639) + (xy 72.419716 75.674306) (xy 72.388512 75.697627) (xy 72.369864 75.718354) (xy 72.34897 75.736815) (xy 72.325375 75.767802) + (xy 72.299317 75.796765) (xy 72.285069 75.820736) (xy 72.26818 75.842916) (xy 72.251081 75.877917) (xy 72.231178 75.911401) + (xy 72.221882 75.937685) (xy 72.209642 75.962739) (xy 72.1997 76.0004) (xy 72.186711 76.037126) (xy 72.182721 76.064722) + (xy 72.175605 76.091679) (xy 72.173201 76.130562) (xy 72.172409 76.136042) (xy 72.171149 76.163762) (xy 72.167377 76.22478) + (xy 72.168125 76.2303) (xy 72.021016 79.466682) (xy 72.018686 79.477677) (xy 72.017993 79.533192) (xy 72.016989 79.555276) + (xy 72.017578 79.566429) (xy 72.017021 79.611022) (xy 72.021086 79.632879) (xy 72.022258 79.655081) (xy 72.033252 79.698298) + (xy 72.041404 79.742132) (xy 72.049655 79.762777) (xy 72.055136 79.784323) (xy 72.074344 79.824553) (xy 72.090895 79.865966) + (xy 72.103018 79.884609) (xy 72.112595 79.904667) (xy 72.139285 79.94038) (xy 72.14538 79.949753) (xy 72.159202 79.96703) + (xy 72.174346 79.987294) (xy 72.05032 80.084194) (xy 71.989434 80.142226) (xy 71.941039 80.211021) (xy 71.906995 80.287935) + (xy 71.888611 80.370013) (xy 71.886593 80.4541) (xy 71.901018 80.536966) (xy 71.931332 80.615425) (xy 71.97637 80.686462) + (xy 72.076939 80.815184) (xy 71.29575 81.416099) (xy 63.767928 81.425854) (xy 63.193008 80.604783) (xy 63.138243 80.540943) + (xy 63.072075 80.489014) (xy 62.997048 80.450992) (xy 62.916044 80.428337) (xy 62.832178 80.421921) (xy 62.748671 80.43199) + (xy 62.668733 80.458156) (xy 62.595436 80.499415) (xy 61.120962 81.531853) (xy 61.057122 81.586618) (xy 61.005193 81.652786) + (xy 60.967171 81.727813) (xy 60.944516 81.808817) (xy 60.9381 81.892683) (xy 57.239226 81.892683) (xy 57.197622 81.85715) + (xy 59.778981 79.105761) (xy 65.38928 79.105761) (xy 65.38928 79.367157) (xy 65.440276 79.623531) (xy 65.540308 79.865029) + (xy 65.685532 80.082372) (xy 65.870367 80.267207) (xy 66.08771 80.412431) (xy 66.329208 80.512463) (xy 66.585582 80.563459) + (xy 66.846978 80.563459) (xy 67.103352 80.512463) (xy 67.34485 80.412431) (xy 67.562193 80.267207) (xy 67.747028 80.082372) + (xy 67.892252 79.865029) (xy 67.992284 79.623531) (xy 68.04328 79.367157) (xy 68.04328 79.105761) (xy 67.992284 78.849387) + (xy 67.892252 78.607889) (xy 67.747028 78.390546) (xy 67.562193 78.205711) (xy 67.34485 78.060487) (xy 67.103352 77.960455) + (xy 66.846978 77.909459) (xy 66.585582 77.909459) (xy 66.329208 77.960455) (xy 66.08771 78.060487) (xy 65.870367 78.205711) + (xy 65.685532 78.390546) (xy 65.540308 78.607889) (xy 65.440276 78.849387) (xy 65.38928 79.105761) (xy 59.778981 79.105761) + (xy 63.170131 75.491243) (xy 63.182057 75.481313) (xy 67.371152 72.788324) (xy 67.395436 72.768024) (xy 67.438229 72.722051) + (xy 67.453324 72.702253) (xy 67.464266 72.67989) (xy 67.468325 72.666925) (xy 67.483856 72.606068) (xy 67.4878 72.574664) + (xy 67.4878 68.8976) (xy 69.541734 68.8976) (xy 69.541734 70.4976) (xy 69.549978 70.581307) (xy 69.574395 70.661796) + (xy 69.614045 70.735976) (xy 69.667405 70.800995) (xy 69.732424 70.854355) (xy 69.806604 70.894005) (xy 69.887093 70.918422) + (xy 69.9708 70.926666) (xy 72.3708 70.926666) (xy 72.454507 70.918422) (xy 72.534996 70.894005) (xy 72.609176 70.854355) + (xy 72.674195 70.800995) (xy 72.727555 70.735976) (xy 72.767205 70.661796) (xy 72.791622 70.581307) (xy 72.799866 70.4976) + (xy 72.799866 68.8976) (xy 72.791622 68.813893) (xy 72.767205 68.733404) (xy 72.727555 68.659224) (xy 72.674195 68.594205) + (xy 72.609176 68.540845) (xy 72.534996 68.501195) (xy 72.454507 68.476778) (xy 72.3708 68.468534) (xy 69.9708 68.468534) + (xy 69.887093 68.476778) (xy 69.806604 68.501195) (xy 69.732424 68.540845) (xy 69.667405 68.594205) (xy 69.614045 68.659224) + (xy 69.574395 68.733404) (xy 69.549978 68.813893) (xy 69.541734 68.8976) (xy 67.4878 68.8976) (xy 67.4878 67.372228) + (xy 69.562718 67.372228) (xy 69.56289 67.374416) (xy 69.628398 67.605902) (xy 69.737808 67.82016) (xy 69.886916 68.008956) + (xy 70.069991 68.165035) (xy 70.279998 68.282398) (xy 70.508866 68.356536) (xy 70.7478 68.3846) (xy 71.1478 68.3846) + (xy 71.1478 67.1806) (xy 71.1938 67.1806) (xy 71.1938 68.3846) (xy 71.5938 68.3846) (xy 71.832734 68.356536) + (xy 72.061602 68.282398) (xy 72.271609 68.165035) (xy 72.454684 68.008956) (xy 72.603792 67.82016) (xy 72.713202 67.605902) + (xy 72.77871 67.374416) (xy 72.778882 67.372228) (xy 72.690814 67.1806) (xy 71.1938 67.1806) (xy 71.1478 67.1806) + (xy 69.650786 67.1806) (xy 69.562718 67.372228) (xy 67.4878 67.372228) (xy 67.4878 66.942972) (xy 69.562718 66.942972) + (xy 69.650786 67.1346) (xy 71.1478 67.1346) (xy 71.1478 65.9306) (xy 71.1938 65.9306) (xy 71.1938 67.1346) + (xy 72.690814 67.1346) (xy 72.778882 66.942972) (xy 72.77871 66.940784) (xy 72.713202 66.709298) (xy 72.603792 66.49504) + (xy 72.454684 66.306244) (xy 72.271609 66.150165) (xy 72.061602 66.032802) (xy 71.832734 65.958664) (xy 71.5938 65.9306) + (xy 71.1938 65.9306) (xy 71.1478 65.9306) (xy 70.7478 65.9306) (xy 70.508866 65.958664) (xy 70.279998 66.032802) + (xy 70.069991 66.150165) (xy 69.886916 66.306244) (xy 69.737808 66.49504) (xy 69.628398 66.709298) (xy 69.56289 66.940784) + (xy 69.562718 66.942972) (xy 67.4878 66.942972) (xy 67.4878 64.6176) (xy 69.537864 64.6176) (xy 69.561555 64.858134) + (xy 69.631716 65.089424) (xy 69.745651 65.302583) (xy 69.898983 65.489417) (xy 70.085817 65.642749) (xy 70.298976 65.756684) + (xy 70.530266 65.826845) (xy 70.710532 65.8446) (xy 71.631068 65.8446) (xy 71.811334 65.826845) (xy 72.042624 65.756684) + (xy 72.255783 65.642749) (xy 72.442617 65.489417) (xy 72.595949 65.302583) (xy 72.709884 65.089424) (xy 72.780045 64.858134) + (xy 72.803736 64.6176) (xy 72.780045 64.377066) (xy 72.709884 64.145776) (xy 72.595949 63.932617) (xy 72.442617 63.745783) + (xy 72.255783 63.592451) (xy 72.042624 63.478516) (xy 71.811334 63.408355) (xy 71.631068 63.3906) (xy 70.710532 63.3906) + (xy 70.530266 63.408355) (xy 70.298976 63.478516) (xy 70.085817 63.592451) (xy 69.898983 63.745783) (xy 69.745651 63.932617) + (xy 69.631716 64.145776) (xy 69.561555 64.377066) (xy 69.537864 64.6176) (xy 67.4878 64.6176) (xy 67.4878 59.789705) + (xy 67.48536 59.764929) (xy 67.479316 59.744066) (xy 67.446515 59.658887) (xy 67.435334 59.636643) (xy 67.422198 59.619346) + (xy 63.185467 54.93402) (xy 63.16963 54.893036) (xy 63.161345 51.3716) (xy 65.223734 51.3716) (xy 65.223734 52.9716) + (xy 65.231978 53.055307) (xy 65.256395 53.135796) (xy 65.296045 53.209976) (xy 65.349405 53.274995) (xy 65.414424 53.328355) + (xy 65.488604 53.368005) (xy 65.569093 53.392422) (xy 65.6528 53.400666) (xy 68.0528 53.400666) (xy 68.136507 53.392422) + (xy 68.216996 53.368005) (xy 68.291176 53.328355) (xy 68.356195 53.274995) (xy 68.409555 53.209976) (xy 68.449205 53.135796) + (xy 68.473622 53.055307) (xy 68.481866 52.9716) (xy 68.481866 51.3716) (xy 68.473622 51.287893) (xy 68.449205 51.207404) + (xy 68.409555 51.133224) (xy 68.356195 51.068205) (xy 68.291176 51.014845) (xy 68.216996 50.975195) (xy 68.136507 50.950778) + (xy 68.0528 50.942534) (xy 65.6528 50.942534) (xy 65.569093 50.950778) (xy 65.488604 50.975195) (xy 65.414424 51.014845) + (xy 65.349405 51.068205) (xy 65.296045 51.133224) (xy 65.256395 51.207404) (xy 65.231978 51.287893) (xy 65.223734 51.3716) + (xy 63.161345 51.3716) (xy 63.157756 49.846228) (xy 65.244718 49.846228) (xy 65.24489 49.848416) (xy 65.310398 50.079902) + (xy 65.419808 50.29416) (xy 65.568916 50.482956) (xy 65.751991 50.639035) (xy 65.961998 50.756398) (xy 66.190866 50.830536) + (xy 66.4298 50.8586) (xy 66.8298 50.8586) (xy 66.8298 49.6546) (xy 66.8758 49.6546) (xy 66.8758 50.8586) + (xy 67.2758 50.8586) (xy 67.514734 50.830536) (xy 67.743602 50.756398) (xy 67.953609 50.639035) (xy 68.136684 50.482956) + (xy 68.285792 50.29416) (xy 68.395202 50.079902) (xy 68.46071 49.848416) (xy 68.460882 49.846228) (xy 68.372814 49.6546) + (xy 66.8758 49.6546) (xy 66.8298 49.6546) (xy 65.332786 49.6546) (xy 65.244718 49.846228) (xy 63.157756 49.846228) + (xy 63.156746 49.416972) (xy 65.244718 49.416972) (xy 65.332786 49.6086) (xy 66.8298 49.6086) (xy 66.8298 48.4046) + (xy 66.8758 48.4046) (xy 66.8758 49.6086) (xy 68.372814 49.6086) (xy 68.460882 49.416972) (xy 68.46071 49.414784) + (xy 68.395202 49.183298) (xy 68.285792 48.96904) (xy 68.136684 48.780244) (xy 67.953609 48.624165) (xy 67.743602 48.506802) + (xy 67.514734 48.432664) (xy 67.2758 48.4046) (xy 66.8758 48.4046) (xy 66.8298 48.4046) (xy 66.4298 48.4046) + (xy 66.190866 48.432664) (xy 65.961998 48.506802) (xy 65.751991 48.624165) (xy 65.568916 48.780244) (xy 65.419808 48.96904) + (xy 65.310398 49.183298) (xy 65.24489 49.414784) (xy 65.244718 49.416972) (xy 63.156746 49.416972) (xy 63.151274 47.0916) + (xy 65.219864 47.0916) (xy 65.243555 47.332134) (xy 65.313716 47.563424) (xy 65.427651 47.776583) (xy 65.580983 47.963417) + (xy 65.767817 48.116749) (xy 65.980976 48.230684) (xy 66.212266 48.300845) (xy 66.392532 48.3186) (xy 67.313068 48.3186) + (xy 67.493334 48.300845) (xy 67.724624 48.230684) (xy 67.937783 48.116749) (xy 68.124617 47.963417) (xy 68.277949 47.776583) + (xy 68.391884 47.563424) (xy 68.462045 47.332134) (xy 68.485736 47.0916) (xy 68.462045 46.851066) (xy 68.391884 46.619776) + (xy 68.277949 46.406617) (xy 68.124617 46.219783) (xy 67.937783 46.066451) (xy 67.724624 45.952516) (xy 67.493334 45.882355) + (xy 67.313068 45.8646) (xy 66.392532 45.8646) (xy 66.212266 45.882355) (xy 65.980976 45.952516) (xy 65.767817 46.066451) + (xy 65.580983 46.219783) (xy 65.427651 46.406617) (xy 65.313716 46.619776) (xy 65.243555 46.851066) (xy 65.219864 47.0916) + (xy 63.151274 47.0916) (xy 63.144701 44.298036) (xy 63.140263 44.265057) (xy 63.122975 44.201386) (xy 63.114128 44.178114) + (xy 63.100911 44.157016) (xy 63.089744 44.144392) (xy 63.042848 44.097985) (xy 63.02352 44.082292) (xy 63.001502 44.070671) + (xy 62.985507 44.065352) (xy 62.921658 44.048733) (xy 62.888636 44.044642) (xy 56.817161 44.094004) (xy 56.792405 44.096646) + (xy 56.771358 44.102951) (xy 56.686078 44.136785) (xy 56.663948 44.14819) (xy 56.646601 44.161672) (xy 55.00962 45.678286) + (xy 54.968007 45.6946) (xy 39.89485 45.6946) (xy 39.881661 45.691064) (xy 39.878137 45.67787) (xy 39.887445 35.9036) + (xy 43.095734 35.9036) (xy 43.103978 35.987307) (xy 43.128395 36.067796) (xy 43.168045 36.141976) (xy 43.221405 36.206995) + (xy 43.286424 36.260355) (xy 43.360604 36.300005) (xy 43.441093 36.324422) (xy 43.5248 36.332666) (xy 44.24505 36.3306) + (xy 44.3518 36.22385) (xy 44.3518 35.1766) (xy 44.3978 35.1766) (xy 44.3978 36.22385) (xy 44.50455 36.3306) + (xy 45.2248 36.332666) (xy 45.308507 36.324422) (xy 45.388996 36.300005) (xy 45.463176 36.260355) (xy 45.528195 36.206995) + (xy 45.581555 36.141976) (xy 45.621205 36.067796) (xy 45.645622 35.987307) (xy 45.653866 35.9036) (xy 45.6518 35.28335) + (xy 45.54505 35.1766) (xy 44.3978 35.1766) (xy 44.3518 35.1766) (xy 43.20455 35.1766) (xy 43.0978 35.28335) + (xy 43.095734 35.9036) (xy 39.887445 35.9036) (xy 39.888873 34.4036) (xy 43.095734 34.4036) (xy 43.0978 35.02385) + (xy 43.20455 35.1306) (xy 44.3518 35.1306) (xy 44.3518 34.08335) (xy 44.3978 34.08335) (xy 44.3978 35.1306) + (xy 45.54505 35.1306) (xy 45.6518 35.02385) (xy 45.653866 34.4036) (xy 45.645622 34.319893) (xy 45.621205 34.239404) + (xy 45.597792 34.1956) (xy 48.934734 34.1956) (xy 48.942978 34.279307) (xy 48.967395 34.359796) (xy 49.007045 34.433976) + (xy 49.060405 34.498995) (xy 49.125424 34.552355) (xy 49.199604 34.592005) (xy 49.280093 34.616422) (xy 49.3638 34.624666) + (xy 49.95905 34.6226) (xy 50.0658 34.51585) (xy 50.0658 33.6311) (xy 50.1118 33.6311) (xy 50.1118 34.51585) + (xy 50.21855 34.6226) (xy 50.8138 34.624666) (xy 50.897507 34.616422) (xy 50.977996 34.592005) (xy 51.052176 34.552355) + (xy 51.117195 34.498995) (xy 51.170555 34.433976) (xy 51.210205 34.359796) (xy 51.234622 34.279307) (xy 51.234837 34.277125) + (xy 51.253393 34.338294) (xy 51.293043 34.412474) (xy 51.346403 34.477493) (xy 51.411422 34.530853) (xy 51.485602 34.570503) + (xy 51.566091 34.59492) (xy 51.649798 34.603164) (xy 52.245048 34.601098) (xy 52.351798 34.494348) (xy 52.351798 33.609598) + (xy 52.397798 33.609598) (xy 52.397798 34.494348) (xy 52.504548 34.601098) (xy 53.099798 34.603164) (xy 53.183505 34.59492) + (xy 53.263994 34.570503) (xy 53.338174 34.530853) (xy 53.403193 34.477493) (xy 53.456553 34.412474) (xy 53.496203 34.338294) + (xy 53.52062 34.257805) (xy 53.528864 34.174098) (xy 53.526798 33.716348) (xy 53.420048 33.609598) (xy 52.397798 33.609598) + (xy 52.351798 33.609598) (xy 51.329548 33.609598) (xy 51.222798 33.716348) (xy 51.222782 33.719832) (xy 51.13405 33.6311) + (xy 50.1118 33.6311) (xy 50.0658 33.6311) (xy 49.04355 33.6311) (xy 48.9368 33.73785) (xy 48.934734 34.1956) + (xy 45.597792 34.1956) (xy 45.581555 34.165224) (xy 45.528195 34.100205) (xy 45.463176 34.046845) (xy 45.388996 34.007195) + (xy 45.308507 33.982778) (xy 45.2248 33.974534) (xy 44.50455 33.9766) (xy 44.3978 34.08335) (xy 44.3518 34.08335) + (xy 44.24505 33.9766) (xy 43.5248 33.974534) (xy 43.441093 33.982778) (xy 43.360604 34.007195) (xy 43.286424 34.046845) + (xy 43.221405 34.100205) (xy 43.168045 34.165224) (xy 43.128395 34.239404) (xy 43.103978 34.319893) (xy 43.095734 34.4036) + (xy 39.888873 34.4036) (xy 39.89019 33.0206) (xy 48.934734 33.0206) (xy 48.9368 33.47835) (xy 49.04355 33.5851) + (xy 50.0658 33.5851) (xy 50.0658 32.70035) (xy 50.1118 32.70035) (xy 50.1118 33.5851) (xy 51.13405 33.5851) + (xy 51.2408 33.47835) (xy 51.240816 33.474866) (xy 51.329548 33.563598) (xy 52.351798 33.563598) (xy 52.351798 32.678848) + (xy 52.397798 32.678848) (xy 52.397798 33.563598) (xy 53.420048 33.563598) (xy 53.526798 33.456848) (xy 53.528864 32.999098) + (xy 53.52062 32.915391) (xy 53.496203 32.834902) (xy 53.456553 32.760722) (xy 53.403193 32.695703) (xy 53.338174 32.642343) + (xy 53.263994 32.602693) (xy 53.183505 32.578276) (xy 53.099798 32.570032) (xy 52.504548 32.572098) (xy 52.397798 32.678848) + (xy 52.351798 32.678848) (xy 52.245048 32.572098) (xy 51.649798 32.570032) (xy 51.566091 32.578276) (xy 51.485602 32.602693) + (xy 51.411422 32.642343) (xy 51.346403 32.695703) (xy 51.293043 32.760722) (xy 51.253393 32.834902) (xy 51.228976 32.915391) + (xy 51.228761 32.917573) (xy 51.210205 32.856404) (xy 51.170555 32.782224) (xy 51.117195 32.717205) (xy 51.052176 32.663845) + (xy 50.977996 32.624195) (xy 50.897507 32.599778) (xy 50.8138 32.591534) (xy 50.21855 32.5936) (xy 50.1118 32.70035) + (xy 50.0658 32.70035) (xy 49.95905 32.5936) (xy 49.3638 32.591534) (xy 49.280093 32.599778) (xy 49.199604 32.624195) + (xy 49.125424 32.663845) (xy 49.060405 32.717205) (xy 49.007045 32.782224) (xy 48.967395 32.856404) (xy 48.942978 32.936893) + (xy 48.934734 33.0206) (xy 39.89019 33.0206) (xy 39.895591 27.350548) (xy 41.2862 27.350548) (xy 41.2862 27.513452) + (xy 41.317982 27.673227) (xy 41.380323 27.823731) (xy 41.470828 27.959181) (xy 41.586019 28.074372) (xy 41.721469 28.164877) + (xy 41.871973 28.227218) (xy 42.031748 28.259) (xy 42.194652 28.259) (xy 42.33013 28.232051) (xy 42.243923 28.361069) + (xy 42.181582 28.511573) (xy 42.1498 28.671348) (xy 42.1498 28.834252) (xy 42.181582 28.994027) (xy 42.243923 29.144531) + (xy 42.334428 29.279981) (xy 42.449619 29.395172) (xy 42.585069 29.485677) (xy 42.735573 29.548018) (xy 42.895348 29.5798) + (xy 43.058252 29.5798) (xy 43.218027 29.548018) (xy 43.368531 29.485677) (xy 43.503981 29.395172) (xy 43.619172 29.279981) + (xy 43.709677 29.144531) (xy 43.772018 28.994027) (xy 43.8038 28.834252) (xy 43.8038 28.671348) (xy 43.772018 28.511573) + (xy 43.756768 28.474756) (xy 51.282171 28.474756) (xy 51.398083 28.708976) (xy 51.668336 28.862149) (xy 51.963278 28.959654) + (xy 52.271576 28.997745) (xy 52.581381 28.974958) (xy 52.880788 28.892169) (xy 53.158291 28.75256) (xy 53.223517 28.708976) + (xy 53.339429 28.474756) (xy 52.3108 27.446127) (xy 51.282171 28.474756) (xy 43.756768 28.474756) (xy 43.709677 28.361069) + (xy 43.62347 28.232051) (xy 43.758948 28.259) (xy 43.921852 28.259) (xy 44.081627 28.227218) (xy 44.232131 28.164877) + (xy 44.367581 28.074372) (xy 44.482772 27.959181) (xy 44.573277 27.823731) (xy 44.635618 27.673227) (xy 44.6674 27.513452) + (xy 44.6674 27.374376) (xy 50.726655 27.374376) (xy 50.749442 27.684181) (xy 50.832231 27.983588) (xy 50.97184 28.261091) + (xy 51.015424 28.326317) (xy 51.249644 28.442229) (xy 52.278273 27.4136) (xy 52.343327 27.4136) (xy 53.371956 28.442229) + (xy 53.606176 28.326317) (xy 53.759349 28.056064) (xy 53.856854 27.761122) (xy 53.894945 27.452824) (xy 53.872158 27.143019) + (xy 53.789369 26.843612) (xy 53.64976 26.566109) (xy 53.606176 26.500883) (xy 53.371956 26.384971) (xy 52.343327 27.4136) + (xy 52.278273 27.4136) (xy 51.249644 26.384971) (xy 51.015424 26.500883) (xy 50.862251 26.771136) (xy 50.764746 27.066078) + (xy 50.726655 27.374376) (xy 44.6674 27.374376) (xy 44.6674 27.350548) (xy 44.635618 27.190773) (xy 44.573277 27.040269) + (xy 44.518429 26.958184) (xy 44.673348 26.989) (xy 44.836252 26.989) (xy 44.996027 26.957218) (xy 45.146531 26.894877) + (xy 45.281981 26.804372) (xy 45.397172 26.689181) (xy 45.487677 26.553731) (xy 45.550018 26.403227) (xy 45.560119 26.352444) + (xy 51.282171 26.352444) (xy 52.3108 27.381073) (xy 53.339429 26.352444) (xy 53.223517 26.118224) (xy 52.953264 25.965051) + (xy 52.658322 25.867546) (xy 52.350024 25.829455) (xy 52.040219 25.852242) (xy 51.740812 25.935031) (xy 51.463309 26.07464) + (xy 51.398083 26.118224) (xy 51.282171 26.352444) (xy 45.560119 26.352444) (xy 45.5818 26.243452) (xy 45.5818 26.080548) + (xy 45.550018 25.920773) (xy 45.487677 25.770269) (xy 45.397172 25.634819) (xy 45.281981 25.519628) (xy 45.146531 25.429123) + (xy 44.996027 25.366782) (xy 44.836252 25.335) (xy 44.673348 25.335) (xy 44.513573 25.366782) (xy 44.363069 25.429123) + (xy 44.227619 25.519628) (xy 44.112428 25.634819) (xy 44.021923 25.770269) (xy 43.959582 25.920773) (xy 43.9278 26.080548) + (xy 43.9278 26.243452) (xy 43.959582 26.403227) (xy 44.021923 26.553731) (xy 44.076771 26.635816) (xy 43.921852 26.605) + (xy 43.758948 26.605) (xy 43.662616 26.624162) (xy 43.709677 26.553731) (xy 43.772018 26.403227) (xy 43.8038 26.243452) + (xy 43.8038 26.080548) (xy 43.772018 25.920773) (xy 43.709677 25.770269) (xy 43.619172 25.634819) (xy 43.503981 25.519628) + (xy 43.368531 25.429123) (xy 43.218027 25.366782) (xy 43.058252 25.335) (xy 42.895348 25.335) (xy 42.735573 25.366782) + (xy 42.585069 25.429123) (xy 42.449619 25.519628) (xy 42.334428 25.634819) (xy 42.243923 25.770269) (xy 42.181582 25.920773) + (xy 42.1498 26.080548) (xy 42.1498 26.243452) (xy 42.181582 26.403227) (xy 42.243923 26.553731) (xy 42.290984 26.624162) + (xy 42.194652 26.605) (xy 42.031748 26.605) (xy 41.871973 26.636782) (xy 41.721469 26.699123) (xy 41.586019 26.789628) + (xy 41.470828 26.904819) (xy 41.380323 27.040269) (xy 41.317982 27.190773) (xy 41.2862 27.350548) (xy 39.895591 27.350548) + (xy 39.901803 20.828827) + ) + ) + ) + (zone (net 3) (net_name GND) (layer F.Cu) (tstamp 61C7FB98) (hatch edge 0.508) + (connect_pads (clearance 0.3)) + (min_thickness 0.254) + (fill yes (arc_segments 32) (thermal_gap 0.3) (thermal_bridge_width 0.3) (smoothing fillet) (radius 0.127)) + (polygon + (pts + (xy 80.1116 30.8864) (xy 105.0036 59.436) (xy 64.5668 90.6272) (xy 54.61 84.4296) (xy 63.0936 75.3872) + (xy 67.3608 72.644) (xy 67.3608 59.7408) (xy 63.0428 54.9656) (xy 63.0174 44.1706) (xy 56.769 44.2214) + (xy 55.0418 45.8216) (xy 39.751 45.8216) (xy 39.7764 19.1516) + ) + ) + (filled_polygon + (pts + (xy 40.275685 20.89408) (xy 44.256937 21.747586) (xy 48.202486 22.753294) (xy 52.10651 23.90972) (xy 55.963256 25.215156) + (xy 59.767053 26.667685) (xy 63.512278 28.265159) (xy 67.193433 30.005233) (xy 70.805085 31.88534) (xy 74.341872 33.902688) + (xy 77.798632 36.054332) (xy 81.170236 38.337078) (xy 84.451727 40.747572) (xy 87.053599 42.817195) (xy 87.002507 42.801696) + (xy 86.9188 42.793452) (xy 86.835093 42.801696) (xy 86.754604 42.826113) (xy 86.680424 42.865763) (xy 86.615405 42.919123) + (xy 85.413323 44.121205) (xy 85.359963 44.186224) (xy 85.320313 44.260404) (xy 85.295896 44.340893) (xy 85.287652 44.4246) + (xy 85.295896 44.508307) (xy 85.320313 44.588796) (xy 85.359963 44.662976) (xy 85.413323 44.727995) (xy 86.615405 45.930077) + (xy 86.680424 45.983437) (xy 86.754604 46.023087) (xy 86.835093 46.047504) (xy 86.9188 46.055748) (xy 87.002507 46.047504) + (xy 87.082996 46.023087) (xy 87.157176 45.983437) (xy 87.222195 45.930077) (xy 87.806971 45.345301) (xy 87.871239 45.409569) + (xy 87.668384 45.488777) (xy 87.54571 45.706995) (xy 87.467966 45.944953) (xy 87.438138 46.193506) (xy 87.457374 46.443102) + (xy 87.524934 46.684149) (xy 87.638222 46.907385) (xy 87.668385 46.952524) (xy 87.871256 47.031719) (xy 88.682324 46.220651) + (xy 88.668182 46.206509) (xy 88.700709 46.173982) (xy 88.714851 46.188124) (xy 89.525919 45.377056) (xy 89.446724 45.174185) + (xy 89.401585 45.144022) (xy 89.178349 45.030734) (xy 88.937302 44.963174) (xy 88.687706 44.943938) (xy 88.439153 44.973766) + (xy 88.201195 45.05151) (xy 87.982977 45.174184) (xy 87.903769 45.377039) (xy 87.839501 45.312771) (xy 88.424277 44.727995) + (xy 88.477637 44.662976) (xy 88.517287 44.588796) (xy 88.541704 44.508307) (xy 88.549948 44.4246) (xy 88.541704 44.340893) + (xy 88.517287 44.260404) (xy 88.477637 44.186224) (xy 88.424277 44.121205) (xy 87.379503 43.076431) (xy 87.638295 43.282283) + (xy 90.725181 45.937424) (xy 93.707877 48.709117) (xy 96.581969 51.593258) (xy 99.343237 54.585616) (xy 101.9886 57.682939) + (xy 103.325107 59.351172) (xy 68.475393 86.578753) (xy 68.4926 86.492252) (xy 68.4926 86.329348) (xy 68.460818 86.169573) + (xy 68.398477 86.019069) (xy 68.307972 85.883619) (xy 68.192781 85.768428) (xy 68.057331 85.677923) (xy 67.906827 85.615582) + (xy 67.747052 85.5838) (xy 67.584148 85.5838) (xy 67.424373 85.615582) (xy 67.273869 85.677923) (xy 67.138419 85.768428) + (xy 67.023228 85.883619) (xy 66.932723 86.019069) (xy 66.870382 86.169573) (xy 66.8386 86.329348) (xy 66.8386 86.492252) + (xy 66.870382 86.652027) (xy 66.932723 86.802531) (xy 67.023228 86.937981) (xy 67.138419 87.053172) (xy 67.273869 87.143677) + (xy 67.424373 87.206018) (xy 67.584148 87.2378) (xy 67.631852 87.2378) (xy 66.859106 87.841536) (xy 66.874477 87.818531) + (xy 66.936818 87.668027) (xy 66.9686 87.508252) (xy 66.9686 87.345348) (xy 66.936818 87.185573) (xy 66.874477 87.035069) + (xy 66.783972 86.899619) (xy 66.668781 86.784428) (xy 66.533331 86.693923) (xy 66.382827 86.631582) (xy 66.223052 86.5998) + (xy 66.060148 86.5998) (xy 65.900373 86.631582) (xy 65.812648 86.667919) (xy 65.858477 86.599331) (xy 65.920818 86.448827) + (xy 65.9526 86.289052) (xy 65.9526 86.126148) (xy 65.920818 85.966373) (xy 65.858477 85.815869) (xy 65.767972 85.680419) + (xy 65.652781 85.565228) (xy 65.517331 85.474723) (xy 65.366827 85.412382) (xy 65.207052 85.3806) (xy 65.044148 85.3806) + (xy 64.884373 85.412382) (xy 64.733869 85.474723) (xy 64.598419 85.565228) (xy 64.483228 85.680419) (xy 64.392723 85.815869) + (xy 64.330382 85.966373) (xy 64.2986 86.126148) (xy 64.2986 86.289052) (xy 64.330382 86.448827) (xy 64.392723 86.599331) + (xy 64.483228 86.734781) (xy 64.598419 86.849972) (xy 64.733869 86.940477) (xy 64.884373 87.002818) (xy 65.044148 87.0346) + (xy 65.207052 87.0346) (xy 65.366827 87.002818) (xy 65.454552 86.966481) (xy 65.408723 87.035069) (xy 65.346382 87.185573) + (xy 65.3146 87.345348) (xy 65.3146 87.508252) (xy 65.346382 87.668027) (xy 65.402952 87.804599) (xy 65.297181 87.698828) + (xy 65.161731 87.608323) (xy 65.011227 87.545982) (xy 64.851452 87.5142) (xy 64.688548 87.5142) (xy 64.528773 87.545982) + (xy 64.451554 87.577967) (xy 64.498418 87.464827) (xy 64.5302 87.305052) (xy 64.5302 87.142148) (xy 64.498418 86.982373) + (xy 64.436077 86.831869) (xy 64.345572 86.696419) (xy 64.230381 86.581228) (xy 64.094931 86.490723) (xy 63.944427 86.428382) + (xy 63.784652 86.3966) (xy 63.621748 86.3966) (xy 63.461973 86.428382) (xy 63.311469 86.490723) (xy 63.176019 86.581228) + (xy 63.060828 86.696419) (xy 62.970323 86.831869) (xy 62.907982 86.982373) (xy 62.8762 87.142148) (xy 62.8762 87.305052) + (xy 62.907982 87.464827) (xy 62.953568 87.574881) (xy 62.372186 86.89417) (xy 62.356352 86.876584) (xy 62.356333 86.876565) + (xy 60.583651 85.008548) (xy 65.7718 85.008548) (xy 65.7718 85.171452) (xy 65.803582 85.331227) (xy 65.865923 85.481731) + (xy 65.956428 85.617181) (xy 66.071619 85.732372) (xy 66.207069 85.822877) (xy 66.357573 85.885218) (xy 66.517348 85.917) + (xy 66.680252 85.917) (xy 66.840027 85.885218) (xy 66.990531 85.822877) (xy 67.125981 85.732372) (xy 67.241172 85.617181) + (xy 67.331677 85.481731) (xy 67.394018 85.331227) (xy 67.4258 85.171452) (xy 67.4258 85.008548) (xy 67.394018 84.848773) + (xy 67.331677 84.698269) (xy 67.241172 84.562819) (xy 67.125981 84.447628) (xy 66.990531 84.357123) (xy 66.840027 84.294782) + (xy 66.680252 84.263) (xy 66.517348 84.263) (xy 66.357573 84.294782) (xy 66.207069 84.357123) (xy 66.071619 84.447628) + (xy 65.956428 84.562819) (xy 65.865923 84.698269) (xy 65.803582 84.848773) (xy 65.7718 85.008548) (xy 60.583651 85.008548) + (xy 60.320222 84.730952) (xy 60.320203 84.730931) (xy 60.30347 84.714198) (xy 58.157835 82.678067) (xy 58.157816 82.678048) + (xy 58.149483 82.670546) (xy 58.14023 82.662213) (xy 58.140207 82.662195) (xy 57.239226 81.892683) (xy 60.9381 81.892683) + (xy 60.948169 81.97619) (xy 60.974335 82.056128) (xy 61.015594 82.129425) (xy 62.048032 83.603899) (xy 62.102797 83.667739) + (xy 62.168965 83.719668) (xy 62.243992 83.75769) (xy 62.324996 83.780345) (xy 62.408862 83.786761) (xy 62.492369 83.776692) + (xy 62.572307 83.750526) (xy 62.645604 83.709267) (xy 64.120078 82.676829) (xy 64.183918 82.622064) (xy 64.235847 82.555896) + (xy 64.273869 82.480869) (xy 64.296524 82.399865) (xy 64.30294 82.315999) (xy 64.292871 82.232492) (xy 64.266705 82.152554) + (xy 64.225446 82.079257) (xy 63.193008 80.604783) (xy 63.138243 80.540943) (xy 63.072075 80.489014) (xy 62.997048 80.450992) + (xy 62.916044 80.428337) (xy 62.832178 80.421921) (xy 62.748671 80.43199) (xy 62.668733 80.458156) (xy 62.595436 80.499415) + (xy 61.120962 81.531853) (xy 61.057122 81.586618) (xy 61.005193 81.652786) (xy 60.967171 81.727813) (xy 60.944516 81.808817) + (xy 60.9381 81.892683) (xy 57.239226 81.892683) (xy 57.197622 81.85715) (xy 63.170131 75.491243) (xy 63.182057 75.481313) + (xy 67.371152 72.788324) (xy 67.395436 72.768024) (xy 67.438229 72.722051) (xy 67.453324 72.702253) (xy 67.464266 72.67989) + (xy 67.468325 72.666925) (xy 67.483856 72.606068) (xy 67.4878 72.574664) (xy 67.4878 67.372228) (xy 69.562718 67.372228) + (xy 69.56289 67.374416) (xy 69.628398 67.605902) (xy 69.737808 67.82016) (xy 69.886916 68.008956) (xy 70.069991 68.165035) + (xy 70.279998 68.282398) (xy 70.508866 68.356536) (xy 70.7478 68.3846) (xy 71.1478 68.3846) (xy 71.1478 67.1806) + (xy 71.1938 67.1806) (xy 71.1938 68.3846) (xy 71.5938 68.3846) (xy 71.832734 68.356536) (xy 72.061602 68.282398) + (xy 72.271609 68.165035) (xy 72.454684 68.008956) (xy 72.603792 67.82016) (xy 72.713202 67.605902) (xy 72.77871 67.374416) + (xy 72.778882 67.372228) (xy 72.690814 67.1806) (xy 71.1938 67.1806) (xy 71.1478 67.1806) (xy 69.650786 67.1806) + (xy 69.562718 67.372228) (xy 67.4878 67.372228) (xy 67.4878 66.942972) (xy 69.562718 66.942972) (xy 69.650786 67.1346) + (xy 71.1478 67.1346) (xy 71.1478 65.9306) (xy 71.1938 65.9306) (xy 71.1938 67.1346) (xy 72.690814 67.1346) + (xy 72.778882 66.942972) (xy 72.77871 66.940784) (xy 72.713202 66.709298) (xy 72.603792 66.49504) (xy 72.454684 66.306244) + (xy 72.271609 66.150165) (xy 72.061602 66.032802) (xy 71.832734 65.958664) (xy 71.5938 65.9306) (xy 71.1938 65.9306) + (xy 71.1478 65.9306) (xy 70.7478 65.9306) (xy 70.508866 65.958664) (xy 70.279998 66.032802) (xy 70.069991 66.150165) + (xy 69.886916 66.306244) (xy 69.737808 66.49504) (xy 69.628398 66.709298) (xy 69.56289 66.940784) (xy 69.562718 66.942972) + (xy 67.4878 66.942972) (xy 67.4878 64.6176) (xy 69.537864 64.6176) (xy 69.561555 64.858134) (xy 69.631716 65.089424) + (xy 69.745651 65.302583) (xy 69.898983 65.489417) (xy 70.085817 65.642749) (xy 70.298976 65.756684) (xy 70.530266 65.826845) + (xy 70.710532 65.8446) (xy 71.631068 65.8446) (xy 71.811334 65.826845) (xy 72.042624 65.756684) (xy 72.255783 65.642749) + (xy 72.442617 65.489417) (xy 72.595949 65.302583) (xy 72.709884 65.089424) (xy 72.780045 64.858134) (xy 72.803736 64.6176) + (xy 72.780045 64.377066) (xy 72.709884 64.145776) (xy 72.595949 63.932617) (xy 72.442617 63.745783) (xy 72.255783 63.592451) + (xy 72.042624 63.478516) (xy 71.811334 63.408355) (xy 71.631068 63.3906) (xy 70.710532 63.3906) (xy 70.530266 63.408355) + (xy 70.298976 63.478516) (xy 70.085817 63.592451) (xy 69.898983 63.745783) (xy 69.745651 63.932617) (xy 69.631716 64.145776) + (xy 69.561555 64.377066) (xy 69.537864 64.6176) (xy 67.4878 64.6176) (xy 67.4878 59.789705) (xy 67.48536 59.764929) + (xy 67.479316 59.744066) (xy 67.446515 59.658887) (xy 67.435334 59.636643) (xy 67.422198 59.619346) (xy 63.185467 54.93402) + (xy 63.16963 54.893036) (xy 63.157756 49.846228) (xy 65.244718 49.846228) (xy 65.24489 49.848416) (xy 65.310398 50.079902) + (xy 65.419808 50.29416) (xy 65.568916 50.482956) (xy 65.751991 50.639035) (xy 65.961998 50.756398) (xy 66.190866 50.830536) + (xy 66.4298 50.8586) (xy 66.8298 50.8586) (xy 66.8298 49.6546) (xy 66.8758 49.6546) (xy 66.8758 50.8586) + (xy 67.2758 50.8586) (xy 67.514734 50.830536) (xy 67.743602 50.756398) (xy 67.953609 50.639035) (xy 68.136684 50.482956) + (xy 68.285792 50.29416) (xy 68.395202 50.079902) (xy 68.46071 49.848416) (xy 68.460882 49.846228) (xy 68.372814 49.6546) + (xy 66.8758 49.6546) (xy 66.8298 49.6546) (xy 65.332786 49.6546) (xy 65.244718 49.846228) (xy 63.157756 49.846228) + (xy 63.156746 49.416972) (xy 65.244718 49.416972) (xy 65.332786 49.6086) (xy 66.8298 49.6086) (xy 66.8298 48.4046) + (xy 66.8758 48.4046) (xy 66.8758 49.6086) (xy 68.372814 49.6086) (xy 68.460882 49.416972) (xy 68.46071 49.414784) + (xy 68.395202 49.183298) (xy 68.285792 48.96904) (xy 68.136684 48.780244) (xy 67.953609 48.624165) (xy 67.743602 48.506802) + (xy 67.514734 48.432664) (xy 67.2758 48.4046) (xy 66.8758 48.4046) (xy 66.8298 48.4046) (xy 66.4298 48.4046) + (xy 66.190866 48.432664) (xy 65.961998 48.506802) (xy 65.751991 48.624165) (xy 65.568916 48.780244) (xy 65.419808 48.96904) + (xy 65.310398 49.183298) (xy 65.24489 49.414784) (xy 65.244718 49.416972) (xy 63.156746 49.416972) (xy 63.151274 47.0916) + (xy 65.219864 47.0916) (xy 65.243555 47.332134) (xy 65.313716 47.563424) (xy 65.427651 47.776583) (xy 65.580983 47.963417) + (xy 65.767817 48.116749) (xy 65.980976 48.230684) (xy 66.212266 48.300845) (xy 66.392532 48.3186) (xy 67.313068 48.3186) + (xy 67.493334 48.300845) (xy 67.724624 48.230684) (xy 67.937783 48.116749) (xy 68.124617 47.963417) (xy 68.277949 47.776583) + (xy 68.391884 47.563424) (xy 68.462045 47.332134) (xy 68.485736 47.0916) (xy 68.462045 46.851066) (xy 68.391884 46.619776) + (xy 68.277949 46.406617) (xy 68.124617 46.219783) (xy 67.937783 46.066451) (xy 67.724624 45.952516) (xy 67.493334 45.882355) + (xy 67.313068 45.8646) (xy 66.392532 45.8646) (xy 66.212266 45.882355) (xy 65.980976 45.952516) (xy 65.767817 46.066451) + (xy 65.580983 46.219783) (xy 65.427651 46.406617) (xy 65.313716 46.619776) (xy 65.243555 46.851066) (xy 65.219864 47.0916) + (xy 63.151274 47.0916) (xy 63.144701 44.298036) (xy 63.140263 44.265057) (xy 63.122975 44.201386) (xy 63.114128 44.178114) + (xy 63.100911 44.157016) (xy 63.089744 44.144392) (xy 63.042848 44.097985) (xy 63.02352 44.082292) (xy 63.001502 44.070671) + (xy 62.985507 44.065352) (xy 62.921658 44.048733) (xy 62.888636 44.044642) (xy 56.817161 44.094004) (xy 56.792405 44.096646) + (xy 56.771358 44.102951) (xy 56.686078 44.136785) (xy 56.663948 44.14819) (xy 56.646601 44.161672) (xy 55.00962 45.678286) + (xy 54.968007 45.6946) (xy 39.89485 45.6946) (xy 39.881661 45.691064) (xy 39.878137 45.67787) (xy 39.881012 42.658279) + (xy 50.7338 42.658279) (xy 50.7338 42.968921) (xy 50.794404 43.273594) (xy 50.913281 43.560589) (xy 51.085864 43.818879) + (xy 51.305521 44.038536) (xy 51.563811 44.211119) (xy 51.850806 44.329996) (xy 52.155479 44.3906) (xy 52.466121 44.3906) + (xy 52.770794 44.329996) (xy 53.057789 44.211119) (xy 53.316079 44.038536) (xy 53.535736 43.818879) (xy 53.708319 43.560589) + (xy 53.827196 43.273594) (xy 53.8878 42.968921) (xy 53.8878 42.658279) (xy 53.827196 42.353606) (xy 53.798205 42.283617) + (xy 56.538396 39.543426) (xy 56.564227 39.522227) (xy 56.648828 39.419141) (xy 56.711692 39.30153) (xy 56.748194 39.1812) + (xy 59.412934 39.1812) (xy 59.421178 39.264907) (xy 59.445595 39.345396) (xy 59.485245 39.419576) (xy 59.507095 39.4462) + (xy 59.485245 39.472824) (xy 59.445595 39.547004) (xy 59.421178 39.627493) (xy 59.412934 39.7112) (xy 59.412934 40.4512) + (xy 59.421178 40.534907) (xy 59.445595 40.615396) (xy 59.485245 40.689576) (xy 59.538605 40.754595) (xy 59.603624 40.807955) + (xy 59.677804 40.847605) (xy 59.758293 40.872022) (xy 59.842 40.880266) (xy 62.242 40.880266) (xy 62.325707 40.872022) + (xy 62.406196 40.847605) (xy 62.480376 40.807955) (xy 62.545395 40.754595) (xy 62.598755 40.689576) (xy 62.638405 40.615396) + (xy 62.662822 40.534907) (xy 62.671066 40.4512) (xy 62.671066 39.7112) (xy 62.662822 39.627493) (xy 62.638405 39.547004) + (xy 62.598755 39.472824) (xy 62.576905 39.4462) (xy 62.598755 39.419576) (xy 62.638405 39.345396) (xy 62.662822 39.264907) + (xy 62.671066 39.1812) (xy 62.669 38.94095) (xy 62.56225 38.8342) (xy 61.065 38.8342) (xy 61.065 38.8542) + (xy 61.019 38.8542) (xy 61.019 38.8342) (xy 59.52175 38.8342) (xy 59.415 38.94095) (xy 59.412934 39.1812) + (xy 56.748194 39.1812) (xy 56.750404 39.173915) (xy 56.7602 39.074452) (xy 56.7602 39.074443) (xy 56.763474 39.041201) + (xy 56.7602 39.007959) (xy 56.7602 36.6412) (xy 59.412934 36.6412) (xy 59.421178 36.724907) (xy 59.445595 36.805396) + (xy 59.485245 36.879576) (xy 59.507095 36.9062) (xy 59.485245 36.932824) (xy 59.445595 37.007004) (xy 59.421178 37.087493) + (xy 59.412934 37.1712) (xy 59.412934 37.9112) (xy 59.421178 37.994907) (xy 59.445595 38.075396) (xy 59.485245 38.149576) + (xy 59.507095 38.1762) (xy 59.485245 38.202824) (xy 59.445595 38.277004) (xy 59.421178 38.357493) (xy 59.412934 38.4412) + (xy 59.415 38.68145) (xy 59.52175 38.7882) (xy 61.019 38.7882) (xy 61.019 38.7682) (xy 61.065 38.7682) + (xy 61.065 38.7882) (xy 62.56225 38.7882) (xy 62.669 38.68145) (xy 62.671066 38.4412) (xy 62.662822 38.357493) + (xy 62.638405 38.277004) (xy 62.598755 38.202824) (xy 62.576905 38.1762) (xy 62.598755 38.149576) (xy 62.638405 38.075396) + (xy 62.662822 37.994907) (xy 62.671066 37.9112) (xy 62.671066 37.1712) (xy 62.662822 37.087493) (xy 62.638405 37.007004) + (xy 62.598755 36.932824) (xy 62.576905 36.9062) (xy 62.598755 36.879576) (xy 62.638405 36.805396) (xy 62.662822 36.724907) + (xy 62.671066 36.6412) (xy 62.669 36.40095) (xy 62.56225 36.2942) (xy 61.065 36.2942) (xy 61.065 36.3142) + (xy 61.019 36.3142) (xy 61.019 36.2942) (xy 59.52175 36.2942) (xy 59.415 36.40095) (xy 59.412934 36.6412) + (xy 56.7602 36.6412) (xy 56.7602 35.383222) (xy 56.772222 35.3712) (xy 59.412934 35.3712) (xy 59.421178 35.454907) + (xy 59.445595 35.535396) (xy 59.485245 35.609576) (xy 59.507095 35.6362) (xy 59.485245 35.662824) (xy 59.445595 35.737004) + (xy 59.421178 35.817493) (xy 59.412934 35.9012) (xy 59.415 36.14145) (xy 59.52175 36.2482) (xy 61.019 36.2482) + (xy 61.019 35.0242) (xy 61.065 35.0242) (xy 61.065 36.2482) (xy 62.56225 36.2482) (xy 62.669 36.14145) + (xy 62.671066 35.9012) (xy 62.662822 35.817493) (xy 62.638405 35.737004) (xy 62.598755 35.662824) (xy 62.576905 35.6362) + (xy 62.598755 35.609576) (xy 62.638405 35.535396) (xy 62.662822 35.454907) (xy 62.671066 35.3712) (xy 62.669 35.13095) + (xy 62.56225 35.0242) (xy 61.065 35.0242) (xy 61.019 35.0242) (xy 59.52175 35.0242) (xy 59.415 35.13095) + (xy 59.412934 35.3712) (xy 56.772222 35.3712) (xy 57.735222 34.4082) (xy 59.477026 34.4082) (xy 59.445595 34.467004) + (xy 59.421178 34.547493) (xy 59.412934 34.6312) (xy 59.415 34.87145) (xy 59.52175 34.9782) (xy 61.019 34.9782) + (xy 61.019 34.9582) (xy 61.065 34.9582) (xy 61.065 34.9782) (xy 62.56225 34.9782) (xy 62.669 34.87145) + (xy 62.671066 34.6312) (xy 62.662822 34.547493) (xy 62.638405 34.467004) (xy 62.598755 34.392824) (xy 62.576905 34.3662) + (xy 62.598755 34.339576) (xy 62.638405 34.265396) (xy 62.662822 34.184907) (xy 62.671066 34.1012) (xy 62.671066 33.3612) + (xy 62.662822 33.277493) (xy 62.638405 33.197004) (xy 62.598755 33.122824) (xy 62.576905 33.0962) (xy 62.598755 33.069576) + (xy 62.638405 32.995396) (xy 62.662822 32.914907) (xy 62.671066 32.8312) (xy 62.671066 32.0912) (xy 63.312934 32.0912) + (xy 63.312934 32.8312) (xy 63.321178 32.914907) (xy 63.345595 32.995396) (xy 63.385245 33.069576) (xy 63.407095 33.0962) + (xy 63.385245 33.122824) (xy 63.345595 33.197004) (xy 63.321178 33.277493) (xy 63.312934 33.3612) (xy 63.312934 34.1012) + (xy 63.321178 34.184907) (xy 63.345595 34.265396) (xy 63.385245 34.339576) (xy 63.407095 34.3662) (xy 63.385245 34.392824) + (xy 63.345595 34.467004) (xy 63.321178 34.547493) (xy 63.312934 34.6312) (xy 63.312934 35.3712) (xy 63.321178 35.454907) + (xy 63.345595 35.535396) (xy 63.385245 35.609576) (xy 63.407095 35.6362) (xy 63.385245 35.662824) (xy 63.345595 35.737004) + (xy 63.321178 35.817493) (xy 63.312934 35.9012) (xy 63.312934 36.6412) (xy 63.321178 36.724907) (xy 63.345595 36.805396) + (xy 63.385245 36.879576) (xy 63.407095 36.9062) (xy 63.385245 36.932824) (xy 63.345595 37.007004) (xy 63.321178 37.087493) + (xy 63.312934 37.1712) (xy 63.312934 37.9112) (xy 63.321178 37.994907) (xy 63.345595 38.075396) (xy 63.385245 38.149576) + (xy 63.407095 38.1762) (xy 63.385245 38.202824) (xy 63.345595 38.277004) (xy 63.321178 38.357493) (xy 63.312934 38.4412) + (xy 63.312934 39.1812) (xy 63.321178 39.264907) (xy 63.345595 39.345396) (xy 63.385245 39.419576) (xy 63.407095 39.4462) + (xy 63.385245 39.472824) (xy 63.345595 39.547004) (xy 63.321178 39.627493) (xy 63.312934 39.7112) (xy 63.312934 40.4512) + (xy 63.321178 40.534907) (xy 63.345595 40.615396) (xy 63.385245 40.689576) (xy 63.438605 40.754595) (xy 63.503624 40.807955) + (xy 63.577804 40.847605) (xy 63.658293 40.872022) (xy 63.742 40.880266) (xy 66.142 40.880266) (xy 66.225707 40.872022) + (xy 66.306196 40.847605) (xy 66.380376 40.807955) (xy 66.445395 40.754595) (xy 66.498755 40.689576) (xy 66.538405 40.615396) + (xy 66.562822 40.534907) (xy 66.571066 40.4512) (xy 66.571066 39.7112) (xy 66.569959 39.69996) (xy 70.7208 43.850801) + (xy 70.7208 44.202042) (xy 70.71532 44.202582) (xy 70.587932 44.241225) (xy 70.470531 44.303977) (xy 70.367628 44.388428) + (xy 70.283177 44.491331) (xy 70.220425 44.608732) (xy 70.181782 44.73612) (xy 70.168734 44.868599) (xy 70.168734 45.568601) + (xy 70.181782 45.70108) (xy 70.220425 45.828468) (xy 70.283177 45.945869) (xy 70.367628 46.048772) (xy 70.470531 46.133223) + (xy 70.587932 46.195975) (xy 70.662516 46.2186) (xy 70.587932 46.241225) (xy 70.470531 46.303977) (xy 70.367628 46.388428) + (xy 70.283177 46.491331) (xy 70.220425 46.608732) (xy 70.181782 46.73612) (xy 70.168734 46.868599) (xy 70.168734 47.568601) + (xy 70.181782 47.70108) (xy 70.220425 47.828468) (xy 70.283177 47.945869) (xy 70.367628 48.048772) (xy 70.470531 48.133223) + (xy 70.587932 48.195975) (xy 70.71532 48.234618) (xy 70.720801 48.235158) (xy 70.720801 48.460259) (xy 70.71801 48.4886) + (xy 70.729149 48.601711) (xy 70.759866 48.702966) (xy 70.762144 48.710476) (xy 70.815722 48.810715) (xy 70.836332 48.835828) + (xy 70.869763 48.876564) (xy 70.869766 48.876567) (xy 70.887827 48.898574) (xy 70.909834 48.916635) (xy 72.375733 50.382534) + (xy 71.1458 50.382534) (xy 71.047462 50.392219) (xy 70.952902 50.420904) (xy 70.865756 50.467484) (xy 70.789372 50.530172) + (xy 70.726684 50.606556) (xy 70.680104 50.693702) (xy 70.651419 50.788262) (xy 70.641734 50.8866) (xy 70.641734 51.0366) + (xy 70.651419 51.134938) (xy 70.674675 51.2116) (xy 70.651419 51.288262) (xy 70.641734 51.3866) (xy 70.641734 51.5366) + (xy 70.651419 51.634938) (xy 70.674675 51.7116) (xy 70.651419 51.788262) (xy 70.645501 51.848348) (xy 70.631181 51.834028) + (xy 70.495731 51.743523) (xy 70.345227 51.681182) (xy 70.185452 51.6494) (xy 70.022548 51.6494) (xy 69.862773 51.681182) + (xy 69.712269 51.743523) (xy 69.576819 51.834028) (xy 69.461628 51.949219) (xy 69.371123 52.084669) (xy 69.308782 52.235173) + (xy 69.277 52.394948) (xy 69.277 52.557852) (xy 69.308782 52.717627) (xy 69.371123 52.868131) (xy 69.461628 53.003581) + (xy 69.576819 53.118772) (xy 69.712269 53.209277) (xy 69.862773 53.271618) (xy 70.022548 53.3034) (xy 70.185452 53.3034) + (xy 70.345227 53.271618) (xy 70.495731 53.209277) (xy 70.631181 53.118772) (xy 70.648155 53.101798) (xy 70.651419 53.134938) + (xy 70.674675 53.2116) (xy 70.651419 53.288262) (xy 70.641734 53.3866) (xy 70.641734 53.5366) (xy 70.651419 53.634938) + (xy 70.674675 53.7116) (xy 70.651419 53.788262) (xy 70.641734 53.8866) (xy 70.641734 54.0366) (xy 70.651419 54.134938) + (xy 70.674675 54.2116) (xy 70.651419 54.288262) (xy 70.641734 54.3866) (xy 70.641734 54.5366) (xy 70.651419 54.634938) + (xy 70.674675 54.7116) (xy 70.651419 54.788262) (xy 70.641931 54.8846) (xy 69.866839 54.8846) (xy 69.830174 54.763733) + (xy 69.767422 54.646332) (xy 69.682971 54.543429) (xy 69.580068 54.458978) (xy 69.462667 54.396226) (xy 69.335279 54.357583) + (xy 69.2028 54.344535) (xy 68.502798 54.344535) (xy 68.370319 54.357583) (xy 68.242931 54.396226) (xy 68.12553 54.458978) + (xy 68.022627 54.543429) (xy 67.938176 54.646332) (xy 67.875424 54.763733) (xy 67.852799 54.838317) (xy 67.830174 54.763733) + (xy 67.767422 54.646332) (xy 67.682971 54.543429) (xy 67.580068 54.458978) (xy 67.462667 54.396226) (xy 67.4298 54.386256) + (xy 67.4298 53.400666) (xy 68.0528 53.400666) (xy 68.136507 53.392422) (xy 68.216996 53.368005) (xy 68.291176 53.328355) + (xy 68.356195 53.274995) (xy 68.409555 53.209976) (xy 68.449205 53.135796) (xy 68.473622 53.055307) (xy 68.481866 52.9716) + (xy 68.481866 51.3716) (xy 68.473622 51.287893) (xy 68.449205 51.207404) (xy 68.409555 51.133224) (xy 68.356195 51.068205) + (xy 68.291176 51.014845) (xy 68.216996 50.975195) (xy 68.136507 50.950778) (xy 68.0528 50.942534) (xy 65.6528 50.942534) + (xy 65.569093 50.950778) (xy 65.488604 50.975195) (xy 65.414424 51.014845) (xy 65.349405 51.068205) (xy 65.296045 51.133224) + (xy 65.256395 51.207404) (xy 65.231978 51.287893) (xy 65.223734 51.3716) (xy 65.223734 52.9716) (xy 65.231978 53.055307) + (xy 65.256395 53.135796) (xy 65.296045 53.209976) (xy 65.349405 53.274995) (xy 65.414424 53.328355) (xy 65.488604 53.368005) + (xy 65.569093 53.392422) (xy 65.6528 53.400666) (xy 66.275801 53.400666) (xy 66.2758 54.386255) (xy 66.242931 54.396226) + (xy 66.12553 54.458978) (xy 66.022627 54.543429) (xy 65.938176 54.646332) (xy 65.875424 54.763733) (xy 65.836781 54.891121) + (xy 65.823733 55.0236) (xy 65.823733 55.923602) (xy 65.836781 56.056081) (xy 65.875424 56.183469) (xy 65.938176 56.30087) + (xy 66.022627 56.403773) (xy 66.12553 56.488224) (xy 66.242931 56.550976) (xy 66.370319 56.589619) (xy 66.502798 56.602667) + (xy 67.2028 56.602667) (xy 67.335279 56.589619) (xy 67.462667 56.550976) (xy 67.580068 56.488224) (xy 67.682971 56.403773) + (xy 67.767422 56.30087) (xy 67.830174 56.183469) (xy 67.852799 56.108885) (xy 67.875424 56.183469) (xy 67.938176 56.30087) + (xy 68.022627 56.403773) (xy 68.12553 56.488224) (xy 68.242931 56.550976) (xy 68.370319 56.589619) (xy 68.502798 56.602667) + (xy 69.174932 56.602667) (xy 69.157234 56.620365) (xy 69.135227 56.638426) (xy 69.117166 56.660433) (xy 69.117163 56.660436) + (xy 69.105339 56.674844) (xy 69.063122 56.726285) (xy 69.032426 56.783714) (xy 69.009544 56.826524) (xy 68.976549 56.935289) + (xy 68.96541 57.0484) (xy 68.968201 57.076741) (xy 68.9682 59.204469) (xy 68.96541 59.2328) (xy 68.9682 59.261131) + (xy 68.9682 59.261135) (xy 68.969267 59.271969) (xy 68.976549 59.345911) (xy 68.990342 59.391377) (xy 69.009543 59.454675) + (xy 69.063121 59.554914) (xy 69.135226 59.642774) (xy 69.157238 59.660839) (xy 73.641801 64.145402) (xy 73.6418 73.471799) + (xy 73.305571 73.808028) (xy 73.1035 73.519442) (xy 73.016825 73.418406) (xy 72.912105 73.33622) (xy 72.793362 73.276044) + (xy 72.665162 73.24019) (xy 72.532429 73.230035) (xy 72.400267 73.24597) (xy 72.326195 73.270216) (xy 72.374314 73.208903) + (xy 72.43449 73.090161) (xy 72.470345 72.96196) (xy 72.480499 72.829228) (xy 72.464564 72.697065) (xy 72.423152 72.570551) + (xy 72.357853 72.454546) (xy 71.956348 71.881138) (xy 71.869673 71.780102) (xy 71.764953 71.697916) (xy 71.7478 71.689223) + (xy 71.7478 70.926666) (xy 72.3708 70.926666) (xy 72.454507 70.918422) (xy 72.534996 70.894005) (xy 72.609176 70.854355) + (xy 72.674195 70.800995) (xy 72.727555 70.735976) (xy 72.767205 70.661796) (xy 72.791622 70.581307) (xy 72.799866 70.4976) + (xy 72.799866 68.8976) (xy 72.791622 68.813893) (xy 72.767205 68.733404) (xy 72.727555 68.659224) (xy 72.674195 68.594205) + (xy 72.609176 68.540845) (xy 72.534996 68.501195) (xy 72.454507 68.476778) (xy 72.3708 68.468534) (xy 69.9708 68.468534) + (xy 69.887093 68.476778) (xy 69.806604 68.501195) (xy 69.732424 68.540845) (xy 69.667405 68.594205) (xy 69.614045 68.659224) + (xy 69.574395 68.733404) (xy 69.549978 68.813893) (xy 69.541734 68.8976) (xy 69.541734 70.4976) (xy 69.549978 70.581307) + (xy 69.574395 70.661796) (xy 69.614045 70.735976) (xy 69.667405 70.800995) (xy 69.732424 70.854355) (xy 69.806604 70.894005) + (xy 69.887093 70.918422) (xy 69.9708 70.926666) (xy 70.5938 70.926666) (xy 70.593801 72.006218) (xy 70.273356 72.230596) + (xy 70.17232 72.317272) (xy 70.090134 72.421993) (xy 70.029958 72.540735) (xy 69.994103 72.668936) (xy 69.983949 72.801668) + (xy 69.999884 72.933831) (xy 70.041296 73.060345) (xy 70.106595 73.17635) (xy 70.5081 73.749758) (xy 70.594775 73.850794) + (xy 70.699495 73.93298) (xy 70.818238 73.993156) (xy 70.946438 74.02901) (xy 71.079171 74.039165) (xy 71.211333 74.02323) + (xy 71.285405 73.998984) (xy 71.237286 74.060297) (xy 71.17711 74.179039) (xy 71.141255 74.30724) (xy 71.131101 74.439972) + (xy 71.147036 74.572135) (xy 71.188448 74.698649) (xy 71.253747 74.814654) (xy 71.655252 75.388062) (xy 71.741927 75.489098) + (xy 71.846647 75.571284) (xy 71.96539 75.63146) (xy 72.09359 75.667314) (xy 72.226323 75.677469) (xy 72.358485 75.661534) + (xy 72.485 75.620122) (xy 72.601005 75.554824) (xy 72.966241 75.299083) (xy 72.9346 75.458148) (xy 72.9346 75.621052) + (xy 72.966382 75.780827) (xy 73.028723 75.931331) (xy 73.119228 76.066781) (xy 73.234419 76.181972) (xy 73.369869 76.272477) + (xy 73.401528 76.285591) (xy 70.228396 78.659459) (xy 67.913613 78.659459) (xy 67.892252 78.607889) (xy 67.747028 78.390546) + (xy 67.562193 78.205711) (xy 67.34485 78.060487) (xy 67.103352 77.960455) (xy 66.846978 77.909459) (xy 66.585582 77.909459) + (xy 66.329208 77.960455) (xy 66.08771 78.060487) (xy 65.870367 78.205711) (xy 65.685532 78.390546) (xy 65.540308 78.607889) + (xy 65.440276 78.849387) (xy 65.38928 79.105761) (xy 65.38928 79.367157) (xy 65.440276 79.623531) (xy 65.540308 79.865029) + (xy 65.685532 80.082372) (xy 65.870367 80.267207) (xy 66.08771 80.412431) (xy 66.329208 80.512463) (xy 66.585582 80.563459) + (xy 66.846978 80.563459) (xy 67.103352 80.512463) (xy 67.244252 80.4541) (xy 71.886593 80.4541) (xy 71.901018 80.536966) + (xy 71.931332 80.615425) (xy 71.97637 80.686462) (xy 73.022994 82.02608) (xy 73.081026 82.086966) (xy 73.149821 82.135361) + (xy 73.226735 82.169405) (xy 73.308813 82.187789) (xy 73.3929 82.189807) (xy 73.475766 82.175382) (xy 73.554225 82.145068) + (xy 73.625262 82.10003) (xy 74.96488 81.053406) (xy 75.025766 80.995374) (xy 75.074161 80.926579) (xy 75.108205 80.849665) + (xy 75.126589 80.767587) (xy 75.128607 80.6835) (xy 75.114182 80.600634) (xy 75.083868 80.522175) (xy 75.03883 80.451138) + (xy 74.529679 79.799455) (xy 74.601301 79.743498) (xy 74.655196 79.954494) (xy 74.856837 80.102847) (xy 75.083547 80.209012) + (xy 75.326612 80.268909) (xy 75.576692 80.280234) (xy 75.824176 80.242554) (xy 76.059554 80.157316) (xy 76.108033 80.132879) + (xy 76.211361 79.941172) (xy 75.505183 79.037304) (xy 75.489423 79.049617) (xy 75.461102 79.01337) (xy 75.476863 79.001056) + (xy 74.770684 78.097189) (xy 74.559674 78.15107) (xy 74.524234 78.192197) (xy 74.384585 78.399963) (xy 74.288153 78.630979) + (xy 74.238642 78.876371) (xy 74.237957 79.126706) (xy 74.286122 79.372365) (xy 74.381287 79.603906) (xy 74.572978 79.707246) + (xy 74.501356 79.763203) (xy 73.992206 79.11152) (xy 73.934174 79.050634) (xy 73.865379 79.002239) (xy 73.788465 78.968195) + (xy 73.706387 78.949811) (xy 73.6223 78.947793) (xy 73.539434 78.962218) (xy 73.460975 78.992532) (xy 73.389938 79.03757) + (xy 72.05032 80.084194) (xy 71.989434 80.142226) (xy 71.941039 80.211021) (xy 71.906995 80.287935) (xy 71.888611 80.370013) + (xy 71.886593 80.4541) (xy 67.244252 80.4541) (xy 67.34485 80.412431) (xy 67.562193 80.267207) (xy 67.747028 80.082372) + (xy 67.892252 79.865029) (xy 67.913613 79.813459) (xy 70.407403 79.813459) (xy 70.451197 79.815428) (xy 70.492183 79.809174) + (xy 70.533453 79.805109) (xy 70.548262 79.800617) (xy 70.563556 79.798283) (xy 70.602529 79.784155) (xy 70.642217 79.772116) + (xy 70.655868 79.76482) (xy 70.67041 79.759548) (xy 70.705868 79.738094) (xy 70.742456 79.718538) (xy 70.776367 79.690708) + (xy 72.944268 78.068868) (xy 74.806933 78.068868) (xy 75.513111 78.972736) (xy 75.528871 78.960423) (xy 75.557192 78.99667) + (xy 75.541431 79.008984) (xy 76.24761 79.912851) (xy 76.45862 79.85897) (xy 76.49406 79.817843) (xy 76.633709 79.610077) + (xy 76.730141 79.379061) (xy 76.779652 79.133669) (xy 76.780337 78.883334) (xy 76.732172 78.637675) (xy 76.637007 78.406134) + (xy 76.445316 78.302794) (xy 76.514444 78.248785) (xy 76.518784 78.25528) (xy 76.696655 78.433151) (xy 76.905809 78.572903) + (xy 77.138208 78.669166) (xy 77.384921 78.71824) (xy 77.636469 78.71824) (xy 77.883182 78.669166) (xy 78.115581 78.572903) + (xy 78.324735 78.433151) (xy 78.502606 78.25528) (xy 78.642358 78.046126) (xy 78.738621 77.813727) (xy 78.787695 77.567014) + (xy 78.787695 77.315466) (xy 78.738621 77.068753) (xy 78.642358 76.836354) (xy 78.596392 76.767561) (xy 78.698202 76.869371) + (xy 78.907356 77.009123) (xy 79.139755 77.105386) (xy 79.386468 77.15446) (xy 79.638016 77.15446) (xy 79.884729 77.105386) + (xy 80.117128 77.009123) (xy 80.326282 76.869371) (xy 80.504153 76.6915) (xy 80.643905 76.482346) (xy 80.740168 76.249947) + (xy 80.789242 76.003234) (xy 80.789242 75.751686) (xy 80.740168 75.504973) (xy 80.643905 75.272574) (xy 80.504153 75.06342) + (xy 80.326282 74.885549) (xy 80.117128 74.745797) (xy 79.884729 74.649534) (xy 79.638016 74.60046) (xy 79.386468 74.60046) + (xy 79.139755 74.649534) (xy 78.907356 74.745797) (xy 78.698202 74.885549) (xy 78.520331 75.06342) (xy 78.380579 75.272574) + (xy 78.284316 75.504973) (xy 78.235242 75.751686) (xy 78.235242 76.003234) (xy 78.284316 76.249947) (xy 78.380579 76.482346) + (xy 78.426545 76.551139) (xy 78.324735 76.449329) (xy 78.115581 76.309577) (xy 77.883182 76.213314) (xy 77.636469 76.16424) + (xy 77.384921 76.16424) (xy 77.138208 76.213314) (xy 76.905809 76.309577) (xy 76.696655 76.449329) (xy 76.518784 76.6272) + (xy 76.379032 76.836354) (xy 76.282769 77.068753) (xy 76.233695 77.315466) (xy 76.233695 77.567014) (xy 76.282769 77.813727) + (xy 76.379032 78.046126) (xy 76.488815 78.210429) (xy 76.416993 78.266542) (xy 76.363098 78.055546) (xy 76.161457 77.907193) + (xy 75.934747 77.801028) (xy 75.691682 77.741131) (xy 75.441602 77.729806) (xy 75.194118 77.767486) (xy 74.95874 77.852724) + (xy 74.910261 77.877161) (xy 74.806933 78.068868) (xy 72.944268 78.068868) (xy 78.881146 73.6274) (xy 84.573783 73.6274) + (xy 84.622294 73.628789) (xy 84.658534 73.622653) (xy 84.695112 73.61905) (xy 84.714443 73.613186) (xy 84.734358 73.609814) + (xy 84.768697 73.596729) (xy 84.803876 73.586057) (xy 84.821698 73.576531) (xy 84.840566 73.569341) (xy 84.871682 73.549814) + (xy 84.904115 73.532479) (xy 84.941664 73.501663) (xy 95.000338 65.717564) (xy 95.001405 65.717027) (xy 95.045043 65.682968) + (xy 95.066741 65.666177) (xy 95.067616 65.66535) (xy 95.091005 65.647096) (xy 95.10883 65.626431) (xy 95.128675 65.60769) + (xy 95.14586 65.583499) (xy 95.165241 65.56103) (xy 95.178691 65.537286) (xy 95.194499 65.515033) (xy 95.206638 65.487946) + (xy 95.221259 65.462134) (xy 95.229816 65.436229) (xy 95.240982 65.411313) (xy 95.247604 65.382376) (xy 95.256907 65.354211) + (xy 95.260246 65.32713) (xy 95.266336 65.300518) (xy 95.267185 65.270854) (xy 95.267332 65.269665) (xy 95.268002 65.242348) + (xy 95.269589 65.186906) (xy 95.269389 65.185727) (xy 95.295958 64.101751) (xy 95.829753 63.653844) (xy 95.888577 63.593723) + (xy 95.934541 63.523281) (xy 95.96588 63.445225) (xy 95.981388 63.362556) (xy 95.980471 63.278449) (xy 95.963163 63.196137) + (xy 95.930129 63.118784) (xy 95.882639 63.049362) (xy 94.87989 61.854332) (xy 94.819768 61.795508) (xy 94.749326 61.749544) + (xy 94.671271 61.718205) (xy 94.588601 61.702697) (xy 94.504495 61.703614) (xy 94.422183 61.720923) (xy 94.34483 61.753956) + (xy 94.275408 61.801446) (xy 93.662573 62.315676) (xy 93.603749 62.375797) (xy 93.557785 62.446239) (xy 93.526446 62.524295) + (xy 93.510938 62.606964) (xy 93.511855 62.691071) (xy 93.529163 62.773383) (xy 93.562197 62.850736) (xy 93.609687 62.920158) + (xy 94.154655 63.569625) (xy 94.121096 64.93879) (xy 84.384814 72.4734) (xy 78.702137 72.4734) (xy 78.658343 72.471431) + (xy 78.617355 72.477685) (xy 78.576088 72.48175) (xy 78.56128 72.486242) (xy 78.545984 72.488576) (xy 78.507006 72.502706) + (xy 78.467324 72.514743) (xy 78.453675 72.522038) (xy 78.43913 72.527311) (xy 78.403665 72.548769) (xy 78.367085 72.568321) + (xy 78.333184 72.596143) (xy 76.421352 74.026414) (xy 76.4198 74.016044) (xy 76.4198 69.512557) (xy 76.475677 69.428931) + (xy 76.538018 69.278427) (xy 76.5698 69.118652) (xy 76.5698 68.955748) (xy 76.538018 68.795973) (xy 76.475677 68.645469) + (xy 76.385172 68.510019) (xy 76.269981 68.394828) (xy 76.134531 68.304323) (xy 75.984027 68.241982) (xy 75.824252 68.2102) + (xy 75.661348 68.2102) (xy 75.501573 68.241982) (xy 75.351069 68.304323) (xy 75.215619 68.394828) (xy 75.100428 68.510019) + (xy 75.009923 68.645469) (xy 74.947582 68.795973) (xy 74.9158 68.955748) (xy 74.9158 69.118652) (xy 74.947582 69.278427) + (xy 75.009923 69.428931) (xy 75.0658 69.512557) (xy 75.065801 73.726156) (xy 74.732287 73.974154) (xy 74.754457 73.932676) + (xy 74.773803 73.8689) (xy 74.787451 73.823912) (xy 74.793574 73.761736) (xy 74.7958 73.739136) (xy 74.7958 73.739131) + (xy 74.79859 73.7108) (xy 74.7958 73.682469) (xy 74.7958 63.934739) (xy 74.798591 63.9064) (xy 74.787451 63.793288) + (xy 74.754457 63.684523) (xy 74.730459 63.639627) (xy 74.700879 63.584285) (xy 74.628774 63.496426) (xy 74.606762 63.478361) + (xy 70.1222 58.993799) (xy 70.1222 58.210182) (xy 70.218373 58.250018) (xy 70.378148 58.2818) (xy 70.541052 58.2818) + (xy 70.660593 58.258021) (xy 70.651419 58.288262) (xy 70.641734 58.3866) (xy 70.641734 58.5366) (xy 70.651419 58.634938) + (xy 70.680104 58.729498) (xy 70.726684 58.816644) (xy 70.789372 58.893028) (xy 70.865756 58.955716) (xy 70.952902 59.002296) + (xy 71.047462 59.030981) (xy 71.1458 59.040666) (xy 72.5458 59.040666) (xy 72.644138 59.030981) (xy 72.738698 59.002296) + (xy 72.825844 58.955716) (xy 72.902228 58.893028) (xy 72.964916 58.816644) (xy 73.011496 58.729498) (xy 73.040181 58.634938) + (xy 73.049866 58.5366) (xy 73.049866 58.503448) (xy 73.070276 58.497257) (xy 73.170515 58.443679) (xy 73.258374 58.371574) + (xy 73.276439 58.349562) (xy 73.344201 58.2818) (xy 73.436652 58.2818) (xy 73.596427 58.250018) (xy 73.746931 58.187677) + (xy 73.882381 58.097172) (xy 73.997572 57.981981) (xy 74.088077 57.846531) (xy 74.150418 57.696027) (xy 74.1822 57.536252) + (xy 74.1822 57.373348) (xy 74.150418 57.213573) (xy 74.088077 57.063069) (xy 73.997572 56.927619) (xy 73.882381 56.812428) + (xy 73.746931 56.721923) (xy 73.596427 56.659582) (xy 73.436652 56.6278) (xy 73.273748 56.6278) (xy 73.113973 56.659582) + (xy 73.021026 56.698082) (xy 73.040181 56.634938) (xy 73.049866 56.5366) (xy 73.049866 56.3866) (xy 73.040181 56.288262) + (xy 73.016925 56.2116) (xy 73.040181 56.134938) (xy 73.049866 56.0366) (xy 73.049866 55.8866) (xy 73.040181 55.788262) + (xy 73.016925 55.7116) (xy 73.040181 55.634938) (xy 73.049866 55.5366) (xy 73.049866 55.3866) (xy 73.040181 55.288262) + (xy 73.016925 55.2116) (xy 73.040181 55.134938) (xy 73.049866 55.0366) (xy 73.049866 54.8866) (xy 73.040181 54.788262) + (xy 73.016925 54.7116) (xy 73.040181 54.634938) (xy 73.049866 54.5366) (xy 73.049866 54.3866) (xy 73.040181 54.288262) + (xy 73.016925 54.2116) (xy 73.040181 54.134938) (xy 73.049866 54.0366) (xy 73.049866 53.8866) (xy 73.040181 53.788262) + (xy 73.016925 53.7116) (xy 73.040181 53.634938) (xy 73.049866 53.5366) (xy 73.049866 53.3866) (xy 73.040181 53.288262) + (xy 73.016925 53.2116) (xy 73.040181 53.134938) (xy 73.049866 53.0366) (xy 73.049866 52.8866) (xy 73.040181 52.788262) + (xy 73.016925 52.7116) (xy 73.040181 52.634938) (xy 73.049866 52.5366) (xy 73.049866 52.3866) (xy 73.040181 52.288262) + (xy 73.016925 52.2116) (xy 73.040181 52.134938) (xy 73.049866 52.0366) (xy 73.049866 51.8866) (xy 73.040181 51.788262) + (xy 73.016925 51.7116) (xy 73.040181 51.634938) (xy 73.049866 51.5366) (xy 73.049866 51.3866) (xy 73.040181 51.288262) + (xy 73.016925 51.2116) (xy 73.040181 51.134938) (xy 73.048067 51.054868) (xy 78.6938 56.700601) (xy 78.693801 59.182731) + (xy 78.597462 59.192219) (xy 78.5208 59.215475) (xy 78.444138 59.192219) (xy 78.3458 59.182534) (xy 78.1958 59.182534) + (xy 78.097462 59.192219) (xy 78.053359 59.205598) (xy 78.004507 59.190778) (xy 77.9208 59.182534) (xy 77.90055 59.1846) + (xy 77.841281 59.243869) (xy 77.839451 59.225289) (xy 77.817905 59.154263) (xy 77.806457 59.116524) (xy 77.752879 59.016285) + (xy 77.680774 58.928426) (xy 77.658759 58.910359) (xy 77.613237 58.864836) (xy 77.595174 58.842826) (xy 77.507315 58.770721) + (xy 77.407076 58.717143) (xy 77.332933 58.694652) (xy 77.298311 58.684149) (xy 77.242573 58.67866) (xy 77.213536 58.6758) + (xy 77.213531 58.6758) (xy 77.1852 58.67301) (xy 77.156869 58.6758) (xy 76.756331 58.6758) (xy 76.728 58.67301) + (xy 76.699669 58.6758) (xy 76.5698 58.6758) (xy 76.5698 58.643348) (xy 76.538018 58.483573) (xy 76.475677 58.333069) + (xy 76.385172 58.197619) (xy 76.269981 58.082428) (xy 76.134531 57.991923) (xy 75.984027 57.929582) (xy 75.824252 57.8978) + (xy 75.661348 57.8978) (xy 75.501573 57.929582) (xy 75.351069 57.991923) (xy 75.215619 58.082428) (xy 75.100428 58.197619) + (xy 75.009923 58.333069) (xy 74.947582 58.483573) (xy 74.9158 58.643348) (xy 74.9158 58.806252) (xy 74.947582 58.966027) + (xy 75.009923 59.116531) (xy 75.066726 59.201543) (xy 75.0208 59.215475) (xy 74.944138 59.192219) (xy 74.8458 59.182534) + (xy 74.6958 59.182534) (xy 74.597462 59.192219) (xy 74.5208 59.215475) (xy 74.444138 59.192219) (xy 74.3458 59.182534) + (xy 74.1958 59.182534) (xy 74.097462 59.192219) (xy 74.0208 59.215475) (xy 73.944138 59.192219) (xy 73.8458 59.182534) + (xy 73.6958 59.182534) (xy 73.597462 59.192219) (xy 73.502902 59.220904) (xy 73.415756 59.267484) (xy 73.339372 59.330172) + (xy 73.276684 59.406556) (xy 73.230104 59.493702) (xy 73.201419 59.588262) (xy 73.191734 59.6866) (xy 73.191734 61.0866) + (xy 73.201419 61.184938) (xy 73.230104 61.279498) (xy 73.276684 61.366644) (xy 73.339372 61.443028) (xy 73.415756 61.505716) + (xy 73.502902 61.552296) (xy 73.597462 61.580981) (xy 73.6958 61.590666) (xy 73.8458 61.590666) (xy 73.944138 61.580981) + (xy 74.0208 61.557725) (xy 74.097462 61.580981) (xy 74.1958 61.590666) (xy 74.3458 61.590666) (xy 74.444138 61.580981) + (xy 74.5208 61.557725) (xy 74.597462 61.580981) (xy 74.6958 61.590666) (xy 74.8458 61.590666) (xy 74.944138 61.580981) + (xy 75.0208 61.557725) (xy 75.097462 61.580981) (xy 75.1958 61.590666) (xy 75.3458 61.590666) (xy 75.444138 61.580981) + (xy 75.5208 61.557725) (xy 75.597462 61.580981) (xy 75.6958 61.590666) (xy 75.8458 61.590666) (xy 75.944138 61.580981) + (xy 76.0208 61.557725) (xy 76.097462 61.580981) (xy 76.1958 61.590666) (xy 76.3458 61.590666) (xy 76.444138 61.580981) + (xy 76.5208 61.557725) (xy 76.597462 61.580981) (xy 76.6958 61.590666) (xy 76.8458 61.590666) (xy 76.944138 61.580981) + (xy 77.0208 61.557725) (xy 77.097462 61.580981) (xy 77.1958 61.590666) (xy 77.3458 61.590666) (xy 77.444138 61.580981) + (xy 77.488241 61.567602) (xy 77.537093 61.582422) (xy 77.6208 61.590666) (xy 77.64105 61.5886) (xy 77.6938 61.53585) + (xy 77.693801 63.358059) (xy 77.69101 63.3864) (xy 77.702149 63.499511) (xy 77.730729 63.593723) (xy 77.735144 63.608276) + (xy 77.788722 63.708515) (xy 77.81068 63.73527) (xy 77.842763 63.774364) (xy 77.842766 63.774367) (xy 77.860827 63.796374) + (xy 77.882833 63.814434) (xy 78.863798 64.7954) (xy 78.7908 64.7954) (xy 78.76419 64.798219) (xy 78.05299 64.950619) + (xy 78.03363 64.956412) (xy 78.011417 64.967655) (xy 77.452617 65.323255) (xy 77.426828 65.344971) (xy 76.918828 65.903771) + (xy 76.909658 65.915101) (xy 76.897183 65.936647) (xy 76.643183 66.495447) (xy 76.633277 66.528689) (xy 76.531677 67.189089) + (xy 76.530977 67.222425) (xy 76.581777 67.679625) (xy 76.587517 67.705761) (xy 76.790717 68.315361) (xy 76.796686 68.330115) + (xy 76.8096 68.3514) (xy 77.2668 68.961) (xy 77.29043 68.985048) (xy 77.74763 69.340648) (xy 77.765288 69.352165) + (xy 77.788251 69.361784) (xy 78.359 69.537399) (xy 78.359 70.4596) (xy 78.361272 70.483517) (xy 78.368335 70.50739) + (xy 78.379919 70.529428) (xy 78.39558 70.548781) (xy 78.414716 70.564708) (xy 78.436591 70.576595) (xy 78.460365 70.583986) + (xy 78.485124 70.586597) (xy 85.851124 70.637397) (xy 85.876776 70.63496) (xy 85.900601 70.627733) (xy 85.922557 70.615997) + (xy 85.941803 70.600203) (xy 85.957597 70.580957) (xy 85.969333 70.559001) (xy 85.97656 70.535176) (xy 85.979 70.5104) + (xy 85.979 69.581623) (xy 86.55799 69.358935) (xy 86.577855 69.349233) (xy 86.597829 69.334372) (xy 87.156629 68.826372) + (xy 87.175242 68.80523) (xy 87.530842 68.29723) (xy 87.547283 68.264561) (xy 87.750483 67.654961) (xy 87.75456 67.639576) + (xy 87.757 67.6148) (xy 87.757 66.9544) (xy 87.752114 66.91951) (xy 87.548914 66.20831) (xy 87.533945 66.175017) + (xy 87.178345 65.616217) (xy 87.156159 65.590002) (xy 86.648159 65.132802) (xy 86.633978 65.121751) (xy 86.612046 65.109969) + (xy 86.002446 64.855969) (xy 85.989552 64.851395) (xy 85.965098 64.846722) (xy 85.406298 64.795922) (xy 85.3948 64.7954) + (xy 85.219647 64.7954) (xy 85.219647 64.619019) (xy 85.252514 64.609049) (xy 85.369915 64.546297) (xy 85.472818 64.461846) + (xy 85.557269 64.358943) (xy 85.620021 64.241542) (xy 85.658664 64.114154) (xy 85.671712 63.981675) (xy 85.671712 63.520148) + (xy 87.5142 63.520148) (xy 87.5142 63.683052) (xy 87.545982 63.842827) (xy 87.608323 63.993331) (xy 87.698828 64.128781) + (xy 87.814019 64.243972) (xy 87.949469 64.334477) (xy 88.099973 64.396818) (xy 88.259748 64.4286) (xy 88.422652 64.4286) + (xy 88.486057 64.415988) (xy 88.460382 64.477973) (xy 88.4286 64.637748) (xy 88.4286 64.800652) (xy 88.460382 64.960427) + (xy 88.522723 65.110931) (xy 88.613228 65.246381) (xy 88.728419 65.361572) (xy 88.863869 65.452077) (xy 89.014373 65.514418) + (xy 89.174148 65.5462) (xy 89.337052 65.5462) (xy 89.496827 65.514418) (xy 89.538125 65.497312) (xy 89.476382 65.646373) + (xy 89.4446 65.806148) (xy 89.4446 65.969052) (xy 89.476382 66.128827) (xy 89.538723 66.279331) (xy 89.629228 66.414781) + (xy 89.744419 66.529972) (xy 89.879869 66.620477) (xy 90.030373 66.682818) (xy 90.190148 66.7146) (xy 90.353052 66.7146) + (xy 90.512827 66.682818) (xy 90.663331 66.620477) (xy 90.798781 66.529972) (xy 90.913972 66.414781) (xy 91.004477 66.279331) + (xy 91.066818 66.128827) (xy 91.0986 65.969052) (xy 91.0986 65.806148) (xy 91.066818 65.646373) (xy 91.004477 65.495869) + (xy 90.957413 65.425432) (xy 91.020827 65.412818) (xy 91.171331 65.350477) (xy 91.306781 65.259972) (xy 91.421972 65.144781) + (xy 91.512477 65.009331) (xy 91.574818 64.858827) (xy 91.6066 64.699052) (xy 91.6066 64.536148) (xy 91.574818 64.376373) + (xy 91.512477 64.225869) (xy 91.421972 64.090419) (xy 91.353753 64.0222) (xy 91.369052 64.0222) (xy 91.528827 63.990418) + (xy 91.679331 63.928077) (xy 91.814781 63.837572) (xy 91.929972 63.722381) (xy 92.020477 63.586931) (xy 92.082818 63.436427) + (xy 92.1146 63.276652) (xy 92.1146 63.113748) (xy 92.082818 62.953973) (xy 92.020477 62.803469) (xy 91.929972 62.668019) + (xy 91.814781 62.552828) (xy 91.679331 62.462323) (xy 91.528827 62.399982) (xy 91.369052 62.3682) (xy 91.206148 62.3682) + (xy 91.046373 62.399982) (xy 90.895869 62.462323) (xy 90.760419 62.552828) (xy 90.645228 62.668019) (xy 90.554723 62.803469) + (xy 90.499915 62.935787) (xy 90.456772 62.871219) (xy 90.341581 62.756028) (xy 90.206131 62.665523) (xy 90.055627 62.603182) + (xy 89.895852 62.5714) (xy 89.732948 62.5714) (xy 89.573173 62.603182) (xy 89.422669 62.665523) (xy 89.287219 62.756028) + (xy 89.172028 62.871219) (xy 89.081523 63.006669) (xy 89.026715 63.138987) (xy 88.983572 63.074419) (xy 88.868381 62.959228) + (xy 88.732931 62.868723) (xy 88.582427 62.806382) (xy 88.422652 62.7746) (xy 88.259748 62.7746) (xy 88.099973 62.806382) + (xy 87.949469 62.868723) (xy 87.814019 62.959228) (xy 87.698828 63.074419) (xy 87.608323 63.209869) (xy 87.545982 63.360373) + (xy 87.5142 63.520148) (xy 85.671712 63.520148) (xy 85.671712 63.081673) (xy 85.658664 62.949194) (xy 85.620021 62.821806) + (xy 85.557269 62.704405) (xy 85.472818 62.601502) (xy 85.369915 62.517051) (xy 85.252514 62.454299) (xy 85.244943 62.452002) + (xy 85.342407 62.399908) (xy 85.430266 62.327803) (xy 85.448331 62.305791) (xy 85.596054 62.158068) (xy 91.732778 62.158068) + (xy 92.149168 62.657516) (xy 92.209289 62.71634) (xy 92.279731 62.762303) (xy 92.357787 62.793642) (xy 92.440456 62.80915) + (xy 92.524563 62.808233) (xy 92.606874 62.790925) (xy 92.684227 62.757892) (xy 92.75365 62.710401) (xy 92.959345 62.535105) + (xy 92.972503 62.384713) (xy 92.28006 61.559491) (xy 91.745936 62.007675) (xy 91.732778 62.158068) (xy 85.596054 62.158068) + (xy 85.847314 61.906808) (xy 85.908055 61.946443) (xy 86.031591 61.996041) (xy 86.162429 62.020586) (xy 86.295541 62.019134) + (xy 86.425812 61.991741) (xy 86.548236 61.939459) (xy 86.658108 61.864299) (xy 87.175188 61.430417) (xy 87.268286 61.335265) + (xy 87.341032 61.22378) (xy 87.370937 61.149293) (xy 91.04767 61.149293) (xy 91.048588 61.233399) (xy 91.065896 61.315711) + (xy 91.098929 61.393064) (xy 91.146419 61.462487) (xy 91.565975 61.959279) (xy 91.716367 61.972437) (xy 92.243734 61.529923) + (xy 92.315298 61.529923) (xy 93.007741 62.355144) (xy 93.158134 62.368302) (xy 93.366485 62.196171) (xy 93.42531 62.13605) + (xy 93.471273 62.065608) (xy 93.502611 61.987553) (xy 93.51812 61.904883) (xy 93.517202 61.820777) (xy 93.499894 61.738465) + (xy 93.466861 61.661112) (xy 93.419371 61.591689) (xy 92.999815 61.094897) (xy 92.849423 61.081739) (xy 92.315298 61.529923) + (xy 92.243734 61.529923) (xy 92.250492 61.524253) (xy 91.558049 60.699032) (xy 91.407656 60.685874) (xy 91.199305 60.858005) + (xy 91.14048 60.918126) (xy 91.094517 60.988568) (xy 91.063179 61.066623) (xy 91.04767 61.149293) (xy 87.370937 61.149293) + (xy 87.39063 61.100244) (xy 87.415175 60.969407) (xy 87.413723 60.836294) (xy 87.38633 60.706023) (xy 87.334048 60.583599) + (xy 87.258888 60.473727) (xy 87.01327 60.18101) (xy 87.070621 60.18101) (xy 87.451657 60.638326) (xy 87.511778 60.69715) + (xy 87.58222 60.743114) (xy 87.660276 60.774452) (xy 87.742945 60.789961) (xy 87.827052 60.789043) (xy 87.909364 60.771735) + (xy 87.986717 60.738702) (xy 88.056139 60.691212) (xy 88.081822 60.669463) (xy 91.593287 60.669463) (xy 92.28573 61.494685) + (xy 92.819854 61.046501) (xy 92.833012 60.896108) (xy 92.416622 60.39666) (xy 92.356501 60.337836) (xy 92.286059 60.291873) + (xy 92.208003 60.260534) (xy 92.125334 60.245026) (xy 92.041227 60.245943) (xy 91.958916 60.263251) (xy 91.881563 60.296284) + (xy 91.81214 60.343775) (xy 91.606445 60.519071) (xy 91.593287 60.669463) (xy 88.081822 60.669463) (xy 88.405468 60.395393) + (xy 88.418626 60.245) (xy 87.761536 59.461911) (xy 87.083778 60.030617) (xy 87.070621 60.18101) (xy 87.01327 60.18101) + (xy 86.64824 59.745985) (xy 86.553088 59.652887) (xy 86.441603 59.580141) (xy 86.318067 59.530543) (xy 86.187229 59.505998) + (xy 86.054117 59.50745) (xy 85.923846 59.534843) (xy 85.801422 59.587125) (xy 85.69155 59.662285) (xy 85.17447 60.096167) + (xy 85.081372 60.191319) (xy 85.008626 60.302804) (xy 84.959028 60.42634) (xy 84.934483 60.557177) (xy 84.935935 60.69029) + (xy 84.963328 60.820561) (xy 85.01561 60.942985) (xy 85.082034 61.040086) (xy 84.781291 61.340829) (xy 81.778714 61.340829) + (xy 81.811496 61.279498) (xy 81.840181 61.184938) (xy 81.849866 61.0866) (xy 81.849866 59.6866) (xy 81.840181 59.588262) + (xy 81.811496 59.493702) (xy 81.764916 59.406556) (xy 81.702228 59.330172) (xy 81.625844 59.267484) (xy 81.538698 59.220904) + (xy 81.517153 59.214368) (xy 86.420866 59.214368) (xy 86.421784 59.298475) (xy 86.439092 59.380786) (xy 86.472125 59.458139) + (xy 86.519615 59.527562) (xy 86.903817 59.982222) (xy 87.05421 59.995379) (xy 87.72521 59.432343) (xy 87.796774 59.432343) + (xy 88.453864 60.215432) (xy 88.604257 60.22859) (xy 88.956241 59.935936) (xy 89.015066 59.875815) (xy 89.061029 59.805373) + (xy 89.092367 59.727318) (xy 89.107876 59.644648) (xy 89.106958 59.560541) (xy 89.08965 59.47823) (xy 89.056617 59.400877) + (xy 89.009127 59.331454) (xy 88.624925 58.876794) (xy 88.474532 58.863637) (xy 87.796774 59.432343) (xy 87.72521 59.432343) + (xy 87.731968 59.426673) (xy 87.074878 58.643584) (xy 86.924485 58.630426) (xy 86.572501 58.92308) (xy 86.513676 58.983201) + (xy 86.467713 59.053643) (xy 86.436375 59.131698) (xy 86.420866 59.214368) (xy 81.517153 59.214368) (xy 81.444138 59.192219) + (xy 81.3458 59.182534) (xy 81.1958 59.182534) (xy 81.097462 59.192219) (xy 81.0208 59.215475) (xy 80.944138 59.192219) + (xy 80.8458 59.182534) (xy 80.6958 59.182534) (xy 80.597462 59.192219) (xy 80.5208 59.215475) (xy 80.444138 59.192219) + (xy 80.3458 59.182534) (xy 80.1958 59.182534) (xy 80.097462 59.192219) (xy 80.0208 59.215475) (xy 79.944138 59.192219) + (xy 79.8478 59.182731) (xy 79.8478 56.489931) (xy 79.85059 56.4616) (xy 79.847364 56.428833) (xy 79.844471 56.399463) + (xy 79.839451 56.348488) (xy 79.819394 56.282371) (xy 79.806457 56.239724) (xy 79.752879 56.139485) (xy 79.680774 56.051626) + (xy 79.658763 56.033562) (xy 74.511801 50.8866) (xy 81.991734 50.8866) (xy 81.991734 51.0366) (xy 82.001419 51.134938) + (xy 82.024675 51.2116) (xy 82.001419 51.288262) (xy 81.991734 51.3866) (xy 81.991734 51.5366) (xy 82.001419 51.634938) + (xy 82.024675 51.7116) (xy 82.001419 51.788262) (xy 81.991734 51.8866) (xy 81.991734 52.0366) (xy 82.001419 52.134938) + (xy 82.024675 52.2116) (xy 82.001419 52.288262) (xy 81.991734 52.3866) (xy 81.991734 52.5366) (xy 82.001419 52.634938) + (xy 82.024675 52.7116) (xy 82.001419 52.788262) (xy 81.991734 52.8866) (xy 81.991734 53.0366) (xy 82.001419 53.134938) + (xy 82.024675 53.2116) (xy 82.001419 53.288262) (xy 81.991734 53.3866) (xy 81.991734 53.5366) (xy 82.001419 53.634938) + (xy 82.024675 53.7116) (xy 82.001419 53.788262) (xy 81.991734 53.8866) (xy 81.991734 54.0366) (xy 82.001419 54.134938) + (xy 82.024675 54.2116) (xy 82.001419 54.288262) (xy 81.991734 54.3866) (xy 81.991734 54.5366) (xy 82.001419 54.634938) + (xy 82.024675 54.7116) (xy 82.001419 54.788262) (xy 81.991734 54.8866) (xy 81.991734 55.0366) (xy 82.001419 55.134938) + (xy 82.024675 55.2116) (xy 82.001419 55.288262) (xy 81.991734 55.3866) (xy 81.991734 55.5366) (xy 82.001419 55.634938) + (xy 82.024675 55.7116) (xy 82.001419 55.788262) (xy 81.991734 55.8866) (xy 81.991734 56.0366) (xy 82.001419 56.134938) + (xy 82.024675 56.2116) (xy 82.001419 56.288262) (xy 81.991734 56.3866) (xy 81.991734 56.5366) (xy 82.001419 56.634938) + (xy 82.024675 56.7116) (xy 82.001419 56.788262) (xy 81.991734 56.8866) (xy 81.991734 57.0366) (xy 82.001419 57.134938) + (xy 82.024675 57.2116) (xy 82.001419 57.288262) (xy 81.991734 57.3866) (xy 81.991734 57.5366) (xy 82.001419 57.634938) + (xy 82.024675 57.7116) (xy 82.001419 57.788262) (xy 81.991734 57.8866) (xy 81.991734 58.0366) (xy 82.001419 58.134938) + (xy 82.024675 58.2116) (xy 82.001419 58.288262) (xy 81.991734 58.3866) (xy 81.991734 58.5366) (xy 82.001419 58.634938) + (xy 82.030104 58.729498) (xy 82.076684 58.816644) (xy 82.139372 58.893028) (xy 82.215756 58.955716) (xy 82.302902 59.002296) + (xy 82.397462 59.030981) (xy 82.4958 59.040666) (xy 83.8958 59.040666) (xy 83.994138 59.030981) (xy 84.088698 59.002296) + (xy 84.175844 58.955716) (xy 84.252228 58.893028) (xy 84.314916 58.816644) (xy 84.361496 58.729498) (xy 84.390181 58.634938) + (xy 84.392241 58.614016) (xy 87.110116 58.614016) (xy 87.767206 59.397105) (xy 88.444964 58.828399) (xy 88.458121 58.678006) + (xy 88.077085 58.22069) (xy 88.016964 58.161866) (xy 87.946522 58.115902) (xy 87.868466 58.084564) (xy 87.785797 58.069055) + (xy 87.70169 58.069973) (xy 87.619378 58.087281) (xy 87.542025 58.120314) (xy 87.472603 58.167804) (xy 87.123274 58.463623) + (xy 87.110116 58.614016) (xy 84.392241 58.614016) (xy 84.399866 58.5366) (xy 84.399866 58.3866) (xy 84.390181 58.288262) + (xy 84.366925 58.2116) (xy 84.390181 58.134938) (xy 84.399866 58.0366) (xy 84.399866 57.8866) (xy 84.390181 57.788262) + (xy 84.366925 57.7116) (xy 84.390181 57.634938) (xy 84.399866 57.5366) (xy 84.399866 57.3866) (xy 84.390181 57.288262) + (xy 84.366925 57.2116) (xy 84.390181 57.134938) (xy 84.399866 57.0366) (xy 84.399866 56.8866) (xy 84.390181 56.788262) + (xy 84.366925 56.7116) (xy 84.390181 56.634938) (xy 84.399866 56.5366) (xy 84.399866 56.3866) (xy 84.390181 56.288262) + (xy 84.366925 56.2116) (xy 84.390181 56.134938) (xy 84.399866 56.0366) (xy 84.399866 55.8866) (xy 84.390181 55.788262) + (xy 84.366925 55.7116) (xy 84.390181 55.634938) (xy 84.399669 55.5386) (xy 88.780255 55.5386) (xy 89.497896 56.256241) + (xy 89.472777 56.294738) (xy 89.423179 56.418274) (xy 89.398634 56.549111) (xy 89.400086 56.682223) (xy 89.427479 56.812494) + (xy 89.479761 56.934918) (xy 89.554921 57.04479) (xy 90.004874 57.581022) (xy 90.100025 57.674119) (xy 90.211511 57.746865) + (xy 90.335046 57.796463) (xy 90.465884 57.821008) (xy 90.598996 57.819556) (xy 90.729267 57.792163) (xy 90.800944 57.761553) + (xy 90.758353 57.826826) (xy 90.708755 57.950362) (xy 90.68421 58.081199) (xy 90.685662 58.214311) (xy 90.713055 58.344582) + (xy 90.765337 58.467006) (xy 90.840497 58.576878) (xy 91.29045 59.11311) (xy 91.385601 59.206207) (xy 91.497087 59.278953) + (xy 91.620622 59.328551) (xy 91.75146 59.353096) (xy 91.884572 59.351644) (xy 92.014843 59.324251) (xy 92.135472 59.272735) + (xy 92.548167 59.77184) (xy 92.518662 59.845327) (xy 92.503154 59.927996) (xy 92.504071 60.012103) (xy 92.521379 60.094415) + (xy 92.554413 60.171768) (xy 92.601903 60.24119) (xy 93.604652 61.43622) (xy 93.664774 61.495044) (xy 93.735216 61.541008) + (xy 93.813271 61.572347) (xy 93.895941 61.587855) (xy 93.980047 61.586938) (xy 94.062359 61.569629) (xy 94.139712 61.536596) + (xy 94.209134 61.489106) (xy 94.821969 60.974876) (xy 94.880793 60.914755) (xy 94.926757 60.844313) (xy 94.958096 60.766257) + (xy 94.973604 60.683588) (xy 94.972687 60.599481) (xy 94.955379 60.517169) (xy 94.922345 60.439816) (xy 94.874855 60.370394) + (xy 93.872106 59.175364) (xy 93.811984 59.11654) (xy 93.741542 59.070576) (xy 93.663487 59.039237) (xy 93.580817 59.023729) + (xy 93.496711 59.024646) (xy 93.437957 59.037001) (xy 93.020675 58.532348) (xy 93.029678 58.523147) (xy 93.102423 58.411662) + (xy 93.152021 58.288126) (xy 93.176566 58.157289) (xy 93.175114 58.024177) (xy 93.147721 57.893906) (xy 93.095439 57.771482) + (xy 93.020279 57.66161) (xy 92.570326 57.125378) (xy 92.475175 57.032281) (xy 92.363689 56.959535) (xy 92.240154 56.909937) + (xy 92.109316 56.885392) (xy 91.976204 56.886844) (xy 91.845933 56.914237) (xy 91.774256 56.944847) (xy 91.816847 56.879574) + (xy 91.866445 56.756038) (xy 91.89099 56.625201) (xy 91.889538 56.492089) (xy 91.862145 56.361818) (xy 91.809863 56.239394) + (xy 91.734703 56.129522) (xy 91.28475 55.59329) (xy 91.189599 55.500193) (xy 91.078113 55.427447) (xy 90.954578 55.377849) + (xy 90.82374 55.353304) (xy 90.690628 55.354756) (xy 90.560357 55.382149) (xy 90.437933 55.434431) (xy 90.360831 55.487174) + (xy 89.855533 54.981876) (xy 93.184355 54.981876) (xy 95.5874 57.384921) (xy 95.605465 57.406933) (xy 95.693324 57.479038) + (xy 95.793563 57.532616) (xy 95.838221 57.546163) (xy 95.902327 57.56561) (xy 95.960325 57.571322) (xy 95.987103 57.573959) + (xy 95.987108 57.573959) (xy 96.015439 57.576749) (xy 96.04377 57.573959) (xy 98.347945 57.573959) (xy 98.359496 57.601845) + (xy 98.499248 57.810999) (xy 98.677119 57.98887) (xy 98.886273 58.128622) (xy 99.118672 58.224885) (xy 99.365385 58.273959) + (xy 99.616933 58.273959) (xy 99.863646 58.224885) (xy 100.096045 58.128622) (xy 100.305199 57.98887) (xy 100.48307 57.810999) + (xy 100.622822 57.601845) (xy 100.719085 57.369446) (xy 100.768159 57.122733) (xy 100.768159 56.871185) (xy 100.719085 56.624472) + (xy 100.622822 56.392073) (xy 100.48307 56.182919) (xy 100.305199 56.005048) (xy 100.096045 55.865296) (xy 99.863646 55.769033) + (xy 99.616933 55.719959) (xy 99.365385 55.719959) (xy 99.118672 55.769033) (xy 98.886273 55.865296) (xy 98.706951 55.985115) + (xy 98.82677 55.805793) (xy 98.923033 55.573394) (xy 98.972107 55.326681) (xy 98.972107 55.075133) (xy 98.923033 54.82842) + (xy 98.82677 54.596021) (xy 98.687018 54.386867) (xy 98.509147 54.208996) (xy 98.299993 54.069244) (xy 98.067594 53.972981) + (xy 97.820881 53.923907) (xy 97.569333 53.923907) (xy 97.32262 53.972981) (xy 97.090221 54.069244) (xy 96.910902 54.189061) + (xy 97.030719 54.009742) (xy 97.126982 53.777343) (xy 97.176056 53.53063) (xy 97.176056 53.279082) (xy 97.126982 53.032369) + (xy 97.030719 52.79997) (xy 96.890967 52.590816) (xy 96.713096 52.412945) (xy 96.503942 52.273193) (xy 96.271543 52.17693) + (xy 96.02483 52.127856) (xy 95.773282 52.127856) (xy 95.526569 52.17693) (xy 95.29417 52.273193) (xy 95.114851 52.39301) + (xy 95.234668 52.213691) (xy 95.330931 51.981292) (xy 95.380005 51.734579) (xy 95.380005 51.483031) (xy 95.330931 51.236318) + (xy 95.234668 51.003919) (xy 95.094916 50.794765) (xy 94.917045 50.616894) (xy 94.707891 50.477142) (xy 94.475492 50.380879) + (xy 94.228779 50.331805) (xy 93.977231 50.331805) (xy 93.730518 50.380879) (xy 93.498119 50.477142) (xy 93.3188 50.596959) + (xy 93.438617 50.41764) (xy 93.53488 50.185241) (xy 93.583954 49.938528) (xy 93.583954 49.68698) (xy 93.53488 49.440267) + (xy 93.438617 49.207868) (xy 93.298865 48.998714) (xy 93.120994 48.820843) (xy 92.91184 48.681091) (xy 92.679441 48.584828) + (xy 92.432728 48.535754) (xy 92.18118 48.535754) (xy 91.934467 48.584828) (xy 91.702068 48.681091) (xy 91.522746 48.80091) + (xy 91.642565 48.621588) (xy 91.738828 48.389189) (xy 91.787902 48.142476) (xy 91.787902 47.890928) (xy 91.738828 47.644215) + (xy 91.642565 47.411816) (xy 91.502813 47.202662) (xy 91.324942 47.024791) (xy 91.115788 46.885039) (xy 90.883389 46.788776) + (xy 90.636676 46.739702) (xy 90.385128 46.739702) (xy 90.138415 46.788776) (xy 89.906016 46.885039) (xy 89.696862 47.024791) + (xy 89.624191 47.097462) (xy 89.558463 47.031733) (xy 89.761318 46.952525) (xy 89.883992 46.734307) (xy 89.961736 46.496349) + (xy 89.991564 46.247796) (xy 89.972328 45.9982) (xy 89.904768 45.757153) (xy 89.79148 45.533917) (xy 89.761317 45.488778) + (xy 89.558446 45.409583) (xy 88.747378 46.220651) (xy 88.76152 46.234793) (xy 88.728993 46.26732) (xy 88.714851 46.253178) + (xy 87.903783 47.064246) (xy 87.982978 47.267117) (xy 88.028117 47.29728) (xy 88.251353 47.410568) (xy 88.4924 47.478128) + (xy 88.741996 47.497364) (xy 88.990549 47.467536) (xy 89.228507 47.389792) (xy 89.446725 47.267118) (xy 89.525933 47.064263) + (xy 89.591662 47.129991) (xy 89.518991 47.202662) (xy 89.379239 47.411816) (xy 89.282976 47.644215) (xy 89.233902 47.890928) + (xy 89.233902 48.142476) (xy 89.282976 48.389189) (xy 89.379239 48.621588) (xy 89.518991 48.830742) (xy 89.696862 49.008613) + (xy 89.906016 49.148365) (xy 90.138415 49.244628) (xy 90.385128 49.293702) (xy 90.636676 49.293702) (xy 90.883389 49.244628) + (xy 91.115788 49.148365) (xy 91.29511 49.028546) (xy 91.175291 49.207868) (xy 91.079028 49.440267) (xy 91.029954 49.68698) + (xy 91.029954 49.938528) (xy 91.079028 50.185241) (xy 91.090579 50.213128) (xy 89.725107 51.5786) (xy 88.260145 51.5786) + (xy 88.250175 51.545732) (xy 88.187423 51.428331) (xy 88.102972 51.325428) (xy 88.000069 51.240977) (xy 87.882668 51.178225) + (xy 87.808084 51.1556) (xy 87.882668 51.132975) (xy 88.000069 51.070223) (xy 88.102972 50.985772) (xy 88.187423 50.882869) + (xy 88.250175 50.765468) (xy 88.288818 50.63808) (xy 88.301866 50.505601) (xy 88.301866 49.805599) (xy 88.288818 49.67312) + (xy 88.250175 49.545732) (xy 88.187423 49.428331) (xy 88.102972 49.325428) (xy 88.000069 49.240977) (xy 87.882668 49.178225) + (xy 87.75528 49.139582) (xy 87.622801 49.126534) (xy 86.722799 49.126534) (xy 86.59032 49.139582) (xy 86.462932 49.178225) + (xy 86.345531 49.240977) (xy 86.242628 49.325428) (xy 86.158177 49.428331) (xy 86.095425 49.545732) (xy 86.085455 49.5786) + (xy 85.813531 49.5786) (xy 85.7852 49.57581) (xy 85.756869 49.5786) (xy 85.756864 49.5786) (xy 85.730086 49.581237) + (xy 85.672088 49.586949) (xy 85.607982 49.606396) (xy 85.563324 49.619943) (xy 85.463085 49.673521) (xy 85.375226 49.745626) + (xy 85.357161 49.767638) (xy 84.377695 50.747104) (xy 84.361496 50.693702) (xy 84.314916 50.606556) (xy 84.252228 50.530172) + (xy 84.175844 50.467484) (xy 84.088698 50.420904) (xy 83.994138 50.392219) (xy 83.8958 50.382534) (xy 82.4958 50.382534) + (xy 82.397462 50.392219) (xy 82.302902 50.420904) (xy 82.215756 50.467484) (xy 82.139372 50.530172) (xy 82.076684 50.606556) + (xy 82.030104 50.693702) (xy 82.001419 50.788262) (xy 81.991734 50.8866) (xy 74.511801 50.8866) (xy 73.864068 50.238867) + (xy 73.944138 50.230981) (xy 74.0208 50.207725) (xy 74.097462 50.230981) (xy 74.1958 50.240666) (xy 74.3458 50.240666) + (xy 74.444138 50.230981) (xy 74.5208 50.207725) (xy 74.597462 50.230981) (xy 74.6958 50.240666) (xy 74.8458 50.240666) + (xy 74.944138 50.230981) (xy 75.0208 50.207725) (xy 75.097462 50.230981) (xy 75.1958 50.240666) (xy 75.3458 50.240666) + (xy 75.444138 50.230981) (xy 75.5208 50.207725) (xy 75.597462 50.230981) (xy 75.6958 50.240666) (xy 75.8458 50.240666) + (xy 75.944138 50.230981) (xy 76.0208 50.207725) (xy 76.097462 50.230981) (xy 76.1958 50.240666) (xy 76.3458 50.240666) + (xy 76.444138 50.230981) (xy 76.5208 50.207725) (xy 76.597462 50.230981) (xy 76.6958 50.240666) (xy 76.8458 50.240666) + (xy 76.944138 50.230981) (xy 77.0208 50.207725) (xy 77.097462 50.230981) (xy 77.1958 50.240666) (xy 77.3458 50.240666) + (xy 77.444138 50.230981) (xy 77.5208 50.207725) (xy 77.597462 50.230981) (xy 77.6958 50.240666) (xy 77.8458 50.240666) + (xy 77.944138 50.230981) (xy 78.0208 50.207725) (xy 78.097462 50.230981) (xy 78.1958 50.240666) (xy 78.3458 50.240666) + (xy 78.444138 50.230981) (xy 78.5208 50.207725) (xy 78.597462 50.230981) (xy 78.6958 50.240666) (xy 78.8458 50.240666) + (xy 78.944138 50.230981) (xy 79.0208 50.207725) (xy 79.097462 50.230981) (xy 79.1958 50.240666) (xy 79.3458 50.240666) + (xy 79.444138 50.230981) (xy 79.5208 50.207725) (xy 79.597462 50.230981) (xy 79.6958 50.240666) (xy 79.8458 50.240666) + (xy 79.944138 50.230981) (xy 80.0208 50.207725) (xy 80.097462 50.230981) (xy 80.1958 50.240666) (xy 80.3458 50.240666) + (xy 80.444138 50.230981) (xy 80.5208 50.207725) (xy 80.597462 50.230981) (xy 80.6958 50.240666) (xy 80.8458 50.240666) + (xy 80.944138 50.230981) (xy 81.0208 50.207725) (xy 81.097462 50.230981) (xy 81.1958 50.240666) (xy 81.3458 50.240666) + (xy 81.444138 50.230981) (xy 81.538698 50.202296) (xy 81.625844 50.155716) (xy 81.702228 50.093028) (xy 81.764916 50.016644) + (xy 81.811496 49.929498) (xy 81.840181 49.834938) (xy 81.849866 49.7366) (xy 81.849866 48.3366) (xy 81.840181 48.238262) + (xy 81.811496 48.143702) (xy 81.764916 48.056556) (xy 81.702228 47.980172) (xy 81.625844 47.917484) (xy 81.538698 47.870904) + (xy 81.444138 47.842219) (xy 81.3458 47.832534) (xy 81.1958 47.832534) (xy 81.097462 47.842219) (xy 81.0208 47.865475) + (xy 80.944138 47.842219) (xy 80.8458 47.832534) (xy 80.6958 47.832534) (xy 80.597462 47.842219) (xy 80.5208 47.865475) + (xy 80.444138 47.842219) (xy 80.3458 47.832534) (xy 80.1958 47.832534) (xy 80.097462 47.842219) (xy 80.0208 47.865475) + (xy 79.944138 47.842219) (xy 79.8458 47.832534) (xy 79.6958 47.832534) (xy 79.597462 47.842219) (xy 79.5208 47.865475) + (xy 79.444138 47.842219) (xy 79.3458 47.832534) (xy 79.1958 47.832534) (xy 79.097462 47.842219) (xy 79.0208 47.865475) + (xy 78.944138 47.842219) (xy 78.8458 47.832534) (xy 78.6958 47.832534) (xy 78.597462 47.842219) (xy 78.5208 47.865475) + (xy 78.444138 47.842219) (xy 78.3458 47.832534) (xy 78.1958 47.832534) (xy 78.097462 47.842219) (xy 78.0208 47.865475) + (xy 77.944138 47.842219) (xy 77.8458 47.832534) (xy 77.6958 47.832534) (xy 77.597462 47.842219) (xy 77.5208 47.865475) + (xy 77.444138 47.842219) (xy 77.3458 47.832534) (xy 77.1958 47.832534) (xy 77.097462 47.842219) (xy 77.0208 47.865475) + (xy 76.944138 47.842219) (xy 76.8458 47.832534) (xy 76.6958 47.832534) (xy 76.597462 47.842219) (xy 76.5208 47.865475) + (xy 76.444138 47.842219) (xy 76.3458 47.832534) (xy 76.1958 47.832534) (xy 76.097462 47.842219) (xy 76.0208 47.865475) + (xy 75.944138 47.842219) (xy 75.8478 47.832731) (xy 75.8478 47.243801) (xy 76.68391 46.407691) (xy 76.705921 46.389627) + (xy 76.778026 46.301768) (xy 76.831604 46.201529) (xy 76.845151 46.156871) (xy 76.864598 46.092765) (xy 76.871501 46.022666) + (xy 76.872947 46.007989) (xy 76.872947 46.007984) (xy 76.875737 45.979653) (xy 76.872947 45.951322) (xy 76.872947 45.762398) + (xy 76.878427 45.761858) (xy 77.005815 45.723215) (xy 77.123216 45.660463) (xy 77.226119 45.576012) (xy 77.31057 45.473109) + (xy 77.373322 45.355708) (xy 77.411965 45.22832) (xy 77.425013 45.095841) (xy 77.425013 44.395839) (xy 77.411965 44.26336) + (xy 77.373322 44.135972) (xy 77.31057 44.018571) (xy 77.226119 43.915668) (xy 77.123216 43.831217) (xy 77.005815 43.768465) + (xy 76.931231 43.74584) (xy 77.005815 43.723215) (xy 77.123216 43.660463) (xy 77.226119 43.576012) (xy 77.31057 43.473109) + (xy 77.373322 43.355708) (xy 77.411965 43.22832) (xy 77.425013 43.095841) (xy 77.425013 42.395839) (xy 77.411965 42.26336) + (xy 77.373322 42.135972) (xy 77.31057 42.018571) (xy 77.226119 41.915668) (xy 77.123216 41.831217) (xy 77.005815 41.768465) + (xy 76.878427 41.729822) (xy 76.745948 41.716774) (xy 76.082883 41.716774) (xy 67.709346 33.343238) (xy 67.691281 33.321226) + (xy 67.603422 33.249121) (xy 67.503183 33.195543) (xy 67.439077 33.176097) (xy 67.394418 33.162549) (xy 67.339352 33.157126) + (xy 67.309643 33.1542) (xy 67.309638 33.1542) (xy 67.281307 33.15141) (xy 67.252976 33.1542) (xy 66.515526 33.1542) + (xy 66.498755 33.122824) (xy 66.476905 33.0962) (xy 66.498755 33.069576) (xy 66.538405 32.995396) (xy 66.562822 32.914907) + (xy 66.571066 32.8312) (xy 66.571066 32.0912) (xy 66.562822 32.007493) (xy 66.538405 31.927004) (xy 66.498755 31.852824) + (xy 66.445395 31.787805) (xy 66.380376 31.734445) (xy 66.306196 31.694795) (xy 66.225707 31.670378) (xy 66.142 31.662134) + (xy 63.742 31.662134) (xy 63.658293 31.670378) (xy 63.577804 31.694795) (xy 63.503624 31.734445) (xy 63.438605 31.787805) + (xy 63.385245 31.852824) (xy 63.345595 31.927004) (xy 63.321178 32.007493) (xy 63.312934 32.0912) (xy 62.671066 32.0912) + (xy 62.662822 32.007493) (xy 62.638405 31.927004) (xy 62.598755 31.852824) (xy 62.545395 31.787805) (xy 62.480376 31.734445) + (xy 62.406196 31.694795) (xy 62.325707 31.670378) (xy 62.242 31.662134) (xy 59.842 31.662134) (xy 59.758293 31.670378) + (xy 59.677804 31.694795) (xy 59.603624 31.734445) (xy 59.538605 31.787805) (xy 59.485245 31.852824) (xy 59.445595 31.927004) + (xy 59.421178 32.007493) (xy 59.412934 32.0912) (xy 59.412934 32.8312) (xy 59.421178 32.914907) (xy 59.445595 32.995396) + (xy 59.477026 33.0542) (xy 57.488041 33.0542) (xy 57.454799 33.050926) (xy 57.421557 33.0542) (xy 57.421548 33.0542) + (xy 57.322085 33.063996) (xy 57.19447 33.102708) (xy 57.076859 33.165572) (xy 56.973773 33.250173) (xy 56.952574 33.276004) + (xy 55.628 34.600578) (xy 55.602173 34.621774) (xy 55.517572 34.72486) (xy 55.454708 34.842471) (xy 55.415996 34.970086) + (xy 55.4062 35.069549) (xy 55.4062 35.069555) (xy 55.402926 35.1028) (xy 55.4062 35.136045) (xy 55.406201 38.760777) + (xy 52.840783 41.326195) (xy 52.770794 41.297204) (xy 52.466121 41.2366) (xy 52.155479 41.2366) (xy 51.850806 41.297204) + (xy 51.563811 41.416081) (xy 51.305521 41.588664) (xy 51.085864 41.808321) (xy 50.913281 42.066611) (xy 50.794404 42.353606) + (xy 50.7338 42.658279) (xy 39.881012 42.658279) (xy 39.895591 27.350548) (xy 41.2862 27.350548) (xy 41.2862 27.513452) + (xy 41.317982 27.673227) (xy 41.380323 27.823731) (xy 41.470828 27.959181) (xy 41.586019 28.074372) (xy 41.721469 28.164877) + (xy 41.871973 28.227218) (xy 42.031748 28.259) (xy 42.194652 28.259) (xy 42.33013 28.232051) (xy 42.243923 28.361069) + (xy 42.181582 28.511573) (xy 42.1498 28.671348) (xy 42.1498 28.834252) (xy 42.181582 28.994027) (xy 42.243923 29.144531) + (xy 42.334428 29.279981) (xy 42.449619 29.395172) (xy 42.585069 29.485677) (xy 42.735573 29.548018) (xy 42.895348 29.5798) + (xy 43.058252 29.5798) (xy 43.218027 29.548018) (xy 43.368531 29.485677) (xy 43.503981 29.395172) (xy 43.619172 29.279981) + (xy 43.709677 29.144531) (xy 43.772018 28.994027) (xy 43.8038 28.834252) (xy 43.8038 28.671348) (xy 43.772018 28.511573) + (xy 43.756768 28.474756) (xy 51.282171 28.474756) (xy 51.398083 28.708976) (xy 51.668336 28.862149) (xy 51.963278 28.959654) + (xy 52.271576 28.997745) (xy 52.581381 28.974958) (xy 52.880788 28.892169) (xy 53.158291 28.75256) (xy 53.223517 28.708976) + (xy 53.339429 28.474756) (xy 52.3108 27.446127) (xy 51.282171 28.474756) (xy 43.756768 28.474756) (xy 43.709677 28.361069) + (xy 43.62347 28.232051) (xy 43.758948 28.259) (xy 43.921852 28.259) (xy 44.081627 28.227218) (xy 44.232131 28.164877) + (xy 44.367581 28.074372) (xy 44.482772 27.959181) (xy 44.573277 27.823731) (xy 44.635618 27.673227) (xy 44.6674 27.513452) + (xy 44.6674 27.374376) (xy 50.726655 27.374376) (xy 50.749442 27.684181) (xy 50.832231 27.983588) (xy 50.97184 28.261091) + (xy 51.015424 28.326317) (xy 51.249644 28.442229) (xy 52.278273 27.4136) (xy 52.343327 27.4136) (xy 53.371956 28.442229) + (xy 53.606176 28.326317) (xy 53.759349 28.056064) (xy 53.856854 27.761122) (xy 53.894945 27.452824) (xy 53.872158 27.143019) + (xy 53.789369 26.843612) (xy 53.64976 26.566109) (xy 53.606176 26.500883) (xy 53.371956 26.384971) (xy 52.343327 27.4136) + (xy 52.278273 27.4136) (xy 51.249644 26.384971) (xy 51.015424 26.500883) (xy 50.862251 26.771136) (xy 50.764746 27.066078) + (xy 50.726655 27.374376) (xy 44.6674 27.374376) (xy 44.6674 27.350548) (xy 44.635618 27.190773) (xy 44.573277 27.040269) + (xy 44.518429 26.958184) (xy 44.673348 26.989) (xy 44.836252 26.989) (xy 44.996027 26.957218) (xy 45.146531 26.894877) + (xy 45.281981 26.804372) (xy 45.397172 26.689181) (xy 45.487677 26.553731) (xy 45.550018 26.403227) (xy 45.560119 26.352444) + (xy 51.282171 26.352444) (xy 52.3108 27.381073) (xy 53.339429 26.352444) (xy 53.223517 26.118224) (xy 52.953264 25.965051) + (xy 52.658322 25.867546) (xy 52.350024 25.829455) (xy 52.040219 25.852242) (xy 51.740812 25.935031) (xy 51.463309 26.07464) + (xy 51.398083 26.118224) (xy 51.282171 26.352444) (xy 45.560119 26.352444) (xy 45.5818 26.243452) (xy 45.5818 26.080548) + (xy 45.550018 25.920773) (xy 45.487677 25.770269) (xy 45.397172 25.634819) (xy 45.281981 25.519628) (xy 45.146531 25.429123) + (xy 44.996027 25.366782) (xy 44.836252 25.335) (xy 44.673348 25.335) (xy 44.513573 25.366782) (xy 44.363069 25.429123) + (xy 44.227619 25.519628) (xy 44.112428 25.634819) (xy 44.021923 25.770269) (xy 43.959582 25.920773) (xy 43.9278 26.080548) + (xy 43.9278 26.243452) (xy 43.959582 26.403227) (xy 44.021923 26.553731) (xy 44.076771 26.635816) (xy 43.921852 26.605) + (xy 43.758948 26.605) (xy 43.662616 26.624162) (xy 43.709677 26.553731) (xy 43.772018 26.403227) (xy 43.8038 26.243452) + (xy 43.8038 26.080548) (xy 43.772018 25.920773) (xy 43.709677 25.770269) (xy 43.619172 25.634819) (xy 43.503981 25.519628) + (xy 43.368531 25.429123) (xy 43.218027 25.366782) (xy 43.058252 25.335) (xy 42.895348 25.335) (xy 42.735573 25.366782) + (xy 42.585069 25.429123) (xy 42.449619 25.519628) (xy 42.334428 25.634819) (xy 42.243923 25.770269) (xy 42.181582 25.920773) + (xy 42.1498 26.080548) (xy 42.1498 26.243452) (xy 42.181582 26.403227) (xy 42.243923 26.553731) (xy 42.290984 26.624162) + (xy 42.194652 26.605) (xy 42.031748 26.605) (xy 41.871973 26.636782) (xy 41.721469 26.699123) (xy 41.586019 26.789628) + (xy 41.470828 26.904819) (xy 41.380323 27.040269) (xy 41.317982 27.190773) (xy 41.2862 27.350548) (xy 39.895591 27.350548) + (xy 39.901803 20.828827) + ) + ) + ) +) diff --git a/kicad/filadry2.kicad_prl b/kicad/filadry2.kicad_prl new file mode 100644 index 0000000..f54857e --- /dev/null +++ b/kicad/filadry2.kicad_prl @@ -0,0 +1,77 @@ +{ + "board": { + "active_layer": 0, + "active_layer_preset": "", + "auto_track_width": true, + "hidden_nets": [], + "high_contrast_mode": 0, + "net_color_mode": 1, + "opacity": { + "pads": 1.0, + "tracks": 1.0, + "vias": 1.0, + "zones": 0.6 + }, + "ratsnest_display_mode": 0, + "selection_filter": { + "dimensions": true, + "footprints": true, + "graphics": true, + "keepouts": true, + "lockedItems": true, + "otherItems": true, + "pads": true, + "text": true, + "tracks": true, + "vias": true, + "zones": true + }, + "visible_items": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 32, + 33, + 34, + 35, + 36 + ], + "visible_layers": "0003fff_80000001", + "zone_display_mode": 0 + }, + "meta": { + "filename": "filadry2.kicad_prl", + "version": 3 + }, + "project": { + "files": [] + } +} diff --git a/kicad/filadry2.kicad_pro b/kicad/filadry2.kicad_pro new file mode 100644 index 0000000..e1eaa01 --- /dev/null +++ b/kicad/filadry2.kicad_pro @@ -0,0 +1,447 @@ +{ + "board": { + "design_settings": { + "defaults": { + "board_outline_line_width": 0.049999999999999996, + "copper_line_width": 0.19999999999999998, + "copper_text_italic": false, + "copper_text_size_h": 1.5, + "copper_text_size_v": 1.5, + "copper_text_thickness": 0.3, + "copper_text_upright": false, + "courtyard_line_width": 0.049999999999999996, + "dimension_precision": 4, + "dimension_units": 3, + "dimensions": { + "arrow_length": 1270000, + "extension_offset": 500000, + "keep_text_aligned": true, + "suppress_zeroes": false, + "text_position": 0, + "units_format": 1 + }, + "fab_line_width": 0.09999999999999999, + "fab_text_italic": false, + "fab_text_size_h": 1.0, + "fab_text_size_v": 1.0, + "fab_text_thickness": 0.15, + "fab_text_upright": false, + "other_line_width": 0.09999999999999999, + "other_text_italic": false, + "other_text_size_h": 1.0, + "other_text_size_v": 1.0, + "other_text_thickness": 0.15, + "other_text_upright": false, + "pads": { + "drill": 0.762, + "height": 1.524, + "width": 1.524 + }, + "silk_line_width": 0.12, + "silk_text_italic": false, + "silk_text_size_h": 1.0, + "silk_text_size_v": 1.0, + "silk_text_thickness": 0.15, + "silk_text_upright": false, + "zones": { + "45_degree_only": false, + "min_clearance": 0.3 + } + }, + "diff_pair_dimensions": [], + "drc_exclusions": [], + "meta": { + "filename": "board_design_settings.json", + "version": 2 + }, + "rule_severities": { + "annular_width": "error", + "clearance": "error", + "copper_edge_clearance": "error", + "courtyards_overlap": "error", + "diff_pair_gap_out_of_range": "error", + "diff_pair_uncoupled_length_too_long": "error", + "drill_out_of_range": "error", + "duplicate_footprints": "warning", + "extra_footprint": "warning", + "footprint_type_mismatch": "error", + "hole_clearance": "error", + "hole_near_hole": "error", + "invalid_outline": "error", + "item_on_disabled_layer": "error", + "items_not_allowed": "error", + "length_out_of_range": "error", + "malformed_courtyard": "error", + "microvia_drill_out_of_range": "error", + "missing_courtyard": "ignore", + "missing_footprint": "warning", + "net_conflict": "warning", + "npth_inside_courtyard": "ignore", + "padstack": "error", + "pth_inside_courtyard": "ignore", + "shorting_items": "error", + "silk_over_copper": "warning", + "silk_overlap": "warning", + "skew_out_of_range": "error", + "through_hole_pad_without_hole": "error", + "too_many_vias": "error", + "track_dangling": "warning", + "track_width": "error", + "tracks_crossing": "error", + "unconnected_items": "error", + "unresolved_variable": "error", + "via_dangling": "warning", + "zone_has_empty_net": "error", + "zones_intersect": "error" + }, + "rule_severitieslegacy_courtyards_overlap": true, + "rule_severitieslegacy_no_courtyard_defined": false, + "rules": { + "allow_blind_buried_vias": false, + "allow_microvias": false, + "max_error": 0.005, + "min_clearance": 0.0, + "min_copper_edge_clearance": 0.024999999999999998, + "min_hole_clearance": 0.25, + "min_hole_to_hole": 0.25, + "min_microvia_diameter": 0.19999999999999998, + "min_microvia_drill": 0.09999999999999999, + "min_silk_clearance": 0.0, + "min_through_hole_diameter": 0.3, + "min_track_width": 0.19999999999999998, + "min_via_annular_width": 0.049999999999999996, + "min_via_diameter": 0.39999999999999997, + "use_height_for_length_calcs": true + }, + "track_widths": [ + 0.0, + 0.25, + 0.3, + 0.5, + 0.7, + 1.0, + 1.25, + 1.5, + 1.75, + 1.905, + 2.0, + 2.5 + ], + "via_dimensions": [ + { + "diameter": 0.0, + "drill": 0.0 + }, + { + "diameter": 0.6, + "drill": 0.3 + }, + { + "diameter": 0.8, + "drill": 0.4 + } + ], + "zones_allow_external_fillets": false, + "zones_use_no_outline": true + }, + "layer_presets": [] + }, + "boards": [], + "cvpcb": { + "equivalence_files": [] + }, + "erc": { + "erc_exclusions": [], + "meta": { + "version": 0 + }, + "pin_map": [ + [ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 2 + ], + [ + 0, + 2, + 0, + 1, + 0, + 0, + 1, + 0, + 2, + 2, + 2, + 2 + ], + [ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 1, + 0, + 1, + 2 + ], + [ + 0, + 1, + 0, + 0, + 0, + 0, + 1, + 1, + 2, + 1, + 1, + 2 + ], + [ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 2 + ], + [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 2 + ], + [ + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 2 + ], + [ + 0, + 0, + 0, + 1, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 2 + ], + [ + 0, + 2, + 1, + 2, + 0, + 0, + 1, + 0, + 2, + 2, + 2, + 2 + ], + [ + 0, + 2, + 0, + 1, + 0, + 0, + 1, + 0, + 2, + 0, + 0, + 2 + ], + [ + 0, + 2, + 1, + 1, + 0, + 0, + 1, + 0, + 2, + 0, + 0, + 2 + ], + [ + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2 + ] + ], + "rule_severities": { + "bus_definition_conflict": "error", + "bus_entry_needed": "error", + "bus_label_syntax": "error", + "bus_to_bus_conflict": "error", + "bus_to_net_conflict": "error", + "different_unit_footprint": "error", + "different_unit_net": "error", + "duplicate_reference": "error", + "duplicate_sheet_names": "error", + "extra_units": "error", + "global_label_dangling": "warning", + "hier_label_mismatch": "error", + "label_dangling": "error", + "lib_symbol_issues": "warning", + "multiple_net_names": "warning", + "net_not_bus_member": "warning", + "no_connect_connected": "warning", + "no_connect_dangling": "warning", + "pin_not_connected": "error", + "pin_not_driven": "error", + "pin_to_pin": "warning", + "power_pin_not_driven": "error", + "similar_labels": "warning", + "unannotated": "error", + "unit_value_mismatch": "error", + "unresolved_variable": "error", + "wire_dangling": "error" + } + }, + "libraries": { + "pinned_footprint_libs": [], + "pinned_symbol_libs": [] + }, + "meta": { + "filename": "filadry2.kicad_pro", + "version": 1 + }, + "net_settings": { + "classes": [ + { + "bus_width": 12.0, + "clearance": 0.2, + "diff_pair_gap": 0.25, + "diff_pair_via_gap": 0.25, + "diff_pair_width": 0.2, + "line_style": 0, + "microvia_diameter": 0.3, + "microvia_drill": 0.1, + "name": "Default", + "pcb_color": "rgba(0, 0, 0, 0.000)", + "schematic_color": "rgba(0, 0, 0, 0.000)", + "track_width": 0.25, + "via_diameter": 0.8, + "via_drill": 0.4, + "wire_width": 6.0 + } + ], + "meta": { + "version": 2 + }, + "net_colors": null + }, + "pcbnew": { + "last_paths": { + "gencad": "", + "idf": "", + "netlist": "", + "specctra_dsn": "", + "step": "", + "vrml": "" + }, + "page_layout_descr_file": "" + }, + "schematic": { + "annotate_start_num": 0, + "drawing": { + "default_line_thickness": 6.0, + "default_text_size": 50.0, + "field_names": [], + "intersheets_ref_own_page": false, + "intersheets_ref_prefix": "", + "intersheets_ref_short": false, + "intersheets_ref_show": false, + "intersheets_ref_suffix": "", + "junction_size_choice": 3, + "label_size_ratio": 0.25, + "pin_symbol_size": 0.0, + "text_offset_ratio": 0.08 + }, + "legacy_lib_dir": "", + "legacy_lib_list": [], + "meta": { + "version": 1 + }, + "net_format_name": "Pcbnew", + "ngspice": { + "fix_include_paths": true, + "fix_passive_vals": false, + "meta": { + "version": 0 + }, + "model_mode": 0, + "workbook_filename": "" + }, + "page_layout_descr_file": "", + "plot_directory": "", + "spice_adjust_passive_values": false, + "spice_external_command": "spice \"%I\"", + "subpart_first_id": 65, + "subpart_id_separator": 0 + }, + "sheets": [ + [ + "6c4cd932-bbbf-4627-8ac8-e6a48ffb3f1a", + "" + ] + ], + "text_variables": {} +} diff --git a/kicad/filadry2.kicad_sch b/kicad/filadry2.kicad_sch new file mode 100644 index 0000000..7dc715e --- /dev/null +++ b/kicad/filadry2.kicad_sch @@ -0,0 +1,4099 @@ +(kicad_sch (version 20211123) (generator eeschema) + + (uuid 6c4cd932-bbbf-4627-8ac8-e6a48ffb3f1a) + + (paper "A4") + + (lib_symbols + (symbol "Connector:Screw_Terminal_01x02" (pin_names (offset 1.016) hide) (in_bom yes) (on_board yes) + (property "Reference" "J" (id 0) (at 0 2.54 0) + (effects (font (size 1.27 1.27))) + ) + (property "Value" "Screw_Terminal_01x02" (id 1) (at 0 -5.08 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "" (id 2) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "screw terminal" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "Generic screw terminal, single row, 01x02, script generated (kicad-library-utils/schlib/autogen/connector/)" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_fp_filters" "TerminalBlock*:*" (id 6) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "Screw_Terminal_01x02_1_1" + (rectangle (start -1.27 1.27) (end 1.27 -3.81) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type background)) + ) + (circle (center 0 -2.54) (radius 0.635) + (stroke (width 0.1524) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy -0.5334 -2.2098) + (xy 0.3302 -3.048) + ) + (stroke (width 0.1524) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy -0.5334 0.3302) + (xy 0.3302 -0.508) + ) + (stroke (width 0.1524) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy -0.3556 -2.032) + (xy 0.508 -2.8702) + ) + (stroke (width 0.1524) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy -0.3556 0.508) + (xy 0.508 -0.3302) + ) + (stroke (width 0.1524) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (circle (center 0 0) (radius 0.635) + (stroke (width 0.1524) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (pin passive line (at -5.08 0 0) (length 3.81) + (name "Pin_1" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at -5.08 -2.54 0) (length 3.81) + (name "Pin_2" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "Connector_Generic:Conn_01x04" (pin_names (offset 1.016) hide) (in_bom yes) (on_board yes) + (property "Reference" "J" (id 0) (at 0 5.08 0) + (effects (font (size 1.27 1.27))) + ) + (property "Value" "Conn_01x04" (id 1) (at 0 -7.62 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "" (id 2) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "connector" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "Generic connector, single row, 01x04, script generated (kicad-library-utils/schlib/autogen/connector/)" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_fp_filters" "Connector*:*_1x??_*" (id 6) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "Conn_01x04_1_1" + (rectangle (start -1.27 -4.953) (end 0 -5.207) + (stroke (width 0.1524) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (rectangle (start -1.27 -2.413) (end 0 -2.667) + (stroke (width 0.1524) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (rectangle (start -1.27 0.127) (end 0 -0.127) + (stroke (width 0.1524) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (rectangle (start -1.27 2.667) (end 0 2.413) + (stroke (width 0.1524) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (rectangle (start -1.27 3.81) (end 1.27 -6.35) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type background)) + ) + (pin passive line (at -5.08 2.54 0) (length 3.81) + (name "Pin_1" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at -5.08 0 0) (length 3.81) + (name "Pin_2" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at -5.08 -2.54 0) (length 3.81) + (name "Pin_3" (effects (font (size 1.27 1.27)))) + (number "3" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at -5.08 -5.08 0) (length 3.81) + (name "Pin_4" (effects (font (size 1.27 1.27)))) + (number "4" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "Connector_Generic:Conn_01x08" (pin_names (offset 1.016) hide) (in_bom yes) (on_board yes) + (property "Reference" "J" (id 0) (at 0 10.16 0) + (effects (font (size 1.27 1.27))) + ) + (property "Value" "Conn_01x08" (id 1) (at 0 -12.7 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "" (id 2) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "connector" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "Generic connector, single row, 01x08, script generated (kicad-library-utils/schlib/autogen/connector/)" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_fp_filters" "Connector*:*_1x??_*" (id 6) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "Conn_01x08_1_1" + (rectangle (start -1.27 -10.033) (end 0 -10.287) + (stroke (width 0.1524) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (rectangle (start -1.27 -7.493) (end 0 -7.747) + (stroke (width 0.1524) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (rectangle (start -1.27 -4.953) (end 0 -5.207) + (stroke (width 0.1524) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (rectangle (start -1.27 -2.413) (end 0 -2.667) + (stroke (width 0.1524) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (rectangle (start -1.27 0.127) (end 0 -0.127) + (stroke (width 0.1524) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (rectangle (start -1.27 2.667) (end 0 2.413) + (stroke (width 0.1524) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (rectangle (start -1.27 5.207) (end 0 4.953) + (stroke (width 0.1524) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (rectangle (start -1.27 7.747) (end 0 7.493) + (stroke (width 0.1524) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (rectangle (start -1.27 8.89) (end 1.27 -11.43) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type background)) + ) + (pin passive line (at -5.08 7.62 0) (length 3.81) + (name "Pin_1" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at -5.08 5.08 0) (length 3.81) + (name "Pin_2" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at -5.08 2.54 0) (length 3.81) + (name "Pin_3" (effects (font (size 1.27 1.27)))) + (number "3" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at -5.08 0 0) (length 3.81) + (name "Pin_4" (effects (font (size 1.27 1.27)))) + (number "4" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at -5.08 -2.54 0) (length 3.81) + (name "Pin_5" (effects (font (size 1.27 1.27)))) + (number "5" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at -5.08 -5.08 0) (length 3.81) + (name "Pin_6" (effects (font (size 1.27 1.27)))) + (number "6" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at -5.08 -7.62 0) (length 3.81) + (name "Pin_7" (effects (font (size 1.27 1.27)))) + (number "7" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at -5.08 -10.16 0) (length 3.81) + (name "Pin_8" (effects (font (size 1.27 1.27)))) + (number "8" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "Connector_Generic:Conn_02x07_Odd_Even" (pin_names (offset 1.016) hide) (in_bom yes) (on_board yes) + (property "Reference" "J" (id 0) (at 1.27 10.16 0) + (effects (font (size 1.27 1.27))) + ) + (property "Value" "Conn_02x07_Odd_Even" (id 1) (at 1.27 -10.16 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "" (id 2) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "connector" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "Generic connector, double row, 02x07, odd/even pin numbering scheme (row 1 odd numbers, row 2 even numbers), script generated (kicad-library-utils/schlib/autogen/connector/)" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_fp_filters" "Connector*:*_2x??_*" (id 6) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "Conn_02x07_Odd_Even_1_1" + (rectangle (start -1.27 -7.493) (end 0 -7.747) + (stroke (width 0.1524) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (rectangle (start -1.27 -4.953) (end 0 -5.207) + (stroke (width 0.1524) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (rectangle (start -1.27 -2.413) (end 0 -2.667) + (stroke (width 0.1524) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (rectangle (start -1.27 0.127) (end 0 -0.127) + (stroke (width 0.1524) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (rectangle (start -1.27 2.667) (end 0 2.413) + (stroke (width 0.1524) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (rectangle (start -1.27 5.207) (end 0 4.953) + (stroke (width 0.1524) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (rectangle (start -1.27 7.747) (end 0 7.493) + (stroke (width 0.1524) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (rectangle (start -1.27 8.89) (end 3.81 -8.89) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type background)) + ) + (rectangle (start 3.81 -7.493) (end 2.54 -7.747) + (stroke (width 0.1524) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (rectangle (start 3.81 -4.953) (end 2.54 -5.207) + (stroke (width 0.1524) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (rectangle (start 3.81 -2.413) (end 2.54 -2.667) + (stroke (width 0.1524) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (rectangle (start 3.81 0.127) (end 2.54 -0.127) + (stroke (width 0.1524) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (rectangle (start 3.81 2.667) (end 2.54 2.413) + (stroke (width 0.1524) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (rectangle (start 3.81 5.207) (end 2.54 4.953) + (stroke (width 0.1524) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (rectangle (start 3.81 7.747) (end 2.54 7.493) + (stroke (width 0.1524) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (pin passive line (at -5.08 7.62 0) (length 3.81) + (name "Pin_1" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 7.62 -2.54 180) (length 3.81) + (name "Pin_10" (effects (font (size 1.27 1.27)))) + (number "10" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at -5.08 -5.08 0) (length 3.81) + (name "Pin_11" (effects (font (size 1.27 1.27)))) + (number "11" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 7.62 -5.08 180) (length 3.81) + (name "Pin_12" (effects (font (size 1.27 1.27)))) + (number "12" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at -5.08 -7.62 0) (length 3.81) + (name "Pin_13" (effects (font (size 1.27 1.27)))) + (number "13" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 7.62 -7.62 180) (length 3.81) + (name "Pin_14" (effects (font (size 1.27 1.27)))) + (number "14" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 7.62 7.62 180) (length 3.81) + (name "Pin_2" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at -5.08 5.08 0) (length 3.81) + (name "Pin_3" (effects (font (size 1.27 1.27)))) + (number "3" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 7.62 5.08 180) (length 3.81) + (name "Pin_4" (effects (font (size 1.27 1.27)))) + (number "4" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at -5.08 2.54 0) (length 3.81) + (name "Pin_5" (effects (font (size 1.27 1.27)))) + (number "5" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 7.62 2.54 180) (length 3.81) + (name "Pin_6" (effects (font (size 1.27 1.27)))) + (number "6" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at -5.08 0 0) (length 3.81) + (name "Pin_7" (effects (font (size 1.27 1.27)))) + (number "7" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 7.62 0 180) (length 3.81) + (name "Pin_8" (effects (font (size 1.27 1.27)))) + (number "8" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at -5.08 -2.54 0) (length 3.81) + (name "Pin_9" (effects (font (size 1.27 1.27)))) + (number "9" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "Converter_ACDC:HLK-PM03" (in_bom yes) (on_board yes) + (property "Reference" "PS" (id 0) (at 0 5.08 0) + (effects (font (size 1.27 1.27))) + ) + (property "Value" "HLK-PM03" (id 1) (at 0 -5.08 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "Converter_ACDC:Converter_ACDC_HiLink_HLK-PMxx" (id 2) (at 0 -7.62 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "http://www.hlktech.net/product_detail.php?ProId=59" (id 3) (at 10.16 -8.89 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "AC/DC module power supply" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "Compact AC/DC board mount power module 3W 3V3" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_fp_filters" "Converter*ACDC*HiLink*HLK?PM*" (id 6) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "HLK-PM03_0_1" + (rectangle (start -7.62 3.81) (end 7.62 -3.81) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type background)) + ) + (arc (start -5.334 0.635) (mid -4.699 0.2495) (end -4.064 0.635) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (arc (start -2.794 0.635) (mid -3.429 1.0072) (end -4.064 0.635) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy -5.334 -0.635) + (xy -2.794 -0.635) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 0 -2.54) + (xy 0 -3.175) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 0 -1.27) + (xy 0 -1.905) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 0 0) + (xy 0 -0.635) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 0 1.27) + (xy 0 0.635) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 0 2.54) + (xy 0 1.905) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 0 3.81) + (xy 0 3.175) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 2.794 -0.635) + (xy 5.334 -0.635) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 2.794 0.635) + (xy 3.302 0.635) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 3.81 0.635) + (xy 4.318 0.635) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 4.826 0.635) + (xy 5.334 0.635) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + ) + (symbol "HLK-PM03_1_1" + (pin power_in line (at -10.16 2.54 0) (length 2.54) + (name "AC/L" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at -10.16 -2.54 0) (length 2.54) + (name "AC/N" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + (pin power_out line (at 10.16 -2.54 180) (length 2.54) + (name "-Vout" (effects (font (size 1.27 1.27)))) + (number "3" (effects (font (size 1.27 1.27)))) + ) + (pin power_out line (at 10.16 2.54 180) (length 2.54) + (name "+Vout" (effects (font (size 1.27 1.27)))) + (number "4" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "Device:Buzzer" (pin_names (offset 0.0254) hide) (in_bom yes) (on_board yes) + (property "Reference" "BZ" (id 0) (at 3.81 1.27 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "Buzzer" (id 1) (at 3.81 -1.27 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "" (id 2) (at -0.635 2.54 90) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at -0.635 2.54 90) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "quartz resonator ceramic" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "Buzzer, polarized" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_fp_filters" "*Buzzer*" (id 6) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "Buzzer_0_1" + (arc (start 0 -3.175) (mid 3.175 0) (end 0 3.175) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy -1.651 1.905) + (xy -1.143 1.905) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy -1.397 2.159) + (xy -1.397 1.651) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 0 3.175) + (xy 0 -3.175) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + ) + (symbol "Buzzer_1_1" + (pin passive line (at -2.54 2.54 0) (length 2.54) + (name "-" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at -2.54 -2.54 0) (length 2.54) + (name "+" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "Device:C_Small" (pin_numbers hide) (pin_names (offset 0.254) hide) (in_bom yes) (on_board yes) + (property "Reference" "C" (id 0) (at 0.254 1.778 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "C_Small" (id 1) (at 0.254 -2.032 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "" (id 2) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "capacitor cap" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "Unpolarized capacitor, small symbol" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_fp_filters" "C_*" (id 6) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "C_Small_0_1" + (polyline + (pts + (xy -1.524 -0.508) + (xy 1.524 -0.508) + ) + (stroke (width 0.3302) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy -1.524 0.508) + (xy 1.524 0.508) + ) + (stroke (width 0.3048) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + ) + (symbol "C_Small_1_1" + (pin passive line (at 0 2.54 270) (length 2.032) + (name "~" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 0 -2.54 90) (length 2.032) + (name "~" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "Device:Crystal_Small" (pin_numbers hide) (pin_names (offset 1.016) hide) (in_bom yes) (on_board yes) + (property "Reference" "Y" (id 0) (at 0 2.54 0) + (effects (font (size 1.27 1.27))) + ) + (property "Value" "Crystal_Small" (id 1) (at 0 -2.54 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "" (id 2) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "quartz ceramic resonator oscillator" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "Two pin crystal, small symbol" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_fp_filters" "Crystal*" (id 6) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "Crystal_Small_0_1" + (rectangle (start -0.762 -1.524) (end 0.762 1.524) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy -1.27 -0.762) + (xy -1.27 0.762) + ) + (stroke (width 0.381) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 1.27 -0.762) + (xy 1.27 0.762) + ) + (stroke (width 0.381) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + ) + (symbol "Crystal_Small_1_1" + (pin passive line (at -2.54 0 0) (length 1.27) + (name "1" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 2.54 0 180) (length 1.27) + (name "2" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "Device:Q_NPN_BEC" (pin_names (offset 0) hide) (in_bom yes) (on_board yes) + (property "Reference" "Q" (id 0) (at 5.08 1.27 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "Q_NPN_BEC" (id 1) (at 5.08 -1.27 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "" (id 2) (at 5.08 2.54 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "transistor NPN" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "NPN transistor, base/emitter/collector" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "Q_NPN_BEC_0_1" + (polyline + (pts + (xy 0.635 0.635) + (xy 2.54 2.54) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 0.635 -0.635) + (xy 2.54 -2.54) + (xy 2.54 -2.54) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 0.635 1.905) + (xy 0.635 -1.905) + (xy 0.635 -1.905) + ) + (stroke (width 0.508) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 1.27 -1.778) + (xy 1.778 -1.27) + (xy 2.286 -2.286) + (xy 1.27 -1.778) + (xy 1.27 -1.778) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type outline)) + ) + (circle (center 1.27 0) (radius 2.8194) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + ) + (symbol "Q_NPN_BEC_1_1" + (pin input line (at -5.08 0 0) (length 5.715) + (name "B" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 2.54 -5.08 90) (length 2.54) + (name "E" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 2.54 5.08 270) (length 2.54) + (name "C" (effects (font (size 1.27 1.27)))) + (number "3" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "Device:R" (pin_numbers hide) (pin_names (offset 0)) (in_bom yes) (on_board yes) + (property "Reference" "R" (id 0) (at 2.032 0 90) + (effects (font (size 1.27 1.27))) + ) + (property "Value" "R" (id 1) (at 0 0 90) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "" (id 2) (at -1.778 0 90) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "R res resistor" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "Resistor" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_fp_filters" "R_*" (id 6) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "R_0_1" + (rectangle (start -1.016 -2.54) (end 1.016 2.54) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + ) + (symbol "R_1_1" + (pin passive line (at 0 3.81 270) (length 1.27) + (name "~" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 0 -3.81 90) (length 1.27) + (name "~" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "Device:R_Small" (pin_numbers hide) (pin_names (offset 0.254) hide) (in_bom yes) (on_board yes) + (property "Reference" "R" (id 0) (at 0.762 0.508 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "R_Small" (id 1) (at 0.762 -1.016 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "" (id 2) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "R resistor" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "Resistor, small symbol" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_fp_filters" "R_*" (id 6) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "R_Small_0_1" + (rectangle (start -0.762 1.778) (end 0.762 -1.778) + (stroke (width 0.2032) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + ) + (symbol "R_Small_1_1" + (pin passive line (at 0 2.54 270) (length 0.762) + (name "~" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 0 -2.54 90) (length 0.762) + (name "~" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "Isolator:LTV-814" (pin_names (offset 1.016)) (in_bom yes) (on_board yes) + (property "Reference" "U" (id 0) (at -5.08 5.08 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "LTV-814" (id 1) (at 0 5.08 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Package_DIP:DIP-4_W7.62mm" (id 2) (at -5.08 -5.08 0) + (effects (font (size 1.27 1.27) italic) (justify left) hide) + ) + (property "Datasheet" "https://optoelectronics.liteon.com/upload/download/DS-70-96-0013/LTV-8X4%20series%20201509.pdf" (id 3) (at 1.905 0 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + (property "ki_keywords" "NPN AC DC Optocoupler" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "AC/DC Optocoupler, Vce 35V, CTR 20%, DIP4" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_fp_filters" "DIP*W7.62mm*" (id 6) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "LTV-814_0_1" + (rectangle (start -5.08 3.81) (end 5.08 -3.81) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type background)) + ) + (circle (center -3.175 -2.54) (radius 0.127) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (circle (center -3.175 2.54) (radius 0.127) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy -3.175 2.54) + (xy -3.175 -2.54) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy -1.905 -0.635) + (xy -0.635 -0.635) + ) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 2.54 0.635) + (xy 4.445 2.54) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 4.445 -2.54) + (xy 2.54 -0.635) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type outline)) + ) + (polyline + (pts + (xy 4.445 -2.54) + (xy 5.08 -2.54) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 4.445 2.54) + (xy 5.08 2.54) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy -5.08 2.54) + (xy -1.27 2.54) + (xy -1.27 -0.762) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy -1.27 -0.635) + (xy -1.27 -2.54) + (xy -5.08 -2.54) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 2.54 1.905) + (xy 2.54 -1.905) + (xy 2.54 -1.905) + ) + (stroke (width 0.508) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy -1.27 -0.635) + (xy -1.905 0.635) + (xy -0.635 0.635) + (xy -1.27 -0.635) + ) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 0.127 -0.508) + (xy 1.397 -0.508) + (xy 1.016 -0.635) + (xy 1.016 -0.381) + (xy 1.397 -0.508) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 0.127 0.508) + (xy 1.397 0.508) + (xy 1.016 0.381) + (xy 1.016 0.635) + (xy 1.397 0.508) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 3.048 -1.651) + (xy 3.556 -1.143) + (xy 4.064 -2.159) + (xy 3.048 -1.651) + (xy 3.048 -1.651) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type outline)) + ) + ) + (symbol "LTV-814_1_1" + (polyline + (pts + (xy -3.81 0.635) + (xy -2.54 0.635) + ) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy -3.175 0.635) + (xy -3.81 -0.635) + (xy -2.54 -0.635) + (xy -3.175 0.635) + ) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (pin passive line (at -7.62 2.54 0) (length 2.54) + (name "~" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at -7.62 -2.54 0) (length 2.54) + (name "~" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 7.62 -2.54 180) (length 2.54) + (name "~" (effects (font (size 1.27 1.27)))) + (number "3" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 7.62 2.54 180) (length 2.54) + (name "~" (effects (font (size 1.27 1.27)))) + (number "4" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "Mechanical:MountingHole" (pin_names (offset 1.016)) (in_bom yes) (on_board yes) + (property "Reference" "H" (id 0) (at 0 5.08 0) + (effects (font (size 1.27 1.27))) + ) + (property "Value" "MountingHole" (id 1) (at 0 3.175 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "" (id 2) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "mounting hole" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "Mounting Hole without connection" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_fp_filters" "MountingHole*" (id 6) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "MountingHole_0_1" + (circle (center 0 0) (radius 1.27) + (stroke (width 1.27) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + ) + ) + (symbol "Relay_SolidState:MOC3023M" (in_bom yes) (on_board yes) + (property "Reference" "U" (id 0) (at -5.334 4.826 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "MOC3023M" (id 1) (at 0 5.08 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "" (id 2) (at -5.08 -5.08 0) + (effects (font (size 1.27 1.27) italic) (justify left) hide) + ) + (property "Datasheet" "https://www.onsemi.com/pub/Collateral/MOC3023M-D.PDF" (id 3) (at 0 0 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + (property "ki_keywords" "Opto-Triac Opto Triac Random Phase" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "Random Phase Opto-Triac, Vdrm 400V, Ift 5mA, DIP6" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_fp_filters" "DIP*W7.62mm* SMDIP*W9.53mm* DIP*W10.16mm*" (id 6) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "MOC3023M_0_1" + (rectangle (start -5.08 3.81) (end 5.08 -3.81) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type background)) + ) + (polyline + (pts + (xy -3.175 -0.635) + (xy -1.905 -0.635) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 1.524 -0.635) + (xy 1.524 0.635) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 3.048 0.635) + (xy 3.048 -0.635) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 2.286 -0.635) + (xy 2.286 -2.54) + (xy 5.08 -2.54) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 2.286 0.635) + (xy 2.286 2.54) + (xy 5.08 2.54) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy -5.08 2.54) + (xy -2.54 2.54) + (xy -2.54 -2.54) + (xy -5.08 -2.54) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy -2.54 -0.635) + (xy -3.175 0.635) + (xy -1.905 0.635) + (xy -2.54 -0.635) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 0.889 -0.635) + (xy 3.683 -0.635) + (xy 3.048 0.635) + (xy 2.413 -0.635) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 3.683 0.635) + (xy 0.889 0.635) + (xy 1.524 -0.635) + (xy 2.159 0.635) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy -1.143 -0.508) + (xy 0.127 -0.508) + (xy -0.254 -0.635) + (xy -0.254 -0.381) + (xy 0.127 -0.508) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy -1.143 0.508) + (xy 0.127 0.508) + (xy -0.254 0.381) + (xy -0.254 0.635) + (xy 0.127 0.508) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + ) + (symbol "MOC3023M_1_1" + (pin passive line (at -7.62 2.54 0) (length 2.54) + (name "~" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at -7.62 -2.54 0) (length 2.54) + (name "~" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + (pin no_connect line (at -5.08 0 0) (length 2.54) hide + (name "NC" (effects (font (size 1.27 1.27)))) + (number "3" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 7.62 -2.54 180) (length 2.54) + (name "~" (effects (font (size 1.27 1.27)))) + (number "4" (effects (font (size 1.27 1.27)))) + ) + (pin no_connect line (at 5.08 0 180) (length 2.54) hide + (name "NC" (effects (font (size 1.27 1.27)))) + (number "5" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 7.62 2.54 180) (length 2.54) + (name "~" (effects (font (size 1.27 1.27)))) + (number "6" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "Triac_Thyristor:BT138-800" (pin_names (offset 0)) (in_bom yes) (on_board yes) + (property "Reference" "Q" (id 0) (at 5.08 1.905 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "BT138-800" (id 1) (at 5.08 0 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Package_TO_SOT_THT:TO-220-3_Vertical" (id 2) (at 5.08 -1.905 0) + (effects (font (size 1.27 1.27) italic) (justify left) hide) + ) + (property "Datasheet" "https://assets.nexperia.com/documents/data-sheet/BT138_SER_D_E.pdf" (id 3) (at 0 0 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + (property "ki_keywords" "Triac" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "12A RMS, 800V Off-State Voltage, Triac, TO-220" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_fp_filters" "TO?220*" (id 6) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "BT138-800_0_1" + (polyline + (pts + (xy -2.54 -1.27) + (xy 2.54 -1.27) + ) + (stroke (width 0.2032) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy -2.54 1.27) + (xy 2.54 1.27) + ) + (stroke (width 0.2032) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy -1.27 -2.54) + (xy -0.635 -1.27) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy -2.54 1.27) + (xy -1.27 -1.27) + (xy 0 1.27) + ) + (stroke (width 0.2032) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 0 -1.27) + (xy 1.27 1.27) + (xy 2.54 -1.27) + ) + (stroke (width 0.2032) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + ) + (symbol "BT138-800_1_1" + (pin passive line (at 0 -3.81 90) (length 2.54) + (name "A1" (effects (font (size 0.635 0.635)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin passive line (at 0 3.81 270) (length 2.54) + (name "A2" (effects (font (size 0.635 0.635)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -3.81 -2.54 0) (length 2.54) + (name "G" (effects (font (size 0.635 0.635)))) + (number "3" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "my_additions:STM32G070RBTx" (in_bom yes) (on_board yes) + (property "Reference" "U" (id 0) (at -13.97 49.53 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "STM32G070RBTx" (id 1) (at -8.255 34.29 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "Package_QFP:LQFP-64_10x10mm_P0.5mm" (id 2) (at -1.27 -50.165 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + (property "Datasheet" "" (id 3) (at 45.72 -66.04 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "ARM Cortex-M0 STM32G0 STM32G0x1" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "Mainstream Value line, Arm Cortex-M0+ MCU with 128 Kbytes of Flash memory, 36 Kbytes RAM, 64 MHz CPU, 4x USART, timers, ADC, comm. I/F, 2-3.6V, LQFP-64" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_fp_filters" "LQFP-64*10x10mm*P0.5mm*" (id 6) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "STM32G070RBTx_0_1" + (rectangle (start -13.97 48.26) (end 13.97 -48.26) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type background)) + ) + ) + (symbol "STM32G070RBTx_1_1" + (pin bidirectional line (at -16.51 -35.56 0) (length 2.54) + (name "PC11" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 45.72 0) (length 2.54) + (name "PF0-OSC_IN" (effects (font (size 1.27 1.27)))) + (number "10" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 43.18 0) (length 2.54) + (name "PF1-OSC_OUT" (effects (font (size 1.27 1.27)))) + (number "11" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -16.51 39.37 0) (length 2.54) + (name "NRST" (effects (font (size 1.27 1.27)))) + (number "12" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -7.62 0) (length 2.54) + (name "PC0" (effects (font (size 1.27 1.27)))) + (number "13" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -10.16 0) (length 2.54) + (name "PC1" (effects (font (size 1.27 1.27)))) + (number "14" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -12.7 0) (length 2.54) + (name "PC2" (effects (font (size 1.27 1.27)))) + (number "15" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -15.24 0) (length 2.54) + (name "PC3" (effects (font (size 1.27 1.27)))) + (number "16" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 35.56 0) (length 2.54) + (name "PA0" (effects (font (size 1.27 1.27)))) + (number "17" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 33.02 0) (length 2.54) + (name "PA1" (effects (font (size 1.27 1.27)))) + (number "18" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 30.48 0) (length 2.54) + (name "PA2" (effects (font (size 1.27 1.27)))) + (number "19" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -38.1 0) (length 2.54) + (name "PC12" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 27.94 0) (length 2.54) + (name "PA3" (effects (font (size 1.27 1.27)))) + (number "20" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 25.4 0) (length 2.54) + (name "PA4" (effects (font (size 1.27 1.27)))) + (number "21" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 22.86 0) (length 2.54) + (name "PA5" (effects (font (size 1.27 1.27)))) + (number "22" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 20.32 0) (length 2.54) + (name "PA6" (effects (font (size 1.27 1.27)))) + (number "23" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 17.78 0) (length 2.54) + (name "PA7" (effects (font (size 1.27 1.27)))) + (number "24" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -17.78 0) (length 2.54) + (name "PC4" (effects (font (size 1.27 1.27)))) + (number "25" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -20.32 0) (length 2.54) + (name "PC5" (effects (font (size 1.27 1.27)))) + (number "26" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 16.51 35.56 180) (length 2.54) + (name "PB0" (effects (font (size 1.27 1.27)))) + (number "27" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 16.51 33.02 180) (length 2.54) + (name "PB1" (effects (font (size 1.27 1.27)))) + (number "28" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 16.51 30.48 180) (length 2.54) + (name "PB2" (effects (font (size 1.27 1.27)))) + (number "29" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -40.64 0) (length 2.54) + (name "PC13" (effects (font (size 1.27 1.27)))) + (number "3" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 16.51 10.16 180) (length 2.54) + (name "PB10" (effects (font (size 1.27 1.27)))) + (number "30" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 16.51 7.62 180) (length 2.54) + (name "PB11" (effects (font (size 1.27 1.27)))) + (number "31" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 16.51 5.08 180) (length 2.54) + (name "PB12" (effects (font (size 1.27 1.27)))) + (number "32" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 16.51 2.54 180) (length 2.54) + (name "PB13" (effects (font (size 1.27 1.27)))) + (number "33" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 16.51 0 180) (length 2.54) + (name "PB14" (effects (font (size 1.27 1.27)))) + (number "34" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 16.51 -2.54 180) (length 2.54) + (name "PB15" (effects (font (size 1.27 1.27)))) + (number "35" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 15.24 0) (length 2.54) + (name "PA8" (effects (font (size 1.27 1.27)))) + (number "36" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 12.7 0) (length 2.54) + (name "PA9" (effects (font (size 1.27 1.27)))) + (number "37" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -22.86 0) (length 2.54) + (name "PC6" (effects (font (size 1.27 1.27)))) + (number "38" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -25.4 0) (length 2.54) + (name "PC7" (effects (font (size 1.27 1.27)))) + (number "39" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -43.18 0) (length 2.54) + (name "PC14-OSC32_IN" (effects (font (size 1.27 1.27)))) + (number "4" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 16.51 -27.94 180) (length 2.54) + (name "PD8" (effects (font (size 1.27 1.27)))) + (number "40" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 16.51 -30.48 180) (length 2.54) + (name "PD9" (effects (font (size 1.27 1.27)))) + (number "41" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 10.16 0) (length 2.54) + (name "PA10" (effects (font (size 1.27 1.27)))) + (number "42" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 7.62 0) (length 2.54) + (name "PA11[PA9]" (effects (font (size 1.27 1.27)))) + (number "43" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 5.08 0) (length 2.54) + (name "PA12[PA10]" (effects (font (size 1.27 1.27)))) + (number "44" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 2.54 0) (length 2.54) + (name "PA13-SWDIO" (effects (font (size 1.27 1.27)))) + (number "45" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 0 0) (length 2.54) + (name "PA14-BOOT0-SWCLK" (effects (font (size 1.27 1.27)))) + (number "46" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -2.54 0) (length 2.54) + (name "PA15" (effects (font (size 1.27 1.27)))) + (number "47" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -27.94 0) (length 2.54) + (name "PC8" (effects (font (size 1.27 1.27)))) + (number "48" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -30.48 0) (length 2.54) + (name "PC9" (effects (font (size 1.27 1.27)))) + (number "49" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -45.72 0) (length 2.54) + (name "PC15-OSC32_OUT" (effects (font (size 1.27 1.27)))) + (number "5" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 16.51 -7.62 180) (length 2.54) + (name "PD0" (effects (font (size 1.27 1.27)))) + (number "50" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 16.51 -10.16 180) (length 2.54) + (name "PD1" (effects (font (size 1.27 1.27)))) + (number "51" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 16.51 -12.7 180) (length 2.54) + (name "PD2" (effects (font (size 1.27 1.27)))) + (number "52" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 16.51 -15.24 180) (length 2.54) + (name "PD3" (effects (font (size 1.27 1.27)))) + (number "53" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 16.51 -17.78 180) (length 2.54) + (name "PD4" (effects (font (size 1.27 1.27)))) + (number "54" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 16.51 -20.32 180) (length 2.54) + (name "PD5" (effects (font (size 1.27 1.27)))) + (number "55" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 16.51 -22.86 180) (length 2.54) + (name "PD6" (effects (font (size 1.27 1.27)))) + (number "56" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 16.51 27.94 180) (length 2.54) + (name "PB3" (effects (font (size 1.27 1.27)))) + (number "57" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 16.51 25.4 180) (length 2.54) + (name "PB4" (effects (font (size 1.27 1.27)))) + (number "58" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 16.51 22.86 180) (length 2.54) + (name "PB5" (effects (font (size 1.27 1.27)))) + (number "59" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at 1.27 50.8 270) (length 2.54) + (name "VBAT" (effects (font (size 1.27 1.27)))) + (number "6" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 16.51 20.32 180) (length 2.54) + (name "PB6" (effects (font (size 1.27 1.27)))) + (number "60" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 16.51 17.78 180) (length 2.54) + (name "PB7" (effects (font (size 1.27 1.27)))) + (number "61" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 16.51 15.24 180) (length 2.54) + (name "PB8" (effects (font (size 1.27 1.27)))) + (number "62" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at 16.51 12.7 180) (length 2.54) + (name "PB9" (effects (font (size 1.27 1.27)))) + (number "63" (effects (font (size 1.27 1.27)))) + ) + (pin bidirectional line (at -16.51 -33.02 0) (length 2.54) + (name "PC10" (effects (font (size 1.27 1.27)))) + (number "64" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at 3.81 50.8 270) (length 2.54) + (name "VREF+" (effects (font (size 1.27 1.27)))) + (number "7" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at 6.35 50.8 270) (length 2.54) + (name "VDD" (effects (font (size 1.27 1.27)))) + (number "8" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at 6.35 -50.8 90) (length 2.54) + (name "VSS" (effects (font (size 1.27 1.27)))) + (number "9" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "power:+3V3" (power) (pin_names (offset 0)) (in_bom yes) (on_board yes) + (property "Reference" "#PWR" (id 0) (at 0 -3.81 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "+3V3" (id 1) (at 0 3.556 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "" (id 2) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "power-flag" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "Power symbol creates a global label with name \"+3V3\"" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "+3V3_0_1" + (polyline + (pts + (xy -0.762 1.27) + (xy 0 2.54) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 0 0) + (xy 0 2.54) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (polyline + (pts + (xy 0 2.54) + (xy 0.762 1.27) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + ) + (symbol "+3V3_1_1" + (pin power_in line (at 0 0 90) (length 0) hide + (name "+3V3" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "power:GND" (power) (pin_names (offset 0)) (in_bom yes) (on_board yes) + (property "Reference" "#PWR" (id 0) (at 0 -6.35 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "GND" (id 1) (at 0 -3.81 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "" (id 2) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "power-flag" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "Power symbol creates a global label with name \"GND\" , ground" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "GND_0_1" + (polyline + (pts + (xy 0 0) + (xy 0 -1.27) + (xy 1.27 -1.27) + (xy 0 -2.54) + (xy -1.27 -1.27) + (xy 0 -1.27) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + ) + (symbol "GND_1_1" + (pin power_in line (at 0 0 270) (length 0) hide + (name "GND" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "power:PWR_FLAG" (power) (pin_numbers hide) (pin_names (offset 0) hide) (in_bom yes) (on_board yes) + (property "Reference" "#FLG" (id 0) (at 0 1.905 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "PWR_FLAG" (id 1) (at 0 3.81 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "" (id 2) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_keywords" "power-flag" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "Special symbol for telling ERC where power comes from" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "PWR_FLAG_0_0" + (pin power_out line (at 0 0 90) (length 0) + (name "pwr" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + ) + (symbol "PWR_FLAG_0_1" + (polyline + (pts + (xy 0 0) + (xy 0 1.27) + (xy -1.016 1.905) + (xy 0 2.54) + (xy 1.016 1.905) + (xy 0 1.27) + ) + (stroke (width 0) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + ) + ) + ) + + (junction (at 163.83 142.875) (diameter 0) (color 0 0 0 0) + (uuid 0da01681-1145-4393-b711-3300380e5995) + ) + (junction (at 149.225 86.995) (diameter 0) (color 0 0 0 0) + (uuid 10853f49-a70a-417a-9137-4dc086b5f956) + ) + (junction (at 52.07 18.415) (diameter 0) (color 0 0 0 0) + (uuid 199109d4-b3c8-464b-9006-4f854d2d0128) + ) + (junction (at 35.56 31.75) (diameter 0) (color 0 0 0 0) + (uuid 1bb70ffa-7b62-415d-9855-c4d31ba005b9) + ) + (junction (at 160.02 39.37) (diameter 0) (color 0 0 0 0) + (uuid 25f356ce-08a6-4f05-aa7c-84c4dac9cd67) + ) + (junction (at 149.225 113.03) (diameter 0) (color 0 0 0 0) + (uuid 2ab51070-f03a-4000-a4a9-d5231a5a600d) + ) + (junction (at 149.225 102.235) (diameter 0) (color 0 0 0 0) + (uuid 570daffb-eb82-43e5-9d9f-e2436737a24d) + ) + (junction (at 142.24 137.795) (diameter 0) (color 0 0 0 0) + (uuid 58c504f8-a40b-43b0-b464-0da146eabfc9) + ) + (junction (at 115.57 53.34) (diameter 0) (color 0 0 0 0) + (uuid 5f52bd44-97c6-481b-a910-4e3831ad445c) + ) + (junction (at 142.24 142.875) (diameter 0) (color 0 0 0 0) + (uuid 6908f735-34de-4c85-af1e-0ce4cc9e4740) + ) + (junction (at 135.255 109.22) (diameter 0) (color 0 0 0 0) + (uuid 6a8a0653-66b7-4f12-b446-fb68e99d0d46) + ) + (junction (at 26.035 38.1) (diameter 0) (color 0 0 0 0) + (uuid 7d033d42-07c1-41bb-ba1e-6665740ddc85) + ) + (junction (at 105.41 27.305) (diameter 0) (color 0 0 0 0) + (uuid 90287932-1298-4a71-9cdf-540d358d4073) + ) + (junction (at 160.02 36.83) (diameter 0) (color 0 0 0 0) + (uuid 9c521a5c-fe23-4bf9-bd99-e9a86a7d846b) + ) + (junction (at 105.41 20.955) (diameter 0) (color 0 0 0 0) + (uuid b88d132e-caf0-47e7-b3d5-2b7c32a286f8) + ) + (junction (at 35.56 38.1) (diameter 0) (color 0 0 0 0) + (uuid caff42cb-6381-4683-8b26-77589abdf9f3) + ) + (junction (at 52.07 24.765) (diameter 0) (color 0 0 0 0) + (uuid dbc6742b-e662-40f5-807d-bbfc473b76e6) + ) + (junction (at 149.225 76.2) (diameter 0) (color 0 0 0 0) + (uuid dbe47a11-2455-47a2-9e1b-df25ae093166) + ) + (junction (at 71.12 29.845) (diameter 0) (color 0 0 0 0) + (uuid efa3b7d2-6c2f-4d49-9f81-9b1b51074f62) + ) + (junction (at 135.255 83.185) (diameter 0) (color 0 0 0 0) + (uuid f0558e94-8079-4c72-9bdf-97431e22b6a1) + ) + + (no_connect (at 50.8 88.9) (uuid 0040b191-6d69-4bcc-9b87-452ed4f797dd)) + (no_connect (at 50.8 96.52) (uuid 014f5aae-3e01-4889-9172-a9d600a27e76)) + (no_connect (at 50.8 124.46) (uuid 12f4ba17-c5ec-475b-ba85-136f1d85f7ad)) + (no_connect (at 156.845 145.415) (uuid 15f5975f-cbf7-4d43-9875-57ede60b3be6)) + (no_connect (at 83.82 99.06) (uuid 17ab4751-f834-4bd8-9699-f65f8d65179e)) + (no_connect (at 83.82 63.5) (uuid 18390a3b-3f21-43cc-bdf8-532bcb79bd82)) + (no_connect (at 109.22 148.59) (uuid 18eefb44-0838-4310-8a85-ffc34a56857a)) + (no_connect (at 83.82 96.52) (uuid 1e2a618f-535a-4567-96ae-b2a675c16b78)) + (no_connect (at 83.82 83.82) (uuid 1f30dee4-3ba0-4089-ae3a-1c80afa8a636)) + (no_connect (at 83.82 81.28) (uuid 2448e1e2-2df3-4497-b49e-474ae95ecd2c)) + (no_connect (at 144.145 145.415) (uuid 29f7b3c1-1ec0-4b83-850d-c4815034b787)) + (no_connect (at 50.8 114.3) (uuid 33ad1fbb-ce4c-4387-b128-13921dbc0660)) + (no_connect (at 83.82 53.34) (uuid 3491e4db-8d27-482a-926a-c05b5d4022f0)) + (no_connect (at 50.8 66.04) (uuid 36b6dc59-fad9-4b35-a8f1-e38436a1cd76)) + (no_connect (at 50.8 121.92) (uuid 3e3e2964-e6fe-4482-9a81-786a9e066041)) + (no_connect (at 50.8 109.22) (uuid 3ebef445-8f27-47b4-8a38-38e54bb634ed)) + (no_connect (at 50.8 48.26) (uuid 4272eac0-b5ec-47c6-9547-865374c8abb6)) + (no_connect (at 50.8 71.12) (uuid 4ab61bd4-cae4-4093-87af-f0692bf079d6)) + (no_connect (at 83.82 76.2) (uuid 50ae1ce4-ae6f-4508-9f16-14e4a681e549)) + (no_connect (at 50.8 83.82) (uuid 5565a1a3-d7b0-4d0d-8504-be5c399d06e9)) + (no_connect (at 50.8 76.2) (uuid 55c2100f-be4d-48ec-a93f-a49ebe7fb587)) + (no_connect (at 50.8 68.58) (uuid 67a3911e-8737-4c28-96c9-50b4ca5a9dfa)) + (no_connect (at 50.8 55.88) (uuid 6c45ed92-1a3c-4a26-a1a1-91562e84df74)) + (no_connect (at 83.82 91.44) (uuid 6c5c591d-3b9b-4046-9ef5-40820bf7b7de)) + (no_connect (at 83.82 101.6) (uuid 6ff421ba-5fc9-47bf-8347-2c646ccef3e1)) + (no_connect (at 50.8 111.76) (uuid 7c98c5bf-03fe-42e6-be02-7e4cbb3bfb1d)) + (no_connect (at 156.845 130.175) (uuid 88238d52-e092-4263-ac11-f0ceb635e187)) + (no_connect (at 50.8 101.6) (uuid 883d96d9-3bf5-41b0-ab11-3b567f6e910b)) + (no_connect (at 83.82 60.96) (uuid 8b622a0f-e8f0-4ee9-b14a-d99bb048bf4e)) + (no_connect (at 50.8 60.96) (uuid 967927dd-43f8-487f-92cd-3b7de8029333)) + (no_connect (at 83.82 109.22) (uuid 99338b56-68c7-4cd3-b1e7-dec8f6548592)) + (no_connect (at 83.82 78.74) (uuid a1e3de33-50b9-4105-bcbb-4d335acefe03)) + (no_connect (at 50.8 93.98) (uuid b1ab03c6-5508-4ca2-ad29-a78ba9f69b05)) + (no_connect (at 50.8 99.06) (uuid b7a63281-a5ee-4e21-b7c1-2cbe9340f20e)) + (no_connect (at 83.82 104.14) (uuid bc8e306e-f821-4013-8f4a-e5267f979150)) + (no_connect (at 156.845 140.335) (uuid bd87a95e-f032-456a-9a96-0c191cc896fa)) + (no_connect (at 83.82 88.9) (uuid bdfffc9c-46a3-45db-95a6-29e6998eb449)) + (no_connect (at 50.8 58.42) (uuid caab12df-220e-4796-9133-1af873d025af)) + (no_connect (at 156.845 137.795) (uuid d81cf2e2-985a-464a-bcb3-50230b964395)) + (no_connect (at 50.8 50.8) (uuid dea786e7-1667-45eb-abdd-af11b9078062)) + (no_connect (at 50.8 73.66) (uuid e0e7d5bd-e258-4c1a-b22f-514ff2550247)) + (no_connect (at 144.145 140.335) (uuid e1777c80-bb9e-4aac-8681-cb95a52547bd)) + (no_connect (at 50.8 116.84) (uuid e1fad150-85e6-4e2f-a3cd-d2ab1a8827cb)) + (no_connect (at 50.8 53.34) (uuid eeca5b70-c953-4b27-bd8b-e2a70428a5e2)) + (no_connect (at 50.8 91.44) (uuid f63284e8-e445-48a5-875f-eec9c7e4032b)) + (no_connect (at 50.8 119.38) (uuid f76d0c10-d9bc-41b2-be51-ae3f4f456e08)) + (no_connect (at 144.145 130.175) (uuid f85dc30b-04cb-4503-b34b-2896ccf709e5)) + (no_connect (at 50.8 106.68) (uuid f9e77d6b-e874-4c8a-95bb-0693ffac8587)) + (no_connect (at 50.8 45.72) (uuid fb73272a-dbf4-4948-b362-efd9f28771a2)) + (no_connect (at 83.82 111.76) (uuid fb8dee51-4743-4ece-929c-ec935db1a822)) + (no_connect (at 50.8 127) (uuid fb9eddce-00de-4b5c-b65c-f9c033a5da77)) + (no_connect (at 50.8 104.14) (uuid fe14d519-ed8e-44f5-9d4a-4a2136f65332)) + + (wire (pts (xy 52.07 24.765) (xy 52.07 25.4)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 03441202-4a34-4a38-b54c-af675099c5a0) + ) + (wire (pts (xy 100.965 138.43) (xy 109.22 138.43)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 0487b26d-71ff-4b0d-8950-8a6f7468e6cd) + ) + (wire (pts (xy 135.255 58.42) (xy 133.985 58.42)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 06868003-e6f2-4e13-b4b8-a2a83d71ddbe) + ) + (wire (pts (xy 118.745 21.59) (xy 117.475 21.59)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 08522a82-61ef-4e19-9271-fa84138fc5ad) + ) + (wire (pts (xy 38.1 113.665) (xy 38.1 112.395)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 0893f6cb-4f7d-48e3-8cf3-7349936cdcfc) + ) + (wire (pts (xy 107.315 131.445) (xy 109.22 131.445)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 107b6e94-8180-4cb5-89d0-5d3d22e7e7c2) + ) + (wire (pts (xy 142.24 137.795) (xy 142.24 142.875)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 19e0d492-6da8-4b94-a1fb-e145f5fd608f) + ) + (wire (pts (xy 160.02 41.275) (xy 160.02 39.37)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 1dcfb58d-09cd-4442-9509-408445b9883c) + ) + (wire (pts (xy 117.475 81.28) (xy 118.745 81.28)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 1e465f01-a0c4-4318-a000-06e1b276719c) + ) + (wire (pts (xy 139.065 21.59) (xy 141.605 21.59)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 2107d821-0f3d-4cd4-842d-c9de74e791df) + ) + (wire (pts (xy 158.115 132.715) (xy 156.845 132.715)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 21f0be6d-ba21-4e67-a0f1-d7a77f2bf849) + ) + (wire (pts (xy 135.255 83.185) (xy 135.255 81.28)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 248caec0-1f35-42a4-a0e1-22352f43627d) + ) + (wire (pts (xy 149.225 113.03) (xy 161.29 113.03)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 25ca0273-e2d1-41ae-a3f0-71a0fc1a70a6) + ) + (wire (pts (xy 35.56 31.75) (xy 49.53 31.75)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 27ba53c7-d6e2-4e17-abd7-992ba043244c) + ) + (wire (pts (xy 144.145 142.875) (xy 142.24 142.875)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 27f7f69b-b573-434a-baed-e7dc65544e01) + ) + (wire (pts (xy 111.125 27.305) (xy 105.41 27.305)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 29103c64-8157-4c51-879a-b994b974bcac) + ) + (wire (pts (xy 105.41 27.305) (xy 105.41 27.94)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 2a325da5-22fe-49ee-a399-fcad5ceec71a) + ) + (wire (pts (xy 160.02 36.83) (xy 160.655 36.83)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 2dcb91e5-0fce-4470-a78d-e3911491eeba) + ) + (wire (pts (xy 85.09 68.58) (xy 83.82 68.58)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 2ee07adb-9f0d-419d-89f2-b32404bce182) + ) + (wire (pts (xy 117.475 58.42) (xy 117.475 59.69)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 2f134a5c-bcac-4404-843a-856463dbda30) + ) + (wire (pts (xy 118.745 58.42) (xy 117.475 58.42)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 306b496f-cb03-4398-a3f1-61236e268f1a) + ) + (wire (pts (xy 160.02 39.37) (xy 160.655 39.37)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 32271711-a452-4187-8597-e61ddd0ed976) + ) + (wire (pts (xy 163.195 132.715) (xy 164.465 132.715)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 32d83fee-d79a-4f61-91e0-b3d6cd9047c7) + ) + (wire (pts (xy 135.255 109.22) (xy 135.255 107.315)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 35d35f25-beff-42b2-8128-d630ad7755f9) + ) + (wire (pts (xy 49.53 78.74) (xy 50.8 78.74)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 36020e7b-e535-4850-8736-10c2b3c338b0) + ) + (wire (pts (xy 117.475 107.315) (xy 118.745 107.315)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 3639ed64-f358-4499-a18d-372d94d92f98) + ) + (wire (pts (xy 145.415 86.995) (xy 149.225 86.995)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 38d6373f-afb0-45f2-bf6a-e8b48ed4d058) + ) + (wire (pts (xy 33.02 31.75) (xy 35.56 31.75)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 3a0ff9f6-9f16-4c01-a1e3-8c6bfdc41c04) + ) + (wire (pts (xy 29.21 107.315) (xy 30.48 107.315)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 3a96533f-8a9b-4da4-9fc8-9796c56e6924) + ) + (wire (pts (xy 107.315 143.51) (xy 109.22 143.51)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 3afc5f82-a9b5-4e9f-b2a0-6783da7e8968) + ) + (wire (pts (xy 105.41 20.955) (xy 105.41 20.32)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 3cffa74c-d44e-4746-84e8-a8636a1fc107) + ) + (wire (pts (xy 33.02 38.1) (xy 35.56 38.1)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 3e72943e-5c47-4f4d-8aea-338c0c41386a) + ) + (wire (pts (xy 85.09 50.8) (xy 83.82 50.8)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 3eecd164-bc8c-42b2-919d-fdb89004d163) + ) + (wire (pts (xy 144.145 135.255) (xy 142.24 135.255)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 3fdca52e-32ee-46a0-88c7-1b7229a77a8f) + ) + (wire (pts (xy 100.965 156.21) (xy 109.22 156.21)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 41c97503-e54d-4f5d-9a48-45f4acf45911) + ) + (wire (pts (xy 111.76 53.34) (xy 115.57 53.34)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 42837e49-ed42-4024-9299-032d0afe58cd) + ) + (wire (pts (xy 35.56 32.385) (xy 35.56 31.75)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 43a654ed-5a5d-4a4c-9af9-5a6b3410900e) + ) + (wire (pts (xy 26.035 38.735) (xy 26.035 38.1)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 44772c1c-edc0-4983-9349-524524f1076d) + ) + (wire (pts (xy 85.09 73.66) (xy 83.82 73.66)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 44989737-ba61-45f7-b541-a507fad6ab45) + ) + (wire (pts (xy 149.225 102.235) (xy 149.225 99.06)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 44fe90e7-0883-4cac-a6fe-cb7f63148833) + ) + (wire (pts (xy 27.94 38.1) (xy 26.035 38.1)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 473aeecb-779d-4e49-b293-95e2f405f331) + ) + (wire (pts (xy 118.745 26.67) (xy 117.475 26.67)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 49e29d3b-bf1f-4f19-818a-17b6ce2cb47b) + ) + (wire (pts (xy 85.09 66.04) (xy 83.82 66.04)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 4aa04385-e86e-4fc7-b498-27e8afc25c99) + ) + (wire (pts (xy 140.335 102.235) (xy 141.605 102.235)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 4c5aa2bc-71df-4431-b130-3fa7f935314b) + ) + (wire (pts (xy 49.53 41.91) (xy 50.8 41.91)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 4e538cb5-15ad-4766-b216-b89c2103b4dc) + ) + (wire (pts (xy 85.09 45.72) (xy 83.82 45.72)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 501c2f51-625f-402c-a14a-d5390101d546) + ) + (wire (pts (xy 39.37 95.885) (xy 38.1 95.885)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 516118bd-0bef-4abd-96e2-1507fe30bd5a) + ) + (wire (pts (xy 158.75 36.83) (xy 160.02 36.83)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 5181cc1e-5f4a-40ce-b86f-12cfd50f378e) + ) + (wire (pts (xy 158.115 135.255) (xy 156.845 135.255)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 5195ceb1-26cf-419e-b900-ff5d21915f9b) + ) + (wire (pts (xy 49.53 31.75) (xy 49.53 35.56)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 52cf58b9-dbbe-4335-9a7d-672e7b953c92) + ) + (wire (pts (xy 118.745 53.34) (xy 115.57 53.34)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 530e82ec-255f-4ebe-bd99-b7ec9e44e304) + ) + (wire (pts (xy 163.195 135.255) (xy 164.465 135.255)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 56abe4de-13ed-4bf9-b876-88391c1fd381) + ) + (wire (pts (xy 149.225 113.03) (xy 149.225 110.49)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 57182f55-2c91-4144-bc86-3dd5c87171e6) + ) + (wire (pts (xy 135.255 53.34) (xy 133.985 53.34)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 57347aaa-d2c4-4a2a-8477-edefdff80cba) + ) + (wire (pts (xy 117.475 102.235) (xy 118.745 102.235)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 57bec696-f1d3-45a1-86f9-06f4d1a7ab70) + ) + (wire (pts (xy 49.53 35.56) (xy 50.8 35.56)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 5bb5175a-dc8a-4288-85bd-af39913606d0) + ) + (wire (pts (xy 142.24 132.715) (xy 144.145 132.715)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 5f4d04d3-932b-4e86-ac72-bdcdbb9f7be6) + ) + (wire (pts (xy 145.415 83.185) (xy 135.255 83.185)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 5f4df067-b72b-46fa-9379-a9db5442c531) + ) + (wire (pts (xy 111.125 26.67) (xy 111.125 27.305)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 6181cab6-bbca-4709-a8e9-65525d090ec3) + ) + (wire (pts (xy 35.56 38.1) (xy 44.45 38.1)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 61ce4d6a-4f93-4ee1-919b-63f119c4cd3f) + ) + (wire (pts (xy 38.1 100.965) (xy 39.37 100.965)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 6209d6fd-4d3d-4d21-a2b0-2bc7f7994fdb) + ) + (wire (pts (xy 117.475 108.585) (xy 117.475 107.315)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 67a7aa42-3c55-453a-89ef-8fd2a96f366e) + ) + (wire (pts (xy 85.09 71.12) (xy 83.82 71.12)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 6815fecc-44f1-456c-a21d-27d7d9cea236) + ) + (wire (pts (xy 49.53 81.28) (xy 50.8 81.28)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 695de3b1-efb2-412f-a596-80530633aa4e) + ) + (wire (pts (xy 100.965 143.51) (xy 102.235 143.51)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 6b97af20-dd87-4487-b01d-c05a3b064301) + ) + (wire (pts (xy 163.83 142.875) (xy 164.465 142.875)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 6c3e8540-13d3-4be0-bcd5-5de16358f746) + ) + (wire (pts (xy 133.985 76.2) (xy 135.255 76.2)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 6c47a215-1047-4304-bcbd-55956c5f9ef2) + ) + (wire (pts (xy 142.24 135.255) (xy 142.24 137.795)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 6f09333a-cb98-4ed6-8c36-5cdfeaa5b2e9) + ) + (wire (pts (xy 144.145 137.795) (xy 142.24 137.795)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 712c37b1-1012-438e-ab43-cbbe709bab0f) + ) + (wire (pts (xy 149.225 76.2) (xy 149.225 76.835)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 760644ab-7f9e-4bb6-9686-e5502ce4db36) + ) + (wire (pts (xy 83.82 93.98) (xy 85.09 93.98)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 774abfd4-5e3d-4fa9-a9a3-129ec0a1fef8) + ) + (wire (pts (xy 85.09 55.88) (xy 83.82 55.88)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 79bfb502-4484-4f9a-828c-a0142929cfad) + ) + (wire (pts (xy 52.07 18.415) (xy 52.07 17.78)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 7c71220a-11f2-4844-958c-312aab235d2c) + ) + (wire (pts (xy 135.255 113.03) (xy 135.255 109.22)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 7d5ecbb6-6ab6-4abb-9704-ddae9f06854c) + ) + (wire (pts (xy 100.965 146.05) (xy 102.235 146.05)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 819378fe-24e0-4220-936c-6366287e48c1) + ) + (wire (pts (xy 163.83 148.59) (xy 163.83 149.86)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 87988e94-be2b-4fd2-8d4a-c599254b42cf) + ) + (wire (pts (xy 140.335 86.995) (xy 135.255 86.995)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 88f38326-203e-4ab2-be96-fb4d0d25cf68) + ) + (wire (pts (xy 145.415 113.03) (xy 149.225 113.03)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 894640f6-152c-4b9d-9d04-4d5e2120f2d1) + ) + (wire (pts (xy 160.02 34.925) (xy 160.02 36.83)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 8cf5d3e2-053c-4be9-9916-f56680700e9c) + ) + (wire (pts (xy 100.965 140.97) (xy 109.22 140.97)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 8d5ca95f-2ec2-4941-8662-6a2df3ae4c6d) + ) + (wire (pts (xy 38.1 102.235) (xy 38.1 100.965)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 8e85b515-f517-4861-81ef-9c2c7fdf7209) + ) + (wire (pts (xy 149.225 86.995) (xy 149.225 84.455)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 8ecb9601-e122-465d-9e00-f9df047758b3) + ) + (wire (pts (xy 57.785 18.415) (xy 52.07 18.415)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 8f7d2109-c816-495c-bea0-e0e345d9d629) + ) + (wire (pts (xy 111.125 102.235) (xy 112.395 102.235)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 8f7ef714-5d3c-4e10-bb58-44a09ba0ab40) + ) + (wire (pts (xy 35.56 37.465) (xy 35.56 38.1)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 900cc24b-d2ec-4e20-8fa7-776067abf78d) + ) + (wire (pts (xy 100.965 126.365) (xy 109.22 126.365)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 901b6bad-ab8e-419b-baaf-eadc1bbc798e) + ) + (wire (pts (xy 49.53 38.1) (xy 50.8 38.1)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 903a6984-6cd0-4c46-8fae-aea24772c602) + ) + (wire (pts (xy 117.475 26.67) (xy 117.475 27.94)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 90b774ec-68d3-4ae3-b07d-0c745c3c811c) + ) + (wire (pts (xy 49.53 63.5) (xy 50.8 63.5)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 9217a369-5c0e-493f-88d1-8e85947dd902) + ) + (wire (pts (xy 145.415 109.22) (xy 135.255 109.22)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 92d0f843-ae74-4bed-aa78-f511b4d93144) + ) + (wire (pts (xy 149.225 76.2) (xy 149.225 73.025)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 92ea3bed-032f-4a8d-a528-4d1062ead229) + ) + (wire (pts (xy 158.115 142.875) (xy 156.845 142.875)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 92f93100-2001-4f6b-9f0c-2f9058a97ec4) + ) + (wire (pts (xy 117.475 76.2) (xy 118.745 76.2)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 9327c861-503c-4777-bba4-e48c47cb3178) + ) + (wire (pts (xy 68.58 29.845) (xy 71.12 29.845)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 96a61e00-cb10-4561-a0cb-bb08841bfcce) + ) + (wire (pts (xy 68.58 30.48) (xy 68.58 29.845)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 9dbabe6a-7ce6-4c26-a69d-60e769208568) + ) + (wire (pts (xy 57.785 24.765) (xy 52.07 24.765)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 9f71ec4a-af22-495a-b7b6-35bb6251e40f) + ) + (wire (pts (xy 85.09 48.26) (xy 83.82 48.26)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 9fa7b16b-a371-45ef-ad9c-96db3f11538f) + ) + (wire (pts (xy 26.035 31.75) (xy 27.94 31.75)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid a009b3d4-faa0-4927-9ef9-c2534fa47bde) + ) + (wire (pts (xy 100.965 151.13) (xy 109.22 151.13)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid a2b317cd-a598-4e93-bd9b-e7d48f55fdb9) + ) + (wire (pts (xy 151.765 73.025) (xy 161.29 73.025)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid a518c906-83bf-4a90-971b-c5541e968193) + ) + (wire (pts (xy 158.75 39.37) (xy 160.02 39.37)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid a5431df4-dc20-4619-8212-c8ed847987f4) + ) + (wire (pts (xy 100.965 128.905) (xy 102.235 128.905)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid a6507cd8-fbac-4122-9e3a-666d923b2279) + ) + (wire (pts (xy 73.66 133.35) (xy 73.66 132.08)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid a6a46844-05da-4a20-a6d3-12ea37fa5fce) + ) + (wire (pts (xy 52.07 24.13) (xy 52.07 24.765)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid a7816830-fc03-4f4b-be46-4d7cad6aa01c) + ) + (wire (pts (xy 71.12 30.48) (xy 71.12 29.845)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid b584f76b-5eff-4230-bbb4-4a0dc6f3d40b) + ) + (wire (pts (xy 85.09 58.42) (xy 83.82 58.42)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid bd00fca3-1bc2-4af0-b6f3-7b3ad6e734e1) + ) + (wire (pts (xy 22.86 107.315) (xy 24.13 107.315)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid be4d30fa-0a38-4cc1-8688-70320fc5a916) + ) + (wire (pts (xy 140.335 76.2) (xy 141.605 76.2)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid c22f9655-49f3-4b1a-b4b6-2992f2e2c1c9) + ) + (wire (pts (xy 117.475 82.55) (xy 117.475 81.28)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid c3b0b224-101d-426a-bbfd-7848095302e8) + ) + (wire (pts (xy 145.415 58.42) (xy 142.875 58.42)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid c52b9ff7-21db-44b5-bd52-04ec16bb428d) + ) + (wire (pts (xy 38.1 95.885) (xy 38.1 94.615)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid c64a4231-00f6-4f53-8fff-dac2b78def3f) + ) + (wire (pts (xy 107.315 146.05) (xy 109.22 146.05)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid c96e3095-ac3d-4784-86fc-57414b2ab7f3) + ) + (wire (pts (xy 111.125 20.955) (xy 105.41 20.955)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid caf32e4a-b341-4d62-9e87-cdf7150ca4a3) + ) + (wire (pts (xy 100.965 153.67) (xy 109.22 153.67)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid cd9c867d-3acd-43bb-9e9b-f5f9d6413303) + ) + (wire (pts (xy 135.255 86.995) (xy 135.255 83.185)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid ce0868da-1518-45ca-8050-253ae32499d4) + ) + (wire (pts (xy 26.035 38.1) (xy 26.035 31.75)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid d0bdc2c4-23ee-4075-990a-452ff58f0d89) + ) + (wire (pts (xy 149.225 86.995) (xy 161.29 86.995)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid d2d4285b-7d53-4494-9a97-74e24a9d88a5) + ) + (wire (pts (xy 107.315 128.905) (xy 109.22 128.905)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid d3b7165b-e3f3-436f-a231-91e07ccb30d7) + ) + (wire (pts (xy 151.765 99.06) (xy 161.29 99.06)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid d6085f30-8757-4ceb-b6a3-6a5e53c89404) + ) + (wire (pts (xy 115.57 53.34) (xy 115.57 48.895)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid d71da771-d883-4b8a-86aa-e6f0f9054ea7) + ) + (wire (pts (xy 71.12 29.845) (xy 73.66 29.845)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid d8375a7b-c9ef-4263-8f0c-abedbe3692f7) + ) + (wire (pts (xy 146.685 102.235) (xy 149.225 102.235)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid d896437e-edcf-45fd-a349-8c1698259b95) + ) + (wire (pts (xy 57.785 19.05) (xy 57.785 18.415)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid d90c52c8-42df-4d63-9edd-ee408ffe9549) + ) + (wire (pts (xy 139.065 26.67) (xy 141.605 26.67)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid da0c6f39-7602-4210-b6e4-1856e276a516) + ) + (wire (pts (xy 105.41 26.67) (xy 105.41 27.305)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid de1871dc-b68a-49df-a1b4-9748ba2bc572) + ) + (wire (pts (xy 135.255 81.28) (xy 133.985 81.28)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid df03cf90-f9bc-4fdd-a4a5-82498c7d6d97) + ) + (wire (pts (xy 52.07 19.05) (xy 52.07 18.415)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid e2d25c7a-781f-401f-adcf-b5532bf97cb7) + ) + (wire (pts (xy 111.125 76.2) (xy 112.395 76.2)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid e41a7292-2f65-4e8a-98ea-183b0d4e7e0d) + ) + (wire (pts (xy 140.335 113.03) (xy 135.255 113.03)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid e4d2f3e8-2dd3-4c51-855c-d3b9fd7f6298) + ) + (wire (pts (xy 133.985 102.235) (xy 135.255 102.235)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid e6dd5b8c-9701-4474-b9be-ebba9d197cee) + ) + (wire (pts (xy 142.24 142.875) (xy 142.24 146.05)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid e708c51c-b481-4e98-bffc-372374fc8d44) + ) + (wire (pts (xy 135.255 107.315) (xy 133.985 107.315)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid e73895a2-4adb-40e4-88c8-403e5dcbb3ee) + ) + (wire (pts (xy 146.685 76.2) (xy 149.225 76.2)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid e8e6c50d-3eca-48e1-9074-9e59c803939e) + ) + (wire (pts (xy 71.12 29.21) (xy 71.12 29.845)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid e92d528f-9549-4503-b504-88ec80b586ea) + ) + (wire (pts (xy 73.66 29.845) (xy 73.66 30.48)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid eb5eb1d2-630a-4e79-b8c1-84b44df75bcd) + ) + (wire (pts (xy 100.965 131.445) (xy 102.235 131.445)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid ef800bb4-fe64-412f-bf76-e57512f3a48d) + ) + (wire (pts (xy 115.57 43.815) (xy 115.57 42.545)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid f25b18f2-c227-499e-8c97-696b3b0a1e38) + ) + (wire (pts (xy 149.225 102.235) (xy 149.225 102.87)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid f33f94a6-6e77-4cf7-b3c5-beae6d6c81f8) + ) + (wire (pts (xy 100.965 123.825) (xy 109.22 123.825)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid f428cab2-9972-4467-b50b-62f5d5534d3a) + ) + (wire (pts (xy 117.475 21.59) (xy 117.475 20.32)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid f647a20b-df47-4a31-a46e-c3e05a227019) + ) + (wire (pts (xy 145.415 53.34) (xy 142.875 53.34)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid f6fe5f52-9fca-4051-96db-f742ea0a91eb) + ) + (wire (pts (xy 163.83 143.51) (xy 163.83 142.875)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid f73d0499-3dd9-4af8-85be-9bd6351d17d4) + ) + (wire (pts (xy 163.195 142.875) (xy 163.83 142.875)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid f762cbf5-917f-46bc-8789-70a8213c3612) + ) + (wire (pts (xy 57.785 24.13) (xy 57.785 24.765)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid f95ebb97-8487-4c95-9876-c5c1103da5a0) + ) + (wire (pts (xy 111.125 21.59) (xy 111.125 20.955)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid fb30a342-ef87-4f4d-9fbb-05710f1fb89b) + ) + (wire (pts (xy 105.41 21.59) (xy 105.41 20.955)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid fdaf930c-d62a-49aa-8ad7-779181c696f0) + ) + + (global_label "AC_N" (shape input) (at 161.29 113.03 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid 01037042-961f-4c97-8291-475fe5e8f179) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + ) + (global_label "SWDIO" (shape input) (at 164.465 132.715 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid 0a103492-f82e-4786-8915-1e9020522aa5) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + ) + (global_label "OLED_SCL" (shape input) (at 85.09 71.12 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid 156eb083-ffb0-4c37-8f5f-d79854053d57) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + ) + (global_label "BME_SCL" (shape input) (at 85.09 66.04 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid 1e9b280f-28e7-40d9-bd55-7a21c510ae7e) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + ) + (global_label "KEY_OK" (shape input) (at 100.965 153.67 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 22914b27-77e3-4fb4-a792-a42c9253ab03) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + ) + (global_label "SWCLK" (shape input) (at 164.465 135.255 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid 230c283f-5639-47ca-87df-9e6462e8d6f2) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + ) + (global_label "KEY_DN" (shape input) (at 85.09 45.72 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid 33dfee56-b806-4e14-9158-9ba1598276ac) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + ) + (global_label "NRST" (shape input) (at 164.465 142.875 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid 376b58c5-29f5-46ce-a604-b3e4ebbfeea4) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + ) + (global_label "AC_L" (shape input) (at 141.605 21.59 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid 3a407943-8502-4969-b885-9e660f6d49e4) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + ) + (global_label "BME_SCL" (shape input) (at 100.965 128.905 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 3dfb45c6-9c66-4e93-80e4-3820a8772d9b) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + ) + (global_label "AC_L" (shape input) (at 161.29 99.06 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid 49439467-2577-43e7-a8b6-a48df7536f79) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + ) + (global_label "BME_SDA" (shape input) (at 85.09 68.58 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid 49d5aa66-f1d1-4b6d-84cb-f08ef00336e6) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + ) + (global_label "SWDIO" (shape input) (at 49.53 78.74 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 52fcf8d9-f76b-4099-a17d-19388fd504ba) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + ) + (global_label "AC_L" (shape input) (at 145.415 58.42 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid 5c072f50-9634-4fdc-800b-8dad28c115a4) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + ) + (global_label "NRST" (shape input) (at 49.53 41.91 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 5cdcda76-1f42-47e8-b27d-f4ddbe9712c6) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + ) + (global_label "Buzzer" (shape input) (at 49.53 63.5 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 62a34162-d8e1-4ba0-a9b3-ad8920780c00) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + ) + (global_label "ZeroCross" (shape input) (at 111.76 53.34 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 64d8b73b-5e80-4cce-bb66-f9b4fd87ab24) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + ) + (global_label "AC_N" (shape input) (at 161.29 86.995 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid 6d78bc47-0929-4b6e-aeeb-e7fd71a8c543) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + ) + (global_label "OLED_SCL" (shape input) (at 100.965 143.51 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 73251f52-b8fe-43fc-b0a6-2ca12653e98f) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + ) + (global_label "Gate_Heater" (shape input) (at 111.125 76.2 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 8c25819f-93d2-4ec3-997c-fac229323239) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + ) + (global_label "KEY_DN" (shape input) (at 100.965 156.21 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 8e0aee05-7364-4c3d-81da-f46461397954) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + ) + (global_label "AC_N" (shape input) (at 158.75 36.83 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 9045eb18-e347-4362-af42-cfde925ad53d) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + ) + (global_label "SWCLK" (shape input) (at 49.53 81.28 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid aa229b12-d418-4de4-bd45-f6fb2d7f2eb3) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + ) + (global_label "Gate_Heater" (shape input) (at 85.09 55.88 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid b62f03b9-334c-432e-9b76-2a1f726106fe) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + ) + (global_label "KEY_UP" (shape input) (at 85.09 50.8 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid ba538274-c805-456d-b690-1bcc7dde916a) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + ) + (global_label "AC_L" (shape input) (at 161.29 73.025 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid be7a9514-2336-4d70-a2d0-13a0d71c393b) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + ) + (global_label "BME_SDA" (shape input) (at 100.965 131.445 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid c6e12423-8c63-4601-8f54-789b1aefa8ed) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + ) + (global_label "OLED_SDA" (shape input) (at 100.965 146.05 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid ccfe1a11-a7ef-4343-af20-225f46272f67) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + ) + (global_label "Gate_Fan" (shape input) (at 85.09 58.42 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid d068b01b-9759-4efa-a997-f967a235f307) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + ) + (global_label "AC_N" (shape input) (at 141.605 26.67 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid d6666fe3-57c2-46b5-9bd2-6514943740ee) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + ) + (global_label "Buzzer" (shape input) (at 22.86 107.315 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid d86087f0-2ec9-4a2e-a70e-e230c75f7c4d) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + ) + (global_label "Gate_Fan" (shape input) (at 111.125 102.235 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid d9e08e46-b2f2-4e77-9097-b3fb466dd798) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + ) + (global_label "AC_L" (shape input) (at 158.75 39.37 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid e6877b4a-8b53-44b2-9a79-12cd9edfca87) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + ) + (global_label "KEY_OK" (shape input) (at 85.09 48.26 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid ea86daf4-694f-4f32-af73-741b53154ed6) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + ) + (global_label "KEY_UP" (shape input) (at 100.965 151.13 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid eddcffa6-27aa-49fe-886e-53a6cca564a0) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + ) + (global_label "AC_N" (shape input) (at 145.415 53.34 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid fb9b0dba-1345-48d0-80de-3d560f2c49ca) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + ) + (global_label "OLED_SDA" (shape input) (at 85.09 73.66 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid fd070d10-96a1-415f-a3f7-bc6f05a5c77e) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + ) + (global_label "ZeroCross" (shape input) (at 85.09 93.98 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid fd2362b3-061b-4ea7-a53b-2cd84e680bd1) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + ) + + (symbol (lib_id "my_additions:STM32G070RBTx") (at 67.31 81.28 0) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-000061c46d88) + (property "Reference" "U1" (id 0) (at 67.945 44.45 0)) + (property "Value" "" (id 1) (at 67.945 46.355 0)) + (property "Footprint" "" (id 2) (at 66.04 131.445 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + (property "Datasheet" "" (id 3) (at 113.03 147.32 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid dd97120b-25ad-4a0b-9550-9579be4843a0)) + (pin "10" (uuid 67b13743-ab85-4937-90ef-9fd319185401)) + (pin "11" (uuid 7fc70224-f6bc-431b-b0c5-538cf1c05157)) + (pin "12" (uuid 562540b5-01d9-427b-b876-0a461dd6da33)) + (pin "13" (uuid c9ff2e0a-c5b3-472c-a2e7-2cd3035cf716)) + (pin "14" (uuid d40598bb-65a6-4314-bb3f-0f1c68553f63)) + (pin "15" (uuid e4dae096-157a-459c-a7bf-4bdb65f99b0f)) + (pin "16" (uuid 58198f45-2fda-414a-a0ba-6c0b7224ade6)) + (pin "17" (uuid 5f6e4ebf-6ecb-4705-bccc-06b60d4594f0)) + (pin "18" (uuid 7276801e-ed66-483b-883d-232159470a9e)) + (pin "19" (uuid 13d489c8-84b0-4e9b-a421-c743f251dbc2)) + (pin "2" (uuid 404fd87a-d714-43b4-9b44-223b2803bb7e)) + (pin "20" (uuid d5e5071e-a4d6-489d-9fc4-2cf2ef4c374c)) + (pin "21" (uuid 5e524be1-f474-4840-abf6-9bd812bfe3c6)) + (pin "22" (uuid 164c4542-ae03-4174-80f8-014cbcdd4067)) + (pin "23" (uuid 71daa5bc-3b73-47a0-ac4b-06cf5e19933f)) + (pin "24" (uuid a13f5b88-ed4a-4872-90d0-ca4f833414d0)) + (pin "25" (uuid 8d351251-a833-473b-a2c2-b41d62261ece)) + (pin "26" (uuid 8ce03208-f2ed-4a30-a09d-7dcfe4048285)) + (pin "27" (uuid ae7cd3c4-3d7e-448e-8072-9632d389778e)) + (pin "28" (uuid d26028f6-2412-4873-8c49-d9bd62641fb7)) + (pin "29" (uuid b75cead8-24b9-401c-8c9a-ea899b19a5df)) + (pin "3" (uuid e2e81b22-b950-4a65-853d-e4401cbe26f6)) + (pin "30" (uuid 0837f86d-1e48-49ea-b106-e8cdc01355d0)) + (pin "31" (uuid 2b769345-87db-44ee-8b10-b2544c4489a7)) + (pin "32" (uuid cab6df24-1ef8-49c1-bdf2-b7743f417801)) + (pin "33" (uuid dfcb0f07-1b1b-4442-ad0f-ead2f17125ed)) + (pin "34" (uuid ce9d476e-5789-44d8-84f4-110fa94d58de)) + (pin "35" (uuid 924c3e13-ef65-472d-8a20-7a47e7ed7d5f)) + (pin "36" (uuid 5f0a73d1-20a6-48c4-aaa4-01f7fbf743de)) + (pin "37" (uuid ec772b67-9969-4b18-8b20-5497af4abd6a)) + (pin "38" (uuid 73e1aa4a-9f91-45f0-94a8-1568ee9d57b4)) + (pin "39" (uuid a916b9ba-a8b0-4cdb-baed-b86b8439f72c)) + (pin "4" (uuid b5770e73-8839-4e7b-81d4-89da7fa90cc6)) + (pin "40" (uuid f6f30b3f-a1ed-4f93-aa3f-e1d2aa47fab6)) + (pin "41" (uuid d5002ec6-6b36-444c-a343-2faa3051274a)) + (pin "42" (uuid 199aa421-7e3f-4761-a8dd-3bf1d9e3e9ae)) + (pin "43" (uuid 3c02e7c3-b2ea-4802-8c25-8d9521c686a6)) + (pin "44" (uuid da3e0b1a-1e64-4b94-851c-1484de6fc232)) + (pin "45" (uuid 9b762ed1-2b05-41fd-b453-e8012c96b222)) + (pin "46" (uuid 63ee1d3d-ce52-48b4-af24-5c95b1e762ce)) + (pin "47" (uuid 37d86cbf-451a-4607-9ac9-948e3009c94f)) + (pin "48" (uuid 4b826017-1685-4040-9b56-c19ef4d137fa)) + (pin "49" (uuid 8cb77826-f768-46ba-836f-2b2729475c22)) + (pin "5" (uuid a6489736-3e39-434d-b07c-04ee2ea66cc3)) + (pin "50" (uuid ecec0d27-8d8f-478a-9ee5-259722d4ad4f)) + (pin "51" (uuid 76618923-4a63-4b95-a70f-cf95ace895e9)) + (pin "52" (uuid f842ff7c-0868-4f58-9eef-43e681c0a409)) + (pin "53" (uuid 73cc8af9-f5c2-4577-bcae-48fdfbdf8c39)) + (pin "54" (uuid 2258d6a2-9cfe-4be7-b5ad-16ff0e594dd3)) + (pin "55" (uuid 85f8a610-013a-4567-9d50-95ab3ba8e5fe)) + (pin "56" (uuid 1b88dc55-149b-4c46-8a61-4a807fdc7a34)) + (pin "57" (uuid f70baf81-7710-4cfc-ae20-e6aed13bc6ff)) + (pin "58" (uuid 4a175f71-22d3-4015-a412-946e0404023a)) + (pin "59" (uuid 2cc39bba-e1d5-4ce8-b181-823a3082a52e)) + (pin "6" (uuid 5ba65d32-7e07-4d30-a3b3-8fed051ba9d3)) + (pin "60" (uuid 7038579c-109f-4f10-9ab5-0682d77b54fa)) + (pin "61" (uuid dfffbbe4-cb92-4df9-9fa9-6d3015d5b614)) + (pin "62" (uuid 63fdfcdf-4346-4594-9ccb-3dc7b7f61e13)) + (pin "63" (uuid db3b9a68-1198-490c-86a1-81fe3150051e)) + (pin "64" (uuid 23286da1-bb17-4de9-9714-be132819ada4)) + (pin "7" (uuid bb44325f-ed12-41f1-926d-df65f032c1f2)) + (pin "8" (uuid c5e1e483-f667-4e6c-a9dd-c0b0f8b5595e)) + (pin "9" (uuid 219fc0d2-c8f0-4f28-9177-fbe1e6b96baa)) + ) + + (symbol (lib_id "Converter_ACDC:HLK-PM03") (at 128.905 24.13 0) (mirror y) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-000061c4985c) + (property "Reference" "PS1" (id 0) (at 128.905 17.145 0)) + (property "Value" "" (id 1) (at 128.905 19.05 0)) + (property "Footprint" "" (id 2) (at 128.905 31.75 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "http://www.hlktech.net/product_detail.php?ProId=59" (id 3) (at 118.745 33.02 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 1f690078-d3c4-4ceb-be72-a79c18e0cd6e)) + (pin "2" (uuid 43c0645e-b9ee-48a3-be94-0fb78e02074e)) + (pin "3" (uuid 3df80120-a26b-4a53-b0e7-6b33a3ce54ec)) + (pin "4" (uuid 24433336-7a2e-4d86-bc09-e6b017c483d1)) + ) + + (symbol (lib_id "Isolator:LTV-814") (at 126.365 55.88 0) (mirror y) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-000061c4acca) + (property "Reference" "U2" (id 0) (at 126.365 48.895 0)) + (property "Value" "" (id 1) (at 126.365 50.8 0)) + (property "Footprint" "" (id 2) (at 131.445 60.96 0) + (effects (font (size 1.27 1.27) italic) (justify left) hide) + ) + (property "Datasheet" "https://optoelectronics.liteon.com/upload/download/DS-70-96-0013/LTV-8X4%20series%20201509.pdf" (id 3) (at 124.46 55.88 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + (pin "1" (uuid f286e6ba-e40c-4638-bb36-4af56126a065)) + (pin "2" (uuid b23cd507-905f-462f-9243-8e42ea1ce5f1)) + (pin "3" (uuid af487337-3a10-4cbf-82f7-c63c2f1be21c)) + (pin "4" (uuid 82cdce17-5881-44d5-b7e7-796d4ee2bf3f)) + ) + + (symbol (lib_id "Relay_SolidState:MOC3023M") (at 126.365 78.74 0) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-000061c4be67) + (property "Reference" "U3" (id 0) (at 126.365 71.755 0)) + (property "Value" "" (id 1) (at 126.365 73.66 0)) + (property "Footprint" "" (id 2) (at 121.285 83.82 0) + (effects (font (size 1.27 1.27) italic) (justify left) hide) + ) + (property "Datasheet" "https://www.onsemi.com/pub/Collateral/MOC3023M-D.PDF" (id 3) (at 126.365 78.74 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + (pin "1" (uuid b53b31e1-b5b9-4d67-b3c7-5387018ae03a)) + (pin "2" (uuid 5dd3df0c-ab46-469a-9269-5c39be18c630)) + (pin "3" (uuid 7aa36f28-5a09-412d-8652-24da580bbce6)) + (pin "4" (uuid 55da3e8c-ab3e-4d53-bb17-f0d21d1a8bcf)) + (pin "5" (uuid c2a2e320-4bd3-4c5e-84f2-9584b08e02c5)) + (pin "6" (uuid 6b242f6c-49fb-4e65-b1e5-4bf38cc6d201)) + ) + + (symbol (lib_id "Triac_Thyristor:BT138-800") (at 149.225 80.645 0) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-000061c4cfc6) + (property "Reference" "Q2" (id 0) (at 142.875 80.01 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "" (id 1) (at 135.89 81.915 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "" (id 2) (at 154.305 82.55 0) + (effects (font (size 1.27 1.27) italic) (justify left) hide) + ) + (property "Datasheet" "https://assets.nexperia.com/documents/data-sheet/BT138_SER_D_E.pdf" (id 3) (at 149.225 80.645 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + (pin "1" (uuid c4c87925-ce64-49c9-ac1f-cb30e9cc1215)) + (pin "2" (uuid 21f4d9f1-cf08-465e-a593-83a5693618df)) + (pin "3" (uuid 77b077e0-d56f-4c44-a0c6-ff5d3def23c3)) + ) + + (symbol (lib_id "Device:R_Small") (at 142.875 86.995 270) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-000061c517c6) + (property "Reference" "R14" (id 0) (at 142.875 85.09 90)) + (property "Value" "" (id 1) (at 142.875 88.9 90)) + (property "Footprint" "" (id 2) (at 142.875 86.995 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 142.875 86.995 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 4e76a226-e224-4e24-9ffb-2129c9e51be8)) + (pin "2" (uuid 039e3e6e-0b76-439b-9fca-89c1f3d6534d)) + ) + + (symbol (lib_id "Device:Q_NPN_BEC") (at 35.56 107.315 0) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-000061c52c32) + (property "Reference" "Q1" (id 0) (at 40.4114 106.1466 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "" (id 1) (at 40.4114 108.458 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "" (id 2) (at 40.64 104.775 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 35.56 107.315 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid bfdeac1d-1900-4fe7-8eaf-287263db66c3)) + (pin "2" (uuid 8bab9647-23bb-4292-a91d-bdef75695ae1)) + (pin "3" (uuid 418bbf0c-aa8b-437b-809e-b09350c94759)) + ) + + (symbol (lib_id "Device:Buzzer") (at 41.91 98.425 0) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-000061c556db) + (property "Reference" "BZ1" (id 0) (at 33.655 97.155 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "" (id 1) (at 33.02 99.06 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "" (id 2) (at 41.275 95.885 90) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 41.275 95.885 90) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 4f912dac-1663-4dfc-bb86-583e6807d226)) + (pin "2" (uuid 5ff37c36-864d-44b4-a501-e236e776d0bb)) + ) + + (symbol (lib_id "power:+3V3") (at 71.12 29.21 0) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-000061c5613b) + (property "Reference" "#PWR06" (id 0) (at 71.12 33.02 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "" (id 1) (at 70.485 26.035 0)) + (property "Footprint" "" (id 2) (at 71.12 29.21 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 71.12 29.21 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 91c5bfa9-a1bf-4b7a-89fe-b88095966973)) + ) + + (symbol (lib_id "Device:C_Small") (at 52.07 21.59 0) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-000061c57f2c) + (property "Reference" "C3" (id 0) (at 52.07 19.685 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "" (id 1) (at 52.07 23.495 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "" (id 2) (at 52.07 21.59 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 52.07 21.59 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid e93d2cb7-c7de-4947-a07d-29826d69ce65)) + (pin "2" (uuid cb63d390-ae18-4177-ae1e-4953c2b31d98)) + ) + + (symbol (lib_id "Device:C_Small") (at 57.785 21.59 0) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-000061c5a31b) + (property "Reference" "C4" (id 0) (at 57.785 19.685 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "" (id 1) (at 57.785 23.495 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "" (id 2) (at 57.785 21.59 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 57.785 21.59 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid aea35d07-7a2b-417d-ab6d-691e86002508)) + (pin "2" (uuid bc3d80a0-fe7e-4a4f-ba9b-c97591f7e2e9)) + ) + + (symbol (lib_id "power:+3V3") (at 52.07 17.78 0) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-000061c5ae51) + (property "Reference" "#PWR04" (id 0) (at 52.07 21.59 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "" (id 1) (at 51.435 14.605 0)) + (property "Footprint" "" (id 2) (at 52.07 17.78 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 52.07 17.78 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid f3c94801-f0ea-4e26-9e79-60156b06f3c5)) + ) + + (symbol (lib_id "power:GND") (at 52.07 25.4 0) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-000061c5b2f6) + (property "Reference" "#PWR05" (id 0) (at 52.07 31.75 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "" (id 1) (at 52.07 28.575 0)) + (property "Footprint" "" (id 2) (at 52.07 25.4 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 52.07 25.4 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid fced2d3d-8656-4d8d-97fc-a3616a2c86cc)) + ) + + (symbol (lib_id "Device:R_Small") (at 46.99 38.1 270) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-000061c5e1f7) + (property "Reference" "R2" (id 0) (at 46.99 36.195 90)) + (property "Value" "" (id 1) (at 46.99 38.1 90)) + (property "Footprint" "" (id 2) (at 46.99 38.1 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 46.99 38.1 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 5ebfffee-8486-4718-97c7-eb5f2da91687)) + (pin "2" (uuid 7edd6c6e-85c5-4631-a89a-b4b476301479)) + ) + + (symbol (lib_id "Device:Crystal_Small") (at 35.56 34.925 270) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-000061c5fa39) + (property "Reference" "Y1" (id 0) (at 37.7952 33.7566 90) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "" (id 1) (at 37.7952 36.068 90) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "" (id 2) (at 35.56 34.925 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 35.56 34.925 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 8c81a97d-073f-4fdd-b40c-26c1c7352549)) + (pin "2" (uuid 82a7a9ac-553e-4365-b1d0-511b0b57655e)) + ) + + (symbol (lib_id "Device:C_Small") (at 30.48 31.75 270) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-000061c617e6) + (property "Reference" "C1" (id 0) (at 30.48 29.21 90)) + (property "Value" "" (id 1) (at 30.48 34.29 90)) + (property "Footprint" "" (id 2) (at 30.48 31.75 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 30.48 31.75 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid c21d152e-23f1-4185-a6d0-e16df99d838d)) + (pin "2" (uuid 9c764574-e4a1-4c67-843b-e84aa216a73a)) + ) + + (symbol (lib_id "Device:C_Small") (at 30.48 38.1 270) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-000061c62d85) + (property "Reference" "C2" (id 0) (at 32.385 36.83 90)) + (property "Value" "" (id 1) (at 30.48 40.64 90)) + (property "Footprint" "" (id 2) (at 30.48 38.1 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 30.48 38.1 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 95d47047-b5b6-4a5a-a49b-1be2b456fc63)) + (pin "2" (uuid 334b2e13-9957-4c17-80bc-baa647d78f6b)) + ) + + (symbol (lib_id "power:GND") (at 26.035 38.735 0) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-000061c63887) + (property "Reference" "#PWR01" (id 0) (at 26.035 45.085 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "" (id 1) (at 26.035 41.91 0)) + (property "Footprint" "" (id 2) (at 26.035 38.735 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 26.035 38.735 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid b57980a2-12ef-45d3-a574-a988fee38136)) + ) + + (symbol (lib_id "power:GND") (at 73.66 133.35 0) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-000061c67fc9) + (property "Reference" "#PWR07" (id 0) (at 73.66 139.7 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "" (id 1) (at 73.66 136.525 0)) + (property "Footprint" "" (id 2) (at 73.66 133.35 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 73.66 133.35 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 2078fb4c-642d-46ad-b63c-908a4ddaaa13)) + ) + + (symbol (lib_id "Connector:Screw_Terminal_01x02") (at 149.225 67.945 90) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-000061c68cae) + (property "Reference" "J3" (id 0) (at 146.685 67.945 0)) + (property "Value" "" (id 1) (at 150.495 65.405 90)) + (property "Footprint" "" (id 2) (at 149.225 67.945 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 149.225 67.945 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 5f49f91f-f9b1-4db4-9c7c-a4ae91fa58a3)) + (pin "2" (uuid 7207eebe-5787-4212-94c3-bd36bde4272c)) + ) + + (symbol (lib_id "power:+3V3") (at 38.1 94.615 0) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-000061c6926a) + (property "Reference" "#PWR02" (id 0) (at 38.1 98.425 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "" (id 1) (at 37.465 91.44 0)) + (property "Footprint" "" (id 2) (at 38.1 94.615 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 38.1 94.615 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 63cacd12-4ea0-4b01-8040-ad80a551d2d5)) + ) + + (symbol (lib_id "power:GND") (at 38.1 113.665 0) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-000061c6aa24) + (property "Reference" "#PWR03" (id 0) (at 38.1 120.015 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "" (id 1) (at 38.1 116.84 0)) + (property "Footprint" "" (id 2) (at 38.1 113.665 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 38.1 113.665 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 898da8de-d372-4eda-aefc-ce79f82d8eec)) + ) + + (symbol (lib_id "Device:R_Small") (at 26.67 107.315 270) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-000061c6d131) + (property "Reference" "R1" (id 0) (at 26.67 105.41 90)) + (property "Value" "" (id 1) (at 26.67 109.22 90)) + (property "Footprint" "" (id 2) (at 26.67 107.315 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 26.67 107.315 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid a2ff24bc-cbcc-4f09-80cb-47dcaee2637e)) + (pin "2" (uuid f216c1be-cf67-4bcb-8995-edc2200d1a03)) + ) + + (symbol (lib_id "power:+3V3") (at 117.475 20.32 0) (mirror y) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-000061c88d7f) + (property "Reference" "#PWR015" (id 0) (at 117.475 24.13 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "" (id 1) (at 116.84 17.145 0)) + (property "Footprint" "" (id 2) (at 117.475 20.32 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 117.475 20.32 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 64a352f8-67d2-418f-adbe-24d6ae3c3c22)) + ) + + (symbol (lib_id "power:GND") (at 117.475 27.94 0) (mirror y) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-000061c8a934) + (property "Reference" "#PWR016" (id 0) (at 117.475 34.29 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "" (id 1) (at 117.475 31.115 0)) + (property "Footprint" "" (id 2) (at 117.475 27.94 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 117.475 27.94 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid b61fb60e-f759-4e24-a84d-ac7421897d14)) + ) + + (symbol (lib_id "Device:R") (at 139.065 53.34 90) (mirror x) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-000061c8da64) + (property "Reference" "R12" (id 0) (at 139.065 51.435 90)) + (property "Value" "" (id 1) (at 139.065 53.34 90)) + (property "Footprint" "" (id 2) (at 139.065 51.562 90) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 139.065 53.34 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 4d162499-a94e-455b-9994-89e26c617761)) + (pin "2" (uuid 92d13f0d-ecc3-4286-829f-e1a28979f0ed)) + ) + + (symbol (lib_id "Device:R") (at 139.065 58.42 90) (mirror x) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-000061c8ef1c) + (property "Reference" "R13" (id 0) (at 139.065 56.515 90)) + (property "Value" "" (id 1) (at 139.065 58.42 90)) + (property "Footprint" "" (id 2) (at 139.065 56.642 90) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 139.065 58.42 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 40971fa9-71f1-4b62-8fc1-385c2cd33cd3)) + (pin "2" (uuid f712432c-87e9-44d4-90b4-515ca99d1dbb)) + ) + + (symbol (lib_id "power:GND") (at 117.475 59.69 0) (mirror y) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-000061c90051) + (property "Reference" "#PWR017" (id 0) (at 117.475 66.04 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "" (id 1) (at 117.475 62.865 0)) + (property "Footprint" "" (id 2) (at 117.475 59.69 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 117.475 59.69 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 4215958c-b886-4bf7-bd4b-f3a40e40d92b)) + ) + + (symbol (lib_id "power:+3V3") (at 115.57 42.545 0) (mirror y) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-000061c91860) + (property "Reference" "#PWR014" (id 0) (at 115.57 46.355 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "" (id 1) (at 114.935 39.37 0)) + (property "Footprint" "" (id 2) (at 115.57 42.545 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 115.57 42.545 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid d1c877a5-525b-430d-ad0f-19dbcb7b3c89)) + ) + + (symbol (lib_id "Device:R_Small") (at 115.57 46.355 0) (mirror y) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-000061c925e4) + (property "Reference" "R9" (id 0) (at 113.665 47.625 90) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "" (id 1) (at 117.475 48.26 90) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "" (id 2) (at 115.57 46.355 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 115.57 46.355 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid ac49d636-096c-40b8-bdf1-e99e36983236)) + (pin "2" (uuid eb0eced1-a655-40ba-8fc1-4b397b157519)) + ) + + (symbol (lib_id "Connector:Screw_Terminal_01x02") (at 165.735 36.83 0) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-000061c984ae) + (property "Reference" "J6" (id 0) (at 165.735 34.29 0)) + (property "Value" "" (id 1) (at 168.275 38.1 90)) + (property "Footprint" "" (id 2) (at 165.735 36.83 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 165.735 36.83 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 58296820-43ad-417d-8991-e95dfe9e8348)) + (pin "2" (uuid 9032cd62-60e1-420c-86a8-633ecbe4d894)) + ) + + (symbol (lib_id "Relay_SolidState:MOC3023M") (at 126.365 104.775 0) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-000061cae0bc) + (property "Reference" "U4" (id 0) (at 126.365 97.79 0)) + (property "Value" "" (id 1) (at 126.365 99.695 0)) + (property "Footprint" "" (id 2) (at 121.285 109.855 0) + (effects (font (size 1.27 1.27) italic) (justify left) hide) + ) + (property "Datasheet" "https://www.onsemi.com/pub/Collateral/MOC3023M-D.PDF" (id 3) (at 126.365 104.775 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + (pin "1" (uuid 3dafea57-ab12-4666-b392-b275b50d31ff)) + (pin "2" (uuid 7bb9ef67-4a95-4727-beb5-a2f6ec8b4a53)) + (pin "3" (uuid 4d1baf44-b5c2-4f0b-8732-6b18f7f19a0a)) + (pin "4" (uuid 568d7011-51ae-4c8f-ae1a-9c5255184102)) + (pin "5" (uuid d4b964cd-7379-47c8-9545-1f84dd012169)) + (pin "6" (uuid b4618381-c2ca-4128-9d26-7c0fb8deb004)) + ) + + (symbol (lib_id "Triac_Thyristor:BT138-800") (at 149.225 106.68 0) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-000061cae0c2) + (property "Reference" "Q3" (id 0) (at 142.875 106.045 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "" (id 1) (at 135.89 107.95 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "" (id 2) (at 154.305 108.585 0) + (effects (font (size 1.27 1.27) italic) (justify left) hide) + ) + (property "Datasheet" "https://assets.nexperia.com/documents/data-sheet/BT138_SER_D_E.pdf" (id 3) (at 149.225 106.68 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + (pin "1" (uuid 0bfda273-b31a-4987-bfba-b5c5ca3341f8)) + (pin "2" (uuid d829276c-60d5-48e8-9bed-72ff853afc8a)) + (pin "3" (uuid a608302d-1d06-49f8-ac7e-63c71ee89e45)) + ) + + (symbol (lib_id "Device:R_Small") (at 114.935 102.235 270) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-000061cae0c8) + (property "Reference" "R8" (id 0) (at 114.935 100.33 90)) + (property "Value" "" (id 1) (at 114.935 104.14 90)) + (property "Footprint" "" (id 2) (at 114.935 102.235 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 114.935 102.235 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid aceb5fe1-e857-44a2-ae24-24ad0056bd3b)) + (pin "2" (uuid 6d6e2047-4cde-42e7-a3dc-e8aab4537985)) + ) + + (symbol (lib_id "power:GND") (at 117.475 108.585 0) (mirror y) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-000061cae0d1) + (property "Reference" "#PWR019" (id 0) (at 117.475 114.935 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "" (id 1) (at 117.475 111.76 0)) + (property "Footprint" "" (id 2) (at 117.475 108.585 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 117.475 108.585 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid bf4105a0-0a03-49f7-8495-f40aa720200e)) + ) + + (symbol (lib_id "Device:R_Small") (at 137.795 102.235 270) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-000061cae0d9) + (property "Reference" "R11" (id 0) (at 137.795 100.33 90)) + (property "Value" "" (id 1) (at 137.795 104.14 90)) + (property "Footprint" "" (id 2) (at 137.795 102.235 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 137.795 102.235 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid c136c854-c3a3-4d90-a4b3-bda75590d99e)) + (pin "2" (uuid 38e683e3-19ad-4a17-be82-bbf9b76db425)) + ) + + (symbol (lib_id "Device:R_Small") (at 144.145 102.235 270) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-000061cae0df) + (property "Reference" "R17" (id 0) (at 144.145 100.33 90)) + (property "Value" "" (id 1) (at 144.145 104.14 90)) + (property "Footprint" "" (id 2) (at 144.145 102.235 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 144.145 102.235 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid f3844a9b-043c-4355-a795-34d1b785b00f)) + (pin "2" (uuid bc458a59-9fdc-4517-aa26-67058f29fea1)) + ) + + (symbol (lib_id "Device:R_Small") (at 142.875 113.03 270) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-000061cae0ed) + (property "Reference" "R15" (id 0) (at 142.875 111.125 90)) + (property "Value" "" (id 1) (at 142.875 114.935 90)) + (property "Footprint" "" (id 2) (at 142.875 113.03 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 142.875 113.03 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid b0b1f4ae-1ea4-4c5b-8d72-2015b91de951)) + (pin "2" (uuid 94a7314d-a261-4faf-bfc8-17a02e3853df)) + ) + + (symbol (lib_id "Connector:Screw_Terminal_01x02") (at 151.765 93.98 270) (mirror x) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-000061cae0fd) + (property "Reference" "J4" (id 0) (at 146.685 93.98 0)) + (property "Value" "" (id 1) (at 150.495 91.44 90)) + (property "Footprint" "" (id 2) (at 151.765 93.98 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 151.765 93.98 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid ff68af9a-00b5-4aea-aa45-3cf8d901c426)) + (pin "2" (uuid d432b047-d065-48c2-bb63-c4300dfc90cd)) + ) + + (symbol (lib_id "Device:R_Small") (at 114.935 76.2 270) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-000061d21cef) + (property "Reference" "R7" (id 0) (at 114.935 74.295 90)) + (property "Value" "" (id 1) (at 114.935 78.105 90)) + (property "Footprint" "" (id 2) (at 114.935 76.2 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 114.935 76.2 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 1c96549e-8964-4610-bfdc-926aa955634a)) + (pin "2" (uuid b6858c19-0509-4ada-854f-7de38de04140)) + ) + + (symbol (lib_id "power:GND") (at 117.475 82.55 0) (mirror y) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-000061d2816e) + (property "Reference" "#PWR018" (id 0) (at 117.475 88.9 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "" (id 1) (at 117.475 85.725 0)) + (property "Footprint" "" (id 2) (at 117.475 82.55 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 117.475 82.55 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid c61a0729-767b-474d-a1af-c136f337fd8c)) + ) + + (symbol (lib_id "Device:R_Small") (at 137.795 76.2 270) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-000061d2dbf2) + (property "Reference" "R10" (id 0) (at 137.795 74.295 90)) + (property "Value" "" (id 1) (at 137.795 78.105 90)) + (property "Footprint" "" (id 2) (at 137.795 76.2 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 137.795 76.2 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid b95bf5f2-8a35-49d4-8bc9-c9f3b79c5be0)) + (pin "2" (uuid a4987860-0088-439b-a5b8-087baceb074b)) + ) + + (symbol (lib_id "Device:R_Small") (at 144.145 76.2 270) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-000061d2eec6) + (property "Reference" "R16" (id 0) (at 144.145 74.295 90)) + (property "Value" "" (id 1) (at 144.145 78.105 90)) + (property "Footprint" "" (id 2) (at 144.145 76.2 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 144.145 76.2 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 7ecd06df-82ed-4b1d-a19d-734b4555b8af)) + (pin "2" (uuid aaed5fee-7a91-418a-abaf-e2d62579770f)) + ) + + (symbol (lib_id "Device:C_Small") (at 105.41 24.13 0) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-000061d5351c) + (property "Reference" "C5" (id 0) (at 105.41 22.225 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "" (id 1) (at 105.41 26.035 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "" (id 2) (at 105.41 24.13 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 105.41 24.13 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid e1939525-06d0-42c6-8c6e-47b1affd67ce)) + (pin "2" (uuid bbef9192-b908-4c99-a476-3ec6fd8068b2)) + ) + + (symbol (lib_id "Device:C_Small") (at 111.125 24.13 0) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-000061d53522) + (property "Reference" "C6" (id 0) (at 111.125 22.225 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "" (id 1) (at 111.125 26.035 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "" (id 2) (at 111.125 24.13 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 111.125 24.13 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 7bf398b6-6526-4803-b042-ba05701e7232)) + (pin "2" (uuid 29bbf511-0af3-4811-94a7-f55d36a59cae)) + ) + + (symbol (lib_id "power:+3V3") (at 105.41 20.32 0) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-000061d53528) + (property "Reference" "#PWR012" (id 0) (at 105.41 24.13 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "" (id 1) (at 104.775 17.145 0)) + (property "Footprint" "" (id 2) (at 105.41 20.32 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 105.41 20.32 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 6e1f8741-d936-4464-9a30-ffe277d7a3f4)) + ) + + (symbol (lib_id "power:GND") (at 105.41 27.94 0) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-000061d5352e) + (property "Reference" "#PWR013" (id 0) (at 105.41 34.29 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "" (id 1) (at 105.41 31.115 0)) + (property "Footprint" "" (id 2) (at 105.41 27.94 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 105.41 27.94 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid b0b1df72-cf80-4f2a-b792-a268ad001e2c)) + ) + + (symbol (lib_id "Connector_Generic:Conn_01x04") (at 114.3 126.365 0) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-000061d5dac8) + (property "Reference" "J1" (id 0) (at 113.03 121.285 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "" (id 1) (at 116.84 131.445 90) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "" (id 2) (at 114.3 126.365 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 114.3 126.365 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid e1d8bef0-d127-48c8-8f96-e6cc113807cc)) + (pin "2" (uuid 2bc4e7e5-f5da-47a3-87a1-d2d15b5d2501)) + (pin "3" (uuid bf216078-91b7-4ac9-b268-1ad29b832fad)) + (pin "4" (uuid 5b7b95ce-9ffb-4a75-b514-897308bd1ae7)) + ) + + (symbol (lib_id "power:GND") (at 100.965 126.365 270) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-000061d60698) + (property "Reference" "#PWR09" (id 0) (at 94.615 126.365 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "" (id 1) (at 96.52 126.365 90)) + (property "Footprint" "" (id 2) (at 100.965 126.365 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 100.965 126.365 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid ec9b0c92-d2b2-4381-87d4-8fa892c157f1)) + ) + + (symbol (lib_id "power:+3V3") (at 100.965 123.825 90) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-000061d6493a) + (property "Reference" "#PWR08" (id 0) (at 104.775 123.825 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "" (id 1) (at 95.885 123.825 90)) + (property "Footprint" "" (id 2) (at 100.965 123.825 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 100.965 123.825 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid f42e774a-5e04-4991-b0ee-30a94f3f8deb)) + ) + + (symbol (lib_id "Device:R_Small") (at 104.775 128.905 270) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-000061d6e92c) + (property "Reference" "R3" (id 0) (at 107.95 127.635 90)) + (property "Value" "" (id 1) (at 104.775 128.905 90)) + (property "Footprint" "" (id 2) (at 104.775 128.905 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 104.775 128.905 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 89503aed-0154-4ea8-bc3d-8c48181b41b7)) + (pin "2" (uuid ff501ba3-deca-4bcb-93ab-056838a884f1)) + ) + + (symbol (lib_id "Device:R_Small") (at 104.775 131.445 270) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-000061d705e3) + (property "Reference" "R4" (id 0) (at 104.775 133.35 90)) + (property "Value" "" (id 1) (at 104.775 131.445 90)) + (property "Footprint" "" (id 2) (at 104.775 131.445 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 104.775 131.445 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid b4903633-2798-480c-85c0-1faee52e2d85)) + (pin "2" (uuid 766ec27c-fc85-41ea-a85c-a07c334b6c9c)) + ) + + (symbol (lib_id "Connector_Generic:Conn_01x08") (at 114.3 146.05 0) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-000061d92a4a) + (property "Reference" "J2" (id 0) (at 113.03 135.89 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "" (id 1) (at 116.84 151.765 90) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "" (id 2) (at 114.3 146.05 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 114.3 146.05 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 1bba3797-b314-459b-a3c9-1306d9deade8)) + (pin "2" (uuid 9e625225-3af4-48f5-b70e-b5ac45ba154c)) + (pin "3" (uuid bf14062f-c3ba-4c70-b1b1-42ac9b3174c6)) + (pin "4" (uuid bc44bb34-be67-4306-b1a3-b19b745a3b05)) + (pin "5" (uuid 928954e5-48a9-4248-8ce1-62ae3fd28c04)) + (pin "6" (uuid 12fb039a-4e78-415f-b551-bcee593ea55a)) + (pin "7" (uuid 3ac576b0-d70e-43f1-be4a-93b71e3d21ac)) + (pin "8" (uuid 1edefeb0-29cf-4911-9ed0-e19a8768aeed)) + ) + + (symbol (lib_id "power:GND") (at 100.965 140.97 270) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-000061d945a8) + (property "Reference" "#PWR011" (id 0) (at 94.615 140.97 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "" (id 1) (at 96.52 140.97 90)) + (property "Footprint" "" (id 2) (at 100.965 140.97 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 100.965 140.97 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid fce68424-3b6d-4925-a20d-6e02f8cdba4b)) + ) + + (symbol (lib_id "power:+3V3") (at 100.965 138.43 90) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-000061d945ae) + (property "Reference" "#PWR010" (id 0) (at 104.775 138.43 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "" (id 1) (at 95.885 138.43 90)) + (property "Footprint" "" (id 2) (at 100.965 138.43 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 100.965 138.43 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 7f3e5938-c161-4f7c-8941-5f76556dd6cf)) + ) + + (symbol (lib_id "Device:R_Small") (at 104.775 143.51 270) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-000061d99899) + (property "Reference" "R5" (id 0) (at 107.95 142.24 90)) + (property "Value" "" (id 1) (at 104.775 143.51 90)) + (property "Footprint" "" (id 2) (at 104.775 143.51 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 104.775 143.51 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid c7c70dab-79fe-43fd-8622-ed472d69d0d8)) + (pin "2" (uuid ba8a648e-b7a9-4b5b-8cba-654d1afe5b28)) + ) + + (symbol (lib_id "Device:R_Small") (at 104.775 146.05 270) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-000061d9989f) + (property "Reference" "R6" (id 0) (at 107.95 144.78 90)) + (property "Value" "" (id 1) (at 104.775 146.05 90)) + (property "Footprint" "" (id 2) (at 104.775 146.05 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 104.775 146.05 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 5a02e9df-15b1-4c71-8a98-4ef97b8fad58)) + (pin "2" (uuid a0890677-fae3-4585-85b4-d44464238a70)) + ) + + (symbol (lib_id "power:PWR_FLAG") (at 160.02 34.925 0) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-000061df12cc) + (property "Reference" "#FLG01" (id 0) (at 160.02 33.02 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "" (id 1) (at 160.02 30.5308 0)) + (property "Footprint" "" (id 2) (at 160.02 34.925 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 160.02 34.925 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid da51e18a-65ae-4d85-9c63-db7939aaf181)) + ) + + (symbol (lib_id "power:PWR_FLAG") (at 160.02 41.275 180) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-000061df236d) + (property "Reference" "#FLG02" (id 0) (at 160.02 43.18 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "" (id 1) (at 160.02 45.6692 0)) + (property "Footprint" "" (id 2) (at 160.02 41.275 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 160.02 41.275 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid b4413ee0-5196-4d81-89d6-8281a1e8480b)) + ) + + (symbol (lib_id "Connector_Generic:Conn_02x07_Odd_Even") (at 149.225 137.795 0) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-000061e01d46) + (property "Reference" "J5" (id 0) (at 150.495 127.635 0)) + (property "Value" "" (id 1) (at 150.495 137.795 90)) + (property "Footprint" "" (id 2) (at 149.225 137.795 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 149.225 137.795 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 7f1c0391-0d6e-433d-a99a-5ff07ed0c341)) + (pin "10" (uuid daab80b0-2a7a-4902-8b14-70644be506ea)) + (pin "11" (uuid c017515c-c1ff-454d-802b-df0de66821da)) + (pin "12" (uuid 90721530-a77d-4d65-bce4-b73dbf658024)) + (pin "13" (uuid 9ffcbaf5-055f-4d24-b42c-30a677de914d)) + (pin "14" (uuid d282eaab-0941-4362-824c-c13c58d84675)) + (pin "2" (uuid fc992b6f-5792-47c4-b013-73b859226317)) + (pin "3" (uuid 51c2d0c8-7c62-43b6-af5c-cda074a02464)) + (pin "4" (uuid 9b637a21-9249-4729-bb2c-a78284e86fa3)) + (pin "5" (uuid ac2d6a87-fb3a-4876-acb2-c12434745ace)) + (pin "6" (uuid 11fdbb3a-604b-4194-991e-7febf95f0a15)) + (pin "7" (uuid 0af6aff1-cfec-4b3c-900c-7b019bb854ab)) + (pin "8" (uuid e74b5b1c-40cd-492d-b779-0280f85a7cba)) + (pin "9" (uuid 6aaa8678-33c9-40fa-b59f-e6d14918dc4b)) + ) + + (symbol (lib_id "power:+3V3") (at 142.24 132.715 90) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-000061e035c5) + (property "Reference" "#PWR020" (id 0) (at 146.05 132.715 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "" (id 1) (at 137.16 132.715 90)) + (property "Footprint" "" (id 2) (at 142.24 132.715 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 142.24 132.715 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid a12a6254-5680-4417-9bc3-7c285e7f184c)) + ) + + (symbol (lib_id "power:GND") (at 142.24 146.05 0) (mirror y) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-000061e2b9b6) + (property "Reference" "#PWR021" (id 0) (at 142.24 152.4 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "" (id 1) (at 142.24 149.225 0)) + (property "Footprint" "" (id 2) (at 142.24 146.05 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 142.24 146.05 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid dac8457f-6a1d-413e-8193-3dc9cf06cf8e)) + ) + + (symbol (lib_id "Device:R_Small") (at 160.655 132.715 270) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-000061e444d0) + (property "Reference" "R18" (id 0) (at 160.655 130.81 90)) + (property "Value" "" (id 1) (at 160.655 132.715 90)) + (property "Footprint" "" (id 2) (at 160.655 132.715 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 160.655 132.715 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 78dc994e-03c3-410e-aa42-9eee714cfa9f)) + (pin "2" (uuid 076986ed-0173-4f33-96ff-81ecb3dc2076)) + ) + + (symbol (lib_id "Device:R_Small") (at 160.655 135.255 270) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-000061e45925) + (property "Reference" "R19" (id 0) (at 160.655 137.16 90)) + (property "Value" "" (id 1) (at 160.655 135.255 90)) + (property "Footprint" "" (id 2) (at 160.655 135.255 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 160.655 135.255 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid bc4dbc65-9321-418a-a912-0c5608e24d87)) + (pin "2" (uuid 96fa58cf-32cd-4620-8a77-5c506c9f3df5)) + ) + + (symbol (lib_id "Device:R_Small") (at 160.655 142.875 270) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-000061e4a7da) + (property "Reference" "R20" (id 0) (at 160.655 140.97 90)) + (property "Value" "" (id 1) (at 160.655 142.875 90)) + (property "Footprint" "" (id 2) (at 160.655 142.875 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 160.655 142.875 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 78eb6852-e55d-4f6d-977a-97e941482a94)) + (pin "2" (uuid 78f23362-a8a4-4566-a3de-00eed7a6b697)) + ) + + (symbol (lib_id "Device:C_Small") (at 163.83 146.05 0) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-000061e5fba3) + (property "Reference" "C7" (id 0) (at 165.735 146.05 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "" (id 1) (at 163.83 147.955 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "" (id 2) (at 163.83 146.05 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 163.83 146.05 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 4ebebfcd-4ad7-4ae8-acc6-8ff2b13d8c14)) + (pin "2" (uuid 601a0c47-5dbd-43aa-8c6d-021ad6383850)) + ) + + (symbol (lib_id "power:GND") (at 163.83 149.86 0) (mirror y) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-000061e79114) + (property "Reference" "#PWR022" (id 0) (at 163.83 156.21 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "" (id 1) (at 163.83 153.035 0)) + (property "Footprint" "" (id 2) (at 163.83 149.86 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 163.83 149.86 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid a6c11319-c060-4c44-b698-e94754dc1828)) + ) + + (symbol (lib_id "Mechanical:MountingHole") (at 15.875 136.525 0) (unit 1) + (in_bom yes) (on_board yes) + (uuid 00000000-0000-0000-0000-000061f02955) + (property "Reference" "H1" (id 0) (at 18.415 135.3566 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "" (id 1) (at 18.415 137.668 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "" (id 2) (at 15.875 136.525 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 15.875 136.525 0) + (effects (font (size 1.27 1.27)) hide) + ) + ) + + (sheet_instances + (path "/" (page "1")) + ) + + (symbol_instances + (path "/00000000-0000-0000-0000-000061df12cc" + (reference "#FLG01") (unit 1) (value "PWR_FLAG") (footprint "") + ) + (path "/00000000-0000-0000-0000-000061df236d" + (reference "#FLG02") (unit 1) (value "PWR_FLAG") (footprint "") + ) + (path "/00000000-0000-0000-0000-000061c63887" + (reference "#PWR01") (unit 1) (value "GND") (footprint "") + ) + (path "/00000000-0000-0000-0000-000061c6926a" + (reference "#PWR02") (unit 1) (value "+3V3") (footprint "") + ) + (path "/00000000-0000-0000-0000-000061c6aa24" + (reference "#PWR03") (unit 1) (value "GND") (footprint "") + ) + (path "/00000000-0000-0000-0000-000061c5ae51" + (reference "#PWR04") (unit 1) (value "+3V3") (footprint "") + ) + (path "/00000000-0000-0000-0000-000061c5b2f6" + (reference "#PWR05") (unit 1) (value "GND") (footprint "") + ) + (path "/00000000-0000-0000-0000-000061c5613b" + (reference "#PWR06") (unit 1) (value "+3V3") (footprint "") + ) + (path "/00000000-0000-0000-0000-000061c67fc9" + (reference "#PWR07") (unit 1) (value "GND") (footprint "") + ) + (path "/00000000-0000-0000-0000-000061d6493a" + (reference "#PWR08") (unit 1) (value "+3V3") (footprint "") + ) + (path "/00000000-0000-0000-0000-000061d60698" + (reference "#PWR09") (unit 1) (value "GND") (footprint "") + ) + (path "/00000000-0000-0000-0000-000061d945ae" + (reference "#PWR010") (unit 1) (value "+3V3") (footprint "") + ) + (path "/00000000-0000-0000-0000-000061d945a8" + (reference "#PWR011") (unit 1) (value "GND") (footprint "") + ) + (path "/00000000-0000-0000-0000-000061d53528" + (reference "#PWR012") (unit 1) (value "+3V3") (footprint "") + ) + (path "/00000000-0000-0000-0000-000061d5352e" + (reference "#PWR013") (unit 1) (value "GND") (footprint "") + ) + (path "/00000000-0000-0000-0000-000061c91860" + (reference "#PWR014") (unit 1) (value "+3V3") (footprint "") + ) + (path "/00000000-0000-0000-0000-000061c88d7f" + (reference "#PWR015") (unit 1) (value "+3V3") (footprint "") + ) + (path "/00000000-0000-0000-0000-000061c8a934" + (reference "#PWR016") (unit 1) (value "GND") (footprint "") + ) + (path "/00000000-0000-0000-0000-000061c90051" + (reference "#PWR017") (unit 1) (value "GND") (footprint "") + ) + (path "/00000000-0000-0000-0000-000061d2816e" + (reference "#PWR018") (unit 1) (value "GND") (footprint "") + ) + (path "/00000000-0000-0000-0000-000061cae0d1" + (reference "#PWR019") (unit 1) (value "GND") (footprint "") + ) + (path "/00000000-0000-0000-0000-000061e035c5" + (reference "#PWR020") (unit 1) (value "+3V3") (footprint "") + ) + (path "/00000000-0000-0000-0000-000061e2b9b6" + (reference "#PWR021") (unit 1) (value "GND") (footprint "") + ) + (path "/00000000-0000-0000-0000-000061e79114" + (reference "#PWR022") (unit 1) (value "GND") (footprint "") + ) + (path "/00000000-0000-0000-0000-000061c556db" + (reference "BZ1") (unit 1) (value "Buzzer") (footprint "my_additions:Buzzer_D9_H5.5") + ) + (path "/00000000-0000-0000-0000-000061c617e6" + (reference "C1") (unit 1) (value "30p") (footprint "Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder") + ) + (path "/00000000-0000-0000-0000-000061c62d85" + (reference "C2") (unit 1) (value "30p") (footprint "Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder") + ) + (path "/00000000-0000-0000-0000-000061c57f2c" + (reference "C3") (unit 1) (value "4u7") (footprint "Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder") + ) + (path "/00000000-0000-0000-0000-000061c5a31b" + (reference "C4") (unit 1) (value "100n") (footprint "Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder") + ) + (path "/00000000-0000-0000-0000-000061d5351c" + (reference "C5") (unit 1) (value "4u7") (footprint "Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder") + ) + (path "/00000000-0000-0000-0000-000061d53522" + (reference "C6") (unit 1) (value "100n") (footprint "Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder") + ) + (path "/00000000-0000-0000-0000-000061e5fba3" + (reference "C7") (unit 1) (value "100n") (footprint "Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder") + ) + (path "/00000000-0000-0000-0000-000061f02955" + (reference "H1") (unit 1) (value "MountingHole") (footprint "MountingHole:MountingHole_3.2mm_M3") + ) + (path "/00000000-0000-0000-0000-000061d5dac8" + (reference "J1") (unit 1) (value "BME280") (footprint "Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical") + ) + (path "/00000000-0000-0000-0000-000061d92a4a" + (reference "J2") (unit 1) (value "Front Panel") (footprint "Connector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_Vertical") + ) + (path "/00000000-0000-0000-0000-000061c68cae" + (reference "J3") (unit 1) (value "Heater") (footprint "TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-3-2-5.08_1x02_P5.08mm_Horizontal") + ) + (path "/00000000-0000-0000-0000-000061cae0fd" + (reference "J4") (unit 1) (value "Fan") (footprint "TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-3-2-5.08_1x02_P5.08mm_Horizontal") + ) + (path "/00000000-0000-0000-0000-000061e01d46" + (reference "J5") (unit 1) (value "SWD") (footprint "Connector_PinHeader_1.27mm:PinHeader_2x07_P1.27mm_Vertical_SMD") + ) + (path "/00000000-0000-0000-0000-000061c984ae" + (reference "J6") (unit 1) (value "220V") (footprint "TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-3-2-5.08_1x02_P5.08mm_Horizontal") + ) + (path "/00000000-0000-0000-0000-000061c4985c" + (reference "PS1") (unit 1) (value "HLK-PM03") (footprint "Converter_ACDC:Converter_ACDC_HiLink_HLK-PMxx") + ) + (path "/00000000-0000-0000-0000-000061c52c32" + (reference "Q1") (unit 1) (value "LBC817") (footprint "Package_TO_SOT_SMD:SOT-23_Handsoldering") + ) + (path "/00000000-0000-0000-0000-000061c4cfc6" + (reference "Q2") (unit 1) (value "BT138-800") (footprint "Package_TO_SOT_THT:TO-220-3_Vertical") + ) + (path "/00000000-0000-0000-0000-000061cae0c2" + (reference "Q3") (unit 1) (value "BT138-800") (footprint "Package_TO_SOT_THT:TO-220-3_Vertical") + ) + (path "/00000000-0000-0000-0000-000061c6d131" + (reference "R1") (unit 1) (value "220") (footprint "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder") + ) + (path "/00000000-0000-0000-0000-000061c5e1f7" + (reference "R2") (unit 1) (value "0") (footprint "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder") + ) + (path "/00000000-0000-0000-0000-000061d6e92c" + (reference "R3") (unit 1) (value "120") (footprint "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder") + ) + (path "/00000000-0000-0000-0000-000061d705e3" + (reference "R4") (unit 1) (value "120") (footprint "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder") + ) + (path "/00000000-0000-0000-0000-000061d99899" + (reference "R5") (unit 1) (value "120") (footprint "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder") + ) + (path "/00000000-0000-0000-0000-000061d9989f" + (reference "R6") (unit 1) (value "120") (footprint "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder") + ) + (path "/00000000-0000-0000-0000-000061d21cef" + (reference "R7") (unit 1) (value "270") (footprint "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder") + ) + (path "/00000000-0000-0000-0000-000061cae0c8" + (reference "R8") (unit 1) (value "270") (footprint "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder") + ) + (path "/00000000-0000-0000-0000-000061c925e4" + (reference "R9") (unit 1) (value "10k") (footprint "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder") + ) + (path "/00000000-0000-0000-0000-000061d2dbf2" + (reference "R10") (unit 1) (value "220") (footprint "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder") + ) + (path "/00000000-0000-0000-0000-000061cae0d9" + (reference "R11") (unit 1) (value "220") (footprint "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder") + ) + (path "/00000000-0000-0000-0000-000061c8da64" + (reference "R12") (unit 1) (value "47k") (footprint "Resistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolder") + ) + (path "/00000000-0000-0000-0000-000061c8ef1c" + (reference "R13") (unit 1) (value "47k") (footprint "Resistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolder") + ) + (path "/00000000-0000-0000-0000-000061c517c6" + (reference "R14") (unit 1) (value "470") (footprint "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder") + ) + (path "/00000000-0000-0000-0000-000061cae0ed" + (reference "R15") (unit 1) (value "470") (footprint "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder") + ) + (path "/00000000-0000-0000-0000-000061d2eec6" + (reference "R16") (unit 1) (value "220") (footprint "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder") + ) + (path "/00000000-0000-0000-0000-000061cae0df" + (reference "R17") (unit 1) (value "220") (footprint "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder") + ) + (path "/00000000-0000-0000-0000-000061e444d0" + (reference "R18") (unit 1) (value "22") (footprint "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder") + ) + (path "/00000000-0000-0000-0000-000061e45925" + (reference "R19") (unit 1) (value "22") (footprint "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder") + ) + (path "/00000000-0000-0000-0000-000061e4a7da" + (reference "R20") (unit 1) (value "22") (footprint "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder") + ) + (path "/00000000-0000-0000-0000-000061c46d88" + (reference "U1") (unit 1) (value "STM32G070RBTx") (footprint "Package_QFP:LQFP-64_10x10mm_P0.5mm") + ) + (path "/00000000-0000-0000-0000-000061c4acca" + (reference "U2") (unit 1) (value "LTV-814") (footprint "my_additions:OPTO-SMD4") + ) + (path "/00000000-0000-0000-0000-000061c4be67" + (reference "U3") (unit 1) (value "MOC3023M") (footprint "Package_DIP:DIP-6_W7.62mm_LongPads") + ) + (path "/00000000-0000-0000-0000-000061cae0bc" + (reference "U4") (unit 1) (value "MOC3023M") (footprint "Package_DIP:DIP-6_W7.62mm_LongPads") + ) + (path "/00000000-0000-0000-0000-000061c5fa39" + (reference "Y1") (unit 1) (value "16MHz") (footprint "my_additions:OSC-TH_L10.0-W4.5-P5.00") + ) + ) +) diff --git a/kicad/filadry2.net b/kicad/filadry2.net new file mode 100644 index 0000000..01871a8 --- /dev/null +++ b/kicad/filadry2.net @@ -0,0 +1,936 @@ +(export (version D) + (design + (source G:\ownCloud\Projects\FilaDry2\kicad\filadry2.sch) + (date "25.12.2021 2:14:06") + (tool "Eeschema (5.1.9)-1") + (sheet (number 1) (name /) (tstamps /) + (title_block + (title) + (company) + (rev) + (date) + (source filadry2.sch) + (comment (number 1) (value "")) + (comment (number 2) (value "")) + (comment (number 3) (value "")) + (comment (number 4) (value ""))))) + (components + (comp (ref U1) + (value STM32G070RBTx) + (footprint Package_QFP:LQFP-64_10x10mm_P0.5mm) + (libsource (lib my_additions) (part STM32G070RBTx) (description "Mainstream Value line, Arm Cortex-M0+ MCU with 128 Kbytes of Flash memory, 36 Kbytes RAM, 64 MHz CPU, 4x USART, timers, ADC, comm. I/F, 2-3.6V, LQFP-64")) + (sheetpath (names /) (tstamps /)) + (tstamp 61C46D88)) + (comp (ref PS1) + (value HLK-PM03) + (footprint Converter_ACDC:Converter_ACDC_HiLink_HLK-PMxx) + (datasheet http://www.hlktech.net/product_detail.php?ProId=59) + (libsource (lib Converter_ACDC) (part HLK-PM03) (description "Compact AC/DC board mount power module 3W 3V3")) + (sheetpath (names /) (tstamps /)) + (tstamp 61C4985C)) + (comp (ref U2) + (value LTV-814) + (footprint my_additions:OPTO-SMD4) + (datasheet https://optoelectronics.liteon.com/upload/download/DS-70-96-0013/LTV-8X4%20series%20201509.pdf) + (libsource (lib Isolator) (part LTV-814) (description "AC/DC Optocoupler, Vce 35V, CTR 20%, DIP4")) + (sheetpath (names /) (tstamps /)) + (tstamp 61C4ACCA)) + (comp (ref U3) + (value MOC3023M) + (footprint Package_DIP:DIP-6_W7.62mm_LongPads) + (datasheet https://www.onsemi.com/pub/Collateral/MOC3023M-D.PDF) + (libsource (lib Relay_SolidState) (part MOC3023M) (description "Random Phase Opto-Triac, Vdrm 400V, Ift 5mA, DIP6")) + (sheetpath (names /) (tstamps /)) + (tstamp 61C4BE67)) + (comp (ref Q2) + (value BT138-800) + (footprint Package_TO_SOT_THT:TO-220-3_Vertical) + (datasheet https://assets.nexperia.com/documents/data-sheet/BT138_SER_D_E.pdf) + (libsource (lib Triac_Thyristor) (part BT138-800) (description "12A RMS, 800V Off-State Voltage, Triac, TO-220")) + (sheetpath (names /) (tstamps /)) + (tstamp 61C4CFC6)) + (comp (ref Q1) + (value LBC817) + (footprint Package_TO_SOT_SMD:SOT-23_Handsoldering) + (datasheet ~) + (libsource (lib Device) (part Q_NPN_BEC) (description "NPN transistor, base/emitter/collector")) + (sheetpath (names /) (tstamps /)) + (tstamp 61C52C32)) + (comp (ref BZ1) + (value Buzzer) + (footprint my_additions:Buzzer_D9_H5.5) + (datasheet ~) + (libsource (lib Device) (part Buzzer) (description "Buzzer, polarized")) + (sheetpath (names /) (tstamps /)) + (tstamp 61C556DB)) + (comp (ref C3) + (value 4u7) + (footprint Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder) + (datasheet ~) + (libsource (lib Device) (part C_Small) (description "Unpolarized capacitor, small symbol")) + (sheetpath (names /) (tstamps /)) + (tstamp 61C57F2C)) + (comp (ref C4) + (value 100n) + (footprint Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder) + (datasheet ~) + (libsource (lib Device) (part C_Small) (description "Unpolarized capacitor, small symbol")) + (sheetpath (names /) (tstamps /)) + (tstamp 61C5A31B)) + (comp (ref R2) + (value 0) + (footprint Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder) + (datasheet ~) + (libsource (lib Device) (part R_Small) (description "Resistor, small symbol")) + (sheetpath (names /) (tstamps /)) + (tstamp 61C5E1F7)) + (comp (ref Y1) + (value 16MHz) + (footprint my_additions:OSC-TH_L10.0-W4.5-P5.00) + (datasheet ~) + (libsource (lib Device) (part Crystal_Small) (description "Two pin crystal, small symbol")) + (sheetpath (names /) (tstamps /)) + (tstamp 61C5FA39)) + (comp (ref C1) + (value 30p) + (footprint Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder) + (datasheet ~) + (libsource (lib Device) (part C_Small) (description "Unpolarized capacitor, small symbol")) + (sheetpath (names /) (tstamps /)) + (tstamp 61C617E6)) + (comp (ref C2) + (value 30p) + (footprint Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder) + (datasheet ~) + (libsource (lib Device) (part C_Small) (description "Unpolarized capacitor, small symbol")) + (sheetpath (names /) (tstamps /)) + (tstamp 61C62D85)) + (comp (ref R1) + (value 220) + (footprint Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder) + (datasheet ~) + (libsource (lib Device) (part R_Small) (description "Resistor, small symbol")) + (sheetpath (names /) (tstamps /)) + (tstamp 61C6D131)) + (comp (ref R12) + (value 47k) + (footprint Resistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolder) + (datasheet ~) + (libsource (lib Device) (part R) (description Resistor)) + (sheetpath (names /) (tstamps /)) + (tstamp 61C8DA64)) + (comp (ref R13) + (value 47k) + (footprint Resistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolder) + (datasheet ~) + (libsource (lib Device) (part R) (description Resistor)) + (sheetpath (names /) (tstamps /)) + (tstamp 61C8EF1C)) + (comp (ref R9) + (value 10k) + (footprint Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder) + (datasheet ~) + (libsource (lib Device) (part R_Small) (description "Resistor, small symbol")) + (sheetpath (names /) (tstamps /)) + (tstamp 61C925E4)) + (comp (ref J6) + (value 220V) + (footprint TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-3-2-5.08_1x02_P5.08mm_Horizontal) + (datasheet ~) + (libsource (lib Connector) (part Screw_Terminal_01x02) (description "Generic screw terminal, single row, 01x02, script generated (kicad-library-utils/schlib/autogen/connector/)")) + (sheetpath (names /) (tstamps /)) + (tstamp 61C984AE)) + (comp (ref R7) + (value 270) + (footprint Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder) + (datasheet ~) + (libsource (lib Device) (part R_Small) (description "Resistor, small symbol")) + (sheetpath (names /) (tstamps /)) + (tstamp 61D21CEF)) + (comp (ref R10) + (value 220) + (footprint Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder) + (datasheet ~) + (libsource (lib Device) (part R_Small) (description "Resistor, small symbol")) + (sheetpath (names /) (tstamps /)) + (tstamp 61D2DBF2)) + (comp (ref R16) + (value 220) + (footprint Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder) + (datasheet ~) + (libsource (lib Device) (part R_Small) (description "Resistor, small symbol")) + (sheetpath (names /) (tstamps /)) + (tstamp 61D2EEC6)) + (comp (ref R14) + (value 470) + (footprint Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder) + (datasheet ~) + (libsource (lib Device) (part R_Small) (description "Resistor, small symbol")) + (sheetpath (names /) (tstamps /)) + (tstamp 61C517C6)) + (comp (ref J3) + (value Heater) + (footprint TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-3-2-5.08_1x02_P5.08mm_Horizontal) + (datasheet ~) + (libsource (lib Connector) (part Screw_Terminal_01x02) (description "Generic screw terminal, single row, 01x02, script generated (kicad-library-utils/schlib/autogen/connector/)")) + (sheetpath (names /) (tstamps /)) + (tstamp 61C68CAE)) + (comp (ref U4) + (value MOC3023M) + (footprint Package_DIP:DIP-6_W7.62mm_LongPads) + (datasheet https://www.onsemi.com/pub/Collateral/MOC3023M-D.PDF) + (libsource (lib Relay_SolidState) (part MOC3023M) (description "Random Phase Opto-Triac, Vdrm 400V, Ift 5mA, DIP6")) + (sheetpath (names /) (tstamps /)) + (tstamp 61CAE0BC)) + (comp (ref Q3) + (value BT138-800) + (footprint Package_TO_SOT_THT:TO-220-3_Vertical) + (datasheet https://assets.nexperia.com/documents/data-sheet/BT138_SER_D_E.pdf) + (libsource (lib Triac_Thyristor) (part BT138-800) (description "12A RMS, 800V Off-State Voltage, Triac, TO-220")) + (sheetpath (names /) (tstamps /)) + (tstamp 61CAE0C2)) + (comp (ref R8) + (value 270) + (footprint Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder) + (datasheet ~) + (libsource (lib Device) (part R_Small) (description "Resistor, small symbol")) + (sheetpath (names /) (tstamps /)) + (tstamp 61CAE0C8)) + (comp (ref R11) + (value 220) + (footprint Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder) + (datasheet ~) + (libsource (lib Device) (part R_Small) (description "Resistor, small symbol")) + (sheetpath (names /) (tstamps /)) + (tstamp 61CAE0D9)) + (comp (ref R17) + (value 220) + (footprint Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder) + (datasheet ~) + (libsource (lib Device) (part R_Small) (description "Resistor, small symbol")) + (sheetpath (names /) (tstamps /)) + (tstamp 61CAE0DF)) + (comp (ref R15) + (value 470) + (footprint Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder) + (datasheet ~) + (libsource (lib Device) (part R_Small) (description "Resistor, small symbol")) + (sheetpath (names /) (tstamps /)) + (tstamp 61CAE0ED)) + (comp (ref J4) + (value Fan) + (footprint TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-3-2-5.08_1x02_P5.08mm_Horizontal) + (datasheet ~) + (libsource (lib Connector) (part Screw_Terminal_01x02) (description "Generic screw terminal, single row, 01x02, script generated (kicad-library-utils/schlib/autogen/connector/)")) + (sheetpath (names /) (tstamps /)) + (tstamp 61CAE0FD)) + (comp (ref C5) + (value 4u7) + (footprint Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder) + (datasheet ~) + (libsource (lib Device) (part C_Small) (description "Unpolarized capacitor, small symbol")) + (sheetpath (names /) (tstamps /)) + (tstamp 61D5351C)) + (comp (ref C6) + (value 100n) + (footprint Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder) + (datasheet ~) + (libsource (lib Device) (part C_Small) (description "Unpolarized capacitor, small symbol")) + (sheetpath (names /) (tstamps /)) + (tstamp 61D53522)) + (comp (ref J1) + (value BME280) + (footprint Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical) + (datasheet ~) + (libsource (lib Connector_Generic) (part Conn_01x04) (description "Generic connector, single row, 01x04, script generated (kicad-library-utils/schlib/autogen/connector/)")) + (sheetpath (names /) (tstamps /)) + (tstamp 61D5DAC8)) + (comp (ref R3) + (value 120) + (footprint Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder) + (datasheet ~) + (libsource (lib Device) (part R_Small) (description "Resistor, small symbol")) + (sheetpath (names /) (tstamps /)) + (tstamp 61D6E92C)) + (comp (ref R4) + (value 120) + (footprint Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder) + (datasheet ~) + (libsource (lib Device) (part R_Small) (description "Resistor, small symbol")) + (sheetpath (names /) (tstamps /)) + (tstamp 61D705E3)) + (comp (ref J2) + (value "Front Panel") + (footprint Connector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_Vertical) + (datasheet ~) + (libsource (lib Connector_Generic) (part Conn_01x08) (description "Generic connector, single row, 01x08, script generated (kicad-library-utils/schlib/autogen/connector/)")) + (sheetpath (names /) (tstamps /)) + (tstamp 61D92A4A)) + (comp (ref R5) + (value 120) + (footprint Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder) + (datasheet ~) + (libsource (lib Device) (part R_Small) (description "Resistor, small symbol")) + (sheetpath (names /) (tstamps /)) + (tstamp 61D99899)) + (comp (ref R6) + (value 120) + (footprint Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder) + (datasheet ~) + (libsource (lib Device) (part R_Small) (description "Resistor, small symbol")) + (sheetpath (names /) (tstamps /)) + (tstamp 61D9989F)) + (comp (ref J5) + (value SWD) + (footprint Connector_PinHeader_1.27mm:PinHeader_2x07_P1.27mm_Vertical_SMD) + (datasheet ~) + (libsource (lib Connector_Generic) (part Conn_02x07_Odd_Even) (description "Generic connector, double row, 02x07, odd/even pin numbering scheme (row 1 odd numbers, row 2 even numbers), script generated (kicad-library-utils/schlib/autogen/connector/)")) + (sheetpath (names /) (tstamps /)) + (tstamp 61E01D46)) + (comp (ref R18) + (value 22) + (footprint Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder) + (datasheet ~) + (libsource (lib Device) (part R_Small) (description "Resistor, small symbol")) + (sheetpath (names /) (tstamps /)) + (tstamp 61E444D0)) + (comp (ref R19) + (value 22) + (footprint Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder) + (datasheet ~) + (libsource (lib Device) (part R_Small) (description "Resistor, small symbol")) + (sheetpath (names /) (tstamps /)) + (tstamp 61E45925)) + (comp (ref R20) + (value 22) + (footprint Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder) + (datasheet ~) + (libsource (lib Device) (part R_Small) (description "Resistor, small symbol")) + (sheetpath (names /) (tstamps /)) + (tstamp 61E4A7DA)) + (comp (ref C7) + (value 100n) + (footprint Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder) + (datasheet ~) + (libsource (lib Device) (part C_Small) (description "Unpolarized capacitor, small symbol")) + (sheetpath (names /) (tstamps /)) + (tstamp 61E5FBA3)) + (comp (ref H1) + (value MountingHole) + (footprint MountingHole:MountingHole_3.2mm_M3) + (datasheet ~) + (libsource (lib Mechanical) (part MountingHole) (description "Mounting Hole without connection")) + (sheetpath (names /) (tstamps /)) + (tstamp 61F02955))) + (libparts + (libpart (lib Connector) (part Screw_Terminal_01x02) + (description "Generic screw terminal, single row, 01x02, script generated (kicad-library-utils/schlib/autogen/connector/)") + (docs ~) + (footprints + (fp TerminalBlock*:*)) + (fields + (field (name Reference) J) + (field (name Value) Screw_Terminal_01x02)) + (pins + (pin (num 1) (name Pin_1) (type passive)) + (pin (num 2) (name Pin_2) (type passive)))) + (libpart (lib Connector_Generic) (part Conn_01x04) + (description "Generic connector, single row, 01x04, script generated (kicad-library-utils/schlib/autogen/connector/)") + (docs ~) + (footprints + (fp Connector*:*_1x??_*)) + (fields + (field (name Reference) J) + (field (name Value) Conn_01x04)) + (pins + (pin (num 1) (name Pin_1) (type passive)) + (pin (num 2) (name Pin_2) (type passive)) + (pin (num 3) (name Pin_3) (type passive)) + (pin (num 4) (name Pin_4) (type passive)))) + (libpart (lib Connector_Generic) (part Conn_01x08) + (description "Generic connector, single row, 01x08, script generated (kicad-library-utils/schlib/autogen/connector/)") + (docs ~) + (footprints + (fp Connector*:*_1x??_*)) + (fields + (field (name Reference) J) + (field (name Value) Conn_01x08)) + (pins + (pin (num 1) (name Pin_1) (type passive)) + (pin (num 2) (name Pin_2) (type passive)) + (pin (num 3) (name Pin_3) (type passive)) + (pin (num 4) (name Pin_4) (type passive)) + (pin (num 5) (name Pin_5) (type passive)) + (pin (num 6) (name Pin_6) (type passive)) + (pin (num 7) (name Pin_7) (type passive)) + (pin (num 8) (name Pin_8) (type passive)))) + (libpart (lib Connector_Generic) (part Conn_02x07_Odd_Even) + (description "Generic connector, double row, 02x07, odd/even pin numbering scheme (row 1 odd numbers, row 2 even numbers), script generated (kicad-library-utils/schlib/autogen/connector/)") + (docs ~) + (footprints + (fp Connector*:*_2x??_*)) + (fields + (field (name Reference) J) + (field (name Value) Conn_02x07_Odd_Even)) + (pins + (pin (num 1) (name Pin_1) (type passive)) + (pin (num 2) (name Pin_2) (type passive)) + (pin (num 3) (name Pin_3) (type passive)) + (pin (num 4) (name Pin_4) (type passive)) + (pin (num 5) (name Pin_5) (type passive)) + (pin (num 6) (name Pin_6) (type passive)) + (pin (num 7) (name Pin_7) (type passive)) + (pin (num 8) (name Pin_8) (type passive)) + (pin (num 9) (name Pin_9) (type passive)) + (pin (num 10) (name Pin_10) (type passive)) + (pin (num 11) (name Pin_11) (type passive)) + (pin (num 12) (name Pin_12) (type passive)) + (pin (num 13) (name Pin_13) (type passive)) + (pin (num 14) (name Pin_14) (type passive)))) + (libpart (lib Converter_ACDC) (part HLK-PM01) + (aliases + (alias HLK-PM03) + (alias HLK-PM12) + (alias HLK-PM24)) + (description "Compact AC/DC board mount power module 3W 5V") + (docs http://www.hlktech.net/product_detail.php?ProId=54) + (footprints + (fp Converter*ACDC*HiLink*HLK?PM*)) + (fields + (field (name Reference) PS) + (field (name Value) HLK-PM01) + (field (name Footprint) Converter_ACDC:Converter_ACDC_HiLink_HLK-PMxx)) + (pins + (pin (num 1) (name AC/L) (type power_in)) + (pin (num 2) (name AC/N) (type power_in)) + (pin (num 3) (name -Vout) (type power_out)) + (pin (num 4) (name +Vout) (type power_out)))) + (libpart (lib Device) (part Buzzer) + (description "Buzzer, polarized") + (docs ~) + (footprints + (fp *Buzzer*)) + (fields + (field (name Reference) BZ) + (field (name Value) Buzzer)) + (pins + (pin (num 1) (name -) (type passive)) + (pin (num 2) (name +) (type passive)))) + (libpart (lib Device) (part C_Small) + (description "Unpolarized capacitor, small symbol") + (docs ~) + (footprints + (fp C_*)) + (fields + (field (name Reference) C) + (field (name Value) C_Small)) + (pins + (pin (num 1) (name ~) (type passive)) + (pin (num 2) (name ~) (type passive)))) + (libpart (lib Device) (part Crystal_Small) + (description "Two pin crystal, small symbol") + (docs ~) + (footprints + (fp Crystal*)) + (fields + (field (name Reference) Y) + (field (name Value) Crystal_Small)) + (pins + (pin (num 1) (name 1) (type passive)) + (pin (num 2) (name 2) (type passive)))) + (libpart (lib Device) (part Q_NPN_BEC) + (description "NPN transistor, base/emitter/collector") + (docs ~) + (fields + (field (name Reference) Q) + (field (name Value) Q_NPN_BEC)) + (pins + (pin (num 1) (name B) (type input)) + (pin (num 2) (name E) (type passive)) + (pin (num 3) (name C) (type passive)))) + (libpart (lib Device) (part R) + (description Resistor) + (docs ~) + (footprints + (fp R_*)) + (fields + (field (name Reference) R) + (field (name Value) R)) + (pins + (pin (num 1) (name ~) (type passive)) + (pin (num 2) (name ~) (type passive)))) + (libpart (lib Device) (part R_Small) + (description "Resistor, small symbol") + (docs ~) + (footprints + (fp R_*)) + (fields + (field (name Reference) R) + (field (name Value) R_Small)) + (pins + (pin (num 1) (name ~) (type passive)) + (pin (num 2) (name ~) (type passive)))) + (libpart (lib Isolator) (part LTV-814) + (description "AC/DC Optocoupler, Vce 35V, CTR 20%, DIP4") + (docs https://optoelectronics.liteon.com/upload/download/DS-70-96-0013/LTV-8X4%20series%20201509.pdf) + (footprints + (fp DIP*W7.62mm*)) + (fields + (field (name Reference) U) + (field (name Value) LTV-814) + (field (name Footprint) Package_DIP:DIP-4_W7.62mm)) + (pins + (pin (num 1) (name ~) (type passive)) + (pin (num 2) (name ~) (type passive)) + (pin (num 3) (name ~) (type passive)) + (pin (num 4) (name ~) (type passive)))) + (libpart (lib Mechanical) (part MountingHole) + (description "Mounting Hole without connection") + (docs ~) + (footprints + (fp MountingHole*)) + (fields + (field (name Reference) H) + (field (name Value) MountingHole))) + (libpart (lib Relay_SolidState) (part MOC3010M) + (aliases + (alias MOC3011M) + (alias MOC3012M) + (alias MOC3020M) + (alias MOC3021M) + (alias MOC3022M) + (alias MOC3023M) + (alias MOC3051M) + (alias MOC3052M)) + (description "Random Phase Opto-Triac, Vdrm 250V, Ift 15mA, DIP6") + (docs https://www.onsemi.com/pub/Collateral/MOC3023M-D.PDF) + (footprints + (fp DIP*W7.62mm*) + (fp SMDIP*W9.53mm*) + (fp DIP*W10.16mm*)) + (fields + (field (name Reference) U) + (field (name Value) MOC3010M)) + (pins + (pin (num 1) (name ~) (type passive)) + (pin (num 2) (name ~) (type passive)) + (pin (num 3) (name NC) (type NotConnected)) + (pin (num 4) (name ~) (type passive)) + (pin (num 5) (name NC) (type NotConnected)) + (pin (num 6) (name ~) (type passive)))) + (libpart (lib Triac_Thyristor) (part TIC226) + (aliases + (alias TIC206) + (alias BT138-600) + (alias BT138-800) + (alias TIC216) + (alias BT136-500) + (alias BT136-600) + (alias BT136-800) + (alias BT139-600) + (alias BTA16-600B) + (alias BTA16-600BW) + (alias BTA16-600C) + (alias BTA16-600CW) + (alias BTA16-600SW) + (alias BTA16-800B) + (alias BTA16-800BW) + (alias BTA16-800C) + (alias BTA16-800CW) + (alias BTA16-800SW) + (alias BTB16-600B) + (alias BTB16-600BW) + (alias BTB16-600C) + (alias BTB16-600CW) + (alias BTB16-600SW) + (alias BTB16-800B) + (alias BTB16-800BW) + (alias BTB16-800C) + (alias BTB16-800CW) + (alias BTB16-800SW)) + (description "8A RMS, 400-800V Off-State Voltage, Triac, TO-220") + (docs http://pdf.datasheetcatalog.com/datasheet/PowerInnovations/mXuqxvy.pdf) + (footprints + (fp TO?220*)) + (fields + (field (name Reference) Q) + (field (name Value) TIC226) + (field (name Footprint) Package_TO_SOT_THT:TO-220-3_Vertical)) + (pins + (pin (num 1) (name A1) (type passive)) + (pin (num 2) (name A2) (type passive)) + (pin (num 3) (name G) (type input)))) + (libpart (lib my_additions) (part STM32G070RBTx) + (description "Mainstream Value line, Arm Cortex-M0+ MCU with 128 Kbytes of Flash memory, 36 Kbytes RAM, 64 MHz CPU, 4x USART, timers, ADC, comm. I/F, 2-3.6V, LQFP-64") + (footprints + (fp LQFP-64*10x10mm*P0.5mm*)) + (fields + (field (name Reference) U) + (field (name Value) STM32G070RBTx) + (field (name Footprint) Package_QFP:LQFP-64_10x10mm_P0.5mm)) + (pins + (pin (num 1) (name PC11) (type BiDi)) + (pin (num 2) (name PC12) (type BiDi)) + (pin (num 3) (name PC13) (type BiDi)) + (pin (num 4) (name PC14-OSC32_IN) (type BiDi)) + (pin (num 5) (name PC15-OSC32_OUT) (type BiDi)) + (pin (num 6) (name VBAT) (type power_in)) + (pin (num 7) (name VREF+) (type input)) + (pin (num 8) (name VDD) (type power_in)) + (pin (num 9) (name VSS) (type power_in)) + (pin (num 10) (name PF0-OSC_IN) (type BiDi)) + (pin (num 11) (name PF1-OSC_OUT) (type BiDi)) + (pin (num 12) (name NRST) (type input)) + (pin (num 13) (name PC0) (type BiDi)) + (pin (num 14) (name PC1) (type BiDi)) + (pin (num 15) (name PC2) (type BiDi)) + (pin (num 16) (name PC3) (type BiDi)) + (pin (num 17) (name PA0) (type BiDi)) + (pin (num 18) (name PA1) (type BiDi)) + (pin (num 19) (name PA2) (type BiDi)) + (pin (num 20) (name PA3) (type BiDi)) + (pin (num 21) (name PA4) (type BiDi)) + (pin (num 22) (name PA5) (type BiDi)) + (pin (num 23) (name PA6) (type BiDi)) + (pin (num 24) (name PA7) (type BiDi)) + (pin (num 25) (name PC4) (type BiDi)) + (pin (num 26) (name PC5) (type BiDi)) + (pin (num 27) (name PB0) (type BiDi)) + (pin (num 28) (name PB1) (type BiDi)) + (pin (num 29) (name PB2) (type BiDi)) + (pin (num 30) (name PB10) (type BiDi)) + (pin (num 31) (name PB11) (type BiDi)) + (pin (num 32) (name PB12) (type BiDi)) + (pin (num 33) (name PB13) (type BiDi)) + (pin (num 34) (name PB14) (type BiDi)) + (pin (num 35) (name PB15) (type BiDi)) + (pin (num 36) (name PA8) (type BiDi)) + (pin (num 37) (name PA9) (type BiDi)) + (pin (num 38) (name PC6) (type BiDi)) + (pin (num 39) (name PC7) (type BiDi)) + (pin (num 40) (name PD8) (type BiDi)) + (pin (num 41) (name PD9) (type BiDi)) + (pin (num 42) (name PA10) (type BiDi)) + (pin (num 43) (name PA11[PA9]) (type BiDi)) + (pin (num 44) (name PA12[PA10]) (type BiDi)) + (pin (num 45) (name PA13-SWDIO) (type BiDi)) + (pin (num 46) (name PA14-BOOT0-SWCLK) (type BiDi)) + (pin (num 47) (name PA15) (type BiDi)) + (pin (num 48) (name PC8) (type BiDi)) + (pin (num 49) (name PC9) (type BiDi)) + (pin (num 50) (name PD0) (type BiDi)) + (pin (num 51) (name PD1) (type BiDi)) + (pin (num 52) (name PD2) (type BiDi)) + (pin (num 53) (name PD3) (type BiDi)) + (pin (num 54) (name PD4) (type BiDi)) + (pin (num 55) (name PD5) (type BiDi)) + (pin (num 56) (name PD6) (type BiDi)) + (pin (num 57) (name PB3) (type BiDi)) + (pin (num 58) (name PB4) (type BiDi)) + (pin (num 59) (name PB5) (type BiDi)) + (pin (num 60) (name PB6) (type BiDi)) + (pin (num 61) (name PB7) (type BiDi)) + (pin (num 62) (name PB8) (type BiDi)) + (pin (num 63) (name PB9) (type BiDi)) + (pin (num 64) (name PC10) (type BiDi))))) + (libraries + (library (logical Connector) + (uri D:\KiCad\share\kicad\library/Connector.lib)) + (library (logical Connector_Generic) + (uri D:\KiCad\share\kicad\library/Connector_Generic.lib)) + (library (logical Converter_ACDC) + (uri D:\KiCad\share\kicad\library/Converter_ACDC.lib)) + (library (logical Device) + (uri D:\KiCad\share\kicad\library/Device.lib)) + (library (logical Isolator) + (uri D:\KiCad\share\kicad\library/Isolator.lib)) + (library (logical Mechanical) + (uri D:\KiCad\share\kicad\library/Mechanical.lib)) + (library (logical Relay_SolidState) + (uri D:\KiCad\share\kicad\library/Relay_SolidState.lib)) + (library (logical Triac_Thyristor) + (uri D:\KiCad\share\kicad\library/Triac_Thyristor.lib)) + (library (logical my_additions) + (uri G:/ownCloud/Projects/kicad_libs/my_additions.lib))) + (nets + (net (code 1) (name AC_L) + (node (ref R13) (pin 2)) + (node (ref J3) (pin 2)) + (node (ref J6) (pin 2)) + (node (ref PS1) (pin 1)) + (node (ref J4) (pin 2))) + (net (code 2) (name AC_N) + (node (ref R14) (pin 1)) + (node (ref R12) (pin 2)) + (node (ref Q3) (pin 1)) + (node (ref J6) (pin 1)) + (node (ref PS1) (pin 2)) + (node (ref Q2) (pin 1)) + (node (ref R15) (pin 1))) + (net (code 3) (name "Net-(J4-Pad1)") + (node (ref J4) (pin 1)) + (node (ref R17) (pin 1)) + (node (ref Q3) (pin 2))) + (net (code 4) (name "Net-(Q3-Pad3)") + (node (ref Q3) (pin 3)) + (node (ref R15) (pin 2)) + (node (ref U4) (pin 4))) + (net (code 5) (name "Net-(R11-Pad1)") + (node (ref R17) (pin 2)) + (node (ref R11) (pin 1))) + (net (code 6) (name "Net-(R11-Pad2)") + (node (ref U4) (pin 6)) + (node (ref R11) (pin 2))) + (net (code 7) (name GND) + (node (ref J2) (pin 2)) + (node (ref J5) (pin 7)) + (node (ref Q1) (pin 2)) + (node (ref U2) (pin 3)) + (node (ref C2) (pin 2)) + (node (ref C1) (pin 2)) + (node (ref U1) (pin 9)) + (node (ref J5) (pin 11)) + (node (ref PS1) (pin 3)) + (node (ref C4) (pin 2)) + (node (ref J5) (pin 5)) + (node (ref C7) (pin 2)) + (node (ref C3) (pin 2)) + (node (ref U3) (pin 2)) + (node (ref J1) (pin 2)) + (node (ref C6) (pin 2)) + (node (ref C5) (pin 2)) + (node (ref U4) (pin 2))) + (net (code 8) (name +3V3) + (node (ref U1) (pin 8)) + (node (ref U1) (pin 7)) + (node (ref J1) (pin 1)) + (node (ref PS1) (pin 4)) + (node (ref J2) (pin 1)) + (node (ref BZ1) (pin 1)) + (node (ref R9) (pin 1)) + (node (ref C5) (pin 1)) + (node (ref C6) (pin 1)) + (node (ref J5) (pin 3)) + (node (ref C4) (pin 1)) + (node (ref C3) (pin 1)) + (node (ref U1) (pin 6))) + (net (code 9) (name Gate_Heater) + (node (ref R7) (pin 2)) + (node (ref U1) (pin 58))) + (net (code 10) (name "Net-(R10-Pad1)") + (node (ref R10) (pin 1)) + (node (ref R16) (pin 2))) + (net (code 11) (name "Net-(R10-Pad2)") + (node (ref R10) (pin 2)) + (node (ref U3) (pin 6))) + (net (code 12) (name "Net-(J3-Pad1)") + (node (ref Q2) (pin 2)) + (node (ref R16) (pin 1)) + (node (ref J3) (pin 1))) + (net (code 13) (name "Net-(R7-Pad1)") + (node (ref R7) (pin 1)) + (node (ref U3) (pin 1))) + (net (code 14) (name Buzzer) + (node (ref R1) (pin 2)) + (node (ref U1) (pin 24))) + (net (code 15) (name "Net-(U1-Pad41)") + (node (ref U1) (pin 41))) + (net (code 16) (name "Net-(U1-Pad40)") + (node (ref U1) (pin 40))) + (net (code 17) (name "Net-(U1-Pad56)") + (node (ref U1) (pin 56))) + (net (code 18) (name "Net-(U1-Pad55)") + (node (ref U1) (pin 55))) + (net (code 19) (name "Net-(U1-Pad54)") + (node (ref U1) (pin 54))) + (net (code 20) (name "Net-(U1-Pad53)") + (node (ref U1) (pin 53))) + (net (code 21) (name "Net-(U1-Pad51)") + (node (ref U1) (pin 51))) + (net (code 22) (name "Net-(U1-Pad50)") + (node (ref U1) (pin 50))) + (net (code 23) (name "Net-(U1-Pad35)") + (node (ref U1) (pin 35))) + (net (code 24) (name "Net-(U1-Pad34)") + (node (ref U1) (pin 34))) + (net (code 25) (name "Net-(R8-Pad1)") + (node (ref R8) (pin 1)) + (node (ref U4) (pin 1))) + (net (code 26) (name Gate_Fan) + (node (ref R8) (pin 2)) + (node (ref U1) (pin 59))) + (net (code 27) (name "Net-(U4-Pad5)") + (node (ref U4) (pin 5))) + (net (code 28) (name "Net-(U4-Pad3)") + (node (ref U4) (pin 3))) + (net (code 29) (name "Net-(Q2-Pad3)") + (node (ref Q2) (pin 3)) + (node (ref R14) (pin 2)) + (node (ref U3) (pin 4))) + (net (code 30) (name "Net-(J5-Pad9)") + (node (ref J5) (pin 9))) + (net (code 31) (name "Net-(J5-Pad8)") + (node (ref J5) (pin 8))) + (net (code 32) (name "Net-(J5-Pad10)") + (node (ref J5) (pin 10))) + (net (code 33) (name "Net-(J5-Pad14)") + (node (ref J5) (pin 14))) + (net (code 34) (name "Net-(J5-Pad13)") + (node (ref J5) (pin 13))) + (net (code 35) (name "Net-(J5-Pad2)") + (node (ref J5) (pin 2))) + (net (code 36) (name "Net-(J5-Pad1)") + (node (ref J5) (pin 1))) + (net (code 37) (name "Net-(J5-Pad6)") + (node (ref J5) (pin 6)) + (node (ref R19) (pin 2))) + (net (code 38) (name "Net-(J5-Pad4)") + (node (ref R18) (pin 2)) + (node (ref J5) (pin 4))) + (net (code 39) (name "Net-(J5-Pad12)") + (node (ref R20) (pin 2)) + (node (ref J5) (pin 12))) + (net (code 40) (name NRST) + (node (ref U1) (pin 12)) + (node (ref R20) (pin 1)) + (node (ref C7) (pin 1))) + (net (code 41) (name SWCLK) + (node (ref R19) (pin 1)) + (node (ref U1) (pin 46))) + (net (code 42) (name SWDIO) + (node (ref U1) (pin 45)) + (node (ref R18) (pin 1))) + (net (code 43) (name "Net-(J1-Pad3)") + (node (ref R3) (pin 1)) + (node (ref J1) (pin 3))) + (net (code 44) (name "Net-(J2-Pad5)") + (node (ref J2) (pin 5))) + (net (code 45) (name "Net-(J2-Pad4)") + (node (ref R6) (pin 1)) + (node (ref J2) (pin 4))) + (net (code 46) (name "Net-(J2-Pad3)") + (node (ref R5) (pin 1)) + (node (ref J2) (pin 3))) + (net (code 47) (name BME_SDA) + (node (ref R4) (pin 2)) + (node (ref U1) (pin 63))) + (net (code 48) (name BME_SCL) + (node (ref R3) (pin 2)) + (node (ref U1) (pin 62))) + (net (code 49) (name "Net-(J1-Pad4)") + (node (ref J1) (pin 4)) + (node (ref R4) (pin 1))) + (net (code 50) (name KEY_UP) + (node (ref J2) (pin 6)) + (node (ref U1) (pin 29))) + (net (code 51) (name OLED_SCL) + (node (ref U1) (pin 30)) + (node (ref R5) (pin 2))) + (net (code 52) (name KEY_DN) + (node (ref J2) (pin 8)) + (node (ref U1) (pin 27))) + (net (code 53) (name KEY_OK) + (node (ref J2) (pin 7)) + (node (ref U1) (pin 28))) + (net (code 54) (name OLED_SDA) + (node (ref R6) (pin 2)) + (node (ref U1) (pin 31))) + (net (code 55) (name "Net-(U1-Pad33)") + (node (ref U1) (pin 33))) + (net (code 56) (name "Net-(BZ1-Pad2)") + (node (ref BZ1) (pin 2)) + (node (ref Q1) (pin 3))) + (net (code 57) (name "Net-(Q1-Pad1)") + (node (ref R1) (pin 1)) + (node (ref Q1) (pin 1))) + (net (code 58) (name "Net-(U3-Pad5)") + (node (ref U3) (pin 5))) + (net (code 59) (name "Net-(U3-Pad3)") + (node (ref U3) (pin 3))) + (net (code 60) (name ZeroCross) + (node (ref R9) (pin 2)) + (node (ref U2) (pin 4)) + (node (ref U1) (pin 52))) + (net (code 61) (name "Net-(R12-Pad1)") + (node (ref U2) (pin 1)) + (node (ref R12) (pin 1))) + (net (code 62) (name "Net-(C2-Pad1)") + (node (ref R2) (pin 2)) + (node (ref Y1) (pin 2)) + (node (ref C2) (pin 1))) + (net (code 63) (name "Net-(U1-Pad64)") + (node (ref U1) (pin 64))) + (net (code 64) (name "Net-(U1-Pad23)") + (node (ref U1) (pin 23))) + (net (code 65) (name "Net-(U1-Pad36)") + (node (ref U1) (pin 36))) + (net (code 66) (name "Net-(U1-Pad32)") + (node (ref U1) (pin 32))) + (net (code 67) (name "Net-(U1-Pad3)") + (node (ref U1) (pin 3))) + (net (code 68) (name "Net-(U1-Pad26)") + (node (ref U1) (pin 26))) + (net (code 69) (name "Net-(U1-Pad25)") + (node (ref U1) (pin 25))) + (net (code 70) (name "Net-(U1-Pad37)") + (node (ref U1) (pin 37))) + (net (code 71) (name "Net-(U1-Pad22)") + (node (ref U1) (pin 22))) + (net (code 72) (name "Net-(U1-Pad21)") + (node (ref U1) (pin 21))) + (net (code 73) (name "Net-(U1-Pad20)") + (node (ref U1) (pin 20))) + (net (code 74) (name "Net-(U1-Pad2)") + (node (ref U1) (pin 2))) + (net (code 75) (name "Net-(U1-Pad19)") + (node (ref U1) (pin 19))) + (net (code 76) (name "Net-(U1-Pad18)") + (node (ref U1) (pin 18))) + (net (code 77) (name "Net-(U1-Pad17)") + (node (ref U1) (pin 17))) + (net (code 78) (name "Net-(U1-Pad16)") + (node (ref U1) (pin 16))) + (net (code 79) (name "Net-(U1-Pad15)") + (node (ref U1) (pin 15))) + (net (code 80) (name "Net-(U1-Pad14)") + (node (ref U1) (pin 14))) + (net (code 81) (name "Net-(U1-Pad13)") + (node (ref U1) (pin 13))) + (net (code 82) (name "Net-(R2-Pad1)") + (node (ref R2) (pin 1)) + (node (ref U1) (pin 11))) + (net (code 83) (name "Net-(C1-Pad1)") + (node (ref Y1) (pin 1)) + (node (ref C1) (pin 1)) + (node (ref U1) (pin 10))) + (net (code 84) (name "Net-(U1-Pad61)") + (node (ref U1) (pin 61))) + (net (code 85) (name "Net-(U1-Pad60)") + (node (ref U1) (pin 60))) + (net (code 86) (name "Net-(U1-Pad57)") + (node (ref U1) (pin 57))) + (net (code 87) (name "Net-(U1-Pad5)") + (node (ref U1) (pin 5))) + (net (code 88) (name "Net-(U1-Pad49)") + (node (ref U1) (pin 49))) + (net (code 89) (name "Net-(U1-Pad48)") + (node (ref U1) (pin 48))) + (net (code 90) (name "Net-(U1-Pad47)") + (node (ref U1) (pin 47))) + (net (code 91) (name "Net-(U1-Pad44)") + (node (ref U1) (pin 44))) + (net (code 92) (name "Net-(U1-Pad43)") + (node (ref U1) (pin 43))) + (net (code 93) (name "Net-(U1-Pad42)") + (node (ref U1) (pin 42))) + (net (code 94) (name "Net-(U1-Pad4)") + (node (ref U1) (pin 4))) + (net (code 95) (name "Net-(U1-Pad39)") + (node (ref U1) (pin 39))) + (net (code 96) (name "Net-(U1-Pad38)") + (node (ref U1) (pin 38))) + (net (code 97) (name "Net-(U1-Pad1)") + (node (ref U1) (pin 1))) + (net (code 98) (name "Net-(R13-Pad1)") + (node (ref U2) (pin 2)) + (node (ref R13) (pin 1))))) \ No newline at end of file diff --git a/kicad/filadry2.pro b/kicad/filadry2.pro new file mode 100644 index 0000000..9fa3b0c --- /dev/null +++ b/kicad/filadry2.pro @@ -0,0 +1,263 @@ +update=25.12.2021 3:08:25 +version=1 +last_client=kicad +[general] +version=1 +RootSch= +BoardNm= +[cvpcb] +version=1 +NetIExt=net +[eeschema] +version=1 +LibDir= +[eeschema/libraries] +[schematic_editor] +version=1 +PageLayoutDescrFile= +PlotDirectoryName= +SubpartIdSeparator=0 +SubpartFirstId=65 +NetFmtName=Pcbnew +SpiceAjustPassiveValues=0 +LabSize=50 +ERC_TestSimilarLabels=1 +[pcbnew] +version=1 +PageLayoutDescrFile= +LastNetListRead= +CopperLayerCount=2 +BoardThickness=1.6 +AllowMicroVias=0 +AllowBlindVias=0 +RequireCourtyardDefinitions=0 +ProhibitOverlappingCourtyards=1 +MinTrackWidth=0.2 +MinViaDiameter=0.4 +MinViaDrill=0.3 +MinMicroViaDiameter=0.2 +MinMicroViaDrill=0.09999999999999999 +MinHoleToHole=0.25 +TrackWidth1=0.25 +TrackWidth2=0.25 +TrackWidth3=0.3 +TrackWidth4=0.5 +TrackWidth5=0.7 +TrackWidth6=1 +TrackWidth7=1.25 +TrackWidth8=1.5 +TrackWidth9=1.75 +TrackWidth10=1.905 +TrackWidth11=2 +TrackWidth12=2.5 +ViaDiameter1=0.8 +ViaDrill1=0.4 +ViaDiameter2=0.6 +ViaDrill2=0.3 +ViaDiameter3=0.8 +ViaDrill3=0.4 +dPairWidth1=0.2 +dPairGap1=0.25 +dPairViaGap1=0.25 +SilkLineWidth=0.12 +SilkTextSizeV=1 +SilkTextSizeH=1 +SilkTextSizeThickness=0.15 +SilkTextItalic=0 +SilkTextUpright=1 +CopperLineWidth=0.2 +CopperTextSizeV=1.5 +CopperTextSizeH=1.5 +CopperTextThickness=0.3 +CopperTextItalic=0 +CopperTextUpright=1 +EdgeCutLineWidth=0.05 +CourtyardLineWidth=0.05 +OthersLineWidth=0.15 +OthersTextSizeV=1 +OthersTextSizeH=1 +OthersTextSizeThickness=0.15 +OthersTextItalic=0 +OthersTextUpright=1 +SolderMaskClearance=0 +SolderMaskMinWidth=0 +SolderPasteClearance=0 +SolderPasteRatio=-0 +[pcbnew/Layer.F.Cu] +Name=F.Cu +Type=0 +Enabled=1 +[pcbnew/Layer.In1.Cu] +Name=In1.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In2.Cu] +Name=In2.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In3.Cu] +Name=In3.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In4.Cu] +Name=In4.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In5.Cu] +Name=In5.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In6.Cu] +Name=In6.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In7.Cu] +Name=In7.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In8.Cu] +Name=In8.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In9.Cu] +Name=In9.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In10.Cu] +Name=In10.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In11.Cu] +Name=In11.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In12.Cu] +Name=In12.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In13.Cu] +Name=In13.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In14.Cu] +Name=In14.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In15.Cu] +Name=In15.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In16.Cu] +Name=In16.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In17.Cu] +Name=In17.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In18.Cu] +Name=In18.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In19.Cu] +Name=In19.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In20.Cu] +Name=In20.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In21.Cu] +Name=In21.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In22.Cu] +Name=In22.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In23.Cu] +Name=In23.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In24.Cu] +Name=In24.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In25.Cu] +Name=In25.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In26.Cu] +Name=In26.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In27.Cu] +Name=In27.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In28.Cu] +Name=In28.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In29.Cu] +Name=In29.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.In30.Cu] +Name=In30.Cu +Type=0 +Enabled=0 +[pcbnew/Layer.B.Cu] +Name=B.Cu +Type=0 +Enabled=1 +[pcbnew/Layer.B.Adhes] +Enabled=1 +[pcbnew/Layer.F.Adhes] +Enabled=1 +[pcbnew/Layer.B.Paste] +Enabled=1 +[pcbnew/Layer.F.Paste] +Enabled=1 +[pcbnew/Layer.B.SilkS] +Enabled=1 +[pcbnew/Layer.F.SilkS] +Enabled=1 +[pcbnew/Layer.B.Mask] +Enabled=1 +[pcbnew/Layer.F.Mask] +Enabled=1 +[pcbnew/Layer.Dwgs.User] +Enabled=1 +[pcbnew/Layer.Cmts.User] +Enabled=1 +[pcbnew/Layer.Eco1.User] +Enabled=1 +[pcbnew/Layer.Eco2.User] +Enabled=1 +[pcbnew/Layer.Edge.Cuts] +Enabled=1 +[pcbnew/Layer.Margin] +Enabled=1 +[pcbnew/Layer.B.CrtYd] +Enabled=1 +[pcbnew/Layer.F.CrtYd] +Enabled=1 +[pcbnew/Layer.B.Fab] +Enabled=1 +[pcbnew/Layer.F.Fab] +Enabled=1 +[pcbnew/Layer.Rescue] +Enabled=0 +[pcbnew/Netclasses] +[pcbnew/Netclasses/Default] +Name=Default +Clearance=0.2 +TrackWidth=0.25 +ViaDiameter=0.8 +ViaDrill=0.4 +uViaDiameter=0.3 +uViaDrill=0.1 +dPairWidth=0.2 +dPairGap=0.25 +dPairViaGap=0.25 diff --git a/kicad/filadry2.sch b/kicad/filadry2.sch new file mode 100644 index 0000000..f68b975 --- /dev/null +++ b/kicad/filadry2.sch @@ -0,0 +1,1204 @@ +EESchema Schematic File Version 4 +EELAYER 30 0 +EELAYER END +$Descr A4 11693 8268 +encoding utf-8 +Sheet 1 1 +Title "" +Date "" +Rev "" +Comp "" +Comment1 "" +Comment2 "" +Comment3 "" +Comment4 "" +$EndDescr +$Comp +L my_additions:STM32G070RBTx U1 +U 1 1 61C46D88 +P 2650 3200 +F 0 "U1" H 2675 4650 50 0000 C CNN +F 1 "STM32G070RBTx" H 2675 4575 50 0000 C CNN +F 2 "Package_QFP:LQFP-64_10x10mm_P0.5mm" H 2600 1225 50 0001 R CNN +F 3 "" H 4450 600 50 0001 C CNN + 1 2650 3200 + 1 0 0 -1 +$EndComp +$Comp +L Converter_ACDC:HLK-PM03 PS1 +U 1 1 61C4985C +P 5075 950 +F 0 "PS1" H 5075 1225 50 0000 C CNN +F 1 "HLK-PM03" H 5075 1150 50 0000 C CNN +F 2 "Converter_ACDC:Converter_ACDC_HiLink_HLK-PMxx" H 5075 650 50 0001 C CNN +F 3 "http://www.hlktech.net/product_detail.php?ProId=59" H 5475 600 50 0001 C CNN + 1 5075 950 + -1 0 0 -1 +$EndComp +$Comp +L Isolator:LTV-814 U2 +U 1 1 61C4ACCA +P 4975 2200 +F 0 "U2" H 4975 2475 50 0000 C CNN +F 1 "LTV-814" H 4975 2400 50 0000 C CNN +F 2 "my_additions:OPTO-SMD4" H 4775 2000 50 0001 L CIN +F 3 "https://optoelectronics.liteon.com/upload/download/DS-70-96-0013/LTV-8X4%20series%20201509.pdf" H 5050 2200 50 0001 L CNN + 1 4975 2200 + -1 0 0 -1 +$EndComp +$Comp +L Relay_SolidState:MOC3023M U3 +U 1 1 61C4BE67 +P 4975 3100 +F 0 "U3" H 4975 3375 50 0000 C CNN +F 1 "MOC3023M" H 4975 3300 50 0000 C CNN +F 2 "Package_DIP:DIP-6_W7.62mm_LongPads" H 4775 2900 50 0001 L CIN +F 3 "https://www.onsemi.com/pub/Collateral/MOC3023M-D.PDF" H 4975 3100 50 0001 L CNN + 1 4975 3100 + 1 0 0 -1 +$EndComp +$Comp +L Triac_Thyristor:BT138-800 Q2 +U 1 1 61C4CFC6 +P 5875 3175 +F 0 "Q2" H 5625 3200 50 0000 L CNN +F 1 "BT138-800" H 5350 3125 50 0000 L CNN +F 2 "Package_TO_SOT_THT:TO-220-3_Vertical" H 6075 3100 50 0001 L CIN +F 3 "https://assets.nexperia.com/documents/data-sheet/BT138_SER_D_E.pdf" H 5875 3175 50 0001 L CNN + 1 5875 3175 + 1 0 0 -1 +$EndComp +$Comp +L Device:Q_NPN_BEC Q1 +U 1 1 61C52C32 +P 1400 4225 +F 0 "Q1" H 1591 4271 50 0000 L CNN +F 1 "LBC817" H 1591 4180 50 0000 L CNN +F 2 "Package_TO_SOT_SMD:SOT-23_Handsoldering" H 1600 4325 50 0001 C CNN +F 3 "~" H 1400 4225 50 0001 C CNN + 1 1400 4225 + 1 0 0 -1 +$EndComp +$Comp +L Device:Buzzer BZ1 +U 1 1 61C556DB +P 1650 3875 +F 0 "BZ1" H 1325 3925 50 0000 L CNN +F 1 "Buzzer" H 1300 3850 50 0000 L CNN +F 2 "my_additions:Buzzer_D9_H5.5" V 1625 3975 50 0001 C CNN +F 3 "~" V 1625 3975 50 0001 C CNN + 1 1650 3875 + 1 0 0 -1 +$EndComp +$Comp +L power:+3V3 #PWR06 +U 1 1 61C5613B +P 2800 1150 +F 0 "#PWR06" H 2800 1000 50 0001 C CNN +F 1 "+3V3" H 2775 1275 50 0000 C CNN +F 2 "" H 2800 1150 50 0001 C CNN +F 3 "" H 2800 1150 50 0001 C CNN + 1 2800 1150 + 1 0 0 -1 +$EndComp +Wire Wire Line + 2700 1200 2700 1175 +Wire Wire Line + 2700 1175 2800 1175 +Wire Wire Line + 2900 1175 2900 1200 +Wire Wire Line + 2800 1200 2800 1175 +Connection ~ 2800 1175 +Wire Wire Line + 2800 1175 2900 1175 +Wire Wire Line + 2800 1150 2800 1175 +$Comp +L Device:C_Small C3 +U 1 1 61C57F2C +P 2050 850 +F 0 "C3" H 2050 925 50 0000 L CNN +F 1 "4u7" H 2050 775 50 0000 L CNN +F 2 "Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder" H 2050 850 50 0001 C CNN +F 3 "~" H 2050 850 50 0001 C CNN + 1 2050 850 + 1 0 0 -1 +$EndComp +$Comp +L Device:C_Small C4 +U 1 1 61C5A31B +P 2275 850 +F 0 "C4" H 2275 925 50 0000 L CNN +F 1 "100n" H 2275 775 50 0000 L CNN +F 2 "Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder" H 2275 850 50 0001 C CNN +F 3 "~" H 2275 850 50 0001 C CNN + 1 2275 850 + 1 0 0 -1 +$EndComp +$Comp +L power:+3V3 #PWR04 +U 1 1 61C5AE51 +P 2050 700 +F 0 "#PWR04" H 2050 550 50 0001 C CNN +F 1 "+3V3" H 2025 825 50 0000 C CNN +F 2 "" H 2050 700 50 0001 C CNN +F 3 "" H 2050 700 50 0001 C CNN + 1 2050 700 + 1 0 0 -1 +$EndComp +$Comp +L power:GND #PWR05 +U 1 1 61C5B2F6 +P 2050 1000 +F 0 "#PWR05" H 2050 750 50 0001 C CNN +F 1 "GND" H 2050 875 50 0000 C CNN +F 2 "" H 2050 1000 50 0001 C CNN +F 3 "" H 2050 1000 50 0001 C CNN + 1 2050 1000 + 1 0 0 -1 +$EndComp +Wire Wire Line + 2050 950 2050 975 +Wire Wire Line + 2050 750 2050 725 +Wire Wire Line + 2275 750 2275 725 +Wire Wire Line + 2275 725 2050 725 +Connection ~ 2050 725 +Wire Wire Line + 2050 725 2050 700 +Wire Wire Line + 2275 950 2275 975 +Wire Wire Line + 2275 975 2050 975 +Connection ~ 2050 975 +Wire Wire Line + 2050 975 2050 1000 +$Comp +L Device:R_Small R2 +U 1 1 61C5E1F7 +P 1850 1500 +F 0 "R2" V 1775 1500 50 0000 C CNN +F 1 "0" V 1850 1500 50 0000 C CNN +F 2 "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder" H 1850 1500 50 0001 C CNN +F 3 "~" H 1850 1500 50 0001 C CNN + 1 1850 1500 + 0 1 1 0 +$EndComp +$Comp +L Device:Crystal_Small Y1 +U 1 1 61C5FA39 +P 1400 1375 +F 0 "Y1" V 1354 1463 50 0000 L CNN +F 1 "16MHz" V 1445 1463 50 0000 L CNN +F 2 "my_additions:OSC-TH_L10.0-W4.5-P5.00" H 1400 1375 50 0001 C CNN +F 3 "~" H 1400 1375 50 0001 C CNN + 1 1400 1375 + 0 1 1 0 +$EndComp +$Comp +L Device:C_Small C1 +U 1 1 61C617E6 +P 1200 1250 +F 0 "C1" V 1100 1250 50 0000 C CNN +F 1 "30p" V 1300 1250 50 0000 C CNN +F 2 "Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder" H 1200 1250 50 0001 C CNN +F 3 "~" H 1200 1250 50 0001 C CNN + 1 1200 1250 + 0 1 1 0 +$EndComp +$Comp +L Device:C_Small C2 +U 1 1 61C62D85 +P 1200 1500 +F 0 "C2" V 1150 1575 50 0000 C CNN +F 1 "30p" V 1300 1500 50 0000 C CNN +F 2 "Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder" H 1200 1500 50 0001 C CNN +F 3 "~" H 1200 1500 50 0001 C CNN + 1 1200 1500 + 0 1 1 0 +$EndComp +$Comp +L power:GND #PWR01 +U 1 1 61C63887 +P 1025 1525 +F 0 "#PWR01" H 1025 1275 50 0001 C CNN +F 1 "GND" H 1025 1400 50 0000 C CNN +F 2 "" H 1025 1525 50 0001 C CNN +F 3 "" H 1025 1525 50 0001 C CNN + 1 1025 1525 + 1 0 0 -1 +$EndComp +Wire Wire Line + 1025 1525 1025 1500 +Wire Wire Line + 1025 1250 1100 1250 +Wire Wire Line + 1100 1500 1025 1500 +Connection ~ 1025 1500 +Wire Wire Line + 1025 1500 1025 1250 +Wire Wire Line + 1300 1500 1400 1500 +Wire Wire Line + 1950 1500 2000 1500 +Wire Wire Line + 1400 1475 1400 1500 +Connection ~ 1400 1500 +Wire Wire Line + 1400 1500 1750 1500 +Wire Wire Line + 1300 1250 1400 1250 +Wire Wire Line + 1950 1250 1950 1400 +Wire Wire Line + 1950 1400 2000 1400 +Wire Wire Line + 1400 1275 1400 1250 +Connection ~ 1400 1250 +Wire Wire Line + 1400 1250 1950 1250 +Text GLabel 1950 1650 0 50 Input ~ 0 +NRST +Wire Wire Line + 1950 1650 2000 1650 +$Comp +L power:GND #PWR07 +U 1 1 61C67FC9 +P 2900 5250 +F 0 "#PWR07" H 2900 5000 50 0001 C CNN +F 1 "GND" H 2900 5125 50 0000 C CNN +F 2 "" H 2900 5250 50 0001 C CNN +F 3 "" H 2900 5250 50 0001 C CNN + 1 2900 5250 + 1 0 0 -1 +$EndComp +Wire Wire Line + 2900 5250 2900 5200 +$Comp +L power:+3V3 #PWR02 +U 1 1 61C6926A +P 1500 3725 +F 0 "#PWR02" H 1500 3575 50 0001 C CNN +F 1 "+3V3" H 1475 3850 50 0000 C CNN +F 2 "" H 1500 3725 50 0001 C CNN +F 3 "" H 1500 3725 50 0001 C CNN + 1 1500 3725 + 1 0 0 -1 +$EndComp +$Comp +L power:GND #PWR03 +U 1 1 61C6AA24 +P 1500 4475 +F 0 "#PWR03" H 1500 4225 50 0001 C CNN +F 1 "GND" H 1500 4350 50 0000 C CNN +F 2 "" H 1500 4475 50 0001 C CNN +F 3 "" H 1500 4475 50 0001 C CNN + 1 1500 4475 + 1 0 0 -1 +$EndComp +Wire Wire Line + 1500 4475 1500 4425 +Wire Wire Line + 1500 4025 1500 3975 +Wire Wire Line + 1500 3975 1550 3975 +Wire Wire Line + 1550 3775 1500 3775 +Wire Wire Line + 1500 3775 1500 3725 +$Comp +L Device:R_Small R1 +U 1 1 61C6D131 +P 1050 4225 +F 0 "R1" V 975 4225 50 0000 C CNN +F 1 "220" V 1125 4225 50 0000 C CNN +F 2 "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder" H 1050 4225 50 0001 C CNN +F 3 "~" H 1050 4225 50 0001 C CNN + 1 1050 4225 + 0 1 1 0 +$EndComp +Wire Wire Line + 1150 4225 1200 4225 +$Comp +L power:+3V3 #PWR015 +U 1 1 61C88D7F +P 4625 800 +F 0 "#PWR015" H 4625 650 50 0001 C CNN +F 1 "+3V3" H 4650 925 50 0000 C CNN +F 2 "" H 4625 800 50 0001 C CNN +F 3 "" H 4625 800 50 0001 C CNN + 1 4625 800 + -1 0 0 -1 +$EndComp +$Comp +L power:GND #PWR016 +U 1 1 61C8A934 +P 4625 1100 +F 0 "#PWR016" H 4625 850 50 0001 C CNN +F 1 "GND" H 4625 975 50 0000 C CNN +F 2 "" H 4625 1100 50 0001 C CNN +F 3 "" H 4625 1100 50 0001 C CNN + 1 4625 1100 + -1 0 0 -1 +$EndComp +Wire Wire Line + 4675 1050 4625 1050 +Wire Wire Line + 4625 1050 4625 1100 +Wire Wire Line + 4675 850 4625 850 +Wire Wire Line + 4625 850 4625 800 +$Comp +L Device:R R12 +U 1 1 61C8DA64 +P 5475 2100 +F 0 "R12" V 5400 2100 50 0000 C CNN +F 1 "47k" V 5475 2100 50 0000 C CNN +F 2 "Resistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolder" V 5405 2100 50 0001 C CNN +F 3 "~" H 5475 2100 50 0001 C CNN + 1 5475 2100 + 0 -1 1 0 +$EndComp +$Comp +L Device:R R13 +U 1 1 61C8EF1C +P 5475 2300 +F 0 "R13" V 5400 2300 50 0000 C CNN +F 1 "47k" V 5475 2300 50 0000 C CNN +F 2 "Resistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolder" V 5405 2300 50 0001 C CNN +F 3 "~" H 5475 2300 50 0001 C CNN + 1 5475 2300 + 0 -1 1 0 +$EndComp +$Comp +L power:GND #PWR017 +U 1 1 61C90051 +P 4625 2350 +F 0 "#PWR017" H 4625 2100 50 0001 C CNN +F 1 "GND" H 4625 2225 50 0000 C CNN +F 2 "" H 4625 2350 50 0001 C CNN +F 3 "" H 4625 2350 50 0001 C CNN + 1 4625 2350 + -1 0 0 -1 +$EndComp +$Comp +L power:+3V3 #PWR014 +U 1 1 61C91860 +P 4550 1675 +F 0 "#PWR014" H 4550 1525 50 0001 C CNN +F 1 "+3V3" H 4575 1800 50 0000 C CNN +F 2 "" H 4550 1675 50 0001 C CNN +F 3 "" H 4550 1675 50 0001 C CNN + 1 4550 1675 + -1 0 0 -1 +$EndComp +$Comp +L Device:R_Small R9 +U 1 1 61C925E4 +P 4550 1825 +F 0 "R9" V 4625 1775 50 0000 L CNN +F 1 "10k" V 4475 1750 50 0000 L CNN +F 2 "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder" H 4550 1825 50 0001 C CNN +F 3 "~" H 4550 1825 50 0001 C CNN + 1 4550 1825 + -1 0 0 -1 +$EndComp +Wire Wire Line + 5325 2100 5275 2100 +Wire Wire Line + 5325 2300 5275 2300 +Wire Wire Line + 4675 2300 4625 2300 +Wire Wire Line + 4625 2300 4625 2350 +Wire Wire Line + 4675 2100 4550 2100 +Wire Wire Line + 4550 2100 4550 1925 +Wire Wire Line + 4550 1725 4550 1675 +$Comp +L Connector:Screw_Terminal_01x02 J6 +U 1 1 61C984AE +P 6525 1450 +F 0 "J6" H 6525 1550 50 0000 C CNN +F 1 "220V" V 6625 1400 50 0000 C CNN +F 2 "TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-3-2-5.08_1x02_P5.08mm_Horizontal" H 6525 1450 50 0001 C CNN +F 3 "~" H 6525 1450 50 0001 C CNN + 1 6525 1450 + 1 0 0 -1 +$EndComp +Text GLabel 1950 3100 0 50 Input ~ 0 +SWDIO +Text GLabel 1950 3200 0 50 Input ~ 0 +SWCLK +Wire Wire Line + 1950 3200 2000 3200 +Wire Wire Line + 1950 3100 2000 3100 +Text GLabel 3350 3700 2 50 Input ~ 0 +ZeroCross +Wire Wire Line + 3300 3700 3350 3700 +Text GLabel 3350 2200 2 50 Input ~ 0 +Gate_Heater +Text GLabel 3350 2300 2 50 Input ~ 0 +Gate_Fan +Wire Wire Line + 3350 2200 3300 2200 +Wire Wire Line + 3350 2300 3300 2300 +Text GLabel 3350 2600 2 50 Input ~ 0 +BME_SCL +Text GLabel 3350 2700 2 50 Input ~ 0 +BME_SDA +Wire Wire Line + 3350 2600 3300 2600 +Wire Wire Line + 3350 2700 3300 2700 +Text GLabel 1950 2500 0 50 Input ~ 0 +Buzzer +Text GLabel 3350 2000 2 50 Input ~ 0 +KEY_UP +Text GLabel 3350 1900 2 50 Input ~ 0 +KEY_OK +Text GLabel 3350 1800 2 50 Input ~ 0 +KEY_DN +Text GLabel 3350 2800 2 50 Input ~ 0 +OLED_SCL +Text GLabel 3350 2900 2 50 Input ~ 0 +OLED_SDA +Wire Wire Line + 3350 1800 3300 1800 +Wire Wire Line + 3350 1900 3300 1900 +Wire Wire Line + 3350 2000 3300 2000 +Wire Wire Line + 3350 2800 3300 2800 +Wire Wire Line + 3350 2900 3300 2900 +Wire Wire Line + 1950 2500 2000 2500 +NoConn ~ 2000 1800 +NoConn ~ 2000 1900 +NoConn ~ 2000 2000 +NoConn ~ 2000 2100 +NoConn ~ 2000 2200 +NoConn ~ 2000 2300 +NoConn ~ 2000 2400 +NoConn ~ 2000 2600 +NoConn ~ 2000 2700 +NoConn ~ 2000 2800 +NoConn ~ 2000 2900 +NoConn ~ 2000 3000 +NoConn ~ 2000 3300 +NoConn ~ 2000 3500 +NoConn ~ 2000 3600 +NoConn ~ 2000 3700 +NoConn ~ 2000 3800 +NoConn ~ 2000 3900 +NoConn ~ 2000 4000 +NoConn ~ 2000 4100 +NoConn ~ 2000 4200 +NoConn ~ 2000 4300 +NoConn ~ 2000 4400 +NoConn ~ 2000 4500 +NoConn ~ 2000 4600 +NoConn ~ 2000 4700 +NoConn ~ 2000 4800 +NoConn ~ 2000 4900 +NoConn ~ 2000 5000 +NoConn ~ 3300 2100 +NoConn ~ 3300 2400 +NoConn ~ 3300 2500 +NoConn ~ 3300 3000 +NoConn ~ 3300 3100 +NoConn ~ 3300 3200 +NoConn ~ 3300 3300 +NoConn ~ 3300 3500 +NoConn ~ 3300 3600 +NoConn ~ 3300 3800 +NoConn ~ 3300 3900 +NoConn ~ 3300 4000 +NoConn ~ 3300 4100 +NoConn ~ 3300 4300 +NoConn ~ 3300 4400 +Text GLabel 900 4225 0 50 Input ~ 0 +Buzzer +Wire Wire Line + 900 4225 950 4225 +$Comp +L Device:R_Small R7 +U 1 1 61D21CEF +P 4525 3000 +F 0 "R7" V 4450 3000 50 0000 C CNN +F 1 "270" V 4600 3000 50 0000 C CNN +F 2 "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder" H 4525 3000 50 0001 C CNN +F 3 "~" H 4525 3000 50 0001 C CNN + 1 4525 3000 + 0 1 1 0 +$EndComp +Text GLabel 4375 3000 0 50 Input ~ 0 +Gate_Heater +Wire Wire Line + 4375 3000 4425 3000 +Wire Wire Line + 4625 3000 4675 3000 +$Comp +L power:GND #PWR018 +U 1 1 61D2816E +P 4625 3250 +F 0 "#PWR018" H 4625 3000 50 0001 C CNN +F 1 "GND" H 4625 3125 50 0000 C CNN +F 2 "" H 4625 3250 50 0001 C CNN +F 3 "" H 4625 3250 50 0001 C CNN + 1 4625 3250 + -1 0 0 -1 +$EndComp +Wire Wire Line + 4625 3250 4625 3200 +Wire Wire Line + 4625 3200 4675 3200 +$Comp +L Device:R_Small R10 +U 1 1 61D2DBF2 +P 5425 3000 +F 0 "R10" V 5350 3000 50 0000 C CNN +F 1 "220" V 5500 3000 50 0000 C CNN +F 2 "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder" H 5425 3000 50 0001 C CNN +F 3 "~" H 5425 3000 50 0001 C CNN + 1 5425 3000 + 0 1 1 0 +$EndComp +$Comp +L Device:R_Small R16 +U 1 1 61D2EEC6 +P 5675 3000 +F 0 "R16" V 5600 3000 50 0000 C CNN +F 1 "220" V 5750 3000 50 0000 C CNN +F 2 "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder" H 5675 3000 50 0001 C CNN +F 3 "~" H 5675 3000 50 0001 C CNN + 1 5675 3000 + 0 1 1 0 +$EndComp +Text GLabel 4400 2100 0 50 Input ~ 0 +ZeroCross +Wire Wire Line + 4400 2100 4550 2100 +Connection ~ 4550 2100 +Wire Wire Line + 5275 3000 5325 3000 +Wire Wire Line + 5525 3000 5575 3000 +$Comp +L Device:R_Small R14 +U 1 1 61C517C6 +P 5625 3425 +F 0 "R14" V 5550 3425 50 0000 C CNN +F 1 "470" V 5700 3425 50 0000 C CNN +F 2 "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder" H 5625 3425 50 0001 C CNN +F 3 "~" H 5625 3425 50 0001 C CNN + 1 5625 3425 + 0 1 1 0 +$EndComp +Wire Wire Line + 5725 3275 5325 3275 +Wire Wire Line + 5325 3275 5325 3200 +Wire Wire Line + 5325 3200 5275 3200 +Wire Wire Line + 5725 3425 5875 3425 +Wire Wire Line + 5875 3425 5875 3325 +Wire Wire Line + 5525 3425 5325 3425 +Wire Wire Line + 5325 3425 5325 3275 +Connection ~ 5325 3275 +Wire Wire Line + 5775 3000 5875 3000 +Wire Wire Line + 5875 3000 5875 3025 +$Comp +L Connector:Screw_Terminal_01x02 J3 +U 1 1 61C68CAE +P 5875 2675 +F 0 "J3" H 5875 2775 50 0000 C CNN +F 1 "Heater" V 5975 2625 50 0000 C CNN +F 2 "TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-3-2-5.08_1x02_P5.08mm_Horizontal" H 5875 2675 50 0001 C CNN +F 3 "~" H 5875 2675 50 0001 C CNN + 1 5875 2675 + 0 -1 -1 0 +$EndComp +$Comp +L Relay_SolidState:MOC3023M U4 +U 1 1 61CAE0BC +P 4975 4125 +F 0 "U4" H 4975 4400 50 0000 C CNN +F 1 "MOC3023M" H 4975 4325 50 0000 C CNN +F 2 "Package_DIP:DIP-6_W7.62mm_LongPads" H 4775 3925 50 0001 L CIN +F 3 "https://www.onsemi.com/pub/Collateral/MOC3023M-D.PDF" H 4975 4125 50 0001 L CNN + 1 4975 4125 + 1 0 0 -1 +$EndComp +$Comp +L Triac_Thyristor:BT138-800 Q3 +U 1 1 61CAE0C2 +P 5875 4200 +F 0 "Q3" H 5625 4225 50 0000 L CNN +F 1 "BT138-800" H 5350 4150 50 0000 L CNN +F 2 "Package_TO_SOT_THT:TO-220-3_Vertical" H 6075 4125 50 0001 L CIN +F 3 "https://assets.nexperia.com/documents/data-sheet/BT138_SER_D_E.pdf" H 5875 4200 50 0001 L CNN + 1 5875 4200 + 1 0 0 -1 +$EndComp +$Comp +L Device:R_Small R8 +U 1 1 61CAE0C8 +P 4525 4025 +F 0 "R8" V 4450 4025 50 0000 C CNN +F 1 "270" V 4600 4025 50 0000 C CNN +F 2 "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder" H 4525 4025 50 0001 C CNN +F 3 "~" H 4525 4025 50 0001 C CNN + 1 4525 4025 + 0 1 1 0 +$EndComp +Text GLabel 4375 4025 0 50 Input ~ 0 +Gate_Fan +Wire Wire Line + 4375 4025 4425 4025 +Wire Wire Line + 4625 4025 4675 4025 +$Comp +L power:GND #PWR019 +U 1 1 61CAE0D1 +P 4625 4275 +F 0 "#PWR019" H 4625 4025 50 0001 C CNN +F 1 "GND" H 4625 4150 50 0000 C CNN +F 2 "" H 4625 4275 50 0001 C CNN +F 3 "" H 4625 4275 50 0001 C CNN + 1 4625 4275 + -1 0 0 -1 +$EndComp +Wire Wire Line + 4625 4275 4625 4225 +Wire Wire Line + 4625 4225 4675 4225 +$Comp +L Device:R_Small R11 +U 1 1 61CAE0D9 +P 5425 4025 +F 0 "R11" V 5350 4025 50 0000 C CNN +F 1 "220" V 5500 4025 50 0000 C CNN +F 2 "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder" H 5425 4025 50 0001 C CNN +F 3 "~" H 5425 4025 50 0001 C CNN + 1 5425 4025 + 0 1 1 0 +$EndComp +$Comp +L Device:R_Small R17 +U 1 1 61CAE0DF +P 5675 4025 +F 0 "R17" V 5600 4025 50 0000 C CNN +F 1 "220" V 5750 4025 50 0000 C CNN +F 2 "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder" H 5675 4025 50 0001 C CNN +F 3 "~" H 5675 4025 50 0001 C CNN + 1 5675 4025 + 0 1 1 0 +$EndComp +Wire Wire Line + 5275 4025 5325 4025 +Wire Wire Line + 5525 4025 5575 4025 +$Comp +L Device:R_Small R15 +U 1 1 61CAE0ED +P 5625 4450 +F 0 "R15" V 5550 4450 50 0000 C CNN +F 1 "470" V 5700 4450 50 0000 C CNN +F 2 "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder" H 5625 4450 50 0001 C CNN +F 3 "~" H 5625 4450 50 0001 C CNN + 1 5625 4450 + 0 1 1 0 +$EndComp +Wire Wire Line + 5725 4300 5325 4300 +Wire Wire Line + 5325 4300 5325 4225 +Wire Wire Line + 5325 4225 5275 4225 +Wire Wire Line + 5725 4450 5875 4450 +Wire Wire Line + 5875 4450 5875 4350 +Wire Wire Line + 5525 4450 5325 4450 +Wire Wire Line + 5325 4450 5325 4300 +Connection ~ 5325 4300 +Wire Wire Line + 5775 4025 5875 4025 +Wire Wire Line + 5875 4025 5875 4050 +$Comp +L Connector:Screw_Terminal_01x02 J4 +U 1 1 61CAE0FD +P 5975 3700 +F 0 "J4" H 5975 3500 50 0000 C CNN +F 1 "Fan" V 6075 3650 50 0000 C CNN +F 2 "TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-3-2-5.08_1x02_P5.08mm_Horizontal" H 5975 3700 50 0001 C CNN +F 3 "~" H 5975 3700 50 0001 C CNN + 1 5975 3700 + 0 1 -1 0 +$EndComp +Text GLabel 5575 850 2 50 Input ~ 0 +AC_L +Text GLabel 5575 1050 2 50 Input ~ 0 +AC_N +Wire Wire Line + 5475 1050 5575 1050 +Wire Wire Line + 5475 850 5575 850 +Text GLabel 5725 2300 2 50 Input ~ 0 +AC_L +Text GLabel 5725 2100 2 50 Input ~ 0 +AC_N +Wire Wire Line + 5725 2100 5625 2100 +Wire Wire Line + 5725 2300 5625 2300 +Wire Wire Line + 5875 3000 5875 2875 +Connection ~ 5875 3000 +Wire Wire Line + 5875 4025 5875 3900 +Connection ~ 5875 4025 +Text GLabel 6350 2875 2 50 Input ~ 0 +AC_L +Text GLabel 6350 3425 2 50 Input ~ 0 +AC_N +Text GLabel 6250 1550 0 50 Input ~ 0 +AC_L +Text GLabel 6250 1450 0 50 Input ~ 0 +AC_N +Wire Wire Line + 6250 1450 6300 1450 +Wire Wire Line + 6250 1550 6300 1550 +Wire Wire Line + 5975 2875 6350 2875 +Wire Wire Line + 5875 3425 6350 3425 +Connection ~ 5875 3425 +Wire Wire Line + 5975 3900 6350 3900 +Wire Wire Line + 5875 4450 6350 4450 +Connection ~ 5875 4450 +$Comp +L Device:C_Small C5 +U 1 1 61D5351C +P 4150 950 +F 0 "C5" H 4150 1025 50 0000 L CNN +F 1 "4u7" H 4150 875 50 0000 L CNN +F 2 "Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder" H 4150 950 50 0001 C CNN +F 3 "~" H 4150 950 50 0001 C CNN + 1 4150 950 + 1 0 0 -1 +$EndComp +$Comp +L Device:C_Small C6 +U 1 1 61D53522 +P 4375 950 +F 0 "C6" H 4375 1025 50 0000 L CNN +F 1 "100n" H 4375 875 50 0000 L CNN +F 2 "Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder" H 4375 950 50 0001 C CNN +F 3 "~" H 4375 950 50 0001 C CNN + 1 4375 950 + 1 0 0 -1 +$EndComp +$Comp +L power:+3V3 #PWR012 +U 1 1 61D53528 +P 4150 800 +F 0 "#PWR012" H 4150 650 50 0001 C CNN +F 1 "+3V3" H 4125 925 50 0000 C CNN +F 2 "" H 4150 800 50 0001 C CNN +F 3 "" H 4150 800 50 0001 C CNN + 1 4150 800 + 1 0 0 -1 +$EndComp +$Comp +L power:GND #PWR013 +U 1 1 61D5352E +P 4150 1100 +F 0 "#PWR013" H 4150 850 50 0001 C CNN +F 1 "GND" H 4150 975 50 0000 C CNN +F 2 "" H 4150 1100 50 0001 C CNN +F 3 "" H 4150 1100 50 0001 C CNN + 1 4150 1100 + 1 0 0 -1 +$EndComp +Wire Wire Line + 4150 1050 4150 1075 +Wire Wire Line + 4150 850 4150 825 +Wire Wire Line + 4375 850 4375 825 +Wire Wire Line + 4375 825 4150 825 +Connection ~ 4150 825 +Wire Wire Line + 4150 825 4150 800 +Wire Wire Line + 4375 1050 4375 1075 +Wire Wire Line + 4375 1075 4150 1075 +Connection ~ 4150 1075 +Wire Wire Line + 4150 1075 4150 1100 +$Comp +L Connector_Generic:Conn_01x04 J1 +U 1 1 61D5DAC8 +P 4500 4975 +F 0 "J1" H 4450 5175 50 0000 L CNN +F 1 "BME280" V 4600 4775 50 0000 L CNN +F 2 "Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical" H 4500 4975 50 0001 C CNN +F 3 "~" H 4500 4975 50 0001 C CNN + 1 4500 4975 + 1 0 0 -1 +$EndComp +$Comp +L power:GND #PWR09 +U 1 1 61D60698 +P 3975 4975 +F 0 "#PWR09" H 3975 4725 50 0001 C CNN +F 1 "GND" V 3975 4800 50 0000 C CNN +F 2 "" H 3975 4975 50 0001 C CNN +F 3 "" H 3975 4975 50 0001 C CNN + 1 3975 4975 + 0 1 1 0 +$EndComp +$Comp +L power:+3V3 #PWR08 +U 1 1 61D6493A +P 3975 4875 +F 0 "#PWR08" H 3975 4725 50 0001 C CNN +F 1 "+3V3" V 3975 5075 50 0000 C CNN +F 2 "" H 3975 4875 50 0001 C CNN +F 3 "" H 3975 4875 50 0001 C CNN + 1 3975 4875 + 0 -1 -1 0 +$EndComp +Wire Wire Line + 3975 4875 4300 4875 +Wire Wire Line + 3975 4975 4300 4975 +$Comp +L Device:R_Small R3 +U 1 1 61D6E92C +P 4125 5075 +F 0 "R3" V 4075 5200 50 0000 C CNN +F 1 "120" V 4125 5075 50 0000 C CNN +F 2 "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder" H 4125 5075 50 0001 C CNN +F 3 "~" H 4125 5075 50 0001 C CNN + 1 4125 5075 + 0 1 1 0 +$EndComp +$Comp +L Device:R_Small R4 +U 1 1 61D705E3 +P 4125 5175 +F 0 "R4" V 4200 5175 50 0000 C CNN +F 1 "120" V 4125 5175 50 0000 C CNN +F 2 "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder" H 4125 5175 50 0001 C CNN +F 3 "~" H 4125 5175 50 0001 C CNN + 1 4125 5175 + 0 1 1 0 +$EndComp +Wire Wire Line + 4225 5075 4300 5075 +Wire Wire Line + 4225 5175 4300 5175 +Text GLabel 3975 5075 0 50 Input ~ 0 +BME_SCL +Text GLabel 3975 5175 0 50 Input ~ 0 +BME_SDA +Wire Wire Line + 3975 5075 4025 5075 +Wire Wire Line + 3975 5175 4025 5175 +$Comp +L Connector_Generic:Conn_01x08 J2 +U 1 1 61D92A4A +P 4500 5750 +F 0 "J2" H 4450 6150 50 0000 L CNN +F 1 "Front Panel" V 4600 5525 50 0000 L CNN +F 2 "Connector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_Vertical" H 4500 5750 50 0001 C CNN +F 3 "~" H 4500 5750 50 0001 C CNN + 1 4500 5750 + 1 0 0 -1 +$EndComp +$Comp +L power:GND #PWR011 +U 1 1 61D945A8 +P 3975 5550 +F 0 "#PWR011" H 3975 5300 50 0001 C CNN +F 1 "GND" V 3975 5375 50 0000 C CNN +F 2 "" H 3975 5550 50 0001 C CNN +F 3 "" H 3975 5550 50 0001 C CNN + 1 3975 5550 + 0 1 1 0 +$EndComp +$Comp +L power:+3V3 #PWR010 +U 1 1 61D945AE +P 3975 5450 +F 0 "#PWR010" H 3975 5300 50 0001 C CNN +F 1 "+3V3" V 3975 5650 50 0000 C CNN +F 2 "" H 3975 5450 50 0001 C CNN +F 3 "" H 3975 5450 50 0001 C CNN + 1 3975 5450 + 0 -1 -1 0 +$EndComp +$Comp +L Device:R_Small R5 +U 1 1 61D99899 +P 4125 5650 +F 0 "R5" V 4075 5775 50 0000 C CNN +F 1 "120" V 4125 5650 50 0000 C CNN +F 2 "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder" H 4125 5650 50 0001 C CNN +F 3 "~" H 4125 5650 50 0001 C CNN + 1 4125 5650 + 0 1 1 0 +$EndComp +$Comp +L Device:R_Small R6 +U 1 1 61D9989F +P 4125 5750 +F 0 "R6" V 4075 5875 50 0000 C CNN +F 1 "120" V 4125 5750 50 0000 C CNN +F 2 "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder" H 4125 5750 50 0001 C CNN +F 3 "~" H 4125 5750 50 0001 C CNN + 1 4125 5750 + 0 1 1 0 +$EndComp +Wire Wire Line + 4225 5650 4300 5650 +Wire Wire Line + 4225 5750 4300 5750 +Text GLabel 3975 5650 0 50 Input ~ 0 +OLED_SCL +Text GLabel 3975 5750 0 50 Input ~ 0 +OLED_SDA +Wire Wire Line + 3975 5650 4025 5650 +Wire Wire Line + 3975 5750 4025 5750 +Wire Wire Line + 3975 5450 4300 5450 +Wire Wire Line + 3975 5550 4300 5550 +Text GLabel 3975 5950 0 50 Input ~ 0 +KEY_UP +Text GLabel 3975 6050 0 50 Input ~ 0 +KEY_OK +Text GLabel 3975 6150 0 50 Input ~ 0 +KEY_DN +Wire Wire Line + 3975 5950 4300 5950 +Wire Wire Line + 3975 6050 4300 6050 +Wire Wire Line + 3975 6150 4300 6150 +NoConn ~ 4300 5850 +$Comp +L power:PWR_FLAG #FLG01 +U 1 1 61DF12CC +P 6300 1375 +F 0 "#FLG01" H 6300 1450 50 0001 C CNN +F 1 "PWR_FLAG" H 6300 1548 50 0000 C CNN +F 2 "" H 6300 1375 50 0001 C CNN +F 3 "~" H 6300 1375 50 0001 C CNN + 1 6300 1375 + 1 0 0 -1 +$EndComp +$Comp +L power:PWR_FLAG #FLG02 +U 1 1 61DF236D +P 6300 1625 +F 0 "#FLG02" H 6300 1700 50 0001 C CNN +F 1 "PWR_FLAG" H 6300 1798 50 0000 C CNN +F 2 "" H 6300 1625 50 0001 C CNN +F 3 "~" H 6300 1625 50 0001 C CNN + 1 6300 1625 + -1 0 0 1 +$EndComp +Wire Wire Line + 6300 1625 6300 1550 +Connection ~ 6300 1550 +Wire Wire Line + 6300 1550 6325 1550 +Wire Wire Line + 6300 1375 6300 1450 +Connection ~ 6300 1450 +Wire Wire Line + 6300 1450 6325 1450 +$Comp +L Connector_Generic:Conn_02x07_Odd_Even J5 +U 1 1 61E01D46 +P 5875 5425 +F 0 "J5" H 5925 5825 50 0000 C CNN +F 1 "SWD" V 5925 5425 50 0000 C CNN +F 2 "Connector_PinHeader_1.27mm:PinHeader_2x07_P1.27mm_Vertical_SMD" H 5875 5425 50 0001 C CNN +F 3 "~" H 5875 5425 50 0001 C CNN + 1 5875 5425 + 1 0 0 -1 +$EndComp +$Comp +L power:+3V3 #PWR020 +U 1 1 61E035C5 +P 5600 5225 +F 0 "#PWR020" H 5600 5075 50 0001 C CNN +F 1 "+3V3" V 5600 5425 50 0000 C CNN +F 2 "" H 5600 5225 50 0001 C CNN +F 3 "" H 5600 5225 50 0001 C CNN + 1 5600 5225 + 0 -1 -1 0 +$EndComp +NoConn ~ 5675 5125 +NoConn ~ 6175 5125 +NoConn ~ 5675 5725 +NoConn ~ 6175 5725 +NoConn ~ 6175 5525 +NoConn ~ 6175 5425 +NoConn ~ 5675 5525 +$Comp +L power:GND #PWR021 +U 1 1 61E2B9B6 +P 5600 5750 +F 0 "#PWR021" H 5600 5500 50 0001 C CNN +F 1 "GND" H 5600 5625 50 0000 C CNN +F 2 "" H 5600 5750 50 0001 C CNN +F 3 "" H 5600 5750 50 0001 C CNN + 1 5600 5750 + -1 0 0 -1 +$EndComp +Wire Wire Line + 5600 5225 5675 5225 +Wire Wire Line + 5675 5325 5600 5325 +Wire Wire Line + 5600 5325 5600 5425 +Wire Wire Line + 5675 5425 5600 5425 +Connection ~ 5600 5425 +Wire Wire Line + 5600 5425 5600 5625 +Wire Wire Line + 5675 5625 5600 5625 +Connection ~ 5600 5625 +Wire Wire Line + 5600 5625 5600 5750 +$Comp +L Device:R_Small R18 +U 1 1 61E444D0 +P 6325 5225 +F 0 "R18" V 6250 5225 50 0000 C CNN +F 1 "22" V 6325 5225 50 0000 C CNN +F 2 "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder" H 6325 5225 50 0001 C CNN +F 3 "~" H 6325 5225 50 0001 C CNN + 1 6325 5225 + 0 1 1 0 +$EndComp +$Comp +L Device:R_Small R19 +U 1 1 61E45925 +P 6325 5325 +F 0 "R19" V 6400 5325 50 0000 C CNN +F 1 "22" V 6325 5325 50 0000 C CNN +F 2 "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder" H 6325 5325 50 0001 C CNN +F 3 "~" H 6325 5325 50 0001 C CNN + 1 6325 5325 + 0 1 1 0 +$EndComp +$Comp +L Device:R_Small R20 +U 1 1 61E4A7DA +P 6325 5625 +F 0 "R20" V 6250 5625 50 0000 C CNN +F 1 "22" V 6325 5625 50 0000 C CNN +F 2 "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder" H 6325 5625 50 0001 C CNN +F 3 "~" H 6325 5625 50 0001 C CNN + 1 6325 5625 + 0 1 1 0 +$EndComp +Wire Wire Line + 6225 5225 6175 5225 +Wire Wire Line + 6225 5325 6175 5325 +Wire Wire Line + 6225 5625 6175 5625 +$Comp +L Device:C_Small C7 +U 1 1 61E5FBA3 +P 6450 5750 +F 0 "C7" H 6525 5750 50 0000 L CNN +F 1 "100n" H 6450 5675 50 0000 L CNN +F 2 "Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder" H 6450 5750 50 0001 C CNN +F 3 "~" H 6450 5750 50 0001 C CNN + 1 6450 5750 + 1 0 0 -1 +$EndComp +Text GLabel 6475 5625 2 50 Input ~ 0 +NRST +Text GLabel 6475 5325 2 50 Input ~ 0 +SWCLK +Text GLabel 6475 5225 2 50 Input ~ 0 +SWDIO +Wire Wire Line + 6425 5225 6475 5225 +Wire Wire Line + 6425 5325 6475 5325 +Wire Wire Line + 6425 5625 6450 5625 +Wire Wire Line + 6450 5650 6450 5625 +Connection ~ 6450 5625 +Wire Wire Line + 6450 5625 6475 5625 +$Comp +L power:GND #PWR022 +U 1 1 61E79114 +P 6450 5900 +F 0 "#PWR022" H 6450 5650 50 0001 C CNN +F 1 "GND" H 6450 5775 50 0000 C CNN +F 2 "" H 6450 5900 50 0001 C CNN +F 3 "" H 6450 5900 50 0001 C CNN + 1 6450 5900 + -1 0 0 -1 +$EndComp +Wire Wire Line + 6450 5850 6450 5900 +$Comp +L Mechanical:MountingHole H1 +U 1 1 61F02955 +P 625 5375 +F 0 "H1" H 725 5421 50 0000 L CNN +F 1 "MountingHole" H 725 5330 50 0000 L CNN +F 2 "MountingHole:MountingHole_3.2mm_M3" H 625 5375 50 0001 C CNN +F 3 "~" H 625 5375 50 0001 C CNN + 1 625 5375 + 1 0 0 -1 +$EndComp +Text GLabel 6350 4450 2 50 Input ~ 0 +AC_N +Text GLabel 6350 3900 2 50 Input ~ 0 +AC_L +$EndSCHEMATC diff --git a/kicad/filadry2.sch-bak b/kicad/filadry2.sch-bak new file mode 100644 index 0000000..5a800fd --- /dev/null +++ b/kicad/filadry2.sch-bak @@ -0,0 +1,1204 @@ +EESchema Schematic File Version 4 +EELAYER 30 0 +EELAYER END +$Descr A4 11693 8268 +encoding utf-8 +Sheet 1 1 +Title "" +Date "" +Rev "" +Comp "" +Comment1 "" +Comment2 "" +Comment3 "" +Comment4 "" +$EndDescr +$Comp +L my_additions:STM32G070RBTx U1 +U 1 1 61C46D88 +P 2650 3200 +F 0 "U1" H 2675 4650 50 0000 C CNN +F 1 "STM32G070RBTx" H 2675 4575 50 0000 C CNN +F 2 "Package_QFP:LQFP-64_10x10mm_P0.5mm" H 2600 1225 50 0001 R CNN +F 3 "" H 4450 600 50 0001 C CNN + 1 2650 3200 + 1 0 0 -1 +$EndComp +$Comp +L Converter_ACDC:HLK-PM03 PS1 +U 1 1 61C4985C +P 5075 950 +F 0 "PS1" H 5075 1225 50 0000 C CNN +F 1 "HLK-PM03" H 5075 1150 50 0000 C CNN +F 2 "Converter_ACDC:Converter_ACDC_HiLink_HLK-PMxx" H 5075 650 50 0001 C CNN +F 3 "http://www.hlktech.net/product_detail.php?ProId=59" H 5475 600 50 0001 C CNN + 1 5075 950 + -1 0 0 -1 +$EndComp +$Comp +L Isolator:LTV-814 U2 +U 1 1 61C4ACCA +P 4975 2200 +F 0 "U2" H 4975 2475 50 0000 C CNN +F 1 "LTV-814" H 4975 2400 50 0000 C CNN +F 2 "my_additions:OPTO-SMD4" H 4775 2000 50 0001 L CIN +F 3 "https://optoelectronics.liteon.com/upload/download/DS-70-96-0013/LTV-8X4%20series%20201509.pdf" H 5050 2200 50 0001 L CNN + 1 4975 2200 + -1 0 0 -1 +$EndComp +$Comp +L Relay_SolidState:MOC3023M U3 +U 1 1 61C4BE67 +P 4975 3100 +F 0 "U3" H 4975 3375 50 0000 C CNN +F 1 "MOC3023M" H 4975 3300 50 0000 C CNN +F 2 "Package_DIP:DIP-6_W7.62mm_LongPads" H 4775 2900 50 0001 L CIN +F 3 "https://www.onsemi.com/pub/Collateral/MOC3023M-D.PDF" H 4975 3100 50 0001 L CNN + 1 4975 3100 + 1 0 0 -1 +$EndComp +$Comp +L Triac_Thyristor:BT138-800 Q2 +U 1 1 61C4CFC6 +P 5875 3175 +F 0 "Q2" H 5625 3200 50 0000 L CNN +F 1 "BT138-800" H 5350 3125 50 0000 L CNN +F 2 "Package_TO_SOT_THT:TO-220-3_Vertical" H 6075 3100 50 0001 L CIN +F 3 "https://assets.nexperia.com/documents/data-sheet/BT138_SER_D_E.pdf" H 5875 3175 50 0001 L CNN + 1 5875 3175 + 1 0 0 -1 +$EndComp +$Comp +L Device:Q_NPN_BEC Q1 +U 1 1 61C52C32 +P 1400 4225 +F 0 "Q1" H 1591 4271 50 0000 L CNN +F 1 "LBC817" H 1591 4180 50 0000 L CNN +F 2 "Package_TO_SOT_SMD:SOT-23_Handsoldering" H 1600 4325 50 0001 C CNN +F 3 "~" H 1400 4225 50 0001 C CNN + 1 1400 4225 + 1 0 0 -1 +$EndComp +$Comp +L Device:Buzzer BZ1 +U 1 1 61C556DB +P 1650 3875 +F 0 "BZ1" H 1325 3925 50 0000 L CNN +F 1 "Buzzer" H 1300 3850 50 0000 L CNN +F 2 "my_additions:Buzzer_D9_H5.5" V 1625 3975 50 0001 C CNN +F 3 "~" V 1625 3975 50 0001 C CNN + 1 1650 3875 + 1 0 0 -1 +$EndComp +$Comp +L power:+3V3 #PWR06 +U 1 1 61C5613B +P 2800 1150 +F 0 "#PWR06" H 2800 1000 50 0001 C CNN +F 1 "+3V3" H 2775 1275 50 0000 C CNN +F 2 "" H 2800 1150 50 0001 C CNN +F 3 "" H 2800 1150 50 0001 C CNN + 1 2800 1150 + 1 0 0 -1 +$EndComp +Wire Wire Line + 2700 1200 2700 1175 +Wire Wire Line + 2700 1175 2800 1175 +Wire Wire Line + 2900 1175 2900 1200 +Wire Wire Line + 2800 1200 2800 1175 +Connection ~ 2800 1175 +Wire Wire Line + 2800 1175 2900 1175 +Wire Wire Line + 2800 1150 2800 1175 +$Comp +L Device:C_Small C3 +U 1 1 61C57F2C +P 2050 850 +F 0 "C3" H 2050 925 50 0000 L CNN +F 1 "4u7" H 2050 775 50 0000 L CNN +F 2 "Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder" H 2050 850 50 0001 C CNN +F 3 "~" H 2050 850 50 0001 C CNN + 1 2050 850 + 1 0 0 -1 +$EndComp +$Comp +L Device:C_Small C4 +U 1 1 61C5A31B +P 2275 850 +F 0 "C4" H 2275 925 50 0000 L CNN +F 1 "100n" H 2275 775 50 0000 L CNN +F 2 "Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder" H 2275 850 50 0001 C CNN +F 3 "~" H 2275 850 50 0001 C CNN + 1 2275 850 + 1 0 0 -1 +$EndComp +$Comp +L power:+3V3 #PWR04 +U 1 1 61C5AE51 +P 2050 700 +F 0 "#PWR04" H 2050 550 50 0001 C CNN +F 1 "+3V3" H 2025 825 50 0000 C CNN +F 2 "" H 2050 700 50 0001 C CNN +F 3 "" H 2050 700 50 0001 C CNN + 1 2050 700 + 1 0 0 -1 +$EndComp +$Comp +L power:GND #PWR05 +U 1 1 61C5B2F6 +P 2050 1000 +F 0 "#PWR05" H 2050 750 50 0001 C CNN +F 1 "GND" H 2050 875 50 0000 C CNN +F 2 "" H 2050 1000 50 0001 C CNN +F 3 "" H 2050 1000 50 0001 C CNN + 1 2050 1000 + 1 0 0 -1 +$EndComp +Wire Wire Line + 2050 950 2050 975 +Wire Wire Line + 2050 750 2050 725 +Wire Wire Line + 2275 750 2275 725 +Wire Wire Line + 2275 725 2050 725 +Connection ~ 2050 725 +Wire Wire Line + 2050 725 2050 700 +Wire Wire Line + 2275 950 2275 975 +Wire Wire Line + 2275 975 2050 975 +Connection ~ 2050 975 +Wire Wire Line + 2050 975 2050 1000 +$Comp +L Device:R_Small R2 +U 1 1 61C5E1F7 +P 1850 1500 +F 0 "R2" V 1775 1500 50 0000 C CNN +F 1 "0" V 1850 1500 50 0000 C CNN +F 2 "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder" H 1850 1500 50 0001 C CNN +F 3 "~" H 1850 1500 50 0001 C CNN + 1 1850 1500 + 0 1 1 0 +$EndComp +$Comp +L Device:Crystal_Small Y1 +U 1 1 61C5FA39 +P 1400 1375 +F 0 "Y1" V 1354 1463 50 0000 L CNN +F 1 "16MHz" V 1445 1463 50 0000 L CNN +F 2 "my_additions:OSC-TH_L10.0-W4.5-P5.00" H 1400 1375 50 0001 C CNN +F 3 "~" H 1400 1375 50 0001 C CNN + 1 1400 1375 + 0 1 1 0 +$EndComp +$Comp +L Device:C_Small C1 +U 1 1 61C617E6 +P 1200 1250 +F 0 "C1" V 1100 1250 50 0000 C CNN +F 1 "30p" V 1300 1250 50 0000 C CNN +F 2 "Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder" H 1200 1250 50 0001 C CNN +F 3 "~" H 1200 1250 50 0001 C CNN + 1 1200 1250 + 0 1 1 0 +$EndComp +$Comp +L Device:C_Small C2 +U 1 1 61C62D85 +P 1200 1500 +F 0 "C2" V 1150 1575 50 0000 C CNN +F 1 "30p" V 1300 1500 50 0000 C CNN +F 2 "Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder" H 1200 1500 50 0001 C CNN +F 3 "~" H 1200 1500 50 0001 C CNN + 1 1200 1500 + 0 1 1 0 +$EndComp +$Comp +L power:GND #PWR01 +U 1 1 61C63887 +P 1025 1525 +F 0 "#PWR01" H 1025 1275 50 0001 C CNN +F 1 "GND" H 1025 1400 50 0000 C CNN +F 2 "" H 1025 1525 50 0001 C CNN +F 3 "" H 1025 1525 50 0001 C CNN + 1 1025 1525 + 1 0 0 -1 +$EndComp +Wire Wire Line + 1025 1525 1025 1500 +Wire Wire Line + 1025 1250 1100 1250 +Wire Wire Line + 1100 1500 1025 1500 +Connection ~ 1025 1500 +Wire Wire Line + 1025 1500 1025 1250 +Wire Wire Line + 1300 1500 1400 1500 +Wire Wire Line + 1950 1500 2000 1500 +Wire Wire Line + 1400 1475 1400 1500 +Connection ~ 1400 1500 +Wire Wire Line + 1400 1500 1750 1500 +Wire Wire Line + 1300 1250 1400 1250 +Wire Wire Line + 1950 1250 1950 1400 +Wire Wire Line + 1950 1400 2000 1400 +Wire Wire Line + 1400 1275 1400 1250 +Connection ~ 1400 1250 +Wire Wire Line + 1400 1250 1950 1250 +Text GLabel 1950 1650 0 50 Input ~ 0 +NRST +Wire Wire Line + 1950 1650 2000 1650 +$Comp +L power:GND #PWR07 +U 1 1 61C67FC9 +P 2900 5250 +F 0 "#PWR07" H 2900 5000 50 0001 C CNN +F 1 "GND" H 2900 5125 50 0000 C CNN +F 2 "" H 2900 5250 50 0001 C CNN +F 3 "" H 2900 5250 50 0001 C CNN + 1 2900 5250 + 1 0 0 -1 +$EndComp +Wire Wire Line + 2900 5250 2900 5200 +$Comp +L power:+3V3 #PWR02 +U 1 1 61C6926A +P 1500 3725 +F 0 "#PWR02" H 1500 3575 50 0001 C CNN +F 1 "+3V3" H 1475 3850 50 0000 C CNN +F 2 "" H 1500 3725 50 0001 C CNN +F 3 "" H 1500 3725 50 0001 C CNN + 1 1500 3725 + 1 0 0 -1 +$EndComp +$Comp +L power:GND #PWR03 +U 1 1 61C6AA24 +P 1500 4475 +F 0 "#PWR03" H 1500 4225 50 0001 C CNN +F 1 "GND" H 1500 4350 50 0000 C CNN +F 2 "" H 1500 4475 50 0001 C CNN +F 3 "" H 1500 4475 50 0001 C CNN + 1 1500 4475 + 1 0 0 -1 +$EndComp +Wire Wire Line + 1500 4475 1500 4425 +Wire Wire Line + 1500 4025 1500 3975 +Wire Wire Line + 1500 3975 1550 3975 +Wire Wire Line + 1550 3775 1500 3775 +Wire Wire Line + 1500 3775 1500 3725 +$Comp +L Device:R_Small R1 +U 1 1 61C6D131 +P 1050 4225 +F 0 "R1" V 975 4225 50 0000 C CNN +F 1 "220" V 1125 4225 50 0000 C CNN +F 2 "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder" H 1050 4225 50 0001 C CNN +F 3 "~" H 1050 4225 50 0001 C CNN + 1 1050 4225 + 0 1 1 0 +$EndComp +Wire Wire Line + 1150 4225 1200 4225 +$Comp +L power:+3V3 #PWR015 +U 1 1 61C88D7F +P 4625 800 +F 0 "#PWR015" H 4625 650 50 0001 C CNN +F 1 "+3V3" H 4650 925 50 0000 C CNN +F 2 "" H 4625 800 50 0001 C CNN +F 3 "" H 4625 800 50 0001 C CNN + 1 4625 800 + -1 0 0 -1 +$EndComp +$Comp +L power:GND #PWR016 +U 1 1 61C8A934 +P 4625 1100 +F 0 "#PWR016" H 4625 850 50 0001 C CNN +F 1 "GND" H 4625 975 50 0000 C CNN +F 2 "" H 4625 1100 50 0001 C CNN +F 3 "" H 4625 1100 50 0001 C CNN + 1 4625 1100 + -1 0 0 -1 +$EndComp +Wire Wire Line + 4675 1050 4625 1050 +Wire Wire Line + 4625 1050 4625 1100 +Wire Wire Line + 4675 850 4625 850 +Wire Wire Line + 4625 850 4625 800 +$Comp +L Device:R R12 +U 1 1 61C8DA64 +P 5475 2100 +F 0 "R12" V 5400 2100 50 0000 C CNN +F 1 "47k" V 5475 2100 50 0000 C CNN +F 2 "Resistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolder" V 5405 2100 50 0001 C CNN +F 3 "~" H 5475 2100 50 0001 C CNN + 1 5475 2100 + 0 -1 1 0 +$EndComp +$Comp +L Device:R R13 +U 1 1 61C8EF1C +P 5475 2300 +F 0 "R13" V 5400 2300 50 0000 C CNN +F 1 "47k" V 5475 2300 50 0000 C CNN +F 2 "Resistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolder" V 5405 2300 50 0001 C CNN +F 3 "~" H 5475 2300 50 0001 C CNN + 1 5475 2300 + 0 -1 1 0 +$EndComp +$Comp +L power:GND #PWR017 +U 1 1 61C90051 +P 4625 2350 +F 0 "#PWR017" H 4625 2100 50 0001 C CNN +F 1 "GND" H 4625 2225 50 0000 C CNN +F 2 "" H 4625 2350 50 0001 C CNN +F 3 "" H 4625 2350 50 0001 C CNN + 1 4625 2350 + -1 0 0 -1 +$EndComp +$Comp +L power:+3V3 #PWR014 +U 1 1 61C91860 +P 4550 1675 +F 0 "#PWR014" H 4550 1525 50 0001 C CNN +F 1 "+3V3" H 4575 1800 50 0000 C CNN +F 2 "" H 4550 1675 50 0001 C CNN +F 3 "" H 4550 1675 50 0001 C CNN + 1 4550 1675 + -1 0 0 -1 +$EndComp +$Comp +L Device:R_Small R9 +U 1 1 61C925E4 +P 4550 1825 +F 0 "R9" V 4625 1775 50 0000 L CNN +F 1 "10k" V 4475 1750 50 0000 L CNN +F 2 "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder" H 4550 1825 50 0001 C CNN +F 3 "~" H 4550 1825 50 0001 C CNN + 1 4550 1825 + -1 0 0 -1 +$EndComp +Wire Wire Line + 5325 2100 5275 2100 +Wire Wire Line + 5325 2300 5275 2300 +Wire Wire Line + 4675 2300 4625 2300 +Wire Wire Line + 4625 2300 4625 2350 +Wire Wire Line + 4675 2100 4550 2100 +Wire Wire Line + 4550 2100 4550 1925 +Wire Wire Line + 4550 1725 4550 1675 +$Comp +L Connector:Screw_Terminal_01x02 J6 +U 1 1 61C984AE +P 6525 1450 +F 0 "J6" H 6525 1550 50 0000 C CNN +F 1 "220V" V 6625 1400 50 0000 C CNN +F 2 "TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-3-2-5.08_1x02_P5.08mm_Horizontal" H 6525 1450 50 0001 C CNN +F 3 "~" H 6525 1450 50 0001 C CNN + 1 6525 1450 + 1 0 0 -1 +$EndComp +Text GLabel 1950 3100 0 50 Input ~ 0 +SWDIO +Text GLabel 1950 3200 0 50 Input ~ 0 +SWCLK +Wire Wire Line + 1950 3200 2000 3200 +Wire Wire Line + 1950 3100 2000 3100 +Text GLabel 3350 3700 2 50 Input ~ 0 +ZeroCross +Wire Wire Line + 3300 3700 3350 3700 +Text GLabel 3350 2200 2 50 Input ~ 0 +Gate_Heater +Text GLabel 3350 2300 2 50 Input ~ 0 +Gate_Fan +Wire Wire Line + 3350 2200 3300 2200 +Wire Wire Line + 3350 2300 3300 2300 +Text GLabel 3350 2600 2 50 Input ~ 0 +BME_SCL +Text GLabel 3350 2700 2 50 Input ~ 0 +BME_SDA +Wire Wire Line + 3350 2600 3300 2600 +Wire Wire Line + 3350 2700 3300 2700 +Text GLabel 1950 2500 0 50 Input ~ 0 +Buzzer +Text GLabel 3350 2000 2 50 Input ~ 0 +KEY_UP +Text GLabel 3350 1900 2 50 Input ~ 0 +KEY_OK +Text GLabel 3350 1800 2 50 Input ~ 0 +KEY_DN +Text GLabel 3350 2800 2 50 Input ~ 0 +OLED_SCL +Text GLabel 3350 2900 2 50 Input ~ 0 +OLED_SDA +Wire Wire Line + 3350 1800 3300 1800 +Wire Wire Line + 3350 1900 3300 1900 +Wire Wire Line + 3350 2000 3300 2000 +Wire Wire Line + 3350 2800 3300 2800 +Wire Wire Line + 3350 2900 3300 2900 +Wire Wire Line + 1950 2500 2000 2500 +NoConn ~ 2000 1800 +NoConn ~ 2000 1900 +NoConn ~ 2000 2000 +NoConn ~ 2000 2100 +NoConn ~ 2000 2200 +NoConn ~ 2000 2300 +NoConn ~ 2000 2400 +NoConn ~ 2000 2600 +NoConn ~ 2000 2700 +NoConn ~ 2000 2800 +NoConn ~ 2000 2900 +NoConn ~ 2000 3000 +NoConn ~ 2000 3300 +NoConn ~ 2000 3500 +NoConn ~ 2000 3600 +NoConn ~ 2000 3700 +NoConn ~ 2000 3800 +NoConn ~ 2000 3900 +NoConn ~ 2000 4000 +NoConn ~ 2000 4100 +NoConn ~ 2000 4200 +NoConn ~ 2000 4300 +NoConn ~ 2000 4400 +NoConn ~ 2000 4500 +NoConn ~ 2000 4600 +NoConn ~ 2000 4700 +NoConn ~ 2000 4800 +NoConn ~ 2000 4900 +NoConn ~ 2000 5000 +NoConn ~ 3300 2100 +NoConn ~ 3300 2400 +NoConn ~ 3300 2500 +NoConn ~ 3300 3000 +NoConn ~ 3300 3100 +NoConn ~ 3300 3200 +NoConn ~ 3300 3300 +NoConn ~ 3300 3500 +NoConn ~ 3300 3600 +NoConn ~ 3300 3800 +NoConn ~ 3300 3900 +NoConn ~ 3300 4000 +NoConn ~ 3300 4100 +NoConn ~ 3300 4300 +NoConn ~ 3300 4400 +Text GLabel 900 4225 0 50 Input ~ 0 +Buzzer +Wire Wire Line + 900 4225 950 4225 +$Comp +L Device:R_Small R7 +U 1 1 61D21CEF +P 4525 3000 +F 0 "R7" V 4450 3000 50 0000 C CNN +F 1 "270" V 4600 3000 50 0000 C CNN +F 2 "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder" H 4525 3000 50 0001 C CNN +F 3 "~" H 4525 3000 50 0001 C CNN + 1 4525 3000 + 0 1 1 0 +$EndComp +Text GLabel 4375 3000 0 50 Input ~ 0 +Gate_Heater +Wire Wire Line + 4375 3000 4425 3000 +Wire Wire Line + 4625 3000 4675 3000 +$Comp +L power:GND #PWR018 +U 1 1 61D2816E +P 4625 3250 +F 0 "#PWR018" H 4625 3000 50 0001 C CNN +F 1 "GND" H 4625 3125 50 0000 C CNN +F 2 "" H 4625 3250 50 0001 C CNN +F 3 "" H 4625 3250 50 0001 C CNN + 1 4625 3250 + -1 0 0 -1 +$EndComp +Wire Wire Line + 4625 3250 4625 3200 +Wire Wire Line + 4625 3200 4675 3200 +$Comp +L Device:R_Small R10 +U 1 1 61D2DBF2 +P 5425 3000 +F 0 "R10" V 5350 3000 50 0000 C CNN +F 1 "220" V 5500 3000 50 0000 C CNN +F 2 "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder" H 5425 3000 50 0001 C CNN +F 3 "~" H 5425 3000 50 0001 C CNN + 1 5425 3000 + 0 1 1 0 +$EndComp +$Comp +L Device:R_Small R16 +U 1 1 61D2EEC6 +P 5675 3000 +F 0 "R16" V 5600 3000 50 0000 C CNN +F 1 "220" V 5750 3000 50 0000 C CNN +F 2 "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder" H 5675 3000 50 0001 C CNN +F 3 "~" H 5675 3000 50 0001 C CNN + 1 5675 3000 + 0 1 1 0 +$EndComp +Text GLabel 4400 2100 0 50 Input ~ 0 +ZeroCross +Wire Wire Line + 4400 2100 4550 2100 +Connection ~ 4550 2100 +Wire Wire Line + 5275 3000 5325 3000 +Wire Wire Line + 5525 3000 5575 3000 +$Comp +L Device:R_Small R14 +U 1 1 61C517C6 +P 5625 3425 +F 0 "R14" V 5550 3425 50 0000 C CNN +F 1 "470" V 5700 3425 50 0000 C CNN +F 2 "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder" H 5625 3425 50 0001 C CNN +F 3 "~" H 5625 3425 50 0001 C CNN + 1 5625 3425 + 0 1 1 0 +$EndComp +Wire Wire Line + 5725 3275 5325 3275 +Wire Wire Line + 5325 3275 5325 3200 +Wire Wire Line + 5325 3200 5275 3200 +Wire Wire Line + 5725 3425 5875 3425 +Wire Wire Line + 5875 3425 5875 3325 +Wire Wire Line + 5525 3425 5325 3425 +Wire Wire Line + 5325 3425 5325 3275 +Connection ~ 5325 3275 +Wire Wire Line + 5775 3000 5875 3000 +Wire Wire Line + 5875 3000 5875 3025 +$Comp +L Connector:Screw_Terminal_01x02 J3 +U 1 1 61C68CAE +P 5875 2675 +F 0 "J3" H 5875 2775 50 0000 C CNN +F 1 "Heater" V 5975 2625 50 0000 C CNN +F 2 "TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-3-2-5.08_1x02_P5.08mm_Horizontal" H 5875 2675 50 0001 C CNN +F 3 "~" H 5875 2675 50 0001 C CNN + 1 5875 2675 + 0 -1 -1 0 +$EndComp +$Comp +L Relay_SolidState:MOC3023M U4 +U 1 1 61CAE0BC +P 4975 4125 +F 0 "U4" H 4975 4400 50 0000 C CNN +F 1 "MOC3023M" H 4975 4325 50 0000 C CNN +F 2 "Package_DIP:DIP-6_W7.62mm_LongPads" H 4775 3925 50 0001 L CIN +F 3 "https://www.onsemi.com/pub/Collateral/MOC3023M-D.PDF" H 4975 4125 50 0001 L CNN + 1 4975 4125 + 1 0 0 -1 +$EndComp +$Comp +L Triac_Thyristor:BT138-800 Q3 +U 1 1 61CAE0C2 +P 5875 4200 +F 0 "Q3" H 5625 4225 50 0000 L CNN +F 1 "BT138-800" H 5350 4150 50 0000 L CNN +F 2 "Package_TO_SOT_THT:TO-220-3_Vertical" H 6075 4125 50 0001 L CIN +F 3 "https://assets.nexperia.com/documents/data-sheet/BT138_SER_D_E.pdf" H 5875 4200 50 0001 L CNN + 1 5875 4200 + 1 0 0 -1 +$EndComp +$Comp +L Device:R_Small R8 +U 1 1 61CAE0C8 +P 4525 4025 +F 0 "R8" V 4450 4025 50 0000 C CNN +F 1 "270" V 4600 4025 50 0000 C CNN +F 2 "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder" H 4525 4025 50 0001 C CNN +F 3 "~" H 4525 4025 50 0001 C CNN + 1 4525 4025 + 0 1 1 0 +$EndComp +Text GLabel 4375 4025 0 50 Input ~ 0 +Gate_Fan +Wire Wire Line + 4375 4025 4425 4025 +Wire Wire Line + 4625 4025 4675 4025 +$Comp +L power:GND #PWR019 +U 1 1 61CAE0D1 +P 4625 4275 +F 0 "#PWR019" H 4625 4025 50 0001 C CNN +F 1 "GND" H 4625 4150 50 0000 C CNN +F 2 "" H 4625 4275 50 0001 C CNN +F 3 "" H 4625 4275 50 0001 C CNN + 1 4625 4275 + -1 0 0 -1 +$EndComp +Wire Wire Line + 4625 4275 4625 4225 +Wire Wire Line + 4625 4225 4675 4225 +$Comp +L Device:R_Small R11 +U 1 1 61CAE0D9 +P 5425 4025 +F 0 "R11" V 5350 4025 50 0000 C CNN +F 1 "220" V 5500 4025 50 0000 C CNN +F 2 "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder" H 5425 4025 50 0001 C CNN +F 3 "~" H 5425 4025 50 0001 C CNN + 1 5425 4025 + 0 1 1 0 +$EndComp +$Comp +L Device:R_Small R17 +U 1 1 61CAE0DF +P 5675 4025 +F 0 "R17" V 5600 4025 50 0000 C CNN +F 1 "220" V 5750 4025 50 0000 C CNN +F 2 "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder" H 5675 4025 50 0001 C CNN +F 3 "~" H 5675 4025 50 0001 C CNN + 1 5675 4025 + 0 1 1 0 +$EndComp +Wire Wire Line + 5275 4025 5325 4025 +Wire Wire Line + 5525 4025 5575 4025 +$Comp +L Device:R_Small R15 +U 1 1 61CAE0ED +P 5625 4450 +F 0 "R15" V 5550 4450 50 0000 C CNN +F 1 "470" V 5700 4450 50 0000 C CNN +F 2 "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder" H 5625 4450 50 0001 C CNN +F 3 "~" H 5625 4450 50 0001 C CNN + 1 5625 4450 + 0 1 1 0 +$EndComp +Wire Wire Line + 5725 4300 5325 4300 +Wire Wire Line + 5325 4300 5325 4225 +Wire Wire Line + 5325 4225 5275 4225 +Wire Wire Line + 5725 4450 5875 4450 +Wire Wire Line + 5875 4450 5875 4350 +Wire Wire Line + 5525 4450 5325 4450 +Wire Wire Line + 5325 4450 5325 4300 +Connection ~ 5325 4300 +Wire Wire Line + 5775 4025 5875 4025 +Wire Wire Line + 5875 4025 5875 4050 +$Comp +L Connector:Screw_Terminal_01x02 J4 +U 1 1 61CAE0FD +P 5875 3700 +F 0 "J4" H 5875 3800 50 0000 C CNN +F 1 "Fan" V 5975 3650 50 0000 C CNN +F 2 "TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-3-2-5.08_1x02_P5.08mm_Horizontal" H 5875 3700 50 0001 C CNN +F 3 "~" H 5875 3700 50 0001 C CNN + 1 5875 3700 + 0 -1 -1 0 +$EndComp +Text GLabel 5575 850 2 50 Input ~ 0 +AC_L +Text GLabel 5575 1050 2 50 Input ~ 0 +AC_N +Wire Wire Line + 5475 1050 5575 1050 +Wire Wire Line + 5475 850 5575 850 +Text GLabel 5725 2300 2 50 Input ~ 0 +AC_L +Text GLabel 5725 2100 2 50 Input ~ 0 +AC_N +Wire Wire Line + 5725 2100 5625 2100 +Wire Wire Line + 5725 2300 5625 2300 +Wire Wire Line + 5875 3000 5875 2875 +Connection ~ 5875 3000 +Wire Wire Line + 5875 4025 5875 3900 +Connection ~ 5875 4025 +Text GLabel 6350 2875 2 50 Input ~ 0 +AC_L +Text GLabel 6350 3425 2 50 Input ~ 0 +AC_N +Text GLabel 6350 4450 2 50 Input ~ 0 +AC_L +Text GLabel 6350 3900 2 50 Input ~ 0 +AC_N +Text GLabel 6250 1550 0 50 Input ~ 0 +AC_L +Text GLabel 6250 1450 0 50 Input ~ 0 +AC_N +Wire Wire Line + 6250 1450 6300 1450 +Wire Wire Line + 6250 1550 6300 1550 +Wire Wire Line + 5975 2875 6350 2875 +Wire Wire Line + 5875 3425 6350 3425 +Connection ~ 5875 3425 +Wire Wire Line + 5975 3900 6350 3900 +Wire Wire Line + 5875 4450 6350 4450 +Connection ~ 5875 4450 +$Comp +L Device:C_Small C5 +U 1 1 61D5351C +P 4150 950 +F 0 "C5" H 4150 1025 50 0000 L CNN +F 1 "4u7" H 4150 875 50 0000 L CNN +F 2 "Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder" H 4150 950 50 0001 C CNN +F 3 "~" H 4150 950 50 0001 C CNN + 1 4150 950 + 1 0 0 -1 +$EndComp +$Comp +L Device:C_Small C6 +U 1 1 61D53522 +P 4375 950 +F 0 "C6" H 4375 1025 50 0000 L CNN +F 1 "100n" H 4375 875 50 0000 L CNN +F 2 "Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder" H 4375 950 50 0001 C CNN +F 3 "~" H 4375 950 50 0001 C CNN + 1 4375 950 + 1 0 0 -1 +$EndComp +$Comp +L power:+3V3 #PWR012 +U 1 1 61D53528 +P 4150 800 +F 0 "#PWR012" H 4150 650 50 0001 C CNN +F 1 "+3V3" H 4125 925 50 0000 C CNN +F 2 "" H 4150 800 50 0001 C CNN +F 3 "" H 4150 800 50 0001 C CNN + 1 4150 800 + 1 0 0 -1 +$EndComp +$Comp +L power:GND #PWR013 +U 1 1 61D5352E +P 4150 1100 +F 0 "#PWR013" H 4150 850 50 0001 C CNN +F 1 "GND" H 4150 975 50 0000 C CNN +F 2 "" H 4150 1100 50 0001 C CNN +F 3 "" H 4150 1100 50 0001 C CNN + 1 4150 1100 + 1 0 0 -1 +$EndComp +Wire Wire Line + 4150 1050 4150 1075 +Wire Wire Line + 4150 850 4150 825 +Wire Wire Line + 4375 850 4375 825 +Wire Wire Line + 4375 825 4150 825 +Connection ~ 4150 825 +Wire Wire Line + 4150 825 4150 800 +Wire Wire Line + 4375 1050 4375 1075 +Wire Wire Line + 4375 1075 4150 1075 +Connection ~ 4150 1075 +Wire Wire Line + 4150 1075 4150 1100 +$Comp +L Connector_Generic:Conn_01x04 J1 +U 1 1 61D5DAC8 +P 4500 4975 +F 0 "J1" H 4450 5175 50 0000 L CNN +F 1 "BME280" V 4600 4775 50 0000 L CNN +F 2 "Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical" H 4500 4975 50 0001 C CNN +F 3 "~" H 4500 4975 50 0001 C CNN + 1 4500 4975 + 1 0 0 -1 +$EndComp +$Comp +L power:GND #PWR09 +U 1 1 61D60698 +P 3975 4975 +F 0 "#PWR09" H 3975 4725 50 0001 C CNN +F 1 "GND" V 3975 4800 50 0000 C CNN +F 2 "" H 3975 4975 50 0001 C CNN +F 3 "" H 3975 4975 50 0001 C CNN + 1 3975 4975 + 0 1 1 0 +$EndComp +$Comp +L power:+3V3 #PWR08 +U 1 1 61D6493A +P 3975 4875 +F 0 "#PWR08" H 3975 4725 50 0001 C CNN +F 1 "+3V3" V 3975 5075 50 0000 C CNN +F 2 "" H 3975 4875 50 0001 C CNN +F 3 "" H 3975 4875 50 0001 C CNN + 1 3975 4875 + 0 -1 -1 0 +$EndComp +Wire Wire Line + 3975 4875 4300 4875 +Wire Wire Line + 3975 4975 4300 4975 +$Comp +L Device:R_Small R3 +U 1 1 61D6E92C +P 4125 5075 +F 0 "R3" V 4075 5200 50 0000 C CNN +F 1 "120" V 4125 5075 50 0000 C CNN +F 2 "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder" H 4125 5075 50 0001 C CNN +F 3 "~" H 4125 5075 50 0001 C CNN + 1 4125 5075 + 0 1 1 0 +$EndComp +$Comp +L Device:R_Small R4 +U 1 1 61D705E3 +P 4125 5175 +F 0 "R4" V 4200 5175 50 0000 C CNN +F 1 "120" V 4125 5175 50 0000 C CNN +F 2 "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder" H 4125 5175 50 0001 C CNN +F 3 "~" H 4125 5175 50 0001 C CNN + 1 4125 5175 + 0 1 1 0 +$EndComp +Wire Wire Line + 4225 5075 4300 5075 +Wire Wire Line + 4225 5175 4300 5175 +Text GLabel 3975 5075 0 50 Input ~ 0 +BME_SCL +Text GLabel 3975 5175 0 50 Input ~ 0 +BME_SDA +Wire Wire Line + 3975 5075 4025 5075 +Wire Wire Line + 3975 5175 4025 5175 +$Comp +L Connector_Generic:Conn_01x08 J2 +U 1 1 61D92A4A +P 4500 5750 +F 0 "J2" H 4450 6150 50 0000 L CNN +F 1 "Front Panel" V 4600 5525 50 0000 L CNN +F 2 "Connector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_Vertical" H 4500 5750 50 0001 C CNN +F 3 "~" H 4500 5750 50 0001 C CNN + 1 4500 5750 + 1 0 0 -1 +$EndComp +$Comp +L power:GND #PWR011 +U 1 1 61D945A8 +P 3975 5550 +F 0 "#PWR011" H 3975 5300 50 0001 C CNN +F 1 "GND" V 3975 5375 50 0000 C CNN +F 2 "" H 3975 5550 50 0001 C CNN +F 3 "" H 3975 5550 50 0001 C CNN + 1 3975 5550 + 0 1 1 0 +$EndComp +$Comp +L power:+3V3 #PWR010 +U 1 1 61D945AE +P 3975 5450 +F 0 "#PWR010" H 3975 5300 50 0001 C CNN +F 1 "+3V3" V 3975 5650 50 0000 C CNN +F 2 "" H 3975 5450 50 0001 C CNN +F 3 "" H 3975 5450 50 0001 C CNN + 1 3975 5450 + 0 -1 -1 0 +$EndComp +$Comp +L Device:R_Small R5 +U 1 1 61D99899 +P 4125 5650 +F 0 "R5" V 4075 5775 50 0000 C CNN +F 1 "120" V 4125 5650 50 0000 C CNN +F 2 "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder" H 4125 5650 50 0001 C CNN +F 3 "~" H 4125 5650 50 0001 C CNN + 1 4125 5650 + 0 1 1 0 +$EndComp +$Comp +L Device:R_Small R6 +U 1 1 61D9989F +P 4125 5750 +F 0 "R6" V 4075 5875 50 0000 C CNN +F 1 "120" V 4125 5750 50 0000 C CNN +F 2 "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder" H 4125 5750 50 0001 C CNN +F 3 "~" H 4125 5750 50 0001 C CNN + 1 4125 5750 + 0 1 1 0 +$EndComp +Wire Wire Line + 4225 5650 4300 5650 +Wire Wire Line + 4225 5750 4300 5750 +Text GLabel 3975 5650 0 50 Input ~ 0 +OLED_SCL +Text GLabel 3975 5750 0 50 Input ~ 0 +OLED_SDA +Wire Wire Line + 3975 5650 4025 5650 +Wire Wire Line + 3975 5750 4025 5750 +Wire Wire Line + 3975 5450 4300 5450 +Wire Wire Line + 3975 5550 4300 5550 +Text GLabel 3975 5950 0 50 Input ~ 0 +KEY_UP +Text GLabel 3975 6050 0 50 Input ~ 0 +KEY_OK +Text GLabel 3975 6150 0 50 Input ~ 0 +KEY_DN +Wire Wire Line + 3975 5950 4300 5950 +Wire Wire Line + 3975 6050 4300 6050 +Wire Wire Line + 3975 6150 4300 6150 +NoConn ~ 4300 5850 +$Comp +L power:PWR_FLAG #FLG01 +U 1 1 61DF12CC +P 6300 1375 +F 0 "#FLG01" H 6300 1450 50 0001 C CNN +F 1 "PWR_FLAG" H 6300 1548 50 0000 C CNN +F 2 "" H 6300 1375 50 0001 C CNN +F 3 "~" H 6300 1375 50 0001 C CNN + 1 6300 1375 + 1 0 0 -1 +$EndComp +$Comp +L power:PWR_FLAG #FLG02 +U 1 1 61DF236D +P 6300 1625 +F 0 "#FLG02" H 6300 1700 50 0001 C CNN +F 1 "PWR_FLAG" H 6300 1798 50 0000 C CNN +F 2 "" H 6300 1625 50 0001 C CNN +F 3 "~" H 6300 1625 50 0001 C CNN + 1 6300 1625 + -1 0 0 1 +$EndComp +Wire Wire Line + 6300 1625 6300 1550 +Connection ~ 6300 1550 +Wire Wire Line + 6300 1550 6325 1550 +Wire Wire Line + 6300 1375 6300 1450 +Connection ~ 6300 1450 +Wire Wire Line + 6300 1450 6325 1450 +$Comp +L Connector_Generic:Conn_02x07_Odd_Even J5 +U 1 1 61E01D46 +P 5875 5425 +F 0 "J5" H 5925 5825 50 0000 C CNN +F 1 "SWD" V 5925 5425 50 0000 C CNN +F 2 "Connector_PinHeader_1.27mm:PinHeader_2x07_P1.27mm_Vertical_SMD" H 5875 5425 50 0001 C CNN +F 3 "~" H 5875 5425 50 0001 C CNN + 1 5875 5425 + 1 0 0 -1 +$EndComp +$Comp +L power:+3V3 #PWR020 +U 1 1 61E035C5 +P 5600 5225 +F 0 "#PWR020" H 5600 5075 50 0001 C CNN +F 1 "+3V3" V 5600 5425 50 0000 C CNN +F 2 "" H 5600 5225 50 0001 C CNN +F 3 "" H 5600 5225 50 0001 C CNN + 1 5600 5225 + 0 -1 -1 0 +$EndComp +NoConn ~ 5675 5125 +NoConn ~ 6175 5125 +NoConn ~ 5675 5725 +NoConn ~ 6175 5725 +NoConn ~ 6175 5525 +NoConn ~ 6175 5425 +NoConn ~ 5675 5525 +$Comp +L power:GND #PWR021 +U 1 1 61E2B9B6 +P 5600 5750 +F 0 "#PWR021" H 5600 5500 50 0001 C CNN +F 1 "GND" H 5600 5625 50 0000 C CNN +F 2 "" H 5600 5750 50 0001 C CNN +F 3 "" H 5600 5750 50 0001 C CNN + 1 5600 5750 + -1 0 0 -1 +$EndComp +Wire Wire Line + 5600 5225 5675 5225 +Wire Wire Line + 5675 5325 5600 5325 +Wire Wire Line + 5600 5325 5600 5425 +Wire Wire Line + 5675 5425 5600 5425 +Connection ~ 5600 5425 +Wire Wire Line + 5600 5425 5600 5625 +Wire Wire Line + 5675 5625 5600 5625 +Connection ~ 5600 5625 +Wire Wire Line + 5600 5625 5600 5750 +$Comp +L Device:R_Small R18 +U 1 1 61E444D0 +P 6325 5225 +F 0 "R18" V 6250 5225 50 0000 C CNN +F 1 "22" V 6325 5225 50 0000 C CNN +F 2 "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder" H 6325 5225 50 0001 C CNN +F 3 "~" H 6325 5225 50 0001 C CNN + 1 6325 5225 + 0 1 1 0 +$EndComp +$Comp +L Device:R_Small R19 +U 1 1 61E45925 +P 6325 5325 +F 0 "R19" V 6400 5325 50 0000 C CNN +F 1 "22" V 6325 5325 50 0000 C CNN +F 2 "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder" H 6325 5325 50 0001 C CNN +F 3 "~" H 6325 5325 50 0001 C CNN + 1 6325 5325 + 0 1 1 0 +$EndComp +$Comp +L Device:R_Small R20 +U 1 1 61E4A7DA +P 6325 5625 +F 0 "R20" V 6250 5625 50 0000 C CNN +F 1 "22" V 6325 5625 50 0000 C CNN +F 2 "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder" H 6325 5625 50 0001 C CNN +F 3 "~" H 6325 5625 50 0001 C CNN + 1 6325 5625 + 0 1 1 0 +$EndComp +Wire Wire Line + 6225 5225 6175 5225 +Wire Wire Line + 6225 5325 6175 5325 +Wire Wire Line + 6225 5625 6175 5625 +$Comp +L Device:C_Small C7 +U 1 1 61E5FBA3 +P 6450 5750 +F 0 "C7" H 6525 5750 50 0000 L CNN +F 1 "100n" H 6450 5675 50 0000 L CNN +F 2 "Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder" H 6450 5750 50 0001 C CNN +F 3 "~" H 6450 5750 50 0001 C CNN + 1 6450 5750 + 1 0 0 -1 +$EndComp +Text GLabel 6475 5625 2 50 Input ~ 0 +NRST +Text GLabel 6475 5325 2 50 Input ~ 0 +SWCLK +Text GLabel 6475 5225 2 50 Input ~ 0 +SWDIO +Wire Wire Line + 6425 5225 6475 5225 +Wire Wire Line + 6425 5325 6475 5325 +Wire Wire Line + 6425 5625 6450 5625 +Wire Wire Line + 6450 5650 6450 5625 +Connection ~ 6450 5625 +Wire Wire Line + 6450 5625 6475 5625 +$Comp +L power:GND #PWR022 +U 1 1 61E79114 +P 6450 5900 +F 0 "#PWR022" H 6450 5650 50 0001 C CNN +F 1 "GND" H 6450 5775 50 0000 C CNN +F 2 "" H 6450 5900 50 0001 C CNN +F 3 "" H 6450 5900 50 0001 C CNN + 1 6450 5900 + -1 0 0 -1 +$EndComp +Wire Wire Line + 6450 5850 6450 5900 +$Comp +L Mechanical:MountingHole H1 +U 1 1 61F02955 +P 625 5375 +F 0 "H1" H 725 5421 50 0000 L CNN +F 1 "MountingHole" H 725 5330 50 0000 L CNN +F 2 "MountingHole:MountingHole_3.2mm_M3" H 625 5375 50 0001 C CNN +F 3 "~" H 625 5375 50 0001 C CNN + 1 625 5375 + 1 0 0 -1 +$EndComp +$EndSCHEMATC diff --git a/kicad/fp-info-cache b/kicad/fp-info-cache new file mode 100644 index 0000000..d79587e --- /dev/null +++ b/kicad/fp-info-cache @@ -0,0 +1,81894 @@ +18820606653166749 +Battery +BatteryHolder_Bulgin_BX0036_1xC +Bulgin Battery Holder, BX0036, Battery Type C (https://www.bulgin.com/products/pub/media/bulgin/data/Battery_holders.pdf) +Bulgin BX0036 +0 +2 +2 +Battery +BatteryHolder_ComfortableElectronic_CH273-2450_1x2450 +Comfortable Electronic CR2450 battery holder, http://www.comf.com.tw/ProductDetail.asp?no=148 +Comfortable Electronic CR2450 +0 +2 +2 +Battery +BatteryHolder_Eagle_12BH611-GR +https://eu.mouser.com/datasheet/2/209/EPD-200766-1274481.pdf +9V Battery Holder +0 +2 +2 +Battery +BatteryHolder_Keystone_103_1x20mm +http://www.keyelco.com/product-pdf.cfm?p=719 +Keystone type 103 battery holder +0 +2 +2 +Battery +BatteryHolder_Keystone_104_1x23mm +http://www.keyelco.com/product-pdf.cfm?p=744 +Keystone type 104 battery holder +0 +2 +2 +Battery +BatteryHolder_Keystone_105_1x2430 +http://www.keyelco.com/product-pdf.cfm?p=745 +Keystone type 105 battery holder +0 +2 +2 +Battery +BatteryHolder_Keystone_106_1x20mm +http://www.keyelco.com/product-pdf.cfm?p=720 +Keystone type 106 battery holder +0 +2 +2 +Battery +BatteryHolder_Keystone_107_1x23mm +http://www.keyelco.com/product-pdf.cfm?p=746 +Keystone type 107 battery holder +0 +2 +2 +Battery +BatteryHolder_Keystone_500 +Keystone #500, CR1220 battery holder, http://www.keyelco.com/product-pdf.cfm?p=710 +CR1220 battery holder +0 +2 +2 +Battery +BatteryHolder_Keystone_1042_1x18650 +Battery holder for 18650 cylindrical cells http://www.keyelco.com/product.cfm/product_id/918 +18650 Keystone 1042 Li-ion +0 +2 +2 +Battery +BatteryHolder_Keystone_1058_1x2032 +http://www.keyelco.com/product-pdf.cfm?p=14028 +Keystone type 1058 coin cell retainer +0 +2 +2 +Battery +BatteryHolder_Keystone_1060_1x2032 +http://www.keyelco.com/product-pdf.cfm?p=726 +CR2032 BR2032 BatteryHolder Battery +0 +2 +2 +Battery +BatteryHolder_Keystone_2460_1xAA +https://www.keyelco.com/product-pdf.cfm?p=1025 +AA battery cell holder +0 +2 +2 +Battery +BatteryHolder_Keystone_2462_2xAA +2xAA cell battery holder, Keystone P/N 2462, https://www.keyelco.com/product-pdf.cfm?p=1027 +AA battery cell holder +0 +2 +2 +Battery +BatteryHolder_Keystone_2466_1xAAA +1xAAA Battery Holder, Keystone, Plastic Case, http://www.keyelco.com/product-pdf.cfm?p=1031 +AAA battery holder Keystone +0 +2 +2 +Battery +BatteryHolder_Keystone_2468_2xAAA +2xAAA cell battery holder, Keystone P/N 2468, http://www.keyelco.com/product-pdf.cfm?p=1033 +AAA battery cell holder +0 +2 +2 +Battery +BatteryHolder_Keystone_2479_3xAAA +Keystone Battery Holder, 2479, Battery Type 3xAAA (Script generated with StandardBox.py) (Keystone Battery Holder, 2479, Battery Type 3xAAA) +Keystone Battery Holder 2479 Battery Type 3xAAA +0 +2 +2 +Battery +BatteryHolder_Keystone_2993 +http://www.keyelco.com/product-pdf.cfm?p=776 +Keystone type 2993 negative battery contact +0 +1 +1 +Battery +BatteryHolder_Keystone_2998_1x6.8mm +www.keyelco.com/product-pdf.cfm?p=763 +Keystone type 2998 battery holder +0 +3 +2 +Battery +BatteryHolder_Keystone_3000_1x12mm +http://www.keyelco.com/product-pdf.cfm?p=777 +Keystone type 3000 coin cell retainer +0 +3 +2 +Battery +BatteryHolder_Keystone_3001_1x12mm +http://www.keyelco.com/product-pdf.cfm?p=778 +Keystone type 3001 coin cell retainer +0 +3 +2 +Battery +BatteryHolder_Keystone_3002_1x2032 +https://www.tme.eu/it/Document/a823211ec201a9e209042d155fe22d2b/KEYS2996.pdf +BR2016 CR2016 DL2016 BR2020 CL2020 BR2025 CR2025 DL2025 DR2032 CR2032 DL2032 +0 +3 +2 +Battery +BatteryHolder_Keystone_3008_1x2450 +http://www.keyelco.com/product-pdf.cfm?p=786 +Keystone type 3008 coin cell retainer +0 +3 +2 +Battery +BatteryHolder_Keystone_3009_1x2450 +http://www.keyelco.com/product-pdf.cfm?p=787 +Keystone type 3009 coin cell retainer +0 +3 +2 +Battery +BatteryHolder_Keystone_3034_1x20mm +Keystone 3034 SMD battery holder for 2020, 2025 and 2032 coincell batteries. http://www.keyelco.com/product-pdf.cfm?p=798 +Keystone type 3034 coin cell retainer +0 +3 +2 +Battery +BatteryHolder_LINX_BAT-HLD-012-SMT +SMT battery holder for CR1216/1220/1225, https://linxtechnologies.com/wp/wp-content/uploads/bat-hld-012-smt.pdf +battery holder coin cell cr1216 cr1220 cr1225 +0 +3 +2 +Battery +BatteryHolder_MPD_BA9VPC_1xPP3 +1xPP3 (9V) battery holder, Memory Protection Devices P/N BA9VPC, http://www.memoryprotectiondevices.com/datasheets/BA9VPC-datasheet.pdf +PP3 Battery Holder BA9VPC 9V +0 +2 +2 +Battery +BatteryHolder_MPD_BC2AAPC_2xAA +2xAA cell battery holder, Memory Protection Devices P/N BC2AAPC, http://www.memoryprotectiondevices.com/datasheets/BC2AAPC-datasheet.pdf +AA battery cell holder +0 +2 +2 +Battery +BatteryHolder_MPD_BC12AAPC_2xAA +2xAA cell battery holder, Memory Protection Devices P/N BC12AAPC, http://www.memoryprotectiondevices.com/datasheets/BC12AAPC-datasheet.pdf +AA battery cell holder +0 +2 +2 +Battery +BatteryHolder_MPD_BC2003_1x2032 +http://www.memoryprotectiondevices.com/datasheets/BC-2003-datasheet.pdf +BC2003 CR2032 2032 Battery Holder +0 +3 +2 +Battery +BatteryHolder_MPD_BH-18650-PC2 +18650 Battery Holder (http://www.memoryprotectiondevices.com/datasheets/BK-18650-PC2-datasheet.pdf) +18650 Battery Holder +0 +2 +2 +Battery +BatteryHolder_Seiko_MS621F +Seiko MS621F, https://www.sii.co.jp/en/me/files/2014/02/file_EXTENDED_PRDCT_SPEC_75_FILE_11.jpg +Seiko MS621F +0 +2 +2 +Battery +BatteryHolder_TruPower_BH-331P_3xAA +Keystone Battery Holder BH-331P Battery Type 3xAA (Script generated with StandardBox.py) (Keystone Battery Holder BH-331P Battery Type 3xAA) +Battery Holder BH-331P Battery Type 3xAA +0 +2 +2 +Battery +Battery_CR1225 +CR1225 battery +battery CR1225 coin cell +0 +0 +0 +Battery +Battery_Panasonic_CR1025-VSK_Vertical_CircularHoles +Panasonic CR-1025/VSK battery, https://industrial.panasonic.com/cdbs/www-data/pdf2/AAA4000/AAA4000D140.pdf +battery CR-1025 coin cell vertical +0 +2 +2 +Battery +Battery_Panasonic_CR1220-VCN_Vertical_CircularHoles +Panasonic CR-1220/VCN battery, https://industrial.panasonic.com/cdbs/www-data/pdf2/AAA4000/AAA4000D140.pdf +battery CR-1220 coin cell vertical +0 +2 +2 +Battery +Battery_Panasonic_CR1632-V1AN_Vertical_CircularHoles +Panasonic CR-1632-V1AN battery, https://industrial.panasonic.com/cdbs/www-data/pdf2/AAA4000/AAA4000D140.pdf +battery CR-1632 coin cell vertical +0 +2 +2 +Battery +Battery_Panasonic_CR2025-V1AK_Vertical_CircularHoles +Panasonic CR-2025/V1AK battery, https://industrial.panasonic.com/cdbs/www-data/pdf2/AAA4000/AAA4000D140.pdf +battery CR-2025 coin cell vertical +0 +2 +2 +Battery +Battery_Panasonic_CR2032-VS1N_Vertical_CircularHoles +Panasonic CR-2032/VS1N battery, https://industrial.panasonic.com/cdbs/www-data/pdf2/AAA4000/AAA4000D140.pdf +battery CR-2032 coin cell vertical +0 +2 +2 +Battery +Battery_Panasonic_CR2354-VCN_Vertical_CircularHoles +Panasonic CR-2354/VCN battery, https://industrial.panasonic.com/cdbs/www-data/pdf2/AAA4000/AAA4000D140.pdf +battery CR-2354/VCN coin cell vertical +0 +2 +2 +Battery +Battery_Panasonic_CR2450-VAN_Vertical_CircularHoles +Panasonic CR-2450/VAN battery, https://industrial.panasonic.com/cdbs/www-data/pdf2/AAA4000/AAA4000D140.pdf +battery CR-2450 coin cell +0 +2 +2 +Battery +Battery_Panasonic_CR2477-VCN_Vertical_CircularHoles +Panasonic CR-2477/VCN battery, https://industrial.panasonic.com/cdbs/www-data/pdf2/AAA4000/AAA4000D140.pdf +battery CR-2477 coin cell vertical +0 +2 +2 +Battery +Battery_Panasonic_CR3032-VCN_Vertical_CircularHoles +Panasonic CR-3032/VCN battery, https://industrial.panasonic.com/cdbs/www-data/pdf2/AAA4000/AAA4000D140.pdf +battery CR-3032 coin cell vertical +0 +2 +2 +Button_Switch_Keyboard +SW_Cherry_MX_1.00u_PCB +Cherry MX keyswitch, 1.00u, PCB mount, http://cherryamericas.com/wp-content/uploads/2014/12/mx_cat.pdf +Cherry MX keyswitch 1.00u PCB +0 +2 +2 +Button_Switch_Keyboard +SW_Cherry_MX_1.00u_Plate +Cherry MX keyswitch, 1.00u, plate mount, http://cherryamericas.com/wp-content/uploads/2014/12/mx_cat.pdf +Cherry MX keyswitch 1.00u plate +0 +2 +2 +Button_Switch_Keyboard +SW_Cherry_MX_1.25u_PCB +Cherry MX keyswitch, 1.25u, PCB mount, http://cherryamericas.com/wp-content/uploads/2014/12/mx_cat.pdf +Cherry MX keyswitch 1.25u PCB +0 +2 +2 +Button_Switch_Keyboard +SW_Cherry_MX_1.25u_Plate +Cherry MX keyswitch, 1.25u, plate mount, http://cherryamericas.com/wp-content/uploads/2014/12/mx_cat.pdf +Cherry MX keyswitch 1.25u plate +0 +2 +2 +Button_Switch_Keyboard +SW_Cherry_MX_1.50u_PCB +Cherry MX keyswitch, 1.50u, PCB mount, http://cherryamericas.com/wp-content/uploads/2014/12/mx_cat.pdf +Cherry MX keyswitch 1.50u PCB +0 +2 +2 +Button_Switch_Keyboard +SW_Cherry_MX_1.50u_Plate +Cherry MX keyswitch, 1.50u, plate mount, http://cherryamericas.com/wp-content/uploads/2014/12/mx_cat.pdf +Cherry MX keyswitch 1.50u plate +0 +2 +2 +Button_Switch_Keyboard +SW_Cherry_MX_1.75u_PCB +Cherry MX keyswitch, 1.75u, PCB mount, http://cherryamericas.com/wp-content/uploads/2014/12/mx_cat.pdf +Cherry MX keyswitch 1.75u PCB +0 +2 +2 +Button_Switch_Keyboard +SW_Cherry_MX_1.75u_Plate +Cherry MX keyswitch, 1.75u, plate mount, http://cherryamericas.com/wp-content/uploads/2014/12/mx_cat.pdf +Cherry MX keyswitch 1.75u plate +0 +2 +2 +Button_Switch_Keyboard +SW_Cherry_MX_2.00u_PCB +Cherry MX keyswitch, 2.00u, PCB mount, http://cherryamericas.com/wp-content/uploads/2014/12/mx_cat.pdf +Cherry MX keyswitch 2.00u PCB +0 +2 +2 +Button_Switch_Keyboard +SW_Cherry_MX_2.00u_Plate +Cherry MX keyswitch, 2.00u, plate mount, http://cherryamericas.com/wp-content/uploads/2014/12/mx_cat.pdf +Cherry MX keyswitch 2.00u plate +0 +2 +2 +Button_Switch_Keyboard +SW_Cherry_MX_2.00u_Vertical_PCB +Cherry MX keyswitch, 2.00u, vertical, PCB mount, http://cherryamericas.com/wp-content/uploads/2014/12/mx_cat.pdf +Cherry MX keyswitch 2.00u vertical PCB +0 +2 +2 +Button_Switch_Keyboard +SW_Cherry_MX_2.00u_Vertical_Plate +Cherry MX keyswitch, 2.00u, vertical, plate mount, http://cherryamericas.com/wp-content/uploads/2014/12/mx_cat.pdf +Cherry MX keyswitch 2.00u vertical plate +0 +2 +2 +Button_Switch_Keyboard +SW_Cherry_MX_2.25u_PCB +Cherry MX keyswitch, 2.25u, PCB mount, http://cherryamericas.com/wp-content/uploads/2014/12/mx_cat.pdf +Cherry MX keyswitch 2.25u PCB +0 +2 +2 +Button_Switch_Keyboard +SW_Cherry_MX_2.25u_Plate +Cherry MX keyswitch, 2.25u, plate mount, http://cherryamericas.com/wp-content/uploads/2014/12/mx_cat.pdf +Cherry MX keyswitch 2.25u plate +0 +2 +2 +Button_Switch_Keyboard +SW_Cherry_MX_2.75u_PCB +Cherry MX keyswitch, 2.75u, PCB mount, http://cherryamericas.com/wp-content/uploads/2014/12/mx_cat.pdf +Cherry MX keyswitch 2.75u PCB +0 +2 +2 +Button_Switch_Keyboard +SW_Cherry_MX_2.75u_Plate +Cherry MX keyswitch, 2.75u, plate mount, http://cherryamericas.com/wp-content/uploads/2014/12/mx_cat.pdf +Cherry MX keyswitch 2.75u plate +0 +2 +2 +Button_Switch_Keyboard +SW_Cherry_MX_6.25u_PCB +Cherry MX keyswitch, 6.25u, PCB mount, http://cherryamericas.com/wp-content/uploads/2014/12/mx_cat.pdf +Cherry MX keyswitch 6.25u PCB +0 +2 +2 +Button_Switch_Keyboard +SW_Cherry_MX_6.25u_Plate +Cherry MX keyswitch, 6.25u, plate mount, http://cherryamericas.com/wp-content/uploads/2014/12/mx_cat.pdf +Cherry MX keyswitch 6.25u plate +0 +2 +2 +Button_Switch_Keyboard +SW_Cherry_MX_ISOEnter_PCB +Cherry MX keyswitch, ISO Enter, PCB mount, http://cherryamericas.com/wp-content/uploads/2014/12/mx_cat.pdf +Cherry MX keyswitch ISO enter PCB +0 +2 +2 +Button_Switch_Keyboard +SW_Cherry_MX_ISOEnter_Plate +Cherry MX keyswitch, ISO Enter, plate mount, http://cherryamericas.com/wp-content/uploads/2014/12/mx_cat.pdf +Cherry MX keyswitch ISO enter plate +0 +2 +2 +Button_Switch_Keyboard +SW_Matias_1.00u +Matias/ALPS keyswitch, 1.00u, http://matias.ca/switches/ +Matias ALPS keyswitch 1.00u +0 +2 +2 +Button_Switch_Keyboard +SW_Matias_1.25u +Matias/ALPS keyswitch, 1.25u, http://matias.ca/switches/ +Matias ALPS keyswitch 1.25u +0 +2 +2 +Button_Switch_Keyboard +SW_Matias_1.50u +Matias/ALPS keyswitch, 1.50u, http://matias.ca/switches/ +Matias ALPS keyswitch 1.50u +0 +2 +2 +Button_Switch_Keyboard +SW_Matias_1.75u +Matias/ALPS keyswitch, 1.75u, http://matias.ca/switches/ +Matias ALPS keyswitch 1.75u +0 +2 +2 +Button_Switch_Keyboard +SW_Matias_2.00u +Matias/ALPS keyswitch, 2.00u, http://matias.ca/switches/ +Matias ALPS keyswitch 2.00u +0 +2 +2 +Button_Switch_Keyboard +SW_Matias_2.25u +Matias/ALPS keyswitch, 2.25u, http://matias.ca/switches/ +Matias ALPS keyswitch 2.25u +0 +2 +2 +Button_Switch_Keyboard +SW_Matias_2.75u +Matias/ALPS keyswitch, 2.75u, http://matias.ca/switches/ +Matias ALPS keyswitch 2.75u +0 +2 +2 +Button_Switch_Keyboard +SW_Matias_6.25u +Matias/ALPS keyswitch, 6.25u, http://matias.ca/switches/ +Matias ALPS keyswitch 6.25u +0 +2 +2 +Button_Switch_Keyboard +SW_Matias_ISOEnter +Matias/ALPS keyswitch, ISO Enter, http://matias.ca/switches/ +Matias ALPS keyswitch ISO enter +0 +2 +2 +Button_Switch_SMD +Nidec_Copal_SH-7010A +4-bit rotary coded switch, J-hook, https://www.nidec-copal-electronics.com/e/catalog/switch/sh-7000.pdf +rotary switch bcd +0 +6 +5 +Button_Switch_SMD +Nidec_Copal_SH-7010B +4-bit rotary coded switch, gull wing, https://www.nidec-copal-electronics.com/e/catalog/switch/sh-7000.pdf +rotary switch bcd +0 +6 +5 +Button_Switch_SMD +Nidec_Copal_SH-7040B +4-bit rotary coded switch, gull wing, Gray code, https://www.nidec-copal-electronics.com/e/catalog/switch/sh-7000.pdf +rotary switch bcd +0 +5 +5 +Button_Switch_SMD +Panasonic_EVQPUJ_EVQPUA +http://industrial.panasonic.com/cdbs/www-data/pdf/ATV0000/ATV0000CE5.pdf +SMD SMT SPST EVQPUJ EVQPUA +0 +4 +2 +Button_Switch_SMD +Panasonic_EVQPUK_EVQPUB +http://industrial.panasonic.com/cdbs/www-data/pdf/ATV0000/ATV0000CE5.pdf +SMD SMT SPST EVQPUK EVQPUB +0 +4 +2 +Button_Switch_SMD +Panasonic_EVQPUL_EVQPUC +http://industrial.panasonic.com/cdbs/www-data/pdf/ATV0000/ATV0000CE5.pdf +SMD SMT SPST EVQPUL EVQPUC +0 +4 +2 +Button_Switch_SMD +Panasonic_EVQPUM_EVQPUD +http://industrial.panasonic.com/cdbs/www-data/pdf/ATV0000/ATV0000CE5.pdf +SMD SMT SPST EVQPUM EVQPUD +0 +4 +2 +Button_Switch_SMD +SW_DIP_SPSTx01_Slide_6.7x4.1mm_W6.73mm_P2.54mm_LowProfile_JPin +SMD 1x-dip-switch SPST , Slide, row spacing 6.73 mm (264 mils), body size 6.7x4.1mm (see e.g. https://www.ctscorp.com/wp-content/uploads/219.pdf), SMD, LowProfile, JPin +SMD DIP Switch SPST Slide 6.73mm 264mil SMD LowProfile JPin +0 +2 +2 +Button_Switch_SMD +SW_DIP_SPSTx01_Slide_6.7x4.1mm_W8.61mm_P2.54mm_LowProfile +SMD 1x-dip-switch SPST , Slide, row spacing 8.61 mm (338 mils), body size 6.7x4.1mm (see e.g. https://www.ctscorp.com/wp-content/uploads/219.pdf), SMD, LowProfile +SMD DIP Switch SPST Slide 8.61mm 338mil SMD LowProfile +0 +2 +2 +Button_Switch_SMD +SW_DIP_SPSTx01_Slide_9.78x4.72mm_W8.61mm_P2.54mm +SMD 1x-dip-switch SPST , Slide, row spacing 8.61 mm (338 mils), body size 9.78x4.72mm (see e.g. https://www.ctscorp.com/wp-content/uploads/204.pdf), SMD +SMD DIP Switch SPST Slide 8.61mm 338mil SMD +0 +2 +2 +Button_Switch_SMD +SW_DIP_SPSTx01_Slide_Copal_CHS-01A_W5.08mm_P1.27mm_JPin +SMD 1x-dip-switch SPST Copal_CHS-01A, Slide, row spacing 5.08 mm (200 mils), body size (see http://www.nidec-copal-electronics.com/e/catalog/switch/chs.pdf), SMD, JPin +SMD DIP Switch SPST Slide 5.08mm 200mil SMD JPin +0 +2 +2 +Button_Switch_SMD +SW_DIP_SPSTx01_Slide_Copal_CHS-01B_W7.62mm_P1.27mm +SMD 1x-dip-switch SPST Copal_CHS-01B, Slide, row spacing 7.62 mm (300 mils), body size (see http://www.nidec-copal-electronics.com/e/catalog/switch/chs.pdf), SMD +SMD DIP Switch SPST Slide 7.62mm 300mil SMD +0 +2 +2 +Button_Switch_SMD +SW_DIP_SPSTx01_Slide_Copal_CVS-01xB_W5.9mm_P1mm +SMD 1x-dip-switch SPST Copal_CVS-01xB, Slide, row spacing 5.9 mm (232 mils), body size (see http://www.nidec-copal-electronics.com/e/catalog/switch/cvs.pdf) +SMD DIP Switch SPST Slide 5.9mm 232mil +0 +6 +3 +Button_Switch_SMD +SW_DIP_SPSTx01_Slide_Omron_A6S-110x_W8.9mm_P2.54mm +SMD 1x-dip-switch SPST Omron_A6S-110x, Slide, row spacing 8.9 mm (350 mils), body size (see http://omronfs.omron.com/en_US/ecb/products/pdf/en-a6s.pdf) +SMD DIP Switch SPST Slide 8.9mm 350mil +0 +2 +2 +Button_Switch_SMD +SW_DIP_SPSTx02_Slide_6.7x6.64mm_W6.73mm_P2.54mm_LowProfile_JPin +SMD 2x-dip-switch SPST , Slide, row spacing 6.73 mm (264 mils), body size 6.7x6.64mm (see e.g. https://www.ctscorp.com/wp-content/uploads/219.pdf), SMD, LowProfile, JPin +SMD DIP Switch SPST Slide 6.73mm 264mil SMD LowProfile JPin +0 +4 +4 +Button_Switch_SMD +SW_DIP_SPSTx02_Slide_6.7x6.64mm_W8.61mm_P2.54mm_LowProfile +SMD 2x-dip-switch SPST , Slide, row spacing 8.61 mm (338 mils), body size 6.7x6.64mm (see e.g. https://www.ctscorp.com/wp-content/uploads/219.pdf), SMD, LowProfile +SMD DIP Switch SPST Slide 8.61mm 338mil SMD LowProfile +0 +4 +4 +Button_Switch_SMD +SW_DIP_SPSTx02_Slide_9.78x7.26mm_W8.61mm_P2.54mm +SMD 2x-dip-switch SPST , Slide, row spacing 8.61 mm (338 mils), body size 9.78x7.26mm (see e.g. https://www.ctscorp.com/wp-content/uploads/204.pdf), SMD +SMD DIP Switch SPST Slide 8.61mm 338mil SMD +0 +4 +4 +Button_Switch_SMD +SW_DIP_SPSTx02_Slide_Copal_CHS-02A_W5.08mm_P1.27mm_JPin +SMD 2x-dip-switch SPST Copal_CHS-02A, Slide, row spacing 5.08 mm (200 mils), body size (see http://www.nidec-copal-electronics.com/e/catalog/switch/chs.pdf), SMD, JPin +SMD DIP Switch SPST Slide 5.08mm 200mil SMD JPin +0 +4 +4 +Button_Switch_SMD +SW_DIP_SPSTx02_Slide_Copal_CHS-02B_W7.62mm_P1.27mm +SMD 2x-dip-switch SPST Copal_CHS-02B, Slide, row spacing 7.62 mm (300 mils), body size (see http://www.nidec-copal-electronics.com/e/catalog/switch/chs.pdf), SMD +SMD DIP Switch SPST Slide 7.62mm 300mil SMD +0 +4 +4 +Button_Switch_SMD +SW_DIP_SPSTx02_Slide_Copal_CVS-02xB_W5.9mm_P1mm +SMD 2x-dip-switch SPST Copal_CVS-02xB, Slide, row spacing 5.9 mm (232 mils), body size (see http://www.nidec-copal-electronics.com/e/catalog/switch/cvs.pdf) +SMD DIP Switch SPST Slide 5.9mm 232mil +0 +8 +5 +Button_Switch_SMD +SW_DIP_SPSTx02_Slide_KingTek_DSHP02TJ_W5.25mm_P1.27mm_JPin +SMD 2x-dip-switch SPST KingTek_DSHP02TJ, Slide, row spacing 5.25 mm (206 mils), body size (see http://www.kingtek.net.cn/pic/201601201446313350.pdf), JPin +SMD DIP Switch SPST Slide 5.25mm 206mil JPin +0 +4 +4 +Button_Switch_SMD +SW_DIP_SPSTx02_Slide_KingTek_DSHP02TS_W7.62mm_P1.27mm +SMD 2x-dip-switch SPST KingTek_DSHP02TS, Slide, row spacing 7.62 mm (300 mils), body size (see http://www.kingtek.net.cn/pic/201601201417455112.pdf) +SMD DIP Switch SPST Slide 7.62mm 300mil +0 +4 +4 +Button_Switch_SMD +SW_DIP_SPSTx02_Slide_Omron_A6H-2101_W6.15mm_P1.27mm +SMD 2x-dip-switch SPST Omron_A6H-2101, Slide, row spacing 6.15 mm (242 mils), body size (see https://www.omron.com/ecb/products/pdf/en-a6h.pdf) +SMD DIP Switch SPST Slide 6.15mm 242mil +0 +4 +4 +Button_Switch_SMD +SW_DIP_SPSTx02_Slide_Omron_A6S-210x_W8.9mm_P2.54mm +SMD 2x-dip-switch SPST Omron_A6S-210x, Slide, row spacing 8.9 mm (350 mils), body size (see http://omronfs.omron.com/en_US/ecb/products/pdf/en-a6s.pdf) +SMD DIP Switch SPST Slide 8.9mm 350mil +0 +4 +4 +Button_Switch_SMD +SW_DIP_SPSTx03_Slide_6.7x9.18mm_W6.73mm_P2.54mm_LowProfile_JPin +SMD 3x-dip-switch SPST , Slide, row spacing 6.73 mm (264 mils), body size 6.7x9.18mm (see e.g. https://www.ctscorp.com/wp-content/uploads/219.pdf), SMD, LowProfile, JPin +SMD DIP Switch SPST Slide 6.73mm 264mil SMD LowProfile JPin +0 +6 +6 +Button_Switch_SMD +SW_DIP_SPSTx03_Slide_6.7x9.18mm_W8.61mm_P2.54mm_LowProfile +SMD 3x-dip-switch SPST , Slide, row spacing 8.61 mm (338 mils), body size 6.7x9.18mm (see e.g. https://www.ctscorp.com/wp-content/uploads/219.pdf), SMD, LowProfile +SMD DIP Switch SPST Slide 8.61mm 338mil SMD LowProfile +0 +6 +6 +Button_Switch_SMD +SW_DIP_SPSTx03_Slide_9.78x9.8mm_W8.61mm_P2.54mm +SMD 3x-dip-switch SPST , Slide, row spacing 8.61 mm (338 mils), body size 9.78x9.8mm (see e.g. https://www.ctscorp.com/wp-content/uploads/204.pdf), SMD +SMD DIP Switch SPST Slide 8.61mm 338mil SMD +0 +6 +6 +Button_Switch_SMD +SW_DIP_SPSTx03_Slide_Copal_CVS-03xB_W5.9mm_P1mm +SMD 3x-dip-switch SPST Copal_CVS-03xB, Slide, row spacing 5.9 mm (232 mils), body size (see http://www.nidec-copal-electronics.com/e/catalog/switch/cvs.pdf) +SMD DIP Switch SPST Slide 5.9mm 232mil +0 +10 +7 +Button_Switch_SMD +SW_DIP_SPSTx03_Slide_KingTek_DSHP03TJ_W5.25mm_P1.27mm_JPin +SMD 3x-dip-switch SPST KingTek_DSHP03TJ, Slide, row spacing 5.25 mm (206 mils), body size (see http://www.kingtek.net.cn/pic/201601201446313350.pdf), JPin +SMD DIP Switch SPST Slide 5.25mm 206mil JPin +0 +6 +6 +Button_Switch_SMD +SW_DIP_SPSTx03_Slide_KingTek_DSHP03TS_W7.62mm_P1.27mm +SMD 3x-dip-switch SPST KingTek_DSHP03TS, Slide, row spacing 7.62 mm (300 mils), body size (see http://www.kingtek.net.cn/pic/201601201417455112.pdf) +SMD DIP Switch SPST Slide 7.62mm 300mil +0 +6 +6 +Button_Switch_SMD +SW_DIP_SPSTx03_Slide_Omron_A6S-310x_W8.9mm_P2.54mm +SMD 3x-dip-switch SPST Omron_A6S-310x, Slide, row spacing 8.9 mm (350 mils), body size (see http://omronfs.omron.com/en_US/ecb/products/pdf/en-a6s.pdf) +SMD DIP Switch SPST Slide 8.9mm 350mil +0 +6 +6 +Button_Switch_SMD +SW_DIP_SPSTx04_Slide_6.7x11.72mm_W6.73mm_P2.54mm_LowProfile_JPin +SMD 4x-dip-switch SPST , Slide, row spacing 6.73 mm (264 mils), body size 6.7x11.72mm (see e.g. https://www.ctscorp.com/wp-content/uploads/219.pdf), SMD, LowProfile, JPin +SMD DIP Switch SPST Slide 6.73mm 264mil SMD LowProfile JPin +0 +8 +8 +Button_Switch_SMD +SW_DIP_SPSTx04_Slide_6.7x11.72mm_W8.61mm_P2.54mm_LowProfile +SMD 4x-dip-switch SPST , Slide, row spacing 8.61 mm (338 mils), body size 6.7x11.72mm (see e.g. https://www.ctscorp.com/wp-content/uploads/219.pdf), SMD, LowProfile +SMD DIP Switch SPST Slide 8.61mm 338mil SMD LowProfile +0 +8 +8 +Button_Switch_SMD +SW_DIP_SPSTx04_Slide_9.78x12.34mm_W8.61mm_P2.54mm +SMD 4x-dip-switch SPST , Slide, row spacing 8.61 mm (338 mils), body size 9.78x12.34mm (see e.g. https://www.ctscorp.com/wp-content/uploads/204.pdf), SMD +SMD DIP Switch SPST Slide 8.61mm 338mil SMD +0 +8 +8 +Button_Switch_SMD +SW_DIP_SPSTx04_Slide_Copal_CHS-04A_W5.08mm_P1.27mm_JPin +SMD 4x-dip-switch SPST Copal_CHS-04A, Slide, row spacing 5.08 mm (200 mils), body size (see http://www.nidec-copal-electronics.com/e/catalog/switch/chs.pdf), SMD, JPin +SMD DIP Switch SPST Slide 5.08mm 200mil SMD JPin +0 +8 +8 +Button_Switch_SMD +SW_DIP_SPSTx04_Slide_Copal_CHS-04B_W7.62mm_P1.27mm +SMD 4x-dip-switch SPST Copal_CHS-04B, Slide, row spacing 7.62 mm (300 mils), body size (see http://www.nidec-copal-electronics.com/e/catalog/switch/chs.pdf), SMD +SMD DIP Switch SPST Slide 7.62mm 300mil SMD +0 +8 +8 +Button_Switch_SMD +SW_DIP_SPSTx04_Slide_Copal_CVS-04xB_W5.9mm_P1mm +SMD 4x-dip-switch SPST Copal_CVS-04xB, Slide, row spacing 5.9 mm (232 mils), body size (see http://www.nidec-copal-electronics.com/e/catalog/switch/cvs.pdf) +SMD DIP Switch SPST Slide 5.9mm 232mil +0 +12 +9 +Button_Switch_SMD +SW_DIP_SPSTx04_Slide_KingTek_DSHP04TJ_W5.25mm_P1.27mm_JPin +SMD 4x-dip-switch SPST KingTek_DSHP04TJ, Slide, row spacing 5.25 mm (206 mils), body size (see http://www.kingtek.net.cn/pic/201601201446313350.pdf), JPin +SMD DIP Switch SPST Slide 5.25mm 206mil JPin +0 +8 +8 +Button_Switch_SMD +SW_DIP_SPSTx04_Slide_KingTek_DSHP04TS_W7.62mm_P1.27mm +SMD 4x-dip-switch SPST KingTek_DSHP04TS, Slide, row spacing 7.62 mm (300 mils), body size (see http://www.kingtek.net.cn/pic/201601201417455112.pdf) +SMD DIP Switch SPST Slide 7.62mm 300mil +0 +8 +8 +Button_Switch_SMD +SW_DIP_SPSTx04_Slide_Omron_A6H-4101_W6.15mm_P1.27mm +SMD 4x-dip-switch SPST Omron_A6H-4101, Slide, row spacing 6.15 mm (242 mils), body size (see https://www.omron.com/ecb/products/pdf/en-a6h.pdf) +SMD DIP Switch SPST Slide 6.15mm 242mil +0 +8 +8 +Button_Switch_SMD +SW_DIP_SPSTx04_Slide_Omron_A6S-410x_W8.9mm_P2.54mm +SMD 4x-dip-switch SPST Omron_A6S-410x, Slide, row spacing 8.9 mm (350 mils), body size (see http://omronfs.omron.com/en_US/ecb/products/pdf/en-a6s.pdf) +SMD DIP Switch SPST Slide 8.9mm 350mil +0 +8 +8 +Button_Switch_SMD +SW_DIP_SPSTx05_Slide_6.7x14.26mm_W6.73mm_P2.54mm_LowProfile_JPin +SMD 5x-dip-switch SPST , Slide, row spacing 6.73 mm (264 mils), body size 6.7x14.26mm (see e.g. https://www.ctscorp.com/wp-content/uploads/219.pdf), SMD, LowProfile, JPin +SMD DIP Switch SPST Slide 6.73mm 264mil SMD LowProfile JPin +0 +10 +10 +Button_Switch_SMD +SW_DIP_SPSTx05_Slide_6.7x14.26mm_W8.61mm_P2.54mm_LowProfile +SMD 5x-dip-switch SPST , Slide, row spacing 8.61 mm (338 mils), body size 6.7x14.26mm (see e.g. https://www.ctscorp.com/wp-content/uploads/219.pdf), SMD, LowProfile +SMD DIP Switch SPST Slide 8.61mm 338mil SMD LowProfile +0 +10 +10 +Button_Switch_SMD +SW_DIP_SPSTx05_Slide_9.78x14.88mm_W8.61mm_P2.54mm +SMD 5x-dip-switch SPST , Slide, row spacing 8.61 mm (338 mils), body size 9.78x14.88mm (see e.g. https://www.ctscorp.com/wp-content/uploads/204.pdf), SMD +SMD DIP Switch SPST Slide 8.61mm 338mil SMD +0 +10 +10 +Button_Switch_SMD +SW_DIP_SPSTx05_Slide_KingTek_DSHP05TJ_W5.25mm_P1.27mm_JPin +SMD 5x-dip-switch SPST KingTek_DSHP05TJ, Slide, row spacing 5.25 mm (206 mils), body size (see http://www.kingtek.net.cn/pic/201601201446313350.pdf), JPin +SMD DIP Switch SPST Slide 5.25mm 206mil JPin +0 +10 +10 +Button_Switch_SMD +SW_DIP_SPSTx05_Slide_KingTek_DSHP05TS_W7.62mm_P1.27mm +SMD 5x-dip-switch SPST KingTek_DSHP05TS, Slide, row spacing 7.62 mm (300 mils), body size (see http://www.kingtek.net.cn/pic/201601201417455112.pdf) +SMD DIP Switch SPST Slide 7.62mm 300mil +0 +10 +10 +Button_Switch_SMD +SW_DIP_SPSTx05_Slide_Omron_A6S-510x_W8.9mm_P2.54mm +SMD 5x-dip-switch SPST Omron_A6S-510x, Slide, row spacing 8.9 mm (350 mils), body size (see http://omronfs.omron.com/en_US/ecb/products/pdf/en-a6s.pdf) +SMD DIP Switch SPST Slide 8.9mm 350mil +0 +10 +10 +Button_Switch_SMD +SW_DIP_SPSTx06_Slide_6.7x16.8mm_W6.73mm_P2.54mm_LowProfile_JPin +SMD 6x-dip-switch SPST , Slide, row spacing 6.73 mm (264 mils), body size 6.7x16.8mm (see e.g. https://www.ctscorp.com/wp-content/uploads/219.pdf), SMD, LowProfile, JPin +SMD DIP Switch SPST Slide 6.73mm 264mil SMD LowProfile JPin +0 +12 +12 +Button_Switch_SMD +SW_DIP_SPSTx06_Slide_6.7x16.8mm_W8.61mm_P2.54mm_LowProfile +SMD 6x-dip-switch SPST , Slide, row spacing 8.61 mm (338 mils), body size 6.7x16.8mm (see e.g. https://www.ctscorp.com/wp-content/uploads/219.pdf), SMD, LowProfile +SMD DIP Switch SPST Slide 8.61mm 338mil SMD LowProfile +0 +12 +12 +Button_Switch_SMD +SW_DIP_SPSTx06_Slide_9.78x17.42mm_W8.61mm_P2.54mm +SMD 6x-dip-switch SPST , Slide, row spacing 8.61 mm (338 mils), body size 9.78x17.42mm (see e.g. https://www.ctscorp.com/wp-content/uploads/204.pdf), SMD +SMD DIP Switch SPST Slide 8.61mm 338mil SMD +0 +12 +12 +Button_Switch_SMD +SW_DIP_SPSTx06_Slide_Copal_CHS-06A_W5.08mm_P1.27mm_JPin +SMD 6x-dip-switch SPST Copal_CHS-06A, Slide, row spacing 5.08 mm (200 mils), body size (see http://www.nidec-copal-electronics.com/e/catalog/switch/chs.pdf), SMD, JPin +SMD DIP Switch SPST Slide 5.08mm 200mil SMD JPin +0 +12 +12 +Button_Switch_SMD +SW_DIP_SPSTx06_Slide_Copal_CHS-06B_W7.62mm_P1.27mm +SMD 6x-dip-switch SPST Copal_CHS-06B, Slide, row spacing 7.62 mm (300 mils), body size (see http://www.nidec-copal-electronics.com/e/catalog/switch/chs.pdf), SMD +SMD DIP Switch SPST Slide 7.62mm 300mil SMD +0 +12 +12 +Button_Switch_SMD +SW_DIP_SPSTx06_Slide_KingTek_DSHP06TJ_W5.25mm_P1.27mm_JPin +SMD 6x-dip-switch SPST KingTek_DSHP06TJ, Slide, row spacing 5.25 mm (206 mils), body size (see http://www.kingtek.net.cn/pic/201601201446313350.pdf), JPin +SMD DIP Switch SPST Slide 5.25mm 206mil JPin +0 +12 +12 +Button_Switch_SMD +SW_DIP_SPSTx06_Slide_KingTek_DSHP06TS_W7.62mm_P1.27mm +SMD 6x-dip-switch SPST KingTek_DSHP06TS, Slide, row spacing 7.62 mm (300 mils), body size (see http://www.kingtek.net.cn/pic/201601201417455112.pdf) +SMD DIP Switch SPST Slide 7.62mm 300mil +0 +12 +12 +Button_Switch_SMD +SW_DIP_SPSTx06_Slide_Omron_A6H-6101_W6.15mm_P1.27mm +SMD 6x-dip-switch SPST Omron_A6H-6101, Slide, row spacing 6.15 mm (242 mils), body size (see https://www.omron.com/ecb/products/pdf/en-a6h.pdf) +SMD DIP Switch SPST Slide 6.15mm 242mil +0 +12 +12 +Button_Switch_SMD +SW_DIP_SPSTx06_Slide_Omron_A6S-610x_W8.9mm_P2.54mm +SMD 6x-dip-switch SPST Omron_A6S-610x, Slide, row spacing 8.9 mm (350 mils), body size (see http://omronfs.omron.com/en_US/ecb/products/pdf/en-a6s.pdf) +SMD DIP Switch SPST Slide 8.9mm 350mil +0 +12 +12 +Button_Switch_SMD +SW_DIP_SPSTx07_Slide_6.7x19.34mm_W6.73mm_P2.54mm_LowProfile_JPin +SMD 7x-dip-switch SPST , Slide, row spacing 6.73 mm (264 mils), body size 6.7x19.34mm (see e.g. https://www.ctscorp.com/wp-content/uploads/219.pdf), SMD, LowProfile, JPin +SMD DIP Switch SPST Slide 6.73mm 264mil SMD LowProfile JPin +0 +14 +14 +Button_Switch_SMD +SW_DIP_SPSTx07_Slide_6.7x19.34mm_W8.61mm_P2.54mm_LowProfile +SMD 7x-dip-switch SPST , Slide, row spacing 8.61 mm (338 mils), body size 6.7x19.34mm (see e.g. https://www.ctscorp.com/wp-content/uploads/219.pdf), SMD, LowProfile +SMD DIP Switch SPST Slide 8.61mm 338mil SMD LowProfile +0 +14 +14 +Button_Switch_SMD +SW_DIP_SPSTx07_Slide_9.78x19.96mm_W8.61mm_P2.54mm +SMD 7x-dip-switch SPST , Slide, row spacing 8.61 mm (338 mils), body size 9.78x19.96mm (see e.g. https://www.ctscorp.com/wp-content/uploads/204.pdf), SMD +SMD DIP Switch SPST Slide 8.61mm 338mil SMD +0 +14 +14 +Button_Switch_SMD +SW_DIP_SPSTx07_Slide_KingTek_DSHP07TJ_W5.25mm_P1.27mm_JPin +SMD 7x-dip-switch SPST KingTek_DSHP07TJ, Slide, row spacing 5.25 mm (206 mils), body size (see http://www.kingtek.net.cn/pic/201601201446313350.pdf), JPin +SMD DIP Switch SPST Slide 5.25mm 206mil JPin +0 +14 +14 +Button_Switch_SMD +SW_DIP_SPSTx07_Slide_KingTek_DSHP07TS_W7.62mm_P1.27mm +SMD 7x-dip-switch SPST KingTek_DSHP07TS, Slide, row spacing 7.62 mm (300 mils), body size (see http://www.kingtek.net.cn/pic/201601201417455112.pdf) +SMD DIP Switch SPST Slide 7.62mm 300mil +0 +14 +14 +Button_Switch_SMD +SW_DIP_SPSTx07_Slide_Omron_A6S-710x_W8.9mm_P2.54mm +SMD 7x-dip-switch SPST Omron_A6S-710x, Slide, row spacing 8.9 mm (350 mils), body size (see http://omronfs.omron.com/en_US/ecb/products/pdf/en-a6s.pdf) +SMD DIP Switch SPST Slide 8.9mm 350mil +0 +14 +14 +Button_Switch_SMD +SW_DIP_SPSTx08_Slide_6.7x21.88mm_W6.73mm_P2.54mm_LowProfile_JPin +SMD 8x-dip-switch SPST , Slide, row spacing 6.73 mm (264 mils), body size 6.7x21.88mm (see e.g. https://www.ctscorp.com/wp-content/uploads/219.pdf), SMD, LowProfile, JPin +SMD DIP Switch SPST Slide 6.73mm 264mil SMD LowProfile JPin +0 +16 +16 +Button_Switch_SMD +SW_DIP_SPSTx08_Slide_6.7x21.88mm_W8.61mm_P2.54mm_LowProfile +SMD 8x-dip-switch SPST , Slide, row spacing 8.61 mm (338 mils), body size 6.7x21.88mm (see e.g. https://www.ctscorp.com/wp-content/uploads/219.pdf), SMD, LowProfile +SMD DIP Switch SPST Slide 8.61mm 338mil SMD LowProfile +0 +16 +16 +Button_Switch_SMD +SW_DIP_SPSTx08_Slide_9.78x22.5mm_W8.61mm_P2.54mm +SMD 8x-dip-switch SPST , Slide, row spacing 8.61 mm (338 mils), body size 9.78x22.5mm (see e.g. https://www.ctscorp.com/wp-content/uploads/204.pdf), SMD +SMD DIP Switch SPST Slide 8.61mm 338mil SMD +0 +16 +16 +Button_Switch_SMD +SW_DIP_SPSTx08_Slide_Copal_CHS-08A_W5.08mm_P1.27mm_JPin +SMD 8x-dip-switch SPST Copal_CHS-08A, Slide, row spacing 5.08 mm (200 mils), body size (see http://www.nidec-copal-electronics.com/e/catalog/switch/chs.pdf), SMD, JPin +SMD DIP Switch SPST Slide 5.08mm 200mil SMD JPin +0 +16 +16 +Button_Switch_SMD +SW_DIP_SPSTx08_Slide_Copal_CHS-08B_W7.62mm_P1.27mm +SMD 8x-dip-switch SPST Copal_CHS-08B, Slide, row spacing 7.62 mm (300 mils), body size (see http://www.nidec-copal-electronics.com/e/catalog/switch/chs.pdf), SMD +SMD DIP Switch SPST Slide 7.62mm 300mil SMD +0 +16 +16 +Button_Switch_SMD +SW_DIP_SPSTx08_Slide_Copal_CVS-08xB_W5.9mm_P1mm +SMD 8x-dip-switch SPST Copal_CVS-08xB, Slide, row spacing 5.9 mm (232 mils), body size (see http://www.nidec-copal-electronics.com/e/catalog/switch/cvs.pdf) +SMD DIP Switch SPST Slide 5.9mm 232mil +0 +20 +17 +Button_Switch_SMD +SW_DIP_SPSTx08_Slide_KingTek_DSHP08TJ_W5.25mm_P1.27mm_JPin +SMD 8x-dip-switch SPST KingTek_DSHP08TJ, Slide, row spacing 5.25 mm (206 mils), body size (see http://www.kingtek.net.cn/pic/201601201446313350.pdf), JPin +SMD DIP Switch SPST Slide 5.25mm 206mil JPin +0 +16 +16 +Button_Switch_SMD +SW_DIP_SPSTx08_Slide_KingTek_DSHP08TS_W7.62mm_P1.27mm +SMD 8x-dip-switch SPST KingTek_DSHP08TS, Slide, row spacing 7.62 mm (300 mils), body size (see http://www.kingtek.net.cn/pic/201601201417455112.pdf) +SMD DIP Switch SPST Slide 7.62mm 300mil +0 +16 +16 +Button_Switch_SMD +SW_DIP_SPSTx08_Slide_Omron_A6H-8101_W6.15mm_P1.27mm +SMD 8x-dip-switch SPST Omron_A6H-8101, Slide, row spacing 6.15 mm (242 mils), body size (see https://www.omron.com/ecb/products/pdf/en-a6h.pdf) +SMD DIP Switch SPST Slide 6.15mm 242mil +0 +16 +16 +Button_Switch_SMD +SW_DIP_SPSTx08_Slide_Omron_A6S-810x_W8.9mm_P2.54mm +SMD 8x-dip-switch SPST Omron_A6S-810x, Slide, row spacing 8.9 mm (350 mils), body size (see http://omronfs.omron.com/en_US/ecb/products/pdf/en-a6s.pdf) +SMD DIP Switch SPST Slide 8.9mm 350mil +0 +16 +16 +Button_Switch_SMD +SW_DIP_SPSTx09_Slide_6.7x24.42mm_W6.73mm_P2.54mm_LowProfile_JPin +SMD 9x-dip-switch SPST , Slide, row spacing 6.73 mm (264 mils), body size 6.7x24.42mm (see e.g. https://www.ctscorp.com/wp-content/uploads/219.pdf), SMD, LowProfile, JPin +SMD DIP Switch SPST Slide 6.73mm 264mil SMD LowProfile JPin +0 +18 +18 +Button_Switch_SMD +SW_DIP_SPSTx09_Slide_6.7x24.42mm_W8.61mm_P2.54mm_LowProfile +SMD 9x-dip-switch SPST , Slide, row spacing 8.61 mm (338 mils), body size 6.7x24.42mm (see e.g. https://www.ctscorp.com/wp-content/uploads/219.pdf), SMD, LowProfile +SMD DIP Switch SPST Slide 8.61mm 338mil SMD LowProfile +0 +18 +18 +Button_Switch_SMD +SW_DIP_SPSTx09_Slide_9.78x25.04mm_W8.61mm_P2.54mm +SMD 9x-dip-switch SPST , Slide, row spacing 8.61 mm (338 mils), body size 9.78x25.04mm (see e.g. https://www.ctscorp.com/wp-content/uploads/204.pdf), SMD +SMD DIP Switch SPST Slide 8.61mm 338mil SMD +0 +18 +18 +Button_Switch_SMD +SW_DIP_SPSTx09_Slide_KingTek_DSHP09TJ_W5.25mm_P1.27mm_JPin +SMD 9x-dip-switch SPST KingTek_DSHP09TJ, Slide, row spacing 5.25 mm (206 mils), body size (see http://www.kingtek.net.cn/pic/201601201446313350.pdf), JPin +SMD DIP Switch SPST Slide 5.25mm 206mil JPin +0 +18 +18 +Button_Switch_SMD +SW_DIP_SPSTx09_Slide_KingTek_DSHP09TS_W7.62mm_P1.27mm +SMD 9x-dip-switch SPST KingTek_DSHP09TS, Slide, row spacing 7.62 mm (300 mils), body size (see http://www.kingtek.net.cn/pic/201601201417455112.pdf) +SMD DIP Switch SPST Slide 7.62mm 300mil +0 +18 +18 +Button_Switch_SMD +SW_DIP_SPSTx09_Slide_Omron_A6S-910x_W8.9mm_P2.54mm +SMD 9x-dip-switch SPST Omron_A6S-910x, Slide, row spacing 8.9 mm (350 mils), body size (see http://omronfs.omron.com/en_US/ecb/products/pdf/en-a6s.pdf) +SMD DIP Switch SPST Slide 8.9mm 350mil +0 +18 +18 +Button_Switch_SMD +SW_DIP_SPSTx10_Slide_6.7x26.96mm_W6.73mm_P2.54mm_LowProfile_JPin +SMD 10x-dip-switch SPST , Slide, row spacing 6.73 mm (264 mils), body size 6.7x26.96mm (see e.g. https://www.ctscorp.com/wp-content/uploads/219.pdf), SMD, LowProfile, JPin +SMD DIP Switch SPST Slide 6.73mm 264mil SMD LowProfile JPin +0 +20 +20 +Button_Switch_SMD +SW_DIP_SPSTx10_Slide_6.7x26.96mm_W8.61mm_P2.54mm_LowProfile +SMD 10x-dip-switch SPST , Slide, row spacing 8.61 mm (338 mils), body size 6.7x26.96mm (see e.g. https://www.ctscorp.com/wp-content/uploads/219.pdf), SMD, LowProfile +SMD DIP Switch SPST Slide 8.61mm 338mil SMD LowProfile +0 +20 +20 +Button_Switch_SMD +SW_DIP_SPSTx10_Slide_9.78x27.58mm_W8.61mm_P2.54mm +SMD 10x-dip-switch SPST , Slide, row spacing 8.61 mm (338 mils), body size 9.78x27.58mm (see e.g. https://www.ctscorp.com/wp-content/uploads/204.pdf), SMD +SMD DIP Switch SPST Slide 8.61mm 338mil SMD +0 +20 +20 +Button_Switch_SMD +SW_DIP_SPSTx10_Slide_Copal_CHS-10A_W5.08mm_P1.27mm_JPin +SMD 10x-dip-switch SPST Copal_CHS-10A, Slide, row spacing 5.08 mm (200 mils), body size (see http://www.nidec-copal-electronics.com/e/catalog/switch/chs.pdf), SMD, JPin +SMD DIP Switch SPST Slide 5.08mm 200mil SMD JPin +0 +20 +20 +Button_Switch_SMD +SW_DIP_SPSTx10_Slide_Copal_CHS-10B_W7.62mm_P1.27mm +SMD 10x-dip-switch SPST Copal_CHS-10B, Slide, row spacing 7.62 mm (300 mils), body size (see http://www.nidec-copal-electronics.com/e/catalog/switch/chs.pdf), SMD +SMD DIP Switch SPST Slide 7.62mm 300mil SMD +0 +20 +20 +Button_Switch_SMD +SW_DIP_SPSTx10_Slide_KingTek_DSHP10TJ_W5.25mm_P1.27mm_JPin +SMD 10x-dip-switch SPST KingTek_DSHP10TJ, Slide, row spacing 5.25 mm (206 mils), body size (see http://www.kingtek.net.cn/pic/201601201446313350.pdf), JPin +SMD DIP Switch SPST Slide 5.25mm 206mil JPin +0 +20 +20 +Button_Switch_SMD +SW_DIP_SPSTx10_Slide_KingTek_DSHP10TS_W7.62mm_P1.27mm +SMD 10x-dip-switch SPST KingTek_DSHP10TS, Slide, row spacing 7.62 mm (300 mils), body size (see http://www.kingtek.net.cn/pic/201601201417455112.pdf) +SMD DIP Switch SPST Slide 7.62mm 300mil +0 +20 +20 +Button_Switch_SMD +SW_DIP_SPSTx10_Slide_Omron_A6H-10101_W6.15mm_P1.27mm +SMD 10x-dip-switch SPST Omron_A6H-10101, Slide, row spacing 6.15 mm (242 mils), body size (see https://www.omron.com/ecb/products/pdf/en-a6h.pdf) +SMD DIP Switch SPST Slide 6.15mm 242mil +0 +20 +20 +Button_Switch_SMD +SW_DIP_SPSTx10_Slide_Omron_A6S-1010x_W8.9mm_P2.54mm +SMD 10x-dip-switch SPST Omron_A6S-1010x, Slide, row spacing 8.9 mm (350 mils), body size (see http://omronfs.omron.com/en_US/ecb/products/pdf/en-a6s.pdf) +SMD DIP Switch SPST Slide 8.9mm 350mil +0 +20 +20 +Button_Switch_SMD +SW_DIP_SPSTx11_Slide_6.7x29.5mm_W6.73mm_P2.54mm_LowProfile_JPin +SMD 11x-dip-switch SPST , Slide, row spacing 6.73 mm (264 mils), body size 6.7x29.5mm (see e.g. https://www.ctscorp.com/wp-content/uploads/219.pdf), SMD, LowProfile, JPin +SMD DIP Switch SPST Slide 6.73mm 264mil SMD LowProfile JPin +0 +22 +22 +Button_Switch_SMD +SW_DIP_SPSTx11_Slide_6.7x29.5mm_W8.61mm_P2.54mm_LowProfile +SMD 11x-dip-switch SPST , Slide, row spacing 8.61 mm (338 mils), body size 6.7x29.5mm (see e.g. https://www.ctscorp.com/wp-content/uploads/219.pdf), SMD, LowProfile +SMD DIP Switch SPST Slide 8.61mm 338mil SMD LowProfile +0 +22 +22 +Button_Switch_SMD +SW_DIP_SPSTx11_Slide_9.78x30.12mm_W8.61mm_P2.54mm +SMD 11x-dip-switch SPST , Slide, row spacing 8.61 mm (338 mils), body size 9.78x30.12mm (see e.g. https://www.ctscorp.com/wp-content/uploads/204.pdf), SMD +SMD DIP Switch SPST Slide 8.61mm 338mil SMD +0 +22 +22 +Button_Switch_SMD +SW_DIP_SPSTx12_Slide_6.7x32.04mm_W6.73mm_P2.54mm_LowProfile_JPin +SMD 12x-dip-switch SPST , Slide, row spacing 6.73 mm (264 mils), body size 6.7x32.04mm (see e.g. https://www.ctscorp.com/wp-content/uploads/219.pdf), SMD, LowProfile, JPin +SMD DIP Switch SPST Slide 6.73mm 264mil SMD LowProfile JPin +0 +24 +24 +Button_Switch_SMD +SW_DIP_SPSTx12_Slide_6.7x32.04mm_W8.61mm_P2.54mm_LowProfile +SMD 12x-dip-switch SPST , Slide, row spacing 8.61 mm (338 mils), body size 6.7x32.04mm (see e.g. https://www.ctscorp.com/wp-content/uploads/219.pdf), SMD, LowProfile +SMD DIP Switch SPST Slide 8.61mm 338mil SMD LowProfile +0 +24 +24 +Button_Switch_SMD +SW_DIP_SPSTx12_Slide_9.78x32.66mm_W8.61mm_P2.54mm +SMD 12x-dip-switch SPST , Slide, row spacing 8.61 mm (338 mils), body size 9.78x32.66mm (see e.g. https://www.ctscorp.com/wp-content/uploads/204.pdf), SMD +SMD DIP Switch SPST Slide 8.61mm 338mil SMD +0 +24 +24 +Button_Switch_SMD +SW_DPDT_CK_JS202011JCQN +Sub-miniature slide switch, vertical, SMT J bend https://dznh3ojzb2azq.cloudfront.net/products/Slide/JS/documents/datasheet.pdf +switch DPDT SMT +0 +6 +6 +Button_Switch_SMD +SW_MEC_5GSH9 +MEC 5G single pole normally-open tactile switch +switch normally-open pushbutton push-button +0 +4 +4 +Button_Switch_SMD +SW_Push_1P1T-MP_NO_Horizontal_Alps_SKRTLAE010 +Side push button (https://www.alps.com/prod/info/E/PDF/Tact/SurfaceMount/SKRT/SKRT.pdf) +push horizontal SPST 1P1T +0 +5 +3 +Button_Switch_SMD +SW_Push_1P1T-SH_NO_CK_KMR2xxG +CK components KMR2 tactile switch with ground pin http://www.ckswitches.com/media/1479/kmr2.pdf +tactile switch kmr2 +0 +5 +3 +Button_Switch_SMD +SW_Push_1P1T_NO_6x6mm_H9.5mm +tactile push button, 6x6mm e.g. PTS645xx series, height=9.5mm +tact sw push 6mm smd +0 +4 +2 +Button_Switch_SMD +SW_Push_1P1T_NO_CK_KMR2 +CK components KMR2 tactile switch http://www.ckswitches.com/media/1479/kmr2.pdf +tactile switch kmr2 +0 +4 +2 +Button_Switch_SMD +SW_Push_1P1T_NO_CK_KSC6xxJ +CK components KSC6 tactile switch https://www.ckswitches.com/media/1972/ksc6.pdf +tactile switch ksc6 +0 +4 +2 +Button_Switch_SMD +SW_Push_1P1T_NO_CK_KSC7xxJ +CK components KSC7 tactile switch https://www.ckswitches.com/media/1973/ksc7.pdf +tactile switch ksc7 +0 +4 +2 +Button_Switch_SMD +SW_Push_1P1T_NO_CK_PTS125Sx43PSMTR +C&K Switches 1P1T SMD PTS125 Series 12mm Tact Switch with Pegs, https://www.ckswitches.com/media/1462/pts125.pdf +Button Tactile Switch SPST 1P1T +0 +4 +2 +Button_Switch_SMD +SW_Push_1P1T_NO_Vertical_Wuerth_434133025816 +https://katalog.we-online.com/em/datasheet/434133025816.pdf +tactile switch Wurth Wuerth +0 +4 +2 +Button_Switch_SMD +SW_Push_SPST_NO_Alps_SKRK +http://www.alps.com/prod/info/E/HTML/Tact/SurfaceMount/SKRK/SKRKAHE020.html +SMD SMT button +0 +2 +2 +Button_Switch_SMD +SW_SP3T_PCM13 +Ultraminiature Surface Mount Slide Switch, right-angle, https://www.ckswitches.com/media/1424/pcm.pdf + +0 +8 +4 +Button_Switch_SMD +SW_SPDT_CK-JS102011SAQN +Sub-miniature slide switch, right-angle, http://www.ckswitches.com/media/1422/js.pdf +switch spdt +0 +3 +3 +Button_Switch_SMD +SW_SPDT_PCM12 +Ultraminiature Surface Mount Slide Switch, right-angle, https://www.ckswitches.com/media/1424/pcm.pdf + +0 +7 +3 +Button_Switch_SMD +SW_SPST_B3S-1000 +Surface Mount Tactile Switch for High-Density Packaging +Tactile Switch +0 +4 +2 +Button_Switch_SMD +SW_SPST_B3S-1100 +Surface Mount Tactile Switch for High-Density Packaging with Ground Terminal +Tactile Switch +0 +5 +3 +Button_Switch_SMD +SW_SPST_B3SL-1002P +Middle Stroke Tactile Switch, B3SL +Middle Stroke Tactile Switch +0 +4 +2 +Button_Switch_SMD +SW_SPST_B3SL-1022P +Middle Stroke Tactile Switch, B3SL +Middle Stroke Tactile Switch +0 +4 +2 +Button_Switch_SMD +SW_SPST_B3U-1000P +Ultra-small-sized Tactile Switch with High Contact Reliability, Top-actuated Model, without Ground Terminal, without Boss +Tactile Switch +0 +2 +2 +Button_Switch_SMD +SW_SPST_B3U-1000P-B +Ultra-small-sized Tactile Switch with High Contact Reliability, Top-actuated Model, without Ground Terminal, with Boss +Tactile Switch +0 +2 +2 +Button_Switch_SMD +SW_SPST_B3U-1100P +Ultra-small-sized Tactile Switch with High Contact Reliability, Top-actuated Model, with Ground Terminal, without Boss +Tactile Switch +0 +3 +3 +Button_Switch_SMD +SW_SPST_B3U-1100P-B +Ultra-small-sized Tactile Switch with High Contact Reliability, Top-actuated Model, with Ground Terminal, with Boss +Tactile Switch +0 +3 +3 +Button_Switch_SMD +SW_SPST_B3U-3000P +Ultra-small-sized Tactile Switch with High Contact Reliability, Side-actuated Model, without Ground Terminal, without Boss +Tactile Switch +0 +2 +2 +Button_Switch_SMD +SW_SPST_B3U-3000P-B +Ultra-small-sized Tactile Switch with High Contact Reliability, Side-actuated Model, without Ground Terminal, with Boss +Tactile Switch +0 +2 +2 +Button_Switch_SMD +SW_SPST_B3U-3100P +Ultra-small-sized Tactile Switch with High Contact Reliability, Side-actuated Model, with Ground Terminal, without Boss +Tactile Switch +0 +3 +3 +Button_Switch_SMD +SW_SPST_B3U-3100P-B +Ultra-small-sized Tactile Switch with High Contact Reliability, Side-actuated Model, with Ground Terminal, with Boss +Tactile Switch +0 +3 +3 +Button_Switch_SMD +SW_SPST_CK_KXT3 +https://www.ckswitches.com/media/1465/kxt3.pdf +Switch SPST KXT3 +0 +2 +2 +Button_Switch_SMD +SW_SPST_CK_RS282G05A3 +https://www.mouser.com/ds/2/60/RS-282G05A-SM_RT-1159762.pdf +SPST button tactile switch +0 +2 +2 +Button_Switch_SMD +SW_SPST_EVPBF +Light Touch Switch + +0 +4 +2 +Button_Switch_SMD +SW_SPST_EVQP0 +Light Touch Switch, https://industrial.panasonic.com/cdbs/www-data/pdf/ATK0000/ATK0000CE28.pdf + +0 +4 +2 +Button_Switch_SMD +SW_SPST_EVQP2 +Light Touch Switch + +0 +4 +2 +Button_Switch_SMD +SW_SPST_EVQP7A +Light Touch Switch,https://industrial.panasonic.com/cdbs/www-data/pdf/ATK0000/ATK0000CE20.pdf + +0 +4 +2 +Button_Switch_SMD +SW_SPST_EVQP7C +Light Touch Switch + +0 +4 +2 +Button_Switch_SMD +SW_SPST_EVQPE1 +Light Touch Switch, https://industrial.panasonic.com/cdbs/www-data/pdf/ATK0000/ATK0000CE7.pdf + +0 +2 +2 +Button_Switch_SMD +SW_SPST_EVQQ2 +Light Touch Switch, https://industrial.panasonic.com/cdbs/www-data/pdf/ATK0000/ATK0000CE28.pdf + +0 +4 +2 +Button_Switch_SMD +SW_SPST_FSMSM +http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=1437566-3&DocType=Customer+Drawing&DocLang=English +SPST button tactile switch +0 +2 +2 +Button_Switch_SMD +SW_SPST_Omron_B3FS-100xP +Surface Mount Tactile Switch for High-Density Mounting, 3.1mm height, https://omronfs.omron.com/en_US/ecb/products/pdf/en-b3fs.pdf +Tactile Switch +0 +4 +4 +Button_Switch_SMD +SW_SPST_Omron_B3FS-101xP +Surface Mount Tactile Switch for High-Density Mounting, 4.3mm height, https://omronfs.omron.com/en_US/ecb/products/pdf/en-b3fs.pdf +Tactile Switch +0 +4 +4 +Button_Switch_SMD +SW_SPST_Omron_B3FS-105xP +Surface Mount Tactile Switch for High-Density Mounting, 7.3mm height, https://omronfs.omron.com/en_US/ecb/products/pdf/en-b3fs.pdf +Tactile Switch +0 +4 +4 +Button_Switch_SMD +SW_SPST_PTS645 +C&K Components SPST SMD PTS645 Series 6mm Tact Switch +SPST Button Switch +0 +4 +2 +Button_Switch_SMD +SW_SPST_PTS810 +C&K Components, PTS 810 Series, Microminiature SMT Top Actuated, http://www.ckswitches.com/media/1476/pts810.pdf +SPST Button Switch +0 +4 +2 +Button_Switch_SMD +SW_SPST_Panasonic_EVQPL_3PL_5PL_PT_A08 +Light Touch Switch, http://industrial.panasonic.com/cdbs/www-data/pdf/ATK0000/ATK0000CE3.pdf +SMD SMT SPST EVQPL EVQPT +0 +6 +3 +Button_Switch_SMD +SW_SPST_Panasonic_EVQPL_3PL_5PL_PT_A15 +Light Touch Switch, http://industrial.panasonic.com/cdbs/www-data/pdf/ATK0000/ATK0000CE3.pdf +SMD SMT SPST EVQPL EVQPT +0 +6 +3 +Button_Switch_SMD +SW_SPST_REED_CT05-XXXX-G1 +Coto Technologies SPST Reed Switch CT05-XXXX-G1 +Coto Reed SPST Switch +0 +2 +2 +Button_Switch_SMD +SW_SPST_REED_CT05-XXXX-J1 +Coto Technologies SPST Reed Switch CT05-XXXX-J1 +Coto Reed SPST Switch +0 +2 +2 +Button_Switch_SMD +SW_SPST_REED_CT10-XXXX-G1 +Coto Technologies SPST Reed Switch CT10-XXXX-G1 +Coto Reed SPST Switch +0 +2 +2 +Button_Switch_SMD +SW_SPST_REED_CT10-XXXX-G2 +Coto Technologies SPST Reed Switch CT10-XXXX-G2 +Coto Reed SPST Switch +0 +2 +2 +Button_Switch_SMD +SW_SPST_REED_CT10-XXXX-G4 +Coto Technologies SPST Reed Switch CT10-XXXX-G4 +Coto Reed SPST Switch +0 +2 +2 +Button_Switch_SMD +SW_SPST_SKQG_WithStem +ALPS 5.2mm Square Low-profile Type (Surface Mount) SKQG Series, With stem, http://www.alps.com/prod/info/E/HTML/Tact/SurfaceMount/SKQG/SKQGAFE010.html +SPST Button Switch +0 +4 +2 +Button_Switch_SMD +SW_SPST_SKQG_WithoutStem +ALPS 5.2mm Square Low-profile Type (Surface Mount) SKQG Series, Without stem, http://www.alps.com/prod/info/E/HTML/Tact/SurfaceMount/SKQG/SKQGAEE010.html +SPST Button Switch +0 +4 +2 +Button_Switch_SMD +SW_SPST_TL3305A +https://www.e-switch.com/system/asset/product_line/data_sheet/213/TL3305.pdf +TL3305 Series Tact Switch +0 +4 +2 +Button_Switch_SMD +SW_SPST_TL3305B +https://www.e-switch.com/system/asset/product_line/data_sheet/213/TL3305.pdf +TL3305 Series Tact Switch +0 +4 +2 +Button_Switch_SMD +SW_SPST_TL3305C +https://www.e-switch.com/system/asset/product_line/data_sheet/213/TL3305.pdf +TL3305 Series Tact Switch +0 +4 +2 +Button_Switch_SMD +SW_SPST_TL3342 +Low-profile SMD Tactile Switch, https://www.e-switch.com/system/asset/product_line/data_sheet/165/TL3342.pdf +SPST Tactile Switch +0 +4 +2 +Button_Switch_THT +KSA_Tactile_SPST +KSA http://www.ckswitches.com/media/1457/ksa_ksl.pdf +SWITCH SMD KSA SW +0 +5 +5 +Button_Switch_THT +Nidec_Copal_SH-7010C +4-bit rotary coded switch, through-hole, https://www.nidec-copal-electronics.com/e/catalog/switch/sh-7000.pdf +rotary switch bcd +0 +6 +5 +Button_Switch_THT +Push_E-Switch_KS01Q01 +E-Switch KS01Q01 http://spec_sheets.e-switch.com/specs/29-KS01Q01.pdf +Push Button +0 +4 +4 +Button_Switch_THT +SW_CW_GPTS203211B +SPST Off-On Pushbutton, 1A, 30V, CW Industries P/N GPTS203211B, http://switches-connectors-custom.cwind.com/Asset/GPTS203211BR2.pdf +SPST button switch Off-On +0 +2 +2 +Button_Switch_THT +SW_CuK_JS202011AQN_DPDT_Angled +CuK sub miniature slide switch, JS series, DPDT, right angle, http://www.ckswitches.com/media/1422/js.pdf +switch DPDT +0 +6 +6 +Button_Switch_THT +SW_CuK_JS202011CQN_DPDT_Straight +CuK sub miniature slide switch, JS series, DPDT, right angle, http://www.ckswitches.com/media/1422/js.pdf +switch DPDT +0 +6 +6 +Button_Switch_THT +SW_CuK_OS102011MA1QN1_SPDT_Angled +CuK miniature slide switch, OS series, SPDT, right angle, http://www.ckswitches.com/media/1428/os.pdf +switch SPDT +0 +5 +3 +Button_Switch_THT +SW_DIP_SPSTx01_Piano_10.8x4.1mm_W7.62mm_P2.54mm +1x-dip-switch SPST , Piano, row spacing 7.62 mm (300 mils), body size 10.8x4.1mm +DIP Switch SPST Piano 7.62mm 300mil +0 +2 +2 +Button_Switch_THT +SW_DIP_SPSTx01_Slide_6.7x4.1mm_W7.62mm_P2.54mm_LowProfile +1x-dip-switch SPST , Slide, row spacing 7.62 mm (300 mils), body size 6.7x4.1mm (see e.g. https://www.ctscorp.com/wp-content/uploads/209-210.pdf), LowProfile +DIP Switch SPST Slide 7.62mm 300mil LowProfile +0 +2 +2 +Button_Switch_THT +SW_DIP_SPSTx01_Slide_9.78x4.72mm_W7.62mm_P2.54mm +1x-dip-switch SPST , Slide, row spacing 7.62 mm (300 mils), body size 9.78x4.72mm (see e.g. https://www.ctscorp.com/wp-content/uploads/206-208.pdf) +DIP Switch SPST Slide 7.62mm 300mil +0 +2 +2 +Button_Switch_THT +SW_DIP_SPSTx02_Piano_10.8x6.64mm_W7.62mm_P2.54mm +2x-dip-switch SPST , Piano, row spacing 7.62 mm (300 mils), body size 10.8x6.64mm +DIP Switch SPST Piano 7.62mm 300mil +0 +4 +4 +Button_Switch_THT +SW_DIP_SPSTx02_Piano_CTS_Series194-2MSTN_W7.62mm_P2.54mm +2x-dip-switch SPST CTS_Series194-2MSTN, Piano, row spacing 7.62 mm (300 mils), body size (see https://www.ctscorp.com/wp-content/uploads/194-195.pdf) +DIP Switch SPST Piano 7.62mm 300mil +0 +4 +4 +Button_Switch_THT +SW_DIP_SPSTx02_Slide_6.7x6.64mm_W7.62mm_P2.54mm_LowProfile +2x-dip-switch SPST , Slide, row spacing 7.62 mm (300 mils), body size 6.7x6.64mm (see e.g. https://www.ctscorp.com/wp-content/uploads/209-210.pdf), LowProfile +DIP Switch SPST Slide 7.62mm 300mil LowProfile +0 +4 +4 +Button_Switch_THT +SW_DIP_SPSTx02_Slide_9.78x7.26mm_W7.62mm_P2.54mm +2x-dip-switch SPST , Slide, row spacing 7.62 mm (300 mils), body size 9.78x7.26mm (see e.g. https://www.ctscorp.com/wp-content/uploads/206-208.pdf) +DIP Switch SPST Slide 7.62mm 300mil +0 +4 +4 +Button_Switch_THT +SW_DIP_SPSTx03_Piano_10.8x9.18mm_W7.62mm_P2.54mm +3x-dip-switch SPST , Piano, row spacing 7.62 mm (300 mils), body size 10.8x9.18mm +DIP Switch SPST Piano 7.62mm 300mil +0 +6 +6 +Button_Switch_THT +SW_DIP_SPSTx03_Piano_CTS_Series194-3MSTN_W7.62mm_P2.54mm +3x-dip-switch SPST CTS_Series194-3MSTN, Piano, row spacing 7.62 mm (300 mils), body size (see https://www.ctscorp.com/wp-content/uploads/194-195.pdf) +DIP Switch SPST Piano 7.62mm 300mil +0 +6 +6 +Button_Switch_THT +SW_DIP_SPSTx03_Slide_6.7x9.18mm_W7.62mm_P2.54mm_LowProfile +3x-dip-switch SPST , Slide, row spacing 7.62 mm (300 mils), body size 6.7x9.18mm (see e.g. https://www.ctscorp.com/wp-content/uploads/209-210.pdf), LowProfile +DIP Switch SPST Slide 7.62mm 300mil LowProfile +0 +6 +6 +Button_Switch_THT +SW_DIP_SPSTx03_Slide_9.78x9.8mm_W7.62mm_P2.54mm +3x-dip-switch SPST , Slide, row spacing 7.62 mm (300 mils), body size 9.78x9.8mm (see e.g. https://www.ctscorp.com/wp-content/uploads/206-208.pdf) +DIP Switch SPST Slide 7.62mm 300mil +0 +6 +6 +Button_Switch_THT +SW_DIP_SPSTx04_Piano_10.8x11.72mm_W7.62mm_P2.54mm +4x-dip-switch SPST , Piano, row spacing 7.62 mm (300 mils), body size 10.8x11.72mm +DIP Switch SPST Piano 7.62mm 300mil +0 +8 +8 +Button_Switch_THT +SW_DIP_SPSTx04_Piano_CTS_Series194-4MSTN_W7.62mm_P2.54mm +4x-dip-switch SPST CTS_Series194-4MSTN, Piano, row spacing 7.62 mm (300 mils), body size (see https://www.ctscorp.com/wp-content/uploads/194-195.pdf) +DIP Switch SPST Piano 7.62mm 300mil +0 +8 +8 +Button_Switch_THT +SW_DIP_SPSTx04_Slide_6.7x11.72mm_W7.62mm_P2.54mm_LowProfile +4x-dip-switch SPST , Slide, row spacing 7.62 mm (300 mils), body size 6.7x11.72mm (see e.g. https://www.ctscorp.com/wp-content/uploads/209-210.pdf), LowProfile +DIP Switch SPST Slide 7.62mm 300mil LowProfile +0 +8 +8 +Button_Switch_THT +SW_DIP_SPSTx04_Slide_9.78x12.34mm_W7.62mm_P2.54mm +4x-dip-switch SPST , Slide, row spacing 7.62 mm (300 mils), body size 9.78x12.34mm (see e.g. https://www.ctscorp.com/wp-content/uploads/206-208.pdf) +DIP Switch SPST Slide 7.62mm 300mil +0 +8 +8 +Button_Switch_THT +SW_DIP_SPSTx05_Piano_10.8x14.26mm_W7.62mm_P2.54mm +5x-dip-switch SPST , Piano, row spacing 7.62 mm (300 mils), body size 10.8x14.26mm +DIP Switch SPST Piano 7.62mm 300mil +0 +10 +10 +Button_Switch_THT +SW_DIP_SPSTx05_Piano_CTS_Series194-5MSTN_W7.62mm_P2.54mm +5x-dip-switch SPST CTS_Series194-5MSTN, Piano, row spacing 7.62 mm (300 mils), body size (see https://www.ctscorp.com/wp-content/uploads/194-195.pdf) +DIP Switch SPST Piano 7.62mm 300mil +0 +10 +10 +Button_Switch_THT +SW_DIP_SPSTx05_Slide_6.7x14.26mm_W7.62mm_P2.54mm_LowProfile +5x-dip-switch SPST , Slide, row spacing 7.62 mm (300 mils), body size 6.7x14.26mm (see e.g. https://www.ctscorp.com/wp-content/uploads/209-210.pdf), LowProfile +DIP Switch SPST Slide 7.62mm 300mil LowProfile +0 +10 +10 +Button_Switch_THT +SW_DIP_SPSTx05_Slide_9.78x14.88mm_W7.62mm_P2.54mm +5x-dip-switch SPST , Slide, row spacing 7.62 mm (300 mils), body size 9.78x14.88mm (see e.g. https://www.ctscorp.com/wp-content/uploads/206-208.pdf) +DIP Switch SPST Slide 7.62mm 300mil +0 +10 +10 +Button_Switch_THT +SW_DIP_SPSTx06_Piano_10.8x16.8mm_W7.62mm_P2.54mm +6x-dip-switch SPST , Piano, row spacing 7.62 mm (300 mils), body size 10.8x16.8mm +DIP Switch SPST Piano 7.62mm 300mil +0 +12 +12 +Button_Switch_THT +SW_DIP_SPSTx06_Piano_CTS_Series194-6MSTN_W7.62mm_P2.54mm +6x-dip-switch SPST CTS_Series194-6MSTN, Piano, row spacing 7.62 mm (300 mils), body size (see https://www.ctscorp.com/wp-content/uploads/194-195.pdf) +DIP Switch SPST Piano 7.62mm 300mil +0 +12 +12 +Button_Switch_THT +SW_DIP_SPSTx06_Slide_6.7x16.8mm_W7.62mm_P2.54mm_LowProfile +6x-dip-switch SPST , Slide, row spacing 7.62 mm (300 mils), body size 6.7x16.8mm (see e.g. https://www.ctscorp.com/wp-content/uploads/209-210.pdf), LowProfile +DIP Switch SPST Slide 7.62mm 300mil LowProfile +0 +12 +12 +Button_Switch_THT +SW_DIP_SPSTx06_Slide_9.78x17.42mm_W7.62mm_P2.54mm +6x-dip-switch SPST , Slide, row spacing 7.62 mm (300 mils), body size 9.78x17.42mm (see e.g. https://www.ctscorp.com/wp-content/uploads/206-208.pdf) +DIP Switch SPST Slide 7.62mm 300mil +0 +12 +12 +Button_Switch_THT +SW_DIP_SPSTx07_Piano_10.8x19.34mm_W7.62mm_P2.54mm +7x-dip-switch SPST , Piano, row spacing 7.62 mm (300 mils), body size 10.8x19.34mm +DIP Switch SPST Piano 7.62mm 300mil +0 +14 +14 +Button_Switch_THT +SW_DIP_SPSTx07_Piano_CTS_Series194-7MSTN_W7.62mm_P2.54mm +7x-dip-switch SPST CTS_Series194-7MSTN, Piano, row spacing 7.62 mm (300 mils), body size (see https://www.ctscorp.com/wp-content/uploads/194-195.pdf) +DIP Switch SPST Piano 7.62mm 300mil +0 +14 +14 +Button_Switch_THT +SW_DIP_SPSTx07_Slide_6.7x19.34mm_W7.62mm_P2.54mm_LowProfile +7x-dip-switch SPST , Slide, row spacing 7.62 mm (300 mils), body size 6.7x19.34mm (see e.g. https://www.ctscorp.com/wp-content/uploads/209-210.pdf), LowProfile +DIP Switch SPST Slide 7.62mm 300mil LowProfile +0 +14 +14 +Button_Switch_THT +SW_DIP_SPSTx07_Slide_9.78x19.96mm_W7.62mm_P2.54mm +7x-dip-switch SPST , Slide, row spacing 7.62 mm (300 mils), body size 9.78x19.96mm (see e.g. https://www.ctscorp.com/wp-content/uploads/206-208.pdf) +DIP Switch SPST Slide 7.62mm 300mil +0 +14 +14 +Button_Switch_THT +SW_DIP_SPSTx08_Piano_10.8x21.88mm_W7.62mm_P2.54mm +8x-dip-switch SPST , Piano, row spacing 7.62 mm (300 mils), body size 10.8x21.88mm +DIP Switch SPST Piano 7.62mm 300mil +0 +16 +16 +Button_Switch_THT +SW_DIP_SPSTx08_Piano_CTS_Series194-8MSTN_W7.62mm_P2.54mm +8x-dip-switch SPST CTS_Series194-8MSTN, Piano, row spacing 7.62 mm (300 mils), body size (see https://www.ctscorp.com/wp-content/uploads/194-195.pdf) +DIP Switch SPST Piano 7.62mm 300mil +0 +16 +16 +Button_Switch_THT +SW_DIP_SPSTx08_Slide_6.7x21.88mm_W7.62mm_P2.54mm_LowProfile +8x-dip-switch SPST , Slide, row spacing 7.62 mm (300 mils), body size 6.7x21.88mm (see e.g. https://www.ctscorp.com/wp-content/uploads/209-210.pdf), LowProfile +DIP Switch SPST Slide 7.62mm 300mil LowProfile +0 +16 +16 +Button_Switch_THT +SW_DIP_SPSTx08_Slide_9.78x22.5mm_W7.62mm_P2.54mm +8x-dip-switch SPST , Slide, row spacing 7.62 mm (300 mils), body size 9.78x22.5mm (see e.g. https://www.ctscorp.com/wp-content/uploads/206-208.pdf) +DIP Switch SPST Slide 7.62mm 300mil +0 +16 +16 +Button_Switch_THT +SW_DIP_SPSTx09_Piano_10.8x24.42mm_W7.62mm_P2.54mm +9x-dip-switch SPST , Piano, row spacing 7.62 mm (300 mils), body size 10.8x24.42mm +DIP Switch SPST Piano 7.62mm 300mil +0 +18 +18 +Button_Switch_THT +SW_DIP_SPSTx09_Piano_CTS_Series194-9MSTN_W7.62mm_P2.54mm +9x-dip-switch SPST CTS_Series194-9MSTN, Piano, row spacing 7.62 mm (300 mils), body size (see https://www.ctscorp.com/wp-content/uploads/194-195.pdf) +DIP Switch SPST Piano 7.62mm 300mil +0 +18 +18 +Button_Switch_THT +SW_DIP_SPSTx09_Slide_6.7x24.42mm_W7.62mm_P2.54mm_LowProfile +9x-dip-switch SPST , Slide, row spacing 7.62 mm (300 mils), body size 6.7x24.42mm (see e.g. https://www.ctscorp.com/wp-content/uploads/209-210.pdf), LowProfile +DIP Switch SPST Slide 7.62mm 300mil LowProfile +0 +18 +18 +Button_Switch_THT +SW_DIP_SPSTx09_Slide_9.78x25.04mm_W7.62mm_P2.54mm +9x-dip-switch SPST , Slide, row spacing 7.62 mm (300 mils), body size 9.78x25.04mm (see e.g. https://www.ctscorp.com/wp-content/uploads/206-208.pdf) +DIP Switch SPST Slide 7.62mm 300mil +0 +18 +18 +Button_Switch_THT +SW_DIP_SPSTx10_Piano_10.8x26.96mm_W7.62mm_P2.54mm +10x-dip-switch SPST , Piano, row spacing 7.62 mm (300 mils), body size 10.8x26.96mm +DIP Switch SPST Piano 7.62mm 300mil +0 +20 +20 +Button_Switch_THT +SW_DIP_SPSTx10_Piano_CTS_Series194-10MSTN_W7.62mm_P2.54mm +10x-dip-switch SPST CTS_Series194-10MSTN, Piano, row spacing 7.62 mm (300 mils), body size (see https://www.ctscorp.com/wp-content/uploads/194-195.pdf) +DIP Switch SPST Piano 7.62mm 300mil +0 +20 +20 +Button_Switch_THT +SW_DIP_SPSTx10_Slide_6.7x26.96mm_W7.62mm_P2.54mm_LowProfile +10x-dip-switch SPST , Slide, row spacing 7.62 mm (300 mils), body size 6.7x26.96mm (see e.g. https://www.ctscorp.com/wp-content/uploads/209-210.pdf), LowProfile +DIP Switch SPST Slide 7.62mm 300mil LowProfile +0 +20 +20 +Button_Switch_THT +SW_DIP_SPSTx10_Slide_9.78x27.58mm_W7.62mm_P2.54mm +10x-dip-switch SPST , Slide, row spacing 7.62 mm (300 mils), body size 9.78x27.58mm (see e.g. https://www.ctscorp.com/wp-content/uploads/206-208.pdf) +DIP Switch SPST Slide 7.62mm 300mil +0 +20 +20 +Button_Switch_THT +SW_DIP_SPSTx11_Piano_10.8x29.5mm_W7.62mm_P2.54mm +11x-dip-switch SPST , Piano, row spacing 7.62 mm (300 mils), body size 10.8x29.5mm +DIP Switch SPST Piano 7.62mm 300mil +0 +22 +22 +Button_Switch_THT +SW_DIP_SPSTx11_Piano_CTS_Series194-11MSTN_W7.62mm_P2.54mm +11x-dip-switch SPST CTS_Series194-11MSTN, Piano, row spacing 7.62 mm (300 mils), body size (see https://www.ctscorp.com/wp-content/uploads/194-195.pdf) +DIP Switch SPST Piano 7.62mm 300mil +0 +22 +22 +Button_Switch_THT +SW_DIP_SPSTx11_Slide_6.7x29.5mm_W7.62mm_P2.54mm_LowProfile +11x-dip-switch SPST , Slide, row spacing 7.62 mm (300 mils), body size 6.7x29.5mm (see e.g. https://www.ctscorp.com/wp-content/uploads/209-210.pdf), LowProfile +DIP Switch SPST Slide 7.62mm 300mil LowProfile +0 +22 +22 +Button_Switch_THT +SW_DIP_SPSTx11_Slide_9.78x30.12mm_W7.62mm_P2.54mm +11x-dip-switch SPST , Slide, row spacing 7.62 mm (300 mils), body size 9.78x30.12mm (see e.g. https://www.ctscorp.com/wp-content/uploads/206-208.pdf) +DIP Switch SPST Slide 7.62mm 300mil +0 +22 +22 +Button_Switch_THT +SW_DIP_SPSTx12_Piano_10.8x32.04mm_W7.62mm_P2.54mm +12x-dip-switch SPST , Piano, row spacing 7.62 mm (300 mils), body size 10.8x32.04mm +DIP Switch SPST Piano 7.62mm 300mil +0 +24 +24 +Button_Switch_THT +SW_DIP_SPSTx12_Piano_CTS_Series194-12MSTN_W7.62mm_P2.54mm +12x-dip-switch SPST CTS_Series194-12MSTN, Piano, row spacing 7.62 mm (300 mils), body size (see https://www.ctscorp.com/wp-content/uploads/194-195.pdf) +DIP Switch SPST Piano 7.62mm 300mil +0 +24 +24 +Button_Switch_THT +SW_DIP_SPSTx12_Slide_6.7x32.04mm_W7.62mm_P2.54mm_LowProfile +12x-dip-switch SPST , Slide, row spacing 7.62 mm (300 mils), body size 6.7x32.04mm (see e.g. https://www.ctscorp.com/wp-content/uploads/209-210.pdf), LowProfile +DIP Switch SPST Slide 7.62mm 300mil LowProfile +0 +24 +24 +Button_Switch_THT +SW_DIP_SPSTx12_Slide_9.78x32.66mm_W7.62mm_P2.54mm +12x-dip-switch SPST , Slide, row spacing 7.62 mm (300 mils), body size 9.78x32.66mm (see e.g. https://www.ctscorp.com/wp-content/uploads/206-208.pdf) +DIP Switch SPST Slide 7.62mm 300mil +0 +24 +24 +Button_Switch_THT +SW_E-Switch_EG1224_SPDT_Angled +E-Switch slide switch, EG series, SPDT, right angle, http://spec_sheets.e-switch.com/specs/P040042.pdf +switch SPDT +0 +7 +3 +Button_Switch_THT +SW_E-Switch_EG1271_DPDT +E-Switch sub miniature slide switch, EG series, DPDT, http://spec_sheets.e-switch.com/specs/P040047.pdf +switch DPDT +0 +6 +6 +Button_Switch_THT +SW_E-Switch_EG2219_DPDT_Angled +E-Switch slide switch, EG series, DPDT, right angle, http://spec_sheets.e-switch.com/specs/P040170.pdf +switch DPDT +0 +10 +6 +Button_Switch_THT +SW_Lever_1P2T_NKK_GW12LxH +Switch, single pole double throw, right angle, http://www.nkkswitches.com/pdf/GW.pdf +switch single-pole double-throw spdt ON-ON horizontal +0 +5 +3 +Button_Switch_THT +SW_MEC_5GTH9 +MEC 5G single pole normally-open tactile switch https://cdn.sos.sk/productdata/80/f6/aabf7be6/5gth9358222.pdf +switch normally-open pushbutton push-button +0 +4 +2 +Button_Switch_THT +SW_NKK_BB15AH +https://www.nkkswitches.com/pdf/Bpushbuttons-1.pdf +Pushbutton Right-angle +0 +5 +3 +Button_Switch_THT +SW_NKK_G1xJP +Switch NKK G1xJP http://www.nkkswitches.com/pdf/gwillum.pdf +SWITCH TOGGLE ILLUM SPDT NKK +0 +6 +6 +Button_Switch_THT +SW_NKK_GW12LJP +Switch, single pole double throw, illuminated paddle, http://www.nkkswitches.com/pdf/gwillum.pdf +switch single-pole double-throw spdt ON-ON illuminated LED +0 +6 +6 +Button_Switch_THT +SW_PUSH-12mm +SW PUSH 12mm https://www.e-switch.com/system/asset/product_line/data_sheet/143/TL1100.pdf +tact sw push 12mm +0 +4 +2 +Button_Switch_THT +SW_PUSH-12mm_Wuerth-430476085716 +SW PUSH 12mm http://katalog.we-online.de/em/datasheet/430476085716.pdf +tact sw push 12mm +0 +4 +2 +Button_Switch_THT +SW_PUSH_6mm +https://www.omron.com/ecb/products/pdf/en-b3f.pdf +tact sw push 6mm +0 +4 +2 +Button_Switch_THT +SW_PUSH_6mm_H4.3mm +tactile push button, 6x6mm e.g. PHAP33xx series, height=4.3mm +tact sw push 6mm +0 +4 +2 +Button_Switch_THT +SW_PUSH_6mm_H5mm +tactile push button, 6x6mm e.g. PHAP33xx series, height=5mm +tact sw push 6mm +0 +4 +2 +Button_Switch_THT +SW_PUSH_6mm_H7.3mm +tactile push button, 6x6mm e.g. PHAP33xx series, height=7.3mm +tact sw push 6mm +0 +4 +2 +Button_Switch_THT +SW_PUSH_6mm_H8.5mm +tactile push button, 6x6mm e.g. PHAP33xx series, height=8.5mm +tact sw push 6mm +0 +4 +2 +Button_Switch_THT +SW_PUSH_6mm_H8mm +tactile push button, 6x6mm e.g. PHAP33xx series, height=8mm +tact sw push 6mm +0 +4 +2 +Button_Switch_THT +SW_PUSH_6mm_H9.5mm +tactile push button, 6x6mm e.g. PHAP33xx series, height=9.5mm +tact sw push 6mm +0 +4 +2 +Button_Switch_THT +SW_PUSH_6mm_H13mm +tactile push button, 6x6mm e.g. PHAP33xx series, height=13mm +tact sw push 6mm +0 +4 +2 +Button_Switch_THT +SW_PUSH_E-Switch_FS5700DP_DPDT +FS5700 series pushbutton footswitch, DPDT, https://www.e-switch.com/system/asset/product_line/data_sheet/226/FS5700.pdf +switch DPDT footswitch +0 +6 +6 +Button_Switch_THT +SW_PUSH_LCD_E3_SAxxxx +Switch with LCD screen E3 SAxxxx +switch normally-open pushbutton push-button LCD +0 +6 +6 +Button_Switch_THT +SW_PUSH_LCD_E3_SAxxxx_SocketPins +Switch with LCD screen E3 SAxxxx +switch normally-open pushbutton push-button LCD +0 +6 +6 +Button_Switch_THT +SW_Push_1P1T_NO_LED_E-Switch_TL1250 +illuminated right angle tact switch https://www.e-switch.com/system/asset/product_line/data_sheet/148/TL1250.pdf +led push switch right angle +0 +6 +4 +Button_Switch_THT +SW_Push_1P2T_Vertical_E-Switch_800UDP8P1A1M6 + right angle SPDT push button https://www.e-switch.com/system/asset/product_line/data_sheet/210/800U.pdf +IP67 ultra-miniture horizontal +0 +5 +3 +Button_Switch_THT +SW_Push_2P2T_Vertical_E-Switch_800UDP8P1A1M6 + right angle DPDT push button https://www.e-switch.com/system/asset/product_line/data_sheet/210/800U.pdf +IP67 ultra-miniture horizontal +0 +8 +6 +Button_Switch_THT +SW_Slide_1P2T_CK_OS102011MS2Q +CuK miniature slide switch, OS series, SPDT, https://www.ckswitches.com/media/1428/os.pdf +switch SPDT +0 +5 +3 +Button_Switch_THT +SW_TH_Tactile_Omron_B3F-10xx +SW_TH_Tactile_Omron_B3F-10xx_https://www.omron.com/ecb/products/pdf/en-b3f.pdf +Omron B3F-10xx +0 +4 +4 +Button_Switch_THT +SW_Tactile_SKHH_Angled +tactile switch 6mm ALPS SKHH right angle http://www.alps.com/prod/info/E/HTML/Tact/SnapIn/SKHH/SKHHLUA010.html +tactile switch 6mm ALPS SKHH right angle +0 +4 +2 +Button_Switch_THT +SW_Tactile_SPST_Angled_PTS645Vx31-2LFS +tactile switch SPST right angle, PTS645VL31-2 LFS +tactile switch SPST angled PTS645VL31-2 LFS C&K Button +0 +4 +2 +Button_Switch_THT +SW_Tactile_SPST_Angled_PTS645Vx39-2LFS +tactile switch SPST right angle, PTS645VL39-2 LFS +tactile switch SPST angled PTS645VL39-2 LFS C&K Button +0 +4 +2 +Button_Switch_THT +SW_Tactile_SPST_Angled_PTS645Vx58-2LFS +tactile switch SPST right angle, PTS645VL58-2 LFS +tactile switch SPST angled PTS645VL58-2 LFS C&K Button +0 +4 +2 +Button_Switch_THT +SW_Tactile_SPST_Angled_PTS645Vx83-2LFS +tactile switch SPST right angle, PTS645VL83-2 LFS +tactile switch SPST angled PTS645VL83-2 LFS C&K Button +0 +4 +2 +Button_Switch_THT +SW_Tactile_Straight_KSA0Axx1LFTR +SW PUSH SMALL http://www.ckswitches.com/media/1457/ksa_ksl.pdf +SW PUSH SMALL Tactile C&K +0 +4 +2 +Button_Switch_THT +SW_Tactile_Straight_KSL0Axx1LFTR +SW PUSH SMALL http://www.ckswitches.com/media/1457/ksa_ksl.pdf +SW PUSH SMALL Tactile C&K +0 +4 +2 +Buzzer_Beeper +Buzzer_12x9.5RM7.6 +Generic Buzzer, D12mm height 9.5mm with RM7.6mm +buzzer +0 +2 +2 +Buzzer_Beeper +Buzzer_15x7.5RM7.6 +Generic Buzzer, D15mm height 7.5mm with RM7.6mm +buzzer +0 +2 +2 +Buzzer_Beeper +Buzzer_CUI_CPT-9019S-SMT +https://www.cui.com/product/resource/cpt-9019s-smt.pdf +buzzer piezo +0 +2 +2 +Buzzer_Beeper +Buzzer_D14mm_H7mm_P10mm +Generic Buzzer, D14mm height 7mm with pitch 10mm +buzzer +0 +2 +2 +Buzzer_Beeper +Buzzer_Mallory_AST1109MLTRQ +Mallory low-profile piezo buzzer, https://www.mspindy.com/specifications/AST1109MLTRQ.pdf +buzzer piezo +0 +2 +2 +Buzzer_Beeper +Buzzer_Murata_PKMCS0909E4000-R1 +Murata Buzzer http://www.murata.com/en-us/api/pdfdownloadapi?cate=&partno=PKMCS0909E4000-R1 +Murata Buzzer Beeper +0 +2 +2 +Buzzer_Beeper +Buzzer_TDK_PS1240P02BT_D12.2mm_H6.5mm +Buzzer, D12.2mm height 6.5mm, https://product.tdk.com/info/en/catalog/datasheets/piezoelectronic_buzzer_ps_en.pdf +buzzer +0 +2 +2 +Buzzer_Beeper +MagneticBuzzer_CUI_CMT-8504-100-SMT +magnetic transducer buzzer, 5V, SPL of 100 dB at 10 cm, https://www.cuidevices.com/product/resource/pdf/cmt-8504-100-smt-tr.pdf +CMT 8504 +0 +4 +4 +Buzzer_Beeper +MagneticBuzzer_CUI_CST-931RP-A +CST-931RP-A, http://www.cui.com/product/resource/cst-931rp-a.pdf +CST-931RP-A +0 +2 +2 +Buzzer_Beeper +MagneticBuzzer_Kingstate_KCG0601 +Buzzer, Elektromagnetic Beeper, Summer, +Kingstate KCG0601 +0 +2 +2 +Buzzer_Beeper +MagneticBuzzer_Kobitone_254-EMB84Q-RO +MagneticBuzzer Kobitone 254-EMB84Q-RO https://www.mouser.es/datasheet/2/209/KT-400385-1171904.pdf +MagneticBuzzer Kobitone 254-EMB84Q-RO +0 +3 +3 +Buzzer_Beeper +MagneticBuzzer_PUI_AT-0927-TT-6-R +Buzzer Magnetic 9mm AT-0927-TT-6-R, http://www.puiaudio.com/pdf/AT-0927-TT-6-R.pdf +Buzzer Magnetic 9mm AT-0927-TT-6-R +0 +2 +2 +Buzzer_Beeper +MagneticBuzzer_ProSignal_ABI-009-RC +Buzzer, Elektromagnetic Beeper, Summer, 6V-DC, +Pro Signal ABI-009-RC +0 +2 +2 +Buzzer_Beeper +MagneticBuzzer_ProSignal_ABI-010-RC +Buzzer, Elektromagnetic Beeper, Summer, 12V-DC, +Pro Signal ABI-010-RC +0 +2 +2 +Buzzer_Beeper +MagneticBuzzer_ProSignal_ABT-410-RC +Buzzer, Elektromagnetic Beeper, Summer, 1,5V-DC, +Pro Signal ABT-410-RC +0 +2 +2 +Buzzer_Beeper +MagneticBuzzer_ProjectsUnlimited_AI-4228-TWT-R +Buzzer, Elektromagnetic Beeper, Summer, 3-28V-DC, https://www.kynix.com/uploadfiles/pdf/AI-4228-TWT-R.pdf +Projects Unlimited AI-4228-TWT-R +0 +2 +2 +Buzzer_Beeper +MagneticBuzzer_StarMicronics_HMB-06_HMB-12 +Buzzer, Elektromagnetic Beeper, Summer, +Star Micronics HMB-06 HMB-12 +0 +2 +2 +Buzzer_Beeper +PUIAudio_SMT_0825_S_4_R +SMD 8540, http://www.puiaudio.com/product-detail.aspx?partnumber=SMT-0825-S-4-R +SMD 8540 +0 +4 +4 +Buzzer_Beeper +Speaker_CUI_CMR-1206S-67 +Speaker, 30mW, 300-7000Hz, IP67 face, 12x6x2,25mm, https://www.cuidevices.com/product/resource/cmr-12062s-67.pdf +speaker CUI +0 +2 +2 +Calibration_Scale +Gauge_10mm_Type1_CopperTop +Gauge, Massstab, 10mm, CopperTop, Type 1, +Gauge Massstab 10mm CopperTop Type 1 +0 +0 +0 +Calibration_Scale +Gauge_10mm_Type1_SilkScreenTop +Gauge, Massstab, 10mm, SilkScreenTop, Type 1, +Gauge Massstab 10mm SilkScreenTop Type 1 +0 +0 +0 +Calibration_Scale +Gauge_10mm_Type2_CopperTop +Gauge, Massstab, 10mm, CopperTop, Type 2, +Gauge Massstab 10mm CopperTop Type 2 +0 +0 +0 +Calibration_Scale +Gauge_10mm_Type2_SilkScreenTop +Gauge, Massstab, 10mm, SilkScreenTop, Type 2, +Gauge Massstab 10mm SilkScreenTop Type 2 +0 +0 +0 +Calibration_Scale +Gauge_10mm_Type3_CopperTop +Gauge, Massstab, 10mm, CopperTop, Type 3, +Gauge Massstab 10mm CopperTop Type 3 +0 +0 +0 +Calibration_Scale +Gauge_10mm_Type3_SilkScreenTop +Gauge, Massstab, 10mm, SilkScreenTop, Type 3, +Gauge Massstab 10mm SilkScreenTop Type 3 +0 +0 +0 +Calibration_Scale +Gauge_10mm_Type4_CopperTop +Gauge, Massstab, 10mm, CopperTop, Type 4, +Gauge Massstab 10mm CopperTop Type 4 +0 +0 +0 +Calibration_Scale +Gauge_10mm_Type4_SilkScreenTop +Gauge, Massstab, 10mm, SilkScreenTop, Type 4, +Gauge Massstab 10mm SilkScreenTop Type 4 +0 +0 +0 +Calibration_Scale +Gauge_10mm_Type5_CopperTop +Gauge, Massstab, 10mm, CopperTop, Type 5, +Gauge Massstab 10mm CopperTop Type 5 +0 +0 +0 +Calibration_Scale +Gauge_10mm_Type5_SilkScreenTop +Gauge, Massstab, 10mm, SilkScreenTop, Type 5, +Gauge Massstab 10mm SilkScreenTop Type 5 +0 +0 +0 +Calibration_Scale +Gauge_50mm_Type1_CopperTop +Gauge, Massstab, 50mm, CopperTop, Type 1, +Gauge Massstab 50mm CopperTop Type 1 +0 +0 +0 +Calibration_Scale +Gauge_50mm_Type1_SilkScreenTop +Gauge, Massstab, 50mm, SilkScreenTop, Type 1, +Gauge Massstab 50mm SilkScreenTop Type 1 +0 +0 +0 +Calibration_Scale +Gauge_50mm_Type2_CopperTop +Gauge, Massstab, 50mm, CopperTop, Type 2, +Gauge Massstab 50mm CopperTop Type 2 +0 +0 +0 +Calibration_Scale +Gauge_50mm_Type2_SilkScreenTop +Gauge, Massstab, 50mm, SilkScreenTop, Type 2, +Gauge Massstab 50mm SilkScreenTop Type 2 +0 +0 +0 +Calibration_Scale +Gauge_100mm_Grid_Type1_CopperTop +Gauge, Massstab, 100mm, Gitter, Grid, CopperTop, Type 1, +Gauge Massstab 100mm Gitter Grid CopperTop Type 1 +0 +0 +0 +Calibration_Scale +Gauge_100mm_Type1_CopperTop +Gauge, Massstab, 100mm, CopperTop, Type 1, +Gauge Massstab 100mm CopperTop Type 1 +0 +0 +0 +Calibration_Scale +Gauge_100mm_Type1_SilkScreenTop +Gauge, Massstab, 100mm, SilkScreenTop, Type 1, +Gauge Massstab 100mm SilkScreenTop Type 1 +0 +0 +0 +Calibration_Scale +Gauge_100mm_Type2_CopperTop +Gauge, Massstab, 100mm, CopperTop, Type 2, +Gauge Massstab 100mm CopperTop Type 2 +0 +0 +0 +Calibration_Scale +Gauge_100mm_Type2_SilkScreenTop +Gauge, Massstab, 100mm, SilkScreenTop, Type 2, +Gauge Massstab 100mm SilkScreenTop Type 2 +0 +0 +0 +Capacitor_SMD +CP_Elec_3x5.3 +SMT capacitor, aluminium electrolytic, 3x5.3, Cornell Dubilier Electronics +Capacitor Electrolytic +0 +2 +2 +Capacitor_SMD +CP_Elec_3x5.4 +SMD capacitor, aluminum electrolytic, Nichicon, 3.0x5.4mm +capacitor electrolytic +0 +2 +2 +Capacitor_SMD +CP_Elec_4x3 +SMD capacitor, aluminum electrolytic, Nichicon, 4.0x3mm +capacitor electrolytic +0 +2 +2 +Capacitor_SMD +CP_Elec_4x3.9 +SMD capacitor, aluminum electrolytic, Nichicon, 4.0x3.9mm +capacitor electrolytic +0 +2 +2 +Capacitor_SMD +CP_Elec_4x4.5 +SMD capacitor, aluminum electrolytic, Nichicon, 4.0x4.5mm +capacitor electrolytic +0 +2 +2 +Capacitor_SMD +CP_Elec_4x5.3 +SMD capacitor, aluminum electrolytic, Vishay, 4.0x5.3mm +capacitor electrolytic +0 +2 +2 +Capacitor_SMD +CP_Elec_4x5.4 +SMD capacitor, aluminum electrolytic, Panasonic A5 / Nichicon, 4.0x5.4mm +capacitor electrolytic +0 +2 +2 +Capacitor_SMD +CP_Elec_4x5.7 +SMD capacitor, aluminum electrolytic, United Chemi-Con, 4.0x5.7mm +capacitor electrolytic +0 +2 +2 +Capacitor_SMD +CP_Elec_4x5.8 +SMD capacitor, aluminum electrolytic, Panasonic, 4.0x5.8mm +capacitor electrolytic +0 +2 +2 +Capacitor_SMD +CP_Elec_5x3 +SMD capacitor, aluminum electrolytic, Nichicon, 5.0x3.0mm +capacitor electrolytic +0 +2 +2 +Capacitor_SMD +CP_Elec_5x3.9 +SMD capacitor, aluminum electrolytic, Nichicon, 5.0x3.9mm +capacitor electrolytic +0 +2 +2 +Capacitor_SMD +CP_Elec_5x4.4 +SMD capacitor, aluminum electrolytic, Panasonic B45, 5.0x4.4mm +capacitor electrolytic +0 +2 +2 +Capacitor_SMD +CP_Elec_5x4.5 +SMD capacitor, aluminum electrolytic, Nichicon, 5.0x4.5mm +capacitor electrolytic +0 +2 +2 +Capacitor_SMD +CP_Elec_5x5.3 +SMD capacitor, aluminum electrolytic, Nichicon, 5.0x5.3mm +capacitor electrolytic +0 +2 +2 +Capacitor_SMD +CP_Elec_5x5.4 +SMD capacitor, aluminum electrolytic, Nichicon, 5.0x5.4mm +capacitor electrolytic +0 +2 +2 +Capacitor_SMD +CP_Elec_5x5.7 +SMD capacitor, aluminum electrolytic, United Chemi-Con, 5.0x5.7mm +capacitor electrolytic +0 +2 +2 +Capacitor_SMD +CP_Elec_5x5.8 +SMD capacitor, aluminum electrolytic, Panasonic, 5.0x5.8mm +capacitor electrolytic +0 +2 +2 +Capacitor_SMD +CP_Elec_5x5.9 +SMD capacitor, aluminum electrolytic, Panasonic B6, 5.0x5.9mm +capacitor electrolytic +0 +2 +2 +Capacitor_SMD +CP_Elec_6.3x3 +SMD capacitor, aluminum electrolytic, Nichicon, 6.3x3.0mm +capacitor electrolytic +0 +2 +2 +Capacitor_SMD +CP_Elec_6.3x3.9 +SMD capacitor, aluminum electrolytic, Nichicon, 6.3x3.9mm +capacitor electrolytic +0 +2 +2 +Capacitor_SMD +CP_Elec_6.3x4.5 +SMD capacitor, aluminum electrolytic, Nichicon, 6.3x4.5mm +capacitor electrolytic +0 +2 +2 +Capacitor_SMD +CP_Elec_6.3x4.9 +SMD capacitor, aluminum electrolytic, Panasonic C5, 6.3x4.9mm +capacitor electrolytic +0 +2 +2 +Capacitor_SMD +CP_Elec_6.3x5.2 +SMD capacitor, aluminum electrolytic, United Chemi-Con, 6.3x5.2mm +capacitor electrolytic +0 +2 +2 +Capacitor_SMD +CP_Elec_6.3x5.3 +SMD capacitor, aluminum electrolytic, Cornell Dubilier, 6.3x5.3mm +capacitor electrolytic +0 +2 +2 +Capacitor_SMD +CP_Elec_6.3x5.4 +SMD capacitor, aluminum electrolytic, Panasonic C55, 6.3x5.4mm +capacitor electrolytic +0 +2 +2 +Capacitor_SMD +CP_Elec_6.3x5.4_Nichicon +SMD capacitor, aluminum electrolytic, Nichicon, 6.3x5.4mm +capacitor electrolytic +0 +2 +2 +Capacitor_SMD +CP_Elec_6.3x5.7 +SMD capacitor, aluminum electrolytic, United Chemi-Con, 6.3x5.7mm +capacitor electrolytic +0 +2 +2 +Capacitor_SMD +CP_Elec_6.3x5.8 +SMD capacitor, aluminum electrolytic, Nichicon, 6.3x5.8mm +capacitor electrolytic +0 +2 +2 +Capacitor_SMD +CP_Elec_6.3x5.9 +SMD capacitor, aluminum electrolytic, Panasonic C6, 6.3x5.9mm +capacitor electrolytic +0 +2 +2 +Capacitor_SMD +CP_Elec_6.3x7.7 +SMD capacitor, aluminum electrolytic, Nichicon, 6.3x7.7mm +capacitor electrolytic +0 +2 +2 +Capacitor_SMD +CP_Elec_6.3x9.9 +SMD capacitor, aluminum electrolytic, Panasonic C10, 6.3x9.9mm +capacitor electrolytic +0 +2 +2 +Capacitor_SMD +CP_Elec_8x5.4 +SMD capacitor, aluminum electrolytic, Nichicon, 8.0x5.4mm +capacitor electrolytic +0 +2 +2 +Capacitor_SMD +CP_Elec_8x6.2 +SMD capacitor, aluminum electrolytic, Nichicon, 8.0x6.2mm +capacitor electrolytic +0 +2 +2 +Capacitor_SMD +CP_Elec_8x6.5 +SMD capacitor, aluminum electrolytic, Rubycon, 8.0x6.5mm +capacitor electrolytic +0 +2 +2 +Capacitor_SMD +CP_Elec_8x6.7 +SMD capacitor, aluminum electrolytic, United Chemi-Con, 8.0x6.7mm +capacitor electrolytic +0 +2 +2 +Capacitor_SMD +CP_Elec_8x6.9 +SMD capacitor, aluminum electrolytic, Panasonic E7, 8.0x6.9mm +capacitor electrolytic +0 +2 +2 +Capacitor_SMD +CP_Elec_8x10 +SMD capacitor, aluminum electrolytic, Nichicon, 8.0x10mm +capacitor electrolytic +0 +2 +2 +Capacitor_SMD +CP_Elec_8x10.5 +SMD capacitor, aluminum electrolytic, Vishay 0810, 8.0x10.5mm, http://www.vishay.com/docs/28395/150crz.pdf +capacitor electrolytic +0 +2 +2 +Capacitor_SMD +CP_Elec_8x11.9 +SMD capacitor, aluminum electrolytic, Panasonic E12, 8.0x11.9mm +capacitor electrolytic +0 +2 +2 +Capacitor_SMD +CP_Elec_10x7.7 +SMD capacitor, aluminum electrolytic, Nichicon, 10.0x7.7mm +capacitor electrolytic +0 +2 +2 +Capacitor_SMD +CP_Elec_10x7.9 +SMD capacitor, aluminum electrolytic, Panasonic F8, 10.0x7.9mm +capacitor electrolytic +0 +2 +2 +Capacitor_SMD +CP_Elec_10x10 +SMD capacitor, aluminum electrolytic, Nichicon, 10.0x10.0mm +capacitor electrolytic +0 +2 +2 +Capacitor_SMD +CP_Elec_10x10.5 +SMD capacitor, aluminum electrolytic, Vishay 1010, 10.0x10.5mm, http://www.vishay.com/docs/28395/150crz.pdf +capacitor electrolytic +0 +2 +2 +Capacitor_SMD +CP_Elec_10x12.5 +SMD capacitor, aluminum electrolytic, Vishay 1012, 10.0x12.5mm, http://www.vishay.com/docs/28395/150crz.pdf +capacitor electrolytic +0 +2 +2 +Capacitor_SMD +CP_Elec_10x12.6 +SMD capacitor, aluminum electrolytic, Panasonic F12, 10.0x12.6mm +capacitor electrolytic +0 +2 +2 +Capacitor_SMD +CP_Elec_10x14.3 +SMD capacitor, aluminum electrolytic, Vishay 1014, 10.0x14.3mm, http://www.vishay.com/docs/28395/150crz.pdf +capacitor electrolytic +0 +2 +2 +Capacitor_SMD +CP_Elec_16x17.5 +SMD capacitor, aluminum electrolytic, Vishay 1616, 16.0x17.5mm, http://www.vishay.com/docs/28395/150crz.pdf +capacitor electrolytic +0 +2 +2 +Capacitor_SMD +CP_Elec_16x22 +SMD capacitor, aluminum electrolytic, Vishay 1621, 16.0x22.0mm, http://www.vishay.com/docs/28395/150crz.pdf +capacitor electrolytic +0 +2 +2 +Capacitor_SMD +CP_Elec_18x17.5 +SMD capacitor, aluminum electrolytic, Vishay 1816, 18.0x17.5mm, http://www.vishay.com/docs/28395/150crz.pdf +capacitor electrolytic +0 +2 +2 +Capacitor_SMD +CP_Elec_18x22 +SMD capacitor, aluminum electrolytic, Vishay 1821, 18.0x22.0mm, http://www.vishay.com/docs/28395/150crz.pdf +capacitor electrolytic +0 +2 +2 +Capacitor_SMD +C_0201_0603Metric +Capacitor SMD 0201 (0603 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: https://www.vishay.com/docs/20052/crcw0201e3.pdf), generated with kicad-footprint-generator +capacitor +0 +4 +2 +Capacitor_SMD +C_0201_0603Metric_Pad0.64x0.40mm_HandSolder +Capacitor SMD 0201 (0603 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: https://www.vishay.com/docs/20052/crcw0201e3.pdf), generated with kicad-footprint-generator +capacitor handsolder +0 +4 +2 +Capacitor_SMD +C_0402_1005Metric +Capacitor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator +capacitor +0 +2 +2 +Capacitor_SMD +C_0402_1005Metric_Pad0.74x0.62mm_HandSolder +Capacitor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator +capacitor handsolder +0 +2 +2 +Capacitor_SMD +C_0504_1310Metric +Capacitor SMD 0504 (1310 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator +capacitor +0 +2 +2 +Capacitor_SMD +C_0504_1310Metric_Pad0.83x1.28mm_HandSolder +Capacitor SMD 0504 (1310 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator +capacitor handsolder +0 +2 +2 +Capacitor_SMD +C_0603_1608Metric +Capacitor SMD 0603 (1608 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator +capacitor +0 +2 +2 +Capacitor_SMD +C_0603_1608Metric_Pad1.08x0.95mm_HandSolder +Capacitor SMD 0603 (1608 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator +capacitor handsolder +0 +2 +2 +Capacitor_SMD +C_0805_2012Metric +Capacitor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf, https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing), generated with kicad-footprint-generator +capacitor +0 +2 +2 +Capacitor_SMD +C_0805_2012Metric_Pad1.18x1.45mm_HandSolder +Capacitor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf, https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing), generated with kicad-footprint-generator +capacitor handsolder +0 +2 +2 +Capacitor_SMD +C_01005_0402Metric +Capacitor SMD 01005 (0402 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.vishay.com/docs/20056/crcw01005e3.pdf), generated with kicad-footprint-generator +capacitor +0 +4 +2 +Capacitor_SMD +C_01005_0402Metric_Pad0.57x0.30mm_HandSolder +Capacitor SMD 01005 (0402 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: http://www.vishay.com/docs/20056/crcw01005e3.pdf), generated with kicad-footprint-generator +capacitor handsolder +0 +4 +2 +Capacitor_SMD +C_1206_3216Metric +Capacitor SMD 1206 (3216 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator +capacitor +0 +2 +2 +Capacitor_SMD +C_1206_3216Metric_Pad1.33x1.80mm_HandSolder +Capacitor SMD 1206 (3216 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator +capacitor handsolder +0 +2 +2 +Capacitor_SMD +C_1210_3225Metric +Capacitor SMD 1210 (3225 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator +capacitor +0 +2 +2 +Capacitor_SMD +C_1210_3225Metric_Pad1.33x2.70mm_HandSolder +Capacitor SMD 1210 (3225 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator +capacitor handsolder +0 +2 +2 +Capacitor_SMD +C_1812_4532Metric +Capacitor SMD 1812 (4532 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator +capacitor +0 +2 +2 +Capacitor_SMD +C_1812_4532Metric_Pad1.57x3.40mm_HandSolder +Capacitor SMD 1812 (4532 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator +capacitor handsolder +0 +2 +2 +Capacitor_SMD +C_1825_4564Metric +Capacitor SMD 1825 (4564 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size from: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator +capacitor +0 +2 +2 +Capacitor_SMD +C_1825_4564Metric_Pad1.57x6.80mm_HandSolder +Capacitor SMD 1825 (4564 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size from: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator +capacitor handsolder +0 +2 +2 +Capacitor_SMD +C_2220_5650Metric +Capacitor SMD 2220 (5650 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size from: http://datasheets.avx.com/AVX-HV_MLCC.pdf), generated with kicad-footprint-generator +capacitor +0 +2 +2 +Capacitor_SMD +C_2220_5650Metric_Pad1.97x5.40mm_HandSolder +Capacitor SMD 2220 (5650 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size from: http://datasheets.avx.com/AVX-HV_MLCC.pdf), generated with kicad-footprint-generator +capacitor handsolder +0 +2 +2 +Capacitor_SMD +C_2225_5664Metric +Capacitor SMD 2225 (5664 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size from: http://datasheets.avx.com/AVX-HV_MLCC.pdf), generated with kicad-footprint-generator +capacitor +0 +2 +2 +Capacitor_SMD +C_2225_5664Metric_Pad1.80x6.60mm_HandSolder +Capacitor SMD 2225 (5664 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size from: http://datasheets.avx.com/AVX-HV_MLCC.pdf), generated with kicad-footprint-generator +capacitor handsolder +0 +2 +2 +Capacitor_SMD +C_3640_9110Metric +Capacitor SMD 3640 (9110 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size from: http://datasheets.avx.com/AVX-HV_MLCC.pdf), generated with kicad-footprint-generator +capacitor +0 +2 +2 +Capacitor_SMD +C_3640_9110Metric_Pad2.10x10.45mm_HandSolder +Capacitor SMD 3640 (9110 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size from: http://datasheets.avx.com/AVX-HV_MLCC.pdf), generated with kicad-footprint-generator +capacitor handsolder +0 +2 +2 +Capacitor_SMD +C_Elec_3x5.4 +SMD capacitor, aluminum electrolytic nonpolar, 3.0x5.4mm +capacitor electrolyic nonpolar +0 +2 +2 +Capacitor_SMD +C_Elec_4x5.4 +SMD capacitor, aluminum electrolytic nonpolar, 4.0x5.4mm +capacitor electrolyic nonpolar +0 +2 +2 +Capacitor_SMD +C_Elec_4x5.8 +SMD capacitor, aluminum electrolytic nonpolar, 4.0x5.8mm +capacitor electrolyic nonpolar +0 +2 +2 +Capacitor_SMD +C_Elec_5x5.4 +SMD capacitor, aluminum electrolytic nonpolar, 5.0x5.4mm +capacitor electrolyic nonpolar +0 +2 +2 +Capacitor_SMD +C_Elec_5x5.8 +SMD capacitor, aluminum electrolytic nonpolar, 5.0x5.8mm +capacitor electrolyic nonpolar +0 +2 +2 +Capacitor_SMD +C_Elec_6.3x5.4 +SMD capacitor, aluminum electrolytic nonpolar, 6.3x5.4mm +capacitor electrolyic nonpolar +0 +2 +2 +Capacitor_SMD +C_Elec_6.3x5.8 +SMD capacitor, aluminum electrolytic nonpolar, 6.3x5.8mm +capacitor electrolyic nonpolar +0 +2 +2 +Capacitor_SMD +C_Elec_6.3x7.7 +SMD capacitor, aluminum electrolytic nonpolar, 6.3x7.7mm +capacitor electrolyic nonpolar +0 +2 +2 +Capacitor_SMD +C_Elec_8x5.4 +SMD capacitor, aluminum electrolytic nonpolar, 8.0x5.4mm +capacitor electrolyic nonpolar +0 +2 +2 +Capacitor_SMD +C_Elec_8x6.2 +SMD capacitor, aluminum electrolytic nonpolar, 8.0x6.2mm +capacitor electrolyic nonpolar +0 +2 +2 +Capacitor_SMD +C_Elec_8x10.2 +SMD capacitor, aluminum electrolytic nonpolar, 8.0x10.2mm +capacitor electrolyic nonpolar +0 +2 +2 +Capacitor_SMD +C_Elec_10x10.2 +SMD capacitor, aluminum electrolytic nonpolar, 10.0x10.2mm +capacitor electrolyic nonpolar +0 +2 +2 +Capacitor_SMD +C_Trimmer_Murata_TZB4-A +trimmer capacitor SMD horizontal, http://www.murata.com/~/media/webrenewal/support/library/catalog/products/capacitor/trimmer/t13e.ashx?la=en-gb + Murata TZB4 TZB4-A +0 +2 +2 +Capacitor_SMD +C_Trimmer_Murata_TZB4-B +trimmer capacitor SMD horizontal, http://www.murata.com/~/media/webrenewal/support/library/catalog/products/capacitor/trimmer/t13e.ashx?la=en-gb + Murata TZB4 TZB4-A +0 +2 +2 +Capacitor_SMD +C_Trimmer_Murata_TZC3 +trimmer capacitor SMD horizontal, http://www.murata.com/~/media/webrenewal/support/library/catalog/products/capacitor/trimmer/t13e.ashx?la=en-gb + Murata TZC3 +0 +2 +2 +Capacitor_SMD +C_Trimmer_Murata_TZR1 +trimmer capacitor SMD horizontal, http://www.murata.com/~/media/webrenewal/support/library/catalog/products/capacitor/trimmer/t13e.ashx?la=en-gb + Murata TZR1 +0 +2 +2 +Capacitor_SMD +C_Trimmer_Murata_TZW4 +trimmer capacitor SMD horizontal, http://www.murata.com/~/media/webrenewal/support/library/catalog/products/capacitor/trimmer/t13e.ashx?la=en-gb + Murata TZW4 +0 +2 +2 +Capacitor_SMD +C_Trimmer_Murata_TZY2 +trimmer capacitor SMD horizontal, http://www.murata.com/~/media/webrenewal/support/library/catalog/products/capacitor/trimmer/t13e.ashx?la=en-gb + Murata TZY2 +0 +2 +2 +Capacitor_SMD +C_Trimmer_Sprague-Goodman_SGC3 +trimmer capacitor SMD horizontal, http://media.wix.com/ugd/d86717_38d9821e12823a7aa9cef38c6c2a73cc.pdf + Sprague Goodman SGC3 +0 +2 +2 +Capacitor_SMD +C_Trimmer_Voltronics_JN +trimmer capacitor SMD horizontal, http://www.knowlescapacitors.com/File%20Library/Voltronics/English/GlobalNavigation/Products/Trimmer%20Capacitors/CerChipTrimCap.pdf + Voltronics JN +0 +2 +2 +Capacitor_SMD +C_Trimmer_Voltronics_JQ +trimmer capacitor SMD horizontal, http://www.knowlescapacitors.com/File%20Library/Voltronics/English/GlobalNavigation/Products/Trimmer%20Capacitors/CerChipTrimCap.pdf + Voltronics JQ +0 +2 +2 +Capacitor_SMD +C_Trimmer_Voltronics_JR +trimmer capacitor SMD horizontal, http://www.knowlescapacitors.com/File%20Library/Voltronics/English/GlobalNavigation/Products/Trimmer%20Capacitors/CerChipTrimCap.pdf + Voltronics JR +0 +2 +2 +Capacitor_SMD +C_Trimmer_Voltronics_JV +trimmer capacitor SMD horizontal, http://www.knowlescapacitors.com/File%20Library/Voltronics/English/GlobalNavigation/Products/Trimmer%20Capacitors/CerChipTrimCap.pdf + Voltronics JV +0 +2 +2 +Capacitor_SMD +C_Trimmer_Voltronics_JZ +trimmer capacitor SMD horizontal, http://www.knowlescapacitors.com/File%20Library/Voltronics/English/GlobalNavigation/Products/Trimmer%20Capacitors/CerChipTrimCap.pdf + Voltronics JR +0 +2 +2 +Capacitor_THT +CP_Axial_L10.0mm_D4.5mm_P15.00mm_Horizontal +CP, Axial series, Axial, Horizontal, pin pitch=15mm, , length*diameter=10*4.5mm^2, Electrolytic Capacitor, , http://www.vishay.com/docs/28325/021asm.pdf +CP Axial series Axial Horizontal pin pitch 15mm length 10mm diameter 4.5mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Axial_L10.0mm_D6.0mm_P15.00mm_Horizontal +CP, Axial series, Axial, Horizontal, pin pitch=15mm, , length*diameter=10*6mm^2, Electrolytic Capacitor, , http://www.vishay.com/docs/28325/021asm.pdf +CP Axial series Axial Horizontal pin pitch 15mm length 10mm diameter 6mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Axial_L11.0mm_D5.0mm_P18.00mm_Horizontal +CP, Axial series, Axial, Horizontal, pin pitch=18mm, , length*diameter=11*5mm^2, Electrolytic Capacitor +CP Axial series Axial Horizontal pin pitch 18mm length 11mm diameter 5mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Axial_L11.0mm_D6.0mm_P18.00mm_Horizontal +CP, Axial series, Axial, Horizontal, pin pitch=18mm, , length*diameter=11*6mm^2, Electrolytic Capacitor +CP Axial series Axial Horizontal pin pitch 18mm length 11mm diameter 6mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Axial_L11.0mm_D8.0mm_P15.00mm_Horizontal +CP, Axial series, Axial, Horizontal, pin pitch=15mm, , length*diameter=11*8mm^2, Electrolytic Capacitor, , http://www.vishay.com/docs/28325/021asm.pdf +CP Axial series Axial Horizontal pin pitch 15mm length 11mm diameter 8mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Axial_L18.0mm_D6.5mm_P25.00mm_Horizontal +CP, Axial series, Axial, Horizontal, pin pitch=25mm, , length*diameter=18*6.5mm^2, Electrolytic Capacitor, , http://www.vishay.com/docs/28325/021asm.pdf +CP Axial series Axial Horizontal pin pitch 25mm length 18mm diameter 6.5mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Axial_L18.0mm_D8.0mm_P25.00mm_Horizontal +CP, Axial series, Axial, Horizontal, pin pitch=25mm, , length*diameter=18*8mm^2, Electrolytic Capacitor, , http://www.vishay.com/docs/28325/021asm.pdf +CP Axial series Axial Horizontal pin pitch 25mm length 18mm diameter 8mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Axial_L18.0mm_D10.0mm_P25.00mm_Horizontal +CP, Axial series, Axial, Horizontal, pin pitch=25mm, , length*diameter=18*10mm^2, Electrolytic Capacitor, , http://www.vishay.com/docs/28325/021asm.pdf +CP Axial series Axial Horizontal pin pitch 25mm length 18mm diameter 10mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Axial_L20.0mm_D10.0mm_P26.00mm_Horizontal +CP, Axial series, Axial, Horizontal, pin pitch=26mm, , length*diameter=20*10mm^2, Electrolytic Capacitor, , http://www.kemet.com/Lists/ProductCatalog/Attachments/424/KEM_AC102.pdf +CP Axial series Axial Horizontal pin pitch 26mm length 20mm diameter 10mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Axial_L20.0mm_D13.0mm_P26.00mm_Horizontal +CP, Axial series, Axial, Horizontal, pin pitch=26mm, , length*diameter=20*13mm^2, Electrolytic Capacitor, , http://www.kemet.com/Lists/ProductCatalog/Attachments/424/KEM_AC102.pdf +CP Axial series Axial Horizontal pin pitch 26mm length 20mm diameter 13mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Axial_L21.0mm_D8.0mm_P28.00mm_Horizontal +CP, Axial series, Axial, Horizontal, pin pitch=28mm, , length*diameter=21*8mm^2, Electrolytic Capacitor +CP Axial series Axial Horizontal pin pitch 28mm length 21mm diameter 8mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Axial_L25.0mm_D10.0mm_P30.00mm_Horizontal +CP, Axial series, Axial, Horizontal, pin pitch=30mm, , length*diameter=25*10mm^2, Electrolytic Capacitor, , http://www.vishay.com/docs/28325/021asm.pdf +CP Axial series Axial Horizontal pin pitch 30mm length 25mm diameter 10mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Axial_L26.5mm_D20.0mm_P33.00mm_Horizontal +CP, Axial series, Axial, Horizontal, pin pitch=33mm, , length*diameter=26.5*20mm^2, Electrolytic Capacitor, , http://www.kemet.com/Lists/ProductCatalog/Attachments/424/KEM_AC102.pdf +CP Axial series Axial Horizontal pin pitch 33mm length 26.5mm diameter 20mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Axial_L29.0mm_D10.0mm_P35.00mm_Horizontal +CP, Axial series, Axial, Horizontal, pin pitch=35mm, , length*diameter=29*10mm^2, Electrolytic Capacitor, , http://www.kemet.com/Lists/ProductCatalog/Attachments/424/KEM_AC102.pdf +CP Axial series Axial Horizontal pin pitch 35mm length 29mm diameter 10mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Axial_L29.0mm_D13.0mm_P35.00mm_Horizontal +CP, Axial series, Axial, Horizontal, pin pitch=35mm, , length*diameter=29*13mm^2, Electrolytic Capacitor, , http://www.kemet.com/Lists/ProductCatalog/Attachments/424/KEM_AC102.pdf +CP Axial series Axial Horizontal pin pitch 35mm length 29mm diameter 13mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Axial_L29.0mm_D16.0mm_P35.00mm_Horizontal +CP, Axial series, Axial, Horizontal, pin pitch=35mm, , length*diameter=29*16mm^2, Electrolytic Capacitor, , http://www.kemet.com/Lists/ProductCatalog/Attachments/424/KEM_AC102.pdf +CP Axial series Axial Horizontal pin pitch 35mm length 29mm diameter 16mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Axial_L29.0mm_D20.0mm_P35.00mm_Horizontal +CP, Axial series, Axial, Horizontal, pin pitch=35mm, , length*diameter=29*20mm^2, Electrolytic Capacitor, , http://www.kemet.com/Lists/ProductCatalog/Attachments/424/KEM_AC102.pdf +CP Axial series Axial Horizontal pin pitch 35mm length 29mm diameter 20mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Axial_L30.0mm_D10.0mm_P35.00mm_Horizontal +CP, Axial series, Axial, Horizontal, pin pitch=35mm, , length*diameter=30*10mm^2, Electrolytic Capacitor, , http://www.vishay.com/docs/28325/021asm.pdf +CP Axial series Axial Horizontal pin pitch 35mm length 30mm diameter 10mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Axial_L30.0mm_D12.5mm_P35.00mm_Horizontal +CP, Axial series, Axial, Horizontal, pin pitch=35mm, , length*diameter=30*12.5mm^2, Electrolytic Capacitor, , http://www.vishay.com/docs/28325/021asm.pdf +CP Axial series Axial Horizontal pin pitch 35mm length 30mm diameter 12.5mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Axial_L30.0mm_D15.0mm_P35.00mm_Horizontal +CP, Axial series, Axial, Horizontal, pin pitch=35mm, , length*diameter=30*15mm^2, Electrolytic Capacitor, , http://www.vishay.com/docs/28325/021asm.pdf +CP Axial series Axial Horizontal pin pitch 35mm length 30mm diameter 15mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Axial_L30.0mm_D18.0mm_P35.00mm_Horizontal +CP, Axial series, Axial, Horizontal, pin pitch=35mm, , length*diameter=30*18mm^2, Electrolytic Capacitor, , http://www.vishay.com/docs/28325/021asm.pdf +CP Axial series Axial Horizontal pin pitch 35mm length 30mm diameter 18mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Axial_L34.5mm_D20.0mm_P41.00mm_Horizontal +CP, Axial series, Axial, Horizontal, pin pitch=41mm, , length*diameter=34.5*20mm^2, Electrolytic Capacitor, , http://www.kemet.com/Lists/ProductCatalog/Attachments/424/KEM_AC102.pdf +CP Axial series Axial Horizontal pin pitch 41mm length 34.5mm diameter 20mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Axial_L37.0mm_D13.0mm_P43.00mm_Horizontal +CP, Axial series, Axial, Horizontal, pin pitch=43mm, , length*diameter=37*13mm^2, Electrolytic Capacitor, , http://www.kemet.com/Lists/ProductCatalog/Attachments/424/KEM_AC102.pdf +CP Axial series Axial Horizontal pin pitch 43mm length 37mm diameter 13mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Axial_L37.0mm_D16.0mm_P43.00mm_Horizontal +CP, Axial series, Axial, Horizontal, pin pitch=43mm, , length*diameter=37*16mm^2, Electrolytic Capacitor, , http://www.kemet.com/Lists/ProductCatalog/Attachments/424/KEM_AC102.pdf +CP Axial series Axial Horizontal pin pitch 43mm length 37mm diameter 16mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Axial_L37.0mm_D20.0mm_P43.00mm_Horizontal +CP, Axial series, Axial, Horizontal, pin pitch=43mm, , length*diameter=37*20mm^2, Electrolytic Capacitor, , http://www.kemet.com/Lists/ProductCatalog/Attachments/424/KEM_AC102.pdf +CP Axial series Axial Horizontal pin pitch 43mm length 37mm diameter 20mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Axial_L38.0mm_D18.0mm_P44.00mm_Horizontal +CP, Axial series, Axial, Horizontal, pin pitch=44mm, , length*diameter=38*18mm^2, Electrolytic Capacitor, , http://www.vishay.com/docs/28325/021asm.pdf +CP Axial series Axial Horizontal pin pitch 44mm length 38mm diameter 18mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Axial_L38.0mm_D21.0mm_P44.00mm_Horizontal +CP, Axial series, Axial, Horizontal, pin pitch=44mm, , length*diameter=38*21mm^2, Electrolytic Capacitor, , http://www.vishay.com/docs/28325/021asm.pdf +CP Axial series Axial Horizontal pin pitch 44mm length 38mm diameter 21mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Axial_L40.0mm_D16.0mm_P48.00mm_Horizontal +CP, Axial series, Axial, Horizontal, pin pitch=48mm, , length*diameter=40*16mm^2, Electrolytic Capacitor +CP Axial series Axial Horizontal pin pitch 48mm length 40mm diameter 16mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Axial_L42.0mm_D23.0mm_P45.00mm_Horizontal +CP, Axial series, Axial, Horizontal, pin pitch=45mm, , length*diameter=42*23.0mm^2, Electrolytic Capacitor, , http://www.vishay.com/docs/42037/53d.pdf +CP Axial series Axial Horizontal pin pitch 45mm length 42mm diameter 23.0mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Axial_L42.0mm_D26.0mm_P45.00mm_Horizontal +CP, Axial series, Axial, Horizontal, pin pitch=45mm, , length*diameter=42*26mm^2, Electrolytic Capacitor, , http://www.vishay.com/docs/42037/53d.pdf +CP Axial series Axial Horizontal pin pitch 45mm length 42mm diameter 26mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Axial_L42.0mm_D29.0mm_P45.00mm_Horizontal +CP, Axial series, Axial, Horizontal, pin pitch=45mm, , length*diameter=42*29.0mm^2, Electrolytic Capacitor, , http://www.vishay.com/docs/42037/53d.pdf +CP Axial series Axial Horizontal pin pitch 45mm length 42mm diameter 29.0mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Axial_L42.0mm_D32.0mm_P45.00mm_Horizontal +CP, Axial series, Axial, Horizontal, pin pitch=45mm, , length*diameter=42*32.0mm^2, Electrolytic Capacitor, , http://www.vishay.com/docs/42037/53d.pdf +CP Axial series Axial Horizontal pin pitch 45mm length 42mm diameter 32.0mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Axial_L42.0mm_D35.0mm_P45.00mm_Horizontal +CP, Axial series, Axial, Horizontal, pin pitch=45mm, , length*diameter=42*35.0mm^2, Electrolytic Capacitor, , http://www.vishay.com/docs/42037/53d.pdf +CP Axial series Axial Horizontal pin pitch 45mm length 42mm diameter 35.0mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Axial_L42.5mm_D20.0mm_P49.00mm_Horizontal +CP, Axial series, Axial, Horizontal, pin pitch=49mm, , length*diameter=42.5*20mm^2, Electrolytic Capacitor +CP Axial series Axial Horizontal pin pitch 49mm length 42.5mm diameter 20mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Axial_L46.0mm_D20.0mm_P52.00mm_Horizontal +CP, Axial series, Axial, Horizontal, pin pitch=52mm, , length*diameter=46*20mm^2, Electrolytic Capacitor +CP Axial series Axial Horizontal pin pitch 52mm length 46mm diameter 20mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Axial_L55.0mm_D23.0mm_P60.00mm_Horizontal +CP, Axial series, Axial, Horizontal, pin pitch=60mm, , length*diameter=55*23.0mm^2, Electrolytic Capacitor, , http://www.vishay.com/docs/42037/53d.pdf +CP Axial series Axial Horizontal pin pitch 60mm length 55mm diameter 23.0mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Axial_L55.0mm_D26.0mm_P60.00mm_Horizontal +CP, Axial series, Axial, Horizontal, pin pitch=60mm, , length*diameter=55*26mm^2, Electrolytic Capacitor, , http://www.vishay.com/docs/42037/53d.pdf +CP Axial series Axial Horizontal pin pitch 60mm length 55mm diameter 26mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Axial_L55.0mm_D29.0mm_P60.00mm_Horizontal +CP, Axial series, Axial, Horizontal, pin pitch=60mm, , length*diameter=55*29.0mm^2, Electrolytic Capacitor, , http://www.vishay.com/docs/42037/53d.pdf +CP Axial series Axial Horizontal pin pitch 60mm length 55mm diameter 29.0mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Axial_L55.0mm_D32.0mm_P60.00mm_Horizontal +CP, Axial series, Axial, Horizontal, pin pitch=60mm, , length*diameter=55*32.0mm^2, Electrolytic Capacitor, , http://www.vishay.com/docs/42037/53d.pdf +CP Axial series Axial Horizontal pin pitch 60mm length 55mm diameter 32.0mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Axial_L55.0mm_D35.0mm_P60.00mm_Horizontal +CP, Axial series, Axial, Horizontal, pin pitch=60mm, , length*diameter=55*35.0mm^2, Electrolytic Capacitor, , http://www.vishay.com/docs/42037/53d.pdf +CP Axial series Axial Horizontal pin pitch 60mm length 55mm diameter 35.0mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Axial_L67.0mm_D23.0mm_P75.00mm_Horizontal +CP, Axial series, Axial, Horizontal, pin pitch=75mm, , length*diameter=67*23.0mm^2, Electrolytic Capacitor, , http://www.vishay.com/docs/42037/53d.pdf +CP Axial series Axial Horizontal pin pitch 75mm length 67mm diameter 23.0mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Axial_L67.0mm_D26.0mm_P75.00mm_Horizontal +CP, Axial series, Axial, Horizontal, pin pitch=75mm, , length*diameter=67*26mm^2, Electrolytic Capacitor, , http://www.vishay.com/docs/42037/53d.pdf +CP Axial series Axial Horizontal pin pitch 75mm length 67mm diameter 26mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Axial_L67.0mm_D29.0mm_P75.00mm_Horizontal +CP, Axial series, Axial, Horizontal, pin pitch=75mm, , length*diameter=67*29.0mm^2, Electrolytic Capacitor, , http://www.vishay.com/docs/42037/53d.pdf +CP Axial series Axial Horizontal pin pitch 75mm length 67mm diameter 29.0mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Axial_L67.0mm_D32.0mm_P75.00mm_Horizontal +CP, Axial series, Axial, Horizontal, pin pitch=75mm, , length*diameter=67*32.0mm^2, Electrolytic Capacitor, , http://www.vishay.com/docs/42037/53d.pdf +CP Axial series Axial Horizontal pin pitch 75mm length 67mm diameter 32.0mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Axial_L67.0mm_D35.0mm_P75.00mm_Horizontal +CP, Axial series, Axial, Horizontal, pin pitch=75mm, , length*diameter=67*35.0mm^2, Electrolytic Capacitor, , http://www.vishay.com/docs/42037/53d.pdf +CP Axial series Axial Horizontal pin pitch 75mm length 67mm diameter 35.0mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Axial_L80.0mm_D23.0mm_P85.00mm_Horizontal +CP, Axial series, Axial, Horizontal, pin pitch=85mm, , length*diameter=80*23.0mm^2, Electrolytic Capacitor, , http://www.vishay.com/docs/42037/53d.pdf +CP Axial series Axial Horizontal pin pitch 85mm length 80mm diameter 23.0mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Axial_L80.0mm_D26.0mm_P85.00mm_Horizontal +CP, Axial series, Axial, Horizontal, pin pitch=85mm, , length*diameter=80*26mm^2, Electrolytic Capacitor, , http://www.vishay.com/docs/42037/53d.pdf +CP Axial series Axial Horizontal pin pitch 85mm length 80mm diameter 26mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Axial_L80.0mm_D29.0mm_P85.00mm_Horizontal +CP, Axial series, Axial, Horizontal, pin pitch=85mm, , length*diameter=80*29.0mm^2, Electrolytic Capacitor, , http://www.vishay.com/docs/42037/53d.pdf +CP Axial series Axial Horizontal pin pitch 85mm length 80mm diameter 29.0mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Axial_L80.0mm_D32.0mm_P85.00mm_Horizontal +CP, Axial series, Axial, Horizontal, pin pitch=85mm, , length*diameter=80*32.0mm^2, Electrolytic Capacitor, , http://www.vishay.com/docs/42037/53d.pdf +CP Axial series Axial Horizontal pin pitch 85mm length 80mm diameter 32.0mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Axial_L80.0mm_D35.0mm_P85.00mm_Horizontal +CP, Axial series, Axial, Horizontal, pin pitch=85mm, , length*diameter=80*35.0mm^2, Electrolytic Capacitor, , http://www.vishay.com/docs/42037/53d.pdf +CP Axial series Axial Horizontal pin pitch 85mm length 80mm diameter 35.0mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Axial_L93.0mm_D23.0mm_P100.00mm_Horizontal +CP, Axial series, Axial, Horizontal, pin pitch=100mm, , length*diameter=93*23.0mm^2, Electrolytic Capacitor, , http://www.vishay.com/docs/42037/53d.pdf +CP Axial series Axial Horizontal pin pitch 100mm length 93mm diameter 23.0mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Axial_L93.0mm_D26.0mm_P100.00mm_Horizontal +CP, Axial series, Axial, Horizontal, pin pitch=100mm, , length*diameter=93*26mm^2, Electrolytic Capacitor, , http://www.vishay.com/docs/42037/53d.pdf +CP Axial series Axial Horizontal pin pitch 100mm length 93mm diameter 26mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Axial_L93.0mm_D29.0mm_P100.00mm_Horizontal +CP, Axial series, Axial, Horizontal, pin pitch=100mm, , length*diameter=93*29.0mm^2, Electrolytic Capacitor, , http://www.vishay.com/docs/42037/53d.pdf +CP Axial series Axial Horizontal pin pitch 100mm length 93mm diameter 29.0mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Axial_L93.0mm_D32.0mm_P100.00mm_Horizontal +CP, Axial series, Axial, Horizontal, pin pitch=100mm, , length*diameter=93*32.0mm^2, Electrolytic Capacitor, , http://www.vishay.com/docs/42037/53d.pdf +CP Axial series Axial Horizontal pin pitch 100mm length 93mm diameter 32.0mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Axial_L93.0mm_D35.0mm_P100.00mm_Horizontal +CP, Axial series, Axial, Horizontal, pin pitch=100mm, , length*diameter=93*35.0mm^2, Electrolytic Capacitor, , http://www.vishay.com/docs/42037/53d.pdf +CP Axial series Axial Horizontal pin pitch 100mm length 93mm diameter 35.0mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Radial_D4.0mm_P1.50mm +CP, Radial series, Radial, pin pitch=1.50mm, , diameter=4mm, Electrolytic Capacitor +CP Radial series Radial pin pitch 1.50mm diameter 4mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Radial_D4.0mm_P2.00mm +CP, Radial series, Radial, pin pitch=2.00mm, , diameter=4mm, Electrolytic Capacitor +CP Radial series Radial pin pitch 2.00mm diameter 4mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Radial_D5.0mm_P2.00mm +CP, Radial series, Radial, pin pitch=2.00mm, , diameter=5mm, Electrolytic Capacitor +CP Radial series Radial pin pitch 2.00mm diameter 5mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Radial_D5.0mm_P2.50mm +CP, Radial series, Radial, pin pitch=2.50mm, , diameter=5mm, Electrolytic Capacitor +CP Radial series Radial pin pitch 2.50mm diameter 5mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Radial_D6.3mm_P2.50mm +CP, Radial series, Radial, pin pitch=2.50mm, , diameter=6.3mm, Electrolytic Capacitor +CP Radial series Radial pin pitch 2.50mm diameter 6.3mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Radial_D7.5mm_P2.50mm +CP, Radial series, Radial, pin pitch=2.50mm, , diameter=7.5mm, Electrolytic Capacitor +CP Radial series Radial pin pitch 2.50mm diameter 7.5mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Radial_D8.0mm_P2.50mm +CP, Radial series, Radial, pin pitch=2.50mm, , diameter=8mm, Electrolytic Capacitor +CP Radial series Radial pin pitch 2.50mm diameter 8mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Radial_D8.0mm_P3.50mm +CP, Radial series, Radial, pin pitch=3.50mm, , diameter=8mm, Electrolytic Capacitor +CP Radial series Radial pin pitch 3.50mm diameter 8mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Radial_D8.0mm_P3.80mm +CP, Radial series, Radial, pin pitch=3.80mm, , diameter=8mm, Electrolytic Capacitor +CP Radial series Radial pin pitch 3.80mm diameter 8mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Radial_D8.0mm_P5.00mm +CP, Radial series, Radial, pin pitch=5.00mm, , diameter=8mm, Electrolytic Capacitor +CP Radial series Radial pin pitch 5.00mm diameter 8mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Radial_D10.0mm_P2.50mm +CP, Radial series, Radial, pin pitch=2.50mm, , diameter=10mm, Electrolytic Capacitor +CP Radial series Radial pin pitch 2.50mm diameter 10mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Radial_D10.0mm_P2.50mm_P5.00mm +CP, Radial series, Radial, pin pitch=2.50mm 5.00mm, , diameter=10mm, Electrolytic Capacitor +CP Radial series Radial pin pitch 2.50mm 5.00mm diameter 10mm Electrolytic Capacitor +0 +4 +2 +Capacitor_THT +CP_Radial_D10.0mm_P3.50mm +CP, Radial series, Radial, pin pitch=3.50mm, , diameter=10mm, Electrolytic Capacitor +CP Radial series Radial pin pitch 3.50mm diameter 10mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Radial_D10.0mm_P3.80mm +CP, Radial series, Radial, pin pitch=3.80mm, , diameter=10mm, Electrolytic Capacitor +CP Radial series Radial pin pitch 3.80mm diameter 10mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Radial_D10.0mm_P5.00mm +CP, Radial series, Radial, pin pitch=5.00mm, , diameter=10mm, Electrolytic Capacitor +CP Radial series Radial pin pitch 5.00mm diameter 10mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Radial_D10.0mm_P5.00mm_P7.50mm +CP, Radial series, Radial, pin pitch=5.00mm 7.50mm, , diameter=10mm, Electrolytic Capacitor +CP Radial series Radial pin pitch 5.00mm 7.50mm diameter 10mm Electrolytic Capacitor +0 +4 +2 +Capacitor_THT +CP_Radial_D10.0mm_P7.50mm +CP, Radial series, Radial, pin pitch=7.50mm, , diameter=10mm, Electrolytic Capacitor +CP Radial series Radial pin pitch 7.50mm diameter 10mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Radial_D12.5mm_P2.50mm +CP, Radial series, Radial, pin pitch=2.50mm, , diameter=12.5mm, Electrolytic Capacitor +CP Radial series Radial pin pitch 2.50mm diameter 12.5mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Radial_D12.5mm_P5.00mm +CP, Radial series, Radial, pin pitch=5.00mm, , diameter=12.5mm, Electrolytic Capacitor +CP Radial series Radial pin pitch 5.00mm diameter 12.5mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Radial_D12.5mm_P7.50mm +CP, Radial series, Radial, pin pitch=7.50mm, , diameter=12.5mm, Electrolytic Capacitor +CP Radial series Radial pin pitch 7.50mm diameter 12.5mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Radial_D13.0mm_P2.50mm +CP, Radial series, Radial, pin pitch=2.50mm, , diameter=13mm, Electrolytic Capacitor +CP Radial series Radial pin pitch 2.50mm diameter 13mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Radial_D13.0mm_P5.00mm +CP, Radial series, Radial, pin pitch=5.00mm, , diameter=13mm, Electrolytic Capacitor +CP Radial series Radial pin pitch 5.00mm diameter 13mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Radial_D13.0mm_P7.50mm +CP, Radial series, Radial, pin pitch=7.50mm, , diameter=13mm, Electrolytic Capacitor +CP Radial series Radial pin pitch 7.50mm diameter 13mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Radial_D14.0mm_P5.00mm +CP, Radial series, Radial, pin pitch=5.00mm, , diameter=14mm, Electrolytic Capacitor +CP Radial series Radial pin pitch 5.00mm diameter 14mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Radial_D14.0mm_P7.50mm +CP, Radial series, Radial, pin pitch=7.50mm, , diameter=14mm, Electrolytic Capacitor +CP Radial series Radial pin pitch 7.50mm diameter 14mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Radial_D16.0mm_P7.50mm +CP, Radial series, Radial, pin pitch=7.50mm, , diameter=16mm, Electrolytic Capacitor +CP Radial series Radial pin pitch 7.50mm diameter 16mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Radial_D17.0mm_P7.50mm +CP, Radial series, Radial, pin pitch=7.50mm, , diameter=17mm, Electrolytic Capacitor +CP Radial series Radial pin pitch 7.50mm diameter 17mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Radial_D18.0mm_P7.50mm +CP, Radial series, Radial, pin pitch=7.50mm, , diameter=18mm, Electrolytic Capacitor +CP Radial series Radial pin pitch 7.50mm diameter 18mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Radial_D22.0mm_P10.00mm_3pin_SnapIn +CP, Radial series, Radial, pin pitch=10.00mm, , diameter=22mm, Electrolytic Capacitor, , http://www.vishay.com/docs/28342/058059pll-si.pdf +CP Radial series Radial pin pitch 10.00mm diameter 22mm Electrolytic Capacitor +0 +3 +2 +Capacitor_THT +CP_Radial_D22.0mm_P10.00mm_SnapIn +CP, Radial series, Radial, pin pitch=10.00mm, , diameter=22mm, Electrolytic Capacitor, , http://www.vishay.com/docs/28342/058059pll-si.pdf +CP Radial series Radial pin pitch 10.00mm diameter 22mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Radial_D24.0mm_P10.00mm_3pin_SnapIn +CP, Radial series, Radial, pin pitch=10.00mm, , diameter=24mm, Electrolytic Capacitor, , http://www.vishay.com/docs/28342/058059pll-si.pdf +CP Radial series Radial pin pitch 10.00mm diameter 24mm Electrolytic Capacitor +0 +3 +2 +Capacitor_THT +CP_Radial_D24.0mm_P10.00mm_SnapIn +CP, Radial series, Radial, pin pitch=10.00mm, , diameter=24mm, Electrolytic Capacitor, , http://www.vishay.com/docs/28342/058059pll-si.pdf +CP Radial series Radial pin pitch 10.00mm diameter 24mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Radial_D25.0mm_P10.00mm_3pin_SnapIn +CP, Radial series, Radial, pin pitch=10.00mm, , diameter=25mm, Electrolytic Capacitor, , http://www.vishay.com/docs/28342/058059pll-si.pdf +CP Radial series Radial pin pitch 10.00mm diameter 25mm Electrolytic Capacitor +0 +3 +2 +Capacitor_THT +CP_Radial_D25.0mm_P10.00mm_SnapIn +CP, Radial series, Radial, pin pitch=10.00mm, , diameter=25mm, Electrolytic Capacitor, , http://www.vishay.com/docs/28342/058059pll-si.pdf +CP Radial series Radial pin pitch 10.00mm diameter 25mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Radial_D26.0mm_P10.00mm_3pin_SnapIn +CP, Radial series, Radial, pin pitch=10.00mm, , diameter=26mm, Electrolytic Capacitor, , http://www.vishay.com/docs/28342/058059pll-si.pdf +CP Radial series Radial pin pitch 10.00mm diameter 26mm Electrolytic Capacitor +0 +3 +2 +Capacitor_THT +CP_Radial_D26.0mm_P10.00mm_SnapIn +CP, Radial series, Radial, pin pitch=10.00mm, , diameter=26mm, Electrolytic Capacitor, , http://www.vishay.com/docs/28342/058059pll-si.pdf +CP Radial series Radial pin pitch 10.00mm diameter 26mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Radial_D30.0mm_P10.00mm_3pin_SnapIn +CP, Radial series, Radial, pin pitch=10.00mm, , diameter=30mm, Electrolytic Capacitor, , http://www.vishay.com/docs/28342/058059pll-si.pdf +CP Radial series Radial pin pitch 10.00mm diameter 30mm Electrolytic Capacitor +0 +3 +2 +Capacitor_THT +CP_Radial_D30.0mm_P10.00mm_SnapIn +CP, Radial series, Radial, pin pitch=10.00mm, , diameter=30mm, Electrolytic Capacitor, , http://www.vishay.com/docs/28342/058059pll-si.pdf +CP Radial series Radial pin pitch 10.00mm diameter 30mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Radial_D35.0mm_P10.00mm_3pin_SnapIn +CP, Radial series, Radial, pin pitch=10.00mm, , diameter=35mm, Electrolytic Capacitor, , http://www.vishay.com/docs/28342/058059pll-si.pdf +CP Radial series Radial pin pitch 10.00mm diameter 35mm Electrolytic Capacitor +0 +3 +2 +Capacitor_THT +CP_Radial_D35.0mm_P10.00mm_SnapIn +CP, Radial series, Radial, pin pitch=10.00mm, , diameter=35mm, Electrolytic Capacitor, , http://www.vishay.com/docs/28342/058059pll-si.pdf +CP Radial series Radial pin pitch 10.00mm diameter 35mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Radial_D40.0mm_P10.00mm_3pin_SnapIn +CP, Radial series, Radial, pin pitch=10.00mm, , diameter=40mm, Electrolytic Capacitor, , http://www.vishay.com/docs/28342/058059pll-si.pdf +CP Radial series Radial pin pitch 10.00mm diameter 40mm Electrolytic Capacitor +0 +3 +2 +Capacitor_THT +CP_Radial_D40.0mm_P10.00mm_SnapIn +CP, Radial series, Radial, pin pitch=10.00mm, , diameter=40mm, Electrolytic Capacitor, , http://www.vishay.com/docs/28342/058059pll-si.pdf +CP Radial series Radial pin pitch 10.00mm diameter 40mm Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Radial_Tantal_D4.5mm_P2.50mm +CP, Radial_Tantal series, Radial, pin pitch=2.50mm, , diameter=4.5mm, Tantal Electrolytic Capacitor, http://cdn-reichelt.de/documents/datenblatt/B300/TANTAL-TB-Serie%23.pdf +CP Radial_Tantal series Radial pin pitch 2.50mm diameter 4.5mm Tantal Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Radial_Tantal_D4.5mm_P5.00mm +CP, Radial_Tantal series, Radial, pin pitch=5.00mm, , diameter=4.5mm, Tantal Electrolytic Capacitor, http://cdn-reichelt.de/documents/datenblatt/B300/TANTAL-TB-Serie%23.pdf +CP Radial_Tantal series Radial pin pitch 5.00mm diameter 4.5mm Tantal Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Radial_Tantal_D5.0mm_P2.50mm +CP, Radial_Tantal series, Radial, pin pitch=2.50mm, , diameter=5.0mm, Tantal Electrolytic Capacitor, http://cdn-reichelt.de/documents/datenblatt/B300/TANTAL-TB-Serie%23.pdf +CP Radial_Tantal series Radial pin pitch 2.50mm diameter 5.0mm Tantal Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Radial_Tantal_D5.0mm_P5.00mm +CP, Radial_Tantal series, Radial, pin pitch=5.00mm, , diameter=5.0mm, Tantal Electrolytic Capacitor, http://cdn-reichelt.de/documents/datenblatt/B300/TANTAL-TB-Serie%23.pdf +CP Radial_Tantal series Radial pin pitch 5.00mm diameter 5.0mm Tantal Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Radial_Tantal_D5.5mm_P2.50mm +CP, Radial_Tantal series, Radial, pin pitch=2.50mm, , diameter=5.5mm, Tantal Electrolytic Capacitor, http://cdn-reichelt.de/documents/datenblatt/B300/TANTAL-TB-Serie%23.pdf +CP Radial_Tantal series Radial pin pitch 2.50mm diameter 5.5mm Tantal Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Radial_Tantal_D5.5mm_P5.00mm +CP, Radial_Tantal series, Radial, pin pitch=5.00mm, , diameter=5.5mm, Tantal Electrolytic Capacitor, http://cdn-reichelt.de/documents/datenblatt/B300/TANTAL-TB-Serie%23.pdf +CP Radial_Tantal series Radial pin pitch 5.00mm diameter 5.5mm Tantal Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Radial_Tantal_D6.0mm_P2.50mm +CP, Radial_Tantal series, Radial, pin pitch=2.50mm, , diameter=6.0mm, Tantal Electrolytic Capacitor, http://cdn-reichelt.de/documents/datenblatt/B300/TANTAL-TB-Serie%23.pdf +CP Radial_Tantal series Radial pin pitch 2.50mm diameter 6.0mm Tantal Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Radial_Tantal_D6.0mm_P5.00mm +CP, Radial_Tantal series, Radial, pin pitch=5.00mm, , diameter=6.0mm, Tantal Electrolytic Capacitor, http://cdn-reichelt.de/documents/datenblatt/B300/TANTAL-TB-Serie%23.pdf +CP Radial_Tantal series Radial pin pitch 5.00mm diameter 6.0mm Tantal Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Radial_Tantal_D7.0mm_P2.50mm +CP, Radial_Tantal series, Radial, pin pitch=2.50mm, , diameter=7.0mm, Tantal Electrolytic Capacitor, http://cdn-reichelt.de/documents/datenblatt/B300/TANTAL-TB-Serie%23.pdf +CP Radial_Tantal series Radial pin pitch 2.50mm diameter 7.0mm Tantal Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Radial_Tantal_D7.0mm_P5.00mm +CP, Radial_Tantal series, Radial, pin pitch=5.00mm, , diameter=7.0mm, Tantal Electrolytic Capacitor, http://cdn-reichelt.de/documents/datenblatt/B300/TANTAL-TB-Serie%23.pdf +CP Radial_Tantal series Radial pin pitch 5.00mm diameter 7.0mm Tantal Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Radial_Tantal_D8.0mm_P2.50mm +CP, Radial_Tantal series, Radial, pin pitch=2.50mm, , diameter=8.0mm, Tantal Electrolytic Capacitor, http://cdn-reichelt.de/documents/datenblatt/B300/TANTAL-TB-Serie%23.pdf +CP Radial_Tantal series Radial pin pitch 2.50mm diameter 8.0mm Tantal Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Radial_Tantal_D8.0mm_P5.00mm +CP, Radial_Tantal series, Radial, pin pitch=5.00mm, , diameter=8.0mm, Tantal Electrolytic Capacitor, http://cdn-reichelt.de/documents/datenblatt/B300/TANTAL-TB-Serie%23.pdf +CP Radial_Tantal series Radial pin pitch 5.00mm diameter 8.0mm Tantal Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Radial_Tantal_D9.0mm_P2.50mm +CP, Radial_Tantal series, Radial, pin pitch=2.50mm, , diameter=9.0mm, Tantal Electrolytic Capacitor, http://cdn-reichelt.de/documents/datenblatt/B300/TANTAL-TB-Serie%23.pdf +CP Radial_Tantal series Radial pin pitch 2.50mm diameter 9.0mm Tantal Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Radial_Tantal_D9.0mm_P5.00mm +CP, Radial_Tantal series, Radial, pin pitch=5.00mm, , diameter=9.0mm, Tantal Electrolytic Capacitor, http://cdn-reichelt.de/documents/datenblatt/B300/TANTAL-TB-Serie%23.pdf +CP Radial_Tantal series Radial pin pitch 5.00mm diameter 9.0mm Tantal Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Radial_Tantal_D10.5mm_P2.50mm +CP, Radial_Tantal series, Radial, pin pitch=2.50mm, , diameter=10.5mm, Tantal Electrolytic Capacitor, http://cdn-reichelt.de/documents/datenblatt/B300/TANTAL-TB-Serie%23.pdf +CP Radial_Tantal series Radial pin pitch 2.50mm diameter 10.5mm Tantal Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +CP_Radial_Tantal_D10.5mm_P5.00mm +CP, Radial_Tantal series, Radial, pin pitch=5.00mm, , diameter=10.5mm, Tantal Electrolytic Capacitor, http://cdn-reichelt.de/documents/datenblatt/B300/TANTAL-TB-Serie%23.pdf +CP Radial_Tantal series Radial pin pitch 5.00mm diameter 10.5mm Tantal Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +C_Axial_L3.8mm_D2.6mm_P7.50mm_Horizontal +C, Axial series, Axial, Horizontal, pin pitch=7.5mm, , length*diameter=3.8*2.6mm^2, http://www.vishay.com/docs/45231/arseries.pdf +C Axial series Axial Horizontal pin pitch 7.5mm length 3.8mm diameter 2.6mm +0 +2 +2 +Capacitor_THT +C_Axial_L3.8mm_D2.6mm_P10.00mm_Horizontal +C, Axial series, Axial, Horizontal, pin pitch=10mm, , length*diameter=3.8*2.6mm^2, http://www.vishay.com/docs/45231/arseries.pdf +C Axial series Axial Horizontal pin pitch 10mm length 3.8mm diameter 2.6mm +0 +2 +2 +Capacitor_THT +C_Axial_L3.8mm_D2.6mm_P12.50mm_Horizontal +C, Axial series, Axial, Horizontal, pin pitch=12.5mm, , length*diameter=3.8*2.6mm^2, http://www.vishay.com/docs/45231/arseries.pdf +C Axial series Axial Horizontal pin pitch 12.5mm length 3.8mm diameter 2.6mm +0 +2 +2 +Capacitor_THT +C_Axial_L3.8mm_D2.6mm_P15.00mm_Horizontal +C, Axial series, Axial, Horizontal, pin pitch=15mm, , length*diameter=3.8*2.6mm^2, http://www.vishay.com/docs/45231/arseries.pdf +C Axial series Axial Horizontal pin pitch 15mm length 3.8mm diameter 2.6mm +0 +2 +2 +Capacitor_THT +C_Axial_L5.1mm_D3.1mm_P7.50mm_Horizontal +C, Axial series, Axial, Horizontal, pin pitch=7.5mm, , length*diameter=5.1*3.1mm^2, http://www.vishay.com/docs/45231/arseries.pdf +C Axial series Axial Horizontal pin pitch 7.5mm length 5.1mm diameter 3.1mm +0 +2 +2 +Capacitor_THT +C_Axial_L5.1mm_D3.1mm_P10.00mm_Horizontal +C, Axial series, Axial, Horizontal, pin pitch=10mm, , length*diameter=5.1*3.1mm^2, http://www.vishay.com/docs/45231/arseries.pdf +C Axial series Axial Horizontal pin pitch 10mm length 5.1mm diameter 3.1mm +0 +2 +2 +Capacitor_THT +C_Axial_L5.1mm_D3.1mm_P12.50mm_Horizontal +C, Axial series, Axial, Horizontal, pin pitch=12.5mm, , length*diameter=5.1*3.1mm^2, http://www.vishay.com/docs/45231/arseries.pdf +C Axial series Axial Horizontal pin pitch 12.5mm length 5.1mm diameter 3.1mm +0 +2 +2 +Capacitor_THT +C_Axial_L5.1mm_D3.1mm_P15.00mm_Horizontal +C, Axial series, Axial, Horizontal, pin pitch=15mm, , length*diameter=5.1*3.1mm^2, http://www.vishay.com/docs/45231/arseries.pdf +C Axial series Axial Horizontal pin pitch 15mm length 5.1mm diameter 3.1mm +0 +2 +2 +Capacitor_THT +C_Axial_L12.0mm_D6.5mm_P15.00mm_Horizontal +C, Axial series, Axial, Horizontal, pin pitch=15mm, , length*diameter=12*6.5mm^2, http://cdn-reichelt.de/documents/datenblatt/B300/STYROFLEX.pdf +C Axial series Axial Horizontal pin pitch 15mm length 12mm diameter 6.5mm +0 +2 +2 +Capacitor_THT +C_Axial_L12.0mm_D6.5mm_P20.00mm_Horizontal +C, Axial series, Axial, Horizontal, pin pitch=20mm, , length*diameter=12*6.5mm^2, http://cdn-reichelt.de/documents/datenblatt/B300/STYROFLEX.pdf +C Axial series Axial Horizontal pin pitch 20mm length 12mm diameter 6.5mm +0 +2 +2 +Capacitor_THT +C_Axial_L12.0mm_D7.5mm_P15.00mm_Horizontal +C, Axial series, Axial, Horizontal, pin pitch=15mm, , length*diameter=12*7.5mm^2, http://cdn-reichelt.de/documents/datenblatt/B300/STYROFLEX.pdf +C Axial series Axial Horizontal pin pitch 15mm length 12mm diameter 7.5mm +0 +2 +2 +Capacitor_THT +C_Axial_L12.0mm_D7.5mm_P20.00mm_Horizontal +C, Axial series, Axial, Horizontal, pin pitch=20mm, , length*diameter=12*7.5mm^2, http://cdn-reichelt.de/documents/datenblatt/B300/STYROFLEX.pdf +C Axial series Axial Horizontal pin pitch 20mm length 12mm diameter 7.5mm +0 +2 +2 +Capacitor_THT +C_Axial_L12.0mm_D8.5mm_P15.00mm_Horizontal +C, Axial series, Axial, Horizontal, pin pitch=15mm, , length*diameter=12*8.5mm^2, http://cdn-reichelt.de/documents/datenblatt/B300/STYROFLEX.pdf +C Axial series Axial Horizontal pin pitch 15mm length 12mm diameter 8.5mm +0 +2 +2 +Capacitor_THT +C_Axial_L12.0mm_D8.5mm_P20.00mm_Horizontal +C, Axial series, Axial, Horizontal, pin pitch=20mm, , length*diameter=12*8.5mm^2, http://cdn-reichelt.de/documents/datenblatt/B300/STYROFLEX.pdf +C Axial series Axial Horizontal pin pitch 20mm length 12mm diameter 8.5mm +0 +2 +2 +Capacitor_THT +C_Axial_L12.0mm_D9.5mm_P15.00mm_Horizontal +C, Axial series, Axial, Horizontal, pin pitch=15mm, , length*diameter=12*9.5mm^2, http://cdn-reichelt.de/documents/datenblatt/B300/STYROFLEX.pdf +C Axial series Axial Horizontal pin pitch 15mm length 12mm diameter 9.5mm +0 +2 +2 +Capacitor_THT +C_Axial_L12.0mm_D9.5mm_P20.00mm_Horizontal +C, Axial series, Axial, Horizontal, pin pitch=20mm, , length*diameter=12*9.5mm^2, http://cdn-reichelt.de/documents/datenblatt/B300/STYROFLEX.pdf +C Axial series Axial Horizontal pin pitch 20mm length 12mm diameter 9.5mm +0 +2 +2 +Capacitor_THT +C_Axial_L12.0mm_D10.5mm_P15.00mm_Horizontal +C, Axial series, Axial, Horizontal, pin pitch=15mm, , length*diameter=12*10.5mm^2, http://cdn-reichelt.de/documents/datenblatt/B300/STYROFLEX.pdf +C Axial series Axial Horizontal pin pitch 15mm length 12mm diameter 10.5mm +0 +2 +2 +Capacitor_THT +C_Axial_L12.0mm_D10.5mm_P20.00mm_Horizontal +C, Axial series, Axial, Horizontal, pin pitch=20mm, , length*diameter=12*10.5mm^2, http://cdn-reichelt.de/documents/datenblatt/B300/STYROFLEX.pdf +C Axial series Axial Horizontal pin pitch 20mm length 12mm diameter 10.5mm +0 +2 +2 +Capacitor_THT +C_Axial_L17.0mm_D6.5mm_P20.00mm_Horizontal +C, Axial series, Axial, Horizontal, pin pitch=20mm, , length*diameter=17*6.5mm^2, http://cdn-reichelt.de/documents/datenblatt/B300/STYROFLEX.pdf +C Axial series Axial Horizontal pin pitch 20mm length 17mm diameter 6.5mm +0 +2 +2 +Capacitor_THT +C_Axial_L17.0mm_D6.5mm_P25.00mm_Horizontal +C, Axial series, Axial, Horizontal, pin pitch=25mm, , length*diameter=17*6.5mm^2, http://cdn-reichelt.de/documents/datenblatt/B300/STYROFLEX.pdf +C Axial series Axial Horizontal pin pitch 25mm length 17mm diameter 6.5mm +0 +2 +2 +Capacitor_THT +C_Axial_L17.0mm_D7.0mm_P20.00mm_Horizontal +C, Axial series, Axial, Horizontal, pin pitch=20mm, , length*diameter=17*7.0mm^2, http://cdn-reichelt.de/documents/datenblatt/B300/STYROFLEX.pdf +C Axial series Axial Horizontal pin pitch 20mm length 17mm diameter 7.0mm +0 +2 +2 +Capacitor_THT +C_Axial_L17.0mm_D7.0mm_P25.00mm_Horizontal +C, Axial series, Axial, Horizontal, pin pitch=25mm, , length*diameter=17*7.0mm^2, http://cdn-reichelt.de/documents/datenblatt/B300/STYROFLEX.pdf +C Axial series Axial Horizontal pin pitch 25mm length 17mm diameter 7.0mm +0 +2 +2 +Capacitor_THT +C_Axial_L19.0mm_D7.5mm_P25.00mm_Horizontal +C, Axial series, Axial, Horizontal, pin pitch=25mm, , length*diameter=19*7.5mm^2, http://cdn-reichelt.de/documents/datenblatt/B300/STYROFLEX.pdf +C Axial series Axial Horizontal pin pitch 25mm length 19mm diameter 7.5mm +0 +2 +2 +Capacitor_THT +C_Axial_L19.0mm_D8.0mm_P25.00mm_Horizontal +C, Axial series, Axial, Horizontal, pin pitch=25mm, , length*diameter=19*8.0mm^2, http://cdn-reichelt.de/documents/datenblatt/B300/STYROFLEX.pdf +C Axial series Axial Horizontal pin pitch 25mm length 19mm diameter 8.0mm +0 +2 +2 +Capacitor_THT +C_Axial_L19.0mm_D9.0mm_P25.00mm_Horizontal +C, Axial series, Axial, Horizontal, pin pitch=25mm, , length*diameter=19*9mm^2, http://cdn-reichelt.de/documents/datenblatt/B300/STYROFLEX.pdf +C Axial series Axial Horizontal pin pitch 25mm length 19mm diameter 9mm +0 +2 +2 +Capacitor_THT +C_Axial_L19.0mm_D9.5mm_P25.00mm_Horizontal +C, Axial series, Axial, Horizontal, pin pitch=25mm, , length*diameter=19*9.5mm^2, http://cdn-reichelt.de/documents/datenblatt/B300/STYROFLEX.pdf +C Axial series Axial Horizontal pin pitch 25mm length 19mm diameter 9.5mm +0 +2 +2 +Capacitor_THT +C_Axial_L22.0mm_D9.5mm_P27.50mm_Horizontal +C, Axial series, Axial, Horizontal, pin pitch=27.5mm, , length*diameter=22*9.5mm^2, http://cdn-reichelt.de/documents/datenblatt/B300/STYROFLEX.pdf +C Axial series Axial Horizontal pin pitch 27.5mm length 22mm diameter 9.5mm +0 +2 +2 +Capacitor_THT +C_Axial_L22.0mm_D10.5mm_P27.50mm_Horizontal +C, Axial series, Axial, Horizontal, pin pitch=27.5mm, , length*diameter=22*10.5mm^2, http://cdn-reichelt.de/documents/datenblatt/B300/STYROFLEX.pdf +C Axial series Axial Horizontal pin pitch 27.5mm length 22mm diameter 10.5mm +0 +2 +2 +Capacitor_THT +C_Disc_D3.0mm_W1.6mm_P2.50mm +C, Disc series, Radial, pin pitch=2.50mm, , diameter*width=3.0*1.6mm^2, Capacitor, http://www.vishay.com/docs/45233/krseries.pdf +C Disc series Radial pin pitch 2.50mm diameter 3.0mm width 1.6mm Capacitor +0 +2 +2 +Capacitor_THT +C_Disc_D3.0mm_W2.0mm_P2.50mm +C, Disc series, Radial, pin pitch=2.50mm, , diameter*width=3*2mm^2, Capacitor +C Disc series Radial pin pitch 2.50mm diameter 3mm width 2mm Capacitor +0 +2 +2 +Capacitor_THT +C_Disc_D3.4mm_W2.1mm_P2.50mm +C, Disc series, Radial, pin pitch=2.50mm, , diameter*width=3.4*2.1mm^2, Capacitor, http://www.vishay.com/docs/45233/krseries.pdf +C Disc series Radial pin pitch 2.50mm diameter 3.4mm width 2.1mm Capacitor +0 +2 +2 +Capacitor_THT +C_Disc_D3.8mm_W2.6mm_P2.50mm +C, Disc series, Radial, pin pitch=2.50mm, , diameter*width=3.8*2.6mm^2, Capacitor, http://www.vishay.com/docs/45233/krseries.pdf +C Disc series Radial pin pitch 2.50mm diameter 3.8mm width 2.6mm Capacitor +0 +2 +2 +Capacitor_THT +C_Disc_D4.3mm_W1.9mm_P5.00mm +C, Disc series, Radial, pin pitch=5.00mm, , diameter*width=4.3*1.9mm^2, Capacitor, http://www.vishay.com/docs/45233/krseries.pdf +C Disc series Radial pin pitch 5.00mm diameter 4.3mm width 1.9mm Capacitor +0 +2 +2 +Capacitor_THT +C_Disc_D4.7mm_W2.5mm_P5.00mm +C, Disc series, Radial, pin pitch=5.00mm, , diameter*width=4.7*2.5mm^2, Capacitor, http://www.vishay.com/docs/45233/krseries.pdf +C Disc series Radial pin pitch 5.00mm diameter 4.7mm width 2.5mm Capacitor +0 +2 +2 +Capacitor_THT +C_Disc_D5.0mm_W2.5mm_P2.50mm +C, Disc series, Radial, pin pitch=2.50mm, , diameter*width=5*2.5mm^2, Capacitor, http://cdn-reichelt.de/documents/datenblatt/B300/DS_KERKO_TC.pdf +C Disc series Radial pin pitch 2.50mm diameter 5mm width 2.5mm Capacitor +0 +2 +2 +Capacitor_THT +C_Disc_D5.0mm_W2.5mm_P5.00mm +C, Disc series, Radial, pin pitch=5.00mm, , diameter*width=5*2.5mm^2, Capacitor, http://cdn-reichelt.de/documents/datenblatt/B300/DS_KERKO_TC.pdf +C Disc series Radial pin pitch 5.00mm diameter 5mm width 2.5mm Capacitor +0 +2 +2 +Capacitor_THT +C_Disc_D5.1mm_W3.2mm_P5.00mm +C, Disc series, Radial, pin pitch=5.00mm, , diameter*width=5.1*3.2mm^2, Capacitor, http://www.vishay.com/docs/45233/krseries.pdf +C Disc series Radial pin pitch 5.00mm diameter 5.1mm width 3.2mm Capacitor +0 +2 +2 +Capacitor_THT +C_Disc_D6.0mm_W2.5mm_P5.00mm +C, Disc series, Radial, pin pitch=5.00mm, , diameter*width=6*2.5mm^2, Capacitor, http://cdn-reichelt.de/documents/datenblatt/B300/DS_KERKO_TC.pdf +C Disc series Radial pin pitch 5.00mm diameter 6mm width 2.5mm Capacitor +0 +2 +2 +Capacitor_THT +C_Disc_D6.0mm_W4.4mm_P5.00mm +C, Disc series, Radial, pin pitch=5.00mm, , diameter*width=6*4.4mm^2, Capacitor +C Disc series Radial pin pitch 5.00mm diameter 6mm width 4.4mm Capacitor +0 +2 +2 +Capacitor_THT +C_Disc_D7.0mm_W2.5mm_P5.00mm +C, Disc series, Radial, pin pitch=5.00mm, , diameter*width=7*2.5mm^2, Capacitor, http://cdn-reichelt.de/documents/datenblatt/B300/DS_KERKO_TC.pdf +C Disc series Radial pin pitch 5.00mm diameter 7mm width 2.5mm Capacitor +0 +2 +2 +Capacitor_THT +C_Disc_D7.5mm_W2.5mm_P5.00mm +C, Disc series, Radial, pin pitch=5.00mm, , diameter*width=7.5*2.5mm^2, Capacitor, http://www.vishay.com/docs/28535/vy2series.pdf +C Disc series Radial pin pitch 5.00mm diameter 7.5mm width 2.5mm Capacitor +0 +2 +2 +Capacitor_THT +C_Disc_D7.5mm_W4.4mm_P5.00mm +C, Disc series, Radial, pin pitch=5.00mm, , diameter*width=7.5*4.4mm^2, Capacitor +C Disc series Radial pin pitch 5.00mm diameter 7.5mm width 4.4mm Capacitor +0 +2 +2 +Capacitor_THT +C_Disc_D7.5mm_W5.0mm_P5.00mm +C, Disc series, Radial, pin pitch=5.00mm, , diameter*width=7.5*5.0mm^2, Capacitor, http://www.vishay.com/docs/28535/vy2series.pdf +C Disc series Radial pin pitch 5.00mm diameter 7.5mm width 5.0mm Capacitor +0 +2 +2 +Capacitor_THT +C_Disc_D7.5mm_W5.0mm_P7.50mm +C, Disc series, Radial, pin pitch=7.50mm, , diameter*width=7.5*5.0mm^2, Capacitor, http://www.vishay.com/docs/28535/vy2series.pdf +C Disc series Radial pin pitch 7.50mm diameter 7.5mm width 5.0mm Capacitor +0 +2 +2 +Capacitor_THT +C_Disc_D7.5mm_W5.0mm_P10.00mm +C, Disc series, Radial, pin pitch=10.00mm, , diameter*width=7.5*5.0mm^2, Capacitor, http://www.vishay.com/docs/28535/vy2series.pdf +C Disc series Radial pin pitch 10.00mm diameter 7.5mm width 5.0mm Capacitor +0 +2 +2 +Capacitor_THT +C_Disc_D8.0mm_W2.5mm_P5.00mm +C, Disc series, Radial, pin pitch=5.00mm, , diameter*width=8*2.5mm^2, Capacitor, http://cdn-reichelt.de/documents/datenblatt/B300/DS_KERKO_TC.pdf +C Disc series Radial pin pitch 5.00mm diameter 8mm width 2.5mm Capacitor +0 +2 +2 +Capacitor_THT +C_Disc_D8.0mm_W5.0mm_P5.00mm +C, Disc series, Radial, pin pitch=5.00mm, , diameter*width=8*5.0mm^2, Capacitor, http://www.vishay.com/docs/28535/vy2series.pdf +C Disc series Radial pin pitch 5.00mm diameter 8mm width 5.0mm Capacitor +0 +2 +2 +Capacitor_THT +C_Disc_D8.0mm_W5.0mm_P7.50mm +C, Disc series, Radial, pin pitch=7.50mm, , diameter*width=8*5.0mm^2, Capacitor, http://www.vishay.com/docs/28535/vy2series.pdf +C Disc series Radial pin pitch 7.50mm diameter 8mm width 5.0mm Capacitor +0 +2 +2 +Capacitor_THT +C_Disc_D8.0mm_W5.0mm_P10.00mm +C, Disc series, Radial, pin pitch=10.00mm, , diameter*width=8*5.0mm^2, Capacitor, http://www.vishay.com/docs/28535/vy2series.pdf +C Disc series Radial pin pitch 10.00mm diameter 8mm width 5.0mm Capacitor +0 +2 +2 +Capacitor_THT +C_Disc_D9.0mm_W2.5mm_P5.00mm +C, Disc series, Radial, pin pitch=5.00mm, , diameter*width=9*2.5mm^2, Capacitor, http://cdn-reichelt.de/documents/datenblatt/B300/DS_KERKO_TC.pdf +C Disc series Radial pin pitch 5.00mm diameter 9mm width 2.5mm Capacitor +0 +2 +2 +Capacitor_THT +C_Disc_D9.0mm_W5.0mm_P5.00mm +C, Disc series, Radial, pin pitch=5.00mm, , diameter*width=9*5.0mm^2, Capacitor, http://www.vishay.com/docs/28535/vy2series.pdf +C Disc series Radial pin pitch 5.00mm diameter 9mm width 5.0mm Capacitor +0 +2 +2 +Capacitor_THT +C_Disc_D9.0mm_W5.0mm_P7.50mm +C, Disc series, Radial, pin pitch=7.50mm, , diameter*width=9*5.0mm^2, Capacitor, http://www.vishay.com/docs/28535/vy2series.pdf +C Disc series Radial pin pitch 7.50mm diameter 9mm width 5.0mm Capacitor +0 +2 +2 +Capacitor_THT +C_Disc_D9.0mm_W5.0mm_P10.00mm +C, Disc series, Radial, pin pitch=10.00mm, , diameter*width=9*5.0mm^2, Capacitor, http://www.vishay.com/docs/28535/vy2series.pdf +C Disc series Radial pin pitch 10.00mm diameter 9mm width 5.0mm Capacitor +0 +2 +2 +Capacitor_THT +C_Disc_D10.0mm_W2.5mm_P5.00mm +C, Disc series, Radial, pin pitch=5.00mm, , diameter*width=10*2.5mm^2, Capacitor, http://cdn-reichelt.de/documents/datenblatt/B300/DS_KERKO_TC.pdf +C Disc series Radial pin pitch 5.00mm diameter 10mm width 2.5mm Capacitor +0 +2 +2 +Capacitor_THT +C_Disc_D10.5mm_W5.0mm_P5.00mm +C, Disc series, Radial, pin pitch=5.00mm, , diameter*width=10.5*5.0mm^2, Capacitor, http://www.vishay.com/docs/28535/vy2series.pdf +C Disc series Radial pin pitch 5.00mm diameter 10.5mm width 5.0mm Capacitor +0 +2 +2 +Capacitor_THT +C_Disc_D10.5mm_W5.0mm_P7.50mm +C, Disc series, Radial, pin pitch=7.50mm, , diameter*width=10.5*5.0mm^2, Capacitor, http://www.vishay.com/docs/28535/vy2series.pdf +C Disc series Radial pin pitch 7.50mm diameter 10.5mm width 5.0mm Capacitor +0 +2 +2 +Capacitor_THT +C_Disc_D10.5mm_W5.0mm_P10.00mm +C, Disc series, Radial, pin pitch=10.00mm, , diameter*width=10.5*5.0mm^2, Capacitor, http://www.vishay.com/docs/28535/vy2series.pdf +C Disc series Radial pin pitch 10.00mm diameter 10.5mm width 5.0mm Capacitor +0 +2 +2 +Capacitor_THT +C_Disc_D11.0mm_W5.0mm_P5.00mm +C, Disc series, Radial, pin pitch=5.00mm, , diameter*width=11*5.0mm^2, Capacitor, http://www.vishay.com/docs/28535/vy2series.pdf +C Disc series Radial pin pitch 5.00mm diameter 11mm width 5.0mm Capacitor +0 +2 +2 +Capacitor_THT +C_Disc_D11.0mm_W5.0mm_P7.50mm +C, Disc series, Radial, pin pitch=7.50mm, , diameter*width=11*5.0mm^2, Capacitor, http://www.vishay.com/docs/28535/vy2series.pdf +C Disc series Radial pin pitch 7.50mm diameter 11mm width 5.0mm Capacitor +0 +2 +2 +Capacitor_THT +C_Disc_D11.0mm_W5.0mm_P10.00mm +C, Disc series, Radial, pin pitch=10.00mm, , diameter*width=11*5.0mm^2, Capacitor, http://www.vishay.com/docs/28535/vy2series.pdf +C Disc series Radial pin pitch 10.00mm diameter 11mm width 5.0mm Capacitor +0 +2 +2 +Capacitor_THT +C_Disc_D12.0mm_W4.4mm_P7.75mm +C, Disc series, Radial, pin pitch=7.75mm, , diameter*width=12*4.4mm^2, Capacitor +C Disc series Radial pin pitch 7.75mm diameter 12mm width 4.4mm Capacitor +0 +2 +2 +Capacitor_THT +C_Disc_D12.5mm_W5.0mm_P7.50mm +C, Disc series, Radial, pin pitch=7.50mm, , diameter*width=12.5*5.0mm^2, Capacitor, http://www.vishay.com/docs/28535/vy2series.pdf +C Disc series Radial pin pitch 7.50mm diameter 12.5mm width 5.0mm Capacitor +0 +2 +2 +Capacitor_THT +C_Disc_D12.5mm_W5.0mm_P10.00mm +C, Disc series, Radial, pin pitch=10.00mm, , diameter*width=12.5*5.0mm^2, Capacitor, http://www.vishay.com/docs/28535/vy2series.pdf +C Disc series Radial pin pitch 10.00mm diameter 12.5mm width 5.0mm Capacitor +0 +2 +2 +Capacitor_THT +C_Disc_D14.5mm_W5.0mm_P7.50mm +C, Disc series, Radial, pin pitch=7.50mm, , diameter*width=14.5*5.0mm^2, Capacitor, http://www.vishay.com/docs/28535/vy2series.pdf +C Disc series Radial pin pitch 7.50mm diameter 14.5mm width 5.0mm Capacitor +0 +2 +2 +Capacitor_THT +C_Disc_D14.5mm_W5.0mm_P10.00mm +C, Disc series, Radial, pin pitch=10.00mm, , diameter*width=14.5*5.0mm^2, Capacitor, http://www.vishay.com/docs/28535/vy2series.pdf +C Disc series Radial pin pitch 10.00mm diameter 14.5mm width 5.0mm Capacitor +0 +2 +2 +Capacitor_THT +C_Disc_D16.0mm_W5.0mm_P7.50mm +C, Disc series, Radial, pin pitch=7.50mm, , diameter*width=16.0*5.0mm^2, Capacitor, http://www.vishay.com/docs/28535/vy2series.pdf +C Disc series Radial pin pitch 7.50mm diameter 16.0mm width 5.0mm Capacitor +0 +2 +2 +Capacitor_THT +C_Disc_D16.0mm_W5.0mm_P10.00mm +C, Disc series, Radial, pin pitch=10.00mm, , diameter*width=16.0*5.0mm^2, Capacitor, http://www.vishay.com/docs/28535/vy2series.pdf +C Disc series Radial pin pitch 10.00mm diameter 16.0mm width 5.0mm Capacitor +0 +2 +2 +Capacitor_THT +C_Radial_D4.0mm_H5.0mm_P1.50mm +C, Radial series, Radial, pin pitch=1.50mm, diameter=4mm, height=5mm, Non-Polar Electrolytic Capacitor +C Radial series Radial pin pitch 1.50mm diameter 4mm height 5mm Non-Polar Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +C_Radial_D4.0mm_H7.0mm_P1.50mm +C, Radial series, Radial, pin pitch=1.50mm, diameter=4mm, height=7mm, Non-Polar Electrolytic Capacitor +C Radial series Radial pin pitch 1.50mm diameter 4mm height 7mm Non-Polar Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +C_Radial_D5.0mm_H5.0mm_P2.00mm +C, Radial series, Radial, pin pitch=2.00mm, diameter=5mm, height=5mm, Non-Polar Electrolytic Capacitor +C Radial series Radial pin pitch 2.00mm diameter 5mm height 5mm Non-Polar Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +C_Radial_D5.0mm_H7.0mm_P2.00mm +C, Radial series, Radial, pin pitch=2.00mm, diameter=5mm, height=7mm, Non-Polar Electrolytic Capacitor +C Radial series Radial pin pitch 2.00mm diameter 5mm height 7mm Non-Polar Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +C_Radial_D5.0mm_H11.0mm_P2.00mm +C, Radial series, Radial, pin pitch=2.00mm, diameter=5mm, height=11mm, Non-Polar Electrolytic Capacitor +C Radial series Radial pin pitch 2.00mm diameter 5mm height 11mm Non-Polar Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +C_Radial_D6.3mm_H5.0mm_P2.50mm +C, Radial series, Radial, pin pitch=2.50mm, diameter=6.3mm, height=5mm, Non-Polar Electrolytic Capacitor +C Radial series Radial pin pitch 2.50mm diameter 6.3mm height 5mm Non-Polar Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +C_Radial_D6.3mm_H7.0mm_P2.50mm +C, Radial series, Radial, pin pitch=2.50mm, diameter=6.3mm, height=7mm, Non-Polar Electrolytic Capacitor +C Radial series Radial pin pitch 2.50mm diameter 6.3mm height 7mm Non-Polar Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +C_Radial_D6.3mm_H11.0mm_P2.50mm +C, Radial series, Radial, pin pitch=2.50mm, diameter=6.3mm, height=11mm, Non-Polar Electrolytic Capacitor +C Radial series Radial pin pitch 2.50mm diameter 6.3mm height 11mm Non-Polar Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +C_Radial_D8.0mm_H7.0mm_P3.50mm +C, Radial series, Radial, pin pitch=3.50mm, diameter=8mm, height=7mm, Non-Polar Electrolytic Capacitor +C Radial series Radial pin pitch 3.50mm diameter 8mm height 7mm Non-Polar Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +C_Radial_D8.0mm_H11.5mm_P3.50mm +C, Radial series, Radial, pin pitch=3.50mm, diameter=8mm, height=11.5mm, Non-Polar Electrolytic Capacitor +C Radial series Radial pin pitch 3.50mm diameter 8mm height 11.5mm Non-Polar Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +C_Radial_D10.0mm_H12.5mm_P5.00mm +C, Radial series, Radial, pin pitch=5.00mm, diameter=10mm, height=12.5mm, Non-Polar Electrolytic Capacitor +C Radial series Radial pin pitch 5.00mm diameter 10mm height 12.5mm Non-Polar Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +C_Radial_D10.0mm_H16.0mm_P5.00mm +C, Radial series, Radial, pin pitch=5.00mm, diameter=10mm, height=16mm, Non-Polar Electrolytic Capacitor +C Radial series Radial pin pitch 5.00mm diameter 10mm height 16mm Non-Polar Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +C_Radial_D10.0mm_H20.0mm_P5.00mm +C, Radial series, Radial, pin pitch=5.00mm, diameter=10mm, height=20mm, Non-Polar Electrolytic Capacitor +C Radial series Radial pin pitch 5.00mm diameter 10mm height 20mm Non-Polar Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +C_Radial_D12.5mm_H20.0mm_P5.00mm +C, Radial series, Radial, pin pitch=5.00mm, diameter=12.5mm, height=20mm, Non-Polar Electrolytic Capacitor +C Radial series Radial pin pitch 5.00mm diameter 12.5mm height 20mm Non-Polar Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +C_Radial_D12.5mm_H25.0mm_P5.00mm +C, Radial series, Radial, pin pitch=5.00mm, diameter=12.5mm, height=25mm, Non-Polar Electrolytic Capacitor +C Radial series Radial pin pitch 5.00mm diameter 12.5mm height 25mm Non-Polar Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +C_Radial_D16.0mm_H25.0mm_P7.50mm +C, Radial series, Radial, pin pitch=7.50mm, diameter=16mm, height=25mm, Non-Polar Electrolytic Capacitor +C Radial series Radial pin pitch 7.50mm diameter 16mm height 25mm Non-Polar Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +C_Radial_D16.0mm_H31.5mm_P7.50mm +C, Radial series, Radial, pin pitch=7.50mm, diameter=16mm, height=31.5mm, Non-Polar Electrolytic Capacitor +C Radial series Radial pin pitch 7.50mm diameter 16mm height 31.5mm Non-Polar Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +C_Radial_D18.0mm_H35.5mm_P7.50mm +C, Radial series, Radial, pin pitch=7.50mm, diameter=18mm, height=35.5mm, Non-Polar Electrolytic Capacitor +C Radial series Radial pin pitch 7.50mm diameter 18mm height 35.5mm Non-Polar Electrolytic Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L4.0mm_W2.5mm_P2.50mm +C, Rect series, Radial, pin pitch=2.50mm, , length*width=4*2.5mm^2, Capacitor +C Rect series Radial pin pitch 2.50mm length 4mm width 2.5mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L4.6mm_W2.0mm_P2.50mm_MKS02_FKP02 +C, Rect series, Radial, pin pitch=2.50mm, , length*width=4.6*2mm^2, Capacitor, http://www.wima.de/DE/WIMA_MKS_02.pdf +C Rect series Radial pin pitch 2.50mm length 4.6mm width 2mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L4.6mm_W3.0mm_P2.50mm_MKS02_FKP02 +C, Rect series, Radial, pin pitch=2.50mm, , length*width=4.6*3.0mm^2, Capacitor, http://www.wima.de/DE/WIMA_MKS_02.pdf +C Rect series Radial pin pitch 2.50mm length 4.6mm width 3.0mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L4.6mm_W3.8mm_P2.50mm_MKS02_FKP02 +C, Rect series, Radial, pin pitch=2.50mm, , length*width=4.6*3.8mm^2, Capacitor, http://www.wima.de/DE/WIMA_MKS_02.pdf +C Rect series Radial pin pitch 2.50mm length 4.6mm width 3.8mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L4.6mm_W4.6mm_P2.50mm_MKS02_FKP02 +C, Rect series, Radial, pin pitch=2.50mm, , length*width=4.6*4.6mm^2, Capacitor, http://www.wima.de/DE/WIMA_MKS_02.pdf +C Rect series Radial pin pitch 2.50mm length 4.6mm width 4.6mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L4.6mm_W5.5mm_P2.50mm_MKS02_FKP02 +C, Rect series, Radial, pin pitch=2.50mm, , length*width=4.6*5.5mm^2, Capacitor, http://www.wima.de/DE/WIMA_MKS_02.pdf +C Rect series Radial pin pitch 2.50mm length 4.6mm width 5.5mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L7.0mm_W2.0mm_P5.00mm +C, Rect series, Radial, pin pitch=5.00mm, , length*width=7*2mm^2, Capacitor +C Rect series Radial pin pitch 5.00mm length 7mm width 2mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L7.0mm_W2.5mm_P5.00mm +C, Rect series, Radial, pin pitch=5.00mm, , length*width=7*2.5mm^2, Capacitor +C Rect series Radial pin pitch 5.00mm length 7mm width 2.5mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L7.0mm_W3.5mm_P2.50mm_P5.00mm +C, Rect series, Radial, pin pitch=2.50mm 5.00mm, , length*width=7*3.5mm^2, Capacitor +C Rect series Radial pin pitch 2.50mm 5.00mm length 7mm width 3.5mm Capacitor +0 +4 +2 +Capacitor_THT +C_Rect_L7.0mm_W3.5mm_P5.00mm +C, Rect series, Radial, pin pitch=5.00mm, , length*width=7*3.5mm^2, Capacitor +C Rect series Radial pin pitch 5.00mm length 7mm width 3.5mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L7.0mm_W4.5mm_P5.00mm +C, Rect series, Radial, pin pitch=5.00mm, , length*width=7*4.5mm^2, Capacitor +C Rect series Radial pin pitch 5.00mm length 7mm width 4.5mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L7.0mm_W6.0mm_P5.00mm +C, Rect series, Radial, pin pitch=5.00mm, , length*width=7*6mm^2, Capacitor +C Rect series Radial pin pitch 5.00mm length 7mm width 6mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L7.0mm_W6.5mm_P5.00mm +C, Rect series, Radial, pin pitch=5.00mm, , length*width=7*6.5mm^2, Capacitor +C Rect series Radial pin pitch 5.00mm length 7mm width 6.5mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L7.2mm_W2.5mm_P5.00mm_FKS2_FKP2_MKS2_MKP2 +C, Rect series, Radial, pin pitch=5.00mm, , length*width=7.2*2.5mm^2, Capacitor, http://www.wima.com/EN/WIMA_FKS_2.pdf +C Rect series Radial pin pitch 5.00mm length 7.2mm width 2.5mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L7.2mm_W3.0mm_P5.00mm_FKS2_FKP2_MKS2_MKP2 +C, Rect series, Radial, pin pitch=5.00mm, , length*width=7.2*3.0mm^2, Capacitor, http://www.wima.com/EN/WIMA_FKS_2.pdf +C Rect series Radial pin pitch 5.00mm length 7.2mm width 3.0mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L7.2mm_W3.5mm_P5.00mm_FKS2_FKP2_MKS2_MKP2 +C, Rect series, Radial, pin pitch=5.00mm, , length*width=7.2*3.5mm^2, Capacitor, http://www.wima.com/EN/WIMA_FKS_2.pdf +C Rect series Radial pin pitch 5.00mm length 7.2mm width 3.5mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L7.2mm_W4.5mm_P5.00mm_FKS2_FKP2_MKS2_MKP2 +C, Rect series, Radial, pin pitch=5.00mm, , length*width=7.2*4.5mm^2, Capacitor, http://www.wima.com/EN/WIMA_FKS_2.pdf +C Rect series Radial pin pitch 5.00mm length 7.2mm width 4.5mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L7.2mm_W5.5mm_P5.00mm_FKS2_FKP2_MKS2_MKP2 +C, Rect series, Radial, pin pitch=5.00mm, , length*width=7.2*5.5mm^2, Capacitor, http://www.wima.com/EN/WIMA_FKS_2.pdf +C Rect series Radial pin pitch 5.00mm length 7.2mm width 5.5mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L7.2mm_W7.2mm_P5.00mm_FKS2_FKP2_MKS2_MKP2 +C, Rect series, Radial, pin pitch=5.00mm, , length*width=7.2*7.2mm^2, Capacitor, http://www.wima.com/EN/WIMA_FKS_2.pdf +C Rect series Radial pin pitch 5.00mm length 7.2mm width 7.2mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L7.2mm_W8.5mm_P5.00mm_FKP2_FKP2_MKS2_MKP2 +C, Rect series, Radial, pin pitch=5.00mm, , length*width=7.2*8.5mm^2, Capacitor, http://www.wima.com/EN/WIMA_FKS_2.pdf +C Rect series Radial pin pitch 5.00mm length 7.2mm width 8.5mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L7.2mm_W11.0mm_P5.00mm_FKS2_FKP2_MKS2_MKP2 +C, Rect series, Radial, pin pitch=5.00mm, , length*width=7.2*11mm^2, Capacitor, http://www.wima.com/EN/WIMA_FKS_2.pdf +C Rect series Radial pin pitch 5.00mm length 7.2mm width 11mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L7.5mm_W6.5mm_P5.00mm +C, Rect series, Radial, pin pitch=5.00mm, , length*width=7.5*6.5mm^2, Capacitor +C Rect series Radial pin pitch 5.00mm length 7.5mm width 6.5mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L9.0mm_W2.5mm_P7.50mm_MKT +C, Rect series, Radial, pin pitch=7.50mm, , length*width=9*2.5mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 7.50mm length 9mm width 2.5mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L9.0mm_W2.6mm_P7.50mm_MKT +C, Rect series, Radial, pin pitch=7.50mm, , length*width=9*2.6mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 7.50mm length 9mm width 2.6mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L9.0mm_W2.7mm_P7.50mm_MKT +C, Rect series, Radial, pin pitch=7.50mm, , length*width=9*2.7mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 7.50mm length 9mm width 2.7mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L9.0mm_W3.2mm_P7.50mm_MKT +C, Rect series, Radial, pin pitch=7.50mm, , length*width=9*3.2mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 7.50mm length 9mm width 3.2mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L9.0mm_W3.3mm_P7.50mm_MKT +C, Rect series, Radial, pin pitch=7.50mm, , length*width=9*3.3mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 7.50mm length 9mm width 3.3mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L9.0mm_W3.4mm_P7.50mm_MKT +C, Rect series, Radial, pin pitch=7.50mm, , length*width=9*3.4mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 7.50mm length 9mm width 3.4mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L9.0mm_W3.6mm_P7.50mm_MKT +C, Rect series, Radial, pin pitch=7.50mm, , length*width=9*3.6mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 7.50mm length 9mm width 3.6mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L9.0mm_W3.8mm_P7.50mm_MKT +C, Rect series, Radial, pin pitch=7.50mm, , length*width=9*3.8mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 7.50mm length 9mm width 3.8mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L9.0mm_W3.9mm_P7.50mm_MKT +C, Rect series, Radial, pin pitch=7.50mm, , length*width=9*3.9mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 7.50mm length 9mm width 3.9mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L9.0mm_W4.0mm_P7.50mm_MKT +C, Rect series, Radial, pin pitch=7.50mm, , length*width=9*4.0mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 7.50mm length 9mm width 4.0mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L9.0mm_W4.2mm_P7.50mm_MKT +C, Rect series, Radial, pin pitch=7.50mm, , length*width=9*4.2mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 7.50mm length 9mm width 4.2mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L9.0mm_W4.9mm_P7.50mm_MKT +C, Rect series, Radial, pin pitch=7.50mm, , length*width=9*4.9mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 7.50mm length 9mm width 4.9mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L9.0mm_W5.1mm_P7.50mm_MKT +C, Rect series, Radial, pin pitch=7.50mm, , length*width=9*5.1mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 7.50mm length 9mm width 5.1mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L9.0mm_W5.7mm_P7.50mm_MKT +C, Rect series, Radial, pin pitch=7.50mm, , length*width=9*5.7mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 7.50mm length 9mm width 5.7mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L9.0mm_W6.4mm_P7.50mm_MKT +C, Rect series, Radial, pin pitch=7.50mm, , length*width=9*6.4mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 7.50mm length 9mm width 6.4mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L9.0mm_W6.7mm_P7.50mm_MKT +C, Rect series, Radial, pin pitch=7.50mm, , length*width=9*6.7mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 7.50mm length 9mm width 6.7mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L9.0mm_W7.7mm_P7.50mm_MKT +C, Rect series, Radial, pin pitch=7.50mm, , length*width=9*7.7mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 7.50mm length 9mm width 7.7mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L9.0mm_W8.5mm_P7.50mm_MKT +C, Rect series, Radial, pin pitch=7.50mm, , length*width=9*8.5mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 7.50mm length 9mm width 8.5mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L9.0mm_W9.5mm_P7.50mm_MKT +C, Rect series, Radial, pin pitch=7.50mm, , length*width=9*9.5mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 7.50mm length 9mm width 9.5mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L9.0mm_W9.8mm_P7.50mm_MKT +C, Rect series, Radial, pin pitch=7.50mm, , length*width=9*9.8mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 7.50mm length 9mm width 9.8mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L10.0mm_W2.5mm_P7.50mm_MKS4 +C, Rect series, Radial, pin pitch=7.50mm, , length*width=10*2.5mm^2, Capacitor, http://www.wima.com/EN/WIMA_MKS_4.pdf +C Rect series Radial pin pitch 7.50mm length 10mm width 2.5mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L10.0mm_W3.0mm_P7.50mm_FKS3_FKP3 +C, Rect series, Radial, pin pitch=7.50mm, , length*width=10*3mm^2, Capacitor, http://www.wima.com/EN/WIMA_FKS_3.pdf +C Rect series Radial pin pitch 7.50mm length 10mm width 3mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L10.0mm_W3.0mm_P7.50mm_MKS4 +C, Rect series, Radial, pin pitch=7.50mm, , length*width=10*3.0mm^2, Capacitor, http://www.wima.com/EN/WIMA_MKS_4.pdf +C Rect series Radial pin pitch 7.50mm length 10mm width 3.0mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L10.0mm_W4.0mm_P7.50mm_FKS3_FKP3 +C, Rect series, Radial, pin pitch=7.50mm, , length*width=10*4mm^2, Capacitor, http://www.wima.com/EN/WIMA_FKS_3.pdf +C Rect series Radial pin pitch 7.50mm length 10mm width 4mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L10.0mm_W4.0mm_P7.50mm_MKS4 +C, Rect series, Radial, pin pitch=7.50mm, , length*width=10*4.0mm^2, Capacitor, http://www.wima.com/EN/WIMA_MKS_4.pdf +C Rect series Radial pin pitch 7.50mm length 10mm width 4.0mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L10.0mm_W5.0mm_P5.00mm_P7.50mm +C, Rect series, Radial, pin pitch=5.00mm 7.50mm, , length*width=10*5mm^2, Capacitor +C Rect series Radial pin pitch 5.00mm 7.50mm length 10mm width 5mm Capacitor +0 +4 +2 +Capacitor_THT +C_Rect_L10.3mm_W4.5mm_P7.50mm_MKS4 +C, Rect series, Radial, pin pitch=7.50mm, , length*width=10.3*4.5mm^2, Capacitor, http://www.wima.com/EN/WIMA_MKS_4.pdf +C Rect series Radial pin pitch 7.50mm length 10.3mm width 4.5mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L10.3mm_W5.0mm_P7.50mm_MKS4 +C, Rect series, Radial, pin pitch=7.50mm, , length*width=10.3*5mm^2, Capacitor, http://www.wima.com/EN/WIMA_MKS_4.pdf +C Rect series Radial pin pitch 7.50mm length 10.3mm width 5mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L10.3mm_W5.7mm_P7.50mm_MKS4 +C, Rect series, Radial, pin pitch=7.50mm, , length*width=10.3*5.7mm^2, Capacitor, http://www.wima.com/EN/WIMA_MKS_4.pdf +C Rect series Radial pin pitch 7.50mm length 10.3mm width 5.7mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L10.3mm_W7.2mm_P7.50mm_MKS4 +C, Rect series, Radial, pin pitch=7.50mm, , length*width=10.3*7.2mm^2, Capacitor, http://www.wima.com/EN/WIMA_MKS_4.pdf +C Rect series Radial pin pitch 7.50mm length 10.3mm width 7.2mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L11.0mm_W2.8mm_P10.00mm_MKT +C, Rect series, Radial, pin pitch=10.00mm, , length*width=11.0*2.8mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 10.00mm length 11.0mm width 2.8mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L11.0mm_W3.4mm_P10.00mm_MKT +C, Rect series, Radial, pin pitch=10.00mm, , length*width=11.0*3.4mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 10.00mm length 11.0mm width 3.4mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L11.0mm_W3.5mm_P10.00mm_MKT +C, Rect series, Radial, pin pitch=10.00mm, , length*width=11.0*3.5mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 10.00mm length 11.0mm width 3.5mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L11.0mm_W4.2mm_P10.00mm_MKT +C, Rect series, Radial, pin pitch=10.00mm, , length*width=11.0*4.2mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 10.00mm length 11.0mm width 4.2mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L11.0mm_W4.3mm_P10.00mm_MKT +C, Rect series, Radial, pin pitch=10.00mm, , length*width=11.0*4.3mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 10.00mm length 11.0mm width 4.3mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L11.0mm_W5.1mm_P10.00mm_MKT +C, Rect series, Radial, pin pitch=10.00mm, , length*width=11.0*5.1mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 10.00mm length 11.0mm width 5.1mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L11.0mm_W5.3mm_P10.00mm_MKT +C, Rect series, Radial, pin pitch=10.00mm, , length*width=11.0*5.3mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 10.00mm length 11.0mm width 5.3mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L11.0mm_W6.3mm_P10.00mm_MKT +C, Rect series, Radial, pin pitch=10.00mm, , length*width=11.0*6.3mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 10.00mm length 11.0mm width 6.3mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L11.0mm_W6.4mm_P10.00mm_MKT +C, Rect series, Radial, pin pitch=10.00mm, , length*width=11.0*6.4mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 10.00mm length 11.0mm width 6.4mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L11.0mm_W7.3mm_P10.00mm_MKT +C, Rect series, Radial, pin pitch=10.00mm, , length*width=11.0*7.3mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 10.00mm length 11.0mm width 7.3mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L11.0mm_W8.8mm_P10.00mm_MKT +C, Rect series, Radial, pin pitch=10.00mm, , length*width=11.0*8.8mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 10.00mm length 11.0mm width 8.8mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L11.5mm_W2.0mm_P10.00mm_MKT +C, Rect series, Radial, pin pitch=10.00mm, , length*width=11.5*2mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 10.00mm length 11.5mm width 2mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L11.5mm_W2.6mm_P10.00mm_MKT +C, Rect series, Radial, pin pitch=10.00mm, , length*width=11.5*2.6mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 10.00mm length 11.5mm width 2.6mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L11.5mm_W2.8mm_P10.00mm_MKT +C, Rect series, Radial, pin pitch=10.00mm, , length*width=11.5*2.8mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 10.00mm length 11.5mm width 2.8mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L11.5mm_W3.2mm_P10.00mm_MKT +C, Rect series, Radial, pin pitch=10.00mm, , length*width=11.5*3.2mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 10.00mm length 11.5mm width 3.2mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L11.5mm_W3.5mm_P10.00mm_MKT +C, Rect series, Radial, pin pitch=10.00mm, , length*width=11.5*3.5mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 10.00mm length 11.5mm width 3.5mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L11.5mm_W3.6mm_P10.00mm_MKT +C, Rect series, Radial, pin pitch=10.00mm, , length*width=11.5*3.6mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 10.00mm length 11.5mm width 3.6mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L11.5mm_W4.0mm_P10.00mm_MKT +C, Rect series, Radial, pin pitch=10.00mm, , length*width=11.5*4.0mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 10.00mm length 11.5mm width 4.0mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L11.5mm_W4.3mm_P10.00mm_MKT +C, Rect series, Radial, pin pitch=10.00mm, , length*width=11.5*4.3mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 10.00mm length 11.5mm width 4.3mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L11.5mm_W4.5mm_P10.00mm_MKT +C, Rect series, Radial, pin pitch=10.00mm, , length*width=11.5*4.5mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 10.00mm length 11.5mm width 4.5mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L11.5mm_W5.0mm_P10.00mm_MKT +C, Rect series, Radial, pin pitch=10.00mm, , length*width=11.5*5mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 10.00mm length 11.5mm width 5mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L11.5mm_W5.1mm_P10.00mm_MKT +C, Rect series, Radial, pin pitch=10.00mm, , length*width=11.5*5.1mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 10.00mm length 11.5mm width 5.1mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L11.5mm_W5.2mm_P10.00mm_MKT +C, Rect series, Radial, pin pitch=10.00mm, , length*width=11.5*5.2mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 10.00mm length 11.5mm width 5.2mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L11.5mm_W5.6mm_P10.00mm_MKT +C, Rect series, Radial, pin pitch=10.00mm, , length*width=11.5*5.6mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 10.00mm length 11.5mm width 5.6mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L11.5mm_W6.4mm_P10.00mm_MKT +C, Rect series, Radial, pin pitch=10.00mm, , length*width=11.5*6.4mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 10.00mm length 11.5mm width 6.4mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L11.5mm_W6.6mm_P10.00mm_MKT +C, Rect series, Radial, pin pitch=10.00mm, , length*width=11.5*6.6mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 10.00mm length 11.5mm width 6.6mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L11.5mm_W6.9mm_P10.00mm_MKT +C, Rect series, Radial, pin pitch=10.00mm, , length*width=11.5*6.9mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 10.00mm length 11.5mm width 6.9mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L11.5mm_W7.3mm_P10.00mm_MKT +C, Rect series, Radial, pin pitch=10.00mm, , length*width=11.5*7.3mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 10.00mm length 11.5mm width 7.3mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L11.5mm_W7.5mm_P10.00mm_MKT +C, Rect series, Radial, pin pitch=10.00mm, , length*width=11.5*7.5mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 10.00mm length 11.5mm width 7.5mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L11.5mm_W7.8mm_P10.00mm_MKT +C, Rect series, Radial, pin pitch=10.00mm, , length*width=11.5*7.8mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 10.00mm length 11.5mm width 7.8mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L11.5mm_W8.0mm_P10.00mm_MKT +C, Rect series, Radial, pin pitch=10.00mm, , length*width=11.5*8.0mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 10.00mm length 11.5mm width 8.0mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L11.5mm_W8.8mm_P10.00mm_MKT +C, Rect series, Radial, pin pitch=10.00mm, , length*width=11.5*8.8mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 10.00mm length 11.5mm width 8.8mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L11.5mm_W9.5mm_P10.00mm_MKT +C, Rect series, Radial, pin pitch=10.00mm, , length*width=11.5*9.5mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 10.00mm length 11.5mm width 9.5mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L11.5mm_W9.8mm_P10.00mm_MKT +C, Rect series, Radial, pin pitch=10.00mm, , length*width=11.5*9.8mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 10.00mm length 11.5mm width 9.8mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L13.0mm_W3.0mm_P10.00mm_FKS3_FKP3_MKS4 +C, Rect series, Radial, pin pitch=10.00mm, , length*width=13*3mm^2, Capacitor, http://www.wima.com/EN/WIMA_FKS_3.pdf, http://www.wima.com/EN/WIMA_MKS_4.pdf +C Rect series Radial pin pitch 10.00mm length 13mm width 3mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L13.0mm_W4.0mm_P10.00mm_FKS3_FKP3_MKS4 +C, Rect series, Radial, pin pitch=10.00mm, , length*width=13*4mm^2, Capacitor, http://www.wima.com/EN/WIMA_FKS_3.pdf, http://www.wima.com/EN/WIMA_MKS_4.pdf +C Rect series Radial pin pitch 10.00mm length 13mm width 4mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L13.0mm_W5.0mm_P10.00mm_FKS3_FKP3_MKS4 +C, Rect series, Radial, pin pitch=10.00mm, , length*width=13*5mm^2, Capacitor, http://www.wima.com/EN/WIMA_FKS_3.pdf, http://www.wima.com/EN/WIMA_MKS_4.pdf +C Rect series Radial pin pitch 10.00mm length 13mm width 5mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L13.0mm_W6.0mm_P10.00mm_FKS3_FKP3_MKS4 +C, Rect series, Radial, pin pitch=10.00mm, , length*width=13*6mm^2, Capacitor, http://www.wima.com/EN/WIMA_FKS_3.pdf, http://www.wima.com/EN/WIMA_MKS_4.pdf +C Rect series Radial pin pitch 10.00mm length 13mm width 6mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L13.0mm_W6.5mm_P7.50mm_P10.00mm +C, Rect series, Radial, pin pitch=7.50mm 10.00mm, , length*width=13*6.5mm^2, Capacitor +C Rect series Radial pin pitch 7.50mm 10.00mm length 13mm width 6.5mm Capacitor +0 +4 +2 +Capacitor_THT +C_Rect_L13.0mm_W8.0mm_P10.00mm_FKS3_FKP3_MKS4 +C, Rect series, Radial, pin pitch=10.00mm, , length*width=13*8mm^2, Capacitor, http://www.wima.com/EN/WIMA_FKS_3.pdf, http://www.wima.com/EN/WIMA_MKS_4.pdf +C Rect series Radial pin pitch 10.00mm length 13mm width 8mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L13.5mm_W4.0mm_P10.00mm_FKS3_FKP3_MKS4 +C, Rect series, Radial, pin pitch=10.00mm, , length*width=13.5*4mm^2, Capacitor, http://www.wima.com/EN/WIMA_FKS_3.pdf, http://www.wima.com/EN/WIMA_MKS_4.pdf +C Rect series Radial pin pitch 10.00mm length 13.5mm width 4mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L13.5mm_W5.0mm_P10.00mm_FKS3_FKP3_MKS4 +C, Rect series, Radial, pin pitch=10.00mm, , length*width=13.5*5mm^2, Capacitor, http://www.wima.com/EN/WIMA_FKS_3.pdf, http://www.wima.com/EN/WIMA_MKS_4.pdf +C Rect series Radial pin pitch 10.00mm length 13.5mm width 5mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L16.5mm_W4.7mm_P15.00mm_MKT +C, Rect series, Radial, pin pitch=15.00mm, , length*width=16.5*4.7mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 15.00mm length 16.5mm width 4.7mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L16.5mm_W4.9mm_P15.00mm_MKT +C, Rect series, Radial, pin pitch=15.00mm, , length*width=16.5*4.9mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 15.00mm length 16.5mm width 4.9mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L16.5mm_W5.0mm_P15.00mm_MKT +C, Rect series, Radial, pin pitch=15.00mm, , length*width=16.5*5mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 15.00mm length 16.5mm width 5mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L16.5mm_W6.0mm_P15.00mm_MKT +C, Rect series, Radial, pin pitch=15.00mm, , length*width=16.5*6mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 15.00mm length 16.5mm width 6mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L16.5mm_W7.0mm_P15.00mm_MKT +C, Rect series, Radial, pin pitch=15.00mm, , length*width=16.5*7mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 15.00mm length 16.5mm width 7mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L16.5mm_W7.3mm_P15.00mm_MKT +C, Rect series, Radial, pin pitch=15.00mm, , length*width=16.5*7.3mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 15.00mm length 16.5mm width 7.3mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L16.5mm_W8.7mm_P15.00mm_MKT +C, Rect series, Radial, pin pitch=15.00mm, , length*width=16.5*8.7mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 15.00mm length 16.5mm width 8.7mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L16.5mm_W8.9mm_P15.00mm_MKT +C, Rect series, Radial, pin pitch=15.00mm, , length*width=16.5*8.9mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 15.00mm length 16.5mm width 8.9mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L16.5mm_W9.0mm_P15.00mm_MKT +C, Rect series, Radial, pin pitch=15.00mm, , length*width=16.5*9mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 15.00mm length 16.5mm width 9mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L16.5mm_W9.2mm_P15.00mm_MKT +C, Rect series, Radial, pin pitch=15.00mm, , length*width=16.5*9.2mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 15.00mm length 16.5mm width 9.2mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L16.5mm_W10.7mm_P15.00mm_MKT +C, Rect series, Radial, pin pitch=15.00mm, , length*width=16.5*10.7mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 15.00mm length 16.5mm width 10.7mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L16.5mm_W10.9mm_P15.00mm_MKT +C, Rect series, Radial, pin pitch=15.00mm, , length*width=16.5*10.9mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 15.00mm length 16.5mm width 10.9mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L16.5mm_W11.2mm_P15.00mm_MKT +C, Rect series, Radial, pin pitch=15.00mm, , length*width=16.5*11.2mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 15.00mm length 16.5mm width 11.2mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L16.5mm_W11.8mm_P15.00mm_MKT +C, Rect series, Radial, pin pitch=15.00mm, , length*width=16.5*11.8mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 15.00mm length 16.5mm width 11.8mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L16.5mm_W13.5mm_P15.00mm_MKT +C, Rect series, Radial, pin pitch=15.00mm, , length*width=16.5*13.5mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 15.00mm length 16.5mm width 13.5mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L16.5mm_W13.7mm_P15.00mm_MKT +C, Rect series, Radial, pin pitch=15.00mm, , length*width=16.5*13.7mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 15.00mm length 16.5mm width 13.7mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L16.5mm_W13.9mm_P15.00mm_MKT +C, Rect series, Radial, pin pitch=15.00mm, , length*width=16.5*13.9mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 15.00mm length 16.5mm width 13.9mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L18.0mm_W5.0mm_P15.00mm_FKS3_FKP3 +C, Rect series, Radial, pin pitch=15.00mm, , length*width=18*5mm^2, Capacitor, http://www.wima.com/EN/WIMA_FKS_3.pdf +C Rect series Radial pin pitch 15.00mm length 18mm width 5mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L18.0mm_W6.0mm_P15.00mm_FKS3_FKP3 +C, Rect series, Radial, pin pitch=15.00mm, , length*width=18*6mm^2, Capacitor, http://www.wima.com/EN/WIMA_FKS_3.pdf +C Rect series Radial pin pitch 15.00mm length 18mm width 6mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L18.0mm_W7.0mm_P15.00mm_FKS3_FKP3 +C, Rect series, Radial, pin pitch=15.00mm, , length*width=18*7mm^2, Capacitor, http://www.wima.com/EN/WIMA_FKS_3.pdf +C Rect series Radial pin pitch 15.00mm length 18mm width 7mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L18.0mm_W8.0mm_P15.00mm_FKS3_FKP3 +C, Rect series, Radial, pin pitch=15.00mm, , length*width=18*8mm^2, Capacitor, http://www.wima.com/EN/WIMA_FKS_3.pdf +C Rect series Radial pin pitch 15.00mm length 18mm width 8mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L18.0mm_W9.0mm_P15.00mm_FKS3_FKP3 +C, Rect series, Radial, pin pitch=15.00mm, , length*width=18*9mm^2, Capacitor, http://www.wima.com/EN/WIMA_FKS_3.pdf +C Rect series Radial pin pitch 15.00mm length 18mm width 9mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L18.0mm_W11.0mm_P15.00mm_FKS3_FKP3 +C, Rect series, Radial, pin pitch=15.00mm, , length*width=18*11mm^2, Capacitor, http://www.wima.com/EN/WIMA_FKS_3.pdf +C Rect series Radial pin pitch 15.00mm length 18mm width 11mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L19.0mm_W5.0mm_P15.00mm_MKS4 +C, Rect series, Radial, pin pitch=15.00mm, , length*width=19*5mm^2, Capacitor, http://www.wima.com/EN/WIMA_MKS_4.pdf +C Rect series Radial pin pitch 15.00mm length 19mm width 5mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L19.0mm_W6.0mm_P15.00mm_MKS4 +C, Rect series, Radial, pin pitch=15.00mm, , length*width=19*6mm^2, Capacitor, http://www.wima.com/EN/WIMA_MKS_4.pdf +C Rect series Radial pin pitch 15.00mm length 19mm width 6mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L19.0mm_W7.0mm_P15.00mm_MKS4 +C, Rect series, Radial, pin pitch=15.00mm, , length*width=19*7mm^2, Capacitor, http://www.wima.com/EN/WIMA_MKS_4.pdf +C Rect series Radial pin pitch 15.00mm length 19mm width 7mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L19.0mm_W8.0mm_P15.00mm_MKS4 +C, Rect series, Radial, pin pitch=15.00mm, , length*width=19*8mm^2, Capacitor, http://www.wima.com/EN/WIMA_MKS_4.pdf +C Rect series Radial pin pitch 15.00mm length 19mm width 8mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L19.0mm_W9.0mm_P15.00mm_MKS4 +C, Rect series, Radial, pin pitch=15.00mm, , length*width=19*9mm^2, Capacitor, http://www.wima.com/EN/WIMA_MKS_4.pdf +C Rect series Radial pin pitch 15.00mm length 19mm width 9mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L19.0mm_W11.0mm_P15.00mm_MKS4 +C, Rect series, Radial, pin pitch=15.00mm, , length*width=19*11mm^2, Capacitor, http://www.wima.com/EN/WIMA_MKS_4.pdf +C Rect series Radial pin pitch 15.00mm length 19mm width 11mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L24.0mm_W7.0mm_P22.50mm_MKT +C, Rect series, Radial, pin pitch=22.50mm, , length*width=24*7mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 22.50mm length 24mm width 7mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L24.0mm_W8.3mm_P22.50mm_MKT +C, Rect series, Radial, pin pitch=22.50mm, , length*width=24*8.3mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 22.50mm length 24mm width 8.3mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L24.0mm_W8.6mm_P22.50mm_MKT +C, Rect series, Radial, pin pitch=22.50mm, , length*width=24*8.6mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 22.50mm length 24mm width 8.6mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L24.0mm_W10.1mm_P22.50mm_MKT +C, Rect series, Radial, pin pitch=22.50mm, , length*width=24*10.1mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 22.50mm length 24mm width 10.1mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L24.0mm_W10.3mm_P22.50mm_MKT +C, Rect series, Radial, pin pitch=22.50mm, , length*width=24*10.3mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 22.50mm length 24mm width 10.3mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L24.0mm_W10.9mm_P22.50mm_MKT +C, Rect series, Radial, pin pitch=22.50mm, , length*width=24*10.9mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 22.50mm length 24mm width 10.9mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L24.0mm_W12.2mm_P22.50mm_MKT +C, Rect series, Radial, pin pitch=22.50mm, , length*width=24*12.2mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 22.50mm length 24mm width 12.2mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L24.0mm_W12.6mm_P22.50mm_MKT +C, Rect series, Radial, pin pitch=22.50mm, , length*width=24*12.6mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 22.50mm length 24mm width 12.6mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L24.0mm_W12.8mm_P22.50mm_MKT +C, Rect series, Radial, pin pitch=22.50mm, , length*width=24*12.8mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 22.50mm length 24mm width 12.8mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L26.5mm_W5.0mm_P22.50mm_MKS4 +C, Rect series, Radial, pin pitch=22.50mm, , length*width=26.5*5mm^2, Capacitor, http://www.wima.com/EN/WIMA_MKS_4.pdf +C Rect series Radial pin pitch 22.50mm length 26.5mm width 5mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L26.5mm_W6.0mm_P22.50mm_MKS4 +C, Rect series, Radial, pin pitch=22.50mm, , length*width=26.5*6mm^2, Capacitor, http://www.wima.com/EN/WIMA_MKS_4.pdf +C Rect series Radial pin pitch 22.50mm length 26.5mm width 6mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L26.5mm_W7.0mm_P22.50mm_MKS4 +C, Rect series, Radial, pin pitch=22.50mm, , length*width=26.5*7mm^2, Capacitor, http://www.wima.com/EN/WIMA_MKS_4.pdf +C Rect series Radial pin pitch 22.50mm length 26.5mm width 7mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L26.5mm_W8.5mm_P22.50mm_MKS4 +C, Rect series, Radial, pin pitch=22.50mm, , length*width=26.5*8.5mm^2, Capacitor, http://www.wima.com/EN/WIMA_MKS_4.pdf +C Rect series Radial pin pitch 22.50mm length 26.5mm width 8.5mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L26.5mm_W10.5mm_P22.50mm_MKS4 +C, Rect series, Radial, pin pitch=22.50mm, , length*width=26.5*10.5mm^2, Capacitor, http://www.wima.com/EN/WIMA_MKS_4.pdf +C Rect series Radial pin pitch 22.50mm length 26.5mm width 10.5mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L26.5mm_W11.5mm_P22.50mm_MKS4 +C, Rect series, Radial, pin pitch=22.50mm, , length*width=26.5*11.5mm^2, Capacitor, http://www.wima.com/EN/WIMA_MKS_4.pdf +C Rect series Radial pin pitch 22.50mm length 26.5mm width 11.5mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L27.0mm_W9.0mm_P22.00mm +C, Rect series, Radial, pin pitch=22.00mm, , length*width=27*9mm^2, Capacitor +C Rect series Radial pin pitch 22.00mm length 27mm width 9mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L27.0mm_W9.0mm_P23.00mm +C, Rect series, Radial, pin pitch=23.00mm, , length*width=27*9mm^2, Capacitor +C Rect series Radial pin pitch 23.00mm length 27mm width 9mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L27.0mm_W11.0mm_P22.00mm +C, Rect series, Radial, pin pitch=22.00mm, , length*width=27*11mm^2, Capacitor +C Rect series Radial pin pitch 22.00mm length 27mm width 11mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L28.0mm_W8.0mm_P22.50mm_MKS4 +C, Rect series, Radial, pin pitch=22.50mm, , length*width=28*8mm^2, Capacitor, http://www.wima.com/EN/WIMA_MKS_4.pdf +C Rect series Radial pin pitch 22.50mm length 28mm width 8mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L28.0mm_W10.0mm_P22.50mm_MKS4 +C, Rect series, Radial, pin pitch=22.50mm, , length*width=28*10mm^2, Capacitor, http://www.wima.com/EN/WIMA_MKS_4.pdf +C Rect series Radial pin pitch 22.50mm length 28mm width 10mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L28.0mm_W12.0mm_P22.50mm_MKS4 +C, Rect series, Radial, pin pitch=22.50mm, , length*width=28*12mm^2, Capacitor, http://www.wima.com/EN/WIMA_MKS_4.pdf +C Rect series Radial pin pitch 22.50mm length 28mm width 12mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L29.0mm_W7.6mm_P27.50mm_MKT +C, Rect series, Radial, pin pitch=27.50mm, , length*width=29*7.6mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 27.50mm length 29mm width 7.6mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L29.0mm_W7.8mm_P27.50mm_MKT +C, Rect series, Radial, pin pitch=27.50mm, , length*width=29*7.8mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 27.50mm length 29mm width 7.8mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L29.0mm_W7.9mm_P27.50mm_MKT +C, Rect series, Radial, pin pitch=27.50mm, , length*width=29*7.9mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 27.50mm length 29mm width 7.9mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L29.0mm_W9.1mm_P27.50mm_MKT +C, Rect series, Radial, pin pitch=27.50mm, , length*width=29*9.1mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 27.50mm length 29mm width 9.1mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L29.0mm_W9.6mm_P27.50mm_MKT +C, Rect series, Radial, pin pitch=27.50mm, , length*width=29*9.6mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 27.50mm length 29mm width 9.6mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L29.0mm_W11.0mm_P27.50mm_MKT +C, Rect series, Radial, pin pitch=27.50mm, , length*width=29*11mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 27.50mm length 29mm width 11mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L29.0mm_W11.9mm_P27.50mm_MKT +C, Rect series, Radial, pin pitch=27.50mm, , length*width=29*11.9mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 27.50mm length 29mm width 11.9mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L29.0mm_W12.2mm_P27.50mm_MKT +C, Rect series, Radial, pin pitch=27.50mm, , length*width=29*12.2mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 27.50mm length 29mm width 12.2mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L29.0mm_W13.0mm_P27.50mm_MKT +C, Rect series, Radial, pin pitch=27.50mm, , length*width=29*13mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 27.50mm length 29mm width 13mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L29.0mm_W13.8mm_P27.50mm_MKT +C, Rect series, Radial, pin pitch=27.50mm, , length*width=29*13.8mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 27.50mm length 29mm width 13.8mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L29.0mm_W14.2mm_P27.50mm_MKT +C, Rect series, Radial, pin pitch=27.50mm, , length*width=29*14.2mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 27.50mm length 29mm width 14.2mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L29.0mm_W16.0mm_P27.50mm_MKT +C, Rect series, Radial, pin pitch=27.50mm, , length*width=29*16mm^2, Capacitor, https://en.tdk.eu/inf/20/20/db/fc_2009/MKT_B32560_564.pdf +C Rect series Radial pin pitch 27.50mm length 29mm width 16mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L31.5mm_W9.0mm_P27.50mm_MKS4 +C, Rect series, Radial, pin pitch=27.50mm, , length*width=31.5*9mm^2, Capacitor, http://www.wima.com/EN/WIMA_MKS_4.pdf +C Rect series Radial pin pitch 27.50mm length 31.5mm width 9mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L31.5mm_W11.0mm_P27.50mm_MKS4 +C, Rect series, Radial, pin pitch=27.50mm, , length*width=31.5*11mm^2, Capacitor, http://www.wima.com/EN/WIMA_MKS_4.pdf +C Rect series Radial pin pitch 27.50mm length 31.5mm width 11mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L31.5mm_W13.0mm_P27.50mm_MKS4 +C, Rect series, Radial, pin pitch=27.50mm, , length*width=31.5*13mm^2, Capacitor, http://www.wima.com/EN/WIMA_MKS_4.pdf +C Rect series Radial pin pitch 27.50mm length 31.5mm width 13mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L31.5mm_W15.0mm_P27.50mm_MKS4 +C, Rect series, Radial, pin pitch=27.50mm, , length*width=31.5*15mm^2, Capacitor, http://www.wima.com/EN/WIMA_MKS_4.pdf +C Rect series Radial pin pitch 27.50mm length 31.5mm width 15mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L31.5mm_W17.0mm_P27.50mm_MKS4 +C, Rect series, Radial, pin pitch=27.50mm, , length*width=31.5*17mm^2, Capacitor, http://www.wima.com/EN/WIMA_MKS_4.pdf +C Rect series Radial pin pitch 27.50mm length 31.5mm width 17mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L31.5mm_W20.0mm_P27.50mm_MKS4 +C, Rect series, Radial, pin pitch=27.50mm, , length*width=31.5*20mm^2, Capacitor, http://www.wima.com/EN/WIMA_MKS_4.pdf +C Rect series Radial pin pitch 27.50mm length 31.5mm width 20mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L32.0mm_W15.0mm_P27.00mm +C, Rect series, Radial, pin pitch=27.00mm, , length*width=32*15mm^2, Capacitor +C Rect series Radial pin pitch 27.00mm length 32mm width 15mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L33.0mm_W13.0mm_P27.50mm_MKS4 +C, Rect series, Radial, pin pitch=27.50mm, , length*width=33*13mm^2, Capacitor, http://www.wima.com/EN/WIMA_MKS_4.pdf +C Rect series Radial pin pitch 27.50mm length 33mm width 13mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L33.0mm_W15.0mm_P27.50mm_MKS4 +C, Rect series, Radial, pin pitch=27.50mm, , length*width=33*15mm^2, Capacitor, http://www.wima.com/EN/WIMA_MKS_4.pdf +C Rect series Radial pin pitch 27.50mm length 33mm width 15mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L33.0mm_W20.0mm_P27.50mm_MKS4 +C, Rect series, Radial, pin pitch=27.50mm, , length*width=33*20mm^2, Capacitor, http://www.wima.com/EN/WIMA_MKS_4.pdf +C Rect series Radial pin pitch 27.50mm length 33mm width 20mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L41.5mm_W9.0mm_P37.50mm_MKS4 +C, Rect series, Radial, pin pitch=37.50mm, , length*width=41.5*9mm^2, Capacitor, http://www.wima.com/EN/WIMA_MKS_4.pdf +C Rect series Radial pin pitch 37.50mm length 41.5mm width 9mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L41.5mm_W11.0mm_P37.50mm_MKS4 +C, Rect series, Radial, pin pitch=37.50mm, , length*width=41.5*11mm^2, Capacitor, http://www.wima.com/EN/WIMA_MKS_4.pdf +C Rect series Radial pin pitch 37.50mm length 41.5mm width 11mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L41.5mm_W13.0mm_P37.50mm_MKS4 +C, Rect series, Radial, pin pitch=37.50mm, , length*width=41.5*13mm^2, Capacitor, http://www.wima.com/EN/WIMA_MKS_4.pdf +C Rect series Radial pin pitch 37.50mm length 41.5mm width 13mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L41.5mm_W15.0mm_P37.50mm_MKS4 +C, Rect series, Radial, pin pitch=37.50mm, , length*width=41.5*15mm^2, Capacitor, http://www.wima.com/EN/WIMA_MKS_4.pdf +C Rect series Radial pin pitch 37.50mm length 41.5mm width 15mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L41.5mm_W17.0mm_P37.50mm_MKS4 +C, Rect series, Radial, pin pitch=37.50mm, , length*width=41.5*17mm^2, Capacitor, http://www.wima.com/EN/WIMA_MKS_4.pdf +C Rect series Radial pin pitch 37.50mm length 41.5mm width 17mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L41.5mm_W19.0mm_P37.50mm_MKS4 +C, Rect series, Radial, pin pitch=37.50mm, , length*width=41.5*19mm^2, Capacitor, http://www.wima.com/EN/WIMA_MKS_4.pdf +C Rect series Radial pin pitch 37.50mm length 41.5mm width 19mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L41.5mm_W20.0mm_P37.50mm_MKS4 +C, Rect series, Radial, pin pitch=37.50mm, , length*width=41.5*20mm^2, Capacitor, http://www.wima.com/EN/WIMA_MKS_4.pdf +C Rect series Radial pin pitch 37.50mm length 41.5mm width 20mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L41.5mm_W24.0mm_P37.50mm_MKS4 +C, Rect series, Radial, pin pitch=37.50mm, , length*width=41.5*24mm^2, Capacitor, http://www.wima.com/EN/WIMA_MKS_4.pdf +C Rect series Radial pin pitch 37.50mm length 41.5mm width 24mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L41.5mm_W31.0mm_P37.50mm_MKS4 +C, Rect series, Radial, pin pitch=37.50mm, , length*width=41.5*31mm^2, Capacitor, http://www.wima.com/EN/WIMA_MKS_4.pdf +C Rect series Radial pin pitch 37.50mm length 41.5mm width 31mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L41.5mm_W35.0mm_P37.50mm_MKS4 +C, Rect series, Radial, pin pitch=37.50mm, , length*width=41.5*35mm^2, Capacitor, http://www.wima.com/EN/WIMA_MKS_4.pdf +C Rect series Radial pin pitch 37.50mm length 41.5mm width 35mm Capacitor +0 +2 +2 +Capacitor_THT +C_Rect_L41.5mm_W40.0mm_P37.50mm_MKS4 +C, Rect series, Radial, pin pitch=37.50mm, , length*width=41.5*40mm^2, Capacitor, http://www.wima.com/EN/WIMA_MKS_4.pdf +C Rect series Radial pin pitch 37.50mm length 41.5mm width 40mm Capacitor +0 +2 +2 +Capacitor_Tantalum_SMD +CP_EIA-1608-08_AVX-J +Tantalum Capacitor SMD AVX-J (1608-08 Metric), IPC_7351 nominal, (Body size from: https://www.vishay.com/docs/48064/_t58_vmn_pt0471_1601.pdf), generated with kicad-footprint-generator +capacitor tantalum +0 +2 +2 +Capacitor_Tantalum_SMD +CP_EIA-1608-08_AVX-J_Pad1.25x1.05mm_HandSolder +Tantalum Capacitor SMD AVX-J (1608-08 Metric), IPC_7351 nominal, (Body size from: https://www.vishay.com/docs/48064/_t58_vmn_pt0471_1601.pdf), generated with kicad-footprint-generator +capacitor tantalum +0 +2 +2 +Capacitor_Tantalum_SMD +CP_EIA-1608-10_AVX-L +Tantalum Capacitor SMD AVX-L (1608-10 Metric), IPC_7351 nominal, (Body size from: https://www.vishay.com/docs/48064/_t58_vmn_pt0471_1601.pdf), generated with kicad-footprint-generator +capacitor tantalum +0 +2 +2 +Capacitor_Tantalum_SMD +CP_EIA-1608-10_AVX-L_Pad1.25x1.05mm_HandSolder +Tantalum Capacitor SMD AVX-L (1608-10 Metric), IPC_7351 nominal, (Body size from: https://www.vishay.com/docs/48064/_t58_vmn_pt0471_1601.pdf), generated with kicad-footprint-generator +capacitor tantalum +0 +2 +2 +Capacitor_Tantalum_SMD +CP_EIA-2012-12_Kemet-R +Tantalum Capacitor SMD Kemet-R (2012-12 Metric), IPC_7351 nominal, (Body size from: https://www.vishay.com/docs/40182/tmch.pdf), generated with kicad-footprint-generator +capacitor tantalum +0 +2 +2 +Capacitor_Tantalum_SMD +CP_EIA-2012-12_Kemet-R_Pad1.30x1.05mm_HandSolder +Tantalum Capacitor SMD Kemet-R (2012-12 Metric), IPC_7351 nominal, (Body size from: https://www.vishay.com/docs/40182/tmch.pdf), generated with kicad-footprint-generator +capacitor tantalum +0 +2 +2 +Capacitor_Tantalum_SMD +CP_EIA-2012-15_AVX-P +Tantalum Capacitor SMD AVX-P (2012-15 Metric), IPC_7351 nominal, (Body size from: https://www.vishay.com/docs/40182/tmch.pdf), generated with kicad-footprint-generator +capacitor tantalum +0 +2 +2 +Capacitor_Tantalum_SMD +CP_EIA-2012-15_AVX-P_Pad1.30x1.05mm_HandSolder +Tantalum Capacitor SMD AVX-P (2012-15 Metric), IPC_7351 nominal, (Body size from: https://www.vishay.com/docs/40182/tmch.pdf), generated with kicad-footprint-generator +capacitor tantalum +0 +2 +2 +Capacitor_Tantalum_SMD +CP_EIA-3216-10_Kemet-I +Tantalum Capacitor SMD Kemet-I (3216-10 Metric), IPC_7351 nominal, (Body size from: http://www.kemet.com/Lists/ProductCatalog/Attachments/253/KEM_TC101_STD.pdf), generated with kicad-footprint-generator +capacitor tantalum +0 +2 +2 +Capacitor_Tantalum_SMD +CP_EIA-3216-10_Kemet-I_Pad1.58x1.35mm_HandSolder +Tantalum Capacitor SMD Kemet-I (3216-10 Metric), IPC_7351 nominal, (Body size from: http://www.kemet.com/Lists/ProductCatalog/Attachments/253/KEM_TC101_STD.pdf), generated with kicad-footprint-generator +capacitor tantalum +0 +2 +2 +Capacitor_Tantalum_SMD +CP_EIA-3216-12_Kemet-S +Tantalum Capacitor SMD Kemet-S (3216-12 Metric), IPC_7351 nominal, (Body size from: http://www.kemet.com/Lists/ProductCatalog/Attachments/253/KEM_TC101_STD.pdf), generated with kicad-footprint-generator +capacitor tantalum +0 +2 +2 +Capacitor_Tantalum_SMD +CP_EIA-3216-12_Kemet-S_Pad1.58x1.35mm_HandSolder +Tantalum Capacitor SMD Kemet-S (3216-12 Metric), IPC_7351 nominal, (Body size from: http://www.kemet.com/Lists/ProductCatalog/Attachments/253/KEM_TC101_STD.pdf), generated with kicad-footprint-generator +capacitor tantalum +0 +2 +2 +Capacitor_Tantalum_SMD +CP_EIA-3216-18_Kemet-A +Tantalum Capacitor SMD Kemet-A (3216-18 Metric), IPC_7351 nominal, (Body size from: http://www.kemet.com/Lists/ProductCatalog/Attachments/253/KEM_TC101_STD.pdf), generated with kicad-footprint-generator +capacitor tantalum +0 +2 +2 +Capacitor_Tantalum_SMD +CP_EIA-3216-18_Kemet-A_Pad1.58x1.35mm_HandSolder +Tantalum Capacitor SMD Kemet-A (3216-18 Metric), IPC_7351 nominal, (Body size from: http://www.kemet.com/Lists/ProductCatalog/Attachments/253/KEM_TC101_STD.pdf), generated with kicad-footprint-generator +capacitor tantalum +0 +2 +2 +Capacitor_Tantalum_SMD +CP_EIA-3528-12_Kemet-T +Tantalum Capacitor SMD Kemet-T (3528-12 Metric), IPC_7351 nominal, (Body size from: http://www.kemet.com/Lists/ProductCatalog/Attachments/253/KEM_TC101_STD.pdf), generated with kicad-footprint-generator +capacitor tantalum +0 +2 +2 +Capacitor_Tantalum_SMD +CP_EIA-3528-12_Kemet-T_Pad1.50x2.35mm_HandSolder +Tantalum Capacitor SMD Kemet-T (3528-12 Metric), IPC_7351 nominal, (Body size from: http://www.kemet.com/Lists/ProductCatalog/Attachments/253/KEM_TC101_STD.pdf), generated with kicad-footprint-generator +capacitor tantalum +0 +2 +2 +Capacitor_Tantalum_SMD +CP_EIA-3528-15_AVX-H +Tantalum Capacitor SMD AVX-H (3528-15 Metric), IPC_7351 nominal, (Body size from: http://www.kemet.com/Lists/ProductCatalog/Attachments/253/KEM_TC101_STD.pdf), generated with kicad-footprint-generator +capacitor tantalum +0 +2 +2 +Capacitor_Tantalum_SMD +CP_EIA-3528-15_AVX-H_Pad1.50x2.35mm_HandSolder +Tantalum Capacitor SMD AVX-H (3528-15 Metric), IPC_7351 nominal, (Body size from: http://www.kemet.com/Lists/ProductCatalog/Attachments/253/KEM_TC101_STD.pdf), generated with kicad-footprint-generator +capacitor tantalum +0 +2 +2 +Capacitor_Tantalum_SMD +CP_EIA-3528-21_Kemet-B +Tantalum Capacitor SMD Kemet-B (3528-21 Metric), IPC_7351 nominal, (Body size from: http://www.kemet.com/Lists/ProductCatalog/Attachments/253/KEM_TC101_STD.pdf), generated with kicad-footprint-generator +capacitor tantalum +0 +2 +2 +Capacitor_Tantalum_SMD +CP_EIA-3528-21_Kemet-B_Pad1.50x2.35mm_HandSolder +Tantalum Capacitor SMD Kemet-B (3528-21 Metric), IPC_7351 nominal, (Body size from: http://www.kemet.com/Lists/ProductCatalog/Attachments/253/KEM_TC101_STD.pdf), generated with kicad-footprint-generator +capacitor tantalum +0 +2 +2 +Capacitor_Tantalum_SMD +CP_EIA-6032-15_Kemet-U +Tantalum Capacitor SMD Kemet-U (6032-15 Metric), IPC_7351 nominal, (Body size from: http://www.kemet.com/Lists/ProductCatalog/Attachments/253/KEM_TC101_STD.pdf), generated with kicad-footprint-generator +capacitor tantalum +0 +2 +2 +Capacitor_Tantalum_SMD +CP_EIA-6032-15_Kemet-U_Pad2.25x2.35mm_HandSolder +Tantalum Capacitor SMD Kemet-U (6032-15 Metric), IPC_7351 nominal, (Body size from: http://www.kemet.com/Lists/ProductCatalog/Attachments/253/KEM_TC101_STD.pdf), generated with kicad-footprint-generator +capacitor tantalum +0 +2 +2 +Capacitor_Tantalum_SMD +CP_EIA-6032-20_AVX-F +Tantalum Capacitor SMD AVX-F (6032-20 Metric), IPC_7351 nominal, (Body size from: http://www.kemet.com/Lists/ProductCatalog/Attachments/253/KEM_TC101_STD.pdf), generated with kicad-footprint-generator +capacitor tantalum +0 +2 +2 +Capacitor_Tantalum_SMD +CP_EIA-6032-20_AVX-F_Pad2.25x2.35mm_HandSolder +Tantalum Capacitor SMD AVX-F (6032-20 Metric), IPC_7351 nominal, (Body size from: http://www.kemet.com/Lists/ProductCatalog/Attachments/253/KEM_TC101_STD.pdf), generated with kicad-footprint-generator +capacitor tantalum +0 +2 +2 +Capacitor_Tantalum_SMD +CP_EIA-6032-28_Kemet-C +Tantalum Capacitor SMD Kemet-C (6032-28 Metric), IPC_7351 nominal, (Body size from: http://www.kemet.com/Lists/ProductCatalog/Attachments/253/KEM_TC101_STD.pdf), generated with kicad-footprint-generator +capacitor tantalum +0 +2 +2 +Capacitor_Tantalum_SMD +CP_EIA-6032-28_Kemet-C_Pad2.25x2.35mm_HandSolder +Tantalum Capacitor SMD Kemet-C (6032-28 Metric), IPC_7351 nominal, (Body size from: http://www.kemet.com/Lists/ProductCatalog/Attachments/253/KEM_TC101_STD.pdf), generated with kicad-footprint-generator +capacitor tantalum +0 +2 +2 +Capacitor_Tantalum_SMD +CP_EIA-7132-20_AVX-U +Tantalum Capacitor SMD AVX-U (7132-20 Metric), IPC_7351 nominal, (Body size from: http://datasheets.avx.com/F72-F75.pdf), generated with kicad-footprint-generator +capacitor tantalum +0 +2 +2 +Capacitor_Tantalum_SMD +CP_EIA-7132-20_AVX-U_Pad2.72x3.50mm_HandSolder +Tantalum Capacitor SMD AVX-U (7132-20 Metric), IPC_7351 nominal, (Body size from: http://datasheets.avx.com/F72-F75.pdf), generated with kicad-footprint-generator +capacitor tantalum +0 +2 +2 +Capacitor_Tantalum_SMD +CP_EIA-7132-28_AVX-C +Tantalum Capacitor SMD AVX-C (7132-28 Metric), IPC_7351 nominal, (Body size from: http://datasheets.avx.com/F72-F75.pdf), generated with kicad-footprint-generator +capacitor tantalum +0 +2 +2 +Capacitor_Tantalum_SMD +CP_EIA-7132-28_AVX-C_Pad2.72x3.50mm_HandSolder +Tantalum Capacitor SMD AVX-C (7132-28 Metric), IPC_7351 nominal, (Body size from: http://datasheets.avx.com/F72-F75.pdf), generated with kicad-footprint-generator +capacitor tantalum +0 +2 +2 +Capacitor_Tantalum_SMD +CP_EIA-7260-15_AVX-R +Tantalum Capacitor SMD AVX-R (7260-15 Metric), IPC_7351 nominal, (Body size from: http://datasheets.avx.com/F72-F75.pdf), generated with kicad-footprint-generator +capacitor tantalum +0 +2 +2 +Capacitor_Tantalum_SMD +CP_EIA-7260-15_AVX-R_Pad2.68x6.30mm_HandSolder +Tantalum Capacitor SMD AVX-R (7260-15 Metric), IPC_7351 nominal, (Body size from: http://datasheets.avx.com/F72-F75.pdf), generated with kicad-footprint-generator +capacitor tantalum +0 +2 +2 +Capacitor_Tantalum_SMD +CP_EIA-7260-20_AVX-M +Tantalum Capacitor SMD AVX-M (7260-20 Metric), IPC_7351 nominal, (Body size from: http://datasheets.avx.com/F72-F75.pdf), generated with kicad-footprint-generator +capacitor tantalum +0 +2 +2 +Capacitor_Tantalum_SMD +CP_EIA-7260-20_AVX-M_Pad2.68x6.30mm_HandSolder +Tantalum Capacitor SMD AVX-M (7260-20 Metric), IPC_7351 nominal, (Body size from: http://datasheets.avx.com/F72-F75.pdf), generated with kicad-footprint-generator +capacitor tantalum +0 +2 +2 +Capacitor_Tantalum_SMD +CP_EIA-7260-28_AVX-M +Tantalum Capacitor SMD AVX-M (7260-28 Metric), IPC_7351 nominal, (Body size from: http://datasheets.avx.com/F72-F75.pdf), generated with kicad-footprint-generator +capacitor tantalum +0 +2 +2 +Capacitor_Tantalum_SMD +CP_EIA-7260-28_AVX-M_Pad2.68x6.30mm_HandSolder +Tantalum Capacitor SMD AVX-M (7260-28 Metric), IPC_7351 nominal, (Body size from: http://datasheets.avx.com/F72-F75.pdf), generated with kicad-footprint-generator +capacitor tantalum +0 +2 +2 +Capacitor_Tantalum_SMD +CP_EIA-7260-38_AVX-R +Tantalum Capacitor SMD AVX-R (7260-38 Metric), IPC_7351 nominal, (Body size from: http://datasheets.avx.com/F72-F75.pdf), generated with kicad-footprint-generator +capacitor tantalum +0 +2 +2 +Capacitor_Tantalum_SMD +CP_EIA-7260-38_AVX-R_Pad2.68x6.30mm_HandSolder +Tantalum Capacitor SMD AVX-R (7260-38 Metric), IPC_7351 nominal, (Body size from: http://datasheets.avx.com/F72-F75.pdf), generated with kicad-footprint-generator +capacitor tantalum +0 +2 +2 +Capacitor_Tantalum_SMD +CP_EIA-7343-15_Kemet-W +Tantalum Capacitor SMD Kemet-W (7343-15 Metric), IPC_7351 nominal, (Body size from: http://www.kemet.com/Lists/ProductCatalog/Attachments/253/KEM_TC101_STD.pdf), generated with kicad-footprint-generator +capacitor tantalum +0 +2 +2 +Capacitor_Tantalum_SMD +CP_EIA-7343-15_Kemet-W_Pad2.25x2.55mm_HandSolder +Tantalum Capacitor SMD Kemet-W (7343-15 Metric), IPC_7351 nominal, (Body size from: http://www.kemet.com/Lists/ProductCatalog/Attachments/253/KEM_TC101_STD.pdf), generated with kicad-footprint-generator +capacitor tantalum +0 +2 +2 +Capacitor_Tantalum_SMD +CP_EIA-7343-20_Kemet-V +Tantalum Capacitor SMD Kemet-V (7343-20 Metric), IPC_7351 nominal, (Body size from: http://www.kemet.com/Lists/ProductCatalog/Attachments/253/KEM_TC101_STD.pdf), generated with kicad-footprint-generator +capacitor tantalum +0 +2 +2 +Capacitor_Tantalum_SMD +CP_EIA-7343-20_Kemet-V_Pad2.25x2.55mm_HandSolder +Tantalum Capacitor SMD Kemet-V (7343-20 Metric), IPC_7351 nominal, (Body size from: http://www.kemet.com/Lists/ProductCatalog/Attachments/253/KEM_TC101_STD.pdf), generated with kicad-footprint-generator +capacitor tantalum +0 +2 +2 +Capacitor_Tantalum_SMD +CP_EIA-7343-30_AVX-N +Tantalum Capacitor SMD AVX-N (7343-30 Metric), IPC_7351 nominal, (Body size from: http://www.kemet.com/Lists/ProductCatalog/Attachments/253/KEM_TC101_STD.pdf), generated with kicad-footprint-generator +capacitor tantalum +0 +2 +2 +Capacitor_Tantalum_SMD +CP_EIA-7343-30_AVX-N_Pad2.25x2.55mm_HandSolder +Tantalum Capacitor SMD AVX-N (7343-30 Metric), IPC_7351 nominal, (Body size from: http://www.kemet.com/Lists/ProductCatalog/Attachments/253/KEM_TC101_STD.pdf), generated with kicad-footprint-generator +capacitor tantalum +0 +2 +2 +Capacitor_Tantalum_SMD +CP_EIA-7343-31_Kemet-D +Tantalum Capacitor SMD Kemet-D (7343-31 Metric), IPC_7351 nominal, (Body size from: http://www.kemet.com/Lists/ProductCatalog/Attachments/253/KEM_TC101_STD.pdf), generated with kicad-footprint-generator +capacitor tantalum +0 +2 +2 +Capacitor_Tantalum_SMD +CP_EIA-7343-31_Kemet-D_Pad2.25x2.55mm_HandSolder +Tantalum Capacitor SMD Kemet-D (7343-31 Metric), IPC_7351 nominal, (Body size from: http://www.kemet.com/Lists/ProductCatalog/Attachments/253/KEM_TC101_STD.pdf), generated with kicad-footprint-generator +capacitor tantalum +0 +2 +2 +Capacitor_Tantalum_SMD +CP_EIA-7343-40_Kemet-Y +Tantalum Capacitor SMD Kemet-Y (7343-40 Metric), IPC_7351 nominal, (Body size from: http://www.kemet.com/Lists/ProductCatalog/Attachments/253/KEM_TC101_STD.pdf), generated with kicad-footprint-generator +capacitor tantalum +0 +2 +2 +Capacitor_Tantalum_SMD +CP_EIA-7343-40_Kemet-Y_Pad2.25x2.55mm_HandSolder +Tantalum Capacitor SMD Kemet-Y (7343-40 Metric), IPC_7351 nominal, (Body size from: http://www.kemet.com/Lists/ProductCatalog/Attachments/253/KEM_TC101_STD.pdf), generated with kicad-footprint-generator +capacitor tantalum +0 +2 +2 +Capacitor_Tantalum_SMD +CP_EIA-7343-43_Kemet-X +Tantalum Capacitor SMD Kemet-X (7343-43 Metric), IPC_7351 nominal, (Body size from: http://www.kemet.com/Lists/ProductCatalog/Attachments/253/KEM_TC101_STD.pdf), generated with kicad-footprint-generator +capacitor tantalum +0 +2 +2 +Capacitor_Tantalum_SMD +CP_EIA-7343-43_Kemet-X_Pad2.25x2.55mm_HandSolder +Tantalum Capacitor SMD Kemet-X (7343-43 Metric), IPC_7351 nominal, (Body size from: http://www.kemet.com/Lists/ProductCatalog/Attachments/253/KEM_TC101_STD.pdf), generated with kicad-footprint-generator +capacitor tantalum +0 +2 +2 +Capacitor_Tantalum_SMD +CP_EIA-7360-38_Kemet-E +Tantalum Capacitor SMD Kemet-E (7360-38 Metric), IPC_7351 nominal, (Body size from: http://www.kemet.com/Lists/ProductCatalog/Attachments/253/KEM_TC101_STD.pdf), generated with kicad-footprint-generator +capacitor tantalum +0 +2 +2 +Capacitor_Tantalum_SMD +CP_EIA-7360-38_Kemet-E_Pad2.25x4.25mm_HandSolder +Tantalum Capacitor SMD Kemet-E (7360-38 Metric), IPC_7351 nominal, (Body size from: http://www.kemet.com/Lists/ProductCatalog/Attachments/253/KEM_TC101_STD.pdf), generated with kicad-footprint-generator +capacitor tantalum +0 +2 +2 +Capacitor_Tantalum_SMD +CP_EIA-7361-38_AVX-V +Tantalum Capacitor SMD AVX-V (7361-38 Metric), IPC_7351 nominal, (Body size from: http://datasheets.avx.com/NOS.pdf), generated with kicad-footprint-generator +capacitor tantalum +0 +2 +2 +Capacitor_Tantalum_SMD +CP_EIA-7361-38_AVX-V_Pad2.18x3.30mm_HandSolder +Tantalum Capacitor SMD AVX-V (7361-38 Metric), IPC_7351 nominal, (Body size from: http://datasheets.avx.com/NOS.pdf), generated with kicad-footprint-generator +capacitor tantalum +0 +2 +2 +Capacitor_Tantalum_SMD +CP_EIA-7361-438_AVX-U +Tantalum Capacitor SMD AVX-U (7361-438 Metric), IPC_7351 nominal, (Body size from: http://datasheets.avx.com/NOS.pdf), generated with kicad-footprint-generator +capacitor tantalum +0 +2 +2 +Capacitor_Tantalum_SMD +CP_EIA-7361-438_AVX-U_Pad2.18x3.30mm_HandSolder +Tantalum Capacitor SMD AVX-U (7361-438 Metric), IPC_7351 nominal, (Body size from: http://datasheets.avx.com/NOS.pdf), generated with kicad-footprint-generator +capacitor tantalum +0 +2 +2 +Connector +Banana_Jack_1Pin +Single banana socket, footprint - 6mm drill +banana socket +0 +1 +1 +Connector +Banana_Jack_2Pin +Dual banana socket, footprint - 2 x 6mm drills +banana socket +0 +2 +2 +Connector +Banana_Jack_3Pin +Triple banana socket, footprint - 3 x 6mm drills +banana socket +0 +3 +3 +Connector +CUI_PD-30 +3 pin connector, PD-30, http://www.cui.com/product/resource/pd-30.pdf +connector 3-pin PD-30 power DIN +0 +4 +4 +Connector +CalTest_CT3151 +Right-angle standard banana jack, http://www.caltestelectronics.com/images/attachments/P315100rH_drawing.pdf +banana jack horizontal +0 +4 +1 +Connector +Connector_SFP_and_Cage +https://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=2227302&DocType=Customer+Drawing&DocLang=English +SFP+ SFP +0 +40 +21 +Connector +DTF13-12Px +http://www.te.com/usa-en/product-DTF13-12PA-G003.html +DEUTSCH DT header 12 pin +0 +12 +12 +Connector +FanPinHeader_1x03_P2.54mm_Vertical +3-pin CPU fan Through hole pin header, see http://www.formfactors.org/developer%5Cspecs%5Crev1_2_public.pdf +pin header 3-pin CPU fan +0 +3 +3 +Connector +FanPinHeader_1x04_P2.54mm_Vertical +4-pin CPU fan Through hole pin header, e.g. for Wieson part number 2366C888-007 Molex 47053-1000, Foxconn HF27040-M1, Tyco 1470947-1 or equivalent, see http://www.formfactors.org/developer%5Cspecs%5Crev1_2_public.pdf +pin header 4-pin CPU fan +0 +4 +4 +Connector +GB042-34S-H10 +http://www.lsmtron.com/pdf/Connector&Antenna_catalog.PDF +34pin SMD connector +0 +34 +34 +Connector +IHI_B6A-PCB-45_Vertical +https://lugsdirect.com/PDF_Webprint/B6A-PCB-45-XX(-X).pdf +connector IHI B6A-PCB-45 +0 +49 +1 +Connector +JWT_A3963_1x02_P3.96mm_Vertical +JWT A3963, 3.96mm pitch Pin head connector (http://www.jwt.com.tw/pro_pdf/A3963.pdf) +connector JWT A3963 pinhead +0 +2 +2 +Connector +NS-Tech_Grove_1x04_P2mm_Vertical +https://statics3.seeedstudio.com/images/opl/datasheet/3470130P1.pdf +Grove-1x04 +0 +4 +4 +Connector +SpringContact_Harwin_S1941-46R +7.25mm SMT Multi-directional Spring Contact (T+R), https://cdn.harwin.com/pdfs/S1941R.pdf +spring contact emi emc shield +0 +1 +1 +Connector +Tag-Connect_TC2030-IDC-FP_2x03_P1.27mm_Vertical +Tag-Connect programming header; http://www.tag-connect.com/Materials/TC2030-IDC.pdf +tag connect programming header pogo pins +0 +6 +6 +Connector +Tag-Connect_TC2030-IDC-NL_2x03_P1.27mm_Vertical +Tag-Connect programming header; http://www.tag-connect.com/Materials/TC2030-IDC-NL.pdf +tag connect programming header pogo pins +0 +6 +6 +Connector +Tag-Connect_TC2050-IDC-FP_2x05_P1.27mm_Vertical +Tag-Connect programming header; http://www.tag-connect.com/Materials/TC2050-IDC-430%20Datasheet.pdf +tag connect programming header pogo pins +0 +10 +10 +Connector +Tag-Connect_TC2050-IDC-NL_2x05_P1.27mm_Vertical +Tag-Connect programming header; http://www.tag-connect.com/Materials/TC2050-IDC-NL%20Datasheet.pdf +tag connect programming header pogo pins +0 +10 +10 +Connector +Tag-Connect_TC2050-IDC-NL_2x05_P1.27mm_Vertical_with_bottom_clip +Tag-Connect programming header with bottom courtyard for TC2050-NL Clip board ; https://www.tag-connect.com/wp-content/uploads/bsk-pdf-manager/TC2050-IDC-NL_Datasheet_8.pdf https://www.tag-connect.com/wp-content/uploads/bsk-pdf-manager/TC2050-CLIP_Datasheet_25.pdf +tag connect programming header pogo pins +0 +10 +10 +Connector +Tag-Connect_TC2070-IDC-FP_2x07_P1.27mm_Vertical +Tag-Connect programming header; http://www.tag-connect.com/Materials/TC2070-IDC%20Datasheet.pdf +tag connect programming header pogo pins +0 +14 +14 +Connector_AMASS +AMASS_MR30PW-FB_1x03_P3.50mm_Horizontal +Connector XT30 Horizontal PCB Female, https://www.tme.eu/en/Document/5e47640ba39fa492dbd4c0f4c8ae7b93/MR30PW%20SPEC.pdf +RC Connector XT30 +0 +5 +3 +Connector_AMASS +AMASS_MR30PW-M_1x03_P3.50mm_Horizontal +Connector XT30 Horizontal PCB Male, https://www.tme.eu/en/Document/5e47640ba39fa492dbd4c0f4c8ae7b93/MR30PW%20SPEC.pdf +RC Connector XT30 +0 +5 +3 +Connector_AMASS +AMASS_XT30PW-F_1x02_P2.50mm_Horizontal +Connector XT30 Horizontal PCB Female, https://www.tme.eu/en/Document/ce4077e36b79046da520ca73227e15de/XT30PW%20SPEC.pdf +RC Connector XT30 +0 +4 +2 +Connector_AMASS +AMASS_XT30PW-M_1x02_P2.50mm_Horizontal +Connector XT30 Horizontal PCB Male, https://www.tme.eu/en/Document/ce4077e36b79046da520ca73227e15de/XT30PW%20SPEC.pdf +RC Connector XT30 +0 +4 +2 +Connector_AMASS +AMASS_XT30U-F_1x02_P5.0mm_Vertical +Connector XT30 Vertical Cable Female, https://www.tme.eu/en/Document/3cbfa5cfa544d79584972dd5234a409e/XT30U%20SPEC.pdf +RC Connector XT30 +0 +2 +2 +Connector_AMASS +AMASS_XT30U-M_1x02_P5.0mm_Vertical +Connector XT30 Vertical Cable Male, https://www.tme.eu/en/Document/3cbfa5cfa544d79584972dd5234a409e/XT30U%20SPEC.pdf +RC Connector XT30 +0 +2 +2 +Connector_AMASS +AMASS_XT30UPB-F_1x02_P5.0mm_Vertical +Connector XT30 Vertical PCB Female, https://www.tme.eu/en/Document/4acc913878197f8c2e30d4b8cdc47230/XT30UPB%20SPEC.pdf +RC Connector XT30 +0 +2 +2 +Connector_AMASS +AMASS_XT30UPB-M_1x02_P5.0mm_Vertical +Connector XT30 Vertical PCB Male, https://www.tme.eu/en/Document/4acc913878197f8c2e30d4b8cdc47230/XT30UPB%20SPEC.pdf +RC Connector XT30 +0 +2 +2 +Connector_AMASS +AMASS_XT60-F_1x02_P7.20mm_Vertical +AMASS female XT60, through hole, vertical, https://www.tme.eu/Document/2d152ced3b7a446066e6c419d84bb460/XT60%20SPEC.pdf +XT60 female vertical +0 +2 +2 +Connector_AMASS +AMASS_XT60-M_1x02_P7.20mm_Vertical +AMASS female XT60, through hole, vertical, https://www.tme.eu/Document/2d152ced3b7a446066e6c419d84bb460/XT60%20SPEC.pdf +XT60 female vertical +0 +2 +2 +Connector_Audio +Jack_3.5mm_CUI_SJ-3523-SMT_Horizontal +3.5 mm, Stereo, Right Angle, Surface Mount (SMT), Audio Jack Connector (https://www.cui.com/product/resource/sj-352x-smt-series.pdf) +3.5mm audio cui horizontal jack stereo +0 +3 +3 +Connector_Audio +Jack_3.5mm_CUI_SJ-3524-SMT_Horizontal +3.5 mm, Stereo, Right Angle, Surface Mount (SMT), Audio Jack Connector (https://www.cui.com/product/resource/sj-352x-smt-series.pdf) +3.5mm audio cui horizontal jack stereo +0 +4 +4 +Connector_Audio +Jack_3.5mm_CUI_SJ1-3533NG_Horizontal +TRS 3.5mm, horizontal, through-hole, https://www.cui.com/product/resource/sj1-353xng.pdf +TRS audio jack stereo horizontal +0 +3 +3 +Connector_Audio +Jack_3.5mm_CUI_SJ1-3533NG_Horizontal_CircularHoles +TRS 3.5mm, horizontal, through-hole, , circular holeshttps://www.cui.com/product/resource/sj1-353xng.pdf +TRS audio jack stereo horizontal circular +0 +3 +3 +Connector_Audio +Jack_3.5mm_CUI_SJ1-3535NG_Horizontal +TRS 3.5mm, horizontal, through-hole, with switch, https://www.cui.com/product/resource/sj1-353xng.pdf +TRS audio jack stereo horizontal +0 +5 +5 +Connector_Audio +Jack_3.5mm_CUI_SJ1-3535NG_Horizontal_CircularHoles +TRS 3.5mm, horizontal, through-hole, with switch, circular holes, https://www.cui.com/product/resource/sj1-353xng.pdf +TRS audio jack stereo horizontal circular +0 +5 +5 +Connector_Audio +Jack_3.5mm_Ledino_KB3SPRS_Horizontal +https://www.reichelt.de/index.html?ACTION=7&LA=3&OPEN=0&INDEX=0&FILENAME=C160%252FKB3SPRS.pdf +jack stereo TRS +0 +5 +5 +Connector_Audio +Jack_3.5mm_PJ311_Horizontal +PJ311 6pin SMD 3.5mm stereo headphones jack. +headphones jack plug stereo 3.5mm PJ311 +0 +6 +6 +Connector_Audio +Jack_3.5mm_PJ320D_Horizontal +Headphones with microphone connector, 3.5mm, 4 pins (http://www.qingpu-electronics.com/en/products/WQP-PJ320D-72.html) +3.5mm jack mic microphone phones headphones 4pins audio plug +0 +4 +4 +Connector_Audio +Jack_3.5mm_PJ320E_Horizontal +Headphones with microphone connector, 3.5mm, 4 pins (http://www.qingpu-electronics.com/en/products/WQP-PJ320E-177.html) +3.5mm jack mic microphone phones headphones 4pins audio plug +0 +5 +4 +Connector_Audio +Jack_3.5mm_PJ31060-I_Horizontal +PJ31060-I 6pin SMD 3.5mm headphones jack (http://www.china-bsun.com/Product48/1577.html) +headphones jack plug stereo 3.5mm PJ31060-I PJ31060 +0 +6 +6 +Connector_Audio +Jack_3.5mm_QingPu_WQP-PJ398SM_Vertical_CircularHoles +TRS 3.5mm, vertical, Thonkiconn, PCB mount, (http://www.qingpu-electronics.com/en/products/WQP-PJ398SM-362.html) +WQP-PJ398SM WQP-PJ301M-12 TRS 3.5mm mono vertical jack thonkiconn qingpu +0 +3 +3 +Connector_Audio +Jack_3.5mm_Switronic_ST-005-G_horizontal +3.5mm horizontal headphones jack, http://akizukidenshi.com/download/ds/switronic/ST-005-G.pdf +Connector Audio Switronic ST-005-G +0 +4 +3 +Connector_Audio +Jack_6.35mm_Neutrik_NJ2FD-V_Vertical +6.35mm (1/4 in) Vertical Jack, Non-switching mono jack (T/S), https://www.neutrik.com/en/product/nj2fd-v +neutrik jack vertical +0 +2 +2 +Connector_Audio +Jack_6.35mm_Neutrik_NJ3FD-V_Vertical +6.35mm (1/4 in) Vertical Jack, Non-switching stereo jack (T/R/S), https://www.neutrik.com/en/product/nj3fd-v +neutrik jack vertical +0 +3 +3 +Connector_Audio +Jack_6.35mm_Neutrik_NJ5FD-V_Vertical +6.35mm (1/4 in) Vertical Jack, 2 x switching (normalling) stereo jack (T/TN/R/RN/S), https://www.neutrik.com/en/product/nj5fd-v +neutrik jack vertical +0 +5 +5 +Connector_Audio +Jack_6.35mm_Neutrik_NJ6FD-V_Vertical +6.35mm (1/4 in) Vertical Jack, 3 x switching (normalling) stereo jack (T/TN/R/RN/S/SN), https://www.neutrik.com/en/product/nj6fd-v +neutrik jack vertical +0 +6 +6 +Connector_Audio +Jack_6.35mm_Neutrik_NJ6TB-V_Vertical +6.35mm (1/4 in) Vertical Jack, 3 x switching (normalling) stereo jack B-gauge type (T/TN/R/RN/S/SN), https://www.neutrik.com/en/product/nj6tb-v +neutrik jack vertical +0 +6 +6 +Connector_Audio +Jack_6.35mm_Neutrik_NMJ4HCD2_Horizontal +M Series, 6.35mm (1/4in) mono jack, switched, with chrome ferrule and straight PCB pins, https://www.neutrik.com/en/product/nmj4hcd2 +neutrik jack m +0 +4 +4 +Connector_Audio +Jack_6.35mm_Neutrik_NMJ4HFD2_Horizontal +M Series, 6.35mm (1/4in) mono jack, switched, with full threaded nose and straight PCB pins, https://www.neutrik.com/en/product/nmj4hfd2 +neutrik jack m +0 +4 +4 +Connector_Audio +Jack_6.35mm_Neutrik_NMJ4HFD3_Horizontal +M Series, 6.35mm (1/4in) mono jack, switched, with a full threaded nose and offset PCB pins, https://www.neutrik.com/en/product/nmj4hfd3 +neutrik jack m +0 +4 +4 +Connector_Audio +Jack_6.35mm_Neutrik_NMJ4HHD2_Horizontal +M Series, 6.35mm (1/4in) mono jack, switched, with a half threaded nose and offset PCB pins, https://www.neutrik.com/en/product/nmj4hhd2 +neutrik jack m +0 +4 +4 +Connector_Audio +Jack_6.35mm_Neutrik_NMJ6HCD2_Horizontal +M Series, 6.35mm (1/4in) stereo jack, switched, with chrome ferrule and straight PCB pins, https://www.neutrik.com/en/product/nmj6hcd2 +neutrik jack m +0 +6 +6 +Connector_Audio +Jack_6.35mm_Neutrik_NMJ6HCD3_Horizontal +M Series, 6.35mm (1/4in) stereo jack, switched, with chrome ferrule and offset PCB pins, https://www.neutrik.com/en/product/nmj6hcd3 +neutrik jack m +0 +6 +6 +Connector_Audio +Jack_6.35mm_Neutrik_NMJ6HFD2-AU_Horizontal +M Series, 6.35mm (1/4in) stereo jack, switched, full threaded nose, straight PCB pins, gold plated contacts, https://www.neutrik.com/en/product/nmj6hfd2-au +neutrik jack m +0 +6 +6 +Connector_Audio +Jack_6.35mm_Neutrik_NMJ6HFD2_Horizontal +M Series, 6.35mm (1/4in) stereo jack, switched, with full threaded nose and straight PCB pins, https://www.neutrik.com/en/product/nmj6hfd2 +neutrik jack m +0 +6 +6 +Connector_Audio +Jack_6.35mm_Neutrik_NMJ6HFD3_Horizontal +M Series, 6.35mm (1/4in) stereo jack, switched, with full threaded nose and offset PCB pins, https://www.neutrik.com/en/product/nmj6hfd3 +neutrik jack m +0 +6 +6 +Connector_Audio +Jack_6.35mm_Neutrik_NMJ6HFD4_Horizontal +M Series, 6.35mm (1/4in) stereo jack, switched, with full threaded nose and fishtail PCB pins, https://www.neutrik.com/en/product/nmj6hfd4 +neutrik jack m +0 +6 +6 +Connector_Audio +Jack_6.35mm_Neutrik_NMJ6HHD2_Horizontal +M Series, 6.35mm (1/4in) stereo jack, switched, with half threaded nose and offset PCB pins, https://www.neutrik.com/en/product/nmj6hhd2 +neutrik jack m +0 +6 +6 +Connector_Audio +Jack_6.35mm_Neutrik_NRJ3HF-1_Horizontal +Slim Jacks, 6.35mm (1/4in) stereo jack, unswitched, fully threaded nose, sleeve contact/front panel connection, https://www.neutrik.com/en/product/nrj3hf-1 +neutrik jack slim +0 +4 +4 +Connector_Audio +Jack_6.35mm_Neutrik_NRJ4HF-1_Horizontal +Slim Jacks, 6.35mm (1/4in) mono jack, switched, fully threaded nose, sleeve contact/front panel connection, https://www.neutrik.com/en/product/nrj4hf-1 +neutrik jack slim +0 +4 +4 +Connector_Audio +Jack_6.35mm_Neutrik_NRJ4HF_Horizontal +Slim Jacks, 6.35mm (1/4in) mono jack, switched, fully threaded nose, https://www.neutrik.com/en/product/nrj4hf +neutrik jack slim +0 +4 +4 +Connector_Audio +Jack_6.35mm_Neutrik_NRJ4HH-1_Horizontal +Slim Jacks, 6.35mm (1/4in) mono jack, switched, half threaded nose, sleeve contact/front panel connection, https://www.neutrik.com/en/product/nrj4hh-1 +neutrik jack slim +0 +4 +4 +Connector_Audio +Jack_6.35mm_Neutrik_NRJ4HH_Horizontal +Slim Jacks, 6.35mm (1/4in) mono jack, switched, half threaded nose, https://www.neutrik.com/en/product/nrj4hh +neutrik jack slim +0 +4 +4 +Connector_Audio +Jack_6.35mm_Neutrik_NRJ6HF-1-AU_Horizontal +Slim Jacks, 6.35mm (1/4in) stereo jack, switched, gold plated contacts, fully threaded nose, sleeve contact/front panel connection, https://www.neutrik.com/en/product/nrj6hf-1-au +neutrik jack slim +0 +6 +6 +Connector_Audio +Jack_6.35mm_Neutrik_NRJ6HF-1_Horizontal +Slim Jacks, 6.35mm (1/4in) stereo jack, switched, fully threaded nose, sleeve contact/front panel connection, https://www.neutrik.com/en/product/nrj6hf-1 +neutrik jack slim +0 +6 +6 +Connector_Audio +Jack_6.35mm_Neutrik_NRJ6HF-AU_Horizontal +Slim Jacks, 6.35mm (1/4in) stereo jack, switched, gold plated contacts, fully threaded nose, https://www.neutrik.com/en/product/nrj6hf-au +neutrik jack slim +0 +6 +6 +Connector_Audio +Jack_6.35mm_Neutrik_NRJ6HF_Horizontal +Slim Jacks, 6.35mm (1/4in) stereo jack, switched, fully threaded nose, https://www.neutrik.com/en/product/nrj6hf +neutrik jack slim +0 +6 +6 +Connector_Audio +Jack_6.35mm_Neutrik_NRJ6HH-1_Horizontal +Slim Jacks, 6.35mm (1/4in) stereo jack, switched, half threaded nose, sleeve contact/front panel connection, https://www.neutrik.com/en/product/nrj6hh-1 +neutrik jack slim +0 +6 +6 +Connector_Audio +Jack_6.35mm_Neutrik_NRJ6HH-AU_Horizontal +Slim Jacks, 6.35mm (1/4in) stereo jack, switched, gold plated contacts, half threaded nose, https://www.neutrik.com/en/product/nrj6hh-au +neutrik jack slim +0 +6 +6 +Connector_Audio +Jack_6.35mm_Neutrik_NRJ6HH_Horizontal +Slim Jacks, 6.35mm (1/4in) stereo jack, switched, half threaded nose, https://www.neutrik.com/en/product/nrj6hh +neutrik jack slim +0 +6 +6 +Connector_Audio +Jack_6.35mm_Neutrik_NRJ6HM-1-AU_Horizontal +Slim Jacks, 6.35mm (1/4in) stereo jack, metal nose, gold plated contacts, efficient chassis ground connection, T+R+S normalling contact, https://www.neutrik.com/en/product/nrj6hm-1-au +neutrik jack slim +0 +6 +6 +Connector_Audio +Jack_6.35mm_Neutrik_NRJ6HM-1-PRE_Horizontal +Slim Jacks, 6.35mm (1/4in) stereo jack, metal nose, efficient chassis ground connection, T+R normalling contact, https://www.neutrik.com/en/product/nrj6hm-1-pre +neutrik jack slim +0 +6 +5 +Connector_Audio +Jack_6.35mm_Neutrik_NRJ6HM-1_Horizontal +Slim Jacks, 6.35mm (1/4in) stereo jack, metal nose with efficient chassis ground connection, T+R+S normalling contact, https://www.neutrik.com/en/product/nrj6hm-1 +neutrik jack slim +0 +6 +6 +Connector_Audio +Jack_6.35mm_Neutrik_NSJ8HC_Horizontal +Stacking Jacks, Mono dual jack, full nose, https://www.neutrik.com/en/product/nsj8hc +neutrik jack stacking +0 +9 +9 +Connector_Audio +Jack_6.35mm_Neutrik_NSJ8HL_Horizontal +Stacking Jacks, Mono dual jack, quick fix nose, https://www.neutrik.com/en/product/nsj8hl +neutrik jack stacking +0 +9 +9 +Connector_Audio +Jack_6.35mm_Neutrik_NSJ12HC_Horizontal +Stacking Jacks, Stereo dual jack, full nose, https://www.neutrik.com/en/product/nsj12hc +neutrik jack stacking +0 +13 +13 +Connector_Audio +Jack_6.35mm_Neutrik_NSJ12HF-1_Horizontal +Stacking Jacks, Stereo dual jack, full threaded nose, https://www.neutrik.com/en/product/nsj12hf-1 +neutrik jack stacking +0 +13 +13 +Connector_Audio +Jack_6.35mm_Neutrik_NSJ12HH-1_Horizontal +Stacking Jacks, Stereo dual jack, half threaded nose, https://www.neutrik.com/en/product/nsj12hh-1 +neutrik jack stacking +0 +13 +13 +Connector_Audio +Jack_6.35mm_Neutrik_NSJ12HL_Horizontal +Stacking Jacks, Stereo dual jack, quick fix nose, https://www.neutrik.com/en/product/nsj12hl +neutrik jack stacking +0 +13 +13 +Connector_Audio +Jack_XLR-6.35mm_Neutrik_NCJ5FI-H-0_Horizontal +Combo I series, 3 pole XLR female receptacle with 6.35mm (1/4in) mono jack without switching contact, horizontal PCB mount, https://www.neutrik.com/en/product/ncj5fi-h-0 +neutrik jack combo i +0 +6 +6 +Connector_Audio +Jack_XLR-6.35mm_Neutrik_NCJ5FI-H_Horizontal +Combo I series, 3 pole XLR female receptacle with 6.35mm (1/4in) mono jack without switching contact, horizontal PCB mount, retention spring, https://www.neutrik.com/en/product/ncj5fi-h +neutrik jack combo i +0 +6 +6 +Connector_Audio +Jack_XLR-6.35mm_Neutrik_NCJ5FI-V-0_Vertical +Combo I series, 3 pole XLR female receptacle with 6.35mm (1/4in) mono jack without switching contact, vertical PCB mount, https://www.neutrik.com/en/product/ncj5fi-v-0 +neutrik jack combo i +0 +6 +6 +Connector_Audio +Jack_XLR-6.35mm_Neutrik_NCJ5FI-V_Vertical +Combo I series, 3 pole XLR female receptacle with 6.35mm (1/4in) mono jack without switching contact, vertical PCB mount, retention spring, https://www.neutrik.com/en/product/ncj5fi-v +neutrik jack combo i +0 +6 +6 +Connector_Audio +Jack_XLR-6.35mm_Neutrik_NCJ6FA-H-0_Horizontal +Combo A series, 3 pole XLR female receptacle with 6.35mm (1/4in) stereo jack, horizontal PCB mount, retention spring, https://www.neutrik.com/en/product/ncj6fa-h-0 +neutrik jack combo a +0 +8 +7 +Connector_Audio +Jack_XLR-6.35mm_Neutrik_NCJ6FA-H-DA_Horizontal +Combo A series, 3 pole XLR female receptacle with 6.35mm (1/4in) stereo jack, horizontal PCB mount, asymmetric push, https://www.neutrik.com/en/product/ncj6fa-h-da +neutrik jack combo a +0 +8 +7 +Connector_Audio +Jack_XLR-6.35mm_Neutrik_NCJ6FA-H_Horizontal +Combo A series, 3 pole XLR female receptacle with 6.35mm (1/4in) stereo jack, horizontal PCB mount, https://www.neutrik.com/en/product/ncj6fa-h +neutrik jack combo a +0 +8 +7 +Connector_Audio +Jack_XLR-6.35mm_Neutrik_NCJ6FA-V-0_Vertical +Combo A series, 3 pole XLR female receptacle with 6.35mm (1/4in) stereo jack, vertical PCB mount, retention spring, https://www.neutrik.com/en/product/ncj6fa-v-0 +neutrik jack combo a +0 +8 +7 +Connector_Audio +Jack_XLR-6.35mm_Neutrik_NCJ6FA-V-DA_Vertical +Combo A series, 3 pole XLR female receptacle with 6.35mm (1/4in) stereo jack, vertical PCB mount, asymmetric push, https://www.neutrik.com/en/product/ncj6fa-v-da +neutrik jack combo a +0 +8 +7 +Connector_Audio +Jack_XLR-6.35mm_Neutrik_NCJ6FA-V_Vertical +Combo A series, 3 pole XLR female receptacle with 6.35mm (1/4in) stereo jack, vertical PCB mount, https://www.neutrik.com/en/product/ncj6fa-v +neutrik jack combo a +0 +8 +7 +Connector_Audio +Jack_XLR-6.35mm_Neutrik_NCJ6FI-H-0_Horizontal +Combo I series, 3 pole XLR female receptacle with 6.35mm (1/4in) stereo jack without switching contact, horizontal PCB mount, https://www.neutrik.com/en/product/ncj6fi-h-0 +neutrik jack combo i +0 +7 +7 +Connector_Audio +Jack_XLR-6.35mm_Neutrik_NCJ6FI-H_Horizontal +Combo I series, 3 pole XLR female receptacle with 6.35mm (1/4in) stereo jack without switching contact, horizontal PCB mount, retention spring, https://www.neutrik.com/en/product/ncj6fi-h +neutrik jack combo i +0 +7 +7 +Connector_Audio +Jack_XLR-6.35mm_Neutrik_NCJ6FI-V-0_Vertical +Combo I series, 3 pole XLR female receptacle with 6.35mm (1/4in) stereo jack without switching contact, vertical PCB mount, https://www.neutrik.com/en/product/ncj6fi-v-0 +neutrik jack combo i +0 +7 +7 +Connector_Audio +Jack_XLR-6.35mm_Neutrik_NCJ6FI-V_Vertical +Combo I series, 3 pole XLR female receptacle with 6.35mm (1/4in) stereo jack without switching contact, vertical PCB mount, retention spring, https://www.neutrik.com/en/product/ncj6fi-v +neutrik jack combo i +0 +7 +7 +Connector_Audio +Jack_XLR-6.35mm_Neutrik_NCJ9FI-H-0_Horizontal +Combo I series, 3 pole XLR female receptacle with 6.35mm (1/4in) switching stereo jack, horizontal PCB mount, https://www.neutrik.com/en/product/ncj9fi-h-0 +neutrik jack combo i +0 +10 +10 +Connector_Audio +Jack_XLR-6.35mm_Neutrik_NCJ9FI-H_Horizontal +Combo I series, 3 pole XLR female receptacle with 6.35mm (1/4in) switching stereo jack, horizontal PCB mount, retention spring, https://www.neutrik.com/en/product/ncj9fi-h +neutrik jack combo i +0 +10 +10 +Connector_Audio +Jack_XLR-6.35mm_Neutrik_NCJ9FI-V-0_Vertical +Combo I series, 3 pole XLR female receptacle with 6.35mm (1/4in) switching stereo jack, vertical PCB mount, https://www.neutrik.com/en/product/ncj9fi-v-0 +neutrik jack combo i +0 +10 +10 +Connector_Audio +Jack_XLR-6.35mm_Neutrik_NCJ9FI-V_Vertical +Combo I series, 3 pole XLR female receptacle with 6.35mm (1/4in) switching stereo jack, vertical PCB mount, retention spring, https://www.neutrik.com/en/product/ncj9fi-v +neutrik jack combo i +0 +10 +10 +Connector_Audio +Jack_XLR-6.35mm_Neutrik_NCJ10FI-H-0_Horizontal +Combo I series, 3 pole XLR female receptacle with 6.35mm (1/4in) switching stereo jack and switching ground contact, horizontal PCB mount, https://www.neutrik.com/en/product/ncj10fi-h-0 +neutrik jack combo i +0 +11 +11 +Connector_Audio +Jack_XLR-6.35mm_Neutrik_NCJ10FI-H_Horizontal +Combo I series, 3 pole XLR female receptacle with 6.35mm (1/4in) switching stereo jack and switching ground contact, horizontal PCB mount, retention spring, https://www.neutrik.com/en/product/ncj10fi-h +neutrik jack combo i +0 +11 +11 +Connector_Audio +Jack_XLR-6.35mm_Neutrik_NCJ10FI-V-0_Vertical +Combo I series, 3 pole XLR female receptacle with 6.35mm (1/4in) switching stereo jack and switching ground contact, vertical PCB mount, https://www.neutrik.com/en/product/ncj10fi-v-0 +neutrik jack combo i +0 +11 +11 +Connector_Audio +Jack_XLR-6.35mm_Neutrik_NCJ10FI-V_Vertical +Combo I series, 3 pole XLR female receptacle with 6.35mm (1/4in) switching stereo jack and switching ground contact, vertical PCB mount, retention spring, https://www.neutrik.com/en/product/ncj10fi-v +neutrik jack combo i +0 +11 +11 +Connector_Audio +Jack_XLR_Neutrik_NC3FAAH-0_Horizontal +AA Series, 3 pole female XLR receptacle, grounding: without ground/shell contact, horizontal PCB mount, retention spring instead of latch, https://www.neutrik.com/en/product/nc3faah-0 +neutrik xlr aa +0 +3 +3 +Connector_Audio +Jack_XLR_Neutrik_NC3FAAH1-0_Horizontal +AA Series, 3 pole female XLR receptacle, grounding: mating connector shell to pin1 and front panel, horizontal PCB mount, retention spring instead of latch, https://www.neutrik.com/en/product/nc3faah1-0 +neutrik xlr aa +0 +3 +3 +Connector_Audio +Jack_XLR_Neutrik_NC3FAAH1-DA_Horizontal +AA Series, 3 pole female XLR receptacle, grounding: mating connector shell to pin1 and front panel, horizontal PCB mount, asymmetric push, https://www.neutrik.com/en/product/nc3faah1-da +neutrik xlr aa +0 +3 +3 +Connector_Audio +Jack_XLR_Neutrik_NC3FAAH1_Horizontal +AA Series, 3 pole female XLR receptacle, grounding: mating connector shell to pin1 and front panel, horizontal PCB mount, https://www.neutrik.com/en/product/nc3faah1 +neutrik xlr aa +0 +3 +3 +Connector_Audio +Jack_XLR_Neutrik_NC3FAAH2-0_Horizontal +AA Series, 3 pole female XLR receptacle, grounding: separate ground contact to mating connector shell and front panel, horizontal PCB mount, retention spring instead of latch, https://www.neutrik.com/en/product/nc3faah2-0 +neutrik xlr aa +0 +4 +4 +Connector_Audio +Jack_XLR_Neutrik_NC3FAAH2_Horizontal +AA Series, 3 pole female XLR receptacle, grounding: separate ground contact to mating connector shell and front panel, horizontal PCB mount, https://www.neutrik.com/en/product/nc3faah2 +neutrik xlr aa +0 +4 +4 +Connector_Audio +Jack_XLR_Neutrik_NC3FAAH_Horizontal +AA Series, 3 pole female XLR receptacle, grounding: without ground/shell contact, horizontal PCB mount, https://www.neutrik.com/en/product/nc3faah +neutrik xlr aa +0 +3 +3 +Connector_Audio +Jack_XLR_Neutrik_NC3FAAV-0_Vertical +AA Series, 3 pole female receptacle, grounding: without ground/shell contact, vertical PCB mount, retention spring instead of latch, https://www.neutrik.com/en/product/nc3faav-0 +neutrik xlr aa +0 +3 +3 +Connector_Audio +Jack_XLR_Neutrik_NC3FAAV1-0_Vertical +AA Series, 3 pole female receptacle, grounding: mating connector shell to pin1 and front panel, vertical PCB mount, retention spring instead of latch, https://www.neutrik.com/en/product/nc3faav1-0 +neutrik xlr aa +0 +3 +3 +Connector_Audio +Jack_XLR_Neutrik_NC3FAAV1-DA_Vertical +AA Series, 3 pole female receptacle, grounding: mating connector shell to pin1 and front panel, vertical PCB mount, asymmetric push, https://www.neutrik.com/en/product/nc3faav1-da +neutrik xlr aa +0 +3 +3 +Connector_Audio +Jack_XLR_Neutrik_NC3FAAV1_Vertical +AA Series, 3 pole female receptacle, grounding: mating connector shell to pin1 and front panel, vertical PCB mount, https://www.neutrik.com/en/product/nc3faav1 +neutrik xlr aa +0 +3 +3 +Connector_Audio +Jack_XLR_Neutrik_NC3FAAV2-0_Vertical +AA Series, 3 pole female receptacle, grounding: separate ground contact to mating connector shell and front panel, vertical PCB mount, retention spring instead of latch, https://www.neutrik.com/en/product/nc3faav2-0 +neutrik xlr aa +0 +4 +4 +Connector_Audio +Jack_XLR_Neutrik_NC3FAAV2_Vertical +AA Series, 3 pole female receptacle, grounding: separate ground contact to mating connector shell and front panel, vertical PCB mount, https://www.neutrik.com/en/product/nc3faav2 +neutrik xlr aa +0 +4 +4 +Connector_Audio +Jack_XLR_Neutrik_NC3FAAV_Vertical +AA Series, 3 pole female receptacle, grounding: without ground/shell contact, vertical PCB mount, https://www.neutrik.com/en/product/nc3faav +neutrik xlr aa +0 +3 +3 +Connector_Audio +Jack_XLR_Neutrik_NC3FAH-0_Horizontal +A Series, 3 pole female XLR receptacle, grounding: without ground/shell contact, horizontal PCB mount, retention spring instead of latch, https://www.neutrik.com/en/product/nc3fah-0 +neutrik xlr a +0 +3 +3 +Connector_Audio +Jack_XLR_Neutrik_NC3FAH1-0_Horizontal +A Series, 3 pole female XLR receptacle, grounding: mating connector shell to pin1 and front panel, horizontal PCB mount, retention spring instead of latch, https://www.neutrik.com/en/product/nc3fah1-0 +neutrik xlr a +0 +3 +3 +Connector_Audio +Jack_XLR_Neutrik_NC3FAH1-DA_Horizontal +A Series, 3 pole female XLR receptacle, grounding: mating connector shell to pin1 and front panel, horizontal PCB mount, asymmetric push, https://www.neutrik.com/en/product/nc3fah1-da +neutrik xlr a +0 +3 +3 +Connector_Audio +Jack_XLR_Neutrik_NC3FAH1_Horizontal +A Series, 3 pole female XLR receptacle, grounding: mating connector shell to pin1 and front panel, horizontal PCB mount, https://www.neutrik.com/en/product/nc3fah1 +neutrik xlr a +0 +3 +3 +Connector_Audio +Jack_XLR_Neutrik_NC3FAH2-0_Horizontal +A Series, 3 pole female XLR receptacle, grounding: separate ground contact to mating connector shell and front panel, horizontal PCB mount, retention spring instead of latch, https://www.neutrik.com/en/product/nc3fah2-0 +neutrik xlr a +0 +4 +4 +Connector_Audio +Jack_XLR_Neutrik_NC3FAH2-DA_Horizontal +A Series, 3 pole female XLR receptacle, grounding: separate ground contact to mating connector shell and front panel, horizontal PCB mount, asymmetric push, https://www.neutrik.com/en/product/nc3fah2-da +neutrik xlr a +0 +4 +4 +Connector_Audio +Jack_XLR_Neutrik_NC3FAH2_Horizontal +A Series, 3 pole female XLR receptacle, grounding: separate ground contact to mating connector shell and front panel, horizontal PCB mount, https://www.neutrik.com/en/product/nc3fah2 +neutrik xlr a +0 +4 +4 +Connector_Audio +Jack_XLR_Neutrik_NC3FAHL-0_Horizontal +A Series, 3 pole female XLR receptacle, grounding: without ground/shell contact, lateral left PCB mount, retention spring instead of latch, https://www.neutrik.com/en/product/nc3fahl-0 +neutrik xlr a +0 +3 +3 +Connector_Audio +Jack_XLR_Neutrik_NC3FAHL1-0_Horizontal +A Series, 3 pole female XLR receptacle, grounding: mating connector shell to pin1 and front panel, lateral left PCB mount, retention spring instead of latch, https://www.neutrik.com/en/product/nc3fahl1-0 +neutrik xlr a +0 +3 +3 +Connector_Audio +Jack_XLR_Neutrik_NC3FAHL1_Horizontal +A Series, 3 pole female XLR receptacle, grounding: mating connector shell to pin1 and front panel, lateral left PCB mount, https://www.neutrik.com/en/product/nc3fahl1 +neutrik xlr a +0 +3 +3 +Connector_Audio +Jack_XLR_Neutrik_NC3FAHR-0_Horizontal +A Series, 3 pole female XLR receptacle, grounding: without ground / shell contact, lateral right PCB mount, retention spring instead of latch, https://www.neutrik.com/en/product/nc3fahr-0 +neutrik xlr a +0 +3 +3 +Connector_Audio +Jack_XLR_Neutrik_NC3FAHR1-0_Horizontal +A Series, 3 pole female XLR receptacle, grounding: mating connector shell to pin1 and front panel, lateral right PCB mount, retention spring instead of latch, https://www.neutrik.com/en/product/nc3fahr1-0 +neutrik xlr a +0 +3 +3 +Connector_Audio +Jack_XLR_Neutrik_NC3FAHR1_Horizontal +A Series, 3 pole female XLR receptacle, grounding: mating connector shell to pin1 and front panel, lateral right PCB mount, https://www.neutrik.com/en/product/nc3fahr1 +neutrik xlr a +0 +3 +3 +Connector_Audio +Jack_XLR_Neutrik_NC3FAHR2-0_Horizontal +A Series, 3 pole female XLR receptacle, grounding: separate ground contact to mating connector shell and front panel, lateral right PCB mount, retention spring instead of latch, https://www.neutrik.com/en/product/nc3fahr2-0 +neutrik xlr a +0 +4 +4 +Connector_Audio +Jack_XLR_Neutrik_NC3FAHR2_Horizontal +A Series, 3 pole female XLR receptacle, grounding: separate ground contact to mating connector shell and front panel, lateral right PCB mount, https://www.neutrik.com/en/product/nc3fahr2 +neutrik xlr a +0 +4 +4 +Connector_Audio +Jack_XLR_Neutrik_NC3FAH_Horizontal +A Series, 3 pole female XLR receptacle, grounding: without ground/shell contact, horizontal PCB mount, https://www.neutrik.com/en/product/nc3fah +neutrik xlr a +0 +3 +3 +Connector_Audio +Jack_XLR_Neutrik_NC3FAV-0_Vertical +A Series, 3 pole female XLR receptacle, grounding: without ground / shell contact, vertical PCB mount, retention spring instead of latch, https://www.neutrik.com/en/product/nc3fav-0 +neutrik xlr a +0 +3 +3 +Connector_Audio +Jack_XLR_Neutrik_NC3FAV1-0_Vertical +A Series, 3 pole female XLR receptacle, grounding: mating connector shell to pin1 and front panel, vertical PCB mount, retention spring instead of latch, https://www.neutrik.com/en/product/nc3fav1-0 +neutrik xlr a +0 +3 +3 +Connector_Audio +Jack_XLR_Neutrik_NC3FAV1-DA_Vertical +A Series, 3 pole female XLR receptacle, grounding: mating connector shell to pin1 and front panel, vertical PCB mount, asymmetric push, https://www.neutrik.com/en/product/nc3fav1-da +neutrik xlr a +0 +3 +3 +Connector_Audio +Jack_XLR_Neutrik_NC3FAV1_Vertical +A Series, 3 pole female XLR receptacle, grounding: mating connector shell to pin1 and front panel, vertical PCB mount, https://www.neutrik.com/en/product/nc3fav1 +neutrik xlr a +0 +3 +3 +Connector_Audio +Jack_XLR_Neutrik_NC3FAV2-0_Vertical +A Series, 3 pole female XLR receptacle, grounding: separate ground contact to mating connector shell and front panel, vertical PCB mount, retention spring instead of latch, https://www.neutrik.com/en/product/nc3fav2-0 +neutrik xlr a +0 +4 +4 +Connector_Audio +Jack_XLR_Neutrik_NC3FAV2-DA_Vertical +A Series, 3 pole female XLR receptacle, grounding: separate ground contact to mating connector shell and front panel, vertical PCB mount, asymmetric push, https://www.neutrik.com/en/product/nc3fav2-da +neutrik xlr a +0 +4 +4 +Connector_Audio +Jack_XLR_Neutrik_NC3FAV2_Vertical +A Series, 3 pole female XLR receptacle, grounding: separate ground contact to mating connector shell and front panel, vertical PCB mount, https://www.neutrik.com/en/product/nc3fav2 +neutrik xlr a +0 +4 +4 +Connector_Audio +Jack_XLR_Neutrik_NC3FAV_Vertical +A Series, 3 pole female XLR receptacle, grounding: without ground / shell contact, vertical PCB mount, https://www.neutrik.com/en/product/nc3fav +neutrik xlr a +0 +3 +3 +Connector_Audio +Jack_XLR_Neutrik_NC3FBH1-B_Horizontal +B Series, 3 pole female XLR receptacle, grounding: mating connector shell to pin1 and front panel, horizontal PCB mount, black chrome shell, https://www.neutrik.com/en/product/nc3fbh1-b +neutrik xlr b +0 +3 +3 +Connector_Audio +Jack_XLR_Neutrik_NC3FBH1-DA_Horizontal +B Series, 3 pole female XLR receptacle, grounding: mating connector shell to pin1 and front panel, horizontal PCB mount, asymmetric push, https://www.neutrik.com/en/product/nc3fbh1-da +neutrik xlr b +0 +3 +3 +Connector_Audio +Jack_XLR_Neutrik_NC3FBH1-E_Horizontal +B Series, 3 pole female XLR receptacle, grounding: mating connector shell to pin1 and front panel, horizontal PCB mount, additional ground contacts, https://www.neutrik.com/en/product/nc3fbh1-e +neutrik xlr b +0 +3 +3 +Connector_Audio +Jack_XLR_Neutrik_NC3FBH1_Horizontal +B Series, 3 pole female XLR receptacle, grounding: mating connector shell to pin1 and front panel, horizontal PCB mount, https://www.neutrik.com/en/product/nc3fbh1 +neutrik xlr b +0 +3 +3 +Connector_Audio +Jack_XLR_Neutrik_NC3FBH2-B_Horizontal +B Series, 3 pole female XLR receptacle, grounding: separate ground contact to mating connector shell and front panel, horizontal PCB mount, black chrome shell, https://www.neutrik.com/en/product/nc3fbh2-b +neutrik xlr b +0 +4 +4 +Connector_Audio +Jack_XLR_Neutrik_NC3FBH2-DA_Horizontal +B Series, 3 pole female XLR receptacle, grounding: separate ground contact to mating connector shell and front panel, horizontal PCB mount, asymmetric push, https://www.neutrik.com/en/product/nc3fbh2-da +neutrik xlr b +0 +4 +4 +Connector_Audio +Jack_XLR_Neutrik_NC3FBH2-E_Horizontal +B Series, 3 pole female XLR receptacle, grounding: separate ground contact to mating connector shell and front panel, horizontal PCB mount, additional ground contacts, https://www.neutrik.com/en/product/nc3fbh2-e +neutrik xlr b +0 +4 +4 +Connector_Audio +Jack_XLR_Neutrik_NC3FBH2_Horizontal +B Series, 3 pole female XLR receptacle, grounding: separate ground contact to mating connector shell and front panel, horizontal PCB mount, https://www.neutrik.com/en/product/nc3fbh2 +neutrik xlr b +0 +4 +4 +Connector_Audio +Jack_XLR_Neutrik_NC3FBHL1_Horizontal +B Series, 3 pole female XLR receptacle, grounding: mating connector shell to pin1 and front panel, lateral left PCB mount, https://www.neutrik.com/en/product/nc3fbhl1 +neutrik xlr b +0 +3 +3 +Connector_Audio +Jack_XLR_Neutrik_NC3FBV1-0_Vertical +B Series, 3 pole female XLR receptacle, grounding: mating connector shell to pin1 and front panel, vertical PCB mount, retention spring, no latch, https://www.neutrik.com/en/product/nc3fbv1-0 +neutrik xlr b +0 +3 +3 +Connector_Audio +Jack_XLR_Neutrik_NC3FBV1-B_Vertical +B Series, 3 pole female XLR receptacle, grounding: mating connector shell to pin1 and front panel, vertical PCB mount, black chrome shell, https://www.neutrik.com/en/product/nc3fbv1-b +neutrik xlr b +0 +3 +3 +Connector_Audio +Jack_XLR_Neutrik_NC3FBV1-DA_Vertical +B Series, 3 pole female XLR receptacle, grounding: mating connector shell to pin1 and front panel, vertical PCB mount, asymmetric push, https://www.neutrik.com/en/product/nc3fbv1-da +neutrik xlr b +0 +3 +3 +Connector_Audio +Jack_XLR_Neutrik_NC3FBV1_Vertical +B Series, 3 pole female XLR receptacle, grounding: mating connector shell to pin1 and front panel, vertical PCB mount, https://www.neutrik.com/en/product/nc3fbv1 +neutrik xlr b +0 +3 +3 +Connector_Audio +Jack_XLR_Neutrik_NC3FBV2-B_Vertical +B Series, 3 pole female XLR receptacle, grounding: separate ground contact to mating connector shell and front panel, vertical PCB mount, black chrome shell, https://www.neutrik.com/en/product/nc3fbv2-b +neutrik xlr b +0 +4 +4 +Connector_Audio +Jack_XLR_Neutrik_NC3FBV2-DA_Vertical +B Series, 3 pole female XLR receptacle, grounding: separate ground contact to mating connector shell and front panel, vertical PCB mount, asymmetric push, https://www.neutrik.com/en/product/nc3fbv2-da +neutrik xlr b +0 +4 +4 +Connector_Audio +Jack_XLR_Neutrik_NC3FBV2-SW_Vertical +B Series, 3 pole female XLR receptacle, switching contacts, grounding: separate ground contact to mating connector shell and front panel, vertical PCB mount, https://www.neutrik.com/en/product/nc3fbv2-sw +neutrik xlr b +0 +7 +7 +Connector_Audio +Jack_XLR_Neutrik_NC3FBV2_Vertical +B Series, 3 pole female XLR receptacle, grounding: separate ground contact to mating connector shell and front panel, vertical PCB mount, https://www.neutrik.com/en/product/nc3fbv2 +neutrik xlr b +0 +4 +4 +Connector_Audio +Jack_XLR_Neutrik_NC3MAAH-0_Horizontal +AA Series, 3 pole male XLR receptacle, grounding: ground contact connected to shell ground, but not to front panel and Pin 1, horizontal PCB mount, https://www.neutrik.com/en/product/nc3maah-0 +neutrik xlr aa +0 +4 +4 +Connector_Audio +Jack_XLR_Neutrik_NC3MAAH-1_Horizontal +AA Series, 3 pole male XLR receptacle, grounding: mating connector shell to pin1 and front panel, horizontal PCB mount, https://www.neutrik.com/en/product/nc3maah-1 +neutrik xlr aa +0 +3 +3 +Connector_Audio +Jack_XLR_Neutrik_NC3MAAH_Horizontal +AA Series, 3 pole male XLR receptacle, grounding: separate ground contact to mating connector shell and front panel, horizontal PCB mount, https://www.neutrik.com/en/product/nc3maah +neutrik xlr aa +0 +4 +4 +Connector_Audio +Jack_XLR_Neutrik_NC3MAAV-0_Vertical +AA Series, 3 pole male XLR receptacle, grounding: ground contact connected to shell ground, but not to front panel and Pin 1, vertical PCB mount, https://www.neutrik.com/en/product/nc3maav-0 +neutrik xlr aa +0 +4 +4 +Connector_Audio +Jack_XLR_Neutrik_NC3MAAV-1_Vertical +AA Series, 3 pole male XLR receptacle, grounding: mating connector shell to pin1 and front panel, vertical PCB mount, https://www.neutrik.com/en/product/nc3maav-1 +neutrik xlr aa +0 +3 +3 +Connector_Audio +Jack_XLR_Neutrik_NC3MAAV_Vertical +AA Series, 3 pole male XLR receptacle, grounding: separate ground contact to mating connector shell and front panel, vertical PCB mount, https://www.neutrik.com/en/product/nc3maav +neutrik xlr aa +0 +4 +4 +Connector_Audio +Jack_XLR_Neutrik_NC3MAFH-PH_Horizontal +A Series, Chassis connector H female (A series layout), horizontal PCB mount, https://www.neutrik.com/en/product/nc4mafh-ph +neutrik xlr a +0 +3 +3 +Connector_Audio +Jack_XLR_Neutrik_NC3MAH-0_Horizontal +A Series, 3 pole male XLR receptacle, grounding: ground contact connected to shell ground, but not to front panel and Pin 1, horizontal PCB mount, https://www.neutrik.com/en/product/nc3mah-0 +neutrik xlr a +0 +4 +4 +Connector_Audio +Jack_XLR_Neutrik_NC3MAHL_Horizontal +A Series, 3 pole male XLR receptacle, grounding: separate ground contact to mating connector shell and front panel, lateral left PCB mount, https://www.neutrik.com/en/product/nc3mahl +neutrik xlr a +0 +4 +4 +Connector_Audio +Jack_XLR_Neutrik_NC3MAHR_Horizontal +A Series, 3 pole male XLR receptacle, grounding: separate ground contact to mating connector shell and front panel, lateral right PCB mount, https://www.neutrik.com/en/product/nc3mahr +neutrik xlr a +0 +4 +4 +Connector_Audio +Jack_XLR_Neutrik_NC3MAH_Horizontal +A Series, 3 pole male XLR receptacle, grounding: separate ground contact to mating connector shell and front panel, horizontal PCB mount, https://www.neutrik.com/en/product/nc3mah +neutrik xlr a +0 +4 +4 +Connector_Audio +Jack_XLR_Neutrik_NC3MAMH-PH_Horizontal +A Series, Chassis connector Phoenix H male (A series layout), horizontal PCB mount, https://www.neutrik.com/en/product/nc4mamh-ph +neutrik xlr a +0 +3 +3 +Connector_Audio +Jack_XLR_Neutrik_NC3MAV-0_Vertical +A Series, 3 pole male XLR receptacle, grounding: ground contact connected to shell ground, but not to front panel and Pin 1, vertical PCB mount, https://www.neutrik.com/en/product/nc3mav-0 +neutrik xlr a +0 +4 +4 +Connector_Audio +Jack_XLR_Neutrik_NC3MAV_Vertical +A Series, 3 pole male XLR receptacle, grounding: separate ground contact to mating connector shell and front panel, vertical PCB mount, https://www.neutrik.com/en/product/nc3mav +neutrik xlr a +0 +4 +4 +Connector_Audio +Jack_XLR_Neutrik_NC3MBH-0_Horizontal +B Series, 3 pole male XLR receptacle, grounding: ground contact connected to shell ground, but not to front panel and Pin 1, steel retention lug, horizontal PCB mount, https://www.neutrik.com/en/product/nc3mbh-0 +neutrik xlr b +0 +4 +4 +Connector_Audio +Jack_XLR_Neutrik_NC3MBH-1_Horizontal +B Series, 3 pole male XLR receptacle, grounding: mating connector shell to pin1 and front panel, steel retention lug, horizontal PCB mount, https://www.neutrik.com/en/product/nc3mbh-1 +neutrik xlr b +0 +3 +3 +Connector_Audio +Jack_XLR_Neutrik_NC3MBH-B_Horizontal +B Series, 3 pole male XLR receptacle, grounding: separate ground contact to mating connector shell and front panel, steel retention lug, horizontal PCB mount, black chrome shell, https://www.neutrik.com/en/product/nc3mbh-b +neutrik xlr b +0 +4 +4 +Connector_Audio +Jack_XLR_Neutrik_NC3MBH-E_Horizontal +B Series, 3 pole male XLR receptacle, grounding: separate ground contact to mating connector shell and front panel, steel retention lug, horizontal PCB mount, additional ground contacts, https://www.neutrik.com/en/product/nc3mbh-e +neutrik xlr b +0 +4 +4 +Connector_Audio +Jack_XLR_Neutrik_NC3MBHL-B_Horizontal +B Series, 3 pole male XLR receptacle, grounding: separate ground contact to mating connector shell and front panel, steel retention lug, lateral left PCB mount, black chrome shell, https://www.neutrik.com/en/product/nc3mbhl-b +neutrik xlr b +0 +4 +4 +Connector_Audio +Jack_XLR_Neutrik_NC3MBHL_Horizontal +B Series, 3 pole male XLR receptacle, grounding: separate ground contact to mating connector shell and front panel, steel retention lug, lateral left PCB mount, https://www.neutrik.com/en/product/nc3mbhl +neutrik xlr b +0 +4 +4 +Connector_Audio +Jack_XLR_Neutrik_NC3MBHR-B_Horizontal +B Series, 3 pole male XLR receptacle, grounding: separate ground contact to mating connector shell and front panel, steel retention lug, lateral right PCB mount, black chrome shell, https://www.neutrik.com/en/product/nc3mbhr-b +neutrik xlr b +0 +4 +4 +Connector_Audio +Jack_XLR_Neutrik_NC3MBHR_Horizontal +B Series, 3 pole male XLR receptacle, grounding: separate ground contact to mating connector shell and front panel, steel retention lug, lateral right PCB mount, https://www.neutrik.com/en/product/nc3mbhr +neutrik xlr b +0 +4 +4 +Connector_Audio +Jack_XLR_Neutrik_NC3MBH_Horizontal +B Series, 3 pole male XLR receptacle, grounding: separate ground contact to mating connector shell and front panel, steel retention lug, horizontal PCB mount, https://www.neutrik.com/en/product/nc3mbh +neutrik xlr b +0 +4 +4 +Connector_Audio +Jack_XLR_Neutrik_NC3MBV-0_Vertical +B Series, 3 pole male XLR receptacle, grounding: ground contact connected to shell ground, but not to front panel and Pin 1, steel retention lug, vertical PCB mount, https://www.neutrik.com/en/product/nc3mbv-0 +neutrik xlr b +0 +4 +4 +Connector_Audio +Jack_XLR_Neutrik_NC3MBV-1_Vertical +B Series, 3 pole male XLR receptacle, grounding: mating connector shell to pin1 and front panel, steel retention lug, vertical PCB mount, https://www.neutrik.com/en/product/nc3mbv-1 +neutrik xlr b +0 +3 +3 +Connector_Audio +Jack_XLR_Neutrik_NC3MBV-B_Vertical +B Series, 3 pole male XLR receptacle, grounding: separate ground contact to mating connector shell and front panel, steel retention lug, vertical PCB mount, black chrome shell, https://www.neutrik.com/en/product/nc3mbv-b +neutrik xlr b +0 +4 +4 +Connector_Audio +Jack_XLR_Neutrik_NC3MBV-E_Vertical +B Series, 3 pole male XLR receptacle, grounding: separate ground contact to mating connector shell and front panel, steel retention lug, vertical PCB mount, additional ground contacts, https://www.neutrik.com/en/product/nc3mbv-e +neutrik xlr b +0 +4 +4 +Connector_Audio +Jack_XLR_Neutrik_NC3MBV-SW_Vertical +B Series, 3 pole male XLR receptacle, switching contacts, grounding: separate ground contact to mating connector shell and front panel, vertical PCB mount, https://www.neutrik.com/en/product/nc3mbv-sw +neutrik xlr b +0 +7 +7 +Connector_Audio +Jack_XLR_Neutrik_NC3MBV_Vertical +B Series, 3 pole male XLR receptacle, grounding: separate ground contact to mating connector shell and front panel, steel retention lug, vertical PCB mount, https://www.neutrik.com/en/product/nc3mbv +neutrik xlr b +0 +4 +4 +Connector_Audio +Jack_XLR_Neutrik_NC4FAH-0_Horizontal +A Series, 4 pole female XLR receptacle, grounding: separate ground contact to mating connector shell and front panel, horizontal PCB mount, retention spring instead of latch, https://www.neutrik.com/en/product/nc4fah-0 +neutrik xlr a +0 +5 +5 +Connector_Audio +Jack_XLR_Neutrik_NC4FAH_Horizontal +A Series, 4 pole female XLR receptacle, grounding: separate ground contact to mating connector shell and front panel, horizontal PCB mount, https://www.neutrik.com/en/product/nc4fah +neutrik xlr a +0 +5 +5 +Connector_Audio +Jack_XLR_Neutrik_NC4FAV-0_Vertical +A Series, 4 pole female XLR receptacle, grounding: separate ground contact to mating connector shell and front panel, vertical PCB mount, retention spring instead of latch, https://www.neutrik.com/en/product/nc4fav-0 +neutrik xlr a +0 +5 +5 +Connector_Audio +Jack_XLR_Neutrik_NC4FAV_Vertical +A Series, 4 pole female XLR receptacle, grounding: separate ground contact to mating connector shell and front panel, vertical PCB mount, https://www.neutrik.com/en/product/nc4fav +neutrik xlr a +0 +5 +5 +Connector_Audio +Jack_XLR_Neutrik_NC4FBH_Horizontal +B Series, 4 pole female XLR receptacle, grounding: separate ground contact to mating connector shell and front panel, horizontal PCB mount, https://www.neutrik.com/en/product/nc4fbh +neutrik xlr b +0 +5 +5 +Connector_Audio +Jack_XLR_Neutrik_NC4FBV_Vertical +B Series, 4 pole female XLR receptacle, grounding: separate ground contact to mating connector shell and front panel, vertical PCB mount, https://www.neutrik.com/en/product/nc4fbv +neutrik xlr b +0 +5 +5 +Connector_Audio +Jack_XLR_Neutrik_NC4MAH_Horizontal +A Series, 4 pole male XLR receptacle, grounding: separate ground contact to mating connector shell and front panel, horizontal PCB mount, https://www.neutrik.com/en/product/nc4mah +neutrik xlr a +0 +5 +5 +Connector_Audio +Jack_XLR_Neutrik_NC4MAV_Vertical +A Series, 4 pole male XLR receptacle, grounding: separate ground contact to mating connector shell and front panel, vertical PCB mount, https://www.neutrik.com/en/product/nc4mav +neutrik xlr a +0 +5 +5 +Connector_Audio +Jack_XLR_Neutrik_NC4MBH_Horizontal +B Series, 4 pole male XLR receptacle, grounding: separate ground contact to mating connector shell and front panel, horizontal PCB mount, https://www.neutrik.com/en/product/nc4mbh +neutrik xlr b +0 +5 +5 +Connector_Audio +Jack_XLR_Neutrik_NC4MBV_Vertical +B Series, 4 pole male XLR receptacle, grounding: separate ground contact to mating connector shell and front panel, vertical PCB mount, https://www.neutrik.com/en/product/nc4mbv +neutrik xlr b +0 +5 +5 +Connector_Audio +Jack_XLR_Neutrik_NC5FAH-0_Horizontal +A Series, 5 pole female XLR receptacle, grounding: separate ground contact to mating connector shell and front panel, horizontal PCB mount, retention spring instead of latch, https://www.neutrik.com/en/product/nc5fah-0 +neutrik xlr a +0 +6 +6 +Connector_Audio +Jack_XLR_Neutrik_NC5FAH-DA_Horizontal +A Series, 5 pole female XLR receptacle, grounding: mating connector shell to pin1 and front panel, horizontal PCB mount, asymmetric push, https://www.neutrik.com/en/product/nc5fah-da +neutrik xlr a +0 +6 +6 +Connector_Audio +Jack_XLR_Neutrik_NC5FAH_Horizontal +A Series, 5 pole female XLR receptacle, grounding: separate ground contact to mating connector shell and front panel, horizontal PCB mount, https://www.neutrik.com/en/product/nc5fah +neutrik xlr a +0 +6 +6 +Connector_Audio +Jack_XLR_Neutrik_NC5FAV-DA_Vertical +A Series, 5 pole female XLR receptacle, grounding: mating connector shell to pin1 and front panel, horizontal PCB mount, asymmetric push, https://www.neutrik.com/en/product/nc5fav-da +neutrik xlr a +0 +6 +6 +Connector_Audio +Jack_XLR_Neutrik_NC5FAV-SW_Vertical +A Series, 5 pole female XLR receptacle, switching contacts, grounding: separate ground contact to mating connector shell and front panel, vertical PCB mount, color coding possible, https://www.neutrik.com/en/product/nc5fav-sw +neutrik xlr a +0 +9 +9 +Connector_Audio +Jack_XLR_Neutrik_NC5FAV_Vertical +A Series, 5 pole female XLR receptacle, grounding: separate ground contact to mating connector shell and front panel, vertical PCB mount, https://www.neutrik.com/en/product/nc5fav +neutrik xlr a +0 +6 +6 +Connector_Audio +Jack_XLR_Neutrik_NC5FBH-B_Horizontal +B Series, 5 pole female XLR receptacle, grounding: separate ground contact to mating connector shell and front panel, horizontal PCB mount, black chrome shell, https://www.neutrik.com/en/product/nc5fbh-b +neutrik xlr b +0 +6 +6 +Connector_Audio +Jack_XLR_Neutrik_NC5FBH_Horizontal +B Series, 5 pole female XLR receptacle, grounding: separate ground contact to mating connector shell and front panel, horizontal PCB mount, https://www.neutrik.com/en/product/nc5fbh +neutrik xlr b +0 +6 +6 +Connector_Audio +Jack_XLR_Neutrik_NC5FBV-B_Vertical +B Series, 5 pole female XLR receptacle, grounding: separate ground contact to mating connector shell and front panel, vertical PCB mount, black chrome shell, https://www.neutrik.com/en/product/nc5fbv-b +neutrik xlr b +0 +6 +6 +Connector_Audio +Jack_XLR_Neutrik_NC5FBV-SW_Vertical +B Series, 5 pole female XLR receptacle, switching contacts, grounding: separate ground contact to mating connector shell and front panel, vertical PCB mount, https://www.neutrik.com/en/product/nc5fbv-sw +neutrik xlr b +0 +9 +9 +Connector_Audio +Jack_XLR_Neutrik_NC5FBV_Vertical +B Series, 5 pole female XLR receptacle, grounding: separate ground contact to mating connector shell and front panel, vertical PCB mount, https://www.neutrik.com/en/product/nc5fbv +neutrik xlr b +0 +6 +6 +Connector_Audio +Jack_XLR_Neutrik_NC5MAH_Horizontal +A Series, 5 pole male XLR receptacle, grounding: separate ground contact to mating connector shell and front panel, horizontal PCB mount, https://www.neutrik.com/en/product/nc5mah +neutrik xlr a +0 +6 +6 +Connector_Audio +Jack_XLR_Neutrik_NC5MAV-SW_Vertical +A Series, 5 pole male XLR receptacle, switching contacts, grounding: separate ground contact to mating connector shell and front panel, vertical PCB mount, https://www.neutrik.com/en/product/nc5mav-sw +neutrik xlr a +0 +9 +9 +Connector_Audio +Jack_XLR_Neutrik_NC5MAV_Vertical +A Series, 5 pole male XLR receptacle, grounding: separate ground contact to mating connector shell and front panel, vertical PCB mount, https://www.neutrik.com/en/product/nc5mav +neutrik xlr a +0 +6 +6 +Connector_Audio +Jack_XLR_Neutrik_NC5MBH-B_Horizontal +B Series, 5 pole male XLR receptacle, grounding: separate ground contact to mating connector shell and front panel, horizontal PCB mount, black chrome shell, https://www.neutrik.com/en/product/nc5mbh-b +neutrik xlr b +0 +6 +6 +Connector_Audio +Jack_XLR_Neutrik_NC5MBH_Horizontal +B Series, 5 pole male XLR receptacle, grounding: separate ground contact to mating connector shell and front panel, horizontal PCB mount, https://www.neutrik.com/en/product/nc5mbh +neutrik xlr b +0 +6 +6 +Connector_Audio +Jack_XLR_Neutrik_NC5MBV-B_Vertical +B Series, 5 pole male XLR receptacle, grounding: separate ground contact to mating connector shell and front panel, vertical PCB mount, black chrome shell, https://www.neutrik.com/en/product/nc5mbv-b +neutrik xlr b +0 +6 +6 +Connector_Audio +Jack_XLR_Neutrik_NC5MBV-SW_Vertical +B Series, 5 pole male XLR receptacle, switching contacts, grounding: separate ground contact to mating connector shell and front panel, vertical PCB mount, https://www.neutrik.com/en/product/nc5mbv-sw +neutrik xlr b +0 +9 +9 +Connector_Audio +Jack_XLR_Neutrik_NC5MBV_Vertical +B Series, 5 pole male XLR receptacle, grounding: separate ground contact to mating connector shell and front panel, vertical PCB mount, https://www.neutrik.com/en/product/nc5mbv +neutrik xlr b +0 +6 +6 +Connector_Audio +Jack_speakON-6.35mm_Neutrik_NLJ2MD-H_Horizontal +speakON Combo, 2 pole combination of speakON socket and 6.35mm (1/4in) jack receptacle, horizontal pcb mount, https://www.neutrik.com/en/product/nlj2md-h +neutrik speakon combo +0 +2 +2 +Connector_Audio +Jack_speakON-6.35mm_Neutrik_NLJ2MD-V_Vertical +speakON Combo, 2 pole combination of speakON socket and 6.35mm (1/4in) jack receptacle, vertical pcb mount, https://www.neutrik.com/en/product/nlj2md-v +neutrik speakon combo +0 +2 +2 +Connector_Audio +Jack_speakON_Neutrik_NL2MD-H_Horizontal +speakON Chassis Connectors, 2 pole chassis connector, gray D-size flange, countersunk thru holes, horizontal PCB, https://www.neutrik.com/en/product/nl2md-h +neutrik speakon +0 +2 +2 +Connector_Audio +Jack_speakON_Neutrik_NL2MD-V_Vertical +speakON Chassis Connectors, 2 pole chassis connector, black D-size flange, countersunk thru holes, vertical PCB mount, https://www.neutrik.com/en/product/nl2md-v +neutrik speakon +0 +2 +2 +Connector_Audio +Jack_speakON_Neutrik_NL4MD-H-1_Horizontal +speakON Chassis Connectors, 4 pole chassis connector, black D-size flange, countersunk thru holes, horizontal PCB mount, https://www.neutrik.com/en/product/nl4md-h-1 +neutrik speakon +0 +4 +4 +Connector_Audio +Jack_speakON_Neutrik_NL4MD-H-2_Horizontal +speakON Chassis Connectors, 4 pole chassis connector, black D-size flange, mirrored self tapping screw holes (A-screw), horizontal PCB mount, https://www.neutrik.com/en/product/nl4md-h-2 +neutrik speakon +0 +4 +4 +Connector_Audio +Jack_speakON_Neutrik_NL4MD-H-3_Horizontal +speakON Chassis Connectors, 4 pole chassis connector, black D-size flange, self tapping screw holes (A-screw), horizontal PCB mount, https://www.neutrik.com/en/product/nl4md-h-3 +neutrik speakon +0 +4 +4 +Connector_Audio +Jack_speakON_Neutrik_NL4MD-H_Horizontal +speakON Chassis Connectors, 4 pole chassis connector, grey D-size flange, self tapping screw holes (A-screw), horizontal PCB mount, https://www.neutrik.com/en/product/nl4md-h +neutrik speakon +0 +4 +4 +Connector_Audio +Jack_speakON_Neutrik_NL4MD-V-1_Vertical +speakON Chassis Connectors, 4 pole chassis connector, grey D-size flange, self tapping screw holes (A-screw), vertical PCB mount, https://www.neutrik.com/en/product/nl4md-v-1 +neutrik speakon +0 +4 +4 +Connector_Audio +Jack_speakON_Neutrik_NL4MD-V-2_Vertical +speakON Chassis Connectors, 4 pole chassis connector, black D-size flange, mirrored self tapping screw holes (A-screw), vertical PCB mount, https://www.neutrik.com/en/product/nl4md-v-2 +neutrik speakon +0 +4 +4 +Connector_Audio +Jack_speakON_Neutrik_NL4MD-V-R_Vertical +speakON Chassis Connectors, 4 pole chassis connector, red D-size flange, countersunk thru holes, vertical PCB mount, https://www.neutrik.com/en/product/nl4md-v-r +neutrik speakon +0 +4 +4 +Connector_Audio +Jack_speakON_Neutrik_NL4MD-V-S_Vertical +speakON Chassis Connectors, 4 pole chassis connector, black D-size flange, switchable version of NL4MD-V with 8 vertical PCB contacts (4 switching contacts), https://www.neutrik.com/en/product/nl4md-v-s +neutrik speakon +0 +8 +8 +Connector_Audio +Jack_speakON_Neutrik_NL4MD-V_Vertical +speakON Chassis Connectors, 4 pole chassis connector, black D-size flange, countersunk thru holes, vertical PCB mount, https://www.neutrik.com/en/product/nl4md-v +neutrik speakon +0 +4 +4 +Connector_Audio +Jack_speakON_Neutrik_NL8MD-V-1_Vertical +speakON Chassis Connectors, 8 pole chassis connector, nickel metal square G-size flange, self tapping screw holes (A-screw), vertical PCB mount, https://www.neutrik.com/en/product/nl8md-v-1 +neutrik speakon +0 +8 +8 +Connector_Audio +Jack_speakON_Neutrik_NL8MD-V_Vertical +speakON Chassis Connectors, 8 pole chassis connector, nickel metal square G-size flange, countersunk thru holes, vertical PCB mount, https://www.neutrik.com/en/product/nl8md-v +neutrik speakon +0 +8 +8 +Connector_Audio +Jack_speakON_Neutrik_NLT4MD-V_Vertical +STX Series, 4 pole male chassis connector, metal housing, vertical PCB mount, self tapping screw holes (A-screw), https://www.neutrik.com/en/product/nlt4md-v +neutrik speakon stx +0 +4 +4 +Connector_Audio +MiniXLR-5_Switchcraft_TRAPC_Horizontal +http://www.switchcraft.com/ProductSummary.aspx?Parent=620 http://www.switchcraft.com/Drawings/TRAPC_X-TRASM_X_SERIES_CD.PDF +THT Mini XLR 5Pin right angle +0 +5 +5 +Connector_BarrelJack +BarrelJack_CLIFF_FC681465S_SMT_Horizontal +Surface-mount DC Barrel Jack, https://www.cliffuk.co.uk/products/dcconnectors/FC681465S.pdf +Power Jack SMT +0 +4 +3 +Connector_BarrelJack +BarrelJack_CUI_PJ-036AH-SMT_Horizontal +Surface-mount DC Barrel Jack, http://www.cui.com/product/resource/pj-036ah-smt.pdf +Power Jack SMT +0 +3 +3 +Connector_BarrelJack +BarrelJack_CUI_PJ-063AH_Horizontal +Barrel Jack, 2.0mm ID, 5.5mm OD, 24V, 8A, no switch, https://www.cui.com/product/resource/pj-063ah.pdf +barrel jack cui dc power +0 +4 +3 +Connector_BarrelJack +BarrelJack_CUI_PJ-063AH_Horizontal_CircularHoles +Barrel Jack, 2.0mm ID, 5.5mm OD, 24V, 8A, no switch, https://www.cui.com/product/resource/pj-063ah.pdf +barrel jack cui dc power +0 +4 +3 +Connector_BarrelJack +BarrelJack_CUI_PJ-102AH_Horizontal +Thin-pin DC Barrel Jack, https://cdn-shop.adafruit.com/datasheets/21mmdcjackDatasheet.pdf +Power Jack +0 +3 +3 +Connector_BarrelJack +BarrelJack_Horizontal +DC Barrel Jack +Power Jack +0 +3 +3 +Connector_BarrelJack +BarrelJack_Wuerth_6941xx301002 +Wuerth electronics barrel jack connector (5.5mm outher diameter, inner diameter 2.05mm or 2.55mm depending on exact order number), See: http://katalog.we-online.de/em/datasheet/6941xx301002.pdf +connector barrel jack +0 +3 +3 +Connector_Card +CF-Card_3M_N7E50-7516PK-20-WF +Compact Flash Card connector (https://multimedia.3m.com/mws/media/22365O/3mtm-cf-card-header-compactflashtm-type-i-sm-ts0662.pdf) +connector cf +0 +54 +50 +Connector_Card +SD_Kyocera_145638009211859+ +SD Card Connector, Normal Type, Outer Tail, Without Ejector (https://global.kyocera.com/prdct/electro/product/pdf/5638.pdf) +sd card smt +0 +13 +13 +Connector_Card +SD_Kyocera_145638009511859+ +SD Card Connector, Normal Type, Outer Tail, Spring Eject Type (https://global.kyocera.com/prdct/electro/product/pdf/5638.pdf) +sd card smt +0 +13 +13 +Connector_Card +SD_Kyocera_145638109211859+ +SD Card Connector, Reverse Type, Outer Tail, Without Ejector (https://global.kyocera.com/prdct/electro/product/pdf/5638.pdf) +sd card smt +0 +13 +13 +Connector_Card +SD_Kyocera_145638109511859+ +SD Card Connector, Reverse Type, Outer Tail, Spring Eject Type (https://global.kyocera.com/prdct/electro/product/pdf/5638.pdf) +sd card smt +0 +13 +13 +Connector_Card +SD_TE_2041021 +SD card connector, top mount, SMT (http://www.te.com/commerce/DocumentDelivery/DDEController?Action=showdoc&DocId=Customer+Drawing%7F2041021%7FB%7Fpdf%7FEnglish%7FENG_CD_2041021_B_C_2041021_B.pdf%7F2041021-4) +sd card +0 +15 +12 +Connector_Card +microSD_HC_Hirose_DM3AT-SF-PEJM5 +Micro SD, SMD, right-angle, push-pull (https://www.hirose.com/product/en/download_file/key_name/DM3AT-SF-PEJM5/category/Drawing%20(2D)/doc_file_id/44099/?file_category_id=6&item_id=06090031000&is_series=) +Micro SD +0 +14 +11 +Connector_Card +microSD_HC_Hirose_DM3BT-DSF-PEJS +Micro SD, SMD, reverse on-board, right-angle, push-pull (https://www.hirose.com/product/en/download_file/key_name/DM3BT-DSF-PEJS/category/Drawing%20(2D)/doc_file_id/44097/?file_category_id=6&item_id=06090029900&is_series=) +Micro SD +0 +16 +11 +Connector_Card +microSD_HC_Hirose_DM3D-SF +Micro SD, SMD, right-angle, push-pull (https://media.digikey.com/PDF/Data%20Sheets/Hirose%20PDFs/DM3D-SF.pdf) +Micro SD +0 +14 +11 +Connector_Card +microSD_HC_Molex_104031-0811 +1.10mm Pitch microSD Memory Card Connector, Surface Mount, Push-Pull Type, 1.42mm Height, with Detect Switch (https://www.molex.com/pdm_docs/sd/1040310811_sd.pdf) +microSD SD molex +0 +14 +11 +Connector_Card +microSD_HC_Wuerth_693072010801 +http://katalog.we-online.de/em/datasheet/693072010801.pdf +Micro SD Wuerth Wurth Würth +0 +12 +9 +Connector_Card +microSIM_JAE_SF53S006VCBR2000 +https://www.jae.com/z-en/pdf_download_exec.cfm?param=SJ115712.pdf +microSIM GSM Card +0 +14 +7 +Connector_Coaxial +BNC_Amphenol_031-6575_Horizontal +dual independently isolated BNC plug (https://www.amphenolrf.com/downloads/dl/file/id/2980/product/644/031_6575_customer_drawing.pdf) +Dual BNC Amphenol Horizontal +0 +6 +4 +Connector_Coaxial +BNC_Amphenol_B6252HB-NPP3G-50_Horizontal +http://www.farnell.com/datasheets/612848.pdf +BNC Amphenol Horizontal +0 +4 +2 +Connector_Coaxial +BNC_PanelMountable_Vertical +Panel-mountable BNC connector mounted through PCB, vertical +BNC connector +0 +2 +2 +Connector_Coaxial +BNC_TEConnectivity_1478204_Vertical +BNC female PCB mount 4 pin straight chassis connector http://www.te.com/usa-en/product-1-1478204-0.html +BNC female PCB mount 4 pin straight chassis connector +0 +5 +2 +Connector_Coaxial +BNC_Win_364A2x95_Horizontal +Dual front isolated BNC plug (https://www.winconn.com/wp-content/uploads/364A2595.pdf) +Dual BNC Horizontal Isolated +0 +6 +3 +Connector_Coaxial +CoaxialSwitch_Hirose_MS-156C3_Horizontal +Subminiature Coaxial Switch 1.35mm High, DC to 11GHz +Switch Coaxial RF +0 +12 +3 +Connector_Coaxial +MMCX_Molex_73415-0961_Horizontal_0.8mm-PCB +Molex MMCX Horizontal Coaxial https://www.molex.com/pdm_docs/sd/734150961_sd.pdf +Molex MMCX Horizontal Coaxial +0 +3 +2 +Connector_Coaxial +MMCX_Molex_73415-0961_Horizontal_1.0mm-PCB +Molex MMCX Horizontal Coaxial https://www.molex.com/pdm_docs/sd/734150961_sd.pdf +Molex MMCX Horizontal Coaxial +0 +3 +2 +Connector_Coaxial +MMCX_Molex_73415-0961_Horizontal_1.6mm-PCB +Molex MMCX Horizontal Coaxial https://www.molex.com/pdm_docs/sd/734150961_sd.pdf +Molex MMCX Horizontal Coaxial +0 +3 +2 +Connector_Coaxial +MMCX_Molex_73415-1471_Vertical +http://www.molex.com/pdm_docs/sd/734151471_sd.pdf +Molex MMCX Coaxial Connector 50 ohms Female Jack Vertical THT +0 +5 +2 +Connector_Coaxial +SMA_Amphenol_901-144_Vertical +https://www.amphenolrf.com/downloads/dl/file/id/7023/product/3103/901_144_customer_drawing.pdf +SMA THT Female Jack Vertical +0 +5 +2 +Connector_Coaxial +SMA_Amphenol_132134-10_Vertical +https://www.amphenolrf.com/downloads/dl/file/id/4007/product/2974/132134_10_customer_drawing.pdf +SMA SMD Female Jack Vertical +0 +3 +2 +Connector_Coaxial +SMA_Amphenol_132134-11_Vertical +https://www.amphenolrf.com/downloads/dl/file/id/3406/product/2975/132134_11_customer_drawing.pdf +SMA THT Female Jack Vertical ExtendedLegs +0 +5 +2 +Connector_Coaxial +SMA_Amphenol_132134-14_Vertical +https://www.amphenolrf.com/downloads/dl/file/id/1793/product/2976/132134_14_customer_drawing.pdf +SMA THT Female Jack Vertical ExtendedLegs +0 +5 +2 +Connector_Coaxial +SMA_Amphenol_132134-16_Vertical +https://www.amphenolrf.com/downloads/dl/file/id/1141/product/2978/132134_16_customer_drawing.pdf +SMA THT Female Jack Vertical ExtendedLegs +0 +5 +2 +Connector_Coaxial +SMA_Amphenol_132134_Vertical +https://www.amphenolrf.com/downloads/dl/file/id/2187/product/2843/132134_customer_drawing.pdf +SMA THT Female Jack Vertical ExtendedLegs +0 +5 +2 +Connector_Coaxial +SMA_Amphenol_132203-12_Horizontal +https://www.amphenolrf.com/media/downloads/1769/132203-12.pdf +SMA THT Female Jack Horizontal +0 +5 +2 +Connector_Coaxial +SMA_Amphenol_132289_EdgeMount +http://www.amphenolrf.com/132289.html +SMA +0 +5 +2 +Connector_Coaxial +SMA_Amphenol_132291-12_Vertical +https://www.amphenolrf.com/downloads/dl/file/id/1688/product/3020/132291_12_customer_drawing.pdf +SMA THT Female Jack Vertical Bulkhead +0 +5 +2 +Connector_Coaxial +SMA_Amphenol_132291_Vertical +https://www.amphenolrf.com/downloads/dl/file/id/3222/product/2918/132291_customer_drawing.pdf +SMA THT Female Jack Vertical Bulkhead +0 +5 +2 +Connector_Coaxial +SMA_Molex_73251-1153_EdgeMount_Horizontal +Molex SMA RF Connectors, Edge Mount, (http://www.molex.com/pdm_docs/sd/732511150_sd.pdf) +sma edge +0 +11 +2 +Connector_Coaxial +SMA_Molex_73251-2120_EdgeMount_Horizontal +Molex SMA RF Connector, Edge Mount, (http://www.molex.com/pdm_docs/sd/732512120_sd.pdf) +sma edge +0 +11 +2 +Connector_Coaxial +SMA_Molex_73251-2200_Horizontal +https://www.molex.com/webdocs/datasheets/pdf/en-us/0732512200_RF_COAX_CONNECTORS.pdf +SMA THT Female Jack Horizontal +0 +5 +2 +Connector_Coaxial +SMA_Samtec_SMA-J-P-X-ST-EM1_EdgeMount +Connector SMA, 0Hz to 20GHz, 50Ohm, Edge Mount (http://suddendocs.samtec.com/prints/sma-j-p-x-st-em1-mkt.pdf) +SMA Straight Samtec Edge Mount +0 +5 +2 +Connector_Coaxial +SMA_Wurth_60312002114503_Vertical +https://www.we-online.de/katalog/datasheet/60312002114503.pdf +SMA THT Female Jack Vertical ExtendedLegs +0 +5 +2 +Connector_Coaxial +SMB_Jack_Vertical +SMB pcb mounting jack +SMB Jack Striaght +0 +5 +2 +Connector_Coaxial +U.FL_Hirose_U.FL-R-SMT-1_Vertical +Hirose U.FL Coaxial https://www.hirose.com/product/en/products/U.FL/U.FL-R-SMT-1%2810%29/ +Hirose U.FL Coaxial +0 +3 +2 +Connector_Coaxial +U.FL_Molex_MCRF_73412-0110_Vertical +Molex Microcoaxial RF Connectors (MCRF), mates Hirose U.FL, (http://www.molex.com/pdm_docs/sd/734120110_sd.pdf) +mcrf hirose ufl u.fl microcoaxial +0 +4 +2 +Connector_DIN +DIN41612_B2_2x8_Female_Vertical_THT +DIN41612 connector, type B/2, Vertical, 2 rows 16 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 B/2 +0 +16 +16 +Connector_DIN +DIN41612_B2_2x8_Male_Horizontal_THT +DIN41612 connector, type B/2, Horizontal, 2 rows 16 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 B/2 +0 +16 +16 +Connector_DIN +DIN41612_B2_2x16_Female_Vertical_THT +DIN41612 connector, type B/2, Vertical, 2 rows 16 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 B/2 +0 +32 +32 +Connector_DIN +DIN41612_B2_2x16_Male_Horizontal_THT +DIN41612 connector, type B/2, Horizontal, 2 rows 16 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 B/2 +0 +32 +32 +Connector_DIN +DIN41612_B3_2x5_Female_Vertical_THT +DIN41612 connector, type B/3, Vertical, 2 rows 10 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 B/3 +0 +10 +10 +Connector_DIN +DIN41612_B3_2x5_Male_Horizontal_THT +DIN41612 connector, type B/3, Horizontal, 2 rows 10 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 B/3 +0 +10 +10 +Connector_DIN +DIN41612_B3_2x10_Female_Vertical_THT +DIN41612 connector, type B/3, Vertical, 2 rows 10 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 B/3 +0 +20 +20 +Connector_DIN +DIN41612_B3_2x10_Male_Horizontal_THT +DIN41612 connector, type B/3, Horizontal, 2 rows 10 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 B/3 +0 +20 +20 +Connector_DIN +DIN41612_B_1x32_Female_Vertical_THT +DIN41612 connector, type B, Vertical, 2 rows 32 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 B +0 +32 +32 +Connector_DIN +DIN41612_B_1x32_Male_Horizontal_THT +DIN41612 connector, type B, Horizontal, 2 rows 32 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 B +0 +32 +32 +Connector_DIN +DIN41612_B_2x16_Female_Vertical_THT +DIN41612 connector, type B, Vertical, 2 rows 32 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 B +0 +32 +32 +Connector_DIN +DIN41612_B_2x16_Male_Horizontal_THT +DIN41612 connector, type B, Horizontal, 2 rows 32 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 B +0 +32 +32 +Connector_DIN +DIN41612_B_2x32_Female_Vertical_THT +DIN41612 connector, type B, Vertical, 2 rows 32 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 B +0 +64 +64 +Connector_DIN +DIN41612_B_2x32_Male_Horizontal_THT +DIN41612 connector, type B, Horizontal, 2 rows 32 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 B +0 +64 +64 +Connector_DIN +DIN41612_C2_2x16_Female_Vertical_THT +DIN41612 connector, type C/2, Vertical, 3 rows 16 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 C/2 +0 +32 +32 +Connector_DIN +DIN41612_C2_2x16_Male_Horizontal_THT +DIN41612 connector, type C/2, Horizontal, 3 rows 16 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 C/2 +0 +32 +32 +Connector_DIN +DIN41612_C2_3x16_Female_Vertical_THT +DIN41612 connector, type C/2, Vertical, 3 rows 16 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 C/2 +0 +48 +48 +Connector_DIN +DIN41612_C2_3x16_Male_Horizontal_THT +DIN41612 connector, type C/2, Horizontal, 3 rows 16 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 C/2 +0 +48 +48 +Connector_DIN +DIN41612_C3_2x10_Female_Vertical_THT +DIN41612 connector, type C/3, Vertical, 3 rows 10 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 C/3 +0 +20 +20 +Connector_DIN +DIN41612_C3_2x10_Male_Horizontal_THT +DIN41612 connector, type C/3, Horizontal, 3 rows 10 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 C/3 +0 +20 +20 +Connector_DIN +DIN41612_C3_3x10_Female_Vertical_THT +DIN41612 connector, type C/3, Vertical, 3 rows 10 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 C/3 +0 +30 +30 +Connector_DIN +DIN41612_C3_3x10_Male_Horizontal_THT +DIN41612 connector, type C/3, Horizontal, 3 rows 10 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 C/3 +0 +30 +30 +Connector_DIN +DIN41612_C_1x32_Female_Vertical_THT +DIN41612 connector, type C, Vertical, 3 rows 32 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 C +0 +32 +32 +Connector_DIN +DIN41612_C_1x32_Male_Horizontal_THT +DIN41612 connector, type C, Horizontal, 3 rows 32 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 C +0 +32 +32 +Connector_DIN +DIN41612_C_2x16_Female_Vertical_THT +DIN41612 connector, type C, Vertical, 3 rows 32 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 C +0 +32 +32 +Connector_DIN +DIN41612_C_2x16_Male_Horizontal_THT +DIN41612 connector, type C, Horizontal, 3 rows 32 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 C +0 +32 +32 +Connector_DIN +DIN41612_C_2x32_Female_Vertical_THT +DIN41612 connector, type C, Vertical, 3 rows 32 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 C +0 +64 +64 +Connector_DIN +DIN41612_C_2x32_Male_Horizontal_THT +DIN41612 connector, type C, Horizontal, 3 rows 32 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 C +0 +64 +64 +Connector_DIN +DIN41612_C_3x16_Female_Vertical_THT +DIN41612 connector, type C, Vertical, 3 rows 32 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 C +0 +48 +48 +Connector_DIN +DIN41612_C_3x16_Male_Horizontal_THT +DIN41612 connector, type C, Horizontal, 3 rows 32 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 C +0 +48 +48 +Connector_DIN +DIN41612_C_3x32_Female_Vertical_THT +DIN41612 connector, type C, Vertical, 3 rows 32 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 C +0 +96 +96 +Connector_DIN +DIN41612_C_3x32_Male_Horizontal_THT +DIN41612 connector, type C, Horizontal, 3 rows 32 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 C +0 +96 +96 +Connector_DIN +DIN41612_D_2x8_Female_Vertical_THT +DIN41612 connector, type D, Vertical, 3 rows 32 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 D +0 +16 +16 +Connector_DIN +DIN41612_D_2x8_Male_Horizontal_THT +DIN41612 connector, type D, Horizontal, 3 rows 32 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 D +0 +16 +16 +Connector_DIN +DIN41612_D_2x16_Female_Vertical_THT +DIN41612 connector, type D, Vertical, 3 rows 32 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 D +0 +32 +32 +Connector_DIN +DIN41612_D_2x16_Male_Horizontal_THT +DIN41612 connector, type D, Horizontal, 3 rows 32 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 D +0 +32 +32 +Connector_DIN +DIN41612_E_2x16_Female_Vertical_THT +DIN41612 connector, type E, Vertical, 5 rows 32 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 E +0 +32 +32 +Connector_DIN +DIN41612_E_2x16_Male_Horizontal_THT +DIN41612 connector, type E, Horizontal, 5 rows 32 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 E +0 +32 +32 +Connector_DIN +DIN41612_E_2x16_RowsAC_Female_Vertical_THT +DIN41612 connector, type E, Vertical, 5 rows 32 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 E +0 +32 +32 +Connector_DIN +DIN41612_E_2x16_RowsAC_Male_Horizontal_THT +DIN41612 connector, type E, Horizontal, 5 rows 32 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 E +0 +32 +32 +Connector_DIN +DIN41612_E_3x16_Female_Vertical_THT +DIN41612 connector, type E, Vertical, 5 rows 32 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 E +0 +48 +48 +Connector_DIN +DIN41612_E_3x16_Male_Horizontal_THT +DIN41612 connector, type E, Horizontal, 5 rows 32 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 E +0 +48 +48 +Connector_DIN +DIN41612_F_2x16_Female_Vertical_THT +DIN41612 connector, type F, Vertical, 3 rows 32 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 F +0 +32 +32 +Connector_DIN +DIN41612_F_2x16_Male_Horizontal_THT +DIN41612 connector, type F, Horizontal, 3 rows 32 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 F +0 +32 +32 +Connector_DIN +DIN41612_F_2x16_RowsZD_Female_Vertical_THT +DIN41612 connector, type F, Vertical, 3 rows 32 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 F +0 +32 +32 +Connector_DIN +DIN41612_F_2x16_RowsZD_Male_Horizontal_THT +DIN41612 connector, type F, Horizontal, 3 rows 32 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 F +0 +32 +32 +Connector_DIN +DIN41612_F_3x16_Female_Vertical_THT +DIN41612 connector, type F, Vertical, 3 rows 32 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 F +0 +48 +48 +Connector_DIN +DIN41612_F_3x16_Male_Horizontal_THT +DIN41612 connector, type F, Horizontal, 3 rows 32 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 F +0 +48 +48 +Connector_DIN +DIN41612_Q2_2x16_Male_Horizontal_THT +DIN41612 connector, type Q/2, Horizontal, 2 rows 16 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 Q/2 +0 +32 +32 +Connector_DIN +DIN41612_Q2_2x16_Male_Vertical_THT +DIN41612 connector, type Q/2, Vertical, 2 rows 16 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 Q/2 +0 +32 +32 +Connector_DIN +DIN41612_Q3_2x10_Male_Horizontal_THT +DIN41612 connector, type Q/3, Horizontal, 2 rows 10 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 Q/3 +0 +20 +20 +Connector_DIN +DIN41612_Q3_2x10_Male_Vertical_THT +DIN41612 connector, type Q/3, Vertical, 2 rows 10 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 Q/3 +0 +20 +20 +Connector_DIN +DIN41612_Q_2x32_Male_Horizontal_THT +DIN41612 connector, type Q, Horizontal, 2 rows 32 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 Q +0 +64 +64 +Connector_DIN +DIN41612_Q_2x32_Male_Vertical_THT +DIN41612 connector, type Q, Vertical, 2 rows 32 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 Q +0 +64 +64 +Connector_DIN +DIN41612_R2_2x16_Male_Horizontal_THT +DIN41612 connector, type R/2, Horizontal, 3 rows 16 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 R/2 +0 +32 +32 +Connector_DIN +DIN41612_R2_2x16_Male_Vertical_THT +DIN41612 connector, type R/2, Vertical, 3 rows 16 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 R/2 +0 +32 +32 +Connector_DIN +DIN41612_R2_3x16_Male_Horizontal_THT +DIN41612 connector, type R/2, Horizontal, 3 rows 16 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 R/2 +0 +48 +48 +Connector_DIN +DIN41612_R2_3x16_Male_Vertical_THT +DIN41612 connector, type R/2, Vertical, 3 rows 16 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 R/2 +0 +48 +48 +Connector_DIN +DIN41612_R3_2x10_Male_Horizontal_THT +DIN41612 connector, type R/3, Horizontal, 3 rows 10 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 R/3 +0 +20 +20 +Connector_DIN +DIN41612_R3_2x10_Male_Vertical_THT +DIN41612 connector, type R/3, Vertical, 3 rows 10 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 R/3 +0 +20 +20 +Connector_DIN +DIN41612_R3_3x10_Male_Horizontal_THT +DIN41612 connector, type R/3, Horizontal, 3 rows 10 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 R/3 +0 +30 +30 +Connector_DIN +DIN41612_R3_3x10_Male_Vertical_THT +DIN41612 connector, type R/3, Vertical, 3 rows 10 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 R/3 +0 +30 +30 +Connector_DIN +DIN41612_R_1x32_Male_Horizontal_THT +DIN41612 connector, type R, Horizontal, 3 rows 32 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 R +0 +32 +32 +Connector_DIN +DIN41612_R_1x32_Male_Vertical_THT +DIN41612 connector, type R, Vertical, 3 rows 32 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 R +0 +32 +32 +Connector_DIN +DIN41612_R_2x16_Male_Horizontal_THT +DIN41612 connector, type R, Horizontal, 3 rows 32 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 R +0 +32 +32 +Connector_DIN +DIN41612_R_2x16_Male_Vertical_THT +DIN41612 connector, type R, Vertical, 3 rows 32 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 R +0 +32 +32 +Connector_DIN +DIN41612_R_2x32_Male_Horizontal_THT +DIN41612 connector, type R, Horizontal, 3 rows 32 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 R +0 +64 +64 +Connector_DIN +DIN41612_R_2x32_Male_Vertical_THT +DIN41612 connector, type R, Vertical, 3 rows 32 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 R +0 +64 +64 +Connector_DIN +DIN41612_R_3x16_Male_Horizontal_THT +DIN41612 connector, type R, Horizontal, 3 rows 32 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 R +0 +48 +48 +Connector_DIN +DIN41612_R_3x16_Male_Vertical_THT +DIN41612 connector, type R, Vertical, 3 rows 32 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 R +0 +48 +48 +Connector_DIN +DIN41612_R_3x32_Male_Horizontal_THT +DIN41612 connector, type R, Horizontal, 3 rows 32 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 R +0 +96 +96 +Connector_DIN +DIN41612_R_3x32_Male_Vertical_THT +DIN41612 connector, type R, Vertical, 3 rows 32 pins wide, https://www.erni-x-press.com/de/downloads/kataloge/englische_kataloge/erni-din41612-iec60603-2-e.pdf +DIN 41612 IEC 60603 R +0 +96 +96 +Connector_Dsub +DSUB-9_Female_EdgeMount_P2.77mm +9-pin D-Sub connector, solder-cups edge-mounted, female, x-pin-pitch 2.77mm, distance of mounting holes 25mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +9-pin D-Sub connector edge mount solder cup female x-pin-pitch 2.77mm mounting holes distance 25mm +0 +9 +9 +Connector_Dsub +DSUB-9_Female_Horizontal_P2.77x2.54mm_EdgePinOffset9.40mm +9-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, female, pitch 2.77x2.54mm, pin-PCB-offset 9.4mm, see http://docs-europe.electrocomponents.com/webdocs/1585/0900766b81585df2.pdf +9-pin D-Sub connector horizontal angled 90deg THT female pitch 2.77x2.54mm pin-PCB-offset 9.4mm +0 +9 +9 +Connector_Dsub +DSUB-9_Female_Horizontal_P2.77x2.84mm_EdgePinOffset4.94mm_Housed_MountingHolesOffset7.48mm +9-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, female, pitch 2.77x2.84mm, pin-PCB-offset 4.9399999999999995mm, distance of mounting holes 25mm, distance of mounting holes to PCB edge 7.4799999999999995mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +9-pin D-Sub connector horizontal angled 90deg THT female pitch 2.77x2.84mm pin-PCB-offset 4.9399999999999995mm mounting-holes-distance 25mm mounting-hole-offset 25mm +0 +11 +10 +Connector_Dsub +DSUB-9_Female_Horizontal_P2.77x2.84mm_EdgePinOffset7.70mm_Housed_MountingHolesOffset9.12mm +9-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, female, pitch 2.77x2.84mm, pin-PCB-offset 7.699999999999999mm, distance of mounting holes 25mm, distance of mounting holes to PCB edge 9.12mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +9-pin D-Sub connector horizontal angled 90deg THT female pitch 2.77x2.84mm pin-PCB-offset 7.699999999999999mm mounting-holes-distance 25mm mounting-hole-offset 25mm +0 +11 +10 +Connector_Dsub +DSUB-9_Female_Horizontal_P2.77x2.84mm_EdgePinOffset9.40mm +9-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, female, pitch 2.77x2.84mm, pin-PCB-offset 9.4mm, see http://docs-europe.electrocomponents.com/webdocs/1585/0900766b81585df2.pdf +9-pin D-Sub connector horizontal angled 90deg THT female pitch 2.77x2.84mm pin-PCB-offset 9.4mm +0 +9 +9 +Connector_Dsub +DSUB-9_Female_Horizontal_P2.77x2.84mm_EdgePinOffset9.90mm_Housed_MountingHolesOffset11.32mm +9-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, female, pitch 2.77x2.84mm, pin-PCB-offset 9.9mm, distance of mounting holes 25mm, distance of mounting holes to PCB edge 11.32mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +9-pin D-Sub connector horizontal angled 90deg THT female pitch 2.77x2.84mm pin-PCB-offset 9.9mm mounting-holes-distance 25mm mounting-hole-offset 25mm +0 +11 +10 +Connector_Dsub +DSUB-9_Female_Horizontal_P2.77x2.84mm_EdgePinOffset14.56mm_Housed_MountingHolesOffset8.20mm +9-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, female, pitch 2.77x2.84mm, pin-PCB-offset 14.56mm, distance of mounting holes 25mm, distance of mounting holes to PCB edge 8.2mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +9-pin D-Sub connector horizontal angled 90deg THT female pitch 2.77x2.84mm pin-PCB-offset 14.56mm mounting-holes-distance 25mm mounting-hole-offset 25mm +0 +11 +10 +Connector_Dsub +DSUB-9_Female_Horizontal_P2.77x2.84mm_EdgePinOffset14.56mm_Housed_MountingHolesOffset15.98mm +9-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, female, pitch 2.77x2.84mm, pin-PCB-offset 14.56mm, distance of mounting holes 25mm, distance of mounting holes to PCB edge 15.979999999999999mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +9-pin D-Sub connector horizontal angled 90deg THT female pitch 2.77x2.84mm pin-PCB-offset 14.56mm mounting-holes-distance 25mm mounting-hole-offset 25mm +0 +11 +10 +Connector_Dsub +DSUB-9_Female_Vertical_P2.77x2.84mm +9-pin D-Sub connector, straight/vertical, THT-mount, female, pitch 2.77x2.84mm, distance of mounting holes 25mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +9-pin D-Sub connector straight vertical THT female pitch 2.77x2.84mm mounting holes distance 25mm +0 +9 +9 +Connector_Dsub +DSUB-9_Female_Vertical_P2.77x2.84mm_MountingHoles +9-pin D-Sub connector, straight/vertical, THT-mount, female, pitch 2.77x2.84mm, distance of mounting holes 25mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +9-pin D-Sub connector straight vertical THT female pitch 2.77x2.84mm mounting holes distance 25mm +0 +11 +10 +Connector_Dsub +DSUB-9_Male_EdgeMount_P2.77mm +9-pin D-Sub connector, solder-cups edge-mounted, male, x-pin-pitch 2.77mm, distance of mounting holes 25mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +9-pin D-Sub connector edge mount solder cup male x-pin-pitch 2.77mm mounting holes distance 25mm +0 +9 +9 +Connector_Dsub +DSUB-9_Male_Horizontal_P2.77x2.54mm_EdgePinOffset9.40mm +9-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, male, pitch 2.77x2.54mm, pin-PCB-offset 9.4mm, see http://docs-europe.electrocomponents.com/webdocs/1585/0900766b81585df2.pdf +9-pin D-Sub connector horizontal angled 90deg THT male pitch 2.77x2.54mm pin-PCB-offset 9.4mm +0 +9 +9 +Connector_Dsub +DSUB-9_Male_Horizontal_P2.77x2.84mm_EdgePinOffset4.94mm_Housed_MountingHolesOffset7.48mm +9-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, male, pitch 2.77x2.84mm, pin-PCB-offset 4.9399999999999995mm, distance of mounting holes 25mm, distance of mounting holes to PCB edge 7.4799999999999995mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +9-pin D-Sub connector horizontal angled 90deg THT male pitch 2.77x2.84mm pin-PCB-offset 4.9399999999999995mm mounting-holes-distance 25mm mounting-hole-offset 25mm +0 +11 +10 +Connector_Dsub +DSUB-9_Male_Horizontal_P2.77x2.84mm_EdgePinOffset7.70mm_Housed_MountingHolesOffset9.12mm +9-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, male, pitch 2.77x2.84mm, pin-PCB-offset 7.699999999999999mm, distance of mounting holes 25mm, distance of mounting holes to PCB edge 9.12mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +9-pin D-Sub connector horizontal angled 90deg THT male pitch 2.77x2.84mm pin-PCB-offset 7.699999999999999mm mounting-holes-distance 25mm mounting-hole-offset 25mm +0 +11 +10 +Connector_Dsub +DSUB-9_Male_Horizontal_P2.77x2.84mm_EdgePinOffset9.40mm +9-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, male, pitch 2.77x2.84mm, pin-PCB-offset 9.4mm, see http://docs-europe.electrocomponents.com/webdocs/1585/0900766b81585df2.pdf +9-pin D-Sub connector horizontal angled 90deg THT male pitch 2.77x2.84mm pin-PCB-offset 9.4mm +0 +9 +9 +Connector_Dsub +DSUB-9_Male_Horizontal_P2.77x2.84mm_EdgePinOffset9.90mm_Housed_MountingHolesOffset11.32mm +9-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, male, pitch 2.77x2.84mm, pin-PCB-offset 9.9mm, distance of mounting holes 25mm, distance of mounting holes to PCB edge 11.32mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +9-pin D-Sub connector horizontal angled 90deg THT male pitch 2.77x2.84mm pin-PCB-offset 9.9mm mounting-holes-distance 25mm mounting-hole-offset 25mm +0 +11 +10 +Connector_Dsub +DSUB-9_Male_Horizontal_P2.77x2.84mm_EdgePinOffset14.56mm_Housed_MountingHolesOffset8.20mm +9-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, male, pitch 2.77x2.84mm, pin-PCB-offset 14.56mm, distance of mounting holes 25mm, distance of mounting holes to PCB edge 8.2mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +9-pin D-Sub connector horizontal angled 90deg THT male pitch 2.77x2.84mm pin-PCB-offset 14.56mm mounting-holes-distance 25mm mounting-hole-offset 25mm +0 +11 +10 +Connector_Dsub +DSUB-9_Male_Horizontal_P2.77x2.84mm_EdgePinOffset14.56mm_Housed_MountingHolesOffset15.98mm +9-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, male, pitch 2.77x2.84mm, pin-PCB-offset 14.56mm, distance of mounting holes 25mm, distance of mounting holes to PCB edge 15.979999999999999mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +9-pin D-Sub connector horizontal angled 90deg THT male pitch 2.77x2.84mm pin-PCB-offset 14.56mm mounting-holes-distance 25mm mounting-hole-offset 25mm +0 +11 +10 +Connector_Dsub +DSUB-9_Male_Vertical_P2.77x2.84mm +9-pin D-Sub connector, straight/vertical, THT-mount, male, pitch 2.77x2.84mm, distance of mounting holes 25mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +9-pin D-Sub connector straight vertical THT male pitch 2.77x2.84mm mounting holes distance 25mm +0 +9 +9 +Connector_Dsub +DSUB-9_Male_Vertical_P2.77x2.84mm_MountingHoles +9-pin D-Sub connector, straight/vertical, THT-mount, male, pitch 2.77x2.84mm, distance of mounting holes 25mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +9-pin D-Sub connector straight vertical THT male pitch 2.77x2.84mm mounting holes distance 25mm +0 +11 +10 +Connector_Dsub +DSUB-15-HD_Female_Horizontal_P2.29x1.98mm_EdgePinOffset3.03mm_Housed_MountingHolesOffset4.94mm +15-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, female, pitch 2.29x1.98mm, pin-PCB-offset 3.0300000000000002mm, distance of mounting holes 25mm, distance of mounting holes to PCB edge 4.9399999999999995mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +15-pin D-Sub connector horizontal angled 90deg THT female pitch 2.29x1.98mm pin-PCB-offset 3.0300000000000002mm mounting-holes-distance 25mm mounting-hole-offset 25mm +0 +17 +16 +Connector_Dsub +DSUB-15-HD_Female_Horizontal_P2.29x1.98mm_EdgePinOffset8.35mm_Housed_MountingHolesOffset10.89mm +15-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, female, pitch 2.29x1.98mm, pin-PCB-offset 8.35mm, distance of mounting holes 25mm, distance of mounting holes to PCB edge 10.889999999999999mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +15-pin D-Sub connector horizontal angled 90deg THT female pitch 2.29x1.98mm pin-PCB-offset 8.35mm mounting-holes-distance 25mm mounting-hole-offset 25mm +0 +17 +16 +Connector_Dsub +DSUB-15-HD_Female_Horizontal_P2.29x1.98mm_EdgePinOffset9.40mm +15-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, female, pitch 2.29x1.98mm, pin-PCB-offset 9.4mm, see http://docs-europe.electrocomponents.com/webdocs/1585/0900766b81585df2.pdf +15-pin D-Sub connector horizontal angled 90deg THT female pitch 2.29x1.98mm pin-PCB-offset 9.4mm +0 +15 +15 +Connector_Dsub +DSUB-15-HD_Female_Horizontal_P2.29x2.54mm_EdgePinOffset9.40mm +15-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, female, pitch 2.29x2.54mm, pin-PCB-offset 9.4mm, see http://docs-europe.electrocomponents.com/webdocs/1585/0900766b81585df2.pdf +15-pin D-Sub connector horizontal angled 90deg THT female pitch 2.29x2.54mm pin-PCB-offset 9.4mm +0 +15 +15 +Connector_Dsub +DSUB-15-HD_Female_Vertical_P2.29x1.98mm_MountingHoles +15-pin D-Sub connector, straight/vertical, THT-mount, female, pitch 2.29x1.98mm, distance of mounting holes 25mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +15-pin D-Sub connector straight vertical THT female pitch 2.29x1.98mm mounting holes distance 25mm +0 +17 +16 +Connector_Dsub +DSUB-15-HD_Male_Horizontal_P2.29x1.98mm_EdgePinOffset3.03mm_Housed_MountingHolesOffset4.94mm +15-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, male, pitch 2.29x1.98mm, pin-PCB-offset 3.0300000000000002mm, distance of mounting holes 25mm, distance of mounting holes to PCB edge 4.9399999999999995mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +15-pin D-Sub connector horizontal angled 90deg THT male pitch 2.29x1.98mm pin-PCB-offset 3.0300000000000002mm mounting-holes-distance 25mm mounting-hole-offset 25mm +0 +17 +16 +Connector_Dsub +DSUB-15-HD_Male_Horizontal_P2.29x1.98mm_EdgePinOffset8.35mm_Housed_MountingHolesOffset10.89mm +15-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, male, pitch 2.29x1.98mm, pin-PCB-offset 8.35mm, distance of mounting holes 25mm, distance of mounting holes to PCB edge 10.889999999999999mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +15-pin D-Sub connector horizontal angled 90deg THT male pitch 2.29x1.98mm pin-PCB-offset 8.35mm mounting-holes-distance 25mm mounting-hole-offset 25mm +0 +17 +16 +Connector_Dsub +DSUB-15-HD_Male_Horizontal_P2.29x1.98mm_EdgePinOffset9.40mm +15-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, male, pitch 2.29x1.98mm, pin-PCB-offset 9.4mm, see http://docs-europe.electrocomponents.com/webdocs/1585/0900766b81585df2.pdf +15-pin D-Sub connector horizontal angled 90deg THT male pitch 2.29x1.98mm pin-PCB-offset 9.4mm +0 +15 +15 +Connector_Dsub +DSUB-15-HD_Male_Horizontal_P2.29x2.54mm_EdgePinOffset9.40mm +15-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, male, pitch 2.29x2.54mm, pin-PCB-offset 9.4mm, see http://docs-europe.electrocomponents.com/webdocs/1585/0900766b81585df2.pdf +15-pin D-Sub connector horizontal angled 90deg THT male pitch 2.29x2.54mm pin-PCB-offset 9.4mm +0 +15 +15 +Connector_Dsub +DSUB-15-HD_Male_Vertical_P2.29x1.98mm_MountingHoles +15-pin D-Sub connector, straight/vertical, THT-mount, male, pitch 2.29x1.98mm, distance of mounting holes 25mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +15-pin D-Sub connector straight vertical THT male pitch 2.29x1.98mm mounting holes distance 25mm +0 +17 +16 +Connector_Dsub +DSUB-15_Female_EdgeMount_P2.77mm +15-pin D-Sub connector, solder-cups edge-mounted, female, x-pin-pitch 2.77mm, distance of mounting holes 33.3mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +15-pin D-Sub connector edge mount solder cup female x-pin-pitch 2.77mm mounting holes distance 33.3mm +0 +15 +15 +Connector_Dsub +DSUB-15_Female_Horizontal_P2.77x2.54mm_EdgePinOffset9.40mm +15-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, female, pitch 2.77x2.54mm, pin-PCB-offset 9.4mm, see http://docs-europe.electrocomponents.com/webdocs/1585/0900766b81585df2.pdf +15-pin D-Sub connector horizontal angled 90deg THT female pitch 2.77x2.54mm pin-PCB-offset 9.4mm +0 +15 +15 +Connector_Dsub +DSUB-15_Female_Horizontal_P2.77x2.84mm_EdgePinOffset4.94mm_Housed_MountingHolesOffset7.48mm +15-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, female, pitch 2.77x2.84mm, pin-PCB-offset 4.9399999999999995mm, distance of mounting holes 33.3mm, distance of mounting holes to PCB edge 7.4799999999999995mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +15-pin D-Sub connector horizontal angled 90deg THT female pitch 2.77x2.84mm pin-PCB-offset 4.9399999999999995mm mounting-holes-distance 33.3mm mounting-hole-offset 33.3mm +0 +17 +16 +Connector_Dsub +DSUB-15_Female_Horizontal_P2.77x2.84mm_EdgePinOffset7.70mm_Housed_MountingHolesOffset9.12mm +15-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, female, pitch 2.77x2.84mm, pin-PCB-offset 7.699999999999999mm, distance of mounting holes 33.3mm, distance of mounting holes to PCB edge 9.12mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +15-pin D-Sub connector horizontal angled 90deg THT female pitch 2.77x2.84mm pin-PCB-offset 7.699999999999999mm mounting-holes-distance 33.3mm mounting-hole-offset 33.3mm +0 +17 +16 +Connector_Dsub +DSUB-15_Female_Horizontal_P2.77x2.84mm_EdgePinOffset9.40mm +15-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, female, pitch 2.77x2.84mm, pin-PCB-offset 9.4mm, see http://docs-europe.electrocomponents.com/webdocs/1585/0900766b81585df2.pdf +15-pin D-Sub connector horizontal angled 90deg THT female pitch 2.77x2.84mm pin-PCB-offset 9.4mm +0 +15 +15 +Connector_Dsub +DSUB-15_Female_Horizontal_P2.77x2.84mm_EdgePinOffset9.90mm_Housed_MountingHolesOffset11.32mm +15-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, female, pitch 2.77x2.84mm, pin-PCB-offset 9.9mm, distance of mounting holes 33.3mm, distance of mounting holes to PCB edge 11.32mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +15-pin D-Sub connector horizontal angled 90deg THT female pitch 2.77x2.84mm pin-PCB-offset 9.9mm mounting-holes-distance 33.3mm mounting-hole-offset 33.3mm +0 +17 +16 +Connector_Dsub +DSUB-15_Female_Horizontal_P2.77x2.84mm_EdgePinOffset14.56mm_Housed_MountingHolesOffset8.20mm +15-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, female, pitch 2.77x2.84mm, pin-PCB-offset 14.56mm, distance of mounting holes 33.3mm, distance of mounting holes to PCB edge 8.2mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +15-pin D-Sub connector horizontal angled 90deg THT female pitch 2.77x2.84mm pin-PCB-offset 14.56mm mounting-holes-distance 33.3mm mounting-hole-offset 33.3mm +0 +17 +16 +Connector_Dsub +DSUB-15_Female_Horizontal_P2.77x2.84mm_EdgePinOffset14.56mm_Housed_MountingHolesOffset15.98mm +15-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, female, pitch 2.77x2.84mm, pin-PCB-offset 14.56mm, distance of mounting holes 33.3mm, distance of mounting holes to PCB edge 15.979999999999999mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +15-pin D-Sub connector horizontal angled 90deg THT female pitch 2.77x2.84mm pin-PCB-offset 14.56mm mounting-holes-distance 33.3mm mounting-hole-offset 33.3mm +0 +17 +16 +Connector_Dsub +DSUB-15_Female_Vertical_P2.77x2.84mm +15-pin D-Sub connector, straight/vertical, THT-mount, female, pitch 2.77x2.84mm, distance of mounting holes 33.3mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +15-pin D-Sub connector straight vertical THT female pitch 2.77x2.84mm mounting holes distance 33.3mm +0 +15 +15 +Connector_Dsub +DSUB-15_Female_Vertical_P2.77x2.84mm_MountingHoles +15-pin D-Sub connector, straight/vertical, THT-mount, female, pitch 2.77x2.84mm, distance of mounting holes 33.3mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +15-pin D-Sub connector straight vertical THT female pitch 2.77x2.84mm mounting holes distance 33.3mm +0 +17 +16 +Connector_Dsub +DSUB-15_Male_EdgeMount_P2.77mm +15-pin D-Sub connector, solder-cups edge-mounted, male, x-pin-pitch 2.77mm, distance of mounting holes 33.3mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +15-pin D-Sub connector edge mount solder cup male x-pin-pitch 2.77mm mounting holes distance 33.3mm +0 +15 +15 +Connector_Dsub +DSUB-15_Male_Horizontal_P2.77x2.54mm_EdgePinOffset9.40mm +15-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, male, pitch 2.77x2.54mm, pin-PCB-offset 9.4mm, see http://docs-europe.electrocomponents.com/webdocs/1585/0900766b81585df2.pdf +15-pin D-Sub connector horizontal angled 90deg THT male pitch 2.77x2.54mm pin-PCB-offset 9.4mm +0 +15 +15 +Connector_Dsub +DSUB-15_Male_Horizontal_P2.77x2.84mm_EdgePinOffset4.94mm_Housed_MountingHolesOffset7.48mm +15-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, male, pitch 2.77x2.84mm, pin-PCB-offset 4.9399999999999995mm, distance of mounting holes 33.3mm, distance of mounting holes to PCB edge 7.4799999999999995mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +15-pin D-Sub connector horizontal angled 90deg THT male pitch 2.77x2.84mm pin-PCB-offset 4.9399999999999995mm mounting-holes-distance 33.3mm mounting-hole-offset 33.3mm +0 +17 +16 +Connector_Dsub +DSUB-15_Male_Horizontal_P2.77x2.84mm_EdgePinOffset7.70mm_Housed_MountingHolesOffset9.12mm +15-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, male, pitch 2.77x2.84mm, pin-PCB-offset 7.699999999999999mm, distance of mounting holes 33.3mm, distance of mounting holes to PCB edge 9.12mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +15-pin D-Sub connector horizontal angled 90deg THT male pitch 2.77x2.84mm pin-PCB-offset 7.699999999999999mm mounting-holes-distance 33.3mm mounting-hole-offset 33.3mm +0 +17 +16 +Connector_Dsub +DSUB-15_Male_Horizontal_P2.77x2.84mm_EdgePinOffset9.40mm +15-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, male, pitch 2.77x2.84mm, pin-PCB-offset 9.4mm, see http://docs-europe.electrocomponents.com/webdocs/1585/0900766b81585df2.pdf +15-pin D-Sub connector horizontal angled 90deg THT male pitch 2.77x2.84mm pin-PCB-offset 9.4mm +0 +15 +15 +Connector_Dsub +DSUB-15_Male_Horizontal_P2.77x2.84mm_EdgePinOffset9.90mm_Housed_MountingHolesOffset11.32mm +15-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, male, pitch 2.77x2.84mm, pin-PCB-offset 9.9mm, distance of mounting holes 33.3mm, distance of mounting holes to PCB edge 11.32mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +15-pin D-Sub connector horizontal angled 90deg THT male pitch 2.77x2.84mm pin-PCB-offset 9.9mm mounting-holes-distance 33.3mm mounting-hole-offset 33.3mm +0 +17 +16 +Connector_Dsub +DSUB-15_Male_Horizontal_P2.77x2.84mm_EdgePinOffset14.56mm_Housed_MountingHolesOffset8.20mm +15-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, male, pitch 2.77x2.84mm, pin-PCB-offset 14.56mm, distance of mounting holes 33.3mm, distance of mounting holes to PCB edge 8.2mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +15-pin D-Sub connector horizontal angled 90deg THT male pitch 2.77x2.84mm pin-PCB-offset 14.56mm mounting-holes-distance 33.3mm mounting-hole-offset 33.3mm +0 +17 +16 +Connector_Dsub +DSUB-15_Male_Horizontal_P2.77x2.84mm_EdgePinOffset14.56mm_Housed_MountingHolesOffset15.98mm +15-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, male, pitch 2.77x2.84mm, pin-PCB-offset 14.56mm, distance of mounting holes 33.3mm, distance of mounting holes to PCB edge 15.979999999999999mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +15-pin D-Sub connector horizontal angled 90deg THT male pitch 2.77x2.84mm pin-PCB-offset 14.56mm mounting-holes-distance 33.3mm mounting-hole-offset 33.3mm +0 +17 +16 +Connector_Dsub +DSUB-15_Male_Vertical_P2.77x2.84mm +15-pin D-Sub connector, straight/vertical, THT-mount, male, pitch 2.77x2.84mm, distance of mounting holes 33.3mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +15-pin D-Sub connector straight vertical THT male pitch 2.77x2.84mm mounting holes distance 33.3mm +0 +15 +15 +Connector_Dsub +DSUB-15_Male_Vertical_P2.77x2.84mm_MountingHoles +15-pin D-Sub connector, straight/vertical, THT-mount, male, pitch 2.77x2.84mm, distance of mounting holes 33.3mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +15-pin D-Sub connector straight vertical THT male pitch 2.77x2.84mm mounting holes distance 33.3mm +0 +17 +16 +Connector_Dsub +DSUB-25_Female_EdgeMount_P2.77mm +25-pin D-Sub connector, solder-cups edge-mounted, female, x-pin-pitch 2.77mm, distance of mounting holes 47.1mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +25-pin D-Sub connector edge mount solder cup female x-pin-pitch 2.77mm mounting holes distance 47.1mm +0 +25 +25 +Connector_Dsub +DSUB-25_Female_Horizontal_P2.77x2.54mm_EdgePinOffset9.40mm +25-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, female, pitch 2.77x2.54mm, pin-PCB-offset 9.4mm, see http://docs-europe.electrocomponents.com/webdocs/1585/0900766b81585df2.pdf +25-pin D-Sub connector horizontal angled 90deg THT female pitch 2.77x2.54mm pin-PCB-offset 9.4mm +0 +25 +25 +Connector_Dsub +DSUB-25_Female_Horizontal_P2.77x2.84mm_EdgePinOffset4.94mm_Housed_MountingHolesOffset7.48mm +25-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, female, pitch 2.77x2.84mm, pin-PCB-offset 4.9399999999999995mm, distance of mounting holes 47.1mm, distance of mounting holes to PCB edge 7.4799999999999995mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +25-pin D-Sub connector horizontal angled 90deg THT female pitch 2.77x2.84mm pin-PCB-offset 4.9399999999999995mm mounting-holes-distance 47.1mm mounting-hole-offset 47.1mm +0 +27 +26 +Connector_Dsub +DSUB-25_Female_Horizontal_P2.77x2.84mm_EdgePinOffset7.70mm_Housed_MountingHolesOffset9.12mm +25-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, female, pitch 2.77x2.84mm, pin-PCB-offset 7.699999999999999mm, distance of mounting holes 47.1mm, distance of mounting holes to PCB edge 9.12mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +25-pin D-Sub connector horizontal angled 90deg THT female pitch 2.77x2.84mm pin-PCB-offset 7.699999999999999mm mounting-holes-distance 47.1mm mounting-hole-offset 47.1mm +0 +27 +26 +Connector_Dsub +DSUB-25_Female_Horizontal_P2.77x2.84mm_EdgePinOffset9.40mm +25-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, female, pitch 2.77x2.84mm, pin-PCB-offset 9.4mm, see http://docs-europe.electrocomponents.com/webdocs/1585/0900766b81585df2.pdf +25-pin D-Sub connector horizontal angled 90deg THT female pitch 2.77x2.84mm pin-PCB-offset 9.4mm +0 +25 +25 +Connector_Dsub +DSUB-25_Female_Horizontal_P2.77x2.84mm_EdgePinOffset9.90mm_Housed_MountingHolesOffset11.32mm +25-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, female, pitch 2.77x2.84mm, pin-PCB-offset 9.9mm, distance of mounting holes 47.1mm, distance of mounting holes to PCB edge 11.32mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +25-pin D-Sub connector horizontal angled 90deg THT female pitch 2.77x2.84mm pin-PCB-offset 9.9mm mounting-holes-distance 47.1mm mounting-hole-offset 47.1mm +0 +27 +26 +Connector_Dsub +DSUB-25_Female_Horizontal_P2.77x2.84mm_EdgePinOffset14.56mm_Housed_MountingHolesOffset8.20mm +25-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, female, pitch 2.77x2.84mm, pin-PCB-offset 14.56mm, distance of mounting holes 47.1mm, distance of mounting holes to PCB edge 8.2mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +25-pin D-Sub connector horizontal angled 90deg THT female pitch 2.77x2.84mm pin-PCB-offset 14.56mm mounting-holes-distance 47.1mm mounting-hole-offset 47.1mm +0 +27 +26 +Connector_Dsub +DSUB-25_Female_Horizontal_P2.77x2.84mm_EdgePinOffset14.56mm_Housed_MountingHolesOffset15.98mm +25-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, female, pitch 2.77x2.84mm, pin-PCB-offset 14.56mm, distance of mounting holes 47.1mm, distance of mounting holes to PCB edge 15.979999999999999mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +25-pin D-Sub connector horizontal angled 90deg THT female pitch 2.77x2.84mm pin-PCB-offset 14.56mm mounting-holes-distance 47.1mm mounting-hole-offset 47.1mm +0 +27 +26 +Connector_Dsub +DSUB-25_Female_Vertical_P2.77x2.84mm +25-pin D-Sub connector, straight/vertical, THT-mount, female, pitch 2.77x2.84mm, distance of mounting holes 47.1mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +25-pin D-Sub connector straight vertical THT female pitch 2.77x2.84mm mounting holes distance 47.1mm +0 +25 +25 +Connector_Dsub +DSUB-25_Female_Vertical_P2.77x2.84mm_MountingHoles +25-pin D-Sub connector, straight/vertical, THT-mount, female, pitch 2.77x2.84mm, distance of mounting holes 47.1mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +25-pin D-Sub connector straight vertical THT female pitch 2.77x2.84mm mounting holes distance 47.1mm +0 +27 +26 +Connector_Dsub +DSUB-25_Male_EdgeMount_P2.77mm +25-pin D-Sub connector, solder-cups edge-mounted, male, x-pin-pitch 2.77mm, distance of mounting holes 47.1mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +25-pin D-Sub connector edge mount solder cup male x-pin-pitch 2.77mm mounting holes distance 47.1mm +0 +25 +25 +Connector_Dsub +DSUB-25_Male_Horizontal_P2.77x2.54mm_EdgePinOffset9.40mm +25-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, male, pitch 2.77x2.54mm, pin-PCB-offset 9.4mm, see http://docs-europe.electrocomponents.com/webdocs/1585/0900766b81585df2.pdf +25-pin D-Sub connector horizontal angled 90deg THT male pitch 2.77x2.54mm pin-PCB-offset 9.4mm +0 +25 +25 +Connector_Dsub +DSUB-25_Male_Horizontal_P2.77x2.84mm_EdgePinOffset4.94mm_Housed_MountingHolesOffset7.48mm +25-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, male, pitch 2.77x2.84mm, pin-PCB-offset 4.9399999999999995mm, distance of mounting holes 47.1mm, distance of mounting holes to PCB edge 7.4799999999999995mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +25-pin D-Sub connector horizontal angled 90deg THT male pitch 2.77x2.84mm pin-PCB-offset 4.9399999999999995mm mounting-holes-distance 47.1mm mounting-hole-offset 47.1mm +0 +27 +26 +Connector_Dsub +DSUB-25_Male_Horizontal_P2.77x2.84mm_EdgePinOffset7.70mm_Housed_MountingHolesOffset9.12mm +25-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, male, pitch 2.77x2.84mm, pin-PCB-offset 7.699999999999999mm, distance of mounting holes 47.1mm, distance of mounting holes to PCB edge 9.12mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +25-pin D-Sub connector horizontal angled 90deg THT male pitch 2.77x2.84mm pin-PCB-offset 7.699999999999999mm mounting-holes-distance 47.1mm mounting-hole-offset 47.1mm +0 +27 +26 +Connector_Dsub +DSUB-25_Male_Horizontal_P2.77x2.84mm_EdgePinOffset9.40mm +25-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, male, pitch 2.77x2.84mm, pin-PCB-offset 9.4mm, see http://docs-europe.electrocomponents.com/webdocs/1585/0900766b81585df2.pdf +25-pin D-Sub connector horizontal angled 90deg THT male pitch 2.77x2.84mm pin-PCB-offset 9.4mm +0 +25 +25 +Connector_Dsub +DSUB-25_Male_Horizontal_P2.77x2.84mm_EdgePinOffset9.90mm_Housed_MountingHolesOffset11.32mm +25-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, male, pitch 2.77x2.84mm, pin-PCB-offset 9.9mm, distance of mounting holes 47.1mm, distance of mounting holes to PCB edge 11.32mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +25-pin D-Sub connector horizontal angled 90deg THT male pitch 2.77x2.84mm pin-PCB-offset 9.9mm mounting-holes-distance 47.1mm mounting-hole-offset 47.1mm +0 +27 +26 +Connector_Dsub +DSUB-25_Male_Horizontal_P2.77x2.84mm_EdgePinOffset14.56mm_Housed_MountingHolesOffset8.20mm +25-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, male, pitch 2.77x2.84mm, pin-PCB-offset 14.56mm, distance of mounting holes 47.1mm, distance of mounting holes to PCB edge 8.2mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +25-pin D-Sub connector horizontal angled 90deg THT male pitch 2.77x2.84mm pin-PCB-offset 14.56mm mounting-holes-distance 47.1mm mounting-hole-offset 47.1mm +0 +27 +26 +Connector_Dsub +DSUB-25_Male_Horizontal_P2.77x2.84mm_EdgePinOffset14.56mm_Housed_MountingHolesOffset15.98mm +25-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, male, pitch 2.77x2.84mm, pin-PCB-offset 14.56mm, distance of mounting holes 47.1mm, distance of mounting holes to PCB edge 15.979999999999999mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +25-pin D-Sub connector horizontal angled 90deg THT male pitch 2.77x2.84mm pin-PCB-offset 14.56mm mounting-holes-distance 47.1mm mounting-hole-offset 47.1mm +0 +27 +26 +Connector_Dsub +DSUB-25_Male_Vertical_P2.77x2.84mm +25-pin D-Sub connector, straight/vertical, THT-mount, male, pitch 2.77x2.84mm, distance of mounting holes 47.1mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +25-pin D-Sub connector straight vertical THT male pitch 2.77x2.84mm mounting holes distance 47.1mm +0 +25 +25 +Connector_Dsub +DSUB-25_Male_Vertical_P2.77x2.84mm_MountingHoles +25-pin D-Sub connector, straight/vertical, THT-mount, male, pitch 2.77x2.84mm, distance of mounting holes 47.1mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +25-pin D-Sub connector straight vertical THT male pitch 2.77x2.84mm mounting holes distance 47.1mm +0 +27 +26 +Connector_Dsub +DSUB-26-HD_Female_Horizontal_P2.29x1.98mm_EdgePinOffset3.03mm_Housed_MountingHolesOffset4.94mm +26-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, female, pitch 2.29x1.98mm, pin-PCB-offset 3.0300000000000002mm, distance of mounting holes 33.3mm, distance of mounting holes to PCB edge 4.9399999999999995mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +26-pin D-Sub connector horizontal angled 90deg THT female pitch 2.29x1.98mm pin-PCB-offset 3.0300000000000002mm mounting-holes-distance 33.3mm mounting-hole-offset 33.3mm +0 +28 +27 +Connector_Dsub +DSUB-26-HD_Female_Horizontal_P2.29x1.98mm_EdgePinOffset8.35mm_Housed_MountingHolesOffset10.89mm +26-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, female, pitch 2.29x1.98mm, pin-PCB-offset 8.35mm, distance of mounting holes 33.3mm, distance of mounting holes to PCB edge 10.889999999999999mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +26-pin D-Sub connector horizontal angled 90deg THT female pitch 2.29x1.98mm pin-PCB-offset 8.35mm mounting-holes-distance 33.3mm mounting-hole-offset 33.3mm +0 +28 +27 +Connector_Dsub +DSUB-26-HD_Female_Horizontal_P2.29x1.98mm_EdgePinOffset9.40mm +26-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, female, pitch 2.29x1.98mm, pin-PCB-offset 9.4mm, see http://docs-europe.electrocomponents.com/webdocs/1585/0900766b81585df2.pdf +26-pin D-Sub connector horizontal angled 90deg THT female pitch 2.29x1.98mm pin-PCB-offset 9.4mm +0 +26 +26 +Connector_Dsub +DSUB-26-HD_Female_Horizontal_P2.29x2.54mm_EdgePinOffset9.40mm +26-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, female, pitch 2.29x2.54mm, pin-PCB-offset 9.4mm, see http://docs-europe.electrocomponents.com/webdocs/1585/0900766b81585df2.pdf +26-pin D-Sub connector horizontal angled 90deg THT female pitch 2.29x2.54mm pin-PCB-offset 9.4mm +0 +26 +26 +Connector_Dsub +DSUB-26-HD_Female_Vertical_P2.29x1.98mm_MountingHoles +26-pin D-Sub connector, straight/vertical, THT-mount, female, pitch 2.29x1.98mm, distance of mounting holes 33.3mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +26-pin D-Sub connector straight vertical THT female pitch 2.29x1.98mm mounting holes distance 33.3mm +0 +28 +27 +Connector_Dsub +DSUB-26-HD_Male_Horizontal_P2.29x1.98mm_EdgePinOffset3.03mm_Housed_MountingHolesOffset4.94mm +26-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, male, pitch 2.29x1.98mm, pin-PCB-offset 3.0300000000000002mm, distance of mounting holes 33.3mm, distance of mounting holes to PCB edge 4.9399999999999995mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +26-pin D-Sub connector horizontal angled 90deg THT male pitch 2.29x1.98mm pin-PCB-offset 3.0300000000000002mm mounting-holes-distance 33.3mm mounting-hole-offset 33.3mm +0 +28 +27 +Connector_Dsub +DSUB-26-HD_Male_Horizontal_P2.29x1.98mm_EdgePinOffset8.35mm_Housed_MountingHolesOffset10.89mm +26-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, male, pitch 2.29x1.98mm, pin-PCB-offset 8.35mm, distance of mounting holes 33.3mm, distance of mounting holes to PCB edge 10.889999999999999mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +26-pin D-Sub connector horizontal angled 90deg THT male pitch 2.29x1.98mm pin-PCB-offset 8.35mm mounting-holes-distance 33.3mm mounting-hole-offset 33.3mm +0 +28 +27 +Connector_Dsub +DSUB-26-HD_Male_Horizontal_P2.29x1.98mm_EdgePinOffset9.40mm +26-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, male, pitch 2.29x1.98mm, pin-PCB-offset 9.4mm, see http://docs-europe.electrocomponents.com/webdocs/1585/0900766b81585df2.pdf +26-pin D-Sub connector horizontal angled 90deg THT male pitch 2.29x1.98mm pin-PCB-offset 9.4mm +0 +26 +26 +Connector_Dsub +DSUB-26-HD_Male_Horizontal_P2.29x2.54mm_EdgePinOffset9.40mm +26-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, male, pitch 2.29x2.54mm, pin-PCB-offset 9.4mm, see http://docs-europe.electrocomponents.com/webdocs/1585/0900766b81585df2.pdf +26-pin D-Sub connector horizontal angled 90deg THT male pitch 2.29x2.54mm pin-PCB-offset 9.4mm +0 +26 +26 +Connector_Dsub +DSUB-26-HD_Male_Vertical_P2.29x1.98mm_MountingHoles +26-pin D-Sub connector, straight/vertical, THT-mount, male, pitch 2.29x1.98mm, distance of mounting holes 33.3mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +26-pin D-Sub connector straight vertical THT male pitch 2.29x1.98mm mounting holes distance 33.3mm +0 +28 +27 +Connector_Dsub +DSUB-37_Female_EdgeMount_P2.77mm +37-pin D-Sub connector, solder-cups edge-mounted, female, x-pin-pitch 2.77mm, distance of mounting holes 63.5mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +37-pin D-Sub connector edge mount solder cup female x-pin-pitch 2.77mm mounting holes distance 63.5mm +0 +37 +37 +Connector_Dsub +DSUB-37_Female_Horizontal_P2.77x2.54mm_EdgePinOffset9.40mm +37-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, female, pitch 2.77x2.54mm, pin-PCB-offset 9.4mm, see http://docs-europe.electrocomponents.com/webdocs/1585/0900766b81585df2.pdf +37-pin D-Sub connector horizontal angled 90deg THT female pitch 2.77x2.54mm pin-PCB-offset 9.4mm +0 +37 +37 +Connector_Dsub +DSUB-37_Female_Horizontal_P2.77x2.84mm_EdgePinOffset4.94mm_Housed_MountingHolesOffset7.48mm +37-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, female, pitch 2.77x2.84mm, pin-PCB-offset 4.9399999999999995mm, distance of mounting holes 63.5mm, distance of mounting holes to PCB edge 7.4799999999999995mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +37-pin D-Sub connector horizontal angled 90deg THT female pitch 2.77x2.84mm pin-PCB-offset 4.9399999999999995mm mounting-holes-distance 63.5mm mounting-hole-offset 63.5mm +0 +39 +38 +Connector_Dsub +DSUB-37_Female_Horizontal_P2.77x2.84mm_EdgePinOffset7.70mm_Housed_MountingHolesOffset9.12mm +37-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, female, pitch 2.77x2.84mm, pin-PCB-offset 7.699999999999999mm, distance of mounting holes 63.5mm, distance of mounting holes to PCB edge 9.12mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +37-pin D-Sub connector horizontal angled 90deg THT female pitch 2.77x2.84mm pin-PCB-offset 7.699999999999999mm mounting-holes-distance 63.5mm mounting-hole-offset 63.5mm +0 +39 +38 +Connector_Dsub +DSUB-37_Female_Horizontal_P2.77x2.84mm_EdgePinOffset9.40mm +37-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, female, pitch 2.77x2.84mm, pin-PCB-offset 9.4mm, see http://docs-europe.electrocomponents.com/webdocs/1585/0900766b81585df2.pdf +37-pin D-Sub connector horizontal angled 90deg THT female pitch 2.77x2.84mm pin-PCB-offset 9.4mm +0 +37 +37 +Connector_Dsub +DSUB-37_Female_Horizontal_P2.77x2.84mm_EdgePinOffset9.90mm_Housed_MountingHolesOffset11.32mm +37-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, female, pitch 2.77x2.84mm, pin-PCB-offset 9.9mm, distance of mounting holes 63.5mm, distance of mounting holes to PCB edge 11.32mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +37-pin D-Sub connector horizontal angled 90deg THT female pitch 2.77x2.84mm pin-PCB-offset 9.9mm mounting-holes-distance 63.5mm mounting-hole-offset 63.5mm +0 +39 +38 +Connector_Dsub +DSUB-37_Female_Horizontal_P2.77x2.84mm_EdgePinOffset14.56mm_Housed_MountingHolesOffset8.20mm +37-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, female, pitch 2.77x2.84mm, pin-PCB-offset 14.56mm, distance of mounting holes 63.5mm, distance of mounting holes to PCB edge 8.2mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +37-pin D-Sub connector horizontal angled 90deg THT female pitch 2.77x2.84mm pin-PCB-offset 14.56mm mounting-holes-distance 63.5mm mounting-hole-offset 63.5mm +0 +39 +38 +Connector_Dsub +DSUB-37_Female_Horizontal_P2.77x2.84mm_EdgePinOffset14.56mm_Housed_MountingHolesOffset15.98mm +37-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, female, pitch 2.77x2.84mm, pin-PCB-offset 14.56mm, distance of mounting holes 63.5mm, distance of mounting holes to PCB edge 15.979999999999999mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +37-pin D-Sub connector horizontal angled 90deg THT female pitch 2.77x2.84mm pin-PCB-offset 14.56mm mounting-holes-distance 63.5mm mounting-hole-offset 63.5mm +0 +39 +38 +Connector_Dsub +DSUB-37_Female_Vertical_P2.77x2.84mm +37-pin D-Sub connector, straight/vertical, THT-mount, female, pitch 2.77x2.84mm, distance of mounting holes 63.5mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +37-pin D-Sub connector straight vertical THT female pitch 2.77x2.84mm mounting holes distance 63.5mm +0 +37 +37 +Connector_Dsub +DSUB-37_Female_Vertical_P2.77x2.84mm_MountingHoles +37-pin D-Sub connector, straight/vertical, THT-mount, female, pitch 2.77x2.84mm, distance of mounting holes 63.5mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +37-pin D-Sub connector straight vertical THT female pitch 2.77x2.84mm mounting holes distance 63.5mm +0 +39 +38 +Connector_Dsub +DSUB-37_Male_EdgeMount_P2.77mm +37-pin D-Sub connector, solder-cups edge-mounted, male, x-pin-pitch 2.77mm, distance of mounting holes 63.5mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +37-pin D-Sub connector edge mount solder cup male x-pin-pitch 2.77mm mounting holes distance 63.5mm +0 +37 +37 +Connector_Dsub +DSUB-37_Male_Horizontal_P2.77x2.54mm_EdgePinOffset9.40mm +37-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, male, pitch 2.77x2.54mm, pin-PCB-offset 9.4mm, see http://docs-europe.electrocomponents.com/webdocs/1585/0900766b81585df2.pdf +37-pin D-Sub connector horizontal angled 90deg THT male pitch 2.77x2.54mm pin-PCB-offset 9.4mm +0 +37 +37 +Connector_Dsub +DSUB-37_Male_Horizontal_P2.77x2.84mm_EdgePinOffset4.94mm_Housed_MountingHolesOffset7.48mm +37-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, male, pitch 2.77x2.84mm, pin-PCB-offset 4.9399999999999995mm, distance of mounting holes 63.5mm, distance of mounting holes to PCB edge 7.4799999999999995mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +37-pin D-Sub connector horizontal angled 90deg THT male pitch 2.77x2.84mm pin-PCB-offset 4.9399999999999995mm mounting-holes-distance 63.5mm mounting-hole-offset 63.5mm +0 +39 +38 +Connector_Dsub +DSUB-37_Male_Horizontal_P2.77x2.84mm_EdgePinOffset7.70mm_Housed_MountingHolesOffset9.12mm +37-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, male, pitch 2.77x2.84mm, pin-PCB-offset 7.699999999999999mm, distance of mounting holes 63.5mm, distance of mounting holes to PCB edge 9.12mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +37-pin D-Sub connector horizontal angled 90deg THT male pitch 2.77x2.84mm pin-PCB-offset 7.699999999999999mm mounting-holes-distance 63.5mm mounting-hole-offset 63.5mm +0 +39 +38 +Connector_Dsub +DSUB-37_Male_Horizontal_P2.77x2.84mm_EdgePinOffset9.40mm +37-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, male, pitch 2.77x2.84mm, pin-PCB-offset 9.4mm, see http://docs-europe.electrocomponents.com/webdocs/1585/0900766b81585df2.pdf +37-pin D-Sub connector horizontal angled 90deg THT male pitch 2.77x2.84mm pin-PCB-offset 9.4mm +0 +37 +37 +Connector_Dsub +DSUB-37_Male_Horizontal_P2.77x2.84mm_EdgePinOffset9.90mm_Housed_MountingHolesOffset11.32mm +37-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, male, pitch 2.77x2.84mm, pin-PCB-offset 9.9mm, distance of mounting holes 63.5mm, distance of mounting holes to PCB edge 11.32mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +37-pin D-Sub connector horizontal angled 90deg THT male pitch 2.77x2.84mm pin-PCB-offset 9.9mm mounting-holes-distance 63.5mm mounting-hole-offset 63.5mm +0 +39 +38 +Connector_Dsub +DSUB-37_Male_Horizontal_P2.77x2.84mm_EdgePinOffset14.56mm_Housed_MountingHolesOffset8.20mm +37-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, male, pitch 2.77x2.84mm, pin-PCB-offset 14.56mm, distance of mounting holes 63.5mm, distance of mounting holes to PCB edge 8.2mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +37-pin D-Sub connector horizontal angled 90deg THT male pitch 2.77x2.84mm pin-PCB-offset 14.56mm mounting-holes-distance 63.5mm mounting-hole-offset 63.5mm +0 +39 +38 +Connector_Dsub +DSUB-37_Male_Horizontal_P2.77x2.84mm_EdgePinOffset14.56mm_Housed_MountingHolesOffset15.98mm +37-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, male, pitch 2.77x2.84mm, pin-PCB-offset 14.56mm, distance of mounting holes 63.5mm, distance of mounting holes to PCB edge 15.979999999999999mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +37-pin D-Sub connector horizontal angled 90deg THT male pitch 2.77x2.84mm pin-PCB-offset 14.56mm mounting-holes-distance 63.5mm mounting-hole-offset 63.5mm +0 +39 +38 +Connector_Dsub +DSUB-37_Male_Vertical_P2.77x2.84mm +37-pin D-Sub connector, straight/vertical, THT-mount, male, pitch 2.77x2.84mm, distance of mounting holes 63.5mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +37-pin D-Sub connector straight vertical THT male pitch 2.77x2.84mm mounting holes distance 63.5mm +0 +37 +37 +Connector_Dsub +DSUB-37_Male_Vertical_P2.77x2.84mm_MountingHoles +37-pin D-Sub connector, straight/vertical, THT-mount, male, pitch 2.77x2.84mm, distance of mounting holes 63.5mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +37-pin D-Sub connector straight vertical THT male pitch 2.77x2.84mm mounting holes distance 63.5mm +0 +39 +38 +Connector_Dsub +DSUB-44-HD_Female_Horizontal_P2.29x1.98mm_EdgePinOffset3.03mm_Housed_MountingHolesOffset4.94mm +44-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, female, pitch 2.29x1.98mm, pin-PCB-offset 3.0300000000000002mm, distance of mounting holes 47.1mm, distance of mounting holes to PCB edge 4.9399999999999995mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +44-pin D-Sub connector horizontal angled 90deg THT female pitch 2.29x1.98mm pin-PCB-offset 3.0300000000000002mm mounting-holes-distance 47.1mm mounting-hole-offset 47.1mm +0 +46 +45 +Connector_Dsub +DSUB-44-HD_Female_Horizontal_P2.29x1.98mm_EdgePinOffset8.35mm_Housed_MountingHolesOffset10.89mm +44-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, female, pitch 2.29x1.98mm, pin-PCB-offset 8.35mm, distance of mounting holes 47.1mm, distance of mounting holes to PCB edge 10.889999999999999mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +44-pin D-Sub connector horizontal angled 90deg THT female pitch 2.29x1.98mm pin-PCB-offset 8.35mm mounting-holes-distance 47.1mm mounting-hole-offset 47.1mm +0 +46 +45 +Connector_Dsub +DSUB-44-HD_Female_Horizontal_P2.29x1.98mm_EdgePinOffset9.40mm +44-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, female, pitch 2.29x1.98mm, pin-PCB-offset 9.4mm, see http://docs-europe.electrocomponents.com/webdocs/1585/0900766b81585df2.pdf +44-pin D-Sub connector horizontal angled 90deg THT female pitch 2.29x1.98mm pin-PCB-offset 9.4mm +0 +44 +44 +Connector_Dsub +DSUB-44-HD_Female_Horizontal_P2.29x2.54mm_EdgePinOffset9.40mm +44-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, female, pitch 2.29x2.54mm, pin-PCB-offset 9.4mm, see http://docs-europe.electrocomponents.com/webdocs/1585/0900766b81585df2.pdf +44-pin D-Sub connector horizontal angled 90deg THT female pitch 2.29x2.54mm pin-PCB-offset 9.4mm +0 +44 +44 +Connector_Dsub +DSUB-44-HD_Female_Vertical_P2.29x1.98mm_MountingHoles +44-pin D-Sub connector, straight/vertical, THT-mount, female, pitch 2.29x1.98mm, distance of mounting holes 47.1mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +44-pin D-Sub connector straight vertical THT female pitch 2.29x1.98mm mounting holes distance 47.1mm +0 +46 +45 +Connector_Dsub +DSUB-44-HD_Male_Horizontal_P2.29x1.98mm_EdgePinOffset3.03mm_Housed_MountingHolesOffset4.94mm +44-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, male, pitch 2.29x1.98mm, pin-PCB-offset 3.0300000000000002mm, distance of mounting holes 47.1mm, distance of mounting holes to PCB edge 4.9399999999999995mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +44-pin D-Sub connector horizontal angled 90deg THT male pitch 2.29x1.98mm pin-PCB-offset 3.0300000000000002mm mounting-holes-distance 47.1mm mounting-hole-offset 47.1mm +0 +46 +45 +Connector_Dsub +DSUB-44-HD_Male_Horizontal_P2.29x1.98mm_EdgePinOffset8.35mm_Housed_MountingHolesOffset10.89mm +44-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, male, pitch 2.29x1.98mm, pin-PCB-offset 8.35mm, distance of mounting holes 47.1mm, distance of mounting holes to PCB edge 10.889999999999999mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +44-pin D-Sub connector horizontal angled 90deg THT male pitch 2.29x1.98mm pin-PCB-offset 8.35mm mounting-holes-distance 47.1mm mounting-hole-offset 47.1mm +0 +46 +45 +Connector_Dsub +DSUB-44-HD_Male_Horizontal_P2.29x1.98mm_EdgePinOffset9.40mm +44-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, male, pitch 2.29x1.98mm, pin-PCB-offset 9.4mm, see http://docs-europe.electrocomponents.com/webdocs/1585/0900766b81585df2.pdf +44-pin D-Sub connector horizontal angled 90deg THT male pitch 2.29x1.98mm pin-PCB-offset 9.4mm +0 +44 +44 +Connector_Dsub +DSUB-44-HD_Male_Horizontal_P2.29x2.54mm_EdgePinOffset9.40mm +44-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, male, pitch 2.29x2.54mm, pin-PCB-offset 9.4mm, see http://docs-europe.electrocomponents.com/webdocs/1585/0900766b81585df2.pdf +44-pin D-Sub connector horizontal angled 90deg THT male pitch 2.29x2.54mm pin-PCB-offset 9.4mm +0 +44 +44 +Connector_Dsub +DSUB-44-HD_Male_Vertical_P2.29x1.98mm_MountingHoles +44-pin D-Sub connector, straight/vertical, THT-mount, male, pitch 2.29x1.98mm, distance of mounting holes 47.1mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +44-pin D-Sub connector straight vertical THT male pitch 2.29x1.98mm mounting holes distance 47.1mm +0 +46 +45 +Connector_Dsub +DSUB-62-HD_Female_Horizontal_P2.41x1.98mm_EdgePinOffset3.03mm_Housed_MountingHolesOffset4.94mm +62-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, female, pitch 2.41x1.98mm, pin-PCB-offset 3.0300000000000002mm, distance of mounting holes 63.5mm, distance of mounting holes to PCB edge 4.9399999999999995mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +62-pin D-Sub connector horizontal angled 90deg THT female pitch 2.41x1.98mm pin-PCB-offset 3.0300000000000002mm mounting-holes-distance 63.5mm mounting-hole-offset 63.5mm +0 +64 +63 +Connector_Dsub +DSUB-62-HD_Female_Horizontal_P2.41x1.98mm_EdgePinOffset8.35mm_Housed_MountingHolesOffset10.89mm +62-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, female, pitch 2.41x1.98mm, pin-PCB-offset 8.35mm, distance of mounting holes 63.5mm, distance of mounting holes to PCB edge 10.889999999999999mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +62-pin D-Sub connector horizontal angled 90deg THT female pitch 2.41x1.98mm pin-PCB-offset 8.35mm mounting-holes-distance 63.5mm mounting-hole-offset 63.5mm +0 +64 +63 +Connector_Dsub +DSUB-62-HD_Female_Horizontal_P2.41x1.98mm_EdgePinOffset9.40mm +62-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, female, pitch 2.41x1.98mm, pin-PCB-offset 9.4mm, see http://docs-europe.electrocomponents.com/webdocs/1585/0900766b81585df2.pdf +62-pin D-Sub connector horizontal angled 90deg THT female pitch 2.41x1.98mm pin-PCB-offset 9.4mm +0 +62 +62 +Connector_Dsub +DSUB-62-HD_Female_Horizontal_P2.41x2.54mm_EdgePinOffset9.40mm +62-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, female, pitch 2.41x2.54mm, pin-PCB-offset 9.4mm, see http://docs-europe.electrocomponents.com/webdocs/1585/0900766b81585df2.pdf +62-pin D-Sub connector horizontal angled 90deg THT female pitch 2.41x2.54mm pin-PCB-offset 9.4mm +0 +62 +62 +Connector_Dsub +DSUB-62-HD_Female_Vertical_P2.41x1.98mm_MountingHoles +62-pin D-Sub connector, straight/vertical, THT-mount, female, pitch 2.41x1.98mm, distance of mounting holes 63.5mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +62-pin D-Sub connector straight vertical THT female pitch 2.41x1.98mm mounting holes distance 63.5mm +0 +64 +63 +Connector_Dsub +DSUB-62-HD_Male_Horizontal_P2.41x1.98mm_EdgePinOffset3.03mm_Housed_MountingHolesOffset4.94mm +62-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, male, pitch 2.41x1.98mm, pin-PCB-offset 3.0300000000000002mm, distance of mounting holes 63.5mm, distance of mounting holes to PCB edge 4.9399999999999995mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +62-pin D-Sub connector horizontal angled 90deg THT male pitch 2.41x1.98mm pin-PCB-offset 3.0300000000000002mm mounting-holes-distance 63.5mm mounting-hole-offset 63.5mm +0 +64 +63 +Connector_Dsub +DSUB-62-HD_Male_Horizontal_P2.41x1.98mm_EdgePinOffset8.35mm_Housed_MountingHolesOffset10.89mm +62-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, male, pitch 2.41x1.98mm, pin-PCB-offset 8.35mm, distance of mounting holes 63.5mm, distance of mounting holes to PCB edge 10.889999999999999mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +62-pin D-Sub connector horizontal angled 90deg THT male pitch 2.41x1.98mm pin-PCB-offset 8.35mm mounting-holes-distance 63.5mm mounting-hole-offset 63.5mm +0 +64 +63 +Connector_Dsub +DSUB-62-HD_Male_Horizontal_P2.41x1.98mm_EdgePinOffset9.40mm +62-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, male, pitch 2.41x1.98mm, pin-PCB-offset 9.4mm, see http://docs-europe.electrocomponents.com/webdocs/1585/0900766b81585df2.pdf +62-pin D-Sub connector horizontal angled 90deg THT male pitch 2.41x1.98mm pin-PCB-offset 9.4mm +0 +62 +62 +Connector_Dsub +DSUB-62-HD_Male_Horizontal_P2.41x2.54mm_EdgePinOffset9.40mm +62-pin D-Sub connector, horizontal/angled (90 deg), THT-mount, male, pitch 2.41x2.54mm, pin-PCB-offset 9.4mm, see http://docs-europe.electrocomponents.com/webdocs/1585/0900766b81585df2.pdf +62-pin D-Sub connector horizontal angled 90deg THT male pitch 2.41x2.54mm pin-PCB-offset 9.4mm +0 +62 +62 +Connector_Dsub +DSUB-62-HD_Male_Vertical_P2.41x1.98mm_MountingHoles +62-pin D-Sub connector, straight/vertical, THT-mount, male, pitch 2.41x1.98mm, distance of mounting holes 63.5mm, see https://disti-assets.s3.amazonaws.com/tonar/files/datasheets/16730.pdf +62-pin D-Sub connector straight vertical THT male pitch 2.41x1.98mm mounting holes distance 63.5mm +0 +64 +63 +Connector_FFC-FPC +Hirose_FH12-6S-0.5SH_1x06-1MP_P0.50mm_Horizontal +Hirose FH12, FFC/FPC connector, FH12-6S-0.5SH, 6 Pins per row (https://www.hirose.com/product/en/products/FH12/FH12-24S-0.5SH(55)/), generated with kicad-footprint-generator +connector Hirose FH12 horizontal +0 +8 +7 +Connector_FFC-FPC +Hirose_FH12-8S-0.5SH_1x08-1MP_P0.50mm_Horizontal +Hirose FH12, FFC/FPC connector, FH12-8S-0.5SH, 8 Pins per row (https://www.hirose.com/product/en/products/FH12/FH12-24S-0.5SH(55)/), generated with kicad-footprint-generator +connector Hirose FH12 horizontal +0 +10 +9 +Connector_FFC-FPC +Hirose_FH12-10S-0.5SH_1x10-1MP_P0.50mm_Horizontal +Hirose FH12, FFC/FPC connector, FH12-10S-0.5SH, 10 Pins per row (https://www.hirose.com/product/en/products/FH12/FH12-24S-0.5SH(55)/), generated with kicad-footprint-generator +connector Hirose FH12 horizontal +0 +12 +11 +Connector_FFC-FPC +Hirose_FH12-11S-0.5SH_1x11-1MP_P0.50mm_Horizontal +Hirose FH12, FFC/FPC connector, FH12-11S-0.5SH, 11 Pins per row (https://www.hirose.com/product/en/products/FH12/FH12-24S-0.5SH(55)/), generated with kicad-footprint-generator +connector Hirose FH12 horizontal +0 +13 +12 +Connector_FFC-FPC +Hirose_FH12-12S-0.5SH_1x12-1MP_P0.50mm_Horizontal +Hirose FH12, FFC/FPC connector, FH12-12S-0.5SH, 12 Pins per row (https://www.hirose.com/product/en/products/FH12/FH12-24S-0.5SH(55)/), generated with kicad-footprint-generator +connector Hirose FH12 horizontal +0 +14 +13 +Connector_FFC-FPC +Hirose_FH12-13S-0.5SH_1x13-1MP_P0.50mm_Horizontal +Hirose FH12, FFC/FPC connector, FH12-13S-0.5SH, 13 Pins per row (https://www.hirose.com/product/en/products/FH12/FH12-24S-0.5SH(55)/), generated with kicad-footprint-generator +connector Hirose FH12 horizontal +0 +15 +14 +Connector_FFC-FPC +Hirose_FH12-14S-0.5SH_1x14-1MP_P0.50mm_Horizontal +Hirose FH12, FFC/FPC connector, FH12-14S-0.5SH, 14 Pins per row (https://www.hirose.com/product/en/products/FH12/FH12-24S-0.5SH(55)/), generated with kicad-footprint-generator +connector Hirose FH12 horizontal +0 +16 +15 +Connector_FFC-FPC +Hirose_FH12-15S-0.5SH_1x15-1MP_P0.50mm_Horizontal +Hirose FH12, FFC/FPC connector, FH12-15S-0.5SH, 15 Pins per row (https://www.hirose.com/product/en/products/FH12/FH12-24S-0.5SH(55)/), generated with kicad-footprint-generator +connector Hirose FH12 horizontal +0 +17 +16 +Connector_FFC-FPC +Hirose_FH12-16S-0.5SH_1x16-1MP_P0.50mm_Horizontal +Hirose FH12, FFC/FPC connector, FH12-16S-0.5SH, 16 Pins per row (https://www.hirose.com/product/en/products/FH12/FH12-24S-0.5SH(55)/), generated with kicad-footprint-generator +connector Hirose FH12 horizontal +0 +18 +17 +Connector_FFC-FPC +Hirose_FH12-17S-0.5SH_1x17-1MP_P0.50mm_Horizontal +Hirose FH12, FFC/FPC connector, FH12-17S-0.5SH, 17 Pins per row (https://www.hirose.com/product/en/products/FH12/FH12-24S-0.5SH(55)/), generated with kicad-footprint-generator +connector Hirose FH12 horizontal +0 +19 +18 +Connector_FFC-FPC +Hirose_FH12-18S-0.5SH_1x18-1MP_P0.50mm_Horizontal +Hirose FH12, FFC/FPC connector, FH12-18S-0.5SH, 18 Pins per row (https://www.hirose.com/product/en/products/FH12/FH12-24S-0.5SH(55)/), generated with kicad-footprint-generator +connector Hirose FH12 horizontal +0 +20 +19 +Connector_FFC-FPC +Hirose_FH12-19S-0.5SH_1x19-1MP_P0.50mm_Horizontal +Hirose FH12, FFC/FPC connector, FH12-19S-0.5SH, 19 Pins per row (https://www.hirose.com/product/en/products/FH12/FH12-24S-0.5SH(55)/), generated with kicad-footprint-generator +connector Hirose FH12 horizontal +0 +21 +20 +Connector_FFC-FPC +Hirose_FH12-20S-0.5SH_1x20-1MP_P0.50mm_Horizontal +Hirose FH12, FFC/FPC connector, FH12-20S-0.5SH, 20 Pins per row (https://www.hirose.com/product/en/products/FH12/FH12-24S-0.5SH(55)/), generated with kicad-footprint-generator +connector Hirose FH12 horizontal +0 +22 +21 +Connector_FFC-FPC +Hirose_FH12-22S-0.5SH_1x22-1MP_P0.50mm_Horizontal +Hirose FH12, FFC/FPC connector, FH12-22S-0.5SH, 22 Pins per row (https://www.hirose.com/product/en/products/FH12/FH12-24S-0.5SH(55)/), generated with kicad-footprint-generator +connector Hirose FH12 horizontal +0 +24 +23 +Connector_FFC-FPC +Hirose_FH12-24S-0.5SH_1x24-1MP_P0.50mm_Horizontal +Hirose FH12, FFC/FPC connector, FH12-24S-0.5SH, 24 Pins per row (https://www.hirose.com/product/en/products/FH12/FH12-24S-0.5SH(55)/), generated with kicad-footprint-generator +connector Hirose FH12 horizontal +0 +26 +25 +Connector_FFC-FPC +Hirose_FH12-25S-0.5SH_1x25-1MP_P0.50mm_Horizontal +Hirose FH12, FFC/FPC connector, FH12-25S-0.5SH, 25 Pins per row (https://www.hirose.com/product/en/products/FH12/FH12-24S-0.5SH(55)/), generated with kicad-footprint-generator +connector Hirose FH12 horizontal +0 +27 +26 +Connector_FFC-FPC +Hirose_FH12-26S-0.5SH_1x26-1MP_P0.50mm_Horizontal +Hirose FH12, FFC/FPC connector, FH12-26S-0.5SH, 26 Pins per row (https://www.hirose.com/product/en/products/FH12/FH12-24S-0.5SH(55)/), generated with kicad-footprint-generator +connector Hirose FH12 horizontal +0 +28 +27 +Connector_FFC-FPC +Hirose_FH12-28S-0.5SH_1x28-1MP_P0.50mm_Horizontal +Hirose FH12, FFC/FPC connector, FH12-28S-0.5SH, 28 Pins per row (https://www.hirose.com/product/en/products/FH12/FH12-24S-0.5SH(55)/), generated with kicad-footprint-generator +connector Hirose FH12 horizontal +0 +30 +29 +Connector_FFC-FPC +Hirose_FH12-30S-0.5SH_1x30-1MP_P0.50mm_Horizontal +Hirose FH12, FFC/FPC connector, FH12-30S-0.5SH, 30 Pins per row (https://www.hirose.com/product/en/products/FH12/FH12-24S-0.5SH(55)/), generated with kicad-footprint-generator +connector Hirose FH12 horizontal +0 +32 +31 +Connector_FFC-FPC +Hirose_FH12-32S-0.5SH_1x32-1MP_P0.50mm_Horizontal +Hirose FH12, FFC/FPC connector, FH12-32S-0.5SH, 32 Pins per row (https://www.hirose.com/product/en/products/FH12/FH12-24S-0.5SH(55)/), generated with kicad-footprint-generator +connector Hirose FH12 horizontal +0 +34 +33 +Connector_FFC-FPC +Hirose_FH12-33S-0.5SH_1x33-1MP_P0.50mm_Horizontal +Hirose FH12, FFC/FPC connector, FH12-33S-0.5SH, 33 Pins per row (https://www.hirose.com/product/en/products/FH12/FH12-24S-0.5SH(55)/), generated with kicad-footprint-generator +connector Hirose FH12 horizontal +0 +35 +34 +Connector_FFC-FPC +Hirose_FH12-34S-0.5SH_1x34-1MP_P0.50mm_Horizontal +Hirose FH12, FFC/FPC connector, FH12-34S-0.5SH, 34 Pins per row (https://www.hirose.com/product/en/products/FH12/FH12-24S-0.5SH(55)/), generated with kicad-footprint-generator +connector Hirose FH12 horizontal +0 +36 +35 +Connector_FFC-FPC +Hirose_FH12-35S-0.5SH_1x35-1MP_P0.50mm_Horizontal +Hirose FH12, FFC/FPC connector, FH12-35S-0.5SH, 35 Pins per row (https://www.hirose.com/product/en/products/FH12/FH12-24S-0.5SH(55)/), generated with kicad-footprint-generator +connector Hirose FH12 horizontal +0 +37 +36 +Connector_FFC-FPC +Hirose_FH12-36S-0.5SH_1x36-1MP_P0.50mm_Horizontal +Hirose FH12, FFC/FPC connector, FH12-36S-0.5SH, 36 Pins per row (https://www.hirose.com/product/en/products/FH12/FH12-24S-0.5SH(55)/), generated with kicad-footprint-generator +connector Hirose FH12 horizontal +0 +38 +37 +Connector_FFC-FPC +Hirose_FH12-40S-0.5SH_1x40-1MP_P0.50mm_Horizontal +Hirose FH12, FFC/FPC connector, FH12-40S-0.5SH, 40 Pins per row (https://www.hirose.com/product/en/products/FH12/FH12-24S-0.5SH(55)/), generated with kicad-footprint-generator +connector Hirose FH12 horizontal +0 +42 +41 +Connector_FFC-FPC +Hirose_FH12-45S-0.5SH_1x45-1MP_P0.50mm_Horizontal +Hirose FH12, FFC/FPC connector, FH12-45S-0.5SH, 45 Pins per row (https://www.hirose.com/product/en/products/FH12/FH12-24S-0.5SH(55)/), generated with kicad-footprint-generator +connector Hirose FH12 horizontal +0 +47 +46 +Connector_FFC-FPC +Hirose_FH12-50S-0.5SH_1x50-1MP_P0.50mm_Horizontal +Hirose FH12, FFC/FPC connector, FH12-50S-0.5SH, 50 Pins per row (https://www.hirose.com/product/en/products/FH12/FH12-24S-0.5SH(55)/), generated with kicad-footprint-generator +connector Hirose FH12 horizontal +0 +52 +51 +Connector_FFC-FPC +Hirose_FH12-53S-0.5SH_1x53-1MP_P0.50mm_Horizontal +Hirose FH12, FFC/FPC connector, FH12-53S-0.5SH, 53 Pins per row (https://www.hirose.com/product/en/products/FH12/FH12-24S-0.5SH(55)/), generated with kicad-footprint-generator +connector Hirose FH12 horizontal +0 +55 +54 +Connector_FFC-FPC +JAE_FF0825SA1_2Rows-25Pins_P0.40mm_Horizontal +Molex JAE 0.2mm pitch, 1mm overall height FFC/FPC connector, FF0825SA1, 25 Circuits (http://www.jae.com/z-en/pdf_download_exec.cfm?param=SJ108178.pdf), generated with kicad-footprint-generator +connector JAE top entry +0 +25 +25 +Connector_FFC-FPC +JAE_FF0829SA1_2Rows-29Pins_P0.40mm_Horizontal +Molex JAE 0.2mm pitch, 1mm overall height FFC/FPC connector, FF0829SA1, 29 Circuits (http://www.jae.com/z-en/pdf_download_exec.cfm?param=SJ108178.pdf), generated with kicad-footprint-generator +connector JAE top entry +0 +29 +29 +Connector_FFC-FPC +JAE_FF0841SA1_2Rows-41Pins_P0.40mm_Horizontal +Molex JAE 0.2mm pitch, 1mm overall height FFC/FPC connector, FF0841SA1, 41 Circuits (http://www.jae.com/z-en/pdf_download_exec.cfm?param=SJ108178.pdf), generated with kicad-footprint-generator +connector JAE top entry +0 +41 +41 +Connector_FFC-FPC +JAE_FF0851SA1_2Rows-51Pins_P0.40mm_Horizontal +Molex JAE 0.2mm pitch, 1mm overall height FFC/FPC connector, FF0851SA1, 51 Circuits (http://www.jae.com/z-en/pdf_download_exec.cfm?param=SJ108178.pdf), generated with kicad-footprint-generator +connector JAE top entry +0 +51 +51 +Connector_FFC-FPC +JAE_FF0871SA1_2Rows-71Pins_P0.40mm_Horizontal +Molex JAE 0.2mm pitch, 1mm overall height FFC/FPC connector, FF0871SA1, 71 Circuits (http://www.jae.com/z-en/pdf_download_exec.cfm?param=SJ108178.pdf), generated with kicad-footprint-generator +connector JAE top entry +0 +71 +71 +Connector_FFC-FPC +JAE_FF0881SA1_2Rows-81Pins_P0.40mm_Horizontal +Molex JAE 0.2mm pitch, 1mm overall height FFC/FPC connector, FF0881SA1, 81 Circuits (http://www.jae.com/z-en/pdf_download_exec.cfm?param=SJ108178.pdf), generated with kicad-footprint-generator +connector JAE top entry +0 +81 +81 +Connector_FFC-FPC +Molex_54132-5033_1x50-1MP_P0.5mm_Horizontal +Molex FFC/FPC connector, 50 bottom-side contacts, 0.5mm pitch, 2.0mm height, https://www.molex.com/pdm_docs/sd/541325033_sd.pdf +FFC FPC +0 +54 +51 +Connector_FFC-FPC +Molex_200528-0040_1x04-1MP_P1.00mm_Horizontal +Molex Molex 1.00mm Pitch Easy-On BackFlip, Right-Angle, Bottom Contact FFC/FPC, 200528-0040, 4 Circuits (https://www.molex.com/pdm_docs/sd/2005280040_sd.pdf), generated with kicad-footprint-generator +connector Molex top entry +0 +6 +5 +Connector_FFC-FPC +Molex_200528-0050_1x05-1MP_P1.00mm_Horizontal +Molex Molex 1.00mm Pitch Easy-On BackFlip, Right-Angle, Bottom Contact FFC/FPC, 200528-0050, 5 Circuits (https://www.molex.com/pdm_docs/sd/2005280050_sd.pdf), generated with kicad-footprint-generator +connector Molex top entry +0 +7 +6 +Connector_FFC-FPC +Molex_200528-0060_1x06-1MP_P1.00mm_Horizontal +Molex Molex 1.00mm Pitch Easy-On BackFlip, Right-Angle, Bottom Contact FFC/FPC, 200528-0060, 6 Circuits (https://www.molex.com/pdm_docs/sd/2005280060_sd.pdf), generated with kicad-footprint-generator +connector Molex top entry +0 +8 +7 +Connector_FFC-FPC +Molex_200528-0070_1x07-1MP_P1.00mm_Horizontal +Molex Molex 1.00mm Pitch Easy-On BackFlip, Right-Angle, Bottom Contact FFC/FPC, 200528-0070, 7 Circuits (https://www.molex.com/pdm_docs/sd/2005280070_sd.pdf), generated with kicad-footprint-generator +connector Molex top entry +0 +9 +8 +Connector_FFC-FPC +Molex_200528-0080_1x08-1MP_P1.00mm_Horizontal +Molex Molex 1.00mm Pitch Easy-On BackFlip, Right-Angle, Bottom Contact FFC/FPC, 200528-0080, 8 Circuits (https://www.molex.com/pdm_docs/sd/2005280080_sd.pdf), generated with kicad-footprint-generator +connector Molex top entry +0 +10 +9 +Connector_FFC-FPC +Molex_200528-0090_1x09-1MP_P1.00mm_Horizontal +Molex Molex 1.00mm Pitch Easy-On BackFlip, Right-Angle, Bottom Contact FFC/FPC, 200528-0090, 9 Circuits (https://www.molex.com/pdm_docs/sd/2005280090_sd.pdf), generated with kicad-footprint-generator +connector Molex top entry +0 +11 +10 +Connector_FFC-FPC +Molex_200528-0100_1x10-1MP_P1.00mm_Horizontal +Molex Molex 1.00mm Pitch Easy-On BackFlip, Right-Angle, Bottom Contact FFC/FPC, 200528-0100, 10 Circuits (https://www.molex.com/pdm_docs/sd/2005280100_sd.pdf), generated with kicad-footprint-generator +connector Molex top entry +0 +12 +11 +Connector_FFC-FPC +Molex_200528-0110_1x11-1MP_P1.00mm_Horizontal +Molex Molex 1.00mm Pitch Easy-On BackFlip, Right-Angle, Bottom Contact FFC/FPC, 200528-0110, 11 Circuits (https://www.molex.com/pdm_docs/sd/2005280110_sd.pdf), generated with kicad-footprint-generator +connector Molex top entry +0 +13 +12 +Connector_FFC-FPC +Molex_200528-0120_1x12-1MP_P1.00mm_Horizontal +Molex Molex 1.00mm Pitch Easy-On BackFlip, Right-Angle, Bottom Contact FFC/FPC, 200528-0120, 12 Circuits (https://www.molex.com/pdm_docs/sd/2005280120_sd.pdf), generated with kicad-footprint-generator +connector Molex top entry +0 +14 +13 +Connector_FFC-FPC +Molex_200528-0130_1x13-1MP_P1.00mm_Horizontal +Molex Molex 1.00mm Pitch Easy-On BackFlip, Right-Angle, Bottom Contact FFC/FPC, 200528-0130, 13 Circuits (https://www.molex.com/pdm_docs/sd/2005280130_sd.pdf), generated with kicad-footprint-generator +connector Molex top entry +0 +15 +14 +Connector_FFC-FPC +Molex_200528-0140_1x14-1MP_P1.00mm_Horizontal +Molex Molex 1.00mm Pitch Easy-On BackFlip, Right-Angle, Bottom Contact FFC/FPC, 200528-0140, 14 Circuits (https://www.molex.com/pdm_docs/sd/2005280140_sd.pdf), generated with kicad-footprint-generator +connector Molex top entry +0 +16 +15 +Connector_FFC-FPC +Molex_200528-0150_1x15-1MP_P1.00mm_Horizontal +Molex Molex 1.00mm Pitch Easy-On BackFlip, Right-Angle, Bottom Contact FFC/FPC, 200528-0150, 15 Circuits (https://www.molex.com/pdm_docs/sd/2005280150_sd.pdf), generated with kicad-footprint-generator +connector Molex top entry +0 +17 +16 +Connector_FFC-FPC +Molex_200528-0160_1x16-1MP_P1.00mm_Horizontal +Molex Molex 1.00mm Pitch Easy-On BackFlip, Right-Angle, Bottom Contact FFC/FPC, 200528-0160, 16 Circuits (https://www.molex.com/pdm_docs/sd/2005280160_sd.pdf), generated with kicad-footprint-generator +connector Molex top entry +0 +18 +17 +Connector_FFC-FPC +Molex_200528-0170_1x17-1MP_P1.00mm_Horizontal +Molex Molex 1.00mm Pitch Easy-On BackFlip, Right-Angle, Bottom Contact FFC/FPC, 200528-0170, 17 Circuits (https://www.molex.com/pdm_docs/sd/2005280170_sd.pdf), generated with kicad-footprint-generator +connector Molex top entry +0 +19 +18 +Connector_FFC-FPC +Molex_200528-0180_1x18-1MP_P1.00mm_Horizontal +Molex Molex 1.00mm Pitch Easy-On BackFlip, Right-Angle, Bottom Contact FFC/FPC, 200528-0180, 18 Circuits (https://www.molex.com/pdm_docs/sd/2005280180_sd.pdf), generated with kicad-footprint-generator +connector Molex top entry +0 +20 +19 +Connector_FFC-FPC +Molex_200528-0190_1x19-1MP_P1.00mm_Horizontal +Molex Molex 1.00mm Pitch Easy-On BackFlip, Right-Angle, Bottom Contact FFC/FPC, 200528-0190, 19 Circuits (https://www.molex.com/pdm_docs/sd/2005280190_sd.pdf), generated with kicad-footprint-generator +connector Molex top entry +0 +21 +20 +Connector_FFC-FPC +Molex_200528-0200_1x20-1MP_P1.00mm_Horizontal +Molex Molex 1.00mm Pitch Easy-On BackFlip, Right-Angle, Bottom Contact FFC/FPC, 200528-0200, 20 Circuits (https://www.molex.com/pdm_docs/sd/2005280200_sd.pdf), generated with kicad-footprint-generator +connector Molex top entry +0 +22 +21 +Connector_FFC-FPC +Molex_200528-0210_1x21-1MP_P1.00mm_Horizontal +Molex Molex 1.00mm Pitch Easy-On BackFlip, Right-Angle, Bottom Contact FFC/FPC, 200528-0210, 21 Circuits (https://www.molex.com/pdm_docs/sd/2005280210_sd.pdf), generated with kicad-footprint-generator +connector Molex top entry +0 +23 +22 +Connector_FFC-FPC +Molex_200528-0220_1x22-1MP_P1.00mm_Horizontal +Molex Molex 1.00mm Pitch Easy-On BackFlip, Right-Angle, Bottom Contact FFC/FPC, 200528-0220, 22 Circuits (https://www.molex.com/pdm_docs/sd/2005280220_sd.pdf), generated with kicad-footprint-generator +connector Molex top entry +0 +24 +23 +Connector_FFC-FPC +Molex_200528-0230_1x23-1MP_P1.00mm_Horizontal +Molex Molex 1.00mm Pitch Easy-On BackFlip, Right-Angle, Bottom Contact FFC/FPC, 200528-0230, 23 Circuits (https://www.molex.com/pdm_docs/sd/2005280230_sd.pdf), generated with kicad-footprint-generator +connector Molex top entry +0 +25 +24 +Connector_FFC-FPC +Molex_200528-0240_1x24-1MP_P1.00mm_Horizontal +Molex Molex 1.00mm Pitch Easy-On BackFlip, Right-Angle, Bottom Contact FFC/FPC, 200528-0240, 24 Circuits (https://www.molex.com/pdm_docs/sd/2005280240_sd.pdf), generated with kicad-footprint-generator +connector Molex top entry +0 +26 +25 +Connector_FFC-FPC +Molex_200528-0250_1x25-1MP_P1.00mm_Horizontal +Molex Molex 1.00mm Pitch Easy-On BackFlip, Right-Angle, Bottom Contact FFC/FPC, 200528-0250, 25 Circuits (https://www.molex.com/pdm_docs/sd/2005280250_sd.pdf), generated with kicad-footprint-generator +connector Molex top entry +0 +27 +26 +Connector_FFC-FPC +Molex_200528-0260_1x26-1MP_P1.00mm_Horizontal +Molex Molex 1.00mm Pitch Easy-On BackFlip, Right-Angle, Bottom Contact FFC/FPC, 200528-0260, 26 Circuits (https://www.molex.com/pdm_docs/sd/2005280260_sd.pdf), generated with kicad-footprint-generator +connector Molex top entry +0 +28 +27 +Connector_FFC-FPC +Molex_200528-0270_1x27-1MP_P1.00mm_Horizontal +Molex Molex 1.00mm Pitch Easy-On BackFlip, Right-Angle, Bottom Contact FFC/FPC, 200528-0270, 27 Circuits (https://www.molex.com/pdm_docs/sd/2005280270_sd.pdf), generated with kicad-footprint-generator +connector Molex top entry +0 +29 +28 +Connector_FFC-FPC +Molex_200528-0280_1x28-1MP_P1.00mm_Horizontal +Molex Molex 1.00mm Pitch Easy-On BackFlip, Right-Angle, Bottom Contact FFC/FPC, 200528-0280, 28 Circuits (https://www.molex.com/pdm_docs/sd/2005280280_sd.pdf), generated with kicad-footprint-generator +connector Molex top entry +0 +30 +29 +Connector_FFC-FPC +Molex_200528-0290_1x29-1MP_P1.00mm_Horizontal +Molex Molex 1.00mm Pitch Easy-On BackFlip, Right-Angle, Bottom Contact FFC/FPC, 200528-0290, 29 Circuits (https://www.molex.com/pdm_docs/sd/2005280290_sd.pdf), generated with kicad-footprint-generator +connector Molex top entry +0 +31 +30 +Connector_FFC-FPC +Molex_200528-0300_1x30-1MP_P1.00mm_Horizontal +Molex Molex 1.00mm Pitch Easy-On BackFlip, Right-Angle, Bottom Contact FFC/FPC, 200528-0300, 30 Circuits (https://www.molex.com/pdm_docs/sd/2005280300_sd.pdf), generated with kicad-footprint-generator +connector Molex top entry +0 +32 +31 +Connector_FFC-FPC +Molex_502231-1500_1x15-1SH_P0.5mm_Vertical +Molex 0.50mm Pitch Easy-On Type FFC/FPC Connector, For LVDS, 6.05mm Height, Vertical, Surface Mount, ZIF, 15 Circuits (https://www.molex.com/pdm_docs/sd/5022311500_sd.pdf) +molex FFC/FPC connector Pitch 0.5mm vertical +0 +17 +16 +Connector_FFC-FPC +Molex_502231-2400_1x24-1SH_P0.5mm_Vertical +Molex 0.50mm Pitch Easy-On Type FFC/FPC Connector, For LVDS, 6.05mm Height, Vertical, Surface Mount, ZIF, 24 Circuits (https://www.molex.com/pdm_docs/sd/5022312400_sd.pdf) +molex FFC/FPC connector Pitch 0.5mm vertical +0 +26 +25 +Connector_FFC-FPC +Molex_502231-3300_1x33-1SH_P0.5mm_Vertical +Molex 0.50mm Pitch Easy-On Type FFC/FPC Connector, For LVDS, 6.05mm Height, Vertical, Surface Mount, ZIF, 33 Circuits (https://www.molex.com/pdm_docs/sd/5022313300_sd.pdf) +molex FFC/FPC connector Pitch 0.5mm vertical +0 +36 +34 +Connector_FFC-FPC +Molex_502244-1530_1x15-1MP_P0.5mm_Horizontal +Molex 0.50mm Pitch Easy-On Type FFC/FPC Connector, For LVDS, 2.33mm Height, Right Angle, Surface Mount, ZIF, Bottom Contact Style, 15 Circuits (http://www.molex.com/pdm_docs/sd/5022441530_sd.pdf) +molex FFC/FPC connector Pitch 0.5mm right angle +0 +19 +16 +Connector_FFC-FPC +Molex_502244-2430_1x24-1MP_P0.5mm_Horizontal +Molex 0.50mm Pitch Easy-On Type FFC/FPC Connector, For LVDS, 2.33mm Height, Right Angle, Surface Mount, ZIF, Bottom Contact Style, 24 Circuits (http://www.molex.com/pdm_docs/sd/5022441530_sd.pdf) +molex FFC/FPC connector Pitch 0.5mm right angle +0 +28 +25 +Connector_FFC-FPC +Molex_502244-3330_1x33-1MP_P0.5mm_Horizontal +Molex 0.50mm Pitch Easy-On Type FFC/FPC Connector, For LVDS, 2.33mm Height, Right Angle, Surface Mount, ZIF, Bottom Contact Style, 33 Circuits (http://www.molex.com/pdm_docs/sd/5022441530_sd.pdf) +molex FFC/FPC connector Pitch 0.5mm right angle +0 +39 +34 +Connector_FFC-FPC +Molex_502250-1791_2Rows-17Pins-1MP_P0.60mm_Horizontal +Molex Molex 0.30mm Pitch Easy-On BackFlip Type FFC/FPC, 502250-1791, 17 Circuits (http://www.molex.com/pdm_docs/sd/5022501791_sd.pdf), generated with kicad-footprint-generator +connector Molex top entry +0 +19 +18 +Connector_FFC-FPC +Molex_502250-2191_2Rows-21Pins-1MP_P0.60mm_Horizontal +Molex Molex 0.30mm Pitch Easy-On BackFlip Type FFC/FPC, 502250-2191, 21 Circuits (http://www.molex.com/pdm_docs/sd/5022502191_sd.pdf), generated with kicad-footprint-generator +connector Molex top entry +0 +23 +22 +Connector_FFC-FPC +Molex_502250-2391_2Rows-23Pins-1MP_P0.60mm_Horizontal +Molex Molex 0.30mm Pitch Easy-On BackFlip Type FFC/FPC, 502250-2391, 23 Circuits (http://www.molex.com/pdm_docs/sd/5022502391_sd.pdf), generated with kicad-footprint-generator +connector Molex top entry +0 +25 +24 +Connector_FFC-FPC +Molex_502250-2791_2Rows-27Pins-1MP_P0.60mm_Horizontal +Molex Molex 0.30mm Pitch Easy-On BackFlip Type FFC/FPC, 502250-2791, 27 Circuits (http://www.molex.com/pdm_docs/sd/5022502791_sd.pdf), generated with kicad-footprint-generator +connector Molex top entry +0 +29 +28 +Connector_FFC-FPC +Molex_502250-3391_2Rows-33Pins-1MP_P0.60mm_Horizontal +Molex Molex 0.30mm Pitch Easy-On BackFlip Type FFC/FPC, 502250-3391, 33 Circuits (http://www.molex.com/pdm_docs/sd/5022503391_sd.pdf), generated with kicad-footprint-generator +connector Molex top entry +0 +35 +34 +Connector_FFC-FPC +Molex_502250-3591_2Rows-35Pins-1MP_P0.60mm_Horizontal +Molex Molex 0.30mm Pitch Easy-On BackFlip Type FFC/FPC, 502250-3591, 35 Circuits (http://www.molex.com/pdm_docs/sd/5022503591_sd.pdf), generated with kicad-footprint-generator +connector Molex top entry +0 +37 +36 +Connector_FFC-FPC +Molex_502250-3991_2Rows-39Pins-1MP_P0.60mm_Horizontal +Molex Molex 0.30mm Pitch Easy-On BackFlip Type FFC/FPC, 502250-3991, 39 Circuits (http://www.molex.com/pdm_docs/sd/5022503991_sd.pdf), generated with kicad-footprint-generator +connector Molex top entry +0 +41 +40 +Connector_FFC-FPC +Molex_502250-4191_2Rows-41Pins-1MP_P0.60mm_Horizontal +Molex Molex 0.30mm Pitch Easy-On BackFlip Type FFC/FPC, 502250-4191, 41 Circuits (http://www.molex.com/pdm_docs/sd/5022504191_sd.pdf), generated with kicad-footprint-generator +connector Molex top entry +0 +43 +42 +Connector_FFC-FPC +Molex_502250-5191_2Rows-51Pins-1MP_P0.60mm_Horizontal +Molex Molex 0.30mm Pitch Easy-On BackFlip Type FFC/FPC, 502250-5191, 51 Circuits (http://www.molex.com/pdm_docs/sd/5022505191_sd.pdf), generated with kicad-footprint-generator +connector Molex top entry +0 +53 +52 +Connector_FFC-FPC +TE_0-1734839-5_1x05-1MP_P0.5mm_Horizontal +TE FPC connector, 05 top-side contacts, 0.5mm pitch, SMT, https://www.te.com/commerce/DocumentDelivery/DDEController?Action=showdoc&DocId=Customer+Drawing%7F1734839%7FC%7Fpdf%7FEnglish%7FENG_CD_1734839_C_C_1734839.pdf%7F4-1734839-0 +te fpc 1734839 +0 +7 +6 +Connector_FFC-FPC +TE_0-1734839-6_1x06-1MP_P0.5mm_Horizontal +TE FPC connector, 06 top-side contacts, 0.5mm pitch, SMT, https://www.te.com/commerce/DocumentDelivery/DDEController?Action=showdoc&DocId=Customer+Drawing%7F1734839%7FC%7Fpdf%7FEnglish%7FENG_CD_1734839_C_C_1734839.pdf%7F4-1734839-0 +te fpc 1734839 +0 +8 +7 +Connector_FFC-FPC +TE_0-1734839-7_1x07-1MP_P0.5mm_Horizontal +TE FPC connector, 07 top-side contacts, 0.5mm pitch, SMT, https://www.te.com/commerce/DocumentDelivery/DDEController?Action=showdoc&DocId=Customer+Drawing%7F1734839%7FC%7Fpdf%7FEnglish%7FENG_CD_1734839_C_C_1734839.pdf%7F4-1734839-0 +te fpc 1734839 +0 +9 +8 +Connector_FFC-FPC +TE_0-1734839-8_1x08-1MP_P0.5mm_Horizontal +TE FPC connector, 08 top-side contacts, 0.5mm pitch, SMT, https://www.te.com/commerce/DocumentDelivery/DDEController?Action=showdoc&DocId=Customer+Drawing%7F1734839%7FC%7Fpdf%7FEnglish%7FENG_CD_1734839_C_C_1734839.pdf%7F4-1734839-0 +te fpc 1734839 +0 +10 +9 +Connector_FFC-FPC +TE_0-1734839-9_1x09-1MP_P0.5mm_Horizontal +TE FPC connector, 09 top-side contacts, 0.5mm pitch, SMT, https://www.te.com/commerce/DocumentDelivery/DDEController?Action=showdoc&DocId=Customer+Drawing%7F1734839%7FC%7Fpdf%7FEnglish%7FENG_CD_1734839_C_C_1734839.pdf%7F4-1734839-0 +te fpc 1734839 +0 +11 +10 +Connector_FFC-FPC +TE_1-84952-0_1x10-1MP_P1.0mm_Horizontal +TE FPC connector, 10 bottom-side contacts, 1.0mm pitch, 1.0mm height, SMT, http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=84952&DocType=Customer+Drawing&DocLang=English&DocFormat=pdf&PartCntxt=84952-4 +te fpc 84952 +0 +12 +11 +Connector_FFC-FPC +TE_1-84952-1_1x11-1MP_P1.0mm_Horizontal +TE FPC connector, 11 bottom-side contacts, 1.0mm pitch, 1.0mm height, SMT, http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=84952&DocType=Customer+Drawing&DocLang=English&DocFormat=pdf&PartCntxt=84952-4 +te fpc 84952 +0 +13 +12 +Connector_FFC-FPC +TE_1-84952-2_1x12-1MP_P1.0mm_Horizontal +TE FPC connector, 12 bottom-side contacts, 1.0mm pitch, 1.0mm height, SMT, http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=84952&DocType=Customer+Drawing&DocLang=English&DocFormat=pdf&PartCntxt=84952-4 +te fpc 84952 +0 +14 +13 +Connector_FFC-FPC +TE_1-84952-3_1x13-1MP_P1.0mm_Horizontal +TE FPC connector, 13 bottom-side contacts, 1.0mm pitch, 1.0mm height, SMT, http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=84952&DocType=Customer+Drawing&DocLang=English&DocFormat=pdf&PartCntxt=84952-4 +te fpc 84952 +0 +15 +14 +Connector_FFC-FPC +TE_1-84952-4_1x14-1MP_P1.0mm_Horizontal +TE FPC connector, 14 bottom-side contacts, 1.0mm pitch, 1.0mm height, SMT, http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=84952&DocType=Customer+Drawing&DocLang=English&DocFormat=pdf&PartCntxt=84952-4 +te fpc 84952 +0 +16 +15 +Connector_FFC-FPC +TE_1-84952-5_1x15-1MP_P1.0mm_Horizontal +TE FPC connector, 15 bottom-side contacts, 1.0mm pitch, 1.0mm height, SMT, http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=84952&DocType=Customer+Drawing&DocLang=English&DocFormat=pdf&PartCntxt=84952-4 +te fpc 84952 +0 +17 +16 +Connector_FFC-FPC +TE_1-84952-6_1x16-1MP_P1.0mm_Horizontal +TE FPC connector, 16 bottom-side contacts, 1.0mm pitch, 1.0mm height, SMT, http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=84952&DocType=Customer+Drawing&DocLang=English&DocFormat=pdf&PartCntxt=84952-4 +te fpc 84952 +0 +18 +17 +Connector_FFC-FPC +TE_1-84952-7_1x17-1MP_P1.0mm_Horizontal +TE FPC connector, 17 bottom-side contacts, 1.0mm pitch, 1.0mm height, SMT, http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=84952&DocType=Customer+Drawing&DocLang=English&DocFormat=pdf&PartCntxt=84952-4 +te fpc 84952 +0 +19 +18 +Connector_FFC-FPC +TE_1-84952-8_1x18-1MP_P1.0mm_Horizontal +TE FPC connector, 18 bottom-side contacts, 1.0mm pitch, 1.0mm height, SMT, http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=84952&DocType=Customer+Drawing&DocLang=English&DocFormat=pdf&PartCntxt=84952-4 +te fpc 84952 +0 +20 +19 +Connector_FFC-FPC +TE_1-84952-9_1x19-1MP_P1.0mm_Horizontal +TE FPC connector, 19 bottom-side contacts, 1.0mm pitch, 1.0mm height, SMT, http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=84952&DocType=Customer+Drawing&DocLang=English&DocFormat=pdf&PartCntxt=84952-4 +te fpc 84952 +0 +21 +20 +Connector_FFC-FPC +TE_1-84953-0_1x10-1MP_P1.0mm_Horizontal +TE FPC connector, 10 top-side contacts, 1.0mm pitch, 1.0mm height, SMT, http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=84953&DocType=Customer+Drawing&DocLang=English&DocFormat=pdf&PartCntxt=84953-4 +te fpc 84953 +0 +12 +11 +Connector_FFC-FPC +TE_1-84953-1_1x11-1MP_P1.0mm_Horizontal +TE FPC connector, 11 top-side contacts, 1.0mm pitch, 1.0mm height, SMT, http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=84953&DocType=Customer+Drawing&DocLang=English&DocFormat=pdf&PartCntxt=84953-4 +te fpc 84953 +0 +13 +12 +Connector_FFC-FPC +TE_1-84953-2_1x12-1MP_P1.0mm_Horizontal +TE FPC connector, 12 top-side contacts, 1.0mm pitch, 1.0mm height, SMT, http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=84953&DocType=Customer+Drawing&DocLang=English&DocFormat=pdf&PartCntxt=84953-4 +te fpc 84953 +0 +14 +13 +Connector_FFC-FPC +TE_1-84953-3_1x13-1MP_P1.0mm_Horizontal +TE FPC connector, 13 top-side contacts, 1.0mm pitch, 1.0mm height, SMT, http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=84953&DocType=Customer+Drawing&DocLang=English&DocFormat=pdf&PartCntxt=84953-4 +te fpc 84953 +0 +15 +14 +Connector_FFC-FPC +TE_1-84953-4_1x14-1MP_P1.0mm_Horizontal +TE FPC connector, 14 top-side contacts, 1.0mm pitch, 1.0mm height, SMT, http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=84953&DocType=Customer+Drawing&DocLang=English&DocFormat=pdf&PartCntxt=84953-4 +te fpc 84953 +0 +16 +15 +Connector_FFC-FPC +TE_1-84953-5_1x15-1MP_P1.0mm_Horizontal +TE FPC connector, 15 top-side contacts, 1.0mm pitch, 1.0mm height, SMT, http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=84953&DocType=Customer+Drawing&DocLang=English&DocFormat=pdf&PartCntxt=84953-4 +te fpc 84953 +0 +17 +16 +Connector_FFC-FPC +TE_1-84953-6_1x16-1MP_P1.0mm_Horizontal +TE FPC connector, 16 top-side contacts, 1.0mm pitch, 1.0mm height, SMT, http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=84953&DocType=Customer+Drawing&DocLang=English&DocFormat=pdf&PartCntxt=84953-4 +te fpc 84953 +0 +18 +17 +Connector_FFC-FPC +TE_1-84953-7_1x17-1MP_P1.0mm_Horizontal +TE FPC connector, 17 top-side contacts, 1.0mm pitch, 1.0mm height, SMT, http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=84953&DocType=Customer+Drawing&DocLang=English&DocFormat=pdf&PartCntxt=84953-4 +te fpc 84953 +0 +19 +18 +Connector_FFC-FPC +TE_1-84953-8_1x18-1MP_P1.0mm_Horizontal +TE FPC connector, 18 top-side contacts, 1.0mm pitch, 1.0mm height, SMT, http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=84953&DocType=Customer+Drawing&DocLang=English&DocFormat=pdf&PartCntxt=84953-4 +te fpc 84953 +0 +20 +19 +Connector_FFC-FPC +TE_1-84953-9_1x19-1MP_P1.0mm_Horizontal +TE FPC connector, 19 top-side contacts, 1.0mm pitch, 1.0mm height, SMT, http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=84953&DocType=Customer+Drawing&DocLang=English&DocFormat=pdf&PartCntxt=84953-4 +te fpc 84953 +0 +21 +20 +Connector_FFC-FPC +TE_1-1734839-0_1x10-1MP_P0.5mm_Horizontal +TE FPC connector, 10 top-side contacts, 0.5mm pitch, SMT, https://www.te.com/commerce/DocumentDelivery/DDEController?Action=showdoc&DocId=Customer+Drawing%7F1734839%7FC%7Fpdf%7FEnglish%7FENG_CD_1734839_C_C_1734839.pdf%7F4-1734839-0 +te fpc 1734839 +0 +12 +11 +Connector_FFC-FPC +TE_1-1734839-1_1x11-1MP_P0.5mm_Horizontal +TE FPC connector, 11 top-side contacts, 0.5mm pitch, SMT, https://www.te.com/commerce/DocumentDelivery/DDEController?Action=showdoc&DocId=Customer+Drawing%7F1734839%7FC%7Fpdf%7FEnglish%7FENG_CD_1734839_C_C_1734839.pdf%7F4-1734839-0 +te fpc 1734839 +0 +13 +12 +Connector_FFC-FPC +TE_1-1734839-2_1x12-1MP_P0.5mm_Horizontal +TE FPC connector, 12 top-side contacts, 0.5mm pitch, SMT, https://www.te.com/commerce/DocumentDelivery/DDEController?Action=showdoc&DocId=Customer+Drawing%7F1734839%7FC%7Fpdf%7FEnglish%7FENG_CD_1734839_C_C_1734839.pdf%7F4-1734839-0 +te fpc 1734839 +0 +14 +13 +Connector_FFC-FPC +TE_1-1734839-3_1x13-1MP_P0.5mm_Horizontal +TE FPC connector, 13 top-side contacts, 0.5mm pitch, SMT, https://www.te.com/commerce/DocumentDelivery/DDEController?Action=showdoc&DocId=Customer+Drawing%7F1734839%7FC%7Fpdf%7FEnglish%7FENG_CD_1734839_C_C_1734839.pdf%7F4-1734839-0 +te fpc 1734839 +0 +15 +14 +Connector_FFC-FPC +TE_1-1734839-4_1x14-1MP_P0.5mm_Horizontal +TE FPC connector, 14 top-side contacts, 0.5mm pitch, SMT, https://www.te.com/commerce/DocumentDelivery/DDEController?Action=showdoc&DocId=Customer+Drawing%7F1734839%7FC%7Fpdf%7FEnglish%7FENG_CD_1734839_C_C_1734839.pdf%7F4-1734839-0 +te fpc 1734839 +0 +16 +15 +Connector_FFC-FPC +TE_1-1734839-5_1x15-1MP_P0.5mm_Horizontal +TE FPC connector, 15 top-side contacts, 0.5mm pitch, SMT, https://www.te.com/commerce/DocumentDelivery/DDEController?Action=showdoc&DocId=Customer+Drawing%7F1734839%7FC%7Fpdf%7FEnglish%7FENG_CD_1734839_C_C_1734839.pdf%7F4-1734839-0 +te fpc 1734839 +0 +17 +16 +Connector_FFC-FPC +TE_1-1734839-6_1x16-1MP_P0.5mm_Horizontal +TE FPC connector, 16 top-side contacts, 0.5mm pitch, SMT, https://www.te.com/commerce/DocumentDelivery/DDEController?Action=showdoc&DocId=Customer+Drawing%7F1734839%7FC%7Fpdf%7FEnglish%7FENG_CD_1734839_C_C_1734839.pdf%7F4-1734839-0 +te fpc 1734839 +0 +18 +17 +Connector_FFC-FPC +TE_1-1734839-7_1x17-1MP_P0.5mm_Horizontal +TE FPC connector, 17 top-side contacts, 0.5mm pitch, SMT, https://www.te.com/commerce/DocumentDelivery/DDEController?Action=showdoc&DocId=Customer+Drawing%7F1734839%7FC%7Fpdf%7FEnglish%7FENG_CD_1734839_C_C_1734839.pdf%7F4-1734839-0 +te fpc 1734839 +0 +19 +18 +Connector_FFC-FPC +TE_1-1734839-8_1x18-1MP_P0.5mm_Horizontal +TE FPC connector, 18 top-side contacts, 0.5mm pitch, SMT, https://www.te.com/commerce/DocumentDelivery/DDEController?Action=showdoc&DocId=Customer+Drawing%7F1734839%7FC%7Fpdf%7FEnglish%7FENG_CD_1734839_C_C_1734839.pdf%7F4-1734839-0 +te fpc 1734839 +0 +20 +19 +Connector_FFC-FPC +TE_1-1734839-9_1x19-1MP_P0.5mm_Horizontal +TE FPC connector, 19 top-side contacts, 0.5mm pitch, SMT, https://www.te.com/commerce/DocumentDelivery/DDEController?Action=showdoc&DocId=Customer+Drawing%7F1734839%7FC%7Fpdf%7FEnglish%7FENG_CD_1734839_C_C_1734839.pdf%7F4-1734839-0 +te fpc 1734839 +0 +21 +20 +Connector_FFC-FPC +TE_2-84952-0_1x20-1MP_P1.0mm_Horizontal +TE FPC connector, 20 bottom-side contacts, 1.0mm pitch, 1.0mm height, SMT, http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=84952&DocType=Customer+Drawing&DocLang=English&DocFormat=pdf&PartCntxt=84952-4 +te fpc 84952 +0 +22 +21 +Connector_FFC-FPC +TE_2-84952-1_1x21-1MP_P1.0mm_Horizontal +TE FPC connector, 21 bottom-side contacts, 1.0mm pitch, 1.0mm height, SMT, http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=84952&DocType=Customer+Drawing&DocLang=English&DocFormat=pdf&PartCntxt=84952-4 +te fpc 84952 +0 +23 +22 +Connector_FFC-FPC +TE_2-84952-2_1x22-1MP_P1.0mm_Horizontal +TE FPC connector, 22 bottom-side contacts, 1.0mm pitch, 1.0mm height, SMT, http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=84952&DocType=Customer+Drawing&DocLang=English&DocFormat=pdf&PartCntxt=84952-4 +te fpc 84952 +0 +24 +23 +Connector_FFC-FPC +TE_2-84952-3_1x23-1MP_P1.0mm_Horizontal +TE FPC connector, 23 bottom-side contacts, 1.0mm pitch, 1.0mm height, SMT, http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=84952&DocType=Customer+Drawing&DocLang=English&DocFormat=pdf&PartCntxt=84952-4 +te fpc 84952 +0 +25 +24 +Connector_FFC-FPC +TE_2-84952-4_1x24-1MP_P1.0mm_Horizontal +TE FPC connector, 24 bottom-side contacts, 1.0mm pitch, 1.0mm height, SMT, http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=84952&DocType=Customer+Drawing&DocLang=English&DocFormat=pdf&PartCntxt=84952-4 +te fpc 84952 +0 +26 +25 +Connector_FFC-FPC +TE_2-84952-5_1x25-1MP_P1.0mm_Horizontal +TE FPC connector, 25 bottom-side contacts, 1.0mm pitch, 1.0mm height, SMT, http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=84952&DocType=Customer+Drawing&DocLang=English&DocFormat=pdf&PartCntxt=84952-4 +te fpc 84952 +0 +27 +26 +Connector_FFC-FPC +TE_2-84952-6_1x26-1MP_P1.0mm_Horizontal +TE FPC connector, 26 bottom-side contacts, 1.0mm pitch, 1.0mm height, SMT, http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=84952&DocType=Customer+Drawing&DocLang=English&DocFormat=pdf&PartCntxt=84952-4 +te fpc 84952 +0 +28 +27 +Connector_FFC-FPC +TE_2-84952-7_1x27-1MP_P1.0mm_Horizontal +TE FPC connector, 27 bottom-side contacts, 1.0mm pitch, 1.0mm height, SMT, http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=84952&DocType=Customer+Drawing&DocLang=English&DocFormat=pdf&PartCntxt=84952-4 +te fpc 84952 +0 +29 +28 +Connector_FFC-FPC +TE_2-84952-8_1x28-1MP_P1.0mm_Horizontal +TE FPC connector, 28 bottom-side contacts, 1.0mm pitch, 1.0mm height, SMT, http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=84952&DocType=Customer+Drawing&DocLang=English&DocFormat=pdf&PartCntxt=84952-4 +te fpc 84952 +0 +30 +29 +Connector_FFC-FPC +TE_2-84952-9_1x29-1MP_P1.0mm_Horizontal +TE FPC connector, 29 bottom-side contacts, 1.0mm pitch, 1.0mm height, SMT, http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=84952&DocType=Customer+Drawing&DocLang=English&DocFormat=pdf&PartCntxt=84952-4 +te fpc 84952 +0 +31 +30 +Connector_FFC-FPC +TE_2-84953-0_1x20-1MP_P1.0mm_Horizontal +TE FPC connector, 20 top-side contacts, 1.0mm pitch, 1.0mm height, SMT, http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=84953&DocType=Customer+Drawing&DocLang=English&DocFormat=pdf&PartCntxt=84953-4 +te fpc 84953 +0 +22 +21 +Connector_FFC-FPC +TE_2-84953-1_1x21-1MP_P1.0mm_Horizontal +TE FPC connector, 21 top-side contacts, 1.0mm pitch, 1.0mm height, SMT, http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=84953&DocType=Customer+Drawing&DocLang=English&DocFormat=pdf&PartCntxt=84953-4 +te fpc 84953 +0 +23 +22 +Connector_FFC-FPC +TE_2-84953-2_1x22-1MP_P1.0mm_Horizontal +TE FPC connector, 22 top-side contacts, 1.0mm pitch, 1.0mm height, SMT, http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=84953&DocType=Customer+Drawing&DocLang=English&DocFormat=pdf&PartCntxt=84953-4 +te fpc 84953 +0 +24 +23 +Connector_FFC-FPC +TE_2-84953-3_1x23-1MP_P1.0mm_Horizontal +TE FPC connector, 23 top-side contacts, 1.0mm pitch, 1.0mm height, SMT, http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=84953&DocType=Customer+Drawing&DocLang=English&DocFormat=pdf&PartCntxt=84953-4 +te fpc 84953 +0 +25 +24 +Connector_FFC-FPC +TE_2-84953-4_1x24-1MP_P1.0mm_Horizontal +TE FPC connector, 24 top-side contacts, 1.0mm pitch, 1.0mm height, SMT, http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=84953&DocType=Customer+Drawing&DocLang=English&DocFormat=pdf&PartCntxt=84953-4 +te fpc 84953 +0 +26 +25 +Connector_FFC-FPC +TE_2-84953-5_1x25-1MP_P1.0mm_Horizontal +TE FPC connector, 25 top-side contacts, 1.0mm pitch, 1.0mm height, SMT, http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=84953&DocType=Customer+Drawing&DocLang=English&DocFormat=pdf&PartCntxt=84953-4 +te fpc 84953 +0 +27 +26 +Connector_FFC-FPC +TE_2-84953-6_1x26-1MP_P1.0mm_Horizontal +TE FPC connector, 26 top-side contacts, 1.0mm pitch, 1.0mm height, SMT, http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=84953&DocType=Customer+Drawing&DocLang=English&DocFormat=pdf&PartCntxt=84953-4 +te fpc 84953 +0 +28 +27 +Connector_FFC-FPC +TE_2-84953-7_1x27-1MP_P1.0mm_Horizontal +TE FPC connector, 27 top-side contacts, 1.0mm pitch, 1.0mm height, SMT, http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=84953&DocType=Customer+Drawing&DocLang=English&DocFormat=pdf&PartCntxt=84953-4 +te fpc 84953 +0 +29 +28 +Connector_FFC-FPC +TE_2-84953-8_1x28-1MP_P1.0mm_Horizontal +TE FPC connector, 28 top-side contacts, 1.0mm pitch, 1.0mm height, SMT, http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=84953&DocType=Customer+Drawing&DocLang=English&DocFormat=pdf&PartCntxt=84953-4 +te fpc 84953 +0 +30 +29 +Connector_FFC-FPC +TE_2-84953-9_1x29-1MP_P1.0mm_Horizontal +TE FPC connector, 29 top-side contacts, 1.0mm pitch, 1.0mm height, SMT, http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=84953&DocType=Customer+Drawing&DocLang=English&DocFormat=pdf&PartCntxt=84953-4 +te fpc 84953 +0 +31 +30 +Connector_FFC-FPC +TE_2-1734839-0_1x20-1MP_P0.5mm_Horizontal +TE FPC connector, 20 top-side contacts, 0.5mm pitch, SMT, https://www.te.com/commerce/DocumentDelivery/DDEController?Action=showdoc&DocId=Customer+Drawing%7F1734839%7FC%7Fpdf%7FEnglish%7FENG_CD_1734839_C_C_1734839.pdf%7F4-1734839-0 +te fpc 1734839 +0 +22 +21 +Connector_FFC-FPC +TE_2-1734839-1_1x21-1MP_P0.5mm_Horizontal +TE FPC connector, 21 top-side contacts, 0.5mm pitch, SMT, https://www.te.com/commerce/DocumentDelivery/DDEController?Action=showdoc&DocId=Customer+Drawing%7F1734839%7FC%7Fpdf%7FEnglish%7FENG_CD_1734839_C_C_1734839.pdf%7F4-1734839-0 +te fpc 1734839 +0 +23 +22 +Connector_FFC-FPC +TE_2-1734839-2_1x22-1MP_P0.5mm_Horizontal +TE FPC connector, 22 top-side contacts, 0.5mm pitch, SMT, https://www.te.com/commerce/DocumentDelivery/DDEController?Action=showdoc&DocId=Customer+Drawing%7F1734839%7FC%7Fpdf%7FEnglish%7FENG_CD_1734839_C_C_1734839.pdf%7F4-1734839-0 +te fpc 1734839 +0 +24 +23 +Connector_FFC-FPC +TE_2-1734839-3_1x23-1MP_P0.5mm_Horizontal +TE FPC connector, 23 top-side contacts, 0.5mm pitch, SMT, https://www.te.com/commerce/DocumentDelivery/DDEController?Action=showdoc&DocId=Customer+Drawing%7F1734839%7FC%7Fpdf%7FEnglish%7FENG_CD_1734839_C_C_1734839.pdf%7F4-1734839-0 +te fpc 1734839 +0 +25 +24 +Connector_FFC-FPC +TE_2-1734839-4_1x24-1MP_P0.5mm_Horizontal +TE FPC connector, 24 top-side contacts, 0.5mm pitch, SMT, https://www.te.com/commerce/DocumentDelivery/DDEController?Action=showdoc&DocId=Customer+Drawing%7F1734839%7FC%7Fpdf%7FEnglish%7FENG_CD_1734839_C_C_1734839.pdf%7F4-1734839-0 +te fpc 1734839 +0 +26 +25 +Connector_FFC-FPC +TE_2-1734839-5_1x25-1MP_P0.5mm_Horizontal +TE FPC connector, 25 top-side contacts, 0.5mm pitch, SMT, https://www.te.com/commerce/DocumentDelivery/DDEController?Action=showdoc&DocId=Customer+Drawing%7F1734839%7FC%7Fpdf%7FEnglish%7FENG_CD_1734839_C_C_1734839.pdf%7F4-1734839-0 +te fpc 1734839 +0 +27 +26 +Connector_FFC-FPC +TE_2-1734839-6_1x26-1MP_P0.5mm_Horizontal +TE FPC connector, 26 top-side contacts, 0.5mm pitch, SMT, https://www.te.com/commerce/DocumentDelivery/DDEController?Action=showdoc&DocId=Customer+Drawing%7F1734839%7FC%7Fpdf%7FEnglish%7FENG_CD_1734839_C_C_1734839.pdf%7F4-1734839-0 +te fpc 1734839 +0 +28 +27 +Connector_FFC-FPC +TE_2-1734839-7_1x27-1MP_P0.5mm_Horizontal +TE FPC connector, 27 top-side contacts, 0.5mm pitch, SMT, https://www.te.com/commerce/DocumentDelivery/DDEController?Action=showdoc&DocId=Customer+Drawing%7F1734839%7FC%7Fpdf%7FEnglish%7FENG_CD_1734839_C_C_1734839.pdf%7F4-1734839-0 +te fpc 1734839 +0 +29 +28 +Connector_FFC-FPC +TE_2-1734839-8_1x28-1MP_P0.5mm_Horizontal +TE FPC connector, 28 top-side contacts, 0.5mm pitch, SMT, https://www.te.com/commerce/DocumentDelivery/DDEController?Action=showdoc&DocId=Customer+Drawing%7F1734839%7FC%7Fpdf%7FEnglish%7FENG_CD_1734839_C_C_1734839.pdf%7F4-1734839-0 +te fpc 1734839 +0 +30 +29 +Connector_FFC-FPC +TE_2-1734839-9_1x29-1MP_P0.5mm_Horizontal +TE FPC connector, 29 top-side contacts, 0.5mm pitch, SMT, https://www.te.com/commerce/DocumentDelivery/DDEController?Action=showdoc&DocId=Customer+Drawing%7F1734839%7FC%7Fpdf%7FEnglish%7FENG_CD_1734839_C_C_1734839.pdf%7F4-1734839-0 +te fpc 1734839 +0 +31 +30 +Connector_FFC-FPC +TE_3-84952-0_1x30-1MP_P1.0mm_Horizontal +TE FPC connector, 30 bottom-side contacts, 1.0mm pitch, 1.0mm height, SMT, http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=84952&DocType=Customer+Drawing&DocLang=English&DocFormat=pdf&PartCntxt=84952-4 +te fpc 84952 +0 +32 +31 +Connector_FFC-FPC +TE_3-84953-0_1x30-1MP_P1.0mm_Horizontal +TE FPC connector, 30 top-side contacts, 1.0mm pitch, 1.0mm height, SMT, http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=84953&DocType=Customer+Drawing&DocLang=English&DocFormat=pdf&PartCntxt=84953-4 +te fpc 84953 +0 +32 +31 +Connector_FFC-FPC +TE_3-1734839-0_1x30-1MP_P0.5mm_Horizontal +TE FPC connector, 30 top-side contacts, 0.5mm pitch, SMT, https://www.te.com/commerce/DocumentDelivery/DDEController?Action=showdoc&DocId=Customer+Drawing%7F1734839%7FC%7Fpdf%7FEnglish%7FENG_CD_1734839_C_C_1734839.pdf%7F4-1734839-0 +te fpc 1734839 +0 +32 +31 +Connector_FFC-FPC +TE_3-1734839-1_1x31-1MP_P0.5mm_Horizontal +TE FPC connector, 31 top-side contacts, 0.5mm pitch, SMT, https://www.te.com/commerce/DocumentDelivery/DDEController?Action=showdoc&DocId=Customer+Drawing%7F1734839%7FC%7Fpdf%7FEnglish%7FENG_CD_1734839_C_C_1734839.pdf%7F4-1734839-0 +te fpc 1734839 +0 +33 +32 +Connector_FFC-FPC +TE_3-1734839-2_1x32-1MP_P0.5mm_Horizontal +TE FPC connector, 32 top-side contacts, 0.5mm pitch, SMT, https://www.te.com/commerce/DocumentDelivery/DDEController?Action=showdoc&DocId=Customer+Drawing%7F1734839%7FC%7Fpdf%7FEnglish%7FENG_CD_1734839_C_C_1734839.pdf%7F4-1734839-0 +te fpc 1734839 +0 +34 +33 +Connector_FFC-FPC +TE_3-1734839-3_1x33-1MP_P0.5mm_Horizontal +TE FPC connector, 33 top-side contacts, 0.5mm pitch, SMT, https://www.te.com/commerce/DocumentDelivery/DDEController?Action=showdoc&DocId=Customer+Drawing%7F1734839%7FC%7Fpdf%7FEnglish%7FENG_CD_1734839_C_C_1734839.pdf%7F4-1734839-0 +te fpc 1734839 +0 +35 +34 +Connector_FFC-FPC +TE_3-1734839-4_1x34-1MP_P0.5mm_Horizontal +TE FPC connector, 34 top-side contacts, 0.5mm pitch, SMT, https://www.te.com/commerce/DocumentDelivery/DDEController?Action=showdoc&DocId=Customer+Drawing%7F1734839%7FC%7Fpdf%7FEnglish%7FENG_CD_1734839_C_C_1734839.pdf%7F4-1734839-0 +te fpc 1734839 +0 +36 +35 +Connector_FFC-FPC +TE_3-1734839-5_1x35-1MP_P0.5mm_Horizontal +TE FPC connector, 35 top-side contacts, 0.5mm pitch, SMT, https://www.te.com/commerce/DocumentDelivery/DDEController?Action=showdoc&DocId=Customer+Drawing%7F1734839%7FC%7Fpdf%7FEnglish%7FENG_CD_1734839_C_C_1734839.pdf%7F4-1734839-0 +te fpc 1734839 +0 +37 +36 +Connector_FFC-FPC +TE_3-1734839-6_1x36-1MP_P0.5mm_Horizontal +TE FPC connector, 36 top-side contacts, 0.5mm pitch, SMT, https://www.te.com/commerce/DocumentDelivery/DDEController?Action=showdoc&DocId=Customer+Drawing%7F1734839%7FC%7Fpdf%7FEnglish%7FENG_CD_1734839_C_C_1734839.pdf%7F4-1734839-0 +te fpc 1734839 +0 +38 +37 +Connector_FFC-FPC +TE_3-1734839-7_1x37-1MP_P0.5mm_Horizontal +TE FPC connector, 37 top-side contacts, 0.5mm pitch, SMT, https://www.te.com/commerce/DocumentDelivery/DDEController?Action=showdoc&DocId=Customer+Drawing%7F1734839%7FC%7Fpdf%7FEnglish%7FENG_CD_1734839_C_C_1734839.pdf%7F4-1734839-0 +te fpc 1734839 +0 +39 +38 +Connector_FFC-FPC +TE_3-1734839-8_1x38-1MP_P0.5mm_Horizontal +TE FPC connector, 38 top-side contacts, 0.5mm pitch, SMT, https://www.te.com/commerce/DocumentDelivery/DDEController?Action=showdoc&DocId=Customer+Drawing%7F1734839%7FC%7Fpdf%7FEnglish%7FENG_CD_1734839_C_C_1734839.pdf%7F4-1734839-0 +te fpc 1734839 +0 +40 +39 +Connector_FFC-FPC +TE_3-1734839-9_1x39-1MP_P0.5mm_Horizontal +TE FPC connector, 39 top-side contacts, 0.5mm pitch, SMT, https://www.te.com/commerce/DocumentDelivery/DDEController?Action=showdoc&DocId=Customer+Drawing%7F1734839%7FC%7Fpdf%7FEnglish%7FENG_CD_1734839_C_C_1734839.pdf%7F4-1734839-0 +te fpc 1734839 +0 +41 +40 +Connector_FFC-FPC +TE_4-1734839-0_1x40-1MP_P0.5mm_Horizontal +TE FPC connector, 40 top-side contacts, 0.5mm pitch, SMT, https://www.te.com/commerce/DocumentDelivery/DDEController?Action=showdoc&DocId=Customer+Drawing%7F1734839%7FC%7Fpdf%7FEnglish%7FENG_CD_1734839_C_C_1734839.pdf%7F4-1734839-0 +te fpc 1734839 +0 +42 +41 +Connector_FFC-FPC +TE_4-1734839-1_1x41-1MP_P0.5mm_Horizontal +TE FPC connector, 41 top-side contacts, 0.5mm pitch, SMT, https://www.te.com/commerce/DocumentDelivery/DDEController?Action=showdoc&DocId=Customer+Drawing%7F1734839%7FC%7Fpdf%7FEnglish%7FENG_CD_1734839_C_C_1734839.pdf%7F4-1734839-0 +te fpc 1734839 +0 +43 +42 +Connector_FFC-FPC +TE_4-1734839-2_1x42-1MP_P0.5mm_Horizontal +TE FPC connector, 42 top-side contacts, 0.5mm pitch, SMT, https://www.te.com/commerce/DocumentDelivery/DDEController?Action=showdoc&DocId=Customer+Drawing%7F1734839%7FC%7Fpdf%7FEnglish%7FENG_CD_1734839_C_C_1734839.pdf%7F4-1734839-0 +te fpc 1734839 +0 +44 +43 +Connector_FFC-FPC +TE_4-1734839-3_1x43-1MP_P0.5mm_Horizontal +TE FPC connector, 43 top-side contacts, 0.5mm pitch, SMT, https://www.te.com/commerce/DocumentDelivery/DDEController?Action=showdoc&DocId=Customer+Drawing%7F1734839%7FC%7Fpdf%7FEnglish%7FENG_CD_1734839_C_C_1734839.pdf%7F4-1734839-0 +te fpc 1734839 +0 +45 +44 +Connector_FFC-FPC +TE_4-1734839-4_1x44-1MP_P0.5mm_Horizontal +TE FPC connector, 44 top-side contacts, 0.5mm pitch, SMT, https://www.te.com/commerce/DocumentDelivery/DDEController?Action=showdoc&DocId=Customer+Drawing%7F1734839%7FC%7Fpdf%7FEnglish%7FENG_CD_1734839_C_C_1734839.pdf%7F4-1734839-0 +te fpc 1734839 +0 +46 +45 +Connector_FFC-FPC +TE_4-1734839-5_1x45-1MP_P0.5mm_Horizontal +TE FPC connector, 45 top-side contacts, 0.5mm pitch, SMT, https://www.te.com/commerce/DocumentDelivery/DDEController?Action=showdoc&DocId=Customer+Drawing%7F1734839%7FC%7Fpdf%7FEnglish%7FENG_CD_1734839_C_C_1734839.pdf%7F4-1734839-0 +te fpc 1734839 +0 +47 +46 +Connector_FFC-FPC +TE_4-1734839-6_1x46-1MP_P0.5mm_Horizontal +TE FPC connector, 46 top-side contacts, 0.5mm pitch, SMT, https://www.te.com/commerce/DocumentDelivery/DDEController?Action=showdoc&DocId=Customer+Drawing%7F1734839%7FC%7Fpdf%7FEnglish%7FENG_CD_1734839_C_C_1734839.pdf%7F4-1734839-0 +te fpc 1734839 +0 +48 +47 +Connector_FFC-FPC +TE_4-1734839-7_1x47-1MP_P0.5mm_Horizontal +TE FPC connector, 47 top-side contacts, 0.5mm pitch, SMT, https://www.te.com/commerce/DocumentDelivery/DDEController?Action=showdoc&DocId=Customer+Drawing%7F1734839%7FC%7Fpdf%7FEnglish%7FENG_CD_1734839_C_C_1734839.pdf%7F4-1734839-0 +te fpc 1734839 +0 +49 +48 +Connector_FFC-FPC +TE_4-1734839-8_1x48-1MP_P0.5mm_Horizontal +TE FPC connector, 48 top-side contacts, 0.5mm pitch, SMT, https://www.te.com/commerce/DocumentDelivery/DDEController?Action=showdoc&DocId=Customer+Drawing%7F1734839%7FC%7Fpdf%7FEnglish%7FENG_CD_1734839_C_C_1734839.pdf%7F4-1734839-0 +te fpc 1734839 +0 +50 +49 +Connector_FFC-FPC +TE_4-1734839-9_1x49-1MP_P0.5mm_Horizontal +TE FPC connector, 49 top-side contacts, 0.5mm pitch, SMT, https://www.te.com/commerce/DocumentDelivery/DDEController?Action=showdoc&DocId=Customer+Drawing%7F1734839%7FC%7Fpdf%7FEnglish%7FENG_CD_1734839_C_C_1734839.pdf%7F4-1734839-0 +te fpc 1734839 +0 +51 +50 +Connector_FFC-FPC +TE_5-1734839-0_1x50-1MP_P0.5mm_Horizontal +TE FPC connector, 50 top-side contacts, 0.5mm pitch, SMT, https://www.te.com/commerce/DocumentDelivery/DDEController?Action=showdoc&DocId=Customer+Drawing%7F1734839%7FC%7Fpdf%7FEnglish%7FENG_CD_1734839_C_C_1734839.pdf%7F4-1734839-0 +te fpc 1734839 +0 +52 +51 +Connector_FFC-FPC +TE_84952-4_1x04-1MP_P1.0mm_Horizontal +TE FPC connector, 04 bottom-side contacts, 1.0mm pitch, 1.0mm height, SMT, http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=84952&DocType=Customer+Drawing&DocLang=English&DocFormat=pdf&PartCntxt=84952-4 +te fpc 84952 +0 +6 +5 +Connector_FFC-FPC +TE_84952-5_1x05-1MP_P1.0mm_Horizontal +TE FPC connector, 05 bottom-side contacts, 1.0mm pitch, 1.0mm height, SMT, http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=84952&DocType=Customer+Drawing&DocLang=English&DocFormat=pdf&PartCntxt=84952-4 +te fpc 84952 +0 +7 +6 +Connector_FFC-FPC +TE_84952-6_1x06-1MP_P1.0mm_Horizontal +TE FPC connector, 06 bottom-side contacts, 1.0mm pitch, 1.0mm height, SMT, http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=84952&DocType=Customer+Drawing&DocLang=English&DocFormat=pdf&PartCntxt=84952-4 +te fpc 84952 +0 +8 +7 +Connector_FFC-FPC +TE_84952-7_1x07-1MP_P1.0mm_Horizontal +TE FPC connector, 07 bottom-side contacts, 1.0mm pitch, 1.0mm height, SMT, http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=84952&DocType=Customer+Drawing&DocLang=English&DocFormat=pdf&PartCntxt=84952-4 +te fpc 84952 +0 +9 +8 +Connector_FFC-FPC +TE_84952-8_1x08-1MP_P1.0mm_Horizontal +TE FPC connector, 08 bottom-side contacts, 1.0mm pitch, 1.0mm height, SMT, http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=84952&DocType=Customer+Drawing&DocLang=English&DocFormat=pdf&PartCntxt=84952-4 +te fpc 84952 +0 +10 +9 +Connector_FFC-FPC +TE_84952-9_1x09-1MP_P1.0mm_Horizontal +TE FPC connector, 09 bottom-side contacts, 1.0mm pitch, 1.0mm height, SMT, http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=84952&DocType=Customer+Drawing&DocLang=English&DocFormat=pdf&PartCntxt=84952-4 +te fpc 84952 +0 +11 +10 +Connector_FFC-FPC +TE_84953-4_1x04-1MP_P1.0mm_Horizontal +TE FPC connector, 04 top-side contacts, 1.0mm pitch, 1.0mm height, SMT, http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=84953&DocType=Customer+Drawing&DocLang=English&DocFormat=pdf&PartCntxt=84953-4 +te fpc 84953 +0 +6 +5 +Connector_FFC-FPC +TE_84953-5_1x05-1MP_P1.0mm_Horizontal +TE FPC connector, 05 top-side contacts, 1.0mm pitch, 1.0mm height, SMT, http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=84953&DocType=Customer+Drawing&DocLang=English&DocFormat=pdf&PartCntxt=84953-4 +te fpc 84953 +0 +7 +6 +Connector_FFC-FPC +TE_84953-6_1x06-1MP_P1.0mm_Horizontal +TE FPC connector, 06 top-side contacts, 1.0mm pitch, 1.0mm height, SMT, http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=84953&DocType=Customer+Drawing&DocLang=English&DocFormat=pdf&PartCntxt=84953-4 +te fpc 84953 +0 +8 +7 +Connector_FFC-FPC +TE_84953-7_1x07-1MP_P1.0mm_Horizontal +TE FPC connector, 07 top-side contacts, 1.0mm pitch, 1.0mm height, SMT, http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=84953&DocType=Customer+Drawing&DocLang=English&DocFormat=pdf&PartCntxt=84953-4 +te fpc 84953 +0 +9 +8 +Connector_FFC-FPC +TE_84953-8_1x08-1MP_P1.0mm_Horizontal +TE FPC connector, 08 top-side contacts, 1.0mm pitch, 1.0mm height, SMT, http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=84953&DocType=Customer+Drawing&DocLang=English&DocFormat=pdf&PartCntxt=84953-4 +te fpc 84953 +0 +10 +9 +Connector_FFC-FPC +TE_84953-9_1x09-1MP_P1.0mm_Horizontal +TE FPC connector, 09 top-side contacts, 1.0mm pitch, 1.0mm height, SMT, http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=84953&DocType=Customer+Drawing&DocLang=English&DocFormat=pdf&PartCntxt=84953-4 +te fpc 84953 +0 +11 +10 +Connector_FFC-FPC +Wuerth_68611214422_1x12-1MP_P1.0mm_Horizontal +http://katalog.we-online.de/em/datasheet/68611214422.pdf +Wuerth FPC 68611214422 connector 12 bottom-side contacts 1.0mm pitch 1.0mm height SMT +0 +14 +13 +Connector_HDMI +HDMI_A_Contact_Technology_HDMI-19APL2_Horizontal +HDMI Contact Technology Type A http://www.contactswitch.com/en/download.aspx?id=1449 +HDMI Contact Technology Type A +0 +23 +20 +Connector_HDMI +HDMI_A_Kycon_KDMIX-SL1-NS-WS-B15_VerticalRightAngle +HDMI, Type A, Kycon KDMIX-SL1-NS-WS-B15, Vertical Right Angle, http://www.kycon.com/Pub_Eng_Draw/KDMIX-SL1-NS-WS-B15.pdf +hdmi type a +0 +23 +20 +Connector_HDMI +HDMI_Micro-D_Molex_46765-0x01 +HDMI, Micro, Type D, SMD, 0.4mm pitch, 19 ckt, right angle (http://www.molex.com/pdm_docs/sd/467651301_sd.pdf) +hdmi micro type d right angle smd +0 +23 +20 +Connector_HDMI +HDMI_Micro-D_Molex_46765-1x01 +HDMI, Micro, Type D, THT, 0.4mm pitch, 19 ckt, right angle (http://www.molex.com/pdm_docs/sd/467651301_sd.pdf) +hdmi micro type d right angle tht +0 +23 +20 +Connector_HDMI +HDMI_Micro-D_Molex_46765-2x0x +HDMI, Micro, Type D, THT/SMD hybrid, 0.4mm pitch, 19 ckt, right angle (http://www.molex.com/pdm_docs/sd/467651301_sd.pdf) +hdmi micro type d right angle tht smd hybrid +0 +23 +20 +Connector_Harwin +Harwin_Gecko-G125-FVX0605L0X_2x03_P1.25mm_Vertical +Harwin Gecko Connector, 6 pins, dual row female, vertical entry, PN:G125-FVX0605L0X +connector harwin gecko +0 +6 +6 +Connector_Harwin +Harwin_Gecko-G125-FVX1005L0X_2x05_P1.25mm_Vertical +Harwin Gecko Connector, 10 pins, dual row female, vertical entry, PN:G125-FVX1005L0X +connector harwin gecko +0 +10 +10 +Connector_Harwin +Harwin_Gecko-G125-FVX1205L0X_2x06_P1.25mm_Vertical +Harwin Gecko Connector, 12 pins, dual row female, vertical entry, PN:G125-FVX1205L0X +connector harwin gecko +0 +12 +12 +Connector_Harwin +Harwin_Gecko-G125-FVX1605L0X_2x08_P1.25mm_Vertical +Harwin Gecko Connector, 16 pins, dual row female, vertical entry, PN:G125-FVX1605L0X +connector harwin gecko +0 +16 +16 +Connector_Harwin +Harwin_Gecko-G125-FVX2005L0X_2x10_P1.25mm_Vertical +Harwin Gecko Connector, 20 pins, dual row female, vertical entry, PN:G125-FVX2005L0X +connector harwin gecko +0 +20 +20 +Connector_Harwin +Harwin_Gecko-G125-FVX2605L0X_2x13_P1.25mm_Vertical +Harwin Gecko Connector, 26 pins, dual row female, vertical entry, PN:G125-FVX2605L0X +connector harwin gecko +0 +26 +26 +Connector_Harwin +Harwin_Gecko-G125-FVX3405L0X_2x17_P1.25mm_Vertical +Harwin Gecko Connector, 34 pins, dual row female, vertical entry, PN:G125-FVX3405L0X +connector harwin gecko +0 +34 +34 +Connector_Harwin +Harwin_Gecko-G125-FVX5005L0X_2x25_P1.25mm_Vertical +Harwin Gecko Connector, 50 pins, dual row female, vertical entry, PN:G125-FVX5005L0X +connector harwin gecko +0 +50 +50 +Connector_Harwin +Harwin_Gecko-G125-MVX0605L0X_2x03_P1.25mm_Vertical +Harwin Gecko Connector, 6 pins, dual row male, vertical entry, no latches, PN:G125-MVX0605L0X +connector harwin gecko +0 +6 +6 +Connector_Harwin +Harwin_Gecko-G125-MVX0605L1X_2x03_P1.25mm_Vertical +Harwin Gecko Connector, 6 pins, dual row male, vertical entry, with latches, PN:G125-MVX0605L1X +connector harwin gecko +0 +6 +6 +Connector_Harwin +Harwin_Gecko-G125-MVX1005L0X_2x05_P1.25mm_Vertical +Harwin Gecko Connector, 10 pins, dual row male, vertical entry, no latches, PN:G125-MVX1005L0X +connector harwin gecko +0 +10 +10 +Connector_Harwin +Harwin_Gecko-G125-MVX1005L1X_2x05_P1.25mm_Vertical +Harwin Gecko Connector, 10 pins, dual row male, vertical entry, with latches, PN:G125-MVX1005L1X +connector harwin gecko +0 +10 +10 +Connector_Harwin +Harwin_Gecko-G125-MVX1205L0X_2x06_P1.25mm_Vertical +Harwin Gecko Connector, 12 pins, dual row male, vertical entry, no latches, PN:G125-MVX1205L0X +connector harwin gecko +0 +12 +12 +Connector_Harwin +Harwin_Gecko-G125-MVX1205L1X_2x06_P1.25mm_Vertical +Harwin Gecko Connector, 12 pins, dual row male, vertical entry, with latches, PN:G125-MVX1205L1X +connector harwin gecko +0 +12 +12 +Connector_Harwin +Harwin_Gecko-G125-MVX1605L0X_2x08_P1.25mm_Vertical +Harwin Gecko Connector, 16 pins, dual row male, vertical entry, no latches, PN:G125-MVX1605L0X +connector harwin gecko +0 +16 +16 +Connector_Harwin +Harwin_Gecko-G125-MVX1605L1X_2x08_P1.25mm_Vertical +Harwin Gecko Connector, 16 pins, dual row male, vertical entry, with latches, PN:G125-MVX1605L1X +connector harwin gecko +0 +16 +16 +Connector_Harwin +Harwin_Gecko-G125-MVX2005L0X_2x10_P1.25mm_Vertical +Harwin Gecko Connector, 20 pins, dual row male, vertical entry, no latches, PN:G125-MVX2005L0X +connector harwin gecko +0 +20 +20 +Connector_Harwin +Harwin_Gecko-G125-MVX2005L1X_2x10_P1.25mm_Vertical +Harwin Gecko Connector, 20 pins, dual row male, vertical entry, with latches, PN:G125-MVX2005L1X +connector harwin gecko +0 +20 +20 +Connector_Harwin +Harwin_Gecko-G125-MVX2605L0X_2x13_P1.25mm_Vertical +Harwin Gecko Connector, 26 pins, dual row male, vertical entry, no latches, PN:G125-MVX2605L0X +connector harwin gecko +0 +26 +26 +Connector_Harwin +Harwin_Gecko-G125-MVX2605L1X_2x13_P1.25mm_Vertical +Harwin Gecko Connector, 26 pins, dual row male, vertical entry, with latches, PN:G125-MVX2605L1X +connector harwin gecko +0 +26 +26 +Connector_Harwin +Harwin_Gecko-G125-MVX3405L0X_2x17_P1.25mm_Vertical +Harwin Gecko Connector, 34 pins, dual row male, vertical entry, no latches, PN:G125-MVX3405L0X +connector harwin gecko +0 +34 +34 +Connector_Harwin +Harwin_Gecko-G125-MVX3405L1X_2x17_P1.25mm_Vertical +Harwin Gecko Connector, 34 pins, dual row male, vertical entry, with latches, PN:G125-MVX3405L1X +connector harwin gecko +0 +34 +34 +Connector_Harwin +Harwin_Gecko-G125-MVX5005L0X_2x25_P1.25mm_Vertical +Harwin Gecko Connector, 50 pins, dual row male, vertical entry, no latches, PN:G125-MVX5005L0X +connector harwin gecko +0 +50 +50 +Connector_Harwin +Harwin_Gecko-G125-MVX5005L1X_2x25_P1.25mm_Vertical +Harwin Gecko Connector, 50 pins, dual row male, vertical entry, with latches, PN:G125-MVX5005L1X +connector harwin gecko +0 +50 +50 +Connector_Harwin +Harwin_LTek-Male_02_P2.00mm_Vertical +Harwin LTek Connector, 2 pins, single row male, vertical entry +connector harwin ltek M80 +0 +2 +2 +Connector_Harwin +Harwin_LTek-Male_02_P2.00mm_Vertical_StrainRelief +Harwin LTek Connector, 2 pins, single row male, vertical entry, strain relief clip +connector harwin ltek M80 +0 +6 +2 +Connector_Harwin +Harwin_LTek-Male_2x02_P2.00mm_Vertical +Harwin LTek Connector, 4 pins, single row male, vertical entry +connector harwin ltek M80 +0 +4 +4 +Connector_Harwin +Harwin_LTek-Male_2x02_P2.00mm_Vertical_StrainRelief +Harwin LTek Connector, 4 pins, single row male, vertical entry, strain relief clip +connector harwin ltek M80 +0 +8 +4 +Connector_Harwin +Harwin_LTek-Male_2x03_P2.00mm_Vertical +Harwin LTek Connector, 6 pins, single row male, vertical entry +connector harwin ltek M80 +0 +6 +6 +Connector_Harwin +Harwin_LTek-Male_2x03_P2.00mm_Vertical_StrainRelief +Harwin LTek Connector, 6 pins, single row male, vertical entry, strain relief clip +connector harwin ltek M80 +0 +10 +6 +Connector_Harwin +Harwin_LTek-Male_2x04_P2.00mm_Vertical +Harwin LTek Connector, 8 pins, single row male, vertical entry +connector harwin ltek M80 +0 +8 +8 +Connector_Harwin +Harwin_LTek-Male_2x04_P2.00mm_Vertical_StrainRelief +Harwin LTek Connector, 8 pins, single row male, vertical entry, strain relief clip +connector harwin ltek M80 +0 +12 +8 +Connector_Harwin +Harwin_LTek-Male_2x05_P2.00mm_Vertical +Harwin LTek Connector, 10 pins, single row male, vertical entry +connector harwin ltek M80 +0 +10 +10 +Connector_Harwin +Harwin_LTek-Male_2x05_P2.00mm_Vertical_StrainRelief +Harwin LTek Connector, 10 pins, single row male, vertical entry, strain relief clip +connector harwin ltek M80 +0 +14 +10 +Connector_Harwin +Harwin_LTek-Male_2x06_P2.00mm_Vertical +Harwin LTek Connector, 12 pins, single row male, vertical entry +connector harwin ltek M80 +0 +12 +12 +Connector_Harwin +Harwin_LTek-Male_2x06_P2.00mm_Vertical_StrainRelief +Harwin LTek Connector, 12 pins, single row male, vertical entry, strain relief clip +connector harwin ltek M80 +0 +16 +12 +Connector_Harwin +Harwin_LTek-Male_2x07_P2.00mm_Vertical +Harwin LTek Connector, 14 pins, single row male, vertical entry +connector harwin ltek M80 +0 +14 +14 +Connector_Harwin +Harwin_LTek-Male_2x07_P2.00mm_Vertical_StrainRelief +Harwin LTek Connector, 14 pins, single row male, vertical entry, strain relief clip +connector harwin ltek M80 +0 +18 +14 +Connector_Harwin +Harwin_LTek-Male_2x08_P2.00mm_Vertical +Harwin LTek Connector, 16 pins, single row male, vertical entry +connector harwin ltek M80 +0 +16 +16 +Connector_Harwin +Harwin_LTek-Male_2x08_P2.00mm_Vertical_StrainRelief +Harwin LTek Connector, 16 pins, single row male, vertical entry, strain relief clip +connector harwin ltek M80 +0 +20 +16 +Connector_Harwin +Harwin_LTek-Male_2x09_P2.00mm_Vertical +Harwin LTek Connector, 18 pins, single row male, vertical entry +connector harwin ltek M80 +0 +18 +18 +Connector_Harwin +Harwin_LTek-Male_2x09_P2.00mm_Vertical_StrainRelief +Harwin LTek Connector, 18 pins, single row male, vertical entry, strain relief clip +connector harwin ltek M80 +0 +22 +18 +Connector_Harwin +Harwin_LTek-Male_2x10_P2.00mm_Vertical +Harwin LTek Connector, 20 pins, single row male, vertical entry +connector harwin ltek M80 +0 +20 +20 +Connector_Harwin +Harwin_LTek-Male_2x10_P2.00mm_Vertical_StrainRelief +Harwin LTek Connector, 20 pins, single row male, vertical entry, strain relief clip +connector harwin ltek M80 +0 +24 +20 +Connector_Harwin +Harwin_LTek-Male_2x13_P2.00mm_Vertical +Harwin LTek Connector, 26 pins, single row male, vertical entry +connector harwin ltek M80 +0 +26 +26 +Connector_Harwin +Harwin_LTek-Male_2x13_P2.00mm_Vertical_StrainRelief +Harwin LTek Connector, 26 pins, single row male, vertical entry, strain relief clip +connector harwin ltek M80 +0 +30 +26 +Connector_Harwin +Harwin_LTek-Male_2x17_P2.00mm_Vertical +Harwin LTek Connector, 34 pins, single row male, vertical entry +connector harwin ltek M80 +0 +34 +34 +Connector_Harwin +Harwin_LTek-Male_2x17_P2.00mm_Vertical_StrainRelief +Harwin LTek Connector, 34 pins, single row male, vertical entry, strain relief clip +connector harwin ltek M80 +0 +38 +34 +Connector_Harwin +Harwin_LTek-Male_2x22_P2.00mm_Vertical +Harwin LTek Connector, 44 pins, single row male, vertical entry +connector harwin ltek M80 +0 +44 +44 +Connector_Harwin +Harwin_LTek-Male_2x22_P2.00mm_Vertical_StrainRelief +Harwin LTek Connector, 44 pins, single row male, vertical entry, strain relief clip +connector harwin ltek M80 +0 +48 +44 +Connector_Harwin +Harwin_LTek-Male_03_P2.00mm_Vertical +Harwin LTek Connector, 3 pins, single row male, vertical entry +connector harwin ltek M80 +0 +3 +3 +Connector_Harwin +Harwin_LTek-Male_03_P2.00mm_Vertical_StrainRelief +Harwin LTek Connector, 3 pins, single row male, vertical entry, strain relief clip +connector harwin ltek M80 +0 +7 +3 +Connector_Harwin +Harwin_LTek-Male_04_P2.00mm_Vertical +Harwin LTek Connector, 4 pins, single row male, vertical entry +connector harwin ltek M80 +0 +4 +4 +Connector_Harwin +Harwin_LTek-Male_04_P2.00mm_Vertical_StrainRelief +Harwin LTek Connector, 4 pins, single row male, vertical entry, strain relief clip +connector harwin ltek M80 +0 +8 +4 +Connector_Harwin +Harwin_LTek-Male_05_P2.00mm_Vertical +Harwin LTek Connector, 5 pins, single row male, vertical entry +connector harwin ltek M80 +0 +5 +5 +Connector_Harwin +Harwin_LTek-Male_05_P2.00mm_Vertical_StrainRelief +Harwin LTek Connector, 5 pins, single row male, vertical entry, strain relief clip +connector harwin ltek M80 +0 +9 +5 +Connector_Harwin +Harwin_LTek-Male_06_P2.00mm_Vertical +Harwin LTek Connector, 6 pins, single row male, vertical entry +connector harwin ltek M80 +0 +6 +6 +Connector_Harwin +Harwin_LTek-Male_06_P2.00mm_Vertical_StrainRelief +Harwin LTek Connector, 6 pins, single row male, vertical entry, strain relief clip +connector harwin ltek M80 +0 +10 +6 +Connector_Harwin +Harwin_LTek-Male_07_P2.00mm_Vertical +Harwin LTek Connector, 7 pins, single row male, vertical entry +connector harwin ltek M80 +0 +7 +7 +Connector_Harwin +Harwin_LTek-Male_07_P2.00mm_Vertical_StrainRelief +Harwin LTek Connector, 7 pins, single row male, vertical entry, strain relief clip +connector harwin ltek M80 +0 +11 +7 +Connector_Harwin +Harwin_LTek-Male_17_P2.00mm_Vertical +Harwin LTek Connector, 17 pins, single row male, vertical entry +connector harwin ltek M80 +0 +17 +17 +Connector_Harwin +Harwin_LTek-Male_17_P2.00mm_Vertical_StrainRelief +Harwin LTek Connector, 17 pins, single row male, vertical entry, strain relief clip +connector harwin ltek M80 +0 +21 +17 +Connector_Harwin +Harwin_LTek-Male_22_P2.00mm_Vertical +Harwin LTek Connector, 22 pins, single row male, vertical entry +connector harwin ltek M80 +0 +22 +22 +Connector_Harwin +Harwin_LTek-Male_22_P2.00mm_Vertical_StrainRelief +Harwin LTek Connector, 22 pins, single row male, vertical entry, strain relief clip +connector harwin ltek M80 +0 +26 +22 +Connector_Harwin +Harwin_M20-89003xx_1x03_P2.54mm_Horizontal +Harwin Male Horizontal Surface Mount Single Row 2.54mm (0.1 inch) Pitch PCB Connector, M20-89003xx, 3 Pins per row (https://cdn.harwin.com/pdfs/M20-890.pdf), generated with kicad-footprint-generator +connector Harwin M20-890 horizontal +0 +4 +3 +Connector_Harwin +Harwin_M20-89004xx_1x04_P2.54mm_Horizontal +Harwin Male Horizontal Surface Mount Single Row 2.54mm (0.1 inch) Pitch PCB Connector, M20-89004xx, 4 Pins per row (https://cdn.harwin.com/pdfs/M20-890.pdf), generated with kicad-footprint-generator +connector Harwin M20-890 horizontal +0 +5 +4 +Connector_Harwin +Harwin_M20-89005xx_1x05_P2.54mm_Horizontal +Harwin Male Horizontal Surface Mount Single Row 2.54mm (0.1 inch) Pitch PCB Connector, M20-89005xx, 5 Pins per row (https://cdn.harwin.com/pdfs/M20-890.pdf), generated with kicad-footprint-generator +connector Harwin M20-890 horizontal +0 +6 +5 +Connector_Harwin +Harwin_M20-89006xx_1x06_P2.54mm_Horizontal +Harwin Male Horizontal Surface Mount Single Row 2.54mm (0.1 inch) Pitch PCB Connector, M20-89006xx, 6 Pins per row (https://cdn.harwin.com/pdfs/M20-890.pdf), generated with kicad-footprint-generator +connector Harwin M20-890 horizontal +0 +7 +6 +Connector_Harwin +Harwin_M20-89007xx_1x07_P2.54mm_Horizontal +Harwin Male Horizontal Surface Mount Single Row 2.54mm (0.1 inch) Pitch PCB Connector, M20-89007xx, 7 Pins per row (https://cdn.harwin.com/pdfs/M20-890.pdf), generated with kicad-footprint-generator +connector Harwin M20-890 horizontal +0 +8 +7 +Connector_Harwin +Harwin_M20-89008xx_1x08_P2.54mm_Horizontal +Harwin Male Horizontal Surface Mount Single Row 2.54mm (0.1 inch) Pitch PCB Connector, M20-89008xx, 8 Pins per row (https://cdn.harwin.com/pdfs/M20-890.pdf), generated with kicad-footprint-generator +connector Harwin M20-890 horizontal +0 +9 +8 +Connector_Harwin +Harwin_M20-89009xx_1x09_P2.54mm_Horizontal +Harwin Male Horizontal Surface Mount Single Row 2.54mm (0.1 inch) Pitch PCB Connector, M20-89009xx, 9 Pins per row (https://cdn.harwin.com/pdfs/M20-890.pdf), generated with kicad-footprint-generator +connector Harwin M20-890 horizontal +0 +10 +9 +Connector_Harwin +Harwin_M20-89010xx_1x10_P2.54mm_Horizontal +Harwin Male Horizontal Surface Mount Single Row 2.54mm (0.1 inch) Pitch PCB Connector, M20-89010xx, 10 Pins per row (https://cdn.harwin.com/pdfs/M20-890.pdf), generated with kicad-footprint-generator +connector Harwin M20-890 horizontal +0 +11 +10 +Connector_Harwin +Harwin_M20-89011xx_1x11_P2.54mm_Horizontal +Harwin Male Horizontal Surface Mount Single Row 2.54mm (0.1 inch) Pitch PCB Connector, M20-89011xx, 11 Pins per row (https://cdn.harwin.com/pdfs/M20-890.pdf), generated with kicad-footprint-generator +connector Harwin M20-890 horizontal +0 +12 +11 +Connector_Harwin +Harwin_M20-89012xx_1x12_P2.54mm_Horizontal +Harwin Male Horizontal Surface Mount Single Row 2.54mm (0.1 inch) Pitch PCB Connector, M20-89012xx, 12 Pins per row (https://cdn.harwin.com/pdfs/M20-890.pdf), generated with kicad-footprint-generator +connector Harwin M20-890 horizontal +0 +13 +12 +Connector_Harwin +Harwin_M20-89013xx_1x13_P2.54mm_Horizontal +Harwin Male Horizontal Surface Mount Single Row 2.54mm (0.1 inch) Pitch PCB Connector, M20-89013xx, 13 Pins per row (https://cdn.harwin.com/pdfs/M20-890.pdf), generated with kicad-footprint-generator +connector Harwin M20-890 horizontal +0 +14 +13 +Connector_Harwin +Harwin_M20-89014xx_1x14_P2.54mm_Horizontal +Harwin Male Horizontal Surface Mount Single Row 2.54mm (0.1 inch) Pitch PCB Connector, M20-89014xx, 14 Pins per row (https://cdn.harwin.com/pdfs/M20-890.pdf), generated with kicad-footprint-generator +connector Harwin M20-890 horizontal +0 +15 +14 +Connector_Harwin +Harwin_M20-89015xx_1x15_P2.54mm_Horizontal +Harwin Male Horizontal Surface Mount Single Row 2.54mm (0.1 inch) Pitch PCB Connector, M20-89015xx, 15 Pins per row (https://cdn.harwin.com/pdfs/M20-890.pdf), generated with kicad-footprint-generator +connector Harwin M20-890 horizontal +0 +16 +15 +Connector_Harwin +Harwin_M20-89016xx_1x16_P2.54mm_Horizontal +Harwin Male Horizontal Surface Mount Single Row 2.54mm (0.1 inch) Pitch PCB Connector, M20-89016xx, 16 Pins per row (https://cdn.harwin.com/pdfs/M20-890.pdf), generated with kicad-footprint-generator +connector Harwin M20-890 horizontal +0 +17 +16 +Connector_Harwin +Harwin_M20-89017xx_1x17_P2.54mm_Horizontal +Harwin Male Horizontal Surface Mount Single Row 2.54mm (0.1 inch) Pitch PCB Connector, M20-89017xx, 17 Pins per row (https://cdn.harwin.com/pdfs/M20-890.pdf), generated with kicad-footprint-generator +connector Harwin M20-890 horizontal +0 +18 +17 +Connector_Harwin +Harwin_M20-89018xx_1x18_P2.54mm_Horizontal +Harwin Male Horizontal Surface Mount Single Row 2.54mm (0.1 inch) Pitch PCB Connector, M20-89018xx, 18 Pins per row (https://cdn.harwin.com/pdfs/M20-890.pdf), generated with kicad-footprint-generator +connector Harwin M20-890 horizontal +0 +19 +18 +Connector_Harwin +Harwin_M20-89019xx_1x19_P2.54mm_Horizontal +Harwin Male Horizontal Surface Mount Single Row 2.54mm (0.1 inch) Pitch PCB Connector, M20-89019xx, 19 Pins per row (https://cdn.harwin.com/pdfs/M20-890.pdf), generated with kicad-footprint-generator +connector Harwin M20-890 horizontal +0 +20 +19 +Connector_Harwin +Harwin_M20-89020xx_1x20_P2.54mm_Horizontal +Harwin Male Horizontal Surface Mount Single Row 2.54mm (0.1 inch) Pitch PCB Connector, M20-89020xx, 20 Pins per row (https://cdn.harwin.com/pdfs/M20-890.pdf), generated with kicad-footprint-generator +connector Harwin M20-890 horizontal +0 +21 +20 +Connector_Harwin +Harwin_M20-7810245_2x02_P2.54mm_Vertical +Harwin Female Vertical Surface Mount Double Row 2.54mm (0.1 inch) Pitch PCB Connector, M20-7810245, 2 Pins per row (https://cdn.harwin.com/pdfs/M20-781.pdf), generated with kicad-footprint-generator +connector Harwin M20 side entry +0 +4 +4 +Connector_Harwin +Harwin_M20-7810345_2x03_P2.54mm_Vertical +Harwin Female Vertical Surface Mount Double Row 2.54mm (0.1 inch) Pitch PCB Connector, M20-7810345, 3 Pins per row (https://cdn.harwin.com/pdfs/M20-781.pdf), generated with kicad-footprint-generator +connector Harwin M20 side entry +0 +6 +6 +Connector_Harwin +Harwin_M20-7810445_2x04_P2.54mm_Vertical +Harwin Female Vertical Surface Mount Double Row 2.54mm (0.1 inch) Pitch PCB Connector, M20-7810445, 4 Pins per row (https://cdn.harwin.com/pdfs/M20-781.pdf), generated with kicad-footprint-generator +connector Harwin M20 side entry +0 +8 +8 +Connector_Harwin +Harwin_M20-7810545_2x05_P2.54mm_Vertical +Harwin Female Vertical Surface Mount Double Row 2.54mm (0.1 inch) Pitch PCB Connector, M20-7810545, 5 Pins per row (https://cdn.harwin.com/pdfs/M20-781.pdf), generated with kicad-footprint-generator +connector Harwin M20 side entry +0 +10 +10 +Connector_Harwin +Harwin_M20-7810645_2x06_P2.54mm_Vertical +Harwin Female Vertical Surface Mount Double Row 2.54mm (0.1 inch) Pitch PCB Connector, M20-7810645, 6 Pins per row (https://cdn.harwin.com/pdfs/M20-781.pdf), generated with kicad-footprint-generator +connector Harwin M20 side entry +0 +12 +12 +Connector_Harwin +Harwin_M20-7810745_2x07_P2.54mm_Vertical +Harwin Female Vertical Surface Mount Double Row 2.54mm (0.1 inch) Pitch PCB Connector, M20-7810745, 7 Pins per row (https://cdn.harwin.com/pdfs/M20-781.pdf), generated with kicad-footprint-generator +connector Harwin M20 side entry +0 +14 +14 +Connector_Harwin +Harwin_M20-7810845_2x08_P2.54mm_Vertical +Harwin Female Vertical Surface Mount Double Row 2.54mm (0.1 inch) Pitch PCB Connector, M20-7810845, 8 Pins per row (https://cdn.harwin.com/pdfs/M20-781.pdf), generated with kicad-footprint-generator +connector Harwin M20 side entry +0 +16 +16 +Connector_Harwin +Harwin_M20-7810945_2x09_P2.54mm_Vertical +Harwin Female Vertical Surface Mount Double Row 2.54mm (0.1 inch) Pitch PCB Connector, M20-7810945, 9 Pins per row (https://cdn.harwin.com/pdfs/M20-781.pdf), generated with kicad-footprint-generator +connector Harwin M20 side entry +0 +18 +18 +Connector_Harwin +Harwin_M20-7811045_2x10_P2.54mm_Vertical +Harwin Female Vertical Surface Mount Double Row 2.54mm (0.1 inch) Pitch PCB Connector, M20-7811045, 10 Pins per row (https://cdn.harwin.com/pdfs/M20-781.pdf), generated with kicad-footprint-generator +connector Harwin M20 side entry +0 +20 +20 +Connector_Harwin +Harwin_M20-7811245_2x12_P2.54mm_Vertical +Harwin Female Vertical Surface Mount Double Row 2.54mm (0.1 inch) Pitch PCB Connector, M20-7811245, 12 Pins per row (https://cdn.harwin.com/pdfs/M20-781.pdf), generated with kicad-footprint-generator +connector Harwin M20 side entry +0 +24 +24 +Connector_Harwin +Harwin_M20-7811545_2x15_P2.54mm_Vertical +Harwin Female Vertical Surface Mount Double Row 2.54mm (0.1 inch) Pitch PCB Connector, M20-7811545, 15 Pins per row (https://cdn.harwin.com/pdfs/M20-781.pdf), generated with kicad-footprint-generator +connector Harwin M20 side entry +0 +30 +30 +Connector_Harwin +Harwin_M20-7812045_2x20_P2.54mm_Vertical +Harwin Female Vertical Surface Mount Double Row 2.54mm (0.1 inch) Pitch PCB Connector, M20-7812045, 20 Pins per row (https://cdn.harwin.com/pdfs/M20-781.pdf), generated with kicad-footprint-generator +connector Harwin M20 side entry +0 +40 +40 +Connector_Hirose +Hirose_BM24_BM24-40DP-2-0.35V_2x20_P0.35mm_PowerPin2_Vertical +Hirose BM24 series connector, BM24-40DP/2-0.35V (https://www.hirose.com/product/en/download_file/key_name/BM24/category/Catalog/doc_file_id/47680/?file_category_id=4&item_id=50&is_series=1) +connector Hirose BM24 40pin header +0 +44 +42 +Connector_Hirose +Hirose_BM24_BM24-40DS-2-0.35V_2x20_P0.35mm_PowerPin2_Vertical +Hirose BM24 series connector, BM24-40DS/2-0.35V (https://www.hirose.com/product/en/download_file/key_name/BM24/category/Catalog/doc_file_id/47680/?file_category_id=4&item_id=50&is_series=1) +connector Hirose 40pin receptacle vertical +0 +42 +42 +Connector_Hirose +Hirose_DF3EA-02P-2H_1x02-1MP_P2.00mm_Horizontal +Hirose series connector, DF3EA-02P-2H (https://www.hirose.com/product/document?clcode=CL0543-0332-0-51&productname=DF3EA-5P-2H(51)&series=DF3&documenttype=2DDrawing&lang=en&documentid=0001163317), generated with kicad-footprint-generator +connector Hirose top entry +0 +4 +3 +Connector_Hirose +Hirose_DF3EA-03P-2H_1x03-1MP_P2.00mm_Horizontal +Hirose series connector, DF3EA-03P-2H (https://www.hirose.com/product/document?clcode=CL0543-0332-0-51&productname=DF3EA-5P-2H(51)&series=DF3&documenttype=2DDrawing&lang=en&documentid=0001163317), generated with kicad-footprint-generator +connector Hirose top entry +0 +5 +4 +Connector_Hirose +Hirose_DF3EA-04P-2H_1x04-1MP_P2.00mm_Horizontal +Hirose series connector, DF3EA-04P-2H (https://www.hirose.com/product/document?clcode=CL0543-0332-0-51&productname=DF3EA-5P-2H(51)&series=DF3&documenttype=2DDrawing&lang=en&documentid=0001163317), generated with kicad-footprint-generator +connector Hirose top entry +0 +6 +5 +Connector_Hirose +Hirose_DF3EA-05P-2H_1x05-1MP_P2.00mm_Horizontal +Hirose series connector, DF3EA-05P-2H (https://www.hirose.com/product/document?clcode=CL0543-0332-0-51&productname=DF3EA-5P-2H(51)&series=DF3&documenttype=2DDrawing&lang=en&documentid=0001163317), generated with kicad-footprint-generator +connector Hirose top entry +0 +7 +6 +Connector_Hirose +Hirose_DF3EA-06P-2H_1x06-1MP_P2.00mm_Horizontal +Hirose series connector, DF3EA-06P-2H (https://www.hirose.com/product/document?clcode=CL0543-0332-0-51&productname=DF3EA-5P-2H(51)&series=DF3&documenttype=2DDrawing&lang=en&documentid=0001163317), generated with kicad-footprint-generator +connector Hirose top entry +0 +8 +7 +Connector_Hirose +Hirose_DF3EA-07P-2H_1x07-1MP_P2.00mm_Horizontal +Hirose series connector, DF3EA-07P-2H (https://www.hirose.com/product/document?clcode=CL0543-0332-0-51&productname=DF3EA-5P-2H(51)&series=DF3&documenttype=2DDrawing&lang=en&documentid=0001163317), generated with kicad-footprint-generator +connector Hirose top entry +0 +9 +8 +Connector_Hirose +Hirose_DF3EA-08P-2H_1x08-1MP_P2.00mm_Horizontal +Hirose series connector, DF3EA-08P-2H (https://www.hirose.com/product/document?clcode=CL0543-0332-0-51&productname=DF3EA-5P-2H(51)&series=DF3&documenttype=2DDrawing&lang=en&documentid=0001163317), generated with kicad-footprint-generator +connector Hirose top entry +0 +10 +9 +Connector_Hirose +Hirose_DF3EA-09P-2H_1x09-1MP_P2.00mm_Horizontal +Hirose series connector, DF3EA-09P-2H (https://www.hirose.com/product/document?clcode=CL0543-0332-0-51&productname=DF3EA-5P-2H(51)&series=DF3&documenttype=2DDrawing&lang=en&documentid=0001163317), generated with kicad-footprint-generator +connector Hirose top entry +0 +11 +10 +Connector_Hirose +Hirose_DF3EA-10P-2H_1x10-1MP_P2.00mm_Horizontal +Hirose series connector, DF3EA-10P-2H (https://www.hirose.com/product/document?clcode=CL0543-0332-0-51&productname=DF3EA-5P-2H(51)&series=DF3&documenttype=2DDrawing&lang=en&documentid=0001163317), generated with kicad-footprint-generator +connector Hirose top entry +0 +12 +11 +Connector_Hirose +Hirose_DF3EA-11P-2H_1x11-1MP_P2.00mm_Horizontal +Hirose series connector, DF3EA-11P-2H (https://www.hirose.com/product/document?clcode=CL0543-0332-0-51&productname=DF3EA-5P-2H(51)&series=DF3&documenttype=2DDrawing&lang=en&documentid=0001163317), generated with kicad-footprint-generator +connector Hirose top entry +0 +13 +12 +Connector_Hirose +Hirose_DF3EA-12P-2H_1x12-1MP_P2.00mm_Horizontal +Hirose series connector, DF3EA-12P-2H (https://www.hirose.com/product/document?clcode=CL0543-0332-0-51&productname=DF3EA-5P-2H(51)&series=DF3&documenttype=2DDrawing&lang=en&documentid=0001163317), generated with kicad-footprint-generator +connector Hirose top entry +0 +14 +13 +Connector_Hirose +Hirose_DF3EA-13P-2H_1x13-1MP_P2.00mm_Horizontal +Hirose series connector, DF3EA-13P-2H (https://www.hirose.com/product/document?clcode=CL0543-0332-0-51&productname=DF3EA-5P-2H(51)&series=DF3&documenttype=2DDrawing&lang=en&documentid=0001163317), generated with kicad-footprint-generator +connector Hirose top entry +0 +15 +14 +Connector_Hirose +Hirose_DF3EA-14P-2H_1x14-1MP_P2.00mm_Horizontal +Hirose series connector, DF3EA-14P-2H (https://www.hirose.com/product/document?clcode=CL0543-0332-0-51&productname=DF3EA-5P-2H(51)&series=DF3&documenttype=2DDrawing&lang=en&documentid=0001163317), generated with kicad-footprint-generator +connector Hirose top entry +0 +16 +15 +Connector_Hirose +Hirose_DF3EA-15P-2H_1x15-1MP_P2.00mm_Horizontal +Hirose series connector, DF3EA-15P-2H (https://www.hirose.com/product/document?clcode=CL0543-0332-0-51&productname=DF3EA-5P-2H(51)&series=DF3&documenttype=2DDrawing&lang=en&documentid=0001163317), generated with kicad-footprint-generator +connector Hirose top entry +0 +17 +16 +Connector_Hirose +Hirose_DF11-4DP-2DSA_2x02_P2.00mm_Vertical +Hirose DF11 through hole, DF11-4DP-2DSA, 2 Pins per row (https://www.hirose.com/product/document?clcode=&productname=&series=DF11&documenttype=Catalog&lang=en&documentid=D31688_en), generated with kicad-footprint-generator +connector Hirose DF11 vertical +0 +4 +4 +Connector_Hirose +Hirose_DF11-6DP-2DSA_2x03_P2.00mm_Vertical +Hirose DF11 through hole, DF11-6DP-2DSA, 3 Pins per row (https://www.hirose.com/product/document?clcode=&productname=&series=DF11&documenttype=Catalog&lang=en&documentid=D31688_en), generated with kicad-footprint-generator +connector Hirose DF11 vertical +0 +6 +6 +Connector_Hirose +Hirose_DF11-8DP-2DSA_2x04_P2.00mm_Vertical +Hirose DF11 through hole, DF11-8DP-2DSA, 4 Pins per row (https://www.hirose.com/product/document?clcode=&productname=&series=DF11&documenttype=Catalog&lang=en&documentid=D31688_en), generated with kicad-footprint-generator +connector Hirose DF11 vertical +0 +8 +8 +Connector_Hirose +Hirose_DF11-10DP-2DSA_2x05_P2.00mm_Vertical +Hirose DF11 through hole, DF11-10DP-2DSA, 5 Pins per row (https://www.hirose.com/product/document?clcode=&productname=&series=DF11&documenttype=Catalog&lang=en&documentid=D31688_en), generated with kicad-footprint-generator +connector Hirose DF11 vertical +0 +10 +10 +Connector_Hirose +Hirose_DF11-12DP-2DSA_2x06_P2.00mm_Vertical +Hirose DF11 through hole, DF11-12DP-2DSA, 6 Pins per row (https://www.hirose.com/product/document?clcode=&productname=&series=DF11&documenttype=Catalog&lang=en&documentid=D31688_en), generated with kicad-footprint-generator +connector Hirose DF11 vertical +0 +12 +12 +Connector_Hirose +Hirose_DF11-14DP-2DSA_2x07_P2.00mm_Vertical +Hirose DF11 through hole, DF11-14DP-2DSA, 7 Pins per row (https://www.hirose.com/product/document?clcode=&productname=&series=DF11&documenttype=Catalog&lang=en&documentid=D31688_en), generated with kicad-footprint-generator +connector Hirose DF11 vertical +0 +14 +14 +Connector_Hirose +Hirose_DF11-16DP-2DSA_2x08_P2.00mm_Vertical +Hirose DF11 through hole, DF11-16DP-2DSA, 8 Pins per row (https://www.hirose.com/product/document?clcode=&productname=&series=DF11&documenttype=Catalog&lang=en&documentid=D31688_en), generated with kicad-footprint-generator +connector Hirose DF11 vertical +0 +16 +16 +Connector_Hirose +Hirose_DF11-18DP-2DSA_2x09_P2.00mm_Vertical +Hirose DF11 through hole, DF11-18DP-2DSA, 9 Pins per row (https://www.hirose.com/product/document?clcode=&productname=&series=DF11&documenttype=Catalog&lang=en&documentid=D31688_en), generated with kicad-footprint-generator +connector Hirose DF11 vertical +0 +18 +18 +Connector_Hirose +Hirose_DF11-20DP-2DSA_2x10_P2.00mm_Vertical +Hirose DF11 through hole, DF11-20DP-2DSA, 10 Pins per row (https://www.hirose.com/product/document?clcode=&productname=&series=DF11&documenttype=Catalog&lang=en&documentid=D31688_en), generated with kicad-footprint-generator +connector Hirose DF11 vertical +0 +20 +20 +Connector_Hirose +Hirose_DF11-22DP-2DSA_2x11_P2.00mm_Vertical +Hirose DF11 through hole, DF11-22DP-2DSA, 11 Pins per row (https://www.hirose.com/product/document?clcode=&productname=&series=DF11&documenttype=Catalog&lang=en&documentid=D31688_en), generated with kicad-footprint-generator +connector Hirose DF11 vertical +0 +22 +22 +Connector_Hirose +Hirose_DF11-24DP-2DSA_2x12_P2.00mm_Vertical +Hirose DF11 through hole, DF11-24DP-2DSA, 12 Pins per row (https://www.hirose.com/product/document?clcode=&productname=&series=DF11&documenttype=Catalog&lang=en&documentid=D31688_en), generated with kicad-footprint-generator +connector Hirose DF11 vertical +0 +24 +24 +Connector_Hirose +Hirose_DF11-26DP-2DSA_2x13_P2.00mm_Vertical +Hirose DF11 through hole, DF11-26DP-2DSA, 13 Pins per row (https://www.hirose.com/product/document?clcode=&productname=&series=DF11&documenttype=Catalog&lang=en&documentid=D31688_en), generated with kicad-footprint-generator +connector Hirose DF11 vertical +0 +26 +26 +Connector_Hirose +Hirose_DF11-28DP-2DSA_2x14_P2.00mm_Vertical +Hirose DF11 through hole, DF11-28DP-2DSA, 14 Pins per row (https://www.hirose.com/product/document?clcode=&productname=&series=DF11&documenttype=Catalog&lang=en&documentid=D31688_en), generated with kicad-footprint-generator +connector Hirose DF11 vertical +0 +28 +28 +Connector_Hirose +Hirose_DF11-30DP-2DSA_2x15_P2.00mm_Vertical +Hirose DF11 through hole, DF11-30DP-2DSA, 15 Pins per row (https://www.hirose.com/product/document?clcode=&productname=&series=DF11&documenttype=Catalog&lang=en&documentid=D31688_en), generated with kicad-footprint-generator +connector Hirose DF11 vertical +0 +30 +30 +Connector_Hirose +Hirose_DF11-32DP-2DSA_2x16_P2.00mm_Vertical +Hirose DF11 through hole, DF11-32DP-2DSA, 16 Pins per row (https://www.hirose.com/product/document?clcode=&productname=&series=DF11&documenttype=Catalog&lang=en&documentid=D31688_en), generated with kicad-footprint-generator +connector Hirose DF11 vertical +0 +32 +32 +Connector_Hirose +Hirose_DF12_DF12C3.0-10DS-0.5V_2x05_P0.50mm_Vertical +Hirose DF12C SMD, DF12C3.0-10DS-0.5V, 10 Pins per row (https://www.hirose.com/product/document?clcode=CL0537-0694-9-81&productname=DF12C(3.0)-50DS-0.5V(81)&series=DF12&documenttype=2DDrawing&lang=en&documentid=0000994748), generated with kicad-footprint-generator +connector Hirose DF12 vertical +0 +20 +10 +Connector_Hirose +Hirose_DF12_DF12C3.0-14DS-0.5V_2x07_P0.50mm_Vertical +Hirose DF12C SMD, DF12C3.0-14DS-0.5V, 14 Pins per row (https://www.hirose.com/product/document?clcode=CL0537-0694-9-81&productname=DF12C(3.0)-50DS-0.5V(81)&series=DF12&documenttype=2DDrawing&lang=en&documentid=0000994748), generated with kicad-footprint-generator +connector Hirose DF12 vertical +0 +28 +14 +Connector_Hirose +Hirose_DF12_DF12C3.0-20DS-0.5V_2x10_P0.50mm_Vertical +Hirose DF12C SMD, DF12C3.0-20DS-0.5V, 20 Pins per row (https://www.hirose.com/product/document?clcode=CL0537-0694-9-81&productname=DF12C(3.0)-50DS-0.5V(81)&series=DF12&documenttype=2DDrawing&lang=en&documentid=0000994748), generated with kicad-footprint-generator +connector Hirose DF12 vertical +0 +40 +20 +Connector_Hirose +Hirose_DF12_DF12C3.0-30DS-0.5V_2x15_P0.50mm_Vertical +Hirose DF12C SMD, DF12C3.0-30DS-0.5V, 30 Pins per row (https://www.hirose.com/product/document?clcode=CL0537-0694-9-81&productname=DF12C(3.0)-50DS-0.5V(81)&series=DF12&documenttype=2DDrawing&lang=en&documentid=0000994748), generated with kicad-footprint-generator +connector Hirose DF12 vertical +0 +60 +30 +Connector_Hirose +Hirose_DF12_DF12C3.0-32DS-0.5V_2x16_P0.50mm_Vertical +Hirose DF12C SMD, DF12C3.0-32DS-0.5V, 32 Pins per row (https://www.hirose.com/product/document?clcode=CL0537-0694-9-81&productname=DF12C(3.0)-50DS-0.5V(81)&series=DF12&documenttype=2DDrawing&lang=en&documentid=0000994748), generated with kicad-footprint-generator +connector Hirose DF12 vertical +0 +64 +32 +Connector_Hirose +Hirose_DF12_DF12C3.0-36DS-0.5V_2x18_P0.50mm_Vertical +Hirose DF12C SMD, DF12C3.0-36DS-0.5V, 36 Pins per row (https://www.hirose.com/product/document?clcode=CL0537-0694-9-81&productname=DF12C(3.0)-50DS-0.5V(81)&series=DF12&documenttype=2DDrawing&lang=en&documentid=0000994748), generated with kicad-footprint-generator +connector Hirose DF12 vertical +0 +72 +36 +Connector_Hirose +Hirose_DF12_DF12C3.0-40DS-0.5V_2x20_P0.50mm_Vertical +Hirose DF12C SMD, DF12C3.0-40DS-0.5V, 40 Pins per row (https://www.hirose.com/product/document?clcode=CL0537-0694-9-81&productname=DF12C(3.0)-50DS-0.5V(81)&series=DF12&documenttype=2DDrawing&lang=en&documentid=0000994748), generated with kicad-footprint-generator +connector Hirose DF12 vertical +0 +80 +40 +Connector_Hirose +Hirose_DF12_DF12C3.0-50DS-0.5V_2x25_P0.50mm_Vertical +Hirose DF12C SMD, DF12C3.0-50DS-0.5V, 50 Pins per row (https://www.hirose.com/product/document?clcode=CL0537-0694-9-81&productname=DF12C(3.0)-50DS-0.5V(81)&series=DF12&documenttype=2DDrawing&lang=en&documentid=0000994748), generated with kicad-footprint-generator +connector Hirose DF12 vertical +0 +100 +50 +Connector_Hirose +Hirose_DF12_DF12C3.0-60DS-0.5V_2x30_P0.50mm_Vertical +Hirose DF12C SMD, DF12C3.0-60DS-0.5V, 60 Pins per row (https://www.hirose.com/product/document?clcode=CL0537-0694-9-81&productname=DF12C(3.0)-50DS-0.5V(81)&series=DF12&documenttype=2DDrawing&lang=en&documentid=0000994748), generated with kicad-footprint-generator +connector Hirose DF12 vertical +0 +120 +60 +Connector_Hirose +Hirose_DF12_DF12E3.0-10DP-0.5V_2x05_P0.50mm_Vertical +Hirose DF12E SMD, DF12E3.0-10DP-0.5V, 10 Pins per row (https://www.hirose.com/product/document?clcode=CL0537-0834-6-81&productname=DF12E(3.0)-50DP-0.5V(81)&series=DF12&documenttype=2DDrawing&lang=en&documentid=0000992393), generated with kicad-footprint-generator +connector Hirose DF12 vertical +0 +20 +10 +Connector_Hirose +Hirose_DF12_DF12E3.0-14DP-0.5V_2x07_P0.50mm_Vertical +Hirose DF12E SMD, DF12E3.0-14DP-0.5V, 14 Pins per row (https://www.hirose.com/product/document?clcode=CL0537-0834-6-81&productname=DF12E(3.0)-50DP-0.5V(81)&series=DF12&documenttype=2DDrawing&lang=en&documentid=0000992393), generated with kicad-footprint-generator +connector Hirose DF12 vertical +0 +28 +14 +Connector_Hirose +Hirose_DF12_DF12E3.0-20DP-0.5V_2x10_P0.50mm_Vertical +Hirose DF12E SMD, DF12E3.0-20DP-0.5V, 20 Pins per row (https://www.hirose.com/product/document?clcode=CL0537-0834-6-81&productname=DF12E(3.0)-50DP-0.5V(81)&series=DF12&documenttype=2DDrawing&lang=en&documentid=0000992393), generated with kicad-footprint-generator +connector Hirose DF12 vertical +0 +40 +20 +Connector_Hirose +Hirose_DF12_DF12E3.0-30DP-0.5V_2x15_P0.50mm_Vertical +Hirose DF12E SMD, DF12E3.0-30DP-0.5V, 30 Pins per row (https://www.hirose.com/product/document?clcode=CL0537-0834-6-81&productname=DF12E(3.0)-50DP-0.5V(81)&series=DF12&documenttype=2DDrawing&lang=en&documentid=0000992393), generated with kicad-footprint-generator +connector Hirose DF12 vertical +0 +60 +30 +Connector_Hirose +Hirose_DF12_DF12E3.0-32DP-0.5V_2x16_P0.50mm_Vertical +Hirose DF12E SMD, DF12E3.0-32DP-0.5V, 32 Pins per row (https://www.hirose.com/product/document?clcode=CL0537-0834-6-81&productname=DF12E(3.0)-50DP-0.5V(81)&series=DF12&documenttype=2DDrawing&lang=en&documentid=0000992393), generated with kicad-footprint-generator +connector Hirose DF12 vertical +0 +64 +32 +Connector_Hirose +Hirose_DF12_DF12E3.0-36DP-0.5V_2x18_P0.50mm_Vertical +Hirose DF12E SMD, DF12E3.0-36DP-0.5V, 36 Pins per row (https://www.hirose.com/product/document?clcode=CL0537-0834-6-81&productname=DF12E(3.0)-50DP-0.5V(81)&series=DF12&documenttype=2DDrawing&lang=en&documentid=0000992393), generated with kicad-footprint-generator +connector Hirose DF12 vertical +0 +72 +36 +Connector_Hirose +Hirose_DF12_DF12E3.0-40DP-0.5V_2x20_P0.50mm_Vertical +Hirose DF12E SMD, DF12E3.0-40DP-0.5V, 40 Pins per row (https://www.hirose.com/product/document?clcode=CL0537-0834-6-81&productname=DF12E(3.0)-50DP-0.5V(81)&series=DF12&documenttype=2DDrawing&lang=en&documentid=0000992393), generated with kicad-footprint-generator +connector Hirose DF12 vertical +0 +80 +40 +Connector_Hirose +Hirose_DF12_DF12E3.0-50DP-0.5V_2x25_P0.50mm_Vertical +Hirose DF12E SMD, DF12E3.0-50DP-0.5V, 50 Pins per row (https://www.hirose.com/product/document?clcode=CL0537-0834-6-81&productname=DF12E(3.0)-50DP-0.5V(81)&series=DF12&documenttype=2DDrawing&lang=en&documentid=0000992393), generated with kicad-footprint-generator +connector Hirose DF12 vertical +0 +100 +50 +Connector_Hirose +Hirose_DF12_DF12E3.0-60DP-0.5V_2x30_P0.50mm_Vertical +Hirose DF12E SMD, DF12E3.0-60DP-0.5V, 60 Pins per row (https://www.hirose.com/product/document?clcode=CL0537-0834-6-81&productname=DF12E(3.0)-50DP-0.5V(81)&series=DF12&documenttype=2DDrawing&lang=en&documentid=0000992393), generated with kicad-footprint-generator +connector Hirose DF12 vertical +0 +120 +60 +Connector_Hirose +Hirose_DF12_DF12E3.0-80DP-0.5V_2x40_P0.50mm_Vertical +Hirose DF12E SMD, DF12E3.0-80DP-0.5V, 80 Pins per row (https://www.hirose.com/product/document?clcode=CL0537-0834-6-81&productname=DF12E(3.0)-50DP-0.5V(81)&series=DF12&documenttype=2DDrawing&lang=en&documentid=0000992393), generated with kicad-footprint-generator +connector Hirose DF12 vertical +0 +160 +80 +Connector_Hirose +Hirose_DF13-02P-1.25DSA_1x02_P1.25mm_Vertical +Hirose DF13 through hole, DF13-02P-1.25DSA, 2 Pins per row (https://www.hirose.com/product/en/products/DF13/DF13-2P-1.25DSA%2850%29/), generated with kicad-footprint-generator +connector Hirose DF13 vertical +0 +2 +2 +Connector_Hirose +Hirose_DF13-02P-1.25DS_1x02_P1.25mm_Horizontal +Hirose DF13 through hole, DF13-02P-1.25DS, 2 Pins per row (https://www.hirose.com/product/en/products/DF13/DF13-4P-1.25DS%2820%29/), generated with kicad-footprint-generator +connector Hirose DF13 horizontal +0 +2 +2 +Connector_Hirose +Hirose_DF13-03P-1.25DSA_1x03_P1.25mm_Vertical +Hirose DF13 through hole, DF13-03P-1.25DSA, 3 Pins per row (https://www.hirose.com/product/en/products/DF13/DF13-2P-1.25DSA%2850%29/), generated with kicad-footprint-generator +connector Hirose DF13 vertical +0 +3 +3 +Connector_Hirose +Hirose_DF13-03P-1.25DS_1x03_P1.25mm_Horizontal +Hirose DF13 through hole, DF13-03P-1.25DS, 3 Pins per row (https://www.hirose.com/product/en/products/DF13/DF13-4P-1.25DS%2820%29/), generated with kicad-footprint-generator +connector Hirose DF13 horizontal +0 +3 +3 +Connector_Hirose +Hirose_DF13-04P-1.25DSA_1x04_P1.25mm_Vertical +Hirose DF13 through hole, DF13-04P-1.25DSA, 4 Pins per row (https://www.hirose.com/product/en/products/DF13/DF13-2P-1.25DSA%2850%29/), generated with kicad-footprint-generator +connector Hirose DF13 vertical +0 +4 +4 +Connector_Hirose +Hirose_DF13-04P-1.25DS_1x04_P1.25mm_Horizontal +Hirose DF13 through hole, DF13-04P-1.25DS, 4 Pins per row (https://www.hirose.com/product/en/products/DF13/DF13-4P-1.25DS%2820%29/), generated with kicad-footprint-generator +connector Hirose DF13 horizontal +0 +4 +4 +Connector_Hirose +Hirose_DF13-05P-1.25DSA_1x05_P1.25mm_Vertical +Hirose DF13 through hole, DF13-05P-1.25DSA, 5 Pins per row (https://www.hirose.com/product/en/products/DF13/DF13-2P-1.25DSA%2850%29/), generated with kicad-footprint-generator +connector Hirose DF13 vertical +0 +5 +5 +Connector_Hirose +Hirose_DF13-05P-1.25DS_1x05_P1.25mm_Horizontal +Hirose DF13 through hole, DF13-05P-1.25DS, 5 Pins per row (https://www.hirose.com/product/en/products/DF13/DF13-4P-1.25DS%2820%29/), generated with kicad-footprint-generator +connector Hirose DF13 horizontal +0 +5 +5 +Connector_Hirose +Hirose_DF13-06P-1.25DSA_1x06_P1.25mm_Vertical +Hirose DF13 through hole, DF13-06P-1.25DSA, 6 Pins per row (https://www.hirose.com/product/en/products/DF13/DF13-2P-1.25DSA%2850%29/), generated with kicad-footprint-generator +connector Hirose DF13 vertical +0 +6 +6 +Connector_Hirose +Hirose_DF13-06P-1.25DS_1x06_P1.25mm_Horizontal +Hirose DF13 through hole, DF13-06P-1.25DS, 6 Pins per row (https://www.hirose.com/product/en/products/DF13/DF13-4P-1.25DS%2820%29/), generated with kicad-footprint-generator +connector Hirose DF13 horizontal +0 +6 +6 +Connector_Hirose +Hirose_DF13-07P-1.25DSA_1x07_P1.25mm_Vertical +Hirose DF13 through hole, DF13-07P-1.25DSA, 7 Pins per row (https://www.hirose.com/product/en/products/DF13/DF13-2P-1.25DSA%2850%29/), generated with kicad-footprint-generator +connector Hirose DF13 vertical +0 +7 +7 +Connector_Hirose +Hirose_DF13-07P-1.25DS_1x07_P1.25mm_Horizontal +Hirose DF13 through hole, DF13-07P-1.25DS, 7 Pins per row (https://www.hirose.com/product/en/products/DF13/DF13-4P-1.25DS%2820%29/), generated with kicad-footprint-generator +connector Hirose DF13 horizontal +0 +7 +7 +Connector_Hirose +Hirose_DF13-08P-1.25DSA_1x08_P1.25mm_Vertical +Hirose DF13 through hole, DF13-08P-1.25DSA, 8 Pins per row (https://www.hirose.com/product/en/products/DF13/DF13-2P-1.25DSA%2850%29/), generated with kicad-footprint-generator +connector Hirose DF13 vertical +0 +8 +8 +Connector_Hirose +Hirose_DF13-08P-1.25DS_1x08_P1.25mm_Horizontal +Hirose DF13 through hole, DF13-08P-1.25DS, 8 Pins per row (https://www.hirose.com/product/en/products/DF13/DF13-4P-1.25DS%2820%29/), generated with kicad-footprint-generator +connector Hirose DF13 horizontal +0 +8 +8 +Connector_Hirose +Hirose_DF13-09P-1.25DSA_1x09_P1.25mm_Vertical +Hirose DF13 through hole, DF13-09P-1.25DSA, 9 Pins per row (https://www.hirose.com/product/en/products/DF13/DF13-2P-1.25DSA%2850%29/), generated with kicad-footprint-generator +connector Hirose DF13 vertical +0 +9 +9 +Connector_Hirose +Hirose_DF13-09P-1.25DS_1x09_P1.25mm_Horizontal +Hirose DF13 through hole, DF13-09P-1.25DS, 9 Pins per row (https://www.hirose.com/product/en/products/DF13/DF13-4P-1.25DS%2820%29/), generated with kicad-footprint-generator +connector Hirose DF13 horizontal +0 +9 +9 +Connector_Hirose +Hirose_DF13-10P-1.25DSA_1x10_P1.25mm_Vertical +Hirose DF13 through hole, DF13-10P-1.25DSA, 10 Pins per row (https://www.hirose.com/product/en/products/DF13/DF13-2P-1.25DSA%2850%29/), generated with kicad-footprint-generator +connector Hirose DF13 vertical +0 +10 +10 +Connector_Hirose +Hirose_DF13-10P-1.25DS_1x10_P1.25mm_Horizontal +Hirose DF13 through hole, DF13-10P-1.25DS, 10 Pins per row (https://www.hirose.com/product/en/products/DF13/DF13-4P-1.25DS%2820%29/), generated with kicad-footprint-generator +connector Hirose DF13 horizontal +0 +10 +10 +Connector_Hirose +Hirose_DF13-11P-1.25DSA_1x11_P1.25mm_Vertical +Hirose DF13 through hole, DF13-11P-1.25DSA, 11 Pins per row (https://www.hirose.com/product/en/products/DF13/DF13-2P-1.25DSA%2850%29/), generated with kicad-footprint-generator +connector Hirose DF13 vertical +0 +11 +11 +Connector_Hirose +Hirose_DF13-11P-1.25DS_1x11_P1.25mm_Horizontal +Hirose DF13 through hole, DF13-11P-1.25DS, 11 Pins per row (https://www.hirose.com/product/en/products/DF13/DF13-4P-1.25DS%2820%29/), generated with kicad-footprint-generator +connector Hirose DF13 horizontal +0 +11 +11 +Connector_Hirose +Hirose_DF13-12P-1.25DSA_1x12_P1.25mm_Vertical +Hirose DF13 through hole, DF13-12P-1.25DSA, 12 Pins per row (https://www.hirose.com/product/en/products/DF13/DF13-2P-1.25DSA%2850%29/), generated with kicad-footprint-generator +connector Hirose DF13 vertical +0 +12 +12 +Connector_Hirose +Hirose_DF13-12P-1.25DS_1x12_P1.25mm_Horizontal +Hirose DF13 through hole, DF13-12P-1.25DS, 12 Pins per row (https://www.hirose.com/product/en/products/DF13/DF13-4P-1.25DS%2820%29/), generated with kicad-footprint-generator +connector Hirose DF13 horizontal +0 +12 +12 +Connector_Hirose +Hirose_DF13-13P-1.25DSA_1x13_P1.25mm_Vertical +Hirose DF13 through hole, DF13-13P-1.25DSA, 13 Pins per row (https://www.hirose.com/product/en/products/DF13/DF13-2P-1.25DSA%2850%29/), generated with kicad-footprint-generator +connector Hirose DF13 vertical +0 +13 +13 +Connector_Hirose +Hirose_DF13-14P-1.25DSA_1x14_P1.25mm_Vertical +Hirose DF13 through hole, DF13-14P-1.25DSA, 14 Pins per row (https://www.hirose.com/product/en/products/DF13/DF13-2P-1.25DSA%2850%29/), generated with kicad-footprint-generator +connector Hirose DF13 vertical +0 +14 +14 +Connector_Hirose +Hirose_DF13-14P-1.25DS_1x14_P1.25mm_Horizontal +Hirose DF13 through hole, DF13-14P-1.25DS, 14 Pins per row (https://www.hirose.com/product/en/products/DF13/DF13-4P-1.25DS%2820%29/), generated with kicad-footprint-generator +connector Hirose DF13 horizontal +0 +14 +14 +Connector_Hirose +Hirose_DF13-15P-1.25DSA_1x15_P1.25mm_Vertical +Hirose DF13 through hole, DF13-15P-1.25DSA, 15 Pins per row (https://www.hirose.com/product/en/products/DF13/DF13-2P-1.25DSA%2850%29/), generated with kicad-footprint-generator +connector Hirose DF13 vertical +0 +15 +15 +Connector_Hirose +Hirose_DF13-15P-1.25DS_1x15_P1.25mm_Horizontal +Hirose DF13 through hole, DF13-15P-1.25DS, 15 Pins per row (https://www.hirose.com/product/en/products/DF13/DF13-4P-1.25DS%2820%29/), generated with kicad-footprint-generator +connector Hirose DF13 horizontal +0 +15 +15 +Connector_Hirose +Hirose_DF13C_CL535-0402-2-51_1x02-1MP_P1.25mm_Vertical +Hirose DF13C SMD, CL535-0402-2-51, 2 Pins per row (https://www.hirose.com/product/en/products/DF13/DF13C-10P-1.25V%2851%29/), generated with kicad-footprint-generator +connector Hirose DF13C vertical +0 +4 +3 +Connector_Hirose +Hirose_DF13C_CL535-0403-5-51_1x03-1MP_P1.25mm_Vertical +Hirose DF13C SMD, CL535-0403-5-51, 3 Pins per row (https://www.hirose.com/product/en/products/DF13/DF13C-10P-1.25V%2851%29/), generated with kicad-footprint-generator +connector Hirose DF13C vertical +0 +5 +4 +Connector_Hirose +Hirose_DF13C_CL535-0404-8-51_1x04-1MP_P1.25mm_Vertical +Hirose DF13C SMD, CL535-0404-8-51, 4 Pins per row (https://www.hirose.com/product/en/products/DF13/DF13C-10P-1.25V%2851%29/), generated with kicad-footprint-generator +connector Hirose DF13C vertical +0 +6 +5 +Connector_Hirose +Hirose_DF13C_CL535-0405-0-51_1x05-1MP_P1.25mm_Vertical +Hirose DF13C SMD, CL535-0405-0-51, 5 Pins per row (https://www.hirose.com/product/en/products/DF13/DF13C-10P-1.25V%2851%29/), generated with kicad-footprint-generator +connector Hirose DF13C vertical +0 +7 +6 +Connector_Hirose +Hirose_DF13C_CL535-0406-3-51_1x06-1MP_P1.25mm_Vertical +Hirose DF13C SMD, CL535-0406-3-51, 6 Pins per row (https://www.hirose.com/product/en/products/DF13/DF13C-10P-1.25V%2851%29/), generated with kicad-footprint-generator +connector Hirose DF13C vertical +0 +8 +7 +Connector_Hirose +Hirose_DF13C_CL535-0407-6-51_1x07-1MP_P1.25mm_Vertical +Hirose DF13C SMD, CL535-0407-6-51, 7 Pins per row (https://www.hirose.com/product/en/products/DF13/DF13C-10P-1.25V%2851%29/), generated with kicad-footprint-generator +connector Hirose DF13C vertical +0 +9 +8 +Connector_Hirose +Hirose_DF13C_CL535-0408-9-51_1x08-1MP_P1.25mm_Vertical +Hirose DF13C SMD, CL535-0408-9-51, 8 Pins per row (https://www.hirose.com/product/en/products/DF13/DF13C-10P-1.25V%2851%29/), generated with kicad-footprint-generator +connector Hirose DF13C vertical +0 +10 +9 +Connector_Hirose +Hirose_DF13C_CL535-0409-1-51_1x09-1MP_P1.25mm_Vertical +Hirose DF13C SMD, CL535-0409-1-51, 9 Pins per row (https://www.hirose.com/product/en/products/DF13/DF13C-10P-1.25V%2851%29/), generated with kicad-footprint-generator +connector Hirose DF13C vertical +0 +11 +10 +Connector_Hirose +Hirose_DF13C_CL535-0410-4-51_1x10-1MP_P1.25mm_Vertical +Hirose DF13C SMD, CL535-0410-4-51, 10 Pins per row (https://www.hirose.com/product/en/products/DF13/DF13C-10P-1.25V%2851%29/), generated with kicad-footprint-generator +connector Hirose DF13C vertical +0 +12 +11 +Connector_Hirose +Hirose_DF13C_CL535-0411-3-51_1x11-1MP_P1.25mm_Vertical +Hirose DF13C SMD, CL535-0411-3-51, 11 Pins per row (https://www.hirose.com/product/en/products/DF13/DF13C-10P-1.25V%2851%29/), generated with kicad-footprint-generator +connector Hirose DF13C vertical +0 +13 +12 +Connector_Hirose +Hirose_DF13C_CL535-0412-6-51_1x12-1MP_P1.25mm_Vertical +Hirose DF13C SMD, CL535-0412-6-51, 12 Pins per row (https://www.hirose.com/product/en/products/DF13/DF13C-10P-1.25V%2851%29/), generated with kicad-footprint-generator +connector Hirose DF13C vertical +0 +14 +13 +Connector_Hirose +Hirose_DF13C_CL535-0414-1-51_1x14-1MP_P1.25mm_Vertical +Hirose DF13C SMD, CL535-0414-1-51, 14 Pins per row (https://www.hirose.com/product/en/products/DF13/DF13C-10P-1.25V%2851%29/), generated with kicad-footprint-generator +connector Hirose DF13C vertical +0 +16 +15 +Connector_Hirose +Hirose_DF13C_CL535-0415-4-51_1x15-1MP_P1.25mm_Vertical +Hirose DF13C SMD, CL535-0415-4-51, 15 Pins per row (https://www.hirose.com/product/en/products/DF13/DF13C-10P-1.25V%2851%29/), generated with kicad-footprint-generator +connector Hirose DF13C vertical +0 +17 +16 +Connector_Hirose +Hirose_DF52-2S-0.8H_1x02-1MP_P0.80mm_Horizontal +Hirose series connector, DF52-2S-0.8H (https://www.hirose.com/product/en/products/DF52/DF52-3S-0.8H%2821%29/), generated with kicad-footprint-generator +connector Hirose top entry +0 +4 +3 +Connector_Hirose +Hirose_DF52-3S-0.8H_1x03-1MP_P0.80mm_Horizontal +Hirose series connector, DF52-3S-0.8H (https://www.hirose.com/product/en/products/DF52/DF52-3S-0.8H%2821%29/), generated with kicad-footprint-generator +connector Hirose top entry +0 +5 +4 +Connector_Hirose +Hirose_DF52-4S-0.8H_1x04-1MP_P0.80mm_Horizontal +Hirose series connector, DF52-4S-0.8H (https://www.hirose.com/product/en/products/DF52/DF52-3S-0.8H%2821%29/), generated with kicad-footprint-generator +connector Hirose top entry +0 +6 +5 +Connector_Hirose +Hirose_DF52-5S-0.8H_1x05-1MP_P0.80mm_Horizontal +Hirose series connector, DF52-5S-0.8H (https://www.hirose.com/product/en/products/DF52/DF52-3S-0.8H%2821%29/), generated with kicad-footprint-generator +connector Hirose top entry +0 +7 +6 +Connector_Hirose +Hirose_DF52-6S-0.8H_1x06-1MP_P0.80mm_Horizontal +Hirose series connector, DF52-6S-0.8H (https://www.hirose.com/product/en/products/DF52/DF52-3S-0.8H%2821%29/), generated with kicad-footprint-generator +connector Hirose top entry +0 +8 +7 +Connector_Hirose +Hirose_DF52-7S-0.8H_1x07-1MP_P0.80mm_Horizontal +Hirose series connector, DF52-7S-0.8H (https://www.hirose.com/product/en/products/DF52/DF52-3S-0.8H%2821%29/), generated with kicad-footprint-generator +connector Hirose top entry +0 +9 +8 +Connector_Hirose +Hirose_DF52-8S-0.8H_1x08-1MP_P0.80mm_Horizontal +Hirose series connector, DF52-8S-0.8H (https://www.hirose.com/product/en/products/DF52/DF52-3S-0.8H%2821%29/), generated with kicad-footprint-generator +connector Hirose top entry +0 +10 +9 +Connector_Hirose +Hirose_DF52-9S-0.8H_1x09-1MP_P0.80mm_Horizontal +Hirose series connector, DF52-9S-0.8H (https://www.hirose.com/product/en/products/DF52/DF52-3S-0.8H%2821%29/), generated with kicad-footprint-generator +connector Hirose top entry +0 +11 +10 +Connector_Hirose +Hirose_DF52-10S-0.8H_1x10-1MP_P0.80mm_Horizontal +Hirose series connector, DF52-10S-0.8H (https://www.hirose.com/product/en/products/DF52/DF52-3S-0.8H%2821%29/), generated with kicad-footprint-generator +connector Hirose top entry +0 +12 +11 +Connector_Hirose +Hirose_DF52-11S-0.8H_1x11-1MP_P0.80mm_Horizontal +Hirose series connector, DF52-11S-0.8H (https://www.hirose.com/product/en/products/DF52/DF52-3S-0.8H%2821%29/), generated with kicad-footprint-generator +connector Hirose top entry +0 +13 +12 +Connector_Hirose +Hirose_DF52-12S-0.8H_1x12-1MP_P0.80mm_Horizontal +Hirose series connector, DF52-12S-0.8H (https://www.hirose.com/product/en/products/DF52/DF52-3S-0.8H%2821%29/), generated with kicad-footprint-generator +connector Hirose top entry +0 +14 +13 +Connector_Hirose +Hirose_DF52-14S-0.8H_1x14-1MP_P0.80mm_Horizontal +Hirose series connector, DF52-14S-0.8H (https://www.hirose.com/product/en/products/DF52/DF52-3S-0.8H%2821%29/), generated with kicad-footprint-generator +connector Hirose top entry +0 +16 +15 +Connector_Hirose +Hirose_DF52-15S-0.8H_1x15-1MP_P0.80mm_Horizontal +Hirose series connector, DF52-15S-0.8H (https://www.hirose.com/product/en/products/DF52/DF52-3S-0.8H%2821%29/), generated with kicad-footprint-generator +connector Hirose top entry +0 +17 +16 +Connector_Hirose +Hirose_DF63-5P-3.96DSA_1x05_P3.96mm_Vertical +Hirose DF63 through hole, DF63-5P-3.96DSA, 5 Pins per row (https://www.hirose.com/product/en/products/DF63/), generated with kicad-footprint-generator +connector Hirose DF63 vertical +0 +5 +5 +Connector_Hirose +Hirose_DF63-6P-3.96DSA_1x06_P3.96mm_Vertical +Hirose DF63 through hole, DF63-6P-3.96DSA, 6 Pins per row (https://www.hirose.com/product/en/products/DF63/), generated with kicad-footprint-generator +connector Hirose DF63 vertical +0 +6 +6 +Connector_Hirose +Hirose_DF63M-1P-3.96DSA_1x01_P3.96mm_Vertical +Hirose DF63 through hole, DF63M-1P-3.96DSA, 1 Pins per row (https://www.hirose.com/product/en/products/DF63/), generated with kicad-footprint-generator +connector Hirose DF63 vertical +0 +1 +1 +Connector_Hirose +Hirose_DF63M-2P-3.96DSA_1x02_P3.96mm_Vertical +Hirose DF63 through hole, DF63M-2P-3.96DSA, 2 Pins per row (https://www.hirose.com/product/en/products/DF63/), generated with kicad-footprint-generator +connector Hirose DF63 vertical +0 +2 +2 +Connector_Hirose +Hirose_DF63M-3P-3.96DSA_1x03_P3.96mm_Vertical +Hirose DF63 through hole, DF63M-3P-3.96DSA, 3 Pins per row (https://www.hirose.com/product/en/products/DF63/), generated with kicad-footprint-generator +connector Hirose DF63 vertical +0 +3 +3 +Connector_Hirose +Hirose_DF63M-4P-3.96DSA_1x04_P3.96mm_Vertical +Hirose DF63 through hole, DF63M-4P-3.96DSA, 4 Pins per row (https://www.hirose.com/product/en/products/DF63/), generated with kicad-footprint-generator +connector Hirose DF63 vertical +0 +4 +4 +Connector_Hirose +Hirose_DF63R-1P-3.96DSA_1x01_P3.96mm_Vertical +Hirose DF63 through hole, DF63R-1P-3.96DSA, 1 Pins per row (https://www.hirose.com/product/en/products/DF63/), generated with kicad-footprint-generator +connector Hirose DF63 vertical +0 +1 +1 +Connector_Hirose +Hirose_DF63R-2P-3.96DSA_1x02_P3.96mm_Vertical +Hirose DF63 through hole, DF63R-2P-3.96DSA, 2 Pins per row (https://www.hirose.com/product/en/products/DF63/), generated with kicad-footprint-generator +connector Hirose DF63 vertical +0 +2 +2 +Connector_Hirose +Hirose_DF63R-3P-3.96DSA_1x03_P3.96mm_Vertical +Hirose DF63 through hole, DF63R-3P-3.96DSA, 3 Pins per row (https://www.hirose.com/product/en/products/DF63/), generated with kicad-footprint-generator +connector Hirose DF63 vertical +0 +3 +3 +Connector_Hirose +Hirose_DF63R-4P-3.96DSA_1x04_P3.96mm_Vertical +Hirose DF63 through hole, DF63R-4P-3.96DSA, 4 Pins per row (https://www.hirose.com/product/en/products/DF63/), generated with kicad-footprint-generator +connector Hirose DF63 vertical +0 +4 +4 +Connector_Hirose +Hirose_DF63R-5P-3.96DSA_1x05_P3.96mm_Vertical +Hirose DF63 through hole, DF63R-5P-3.96DSA, 5 Pins per row (https://www.hirose.com/product/en/products/DF63/), generated with kicad-footprint-generator +connector Hirose DF63 vertical +0 +5 +5 +Connector_IDC +IDC-Header_2x03_P2.54mm_Horizontal +Through hole IDC box header, 2x03, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole horizontal IDC box header THT 2x03 2.54mm double row +0 +6 +6 +Connector_IDC +IDC-Header_2x03_P2.54mm_Vertical +Through hole IDC box header, 2x03, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC box header THT 2x03 2.54mm double row +0 +6 +6 +Connector_IDC +IDC-Header_2x04_P2.54mm_Horizontal +Through hole IDC box header, 2x04, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole horizontal IDC box header THT 2x04 2.54mm double row +0 +8 +8 +Connector_IDC +IDC-Header_2x04_P2.54mm_Vertical +Through hole IDC box header, 2x04, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC box header THT 2x04 2.54mm double row +0 +8 +8 +Connector_IDC +IDC-Header_2x05-1MP_P2.54mm_Latch6.5mm_Vertical +Through hole IDC header, 2x05, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 6.5mm latches, mounting holes, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x05 2.54mm double row +0 +12 +11 +Connector_IDC +IDC-Header_2x05-1MP_P2.54mm_Latch9.5mm_Vertical +Through hole IDC header, 2x05, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 9.5mm latches, mounting holes, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x05 2.54mm double row +0 +12 +11 +Connector_IDC +IDC-Header_2x05-1MP_P2.54mm_Latch12.0mm_Vertical +Through hole IDC header, 2x05, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 12.0mm latches, mounting holes, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x05 2.54mm double row +0 +12 +11 +Connector_IDC +IDC-Header_2x05-1MP_P2.54mm_Latch_Horizontal +Through hole IDC header, 2x05, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows latches, mounting holes, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole horizontal IDC header THT 2x05 2.54mm double row +0 +12 +11 +Connector_IDC +IDC-Header_2x05-1MP_P2.54mm_Latch_Vertical +Through hole IDC header, 2x05, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows latches, mounting holes, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x05 2.54mm double row +0 +12 +11 +Connector_IDC +IDC-Header_2x05_P2.54mm_Horizontal +Through hole IDC box header, 2x05, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole horizontal IDC box header THT 2x05 2.54mm double row +0 +10 +10 +Connector_IDC +IDC-Header_2x05_P2.54mm_Latch6.5mm_Vertical +Through hole IDC header, 2x05, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 6.5mm latches, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x05 2.54mm double row +0 +10 +10 +Connector_IDC +IDC-Header_2x05_P2.54mm_Latch9.5mm_Vertical +Through hole IDC header, 2x05, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 9.5mm latches, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x05 2.54mm double row +0 +10 +10 +Connector_IDC +IDC-Header_2x05_P2.54mm_Latch12.0mm_Vertical +Through hole IDC header, 2x05, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 12.0mm latches, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x05 2.54mm double row +0 +10 +10 +Connector_IDC +IDC-Header_2x05_P2.54mm_Latch_Horizontal +Through hole IDC header, 2x05, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows latches, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole horizontal IDC header THT 2x05 2.54mm double row +0 +10 +10 +Connector_IDC +IDC-Header_2x05_P2.54mm_Latch_Vertical +Through hole IDC header, 2x05, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows latches, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x05 2.54mm double row +0 +10 +10 +Connector_IDC +IDC-Header_2x05_P2.54mm_Vertical +Through hole IDC box header, 2x05, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC box header THT 2x05 2.54mm double row +0 +10 +10 +Connector_IDC +IDC-Header_2x06-1MP_P2.54mm_Latch6.5mm_Vertical +Through hole IDC header, 2x06, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 6.5mm latches, mounting holes, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x06 2.54mm double row +0 +14 +13 +Connector_IDC +IDC-Header_2x06-1MP_P2.54mm_Latch9.5mm_Vertical +Through hole IDC header, 2x06, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 9.5mm latches, mounting holes, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x06 2.54mm double row +0 +14 +13 +Connector_IDC +IDC-Header_2x06-1MP_P2.54mm_Latch12.0mm_Vertical +Through hole IDC header, 2x06, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 12.0mm latches, mounting holes, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x06 2.54mm double row +0 +14 +13 +Connector_IDC +IDC-Header_2x06-1MP_P2.54mm_Latch_Horizontal +Through hole IDC header, 2x06, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows latches, mounting holes, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole horizontal IDC header THT 2x06 2.54mm double row +0 +14 +13 +Connector_IDC +IDC-Header_2x06-1MP_P2.54mm_Latch_Vertical +Through hole IDC header, 2x06, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows latches, mounting holes, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x06 2.54mm double row +0 +14 +13 +Connector_IDC +IDC-Header_2x06_P2.54mm_Horizontal +Through hole IDC box header, 2x06, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole horizontal IDC box header THT 2x06 2.54mm double row +0 +12 +12 +Connector_IDC +IDC-Header_2x06_P2.54mm_Latch6.5mm_Vertical +Through hole IDC header, 2x06, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 6.5mm latches, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x06 2.54mm double row +0 +12 +12 +Connector_IDC +IDC-Header_2x06_P2.54mm_Latch9.5mm_Vertical +Through hole IDC header, 2x06, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 9.5mm latches, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x06 2.54mm double row +0 +12 +12 +Connector_IDC +IDC-Header_2x06_P2.54mm_Latch12.0mm_Vertical +Through hole IDC header, 2x06, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 12.0mm latches, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x06 2.54mm double row +0 +12 +12 +Connector_IDC +IDC-Header_2x06_P2.54mm_Latch_Horizontal +Through hole IDC header, 2x06, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows latches, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole horizontal IDC header THT 2x06 2.54mm double row +0 +12 +12 +Connector_IDC +IDC-Header_2x06_P2.54mm_Latch_Vertical +Through hole IDC header, 2x06, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows latches, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x06 2.54mm double row +0 +12 +12 +Connector_IDC +IDC-Header_2x06_P2.54mm_Vertical +Through hole IDC box header, 2x06, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC box header THT 2x06 2.54mm double row +0 +12 +12 +Connector_IDC +IDC-Header_2x07-1MP_P2.54mm_Latch6.5mm_Vertical +Through hole IDC header, 2x07, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 6.5mm latches, mounting holes, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x07 2.54mm double row +0 +16 +15 +Connector_IDC +IDC-Header_2x07-1MP_P2.54mm_Latch9.5mm_Vertical +Through hole IDC header, 2x07, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 9.5mm latches, mounting holes, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x07 2.54mm double row +0 +16 +15 +Connector_IDC +IDC-Header_2x07-1MP_P2.54mm_Latch12.0mm_Vertical +Through hole IDC header, 2x07, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 12.0mm latches, mounting holes, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x07 2.54mm double row +0 +16 +15 +Connector_IDC +IDC-Header_2x07-1MP_P2.54mm_Latch_Horizontal +Through hole IDC header, 2x07, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows latches, mounting holes, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole horizontal IDC header THT 2x07 2.54mm double row +0 +16 +15 +Connector_IDC +IDC-Header_2x07-1MP_P2.54mm_Latch_Vertical +Through hole IDC header, 2x07, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows latches, mounting holes, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x07 2.54mm double row +0 +16 +15 +Connector_IDC +IDC-Header_2x07_P2.54mm_Horizontal +Through hole IDC box header, 2x07, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole horizontal IDC box header THT 2x07 2.54mm double row +0 +14 +14 +Connector_IDC +IDC-Header_2x07_P2.54mm_Horizontal_Lock +Connector IDC Locked, 10 contacts, compatible header: PANCON HE10 (Series 50, (https://www.reboul.fr/storage/00003af6.pdf) +connector idc locked +0 +16 +14 +Connector_IDC +IDC-Header_2x07_P2.54mm_Latch6.5mm_Vertical +Through hole IDC header, 2x07, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 6.5mm latches, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x07 2.54mm double row +0 +14 +14 +Connector_IDC +IDC-Header_2x07_P2.54mm_Latch9.5mm_Vertical +Through hole IDC header, 2x07, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 9.5mm latches, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x07 2.54mm double row +0 +14 +14 +Connector_IDC +IDC-Header_2x07_P2.54mm_Latch12.0mm_Vertical +Through hole IDC header, 2x07, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 12.0mm latches, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x07 2.54mm double row +0 +14 +14 +Connector_IDC +IDC-Header_2x07_P2.54mm_Latch_Horizontal +Through hole IDC header, 2x07, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows latches, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole horizontal IDC header THT 2x07 2.54mm double row +0 +14 +14 +Connector_IDC +IDC-Header_2x07_P2.54mm_Latch_Vertical +Through hole IDC header, 2x07, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows latches, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x07 2.54mm double row +0 +14 +14 +Connector_IDC +IDC-Header_2x07_P2.54mm_Vertical +Through hole IDC box header, 2x07, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC box header THT 2x07 2.54mm double row +0 +14 +14 +Connector_IDC +IDC-Header_2x08-1MP_P2.54mm_Latch6.5mm_Vertical +Through hole IDC header, 2x08, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 6.5mm latches, mounting holes, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x08 2.54mm double row +0 +18 +17 +Connector_IDC +IDC-Header_2x08-1MP_P2.54mm_Latch9.5mm_Vertical +Through hole IDC header, 2x08, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 9.5mm latches, mounting holes, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x08 2.54mm double row +0 +18 +17 +Connector_IDC +IDC-Header_2x08-1MP_P2.54mm_Latch12.0mm_Vertical +Through hole IDC header, 2x08, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 12.0mm latches, mounting holes, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x08 2.54mm double row +0 +18 +17 +Connector_IDC +IDC-Header_2x08-1MP_P2.54mm_Latch_Horizontal +Through hole IDC header, 2x08, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows latches, mounting holes, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole horizontal IDC header THT 2x08 2.54mm double row +0 +18 +17 +Connector_IDC +IDC-Header_2x08-1MP_P2.54mm_Latch_Vertical +Through hole IDC header, 2x08, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows latches, mounting holes, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x08 2.54mm double row +0 +18 +17 +Connector_IDC +IDC-Header_2x08_P2.54mm_Horizontal +Through hole IDC box header, 2x08, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole horizontal IDC box header THT 2x08 2.54mm double row +0 +16 +16 +Connector_IDC +IDC-Header_2x08_P2.54mm_Latch6.5mm_Vertical +Through hole IDC header, 2x08, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 6.5mm latches, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x08 2.54mm double row +0 +16 +16 +Connector_IDC +IDC-Header_2x08_P2.54mm_Latch9.5mm_Vertical +Through hole IDC header, 2x08, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 9.5mm latches, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x08 2.54mm double row +0 +16 +16 +Connector_IDC +IDC-Header_2x08_P2.54mm_Latch12.0mm_Vertical +Through hole IDC header, 2x08, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 12.0mm latches, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x08 2.54mm double row +0 +16 +16 +Connector_IDC +IDC-Header_2x08_P2.54mm_Latch_Horizontal +Through hole IDC header, 2x08, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows latches, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole horizontal IDC header THT 2x08 2.54mm double row +0 +16 +16 +Connector_IDC +IDC-Header_2x08_P2.54mm_Latch_Vertical +Through hole IDC header, 2x08, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows latches, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x08 2.54mm double row +0 +16 +16 +Connector_IDC +IDC-Header_2x08_P2.54mm_Vertical +Through hole IDC box header, 2x08, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC box header THT 2x08 2.54mm double row +0 +16 +16 +Connector_IDC +IDC-Header_2x10-1MP_P2.54mm_Latch6.5mm_Vertical +Through hole IDC header, 2x10, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 6.5mm latches, mounting holes, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x10 2.54mm double row +0 +22 +21 +Connector_IDC +IDC-Header_2x10-1MP_P2.54mm_Latch9.5mm_Vertical +Through hole IDC header, 2x10, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 9.5mm latches, mounting holes, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x10 2.54mm double row +0 +22 +21 +Connector_IDC +IDC-Header_2x10-1MP_P2.54mm_Latch12.0mm_Vertical +Through hole IDC header, 2x10, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 12.0mm latches, mounting holes, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x10 2.54mm double row +0 +22 +21 +Connector_IDC +IDC-Header_2x10-1MP_P2.54mm_Latch_Horizontal +Through hole IDC header, 2x10, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows latches, mounting holes, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole horizontal IDC header THT 2x10 2.54mm double row +0 +22 +21 +Connector_IDC +IDC-Header_2x10-1MP_P2.54mm_Latch_Vertical +Through hole IDC header, 2x10, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows latches, mounting holes, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x10 2.54mm double row +0 +22 +21 +Connector_IDC +IDC-Header_2x10_P2.54mm_Horizontal +Through hole IDC box header, 2x10, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole horizontal IDC box header THT 2x10 2.54mm double row +0 +20 +20 +Connector_IDC +IDC-Header_2x10_P2.54mm_Latch6.5mm_Vertical +Through hole IDC header, 2x10, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 6.5mm latches, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x10 2.54mm double row +0 +20 +20 +Connector_IDC +IDC-Header_2x10_P2.54mm_Latch9.5mm_Vertical +Through hole IDC header, 2x10, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 9.5mm latches, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x10 2.54mm double row +0 +20 +20 +Connector_IDC +IDC-Header_2x10_P2.54mm_Latch12.0mm_Vertical +Through hole IDC header, 2x10, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 12.0mm latches, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x10 2.54mm double row +0 +20 +20 +Connector_IDC +IDC-Header_2x10_P2.54mm_Latch_Horizontal +Through hole IDC header, 2x10, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows latches, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole horizontal IDC header THT 2x10 2.54mm double row +0 +20 +20 +Connector_IDC +IDC-Header_2x10_P2.54mm_Latch_Vertical +Through hole IDC header, 2x10, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows latches, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x10 2.54mm double row +0 +20 +20 +Connector_IDC +IDC-Header_2x10_P2.54mm_Vertical +Through hole IDC box header, 2x10, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC box header THT 2x10 2.54mm double row +0 +20 +20 +Connector_IDC +IDC-Header_2x12-1MP_P2.54mm_Latch6.5mm_Vertical +Through hole IDC header, 2x12, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 6.5mm latches, mounting holes, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x12 2.54mm double row +0 +26 +25 +Connector_IDC +IDC-Header_2x12-1MP_P2.54mm_Latch9.5mm_Vertical +Through hole IDC header, 2x12, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 9.5mm latches, mounting holes, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x12 2.54mm double row +0 +26 +25 +Connector_IDC +IDC-Header_2x12-1MP_P2.54mm_Latch12.0mm_Vertical +Through hole IDC header, 2x12, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 12.0mm latches, mounting holes, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x12 2.54mm double row +0 +26 +25 +Connector_IDC +IDC-Header_2x12-1MP_P2.54mm_Latch_Horizontal +Through hole IDC header, 2x12, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows latches, mounting holes, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole horizontal IDC header THT 2x12 2.54mm double row +0 +26 +25 +Connector_IDC +IDC-Header_2x12-1MP_P2.54mm_Latch_Vertical +Through hole IDC header, 2x12, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows latches, mounting holes, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x12 2.54mm double row +0 +26 +25 +Connector_IDC +IDC-Header_2x12_P2.54mm_Horizontal +Through hole IDC box header, 2x12, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole horizontal IDC box header THT 2x12 2.54mm double row +0 +24 +24 +Connector_IDC +IDC-Header_2x12_P2.54mm_Latch6.5mm_Vertical +Through hole IDC header, 2x12, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 6.5mm latches, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x12 2.54mm double row +0 +24 +24 +Connector_IDC +IDC-Header_2x12_P2.54mm_Latch9.5mm_Vertical +Through hole IDC header, 2x12, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 9.5mm latches, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x12 2.54mm double row +0 +24 +24 +Connector_IDC +IDC-Header_2x12_P2.54mm_Latch12.0mm_Vertical +Through hole IDC header, 2x12, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 12.0mm latches, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x12 2.54mm double row +0 +24 +24 +Connector_IDC +IDC-Header_2x12_P2.54mm_Latch_Horizontal +Through hole IDC header, 2x12, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows latches, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole horizontal IDC header THT 2x12 2.54mm double row +0 +24 +24 +Connector_IDC +IDC-Header_2x12_P2.54mm_Latch_Vertical +Through hole IDC header, 2x12, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows latches, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x12 2.54mm double row +0 +24 +24 +Connector_IDC +IDC-Header_2x12_P2.54mm_Vertical +Through hole IDC box header, 2x12, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC box header THT 2x12 2.54mm double row +0 +24 +24 +Connector_IDC +IDC-Header_2x13-1MP_P2.54mm_Latch6.5mm_Vertical +Through hole IDC header, 2x13, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 6.5mm latches, mounting holes, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x13 2.54mm double row +0 +28 +27 +Connector_IDC +IDC-Header_2x13-1MP_P2.54mm_Latch9.5mm_Vertical +Through hole IDC header, 2x13, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 9.5mm latches, mounting holes, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x13 2.54mm double row +0 +28 +27 +Connector_IDC +IDC-Header_2x13-1MP_P2.54mm_Latch12.0mm_Vertical +Through hole IDC header, 2x13, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 12.0mm latches, mounting holes, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x13 2.54mm double row +0 +28 +27 +Connector_IDC +IDC-Header_2x13-1MP_P2.54mm_Latch_Horizontal +Through hole IDC header, 2x13, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows latches, mounting holes, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole horizontal IDC header THT 2x13 2.54mm double row +0 +28 +27 +Connector_IDC +IDC-Header_2x13-1MP_P2.54mm_Latch_Vertical +Through hole IDC header, 2x13, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows latches, mounting holes, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x13 2.54mm double row +0 +28 +27 +Connector_IDC +IDC-Header_2x13_P2.54mm_Horizontal +Through hole IDC box header, 2x13, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole horizontal IDC box header THT 2x13 2.54mm double row +0 +26 +26 +Connector_IDC +IDC-Header_2x13_P2.54mm_Latch6.5mm_Vertical +Through hole IDC header, 2x13, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 6.5mm latches, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x13 2.54mm double row +0 +26 +26 +Connector_IDC +IDC-Header_2x13_P2.54mm_Latch9.5mm_Vertical +Through hole IDC header, 2x13, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 9.5mm latches, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x13 2.54mm double row +0 +26 +26 +Connector_IDC +IDC-Header_2x13_P2.54mm_Latch12.0mm_Vertical +Through hole IDC header, 2x13, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 12.0mm latches, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x13 2.54mm double row +0 +26 +26 +Connector_IDC +IDC-Header_2x13_P2.54mm_Latch_Horizontal +Through hole IDC header, 2x13, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows latches, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole horizontal IDC header THT 2x13 2.54mm double row +0 +26 +26 +Connector_IDC +IDC-Header_2x13_P2.54mm_Latch_Vertical +Through hole IDC header, 2x13, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows latches, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x13 2.54mm double row +0 +26 +26 +Connector_IDC +IDC-Header_2x13_P2.54mm_Vertical +Through hole IDC box header, 2x13, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC box header THT 2x13 2.54mm double row +0 +26 +26 +Connector_IDC +IDC-Header_2x15-1MP_P2.54mm_Latch6.5mm_Vertical +Through hole IDC header, 2x15, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 6.5mm latches, mounting holes, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x15 2.54mm double row +0 +32 +31 +Connector_IDC +IDC-Header_2x15-1MP_P2.54mm_Latch9.5mm_Vertical +Through hole IDC header, 2x15, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 9.5mm latches, mounting holes, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x15 2.54mm double row +0 +32 +31 +Connector_IDC +IDC-Header_2x15-1MP_P2.54mm_Latch12.0mm_Vertical +Through hole IDC header, 2x15, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 12.0mm latches, mounting holes, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x15 2.54mm double row +0 +32 +31 +Connector_IDC +IDC-Header_2x15-1MP_P2.54mm_Latch_Horizontal +Through hole IDC header, 2x15, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows latches, mounting holes, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole horizontal IDC header THT 2x15 2.54mm double row +0 +32 +31 +Connector_IDC +IDC-Header_2x15-1MP_P2.54mm_Latch_Vertical +Through hole IDC header, 2x15, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows latches, mounting holes, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x15 2.54mm double row +0 +32 +31 +Connector_IDC +IDC-Header_2x15_P2.54mm_Horizontal +Through hole IDC box header, 2x15, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole horizontal IDC box header THT 2x15 2.54mm double row +0 +30 +30 +Connector_IDC +IDC-Header_2x15_P2.54mm_Latch6.5mm_Vertical +Through hole IDC header, 2x15, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 6.5mm latches, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x15 2.54mm double row +0 +30 +30 +Connector_IDC +IDC-Header_2x15_P2.54mm_Latch9.5mm_Vertical +Through hole IDC header, 2x15, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 9.5mm latches, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x15 2.54mm double row +0 +30 +30 +Connector_IDC +IDC-Header_2x15_P2.54mm_Latch12.0mm_Vertical +Through hole IDC header, 2x15, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 12.0mm latches, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x15 2.54mm double row +0 +30 +30 +Connector_IDC +IDC-Header_2x15_P2.54mm_Latch_Horizontal +Through hole IDC header, 2x15, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows latches, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole horizontal IDC header THT 2x15 2.54mm double row +0 +30 +30 +Connector_IDC +IDC-Header_2x15_P2.54mm_Latch_Vertical +Through hole IDC header, 2x15, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows latches, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x15 2.54mm double row +0 +30 +30 +Connector_IDC +IDC-Header_2x15_P2.54mm_Vertical +Through hole IDC box header, 2x15, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC box header THT 2x15 2.54mm double row +0 +30 +30 +Connector_IDC +IDC-Header_2x17-1MP_P2.54mm_Latch6.5mm_Vertical +Through hole IDC header, 2x17, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 6.5mm latches, mounting holes, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x17 2.54mm double row +0 +36 +35 +Connector_IDC +IDC-Header_2x17-1MP_P2.54mm_Latch9.5mm_Vertical +Through hole IDC header, 2x17, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 9.5mm latches, mounting holes, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x17 2.54mm double row +0 +36 +35 +Connector_IDC +IDC-Header_2x17-1MP_P2.54mm_Latch12.0mm_Vertical +Through hole IDC header, 2x17, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 12.0mm latches, mounting holes, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x17 2.54mm double row +0 +36 +35 +Connector_IDC +IDC-Header_2x17-1MP_P2.54mm_Latch_Horizontal +Through hole IDC header, 2x17, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows latches, mounting holes, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole horizontal IDC header THT 2x17 2.54mm double row +0 +36 +35 +Connector_IDC +IDC-Header_2x17-1MP_P2.54mm_Latch_Vertical +Through hole IDC header, 2x17, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows latches, mounting holes, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x17 2.54mm double row +0 +36 +35 +Connector_IDC +IDC-Header_2x17_P2.54mm_Horizontal +Through hole IDC box header, 2x17, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole horizontal IDC box header THT 2x17 2.54mm double row +0 +34 +34 +Connector_IDC +IDC-Header_2x17_P2.54mm_Latch6.5mm_Vertical +Through hole IDC header, 2x17, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 6.5mm latches, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x17 2.54mm double row +0 +34 +34 +Connector_IDC +IDC-Header_2x17_P2.54mm_Latch9.5mm_Vertical +Through hole IDC header, 2x17, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 9.5mm latches, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x17 2.54mm double row +0 +34 +34 +Connector_IDC +IDC-Header_2x17_P2.54mm_Latch12.0mm_Vertical +Through hole IDC header, 2x17, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 12.0mm latches, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x17 2.54mm double row +0 +34 +34 +Connector_IDC +IDC-Header_2x17_P2.54mm_Latch_Horizontal +Through hole IDC header, 2x17, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows latches, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole horizontal IDC header THT 2x17 2.54mm double row +0 +34 +34 +Connector_IDC +IDC-Header_2x17_P2.54mm_Latch_Vertical +Through hole IDC header, 2x17, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows latches, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x17 2.54mm double row +0 +34 +34 +Connector_IDC +IDC-Header_2x17_P2.54mm_Vertical +Through hole IDC box header, 2x17, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC box header THT 2x17 2.54mm double row +0 +34 +34 +Connector_IDC +IDC-Header_2x20-1MP_P2.54mm_Latch6.5mm_Vertical +Through hole IDC header, 2x20, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 6.5mm latches, mounting holes, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x20 2.54mm double row +0 +42 +41 +Connector_IDC +IDC-Header_2x20-1MP_P2.54mm_Latch9.5mm_Vertical +Through hole IDC header, 2x20, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 9.5mm latches, mounting holes, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x20 2.54mm double row +0 +42 +41 +Connector_IDC +IDC-Header_2x20-1MP_P2.54mm_Latch12.0mm_Vertical +Through hole IDC header, 2x20, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 12.0mm latches, mounting holes, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x20 2.54mm double row +0 +42 +41 +Connector_IDC +IDC-Header_2x20-1MP_P2.54mm_Latch_Horizontal +Through hole IDC header, 2x20, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows latches, mounting holes, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole horizontal IDC header THT 2x20 2.54mm double row +0 +42 +41 +Connector_IDC +IDC-Header_2x20-1MP_P2.54mm_Latch_Vertical +Through hole IDC header, 2x20, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows latches, mounting holes, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x20 2.54mm double row +0 +42 +41 +Connector_IDC +IDC-Header_2x20_P2.54mm_Horizontal +Through hole IDC box header, 2x20, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole horizontal IDC box header THT 2x20 2.54mm double row +0 +40 +40 +Connector_IDC +IDC-Header_2x20_P2.54mm_Latch6.5mm_Vertical +Through hole IDC header, 2x20, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 6.5mm latches, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x20 2.54mm double row +0 +40 +40 +Connector_IDC +IDC-Header_2x20_P2.54mm_Latch9.5mm_Vertical +Through hole IDC header, 2x20, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 9.5mm latches, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x20 2.54mm double row +0 +40 +40 +Connector_IDC +IDC-Header_2x20_P2.54mm_Latch12.0mm_Vertical +Through hole IDC header, 2x20, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 12.0mm latches, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x20 2.54mm double row +0 +40 +40 +Connector_IDC +IDC-Header_2x20_P2.54mm_Latch_Horizontal +Through hole IDC header, 2x20, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows latches, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole horizontal IDC header THT 2x20 2.54mm double row +0 +40 +40 +Connector_IDC +IDC-Header_2x20_P2.54mm_Latch_Vertical +Through hole IDC header, 2x20, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows latches, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x20 2.54mm double row +0 +40 +40 +Connector_IDC +IDC-Header_2x20_P2.54mm_Vertical +Through hole IDC box header, 2x20, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC box header THT 2x20 2.54mm double row +0 +40 +40 +Connector_IDC +IDC-Header_2x25-1MP_P2.54mm_Latch6.5mm_Vertical +Through hole IDC header, 2x25, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 6.5mm latches, mounting holes, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x25 2.54mm double row +0 +52 +51 +Connector_IDC +IDC-Header_2x25-1MP_P2.54mm_Latch9.5mm_Vertical +Through hole IDC header, 2x25, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 9.5mm latches, mounting holes, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x25 2.54mm double row +0 +52 +51 +Connector_IDC +IDC-Header_2x25-1MP_P2.54mm_Latch12.0mm_Vertical +Through hole IDC header, 2x25, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 12.0mm latches, mounting holes, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x25 2.54mm double row +0 +52 +51 +Connector_IDC +IDC-Header_2x25-1MP_P2.54mm_Latch_Horizontal +Through hole IDC header, 2x25, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows latches, mounting holes, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole horizontal IDC header THT 2x25 2.54mm double row +0 +52 +51 +Connector_IDC +IDC-Header_2x25-1MP_P2.54mm_Latch_Vertical +Through hole IDC header, 2x25, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows latches, mounting holes, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x25 2.54mm double row +0 +52 +51 +Connector_IDC +IDC-Header_2x25_P2.54mm_Horizontal +Through hole IDC box header, 2x25, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole horizontal IDC box header THT 2x25 2.54mm double row +0 +50 +50 +Connector_IDC +IDC-Header_2x25_P2.54mm_Latch6.5mm_Vertical +Through hole IDC header, 2x25, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 6.5mm latches, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x25 2.54mm double row +0 +50 +50 +Connector_IDC +IDC-Header_2x25_P2.54mm_Latch9.5mm_Vertical +Through hole IDC header, 2x25, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 9.5mm latches, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x25 2.54mm double row +0 +50 +50 +Connector_IDC +IDC-Header_2x25_P2.54mm_Latch12.0mm_Vertical +Through hole IDC header, 2x25, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 12.0mm latches, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x25 2.54mm double row +0 +50 +50 +Connector_IDC +IDC-Header_2x25_P2.54mm_Latch_Horizontal +Through hole IDC header, 2x25, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows latches, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole horizontal IDC header THT 2x25 2.54mm double row +0 +50 +50 +Connector_IDC +IDC-Header_2x25_P2.54mm_Latch_Vertical +Through hole IDC header, 2x25, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows latches, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x25 2.54mm double row +0 +50 +50 +Connector_IDC +IDC-Header_2x25_P2.54mm_Vertical +Through hole IDC box header, 2x25, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC box header THT 2x25 2.54mm double row +0 +50 +50 +Connector_IDC +IDC-Header_2x30-1MP_P2.54mm_Latch6.5mm_Vertical +Through hole IDC header, 2x30, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 6.5mm latches, mounting holes, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x30 2.54mm double row +0 +62 +61 +Connector_IDC +IDC-Header_2x30-1MP_P2.54mm_Latch9.5mm_Vertical +Through hole IDC header, 2x30, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 9.5mm latches, mounting holes, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x30 2.54mm double row +0 +62 +61 +Connector_IDC +IDC-Header_2x30-1MP_P2.54mm_Latch12.0mm_Vertical +Through hole IDC header, 2x30, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 12.0mm latches, mounting holes, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x30 2.54mm double row +0 +62 +61 +Connector_IDC +IDC-Header_2x30-1MP_P2.54mm_Latch_Horizontal +Through hole IDC header, 2x30, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows latches, mounting holes, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole horizontal IDC header THT 2x30 2.54mm double row +0 +62 +61 +Connector_IDC +IDC-Header_2x30-1MP_P2.54mm_Latch_Vertical +Through hole IDC header, 2x30, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows latches, mounting holes, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x30 2.54mm double row +0 +62 +61 +Connector_IDC +IDC-Header_2x30_P2.54mm_Horizontal +Through hole IDC box header, 2x30, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole horizontal IDC box header THT 2x30 2.54mm double row +0 +60 +60 +Connector_IDC +IDC-Header_2x30_P2.54mm_Latch6.5mm_Vertical +Through hole IDC header, 2x30, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 6.5mm latches, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x30 2.54mm double row +0 +60 +60 +Connector_IDC +IDC-Header_2x30_P2.54mm_Latch9.5mm_Vertical +Through hole IDC header, 2x30, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 9.5mm latches, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x30 2.54mm double row +0 +60 +60 +Connector_IDC +IDC-Header_2x30_P2.54mm_Latch12.0mm_Vertical +Through hole IDC header, 2x30, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 12.0mm latches, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x30 2.54mm double row +0 +60 +60 +Connector_IDC +IDC-Header_2x30_P2.54mm_Latch_Horizontal +Through hole IDC header, 2x30, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows latches, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole horizontal IDC header THT 2x30 2.54mm double row +0 +60 +60 +Connector_IDC +IDC-Header_2x30_P2.54mm_Latch_Vertical +Through hole IDC header, 2x30, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows latches, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x30 2.54mm double row +0 +60 +60 +Connector_IDC +IDC-Header_2x30_P2.54mm_Vertical +Through hole IDC box header, 2x30, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC box header THT 2x30 2.54mm double row +0 +60 +60 +Connector_IDC +IDC-Header_2x32-1MP_P2.54mm_Latch6.5mm_Vertical +Through hole IDC header, 2x32, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 6.5mm latches, mounting holes, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x32 2.54mm double row +0 +66 +65 +Connector_IDC +IDC-Header_2x32-1MP_P2.54mm_Latch9.5mm_Vertical +Through hole IDC header, 2x32, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 9.5mm latches, mounting holes, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x32 2.54mm double row +0 +66 +65 +Connector_IDC +IDC-Header_2x32-1MP_P2.54mm_Latch12.0mm_Vertical +Through hole IDC header, 2x32, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 12.0mm latches, mounting holes, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x32 2.54mm double row +0 +66 +65 +Connector_IDC +IDC-Header_2x32-1MP_P2.54mm_Latch_Horizontal +Through hole IDC header, 2x32, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows latches, mounting holes, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole horizontal IDC header THT 2x32 2.54mm double row +0 +66 +65 +Connector_IDC +IDC-Header_2x32-1MP_P2.54mm_Latch_Vertical +Through hole IDC header, 2x32, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows latches, mounting holes, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x32 2.54mm double row +0 +66 +65 +Connector_IDC +IDC-Header_2x32_P2.54mm_Horizontal +Through hole IDC box header, 2x32, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole horizontal IDC box header THT 2x32 2.54mm double row +0 +64 +64 +Connector_IDC +IDC-Header_2x32_P2.54mm_Latch6.5mm_Vertical +Through hole IDC header, 2x32, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 6.5mm latches, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x32 2.54mm double row +0 +64 +64 +Connector_IDC +IDC-Header_2x32_P2.54mm_Latch9.5mm_Vertical +Through hole IDC header, 2x32, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 9.5mm latches, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x32 2.54mm double row +0 +64 +64 +Connector_IDC +IDC-Header_2x32_P2.54mm_Latch12.0mm_Vertical +Through hole IDC header, 2x32, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, 12.0mm latches, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x32 2.54mm double row +0 +64 +64 +Connector_IDC +IDC-Header_2x32_P2.54mm_Latch_Horizontal +Through hole IDC header, 2x32, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows latches, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole horizontal IDC header THT 2x32 2.54mm double row +0 +64 +64 +Connector_IDC +IDC-Header_2x32_P2.54mm_Latch_Vertical +Through hole IDC header, 2x32, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows latches, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC header THT 2x32 2.54mm double row +0 +64 +64 +Connector_IDC +IDC-Header_2x32_P2.54mm_Vertical +Through hole IDC box header, 2x32, 2.54mm pitch, DIN 41651 / IEC 60603-13, double rows, https://docs.google.com/spreadsheets/d/16SsEcesNF15N3Lb4niX7dcUr-NY5_MFPQhobNuNppn4/edit#gid=0 +Through hole vertical IDC box header THT 2x32 2.54mm double row +0 +64 +64 +Connector_JAE +JAE_LY20-4P-DLT1_2x02_P2.00mm_Horizontal +Molex LY 20 series connector, LY20-4P-DLT1, 2 Circuits (http://www.jae.com/z-en/pdf_download_exec.cfm?param=SJ038187.pdf), generated with kicad-footprint-generator +connector JAE top entry +0 +4 +4 +Connector_JAE +JAE_LY20-4P-DT1_2x02_P2.00mm_Vertical +Molex LY 20 series connector, LY20-4P-DT1, 2 Circuits (http://www.jae.com/z-en/pdf_download_exec.cfm?param=SJ103130.pdf), generated with kicad-footprint-generator +connector JAE side entry +0 +4 +4 +Connector_JAE +JAE_LY20-6P-DLT1_2x03_P2.00mm_Horizontal +Molex LY 20 series connector, LY20-6P-DLT1, 3 Circuits (http://www.jae.com/z-en/pdf_download_exec.cfm?param=SJ038187.pdf), generated with kicad-footprint-generator +connector JAE top entry +0 +6 +6 +Connector_JAE +JAE_LY20-6P-DT1_2x03_P2.00mm_Vertical +Molex LY 20 series connector, LY20-6P-DT1, 3 Circuits (http://www.jae.com/z-en/pdf_download_exec.cfm?param=SJ103130.pdf), generated with kicad-footprint-generator +connector JAE side entry +0 +6 +6 +Connector_JAE +JAE_LY20-8P-DLT1_2x04_P2.00mm_Horizontal +Molex LY 20 series connector, LY20-8P-DLT1, 4 Circuits (http://www.jae.com/z-en/pdf_download_exec.cfm?param=SJ038187.pdf), generated with kicad-footprint-generator +connector JAE top entry +0 +8 +8 +Connector_JAE +JAE_LY20-8P-DT1_2x04_P2.00mm_Vertical +Molex LY 20 series connector, LY20-8P-DT1, 4 Circuits (http://www.jae.com/z-en/pdf_download_exec.cfm?param=SJ103130.pdf), generated with kicad-footprint-generator +connector JAE side entry +0 +8 +8 +Connector_JAE +JAE_LY20-10P-DLT1_2x05_P2.00mm_Horizontal +Molex LY 20 series connector, LY20-10P-DLT1, 5 Circuits (http://www.jae.com/z-en/pdf_download_exec.cfm?param=SJ038187.pdf), generated with kicad-footprint-generator +connector JAE top entry +0 +10 +10 +Connector_JAE +JAE_LY20-10P-DT1_2x05_P2.00mm_Vertical +Molex LY 20 series connector, LY20-10P-DT1, 5 Circuits (http://www.jae.com/z-en/pdf_download_exec.cfm?param=SJ103130.pdf), generated with kicad-footprint-generator +connector JAE side entry +0 +10 +10 +Connector_JAE +JAE_LY20-12P-DLT1_2x06_P2.00mm_Horizontal +Molex LY 20 series connector, LY20-12P-DLT1, 6 Circuits (http://www.jae.com/z-en/pdf_download_exec.cfm?param=SJ038187.pdf), generated with kicad-footprint-generator +connector JAE top entry +0 +12 +12 +Connector_JAE +JAE_LY20-12P-DT1_2x06_P2.00mm_Vertical +Molex LY 20 series connector, LY20-12P-DT1, 6 Circuits (http://www.jae.com/z-en/pdf_download_exec.cfm?param=SJ103130.pdf), generated with kicad-footprint-generator +connector JAE side entry +0 +12 +12 +Connector_JAE +JAE_LY20-14P-DLT1_2x07_P2.00mm_Horizontal +Molex LY 20 series connector, LY20-14P-DLT1, 7 Circuits (http://www.jae.com/z-en/pdf_download_exec.cfm?param=SJ038187.pdf), generated with kicad-footprint-generator +connector JAE top entry +0 +14 +14 +Connector_JAE +JAE_LY20-14P-DT1_2x07_P2.00mm_Vertical +Molex LY 20 series connector, LY20-14P-DT1, 7 Circuits (http://www.jae.com/z-en/pdf_download_exec.cfm?param=SJ103130.pdf), generated with kicad-footprint-generator +connector JAE side entry +0 +14 +14 +Connector_JAE +JAE_LY20-16P-DLT1_2x08_P2.00mm_Horizontal +Molex LY 20 series connector, LY20-16P-DLT1, 8 Circuits (http://www.jae.com/z-en/pdf_download_exec.cfm?param=SJ038187.pdf), generated with kicad-footprint-generator +connector JAE top entry +0 +16 +16 +Connector_JAE +JAE_LY20-16P-DT1_2x08_P2.00mm_Vertical +Molex LY 20 series connector, LY20-16P-DT1, 8 Circuits (http://www.jae.com/z-en/pdf_download_exec.cfm?param=SJ103130.pdf), generated with kicad-footprint-generator +connector JAE side entry +0 +16 +16 +Connector_JAE +JAE_LY20-18P-DLT1_2x09_P2.00mm_Horizontal +Molex LY 20 series connector, LY20-18P-DLT1, 9 Circuits (http://www.jae.com/z-en/pdf_download_exec.cfm?param=SJ038187.pdf), generated with kicad-footprint-generator +connector JAE top entry +0 +18 +18 +Connector_JAE +JAE_LY20-18P-DT1_2x09_P2.00mm_Vertical +Molex LY 20 series connector, LY20-18P-DT1, 9 Circuits (http://www.jae.com/z-en/pdf_download_exec.cfm?param=SJ103130.pdf), generated with kicad-footprint-generator +connector JAE side entry +0 +18 +18 +Connector_JAE +JAE_LY20-20P-DLT1_2x10_P2.00mm_Horizontal +Molex LY 20 series connector, LY20-20P-DLT1, 10 Circuits (http://www.jae.com/z-en/pdf_download_exec.cfm?param=SJ038187.pdf), generated with kicad-footprint-generator +connector JAE top entry +0 +20 +20 +Connector_JAE +JAE_LY20-20P-DT1_2x10_P2.00mm_Vertical +Molex LY 20 series connector, LY20-20P-DT1, 10 Circuits (http://www.jae.com/z-en/pdf_download_exec.cfm?param=SJ103130.pdf), generated with kicad-footprint-generator +connector JAE side entry +0 +20 +20 +Connector_JAE +JAE_LY20-22P-DLT1_2x11_P2.00mm_Horizontal +Molex LY 20 series connector, LY20-22P-DLT1, 11 Circuits (http://www.jae.com/z-en/pdf_download_exec.cfm?param=SJ038187.pdf), generated with kicad-footprint-generator +connector JAE top entry +0 +22 +22 +Connector_JAE +JAE_LY20-22P-DT1_2x11_P2.00mm_Vertical +Molex LY 20 series connector, LY20-22P-DT1, 11 Circuits (http://www.jae.com/z-en/pdf_download_exec.cfm?param=SJ103130.pdf), generated with kicad-footprint-generator +connector JAE side entry +0 +22 +22 +Connector_JAE +JAE_LY20-24P-DLT1_2x12_P2.00mm_Horizontal +Molex LY 20 series connector, LY20-24P-DLT1, 12 Circuits (http://www.jae.com/z-en/pdf_download_exec.cfm?param=SJ038187.pdf), generated with kicad-footprint-generator +connector JAE top entry +0 +24 +24 +Connector_JAE +JAE_LY20-24P-DT1_2x12_P2.00mm_Vertical +Molex LY 20 series connector, LY20-24P-DT1, 12 Circuits (http://www.jae.com/z-en/pdf_download_exec.cfm?param=SJ103130.pdf), generated with kicad-footprint-generator +connector JAE side entry +0 +24 +24 +Connector_JAE +JAE_LY20-26P-DLT1_2x13_P2.00mm_Horizontal +Molex LY 20 series connector, LY20-26P-DLT1, 13 Circuits (http://www.jae.com/z-en/pdf_download_exec.cfm?param=SJ038187.pdf), generated with kicad-footprint-generator +connector JAE top entry +0 +26 +26 +Connector_JAE +JAE_LY20-26P-DT1_2x13_P2.00mm_Vertical +Molex LY 20 series connector, LY20-26P-DT1, 13 Circuits (http://www.jae.com/z-en/pdf_download_exec.cfm?param=SJ103130.pdf), generated with kicad-footprint-generator +connector JAE side entry +0 +26 +26 +Connector_JAE +JAE_LY20-28P-DLT1_2x14_P2.00mm_Horizontal +Molex LY 20 series connector, LY20-28P-DLT1, 14 Circuits (http://www.jae.com/z-en/pdf_download_exec.cfm?param=SJ038187.pdf), generated with kicad-footprint-generator +connector JAE top entry +0 +28 +28 +Connector_JAE +JAE_LY20-28P-DT1_2x14_P2.00mm_Vertical +Molex LY 20 series connector, LY20-28P-DT1, 14 Circuits (http://www.jae.com/z-en/pdf_download_exec.cfm?param=SJ103130.pdf), generated with kicad-footprint-generator +connector JAE side entry +0 +28 +28 +Connector_JAE +JAE_LY20-30P-DLT1_2x15_P2.00mm_Horizontal +Molex LY 20 series connector, LY20-30P-DLT1, 15 Circuits (http://www.jae.com/z-en/pdf_download_exec.cfm?param=SJ038187.pdf), generated with kicad-footprint-generator +connector JAE top entry +0 +30 +30 +Connector_JAE +JAE_LY20-30P-DT1_2x15_P2.00mm_Vertical +Molex LY 20 series connector, LY20-30P-DT1, 15 Circuits (http://www.jae.com/z-en/pdf_download_exec.cfm?param=SJ103130.pdf), generated with kicad-footprint-generator +connector JAE side entry +0 +30 +30 +Connector_JAE +JAE_LY20-32P-DLT1_2x16_P2.00mm_Horizontal +Molex LY 20 series connector, LY20-32P-DLT1, 16 Circuits (http://www.jae.com/z-en/pdf_download_exec.cfm?param=SJ038187.pdf), generated with kicad-footprint-generator +connector JAE top entry +0 +32 +32 +Connector_JAE +JAE_LY20-32P-DT1_2x16_P2.00mm_Vertical +Molex LY 20 series connector, LY20-32P-DT1, 16 Circuits (http://www.jae.com/z-en/pdf_download_exec.cfm?param=SJ103130.pdf), generated with kicad-footprint-generator +connector JAE side entry +0 +32 +32 +Connector_JAE +JAE_LY20-34P-DLT1_2x17_P2.00mm_Horizontal +Molex LY 20 series connector, LY20-34P-DLT1, 17 Circuits (http://www.jae.com/z-en/pdf_download_exec.cfm?param=SJ038187.pdf), generated with kicad-footprint-generator +connector JAE top entry +0 +34 +34 +Connector_JAE +JAE_LY20-34P-DT1_2x17_P2.00mm_Vertical +Molex LY 20 series connector, LY20-34P-DT1, 17 Circuits (http://www.jae.com/z-en/pdf_download_exec.cfm?param=SJ103130.pdf), generated with kicad-footprint-generator +connector JAE side entry +0 +34 +34 +Connector_JAE +JAE_LY20-36P-DLT1_2x18_P2.00mm_Horizontal +Molex LY 20 series connector, LY20-36P-DLT1, 18 Circuits (http://www.jae.com/z-en/pdf_download_exec.cfm?param=SJ038187.pdf), generated with kicad-footprint-generator +connector JAE top entry +0 +36 +36 +Connector_JAE +JAE_LY20-36P-DT1_2x18_P2.00mm_Vertical +Molex LY 20 series connector, LY20-36P-DT1, 18 Circuits (http://www.jae.com/z-en/pdf_download_exec.cfm?param=SJ103130.pdf), generated with kicad-footprint-generator +connector JAE side entry +0 +36 +36 +Connector_JAE +JAE_LY20-38P-DLT1_2x19_P2.00mm_Horizontal +Molex LY 20 series connector, LY20-38P-DLT1, 19 Circuits (http://www.jae.com/z-en/pdf_download_exec.cfm?param=SJ038187.pdf), generated with kicad-footprint-generator +connector JAE top entry +0 +38 +38 +Connector_JAE +JAE_LY20-38P-DT1_2x19_P2.00mm_Vertical +Molex LY 20 series connector, LY20-38P-DT1, 19 Circuits (http://www.jae.com/z-en/pdf_download_exec.cfm?param=SJ103130.pdf), generated with kicad-footprint-generator +connector JAE side entry +0 +38 +38 +Connector_JAE +JAE_LY20-40P-DLT1_2x20_P2.00mm_Horizontal +Molex LY 20 series connector, LY20-40P-DLT1, 20 Circuits (http://www.jae.com/z-en/pdf_download_exec.cfm?param=SJ038187.pdf), generated with kicad-footprint-generator +connector JAE top entry +0 +40 +40 +Connector_JAE +JAE_LY20-40P-DT1_2x20_P2.00mm_Vertical +Molex LY 20 series connector, LY20-40P-DT1, 20 Circuits (http://www.jae.com/z-en/pdf_download_exec.cfm?param=SJ103130.pdf), generated with kicad-footprint-generator +connector JAE side entry +0 +40 +40 +Connector_JAE +JAE_LY20-42P-DLT1_2x21_P2.00mm_Horizontal +Molex LY 20 series connector, LY20-42P-DLT1, 21 Circuits (http://www.jae.com/z-en/pdf_download_exec.cfm?param=SJ038187.pdf), generated with kicad-footprint-generator +connector JAE top entry +0 +42 +42 +Connector_JAE +JAE_LY20-42P-DT1_2x21_P2.00mm_Vertical +Molex LY 20 series connector, LY20-42P-DT1, 21 Circuits (http://www.jae.com/z-en/pdf_download_exec.cfm?param=SJ103130.pdf), generated with kicad-footprint-generator +connector JAE side entry +0 +42 +42 +Connector_JAE +JAE_LY20-44P-DLT1_2x22_P2.00mm_Horizontal +Molex LY 20 series connector, LY20-44P-DLT1, 22 Circuits (http://www.jae.com/z-en/pdf_download_exec.cfm?param=SJ038187.pdf), generated with kicad-footprint-generator +connector JAE top entry +0 +44 +44 +Connector_JAE +JAE_LY20-44P-DT1_2x22_P2.00mm_Vertical +Molex LY 20 series connector, LY20-44P-DT1, 22 Circuits (http://www.jae.com/z-en/pdf_download_exec.cfm?param=SJ103130.pdf), generated with kicad-footprint-generator +connector JAE side entry +0 +44 +44 +Connector_JAE +JAE_MM70-314-310B1 +http://www.heilind.com/marketing/documents/jae/JAE_MM70.pdf +connector JAE MXM +0 +280 +279 +Connector_JAE +JAE_SIM_Card_SF72S006 +SIM Card, Push-Push, https://www.jae.com/direct/topics/topics_file_download/topics_id=68892&ext_no=06&index=0&_lang=en&v=202003111511468456809 +SIM Card with Detect Switch +0 +18 +9 +Connector_JST +JST_ACH_BM01B-ACHSS-A-GAN-ETF_1x01-1MP_P1.20mm_Vertical +JST ACH series connector, BM01B-ACHSS-A-GAN-ETF (http://www.jst-mfg.com/product/pdf/eng/eACH.pdf), generated with kicad-footprint-generator +connector JST ACH vertical +0 +3 +2 +Connector_JST +JST_ACH_BM02B-ACHSS-GAN-ETF_1x02-1MP_P1.20mm_Vertical +JST ACH series connector, BM02B-ACHSS-GAN-ETF (http://www.jst-mfg.com/product/pdf/eng/eACH.pdf), generated with kicad-footprint-generator +connector JST ACH vertical +0 +4 +3 +Connector_JST +JST_ACH_BM03B-ACHSS-GAN-ETF_1x03-1MP_P1.20mm_Vertical +JST ACH series connector, BM03B-ACHSS-GAN-ETF (http://www.jst-mfg.com/product/pdf/eng/eACH.pdf), generated with kicad-footprint-generator +connector JST ACH vertical +0 +5 +4 +Connector_JST +JST_ACH_BM04B-ACHSS-A-GAN-ETF_1x04-1MP_P1.20mm_Vertical +JST ACH series connector, BM04B-ACHSS-A-GAN-ETF (http://www.jst-mfg.com/product/pdf/eng/eACH.pdf), generated with kicad-footprint-generator +connector JST ACH vertical +0 +6 +5 +Connector_JST +JST_ACH_BM05B-ACHSS-A-GAN-ETF_1x05-1MP_P1.20mm_Vertical +JST ACH series connector, BM05B-ACHSS-A-GAN-ETF (http://www.jst-mfg.com/product/pdf/eng/eACH.pdf), generated with kicad-footprint-generator +connector JST ACH vertical +0 +7 +6 +Connector_JST +JST_AUH_BM03B-AUHKS-GA-TB_1x03-1MP_P1.50mm_Vertical +JST AUH series connector, BM03B-AUHKS-GA-TB (http://www.jst-mfg.com/product/pdf/eng/eAUH.pdf), generated with kicad-footprint-generator +connector JST AUH side entry +0 +5 +4 +Connector_JST +JST_AUH_BM05B-AUHKS-GA-TB_1x05-1MP_P1.50mm_Vertical +JST AUH series connector, BM05B-AUHKS-GA-TB (http://www.jst-mfg.com/product/pdf/eng/eAUH.pdf), generated with kicad-footprint-generator +connector JST AUH side entry +0 +7 +6 +Connector_JST +JST_EH_B2B-EH-A_1x02_P2.50mm_Vertical +JST EH series connector, B2B-EH-A (http://www.jst-mfg.com/product/pdf/eng/eEH.pdf), generated with kicad-footprint-generator +connector JST EH vertical +0 +2 +2 +Connector_JST +JST_EH_B3B-EH-A_1x03_P2.50mm_Vertical +JST EH series connector, B3B-EH-A (http://www.jst-mfg.com/product/pdf/eng/eEH.pdf), generated with kicad-footprint-generator +connector JST EH vertical +0 +3 +3 +Connector_JST +JST_EH_B4B-EH-A_1x04_P2.50mm_Vertical +JST EH series connector, B4B-EH-A (http://www.jst-mfg.com/product/pdf/eng/eEH.pdf), generated with kicad-footprint-generator +connector JST EH vertical +0 +4 +4 +Connector_JST +JST_EH_B5B-EH-A_1x05_P2.50mm_Vertical +JST EH series connector, B5B-EH-A (http://www.jst-mfg.com/product/pdf/eng/eEH.pdf), generated with kicad-footprint-generator +connector JST EH vertical +0 +5 +5 +Connector_JST +JST_EH_B6B-EH-A_1x06_P2.50mm_Vertical +JST EH series connector, B6B-EH-A (http://www.jst-mfg.com/product/pdf/eng/eEH.pdf), generated with kicad-footprint-generator +connector JST EH vertical +0 +6 +6 +Connector_JST +JST_EH_B7B-EH-A_1x07_P2.50mm_Vertical +JST EH series connector, B7B-EH-A (http://www.jst-mfg.com/product/pdf/eng/eEH.pdf), generated with kicad-footprint-generator +connector JST EH vertical +0 +7 +7 +Connector_JST +JST_EH_B8B-EH-A_1x08_P2.50mm_Vertical +JST EH series connector, B8B-EH-A (http://www.jst-mfg.com/product/pdf/eng/eEH.pdf), generated with kicad-footprint-generator +connector JST EH vertical +0 +8 +8 +Connector_JST +JST_EH_B9B-EH-A_1x09_P2.50mm_Vertical +JST EH series connector, B9B-EH-A (http://www.jst-mfg.com/product/pdf/eng/eEH.pdf), generated with kicad-footprint-generator +connector JST EH vertical +0 +9 +9 +Connector_JST +JST_EH_B10B-EH-A_1x10_P2.50mm_Vertical +JST EH series connector, B10B-EH-A (http://www.jst-mfg.com/product/pdf/eng/eEH.pdf), generated with kicad-footprint-generator +connector JST EH side entry +0 +10 +10 +Connector_JST +JST_EH_B11B-EH-A_1x11_P2.50mm_Vertical +JST EH series connector, B11B-EH-A (http://www.jst-mfg.com/product/pdf/eng/eEH.pdf), generated with kicad-footprint-generator +connector JST EH side entry +0 +11 +11 +Connector_JST +JST_EH_B12B-EH-A_1x12_P2.50mm_Vertical +JST EH series connector, B12B-EH-A (http://www.jst-mfg.com/product/pdf/eng/eEH.pdf), generated with kicad-footprint-generator +connector JST EH side entry +0 +12 +12 +Connector_JST +JST_EH_B13B-EH-A_1x13_P2.50mm_Vertical +JST EH series connector, B13B-EH-A (http://www.jst-mfg.com/product/pdf/eng/eEH.pdf), generated with kicad-footprint-generator +connector JST EH side entry +0 +13 +13 +Connector_JST +JST_EH_B14B-EH-A_1x14_P2.50mm_Vertical +JST EH series connector, B14B-EH-A (http://www.jst-mfg.com/product/pdf/eng/eEH.pdf), generated with kicad-footprint-generator +connector JST EH side entry +0 +14 +14 +Connector_JST +JST_EH_B15B-EH-A_1x15_P2.50mm_Vertical +JST EH series connector, B15B-EH-A (http://www.jst-mfg.com/product/pdf/eng/eEH.pdf), generated with kicad-footprint-generator +connector JST EH side entry +0 +15 +15 +Connector_JST +JST_EH_S2B-EH_1x02_P2.50mm_Horizontal +JST EH series connector, S2B-EH (http://www.jst-mfg.com/product/pdf/eng/eEH.pdf), generated with kicad-footprint-generator +connector JST EH horizontal +0 +2 +2 +Connector_JST +JST_EH_S3B-EH_1x03_P2.50mm_Horizontal +JST EH series connector, S3B-EH (http://www.jst-mfg.com/product/pdf/eng/eEH.pdf), generated with kicad-footprint-generator +connector JST EH horizontal +0 +3 +3 +Connector_JST +JST_EH_S4B-EH_1x04_P2.50mm_Horizontal +JST EH series connector, S4B-EH (http://www.jst-mfg.com/product/pdf/eng/eEH.pdf), generated with kicad-footprint-generator +connector JST EH horizontal +0 +4 +4 +Connector_JST +JST_EH_S5B-EH_1x05_P2.50mm_Horizontal +JST EH series connector, S5B-EH (http://www.jst-mfg.com/product/pdf/eng/eEH.pdf), generated with kicad-footprint-generator +connector JST EH horizontal +0 +5 +5 +Connector_JST +JST_EH_S6B-EH_1x06_P2.50mm_Horizontal +JST EH series connector, S6B-EH (http://www.jst-mfg.com/product/pdf/eng/eEH.pdf), generated with kicad-footprint-generator +connector JST EH horizontal +0 +6 +6 +Connector_JST +JST_EH_S7B-EH_1x07_P2.50mm_Horizontal +JST EH series connector, S7B-EH (http://www.jst-mfg.com/product/pdf/eng/eEH.pdf), generated with kicad-footprint-generator +connector JST EH horizontal +0 +7 +7 +Connector_JST +JST_EH_S8B-EH_1x08_P2.50mm_Horizontal +JST EH series connector, S8B-EH (http://www.jst-mfg.com/product/pdf/eng/eEH.pdf), generated with kicad-footprint-generator +connector JST EH horizontal +0 +8 +8 +Connector_JST +JST_EH_S9B-EH_1x09_P2.50mm_Horizontal +JST EH series connector, S9B-EH (http://www.jst-mfg.com/product/pdf/eng/eEH.pdf), generated with kicad-footprint-generator +connector JST EH horizontal +0 +9 +9 +Connector_JST +JST_EH_S10B-EH_1x10_P2.50mm_Horizontal +JST EH series connector, S10B-EH (http://www.jst-mfg.com/product/pdf/eng/eEH.pdf), generated with kicad-footprint-generator +connector JST EH top entry +0 +10 +10 +Connector_JST +JST_EH_S11B-EH_1x11_P2.50mm_Horizontal +JST EH series connector, S11B-EH (http://www.jst-mfg.com/product/pdf/eng/eEH.pdf), generated with kicad-footprint-generator +connector JST EH top entry +0 +11 +11 +Connector_JST +JST_EH_S12B-EH_1x12_P2.50mm_Horizontal +JST EH series connector, S12B-EH (http://www.jst-mfg.com/product/pdf/eng/eEH.pdf), generated with kicad-footprint-generator +connector JST EH top entry +0 +12 +12 +Connector_JST +JST_EH_S13B-EH_1x13_P2.50mm_Horizontal +JST EH series connector, S13B-EH (http://www.jst-mfg.com/product/pdf/eng/eEH.pdf), generated with kicad-footprint-generator +connector JST EH top entry +0 +13 +13 +Connector_JST +JST_EH_S14B-EH_1x14_P2.50mm_Horizontal +JST EH series connector, S14B-EH (http://www.jst-mfg.com/product/pdf/eng/eEH.pdf), generated with kicad-footprint-generator +connector JST EH top entry +0 +14 +14 +Connector_JST +JST_EH_S15B-EH_1x15_P2.50mm_Horizontal +JST EH series connector, S15B-EH (http://www.jst-mfg.com/product/pdf/eng/eEH.pdf), generated with kicad-footprint-generator +connector JST EH top entry +0 +15 +15 +Connector_JST +JST_GH_BM02B-GHS-TBT_1x02-1MP_P1.25mm_Vertical +JST GH series connector, BM02B-GHS-TBT (http://www.jst-mfg.com/product/pdf/eng/eGH.pdf), generated with kicad-footprint-generator +connector JST GH side entry +0 +4 +3 +Connector_JST +JST_GH_BM03B-GHS-TBT_1x03-1MP_P1.25mm_Vertical +JST GH series connector, BM03B-GHS-TBT (http://www.jst-mfg.com/product/pdf/eng/eGH.pdf), generated with kicad-footprint-generator +connector JST GH side entry +0 +5 +4 +Connector_JST +JST_GH_BM04B-GHS-TBT_1x04-1MP_P1.25mm_Vertical +JST GH series connector, BM04B-GHS-TBT (http://www.jst-mfg.com/product/pdf/eng/eGH.pdf), generated with kicad-footprint-generator +connector JST GH side entry +0 +6 +5 +Connector_JST +JST_GH_BM05B-GHS-TBT_1x05-1MP_P1.25mm_Vertical +JST GH series connector, BM05B-GHS-TBT (http://www.jst-mfg.com/product/pdf/eng/eGH.pdf), generated with kicad-footprint-generator +connector JST GH side entry +0 +7 +6 +Connector_JST +JST_GH_BM06B-GHS-TBT_1x06-1MP_P1.25mm_Vertical +JST GH series connector, BM06B-GHS-TBT (http://www.jst-mfg.com/product/pdf/eng/eGH.pdf), generated with kicad-footprint-generator +connector JST GH side entry +0 +8 +7 +Connector_JST +JST_GH_BM07B-GHS-TBT_1x07-1MP_P1.25mm_Vertical +JST GH series connector, BM07B-GHS-TBT (http://www.jst-mfg.com/product/pdf/eng/eGH.pdf), generated with kicad-footprint-generator +connector JST GH side entry +0 +9 +8 +Connector_JST +JST_GH_BM08B-GHS-TBT_1x08-1MP_P1.25mm_Vertical +JST GH series connector, BM08B-GHS-TBT (http://www.jst-mfg.com/product/pdf/eng/eGH.pdf), generated with kicad-footprint-generator +connector JST GH side entry +0 +10 +9 +Connector_JST +JST_GH_BM09B-GHS-TBT_1x09-1MP_P1.25mm_Vertical +JST GH series connector, BM09B-GHS-TBT (http://www.jst-mfg.com/product/pdf/eng/eGH.pdf), generated with kicad-footprint-generator +connector JST GH side entry +0 +11 +10 +Connector_JST +JST_GH_BM10B-GHS-TBT_1x10-1MP_P1.25mm_Vertical +JST GH series connector, BM10B-GHS-TBT (http://www.jst-mfg.com/product/pdf/eng/eGH.pdf), generated with kicad-footprint-generator +connector JST GH side entry +0 +12 +11 +Connector_JST +JST_GH_BM11B-GHS-TBT_1x11-1MP_P1.25mm_Vertical +JST GH series connector, BM11B-GHS-TBT (http://www.jst-mfg.com/product/pdf/eng/eGH.pdf), generated with kicad-footprint-generator +connector JST GH side entry +0 +13 +12 +Connector_JST +JST_GH_BM12B-GHS-TBT_1x12-1MP_P1.25mm_Vertical +JST GH series connector, BM12B-GHS-TBT (http://www.jst-mfg.com/product/pdf/eng/eGH.pdf), generated with kicad-footprint-generator +connector JST GH side entry +0 +14 +13 +Connector_JST +JST_GH_BM13B-GHS-TBT_1x13-1MP_P1.25mm_Vertical +JST GH series connector, BM13B-GHS-TBT (http://www.jst-mfg.com/product/pdf/eng/eGH.pdf), generated with kicad-footprint-generator +connector JST GH side entry +0 +15 +14 +Connector_JST +JST_GH_BM14B-GHS-TBT_1x14-1MP_P1.25mm_Vertical +JST GH series connector, BM14B-GHS-TBT (http://www.jst-mfg.com/product/pdf/eng/eGH.pdf), generated with kicad-footprint-generator +connector JST GH side entry +0 +16 +15 +Connector_JST +JST_GH_BM15B-GHS-TBT_1x15-1MP_P1.25mm_Vertical +JST GH series connector, BM15B-GHS-TBT (http://www.jst-mfg.com/product/pdf/eng/eGH.pdf), generated with kicad-footprint-generator +connector JST GH side entry +0 +17 +16 +Connector_JST +JST_GH_SM02B-GHS-TB_1x02-1MP_P1.25mm_Horizontal +JST GH series connector, SM02B-GHS-TB (http://www.jst-mfg.com/product/pdf/eng/eGH.pdf), generated with kicad-footprint-generator +connector JST GH top entry +0 +4 +3 +Connector_JST +JST_GH_SM03B-GHS-TB_1x03-1MP_P1.25mm_Horizontal +JST GH series connector, SM03B-GHS-TB (http://www.jst-mfg.com/product/pdf/eng/eGH.pdf), generated with kicad-footprint-generator +connector JST GH top entry +0 +5 +4 +Connector_JST +JST_GH_SM04B-GHS-TB_1x04-1MP_P1.25mm_Horizontal +JST GH series connector, SM04B-GHS-TB (http://www.jst-mfg.com/product/pdf/eng/eGH.pdf), generated with kicad-footprint-generator +connector JST GH top entry +0 +6 +5 +Connector_JST +JST_GH_SM05B-GHS-TB_1x05-1MP_P1.25mm_Horizontal +JST GH series connector, SM05B-GHS-TB (http://www.jst-mfg.com/product/pdf/eng/eGH.pdf), generated with kicad-footprint-generator +connector JST GH top entry +0 +7 +6 +Connector_JST +JST_GH_SM06B-GHS-TB_1x06-1MP_P1.25mm_Horizontal +JST GH series connector, SM06B-GHS-TB (http://www.jst-mfg.com/product/pdf/eng/eGH.pdf), generated with kicad-footprint-generator +connector JST GH top entry +0 +8 +7 +Connector_JST +JST_GH_SM07B-GHS-TB_1x07-1MP_P1.25mm_Horizontal +JST GH series connector, SM07B-GHS-TB (http://www.jst-mfg.com/product/pdf/eng/eGH.pdf), generated with kicad-footprint-generator +connector JST GH top entry +0 +9 +8 +Connector_JST +JST_GH_SM08B-GHS-TB_1x08-1MP_P1.25mm_Horizontal +JST GH series connector, SM08B-GHS-TB (http://www.jst-mfg.com/product/pdf/eng/eGH.pdf), generated with kicad-footprint-generator +connector JST GH top entry +0 +10 +9 +Connector_JST +JST_GH_SM09B-GHS-TB_1x09-1MP_P1.25mm_Horizontal +JST GH series connector, SM09B-GHS-TB (http://www.jst-mfg.com/product/pdf/eng/eGH.pdf), generated with kicad-footprint-generator +connector JST GH top entry +0 +11 +10 +Connector_JST +JST_GH_SM10B-GHS-TB_1x10-1MP_P1.25mm_Horizontal +JST GH series connector, SM10B-GHS-TB (http://www.jst-mfg.com/product/pdf/eng/eGH.pdf), generated with kicad-footprint-generator +connector JST GH top entry +0 +12 +11 +Connector_JST +JST_GH_SM11B-GHS-TB_1x11-1MP_P1.25mm_Horizontal +JST GH series connector, SM11B-GHS-TB (http://www.jst-mfg.com/product/pdf/eng/eGH.pdf), generated with kicad-footprint-generator +connector JST GH top entry +0 +13 +12 +Connector_JST +JST_GH_SM12B-GHS-TB_1x12-1MP_P1.25mm_Horizontal +JST GH series connector, SM12B-GHS-TB (http://www.jst-mfg.com/product/pdf/eng/eGH.pdf), generated with kicad-footprint-generator +connector JST GH top entry +0 +14 +13 +Connector_JST +JST_GH_SM13B-GHS-TB_1x13-1MP_P1.25mm_Horizontal +JST GH series connector, SM13B-GHS-TB (http://www.jst-mfg.com/product/pdf/eng/eGH.pdf), generated with kicad-footprint-generator +connector JST GH top entry +0 +15 +14 +Connector_JST +JST_GH_SM14B-GHS-TB_1x14-1MP_P1.25mm_Horizontal +JST GH series connector, SM14B-GHS-TB (http://www.jst-mfg.com/product/pdf/eng/eGH.pdf), generated with kicad-footprint-generator +connector JST GH top entry +0 +16 +15 +Connector_JST +JST_GH_SM15B-GHS-TB_1x15-1MP_P1.25mm_Horizontal +JST GH series connector, SM15B-GHS-TB (http://www.jst-mfg.com/product/pdf/eng/eGH.pdf), generated with kicad-footprint-generator +connector JST GH top entry +0 +17 +16 +Connector_JST +JST_J2100_B06B-J21DK-GGXR_2x03_P2.50x4.00mm_Vertical +JST J2100 series connector, B06B-J21DK-GGXR (http://www.jst-mfg.com/product/pdf/eng/eJFA-J2000.pdf), generated with kicad-footprint-generator +connector JST J2100 vertical +0 +8 +6 +Connector_JST +JST_J2100_B08B-J21DK-GGXR_2x04_P2.50x4.00mm_Vertical +JST J2100 series connector, B08B-J21DK-GGXR (http://www.jst-mfg.com/product/pdf/eng/eJFA-J2000.pdf), generated with kicad-footprint-generator +connector JST J2100 vertical +0 +10 +8 +Connector_JST +JST_J2100_B10B-J21DK-GGXR_2x05_P2.50x4.00mm_Vertical +JST J2100 series connector, B10B-J21DK-GGXR (http://www.jst-mfg.com/product/pdf/eng/eJFA-J2000.pdf), generated with kicad-footprint-generator +connector JST J2100 vertical +0 +12 +10 +Connector_JST +JST_J2100_B12B-J21DK-GGXR_2x06_P2.50x4.00mm_Vertical +JST J2100 series connector, B12B-J21DK-GGXR (http://www.jst-mfg.com/product/pdf/eng/eJFA-J2000.pdf), generated with kicad-footprint-generator +connector JST J2100 vertical +0 +14 +12 +Connector_JST +JST_J2100_B16B-J21DK-GGXR_2x08_P2.50x4.00mm_Vertical +JST J2100 series connector, B16B-J21DK-GGXR (http://www.jst-mfg.com/product/pdf/eng/eJFA-J2000.pdf), generated with kicad-footprint-generator +connector JST J2100 vertical +0 +18 +16 +Connector_JST +JST_J2100_B20B-J21DK-GGXR_2x10_P2.50x4.00mm_Vertical +JST J2100 series connector, B20B-J21DK-GGXR (http://www.jst-mfg.com/product/pdf/eng/eJFA-J2000.pdf), generated with kicad-footprint-generator +connector JST J2100 vertical +0 +22 +20 +Connector_JST +JST_J2100_S06B-J21DK-GGXR_2x03_P2.50mm_Horizontal +JST J2100 series connector, S06B-J21DK-GGXR (http://www.jst-mfg.com/product/pdf/eng/eJFA-J2000.pdf), generated with kicad-footprint-generator +connector JST J2100 horizontal +0 +7 +6 +Connector_JST +JST_J2100_S08B-J21DK-GGXR_2x04_P2.50mm_Horizontal +JST J2100 series connector, S08B-J21DK-GGXR (http://www.jst-mfg.com/product/pdf/eng/eJFA-J2000.pdf), generated with kicad-footprint-generator +connector JST J2100 horizontal +0 +10 +8 +Connector_JST +JST_J2100_S10B-J21DK-GGXR_2x05_P2.50mm_Horizontal +JST J2100 series connector, S10B-J21DK-GGXR (http://www.jst-mfg.com/product/pdf/eng/eJFA-J2000.pdf), generated with kicad-footprint-generator +connector JST J2100 horizontal +0 +12 +10 +Connector_JST +JST_J2100_S12B-J21DK-GGXR_2x06_P2.50mm_Horizontal +JST J2100 series connector, S12B-J21DK-GGXR (http://www.jst-mfg.com/product/pdf/eng/eJFA-J2000.pdf), generated with kicad-footprint-generator +connector JST J2100 horizontal +0 +14 +12 +Connector_JST +JST_J2100_S16B-J21DK-GGXR_2x08_P2.50mm_Horizontal +JST J2100 series connector, S16B-J21DK-GGXR (http://www.jst-mfg.com/product/pdf/eng/eJFA-J2000.pdf), generated with kicad-footprint-generator +connector JST J2100 horizontal +0 +18 +16 +Connector_JST +JST_J2100_S20B-J21DK-GGXR_2x10_P2.50mm_Horizontal +JST J2100 series connector, S20B-J21DK-GGXR (http://www.jst-mfg.com/product/pdf/eng/eJFA-J2000.pdf), generated with kicad-footprint-generator +connector JST J2100 horizontal +0 +22 +20 +Connector_JST +JST_JWPF_B02B-JWPF-SK-R_1x02_P2.00mm_Vertical +JST JWPF series connector, B02B-JWPF-SK-R (http://www.jst-mfg.com/product/pdf/eng/eJWPF1.pdf), generated with kicad-footprint-generator +connector JST JWPF side entry +0 +2 +2 +Connector_JST +JST_JWPF_B03B-JWPF-SK-R_1x03_P2.00mm_Vertical +JST JWPF series connector, B03B-JWPF-SK-R (http://www.jst-mfg.com/product/pdf/eng/eJWPF1.pdf), generated with kicad-footprint-generator +connector JST JWPF side entry +0 +3 +3 +Connector_JST +JST_JWPF_B04B-JWPF-SK-R_1x04_P2.00mm_Vertical +JST JWPF series connector, B04B-JWPF-SK-R (http://www.jst-mfg.com/product/pdf/eng/eJWPF1.pdf), generated with kicad-footprint-generator +connector JST JWPF side entry +0 +4 +4 +Connector_JST +JST_JWPF_B06B-JWPF-SK-R_2x03_P2.00mm_Vertical +JST JWPF series connector, B06B-JWPF-SK-R (http://www.jst-mfg.com/product/pdf/eng/eJWPF1.pdf), generated with kicad-footprint-generator +connector JST JWPF side entry +0 +6 +6 +Connector_JST +JST_JWPF_B08B-JWPF-SK-R_2x04_P2.00mm_Vertical +JST JWPF series connector, B08B-JWPF-SK-R (http://www.jst-mfg.com/product/pdf/eng/eJWPF1.pdf), generated with kicad-footprint-generator +connector JST JWPF side entry +0 +8 +8 +Connector_JST +JST_LEA_SM02B-LEASS-TF_1x02-1MP_P4.20mm_Horizontal +JST LEA series connector, SM02B-LEASS-TF (http://www.jst-mfg.com/product/pdf/eng/eLEA.pdf), generated with kicad-footprint-generator +connector JST LEA top entry +0 +4 +3 +Connector_JST +JST_NV_B02P-NV_1x02_P5.00mm_Vertical +JST NV series connector, B02P-NV (http://www.jst-mfg.com/product/pdf/eng/eNV.pdf), generated with kicad-footprint-generator +connector JST NV side entry +0 +2 +2 +Connector_JST +JST_NV_B03P-NV_1x03_P5.00mm_Vertical +JST NV series connector, B03P-NV (http://www.jst-mfg.com/product/pdf/eng/eNV.pdf), generated with kicad-footprint-generator +connector JST NV side entry +0 +3 +3 +Connector_JST +JST_NV_B04P-NV_1x04_P5.00mm_Vertical +JST NV series connector, B04P-NV (http://www.jst-mfg.com/product/pdf/eng/eNV.pdf), generated with kicad-footprint-generator +connector JST NV side entry +0 +4 +4 +Connector_JST +JST_PHD_B8B-PHDSS_2x04_P2.00mm_Vertical +JST PHD series connector, B8B-PHDSS (http://www.jst-mfg.com/product/pdf/eng/ePHD.pdf), generated with kicad-footprint-generator +connector JST PHD vertical +0 +8 +8 +Connector_JST +JST_PHD_B10B-PHDSS_2x05_P2.00mm_Vertical +JST PHD series connector, B10B-PHDSS (http://www.jst-mfg.com/product/pdf/eng/ePHD.pdf), generated with kicad-footprint-generator +connector JST PHD vertical +0 +10 +10 +Connector_JST +JST_PHD_B12B-PHDSS_2x06_P2.00mm_Vertical +JST PHD series connector, B12B-PHDSS (http://www.jst-mfg.com/product/pdf/eng/ePHD.pdf), generated with kicad-footprint-generator +connector JST PHD vertical +0 +12 +12 +Connector_JST +JST_PHD_B14B-PHDSS_2x07_P2.00mm_Vertical +JST PHD series connector, B14B-PHDSS (http://www.jst-mfg.com/product/pdf/eng/ePHD.pdf), generated with kicad-footprint-generator +connector JST PHD vertical +0 +14 +14 +Connector_JST +JST_PHD_B16B-PHDSS_2x08_P2.00mm_Vertical +JST PHD series connector, B16B-PHDSS (http://www.jst-mfg.com/product/pdf/eng/ePHD.pdf), generated with kicad-footprint-generator +connector JST PHD vertical +0 +16 +16 +Connector_JST +JST_PHD_B18B-PHDSS_2x09_P2.00mm_Vertical +JST PHD series connector, B18B-PHDSS (http://www.jst-mfg.com/product/pdf/eng/ePHD.pdf), generated with kicad-footprint-generator +connector JST PHD vertical +0 +18 +18 +Connector_JST +JST_PHD_B20B-PHDSS_2x10_P2.00mm_Vertical +JST PHD series connector, B20B-PHDSS (http://www.jst-mfg.com/product/pdf/eng/ePHD.pdf), generated with kicad-footprint-generator +connector JST PHD vertical +0 +20 +20 +Connector_JST +JST_PHD_B22B-PHDSS_2x11_P2.00mm_Vertical +JST PHD series connector, B22B-PHDSS (http://www.jst-mfg.com/product/pdf/eng/ePHD.pdf), generated with kicad-footprint-generator +connector JST PHD vertical +0 +22 +22 +Connector_JST +JST_PHD_B24B-PHDSS_2x12_P2.00mm_Vertical +JST PHD series connector, B24B-PHDSS (http://www.jst-mfg.com/product/pdf/eng/ePHD.pdf), generated with kicad-footprint-generator +connector JST PHD vertical +0 +24 +24 +Connector_JST +JST_PHD_B26B-PHDSS_2x13_P2.00mm_Vertical +JST PHD series connector, B26B-PHDSS (http://www.jst-mfg.com/product/pdf/eng/ePHD.pdf), generated with kicad-footprint-generator +connector JST PHD vertical +0 +26 +26 +Connector_JST +JST_PHD_B28B-PHDSS_2x14_P2.00mm_Vertical +JST PHD series connector, B28B-PHDSS (http://www.jst-mfg.com/product/pdf/eng/ePHD.pdf), generated with kicad-footprint-generator +connector JST PHD vertical +0 +28 +28 +Connector_JST +JST_PHD_B30B-PHDSS_2x15_P2.00mm_Vertical +JST PHD series connector, B30B-PHDSS (http://www.jst-mfg.com/product/pdf/eng/ePHD.pdf), generated with kicad-footprint-generator +connector JST PHD vertical +0 +30 +30 +Connector_JST +JST_PHD_B32B-PHDSS_2x16_P2.00mm_Vertical +JST PHD series connector, B32B-PHDSS (http://www.jst-mfg.com/product/pdf/eng/ePHD.pdf), generated with kicad-footprint-generator +connector JST PHD vertical +0 +32 +32 +Connector_JST +JST_PHD_B34B-PHDSS_2x17_P2.00mm_Vertical +JST PHD series connector, B34B-PHDSS (http://www.jst-mfg.com/product/pdf/eng/ePHD.pdf), generated with kicad-footprint-generator +connector JST PHD vertical +0 +34 +34 +Connector_JST +JST_PHD_S8B-PHDSS_2x04_P2.00mm_Horizontal +JST PHD series connector, S8B-PHDSS (http://www.jst-mfg.com/product/pdf/eng/ePHD.pdf), generated with kicad-footprint-generator +connector JST PHD horizontal +0 +8 +8 +Connector_JST +JST_PHD_S10B-PHDSS_2x05_P2.00mm_Horizontal +JST PHD series connector, S10B-PHDSS (http://www.jst-mfg.com/product/pdf/eng/ePHD.pdf), generated with kicad-footprint-generator +connector JST PHD horizontal +0 +10 +10 +Connector_JST +JST_PHD_S12B-PHDSS_2x06_P2.00mm_Horizontal +JST PHD series connector, S12B-PHDSS (http://www.jst-mfg.com/product/pdf/eng/ePHD.pdf), generated with kicad-footprint-generator +connector JST PHD horizontal +0 +12 +12 +Connector_JST +JST_PHD_S14B-PHDSS_2x07_P2.00mm_Horizontal +JST PHD series connector, S14B-PHDSS (http://www.jst-mfg.com/product/pdf/eng/ePHD.pdf), generated with kicad-footprint-generator +connector JST PHD horizontal +0 +14 +14 +Connector_JST +JST_PHD_S16B-PHDSS_2x08_P2.00mm_Horizontal +JST PHD series connector, S16B-PHDSS (http://www.jst-mfg.com/product/pdf/eng/ePHD.pdf), generated with kicad-footprint-generator +connector JST PHD horizontal +0 +16 +16 +Connector_JST +JST_PHD_S18B-PHDSS_2x09_P2.00mm_Horizontal +JST PHD series connector, S18B-PHDSS (http://www.jst-mfg.com/product/pdf/eng/ePHD.pdf), generated with kicad-footprint-generator +connector JST PHD horizontal +0 +18 +18 +Connector_JST +JST_PHD_S20B-PHDSS_2x10_P2.00mm_Horizontal +JST PHD series connector, S20B-PHDSS (http://www.jst-mfg.com/product/pdf/eng/ePHD.pdf), generated with kicad-footprint-generator +connector JST PHD horizontal +0 +20 +20 +Connector_JST +JST_PHD_S22B-PHDSS_2x11_P2.00mm_Horizontal +JST PHD series connector, S22B-PHDSS (http://www.jst-mfg.com/product/pdf/eng/ePHD.pdf), generated with kicad-footprint-generator +connector JST PHD horizontal +0 +22 +22 +Connector_JST +JST_PHD_S24B-PHDSS_2x12_P2.00mm_Horizontal +JST PHD series connector, S24B-PHDSS (http://www.jst-mfg.com/product/pdf/eng/ePHD.pdf), generated with kicad-footprint-generator +connector JST PHD horizontal +0 +24 +24 +Connector_JST +JST_PHD_S26B-PHDSS_2x13_P2.00mm_Horizontal +JST PHD series connector, S26B-PHDSS (http://www.jst-mfg.com/product/pdf/eng/ePHD.pdf), generated with kicad-footprint-generator +connector JST PHD horizontal +0 +26 +26 +Connector_JST +JST_PHD_S28B-PHDSS_2x14_P2.00mm_Horizontal +JST PHD series connector, S28B-PHDSS (http://www.jst-mfg.com/product/pdf/eng/ePHD.pdf), generated with kicad-footprint-generator +connector JST PHD horizontal +0 +28 +28 +Connector_JST +JST_PHD_S30B-PHDSS_2x15_P2.00mm_Horizontal +JST PHD series connector, S30B-PHDSS (http://www.jst-mfg.com/product/pdf/eng/ePHD.pdf), generated with kicad-footprint-generator +connector JST PHD horizontal +0 +30 +30 +Connector_JST +JST_PHD_S32B-PHDSS_2x16_P2.00mm_Horizontal +JST PHD series connector, S32B-PHDSS (http://www.jst-mfg.com/product/pdf/eng/ePHD.pdf), generated with kicad-footprint-generator +connector JST PHD horizontal +0 +32 +32 +Connector_JST +JST_PHD_S34B-PHDSS_2x17_P2.00mm_Horizontal +JST PHD series connector, S34B-PHDSS (http://www.jst-mfg.com/product/pdf/eng/ePHD.pdf), generated with kicad-footprint-generator +connector JST PHD horizontal +0 +34 +34 +Connector_JST +JST_PH_B2B-PH-K_1x02_P2.00mm_Vertical +JST PH series connector, B2B-PH-K (http://www.jst-mfg.com/product/pdf/eng/ePH.pdf), generated with kicad-footprint-generator +connector JST PH side entry +0 +2 +2 +Connector_JST +JST_PH_B2B-PH-SM4-TB_1x02-1MP_P2.00mm_Vertical +JST PH series connector, B2B-PH-SM4-TB (http://www.jst-mfg.com/product/pdf/eng/ePH.pdf), generated with kicad-footprint-generator +connector JST PH side entry +0 +4 +3 +Connector_JST +JST_PH_B3B-PH-K_1x03_P2.00mm_Vertical +JST PH series connector, B3B-PH-K (http://www.jst-mfg.com/product/pdf/eng/ePH.pdf), generated with kicad-footprint-generator +connector JST PH side entry +0 +3 +3 +Connector_JST +JST_PH_B3B-PH-SM4-TB_1x03-1MP_P2.00mm_Vertical +JST PH series connector, B3B-PH-SM4-TB (http://www.jst-mfg.com/product/pdf/eng/ePH.pdf), generated with kicad-footprint-generator +connector JST PH side entry +0 +5 +4 +Connector_JST +JST_PH_B4B-PH-K_1x04_P2.00mm_Vertical +JST PH series connector, B4B-PH-K (http://www.jst-mfg.com/product/pdf/eng/ePH.pdf), generated with kicad-footprint-generator +connector JST PH side entry +0 +4 +4 +Connector_JST +JST_PH_B4B-PH-SM4-TB_1x04-1MP_P2.00mm_Vertical +JST PH series connector, B4B-PH-SM4-TB (http://www.jst-mfg.com/product/pdf/eng/ePH.pdf), generated with kicad-footprint-generator +connector JST PH side entry +0 +6 +5 +Connector_JST +JST_PH_B5B-PH-K_1x05_P2.00mm_Vertical +JST PH series connector, B5B-PH-K (http://www.jst-mfg.com/product/pdf/eng/ePH.pdf), generated with kicad-footprint-generator +connector JST PH side entry +0 +5 +5 +Connector_JST +JST_PH_B5B-PH-SM4-TB_1x05-1MP_P2.00mm_Vertical +JST PH series connector, B5B-PH-SM4-TB (http://www.jst-mfg.com/product/pdf/eng/ePH.pdf), generated with kicad-footprint-generator +connector JST PH side entry +0 +7 +6 +Connector_JST +JST_PH_B6B-PH-K_1x06_P2.00mm_Vertical +JST PH series connector, B6B-PH-K (http://www.jst-mfg.com/product/pdf/eng/ePH.pdf), generated with kicad-footprint-generator +connector JST PH side entry +0 +6 +6 +Connector_JST +JST_PH_B6B-PH-SM4-TB_1x06-1MP_P2.00mm_Vertical +JST PH series connector, B6B-PH-SM4-TB (http://www.jst-mfg.com/product/pdf/eng/ePH.pdf), generated with kicad-footprint-generator +connector JST PH side entry +0 +8 +7 +Connector_JST +JST_PH_B7B-PH-K_1x07_P2.00mm_Vertical +JST PH series connector, B7B-PH-K (http://www.jst-mfg.com/product/pdf/eng/ePH.pdf), generated with kicad-footprint-generator +connector JST PH side entry +0 +7 +7 +Connector_JST +JST_PH_B7B-PH-SM4-TB_1x07-1MP_P2.00mm_Vertical +JST PH series connector, B7B-PH-SM4-TB (http://www.jst-mfg.com/product/pdf/eng/ePH.pdf), generated with kicad-footprint-generator +connector JST PH side entry +0 +9 +8 +Connector_JST +JST_PH_B8B-PH-K_1x08_P2.00mm_Vertical +JST PH series connector, B8B-PH-K (http://www.jst-mfg.com/product/pdf/eng/ePH.pdf), generated with kicad-footprint-generator +connector JST PH side entry +0 +8 +8 +Connector_JST +JST_PH_B8B-PH-SM4-TB_1x08-1MP_P2.00mm_Vertical +JST PH series connector, B8B-PH-SM4-TB (http://www.jst-mfg.com/product/pdf/eng/ePH.pdf), generated with kicad-footprint-generator +connector JST PH side entry +0 +10 +9 +Connector_JST +JST_PH_B9B-PH-K_1x09_P2.00mm_Vertical +JST PH series connector, B9B-PH-K (http://www.jst-mfg.com/product/pdf/eng/ePH.pdf), generated with kicad-footprint-generator +connector JST PH side entry +0 +9 +9 +Connector_JST +JST_PH_B9B-PH-SM4-TB_1x09-1MP_P2.00mm_Vertical +JST PH series connector, B9B-PH-SM4-TB (http://www.jst-mfg.com/product/pdf/eng/ePH.pdf), generated with kicad-footprint-generator +connector JST PH side entry +0 +11 +10 +Connector_JST +JST_PH_B10B-PH-K_1x10_P2.00mm_Vertical +JST PH series connector, B10B-PH-K (http://www.jst-mfg.com/product/pdf/eng/ePH.pdf), generated with kicad-footprint-generator +connector JST PH side entry +0 +10 +10 +Connector_JST +JST_PH_B10B-PH-SM4-TB_1x10-1MP_P2.00mm_Vertical +JST PH series connector, B10B-PH-SM4-TB (http://www.jst-mfg.com/product/pdf/eng/ePH.pdf), generated with kicad-footprint-generator +connector JST PH side entry +0 +12 +11 +Connector_JST +JST_PH_B11B-PH-K_1x11_P2.00mm_Vertical +JST PH series connector, B11B-PH-K (http://www.jst-mfg.com/product/pdf/eng/ePH.pdf), generated with kicad-footprint-generator +connector JST PH side entry +0 +11 +11 +Connector_JST +JST_PH_B11B-PH-SM4-TB_1x11-1MP_P2.00mm_Vertical +JST PH series connector, B11B-PH-SM4-TB (http://www.jst-mfg.com/product/pdf/eng/ePH.pdf), generated with kicad-footprint-generator +connector JST PH side entry +0 +13 +12 +Connector_JST +JST_PH_B12B-PH-K_1x12_P2.00mm_Vertical +JST PH series connector, B12B-PH-K (http://www.jst-mfg.com/product/pdf/eng/ePH.pdf), generated with kicad-footprint-generator +connector JST PH side entry +0 +12 +12 +Connector_JST +JST_PH_B12B-PH-SM4-TB_1x12-1MP_P2.00mm_Vertical +JST PH series connector, B12B-PH-SM4-TB (http://www.jst-mfg.com/product/pdf/eng/ePH.pdf), generated with kicad-footprint-generator +connector JST PH side entry +0 +14 +13 +Connector_JST +JST_PH_B13B-PH-K_1x13_P2.00mm_Vertical +JST PH series connector, B13B-PH-K (http://www.jst-mfg.com/product/pdf/eng/ePH.pdf), generated with kicad-footprint-generator +connector JST PH side entry +0 +13 +13 +Connector_JST +JST_PH_B13B-PH-SM4-TB_1x13-1MP_P2.00mm_Vertical +JST PH series connector, B13B-PH-SM4-TB (http://www.jst-mfg.com/product/pdf/eng/ePH.pdf), generated with kicad-footprint-generator +connector JST PH side entry +0 +15 +14 +Connector_JST +JST_PH_B14B-PH-K_1x14_P2.00mm_Vertical +JST PH series connector, B14B-PH-K (http://www.jst-mfg.com/product/pdf/eng/ePH.pdf), generated with kicad-footprint-generator +connector JST PH side entry +0 +14 +14 +Connector_JST +JST_PH_B14B-PH-SM4-TB_1x14-1MP_P2.00mm_Vertical +JST PH series connector, B14B-PH-SM4-TB (http://www.jst-mfg.com/product/pdf/eng/ePH.pdf), generated with kicad-footprint-generator +connector JST PH side entry +0 +16 +15 +Connector_JST +JST_PH_B15B-PH-K_1x15_P2.00mm_Vertical +JST PH series connector, B15B-PH-K (http://www.jst-mfg.com/product/pdf/eng/ePH.pdf), generated with kicad-footprint-generator +connector JST PH side entry +0 +15 +15 +Connector_JST +JST_PH_B15B-PH-SM4-TB_1x15-1MP_P2.00mm_Vertical +JST PH series connector, B15B-PH-SM4-TB (http://www.jst-mfg.com/product/pdf/eng/ePH.pdf), generated with kicad-footprint-generator +connector JST PH side entry +0 +17 +16 +Connector_JST +JST_PH_B16B-PH-K_1x16_P2.00mm_Vertical +JST PH series connector, B16B-PH-K (http://www.jst-mfg.com/product/pdf/eng/ePH.pdf), generated with kicad-footprint-generator +connector JST PH side entry +0 +16 +16 +Connector_JST +JST_PH_B16B-PH-SM4-TB_1x16-1MP_P2.00mm_Vertical +JST PH series connector, B16B-PH-SM4-TB (http://www.jst-mfg.com/product/pdf/eng/ePH.pdf), generated with kicad-footprint-generator +connector JST PH side entry +0 +18 +17 +Connector_JST +JST_PH_S2B-PH-K_1x02_P2.00mm_Horizontal +JST PH series connector, S2B-PH-K (http://www.jst-mfg.com/product/pdf/eng/ePH.pdf), generated with kicad-footprint-generator +connector JST PH top entry +0 +2 +2 +Connector_JST +JST_PH_S2B-PH-SM4-TB_1x02-1MP_P2.00mm_Horizontal +JST PH series connector, S2B-PH-SM4-TB (http://www.jst-mfg.com/product/pdf/eng/ePH.pdf), generated with kicad-footprint-generator +connector JST PH top entry +0 +4 +3 +Connector_JST +JST_PH_S3B-PH-K_1x03_P2.00mm_Horizontal +JST PH series connector, S3B-PH-K (http://www.jst-mfg.com/product/pdf/eng/ePH.pdf), generated with kicad-footprint-generator +connector JST PH top entry +0 +3 +3 +Connector_JST +JST_PH_S3B-PH-SM4-TB_1x03-1MP_P2.00mm_Horizontal +JST PH series connector, S3B-PH-SM4-TB (http://www.jst-mfg.com/product/pdf/eng/ePH.pdf), generated with kicad-footprint-generator +connector JST PH top entry +0 +5 +4 +Connector_JST +JST_PH_S4B-PH-K_1x04_P2.00mm_Horizontal +JST PH series connector, S4B-PH-K (http://www.jst-mfg.com/product/pdf/eng/ePH.pdf), generated with kicad-footprint-generator +connector JST PH top entry +0 +4 +4 +Connector_JST +JST_PH_S4B-PH-SM4-TB_1x04-1MP_P2.00mm_Horizontal +JST PH series connector, S4B-PH-SM4-TB (http://www.jst-mfg.com/product/pdf/eng/ePH.pdf), generated with kicad-footprint-generator +connector JST PH top entry +0 +6 +5 +Connector_JST +JST_PH_S5B-PH-K_1x05_P2.00mm_Horizontal +JST PH series connector, S5B-PH-K (http://www.jst-mfg.com/product/pdf/eng/ePH.pdf), generated with kicad-footprint-generator +connector JST PH top entry +0 +5 +5 +Connector_JST +JST_PH_S5B-PH-SM4-TB_1x05-1MP_P2.00mm_Horizontal +JST PH series connector, S5B-PH-SM4-TB (http://www.jst-mfg.com/product/pdf/eng/ePH.pdf), generated with kicad-footprint-generator +connector JST PH top entry +0 +7 +6 +Connector_JST +JST_PH_S6B-PH-K_1x06_P2.00mm_Horizontal +JST PH series connector, S6B-PH-K (http://www.jst-mfg.com/product/pdf/eng/ePH.pdf), generated with kicad-footprint-generator +connector JST PH top entry +0 +6 +6 +Connector_JST +JST_PH_S6B-PH-SM4-TB_1x06-1MP_P2.00mm_Horizontal +JST PH series connector, S6B-PH-SM4-TB (http://www.jst-mfg.com/product/pdf/eng/ePH.pdf), generated with kicad-footprint-generator +connector JST PH top entry +0 +8 +7 +Connector_JST +JST_PH_S7B-PH-K_1x07_P2.00mm_Horizontal +JST PH series connector, S7B-PH-K (http://www.jst-mfg.com/product/pdf/eng/ePH.pdf), generated with kicad-footprint-generator +connector JST PH top entry +0 +7 +7 +Connector_JST +JST_PH_S7B-PH-SM4-TB_1x07-1MP_P2.00mm_Horizontal +JST PH series connector, S7B-PH-SM4-TB (http://www.jst-mfg.com/product/pdf/eng/ePH.pdf), generated with kicad-footprint-generator +connector JST PH top entry +0 +9 +8 +Connector_JST +JST_PH_S8B-PH-K_1x08_P2.00mm_Horizontal +JST PH series connector, S8B-PH-K (http://www.jst-mfg.com/product/pdf/eng/ePH.pdf), generated with kicad-footprint-generator +connector JST PH top entry +0 +8 +8 +Connector_JST +JST_PH_S8B-PH-SM4-TB_1x08-1MP_P2.00mm_Horizontal +JST PH series connector, S8B-PH-SM4-TB (http://www.jst-mfg.com/product/pdf/eng/ePH.pdf), generated with kicad-footprint-generator +connector JST PH top entry +0 +10 +9 +Connector_JST +JST_PH_S9B-PH-K_1x09_P2.00mm_Horizontal +JST PH series connector, S9B-PH-K (http://www.jst-mfg.com/product/pdf/eng/ePH.pdf), generated with kicad-footprint-generator +connector JST PH top entry +0 +9 +9 +Connector_JST +JST_PH_S9B-PH-SM4-TB_1x09-1MP_P2.00mm_Horizontal +JST PH series connector, S9B-PH-SM4-TB (http://www.jst-mfg.com/product/pdf/eng/ePH.pdf), generated with kicad-footprint-generator +connector JST PH top entry +0 +11 +10 +Connector_JST +JST_PH_S10B-PH-K_1x10_P2.00mm_Horizontal +JST PH series connector, S10B-PH-K (http://www.jst-mfg.com/product/pdf/eng/ePH.pdf), generated with kicad-footprint-generator +connector JST PH top entry +0 +10 +10 +Connector_JST +JST_PH_S10B-PH-SM4-TB_1x10-1MP_P2.00mm_Horizontal +JST PH series connector, S10B-PH-SM4-TB (http://www.jst-mfg.com/product/pdf/eng/ePH.pdf), generated with kicad-footprint-generator +connector JST PH top entry +0 +12 +11 +Connector_JST +JST_PH_S11B-PH-K_1x11_P2.00mm_Horizontal +JST PH series connector, S11B-PH-K (http://www.jst-mfg.com/product/pdf/eng/ePH.pdf), generated with kicad-footprint-generator +connector JST PH top entry +0 +11 +11 +Connector_JST +JST_PH_S11B-PH-SM4-TB_1x11-1MP_P2.00mm_Horizontal +JST PH series connector, S11B-PH-SM4-TB (http://www.jst-mfg.com/product/pdf/eng/ePH.pdf), generated with kicad-footprint-generator +connector JST PH top entry +0 +13 +12 +Connector_JST +JST_PH_S12B-PH-K_1x12_P2.00mm_Horizontal +JST PH series connector, S12B-PH-K (http://www.jst-mfg.com/product/pdf/eng/ePH.pdf), generated with kicad-footprint-generator +connector JST PH top entry +0 +12 +12 +Connector_JST +JST_PH_S12B-PH-SM4-TB_1x12-1MP_P2.00mm_Horizontal +JST PH series connector, S12B-PH-SM4-TB (http://www.jst-mfg.com/product/pdf/eng/ePH.pdf), generated with kicad-footprint-generator +connector JST PH top entry +0 +14 +13 +Connector_JST +JST_PH_S13B-PH-K_1x13_P2.00mm_Horizontal +JST PH series connector, S13B-PH-K (http://www.jst-mfg.com/product/pdf/eng/ePH.pdf), generated with kicad-footprint-generator +connector JST PH top entry +0 +13 +13 +Connector_JST +JST_PH_S13B-PH-SM4-TB_1x13-1MP_P2.00mm_Horizontal +JST PH series connector, S13B-PH-SM4-TB (http://www.jst-mfg.com/product/pdf/eng/ePH.pdf), generated with kicad-footprint-generator +connector JST PH top entry +0 +15 +14 +Connector_JST +JST_PH_S14B-PH-K_1x14_P2.00mm_Horizontal +JST PH series connector, S14B-PH-K (http://www.jst-mfg.com/product/pdf/eng/ePH.pdf), generated with kicad-footprint-generator +connector JST PH top entry +0 +14 +14 +Connector_JST +JST_PH_S14B-PH-SM4-TB_1x14-1MP_P2.00mm_Horizontal +JST PH series connector, S14B-PH-SM4-TB (http://www.jst-mfg.com/product/pdf/eng/ePH.pdf), generated with kicad-footprint-generator +connector JST PH top entry +0 +16 +15 +Connector_JST +JST_PH_S15B-PH-K_1x15_P2.00mm_Horizontal +JST PH series connector, S15B-PH-K (http://www.jst-mfg.com/product/pdf/eng/ePH.pdf), generated with kicad-footprint-generator +connector JST PH top entry +0 +15 +15 +Connector_JST +JST_PH_S15B-PH-SM4-TB_1x15-1MP_P2.00mm_Horizontal +JST PH series connector, S15B-PH-SM4-TB (http://www.jst-mfg.com/product/pdf/eng/ePH.pdf), generated with kicad-footprint-generator +connector JST PH top entry +0 +17 +16 +Connector_JST +JST_PH_S16B-PH-K_1x16_P2.00mm_Horizontal +JST PH series connector, S16B-PH-K (http://www.jst-mfg.com/product/pdf/eng/ePH.pdf), generated with kicad-footprint-generator +connector JST PH top entry +0 +16 +16 +Connector_JST +JST_PUD_B08B-PUDSS_2x04_P2.00mm_Vertical +JST PUD series connector, B08B-PUDSS (http://www.jst-mfg.com/product/pdf/eng/ePUD.pdf), generated with kicad-footprint-generator +connector JST PUD side entry +0 +8 +8 +Connector_JST +JST_PUD_B10B-PUDSS_2x05_P2.00mm_Vertical +JST PUD series connector, B10B-PUDSS (http://www.jst-mfg.com/product/pdf/eng/ePUD.pdf), generated with kicad-footprint-generator +connector JST PUD side entry +0 +10 +10 +Connector_JST +JST_PUD_B12B-PUDSS_2x06_P2.00mm_Vertical +JST PUD series connector, B12B-PUDSS (http://www.jst-mfg.com/product/pdf/eng/ePUD.pdf), generated with kicad-footprint-generator +connector JST PUD side entry +0 +12 +12 +Connector_JST +JST_PUD_B14B-PUDSS_2x07_P2.00mm_Vertical +JST PUD series connector, B14B-PUDSS (http://www.jst-mfg.com/product/pdf/eng/ePUD.pdf), generated with kicad-footprint-generator +connector JST PUD side entry +0 +14 +14 +Connector_JST +JST_PUD_B16B-PUDSS_2x08_P2.00mm_Vertical +JST PUD series connector, B16B-PUDSS (http://www.jst-mfg.com/product/pdf/eng/ePUD.pdf), generated with kicad-footprint-generator +connector JST PUD side entry +0 +16 +16 +Connector_JST +JST_PUD_B18B-PUDSS_2x09_P2.00mm_Vertical +JST PUD series connector, B18B-PUDSS (http://www.jst-mfg.com/product/pdf/eng/ePUD.pdf), generated with kicad-footprint-generator +connector JST PUD side entry +0 +18 +18 +Connector_JST +JST_PUD_B20B-PUDSS_2x10_P2.00mm_Vertical +JST PUD series connector, B20B-PUDSS (http://www.jst-mfg.com/product/pdf/eng/ePUD.pdf), generated with kicad-footprint-generator +connector JST PUD side entry +0 +20 +20 +Connector_JST +JST_PUD_B22B-PUDSS_2x11_P2.00mm_Vertical +JST PUD series connector, B22B-PUDSS (http://www.jst-mfg.com/product/pdf/eng/ePUD.pdf), generated with kicad-footprint-generator +connector JST PUD side entry +0 +22 +22 +Connector_JST +JST_PUD_B24B-PUDSS_2x12_P2.00mm_Vertical +JST PUD series connector, B24B-PUDSS (http://www.jst-mfg.com/product/pdf/eng/ePUD.pdf), generated with kicad-footprint-generator +connector JST PUD side entry +0 +24 +24 +Connector_JST +JST_PUD_B26B-PUDSS_2x13_P2.00mm_Vertical +JST PUD series connector, B26B-PUDSS (http://www.jst-mfg.com/product/pdf/eng/ePUD.pdf), generated with kicad-footprint-generator +connector JST PUD side entry +0 +26 +26 +Connector_JST +JST_PUD_B28B-PUDSS_2x14_P2.00mm_Vertical +JST PUD series connector, B28B-PUDSS (http://www.jst-mfg.com/product/pdf/eng/ePUD.pdf), generated with kicad-footprint-generator +connector JST PUD side entry +0 +28 +28 +Connector_JST +JST_PUD_B30B-PUDSS_2x15_P2.00mm_Vertical +JST PUD series connector, B30B-PUDSS (http://www.jst-mfg.com/product/pdf/eng/ePUD.pdf), generated with kicad-footprint-generator +connector JST PUD side entry +0 +30 +30 +Connector_JST +JST_PUD_B32B-PUDSS_2x16_P2.00mm_Vertical +JST PUD series connector, B32B-PUDSS (http://www.jst-mfg.com/product/pdf/eng/ePUD.pdf), generated with kicad-footprint-generator +connector JST PUD side entry +0 +32 +32 +Connector_JST +JST_PUD_B34B-PUDSS_2x17_P2.00mm_Vertical +JST PUD series connector, B34B-PUDSS (http://www.jst-mfg.com/product/pdf/eng/ePUD.pdf), generated with kicad-footprint-generator +connector JST PUD side entry +0 +34 +34 +Connector_JST +JST_PUD_B36B-PUDSS_2x18_P2.00mm_Vertical +JST PUD series connector, B36B-PUDSS (http://www.jst-mfg.com/product/pdf/eng/ePUD.pdf), generated with kicad-footprint-generator +connector JST PUD side entry +0 +36 +36 +Connector_JST +JST_PUD_B38B-PUDSS_2x19_P2.00mm_Vertical +JST PUD series connector, B38B-PUDSS (http://www.jst-mfg.com/product/pdf/eng/ePUD.pdf), generated with kicad-footprint-generator +connector JST PUD side entry +0 +38 +38 +Connector_JST +JST_PUD_B40B-PUDSS_2x20_P2.00mm_Vertical +JST PUD series connector, B40B-PUDSS (http://www.jst-mfg.com/product/pdf/eng/ePUD.pdf), generated with kicad-footprint-generator +connector JST PUD side entry +0 +40 +40 +Connector_JST +JST_PUD_S08B-PUDSS-1_2x04_P2.00mm_Horizontal +JST PUD series connector, S08B-PUDSS-1 (http://www.jst-mfg.com/product/pdf/eng/ePUD.pdf), generated with kicad-footprint-generator +connector JST PUD top entry +0 +8 +8 +Connector_JST +JST_PUD_S10B-PUDSS-1_2x05_P2.00mm_Horizontal +JST PUD series connector, S10B-PUDSS-1 (http://www.jst-mfg.com/product/pdf/eng/ePUD.pdf), generated with kicad-footprint-generator +connector JST PUD top entry +0 +10 +10 +Connector_JST +JST_PUD_S12B-PUDSS-1_2x06_P2.00mm_Horizontal +JST PUD series connector, S12B-PUDSS-1 (http://www.jst-mfg.com/product/pdf/eng/ePUD.pdf), generated with kicad-footprint-generator +connector JST PUD top entry +0 +12 +12 +Connector_JST +JST_PUD_S14B-PUDSS-1_2x07_P2.00mm_Horizontal +JST PUD series connector, S14B-PUDSS-1 (http://www.jst-mfg.com/product/pdf/eng/ePUD.pdf), generated with kicad-footprint-generator +connector JST PUD top entry +0 +14 +14 +Connector_JST +JST_PUD_S16B-PUDSS-1_2x08_P2.00mm_Horizontal +JST PUD series connector, S16B-PUDSS-1 (http://www.jst-mfg.com/product/pdf/eng/ePUD.pdf), generated with kicad-footprint-generator +connector JST PUD top entry +0 +16 +16 +Connector_JST +JST_PUD_S18B-PUDSS-1_2x09_P2.00mm_Horizontal +JST PUD series connector, S18B-PUDSS-1 (http://www.jst-mfg.com/product/pdf/eng/ePUD.pdf), generated with kicad-footprint-generator +connector JST PUD top entry +0 +18 +18 +Connector_JST +JST_PUD_S20B-PUDSS-1_2x10_P2.00mm_Horizontal +JST PUD series connector, S20B-PUDSS-1 (http://www.jst-mfg.com/product/pdf/eng/ePUD.pdf), generated with kicad-footprint-generator +connector JST PUD top entry +0 +20 +20 +Connector_JST +JST_PUD_S22B-PUDSS-1_2x11_P2.00mm_Horizontal +JST PUD series connector, S22B-PUDSS-1 (http://www.jst-mfg.com/product/pdf/eng/ePUD.pdf), generated with kicad-footprint-generator +connector JST PUD top entry +0 +22 +22 +Connector_JST +JST_PUD_S24B-PUDSS-1_2x12_P2.00mm_Horizontal +JST PUD series connector, S24B-PUDSS-1 (http://www.jst-mfg.com/product/pdf/eng/ePUD.pdf), generated with kicad-footprint-generator +connector JST PUD top entry +0 +24 +24 +Connector_JST +JST_PUD_S26B-PUDSS-1_2x13_P2.00mm_Horizontal +JST PUD series connector, S26B-PUDSS-1 (http://www.jst-mfg.com/product/pdf/eng/ePUD.pdf), generated with kicad-footprint-generator +connector JST PUD top entry +0 +26 +26 +Connector_JST +JST_PUD_S28B-PUDSS-1_2x14_P2.00mm_Horizontal +JST PUD series connector, S28B-PUDSS-1 (http://www.jst-mfg.com/product/pdf/eng/ePUD.pdf), generated with kicad-footprint-generator +connector JST PUD top entry +0 +28 +28 +Connector_JST +JST_PUD_S30B-PUDSS-1_2x15_P2.00mm_Horizontal +JST PUD series connector, S30B-PUDSS-1 (http://www.jst-mfg.com/product/pdf/eng/ePUD.pdf), generated with kicad-footprint-generator +connector JST PUD top entry +0 +30 +30 +Connector_JST +JST_PUD_S32B-PUDSS-1_2x16_P2.00mm_Horizontal +JST PUD series connector, S32B-PUDSS-1 (http://www.jst-mfg.com/product/pdf/eng/ePUD.pdf), generated with kicad-footprint-generator +connector JST PUD top entry +0 +32 +32 +Connector_JST +JST_PUD_S34B-PUDSS-1_2x17_P2.00mm_Horizontal +JST PUD series connector, S34B-PUDSS-1 (http://www.jst-mfg.com/product/pdf/eng/ePUD.pdf), generated with kicad-footprint-generator +connector JST PUD top entry +0 +34 +34 +Connector_JST +JST_PUD_S36B-PUDSS-1_2x18_P2.00mm_Horizontal +JST PUD series connector, S36B-PUDSS-1 (http://www.jst-mfg.com/product/pdf/eng/ePUD.pdf), generated with kicad-footprint-generator +connector JST PUD top entry +0 +36 +36 +Connector_JST +JST_PUD_S38B-PUDSS-1_2x19_P2.00mm_Horizontal +JST PUD series connector, S38B-PUDSS-1 (http://www.jst-mfg.com/product/pdf/eng/ePUD.pdf), generated with kicad-footprint-generator +connector JST PUD top entry +0 +38 +38 +Connector_JST +JST_PUD_S40B-PUDSS-1_2x20_P2.00mm_Horizontal +JST PUD series connector, S40B-PUDSS-1 (http://www.jst-mfg.com/product/pdf/eng/ePUD.pdf), generated with kicad-footprint-generator +connector JST PUD top entry +0 +40 +40 +Connector_JST +JST_SFH_SM02B-SFHRS-TF_1x02-1MP_P4.20mm_Horizontal +JST SFH series connector, SM02B-SFHRS-TF (http://www.jst-mfg.com/product/pdf/eng/eSFH.pdf), generated with kicad-footprint-generator +connector JST SFH horizontal +0 +4 +3 +Connector_JST +JST_SHL_SM02B-SHLS-TF_1x02-1MP_P1.00mm_Horizontal +JST SHL series connector, SM02B-SHLS-TF (http://www.jst-mfg.com/product/pdf/eng/eSHL.pdf), generated with kicad-footprint-generator +connector JST SHL top entry +0 +4 +3 +Connector_JST +JST_SHL_SM05B-SHLS-TF_1x05-1MP_P1.00mm_Horizontal +JST SHL series connector, SM05B-SHLS-TF (http://www.jst-mfg.com/product/pdf/eng/eSHL.pdf), generated with kicad-footprint-generator +connector JST SHL top entry +0 +7 +6 +Connector_JST +JST_SHL_SM06B-SHLS-TF_1x06-1MP_P1.00mm_Horizontal +JST SHL series connector, SM06B-SHLS-TF (http://www.jst-mfg.com/product/pdf/eng/eSHL.pdf), generated with kicad-footprint-generator +connector JST SHL top entry +0 +8 +7 +Connector_JST +JST_SHL_SM07B-SHLS-TF_1x07-1MP_P1.00mm_Horizontal +JST SHL series connector, SM07B-SHLS-TF (http://www.jst-mfg.com/product/pdf/eng/eSHL.pdf), generated with kicad-footprint-generator +connector JST SHL top entry +0 +9 +8 +Connector_JST +JST_SHL_SM08B-SHLS-TF_1x08-1MP_P1.00mm_Horizontal +JST SHL series connector, SM08B-SHLS-TF (http://www.jst-mfg.com/product/pdf/eng/eSHL.pdf), generated with kicad-footprint-generator +connector JST SHL top entry +0 +10 +9 +Connector_JST +JST_SHL_SM10B-SHLS-TF_1x10-1MP_P1.00mm_Horizontal +JST SHL series connector, SM10B-SHLS-TF (http://www.jst-mfg.com/product/pdf/eng/eSHL.pdf), generated with kicad-footprint-generator +connector JST SHL top entry +0 +12 +11 +Connector_JST +JST_SHL_SM11B-SHLS-TF_1x11-1MP_P1.00mm_Horizontal +JST SHL series connector, SM11B-SHLS-TF (http://www.jst-mfg.com/product/pdf/eng/eSHL.pdf), generated with kicad-footprint-generator +connector JST SHL top entry +0 +13 +12 +Connector_JST +JST_SHL_SM12B-SHLS-TF_1x12-1MP_P1.00mm_Horizontal +JST SHL series connector, SM12B-SHLS-TF (http://www.jst-mfg.com/product/pdf/eng/eSHL.pdf), generated with kicad-footprint-generator +connector JST SHL top entry +0 +14 +13 +Connector_JST +JST_SHL_SM14B-SHLS-TF_1x14-1MP_P1.00mm_Horizontal +JST SHL series connector, SM14B-SHLS-TF (http://www.jst-mfg.com/product/pdf/eng/eSHL.pdf), generated with kicad-footprint-generator +connector JST SHL top entry +0 +16 +15 +Connector_JST +JST_SHL_SM16B-SHLS-TF_1x16-1MP_P1.00mm_Horizontal +JST SHL series connector, SM16B-SHLS-TF (http://www.jst-mfg.com/product/pdf/eng/eSHL.pdf), generated with kicad-footprint-generator +connector JST SHL top entry +0 +18 +17 +Connector_JST +JST_SHL_SM20B-SHLS-TF_1x20-1MP_P1.00mm_Horizontal +JST SHL series connector, SM20B-SHLS-TF (http://www.jst-mfg.com/product/pdf/eng/eSHL.pdf), generated with kicad-footprint-generator +connector JST SHL top entry +0 +22 +21 +Connector_JST +JST_SHL_SM22B-SHLS-TF_1x22-1MP_P1.00mm_Horizontal +JST SHL series connector, SM22B-SHLS-TF (http://www.jst-mfg.com/product/pdf/eng/eSHL.pdf), generated with kicad-footprint-generator +connector JST SHL top entry +0 +24 +23 +Connector_JST +JST_SHL_SM26B-SHLS-TF_1x26-1MP_P1.00mm_Horizontal +JST SHL series connector, SM26B-SHLS-TF (http://www.jst-mfg.com/product/pdf/eng/eSHL.pdf), generated with kicad-footprint-generator +connector JST SHL top entry +0 +28 +27 +Connector_JST +JST_SHL_SM30B-SHLS-TF_1x30-1MP_P1.00mm_Horizontal +JST SHL series connector, SM30B-SHLS-TF (http://www.jst-mfg.com/product/pdf/eng/eSHL.pdf), generated with kicad-footprint-generator +connector JST SHL top entry +0 +32 +31 +Connector_JST +JST_SH_BM02B-SRSS-TB_1x02-1MP_P1.00mm_Vertical +JST SH series connector, BM02B-SRSS-TB (http://www.jst-mfg.com/product/pdf/eng/eSH.pdf), generated with kicad-footprint-generator +connector JST SH side entry +0 +4 +3 +Connector_JST +JST_SH_BM03B-SRSS-TB_1x03-1MP_P1.00mm_Vertical +JST SH series connector, BM03B-SRSS-TB (http://www.jst-mfg.com/product/pdf/eng/eSH.pdf), generated with kicad-footprint-generator +connector JST SH side entry +0 +5 +4 +Connector_JST +JST_SH_BM04B-SRSS-TB_1x04-1MP_P1.00mm_Vertical +JST SH series connector, BM04B-SRSS-TB (http://www.jst-mfg.com/product/pdf/eng/eSH.pdf), generated with kicad-footprint-generator +connector JST SH side entry +0 +6 +5 +Connector_JST +JST_SH_BM05B-SRSS-TB_1x05-1MP_P1.00mm_Vertical +JST SH series connector, BM05B-SRSS-TB (http://www.jst-mfg.com/product/pdf/eng/eSH.pdf), generated with kicad-footprint-generator +connector JST SH side entry +0 +7 +6 +Connector_JST +JST_SH_BM06B-SRSS-TB_1x06-1MP_P1.00mm_Vertical +JST SH series connector, BM06B-SRSS-TB (http://www.jst-mfg.com/product/pdf/eng/eSH.pdf), generated with kicad-footprint-generator +connector JST SH side entry +0 +8 +7 +Connector_JST +JST_SH_BM07B-SRSS-TB_1x07-1MP_P1.00mm_Vertical +JST SH series connector, BM07B-SRSS-TB (http://www.jst-mfg.com/product/pdf/eng/eSH.pdf), generated with kicad-footprint-generator +connector JST SH side entry +0 +9 +8 +Connector_JST +JST_SH_BM08B-SRSS-TB_1x08-1MP_P1.00mm_Vertical +JST SH series connector, BM08B-SRSS-TB (http://www.jst-mfg.com/product/pdf/eng/eSH.pdf), generated with kicad-footprint-generator +connector JST SH side entry +0 +10 +9 +Connector_JST +JST_SH_BM09B-SRSS-TB_1x09-1MP_P1.00mm_Vertical +JST SH series connector, BM09B-SRSS-TB (http://www.jst-mfg.com/product/pdf/eng/eSH.pdf), generated with kicad-footprint-generator +connector JST SH side entry +0 +11 +10 +Connector_JST +JST_SH_BM10B-SRSS-TB_1x10-1MP_P1.00mm_Vertical +JST SH series connector, BM10B-SRSS-TB (http://www.jst-mfg.com/product/pdf/eng/eSH.pdf), generated with kicad-footprint-generator +connector JST SH side entry +0 +12 +11 +Connector_JST +JST_SH_BM11B-SRSS-TB_1x11-1MP_P1.00mm_Vertical +JST SH series connector, BM11B-SRSS-TB (http://www.jst-mfg.com/product/pdf/eng/eSH.pdf), generated with kicad-footprint-generator +connector JST SH side entry +0 +13 +12 +Connector_JST +JST_SH_BM12B-SRSS-TB_1x12-1MP_P1.00mm_Vertical +JST SH series connector, BM12B-SRSS-TB (http://www.jst-mfg.com/product/pdf/eng/eSH.pdf), generated with kicad-footprint-generator +connector JST SH side entry +0 +14 +13 +Connector_JST +JST_SH_BM13B-SRSS-TB_1x13-1MP_P1.00mm_Vertical +JST SH series connector, BM13B-SRSS-TB (http://www.jst-mfg.com/product/pdf/eng/eSH.pdf), generated with kicad-footprint-generator +connector JST SH side entry +0 +15 +14 +Connector_JST +JST_SH_BM14B-SRSS-TB_1x14-1MP_P1.00mm_Vertical +JST SH series connector, BM14B-SRSS-TB (http://www.jst-mfg.com/product/pdf/eng/eSH.pdf), generated with kicad-footprint-generator +connector JST SH side entry +0 +16 +15 +Connector_JST +JST_SH_BM15B-SRSS-TB_1x15-1MP_P1.00mm_Vertical +JST SH series connector, BM15B-SRSS-TB (http://www.jst-mfg.com/product/pdf/eng/eSH.pdf), generated with kicad-footprint-generator +connector JST SH side entry +0 +17 +16 +Connector_JST +JST_SH_SM02B-SRSS-TB_1x02-1MP_P1.00mm_Horizontal +JST SH series connector, SM02B-SRSS-TB (http://www.jst-mfg.com/product/pdf/eng/eSH.pdf), generated with kicad-footprint-generator +connector JST SH top entry +0 +4 +3 +Connector_JST +JST_SH_SM03B-SRSS-TB_1x03-1MP_P1.00mm_Horizontal +JST SH series connector, SM03B-SRSS-TB (http://www.jst-mfg.com/product/pdf/eng/eSH.pdf), generated with kicad-footprint-generator +connector JST SH top entry +0 +5 +4 +Connector_JST +JST_SH_SM04B-SRSS-TB_1x04-1MP_P1.00mm_Horizontal +JST SH series connector, SM04B-SRSS-TB (http://www.jst-mfg.com/product/pdf/eng/eSH.pdf), generated with kicad-footprint-generator +connector JST SH top entry +0 +6 +5 +Connector_JST +JST_SH_SM05B-SRSS-TB_1x05-1MP_P1.00mm_Horizontal +JST SH series connector, SM05B-SRSS-TB (http://www.jst-mfg.com/product/pdf/eng/eSH.pdf), generated with kicad-footprint-generator +connector JST SH top entry +0 +7 +6 +Connector_JST +JST_SH_SM06B-SRSS-TB_1x06-1MP_P1.00mm_Horizontal +JST SH series connector, SM06B-SRSS-TB (http://www.jst-mfg.com/product/pdf/eng/eSH.pdf), generated with kicad-footprint-generator +connector JST SH top entry +0 +8 +7 +Connector_JST +JST_SH_SM07B-SRSS-TB_1x07-1MP_P1.00mm_Horizontal +JST SH series connector, SM07B-SRSS-TB (http://www.jst-mfg.com/product/pdf/eng/eSH.pdf), generated with kicad-footprint-generator +connector JST SH top entry +0 +9 +8 +Connector_JST +JST_SH_SM08B-SRSS-TB_1x08-1MP_P1.00mm_Horizontal +JST SH series connector, SM08B-SRSS-TB (http://www.jst-mfg.com/product/pdf/eng/eSH.pdf), generated with kicad-footprint-generator +connector JST SH top entry +0 +10 +9 +Connector_JST +JST_SH_SM09B-SRSS-TB_1x09-1MP_P1.00mm_Horizontal +JST SH series connector, SM09B-SRSS-TB (http://www.jst-mfg.com/product/pdf/eng/eSH.pdf), generated with kicad-footprint-generator +connector JST SH top entry +0 +11 +10 +Connector_JST +JST_SH_SM10B-SRSS-TB_1x10-1MP_P1.00mm_Horizontal +JST SH series connector, SM10B-SRSS-TB (http://www.jst-mfg.com/product/pdf/eng/eSH.pdf), generated with kicad-footprint-generator +connector JST SH top entry +0 +12 +11 +Connector_JST +JST_SH_SM11B-SRSS-TB_1x11-1MP_P1.00mm_Horizontal +JST SH series connector, SM11B-SRSS-TB (http://www.jst-mfg.com/product/pdf/eng/eSH.pdf), generated with kicad-footprint-generator +connector JST SH top entry +0 +13 +12 +Connector_JST +JST_SH_SM12B-SRSS-TB_1x12-1MP_P1.00mm_Horizontal +JST SH series connector, SM12B-SRSS-TB (http://www.jst-mfg.com/product/pdf/eng/eSH.pdf), generated with kicad-footprint-generator +connector JST SH top entry +0 +14 +13 +Connector_JST +JST_SH_SM13B-SRSS-TB_1x13-1MP_P1.00mm_Horizontal +JST SH series connector, SM13B-SRSS-TB (http://www.jst-mfg.com/product/pdf/eng/eSH.pdf), generated with kicad-footprint-generator +connector JST SH top entry +0 +15 +14 +Connector_JST +JST_SH_SM14B-SRSS-TB_1x14-1MP_P1.00mm_Horizontal +JST SH series connector, SM14B-SRSS-TB (http://www.jst-mfg.com/product/pdf/eng/eSH.pdf), generated with kicad-footprint-generator +connector JST SH top entry +0 +16 +15 +Connector_JST +JST_SH_SM15B-SRSS-TB_1x15-1MP_P1.00mm_Horizontal +JST SH series connector, SM15B-SRSS-TB (http://www.jst-mfg.com/product/pdf/eng/eSH.pdf), generated with kicad-footprint-generator +connector JST SH top entry +0 +17 +16 +Connector_JST +JST_SH_SM20B-SRSS-TB_1x20-1MP_P1.00mm_Horizontal +JST SH series connector, SM20B-SRSS-TB (http://www.jst-mfg.com/product/pdf/eng/eSH.pdf), generated with kicad-footprint-generator +connector JST SH top entry +0 +22 +21 +Connector_JST +JST_SUR_BM02B-SURS-TF_1x02-1MP_P0.80mm_Vertical +JST SUR series connector, BM02B-SURS-TF (http://www.jst-mfg.com/product/pdf/eng/eSUR.pdf), generated with kicad-footprint-generator +connector JST SUR side entry +0 +4 +3 +Connector_JST +JST_SUR_BM03B-SURS-TF_1x03-1MP_P0.80mm_Vertical +JST SUR series connector, BM03B-SURS-TF (http://www.jst-mfg.com/product/pdf/eng/eSUR.pdf), generated with kicad-footprint-generator +connector JST SUR side entry +0 +5 +4 +Connector_JST +JST_SUR_BM04B-SURS-TF_1x04-1MP_P0.80mm_Vertical +JST SUR series connector, BM04B-SURS-TF (http://www.jst-mfg.com/product/pdf/eng/eSUR.pdf), generated with kicad-footprint-generator +connector JST SUR side entry +0 +6 +5 +Connector_JST +JST_SUR_BM05B-SURS-TF_1x05-1MP_P0.80mm_Vertical +JST SUR series connector, BM05B-SURS-TF (http://www.jst-mfg.com/product/pdf/eng/eSUR.pdf), generated with kicad-footprint-generator +connector JST SUR side entry +0 +7 +6 +Connector_JST +JST_SUR_BM06B-SURS-TF_1x06-1MP_P0.80mm_Vertical +JST SUR series connector, BM06B-SURS-TF (http://www.jst-mfg.com/product/pdf/eng/eSUR.pdf), generated with kicad-footprint-generator +connector JST SUR side entry +0 +8 +7 +Connector_JST +JST_SUR_BM08B-SURS-TF_1x08-1MP_P0.80mm_Vertical +JST SUR series connector, BM08B-SURS-TF (http://www.jst-mfg.com/product/pdf/eng/eSUR.pdf), generated with kicad-footprint-generator +connector JST SUR side entry +0 +10 +9 +Connector_JST +JST_SUR_BM10B-SURS-TF_1x10-1MP_P0.80mm_Vertical +JST SUR series connector, BM10B-SURS-TF (http://www.jst-mfg.com/product/pdf/eng/eSUR.pdf), generated with kicad-footprint-generator +connector JST SUR side entry +0 +12 +11 +Connector_JST +JST_SUR_BM12B-SURS-TF_1x12-1MP_P0.80mm_Vertical +JST SUR series connector, BM12B-SURS-TF (http://www.jst-mfg.com/product/pdf/eng/eSUR.pdf), generated with kicad-footprint-generator +connector JST SUR side entry +0 +14 +13 +Connector_JST +JST_SUR_BM14B-SURS-TF_1x14-1MP_P0.80mm_Vertical +JST SUR series connector, BM14B-SURS-TF (http://www.jst-mfg.com/product/pdf/eng/eSUR.pdf), generated with kicad-footprint-generator +connector JST SUR side entry +0 +16 +15 +Connector_JST +JST_SUR_BM15B-SURS-TF_1x15-1MP_P0.80mm_Vertical +JST SUR series connector, BM15B-SURS-TF (http://www.jst-mfg.com/product/pdf/eng/eSUR.pdf), generated with kicad-footprint-generator +connector JST SUR side entry +0 +17 +16 +Connector_JST +JST_SUR_BM16B-SURS-TF_1x16-1MP_P0.80mm_Vertical +JST SUR series connector, BM16B-SURS-TF (http://www.jst-mfg.com/product/pdf/eng/eSUR.pdf), generated with kicad-footprint-generator +connector JST SUR side entry +0 +18 +17 +Connector_JST +JST_SUR_BM17B-SURS-TF_1x17-1MP_P0.80mm_Vertical +JST SUR series connector, BM17B-SURS-TF (http://www.jst-mfg.com/product/pdf/eng/eSUR.pdf), generated with kicad-footprint-generator +connector JST SUR side entry +0 +19 +18 +Connector_JST +JST_SUR_BM20B-SURS-TF_1x20-1MP_P0.80mm_Vertical +JST SUR series connector, BM20B-SURS-TF (http://www.jst-mfg.com/product/pdf/eng/eSUR.pdf), generated with kicad-footprint-generator +connector JST SUR side entry +0 +22 +21 +Connector_JST +JST_SUR_SM02B-SURS-TF_1x02-1MP_P0.80mm_Horizontal +JST SUR series connector, SM02B-SURS-TF (http://www.jst-mfg.com/product/pdf/eng/eSUR.pdf), generated with kicad-footprint-generator +connector JST SUR top entry +0 +4 +3 +Connector_JST +JST_SUR_SM03B-SURS-TF_1x03-1MP_P0.80mm_Horizontal +JST SUR series connector, SM03B-SURS-TF (http://www.jst-mfg.com/product/pdf/eng/eSUR.pdf), generated with kicad-footprint-generator +connector JST SUR top entry +0 +5 +4 +Connector_JST +JST_SUR_SM04B-SURS-TF_1x04-1MP_P0.80mm_Horizontal +JST SUR series connector, SM04B-SURS-TF (http://www.jst-mfg.com/product/pdf/eng/eSUR.pdf), generated with kicad-footprint-generator +connector JST SUR top entry +0 +6 +5 +Connector_JST +JST_SUR_SM05B-SURS-TF_1x05-1MP_P0.80mm_Horizontal +JST SUR series connector, SM05B-SURS-TF (http://www.jst-mfg.com/product/pdf/eng/eSUR.pdf), generated with kicad-footprint-generator +connector JST SUR top entry +0 +7 +6 +Connector_JST +JST_SUR_SM06B-SURS-TF_1x06-1MP_P0.80mm_Horizontal +JST SUR series connector, SM06B-SURS-TF (http://www.jst-mfg.com/product/pdf/eng/eSUR.pdf), generated with kicad-footprint-generator +connector JST SUR top entry +0 +8 +7 +Connector_JST +JST_SUR_SM08B-SURS-TF_1x08-1MP_P0.80mm_Horizontal +JST SUR series connector, SM08B-SURS-TF (http://www.jst-mfg.com/product/pdf/eng/eSUR.pdf), generated with kicad-footprint-generator +connector JST SUR top entry +0 +10 +9 +Connector_JST +JST_SUR_SM10B-SURS-TF_1x10-1MP_P0.80mm_Horizontal +JST SUR series connector, SM10B-SURS-TF (http://www.jst-mfg.com/product/pdf/eng/eSUR.pdf), generated with kicad-footprint-generator +connector JST SUR top entry +0 +12 +11 +Connector_JST +JST_SUR_SM12B-SURS-TF_1x12-1MP_P0.80mm_Horizontal +JST SUR series connector, SM12B-SURS-TF (http://www.jst-mfg.com/product/pdf/eng/eSUR.pdf), generated with kicad-footprint-generator +connector JST SUR top entry +0 +14 +13 +Connector_JST +JST_SUR_SM14B-SURS-TF_1x14-1MP_P0.80mm_Horizontal +JST SUR series connector, SM14B-SURS-TF (http://www.jst-mfg.com/product/pdf/eng/eSUR.pdf), generated with kicad-footprint-generator +connector JST SUR top entry +0 +16 +15 +Connector_JST +JST_SUR_SM15B-SURS-TF_1x15-1MP_P0.80mm_Horizontal +JST SUR series connector, SM15B-SURS-TF (http://www.jst-mfg.com/product/pdf/eng/eSUR.pdf), generated with kicad-footprint-generator +connector JST SUR top entry +0 +17 +16 +Connector_JST +JST_SUR_SM16B-SURS-TF_1x16-1MP_P0.80mm_Horizontal +JST SUR series connector, SM16B-SURS-TF (http://www.jst-mfg.com/product/pdf/eng/eSUR.pdf), generated with kicad-footprint-generator +connector JST SUR top entry +0 +18 +17 +Connector_JST +JST_SUR_SM17B-SURS-TF_1x17-1MP_P0.80mm_Horizontal +JST SUR series connector, SM17B-SURS-TF (http://www.jst-mfg.com/product/pdf/eng/eSUR.pdf), generated with kicad-footprint-generator +connector JST SUR top entry +0 +19 +18 +Connector_JST +JST_SUR_SM20B-SURS-TF_1x20-1MP_P0.80mm_Horizontal +JST SUR series connector, SM20B-SURS-TF (http://www.jst-mfg.com/product/pdf/eng/eSUR.pdf), generated with kicad-footprint-generator +connector JST SUR top entry +0 +22 +21 +Connector_JST +JST_SUR_SM22B-SURS-TF_1x22-1MP_P0.80mm_Horizontal +JST SUR series connector, SM22B-SURS-TF (http://www.jst-mfg.com/product/pdf/eng/eSUR.pdf), generated with kicad-footprint-generator +connector JST SUR top entry +0 +24 +23 +Connector_JST +JST_VH_B2P-VH-B_1x02_P3.96mm_Vertical +JST VH PBT series connector, B2P-VH-B (http://www.jst-mfg.com/product/pdf/eng/eVH.pdf), generated with kicad-footprint-generator +connector JST VH vertical +0 +2 +2 +Connector_JST +JST_VH_B2P-VH-FB-B_1x02_P3.96mm_Vertical +JST VH series connector, B2P-VH-FB-B, shrouded (http://www.jst-mfg.com/product/pdf/eng/eVH.pdf), generated with kicad-footprint-generator +connector JST VH side entry +0 +2 +2 +Connector_JST +JST_VH_B2P-VH_1x02_P3.96mm_Vertical +JST VH series connector, B2P-VH (http://www.jst-mfg.com/product/pdf/eng/eVH.pdf), generated with kicad-footprint-generator +connector JST VH vertical +0 +2 +2 +Connector_JST +JST_VH_B2P3-VH_1x02_P7.92mm_Vertical +JST VH series connector, B2P3-VH (http://www.jst-mfg.com/product/pdf/eng/eVH.pdf), generated with kicad-footprint-generator +connector JST VH vertical +0 +2 +2 +Connector_JST +JST_VH_B2PS-VH_1x02_P3.96mm_Horizontal +JST VH series connector, B2PS-VH (http://www.jst-mfg.com/product/pdf/eng/eVH.pdf), generated with kicad-footprint-generator +connector JST VH top entry +0 +2 +2 +Connector_JST +JST_VH_B3P-VH-B_1x03_P3.96mm_Vertical +JST VH PBT series connector, B3P-VH-B (http://www.jst-mfg.com/product/pdf/eng/eVH.pdf), generated with kicad-footprint-generator +connector JST VH vertical +0 +3 +3 +Connector_JST +JST_VH_B3P-VH-FB-B_1x03_P3.96mm_Vertical +JST VH series connector, B3P-VH-FB-B, shrouded (http://www.jst-mfg.com/product/pdf/eng/eVH.pdf), generated with kicad-footprint-generator +connector JST VH side entry +0 +3 +3 +Connector_JST +JST_VH_B3P-VH_1x03_P3.96mm_Vertical +JST VH series connector, B3P-VH (http://www.jst-mfg.com/product/pdf/eng/eVH.pdf), generated with kicad-footprint-generator +connector JST VH vertical +0 +3 +3 +Connector_JST +JST_VH_B3PS-VH_1x03_P3.96mm_Horizontal +JST VH series connector, B3PS-VH (http://www.jst-mfg.com/product/pdf/eng/eVH.pdf), generated with kicad-footprint-generator +connector JST VH top entry +0 +3 +3 +Connector_JST +JST_VH_B4P-VH-B_1x04_P3.96mm_Vertical +JST VH PBT series connector, B4P-VH-B (http://www.jst-mfg.com/product/pdf/eng/eVH.pdf), generated with kicad-footprint-generator +connector JST VH vertical +0 +4 +4 +Connector_JST +JST_VH_B4P-VH-FB-B_1x04_P3.96mm_Vertical +JST VH series connector, B4P-VH-FB-B, shrouded (http://www.jst-mfg.com/product/pdf/eng/eVH.pdf), generated with kicad-footprint-generator +connector JST VH side entry +0 +4 +4 +Connector_JST +JST_VH_B4P-VH_1x04_P3.96mm_Vertical +JST VH series connector, B4P-VH (http://www.jst-mfg.com/product/pdf/eng/eVH.pdf), generated with kicad-footprint-generator +connector JST VH vertical +0 +4 +4 +Connector_JST +JST_VH_B4PS-VH_1x04_P3.96mm_Horizontal +JST VH series connector, B4PS-VH (http://www.jst-mfg.com/product/pdf/eng/eVH.pdf), generated with kicad-footprint-generator +connector JST VH top entry +0 +4 +4 +Connector_JST +JST_VH_B5P-VH-B_1x05_P3.96mm_Vertical +JST VH PBT series connector, B5P-VH-B (http://www.jst-mfg.com/product/pdf/eng/eVH.pdf), generated with kicad-footprint-generator +connector JST VH vertical +0 +5 +5 +Connector_JST +JST_VH_B5P-VH-FB-B_1x05_P3.96mm_Vertical +JST VH series connector, B5P-VH-FB-B, shrouded (http://www.jst-mfg.com/product/pdf/eng/eVH.pdf), generated with kicad-footprint-generator +connector JST VH side entry +0 +5 +5 +Connector_JST +JST_VH_B5P-VH_1x05_P3.96mm_Vertical +JST VH series connector, B5P-VH (http://www.jst-mfg.com/product/pdf/eng/eVH.pdf), generated with kicad-footprint-generator +connector JST VH vertical +0 +5 +5 +Connector_JST +JST_VH_B5PS-VH_1x05_P3.96mm_Horizontal +JST VH series connector, B5PS-VH (http://www.jst-mfg.com/product/pdf/eng/eVH.pdf), generated with kicad-footprint-generator +connector JST VH top entry +0 +5 +5 +Connector_JST +JST_VH_B6P-VH-B_1x06_P3.96mm_Vertical +JST VH PBT series connector, B6P-VH-B (http://www.jst-mfg.com/product/pdf/eng/eVH.pdf), generated with kicad-footprint-generator +connector JST VH vertical +0 +6 +6 +Connector_JST +JST_VH_B6P-VH-FB-B_1x06_P3.96mm_Vertical +JST VH series connector, B6P-VH-FB-B, shrouded (http://www.jst-mfg.com/product/pdf/eng/eVH.pdf), generated with kicad-footprint-generator +connector JST VH side entry +0 +6 +6 +Connector_JST +JST_VH_B6P-VH_1x06_P3.96mm_Vertical +JST VH series connector, B6P-VH (http://www.jst-mfg.com/product/pdf/eng/eVH.pdf), generated with kicad-footprint-generator +connector JST VH vertical +0 +6 +6 +Connector_JST +JST_VH_B6PS-VH_1x06_P3.96mm_Horizontal +JST VH series connector, B6PS-VH (http://www.jst-mfg.com/product/pdf/eng/eVH.pdf), generated with kicad-footprint-generator +connector JST VH top entry +0 +6 +6 +Connector_JST +JST_VH_B7P-VH-B_1x07_P3.96mm_Vertical +JST VH PBT series connector, B7P-VH-B (http://www.jst-mfg.com/product/pdf/eng/eVH.pdf), generated with kicad-footprint-generator +connector JST VH vertical +0 +7 +7 +Connector_JST +JST_VH_B7P-VH-FB-B_1x07_P3.96mm_Vertical +JST VH series connector, B7P-VH-FB-B, shrouded (http://www.jst-mfg.com/product/pdf/eng/eVH.pdf), generated with kicad-footprint-generator +connector JST VH side entry +0 +7 +7 +Connector_JST +JST_VH_B7P-VH_1x07_P3.96mm_Vertical +JST VH series connector, B7P-VH (http://www.jst-mfg.com/product/pdf/eng/eVH.pdf), generated with kicad-footprint-generator +connector JST VH vertical +0 +7 +7 +Connector_JST +JST_VH_B7PS-VH_1x07_P3.96mm_Horizontal +JST VH series connector, B7PS-VH (http://www.jst-mfg.com/product/pdf/eng/eVH.pdf), generated with kicad-footprint-generator +connector JST VH top entry +0 +7 +7 +Connector_JST +JST_VH_B8P-VH-B_1x08_P3.96mm_Vertical +JST VH PBT series connector, B8P-VH-B (http://www.jst-mfg.com/product/pdf/eng/eVH.pdf), generated with kicad-footprint-generator +connector JST VH vertical +0 +8 +8 +Connector_JST +JST_VH_B8P-VH-FB-B_1x08_P3.96mm_Vertical +JST VH series connector, B8P-VH-FB-B, shrouded (http://www.jst-mfg.com/product/pdf/eng/eVH.pdf), generated with kicad-footprint-generator +connector JST VH side entry +0 +8 +8 +Connector_JST +JST_VH_B8P-VH_1x08_P3.96mm_Vertical +JST VH series connector, B8P-VH (http://www.jst-mfg.com/product/pdf/eng/eVH.pdf), generated with kicad-footprint-generator +connector JST VH vertical +0 +8 +8 +Connector_JST +JST_VH_B8PS-VH_1x08_P3.96mm_Horizontal +JST VH series connector, B8PS-VH (http://www.jst-mfg.com/product/pdf/eng/eVH.pdf), generated with kicad-footprint-generator +connector JST VH top entry +0 +8 +8 +Connector_JST +JST_VH_B9P-VH-B_1x09_P3.96mm_Vertical +JST VH PBT series connector, B9P-VH-B (http://www.jst-mfg.com/product/pdf/eng/eVH.pdf), generated with kicad-footprint-generator +connector JST VH vertical +0 +9 +9 +Connector_JST +JST_VH_B9P-VH-FB-B_1x09_P3.96mm_Vertical +JST VH series connector, B9P-VH-FB-B, shrouded (http://www.jst-mfg.com/product/pdf/eng/eVH.pdf), generated with kicad-footprint-generator +connector JST VH side entry +0 +9 +9 +Connector_JST +JST_VH_B9P-VH_1x09_P3.96mm_Vertical +JST VH series connector, B9P-VH (http://www.jst-mfg.com/product/pdf/eng/eVH.pdf), generated with kicad-footprint-generator +connector JST VH vertical +0 +9 +9 +Connector_JST +JST_VH_B9PS-VH_1x09_P3.96mm_Horizontal +JST VH series connector, B9PS-VH (http://www.jst-mfg.com/product/pdf/eng/eVH.pdf), generated with kicad-footprint-generator +connector JST VH top entry +0 +9 +9 +Connector_JST +JST_VH_B10P-VH-B_1x10_P3.96mm_Vertical +JST VH PBT series connector, B10P-VH-B (http://www.jst-mfg.com/product/pdf/eng/eVH.pdf), generated with kicad-footprint-generator +connector JST VH vertical +0 +10 +10 +Connector_JST +JST_VH_B10P-VH-FB-B_1x10_P3.96mm_Vertical +JST VH series connector, B10P-VH-FB-B, shrouded (http://www.jst-mfg.com/product/pdf/eng/eVH.pdf), generated with kicad-footprint-generator +connector JST VH side entry +0 +10 +10 +Connector_JST +JST_VH_B10P-VH_1x10_P3.96mm_Vertical +JST VH series connector, B10P-VH (http://www.jst-mfg.com/product/pdf/eng/eVH.pdf), generated with kicad-footprint-generator +connector JST VH vertical +0 +10 +10 +Connector_JST +JST_VH_B10PS-VH_1x10_P3.96mm_Horizontal +JST VH series connector, B10PS-VH (http://www.jst-mfg.com/product/pdf/eng/eVH.pdf), generated with kicad-footprint-generator +connector JST VH top entry +0 +10 +10 +Connector_JST +JST_VH_B11P-VH-B_1x11_P3.96mm_Vertical +JST VH PBT series connector, B11P-VH-B (http://www.jst-mfg.com/product/pdf/eng/eVH.pdf), generated with kicad-footprint-generator +connector JST VH vertical +0 +11 +11 +Connector_JST +JST_VH_S2P-VH_1x02_P3.96mm_Horizontal +JST VH series connector, S2P-VH (http://www.jst-mfg.com/product/pdf/eng/eVH.pdf), generated with kicad-footprint-generator +connector JST VH top entry +0 +2 +2 +Connector_JST +JST_VH_S3P-VH_1x03_P3.96mm_Horizontal +JST VH series connector, S3P-VH (http://www.jst-mfg.com/product/pdf/eng/eVH.pdf), generated with kicad-footprint-generator +connector JST VH top entry +0 +3 +3 +Connector_JST +JST_VH_S4P-VH_1x04_P3.96mm_Horizontal +JST VH series connector, S4P-VH (http://www.jst-mfg.com/product/pdf/eng/eVH.pdf), generated with kicad-footprint-generator +connector JST VH top entry +0 +4 +4 +Connector_JST +JST_VH_S5P-VH_1x05_P3.96mm_Horizontal +JST VH series connector, S5P-VH (http://www.jst-mfg.com/product/pdf/eng/eVH.pdf), generated with kicad-footprint-generator +connector JST VH top entry +0 +5 +5 +Connector_JST +JST_VH_S6P-VH_1x06_P3.96mm_Horizontal +JST VH series connector, S6P-VH (http://www.jst-mfg.com/product/pdf/eng/eVH.pdf), generated with kicad-footprint-generator +connector JST VH top entry +0 +6 +6 +Connector_JST +JST_VH_S7P-VH_1x07_P3.96mm_Horizontal +JST VH series connector, S7P-VH (http://www.jst-mfg.com/product/pdf/eng/eVH.pdf), generated with kicad-footprint-generator +connector JST VH top entry +0 +7 +7 +Connector_JST +JST_XAG_SM05B-XAGKS-BN-TB_1x05-1MP_P2.50mm_Horizontal +JST XAG series connector, SM05B-XAGKS-BN-TB (http://www.jst-mfg.com/product/pdf/eng/eXAG.pdf), generated with kicad-footprint-generator +connector JST XAG top entry +0 +7 +6 +Connector_JST +JST_XH_B1B-XH-AM_1x01_P2.50mm_Vertical +JST XH series connector, B1B-XH-AM, with boss (http://www.jst-mfg.com/product/pdf/eng/eXH.pdf), generated with kicad-footprint-generator +connector JST XH vertical boss +0 +1 +1 +Connector_JST +JST_XH_B2B-XH-AM_1x02_P2.50mm_Vertical +JST XH series connector, B2B-XH-AM, with boss (http://www.jst-mfg.com/product/pdf/eng/eXH.pdf), generated with kicad-footprint-generator +connector JST XH vertical boss +0 +2 +2 +Connector_JST +JST_XH_B2B-XH-A_1x02_P2.50mm_Vertical +JST XH series connector, B2B-XH-A (http://www.jst-mfg.com/product/pdf/eng/eXH.pdf), generated with kicad-footprint-generator +connector JST XH vertical +0 +2 +2 +Connector_JST +JST_XH_B3B-XH-AM_1x03_P2.50mm_Vertical +JST XH series connector, B3B-XH-AM, with boss (http://www.jst-mfg.com/product/pdf/eng/eXH.pdf), generated with kicad-footprint-generator +connector JST XH vertical boss +0 +3 +3 +Connector_JST +JST_XH_B3B-XH-A_1x03_P2.50mm_Vertical +JST XH series connector, B3B-XH-A (http://www.jst-mfg.com/product/pdf/eng/eXH.pdf), generated with kicad-footprint-generator +connector JST XH vertical +0 +3 +3 +Connector_JST +JST_XH_B4B-XH-AM_1x04_P2.50mm_Vertical +JST XH series connector, B4B-XH-AM, with boss (http://www.jst-mfg.com/product/pdf/eng/eXH.pdf), generated with kicad-footprint-generator +connector JST XH vertical boss +0 +4 +4 +Connector_JST +JST_XH_B4B-XH-A_1x04_P2.50mm_Vertical +JST XH series connector, B4B-XH-A (http://www.jst-mfg.com/product/pdf/eng/eXH.pdf), generated with kicad-footprint-generator +connector JST XH vertical +0 +4 +4 +Connector_JST +JST_XH_B5B-XH-AM_1x05_P2.50mm_Vertical +JST XH series connector, B5B-XH-AM, with boss (http://www.jst-mfg.com/product/pdf/eng/eXH.pdf), generated with kicad-footprint-generator +connector JST XH vertical boss +0 +5 +5 +Connector_JST +JST_XH_B5B-XH-A_1x05_P2.50mm_Vertical +JST XH series connector, B5B-XH-A (http://www.jst-mfg.com/product/pdf/eng/eXH.pdf), generated with kicad-footprint-generator +connector JST XH vertical +0 +5 +5 +Connector_JST +JST_XH_B6B-XH-AM_1x06_P2.50mm_Vertical +JST XH series connector, B6B-XH-AM, with boss (http://www.jst-mfg.com/product/pdf/eng/eXH.pdf), generated with kicad-footprint-generator +connector JST XH vertical boss +0 +6 +6 +Connector_JST +JST_XH_B6B-XH-A_1x06_P2.50mm_Vertical +JST XH series connector, B6B-XH-A (http://www.jst-mfg.com/product/pdf/eng/eXH.pdf), generated with kicad-footprint-generator +connector JST XH vertical +0 +6 +6 +Connector_JST +JST_XH_B7B-XH-AM_1x07_P2.50mm_Vertical +JST XH series connector, B7B-XH-AM, with boss (http://www.jst-mfg.com/product/pdf/eng/eXH.pdf), generated with kicad-footprint-generator +connector JST XH vertical boss +0 +7 +7 +Connector_JST +JST_XH_B7B-XH-A_1x07_P2.50mm_Vertical +JST XH series connector, B7B-XH-A (http://www.jst-mfg.com/product/pdf/eng/eXH.pdf), generated with kicad-footprint-generator +connector JST XH vertical +0 +7 +7 +Connector_JST +JST_XH_B8B-XH-AM_1x08_P2.50mm_Vertical +JST XH series connector, B8B-XH-AM, with boss (http://www.jst-mfg.com/product/pdf/eng/eXH.pdf), generated with kicad-footprint-generator +connector JST XH vertical boss +0 +8 +8 +Connector_JST +JST_XH_B8B-XH-A_1x08_P2.50mm_Vertical +JST XH series connector, B8B-XH-A (http://www.jst-mfg.com/product/pdf/eng/eXH.pdf), generated with kicad-footprint-generator +connector JST XH vertical +0 +8 +8 +Connector_JST +JST_XH_B9B-XH-AM_1x09_P2.50mm_Vertical +JST XH series connector, B9B-XH-AM, with boss (http://www.jst-mfg.com/product/pdf/eng/eXH.pdf), generated with kicad-footprint-generator +connector JST XH vertical boss +0 +9 +9 +Connector_JST +JST_XH_B9B-XH-A_1x09_P2.50mm_Vertical +JST XH series connector, B9B-XH-A (http://www.jst-mfg.com/product/pdf/eng/eXH.pdf), generated with kicad-footprint-generator +connector JST XH vertical +0 +9 +9 +Connector_JST +JST_XH_B10B-XH-AM_1x10_P2.50mm_Vertical +JST XH series connector, B10B-XH-AM, with boss (http://www.jst-mfg.com/product/pdf/eng/eXH.pdf), generated with kicad-footprint-generator +connector JST XH side entry boss +0 +10 +10 +Connector_JST +JST_XH_B10B-XH-A_1x10_P2.50mm_Vertical +JST XH series connector, B10B-XH-A (http://www.jst-mfg.com/product/pdf/eng/eXH.pdf), generated with kicad-footprint-generator +connector JST XH side entry +0 +10 +10 +Connector_JST +JST_XH_B11B-XH-A_1x11_P2.50mm_Vertical +JST XH series connector, B11B-XH-A (http://www.jst-mfg.com/product/pdf/eng/eXH.pdf), generated with kicad-footprint-generator +connector JST XH side entry +0 +11 +11 +Connector_JST +JST_XH_B12B-XH-AM_1x12_P2.50mm_Vertical +JST XH series connector, B12B-XH-AM, with boss (http://www.jst-mfg.com/product/pdf/eng/eXH.pdf), generated with kicad-footprint-generator +connector JST XH side entry boss +0 +12 +12 +Connector_JST +JST_XH_B12B-XH-A_1x12_P2.50mm_Vertical +JST XH series connector, B12B-XH-A (http://www.jst-mfg.com/product/pdf/eng/eXH.pdf), generated with kicad-footprint-generator +connector JST XH side entry +0 +12 +12 +Connector_JST +JST_XH_B13B-XH-A_1x13_P2.50mm_Vertical +JST XH series connector, B13B-XH-A (http://www.jst-mfg.com/product/pdf/eng/eXH.pdf), generated with kicad-footprint-generator +connector JST XH side entry +0 +13 +13 +Connector_JST +JST_XH_B14B-XH-A_1x14_P2.50mm_Vertical +JST XH series connector, B14B-XH-A (http://www.jst-mfg.com/product/pdf/eng/eXH.pdf), generated with kicad-footprint-generator +connector JST XH side entry +0 +14 +14 +Connector_JST +JST_XH_B15B-XH-A_1x15_P2.50mm_Vertical +JST XH series connector, B15B-XH-A (http://www.jst-mfg.com/product/pdf/eng/eXH.pdf), generated with kicad-footprint-generator +connector JST XH side entry +0 +15 +15 +Connector_JST +JST_XH_B16B-XH-A_1x16_P2.50mm_Vertical +JST XH series connector, B16B-XH-A (http://www.jst-mfg.com/product/pdf/eng/eXH.pdf), generated with kicad-footprint-generator +connector JST XH side entry +0 +16 +16 +Connector_JST +JST_XH_B20B-XH-A_1x20_P2.50mm_Vertical +JST XH series connector, B20B-XH-A (http://www.jst-mfg.com/product/pdf/eng/eXH.pdf), generated with kicad-footprint-generator +connector JST XH side entry +0 +20 +20 +Connector_JST +JST_XH_S2B-XH-A-1_1x02_P2.50mm_Horizontal +JST XH series connector, S2B-XH-A-1 (http://www.jst-mfg.com/product/pdf/eng/eXH.pdf), generated with kicad-footprint-generator +connector JST XH horizontal +0 +2 +2 +Connector_JST +JST_XH_S2B-XH-A_1x02_P2.50mm_Horizontal +JST XH series connector, S2B-XH-A (http://www.jst-mfg.com/product/pdf/eng/eXH.pdf), generated with kicad-footprint-generator +connector JST XH horizontal +0 +2 +2 +Connector_JST +JST_XH_S3B-XH-A-1_1x03_P2.50mm_Horizontal +JST XH series connector, S3B-XH-A-1 (http://www.jst-mfg.com/product/pdf/eng/eXH.pdf), generated with kicad-footprint-generator +connector JST XH horizontal +0 +3 +3 +Connector_JST +JST_XH_S3B-XH-A_1x03_P2.50mm_Horizontal +JST XH series connector, S3B-XH-A (http://www.jst-mfg.com/product/pdf/eng/eXH.pdf), generated with kicad-footprint-generator +connector JST XH horizontal +0 +3 +3 +Connector_JST +JST_XH_S4B-XH-A-1_1x04_P2.50mm_Horizontal +JST XH series connector, S4B-XH-A-1 (http://www.jst-mfg.com/product/pdf/eng/eXH.pdf), generated with kicad-footprint-generator +connector JST XH horizontal +0 +4 +4 +Connector_JST +JST_XH_S4B-XH-A_1x04_P2.50mm_Horizontal +JST XH series connector, S4B-XH-A (http://www.jst-mfg.com/product/pdf/eng/eXH.pdf), generated with kicad-footprint-generator +connector JST XH horizontal +0 +4 +4 +Connector_JST +JST_XH_S5B-XH-A-1_1x05_P2.50mm_Horizontal +JST XH series connector, S5B-XH-A-1 (http://www.jst-mfg.com/product/pdf/eng/eXH.pdf), generated with kicad-footprint-generator +connector JST XH horizontal +0 +5 +5 +Connector_JST +JST_XH_S5B-XH-A_1x05_P2.50mm_Horizontal +JST XH series connector, S5B-XH-A (http://www.jst-mfg.com/product/pdf/eng/eXH.pdf), generated with kicad-footprint-generator +connector JST XH horizontal +0 +5 +5 +Connector_JST +JST_XH_S6B-XH-A-1_1x06_P2.50mm_Horizontal +JST XH series connector, S6B-XH-A-1 (http://www.jst-mfg.com/product/pdf/eng/eXH.pdf), generated with kicad-footprint-generator +connector JST XH horizontal +0 +6 +6 +Connector_JST +JST_XH_S6B-XH-A_1x06_P2.50mm_Horizontal +JST XH series connector, S6B-XH-A (http://www.jst-mfg.com/product/pdf/eng/eXH.pdf), generated with kicad-footprint-generator +connector JST XH horizontal +0 +6 +6 +Connector_JST +JST_XH_S7B-XH-A-1_1x07_P2.50mm_Horizontal +JST XH series connector, S7B-XH-A-1 (http://www.jst-mfg.com/product/pdf/eng/eXH.pdf), generated with kicad-footprint-generator +connector JST XH horizontal +0 +7 +7 +Connector_JST +JST_XH_S7B-XH-A_1x07_P2.50mm_Horizontal +JST XH series connector, S7B-XH-A (http://www.jst-mfg.com/product/pdf/eng/eXH.pdf), generated with kicad-footprint-generator +connector JST XH horizontal +0 +7 +7 +Connector_JST +JST_XH_S8B-XH-A-1_1x08_P2.50mm_Horizontal +JST XH series connector, S8B-XH-A-1 (http://www.jst-mfg.com/product/pdf/eng/eXH.pdf), generated with kicad-footprint-generator +connector JST XH horizontal +0 +8 +8 +Connector_JST +JST_XH_S8B-XH-A_1x08_P2.50mm_Horizontal +JST XH series connector, S8B-XH-A (http://www.jst-mfg.com/product/pdf/eng/eXH.pdf), generated with kicad-footprint-generator +connector JST XH horizontal +0 +8 +8 +Connector_JST +JST_XH_S9B-XH-A-1_1x09_P2.50mm_Horizontal +JST XH series connector, S9B-XH-A-1 (http://www.jst-mfg.com/product/pdf/eng/eXH.pdf), generated with kicad-footprint-generator +connector JST XH horizontal +0 +9 +9 +Connector_JST +JST_XH_S9B-XH-A_1x09_P2.50mm_Horizontal +JST XH series connector, S9B-XH-A (http://www.jst-mfg.com/product/pdf/eng/eXH.pdf), generated with kicad-footprint-generator +connector JST XH horizontal +0 +9 +9 +Connector_JST +JST_XH_S10B-XH-A-1_1x10_P2.50mm_Horizontal +JST XH series connector, S10B-XH-A-1 (http://www.jst-mfg.com/product/pdf/eng/eXH.pdf), generated with kicad-footprint-generator +connector JST XH top entry +0 +10 +10 +Connector_JST +JST_XH_S10B-XH-A_1x10_P2.50mm_Horizontal +JST XH series connector, S10B-XH-A (http://www.jst-mfg.com/product/pdf/eng/eXH.pdf), generated with kicad-footprint-generator +connector JST XH top entry +0 +10 +10 +Connector_JST +JST_XH_S11B-XH-A-1_1x11_P2.50mm_Horizontal +JST XH series connector, S11B-XH-A-1 (http://www.jst-mfg.com/product/pdf/eng/eXH.pdf), generated with kicad-footprint-generator +connector JST XH top entry +0 +11 +11 +Connector_JST +JST_XH_S11B-XH-A_1x11_P2.50mm_Horizontal +JST XH series connector, S11B-XH-A (http://www.jst-mfg.com/product/pdf/eng/eXH.pdf), generated with kicad-footprint-generator +connector JST XH top entry +0 +11 +11 +Connector_JST +JST_XH_S12B-XH-A-1_1x12_P2.50mm_Horizontal +JST XH series connector, S12B-XH-A-1 (http://www.jst-mfg.com/product/pdf/eng/eXH.pdf), generated with kicad-footprint-generator +connector JST XH top entry +0 +12 +12 +Connector_JST +JST_XH_S12B-XH-A_1x12_P2.50mm_Horizontal +JST XH series connector, S12B-XH-A (http://www.jst-mfg.com/product/pdf/eng/eXH.pdf), generated with kicad-footprint-generator +connector JST XH top entry +0 +12 +12 +Connector_JST +JST_XH_S13B-XH-A-1_1x13_P2.50mm_Horizontal +JST XH series connector, S13B-XH-A-1 (http://www.jst-mfg.com/product/pdf/eng/eXH.pdf), generated with kicad-footprint-generator +connector JST XH top entry +0 +13 +13 +Connector_JST +JST_XH_S13B-XH-A_1x13_P2.50mm_Horizontal +JST XH series connector, S13B-XH-A (http://www.jst-mfg.com/product/pdf/eng/eXH.pdf), generated with kicad-footprint-generator +connector JST XH top entry +0 +13 +13 +Connector_JST +JST_XH_S14B-XH-A-1_1x14_P2.50mm_Horizontal +JST XH series connector, S14B-XH-A-1 (http://www.jst-mfg.com/product/pdf/eng/eXH.pdf), generated with kicad-footprint-generator +connector JST XH top entry +0 +14 +14 +Connector_JST +JST_XH_S14B-XH-A_1x14_P2.50mm_Horizontal +JST XH series connector, S14B-XH-A (http://www.jst-mfg.com/product/pdf/eng/eXH.pdf), generated with kicad-footprint-generator +connector JST XH top entry +0 +14 +14 +Connector_JST +JST_XH_S15B-XH-A-1_1x15_P2.50mm_Horizontal +JST XH series connector, S15B-XH-A-1 (http://www.jst-mfg.com/product/pdf/eng/eXH.pdf), generated with kicad-footprint-generator +connector JST XH top entry +0 +15 +15 +Connector_JST +JST_XH_S15B-XH-A_1x15_P2.50mm_Horizontal +JST XH series connector, S15B-XH-A (http://www.jst-mfg.com/product/pdf/eng/eXH.pdf), generated with kicad-footprint-generator +connector JST XH top entry +0 +15 +15 +Connector_JST +JST_XH_S16B-XH-A_1x16_P2.50mm_Horizontal +JST XH series connector, S16B-XH-A (http://www.jst-mfg.com/product/pdf/eng/eXH.pdf), generated with kicad-footprint-generator +connector JST XH top entry +0 +16 +16 +Connector_JST +JST_ZE_B02B-ZESK-1D_1x02_P1.50mm_Vertical +JST ZE series connector, B02B-ZESK-1D, with boss (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE side entry boss +0 +2 +2 +Connector_JST +JST_ZE_B03B-ZESK-1D_1x03_P1.50mm_Vertical +JST ZE series connector, B03B-ZESK-1D, with boss (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE side entry boss +0 +3 +3 +Connector_JST +JST_ZE_B03B-ZESK-D_1x03_P1.50mm_Vertical +JST ZE series connector, B03B-ZESK-D (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE side entry +0 +3 +3 +Connector_JST +JST_ZE_B04B-ZESK-1D_1x04_P1.50mm_Vertical +JST ZE series connector, B04B-ZESK-1D, with boss (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE side entry boss +0 +4 +4 +Connector_JST +JST_ZE_B04B-ZESK-D_1x04_P1.50mm_Vertical +JST ZE series connector, B04B-ZESK-D (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE side entry +0 +4 +4 +Connector_JST +JST_ZE_B05B-ZESK-1D_1x05_P1.50mm_Vertical +JST ZE series connector, B05B-ZESK-1D, with boss (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE side entry boss +0 +5 +5 +Connector_JST +JST_ZE_B05B-ZESK-D_1x05_P1.50mm_Vertical +JST ZE series connector, B05B-ZESK-D (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE side entry +0 +5 +5 +Connector_JST +JST_ZE_B06B-ZESK-1D_1x06_P1.50mm_Vertical +JST ZE series connector, B06B-ZESK-1D, with boss (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE side entry boss +0 +6 +6 +Connector_JST +JST_ZE_B06B-ZESK-D_1x06_P1.50mm_Vertical +JST ZE series connector, B06B-ZESK-D (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE side entry +0 +6 +6 +Connector_JST +JST_ZE_B07B-ZESK-1D_1x07_P1.50mm_Vertical +JST ZE series connector, B07B-ZESK-1D, with boss (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE side entry boss +0 +7 +7 +Connector_JST +JST_ZE_B07B-ZESK-D_1x07_P1.50mm_Vertical +JST ZE series connector, B07B-ZESK-D (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE side entry +0 +7 +7 +Connector_JST +JST_ZE_B08B-ZESK-1D_1x08_P1.50mm_Vertical +JST ZE series connector, B08B-ZESK-1D, with boss (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE side entry boss +0 +8 +8 +Connector_JST +JST_ZE_B08B-ZESK-D_1x08_P1.50mm_Vertical +JST ZE series connector, B08B-ZESK-D (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE side entry +0 +8 +8 +Connector_JST +JST_ZE_B09B-ZESK-1D_1x09_P1.50mm_Vertical +JST ZE series connector, B09B-ZESK-1D, with boss (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE side entry boss +0 +9 +9 +Connector_JST +JST_ZE_B09B-ZESK-D_1x09_P1.50mm_Vertical +JST ZE series connector, B09B-ZESK-D (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE side entry +0 +9 +9 +Connector_JST +JST_ZE_B10B-ZESK-1D_1x10_P1.50mm_Vertical +JST ZE series connector, B10B-ZESK-1D, with boss (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE side entry boss +0 +10 +10 +Connector_JST +JST_ZE_B10B-ZESK-D_1x10_P1.50mm_Vertical +JST ZE series connector, B10B-ZESK-D (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE side entry +0 +10 +10 +Connector_JST +JST_ZE_B11B-ZESK-1D_1x11_P1.50mm_Vertical +JST ZE series connector, B11B-ZESK-1D, with boss (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE side entry boss +0 +11 +11 +Connector_JST +JST_ZE_B11B-ZESK-D_1x11_P1.50mm_Vertical +JST ZE series connector, B11B-ZESK-D (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE side entry +0 +11 +11 +Connector_JST +JST_ZE_B12B-ZESK-1D_1x12_P1.50mm_Vertical +JST ZE series connector, B12B-ZESK-1D, with boss (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE side entry boss +0 +12 +12 +Connector_JST +JST_ZE_B12B-ZESK-D_1x12_P1.50mm_Vertical +JST ZE series connector, B12B-ZESK-D (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE side entry +0 +12 +12 +Connector_JST +JST_ZE_B13B-ZESK-1D_1x13_P1.50mm_Vertical +JST ZE series connector, B13B-ZESK-1D, with boss (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE side entry boss +0 +13 +13 +Connector_JST +JST_ZE_B13B-ZESK-D_1x13_P1.50mm_Vertical +JST ZE series connector, B13B-ZESK-D (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE side entry +0 +13 +13 +Connector_JST +JST_ZE_B14B-ZESK-1D_1x14_P1.50mm_Vertical +JST ZE series connector, B14B-ZESK-1D, with boss (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE side entry boss +0 +14 +14 +Connector_JST +JST_ZE_B14B-ZESK-D_1x14_P1.50mm_Vertical +JST ZE series connector, B14B-ZESK-D (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE side entry +0 +14 +14 +Connector_JST +JST_ZE_B15B-ZESK-1D_1x15_P1.50mm_Vertical +JST ZE series connector, B15B-ZESK-1D, with boss (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE side entry boss +0 +15 +15 +Connector_JST +JST_ZE_B15B-ZESK-D_1x15_P1.50mm_Vertical +JST ZE series connector, B15B-ZESK-D (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE side entry +0 +15 +15 +Connector_JST +JST_ZE_B16B-ZESK-1D_1x16_P1.50mm_Vertical +JST ZE series connector, B16B-ZESK-1D, with boss (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE side entry boss +0 +16 +16 +Connector_JST +JST_ZE_B16B-ZESK-D_1x16_P1.50mm_Vertical +JST ZE series connector, B16B-ZESK-D (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE side entry +0 +16 +16 +Connector_JST +JST_ZE_BM02B-ZESS-TBT_1x02-1MP_P1.50mm_Vertical +JST ZE series connector, BM02B-ZESS-TBT (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE vertical +0 +4 +3 +Connector_JST +JST_ZE_BM03B-ZESS-TBT_1x03-1MP_P1.50mm_Vertical +JST ZE series connector, BM03B-ZESS-TBT (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE vertical +0 +5 +4 +Connector_JST +JST_ZE_BM04B-ZESS-TBT_1x04-1MP_P1.50mm_Vertical +JST ZE series connector, BM04B-ZESS-TBT (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE vertical +0 +6 +5 +Connector_JST +JST_ZE_BM05B-ZESS-TBT_1x05-1MP_P1.50mm_Vertical +JST ZE series connector, BM05B-ZESS-TBT (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE vertical +0 +7 +6 +Connector_JST +JST_ZE_BM06B-ZESS-TBT_1x06-1MP_P1.50mm_Vertical +JST ZE series connector, BM06B-ZESS-TBT (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE vertical +0 +8 +7 +Connector_JST +JST_ZE_BM07B-ZESS-TBT_1x07-1MP_P1.50mm_Vertical +JST ZE series connector, BM07B-ZESS-TBT (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE vertical +0 +9 +8 +Connector_JST +JST_ZE_BM08B-ZESS-TBT_1x08-1MP_P1.50mm_Vertical +JST ZE series connector, BM08B-ZESS-TBT (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE vertical +0 +10 +9 +Connector_JST +JST_ZE_BM09B-ZESS-TBT_1x09-1MP_P1.50mm_Vertical +JST ZE series connector, BM09B-ZESS-TBT (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE vertical +0 +11 +10 +Connector_JST +JST_ZE_BM10B-ZESS-TBT_1x10-1MP_P1.50mm_Vertical +JST ZE series connector, BM10B-ZESS-TBT (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE vertical +0 +12 +11 +Connector_JST +JST_ZE_BM11B-ZESS-TBT_1x11-1MP_P1.50mm_Vertical +JST ZE series connector, BM11B-ZESS-TBT (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE vertical +0 +13 +12 +Connector_JST +JST_ZE_BM12B-ZESS-TBT_1x12-1MP_P1.50mm_Vertical +JST ZE series connector, BM12B-ZESS-TBT (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE vertical +0 +14 +13 +Connector_JST +JST_ZE_BM13B-ZESS-TBT_1x13-1MP_P1.50mm_Vertical +JST ZE series connector, BM13B-ZESS-TBT (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE vertical +0 +15 +14 +Connector_JST +JST_ZE_BM14B-ZESS-TBT_1x14-1MP_P1.50mm_Vertical +JST ZE series connector, BM14B-ZESS-TBT (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE vertical +0 +16 +15 +Connector_JST +JST_ZE_BM15B-ZESS-TBT_1x15-1MP_P1.50mm_Vertical +JST ZE series connector, BM15B-ZESS-TBT (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE vertical +0 +17 +16 +Connector_JST +JST_ZE_BM16B-ZESS-TBT_1x16-1MP_P1.50mm_Vertical +JST ZE series connector, BM16B-ZESS-TBT (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE vertical +0 +18 +17 +Connector_JST +JST_ZE_S02B-ZESK-2D_1x02_P1.50mm_Horizontal +JST ZE series connector, S02B-ZESK-2D (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE top entry +0 +2 +2 +Connector_JST +JST_ZE_S03B-ZESK-2D_1x03_P1.50mm_Horizontal +JST ZE series connector, S03B-ZESK-2D (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE top entry +0 +3 +3 +Connector_JST +JST_ZE_S04B-ZESK-2D_1x04_P1.50mm_Horizontal +JST ZE series connector, S04B-ZESK-2D (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE top entry +0 +4 +4 +Connector_JST +JST_ZE_S05B-ZESK-2D_1x05_P1.50mm_Horizontal +JST ZE series connector, S05B-ZESK-2D (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE top entry +0 +5 +5 +Connector_JST +JST_ZE_S06B-ZESK-2D_1x06_P1.50mm_Horizontal +JST ZE series connector, S06B-ZESK-2D (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE top entry +0 +6 +6 +Connector_JST +JST_ZE_S07B-ZESK-2D_1x07_P1.50mm_Horizontal +JST ZE series connector, S07B-ZESK-2D (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE top entry +0 +7 +7 +Connector_JST +JST_ZE_S08B-ZESK-2D_1x08_P1.50mm_Horizontal +JST ZE series connector, S08B-ZESK-2D (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE top entry +0 +8 +8 +Connector_JST +JST_ZE_S09B-ZESK-2D_1x09_P1.50mm_Horizontal +JST ZE series connector, S09B-ZESK-2D (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE top entry +0 +9 +9 +Connector_JST +JST_ZE_S10B-ZESK-2D_1x10_P1.50mm_Horizontal +JST ZE series connector, S10B-ZESK-2D (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE top entry +0 +10 +10 +Connector_JST +JST_ZE_S11B-ZESK-2D_1x11_P1.50mm_Horizontal +JST ZE series connector, S11B-ZESK-2D (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE top entry +0 +11 +11 +Connector_JST +JST_ZE_S12B-ZESK-2D_1x12_P1.50mm_Horizontal +JST ZE series connector, S12B-ZESK-2D (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE top entry +0 +12 +12 +Connector_JST +JST_ZE_S13B-ZESK-2D_1x13_P1.50mm_Horizontal +JST ZE series connector, S13B-ZESK-2D (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE top entry +0 +13 +13 +Connector_JST +JST_ZE_S14B-ZESK-2D_1x14_P1.50mm_Horizontal +JST ZE series connector, S14B-ZESK-2D (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE top entry +0 +14 +14 +Connector_JST +JST_ZE_S15B-ZESK-2D_1x15_P1.50mm_Horizontal +JST ZE series connector, S15B-ZESK-2D (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE top entry +0 +15 +15 +Connector_JST +JST_ZE_S16B-ZESK-2D_1x16_P1.50mm_Horizontal +JST ZE series connector, S16B-ZESK-2D (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE top entry +0 +16 +16 +Connector_JST +JST_ZE_SM02B-ZESS-TB_1x02-1MP_P1.50mm_Horizontal +JST ZE series connector, SM02B-ZESS-TB (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE horizontal +0 +4 +3 +Connector_JST +JST_ZE_SM03B-ZESS-TB_1x03-1MP_P1.50mm_Horizontal +JST ZE series connector, SM03B-ZESS-TB (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE horizontal +0 +5 +4 +Connector_JST +JST_ZE_SM04B-ZESS-TB_1x04-1MP_P1.50mm_Horizontal +JST ZE series connector, SM04B-ZESS-TB (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE horizontal +0 +6 +5 +Connector_JST +JST_ZE_SM05B-ZESS-TB_1x05-1MP_P1.50mm_Horizontal +JST ZE series connector, SM05B-ZESS-TB (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE horizontal +0 +7 +6 +Connector_JST +JST_ZE_SM06B-ZESS-TB_1x06-1MP_P1.50mm_Horizontal +JST ZE series connector, SM06B-ZESS-TB (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE horizontal +0 +8 +7 +Connector_JST +JST_ZE_SM07B-ZESS-TB_1x07-1MP_P1.50mm_Horizontal +JST ZE series connector, SM07B-ZESS-TB (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE horizontal +0 +9 +8 +Connector_JST +JST_ZE_SM08B-ZESS-TB_1x08-1MP_P1.50mm_Horizontal +JST ZE series connector, SM08B-ZESS-TB (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE horizontal +0 +10 +9 +Connector_JST +JST_ZE_SM09B-ZESS-TB_1x09-1MP_P1.50mm_Horizontal +JST ZE series connector, SM09B-ZESS-TB (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE horizontal +0 +11 +10 +Connector_JST +JST_ZE_SM10B-ZESS-TB_1x10-1MP_P1.50mm_Horizontal +JST ZE series connector, SM10B-ZESS-TB (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE horizontal +0 +12 +11 +Connector_JST +JST_ZE_SM11B-ZESS-TB_1x11-1MP_P1.50mm_Horizontal +JST ZE series connector, SM11B-ZESS-TB (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE horizontal +0 +13 +12 +Connector_JST +JST_ZE_SM12B-ZESS-TB_1x12-1MP_P1.50mm_Horizontal +JST ZE series connector, SM12B-ZESS-TB (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE horizontal +0 +14 +13 +Connector_JST +JST_ZE_SM13B-ZESS-TB_1x13-1MP_P1.50mm_Horizontal +JST ZE series connector, SM13B-ZESS-TB (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE horizontal +0 +15 +14 +Connector_JST +JST_ZE_SM14B-ZESS-TB_1x14-1MP_P1.50mm_Horizontal +JST ZE series connector, SM14B-ZESS-TB (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE horizontal +0 +16 +15 +Connector_JST +JST_ZE_SM15B-ZESS-TB_1x15-1MP_P1.50mm_Horizontal +JST ZE series connector, SM15B-ZESS-TB (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE horizontal +0 +17 +16 +Connector_JST +JST_ZE_SM16B-ZESS-TB_1x16-1MP_P1.50mm_Horizontal +JST ZE series connector, SM16B-ZESS-TB (http://www.jst-mfg.com/product/pdf/eng/eZE.pdf), generated with kicad-footprint-generator +connector JST ZE horizontal +0 +18 +17 +Connector_Molex +Molex_CLIK-Mate_502382-0270_1x02-1MP_P1.25mm_Vertical +Molex CLIK-Mate series connector, 502382-0270 (http://www.molex.com/pdm_docs/sd/5023820270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate side entry +0 +4 +3 +Connector_Molex +Molex_CLIK-Mate_502382-0370_1x03-1MP_P1.25mm_Vertical +Molex CLIK-Mate series connector, 502382-0370 (http://www.molex.com/pdm_docs/sd/5023820270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate side entry +0 +5 +4 +Connector_Molex +Molex_CLIK-Mate_502382-0470_1x04-1MP_P1.25mm_Vertical +Molex CLIK-Mate series connector, 502382-0470 (http://www.molex.com/pdm_docs/sd/5023820270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate side entry +0 +6 +5 +Connector_Molex +Molex_CLIK-Mate_502382-0570_1x05-1MP_P1.25mm_Vertical +Molex CLIK-Mate series connector, 502382-0570 (http://www.molex.com/pdm_docs/sd/5023820270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate side entry +0 +7 +6 +Connector_Molex +Molex_CLIK-Mate_502382-0670_1x06-1MP_P1.25mm_Vertical +Molex CLIK-Mate series connector, 502382-0670 (http://www.molex.com/pdm_docs/sd/5023820270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate side entry +0 +8 +7 +Connector_Molex +Molex_CLIK-Mate_502382-0770_1x07-1MP_P1.25mm_Vertical +Molex CLIK-Mate series connector, 502382-0770 (http://www.molex.com/pdm_docs/sd/5023820270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate side entry +0 +9 +8 +Connector_Molex +Molex_CLIK-Mate_502382-0870_1x08-1MP_P1.25mm_Vertical +Molex CLIK-Mate series connector, 502382-0870 (http://www.molex.com/pdm_docs/sd/5023820270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate side entry +0 +10 +9 +Connector_Molex +Molex_CLIK-Mate_502382-0970_1x09-1MP_P1.25mm_Vertical +Molex CLIK-Mate series connector, 502382-0970 (http://www.molex.com/pdm_docs/sd/5023820270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate side entry +0 +11 +10 +Connector_Molex +Molex_CLIK-Mate_502382-1070_1x10-1MP_P1.25mm_Vertical +Molex CLIK-Mate series connector, 502382-1070 (http://www.molex.com/pdm_docs/sd/5023820270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate side entry +0 +12 +11 +Connector_Molex +Molex_CLIK-Mate_502382-1170_1x11-1MP_P1.25mm_Vertical +Molex CLIK-Mate series connector, 502382-1170 (http://www.molex.com/pdm_docs/sd/5023820270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate side entry +0 +13 +12 +Connector_Molex +Molex_CLIK-Mate_502382-1270_1x12-1MP_P1.25mm_Vertical +Molex CLIK-Mate series connector, 502382-1270 (http://www.molex.com/pdm_docs/sd/5023820270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate side entry +0 +14 +13 +Connector_Molex +Molex_CLIK-Mate_502382-1370_1x13-1MP_P1.25mm_Vertical +Molex CLIK-Mate series connector, 502382-1370 (http://www.molex.com/pdm_docs/sd/5023820270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate side entry +0 +15 +14 +Connector_Molex +Molex_CLIK-Mate_502382-1470_1x14-1MP_P1.25mm_Vertical +Molex CLIK-Mate series connector, 502382-1470 (http://www.molex.com/pdm_docs/sd/5023820270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate side entry +0 +16 +15 +Connector_Molex +Molex_CLIK-Mate_502382-1570_1x15-1MP_P1.25mm_Vertical +Molex CLIK-Mate series connector, 502382-1570 (http://www.molex.com/pdm_docs/sd/5023820270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate side entry +0 +17 +16 +Connector_Molex +Molex_CLIK-Mate_502386-0270_1x02-1MP_P1.25mm_Horizontal +Molex CLIK-Mate series connector, 502386-0270 (http://www.molex.com/pdm_docs/sd/5023860270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate top entry +0 +4 +3 +Connector_Molex +Molex_CLIK-Mate_502386-0370_1x03-1MP_P1.25mm_Horizontal +Molex CLIK-Mate series connector, 502386-0370 (http://www.molex.com/pdm_docs/sd/5023860270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate top entry +0 +5 +4 +Connector_Molex +Molex_CLIK-Mate_502386-0470_1x04-1MP_P1.25mm_Horizontal +Molex CLIK-Mate series connector, 502386-0470 (http://www.molex.com/pdm_docs/sd/5023860270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate top entry +0 +6 +5 +Connector_Molex +Molex_CLIK-Mate_502386-0570_1x05-1MP_P1.25mm_Horizontal +Molex CLIK-Mate series connector, 502386-0570 (http://www.molex.com/pdm_docs/sd/5023860270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate top entry +0 +7 +6 +Connector_Molex +Molex_CLIK-Mate_502386-0670_1x06-1MP_P1.25mm_Horizontal +Molex CLIK-Mate series connector, 502386-0670 (http://www.molex.com/pdm_docs/sd/5023860270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate top entry +0 +8 +7 +Connector_Molex +Molex_CLIK-Mate_502386-0770_1x07-1MP_P1.25mm_Horizontal +Molex CLIK-Mate series connector, 502386-0770 (http://www.molex.com/pdm_docs/sd/5023860270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate top entry +0 +9 +8 +Connector_Molex +Molex_CLIK-Mate_502386-0870_1x08-1MP_P1.25mm_Horizontal +Molex CLIK-Mate series connector, 502386-0870 (http://www.molex.com/pdm_docs/sd/5023860270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate top entry +0 +10 +9 +Connector_Molex +Molex_CLIK-Mate_502386-0970_1x09-1MP_P1.25mm_Horizontal +Molex CLIK-Mate series connector, 502386-0970 (http://www.molex.com/pdm_docs/sd/5023860270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate top entry +0 +11 +10 +Connector_Molex +Molex_CLIK-Mate_502386-1070_1x10-1MP_P1.25mm_Horizontal +Molex CLIK-Mate series connector, 502386-1070 (http://www.molex.com/pdm_docs/sd/5023860270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate top entry +0 +12 +11 +Connector_Molex +Molex_CLIK-Mate_502386-1170_1x11-1MP_P1.25mm_Horizontal +Molex CLIK-Mate series connector, 502386-1170 (http://www.molex.com/pdm_docs/sd/5023860270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate top entry +0 +13 +12 +Connector_Molex +Molex_CLIK-Mate_502386-1270_1x12-1MP_P1.25mm_Horizontal +Molex CLIK-Mate series connector, 502386-1270 (http://www.molex.com/pdm_docs/sd/5023860270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate top entry +0 +14 +13 +Connector_Molex +Molex_CLIK-Mate_502386-1370_1x13-1MP_P1.25mm_Horizontal +Molex CLIK-Mate series connector, 502386-1370 (http://www.molex.com/pdm_docs/sd/5023860270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate top entry +0 +15 +14 +Connector_Molex +Molex_CLIK-Mate_502386-1470_1x14-1MP_P1.25mm_Horizontal +Molex CLIK-Mate series connector, 502386-1470 (http://www.molex.com/pdm_docs/sd/5023860270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate top entry +0 +16 +15 +Connector_Molex +Molex_CLIK-Mate_502386-1570_1x15-1MP_P1.25mm_Horizontal +Molex CLIK-Mate series connector, 502386-1570 (http://www.molex.com/pdm_docs/sd/5023860270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate top entry +0 +17 +16 +Connector_Molex +Molex_CLIK-Mate_502443-0270_1x02-1MP_P2.00mm_Vertical +Molex CLIK-Mate series connector, 502443-0270 (http://www.molex.com/pdm_docs/sd/5024430270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate side entry +0 +4 +3 +Connector_Molex +Molex_CLIK-Mate_502443-0370_1x03-1MP_P2.00mm_Vertical +Molex CLIK-Mate series connector, 502443-0370 (http://www.molex.com/pdm_docs/sd/5024430270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate side entry +0 +5 +4 +Connector_Molex +Molex_CLIK-Mate_502443-0470_1x04-1MP_P2.00mm_Vertical +Molex CLIK-Mate series connector, 502443-0470 (http://www.molex.com/pdm_docs/sd/5024430270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate side entry +0 +6 +5 +Connector_Molex +Molex_CLIK-Mate_502443-0570_1x05-1MP_P2.00mm_Vertical +Molex CLIK-Mate series connector, 502443-0570 (http://www.molex.com/pdm_docs/sd/5024430270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate side entry +0 +7 +6 +Connector_Molex +Molex_CLIK-Mate_502443-0670_1x06-1MP_P2.00mm_Vertical +Molex CLIK-Mate series connector, 502443-0670 (http://www.molex.com/pdm_docs/sd/5024430270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate side entry +0 +8 +7 +Connector_Molex +Molex_CLIK-Mate_502443-0770_1x07-1MP_P2.00mm_Vertical +Molex CLIK-Mate series connector, 502443-0770 (http://www.molex.com/pdm_docs/sd/5024430270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate side entry +0 +9 +8 +Connector_Molex +Molex_CLIK-Mate_502443-0870_1x08-1MP_P2.00mm_Vertical +Molex CLIK-Mate series connector, 502443-0870 (http://www.molex.com/pdm_docs/sd/5024430270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate side entry +0 +10 +9 +Connector_Molex +Molex_CLIK-Mate_502443-0970_1x09-1MP_P2.00mm_Vertical +Molex CLIK-Mate series connector, 502443-0970 (http://www.molex.com/pdm_docs/sd/5024430270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate side entry +0 +11 +10 +Connector_Molex +Molex_CLIK-Mate_502443-1270_1x12-1MP_P2.00mm_Vertical +Molex CLIK-Mate series connector, 502443-1270 (http://www.molex.com/pdm_docs/sd/5024430270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate side entry +0 +14 +13 +Connector_Molex +Molex_CLIK-Mate_502443-1370_1x13-1MP_P2.00mm_Vertical +Molex CLIK-Mate series connector, 502443-1370 (http://www.molex.com/pdm_docs/sd/5024430270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate side entry +0 +15 +14 +Connector_Molex +Molex_CLIK-Mate_502443-1470_1x14-1MP_P2.00mm_Vertical +Molex CLIK-Mate series connector, 502443-1470 (http://www.molex.com/pdm_docs/sd/5024430270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate side entry +0 +16 +15 +Connector_Molex +Molex_CLIK-Mate_502443-1570_1x15-1MP_P2.00mm_Vertical +Molex CLIK-Mate series connector, 502443-1570 (http://www.molex.com/pdm_docs/sd/5024430270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate side entry +0 +17 +16 +Connector_Molex +Molex_CLIK-Mate_502494-0270_1x02-1MP_P2.00mm_Horizontal +Molex CLIK-Mate series connector, 502494-0270 (http://www.molex.com/pdm_docs/sd/5024940270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate top entry +0 +4 +3 +Connector_Molex +Molex_CLIK-Mate_502494-0370_1x03-1MP_P2.00mm_Horizontal +Molex CLIK-Mate series connector, 502494-0370 (http://www.molex.com/pdm_docs/sd/5024940270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate top entry +0 +5 +4 +Connector_Molex +Molex_CLIK-Mate_502494-0470_1x04-1MP_P2.00mm_Horizontal +Molex CLIK-Mate series connector, 502494-0470 (http://www.molex.com/pdm_docs/sd/5024940270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate top entry +0 +6 +5 +Connector_Molex +Molex_CLIK-Mate_502494-0670_1x06-1MP_P2.00mm_Horizontal +Molex CLIK-Mate series connector, 502494-0670 (http://www.molex.com/pdm_docs/sd/5024940270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate top entry +0 +8 +7 +Connector_Molex +Molex_CLIK-Mate_502494-0870_1x08-1MP_P2.00mm_Horizontal +Molex CLIK-Mate series connector, 502494-0870 (http://www.molex.com/pdm_docs/sd/5024940270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate top entry +0 +10 +9 +Connector_Molex +Molex_CLIK-Mate_502494-1070_1x10-1MP_P2.00mm_Horizontal +Molex CLIK-Mate series connector, 502494-1070 (http://www.molex.com/pdm_docs/sd/5024940270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate top entry +0 +12 +11 +Connector_Molex +Molex_CLIK-Mate_502494-1270_1x12-1MP_P2.00mm_Horizontal +Molex CLIK-Mate series connector, 502494-1270 (http://www.molex.com/pdm_docs/sd/5024940270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate top entry +0 +14 +13 +Connector_Molex +Molex_CLIK-Mate_502494-1370_1x13-1MP_P2.00mm_Horizontal +Molex CLIK-Mate series connector, 502494-1370 (http://www.molex.com/pdm_docs/sd/5024940270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate top entry +0 +15 +14 +Connector_Molex +Molex_CLIK-Mate_502494-1470_1x14-1MP_P2.00mm_Horizontal +Molex CLIK-Mate series connector, 502494-1470 (http://www.molex.com/pdm_docs/sd/5024940270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate top entry +0 +16 +15 +Connector_Molex +Molex_CLIK-Mate_502494-1570_1x15-1MP_P2.00mm_Horizontal +Molex CLIK-Mate series connector, 502494-1570 (http://www.molex.com/pdm_docs/sd/5024940270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate top entry +0 +17 +16 +Connector_Molex +Molex_CLIK-Mate_502585-0270_1x02-1MP_P1.50mm_Horizontal +Molex CLIK-Mate series connector, 502585-0270 (http://www.molex.com/pdm_docs/sd/5025850270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate top entry +0 +4 +3 +Connector_Molex +Molex_CLIK-Mate_502585-0370_1x03-1MP_P1.50mm_Horizontal +Molex CLIK-Mate series connector, 502585-0370 (http://www.molex.com/pdm_docs/sd/5025850270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate top entry +0 +5 +4 +Connector_Molex +Molex_CLIK-Mate_502585-0470_1x04-1MP_P1.50mm_Horizontal +Molex CLIK-Mate series connector, 502585-0470 (http://www.molex.com/pdm_docs/sd/5025850270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate top entry +0 +6 +5 +Connector_Molex +Molex_CLIK-Mate_502585-0570_1x05-1MP_P1.50mm_Horizontal +Molex CLIK-Mate series connector, 502585-0570 (http://www.molex.com/pdm_docs/sd/5025850270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate top entry +0 +7 +6 +Connector_Molex +Molex_CLIK-Mate_502585-0670_1x06-1MP_P1.50mm_Horizontal +Molex CLIK-Mate series connector, 502585-0670 (http://www.molex.com/pdm_docs/sd/5025850270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate top entry +0 +8 +7 +Connector_Molex +Molex_CLIK-Mate_502585-0770_1x07-1MP_P1.50mm_Horizontal +Molex CLIK-Mate series connector, 502585-0770 (http://www.molex.com/pdm_docs/sd/5025850270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate top entry +0 +9 +8 +Connector_Molex +Molex_CLIK-Mate_502585-0870_1x08-1MP_P1.50mm_Horizontal +Molex CLIK-Mate series connector, 502585-0870 (http://www.molex.com/pdm_docs/sd/5025850270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate top entry +0 +10 +9 +Connector_Molex +Molex_CLIK-Mate_502585-0970_1x09-1MP_P1.50mm_Horizontal +Molex CLIK-Mate series connector, 502585-0970 (http://www.molex.com/pdm_docs/sd/5025850270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate top entry +0 +11 +10 +Connector_Molex +Molex_CLIK-Mate_502585-1070_1x10-1MP_P1.50mm_Horizontal +Molex CLIK-Mate series connector, 502585-1070 (http://www.molex.com/pdm_docs/sd/5025850270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate top entry +0 +12 +11 +Connector_Molex +Molex_CLIK-Mate_502585-1170_1x11-1MP_P1.50mm_Horizontal +Molex CLIK-Mate series connector, 502585-1170 (http://www.molex.com/pdm_docs/sd/5025850270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate top entry +0 +13 +12 +Connector_Molex +Molex_CLIK-Mate_502585-1270_1x12-1MP_P1.50mm_Horizontal +Molex CLIK-Mate series connector, 502585-1270 (http://www.molex.com/pdm_docs/sd/5025850270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate top entry +0 +14 +13 +Connector_Molex +Molex_CLIK-Mate_502585-1370_1x13-1MP_P1.50mm_Horizontal +Molex CLIK-Mate series connector, 502585-1370 (http://www.molex.com/pdm_docs/sd/5025850270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate top entry +0 +15 +14 +Connector_Molex +Molex_CLIK-Mate_502585-1470_1x14-1MP_P1.50mm_Horizontal +Molex CLIK-Mate series connector, 502585-1470 (http://www.molex.com/pdm_docs/sd/5025850270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate top entry +0 +16 +15 +Connector_Molex +Molex_CLIK-Mate_502585-1570_1x15-1MP_P1.50mm_Horizontal +Molex CLIK-Mate series connector, 502585-1570 (http://www.molex.com/pdm_docs/sd/5025850270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate top entry +0 +17 +16 +Connector_Molex +Molex_CLIK-Mate_505405-0270_1x02-1MP_P1.50mm_Vertical +Molex CLIK-Mate series connector, 505405-0270 (http://www.molex.com/pdm_docs/sd/5054050270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate side entry +0 +4 +3 +Connector_Molex +Molex_CLIK-Mate_505405-0370_1x03-1MP_P1.50mm_Vertical +Molex CLIK-Mate series connector, 505405-0370 (http://www.molex.com/pdm_docs/sd/5054050270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate side entry +0 +5 +4 +Connector_Molex +Molex_CLIK-Mate_505405-0470_1x04-1MP_P1.50mm_Vertical +Molex CLIK-Mate series connector, 505405-0470 (http://www.molex.com/pdm_docs/sd/5054050270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate side entry +0 +6 +5 +Connector_Molex +Molex_CLIK-Mate_505405-0570_1x05-1MP_P1.50mm_Vertical +Molex CLIK-Mate series connector, 505405-0570 (http://www.molex.com/pdm_docs/sd/5054050270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate side entry +0 +7 +6 +Connector_Molex +Molex_CLIK-Mate_505405-0670_1x06-1MP_P1.50mm_Vertical +Molex CLIK-Mate series connector, 505405-0670 (http://www.molex.com/pdm_docs/sd/5054050270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate side entry +0 +8 +7 +Connector_Molex +Molex_CLIK-Mate_505405-0770_1x07-1MP_P1.50mm_Vertical +Molex CLIK-Mate series connector, 505405-0770 (http://www.molex.com/pdm_docs/sd/5054050270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate side entry +0 +9 +8 +Connector_Molex +Molex_CLIK-Mate_505405-0870_1x08-1MP_P1.50mm_Vertical +Molex CLIK-Mate series connector, 505405-0870 (http://www.molex.com/pdm_docs/sd/5054050270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate side entry +0 +10 +9 +Connector_Molex +Molex_CLIK-Mate_505405-0970_1x09-1MP_P1.50mm_Vertical +Molex CLIK-Mate series connector, 505405-0970 (http://www.molex.com/pdm_docs/sd/5054050270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate side entry +0 +11 +10 +Connector_Molex +Molex_CLIK-Mate_505405-1070_1x10-1MP_P1.50mm_Vertical +Molex CLIK-Mate series connector, 505405-1070 (http://www.molex.com/pdm_docs/sd/5054050270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate side entry +0 +12 +11 +Connector_Molex +Molex_CLIK-Mate_505405-1170_1x11-1MP_P1.50mm_Vertical +Molex CLIK-Mate series connector, 505405-1170 (http://www.molex.com/pdm_docs/sd/5054050270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate side entry +0 +13 +12 +Connector_Molex +Molex_CLIK-Mate_505405-1270_1x12-1MP_P1.50mm_Vertical +Molex CLIK-Mate series connector, 505405-1270 (http://www.molex.com/pdm_docs/sd/5054050270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate side entry +0 +14 +13 +Connector_Molex +Molex_CLIK-Mate_505405-1370_1x13-1MP_P1.50mm_Vertical +Molex CLIK-Mate series connector, 505405-1370 (http://www.molex.com/pdm_docs/sd/5054050270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate side entry +0 +15 +14 +Connector_Molex +Molex_CLIK-Mate_505405-1470_1x14-1MP_P1.50mm_Vertical +Molex CLIK-Mate series connector, 505405-1470 (http://www.molex.com/pdm_docs/sd/5054050270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate side entry +0 +16 +15 +Connector_Molex +Molex_CLIK-Mate_505405-1570_1x15-1MP_P1.50mm_Vertical +Molex CLIK-Mate series connector, 505405-1570 (http://www.molex.com/pdm_docs/sd/5054050270_sd.pdf), generated with kicad-footprint-generator +connector Molex CLIK-Mate side entry +0 +17 +16 +Connector_Molex +Molex_KK-254_AE-6410-02A_1x02_P2.54mm_Vertical +Molex KK-254 Interconnect System, old/engineering part number: AE-6410-02A example for new part number: 22-27-2021, 2 Pins (http://www.molex.com/pdm_docs/sd/022272021_sd.pdf), generated with kicad-footprint-generator +connector Molex KK-254 vertical +0 +2 +2 +Connector_Molex +Molex_KK-254_AE-6410-03A_1x03_P2.54mm_Vertical +Molex KK-254 Interconnect System, old/engineering part number: AE-6410-03A example for new part number: 22-27-2031, 3 Pins (http://www.molex.com/pdm_docs/sd/022272021_sd.pdf), generated with kicad-footprint-generator +connector Molex KK-254 vertical +0 +3 +3 +Connector_Molex +Molex_KK-254_AE-6410-04A_1x04_P2.54mm_Vertical +Molex KK-254 Interconnect System, old/engineering part number: AE-6410-04A example for new part number: 22-27-2041, 4 Pins (http://www.molex.com/pdm_docs/sd/022272021_sd.pdf), generated with kicad-footprint-generator +connector Molex KK-254 vertical +0 +4 +4 +Connector_Molex +Molex_KK-254_AE-6410-05A_1x05_P2.54mm_Vertical +Molex KK-254 Interconnect System, old/engineering part number: AE-6410-05A example for new part number: 22-27-2051, 5 Pins (http://www.molex.com/pdm_docs/sd/022272021_sd.pdf), generated with kicad-footprint-generator +connector Molex KK-254 vertical +0 +5 +5 +Connector_Molex +Molex_KK-254_AE-6410-06A_1x06_P2.54mm_Vertical +Molex KK-254 Interconnect System, old/engineering part number: AE-6410-06A example for new part number: 22-27-2061, 6 Pins (http://www.molex.com/pdm_docs/sd/022272021_sd.pdf), generated with kicad-footprint-generator +connector Molex KK-254 vertical +0 +6 +6 +Connector_Molex +Molex_KK-254_AE-6410-07A_1x07_P2.54mm_Vertical +Molex KK-254 Interconnect System, old/engineering part number: AE-6410-07A example for new part number: 22-27-2071, 7 Pins (http://www.molex.com/pdm_docs/sd/022272021_sd.pdf), generated with kicad-footprint-generator +connector Molex KK-254 vertical +0 +7 +7 +Connector_Molex +Molex_KK-254_AE-6410-08A_1x08_P2.54mm_Vertical +Molex KK-254 Interconnect System, old/engineering part number: AE-6410-08A example for new part number: 22-27-2081, 8 Pins (http://www.molex.com/pdm_docs/sd/022272021_sd.pdf), generated with kicad-footprint-generator +connector Molex KK-254 vertical +0 +8 +8 +Connector_Molex +Molex_KK-254_AE-6410-09A_1x09_P2.54mm_Vertical +Molex KK-254 Interconnect System, old/engineering part number: AE-6410-09A example for new part number: 22-27-2091, 9 Pins (http://www.molex.com/pdm_docs/sd/022272021_sd.pdf), generated with kicad-footprint-generator +connector Molex KK-254 vertical +0 +9 +9 +Connector_Molex +Molex_KK-254_AE-6410-10A_1x10_P2.54mm_Vertical +Molex KK-254 Interconnect System, old/engineering part number: AE-6410-10A example for new part number: 22-27-2101, 10 Pins (http://www.molex.com/pdm_docs/sd/022272021_sd.pdf), generated with kicad-footprint-generator +connector Molex KK-254 vertical +0 +10 +10 +Connector_Molex +Molex_KK-254_AE-6410-11A_1x11_P2.54mm_Vertical +Molex KK-254 Interconnect System, old/engineering part number: AE-6410-11A example for new part number: 22-27-2111, 11 Pins (http://www.molex.com/pdm_docs/sd/022272021_sd.pdf), generated with kicad-footprint-generator +connector Molex KK-254 vertical +0 +11 +11 +Connector_Molex +Molex_KK-254_AE-6410-12A_1x12_P2.54mm_Vertical +Molex KK-254 Interconnect System, old/engineering part number: AE-6410-12A example for new part number: 22-27-2121, 12 Pins (http://www.molex.com/pdm_docs/sd/022272021_sd.pdf), generated with kicad-footprint-generator +connector Molex KK-254 vertical +0 +12 +12 +Connector_Molex +Molex_KK-254_AE-6410-13A_1x13_P2.54mm_Vertical +Molex KK-254 Interconnect System, old/engineering part number: AE-6410-13A example for new part number: 22-27-2131, 13 Pins (http://www.molex.com/pdm_docs/sd/022272021_sd.pdf), generated with kicad-footprint-generator +connector Molex KK-254 vertical +0 +13 +13 +Connector_Molex +Molex_KK-254_AE-6410-14A_1x14_P2.54mm_Vertical +Molex KK-254 Interconnect System, old/engineering part number: AE-6410-14A example for new part number: 22-27-2141, 14 Pins (http://www.molex.com/pdm_docs/sd/022272021_sd.pdf), generated with kicad-footprint-generator +connector Molex KK-254 vertical +0 +14 +14 +Connector_Molex +Molex_KK-254_AE-6410-15A_1x15_P2.54mm_Vertical +Molex KK-254 Interconnect System, old/engineering part number: AE-6410-15A example for new part number: 22-27-2151, 15 Pins (http://www.molex.com/pdm_docs/sd/022272021_sd.pdf), generated with kicad-footprint-generator +connector Molex KK-254 vertical +0 +15 +15 +Connector_Molex +Molex_KK-254_AE-6410-16A_1x16_P2.54mm_Vertical +Molex KK-254 Interconnect System, old/engineering part number: AE-6410-16A example for new part number: 22-27-2161, 16 Pins (http://www.molex.com/pdm_docs/sd/022272021_sd.pdf), generated with kicad-footprint-generator +connector Molex KK-254 vertical +0 +16 +16 +Connector_Molex +Molex_KK-396_A-41791-0002_1x02_P3.96mm_Vertical +Molex KK 396 Interconnect System, old/engineering part number: A-41791-0002 example for new part number: 26-60-4020, 2 Pins (https://www.molex.com/pdm_docs/sd/026604020_sd.pdf), generated with kicad-footprint-generator +connector Molex KK-396 vertical +0 +2 +2 +Connector_Molex +Molex_KK-396_A-41791-0003_1x03_P3.96mm_Vertical +Molex KK 396 Interconnect System, old/engineering part number: A-41791-0003 example for new part number: 26-60-4030, 3 Pins (https://www.molex.com/pdm_docs/sd/026604020_sd.pdf), generated with kicad-footprint-generator +connector Molex KK-396 vertical +0 +3 +3 +Connector_Molex +Molex_KK-396_A-41791-0004_1x04_P3.96mm_Vertical +Molex KK 396 Interconnect System, old/engineering part number: A-41791-0004 example for new part number: 26-60-4040, 4 Pins (https://www.molex.com/pdm_docs/sd/026604020_sd.pdf), generated with kicad-footprint-generator +connector Molex KK-396 vertical +0 +4 +4 +Connector_Molex +Molex_KK-396_A-41791-0005_1x05_P3.96mm_Vertical +Molex KK 396 Interconnect System, old/engineering part number: A-41791-0005 example for new part number: 26-60-4050, 5 Pins (https://www.molex.com/pdm_docs/sd/026604020_sd.pdf), generated with kicad-footprint-generator +connector Molex KK-396 vertical +0 +5 +5 +Connector_Molex +Molex_KK-396_A-41791-0006_1x06_P3.96mm_Vertical +Molex KK 396 Interconnect System, old/engineering part number: A-41791-0006 example for new part number: 26-60-4060, 6 Pins (https://www.molex.com/pdm_docs/sd/026604020_sd.pdf), generated with kicad-footprint-generator +connector Molex KK-396 vertical +0 +6 +6 +Connector_Molex +Molex_KK-396_A-41791-0007_1x07_P3.96mm_Vertical +Molex KK 396 Interconnect System, old/engineering part number: A-41791-0007 example for new part number: 26-60-4070, 7 Pins (https://www.molex.com/pdm_docs/sd/026604020_sd.pdf), generated with kicad-footprint-generator +connector Molex KK-396 vertical +0 +7 +7 +Connector_Molex +Molex_KK-396_A-41791-0008_1x08_P3.96mm_Vertical +Molex KK 396 Interconnect System, old/engineering part number: A-41791-0008 example for new part number: 26-60-4080, 8 Pins (https://www.molex.com/pdm_docs/sd/026604020_sd.pdf), generated with kicad-footprint-generator +connector Molex KK-396 vertical +0 +8 +8 +Connector_Molex +Molex_KK-396_A-41791-0009_1x09_P3.96mm_Vertical +Molex KK 396 Interconnect System, old/engineering part number: A-41791-0009 example for new part number: 26-60-4090, 9 Pins (https://www.molex.com/pdm_docs/sd/026604020_sd.pdf), generated with kicad-footprint-generator +connector Molex KK-396 vertical +0 +9 +9 +Connector_Molex +Molex_KK-396_A-41791-0010_1x10_P3.96mm_Vertical +Molex KK 396 Interconnect System, old/engineering part number: A-41791-0010 example for new part number: 26-60-4100, 10 Pins (https://www.molex.com/pdm_docs/sd/026604020_sd.pdf), generated with kicad-footprint-generator +connector Molex KK-396 vertical +0 +10 +10 +Connector_Molex +Molex_KK-396_A-41791-0011_1x11_P3.96mm_Vertical +Molex KK 396 Interconnect System, old/engineering part number: A-41791-0011 example for new part number: 26-60-4110, 11 Pins (https://www.molex.com/pdm_docs/sd/026604020_sd.pdf), generated with kicad-footprint-generator +connector Molex KK-396 vertical +0 +11 +11 +Connector_Molex +Molex_KK-396_A-41791-0012_1x12_P3.96mm_Vertical +Molex KK 396 Interconnect System, old/engineering part number: A-41791-0012 example for new part number: 26-60-4120, 12 Pins (https://www.molex.com/pdm_docs/sd/026604020_sd.pdf), generated with kicad-footprint-generator +connector Molex KK-396 vertical +0 +12 +12 +Connector_Molex +Molex_KK-396_A-41791-0013_1x13_P3.96mm_Vertical +Molex KK 396 Interconnect System, old/engineering part number: A-41791-0013 example for new part number: 26-60-4130, 13 Pins (https://www.molex.com/pdm_docs/sd/026604020_sd.pdf), generated with kicad-footprint-generator +connector Molex KK-396 vertical +0 +13 +13 +Connector_Molex +Molex_KK-396_A-41791-0014_1x14_P3.96mm_Vertical +Molex KK 396 Interconnect System, old/engineering part number: A-41791-0014 example for new part number: 26-60-4140, 14 Pins (https://www.molex.com/pdm_docs/sd/026604020_sd.pdf), generated with kicad-footprint-generator +connector Molex KK-396 vertical +0 +14 +14 +Connector_Molex +Molex_KK-396_A-41791-0015_1x15_P3.96mm_Vertical +Molex KK 396 Interconnect System, old/engineering part number: A-41791-0015 example for new part number: 26-60-4150, 15 Pins (https://www.molex.com/pdm_docs/sd/026604020_sd.pdf), generated with kicad-footprint-generator +connector Molex KK-396 vertical +0 +15 +15 +Connector_Molex +Molex_KK-396_A-41791-0016_1x16_P3.96mm_Vertical +Molex KK 396 Interconnect System, old/engineering part number: A-41791-0016 example for new part number: 26-60-4160, 16 Pins (https://www.molex.com/pdm_docs/sd/026604020_sd.pdf), generated with kicad-footprint-generator +connector Molex KK-396 vertical +0 +16 +16 +Connector_Molex +Molex_KK-396_A-41791-0017_1x17_P3.96mm_Vertical +Molex KK 396 Interconnect System, old/engineering part number: A-41791-0017 example for new part number: 26-60-4170, 17 Pins (https://www.molex.com/pdm_docs/sd/026604020_sd.pdf), generated with kicad-footprint-generator +connector Molex KK-396 vertical +0 +17 +17 +Connector_Molex +Molex_KK-396_A-41791-0018_1x18_P3.96mm_Vertical +Molex KK 396 Interconnect System, old/engineering part number: A-41791-0018 example for new part number: 26-60-4180, 18 Pins (https://www.molex.com/pdm_docs/sd/026604020_sd.pdf), generated with kicad-footprint-generator +connector Molex KK-396 vertical +0 +18 +18 +Connector_Molex +Molex_Mega-Fit_76825-0002_2x01_P5.70mm_Horizontal +Molex Mega-Fit Power Connectors, 76825-0002 (compatible alternatives: 172064-0002, 172064-1002), 1 Pins per row (http://www.molex.com/pdm_docs/sd/1720640002_sd.pdf), generated with kicad-footprint-generator +connector Molex Mega-Fit top entry +0 +2 +2 +Connector_Molex +Molex_Mega-Fit_76825-0004_2x02_P5.70mm_Horizontal +Molex Mega-Fit Power Connectors, 76825-0004 (compatible alternatives: 172064-0004, 172064-1004), 2 Pins per row (http://www.molex.com/pdm_docs/sd/1720640002_sd.pdf), generated with kicad-footprint-generator +connector Molex Mega-Fit top entry +0 +4 +4 +Connector_Molex +Molex_Mega-Fit_76825-0006_2x03_P5.70mm_Horizontal +Molex Mega-Fit Power Connectors, 76825-0006 (compatible alternatives: 172064-0006, 172064-1006), 3 Pins per row (http://www.molex.com/pdm_docs/sd/1720640002_sd.pdf), generated with kicad-footprint-generator +connector Molex Mega-Fit top entry +0 +6 +6 +Connector_Molex +Molex_Mega-Fit_76825-0008_2x04_P5.70mm_Horizontal +Molex Mega-Fit Power Connectors, 76825-0008 (compatible alternatives: 172064-0008, 172064-1008), 4 Pins per row (http://www.molex.com/pdm_docs/sd/1720640002_sd.pdf), generated with kicad-footprint-generator +connector Molex Mega-Fit top entry +0 +8 +8 +Connector_Molex +Molex_Mega-Fit_76825-0010_2x05_P5.70mm_Horizontal +Molex Mega-Fit Power Connectors, 76825-0010 (compatible alternatives: 172064-0010, 172064-1010), 5 Pins per row (http://www.molex.com/pdm_docs/sd/1720640002_sd.pdf), generated with kicad-footprint-generator +connector Molex Mega-Fit top entry +0 +10 +10 +Connector_Molex +Molex_Mega-Fit_76825-0012_2x06_P5.70mm_Horizontal +Molex Mega-Fit Power Connectors, 76825-0012 (compatible alternatives: 172064-0012, 172064-1012), 6 Pins per row (http://www.molex.com/pdm_docs/sd/1720640002_sd.pdf), generated with kicad-footprint-generator +connector Molex Mega-Fit top entry +0 +12 +12 +Connector_Molex +Molex_Mega-Fit_76829-0002_2x01_P5.70mm_Vertical +Molex Mega-Fit Power Connectors, 76829-0002 (compatible alternatives: 172065-0002, 172065-1002), 1 Pins per row (http://www.molex.com/pdm_docs/sd/768290004_sd.pdf), generated with kicad-footprint-generator +connector Molex Mega-Fit side entry +0 +2 +2 +Connector_Molex +Molex_Mega-Fit_76829-0004_2x02_P5.70mm_Vertical +Molex Mega-Fit Power Connectors, 76829-0004 (compatible alternatives: 172065-0004, 172065-1004), 2 Pins per row (http://www.molex.com/pdm_docs/sd/768290004_sd.pdf), generated with kicad-footprint-generator +connector Molex Mega-Fit side entry +0 +4 +4 +Connector_Molex +Molex_Mega-Fit_76829-0006_2x03_P5.70mm_Vertical +Molex Mega-Fit Power Connectors, 76829-0006 (compatible alternatives: 172065-0006, 172065-1006), 3 Pins per row (http://www.molex.com/pdm_docs/sd/768290004_sd.pdf), generated with kicad-footprint-generator +connector Molex Mega-Fit side entry +0 +6 +6 +Connector_Molex +Molex_Mega-Fit_76829-0008_2x04_P5.70mm_Vertical +Molex Mega-Fit Power Connectors, 76829-0008 (compatible alternatives: 172065-0008, 172065-1008), 4 Pins per row (http://www.molex.com/pdm_docs/sd/768290004_sd.pdf), generated with kicad-footprint-generator +connector Molex Mega-Fit side entry +0 +8 +8 +Connector_Molex +Molex_Mega-Fit_76829-0010_2x05_P5.70mm_Vertical +Molex Mega-Fit Power Connectors, 76829-0010 (compatible alternatives: 172065-0010, 172065-1010), 5 Pins per row (http://www.molex.com/pdm_docs/sd/768290004_sd.pdf), generated with kicad-footprint-generator +connector Molex Mega-Fit side entry +0 +10 +10 +Connector_Molex +Molex_Mega-Fit_76829-0012_2x06_P5.70mm_Vertical +Molex Mega-Fit Power Connectors, 76829-0012 (compatible alternatives: 172065-0012, 172065-1012), 6 Pins per row (http://www.molex.com/pdm_docs/sd/768290004_sd.pdf), generated with kicad-footprint-generator +connector Molex Mega-Fit side entry +0 +12 +12 +Connector_Molex +Molex_Mega-Fit_76829-0102_2x01_P5.70mm_Vertical +Molex Mega-Fit Power Connectors, 76829-0102 (compatible alternatives: 172065-0202, 172065-0302), 1 Pins per row (http://www.molex.com/pdm_docs/sd/768290102_sd.pdf), generated with kicad-footprint-generator +connector Molex Mega-Fit side entry +0 +2 +2 +Connector_Molex +Molex_Mega-Fit_76829-0104_2x02_P5.70mm_Vertical +Molex Mega-Fit Power Connectors, 76829-0104 (compatible alternatives: 172065-0204, 172065-0304), 2 Pins per row (http://www.molex.com/pdm_docs/sd/768290102_sd.pdf), generated with kicad-footprint-generator +connector Molex Mega-Fit side entry +0 +4 +4 +Connector_Molex +Molex_Mega-Fit_76829-0106_2x03_P5.70mm_Vertical +Molex Mega-Fit Power Connectors, 76829-0106 (compatible alternatives: 172065-0206, 172065-0306), 3 Pins per row (http://www.molex.com/pdm_docs/sd/768290102_sd.pdf), generated with kicad-footprint-generator +connector Molex Mega-Fit side entry +0 +6 +6 +Connector_Molex +Molex_Mega-Fit_76829-0108_2x04_P5.70mm_Vertical +Molex Mega-Fit Power Connectors, 76829-0108 (compatible alternatives: 172065-0208, 172065-0308), 4 Pins per row (http://www.molex.com/pdm_docs/sd/768290102_sd.pdf), generated with kicad-footprint-generator +connector Molex Mega-Fit side entry +0 +8 +8 +Connector_Molex +Molex_Mega-Fit_76829-0110_2x05_P5.70mm_Vertical +Molex Mega-Fit Power Connectors, 76829-0110 (compatible alternatives: 172065-0210, 172065-0310), 5 Pins per row (http://www.molex.com/pdm_docs/sd/768290102_sd.pdf), generated with kicad-footprint-generator +connector Molex Mega-Fit side entry +0 +10 +10 +Connector_Molex +Molex_Mega-Fit_76829-0112_2x06_P5.70mm_Vertical +Molex Mega-Fit Power Connectors, 76829-0112 (compatible alternatives: 172065-0212, 172065-0312), 6 Pins per row (http://www.molex.com/pdm_docs/sd/768290102_sd.pdf), generated with kicad-footprint-generator +connector Molex Mega-Fit side entry +0 +12 +12 +Connector_Molex +Molex_Micro-Fit_3.0_43045-0200_2x01_P3.00mm_Horizontal +Molex Micro-Fit 3.0 Connector System, 43045-0200 (alternative finishes: 43045-020x), 1 Pins per row (https://www.molex.com/pdm_docs/sd/430450201_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 horizontal +0 +2 +2 +Connector_Molex +Molex_Micro-Fit_3.0_43045-0210_2x01-1MP_P3.00mm_Horizontal +Molex Micro-Fit 3.0 Connector System, 43045-0210 (compatible alternatives: 43045-0211, 43045-0209), 1 Pins per row (http://www.molex.com/pdm_docs/sd/430450210_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 top entry +0 +4 +3 +Connector_Molex +Molex_Micro-Fit_3.0_43045-0212_2x01_P3.00mm_Vertical +Molex Micro-Fit 3.0 Connector System, 43045-0212 (compatible alternatives: 43045-0213, 43045-0224), 1 Pins per row (http://www.molex.com/pdm_docs/sd/430450212_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 side entry +0 +2 +2 +Connector_Molex +Molex_Micro-Fit_3.0_43045-0215_2x01_P3.00mm_Vertical +Molex Micro-Fit 3.0 Connector System, 43045-0215 (compatible alternatives: 43045-0216, 43045-0217), 1 Pins per row (http://www.molex.com/pdm_docs/sd/430450217_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 side entry +0 +2 +2 +Connector_Molex +Molex_Micro-Fit_3.0_43045-0218_2x01-1MP_P3.00mm_Vertical +Molex Micro-Fit 3.0 Connector System, 43045-0218 (compatible alternatives: 43045-0219, 43045-0220), 1 Pins per row (http://www.molex.com/pdm_docs/sd/430450218_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 side entry +0 +4 +3 +Connector_Molex +Molex_Micro-Fit_3.0_43045-0221_2x01-1MP_P3.00mm_Horizontal +Molex Micro-Fit 3.0 Connector System, 43045-0221 (alternative finishes: 43045-022x), 1 Pins per row (https://www.molex.com/pdm_docs/sd/430450221_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 horizontal +0 +4 +3 +Connector_Molex +Molex_Micro-Fit_3.0_43045-0400_2x02_P3.00mm_Horizontal +Molex Micro-Fit 3.0 Connector System, 43045-0400 (alternative finishes: 43045-040x), 2 Pins per row (https://www.molex.com/pdm_docs/sd/430450201_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 horizontal +0 +4 +4 +Connector_Molex +Molex_Micro-Fit_3.0_43045-0410_2x02-1MP_P3.00mm_Horizontal +Molex Micro-Fit 3.0 Connector System, 43045-0410 (compatible alternatives: 43045-0411, 43045-0409), 2 Pins per row (http://www.molex.com/pdm_docs/sd/430450210_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 top entry +0 +6 +5 +Connector_Molex +Molex_Micro-Fit_3.0_43045-0412_2x02_P3.00mm_Vertical +Molex Micro-Fit 3.0 Connector System, 43045-0412 (compatible alternatives: 43045-0413, 43045-0424), 2 Pins per row (http://www.molex.com/pdm_docs/sd/430450212_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 side entry +0 +4 +4 +Connector_Molex +Molex_Micro-Fit_3.0_43045-0415_2x02_P3.00mm_Vertical +Molex Micro-Fit 3.0 Connector System, 43045-0415 (compatible alternatives: 43045-0416, 43045-0417), 2 Pins per row (http://www.molex.com/pdm_docs/sd/430450217_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 side entry +0 +4 +4 +Connector_Molex +Molex_Micro-Fit_3.0_43045-0418_2x02-1MP_P3.00mm_Vertical +Molex Micro-Fit 3.0 Connector System, 43045-0418 (compatible alternatives: 43045-0419, 43045-0420), 2 Pins per row (http://www.molex.com/pdm_docs/sd/430450218_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 side entry +0 +6 +5 +Connector_Molex +Molex_Micro-Fit_3.0_43045-0421_2x02-1MP_P3.00mm_Horizontal +Molex Micro-Fit 3.0 Connector System, 43045-0421 (alternative finishes: 43045-042x), 2 Pins per row (https://www.molex.com/pdm_docs/sd/430450221_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 horizontal +0 +6 +5 +Connector_Molex +Molex_Micro-Fit_3.0_43045-0600_2x03_P3.00mm_Horizontal +Molex Micro-Fit 3.0 Connector System, 43045-0600 (alternative finishes: 43045-060x), 3 Pins per row (https://www.molex.com/pdm_docs/sd/430450201_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 horizontal +0 +6 +6 +Connector_Molex +Molex_Micro-Fit_3.0_43045-0610_2x03-1MP_P3.00mm_Horizontal +Molex Micro-Fit 3.0 Connector System, 43045-0610 (compatible alternatives: 43045-0611, 43045-0609), 3 Pins per row (http://www.molex.com/pdm_docs/sd/430450210_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 top entry +0 +8 +7 +Connector_Molex +Molex_Micro-Fit_3.0_43045-0612_2x03_P3.00mm_Vertical +Molex Micro-Fit 3.0 Connector System, 43045-0612 (compatible alternatives: 43045-0613, 43045-0624), 3 Pins per row (http://www.molex.com/pdm_docs/sd/430450212_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 side entry +0 +6 +6 +Connector_Molex +Molex_Micro-Fit_3.0_43045-0615_2x03_P3.00mm_Vertical +Molex Micro-Fit 3.0 Connector System, 43045-0615 (compatible alternatives: 43045-0616, 43045-0617), 3 Pins per row (http://www.molex.com/pdm_docs/sd/430450217_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 side entry +0 +6 +6 +Connector_Molex +Molex_Micro-Fit_3.0_43045-0618_2x03-1MP_P3.00mm_Vertical +Molex Micro-Fit 3.0 Connector System, 43045-0618 (compatible alternatives: 43045-0619, 43045-0620), 3 Pins per row (http://www.molex.com/pdm_docs/sd/430450218_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 side entry +0 +8 +7 +Connector_Molex +Molex_Micro-Fit_3.0_43045-0621_2x03-1MP_P3.00mm_Horizontal +Molex Micro-Fit 3.0 Connector System, 43045-0621 (alternative finishes: 43045-062x), 3 Pins per row (https://www.molex.com/pdm_docs/sd/430450221_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 horizontal +0 +8 +7 +Connector_Molex +Molex_Micro-Fit_3.0_43045-0800_2x04_P3.00mm_Horizontal +Molex Micro-Fit 3.0 Connector System, 43045-0800 (alternative finishes: 43045-080x), 4 Pins per row (https://www.molex.com/pdm_docs/sd/430450201_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 horizontal +0 +8 +8 +Connector_Molex +Molex_Micro-Fit_3.0_43045-0810_2x04-1MP_P3.00mm_Horizontal +Molex Micro-Fit 3.0 Connector System, 43045-0810 (compatible alternatives: 43045-0811, 43045-0809), 4 Pins per row (http://www.molex.com/pdm_docs/sd/430450210_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 top entry +0 +10 +9 +Connector_Molex +Molex_Micro-Fit_3.0_43045-0812_2x04_P3.00mm_Vertical +Molex Micro-Fit 3.0 Connector System, 43045-0812 (compatible alternatives: 43045-0813, 43045-0824), 4 Pins per row (http://www.molex.com/pdm_docs/sd/430450212_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 side entry +0 +8 +8 +Connector_Molex +Molex_Micro-Fit_3.0_43045-0815_2x04_P3.00mm_Vertical +Molex Micro-Fit 3.0 Connector System, 43045-0815 (compatible alternatives: 43045-0816, 43045-0817), 4 Pins per row (http://www.molex.com/pdm_docs/sd/430450217_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 side entry +0 +8 +8 +Connector_Molex +Molex_Micro-Fit_3.0_43045-0818_2x04-1MP_P3.00mm_Vertical +Molex Micro-Fit 3.0 Connector System, 43045-0818 (compatible alternatives: 43045-0819, 43045-0820), 4 Pins per row (http://www.molex.com/pdm_docs/sd/430450218_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 side entry +0 +10 +9 +Connector_Molex +Molex_Micro-Fit_3.0_43045-0821_2x04-1MP_P3.00mm_Horizontal +Molex Micro-Fit 3.0 Connector System, 43045-0821 (alternative finishes: 43045-082x), 4 Pins per row (https://www.molex.com/pdm_docs/sd/430450221_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 horizontal +0 +10 +9 +Connector_Molex +Molex_Micro-Fit_3.0_43045-1000_2x05_P3.00mm_Horizontal +Molex Micro-Fit 3.0 Connector System, 43045-1000 (alternative finishes: 43045-100x), 5 Pins per row (https://www.molex.com/pdm_docs/sd/430450201_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 horizontal +0 +10 +10 +Connector_Molex +Molex_Micro-Fit_3.0_43045-1010_2x05-1MP_P3.00mm_Horizontal +Molex Micro-Fit 3.0 Connector System, 43045-1010 (compatible alternatives: 43045-1011, 43045-1009), 5 Pins per row (http://www.molex.com/pdm_docs/sd/430450210_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 top entry +0 +12 +11 +Connector_Molex +Molex_Micro-Fit_3.0_43045-1012_2x05_P3.00mm_Vertical +Molex Micro-Fit 3.0 Connector System, 43045-1012 (compatible alternatives: 43045-1013, 43045-1024), 5 Pins per row (http://www.molex.com/pdm_docs/sd/430450212_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 side entry +0 +10 +10 +Connector_Molex +Molex_Micro-Fit_3.0_43045-1015_2x05_P3.00mm_Vertical +Molex Micro-Fit 3.0 Connector System, 43045-1015 (compatible alternatives: 43045-1016, 43045-1017), 5 Pins per row (http://www.molex.com/pdm_docs/sd/430450217_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 side entry +0 +10 +10 +Connector_Molex +Molex_Micro-Fit_3.0_43045-1018_2x05-1MP_P3.00mm_Vertical +Molex Micro-Fit 3.0 Connector System, 43045-1018 (compatible alternatives: 43045-1019, 43045-1020), 5 Pins per row (http://www.molex.com/pdm_docs/sd/430450218_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 side entry +0 +12 +11 +Connector_Molex +Molex_Micro-Fit_3.0_43045-1021_2x05-1MP_P3.00mm_Horizontal +Molex Micro-Fit 3.0 Connector System, 43045-1021 (alternative finishes: 43045-102x), 5 Pins per row (https://www.molex.com/pdm_docs/sd/430450221_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 horizontal +0 +12 +11 +Connector_Molex +Molex_Micro-Fit_3.0_43045-1200_2x06_P3.00mm_Horizontal +Molex Micro-Fit 3.0 Connector System, 43045-1200 (alternative finishes: 43045-120x), 6 Pins per row (https://www.molex.com/pdm_docs/sd/430450201_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 horizontal +0 +12 +12 +Connector_Molex +Molex_Micro-Fit_3.0_43045-1210_2x06-1MP_P3.00mm_Horizontal +Molex Micro-Fit 3.0 Connector System, 43045-1210 (compatible alternatives: 43045-1211, 43045-1209), 6 Pins per row (http://www.molex.com/pdm_docs/sd/430450210_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 top entry +0 +14 +13 +Connector_Molex +Molex_Micro-Fit_3.0_43045-1212_2x06_P3.00mm_Vertical +Molex Micro-Fit 3.0 Connector System, 43045-1212 (compatible alternatives: 43045-1213, 43045-1224), 6 Pins per row (http://www.molex.com/pdm_docs/sd/430450212_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 side entry +0 +12 +12 +Connector_Molex +Molex_Micro-Fit_3.0_43045-1215_2x06_P3.00mm_Vertical +Molex Micro-Fit 3.0 Connector System, 43045-1215 (compatible alternatives: 43045-1216, 43045-1217), 6 Pins per row (http://www.molex.com/pdm_docs/sd/430450217_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 side entry +0 +12 +12 +Connector_Molex +Molex_Micro-Fit_3.0_43045-1218_2x06-1MP_P3.00mm_Vertical +Molex Micro-Fit 3.0 Connector System, 43045-1218 (compatible alternatives: 43045-1219, 43045-1220), 6 Pins per row (http://www.molex.com/pdm_docs/sd/430450218_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 side entry +0 +14 +13 +Connector_Molex +Molex_Micro-Fit_3.0_43045-1221_2x06-1MP_P3.00mm_Horizontal +Molex Micro-Fit 3.0 Connector System, 43045-1221 (alternative finishes: 43045-122x), 6 Pins per row (https://www.molex.com/pdm_docs/sd/430450221_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 horizontal +0 +14 +13 +Connector_Molex +Molex_Micro-Fit_3.0_43045-1400_2x07_P3.00mm_Horizontal +Molex Micro-Fit 3.0 Connector System, 43045-1400 (alternative finishes: 43045-140x), 7 Pins per row (https://www.molex.com/pdm_docs/sd/430450201_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 horizontal +0 +14 +14 +Connector_Molex +Molex_Micro-Fit_3.0_43045-1410_2x07-1MP_P3.00mm_Horizontal +Molex Micro-Fit 3.0 Connector System, 43045-1410 (compatible alternatives: 43045-1411, 43045-1409), 7 Pins per row (http://www.molex.com/pdm_docs/sd/430450210_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 top entry +0 +16 +15 +Connector_Molex +Molex_Micro-Fit_3.0_43045-1412_2x07_P3.00mm_Vertical +Molex Micro-Fit 3.0 Connector System, 43045-1412 (compatible alternatives: 43045-1413, 43045-1424), 7 Pins per row (http://www.molex.com/pdm_docs/sd/430450212_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 side entry +0 +14 +14 +Connector_Molex +Molex_Micro-Fit_3.0_43045-1415_2x07_P3.00mm_Vertical +Molex Micro-Fit 3.0 Connector System, 43045-1415 (compatible alternatives: 43045-1416, 43045-1417), 7 Pins per row (http://www.molex.com/pdm_docs/sd/430450217_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 side entry +0 +14 +14 +Connector_Molex +Molex_Micro-Fit_3.0_43045-1418_2x07-1MP_P3.00mm_Vertical +Molex Micro-Fit 3.0 Connector System, 43045-1418 (compatible alternatives: 43045-1419, 43045-1420), 7 Pins per row (http://www.molex.com/pdm_docs/sd/430450218_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 side entry +0 +16 +15 +Connector_Molex +Molex_Micro-Fit_3.0_43045-1421_2x07-1MP_P3.00mm_Horizontal +Molex Micro-Fit 3.0 Connector System, 43045-1421 (alternative finishes: 43045-142x), 7 Pins per row (https://www.molex.com/pdm_docs/sd/430450221_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 horizontal +0 +16 +15 +Connector_Molex +Molex_Micro-Fit_3.0_43045-1600_2x08_P3.00mm_Horizontal +Molex Micro-Fit 3.0 Connector System, 43045-1600 (alternative finishes: 43045-160x), 8 Pins per row (https://www.molex.com/pdm_docs/sd/430450201_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 horizontal +0 +16 +16 +Connector_Molex +Molex_Micro-Fit_3.0_43045-1610_2x08-1MP_P3.00mm_Horizontal +Molex Micro-Fit 3.0 Connector System, 43045-1610 (compatible alternatives: 43045-1611, 43045-1609), 8 Pins per row (http://www.molex.com/pdm_docs/sd/430450210_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 top entry +0 +18 +17 +Connector_Molex +Molex_Micro-Fit_3.0_43045-1612_2x08_P3.00mm_Vertical +Molex Micro-Fit 3.0 Connector System, 43045-1612 (compatible alternatives: 43045-1613, 43045-1624), 8 Pins per row (http://www.molex.com/pdm_docs/sd/430450212_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 side entry +0 +16 +16 +Connector_Molex +Molex_Micro-Fit_3.0_43045-1615_2x08_P3.00mm_Vertical +Molex Micro-Fit 3.0 Connector System, 43045-1615 (compatible alternatives: 43045-1616, 43045-1617), 8 Pins per row (http://www.molex.com/pdm_docs/sd/430450217_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 side entry +0 +16 +16 +Connector_Molex +Molex_Micro-Fit_3.0_43045-1618_2x08-1MP_P3.00mm_Vertical +Molex Micro-Fit 3.0 Connector System, 43045-1618 (compatible alternatives: 43045-1619, 43045-1620), 8 Pins per row (http://www.molex.com/pdm_docs/sd/430450218_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 side entry +0 +18 +17 +Connector_Molex +Molex_Micro-Fit_3.0_43045-1621_2x08-1MP_P3.00mm_Horizontal +Molex Micro-Fit 3.0 Connector System, 43045-1621 (alternative finishes: 43045-162x), 8 Pins per row (https://www.molex.com/pdm_docs/sd/430450221_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 horizontal +0 +18 +17 +Connector_Molex +Molex_Micro-Fit_3.0_43045-1800_2x09_P3.00mm_Horizontal +Molex Micro-Fit 3.0 Connector System, 43045-1800 (alternative finishes: 43045-180x), 9 Pins per row (https://www.molex.com/pdm_docs/sd/430450201_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 horizontal +0 +18 +18 +Connector_Molex +Molex_Micro-Fit_3.0_43045-1810_2x09-1MP_P3.00mm_Horizontal +Molex Micro-Fit 3.0 Connector System, 43045-1810 (compatible alternatives: 43045-1811, 43045-1809), 9 Pins per row (http://www.molex.com/pdm_docs/sd/430450210_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 top entry +0 +20 +19 +Connector_Molex +Molex_Micro-Fit_3.0_43045-1812_2x09_P3.00mm_Vertical +Molex Micro-Fit 3.0 Connector System, 43045-1812 (compatible alternatives: 43045-1813, 43045-1824), 9 Pins per row (http://www.molex.com/pdm_docs/sd/430450212_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 side entry +0 +18 +18 +Connector_Molex +Molex_Micro-Fit_3.0_43045-1815_2x09_P3.00mm_Vertical +Molex Micro-Fit 3.0 Connector System, 43045-1815 (compatible alternatives: 43045-1816, 43045-1817), 9 Pins per row (http://www.molex.com/pdm_docs/sd/430450217_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 side entry +0 +18 +18 +Connector_Molex +Molex_Micro-Fit_3.0_43045-1818_2x09-1MP_P3.00mm_Vertical +Molex Micro-Fit 3.0 Connector System, 43045-1818 (compatible alternatives: 43045-1819, 43045-1820), 9 Pins per row (http://www.molex.com/pdm_docs/sd/430450218_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 side entry +0 +20 +19 +Connector_Molex +Molex_Micro-Fit_3.0_43045-1821_2x09-1MP_P3.00mm_Horizontal +Molex Micro-Fit 3.0 Connector System, 43045-1821 (alternative finishes: 43045-182x), 9 Pins per row (https://www.molex.com/pdm_docs/sd/430450221_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 horizontal +0 +20 +19 +Connector_Molex +Molex_Micro-Fit_3.0_43045-2000_2x10_P3.00mm_Horizontal +Molex Micro-Fit 3.0 Connector System, 43045-2000 (alternative finishes: 43045-200x), 10 Pins per row (https://www.molex.com/pdm_docs/sd/430450201_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 horizontal +0 +20 +20 +Connector_Molex +Molex_Micro-Fit_3.0_43045-2010_2x10-1MP_P3.00mm_Horizontal +Molex Micro-Fit 3.0 Connector System, 43045-2010 (compatible alternatives: 43045-2011, 43045-2009), 10 Pins per row (http://www.molex.com/pdm_docs/sd/430450210_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 top entry +0 +22 +21 +Connector_Molex +Molex_Micro-Fit_3.0_43045-2012_2x10_P3.00mm_Vertical +Molex Micro-Fit 3.0 Connector System, 43045-2012 (compatible alternatives: 43045-2013, 43045-2024), 10 Pins per row (http://www.molex.com/pdm_docs/sd/430450212_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 side entry +0 +20 +20 +Connector_Molex +Molex_Micro-Fit_3.0_43045-2015_2x10_P3.00mm_Vertical +Molex Micro-Fit 3.0 Connector System, 43045-2015 (compatible alternatives: 43045-2016, 43045-2017), 10 Pins per row (http://www.molex.com/pdm_docs/sd/430450217_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 side entry +0 +20 +20 +Connector_Molex +Molex_Micro-Fit_3.0_43045-2018_2x10-1MP_P3.00mm_Vertical +Molex Micro-Fit 3.0 Connector System, 43045-2018 (compatible alternatives: 43045-2019, 43045-2020), 10 Pins per row (http://www.molex.com/pdm_docs/sd/430450218_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 side entry +0 +22 +21 +Connector_Molex +Molex_Micro-Fit_3.0_43045-2021_2x10-1MP_P3.00mm_Horizontal +Molex Micro-Fit 3.0 Connector System, 43045-2021 (alternative finishes: 43045-202x), 10 Pins per row (https://www.molex.com/pdm_docs/sd/430450221_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 horizontal +0 +22 +21 +Connector_Molex +Molex_Micro-Fit_3.0_43045-2200_2x11_P3.00mm_Horizontal +Molex Micro-Fit 3.0 Connector System, 43045-2200 (alternative finishes: 43045-220x), 11 Pins per row (https://www.molex.com/pdm_docs/sd/430450201_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 horizontal +0 +22 +22 +Connector_Molex +Molex_Micro-Fit_3.0_43045-2210_2x11-1MP_P3.00mm_Horizontal +Molex Micro-Fit 3.0 Connector System, 43045-2210 (compatible alternatives: 43045-2211, 43045-2209), 11 Pins per row (http://www.molex.com/pdm_docs/sd/430450210_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 top entry +0 +24 +23 +Connector_Molex +Molex_Micro-Fit_3.0_43045-2212_2x11_P3.00mm_Vertical +Molex Micro-Fit 3.0 Connector System, 43045-2212 (compatible alternatives: 43045-2213, 43045-2224), 11 Pins per row (http://www.molex.com/pdm_docs/sd/430450212_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 side entry +0 +22 +22 +Connector_Molex +Molex_Micro-Fit_3.0_43045-2215_2x11_P3.00mm_Vertical +Molex Micro-Fit 3.0 Connector System, 43045-2215 (compatible alternatives: 43045-2216, 43045-2217), 11 Pins per row (http://www.molex.com/pdm_docs/sd/430450217_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 side entry +0 +22 +22 +Connector_Molex +Molex_Micro-Fit_3.0_43045-2218_2x11-1MP_P3.00mm_Vertical +Molex Micro-Fit 3.0 Connector System, 43045-2218 (compatible alternatives: 43045-2219, 43045-2220), 11 Pins per row (http://www.molex.com/pdm_docs/sd/430450218_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 side entry +0 +24 +23 +Connector_Molex +Molex_Micro-Fit_3.0_43045-2221_2x11-1MP_P3.00mm_Horizontal +Molex Micro-Fit 3.0 Connector System, 43045-2221 (alternative finishes: 43045-222x), 11 Pins per row (https://www.molex.com/pdm_docs/sd/430450221_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 horizontal +0 +24 +23 +Connector_Molex +Molex_Micro-Fit_3.0_43045-2400_2x12_P3.00mm_Horizontal +Molex Micro-Fit 3.0 Connector System, 43045-2400 (alternative finishes: 43045-240x), 12 Pins per row (https://www.molex.com/pdm_docs/sd/430450201_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 horizontal +0 +24 +24 +Connector_Molex +Molex_Micro-Fit_3.0_43045-2410_2x12-1MP_P3.00mm_Horizontal +Molex Micro-Fit 3.0 Connector System, 43045-2410 (compatible alternatives: 43045-2411, 43045-2409), 12 Pins per row (http://www.molex.com/pdm_docs/sd/430450210_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 top entry +0 +26 +25 +Connector_Molex +Molex_Micro-Fit_3.0_43045-2412_2x12_P3.00mm_Vertical +Molex Micro-Fit 3.0 Connector System, 43045-2412 (compatible alternatives: 43045-2413, 43045-2424), 12 Pins per row (http://www.molex.com/pdm_docs/sd/430450212_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 side entry +0 +24 +24 +Connector_Molex +Molex_Micro-Fit_3.0_43045-2415_2x12_P3.00mm_Vertical +Molex Micro-Fit 3.0 Connector System, 43045-2415 (compatible alternatives: 43045-2416, 43045-2417), 12 Pins per row (http://www.molex.com/pdm_docs/sd/430450217_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 side entry +0 +24 +24 +Connector_Molex +Molex_Micro-Fit_3.0_43045-2418_2x12-1MP_P3.00mm_Vertical +Molex Micro-Fit 3.0 Connector System, 43045-2418 (compatible alternatives: 43045-2419, 43045-2420), 12 Pins per row (http://www.molex.com/pdm_docs/sd/430450218_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 side entry +0 +26 +25 +Connector_Molex +Molex_Micro-Fit_3.0_43045-2421_2x12-1MP_P3.00mm_Horizontal +Molex Micro-Fit 3.0 Connector System, 43045-2421 (alternative finishes: 43045-242x), 12 Pins per row (https://www.molex.com/pdm_docs/sd/430450221_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 horizontal +0 +26 +25 +Connector_Molex +Molex_Micro-Fit_3.0_43650-0200_1x02_P3.00mm_Horizontal +Molex Micro-Fit 3.0 Connector System, 43650-0200 (compatible alternatives: 43650-0201, 43650-0202), 2 Pins per row (https://www.molex.com/pdm_docs/sd/436500300_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 top entry +0 +2 +2 +Connector_Molex +Molex_Micro-Fit_3.0_43650-0215_1x02_P3.00mm_Vertical +Molex Micro-Fit 3.0 Connector System, 43650-0215 (compatible alternatives: 43650-0216, 43650-0217), 2 Pins per row (http://www.molex.com/pdm_docs/sd/436500215_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 vertical +0 +2 +2 +Connector_Molex +Molex_Micro-Fit_3.0_43650-0300_1x03_P3.00mm_Horizontal +Molex Micro-Fit 3.0 Connector System, 43650-0300 (compatible alternatives: 43650-0301, 43650-0302), 3 Pins per row (https://www.molex.com/pdm_docs/sd/436500300_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 top entry +0 +3 +3 +Connector_Molex +Molex_Micro-Fit_3.0_43650-0315_1x03_P3.00mm_Vertical +Molex Micro-Fit 3.0 Connector System, 43650-0315 (compatible alternatives: 43650-0316, 43650-0317), 3 Pins per row (http://www.molex.com/pdm_docs/sd/436500215_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 vertical +0 +3 +3 +Connector_Molex +Molex_Micro-Fit_3.0_43650-0400_1x04_P3.00mm_Horizontal +Molex Micro-Fit 3.0 Connector System, 43650-0400 (compatible alternatives: 43650-0401, 43650-0402), 4 Pins per row (https://www.molex.com/pdm_docs/sd/436500300_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 top entry +0 +4 +4 +Connector_Molex +Molex_Micro-Fit_3.0_43650-0415_1x04_P3.00mm_Vertical +Molex Micro-Fit 3.0 Connector System, 43650-0415 (compatible alternatives: 43650-0416, 43650-0417), 4 Pins per row (http://www.molex.com/pdm_docs/sd/436500215_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 vertical +0 +4 +4 +Connector_Molex +Molex_Micro-Fit_3.0_43650-0500_1x05_P3.00mm_Horizontal +Molex Micro-Fit 3.0 Connector System, 43650-0500 (compatible alternatives: 43650-0501, 43650-0502), 5 Pins per row (https://www.molex.com/pdm_docs/sd/436500300_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 top entry +0 +5 +5 +Connector_Molex +Molex_Micro-Fit_3.0_43650-0515_1x05_P3.00mm_Vertical +Molex Micro-Fit 3.0 Connector System, 43650-0515 (compatible alternatives: 43650-0516, 43650-0517), 5 Pins per row (http://www.molex.com/pdm_docs/sd/436500215_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 vertical +0 +5 +5 +Connector_Molex +Molex_Micro-Fit_3.0_43650-0600_1x06_P3.00mm_Horizontal +Molex Micro-Fit 3.0 Connector System, 43650-0600 (compatible alternatives: 43650-0601, 43650-0602), 6 Pins per row (https://www.molex.com/pdm_docs/sd/436500300_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 top entry +0 +6 +6 +Connector_Molex +Molex_Micro-Fit_3.0_43650-0615_1x06_P3.00mm_Vertical +Molex Micro-Fit 3.0 Connector System, 43650-0615 (compatible alternatives: 43650-0616, 43650-0617), 6 Pins per row (http://www.molex.com/pdm_docs/sd/436500215_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 vertical +0 +6 +6 +Connector_Molex +Molex_Micro-Fit_3.0_43650-0700_1x07_P3.00mm_Horizontal +Molex Micro-Fit 3.0 Connector System, 43650-0700 (compatible alternatives: 43650-0701, 43650-0702), 7 Pins per row (https://www.molex.com/pdm_docs/sd/436500300_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 top entry +0 +7 +7 +Connector_Molex +Molex_Micro-Fit_3.0_43650-0715_1x07_P3.00mm_Vertical +Molex Micro-Fit 3.0 Connector System, 43650-0715 (compatible alternatives: 43650-0716, 43650-0717), 7 Pins per row (http://www.molex.com/pdm_docs/sd/436500215_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 vertical +0 +7 +7 +Connector_Molex +Molex_Micro-Fit_3.0_43650-0800_1x08_P3.00mm_Horizontal +Molex Micro-Fit 3.0 Connector System, 43650-0800 (compatible alternatives: 43650-0801, 43650-0802), 8 Pins per row (https://www.molex.com/pdm_docs/sd/436500300_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 top entry +0 +8 +8 +Connector_Molex +Molex_Micro-Fit_3.0_43650-0815_1x08_P3.00mm_Vertical +Molex Micro-Fit 3.0 Connector System, 43650-0815 (compatible alternatives: 43650-0816, 43650-0817), 8 Pins per row (http://www.molex.com/pdm_docs/sd/436500215_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 vertical +0 +8 +8 +Connector_Molex +Molex_Micro-Fit_3.0_43650-0900_1x09_P3.00mm_Horizontal +Molex Micro-Fit 3.0 Connector System, 43650-0900 (compatible alternatives: 43650-0901, 43650-0902), 9 Pins per row (https://www.molex.com/pdm_docs/sd/436500300_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 top entry +0 +9 +9 +Connector_Molex +Molex_Micro-Fit_3.0_43650-0915_1x09_P3.00mm_Vertical +Molex Micro-Fit 3.0 Connector System, 43650-0915 (compatible alternatives: 43650-0916, 43650-0917), 9 Pins per row (http://www.molex.com/pdm_docs/sd/436500215_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 vertical +0 +9 +9 +Connector_Molex +Molex_Micro-Fit_3.0_43650-1000_1x10_P3.00mm_Horizontal +Molex Micro-Fit 3.0 Connector System, 43650-1000 (compatible alternatives: 43650-1001, 43650-1002), 10 Pins per row (https://www.molex.com/pdm_docs/sd/436500300_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 top entry +0 +10 +10 +Connector_Molex +Molex_Micro-Fit_3.0_43650-1015_1x10_P3.00mm_Vertical +Molex Micro-Fit 3.0 Connector System, 43650-1015 (compatible alternatives: 43650-1016, 43650-1017), 10 Pins per row (http://www.molex.com/pdm_docs/sd/436500215_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 vertical +0 +10 +10 +Connector_Molex +Molex_Micro-Fit_3.0_43650-1100_1x11_P3.00mm_Horizontal +Molex Micro-Fit 3.0 Connector System, 43650-1100 (compatible alternatives: 43650-1101, 43650-1102), 11 Pins per row (https://www.molex.com/pdm_docs/sd/436500300_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 top entry +0 +11 +11 +Connector_Molex +Molex_Micro-Fit_3.0_43650-1115_1x11_P3.00mm_Vertical +Molex Micro-Fit 3.0 Connector System, 43650-1115 (compatible alternatives: 43650-1116, 43650-1117), 11 Pins per row (http://www.molex.com/pdm_docs/sd/436500215_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 vertical +0 +11 +11 +Connector_Molex +Molex_Micro-Fit_3.0_43650-1200_1x12_P3.00mm_Horizontal +Molex Micro-Fit 3.0 Connector System, 43650-1200 (compatible alternatives: 43650-1201, 43650-1202), 12 Pins per row (https://www.molex.com/pdm_docs/sd/436500300_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 top entry +0 +12 +12 +Connector_Molex +Molex_Micro-Fit_3.0_43650-1215_1x12_P3.00mm_Vertical +Molex Micro-Fit 3.0 Connector System, 43650-1215 (compatible alternatives: 43650-1216, 43650-1217), 12 Pins per row (http://www.molex.com/pdm_docs/sd/436500215_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Fit_3.0 vertical +0 +12 +12 +Connector_Molex +Molex_Micro-Latch_53253-0270_1x02_P2.00mm_Vertical +Molex Micro-Latch Wire-to-Board Connector System, 53253-0270 (compatible alternatives: 53253-0250), 2 Pins per row (http://www.molex.com/pdm_docs/sd/532530770_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Latch side entry +0 +2 +2 +Connector_Molex +Molex_Micro-Latch_53253-0370_1x03_P2.00mm_Vertical +Molex Micro-Latch Wire-to-Board Connector System, 53253-0370 (compatible alternatives: 53253-0350), 3 Pins per row (http://www.molex.com/pdm_docs/sd/532530770_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Latch side entry +0 +3 +3 +Connector_Molex +Molex_Micro-Latch_53253-0470_1x04_P2.00mm_Vertical +Molex Micro-Latch Wire-to-Board Connector System, 53253-0470 (compatible alternatives: 53253-0450), 4 Pins per row (http://www.molex.com/pdm_docs/sd/532530770_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Latch side entry +0 +4 +4 +Connector_Molex +Molex_Micro-Latch_53253-0570_1x05_P2.00mm_Vertical +Molex Micro-Latch Wire-to-Board Connector System, 53253-0570 (compatible alternatives: 53253-0550), 5 Pins per row (http://www.molex.com/pdm_docs/sd/532530770_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Latch side entry +0 +5 +5 +Connector_Molex +Molex_Micro-Latch_53253-0670_1x06_P2.00mm_Vertical +Molex Micro-Latch Wire-to-Board Connector System, 53253-0670 (compatible alternatives: 53253-0650), 6 Pins per row (http://www.molex.com/pdm_docs/sd/532530770_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Latch side entry +0 +6 +6 +Connector_Molex +Molex_Micro-Latch_53253-0770_1x07_P2.00mm_Vertical +Molex Micro-Latch Wire-to-Board Connector System, 53253-0770 (compatible alternatives: 53253-0750), 7 Pins per row (http://www.molex.com/pdm_docs/sd/532530770_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Latch side entry +0 +7 +7 +Connector_Molex +Molex_Micro-Latch_53253-0870_1x08_P2.00mm_Vertical +Molex Micro-Latch Wire-to-Board Connector System, 53253-0870 (compatible alternatives: 53253-0850), 8 Pins per row (http://www.molex.com/pdm_docs/sd/532530770_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Latch side entry +0 +8 +8 +Connector_Molex +Molex_Micro-Latch_53253-0970_1x09_P2.00mm_Vertical +Molex Micro-Latch Wire-to-Board Connector System, 53253-0970 (compatible alternatives: 53253-0950), 9 Pins per row (http://www.molex.com/pdm_docs/sd/532530770_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Latch side entry +0 +9 +9 +Connector_Molex +Molex_Micro-Latch_53253-1070_1x10_P2.00mm_Vertical +Molex Micro-Latch Wire-to-Board Connector System, 53253-1070 (compatible alternatives: 53253-1050), 10 Pins per row (http://www.molex.com/pdm_docs/sd/532530770_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Latch side entry +0 +10 +10 +Connector_Molex +Molex_Micro-Latch_53253-1170_1x11_P2.00mm_Vertical +Molex Micro-Latch Wire-to-Board Connector System, 53253-1170 (compatible alternatives: 53253-1150), 11 Pins per row (http://www.molex.com/pdm_docs/sd/532530770_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Latch side entry +0 +11 +11 +Connector_Molex +Molex_Micro-Latch_53253-1270_1x12_P2.00mm_Vertical +Molex Micro-Latch Wire-to-Board Connector System, 53253-1270 (compatible alternatives: 53253-1250), 12 Pins per row (http://www.molex.com/pdm_docs/sd/532530770_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Latch side entry +0 +12 +12 +Connector_Molex +Molex_Micro-Latch_53253-1370_1x13_P2.00mm_Vertical +Molex Micro-Latch Wire-to-Board Connector System, 53253-1370 (compatible alternatives: 53253-1350), 13 Pins per row (http://www.molex.com/pdm_docs/sd/532530770_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Latch side entry +0 +13 +13 +Connector_Molex +Molex_Micro-Latch_53253-1470_1x14_P2.00mm_Vertical +Molex Micro-Latch Wire-to-Board Connector System, 53253-1470 (compatible alternatives: 53253-1450), 14 Pins per row (http://www.molex.com/pdm_docs/sd/532530770_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Latch side entry +0 +14 +14 +Connector_Molex +Molex_Micro-Latch_53253-1570_1x15_P2.00mm_Vertical +Molex Micro-Latch Wire-to-Board Connector System, 53253-1570 (compatible alternatives: 53253-1550), 15 Pins per row (http://www.molex.com/pdm_docs/sd/532530770_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Latch side entry +0 +15 +15 +Connector_Molex +Molex_Micro-Latch_53254-0270_1x02_P2.00mm_Horizontal +Molex Micro-Latch Wire-to-Board Connector System, 53254-0270 (compatible alternatives: 53254-0250), 2 Pins per row (http://www.molex.com/pdm_docs/sd/532530770_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Latch top entry +0 +2 +2 +Connector_Molex +Molex_Micro-Latch_53254-0370_1x03_P2.00mm_Horizontal +Molex Micro-Latch Wire-to-Board Connector System, 53254-0370 (compatible alternatives: 53254-0350), 3 Pins per row (http://www.molex.com/pdm_docs/sd/532530770_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Latch top entry +0 +3 +3 +Connector_Molex +Molex_Micro-Latch_53254-0470_1x04_P2.00mm_Horizontal +Molex Micro-Latch Wire-to-Board Connector System, 53254-0470 (compatible alternatives: 53254-0450), 4 Pins per row (http://www.molex.com/pdm_docs/sd/532530770_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Latch top entry +0 +4 +4 +Connector_Molex +Molex_Micro-Latch_53254-0570_1x05_P2.00mm_Horizontal +Molex Micro-Latch Wire-to-Board Connector System, 53254-0570 (compatible alternatives: 53254-0550), 5 Pins per row (http://www.molex.com/pdm_docs/sd/532530770_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Latch top entry +0 +5 +5 +Connector_Molex +Molex_Micro-Latch_53254-0670_1x06_P2.00mm_Horizontal +Molex Micro-Latch Wire-to-Board Connector System, 53254-0670 (compatible alternatives: 53254-0650), 6 Pins per row (http://www.molex.com/pdm_docs/sd/532530770_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Latch top entry +0 +6 +6 +Connector_Molex +Molex_Micro-Latch_53254-0770_1x07_P2.00mm_Horizontal +Molex Micro-Latch Wire-to-Board Connector System, 53254-0770 (compatible alternatives: 53254-0750), 7 Pins per row (http://www.molex.com/pdm_docs/sd/532530770_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Latch top entry +0 +7 +7 +Connector_Molex +Molex_Micro-Latch_53254-0870_1x08_P2.00mm_Horizontal +Molex Micro-Latch Wire-to-Board Connector System, 53254-0870 (compatible alternatives: 53254-0850), 8 Pins per row (http://www.molex.com/pdm_docs/sd/532530770_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Latch top entry +0 +8 +8 +Connector_Molex +Molex_Micro-Latch_53254-0970_1x09_P2.00mm_Horizontal +Molex Micro-Latch Wire-to-Board Connector System, 53254-0970 (compatible alternatives: 53254-0950), 9 Pins per row (http://www.molex.com/pdm_docs/sd/532530770_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Latch top entry +0 +9 +9 +Connector_Molex +Molex_Micro-Latch_53254-1070_1x10_P2.00mm_Horizontal +Molex Micro-Latch Wire-to-Board Connector System, 53254-1070 (compatible alternatives: 53254-1050), 10 Pins per row (http://www.molex.com/pdm_docs/sd/532530770_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Latch top entry +0 +10 +10 +Connector_Molex +Molex_Micro-Latch_53254-1170_1x11_P2.00mm_Horizontal +Molex Micro-Latch Wire-to-Board Connector System, 53254-1170 (compatible alternatives: 53254-1150), 11 Pins per row (http://www.molex.com/pdm_docs/sd/532530770_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Latch top entry +0 +11 +11 +Connector_Molex +Molex_Micro-Latch_53254-1270_1x12_P2.00mm_Horizontal +Molex Micro-Latch Wire-to-Board Connector System, 53254-1270 (compatible alternatives: 53254-1250), 12 Pins per row (http://www.molex.com/pdm_docs/sd/532530770_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Latch top entry +0 +12 +12 +Connector_Molex +Molex_Micro-Latch_53254-1370_1x13_P2.00mm_Horizontal +Molex Micro-Latch Wire-to-Board Connector System, 53254-1370 (compatible alternatives: 53254-1350), 13 Pins per row (http://www.molex.com/pdm_docs/sd/532530770_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Latch top entry +0 +13 +13 +Connector_Molex +Molex_Micro-Latch_53254-1470_1x14_P2.00mm_Horizontal +Molex Micro-Latch Wire-to-Board Connector System, 53254-1470 (compatible alternatives: 53254-1450), 14 Pins per row (http://www.molex.com/pdm_docs/sd/532530770_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Latch top entry +0 +14 +14 +Connector_Molex +Molex_Micro-Latch_53254-1570_1x15_P2.00mm_Horizontal +Molex Micro-Latch Wire-to-Board Connector System, 53254-1570 (compatible alternatives: 53254-1550), 15 Pins per row (http://www.molex.com/pdm_docs/sd/532530770_sd.pdf), generated with kicad-footprint-generator +connector Molex Micro-Latch top entry +0 +15 +15 +Connector_Molex +Molex_MicroClasp_55932-0210_1x02_P2.00mm_Vertical +Molex MicroClasp Wire-to-Board System, 55932-0210, with PCB locator, 2 Pins (http://www.molex.com/pdm_docs/sd/559320210_sd.pdf), generated with kicad-footprint-generator +connector Molex MicroClasp side entry +0 +2 +2 +Connector_Molex +Molex_MicroClasp_55932-0230_1x02_P2.00mm_Vertical +Molex MicroClasp Wire-to-Board System, 55932-0230, 2 Pins (http://www.molex.com/pdm_docs/sd/559320530_sd.pdf), generated with kicad-footprint-generator +connector Molex MicroClasp side entry +0 +2 +2 +Connector_Molex +Molex_MicroClasp_55932-0310_1x03_P2.00mm_Vertical +Molex MicroClasp Wire-to-Board System, 55932-0310, with PCB locator, 3 Pins (http://www.molex.com/pdm_docs/sd/559320210_sd.pdf), generated with kicad-footprint-generator +connector Molex MicroClasp side entry +0 +3 +3 +Connector_Molex +Molex_MicroClasp_55932-0330_1x03_P2.00mm_Vertical +Molex MicroClasp Wire-to-Board System, 55932-0330, 3 Pins (http://www.molex.com/pdm_docs/sd/559320530_sd.pdf), generated with kicad-footprint-generator +connector Molex MicroClasp side entry +0 +3 +3 +Connector_Molex +Molex_MicroClasp_55932-0410_1x04_P2.00mm_Vertical +Molex MicroClasp Wire-to-Board System, 55932-0410, with PCB locator, 4 Pins (http://www.molex.com/pdm_docs/sd/559320210_sd.pdf), generated with kicad-footprint-generator +connector Molex MicroClasp side entry +0 +4 +4 +Connector_Molex +Molex_MicroClasp_55932-0430_1x04_P2.00mm_Vertical +Molex MicroClasp Wire-to-Board System, 55932-0430, 4 Pins (http://www.molex.com/pdm_docs/sd/559320530_sd.pdf), generated with kicad-footprint-generator +connector Molex MicroClasp side entry +0 +4 +4 +Connector_Molex +Molex_MicroClasp_55932-0510_1x05_P2.00mm_Vertical +Molex MicroClasp Wire-to-Board System, 55932-0510, with PCB locator, 5 Pins (http://www.molex.com/pdm_docs/sd/559320210_sd.pdf), generated with kicad-footprint-generator +connector Molex MicroClasp side entry +0 +5 +5 +Connector_Molex +Molex_MicroClasp_55932-0530_1x05_P2.00mm_Vertical +Molex MicroClasp Wire-to-Board System, 55932-0530, 5 Pins (http://www.molex.com/pdm_docs/sd/559320530_sd.pdf), generated with kicad-footprint-generator +connector Molex MicroClasp side entry +0 +5 +5 +Connector_Molex +Molex_MicroClasp_55932-0610_1x06_P2.00mm_Vertical +Molex MicroClasp Wire-to-Board System, 55932-0610, with PCB locator, 6 Pins (http://www.molex.com/pdm_docs/sd/559320210_sd.pdf), generated with kicad-footprint-generator +connector Molex MicroClasp side entry +0 +6 +6 +Connector_Molex +Molex_MicroClasp_55932-0630_1x06_P2.00mm_Vertical +Molex MicroClasp Wire-to-Board System, 55932-0630, 6 Pins (http://www.molex.com/pdm_docs/sd/559320530_sd.pdf), generated with kicad-footprint-generator +connector Molex MicroClasp side entry +0 +6 +6 +Connector_Molex +Molex_MicroClasp_55932-0710_1x07_P2.00mm_Vertical +Molex MicroClasp Wire-to-Board System, 55932-0710, with PCB locator, 7 Pins (http://www.molex.com/pdm_docs/sd/559320210_sd.pdf), generated with kicad-footprint-generator +connector Molex MicroClasp side entry +0 +7 +7 +Connector_Molex +Molex_MicroClasp_55932-0730_1x07_P2.00mm_Vertical +Molex MicroClasp Wire-to-Board System, 55932-0730, 7 Pins (http://www.molex.com/pdm_docs/sd/559320530_sd.pdf), generated with kicad-footprint-generator +connector Molex MicroClasp side entry +0 +7 +7 +Connector_Molex +Molex_MicroClasp_55932-0810_1x08_P2.00mm_Vertical +Molex MicroClasp Wire-to-Board System, 55932-0810, with PCB locator, 8 Pins (http://www.molex.com/pdm_docs/sd/559320210_sd.pdf), generated with kicad-footprint-generator +connector Molex MicroClasp side entry +0 +8 +8 +Connector_Molex +Molex_MicroClasp_55932-0830_1x08_P2.00mm_Vertical +Molex MicroClasp Wire-to-Board System, 55932-0830, 8 Pins (http://www.molex.com/pdm_docs/sd/559320530_sd.pdf), generated with kicad-footprint-generator +connector Molex MicroClasp side entry +0 +8 +8 +Connector_Molex +Molex_MicroClasp_55932-0910_1x09_P2.00mm_Vertical +Molex MicroClasp Wire-to-Board System, 55932-0910, with PCB locator, 9 Pins (http://www.molex.com/pdm_docs/sd/559320210_sd.pdf), generated with kicad-footprint-generator +connector Molex MicroClasp side entry +0 +9 +9 +Connector_Molex +Molex_MicroClasp_55932-0930_1x09_P2.00mm_Vertical +Molex MicroClasp Wire-to-Board System, 55932-0930, 9 Pins (http://www.molex.com/pdm_docs/sd/559320530_sd.pdf), generated with kicad-footprint-generator +connector Molex MicroClasp side entry +0 +9 +9 +Connector_Molex +Molex_MicroClasp_55932-1010_1x10_P2.00mm_Vertical +Molex MicroClasp Wire-to-Board System, 55932-1010, with PCB locator, 10 Pins (http://www.molex.com/pdm_docs/sd/559320210_sd.pdf), generated with kicad-footprint-generator +connector Molex MicroClasp side entry +0 +10 +10 +Connector_Molex +Molex_MicroClasp_55932-1030_1x10_P2.00mm_Vertical +Molex MicroClasp Wire-to-Board System, 55932-1030, 10 Pins (http://www.molex.com/pdm_docs/sd/559320530_sd.pdf), generated with kicad-footprint-generator +connector Molex MicroClasp side entry +0 +10 +10 +Connector_Molex +Molex_MicroClasp_55932-1110_1x11_P2.00mm_Vertical +Molex MicroClasp Wire-to-Board System, 55932-1110, with PCB locator, 11 Pins (http://www.molex.com/pdm_docs/sd/559320210_sd.pdf), generated with kicad-footprint-generator +connector Molex MicroClasp side entry +0 +11 +11 +Connector_Molex +Molex_MicroClasp_55932-1130_1x11_P2.00mm_Vertical +Molex MicroClasp Wire-to-Board System, 55932-1130, 11 Pins (http://www.molex.com/pdm_docs/sd/559320530_sd.pdf), generated with kicad-footprint-generator +connector Molex MicroClasp side entry +0 +11 +11 +Connector_Molex +Molex_MicroClasp_55932-1210_1x12_P2.00mm_Vertical +Molex MicroClasp Wire-to-Board System, 55932-1210, with PCB locator, 12 Pins (http://www.molex.com/pdm_docs/sd/559320210_sd.pdf), generated with kicad-footprint-generator +connector Molex MicroClasp side entry +0 +12 +12 +Connector_Molex +Molex_MicroClasp_55932-1230_1x12_P2.00mm_Vertical +Molex MicroClasp Wire-to-Board System, 55932-1230, 12 Pins (http://www.molex.com/pdm_docs/sd/559320530_sd.pdf), generated with kicad-footprint-generator +connector Molex MicroClasp side entry +0 +12 +12 +Connector_Molex +Molex_MicroClasp_55932-1310_1x13_P2.00mm_Vertical +Molex MicroClasp Wire-to-Board System, 55932-1310, with PCB locator, 13 Pins (http://www.molex.com/pdm_docs/sd/559320210_sd.pdf), generated with kicad-footprint-generator +connector Molex MicroClasp side entry +0 +13 +13 +Connector_Molex +Molex_MicroClasp_55932-1330_1x13_P2.00mm_Vertical +Molex MicroClasp Wire-to-Board System, 55932-1330, 13 Pins (http://www.molex.com/pdm_docs/sd/559320530_sd.pdf), generated with kicad-footprint-generator +connector Molex MicroClasp side entry +0 +13 +13 +Connector_Molex +Molex_MicroClasp_55932-1410_1x14_P2.00mm_Vertical +Molex MicroClasp Wire-to-Board System, 55932-1410, with PCB locator, 14 Pins (http://www.molex.com/pdm_docs/sd/559320210_sd.pdf), generated with kicad-footprint-generator +connector Molex MicroClasp side entry +0 +14 +14 +Connector_Molex +Molex_MicroClasp_55932-1430_1x14_P2.00mm_Vertical +Molex MicroClasp Wire-to-Board System, 55932-1430, 14 Pins (http://www.molex.com/pdm_docs/sd/559320530_sd.pdf), generated with kicad-footprint-generator +connector Molex MicroClasp side entry +0 +14 +14 +Connector_Molex +Molex_MicroClasp_55932-1510_1x15_P2.00mm_Vertical +Molex MicroClasp Wire-to-Board System, 55932-1510, with PCB locator, 15 Pins (http://www.molex.com/pdm_docs/sd/559320210_sd.pdf), generated with kicad-footprint-generator +connector Molex MicroClasp side entry +0 +15 +15 +Connector_Molex +Molex_MicroClasp_55932-1530_1x15_P2.00mm_Vertical +Molex MicroClasp Wire-to-Board System, 55932-1530, 15 Pins (http://www.molex.com/pdm_docs/sd/559320530_sd.pdf), generated with kicad-footprint-generator +connector Molex MicroClasp side entry +0 +15 +15 +Connector_Molex +Molex_MicroClasp_55935-0210_1x02_P2.00mm_Horizontal +Molex MicroClasp Wire-to-Board System, 55935-0210, with PCB locator, 2 Pins (http://www.molex.com/pdm_docs/sd/559350210_sd.pdf), generated with kicad-footprint-generator +connector Molex MicroClasp horizontal +0 +2 +2 +Connector_Molex +Molex_MicroClasp_55935-0230_1x02_P2.00mm_Horizontal +Molex MicroClasp Wire-to-Board System, 55935-0230, 2 Pins (http://www.molex.com/pdm_docs/sd/559350530_sd.pdf), generated with kicad-footprint-generator +connector Molex MicroClasp horizontal +0 +2 +2 +Connector_Molex +Molex_MicroClasp_55935-0310_1x03_P2.00mm_Horizontal +Molex MicroClasp Wire-to-Board System, 55935-0310, with PCB locator, 3 Pins (http://www.molex.com/pdm_docs/sd/559350210_sd.pdf), generated with kicad-footprint-generator +connector Molex MicroClasp horizontal +0 +3 +3 +Connector_Molex +Molex_MicroClasp_55935-0330_1x03_P2.00mm_Horizontal +Molex MicroClasp Wire-to-Board System, 55935-0330, 3 Pins (http://www.molex.com/pdm_docs/sd/559350530_sd.pdf), generated with kicad-footprint-generator +connector Molex MicroClasp horizontal +0 +3 +3 +Connector_Molex +Molex_MicroClasp_55935-0410_1x04_P2.00mm_Horizontal +Molex MicroClasp Wire-to-Board System, 55935-0410, with PCB locator, 4 Pins (http://www.molex.com/pdm_docs/sd/559350210_sd.pdf), generated with kicad-footprint-generator +connector Molex MicroClasp horizontal +0 +4 +4 +Connector_Molex +Molex_MicroClasp_55935-0430_1x04_P2.00mm_Horizontal +Molex MicroClasp Wire-to-Board System, 55935-0430, 4 Pins (http://www.molex.com/pdm_docs/sd/559350530_sd.pdf), generated with kicad-footprint-generator +connector Molex MicroClasp horizontal +0 +4 +4 +Connector_Molex +Molex_MicroClasp_55935-0510_1x05_P2.00mm_Horizontal +Molex MicroClasp Wire-to-Board System, 55935-0510, with PCB locator, 5 Pins (http://www.molex.com/pdm_docs/sd/559350210_sd.pdf), generated with kicad-footprint-generator +connector Molex MicroClasp horizontal +0 +5 +5 +Connector_Molex +Molex_MicroClasp_55935-0530_1x05_P2.00mm_Horizontal +Molex MicroClasp Wire-to-Board System, 55935-0530, 5 Pins (http://www.molex.com/pdm_docs/sd/559350530_sd.pdf), generated with kicad-footprint-generator +connector Molex MicroClasp horizontal +0 +5 +5 +Connector_Molex +Molex_MicroClasp_55935-0610_1x06_P2.00mm_Horizontal +Molex MicroClasp Wire-to-Board System, 55935-0610, with PCB locator, 6 Pins (http://www.molex.com/pdm_docs/sd/559350210_sd.pdf), generated with kicad-footprint-generator +connector Molex MicroClasp horizontal +0 +6 +6 +Connector_Molex +Molex_MicroClasp_55935-0630_1x06_P2.00mm_Horizontal +Molex MicroClasp Wire-to-Board System, 55935-0630, 6 Pins (http://www.molex.com/pdm_docs/sd/559350530_sd.pdf), generated with kicad-footprint-generator +connector Molex MicroClasp horizontal +0 +6 +6 +Connector_Molex +Molex_MicroClasp_55935-0710_1x07_P2.00mm_Horizontal +Molex MicroClasp Wire-to-Board System, 55935-0710, with PCB locator, 7 Pins (http://www.molex.com/pdm_docs/sd/559350210_sd.pdf), generated with kicad-footprint-generator +connector Molex MicroClasp horizontal +0 +7 +7 +Connector_Molex +Molex_MicroClasp_55935-0730_1x07_P2.00mm_Horizontal +Molex MicroClasp Wire-to-Board System, 55935-0730, 7 Pins (http://www.molex.com/pdm_docs/sd/559350530_sd.pdf), generated with kicad-footprint-generator +connector Molex MicroClasp horizontal +0 +7 +7 +Connector_Molex +Molex_MicroClasp_55935-0810_1x08_P2.00mm_Horizontal +Molex MicroClasp Wire-to-Board System, 55935-0810, with PCB locator, 8 Pins (http://www.molex.com/pdm_docs/sd/559350210_sd.pdf), generated with kicad-footprint-generator +connector Molex MicroClasp horizontal +0 +8 +8 +Connector_Molex +Molex_MicroClasp_55935-0830_1x08_P2.00mm_Horizontal +Molex MicroClasp Wire-to-Board System, 55935-0830, 8 Pins (http://www.molex.com/pdm_docs/sd/559350530_sd.pdf), generated with kicad-footprint-generator +connector Molex MicroClasp horizontal +0 +8 +8 +Connector_Molex +Molex_MicroClasp_55935-0910_1x09_P2.00mm_Horizontal +Molex MicroClasp Wire-to-Board System, 55935-0910, with PCB locator, 9 Pins (http://www.molex.com/pdm_docs/sd/559350210_sd.pdf), generated with kicad-footprint-generator +connector Molex MicroClasp horizontal +0 +9 +9 +Connector_Molex +Molex_MicroClasp_55935-0930_1x09_P2.00mm_Horizontal +Molex MicroClasp Wire-to-Board System, 55935-0930, 9 Pins (http://www.molex.com/pdm_docs/sd/559350530_sd.pdf), generated with kicad-footprint-generator +connector Molex MicroClasp horizontal +0 +9 +9 +Connector_Molex +Molex_MicroClasp_55935-1010_1x10_P2.00mm_Horizontal +Molex MicroClasp Wire-to-Board System, 55935-1010, with PCB locator, 10 Pins (http://www.molex.com/pdm_docs/sd/559350210_sd.pdf), generated with kicad-footprint-generator +connector Molex MicroClasp horizontal +0 +10 +10 +Connector_Molex +Molex_MicroClasp_55935-1030_1x10_P2.00mm_Horizontal +Molex MicroClasp Wire-to-Board System, 55935-1030, 10 Pins (http://www.molex.com/pdm_docs/sd/559350530_sd.pdf), generated with kicad-footprint-generator +connector Molex MicroClasp horizontal +0 +10 +10 +Connector_Molex +Molex_MicroClasp_55935-1110_1x11_P2.00mm_Horizontal +Molex MicroClasp Wire-to-Board System, 55935-1110, with PCB locator, 11 Pins (http://www.molex.com/pdm_docs/sd/559350210_sd.pdf), generated with kicad-footprint-generator +connector Molex MicroClasp horizontal +0 +11 +11 +Connector_Molex +Molex_MicroClasp_55935-1130_1x11_P2.00mm_Horizontal +Molex MicroClasp Wire-to-Board System, 55935-1130, 11 Pins (http://www.molex.com/pdm_docs/sd/559350530_sd.pdf), generated with kicad-footprint-generator +connector Molex MicroClasp horizontal +0 +11 +11 +Connector_Molex +Molex_MicroClasp_55935-1210_1x12_P2.00mm_Horizontal +Molex MicroClasp Wire-to-Board System, 55935-1210, with PCB locator, 12 Pins (http://www.molex.com/pdm_docs/sd/559350210_sd.pdf), generated with kicad-footprint-generator +connector Molex MicroClasp horizontal +0 +12 +12 +Connector_Molex +Molex_MicroClasp_55935-1230_1x12_P2.00mm_Horizontal +Molex MicroClasp Wire-to-Board System, 55935-1230, 12 Pins (http://www.molex.com/pdm_docs/sd/559350530_sd.pdf), generated with kicad-footprint-generator +connector Molex MicroClasp horizontal +0 +12 +12 +Connector_Molex +Molex_MicroClasp_55935-1310_1x13_P2.00mm_Horizontal +Molex MicroClasp Wire-to-Board System, 55935-1310, with PCB locator, 13 Pins (http://www.molex.com/pdm_docs/sd/559350210_sd.pdf), generated with kicad-footprint-generator +connector Molex MicroClasp horizontal +0 +13 +13 +Connector_Molex +Molex_MicroClasp_55935-1330_1x13_P2.00mm_Horizontal +Molex MicroClasp Wire-to-Board System, 55935-1330, 13 Pins (http://www.molex.com/pdm_docs/sd/559350530_sd.pdf), generated with kicad-footprint-generator +connector Molex MicroClasp horizontal +0 +13 +13 +Connector_Molex +Molex_MicroClasp_55935-1410_1x14_P2.00mm_Horizontal +Molex MicroClasp Wire-to-Board System, 55935-1410, with PCB locator, 14 Pins (http://www.molex.com/pdm_docs/sd/559350210_sd.pdf), generated with kicad-footprint-generator +connector Molex MicroClasp horizontal +0 +14 +14 +Connector_Molex +Molex_MicroClasp_55935-1430_1x14_P2.00mm_Horizontal +Molex MicroClasp Wire-to-Board System, 55935-1430, 14 Pins (http://www.molex.com/pdm_docs/sd/559350530_sd.pdf), generated with kicad-footprint-generator +connector Molex MicroClasp horizontal +0 +14 +14 +Connector_Molex +Molex_MicroClasp_55935-1510_1x15_P2.00mm_Horizontal +Molex MicroClasp Wire-to-Board System, 55935-1510, with PCB locator, 15 Pins (http://www.molex.com/pdm_docs/sd/559350210_sd.pdf), generated with kicad-footprint-generator +connector Molex MicroClasp horizontal +0 +15 +15 +Connector_Molex +Molex_MicroClasp_55935-1530_1x15_P2.00mm_Horizontal +Molex MicroClasp Wire-to-Board System, 55935-1530, 15 Pins (http://www.molex.com/pdm_docs/sd/559350530_sd.pdf), generated with kicad-footprint-generator +connector Molex MicroClasp horizontal +0 +15 +15 +Connector_Molex +Molex_Mini-Fit_Jr_5566-02A2_2x01_P4.20mm_Vertical +Molex Mini-Fit Jr. Power Connectors, old mpn/engineering number: 5566-02A2, example for new mpn: 39-28-902x, 1 Pins per row, Mounting: Snap-in Plastic Peg PCB Lock (http://www.molex.com/pdm_docs/sd/039289068_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Jr side entryplastic_peg +0 +2 +2 +Connector_Molex +Molex_Mini-Fit_Jr_5566-02A_2x01_P4.20mm_Vertical +Molex Mini-Fit Jr. Power Connectors, old mpn/engineering number: 5566-02A, example for new mpn: 39-28-x02x, 1 Pins per row, Mounting: (http://www.molex.com/pdm_docs/sd/039281043_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Jr side entry +0 +2 +2 +Connector_Molex +Molex_Mini-Fit_Jr_5566-04A2_2x02_P4.20mm_Vertical +Molex Mini-Fit Jr. Power Connectors, old mpn/engineering number: 5566-04A2, example for new mpn: 39-28-904x, 2 Pins per row, Mounting: Snap-in Plastic Peg PCB Lock (http://www.molex.com/pdm_docs/sd/039289068_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Jr side entryplastic_peg +0 +4 +4 +Connector_Molex +Molex_Mini-Fit_Jr_5566-04A_2x02_P4.20mm_Vertical +Molex Mini-Fit Jr. Power Connectors, old mpn/engineering number: 5566-04A, example for new mpn: 39-28-x04x, 2 Pins per row, Mounting: (http://www.molex.com/pdm_docs/sd/039281043_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Jr side entry +0 +4 +4 +Connector_Molex +Molex_Mini-Fit_Jr_5566-06A2_2x03_P4.20mm_Vertical +Molex Mini-Fit Jr. Power Connectors, old mpn/engineering number: 5566-06A2, example for new mpn: 39-28-906x, 3 Pins per row, Mounting: Snap-in Plastic Peg PCB Lock (http://www.molex.com/pdm_docs/sd/039289068_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Jr side entryplastic_peg +0 +6 +6 +Connector_Molex +Molex_Mini-Fit_Jr_5566-06A_2x03_P4.20mm_Vertical +Molex Mini-Fit Jr. Power Connectors, old mpn/engineering number: 5566-06A, example for new mpn: 39-28-x06x, 3 Pins per row, Mounting: (http://www.molex.com/pdm_docs/sd/039281043_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Jr side entry +0 +6 +6 +Connector_Molex +Molex_Mini-Fit_Jr_5566-08A2_2x04_P4.20mm_Vertical +Molex Mini-Fit Jr. Power Connectors, old mpn/engineering number: 5566-08A2, example for new mpn: 39-28-908x, 4 Pins per row, Mounting: Snap-in Plastic Peg PCB Lock (http://www.molex.com/pdm_docs/sd/039289068_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Jr side entryplastic_peg +0 +8 +8 +Connector_Molex +Molex_Mini-Fit_Jr_5566-08A_2x04_P4.20mm_Vertical +Molex Mini-Fit Jr. Power Connectors, old mpn/engineering number: 5566-08A, example for new mpn: 39-28-x08x, 4 Pins per row, Mounting: (http://www.molex.com/pdm_docs/sd/039281043_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Jr side entry +0 +8 +8 +Connector_Molex +Molex_Mini-Fit_Jr_5566-10A2_2x05_P4.20mm_Vertical +Molex Mini-Fit Jr. Power Connectors, old mpn/engineering number: 5566-10A2, example for new mpn: 39-28-910x, 5 Pins per row, Mounting: Snap-in Plastic Peg PCB Lock (http://www.molex.com/pdm_docs/sd/039289068_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Jr side entryplastic_peg +0 +10 +10 +Connector_Molex +Molex_Mini-Fit_Jr_5566-10A_2x05_P4.20mm_Vertical +Molex Mini-Fit Jr. Power Connectors, old mpn/engineering number: 5566-10A, example for new mpn: 39-28-x10x, 5 Pins per row, Mounting: (http://www.molex.com/pdm_docs/sd/039281043_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Jr side entry +0 +10 +10 +Connector_Molex +Molex_Mini-Fit_Jr_5566-12A2_2x06_P4.20mm_Vertical +Molex Mini-Fit Jr. Power Connectors, old mpn/engineering number: 5566-12A2, example for new mpn: 39-28-912x, 6 Pins per row, Mounting: Snap-in Plastic Peg PCB Lock (http://www.molex.com/pdm_docs/sd/039289068_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Jr side entryplastic_peg +0 +12 +12 +Connector_Molex +Molex_Mini-Fit_Jr_5566-12A_2x06_P4.20mm_Vertical +Molex Mini-Fit Jr. Power Connectors, old mpn/engineering number: 5566-12A, example for new mpn: 39-28-x12x, 6 Pins per row, Mounting: (http://www.molex.com/pdm_docs/sd/039281043_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Jr side entry +0 +12 +12 +Connector_Molex +Molex_Mini-Fit_Jr_5566-14A2_2x07_P4.20mm_Vertical +Molex Mini-Fit Jr. Power Connectors, old mpn/engineering number: 5566-14A2, example for new mpn: 39-28-914x, 7 Pins per row, Mounting: Snap-in Plastic Peg PCB Lock (http://www.molex.com/pdm_docs/sd/039289068_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Jr side entryplastic_peg +0 +14 +14 +Connector_Molex +Molex_Mini-Fit_Jr_5566-14A_2x07_P4.20mm_Vertical +Molex Mini-Fit Jr. Power Connectors, old mpn/engineering number: 5566-14A, example for new mpn: 39-28-x14x, 7 Pins per row, Mounting: (http://www.molex.com/pdm_docs/sd/039281043_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Jr side entry +0 +14 +14 +Connector_Molex +Molex_Mini-Fit_Jr_5566-16A2_2x08_P4.20mm_Vertical +Molex Mini-Fit Jr. Power Connectors, old mpn/engineering number: 5566-16A2, example for new mpn: 39-28-916x, 8 Pins per row, Mounting: Snap-in Plastic Peg PCB Lock (http://www.molex.com/pdm_docs/sd/039289068_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Jr side entryplastic_peg +0 +16 +16 +Connector_Molex +Molex_Mini-Fit_Jr_5566-16A_2x08_P4.20mm_Vertical +Molex Mini-Fit Jr. Power Connectors, old mpn/engineering number: 5566-16A, example for new mpn: 39-28-x16x, 8 Pins per row, Mounting: (http://www.molex.com/pdm_docs/sd/039281043_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Jr side entry +0 +16 +16 +Connector_Molex +Molex_Mini-Fit_Jr_5566-18A2_2x09_P4.20mm_Vertical +Molex Mini-Fit Jr. Power Connectors, old mpn/engineering number: 5566-18A2, example for new mpn: 39-28-918x, 9 Pins per row, Mounting: Snap-in Plastic Peg PCB Lock (http://www.molex.com/pdm_docs/sd/039289068_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Jr side entryplastic_peg +0 +18 +18 +Connector_Molex +Molex_Mini-Fit_Jr_5566-18A_2x09_P4.20mm_Vertical +Molex Mini-Fit Jr. Power Connectors, old mpn/engineering number: 5566-18A, example for new mpn: 39-28-x18x, 9 Pins per row, Mounting: (http://www.molex.com/pdm_docs/sd/039281043_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Jr side entry +0 +18 +18 +Connector_Molex +Molex_Mini-Fit_Jr_5566-20A2_2x10_P4.20mm_Vertical +Molex Mini-Fit Jr. Power Connectors, old mpn/engineering number: 5566-20A2, example for new mpn: 39-28-920x, 10 Pins per row, Mounting: Snap-in Plastic Peg PCB Lock (http://www.molex.com/pdm_docs/sd/039289068_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Jr side entryplastic_peg +0 +20 +20 +Connector_Molex +Molex_Mini-Fit_Jr_5566-20A_2x10_P4.20mm_Vertical +Molex Mini-Fit Jr. Power Connectors, old mpn/engineering number: 5566-20A, example for new mpn: 39-28-x20x, 10 Pins per row, Mounting: (http://www.molex.com/pdm_docs/sd/039281043_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Jr side entry +0 +20 +20 +Connector_Molex +Molex_Mini-Fit_Jr_5566-22A2_2x11_P4.20mm_Vertical +Molex Mini-Fit Jr. Power Connectors, old mpn/engineering number: 5566-22A2, example for new mpn: 39-28-922x, 11 Pins per row, Mounting: Snap-in Plastic Peg PCB Lock (http://www.molex.com/pdm_docs/sd/039289068_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Jr side entryplastic_peg +0 +22 +22 +Connector_Molex +Molex_Mini-Fit_Jr_5566-22A_2x11_P4.20mm_Vertical +Molex Mini-Fit Jr. Power Connectors, old mpn/engineering number: 5566-22A, example for new mpn: 39-28-x22x, 11 Pins per row, Mounting: (http://www.molex.com/pdm_docs/sd/039281043_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Jr side entry +0 +22 +22 +Connector_Molex +Molex_Mini-Fit_Jr_5566-24A2_2x12_P4.20mm_Vertical +Molex Mini-Fit Jr. Power Connectors, old mpn/engineering number: 5566-24A2, example for new mpn: 39-28-924x, 12 Pins per row, Mounting: Snap-in Plastic Peg PCB Lock (http://www.molex.com/pdm_docs/sd/039289068_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Jr side entryplastic_peg +0 +24 +24 +Connector_Molex +Molex_Mini-Fit_Jr_5566-24A_2x12_P4.20mm_Vertical +Molex Mini-Fit Jr. Power Connectors, old mpn/engineering number: 5566-24A, example for new mpn: 39-28-x24x, 12 Pins per row, Mounting: (http://www.molex.com/pdm_docs/sd/039281043_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Jr side entry +0 +24 +24 +Connector_Molex +Molex_Mini-Fit_Jr_5569-02A1_2x01_P4.20mm_Horizontal +Molex Mini-Fit Jr. Power Connectors, old mpn/engineering number: 5569-02A1, example for new mpn: 39-29-4029, 1 Pins per row, Mounting: PCB Mounting Flange (http://www.molex.com/pdm_docs/sd/039291047_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Jr top entryscrew_flange +0 +2 +2 +Connector_Molex +Molex_Mini-Fit_Jr_5569-02A2_2x01_P4.20mm_Horizontal +Molex Mini-Fit Jr. Power Connectors, old mpn/engineering number: 5569-02A2, example for new mpn: 39-30-0020, 1 Pins per row, Mounting: Snap-in Plastic Peg PCB Lock (http://www.molex.com/pdm_docs/sd/039300020_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Jr top entryplastic_peg +0 +2 +2 +Connector_Molex +Molex_Mini-Fit_Jr_5569-04A1_2x02_P4.20mm_Horizontal +Molex Mini-Fit Jr. Power Connectors, old mpn/engineering number: 5569-04A1, example for new mpn: 39-29-4049, 2 Pins per row, Mounting: PCB Mounting Flange (http://www.molex.com/pdm_docs/sd/039291047_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Jr top entryscrew_flange +0 +4 +4 +Connector_Molex +Molex_Mini-Fit_Jr_5569-04A2_2x02_P4.20mm_Horizontal +Molex Mini-Fit Jr. Power Connectors, old mpn/engineering number: 5569-04A2, example for new mpn: 39-30-0040, 2 Pins per row, Mounting: Snap-in Plastic Peg PCB Lock (http://www.molex.com/pdm_docs/sd/039300020_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Jr top entryplastic_peg +0 +4 +4 +Connector_Molex +Molex_Mini-Fit_Jr_5569-06A1_2x03_P4.20mm_Horizontal +Molex Mini-Fit Jr. Power Connectors, old mpn/engineering number: 5569-06A1, example for new mpn: 39-29-4069, 3 Pins per row, Mounting: PCB Mounting Flange (http://www.molex.com/pdm_docs/sd/039291047_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Jr top entryscrew_flange +0 +6 +6 +Connector_Molex +Molex_Mini-Fit_Jr_5569-06A2_2x03_P4.20mm_Horizontal +Molex Mini-Fit Jr. Power Connectors, old mpn/engineering number: 5569-06A2, example for new mpn: 39-30-0060, 3 Pins per row, Mounting: Snap-in Plastic Peg PCB Lock (http://www.molex.com/pdm_docs/sd/039300020_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Jr top entryplastic_peg +0 +6 +6 +Connector_Molex +Molex_Mini-Fit_Jr_5569-08A1_2x04_P4.20mm_Horizontal +Molex Mini-Fit Jr. Power Connectors, old mpn/engineering number: 5569-08A1, example for new mpn: 39-29-4089, 4 Pins per row, Mounting: PCB Mounting Flange (http://www.molex.com/pdm_docs/sd/039291047_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Jr top entryscrew_flange +0 +8 +8 +Connector_Molex +Molex_Mini-Fit_Jr_5569-08A2_2x04_P4.20mm_Horizontal +Molex Mini-Fit Jr. Power Connectors, old mpn/engineering number: 5569-08A2, example for new mpn: 39-30-0080, 4 Pins per row, Mounting: Snap-in Plastic Peg PCB Lock (http://www.molex.com/pdm_docs/sd/039300020_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Jr top entryplastic_peg +0 +8 +8 +Connector_Molex +Molex_Mini-Fit_Jr_5569-10A1_2x05_P4.20mm_Horizontal +Molex Mini-Fit Jr. Power Connectors, old mpn/engineering number: 5569-10A1, example for new mpn: 39-29-4109, 5 Pins per row, Mounting: PCB Mounting Flange (http://www.molex.com/pdm_docs/sd/039291047_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Jr top entryscrew_flange +0 +10 +10 +Connector_Molex +Molex_Mini-Fit_Jr_5569-10A2_2x05_P4.20mm_Horizontal +Molex Mini-Fit Jr. Power Connectors, old mpn/engineering number: 5569-10A2, example for new mpn: 39-30-0100, 5 Pins per row, Mounting: Snap-in Plastic Peg PCB Lock (http://www.molex.com/pdm_docs/sd/039300020_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Jr top entryplastic_peg +0 +10 +10 +Connector_Molex +Molex_Mini-Fit_Jr_5569-12A1_2x06_P4.20mm_Horizontal +Molex Mini-Fit Jr. Power Connectors, old mpn/engineering number: 5569-12A1, example for new mpn: 39-29-4129, 6 Pins per row, Mounting: PCB Mounting Flange (http://www.molex.com/pdm_docs/sd/039291047_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Jr top entryscrew_flange +0 +12 +12 +Connector_Molex +Molex_Mini-Fit_Jr_5569-12A2_2x06_P4.20mm_Horizontal +Molex Mini-Fit Jr. Power Connectors, old mpn/engineering number: 5569-12A2, example for new mpn: 39-30-0120, 6 Pins per row, Mounting: Snap-in Plastic Peg PCB Lock (http://www.molex.com/pdm_docs/sd/039300020_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Jr top entryplastic_peg +0 +12 +12 +Connector_Molex +Molex_Mini-Fit_Jr_5569-14A1_2x07_P4.20mm_Horizontal +Molex Mini-Fit Jr. Power Connectors, old mpn/engineering number: 5569-14A1, example for new mpn: 39-29-4149, 7 Pins per row, Mounting: PCB Mounting Flange (http://www.molex.com/pdm_docs/sd/039291047_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Jr top entryscrew_flange +0 +14 +14 +Connector_Molex +Molex_Mini-Fit_Jr_5569-14A2_2x07_P4.20mm_Horizontal +Molex Mini-Fit Jr. Power Connectors, old mpn/engineering number: 5569-14A2, example for new mpn: 39-30-0140, 7 Pins per row, Mounting: Snap-in Plastic Peg PCB Lock (http://www.molex.com/pdm_docs/sd/039300020_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Jr top entryplastic_peg +0 +14 +14 +Connector_Molex +Molex_Mini-Fit_Jr_5569-16A1_2x08_P4.20mm_Horizontal +Molex Mini-Fit Jr. Power Connectors, old mpn/engineering number: 5569-16A1, example for new mpn: 39-29-4169, 8 Pins per row, Mounting: PCB Mounting Flange (http://www.molex.com/pdm_docs/sd/039291047_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Jr top entryscrew_flange +0 +16 +16 +Connector_Molex +Molex_Mini-Fit_Jr_5569-16A2_2x08_P4.20mm_Horizontal +Molex Mini-Fit Jr. Power Connectors, old mpn/engineering number: 5569-16A2, example for new mpn: 39-30-0160, 8 Pins per row, Mounting: Snap-in Plastic Peg PCB Lock (http://www.molex.com/pdm_docs/sd/039300020_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Jr top entryplastic_peg +0 +16 +16 +Connector_Molex +Molex_Mini-Fit_Jr_5569-18A1_2x09_P4.20mm_Horizontal +Molex Mini-Fit Jr. Power Connectors, old mpn/engineering number: 5569-18A1, example for new mpn: 39-29-4189, 9 Pins per row, Mounting: PCB Mounting Flange (http://www.molex.com/pdm_docs/sd/039291047_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Jr top entryscrew_flange +0 +18 +18 +Connector_Molex +Molex_Mini-Fit_Jr_5569-18A2_2x09_P4.20mm_Horizontal +Molex Mini-Fit Jr. Power Connectors, old mpn/engineering number: 5569-18A2, example for new mpn: 39-30-0180, 9 Pins per row, Mounting: Snap-in Plastic Peg PCB Lock (http://www.molex.com/pdm_docs/sd/039300020_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Jr top entryplastic_peg +0 +18 +18 +Connector_Molex +Molex_Mini-Fit_Jr_5569-20A1_2x10_P4.20mm_Horizontal +Molex Mini-Fit Jr. Power Connectors, old mpn/engineering number: 5569-20A1, example for new mpn: 39-29-4209, 10 Pins per row, Mounting: PCB Mounting Flange (http://www.molex.com/pdm_docs/sd/039291047_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Jr top entryscrew_flange +0 +20 +20 +Connector_Molex +Molex_Mini-Fit_Jr_5569-20A2_2x10_P4.20mm_Horizontal +Molex Mini-Fit Jr. Power Connectors, old mpn/engineering number: 5569-20A2, example for new mpn: 39-30-0200, 10 Pins per row, Mounting: Snap-in Plastic Peg PCB Lock (http://www.molex.com/pdm_docs/sd/039300020_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Jr top entryplastic_peg +0 +20 +20 +Connector_Molex +Molex_Mini-Fit_Jr_5569-22A1_2x11_P4.20mm_Horizontal +Molex Mini-Fit Jr. Power Connectors, old mpn/engineering number: 5569-22A1, example for new mpn: 39-29-4229, 11 Pins per row, Mounting: PCB Mounting Flange (http://www.molex.com/pdm_docs/sd/039291047_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Jr top entryscrew_flange +0 +22 +22 +Connector_Molex +Molex_Mini-Fit_Jr_5569-22A2_2x11_P4.20mm_Horizontal +Molex Mini-Fit Jr. Power Connectors, old mpn/engineering number: 5569-22A2, example for new mpn: 39-30-0220, 11 Pins per row, Mounting: Snap-in Plastic Peg PCB Lock (http://www.molex.com/pdm_docs/sd/039300020_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Jr top entryplastic_peg +0 +22 +22 +Connector_Molex +Molex_Mini-Fit_Jr_5569-24A1_2x12_P4.20mm_Horizontal +Molex Mini-Fit Jr. Power Connectors, old mpn/engineering number: 5569-24A1, example for new mpn: 39-29-4249, 12 Pins per row, Mounting: PCB Mounting Flange (http://www.molex.com/pdm_docs/sd/039291047_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Jr top entryscrew_flange +0 +24 +24 +Connector_Molex +Molex_Mini-Fit_Jr_5569-24A2_2x12_P4.20mm_Horizontal +Molex Mini-Fit Jr. Power Connectors, old mpn/engineering number: 5569-24A2, example for new mpn: 39-30-0240, 12 Pins per row, Mounting: Snap-in Plastic Peg PCB Lock (http://www.molex.com/pdm_docs/sd/039300020_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Jr top entryplastic_peg +0 +24 +24 +Connector_Molex +Molex_Mini-Fit_Sr_42819-22XX_1x02_P10.00mm_Vertical +Molex Mini-Fit Sr. Power Connectors, 42819-22XX, 2 Pins per row (http://www.molex.com/pdm_docs/sd/428192214_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Sr side entry +0 +6 +2 +Connector_Molex +Molex_Mini-Fit_Sr_42819-22XX_1x02_P10.00mm_Vertical_ThermalVias +Molex Mini-Fit Sr. Power Connectors, 42819-22XX, With thermal vias in pads, 2 Pins per row (http://www.molex.com/pdm_docs/sd/428192214_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Sr side entry +0 +32 +2 +Connector_Molex +Molex_Mini-Fit_Sr_42819-32XX_1x03_P10.00mm_Vertical +Molex Mini-Fit Sr. Power Connectors, 42819-32XX, 3 Pins per row (http://www.molex.com/pdm_docs/sd/428192214_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Sr side entry +0 +8 +3 +Connector_Molex +Molex_Mini-Fit_Sr_42819-32XX_1x03_P10.00mm_Vertical_ThermalVias +Molex Mini-Fit Sr. Power Connectors, 42819-32XX, With thermal vias in pads, 3 Pins per row (http://www.molex.com/pdm_docs/sd/428192214_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Sr side entry +0 +47 +3 +Connector_Molex +Molex_Mini-Fit_Sr_42819-42XX_1x04_P10.00mm_Vertical +Molex Mini-Fit Sr. Power Connectors, 42819-42XX, 4 Pins per row (http://www.molex.com/pdm_docs/sd/428192214_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Sr side entry +0 +10 +4 +Connector_Molex +Molex_Mini-Fit_Sr_42819-42XX_1x04_P10.00mm_Vertical_ThermalVias +Molex Mini-Fit Sr. Power Connectors, 42819-42XX, With thermal vias in pads, 4 Pins per row (http://www.molex.com/pdm_docs/sd/428192214_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Sr side entry +0 +62 +4 +Connector_Molex +Molex_Mini-Fit_Sr_42819-52XX_1x05_P10.00mm_Vertical +Molex Mini-Fit Sr. Power Connectors, 42819-52XX, 5 Pins per row (http://www.molex.com/pdm_docs/sd/428192214_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Sr side entry +0 +12 +5 +Connector_Molex +Molex_Mini-Fit_Sr_42819-52XX_1x05_P10.00mm_Vertical_ThermalVias +Molex Mini-Fit Sr. Power Connectors, 42819-52XX, With thermal vias in pads, 5 Pins per row (http://www.molex.com/pdm_docs/sd/428192214_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Sr side entry +0 +77 +5 +Connector_Molex +Molex_Mini-Fit_Sr_42819-62XX_1x06_P10.00mm_Vertical +Molex Mini-Fit Sr. Power Connectors, 42819-62XX, 6 Pins per row (http://www.molex.com/pdm_docs/sd/428192214_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Sr side entry +0 +14 +6 +Connector_Molex +Molex_Mini-Fit_Sr_42819-62XX_1x06_P10.00mm_Vertical_ThermalVias +Molex Mini-Fit Sr. Power Connectors, 42819-62XX, With thermal vias in pads, 6 Pins per row (http://www.molex.com/pdm_docs/sd/428192214_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Sr side entry +0 +92 +6 +Connector_Molex +Molex_Mini-Fit_Sr_42820-22XX_1x02_P10.00mm_Horizontal +Molex Mini-Fit Sr. Power Connectors, 42820-22XX, 2 Pins per row (http://www.molex.com/pdm_docs/sd/428202214_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Sr top entry +0 +6 +2 +Connector_Molex +Molex_Mini-Fit_Sr_42820-22XX_1x02_P10.00mm_Horizontal_ThermalVias +Molex Mini-Fit Sr. Power Connectors, 42820-22XX, With thermal vias in pads, 2 Pins per row (http://www.molex.com/pdm_docs/sd/428202214_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Sr top entry +0 +32 +2 +Connector_Molex +Molex_Mini-Fit_Sr_42820-32XX_1x03_P10.00mm_Horizontal +Molex Mini-Fit Sr. Power Connectors, 42820-32XX, 3 Pins per row (http://www.molex.com/pdm_docs/sd/428202214_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Sr top entry +0 +8 +3 +Connector_Molex +Molex_Mini-Fit_Sr_42820-32XX_1x03_P10.00mm_Horizontal_ThermalVias +Molex Mini-Fit Sr. Power Connectors, 42820-32XX, With thermal vias in pads, 3 Pins per row (http://www.molex.com/pdm_docs/sd/428202214_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Sr top entry +0 +47 +3 +Connector_Molex +Molex_Mini-Fit_Sr_42820-42XX_1x04_P10.00mm_Horizontal +Molex Mini-Fit Sr. Power Connectors, 42820-42XX, 4 Pins per row (http://www.molex.com/pdm_docs/sd/428202214_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Sr top entry +0 +10 +4 +Connector_Molex +Molex_Mini-Fit_Sr_42820-42XX_1x04_P10.00mm_Horizontal_ThermalVias +Molex Mini-Fit Sr. Power Connectors, 42820-42XX, With thermal vias in pads, 4 Pins per row (http://www.molex.com/pdm_docs/sd/428202214_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Sr top entry +0 +62 +4 +Connector_Molex +Molex_Mini-Fit_Sr_42820-52XX_1x05_P10.00mm_Horizontal +Molex Mini-Fit Sr. Power Connectors, 42820-52XX, 5 Pins per row (http://www.molex.com/pdm_docs/sd/428202214_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Sr top entry +0 +12 +5 +Connector_Molex +Molex_Mini-Fit_Sr_42820-52XX_1x05_P10.00mm_Horizontal_ThermalVias +Molex Mini-Fit Sr. Power Connectors, 42820-52XX, With thermal vias in pads, 5 Pins per row (http://www.molex.com/pdm_docs/sd/428202214_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Sr top entry +0 +77 +5 +Connector_Molex +Molex_Mini-Fit_Sr_42820-62XX_1x06_P10.00mm_Horizontal +Molex Mini-Fit Sr. Power Connectors, 42820-62XX, 6 Pins per row (http://www.molex.com/pdm_docs/sd/428202214_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Sr top entry +0 +14 +6 +Connector_Molex +Molex_Mini-Fit_Sr_42820-62XX_1x06_P10.00mm_Horizontal_ThermalVias +Molex Mini-Fit Sr. Power Connectors, 42820-62XX, With thermal vias in pads, 6 Pins per row (http://www.molex.com/pdm_docs/sd/428202214_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Sr top entry +0 +92 +6 +Connector_Molex +Molex_Mini-Fit_Sr_43915-xx06_2x03_P10.00mm_Vertical +Molex Mini-Fit Sr. Power Connectors, 43915-xx06, 3 Pins per row (http://www.molex.com/pdm_docs/sd/439151404_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Sr side entry +0 +14 +6 +Connector_Molex +Molex_Mini-Fit_Sr_43915-xx06_2x03_P10.00mm_Vertical_ThermalVias +Molex Mini-Fit Sr. Power Connectors, 43915-xx06, With thermal vias in pads, 3 Pins per row (http://www.molex.com/pdm_docs/sd/439151404_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Sr side entry +0 +92 +6 +Connector_Molex +Molex_Mini-Fit_Sr_43915-xx08_2x04_P10.00mm_Vertical +Molex Mini-Fit Sr. Power Connectors, 43915-xx08, 4 Pins per row (http://www.molex.com/pdm_docs/sd/439151404_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Sr side entry +0 +18 +8 +Connector_Molex +Molex_Mini-Fit_Sr_43915-xx08_2x04_P10.00mm_Vertical_ThermalVias +Molex Mini-Fit Sr. Power Connectors, 43915-xx08, With thermal vias in pads, 4 Pins per row (http://www.molex.com/pdm_docs/sd/439151404_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Sr side entry +0 +122 +8 +Connector_Molex +Molex_Mini-Fit_Sr_43915-xx10_2x05_P10.00mm_Vertical +Molex Mini-Fit Sr. Power Connectors, 43915-xx10, 5 Pins per row (http://www.molex.com/pdm_docs/sd/439151404_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Sr side entry +0 +22 +10 +Connector_Molex +Molex_Mini-Fit_Sr_43915-xx10_2x05_P10.00mm_Vertical_ThermalVias +Molex Mini-Fit Sr. Power Connectors, 43915-xx10, With thermal vias in pads, 5 Pins per row (http://www.molex.com/pdm_docs/sd/439151404_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Sr side entry +0 +152 +10 +Connector_Molex +Molex_Mini-Fit_Sr_43915-xx12_2x06_P10.00mm_Vertical +Molex Mini-Fit Sr. Power Connectors, 43915-xx12, 6 Pins per row (http://www.molex.com/pdm_docs/sd/439151404_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Sr side entry +0 +26 +12 +Connector_Molex +Molex_Mini-Fit_Sr_43915-xx12_2x06_P10.00mm_Vertical_ThermalVias +Molex Mini-Fit Sr. Power Connectors, 43915-xx12, With thermal vias in pads, 6 Pins per row (http://www.molex.com/pdm_docs/sd/439151404_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Sr side entry +0 +182 +12 +Connector_Molex +Molex_Mini-Fit_Sr_43915-xx14_2x07_P10.00mm_Vertical +Molex Mini-Fit Sr. Power Connectors, 43915-xx14, 7 Pins per row (http://www.molex.com/pdm_docs/sd/439151404_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Sr side entry +0 +30 +14 +Connector_Molex +Molex_Mini-Fit_Sr_43915-xx14_2x07_P10.00mm_Vertical_ThermalVias +Molex Mini-Fit Sr. Power Connectors, 43915-xx14, With thermal vias in pads, 7 Pins per row (http://www.molex.com/pdm_docs/sd/439151404_sd.pdf), generated with kicad-footprint-generator +connector Molex Mini-Fit_Sr side entry +0 +212 +14 +Connector_Molex +Molex_Nano-Fit_105309-xx02_1x02_P2.50mm_Vertical +Molex Nano-Fit Power Connectors, 105309-xx02, 2 Pins per row (http://www.molex.com/pdm_docs/sd/1053091203_sd.pdf), generated with kicad-footprint-generator +connector Molex Nano-Fit side entry +0 +2 +2 +Connector_Molex +Molex_Nano-Fit_105309-xx03_1x03_P2.50mm_Vertical +Molex Nano-Fit Power Connectors, 105309-xx03, 3 Pins per row (http://www.molex.com/pdm_docs/sd/1053091203_sd.pdf), generated with kicad-footprint-generator +connector Molex Nano-Fit side entry +0 +3 +3 +Connector_Molex +Molex_Nano-Fit_105309-xx04_1x04_P2.50mm_Vertical +Molex Nano-Fit Power Connectors, 105309-xx04, 4 Pins per row (http://www.molex.com/pdm_docs/sd/1053091203_sd.pdf), generated with kicad-footprint-generator +connector Molex Nano-Fit side entry +0 +4 +4 +Connector_Molex +Molex_Nano-Fit_105309-xx05_1x05_P2.50mm_Vertical +Molex Nano-Fit Power Connectors, 105309-xx05, 5 Pins per row (http://www.molex.com/pdm_docs/sd/1053091203_sd.pdf), generated with kicad-footprint-generator +connector Molex Nano-Fit side entry +0 +5 +5 +Connector_Molex +Molex_Nano-Fit_105309-xx06_1x06_P2.50mm_Vertical +Molex Nano-Fit Power Connectors, 105309-xx06, 6 Pins per row (http://www.molex.com/pdm_docs/sd/1053091203_sd.pdf), generated with kicad-footprint-generator +connector Molex Nano-Fit side entry +0 +6 +6 +Connector_Molex +Molex_Nano-Fit_105309-xx07_1x07_P2.50mm_Vertical +Molex Nano-Fit Power Connectors, 105309-xx07, 7 Pins per row (http://www.molex.com/pdm_docs/sd/1053091203_sd.pdf), generated with kicad-footprint-generator +connector Molex Nano-Fit side entry +0 +7 +7 +Connector_Molex +Molex_Nano-Fit_105309-xx08_1x08_P2.50mm_Vertical +Molex Nano-Fit Power Connectors, 105309-xx08, 8 Pins per row (http://www.molex.com/pdm_docs/sd/1053091203_sd.pdf), generated with kicad-footprint-generator +connector Molex Nano-Fit side entry +0 +8 +8 +Connector_Molex +Molex_Nano-Fit_105310-xx04_2x02_P2.50mm_Vertical +Molex Nano-Fit Power Connectors, 105310-xx04, 2 Pins per row (http://www.molex.com/pdm_docs/sd/1053101208_sd.pdf), generated with kicad-footprint-generator +connector Molex Nano-Fit side entry +0 +4 +4 +Connector_Molex +Molex_Nano-Fit_105310-xx06_2x03_P2.50mm_Vertical +Molex Nano-Fit Power Connectors, 105310-xx06, 3 Pins per row (http://www.molex.com/pdm_docs/sd/1053101208_sd.pdf), generated with kicad-footprint-generator +connector Molex Nano-Fit side entry +0 +6 +6 +Connector_Molex +Molex_Nano-Fit_105310-xx08_2x04_P2.50mm_Vertical +Molex Nano-Fit Power Connectors, 105310-xx08, 4 Pins per row (http://www.molex.com/pdm_docs/sd/1053101208_sd.pdf), generated with kicad-footprint-generator +connector Molex Nano-Fit side entry +0 +8 +8 +Connector_Molex +Molex_Nano-Fit_105310-xx10_2x05_P2.50mm_Vertical +Molex Nano-Fit Power Connectors, 105310-xx10, 5 Pins per row (http://www.molex.com/pdm_docs/sd/1053101208_sd.pdf), generated with kicad-footprint-generator +connector Molex Nano-Fit side entry +0 +10 +10 +Connector_Molex +Molex_Nano-Fit_105310-xx12_2x06_P2.50mm_Vertical +Molex Nano-Fit Power Connectors, 105310-xx12, 6 Pins per row (http://www.molex.com/pdm_docs/sd/1053101208_sd.pdf), generated with kicad-footprint-generator +connector Molex Nano-Fit side entry +0 +12 +12 +Connector_Molex +Molex_Nano-Fit_105310-xx14_2x07_P2.50mm_Vertical +Molex Nano-Fit Power Connectors, 105310-xx14, 7 Pins per row (http://www.molex.com/pdm_docs/sd/1053101208_sd.pdf), generated with kicad-footprint-generator +connector Molex Nano-Fit side entry +0 +14 +14 +Connector_Molex +Molex_Nano-Fit_105310-xx16_2x08_P2.50mm_Vertical +Molex Nano-Fit Power Connectors, 105310-xx16, 8 Pins per row (http://www.molex.com/pdm_docs/sd/1053101208_sd.pdf), generated with kicad-footprint-generator +connector Molex Nano-Fit side entry +0 +16 +16 +Connector_Molex +Molex_Nano-Fit_105313-xx02_1x02_P2.50mm_Horizontal +Molex Nano-Fit Power Connectors, 105313-xx02, 2 Pins per row (http://www.molex.com/pdm_docs/sd/1053131208_sd.pdf), generated with kicad-footprint-generator +connector Molex Nano-Fit top entry +0 +2 +2 +Connector_Molex +Molex_Nano-Fit_105313-xx03_1x03_P2.50mm_Horizontal +Molex Nano-Fit Power Connectors, 105313-xx03, 3 Pins per row (http://www.molex.com/pdm_docs/sd/1053131208_sd.pdf), generated with kicad-footprint-generator +connector Molex Nano-Fit top entry +0 +3 +3 +Connector_Molex +Molex_Nano-Fit_105313-xx04_1x04_P2.50mm_Horizontal +Molex Nano-Fit Power Connectors, 105313-xx04, 4 Pins per row (http://www.molex.com/pdm_docs/sd/1053131208_sd.pdf), generated with kicad-footprint-generator +connector Molex Nano-Fit top entry +0 +4 +4 +Connector_Molex +Molex_Nano-Fit_105313-xx05_1x05_P2.50mm_Horizontal +Molex Nano-Fit Power Connectors, 105313-xx05, 5 Pins per row (http://www.molex.com/pdm_docs/sd/1053131208_sd.pdf), generated with kicad-footprint-generator +connector Molex Nano-Fit top entry +0 +5 +5 +Connector_Molex +Molex_Nano-Fit_105313-xx06_1x06_P2.50mm_Horizontal +Molex Nano-Fit Power Connectors, 105313-xx06, 6 Pins per row (http://www.molex.com/pdm_docs/sd/1053131208_sd.pdf), generated with kicad-footprint-generator +connector Molex Nano-Fit top entry +0 +6 +6 +Connector_Molex +Molex_Nano-Fit_105313-xx07_1x07_P2.50mm_Horizontal +Molex Nano-Fit Power Connectors, 105313-xx07, 7 Pins per row (http://www.molex.com/pdm_docs/sd/1053131208_sd.pdf), generated with kicad-footprint-generator +connector Molex Nano-Fit top entry +0 +7 +7 +Connector_Molex +Molex_Nano-Fit_105313-xx08_1x08_P2.50mm_Horizontal +Molex Nano-Fit Power Connectors, 105313-xx08, 8 Pins per row (http://www.molex.com/pdm_docs/sd/1053131208_sd.pdf), generated with kicad-footprint-generator +connector Molex Nano-Fit top entry +0 +8 +8 +Connector_Molex +Molex_Nano-Fit_105314-xx04_2x02_P2.50mm_Horizontal +Molex Nano-Fit Power Connectors, 105314-xx04, 2 Pins per row (http://www.molex.com/pdm_docs/sd/1053141208_sd.pdf), generated with kicad-footprint-generator +connector Molex Nano-Fit top entry +0 +4 +4 +Connector_Molex +Molex_Nano-Fit_105314-xx06_2x03_P2.50mm_Horizontal +Molex Nano-Fit Power Connectors, 105314-xx06, 3 Pins per row (http://www.molex.com/pdm_docs/sd/1053141208_sd.pdf), generated with kicad-footprint-generator +connector Molex Nano-Fit top entry +0 +6 +6 +Connector_Molex +Molex_Nano-Fit_105314-xx08_2x04_P2.50mm_Horizontal +Molex Nano-Fit Power Connectors, 105314-xx08, 4 Pins per row (http://www.molex.com/pdm_docs/sd/1053141208_sd.pdf), generated with kicad-footprint-generator +connector Molex Nano-Fit top entry +0 +8 +8 +Connector_Molex +Molex_Nano-Fit_105314-xx10_2x05_P2.50mm_Horizontal +Molex Nano-Fit Power Connectors, 105314-xx10, 5 Pins per row (http://www.molex.com/pdm_docs/sd/1053141208_sd.pdf), generated with kicad-footprint-generator +connector Molex Nano-Fit top entry +0 +10 +10 +Connector_Molex +Molex_Nano-Fit_105314-xx12_2x06_P2.50mm_Horizontal +Molex Nano-Fit Power Connectors, 105314-xx12, 6 Pins per row (http://www.molex.com/pdm_docs/sd/1053141208_sd.pdf), generated with kicad-footprint-generator +connector Molex Nano-Fit top entry +0 +12 +12 +Connector_Molex +Molex_Nano-Fit_105314-xx14_2x07_P2.50mm_Horizontal +Molex Nano-Fit Power Connectors, 105314-xx14, 7 Pins per row (http://www.molex.com/pdm_docs/sd/1053141208_sd.pdf), generated with kicad-footprint-generator +connector Molex Nano-Fit top entry +0 +14 +14 +Connector_Molex +Molex_Nano-Fit_105314-xx16_2x08_P2.50mm_Horizontal +Molex Nano-Fit Power Connectors, 105314-xx16, 8 Pins per row (http://www.molex.com/pdm_docs/sd/1053141208_sd.pdf), generated with kicad-footprint-generator +connector Molex Nano-Fit top entry +0 +16 +16 +Connector_Molex +Molex_Panelmate_53780-0270_1x02-1MP_P1.25mm_Horizontal +Molex Panelmate series connector, 53780-0270 (), generated with kicad-footprint-generator +connector Molex Panelmate top entry +0 +4 +3 +Connector_Molex +Molex_Panelmate_53780-0370_1x03-1MP_P1.25mm_Horizontal +Molex Panelmate series connector, 53780-0370 (), generated with kicad-footprint-generator +connector Molex Panelmate top entry +0 +5 +4 +Connector_Molex +Molex_Panelmate_53780-0470_1x04-1MP_P1.25mm_Horizontal +Molex Panelmate series connector, 53780-0470 (), generated with kicad-footprint-generator +connector Molex Panelmate top entry +0 +6 +5 +Connector_Molex +Molex_Panelmate_53780-0570_1x05-1MP_P1.25mm_Horizontal +Molex Panelmate series connector, 53780-0570 (), generated with kicad-footprint-generator +connector Molex Panelmate top entry +0 +7 +6 +Connector_Molex +Molex_Panelmate_53780-0670_1x06-1MP_P1.25mm_Horizontal +Molex Panelmate series connector, 53780-0670 (), generated with kicad-footprint-generator +connector Molex Panelmate top entry +0 +8 +7 +Connector_Molex +Molex_Panelmate_53780-0770_1x07-1MP_P1.25mm_Horizontal +Molex Panelmate series connector, 53780-0770 (), generated with kicad-footprint-generator +connector Molex Panelmate top entry +0 +9 +8 +Connector_Molex +Molex_Panelmate_53780-0870_1x08-1MP_P1.25mm_Horizontal +Molex Panelmate series connector, 53780-0870 (), generated with kicad-footprint-generator +connector Molex Panelmate top entry +0 +10 +9 +Connector_Molex +Molex_Panelmate_53780-0970_1x09-1MP_P1.25mm_Horizontal +Molex Panelmate series connector, 53780-0970 (), generated with kicad-footprint-generator +connector Molex Panelmate top entry +0 +11 +10 +Connector_Molex +Molex_Panelmate_53780-1070_1x10-1MP_P1.25mm_Horizontal +Molex Panelmate series connector, 53780-1070 (), generated with kicad-footprint-generator +connector Molex Panelmate top entry +0 +12 +11 +Connector_Molex +Molex_Panelmate_53780-1270_1x12-1MP_P1.25mm_Horizontal +Molex Panelmate series connector, 53780-1270 (), generated with kicad-footprint-generator +connector Molex Panelmate top entry +0 +14 +13 +Connector_Molex +Molex_Panelmate_53780-1470_1x14-1MP_P1.25mm_Horizontal +Molex Panelmate series connector, 53780-1470 (), generated with kicad-footprint-generator +connector Molex Panelmate top entry +0 +16 +15 +Connector_Molex +Molex_Panelmate_53780-1570_1x15-1MP_P1.25mm_Horizontal +Molex Panelmate series connector, 53780-1570 (), generated with kicad-footprint-generator +connector Molex Panelmate top entry +0 +17 +16 +Connector_Molex +Molex_Panelmate_53780-1870_1x18-1MP_P1.25mm_Horizontal +Molex Panelmate series connector, 53780-1870 (), generated with kicad-footprint-generator +connector Molex Panelmate top entry +0 +20 +19 +Connector_Molex +Molex_Panelmate_53780-3070_1x30-1MP_P1.25mm_Horizontal +Molex Panelmate series connector, 53780-3070 (), generated with kicad-footprint-generator +connector Molex Panelmate top entry +0 +32 +31 +Connector_Molex +Molex_Pico-Clasp_202396-0207_1x02-1MP_P1.00mm_Horizontal +Molex Pico-Clasp series connector, 202396-0207 (http://www.molex.com/pdm_docs/sd/2023960207_sd.pdf), generated with kicad-footprint-generator +connector Molex Pico-Clasp top entry +0 +4 +3 +Connector_Molex +Molex_Pico-Clasp_202396-0307_1x03-1MP_P1.00mm_Horizontal +Molex Pico-Clasp series connector, 202396-0307 (http://www.molex.com/pdm_docs/sd/2023960207_sd.pdf), generated with kicad-footprint-generator +connector Molex Pico-Clasp top entry +0 +5 +4 +Connector_Molex +Molex_Pico-Clasp_202396-0407_1x04-1MP_P1.00mm_Horizontal +Molex Pico-Clasp series connector, 202396-0407 (http://www.molex.com/pdm_docs/sd/2023960207_sd.pdf), generated with kicad-footprint-generator +connector Molex Pico-Clasp top entry +0 +6 +5 +Connector_Molex +Molex_Pico-Clasp_202396-0507_1x05-1MP_P1.00mm_Horizontal +Molex Pico-Clasp series connector, 202396-0507 (http://www.molex.com/pdm_docs/sd/2023960207_sd.pdf), generated with kicad-footprint-generator +connector Molex Pico-Clasp top entry +0 +7 +6 +Connector_Molex +Molex_Pico-Clasp_202396-0607_1x06-1MP_P1.00mm_Horizontal +Molex Pico-Clasp series connector, 202396-0607 (http://www.molex.com/pdm_docs/sd/2023960207_sd.pdf), generated with kicad-footprint-generator +connector Molex Pico-Clasp top entry +0 +8 +7 +Connector_Molex +Molex_Pico-Clasp_202396-0707_1x07-1MP_P1.00mm_Horizontal +Molex Pico-Clasp series connector, 202396-0707 (http://www.molex.com/pdm_docs/sd/2023960207_sd.pdf), generated with kicad-footprint-generator +connector Molex Pico-Clasp top entry +0 +9 +8 +Connector_Molex +Molex_Pico-Clasp_202396-0807_1x08-1MP_P1.00mm_Horizontal +Molex Pico-Clasp series connector, 202396-0807 (http://www.molex.com/pdm_docs/sd/2023960207_sd.pdf), generated with kicad-footprint-generator +connector Molex Pico-Clasp top entry +0 +10 +9 +Connector_Molex +Molex_Pico-Clasp_202396-0907_1x09-1MP_P1.00mm_Horizontal +Molex Pico-Clasp series connector, 202396-0907 (http://www.molex.com/pdm_docs/sd/2023960207_sd.pdf), generated with kicad-footprint-generator +connector Molex Pico-Clasp top entry +0 +11 +10 +Connector_Molex +Molex_Pico-Clasp_202396-1007_1x10-1MP_P1.00mm_Horizontal +Molex Pico-Clasp series connector, 202396-1007 (http://www.molex.com/pdm_docs/sd/2023960207_sd.pdf), generated with kicad-footprint-generator +connector Molex Pico-Clasp top entry +0 +12 +11 +Connector_Molex +Molex_Pico-Clasp_202396-1107_1x11-1MP_P1.00mm_Horizontal +Molex Pico-Clasp series connector, 202396-1107 (http://www.molex.com/pdm_docs/sd/2023960207_sd.pdf), generated with kicad-footprint-generator +connector Molex Pico-Clasp top entry +0 +13 +12 +Connector_Molex +Molex_Pico-Clasp_202396-1207_1x12-1MP_P1.00mm_Horizontal +Molex Pico-Clasp series connector, 202396-1207 (http://www.molex.com/pdm_docs/sd/2023960207_sd.pdf), generated with kicad-footprint-generator +connector Molex Pico-Clasp top entry +0 +14 +13 +Connector_Molex +Molex_Pico-Clasp_202396-1307_1x13-1MP_P1.00mm_Horizontal +Molex Pico-Clasp series connector, 202396-1307 (http://www.molex.com/pdm_docs/sd/2023960207_sd.pdf), generated with kicad-footprint-generator +connector Molex Pico-Clasp top entry +0 +15 +14 +Connector_Molex +Molex_Pico-Clasp_202396-1407_1x14-1MP_P1.00mm_Horizontal +Molex Pico-Clasp series connector, 202396-1407 (http://www.molex.com/pdm_docs/sd/2023960207_sd.pdf), generated with kicad-footprint-generator +connector Molex Pico-Clasp top entry +0 +16 +15 +Connector_Molex +Molex_Pico-Clasp_202396-1507_1x15-1MP_P1.00mm_Horizontal +Molex Pico-Clasp series connector, 202396-1507 (http://www.molex.com/pdm_docs/sd/2023960207_sd.pdf), generated with kicad-footprint-generator +connector Molex Pico-Clasp top entry +0 +17 +16 +Connector_Molex +Molex_Pico-Clasp_501331-0207_1x02-1MP_P1.00mm_Vertical +Molex Pico-Clasp series connector, 501331-0207 (http://www.molex.com/pdm_docs/sd/5013310207_sd.pdf), generated with kicad-footprint-generator +connector Molex Pico-Clasp side entry +0 +4 +3 +Connector_Molex +Molex_Pico-Clasp_501331-0307_1x03-1MP_P1.00mm_Vertical +Molex Pico-Clasp series connector, 501331-0307 (http://www.molex.com/pdm_docs/sd/5013310207_sd.pdf), generated with kicad-footprint-generator +connector Molex Pico-Clasp side entry +0 +5 +4 +Connector_Molex +Molex_Pico-Clasp_501331-0407_1x04-1MP_P1.00mm_Vertical +Molex Pico-Clasp series connector, 501331-0407 (http://www.molex.com/pdm_docs/sd/5013310207_sd.pdf), generated with kicad-footprint-generator +connector Molex Pico-Clasp side entry +0 +6 +5 +Connector_Molex +Molex_Pico-Clasp_501331-0507_1x05-1MP_P1.00mm_Vertical +Molex Pico-Clasp series connector, 501331-0507 (http://www.molex.com/pdm_docs/sd/5013310207_sd.pdf), generated with kicad-footprint-generator +connector Molex Pico-Clasp side entry +0 +7 +6 +Connector_Molex +Molex_Pico-Clasp_501331-0607_1x06-1MP_P1.00mm_Vertical +Molex Pico-Clasp series connector, 501331-0607 (http://www.molex.com/pdm_docs/sd/5013310207_sd.pdf), generated with kicad-footprint-generator +connector Molex Pico-Clasp side entry +0 +8 +7 +Connector_Molex +Molex_Pico-Clasp_501331-0707_1x07-1MP_P1.00mm_Vertical +Molex Pico-Clasp series connector, 501331-0707 (http://www.molex.com/pdm_docs/sd/5013310207_sd.pdf), generated with kicad-footprint-generator +connector Molex Pico-Clasp side entry +0 +9 +8 +Connector_Molex +Molex_Pico-Clasp_501331-0807_1x08-1MP_P1.00mm_Vertical +Molex Pico-Clasp series connector, 501331-0807 (http://www.molex.com/pdm_docs/sd/5013310207_sd.pdf), generated with kicad-footprint-generator +connector Molex Pico-Clasp side entry +0 +10 +9 +Connector_Molex +Molex_Pico-Clasp_501331-0907_1x09-1MP_P1.00mm_Vertical +Molex Pico-Clasp series connector, 501331-0907 (http://www.molex.com/pdm_docs/sd/5013310207_sd.pdf), generated with kicad-footprint-generator +connector Molex Pico-Clasp side entry +0 +11 +10 +Connector_Molex +Molex_Pico-Clasp_501331-1007_1x10-1MP_P1.00mm_Vertical +Molex Pico-Clasp series connector, 501331-1007 (http://www.molex.com/pdm_docs/sd/5013310207_sd.pdf), generated with kicad-footprint-generator +connector Molex Pico-Clasp side entry +0 +12 +11 +Connector_Molex +Molex_Pico-Clasp_501331-1107_1x11-1MP_P1.00mm_Vertical +Molex Pico-Clasp series connector, 501331-1107 (http://www.molex.com/pdm_docs/sd/5013310207_sd.pdf), generated with kicad-footprint-generator +connector Molex Pico-Clasp side entry +0 +13 +12 +Connector_Molex +Molex_Pico-Clasp_501331-1207_1x12-1MP_P1.00mm_Vertical +Molex Pico-Clasp series connector, 501331-1207 (http://www.molex.com/pdm_docs/sd/5013310207_sd.pdf), generated with kicad-footprint-generator +connector Molex Pico-Clasp side entry +0 +14 +13 +Connector_Molex +Molex_Pico-Clasp_501331-1307_1x13-1MP_P1.00mm_Vertical +Molex Pico-Clasp series connector, 501331-1307 (http://www.molex.com/pdm_docs/sd/5013310207_sd.pdf), generated with kicad-footprint-generator +connector Molex Pico-Clasp side entry +0 +15 +14 +Connector_Molex +Molex_Pico-Clasp_501331-1407_1x14-1MP_P1.00mm_Vertical +Molex Pico-Clasp series connector, 501331-1407 (http://www.molex.com/pdm_docs/sd/5013310207_sd.pdf), generated with kicad-footprint-generator +connector Molex Pico-Clasp side entry +0 +16 +15 +Connector_Molex +Molex_Pico-Clasp_501331-1507_1x15-1MP_P1.00mm_Vertical +Molex Pico-Clasp series connector, 501331-1507 (http://www.molex.com/pdm_docs/sd/5013310207_sd.pdf), generated with kicad-footprint-generator +connector Molex Pico-Clasp side entry +0 +17 +16 +Connector_Molex +Molex_Pico-EZmate_78171-0002_1x02-1MP_P1.20mm_Vertical +Molex Pico-EZmate series connector, 78171-0002 (http://www.molex.com/pdm_docs/sd/781710002_sd.pdf), generated with kicad-footprint-generator +connector Molex Pico-EZmate side entry +0 +4 +3 +Connector_Molex +Molex_Pico-EZmate_78171-0003_1x03-1MP_P1.20mm_Vertical +Molex Pico-EZmate series connector, 78171-0003 (http://www.molex.com/pdm_docs/sd/781710002_sd.pdf), generated with kicad-footprint-generator +connector Molex Pico-EZmate side entry +0 +5 +4 +Connector_Molex +Molex_Pico-EZmate_78171-0004_1x04-1MP_P1.20mm_Vertical +Molex Pico-EZmate series connector, 78171-0004 (http://www.molex.com/pdm_docs/sd/781710002_sd.pdf), generated with kicad-footprint-generator +connector Molex Pico-EZmate side entry +0 +6 +5 +Connector_Molex +Molex_Pico-EZmate_78171-0005_1x05-1MP_P1.20mm_Vertical +Molex Pico-EZmate series connector, 78171-0005 (http://www.molex.com/pdm_docs/sd/781710002_sd.pdf), generated with kicad-footprint-generator +connector Molex Pico-EZmate side entry +0 +7 +6 +Connector_Molex +Molex_Pico-EZmate_Slim_202656-0021_1x02-1MP_P1.20mm_Vertical +Molex Pico-EZmate_Slim series connector, 202656-0021 (http://www.molex.com/pdm_docs/sd/2026560021_sd.pdf), generated with kicad-footprint-generator +connector Molex Pico-EZmate_Slim side entry +0 +4 +3 +Connector_Molex +Molex_Pico-Lock_504050-0491_1x04-1MP_P1.50mm_Horizontal +Molex Pico-Lock series connector, 504050-0491 (http://www.molex.com/pdm_docs/sd/5040500891_sd.pdf), generated with kicad-footprint-generator +connector Molex Pico-Lock horizontal +0 +6 +5 +Connector_Molex +Molex_Pico-Lock_504050-0591_1x05-1MP_P1.50mm_Horizontal +Molex Pico-Lock series connector, 504050-0591 (http://www.molex.com/pdm_docs/sd/5040500891_sd.pdf), generated with kicad-footprint-generator +connector Molex Pico-Lock horizontal +0 +7 +6 +Connector_Molex +Molex_Pico-Lock_504050-0691_1x06-1MP_P1.50mm_Horizontal +Molex Pico-Lock series connector, 504050-0691 (http://www.molex.com/pdm_docs/sd/5040500891_sd.pdf), generated with kicad-footprint-generator +connector Molex Pico-Lock horizontal +0 +8 +7 +Connector_Molex +Molex_Pico-Lock_504050-0791_1x07-1MP_P1.50mm_Horizontal +Molex Pico-Lock series connector, 504050-0791 (http://www.molex.com/pdm_docs/sd/5040500891_sd.pdf), generated with kicad-footprint-generator +connector Molex Pico-Lock horizontal +0 +9 +8 +Connector_Molex +Molex_Pico-Lock_504050-0891_1x08-1MP_P1.50mm_Horizontal +Molex Pico-Lock series connector, 504050-0891 (http://www.molex.com/pdm_docs/sd/5040500891_sd.pdf), generated with kicad-footprint-generator +connector Molex Pico-Lock horizontal +0 +10 +9 +Connector_Molex +Molex_Pico-Lock_504050-1091_1x10-1MP_P1.50mm_Horizontal +Molex Pico-Lock series connector, 504050-1091 (http://www.molex.com/pdm_docs/sd/5040500891_sd.pdf), generated with kicad-footprint-generator +connector Molex Pico-Lock horizontal +0 +12 +11 +Connector_Molex +Molex_Pico-Lock_504050-1291_1x12-1MP_P1.50mm_Horizontal +Molex Pico-Lock series connector, 504050-1291 (http://www.molex.com/pdm_docs/sd/5040500891_sd.pdf), generated with kicad-footprint-generator +connector Molex Pico-Lock horizontal +0 +14 +13 +Connector_Molex +Molex_Pico-SPOX_87437-1443_1x14-P1.5mm_Vertical +Molex Pico-SPOX Connector System, 87437-1443, 14 Pins per row (https://www.molex.com/pdm_docs/sd/874371443_sd.pdf#page=2) +molex pico spox 14 +0 +28 +14 +Connector_Molex +Molex_PicoBlade_53047-0210_1x02_P1.25mm_Vertical +Molex PicoBlade Connector System, 53047-0210, 2 Pins per row (http://www.molex.com/pdm_docs/sd/530470610_sd.pdf), generated with kicad-footprint-generator +connector Molex PicoBlade side entry +0 +2 +2 +Connector_Molex +Molex_PicoBlade_53047-0310_1x03_P1.25mm_Vertical +Molex PicoBlade Connector System, 53047-0310, 3 Pins per row (http://www.molex.com/pdm_docs/sd/530470610_sd.pdf), generated with kicad-footprint-generator +connector Molex PicoBlade side entry +0 +3 +3 +Connector_Molex +Molex_PicoBlade_53047-0410_1x04_P1.25mm_Vertical +Molex PicoBlade Connector System, 53047-0410, 4 Pins per row (http://www.molex.com/pdm_docs/sd/530470610_sd.pdf), generated with kicad-footprint-generator +connector Molex PicoBlade side entry +0 +4 +4 +Connector_Molex +Molex_PicoBlade_53047-0510_1x05_P1.25mm_Vertical +Molex PicoBlade Connector System, 53047-0510, 5 Pins per row (http://www.molex.com/pdm_docs/sd/530470610_sd.pdf), generated with kicad-footprint-generator +connector Molex PicoBlade side entry +0 +5 +5 +Connector_Molex +Molex_PicoBlade_53047-0610_1x06_P1.25mm_Vertical +Molex PicoBlade Connector System, 53047-0610, 6 Pins per row (http://www.molex.com/pdm_docs/sd/530470610_sd.pdf), generated with kicad-footprint-generator +connector Molex PicoBlade side entry +0 +6 +6 +Connector_Molex +Molex_PicoBlade_53047-0710_1x07_P1.25mm_Vertical +Molex PicoBlade Connector System, 53047-0710, 7 Pins per row (http://www.molex.com/pdm_docs/sd/530470610_sd.pdf), generated with kicad-footprint-generator +connector Molex PicoBlade side entry +0 +7 +7 +Connector_Molex +Molex_PicoBlade_53047-0810_1x08_P1.25mm_Vertical +Molex PicoBlade Connector System, 53047-0810, 8 Pins per row (http://www.molex.com/pdm_docs/sd/530470610_sd.pdf), generated with kicad-footprint-generator +connector Molex PicoBlade side entry +0 +8 +8 +Connector_Molex +Molex_PicoBlade_53047-0910_1x09_P1.25mm_Vertical +Molex PicoBlade Connector System, 53047-0910, 9 Pins per row (http://www.molex.com/pdm_docs/sd/530470610_sd.pdf), generated with kicad-footprint-generator +connector Molex PicoBlade side entry +0 +9 +9 +Connector_Molex +Molex_PicoBlade_53047-1010_1x10_P1.25mm_Vertical +Molex PicoBlade Connector System, 53047-1010, 10 Pins per row (http://www.molex.com/pdm_docs/sd/530470610_sd.pdf), generated with kicad-footprint-generator +connector Molex PicoBlade side entry +0 +10 +10 +Connector_Molex +Molex_PicoBlade_53047-1110_1x11_P1.25mm_Vertical +Molex PicoBlade Connector System, 53047-1110, 11 Pins per row (http://www.molex.com/pdm_docs/sd/530470610_sd.pdf), generated with kicad-footprint-generator +connector Molex PicoBlade side entry +0 +11 +11 +Connector_Molex +Molex_PicoBlade_53047-1210_1x12_P1.25mm_Vertical +Molex PicoBlade Connector System, 53047-1210, 12 Pins per row (http://www.molex.com/pdm_docs/sd/530470610_sd.pdf), generated with kicad-footprint-generator +connector Molex PicoBlade side entry +0 +12 +12 +Connector_Molex +Molex_PicoBlade_53047-1310_1x13_P1.25mm_Vertical +Molex PicoBlade Connector System, 53047-1310, 13 Pins per row (http://www.molex.com/pdm_docs/sd/530470610_sd.pdf), generated with kicad-footprint-generator +connector Molex PicoBlade side entry +0 +13 +13 +Connector_Molex +Molex_PicoBlade_53047-1410_1x14_P1.25mm_Vertical +Molex PicoBlade Connector System, 53047-1410, 14 Pins per row (http://www.molex.com/pdm_docs/sd/530470610_sd.pdf), generated with kicad-footprint-generator +connector Molex PicoBlade side entry +0 +14 +14 +Connector_Molex +Molex_PicoBlade_53047-1510_1x15_P1.25mm_Vertical +Molex PicoBlade Connector System, 53047-1510, 15 Pins per row (http://www.molex.com/pdm_docs/sd/530470610_sd.pdf), generated with kicad-footprint-generator +connector Molex PicoBlade side entry +0 +15 +15 +Connector_Molex +Molex_PicoBlade_53048-0210_1x02_P1.25mm_Horizontal +Molex PicoBlade Connector System, 53048-0210, 2 Pins per row (http://www.molex.com/pdm_docs/sd/530480210_sd.pdf), generated with kicad-footprint-generator +connector Molex PicoBlade top entry +0 +2 +2 +Connector_Molex +Molex_PicoBlade_53048-0310_1x03_P1.25mm_Horizontal +Molex PicoBlade Connector System, 53048-0310, 3 Pins per row (http://www.molex.com/pdm_docs/sd/530480210_sd.pdf), generated with kicad-footprint-generator +connector Molex PicoBlade top entry +0 +3 +3 +Connector_Molex +Molex_PicoBlade_53048-0410_1x04_P1.25mm_Horizontal +Molex PicoBlade Connector System, 53048-0410, 4 Pins per row (http://www.molex.com/pdm_docs/sd/530480210_sd.pdf), generated with kicad-footprint-generator +connector Molex PicoBlade top entry +0 +4 +4 +Connector_Molex +Molex_PicoBlade_53048-0510_1x05_P1.25mm_Horizontal +Molex PicoBlade Connector System, 53048-0510, 5 Pins per row (http://www.molex.com/pdm_docs/sd/530480210_sd.pdf), generated with kicad-footprint-generator +connector Molex PicoBlade top entry +0 +5 +5 +Connector_Molex +Molex_PicoBlade_53048-0610_1x06_P1.25mm_Horizontal +Molex PicoBlade Connector System, 53048-0610, 6 Pins per row (http://www.molex.com/pdm_docs/sd/530480210_sd.pdf), generated with kicad-footprint-generator +connector Molex PicoBlade top entry +0 +6 +6 +Connector_Molex +Molex_PicoBlade_53048-0710_1x07_P1.25mm_Horizontal +Molex PicoBlade Connector System, 53048-0710, 7 Pins per row (http://www.molex.com/pdm_docs/sd/530480210_sd.pdf), generated with kicad-footprint-generator +connector Molex PicoBlade top entry +0 +7 +7 +Connector_Molex +Molex_PicoBlade_53048-0810_1x08_P1.25mm_Horizontal +Molex PicoBlade Connector System, 53048-0810, 8 Pins per row (http://www.molex.com/pdm_docs/sd/530480210_sd.pdf), generated with kicad-footprint-generator +connector Molex PicoBlade top entry +0 +8 +8 +Connector_Molex +Molex_PicoBlade_53048-0910_1x09_P1.25mm_Horizontal +Molex PicoBlade Connector System, 53048-0910, 9 Pins per row (http://www.molex.com/pdm_docs/sd/530480210_sd.pdf), generated with kicad-footprint-generator +connector Molex PicoBlade top entry +0 +9 +9 +Connector_Molex +Molex_PicoBlade_53048-1010_1x10_P1.25mm_Horizontal +Molex PicoBlade Connector System, 53048-1010, 10 Pins per row (http://www.molex.com/pdm_docs/sd/530480210_sd.pdf), generated with kicad-footprint-generator +connector Molex PicoBlade top entry +0 +10 +10 +Connector_Molex +Molex_PicoBlade_53048-1110_1x11_P1.25mm_Horizontal +Molex PicoBlade Connector System, 53048-1110, 11 Pins per row (http://www.molex.com/pdm_docs/sd/530480210_sd.pdf), generated with kicad-footprint-generator +connector Molex PicoBlade top entry +0 +11 +11 +Connector_Molex +Molex_PicoBlade_53048-1210_1x12_P1.25mm_Horizontal +Molex PicoBlade Connector System, 53048-1210, 12 Pins per row (http://www.molex.com/pdm_docs/sd/530480210_sd.pdf), generated with kicad-footprint-generator +connector Molex PicoBlade top entry +0 +12 +12 +Connector_Molex +Molex_PicoBlade_53048-1310_1x13_P1.25mm_Horizontal +Molex PicoBlade Connector System, 53048-1310, 13 Pins per row (http://www.molex.com/pdm_docs/sd/530480210_sd.pdf), generated with kicad-footprint-generator +connector Molex PicoBlade top entry +0 +13 +13 +Connector_Molex +Molex_PicoBlade_53048-1410_1x14_P1.25mm_Horizontal +Molex PicoBlade Connector System, 53048-1410, 14 Pins per row (http://www.molex.com/pdm_docs/sd/530480210_sd.pdf), generated with kicad-footprint-generator +connector Molex PicoBlade top entry +0 +14 +14 +Connector_Molex +Molex_PicoBlade_53048-1510_1x15_P1.25mm_Horizontal +Molex PicoBlade Connector System, 53048-1510, 15 Pins per row (http://www.molex.com/pdm_docs/sd/530480210_sd.pdf), generated with kicad-footprint-generator +connector Molex PicoBlade top entry +0 +15 +15 +Connector_Molex +Molex_PicoBlade_53261-0271_1x02-1MP_P1.25mm_Horizontal +Molex PicoBlade series connector, 53261-0271 (http://www.molex.com/pdm_docs/sd/532610271_sd.pdf), generated with kicad-footprint-generator +connector Molex PicoBlade top entry +0 +4 +3 +Connector_Molex +Molex_PicoBlade_53261-0371_1x03-1MP_P1.25mm_Horizontal +Molex PicoBlade series connector, 53261-0371 (http://www.molex.com/pdm_docs/sd/532610271_sd.pdf), generated with kicad-footprint-generator +connector Molex PicoBlade top entry +0 +5 +4 +Connector_Molex +Molex_PicoBlade_53261-0471_1x04-1MP_P1.25mm_Horizontal +Molex PicoBlade series connector, 53261-0471 (http://www.molex.com/pdm_docs/sd/532610271_sd.pdf), generated with kicad-footprint-generator +connector Molex PicoBlade top entry +0 +6 +5 +Connector_Molex +Molex_PicoBlade_53261-0571_1x05-1MP_P1.25mm_Horizontal +Molex PicoBlade series connector, 53261-0571 (http://www.molex.com/pdm_docs/sd/532610271_sd.pdf), generated with kicad-footprint-generator +connector Molex PicoBlade top entry +0 +7 +6 +Connector_Molex +Molex_PicoBlade_53261-0671_1x06-1MP_P1.25mm_Horizontal +Molex PicoBlade series connector, 53261-0671 (http://www.molex.com/pdm_docs/sd/532610271_sd.pdf), generated with kicad-footprint-generator +connector Molex PicoBlade top entry +0 +8 +7 +Connector_Molex +Molex_PicoBlade_53261-0771_1x07-1MP_P1.25mm_Horizontal +Molex PicoBlade series connector, 53261-0771 (http://www.molex.com/pdm_docs/sd/532610271_sd.pdf), generated with kicad-footprint-generator +connector Molex PicoBlade top entry +0 +9 +8 +Connector_Molex +Molex_PicoBlade_53261-0871_1x08-1MP_P1.25mm_Horizontal +Molex PicoBlade series connector, 53261-0871 (http://www.molex.com/pdm_docs/sd/532610271_sd.pdf), generated with kicad-footprint-generator +connector Molex PicoBlade top entry +0 +10 +9 +Connector_Molex +Molex_PicoBlade_53261-0971_1x09-1MP_P1.25mm_Horizontal +Molex PicoBlade series connector, 53261-0971 (http://www.molex.com/pdm_docs/sd/532610271_sd.pdf), generated with kicad-footprint-generator +connector Molex PicoBlade top entry +0 +11 +10 +Connector_Molex +Molex_PicoBlade_53261-1071_1x10-1MP_P1.25mm_Horizontal +Molex PicoBlade series connector, 53261-1071 (http://www.molex.com/pdm_docs/sd/532610271_sd.pdf), generated with kicad-footprint-generator +connector Molex PicoBlade top entry +0 +12 +11 +Connector_Molex +Molex_PicoBlade_53261-1171_1x11-1MP_P1.25mm_Horizontal +Molex PicoBlade series connector, 53261-1171 (http://www.molex.com/pdm_docs/sd/532610271_sd.pdf), generated with kicad-footprint-generator +connector Molex PicoBlade top entry +0 +13 +12 +Connector_Molex +Molex_PicoBlade_53261-1271_1x12-1MP_P1.25mm_Horizontal +Molex PicoBlade series connector, 53261-1271 (http://www.molex.com/pdm_docs/sd/532610271_sd.pdf), generated with kicad-footprint-generator +connector Molex PicoBlade top entry +0 +14 +13 +Connector_Molex +Molex_PicoBlade_53261-1371_1x13-1MP_P1.25mm_Horizontal +Molex PicoBlade series connector, 53261-1371 (http://www.molex.com/pdm_docs/sd/532610271_sd.pdf), generated with kicad-footprint-generator +connector Molex PicoBlade top entry +0 +15 +14 +Connector_Molex +Molex_PicoBlade_53261-1471_1x14-1MP_P1.25mm_Horizontal +Molex PicoBlade series connector, 53261-1471 (http://www.molex.com/pdm_docs/sd/532610271_sd.pdf), generated with kicad-footprint-generator +connector Molex PicoBlade top entry +0 +16 +15 +Connector_Molex +Molex_PicoBlade_53261-1571_1x15-1MP_P1.25mm_Horizontal +Molex PicoBlade series connector, 53261-1571 (http://www.molex.com/pdm_docs/sd/532610271_sd.pdf), generated with kicad-footprint-generator +connector Molex PicoBlade top entry +0 +17 +16 +Connector_Molex +Molex_PicoBlade_53261-1771_1x17-1MP_P1.25mm_Horizontal +Molex PicoBlade series connector, 53261-1771 (http://www.molex.com/pdm_docs/sd/532610271_sd.pdf), generated with kicad-footprint-generator +connector Molex PicoBlade top entry +0 +19 +18 +Connector_Molex +Molex_PicoBlade_53398-0271_1x02-1MP_P1.25mm_Vertical +Molex PicoBlade series connector, 53398-0271 (http://www.molex.com/pdm_docs/sd/533980271_sd.pdf), generated with kicad-footprint-generator +connector Molex PicoBlade side entry +0 +4 +3 +Connector_Molex +Molex_PicoBlade_53398-0371_1x03-1MP_P1.25mm_Vertical +Molex PicoBlade series connector, 53398-0371 (http://www.molex.com/pdm_docs/sd/533980271_sd.pdf), generated with kicad-footprint-generator +connector Molex PicoBlade side entry +0 +5 +4 +Connector_Molex +Molex_PicoBlade_53398-0471_1x04-1MP_P1.25mm_Vertical +Molex PicoBlade series connector, 53398-0471 (http://www.molex.com/pdm_docs/sd/533980271_sd.pdf), generated with kicad-footprint-generator +connector Molex PicoBlade side entry +0 +6 +5 +Connector_Molex +Molex_PicoBlade_53398-0571_1x05-1MP_P1.25mm_Vertical +Molex PicoBlade series connector, 53398-0571 (http://www.molex.com/pdm_docs/sd/533980271_sd.pdf), generated with kicad-footprint-generator +connector Molex PicoBlade side entry +0 +7 +6 +Connector_Molex +Molex_PicoBlade_53398-0671_1x06-1MP_P1.25mm_Vertical +Molex PicoBlade series connector, 53398-0671 (http://www.molex.com/pdm_docs/sd/533980271_sd.pdf), generated with kicad-footprint-generator +connector Molex PicoBlade side entry +0 +8 +7 +Connector_Molex +Molex_PicoBlade_53398-0771_1x07-1MP_P1.25mm_Vertical +Molex PicoBlade series connector, 53398-0771 (http://www.molex.com/pdm_docs/sd/533980271_sd.pdf), generated with kicad-footprint-generator +connector Molex PicoBlade side entry +0 +9 +8 +Connector_Molex +Molex_PicoBlade_53398-0871_1x08-1MP_P1.25mm_Vertical +Molex PicoBlade series connector, 53398-0871 (http://www.molex.com/pdm_docs/sd/533980271_sd.pdf), generated with kicad-footprint-generator +connector Molex PicoBlade side entry +0 +10 +9 +Connector_Molex +Molex_PicoBlade_53398-0971_1x09-1MP_P1.25mm_Vertical +Molex PicoBlade series connector, 53398-0971 (http://www.molex.com/pdm_docs/sd/533980271_sd.pdf), generated with kicad-footprint-generator +connector Molex PicoBlade side entry +0 +11 +10 +Connector_Molex +Molex_PicoBlade_53398-1071_1x10-1MP_P1.25mm_Vertical +Molex PicoBlade series connector, 53398-1071 (http://www.molex.com/pdm_docs/sd/533980271_sd.pdf), generated with kicad-footprint-generator +connector Molex PicoBlade side entry +0 +12 +11 +Connector_Molex +Molex_PicoBlade_53398-1171_1x11-1MP_P1.25mm_Vertical +Molex PicoBlade series connector, 53398-1171 (http://www.molex.com/pdm_docs/sd/533980271_sd.pdf), generated with kicad-footprint-generator +connector Molex PicoBlade side entry +0 +13 +12 +Connector_Molex +Molex_PicoBlade_53398-1271_1x12-1MP_P1.25mm_Vertical +Molex PicoBlade series connector, 53398-1271 (http://www.molex.com/pdm_docs/sd/533980271_sd.pdf), generated with kicad-footprint-generator +connector Molex PicoBlade side entry +0 +14 +13 +Connector_Molex +Molex_PicoBlade_53398-1371_1x13-1MP_P1.25mm_Vertical +Molex PicoBlade series connector, 53398-1371 (http://www.molex.com/pdm_docs/sd/533980271_sd.pdf), generated with kicad-footprint-generator +connector Molex PicoBlade side entry +0 +15 +14 +Connector_Molex +Molex_PicoBlade_53398-1471_1x14-1MP_P1.25mm_Vertical +Molex PicoBlade series connector, 53398-1471 (http://www.molex.com/pdm_docs/sd/533980271_sd.pdf), generated with kicad-footprint-generator +connector Molex PicoBlade side entry +0 +16 +15 +Connector_Molex +Molex_PicoBlade_53398-1571_1x15-1MP_P1.25mm_Vertical +Molex PicoBlade series connector, 53398-1571 (http://www.molex.com/pdm_docs/sd/533980271_sd.pdf), generated with kicad-footprint-generator +connector Molex PicoBlade side entry +0 +17 +16 +Connector_Molex +Molex_Picoflex_90325-0004_2x02_P1.27mm_Vertical +Molex Picoflex Ribbon-Cable Connectors, 90325-0004, 4 Pins (http://www.molex.com/pdm_docs/sd/903250004_sd.pdf), generated with kicad-footprint-generator +connector Molex Picoflex side entry +0 +4 +4 +Connector_Molex +Molex_Picoflex_90325-0006_2x03_P1.27mm_Vertical +Molex Picoflex Ribbon-Cable Connectors, 90325-0006, 6 Pins (http://www.molex.com/pdm_docs/sd/903250004_sd.pdf), generated with kicad-footprint-generator +connector Molex Picoflex side entry +0 +6 +6 +Connector_Molex +Molex_Picoflex_90325-0008_2x04_P1.27mm_Vertical +Molex Picoflex Ribbon-Cable Connectors, 90325-0008, 8 Pins (http://www.molex.com/pdm_docs/sd/903250004_sd.pdf), generated with kicad-footprint-generator +connector Molex Picoflex side entry +0 +8 +8 +Connector_Molex +Molex_Picoflex_90325-0010_2x05_P1.27mm_Vertical +Molex Picoflex Ribbon-Cable Connectors, 90325-0010, 10 Pins (http://www.molex.com/pdm_docs/sd/903250004_sd.pdf), generated with kicad-footprint-generator +connector Molex Picoflex side entry +0 +10 +10 +Connector_Molex +Molex_Picoflex_90325-0012_2x06_P1.27mm_Vertical +Molex Picoflex Ribbon-Cable Connectors, 90325-0012, 12 Pins (http://www.molex.com/pdm_docs/sd/903250004_sd.pdf), generated with kicad-footprint-generator +connector Molex Picoflex side entry +0 +12 +12 +Connector_Molex +Molex_Picoflex_90325-0014_2x07_P1.27mm_Vertical +Molex Picoflex Ribbon-Cable Connectors, 90325-0014, 14 Pins (http://www.molex.com/pdm_docs/sd/903250004_sd.pdf), generated with kicad-footprint-generator +connector Molex Picoflex side entry +0 +14 +14 +Connector_Molex +Molex_Picoflex_90325-0016_2x08_P1.27mm_Vertical +Molex Picoflex Ribbon-Cable Connectors, 90325-0016, 16 Pins (http://www.molex.com/pdm_docs/sd/903250004_sd.pdf), generated with kicad-footprint-generator +connector Molex Picoflex side entry +0 +16 +16 +Connector_Molex +Molex_Picoflex_90325-0018_2x09_P1.27mm_Vertical +Molex Picoflex Ribbon-Cable Connectors, 90325-0018, 18 Pins (http://www.molex.com/pdm_docs/sd/903250004_sd.pdf), generated with kicad-footprint-generator +connector Molex Picoflex side entry +0 +18 +18 +Connector_Molex +Molex_Picoflex_90325-0020_2x10_P1.27mm_Vertical +Molex Picoflex Ribbon-Cable Connectors, 90325-0020, 20 Pins (http://www.molex.com/pdm_docs/sd/903250004_sd.pdf), generated with kicad-footprint-generator +connector Molex Picoflex side entry +0 +20 +20 +Connector_Molex +Molex_Picoflex_90325-0022_2x11_P1.27mm_Vertical +Molex Picoflex Ribbon-Cable Connectors, 90325-0022, 22 Pins (http://www.molex.com/pdm_docs/sd/903250004_sd.pdf), generated with kicad-footprint-generator +connector Molex Picoflex side entry +0 +22 +22 +Connector_Molex +Molex_Picoflex_90325-0024_2x12_P1.27mm_Vertical +Molex Picoflex Ribbon-Cable Connectors, 90325-0024, 24 Pins (http://www.molex.com/pdm_docs/sd/903250004_sd.pdf), generated with kicad-footprint-generator +connector Molex Picoflex side entry +0 +24 +24 +Connector_Molex +Molex_Picoflex_90325-0026_2x13_P1.27mm_Vertical +Molex Picoflex Ribbon-Cable Connectors, 90325-0026, 26 Pins (http://www.molex.com/pdm_docs/sd/903250004_sd.pdf), generated with kicad-footprint-generator +connector Molex Picoflex side entry +0 +26 +26 +Connector_Molex +Molex_Picoflex_90814-0004_2x02_P1.27mm_Vertical +Molex Picoflex Ribbon-Cable Connectors, 90814-0004, 4 Pins (http://www.molex.com/pdm_docs/sd/908140004_sd.pdf), generated with kicad-footprint-generator +connector Molex Picoflex side entry +0 +4 +4 +Connector_Molex +Molex_Picoflex_90814-0006_2x03_P1.27mm_Vertical +Molex Picoflex Ribbon-Cable Connectors, 90814-0006, 6 Pins (http://www.molex.com/pdm_docs/sd/908140004_sd.pdf), generated with kicad-footprint-generator +connector Molex Picoflex side entry +0 +6 +6 +Connector_Molex +Molex_Picoflex_90814-0008_2x04_P1.27mm_Vertical +Molex Picoflex Ribbon-Cable Connectors, 90814-0008, 8 Pins (http://www.molex.com/pdm_docs/sd/908140004_sd.pdf), generated with kicad-footprint-generator +connector Molex Picoflex side entry +0 +8 +8 +Connector_Molex +Molex_Picoflex_90814-0010_2x05_P1.27mm_Vertical +Molex Picoflex Ribbon-Cable Connectors, 90814-0010, 10 Pins (http://www.molex.com/pdm_docs/sd/908140004_sd.pdf), generated with kicad-footprint-generator +connector Molex Picoflex side entry +0 +10 +10 +Connector_Molex +Molex_Picoflex_90814-0012_2x06_P1.27mm_Vertical +Molex Picoflex Ribbon-Cable Connectors, 90814-0012, 12 Pins (http://www.molex.com/pdm_docs/sd/908140004_sd.pdf), generated with kicad-footprint-generator +connector Molex Picoflex side entry +0 +12 +12 +Connector_Molex +Molex_Picoflex_90814-0014_2x07_P1.27mm_Vertical +Molex Picoflex Ribbon-Cable Connectors, 90814-0014, 14 Pins (http://www.molex.com/pdm_docs/sd/908140004_sd.pdf), generated with kicad-footprint-generator +connector Molex Picoflex side entry +0 +14 +14 +Connector_Molex +Molex_Picoflex_90814-0016_2x08_P1.27mm_Vertical +Molex Picoflex Ribbon-Cable Connectors, 90814-0016, 16 Pins (http://www.molex.com/pdm_docs/sd/908140004_sd.pdf), generated with kicad-footprint-generator +connector Molex Picoflex side entry +0 +16 +16 +Connector_Molex +Molex_Picoflex_90814-0018_2x09_P1.27mm_Vertical +Molex Picoflex Ribbon-Cable Connectors, 90814-0018, 18 Pins (http://www.molex.com/pdm_docs/sd/908140004_sd.pdf), generated with kicad-footprint-generator +connector Molex Picoflex side entry +0 +18 +18 +Connector_Molex +Molex_Picoflex_90814-0020_2x10_P1.27mm_Vertical +Molex Picoflex Ribbon-Cable Connectors, 90814-0020, 20 Pins (http://www.molex.com/pdm_docs/sd/908140004_sd.pdf), generated with kicad-footprint-generator +connector Molex Picoflex side entry +0 +20 +20 +Connector_Molex +Molex_Picoflex_90814-0022_2x11_P1.27mm_Vertical +Molex Picoflex Ribbon-Cable Connectors, 90814-0022, 22 Pins (http://www.molex.com/pdm_docs/sd/908140004_sd.pdf), generated with kicad-footprint-generator +connector Molex Picoflex side entry +0 +22 +22 +Connector_Molex +Molex_Picoflex_90814-0024_2x12_P1.27mm_Vertical +Molex Picoflex Ribbon-Cable Connectors, 90814-0024, 24 Pins (http://www.molex.com/pdm_docs/sd/908140004_sd.pdf), generated with kicad-footprint-generator +connector Molex Picoflex side entry +0 +24 +24 +Connector_Molex +Molex_Picoflex_90814-0026_2x13_P1.27mm_Vertical +Molex Picoflex Ribbon-Cable Connectors, 90814-0026, 26 Pins (http://www.molex.com/pdm_docs/sd/908140004_sd.pdf), generated with kicad-footprint-generator +connector Molex Picoflex side entry +0 +26 +26 +Connector_Molex +Molex_SL_171971-0002_1x02_P2.54mm_Vertical +Molex Stackable Linear Connector, 171971-0002 (compatible alternatives: 171971-0102, 171971-0202), 2 Pins per row (https://www.molex.com/pdm_docs/sd/1719710002_sd.pdf), generated with kicad-footprint-generator +connector Molex SL vertical +0 +2 +2 +Connector_Molex +Molex_SL_171971-0003_1x03_P2.54mm_Vertical +Molex Stackable Linear Connector, 171971-0003 (compatible alternatives: 171971-0103, 171971-0203), 3 Pins per row (https://www.molex.com/pdm_docs/sd/1719710002_sd.pdf), generated with kicad-footprint-generator +connector Molex SL vertical +0 +3 +3 +Connector_Molex +Molex_SL_171971-0004_1x04_P2.54mm_Vertical +Molex Stackable Linear Connector, 171971-0004 (compatible alternatives: 171971-0104, 171971-0204), 4 Pins per row (https://www.molex.com/pdm_docs/sd/1719710002_sd.pdf), generated with kicad-footprint-generator +connector Molex SL vertical +0 +4 +4 +Connector_Molex +Molex_SL_171971-0005_1x05_P2.54mm_Vertical +Molex Stackable Linear Connector, 171971-0005 (compatible alternatives: 171971-0105, 171971-0205), 5 Pins per row (https://www.molex.com/pdm_docs/sd/1719710002_sd.pdf), generated with kicad-footprint-generator +connector Molex SL vertical +0 +5 +5 +Connector_Molex +Molex_SL_171971-0006_1x06_P2.54mm_Vertical +Molex Stackable Linear Connector, 171971-0006 (compatible alternatives: 171971-0106, 171971-0206), 6 Pins per row (https://www.molex.com/pdm_docs/sd/1719710002_sd.pdf), generated with kicad-footprint-generator +connector Molex SL vertical +0 +6 +6 +Connector_Molex +Molex_SL_171971-0007_1x07_P2.54mm_Vertical +Molex Stackable Linear Connector, 171971-0007 (compatible alternatives: 171971-0107, 171971-0207), 7 Pins per row (https://www.molex.com/pdm_docs/sd/1719710002_sd.pdf), generated with kicad-footprint-generator +connector Molex SL vertical +0 +7 +7 +Connector_Molex +Molex_SL_171971-0008_1x08_P2.54mm_Vertical +Molex Stackable Linear Connector, 171971-0008 (compatible alternatives: 171971-0108, 171971-0208), 8 Pins per row (https://www.molex.com/pdm_docs/sd/1719710002_sd.pdf), generated with kicad-footprint-generator +connector Molex SL vertical +0 +8 +8 +Connector_Molex +Molex_SL_171971-0009_1x09_P2.54mm_Vertical +Molex Stackable Linear Connector, 171971-0009 (compatible alternatives: 171971-0109, 171971-0209), 9 Pins per row (https://www.molex.com/pdm_docs/sd/1719710002_sd.pdf), generated with kicad-footprint-generator +connector Molex SL vertical +0 +9 +9 +Connector_Molex +Molex_SL_171971-0010_1x10_P2.54mm_Vertical +Molex Stackable Linear Connector, 171971-0010 (compatible alternatives: 171971-0110, 171971-0210), 10 Pins per row (https://www.molex.com/pdm_docs/sd/1719710002_sd.pdf), generated with kicad-footprint-generator +connector Molex SL vertical +0 +10 +10 +Connector_Molex +Molex_SL_171971-0011_1x11_P2.54mm_Vertical +Molex Stackable Linear Connector, 171971-0011 (compatible alternatives: 171971-0111, 171971-0211), 11 Pins per row (https://www.molex.com/pdm_docs/sd/1719710002_sd.pdf), generated with kicad-footprint-generator +connector Molex SL vertical +0 +11 +11 +Connector_Molex +Molex_SL_171971-0012_1x12_P2.54mm_Vertical +Molex Stackable Linear Connector, 171971-0012 (compatible alternatives: 171971-0112, 171971-0212), 12 Pins per row (https://www.molex.com/pdm_docs/sd/1719710002_sd.pdf), generated with kicad-footprint-generator +connector Molex SL vertical +0 +12 +12 +Connector_Molex +Molex_SL_171971-0013_1x13_P2.54mm_Vertical +Molex Stackable Linear Connector, 171971-0013 (compatible alternatives: 171971-0113, 171971-0213), 13 Pins per row (https://www.molex.com/pdm_docs/sd/1719710002_sd.pdf), generated with kicad-footprint-generator +connector Molex SL vertical +0 +13 +13 +Connector_Molex +Molex_SL_171971-0014_1x14_P2.54mm_Vertical +Molex Stackable Linear Connector, 171971-0014 (compatible alternatives: 171971-0114, 171971-0214), 14 Pins per row (https://www.molex.com/pdm_docs/sd/1719710002_sd.pdf), generated with kicad-footprint-generator +connector Molex SL vertical +0 +14 +14 +Connector_Molex +Molex_SL_171971-0015_1x15_P2.54mm_Vertical +Molex Stackable Linear Connector, 171971-0015 (compatible alternatives: 171971-0115, 171971-0215), 15 Pins per row (https://www.molex.com/pdm_docs/sd/1719710002_sd.pdf), generated with kicad-footprint-generator +connector Molex SL vertical +0 +15 +15 +Connector_Molex +Molex_SL_171971-0016_1x16_P2.54mm_Vertical +Molex Stackable Linear Connector, 171971-0016 (compatible alternatives: 171971-0116, 171971-0216), 16 Pins per row (https://www.molex.com/pdm_docs/sd/1719710002_sd.pdf), generated with kicad-footprint-generator +connector Molex SL vertical +0 +16 +16 +Connector_Molex +Molex_SL_171971-0017_1x17_P2.54mm_Vertical +Molex Stackable Linear Connector, 171971-0017 (compatible alternatives: 171971-0117, 171971-0217), 17 Pins per row (https://www.molex.com/pdm_docs/sd/1719710002_sd.pdf), generated with kicad-footprint-generator +connector Molex SL vertical +0 +17 +17 +Connector_Molex +Molex_SL_171971-0018_1x18_P2.54mm_Vertical +Molex Stackable Linear Connector, 171971-0018 (compatible alternatives: 171971-0118, 171971-0218), 18 Pins per row (https://www.molex.com/pdm_docs/sd/1719710002_sd.pdf), generated with kicad-footprint-generator +connector Molex SL vertical +0 +18 +18 +Connector_Molex +Molex_SL_171971-0019_1x19_P2.54mm_Vertical +Molex Stackable Linear Connector, 171971-0019 (compatible alternatives: 171971-0119, 171971-0219), 19 Pins per row (https://www.molex.com/pdm_docs/sd/1719710002_sd.pdf), generated with kicad-footprint-generator +connector Molex SL vertical +0 +19 +19 +Connector_Molex +Molex_SL_171971-0020_1x20_P2.54mm_Vertical +Molex Stackable Linear Connector, 171971-0020 (compatible alternatives: 171971-0120, 171971-0220), 20 Pins per row (https://www.molex.com/pdm_docs/sd/1719710002_sd.pdf), generated with kicad-footprint-generator +connector Molex SL vertical +0 +20 +20 +Connector_Molex +Molex_SL_171971-0021_1x21_P2.54mm_Vertical +Molex Stackable Linear Connector, 171971-0021 (compatible alternatives: 171971-0121, 171971-0221), 21 Pins per row (https://www.molex.com/pdm_docs/sd/1719710002_sd.pdf), generated with kicad-footprint-generator +connector Molex SL vertical +0 +21 +21 +Connector_Molex +Molex_SL_171971-0022_1x22_P2.54mm_Vertical +Molex Stackable Linear Connector, 171971-0022 (compatible alternatives: 171971-0122, 171971-0222), 22 Pins per row (https://www.molex.com/pdm_docs/sd/1719710002_sd.pdf), generated with kicad-footprint-generator +connector Molex SL vertical +0 +22 +22 +Connector_Molex +Molex_SL_171971-0023_1x23_P2.54mm_Vertical +Molex Stackable Linear Connector, 171971-0023 (compatible alternatives: 171971-0123, 171971-0223), 23 Pins per row (https://www.molex.com/pdm_docs/sd/1719710002_sd.pdf), generated with kicad-footprint-generator +connector Molex SL vertical +0 +23 +23 +Connector_Molex +Molex_SL_171971-0024_1x24_P2.54mm_Vertical +Molex Stackable Linear Connector, 171971-0024 (compatible alternatives: 171971-0124, 171971-0224), 24 Pins per row (https://www.molex.com/pdm_docs/sd/1719710002_sd.pdf), generated with kicad-footprint-generator +connector Molex SL vertical +0 +24 +24 +Connector_Molex +Molex_SL_171971-0025_1x25_P2.54mm_Vertical +Molex Stackable Linear Connector, 171971-0025 (compatible alternatives: 171971-0125, 171971-0225), 25 Pins per row (https://www.molex.com/pdm_docs/sd/1719710002_sd.pdf), generated with kicad-footprint-generator +connector Molex SL vertical +0 +25 +25 +Connector_Molex +Molex_SPOX_5267-02A_1x02_P2.50mm_Vertical +Molex SPOX Connector System, 5267-02A, 2 Pins per row (http://www.molex.com/pdm_docs/sd/022035035_sd.pdf), generated with kicad-footprint-generator +connector Molex SPOX side entry +0 +2 +2 +Connector_Molex +Molex_SPOX_5267-03A_1x03_P2.50mm_Vertical +Molex SPOX Connector System, 5267-03A, 3 Pins per row (http://www.molex.com/pdm_docs/sd/022035035_sd.pdf), generated with kicad-footprint-generator +connector Molex SPOX side entry +0 +3 +3 +Connector_Molex +Molex_SPOX_5267-04A_1x04_P2.50mm_Vertical +Molex SPOX Connector System, 5267-04A, 4 Pins per row (http://www.molex.com/pdm_docs/sd/022035035_sd.pdf), generated with kicad-footprint-generator +connector Molex SPOX side entry +0 +4 +4 +Connector_Molex +Molex_SPOX_5267-05A_1x05_P2.50mm_Vertical +Molex SPOX Connector System, 5267-05A, 5 Pins per row (http://www.molex.com/pdm_docs/sd/022035035_sd.pdf), generated with kicad-footprint-generator +connector Molex SPOX side entry +0 +5 +5 +Connector_Molex +Molex_SPOX_5267-06A_1x06_P2.50mm_Vertical +Molex SPOX Connector System, 5267-06A, 6 Pins per row (http://www.molex.com/pdm_docs/sd/022035035_sd.pdf), generated with kicad-footprint-generator +connector Molex SPOX side entry +0 +6 +6 +Connector_Molex +Molex_SPOX_5267-07A_1x07_P2.50mm_Vertical +Molex SPOX Connector System, 5267-07A, 7 Pins per row (http://www.molex.com/pdm_docs/sd/022035035_sd.pdf), generated with kicad-footprint-generator +connector Molex SPOX side entry +0 +7 +7 +Connector_Molex +Molex_SPOX_5267-08A_1x08_P2.50mm_Vertical +Molex SPOX Connector System, 5267-08A, 8 Pins per row (http://www.molex.com/pdm_docs/sd/022035035_sd.pdf), generated with kicad-footprint-generator +connector Molex SPOX side entry +0 +8 +8 +Connector_Molex +Molex_SPOX_5267-09A_1x09_P2.50mm_Vertical +Molex SPOX Connector System, 5267-09A, 9 Pins per row (http://www.molex.com/pdm_docs/sd/022035035_sd.pdf), generated with kicad-footprint-generator +connector Molex SPOX side entry +0 +9 +9 +Connector_Molex +Molex_SPOX_5267-10A_1x10_P2.50mm_Vertical +Molex SPOX Connector System, 5267-10A, 10 Pins per row (http://www.molex.com/pdm_docs/sd/022035035_sd.pdf), generated with kicad-footprint-generator +connector Molex SPOX side entry +0 +10 +10 +Connector_Molex +Molex_SPOX_5267-11A_1x11_P2.50mm_Vertical +Molex SPOX Connector System, 5267-11A, 11 Pins per row (http://www.molex.com/pdm_docs/sd/022035035_sd.pdf), generated with kicad-footprint-generator +connector Molex SPOX side entry +0 +11 +11 +Connector_Molex +Molex_SPOX_5267-12A_1x12_P2.50mm_Vertical +Molex SPOX Connector System, 5267-12A, 12 Pins per row (http://www.molex.com/pdm_docs/sd/022035035_sd.pdf), generated with kicad-footprint-generator +connector Molex SPOX side entry +0 +12 +12 +Connector_Molex +Molex_SPOX_5267-13A_1x13_P2.50mm_Vertical +Molex SPOX Connector System, 5267-13A, 13 Pins per row (http://www.molex.com/pdm_docs/sd/022035035_sd.pdf), generated with kicad-footprint-generator +connector Molex SPOX side entry +0 +13 +13 +Connector_Molex +Molex_SPOX_5267-14A_1x14_P2.50mm_Vertical +Molex SPOX Connector System, 5267-14A, 14 Pins per row (http://www.molex.com/pdm_docs/sd/022035035_sd.pdf), generated with kicad-footprint-generator +connector Molex SPOX side entry +0 +14 +14 +Connector_Molex +Molex_SPOX_5267-15A_1x15_P2.50mm_Vertical +Molex SPOX Connector System, 5267-15A, 15 Pins per row (http://www.molex.com/pdm_docs/sd/022035035_sd.pdf), generated with kicad-footprint-generator +connector Molex SPOX side entry +0 +15 +15 +Connector_Molex +Molex_SPOX_5268-02A_1x02_P2.50mm_Horizontal +Molex SPOX Connector System, 5268-02A, 2 Pins per row (https://www.molex.com/pdm_docs/sd/022057045_sd.pdf), generated with kicad-footprint-generator +connector Molex SPOX horizontal +0 +2 +2 +Connector_Molex +Molex_SPOX_5268-03A_1x03_P2.50mm_Horizontal +Molex SPOX Connector System, 5268-03A, 3 Pins per row (https://www.molex.com/pdm_docs/sd/022057045_sd.pdf), generated with kicad-footprint-generator +connector Molex SPOX horizontal +0 +3 +3 +Connector_Molex +Molex_SPOX_5268-04A_1x04_P2.50mm_Horizontal +Molex SPOX Connector System, 5268-04A, 4 Pins per row (https://www.molex.com/pdm_docs/sd/022057045_sd.pdf), generated with kicad-footprint-generator +connector Molex SPOX horizontal +0 +4 +4 +Connector_Molex +Molex_SPOX_5268-05A_1x05_P2.50mm_Horizontal +Molex SPOX Connector System, 5268-05A, 5 Pins per row (https://www.molex.com/pdm_docs/sd/022057045_sd.pdf), generated with kicad-footprint-generator +connector Molex SPOX horizontal +0 +5 +5 +Connector_Molex +Molex_SPOX_5268-06A_1x06_P2.50mm_Horizontal +Molex SPOX Connector System, 5268-06A, 6 Pins per row (https://www.molex.com/pdm_docs/sd/022057045_sd.pdf), generated with kicad-footprint-generator +connector Molex SPOX horizontal +0 +6 +6 +Connector_Molex +Molex_SPOX_5268-07A_1x07_P2.50mm_Horizontal +Molex SPOX Connector System, 5268-07A, 7 Pins per row (https://www.molex.com/pdm_docs/sd/022057045_sd.pdf), generated with kicad-footprint-generator +connector Molex SPOX horizontal +0 +7 +7 +Connector_Molex +Molex_SPOX_5268-08A_1x08_P2.50mm_Horizontal +Molex SPOX Connector System, 5268-08A, 8 Pins per row (https://www.molex.com/pdm_docs/sd/022057045_sd.pdf), generated with kicad-footprint-generator +connector Molex SPOX horizontal +0 +8 +8 +Connector_Molex +Molex_SPOX_5268-09A_1x09_P2.50mm_Horizontal +Molex SPOX Connector System, 5268-09A, 9 Pins per row (https://www.molex.com/pdm_docs/sd/022057045_sd.pdf), generated with kicad-footprint-generator +connector Molex SPOX horizontal +0 +9 +9 +Connector_Molex +Molex_SPOX_5268-10A_1x10_P2.50mm_Horizontal +Molex SPOX Connector System, 5268-10A, 10 Pins per row (https://www.molex.com/pdm_docs/sd/022057045_sd.pdf), generated with kicad-footprint-generator +connector Molex SPOX horizontal +0 +10 +10 +Connector_Molex +Molex_SPOX_5268-11A_1x11_P2.50mm_Horizontal +Molex SPOX Connector System, 5268-11A, 11 Pins per row (https://www.molex.com/pdm_docs/sd/022057045_sd.pdf), generated with kicad-footprint-generator +connector Molex SPOX horizontal +0 +11 +11 +Connector_Molex +Molex_SPOX_5268-12A_1x12_P2.50mm_Horizontal +Molex SPOX Connector System, 5268-12A, 12 Pins per row (https://www.molex.com/pdm_docs/sd/022057045_sd.pdf), generated with kicad-footprint-generator +connector Molex SPOX horizontal +0 +12 +12 +Connector_Molex +Molex_SPOX_5268-13A_1x13_P2.50mm_Horizontal +Molex SPOX Connector System, 5268-13A, 13 Pins per row (https://www.molex.com/pdm_docs/sd/022057045_sd.pdf), generated with kicad-footprint-generator +connector Molex SPOX horizontal +0 +13 +13 +Connector_Molex +Molex_SPOX_5268-14A_1x14_P2.50mm_Horizontal +Molex SPOX Connector System, 5268-14A, 14 Pins per row (https://www.molex.com/pdm_docs/sd/022057045_sd.pdf), generated with kicad-footprint-generator +connector Molex SPOX horizontal +0 +14 +14 +Connector_Molex +Molex_SPOX_5268-15A_1x15_P2.50mm_Horizontal +Molex SPOX Connector System, 5268-15A, 15 Pins per row (https://www.molex.com/pdm_docs/sd/022057045_sd.pdf), generated with kicad-footprint-generator +connector Molex SPOX horizontal +0 +15 +15 +Connector_Molex +Molex_Sabre_43160-0102_1x02_P7.49mm_Vertical +Molex Sabre Power Connector, 43160-0102, 2 Pins per row (http://www.molex.com/pdm_docs/sd/431600105_sd.pdf), generated with kicad-footprint-generator +connector Molex Sabre side entry +0 +4 +2 +Connector_Molex +Molex_Sabre_43160-0102_1x02_P7.49mm_Vertical_ThermalVias +Molex Sabre Power Connector, 43160-0102, With thermal vias in pads, 2 Pins per row (http://www.molex.com/pdm_docs/sd/431600105_sd.pdf), generated with kicad-footprint-generator +connector Molex Sabre side entry +0 +30 +2 +Connector_Molex +Molex_Sabre_43160-0103_1x03_P7.49mm_Vertical +Molex Sabre Power Connector, 43160-0103, 3 Pins per row (http://www.molex.com/pdm_docs/sd/431600105_sd.pdf), generated with kicad-footprint-generator +connector Molex Sabre side entry +0 +6 +3 +Connector_Molex +Molex_Sabre_43160-0103_1x03_P7.49mm_Vertical_ThermalVias +Molex Sabre Power Connector, 43160-0103, With thermal vias in pads, 3 Pins per row (http://www.molex.com/pdm_docs/sd/431600105_sd.pdf), generated with kicad-footprint-generator +connector Molex Sabre side entry +0 +45 +3 +Connector_Molex +Molex_Sabre_43160-0104_1x04_P7.49mm_Vertical +Molex Sabre Power Connector, 43160-0104, 4 Pins per row (http://www.molex.com/pdm_docs/sd/431600105_sd.pdf), generated with kicad-footprint-generator +connector Molex Sabre side entry +0 +8 +4 +Connector_Molex +Molex_Sabre_43160-0104_1x04_P7.49mm_Vertical_ThermalVias +Molex Sabre Power Connector, 43160-0104, With thermal vias in pads, 4 Pins per row (http://www.molex.com/pdm_docs/sd/431600105_sd.pdf), generated with kicad-footprint-generator +connector Molex Sabre side entry +0 +60 +4 +Connector_Molex +Molex_Sabre_43160-0105_1x05_P7.49mm_Vertical +Molex Sabre Power Connector, 43160-0105, 5 Pins per row (http://www.molex.com/pdm_docs/sd/431600105_sd.pdf), generated with kicad-footprint-generator +connector Molex Sabre side entry +0 +10 +5 +Connector_Molex +Molex_Sabre_43160-0105_1x05_P7.49mm_Vertical_ThermalVias +Molex Sabre Power Connector, 43160-0105, With thermal vias in pads, 5 Pins per row (http://www.molex.com/pdm_docs/sd/431600105_sd.pdf), generated with kicad-footprint-generator +connector Molex Sabre side entry +0 +75 +5 +Connector_Molex +Molex_Sabre_43160-0106_1x06_P7.49mm_Vertical +Molex Sabre Power Connector, 43160-0106, 6 Pins per row (http://www.molex.com/pdm_docs/sd/431600105_sd.pdf), generated with kicad-footprint-generator +connector Molex Sabre side entry +0 +12 +6 +Connector_Molex +Molex_Sabre_43160-0106_1x06_P7.49mm_Vertical_ThermalVias +Molex Sabre Power Connector, 43160-0106, With thermal vias in pads, 6 Pins per row (http://www.molex.com/pdm_docs/sd/431600105_sd.pdf), generated with kicad-footprint-generator +connector Molex Sabre side entry +0 +90 +6 +Connector_Molex +Molex_Sabre_43160-1102_1x02_P7.49mm_Horizontal +Molex Sabre Power Connector, 43160-1102, 2 Pins per row (http://www.molex.com/pdm_docs/sd/431605304_sd.pdf), generated with kicad-footprint-generator +connector Molex Sabre top entry +0 +6 +2 +Connector_Molex +Molex_Sabre_43160-1102_1x02_P7.49mm_Horizontal_ThermalVias +Molex Sabre Power Connector, 43160-1102, With thermal vias in pads, 2 Pins per row (http://www.molex.com/pdm_docs/sd/431605304_sd.pdf), generated with kicad-footprint-generator +connector Molex Sabre top entry +0 +32 +2 +Connector_Molex +Molex_Sabre_43160-1103_1x03_P7.49mm_Horizontal +Molex Sabre Power Connector, 43160-1103, 3 Pins per row (http://www.molex.com/pdm_docs/sd/431605304_sd.pdf), generated with kicad-footprint-generator +connector Molex Sabre top entry +0 +8 +3 +Connector_Molex +Molex_Sabre_43160-1103_1x03_P7.49mm_Horizontal_ThermalVias +Molex Sabre Power Connector, 43160-1103, With thermal vias in pads, 3 Pins per row (http://www.molex.com/pdm_docs/sd/431605304_sd.pdf), generated with kicad-footprint-generator +connector Molex Sabre top entry +0 +47 +3 +Connector_Molex +Molex_Sabre_43160-1104_1x04_P7.49mm_Horizontal +Molex Sabre Power Connector, 43160-1104, 4 Pins per row (http://www.molex.com/pdm_docs/sd/431605304_sd.pdf), generated with kicad-footprint-generator +connector Molex Sabre top entry +0 +10 +4 +Connector_Molex +Molex_Sabre_43160-1104_1x04_P7.49mm_Horizontal_ThermalVias +Molex Sabre Power Connector, 43160-1104, With thermal vias in pads, 4 Pins per row (http://www.molex.com/pdm_docs/sd/431605304_sd.pdf), generated with kicad-footprint-generator +connector Molex Sabre top entry +0 +62 +4 +Connector_Molex +Molex_Sabre_43160-1105_1x05_P7.49mm_Horizontal +Molex Sabre Power Connector, 43160-1105, 5 Pins per row (http://www.molex.com/pdm_docs/sd/431605304_sd.pdf), generated with kicad-footprint-generator +connector Molex Sabre top entry +0 +12 +5 +Connector_Molex +Molex_Sabre_43160-1105_1x05_P7.49mm_Horizontal_ThermalVias +Molex Sabre Power Connector, 43160-1105, With thermal vias in pads, 5 Pins per row (http://www.molex.com/pdm_docs/sd/431605304_sd.pdf), generated with kicad-footprint-generator +connector Molex Sabre top entry +0 +77 +5 +Connector_Molex +Molex_Sabre_43160-1106_1x06_P7.49mm_Horizontal +Molex Sabre Power Connector, 43160-1106, 6 Pins per row (http://www.molex.com/pdm_docs/sd/431605304_sd.pdf), generated with kicad-footprint-generator +connector Molex Sabre top entry +0 +14 +6 +Connector_Molex +Molex_Sabre_43160-1106_1x06_P7.49mm_Horizontal_ThermalVias +Molex Sabre Power Connector, 43160-1106, With thermal vias in pads, 6 Pins per row (http://www.molex.com/pdm_docs/sd/431605304_sd.pdf), generated with kicad-footprint-generator +connector Molex Sabre top entry +0 +92 +6 +Connector_Molex +Molex_Sabre_43160-2102_1x02_P7.49mm_Vertical +Molex Sabre Power Connector, 43160-2102, 2 Pins per row (http://www.molex.com/pdm_docs/sd/431602102_sd.pdf), generated with kicad-footprint-generator +connector Molex Sabre side entry +0 +6 +2 +Connector_Molex +Molex_Sabre_43160-2102_1x02_P7.49mm_Vertical_ThermalVias +Molex Sabre Power Connector, 43160-2102, With thermal vias in pads, 2 Pins per row (http://www.molex.com/pdm_docs/sd/431602102_sd.pdf), generated with kicad-footprint-generator +connector Molex Sabre side entry +0 +32 +2 +Connector_Molex +Molex_Sabre_43160-2103_1x03_P7.49mm_Vertical +Molex Sabre Power Connector, 43160-2103, 3 Pins per row (http://www.molex.com/pdm_docs/sd/431602102_sd.pdf), generated with kicad-footprint-generator +connector Molex Sabre side entry +0 +8 +3 +Connector_Molex +Molex_Sabre_43160-2103_1x03_P7.49mm_Vertical_ThermalVias +Molex Sabre Power Connector, 43160-2103, With thermal vias in pads, 3 Pins per row (http://www.molex.com/pdm_docs/sd/431602102_sd.pdf), generated with kicad-footprint-generator +connector Molex Sabre side entry +0 +47 +3 +Connector_Molex +Molex_Sabre_43160-2104_1x04_P7.49mm_Vertical +Molex Sabre Power Connector, 43160-2104, 4 Pins per row (http://www.molex.com/pdm_docs/sd/431602102_sd.pdf), generated with kicad-footprint-generator +connector Molex Sabre side entry +0 +10 +4 +Connector_Molex +Molex_Sabre_43160-2104_1x04_P7.49mm_Vertical_ThermalVias +Molex Sabre Power Connector, 43160-2104, With thermal vias in pads, 4 Pins per row (http://www.molex.com/pdm_docs/sd/431602102_sd.pdf), generated with kicad-footprint-generator +connector Molex Sabre side entry +0 +62 +4 +Connector_Molex +Molex_Sabre_43160-2105_1x05_P7.49mm_Vertical +Molex Sabre Power Connector, 43160-2105, 5 Pins per row (http://www.molex.com/pdm_docs/sd/431602102_sd.pdf), generated with kicad-footprint-generator +connector Molex Sabre side entry +0 +12 +5 +Connector_Molex +Molex_Sabre_43160-2105_1x05_P7.49mm_Vertical_ThermalVias +Molex Sabre Power Connector, 43160-2105, With thermal vias in pads, 5 Pins per row (http://www.molex.com/pdm_docs/sd/431602102_sd.pdf), generated with kicad-footprint-generator +connector Molex Sabre side entry +0 +77 +5 +Connector_Molex +Molex_Sabre_43160-2106_1x06_P7.49mm_Vertical +Molex Sabre Power Connector, 43160-2106, 6 Pins per row (http://www.molex.com/pdm_docs/sd/431602102_sd.pdf), generated with kicad-footprint-generator +connector Molex Sabre side entry +0 +14 +6 +Connector_Molex +Molex_Sabre_43160-2106_1x06_P7.49mm_Vertical_ThermalVias +Molex Sabre Power Connector, 43160-2106, With thermal vias in pads, 6 Pins per row (http://www.molex.com/pdm_docs/sd/431602102_sd.pdf), generated with kicad-footprint-generator +connector Molex Sabre side entry +0 +92 +6 +Connector_Molex +Molex_Sabre_46007-1102_1x02_P7.49mm_Horizontal +Molex Sabre Power Connector, 46007-1102, 2 Pins per row (http://www.molex.com/pdm_docs/sd/460071105_sd.pdf), generated with kicad-footprint-generator +connector Molex Sabre top entry +0 +4 +2 +Connector_Molex +Molex_Sabre_46007-1102_1x02_P7.49mm_Horizontal_ThermalVias +Molex Sabre Power Connector, 46007-1102, With thermal vias in pads, 2 Pins per row (http://www.molex.com/pdm_docs/sd/460071105_sd.pdf), generated with kicad-footprint-generator +connector Molex Sabre top entry +0 +30 +2 +Connector_Molex +Molex_Sabre_46007-1103_1x03_P7.49mm_Horizontal +Molex Sabre Power Connector, 46007-1103, 3 Pins per row (http://www.molex.com/pdm_docs/sd/460071105_sd.pdf), generated with kicad-footprint-generator +connector Molex Sabre top entry +0 +6 +3 +Connector_Molex +Molex_Sabre_46007-1103_1x03_P7.49mm_Horizontal_ThermalVias +Molex Sabre Power Connector, 46007-1103, With thermal vias in pads, 3 Pins per row (http://www.molex.com/pdm_docs/sd/460071105_sd.pdf), generated with kicad-footprint-generator +connector Molex Sabre top entry +0 +45 +3 +Connector_Molex +Molex_Sabre_46007-1104_1x04_P7.49mm_Horizontal +Molex Sabre Power Connector, 46007-1104, 4 Pins per row (http://www.molex.com/pdm_docs/sd/460071105_sd.pdf), generated with kicad-footprint-generator +connector Molex Sabre top entry +0 +8 +4 +Connector_Molex +Molex_Sabre_46007-1104_1x04_P7.49mm_Horizontal_ThermalVias +Molex Sabre Power Connector, 46007-1104, With thermal vias in pads, 4 Pins per row (http://www.molex.com/pdm_docs/sd/460071105_sd.pdf), generated with kicad-footprint-generator +connector Molex Sabre top entry +0 +60 +4 +Connector_Molex +Molex_Sabre_46007-1105_1x05_P7.49mm_Horizontal +Molex Sabre Power Connector, 46007-1105, 5 Pins per row (http://www.molex.com/pdm_docs/sd/460071105_sd.pdf), generated with kicad-footprint-generator +connector Molex Sabre top entry +0 +10 +5 +Connector_Molex +Molex_Sabre_46007-1105_1x05_P7.49mm_Horizontal_ThermalVias +Molex Sabre Power Connector, 46007-1105, With thermal vias in pads, 5 Pins per row (http://www.molex.com/pdm_docs/sd/460071105_sd.pdf), generated with kicad-footprint-generator +connector Molex Sabre top entry +0 +75 +5 +Connector_Molex +Molex_Sabre_46007-1106_1x06_P7.49mm_Horizontal +Molex Sabre Power Connector, 46007-1106, 6 Pins per row (http://www.molex.com/pdm_docs/sd/460071105_sd.pdf), generated with kicad-footprint-generator +connector Molex Sabre top entry +0 +12 +6 +Connector_Molex +Molex_Sabre_46007-1106_1x06_P7.49mm_Horizontal_ThermalVias +Molex Sabre Power Connector, 46007-1106, With thermal vias in pads, 6 Pins per row (http://www.molex.com/pdm_docs/sd/460071105_sd.pdf), generated with kicad-footprint-generator +connector Molex Sabre top entry +0 +90 +6 +Connector_Molex +Molex_SlimStack_52991-0208_2x10_P0.50mm_Vertical +Molex SlimStack Fine-Pitch SMT Board-to-Board Connectors, 52991-0208, 20 Pins (http://www.molex.com/pdm_docs/sd/529910308_sd.pdf), generated with kicad-footprint-generator +connector Molex SlimStack vertical +0 +20 +20 +Connector_Molex +Molex_SlimStack_52991-0308_2x15_P0.50mm_Vertical +Molex SlimStack Fine-Pitch SMT Board-to-Board Connectors, 52991-0308, 30 Pins (http://www.molex.com/pdm_docs/sd/529910308_sd.pdf), generated with kicad-footprint-generator +connector Molex SlimStack vertical +0 +30 +30 +Connector_Molex +Molex_SlimStack_52991-0408_2x20_P0.50mm_Vertical +Molex SlimStack Fine-Pitch SMT Board-to-Board Connectors, 52991-0408, 40 Pins (http://www.molex.com/pdm_docs/sd/529910308_sd.pdf), generated with kicad-footprint-generator +connector Molex SlimStack vertical +0 +40 +40 +Connector_Molex +Molex_SlimStack_52991-0508_2x25_P0.50mm_Vertical +Molex SlimStack Fine-Pitch SMT Board-to-Board Connectors, 52991-0508, 50 Pins (http://www.molex.com/pdm_docs/sd/529910308_sd.pdf), generated with kicad-footprint-generator +connector Molex SlimStack vertical +0 +50 +50 +Connector_Molex +Molex_SlimStack_52991-0608_2x30_P0.50mm_Vertical +Molex SlimStack Fine-Pitch SMT Board-to-Board Connectors, 52991-0608, 60 Pins (http://www.molex.com/pdm_docs/sd/529910308_sd.pdf), generated with kicad-footprint-generator +connector Molex SlimStack vertical +0 +60 +60 +Connector_Molex +Molex_SlimStack_52991-0708_2x35_P0.50mm_Vertical +Molex SlimStack Fine-Pitch SMT Board-to-Board Connectors, 52991-0708, 70 Pins (http://www.molex.com/pdm_docs/sd/529910308_sd.pdf), generated with kicad-footprint-generator +connector Molex SlimStack vertical +0 +70 +70 +Connector_Molex +Molex_SlimStack_52991-0808_2x40_P0.50mm_Vertical +Molex SlimStack Fine-Pitch SMT Board-to-Board Connectors, 52991-0808, 80 Pins (http://www.molex.com/pdm_docs/sd/529910308_sd.pdf), generated with kicad-footprint-generator +connector Molex SlimStack vertical +0 +80 +80 +Connector_Molex +Molex_SlimStack_53748-0208_2x10_P0.50mm_Vertical +Molex SlimStack Fine-Pitch SMT Board-to-Board Connectors, 53748-0208, 20 Pins (https://www.molex.com/pdm_docs/sd/537480308_sd.pdf), generated with kicad-footprint-generator +connector Molex SlimStack vertical +0 +20 +20 +Connector_Molex +Molex_SlimStack_53748-0308_2x15_P0.50mm_Vertical +Molex SlimStack Fine-Pitch SMT Board-to-Board Connectors, 53748-0308, 30 Pins (https://www.molex.com/pdm_docs/sd/537480308_sd.pdf), generated with kicad-footprint-generator +connector Molex SlimStack vertical +0 +30 +30 +Connector_Molex +Molex_SlimStack_53748-0408_2x20_P0.50mm_Vertical +Molex SlimStack Fine-Pitch SMT Board-to-Board Connectors, 53748-0408, 40 Pins (https://www.molex.com/pdm_docs/sd/537480308_sd.pdf), generated with kicad-footprint-generator +connector Molex SlimStack vertical +0 +40 +40 +Connector_Molex +Molex_SlimStack_53748-0608_2x30_P0.50mm_Vertical +Molex SlimStack Fine-Pitch SMT Board-to-Board Connectors, 53748-0608, 60 Pins (https://www.molex.com/pdm_docs/sd/537480308_sd.pdf), generated with kicad-footprint-generator +connector Molex SlimStack vertical +0 +60 +60 +Connector_Molex +Molex_SlimStack_53748-0708_2x35_P0.50mm_Vertical +Molex SlimStack Fine-Pitch SMT Board-to-Board Connectors, 53748-0708, 70 Pins (https://www.molex.com/pdm_docs/sd/537480308_sd.pdf), generated with kicad-footprint-generator +connector Molex SlimStack vertical +0 +70 +70 +Connector_Molex +Molex_SlimStack_53748-0808_2x40_P0.50mm_Vertical +Molex SlimStack Fine-Pitch SMT Board-to-Board Connectors, 53748-0808, 80 Pins (https://www.molex.com/pdm_docs/sd/537480308_sd.pdf), generated with kicad-footprint-generator +connector Molex SlimStack vertical +0 +80 +80 +Connector_Molex +Molex_SlimStack_54722-0164_2x08_P0.50mm_Vertical +Molex SlimStack Fine-Pitch SMT Board-to-Board Connectors, 54722-0164, 16 Pins (http://www.molex.com/pdm_docs/sd/547220804_sd.pdf), generated with kicad-footprint-generator +connector Molex SlimStack side entry +0 +16 +16 +Connector_Molex +Molex_SlimStack_54722-0204_2x10_P0.50mm_Vertical +Molex SlimStack Fine-Pitch SMT Board-to-Board Connectors, 54722-0204, 20 Pins (http://www.molex.com/pdm_docs/sd/547220804_sd.pdf), generated with kicad-footprint-generator +connector Molex SlimStack side entry +0 +20 +20 +Connector_Molex +Molex_SlimStack_54722-0224_2x11_P0.50mm_Vertical +Molex SlimStack Fine-Pitch SMT Board-to-Board Connectors, 54722-0224, 22 Pins (http://www.molex.com/pdm_docs/sd/547220804_sd.pdf), generated with kicad-footprint-generator +connector Molex SlimStack side entry +0 +22 +22 +Connector_Molex +Molex_SlimStack_54722-0244_2x12_P0.50mm_Vertical +Molex SlimStack Fine-Pitch SMT Board-to-Board Connectors, 54722-0244, 24 Pins (http://www.molex.com/pdm_docs/sd/547220804_sd.pdf), generated with kicad-footprint-generator +connector Molex SlimStack side entry +0 +24 +24 +Connector_Molex +Molex_SlimStack_54722-0304_2x15_P0.50mm_Vertical +Molex SlimStack Fine-Pitch SMT Board-to-Board Connectors, 54722-0304, 30 Pins (http://www.molex.com/pdm_docs/sd/547220804_sd.pdf), generated with kicad-footprint-generator +connector Molex SlimStack side entry +0 +30 +30 +Connector_Molex +Molex_SlimStack_54722-0344_2x17_P0.50mm_Vertical +Molex SlimStack Fine-Pitch SMT Board-to-Board Connectors, 54722-0344, 34 Pins (http://www.molex.com/pdm_docs/sd/547220804_sd.pdf), generated with kicad-footprint-generator +connector Molex SlimStack side entry +0 +34 +34 +Connector_Molex +Molex_SlimStack_54722-0404_2x20_P0.50mm_Vertical +Molex SlimStack Fine-Pitch SMT Board-to-Board Connectors, 54722-0404, 40 Pins (http://www.molex.com/pdm_docs/sd/547220804_sd.pdf), generated with kicad-footprint-generator +connector Molex SlimStack side entry +0 +40 +40 +Connector_Molex +Molex_SlimStack_54722-0504_2x25_P0.50mm_Vertical +Molex SlimStack Fine-Pitch SMT Board-to-Board Connectors, 54722-0504, 50 Pins (http://www.molex.com/pdm_docs/sd/547220804_sd.pdf), generated with kicad-footprint-generator +connector Molex SlimStack side entry +0 +50 +50 +Connector_Molex +Molex_SlimStack_54722-0604_2x30_P0.50mm_Vertical +Molex SlimStack Fine-Pitch SMT Board-to-Board Connectors, 54722-0604, 60 Pins (http://www.molex.com/pdm_docs/sd/547220804_sd.pdf), generated with kicad-footprint-generator +connector Molex SlimStack side entry +0 +60 +60 +Connector_Molex +Molex_SlimStack_54722-0804_2x40_P0.50mm_Vertical +Molex SlimStack Fine-Pitch SMT Board-to-Board Connectors, 54722-0804, 80 Pins (http://www.molex.com/pdm_docs/sd/547220804_sd.pdf), generated with kicad-footprint-generator +connector Molex SlimStack side entry +0 +80 +80 +Connector_Molex +Molex_SlimStack_55560-0161_2x08_P0.50mm_Vertical +Molex SlimStack Fine-Pitch SMT Board-to-Board Connectors, 55560-0161, 16 Pins (http://www.molex.com/pdm_docs/sd/555600207_sd.pdf), generated with kicad-footprint-generator +connector Molex SlimStack side entry +0 +16 +16 +Connector_Molex +Molex_SlimStack_55560-0201_2x10_P0.50mm_Vertical +Molex SlimStack Fine-Pitch SMT Board-to-Board Connectors, 55560-0201, 20 Pins (http://www.molex.com/pdm_docs/sd/555600207_sd.pdf), generated with kicad-footprint-generator +connector Molex SlimStack side entry +0 +20 +20 +Connector_Molex +Molex_SlimStack_55560-0221_2x11_P0.50mm_Vertical +Molex SlimStack Fine-Pitch SMT Board-to-Board Connectors, 55560-0221, 22 Pins (http://www.molex.com/pdm_docs/sd/555600207_sd.pdf), generated with kicad-footprint-generator +connector Molex SlimStack side entry +0 +22 +22 +Connector_Molex +Molex_SlimStack_55560-0241_2x12_P0.50mm_Vertical +Molex SlimStack Fine-Pitch SMT Board-to-Board Connectors, 55560-0241, 24 Pins (http://www.molex.com/pdm_docs/sd/555600207_sd.pdf), generated with kicad-footprint-generator +connector Molex SlimStack side entry +0 +24 +24 +Connector_Molex +Molex_SlimStack_55560-0301_2x15_P0.50mm_Vertical +Molex SlimStack Fine-Pitch SMT Board-to-Board Connectors, 55560-0301, 30 Pins (http://www.molex.com/pdm_docs/sd/555600207_sd.pdf), generated with kicad-footprint-generator +connector Molex SlimStack side entry +0 +30 +30 +Connector_Molex +Molex_SlimStack_55560-0341_2x17_P0.50mm_Vertical +Molex SlimStack Fine-Pitch SMT Board-to-Board Connectors, 55560-0341, 34 Pins (http://www.molex.com/pdm_docs/sd/555600207_sd.pdf), generated with kicad-footprint-generator +connector Molex SlimStack side entry +0 +34 +34 +Connector_Molex +Molex_SlimStack_55560-0401_2x20_P0.50mm_Vertical +Molex SlimStack Fine-Pitch SMT Board-to-Board Connectors, 55560-0401, 40 Pins (http://www.molex.com/pdm_docs/sd/555600207_sd.pdf), generated with kicad-footprint-generator +connector Molex SlimStack side entry +0 +40 +40 +Connector_Molex +Molex_SlimStack_55560-0501_2x25_P0.50mm_Vertical +Molex SlimStack Fine-Pitch SMT Board-to-Board Connectors, 55560-0501, 50 Pins (http://www.molex.com/pdm_docs/sd/555600207_sd.pdf), generated with kicad-footprint-generator +connector Molex SlimStack side entry +0 +50 +50 +Connector_Molex +Molex_SlimStack_55560-0601_2x30_P0.50mm_Vertical +Molex SlimStack Fine-Pitch SMT Board-to-Board Connectors, 55560-0601, 60 Pins (http://www.molex.com/pdm_docs/sd/555600207_sd.pdf), generated with kicad-footprint-generator +connector Molex SlimStack side entry +0 +60 +60 +Connector_Molex +Molex_SlimStack_55560-0801_2x40_P0.50mm_Vertical +Molex SlimStack Fine-Pitch SMT Board-to-Board Connectors, 55560-0801, 80 Pins (http://www.molex.com/pdm_docs/sd/555600207_sd.pdf), generated with kicad-footprint-generator +connector Molex SlimStack side entry +0 +80 +80 +Connector_Molex +Molex_SlimStack_501920-3001_2x15_P0.50mm_Vertical +Molex SlimStack Fine-Pitch SMT Board-to-Board Connectors, 501920-3001, 30 Pins (http://www.molex.com/pdm_docs/sd/5019204001_sd.pdf), generated with kicad-footprint-generator +connector Molex SlimStack side entry +0 +30 +30 +Connector_Molex +Molex_SlimStack_501920-4001_2x20_P0.50mm_Vertical +Molex SlimStack Fine-Pitch SMT Board-to-Board Connectors, 501920-4001, 40 Pins (http://www.molex.com/pdm_docs/sd/5019204001_sd.pdf), generated with kicad-footprint-generator +connector Molex SlimStack side entry +0 +40 +40 +Connector_Molex +Molex_SlimStack_501920-5001_2x25_P0.50mm_Vertical +Molex SlimStack Fine-Pitch SMT Board-to-Board Connectors, 501920-5001, 50 Pins (http://www.molex.com/pdm_docs/sd/5019204001_sd.pdf), generated with kicad-footprint-generator +connector Molex SlimStack side entry +0 +50 +50 +Connector_Molex +Molex_SlimStack_502426-0810_2x04_P0.40mm_Vertical +Molex SlimStack Fine-Pitch SMT Board-to-Board Connectors, 502426-0810, 8 Pins (http://www.molex.com/pdm_docs/sd/5024260810_sd.pdf), generated with kicad-footprint-generator +connector Molex SlimStack side entry +0 +8 +8 +Connector_Molex +Molex_SlimStack_502426-1410_2x07_P0.40mm_Vertical +Molex SlimStack Fine-Pitch SMT Board-to-Board Connectors, 502426-1410, 14 Pins (http://www.molex.com/pdm_docs/sd/5024260810_sd.pdf), generated with kicad-footprint-generator +connector Molex SlimStack side entry +0 +14 +14 +Connector_Molex +Molex_SlimStack_502426-2010_2x10_P0.40mm_Vertical +Molex SlimStack Fine-Pitch SMT Board-to-Board Connectors, 502426-2010, 20 Pins (http://www.molex.com/pdm_docs/sd/5024260810_sd.pdf), generated with kicad-footprint-generator +connector Molex SlimStack side entry +0 +20 +20 +Connector_Molex +Molex_SlimStack_502426-2210_2x11_P0.40mm_Vertical +Molex SlimStack Fine-Pitch SMT Board-to-Board Connectors, 502426-2210, 22 Pins (http://www.molex.com/pdm_docs/sd/5024260810_sd.pdf), generated with kicad-footprint-generator +connector Molex SlimStack side entry +0 +22 +22 +Connector_Molex +Molex_SlimStack_502426-2410_2x12_P0.40mm_Vertical +Molex SlimStack Fine-Pitch SMT Board-to-Board Connectors, 502426-2410, 24 Pins (http://www.molex.com/pdm_docs/sd/5024260810_sd.pdf), generated with kicad-footprint-generator +connector Molex SlimStack side entry +0 +24 +24 +Connector_Molex +Molex_SlimStack_502426-2610_2x13_P0.40mm_Vertical +Molex SlimStack Fine-Pitch SMT Board-to-Board Connectors, 502426-2610, 26 Pins (http://www.molex.com/pdm_docs/sd/5024260810_sd.pdf), generated with kicad-footprint-generator +connector Molex SlimStack side entry +0 +26 +26 +Connector_Molex +Molex_SlimStack_502426-3010_2x15_P0.40mm_Vertical +Molex SlimStack Fine-Pitch SMT Board-to-Board Connectors, 502426-3010, 30 Pins (http://www.molex.com/pdm_docs/sd/5024260810_sd.pdf), generated with kicad-footprint-generator +connector Molex SlimStack side entry +0 +30 +30 +Connector_Molex +Molex_SlimStack_502426-3210_2x16_P0.40mm_Vertical +Molex SlimStack Fine-Pitch SMT Board-to-Board Connectors, 502426-3210, 32 Pins (http://www.molex.com/pdm_docs/sd/5024260810_sd.pdf), generated with kicad-footprint-generator +connector Molex SlimStack side entry +0 +32 +32 +Connector_Molex +Molex_SlimStack_502426-3410_2x17_P0.40mm_Vertical +Molex SlimStack Fine-Pitch SMT Board-to-Board Connectors, 502426-3410, 34 Pins (http://www.molex.com/pdm_docs/sd/5024260810_sd.pdf), generated with kicad-footprint-generator +connector Molex SlimStack side entry +0 +34 +34 +Connector_Molex +Molex_SlimStack_502426-4010_2x20_P0.40mm_Vertical +Molex SlimStack Fine-Pitch SMT Board-to-Board Connectors, 502426-4010, 40 Pins (http://www.molex.com/pdm_docs/sd/5024260810_sd.pdf), generated with kicad-footprint-generator +connector Molex SlimStack side entry +0 +40 +40 +Connector_Molex +Molex_SlimStack_502426-4410_2x22_P0.40mm_Vertical +Molex SlimStack Fine-Pitch SMT Board-to-Board Connectors, 502426-4410, 44 Pins (http://www.molex.com/pdm_docs/sd/5024260810_sd.pdf), generated with kicad-footprint-generator +connector Molex SlimStack side entry +0 +44 +44 +Connector_Molex +Molex_SlimStack_502426-5010_2x25_P0.40mm_Vertical +Molex SlimStack Fine-Pitch SMT Board-to-Board Connectors, 502426-5010, 50 Pins (http://www.molex.com/pdm_docs/sd/5024260810_sd.pdf), generated with kicad-footprint-generator +connector Molex SlimStack side entry +0 +50 +50 +Connector_Molex +Molex_SlimStack_502426-6010_2x30_P0.40mm_Vertical +Molex SlimStack Fine-Pitch SMT Board-to-Board Connectors, 502426-6010, 60 Pins (http://www.molex.com/pdm_docs/sd/5024260810_sd.pdf), generated with kicad-footprint-generator +connector Molex SlimStack side entry +0 +60 +60 +Connector_Molex +Molex_SlimStack_502426-6410_2x32_P0.40mm_Vertical +Molex SlimStack Fine-Pitch SMT Board-to-Board Connectors, 502426-6410, 64 Pins (http://www.molex.com/pdm_docs/sd/5024260810_sd.pdf), generated with kicad-footprint-generator +connector Molex SlimStack side entry +0 +64 +64 +Connector_Molex +Molex_SlimStack_502426-8010_2x40_P0.40mm_Vertical +Molex SlimStack Fine-Pitch SMT Board-to-Board Connectors, 502426-8010, 80 Pins (http://www.molex.com/pdm_docs/sd/5024260810_sd.pdf), generated with kicad-footprint-generator +connector Molex SlimStack side entry +0 +80 +80 +Connector_Molex +Molex_SlimStack_502430-0820_2x04_P0.40mm_Vertical +Molex SlimStack Fine-Pitch SMT Board-to-Board Connectors, 502430-0820, 8 Pins (http://www.molex.com/pdm_docs/sd/5024300820_sd.pdf), generated with kicad-footprint-generator +connector Molex SlimStack side entry +0 +8 +8 +Connector_Molex +Molex_SlimStack_502430-1410_2x07_P0.40mm_Vertical +Molex SlimStack Fine-Pitch SMT Board-to-Board Connectors, 502430-1410, 14 Pins (http://www.molex.com/pdm_docs/sd/5024301410_sd.pdf), generated with kicad-footprint-generator +connector Molex SlimStack side entry +0 +14 +14 +Connector_Molex +Molex_SlimStack_502430-2010_2x10_P0.40mm_Vertical +Molex SlimStack Fine-Pitch SMT Board-to-Board Connectors, 502430-2010, 20 Pins (http://www.molex.com/pdm_docs/sd/5024301410_sd.pdf), generated with kicad-footprint-generator +connector Molex SlimStack side entry +0 +20 +20 +Connector_Molex +Molex_SlimStack_502430-2210_2x11_P0.40mm_Vertical +Molex SlimStack Fine-Pitch SMT Board-to-Board Connectors, 502430-2210, 22 Pins (http://www.molex.com/pdm_docs/sd/5024301410_sd.pdf), generated with kicad-footprint-generator +connector Molex SlimStack side entry +0 +22 +22 +Connector_Molex +Molex_SlimStack_502430-2410_2x12_P0.40mm_Vertical +Molex SlimStack Fine-Pitch SMT Board-to-Board Connectors, 502430-2410, 24 Pins (http://www.molex.com/pdm_docs/sd/5024301410_sd.pdf), generated with kicad-footprint-generator +connector Molex SlimStack side entry +0 +24 +24 +Connector_Molex +Molex_SlimStack_502430-2610_2x13_P0.40mm_Vertical +Molex SlimStack Fine-Pitch SMT Board-to-Board Connectors, 502430-2610, 26 Pins (http://www.molex.com/pdm_docs/sd/5024301410_sd.pdf), generated with kicad-footprint-generator +connector Molex SlimStack side entry +0 +26 +26 +Connector_Molex +Molex_SlimStack_502430-3010_2x15_P0.40mm_Vertical +Molex SlimStack Fine-Pitch SMT Board-to-Board Connectors, 502430-3010, 30 Pins (http://www.molex.com/pdm_docs/sd/5024301410_sd.pdf), generated with kicad-footprint-generator +connector Molex SlimStack side entry +0 +30 +30 +Connector_Molex +Molex_SlimStack_502430-3210_2x16_P0.40mm_Vertical +Molex SlimStack Fine-Pitch SMT Board-to-Board Connectors, 502430-3210, 32 Pins (http://www.molex.com/pdm_docs/sd/5024301410_sd.pdf), generated with kicad-footprint-generator +connector Molex SlimStack side entry +0 +32 +32 +Connector_Molex +Molex_SlimStack_502430-3410_2x17_P0.40mm_Vertical +Molex SlimStack Fine-Pitch SMT Board-to-Board Connectors, 502430-3410, 34 Pins (http://www.molex.com/pdm_docs/sd/5024301410_sd.pdf), generated with kicad-footprint-generator +connector Molex SlimStack side entry +0 +34 +34 +Connector_Molex +Molex_SlimStack_502430-4010_2x20_P0.40mm_Vertical +Molex SlimStack Fine-Pitch SMT Board-to-Board Connectors, 502430-4010, 40 Pins (http://www.molex.com/pdm_docs/sd/5024301410_sd.pdf), generated with kicad-footprint-generator +connector Molex SlimStack side entry +0 +40 +40 +Connector_Molex +Molex_SlimStack_502430-4410_2x22_P0.40mm_Vertical +Molex SlimStack Fine-Pitch SMT Board-to-Board Connectors, 502430-4410, 44 Pins (http://www.molex.com/pdm_docs/sd/5024301410_sd.pdf), generated with kicad-footprint-generator +connector Molex SlimStack side entry +0 +44 +44 +Connector_Molex +Molex_SlimStack_502430-5010_2x25_P0.40mm_Vertical +Molex SlimStack Fine-Pitch SMT Board-to-Board Connectors, 502430-5010, 50 Pins (http://www.molex.com/pdm_docs/sd/5024301410_sd.pdf), generated with kicad-footprint-generator +connector Molex SlimStack side entry +0 +50 +50 +Connector_Molex +Molex_SlimStack_502430-6010_2x30_P0.40mm_Vertical +Molex SlimStack Fine-Pitch SMT Board-to-Board Connectors, 502430-6010, 60 Pins (http://www.molex.com/pdm_docs/sd/5024301410_sd.pdf), generated with kicad-footprint-generator +connector Molex SlimStack side entry +0 +60 +60 +Connector_Molex +Molex_SlimStack_502430-6410_2x32_P0.40mm_Vertical +Molex SlimStack Fine-Pitch SMT Board-to-Board Connectors, 502430-6410, 64 Pins (http://www.molex.com/pdm_docs/sd/5024301410_sd.pdf), generated with kicad-footprint-generator +connector Molex SlimStack side entry +0 +64 +64 +Connector_Molex +Molex_SlimStack_502430-8010_2x40_P0.40mm_Vertical +Molex SlimStack Fine-Pitch SMT Board-to-Board Connectors, 502430-8010, 80 Pins (http://www.molex.com/pdm_docs/sd/5024301410_sd.pdf), generated with kicad-footprint-generator +connector Molex SlimStack side entry +0 +80 +80 +Connector_PCBEdge +4UCON_10156_2x40_P1.27mm_Socket_Horizontal +4UCON 10156 Card edge socket with 80 contacts (40 each side), through-hole, http://www.4uconnector.com/online/object/4udrawing/10156.pdf +4UCON 10156 Card edge socket with 80 contacts +0 +80 +80 +Connector_PCBEdge +BUS_AT +AT ISA 16 bits Bus Edge Connector +BUS ISA AT Edge connector +0 +98 +98 +Connector_PCBEdge +BUS_PCI +PCI bus Edge Connector +PCI bus Edge Connector +0 +240 +120 +Connector_PCBEdge +BUS_PCI_Express_Mini +Mini-PCI Express bus connector (https://s3.amazonaws.com/fit-iot/download/facet-cards/documents/PCI_Express_miniCard_Electromechanical_specs_rev1.2.pdf#page=11) +mini pcie +0 +54 +53 +Connector_PCBEdge +BUS_PCI_Express_Mini_Dual +Mini-PCI Express bus connector full size with dual clips (https://s3.amazonaws.com/fit-iot/download/facet-cards/documents/PCI_Express_miniCard_Electromechanical_specs_rev1.2.pdf#page=28) +mini pcie +0 +54 +53 +Connector_PCBEdge +BUS_PCI_Express_Mini_Full +Mini-PCI Express bus connector full size with clips (https://s3.amazonaws.com/fit-iot/download/facet-cards/documents/PCI_Express_miniCard_Electromechanical_specs_rev1.2.pdf#page=24) +mini pcie +0 +54 +53 +Connector_PCBEdge +BUS_PCI_Express_Mini_Half +Mini-PCI Express bus connector half size with clips (https://s3.amazonaws.com/fit-iot/download/facet-cards/documents/PCI_Express_miniCard_Electromechanical_specs_rev1.2.pdf#page=25) +mini pcie +0 +54 +53 +Connector_PCBEdge +BUS_PCIexpress_x1 +PCIexpress Bus Edge Connector x1 http://www.ritrontek.com/uploadfile/2016/1026/20161026105231124.pdf#page=70 +PCIe +0 +36 +36 +Connector_PCBEdge +BUS_PCIexpress_x4 +PCIexpress Bus Edge Connector x1 http://www.ritrontek.com/uploadfile/2016/1026/20161026105231124.pdf#page=70 +PCIe +0 +64 +64 +Connector_PCBEdge +BUS_PCIexpress_x8 +PCIexpress Bus Edge Connector x1 http://www.ritrontek.com/uploadfile/2016/1026/20161026105231124.pdf#page=70 +PCIe +0 +98 +98 +Connector_PCBEdge +BUS_PCIexpress_x16 +PCIexpress Bus Edge Connector x1 http://www.ritrontek.com/uploadfile/2016/1026/20161026105231124.pdf#page=70 +PCIe +0 +164 +164 +Connector_PCBEdge +Samtec_MECF-05-0_-L-DV_2x05_P1.27mm_Polarized_Edge +Highspeed card edge connector for PCB's with 05 contacts (polarized) +conn samtec card-edge high-speed +0 +8 +8 +Connector_PCBEdge +Samtec_MECF-05-0_-NP-L-DV_2x05_P1.27mm_Edge +Highspeed card edge connector for PCB's with 05 contacts (not polarized) +conn samtec card-edge high-speed +0 +10 +10 +Connector_PCBEdge +Samtec_MECF-05-01-L-DV-WT_2x05_P1.27mm_Polarized_Socket_Horizontal +Highspeed card edge connector for 1.6mm PCB's with 05 contacts (polarized) +conn samtec card-edge high-speed +0 +10 +8 +Connector_PCBEdge +Samtec_MECF-05-01-L-DV_2x05_P1.27mm_Polarized_Socket_Horizontal +Highspeed card edge connector for 1.6mm PCB's with 05 contacts (polarized) +conn samtec card-edge high-speed +0 +8 +8 +Connector_PCBEdge +Samtec_MECF-05-01-NP-L-DV-WT_2x05_P1.27mm_Socket_Horizontal +Highspeed card edge connector for 1.6mm PCB's with 05 contacts (not polarized) +conn samtec card-edge high-speed +0 +12 +10 +Connector_PCBEdge +Samtec_MECF-05-01-NP-L-DV_2x05_P1.27mm_Socket_Horizontal +Highspeed card edge connector for 1.6mm PCB's with 05 contacts (not polarized) +conn samtec card-edge high-speed +0 +10 +10 +Connector_PCBEdge +Samtec_MECF-05-02-L-DV-WT_2x05_P1.27mm_Polarized_Socket_Horizontal +Highspeed card edge connector for 2.4mm PCB's with 05 contacts (polarized) +conn samtec card-edge high-speed +0 +10 +8 +Connector_PCBEdge +Samtec_MECF-05-02-L-DV_2x05_P1.27mm_Polarized_Socket_Horizontal +Highspeed card edge connector for 2.4mm PCB's with 05 contacts (polarized) +conn samtec card-edge high-speed +0 +8 +8 +Connector_PCBEdge +Samtec_MECF-05-02-NP-L-DV-WT_2x05_P1.27mm_Socket_Horizontal +Highspeed card edge connector for 2.4mm PCB's with 05 contacts (not polarized) +conn samtec card-edge high-speed +0 +12 +10 +Connector_PCBEdge +Samtec_MECF-05-02-NP-L-DV_2x05_P1.27mm_Socket_Horizontal +Highspeed card edge connector for 2.4mm PCB's with 05 contacts (not polarized) +conn samtec card-edge high-speed +0 +10 +10 +Connector_PCBEdge +Samtec_MECF-08-0_-L-DV_2x08_P1.27mm_Polarized_Edge +Highspeed card edge connector for PCB's with 08 contacts (polarized) +conn samtec card-edge high-speed +0 +14 +14 +Connector_PCBEdge +Samtec_MECF-08-0_-NP-L-DV_2x08_P1.27mm_Edge +Highspeed card edge connector for PCB's with 08 contacts (not polarized) +conn samtec card-edge high-speed +0 +16 +16 +Connector_PCBEdge +Samtec_MECF-08-01-L-DV-WT_2x08_P1.27mm_Polarized_Socket_Horizontal +Highspeed card edge connector for 1.6mm PCB's with 08 contacts (polarized) +conn samtec card-edge high-speed +0 +16 +14 +Connector_PCBEdge +Samtec_MECF-08-01-L-DV_2x08_P1.27mm_Polarized_Socket_Horizontal +Highspeed card edge connector for 1.6mm PCB's with 08 contacts (polarized) +conn samtec card-edge high-speed +0 +14 +14 +Connector_PCBEdge +Samtec_MECF-08-01-NP-L-DV-WT_2x08_P1.27mm_Socket_Horizontal +Highspeed card edge connector for 1.6mm PCB's with 08 contacts (not polarized) +conn samtec card-edge high-speed +0 +18 +16 +Connector_PCBEdge +Samtec_MECF-08-01-NP-L-DV_2x08_P1.27mm_Socket_Horizontal +Highspeed card edge connector for 1.6mm PCB's with 08 contacts (not polarized) +conn samtec card-edge high-speed +0 +16 +16 +Connector_PCBEdge +Samtec_MECF-08-02-L-DV-WT_2x08_P1.27mm_Polarized_Socket_Horizontal +Highspeed card edge connector for 2.4mm PCB's with 08 contacts (polarized) +conn samtec card-edge high-speed +0 +16 +14 +Connector_PCBEdge +Samtec_MECF-08-02-L-DV_2x08_P1.27mm_Polarized_Socket_Horizontal +Highspeed card edge connector for 2.4mm PCB's with 08 contacts (polarized) +conn samtec card-edge high-speed +0 +14 +14 +Connector_PCBEdge +Samtec_MECF-08-02-NP-L-DV-WT_2x08_P1.27mm_Socket_Horizontal +Highspeed card edge connector for 2.4mm PCB's with 08 contacts (not polarized) +conn samtec card-edge high-speed +0 +18 +16 +Connector_PCBEdge +Samtec_MECF-08-02-NP-L-DV_2x08_P1.27mm_Socket_Horizontal +Highspeed card edge connector for 2.4mm PCB's with 08 contacts (not polarized) +conn samtec card-edge high-speed +0 +16 +16 +Connector_PCBEdge +Samtec_MECF-20-0_-L-DV_2x20_P1.27mm_Polarized_Edge +Highspeed card edge connector for PCB's with 20 contacts (polarized) +conn samtec card-edge high-speed +0 +38 +38 +Connector_PCBEdge +Samtec_MECF-20-0_-NP-L-DV_2x20_P1.27mm_Edge +Highspeed card edge connector for PCB's with 20 contacts (not polarized) +conn samtec card-edge high-speed +0 +40 +40 +Connector_PCBEdge +Samtec_MECF-20-01-L-DV-WT_2x20_P1.27mm_Polarized_Socket_Horizontal +Highspeed card edge connector for 1.6mm PCB's with 20 contacts (polarized) +conn samtec card-edge high-speed +0 +40 +38 +Connector_PCBEdge +Samtec_MECF-20-01-L-DV_2x20_P1.27mm_Polarized_Socket_Horizontal +Highspeed card edge connector for 1.6mm PCB's with 20 contacts (polarized) +conn samtec card-edge high-speed +0 +38 +38 +Connector_PCBEdge +Samtec_MECF-20-01-NP-L-DV-WT_2x20_P1.27mm_Socket_Horizontal +Highspeed card edge connector for 1.6mm PCB's with 20 contacts (not polarized) +conn samtec card-edge high-speed +0 +42 +40 +Connector_PCBEdge +Samtec_MECF-20-01-NP-L-DV_2x20_P1.27mm_Socket_Horizontal +Highspeed card edge connector for 1.6mm PCB's with 20 contacts (not polarized) +conn samtec card-edge high-speed +0 +40 +40 +Connector_PCBEdge +Samtec_MECF-20-02-L-DV-WT_2x20_P1.27mm_Polarized_Socket_Horizontal +Highspeed card edge connector for 2.4mm PCB's with 20 contacts (polarized) +conn samtec card-edge high-speed +0 +40 +38 +Connector_PCBEdge +Samtec_MECF-20-02-L-DV_2x20_P1.27mm_Polarized_Socket_Horizontal +Highspeed card edge connector for 2.4mm PCB's with 20 contacts (polarized) +conn samtec card-edge high-speed +0 +38 +38 +Connector_PCBEdge +Samtec_MECF-20-02-NP-L-DV-WT_2x20_P1.27mm_Socket_Horizontal +Highspeed card edge connector for 2.4mm PCB's with 20 contacts (not polarized) +conn samtec card-edge high-speed +0 +42 +40 +Connector_PCBEdge +Samtec_MECF-20-02-NP-L-DV_2x20_P1.27mm_Socket_Horizontal +Highspeed card edge connector for 2.4mm PCB's with 20 contacts (not polarized) +conn samtec card-edge high-speed +0 +40 +40 +Connector_PCBEdge +Samtec_MECF-30-0_-L-DV_2x30_P1.27mm_Polarized_Edge +Highspeed card edge connector for PCB's with 30 contacts (polarized) +conn samtec card-edge high-speed +0 +58 +58 +Connector_PCBEdge +Samtec_MECF-30-0_-NP-L-DV_2x30_P1.27mm_Edge +Highspeed card edge connector for PCB's with 30 contacts (not polarized) +conn samtec card-edge high-speed +0 +60 +60 +Connector_PCBEdge +Samtec_MECF-30-01-L-DV-WT_2x30_P1.27mm_Polarized_Socket_Horizontal +Highspeed card edge connector for 1.6mm PCB's with 30 contacts (polarized) +conn samtec card-edge high-speed +0 +60 +58 +Connector_PCBEdge +Samtec_MECF-30-01-L-DV_2x30_P1.27mm_Polarized_Socket_Horizontal +Highspeed card edge connector for 1.6mm PCB's with 30 contacts (polarized) +conn samtec card-edge high-speed +0 +58 +58 +Connector_PCBEdge +Samtec_MECF-30-01-NP-L-DV-WT_2x30_P1.27mm_Socket_Horizontal +Highspeed card edge connector for 1.6mm PCB's with 30 contacts (not polarized) +conn samtec card-edge high-speed +0 +62 +60 +Connector_PCBEdge +Samtec_MECF-30-01-NP-L-DV_2x30_P1.27mm_Socket_Horizontal +Highspeed card edge connector for 1.6mm PCB's with 30 contacts (not polarized) +conn samtec card-edge high-speed +0 +60 +60 +Connector_PCBEdge +Samtec_MECF-30-02-L-DV-WT_2x30_P1.27mm_Polarized_Socket_Horizontal +Highspeed card edge connector for 2.4mm PCB's with 30 contacts (polarized) +conn samtec card-edge high-speed +0 +60 +58 +Connector_PCBEdge +Samtec_MECF-30-02-L-DV_2x30_P1.27mm_Polarized_Socket_Horizontal +Highspeed card edge connector for 2.4mm PCB's with 30 contacts (polarized) +conn samtec card-edge high-speed +0 +58 +58 +Connector_PCBEdge +Samtec_MECF-30-02-NP-L-DV-WT_2x30_P1.27mm_Socket_Horizontal +Highspeed card edge connector for 2.4mm PCB's with 30 contacts (not polarized) +conn samtec card-edge high-speed +0 +62 +60 +Connector_PCBEdge +Samtec_MECF-30-02-NP-L-DV_2x30_P1.27mm_Socket_Horizontal +Highspeed card edge connector for 2.4mm PCB's with 30 contacts (not polarized) +conn samtec card-edge high-speed +0 +60 +60 +Connector_PCBEdge +Samtec_MECF-40-0_-L-DV_2x40_P1.27mm_Polarized_Edge +Highspeed card edge connector for PCB's with 40 contacts (polarized) +conn samtec card-edge high-speed +0 +78 +78 +Connector_PCBEdge +Samtec_MECF-40-0_-NP-L-DV_2x40_P1.27mm_Edge +Highspeed card edge connector for PCB's with 40 contacts (not polarized) +conn samtec card-edge high-speed +0 +80 +80 +Connector_PCBEdge +Samtec_MECF-40-01-L-DV-WT_2x40_P1.27mm_Polarized_Socket_Horizontal +Highspeed card edge connector for 1.6mm PCB's with 40 contacts (polarized) +conn samtec card-edge high-speed +0 +80 +78 +Connector_PCBEdge +Samtec_MECF-40-01-L-DV_2x40_P1.27mm_Polarized_Socket_Horizontal +Highspeed card edge connector for 1.6mm PCB's with 40 contacts (polarized) +conn samtec card-edge high-speed +0 +78 +78 +Connector_PCBEdge +Samtec_MECF-40-01-NP-L-DV-WT_2x40_P1.27mm_Socket_Horizontal +Highspeed card edge connector for 1.6mm PCB's with 40 contacts (not polarized) +conn samtec card-edge high-speed +0 +82 +80 +Connector_PCBEdge +Samtec_MECF-40-01-NP-L-DV_2x40_P1.27mm_Socket_Horizontal +Highspeed card edge connector for 1.6mm PCB's with 40 contacts (not polarized) +conn samtec card-edge high-speed +0 +80 +80 +Connector_PCBEdge +Samtec_MECF-40-02-L-DV-WT_2x40_P1.27mm_Polarized_Socket_Horizontal +Highspeed card edge connector for 2.4mm PCB's with 40 contacts (polarized) +conn samtec card-edge high-speed +0 +80 +78 +Connector_PCBEdge +Samtec_MECF-40-02-L-DV_2x40_P1.27mm_Polarized_Socket_Horizontal +Highspeed card edge connector for 2.4mm PCB's with 40 contacts (polarized) +conn samtec card-edge high-speed +0 +78 +78 +Connector_PCBEdge +Samtec_MECF-40-02-NP-L-DV-WT_2x40_P1.27mm_Socket_Horizontal +Highspeed card edge connector for 2.4mm PCB's with 40 contacts (not polarized) +conn samtec card-edge high-speed +0 +82 +80 +Connector_PCBEdge +Samtec_MECF-40-02-NP-L-DV_2x40_P1.27mm_Socket_Horizontal +Highspeed card edge connector for 2.4mm PCB's with 40 contacts (not polarized) +conn samtec card-edge high-speed +0 +80 +80 +Connector_PCBEdge +Samtec_MECF-50-0_-L-DV_2x50_P1.27mm_Polarized_Edge +Highspeed card edge connector for PCB's with 50 contacts (polarized) +conn samtec card-edge high-speed +0 +98 +98 +Connector_PCBEdge +Samtec_MECF-50-0_-NP-L-DV_2x50_P1.27mm_Edge +Highspeed card edge connector for PCB's with 50 contacts (not polarized) +conn samtec card-edge high-speed +0 +100 +100 +Connector_PCBEdge +Samtec_MECF-50-01-L-DV-WT_2x50_P1.27mm_Polarized_Socket_Horizontal +Highspeed card edge connector for 1.6mm PCB's with 50 contacts (polarized) +conn samtec card-edge high-speed +0 +100 +98 +Connector_PCBEdge +Samtec_MECF-50-01-L-DV_2x50_P1.27mm_Polarized_Socket_Horizontal +Highspeed card edge connector for 1.6mm PCB's with 50 contacts (polarized) +conn samtec card-edge high-speed +0 +98 +98 +Connector_PCBEdge +Samtec_MECF-50-01-NP-L-DV-WT_2x50_P1.27mm_Socket_Horizontal +Highspeed card edge connector for 1.6mm PCB's with 50 contacts (not polarized) +conn samtec card-edge high-speed +0 +102 +100 +Connector_PCBEdge +Samtec_MECF-50-01-NP-L-DV_2x50_P1.27mm_Socket_Horizontal +Highspeed card edge connector for 1.6mm PCB's with 50 contacts (not polarized) +conn samtec card-edge high-speed +0 +100 +100 +Connector_PCBEdge +Samtec_MECF-50-02-L-DV-WT_2x50_P1.27mm_Polarized_Socket_Horizontal +Highspeed card edge connector for 2.4mm PCB's with 50 contacts (polarized) +conn samtec card-edge high-speed +0 +100 +98 +Connector_PCBEdge +Samtec_MECF-50-02-L-DV_2x50_P1.27mm_Polarized_Socket_Horizontal +Highspeed card edge connector for 2.4mm PCB's with 50 contacts (polarized) +conn samtec card-edge high-speed +0 +98 +98 +Connector_PCBEdge +Samtec_MECF-50-02-NP-L-DV-WT_2x50_P1.27mm_Socket_Horizontal +Highspeed card edge connector for 2.4mm PCB's with 50 contacts (not polarized) +conn samtec card-edge high-speed +0 +102 +100 +Connector_PCBEdge +Samtec_MECF-50-02-NP-L-DV_2x50_P1.27mm_Socket_Horizontal +Highspeed card edge connector for 2.4mm PCB's with 50 contacts (not polarized) +conn samtec card-edge high-speed +0 +100 +100 +Connector_PCBEdge +Samtec_MECF-60-0_-L-DV_2x60_P1.27mm_Polarized_Edge +Highspeed card edge connector for PCB's with 60 contacts (polarized) +conn samtec card-edge high-speed +0 +116 +116 +Connector_PCBEdge +Samtec_MECF-60-0_-NP-L-DV_2x60_P1.27mm_Edge +Highspeed card edge connector for PCB's with 60 contacts (not polarized) +conn samtec card-edge high-speed +0 +120 +120 +Connector_PCBEdge +Samtec_MECF-60-01-L-DV-WT_2x60_P1.27mm_Polarized_Socket_Horizontal +Highspeed card edge connector for 1.6mm PCB's with 60 contacts (polarized) +conn samtec card-edge high-speed +0 +118 +116 +Connector_PCBEdge +Samtec_MECF-60-01-L-DV_2x60_P1.27mm_Polarized_Socket_Horizontal +Highspeed card edge connector for 1.6mm PCB's with 60 contacts (polarized) +conn samtec card-edge high-speed +0 +116 +116 +Connector_PCBEdge +Samtec_MECF-60-01-NP-L-DV-WT_2x60_P1.27mm_Socket_Horizontal +Highspeed card edge connector for 1.6mm PCB's with 60 contacts (not polarized) +conn samtec card-edge high-speed +0 +122 +120 +Connector_PCBEdge +Samtec_MECF-60-01-NP-L-DV_2x60_P1.27mm_Socket_Horizontal +Highspeed card edge connector for 1.6mm PCB's with 60 contacts (not polarized) +conn samtec card-edge high-speed +0 +120 +120 +Connector_PCBEdge +Samtec_MECF-60-02-L-DV-WT_2x60_P1.27mm_Polarized_Socket_Horizontal +Highspeed card edge connector for 2.4mm PCB's with 60 contacts (polarized) +conn samtec card-edge high-speed +0 +118 +116 +Connector_PCBEdge +Samtec_MECF-60-02-L-DV_2x60_P1.27mm_Polarized_Socket_Horizontal +Highspeed card edge connector for 2.4mm PCB's with 60 contacts (polarized) +conn samtec card-edge high-speed +0 +116 +116 +Connector_PCBEdge +Samtec_MECF-60-02-NP-L-DV-WT_2x60_P1.27mm_Socket_Horizontal +Highspeed card edge connector for 2.4mm PCB's with 60 contacts (not polarized) +conn samtec card-edge high-speed +0 +122 +120 +Connector_PCBEdge +Samtec_MECF-60-02-NP-L-DV_2x60_P1.27mm_Socket_Horizontal +Highspeed card edge connector for 2.4mm PCB's with 60 contacts (not polarized) +conn samtec card-edge high-speed +0 +120 +120 +Connector_PCBEdge +Samtec_MECF-70-0_-L-DV_2x70_P1.27mm_Polarized_Edge +Highspeed card edge connector for PCB's with 70 contacts (polarized) +conn samtec card-edge high-speed +0 +136 +136 +Connector_PCBEdge +Samtec_MECF-70-0_-NP-L-DV_2x70_P1.27mm_Edge +Highspeed card edge connector for PCB's with 70 contacts (not polarized) +conn samtec card-edge high-speed +0 +140 +140 +Connector_PCBEdge +Samtec_MECF-70-01-L-DV-WT_2x70_P1.27mm_Polarized_Socket_Horizontal +Highspeed card edge connector for 1.6mm PCB's with 70 contacts (polarized) +conn samtec card-edge high-speed +0 +138 +136 +Connector_PCBEdge +Samtec_MECF-70-01-L-DV_2x70_P1.27mm_Polarized_Socket_Horizontal +Highspeed card edge connector for 1.6mm PCB's with 70 contacts (polarized) +conn samtec card-edge high-speed +0 +136 +136 +Connector_PCBEdge +Samtec_MECF-70-01-NP-L-DV-WT_2x70_P1.27mm_Socket_Horizontal +Highspeed card edge connector for 1.6mm PCB's with 70 contacts (not polarized) +conn samtec card-edge high-speed +0 +142 +140 +Connector_PCBEdge +Samtec_MECF-70-01-NP-L-DV_2x70_P1.27mm_Socket_Horizontal +Highspeed card edge connector for 1.6mm PCB's with 70 contacts (not polarized) +conn samtec card-edge high-speed +0 +140 +140 +Connector_PCBEdge +Samtec_MECF-70-02-L-DV-WT_2x70_P1.27mm_Polarized_Socket_Horizontal +Highspeed card edge connector for 2.4mm PCB's with 70 contacts (polarized) +conn samtec card-edge high-speed +0 +138 +136 +Connector_PCBEdge +Samtec_MECF-70-02-L-DV_2x70_P1.27mm_Polarized_Socket_Horizontal +Highspeed card edge connector for 2.4mm PCB's with 70 contacts (polarized) +conn samtec card-edge high-speed +0 +136 +136 +Connector_PCBEdge +Samtec_MECF-70-02-NP-L-DV-WT_2x70_P1.27mm_Socket_Horizontal +Highspeed card edge connector for 2.4mm PCB's with 70 contacts (not polarized) +conn samtec card-edge high-speed +0 +142 +140 +Connector_PCBEdge +Samtec_MECF-70-02-NP-L-DV_2x70_P1.27mm_Socket_Horizontal +Highspeed card edge connector for 2.4mm PCB's with 70 contacts (not polarized) +conn samtec card-edge high-speed +0 +140 +140 +Connector_PCBEdge +molex_EDGELOCK_2-CKT +https://www.molex.com/pdm_docs/sd/2008900106_sd.pdf +Connector PCBEdge molex EDGELOCK +0 +2 +2 +Connector_PCBEdge +molex_EDGELOCK_4-CKT +https://www.molex.com/pdm_docs/sd/2008900106_sd.pdf +Connector PCBEdge molex EDGELOCK +0 +4 +4 +Connector_PCBEdge +molex_EDGELOCK_6-CKT +https://www.molex.com/pdm_docs/sd/2008900106_sd.pdf +Connector PCBEdge molex EDGELOCK +0 +6 +6 +Connector_PCBEdge +molex_EDGELOCK_8-CKT +https://www.molex.com/pdm_docs/sd/2008900106_sd.pdf +Connector PCBEdge molex EDGELOCK +0 +8 +8 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTBA_2,5_2-G-7,62_1x02_P7.62mm_Horizontal +Generic Phoenix Contact connector footprint for: GMSTBA_2,5/2-G-7,62; number of pins: 02; pin pitch: 7.62mm; Angled || order number: 1766233 12A 630V +phoenix_contact connector GMSTBA_01x02_G_7.62mm +0 +2 +2 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTBA_2,5_2-G_1x02_P7.50mm_Horizontal +Generic Phoenix Contact connector footprint for: GMSTBA_2,5/2-G; number of pins: 02; pin pitch: 7.50mm; Angled || order number: 1766343 12A 630V +phoenix_contact connector GMSTBA_01x02_G_7.50mm +0 +2 +2 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTBA_2,5_3-G-7,62_1x03_P7.62mm_Horizontal +Generic Phoenix Contact connector footprint for: GMSTBA_2,5/3-G-7,62; number of pins: 03; pin pitch: 7.62mm; Angled || order number: 1766246 12A 630V +phoenix_contact connector GMSTBA_01x03_G_7.62mm +0 +3 +3 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTBA_2,5_3-G_1x03_P7.50mm_Horizontal +Generic Phoenix Contact connector footprint for: GMSTBA_2,5/3-G; number of pins: 03; pin pitch: 7.50mm; Angled || order number: 1766356 12A 630V +phoenix_contact connector GMSTBA_01x03_G_7.50mm +0 +3 +3 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTBA_2,5_4-G-7,62_1x04_P7.62mm_Horizontal +Generic Phoenix Contact connector footprint for: GMSTBA_2,5/4-G-7,62; number of pins: 04; pin pitch: 7.62mm; Angled || order number: 1766259 12A 630V +phoenix_contact connector GMSTBA_01x04_G_7.62mm +0 +4 +4 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTBA_2,5_4-G_1x04_P7.50mm_Horizontal +Generic Phoenix Contact connector footprint for: GMSTBA_2,5/4-G; number of pins: 04; pin pitch: 7.50mm; Angled || order number: 1766369 12A 630V +phoenix_contact connector GMSTBA_01x04_G_7.50mm +0 +4 +4 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTBA_2,5_5-G-7,62_1x05_P7.62mm_Horizontal +Generic Phoenix Contact connector footprint for: GMSTBA_2,5/5-G-7,62; number of pins: 05; pin pitch: 7.62mm; Angled || order number: 1766262 12A 630V +phoenix_contact connector GMSTBA_01x05_G_7.62mm +0 +5 +5 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTBA_2,5_5-G_1x05_P7.50mm_Horizontal +Generic Phoenix Contact connector footprint for: GMSTBA_2,5/5-G; number of pins: 05; pin pitch: 7.50mm; Angled || order number: 1766372 12A 630V +phoenix_contact connector GMSTBA_01x05_G_7.50mm +0 +5 +5 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTBA_2,5_6-G-7,62_1x06_P7.62mm_Horizontal +Generic Phoenix Contact connector footprint for: GMSTBA_2,5/6-G-7,62; number of pins: 06; pin pitch: 7.62mm; Angled || order number: 1766275 12A 630V +phoenix_contact connector GMSTBA_01x06_G_7.62mm +0 +6 +6 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTBA_2,5_6-G_1x06_P7.50mm_Horizontal +Generic Phoenix Contact connector footprint for: GMSTBA_2,5/6-G; number of pins: 06; pin pitch: 7.50mm; Angled || order number: 1766385 12A 630V +phoenix_contact connector GMSTBA_01x06_G_7.50mm +0 +6 +6 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTBA_2,5_7-G-7,62_1x07_P7.62mm_Horizontal +Generic Phoenix Contact connector footprint for: GMSTBA_2,5/7-G-7,62; number of pins: 07; pin pitch: 7.62mm; Angled || order number: 1766288 12A 630V +phoenix_contact connector GMSTBA_01x07_G_7.62mm +0 +7 +7 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTBA_2,5_7-G_1x07_P7.50mm_Horizontal +Generic Phoenix Contact connector footprint for: GMSTBA_2,5/7-G; number of pins: 07; pin pitch: 7.50mm; Angled || order number: 1766398 12A 630V +phoenix_contact connector GMSTBA_01x07_G_7.50mm +0 +7 +7 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTBA_2,5_8-G-7,62_1x08_P7.62mm_Horizontal +Generic Phoenix Contact connector footprint for: GMSTBA_2,5/8-G-7,62; number of pins: 08; pin pitch: 7.62mm; Angled || order number: 1766291 12A 630V +phoenix_contact connector GMSTBA_01x08_G_7.62mm +0 +8 +8 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTBA_2,5_8-G_1x08_P7.50mm_Horizontal +Generic Phoenix Contact connector footprint for: GMSTBA_2,5/8-G; number of pins: 08; pin pitch: 7.50mm; Angled || order number: 1766408 12A 630V +phoenix_contact connector GMSTBA_01x08_G_7.50mm +0 +8 +8 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTBA_2,5_9-G-7,62_1x09_P7.62mm_Horizontal +Generic Phoenix Contact connector footprint for: GMSTBA_2,5/9-G-7,62; number of pins: 09; pin pitch: 7.62mm; Angled || order number: 1766301 12A 630V +phoenix_contact connector GMSTBA_01x09_G_7.62mm +0 +9 +9 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTBA_2,5_9-G_1x09_P7.50mm_Horizontal +Generic Phoenix Contact connector footprint for: GMSTBA_2,5/9-G; number of pins: 09; pin pitch: 7.50mm; Angled || order number: 1766411 12A 630V +phoenix_contact connector GMSTBA_01x09_G_7.50mm +0 +9 +9 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTBA_2,5_10-G-7,62_1x10_P7.62mm_Horizontal +Generic Phoenix Contact connector footprint for: GMSTBA_2,5/10-G-7,62; number of pins: 10; pin pitch: 7.62mm; Angled || order number: 1766314 12A 630V +phoenix_contact connector GMSTBA_01x10_G_7.62mm +0 +10 +10 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTBA_2,5_10-G_1x10_P7.50mm_Horizontal +Generic Phoenix Contact connector footprint for: GMSTBA_2,5/10-G; number of pins: 10; pin pitch: 7.50mm; Angled || order number: 1766424 12A 630V +phoenix_contact connector GMSTBA_01x10_G_7.50mm +0 +10 +10 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTBA_2,5_11-G-7,62_1x11_P7.62mm_Horizontal +Generic Phoenix Contact connector footprint for: GMSTBA_2,5/11-G-7,62; number of pins: 11; pin pitch: 7.62mm; Angled || order number: 1766327 12A 630V +phoenix_contact connector GMSTBA_01x11_G_7.62mm +0 +11 +11 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTBA_2,5_11-G_1x11_P7.50mm_Horizontal +Generic Phoenix Contact connector footprint for: GMSTBA_2,5/11-G; number of pins: 11; pin pitch: 7.50mm; Angled || order number: 1766437 12A 630V +phoenix_contact connector GMSTBA_01x11_G_7.50mm +0 +11 +11 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTBA_2,5_12-G-7,62_1x12_P7.62mm_Horizontal +Generic Phoenix Contact connector footprint for: GMSTBA_2,5/12-G-7,62; number of pins: 12; pin pitch: 7.62mm; Angled || order number: 1766330 12A 630V +phoenix_contact connector GMSTBA_01x12_G_7.62mm +0 +12 +12 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTBA_2,5_12-G_1x12_P7.50mm_Horizontal +Generic Phoenix Contact connector footprint for: GMSTBA_2,5/12-G; number of pins: 12; pin pitch: 7.50mm; Angled || order number: 1766440 12A 630V +phoenix_contact connector GMSTBA_01x12_G_7.50mm +0 +12 +12 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTBVA_2,5_2-G-7,62_1x02_P7.62mm_Vertical +Generic Phoenix Contact connector footprint for: GMSTBVA_2,5/2-G-7,62; number of pins: 02; pin pitch: 7.62mm; Vertical || order number: 1766770 12A 630V +phoenix_contact connector GMSTBVA_01x02_G_7.62mm +0 +2 +2 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTBVA_2,5_2-G_1x02_P7.50mm_Vertical +Generic Phoenix Contact connector footprint for: GMSTBVA_2,5/2-G; number of pins: 02; pin pitch: 7.50mm; Vertical || order number: 1766660 12A 630V +phoenix_contact connector GMSTBVA_01x02_G_7.50mm +0 +2 +2 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTBVA_2,5_3-G-7,62_1x03_P7.62mm_Vertical +Generic Phoenix Contact connector footprint for: GMSTBVA_2,5/3-G-7,62; number of pins: 03; pin pitch: 7.62mm; Vertical || order number: 1766783 12A 630V +phoenix_contact connector GMSTBVA_01x03_G_7.62mm +0 +3 +3 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTBVA_2,5_3-G_1x03_P7.50mm_Vertical +Generic Phoenix Contact connector footprint for: GMSTBVA_2,5/3-G; number of pins: 03; pin pitch: 7.50mm; Vertical || order number: 1766673 12A 630V +phoenix_contact connector GMSTBVA_01x03_G_7.50mm +0 +3 +3 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTBVA_2,5_4-G-7,62_1x04_P7.62mm_Vertical +Generic Phoenix Contact connector footprint for: GMSTBVA_2,5/4-G-7,62; number of pins: 04; pin pitch: 7.62mm; Vertical || order number: 1766796 12A 630V +phoenix_contact connector GMSTBVA_01x04_G_7.62mm +0 +4 +4 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTBVA_2,5_4-G_1x04_P7.50mm_Vertical +Generic Phoenix Contact connector footprint for: GMSTBVA_2,5/4-G; number of pins: 04; pin pitch: 7.50mm; Vertical || order number: 1766686 12A 630V +phoenix_contact connector GMSTBVA_01x04_G_7.50mm +0 +4 +4 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTBVA_2,5_5-G-7,62_1x05_P7.62mm_Vertical +Generic Phoenix Contact connector footprint for: GMSTBVA_2,5/5-G-7,62; number of pins: 05; pin pitch: 7.62mm; Vertical || order number: 1766806 12A 630V +phoenix_contact connector GMSTBVA_01x05_G_7.62mm +0 +5 +5 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTBVA_2,5_5-G_1x05_P7.50mm_Vertical +Generic Phoenix Contact connector footprint for: GMSTBVA_2,5/5-G; number of pins: 05; pin pitch: 7.50mm; Vertical || order number: 1766699 12A 630V +phoenix_contact connector GMSTBVA_01x05_G_7.50mm +0 +5 +5 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTBVA_2,5_6-G-7,62_1x06_P7.62mm_Vertical +Generic Phoenix Contact connector footprint for: GMSTBVA_2,5/6-G-7,62; number of pins: 06; pin pitch: 7.62mm; Vertical || order number: 1766819 12A 630V +phoenix_contact connector GMSTBVA_01x06_G_7.62mm +0 +6 +6 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTBVA_2,5_6-G_1x06_P7.50mm_Vertical +Generic Phoenix Contact connector footprint for: GMSTBVA_2,5/6-G; number of pins: 06; pin pitch: 7.50mm; Vertical || order number: 1766709 12A 630V +phoenix_contact connector GMSTBVA_01x06_G_7.50mm +0 +6 +6 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTBVA_2,5_7-G-7,62_1x07_P7.62mm_Vertical +Generic Phoenix Contact connector footprint for: GMSTBVA_2,5/7-G-7,62; number of pins: 07; pin pitch: 7.62mm; Vertical || order number: 1766822 12A 630V +phoenix_contact connector GMSTBVA_01x07_G_7.62mm +0 +7 +7 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTBVA_2,5_7-G_1x07_P7.50mm_Vertical +Generic Phoenix Contact connector footprint for: GMSTBVA_2,5/7-G; number of pins: 07; pin pitch: 7.50mm; Vertical || order number: 1766712 12A 630V +phoenix_contact connector GMSTBVA_01x07_G_7.50mm +0 +7 +7 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTBVA_2,5_8-G-7,62_1x08_P7.62mm_Vertical +Generic Phoenix Contact connector footprint for: GMSTBVA_2,5/8-G-7,62; number of pins: 08; pin pitch: 7.62mm; Vertical || order number: 1766835 12A 630V +phoenix_contact connector GMSTBVA_01x08_G_7.62mm +0 +8 +8 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTBVA_2,5_8-G_1x08_P7.50mm_Vertical +Generic Phoenix Contact connector footprint for: GMSTBVA_2,5/8-G; number of pins: 08; pin pitch: 7.50mm; Vertical || order number: 1766725 12A 630V +phoenix_contact connector GMSTBVA_01x08_G_7.50mm +0 +8 +8 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTBVA_2,5_9-G-7,62_1x09_P7.62mm_Vertical +Generic Phoenix Contact connector footprint for: GMSTBVA_2,5/9-G-7,62; number of pins: 09; pin pitch: 7.62mm; Vertical || order number: 1766848 12A 630V +phoenix_contact connector GMSTBVA_01x09_G_7.62mm +0 +9 +9 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTBVA_2,5_9-G_1x09_P7.50mm_Vertical +Generic Phoenix Contact connector footprint for: GMSTBVA_2,5/9-G; number of pins: 09; pin pitch: 7.50mm; Vertical || order number: 1766738 12A 630V +phoenix_contact connector GMSTBVA_01x09_G_7.50mm +0 +9 +9 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTBVA_2,5_10-G-7,62_1x10_P7.62mm_Vertical +Generic Phoenix Contact connector footprint for: GMSTBVA_2,5/10-G-7,62; number of pins: 10; pin pitch: 7.62mm; Vertical || order number: 1766851 12A 630V +phoenix_contact connector GMSTBVA_01x10_G_7.62mm +0 +10 +10 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTBVA_2,5_10-G_1x10_P7.50mm_Vertical +Generic Phoenix Contact connector footprint for: GMSTBVA_2,5/10-G; number of pins: 10; pin pitch: 7.50mm; Vertical || order number: 1766741 12A 630V +phoenix_contact connector GMSTBVA_01x10_G_7.50mm +0 +10 +10 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTBVA_2,5_11-G-7,62_1x11_P7.62mm_Vertical +Generic Phoenix Contact connector footprint for: GMSTBVA_2,5/11-G-7,62; number of pins: 11; pin pitch: 7.62mm; Vertical || order number: 1766864 12A 630V +phoenix_contact connector GMSTBVA_01x11_G_7.62mm +0 +11 +11 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTBVA_2,5_11-G_1x11_P7.50mm_Vertical +Generic Phoenix Contact connector footprint for: GMSTBVA_2,5/11-G; number of pins: 11; pin pitch: 7.50mm; Vertical || order number: 1766754 12A 630V +phoenix_contact connector GMSTBVA_01x11_G_7.50mm +0 +11 +11 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTBVA_2,5_12-G-7,62_1x12_P7.62mm_Vertical +Generic Phoenix Contact connector footprint for: GMSTBVA_2,5/12-G-7,62; number of pins: 12; pin pitch: 7.62mm; Vertical || order number: 1766877 12A 630V +phoenix_contact connector GMSTBVA_01x12_G_7.62mm +0 +12 +12 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTBVA_2,5_12-G_1x12_P7.50mm_Vertical +Generic Phoenix Contact connector footprint for: GMSTBVA_2,5/12-G; number of pins: 12; pin pitch: 7.50mm; Vertical || order number: 1766767 12A 630V +phoenix_contact connector GMSTBVA_01x12_G_7.50mm +0 +12 +12 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTBV_2,5_2-GF-7,62_1x02_P7.62mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: GMSTBV_2,5/2-GF-7,62; number of pins: 02; pin pitch: 7.62mm; Vertical; threaded flange || order number: 1829154 12A 630V +phoenix_contact connector GMSTBV_01x02_GF_7.62mm +0 +2 +2 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTBV_2,5_2-GF-7,62_1x02_P7.62mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: GMSTBV_2,5/2-GF-7,62; number of pins: 02; pin pitch: 7.62mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1829154 12A 630V +phoenix_contact connector GMSTBV_01x02_GF_7.62mm_MH +0 +2 +2 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTBV_2,5_3-GF-7,62_1x03_P7.62mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: GMSTBV_2,5/3-GF-7,62; number of pins: 03; pin pitch: 7.62mm; Vertical; threaded flange || order number: 1829167 12A 630V +phoenix_contact connector GMSTBV_01x03_GF_7.62mm +0 +3 +3 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTBV_2,5_3-GF-7,62_1x03_P7.62mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: GMSTBV_2,5/3-GF-7,62; number of pins: 03; pin pitch: 7.62mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1829167 12A 630V +phoenix_contact connector GMSTBV_01x03_GF_7.62mm_MH +0 +3 +3 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTBV_2,5_4-GF-7,62_1x04_P7.62mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: GMSTBV_2,5/4-GF-7,62; number of pins: 04; pin pitch: 7.62mm; Vertical; threaded flange || order number: 1829170 12A 630V +phoenix_contact connector GMSTBV_01x04_GF_7.62mm +0 +4 +4 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTBV_2,5_4-GF-7,62_1x04_P7.62mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: GMSTBV_2,5/4-GF-7,62; number of pins: 04; pin pitch: 7.62mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1829170 12A 630V +phoenix_contact connector GMSTBV_01x04_GF_7.62mm_MH +0 +4 +4 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTBV_2,5_5-GF-7,62_1x05_P7.62mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: GMSTBV_2,5/5-GF-7,62; number of pins: 05; pin pitch: 7.62mm; Vertical; threaded flange || order number: 1829183 12A 630V +phoenix_contact connector GMSTBV_01x05_GF_7.62mm +0 +5 +5 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTBV_2,5_5-GF-7,62_1x05_P7.62mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: GMSTBV_2,5/5-GF-7,62; number of pins: 05; pin pitch: 7.62mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1829183 12A 630V +phoenix_contact connector GMSTBV_01x05_GF_7.62mm_MH +0 +5 +5 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTBV_2,5_6-GF-7,62_1x06_P7.62mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: GMSTBV_2,5/6-GF-7,62; number of pins: 06; pin pitch: 7.62mm; Vertical; threaded flange || order number: 1829196 12A 630V +phoenix_contact connector GMSTBV_01x06_GF_7.62mm +0 +6 +6 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTBV_2,5_6-GF-7,62_1x06_P7.62mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: GMSTBV_2,5/6-GF-7,62; number of pins: 06; pin pitch: 7.62mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1829196 12A 630V +phoenix_contact connector GMSTBV_01x06_GF_7.62mm_MH +0 +6 +6 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTBV_2,5_7-GF-7,62_1x07_P7.62mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: GMSTBV_2,5/7-GF-7,62; number of pins: 07; pin pitch: 7.62mm; Vertical; threaded flange || order number: 1829206 12A 630V +phoenix_contact connector GMSTBV_01x07_GF_7.62mm +0 +7 +7 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTBV_2,5_7-GF-7,62_1x07_P7.62mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: GMSTBV_2,5/7-GF-7,62; number of pins: 07; pin pitch: 7.62mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1829206 12A 630V +phoenix_contact connector GMSTBV_01x07_GF_7.62mm_MH +0 +7 +7 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTBV_2,5_8-GF-7,62_1x08_P7.62mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: GMSTBV_2,5/8-GF-7,62; number of pins: 08; pin pitch: 7.62mm; Vertical; threaded flange || order number: 1829219 12A 630V +phoenix_contact connector GMSTBV_01x08_GF_7.62mm +0 +8 +8 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTBV_2,5_8-GF-7,62_1x08_P7.62mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: GMSTBV_2,5/8-GF-7,62; number of pins: 08; pin pitch: 7.62mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1829219 12A 630V +phoenix_contact connector GMSTBV_01x08_GF_7.62mm_MH +0 +8 +8 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTBV_2,5_9-GF-7,62_1x09_P7.62mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: GMSTBV_2,5/9-GF-7,62; number of pins: 09; pin pitch: 7.62mm; Vertical; threaded flange || order number: 1829222 12A 630V +phoenix_contact connector GMSTBV_01x09_GF_7.62mm +0 +9 +9 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTBV_2,5_9-GF-7,62_1x09_P7.62mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: GMSTBV_2,5/9-GF-7,62; number of pins: 09; pin pitch: 7.62mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1829222 12A 630V +phoenix_contact connector GMSTBV_01x09_GF_7.62mm_MH +0 +9 +9 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTBV_2,5_10-GF-7,62_1x10_P7.62mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: GMSTBV_2,5/10-GF-7,62; number of pins: 10; pin pitch: 7.62mm; Vertical; threaded flange || order number: 1829235 12A 630V +phoenix_contact connector GMSTBV_01x10_GF_7.62mm +0 +10 +10 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTBV_2,5_10-GF-7,62_1x10_P7.62mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: GMSTBV_2,5/10-GF-7,62; number of pins: 10; pin pitch: 7.62mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1829235 12A 630V +phoenix_contact connector GMSTBV_01x10_GF_7.62mm_MH +0 +10 +10 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTBV_2,5_11-GF-7,62_1x11_P7.62mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: GMSTBV_2,5/11-GF-7,62; number of pins: 11; pin pitch: 7.62mm; Vertical; threaded flange || order number: 1829248 12A 630V +phoenix_contact connector GMSTBV_01x11_GF_7.62mm +0 +11 +11 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTBV_2,5_11-GF-7,62_1x11_P7.62mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: GMSTBV_2,5/11-GF-7,62; number of pins: 11; pin pitch: 7.62mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1829248 12A 630V +phoenix_contact connector GMSTBV_01x11_GF_7.62mm_MH +0 +11 +11 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTBV_2,5_12-GF-7,62_1x12_P7.62mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: GMSTBV_2,5/12-GF-7,62; number of pins: 12; pin pitch: 7.62mm; Vertical; threaded flange || order number: 1829251 12A 630V +phoenix_contact connector GMSTBV_01x12_GF_7.62mm +0 +12 +12 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTBV_2,5_12-GF-7,62_1x12_P7.62mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: GMSTBV_2,5/12-GF-7,62; number of pins: 12; pin pitch: 7.62mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1829251 12A 630V +phoenix_contact connector GMSTBV_01x12_GF_7.62mm_MH +0 +12 +12 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTB_2,5_2-GF-7,62_1x02_P7.62mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: GMSTB_2,5/2-GF-7,62; number of pins: 02; pin pitch: 7.62mm; Angled; threaded flange || order number: 1806229 12A 630V +phoenix_contact connector GMSTB_01x02_GF_7.62mm +0 +2 +2 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTB_2,5_2-GF-7,62_1x02_P7.62mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: GMSTB_2,5/2-GF-7,62; number of pins: 02; pin pitch: 7.62mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1806229 12A 630V +phoenix_contact connector GMSTB_01x02_GF_7.62mm_MH +0 +2 +2 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTB_2,5_3-GF-7,62_1x03_P7.62mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: GMSTB_2,5/3-GF-7,62; number of pins: 03; pin pitch: 7.62mm; Angled; threaded flange || order number: 1806232 12A 630V +phoenix_contact connector GMSTB_01x03_GF_7.62mm +0 +3 +3 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTB_2,5_3-GF-7,62_1x03_P7.62mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: GMSTB_2,5/3-GF-7,62; number of pins: 03; pin pitch: 7.62mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1806232 12A 630V +phoenix_contact connector GMSTB_01x03_GF_7.62mm_MH +0 +3 +3 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTB_2,5_4-GF-7,62_1x04_P7.62mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: GMSTB_2,5/4-GF-7,62; number of pins: 04; pin pitch: 7.62mm; Angled; threaded flange || order number: 1806245 12A 630V +phoenix_contact connector GMSTB_01x04_GF_7.62mm +0 +4 +4 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTB_2,5_4-GF-7,62_1x04_P7.62mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: GMSTB_2,5/4-GF-7,62; number of pins: 04; pin pitch: 7.62mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1806245 12A 630V +phoenix_contact connector GMSTB_01x04_GF_7.62mm_MH +0 +4 +4 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTB_2,5_5-GF-7,62_1x05_P7.62mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: GMSTB_2,5/5-GF-7,62; number of pins: 05; pin pitch: 7.62mm; Angled; threaded flange || order number: 1806258 12A 630V +phoenix_contact connector GMSTB_01x05_GF_7.62mm +0 +5 +5 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTB_2,5_5-GF-7,62_1x05_P7.62mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: GMSTB_2,5/5-GF-7,62; number of pins: 05; pin pitch: 7.62mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1806258 12A 630V +phoenix_contact connector GMSTB_01x05_GF_7.62mm_MH +0 +5 +5 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTB_2,5_6-GF-7,62_1x06_P7.62mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: GMSTB_2,5/6-GF-7,62; number of pins: 06; pin pitch: 7.62mm; Angled; threaded flange || order number: 1806261 12A 630V +phoenix_contact connector GMSTB_01x06_GF_7.62mm +0 +6 +6 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTB_2,5_6-GF-7,62_1x06_P7.62mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: GMSTB_2,5/6-GF-7,62; number of pins: 06; pin pitch: 7.62mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1806261 12A 630V +phoenix_contact connector GMSTB_01x06_GF_7.62mm_MH +0 +6 +6 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTB_2,5_7-GF-7,62_1x07_P7.62mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: GMSTB_2,5/7-GF-7,62; number of pins: 07; pin pitch: 7.62mm; Angled; threaded flange || order number: 1806274 12A 630V +phoenix_contact connector GMSTB_01x07_GF_7.62mm +0 +7 +7 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTB_2,5_7-GF-7,62_1x07_P7.62mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: GMSTB_2,5/7-GF-7,62; number of pins: 07; pin pitch: 7.62mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1806274 12A 630V +phoenix_contact connector GMSTB_01x07_GF_7.62mm_MH +0 +7 +7 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTB_2,5_8-GF-7,62_1x08_P7.62mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: GMSTB_2,5/8-GF-7,62; number of pins: 08; pin pitch: 7.62mm; Angled; threaded flange || order number: 1806287 12A 630V +phoenix_contact connector GMSTB_01x08_GF_7.62mm +0 +8 +8 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTB_2,5_8-GF-7,62_1x08_P7.62mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: GMSTB_2,5/8-GF-7,62; number of pins: 08; pin pitch: 7.62mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1806287 12A 630V +phoenix_contact connector GMSTB_01x08_GF_7.62mm_MH +0 +8 +8 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTB_2,5_9-GF-7,62_1x09_P7.62mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: GMSTB_2,5/9-GF-7,62; number of pins: 09; pin pitch: 7.62mm; Angled; threaded flange || order number: 1806290 12A 630V +phoenix_contact connector GMSTB_01x09_GF_7.62mm +0 +9 +9 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTB_2,5_9-GF-7,62_1x09_P7.62mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: GMSTB_2,5/9-GF-7,62; number of pins: 09; pin pitch: 7.62mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1806290 12A 630V +phoenix_contact connector GMSTB_01x09_GF_7.62mm_MH +0 +9 +9 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTB_2,5_10-GF-7,62_1x10_P7.62mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: GMSTB_2,5/10-GF-7,62; number of pins: 10; pin pitch: 7.62mm; Angled; threaded flange || order number: 1806300 12A 630V +phoenix_contact connector GMSTB_01x10_GF_7.62mm +0 +10 +10 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTB_2,5_10-GF-7,62_1x10_P7.62mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: GMSTB_2,5/10-GF-7,62; number of pins: 10; pin pitch: 7.62mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1806300 12A 630V +phoenix_contact connector GMSTB_01x10_GF_7.62mm_MH +0 +10 +10 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTB_2,5_11-GF-7,62_1x11_P7.62mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: GMSTB_2,5/11-GF-7,62; number of pins: 11; pin pitch: 7.62mm; Angled; threaded flange || order number: 1806313 12A 630V +phoenix_contact connector GMSTB_01x11_GF_7.62mm +0 +11 +11 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTB_2,5_11-GF-7,62_1x11_P7.62mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: GMSTB_2,5/11-GF-7,62; number of pins: 11; pin pitch: 7.62mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1806313 12A 630V +phoenix_contact connector GMSTB_01x11_GF_7.62mm_MH +0 +11 +11 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTB_2,5_12-GF-7,62_1x12_P7.62mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: GMSTB_2,5/12-GF-7,62; number of pins: 12; pin pitch: 7.62mm; Angled; threaded flange || order number: 1806326 12A 630V +phoenix_contact connector GMSTB_01x12_GF_7.62mm +0 +12 +12 +Connector_Phoenix_GMSTB +PhoenixContact_GMSTB_2,5_12-GF-7,62_1x12_P7.62mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: GMSTB_2,5/12-GF-7,62; number of pins: 12; pin pitch: 7.62mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1806326 12A 630V +phoenix_contact connector GMSTB_01x12_GF_7.62mm_MH +0 +12 +12 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_2-G-3.5_1x02_P3.50mm_Vertical +Generic Phoenix Contact connector footprint for: MCV_1,5/2-G-3.5; number of pins: 02; pin pitch: 3.50mm; Vertical || order number: 1843606 8A 160V +phoenix_contact connector MCV_01x02_G_3.5mm +0 +2 +2 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_2-G-3.81_1x02_P3.81mm_Vertical +Generic Phoenix Contact connector footprint for: MCV_1,5/2-G-3.81; number of pins: 02; pin pitch: 3.81mm; Vertical || order number: 1803426 8A 160V +phoenix_contact connector MCV_01x02_G_3.81mm +0 +2 +2 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_2-GF-3.5_1x02_P3.50mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MCV_1,5/2-GF-3.5; number of pins: 02; pin pitch: 3.50mm; Vertical; threaded flange || order number: 1843224 8A 160V +phoenix_contact connector MCV_01x02_GF_3.5mm +0 +2 +2 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_2-GF-3.5_1x02_P3.50mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MCV_1,5/2-GF-3.5; number of pins: 02; pin pitch: 3.50mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1843224 8A 160V +phoenix_contact connector MCV_01x02_GF_3.5mm_MH +0 +2 +2 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_2-GF-3.81_1x02_P3.81mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MCV_1,5/2-GF-3.81; number of pins: 02; pin pitch: 3.81mm; Vertical; threaded flange || order number: 1830596 8A 160V +phoenix_contact connector MCV_01x02_GF_3.81mm +0 +2 +2 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_2-GF-3.81_1x02_P3.81mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MCV_1,5/2-GF-3.81; number of pins: 02; pin pitch: 3.81mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1830596 8A 160V +phoenix_contact connector MCV_01x02_GF_3.81mm_MH +0 +2 +2 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_3-G-3.5_1x03_P3.50mm_Vertical +Generic Phoenix Contact connector footprint for: MCV_1,5/3-G-3.5; number of pins: 03; pin pitch: 3.50mm; Vertical || order number: 1843619 8A 160V +phoenix_contact connector MCV_01x03_G_3.5mm +0 +3 +3 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_3-G-3.81_1x03_P3.81mm_Vertical +Generic Phoenix Contact connector footprint for: MCV_1,5/3-G-3.81; number of pins: 03; pin pitch: 3.81mm; Vertical || order number: 1803439 8A 160V +phoenix_contact connector MCV_01x03_G_3.81mm +0 +3 +3 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_3-GF-3.5_1x03_P3.50mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MCV_1,5/3-GF-3.5; number of pins: 03; pin pitch: 3.50mm; Vertical; threaded flange || order number: 1843237 8A 160V +phoenix_contact connector MCV_01x03_GF_3.5mm +0 +3 +3 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_3-GF-3.5_1x03_P3.50mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MCV_1,5/3-GF-3.5; number of pins: 03; pin pitch: 3.50mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1843237 8A 160V +phoenix_contact connector MCV_01x03_GF_3.5mm_MH +0 +3 +3 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_3-GF-3.81_1x03_P3.81mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MCV_1,5/3-GF-3.81; number of pins: 03; pin pitch: 3.81mm; Vertical; threaded flange || order number: 1830606 8A 160V +phoenix_contact connector MCV_01x03_GF_3.81mm +0 +3 +3 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_3-GF-3.81_1x03_P3.81mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MCV_1,5/3-GF-3.81; number of pins: 03; pin pitch: 3.81mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1830606 8A 160V +phoenix_contact connector MCV_01x03_GF_3.81mm_MH +0 +3 +3 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_4-G-3.5_1x04_P3.50mm_Vertical +Generic Phoenix Contact connector footprint for: MCV_1,5/4-G-3.5; number of pins: 04; pin pitch: 3.50mm; Vertical || order number: 1843622 8A 160V +phoenix_contact connector MCV_01x04_G_3.5mm +0 +4 +4 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_4-G-3.81_1x04_P3.81mm_Vertical +Generic Phoenix Contact connector footprint for: MCV_1,5/4-G-3.81; number of pins: 04; pin pitch: 3.81mm; Vertical || order number: 1803442 8A 160V +phoenix_contact connector MCV_01x04_G_3.81mm +0 +4 +4 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_4-GF-3.5_1x04_P3.50mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MCV_1,5/4-GF-3.5; number of pins: 04; pin pitch: 3.50mm; Vertical; threaded flange || order number: 1843240 8A 160V +phoenix_contact connector MCV_01x04_GF_3.5mm +0 +4 +4 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_4-GF-3.5_1x04_P3.50mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MCV_1,5/4-GF-3.5; number of pins: 04; pin pitch: 3.50mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1843240 8A 160V +phoenix_contact connector MCV_01x04_GF_3.5mm_MH +0 +4 +4 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_4-GF-3.81_1x04_P3.81mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MCV_1,5/4-GF-3.81; number of pins: 04; pin pitch: 3.81mm; Vertical; threaded flange || order number: 1830619 8A 160V +phoenix_contact connector MCV_01x04_GF_3.81mm +0 +4 +4 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_4-GF-3.81_1x04_P3.81mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MCV_1,5/4-GF-3.81; number of pins: 04; pin pitch: 3.81mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1830619 8A 160V +phoenix_contact connector MCV_01x04_GF_3.81mm_MH +0 +4 +4 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_5-G-3.5_1x05_P3.50mm_Vertical +Generic Phoenix Contact connector footprint for: MCV_1,5/5-G-3.5; number of pins: 05; pin pitch: 3.50mm; Vertical || order number: 1843635 8A 160V +phoenix_contact connector MCV_01x05_G_3.5mm +0 +5 +5 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_5-G-3.81_1x05_P3.81mm_Vertical +Generic Phoenix Contact connector footprint for: MCV_1,5/5-G-3.81; number of pins: 05; pin pitch: 3.81mm; Vertical || order number: 1803455 8A 160V +phoenix_contact connector MCV_01x05_G_3.81mm +0 +5 +5 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_5-GF-3.5_1x05_P3.50mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MCV_1,5/5-GF-3.5; number of pins: 05; pin pitch: 3.50mm; Vertical; threaded flange || order number: 1843253 8A 160V +phoenix_contact connector MCV_01x05_GF_3.5mm +0 +5 +5 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_5-GF-3.5_1x05_P3.50mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MCV_1,5/5-GF-3.5; number of pins: 05; pin pitch: 3.50mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1843253 8A 160V +phoenix_contact connector MCV_01x05_GF_3.5mm_MH +0 +5 +5 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_5-GF-3.81_1x05_P3.81mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MCV_1,5/5-GF-3.81; number of pins: 05; pin pitch: 3.81mm; Vertical; threaded flange || order number: 1830622 8A 160V +phoenix_contact connector MCV_01x05_GF_3.81mm +0 +5 +5 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_5-GF-3.81_1x05_P3.81mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MCV_1,5/5-GF-3.81; number of pins: 05; pin pitch: 3.81mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1830622 8A 160V +phoenix_contact connector MCV_01x05_GF_3.81mm_MH +0 +5 +5 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_6-G-3.5_1x06_P3.50mm_Vertical +Generic Phoenix Contact connector footprint for: MCV_1,5/6-G-3.5; number of pins: 06; pin pitch: 3.50mm; Vertical || order number: 1843648 8A 160V +phoenix_contact connector MCV_01x06_G_3.5mm +0 +6 +6 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_6-G-3.81_1x06_P3.81mm_Vertical +Generic Phoenix Contact connector footprint for: MCV_1,5/6-G-3.81; number of pins: 06; pin pitch: 3.81mm; Vertical || order number: 1803468 8A 160V +phoenix_contact connector MCV_01x06_G_3.81mm +0 +6 +6 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_6-GF-3.5_1x06_P3.50mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MCV_1,5/6-GF-3.5; number of pins: 06; pin pitch: 3.50mm; Vertical; threaded flange || order number: 1843266 8A 160V +phoenix_contact connector MCV_01x06_GF_3.5mm +0 +6 +6 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_6-GF-3.5_1x06_P3.50mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MCV_1,5/6-GF-3.5; number of pins: 06; pin pitch: 3.50mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1843266 8A 160V +phoenix_contact connector MCV_01x06_GF_3.5mm_MH +0 +6 +6 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_6-GF-3.81_1x06_P3.81mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MCV_1,5/6-GF-3.81; number of pins: 06; pin pitch: 3.81mm; Vertical; threaded flange || order number: 1830635 8A 160V +phoenix_contact connector MCV_01x06_GF_3.81mm +0 +6 +6 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_6-GF-3.81_1x06_P3.81mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MCV_1,5/6-GF-3.81; number of pins: 06; pin pitch: 3.81mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1830635 8A 160V +phoenix_contact connector MCV_01x06_GF_3.81mm_MH +0 +6 +6 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_7-G-3.5_1x07_P3.50mm_Vertical +Generic Phoenix Contact connector footprint for: MCV_1,5/7-G-3.5; number of pins: 07; pin pitch: 3.50mm; Vertical || order number: 1843651 8A 160V +phoenix_contact connector MCV_01x07_G_3.5mm +0 +7 +7 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_7-G-3.81_1x07_P3.81mm_Vertical +Generic Phoenix Contact connector footprint for: MCV_1,5/7-G-3.81; number of pins: 07; pin pitch: 3.81mm; Vertical || order number: 1803471 8A 160V +phoenix_contact connector MCV_01x07_G_3.81mm +0 +7 +7 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_7-GF-3.5_1x07_P3.50mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MCV_1,5/7-GF-3.5; number of pins: 07; pin pitch: 3.50mm; Vertical; threaded flange || order number: 1843279 8A 160V +phoenix_contact connector MCV_01x07_GF_3.5mm +0 +7 +7 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_7-GF-3.5_1x07_P3.50mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MCV_1,5/7-GF-3.5; number of pins: 07; pin pitch: 3.50mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1843279 8A 160V +phoenix_contact connector MCV_01x07_GF_3.5mm_MH +0 +7 +7 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_7-GF-3.81_1x07_P3.81mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MCV_1,5/7-GF-3.81; number of pins: 07; pin pitch: 3.81mm; Vertical; threaded flange || order number: 1830648 8A 160V +phoenix_contact connector MCV_01x07_GF_3.81mm +0 +7 +7 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_7-GF-3.81_1x07_P3.81mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MCV_1,5/7-GF-3.81; number of pins: 07; pin pitch: 3.81mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1830648 8A 160V +phoenix_contact connector MCV_01x07_GF_3.81mm_MH +0 +7 +7 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_8-G-3.5_1x08_P3.50mm_Vertical +Generic Phoenix Contact connector footprint for: MCV_1,5/8-G-3.5; number of pins: 08; pin pitch: 3.50mm; Vertical || order number: 1843664 8A 160V +phoenix_contact connector MCV_01x08_G_3.5mm +0 +8 +8 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_8-G-3.81_1x08_P3.81mm_Vertical +Generic Phoenix Contact connector footprint for: MCV_1,5/8-G-3.81; number of pins: 08; pin pitch: 3.81mm; Vertical || order number: 1803484 8A 160V +phoenix_contact connector MCV_01x08_G_3.81mm +0 +8 +8 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_8-GF-3.5_1x08_P3.50mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MCV_1,5/8-GF-3.5; number of pins: 08; pin pitch: 3.50mm; Vertical; threaded flange || order number: 1843282 8A 160V +phoenix_contact connector MCV_01x08_GF_3.5mm +0 +8 +8 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_8-GF-3.5_1x08_P3.50mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MCV_1,5/8-GF-3.5; number of pins: 08; pin pitch: 3.50mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1843282 8A 160V +phoenix_contact connector MCV_01x08_GF_3.5mm_MH +0 +8 +8 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_8-GF-3.81_1x08_P3.81mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MCV_1,5/8-GF-3.81; number of pins: 08; pin pitch: 3.81mm; Vertical; threaded flange || order number: 1830651 8A 160V +phoenix_contact connector MCV_01x08_GF_3.81mm +0 +8 +8 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_8-GF-3.81_1x08_P3.81mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MCV_1,5/8-GF-3.81; number of pins: 08; pin pitch: 3.81mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1830651 8A 160V +phoenix_contact connector MCV_01x08_GF_3.81mm_MH +0 +8 +8 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_9-G-3.5_1x09_P3.50mm_Vertical +Generic Phoenix Contact connector footprint for: MCV_1,5/9-G-3.5; number of pins: 09; pin pitch: 3.50mm; Vertical || order number: 1843677 8A 160V +phoenix_contact connector MCV_01x09_G_3.5mm +0 +9 +9 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_9-G-3.81_1x09_P3.81mm_Vertical +Generic Phoenix Contact connector footprint for: MCV_1,5/9-G-3.81; number of pins: 09; pin pitch: 3.81mm; Vertical || order number: 1803497 8A 160V +phoenix_contact connector MCV_01x09_G_3.81mm +0 +9 +9 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_9-GF-3.5_1x09_P3.50mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MCV_1,5/9-GF-3.5; number of pins: 09; pin pitch: 3.50mm; Vertical; threaded flange || order number: 1843295 8A 160V +phoenix_contact connector MCV_01x09_GF_3.5mm +0 +9 +9 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_9-GF-3.5_1x09_P3.50mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MCV_1,5/9-GF-3.5; number of pins: 09; pin pitch: 3.50mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1843295 8A 160V +phoenix_contact connector MCV_01x09_GF_3.5mm_MH +0 +9 +9 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_9-GF-3.81_1x09_P3.81mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MCV_1,5/9-GF-3.81; number of pins: 09; pin pitch: 3.81mm; Vertical; threaded flange || order number: 1830664 8A 160V +phoenix_contact connector MCV_01x09_GF_3.81mm +0 +9 +9 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_9-GF-3.81_1x09_P3.81mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MCV_1,5/9-GF-3.81; number of pins: 09; pin pitch: 3.81mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1830664 8A 160V +phoenix_contact connector MCV_01x09_GF_3.81mm_MH +0 +9 +9 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_10-G-3.5_1x10_P3.50mm_Vertical +Generic Phoenix Contact connector footprint for: MCV_1,5/10-G-3.5; number of pins: 10; pin pitch: 3.50mm; Vertical || order number: 1843680 8A 160V +phoenix_contact connector MCV_01x10_G_3.5mm +0 +10 +10 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_10-G-3.81_1x10_P3.81mm_Vertical +Generic Phoenix Contact connector footprint for: MCV_1,5/10-G-3.81; number of pins: 10; pin pitch: 3.81mm; Vertical || order number: 1803507 8A 160V +phoenix_contact connector MCV_01x10_G_3.81mm +0 +10 +10 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_10-GF-3.5_1x10_P3.50mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MCV_1,5/10-GF-3.5; number of pins: 10; pin pitch: 3.50mm; Vertical; threaded flange || order number: 1843305 8A 160V +phoenix_contact connector MCV_01x10_GF_3.5mm +0 +10 +10 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_10-GF-3.5_1x10_P3.50mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MCV_1,5/10-GF-3.5; number of pins: 10; pin pitch: 3.50mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1843305 8A 160V +phoenix_contact connector MCV_01x10_GF_3.5mm_MH +0 +10 +10 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_10-GF-3.81_1x10_P3.81mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MCV_1,5/10-GF-3.81; number of pins: 10; pin pitch: 3.81mm; Vertical; threaded flange || order number: 1830677 8A 160V +phoenix_contact connector MCV_01x10_GF_3.81mm +0 +10 +10 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_10-GF-3.81_1x10_P3.81mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MCV_1,5/10-GF-3.81; number of pins: 10; pin pitch: 3.81mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1830677 8A 160V +phoenix_contact connector MCV_01x10_GF_3.81mm_MH +0 +10 +10 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_11-G-3.5_1x11_P3.50mm_Vertical +Generic Phoenix Contact connector footprint for: MCV_1,5/11-G-3.5; number of pins: 11; pin pitch: 3.50mm; Vertical || order number: 1843693 8A 160V +phoenix_contact connector MCV_01x11_G_3.5mm +0 +11 +11 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_11-G-3.81_1x11_P3.81mm_Vertical +Generic Phoenix Contact connector footprint for: MCV_1,5/11-G-3.81; number of pins: 11; pin pitch: 3.81mm; Vertical || order number: 1803510 8A 160V +phoenix_contact connector MCV_01x11_G_3.81mm +0 +11 +11 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_11-GF-3.5_1x11_P3.50mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MCV_1,5/11-GF-3.5; number of pins: 11; pin pitch: 3.50mm; Vertical; threaded flange || order number: 1843318 8A 160V +phoenix_contact connector MCV_01x11_GF_3.5mm +0 +11 +11 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_11-GF-3.5_1x11_P3.50mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MCV_1,5/11-GF-3.5; number of pins: 11; pin pitch: 3.50mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1843318 8A 160V +phoenix_contact connector MCV_01x11_GF_3.5mm_MH +0 +11 +11 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_11-GF-3.81_1x11_P3.81mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MCV_1,5/11-GF-3.81; number of pins: 11; pin pitch: 3.81mm; Vertical; threaded flange || order number: 1830680 8A 160V +phoenix_contact connector MCV_01x11_GF_3.81mm +0 +11 +11 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_11-GF-3.81_1x11_P3.81mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MCV_1,5/11-GF-3.81; number of pins: 11; pin pitch: 3.81mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1830680 8A 160V +phoenix_contact connector MCV_01x11_GF_3.81mm_MH +0 +11 +11 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_12-G-3.5_1x12_P3.50mm_Vertical +Generic Phoenix Contact connector footprint for: MCV_1,5/12-G-3.5; number of pins: 12; pin pitch: 3.50mm; Vertical || order number: 1843703 8A 160V +phoenix_contact connector MCV_01x12_G_3.5mm +0 +12 +12 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_12-G-3.81_1x12_P3.81mm_Vertical +Generic Phoenix Contact connector footprint for: MCV_1,5/12-G-3.81; number of pins: 12; pin pitch: 3.81mm; Vertical || order number: 1803523 8A 160V +phoenix_contact connector MCV_01x12_G_3.81mm +0 +12 +12 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_12-GF-3.5_1x12_P3.50mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MCV_1,5/12-GF-3.5; number of pins: 12; pin pitch: 3.50mm; Vertical; threaded flange || order number: 1843321 8A 160V +phoenix_contact connector MCV_01x12_GF_3.5mm +0 +12 +12 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_12-GF-3.5_1x12_P3.50mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MCV_1,5/12-GF-3.5; number of pins: 12; pin pitch: 3.50mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1843321 8A 160V +phoenix_contact connector MCV_01x12_GF_3.5mm_MH +0 +12 +12 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_12-GF-3.81_1x12_P3.81mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MCV_1,5/12-GF-3.81; number of pins: 12; pin pitch: 3.81mm; Vertical; threaded flange || order number: 1830693 8A 160V +phoenix_contact connector MCV_01x12_GF_3.81mm +0 +12 +12 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_12-GF-3.81_1x12_P3.81mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MCV_1,5/12-GF-3.81; number of pins: 12; pin pitch: 3.81mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1830693 8A 160V +phoenix_contact connector MCV_01x12_GF_3.81mm_MH +0 +12 +12 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_13-G-3.5_1x13_P3.50mm_Vertical +Generic Phoenix Contact connector footprint for: MCV_1,5/13-G-3.5; number of pins: 13; pin pitch: 3.50mm; Vertical || order number: 1843716 8A 160V +phoenix_contact connector MCV_01x13_G_3.5mm +0 +13 +13 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_13-G-3.81_1x13_P3.81mm_Vertical +Generic Phoenix Contact connector footprint for: MCV_1,5/13-G-3.81; number of pins: 13; pin pitch: 3.81mm; Vertical || order number: 1803536 8A 160V +phoenix_contact connector MCV_01x13_G_3.81mm +0 +13 +13 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_13-GF-3.5_1x13_P3.50mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MCV_1,5/13-GF-3.5; number of pins: 13; pin pitch: 3.50mm; Vertical; threaded flange || order number: 1843334 8A 160V +phoenix_contact connector MCV_01x13_GF_3.5mm +0 +13 +13 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_13-GF-3.5_1x13_P3.50mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MCV_1,5/13-GF-3.5; number of pins: 13; pin pitch: 3.50mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1843334 8A 160V +phoenix_contact connector MCV_01x13_GF_3.5mm_MH +0 +13 +13 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_13-GF-3.81_1x13_P3.81mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MCV_1,5/13-GF-3.81; number of pins: 13; pin pitch: 3.81mm; Vertical; threaded flange || order number: 1830703 8A 160V +phoenix_contact connector MCV_01x13_GF_3.81mm +0 +13 +13 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_13-GF-3.81_1x13_P3.81mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MCV_1,5/13-GF-3.81; number of pins: 13; pin pitch: 3.81mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1830703 8A 160V +phoenix_contact connector MCV_01x13_GF_3.81mm_MH +0 +13 +13 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_14-G-3.5_1x14_P3.50mm_Vertical +Generic Phoenix Contact connector footprint for: MCV_1,5/14-G-3.5; number of pins: 14; pin pitch: 3.50mm; Vertical || order number: 1843729 8A 160V +phoenix_contact connector MCV_01x14_G_3.5mm +0 +14 +14 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_14-G-3.81_1x14_P3.81mm_Vertical +Generic Phoenix Contact connector footprint for: MCV_1,5/14-G-3.81; number of pins: 14; pin pitch: 3.81mm; Vertical || order number: 1803549 8A 160V +phoenix_contact connector MCV_01x14_G_3.81mm +0 +14 +14 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_14-GF-3.5_1x14_P3.50mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MCV_1,5/14-GF-3.5; number of pins: 14; pin pitch: 3.50mm; Vertical; threaded flange || order number: 1843347 8A 160V +phoenix_contact connector MCV_01x14_GF_3.5mm +0 +14 +14 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_14-GF-3.5_1x14_P3.50mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MCV_1,5/14-GF-3.5; number of pins: 14; pin pitch: 3.50mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1843347 8A 160V +phoenix_contact connector MCV_01x14_GF_3.5mm_MH +0 +14 +14 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_14-GF-3.81_1x14_P3.81mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MCV_1,5/14-GF-3.81; number of pins: 14; pin pitch: 3.81mm; Vertical; threaded flange || order number: 1830716 8A 160V +phoenix_contact connector MCV_01x14_GF_3.81mm +0 +14 +14 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_14-GF-3.81_1x14_P3.81mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MCV_1,5/14-GF-3.81; number of pins: 14; pin pitch: 3.81mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1830716 8A 160V +phoenix_contact connector MCV_01x14_GF_3.81mm_MH +0 +14 +14 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_15-G-3.5_1x15_P3.50mm_Vertical +Generic Phoenix Contact connector footprint for: MCV_1,5/15-G-3.5; number of pins: 15; pin pitch: 3.50mm; Vertical || order number: 1843732 8A 160V +phoenix_contact connector MCV_01x15_G_3.5mm +0 +15 +15 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_15-G-3.81_1x15_P3.81mm_Vertical +Generic Phoenix Contact connector footprint for: MCV_1,5/15-G-3.81; number of pins: 15; pin pitch: 3.81mm; Vertical || order number: 1803552 8A 160V +phoenix_contact connector MCV_01x15_G_3.81mm +0 +15 +15 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_15-GF-3.5_1x15_P3.50mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MCV_1,5/15-GF-3.5; number of pins: 15; pin pitch: 3.50mm; Vertical; threaded flange || order number: 1843350 8A 160V +phoenix_contact connector MCV_01x15_GF_3.5mm +0 +15 +15 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_15-GF-3.5_1x15_P3.50mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MCV_1,5/15-GF-3.5; number of pins: 15; pin pitch: 3.50mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1843350 8A 160V +phoenix_contact connector MCV_01x15_GF_3.5mm_MH +0 +15 +15 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_15-GF-3.81_1x15_P3.81mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MCV_1,5/15-GF-3.81; number of pins: 15; pin pitch: 3.81mm; Vertical; threaded flange || order number: 1830729 8A 160V +phoenix_contact connector MCV_01x15_GF_3.81mm +0 +15 +15 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_15-GF-3.81_1x15_P3.81mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MCV_1,5/15-GF-3.81; number of pins: 15; pin pitch: 3.81mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1830729 8A 160V +phoenix_contact connector MCV_01x15_GF_3.81mm_MH +0 +15 +15 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_16-G-3.5_1x16_P3.50mm_Vertical +Generic Phoenix Contact connector footprint for: MCV_1,5/16-G-3.5; number of pins: 16; pin pitch: 3.50mm; Vertical || order number: 1843745 8A 160V +phoenix_contact connector MCV_01x16_G_3.5mm +0 +16 +16 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_16-G-3.81_1x16_P3.81mm_Vertical +Generic Phoenix Contact connector footprint for: MCV_1,5/16-G-3.81; number of pins: 16; pin pitch: 3.81mm; Vertical || order number: 1803565 8A 160V +phoenix_contact connector MCV_01x16_G_3.81mm +0 +16 +16 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_16-GF-3.5_1x16_P3.50mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MCV_1,5/16-GF-3.5; number of pins: 16; pin pitch: 3.50mm; Vertical; threaded flange || order number: 1843363 8A 160V +phoenix_contact connector MCV_01x16_GF_3.5mm +0 +16 +16 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_16-GF-3.5_1x16_P3.50mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MCV_1,5/16-GF-3.5; number of pins: 16; pin pitch: 3.50mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1843363 8A 160V +phoenix_contact connector MCV_01x16_GF_3.5mm_MH +0 +16 +16 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_16-GF-3.81_1x16_P3.81mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MCV_1,5/16-GF-3.81; number of pins: 16; pin pitch: 3.81mm; Vertical; threaded flange || order number: 1830732 8A 160V +phoenix_contact connector MCV_01x16_GF_3.81mm +0 +16 +16 +Connector_Phoenix_MC +PhoenixContact_MCV_1,5_16-GF-3.81_1x16_P3.81mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MCV_1,5/16-GF-3.81; number of pins: 16; pin pitch: 3.81mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1830732 8A 160V +phoenix_contact connector MCV_01x16_GF_3.81mm_MH +0 +16 +16 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_2-G-3.5_1x02_P3.50mm_Horizontal +Generic Phoenix Contact connector footprint for: MC_1,5/2-G-3.5; number of pins: 02; pin pitch: 3.50mm; Angled || order number: 1844210 8A 160V +phoenix_contact connector MC_01x02_G_3.5mm +0 +2 +2 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_2-G-3.81_1x02_P3.81mm_Horizontal +Generic Phoenix Contact connector footprint for: MC_1,5/2-G-3.81; number of pins: 02; pin pitch: 3.81mm; Angled || order number: 1803277 8A 160V +phoenix_contact connector MC_01x02_G_3.81mm +0 +2 +2 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_2-GF-3.5_1x02_P3.50mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MC_1,5/2-GF-3.5; number of pins: 02; pin pitch: 3.50mm; Angled; threaded flange || order number: 1843790 8A 160V +phoenix_contact connector MC_01x02_GF_3.5mm +0 +2 +2 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_2-GF-3.5_1x02_P3.50mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MC_1,5/2-GF-3.5; number of pins: 02; pin pitch: 3.50mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1843790 8A 160V +phoenix_contact connector MC_01x02_GF_3.5mm_MH +0 +2 +2 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_2-GF-3.81_1x02_P3.81mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MC_1,5/2-GF-3.81; number of pins: 02; pin pitch: 3.81mm; Angled; threaded flange || order number: 1827868 8A 160V +phoenix_contact connector MC_01x02_GF_3.81mm +0 +2 +2 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_2-GF-3.81_1x02_P3.81mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MC_1,5/2-GF-3.81; number of pins: 02; pin pitch: 3.81mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1827868 8A 160V +phoenix_contact connector MC_01x02_GF_3.81mm_MH +0 +2 +2 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_3-G-3.5_1x03_P3.50mm_Horizontal +Generic Phoenix Contact connector footprint for: MC_1,5/3-G-3.5; number of pins: 03; pin pitch: 3.50mm; Angled || order number: 1844223 8A 160V +phoenix_contact connector MC_01x03_G_3.5mm +0 +3 +3 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_3-G-3.81_1x03_P3.81mm_Horizontal +Generic Phoenix Contact connector footprint for: MC_1,5/3-G-3.81; number of pins: 03; pin pitch: 3.81mm; Angled || order number: 1803280 8A 160V +phoenix_contact connector MC_01x03_G_3.81mm +0 +3 +3 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_3-GF-3.5_1x03_P3.50mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MC_1,5/3-GF-3.5; number of pins: 03; pin pitch: 3.50mm; Angled; threaded flange || order number: 1843800 8A 160V +phoenix_contact connector MC_01x03_GF_3.5mm +0 +3 +3 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_3-GF-3.5_1x03_P3.50mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MC_1,5/3-GF-3.5; number of pins: 03; pin pitch: 3.50mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1843800 8A 160V +phoenix_contact connector MC_01x03_GF_3.5mm_MH +0 +3 +3 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_3-GF-3.81_1x03_P3.81mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MC_1,5/3-GF-3.81; number of pins: 03; pin pitch: 3.81mm; Angled; threaded flange || order number: 1827871 8A 160V +phoenix_contact connector MC_01x03_GF_3.81mm +0 +3 +3 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_3-GF-3.81_1x03_P3.81mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MC_1,5/3-GF-3.81; number of pins: 03; pin pitch: 3.81mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1827871 8A 160V +phoenix_contact connector MC_01x03_GF_3.81mm_MH +0 +3 +3 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_4-G-3.5_1x04_P3.50mm_Horizontal +Generic Phoenix Contact connector footprint for: MC_1,5/4-G-3.5; number of pins: 04; pin pitch: 3.50mm; Angled || order number: 1844236 8A 160V +phoenix_contact connector MC_01x04_G_3.5mm +0 +4 +4 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_4-G-3.81_1x04_P3.81mm_Horizontal +Generic Phoenix Contact connector footprint for: MC_1,5/4-G-3.81; number of pins: 04; pin pitch: 3.81mm; Angled || order number: 1803293 8A 160V +phoenix_contact connector MC_01x04_G_3.81mm +0 +4 +4 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_4-GF-3.5_1x04_P3.50mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MC_1,5/4-GF-3.5; number of pins: 04; pin pitch: 3.50mm; Angled; threaded flange || order number: 1843813 8A 160V +phoenix_contact connector MC_01x04_GF_3.5mm +0 +4 +4 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_4-GF-3.5_1x04_P3.50mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MC_1,5/4-GF-3.5; number of pins: 04; pin pitch: 3.50mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1843813 8A 160V +phoenix_contact connector MC_01x04_GF_3.5mm_MH +0 +4 +4 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_4-GF-3.81_1x04_P3.81mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MC_1,5/4-GF-3.81; number of pins: 04; pin pitch: 3.81mm; Angled; threaded flange || order number: 1827884 8A 160V +phoenix_contact connector MC_01x04_GF_3.81mm +0 +4 +4 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_4-GF-3.81_1x04_P3.81mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MC_1,5/4-GF-3.81; number of pins: 04; pin pitch: 3.81mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1827884 8A 160V +phoenix_contact connector MC_01x04_GF_3.81mm_MH +0 +4 +4 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_5-G-3.5_1x05_P3.50mm_Horizontal +Generic Phoenix Contact connector footprint for: MC_1,5/5-G-3.5; number of pins: 05; pin pitch: 3.50mm; Angled || order number: 1844249 8A 160V +phoenix_contact connector MC_01x05_G_3.5mm +0 +5 +5 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_5-G-3.81_1x05_P3.81mm_Horizontal +Generic Phoenix Contact connector footprint for: MC_1,5/5-G-3.81; number of pins: 05; pin pitch: 3.81mm; Angled || order number: 1803303 8A 160V +phoenix_contact connector MC_01x05_G_3.81mm +0 +5 +5 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_5-GF-3.5_1x05_P3.50mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MC_1,5/5-GF-3.5; number of pins: 05; pin pitch: 3.50mm; Angled; threaded flange || order number: 1843826 8A 160V +phoenix_contact connector MC_01x05_GF_3.5mm +0 +5 +5 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_5-GF-3.5_1x05_P3.50mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MC_1,5/5-GF-3.5; number of pins: 05; pin pitch: 3.50mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1843826 8A 160V +phoenix_contact connector MC_01x05_GF_3.5mm_MH +0 +5 +5 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_5-GF-3.81_1x05_P3.81mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MC_1,5/5-GF-3.81; number of pins: 05; pin pitch: 3.81mm; Angled; threaded flange || order number: 1827897 8A 160V +phoenix_contact connector MC_01x05_GF_3.81mm +0 +5 +5 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_5-GF-3.81_1x05_P3.81mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MC_1,5/5-GF-3.81; number of pins: 05; pin pitch: 3.81mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1827897 8A 160V +phoenix_contact connector MC_01x05_GF_3.81mm_MH +0 +5 +5 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_6-G-3.5_1x06_P3.50mm_Horizontal +Generic Phoenix Contact connector footprint for: MC_1,5/6-G-3.5; number of pins: 06; pin pitch: 3.50mm; Angled || order number: 1844252 8A 160V +phoenix_contact connector MC_01x06_G_3.5mm +0 +6 +6 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_6-G-3.81_1x06_P3.81mm_Horizontal +Generic Phoenix Contact connector footprint for: MC_1,5/6-G-3.81; number of pins: 06; pin pitch: 3.81mm; Angled || order number: 1803316 8A 160V +phoenix_contact connector MC_01x06_G_3.81mm +0 +6 +6 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_6-GF-3.5_1x06_P3.50mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MC_1,5/6-GF-3.5; number of pins: 06; pin pitch: 3.50mm; Angled; threaded flange || order number: 1843839 8A 160V +phoenix_contact connector MC_01x06_GF_3.5mm +0 +6 +6 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_6-GF-3.5_1x06_P3.50mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MC_1,5/6-GF-3.5; number of pins: 06; pin pitch: 3.50mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1843839 8A 160V +phoenix_contact connector MC_01x06_GF_3.5mm_MH +0 +6 +6 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_6-GF-3.81_1x06_P3.81mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MC_1,5/6-GF-3.81; number of pins: 06; pin pitch: 3.81mm; Angled; threaded flange || order number: 1827907 8A 160V +phoenix_contact connector MC_01x06_GF_3.81mm +0 +6 +6 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_6-GF-3.81_1x06_P3.81mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MC_1,5/6-GF-3.81; number of pins: 06; pin pitch: 3.81mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1827907 8A 160V +phoenix_contact connector MC_01x06_GF_3.81mm_MH +0 +6 +6 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_7-G-3.5_1x07_P3.50mm_Horizontal +Generic Phoenix Contact connector footprint for: MC_1,5/7-G-3.5; number of pins: 07; pin pitch: 3.50mm; Angled || order number: 1844265 8A 160V +phoenix_contact connector MC_01x07_G_3.5mm +0 +7 +7 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_7-G-3.81_1x07_P3.81mm_Horizontal +Generic Phoenix Contact connector footprint for: MC_1,5/7-G-3.81; number of pins: 07; pin pitch: 3.81mm; Angled || order number: 1803329 8A 160V +phoenix_contact connector MC_01x07_G_3.81mm +0 +7 +7 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_7-GF-3.5_1x07_P3.50mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MC_1,5/7-GF-3.5; number of pins: 07; pin pitch: 3.50mm; Angled; threaded flange || order number: 1843842 8A 160V +phoenix_contact connector MC_01x07_GF_3.5mm +0 +7 +7 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_7-GF-3.5_1x07_P3.50mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MC_1,5/7-GF-3.5; number of pins: 07; pin pitch: 3.50mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1843842 8A 160V +phoenix_contact connector MC_01x07_GF_3.5mm_MH +0 +7 +7 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_7-GF-3.81_1x07_P3.81mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MC_1,5/7-GF-3.81; number of pins: 07; pin pitch: 3.81mm; Angled; threaded flange || order number: 1827910 8A 160V +phoenix_contact connector MC_01x07_GF_3.81mm +0 +7 +7 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_7-GF-3.81_1x07_P3.81mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MC_1,5/7-GF-3.81; number of pins: 07; pin pitch: 3.81mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1827910 8A 160V +phoenix_contact connector MC_01x07_GF_3.81mm_MH +0 +7 +7 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_8-G-3.5_1x08_P3.50mm_Horizontal +Generic Phoenix Contact connector footprint for: MC_1,5/8-G-3.5; number of pins: 08; pin pitch: 3.50mm; Angled || order number: 1844278 8A 160V +phoenix_contact connector MC_01x08_G_3.5mm +0 +8 +8 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_8-G-3.81_1x08_P3.81mm_Horizontal +Generic Phoenix Contact connector footprint for: MC_1,5/8-G-3.81; number of pins: 08; pin pitch: 3.81mm; Angled || order number: 1803332 8A 160V +phoenix_contact connector MC_01x08_G_3.81mm +0 +8 +8 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_8-GF-3.5_1x08_P3.50mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MC_1,5/8-GF-3.5; number of pins: 08; pin pitch: 3.50mm; Angled; threaded flange || order number: 1843855 8A 160V +phoenix_contact connector MC_01x08_GF_3.5mm +0 +8 +8 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_8-GF-3.5_1x08_P3.50mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MC_1,5/8-GF-3.5; number of pins: 08; pin pitch: 3.50mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1843855 8A 160V +phoenix_contact connector MC_01x08_GF_3.5mm_MH +0 +8 +8 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_8-GF-3.81_1x08_P3.81mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MC_1,5/8-GF-3.81; number of pins: 08; pin pitch: 3.81mm; Angled; threaded flange || order number: 1827923 8A 160V +phoenix_contact connector MC_01x08_GF_3.81mm +0 +8 +8 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_8-GF-3.81_1x08_P3.81mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MC_1,5/8-GF-3.81; number of pins: 08; pin pitch: 3.81mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1827923 8A 160V +phoenix_contact connector MC_01x08_GF_3.81mm_MH +0 +8 +8 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_9-G-3.5_1x09_P3.50mm_Horizontal +Generic Phoenix Contact connector footprint for: MC_1,5/9-G-3.5; number of pins: 09; pin pitch: 3.50mm; Angled || order number: 1844281 8A 160V +phoenix_contact connector MC_01x09_G_3.5mm +0 +9 +9 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_9-G-3.81_1x09_P3.81mm_Horizontal +Generic Phoenix Contact connector footprint for: MC_1,5/9-G-3.81; number of pins: 09; pin pitch: 3.81mm; Angled || order number: 1803345 8A 160V +phoenix_contact connector MC_01x09_G_3.81mm +0 +9 +9 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_9-GF-3.5_1x09_P3.50mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MC_1,5/9-GF-3.5; number of pins: 09; pin pitch: 3.50mm; Angled; threaded flange || order number: 1843868 8A 160V +phoenix_contact connector MC_01x09_GF_3.5mm +0 +9 +9 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_9-GF-3.5_1x09_P3.50mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MC_1,5/9-GF-3.5; number of pins: 09; pin pitch: 3.50mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1843868 8A 160V +phoenix_contact connector MC_01x09_GF_3.5mm_MH +0 +9 +9 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_9-GF-3.81_1x09_P3.81mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MC_1,5/9-GF-3.81; number of pins: 09; pin pitch: 3.81mm; Angled; threaded flange || order number: 1827936 8A 160V +phoenix_contact connector MC_01x09_GF_3.81mm +0 +9 +9 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_9-GF-3.81_1x09_P3.81mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MC_1,5/9-GF-3.81; number of pins: 09; pin pitch: 3.81mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1827936 8A 160V +phoenix_contact connector MC_01x09_GF_3.81mm_MH +0 +9 +9 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_10-G-3.5_1x10_P3.50mm_Horizontal +Generic Phoenix Contact connector footprint for: MC_1,5/10-G-3.5; number of pins: 10; pin pitch: 3.50mm; Angled || order number: 1844294 8A 160V +phoenix_contact connector MC_01x10_G_3.5mm +0 +10 +10 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_10-G-3.81_1x10_P3.81mm_Horizontal +Generic Phoenix Contact connector footprint for: MC_1,5/10-G-3.81; number of pins: 10; pin pitch: 3.81mm; Angled || order number: 1803358 8A 160V +phoenix_contact connector MC_01x10_G_3.81mm +0 +10 +10 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_10-GF-3.5_1x10_P3.50mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MC_1,5/10-GF-3.5; number of pins: 10; pin pitch: 3.50mm; Angled; threaded flange || order number: 1843871 8A 160V +phoenix_contact connector MC_01x10_GF_3.5mm +0 +10 +10 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_10-GF-3.5_1x10_P3.50mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MC_1,5/10-GF-3.5; number of pins: 10; pin pitch: 3.50mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1843871 8A 160V +phoenix_contact connector MC_01x10_GF_3.5mm_MH +0 +10 +10 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_10-GF-3.81_1x10_P3.81mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MC_1,5/10-GF-3.81; number of pins: 10; pin pitch: 3.81mm; Angled; threaded flange || order number: 1827949 8A 160V +phoenix_contact connector MC_01x10_GF_3.81mm +0 +10 +10 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_10-GF-3.81_1x10_P3.81mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MC_1,5/10-GF-3.81; number of pins: 10; pin pitch: 3.81mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1827949 8A 160V +phoenix_contact connector MC_01x10_GF_3.81mm_MH +0 +10 +10 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_11-G-3.5_1x11_P3.50mm_Horizontal +Generic Phoenix Contact connector footprint for: MC_1,5/11-G-3.5; number of pins: 11; pin pitch: 3.50mm; Angled || order number: 1844304 8A 160V +phoenix_contact connector MC_01x11_G_3.5mm +0 +11 +11 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_11-G-3.81_1x11_P3.81mm_Horizontal +Generic Phoenix Contact connector footprint for: MC_1,5/11-G-3.81; number of pins: 11; pin pitch: 3.81mm; Angled || order number: 1803361 8A 160V +phoenix_contact connector MC_01x11_G_3.81mm +0 +11 +11 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_11-GF-3.5_1x11_P3.50mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MC_1,5/11-GF-3.5; number of pins: 11; pin pitch: 3.50mm; Angled; threaded flange || order number: 1843884 8A 160V +phoenix_contact connector MC_01x11_GF_3.5mm +0 +11 +11 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_11-GF-3.5_1x11_P3.50mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MC_1,5/11-GF-3.5; number of pins: 11; pin pitch: 3.50mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1843884 8A 160V +phoenix_contact connector MC_01x11_GF_3.5mm_MH +0 +11 +11 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_11-GF-3.81_1x11_P3.81mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MC_1,5/11-GF-3.81; number of pins: 11; pin pitch: 3.81mm; Angled; threaded flange || order number: 1827952 8A 160V +phoenix_contact connector MC_01x11_GF_3.81mm +0 +11 +11 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_11-GF-3.81_1x11_P3.81mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MC_1,5/11-GF-3.81; number of pins: 11; pin pitch: 3.81mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1827952 8A 160V +phoenix_contact connector MC_01x11_GF_3.81mm_MH +0 +11 +11 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_12-G-3.5_1x12_P3.50mm_Horizontal +Generic Phoenix Contact connector footprint for: MC_1,5/12-G-3.5; number of pins: 12; pin pitch: 3.50mm; Angled || order number: 1844317 8A 160V +phoenix_contact connector MC_01x12_G_3.5mm +0 +12 +12 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_12-G-3.81_1x12_P3.81mm_Horizontal +Generic Phoenix Contact connector footprint for: MC_1,5/12-G-3.81; number of pins: 12; pin pitch: 3.81mm; Angled || order number: 1803374 8A 160V +phoenix_contact connector MC_01x12_G_3.81mm +0 +12 +12 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_12-GF-3.5_1x12_P3.50mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MC_1,5/12-GF-3.5; number of pins: 12; pin pitch: 3.50mm; Angled; threaded flange || order number: 1843897 8A 160V +phoenix_contact connector MC_01x12_GF_3.5mm +0 +12 +12 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_12-GF-3.5_1x12_P3.50mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MC_1,5/12-GF-3.5; number of pins: 12; pin pitch: 3.50mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1843897 8A 160V +phoenix_contact connector MC_01x12_GF_3.5mm_MH +0 +12 +12 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_12-GF-3.81_1x12_P3.81mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MC_1,5/12-GF-3.81; number of pins: 12; pin pitch: 3.81mm; Angled; threaded flange || order number: 1827965 8A 160V +phoenix_contact connector MC_01x12_GF_3.81mm +0 +12 +12 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_12-GF-3.81_1x12_P3.81mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MC_1,5/12-GF-3.81; number of pins: 12; pin pitch: 3.81mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1827965 8A 160V +phoenix_contact connector MC_01x12_GF_3.81mm_MH +0 +12 +12 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_13-G-3.5_1x13_P3.50mm_Horizontal +Generic Phoenix Contact connector footprint for: MC_1,5/13-G-3.5; number of pins: 13; pin pitch: 3.50mm; Angled || order number: 1844320 8A 160V +phoenix_contact connector MC_01x13_G_3.5mm +0 +13 +13 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_13-G-3.81_1x13_P3.81mm_Horizontal +Generic Phoenix Contact connector footprint for: MC_1,5/13-G-3.81; number of pins: 13; pin pitch: 3.81mm; Angled || order number: 1803387 8A 160V +phoenix_contact connector MC_01x13_G_3.81mm +0 +13 +13 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_13-GF-3.5_1x13_P3.50mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MC_1,5/13-GF-3.5; number of pins: 13; pin pitch: 3.50mm; Angled; threaded flange || order number: 1843907 8A 160V +phoenix_contact connector MC_01x13_GF_3.5mm +0 +13 +13 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_13-GF-3.5_1x13_P3.50mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MC_1,5/13-GF-3.5; number of pins: 13; pin pitch: 3.50mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1843907 8A 160V +phoenix_contact connector MC_01x13_GF_3.5mm_MH +0 +13 +13 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_13-GF-3.81_1x13_P3.81mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MC_1,5/13-GF-3.81; number of pins: 13; pin pitch: 3.81mm; Angled; threaded flange || order number: 1827978 8A 160V +phoenix_contact connector MC_01x13_GF_3.81mm +0 +13 +13 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_13-GF-3.81_1x13_P3.81mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MC_1,5/13-GF-3.81; number of pins: 13; pin pitch: 3.81mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1827978 8A 160V +phoenix_contact connector MC_01x13_GF_3.81mm_MH +0 +13 +13 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_14-G-3.5_1x14_P3.50mm_Horizontal +Generic Phoenix Contact connector footprint for: MC_1,5/14-G-3.5; number of pins: 14; pin pitch: 3.50mm; Angled || order number: 1844333 8A 160V +phoenix_contact connector MC_01x14_G_3.5mm +0 +14 +14 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_14-G-3.81_1x14_P3.81mm_Horizontal +Generic Phoenix Contact connector footprint for: MC_1,5/14-G-3.81; number of pins: 14; pin pitch: 3.81mm; Angled || order number: 1803390 8A 160V +phoenix_contact connector MC_01x14_G_3.81mm +0 +14 +14 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_14-GF-3.5_1x14_P3.50mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MC_1,5/14-GF-3.5; number of pins: 14; pin pitch: 3.50mm; Angled; threaded flange || order number: 1843910 8A 160V +phoenix_contact connector MC_01x14_GF_3.5mm +0 +14 +14 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_14-GF-3.5_1x14_P3.50mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MC_1,5/14-GF-3.5; number of pins: 14; pin pitch: 3.50mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1843910 8A 160V +phoenix_contact connector MC_01x14_GF_3.5mm_MH +0 +14 +14 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_14-GF-3.81_1x14_P3.81mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MC_1,5/14-GF-3.81; number of pins: 14; pin pitch: 3.81mm; Angled; threaded flange || order number: 1827981 8A 160V +phoenix_contact connector MC_01x14_GF_3.81mm +0 +14 +14 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_14-GF-3.81_1x14_P3.81mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MC_1,5/14-GF-3.81; number of pins: 14; pin pitch: 3.81mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1827981 8A 160V +phoenix_contact connector MC_01x14_GF_3.81mm_MH +0 +14 +14 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_15-G-3.5_1x15_P3.50mm_Horizontal +Generic Phoenix Contact connector footprint for: MC_1,5/15-G-3.5; number of pins: 15; pin pitch: 3.50mm; Angled || order number: 1844346 8A 160V +phoenix_contact connector MC_01x15_G_3.5mm +0 +15 +15 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_15-G-3.81_1x15_P3.81mm_Horizontal +Generic Phoenix Contact connector footprint for: MC_1,5/15-G-3.81; number of pins: 15; pin pitch: 3.81mm; Angled || order number: 1803400 8A 160V +phoenix_contact connector MC_01x15_G_3.81mm +0 +15 +15 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_15-GF-3.5_1x15_P3.50mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MC_1,5/15-GF-3.5; number of pins: 15; pin pitch: 3.50mm; Angled; threaded flange || order number: 1843923 8A 160V +phoenix_contact connector MC_01x15_GF_3.5mm +0 +15 +15 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_15-GF-3.5_1x15_P3.50mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MC_1,5/15-GF-3.5; number of pins: 15; pin pitch: 3.50mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1843923 8A 160V +phoenix_contact connector MC_01x15_GF_3.5mm_MH +0 +15 +15 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_15-GF-3.81_1x15_P3.81mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MC_1,5/15-GF-3.81; number of pins: 15; pin pitch: 3.81mm; Angled; threaded flange || order number: 1827994 8A 160V +phoenix_contact connector MC_01x15_GF_3.81mm +0 +15 +15 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_15-GF-3.81_1x15_P3.81mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MC_1,5/15-GF-3.81; number of pins: 15; pin pitch: 3.81mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1827994 8A 160V +phoenix_contact connector MC_01x15_GF_3.81mm_MH +0 +15 +15 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_16-G-3.5_1x16_P3.50mm_Horizontal +Generic Phoenix Contact connector footprint for: MC_1,5/16-G-3.5; number of pins: 16; pin pitch: 3.50mm; Angled || order number: 1844359 8A 160V +phoenix_contact connector MC_01x16_G_3.5mm +0 +16 +16 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_16-G-3.81_1x16_P3.81mm_Horizontal +Generic Phoenix Contact connector footprint for: MC_1,5/16-G-3.81; number of pins: 16; pin pitch: 3.81mm; Angled || order number: 1803413 8A 160V +phoenix_contact connector MC_01x16_G_3.81mm +0 +16 +16 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_16-GF-3.5_1x16_P3.50mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MC_1,5/16-GF-3.5; number of pins: 16; pin pitch: 3.50mm; Angled; threaded flange || order number: 1843936 8A 160V +phoenix_contact connector MC_01x16_GF_3.5mm +0 +16 +16 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_16-GF-3.5_1x16_P3.50mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MC_1,5/16-GF-3.5; number of pins: 16; pin pitch: 3.50mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1843936 8A 160V +phoenix_contact connector MC_01x16_GF_3.5mm_MH +0 +16 +16 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_16-GF-3.81_1x16_P3.81mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MC_1,5/16-GF-3.81; number of pins: 16; pin pitch: 3.81mm; Angled; threaded flange || order number: 1828003 8A 160V +phoenix_contact connector MC_01x16_GF_3.81mm +0 +16 +16 +Connector_Phoenix_MC +PhoenixContact_MC_1,5_16-GF-3.81_1x16_P3.81mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MC_1,5/16-GF-3.81; number of pins: 16; pin pitch: 3.81mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1828003 8A 160V +phoenix_contact connector MC_01x16_GF_3.81mm_MH +0 +16 +16 +Connector_Phoenix_MC_HighVoltage +PhoenixContact_MCV_1,5_2-G-5.08_1x02_P5.08mm_Vertical +Generic Phoenix Contact connector footprint for: MCV_1,5/2-G-5.08; number of pins: 02; pin pitch: 5.08mm; Vertical || order number: 1836299 8A 320V +phoenix_contact connector MCV_01x02_G_5.08mm +0 +2 +2 +Connector_Phoenix_MC_HighVoltage +PhoenixContact_MCV_1,5_2-GF-5.08_1x02_P5.08mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MCV_1,5/2-GF-5.08; number of pins: 02; pin pitch: 5.08mm; Vertical; threaded flange || order number: 1847615 8A 320V +phoenix_contact connector MCV_01x02_GF_5.08mm +0 +2 +2 +Connector_Phoenix_MC_HighVoltage +PhoenixContact_MCV_1,5_2-GF-5.08_1x02_P5.08mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MCV_1,5/2-GF-5.08; number of pins: 02; pin pitch: 5.08mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1847615 8A 320V +phoenix_contact connector MCV_01x02_GF_5.08mm_MH +0 +2 +2 +Connector_Phoenix_MC_HighVoltage +PhoenixContact_MCV_1,5_3-G-5.08_1x03_P5.08mm_Vertical +Generic Phoenix Contact connector footprint for: MCV_1,5/3-G-5.08; number of pins: 03; pin pitch: 5.08mm; Vertical || order number: 1836309 8A 320V +phoenix_contact connector MCV_01x03_G_5.08mm +0 +3 +3 +Connector_Phoenix_MC_HighVoltage +PhoenixContact_MCV_1,5_3-GF-5.08_1x03_P5.08mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MCV_1,5/3-GF-5.08; number of pins: 03; pin pitch: 5.08mm; Vertical; threaded flange || order number: 1847628 8A 320V +phoenix_contact connector MCV_01x03_GF_5.08mm +0 +3 +3 +Connector_Phoenix_MC_HighVoltage +PhoenixContact_MCV_1,5_3-GF-5.08_1x03_P5.08mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MCV_1,5/3-GF-5.08; number of pins: 03; pin pitch: 5.08mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1847628 8A 320V +phoenix_contact connector MCV_01x03_GF_5.08mm_MH +0 +3 +3 +Connector_Phoenix_MC_HighVoltage +PhoenixContact_MCV_1,5_4-G-5.08_1x04_P5.08mm_Vertical +Generic Phoenix Contact connector footprint for: MCV_1,5/4-G-5.08; number of pins: 04; pin pitch: 5.08mm; Vertical || order number: 1836312 8A 320V +phoenix_contact connector MCV_01x04_G_5.08mm +0 +4 +4 +Connector_Phoenix_MC_HighVoltage +PhoenixContact_MCV_1,5_4-GF-5.08_1x04_P5.08mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MCV_1,5/4-GF-5.08; number of pins: 04; pin pitch: 5.08mm; Vertical; threaded flange || order number: 1847631 8A 320V +phoenix_contact connector MCV_01x04_GF_5.08mm +0 +4 +4 +Connector_Phoenix_MC_HighVoltage +PhoenixContact_MCV_1,5_4-GF-5.08_1x04_P5.08mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MCV_1,5/4-GF-5.08; number of pins: 04; pin pitch: 5.08mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1847631 8A 320V +phoenix_contact connector MCV_01x04_GF_5.08mm_MH +0 +4 +4 +Connector_Phoenix_MC_HighVoltage +PhoenixContact_MCV_1,5_5-G-5.08_1x05_P5.08mm_Vertical +Generic Phoenix Contact connector footprint for: MCV_1,5/5-G-5.08; number of pins: 05; pin pitch: 5.08mm; Vertical || order number: 1836325 8A 320V +phoenix_contact connector MCV_01x05_G_5.08mm +0 +5 +5 +Connector_Phoenix_MC_HighVoltage +PhoenixContact_MCV_1,5_5-GF-5.08_1x05_P5.08mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MCV_1,5/5-GF-5.08; number of pins: 05; pin pitch: 5.08mm; Vertical; threaded flange || order number: 1847644 8A 320V +phoenix_contact connector MCV_01x05_GF_5.08mm +0 +5 +5 +Connector_Phoenix_MC_HighVoltage +PhoenixContact_MCV_1,5_5-GF-5.08_1x05_P5.08mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MCV_1,5/5-GF-5.08; number of pins: 05; pin pitch: 5.08mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1847644 8A 320V +phoenix_contact connector MCV_01x05_GF_5.08mm_MH +0 +5 +5 +Connector_Phoenix_MC_HighVoltage +PhoenixContact_MCV_1,5_6-G-5.08_1x06_P5.08mm_Vertical +Generic Phoenix Contact connector footprint for: MCV_1,5/6-G-5.08; number of pins: 06; pin pitch: 5.08mm; Vertical || order number: 1836338 8A 320V +phoenix_contact connector MCV_01x06_G_5.08mm +0 +6 +6 +Connector_Phoenix_MC_HighVoltage +PhoenixContact_MCV_1,5_6-GF-5.08_1x06_P5.08mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MCV_1,5/6-GF-5.08; number of pins: 06; pin pitch: 5.08mm; Vertical; threaded flange || order number: 1847657 8A 320V +phoenix_contact connector MCV_01x06_GF_5.08mm +0 +6 +6 +Connector_Phoenix_MC_HighVoltage +PhoenixContact_MCV_1,5_6-GF-5.08_1x06_P5.08mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MCV_1,5/6-GF-5.08; number of pins: 06; pin pitch: 5.08mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1847657 8A 320V +phoenix_contact connector MCV_01x06_GF_5.08mm_MH +0 +6 +6 +Connector_Phoenix_MC_HighVoltage +PhoenixContact_MCV_1,5_7-G-5.08_1x07_P5.08mm_Vertical +Generic Phoenix Contact connector footprint for: MCV_1,5/7-G-5.08; number of pins: 07; pin pitch: 5.08mm; Vertical || order number: 1836341 8A 320V +phoenix_contact connector MCV_01x07_G_5.08mm +0 +7 +7 +Connector_Phoenix_MC_HighVoltage +PhoenixContact_MCV_1,5_7-GF-5.08_1x07_P5.08mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MCV_1,5/7-GF-5.08; number of pins: 07; pin pitch: 5.08mm; Vertical; threaded flange || order number: 1847660 8A 320V +phoenix_contact connector MCV_01x07_GF_5.08mm +0 +7 +7 +Connector_Phoenix_MC_HighVoltage +PhoenixContact_MCV_1,5_7-GF-5.08_1x07_P5.08mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MCV_1,5/7-GF-5.08; number of pins: 07; pin pitch: 5.08mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1847660 8A 320V +phoenix_contact connector MCV_01x07_GF_5.08mm_MH +0 +7 +7 +Connector_Phoenix_MC_HighVoltage +PhoenixContact_MCV_1,5_8-G-5.08_1x08_P5.08mm_Vertical +Generic Phoenix Contact connector footprint for: MCV_1,5/8-G-5.08; number of pins: 08; pin pitch: 5.08mm; Vertical || order number: 1836354 8A 320V +phoenix_contact connector MCV_01x08_G_5.08mm +0 +8 +8 +Connector_Phoenix_MC_HighVoltage +PhoenixContact_MCV_1,5_8-GF-5.08_1x08_P5.08mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MCV_1,5/8-GF-5.08; number of pins: 08; pin pitch: 5.08mm; Vertical; threaded flange || order number: 1847673 8A 320V +phoenix_contact connector MCV_01x08_GF_5.08mm +0 +8 +8 +Connector_Phoenix_MC_HighVoltage +PhoenixContact_MCV_1,5_8-GF-5.08_1x08_P5.08mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MCV_1,5/8-GF-5.08; number of pins: 08; pin pitch: 5.08mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1847673 8A 320V +phoenix_contact connector MCV_01x08_GF_5.08mm_MH +0 +8 +8 +Connector_Phoenix_MC_HighVoltage +PhoenixContact_MCV_1,5_9-G-5.08_1x09_P5.08mm_Vertical +Generic Phoenix Contact connector footprint for: MCV_1,5/9-G-5.08; number of pins: 09; pin pitch: 5.08mm; Vertical || order number: 1836367 8A 320V +phoenix_contact connector MCV_01x09_G_5.08mm +0 +9 +9 +Connector_Phoenix_MC_HighVoltage +PhoenixContact_MCV_1,5_9-GF-5.08_1x09_P5.08mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MCV_1,5/9-GF-5.08; number of pins: 09; pin pitch: 5.08mm; Vertical; threaded flange || order number: 1847686 8A 320V +phoenix_contact connector MCV_01x09_GF_5.08mm +0 +9 +9 +Connector_Phoenix_MC_HighVoltage +PhoenixContact_MCV_1,5_9-GF-5.08_1x09_P5.08mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MCV_1,5/9-GF-5.08; number of pins: 09; pin pitch: 5.08mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1847686 8A 320V +phoenix_contact connector MCV_01x09_GF_5.08mm_MH +0 +9 +9 +Connector_Phoenix_MC_HighVoltage +PhoenixContact_MCV_1,5_10-G-5.08_1x10_P5.08mm_Vertical +Generic Phoenix Contact connector footprint for: MCV_1,5/10-G-5.08; number of pins: 10; pin pitch: 5.08mm; Vertical || order number: 1836370 8A 320V +phoenix_contact connector MCV_01x10_G_5.08mm +0 +10 +10 +Connector_Phoenix_MC_HighVoltage +PhoenixContact_MCV_1,5_10-GF-5.08_1x10_P5.08mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MCV_1,5/10-GF-5.08; number of pins: 10; pin pitch: 5.08mm; Vertical; threaded flange || order number: 1847699 8A 320V +phoenix_contact connector MCV_01x10_GF_5.08mm +0 +10 +10 +Connector_Phoenix_MC_HighVoltage +PhoenixContact_MCV_1,5_10-GF-5.08_1x10_P5.08mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MCV_1,5/10-GF-5.08; number of pins: 10; pin pitch: 5.08mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1847699 8A 320V +phoenix_contact connector MCV_01x10_GF_5.08mm_MH +0 +10 +10 +Connector_Phoenix_MC_HighVoltage +PhoenixContact_MCV_1,5_11-G-5.08_1x11_P5.08mm_Vertical +Generic Phoenix Contact connector footprint for: MCV_1,5/11-G-5.08; number of pins: 11; pin pitch: 5.08mm; Vertical || order number: 1836383 8A 320V +phoenix_contact connector MCV_01x11_G_5.08mm +0 +11 +11 +Connector_Phoenix_MC_HighVoltage +PhoenixContact_MCV_1,5_11-GF-5.08_1x11_P5.08mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MCV_1,5/11-GF-5.08; number of pins: 11; pin pitch: 5.08mm; Vertical; threaded flange || order number: 1847709 8A 320V +phoenix_contact connector MCV_01x11_GF_5.08mm +0 +11 +11 +Connector_Phoenix_MC_HighVoltage +PhoenixContact_MCV_1,5_11-GF-5.08_1x11_P5.08mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MCV_1,5/11-GF-5.08; number of pins: 11; pin pitch: 5.08mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1847709 8A 320V +phoenix_contact connector MCV_01x11_GF_5.08mm_MH +0 +11 +11 +Connector_Phoenix_MC_HighVoltage +PhoenixContact_MCV_1,5_12-G-5.08_1x12_P5.08mm_Vertical +Generic Phoenix Contact connector footprint for: MCV_1,5/12-G-5.08; number of pins: 12; pin pitch: 5.08mm; Vertical || order number: 1836396 8A 320V +phoenix_contact connector MCV_01x12_G_5.08mm +0 +12 +12 +Connector_Phoenix_MC_HighVoltage +PhoenixContact_MCV_1,5_12-GF-5.08_1x12_P5.08mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MCV_1,5/12-GF-5.08; number of pins: 12; pin pitch: 5.08mm; Vertical; threaded flange || order number: 1847712 8A 320V +phoenix_contact connector MCV_01x12_GF_5.08mm +0 +12 +12 +Connector_Phoenix_MC_HighVoltage +PhoenixContact_MCV_1,5_12-GF-5.08_1x12_P5.08mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MCV_1,5/12-GF-5.08; number of pins: 12; pin pitch: 5.08mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1847712 8A 320V +phoenix_contact connector MCV_01x12_GF_5.08mm_MH +0 +12 +12 +Connector_Phoenix_MC_HighVoltage +PhoenixContact_MC_1,5_2-G-5.08_1x02_P5.08mm_Horizontal +Generic Phoenix Contact connector footprint for: MC_1,5/2-G-5.08; number of pins: 02; pin pitch: 5.08mm; Angled || order number: 1836189 8A 320V +phoenix_contact connector MC_01x02_G_5.08mm +0 +2 +2 +Connector_Phoenix_MC_HighVoltage +PhoenixContact_MC_1,5_2-GF-5.08_1x02_P5.08mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MC_1,5/2-GF-5.08; number of pins: 02; pin pitch: 5.08mm; Angled; threaded flange || order number: 1847466 8A 320V +phoenix_contact connector MC_01x02_GF_5.08mm +0 +2 +2 +Connector_Phoenix_MC_HighVoltage +PhoenixContact_MC_1,5_2-GF-5.08_1x02_P5.08mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MC_1,5/2-GF-5.08; number of pins: 02; pin pitch: 5.08mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1847466 8A 320V +phoenix_contact connector MC_01x02_GF_5.08mm_MH +0 +2 +2 +Connector_Phoenix_MC_HighVoltage +PhoenixContact_MC_1,5_3-G-5.08_1x03_P5.08mm_Horizontal +Generic Phoenix Contact connector footprint for: MC_1,5/3-G-5.08; number of pins: 03; pin pitch: 5.08mm; Angled || order number: 1836192 8A 320V +phoenix_contact connector MC_01x03_G_5.08mm +0 +3 +3 +Connector_Phoenix_MC_HighVoltage +PhoenixContact_MC_1,5_3-GF-5.08_1x03_P5.08mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MC_1,5/3-GF-5.08; number of pins: 03; pin pitch: 5.08mm; Angled; threaded flange || order number: 1847479 8A 320V +phoenix_contact connector MC_01x03_GF_5.08mm +0 +3 +3 +Connector_Phoenix_MC_HighVoltage +PhoenixContact_MC_1,5_3-GF-5.08_1x03_P5.08mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MC_1,5/3-GF-5.08; number of pins: 03; pin pitch: 5.08mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1847479 8A 320V +phoenix_contact connector MC_01x03_GF_5.08mm_MH +0 +3 +3 +Connector_Phoenix_MC_HighVoltage +PhoenixContact_MC_1,5_4-G-5.08_1x04_P5.08mm_Horizontal +Generic Phoenix Contact connector footprint for: MC_1,5/4-G-5.08; number of pins: 04; pin pitch: 5.08mm; Angled || order number: 1836202 8A 320V +phoenix_contact connector MC_01x04_G_5.08mm +0 +4 +4 +Connector_Phoenix_MC_HighVoltage +PhoenixContact_MC_1,5_4-GF-5.08_1x04_P5.08mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MC_1,5/4-GF-5.08; number of pins: 04; pin pitch: 5.08mm; Angled; threaded flange || order number: 1847482 8A 320V +phoenix_contact connector MC_01x04_GF_5.08mm +0 +4 +4 +Connector_Phoenix_MC_HighVoltage +PhoenixContact_MC_1,5_4-GF-5.08_1x04_P5.08mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MC_1,5/4-GF-5.08; number of pins: 04; pin pitch: 5.08mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1847482 8A 320V +phoenix_contact connector MC_01x04_GF_5.08mm_MH +0 +4 +4 +Connector_Phoenix_MC_HighVoltage +PhoenixContact_MC_1,5_5-G-5.08_1x05_P5.08mm_Horizontal +Generic Phoenix Contact connector footprint for: MC_1,5/5-G-5.08; number of pins: 05; pin pitch: 5.08mm; Angled || order number: 1836215 8A 320V +phoenix_contact connector MC_01x05_G_5.08mm +0 +5 +5 +Connector_Phoenix_MC_HighVoltage +PhoenixContact_MC_1,5_5-GF-5.08_1x05_P5.08mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MC_1,5/5-GF-5.08; number of pins: 05; pin pitch: 5.08mm; Angled; threaded flange || order number: 1847495 8A 320V +phoenix_contact connector MC_01x05_GF_5.08mm +0 +5 +5 +Connector_Phoenix_MC_HighVoltage +PhoenixContact_MC_1,5_5-GF-5.08_1x05_P5.08mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MC_1,5/5-GF-5.08; number of pins: 05; pin pitch: 5.08mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1847495 8A 320V +phoenix_contact connector MC_01x05_GF_5.08mm_MH +0 +5 +5 +Connector_Phoenix_MC_HighVoltage +PhoenixContact_MC_1,5_6-G-5.08_1x06_P5.08mm_Horizontal +Generic Phoenix Contact connector footprint for: MC_1,5/6-G-5.08; number of pins: 06; pin pitch: 5.08mm; Angled || order number: 1836228 8A 320V +phoenix_contact connector MC_01x06_G_5.08mm +0 +6 +6 +Connector_Phoenix_MC_HighVoltage +PhoenixContact_MC_1,5_6-GF-5.08_1x06_P5.08mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MC_1,5/6-GF-5.08; number of pins: 06; pin pitch: 5.08mm; Angled; threaded flange || order number: 1847505 8A 320V +phoenix_contact connector MC_01x06_GF_5.08mm +0 +6 +6 +Connector_Phoenix_MC_HighVoltage +PhoenixContact_MC_1,5_6-GF-5.08_1x06_P5.08mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MC_1,5/6-GF-5.08; number of pins: 06; pin pitch: 5.08mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1847505 8A 320V +phoenix_contact connector MC_01x06_GF_5.08mm_MH +0 +6 +6 +Connector_Phoenix_MC_HighVoltage +PhoenixContact_MC_1,5_7-G-5.08_1x07_P5.08mm_Horizontal +Generic Phoenix Contact connector footprint for: MC_1,5/7-G-5.08; number of pins: 07; pin pitch: 5.08mm; Angled || order number: 1836231 8A 320V +phoenix_contact connector MC_01x07_G_5.08mm +0 +7 +7 +Connector_Phoenix_MC_HighVoltage +PhoenixContact_MC_1,5_7-GF-5.08_1x07_P5.08mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MC_1,5/7-GF-5.08; number of pins: 07; pin pitch: 5.08mm; Angled; threaded flange || order number: 1847518 8A 320V +phoenix_contact connector MC_01x07_GF_5.08mm +0 +7 +7 +Connector_Phoenix_MC_HighVoltage +PhoenixContact_MC_1,5_7-GF-5.08_1x07_P5.08mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MC_1,5/7-GF-5.08; number of pins: 07; pin pitch: 5.08mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1847518 8A 320V +phoenix_contact connector MC_01x07_GF_5.08mm_MH +0 +7 +7 +Connector_Phoenix_MC_HighVoltage +PhoenixContact_MC_1,5_8-G-5.08_1x08_P5.08mm_Horizontal +Generic Phoenix Contact connector footprint for: MC_1,5/8-G-5.08; number of pins: 08; pin pitch: 5.08mm; Angled || order number: 1836244 8A 320V +phoenix_contact connector MC_01x08_G_5.08mm +0 +8 +8 +Connector_Phoenix_MC_HighVoltage +PhoenixContact_MC_1,5_8-GF-5.08_1x08_P5.08mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MC_1,5/8-GF-5.08; number of pins: 08; pin pitch: 5.08mm; Angled; threaded flange || order number: 1847521 8A 320V +phoenix_contact connector MC_01x08_GF_5.08mm +0 +8 +8 +Connector_Phoenix_MC_HighVoltage +PhoenixContact_MC_1,5_8-GF-5.08_1x08_P5.08mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MC_1,5/8-GF-5.08; number of pins: 08; pin pitch: 5.08mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1847521 8A 320V +phoenix_contact connector MC_01x08_GF_5.08mm_MH +0 +8 +8 +Connector_Phoenix_MC_HighVoltage +PhoenixContact_MC_1,5_9-G-5.08_1x09_P5.08mm_Horizontal +Generic Phoenix Contact connector footprint for: MC_1,5/9-G-5.08; number of pins: 09; pin pitch: 5.08mm; Angled || order number: 1836257 8A 320V +phoenix_contact connector MC_01x09_G_5.08mm +0 +9 +9 +Connector_Phoenix_MC_HighVoltage +PhoenixContact_MC_1,5_9-GF-5.08_1x09_P5.08mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MC_1,5/9-GF-5.08; number of pins: 09; pin pitch: 5.08mm; Angled; threaded flange || order number: 1847534 8A 320V +phoenix_contact connector MC_01x09_GF_5.08mm +0 +9 +9 +Connector_Phoenix_MC_HighVoltage +PhoenixContact_MC_1,5_9-GF-5.08_1x09_P5.08mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MC_1,5/9-GF-5.08; number of pins: 09; pin pitch: 5.08mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1847534 8A 320V +phoenix_contact connector MC_01x09_GF_5.08mm_MH +0 +9 +9 +Connector_Phoenix_MC_HighVoltage +PhoenixContact_MC_1,5_10-G-5.08_1x10_P5.08mm_Horizontal +Generic Phoenix Contact connector footprint for: MC_1,5/10-G-5.08; number of pins: 10; pin pitch: 5.08mm; Angled || order number: 1836260 8A 320V +phoenix_contact connector MC_01x10_G_5.08mm +0 +10 +10 +Connector_Phoenix_MC_HighVoltage +PhoenixContact_MC_1,5_10-GF-5.08_1x10_P5.08mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MC_1,5/10-GF-5.08; number of pins: 10; pin pitch: 5.08mm; Angled; threaded flange || order number: 1847547 8A 320V +phoenix_contact connector MC_01x10_GF_5.08mm +0 +10 +10 +Connector_Phoenix_MC_HighVoltage +PhoenixContact_MC_1,5_10-GF-5.08_1x10_P5.08mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MC_1,5/10-GF-5.08; number of pins: 10; pin pitch: 5.08mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1847547 8A 320V +phoenix_contact connector MC_01x10_GF_5.08mm_MH +0 +10 +10 +Connector_Phoenix_MC_HighVoltage +PhoenixContact_MC_1,5_11-G-5.08_1x11_P5.08mm_Horizontal +Generic Phoenix Contact connector footprint for: MC_1,5/11-G-5.08; number of pins: 11; pin pitch: 5.08mm; Angled || order number: 1836273 8A 320V +phoenix_contact connector MC_01x11_G_5.08mm +0 +11 +11 +Connector_Phoenix_MC_HighVoltage +PhoenixContact_MC_1,5_11-GF-5.08_1x11_P5.08mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MC_1,5/11-GF-5.08; number of pins: 11; pin pitch: 5.08mm; Angled; threaded flange || order number: 1847550 8A 320V +phoenix_contact connector MC_01x11_GF_5.08mm +0 +11 +11 +Connector_Phoenix_MC_HighVoltage +PhoenixContact_MC_1,5_11-GF-5.08_1x11_P5.08mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MC_1,5/11-GF-5.08; number of pins: 11; pin pitch: 5.08mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1847550 8A 320V +phoenix_contact connector MC_01x11_GF_5.08mm_MH +0 +11 +11 +Connector_Phoenix_MC_HighVoltage +PhoenixContact_MC_1,5_12-G-5.08_1x12_P5.08mm_Horizontal +Generic Phoenix Contact connector footprint for: MC_1,5/12-G-5.08; number of pins: 12; pin pitch: 5.08mm; Angled || order number: 1836286 8A 320V +phoenix_contact connector MC_01x12_G_5.08mm +0 +12 +12 +Connector_Phoenix_MC_HighVoltage +PhoenixContact_MC_1,5_12-GF-5.08_1x12_P5.08mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MC_1,5/12-GF-5.08; number of pins: 12; pin pitch: 5.08mm; Angled; threaded flange || order number: 1847563 8A 320V +phoenix_contact connector MC_01x12_GF_5.08mm +0 +12 +12 +Connector_Phoenix_MC_HighVoltage +PhoenixContact_MC_1,5_12-GF-5.08_1x12_P5.08mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MC_1,5/12-GF-5.08; number of pins: 12; pin pitch: 5.08mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x4.5 C or ISO 7049-ST 2.2x4.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1847563 8A 320V +phoenix_contact connector MC_01x12_GF_5.08mm_MH +0 +12 +12 +Connector_Phoenix_MSTB +PhoenixContact_MSTBA_2,5_2-G-5,08_1x02_P5.08mm_Horizontal +Generic Phoenix Contact connector footprint for: MSTBA_2,5/2-G-5,08; number of pins: 02; pin pitch: 5.08mm; Angled || order number: 1757242 12A || order number: 1923869 16A (HC) +phoenix_contact connector MSTBA_01x02_G_5.08mm +0 +2 +2 +Connector_Phoenix_MSTB +PhoenixContact_MSTBA_2,5_2-G_1x02_P5.00mm_Horizontal +Generic Phoenix Contact connector footprint for: MSTBA_2,5/2-G; number of pins: 02; pin pitch: 5.00mm; Angled || order number: 1757475 12A || order number: 1923759 16A (HC) +phoenix_contact connector MSTBA_01x02_G_5.00mm +0 +2 +2 +Connector_Phoenix_MSTB +PhoenixContact_MSTBA_2,5_3-G-5,08_1x03_P5.08mm_Horizontal +Generic Phoenix Contact connector footprint for: MSTBA_2,5/3-G-5,08; number of pins: 03; pin pitch: 5.08mm; Angled || order number: 1757255 12A || order number: 1923872 16A (HC) +phoenix_contact connector MSTBA_01x03_G_5.08mm +0 +3 +3 +Connector_Phoenix_MSTB +PhoenixContact_MSTBA_2,5_3-G_1x03_P5.00mm_Horizontal +Generic Phoenix Contact connector footprint for: MSTBA_2,5/3-G; number of pins: 03; pin pitch: 5.00mm; Angled || order number: 1757488 12A || order number: 1923762 16A (HC) +phoenix_contact connector MSTBA_01x03_G_5.00mm +0 +3 +3 +Connector_Phoenix_MSTB +PhoenixContact_MSTBA_2,5_4-G-5,08_1x04_P5.08mm_Horizontal +Generic Phoenix Contact connector footprint for: MSTBA_2,5/4-G-5,08; number of pins: 04; pin pitch: 5.08mm; Angled || order number: 1757268 12A || order number: 1923885 16A (HC) +phoenix_contact connector MSTBA_01x04_G_5.08mm +0 +4 +4 +Connector_Phoenix_MSTB +PhoenixContact_MSTBA_2,5_4-G_1x04_P5.00mm_Horizontal +Generic Phoenix Contact connector footprint for: MSTBA_2,5/4-G; number of pins: 04; pin pitch: 5.00mm; Angled || order number: 1757491 12A || order number: 1923775 16A (HC) +phoenix_contact connector MSTBA_01x04_G_5.00mm +0 +4 +4 +Connector_Phoenix_MSTB +PhoenixContact_MSTBA_2,5_5-G-5,08_1x05_P5.08mm_Horizontal +Generic Phoenix Contact connector footprint for: MSTBA_2,5/5-G-5,08; number of pins: 05; pin pitch: 5.08mm; Angled || order number: 1757271 12A || order number: 1923898 16A (HC) +phoenix_contact connector MSTBA_01x05_G_5.08mm +0 +5 +5 +Connector_Phoenix_MSTB +PhoenixContact_MSTBA_2,5_5-G_1x05_P5.00mm_Horizontal +Generic Phoenix Contact connector footprint for: MSTBA_2,5/5-G; number of pins: 05; pin pitch: 5.00mm; Angled || order number: 1757501 12A || order number: 1923788 16A (HC) +phoenix_contact connector MSTBA_01x05_G_5.00mm +0 +5 +5 +Connector_Phoenix_MSTB +PhoenixContact_MSTBA_2,5_6-G-5,08_1x06_P5.08mm_Horizontal +Generic Phoenix Contact connector footprint for: MSTBA_2,5/6-G-5,08; number of pins: 06; pin pitch: 5.08mm; Angled || order number: 1757284 12A || order number: 1923908 16A (HC) +phoenix_contact connector MSTBA_01x06_G_5.08mm +0 +6 +6 +Connector_Phoenix_MSTB +PhoenixContact_MSTBA_2,5_6-G_1x06_P5.00mm_Horizontal +Generic Phoenix Contact connector footprint for: MSTBA_2,5/6-G; number of pins: 06; pin pitch: 5.00mm; Angled || order number: 1757514 12A || order number: 1923791 16A (HC) +phoenix_contact connector MSTBA_01x06_G_5.00mm +0 +6 +6 +Connector_Phoenix_MSTB +PhoenixContact_MSTBA_2,5_7-G-5,08_1x07_P5.08mm_Horizontal +Generic Phoenix Contact connector footprint for: MSTBA_2,5/7-G-5,08; number of pins: 07; pin pitch: 5.08mm; Angled || order number: 1757297 12A || order number: 1923911 16A (HC) +phoenix_contact connector MSTBA_01x07_G_5.08mm +0 +7 +7 +Connector_Phoenix_MSTB +PhoenixContact_MSTBA_2,5_7-G_1x07_P5.00mm_Horizontal +Generic Phoenix Contact connector footprint for: MSTBA_2,5/7-G; number of pins: 07; pin pitch: 5.00mm; Angled || order number: 1757493 12A || order number: 1923801 16A (HC) +phoenix_contact connector MSTBA_01x07_G_5.00mm +0 +7 +7 +Connector_Phoenix_MSTB +PhoenixContact_MSTBA_2,5_8-G-5,08_1x08_P5.08mm_Horizontal +Generic Phoenix Contact connector footprint for: MSTBA_2,5/8-G-5,08; number of pins: 08; pin pitch: 5.08mm; Angled || order number: 1757307 12A || order number: 1923924 16A (HC) +phoenix_contact connector MSTBA_01x08_G_5.08mm +0 +8 +8 +Connector_Phoenix_MSTB +PhoenixContact_MSTBA_2,5_8-G_1x08_P5.00mm_Horizontal +Generic Phoenix Contact connector footprint for: MSTBA_2,5/8-G; number of pins: 08; pin pitch: 5.00mm; Angled || order number: 1757527 12A || order number: 1923814 16A (HC) +phoenix_contact connector MSTBA_01x08_G_5.00mm +0 +8 +8 +Connector_Phoenix_MSTB +PhoenixContact_MSTBA_2,5_9-G-5,08_1x09_P5.08mm_Horizontal +Generic Phoenix Contact connector footprint for: MSTBA_2,5/9-G-5,08; number of pins: 09; pin pitch: 5.08mm; Angled || order number: 1757310 12A || order number: 1923937 16A (HC) +phoenix_contact connector MSTBA_01x09_G_5.08mm +0 +9 +9 +Connector_Phoenix_MSTB +PhoenixContact_MSTBA_2,5_9-G_1x09_P5.00mm_Horizontal +Generic Phoenix Contact connector footprint for: MSTBA_2,5/9-G; number of pins: 09; pin pitch: 5.00mm; Angled || order number: 1757530 12A || order number: 1923827 16A (HC) +phoenix_contact connector MSTBA_01x09_G_5.00mm +0 +9 +9 +Connector_Phoenix_MSTB +PhoenixContact_MSTBA_2,5_10-G-5,08_1x10_P5.08mm_Horizontal +Generic Phoenix Contact connector footprint for: MSTBA_2,5/10-G-5,08; number of pins: 10; pin pitch: 5.08mm; Angled || order number: 1757323 12A || order number: 1923940 16A (HC) +phoenix_contact connector MSTBA_01x10_G_5.08mm +0 +10 +10 +Connector_Phoenix_MSTB +PhoenixContact_MSTBA_2,5_10-G_1x10_P5.00mm_Horizontal +Generic Phoenix Contact connector footprint for: MSTBA_2,5/10-G; number of pins: 10; pin pitch: 5.00mm; Angled || order number: 1757543 12A || order number: 1923830 16A (HC) +phoenix_contact connector MSTBA_01x10_G_5.00mm +0 +10 +10 +Connector_Phoenix_MSTB +PhoenixContact_MSTBA_2,5_11-G-5,08_1x11_P5.08mm_Horizontal +Generic Phoenix Contact connector footprint for: MSTBA_2,5/11-G-5,08; number of pins: 11; pin pitch: 5.08mm; Angled || order number: 1757336 12A || order number: 1923953 16A (HC) +phoenix_contact connector MSTBA_01x11_G_5.08mm +0 +11 +11 +Connector_Phoenix_MSTB +PhoenixContact_MSTBA_2,5_11-G_1x11_P5.00mm_Horizontal +Generic Phoenix Contact connector footprint for: MSTBA_2,5/11-G; number of pins: 11; pin pitch: 5.00mm; Angled || order number: 1757556 12A || order number: 1923843 16A (HC) +phoenix_contact connector MSTBA_01x11_G_5.00mm +0 +11 +11 +Connector_Phoenix_MSTB +PhoenixContact_MSTBA_2,5_12-G-5,08_1x12_P5.08mm_Horizontal +Generic Phoenix Contact connector footprint for: MSTBA_2,5/12-G-5,08; number of pins: 12; pin pitch: 5.08mm; Angled || order number: 1757349 12A || order number: 1923966 16A (HC) +phoenix_contact connector MSTBA_01x12_G_5.08mm +0 +12 +12 +Connector_Phoenix_MSTB +PhoenixContact_MSTBA_2,5_12-G_1x12_P5.00mm_Horizontal +Generic Phoenix Contact connector footprint for: MSTBA_2,5/12-G; number of pins: 12; pin pitch: 5.00mm; Angled || order number: 1757569 12A || order number: 1923856 16A (HC) +phoenix_contact connector MSTBA_01x12_G_5.00mm +0 +12 +12 +Connector_Phoenix_MSTB +PhoenixContact_MSTBA_2,5_13-G-5,08_1x13_P5.08mm_Horizontal +Generic Phoenix Contact connector footprint for: MSTBA_2,5/13-G-5,08; number of pins: 13; pin pitch: 5.08mm; Angled || order number: 1757352 12A +phoenix_contact connector MSTBA_01x13_G_5.08mm +0 +13 +13 +Connector_Phoenix_MSTB +PhoenixContact_MSTBA_2,5_13-G_1x13_P5.00mm_Horizontal +Generic Phoenix Contact connector footprint for: MSTBA_2,5/13-G; number of pins: 13; pin pitch: 5.00mm; Angled || order number: 1757572 12A +phoenix_contact connector MSTBA_01x13_G_5.00mm +0 +13 +13 +Connector_Phoenix_MSTB +PhoenixContact_MSTBA_2,5_14-G-5,08_1x14_P5.08mm_Horizontal +Generic Phoenix Contact connector footprint for: MSTBA_2,5/14-G-5,08; number of pins: 14; pin pitch: 5.08mm; Angled || order number: 1757365 12A +phoenix_contact connector MSTBA_01x14_G_5.08mm +0 +14 +14 +Connector_Phoenix_MSTB +PhoenixContact_MSTBA_2,5_14-G_1x14_P5.00mm_Horizontal +Generic Phoenix Contact connector footprint for: MSTBA_2,5/14-G; number of pins: 14; pin pitch: 5.00mm; Angled || order number: 1757585 12A +phoenix_contact connector MSTBA_01x14_G_5.00mm +0 +14 +14 +Connector_Phoenix_MSTB +PhoenixContact_MSTBA_2,5_15-G-5,08_1x15_P5.08mm_Horizontal +Generic Phoenix Contact connector footprint for: MSTBA_2,5/15-G-5,08; number of pins: 15; pin pitch: 5.08mm; Angled || order number: 1757378 12A +phoenix_contact connector MSTBA_01x15_G_5.08mm +0 +15 +15 +Connector_Phoenix_MSTB +PhoenixContact_MSTBA_2,5_15-G_1x15_P5.00mm_Horizontal +Generic Phoenix Contact connector footprint for: MSTBA_2,5/15-G; number of pins: 15; pin pitch: 5.00mm; Angled || order number: 1757598 12A +phoenix_contact connector MSTBA_01x15_G_5.00mm +0 +15 +15 +Connector_Phoenix_MSTB +PhoenixContact_MSTBA_2,5_16-G-5,08_1x16_P5.08mm_Horizontal +Generic Phoenix Contact connector footprint for: MSTBA_2,5/16-G-5,08; number of pins: 16; pin pitch: 5.08mm; Angled || order number: 1757381 12A +phoenix_contact connector MSTBA_01x16_G_5.08mm +0 +16 +16 +Connector_Phoenix_MSTB +PhoenixContact_MSTBA_2,5_16-G_1x16_P5.00mm_Horizontal +Generic Phoenix Contact connector footprint for: MSTBA_2,5/16-G; number of pins: 16; pin pitch: 5.00mm; Angled || order number: 1757608 12A +phoenix_contact connector MSTBA_01x16_G_5.00mm +0 +16 +16 +Connector_Phoenix_MSTB +PhoenixContact_MSTBVA_2,5_2-G-5,08_1x02_P5.08mm_Vertical +Generic Phoenix Contact connector footprint for: MSTBVA_2,5/2-G-5,08; number of pins: 02; pin pitch: 5.08mm; Vertical || order number: 1755736 12A || order number: 1924305 16A (HC) +phoenix_contact connector MSTBVA_01x02_G_5.08mm +0 +2 +2 +Connector_Phoenix_MSTB +PhoenixContact_MSTBVA_2,5_2-G_1x02_P5.00mm_Vertical +Generic Phoenix Contact connector footprint for: MSTBVA_2,5/2-G; number of pins: 02; pin pitch: 5.00mm; Vertical || order number: 1755516 12A || order number: 1924198 16A (HC) +phoenix_contact connector MSTBVA_01x02_G_5.00mm +0 +2 +2 +Connector_Phoenix_MSTB +PhoenixContact_MSTBVA_2,5_3-G-5,08_1x03_P5.08mm_Vertical +Generic Phoenix Contact connector footprint for: MSTBVA_2,5/3-G-5,08; number of pins: 03; pin pitch: 5.08mm; Vertical || order number: 1755749 12A || order number: 1924318 16A (HC) +phoenix_contact connector MSTBVA_01x03_G_5.08mm +0 +3 +3 +Connector_Phoenix_MSTB +PhoenixContact_MSTBVA_2,5_3-G_1x03_P5.00mm_Vertical +Generic Phoenix Contact connector footprint for: MSTBVA_2,5/3-G; number of pins: 03; pin pitch: 5.00mm; Vertical || order number: 1755529 12A || order number: 1924208 16A (HC) +phoenix_contact connector MSTBVA_01x03_G_5.00mm +0 +3 +3 +Connector_Phoenix_MSTB +PhoenixContact_MSTBVA_2,5_4-G-5,08_1x04_P5.08mm_Vertical +Generic Phoenix Contact connector footprint for: MSTBVA_2,5/4-G-5,08; number of pins: 04; pin pitch: 5.08mm; Vertical || order number: 1755752 12A || order number: 1924321 16A (HC) +phoenix_contact connector MSTBVA_01x04_G_5.08mm +0 +4 +4 +Connector_Phoenix_MSTB +PhoenixContact_MSTBVA_2,5_4-G_1x04_P5.00mm_Vertical +Generic Phoenix Contact connector footprint for: MSTBVA_2,5/4-G; number of pins: 04; pin pitch: 5.00mm; Vertical || order number: 1755532 12A || order number: 1924211 16A (HC) +phoenix_contact connector MSTBVA_01x04_G_5.00mm +0 +4 +4 +Connector_Phoenix_MSTB +PhoenixContact_MSTBVA_2,5_5-G-5,08_1x05_P5.08mm_Vertical +Generic Phoenix Contact connector footprint for: MSTBVA_2,5/5-G-5,08; number of pins: 05; pin pitch: 5.08mm; Vertical || order number: 1755765 12A || order number: 1924334 16A (HC) +phoenix_contact connector MSTBVA_01x05_G_5.08mm +0 +5 +5 +Connector_Phoenix_MSTB +PhoenixContact_MSTBVA_2,5_5-G_1x05_P5.00mm_Vertical +Generic Phoenix Contact connector footprint for: MSTBVA_2,5/5-G; number of pins: 05; pin pitch: 5.00mm; Vertical || order number: 1755545 12A || order number: 1924224 16A (HC) +phoenix_contact connector MSTBVA_01x05_G_5.00mm +0 +5 +5 +Connector_Phoenix_MSTB +PhoenixContact_MSTBVA_2,5_6-G-5,08_1x06_P5.08mm_Vertical +Generic Phoenix Contact connector footprint for: MSTBVA_2,5/6-G-5,08; number of pins: 06; pin pitch: 5.08mm; Vertical || order number: 1755778 12A || order number: 1924347 16A (HC) +phoenix_contact connector MSTBVA_01x06_G_5.08mm +0 +6 +6 +Connector_Phoenix_MSTB +PhoenixContact_MSTBVA_2,5_6-G_1x06_P5.00mm_Vertical +Generic Phoenix Contact connector footprint for: MSTBVA_2,5/6-G; number of pins: 06; pin pitch: 5.00mm; Vertical || order number: 1755558 12A || order number: 1924237 16A (HC) +phoenix_contact connector MSTBVA_01x06_G_5.00mm +0 +6 +6 +Connector_Phoenix_MSTB +PhoenixContact_MSTBVA_2,5_7-G-5,08_1x07_P5.08mm_Vertical +Generic Phoenix Contact connector footprint for: MSTBVA_2,5/7-G-5,08; number of pins: 07; pin pitch: 5.08mm; Vertical || order number: 1755781 12A || order number: 1924350 16A (HC) +phoenix_contact connector MSTBVA_01x07_G_5.08mm +0 +7 +7 +Connector_Phoenix_MSTB +PhoenixContact_MSTBVA_2,5_7-G_1x07_P5.00mm_Vertical +Generic Phoenix Contact connector footprint for: MSTBVA_2,5/7-G; number of pins: 07; pin pitch: 5.00mm; Vertical || order number: 1755561 12A || order number: 1924240 16A (HC) +phoenix_contact connector MSTBVA_01x07_G_5.00mm +0 +7 +7 +Connector_Phoenix_MSTB +PhoenixContact_MSTBVA_2,5_8-G-5,08_1x08_P5.08mm_Vertical +Generic Phoenix Contact connector footprint for: MSTBVA_2,5/8-G-5,08; number of pins: 08; pin pitch: 5.08mm; Vertical || order number: 1755794 12A || order number: 1924363 16A (HC) +phoenix_contact connector MSTBVA_01x08_G_5.08mm +0 +8 +8 +Connector_Phoenix_MSTB +PhoenixContact_MSTBVA_2,5_8-G_1x08_P5.00mm_Vertical +Generic Phoenix Contact connector footprint for: MSTBVA_2,5/8-G; number of pins: 08; pin pitch: 5.00mm; Vertical || order number: 1755574 12A || order number: 1924253 16A (HC) +phoenix_contact connector MSTBVA_01x08_G_5.00mm +0 +8 +8 +Connector_Phoenix_MSTB +PhoenixContact_MSTBVA_2,5_9-G-5,08_1x09_P5.08mm_Vertical +Generic Phoenix Contact connector footprint for: MSTBVA_2,5/9-G-5,08; number of pins: 09; pin pitch: 5.08mm; Vertical || order number: 1755804 12A || order number: 1924376 16A (HC) +phoenix_contact connector MSTBVA_01x09_G_5.08mm +0 +9 +9 +Connector_Phoenix_MSTB +PhoenixContact_MSTBVA_2,5_9-G_1x09_P5.00mm_Vertical +Generic Phoenix Contact connector footprint for: MSTBVA_2,5/9-G; number of pins: 09; pin pitch: 5.00mm; Vertical || order number: 1755587 12A || order number: 1924266 16A (HC) +phoenix_contact connector MSTBVA_01x09_G_5.00mm +0 +9 +9 +Connector_Phoenix_MSTB +PhoenixContact_MSTBVA_2,5_10-G-5,08_1x10_P5.08mm_Vertical +Generic Phoenix Contact connector footprint for: MSTBVA_2,5/10-G-5,08; number of pins: 10; pin pitch: 5.08mm; Vertical || order number: 1755817 12A || order number: 1924389 16A (HC) +phoenix_contact connector MSTBVA_01x10_G_5.08mm +0 +10 +10 +Connector_Phoenix_MSTB +PhoenixContact_MSTBVA_2,5_10-G_1x10_P5.00mm_Vertical +Generic Phoenix Contact connector footprint for: MSTBVA_2,5/10-G; number of pins: 10; pin pitch: 5.00mm; Vertical || order number: 1755503 12A || order number: 1924279 16A (HC) +phoenix_contact connector MSTBVA_01x10_G_5.00mm +0 +10 +10 +Connector_Phoenix_MSTB +PhoenixContact_MSTBVA_2,5_11-G-5,08_1x11_P5.08mm_Vertical +Generic Phoenix Contact connector footprint for: MSTBVA_2,5/11-G-5,08; number of pins: 11; pin pitch: 5.08mm; Vertical || order number: 1755820 12A || order number: 1924392 16A (HC) +phoenix_contact connector MSTBVA_01x11_G_5.08mm +0 +11 +11 +Connector_Phoenix_MSTB +PhoenixContact_MSTBVA_2,5_11-G_1x11_P5.00mm_Vertical +Generic Phoenix Contact connector footprint for: MSTBVA_2,5/11-G; number of pins: 11; pin pitch: 5.00mm; Vertical || order number: 1755590 12A || order number: 1924282 16A (HC) +phoenix_contact connector MSTBVA_01x11_G_5.00mm +0 +11 +11 +Connector_Phoenix_MSTB +PhoenixContact_MSTBVA_2,5_12-G-5,08_1x12_P5.08mm_Vertical +Generic Phoenix Contact connector footprint for: MSTBVA_2,5/12-G-5,08; number of pins: 12; pin pitch: 5.08mm; Vertical || order number: 1755833 12A || order number: 1924402 16A (HC) +phoenix_contact connector MSTBVA_01x12_G_5.08mm +0 +12 +12 +Connector_Phoenix_MSTB +PhoenixContact_MSTBVA_2,5_12-G_1x12_P5.00mm_Vertical +Generic Phoenix Contact connector footprint for: MSTBVA_2,5/12-G; number of pins: 12; pin pitch: 5.00mm; Vertical || order number: 1755600 12A || order number: 1924295 16A (HC) +phoenix_contact connector MSTBVA_01x12_G_5.00mm +0 +12 +12 +Connector_Phoenix_MSTB +PhoenixContact_MSTBVA_2,5_13-G-5,08_1x13_P5.08mm_Vertical +Generic Phoenix Contact connector footprint for: MSTBVA_2,5/13-G-5,08; number of pins: 13; pin pitch: 5.08mm; Vertical || order number: 1755846 12A +phoenix_contact connector MSTBVA_01x13_G_5.08mm +0 +13 +13 +Connector_Phoenix_MSTB +PhoenixContact_MSTBVA_2,5_13-G_1x13_P5.00mm_Vertical +Generic Phoenix Contact connector footprint for: MSTBVA_2,5/13-G; number of pins: 13; pin pitch: 5.00mm; Vertical || order number: 1755613 12A +phoenix_contact connector MSTBVA_01x13_G_5.00mm +0 +13 +13 +Connector_Phoenix_MSTB +PhoenixContact_MSTBVA_2,5_14-G-5,08_1x14_P5.08mm_Vertical +Generic Phoenix Contact connector footprint for: MSTBVA_2,5/14-G-5,08; number of pins: 14; pin pitch: 5.08mm; Vertical || order number: 1755859 12A +phoenix_contact connector MSTBVA_01x14_G_5.08mm +0 +14 +14 +Connector_Phoenix_MSTB +PhoenixContact_MSTBVA_2,5_14-G_1x14_P5.00mm_Vertical +Generic Phoenix Contact connector footprint for: MSTBVA_2,5/14-G; number of pins: 14; pin pitch: 5.00mm; Vertical || order number: 1755626 12A +phoenix_contact connector MSTBVA_01x14_G_5.00mm +0 +14 +14 +Connector_Phoenix_MSTB +PhoenixContact_MSTBVA_2,5_15-G-5,08_1x15_P5.08mm_Vertical +Generic Phoenix Contact connector footprint for: MSTBVA_2,5/15-G-5,08; number of pins: 15; pin pitch: 5.08mm; Vertical || order number: 1755862 12A +phoenix_contact connector MSTBVA_01x15_G_5.08mm +0 +15 +15 +Connector_Phoenix_MSTB +PhoenixContact_MSTBVA_2,5_15-G_1x15_P5.00mm_Vertical +Generic Phoenix Contact connector footprint for: MSTBVA_2,5/15-G; number of pins: 15; pin pitch: 5.00mm; Vertical || order number: 1755639 12A +phoenix_contact connector MSTBVA_01x15_G_5.00mm +0 +15 +15 +Connector_Phoenix_MSTB +PhoenixContact_MSTBVA_2,5_16-G-5,08_1x16_P5.08mm_Vertical +Generic Phoenix Contact connector footprint for: MSTBVA_2,5/16-G-5,08; number of pins: 16; pin pitch: 5.08mm; Vertical || order number: 1755875 12A +phoenix_contact connector MSTBVA_01x16_G_5.08mm +0 +16 +16 +Connector_Phoenix_MSTB +PhoenixContact_MSTBVA_2,5_16-G_1x16_P5.00mm_Vertical +Generic Phoenix Contact connector footprint for: MSTBVA_2,5/16-G; number of pins: 16; pin pitch: 5.00mm; Vertical || order number: 1755642 12A +phoenix_contact connector MSTBVA_01x16_G_5.00mm +0 +16 +16 +Connector_Phoenix_MSTB +PhoenixContact_MSTBV_2,5_2-GF-5,08_1x02_P5.08mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MSTBV_2,5/2-GF-5,08; number of pins: 02; pin pitch: 5.08mm; Vertical; threaded flange || order number: 1777073 12A || order number: 1924525 16A (HC) +phoenix_contact connector MSTBV_01x02_GF_5.08mm +0 +2 +2 +Connector_Phoenix_MSTB +PhoenixContact_MSTBV_2,5_2-GF-5,08_1x02_P5.08mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MSTBV_2,5/2-GF-5,08; number of pins: 02; pin pitch: 5.08mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1777073 12A || order number: 1924525 16A (HC) +phoenix_contact connector MSTBV_01x02_GF_5.08mm_MH +0 +2 +2 +Connector_Phoenix_MSTB +PhoenixContact_MSTBV_2,5_2-GF_1x02_P5.00mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MSTBV_2,5/2-GF; number of pins: 02; pin pitch: 5.00mm; Vertical; threaded flange || order number: 1776883 12A || order number: 1924415 16A (HC) +phoenix_contact connector MSTBV_01x02_GF_5.00mm +0 +2 +2 +Connector_Phoenix_MSTB +PhoenixContact_MSTBV_2,5_2-GF_1x02_P5.00mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MSTBV_2,5/2-GF; number of pins: 02; pin pitch: 5.00mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1776883 12A || order number: 1924415 16A (HC) +phoenix_contact connector MSTBV_01x02_GF_5.00mm_MH +0 +2 +2 +Connector_Phoenix_MSTB +PhoenixContact_MSTBV_2,5_3-GF-5,08_1x03_P5.08mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MSTBV_2,5/3-GF-5,08; number of pins: 03; pin pitch: 5.08mm; Vertical; threaded flange || order number: 1777086 12A || order number: 1924538 16A (HC) +phoenix_contact connector MSTBV_01x03_GF_5.08mm +0 +3 +3 +Connector_Phoenix_MSTB +PhoenixContact_MSTBV_2,5_3-GF-5,08_1x03_P5.08mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MSTBV_2,5/3-GF-5,08; number of pins: 03; pin pitch: 5.08mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1777086 12A || order number: 1924538 16A (HC) +phoenix_contact connector MSTBV_01x03_GF_5.08mm_MH +0 +3 +3 +Connector_Phoenix_MSTB +PhoenixContact_MSTBV_2,5_3-GF_1x03_P5.00mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MSTBV_2,5/3-GF; number of pins: 03; pin pitch: 5.00mm; Vertical; threaded flange || order number: 1776896 12A || order number: 1924428 16A (HC) +phoenix_contact connector MSTBV_01x03_GF_5.00mm +0 +3 +3 +Connector_Phoenix_MSTB +PhoenixContact_MSTBV_2,5_3-GF_1x03_P5.00mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MSTBV_2,5/3-GF; number of pins: 03; pin pitch: 5.00mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1776896 12A || order number: 1924428 16A (HC) +phoenix_contact connector MSTBV_01x03_GF_5.00mm_MH +0 +3 +3 +Connector_Phoenix_MSTB +PhoenixContact_MSTBV_2,5_4-GF-5,08_1x04_P5.08mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MSTBV_2,5/4-GF-5,08; number of pins: 04; pin pitch: 5.08mm; Vertical; threaded flange || order number: 1777099 12A || order number: 1924541 16A (HC) +phoenix_contact connector MSTBV_01x04_GF_5.08mm +0 +4 +4 +Connector_Phoenix_MSTB +PhoenixContact_MSTBV_2,5_4-GF-5,08_1x04_P5.08mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MSTBV_2,5/4-GF-5,08; number of pins: 04; pin pitch: 5.08mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1777099 12A || order number: 1924541 16A (HC) +phoenix_contact connector MSTBV_01x04_GF_5.08mm_MH +0 +4 +4 +Connector_Phoenix_MSTB +PhoenixContact_MSTBV_2,5_4-GF_1x04_P5.00mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MSTBV_2,5/4-GF; number of pins: 04; pin pitch: 5.00mm; Vertical; threaded flange || order number: 1776906 12A || order number: 1924431 16A (HC) +phoenix_contact connector MSTBV_01x04_GF_5.00mm +0 +4 +4 +Connector_Phoenix_MSTB +PhoenixContact_MSTBV_2,5_4-GF_1x04_P5.00mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MSTBV_2,5/4-GF; number of pins: 04; pin pitch: 5.00mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1776906 12A || order number: 1924431 16A (HC) +phoenix_contact connector MSTBV_01x04_GF_5.00mm_MH +0 +4 +4 +Connector_Phoenix_MSTB +PhoenixContact_MSTBV_2,5_5-GF-5,08_1x05_P5.08mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MSTBV_2,5/5-GF-5,08; number of pins: 05; pin pitch: 5.08mm; Vertical; threaded flange || order number: 1777109 12A || order number: 1924554 16A (HC) +phoenix_contact connector MSTBV_01x05_GF_5.08mm +0 +5 +5 +Connector_Phoenix_MSTB +PhoenixContact_MSTBV_2,5_5-GF-5,08_1x05_P5.08mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MSTBV_2,5/5-GF-5,08; number of pins: 05; pin pitch: 5.08mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1777109 12A || order number: 1924554 16A (HC) +phoenix_contact connector MSTBV_01x05_GF_5.08mm_MH +0 +5 +5 +Connector_Phoenix_MSTB +PhoenixContact_MSTBV_2,5_5-GF_1x05_P5.00mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MSTBV_2,5/5-GF; number of pins: 05; pin pitch: 5.00mm; Vertical; threaded flange || order number: 1776919 12A || order number: 1924444 16A (HC) +phoenix_contact connector MSTBV_01x05_GF_5.00mm +0 +5 +5 +Connector_Phoenix_MSTB +PhoenixContact_MSTBV_2,5_5-GF_1x05_P5.00mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MSTBV_2,5/5-GF; number of pins: 05; pin pitch: 5.00mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1776919 12A || order number: 1924444 16A (HC) +phoenix_contact connector MSTBV_01x05_GF_5.00mm_MH +0 +5 +5 +Connector_Phoenix_MSTB +PhoenixContact_MSTBV_2,5_6-GF-5,08_1x06_P5.08mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MSTBV_2,5/6-GF-5,08; number of pins: 06; pin pitch: 5.08mm; Vertical; threaded flange || order number: 1777112 12A || order number: 1924567 16A (HC) +phoenix_contact connector MSTBV_01x06_GF_5.08mm +0 +6 +6 +Connector_Phoenix_MSTB +PhoenixContact_MSTBV_2,5_6-GF-5,08_1x06_P5.08mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MSTBV_2,5/6-GF-5,08; number of pins: 06; pin pitch: 5.08mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1777112 12A || order number: 1924567 16A (HC) +phoenix_contact connector MSTBV_01x06_GF_5.08mm_MH +0 +6 +6 +Connector_Phoenix_MSTB +PhoenixContact_MSTBV_2,5_6-GF_1x06_P5.00mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MSTBV_2,5/6-GF; number of pins: 06; pin pitch: 5.00mm; Vertical; threaded flange || order number: 1776922 12A || order number: 1924457 16A (HC) +phoenix_contact connector MSTBV_01x06_GF_5.00mm +0 +6 +6 +Connector_Phoenix_MSTB +PhoenixContact_MSTBV_2,5_6-GF_1x06_P5.00mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MSTBV_2,5/6-GF; number of pins: 06; pin pitch: 5.00mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1776922 12A || order number: 1924457 16A (HC) +phoenix_contact connector MSTBV_01x06_GF_5.00mm_MH +0 +6 +6 +Connector_Phoenix_MSTB +PhoenixContact_MSTBV_2,5_7-GF-5,08_1x07_P5.08mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MSTBV_2,5/7-GF-5,08; number of pins: 07; pin pitch: 5.08mm; Vertical; threaded flange || order number: 1777125 12A || order number: 1924570 16A (HC) +phoenix_contact connector MSTBV_01x07_GF_5.08mm +0 +7 +7 +Connector_Phoenix_MSTB +PhoenixContact_MSTBV_2,5_7-GF-5,08_1x07_P5.08mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MSTBV_2,5/7-GF-5,08; number of pins: 07; pin pitch: 5.08mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1777125 12A || order number: 1924570 16A (HC) +phoenix_contact connector MSTBV_01x07_GF_5.08mm_MH +0 +7 +7 +Connector_Phoenix_MSTB +PhoenixContact_MSTBV_2,5_7-GF_1x07_P5.00mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MSTBV_2,5/7-GF; number of pins: 07; pin pitch: 5.00mm; Vertical; threaded flange || order number: 1776935 12A || order number: 1924460 16A (HC) +phoenix_contact connector MSTBV_01x07_GF_5.00mm +0 +7 +7 +Connector_Phoenix_MSTB +PhoenixContact_MSTBV_2,5_7-GF_1x07_P5.00mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MSTBV_2,5/7-GF; number of pins: 07; pin pitch: 5.00mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1776935 12A || order number: 1924460 16A (HC) +phoenix_contact connector MSTBV_01x07_GF_5.00mm_MH +0 +7 +7 +Connector_Phoenix_MSTB +PhoenixContact_MSTBV_2,5_8-GF-5,08_1x08_P5.08mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MSTBV_2,5/8-GF-5,08; number of pins: 08; pin pitch: 5.08mm; Vertical; threaded flange || order number: 1777138 12A || order number: 1924583 16A (HC) +phoenix_contact connector MSTBV_01x08_GF_5.08mm +0 +8 +8 +Connector_Phoenix_MSTB +PhoenixContact_MSTBV_2,5_8-GF-5,08_1x08_P5.08mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MSTBV_2,5/8-GF-5,08; number of pins: 08; pin pitch: 5.08mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1777138 12A || order number: 1924583 16A (HC) +phoenix_contact connector MSTBV_01x08_GF_5.08mm_MH +0 +8 +8 +Connector_Phoenix_MSTB +PhoenixContact_MSTBV_2,5_8-GF_1x08_P5.00mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MSTBV_2,5/8-GF; number of pins: 08; pin pitch: 5.00mm; Vertical; threaded flange || order number: 1776948 12A || order number: 1924473 16A (HC) +phoenix_contact connector MSTBV_01x08_GF_5.00mm +0 +8 +8 +Connector_Phoenix_MSTB +PhoenixContact_MSTBV_2,5_8-GF_1x08_P5.00mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MSTBV_2,5/8-GF; number of pins: 08; pin pitch: 5.00mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1776948 12A || order number: 1924473 16A (HC) +phoenix_contact connector MSTBV_01x08_GF_5.00mm_MH +0 +8 +8 +Connector_Phoenix_MSTB +PhoenixContact_MSTBV_2,5_9-GF-5,08_1x09_P5.08mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MSTBV_2,5/9-GF-5,08; number of pins: 09; pin pitch: 5.08mm; Vertical; threaded flange || order number: 1777141 12A || order number: 1924596 16A (HC) +phoenix_contact connector MSTBV_01x09_GF_5.08mm +0 +9 +9 +Connector_Phoenix_MSTB +PhoenixContact_MSTBV_2,5_9-GF-5,08_1x09_P5.08mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MSTBV_2,5/9-GF-5,08; number of pins: 09; pin pitch: 5.08mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1777141 12A || order number: 1924596 16A (HC) +phoenix_contact connector MSTBV_01x09_GF_5.08mm_MH +0 +9 +9 +Connector_Phoenix_MSTB +PhoenixContact_MSTBV_2,5_9-GF_1x09_P5.00mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MSTBV_2,5/9-GF; number of pins: 09; pin pitch: 5.00mm; Vertical; threaded flange || order number: 1776951 12A || order number: 1924486 16A (HC) +phoenix_contact connector MSTBV_01x09_GF_5.00mm +0 +9 +9 +Connector_Phoenix_MSTB +PhoenixContact_MSTBV_2,5_9-GF_1x09_P5.00mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MSTBV_2,5/9-GF; number of pins: 09; pin pitch: 5.00mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1776951 12A || order number: 1924486 16A (HC) +phoenix_contact connector MSTBV_01x09_GF_5.00mm_MH +0 +9 +9 +Connector_Phoenix_MSTB +PhoenixContact_MSTBV_2,5_10-GF-5,08_1x10_P5.08mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MSTBV_2,5/10-GF-5,08; number of pins: 10; pin pitch: 5.08mm; Vertical; threaded flange || order number: 1777154 12A || order number: 1924606 16A (HC) +phoenix_contact connector MSTBV_01x10_GF_5.08mm +0 +10 +10 +Connector_Phoenix_MSTB +PhoenixContact_MSTBV_2,5_10-GF-5,08_1x10_P5.08mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MSTBV_2,5/10-GF-5,08; number of pins: 10; pin pitch: 5.08mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1777154 12A || order number: 1924606 16A (HC) +phoenix_contact connector MSTBV_01x10_GF_5.08mm_MH +0 +10 +10 +Connector_Phoenix_MSTB +PhoenixContact_MSTBV_2,5_10-GF_1x10_P5.00mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MSTBV_2,5/10-GF; number of pins: 10; pin pitch: 5.00mm; Vertical; threaded flange || order number: 1776964 12A || order number: 1924499 16A (HC) +phoenix_contact connector MSTBV_01x10_GF_5.00mm +0 +10 +10 +Connector_Phoenix_MSTB +PhoenixContact_MSTBV_2,5_10-GF_1x10_P5.00mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MSTBV_2,5/10-GF; number of pins: 10; pin pitch: 5.00mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1776964 12A || order number: 1924499 16A (HC) +phoenix_contact connector MSTBV_01x10_GF_5.00mm_MH +0 +10 +10 +Connector_Phoenix_MSTB +PhoenixContact_MSTBV_2,5_11-GF-5,08_1x11_P5.08mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MSTBV_2,5/11-GF-5,08; number of pins: 11; pin pitch: 5.08mm; Vertical; threaded flange || order number: 1777167 12A || order number: 1924619 16A (HC) +phoenix_contact connector MSTBV_01x11_GF_5.08mm +0 +11 +11 +Connector_Phoenix_MSTB +PhoenixContact_MSTBV_2,5_11-GF-5,08_1x11_P5.08mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MSTBV_2,5/11-GF-5,08; number of pins: 11; pin pitch: 5.08mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1777167 12A || order number: 1924619 16A (HC) +phoenix_contact connector MSTBV_01x11_GF_5.08mm_MH +0 +11 +11 +Connector_Phoenix_MSTB +PhoenixContact_MSTBV_2,5_11-GF_1x11_P5.00mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MSTBV_2,5/11-GF; number of pins: 11; pin pitch: 5.00mm; Vertical; threaded flange || order number: 1776977 12A || order number: 1924509 16A (HC) +phoenix_contact connector MSTBV_01x11_GF_5.00mm +0 +11 +11 +Connector_Phoenix_MSTB +PhoenixContact_MSTBV_2,5_11-GF_1x11_P5.00mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MSTBV_2,5/11-GF; number of pins: 11; pin pitch: 5.00mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1776977 12A || order number: 1924509 16A (HC) +phoenix_contact connector MSTBV_01x11_GF_5.00mm_MH +0 +11 +11 +Connector_Phoenix_MSTB +PhoenixContact_MSTBV_2,5_12-GF-5,08_1x12_P5.08mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MSTBV_2,5/12-GF-5,08; number of pins: 12; pin pitch: 5.08mm; Vertical; threaded flange || order number: 1777170 12A || order number: 1924622 16A (HC) +phoenix_contact connector MSTBV_01x12_GF_5.08mm +0 +12 +12 +Connector_Phoenix_MSTB +PhoenixContact_MSTBV_2,5_12-GF-5,08_1x12_P5.08mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MSTBV_2,5/12-GF-5,08; number of pins: 12; pin pitch: 5.08mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1777170 12A || order number: 1924622 16A (HC) +phoenix_contact connector MSTBV_01x12_GF_5.08mm_MH +0 +12 +12 +Connector_Phoenix_MSTB +PhoenixContact_MSTBV_2,5_12-GF_1x12_P5.00mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MSTBV_2,5/12-GF; number of pins: 12; pin pitch: 5.00mm; Vertical; threaded flange || order number: 1776980 12A || order number: 1924512 16A (HC) +phoenix_contact connector MSTBV_01x12_GF_5.00mm +0 +12 +12 +Connector_Phoenix_MSTB +PhoenixContact_MSTBV_2,5_12-GF_1x12_P5.00mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MSTBV_2,5/12-GF; number of pins: 12; pin pitch: 5.00mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1776980 12A || order number: 1924512 16A (HC) +phoenix_contact connector MSTBV_01x12_GF_5.00mm_MH +0 +12 +12 +Connector_Phoenix_MSTB +PhoenixContact_MSTBV_2,5_13-GF-5,08_1x13_P5.08mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MSTBV_2,5/13-GF-5,08; number of pins: 13; pin pitch: 5.08mm; Vertical; threaded flange || order number: 1777183 12A +phoenix_contact connector MSTBV_01x13_GF_5.08mm +0 +13 +13 +Connector_Phoenix_MSTB +PhoenixContact_MSTBV_2,5_13-GF-5,08_1x13_P5.08mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MSTBV_2,5/13-GF-5,08; number of pins: 13; pin pitch: 5.08mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1777183 12A +phoenix_contact connector MSTBV_01x13_GF_5.08mm_MH +0 +13 +13 +Connector_Phoenix_MSTB +PhoenixContact_MSTBV_2,5_13-GF_1x13_P5.00mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MSTBV_2,5/13-GF; number of pins: 13; pin pitch: 5.00mm; Vertical; threaded flange || order number: 1776993 12A +phoenix_contact connector MSTBV_01x13_GF_5.00mm +0 +13 +13 +Connector_Phoenix_MSTB +PhoenixContact_MSTBV_2,5_13-GF_1x13_P5.00mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MSTBV_2,5/13-GF; number of pins: 13; pin pitch: 5.00mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1776993 12A +phoenix_contact connector MSTBV_01x13_GF_5.00mm_MH +0 +13 +13 +Connector_Phoenix_MSTB +PhoenixContact_MSTBV_2,5_14-GF-5,08_1x14_P5.08mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MSTBV_2,5/14-GF-5,08; number of pins: 14; pin pitch: 5.08mm; Vertical; threaded flange || order number: 1777196 12A +phoenix_contact connector MSTBV_01x14_GF_5.08mm +0 +14 +14 +Connector_Phoenix_MSTB +PhoenixContact_MSTBV_2,5_14-GF-5,08_1x14_P5.08mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MSTBV_2,5/14-GF-5,08; number of pins: 14; pin pitch: 5.08mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1777196 12A +phoenix_contact connector MSTBV_01x14_GF_5.08mm_MH +0 +14 +14 +Connector_Phoenix_MSTB +PhoenixContact_MSTBV_2,5_14-GF_1x14_P5.00mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MSTBV_2,5/14-GF; number of pins: 14; pin pitch: 5.00mm; Vertical; threaded flange || order number: 1776002 12A +phoenix_contact connector MSTBV_01x14_GF_5.00mm +0 +14 +14 +Connector_Phoenix_MSTB +PhoenixContact_MSTBV_2,5_14-GF_1x14_P5.00mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MSTBV_2,5/14-GF; number of pins: 14; pin pitch: 5.00mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1776002 12A +phoenix_contact connector MSTBV_01x14_GF_5.00mm_MH +0 +14 +14 +Connector_Phoenix_MSTB +PhoenixContact_MSTBV_2,5_15-GF-5,08_1x15_P5.08mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MSTBV_2,5/15-GF-5,08; number of pins: 15; pin pitch: 5.08mm; Vertical; threaded flange || order number: 1777206 12A +phoenix_contact connector MSTBV_01x15_GF_5.08mm +0 +15 +15 +Connector_Phoenix_MSTB +PhoenixContact_MSTBV_2,5_15-GF-5,08_1x15_P5.08mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MSTBV_2,5/15-GF-5,08; number of pins: 15; pin pitch: 5.08mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1777206 12A +phoenix_contact connector MSTBV_01x15_GF_5.08mm_MH +0 +15 +15 +Connector_Phoenix_MSTB +PhoenixContact_MSTBV_2,5_15-GF_1x15_P5.00mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MSTBV_2,5/15-GF; number of pins: 15; pin pitch: 5.00mm; Vertical; threaded flange || order number: 1776015 12A +phoenix_contact connector MSTBV_01x15_GF_5.00mm +0 +15 +15 +Connector_Phoenix_MSTB +PhoenixContact_MSTBV_2,5_15-GF_1x15_P5.00mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MSTBV_2,5/15-GF; number of pins: 15; pin pitch: 5.00mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1776015 12A +phoenix_contact connector MSTBV_01x15_GF_5.00mm_MH +0 +15 +15 +Connector_Phoenix_MSTB +PhoenixContact_MSTBV_2,5_16-GF-5,08_1x16_P5.08mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MSTBV_2,5/16-GF-5,08; number of pins: 16; pin pitch: 5.08mm; Vertical; threaded flange || order number: 1777219 12A +phoenix_contact connector MSTBV_01x16_GF_5.08mm +0 +16 +16 +Connector_Phoenix_MSTB +PhoenixContact_MSTBV_2,5_16-GF-5,08_1x16_P5.08mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MSTBV_2,5/16-GF-5,08; number of pins: 16; pin pitch: 5.08mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1777219 12A +phoenix_contact connector MSTBV_01x16_GF_5.08mm_MH +0 +16 +16 +Connector_Phoenix_MSTB +PhoenixContact_MSTBV_2,5_16-GF_1x16_P5.00mm_Vertical_ThreadedFlange +Generic Phoenix Contact connector footprint for: MSTBV_2,5/16-GF; number of pins: 16; pin pitch: 5.00mm; Vertical; threaded flange || order number: 1776028 12A +phoenix_contact connector MSTBV_01x16_GF_5.00mm +0 +16 +16 +Connector_Phoenix_MSTB +PhoenixContact_MSTBV_2,5_16-GF_1x16_P5.00mm_Vertical_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MSTBV_2,5/16-GF; number of pins: 16; pin pitch: 5.00mm; Vertical; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1776028 12A +phoenix_contact connector MSTBV_01x16_GF_5.00mm_MH +0 +16 +16 +Connector_Phoenix_MSTB +PhoenixContact_MSTB_2,5_2-GF-5,08_1x02_P5.08mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MSTB_2,5/2-GF-5,08; number of pins: 02; pin pitch: 5.08mm; Angled; threaded flange || order number: 1776508 12A || order number: 1924088 16A (HC) +phoenix_contact connector MSTB_01x02_GF_5.08mm +0 +2 +2 +Connector_Phoenix_MSTB +PhoenixContact_MSTB_2,5_2-GF-5,08_1x02_P5.08mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MSTB_2,5/2-GF-5,08; number of pins: 02; pin pitch: 5.08mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1776508 12A || order number: 1924088 16A (HC) +phoenix_contact connector MSTB_01x02_GF_5.08mm_MH +0 +2 +2 +Connector_Phoenix_MSTB +PhoenixContact_MSTB_2,5_2-GF_1x02_P5.00mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MSTB_2,5/2-GF; number of pins: 02; pin pitch: 5.00mm; Angled; threaded flange || order number: 1776692 12A || order number: 1923979 16A (HC) +phoenix_contact connector MSTB_01x02_GF_5.00mm +0 +2 +2 +Connector_Phoenix_MSTB +PhoenixContact_MSTB_2,5_2-GF_1x02_P5.00mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MSTB_2,5/2-GF; number of pins: 02; pin pitch: 5.00mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1776692 12A || order number: 1923979 16A (HC) +phoenix_contact connector MSTB_01x02_GF_5.00mm_MH +0 +2 +2 +Connector_Phoenix_MSTB +PhoenixContact_MSTB_2,5_3-GF-5,08_1x03_P5.08mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MSTB_2,5/3-GF-5,08; number of pins: 03; pin pitch: 5.08mm; Angled; threaded flange || order number: 1776511 12A || order number: 1924091 16A (HC) +phoenix_contact connector MSTB_01x03_GF_5.08mm +0 +3 +3 +Connector_Phoenix_MSTB +PhoenixContact_MSTB_2,5_3-GF-5,08_1x03_P5.08mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MSTB_2,5/3-GF-5,08; number of pins: 03; pin pitch: 5.08mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1776511 12A || order number: 1924091 16A (HC) +phoenix_contact connector MSTB_01x03_GF_5.08mm_MH +0 +3 +3 +Connector_Phoenix_MSTB +PhoenixContact_MSTB_2,5_3-GF_1x03_P5.00mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MSTB_2,5/3-GF; number of pins: 03; pin pitch: 5.00mm; Angled; threaded flange || order number: 1776702 12A || order number: 1923982 16A (HC) +phoenix_contact connector MSTB_01x03_GF_5.00mm +0 +3 +3 +Connector_Phoenix_MSTB +PhoenixContact_MSTB_2,5_3-GF_1x03_P5.00mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MSTB_2,5/3-GF; number of pins: 03; pin pitch: 5.00mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1776702 12A || order number: 1923982 16A (HC) +phoenix_contact connector MSTB_01x03_GF_5.00mm_MH +0 +3 +3 +Connector_Phoenix_MSTB +PhoenixContact_MSTB_2,5_4-GF-5,08_1x04_P5.08mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MSTB_2,5/4-GF-5,08; number of pins: 04; pin pitch: 5.08mm; Angled; threaded flange || order number: 1776524 12A || order number: 1924101 16A (HC) +phoenix_contact connector MSTB_01x04_GF_5.08mm +0 +4 +4 +Connector_Phoenix_MSTB +PhoenixContact_MSTB_2,5_4-GF-5,08_1x04_P5.08mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MSTB_2,5/4-GF-5,08; number of pins: 04; pin pitch: 5.08mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1776524 12A || order number: 1924101 16A (HC) +phoenix_contact connector MSTB_01x04_GF_5.08mm_MH +0 +4 +4 +Connector_Phoenix_MSTB +PhoenixContact_MSTB_2,5_4-GF_1x04_P5.00mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MSTB_2,5/4-GF; number of pins: 04; pin pitch: 5.00mm; Angled; threaded flange || order number: 1776715 12A || order number: 1923995 16A (HC) +phoenix_contact connector MSTB_01x04_GF_5.00mm +0 +4 +4 +Connector_Phoenix_MSTB +PhoenixContact_MSTB_2,5_4-GF_1x04_P5.00mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MSTB_2,5/4-GF; number of pins: 04; pin pitch: 5.00mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1776715 12A || order number: 1923995 16A (HC) +phoenix_contact connector MSTB_01x04_GF_5.00mm_MH +0 +4 +4 +Connector_Phoenix_MSTB +PhoenixContact_MSTB_2,5_5-GF-5,08_1x05_P5.08mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MSTB_2,5/5-GF-5,08; number of pins: 05; pin pitch: 5.08mm; Angled; threaded flange || order number: 1776537 12A || order number: 1924114 16A (HC) +phoenix_contact connector MSTB_01x05_GF_5.08mm +0 +5 +5 +Connector_Phoenix_MSTB +PhoenixContact_MSTB_2,5_5-GF-5,08_1x05_P5.08mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MSTB_2,5/5-GF-5,08; number of pins: 05; pin pitch: 5.08mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1776537 12A || order number: 1924114 16A (HC) +phoenix_contact connector MSTB_01x05_GF_5.08mm_MH +0 +5 +5 +Connector_Phoenix_MSTB +PhoenixContact_MSTB_2,5_5-GF_1x05_P5.00mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MSTB_2,5/5-GF; number of pins: 05; pin pitch: 5.00mm; Angled; threaded flange || order number: 1776728 12A || order number: 1924004 16A (HC) +phoenix_contact connector MSTB_01x05_GF_5.00mm +0 +5 +5 +Connector_Phoenix_MSTB +PhoenixContact_MSTB_2,5_5-GF_1x05_P5.00mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MSTB_2,5/5-GF; number of pins: 05; pin pitch: 5.00mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1776728 12A || order number: 1924004 16A (HC) +phoenix_contact connector MSTB_01x05_GF_5.00mm_MH +0 +5 +5 +Connector_Phoenix_MSTB +PhoenixContact_MSTB_2,5_6-GF-5,08_1x06_P5.08mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MSTB_2,5/6-GF-5,08; number of pins: 06; pin pitch: 5.08mm; Angled; threaded flange || order number: 1776540 12A || order number: 1924127 16A (HC) +phoenix_contact connector MSTB_01x06_GF_5.08mm +0 +6 +6 +Connector_Phoenix_MSTB +PhoenixContact_MSTB_2,5_6-GF-5,08_1x06_P5.08mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MSTB_2,5/6-GF-5,08; number of pins: 06; pin pitch: 5.08mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1776540 12A || order number: 1924127 16A (HC) +phoenix_contact connector MSTB_01x06_GF_5.08mm_MH +0 +6 +6 +Connector_Phoenix_MSTB +PhoenixContact_MSTB_2,5_6-GF_1x06_P5.00mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MSTB_2,5/6-GF; number of pins: 06; pin pitch: 5.00mm; Angled; threaded flange || order number: 1776731 12A || order number: 1924017 16A (HC) +phoenix_contact connector MSTB_01x06_GF_5.00mm +0 +6 +6 +Connector_Phoenix_MSTB +PhoenixContact_MSTB_2,5_6-GF_1x06_P5.00mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MSTB_2,5/6-GF; number of pins: 06; pin pitch: 5.00mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1776731 12A || order number: 1924017 16A (HC) +phoenix_contact connector MSTB_01x06_GF_5.00mm_MH +0 +6 +6 +Connector_Phoenix_MSTB +PhoenixContact_MSTB_2,5_7-GF-5,08_1x07_P5.08mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MSTB_2,5/7-GF-5,08; number of pins: 07; pin pitch: 5.08mm; Angled; threaded flange || order number: 1776553 12A || order number: 1924130 16A (HC) +phoenix_contact connector MSTB_01x07_GF_5.08mm +0 +7 +7 +Connector_Phoenix_MSTB +PhoenixContact_MSTB_2,5_7-GF-5,08_1x07_P5.08mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MSTB_2,5/7-GF-5,08; number of pins: 07; pin pitch: 5.08mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1776553 12A || order number: 1924130 16A (HC) +phoenix_contact connector MSTB_01x07_GF_5.08mm_MH +0 +7 +7 +Connector_Phoenix_MSTB +PhoenixContact_MSTB_2,5_7-GF_1x07_P5.00mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MSTB_2,5/7-GF; number of pins: 07; pin pitch: 5.00mm; Angled; threaded flange || order number: 1776744 12A || order number: 1924020 16A (HC) +phoenix_contact connector MSTB_01x07_GF_5.00mm +0 +7 +7 +Connector_Phoenix_MSTB +PhoenixContact_MSTB_2,5_7-GF_1x07_P5.00mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MSTB_2,5/7-GF; number of pins: 07; pin pitch: 5.00mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1776744 12A || order number: 1924020 16A (HC) +phoenix_contact connector MSTB_01x07_GF_5.00mm_MH +0 +7 +7 +Connector_Phoenix_MSTB +PhoenixContact_MSTB_2,5_8-GF-5,08_1x08_P5.08mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MSTB_2,5/8-GF-5,08; number of pins: 08; pin pitch: 5.08mm; Angled; threaded flange || order number: 1776566 12A || order number: 1924143 16A (HC) +phoenix_contact connector MSTB_01x08_GF_5.08mm +0 +8 +8 +Connector_Phoenix_MSTB +PhoenixContact_MSTB_2,5_8-GF-5,08_1x08_P5.08mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MSTB_2,5/8-GF-5,08; number of pins: 08; pin pitch: 5.08mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1776566 12A || order number: 1924143 16A (HC) +phoenix_contact connector MSTB_01x08_GF_5.08mm_MH +0 +8 +8 +Connector_Phoenix_MSTB +PhoenixContact_MSTB_2,5_8-GF_1x08_P5.00mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MSTB_2,5/8-GF; number of pins: 08; pin pitch: 5.00mm; Angled; threaded flange || order number: 1776757 12A || order number: 1924033 16A (HC) +phoenix_contact connector MSTB_01x08_GF_5.00mm +0 +8 +8 +Connector_Phoenix_MSTB +PhoenixContact_MSTB_2,5_8-GF_1x08_P5.00mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MSTB_2,5/8-GF; number of pins: 08; pin pitch: 5.00mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1776757 12A || order number: 1924033 16A (HC) +phoenix_contact connector MSTB_01x08_GF_5.00mm_MH +0 +8 +8 +Connector_Phoenix_MSTB +PhoenixContact_MSTB_2,5_9-GF-5,08_1x09_P5.08mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MSTB_2,5/9-GF-5,08; number of pins: 09; pin pitch: 5.08mm; Angled; threaded flange || order number: 1776579 12A || order number: 1924156 16A (HC) +phoenix_contact connector MSTB_01x09_GF_5.08mm +0 +9 +9 +Connector_Phoenix_MSTB +PhoenixContact_MSTB_2,5_9-GF-5,08_1x09_P5.08mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MSTB_2,5/9-GF-5,08; number of pins: 09; pin pitch: 5.08mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1776579 12A || order number: 1924156 16A (HC) +phoenix_contact connector MSTB_01x09_GF_5.08mm_MH +0 +9 +9 +Connector_Phoenix_MSTB +PhoenixContact_MSTB_2,5_9-GF_1x09_P5.00mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MSTB_2,5/9-GF; number of pins: 09; pin pitch: 5.00mm; Angled; threaded flange || order number: 1776760 12A || order number: 1924046 16A (HC) +phoenix_contact connector MSTB_01x09_GF_5.00mm +0 +9 +9 +Connector_Phoenix_MSTB +PhoenixContact_MSTB_2,5_9-GF_1x09_P5.00mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MSTB_2,5/9-GF; number of pins: 09; pin pitch: 5.00mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1776760 12A || order number: 1924046 16A (HC) +phoenix_contact connector MSTB_01x09_GF_5.00mm_MH +0 +9 +9 +Connector_Phoenix_MSTB +PhoenixContact_MSTB_2,5_10-GF-5,08_1x10_P5.08mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MSTB_2,5/10-GF-5,08; number of pins: 10; pin pitch: 5.08mm; Angled; threaded flange || order number: 1776582 12A || order number: 1924169 16A (HC) +phoenix_contact connector MSTB_01x10_GF_5.08mm +0 +10 +10 +Connector_Phoenix_MSTB +PhoenixContact_MSTB_2,5_10-GF-5,08_1x10_P5.08mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MSTB_2,5/10-GF-5,08; number of pins: 10; pin pitch: 5.08mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1776582 12A || order number: 1924169 16A (HC) +phoenix_contact connector MSTB_01x10_GF_5.08mm_MH +0 +10 +10 +Connector_Phoenix_MSTB +PhoenixContact_MSTB_2,5_10-GF_1x10_P5.00mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MSTB_2,5/10-GF; number of pins: 10; pin pitch: 5.00mm; Angled; threaded flange || order number: 1776773 12A || order number: 1924059 16A (HC) +phoenix_contact connector MSTB_01x10_GF_5.00mm +0 +10 +10 +Connector_Phoenix_MSTB +PhoenixContact_MSTB_2,5_10-GF_1x10_P5.00mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MSTB_2,5/10-GF; number of pins: 10; pin pitch: 5.00mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1776773 12A || order number: 1924059 16A (HC) +phoenix_contact connector MSTB_01x10_GF_5.00mm_MH +0 +10 +10 +Connector_Phoenix_MSTB +PhoenixContact_MSTB_2,5_11-GF-5,08_1x11_P5.08mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MSTB_2,5/11-GF-5,08; number of pins: 11; pin pitch: 5.08mm; Angled; threaded flange || order number: 1776595 12A || order number: 1924172 16A (HC) +phoenix_contact connector MSTB_01x11_GF_5.08mm +0 +11 +11 +Connector_Phoenix_MSTB +PhoenixContact_MSTB_2,5_11-GF-5,08_1x11_P5.08mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MSTB_2,5/11-GF-5,08; number of pins: 11; pin pitch: 5.08mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1776595 12A || order number: 1924172 16A (HC) +phoenix_contact connector MSTB_01x11_GF_5.08mm_MH +0 +11 +11 +Connector_Phoenix_MSTB +PhoenixContact_MSTB_2,5_11-GF_1x11_P5.00mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MSTB_2,5/11-GF; number of pins: 11; pin pitch: 5.00mm; Angled; threaded flange || order number: 1776786 12A || order number: 1924062 16A (HC) +phoenix_contact connector MSTB_01x11_GF_5.00mm +0 +11 +11 +Connector_Phoenix_MSTB +PhoenixContact_MSTB_2,5_11-GF_1x11_P5.00mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MSTB_2,5/11-GF; number of pins: 11; pin pitch: 5.00mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1776786 12A || order number: 1924062 16A (HC) +phoenix_contact connector MSTB_01x11_GF_5.00mm_MH +0 +11 +11 +Connector_Phoenix_MSTB +PhoenixContact_MSTB_2,5_12-GF-5,08_1x12_P5.08mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MSTB_2,5/12-GF-5,08; number of pins: 12; pin pitch: 5.08mm; Angled; threaded flange || order number: 1776605 12A || order number: 1924185 16A (HC) +phoenix_contact connector MSTB_01x12_GF_5.08mm +0 +12 +12 +Connector_Phoenix_MSTB +PhoenixContact_MSTB_2,5_12-GF-5,08_1x12_P5.08mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MSTB_2,5/12-GF-5,08; number of pins: 12; pin pitch: 5.08mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1776605 12A || order number: 1924185 16A (HC) +phoenix_contact connector MSTB_01x12_GF_5.08mm_MH +0 +12 +12 +Connector_Phoenix_MSTB +PhoenixContact_MSTB_2,5_12-GF_1x12_P5.00mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MSTB_2,5/12-GF; number of pins: 12; pin pitch: 5.00mm; Angled; threaded flange || order number: 1776799 12A || order number: 1924075 16A (HC) +phoenix_contact connector MSTB_01x12_GF_5.00mm +0 +12 +12 +Connector_Phoenix_MSTB +PhoenixContact_MSTB_2,5_12-GF_1x12_P5.00mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MSTB_2,5/12-GF; number of pins: 12; pin pitch: 5.00mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1776799 12A || order number: 1924075 16A (HC) +phoenix_contact connector MSTB_01x12_GF_5.00mm_MH +0 +12 +12 +Connector_Phoenix_MSTB +PhoenixContact_MSTB_2,5_13-GF-5,08_1x13_P5.08mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MSTB_2,5/13-GF-5,08; number of pins: 13; pin pitch: 5.08mm; Angled; threaded flange || order number: 1776618 12A +phoenix_contact connector MSTB_01x13_GF_5.08mm +0 +13 +13 +Connector_Phoenix_MSTB +PhoenixContact_MSTB_2,5_13-GF-5,08_1x13_P5.08mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MSTB_2,5/13-GF-5,08; number of pins: 13; pin pitch: 5.08mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1776618 12A +phoenix_contact connector MSTB_01x13_GF_5.08mm_MH +0 +13 +13 +Connector_Phoenix_MSTB +PhoenixContact_MSTB_2,5_13-GF_1x13_P5.00mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MSTB_2,5/13-GF; number of pins: 13; pin pitch: 5.00mm; Angled; threaded flange || order number: 1776809 12A +phoenix_contact connector MSTB_01x13_GF_5.00mm +0 +13 +13 +Connector_Phoenix_MSTB +PhoenixContact_MSTB_2,5_13-GF_1x13_P5.00mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MSTB_2,5/13-GF; number of pins: 13; pin pitch: 5.00mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1776809 12A +phoenix_contact connector MSTB_01x13_GF_5.00mm_MH +0 +13 +13 +Connector_Phoenix_MSTB +PhoenixContact_MSTB_2,5_14-GF-5,08_1x14_P5.08mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MSTB_2,5/14-GF-5,08; number of pins: 14; pin pitch: 5.08mm; Angled; threaded flange || order number: 1776621 12A +phoenix_contact connector MSTB_01x14_GF_5.08mm +0 +14 +14 +Connector_Phoenix_MSTB +PhoenixContact_MSTB_2,5_14-GF-5,08_1x14_P5.08mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MSTB_2,5/14-GF-5,08; number of pins: 14; pin pitch: 5.08mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1776621 12A +phoenix_contact connector MSTB_01x14_GF_5.08mm_MH +0 +14 +14 +Connector_Phoenix_MSTB +PhoenixContact_MSTB_2,5_14-GF_1x14_P5.00mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MSTB_2,5/14-GF; number of pins: 14; pin pitch: 5.00mm; Angled; threaded flange || order number: 1776812 12A +phoenix_contact connector MSTB_01x14_GF_5.00mm +0 +14 +14 +Connector_Phoenix_MSTB +PhoenixContact_MSTB_2,5_14-GF_1x14_P5.00mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MSTB_2,5/14-GF; number of pins: 14; pin pitch: 5.00mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1776812 12A +phoenix_contact connector MSTB_01x14_GF_5.00mm_MH +0 +14 +14 +Connector_Phoenix_MSTB +PhoenixContact_MSTB_2,5_15-GF-5,08_1x15_P5.08mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MSTB_2,5/15-GF-5,08; number of pins: 15; pin pitch: 5.08mm; Angled; threaded flange || order number: 1776634 12A +phoenix_contact connector MSTB_01x15_GF_5.08mm +0 +15 +15 +Connector_Phoenix_MSTB +PhoenixContact_MSTB_2,5_15-GF-5,08_1x15_P5.08mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MSTB_2,5/15-GF-5,08; number of pins: 15; pin pitch: 5.08mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1776634 12A +phoenix_contact connector MSTB_01x15_GF_5.08mm_MH +0 +15 +15 +Connector_Phoenix_MSTB +PhoenixContact_MSTB_2,5_15-GF_1x15_P5.00mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MSTB_2,5/15-GF; number of pins: 15; pin pitch: 5.00mm; Angled; threaded flange || order number: 1776825 12A +phoenix_contact connector MSTB_01x15_GF_5.00mm +0 +15 +15 +Connector_Phoenix_MSTB +PhoenixContact_MSTB_2,5_15-GF_1x15_P5.00mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MSTB_2,5/15-GF; number of pins: 15; pin pitch: 5.00mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1776825 12A +phoenix_contact connector MSTB_01x15_GF_5.00mm_MH +0 +15 +15 +Connector_Phoenix_MSTB +PhoenixContact_MSTB_2,5_16-GF-5,08_1x16_P5.08mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MSTB_2,5/16-GF-5,08; number of pins: 16; pin pitch: 5.08mm; Angled; threaded flange || order number: 1776647 12A +phoenix_contact connector MSTB_01x16_GF_5.08mm +0 +16 +16 +Connector_Phoenix_MSTB +PhoenixContact_MSTB_2,5_16-GF-5,08_1x16_P5.08mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MSTB_2,5/16-GF-5,08; number of pins: 16; pin pitch: 5.08mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1776647 12A +phoenix_contact connector MSTB_01x16_GF_5.08mm_MH +0 +16 +16 +Connector_Phoenix_MSTB +PhoenixContact_MSTB_2,5_16-GF_1x16_P5.00mm_Horizontal_ThreadedFlange +Generic Phoenix Contact connector footprint for: MSTB_2,5/16-GF; number of pins: 16; pin pitch: 5.00mm; Angled; threaded flange || order number: 1776838 12A +phoenix_contact connector MSTB_01x16_GF_5.00mm +0 +16 +16 +Connector_Phoenix_MSTB +PhoenixContact_MSTB_2,5_16-GF_1x16_P5.00mm_Horizontal_ThreadedFlange_MountHole +Generic Phoenix Contact connector footprint for: MSTB_2,5/16-GF; number of pins: 16; pin pitch: 5.00mm; Angled; threaded flange; footprint includes mount hole for mounting screw: ISO 1481-ST 2.2x6.5 C or ISO 7049-ST 2.2x6.5 C (http://www.fasteners.eu/standards/ISO/7049/) || order number: 1776838 12A +phoenix_contact connector MSTB_01x16_GF_5.00mm_MH +0 +16 +16 +Connector_Pin +Pin_D0.7mm_L6.5mm_W1.8mm_FlatFork +solder Pin_ with flat fork, hole diameter 0.7mm, length 6.5mm, width 1.8mm +solder Pin_ with flat fork +0 +1 +1 +Connector_Pin +Pin_D0.9mm_L10.0mm_W2.4mm_FlatFork +solder Pin_ with flat fork, hole diameter 0.9mm, length 10.0mm, width 2.4mm +solder Pin_ with flat fork +0 +1 +1 +Connector_Pin +Pin_D1.0mm_L10.0mm +solder Pin_ diameter 1.0mm, hole diameter 1.0mm (press fit), length 10.0mm +solder Pin_ press fit +0 +1 +1 +Connector_Pin +Pin_D1.0mm_L10.0mm_LooseFit +solder Pin_ diameter 1.0mm, hole diameter 1.2mm (loose fit), length 10.0mm +solder Pin_ loose fit +0 +1 +1 +Connector_Pin +Pin_D1.1mm_L8.5mm_W2.5mm_FlatFork +solder Pin_ with flat fork, hole diameter 1.1mm, length 8.5mm, width 2.5mm +solder Pin_ with flat fork +0 +1 +1 +Connector_Pin +Pin_D1.1mm_L10.2mm_W3.5mm_Flat +solder Pin_ with flat with hole, hole diameter 1.1mm, length 10.2mm, width 3.5mm +solder Pin_ with flat fork +0 +1 +1 +Connector_Pin +Pin_D1.2mm_L10.2mm_W2.9mm_FlatFork +solder Pin_ with flat with fork, hole diameter 1.2mm, length 11.3mm, width 3.0mm +solder Pin_ with flat fork +0 +1 +1 +Connector_Pin +Pin_D1.2mm_L11.3mm_W3.0mm_Flat +solder Pin_ with flat with hole, hole diameter 1.2mm, length 11.3mm, width 3.0mm +solder Pin_ with flat fork +0 +1 +1 +Connector_Pin +Pin_D1.3mm_L10.0mm_W3.5mm_Flat +solder Pin_ with flat with hole, hole diameter 1.3mm, length 10.0mm, width 3.5mm, e.g. Ettinger 13.13.865, https://katalog.ettinger.de/#p=434 +solder Pin_ with flat fork +0 +1 +1 +Connector_Pin +Pin_D1.3mm_L11.0mm +solder Pin_ diameter 1.3mm, hole diameter 1.3mm, length 11.0mm +solder Pin_ pressfit +0 +1 +1 +Connector_Pin +Pin_D1.3mm_L11.0mm_LooseFit +solder Pin_ diameter 1.3mm, hole diameter 1.5mm (loose fit), length 11.0mm +solder Pin_ loose fit +0 +1 +1 +Connector_Pin +Pin_D1.3mm_L11.3mm_W2.8mm_Flat +solder Pin_ with flat with hole, hole diameter 1.3mm, length 11.3mm, width 2.8mm +solder Pin_ with flat fork +0 +1 +1 +Connector_Pin +Pin_D1.4mm_L8.5mm_W2.8mm_FlatFork +solder Pin_ with flat with fork, hole diameter 1.4mm, length 8.5mm, width 2.8mm, e.g. Ettinger 13.13.890, https://katalog.ettinger.de/#p=434 +solder Pin_ with flat fork +0 +1 +1 +Connector_PinHeader_1.00mm +PinHeader_1x01_P1.00mm_Horizontal +Through hole angled pin header, 1x01, 1.00mm pitch, 2.0mm pin length, single row +Through hole angled pin header THT 1x01 1.00mm single row +0 +1 +1 +Connector_PinHeader_1.00mm +PinHeader_1x01_P1.00mm_Vertical +Through hole straight pin header, 1x01, 1.00mm pitch, single row +Through hole pin header THT 1x01 1.00mm single row +0 +1 +1 +Connector_PinHeader_1.00mm +PinHeader_1x02_P1.00mm_Horizontal +Through hole angled pin header, 1x02, 1.00mm pitch, 2.0mm pin length, single row +Through hole angled pin header THT 1x02 1.00mm single row +0 +2 +2 +Connector_PinHeader_1.00mm +PinHeader_1x02_P1.00mm_Vertical +Through hole straight pin header, 1x02, 1.00mm pitch, single row +Through hole pin header THT 1x02 1.00mm single row +0 +2 +2 +Connector_PinHeader_1.00mm +PinHeader_1x02_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x02, 1.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x02 1.00mm single row style1 pin1 left +0 +2 +2 +Connector_PinHeader_1.00mm +PinHeader_1x02_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x02, 1.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x02 1.00mm single row style2 pin1 right +0 +2 +2 +Connector_PinHeader_1.00mm +PinHeader_1x03_P1.00mm_Horizontal +Through hole angled pin header, 1x03, 1.00mm pitch, 2.0mm pin length, single row +Through hole angled pin header THT 1x03 1.00mm single row +0 +3 +3 +Connector_PinHeader_1.00mm +PinHeader_1x03_P1.00mm_Vertical +Through hole straight pin header, 1x03, 1.00mm pitch, single row +Through hole pin header THT 1x03 1.00mm single row +0 +3 +3 +Connector_PinHeader_1.00mm +PinHeader_1x03_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x03, 1.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x03 1.00mm single row style1 pin1 left +0 +3 +3 +Connector_PinHeader_1.00mm +PinHeader_1x03_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x03, 1.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x03 1.00mm single row style2 pin1 right +0 +3 +3 +Connector_PinHeader_1.00mm +PinHeader_1x04_P1.00mm_Horizontal +Through hole angled pin header, 1x04, 1.00mm pitch, 2.0mm pin length, single row +Through hole angled pin header THT 1x04 1.00mm single row +0 +4 +4 +Connector_PinHeader_1.00mm +PinHeader_1x04_P1.00mm_Vertical +Through hole straight pin header, 1x04, 1.00mm pitch, single row +Through hole pin header THT 1x04 1.00mm single row +0 +4 +4 +Connector_PinHeader_1.00mm +PinHeader_1x04_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x04, 1.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x04 1.00mm single row style1 pin1 left +0 +4 +4 +Connector_PinHeader_1.00mm +PinHeader_1x04_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x04, 1.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x04 1.00mm single row style2 pin1 right +0 +4 +4 +Connector_PinHeader_1.00mm +PinHeader_1x05_P1.00mm_Horizontal +Through hole angled pin header, 1x05, 1.00mm pitch, 2.0mm pin length, single row +Through hole angled pin header THT 1x05 1.00mm single row +0 +5 +5 +Connector_PinHeader_1.00mm +PinHeader_1x05_P1.00mm_Vertical +Through hole straight pin header, 1x05, 1.00mm pitch, single row +Through hole pin header THT 1x05 1.00mm single row +0 +5 +5 +Connector_PinHeader_1.00mm +PinHeader_1x05_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x05, 1.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x05 1.00mm single row style1 pin1 left +0 +5 +5 +Connector_PinHeader_1.00mm +PinHeader_1x05_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x05, 1.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x05 1.00mm single row style2 pin1 right +0 +5 +5 +Connector_PinHeader_1.00mm +PinHeader_1x06_P1.00mm_Horizontal +Through hole angled pin header, 1x06, 1.00mm pitch, 2.0mm pin length, single row +Through hole angled pin header THT 1x06 1.00mm single row +0 +6 +6 +Connector_PinHeader_1.00mm +PinHeader_1x06_P1.00mm_Vertical +Through hole straight pin header, 1x06, 1.00mm pitch, single row +Through hole pin header THT 1x06 1.00mm single row +0 +6 +6 +Connector_PinHeader_1.00mm +PinHeader_1x06_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x06, 1.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x06 1.00mm single row style1 pin1 left +0 +6 +6 +Connector_PinHeader_1.00mm +PinHeader_1x06_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x06, 1.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x06 1.00mm single row style2 pin1 right +0 +6 +6 +Connector_PinHeader_1.00mm +PinHeader_1x07_P1.00mm_Horizontal +Through hole angled pin header, 1x07, 1.00mm pitch, 2.0mm pin length, single row +Through hole angled pin header THT 1x07 1.00mm single row +0 +7 +7 +Connector_PinHeader_1.00mm +PinHeader_1x07_P1.00mm_Vertical +Through hole straight pin header, 1x07, 1.00mm pitch, single row +Through hole pin header THT 1x07 1.00mm single row +0 +7 +7 +Connector_PinHeader_1.00mm +PinHeader_1x07_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x07, 1.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x07 1.00mm single row style1 pin1 left +0 +7 +7 +Connector_PinHeader_1.00mm +PinHeader_1x07_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x07, 1.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x07 1.00mm single row style2 pin1 right +0 +7 +7 +Connector_PinHeader_1.00mm +PinHeader_1x08_P1.00mm_Horizontal +Through hole angled pin header, 1x08, 1.00mm pitch, 2.0mm pin length, single row +Through hole angled pin header THT 1x08 1.00mm single row +0 +8 +8 +Connector_PinHeader_1.00mm +PinHeader_1x08_P1.00mm_Vertical +Through hole straight pin header, 1x08, 1.00mm pitch, single row +Through hole pin header THT 1x08 1.00mm single row +0 +8 +8 +Connector_PinHeader_1.00mm +PinHeader_1x08_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x08, 1.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x08 1.00mm single row style1 pin1 left +0 +8 +8 +Connector_PinHeader_1.00mm +PinHeader_1x08_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x08, 1.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x08 1.00mm single row style2 pin1 right +0 +8 +8 +Connector_PinHeader_1.00mm +PinHeader_1x09_P1.00mm_Horizontal +Through hole angled pin header, 1x09, 1.00mm pitch, 2.0mm pin length, single row +Through hole angled pin header THT 1x09 1.00mm single row +0 +9 +9 +Connector_PinHeader_1.00mm +PinHeader_1x09_P1.00mm_Vertical +Through hole straight pin header, 1x09, 1.00mm pitch, single row +Through hole pin header THT 1x09 1.00mm single row +0 +9 +9 +Connector_PinHeader_1.00mm +PinHeader_1x09_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x09, 1.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x09 1.00mm single row style1 pin1 left +0 +9 +9 +Connector_PinHeader_1.00mm +PinHeader_1x09_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x09, 1.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x09 1.00mm single row style2 pin1 right +0 +9 +9 +Connector_PinHeader_1.00mm +PinHeader_1x10_P1.00mm_Horizontal +Through hole angled pin header, 1x10, 1.00mm pitch, 2.0mm pin length, single row +Through hole angled pin header THT 1x10 1.00mm single row +0 +10 +10 +Connector_PinHeader_1.00mm +PinHeader_1x10_P1.00mm_Vertical +Through hole straight pin header, 1x10, 1.00mm pitch, single row +Through hole pin header THT 1x10 1.00mm single row +0 +10 +10 +Connector_PinHeader_1.00mm +PinHeader_1x10_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x10, 1.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x10 1.00mm single row style1 pin1 left +0 +10 +10 +Connector_PinHeader_1.00mm +PinHeader_1x10_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x10, 1.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x10 1.00mm single row style2 pin1 right +0 +10 +10 +Connector_PinHeader_1.00mm +PinHeader_1x11_P1.00mm_Horizontal +Through hole angled pin header, 1x11, 1.00mm pitch, 2.0mm pin length, single row +Through hole angled pin header THT 1x11 1.00mm single row +0 +11 +11 +Connector_PinHeader_1.00mm +PinHeader_1x11_P1.00mm_Vertical +Through hole straight pin header, 1x11, 1.00mm pitch, single row +Through hole pin header THT 1x11 1.00mm single row +0 +11 +11 +Connector_PinHeader_1.00mm +PinHeader_1x11_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x11, 1.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x11 1.00mm single row style1 pin1 left +0 +11 +11 +Connector_PinHeader_1.00mm +PinHeader_1x11_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x11, 1.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x11 1.00mm single row style2 pin1 right +0 +11 +11 +Connector_PinHeader_1.00mm +PinHeader_1x12_P1.00mm_Horizontal +Through hole angled pin header, 1x12, 1.00mm pitch, 2.0mm pin length, single row +Through hole angled pin header THT 1x12 1.00mm single row +0 +12 +12 +Connector_PinHeader_1.00mm +PinHeader_1x12_P1.00mm_Vertical +Through hole straight pin header, 1x12, 1.00mm pitch, single row +Through hole pin header THT 1x12 1.00mm single row +0 +12 +12 +Connector_PinHeader_1.00mm +PinHeader_1x12_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x12, 1.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x12 1.00mm single row style1 pin1 left +0 +12 +12 +Connector_PinHeader_1.00mm +PinHeader_1x12_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x12, 1.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x12 1.00mm single row style2 pin1 right +0 +12 +12 +Connector_PinHeader_1.00mm +PinHeader_1x13_P1.00mm_Horizontal +Through hole angled pin header, 1x13, 1.00mm pitch, 2.0mm pin length, single row +Through hole angled pin header THT 1x13 1.00mm single row +0 +13 +13 +Connector_PinHeader_1.00mm +PinHeader_1x13_P1.00mm_Vertical +Through hole straight pin header, 1x13, 1.00mm pitch, single row +Through hole pin header THT 1x13 1.00mm single row +0 +13 +13 +Connector_PinHeader_1.00mm +PinHeader_1x13_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x13, 1.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x13 1.00mm single row style1 pin1 left +0 +13 +13 +Connector_PinHeader_1.00mm +PinHeader_1x13_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x13, 1.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x13 1.00mm single row style2 pin1 right +0 +13 +13 +Connector_PinHeader_1.00mm +PinHeader_1x14_P1.00mm_Horizontal +Through hole angled pin header, 1x14, 1.00mm pitch, 2.0mm pin length, single row +Through hole angled pin header THT 1x14 1.00mm single row +0 +14 +14 +Connector_PinHeader_1.00mm +PinHeader_1x14_P1.00mm_Vertical +Through hole straight pin header, 1x14, 1.00mm pitch, single row +Through hole pin header THT 1x14 1.00mm single row +0 +14 +14 +Connector_PinHeader_1.00mm +PinHeader_1x14_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x14, 1.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x14 1.00mm single row style1 pin1 left +0 +14 +14 +Connector_PinHeader_1.00mm +PinHeader_1x14_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x14, 1.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x14 1.00mm single row style2 pin1 right +0 +14 +14 +Connector_PinHeader_1.00mm +PinHeader_1x15_P1.00mm_Horizontal +Through hole angled pin header, 1x15, 1.00mm pitch, 2.0mm pin length, single row +Through hole angled pin header THT 1x15 1.00mm single row +0 +15 +15 +Connector_PinHeader_1.00mm +PinHeader_1x15_P1.00mm_Vertical +Through hole straight pin header, 1x15, 1.00mm pitch, single row +Through hole pin header THT 1x15 1.00mm single row +0 +15 +15 +Connector_PinHeader_1.00mm +PinHeader_1x15_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x15, 1.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x15 1.00mm single row style1 pin1 left +0 +15 +15 +Connector_PinHeader_1.00mm +PinHeader_1x15_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x15, 1.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x15 1.00mm single row style2 pin1 right +0 +15 +15 +Connector_PinHeader_1.00mm +PinHeader_1x16_P1.00mm_Horizontal +Through hole angled pin header, 1x16, 1.00mm pitch, 2.0mm pin length, single row +Through hole angled pin header THT 1x16 1.00mm single row +0 +16 +16 +Connector_PinHeader_1.00mm +PinHeader_1x16_P1.00mm_Vertical +Through hole straight pin header, 1x16, 1.00mm pitch, single row +Through hole pin header THT 1x16 1.00mm single row +0 +16 +16 +Connector_PinHeader_1.00mm +PinHeader_1x16_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x16, 1.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x16 1.00mm single row style1 pin1 left +0 +16 +16 +Connector_PinHeader_1.00mm +PinHeader_1x16_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x16, 1.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x16 1.00mm single row style2 pin1 right +0 +16 +16 +Connector_PinHeader_1.00mm +PinHeader_1x17_P1.00mm_Horizontal +Through hole angled pin header, 1x17, 1.00mm pitch, 2.0mm pin length, single row +Through hole angled pin header THT 1x17 1.00mm single row +0 +17 +17 +Connector_PinHeader_1.00mm +PinHeader_1x17_P1.00mm_Vertical +Through hole straight pin header, 1x17, 1.00mm pitch, single row +Through hole pin header THT 1x17 1.00mm single row +0 +17 +17 +Connector_PinHeader_1.00mm +PinHeader_1x17_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x17, 1.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x17 1.00mm single row style1 pin1 left +0 +17 +17 +Connector_PinHeader_1.00mm +PinHeader_1x17_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x17, 1.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x17 1.00mm single row style2 pin1 right +0 +17 +17 +Connector_PinHeader_1.00mm +PinHeader_1x18_P1.00mm_Horizontal +Through hole angled pin header, 1x18, 1.00mm pitch, 2.0mm pin length, single row +Through hole angled pin header THT 1x18 1.00mm single row +0 +18 +18 +Connector_PinHeader_1.00mm +PinHeader_1x18_P1.00mm_Vertical +Through hole straight pin header, 1x18, 1.00mm pitch, single row +Through hole pin header THT 1x18 1.00mm single row +0 +18 +18 +Connector_PinHeader_1.00mm +PinHeader_1x18_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x18, 1.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x18 1.00mm single row style1 pin1 left +0 +18 +18 +Connector_PinHeader_1.00mm +PinHeader_1x18_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x18, 1.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x18 1.00mm single row style2 pin1 right +0 +18 +18 +Connector_PinHeader_1.00mm +PinHeader_1x19_P1.00mm_Horizontal +Through hole angled pin header, 1x19, 1.00mm pitch, 2.0mm pin length, single row +Through hole angled pin header THT 1x19 1.00mm single row +0 +19 +19 +Connector_PinHeader_1.00mm +PinHeader_1x19_P1.00mm_Vertical +Through hole straight pin header, 1x19, 1.00mm pitch, single row +Through hole pin header THT 1x19 1.00mm single row +0 +19 +19 +Connector_PinHeader_1.00mm +PinHeader_1x19_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x19, 1.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x19 1.00mm single row style1 pin1 left +0 +19 +19 +Connector_PinHeader_1.00mm +PinHeader_1x19_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x19, 1.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x19 1.00mm single row style2 pin1 right +0 +19 +19 +Connector_PinHeader_1.00mm +PinHeader_1x20_P1.00mm_Horizontal +Through hole angled pin header, 1x20, 1.00mm pitch, 2.0mm pin length, single row +Through hole angled pin header THT 1x20 1.00mm single row +0 +20 +20 +Connector_PinHeader_1.00mm +PinHeader_1x20_P1.00mm_Vertical +Through hole straight pin header, 1x20, 1.00mm pitch, single row +Through hole pin header THT 1x20 1.00mm single row +0 +20 +20 +Connector_PinHeader_1.00mm +PinHeader_1x20_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x20, 1.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x20 1.00mm single row style1 pin1 left +0 +20 +20 +Connector_PinHeader_1.00mm +PinHeader_1x20_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x20, 1.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x20 1.00mm single row style2 pin1 right +0 +20 +20 +Connector_PinHeader_1.00mm +PinHeader_1x21_P1.00mm_Horizontal +Through hole angled pin header, 1x21, 1.00mm pitch, 2.0mm pin length, single row +Through hole angled pin header THT 1x21 1.00mm single row +0 +21 +21 +Connector_PinHeader_1.00mm +PinHeader_1x21_P1.00mm_Vertical +Through hole straight pin header, 1x21, 1.00mm pitch, single row +Through hole pin header THT 1x21 1.00mm single row +0 +21 +21 +Connector_PinHeader_1.00mm +PinHeader_1x21_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x21, 1.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x21 1.00mm single row style1 pin1 left +0 +21 +21 +Connector_PinHeader_1.00mm +PinHeader_1x21_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x21, 1.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x21 1.00mm single row style2 pin1 right +0 +21 +21 +Connector_PinHeader_1.00mm +PinHeader_1x22_P1.00mm_Horizontal +Through hole angled pin header, 1x22, 1.00mm pitch, 2.0mm pin length, single row +Through hole angled pin header THT 1x22 1.00mm single row +0 +22 +22 +Connector_PinHeader_1.00mm +PinHeader_1x22_P1.00mm_Vertical +Through hole straight pin header, 1x22, 1.00mm pitch, single row +Through hole pin header THT 1x22 1.00mm single row +0 +22 +22 +Connector_PinHeader_1.00mm +PinHeader_1x22_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x22, 1.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x22 1.00mm single row style1 pin1 left +0 +22 +22 +Connector_PinHeader_1.00mm +PinHeader_1x22_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x22, 1.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x22 1.00mm single row style2 pin1 right +0 +22 +22 +Connector_PinHeader_1.00mm +PinHeader_1x23_P1.00mm_Horizontal +Through hole angled pin header, 1x23, 1.00mm pitch, 2.0mm pin length, single row +Through hole angled pin header THT 1x23 1.00mm single row +0 +23 +23 +Connector_PinHeader_1.00mm +PinHeader_1x23_P1.00mm_Vertical +Through hole straight pin header, 1x23, 1.00mm pitch, single row +Through hole pin header THT 1x23 1.00mm single row +0 +23 +23 +Connector_PinHeader_1.00mm +PinHeader_1x23_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x23, 1.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x23 1.00mm single row style1 pin1 left +0 +23 +23 +Connector_PinHeader_1.00mm +PinHeader_1x23_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x23, 1.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x23 1.00mm single row style2 pin1 right +0 +23 +23 +Connector_PinHeader_1.00mm +PinHeader_1x24_P1.00mm_Horizontal +Through hole angled pin header, 1x24, 1.00mm pitch, 2.0mm pin length, single row +Through hole angled pin header THT 1x24 1.00mm single row +0 +24 +24 +Connector_PinHeader_1.00mm +PinHeader_1x24_P1.00mm_Vertical +Through hole straight pin header, 1x24, 1.00mm pitch, single row +Through hole pin header THT 1x24 1.00mm single row +0 +24 +24 +Connector_PinHeader_1.00mm +PinHeader_1x24_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x24, 1.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x24 1.00mm single row style1 pin1 left +0 +24 +24 +Connector_PinHeader_1.00mm +PinHeader_1x24_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x24, 1.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x24 1.00mm single row style2 pin1 right +0 +24 +24 +Connector_PinHeader_1.00mm +PinHeader_1x25_P1.00mm_Horizontal +Through hole angled pin header, 1x25, 1.00mm pitch, 2.0mm pin length, single row +Through hole angled pin header THT 1x25 1.00mm single row +0 +25 +25 +Connector_PinHeader_1.00mm +PinHeader_1x25_P1.00mm_Vertical +Through hole straight pin header, 1x25, 1.00mm pitch, single row +Through hole pin header THT 1x25 1.00mm single row +0 +25 +25 +Connector_PinHeader_1.00mm +PinHeader_1x25_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x25, 1.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x25 1.00mm single row style1 pin1 left +0 +25 +25 +Connector_PinHeader_1.00mm +PinHeader_1x25_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x25, 1.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x25 1.00mm single row style2 pin1 right +0 +25 +25 +Connector_PinHeader_1.00mm +PinHeader_1x26_P1.00mm_Horizontal +Through hole angled pin header, 1x26, 1.00mm pitch, 2.0mm pin length, single row +Through hole angled pin header THT 1x26 1.00mm single row +0 +26 +26 +Connector_PinHeader_1.00mm +PinHeader_1x26_P1.00mm_Vertical +Through hole straight pin header, 1x26, 1.00mm pitch, single row +Through hole pin header THT 1x26 1.00mm single row +0 +26 +26 +Connector_PinHeader_1.00mm +PinHeader_1x26_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x26, 1.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x26 1.00mm single row style1 pin1 left +0 +26 +26 +Connector_PinHeader_1.00mm +PinHeader_1x26_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x26, 1.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x26 1.00mm single row style2 pin1 right +0 +26 +26 +Connector_PinHeader_1.00mm +PinHeader_1x27_P1.00mm_Horizontal +Through hole angled pin header, 1x27, 1.00mm pitch, 2.0mm pin length, single row +Through hole angled pin header THT 1x27 1.00mm single row +0 +27 +27 +Connector_PinHeader_1.00mm +PinHeader_1x27_P1.00mm_Vertical +Through hole straight pin header, 1x27, 1.00mm pitch, single row +Through hole pin header THT 1x27 1.00mm single row +0 +27 +27 +Connector_PinHeader_1.00mm +PinHeader_1x27_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x27, 1.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x27 1.00mm single row style1 pin1 left +0 +27 +27 +Connector_PinHeader_1.00mm +PinHeader_1x27_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x27, 1.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x27 1.00mm single row style2 pin1 right +0 +27 +27 +Connector_PinHeader_1.00mm +PinHeader_1x28_P1.00mm_Horizontal +Through hole angled pin header, 1x28, 1.00mm pitch, 2.0mm pin length, single row +Through hole angled pin header THT 1x28 1.00mm single row +0 +28 +28 +Connector_PinHeader_1.00mm +PinHeader_1x28_P1.00mm_Vertical +Through hole straight pin header, 1x28, 1.00mm pitch, single row +Through hole pin header THT 1x28 1.00mm single row +0 +28 +28 +Connector_PinHeader_1.00mm +PinHeader_1x28_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x28, 1.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x28 1.00mm single row style1 pin1 left +0 +28 +28 +Connector_PinHeader_1.00mm +PinHeader_1x28_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x28, 1.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x28 1.00mm single row style2 pin1 right +0 +28 +28 +Connector_PinHeader_1.00mm +PinHeader_1x29_P1.00mm_Horizontal +Through hole angled pin header, 1x29, 1.00mm pitch, 2.0mm pin length, single row +Through hole angled pin header THT 1x29 1.00mm single row +0 +29 +29 +Connector_PinHeader_1.00mm +PinHeader_1x29_P1.00mm_Vertical +Through hole straight pin header, 1x29, 1.00mm pitch, single row +Through hole pin header THT 1x29 1.00mm single row +0 +29 +29 +Connector_PinHeader_1.00mm +PinHeader_1x29_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x29, 1.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x29 1.00mm single row style1 pin1 left +0 +29 +29 +Connector_PinHeader_1.00mm +PinHeader_1x29_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x29, 1.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x29 1.00mm single row style2 pin1 right +0 +29 +29 +Connector_PinHeader_1.00mm +PinHeader_1x30_P1.00mm_Horizontal +Through hole angled pin header, 1x30, 1.00mm pitch, 2.0mm pin length, single row +Through hole angled pin header THT 1x30 1.00mm single row +0 +30 +30 +Connector_PinHeader_1.00mm +PinHeader_1x30_P1.00mm_Vertical +Through hole straight pin header, 1x30, 1.00mm pitch, single row +Through hole pin header THT 1x30 1.00mm single row +0 +30 +30 +Connector_PinHeader_1.00mm +PinHeader_1x30_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x30, 1.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x30 1.00mm single row style1 pin1 left +0 +30 +30 +Connector_PinHeader_1.00mm +PinHeader_1x30_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x30, 1.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x30 1.00mm single row style2 pin1 right +0 +30 +30 +Connector_PinHeader_1.00mm +PinHeader_1x31_P1.00mm_Horizontal +Through hole angled pin header, 1x31, 1.00mm pitch, 2.0mm pin length, single row +Through hole angled pin header THT 1x31 1.00mm single row +0 +31 +31 +Connector_PinHeader_1.00mm +PinHeader_1x31_P1.00mm_Vertical +Through hole straight pin header, 1x31, 1.00mm pitch, single row +Through hole pin header THT 1x31 1.00mm single row +0 +31 +31 +Connector_PinHeader_1.00mm +PinHeader_1x31_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x31, 1.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x31 1.00mm single row style1 pin1 left +0 +31 +31 +Connector_PinHeader_1.00mm +PinHeader_1x31_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x31, 1.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x31 1.00mm single row style2 pin1 right +0 +31 +31 +Connector_PinHeader_1.00mm +PinHeader_1x32_P1.00mm_Horizontal +Through hole angled pin header, 1x32, 1.00mm pitch, 2.0mm pin length, single row +Through hole angled pin header THT 1x32 1.00mm single row +0 +32 +32 +Connector_PinHeader_1.00mm +PinHeader_1x32_P1.00mm_Vertical +Through hole straight pin header, 1x32, 1.00mm pitch, single row +Through hole pin header THT 1x32 1.00mm single row +0 +32 +32 +Connector_PinHeader_1.00mm +PinHeader_1x32_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x32, 1.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x32 1.00mm single row style1 pin1 left +0 +32 +32 +Connector_PinHeader_1.00mm +PinHeader_1x32_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x32, 1.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x32 1.00mm single row style2 pin1 right +0 +32 +32 +Connector_PinHeader_1.00mm +PinHeader_1x33_P1.00mm_Horizontal +Through hole angled pin header, 1x33, 1.00mm pitch, 2.0mm pin length, single row +Through hole angled pin header THT 1x33 1.00mm single row +0 +33 +33 +Connector_PinHeader_1.00mm +PinHeader_1x33_P1.00mm_Vertical +Through hole straight pin header, 1x33, 1.00mm pitch, single row +Through hole pin header THT 1x33 1.00mm single row +0 +33 +33 +Connector_PinHeader_1.00mm +PinHeader_1x33_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x33, 1.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x33 1.00mm single row style1 pin1 left +0 +33 +33 +Connector_PinHeader_1.00mm +PinHeader_1x33_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x33, 1.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x33 1.00mm single row style2 pin1 right +0 +33 +33 +Connector_PinHeader_1.00mm +PinHeader_1x34_P1.00mm_Horizontal +Through hole angled pin header, 1x34, 1.00mm pitch, 2.0mm pin length, single row +Through hole angled pin header THT 1x34 1.00mm single row +0 +34 +34 +Connector_PinHeader_1.00mm +PinHeader_1x34_P1.00mm_Vertical +Through hole straight pin header, 1x34, 1.00mm pitch, single row +Through hole pin header THT 1x34 1.00mm single row +0 +34 +34 +Connector_PinHeader_1.00mm +PinHeader_1x34_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x34, 1.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x34 1.00mm single row style1 pin1 left +0 +34 +34 +Connector_PinHeader_1.00mm +PinHeader_1x34_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x34, 1.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x34 1.00mm single row style2 pin1 right +0 +34 +34 +Connector_PinHeader_1.00mm +PinHeader_1x35_P1.00mm_Horizontal +Through hole angled pin header, 1x35, 1.00mm pitch, 2.0mm pin length, single row +Through hole angled pin header THT 1x35 1.00mm single row +0 +35 +35 +Connector_PinHeader_1.00mm +PinHeader_1x35_P1.00mm_Vertical +Through hole straight pin header, 1x35, 1.00mm pitch, single row +Through hole pin header THT 1x35 1.00mm single row +0 +35 +35 +Connector_PinHeader_1.00mm +PinHeader_1x35_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x35, 1.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x35 1.00mm single row style1 pin1 left +0 +35 +35 +Connector_PinHeader_1.00mm +PinHeader_1x35_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x35, 1.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x35 1.00mm single row style2 pin1 right +0 +35 +35 +Connector_PinHeader_1.00mm +PinHeader_1x36_P1.00mm_Horizontal +Through hole angled pin header, 1x36, 1.00mm pitch, 2.0mm pin length, single row +Through hole angled pin header THT 1x36 1.00mm single row +0 +36 +36 +Connector_PinHeader_1.00mm +PinHeader_1x36_P1.00mm_Vertical +Through hole straight pin header, 1x36, 1.00mm pitch, single row +Through hole pin header THT 1x36 1.00mm single row +0 +36 +36 +Connector_PinHeader_1.00mm +PinHeader_1x36_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x36, 1.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x36 1.00mm single row style1 pin1 left +0 +36 +36 +Connector_PinHeader_1.00mm +PinHeader_1x36_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x36, 1.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x36 1.00mm single row style2 pin1 right +0 +36 +36 +Connector_PinHeader_1.00mm +PinHeader_1x37_P1.00mm_Horizontal +Through hole angled pin header, 1x37, 1.00mm pitch, 2.0mm pin length, single row +Through hole angled pin header THT 1x37 1.00mm single row +0 +37 +37 +Connector_PinHeader_1.00mm +PinHeader_1x37_P1.00mm_Vertical +Through hole straight pin header, 1x37, 1.00mm pitch, single row +Through hole pin header THT 1x37 1.00mm single row +0 +37 +37 +Connector_PinHeader_1.00mm +PinHeader_1x37_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x37, 1.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x37 1.00mm single row style1 pin1 left +0 +37 +37 +Connector_PinHeader_1.00mm +PinHeader_1x37_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x37, 1.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x37 1.00mm single row style2 pin1 right +0 +37 +37 +Connector_PinHeader_1.00mm +PinHeader_1x38_P1.00mm_Horizontal +Through hole angled pin header, 1x38, 1.00mm pitch, 2.0mm pin length, single row +Through hole angled pin header THT 1x38 1.00mm single row +0 +38 +38 +Connector_PinHeader_1.00mm +PinHeader_1x38_P1.00mm_Vertical +Through hole straight pin header, 1x38, 1.00mm pitch, single row +Through hole pin header THT 1x38 1.00mm single row +0 +38 +38 +Connector_PinHeader_1.00mm +PinHeader_1x38_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x38, 1.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x38 1.00mm single row style1 pin1 left +0 +38 +38 +Connector_PinHeader_1.00mm +PinHeader_1x38_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x38, 1.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x38 1.00mm single row style2 pin1 right +0 +38 +38 +Connector_PinHeader_1.00mm +PinHeader_1x39_P1.00mm_Horizontal +Through hole angled pin header, 1x39, 1.00mm pitch, 2.0mm pin length, single row +Through hole angled pin header THT 1x39 1.00mm single row +0 +39 +39 +Connector_PinHeader_1.00mm +PinHeader_1x39_P1.00mm_Vertical +Through hole straight pin header, 1x39, 1.00mm pitch, single row +Through hole pin header THT 1x39 1.00mm single row +0 +39 +39 +Connector_PinHeader_1.00mm +PinHeader_1x39_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x39, 1.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x39 1.00mm single row style1 pin1 left +0 +39 +39 +Connector_PinHeader_1.00mm +PinHeader_1x39_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x39, 1.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x39 1.00mm single row style2 pin1 right +0 +39 +39 +Connector_PinHeader_1.00mm +PinHeader_1x40_P1.00mm_Horizontal +Through hole angled pin header, 1x40, 1.00mm pitch, 2.0mm pin length, single row +Through hole angled pin header THT 1x40 1.00mm single row +0 +40 +40 +Connector_PinHeader_1.00mm +PinHeader_1x40_P1.00mm_Vertical +Through hole straight pin header, 1x40, 1.00mm pitch, single row +Through hole pin header THT 1x40 1.00mm single row +0 +40 +40 +Connector_PinHeader_1.00mm +PinHeader_1x40_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x40, 1.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x40 1.00mm single row style1 pin1 left +0 +40 +40 +Connector_PinHeader_1.00mm +PinHeader_1x40_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x40, 1.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x40 1.00mm single row style2 pin1 right +0 +40 +40 +Connector_PinHeader_1.00mm +PinHeader_2x01_P1.00mm_Horizontal +Through hole angled pin header, 2x01, 1.00mm pitch, 2.0mm pin length, double rows +Through hole angled pin header THT 2x01 1.00mm double row +0 +2 +2 +Connector_PinHeader_1.00mm +PinHeader_2x01_P1.00mm_Vertical +Through hole straight pin header, 2x01, 1.00mm pitch, double rows +Through hole pin header THT 2x01 1.00mm double row +0 +2 +2 +Connector_PinHeader_1.00mm +PinHeader_2x01_P1.00mm_Vertical_SMD +surface-mounted straight pin header, 2x01, 1.00mm pitch, double rows +Surface mounted pin header SMD 2x01 1.00mm double row +0 +2 +2 +Connector_PinHeader_1.00mm +PinHeader_2x02_P1.00mm_Horizontal +Through hole angled pin header, 2x02, 1.00mm pitch, 2.0mm pin length, double rows +Through hole angled pin header THT 2x02 1.00mm double row +0 +4 +4 +Connector_PinHeader_1.00mm +PinHeader_2x02_P1.00mm_Vertical +Through hole straight pin header, 2x02, 1.00mm pitch, double rows +Through hole pin header THT 2x02 1.00mm double row +0 +4 +4 +Connector_PinHeader_1.00mm +PinHeader_2x02_P1.00mm_Vertical_SMD +surface-mounted straight pin header, 2x02, 1.00mm pitch, double rows +Surface mounted pin header SMD 2x02 1.00mm double row +0 +4 +4 +Connector_PinHeader_1.00mm +PinHeader_2x03_P1.00mm_Horizontal +Through hole angled pin header, 2x03, 1.00mm pitch, 2.0mm pin length, double rows +Through hole angled pin header THT 2x03 1.00mm double row +0 +6 +6 +Connector_PinHeader_1.00mm +PinHeader_2x03_P1.00mm_Vertical +Through hole straight pin header, 2x03, 1.00mm pitch, double rows +Through hole pin header THT 2x03 1.00mm double row +0 +6 +6 +Connector_PinHeader_1.00mm +PinHeader_2x03_P1.00mm_Vertical_SMD +surface-mounted straight pin header, 2x03, 1.00mm pitch, double rows +Surface mounted pin header SMD 2x03 1.00mm double row +0 +6 +6 +Connector_PinHeader_1.00mm +PinHeader_2x04_P1.00mm_Horizontal +Through hole angled pin header, 2x04, 1.00mm pitch, 2.0mm pin length, double rows +Through hole angled pin header THT 2x04 1.00mm double row +0 +8 +8 +Connector_PinHeader_1.00mm +PinHeader_2x04_P1.00mm_Vertical +Through hole straight pin header, 2x04, 1.00mm pitch, double rows +Through hole pin header THT 2x04 1.00mm double row +0 +8 +8 +Connector_PinHeader_1.00mm +PinHeader_2x04_P1.00mm_Vertical_SMD +surface-mounted straight pin header, 2x04, 1.00mm pitch, double rows +Surface mounted pin header SMD 2x04 1.00mm double row +0 +8 +8 +Connector_PinHeader_1.00mm +PinHeader_2x05_P1.00mm_Horizontal +Through hole angled pin header, 2x05, 1.00mm pitch, 2.0mm pin length, double rows +Through hole angled pin header THT 2x05 1.00mm double row +0 +10 +10 +Connector_PinHeader_1.00mm +PinHeader_2x05_P1.00mm_Vertical +Through hole straight pin header, 2x05, 1.00mm pitch, double rows +Through hole pin header THT 2x05 1.00mm double row +0 +10 +10 +Connector_PinHeader_1.00mm +PinHeader_2x05_P1.00mm_Vertical_SMD +surface-mounted straight pin header, 2x05, 1.00mm pitch, double rows +Surface mounted pin header SMD 2x05 1.00mm double row +0 +10 +10 +Connector_PinHeader_1.00mm +PinHeader_2x06_P1.00mm_Horizontal +Through hole angled pin header, 2x06, 1.00mm pitch, 2.0mm pin length, double rows +Through hole angled pin header THT 2x06 1.00mm double row +0 +12 +12 +Connector_PinHeader_1.00mm +PinHeader_2x06_P1.00mm_Vertical +Through hole straight pin header, 2x06, 1.00mm pitch, double rows +Through hole pin header THT 2x06 1.00mm double row +0 +12 +12 +Connector_PinHeader_1.00mm +PinHeader_2x06_P1.00mm_Vertical_SMD +surface-mounted straight pin header, 2x06, 1.00mm pitch, double rows +Surface mounted pin header SMD 2x06 1.00mm double row +0 +12 +12 +Connector_PinHeader_1.00mm +PinHeader_2x07_P1.00mm_Horizontal +Through hole angled pin header, 2x07, 1.00mm pitch, 2.0mm pin length, double rows +Through hole angled pin header THT 2x07 1.00mm double row +0 +14 +14 +Connector_PinHeader_1.00mm +PinHeader_2x07_P1.00mm_Vertical +Through hole straight pin header, 2x07, 1.00mm pitch, double rows +Through hole pin header THT 2x07 1.00mm double row +0 +14 +14 +Connector_PinHeader_1.00mm +PinHeader_2x07_P1.00mm_Vertical_SMD +surface-mounted straight pin header, 2x07, 1.00mm pitch, double rows +Surface mounted pin header SMD 2x07 1.00mm double row +0 +14 +14 +Connector_PinHeader_1.00mm +PinHeader_2x08_P1.00mm_Horizontal +Through hole angled pin header, 2x08, 1.00mm pitch, 2.0mm pin length, double rows +Through hole angled pin header THT 2x08 1.00mm double row +0 +16 +16 +Connector_PinHeader_1.00mm +PinHeader_2x08_P1.00mm_Vertical +Through hole straight pin header, 2x08, 1.00mm pitch, double rows +Through hole pin header THT 2x08 1.00mm double row +0 +16 +16 +Connector_PinHeader_1.00mm +PinHeader_2x08_P1.00mm_Vertical_SMD +surface-mounted straight pin header, 2x08, 1.00mm pitch, double rows +Surface mounted pin header SMD 2x08 1.00mm double row +0 +16 +16 +Connector_PinHeader_1.00mm +PinHeader_2x09_P1.00mm_Horizontal +Through hole angled pin header, 2x09, 1.00mm pitch, 2.0mm pin length, double rows +Through hole angled pin header THT 2x09 1.00mm double row +0 +18 +18 +Connector_PinHeader_1.00mm +PinHeader_2x09_P1.00mm_Vertical +Through hole straight pin header, 2x09, 1.00mm pitch, double rows +Through hole pin header THT 2x09 1.00mm double row +0 +18 +18 +Connector_PinHeader_1.00mm +PinHeader_2x09_P1.00mm_Vertical_SMD +surface-mounted straight pin header, 2x09, 1.00mm pitch, double rows +Surface mounted pin header SMD 2x09 1.00mm double row +0 +18 +18 +Connector_PinHeader_1.00mm +PinHeader_2x10_P1.00mm_Horizontal +Through hole angled pin header, 2x10, 1.00mm pitch, 2.0mm pin length, double rows +Through hole angled pin header THT 2x10 1.00mm double row +0 +20 +20 +Connector_PinHeader_1.00mm +PinHeader_2x10_P1.00mm_Vertical +Through hole straight pin header, 2x10, 1.00mm pitch, double rows +Through hole pin header THT 2x10 1.00mm double row +0 +20 +20 +Connector_PinHeader_1.00mm +PinHeader_2x10_P1.00mm_Vertical_SMD +surface-mounted straight pin header, 2x10, 1.00mm pitch, double rows +Surface mounted pin header SMD 2x10 1.00mm double row +0 +20 +20 +Connector_PinHeader_1.00mm +PinHeader_2x11_P1.00mm_Horizontal +Through hole angled pin header, 2x11, 1.00mm pitch, 2.0mm pin length, double rows +Through hole angled pin header THT 2x11 1.00mm double row +0 +22 +22 +Connector_PinHeader_1.00mm +PinHeader_2x11_P1.00mm_Vertical +Through hole straight pin header, 2x11, 1.00mm pitch, double rows +Through hole pin header THT 2x11 1.00mm double row +0 +22 +22 +Connector_PinHeader_1.00mm +PinHeader_2x11_P1.00mm_Vertical_SMD +surface-mounted straight pin header, 2x11, 1.00mm pitch, double rows +Surface mounted pin header SMD 2x11 1.00mm double row +0 +22 +22 +Connector_PinHeader_1.00mm +PinHeader_2x12_P1.00mm_Horizontal +Through hole angled pin header, 2x12, 1.00mm pitch, 2.0mm pin length, double rows +Through hole angled pin header THT 2x12 1.00mm double row +0 +24 +24 +Connector_PinHeader_1.00mm +PinHeader_2x12_P1.00mm_Vertical +Through hole straight pin header, 2x12, 1.00mm pitch, double rows +Through hole pin header THT 2x12 1.00mm double row +0 +24 +24 +Connector_PinHeader_1.00mm +PinHeader_2x12_P1.00mm_Vertical_SMD +surface-mounted straight pin header, 2x12, 1.00mm pitch, double rows +Surface mounted pin header SMD 2x12 1.00mm double row +0 +24 +24 +Connector_PinHeader_1.00mm +PinHeader_2x13_P1.00mm_Horizontal +Through hole angled pin header, 2x13, 1.00mm pitch, 2.0mm pin length, double rows +Through hole angled pin header THT 2x13 1.00mm double row +0 +26 +26 +Connector_PinHeader_1.00mm +PinHeader_2x13_P1.00mm_Vertical +Through hole straight pin header, 2x13, 1.00mm pitch, double rows +Through hole pin header THT 2x13 1.00mm double row +0 +26 +26 +Connector_PinHeader_1.00mm +PinHeader_2x13_P1.00mm_Vertical_SMD +surface-mounted straight pin header, 2x13, 1.00mm pitch, double rows +Surface mounted pin header SMD 2x13 1.00mm double row +0 +26 +26 +Connector_PinHeader_1.00mm +PinHeader_2x14_P1.00mm_Horizontal +Through hole angled pin header, 2x14, 1.00mm pitch, 2.0mm pin length, double rows +Through hole angled pin header THT 2x14 1.00mm double row +0 +28 +28 +Connector_PinHeader_1.00mm +PinHeader_2x14_P1.00mm_Vertical +Through hole straight pin header, 2x14, 1.00mm pitch, double rows +Through hole pin header THT 2x14 1.00mm double row +0 +28 +28 +Connector_PinHeader_1.00mm +PinHeader_2x14_P1.00mm_Vertical_SMD +surface-mounted straight pin header, 2x14, 1.00mm pitch, double rows +Surface mounted pin header SMD 2x14 1.00mm double row +0 +28 +28 +Connector_PinHeader_1.00mm +PinHeader_2x15_P1.00mm_Horizontal +Through hole angled pin header, 2x15, 1.00mm pitch, 2.0mm pin length, double rows +Through hole angled pin header THT 2x15 1.00mm double row +0 +30 +30 +Connector_PinHeader_1.00mm +PinHeader_2x15_P1.00mm_Vertical +Through hole straight pin header, 2x15, 1.00mm pitch, double rows +Through hole pin header THT 2x15 1.00mm double row +0 +30 +30 +Connector_PinHeader_1.00mm +PinHeader_2x15_P1.00mm_Vertical_SMD +surface-mounted straight pin header, 2x15, 1.00mm pitch, double rows +Surface mounted pin header SMD 2x15 1.00mm double row +0 +30 +30 +Connector_PinHeader_1.00mm +PinHeader_2x16_P1.00mm_Horizontal +Through hole angled pin header, 2x16, 1.00mm pitch, 2.0mm pin length, double rows +Through hole angled pin header THT 2x16 1.00mm double row +0 +32 +32 +Connector_PinHeader_1.00mm +PinHeader_2x16_P1.00mm_Vertical +Through hole straight pin header, 2x16, 1.00mm pitch, double rows +Through hole pin header THT 2x16 1.00mm double row +0 +32 +32 +Connector_PinHeader_1.00mm +PinHeader_2x16_P1.00mm_Vertical_SMD +surface-mounted straight pin header, 2x16, 1.00mm pitch, double rows +Surface mounted pin header SMD 2x16 1.00mm double row +0 +32 +32 +Connector_PinHeader_1.00mm +PinHeader_2x17_P1.00mm_Horizontal +Through hole angled pin header, 2x17, 1.00mm pitch, 2.0mm pin length, double rows +Through hole angled pin header THT 2x17 1.00mm double row +0 +34 +34 +Connector_PinHeader_1.00mm +PinHeader_2x17_P1.00mm_Vertical +Through hole straight pin header, 2x17, 1.00mm pitch, double rows +Through hole pin header THT 2x17 1.00mm double row +0 +34 +34 +Connector_PinHeader_1.00mm +PinHeader_2x17_P1.00mm_Vertical_SMD +surface-mounted straight pin header, 2x17, 1.00mm pitch, double rows +Surface mounted pin header SMD 2x17 1.00mm double row +0 +34 +34 +Connector_PinHeader_1.00mm +PinHeader_2x18_P1.00mm_Horizontal +Through hole angled pin header, 2x18, 1.00mm pitch, 2.0mm pin length, double rows +Through hole angled pin header THT 2x18 1.00mm double row +0 +36 +36 +Connector_PinHeader_1.00mm +PinHeader_2x18_P1.00mm_Vertical +Through hole straight pin header, 2x18, 1.00mm pitch, double rows +Through hole pin header THT 2x18 1.00mm double row +0 +36 +36 +Connector_PinHeader_1.00mm +PinHeader_2x18_P1.00mm_Vertical_SMD +surface-mounted straight pin header, 2x18, 1.00mm pitch, double rows +Surface mounted pin header SMD 2x18 1.00mm double row +0 +36 +36 +Connector_PinHeader_1.00mm +PinHeader_2x19_P1.00mm_Horizontal +Through hole angled pin header, 2x19, 1.00mm pitch, 2.0mm pin length, double rows +Through hole angled pin header THT 2x19 1.00mm double row +0 +38 +38 +Connector_PinHeader_1.00mm +PinHeader_2x19_P1.00mm_Vertical +Through hole straight pin header, 2x19, 1.00mm pitch, double rows +Through hole pin header THT 2x19 1.00mm double row +0 +38 +38 +Connector_PinHeader_1.00mm +PinHeader_2x19_P1.00mm_Vertical_SMD +surface-mounted straight pin header, 2x19, 1.00mm pitch, double rows +Surface mounted pin header SMD 2x19 1.00mm double row +0 +38 +38 +Connector_PinHeader_1.00mm +PinHeader_2x20_P1.00mm_Horizontal +Through hole angled pin header, 2x20, 1.00mm pitch, 2.0mm pin length, double rows +Through hole angled pin header THT 2x20 1.00mm double row +0 +40 +40 +Connector_PinHeader_1.00mm +PinHeader_2x20_P1.00mm_Vertical +Through hole straight pin header, 2x20, 1.00mm pitch, double rows +Through hole pin header THT 2x20 1.00mm double row +0 +40 +40 +Connector_PinHeader_1.00mm +PinHeader_2x20_P1.00mm_Vertical_SMD +surface-mounted straight pin header, 2x20, 1.00mm pitch, double rows +Surface mounted pin header SMD 2x20 1.00mm double row +0 +40 +40 +Connector_PinHeader_1.00mm +PinHeader_2x21_P1.00mm_Horizontal +Through hole angled pin header, 2x21, 1.00mm pitch, 2.0mm pin length, double rows +Through hole angled pin header THT 2x21 1.00mm double row +0 +42 +42 +Connector_PinHeader_1.00mm +PinHeader_2x21_P1.00mm_Vertical +Through hole straight pin header, 2x21, 1.00mm pitch, double rows +Through hole pin header THT 2x21 1.00mm double row +0 +42 +42 +Connector_PinHeader_1.00mm +PinHeader_2x21_P1.00mm_Vertical_SMD +surface-mounted straight pin header, 2x21, 1.00mm pitch, double rows +Surface mounted pin header SMD 2x21 1.00mm double row +0 +42 +42 +Connector_PinHeader_1.00mm +PinHeader_2x22_P1.00mm_Horizontal +Through hole angled pin header, 2x22, 1.00mm pitch, 2.0mm pin length, double rows +Through hole angled pin header THT 2x22 1.00mm double row +0 +44 +44 +Connector_PinHeader_1.00mm +PinHeader_2x22_P1.00mm_Vertical +Through hole straight pin header, 2x22, 1.00mm pitch, double rows +Through hole pin header THT 2x22 1.00mm double row +0 +44 +44 +Connector_PinHeader_1.00mm +PinHeader_2x22_P1.00mm_Vertical_SMD +surface-mounted straight pin header, 2x22, 1.00mm pitch, double rows +Surface mounted pin header SMD 2x22 1.00mm double row +0 +44 +44 +Connector_PinHeader_1.00mm +PinHeader_2x23_P1.00mm_Horizontal +Through hole angled pin header, 2x23, 1.00mm pitch, 2.0mm pin length, double rows +Through hole angled pin header THT 2x23 1.00mm double row +0 +46 +46 +Connector_PinHeader_1.00mm +PinHeader_2x23_P1.00mm_Vertical +Through hole straight pin header, 2x23, 1.00mm pitch, double rows +Through hole pin header THT 2x23 1.00mm double row +0 +46 +46 +Connector_PinHeader_1.00mm +PinHeader_2x23_P1.00mm_Vertical_SMD +surface-mounted straight pin header, 2x23, 1.00mm pitch, double rows +Surface mounted pin header SMD 2x23 1.00mm double row +0 +46 +46 +Connector_PinHeader_1.00mm +PinHeader_2x24_P1.00mm_Horizontal +Through hole angled pin header, 2x24, 1.00mm pitch, 2.0mm pin length, double rows +Through hole angled pin header THT 2x24 1.00mm double row +0 +48 +48 +Connector_PinHeader_1.00mm +PinHeader_2x24_P1.00mm_Vertical +Through hole straight pin header, 2x24, 1.00mm pitch, double rows +Through hole pin header THT 2x24 1.00mm double row +0 +48 +48 +Connector_PinHeader_1.00mm +PinHeader_2x24_P1.00mm_Vertical_SMD +surface-mounted straight pin header, 2x24, 1.00mm pitch, double rows +Surface mounted pin header SMD 2x24 1.00mm double row +0 +48 +48 +Connector_PinHeader_1.00mm +PinHeader_2x25_P1.00mm_Horizontal +Through hole angled pin header, 2x25, 1.00mm pitch, 2.0mm pin length, double rows +Through hole angled pin header THT 2x25 1.00mm double row +0 +50 +50 +Connector_PinHeader_1.00mm +PinHeader_2x25_P1.00mm_Vertical +Through hole straight pin header, 2x25, 1.00mm pitch, double rows +Through hole pin header THT 2x25 1.00mm double row +0 +50 +50 +Connector_PinHeader_1.00mm +PinHeader_2x25_P1.00mm_Vertical_SMD +surface-mounted straight pin header, 2x25, 1.00mm pitch, double rows +Surface mounted pin header SMD 2x25 1.00mm double row +0 +50 +50 +Connector_PinHeader_1.00mm +PinHeader_2x26_P1.00mm_Horizontal +Through hole angled pin header, 2x26, 1.00mm pitch, 2.0mm pin length, double rows +Through hole angled pin header THT 2x26 1.00mm double row +0 +52 +52 +Connector_PinHeader_1.00mm +PinHeader_2x26_P1.00mm_Vertical +Through hole straight pin header, 2x26, 1.00mm pitch, double rows +Through hole pin header THT 2x26 1.00mm double row +0 +52 +52 +Connector_PinHeader_1.00mm +PinHeader_2x26_P1.00mm_Vertical_SMD +surface-mounted straight pin header, 2x26, 1.00mm pitch, double rows +Surface mounted pin header SMD 2x26 1.00mm double row +0 +52 +52 +Connector_PinHeader_1.00mm +PinHeader_2x27_P1.00mm_Horizontal +Through hole angled pin header, 2x27, 1.00mm pitch, 2.0mm pin length, double rows +Through hole angled pin header THT 2x27 1.00mm double row +0 +54 +54 +Connector_PinHeader_1.00mm +PinHeader_2x27_P1.00mm_Vertical +Through hole straight pin header, 2x27, 1.00mm pitch, double rows +Through hole pin header THT 2x27 1.00mm double row +0 +54 +54 +Connector_PinHeader_1.00mm +PinHeader_2x27_P1.00mm_Vertical_SMD +surface-mounted straight pin header, 2x27, 1.00mm pitch, double rows +Surface mounted pin header SMD 2x27 1.00mm double row +0 +54 +54 +Connector_PinHeader_1.00mm +PinHeader_2x28_P1.00mm_Horizontal +Through hole angled pin header, 2x28, 1.00mm pitch, 2.0mm pin length, double rows +Through hole angled pin header THT 2x28 1.00mm double row +0 +56 +56 +Connector_PinHeader_1.00mm +PinHeader_2x28_P1.00mm_Vertical +Through hole straight pin header, 2x28, 1.00mm pitch, double rows +Through hole pin header THT 2x28 1.00mm double row +0 +56 +56 +Connector_PinHeader_1.00mm +PinHeader_2x28_P1.00mm_Vertical_SMD +surface-mounted straight pin header, 2x28, 1.00mm pitch, double rows +Surface mounted pin header SMD 2x28 1.00mm double row +0 +56 +56 +Connector_PinHeader_1.00mm +PinHeader_2x29_P1.00mm_Horizontal +Through hole angled pin header, 2x29, 1.00mm pitch, 2.0mm pin length, double rows +Through hole angled pin header THT 2x29 1.00mm double row +0 +58 +58 +Connector_PinHeader_1.00mm +PinHeader_2x29_P1.00mm_Vertical +Through hole straight pin header, 2x29, 1.00mm pitch, double rows +Through hole pin header THT 2x29 1.00mm double row +0 +58 +58 +Connector_PinHeader_1.00mm +PinHeader_2x29_P1.00mm_Vertical_SMD +surface-mounted straight pin header, 2x29, 1.00mm pitch, double rows +Surface mounted pin header SMD 2x29 1.00mm double row +0 +58 +58 +Connector_PinHeader_1.00mm +PinHeader_2x30_P1.00mm_Horizontal +Through hole angled pin header, 2x30, 1.00mm pitch, 2.0mm pin length, double rows +Through hole angled pin header THT 2x30 1.00mm double row +0 +60 +60 +Connector_PinHeader_1.00mm +PinHeader_2x30_P1.00mm_Vertical +Through hole straight pin header, 2x30, 1.00mm pitch, double rows +Through hole pin header THT 2x30 1.00mm double row +0 +60 +60 +Connector_PinHeader_1.00mm +PinHeader_2x30_P1.00mm_Vertical_SMD +surface-mounted straight pin header, 2x30, 1.00mm pitch, double rows +Surface mounted pin header SMD 2x30 1.00mm double row +0 +60 +60 +Connector_PinHeader_1.00mm +PinHeader_2x31_P1.00mm_Horizontal +Through hole angled pin header, 2x31, 1.00mm pitch, 2.0mm pin length, double rows +Through hole angled pin header THT 2x31 1.00mm double row +0 +62 +62 +Connector_PinHeader_1.00mm +PinHeader_2x31_P1.00mm_Vertical +Through hole straight pin header, 2x31, 1.00mm pitch, double rows +Through hole pin header THT 2x31 1.00mm double row +0 +62 +62 +Connector_PinHeader_1.00mm +PinHeader_2x31_P1.00mm_Vertical_SMD +surface-mounted straight pin header, 2x31, 1.00mm pitch, double rows +Surface mounted pin header SMD 2x31 1.00mm double row +0 +62 +62 +Connector_PinHeader_1.00mm +PinHeader_2x32_P1.00mm_Horizontal +Through hole angled pin header, 2x32, 1.00mm pitch, 2.0mm pin length, double rows +Through hole angled pin header THT 2x32 1.00mm double row +0 +64 +64 +Connector_PinHeader_1.00mm +PinHeader_2x32_P1.00mm_Vertical +Through hole straight pin header, 2x32, 1.00mm pitch, double rows +Through hole pin header THT 2x32 1.00mm double row +0 +64 +64 +Connector_PinHeader_1.00mm +PinHeader_2x32_P1.00mm_Vertical_SMD +surface-mounted straight pin header, 2x32, 1.00mm pitch, double rows +Surface mounted pin header SMD 2x32 1.00mm double row +0 +64 +64 +Connector_PinHeader_1.00mm +PinHeader_2x33_P1.00mm_Horizontal +Through hole angled pin header, 2x33, 1.00mm pitch, 2.0mm pin length, double rows +Through hole angled pin header THT 2x33 1.00mm double row +0 +66 +66 +Connector_PinHeader_1.00mm +PinHeader_2x33_P1.00mm_Vertical +Through hole straight pin header, 2x33, 1.00mm pitch, double rows +Through hole pin header THT 2x33 1.00mm double row +0 +66 +66 +Connector_PinHeader_1.00mm +PinHeader_2x33_P1.00mm_Vertical_SMD +surface-mounted straight pin header, 2x33, 1.00mm pitch, double rows +Surface mounted pin header SMD 2x33 1.00mm double row +0 +66 +66 +Connector_PinHeader_1.00mm +PinHeader_2x34_P1.00mm_Horizontal +Through hole angled pin header, 2x34, 1.00mm pitch, 2.0mm pin length, double rows +Through hole angled pin header THT 2x34 1.00mm double row +0 +68 +68 +Connector_PinHeader_1.00mm +PinHeader_2x34_P1.00mm_Vertical +Through hole straight pin header, 2x34, 1.00mm pitch, double rows +Through hole pin header THT 2x34 1.00mm double row +0 +68 +68 +Connector_PinHeader_1.00mm +PinHeader_2x34_P1.00mm_Vertical_SMD +surface-mounted straight pin header, 2x34, 1.00mm pitch, double rows +Surface mounted pin header SMD 2x34 1.00mm double row +0 +68 +68 +Connector_PinHeader_1.00mm +PinHeader_2x35_P1.00mm_Horizontal +Through hole angled pin header, 2x35, 1.00mm pitch, 2.0mm pin length, double rows +Through hole angled pin header THT 2x35 1.00mm double row +0 +70 +70 +Connector_PinHeader_1.00mm +PinHeader_2x35_P1.00mm_Vertical +Through hole straight pin header, 2x35, 1.00mm pitch, double rows +Through hole pin header THT 2x35 1.00mm double row +0 +70 +70 +Connector_PinHeader_1.00mm +PinHeader_2x35_P1.00mm_Vertical_SMD +surface-mounted straight pin header, 2x35, 1.00mm pitch, double rows +Surface mounted pin header SMD 2x35 1.00mm double row +0 +70 +70 +Connector_PinHeader_1.00mm +PinHeader_2x36_P1.00mm_Horizontal +Through hole angled pin header, 2x36, 1.00mm pitch, 2.0mm pin length, double rows +Through hole angled pin header THT 2x36 1.00mm double row +0 +72 +72 +Connector_PinHeader_1.00mm +PinHeader_2x36_P1.00mm_Vertical +Through hole straight pin header, 2x36, 1.00mm pitch, double rows +Through hole pin header THT 2x36 1.00mm double row +0 +72 +72 +Connector_PinHeader_1.00mm +PinHeader_2x36_P1.00mm_Vertical_SMD +surface-mounted straight pin header, 2x36, 1.00mm pitch, double rows +Surface mounted pin header SMD 2x36 1.00mm double row +0 +72 +72 +Connector_PinHeader_1.00mm +PinHeader_2x37_P1.00mm_Horizontal +Through hole angled pin header, 2x37, 1.00mm pitch, 2.0mm pin length, double rows +Through hole angled pin header THT 2x37 1.00mm double row +0 +74 +74 +Connector_PinHeader_1.00mm +PinHeader_2x37_P1.00mm_Vertical +Through hole straight pin header, 2x37, 1.00mm pitch, double rows +Through hole pin header THT 2x37 1.00mm double row +0 +74 +74 +Connector_PinHeader_1.00mm +PinHeader_2x37_P1.00mm_Vertical_SMD +surface-mounted straight pin header, 2x37, 1.00mm pitch, double rows +Surface mounted pin header SMD 2x37 1.00mm double row +0 +74 +74 +Connector_PinHeader_1.00mm +PinHeader_2x38_P1.00mm_Horizontal +Through hole angled pin header, 2x38, 1.00mm pitch, 2.0mm pin length, double rows +Through hole angled pin header THT 2x38 1.00mm double row +0 +76 +76 +Connector_PinHeader_1.00mm +PinHeader_2x38_P1.00mm_Vertical +Through hole straight pin header, 2x38, 1.00mm pitch, double rows +Through hole pin header THT 2x38 1.00mm double row +0 +76 +76 +Connector_PinHeader_1.00mm +PinHeader_2x38_P1.00mm_Vertical_SMD +surface-mounted straight pin header, 2x38, 1.00mm pitch, double rows +Surface mounted pin header SMD 2x38 1.00mm double row +0 +76 +76 +Connector_PinHeader_1.00mm +PinHeader_2x39_P1.00mm_Horizontal +Through hole angled pin header, 2x39, 1.00mm pitch, 2.0mm pin length, double rows +Through hole angled pin header THT 2x39 1.00mm double row +0 +78 +78 +Connector_PinHeader_1.00mm +PinHeader_2x39_P1.00mm_Vertical +Through hole straight pin header, 2x39, 1.00mm pitch, double rows +Through hole pin header THT 2x39 1.00mm double row +0 +78 +78 +Connector_PinHeader_1.00mm +PinHeader_2x39_P1.00mm_Vertical_SMD +surface-mounted straight pin header, 2x39, 1.00mm pitch, double rows +Surface mounted pin header SMD 2x39 1.00mm double row +0 +78 +78 +Connector_PinHeader_1.00mm +PinHeader_2x40_P1.00mm_Horizontal +Through hole angled pin header, 2x40, 1.00mm pitch, 2.0mm pin length, double rows +Through hole angled pin header THT 2x40 1.00mm double row +0 +80 +80 +Connector_PinHeader_1.00mm +PinHeader_2x40_P1.00mm_Vertical +Through hole straight pin header, 2x40, 1.00mm pitch, double rows +Through hole pin header THT 2x40 1.00mm double row +0 +80 +80 +Connector_PinHeader_1.00mm +PinHeader_2x40_P1.00mm_Vertical_SMD +surface-mounted straight pin header, 2x40, 1.00mm pitch, double rows +Surface mounted pin header SMD 2x40 1.00mm double row +0 +80 +80 +Connector_PinHeader_1.27mm +PinHeader_1x01_P1.27mm_Horizontal +Through hole angled pin header, 1x01, 1.27mm pitch, 4.0mm pin length, single row +Through hole angled pin header THT 1x01 1.27mm single row +0 +1 +1 +Connector_PinHeader_1.27mm +PinHeader_1x01_P1.27mm_Vertical +Through hole straight pin header, 1x01, 1.27mm pitch, single row +Through hole pin header THT 1x01 1.27mm single row +0 +1 +1 +Connector_PinHeader_1.27mm +PinHeader_1x02_P1.27mm_Horizontal +Through hole angled pin header, 1x02, 1.27mm pitch, 4.0mm pin length, single row +Through hole angled pin header THT 1x02 1.27mm single row +0 +2 +2 +Connector_PinHeader_1.27mm +PinHeader_1x02_P1.27mm_Vertical +Through hole straight pin header, 1x02, 1.27mm pitch, single row +Through hole pin header THT 1x02 1.27mm single row +0 +2 +2 +Connector_PinHeader_1.27mm +PinHeader_1x02_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x02, 1.27mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x02 1.27mm single row style1 pin1 left +0 +2 +2 +Connector_PinHeader_1.27mm +PinHeader_1x02_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x02, 1.27mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x02 1.27mm single row style2 pin1 right +0 +2 +2 +Connector_PinHeader_1.27mm +PinHeader_1x03_P1.27mm_Horizontal +Through hole angled pin header, 1x03, 1.27mm pitch, 4.0mm pin length, single row +Through hole angled pin header THT 1x03 1.27mm single row +0 +3 +3 +Connector_PinHeader_1.27mm +PinHeader_1x03_P1.27mm_Vertical +Through hole straight pin header, 1x03, 1.27mm pitch, single row +Through hole pin header THT 1x03 1.27mm single row +0 +3 +3 +Connector_PinHeader_1.27mm +PinHeader_1x03_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x03, 1.27mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x03 1.27mm single row style1 pin1 left +0 +3 +3 +Connector_PinHeader_1.27mm +PinHeader_1x03_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x03, 1.27mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x03 1.27mm single row style2 pin1 right +0 +3 +3 +Connector_PinHeader_1.27mm +PinHeader_1x04_P1.27mm_Horizontal +Through hole angled pin header, 1x04, 1.27mm pitch, 4.0mm pin length, single row +Through hole angled pin header THT 1x04 1.27mm single row +0 +4 +4 +Connector_PinHeader_1.27mm +PinHeader_1x04_P1.27mm_Vertical +Through hole straight pin header, 1x04, 1.27mm pitch, single row +Through hole pin header THT 1x04 1.27mm single row +0 +4 +4 +Connector_PinHeader_1.27mm +PinHeader_1x04_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x04, 1.27mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x04 1.27mm single row style1 pin1 left +0 +4 +4 +Connector_PinHeader_1.27mm +PinHeader_1x04_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x04, 1.27mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x04 1.27mm single row style2 pin1 right +0 +4 +4 +Connector_PinHeader_1.27mm +PinHeader_1x05_P1.27mm_Horizontal +Through hole angled pin header, 1x05, 1.27mm pitch, 4.0mm pin length, single row +Through hole angled pin header THT 1x05 1.27mm single row +0 +5 +5 +Connector_PinHeader_1.27mm +PinHeader_1x05_P1.27mm_Vertical +Through hole straight pin header, 1x05, 1.27mm pitch, single row +Through hole pin header THT 1x05 1.27mm single row +0 +5 +5 +Connector_PinHeader_1.27mm +PinHeader_1x05_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x05, 1.27mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x05 1.27mm single row style1 pin1 left +0 +5 +5 +Connector_PinHeader_1.27mm +PinHeader_1x05_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x05, 1.27mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x05 1.27mm single row style2 pin1 right +0 +5 +5 +Connector_PinHeader_1.27mm +PinHeader_1x06_P1.27mm_Horizontal +Through hole angled pin header, 1x06, 1.27mm pitch, 4.0mm pin length, single row +Through hole angled pin header THT 1x06 1.27mm single row +0 +6 +6 +Connector_PinHeader_1.27mm +PinHeader_1x06_P1.27mm_Vertical +Through hole straight pin header, 1x06, 1.27mm pitch, single row +Through hole pin header THT 1x06 1.27mm single row +0 +6 +6 +Connector_PinHeader_1.27mm +PinHeader_1x06_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x06, 1.27mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x06 1.27mm single row style1 pin1 left +0 +6 +6 +Connector_PinHeader_1.27mm +PinHeader_1x06_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x06, 1.27mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x06 1.27mm single row style2 pin1 right +0 +6 +6 +Connector_PinHeader_1.27mm +PinHeader_1x07_P1.27mm_Horizontal +Through hole angled pin header, 1x07, 1.27mm pitch, 4.0mm pin length, single row +Through hole angled pin header THT 1x07 1.27mm single row +0 +7 +7 +Connector_PinHeader_1.27mm +PinHeader_1x07_P1.27mm_Vertical +Through hole straight pin header, 1x07, 1.27mm pitch, single row +Through hole pin header THT 1x07 1.27mm single row +0 +7 +7 +Connector_PinHeader_1.27mm +PinHeader_1x07_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x07, 1.27mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x07 1.27mm single row style1 pin1 left +0 +7 +7 +Connector_PinHeader_1.27mm +PinHeader_1x07_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x07, 1.27mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x07 1.27mm single row style2 pin1 right +0 +7 +7 +Connector_PinHeader_1.27mm +PinHeader_1x08_P1.27mm_Horizontal +Through hole angled pin header, 1x08, 1.27mm pitch, 4.0mm pin length, single row +Through hole angled pin header THT 1x08 1.27mm single row +0 +8 +8 +Connector_PinHeader_1.27mm +PinHeader_1x08_P1.27mm_Vertical +Through hole straight pin header, 1x08, 1.27mm pitch, single row +Through hole pin header THT 1x08 1.27mm single row +0 +8 +8 +Connector_PinHeader_1.27mm +PinHeader_1x08_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x08, 1.27mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x08 1.27mm single row style1 pin1 left +0 +8 +8 +Connector_PinHeader_1.27mm +PinHeader_1x08_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x08, 1.27mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x08 1.27mm single row style2 pin1 right +0 +8 +8 +Connector_PinHeader_1.27mm +PinHeader_1x09_P1.27mm_Horizontal +Through hole angled pin header, 1x09, 1.27mm pitch, 4.0mm pin length, single row +Through hole angled pin header THT 1x09 1.27mm single row +0 +9 +9 +Connector_PinHeader_1.27mm +PinHeader_1x09_P1.27mm_Vertical +Through hole straight pin header, 1x09, 1.27mm pitch, single row +Through hole pin header THT 1x09 1.27mm single row +0 +9 +9 +Connector_PinHeader_1.27mm +PinHeader_1x09_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x09, 1.27mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x09 1.27mm single row style1 pin1 left +0 +9 +9 +Connector_PinHeader_1.27mm +PinHeader_1x09_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x09, 1.27mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x09 1.27mm single row style2 pin1 right +0 +9 +9 +Connector_PinHeader_1.27mm +PinHeader_1x10_P1.27mm_Horizontal +Through hole angled pin header, 1x10, 1.27mm pitch, 4.0mm pin length, single row +Through hole angled pin header THT 1x10 1.27mm single row +0 +10 +10 +Connector_PinHeader_1.27mm +PinHeader_1x10_P1.27mm_Vertical +Through hole straight pin header, 1x10, 1.27mm pitch, single row +Through hole pin header THT 1x10 1.27mm single row +0 +10 +10 +Connector_PinHeader_1.27mm +PinHeader_1x10_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x10, 1.27mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x10 1.27mm single row style1 pin1 left +0 +10 +10 +Connector_PinHeader_1.27mm +PinHeader_1x10_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x10, 1.27mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x10 1.27mm single row style2 pin1 right +0 +10 +10 +Connector_PinHeader_1.27mm +PinHeader_1x11_P1.27mm_Horizontal +Through hole angled pin header, 1x11, 1.27mm pitch, 4.0mm pin length, single row +Through hole angled pin header THT 1x11 1.27mm single row +0 +11 +11 +Connector_PinHeader_1.27mm +PinHeader_1x11_P1.27mm_Vertical +Through hole straight pin header, 1x11, 1.27mm pitch, single row +Through hole pin header THT 1x11 1.27mm single row +0 +11 +11 +Connector_PinHeader_1.27mm +PinHeader_1x11_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x11, 1.27mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x11 1.27mm single row style1 pin1 left +0 +11 +11 +Connector_PinHeader_1.27mm +PinHeader_1x11_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x11, 1.27mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x11 1.27mm single row style2 pin1 right +0 +11 +11 +Connector_PinHeader_1.27mm +PinHeader_1x12_P1.27mm_Horizontal +Through hole angled pin header, 1x12, 1.27mm pitch, 4.0mm pin length, single row +Through hole angled pin header THT 1x12 1.27mm single row +0 +12 +12 +Connector_PinHeader_1.27mm +PinHeader_1x12_P1.27mm_Vertical +Through hole straight pin header, 1x12, 1.27mm pitch, single row +Through hole pin header THT 1x12 1.27mm single row +0 +12 +12 +Connector_PinHeader_1.27mm +PinHeader_1x12_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x12, 1.27mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x12 1.27mm single row style1 pin1 left +0 +12 +12 +Connector_PinHeader_1.27mm +PinHeader_1x12_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x12, 1.27mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x12 1.27mm single row style2 pin1 right +0 +12 +12 +Connector_PinHeader_1.27mm +PinHeader_1x13_P1.27mm_Horizontal +Through hole angled pin header, 1x13, 1.27mm pitch, 4.0mm pin length, single row +Through hole angled pin header THT 1x13 1.27mm single row +0 +13 +13 +Connector_PinHeader_1.27mm +PinHeader_1x13_P1.27mm_Vertical +Through hole straight pin header, 1x13, 1.27mm pitch, single row +Through hole pin header THT 1x13 1.27mm single row +0 +13 +13 +Connector_PinHeader_1.27mm +PinHeader_1x13_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x13, 1.27mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x13 1.27mm single row style1 pin1 left +0 +13 +13 +Connector_PinHeader_1.27mm +PinHeader_1x13_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x13, 1.27mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x13 1.27mm single row style2 pin1 right +0 +13 +13 +Connector_PinHeader_1.27mm +PinHeader_1x14_P1.27mm_Horizontal +Through hole angled pin header, 1x14, 1.27mm pitch, 4.0mm pin length, single row +Through hole angled pin header THT 1x14 1.27mm single row +0 +14 +14 +Connector_PinHeader_1.27mm +PinHeader_1x14_P1.27mm_Vertical +Through hole straight pin header, 1x14, 1.27mm pitch, single row +Through hole pin header THT 1x14 1.27mm single row +0 +14 +14 +Connector_PinHeader_1.27mm +PinHeader_1x14_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x14, 1.27mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x14 1.27mm single row style1 pin1 left +0 +14 +14 +Connector_PinHeader_1.27mm +PinHeader_1x14_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x14, 1.27mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x14 1.27mm single row style2 pin1 right +0 +14 +14 +Connector_PinHeader_1.27mm +PinHeader_1x15_P1.27mm_Horizontal +Through hole angled pin header, 1x15, 1.27mm pitch, 4.0mm pin length, single row +Through hole angled pin header THT 1x15 1.27mm single row +0 +15 +15 +Connector_PinHeader_1.27mm +PinHeader_1x15_P1.27mm_Vertical +Through hole straight pin header, 1x15, 1.27mm pitch, single row +Through hole pin header THT 1x15 1.27mm single row +0 +15 +15 +Connector_PinHeader_1.27mm +PinHeader_1x15_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x15, 1.27mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x15 1.27mm single row style1 pin1 left +0 +15 +15 +Connector_PinHeader_1.27mm +PinHeader_1x15_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x15, 1.27mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x15 1.27mm single row style2 pin1 right +0 +15 +15 +Connector_PinHeader_1.27mm +PinHeader_1x16_P1.27mm_Horizontal +Through hole angled pin header, 1x16, 1.27mm pitch, 4.0mm pin length, single row +Through hole angled pin header THT 1x16 1.27mm single row +0 +16 +16 +Connector_PinHeader_1.27mm +PinHeader_1x16_P1.27mm_Vertical +Through hole straight pin header, 1x16, 1.27mm pitch, single row +Through hole pin header THT 1x16 1.27mm single row +0 +16 +16 +Connector_PinHeader_1.27mm +PinHeader_1x16_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x16, 1.27mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x16 1.27mm single row style1 pin1 left +0 +16 +16 +Connector_PinHeader_1.27mm +PinHeader_1x16_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x16, 1.27mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x16 1.27mm single row style2 pin1 right +0 +16 +16 +Connector_PinHeader_1.27mm +PinHeader_1x17_P1.27mm_Horizontal +Through hole angled pin header, 1x17, 1.27mm pitch, 4.0mm pin length, single row +Through hole angled pin header THT 1x17 1.27mm single row +0 +17 +17 +Connector_PinHeader_1.27mm +PinHeader_1x17_P1.27mm_Vertical +Through hole straight pin header, 1x17, 1.27mm pitch, single row +Through hole pin header THT 1x17 1.27mm single row +0 +17 +17 +Connector_PinHeader_1.27mm +PinHeader_1x17_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x17, 1.27mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x17 1.27mm single row style1 pin1 left +0 +17 +17 +Connector_PinHeader_1.27mm +PinHeader_1x17_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x17, 1.27mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x17 1.27mm single row style2 pin1 right +0 +17 +17 +Connector_PinHeader_1.27mm +PinHeader_1x18_P1.27mm_Horizontal +Through hole angled pin header, 1x18, 1.27mm pitch, 4.0mm pin length, single row +Through hole angled pin header THT 1x18 1.27mm single row +0 +18 +18 +Connector_PinHeader_1.27mm +PinHeader_1x18_P1.27mm_Vertical +Through hole straight pin header, 1x18, 1.27mm pitch, single row +Through hole pin header THT 1x18 1.27mm single row +0 +18 +18 +Connector_PinHeader_1.27mm +PinHeader_1x18_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x18, 1.27mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x18 1.27mm single row style1 pin1 left +0 +18 +18 +Connector_PinHeader_1.27mm +PinHeader_1x18_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x18, 1.27mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x18 1.27mm single row style2 pin1 right +0 +18 +18 +Connector_PinHeader_1.27mm +PinHeader_1x19_P1.27mm_Horizontal +Through hole angled pin header, 1x19, 1.27mm pitch, 4.0mm pin length, single row +Through hole angled pin header THT 1x19 1.27mm single row +0 +19 +19 +Connector_PinHeader_1.27mm +PinHeader_1x19_P1.27mm_Vertical +Through hole straight pin header, 1x19, 1.27mm pitch, single row +Through hole pin header THT 1x19 1.27mm single row +0 +19 +19 +Connector_PinHeader_1.27mm +PinHeader_1x19_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x19, 1.27mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x19 1.27mm single row style1 pin1 left +0 +19 +19 +Connector_PinHeader_1.27mm +PinHeader_1x19_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x19, 1.27mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x19 1.27mm single row style2 pin1 right +0 +19 +19 +Connector_PinHeader_1.27mm +PinHeader_1x20_P1.27mm_Horizontal +Through hole angled pin header, 1x20, 1.27mm pitch, 4.0mm pin length, single row +Through hole angled pin header THT 1x20 1.27mm single row +0 +20 +20 +Connector_PinHeader_1.27mm +PinHeader_1x20_P1.27mm_Vertical +Through hole straight pin header, 1x20, 1.27mm pitch, single row +Through hole pin header THT 1x20 1.27mm single row +0 +20 +20 +Connector_PinHeader_1.27mm +PinHeader_1x20_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x20, 1.27mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x20 1.27mm single row style1 pin1 left +0 +20 +20 +Connector_PinHeader_1.27mm +PinHeader_1x20_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x20, 1.27mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x20 1.27mm single row style2 pin1 right +0 +20 +20 +Connector_PinHeader_1.27mm +PinHeader_1x21_P1.27mm_Horizontal +Through hole angled pin header, 1x21, 1.27mm pitch, 4.0mm pin length, single row +Through hole angled pin header THT 1x21 1.27mm single row +0 +21 +21 +Connector_PinHeader_1.27mm +PinHeader_1x21_P1.27mm_Vertical +Through hole straight pin header, 1x21, 1.27mm pitch, single row +Through hole pin header THT 1x21 1.27mm single row +0 +21 +21 +Connector_PinHeader_1.27mm +PinHeader_1x21_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x21, 1.27mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x21 1.27mm single row style1 pin1 left +0 +21 +21 +Connector_PinHeader_1.27mm +PinHeader_1x21_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x21, 1.27mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x21 1.27mm single row style2 pin1 right +0 +21 +21 +Connector_PinHeader_1.27mm +PinHeader_1x22_P1.27mm_Horizontal +Through hole angled pin header, 1x22, 1.27mm pitch, 4.0mm pin length, single row +Through hole angled pin header THT 1x22 1.27mm single row +0 +22 +22 +Connector_PinHeader_1.27mm +PinHeader_1x22_P1.27mm_Vertical +Through hole straight pin header, 1x22, 1.27mm pitch, single row +Through hole pin header THT 1x22 1.27mm single row +0 +22 +22 +Connector_PinHeader_1.27mm +PinHeader_1x22_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x22, 1.27mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x22 1.27mm single row style1 pin1 left +0 +22 +22 +Connector_PinHeader_1.27mm +PinHeader_1x22_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x22, 1.27mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x22 1.27mm single row style2 pin1 right +0 +22 +22 +Connector_PinHeader_1.27mm +PinHeader_1x23_P1.27mm_Horizontal +Through hole angled pin header, 1x23, 1.27mm pitch, 4.0mm pin length, single row +Through hole angled pin header THT 1x23 1.27mm single row +0 +23 +23 +Connector_PinHeader_1.27mm +PinHeader_1x23_P1.27mm_Vertical +Through hole straight pin header, 1x23, 1.27mm pitch, single row +Through hole pin header THT 1x23 1.27mm single row +0 +23 +23 +Connector_PinHeader_1.27mm +PinHeader_1x23_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x23, 1.27mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x23 1.27mm single row style1 pin1 left +0 +23 +23 +Connector_PinHeader_1.27mm +PinHeader_1x23_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x23, 1.27mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x23 1.27mm single row style2 pin1 right +0 +23 +23 +Connector_PinHeader_1.27mm +PinHeader_1x24_P1.27mm_Horizontal +Through hole angled pin header, 1x24, 1.27mm pitch, 4.0mm pin length, single row +Through hole angled pin header THT 1x24 1.27mm single row +0 +24 +24 +Connector_PinHeader_1.27mm +PinHeader_1x24_P1.27mm_Vertical +Through hole straight pin header, 1x24, 1.27mm pitch, single row +Through hole pin header THT 1x24 1.27mm single row +0 +24 +24 +Connector_PinHeader_1.27mm +PinHeader_1x24_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x24, 1.27mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x24 1.27mm single row style1 pin1 left +0 +24 +24 +Connector_PinHeader_1.27mm +PinHeader_1x24_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x24, 1.27mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x24 1.27mm single row style2 pin1 right +0 +24 +24 +Connector_PinHeader_1.27mm +PinHeader_1x25_P1.27mm_Horizontal +Through hole angled pin header, 1x25, 1.27mm pitch, 4.0mm pin length, single row +Through hole angled pin header THT 1x25 1.27mm single row +0 +25 +25 +Connector_PinHeader_1.27mm +PinHeader_1x25_P1.27mm_Vertical +Through hole straight pin header, 1x25, 1.27mm pitch, single row +Through hole pin header THT 1x25 1.27mm single row +0 +25 +25 +Connector_PinHeader_1.27mm +PinHeader_1x25_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x25, 1.27mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x25 1.27mm single row style1 pin1 left +0 +25 +25 +Connector_PinHeader_1.27mm +PinHeader_1x25_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x25, 1.27mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x25 1.27mm single row style2 pin1 right +0 +25 +25 +Connector_PinHeader_1.27mm +PinHeader_1x26_P1.27mm_Horizontal +Through hole angled pin header, 1x26, 1.27mm pitch, 4.0mm pin length, single row +Through hole angled pin header THT 1x26 1.27mm single row +0 +26 +26 +Connector_PinHeader_1.27mm +PinHeader_1x26_P1.27mm_Vertical +Through hole straight pin header, 1x26, 1.27mm pitch, single row +Through hole pin header THT 1x26 1.27mm single row +0 +26 +26 +Connector_PinHeader_1.27mm +PinHeader_1x26_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x26, 1.27mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x26 1.27mm single row style1 pin1 left +0 +26 +26 +Connector_PinHeader_1.27mm +PinHeader_1x26_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x26, 1.27mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x26 1.27mm single row style2 pin1 right +0 +26 +26 +Connector_PinHeader_1.27mm +PinHeader_1x27_P1.27mm_Horizontal +Through hole angled pin header, 1x27, 1.27mm pitch, 4.0mm pin length, single row +Through hole angled pin header THT 1x27 1.27mm single row +0 +27 +27 +Connector_PinHeader_1.27mm +PinHeader_1x27_P1.27mm_Vertical +Through hole straight pin header, 1x27, 1.27mm pitch, single row +Through hole pin header THT 1x27 1.27mm single row +0 +27 +27 +Connector_PinHeader_1.27mm +PinHeader_1x27_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x27, 1.27mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x27 1.27mm single row style1 pin1 left +0 +27 +27 +Connector_PinHeader_1.27mm +PinHeader_1x27_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x27, 1.27mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x27 1.27mm single row style2 pin1 right +0 +27 +27 +Connector_PinHeader_1.27mm +PinHeader_1x28_P1.27mm_Horizontal +Through hole angled pin header, 1x28, 1.27mm pitch, 4.0mm pin length, single row +Through hole angled pin header THT 1x28 1.27mm single row +0 +28 +28 +Connector_PinHeader_1.27mm +PinHeader_1x28_P1.27mm_Vertical +Through hole straight pin header, 1x28, 1.27mm pitch, single row +Through hole pin header THT 1x28 1.27mm single row +0 +28 +28 +Connector_PinHeader_1.27mm +PinHeader_1x28_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x28, 1.27mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x28 1.27mm single row style1 pin1 left +0 +28 +28 +Connector_PinHeader_1.27mm +PinHeader_1x28_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x28, 1.27mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x28 1.27mm single row style2 pin1 right +0 +28 +28 +Connector_PinHeader_1.27mm +PinHeader_1x29_P1.27mm_Horizontal +Through hole angled pin header, 1x29, 1.27mm pitch, 4.0mm pin length, single row +Through hole angled pin header THT 1x29 1.27mm single row +0 +29 +29 +Connector_PinHeader_1.27mm +PinHeader_1x29_P1.27mm_Vertical +Through hole straight pin header, 1x29, 1.27mm pitch, single row +Through hole pin header THT 1x29 1.27mm single row +0 +29 +29 +Connector_PinHeader_1.27mm +PinHeader_1x29_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x29, 1.27mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x29 1.27mm single row style1 pin1 left +0 +29 +29 +Connector_PinHeader_1.27mm +PinHeader_1x29_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x29, 1.27mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x29 1.27mm single row style2 pin1 right +0 +29 +29 +Connector_PinHeader_1.27mm +PinHeader_1x30_P1.27mm_Horizontal +Through hole angled pin header, 1x30, 1.27mm pitch, 4.0mm pin length, single row +Through hole angled pin header THT 1x30 1.27mm single row +0 +30 +30 +Connector_PinHeader_1.27mm +PinHeader_1x30_P1.27mm_Vertical +Through hole straight pin header, 1x30, 1.27mm pitch, single row +Through hole pin header THT 1x30 1.27mm single row +0 +30 +30 +Connector_PinHeader_1.27mm +PinHeader_1x30_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x30, 1.27mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x30 1.27mm single row style1 pin1 left +0 +30 +30 +Connector_PinHeader_1.27mm +PinHeader_1x30_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x30, 1.27mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x30 1.27mm single row style2 pin1 right +0 +30 +30 +Connector_PinHeader_1.27mm +PinHeader_1x31_P1.27mm_Horizontal +Through hole angled pin header, 1x31, 1.27mm pitch, 4.0mm pin length, single row +Through hole angled pin header THT 1x31 1.27mm single row +0 +31 +31 +Connector_PinHeader_1.27mm +PinHeader_1x31_P1.27mm_Vertical +Through hole straight pin header, 1x31, 1.27mm pitch, single row +Through hole pin header THT 1x31 1.27mm single row +0 +31 +31 +Connector_PinHeader_1.27mm +PinHeader_1x31_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x31, 1.27mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x31 1.27mm single row style1 pin1 left +0 +31 +31 +Connector_PinHeader_1.27mm +PinHeader_1x31_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x31, 1.27mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x31 1.27mm single row style2 pin1 right +0 +31 +31 +Connector_PinHeader_1.27mm +PinHeader_1x32_P1.27mm_Horizontal +Through hole angled pin header, 1x32, 1.27mm pitch, 4.0mm pin length, single row +Through hole angled pin header THT 1x32 1.27mm single row +0 +32 +32 +Connector_PinHeader_1.27mm +PinHeader_1x32_P1.27mm_Vertical +Through hole straight pin header, 1x32, 1.27mm pitch, single row +Through hole pin header THT 1x32 1.27mm single row +0 +32 +32 +Connector_PinHeader_1.27mm +PinHeader_1x32_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x32, 1.27mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x32 1.27mm single row style1 pin1 left +0 +32 +32 +Connector_PinHeader_1.27mm +PinHeader_1x32_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x32, 1.27mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x32 1.27mm single row style2 pin1 right +0 +32 +32 +Connector_PinHeader_1.27mm +PinHeader_1x33_P1.27mm_Horizontal +Through hole angled pin header, 1x33, 1.27mm pitch, 4.0mm pin length, single row +Through hole angled pin header THT 1x33 1.27mm single row +0 +33 +33 +Connector_PinHeader_1.27mm +PinHeader_1x33_P1.27mm_Vertical +Through hole straight pin header, 1x33, 1.27mm pitch, single row +Through hole pin header THT 1x33 1.27mm single row +0 +33 +33 +Connector_PinHeader_1.27mm +PinHeader_1x33_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x33, 1.27mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x33 1.27mm single row style1 pin1 left +0 +33 +33 +Connector_PinHeader_1.27mm +PinHeader_1x33_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x33, 1.27mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x33 1.27mm single row style2 pin1 right +0 +33 +33 +Connector_PinHeader_1.27mm +PinHeader_1x34_P1.27mm_Horizontal +Through hole angled pin header, 1x34, 1.27mm pitch, 4.0mm pin length, single row +Through hole angled pin header THT 1x34 1.27mm single row +0 +34 +34 +Connector_PinHeader_1.27mm +PinHeader_1x34_P1.27mm_Vertical +Through hole straight pin header, 1x34, 1.27mm pitch, single row +Through hole pin header THT 1x34 1.27mm single row +0 +34 +34 +Connector_PinHeader_1.27mm +PinHeader_1x34_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x34, 1.27mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x34 1.27mm single row style1 pin1 left +0 +34 +34 +Connector_PinHeader_1.27mm +PinHeader_1x34_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x34, 1.27mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x34 1.27mm single row style2 pin1 right +0 +34 +34 +Connector_PinHeader_1.27mm +PinHeader_1x35_P1.27mm_Horizontal +Through hole angled pin header, 1x35, 1.27mm pitch, 4.0mm pin length, single row +Through hole angled pin header THT 1x35 1.27mm single row +0 +35 +35 +Connector_PinHeader_1.27mm +PinHeader_1x35_P1.27mm_Vertical +Through hole straight pin header, 1x35, 1.27mm pitch, single row +Through hole pin header THT 1x35 1.27mm single row +0 +35 +35 +Connector_PinHeader_1.27mm +PinHeader_1x35_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x35, 1.27mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x35 1.27mm single row style1 pin1 left +0 +35 +35 +Connector_PinHeader_1.27mm +PinHeader_1x35_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x35, 1.27mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x35 1.27mm single row style2 pin1 right +0 +35 +35 +Connector_PinHeader_1.27mm +PinHeader_1x36_P1.27mm_Horizontal +Through hole angled pin header, 1x36, 1.27mm pitch, 4.0mm pin length, single row +Through hole angled pin header THT 1x36 1.27mm single row +0 +36 +36 +Connector_PinHeader_1.27mm +PinHeader_1x36_P1.27mm_Vertical +Through hole straight pin header, 1x36, 1.27mm pitch, single row +Through hole pin header THT 1x36 1.27mm single row +0 +36 +36 +Connector_PinHeader_1.27mm +PinHeader_1x36_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x36, 1.27mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x36 1.27mm single row style1 pin1 left +0 +36 +36 +Connector_PinHeader_1.27mm +PinHeader_1x36_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x36, 1.27mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x36 1.27mm single row style2 pin1 right +0 +36 +36 +Connector_PinHeader_1.27mm +PinHeader_1x37_P1.27mm_Horizontal +Through hole angled pin header, 1x37, 1.27mm pitch, 4.0mm pin length, single row +Through hole angled pin header THT 1x37 1.27mm single row +0 +37 +37 +Connector_PinHeader_1.27mm +PinHeader_1x37_P1.27mm_Vertical +Through hole straight pin header, 1x37, 1.27mm pitch, single row +Through hole pin header THT 1x37 1.27mm single row +0 +37 +37 +Connector_PinHeader_1.27mm +PinHeader_1x37_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x37, 1.27mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x37 1.27mm single row style1 pin1 left +0 +37 +37 +Connector_PinHeader_1.27mm +PinHeader_1x37_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x37, 1.27mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x37 1.27mm single row style2 pin1 right +0 +37 +37 +Connector_PinHeader_1.27mm +PinHeader_1x38_P1.27mm_Horizontal +Through hole angled pin header, 1x38, 1.27mm pitch, 4.0mm pin length, single row +Through hole angled pin header THT 1x38 1.27mm single row +0 +38 +38 +Connector_PinHeader_1.27mm +PinHeader_1x38_P1.27mm_Vertical +Through hole straight pin header, 1x38, 1.27mm pitch, single row +Through hole pin header THT 1x38 1.27mm single row +0 +38 +38 +Connector_PinHeader_1.27mm +PinHeader_1x38_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x38, 1.27mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x38 1.27mm single row style1 pin1 left +0 +38 +38 +Connector_PinHeader_1.27mm +PinHeader_1x38_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x38, 1.27mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x38 1.27mm single row style2 pin1 right +0 +38 +38 +Connector_PinHeader_1.27mm +PinHeader_1x39_P1.27mm_Horizontal +Through hole angled pin header, 1x39, 1.27mm pitch, 4.0mm pin length, single row +Through hole angled pin header THT 1x39 1.27mm single row +0 +39 +39 +Connector_PinHeader_1.27mm +PinHeader_1x39_P1.27mm_Vertical +Through hole straight pin header, 1x39, 1.27mm pitch, single row +Through hole pin header THT 1x39 1.27mm single row +0 +39 +39 +Connector_PinHeader_1.27mm +PinHeader_1x39_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x39, 1.27mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x39 1.27mm single row style1 pin1 left +0 +39 +39 +Connector_PinHeader_1.27mm +PinHeader_1x39_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x39, 1.27mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x39 1.27mm single row style2 pin1 right +0 +39 +39 +Connector_PinHeader_1.27mm +PinHeader_1x40_P1.27mm_Horizontal +Through hole angled pin header, 1x40, 1.27mm pitch, 4.0mm pin length, single row +Through hole angled pin header THT 1x40 1.27mm single row +0 +40 +40 +Connector_PinHeader_1.27mm +PinHeader_1x40_P1.27mm_Vertical +Through hole straight pin header, 1x40, 1.27mm pitch, single row +Through hole pin header THT 1x40 1.27mm single row +0 +40 +40 +Connector_PinHeader_1.27mm +PinHeader_1x40_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x40, 1.27mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x40 1.27mm single row style1 pin1 left +0 +40 +40 +Connector_PinHeader_1.27mm +PinHeader_1x40_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x40, 1.27mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x40 1.27mm single row style2 pin1 right +0 +40 +40 +Connector_PinHeader_1.27mm +PinHeader_2x01_P1.27mm_Horizontal +Through hole angled pin header, 2x01, 1.27mm pitch, 4.0mm pin length, double rows +Through hole angled pin header THT 2x01 1.27mm double row +0 +2 +2 +Connector_PinHeader_1.27mm +PinHeader_2x01_P1.27mm_Vertical +Through hole straight pin header, 2x01, 1.27mm pitch, double rows +Through hole pin header THT 2x01 1.27mm double row +0 +2 +2 +Connector_PinHeader_1.27mm +PinHeader_2x01_P1.27mm_Vertical_SMD +surface-mounted straight pin header, 2x01, 1.27mm pitch, double rows +Surface mounted pin header SMD 2x01 1.27mm double row +0 +2 +2 +Connector_PinHeader_1.27mm +PinHeader_2x02_P1.27mm_Horizontal +Through hole angled pin header, 2x02, 1.27mm pitch, 4.0mm pin length, double rows +Through hole angled pin header THT 2x02 1.27mm double row +0 +4 +4 +Connector_PinHeader_1.27mm +PinHeader_2x02_P1.27mm_Vertical +Through hole straight pin header, 2x02, 1.27mm pitch, double rows +Through hole pin header THT 2x02 1.27mm double row +0 +4 +4 +Connector_PinHeader_1.27mm +PinHeader_2x02_P1.27mm_Vertical_SMD +surface-mounted straight pin header, 2x02, 1.27mm pitch, double rows +Surface mounted pin header SMD 2x02 1.27mm double row +0 +4 +4 +Connector_PinHeader_1.27mm +PinHeader_2x03_P1.27mm_Horizontal +Through hole angled pin header, 2x03, 1.27mm pitch, 4.0mm pin length, double rows +Through hole angled pin header THT 2x03 1.27mm double row +0 +6 +6 +Connector_PinHeader_1.27mm +PinHeader_2x03_P1.27mm_Vertical +Through hole straight pin header, 2x03, 1.27mm pitch, double rows +Through hole pin header THT 2x03 1.27mm double row +0 +6 +6 +Connector_PinHeader_1.27mm +PinHeader_2x03_P1.27mm_Vertical_SMD +surface-mounted straight pin header, 2x03, 1.27mm pitch, double rows +Surface mounted pin header SMD 2x03 1.27mm double row +0 +6 +6 +Connector_PinHeader_1.27mm +PinHeader_2x04_P1.27mm_Horizontal +Through hole angled pin header, 2x04, 1.27mm pitch, 4.0mm pin length, double rows +Through hole angled pin header THT 2x04 1.27mm double row +0 +8 +8 +Connector_PinHeader_1.27mm +PinHeader_2x04_P1.27mm_Vertical +Through hole straight pin header, 2x04, 1.27mm pitch, double rows +Through hole pin header THT 2x04 1.27mm double row +0 +8 +8 +Connector_PinHeader_1.27mm +PinHeader_2x04_P1.27mm_Vertical_SMD +surface-mounted straight pin header, 2x04, 1.27mm pitch, double rows +Surface mounted pin header SMD 2x04 1.27mm double row +0 +8 +8 +Connector_PinHeader_1.27mm +PinHeader_2x05_P1.27mm_Horizontal +Through hole angled pin header, 2x05, 1.27mm pitch, 4.0mm pin length, double rows +Through hole angled pin header THT 2x05 1.27mm double row +0 +10 +10 +Connector_PinHeader_1.27mm +PinHeader_2x05_P1.27mm_Vertical +Through hole straight pin header, 2x05, 1.27mm pitch, double rows +Through hole pin header THT 2x05 1.27mm double row +0 +10 +10 +Connector_PinHeader_1.27mm +PinHeader_2x05_P1.27mm_Vertical_SMD +surface-mounted straight pin header, 2x05, 1.27mm pitch, double rows +Surface mounted pin header SMD 2x05 1.27mm double row +0 +10 +10 +Connector_PinHeader_1.27mm +PinHeader_2x06_P1.27mm_Horizontal +Through hole angled pin header, 2x06, 1.27mm pitch, 4.0mm pin length, double rows +Through hole angled pin header THT 2x06 1.27mm double row +0 +12 +12 +Connector_PinHeader_1.27mm +PinHeader_2x06_P1.27mm_Vertical +Through hole straight pin header, 2x06, 1.27mm pitch, double rows +Through hole pin header THT 2x06 1.27mm double row +0 +12 +12 +Connector_PinHeader_1.27mm +PinHeader_2x06_P1.27mm_Vertical_SMD +surface-mounted straight pin header, 2x06, 1.27mm pitch, double rows +Surface mounted pin header SMD 2x06 1.27mm double row +0 +12 +12 +Connector_PinHeader_1.27mm +PinHeader_2x07_P1.27mm_Horizontal +Through hole angled pin header, 2x07, 1.27mm pitch, 4.0mm pin length, double rows +Through hole angled pin header THT 2x07 1.27mm double row +0 +14 +14 +Connector_PinHeader_1.27mm +PinHeader_2x07_P1.27mm_Vertical +Through hole straight pin header, 2x07, 1.27mm pitch, double rows +Through hole pin header THT 2x07 1.27mm double row +0 +14 +14 +Connector_PinHeader_1.27mm +PinHeader_2x07_P1.27mm_Vertical_SMD +surface-mounted straight pin header, 2x07, 1.27mm pitch, double rows +Surface mounted pin header SMD 2x07 1.27mm double row +0 +14 +14 +Connector_PinHeader_1.27mm +PinHeader_2x08_P1.27mm_Horizontal +Through hole angled pin header, 2x08, 1.27mm pitch, 4.0mm pin length, double rows +Through hole angled pin header THT 2x08 1.27mm double row +0 +16 +16 +Connector_PinHeader_1.27mm +PinHeader_2x08_P1.27mm_Vertical +Through hole straight pin header, 2x08, 1.27mm pitch, double rows +Through hole pin header THT 2x08 1.27mm double row +0 +16 +16 +Connector_PinHeader_1.27mm +PinHeader_2x08_P1.27mm_Vertical_SMD +surface-mounted straight pin header, 2x08, 1.27mm pitch, double rows +Surface mounted pin header SMD 2x08 1.27mm double row +0 +16 +16 +Connector_PinHeader_1.27mm +PinHeader_2x09_P1.27mm_Horizontal +Through hole angled pin header, 2x09, 1.27mm pitch, 4.0mm pin length, double rows +Through hole angled pin header THT 2x09 1.27mm double row +0 +18 +18 +Connector_PinHeader_1.27mm +PinHeader_2x09_P1.27mm_Vertical +Through hole straight pin header, 2x09, 1.27mm pitch, double rows +Through hole pin header THT 2x09 1.27mm double row +0 +18 +18 +Connector_PinHeader_1.27mm +PinHeader_2x09_P1.27mm_Vertical_SMD +surface-mounted straight pin header, 2x09, 1.27mm pitch, double rows +Surface mounted pin header SMD 2x09 1.27mm double row +0 +18 +18 +Connector_PinHeader_1.27mm +PinHeader_2x10_P1.27mm_Horizontal +Through hole angled pin header, 2x10, 1.27mm pitch, 4.0mm pin length, double rows +Through hole angled pin header THT 2x10 1.27mm double row +0 +20 +20 +Connector_PinHeader_1.27mm +PinHeader_2x10_P1.27mm_Vertical +Through hole straight pin header, 2x10, 1.27mm pitch, double rows +Through hole pin header THT 2x10 1.27mm double row +0 +20 +20 +Connector_PinHeader_1.27mm +PinHeader_2x10_P1.27mm_Vertical_SMD +surface-mounted straight pin header, 2x10, 1.27mm pitch, double rows +Surface mounted pin header SMD 2x10 1.27mm double row +0 +20 +20 +Connector_PinHeader_1.27mm +PinHeader_2x11_P1.27mm_Horizontal +Through hole angled pin header, 2x11, 1.27mm pitch, 4.0mm pin length, double rows +Through hole angled pin header THT 2x11 1.27mm double row +0 +22 +22 +Connector_PinHeader_1.27mm +PinHeader_2x11_P1.27mm_Vertical +Through hole straight pin header, 2x11, 1.27mm pitch, double rows +Through hole pin header THT 2x11 1.27mm double row +0 +22 +22 +Connector_PinHeader_1.27mm +PinHeader_2x11_P1.27mm_Vertical_SMD +surface-mounted straight pin header, 2x11, 1.27mm pitch, double rows +Surface mounted pin header SMD 2x11 1.27mm double row +0 +22 +22 +Connector_PinHeader_1.27mm +PinHeader_2x12_P1.27mm_Horizontal +Through hole angled pin header, 2x12, 1.27mm pitch, 4.0mm pin length, double rows +Through hole angled pin header THT 2x12 1.27mm double row +0 +24 +24 +Connector_PinHeader_1.27mm +PinHeader_2x12_P1.27mm_Vertical +Through hole straight pin header, 2x12, 1.27mm pitch, double rows +Through hole pin header THT 2x12 1.27mm double row +0 +24 +24 +Connector_PinHeader_1.27mm +PinHeader_2x12_P1.27mm_Vertical_SMD +surface-mounted straight pin header, 2x12, 1.27mm pitch, double rows +Surface mounted pin header SMD 2x12 1.27mm double row +0 +24 +24 +Connector_PinHeader_1.27mm +PinHeader_2x13_P1.27mm_Horizontal +Through hole angled pin header, 2x13, 1.27mm pitch, 4.0mm pin length, double rows +Through hole angled pin header THT 2x13 1.27mm double row +0 +26 +26 +Connector_PinHeader_1.27mm +PinHeader_2x13_P1.27mm_Vertical +Through hole straight pin header, 2x13, 1.27mm pitch, double rows +Through hole pin header THT 2x13 1.27mm double row +0 +26 +26 +Connector_PinHeader_1.27mm +PinHeader_2x13_P1.27mm_Vertical_SMD +surface-mounted straight pin header, 2x13, 1.27mm pitch, double rows +Surface mounted pin header SMD 2x13 1.27mm double row +0 +26 +26 +Connector_PinHeader_1.27mm +PinHeader_2x14_P1.27mm_Horizontal +Through hole angled pin header, 2x14, 1.27mm pitch, 4.0mm pin length, double rows +Through hole angled pin header THT 2x14 1.27mm double row +0 +28 +28 +Connector_PinHeader_1.27mm +PinHeader_2x14_P1.27mm_Vertical +Through hole straight pin header, 2x14, 1.27mm pitch, double rows +Through hole pin header THT 2x14 1.27mm double row +0 +28 +28 +Connector_PinHeader_1.27mm +PinHeader_2x14_P1.27mm_Vertical_SMD +surface-mounted straight pin header, 2x14, 1.27mm pitch, double rows +Surface mounted pin header SMD 2x14 1.27mm double row +0 +28 +28 +Connector_PinHeader_1.27mm +PinHeader_2x15_P1.27mm_Horizontal +Through hole angled pin header, 2x15, 1.27mm pitch, 4.0mm pin length, double rows +Through hole angled pin header THT 2x15 1.27mm double row +0 +30 +30 +Connector_PinHeader_1.27mm +PinHeader_2x15_P1.27mm_Vertical +Through hole straight pin header, 2x15, 1.27mm pitch, double rows +Through hole pin header THT 2x15 1.27mm double row +0 +30 +30 +Connector_PinHeader_1.27mm +PinHeader_2x15_P1.27mm_Vertical_SMD +surface-mounted straight pin header, 2x15, 1.27mm pitch, double rows +Surface mounted pin header SMD 2x15 1.27mm double row +0 +30 +30 +Connector_PinHeader_1.27mm +PinHeader_2x16_P1.27mm_Horizontal +Through hole angled pin header, 2x16, 1.27mm pitch, 4.0mm pin length, double rows +Through hole angled pin header THT 2x16 1.27mm double row +0 +32 +32 +Connector_PinHeader_1.27mm +PinHeader_2x16_P1.27mm_Vertical +Through hole straight pin header, 2x16, 1.27mm pitch, double rows +Through hole pin header THT 2x16 1.27mm double row +0 +32 +32 +Connector_PinHeader_1.27mm +PinHeader_2x16_P1.27mm_Vertical_SMD +surface-mounted straight pin header, 2x16, 1.27mm pitch, double rows +Surface mounted pin header SMD 2x16 1.27mm double row +0 +32 +32 +Connector_PinHeader_1.27mm +PinHeader_2x17_P1.27mm_Horizontal +Through hole angled pin header, 2x17, 1.27mm pitch, 4.0mm pin length, double rows +Through hole angled pin header THT 2x17 1.27mm double row +0 +34 +34 +Connector_PinHeader_1.27mm +PinHeader_2x17_P1.27mm_Vertical +Through hole straight pin header, 2x17, 1.27mm pitch, double rows +Through hole pin header THT 2x17 1.27mm double row +0 +34 +34 +Connector_PinHeader_1.27mm +PinHeader_2x17_P1.27mm_Vertical_SMD +surface-mounted straight pin header, 2x17, 1.27mm pitch, double rows +Surface mounted pin header SMD 2x17 1.27mm double row +0 +34 +34 +Connector_PinHeader_1.27mm +PinHeader_2x18_P1.27mm_Horizontal +Through hole angled pin header, 2x18, 1.27mm pitch, 4.0mm pin length, double rows +Through hole angled pin header THT 2x18 1.27mm double row +0 +36 +36 +Connector_PinHeader_1.27mm +PinHeader_2x18_P1.27mm_Vertical +Through hole straight pin header, 2x18, 1.27mm pitch, double rows +Through hole pin header THT 2x18 1.27mm double row +0 +36 +36 +Connector_PinHeader_1.27mm +PinHeader_2x18_P1.27mm_Vertical_SMD +surface-mounted straight pin header, 2x18, 1.27mm pitch, double rows +Surface mounted pin header SMD 2x18 1.27mm double row +0 +36 +36 +Connector_PinHeader_1.27mm +PinHeader_2x19_P1.27mm_Horizontal +Through hole angled pin header, 2x19, 1.27mm pitch, 4.0mm pin length, double rows +Through hole angled pin header THT 2x19 1.27mm double row +0 +38 +38 +Connector_PinHeader_1.27mm +PinHeader_2x19_P1.27mm_Vertical +Through hole straight pin header, 2x19, 1.27mm pitch, double rows +Through hole pin header THT 2x19 1.27mm double row +0 +38 +38 +Connector_PinHeader_1.27mm +PinHeader_2x19_P1.27mm_Vertical_SMD +surface-mounted straight pin header, 2x19, 1.27mm pitch, double rows +Surface mounted pin header SMD 2x19 1.27mm double row +0 +38 +38 +Connector_PinHeader_1.27mm +PinHeader_2x20_P1.27mm_Horizontal +Through hole angled pin header, 2x20, 1.27mm pitch, 4.0mm pin length, double rows +Through hole angled pin header THT 2x20 1.27mm double row +0 +40 +40 +Connector_PinHeader_1.27mm +PinHeader_2x20_P1.27mm_Vertical +Through hole straight pin header, 2x20, 1.27mm pitch, double rows +Through hole pin header THT 2x20 1.27mm double row +0 +40 +40 +Connector_PinHeader_1.27mm +PinHeader_2x20_P1.27mm_Vertical_SMD +surface-mounted straight pin header, 2x20, 1.27mm pitch, double rows +Surface mounted pin header SMD 2x20 1.27mm double row +0 +40 +40 +Connector_PinHeader_1.27mm +PinHeader_2x21_P1.27mm_Horizontal +Through hole angled pin header, 2x21, 1.27mm pitch, 4.0mm pin length, double rows +Through hole angled pin header THT 2x21 1.27mm double row +0 +42 +42 +Connector_PinHeader_1.27mm +PinHeader_2x21_P1.27mm_Vertical +Through hole straight pin header, 2x21, 1.27mm pitch, double rows +Through hole pin header THT 2x21 1.27mm double row +0 +42 +42 +Connector_PinHeader_1.27mm +PinHeader_2x21_P1.27mm_Vertical_SMD +surface-mounted straight pin header, 2x21, 1.27mm pitch, double rows +Surface mounted pin header SMD 2x21 1.27mm double row +0 +42 +42 +Connector_PinHeader_1.27mm +PinHeader_2x22_P1.27mm_Horizontal +Through hole angled pin header, 2x22, 1.27mm pitch, 4.0mm pin length, double rows +Through hole angled pin header THT 2x22 1.27mm double row +0 +44 +44 +Connector_PinHeader_1.27mm +PinHeader_2x22_P1.27mm_Vertical +Through hole straight pin header, 2x22, 1.27mm pitch, double rows +Through hole pin header THT 2x22 1.27mm double row +0 +44 +44 +Connector_PinHeader_1.27mm +PinHeader_2x22_P1.27mm_Vertical_SMD +surface-mounted straight pin header, 2x22, 1.27mm pitch, double rows +Surface mounted pin header SMD 2x22 1.27mm double row +0 +44 +44 +Connector_PinHeader_1.27mm +PinHeader_2x23_P1.27mm_Horizontal +Through hole angled pin header, 2x23, 1.27mm pitch, 4.0mm pin length, double rows +Through hole angled pin header THT 2x23 1.27mm double row +0 +46 +46 +Connector_PinHeader_1.27mm +PinHeader_2x23_P1.27mm_Vertical +Through hole straight pin header, 2x23, 1.27mm pitch, double rows +Through hole pin header THT 2x23 1.27mm double row +0 +46 +46 +Connector_PinHeader_1.27mm +PinHeader_2x23_P1.27mm_Vertical_SMD +surface-mounted straight pin header, 2x23, 1.27mm pitch, double rows +Surface mounted pin header SMD 2x23 1.27mm double row +0 +46 +46 +Connector_PinHeader_1.27mm +PinHeader_2x24_P1.27mm_Horizontal +Through hole angled pin header, 2x24, 1.27mm pitch, 4.0mm pin length, double rows +Through hole angled pin header THT 2x24 1.27mm double row +0 +48 +48 +Connector_PinHeader_1.27mm +PinHeader_2x24_P1.27mm_Vertical +Through hole straight pin header, 2x24, 1.27mm pitch, double rows +Through hole pin header THT 2x24 1.27mm double row +0 +48 +48 +Connector_PinHeader_1.27mm +PinHeader_2x24_P1.27mm_Vertical_SMD +surface-mounted straight pin header, 2x24, 1.27mm pitch, double rows +Surface mounted pin header SMD 2x24 1.27mm double row +0 +48 +48 +Connector_PinHeader_1.27mm +PinHeader_2x25_P1.27mm_Horizontal +Through hole angled pin header, 2x25, 1.27mm pitch, 4.0mm pin length, double rows +Through hole angled pin header THT 2x25 1.27mm double row +0 +50 +50 +Connector_PinHeader_1.27mm +PinHeader_2x25_P1.27mm_Vertical +Through hole straight pin header, 2x25, 1.27mm pitch, double rows +Through hole pin header THT 2x25 1.27mm double row +0 +50 +50 +Connector_PinHeader_1.27mm +PinHeader_2x25_P1.27mm_Vertical_SMD +surface-mounted straight pin header, 2x25, 1.27mm pitch, double rows +Surface mounted pin header SMD 2x25 1.27mm double row +0 +50 +50 +Connector_PinHeader_1.27mm +PinHeader_2x26_P1.27mm_Horizontal +Through hole angled pin header, 2x26, 1.27mm pitch, 4.0mm pin length, double rows +Through hole angled pin header THT 2x26 1.27mm double row +0 +52 +52 +Connector_PinHeader_1.27mm +PinHeader_2x26_P1.27mm_Vertical +Through hole straight pin header, 2x26, 1.27mm pitch, double rows +Through hole pin header THT 2x26 1.27mm double row +0 +52 +52 +Connector_PinHeader_1.27mm +PinHeader_2x26_P1.27mm_Vertical_SMD +surface-mounted straight pin header, 2x26, 1.27mm pitch, double rows +Surface mounted pin header SMD 2x26 1.27mm double row +0 +52 +52 +Connector_PinHeader_1.27mm +PinHeader_2x27_P1.27mm_Horizontal +Through hole angled pin header, 2x27, 1.27mm pitch, 4.0mm pin length, double rows +Through hole angled pin header THT 2x27 1.27mm double row +0 +54 +54 +Connector_PinHeader_1.27mm +PinHeader_2x27_P1.27mm_Vertical +Through hole straight pin header, 2x27, 1.27mm pitch, double rows +Through hole pin header THT 2x27 1.27mm double row +0 +54 +54 +Connector_PinHeader_1.27mm +PinHeader_2x27_P1.27mm_Vertical_SMD +surface-mounted straight pin header, 2x27, 1.27mm pitch, double rows +Surface mounted pin header SMD 2x27 1.27mm double row +0 +54 +54 +Connector_PinHeader_1.27mm +PinHeader_2x28_P1.27mm_Horizontal +Through hole angled pin header, 2x28, 1.27mm pitch, 4.0mm pin length, double rows +Through hole angled pin header THT 2x28 1.27mm double row +0 +56 +56 +Connector_PinHeader_1.27mm +PinHeader_2x28_P1.27mm_Vertical +Through hole straight pin header, 2x28, 1.27mm pitch, double rows +Through hole pin header THT 2x28 1.27mm double row +0 +56 +56 +Connector_PinHeader_1.27mm +PinHeader_2x28_P1.27mm_Vertical_SMD +surface-mounted straight pin header, 2x28, 1.27mm pitch, double rows +Surface mounted pin header SMD 2x28 1.27mm double row +0 +56 +56 +Connector_PinHeader_1.27mm +PinHeader_2x29_P1.27mm_Horizontal +Through hole angled pin header, 2x29, 1.27mm pitch, 4.0mm pin length, double rows +Through hole angled pin header THT 2x29 1.27mm double row +0 +58 +58 +Connector_PinHeader_1.27mm +PinHeader_2x29_P1.27mm_Vertical +Through hole straight pin header, 2x29, 1.27mm pitch, double rows +Through hole pin header THT 2x29 1.27mm double row +0 +58 +58 +Connector_PinHeader_1.27mm +PinHeader_2x29_P1.27mm_Vertical_SMD +surface-mounted straight pin header, 2x29, 1.27mm pitch, double rows +Surface mounted pin header SMD 2x29 1.27mm double row +0 +58 +58 +Connector_PinHeader_1.27mm +PinHeader_2x30_P1.27mm_Horizontal +Through hole angled pin header, 2x30, 1.27mm pitch, 4.0mm pin length, double rows +Through hole angled pin header THT 2x30 1.27mm double row +0 +60 +60 +Connector_PinHeader_1.27mm +PinHeader_2x30_P1.27mm_Vertical +Through hole straight pin header, 2x30, 1.27mm pitch, double rows +Through hole pin header THT 2x30 1.27mm double row +0 +60 +60 +Connector_PinHeader_1.27mm +PinHeader_2x30_P1.27mm_Vertical_SMD +surface-mounted straight pin header, 2x30, 1.27mm pitch, double rows +Surface mounted pin header SMD 2x30 1.27mm double row +0 +60 +60 +Connector_PinHeader_1.27mm +PinHeader_2x31_P1.27mm_Horizontal +Through hole angled pin header, 2x31, 1.27mm pitch, 4.0mm pin length, double rows +Through hole angled pin header THT 2x31 1.27mm double row +0 +62 +62 +Connector_PinHeader_1.27mm +PinHeader_2x31_P1.27mm_Vertical +Through hole straight pin header, 2x31, 1.27mm pitch, double rows +Through hole pin header THT 2x31 1.27mm double row +0 +62 +62 +Connector_PinHeader_1.27mm +PinHeader_2x31_P1.27mm_Vertical_SMD +surface-mounted straight pin header, 2x31, 1.27mm pitch, double rows +Surface mounted pin header SMD 2x31 1.27mm double row +0 +62 +62 +Connector_PinHeader_1.27mm +PinHeader_2x32_P1.27mm_Horizontal +Through hole angled pin header, 2x32, 1.27mm pitch, 4.0mm pin length, double rows +Through hole angled pin header THT 2x32 1.27mm double row +0 +64 +64 +Connector_PinHeader_1.27mm +PinHeader_2x32_P1.27mm_Vertical +Through hole straight pin header, 2x32, 1.27mm pitch, double rows +Through hole pin header THT 2x32 1.27mm double row +0 +64 +64 +Connector_PinHeader_1.27mm +PinHeader_2x32_P1.27mm_Vertical_SMD +surface-mounted straight pin header, 2x32, 1.27mm pitch, double rows +Surface mounted pin header SMD 2x32 1.27mm double row +0 +64 +64 +Connector_PinHeader_1.27mm +PinHeader_2x33_P1.27mm_Horizontal +Through hole angled pin header, 2x33, 1.27mm pitch, 4.0mm pin length, double rows +Through hole angled pin header THT 2x33 1.27mm double row +0 +66 +66 +Connector_PinHeader_1.27mm +PinHeader_2x33_P1.27mm_Vertical +Through hole straight pin header, 2x33, 1.27mm pitch, double rows +Through hole pin header THT 2x33 1.27mm double row +0 +66 +66 +Connector_PinHeader_1.27mm +PinHeader_2x33_P1.27mm_Vertical_SMD +surface-mounted straight pin header, 2x33, 1.27mm pitch, double rows +Surface mounted pin header SMD 2x33 1.27mm double row +0 +66 +66 +Connector_PinHeader_1.27mm +PinHeader_2x34_P1.27mm_Horizontal +Through hole angled pin header, 2x34, 1.27mm pitch, 4.0mm pin length, double rows +Through hole angled pin header THT 2x34 1.27mm double row +0 +68 +68 +Connector_PinHeader_1.27mm +PinHeader_2x34_P1.27mm_Vertical +Through hole straight pin header, 2x34, 1.27mm pitch, double rows +Through hole pin header THT 2x34 1.27mm double row +0 +68 +68 +Connector_PinHeader_1.27mm +PinHeader_2x34_P1.27mm_Vertical_SMD +surface-mounted straight pin header, 2x34, 1.27mm pitch, double rows +Surface mounted pin header SMD 2x34 1.27mm double row +0 +68 +68 +Connector_PinHeader_1.27mm +PinHeader_2x35_P1.27mm_Horizontal +Through hole angled pin header, 2x35, 1.27mm pitch, 4.0mm pin length, double rows +Through hole angled pin header THT 2x35 1.27mm double row +0 +70 +70 +Connector_PinHeader_1.27mm +PinHeader_2x35_P1.27mm_Vertical +Through hole straight pin header, 2x35, 1.27mm pitch, double rows +Through hole pin header THT 2x35 1.27mm double row +0 +70 +70 +Connector_PinHeader_1.27mm +PinHeader_2x35_P1.27mm_Vertical_SMD +surface-mounted straight pin header, 2x35, 1.27mm pitch, double rows +Surface mounted pin header SMD 2x35 1.27mm double row +0 +70 +70 +Connector_PinHeader_1.27mm +PinHeader_2x36_P1.27mm_Horizontal +Through hole angled pin header, 2x36, 1.27mm pitch, 4.0mm pin length, double rows +Through hole angled pin header THT 2x36 1.27mm double row +0 +72 +72 +Connector_PinHeader_1.27mm +PinHeader_2x36_P1.27mm_Vertical +Through hole straight pin header, 2x36, 1.27mm pitch, double rows +Through hole pin header THT 2x36 1.27mm double row +0 +72 +72 +Connector_PinHeader_1.27mm +PinHeader_2x36_P1.27mm_Vertical_SMD +surface-mounted straight pin header, 2x36, 1.27mm pitch, double rows +Surface mounted pin header SMD 2x36 1.27mm double row +0 +72 +72 +Connector_PinHeader_1.27mm +PinHeader_2x37_P1.27mm_Horizontal +Through hole angled pin header, 2x37, 1.27mm pitch, 4.0mm pin length, double rows +Through hole angled pin header THT 2x37 1.27mm double row +0 +74 +74 +Connector_PinHeader_1.27mm +PinHeader_2x37_P1.27mm_Vertical +Through hole straight pin header, 2x37, 1.27mm pitch, double rows +Through hole pin header THT 2x37 1.27mm double row +0 +74 +74 +Connector_PinHeader_1.27mm +PinHeader_2x37_P1.27mm_Vertical_SMD +surface-mounted straight pin header, 2x37, 1.27mm pitch, double rows +Surface mounted pin header SMD 2x37 1.27mm double row +0 +74 +74 +Connector_PinHeader_1.27mm +PinHeader_2x38_P1.27mm_Horizontal +Through hole angled pin header, 2x38, 1.27mm pitch, 4.0mm pin length, double rows +Through hole angled pin header THT 2x38 1.27mm double row +0 +76 +76 +Connector_PinHeader_1.27mm +PinHeader_2x38_P1.27mm_Vertical +Through hole straight pin header, 2x38, 1.27mm pitch, double rows +Through hole pin header THT 2x38 1.27mm double row +0 +76 +76 +Connector_PinHeader_1.27mm +PinHeader_2x38_P1.27mm_Vertical_SMD +surface-mounted straight pin header, 2x38, 1.27mm pitch, double rows +Surface mounted pin header SMD 2x38 1.27mm double row +0 +76 +76 +Connector_PinHeader_1.27mm +PinHeader_2x39_P1.27mm_Horizontal +Through hole angled pin header, 2x39, 1.27mm pitch, 4.0mm pin length, double rows +Through hole angled pin header THT 2x39 1.27mm double row +0 +78 +78 +Connector_PinHeader_1.27mm +PinHeader_2x39_P1.27mm_Vertical +Through hole straight pin header, 2x39, 1.27mm pitch, double rows +Through hole pin header THT 2x39 1.27mm double row +0 +78 +78 +Connector_PinHeader_1.27mm +PinHeader_2x39_P1.27mm_Vertical_SMD +surface-mounted straight pin header, 2x39, 1.27mm pitch, double rows +Surface mounted pin header SMD 2x39 1.27mm double row +0 +78 +78 +Connector_PinHeader_1.27mm +PinHeader_2x40_P1.27mm_Horizontal +Through hole angled pin header, 2x40, 1.27mm pitch, 4.0mm pin length, double rows +Through hole angled pin header THT 2x40 1.27mm double row +0 +80 +80 +Connector_PinHeader_1.27mm +PinHeader_2x40_P1.27mm_Vertical +Through hole straight pin header, 2x40, 1.27mm pitch, double rows +Through hole pin header THT 2x40 1.27mm double row +0 +80 +80 +Connector_PinHeader_1.27mm +PinHeader_2x40_P1.27mm_Vertical_SMD +surface-mounted straight pin header, 2x40, 1.27mm pitch, double rows +Surface mounted pin header SMD 2x40 1.27mm double row +0 +80 +80 +Connector_PinHeader_2.00mm +PinHeader_1x01_P2.00mm_Horizontal +Through hole angled pin header, 1x01, 2.00mm pitch, 4.2mm pin length, single row +Through hole angled pin header THT 1x01 2.00mm single row +0 +1 +1 +Connector_PinHeader_2.00mm +PinHeader_1x01_P2.00mm_Vertical +Through hole straight pin header, 1x01, 2.00mm pitch, single row +Through hole pin header THT 1x01 2.00mm single row +0 +1 +1 +Connector_PinHeader_2.00mm +PinHeader_1x02_P2.00mm_Horizontal +Through hole angled pin header, 1x02, 2.00mm pitch, 4.2mm pin length, single row +Through hole angled pin header THT 1x02 2.00mm single row +0 +2 +2 +Connector_PinHeader_2.00mm +PinHeader_1x02_P2.00mm_Vertical +Through hole straight pin header, 1x02, 2.00mm pitch, single row +Through hole pin header THT 1x02 2.00mm single row +0 +2 +2 +Connector_PinHeader_2.00mm +PinHeader_1x02_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x02, 2.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x02 2.00mm single row style1 pin1 left +0 +2 +2 +Connector_PinHeader_2.00mm +PinHeader_1x02_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x02, 2.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x02 2.00mm single row style2 pin1 right +0 +2 +2 +Connector_PinHeader_2.00mm +PinHeader_1x03_P2.00mm_Horizontal +Through hole angled pin header, 1x03, 2.00mm pitch, 4.2mm pin length, single row +Through hole angled pin header THT 1x03 2.00mm single row +0 +3 +3 +Connector_PinHeader_2.00mm +PinHeader_1x03_P2.00mm_Vertical +Through hole straight pin header, 1x03, 2.00mm pitch, single row +Through hole pin header THT 1x03 2.00mm single row +0 +3 +3 +Connector_PinHeader_2.00mm +PinHeader_1x03_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x03, 2.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x03 2.00mm single row style1 pin1 left +0 +3 +3 +Connector_PinHeader_2.00mm +PinHeader_1x03_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x03, 2.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x03 2.00mm single row style2 pin1 right +0 +3 +3 +Connector_PinHeader_2.00mm +PinHeader_1x04_P2.00mm_Horizontal +Through hole angled pin header, 1x04, 2.00mm pitch, 4.2mm pin length, single row +Through hole angled pin header THT 1x04 2.00mm single row +0 +4 +4 +Connector_PinHeader_2.00mm +PinHeader_1x04_P2.00mm_Vertical +Through hole straight pin header, 1x04, 2.00mm pitch, single row +Through hole pin header THT 1x04 2.00mm single row +0 +4 +4 +Connector_PinHeader_2.00mm +PinHeader_1x04_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x04, 2.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x04 2.00mm single row style1 pin1 left +0 +4 +4 +Connector_PinHeader_2.00mm +PinHeader_1x04_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x04, 2.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x04 2.00mm single row style2 pin1 right +0 +4 +4 +Connector_PinHeader_2.00mm +PinHeader_1x05_P2.00mm_Horizontal +Through hole angled pin header, 1x05, 2.00mm pitch, 4.2mm pin length, single row +Through hole angled pin header THT 1x05 2.00mm single row +0 +5 +5 +Connector_PinHeader_2.00mm +PinHeader_1x05_P2.00mm_Vertical +Through hole straight pin header, 1x05, 2.00mm pitch, single row +Through hole pin header THT 1x05 2.00mm single row +0 +5 +5 +Connector_PinHeader_2.00mm +PinHeader_1x05_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x05, 2.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x05 2.00mm single row style1 pin1 left +0 +5 +5 +Connector_PinHeader_2.00mm +PinHeader_1x05_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x05, 2.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x05 2.00mm single row style2 pin1 right +0 +5 +5 +Connector_PinHeader_2.00mm +PinHeader_1x06_P2.00mm_Horizontal +Through hole angled pin header, 1x06, 2.00mm pitch, 4.2mm pin length, single row +Through hole angled pin header THT 1x06 2.00mm single row +0 +6 +6 +Connector_PinHeader_2.00mm +PinHeader_1x06_P2.00mm_Vertical +Through hole straight pin header, 1x06, 2.00mm pitch, single row +Through hole pin header THT 1x06 2.00mm single row +0 +6 +6 +Connector_PinHeader_2.00mm +PinHeader_1x06_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x06, 2.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x06 2.00mm single row style1 pin1 left +0 +6 +6 +Connector_PinHeader_2.00mm +PinHeader_1x06_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x06, 2.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x06 2.00mm single row style2 pin1 right +0 +6 +6 +Connector_PinHeader_2.00mm +PinHeader_1x07_P2.00mm_Horizontal +Through hole angled pin header, 1x07, 2.00mm pitch, 4.2mm pin length, single row +Through hole angled pin header THT 1x07 2.00mm single row +0 +7 +7 +Connector_PinHeader_2.00mm +PinHeader_1x07_P2.00mm_Vertical +Through hole straight pin header, 1x07, 2.00mm pitch, single row +Through hole pin header THT 1x07 2.00mm single row +0 +7 +7 +Connector_PinHeader_2.00mm +PinHeader_1x07_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x07, 2.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x07 2.00mm single row style1 pin1 left +0 +7 +7 +Connector_PinHeader_2.00mm +PinHeader_1x07_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x07, 2.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x07 2.00mm single row style2 pin1 right +0 +7 +7 +Connector_PinHeader_2.00mm +PinHeader_1x08_P2.00mm_Horizontal +Through hole angled pin header, 1x08, 2.00mm pitch, 4.2mm pin length, single row +Through hole angled pin header THT 1x08 2.00mm single row +0 +8 +8 +Connector_PinHeader_2.00mm +PinHeader_1x08_P2.00mm_Vertical +Through hole straight pin header, 1x08, 2.00mm pitch, single row +Through hole pin header THT 1x08 2.00mm single row +0 +8 +8 +Connector_PinHeader_2.00mm +PinHeader_1x08_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x08, 2.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x08 2.00mm single row style1 pin1 left +0 +8 +8 +Connector_PinHeader_2.00mm +PinHeader_1x08_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x08, 2.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x08 2.00mm single row style2 pin1 right +0 +8 +8 +Connector_PinHeader_2.00mm +PinHeader_1x09_P2.00mm_Horizontal +Through hole angled pin header, 1x09, 2.00mm pitch, 4.2mm pin length, single row +Through hole angled pin header THT 1x09 2.00mm single row +0 +9 +9 +Connector_PinHeader_2.00mm +PinHeader_1x09_P2.00mm_Vertical +Through hole straight pin header, 1x09, 2.00mm pitch, single row +Through hole pin header THT 1x09 2.00mm single row +0 +9 +9 +Connector_PinHeader_2.00mm +PinHeader_1x09_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x09, 2.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x09 2.00mm single row style1 pin1 left +0 +9 +9 +Connector_PinHeader_2.00mm +PinHeader_1x09_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x09, 2.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x09 2.00mm single row style2 pin1 right +0 +9 +9 +Connector_PinHeader_2.00mm +PinHeader_1x10_P2.00mm_Horizontal +Through hole angled pin header, 1x10, 2.00mm pitch, 4.2mm pin length, single row +Through hole angled pin header THT 1x10 2.00mm single row +0 +10 +10 +Connector_PinHeader_2.00mm +PinHeader_1x10_P2.00mm_Vertical +Through hole straight pin header, 1x10, 2.00mm pitch, single row +Through hole pin header THT 1x10 2.00mm single row +0 +10 +10 +Connector_PinHeader_2.00mm +PinHeader_1x10_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x10, 2.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x10 2.00mm single row style1 pin1 left +0 +10 +10 +Connector_PinHeader_2.00mm +PinHeader_1x10_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x10, 2.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x10 2.00mm single row style2 pin1 right +0 +10 +10 +Connector_PinHeader_2.00mm +PinHeader_1x11_P2.00mm_Horizontal +Through hole angled pin header, 1x11, 2.00mm pitch, 4.2mm pin length, single row +Through hole angled pin header THT 1x11 2.00mm single row +0 +11 +11 +Connector_PinHeader_2.00mm +PinHeader_1x11_P2.00mm_Vertical +Through hole straight pin header, 1x11, 2.00mm pitch, single row +Through hole pin header THT 1x11 2.00mm single row +0 +11 +11 +Connector_PinHeader_2.00mm +PinHeader_1x11_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x11, 2.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x11 2.00mm single row style1 pin1 left +0 +11 +11 +Connector_PinHeader_2.00mm +PinHeader_1x11_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x11, 2.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x11 2.00mm single row style2 pin1 right +0 +11 +11 +Connector_PinHeader_2.00mm +PinHeader_1x12_P2.00mm_Horizontal +Through hole angled pin header, 1x12, 2.00mm pitch, 4.2mm pin length, single row +Through hole angled pin header THT 1x12 2.00mm single row +0 +12 +12 +Connector_PinHeader_2.00mm +PinHeader_1x12_P2.00mm_Vertical +Through hole straight pin header, 1x12, 2.00mm pitch, single row +Through hole pin header THT 1x12 2.00mm single row +0 +12 +12 +Connector_PinHeader_2.00mm +PinHeader_1x12_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x12, 2.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x12 2.00mm single row style1 pin1 left +0 +12 +12 +Connector_PinHeader_2.00mm +PinHeader_1x12_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x12, 2.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x12 2.00mm single row style2 pin1 right +0 +12 +12 +Connector_PinHeader_2.00mm +PinHeader_1x13_P2.00mm_Horizontal +Through hole angled pin header, 1x13, 2.00mm pitch, 4.2mm pin length, single row +Through hole angled pin header THT 1x13 2.00mm single row +0 +13 +13 +Connector_PinHeader_2.00mm +PinHeader_1x13_P2.00mm_Vertical +Through hole straight pin header, 1x13, 2.00mm pitch, single row +Through hole pin header THT 1x13 2.00mm single row +0 +13 +13 +Connector_PinHeader_2.00mm +PinHeader_1x13_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x13, 2.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x13 2.00mm single row style1 pin1 left +0 +13 +13 +Connector_PinHeader_2.00mm +PinHeader_1x13_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x13, 2.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x13 2.00mm single row style2 pin1 right +0 +13 +13 +Connector_PinHeader_2.00mm +PinHeader_1x14_P2.00mm_Horizontal +Through hole angled pin header, 1x14, 2.00mm pitch, 4.2mm pin length, single row +Through hole angled pin header THT 1x14 2.00mm single row +0 +14 +14 +Connector_PinHeader_2.00mm +PinHeader_1x14_P2.00mm_Vertical +Through hole straight pin header, 1x14, 2.00mm pitch, single row +Through hole pin header THT 1x14 2.00mm single row +0 +14 +14 +Connector_PinHeader_2.00mm +PinHeader_1x14_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x14, 2.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x14 2.00mm single row style1 pin1 left +0 +14 +14 +Connector_PinHeader_2.00mm +PinHeader_1x14_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x14, 2.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x14 2.00mm single row style2 pin1 right +0 +14 +14 +Connector_PinHeader_2.00mm +PinHeader_1x15_P2.00mm_Horizontal +Through hole angled pin header, 1x15, 2.00mm pitch, 4.2mm pin length, single row +Through hole angled pin header THT 1x15 2.00mm single row +0 +15 +15 +Connector_PinHeader_2.00mm +PinHeader_1x15_P2.00mm_Vertical +Through hole straight pin header, 1x15, 2.00mm pitch, single row +Through hole pin header THT 1x15 2.00mm single row +0 +15 +15 +Connector_PinHeader_2.00mm +PinHeader_1x15_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x15, 2.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x15 2.00mm single row style1 pin1 left +0 +15 +15 +Connector_PinHeader_2.00mm +PinHeader_1x15_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x15, 2.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x15 2.00mm single row style2 pin1 right +0 +15 +15 +Connector_PinHeader_2.00mm +PinHeader_1x16_P2.00mm_Horizontal +Through hole angled pin header, 1x16, 2.00mm pitch, 4.2mm pin length, single row +Through hole angled pin header THT 1x16 2.00mm single row +0 +16 +16 +Connector_PinHeader_2.00mm +PinHeader_1x16_P2.00mm_Vertical +Through hole straight pin header, 1x16, 2.00mm pitch, single row +Through hole pin header THT 1x16 2.00mm single row +0 +16 +16 +Connector_PinHeader_2.00mm +PinHeader_1x16_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x16, 2.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x16 2.00mm single row style1 pin1 left +0 +16 +16 +Connector_PinHeader_2.00mm +PinHeader_1x16_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x16, 2.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x16 2.00mm single row style2 pin1 right +0 +16 +16 +Connector_PinHeader_2.00mm +PinHeader_1x17_P2.00mm_Horizontal +Through hole angled pin header, 1x17, 2.00mm pitch, 4.2mm pin length, single row +Through hole angled pin header THT 1x17 2.00mm single row +0 +17 +17 +Connector_PinHeader_2.00mm +PinHeader_1x17_P2.00mm_Vertical +Through hole straight pin header, 1x17, 2.00mm pitch, single row +Through hole pin header THT 1x17 2.00mm single row +0 +17 +17 +Connector_PinHeader_2.00mm +PinHeader_1x17_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x17, 2.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x17 2.00mm single row style1 pin1 left +0 +17 +17 +Connector_PinHeader_2.00mm +PinHeader_1x17_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x17, 2.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x17 2.00mm single row style2 pin1 right +0 +17 +17 +Connector_PinHeader_2.00mm +PinHeader_1x18_P2.00mm_Horizontal +Through hole angled pin header, 1x18, 2.00mm pitch, 4.2mm pin length, single row +Through hole angled pin header THT 1x18 2.00mm single row +0 +18 +18 +Connector_PinHeader_2.00mm +PinHeader_1x18_P2.00mm_Vertical +Through hole straight pin header, 1x18, 2.00mm pitch, single row +Through hole pin header THT 1x18 2.00mm single row +0 +18 +18 +Connector_PinHeader_2.00mm +PinHeader_1x18_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x18, 2.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x18 2.00mm single row style1 pin1 left +0 +18 +18 +Connector_PinHeader_2.00mm +PinHeader_1x18_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x18, 2.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x18 2.00mm single row style2 pin1 right +0 +18 +18 +Connector_PinHeader_2.00mm +PinHeader_1x19_P2.00mm_Horizontal +Through hole angled pin header, 1x19, 2.00mm pitch, 4.2mm pin length, single row +Through hole angled pin header THT 1x19 2.00mm single row +0 +19 +19 +Connector_PinHeader_2.00mm +PinHeader_1x19_P2.00mm_Vertical +Through hole straight pin header, 1x19, 2.00mm pitch, single row +Through hole pin header THT 1x19 2.00mm single row +0 +19 +19 +Connector_PinHeader_2.00mm +PinHeader_1x19_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x19, 2.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x19 2.00mm single row style1 pin1 left +0 +19 +19 +Connector_PinHeader_2.00mm +PinHeader_1x19_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x19, 2.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x19 2.00mm single row style2 pin1 right +0 +19 +19 +Connector_PinHeader_2.00mm +PinHeader_1x20_P2.00mm_Horizontal +Through hole angled pin header, 1x20, 2.00mm pitch, 4.2mm pin length, single row +Through hole angled pin header THT 1x20 2.00mm single row +0 +20 +20 +Connector_PinHeader_2.00mm +PinHeader_1x20_P2.00mm_Vertical +Through hole straight pin header, 1x20, 2.00mm pitch, single row +Through hole pin header THT 1x20 2.00mm single row +0 +20 +20 +Connector_PinHeader_2.00mm +PinHeader_1x20_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x20, 2.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x20 2.00mm single row style1 pin1 left +0 +20 +20 +Connector_PinHeader_2.00mm +PinHeader_1x20_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x20, 2.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x20 2.00mm single row style2 pin1 right +0 +20 +20 +Connector_PinHeader_2.00mm +PinHeader_1x21_P2.00mm_Horizontal +Through hole angled pin header, 1x21, 2.00mm pitch, 4.2mm pin length, single row +Through hole angled pin header THT 1x21 2.00mm single row +0 +21 +21 +Connector_PinHeader_2.00mm +PinHeader_1x21_P2.00mm_Vertical +Through hole straight pin header, 1x21, 2.00mm pitch, single row +Through hole pin header THT 1x21 2.00mm single row +0 +21 +21 +Connector_PinHeader_2.00mm +PinHeader_1x21_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x21, 2.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x21 2.00mm single row style1 pin1 left +0 +21 +21 +Connector_PinHeader_2.00mm +PinHeader_1x21_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x21, 2.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x21 2.00mm single row style2 pin1 right +0 +21 +21 +Connector_PinHeader_2.00mm +PinHeader_1x22_P2.00mm_Horizontal +Through hole angled pin header, 1x22, 2.00mm pitch, 4.2mm pin length, single row +Through hole angled pin header THT 1x22 2.00mm single row +0 +22 +22 +Connector_PinHeader_2.00mm +PinHeader_1x22_P2.00mm_Vertical +Through hole straight pin header, 1x22, 2.00mm pitch, single row +Through hole pin header THT 1x22 2.00mm single row +0 +22 +22 +Connector_PinHeader_2.00mm +PinHeader_1x22_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x22, 2.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x22 2.00mm single row style1 pin1 left +0 +22 +22 +Connector_PinHeader_2.00mm +PinHeader_1x22_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x22, 2.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x22 2.00mm single row style2 pin1 right +0 +22 +22 +Connector_PinHeader_2.00mm +PinHeader_1x23_P2.00mm_Horizontal +Through hole angled pin header, 1x23, 2.00mm pitch, 4.2mm pin length, single row +Through hole angled pin header THT 1x23 2.00mm single row +0 +23 +23 +Connector_PinHeader_2.00mm +PinHeader_1x23_P2.00mm_Vertical +Through hole straight pin header, 1x23, 2.00mm pitch, single row +Through hole pin header THT 1x23 2.00mm single row +0 +23 +23 +Connector_PinHeader_2.00mm +PinHeader_1x23_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x23, 2.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x23 2.00mm single row style1 pin1 left +0 +23 +23 +Connector_PinHeader_2.00mm +PinHeader_1x23_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x23, 2.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x23 2.00mm single row style2 pin1 right +0 +23 +23 +Connector_PinHeader_2.00mm +PinHeader_1x24_P2.00mm_Horizontal +Through hole angled pin header, 1x24, 2.00mm pitch, 4.2mm pin length, single row +Through hole angled pin header THT 1x24 2.00mm single row +0 +24 +24 +Connector_PinHeader_2.00mm +PinHeader_1x24_P2.00mm_Vertical +Through hole straight pin header, 1x24, 2.00mm pitch, single row +Through hole pin header THT 1x24 2.00mm single row +0 +24 +24 +Connector_PinHeader_2.00mm +PinHeader_1x24_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x24, 2.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x24 2.00mm single row style1 pin1 left +0 +24 +24 +Connector_PinHeader_2.00mm +PinHeader_1x24_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x24, 2.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x24 2.00mm single row style2 pin1 right +0 +24 +24 +Connector_PinHeader_2.00mm +PinHeader_1x25_P2.00mm_Horizontal +Through hole angled pin header, 1x25, 2.00mm pitch, 4.2mm pin length, single row +Through hole angled pin header THT 1x25 2.00mm single row +0 +25 +25 +Connector_PinHeader_2.00mm +PinHeader_1x25_P2.00mm_Vertical +Through hole straight pin header, 1x25, 2.00mm pitch, single row +Through hole pin header THT 1x25 2.00mm single row +0 +25 +25 +Connector_PinHeader_2.00mm +PinHeader_1x25_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x25, 2.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x25 2.00mm single row style1 pin1 left +0 +25 +25 +Connector_PinHeader_2.00mm +PinHeader_1x25_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x25, 2.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x25 2.00mm single row style2 pin1 right +0 +25 +25 +Connector_PinHeader_2.00mm +PinHeader_1x26_P2.00mm_Horizontal +Through hole angled pin header, 1x26, 2.00mm pitch, 4.2mm pin length, single row +Through hole angled pin header THT 1x26 2.00mm single row +0 +26 +26 +Connector_PinHeader_2.00mm +PinHeader_1x26_P2.00mm_Vertical +Through hole straight pin header, 1x26, 2.00mm pitch, single row +Through hole pin header THT 1x26 2.00mm single row +0 +26 +26 +Connector_PinHeader_2.00mm +PinHeader_1x26_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x26, 2.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x26 2.00mm single row style1 pin1 left +0 +26 +26 +Connector_PinHeader_2.00mm +PinHeader_1x26_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x26, 2.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x26 2.00mm single row style2 pin1 right +0 +26 +26 +Connector_PinHeader_2.00mm +PinHeader_1x27_P2.00mm_Horizontal +Through hole angled pin header, 1x27, 2.00mm pitch, 4.2mm pin length, single row +Through hole angled pin header THT 1x27 2.00mm single row +0 +27 +27 +Connector_PinHeader_2.00mm +PinHeader_1x27_P2.00mm_Vertical +Through hole straight pin header, 1x27, 2.00mm pitch, single row +Through hole pin header THT 1x27 2.00mm single row +0 +27 +27 +Connector_PinHeader_2.00mm +PinHeader_1x27_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x27, 2.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x27 2.00mm single row style1 pin1 left +0 +27 +27 +Connector_PinHeader_2.00mm +PinHeader_1x27_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x27, 2.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x27 2.00mm single row style2 pin1 right +0 +27 +27 +Connector_PinHeader_2.00mm +PinHeader_1x28_P2.00mm_Horizontal +Through hole angled pin header, 1x28, 2.00mm pitch, 4.2mm pin length, single row +Through hole angled pin header THT 1x28 2.00mm single row +0 +28 +28 +Connector_PinHeader_2.00mm +PinHeader_1x28_P2.00mm_Vertical +Through hole straight pin header, 1x28, 2.00mm pitch, single row +Through hole pin header THT 1x28 2.00mm single row +0 +28 +28 +Connector_PinHeader_2.00mm +PinHeader_1x28_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x28, 2.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x28 2.00mm single row style1 pin1 left +0 +28 +28 +Connector_PinHeader_2.00mm +PinHeader_1x28_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x28, 2.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x28 2.00mm single row style2 pin1 right +0 +28 +28 +Connector_PinHeader_2.00mm +PinHeader_1x29_P2.00mm_Horizontal +Through hole angled pin header, 1x29, 2.00mm pitch, 4.2mm pin length, single row +Through hole angled pin header THT 1x29 2.00mm single row +0 +29 +29 +Connector_PinHeader_2.00mm +PinHeader_1x29_P2.00mm_Vertical +Through hole straight pin header, 1x29, 2.00mm pitch, single row +Through hole pin header THT 1x29 2.00mm single row +0 +29 +29 +Connector_PinHeader_2.00mm +PinHeader_1x29_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x29, 2.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x29 2.00mm single row style1 pin1 left +0 +29 +29 +Connector_PinHeader_2.00mm +PinHeader_1x29_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x29, 2.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x29 2.00mm single row style2 pin1 right +0 +29 +29 +Connector_PinHeader_2.00mm +PinHeader_1x30_P2.00mm_Horizontal +Through hole angled pin header, 1x30, 2.00mm pitch, 4.2mm pin length, single row +Through hole angled pin header THT 1x30 2.00mm single row +0 +30 +30 +Connector_PinHeader_2.00mm +PinHeader_1x30_P2.00mm_Vertical +Through hole straight pin header, 1x30, 2.00mm pitch, single row +Through hole pin header THT 1x30 2.00mm single row +0 +30 +30 +Connector_PinHeader_2.00mm +PinHeader_1x30_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x30, 2.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x30 2.00mm single row style1 pin1 left +0 +30 +30 +Connector_PinHeader_2.00mm +PinHeader_1x30_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x30, 2.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x30 2.00mm single row style2 pin1 right +0 +30 +30 +Connector_PinHeader_2.00mm +PinHeader_1x31_P2.00mm_Horizontal +Through hole angled pin header, 1x31, 2.00mm pitch, 4.2mm pin length, single row +Through hole angled pin header THT 1x31 2.00mm single row +0 +31 +31 +Connector_PinHeader_2.00mm +PinHeader_1x31_P2.00mm_Vertical +Through hole straight pin header, 1x31, 2.00mm pitch, single row +Through hole pin header THT 1x31 2.00mm single row +0 +31 +31 +Connector_PinHeader_2.00mm +PinHeader_1x31_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x31, 2.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x31 2.00mm single row style1 pin1 left +0 +31 +31 +Connector_PinHeader_2.00mm +PinHeader_1x31_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x31, 2.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x31 2.00mm single row style2 pin1 right +0 +31 +31 +Connector_PinHeader_2.00mm +PinHeader_1x32_P2.00mm_Horizontal +Through hole angled pin header, 1x32, 2.00mm pitch, 4.2mm pin length, single row +Through hole angled pin header THT 1x32 2.00mm single row +0 +32 +32 +Connector_PinHeader_2.00mm +PinHeader_1x32_P2.00mm_Vertical +Through hole straight pin header, 1x32, 2.00mm pitch, single row +Through hole pin header THT 1x32 2.00mm single row +0 +32 +32 +Connector_PinHeader_2.00mm +PinHeader_1x32_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x32, 2.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x32 2.00mm single row style1 pin1 left +0 +32 +32 +Connector_PinHeader_2.00mm +PinHeader_1x32_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x32, 2.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x32 2.00mm single row style2 pin1 right +0 +32 +32 +Connector_PinHeader_2.00mm +PinHeader_1x33_P2.00mm_Horizontal +Through hole angled pin header, 1x33, 2.00mm pitch, 4.2mm pin length, single row +Through hole angled pin header THT 1x33 2.00mm single row +0 +33 +33 +Connector_PinHeader_2.00mm +PinHeader_1x33_P2.00mm_Vertical +Through hole straight pin header, 1x33, 2.00mm pitch, single row +Through hole pin header THT 1x33 2.00mm single row +0 +33 +33 +Connector_PinHeader_2.00mm +PinHeader_1x33_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x33, 2.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x33 2.00mm single row style1 pin1 left +0 +33 +33 +Connector_PinHeader_2.00mm +PinHeader_1x33_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x33, 2.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x33 2.00mm single row style2 pin1 right +0 +33 +33 +Connector_PinHeader_2.00mm +PinHeader_1x34_P2.00mm_Horizontal +Through hole angled pin header, 1x34, 2.00mm pitch, 4.2mm pin length, single row +Through hole angled pin header THT 1x34 2.00mm single row +0 +34 +34 +Connector_PinHeader_2.00mm +PinHeader_1x34_P2.00mm_Vertical +Through hole straight pin header, 1x34, 2.00mm pitch, single row +Through hole pin header THT 1x34 2.00mm single row +0 +34 +34 +Connector_PinHeader_2.00mm +PinHeader_1x34_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x34, 2.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x34 2.00mm single row style1 pin1 left +0 +34 +34 +Connector_PinHeader_2.00mm +PinHeader_1x34_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x34, 2.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x34 2.00mm single row style2 pin1 right +0 +34 +34 +Connector_PinHeader_2.00mm +PinHeader_1x35_P2.00mm_Horizontal +Through hole angled pin header, 1x35, 2.00mm pitch, 4.2mm pin length, single row +Through hole angled pin header THT 1x35 2.00mm single row +0 +35 +35 +Connector_PinHeader_2.00mm +PinHeader_1x35_P2.00mm_Vertical +Through hole straight pin header, 1x35, 2.00mm pitch, single row +Through hole pin header THT 1x35 2.00mm single row +0 +35 +35 +Connector_PinHeader_2.00mm +PinHeader_1x35_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x35, 2.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x35 2.00mm single row style1 pin1 left +0 +35 +35 +Connector_PinHeader_2.00mm +PinHeader_1x35_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x35, 2.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x35 2.00mm single row style2 pin1 right +0 +35 +35 +Connector_PinHeader_2.00mm +PinHeader_1x36_P2.00mm_Horizontal +Through hole angled pin header, 1x36, 2.00mm pitch, 4.2mm pin length, single row +Through hole angled pin header THT 1x36 2.00mm single row +0 +36 +36 +Connector_PinHeader_2.00mm +PinHeader_1x36_P2.00mm_Vertical +Through hole straight pin header, 1x36, 2.00mm pitch, single row +Through hole pin header THT 1x36 2.00mm single row +0 +36 +36 +Connector_PinHeader_2.00mm +PinHeader_1x36_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x36, 2.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x36 2.00mm single row style1 pin1 left +0 +36 +36 +Connector_PinHeader_2.00mm +PinHeader_1x36_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x36, 2.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x36 2.00mm single row style2 pin1 right +0 +36 +36 +Connector_PinHeader_2.00mm +PinHeader_1x37_P2.00mm_Horizontal +Through hole angled pin header, 1x37, 2.00mm pitch, 4.2mm pin length, single row +Through hole angled pin header THT 1x37 2.00mm single row +0 +37 +37 +Connector_PinHeader_2.00mm +PinHeader_1x37_P2.00mm_Vertical +Through hole straight pin header, 1x37, 2.00mm pitch, single row +Through hole pin header THT 1x37 2.00mm single row +0 +37 +37 +Connector_PinHeader_2.00mm +PinHeader_1x37_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x37, 2.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x37 2.00mm single row style1 pin1 left +0 +37 +37 +Connector_PinHeader_2.00mm +PinHeader_1x37_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x37, 2.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x37 2.00mm single row style2 pin1 right +0 +37 +37 +Connector_PinHeader_2.00mm +PinHeader_1x38_P2.00mm_Horizontal +Through hole angled pin header, 1x38, 2.00mm pitch, 4.2mm pin length, single row +Through hole angled pin header THT 1x38 2.00mm single row +0 +38 +38 +Connector_PinHeader_2.00mm +PinHeader_1x38_P2.00mm_Vertical +Through hole straight pin header, 1x38, 2.00mm pitch, single row +Through hole pin header THT 1x38 2.00mm single row +0 +38 +38 +Connector_PinHeader_2.00mm +PinHeader_1x38_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x38, 2.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x38 2.00mm single row style1 pin1 left +0 +38 +38 +Connector_PinHeader_2.00mm +PinHeader_1x38_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x38, 2.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x38 2.00mm single row style2 pin1 right +0 +38 +38 +Connector_PinHeader_2.00mm +PinHeader_1x39_P2.00mm_Horizontal +Through hole angled pin header, 1x39, 2.00mm pitch, 4.2mm pin length, single row +Through hole angled pin header THT 1x39 2.00mm single row +0 +39 +39 +Connector_PinHeader_2.00mm +PinHeader_1x39_P2.00mm_Vertical +Through hole straight pin header, 1x39, 2.00mm pitch, single row +Through hole pin header THT 1x39 2.00mm single row +0 +39 +39 +Connector_PinHeader_2.00mm +PinHeader_1x39_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x39, 2.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x39 2.00mm single row style1 pin1 left +0 +39 +39 +Connector_PinHeader_2.00mm +PinHeader_1x39_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x39, 2.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x39 2.00mm single row style2 pin1 right +0 +39 +39 +Connector_PinHeader_2.00mm +PinHeader_1x40_P2.00mm_Horizontal +Through hole angled pin header, 1x40, 2.00mm pitch, 4.2mm pin length, single row +Through hole angled pin header THT 1x40 2.00mm single row +0 +40 +40 +Connector_PinHeader_2.00mm +PinHeader_1x40_P2.00mm_Vertical +Through hole straight pin header, 1x40, 2.00mm pitch, single row +Through hole pin header THT 1x40 2.00mm single row +0 +40 +40 +Connector_PinHeader_2.00mm +PinHeader_1x40_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x40, 2.00mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x40 2.00mm single row style1 pin1 left +0 +40 +40 +Connector_PinHeader_2.00mm +PinHeader_1x40_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x40, 2.00mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x40 2.00mm single row style2 pin1 right +0 +40 +40 +Connector_PinHeader_2.00mm +PinHeader_2x01_P2.00mm_Horizontal +Through hole angled pin header, 2x01, 2.00mm pitch, 4.2mm pin length, double rows +Through hole angled pin header THT 2x01 2.00mm double row +0 +2 +2 +Connector_PinHeader_2.00mm +PinHeader_2x01_P2.00mm_Vertical +Through hole straight pin header, 2x01, 2.00mm pitch, double rows +Through hole pin header THT 2x01 2.00mm double row +0 +2 +2 +Connector_PinHeader_2.00mm +PinHeader_2x01_P2.00mm_Vertical_SMD +surface-mounted straight pin header, 2x01, 2.00mm pitch, double rows +Surface mounted pin header SMD 2x01 2.00mm double row +0 +2 +2 +Connector_PinHeader_2.00mm +PinHeader_2x02_P2.00mm_Horizontal +Through hole angled pin header, 2x02, 2.00mm pitch, 4.2mm pin length, double rows +Through hole angled pin header THT 2x02 2.00mm double row +0 +4 +4 +Connector_PinHeader_2.00mm +PinHeader_2x02_P2.00mm_Vertical +Through hole straight pin header, 2x02, 2.00mm pitch, double rows +Through hole pin header THT 2x02 2.00mm double row +0 +4 +4 +Connector_PinHeader_2.00mm +PinHeader_2x02_P2.00mm_Vertical_SMD +surface-mounted straight pin header, 2x02, 2.00mm pitch, double rows +Surface mounted pin header SMD 2x02 2.00mm double row +0 +4 +4 +Connector_PinHeader_2.00mm +PinHeader_2x03_P2.00mm_Horizontal +Through hole angled pin header, 2x03, 2.00mm pitch, 4.2mm pin length, double rows +Through hole angled pin header THT 2x03 2.00mm double row +0 +6 +6 +Connector_PinHeader_2.00mm +PinHeader_2x03_P2.00mm_Vertical +Through hole straight pin header, 2x03, 2.00mm pitch, double rows +Through hole pin header THT 2x03 2.00mm double row +0 +6 +6 +Connector_PinHeader_2.00mm +PinHeader_2x03_P2.00mm_Vertical_SMD +surface-mounted straight pin header, 2x03, 2.00mm pitch, double rows +Surface mounted pin header SMD 2x03 2.00mm double row +0 +6 +6 +Connector_PinHeader_2.00mm +PinHeader_2x04_P2.00mm_Horizontal +Through hole angled pin header, 2x04, 2.00mm pitch, 4.2mm pin length, double rows +Through hole angled pin header THT 2x04 2.00mm double row +0 +8 +8 +Connector_PinHeader_2.00mm +PinHeader_2x04_P2.00mm_Vertical +Through hole straight pin header, 2x04, 2.00mm pitch, double rows +Through hole pin header THT 2x04 2.00mm double row +0 +8 +8 +Connector_PinHeader_2.00mm +PinHeader_2x04_P2.00mm_Vertical_SMD +surface-mounted straight pin header, 2x04, 2.00mm pitch, double rows +Surface mounted pin header SMD 2x04 2.00mm double row +0 +8 +8 +Connector_PinHeader_2.00mm +PinHeader_2x05_P2.00mm_Horizontal +Through hole angled pin header, 2x05, 2.00mm pitch, 4.2mm pin length, double rows +Through hole angled pin header THT 2x05 2.00mm double row +0 +10 +10 +Connector_PinHeader_2.00mm +PinHeader_2x05_P2.00mm_Vertical +Through hole straight pin header, 2x05, 2.00mm pitch, double rows +Through hole pin header THT 2x05 2.00mm double row +0 +10 +10 +Connector_PinHeader_2.00mm +PinHeader_2x05_P2.00mm_Vertical_SMD +surface-mounted straight pin header, 2x05, 2.00mm pitch, double rows +Surface mounted pin header SMD 2x05 2.00mm double row +0 +10 +10 +Connector_PinHeader_2.00mm +PinHeader_2x06_P2.00mm_Horizontal +Through hole angled pin header, 2x06, 2.00mm pitch, 4.2mm pin length, double rows +Through hole angled pin header THT 2x06 2.00mm double row +0 +12 +12 +Connector_PinHeader_2.00mm +PinHeader_2x06_P2.00mm_Vertical +Through hole straight pin header, 2x06, 2.00mm pitch, double rows +Through hole pin header THT 2x06 2.00mm double row +0 +12 +12 +Connector_PinHeader_2.00mm +PinHeader_2x06_P2.00mm_Vertical_SMD +surface-mounted straight pin header, 2x06, 2.00mm pitch, double rows +Surface mounted pin header SMD 2x06 2.00mm double row +0 +12 +12 +Connector_PinHeader_2.00mm +PinHeader_2x07_P2.00mm_Horizontal +Through hole angled pin header, 2x07, 2.00mm pitch, 4.2mm pin length, double rows +Through hole angled pin header THT 2x07 2.00mm double row +0 +14 +14 +Connector_PinHeader_2.00mm +PinHeader_2x07_P2.00mm_Vertical +Through hole straight pin header, 2x07, 2.00mm pitch, double rows +Through hole pin header THT 2x07 2.00mm double row +0 +14 +14 +Connector_PinHeader_2.00mm +PinHeader_2x07_P2.00mm_Vertical_SMD +surface-mounted straight pin header, 2x07, 2.00mm pitch, double rows +Surface mounted pin header SMD 2x07 2.00mm double row +0 +14 +14 +Connector_PinHeader_2.00mm +PinHeader_2x08_P2.00mm_Horizontal +Through hole angled pin header, 2x08, 2.00mm pitch, 4.2mm pin length, double rows +Through hole angled pin header THT 2x08 2.00mm double row +0 +16 +16 +Connector_PinHeader_2.00mm +PinHeader_2x08_P2.00mm_Vertical +Through hole straight pin header, 2x08, 2.00mm pitch, double rows +Through hole pin header THT 2x08 2.00mm double row +0 +16 +16 +Connector_PinHeader_2.00mm +PinHeader_2x08_P2.00mm_Vertical_SMD +surface-mounted straight pin header, 2x08, 2.00mm pitch, double rows +Surface mounted pin header SMD 2x08 2.00mm double row +0 +16 +16 +Connector_PinHeader_2.00mm +PinHeader_2x09_P2.00mm_Horizontal +Through hole angled pin header, 2x09, 2.00mm pitch, 4.2mm pin length, double rows +Through hole angled pin header THT 2x09 2.00mm double row +0 +18 +18 +Connector_PinHeader_2.00mm +PinHeader_2x09_P2.00mm_Vertical +Through hole straight pin header, 2x09, 2.00mm pitch, double rows +Through hole pin header THT 2x09 2.00mm double row +0 +18 +18 +Connector_PinHeader_2.00mm +PinHeader_2x09_P2.00mm_Vertical_SMD +surface-mounted straight pin header, 2x09, 2.00mm pitch, double rows +Surface mounted pin header SMD 2x09 2.00mm double row +0 +18 +18 +Connector_PinHeader_2.00mm +PinHeader_2x10_P2.00mm_Horizontal +Through hole angled pin header, 2x10, 2.00mm pitch, 4.2mm pin length, double rows +Through hole angled pin header THT 2x10 2.00mm double row +0 +20 +20 +Connector_PinHeader_2.00mm +PinHeader_2x10_P2.00mm_Vertical +Through hole straight pin header, 2x10, 2.00mm pitch, double rows +Through hole pin header THT 2x10 2.00mm double row +0 +20 +20 +Connector_PinHeader_2.00mm +PinHeader_2x10_P2.00mm_Vertical_SMD +surface-mounted straight pin header, 2x10, 2.00mm pitch, double rows +Surface mounted pin header SMD 2x10 2.00mm double row +0 +20 +20 +Connector_PinHeader_2.00mm +PinHeader_2x11_P2.00mm_Horizontal +Through hole angled pin header, 2x11, 2.00mm pitch, 4.2mm pin length, double rows +Through hole angled pin header THT 2x11 2.00mm double row +0 +22 +22 +Connector_PinHeader_2.00mm +PinHeader_2x11_P2.00mm_Vertical +Through hole straight pin header, 2x11, 2.00mm pitch, double rows +Through hole pin header THT 2x11 2.00mm double row +0 +22 +22 +Connector_PinHeader_2.00mm +PinHeader_2x11_P2.00mm_Vertical_SMD +surface-mounted straight pin header, 2x11, 2.00mm pitch, double rows +Surface mounted pin header SMD 2x11 2.00mm double row +0 +22 +22 +Connector_PinHeader_2.00mm +PinHeader_2x12_P2.00mm_Horizontal +Through hole angled pin header, 2x12, 2.00mm pitch, 4.2mm pin length, double rows +Through hole angled pin header THT 2x12 2.00mm double row +0 +24 +24 +Connector_PinHeader_2.00mm +PinHeader_2x12_P2.00mm_Vertical +Through hole straight pin header, 2x12, 2.00mm pitch, double rows +Through hole pin header THT 2x12 2.00mm double row +0 +24 +24 +Connector_PinHeader_2.00mm +PinHeader_2x12_P2.00mm_Vertical_SMD +surface-mounted straight pin header, 2x12, 2.00mm pitch, double rows +Surface mounted pin header SMD 2x12 2.00mm double row +0 +24 +24 +Connector_PinHeader_2.00mm +PinHeader_2x13_P2.00mm_Horizontal +Through hole angled pin header, 2x13, 2.00mm pitch, 4.2mm pin length, double rows +Through hole angled pin header THT 2x13 2.00mm double row +0 +26 +26 +Connector_PinHeader_2.00mm +PinHeader_2x13_P2.00mm_Vertical +Through hole straight pin header, 2x13, 2.00mm pitch, double rows +Through hole pin header THT 2x13 2.00mm double row +0 +26 +26 +Connector_PinHeader_2.00mm +PinHeader_2x13_P2.00mm_Vertical_SMD +surface-mounted straight pin header, 2x13, 2.00mm pitch, double rows +Surface mounted pin header SMD 2x13 2.00mm double row +0 +26 +26 +Connector_PinHeader_2.00mm +PinHeader_2x14_P2.00mm_Horizontal +Through hole angled pin header, 2x14, 2.00mm pitch, 4.2mm pin length, double rows +Through hole angled pin header THT 2x14 2.00mm double row +0 +28 +28 +Connector_PinHeader_2.00mm +PinHeader_2x14_P2.00mm_Vertical +Through hole straight pin header, 2x14, 2.00mm pitch, double rows +Through hole pin header THT 2x14 2.00mm double row +0 +28 +28 +Connector_PinHeader_2.00mm +PinHeader_2x14_P2.00mm_Vertical_SMD +surface-mounted straight pin header, 2x14, 2.00mm pitch, double rows +Surface mounted pin header SMD 2x14 2.00mm double row +0 +28 +28 +Connector_PinHeader_2.00mm +PinHeader_2x15_P2.00mm_Horizontal +Through hole angled pin header, 2x15, 2.00mm pitch, 4.2mm pin length, double rows +Through hole angled pin header THT 2x15 2.00mm double row +0 +30 +30 +Connector_PinHeader_2.00mm +PinHeader_2x15_P2.00mm_Vertical +Through hole straight pin header, 2x15, 2.00mm pitch, double rows +Through hole pin header THT 2x15 2.00mm double row +0 +30 +30 +Connector_PinHeader_2.00mm +PinHeader_2x15_P2.00mm_Vertical_SMD +surface-mounted straight pin header, 2x15, 2.00mm pitch, double rows +Surface mounted pin header SMD 2x15 2.00mm double row +0 +30 +30 +Connector_PinHeader_2.00mm +PinHeader_2x16_P2.00mm_Horizontal +Through hole angled pin header, 2x16, 2.00mm pitch, 4.2mm pin length, double rows +Through hole angled pin header THT 2x16 2.00mm double row +0 +32 +32 +Connector_PinHeader_2.00mm +PinHeader_2x16_P2.00mm_Vertical +Through hole straight pin header, 2x16, 2.00mm pitch, double rows +Through hole pin header THT 2x16 2.00mm double row +0 +32 +32 +Connector_PinHeader_2.00mm +PinHeader_2x16_P2.00mm_Vertical_SMD +surface-mounted straight pin header, 2x16, 2.00mm pitch, double rows +Surface mounted pin header SMD 2x16 2.00mm double row +0 +32 +32 +Connector_PinHeader_2.00mm +PinHeader_2x17_P2.00mm_Horizontal +Through hole angled pin header, 2x17, 2.00mm pitch, 4.2mm pin length, double rows +Through hole angled pin header THT 2x17 2.00mm double row +0 +34 +34 +Connector_PinHeader_2.00mm +PinHeader_2x17_P2.00mm_Vertical +Through hole straight pin header, 2x17, 2.00mm pitch, double rows +Through hole pin header THT 2x17 2.00mm double row +0 +34 +34 +Connector_PinHeader_2.00mm +PinHeader_2x17_P2.00mm_Vertical_SMD +surface-mounted straight pin header, 2x17, 2.00mm pitch, double rows +Surface mounted pin header SMD 2x17 2.00mm double row +0 +34 +34 +Connector_PinHeader_2.00mm +PinHeader_2x18_P2.00mm_Horizontal +Through hole angled pin header, 2x18, 2.00mm pitch, 4.2mm pin length, double rows +Through hole angled pin header THT 2x18 2.00mm double row +0 +36 +36 +Connector_PinHeader_2.00mm +PinHeader_2x18_P2.00mm_Vertical +Through hole straight pin header, 2x18, 2.00mm pitch, double rows +Through hole pin header THT 2x18 2.00mm double row +0 +36 +36 +Connector_PinHeader_2.00mm +PinHeader_2x18_P2.00mm_Vertical_SMD +surface-mounted straight pin header, 2x18, 2.00mm pitch, double rows +Surface mounted pin header SMD 2x18 2.00mm double row +0 +36 +36 +Connector_PinHeader_2.00mm +PinHeader_2x19_P2.00mm_Horizontal +Through hole angled pin header, 2x19, 2.00mm pitch, 4.2mm pin length, double rows +Through hole angled pin header THT 2x19 2.00mm double row +0 +38 +38 +Connector_PinHeader_2.00mm +PinHeader_2x19_P2.00mm_Vertical +Through hole straight pin header, 2x19, 2.00mm pitch, double rows +Through hole pin header THT 2x19 2.00mm double row +0 +38 +38 +Connector_PinHeader_2.00mm +PinHeader_2x19_P2.00mm_Vertical_SMD +surface-mounted straight pin header, 2x19, 2.00mm pitch, double rows +Surface mounted pin header SMD 2x19 2.00mm double row +0 +38 +38 +Connector_PinHeader_2.00mm +PinHeader_2x20_P2.00mm_Horizontal +Through hole angled pin header, 2x20, 2.00mm pitch, 4.2mm pin length, double rows +Through hole angled pin header THT 2x20 2.00mm double row +0 +40 +40 +Connector_PinHeader_2.00mm +PinHeader_2x20_P2.00mm_Vertical +Through hole straight pin header, 2x20, 2.00mm pitch, double rows +Through hole pin header THT 2x20 2.00mm double row +0 +40 +40 +Connector_PinHeader_2.00mm +PinHeader_2x20_P2.00mm_Vertical_SMD +surface-mounted straight pin header, 2x20, 2.00mm pitch, double rows +Surface mounted pin header SMD 2x20 2.00mm double row +0 +40 +40 +Connector_PinHeader_2.00mm +PinHeader_2x21_P2.00mm_Horizontal +Through hole angled pin header, 2x21, 2.00mm pitch, 4.2mm pin length, double rows +Through hole angled pin header THT 2x21 2.00mm double row +0 +42 +42 +Connector_PinHeader_2.00mm +PinHeader_2x21_P2.00mm_Vertical +Through hole straight pin header, 2x21, 2.00mm pitch, double rows +Through hole pin header THT 2x21 2.00mm double row +0 +42 +42 +Connector_PinHeader_2.00mm +PinHeader_2x21_P2.00mm_Vertical_SMD +surface-mounted straight pin header, 2x21, 2.00mm pitch, double rows +Surface mounted pin header SMD 2x21 2.00mm double row +0 +42 +42 +Connector_PinHeader_2.00mm +PinHeader_2x22_P2.00mm_Horizontal +Through hole angled pin header, 2x22, 2.00mm pitch, 4.2mm pin length, double rows +Through hole angled pin header THT 2x22 2.00mm double row +0 +44 +44 +Connector_PinHeader_2.00mm +PinHeader_2x22_P2.00mm_Vertical +Through hole straight pin header, 2x22, 2.00mm pitch, double rows +Through hole pin header THT 2x22 2.00mm double row +0 +44 +44 +Connector_PinHeader_2.00mm +PinHeader_2x22_P2.00mm_Vertical_SMD +surface-mounted straight pin header, 2x22, 2.00mm pitch, double rows +Surface mounted pin header SMD 2x22 2.00mm double row +0 +44 +44 +Connector_PinHeader_2.00mm +PinHeader_2x23_P2.00mm_Horizontal +Through hole angled pin header, 2x23, 2.00mm pitch, 4.2mm pin length, double rows +Through hole angled pin header THT 2x23 2.00mm double row +0 +46 +46 +Connector_PinHeader_2.00mm +PinHeader_2x23_P2.00mm_Vertical +Through hole straight pin header, 2x23, 2.00mm pitch, double rows +Through hole pin header THT 2x23 2.00mm double row +0 +46 +46 +Connector_PinHeader_2.00mm +PinHeader_2x23_P2.00mm_Vertical_SMD +surface-mounted straight pin header, 2x23, 2.00mm pitch, double rows +Surface mounted pin header SMD 2x23 2.00mm double row +0 +46 +46 +Connector_PinHeader_2.00mm +PinHeader_2x24_P2.00mm_Horizontal +Through hole angled pin header, 2x24, 2.00mm pitch, 4.2mm pin length, double rows +Through hole angled pin header THT 2x24 2.00mm double row +0 +48 +48 +Connector_PinHeader_2.00mm +PinHeader_2x24_P2.00mm_Vertical +Through hole straight pin header, 2x24, 2.00mm pitch, double rows +Through hole pin header THT 2x24 2.00mm double row +0 +48 +48 +Connector_PinHeader_2.00mm +PinHeader_2x24_P2.00mm_Vertical_SMD +surface-mounted straight pin header, 2x24, 2.00mm pitch, double rows +Surface mounted pin header SMD 2x24 2.00mm double row +0 +48 +48 +Connector_PinHeader_2.00mm +PinHeader_2x25_P2.00mm_Horizontal +Through hole angled pin header, 2x25, 2.00mm pitch, 4.2mm pin length, double rows +Through hole angled pin header THT 2x25 2.00mm double row +0 +50 +50 +Connector_PinHeader_2.00mm +PinHeader_2x25_P2.00mm_Vertical +Through hole straight pin header, 2x25, 2.00mm pitch, double rows +Through hole pin header THT 2x25 2.00mm double row +0 +50 +50 +Connector_PinHeader_2.00mm +PinHeader_2x25_P2.00mm_Vertical_SMD +surface-mounted straight pin header, 2x25, 2.00mm pitch, double rows +Surface mounted pin header SMD 2x25 2.00mm double row +0 +50 +50 +Connector_PinHeader_2.00mm +PinHeader_2x26_P2.00mm_Horizontal +Through hole angled pin header, 2x26, 2.00mm pitch, 4.2mm pin length, double rows +Through hole angled pin header THT 2x26 2.00mm double row +0 +52 +52 +Connector_PinHeader_2.00mm +PinHeader_2x26_P2.00mm_Vertical +Through hole straight pin header, 2x26, 2.00mm pitch, double rows +Through hole pin header THT 2x26 2.00mm double row +0 +52 +52 +Connector_PinHeader_2.00mm +PinHeader_2x26_P2.00mm_Vertical_SMD +surface-mounted straight pin header, 2x26, 2.00mm pitch, double rows +Surface mounted pin header SMD 2x26 2.00mm double row +0 +52 +52 +Connector_PinHeader_2.00mm +PinHeader_2x27_P2.00mm_Horizontal +Through hole angled pin header, 2x27, 2.00mm pitch, 4.2mm pin length, double rows +Through hole angled pin header THT 2x27 2.00mm double row +0 +54 +54 +Connector_PinHeader_2.00mm +PinHeader_2x27_P2.00mm_Vertical +Through hole straight pin header, 2x27, 2.00mm pitch, double rows +Through hole pin header THT 2x27 2.00mm double row +0 +54 +54 +Connector_PinHeader_2.00mm +PinHeader_2x27_P2.00mm_Vertical_SMD +surface-mounted straight pin header, 2x27, 2.00mm pitch, double rows +Surface mounted pin header SMD 2x27 2.00mm double row +0 +54 +54 +Connector_PinHeader_2.00mm +PinHeader_2x28_P2.00mm_Horizontal +Through hole angled pin header, 2x28, 2.00mm pitch, 4.2mm pin length, double rows +Through hole angled pin header THT 2x28 2.00mm double row +0 +56 +56 +Connector_PinHeader_2.00mm +PinHeader_2x28_P2.00mm_Vertical +Through hole straight pin header, 2x28, 2.00mm pitch, double rows +Through hole pin header THT 2x28 2.00mm double row +0 +56 +56 +Connector_PinHeader_2.00mm +PinHeader_2x28_P2.00mm_Vertical_SMD +surface-mounted straight pin header, 2x28, 2.00mm pitch, double rows +Surface mounted pin header SMD 2x28 2.00mm double row +0 +56 +56 +Connector_PinHeader_2.00mm +PinHeader_2x29_P2.00mm_Horizontal +Through hole angled pin header, 2x29, 2.00mm pitch, 4.2mm pin length, double rows +Through hole angled pin header THT 2x29 2.00mm double row +0 +58 +58 +Connector_PinHeader_2.00mm +PinHeader_2x29_P2.00mm_Vertical +Through hole straight pin header, 2x29, 2.00mm pitch, double rows +Through hole pin header THT 2x29 2.00mm double row +0 +58 +58 +Connector_PinHeader_2.00mm +PinHeader_2x29_P2.00mm_Vertical_SMD +surface-mounted straight pin header, 2x29, 2.00mm pitch, double rows +Surface mounted pin header SMD 2x29 2.00mm double row +0 +58 +58 +Connector_PinHeader_2.00mm +PinHeader_2x30_P2.00mm_Horizontal +Through hole angled pin header, 2x30, 2.00mm pitch, 4.2mm pin length, double rows +Through hole angled pin header THT 2x30 2.00mm double row +0 +60 +60 +Connector_PinHeader_2.00mm +PinHeader_2x30_P2.00mm_Vertical +Through hole straight pin header, 2x30, 2.00mm pitch, double rows +Through hole pin header THT 2x30 2.00mm double row +0 +60 +60 +Connector_PinHeader_2.00mm +PinHeader_2x30_P2.00mm_Vertical_SMD +surface-mounted straight pin header, 2x30, 2.00mm pitch, double rows +Surface mounted pin header SMD 2x30 2.00mm double row +0 +60 +60 +Connector_PinHeader_2.00mm +PinHeader_2x31_P2.00mm_Horizontal +Through hole angled pin header, 2x31, 2.00mm pitch, 4.2mm pin length, double rows +Through hole angled pin header THT 2x31 2.00mm double row +0 +62 +62 +Connector_PinHeader_2.00mm +PinHeader_2x31_P2.00mm_Vertical +Through hole straight pin header, 2x31, 2.00mm pitch, double rows +Through hole pin header THT 2x31 2.00mm double row +0 +62 +62 +Connector_PinHeader_2.00mm +PinHeader_2x31_P2.00mm_Vertical_SMD +surface-mounted straight pin header, 2x31, 2.00mm pitch, double rows +Surface mounted pin header SMD 2x31 2.00mm double row +0 +62 +62 +Connector_PinHeader_2.00mm +PinHeader_2x32_P2.00mm_Horizontal +Through hole angled pin header, 2x32, 2.00mm pitch, 4.2mm pin length, double rows +Through hole angled pin header THT 2x32 2.00mm double row +0 +64 +64 +Connector_PinHeader_2.00mm +PinHeader_2x32_P2.00mm_Vertical +Through hole straight pin header, 2x32, 2.00mm pitch, double rows +Through hole pin header THT 2x32 2.00mm double row +0 +64 +64 +Connector_PinHeader_2.00mm +PinHeader_2x32_P2.00mm_Vertical_SMD +surface-mounted straight pin header, 2x32, 2.00mm pitch, double rows +Surface mounted pin header SMD 2x32 2.00mm double row +0 +64 +64 +Connector_PinHeader_2.00mm +PinHeader_2x33_P2.00mm_Horizontal +Through hole angled pin header, 2x33, 2.00mm pitch, 4.2mm pin length, double rows +Through hole angled pin header THT 2x33 2.00mm double row +0 +66 +66 +Connector_PinHeader_2.00mm +PinHeader_2x33_P2.00mm_Vertical +Through hole straight pin header, 2x33, 2.00mm pitch, double rows +Through hole pin header THT 2x33 2.00mm double row +0 +66 +66 +Connector_PinHeader_2.00mm +PinHeader_2x33_P2.00mm_Vertical_SMD +surface-mounted straight pin header, 2x33, 2.00mm pitch, double rows +Surface mounted pin header SMD 2x33 2.00mm double row +0 +66 +66 +Connector_PinHeader_2.00mm +PinHeader_2x34_P2.00mm_Horizontal +Through hole angled pin header, 2x34, 2.00mm pitch, 4.2mm pin length, double rows +Through hole angled pin header THT 2x34 2.00mm double row +0 +68 +68 +Connector_PinHeader_2.00mm +PinHeader_2x34_P2.00mm_Vertical +Through hole straight pin header, 2x34, 2.00mm pitch, double rows +Through hole pin header THT 2x34 2.00mm double row +0 +68 +68 +Connector_PinHeader_2.00mm +PinHeader_2x34_P2.00mm_Vertical_SMD +surface-mounted straight pin header, 2x34, 2.00mm pitch, double rows +Surface mounted pin header SMD 2x34 2.00mm double row +0 +68 +68 +Connector_PinHeader_2.00mm +PinHeader_2x35_P2.00mm_Horizontal +Through hole angled pin header, 2x35, 2.00mm pitch, 4.2mm pin length, double rows +Through hole angled pin header THT 2x35 2.00mm double row +0 +70 +70 +Connector_PinHeader_2.00mm +PinHeader_2x35_P2.00mm_Vertical +Through hole straight pin header, 2x35, 2.00mm pitch, double rows +Through hole pin header THT 2x35 2.00mm double row +0 +70 +70 +Connector_PinHeader_2.00mm +PinHeader_2x35_P2.00mm_Vertical_SMD +surface-mounted straight pin header, 2x35, 2.00mm pitch, double rows +Surface mounted pin header SMD 2x35 2.00mm double row +0 +70 +70 +Connector_PinHeader_2.00mm +PinHeader_2x36_P2.00mm_Horizontal +Through hole angled pin header, 2x36, 2.00mm pitch, 4.2mm pin length, double rows +Through hole angled pin header THT 2x36 2.00mm double row +0 +72 +72 +Connector_PinHeader_2.00mm +PinHeader_2x36_P2.00mm_Vertical +Through hole straight pin header, 2x36, 2.00mm pitch, double rows +Through hole pin header THT 2x36 2.00mm double row +0 +72 +72 +Connector_PinHeader_2.00mm +PinHeader_2x36_P2.00mm_Vertical_SMD +surface-mounted straight pin header, 2x36, 2.00mm pitch, double rows +Surface mounted pin header SMD 2x36 2.00mm double row +0 +72 +72 +Connector_PinHeader_2.00mm +PinHeader_2x37_P2.00mm_Horizontal +Through hole angled pin header, 2x37, 2.00mm pitch, 4.2mm pin length, double rows +Through hole angled pin header THT 2x37 2.00mm double row +0 +74 +74 +Connector_PinHeader_2.00mm +PinHeader_2x37_P2.00mm_Vertical +Through hole straight pin header, 2x37, 2.00mm pitch, double rows +Through hole pin header THT 2x37 2.00mm double row +0 +74 +74 +Connector_PinHeader_2.00mm +PinHeader_2x37_P2.00mm_Vertical_SMD +surface-mounted straight pin header, 2x37, 2.00mm pitch, double rows +Surface mounted pin header SMD 2x37 2.00mm double row +0 +74 +74 +Connector_PinHeader_2.00mm +PinHeader_2x38_P2.00mm_Horizontal +Through hole angled pin header, 2x38, 2.00mm pitch, 4.2mm pin length, double rows +Through hole angled pin header THT 2x38 2.00mm double row +0 +76 +76 +Connector_PinHeader_2.00mm +PinHeader_2x38_P2.00mm_Vertical +Through hole straight pin header, 2x38, 2.00mm pitch, double rows +Through hole pin header THT 2x38 2.00mm double row +0 +76 +76 +Connector_PinHeader_2.00mm +PinHeader_2x38_P2.00mm_Vertical_SMD +surface-mounted straight pin header, 2x38, 2.00mm pitch, double rows +Surface mounted pin header SMD 2x38 2.00mm double row +0 +76 +76 +Connector_PinHeader_2.00mm +PinHeader_2x39_P2.00mm_Horizontal +Through hole angled pin header, 2x39, 2.00mm pitch, 4.2mm pin length, double rows +Through hole angled pin header THT 2x39 2.00mm double row +0 +78 +78 +Connector_PinHeader_2.00mm +PinHeader_2x39_P2.00mm_Vertical +Through hole straight pin header, 2x39, 2.00mm pitch, double rows +Through hole pin header THT 2x39 2.00mm double row +0 +78 +78 +Connector_PinHeader_2.00mm +PinHeader_2x39_P2.00mm_Vertical_SMD +surface-mounted straight pin header, 2x39, 2.00mm pitch, double rows +Surface mounted pin header SMD 2x39 2.00mm double row +0 +78 +78 +Connector_PinHeader_2.00mm +PinHeader_2x40_P2.00mm_Horizontal +Through hole angled pin header, 2x40, 2.00mm pitch, 4.2mm pin length, double rows +Through hole angled pin header THT 2x40 2.00mm double row +0 +80 +80 +Connector_PinHeader_2.00mm +PinHeader_2x40_P2.00mm_Vertical +Through hole straight pin header, 2x40, 2.00mm pitch, double rows +Through hole pin header THT 2x40 2.00mm double row +0 +80 +80 +Connector_PinHeader_2.00mm +PinHeader_2x40_P2.00mm_Vertical_SMD +surface-mounted straight pin header, 2x40, 2.00mm pitch, double rows +Surface mounted pin header SMD 2x40 2.00mm double row +0 +80 +80 +Connector_PinHeader_2.54mm +PinHeader_1x01_P2.54mm_Horizontal +Through hole angled pin header, 1x01, 2.54mm pitch, 6mm pin length, single row +Through hole angled pin header THT 1x01 2.54mm single row +0 +1 +1 +Connector_PinHeader_2.54mm +PinHeader_1x01_P2.54mm_Vertical +Through hole straight pin header, 1x01, 2.54mm pitch, single row +Through hole pin header THT 1x01 2.54mm single row +0 +1 +1 +Connector_PinHeader_2.54mm +PinHeader_1x02_P2.54mm_Horizontal +Through hole angled pin header, 1x02, 2.54mm pitch, 6mm pin length, single row +Through hole angled pin header THT 1x02 2.54mm single row +0 +2 +2 +Connector_PinHeader_2.54mm +PinHeader_1x02_P2.54mm_Vertical +Through hole straight pin header, 1x02, 2.54mm pitch, single row +Through hole pin header THT 1x02 2.54mm single row +0 +2 +2 +Connector_PinHeader_2.54mm +PinHeader_1x02_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x02, 2.54mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x02 2.54mm single row style1 pin1 left +0 +2 +2 +Connector_PinHeader_2.54mm +PinHeader_1x02_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x02, 2.54mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x02 2.54mm single row style2 pin1 right +0 +2 +2 +Connector_PinHeader_2.54mm +PinHeader_1x03_P2.54mm_Horizontal +Through hole angled pin header, 1x03, 2.54mm pitch, 6mm pin length, single row +Through hole angled pin header THT 1x03 2.54mm single row +0 +3 +3 +Connector_PinHeader_2.54mm +PinHeader_1x03_P2.54mm_Vertical +Through hole straight pin header, 1x03, 2.54mm pitch, single row +Through hole pin header THT 1x03 2.54mm single row +0 +3 +3 +Connector_PinHeader_2.54mm +PinHeader_1x03_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x03, 2.54mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x03 2.54mm single row style1 pin1 left +0 +3 +3 +Connector_PinHeader_2.54mm +PinHeader_1x03_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x03, 2.54mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x03 2.54mm single row style2 pin1 right +0 +3 +3 +Connector_PinHeader_2.54mm +PinHeader_1x04_P2.54mm_Horizontal +Through hole angled pin header, 1x04, 2.54mm pitch, 6mm pin length, single row +Through hole angled pin header THT 1x04 2.54mm single row +0 +4 +4 +Connector_PinHeader_2.54mm +PinHeader_1x04_P2.54mm_Vertical +Through hole straight pin header, 1x04, 2.54mm pitch, single row +Through hole pin header THT 1x04 2.54mm single row +0 +4 +4 +Connector_PinHeader_2.54mm +PinHeader_1x04_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x04, 2.54mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x04 2.54mm single row style1 pin1 left +0 +4 +4 +Connector_PinHeader_2.54mm +PinHeader_1x04_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x04, 2.54mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x04 2.54mm single row style2 pin1 right +0 +4 +4 +Connector_PinHeader_2.54mm +PinHeader_1x05_P2.54mm_Horizontal +Through hole angled pin header, 1x05, 2.54mm pitch, 6mm pin length, single row +Through hole angled pin header THT 1x05 2.54mm single row +0 +5 +5 +Connector_PinHeader_2.54mm +PinHeader_1x05_P2.54mm_Vertical +Through hole straight pin header, 1x05, 2.54mm pitch, single row +Through hole pin header THT 1x05 2.54mm single row +0 +5 +5 +Connector_PinHeader_2.54mm +PinHeader_1x05_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x05, 2.54mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x05 2.54mm single row style1 pin1 left +0 +5 +5 +Connector_PinHeader_2.54mm +PinHeader_1x05_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x05, 2.54mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x05 2.54mm single row style2 pin1 right +0 +5 +5 +Connector_PinHeader_2.54mm +PinHeader_1x06_P2.54mm_Horizontal +Through hole angled pin header, 1x06, 2.54mm pitch, 6mm pin length, single row +Through hole angled pin header THT 1x06 2.54mm single row +0 +6 +6 +Connector_PinHeader_2.54mm +PinHeader_1x06_P2.54mm_Vertical +Through hole straight pin header, 1x06, 2.54mm pitch, single row +Through hole pin header THT 1x06 2.54mm single row +0 +6 +6 +Connector_PinHeader_2.54mm +PinHeader_1x06_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x06, 2.54mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x06 2.54mm single row style1 pin1 left +0 +6 +6 +Connector_PinHeader_2.54mm +PinHeader_1x06_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x06, 2.54mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x06 2.54mm single row style2 pin1 right +0 +6 +6 +Connector_PinHeader_2.54mm +PinHeader_1x07_P2.54mm_Horizontal +Through hole angled pin header, 1x07, 2.54mm pitch, 6mm pin length, single row +Through hole angled pin header THT 1x07 2.54mm single row +0 +7 +7 +Connector_PinHeader_2.54mm +PinHeader_1x07_P2.54mm_Vertical +Through hole straight pin header, 1x07, 2.54mm pitch, single row +Through hole pin header THT 1x07 2.54mm single row +0 +7 +7 +Connector_PinHeader_2.54mm +PinHeader_1x07_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x07, 2.54mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x07 2.54mm single row style1 pin1 left +0 +7 +7 +Connector_PinHeader_2.54mm +PinHeader_1x07_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x07, 2.54mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x07 2.54mm single row style2 pin1 right +0 +7 +7 +Connector_PinHeader_2.54mm +PinHeader_1x08_P2.54mm_Horizontal +Through hole angled pin header, 1x08, 2.54mm pitch, 6mm pin length, single row +Through hole angled pin header THT 1x08 2.54mm single row +0 +8 +8 +Connector_PinHeader_2.54mm +PinHeader_1x08_P2.54mm_Vertical +Through hole straight pin header, 1x08, 2.54mm pitch, single row +Through hole pin header THT 1x08 2.54mm single row +0 +8 +8 +Connector_PinHeader_2.54mm +PinHeader_1x08_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x08, 2.54mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x08 2.54mm single row style1 pin1 left +0 +8 +8 +Connector_PinHeader_2.54mm +PinHeader_1x08_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x08, 2.54mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x08 2.54mm single row style2 pin1 right +0 +8 +8 +Connector_PinHeader_2.54mm +PinHeader_1x09_P2.54mm_Horizontal +Through hole angled pin header, 1x09, 2.54mm pitch, 6mm pin length, single row +Through hole angled pin header THT 1x09 2.54mm single row +0 +9 +9 +Connector_PinHeader_2.54mm +PinHeader_1x09_P2.54mm_Vertical +Through hole straight pin header, 1x09, 2.54mm pitch, single row +Through hole pin header THT 1x09 2.54mm single row +0 +9 +9 +Connector_PinHeader_2.54mm +PinHeader_1x09_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x09, 2.54mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x09 2.54mm single row style1 pin1 left +0 +9 +9 +Connector_PinHeader_2.54mm +PinHeader_1x09_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x09, 2.54mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x09 2.54mm single row style2 pin1 right +0 +9 +9 +Connector_PinHeader_2.54mm +PinHeader_1x10_P2.54mm_Horizontal +Through hole angled pin header, 1x10, 2.54mm pitch, 6mm pin length, single row +Through hole angled pin header THT 1x10 2.54mm single row +0 +10 +10 +Connector_PinHeader_2.54mm +PinHeader_1x10_P2.54mm_Vertical +Through hole straight pin header, 1x10, 2.54mm pitch, single row +Through hole pin header THT 1x10 2.54mm single row +0 +10 +10 +Connector_PinHeader_2.54mm +PinHeader_1x10_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x10, 2.54mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x10 2.54mm single row style1 pin1 left +0 +10 +10 +Connector_PinHeader_2.54mm +PinHeader_1x10_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x10, 2.54mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x10 2.54mm single row style2 pin1 right +0 +10 +10 +Connector_PinHeader_2.54mm +PinHeader_1x11_P2.54mm_Horizontal +Through hole angled pin header, 1x11, 2.54mm pitch, 6mm pin length, single row +Through hole angled pin header THT 1x11 2.54mm single row +0 +11 +11 +Connector_PinHeader_2.54mm +PinHeader_1x11_P2.54mm_Vertical +Through hole straight pin header, 1x11, 2.54mm pitch, single row +Through hole pin header THT 1x11 2.54mm single row +0 +11 +11 +Connector_PinHeader_2.54mm +PinHeader_1x11_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x11, 2.54mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x11 2.54mm single row style1 pin1 left +0 +11 +11 +Connector_PinHeader_2.54mm +PinHeader_1x11_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x11, 2.54mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x11 2.54mm single row style2 pin1 right +0 +11 +11 +Connector_PinHeader_2.54mm +PinHeader_1x12_P2.54mm_Horizontal +Through hole angled pin header, 1x12, 2.54mm pitch, 6mm pin length, single row +Through hole angled pin header THT 1x12 2.54mm single row +0 +12 +12 +Connector_PinHeader_2.54mm +PinHeader_1x12_P2.54mm_Vertical +Through hole straight pin header, 1x12, 2.54mm pitch, single row +Through hole pin header THT 1x12 2.54mm single row +0 +12 +12 +Connector_PinHeader_2.54mm +PinHeader_1x12_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x12, 2.54mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x12 2.54mm single row style1 pin1 left +0 +12 +12 +Connector_PinHeader_2.54mm +PinHeader_1x12_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x12, 2.54mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x12 2.54mm single row style2 pin1 right +0 +12 +12 +Connector_PinHeader_2.54mm +PinHeader_1x13_P2.54mm_Horizontal +Through hole angled pin header, 1x13, 2.54mm pitch, 6mm pin length, single row +Through hole angled pin header THT 1x13 2.54mm single row +0 +13 +13 +Connector_PinHeader_2.54mm +PinHeader_1x13_P2.54mm_Vertical +Through hole straight pin header, 1x13, 2.54mm pitch, single row +Through hole pin header THT 1x13 2.54mm single row +0 +13 +13 +Connector_PinHeader_2.54mm +PinHeader_1x13_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x13, 2.54mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x13 2.54mm single row style1 pin1 left +0 +13 +13 +Connector_PinHeader_2.54mm +PinHeader_1x13_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x13, 2.54mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x13 2.54mm single row style2 pin1 right +0 +13 +13 +Connector_PinHeader_2.54mm +PinHeader_1x14_P2.54mm_Horizontal +Through hole angled pin header, 1x14, 2.54mm pitch, 6mm pin length, single row +Through hole angled pin header THT 1x14 2.54mm single row +0 +14 +14 +Connector_PinHeader_2.54mm +PinHeader_1x14_P2.54mm_Vertical +Through hole straight pin header, 1x14, 2.54mm pitch, single row +Through hole pin header THT 1x14 2.54mm single row +0 +14 +14 +Connector_PinHeader_2.54mm +PinHeader_1x14_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x14, 2.54mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x14 2.54mm single row style1 pin1 left +0 +14 +14 +Connector_PinHeader_2.54mm +PinHeader_1x14_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x14, 2.54mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x14 2.54mm single row style2 pin1 right +0 +14 +14 +Connector_PinHeader_2.54mm +PinHeader_1x15_P2.54mm_Horizontal +Through hole angled pin header, 1x15, 2.54mm pitch, 6mm pin length, single row +Through hole angled pin header THT 1x15 2.54mm single row +0 +15 +15 +Connector_PinHeader_2.54mm +PinHeader_1x15_P2.54mm_Vertical +Through hole straight pin header, 1x15, 2.54mm pitch, single row +Through hole pin header THT 1x15 2.54mm single row +0 +15 +15 +Connector_PinHeader_2.54mm +PinHeader_1x15_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x15, 2.54mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x15 2.54mm single row style1 pin1 left +0 +15 +15 +Connector_PinHeader_2.54mm +PinHeader_1x15_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x15, 2.54mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x15 2.54mm single row style2 pin1 right +0 +15 +15 +Connector_PinHeader_2.54mm +PinHeader_1x16_P2.54mm_Horizontal +Through hole angled pin header, 1x16, 2.54mm pitch, 6mm pin length, single row +Through hole angled pin header THT 1x16 2.54mm single row +0 +16 +16 +Connector_PinHeader_2.54mm +PinHeader_1x16_P2.54mm_Vertical +Through hole straight pin header, 1x16, 2.54mm pitch, single row +Through hole pin header THT 1x16 2.54mm single row +0 +16 +16 +Connector_PinHeader_2.54mm +PinHeader_1x16_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x16, 2.54mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x16 2.54mm single row style1 pin1 left +0 +16 +16 +Connector_PinHeader_2.54mm +PinHeader_1x16_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x16, 2.54mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x16 2.54mm single row style2 pin1 right +0 +16 +16 +Connector_PinHeader_2.54mm +PinHeader_1x17_P2.54mm_Horizontal +Through hole angled pin header, 1x17, 2.54mm pitch, 6mm pin length, single row +Through hole angled pin header THT 1x17 2.54mm single row +0 +17 +17 +Connector_PinHeader_2.54mm +PinHeader_1x17_P2.54mm_Vertical +Through hole straight pin header, 1x17, 2.54mm pitch, single row +Through hole pin header THT 1x17 2.54mm single row +0 +17 +17 +Connector_PinHeader_2.54mm +PinHeader_1x17_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x17, 2.54mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x17 2.54mm single row style1 pin1 left +0 +17 +17 +Connector_PinHeader_2.54mm +PinHeader_1x17_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x17, 2.54mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x17 2.54mm single row style2 pin1 right +0 +17 +17 +Connector_PinHeader_2.54mm +PinHeader_1x18_P2.54mm_Horizontal +Through hole angled pin header, 1x18, 2.54mm pitch, 6mm pin length, single row +Through hole angled pin header THT 1x18 2.54mm single row +0 +18 +18 +Connector_PinHeader_2.54mm +PinHeader_1x18_P2.54mm_Vertical +Through hole straight pin header, 1x18, 2.54mm pitch, single row +Through hole pin header THT 1x18 2.54mm single row +0 +18 +18 +Connector_PinHeader_2.54mm +PinHeader_1x18_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x18, 2.54mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x18 2.54mm single row style1 pin1 left +0 +18 +18 +Connector_PinHeader_2.54mm +PinHeader_1x18_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x18, 2.54mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x18 2.54mm single row style2 pin1 right +0 +18 +18 +Connector_PinHeader_2.54mm +PinHeader_1x19_P2.54mm_Horizontal +Through hole angled pin header, 1x19, 2.54mm pitch, 6mm pin length, single row +Through hole angled pin header THT 1x19 2.54mm single row +0 +19 +19 +Connector_PinHeader_2.54mm +PinHeader_1x19_P2.54mm_Vertical +Through hole straight pin header, 1x19, 2.54mm pitch, single row +Through hole pin header THT 1x19 2.54mm single row +0 +19 +19 +Connector_PinHeader_2.54mm +PinHeader_1x19_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x19, 2.54mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x19 2.54mm single row style1 pin1 left +0 +19 +19 +Connector_PinHeader_2.54mm +PinHeader_1x19_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x19, 2.54mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x19 2.54mm single row style2 pin1 right +0 +19 +19 +Connector_PinHeader_2.54mm +PinHeader_1x20_P2.54mm_Horizontal +Through hole angled pin header, 1x20, 2.54mm pitch, 6mm pin length, single row +Through hole angled pin header THT 1x20 2.54mm single row +0 +20 +20 +Connector_PinHeader_2.54mm +PinHeader_1x20_P2.54mm_Vertical +Through hole straight pin header, 1x20, 2.54mm pitch, single row +Through hole pin header THT 1x20 2.54mm single row +0 +20 +20 +Connector_PinHeader_2.54mm +PinHeader_1x20_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x20, 2.54mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x20 2.54mm single row style1 pin1 left +0 +20 +20 +Connector_PinHeader_2.54mm +PinHeader_1x20_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x20, 2.54mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x20 2.54mm single row style2 pin1 right +0 +20 +20 +Connector_PinHeader_2.54mm +PinHeader_1x21_P2.54mm_Horizontal +Through hole angled pin header, 1x21, 2.54mm pitch, 6mm pin length, single row +Through hole angled pin header THT 1x21 2.54mm single row +0 +21 +21 +Connector_PinHeader_2.54mm +PinHeader_1x21_P2.54mm_Vertical +Through hole straight pin header, 1x21, 2.54mm pitch, single row +Through hole pin header THT 1x21 2.54mm single row +0 +21 +21 +Connector_PinHeader_2.54mm +PinHeader_1x21_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x21, 2.54mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x21 2.54mm single row style1 pin1 left +0 +21 +21 +Connector_PinHeader_2.54mm +PinHeader_1x21_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x21, 2.54mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x21 2.54mm single row style2 pin1 right +0 +21 +21 +Connector_PinHeader_2.54mm +PinHeader_1x22_P2.54mm_Horizontal +Through hole angled pin header, 1x22, 2.54mm pitch, 6mm pin length, single row +Through hole angled pin header THT 1x22 2.54mm single row +0 +22 +22 +Connector_PinHeader_2.54mm +PinHeader_1x22_P2.54mm_Vertical +Through hole straight pin header, 1x22, 2.54mm pitch, single row +Through hole pin header THT 1x22 2.54mm single row +0 +22 +22 +Connector_PinHeader_2.54mm +PinHeader_1x22_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x22, 2.54mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x22 2.54mm single row style1 pin1 left +0 +22 +22 +Connector_PinHeader_2.54mm +PinHeader_1x22_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x22, 2.54mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x22 2.54mm single row style2 pin1 right +0 +22 +22 +Connector_PinHeader_2.54mm +PinHeader_1x23_P2.54mm_Horizontal +Through hole angled pin header, 1x23, 2.54mm pitch, 6mm pin length, single row +Through hole angled pin header THT 1x23 2.54mm single row +0 +23 +23 +Connector_PinHeader_2.54mm +PinHeader_1x23_P2.54mm_Vertical +Through hole straight pin header, 1x23, 2.54mm pitch, single row +Through hole pin header THT 1x23 2.54mm single row +0 +23 +23 +Connector_PinHeader_2.54mm +PinHeader_1x23_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x23, 2.54mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x23 2.54mm single row style1 pin1 left +0 +23 +23 +Connector_PinHeader_2.54mm +PinHeader_1x23_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x23, 2.54mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x23 2.54mm single row style2 pin1 right +0 +23 +23 +Connector_PinHeader_2.54mm +PinHeader_1x24_P2.54mm_Horizontal +Through hole angled pin header, 1x24, 2.54mm pitch, 6mm pin length, single row +Through hole angled pin header THT 1x24 2.54mm single row +0 +24 +24 +Connector_PinHeader_2.54mm +PinHeader_1x24_P2.54mm_Vertical +Through hole straight pin header, 1x24, 2.54mm pitch, single row +Through hole pin header THT 1x24 2.54mm single row +0 +24 +24 +Connector_PinHeader_2.54mm +PinHeader_1x24_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x24, 2.54mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x24 2.54mm single row style1 pin1 left +0 +24 +24 +Connector_PinHeader_2.54mm +PinHeader_1x24_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x24, 2.54mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x24 2.54mm single row style2 pin1 right +0 +24 +24 +Connector_PinHeader_2.54mm +PinHeader_1x25_P2.54mm_Horizontal +Through hole angled pin header, 1x25, 2.54mm pitch, 6mm pin length, single row +Through hole angled pin header THT 1x25 2.54mm single row +0 +25 +25 +Connector_PinHeader_2.54mm +PinHeader_1x25_P2.54mm_Vertical +Through hole straight pin header, 1x25, 2.54mm pitch, single row +Through hole pin header THT 1x25 2.54mm single row +0 +25 +25 +Connector_PinHeader_2.54mm +PinHeader_1x25_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x25, 2.54mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x25 2.54mm single row style1 pin1 left +0 +25 +25 +Connector_PinHeader_2.54mm +PinHeader_1x25_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x25, 2.54mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x25 2.54mm single row style2 pin1 right +0 +25 +25 +Connector_PinHeader_2.54mm +PinHeader_1x26_P2.54mm_Horizontal +Through hole angled pin header, 1x26, 2.54mm pitch, 6mm pin length, single row +Through hole angled pin header THT 1x26 2.54mm single row +0 +26 +26 +Connector_PinHeader_2.54mm +PinHeader_1x26_P2.54mm_Vertical +Through hole straight pin header, 1x26, 2.54mm pitch, single row +Through hole pin header THT 1x26 2.54mm single row +0 +26 +26 +Connector_PinHeader_2.54mm +PinHeader_1x26_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x26, 2.54mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x26 2.54mm single row style1 pin1 left +0 +26 +26 +Connector_PinHeader_2.54mm +PinHeader_1x26_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x26, 2.54mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x26 2.54mm single row style2 pin1 right +0 +26 +26 +Connector_PinHeader_2.54mm +PinHeader_1x27_P2.54mm_Horizontal +Through hole angled pin header, 1x27, 2.54mm pitch, 6mm pin length, single row +Through hole angled pin header THT 1x27 2.54mm single row +0 +27 +27 +Connector_PinHeader_2.54mm +PinHeader_1x27_P2.54mm_Vertical +Through hole straight pin header, 1x27, 2.54mm pitch, single row +Through hole pin header THT 1x27 2.54mm single row +0 +27 +27 +Connector_PinHeader_2.54mm +PinHeader_1x27_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x27, 2.54mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x27 2.54mm single row style1 pin1 left +0 +27 +27 +Connector_PinHeader_2.54mm +PinHeader_1x27_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x27, 2.54mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x27 2.54mm single row style2 pin1 right +0 +27 +27 +Connector_PinHeader_2.54mm +PinHeader_1x28_P2.54mm_Horizontal +Through hole angled pin header, 1x28, 2.54mm pitch, 6mm pin length, single row +Through hole angled pin header THT 1x28 2.54mm single row +0 +28 +28 +Connector_PinHeader_2.54mm +PinHeader_1x28_P2.54mm_Vertical +Through hole straight pin header, 1x28, 2.54mm pitch, single row +Through hole pin header THT 1x28 2.54mm single row +0 +28 +28 +Connector_PinHeader_2.54mm +PinHeader_1x28_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x28, 2.54mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x28 2.54mm single row style1 pin1 left +0 +28 +28 +Connector_PinHeader_2.54mm +PinHeader_1x28_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x28, 2.54mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x28 2.54mm single row style2 pin1 right +0 +28 +28 +Connector_PinHeader_2.54mm +PinHeader_1x29_P2.54mm_Horizontal +Through hole angled pin header, 1x29, 2.54mm pitch, 6mm pin length, single row +Through hole angled pin header THT 1x29 2.54mm single row +0 +29 +29 +Connector_PinHeader_2.54mm +PinHeader_1x29_P2.54mm_Vertical +Through hole straight pin header, 1x29, 2.54mm pitch, single row +Through hole pin header THT 1x29 2.54mm single row +0 +29 +29 +Connector_PinHeader_2.54mm +PinHeader_1x29_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x29, 2.54mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x29 2.54mm single row style1 pin1 left +0 +29 +29 +Connector_PinHeader_2.54mm +PinHeader_1x29_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x29, 2.54mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x29 2.54mm single row style2 pin1 right +0 +29 +29 +Connector_PinHeader_2.54mm +PinHeader_1x30_P2.54mm_Horizontal +Through hole angled pin header, 1x30, 2.54mm pitch, 6mm pin length, single row +Through hole angled pin header THT 1x30 2.54mm single row +0 +30 +30 +Connector_PinHeader_2.54mm +PinHeader_1x30_P2.54mm_Vertical +Through hole straight pin header, 1x30, 2.54mm pitch, single row +Through hole pin header THT 1x30 2.54mm single row +0 +30 +30 +Connector_PinHeader_2.54mm +PinHeader_1x30_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x30, 2.54mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x30 2.54mm single row style1 pin1 left +0 +30 +30 +Connector_PinHeader_2.54mm +PinHeader_1x30_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x30, 2.54mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x30 2.54mm single row style2 pin1 right +0 +30 +30 +Connector_PinHeader_2.54mm +PinHeader_1x31_P2.54mm_Horizontal +Through hole angled pin header, 1x31, 2.54mm pitch, 6mm pin length, single row +Through hole angled pin header THT 1x31 2.54mm single row +0 +31 +31 +Connector_PinHeader_2.54mm +PinHeader_1x31_P2.54mm_Vertical +Through hole straight pin header, 1x31, 2.54mm pitch, single row +Through hole pin header THT 1x31 2.54mm single row +0 +31 +31 +Connector_PinHeader_2.54mm +PinHeader_1x31_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x31, 2.54mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x31 2.54mm single row style1 pin1 left +0 +31 +31 +Connector_PinHeader_2.54mm +PinHeader_1x31_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x31, 2.54mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x31 2.54mm single row style2 pin1 right +0 +31 +31 +Connector_PinHeader_2.54mm +PinHeader_1x32_P2.54mm_Horizontal +Through hole angled pin header, 1x32, 2.54mm pitch, 6mm pin length, single row +Through hole angled pin header THT 1x32 2.54mm single row +0 +32 +32 +Connector_PinHeader_2.54mm +PinHeader_1x32_P2.54mm_Vertical +Through hole straight pin header, 1x32, 2.54mm pitch, single row +Through hole pin header THT 1x32 2.54mm single row +0 +32 +32 +Connector_PinHeader_2.54mm +PinHeader_1x32_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x32, 2.54mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x32 2.54mm single row style1 pin1 left +0 +32 +32 +Connector_PinHeader_2.54mm +PinHeader_1x32_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x32, 2.54mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x32 2.54mm single row style2 pin1 right +0 +32 +32 +Connector_PinHeader_2.54mm +PinHeader_1x33_P2.54mm_Horizontal +Through hole angled pin header, 1x33, 2.54mm pitch, 6mm pin length, single row +Through hole angled pin header THT 1x33 2.54mm single row +0 +33 +33 +Connector_PinHeader_2.54mm +PinHeader_1x33_P2.54mm_Vertical +Through hole straight pin header, 1x33, 2.54mm pitch, single row +Through hole pin header THT 1x33 2.54mm single row +0 +33 +33 +Connector_PinHeader_2.54mm +PinHeader_1x33_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x33, 2.54mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x33 2.54mm single row style1 pin1 left +0 +33 +33 +Connector_PinHeader_2.54mm +PinHeader_1x33_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x33, 2.54mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x33 2.54mm single row style2 pin1 right +0 +33 +33 +Connector_PinHeader_2.54mm +PinHeader_1x34_P2.54mm_Horizontal +Through hole angled pin header, 1x34, 2.54mm pitch, 6mm pin length, single row +Through hole angled pin header THT 1x34 2.54mm single row +0 +34 +34 +Connector_PinHeader_2.54mm +PinHeader_1x34_P2.54mm_Vertical +Through hole straight pin header, 1x34, 2.54mm pitch, single row +Through hole pin header THT 1x34 2.54mm single row +0 +34 +34 +Connector_PinHeader_2.54mm +PinHeader_1x34_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x34, 2.54mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x34 2.54mm single row style1 pin1 left +0 +34 +34 +Connector_PinHeader_2.54mm +PinHeader_1x34_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x34, 2.54mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x34 2.54mm single row style2 pin1 right +0 +34 +34 +Connector_PinHeader_2.54mm +PinHeader_1x35_P2.54mm_Horizontal +Through hole angled pin header, 1x35, 2.54mm pitch, 6mm pin length, single row +Through hole angled pin header THT 1x35 2.54mm single row +0 +35 +35 +Connector_PinHeader_2.54mm +PinHeader_1x35_P2.54mm_Vertical +Through hole straight pin header, 1x35, 2.54mm pitch, single row +Through hole pin header THT 1x35 2.54mm single row +0 +35 +35 +Connector_PinHeader_2.54mm +PinHeader_1x35_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x35, 2.54mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x35 2.54mm single row style1 pin1 left +0 +35 +35 +Connector_PinHeader_2.54mm +PinHeader_1x35_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x35, 2.54mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x35 2.54mm single row style2 pin1 right +0 +35 +35 +Connector_PinHeader_2.54mm +PinHeader_1x36_P2.54mm_Horizontal +Through hole angled pin header, 1x36, 2.54mm pitch, 6mm pin length, single row +Through hole angled pin header THT 1x36 2.54mm single row +0 +36 +36 +Connector_PinHeader_2.54mm +PinHeader_1x36_P2.54mm_Vertical +Through hole straight pin header, 1x36, 2.54mm pitch, single row +Through hole pin header THT 1x36 2.54mm single row +0 +36 +36 +Connector_PinHeader_2.54mm +PinHeader_1x36_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x36, 2.54mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x36 2.54mm single row style1 pin1 left +0 +36 +36 +Connector_PinHeader_2.54mm +PinHeader_1x36_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x36, 2.54mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x36 2.54mm single row style2 pin1 right +0 +36 +36 +Connector_PinHeader_2.54mm +PinHeader_1x37_P2.54mm_Horizontal +Through hole angled pin header, 1x37, 2.54mm pitch, 6mm pin length, single row +Through hole angled pin header THT 1x37 2.54mm single row +0 +37 +37 +Connector_PinHeader_2.54mm +PinHeader_1x37_P2.54mm_Vertical +Through hole straight pin header, 1x37, 2.54mm pitch, single row +Through hole pin header THT 1x37 2.54mm single row +0 +37 +37 +Connector_PinHeader_2.54mm +PinHeader_1x37_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x37, 2.54mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x37 2.54mm single row style1 pin1 left +0 +37 +37 +Connector_PinHeader_2.54mm +PinHeader_1x37_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x37, 2.54mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x37 2.54mm single row style2 pin1 right +0 +37 +37 +Connector_PinHeader_2.54mm +PinHeader_1x38_P2.54mm_Horizontal +Through hole angled pin header, 1x38, 2.54mm pitch, 6mm pin length, single row +Through hole angled pin header THT 1x38 2.54mm single row +0 +38 +38 +Connector_PinHeader_2.54mm +PinHeader_1x38_P2.54mm_Vertical +Through hole straight pin header, 1x38, 2.54mm pitch, single row +Through hole pin header THT 1x38 2.54mm single row +0 +38 +38 +Connector_PinHeader_2.54mm +PinHeader_1x38_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x38, 2.54mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x38 2.54mm single row style1 pin1 left +0 +38 +38 +Connector_PinHeader_2.54mm +PinHeader_1x38_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x38, 2.54mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x38 2.54mm single row style2 pin1 right +0 +38 +38 +Connector_PinHeader_2.54mm +PinHeader_1x39_P2.54mm_Horizontal +Through hole angled pin header, 1x39, 2.54mm pitch, 6mm pin length, single row +Through hole angled pin header THT 1x39 2.54mm single row +0 +39 +39 +Connector_PinHeader_2.54mm +PinHeader_1x39_P2.54mm_Vertical +Through hole straight pin header, 1x39, 2.54mm pitch, single row +Through hole pin header THT 1x39 2.54mm single row +0 +39 +39 +Connector_PinHeader_2.54mm +PinHeader_1x39_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x39, 2.54mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x39 2.54mm single row style1 pin1 left +0 +39 +39 +Connector_PinHeader_2.54mm +PinHeader_1x39_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x39, 2.54mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x39 2.54mm single row style2 pin1 right +0 +39 +39 +Connector_PinHeader_2.54mm +PinHeader_1x40_P2.54mm_Horizontal +Through hole angled pin header, 1x40, 2.54mm pitch, 6mm pin length, single row +Through hole angled pin header THT 1x40 2.54mm single row +0 +40 +40 +Connector_PinHeader_2.54mm +PinHeader_1x40_P2.54mm_Vertical +Through hole straight pin header, 1x40, 2.54mm pitch, single row +Through hole pin header THT 1x40 2.54mm single row +0 +40 +40 +Connector_PinHeader_2.54mm +PinHeader_1x40_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight pin header, 1x40, 2.54mm pitch, single row, style 1 (pin 1 left) +Surface mounted pin header SMD 1x40 2.54mm single row style1 pin1 left +0 +40 +40 +Connector_PinHeader_2.54mm +PinHeader_1x40_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight pin header, 1x40, 2.54mm pitch, single row, style 2 (pin 1 right) +Surface mounted pin header SMD 1x40 2.54mm single row style2 pin1 right +0 +40 +40 +Connector_PinHeader_2.54mm +PinHeader_2x01_P2.54mm_Horizontal +Through hole angled pin header, 2x01, 2.54mm pitch, 6mm pin length, double rows +Through hole angled pin header THT 2x01 2.54mm double row +0 +2 +2 +Connector_PinHeader_2.54mm +PinHeader_2x01_P2.54mm_Vertical +Through hole straight pin header, 2x01, 2.54mm pitch, double rows +Through hole pin header THT 2x01 2.54mm double row +0 +2 +2 +Connector_PinHeader_2.54mm +PinHeader_2x01_P2.54mm_Vertical_SMD +surface-mounted straight pin header, 2x01, 2.54mm pitch, double rows +Surface mounted pin header SMD 2x01 2.54mm double row +0 +2 +2 +Connector_PinHeader_2.54mm +PinHeader_2x02_P2.54mm_Horizontal +Through hole angled pin header, 2x02, 2.54mm pitch, 6mm pin length, double rows +Through hole angled pin header THT 2x02 2.54mm double row +0 +4 +4 +Connector_PinHeader_2.54mm +PinHeader_2x02_P2.54mm_Vertical +Through hole straight pin header, 2x02, 2.54mm pitch, double rows +Through hole pin header THT 2x02 2.54mm double row +0 +4 +4 +Connector_PinHeader_2.54mm +PinHeader_2x02_P2.54mm_Vertical_SMD +surface-mounted straight pin header, 2x02, 2.54mm pitch, double rows +Surface mounted pin header SMD 2x02 2.54mm double row +0 +4 +4 +Connector_PinHeader_2.54mm +PinHeader_2x03_P2.54mm_Horizontal +Through hole angled pin header, 2x03, 2.54mm pitch, 6mm pin length, double rows +Through hole angled pin header THT 2x03 2.54mm double row +0 +6 +6 +Connector_PinHeader_2.54mm +PinHeader_2x03_P2.54mm_Vertical +Through hole straight pin header, 2x03, 2.54mm pitch, double rows +Through hole pin header THT 2x03 2.54mm double row +0 +6 +6 +Connector_PinHeader_2.54mm +PinHeader_2x03_P2.54mm_Vertical_SMD +surface-mounted straight pin header, 2x03, 2.54mm pitch, double rows +Surface mounted pin header SMD 2x03 2.54mm double row +0 +6 +6 +Connector_PinHeader_2.54mm +PinHeader_2x04_P2.54mm_Horizontal +Through hole angled pin header, 2x04, 2.54mm pitch, 6mm pin length, double rows +Through hole angled pin header THT 2x04 2.54mm double row +0 +8 +8 +Connector_PinHeader_2.54mm +PinHeader_2x04_P2.54mm_Vertical +Through hole straight pin header, 2x04, 2.54mm pitch, double rows +Through hole pin header THT 2x04 2.54mm double row +0 +8 +8 +Connector_PinHeader_2.54mm +PinHeader_2x04_P2.54mm_Vertical_SMD +surface-mounted straight pin header, 2x04, 2.54mm pitch, double rows +Surface mounted pin header SMD 2x04 2.54mm double row +0 +8 +8 +Connector_PinHeader_2.54mm +PinHeader_2x05_P2.54mm_Horizontal +Through hole angled pin header, 2x05, 2.54mm pitch, 6mm pin length, double rows +Through hole angled pin header THT 2x05 2.54mm double row +0 +10 +10 +Connector_PinHeader_2.54mm +PinHeader_2x05_P2.54mm_Vertical +Through hole straight pin header, 2x05, 2.54mm pitch, double rows +Through hole pin header THT 2x05 2.54mm double row +0 +10 +10 +Connector_PinHeader_2.54mm +PinHeader_2x05_P2.54mm_Vertical_SMD +surface-mounted straight pin header, 2x05, 2.54mm pitch, double rows +Surface mounted pin header SMD 2x05 2.54mm double row +0 +10 +10 +Connector_PinHeader_2.54mm +PinHeader_2x06_P2.54mm_Horizontal +Through hole angled pin header, 2x06, 2.54mm pitch, 6mm pin length, double rows +Through hole angled pin header THT 2x06 2.54mm double row +0 +12 +12 +Connector_PinHeader_2.54mm +PinHeader_2x06_P2.54mm_Vertical +Through hole straight pin header, 2x06, 2.54mm pitch, double rows +Through hole pin header THT 2x06 2.54mm double row +0 +12 +12 +Connector_PinHeader_2.54mm +PinHeader_2x06_P2.54mm_Vertical_SMD +surface-mounted straight pin header, 2x06, 2.54mm pitch, double rows +Surface mounted pin header SMD 2x06 2.54mm double row +0 +12 +12 +Connector_PinHeader_2.54mm +PinHeader_2x07_P2.54mm_Horizontal +Through hole angled pin header, 2x07, 2.54mm pitch, 6mm pin length, double rows +Through hole angled pin header THT 2x07 2.54mm double row +0 +14 +14 +Connector_PinHeader_2.54mm +PinHeader_2x07_P2.54mm_Vertical +Through hole straight pin header, 2x07, 2.54mm pitch, double rows +Through hole pin header THT 2x07 2.54mm double row +0 +14 +14 +Connector_PinHeader_2.54mm +PinHeader_2x07_P2.54mm_Vertical_SMD +surface-mounted straight pin header, 2x07, 2.54mm pitch, double rows +Surface mounted pin header SMD 2x07 2.54mm double row +0 +14 +14 +Connector_PinHeader_2.54mm +PinHeader_2x08_P2.54mm_Horizontal +Through hole angled pin header, 2x08, 2.54mm pitch, 6mm pin length, double rows +Through hole angled pin header THT 2x08 2.54mm double row +0 +16 +16 +Connector_PinHeader_2.54mm +PinHeader_2x08_P2.54mm_Vertical +Through hole straight pin header, 2x08, 2.54mm pitch, double rows +Through hole pin header THT 2x08 2.54mm double row +0 +16 +16 +Connector_PinHeader_2.54mm +PinHeader_2x08_P2.54mm_Vertical_SMD +surface-mounted straight pin header, 2x08, 2.54mm pitch, double rows +Surface mounted pin header SMD 2x08 2.54mm double row +0 +16 +16 +Connector_PinHeader_2.54mm +PinHeader_2x09_P2.54mm_Horizontal +Through hole angled pin header, 2x09, 2.54mm pitch, 6mm pin length, double rows +Through hole angled pin header THT 2x09 2.54mm double row +0 +18 +18 +Connector_PinHeader_2.54mm +PinHeader_2x09_P2.54mm_Vertical +Through hole straight pin header, 2x09, 2.54mm pitch, double rows +Through hole pin header THT 2x09 2.54mm double row +0 +18 +18 +Connector_PinHeader_2.54mm +PinHeader_2x09_P2.54mm_Vertical_SMD +surface-mounted straight pin header, 2x09, 2.54mm pitch, double rows +Surface mounted pin header SMD 2x09 2.54mm double row +0 +18 +18 +Connector_PinHeader_2.54mm +PinHeader_2x10_P2.54mm_Horizontal +Through hole angled pin header, 2x10, 2.54mm pitch, 6mm pin length, double rows +Through hole angled pin header THT 2x10 2.54mm double row +0 +20 +20 +Connector_PinHeader_2.54mm +PinHeader_2x10_P2.54mm_Vertical +Through hole straight pin header, 2x10, 2.54mm pitch, double rows +Through hole pin header THT 2x10 2.54mm double row +0 +20 +20 +Connector_PinHeader_2.54mm +PinHeader_2x10_P2.54mm_Vertical_SMD +surface-mounted straight pin header, 2x10, 2.54mm pitch, double rows +Surface mounted pin header SMD 2x10 2.54mm double row +0 +20 +20 +Connector_PinHeader_2.54mm +PinHeader_2x11_P2.54mm_Horizontal +Through hole angled pin header, 2x11, 2.54mm pitch, 6mm pin length, double rows +Through hole angled pin header THT 2x11 2.54mm double row +0 +22 +22 +Connector_PinHeader_2.54mm +PinHeader_2x11_P2.54mm_Vertical +Through hole straight pin header, 2x11, 2.54mm pitch, double rows +Through hole pin header THT 2x11 2.54mm double row +0 +22 +22 +Connector_PinHeader_2.54mm +PinHeader_2x11_P2.54mm_Vertical_SMD +surface-mounted straight pin header, 2x11, 2.54mm pitch, double rows +Surface mounted pin header SMD 2x11 2.54mm double row +0 +22 +22 +Connector_PinHeader_2.54mm +PinHeader_2x12_P2.54mm_Horizontal +Through hole angled pin header, 2x12, 2.54mm pitch, 6mm pin length, double rows +Through hole angled pin header THT 2x12 2.54mm double row +0 +24 +24 +Connector_PinHeader_2.54mm +PinHeader_2x12_P2.54mm_Vertical +Through hole straight pin header, 2x12, 2.54mm pitch, double rows +Through hole pin header THT 2x12 2.54mm double row +0 +24 +24 +Connector_PinHeader_2.54mm +PinHeader_2x12_P2.54mm_Vertical_SMD +surface-mounted straight pin header, 2x12, 2.54mm pitch, double rows +Surface mounted pin header SMD 2x12 2.54mm double row +0 +24 +24 +Connector_PinHeader_2.54mm +PinHeader_2x13_P2.54mm_Horizontal +Through hole angled pin header, 2x13, 2.54mm pitch, 6mm pin length, double rows +Through hole angled pin header THT 2x13 2.54mm double row +0 +26 +26 +Connector_PinHeader_2.54mm +PinHeader_2x13_P2.54mm_Vertical +Through hole straight pin header, 2x13, 2.54mm pitch, double rows +Through hole pin header THT 2x13 2.54mm double row +0 +26 +26 +Connector_PinHeader_2.54mm +PinHeader_2x13_P2.54mm_Vertical_SMD +surface-mounted straight pin header, 2x13, 2.54mm pitch, double rows +Surface mounted pin header SMD 2x13 2.54mm double row +0 +26 +26 +Connector_PinHeader_2.54mm +PinHeader_2x14_P2.54mm_Horizontal +Through hole angled pin header, 2x14, 2.54mm pitch, 6mm pin length, double rows +Through hole angled pin header THT 2x14 2.54mm double row +0 +28 +28 +Connector_PinHeader_2.54mm +PinHeader_2x14_P2.54mm_Vertical +Through hole straight pin header, 2x14, 2.54mm pitch, double rows +Through hole pin header THT 2x14 2.54mm double row +0 +28 +28 +Connector_PinHeader_2.54mm +PinHeader_2x14_P2.54mm_Vertical_SMD +surface-mounted straight pin header, 2x14, 2.54mm pitch, double rows +Surface mounted pin header SMD 2x14 2.54mm double row +0 +28 +28 +Connector_PinHeader_2.54mm +PinHeader_2x15_P2.54mm_Horizontal +Through hole angled pin header, 2x15, 2.54mm pitch, 6mm pin length, double rows +Through hole angled pin header THT 2x15 2.54mm double row +0 +30 +30 +Connector_PinHeader_2.54mm +PinHeader_2x15_P2.54mm_Vertical +Through hole straight pin header, 2x15, 2.54mm pitch, double rows +Through hole pin header THT 2x15 2.54mm double row +0 +30 +30 +Connector_PinHeader_2.54mm +PinHeader_2x15_P2.54mm_Vertical_SMD +surface-mounted straight pin header, 2x15, 2.54mm pitch, double rows +Surface mounted pin header SMD 2x15 2.54mm double row +0 +30 +30 +Connector_PinHeader_2.54mm +PinHeader_2x16_P2.54mm_Horizontal +Through hole angled pin header, 2x16, 2.54mm pitch, 6mm pin length, double rows +Through hole angled pin header THT 2x16 2.54mm double row +0 +32 +32 +Connector_PinHeader_2.54mm +PinHeader_2x16_P2.54mm_Vertical +Through hole straight pin header, 2x16, 2.54mm pitch, double rows +Through hole pin header THT 2x16 2.54mm double row +0 +32 +32 +Connector_PinHeader_2.54mm +PinHeader_2x16_P2.54mm_Vertical_SMD +surface-mounted straight pin header, 2x16, 2.54mm pitch, double rows +Surface mounted pin header SMD 2x16 2.54mm double row +0 +32 +32 +Connector_PinHeader_2.54mm +PinHeader_2x17_P2.54mm_Horizontal +Through hole angled pin header, 2x17, 2.54mm pitch, 6mm pin length, double rows +Through hole angled pin header THT 2x17 2.54mm double row +0 +34 +34 +Connector_PinHeader_2.54mm +PinHeader_2x17_P2.54mm_Vertical +Through hole straight pin header, 2x17, 2.54mm pitch, double rows +Through hole pin header THT 2x17 2.54mm double row +0 +34 +34 +Connector_PinHeader_2.54mm +PinHeader_2x17_P2.54mm_Vertical_SMD +surface-mounted straight pin header, 2x17, 2.54mm pitch, double rows +Surface mounted pin header SMD 2x17 2.54mm double row +0 +34 +34 +Connector_PinHeader_2.54mm +PinHeader_2x18_P2.54mm_Horizontal +Through hole angled pin header, 2x18, 2.54mm pitch, 6mm pin length, double rows +Through hole angled pin header THT 2x18 2.54mm double row +0 +36 +36 +Connector_PinHeader_2.54mm +PinHeader_2x18_P2.54mm_Vertical +Through hole straight pin header, 2x18, 2.54mm pitch, double rows +Through hole pin header THT 2x18 2.54mm double row +0 +36 +36 +Connector_PinHeader_2.54mm +PinHeader_2x18_P2.54mm_Vertical_SMD +surface-mounted straight pin header, 2x18, 2.54mm pitch, double rows +Surface mounted pin header SMD 2x18 2.54mm double row +0 +36 +36 +Connector_PinHeader_2.54mm +PinHeader_2x19_P2.54mm_Horizontal +Through hole angled pin header, 2x19, 2.54mm pitch, 6mm pin length, double rows +Through hole angled pin header THT 2x19 2.54mm double row +0 +38 +38 +Connector_PinHeader_2.54mm +PinHeader_2x19_P2.54mm_Vertical +Through hole straight pin header, 2x19, 2.54mm pitch, double rows +Through hole pin header THT 2x19 2.54mm double row +0 +38 +38 +Connector_PinHeader_2.54mm +PinHeader_2x19_P2.54mm_Vertical_SMD +surface-mounted straight pin header, 2x19, 2.54mm pitch, double rows +Surface mounted pin header SMD 2x19 2.54mm double row +0 +38 +38 +Connector_PinHeader_2.54mm +PinHeader_2x20_P2.54mm_Horizontal +Through hole angled pin header, 2x20, 2.54mm pitch, 6mm pin length, double rows +Through hole angled pin header THT 2x20 2.54mm double row +0 +40 +40 +Connector_PinHeader_2.54mm +PinHeader_2x20_P2.54mm_Vertical +Through hole straight pin header, 2x20, 2.54mm pitch, double rows +Through hole pin header THT 2x20 2.54mm double row +0 +40 +40 +Connector_PinHeader_2.54mm +PinHeader_2x20_P2.54mm_Vertical_SMD +surface-mounted straight pin header, 2x20, 2.54mm pitch, double rows +Surface mounted pin header SMD 2x20 2.54mm double row +0 +40 +40 +Connector_PinHeader_2.54mm +PinHeader_2x21_P2.54mm_Horizontal +Through hole angled pin header, 2x21, 2.54mm pitch, 6mm pin length, double rows +Through hole angled pin header THT 2x21 2.54mm double row +0 +42 +42 +Connector_PinHeader_2.54mm +PinHeader_2x21_P2.54mm_Vertical +Through hole straight pin header, 2x21, 2.54mm pitch, double rows +Through hole pin header THT 2x21 2.54mm double row +0 +42 +42 +Connector_PinHeader_2.54mm +PinHeader_2x21_P2.54mm_Vertical_SMD +surface-mounted straight pin header, 2x21, 2.54mm pitch, double rows +Surface mounted pin header SMD 2x21 2.54mm double row +0 +42 +42 +Connector_PinHeader_2.54mm +PinHeader_2x22_P2.54mm_Horizontal +Through hole angled pin header, 2x22, 2.54mm pitch, 6mm pin length, double rows +Through hole angled pin header THT 2x22 2.54mm double row +0 +44 +44 +Connector_PinHeader_2.54mm +PinHeader_2x22_P2.54mm_Vertical +Through hole straight pin header, 2x22, 2.54mm pitch, double rows +Through hole pin header THT 2x22 2.54mm double row +0 +44 +44 +Connector_PinHeader_2.54mm +PinHeader_2x22_P2.54mm_Vertical_SMD +surface-mounted straight pin header, 2x22, 2.54mm pitch, double rows +Surface mounted pin header SMD 2x22 2.54mm double row +0 +44 +44 +Connector_PinHeader_2.54mm +PinHeader_2x23_P2.54mm_Horizontal +Through hole angled pin header, 2x23, 2.54mm pitch, 6mm pin length, double rows +Through hole angled pin header THT 2x23 2.54mm double row +0 +46 +46 +Connector_PinHeader_2.54mm +PinHeader_2x23_P2.54mm_Vertical +Through hole straight pin header, 2x23, 2.54mm pitch, double rows +Through hole pin header THT 2x23 2.54mm double row +0 +46 +46 +Connector_PinHeader_2.54mm +PinHeader_2x23_P2.54mm_Vertical_SMD +surface-mounted straight pin header, 2x23, 2.54mm pitch, double rows +Surface mounted pin header SMD 2x23 2.54mm double row +0 +46 +46 +Connector_PinHeader_2.54mm +PinHeader_2x24_P2.54mm_Horizontal +Through hole angled pin header, 2x24, 2.54mm pitch, 6mm pin length, double rows +Through hole angled pin header THT 2x24 2.54mm double row +0 +48 +48 +Connector_PinHeader_2.54mm +PinHeader_2x24_P2.54mm_Vertical +Through hole straight pin header, 2x24, 2.54mm pitch, double rows +Through hole pin header THT 2x24 2.54mm double row +0 +48 +48 +Connector_PinHeader_2.54mm +PinHeader_2x24_P2.54mm_Vertical_SMD +surface-mounted straight pin header, 2x24, 2.54mm pitch, double rows +Surface mounted pin header SMD 2x24 2.54mm double row +0 +48 +48 +Connector_PinHeader_2.54mm +PinHeader_2x25_P2.54mm_Horizontal +Through hole angled pin header, 2x25, 2.54mm pitch, 6mm pin length, double rows +Through hole angled pin header THT 2x25 2.54mm double row +0 +50 +50 +Connector_PinHeader_2.54mm +PinHeader_2x25_P2.54mm_Vertical +Through hole straight pin header, 2x25, 2.54mm pitch, double rows +Through hole pin header THT 2x25 2.54mm double row +0 +50 +50 +Connector_PinHeader_2.54mm +PinHeader_2x25_P2.54mm_Vertical_SMD +surface-mounted straight pin header, 2x25, 2.54mm pitch, double rows +Surface mounted pin header SMD 2x25 2.54mm double row +0 +50 +50 +Connector_PinHeader_2.54mm +PinHeader_2x26_P2.54mm_Horizontal +Through hole angled pin header, 2x26, 2.54mm pitch, 6mm pin length, double rows +Through hole angled pin header THT 2x26 2.54mm double row +0 +52 +52 +Connector_PinHeader_2.54mm +PinHeader_2x26_P2.54mm_Vertical +Through hole straight pin header, 2x26, 2.54mm pitch, double rows +Through hole pin header THT 2x26 2.54mm double row +0 +52 +52 +Connector_PinHeader_2.54mm +PinHeader_2x26_P2.54mm_Vertical_SMD +surface-mounted straight pin header, 2x26, 2.54mm pitch, double rows +Surface mounted pin header SMD 2x26 2.54mm double row +0 +52 +52 +Connector_PinHeader_2.54mm +PinHeader_2x27_P2.54mm_Horizontal +Through hole angled pin header, 2x27, 2.54mm pitch, 6mm pin length, double rows +Through hole angled pin header THT 2x27 2.54mm double row +0 +54 +54 +Connector_PinHeader_2.54mm +PinHeader_2x27_P2.54mm_Vertical +Through hole straight pin header, 2x27, 2.54mm pitch, double rows +Through hole pin header THT 2x27 2.54mm double row +0 +54 +54 +Connector_PinHeader_2.54mm +PinHeader_2x27_P2.54mm_Vertical_SMD +surface-mounted straight pin header, 2x27, 2.54mm pitch, double rows +Surface mounted pin header SMD 2x27 2.54mm double row +0 +54 +54 +Connector_PinHeader_2.54mm +PinHeader_2x28_P2.54mm_Horizontal +Through hole angled pin header, 2x28, 2.54mm pitch, 6mm pin length, double rows +Through hole angled pin header THT 2x28 2.54mm double row +0 +56 +56 +Connector_PinHeader_2.54mm +PinHeader_2x28_P2.54mm_Vertical +Through hole straight pin header, 2x28, 2.54mm pitch, double rows +Through hole pin header THT 2x28 2.54mm double row +0 +56 +56 +Connector_PinHeader_2.54mm +PinHeader_2x28_P2.54mm_Vertical_SMD +surface-mounted straight pin header, 2x28, 2.54mm pitch, double rows +Surface mounted pin header SMD 2x28 2.54mm double row +0 +56 +56 +Connector_PinHeader_2.54mm +PinHeader_2x29_P2.54mm_Horizontal +Through hole angled pin header, 2x29, 2.54mm pitch, 6mm pin length, double rows +Through hole angled pin header THT 2x29 2.54mm double row +0 +58 +58 +Connector_PinHeader_2.54mm +PinHeader_2x29_P2.54mm_Vertical +Through hole straight pin header, 2x29, 2.54mm pitch, double rows +Through hole pin header THT 2x29 2.54mm double row +0 +58 +58 +Connector_PinHeader_2.54mm +PinHeader_2x29_P2.54mm_Vertical_SMD +surface-mounted straight pin header, 2x29, 2.54mm pitch, double rows +Surface mounted pin header SMD 2x29 2.54mm double row +0 +58 +58 +Connector_PinHeader_2.54mm +PinHeader_2x30_P2.54mm_Horizontal +Through hole angled pin header, 2x30, 2.54mm pitch, 6mm pin length, double rows +Through hole angled pin header THT 2x30 2.54mm double row +0 +60 +60 +Connector_PinHeader_2.54mm +PinHeader_2x30_P2.54mm_Vertical +Through hole straight pin header, 2x30, 2.54mm pitch, double rows +Through hole pin header THT 2x30 2.54mm double row +0 +60 +60 +Connector_PinHeader_2.54mm +PinHeader_2x30_P2.54mm_Vertical_SMD +surface-mounted straight pin header, 2x30, 2.54mm pitch, double rows +Surface mounted pin header SMD 2x30 2.54mm double row +0 +60 +60 +Connector_PinHeader_2.54mm +PinHeader_2x31_P2.54mm_Horizontal +Through hole angled pin header, 2x31, 2.54mm pitch, 6mm pin length, double rows +Through hole angled pin header THT 2x31 2.54mm double row +0 +62 +62 +Connector_PinHeader_2.54mm +PinHeader_2x31_P2.54mm_Vertical +Through hole straight pin header, 2x31, 2.54mm pitch, double rows +Through hole pin header THT 2x31 2.54mm double row +0 +62 +62 +Connector_PinHeader_2.54mm +PinHeader_2x31_P2.54mm_Vertical_SMD +surface-mounted straight pin header, 2x31, 2.54mm pitch, double rows +Surface mounted pin header SMD 2x31 2.54mm double row +0 +62 +62 +Connector_PinHeader_2.54mm +PinHeader_2x32_P2.54mm_Horizontal +Through hole angled pin header, 2x32, 2.54mm pitch, 6mm pin length, double rows +Through hole angled pin header THT 2x32 2.54mm double row +0 +64 +64 +Connector_PinHeader_2.54mm +PinHeader_2x32_P2.54mm_Vertical +Through hole straight pin header, 2x32, 2.54mm pitch, double rows +Through hole pin header THT 2x32 2.54mm double row +0 +64 +64 +Connector_PinHeader_2.54mm +PinHeader_2x32_P2.54mm_Vertical_SMD +surface-mounted straight pin header, 2x32, 2.54mm pitch, double rows +Surface mounted pin header SMD 2x32 2.54mm double row +0 +64 +64 +Connector_PinHeader_2.54mm +PinHeader_2x33_P2.54mm_Horizontal +Through hole angled pin header, 2x33, 2.54mm pitch, 6mm pin length, double rows +Through hole angled pin header THT 2x33 2.54mm double row +0 +66 +66 +Connector_PinHeader_2.54mm +PinHeader_2x33_P2.54mm_Vertical +Through hole straight pin header, 2x33, 2.54mm pitch, double rows +Through hole pin header THT 2x33 2.54mm double row +0 +66 +66 +Connector_PinHeader_2.54mm +PinHeader_2x33_P2.54mm_Vertical_SMD +surface-mounted straight pin header, 2x33, 2.54mm pitch, double rows +Surface mounted pin header SMD 2x33 2.54mm double row +0 +66 +66 +Connector_PinHeader_2.54mm +PinHeader_2x34_P2.54mm_Horizontal +Through hole angled pin header, 2x34, 2.54mm pitch, 6mm pin length, double rows +Through hole angled pin header THT 2x34 2.54mm double row +0 +68 +68 +Connector_PinHeader_2.54mm +PinHeader_2x34_P2.54mm_Vertical +Through hole straight pin header, 2x34, 2.54mm pitch, double rows +Through hole pin header THT 2x34 2.54mm double row +0 +68 +68 +Connector_PinHeader_2.54mm +PinHeader_2x34_P2.54mm_Vertical_SMD +surface-mounted straight pin header, 2x34, 2.54mm pitch, double rows +Surface mounted pin header SMD 2x34 2.54mm double row +0 +68 +68 +Connector_PinHeader_2.54mm +PinHeader_2x35_P2.54mm_Horizontal +Through hole angled pin header, 2x35, 2.54mm pitch, 6mm pin length, double rows +Through hole angled pin header THT 2x35 2.54mm double row +0 +70 +70 +Connector_PinHeader_2.54mm +PinHeader_2x35_P2.54mm_Vertical +Through hole straight pin header, 2x35, 2.54mm pitch, double rows +Through hole pin header THT 2x35 2.54mm double row +0 +70 +70 +Connector_PinHeader_2.54mm +PinHeader_2x35_P2.54mm_Vertical_SMD +surface-mounted straight pin header, 2x35, 2.54mm pitch, double rows +Surface mounted pin header SMD 2x35 2.54mm double row +0 +70 +70 +Connector_PinHeader_2.54mm +PinHeader_2x36_P2.54mm_Horizontal +Through hole angled pin header, 2x36, 2.54mm pitch, 6mm pin length, double rows +Through hole angled pin header THT 2x36 2.54mm double row +0 +72 +72 +Connector_PinHeader_2.54mm +PinHeader_2x36_P2.54mm_Vertical +Through hole straight pin header, 2x36, 2.54mm pitch, double rows +Through hole pin header THT 2x36 2.54mm double row +0 +72 +72 +Connector_PinHeader_2.54mm +PinHeader_2x36_P2.54mm_Vertical_SMD +surface-mounted straight pin header, 2x36, 2.54mm pitch, double rows +Surface mounted pin header SMD 2x36 2.54mm double row +0 +72 +72 +Connector_PinHeader_2.54mm +PinHeader_2x37_P2.54mm_Horizontal +Through hole angled pin header, 2x37, 2.54mm pitch, 6mm pin length, double rows +Through hole angled pin header THT 2x37 2.54mm double row +0 +74 +74 +Connector_PinHeader_2.54mm +PinHeader_2x37_P2.54mm_Vertical +Through hole straight pin header, 2x37, 2.54mm pitch, double rows +Through hole pin header THT 2x37 2.54mm double row +0 +74 +74 +Connector_PinHeader_2.54mm +PinHeader_2x37_P2.54mm_Vertical_SMD +surface-mounted straight pin header, 2x37, 2.54mm pitch, double rows +Surface mounted pin header SMD 2x37 2.54mm double row +0 +74 +74 +Connector_PinHeader_2.54mm +PinHeader_2x38_P2.54mm_Horizontal +Through hole angled pin header, 2x38, 2.54mm pitch, 6mm pin length, double rows +Through hole angled pin header THT 2x38 2.54mm double row +0 +76 +76 +Connector_PinHeader_2.54mm +PinHeader_2x38_P2.54mm_Vertical +Through hole straight pin header, 2x38, 2.54mm pitch, double rows +Through hole pin header THT 2x38 2.54mm double row +0 +76 +76 +Connector_PinHeader_2.54mm +PinHeader_2x38_P2.54mm_Vertical_SMD +surface-mounted straight pin header, 2x38, 2.54mm pitch, double rows +Surface mounted pin header SMD 2x38 2.54mm double row +0 +76 +76 +Connector_PinHeader_2.54mm +PinHeader_2x39_P2.54mm_Horizontal +Through hole angled pin header, 2x39, 2.54mm pitch, 6mm pin length, double rows +Through hole angled pin header THT 2x39 2.54mm double row +0 +78 +78 +Connector_PinHeader_2.54mm +PinHeader_2x39_P2.54mm_Vertical +Through hole straight pin header, 2x39, 2.54mm pitch, double rows +Through hole pin header THT 2x39 2.54mm double row +0 +78 +78 +Connector_PinHeader_2.54mm +PinHeader_2x39_P2.54mm_Vertical_SMD +surface-mounted straight pin header, 2x39, 2.54mm pitch, double rows +Surface mounted pin header SMD 2x39 2.54mm double row +0 +78 +78 +Connector_PinHeader_2.54mm +PinHeader_2x40_P2.54mm_Horizontal +Through hole angled pin header, 2x40, 2.54mm pitch, 6mm pin length, double rows +Through hole angled pin header THT 2x40 2.54mm double row +0 +80 +80 +Connector_PinHeader_2.54mm +PinHeader_2x40_P2.54mm_Vertical +Through hole straight pin header, 2x40, 2.54mm pitch, double rows +Through hole pin header THT 2x40 2.54mm double row +0 +80 +80 +Connector_PinHeader_2.54mm +PinHeader_2x40_P2.54mm_Vertical_SMD +surface-mounted straight pin header, 2x40, 2.54mm pitch, double rows +Surface mounted pin header SMD 2x40 2.54mm double row +0 +80 +80 +Connector_PinSocket_1.00mm +PinSocket_1x02_P1.00mm_Vertical +Through hole straight socket strip, 1x02, 1.00mm pitch, single row (https://gct.co/files/drawings/bc065.pdf), script generated +Through hole socket strip THT 1x02 1.00mm single row +0 +2 +2 +Connector_PinSocket_1.00mm +PinSocket_1x02_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x02, 1.00mm pitch, single row, style 1 (pin 1 left) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x02 1.00mm single row style1 pin1 left +0 +2 +2 +Connector_PinSocket_1.00mm +PinSocket_1x02_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x02, 1.00mm pitch, single row, style 2 (pin 1 right) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x02 1.00mm single row style2 pin1 right +0 +2 +2 +Connector_PinSocket_1.00mm +PinSocket_1x03_P1.00mm_Vertical +Through hole straight socket strip, 1x03, 1.00mm pitch, single row (https://gct.co/files/drawings/bc065.pdf), script generated +Through hole socket strip THT 1x03 1.00mm single row +0 +3 +3 +Connector_PinSocket_1.00mm +PinSocket_1x03_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x03, 1.00mm pitch, single row, style 1 (pin 1 left) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x03 1.00mm single row style1 pin1 left +0 +3 +3 +Connector_PinSocket_1.00mm +PinSocket_1x03_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x03, 1.00mm pitch, single row, style 2 (pin 1 right) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x03 1.00mm single row style2 pin1 right +0 +3 +3 +Connector_PinSocket_1.00mm +PinSocket_1x04_P1.00mm_Vertical +Through hole straight socket strip, 1x04, 1.00mm pitch, single row (https://gct.co/files/drawings/bc065.pdf), script generated +Through hole socket strip THT 1x04 1.00mm single row +0 +4 +4 +Connector_PinSocket_1.00mm +PinSocket_1x04_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x04, 1.00mm pitch, single row, style 1 (pin 1 left) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x04 1.00mm single row style1 pin1 left +0 +4 +4 +Connector_PinSocket_1.00mm +PinSocket_1x04_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x04, 1.00mm pitch, single row, style 2 (pin 1 right) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x04 1.00mm single row style2 pin1 right +0 +4 +4 +Connector_PinSocket_1.00mm +PinSocket_1x05_P1.00mm_Vertical +Through hole straight socket strip, 1x05, 1.00mm pitch, single row (https://gct.co/files/drawings/bc065.pdf), script generated +Through hole socket strip THT 1x05 1.00mm single row +0 +5 +5 +Connector_PinSocket_1.00mm +PinSocket_1x05_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x05, 1.00mm pitch, single row, style 1 (pin 1 left) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x05 1.00mm single row style1 pin1 left +0 +5 +5 +Connector_PinSocket_1.00mm +PinSocket_1x05_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x05, 1.00mm pitch, single row, style 2 (pin 1 right) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x05 1.00mm single row style2 pin1 right +0 +5 +5 +Connector_PinSocket_1.00mm +PinSocket_1x06_P1.00mm_Vertical +Through hole straight socket strip, 1x06, 1.00mm pitch, single row (https://gct.co/files/drawings/bc065.pdf), script generated +Through hole socket strip THT 1x06 1.00mm single row +0 +6 +6 +Connector_PinSocket_1.00mm +PinSocket_1x06_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x06, 1.00mm pitch, single row, style 1 (pin 1 left) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x06 1.00mm single row style1 pin1 left +0 +6 +6 +Connector_PinSocket_1.00mm +PinSocket_1x06_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x06, 1.00mm pitch, single row, style 2 (pin 1 right) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x06 1.00mm single row style2 pin1 right +0 +6 +6 +Connector_PinSocket_1.00mm +PinSocket_1x07_P1.00mm_Vertical +Through hole straight socket strip, 1x07, 1.00mm pitch, single row (https://gct.co/files/drawings/bc065.pdf), script generated +Through hole socket strip THT 1x07 1.00mm single row +0 +7 +7 +Connector_PinSocket_1.00mm +PinSocket_1x07_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x07, 1.00mm pitch, single row, style 1 (pin 1 left) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x07 1.00mm single row style1 pin1 left +0 +7 +7 +Connector_PinSocket_1.00mm +PinSocket_1x07_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x07, 1.00mm pitch, single row, style 2 (pin 1 right) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x07 1.00mm single row style2 pin1 right +0 +7 +7 +Connector_PinSocket_1.00mm +PinSocket_1x08_P1.00mm_Vertical +Through hole straight socket strip, 1x08, 1.00mm pitch, single row (https://gct.co/files/drawings/bc065.pdf), script generated +Through hole socket strip THT 1x08 1.00mm single row +0 +8 +8 +Connector_PinSocket_1.00mm +PinSocket_1x08_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x08, 1.00mm pitch, single row, style 1 (pin 1 left) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x08 1.00mm single row style1 pin1 left +0 +8 +8 +Connector_PinSocket_1.00mm +PinSocket_1x08_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x08, 1.00mm pitch, single row, style 2 (pin 1 right) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x08 1.00mm single row style2 pin1 right +0 +8 +8 +Connector_PinSocket_1.00mm +PinSocket_1x09_P1.00mm_Vertical +Through hole straight socket strip, 1x09, 1.00mm pitch, single row (https://gct.co/files/drawings/bc065.pdf), script generated +Through hole socket strip THT 1x09 1.00mm single row +0 +9 +9 +Connector_PinSocket_1.00mm +PinSocket_1x09_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x09, 1.00mm pitch, single row, style 1 (pin 1 left) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x09 1.00mm single row style1 pin1 left +0 +9 +9 +Connector_PinSocket_1.00mm +PinSocket_1x09_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x09, 1.00mm pitch, single row, style 2 (pin 1 right) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x09 1.00mm single row style2 pin1 right +0 +9 +9 +Connector_PinSocket_1.00mm +PinSocket_1x10_P1.00mm_Vertical +Through hole straight socket strip, 1x10, 1.00mm pitch, single row (https://gct.co/files/drawings/bc065.pdf), script generated +Through hole socket strip THT 1x10 1.00mm single row +0 +10 +10 +Connector_PinSocket_1.00mm +PinSocket_1x10_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x10, 1.00mm pitch, single row, style 1 (pin 1 left) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x10 1.00mm single row style1 pin1 left +0 +10 +10 +Connector_PinSocket_1.00mm +PinSocket_1x10_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x10, 1.00mm pitch, single row, style 2 (pin 1 right) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x10 1.00mm single row style2 pin1 right +0 +10 +10 +Connector_PinSocket_1.00mm +PinSocket_1x11_P1.00mm_Vertical +Through hole straight socket strip, 1x11, 1.00mm pitch, single row (https://gct.co/files/drawings/bc065.pdf), script generated +Through hole socket strip THT 1x11 1.00mm single row +0 +11 +11 +Connector_PinSocket_1.00mm +PinSocket_1x11_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x11, 1.00mm pitch, single row, style 1 (pin 1 left) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x11 1.00mm single row style1 pin1 left +0 +11 +11 +Connector_PinSocket_1.00mm +PinSocket_1x11_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x11, 1.00mm pitch, single row, style 2 (pin 1 right) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x11 1.00mm single row style2 pin1 right +0 +11 +11 +Connector_PinSocket_1.00mm +PinSocket_1x12_P1.00mm_Vertical +Through hole straight socket strip, 1x12, 1.00mm pitch, single row (https://gct.co/files/drawings/bc065.pdf), script generated +Through hole socket strip THT 1x12 1.00mm single row +0 +12 +12 +Connector_PinSocket_1.00mm +PinSocket_1x12_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x12, 1.00mm pitch, single row, style 1 (pin 1 left) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x12 1.00mm single row style1 pin1 left +0 +12 +12 +Connector_PinSocket_1.00mm +PinSocket_1x12_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x12, 1.00mm pitch, single row, style 2 (pin 1 right) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x12 1.00mm single row style2 pin1 right +0 +12 +12 +Connector_PinSocket_1.00mm +PinSocket_1x13_P1.00mm_Vertical +Through hole straight socket strip, 1x13, 1.00mm pitch, single row (https://gct.co/files/drawings/bc065.pdf), script generated +Through hole socket strip THT 1x13 1.00mm single row +0 +13 +13 +Connector_PinSocket_1.00mm +PinSocket_1x13_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x13, 1.00mm pitch, single row, style 1 (pin 1 left) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x13 1.00mm single row style1 pin1 left +0 +13 +13 +Connector_PinSocket_1.00mm +PinSocket_1x13_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x13, 1.00mm pitch, single row, style 2 (pin 1 right) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x13 1.00mm single row style2 pin1 right +0 +13 +13 +Connector_PinSocket_1.00mm +PinSocket_1x14_P1.00mm_Vertical +Through hole straight socket strip, 1x14, 1.00mm pitch, single row (https://gct.co/files/drawings/bc065.pdf), script generated +Through hole socket strip THT 1x14 1.00mm single row +0 +14 +14 +Connector_PinSocket_1.00mm +PinSocket_1x14_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x14, 1.00mm pitch, single row, style 1 (pin 1 left) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x14 1.00mm single row style1 pin1 left +0 +14 +14 +Connector_PinSocket_1.00mm +PinSocket_1x14_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x14, 1.00mm pitch, single row, style 2 (pin 1 right) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x14 1.00mm single row style2 pin1 right +0 +14 +14 +Connector_PinSocket_1.00mm +PinSocket_1x15_P1.00mm_Vertical +Through hole straight socket strip, 1x15, 1.00mm pitch, single row (https://gct.co/files/drawings/bc065.pdf), script generated +Through hole socket strip THT 1x15 1.00mm single row +0 +15 +15 +Connector_PinSocket_1.00mm +PinSocket_1x15_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x15, 1.00mm pitch, single row, style 1 (pin 1 left) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x15 1.00mm single row style1 pin1 left +0 +15 +15 +Connector_PinSocket_1.00mm +PinSocket_1x15_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x15, 1.00mm pitch, single row, style 2 (pin 1 right) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x15 1.00mm single row style2 pin1 right +0 +15 +15 +Connector_PinSocket_1.00mm +PinSocket_1x16_P1.00mm_Vertical +Through hole straight socket strip, 1x16, 1.00mm pitch, single row (https://gct.co/files/drawings/bc065.pdf), script generated +Through hole socket strip THT 1x16 1.00mm single row +0 +16 +16 +Connector_PinSocket_1.00mm +PinSocket_1x16_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x16, 1.00mm pitch, single row, style 1 (pin 1 left) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x16 1.00mm single row style1 pin1 left +0 +16 +16 +Connector_PinSocket_1.00mm +PinSocket_1x16_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x16, 1.00mm pitch, single row, style 2 (pin 1 right) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x16 1.00mm single row style2 pin1 right +0 +16 +16 +Connector_PinSocket_1.00mm +PinSocket_1x17_P1.00mm_Vertical +Through hole straight socket strip, 1x17, 1.00mm pitch, single row (https://gct.co/files/drawings/bc065.pdf), script generated +Through hole socket strip THT 1x17 1.00mm single row +0 +17 +17 +Connector_PinSocket_1.00mm +PinSocket_1x17_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x17, 1.00mm pitch, single row, style 1 (pin 1 left) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x17 1.00mm single row style1 pin1 left +0 +17 +17 +Connector_PinSocket_1.00mm +PinSocket_1x17_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x17, 1.00mm pitch, single row, style 2 (pin 1 right) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x17 1.00mm single row style2 pin1 right +0 +17 +17 +Connector_PinSocket_1.00mm +PinSocket_1x18_P1.00mm_Vertical +Through hole straight socket strip, 1x18, 1.00mm pitch, single row (https://gct.co/files/drawings/bc065.pdf), script generated +Through hole socket strip THT 1x18 1.00mm single row +0 +18 +18 +Connector_PinSocket_1.00mm +PinSocket_1x18_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x18, 1.00mm pitch, single row, style 1 (pin 1 left) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x18 1.00mm single row style1 pin1 left +0 +18 +18 +Connector_PinSocket_1.00mm +PinSocket_1x18_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x18, 1.00mm pitch, single row, style 2 (pin 1 right) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x18 1.00mm single row style2 pin1 right +0 +18 +18 +Connector_PinSocket_1.00mm +PinSocket_1x19_P1.00mm_Vertical +Through hole straight socket strip, 1x19, 1.00mm pitch, single row (https://gct.co/files/drawings/bc065.pdf), script generated +Through hole socket strip THT 1x19 1.00mm single row +0 +19 +19 +Connector_PinSocket_1.00mm +PinSocket_1x19_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x19, 1.00mm pitch, single row, style 1 (pin 1 left) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x19 1.00mm single row style1 pin1 left +0 +19 +19 +Connector_PinSocket_1.00mm +PinSocket_1x19_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x19, 1.00mm pitch, single row, style 2 (pin 1 right) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x19 1.00mm single row style2 pin1 right +0 +19 +19 +Connector_PinSocket_1.00mm +PinSocket_1x20_P1.00mm_Vertical +Through hole straight socket strip, 1x20, 1.00mm pitch, single row (https://gct.co/files/drawings/bc065.pdf), script generated +Through hole socket strip THT 1x20 1.00mm single row +0 +20 +20 +Connector_PinSocket_1.00mm +PinSocket_1x20_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x20, 1.00mm pitch, single row, style 1 (pin 1 left) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x20 1.00mm single row style1 pin1 left +0 +20 +20 +Connector_PinSocket_1.00mm +PinSocket_1x20_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x20, 1.00mm pitch, single row, style 2 (pin 1 right) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x20 1.00mm single row style2 pin1 right +0 +20 +20 +Connector_PinSocket_1.00mm +PinSocket_1x21_P1.00mm_Vertical +Through hole straight socket strip, 1x21, 1.00mm pitch, single row (https://gct.co/files/drawings/bc065.pdf), script generated +Through hole socket strip THT 1x21 1.00mm single row +0 +21 +21 +Connector_PinSocket_1.00mm +PinSocket_1x21_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x21, 1.00mm pitch, single row, style 1 (pin 1 left) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x21 1.00mm single row style1 pin1 left +0 +21 +21 +Connector_PinSocket_1.00mm +PinSocket_1x21_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x21, 1.00mm pitch, single row, style 2 (pin 1 right) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x21 1.00mm single row style2 pin1 right +0 +21 +21 +Connector_PinSocket_1.00mm +PinSocket_1x22_P1.00mm_Vertical +Through hole straight socket strip, 1x22, 1.00mm pitch, single row (https://gct.co/files/drawings/bc065.pdf), script generated +Through hole socket strip THT 1x22 1.00mm single row +0 +22 +22 +Connector_PinSocket_1.00mm +PinSocket_1x22_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x22, 1.00mm pitch, single row, style 1 (pin 1 left) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x22 1.00mm single row style1 pin1 left +0 +22 +22 +Connector_PinSocket_1.00mm +PinSocket_1x22_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x22, 1.00mm pitch, single row, style 2 (pin 1 right) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x22 1.00mm single row style2 pin1 right +0 +22 +22 +Connector_PinSocket_1.00mm +PinSocket_1x23_P1.00mm_Vertical +Through hole straight socket strip, 1x23, 1.00mm pitch, single row (https://gct.co/files/drawings/bc065.pdf), script generated +Through hole socket strip THT 1x23 1.00mm single row +0 +23 +23 +Connector_PinSocket_1.00mm +PinSocket_1x23_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x23, 1.00mm pitch, single row, style 1 (pin 1 left) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x23 1.00mm single row style1 pin1 left +0 +23 +23 +Connector_PinSocket_1.00mm +PinSocket_1x23_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x23, 1.00mm pitch, single row, style 2 (pin 1 right) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x23 1.00mm single row style2 pin1 right +0 +23 +23 +Connector_PinSocket_1.00mm +PinSocket_1x24_P1.00mm_Vertical +Through hole straight socket strip, 1x24, 1.00mm pitch, single row (https://gct.co/files/drawings/bc065.pdf), script generated +Through hole socket strip THT 1x24 1.00mm single row +0 +24 +24 +Connector_PinSocket_1.00mm +PinSocket_1x24_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x24, 1.00mm pitch, single row, style 1 (pin 1 left) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x24 1.00mm single row style1 pin1 left +0 +24 +24 +Connector_PinSocket_1.00mm +PinSocket_1x24_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x24, 1.00mm pitch, single row, style 2 (pin 1 right) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x24 1.00mm single row style2 pin1 right +0 +24 +24 +Connector_PinSocket_1.00mm +PinSocket_1x25_P1.00mm_Vertical +Through hole straight socket strip, 1x25, 1.00mm pitch, single row (https://gct.co/files/drawings/bc065.pdf), script generated +Through hole socket strip THT 1x25 1.00mm single row +0 +25 +25 +Connector_PinSocket_1.00mm +PinSocket_1x25_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x25, 1.00mm pitch, single row, style 1 (pin 1 left) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x25 1.00mm single row style1 pin1 left +0 +25 +25 +Connector_PinSocket_1.00mm +PinSocket_1x25_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x25, 1.00mm pitch, single row, style 2 (pin 1 right) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x25 1.00mm single row style2 pin1 right +0 +25 +25 +Connector_PinSocket_1.00mm +PinSocket_1x26_P1.00mm_Vertical +Through hole straight socket strip, 1x26, 1.00mm pitch, single row (https://gct.co/files/drawings/bc065.pdf), script generated +Through hole socket strip THT 1x26 1.00mm single row +0 +26 +26 +Connector_PinSocket_1.00mm +PinSocket_1x26_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x26, 1.00mm pitch, single row, style 1 (pin 1 left) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x26 1.00mm single row style1 pin1 left +0 +26 +26 +Connector_PinSocket_1.00mm +PinSocket_1x26_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x26, 1.00mm pitch, single row, style 2 (pin 1 right) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x26 1.00mm single row style2 pin1 right +0 +26 +26 +Connector_PinSocket_1.00mm +PinSocket_1x27_P1.00mm_Vertical +Through hole straight socket strip, 1x27, 1.00mm pitch, single row (https://gct.co/files/drawings/bc065.pdf), script generated +Through hole socket strip THT 1x27 1.00mm single row +0 +27 +27 +Connector_PinSocket_1.00mm +PinSocket_1x27_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x27, 1.00mm pitch, single row, style 1 (pin 1 left) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x27 1.00mm single row style1 pin1 left +0 +27 +27 +Connector_PinSocket_1.00mm +PinSocket_1x27_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x27, 1.00mm pitch, single row, style 2 (pin 1 right) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x27 1.00mm single row style2 pin1 right +0 +27 +27 +Connector_PinSocket_1.00mm +PinSocket_1x28_P1.00mm_Vertical +Through hole straight socket strip, 1x28, 1.00mm pitch, single row (https://gct.co/files/drawings/bc065.pdf), script generated +Through hole socket strip THT 1x28 1.00mm single row +0 +28 +28 +Connector_PinSocket_1.00mm +PinSocket_1x28_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x28, 1.00mm pitch, single row, style 1 (pin 1 left) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x28 1.00mm single row style1 pin1 left +0 +28 +28 +Connector_PinSocket_1.00mm +PinSocket_1x28_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x28, 1.00mm pitch, single row, style 2 (pin 1 right) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x28 1.00mm single row style2 pin1 right +0 +28 +28 +Connector_PinSocket_1.00mm +PinSocket_1x29_P1.00mm_Vertical +Through hole straight socket strip, 1x29, 1.00mm pitch, single row (https://gct.co/files/drawings/bc065.pdf), script generated +Through hole socket strip THT 1x29 1.00mm single row +0 +29 +29 +Connector_PinSocket_1.00mm +PinSocket_1x29_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x29, 1.00mm pitch, single row, style 1 (pin 1 left) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x29 1.00mm single row style1 pin1 left +0 +29 +29 +Connector_PinSocket_1.00mm +PinSocket_1x29_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x29, 1.00mm pitch, single row, style 2 (pin 1 right) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x29 1.00mm single row style2 pin1 right +0 +29 +29 +Connector_PinSocket_1.00mm +PinSocket_1x30_P1.00mm_Vertical +Through hole straight socket strip, 1x30, 1.00mm pitch, single row (https://gct.co/files/drawings/bc065.pdf), script generated +Through hole socket strip THT 1x30 1.00mm single row +0 +30 +30 +Connector_PinSocket_1.00mm +PinSocket_1x30_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x30, 1.00mm pitch, single row, style 1 (pin 1 left) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x30 1.00mm single row style1 pin1 left +0 +30 +30 +Connector_PinSocket_1.00mm +PinSocket_1x30_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x30, 1.00mm pitch, single row, style 2 (pin 1 right) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x30 1.00mm single row style2 pin1 right +0 +30 +30 +Connector_PinSocket_1.00mm +PinSocket_1x31_P1.00mm_Vertical +Through hole straight socket strip, 1x31, 1.00mm pitch, single row (https://gct.co/files/drawings/bc065.pdf), script generated +Through hole socket strip THT 1x31 1.00mm single row +0 +31 +31 +Connector_PinSocket_1.00mm +PinSocket_1x31_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x31, 1.00mm pitch, single row, style 1 (pin 1 left) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x31 1.00mm single row style1 pin1 left +0 +31 +31 +Connector_PinSocket_1.00mm +PinSocket_1x31_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x31, 1.00mm pitch, single row, style 2 (pin 1 right) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x31 1.00mm single row style2 pin1 right +0 +31 +31 +Connector_PinSocket_1.00mm +PinSocket_1x32_P1.00mm_Vertical +Through hole straight socket strip, 1x32, 1.00mm pitch, single row (https://gct.co/files/drawings/bc065.pdf), script generated +Through hole socket strip THT 1x32 1.00mm single row +0 +32 +32 +Connector_PinSocket_1.00mm +PinSocket_1x32_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x32, 1.00mm pitch, single row, style 1 (pin 1 left) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x32 1.00mm single row style1 pin1 left +0 +32 +32 +Connector_PinSocket_1.00mm +PinSocket_1x32_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x32, 1.00mm pitch, single row, style 2 (pin 1 right) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x32 1.00mm single row style2 pin1 right +0 +32 +32 +Connector_PinSocket_1.00mm +PinSocket_1x33_P1.00mm_Vertical +Through hole straight socket strip, 1x33, 1.00mm pitch, single row (https://gct.co/files/drawings/bc065.pdf), script generated +Through hole socket strip THT 1x33 1.00mm single row +0 +33 +33 +Connector_PinSocket_1.00mm +PinSocket_1x33_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x33, 1.00mm pitch, single row, style 1 (pin 1 left) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x33 1.00mm single row style1 pin1 left +0 +33 +33 +Connector_PinSocket_1.00mm +PinSocket_1x33_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x33, 1.00mm pitch, single row, style 2 (pin 1 right) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x33 1.00mm single row style2 pin1 right +0 +33 +33 +Connector_PinSocket_1.00mm +PinSocket_1x34_P1.00mm_Vertical +Through hole straight socket strip, 1x34, 1.00mm pitch, single row (https://gct.co/files/drawings/bc065.pdf), script generated +Through hole socket strip THT 1x34 1.00mm single row +0 +34 +34 +Connector_PinSocket_1.00mm +PinSocket_1x34_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x34, 1.00mm pitch, single row, style 1 (pin 1 left) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x34 1.00mm single row style1 pin1 left +0 +34 +34 +Connector_PinSocket_1.00mm +PinSocket_1x34_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x34, 1.00mm pitch, single row, style 2 (pin 1 right) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x34 1.00mm single row style2 pin1 right +0 +34 +34 +Connector_PinSocket_1.00mm +PinSocket_1x35_P1.00mm_Vertical +Through hole straight socket strip, 1x35, 1.00mm pitch, single row (https://gct.co/files/drawings/bc065.pdf), script generated +Through hole socket strip THT 1x35 1.00mm single row +0 +35 +35 +Connector_PinSocket_1.00mm +PinSocket_1x35_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x35, 1.00mm pitch, single row, style 1 (pin 1 left) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x35 1.00mm single row style1 pin1 left +0 +35 +35 +Connector_PinSocket_1.00mm +PinSocket_1x35_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x35, 1.00mm pitch, single row, style 2 (pin 1 right) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x35 1.00mm single row style2 pin1 right +0 +35 +35 +Connector_PinSocket_1.00mm +PinSocket_1x36_P1.00mm_Vertical +Through hole straight socket strip, 1x36, 1.00mm pitch, single row (https://gct.co/files/drawings/bc065.pdf), script generated +Through hole socket strip THT 1x36 1.00mm single row +0 +36 +36 +Connector_PinSocket_1.00mm +PinSocket_1x36_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x36, 1.00mm pitch, single row, style 1 (pin 1 left) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x36 1.00mm single row style1 pin1 left +0 +36 +36 +Connector_PinSocket_1.00mm +PinSocket_1x36_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x36, 1.00mm pitch, single row, style 2 (pin 1 right) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x36 1.00mm single row style2 pin1 right +0 +36 +36 +Connector_PinSocket_1.00mm +PinSocket_1x37_P1.00mm_Vertical +Through hole straight socket strip, 1x37, 1.00mm pitch, single row (https://gct.co/files/drawings/bc065.pdf), script generated +Through hole socket strip THT 1x37 1.00mm single row +0 +37 +37 +Connector_PinSocket_1.00mm +PinSocket_1x37_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x37, 1.00mm pitch, single row, style 1 (pin 1 left) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x37 1.00mm single row style1 pin1 left +0 +37 +37 +Connector_PinSocket_1.00mm +PinSocket_1x37_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x37, 1.00mm pitch, single row, style 2 (pin 1 right) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x37 1.00mm single row style2 pin1 right +0 +37 +37 +Connector_PinSocket_1.00mm +PinSocket_1x38_P1.00mm_Vertical +Through hole straight socket strip, 1x38, 1.00mm pitch, single row (https://gct.co/files/drawings/bc065.pdf), script generated +Through hole socket strip THT 1x38 1.00mm single row +0 +38 +38 +Connector_PinSocket_1.00mm +PinSocket_1x38_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x38, 1.00mm pitch, single row, style 1 (pin 1 left) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x38 1.00mm single row style1 pin1 left +0 +38 +38 +Connector_PinSocket_1.00mm +PinSocket_1x38_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x38, 1.00mm pitch, single row, style 2 (pin 1 right) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x38 1.00mm single row style2 pin1 right +0 +38 +38 +Connector_PinSocket_1.00mm +PinSocket_1x39_P1.00mm_Vertical +Through hole straight socket strip, 1x39, 1.00mm pitch, single row (https://gct.co/files/drawings/bc065.pdf), script generated +Through hole socket strip THT 1x39 1.00mm single row +0 +39 +39 +Connector_PinSocket_1.00mm +PinSocket_1x39_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x39, 1.00mm pitch, single row, style 1 (pin 1 left) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x39 1.00mm single row style1 pin1 left +0 +39 +39 +Connector_PinSocket_1.00mm +PinSocket_1x39_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x39, 1.00mm pitch, single row, style 2 (pin 1 right) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x39 1.00mm single row style2 pin1 right +0 +39 +39 +Connector_PinSocket_1.00mm +PinSocket_1x40_P1.00mm_Vertical +Through hole straight socket strip, 1x40, 1.00mm pitch, single row (https://gct.co/files/drawings/bc065.pdf), script generated +Through hole socket strip THT 1x40 1.00mm single row +0 +40 +40 +Connector_PinSocket_1.00mm +PinSocket_1x40_P1.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x40, 1.00mm pitch, single row, style 1 (pin 1 left) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x40 1.00mm single row style1 pin1 left +0 +40 +40 +Connector_PinSocket_1.00mm +PinSocket_1x40_P1.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x40, 1.00mm pitch, single row, style 2 (pin 1 right) (https://gct.co/files/drawings/bc070.pdf), script generated +Surface mounted socket strip SMD 1x40 1.00mm single row style2 pin1 right +0 +40 +40 +Connector_PinSocket_1.00mm +PinSocket_2x02_P1.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x02, 1.00mm pitch, double cols (https://gct.co/files/drawings/bc085.pdf), script generated +Surface mounted socket strip SMD 2x02 1.00mm double row +0 +4 +4 +Connector_PinSocket_1.00mm +PinSocket_2x03_P1.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x03, 1.00mm pitch, double cols (https://gct.co/files/drawings/bc085.pdf), script generated +Surface mounted socket strip SMD 2x03 1.00mm double row +0 +6 +6 +Connector_PinSocket_1.00mm +PinSocket_2x04_P1.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x04, 1.00mm pitch, double cols (https://gct.co/files/drawings/bc085.pdf), script generated +Surface mounted socket strip SMD 2x04 1.00mm double row +0 +8 +8 +Connector_PinSocket_1.00mm +PinSocket_2x05_P1.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x05, 1.00mm pitch, double cols (https://gct.co/files/drawings/bc085.pdf), script generated +Surface mounted socket strip SMD 2x05 1.00mm double row +0 +10 +10 +Connector_PinSocket_1.00mm +PinSocket_2x06_P1.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x06, 1.00mm pitch, double cols (https://gct.co/files/drawings/bc085.pdf), script generated +Surface mounted socket strip SMD 2x06 1.00mm double row +0 +12 +12 +Connector_PinSocket_1.00mm +PinSocket_2x07_P1.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x07, 1.00mm pitch, double cols (https://gct.co/files/drawings/bc085.pdf), script generated +Surface mounted socket strip SMD 2x07 1.00mm double row +0 +14 +14 +Connector_PinSocket_1.00mm +PinSocket_2x08_P1.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x08, 1.00mm pitch, double cols (https://gct.co/files/drawings/bc085.pdf), script generated +Surface mounted socket strip SMD 2x08 1.00mm double row +0 +16 +16 +Connector_PinSocket_1.00mm +PinSocket_2x09_P1.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x09, 1.00mm pitch, double cols (https://gct.co/files/drawings/bc085.pdf), script generated +Surface mounted socket strip SMD 2x09 1.00mm double row +0 +18 +18 +Connector_PinSocket_1.00mm +PinSocket_2x10_P1.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x10, 1.00mm pitch, double cols (https://gct.co/files/drawings/bc085.pdf), script generated +Surface mounted socket strip SMD 2x10 1.00mm double row +0 +20 +20 +Connector_PinSocket_1.00mm +PinSocket_2x11_P1.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x11, 1.00mm pitch, double cols (https://gct.co/files/drawings/bc085.pdf), script generated +Surface mounted socket strip SMD 2x11 1.00mm double row +0 +22 +22 +Connector_PinSocket_1.00mm +PinSocket_2x12_P1.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x12, 1.00mm pitch, double cols (https://gct.co/files/drawings/bc085.pdf), script generated +Surface mounted socket strip SMD 2x12 1.00mm double row +0 +24 +24 +Connector_PinSocket_1.00mm +PinSocket_2x13_P1.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x13, 1.00mm pitch, double cols (https://gct.co/files/drawings/bc085.pdf), script generated +Surface mounted socket strip SMD 2x13 1.00mm double row +0 +26 +26 +Connector_PinSocket_1.00mm +PinSocket_2x14_P1.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x14, 1.00mm pitch, double cols (https://gct.co/files/drawings/bc085.pdf), script generated +Surface mounted socket strip SMD 2x14 1.00mm double row +0 +28 +28 +Connector_PinSocket_1.00mm +PinSocket_2x15_P1.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x15, 1.00mm pitch, double cols (https://gct.co/files/drawings/bc085.pdf), script generated +Surface mounted socket strip SMD 2x15 1.00mm double row +0 +30 +30 +Connector_PinSocket_1.00mm +PinSocket_2x16_P1.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x16, 1.00mm pitch, double cols (https://gct.co/files/drawings/bc085.pdf), script generated +Surface mounted socket strip SMD 2x16 1.00mm double row +0 +32 +32 +Connector_PinSocket_1.00mm +PinSocket_2x17_P1.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x17, 1.00mm pitch, double cols (https://gct.co/files/drawings/bc085.pdf), script generated +Surface mounted socket strip SMD 2x17 1.00mm double row +0 +34 +34 +Connector_PinSocket_1.00mm +PinSocket_2x18_P1.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x18, 1.00mm pitch, double cols (https://gct.co/files/drawings/bc085.pdf), script generated +Surface mounted socket strip SMD 2x18 1.00mm double row +0 +36 +36 +Connector_PinSocket_1.00mm +PinSocket_2x19_P1.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x19, 1.00mm pitch, double cols (https://gct.co/files/drawings/bc085.pdf), script generated +Surface mounted socket strip SMD 2x19 1.00mm double row +0 +38 +38 +Connector_PinSocket_1.00mm +PinSocket_2x20_P1.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x20, 1.00mm pitch, double cols (https://gct.co/files/drawings/bc085.pdf), script generated +Surface mounted socket strip SMD 2x20 1.00mm double row +0 +40 +40 +Connector_PinSocket_1.00mm +PinSocket_2x21_P1.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x21, 1.00mm pitch, double cols (https://gct.co/files/drawings/bc085.pdf), script generated +Surface mounted socket strip SMD 2x21 1.00mm double row +0 +42 +42 +Connector_PinSocket_1.00mm +PinSocket_2x22_P1.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x22, 1.00mm pitch, double cols (https://gct.co/files/drawings/bc085.pdf), script generated +Surface mounted socket strip SMD 2x22 1.00mm double row +0 +44 +44 +Connector_PinSocket_1.00mm +PinSocket_2x23_P1.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x23, 1.00mm pitch, double cols (https://gct.co/files/drawings/bc085.pdf), script generated +Surface mounted socket strip SMD 2x23 1.00mm double row +0 +46 +46 +Connector_PinSocket_1.00mm +PinSocket_2x24_P1.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x24, 1.00mm pitch, double cols (https://gct.co/files/drawings/bc085.pdf), script generated +Surface mounted socket strip SMD 2x24 1.00mm double row +0 +48 +48 +Connector_PinSocket_1.00mm +PinSocket_2x25_P1.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x25, 1.00mm pitch, double cols (https://gct.co/files/drawings/bc085.pdf), script generated +Surface mounted socket strip SMD 2x25 1.00mm double row +0 +50 +50 +Connector_PinSocket_1.00mm +PinSocket_2x26_P1.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x26, 1.00mm pitch, double cols (https://gct.co/files/drawings/bc085.pdf), script generated +Surface mounted socket strip SMD 2x26 1.00mm double row +0 +52 +52 +Connector_PinSocket_1.00mm +PinSocket_2x27_P1.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x27, 1.00mm pitch, double cols (https://gct.co/files/drawings/bc085.pdf), script generated +Surface mounted socket strip SMD 2x27 1.00mm double row +0 +54 +54 +Connector_PinSocket_1.00mm +PinSocket_2x28_P1.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x28, 1.00mm pitch, double cols (https://gct.co/files/drawings/bc085.pdf), script generated +Surface mounted socket strip SMD 2x28 1.00mm double row +0 +56 +56 +Connector_PinSocket_1.00mm +PinSocket_2x29_P1.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x29, 1.00mm pitch, double cols (https://gct.co/files/drawings/bc085.pdf), script generated +Surface mounted socket strip SMD 2x29 1.00mm double row +0 +58 +58 +Connector_PinSocket_1.00mm +PinSocket_2x30_P1.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x30, 1.00mm pitch, double cols (https://gct.co/files/drawings/bc085.pdf), script generated +Surface mounted socket strip SMD 2x30 1.00mm double row +0 +60 +60 +Connector_PinSocket_1.00mm +PinSocket_2x31_P1.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x31, 1.00mm pitch, double cols (https://gct.co/files/drawings/bc085.pdf), script generated +Surface mounted socket strip SMD 2x31 1.00mm double row +0 +62 +62 +Connector_PinSocket_1.00mm +PinSocket_2x32_P1.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x32, 1.00mm pitch, double cols (https://gct.co/files/drawings/bc085.pdf), script generated +Surface mounted socket strip SMD 2x32 1.00mm double row +0 +64 +64 +Connector_PinSocket_1.00mm +PinSocket_2x33_P1.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x33, 1.00mm pitch, double cols (https://gct.co/files/drawings/bc085.pdf), script generated +Surface mounted socket strip SMD 2x33 1.00mm double row +0 +66 +66 +Connector_PinSocket_1.00mm +PinSocket_2x34_P1.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x34, 1.00mm pitch, double cols (https://gct.co/files/drawings/bc085.pdf), script generated +Surface mounted socket strip SMD 2x34 1.00mm double row +0 +68 +68 +Connector_PinSocket_1.00mm +PinSocket_2x35_P1.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x35, 1.00mm pitch, double cols (https://gct.co/files/drawings/bc085.pdf), script generated +Surface mounted socket strip SMD 2x35 1.00mm double row +0 +70 +70 +Connector_PinSocket_1.00mm +PinSocket_2x36_P1.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x36, 1.00mm pitch, double cols (https://gct.co/files/drawings/bc085.pdf), script generated +Surface mounted socket strip SMD 2x36 1.00mm double row +0 +72 +72 +Connector_PinSocket_1.00mm +PinSocket_2x37_P1.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x37, 1.00mm pitch, double cols (https://gct.co/files/drawings/bc085.pdf), script generated +Surface mounted socket strip SMD 2x37 1.00mm double row +0 +74 +74 +Connector_PinSocket_1.00mm +PinSocket_2x38_P1.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x38, 1.00mm pitch, double cols (https://gct.co/files/drawings/bc085.pdf), script generated +Surface mounted socket strip SMD 2x38 1.00mm double row +0 +76 +76 +Connector_PinSocket_1.00mm +PinSocket_2x39_P1.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x39, 1.00mm pitch, double cols (https://gct.co/files/drawings/bc085.pdf), script generated +Surface mounted socket strip SMD 2x39 1.00mm double row +0 +78 +78 +Connector_PinSocket_1.00mm +PinSocket_2x40_P1.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x40, 1.00mm pitch, double cols (https://gct.co/files/drawings/bc085.pdf), script generated +Surface mounted socket strip SMD 2x40 1.00mm double row +0 +80 +80 +Connector_PinSocket_1.27mm +PinSocket_1x01_P1.27mm_Vertical +Through hole straight socket strip, 1x01, 1.27mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x01 1.27mm single row +0 +1 +1 +Connector_PinSocket_1.27mm +PinSocket_1x02_P1.27mm_Vertical +Through hole straight socket strip, 1x02, 1.27mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x02 1.27mm single row +0 +2 +2 +Connector_PinSocket_1.27mm +PinSocket_1x02_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x02, 1.27mm pitch, single row, style 1 (pin 1 left) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x02 1.27mm single row style1 pin1 left +0 +2 +2 +Connector_PinSocket_1.27mm +PinSocket_1x02_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x02, 1.27mm pitch, single row, style 2 (pin 1 right) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x02 1.27mm single row style2 pin1 right +0 +2 +2 +Connector_PinSocket_1.27mm +PinSocket_1x03_P1.27mm_Vertical +Through hole straight socket strip, 1x03, 1.27mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x03 1.27mm single row +0 +3 +3 +Connector_PinSocket_1.27mm +PinSocket_1x03_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x03, 1.27mm pitch, single row, style 1 (pin 1 left) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x03 1.27mm single row style1 pin1 left +0 +3 +3 +Connector_PinSocket_1.27mm +PinSocket_1x03_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x03, 1.27mm pitch, single row, style 2 (pin 1 right) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x03 1.27mm single row style2 pin1 right +0 +3 +3 +Connector_PinSocket_1.27mm +PinSocket_1x04_P1.27mm_Vertical +Through hole straight socket strip, 1x04, 1.27mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x04 1.27mm single row +0 +4 +4 +Connector_PinSocket_1.27mm +PinSocket_1x04_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x04, 1.27mm pitch, single row, style 1 (pin 1 left) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x04 1.27mm single row style1 pin1 left +0 +4 +4 +Connector_PinSocket_1.27mm +PinSocket_1x04_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x04, 1.27mm pitch, single row, style 2 (pin 1 right) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x04 1.27mm single row style2 pin1 right +0 +4 +4 +Connector_PinSocket_1.27mm +PinSocket_1x05_P1.27mm_Vertical +Through hole straight socket strip, 1x05, 1.27mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x05 1.27mm single row +0 +5 +5 +Connector_PinSocket_1.27mm +PinSocket_1x05_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x05, 1.27mm pitch, single row, style 1 (pin 1 left) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x05 1.27mm single row style1 pin1 left +0 +5 +5 +Connector_PinSocket_1.27mm +PinSocket_1x05_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x05, 1.27mm pitch, single row, style 2 (pin 1 right) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x05 1.27mm single row style2 pin1 right +0 +5 +5 +Connector_PinSocket_1.27mm +PinSocket_1x06_P1.27mm_Vertical +Through hole straight socket strip, 1x06, 1.27mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x06 1.27mm single row +0 +6 +6 +Connector_PinSocket_1.27mm +PinSocket_1x06_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x06, 1.27mm pitch, single row, style 1 (pin 1 left) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x06 1.27mm single row style1 pin1 left +0 +6 +6 +Connector_PinSocket_1.27mm +PinSocket_1x06_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x06, 1.27mm pitch, single row, style 2 (pin 1 right) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x06 1.27mm single row style2 pin1 right +0 +6 +6 +Connector_PinSocket_1.27mm +PinSocket_1x07_P1.27mm_Vertical +Through hole straight socket strip, 1x07, 1.27mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x07 1.27mm single row +0 +7 +7 +Connector_PinSocket_1.27mm +PinSocket_1x07_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x07, 1.27mm pitch, single row, style 1 (pin 1 left) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x07 1.27mm single row style1 pin1 left +0 +7 +7 +Connector_PinSocket_1.27mm +PinSocket_1x07_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x07, 1.27mm pitch, single row, style 2 (pin 1 right) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x07 1.27mm single row style2 pin1 right +0 +7 +7 +Connector_PinSocket_1.27mm +PinSocket_1x08_P1.27mm_Vertical +Through hole straight socket strip, 1x08, 1.27mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x08 1.27mm single row +0 +8 +8 +Connector_PinSocket_1.27mm +PinSocket_1x08_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x08, 1.27mm pitch, single row, style 1 (pin 1 left) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x08 1.27mm single row style1 pin1 left +0 +8 +8 +Connector_PinSocket_1.27mm +PinSocket_1x08_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x08, 1.27mm pitch, single row, style 2 (pin 1 right) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x08 1.27mm single row style2 pin1 right +0 +8 +8 +Connector_PinSocket_1.27mm +PinSocket_1x09_P1.27mm_Vertical +Through hole straight socket strip, 1x09, 1.27mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x09 1.27mm single row +0 +9 +9 +Connector_PinSocket_1.27mm +PinSocket_1x09_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x09, 1.27mm pitch, single row, style 1 (pin 1 left) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x09 1.27mm single row style1 pin1 left +0 +9 +9 +Connector_PinSocket_1.27mm +PinSocket_1x09_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x09, 1.27mm pitch, single row, style 2 (pin 1 right) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x09 1.27mm single row style2 pin1 right +0 +9 +9 +Connector_PinSocket_1.27mm +PinSocket_1x10_P1.27mm_Vertical +Through hole straight socket strip, 1x10, 1.27mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x10 1.27mm single row +0 +10 +10 +Connector_PinSocket_1.27mm +PinSocket_1x10_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x10, 1.27mm pitch, single row, style 1 (pin 1 left) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x10 1.27mm single row style1 pin1 left +0 +10 +10 +Connector_PinSocket_1.27mm +PinSocket_1x10_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x10, 1.27mm pitch, single row, style 2 (pin 1 right) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x10 1.27mm single row style2 pin1 right +0 +10 +10 +Connector_PinSocket_1.27mm +PinSocket_1x11_P1.27mm_Vertical +Through hole straight socket strip, 1x11, 1.27mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x11 1.27mm single row +0 +11 +11 +Connector_PinSocket_1.27mm +PinSocket_1x11_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x11, 1.27mm pitch, single row, style 1 (pin 1 left) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x11 1.27mm single row style1 pin1 left +0 +11 +11 +Connector_PinSocket_1.27mm +PinSocket_1x11_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x11, 1.27mm pitch, single row, style 2 (pin 1 right) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x11 1.27mm single row style2 pin1 right +0 +11 +11 +Connector_PinSocket_1.27mm +PinSocket_1x12_P1.27mm_Vertical +Through hole straight socket strip, 1x12, 1.27mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x12 1.27mm single row +0 +12 +12 +Connector_PinSocket_1.27mm +PinSocket_1x12_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x12, 1.27mm pitch, single row, style 1 (pin 1 left) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x12 1.27mm single row style1 pin1 left +0 +12 +12 +Connector_PinSocket_1.27mm +PinSocket_1x12_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x12, 1.27mm pitch, single row, style 2 (pin 1 right) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x12 1.27mm single row style2 pin1 right +0 +12 +12 +Connector_PinSocket_1.27mm +PinSocket_1x13_P1.27mm_Vertical +Through hole straight socket strip, 1x13, 1.27mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x13 1.27mm single row +0 +13 +13 +Connector_PinSocket_1.27mm +PinSocket_1x13_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x13, 1.27mm pitch, single row, style 1 (pin 1 left) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x13 1.27mm single row style1 pin1 left +0 +13 +13 +Connector_PinSocket_1.27mm +PinSocket_1x13_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x13, 1.27mm pitch, single row, style 2 (pin 1 right) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x13 1.27mm single row style2 pin1 right +0 +13 +13 +Connector_PinSocket_1.27mm +PinSocket_1x14_P1.27mm_Vertical +Through hole straight socket strip, 1x14, 1.27mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x14 1.27mm single row +0 +14 +14 +Connector_PinSocket_1.27mm +PinSocket_1x14_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x14, 1.27mm pitch, single row, style 1 (pin 1 left) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x14 1.27mm single row style1 pin1 left +0 +14 +14 +Connector_PinSocket_1.27mm +PinSocket_1x14_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x14, 1.27mm pitch, single row, style 2 (pin 1 right) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x14 1.27mm single row style2 pin1 right +0 +14 +14 +Connector_PinSocket_1.27mm +PinSocket_1x15_P1.27mm_Vertical +Through hole straight socket strip, 1x15, 1.27mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x15 1.27mm single row +0 +15 +15 +Connector_PinSocket_1.27mm +PinSocket_1x15_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x15, 1.27mm pitch, single row, style 1 (pin 1 left) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x15 1.27mm single row style1 pin1 left +0 +15 +15 +Connector_PinSocket_1.27mm +PinSocket_1x15_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x15, 1.27mm pitch, single row, style 2 (pin 1 right) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x15 1.27mm single row style2 pin1 right +0 +15 +15 +Connector_PinSocket_1.27mm +PinSocket_1x16_P1.27mm_Vertical +Through hole straight socket strip, 1x16, 1.27mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x16 1.27mm single row +0 +16 +16 +Connector_PinSocket_1.27mm +PinSocket_1x16_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x16, 1.27mm pitch, single row, style 1 (pin 1 left) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x16 1.27mm single row style1 pin1 left +0 +16 +16 +Connector_PinSocket_1.27mm +PinSocket_1x16_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x16, 1.27mm pitch, single row, style 2 (pin 1 right) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x16 1.27mm single row style2 pin1 right +0 +16 +16 +Connector_PinSocket_1.27mm +PinSocket_1x17_P1.27mm_Vertical +Through hole straight socket strip, 1x17, 1.27mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x17 1.27mm single row +0 +17 +17 +Connector_PinSocket_1.27mm +PinSocket_1x17_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x17, 1.27mm pitch, single row, style 1 (pin 1 left) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x17 1.27mm single row style1 pin1 left +0 +17 +17 +Connector_PinSocket_1.27mm +PinSocket_1x17_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x17, 1.27mm pitch, single row, style 2 (pin 1 right) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x17 1.27mm single row style2 pin1 right +0 +17 +17 +Connector_PinSocket_1.27mm +PinSocket_1x18_P1.27mm_Vertical +Through hole straight socket strip, 1x18, 1.27mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x18 1.27mm single row +0 +18 +18 +Connector_PinSocket_1.27mm +PinSocket_1x18_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x18, 1.27mm pitch, single row, style 1 (pin 1 left) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x18 1.27mm single row style1 pin1 left +0 +18 +18 +Connector_PinSocket_1.27mm +PinSocket_1x18_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x18, 1.27mm pitch, single row, style 2 (pin 1 right) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x18 1.27mm single row style2 pin1 right +0 +18 +18 +Connector_PinSocket_1.27mm +PinSocket_1x19_P1.27mm_Vertical +Through hole straight socket strip, 1x19, 1.27mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x19 1.27mm single row +0 +19 +19 +Connector_PinSocket_1.27mm +PinSocket_1x19_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x19, 1.27mm pitch, single row, style 1 (pin 1 left) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x19 1.27mm single row style1 pin1 left +0 +19 +19 +Connector_PinSocket_1.27mm +PinSocket_1x19_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x19, 1.27mm pitch, single row, style 2 (pin 1 right) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x19 1.27mm single row style2 pin1 right +0 +19 +19 +Connector_PinSocket_1.27mm +PinSocket_1x20_P1.27mm_Vertical +Through hole straight socket strip, 1x20, 1.27mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x20 1.27mm single row +0 +20 +20 +Connector_PinSocket_1.27mm +PinSocket_1x20_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x20, 1.27mm pitch, single row, style 1 (pin 1 left) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x20 1.27mm single row style1 pin1 left +0 +20 +20 +Connector_PinSocket_1.27mm +PinSocket_1x20_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x20, 1.27mm pitch, single row, style 2 (pin 1 right) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x20 1.27mm single row style2 pin1 right +0 +20 +20 +Connector_PinSocket_1.27mm +PinSocket_1x21_P1.27mm_Vertical +Through hole straight socket strip, 1x21, 1.27mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x21 1.27mm single row +0 +21 +21 +Connector_PinSocket_1.27mm +PinSocket_1x21_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x21, 1.27mm pitch, single row, style 1 (pin 1 left) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x21 1.27mm single row style1 pin1 left +0 +21 +21 +Connector_PinSocket_1.27mm +PinSocket_1x21_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x21, 1.27mm pitch, single row, style 2 (pin 1 right) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x21 1.27mm single row style2 pin1 right +0 +21 +21 +Connector_PinSocket_1.27mm +PinSocket_1x22_P1.27mm_Vertical +Through hole straight socket strip, 1x22, 1.27mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x22 1.27mm single row +0 +22 +22 +Connector_PinSocket_1.27mm +PinSocket_1x22_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x22, 1.27mm pitch, single row, style 1 (pin 1 left) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x22 1.27mm single row style1 pin1 left +0 +22 +22 +Connector_PinSocket_1.27mm +PinSocket_1x22_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x22, 1.27mm pitch, single row, style 2 (pin 1 right) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x22 1.27mm single row style2 pin1 right +0 +22 +22 +Connector_PinSocket_1.27mm +PinSocket_1x23_P1.27mm_Vertical +Through hole straight socket strip, 1x23, 1.27mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x23 1.27mm single row +0 +23 +23 +Connector_PinSocket_1.27mm +PinSocket_1x23_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x23, 1.27mm pitch, single row, style 1 (pin 1 left) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x23 1.27mm single row style1 pin1 left +0 +23 +23 +Connector_PinSocket_1.27mm +PinSocket_1x23_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x23, 1.27mm pitch, single row, style 2 (pin 1 right) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x23 1.27mm single row style2 pin1 right +0 +23 +23 +Connector_PinSocket_1.27mm +PinSocket_1x24_P1.27mm_Vertical +Through hole straight socket strip, 1x24, 1.27mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x24 1.27mm single row +0 +24 +24 +Connector_PinSocket_1.27mm +PinSocket_1x24_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x24, 1.27mm pitch, single row, style 1 (pin 1 left) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x24 1.27mm single row style1 pin1 left +0 +24 +24 +Connector_PinSocket_1.27mm +PinSocket_1x24_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x24, 1.27mm pitch, single row, style 2 (pin 1 right) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x24 1.27mm single row style2 pin1 right +0 +24 +24 +Connector_PinSocket_1.27mm +PinSocket_1x25_P1.27mm_Vertical +Through hole straight socket strip, 1x25, 1.27mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x25 1.27mm single row +0 +25 +25 +Connector_PinSocket_1.27mm +PinSocket_1x25_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x25, 1.27mm pitch, single row, style 1 (pin 1 left) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x25 1.27mm single row style1 pin1 left +0 +25 +25 +Connector_PinSocket_1.27mm +PinSocket_1x25_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x25, 1.27mm pitch, single row, style 2 (pin 1 right) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x25 1.27mm single row style2 pin1 right +0 +25 +25 +Connector_PinSocket_1.27mm +PinSocket_1x26_P1.27mm_Vertical +Through hole straight socket strip, 1x26, 1.27mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x26 1.27mm single row +0 +26 +26 +Connector_PinSocket_1.27mm +PinSocket_1x26_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x26, 1.27mm pitch, single row, style 1 (pin 1 left) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x26 1.27mm single row style1 pin1 left +0 +26 +26 +Connector_PinSocket_1.27mm +PinSocket_1x26_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x26, 1.27mm pitch, single row, style 2 (pin 1 right) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x26 1.27mm single row style2 pin1 right +0 +26 +26 +Connector_PinSocket_1.27mm +PinSocket_1x27_P1.27mm_Vertical +Through hole straight socket strip, 1x27, 1.27mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x27 1.27mm single row +0 +27 +27 +Connector_PinSocket_1.27mm +PinSocket_1x27_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x27, 1.27mm pitch, single row, style 1 (pin 1 left) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x27 1.27mm single row style1 pin1 left +0 +27 +27 +Connector_PinSocket_1.27mm +PinSocket_1x27_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x27, 1.27mm pitch, single row, style 2 (pin 1 right) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x27 1.27mm single row style2 pin1 right +0 +27 +27 +Connector_PinSocket_1.27mm +PinSocket_1x28_P1.27mm_Vertical +Through hole straight socket strip, 1x28, 1.27mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x28 1.27mm single row +0 +28 +28 +Connector_PinSocket_1.27mm +PinSocket_1x28_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x28, 1.27mm pitch, single row, style 1 (pin 1 left) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x28 1.27mm single row style1 pin1 left +0 +28 +28 +Connector_PinSocket_1.27mm +PinSocket_1x28_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x28, 1.27mm pitch, single row, style 2 (pin 1 right) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x28 1.27mm single row style2 pin1 right +0 +28 +28 +Connector_PinSocket_1.27mm +PinSocket_1x29_P1.27mm_Vertical +Through hole straight socket strip, 1x29, 1.27mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x29 1.27mm single row +0 +29 +29 +Connector_PinSocket_1.27mm +PinSocket_1x29_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x29, 1.27mm pitch, single row, style 1 (pin 1 left) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x29 1.27mm single row style1 pin1 left +0 +29 +29 +Connector_PinSocket_1.27mm +PinSocket_1x29_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x29, 1.27mm pitch, single row, style 2 (pin 1 right) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x29 1.27mm single row style2 pin1 right +0 +29 +29 +Connector_PinSocket_1.27mm +PinSocket_1x30_P1.27mm_Vertical +Through hole straight socket strip, 1x30, 1.27mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x30 1.27mm single row +0 +30 +30 +Connector_PinSocket_1.27mm +PinSocket_1x30_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x30, 1.27mm pitch, single row, style 1 (pin 1 left) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x30 1.27mm single row style1 pin1 left +0 +30 +30 +Connector_PinSocket_1.27mm +PinSocket_1x30_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x30, 1.27mm pitch, single row, style 2 (pin 1 right) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x30 1.27mm single row style2 pin1 right +0 +30 +30 +Connector_PinSocket_1.27mm +PinSocket_1x31_P1.27mm_Vertical +Through hole straight socket strip, 1x31, 1.27mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x31 1.27mm single row +0 +31 +31 +Connector_PinSocket_1.27mm +PinSocket_1x31_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x31, 1.27mm pitch, single row, style 1 (pin 1 left) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x31 1.27mm single row style1 pin1 left +0 +31 +31 +Connector_PinSocket_1.27mm +PinSocket_1x31_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x31, 1.27mm pitch, single row, style 2 (pin 1 right) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x31 1.27mm single row style2 pin1 right +0 +31 +31 +Connector_PinSocket_1.27mm +PinSocket_1x32_P1.27mm_Vertical +Through hole straight socket strip, 1x32, 1.27mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x32 1.27mm single row +0 +32 +32 +Connector_PinSocket_1.27mm +PinSocket_1x32_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x32, 1.27mm pitch, single row, style 1 (pin 1 left) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x32 1.27mm single row style1 pin1 left +0 +32 +32 +Connector_PinSocket_1.27mm +PinSocket_1x32_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x32, 1.27mm pitch, single row, style 2 (pin 1 right) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x32 1.27mm single row style2 pin1 right +0 +32 +32 +Connector_PinSocket_1.27mm +PinSocket_1x33_P1.27mm_Vertical +Through hole straight socket strip, 1x33, 1.27mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x33 1.27mm single row +0 +33 +33 +Connector_PinSocket_1.27mm +PinSocket_1x33_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x33, 1.27mm pitch, single row, style 1 (pin 1 left) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x33 1.27mm single row style1 pin1 left +0 +33 +33 +Connector_PinSocket_1.27mm +PinSocket_1x33_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x33, 1.27mm pitch, single row, style 2 (pin 1 right) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x33 1.27mm single row style2 pin1 right +0 +33 +33 +Connector_PinSocket_1.27mm +PinSocket_1x34_P1.27mm_Vertical +Through hole straight socket strip, 1x34, 1.27mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x34 1.27mm single row +0 +34 +34 +Connector_PinSocket_1.27mm +PinSocket_1x34_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x34, 1.27mm pitch, single row, style 1 (pin 1 left) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x34 1.27mm single row style1 pin1 left +0 +34 +34 +Connector_PinSocket_1.27mm +PinSocket_1x34_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x34, 1.27mm pitch, single row, style 2 (pin 1 right) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x34 1.27mm single row style2 pin1 right +0 +34 +34 +Connector_PinSocket_1.27mm +PinSocket_1x35_P1.27mm_Vertical +Through hole straight socket strip, 1x35, 1.27mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x35 1.27mm single row +0 +35 +35 +Connector_PinSocket_1.27mm +PinSocket_1x35_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x35, 1.27mm pitch, single row, style 1 (pin 1 left) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x35 1.27mm single row style1 pin1 left +0 +35 +35 +Connector_PinSocket_1.27mm +PinSocket_1x35_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x35, 1.27mm pitch, single row, style 2 (pin 1 right) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x35 1.27mm single row style2 pin1 right +0 +35 +35 +Connector_PinSocket_1.27mm +PinSocket_1x36_P1.27mm_Vertical +Through hole straight socket strip, 1x36, 1.27mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x36 1.27mm single row +0 +36 +36 +Connector_PinSocket_1.27mm +PinSocket_1x36_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x36, 1.27mm pitch, single row, style 1 (pin 1 left) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x36 1.27mm single row style1 pin1 left +0 +36 +36 +Connector_PinSocket_1.27mm +PinSocket_1x36_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x36, 1.27mm pitch, single row, style 2 (pin 1 right) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x36 1.27mm single row style2 pin1 right +0 +36 +36 +Connector_PinSocket_1.27mm +PinSocket_1x37_P1.27mm_Vertical +Through hole straight socket strip, 1x37, 1.27mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x37 1.27mm single row +0 +37 +37 +Connector_PinSocket_1.27mm +PinSocket_1x37_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x37, 1.27mm pitch, single row, style 1 (pin 1 left) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x37 1.27mm single row style1 pin1 left +0 +37 +37 +Connector_PinSocket_1.27mm +PinSocket_1x37_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x37, 1.27mm pitch, single row, style 2 (pin 1 right) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x37 1.27mm single row style2 pin1 right +0 +37 +37 +Connector_PinSocket_1.27mm +PinSocket_1x38_P1.27mm_Vertical +Through hole straight socket strip, 1x38, 1.27mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x38 1.27mm single row +0 +38 +38 +Connector_PinSocket_1.27mm +PinSocket_1x38_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x38, 1.27mm pitch, single row, style 1 (pin 1 left) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x38 1.27mm single row style1 pin1 left +0 +38 +38 +Connector_PinSocket_1.27mm +PinSocket_1x38_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x38, 1.27mm pitch, single row, style 2 (pin 1 right) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x38 1.27mm single row style2 pin1 right +0 +38 +38 +Connector_PinSocket_1.27mm +PinSocket_1x39_P1.27mm_Vertical +Through hole straight socket strip, 1x39, 1.27mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x39 1.27mm single row +0 +39 +39 +Connector_PinSocket_1.27mm +PinSocket_1x39_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x39, 1.27mm pitch, single row, style 1 (pin 1 left) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x39 1.27mm single row style1 pin1 left +0 +39 +39 +Connector_PinSocket_1.27mm +PinSocket_1x39_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x39, 1.27mm pitch, single row, style 2 (pin 1 right) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x39 1.27mm single row style2 pin1 right +0 +39 +39 +Connector_PinSocket_1.27mm +PinSocket_1x40_P1.27mm_Vertical +Through hole straight socket strip, 1x40, 1.27mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x40 1.27mm single row +0 +40 +40 +Connector_PinSocket_1.27mm +PinSocket_1x40_P1.27mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x40, 1.27mm pitch, single row, style 1 (pin 1 left) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x40 1.27mm single row style1 pin1 left +0 +40 +40 +Connector_PinSocket_1.27mm +PinSocket_1x40_P1.27mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x40, 1.27mm pitch, single row, style 2 (pin 1 right) (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD075.pdf&t=1511594726925), script generated +Surface mounted socket strip SMD 1x40 1.27mm single row style2 pin1 right +0 +40 +40 +Connector_PinSocket_1.27mm +PinSocket_2x01_P1.27mm_Vertical +Through hole straight socket strip, 2x01, 1.27mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x01 1.27mm double row +0 +2 +2 +Connector_PinSocket_1.27mm +PinSocket_2x01_P1.27mm_Vertical_SMD +surface-mounted straight socket strip, 2x01, 1.27mm pitch, double cols (from Kicad 4.0.7!), script generated +Surface mounted socket strip SMD 2x01 1.27mm double row +0 +2 +2 +Connector_PinSocket_1.27mm +PinSocket_2x02_P1.27mm_Vertical +Through hole straight socket strip, 2x02, 1.27mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x02 1.27mm double row +0 +4 +4 +Connector_PinSocket_1.27mm +PinSocket_2x02_P1.27mm_Vertical_SMD +surface-mounted straight socket strip, 2x02, 1.27mm pitch, double cols (from Kicad 4.0.7!), script generated +Surface mounted socket strip SMD 2x02 1.27mm double row +0 +4 +4 +Connector_PinSocket_1.27mm +PinSocket_2x03_P1.27mm_Horizontal +Through hole angled socket strip, 2x03, 1.27mm pitch, 4.4mm socket length, double cols (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD091.pdf&t=1511594177220), script generated +Through hole angled socket strip THT 2x03 1.27mm double row +0 +6 +6 +Connector_PinSocket_1.27mm +PinSocket_2x03_P1.27mm_Vertical +Through hole straight socket strip, 2x03, 1.27mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x03 1.27mm double row +0 +6 +6 +Connector_PinSocket_1.27mm +PinSocket_2x03_P1.27mm_Vertical_SMD +surface-mounted straight socket strip, 2x03, 1.27mm pitch, double cols (from Kicad 4.0.7!), script generated +Surface mounted socket strip SMD 2x03 1.27mm double row +0 +6 +6 +Connector_PinSocket_1.27mm +PinSocket_2x04_P1.27mm_Horizontal +Through hole angled socket strip, 2x04, 1.27mm pitch, 4.4mm socket length, double cols (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD091.pdf&t=1511594177220), script generated +Through hole angled socket strip THT 2x04 1.27mm double row +0 +8 +8 +Connector_PinSocket_1.27mm +PinSocket_2x04_P1.27mm_Vertical +Through hole straight socket strip, 2x04, 1.27mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x04 1.27mm double row +0 +8 +8 +Connector_PinSocket_1.27mm +PinSocket_2x04_P1.27mm_Vertical_SMD +surface-mounted straight socket strip, 2x04, 1.27mm pitch, double cols (from Kicad 4.0.7!), script generated +Surface mounted socket strip SMD 2x04 1.27mm double row +0 +8 +8 +Connector_PinSocket_1.27mm +PinSocket_2x05_P1.27mm_Horizontal +Through hole angled socket strip, 2x05, 1.27mm pitch, 4.4mm socket length, double cols (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD091.pdf&t=1511594177220), script generated +Through hole angled socket strip THT 2x05 1.27mm double row +0 +10 +10 +Connector_PinSocket_1.27mm +PinSocket_2x05_P1.27mm_Vertical +Through hole straight socket strip, 2x05, 1.27mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x05 1.27mm double row +0 +10 +10 +Connector_PinSocket_1.27mm +PinSocket_2x05_P1.27mm_Vertical_SMD +surface-mounted straight socket strip, 2x05, 1.27mm pitch, double cols (from Kicad 4.0.7!), script generated +Surface mounted socket strip SMD 2x05 1.27mm double row +0 +10 +10 +Connector_PinSocket_1.27mm +PinSocket_2x06_P1.27mm_Horizontal +Through hole angled socket strip, 2x06, 1.27mm pitch, 4.4mm socket length, double cols (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD091.pdf&t=1511594177220), script generated +Through hole angled socket strip THT 2x06 1.27mm double row +0 +12 +12 +Connector_PinSocket_1.27mm +PinSocket_2x06_P1.27mm_Vertical +Through hole straight socket strip, 2x06, 1.27mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x06 1.27mm double row +0 +12 +12 +Connector_PinSocket_1.27mm +PinSocket_2x06_P1.27mm_Vertical_SMD +surface-mounted straight socket strip, 2x06, 1.27mm pitch, double cols (from Kicad 4.0.7!), script generated +Surface mounted socket strip SMD 2x06 1.27mm double row +0 +12 +12 +Connector_PinSocket_1.27mm +PinSocket_2x07_P1.27mm_Horizontal +Through hole angled socket strip, 2x07, 1.27mm pitch, 4.4mm socket length, double cols (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD091.pdf&t=1511594177220), script generated +Through hole angled socket strip THT 2x07 1.27mm double row +0 +14 +14 +Connector_PinSocket_1.27mm +PinSocket_2x07_P1.27mm_Vertical +Through hole straight socket strip, 2x07, 1.27mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x07 1.27mm double row +0 +14 +14 +Connector_PinSocket_1.27mm +PinSocket_2x07_P1.27mm_Vertical_SMD +surface-mounted straight socket strip, 2x07, 1.27mm pitch, double cols (from Kicad 4.0.7!), script generated +Surface mounted socket strip SMD 2x07 1.27mm double row +0 +14 +14 +Connector_PinSocket_1.27mm +PinSocket_2x08_P1.27mm_Horizontal +Through hole angled socket strip, 2x08, 1.27mm pitch, 4.4mm socket length, double cols (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD091.pdf&t=1511594177220), script generated +Through hole angled socket strip THT 2x08 1.27mm double row +0 +16 +16 +Connector_PinSocket_1.27mm +PinSocket_2x08_P1.27mm_Vertical +Through hole straight socket strip, 2x08, 1.27mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x08 1.27mm double row +0 +16 +16 +Connector_PinSocket_1.27mm +PinSocket_2x08_P1.27mm_Vertical_SMD +surface-mounted straight socket strip, 2x08, 1.27mm pitch, double cols (from Kicad 4.0.7!), script generated +Surface mounted socket strip SMD 2x08 1.27mm double row +0 +16 +16 +Connector_PinSocket_1.27mm +PinSocket_2x09_P1.27mm_Horizontal +Through hole angled socket strip, 2x09, 1.27mm pitch, 4.4mm socket length, double cols (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD091.pdf&t=1511594177220), script generated +Through hole angled socket strip THT 2x09 1.27mm double row +0 +18 +18 +Connector_PinSocket_1.27mm +PinSocket_2x09_P1.27mm_Vertical +Through hole straight socket strip, 2x09, 1.27mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x09 1.27mm double row +0 +18 +18 +Connector_PinSocket_1.27mm +PinSocket_2x09_P1.27mm_Vertical_SMD +surface-mounted straight socket strip, 2x09, 1.27mm pitch, double cols (from Kicad 4.0.7!), script generated +Surface mounted socket strip SMD 2x09 1.27mm double row +0 +18 +18 +Connector_PinSocket_1.27mm +PinSocket_2x10_P1.27mm_Horizontal +Through hole angled socket strip, 2x10, 1.27mm pitch, 4.4mm socket length, double cols (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD091.pdf&t=1511594177220), script generated +Through hole angled socket strip THT 2x10 1.27mm double row +0 +20 +20 +Connector_PinSocket_1.27mm +PinSocket_2x10_P1.27mm_Vertical +Through hole straight socket strip, 2x10, 1.27mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x10 1.27mm double row +0 +20 +20 +Connector_PinSocket_1.27mm +PinSocket_2x10_P1.27mm_Vertical_SMD +surface-mounted straight socket strip, 2x10, 1.27mm pitch, double cols (from Kicad 4.0.7!), script generated +Surface mounted socket strip SMD 2x10 1.27mm double row +0 +20 +20 +Connector_PinSocket_1.27mm +PinSocket_2x11_P1.27mm_Horizontal +Through hole angled socket strip, 2x11, 1.27mm pitch, 4.4mm socket length, double cols (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD091.pdf&t=1511594177220), script generated +Through hole angled socket strip THT 2x11 1.27mm double row +0 +22 +22 +Connector_PinSocket_1.27mm +PinSocket_2x11_P1.27mm_Vertical +Through hole straight socket strip, 2x11, 1.27mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x11 1.27mm double row +0 +22 +22 +Connector_PinSocket_1.27mm +PinSocket_2x11_P1.27mm_Vertical_SMD +surface-mounted straight socket strip, 2x11, 1.27mm pitch, double cols (from Kicad 4.0.7!), script generated +Surface mounted socket strip SMD 2x11 1.27mm double row +0 +22 +22 +Connector_PinSocket_1.27mm +PinSocket_2x12_P1.27mm_Horizontal +Through hole angled socket strip, 2x12, 1.27mm pitch, 4.4mm socket length, double cols (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD091.pdf&t=1511594177220), script generated +Through hole angled socket strip THT 2x12 1.27mm double row +0 +24 +24 +Connector_PinSocket_1.27mm +PinSocket_2x12_P1.27mm_Vertical +Through hole straight socket strip, 2x12, 1.27mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x12 1.27mm double row +0 +24 +24 +Connector_PinSocket_1.27mm +PinSocket_2x12_P1.27mm_Vertical_SMD +surface-mounted straight socket strip, 2x12, 1.27mm pitch, double cols (from Kicad 4.0.7!), script generated +Surface mounted socket strip SMD 2x12 1.27mm double row +0 +24 +24 +Connector_PinSocket_1.27mm +PinSocket_2x13_P1.27mm_Horizontal +Through hole angled socket strip, 2x13, 1.27mm pitch, 4.4mm socket length, double cols (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD091.pdf&t=1511594177220), script generated +Through hole angled socket strip THT 2x13 1.27mm double row +0 +26 +26 +Connector_PinSocket_1.27mm +PinSocket_2x13_P1.27mm_Vertical +Through hole straight socket strip, 2x13, 1.27mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x13 1.27mm double row +0 +26 +26 +Connector_PinSocket_1.27mm +PinSocket_2x13_P1.27mm_Vertical_SMD +surface-mounted straight socket strip, 2x13, 1.27mm pitch, double cols (from Kicad 4.0.7!), script generated +Surface mounted socket strip SMD 2x13 1.27mm double row +0 +26 +26 +Connector_PinSocket_1.27mm +PinSocket_2x14_P1.27mm_Horizontal +Through hole angled socket strip, 2x14, 1.27mm pitch, 4.4mm socket length, double cols (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD091.pdf&t=1511594177220), script generated +Through hole angled socket strip THT 2x14 1.27mm double row +0 +28 +28 +Connector_PinSocket_1.27mm +PinSocket_2x14_P1.27mm_Vertical +Through hole straight socket strip, 2x14, 1.27mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x14 1.27mm double row +0 +28 +28 +Connector_PinSocket_1.27mm +PinSocket_2x14_P1.27mm_Vertical_SMD +surface-mounted straight socket strip, 2x14, 1.27mm pitch, double cols (from Kicad 4.0.7!), script generated +Surface mounted socket strip SMD 2x14 1.27mm double row +0 +28 +28 +Connector_PinSocket_1.27mm +PinSocket_2x15_P1.27mm_Horizontal +Through hole angled socket strip, 2x15, 1.27mm pitch, 4.4mm socket length, double cols (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD091.pdf&t=1511594177220), script generated +Through hole angled socket strip THT 2x15 1.27mm double row +0 +30 +30 +Connector_PinSocket_1.27mm +PinSocket_2x15_P1.27mm_Vertical +Through hole straight socket strip, 2x15, 1.27mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x15 1.27mm double row +0 +30 +30 +Connector_PinSocket_1.27mm +PinSocket_2x15_P1.27mm_Vertical_SMD +surface-mounted straight socket strip, 2x15, 1.27mm pitch, double cols (from Kicad 4.0.7!), script generated +Surface mounted socket strip SMD 2x15 1.27mm double row +0 +30 +30 +Connector_PinSocket_1.27mm +PinSocket_2x16_P1.27mm_Horizontal +Through hole angled socket strip, 2x16, 1.27mm pitch, 4.4mm socket length, double cols (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD091.pdf&t=1511594177220), script generated +Through hole angled socket strip THT 2x16 1.27mm double row +0 +32 +32 +Connector_PinSocket_1.27mm +PinSocket_2x16_P1.27mm_Vertical +Through hole straight socket strip, 2x16, 1.27mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x16 1.27mm double row +0 +32 +32 +Connector_PinSocket_1.27mm +PinSocket_2x16_P1.27mm_Vertical_SMD +surface-mounted straight socket strip, 2x16, 1.27mm pitch, double cols (from Kicad 4.0.7!), script generated +Surface mounted socket strip SMD 2x16 1.27mm double row +0 +32 +32 +Connector_PinSocket_1.27mm +PinSocket_2x17_P1.27mm_Horizontal +Through hole angled socket strip, 2x17, 1.27mm pitch, 4.4mm socket length, double cols (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD091.pdf&t=1511594177220), script generated +Through hole angled socket strip THT 2x17 1.27mm double row +0 +34 +34 +Connector_PinSocket_1.27mm +PinSocket_2x17_P1.27mm_Vertical +Through hole straight socket strip, 2x17, 1.27mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x17 1.27mm double row +0 +34 +34 +Connector_PinSocket_1.27mm +PinSocket_2x17_P1.27mm_Vertical_SMD +surface-mounted straight socket strip, 2x17, 1.27mm pitch, double cols (from Kicad 4.0.7!), script generated +Surface mounted socket strip SMD 2x17 1.27mm double row +0 +34 +34 +Connector_PinSocket_1.27mm +PinSocket_2x18_P1.27mm_Horizontal +Through hole angled socket strip, 2x18, 1.27mm pitch, 4.4mm socket length, double cols (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD091.pdf&t=1511594177220), script generated +Through hole angled socket strip THT 2x18 1.27mm double row +0 +36 +36 +Connector_PinSocket_1.27mm +PinSocket_2x18_P1.27mm_Vertical +Through hole straight socket strip, 2x18, 1.27mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x18 1.27mm double row +0 +36 +36 +Connector_PinSocket_1.27mm +PinSocket_2x18_P1.27mm_Vertical_SMD +surface-mounted straight socket strip, 2x18, 1.27mm pitch, double cols (from Kicad 4.0.7!), script generated +Surface mounted socket strip SMD 2x18 1.27mm double row +0 +36 +36 +Connector_PinSocket_1.27mm +PinSocket_2x19_P1.27mm_Horizontal +Through hole angled socket strip, 2x19, 1.27mm pitch, 4.4mm socket length, double cols (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD091.pdf&t=1511594177220), script generated +Through hole angled socket strip THT 2x19 1.27mm double row +0 +38 +38 +Connector_PinSocket_1.27mm +PinSocket_2x19_P1.27mm_Vertical +Through hole straight socket strip, 2x19, 1.27mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x19 1.27mm double row +0 +38 +38 +Connector_PinSocket_1.27mm +PinSocket_2x19_P1.27mm_Vertical_SMD +surface-mounted straight socket strip, 2x19, 1.27mm pitch, double cols (from Kicad 4.0.7!), script generated +Surface mounted socket strip SMD 2x19 1.27mm double row +0 +38 +38 +Connector_PinSocket_1.27mm +PinSocket_2x20_P1.27mm_Horizontal +Through hole angled socket strip, 2x20, 1.27mm pitch, 4.4mm socket length, double cols (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD091.pdf&t=1511594177220), script generated +Through hole angled socket strip THT 2x20 1.27mm double row +0 +40 +40 +Connector_PinSocket_1.27mm +PinSocket_2x20_P1.27mm_Vertical +Through hole straight socket strip, 2x20, 1.27mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x20 1.27mm double row +0 +40 +40 +Connector_PinSocket_1.27mm +PinSocket_2x20_P1.27mm_Vertical_SMD +surface-mounted straight socket strip, 2x20, 1.27mm pitch, double cols (from Kicad 4.0.7!), script generated +Surface mounted socket strip SMD 2x20 1.27mm double row +0 +40 +40 +Connector_PinSocket_1.27mm +PinSocket_2x21_P1.27mm_Horizontal +Through hole angled socket strip, 2x21, 1.27mm pitch, 4.4mm socket length, double cols (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD091.pdf&t=1511594177220), script generated +Through hole angled socket strip THT 2x21 1.27mm double row +0 +42 +42 +Connector_PinSocket_1.27mm +PinSocket_2x21_P1.27mm_Vertical +Through hole straight socket strip, 2x21, 1.27mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x21 1.27mm double row +0 +42 +42 +Connector_PinSocket_1.27mm +PinSocket_2x21_P1.27mm_Vertical_SMD +surface-mounted straight socket strip, 2x21, 1.27mm pitch, double cols (from Kicad 4.0.7!), script generated +Surface mounted socket strip SMD 2x21 1.27mm double row +0 +42 +42 +Connector_PinSocket_1.27mm +PinSocket_2x22_P1.27mm_Horizontal +Through hole angled socket strip, 2x22, 1.27mm pitch, 4.4mm socket length, double cols (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD091.pdf&t=1511594177220), script generated +Through hole angled socket strip THT 2x22 1.27mm double row +0 +44 +44 +Connector_PinSocket_1.27mm +PinSocket_2x22_P1.27mm_Vertical +Through hole straight socket strip, 2x22, 1.27mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x22 1.27mm double row +0 +44 +44 +Connector_PinSocket_1.27mm +PinSocket_2x22_P1.27mm_Vertical_SMD +surface-mounted straight socket strip, 2x22, 1.27mm pitch, double cols (from Kicad 4.0.7!), script generated +Surface mounted socket strip SMD 2x22 1.27mm double row +0 +44 +44 +Connector_PinSocket_1.27mm +PinSocket_2x23_P1.27mm_Horizontal +Through hole angled socket strip, 2x23, 1.27mm pitch, 4.4mm socket length, double cols (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD091.pdf&t=1511594177220), script generated +Through hole angled socket strip THT 2x23 1.27mm double row +0 +46 +46 +Connector_PinSocket_1.27mm +PinSocket_2x23_P1.27mm_Vertical +Through hole straight socket strip, 2x23, 1.27mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x23 1.27mm double row +0 +46 +46 +Connector_PinSocket_1.27mm +PinSocket_2x23_P1.27mm_Vertical_SMD +surface-mounted straight socket strip, 2x23, 1.27mm pitch, double cols (from Kicad 4.0.7!), script generated +Surface mounted socket strip SMD 2x23 1.27mm double row +0 +46 +46 +Connector_PinSocket_1.27mm +PinSocket_2x24_P1.27mm_Horizontal +Through hole angled socket strip, 2x24, 1.27mm pitch, 4.4mm socket length, double cols (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD091.pdf&t=1511594177220), script generated +Through hole angled socket strip THT 2x24 1.27mm double row +0 +48 +48 +Connector_PinSocket_1.27mm +PinSocket_2x24_P1.27mm_Vertical +Through hole straight socket strip, 2x24, 1.27mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x24 1.27mm double row +0 +48 +48 +Connector_PinSocket_1.27mm +PinSocket_2x24_P1.27mm_Vertical_SMD +surface-mounted straight socket strip, 2x24, 1.27mm pitch, double cols (from Kicad 4.0.7!), script generated +Surface mounted socket strip SMD 2x24 1.27mm double row +0 +48 +48 +Connector_PinSocket_1.27mm +PinSocket_2x25_P1.27mm_Horizontal +Through hole angled socket strip, 2x25, 1.27mm pitch, 4.4mm socket length, double cols (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD091.pdf&t=1511594177220), script generated +Through hole angled socket strip THT 2x25 1.27mm double row +0 +50 +50 +Connector_PinSocket_1.27mm +PinSocket_2x25_P1.27mm_Vertical +Through hole straight socket strip, 2x25, 1.27mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x25 1.27mm double row +0 +50 +50 +Connector_PinSocket_1.27mm +PinSocket_2x25_P1.27mm_Vertical_SMD +surface-mounted straight socket strip, 2x25, 1.27mm pitch, double cols (from Kicad 4.0.7!), script generated +Surface mounted socket strip SMD 2x25 1.27mm double row +0 +50 +50 +Connector_PinSocket_1.27mm +PinSocket_2x26_P1.27mm_Horizontal +Through hole angled socket strip, 2x26, 1.27mm pitch, 4.4mm socket length, double cols (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD091.pdf&t=1511594177220), script generated +Through hole angled socket strip THT 2x26 1.27mm double row +0 +52 +52 +Connector_PinSocket_1.27mm +PinSocket_2x26_P1.27mm_Vertical +Through hole straight socket strip, 2x26, 1.27mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x26 1.27mm double row +0 +52 +52 +Connector_PinSocket_1.27mm +PinSocket_2x26_P1.27mm_Vertical_SMD +surface-mounted straight socket strip, 2x26, 1.27mm pitch, double cols (from Kicad 4.0.7!), script generated +Surface mounted socket strip SMD 2x26 1.27mm double row +0 +52 +52 +Connector_PinSocket_1.27mm +PinSocket_2x27_P1.27mm_Horizontal +Through hole angled socket strip, 2x27, 1.27mm pitch, 4.4mm socket length, double cols (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD091.pdf&t=1511594177220), script generated +Through hole angled socket strip THT 2x27 1.27mm double row +0 +54 +54 +Connector_PinSocket_1.27mm +PinSocket_2x27_P1.27mm_Vertical +Through hole straight socket strip, 2x27, 1.27mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x27 1.27mm double row +0 +54 +54 +Connector_PinSocket_1.27mm +PinSocket_2x27_P1.27mm_Vertical_SMD +surface-mounted straight socket strip, 2x27, 1.27mm pitch, double cols (from Kicad 4.0.7!), script generated +Surface mounted socket strip SMD 2x27 1.27mm double row +0 +54 +54 +Connector_PinSocket_1.27mm +PinSocket_2x28_P1.27mm_Horizontal +Through hole angled socket strip, 2x28, 1.27mm pitch, 4.4mm socket length, double cols (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD091.pdf&t=1511594177220), script generated +Through hole angled socket strip THT 2x28 1.27mm double row +0 +56 +56 +Connector_PinSocket_1.27mm +PinSocket_2x28_P1.27mm_Vertical +Through hole straight socket strip, 2x28, 1.27mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x28 1.27mm double row +0 +56 +56 +Connector_PinSocket_1.27mm +PinSocket_2x28_P1.27mm_Vertical_SMD +surface-mounted straight socket strip, 2x28, 1.27mm pitch, double cols (from Kicad 4.0.7!), script generated +Surface mounted socket strip SMD 2x28 1.27mm double row +0 +56 +56 +Connector_PinSocket_1.27mm +PinSocket_2x29_P1.27mm_Horizontal +Through hole angled socket strip, 2x29, 1.27mm pitch, 4.4mm socket length, double cols (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD091.pdf&t=1511594177220), script generated +Through hole angled socket strip THT 2x29 1.27mm double row +0 +58 +58 +Connector_PinSocket_1.27mm +PinSocket_2x29_P1.27mm_Vertical +Through hole straight socket strip, 2x29, 1.27mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x29 1.27mm double row +0 +58 +58 +Connector_PinSocket_1.27mm +PinSocket_2x29_P1.27mm_Vertical_SMD +surface-mounted straight socket strip, 2x29, 1.27mm pitch, double cols (from Kicad 4.0.7!), script generated +Surface mounted socket strip SMD 2x29 1.27mm double row +0 +58 +58 +Connector_PinSocket_1.27mm +PinSocket_2x30_P1.27mm_Horizontal +Through hole angled socket strip, 2x30, 1.27mm pitch, 4.4mm socket length, double cols (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD091.pdf&t=1511594177220), script generated +Through hole angled socket strip THT 2x30 1.27mm double row +0 +60 +60 +Connector_PinSocket_1.27mm +PinSocket_2x30_P1.27mm_Vertical +Through hole straight socket strip, 2x30, 1.27mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x30 1.27mm double row +0 +60 +60 +Connector_PinSocket_1.27mm +PinSocket_2x30_P1.27mm_Vertical_SMD +surface-mounted straight socket strip, 2x30, 1.27mm pitch, double cols (from Kicad 4.0.7!), script generated +Surface mounted socket strip SMD 2x30 1.27mm double row +0 +60 +60 +Connector_PinSocket_1.27mm +PinSocket_2x31_P1.27mm_Horizontal +Through hole angled socket strip, 2x31, 1.27mm pitch, 4.4mm socket length, double cols (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD091.pdf&t=1511594177220), script generated +Through hole angled socket strip THT 2x31 1.27mm double row +0 +62 +62 +Connector_PinSocket_1.27mm +PinSocket_2x31_P1.27mm_Vertical +Through hole straight socket strip, 2x31, 1.27mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x31 1.27mm double row +0 +62 +62 +Connector_PinSocket_1.27mm +PinSocket_2x31_P1.27mm_Vertical_SMD +surface-mounted straight socket strip, 2x31, 1.27mm pitch, double cols (from Kicad 4.0.7!), script generated +Surface mounted socket strip SMD 2x31 1.27mm double row +0 +62 +62 +Connector_PinSocket_1.27mm +PinSocket_2x32_P1.27mm_Horizontal +Through hole angled socket strip, 2x32, 1.27mm pitch, 4.4mm socket length, double cols (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD091.pdf&t=1511594177220), script generated +Through hole angled socket strip THT 2x32 1.27mm double row +0 +64 +64 +Connector_PinSocket_1.27mm +PinSocket_2x32_P1.27mm_Vertical +Through hole straight socket strip, 2x32, 1.27mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x32 1.27mm double row +0 +64 +64 +Connector_PinSocket_1.27mm +PinSocket_2x32_P1.27mm_Vertical_SMD +surface-mounted straight socket strip, 2x32, 1.27mm pitch, double cols (from Kicad 4.0.7!), script generated +Surface mounted socket strip SMD 2x32 1.27mm double row +0 +64 +64 +Connector_PinSocket_1.27mm +PinSocket_2x33_P1.27mm_Horizontal +Through hole angled socket strip, 2x33, 1.27mm pitch, 4.4mm socket length, double cols (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD091.pdf&t=1511594177220), script generated +Through hole angled socket strip THT 2x33 1.27mm double row +0 +66 +66 +Connector_PinSocket_1.27mm +PinSocket_2x33_P1.27mm_Vertical +Through hole straight socket strip, 2x33, 1.27mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x33 1.27mm double row +0 +66 +66 +Connector_PinSocket_1.27mm +PinSocket_2x33_P1.27mm_Vertical_SMD +surface-mounted straight socket strip, 2x33, 1.27mm pitch, double cols (from Kicad 4.0.7!), script generated +Surface mounted socket strip SMD 2x33 1.27mm double row +0 +66 +66 +Connector_PinSocket_1.27mm +PinSocket_2x34_P1.27mm_Horizontal +Through hole angled socket strip, 2x34, 1.27mm pitch, 4.4mm socket length, double cols (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD091.pdf&t=1511594177220), script generated +Through hole angled socket strip THT 2x34 1.27mm double row +0 +68 +68 +Connector_PinSocket_1.27mm +PinSocket_2x34_P1.27mm_Vertical +Through hole straight socket strip, 2x34, 1.27mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x34 1.27mm double row +0 +68 +68 +Connector_PinSocket_1.27mm +PinSocket_2x34_P1.27mm_Vertical_SMD +surface-mounted straight socket strip, 2x34, 1.27mm pitch, double cols (from Kicad 4.0.7!), script generated +Surface mounted socket strip SMD 2x34 1.27mm double row +0 +68 +68 +Connector_PinSocket_1.27mm +PinSocket_2x35_P1.27mm_Horizontal +Through hole angled socket strip, 2x35, 1.27mm pitch, 4.4mm socket length, double cols (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD091.pdf&t=1511594177220), script generated +Through hole angled socket strip THT 2x35 1.27mm double row +0 +70 +70 +Connector_PinSocket_1.27mm +PinSocket_2x35_P1.27mm_Vertical +Through hole straight socket strip, 2x35, 1.27mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x35 1.27mm double row +0 +70 +70 +Connector_PinSocket_1.27mm +PinSocket_2x35_P1.27mm_Vertical_SMD +surface-mounted straight socket strip, 2x35, 1.27mm pitch, double cols (from Kicad 4.0.7!), script generated +Surface mounted socket strip SMD 2x35 1.27mm double row +0 +70 +70 +Connector_PinSocket_1.27mm +PinSocket_2x36_P1.27mm_Horizontal +Through hole angled socket strip, 2x36, 1.27mm pitch, 4.4mm socket length, double cols (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD091.pdf&t=1511594177220), script generated +Through hole angled socket strip THT 2x36 1.27mm double row +0 +72 +72 +Connector_PinSocket_1.27mm +PinSocket_2x36_P1.27mm_Vertical +Through hole straight socket strip, 2x36, 1.27mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x36 1.27mm double row +0 +72 +72 +Connector_PinSocket_1.27mm +PinSocket_2x36_P1.27mm_Vertical_SMD +surface-mounted straight socket strip, 2x36, 1.27mm pitch, double cols (from Kicad 4.0.7!), script generated +Surface mounted socket strip SMD 2x36 1.27mm double row +0 +72 +72 +Connector_PinSocket_1.27mm +PinSocket_2x37_P1.27mm_Horizontal +Through hole angled socket strip, 2x37, 1.27mm pitch, 4.4mm socket length, double cols (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD091.pdf&t=1511594177220), script generated +Through hole angled socket strip THT 2x37 1.27mm double row +0 +74 +74 +Connector_PinSocket_1.27mm +PinSocket_2x37_P1.27mm_Vertical +Through hole straight socket strip, 2x37, 1.27mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x37 1.27mm double row +0 +74 +74 +Connector_PinSocket_1.27mm +PinSocket_2x37_P1.27mm_Vertical_SMD +surface-mounted straight socket strip, 2x37, 1.27mm pitch, double cols (from Kicad 4.0.7!), script generated +Surface mounted socket strip SMD 2x37 1.27mm double row +0 +74 +74 +Connector_PinSocket_1.27mm +PinSocket_2x38_P1.27mm_Horizontal +Through hole angled socket strip, 2x38, 1.27mm pitch, 4.4mm socket length, double cols (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD091.pdf&t=1511594177220), script generated +Through hole angled socket strip THT 2x38 1.27mm double row +0 +76 +76 +Connector_PinSocket_1.27mm +PinSocket_2x38_P1.27mm_Vertical +Through hole straight socket strip, 2x38, 1.27mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x38 1.27mm double row +0 +76 +76 +Connector_PinSocket_1.27mm +PinSocket_2x38_P1.27mm_Vertical_SMD +surface-mounted straight socket strip, 2x38, 1.27mm pitch, double cols (from Kicad 4.0.7!), script generated +Surface mounted socket strip SMD 2x38 1.27mm double row +0 +76 +76 +Connector_PinSocket_1.27mm +PinSocket_2x39_P1.27mm_Horizontal +Through hole angled socket strip, 2x39, 1.27mm pitch, 4.4mm socket length, double cols (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD091.pdf&t=1511594177220), script generated +Through hole angled socket strip THT 2x39 1.27mm double row +0 +78 +78 +Connector_PinSocket_1.27mm +PinSocket_2x39_P1.27mm_Vertical +Through hole straight socket strip, 2x39, 1.27mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x39 1.27mm double row +0 +78 +78 +Connector_PinSocket_1.27mm +PinSocket_2x39_P1.27mm_Vertical_SMD +surface-mounted straight socket strip, 2x39, 1.27mm pitch, double cols (from Kicad 4.0.7!), script generated +Surface mounted socket strip SMD 2x39 1.27mm double row +0 +78 +78 +Connector_PinSocket_1.27mm +PinSocket_2x40_P1.27mm_Horizontal +Through hole angled socket strip, 2x40, 1.27mm pitch, 4.4mm socket length, double cols (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD091.pdf&t=1511594177220), script generated +Through hole angled socket strip THT 2x40 1.27mm double row +0 +80 +80 +Connector_PinSocket_1.27mm +PinSocket_2x40_P1.27mm_Vertical +Through hole straight socket strip, 2x40, 1.27mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x40 1.27mm double row +0 +80 +80 +Connector_PinSocket_1.27mm +PinSocket_2x40_P1.27mm_Vertical_SMD +surface-mounted straight socket strip, 2x40, 1.27mm pitch, double cols (from Kicad 4.0.7!), script generated +Surface mounted socket strip SMD 2x40 1.27mm double row +0 +80 +80 +Connector_PinSocket_1.27mm +PinSocket_2x41_P1.27mm_Horizontal +Through hole angled socket strip, 2x41, 1.27mm pitch, 4.4mm socket length, double cols (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD091.pdf&t=1511594177220), script generated +Through hole angled socket strip THT 2x41 1.27mm double row +0 +82 +82 +Connector_PinSocket_1.27mm +PinSocket_2x42_P1.27mm_Horizontal +Through hole angled socket strip, 2x42, 1.27mm pitch, 4.4mm socket length, double cols (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD091.pdf&t=1511594177220), script generated +Through hole angled socket strip THT 2x42 1.27mm double row +0 +84 +84 +Connector_PinSocket_1.27mm +PinSocket_2x43_P1.27mm_Horizontal +Through hole angled socket strip, 2x43, 1.27mm pitch, 4.4mm socket length, double cols (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD091.pdf&t=1511594177220), script generated +Through hole angled socket strip THT 2x43 1.27mm double row +0 +86 +86 +Connector_PinSocket_1.27mm +PinSocket_2x44_P1.27mm_Horizontal +Through hole angled socket strip, 2x44, 1.27mm pitch, 4.4mm socket length, double cols (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD091.pdf&t=1511594177220), script generated +Through hole angled socket strip THT 2x44 1.27mm double row +0 +88 +88 +Connector_PinSocket_1.27mm +PinSocket_2x45_P1.27mm_Horizontal +Through hole angled socket strip, 2x45, 1.27mm pitch, 4.4mm socket length, double cols (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD091.pdf&t=1511594177220), script generated +Through hole angled socket strip THT 2x45 1.27mm double row +0 +90 +90 +Connector_PinSocket_1.27mm +PinSocket_2x46_P1.27mm_Horizontal +Through hole angled socket strip, 2x46, 1.27mm pitch, 4.4mm socket length, double cols (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD091.pdf&t=1511594177220), script generated +Through hole angled socket strip THT 2x46 1.27mm double row +0 +92 +92 +Connector_PinSocket_1.27mm +PinSocket_2x47_P1.27mm_Horizontal +Through hole angled socket strip, 2x47, 1.27mm pitch, 4.4mm socket length, double cols (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD091.pdf&t=1511594177220), script generated +Through hole angled socket strip THT 2x47 1.27mm double row +0 +94 +94 +Connector_PinSocket_1.27mm +PinSocket_2x48_P1.27mm_Horizontal +Through hole angled socket strip, 2x48, 1.27mm pitch, 4.4mm socket length, double cols (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD091.pdf&t=1511594177220), script generated +Through hole angled socket strip THT 2x48 1.27mm double row +0 +96 +96 +Connector_PinSocket_1.27mm +PinSocket_2x49_P1.27mm_Horizontal +Through hole angled socket strip, 2x49, 1.27mm pitch, 4.4mm socket length, double cols (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD091.pdf&t=1511594177220), script generated +Through hole angled socket strip THT 2x49 1.27mm double row +0 +98 +98 +Connector_PinSocket_1.27mm +PinSocket_2x50_P1.27mm_Horizontal +Through hole angled socket strip, 2x50, 1.27mm pitch, 4.4mm socket length, double cols (https://gct.co/pdfjs/web/viewer.html?file=/Files/Drawings/BD091.pdf&t=1511594177220), script generated +Through hole angled socket strip THT 2x50 1.27mm double row +0 +100 +100 +Connector_PinSocket_2.00mm +PinSocket_1x01_P2.00mm_Horizontal +Through hole angled socket strip, 1x01, 2.00mm pitch, 6.35mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x01 2.00mm single row +0 +1 +1 +Connector_PinSocket_2.00mm +PinSocket_1x01_P2.00mm_Vertical +Through hole straight socket strip, 1x01, 2.00mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x01 2.00mm single row +0 +1 +1 +Connector_PinSocket_2.00mm +PinSocket_1x02_P2.00mm_Horizontal +Through hole angled socket strip, 1x02, 2.00mm pitch, 6.35mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x02 2.00mm single row +0 +2 +2 +Connector_PinSocket_2.00mm +PinSocket_1x02_P2.00mm_Vertical +Through hole straight socket strip, 1x02, 2.00mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x02 2.00mm single row +0 +2 +2 +Connector_PinSocket_2.00mm +PinSocket_1x02_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x02, 2.00mm pitch, single row, style 1 (pin 1 left) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x02 2.00mm single row style1 pin1 left +0 +2 +2 +Connector_PinSocket_2.00mm +PinSocket_1x02_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x02, 2.00mm pitch, single row, style 2 (pin 1 right) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x02 2.00mm single row style2 pin1 right +0 +2 +2 +Connector_PinSocket_2.00mm +PinSocket_1x03_P2.00mm_Horizontal +Through hole angled socket strip, 1x03, 2.00mm pitch, 6.35mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x03 2.00mm single row +0 +3 +3 +Connector_PinSocket_2.00mm +PinSocket_1x03_P2.00mm_Vertical +Through hole straight socket strip, 1x03, 2.00mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x03 2.00mm single row +0 +3 +3 +Connector_PinSocket_2.00mm +PinSocket_1x03_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x03, 2.00mm pitch, single row, style 1 (pin 1 left) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x03 2.00mm single row style1 pin1 left +0 +3 +3 +Connector_PinSocket_2.00mm +PinSocket_1x03_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x03, 2.00mm pitch, single row, style 2 (pin 1 right) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x03 2.00mm single row style2 pin1 right +0 +3 +3 +Connector_PinSocket_2.00mm +PinSocket_1x04_P2.00mm_Horizontal +Through hole angled socket strip, 1x04, 2.00mm pitch, 6.35mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x04 2.00mm single row +0 +4 +4 +Connector_PinSocket_2.00mm +PinSocket_1x04_P2.00mm_Vertical +Through hole straight socket strip, 1x04, 2.00mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x04 2.00mm single row +0 +4 +4 +Connector_PinSocket_2.00mm +PinSocket_1x04_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x04, 2.00mm pitch, single row, style 1 (pin 1 left) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x04 2.00mm single row style1 pin1 left +0 +4 +4 +Connector_PinSocket_2.00mm +PinSocket_1x04_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x04, 2.00mm pitch, single row, style 2 (pin 1 right) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x04 2.00mm single row style2 pin1 right +0 +4 +4 +Connector_PinSocket_2.00mm +PinSocket_1x05_P2.00mm_Horizontal +Through hole angled socket strip, 1x05, 2.00mm pitch, 6.35mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x05 2.00mm single row +0 +5 +5 +Connector_PinSocket_2.00mm +PinSocket_1x05_P2.00mm_Vertical +Through hole straight socket strip, 1x05, 2.00mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x05 2.00mm single row +0 +5 +5 +Connector_PinSocket_2.00mm +PinSocket_1x05_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x05, 2.00mm pitch, single row, style 1 (pin 1 left) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x05 2.00mm single row style1 pin1 left +0 +5 +5 +Connector_PinSocket_2.00mm +PinSocket_1x05_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x05, 2.00mm pitch, single row, style 2 (pin 1 right) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x05 2.00mm single row style2 pin1 right +0 +5 +5 +Connector_PinSocket_2.00mm +PinSocket_1x06_P2.00mm_Horizontal +Through hole angled socket strip, 1x06, 2.00mm pitch, 6.35mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x06 2.00mm single row +0 +6 +6 +Connector_PinSocket_2.00mm +PinSocket_1x06_P2.00mm_Vertical +Through hole straight socket strip, 1x06, 2.00mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x06 2.00mm single row +0 +6 +6 +Connector_PinSocket_2.00mm +PinSocket_1x06_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x06, 2.00mm pitch, single row, style 1 (pin 1 left) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x06 2.00mm single row style1 pin1 left +0 +6 +6 +Connector_PinSocket_2.00mm +PinSocket_1x06_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x06, 2.00mm pitch, single row, style 2 (pin 1 right) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x06 2.00mm single row style2 pin1 right +0 +6 +6 +Connector_PinSocket_2.00mm +PinSocket_1x07_P2.00mm_Horizontal +Through hole angled socket strip, 1x07, 2.00mm pitch, 6.35mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x07 2.00mm single row +0 +7 +7 +Connector_PinSocket_2.00mm +PinSocket_1x07_P2.00mm_Vertical +Through hole straight socket strip, 1x07, 2.00mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x07 2.00mm single row +0 +7 +7 +Connector_PinSocket_2.00mm +PinSocket_1x07_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x07, 2.00mm pitch, single row, style 1 (pin 1 left) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x07 2.00mm single row style1 pin1 left +0 +7 +7 +Connector_PinSocket_2.00mm +PinSocket_1x07_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x07, 2.00mm pitch, single row, style 2 (pin 1 right) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x07 2.00mm single row style2 pin1 right +0 +7 +7 +Connector_PinSocket_2.00mm +PinSocket_1x08_P2.00mm_Horizontal +Through hole angled socket strip, 1x08, 2.00mm pitch, 6.35mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x08 2.00mm single row +0 +8 +8 +Connector_PinSocket_2.00mm +PinSocket_1x08_P2.00mm_Vertical +Through hole straight socket strip, 1x08, 2.00mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x08 2.00mm single row +0 +8 +8 +Connector_PinSocket_2.00mm +PinSocket_1x08_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x08, 2.00mm pitch, single row, style 1 (pin 1 left) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x08 2.00mm single row style1 pin1 left +0 +8 +8 +Connector_PinSocket_2.00mm +PinSocket_1x08_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x08, 2.00mm pitch, single row, style 2 (pin 1 right) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x08 2.00mm single row style2 pin1 right +0 +8 +8 +Connector_PinSocket_2.00mm +PinSocket_1x09_P2.00mm_Horizontal +Through hole angled socket strip, 1x09, 2.00mm pitch, 6.35mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x09 2.00mm single row +0 +9 +9 +Connector_PinSocket_2.00mm +PinSocket_1x09_P2.00mm_Vertical +Through hole straight socket strip, 1x09, 2.00mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x09 2.00mm single row +0 +9 +9 +Connector_PinSocket_2.00mm +PinSocket_1x09_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x09, 2.00mm pitch, single row, style 1 (pin 1 left) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x09 2.00mm single row style1 pin1 left +0 +9 +9 +Connector_PinSocket_2.00mm +PinSocket_1x09_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x09, 2.00mm pitch, single row, style 2 (pin 1 right) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x09 2.00mm single row style2 pin1 right +0 +9 +9 +Connector_PinSocket_2.00mm +PinSocket_1x10_P2.00mm_Horizontal +Through hole angled socket strip, 1x10, 2.00mm pitch, 6.35mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x10 2.00mm single row +0 +10 +10 +Connector_PinSocket_2.00mm +PinSocket_1x10_P2.00mm_Vertical +Through hole straight socket strip, 1x10, 2.00mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x10 2.00mm single row +0 +10 +10 +Connector_PinSocket_2.00mm +PinSocket_1x10_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x10, 2.00mm pitch, single row, style 1 (pin 1 left) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x10 2.00mm single row style1 pin1 left +0 +10 +10 +Connector_PinSocket_2.00mm +PinSocket_1x10_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x10, 2.00mm pitch, single row, style 2 (pin 1 right) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x10 2.00mm single row style2 pin1 right +0 +10 +10 +Connector_PinSocket_2.00mm +PinSocket_1x11_P2.00mm_Horizontal +Through hole angled socket strip, 1x11, 2.00mm pitch, 6.35mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x11 2.00mm single row +0 +11 +11 +Connector_PinSocket_2.00mm +PinSocket_1x11_P2.00mm_Vertical +Through hole straight socket strip, 1x11, 2.00mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x11 2.00mm single row +0 +11 +11 +Connector_PinSocket_2.00mm +PinSocket_1x11_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x11, 2.00mm pitch, single row, style 1 (pin 1 left) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x11 2.00mm single row style1 pin1 left +0 +11 +11 +Connector_PinSocket_2.00mm +PinSocket_1x11_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x11, 2.00mm pitch, single row, style 2 (pin 1 right) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x11 2.00mm single row style2 pin1 right +0 +11 +11 +Connector_PinSocket_2.00mm +PinSocket_1x12_P2.00mm_Horizontal +Through hole angled socket strip, 1x12, 2.00mm pitch, 6.35mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x12 2.00mm single row +0 +12 +12 +Connector_PinSocket_2.00mm +PinSocket_1x12_P2.00mm_Vertical +Through hole straight socket strip, 1x12, 2.00mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x12 2.00mm single row +0 +12 +12 +Connector_PinSocket_2.00mm +PinSocket_1x12_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x12, 2.00mm pitch, single row, style 1 (pin 1 left) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x12 2.00mm single row style1 pin1 left +0 +12 +12 +Connector_PinSocket_2.00mm +PinSocket_1x12_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x12, 2.00mm pitch, single row, style 2 (pin 1 right) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x12 2.00mm single row style2 pin1 right +0 +12 +12 +Connector_PinSocket_2.00mm +PinSocket_1x13_P2.00mm_Horizontal +Through hole angled socket strip, 1x13, 2.00mm pitch, 6.35mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x13 2.00mm single row +0 +13 +13 +Connector_PinSocket_2.00mm +PinSocket_1x13_P2.00mm_Vertical +Through hole straight socket strip, 1x13, 2.00mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x13 2.00mm single row +0 +13 +13 +Connector_PinSocket_2.00mm +PinSocket_1x13_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x13, 2.00mm pitch, single row, style 1 (pin 1 left) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x13 2.00mm single row style1 pin1 left +0 +13 +13 +Connector_PinSocket_2.00mm +PinSocket_1x13_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x13, 2.00mm pitch, single row, style 2 (pin 1 right) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x13 2.00mm single row style2 pin1 right +0 +13 +13 +Connector_PinSocket_2.00mm +PinSocket_1x14_P2.00mm_Horizontal +Through hole angled socket strip, 1x14, 2.00mm pitch, 6.35mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x14 2.00mm single row +0 +14 +14 +Connector_PinSocket_2.00mm +PinSocket_1x14_P2.00mm_Vertical +Through hole straight socket strip, 1x14, 2.00mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x14 2.00mm single row +0 +14 +14 +Connector_PinSocket_2.00mm +PinSocket_1x14_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x14, 2.00mm pitch, single row, style 1 (pin 1 left) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x14 2.00mm single row style1 pin1 left +0 +14 +14 +Connector_PinSocket_2.00mm +PinSocket_1x14_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x14, 2.00mm pitch, single row, style 2 (pin 1 right) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x14 2.00mm single row style2 pin1 right +0 +14 +14 +Connector_PinSocket_2.00mm +PinSocket_1x15_P2.00mm_Horizontal +Through hole angled socket strip, 1x15, 2.00mm pitch, 6.35mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x15 2.00mm single row +0 +15 +15 +Connector_PinSocket_2.00mm +PinSocket_1x15_P2.00mm_Vertical +Through hole straight socket strip, 1x15, 2.00mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x15 2.00mm single row +0 +15 +15 +Connector_PinSocket_2.00mm +PinSocket_1x15_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x15, 2.00mm pitch, single row, style 1 (pin 1 left) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x15 2.00mm single row style1 pin1 left +0 +15 +15 +Connector_PinSocket_2.00mm +PinSocket_1x15_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x15, 2.00mm pitch, single row, style 2 (pin 1 right) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x15 2.00mm single row style2 pin1 right +0 +15 +15 +Connector_PinSocket_2.00mm +PinSocket_1x16_P2.00mm_Horizontal +Through hole angled socket strip, 1x16, 2.00mm pitch, 6.35mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x16 2.00mm single row +0 +16 +16 +Connector_PinSocket_2.00mm +PinSocket_1x16_P2.00mm_Vertical +Through hole straight socket strip, 1x16, 2.00mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x16 2.00mm single row +0 +16 +16 +Connector_PinSocket_2.00mm +PinSocket_1x16_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x16, 2.00mm pitch, single row, style 1 (pin 1 left) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x16 2.00mm single row style1 pin1 left +0 +16 +16 +Connector_PinSocket_2.00mm +PinSocket_1x16_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x16, 2.00mm pitch, single row, style 2 (pin 1 right) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x16 2.00mm single row style2 pin1 right +0 +16 +16 +Connector_PinSocket_2.00mm +PinSocket_1x17_P2.00mm_Horizontal +Through hole angled socket strip, 1x17, 2.00mm pitch, 6.35mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x17 2.00mm single row +0 +17 +17 +Connector_PinSocket_2.00mm +PinSocket_1x17_P2.00mm_Vertical +Through hole straight socket strip, 1x17, 2.00mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x17 2.00mm single row +0 +17 +17 +Connector_PinSocket_2.00mm +PinSocket_1x17_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x17, 2.00mm pitch, single row, style 1 (pin 1 left) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x17 2.00mm single row style1 pin1 left +0 +17 +17 +Connector_PinSocket_2.00mm +PinSocket_1x17_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x17, 2.00mm pitch, single row, style 2 (pin 1 right) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x17 2.00mm single row style2 pin1 right +0 +17 +17 +Connector_PinSocket_2.00mm +PinSocket_1x18_P2.00mm_Horizontal +Through hole angled socket strip, 1x18, 2.00mm pitch, 6.35mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x18 2.00mm single row +0 +18 +18 +Connector_PinSocket_2.00mm +PinSocket_1x18_P2.00mm_Vertical +Through hole straight socket strip, 1x18, 2.00mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x18 2.00mm single row +0 +18 +18 +Connector_PinSocket_2.00mm +PinSocket_1x18_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x18, 2.00mm pitch, single row, style 1 (pin 1 left) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x18 2.00mm single row style1 pin1 left +0 +18 +18 +Connector_PinSocket_2.00mm +PinSocket_1x18_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x18, 2.00mm pitch, single row, style 2 (pin 1 right) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x18 2.00mm single row style2 pin1 right +0 +18 +18 +Connector_PinSocket_2.00mm +PinSocket_1x19_P2.00mm_Horizontal +Through hole angled socket strip, 1x19, 2.00mm pitch, 6.35mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x19 2.00mm single row +0 +19 +19 +Connector_PinSocket_2.00mm +PinSocket_1x19_P2.00mm_Vertical +Through hole straight socket strip, 1x19, 2.00mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x19 2.00mm single row +0 +19 +19 +Connector_PinSocket_2.00mm +PinSocket_1x19_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x19, 2.00mm pitch, single row, style 1 (pin 1 left) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x19 2.00mm single row style1 pin1 left +0 +19 +19 +Connector_PinSocket_2.00mm +PinSocket_1x19_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x19, 2.00mm pitch, single row, style 2 (pin 1 right) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x19 2.00mm single row style2 pin1 right +0 +19 +19 +Connector_PinSocket_2.00mm +PinSocket_1x20_P2.00mm_Horizontal +Through hole angled socket strip, 1x20, 2.00mm pitch, 6.35mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x20 2.00mm single row +0 +20 +20 +Connector_PinSocket_2.00mm +PinSocket_1x20_P2.00mm_Vertical +Through hole straight socket strip, 1x20, 2.00mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x20 2.00mm single row +0 +20 +20 +Connector_PinSocket_2.00mm +PinSocket_1x20_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x20, 2.00mm pitch, single row, style 1 (pin 1 left) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x20 2.00mm single row style1 pin1 left +0 +20 +20 +Connector_PinSocket_2.00mm +PinSocket_1x20_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x20, 2.00mm pitch, single row, style 2 (pin 1 right) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x20 2.00mm single row style2 pin1 right +0 +20 +20 +Connector_PinSocket_2.00mm +PinSocket_1x21_P2.00mm_Horizontal +Through hole angled socket strip, 1x21, 2.00mm pitch, 6.35mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x21 2.00mm single row +0 +21 +21 +Connector_PinSocket_2.00mm +PinSocket_1x21_P2.00mm_Vertical +Through hole straight socket strip, 1x21, 2.00mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x21 2.00mm single row +0 +21 +21 +Connector_PinSocket_2.00mm +PinSocket_1x21_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x21, 2.00mm pitch, single row, style 1 (pin 1 left) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x21 2.00mm single row style1 pin1 left +0 +21 +21 +Connector_PinSocket_2.00mm +PinSocket_1x21_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x21, 2.00mm pitch, single row, style 2 (pin 1 right) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x21 2.00mm single row style2 pin1 right +0 +21 +21 +Connector_PinSocket_2.00mm +PinSocket_1x22_P2.00mm_Horizontal +Through hole angled socket strip, 1x22, 2.00mm pitch, 6.35mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x22 2.00mm single row +0 +22 +22 +Connector_PinSocket_2.00mm +PinSocket_1x22_P2.00mm_Vertical +Through hole straight socket strip, 1x22, 2.00mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x22 2.00mm single row +0 +22 +22 +Connector_PinSocket_2.00mm +PinSocket_1x22_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x22, 2.00mm pitch, single row, style 1 (pin 1 left) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x22 2.00mm single row style1 pin1 left +0 +22 +22 +Connector_PinSocket_2.00mm +PinSocket_1x22_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x22, 2.00mm pitch, single row, style 2 (pin 1 right) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x22 2.00mm single row style2 pin1 right +0 +22 +22 +Connector_PinSocket_2.00mm +PinSocket_1x23_P2.00mm_Horizontal +Through hole angled socket strip, 1x23, 2.00mm pitch, 6.35mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x23 2.00mm single row +0 +23 +23 +Connector_PinSocket_2.00mm +PinSocket_1x23_P2.00mm_Vertical +Through hole straight socket strip, 1x23, 2.00mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x23 2.00mm single row +0 +23 +23 +Connector_PinSocket_2.00mm +PinSocket_1x23_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x23, 2.00mm pitch, single row, style 1 (pin 1 left) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x23 2.00mm single row style1 pin1 left +0 +23 +23 +Connector_PinSocket_2.00mm +PinSocket_1x23_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x23, 2.00mm pitch, single row, style 2 (pin 1 right) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x23 2.00mm single row style2 pin1 right +0 +23 +23 +Connector_PinSocket_2.00mm +PinSocket_1x24_P2.00mm_Horizontal +Through hole angled socket strip, 1x24, 2.00mm pitch, 6.35mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x24 2.00mm single row +0 +24 +24 +Connector_PinSocket_2.00mm +PinSocket_1x24_P2.00mm_Vertical +Through hole straight socket strip, 1x24, 2.00mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x24 2.00mm single row +0 +24 +24 +Connector_PinSocket_2.00mm +PinSocket_1x24_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x24, 2.00mm pitch, single row, style 1 (pin 1 left) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x24 2.00mm single row style1 pin1 left +0 +24 +24 +Connector_PinSocket_2.00mm +PinSocket_1x24_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x24, 2.00mm pitch, single row, style 2 (pin 1 right) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x24 2.00mm single row style2 pin1 right +0 +24 +24 +Connector_PinSocket_2.00mm +PinSocket_1x25_P2.00mm_Horizontal +Through hole angled socket strip, 1x25, 2.00mm pitch, 6.35mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x25 2.00mm single row +0 +25 +25 +Connector_PinSocket_2.00mm +PinSocket_1x25_P2.00mm_Vertical +Through hole straight socket strip, 1x25, 2.00mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x25 2.00mm single row +0 +25 +25 +Connector_PinSocket_2.00mm +PinSocket_1x25_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x25, 2.00mm pitch, single row, style 1 (pin 1 left) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x25 2.00mm single row style1 pin1 left +0 +25 +25 +Connector_PinSocket_2.00mm +PinSocket_1x25_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x25, 2.00mm pitch, single row, style 2 (pin 1 right) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x25 2.00mm single row style2 pin1 right +0 +25 +25 +Connector_PinSocket_2.00mm +PinSocket_1x26_P2.00mm_Horizontal +Through hole angled socket strip, 1x26, 2.00mm pitch, 6.35mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x26 2.00mm single row +0 +26 +26 +Connector_PinSocket_2.00mm +PinSocket_1x26_P2.00mm_Vertical +Through hole straight socket strip, 1x26, 2.00mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x26 2.00mm single row +0 +26 +26 +Connector_PinSocket_2.00mm +PinSocket_1x26_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x26, 2.00mm pitch, single row, style 1 (pin 1 left) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x26 2.00mm single row style1 pin1 left +0 +26 +26 +Connector_PinSocket_2.00mm +PinSocket_1x26_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x26, 2.00mm pitch, single row, style 2 (pin 1 right) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x26 2.00mm single row style2 pin1 right +0 +26 +26 +Connector_PinSocket_2.00mm +PinSocket_1x27_P2.00mm_Horizontal +Through hole angled socket strip, 1x27, 2.00mm pitch, 6.35mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x27 2.00mm single row +0 +27 +27 +Connector_PinSocket_2.00mm +PinSocket_1x27_P2.00mm_Vertical +Through hole straight socket strip, 1x27, 2.00mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x27 2.00mm single row +0 +27 +27 +Connector_PinSocket_2.00mm +PinSocket_1x27_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x27, 2.00mm pitch, single row, style 1 (pin 1 left) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x27 2.00mm single row style1 pin1 left +0 +27 +27 +Connector_PinSocket_2.00mm +PinSocket_1x27_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x27, 2.00mm pitch, single row, style 2 (pin 1 right) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x27 2.00mm single row style2 pin1 right +0 +27 +27 +Connector_PinSocket_2.00mm +PinSocket_1x28_P2.00mm_Horizontal +Through hole angled socket strip, 1x28, 2.00mm pitch, 6.35mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x28 2.00mm single row +0 +28 +28 +Connector_PinSocket_2.00mm +PinSocket_1x28_P2.00mm_Vertical +Through hole straight socket strip, 1x28, 2.00mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x28 2.00mm single row +0 +28 +28 +Connector_PinSocket_2.00mm +PinSocket_1x28_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x28, 2.00mm pitch, single row, style 1 (pin 1 left) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x28 2.00mm single row style1 pin1 left +0 +28 +28 +Connector_PinSocket_2.00mm +PinSocket_1x28_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x28, 2.00mm pitch, single row, style 2 (pin 1 right) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x28 2.00mm single row style2 pin1 right +0 +28 +28 +Connector_PinSocket_2.00mm +PinSocket_1x29_P2.00mm_Horizontal +Through hole angled socket strip, 1x29, 2.00mm pitch, 6.35mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x29 2.00mm single row +0 +29 +29 +Connector_PinSocket_2.00mm +PinSocket_1x29_P2.00mm_Vertical +Through hole straight socket strip, 1x29, 2.00mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x29 2.00mm single row +0 +29 +29 +Connector_PinSocket_2.00mm +PinSocket_1x29_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x29, 2.00mm pitch, single row, style 1 (pin 1 left) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x29 2.00mm single row style1 pin1 left +0 +29 +29 +Connector_PinSocket_2.00mm +PinSocket_1x29_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x29, 2.00mm pitch, single row, style 2 (pin 1 right) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x29 2.00mm single row style2 pin1 right +0 +29 +29 +Connector_PinSocket_2.00mm +PinSocket_1x30_P2.00mm_Horizontal +Through hole angled socket strip, 1x30, 2.00mm pitch, 6.35mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x30 2.00mm single row +0 +30 +30 +Connector_PinSocket_2.00mm +PinSocket_1x30_P2.00mm_Vertical +Through hole straight socket strip, 1x30, 2.00mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x30 2.00mm single row +0 +30 +30 +Connector_PinSocket_2.00mm +PinSocket_1x30_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x30, 2.00mm pitch, single row, style 1 (pin 1 left) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x30 2.00mm single row style1 pin1 left +0 +30 +30 +Connector_PinSocket_2.00mm +PinSocket_1x30_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x30, 2.00mm pitch, single row, style 2 (pin 1 right) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x30 2.00mm single row style2 pin1 right +0 +30 +30 +Connector_PinSocket_2.00mm +PinSocket_1x31_P2.00mm_Horizontal +Through hole angled socket strip, 1x31, 2.00mm pitch, 6.35mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x31 2.00mm single row +0 +31 +31 +Connector_PinSocket_2.00mm +PinSocket_1x31_P2.00mm_Vertical +Through hole straight socket strip, 1x31, 2.00mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x31 2.00mm single row +0 +31 +31 +Connector_PinSocket_2.00mm +PinSocket_1x31_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x31, 2.00mm pitch, single row, style 1 (pin 1 left) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x31 2.00mm single row style1 pin1 left +0 +31 +31 +Connector_PinSocket_2.00mm +PinSocket_1x31_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x31, 2.00mm pitch, single row, style 2 (pin 1 right) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x31 2.00mm single row style2 pin1 right +0 +31 +31 +Connector_PinSocket_2.00mm +PinSocket_1x32_P2.00mm_Horizontal +Through hole angled socket strip, 1x32, 2.00mm pitch, 6.35mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x32 2.00mm single row +0 +32 +32 +Connector_PinSocket_2.00mm +PinSocket_1x32_P2.00mm_Vertical +Through hole straight socket strip, 1x32, 2.00mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x32 2.00mm single row +0 +32 +32 +Connector_PinSocket_2.00mm +PinSocket_1x32_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x32, 2.00mm pitch, single row, style 1 (pin 1 left) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x32 2.00mm single row style1 pin1 left +0 +32 +32 +Connector_PinSocket_2.00mm +PinSocket_1x32_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x32, 2.00mm pitch, single row, style 2 (pin 1 right) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x32 2.00mm single row style2 pin1 right +0 +32 +32 +Connector_PinSocket_2.00mm +PinSocket_1x33_P2.00mm_Horizontal +Through hole angled socket strip, 1x33, 2.00mm pitch, 6.35mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x33 2.00mm single row +0 +33 +33 +Connector_PinSocket_2.00mm +PinSocket_1x33_P2.00mm_Vertical +Through hole straight socket strip, 1x33, 2.00mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x33 2.00mm single row +0 +33 +33 +Connector_PinSocket_2.00mm +PinSocket_1x33_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x33, 2.00mm pitch, single row, style 1 (pin 1 left) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x33 2.00mm single row style1 pin1 left +0 +33 +33 +Connector_PinSocket_2.00mm +PinSocket_1x33_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x33, 2.00mm pitch, single row, style 2 (pin 1 right) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x33 2.00mm single row style2 pin1 right +0 +33 +33 +Connector_PinSocket_2.00mm +PinSocket_1x34_P2.00mm_Horizontal +Through hole angled socket strip, 1x34, 2.00mm pitch, 6.35mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x34 2.00mm single row +0 +34 +34 +Connector_PinSocket_2.00mm +PinSocket_1x34_P2.00mm_Vertical +Through hole straight socket strip, 1x34, 2.00mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x34 2.00mm single row +0 +34 +34 +Connector_PinSocket_2.00mm +PinSocket_1x34_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x34, 2.00mm pitch, single row, style 1 (pin 1 left) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x34 2.00mm single row style1 pin1 left +0 +34 +34 +Connector_PinSocket_2.00mm +PinSocket_1x34_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x34, 2.00mm pitch, single row, style 2 (pin 1 right) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x34 2.00mm single row style2 pin1 right +0 +34 +34 +Connector_PinSocket_2.00mm +PinSocket_1x35_P2.00mm_Horizontal +Through hole angled socket strip, 1x35, 2.00mm pitch, 6.35mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x35 2.00mm single row +0 +35 +35 +Connector_PinSocket_2.00mm +PinSocket_1x35_P2.00mm_Vertical +Through hole straight socket strip, 1x35, 2.00mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x35 2.00mm single row +0 +35 +35 +Connector_PinSocket_2.00mm +PinSocket_1x35_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x35, 2.00mm pitch, single row, style 1 (pin 1 left) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x35 2.00mm single row style1 pin1 left +0 +35 +35 +Connector_PinSocket_2.00mm +PinSocket_1x35_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x35, 2.00mm pitch, single row, style 2 (pin 1 right) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x35 2.00mm single row style2 pin1 right +0 +35 +35 +Connector_PinSocket_2.00mm +PinSocket_1x36_P2.00mm_Horizontal +Through hole angled socket strip, 1x36, 2.00mm pitch, 6.35mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x36 2.00mm single row +0 +36 +36 +Connector_PinSocket_2.00mm +PinSocket_1x36_P2.00mm_Vertical +Through hole straight socket strip, 1x36, 2.00mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x36 2.00mm single row +0 +36 +36 +Connector_PinSocket_2.00mm +PinSocket_1x36_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x36, 2.00mm pitch, single row, style 1 (pin 1 left) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x36 2.00mm single row style1 pin1 left +0 +36 +36 +Connector_PinSocket_2.00mm +PinSocket_1x36_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x36, 2.00mm pitch, single row, style 2 (pin 1 right) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x36 2.00mm single row style2 pin1 right +0 +36 +36 +Connector_PinSocket_2.00mm +PinSocket_1x37_P2.00mm_Horizontal +Through hole angled socket strip, 1x37, 2.00mm pitch, 6.35mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x37 2.00mm single row +0 +37 +37 +Connector_PinSocket_2.00mm +PinSocket_1x37_P2.00mm_Vertical +Through hole straight socket strip, 1x37, 2.00mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x37 2.00mm single row +0 +37 +37 +Connector_PinSocket_2.00mm +PinSocket_1x37_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x37, 2.00mm pitch, single row, style 1 (pin 1 left) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x37 2.00mm single row style1 pin1 left +0 +37 +37 +Connector_PinSocket_2.00mm +PinSocket_1x37_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x37, 2.00mm pitch, single row, style 2 (pin 1 right) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x37 2.00mm single row style2 pin1 right +0 +37 +37 +Connector_PinSocket_2.00mm +PinSocket_1x38_P2.00mm_Horizontal +Through hole angled socket strip, 1x38, 2.00mm pitch, 6.35mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x38 2.00mm single row +0 +38 +38 +Connector_PinSocket_2.00mm +PinSocket_1x38_P2.00mm_Vertical +Through hole straight socket strip, 1x38, 2.00mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x38 2.00mm single row +0 +38 +38 +Connector_PinSocket_2.00mm +PinSocket_1x38_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x38, 2.00mm pitch, single row, style 1 (pin 1 left) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x38 2.00mm single row style1 pin1 left +0 +38 +38 +Connector_PinSocket_2.00mm +PinSocket_1x38_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x38, 2.00mm pitch, single row, style 2 (pin 1 right) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x38 2.00mm single row style2 pin1 right +0 +38 +38 +Connector_PinSocket_2.00mm +PinSocket_1x39_P2.00mm_Horizontal +Through hole angled socket strip, 1x39, 2.00mm pitch, 6.35mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x39 2.00mm single row +0 +39 +39 +Connector_PinSocket_2.00mm +PinSocket_1x39_P2.00mm_Vertical +Through hole straight socket strip, 1x39, 2.00mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x39 2.00mm single row +0 +39 +39 +Connector_PinSocket_2.00mm +PinSocket_1x39_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x39, 2.00mm pitch, single row, style 1 (pin 1 left) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x39 2.00mm single row style1 pin1 left +0 +39 +39 +Connector_PinSocket_2.00mm +PinSocket_1x39_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x39, 2.00mm pitch, single row, style 2 (pin 1 right) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x39 2.00mm single row style2 pin1 right +0 +39 +39 +Connector_PinSocket_2.00mm +PinSocket_1x40_P2.00mm_Horizontal +Through hole angled socket strip, 1x40, 2.00mm pitch, 6.35mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x40 2.00mm single row +0 +40 +40 +Connector_PinSocket_2.00mm +PinSocket_1x40_P2.00mm_Vertical +Through hole straight socket strip, 1x40, 2.00mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x40 2.00mm single row +0 +40 +40 +Connector_PinSocket_2.00mm +PinSocket_1x40_P2.00mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x40, 2.00mm pitch, single row, style 1 (pin 1 left) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x40 2.00mm single row style1 pin1 left +0 +40 +40 +Connector_PinSocket_2.00mm +PinSocket_1x40_P2.00mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x40, 2.00mm pitch, single row, style 2 (pin 1 right) (https://www.jayconsystems.com/fileuploader/download/download/?d=1&file=custom%2Fupload%2FFile-1375728122.pdf), script generated +Surface mounted socket strip SMD 1x40 2.00mm single row style2 pin1 right +0 +40 +40 +Connector_PinSocket_2.00mm +PinSocket_2x01_P2.00mm_Horizontal +Through hole angled socket strip, 2x01, 2.00mm pitch, 6.35mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x01 2.00mm double row +0 +2 +2 +Connector_PinSocket_2.00mm +PinSocket_2x01_P2.00mm_Vertical +Through hole straight socket strip, 2x01, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x01 2.00mm double row +0 +2 +2 +Connector_PinSocket_2.00mm +PinSocket_2x01_P2.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x01, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x01 2.00mm double row +0 +2 +2 +Connector_PinSocket_2.00mm +PinSocket_2x02_P2.00mm_Horizontal +Through hole angled socket strip, 2x02, 2.00mm pitch, 6.35mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x02 2.00mm double row +0 +4 +4 +Connector_PinSocket_2.00mm +PinSocket_2x02_P2.00mm_Vertical +Through hole straight socket strip, 2x02, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x02 2.00mm double row +0 +4 +4 +Connector_PinSocket_2.00mm +PinSocket_2x02_P2.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x02, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x02 2.00mm double row +0 +4 +4 +Connector_PinSocket_2.00mm +PinSocket_2x03_P2.00mm_Horizontal +Through hole angled socket strip, 2x03, 2.00mm pitch, 6.35mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x03 2.00mm double row +0 +6 +6 +Connector_PinSocket_2.00mm +PinSocket_2x03_P2.00mm_Vertical +Through hole straight socket strip, 2x03, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x03 2.00mm double row +0 +6 +6 +Connector_PinSocket_2.00mm +PinSocket_2x03_P2.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x03, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x03 2.00mm double row +0 +6 +6 +Connector_PinSocket_2.00mm +PinSocket_2x04_P2.00mm_Horizontal +Through hole angled socket strip, 2x04, 2.00mm pitch, 6.35mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x04 2.00mm double row +0 +8 +8 +Connector_PinSocket_2.00mm +PinSocket_2x04_P2.00mm_Vertical +Through hole straight socket strip, 2x04, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x04 2.00mm double row +0 +8 +8 +Connector_PinSocket_2.00mm +PinSocket_2x04_P2.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x04, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x04 2.00mm double row +0 +8 +8 +Connector_PinSocket_2.00mm +PinSocket_2x05_P2.00mm_Horizontal +Through hole angled socket strip, 2x05, 2.00mm pitch, 6.35mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x05 2.00mm double row +0 +10 +10 +Connector_PinSocket_2.00mm +PinSocket_2x05_P2.00mm_Vertical +Through hole straight socket strip, 2x05, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x05 2.00mm double row +0 +10 +10 +Connector_PinSocket_2.00mm +PinSocket_2x05_P2.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x05, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x05 2.00mm double row +0 +10 +10 +Connector_PinSocket_2.00mm +PinSocket_2x06_P2.00mm_Horizontal +Through hole angled socket strip, 2x06, 2.00mm pitch, 6.35mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x06 2.00mm double row +0 +12 +12 +Connector_PinSocket_2.00mm +PinSocket_2x06_P2.00mm_Vertical +Through hole straight socket strip, 2x06, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x06 2.00mm double row +0 +12 +12 +Connector_PinSocket_2.00mm +PinSocket_2x06_P2.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x06, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x06 2.00mm double row +0 +12 +12 +Connector_PinSocket_2.00mm +PinSocket_2x07_P2.00mm_Horizontal +Through hole angled socket strip, 2x07, 2.00mm pitch, 6.35mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x07 2.00mm double row +0 +14 +14 +Connector_PinSocket_2.00mm +PinSocket_2x07_P2.00mm_Vertical +Through hole straight socket strip, 2x07, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x07 2.00mm double row +0 +14 +14 +Connector_PinSocket_2.00mm +PinSocket_2x07_P2.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x07, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x07 2.00mm double row +0 +14 +14 +Connector_PinSocket_2.00mm +PinSocket_2x08_P2.00mm_Horizontal +Through hole angled socket strip, 2x08, 2.00mm pitch, 6.35mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x08 2.00mm double row +0 +16 +16 +Connector_PinSocket_2.00mm +PinSocket_2x08_P2.00mm_Vertical +Through hole straight socket strip, 2x08, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x08 2.00mm double row +0 +16 +16 +Connector_PinSocket_2.00mm +PinSocket_2x08_P2.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x08, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x08 2.00mm double row +0 +16 +16 +Connector_PinSocket_2.00mm +PinSocket_2x09_P2.00mm_Horizontal +Through hole angled socket strip, 2x09, 2.00mm pitch, 6.35mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x09 2.00mm double row +0 +18 +18 +Connector_PinSocket_2.00mm +PinSocket_2x09_P2.00mm_Vertical +Through hole straight socket strip, 2x09, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x09 2.00mm double row +0 +18 +18 +Connector_PinSocket_2.00mm +PinSocket_2x09_P2.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x09, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x09 2.00mm double row +0 +18 +18 +Connector_PinSocket_2.00mm +PinSocket_2x10_P2.00mm_Horizontal +Through hole angled socket strip, 2x10, 2.00mm pitch, 6.35mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x10 2.00mm double row +0 +20 +20 +Connector_PinSocket_2.00mm +PinSocket_2x10_P2.00mm_Vertical +Through hole straight socket strip, 2x10, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x10 2.00mm double row +0 +20 +20 +Connector_PinSocket_2.00mm +PinSocket_2x10_P2.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x10, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x10 2.00mm double row +0 +20 +20 +Connector_PinSocket_2.00mm +PinSocket_2x11_P2.00mm_Horizontal +Through hole angled socket strip, 2x11, 2.00mm pitch, 6.35mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x11 2.00mm double row +0 +22 +22 +Connector_PinSocket_2.00mm +PinSocket_2x11_P2.00mm_Vertical +Through hole straight socket strip, 2x11, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x11 2.00mm double row +0 +22 +22 +Connector_PinSocket_2.00mm +PinSocket_2x11_P2.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x11, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x11 2.00mm double row +0 +22 +22 +Connector_PinSocket_2.00mm +PinSocket_2x12_P2.00mm_Horizontal +Through hole angled socket strip, 2x12, 2.00mm pitch, 6.35mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x12 2.00mm double row +0 +24 +24 +Connector_PinSocket_2.00mm +PinSocket_2x12_P2.00mm_Vertical +Through hole straight socket strip, 2x12, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x12 2.00mm double row +0 +24 +24 +Connector_PinSocket_2.00mm +PinSocket_2x12_P2.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x12, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x12 2.00mm double row +0 +24 +24 +Connector_PinSocket_2.00mm +PinSocket_2x13_P2.00mm_Horizontal +Through hole angled socket strip, 2x13, 2.00mm pitch, 6.35mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x13 2.00mm double row +0 +26 +26 +Connector_PinSocket_2.00mm +PinSocket_2x13_P2.00mm_Vertical +Through hole straight socket strip, 2x13, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x13 2.00mm double row +0 +26 +26 +Connector_PinSocket_2.00mm +PinSocket_2x13_P2.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x13, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x13 2.00mm double row +0 +26 +26 +Connector_PinSocket_2.00mm +PinSocket_2x14_P2.00mm_Horizontal +Through hole angled socket strip, 2x14, 2.00mm pitch, 6.35mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x14 2.00mm double row +0 +28 +28 +Connector_PinSocket_2.00mm +PinSocket_2x14_P2.00mm_Vertical +Through hole straight socket strip, 2x14, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x14 2.00mm double row +0 +28 +28 +Connector_PinSocket_2.00mm +PinSocket_2x14_P2.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x14, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x14 2.00mm double row +0 +28 +28 +Connector_PinSocket_2.00mm +PinSocket_2x15_P2.00mm_Horizontal +Through hole angled socket strip, 2x15, 2.00mm pitch, 6.35mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x15 2.00mm double row +0 +30 +30 +Connector_PinSocket_2.00mm +PinSocket_2x15_P2.00mm_Vertical +Through hole straight socket strip, 2x15, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x15 2.00mm double row +0 +30 +30 +Connector_PinSocket_2.00mm +PinSocket_2x15_P2.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x15, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x15 2.00mm double row +0 +30 +30 +Connector_PinSocket_2.00mm +PinSocket_2x16_P2.00mm_Horizontal +Through hole angled socket strip, 2x16, 2.00mm pitch, 6.35mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x16 2.00mm double row +0 +32 +32 +Connector_PinSocket_2.00mm +PinSocket_2x16_P2.00mm_Vertical +Through hole straight socket strip, 2x16, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x16 2.00mm double row +0 +32 +32 +Connector_PinSocket_2.00mm +PinSocket_2x16_P2.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x16, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x16 2.00mm double row +0 +32 +32 +Connector_PinSocket_2.00mm +PinSocket_2x17_P2.00mm_Horizontal +Through hole angled socket strip, 2x17, 2.00mm pitch, 6.35mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x17 2.00mm double row +0 +34 +34 +Connector_PinSocket_2.00mm +PinSocket_2x17_P2.00mm_Vertical +Through hole straight socket strip, 2x17, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x17 2.00mm double row +0 +34 +34 +Connector_PinSocket_2.00mm +PinSocket_2x17_P2.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x17, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x17 2.00mm double row +0 +34 +34 +Connector_PinSocket_2.00mm +PinSocket_2x18_P2.00mm_Horizontal +Through hole angled socket strip, 2x18, 2.00mm pitch, 6.35mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x18 2.00mm double row +0 +36 +36 +Connector_PinSocket_2.00mm +PinSocket_2x18_P2.00mm_Vertical +Through hole straight socket strip, 2x18, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x18 2.00mm double row +0 +36 +36 +Connector_PinSocket_2.00mm +PinSocket_2x18_P2.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x18, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x18 2.00mm double row +0 +36 +36 +Connector_PinSocket_2.00mm +PinSocket_2x19_P2.00mm_Horizontal +Through hole angled socket strip, 2x19, 2.00mm pitch, 6.35mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x19 2.00mm double row +0 +38 +38 +Connector_PinSocket_2.00mm +PinSocket_2x19_P2.00mm_Vertical +Through hole straight socket strip, 2x19, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x19 2.00mm double row +0 +38 +38 +Connector_PinSocket_2.00mm +PinSocket_2x19_P2.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x19, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x19 2.00mm double row +0 +38 +38 +Connector_PinSocket_2.00mm +PinSocket_2x20_P2.00mm_Horizontal +Through hole angled socket strip, 2x20, 2.00mm pitch, 6.35mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x20 2.00mm double row +0 +40 +40 +Connector_PinSocket_2.00mm +PinSocket_2x20_P2.00mm_Vertical +Through hole straight socket strip, 2x20, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x20 2.00mm double row +0 +40 +40 +Connector_PinSocket_2.00mm +PinSocket_2x20_P2.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x20, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x20 2.00mm double row +0 +40 +40 +Connector_PinSocket_2.00mm +PinSocket_2x21_P2.00mm_Horizontal +Through hole angled socket strip, 2x21, 2.00mm pitch, 6.35mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x21 2.00mm double row +0 +42 +42 +Connector_PinSocket_2.00mm +PinSocket_2x21_P2.00mm_Vertical +Through hole straight socket strip, 2x21, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x21 2.00mm double row +0 +42 +42 +Connector_PinSocket_2.00mm +PinSocket_2x21_P2.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x21, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x21 2.00mm double row +0 +42 +42 +Connector_PinSocket_2.00mm +PinSocket_2x22_P2.00mm_Horizontal +Through hole angled socket strip, 2x22, 2.00mm pitch, 6.35mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x22 2.00mm double row +0 +44 +44 +Connector_PinSocket_2.00mm +PinSocket_2x22_P2.00mm_Vertical +Through hole straight socket strip, 2x22, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x22 2.00mm double row +0 +44 +44 +Connector_PinSocket_2.00mm +PinSocket_2x22_P2.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x22, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x22 2.00mm double row +0 +44 +44 +Connector_PinSocket_2.00mm +PinSocket_2x23_P2.00mm_Horizontal +Through hole angled socket strip, 2x23, 2.00mm pitch, 6.35mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x23 2.00mm double row +0 +46 +46 +Connector_PinSocket_2.00mm +PinSocket_2x23_P2.00mm_Vertical +Through hole straight socket strip, 2x23, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x23 2.00mm double row +0 +46 +46 +Connector_PinSocket_2.00mm +PinSocket_2x23_P2.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x23, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x23 2.00mm double row +0 +46 +46 +Connector_PinSocket_2.00mm +PinSocket_2x24_P2.00mm_Horizontal +Through hole angled socket strip, 2x24, 2.00mm pitch, 6.35mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x24 2.00mm double row +0 +48 +48 +Connector_PinSocket_2.00mm +PinSocket_2x24_P2.00mm_Vertical +Through hole straight socket strip, 2x24, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x24 2.00mm double row +0 +48 +48 +Connector_PinSocket_2.00mm +PinSocket_2x24_P2.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x24, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x24 2.00mm double row +0 +48 +48 +Connector_PinSocket_2.00mm +PinSocket_2x25_P2.00mm_Horizontal +Through hole angled socket strip, 2x25, 2.00mm pitch, 6.35mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x25 2.00mm double row +0 +50 +50 +Connector_PinSocket_2.00mm +PinSocket_2x25_P2.00mm_Vertical +Through hole straight socket strip, 2x25, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x25 2.00mm double row +0 +50 +50 +Connector_PinSocket_2.00mm +PinSocket_2x25_P2.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x25, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x25 2.00mm double row +0 +50 +50 +Connector_PinSocket_2.00mm +PinSocket_2x26_P2.00mm_Horizontal +Through hole angled socket strip, 2x26, 2.00mm pitch, 6.35mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x26 2.00mm double row +0 +52 +52 +Connector_PinSocket_2.00mm +PinSocket_2x26_P2.00mm_Vertical +Through hole straight socket strip, 2x26, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x26 2.00mm double row +0 +52 +52 +Connector_PinSocket_2.00mm +PinSocket_2x26_P2.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x26, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x26 2.00mm double row +0 +52 +52 +Connector_PinSocket_2.00mm +PinSocket_2x27_P2.00mm_Horizontal +Through hole angled socket strip, 2x27, 2.00mm pitch, 6.35mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x27 2.00mm double row +0 +54 +54 +Connector_PinSocket_2.00mm +PinSocket_2x27_P2.00mm_Vertical +Through hole straight socket strip, 2x27, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x27 2.00mm double row +0 +54 +54 +Connector_PinSocket_2.00mm +PinSocket_2x27_P2.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x27, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x27 2.00mm double row +0 +54 +54 +Connector_PinSocket_2.00mm +PinSocket_2x28_P2.00mm_Horizontal +Through hole angled socket strip, 2x28, 2.00mm pitch, 6.35mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x28 2.00mm double row +0 +56 +56 +Connector_PinSocket_2.00mm +PinSocket_2x28_P2.00mm_Vertical +Through hole straight socket strip, 2x28, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x28 2.00mm double row +0 +56 +56 +Connector_PinSocket_2.00mm +PinSocket_2x28_P2.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x28, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x28 2.00mm double row +0 +56 +56 +Connector_PinSocket_2.00mm +PinSocket_2x29_P2.00mm_Horizontal +Through hole angled socket strip, 2x29, 2.00mm pitch, 6.35mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x29 2.00mm double row +0 +58 +58 +Connector_PinSocket_2.00mm +PinSocket_2x29_P2.00mm_Vertical +Through hole straight socket strip, 2x29, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x29 2.00mm double row +0 +58 +58 +Connector_PinSocket_2.00mm +PinSocket_2x29_P2.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x29, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x29 2.00mm double row +0 +58 +58 +Connector_PinSocket_2.00mm +PinSocket_2x30_P2.00mm_Horizontal +Through hole angled socket strip, 2x30, 2.00mm pitch, 6.35mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x30 2.00mm double row +0 +60 +60 +Connector_PinSocket_2.00mm +PinSocket_2x30_P2.00mm_Vertical +Through hole straight socket strip, 2x30, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x30 2.00mm double row +0 +60 +60 +Connector_PinSocket_2.00mm +PinSocket_2x30_P2.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x30, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x30 2.00mm double row +0 +60 +60 +Connector_PinSocket_2.00mm +PinSocket_2x31_P2.00mm_Horizontal +Through hole angled socket strip, 2x31, 2.00mm pitch, 6.35mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x31 2.00mm double row +0 +62 +62 +Connector_PinSocket_2.00mm +PinSocket_2x31_P2.00mm_Vertical +Through hole straight socket strip, 2x31, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x31 2.00mm double row +0 +62 +62 +Connector_PinSocket_2.00mm +PinSocket_2x31_P2.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x31, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x31 2.00mm double row +0 +62 +62 +Connector_PinSocket_2.00mm +PinSocket_2x32_P2.00mm_Horizontal +Through hole angled socket strip, 2x32, 2.00mm pitch, 6.35mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x32 2.00mm double row +0 +64 +64 +Connector_PinSocket_2.00mm +PinSocket_2x32_P2.00mm_Vertical +Through hole straight socket strip, 2x32, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x32 2.00mm double row +0 +64 +64 +Connector_PinSocket_2.00mm +PinSocket_2x32_P2.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x32, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x32 2.00mm double row +0 +64 +64 +Connector_PinSocket_2.00mm +PinSocket_2x33_P2.00mm_Horizontal +Through hole angled socket strip, 2x33, 2.00mm pitch, 6.35mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x33 2.00mm double row +0 +66 +66 +Connector_PinSocket_2.00mm +PinSocket_2x33_P2.00mm_Vertical +Through hole straight socket strip, 2x33, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x33 2.00mm double row +0 +66 +66 +Connector_PinSocket_2.00mm +PinSocket_2x33_P2.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x33, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x33 2.00mm double row +0 +66 +66 +Connector_PinSocket_2.00mm +PinSocket_2x34_P2.00mm_Horizontal +Through hole angled socket strip, 2x34, 2.00mm pitch, 6.35mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x34 2.00mm double row +0 +68 +68 +Connector_PinSocket_2.00mm +PinSocket_2x34_P2.00mm_Vertical +Through hole straight socket strip, 2x34, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x34 2.00mm double row +0 +68 +68 +Connector_PinSocket_2.00mm +PinSocket_2x34_P2.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x34, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x34 2.00mm double row +0 +68 +68 +Connector_PinSocket_2.00mm +PinSocket_2x35_P2.00mm_Horizontal +Through hole angled socket strip, 2x35, 2.00mm pitch, 6.35mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x35 2.00mm double row +0 +70 +70 +Connector_PinSocket_2.00mm +PinSocket_2x35_P2.00mm_Vertical +Through hole straight socket strip, 2x35, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x35 2.00mm double row +0 +70 +70 +Connector_PinSocket_2.00mm +PinSocket_2x35_P2.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x35, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x35 2.00mm double row +0 +70 +70 +Connector_PinSocket_2.00mm +PinSocket_2x36_P2.00mm_Horizontal +Through hole angled socket strip, 2x36, 2.00mm pitch, 6.35mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x36 2.00mm double row +0 +72 +72 +Connector_PinSocket_2.00mm +PinSocket_2x36_P2.00mm_Vertical +Through hole straight socket strip, 2x36, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x36 2.00mm double row +0 +72 +72 +Connector_PinSocket_2.00mm +PinSocket_2x36_P2.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x36, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x36 2.00mm double row +0 +72 +72 +Connector_PinSocket_2.00mm +PinSocket_2x37_P2.00mm_Horizontal +Through hole angled socket strip, 2x37, 2.00mm pitch, 6.35mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x37 2.00mm double row +0 +74 +74 +Connector_PinSocket_2.00mm +PinSocket_2x37_P2.00mm_Vertical +Through hole straight socket strip, 2x37, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x37 2.00mm double row +0 +74 +74 +Connector_PinSocket_2.00mm +PinSocket_2x37_P2.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x37, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x37 2.00mm double row +0 +74 +74 +Connector_PinSocket_2.00mm +PinSocket_2x38_P2.00mm_Horizontal +Through hole angled socket strip, 2x38, 2.00mm pitch, 6.35mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x38 2.00mm double row +0 +76 +76 +Connector_PinSocket_2.00mm +PinSocket_2x38_P2.00mm_Vertical +Through hole straight socket strip, 2x38, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x38 2.00mm double row +0 +76 +76 +Connector_PinSocket_2.00mm +PinSocket_2x38_P2.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x38, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x38 2.00mm double row +0 +76 +76 +Connector_PinSocket_2.00mm +PinSocket_2x39_P2.00mm_Horizontal +Through hole angled socket strip, 2x39, 2.00mm pitch, 6.35mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x39 2.00mm double row +0 +78 +78 +Connector_PinSocket_2.00mm +PinSocket_2x39_P2.00mm_Vertical +Through hole straight socket strip, 2x39, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x39 2.00mm double row +0 +78 +78 +Connector_PinSocket_2.00mm +PinSocket_2x39_P2.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x39, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x39 2.00mm double row +0 +78 +78 +Connector_PinSocket_2.00mm +PinSocket_2x40_P2.00mm_Horizontal +Through hole angled socket strip, 2x40, 2.00mm pitch, 6.35mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x40 2.00mm double row +0 +80 +80 +Connector_PinSocket_2.00mm +PinSocket_2x40_P2.00mm_Vertical +Through hole straight socket strip, 2x40, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x40 2.00mm double row +0 +80 +80 +Connector_PinSocket_2.00mm +PinSocket_2x40_P2.00mm_Vertical_SMD +surface-mounted straight socket strip, 2x40, 2.00mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x40 2.00mm double row +0 +80 +80 +Connector_PinSocket_2.54mm +PinSocket_1x01_P2.54mm_Horizontal +Through hole angled socket strip, 1x01, 2.54mm pitch, 8.51mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x01 2.54mm single row +0 +1 +1 +Connector_PinSocket_2.54mm +PinSocket_1x01_P2.54mm_Vertical +Through hole straight socket strip, 1x01, 2.54mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x01 2.54mm single row +0 +1 +1 +Connector_PinSocket_2.54mm +PinSocket_1x02_P2.54mm_Horizontal +Through hole angled socket strip, 1x02, 2.54mm pitch, 8.51mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x02 2.54mm single row +0 +2 +2 +Connector_PinSocket_2.54mm +PinSocket_1x02_P2.54mm_Vertical +Through hole straight socket strip, 1x02, 2.54mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x02 2.54mm single row +0 +2 +2 +Connector_PinSocket_2.54mm +PinSocket_1x02_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x02, 2.54mm pitch, single row, style 1 (pin 1 left) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x02 2.54mm single row style1 pin1 left +0 +2 +2 +Connector_PinSocket_2.54mm +PinSocket_1x02_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x02, 2.54mm pitch, single row, style 2 (pin 1 right) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x02 2.54mm single row style2 pin1 right +0 +2 +2 +Connector_PinSocket_2.54mm +PinSocket_1x03_P2.54mm_Horizontal +Through hole angled socket strip, 1x03, 2.54mm pitch, 8.51mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x03 2.54mm single row +0 +3 +3 +Connector_PinSocket_2.54mm +PinSocket_1x03_P2.54mm_Vertical +Through hole straight socket strip, 1x03, 2.54mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x03 2.54mm single row +0 +3 +3 +Connector_PinSocket_2.54mm +PinSocket_1x03_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x03, 2.54mm pitch, single row, style 1 (pin 1 left) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x03 2.54mm single row style1 pin1 left +0 +3 +3 +Connector_PinSocket_2.54mm +PinSocket_1x03_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x03, 2.54mm pitch, single row, style 2 (pin 1 right) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x03 2.54mm single row style2 pin1 right +0 +3 +3 +Connector_PinSocket_2.54mm +PinSocket_1x04_P2.54mm_Horizontal +Through hole angled socket strip, 1x04, 2.54mm pitch, 8.51mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x04 2.54mm single row +0 +4 +4 +Connector_PinSocket_2.54mm +PinSocket_1x04_P2.54mm_Vertical +Through hole straight socket strip, 1x04, 2.54mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x04 2.54mm single row +0 +4 +4 +Connector_PinSocket_2.54mm +PinSocket_1x04_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x04, 2.54mm pitch, single row, style 1 (pin 1 left) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x04 2.54mm single row style1 pin1 left +0 +4 +4 +Connector_PinSocket_2.54mm +PinSocket_1x04_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x04, 2.54mm pitch, single row, style 2 (pin 1 right) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x04 2.54mm single row style2 pin1 right +0 +4 +4 +Connector_PinSocket_2.54mm +PinSocket_1x05_P2.54mm_Horizontal +Through hole angled socket strip, 1x05, 2.54mm pitch, 8.51mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x05 2.54mm single row +0 +5 +5 +Connector_PinSocket_2.54mm +PinSocket_1x05_P2.54mm_Vertical +Through hole straight socket strip, 1x05, 2.54mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x05 2.54mm single row +0 +5 +5 +Connector_PinSocket_2.54mm +PinSocket_1x05_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x05, 2.54mm pitch, single row, style 1 (pin 1 left) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x05 2.54mm single row style1 pin1 left +0 +5 +5 +Connector_PinSocket_2.54mm +PinSocket_1x05_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x05, 2.54mm pitch, single row, style 2 (pin 1 right) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x05 2.54mm single row style2 pin1 right +0 +5 +5 +Connector_PinSocket_2.54mm +PinSocket_1x06_P2.54mm_Horizontal +Through hole angled socket strip, 1x06, 2.54mm pitch, 8.51mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x06 2.54mm single row +0 +6 +6 +Connector_PinSocket_2.54mm +PinSocket_1x06_P2.54mm_Vertical +Through hole straight socket strip, 1x06, 2.54mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x06 2.54mm single row +0 +6 +6 +Connector_PinSocket_2.54mm +PinSocket_1x06_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x06, 2.54mm pitch, single row, style 1 (pin 1 left) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x06 2.54mm single row style1 pin1 left +0 +6 +6 +Connector_PinSocket_2.54mm +PinSocket_1x06_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x06, 2.54mm pitch, single row, style 2 (pin 1 right) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x06 2.54mm single row style2 pin1 right +0 +6 +6 +Connector_PinSocket_2.54mm +PinSocket_1x07_P2.54mm_Horizontal +Through hole angled socket strip, 1x07, 2.54mm pitch, 8.51mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x07 2.54mm single row +0 +7 +7 +Connector_PinSocket_2.54mm +PinSocket_1x07_P2.54mm_Vertical +Through hole straight socket strip, 1x07, 2.54mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x07 2.54mm single row +0 +7 +7 +Connector_PinSocket_2.54mm +PinSocket_1x07_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x07, 2.54mm pitch, single row, style 1 (pin 1 left) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x07 2.54mm single row style1 pin1 left +0 +7 +7 +Connector_PinSocket_2.54mm +PinSocket_1x07_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x07, 2.54mm pitch, single row, style 2 (pin 1 right) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x07 2.54mm single row style2 pin1 right +0 +7 +7 +Connector_PinSocket_2.54mm +PinSocket_1x08_P2.54mm_Horizontal +Through hole angled socket strip, 1x08, 2.54mm pitch, 8.51mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x08 2.54mm single row +0 +8 +8 +Connector_PinSocket_2.54mm +PinSocket_1x08_P2.54mm_Vertical +Through hole straight socket strip, 1x08, 2.54mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x08 2.54mm single row +0 +8 +8 +Connector_PinSocket_2.54mm +PinSocket_1x08_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x08, 2.54mm pitch, single row, style 1 (pin 1 left) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x08 2.54mm single row style1 pin1 left +0 +8 +8 +Connector_PinSocket_2.54mm +PinSocket_1x08_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x08, 2.54mm pitch, single row, style 2 (pin 1 right) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x08 2.54mm single row style2 pin1 right +0 +8 +8 +Connector_PinSocket_2.54mm +PinSocket_1x09_P2.54mm_Horizontal +Through hole angled socket strip, 1x09, 2.54mm pitch, 8.51mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x09 2.54mm single row +0 +9 +9 +Connector_PinSocket_2.54mm +PinSocket_1x09_P2.54mm_Vertical +Through hole straight socket strip, 1x09, 2.54mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x09 2.54mm single row +0 +9 +9 +Connector_PinSocket_2.54mm +PinSocket_1x09_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x09, 2.54mm pitch, single row, style 1 (pin 1 left) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x09 2.54mm single row style1 pin1 left +0 +9 +9 +Connector_PinSocket_2.54mm +PinSocket_1x09_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x09, 2.54mm pitch, single row, style 2 (pin 1 right) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x09 2.54mm single row style2 pin1 right +0 +9 +9 +Connector_PinSocket_2.54mm +PinSocket_1x10_P2.54mm_Horizontal +Through hole angled socket strip, 1x10, 2.54mm pitch, 8.51mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x10 2.54mm single row +0 +10 +10 +Connector_PinSocket_2.54mm +PinSocket_1x10_P2.54mm_Vertical +Through hole straight socket strip, 1x10, 2.54mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x10 2.54mm single row +0 +10 +10 +Connector_PinSocket_2.54mm +PinSocket_1x10_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x10, 2.54mm pitch, single row, style 1 (pin 1 left) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x10 2.54mm single row style1 pin1 left +0 +10 +10 +Connector_PinSocket_2.54mm +PinSocket_1x10_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x10, 2.54mm pitch, single row, style 2 (pin 1 right) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x10 2.54mm single row style2 pin1 right +0 +10 +10 +Connector_PinSocket_2.54mm +PinSocket_1x11_P2.54mm_Horizontal +Through hole angled socket strip, 1x11, 2.54mm pitch, 8.51mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x11 2.54mm single row +0 +11 +11 +Connector_PinSocket_2.54mm +PinSocket_1x11_P2.54mm_Vertical +Through hole straight socket strip, 1x11, 2.54mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x11 2.54mm single row +0 +11 +11 +Connector_PinSocket_2.54mm +PinSocket_1x11_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x11, 2.54mm pitch, single row, style 1 (pin 1 left) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x11 2.54mm single row style1 pin1 left +0 +11 +11 +Connector_PinSocket_2.54mm +PinSocket_1x11_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x11, 2.54mm pitch, single row, style 2 (pin 1 right) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x11 2.54mm single row style2 pin1 right +0 +11 +11 +Connector_PinSocket_2.54mm +PinSocket_1x12_P2.54mm_Horizontal +Through hole angled socket strip, 1x12, 2.54mm pitch, 8.51mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x12 2.54mm single row +0 +12 +12 +Connector_PinSocket_2.54mm +PinSocket_1x12_P2.54mm_Vertical +Through hole straight socket strip, 1x12, 2.54mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x12 2.54mm single row +0 +12 +12 +Connector_PinSocket_2.54mm +PinSocket_1x12_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x12, 2.54mm pitch, single row, style 1 (pin 1 left) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x12 2.54mm single row style1 pin1 left +0 +12 +12 +Connector_PinSocket_2.54mm +PinSocket_1x12_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x12, 2.54mm pitch, single row, style 2 (pin 1 right) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x12 2.54mm single row style2 pin1 right +0 +12 +12 +Connector_PinSocket_2.54mm +PinSocket_1x13_P2.54mm_Horizontal +Through hole angled socket strip, 1x13, 2.54mm pitch, 8.51mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x13 2.54mm single row +0 +13 +13 +Connector_PinSocket_2.54mm +PinSocket_1x13_P2.54mm_Vertical +Through hole straight socket strip, 1x13, 2.54mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x13 2.54mm single row +0 +13 +13 +Connector_PinSocket_2.54mm +PinSocket_1x13_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x13, 2.54mm pitch, single row, style 1 (pin 1 left) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x13 2.54mm single row style1 pin1 left +0 +13 +13 +Connector_PinSocket_2.54mm +PinSocket_1x13_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x13, 2.54mm pitch, single row, style 2 (pin 1 right) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x13 2.54mm single row style2 pin1 right +0 +13 +13 +Connector_PinSocket_2.54mm +PinSocket_1x14_P2.54mm_Horizontal +Through hole angled socket strip, 1x14, 2.54mm pitch, 8.51mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x14 2.54mm single row +0 +14 +14 +Connector_PinSocket_2.54mm +PinSocket_1x14_P2.54mm_Vertical +Through hole straight socket strip, 1x14, 2.54mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x14 2.54mm single row +0 +14 +14 +Connector_PinSocket_2.54mm +PinSocket_1x14_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x14, 2.54mm pitch, single row, style 1 (pin 1 left) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x14 2.54mm single row style1 pin1 left +0 +14 +14 +Connector_PinSocket_2.54mm +PinSocket_1x14_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x14, 2.54mm pitch, single row, style 2 (pin 1 right) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x14 2.54mm single row style2 pin1 right +0 +14 +14 +Connector_PinSocket_2.54mm +PinSocket_1x15_P2.54mm_Horizontal +Through hole angled socket strip, 1x15, 2.54mm pitch, 8.51mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x15 2.54mm single row +0 +15 +15 +Connector_PinSocket_2.54mm +PinSocket_1x15_P2.54mm_Vertical +Through hole straight socket strip, 1x15, 2.54mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x15 2.54mm single row +0 +15 +15 +Connector_PinSocket_2.54mm +PinSocket_1x15_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x15, 2.54mm pitch, single row, style 1 (pin 1 left) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x15 2.54mm single row style1 pin1 left +0 +15 +15 +Connector_PinSocket_2.54mm +PinSocket_1x15_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x15, 2.54mm pitch, single row, style 2 (pin 1 right) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x15 2.54mm single row style2 pin1 right +0 +15 +15 +Connector_PinSocket_2.54mm +PinSocket_1x16_P2.54mm_Horizontal +Through hole angled socket strip, 1x16, 2.54mm pitch, 8.51mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x16 2.54mm single row +0 +16 +16 +Connector_PinSocket_2.54mm +PinSocket_1x16_P2.54mm_Vertical +Through hole straight socket strip, 1x16, 2.54mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x16 2.54mm single row +0 +16 +16 +Connector_PinSocket_2.54mm +PinSocket_1x16_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x16, 2.54mm pitch, single row, style 1 (pin 1 left) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x16 2.54mm single row style1 pin1 left +0 +16 +16 +Connector_PinSocket_2.54mm +PinSocket_1x16_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x16, 2.54mm pitch, single row, style 2 (pin 1 right) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x16 2.54mm single row style2 pin1 right +0 +16 +16 +Connector_PinSocket_2.54mm +PinSocket_1x17_P2.54mm_Horizontal +Through hole angled socket strip, 1x17, 2.54mm pitch, 8.51mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x17 2.54mm single row +0 +17 +17 +Connector_PinSocket_2.54mm +PinSocket_1x17_P2.54mm_Vertical +Through hole straight socket strip, 1x17, 2.54mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x17 2.54mm single row +0 +17 +17 +Connector_PinSocket_2.54mm +PinSocket_1x17_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x17, 2.54mm pitch, single row, style 1 (pin 1 left) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x17 2.54mm single row style1 pin1 left +0 +17 +17 +Connector_PinSocket_2.54mm +PinSocket_1x17_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x17, 2.54mm pitch, single row, style 2 (pin 1 right) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x17 2.54mm single row style2 pin1 right +0 +17 +17 +Connector_PinSocket_2.54mm +PinSocket_1x18_P2.54mm_Horizontal +Through hole angled socket strip, 1x18, 2.54mm pitch, 8.51mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x18 2.54mm single row +0 +18 +18 +Connector_PinSocket_2.54mm +PinSocket_1x18_P2.54mm_Vertical +Through hole straight socket strip, 1x18, 2.54mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x18 2.54mm single row +0 +18 +18 +Connector_PinSocket_2.54mm +PinSocket_1x18_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x18, 2.54mm pitch, single row, style 1 (pin 1 left) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x18 2.54mm single row style1 pin1 left +0 +18 +18 +Connector_PinSocket_2.54mm +PinSocket_1x18_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x18, 2.54mm pitch, single row, style 2 (pin 1 right) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x18 2.54mm single row style2 pin1 right +0 +18 +18 +Connector_PinSocket_2.54mm +PinSocket_1x19_P2.54mm_Horizontal +Through hole angled socket strip, 1x19, 2.54mm pitch, 8.51mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x19 2.54mm single row +0 +19 +19 +Connector_PinSocket_2.54mm +PinSocket_1x19_P2.54mm_Vertical +Through hole straight socket strip, 1x19, 2.54mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x19 2.54mm single row +0 +19 +19 +Connector_PinSocket_2.54mm +PinSocket_1x19_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x19, 2.54mm pitch, single row, style 1 (pin 1 left) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x19 2.54mm single row style1 pin1 left +0 +19 +19 +Connector_PinSocket_2.54mm +PinSocket_1x19_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x19, 2.54mm pitch, single row, style 2 (pin 1 right) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x19 2.54mm single row style2 pin1 right +0 +19 +19 +Connector_PinSocket_2.54mm +PinSocket_1x20_P2.54mm_Horizontal +Through hole angled socket strip, 1x20, 2.54mm pitch, 8.51mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x20 2.54mm single row +0 +20 +20 +Connector_PinSocket_2.54mm +PinSocket_1x20_P2.54mm_Vertical +Through hole straight socket strip, 1x20, 2.54mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x20 2.54mm single row +0 +20 +20 +Connector_PinSocket_2.54mm +PinSocket_1x20_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x20, 2.54mm pitch, single row, style 1 (pin 1 left) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x20 2.54mm single row style1 pin1 left +0 +20 +20 +Connector_PinSocket_2.54mm +PinSocket_1x20_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x20, 2.54mm pitch, single row, style 2 (pin 1 right) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x20 2.54mm single row style2 pin1 right +0 +20 +20 +Connector_PinSocket_2.54mm +PinSocket_1x21_P2.54mm_Horizontal +Through hole angled socket strip, 1x21, 2.54mm pitch, 8.51mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x21 2.54mm single row +0 +21 +21 +Connector_PinSocket_2.54mm +PinSocket_1x21_P2.54mm_Vertical +Through hole straight socket strip, 1x21, 2.54mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x21 2.54mm single row +0 +21 +21 +Connector_PinSocket_2.54mm +PinSocket_1x21_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x21, 2.54mm pitch, single row, style 1 (pin 1 left) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x21 2.54mm single row style1 pin1 left +0 +21 +21 +Connector_PinSocket_2.54mm +PinSocket_1x21_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x21, 2.54mm pitch, single row, style 2 (pin 1 right) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x21 2.54mm single row style2 pin1 right +0 +21 +21 +Connector_PinSocket_2.54mm +PinSocket_1x22_P2.54mm_Horizontal +Through hole angled socket strip, 1x22, 2.54mm pitch, 8.51mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x22 2.54mm single row +0 +22 +22 +Connector_PinSocket_2.54mm +PinSocket_1x22_P2.54mm_Vertical +Through hole straight socket strip, 1x22, 2.54mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x22 2.54mm single row +0 +22 +22 +Connector_PinSocket_2.54mm +PinSocket_1x22_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x22, 2.54mm pitch, single row, style 1 (pin 1 left) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x22 2.54mm single row style1 pin1 left +0 +22 +22 +Connector_PinSocket_2.54mm +PinSocket_1x22_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x22, 2.54mm pitch, single row, style 2 (pin 1 right) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x22 2.54mm single row style2 pin1 right +0 +22 +22 +Connector_PinSocket_2.54mm +PinSocket_1x23_P2.54mm_Horizontal +Through hole angled socket strip, 1x23, 2.54mm pitch, 8.51mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x23 2.54mm single row +0 +23 +23 +Connector_PinSocket_2.54mm +PinSocket_1x23_P2.54mm_Vertical +Through hole straight socket strip, 1x23, 2.54mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x23 2.54mm single row +0 +23 +23 +Connector_PinSocket_2.54mm +PinSocket_1x23_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x23, 2.54mm pitch, single row, style 1 (pin 1 left) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x23 2.54mm single row style1 pin1 left +0 +23 +23 +Connector_PinSocket_2.54mm +PinSocket_1x23_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x23, 2.54mm pitch, single row, style 2 (pin 1 right) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x23 2.54mm single row style2 pin1 right +0 +23 +23 +Connector_PinSocket_2.54mm +PinSocket_1x24_P2.54mm_Horizontal +Through hole angled socket strip, 1x24, 2.54mm pitch, 8.51mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x24 2.54mm single row +0 +24 +24 +Connector_PinSocket_2.54mm +PinSocket_1x24_P2.54mm_Vertical +Through hole straight socket strip, 1x24, 2.54mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x24 2.54mm single row +0 +24 +24 +Connector_PinSocket_2.54mm +PinSocket_1x24_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x24, 2.54mm pitch, single row, style 1 (pin 1 left) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x24 2.54mm single row style1 pin1 left +0 +24 +24 +Connector_PinSocket_2.54mm +PinSocket_1x24_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x24, 2.54mm pitch, single row, style 2 (pin 1 right) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x24 2.54mm single row style2 pin1 right +0 +24 +24 +Connector_PinSocket_2.54mm +PinSocket_1x25_P2.54mm_Horizontal +Through hole angled socket strip, 1x25, 2.54mm pitch, 8.51mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x25 2.54mm single row +0 +25 +25 +Connector_PinSocket_2.54mm +PinSocket_1x25_P2.54mm_Vertical +Through hole straight socket strip, 1x25, 2.54mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x25 2.54mm single row +0 +25 +25 +Connector_PinSocket_2.54mm +PinSocket_1x25_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x25, 2.54mm pitch, single row, style 1 (pin 1 left) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x25 2.54mm single row style1 pin1 left +0 +25 +25 +Connector_PinSocket_2.54mm +PinSocket_1x25_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x25, 2.54mm pitch, single row, style 2 (pin 1 right) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x25 2.54mm single row style2 pin1 right +0 +25 +25 +Connector_PinSocket_2.54mm +PinSocket_1x26_P2.54mm_Horizontal +Through hole angled socket strip, 1x26, 2.54mm pitch, 8.51mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x26 2.54mm single row +0 +26 +26 +Connector_PinSocket_2.54mm +PinSocket_1x26_P2.54mm_Vertical +Through hole straight socket strip, 1x26, 2.54mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x26 2.54mm single row +0 +26 +26 +Connector_PinSocket_2.54mm +PinSocket_1x26_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x26, 2.54mm pitch, single row, style 1 (pin 1 left) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x26 2.54mm single row style1 pin1 left +0 +26 +26 +Connector_PinSocket_2.54mm +PinSocket_1x26_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x26, 2.54mm pitch, single row, style 2 (pin 1 right) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x26 2.54mm single row style2 pin1 right +0 +26 +26 +Connector_PinSocket_2.54mm +PinSocket_1x27_P2.54mm_Horizontal +Through hole angled socket strip, 1x27, 2.54mm pitch, 8.51mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x27 2.54mm single row +0 +27 +27 +Connector_PinSocket_2.54mm +PinSocket_1x27_P2.54mm_Vertical +Through hole straight socket strip, 1x27, 2.54mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x27 2.54mm single row +0 +27 +27 +Connector_PinSocket_2.54mm +PinSocket_1x27_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x27, 2.54mm pitch, single row, style 1 (pin 1 left) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x27 2.54mm single row style1 pin1 left +0 +27 +27 +Connector_PinSocket_2.54mm +PinSocket_1x27_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x27, 2.54mm pitch, single row, style 2 (pin 1 right) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x27 2.54mm single row style2 pin1 right +0 +27 +27 +Connector_PinSocket_2.54mm +PinSocket_1x28_P2.54mm_Horizontal +Through hole angled socket strip, 1x28, 2.54mm pitch, 8.51mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x28 2.54mm single row +0 +28 +28 +Connector_PinSocket_2.54mm +PinSocket_1x28_P2.54mm_Vertical +Through hole straight socket strip, 1x28, 2.54mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x28 2.54mm single row +0 +28 +28 +Connector_PinSocket_2.54mm +PinSocket_1x28_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x28, 2.54mm pitch, single row, style 1 (pin 1 left) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x28 2.54mm single row style1 pin1 left +0 +28 +28 +Connector_PinSocket_2.54mm +PinSocket_1x28_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x28, 2.54mm pitch, single row, style 2 (pin 1 right) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x28 2.54mm single row style2 pin1 right +0 +28 +28 +Connector_PinSocket_2.54mm +PinSocket_1x29_P2.54mm_Horizontal +Through hole angled socket strip, 1x29, 2.54mm pitch, 8.51mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x29 2.54mm single row +0 +29 +29 +Connector_PinSocket_2.54mm +PinSocket_1x29_P2.54mm_Vertical +Through hole straight socket strip, 1x29, 2.54mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x29 2.54mm single row +0 +29 +29 +Connector_PinSocket_2.54mm +PinSocket_1x29_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x29, 2.54mm pitch, single row, style 1 (pin 1 left) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x29 2.54mm single row style1 pin1 left +0 +29 +29 +Connector_PinSocket_2.54mm +PinSocket_1x29_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x29, 2.54mm pitch, single row, style 2 (pin 1 right) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x29 2.54mm single row style2 pin1 right +0 +29 +29 +Connector_PinSocket_2.54mm +PinSocket_1x30_P2.54mm_Horizontal +Through hole angled socket strip, 1x30, 2.54mm pitch, 8.51mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x30 2.54mm single row +0 +30 +30 +Connector_PinSocket_2.54mm +PinSocket_1x30_P2.54mm_Vertical +Through hole straight socket strip, 1x30, 2.54mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x30 2.54mm single row +0 +30 +30 +Connector_PinSocket_2.54mm +PinSocket_1x30_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x30, 2.54mm pitch, single row, style 1 (pin 1 left) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x30 2.54mm single row style1 pin1 left +0 +30 +30 +Connector_PinSocket_2.54mm +PinSocket_1x30_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x30, 2.54mm pitch, single row, style 2 (pin 1 right) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x30 2.54mm single row style2 pin1 right +0 +30 +30 +Connector_PinSocket_2.54mm +PinSocket_1x31_P2.54mm_Horizontal +Through hole angled socket strip, 1x31, 2.54mm pitch, 8.51mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x31 2.54mm single row +0 +31 +31 +Connector_PinSocket_2.54mm +PinSocket_1x31_P2.54mm_Vertical +Through hole straight socket strip, 1x31, 2.54mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x31 2.54mm single row +0 +31 +31 +Connector_PinSocket_2.54mm +PinSocket_1x31_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x31, 2.54mm pitch, single row, style 1 (pin 1 left) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x31 2.54mm single row style1 pin1 left +0 +31 +31 +Connector_PinSocket_2.54mm +PinSocket_1x31_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x31, 2.54mm pitch, single row, style 2 (pin 1 right) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x31 2.54mm single row style2 pin1 right +0 +31 +31 +Connector_PinSocket_2.54mm +PinSocket_1x32_P2.54mm_Horizontal +Through hole angled socket strip, 1x32, 2.54mm pitch, 8.51mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x32 2.54mm single row +0 +32 +32 +Connector_PinSocket_2.54mm +PinSocket_1x32_P2.54mm_Vertical +Through hole straight socket strip, 1x32, 2.54mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x32 2.54mm single row +0 +32 +32 +Connector_PinSocket_2.54mm +PinSocket_1x32_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x32, 2.54mm pitch, single row, style 1 (pin 1 left) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x32 2.54mm single row style1 pin1 left +0 +32 +32 +Connector_PinSocket_2.54mm +PinSocket_1x32_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x32, 2.54mm pitch, single row, style 2 (pin 1 right) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x32 2.54mm single row style2 pin1 right +0 +32 +32 +Connector_PinSocket_2.54mm +PinSocket_1x33_P2.54mm_Horizontal +Through hole angled socket strip, 1x33, 2.54mm pitch, 8.51mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x33 2.54mm single row +0 +33 +33 +Connector_PinSocket_2.54mm +PinSocket_1x33_P2.54mm_Vertical +Through hole straight socket strip, 1x33, 2.54mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x33 2.54mm single row +0 +33 +33 +Connector_PinSocket_2.54mm +PinSocket_1x33_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x33, 2.54mm pitch, single row, style 1 (pin 1 left) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x33 2.54mm single row style1 pin1 left +0 +33 +33 +Connector_PinSocket_2.54mm +PinSocket_1x33_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x33, 2.54mm pitch, single row, style 2 (pin 1 right) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x33 2.54mm single row style2 pin1 right +0 +33 +33 +Connector_PinSocket_2.54mm +PinSocket_1x34_P2.54mm_Horizontal +Through hole angled socket strip, 1x34, 2.54mm pitch, 8.51mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x34 2.54mm single row +0 +34 +34 +Connector_PinSocket_2.54mm +PinSocket_1x34_P2.54mm_Vertical +Through hole straight socket strip, 1x34, 2.54mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x34 2.54mm single row +0 +34 +34 +Connector_PinSocket_2.54mm +PinSocket_1x34_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x34, 2.54mm pitch, single row, style 1 (pin 1 left) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x34 2.54mm single row style1 pin1 left +0 +34 +34 +Connector_PinSocket_2.54mm +PinSocket_1x34_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x34, 2.54mm pitch, single row, style 2 (pin 1 right) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x34 2.54mm single row style2 pin1 right +0 +34 +34 +Connector_PinSocket_2.54mm +PinSocket_1x35_P2.54mm_Horizontal +Through hole angled socket strip, 1x35, 2.54mm pitch, 8.51mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x35 2.54mm single row +0 +35 +35 +Connector_PinSocket_2.54mm +PinSocket_1x35_P2.54mm_Vertical +Through hole straight socket strip, 1x35, 2.54mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x35 2.54mm single row +0 +35 +35 +Connector_PinSocket_2.54mm +PinSocket_1x35_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x35, 2.54mm pitch, single row, style 1 (pin 1 left) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x35 2.54mm single row style1 pin1 left +0 +35 +35 +Connector_PinSocket_2.54mm +PinSocket_1x35_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x35, 2.54mm pitch, single row, style 2 (pin 1 right) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x35 2.54mm single row style2 pin1 right +0 +35 +35 +Connector_PinSocket_2.54mm +PinSocket_1x36_P2.54mm_Horizontal +Through hole angled socket strip, 1x36, 2.54mm pitch, 8.51mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x36 2.54mm single row +0 +36 +36 +Connector_PinSocket_2.54mm +PinSocket_1x36_P2.54mm_Vertical +Through hole straight socket strip, 1x36, 2.54mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x36 2.54mm single row +0 +36 +36 +Connector_PinSocket_2.54mm +PinSocket_1x36_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x36, 2.54mm pitch, single row, style 1 (pin 1 left) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x36 2.54mm single row style1 pin1 left +0 +36 +36 +Connector_PinSocket_2.54mm +PinSocket_1x36_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x36, 2.54mm pitch, single row, style 2 (pin 1 right) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x36 2.54mm single row style2 pin1 right +0 +36 +36 +Connector_PinSocket_2.54mm +PinSocket_1x37_P2.54mm_Horizontal +Through hole angled socket strip, 1x37, 2.54mm pitch, 8.51mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x37 2.54mm single row +0 +37 +37 +Connector_PinSocket_2.54mm +PinSocket_1x37_P2.54mm_Vertical +Through hole straight socket strip, 1x37, 2.54mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x37 2.54mm single row +0 +37 +37 +Connector_PinSocket_2.54mm +PinSocket_1x37_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x37, 2.54mm pitch, single row, style 1 (pin 1 left) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x37 2.54mm single row style1 pin1 left +0 +37 +37 +Connector_PinSocket_2.54mm +PinSocket_1x37_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x37, 2.54mm pitch, single row, style 2 (pin 1 right) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x37 2.54mm single row style2 pin1 right +0 +37 +37 +Connector_PinSocket_2.54mm +PinSocket_1x38_P2.54mm_Horizontal +Through hole angled socket strip, 1x38, 2.54mm pitch, 8.51mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x38 2.54mm single row +0 +38 +38 +Connector_PinSocket_2.54mm +PinSocket_1x38_P2.54mm_Vertical +Through hole straight socket strip, 1x38, 2.54mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x38 2.54mm single row +0 +38 +38 +Connector_PinSocket_2.54mm +PinSocket_1x38_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x38, 2.54mm pitch, single row, style 1 (pin 1 left) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x38 2.54mm single row style1 pin1 left +0 +38 +38 +Connector_PinSocket_2.54mm +PinSocket_1x38_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x38, 2.54mm pitch, single row, style 2 (pin 1 right) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x38 2.54mm single row style2 pin1 right +0 +38 +38 +Connector_PinSocket_2.54mm +PinSocket_1x39_P2.54mm_Horizontal +Through hole angled socket strip, 1x39, 2.54mm pitch, 8.51mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x39 2.54mm single row +0 +39 +39 +Connector_PinSocket_2.54mm +PinSocket_1x39_P2.54mm_Vertical +Through hole straight socket strip, 1x39, 2.54mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x39 2.54mm single row +0 +39 +39 +Connector_PinSocket_2.54mm +PinSocket_1x39_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x39, 2.54mm pitch, single row, style 1 (pin 1 left) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x39 2.54mm single row style1 pin1 left +0 +39 +39 +Connector_PinSocket_2.54mm +PinSocket_1x39_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x39, 2.54mm pitch, single row, style 2 (pin 1 right) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x39 2.54mm single row style2 pin1 right +0 +39 +39 +Connector_PinSocket_2.54mm +PinSocket_1x40_P2.54mm_Horizontal +Through hole angled socket strip, 1x40, 2.54mm pitch, 8.51mm socket length, single row (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 1x40 2.54mm single row +0 +40 +40 +Connector_PinSocket_2.54mm +PinSocket_1x40_P2.54mm_Vertical +Through hole straight socket strip, 1x40, 2.54mm pitch, single row (from Kicad 4.0.7), script generated +Through hole socket strip THT 1x40 2.54mm single row +0 +40 +40 +Connector_PinSocket_2.54mm +PinSocket_1x40_P2.54mm_Vertical_SMD_Pin1Left +surface-mounted straight socket strip, 1x40, 2.54mm pitch, single row, style 1 (pin 1 left) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x40 2.54mm single row style1 pin1 left +0 +40 +40 +Connector_PinSocket_2.54mm +PinSocket_1x40_P2.54mm_Vertical_SMD_Pin1Right +surface-mounted straight socket strip, 1x40, 2.54mm pitch, single row, style 2 (pin 1 right) (https://cdn.harwin.com/pdfs/M20-786.pdf), script generated +Surface mounted socket strip SMD 1x40 2.54mm single row style2 pin1 right +0 +40 +40 +Connector_PinSocket_2.54mm +PinSocket_2x01_P2.54mm_Horizontal +Through hole angled socket strip, 2x01, 2.54mm pitch, 8.51mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x01 2.54mm double row +0 +2 +2 +Connector_PinSocket_2.54mm +PinSocket_2x01_P2.54mm_Vertical +Through hole straight socket strip, 2x01, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x01 2.54mm double row +0 +2 +2 +Connector_PinSocket_2.54mm +PinSocket_2x01_P2.54mm_Vertical_SMD +surface-mounted straight socket strip, 2x01, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x01 2.54mm double row +0 +2 +2 +Connector_PinSocket_2.54mm +PinSocket_2x02_P2.54mm_Horizontal +Through hole angled socket strip, 2x02, 2.54mm pitch, 8.51mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x02 2.54mm double row +0 +4 +4 +Connector_PinSocket_2.54mm +PinSocket_2x02_P2.54mm_Vertical +Through hole straight socket strip, 2x02, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x02 2.54mm double row +0 +4 +4 +Connector_PinSocket_2.54mm +PinSocket_2x02_P2.54mm_Vertical_SMD +surface-mounted straight socket strip, 2x02, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x02 2.54mm double row +0 +4 +4 +Connector_PinSocket_2.54mm +PinSocket_2x03_P2.54mm_Horizontal +Through hole angled socket strip, 2x03, 2.54mm pitch, 8.51mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x03 2.54mm double row +0 +6 +6 +Connector_PinSocket_2.54mm +PinSocket_2x03_P2.54mm_Vertical +Through hole straight socket strip, 2x03, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x03 2.54mm double row +0 +6 +6 +Connector_PinSocket_2.54mm +PinSocket_2x03_P2.54mm_Vertical_SMD +surface-mounted straight socket strip, 2x03, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x03 2.54mm double row +0 +6 +6 +Connector_PinSocket_2.54mm +PinSocket_2x04_P2.54mm_Horizontal +Through hole angled socket strip, 2x04, 2.54mm pitch, 8.51mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x04 2.54mm double row +0 +8 +8 +Connector_PinSocket_2.54mm +PinSocket_2x04_P2.54mm_Vertical +Through hole straight socket strip, 2x04, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x04 2.54mm double row +0 +8 +8 +Connector_PinSocket_2.54mm +PinSocket_2x04_P2.54mm_Vertical_SMD +surface-mounted straight socket strip, 2x04, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x04 2.54mm double row +0 +8 +8 +Connector_PinSocket_2.54mm +PinSocket_2x05_P2.54mm_Horizontal +Through hole angled socket strip, 2x05, 2.54mm pitch, 8.51mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x05 2.54mm double row +0 +10 +10 +Connector_PinSocket_2.54mm +PinSocket_2x05_P2.54mm_Vertical +Through hole straight socket strip, 2x05, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x05 2.54mm double row +0 +10 +10 +Connector_PinSocket_2.54mm +PinSocket_2x05_P2.54mm_Vertical_SMD +surface-mounted straight socket strip, 2x05, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x05 2.54mm double row +0 +10 +10 +Connector_PinSocket_2.54mm +PinSocket_2x06_P2.54mm_Horizontal +Through hole angled socket strip, 2x06, 2.54mm pitch, 8.51mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x06 2.54mm double row +0 +12 +12 +Connector_PinSocket_2.54mm +PinSocket_2x06_P2.54mm_Vertical +Through hole straight socket strip, 2x06, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x06 2.54mm double row +0 +12 +12 +Connector_PinSocket_2.54mm +PinSocket_2x06_P2.54mm_Vertical_SMD +surface-mounted straight socket strip, 2x06, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x06 2.54mm double row +0 +12 +12 +Connector_PinSocket_2.54mm +PinSocket_2x07_P2.54mm_Horizontal +Through hole angled socket strip, 2x07, 2.54mm pitch, 8.51mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x07 2.54mm double row +0 +14 +14 +Connector_PinSocket_2.54mm +PinSocket_2x07_P2.54mm_Vertical +Through hole straight socket strip, 2x07, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x07 2.54mm double row +0 +14 +14 +Connector_PinSocket_2.54mm +PinSocket_2x07_P2.54mm_Vertical_SMD +surface-mounted straight socket strip, 2x07, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x07 2.54mm double row +0 +14 +14 +Connector_PinSocket_2.54mm +PinSocket_2x08_P2.54mm_Horizontal +Through hole angled socket strip, 2x08, 2.54mm pitch, 8.51mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x08 2.54mm double row +0 +16 +16 +Connector_PinSocket_2.54mm +PinSocket_2x08_P2.54mm_Vertical +Through hole straight socket strip, 2x08, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x08 2.54mm double row +0 +16 +16 +Connector_PinSocket_2.54mm +PinSocket_2x08_P2.54mm_Vertical_SMD +surface-mounted straight socket strip, 2x08, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x08 2.54mm double row +0 +16 +16 +Connector_PinSocket_2.54mm +PinSocket_2x09_P2.54mm_Horizontal +Through hole angled socket strip, 2x09, 2.54mm pitch, 8.51mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x09 2.54mm double row +0 +18 +18 +Connector_PinSocket_2.54mm +PinSocket_2x09_P2.54mm_Vertical +Through hole straight socket strip, 2x09, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x09 2.54mm double row +0 +18 +18 +Connector_PinSocket_2.54mm +PinSocket_2x09_P2.54mm_Vertical_SMD +surface-mounted straight socket strip, 2x09, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x09 2.54mm double row +0 +18 +18 +Connector_PinSocket_2.54mm +PinSocket_2x10_P2.54mm_Horizontal +Through hole angled socket strip, 2x10, 2.54mm pitch, 8.51mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x10 2.54mm double row +0 +20 +20 +Connector_PinSocket_2.54mm +PinSocket_2x10_P2.54mm_Vertical +Through hole straight socket strip, 2x10, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x10 2.54mm double row +0 +20 +20 +Connector_PinSocket_2.54mm +PinSocket_2x10_P2.54mm_Vertical_SMD +surface-mounted straight socket strip, 2x10, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x10 2.54mm double row +0 +20 +20 +Connector_PinSocket_2.54mm +PinSocket_2x11_P2.54mm_Horizontal +Through hole angled socket strip, 2x11, 2.54mm pitch, 8.51mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x11 2.54mm double row +0 +22 +22 +Connector_PinSocket_2.54mm +PinSocket_2x11_P2.54mm_Vertical +Through hole straight socket strip, 2x11, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x11 2.54mm double row +0 +22 +22 +Connector_PinSocket_2.54mm +PinSocket_2x11_P2.54mm_Vertical_SMD +surface-mounted straight socket strip, 2x11, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x11 2.54mm double row +0 +22 +22 +Connector_PinSocket_2.54mm +PinSocket_2x12_P2.54mm_Horizontal +Through hole angled socket strip, 2x12, 2.54mm pitch, 8.51mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x12 2.54mm double row +0 +24 +24 +Connector_PinSocket_2.54mm +PinSocket_2x12_P2.54mm_Vertical +Through hole straight socket strip, 2x12, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x12 2.54mm double row +0 +24 +24 +Connector_PinSocket_2.54mm +PinSocket_2x12_P2.54mm_Vertical_SMD +surface-mounted straight socket strip, 2x12, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x12 2.54mm double row +0 +24 +24 +Connector_PinSocket_2.54mm +PinSocket_2x13_P2.54mm_Horizontal +Through hole angled socket strip, 2x13, 2.54mm pitch, 8.51mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x13 2.54mm double row +0 +26 +26 +Connector_PinSocket_2.54mm +PinSocket_2x13_P2.54mm_Vertical +Through hole straight socket strip, 2x13, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x13 2.54mm double row +0 +26 +26 +Connector_PinSocket_2.54mm +PinSocket_2x13_P2.54mm_Vertical_SMD +surface-mounted straight socket strip, 2x13, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x13 2.54mm double row +0 +26 +26 +Connector_PinSocket_2.54mm +PinSocket_2x14_P2.54mm_Horizontal +Through hole angled socket strip, 2x14, 2.54mm pitch, 8.51mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x14 2.54mm double row +0 +28 +28 +Connector_PinSocket_2.54mm +PinSocket_2x14_P2.54mm_Vertical +Through hole straight socket strip, 2x14, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x14 2.54mm double row +0 +28 +28 +Connector_PinSocket_2.54mm +PinSocket_2x14_P2.54mm_Vertical_SMD +surface-mounted straight socket strip, 2x14, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x14 2.54mm double row +0 +28 +28 +Connector_PinSocket_2.54mm +PinSocket_2x15_P2.54mm_Horizontal +Through hole angled socket strip, 2x15, 2.54mm pitch, 8.51mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x15 2.54mm double row +0 +30 +30 +Connector_PinSocket_2.54mm +PinSocket_2x15_P2.54mm_Vertical +Through hole straight socket strip, 2x15, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x15 2.54mm double row +0 +30 +30 +Connector_PinSocket_2.54mm +PinSocket_2x15_P2.54mm_Vertical_SMD +surface-mounted straight socket strip, 2x15, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x15 2.54mm double row +0 +30 +30 +Connector_PinSocket_2.54mm +PinSocket_2x16_P2.54mm_Horizontal +Through hole angled socket strip, 2x16, 2.54mm pitch, 8.51mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x16 2.54mm double row +0 +32 +32 +Connector_PinSocket_2.54mm +PinSocket_2x16_P2.54mm_Vertical +Through hole straight socket strip, 2x16, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x16 2.54mm double row +0 +32 +32 +Connector_PinSocket_2.54mm +PinSocket_2x16_P2.54mm_Vertical_SMD +surface-mounted straight socket strip, 2x16, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x16 2.54mm double row +0 +32 +32 +Connector_PinSocket_2.54mm +PinSocket_2x17_P2.54mm_Horizontal +Through hole angled socket strip, 2x17, 2.54mm pitch, 8.51mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x17 2.54mm double row +0 +34 +34 +Connector_PinSocket_2.54mm +PinSocket_2x17_P2.54mm_Vertical +Through hole straight socket strip, 2x17, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x17 2.54mm double row +0 +34 +34 +Connector_PinSocket_2.54mm +PinSocket_2x17_P2.54mm_Vertical_SMD +surface-mounted straight socket strip, 2x17, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x17 2.54mm double row +0 +34 +34 +Connector_PinSocket_2.54mm +PinSocket_2x18_P2.54mm_Horizontal +Through hole angled socket strip, 2x18, 2.54mm pitch, 8.51mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x18 2.54mm double row +0 +36 +36 +Connector_PinSocket_2.54mm +PinSocket_2x18_P2.54mm_Vertical +Through hole straight socket strip, 2x18, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x18 2.54mm double row +0 +36 +36 +Connector_PinSocket_2.54mm +PinSocket_2x18_P2.54mm_Vertical_SMD +surface-mounted straight socket strip, 2x18, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x18 2.54mm double row +0 +36 +36 +Connector_PinSocket_2.54mm +PinSocket_2x19_P2.54mm_Horizontal +Through hole angled socket strip, 2x19, 2.54mm pitch, 8.51mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x19 2.54mm double row +0 +38 +38 +Connector_PinSocket_2.54mm +PinSocket_2x19_P2.54mm_Vertical +Through hole straight socket strip, 2x19, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x19 2.54mm double row +0 +38 +38 +Connector_PinSocket_2.54mm +PinSocket_2x19_P2.54mm_Vertical_SMD +surface-mounted straight socket strip, 2x19, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x19 2.54mm double row +0 +38 +38 +Connector_PinSocket_2.54mm +PinSocket_2x20_P2.54mm_Horizontal +Through hole angled socket strip, 2x20, 2.54mm pitch, 8.51mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x20 2.54mm double row +0 +40 +40 +Connector_PinSocket_2.54mm +PinSocket_2x20_P2.54mm_Vertical +Through hole straight socket strip, 2x20, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x20 2.54mm double row +0 +40 +40 +Connector_PinSocket_2.54mm +PinSocket_2x20_P2.54mm_Vertical_SMD +surface-mounted straight socket strip, 2x20, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x20 2.54mm double row +0 +40 +40 +Connector_PinSocket_2.54mm +PinSocket_2x21_P2.54mm_Horizontal +Through hole angled socket strip, 2x21, 2.54mm pitch, 8.51mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x21 2.54mm double row +0 +42 +42 +Connector_PinSocket_2.54mm +PinSocket_2x21_P2.54mm_Vertical +Through hole straight socket strip, 2x21, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x21 2.54mm double row +0 +42 +42 +Connector_PinSocket_2.54mm +PinSocket_2x21_P2.54mm_Vertical_SMD +surface-mounted straight socket strip, 2x21, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x21 2.54mm double row +0 +42 +42 +Connector_PinSocket_2.54mm +PinSocket_2x22_P2.54mm_Horizontal +Through hole angled socket strip, 2x22, 2.54mm pitch, 8.51mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x22 2.54mm double row +0 +44 +44 +Connector_PinSocket_2.54mm +PinSocket_2x22_P2.54mm_Vertical +Through hole straight socket strip, 2x22, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x22 2.54mm double row +0 +44 +44 +Connector_PinSocket_2.54mm +PinSocket_2x22_P2.54mm_Vertical_SMD +surface-mounted straight socket strip, 2x22, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x22 2.54mm double row +0 +44 +44 +Connector_PinSocket_2.54mm +PinSocket_2x23_P2.54mm_Horizontal +Through hole angled socket strip, 2x23, 2.54mm pitch, 8.51mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x23 2.54mm double row +0 +46 +46 +Connector_PinSocket_2.54mm +PinSocket_2x23_P2.54mm_Vertical +Through hole straight socket strip, 2x23, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x23 2.54mm double row +0 +46 +46 +Connector_PinSocket_2.54mm +PinSocket_2x23_P2.54mm_Vertical_SMD +surface-mounted straight socket strip, 2x23, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x23 2.54mm double row +0 +46 +46 +Connector_PinSocket_2.54mm +PinSocket_2x24_P2.54mm_Horizontal +Through hole angled socket strip, 2x24, 2.54mm pitch, 8.51mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x24 2.54mm double row +0 +48 +48 +Connector_PinSocket_2.54mm +PinSocket_2x24_P2.54mm_Vertical +Through hole straight socket strip, 2x24, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x24 2.54mm double row +0 +48 +48 +Connector_PinSocket_2.54mm +PinSocket_2x24_P2.54mm_Vertical_SMD +surface-mounted straight socket strip, 2x24, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x24 2.54mm double row +0 +48 +48 +Connector_PinSocket_2.54mm +PinSocket_2x25_P2.54mm_Horizontal +Through hole angled socket strip, 2x25, 2.54mm pitch, 8.51mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x25 2.54mm double row +0 +50 +50 +Connector_PinSocket_2.54mm +PinSocket_2x25_P2.54mm_Vertical +Through hole straight socket strip, 2x25, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x25 2.54mm double row +0 +50 +50 +Connector_PinSocket_2.54mm +PinSocket_2x25_P2.54mm_Vertical_SMD +surface-mounted straight socket strip, 2x25, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x25 2.54mm double row +0 +50 +50 +Connector_PinSocket_2.54mm +PinSocket_2x26_P2.54mm_Horizontal +Through hole angled socket strip, 2x26, 2.54mm pitch, 8.51mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x26 2.54mm double row +0 +52 +52 +Connector_PinSocket_2.54mm +PinSocket_2x26_P2.54mm_Vertical +Through hole straight socket strip, 2x26, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x26 2.54mm double row +0 +52 +52 +Connector_PinSocket_2.54mm +PinSocket_2x26_P2.54mm_Vertical_SMD +surface-mounted straight socket strip, 2x26, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x26 2.54mm double row +0 +52 +52 +Connector_PinSocket_2.54mm +PinSocket_2x27_P2.54mm_Horizontal +Through hole angled socket strip, 2x27, 2.54mm pitch, 8.51mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x27 2.54mm double row +0 +54 +54 +Connector_PinSocket_2.54mm +PinSocket_2x27_P2.54mm_Vertical +Through hole straight socket strip, 2x27, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x27 2.54mm double row +0 +54 +54 +Connector_PinSocket_2.54mm +PinSocket_2x27_P2.54mm_Vertical_SMD +surface-mounted straight socket strip, 2x27, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x27 2.54mm double row +0 +54 +54 +Connector_PinSocket_2.54mm +PinSocket_2x28_P2.54mm_Horizontal +Through hole angled socket strip, 2x28, 2.54mm pitch, 8.51mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x28 2.54mm double row +0 +56 +56 +Connector_PinSocket_2.54mm +PinSocket_2x28_P2.54mm_Vertical +Through hole straight socket strip, 2x28, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x28 2.54mm double row +0 +56 +56 +Connector_PinSocket_2.54mm +PinSocket_2x28_P2.54mm_Vertical_SMD +surface-mounted straight socket strip, 2x28, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x28 2.54mm double row +0 +56 +56 +Connector_PinSocket_2.54mm +PinSocket_2x29_P2.54mm_Horizontal +Through hole angled socket strip, 2x29, 2.54mm pitch, 8.51mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x29 2.54mm double row +0 +58 +58 +Connector_PinSocket_2.54mm +PinSocket_2x29_P2.54mm_Vertical +Through hole straight socket strip, 2x29, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x29 2.54mm double row +0 +58 +58 +Connector_PinSocket_2.54mm +PinSocket_2x29_P2.54mm_Vertical_SMD +surface-mounted straight socket strip, 2x29, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x29 2.54mm double row +0 +58 +58 +Connector_PinSocket_2.54mm +PinSocket_2x30_P2.54mm_Horizontal +Through hole angled socket strip, 2x30, 2.54mm pitch, 8.51mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x30 2.54mm double row +0 +60 +60 +Connector_PinSocket_2.54mm +PinSocket_2x30_P2.54mm_Vertical +Through hole straight socket strip, 2x30, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x30 2.54mm double row +0 +60 +60 +Connector_PinSocket_2.54mm +PinSocket_2x30_P2.54mm_Vertical_SMD +surface-mounted straight socket strip, 2x30, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x30 2.54mm double row +0 +60 +60 +Connector_PinSocket_2.54mm +PinSocket_2x31_P2.54mm_Horizontal +Through hole angled socket strip, 2x31, 2.54mm pitch, 8.51mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x31 2.54mm double row +0 +62 +62 +Connector_PinSocket_2.54mm +PinSocket_2x31_P2.54mm_Vertical +Through hole straight socket strip, 2x31, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x31 2.54mm double row +0 +62 +62 +Connector_PinSocket_2.54mm +PinSocket_2x31_P2.54mm_Vertical_SMD +surface-mounted straight socket strip, 2x31, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x31 2.54mm double row +0 +62 +62 +Connector_PinSocket_2.54mm +PinSocket_2x32_P2.54mm_Horizontal +Through hole angled socket strip, 2x32, 2.54mm pitch, 8.51mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x32 2.54mm double row +0 +64 +64 +Connector_PinSocket_2.54mm +PinSocket_2x32_P2.54mm_Vertical +Through hole straight socket strip, 2x32, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x32 2.54mm double row +0 +64 +64 +Connector_PinSocket_2.54mm +PinSocket_2x32_P2.54mm_Vertical_SMD +surface-mounted straight socket strip, 2x32, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x32 2.54mm double row +0 +64 +64 +Connector_PinSocket_2.54mm +PinSocket_2x33_P2.54mm_Horizontal +Through hole angled socket strip, 2x33, 2.54mm pitch, 8.51mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x33 2.54mm double row +0 +66 +66 +Connector_PinSocket_2.54mm +PinSocket_2x33_P2.54mm_Vertical +Through hole straight socket strip, 2x33, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x33 2.54mm double row +0 +66 +66 +Connector_PinSocket_2.54mm +PinSocket_2x33_P2.54mm_Vertical_SMD +surface-mounted straight socket strip, 2x33, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x33 2.54mm double row +0 +66 +66 +Connector_PinSocket_2.54mm +PinSocket_2x34_P2.54mm_Horizontal +Through hole angled socket strip, 2x34, 2.54mm pitch, 8.51mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x34 2.54mm double row +0 +68 +68 +Connector_PinSocket_2.54mm +PinSocket_2x34_P2.54mm_Vertical +Through hole straight socket strip, 2x34, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x34 2.54mm double row +0 +68 +68 +Connector_PinSocket_2.54mm +PinSocket_2x34_P2.54mm_Vertical_SMD +surface-mounted straight socket strip, 2x34, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x34 2.54mm double row +0 +68 +68 +Connector_PinSocket_2.54mm +PinSocket_2x35_P2.54mm_Horizontal +Through hole angled socket strip, 2x35, 2.54mm pitch, 8.51mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x35 2.54mm double row +0 +70 +70 +Connector_PinSocket_2.54mm +PinSocket_2x35_P2.54mm_Vertical +Through hole straight socket strip, 2x35, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x35 2.54mm double row +0 +70 +70 +Connector_PinSocket_2.54mm +PinSocket_2x35_P2.54mm_Vertical_SMD +surface-mounted straight socket strip, 2x35, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x35 2.54mm double row +0 +70 +70 +Connector_PinSocket_2.54mm +PinSocket_2x36_P2.54mm_Horizontal +Through hole angled socket strip, 2x36, 2.54mm pitch, 8.51mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x36 2.54mm double row +0 +72 +72 +Connector_PinSocket_2.54mm +PinSocket_2x36_P2.54mm_Vertical +Through hole straight socket strip, 2x36, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x36 2.54mm double row +0 +72 +72 +Connector_PinSocket_2.54mm +PinSocket_2x36_P2.54mm_Vertical_SMD +surface-mounted straight socket strip, 2x36, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x36 2.54mm double row +0 +72 +72 +Connector_PinSocket_2.54mm +PinSocket_2x37_P2.54mm_Horizontal +Through hole angled socket strip, 2x37, 2.54mm pitch, 8.51mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x37 2.54mm double row +0 +74 +74 +Connector_PinSocket_2.54mm +PinSocket_2x37_P2.54mm_Vertical +Through hole straight socket strip, 2x37, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x37 2.54mm double row +0 +74 +74 +Connector_PinSocket_2.54mm +PinSocket_2x37_P2.54mm_Vertical_SMD +surface-mounted straight socket strip, 2x37, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x37 2.54mm double row +0 +74 +74 +Connector_PinSocket_2.54mm +PinSocket_2x38_P2.54mm_Horizontal +Through hole angled socket strip, 2x38, 2.54mm pitch, 8.51mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x38 2.54mm double row +0 +76 +76 +Connector_PinSocket_2.54mm +PinSocket_2x38_P2.54mm_Vertical +Through hole straight socket strip, 2x38, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x38 2.54mm double row +0 +76 +76 +Connector_PinSocket_2.54mm +PinSocket_2x38_P2.54mm_Vertical_SMD +surface-mounted straight socket strip, 2x38, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x38 2.54mm double row +0 +76 +76 +Connector_PinSocket_2.54mm +PinSocket_2x39_P2.54mm_Horizontal +Through hole angled socket strip, 2x39, 2.54mm pitch, 8.51mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x39 2.54mm double row +0 +78 +78 +Connector_PinSocket_2.54mm +PinSocket_2x39_P2.54mm_Vertical +Through hole straight socket strip, 2x39, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x39 2.54mm double row +0 +78 +78 +Connector_PinSocket_2.54mm +PinSocket_2x39_P2.54mm_Vertical_SMD +surface-mounted straight socket strip, 2x39, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x39 2.54mm double row +0 +78 +78 +Connector_PinSocket_2.54mm +PinSocket_2x40_P2.54mm_Horizontal +Through hole angled socket strip, 2x40, 2.54mm pitch, 8.51mm socket length, double cols (from Kicad 4.0.7), script generated +Through hole angled socket strip THT 2x40 2.54mm double row +0 +80 +80 +Connector_PinSocket_2.54mm +PinSocket_2x40_P2.54mm_Vertical +Through hole straight socket strip, 2x40, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Through hole socket strip THT 2x40 2.54mm double row +0 +80 +80 +Connector_PinSocket_2.54mm +PinSocket_2x40_P2.54mm_Vertical_SMD +surface-mounted straight socket strip, 2x40, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated +Surface mounted socket strip SMD 2x40 2.54mm double row +0 +80 +80 +Connector_RJ +RJ12_Amphenol_54601 +RJ12 connector https://cdn.amphenol-icc.com/media/wysiwyg/files/drawing/c-bmj-0082.pdf +RJ12 connector +0 +6 +6 +Connector_RJ +RJ14_Connfly_DS1133-S4_Horizontal +RJ14 connector 6P4C Horizontal http://www.connfly.com/userfiles/image/UpLoadFile/File/2012/10/26/DS1133.pdf +RJ14 connector 6P4C Connfly DS1133 +0 +4 +4 +Connector_RJ +RJ25_Wayconn_MJEA-660X1_Horizontal +RJ25 6P6C Socket 90 degrees, https://wayconn.com/wp-content/themes/way/datasheet/MJEA-660X1XXX_RJ25_6P6C_PCB_RA.pdf +RJ12 RJ18 RJ25 jack connector 6P6C +0 +6 +6 +Connector_RJ +RJ45_Abracon_ARJP11A-MA_Horizontal +Shielded RJ45 ethernet connector with transformer and POE (https://abracon.com/Magnetics/lan/ARJP11A.PDF) +ethernet 8p8c transformer poe rj45 +0 +15 +14 +Connector_RJ +RJ45_Amphenol_54602-x08_Horizontal +8 Pol Shallow Latch Connector, Modjack, RJ45 (https://cdn.amphenol-icc.com/media/wysiwyg/files/drawing/c-bmj-0102.pdf) +RJ45 +0 +8 +8 +Connector_RJ +RJ45_Amphenol_RJHSE538X +Shielded, 2 LED, https://www.amphenolcanada.com/ProductSearch/drawings/AC/RJHSE538X.pdf +RJ45 8p8c ethernet cat5 +0 +14 +13 +Connector_RJ +RJ45_Amphenol_RJHSE538X-02 +Shielded, 2 LED, 2 Ports, http://www.amphenolinfocom.eu/NavData/Drawings/RJHSE-538X-02-REVC.pdf +RJ45 8p8c dual ethernet cat5 +0 +26 +25 +Connector_RJ +RJ45_Amphenol_RJHSE5380 +Shielded, https://www.amphenolcanada.com/ProductSearch/drawings/AC/RJHSE538X.pdf +RJ45 8p8c ethernet cat5 +0 +10 +9 +Connector_RJ +RJ45_Amphenol_RJHSE5380-08 +Shielded, https://www.amphenolcanada.com/ProductSearch/drawings/AC/RJHSE538X08.pdf +RJ45 8p8c ethernet cat5 +0 +68 +65 +Connector_RJ +RJ45_Amphenol_RJMG1BD3B8K1ANR +1 Port RJ45 Magjack Connector Through Hole 10/100 Base-T, AutoMDIX, https://www.amphenolcanada.com/ProductSearch/Drawings/AC/RJMG1BD3B8K1ANR.PDF +RJ45 Magjack +0 +14 +13 +Connector_RJ +RJ45_BEL_SS74301-00x_Vertical +https://belfuse.com/resources/drawings/stewartconnector/dr-stw-ss-74301-001-ss-74301-002-ss-74301-005.pdf +RJ45 Vertical Shield LED Green Yellow +0 +14 +13 +Connector_RJ +RJ45_Cetus_J1B1211CCD_Horizontal +1 Port RJ45 Magjack Connector Through Hole 10/100 Base-T, Cetus, used and distributed by WIZnet (https://wizwiki.net/wiki/lib/exe/fetch.php?media=products:wiz550web:wiz550webds_kr:j1b1211ccd.pdf) +RJ45 Magjack +0 +14 +13 +Connector_RJ +RJ45_Hanrun_HR911105A +http://www.kosmodrom.com.ua/pdf/HR911105A.pdf +RJ45 Magjack +0 +14 +13 +Connector_RJ +RJ45_Molex_0855135013_Vertical +1 Port, RJ45, Series 85513, vertical, SMD, https://www.molex.com/pdm_docs/sd/855135013_sd.pdf +RJ45 Vertical +0 +9 +9 +Connector_RJ +RJ45_Ninigi_GE +1 port ethernet throughhole connector, https://en.ninigi.com/product/rj45ge/pdf +RJ45 ethernet 8p8c +0 +10 +9 +Connector_RJ +RJ45_OST_PJ012-8P8CX_Vertical +RJ45 vertical connector https://www.on-shore.com/wp-content/uploads/PJ012-8P8CX.pdf +RJ45 PJ012 +0 +8 +8 +Connector_RJ +RJ45_Plug_Metz_AJP92A8813 +plug, ethernet, 8P8C, RJ45 Plug +AJP92A8813 8P8C RJ45 ethernet plug +0 +8 +8 +Connector_RJ +RJ45_Pulse_JK0654219NL_Horizontal +10/100/1000 Base-T RJ45 single port with LEDs https://media.digikey.com/pdf/Data%20Sheets/Pulse%20PDFs/JK%20Series.pdf#page=2 +RJ45 8p8c ethernet +0 +18 +17 +Connector_RJ +RJ45_Pulse_JXD6-0001NL_Horizontal +RJ45 ethernet transformer with magnetics (https://productfinder.pulseeng.com/doc_type/WEB301/doc_num/JXD6-0001NL/doc_part/JXD6-0001NL.pdf) +ethernet 8p8c transformer magjack +0 +12 +11 +Connector_RJ +RJ45_Wuerth_7499010001A_Horizontal +10/100Base-TX RJ45 ethernet magnetic transformer connector horizontal https://katalog.we-online.de/pbs/datasheet/7499010001A.pdf +RJ45 ethernet magnetic +0 +10 +9 +Connector_RJ +RJ45_Wuerth_7499010121A_Horizontal +10/100Base-TX RJ45 ethernet magnetic transformer connector horizontal with green/orange LEDs https://katalog.we-online.de/pbs/datasheet/7499010121A.pdf +RJ45 ethernet magnetic +0 +14 +13 +Connector_RJ +RJ45_Wuerth_7499111446_Horizontal +LAN-Transformer WE-RJ45LAN 10/100/1000 BaseT +ethernet lan connector +0 +16 +15 +Connector_RJ +RJ45_Wuerth_7499151120_Horizontal +Wuerth 7499151120, LAN-Transformer WE-RJ45LAN 10/100/1000 BaseT, Dual Ethernet Jack (http://katalog.we-online.de/pbs/datasheet/7499151120.pdf) +ethernet lan connector +0 +32 +29 +Connector_RJ +RJ45_Wuerth_74980111211_Horizontal +RJ45 LAN Transformer 10/100BaseT (https://katalog.we-online.de/pbs/datasheet/74980111211.pdf) +lan magnetics transformer +0 +14 +13 +Connector_SATA_SAS +SAS-mini_TEConnectivity_1888174_Vertical +36pin mini SAS connector, http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=1888174&DocType=Customer+Drawing&DocLang=English +SAS mini connector +0 +44 +44 +Connector_SATA_SAS +SATA_Amphenol_10029364-001LF_Horizontal +https://cdn.amphenol-icc.com/media/wysiwyg/files/drawing/10029364.pdf +SATA +0 +24 +23 +Connector_Samtec +Samtec_FMC_ASP-134486-01_10x40_P1.27mm_Vertical +http://suddendocs.samtec.com/prints/asp-134486-01-mkt.pdf +FMC HPC +0 +400 +400 +Connector_Samtec +Samtec_FMC_ASP-134602-01_10x40_P1.27mm_Vertical +https://www.marutsu.co.jp/contents/shop/marutsu/ds/asp-134602-01.pdf +FMC HPC +0 +400 +400 +Connector_Samtec +Samtec_FMC_ASP-134604-01_4x40_Vertical +http://www.samtec.com/standards/vita.aspx +FMC LPC VITA +0 +162 +160 +Connector_Samtec +Samtec_LSHM-105-xx.x-x-DV-N_2x05_P0.50mm_Vertical +Molex LSHM 0.50 mm Razor Beam High-Speed Hermaphroditic Terminal/Socket Strip, LSHM-105-xx.x-x-DV-N, 5 Pins per row (http://suddendocs.samtec.com/prints/lshm-1xx-xx.x-x-dv-a-x-x-tr-footprint.pdf), generated with kicad-footprint-generator +connector Samtec side entry +0 +10 +10 +Connector_Samtec +Samtec_LSHM-105-xx.x-x-DV-S_2x05-1SH_P0.50mm_Vertical +Molex LSHM 0.50 mm Razor Beam High-Speed Hermaphroditic Terminal/Socket Strip, LSHM-105-xx.x-x-DV-S, 5 Pins per row (http://suddendocs.samtec.com/prints/lshm-1xx-xx.x-x-dv-a-x-x-tr-footprint.pdf), generated with kicad-footprint-generator +connector Samtec side entry +0 +12 +11 +Connector_Samtec +Samtec_LSHM-110-xx.x-x-DV-N_2x10_P0.50mm_Vertical +Molex LSHM 0.50 mm Razor Beam High-Speed Hermaphroditic Terminal/Socket Strip, LSHM-110-xx.x-x-DV-N, 10 Pins per row (http://suddendocs.samtec.com/prints/lshm-1xx-xx.x-x-dv-a-x-x-tr-footprint.pdf), generated with kicad-footprint-generator +connector Samtec side entry +0 +20 +20 +Connector_Samtec +Samtec_LSHM-110-xx.x-x-DV-S_2x10-1SH_P0.50mm_Vertical +Molex LSHM 0.50 mm Razor Beam High-Speed Hermaphroditic Terminal/Socket Strip, LSHM-110-xx.x-x-DV-S, 10 Pins per row (http://suddendocs.samtec.com/prints/lshm-1xx-xx.x-x-dv-a-x-x-tr-footprint.pdf), generated with kicad-footprint-generator +connector Samtec side entry +0 +22 +21 +Connector_Samtec +Samtec_LSHM-120-xx.x-x-DV-N_2x20_P0.50mm_Vertical +Molex LSHM 0.50 mm Razor Beam High-Speed Hermaphroditic Terminal/Socket Strip, LSHM-120-xx.x-x-DV-N, 20 Pins per row (http://suddendocs.samtec.com/prints/lshm-1xx-xx.x-x-dv-a-x-x-tr-footprint.pdf), generated with kicad-footprint-generator +connector Samtec side entry +0 +40 +40 +Connector_Samtec +Samtec_LSHM-120-xx.x-x-DV-S_2x20-1SH_P0.50mm_Vertical +Molex LSHM 0.50 mm Razor Beam High-Speed Hermaphroditic Terminal/Socket Strip, LSHM-120-xx.x-x-DV-S, 20 Pins per row (http://suddendocs.samtec.com/prints/lshm-1xx-xx.x-x-dv-a-x-x-tr-footprint.pdf), generated with kicad-footprint-generator +connector Samtec side entry +0 +42 +41 +Connector_Samtec +Samtec_LSHM-130-xx.x-x-DV-N_2x30_P0.50mm_Vertical +Molex LSHM 0.50 mm Razor Beam High-Speed Hermaphroditic Terminal/Socket Strip, LSHM-130-xx.x-x-DV-N, 30 Pins per row (http://suddendocs.samtec.com/prints/lshm-1xx-xx.x-x-dv-a-x-x-tr-footprint.pdf), generated with kicad-footprint-generator +connector Samtec side entry +0 +60 +60 +Connector_Samtec +Samtec_LSHM-130-xx.x-x-DV-S_2x30-1SH_P0.50mm_Vertical +Molex LSHM 0.50 mm Razor Beam High-Speed Hermaphroditic Terminal/Socket Strip, LSHM-130-xx.x-x-DV-S, 30 Pins per row (http://suddendocs.samtec.com/prints/lshm-1xx-xx.x-x-dv-a-x-x-tr-footprint.pdf), generated with kicad-footprint-generator +connector Samtec side entry +0 +62 +61 +Connector_Samtec +Samtec_LSHM-140-xx.x-x-DV-N_2x40_P0.50mm_Vertical +Molex LSHM 0.50 mm Razor Beam High-Speed Hermaphroditic Terminal/Socket Strip, LSHM-140-xx.x-x-DV-N, 40 Pins per row (http://suddendocs.samtec.com/prints/lshm-1xx-xx.x-x-dv-a-x-x-tr-footprint.pdf), generated with kicad-footprint-generator +connector Samtec side entry +0 +80 +80 +Connector_Samtec +Samtec_LSHM-140-xx.x-x-DV-S_2x40-1SH_P0.50mm_Vertical +Molex LSHM 0.50 mm Razor Beam High-Speed Hermaphroditic Terminal/Socket Strip, LSHM-140-xx.x-x-DV-S, 40 Pins per row (http://suddendocs.samtec.com/prints/lshm-1xx-xx.x-x-dv-a-x-x-tr-footprint.pdf), generated with kicad-footprint-generator +connector Samtec side entry +0 +82 +81 +Connector_Samtec +Samtec_LSHM-150-xx.x-x-DV-N_2x50_P0.50mm_Vertical +Molex LSHM 0.50 mm Razor Beam High-Speed Hermaphroditic Terminal/Socket Strip, LSHM-150-xx.x-x-DV-N, 50 Pins per row (http://suddendocs.samtec.com/prints/lshm-1xx-xx.x-x-dv-a-x-x-tr-footprint.pdf), generated with kicad-footprint-generator +connector Samtec side entry +0 +100 +100 +Connector_Samtec +Samtec_LSHM-150-xx.x-x-DV-S_2x50-1SH_P0.50mm_Vertical +Molex LSHM 0.50 mm Razor Beam High-Speed Hermaphroditic Terminal/Socket Strip, LSHM-150-xx.x-x-DV-S, 50 Pins per row (http://suddendocs.samtec.com/prints/lshm-1xx-xx.x-x-dv-a-x-x-tr-footprint.pdf), generated with kicad-footprint-generator +connector Samtec side entry +0 +102 +101 +Connector_Samtec_HLE_SMD +Samtec_HLE-102-02-xxx-DV-BE-LC_2x02_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-102-02-xxx-DV-BE-LC, 2 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +4 +4 +Connector_Samtec_HLE_SMD +Samtec_HLE-102-02-xxx-DV-BE_2x02_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-102-02-xxx-DV-BE, 2 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +4 +4 +Connector_Samtec_HLE_SMD +Samtec_HLE-102-02-xxx-DV-LC_2x02_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-102-02-xxx-DV-LC, 2 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +4 +4 +Connector_Samtec_HLE_SMD +Samtec_HLE-102-02-xxx-DV_2x02_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-102-02-xxx-DV, 2 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +4 +4 +Connector_Samtec_HLE_SMD +Samtec_HLE-103-02-xxx-DV-BE-LC_2x03_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-103-02-xxx-DV-BE-LC, 3 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +6 +6 +Connector_Samtec_HLE_SMD +Samtec_HLE-103-02-xxx-DV-BE_2x03_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-103-02-xxx-DV-BE, 3 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +6 +6 +Connector_Samtec_HLE_SMD +Samtec_HLE-103-02-xxx-DV-LC_2x03_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-103-02-xxx-DV-LC, 3 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +6 +6 +Connector_Samtec_HLE_SMD +Samtec_HLE-103-02-xxx-DV_2x03_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-103-02-xxx-DV, 3 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +6 +6 +Connector_Samtec_HLE_SMD +Samtec_HLE-104-02-xxx-DV-A_2x04_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-104-02-xxx-DV-A, 4 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +8 +8 +Connector_Samtec_HLE_SMD +Samtec_HLE-104-02-xxx-DV-BE-A_2x04_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-104-02-xxx-DV-BE-A, 4 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +8 +8 +Connector_Samtec_HLE_SMD +Samtec_HLE-104-02-xxx-DV-BE-LC_2x04_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-104-02-xxx-DV-BE-LC, 4 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +8 +8 +Connector_Samtec_HLE_SMD +Samtec_HLE-104-02-xxx-DV-BE_2x04_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-104-02-xxx-DV-BE, 4 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +8 +8 +Connector_Samtec_HLE_SMD +Samtec_HLE-104-02-xxx-DV-LC_2x04_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-104-02-xxx-DV-LC, 4 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +8 +8 +Connector_Samtec_HLE_SMD +Samtec_HLE-104-02-xxx-DV_2x04_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-104-02-xxx-DV, 4 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +8 +8 +Connector_Samtec_HLE_SMD +Samtec_HLE-105-02-xxx-DV-A_2x05_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-105-02-xxx-DV-A, 5 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +10 +10 +Connector_Samtec_HLE_SMD +Samtec_HLE-105-02-xxx-DV-BE-A_2x05_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-105-02-xxx-DV-BE-A, 5 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +10 +10 +Connector_Samtec_HLE_SMD +Samtec_HLE-105-02-xxx-DV-BE-LC_2x05_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-105-02-xxx-DV-BE-LC, 5 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +10 +10 +Connector_Samtec_HLE_SMD +Samtec_HLE-105-02-xxx-DV-BE_2x05_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-105-02-xxx-DV-BE, 5 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +10 +10 +Connector_Samtec_HLE_SMD +Samtec_HLE-105-02-xxx-DV-LC_2x05_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-105-02-xxx-DV-LC, 5 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +10 +10 +Connector_Samtec_HLE_SMD +Samtec_HLE-105-02-xxx-DV_2x05_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-105-02-xxx-DV, 5 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +10 +10 +Connector_Samtec_HLE_SMD +Samtec_HLE-106-02-xxx-DV-A_2x06_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-106-02-xxx-DV-A, 6 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +12 +12 +Connector_Samtec_HLE_SMD +Samtec_HLE-106-02-xxx-DV-BE-A_2x06_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-106-02-xxx-DV-BE-A, 6 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +12 +12 +Connector_Samtec_HLE_SMD +Samtec_HLE-106-02-xxx-DV-BE-LC_2x06_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-106-02-xxx-DV-BE-LC, 6 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +12 +12 +Connector_Samtec_HLE_SMD +Samtec_HLE-106-02-xxx-DV-BE_2x06_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-106-02-xxx-DV-BE, 6 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +12 +12 +Connector_Samtec_HLE_SMD +Samtec_HLE-106-02-xxx-DV-LC_2x06_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-106-02-xxx-DV-LC, 6 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +12 +12 +Connector_Samtec_HLE_SMD +Samtec_HLE-106-02-xxx-DV_2x06_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-106-02-xxx-DV, 6 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +12 +12 +Connector_Samtec_HLE_SMD +Samtec_HLE-107-02-xxx-DV-A_2x07_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-107-02-xxx-DV-A, 7 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +14 +14 +Connector_Samtec_HLE_SMD +Samtec_HLE-107-02-xxx-DV-BE-A_2x07_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-107-02-xxx-DV-BE-A, 7 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +14 +14 +Connector_Samtec_HLE_SMD +Samtec_HLE-107-02-xxx-DV-BE-LC_2x07_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-107-02-xxx-DV-BE-LC, 7 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +14 +14 +Connector_Samtec_HLE_SMD +Samtec_HLE-107-02-xxx-DV-BE_2x07_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-107-02-xxx-DV-BE, 7 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +14 +14 +Connector_Samtec_HLE_SMD +Samtec_HLE-107-02-xxx-DV-LC_2x07_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-107-02-xxx-DV-LC, 7 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +14 +14 +Connector_Samtec_HLE_SMD +Samtec_HLE-107-02-xxx-DV_2x07_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-107-02-xxx-DV, 7 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +14 +14 +Connector_Samtec_HLE_SMD +Samtec_HLE-108-02-xxx-DV-A_2x08_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-108-02-xxx-DV-A, 8 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +16 +16 +Connector_Samtec_HLE_SMD +Samtec_HLE-108-02-xxx-DV-BE-A_2x08_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-108-02-xxx-DV-BE-A, 8 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +16 +16 +Connector_Samtec_HLE_SMD +Samtec_HLE-108-02-xxx-DV-BE-LC_2x08_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-108-02-xxx-DV-BE-LC, 8 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +16 +16 +Connector_Samtec_HLE_SMD +Samtec_HLE-108-02-xxx-DV-BE_2x08_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-108-02-xxx-DV-BE, 8 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +16 +16 +Connector_Samtec_HLE_SMD +Samtec_HLE-108-02-xxx-DV-LC_2x08_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-108-02-xxx-DV-LC, 8 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +16 +16 +Connector_Samtec_HLE_SMD +Samtec_HLE-108-02-xxx-DV_2x08_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-108-02-xxx-DV, 8 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +16 +16 +Connector_Samtec_HLE_SMD +Samtec_HLE-109-02-xxx-DV-A_2x09_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-109-02-xxx-DV-A, 9 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +18 +18 +Connector_Samtec_HLE_SMD +Samtec_HLE-109-02-xxx-DV-BE-A_2x09_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-109-02-xxx-DV-BE-A, 9 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +18 +18 +Connector_Samtec_HLE_SMD +Samtec_HLE-109-02-xxx-DV-BE-LC_2x09_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-109-02-xxx-DV-BE-LC, 9 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +18 +18 +Connector_Samtec_HLE_SMD +Samtec_HLE-109-02-xxx-DV-BE_2x09_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-109-02-xxx-DV-BE, 9 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +18 +18 +Connector_Samtec_HLE_SMD +Samtec_HLE-109-02-xxx-DV-LC_2x09_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-109-02-xxx-DV-LC, 9 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +18 +18 +Connector_Samtec_HLE_SMD +Samtec_HLE-109-02-xxx-DV_2x09_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-109-02-xxx-DV, 9 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +18 +18 +Connector_Samtec_HLE_SMD +Samtec_HLE-110-02-xxx-DV-A_2x10_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-110-02-xxx-DV-A, 10 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +20 +20 +Connector_Samtec_HLE_SMD +Samtec_HLE-110-02-xxx-DV-BE-A_2x10_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-110-02-xxx-DV-BE-A, 10 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +20 +20 +Connector_Samtec_HLE_SMD +Samtec_HLE-110-02-xxx-DV-BE-LC_2x10_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-110-02-xxx-DV-BE-LC, 10 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +20 +20 +Connector_Samtec_HLE_SMD +Samtec_HLE-110-02-xxx-DV-BE_2x10_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-110-02-xxx-DV-BE, 10 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +20 +20 +Connector_Samtec_HLE_SMD +Samtec_HLE-110-02-xxx-DV-LC_2x10_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-110-02-xxx-DV-LC, 10 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +20 +20 +Connector_Samtec_HLE_SMD +Samtec_HLE-110-02-xxx-DV_2x10_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-110-02-xxx-DV, 10 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +20 +20 +Connector_Samtec_HLE_SMD +Samtec_HLE-111-02-xxx-DV-A_2x11_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-111-02-xxx-DV-A, 11 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +22 +22 +Connector_Samtec_HLE_SMD +Samtec_HLE-111-02-xxx-DV-BE-A_2x11_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-111-02-xxx-DV-BE-A, 11 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +22 +22 +Connector_Samtec_HLE_SMD +Samtec_HLE-111-02-xxx-DV-BE-LC_2x11_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-111-02-xxx-DV-BE-LC, 11 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +22 +22 +Connector_Samtec_HLE_SMD +Samtec_HLE-111-02-xxx-DV-BE_2x11_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-111-02-xxx-DV-BE, 11 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +22 +22 +Connector_Samtec_HLE_SMD +Samtec_HLE-111-02-xxx-DV-LC_2x11_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-111-02-xxx-DV-LC, 11 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +22 +22 +Connector_Samtec_HLE_SMD +Samtec_HLE-111-02-xxx-DV_2x11_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-111-02-xxx-DV, 11 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +22 +22 +Connector_Samtec_HLE_SMD +Samtec_HLE-112-02-xxx-DV-A_2x12_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-112-02-xxx-DV-A, 12 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +24 +24 +Connector_Samtec_HLE_SMD +Samtec_HLE-112-02-xxx-DV-BE-A_2x12_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-112-02-xxx-DV-BE-A, 12 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +24 +24 +Connector_Samtec_HLE_SMD +Samtec_HLE-112-02-xxx-DV-BE-LC_2x12_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-112-02-xxx-DV-BE-LC, 12 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +24 +24 +Connector_Samtec_HLE_SMD +Samtec_HLE-112-02-xxx-DV-BE_2x12_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-112-02-xxx-DV-BE, 12 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +24 +24 +Connector_Samtec_HLE_SMD +Samtec_HLE-112-02-xxx-DV-LC_2x12_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-112-02-xxx-DV-LC, 12 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +24 +24 +Connector_Samtec_HLE_SMD +Samtec_HLE-112-02-xxx-DV_2x12_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-112-02-xxx-DV, 12 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +24 +24 +Connector_Samtec_HLE_SMD +Samtec_HLE-113-02-xxx-DV-A_2x13_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-113-02-xxx-DV-A, 13 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +26 +26 +Connector_Samtec_HLE_SMD +Samtec_HLE-113-02-xxx-DV-BE-A_2x13_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-113-02-xxx-DV-BE-A, 13 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +26 +26 +Connector_Samtec_HLE_SMD +Samtec_HLE-113-02-xxx-DV-BE-LC_2x13_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-113-02-xxx-DV-BE-LC, 13 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +26 +26 +Connector_Samtec_HLE_SMD +Samtec_HLE-113-02-xxx-DV-BE_2x13_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-113-02-xxx-DV-BE, 13 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +26 +26 +Connector_Samtec_HLE_SMD +Samtec_HLE-113-02-xxx-DV-LC_2x13_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-113-02-xxx-DV-LC, 13 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +26 +26 +Connector_Samtec_HLE_SMD +Samtec_HLE-113-02-xxx-DV_2x13_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-113-02-xxx-DV, 13 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +26 +26 +Connector_Samtec_HLE_SMD +Samtec_HLE-114-02-xxx-DV-A_2x14_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-114-02-xxx-DV-A, 14 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +28 +28 +Connector_Samtec_HLE_SMD +Samtec_HLE-114-02-xxx-DV-BE-A_2x14_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-114-02-xxx-DV-BE-A, 14 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +28 +28 +Connector_Samtec_HLE_SMD +Samtec_HLE-114-02-xxx-DV-BE-LC_2x14_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-114-02-xxx-DV-BE-LC, 14 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +28 +28 +Connector_Samtec_HLE_SMD +Samtec_HLE-114-02-xxx-DV-BE_2x14_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-114-02-xxx-DV-BE, 14 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +28 +28 +Connector_Samtec_HLE_SMD +Samtec_HLE-114-02-xxx-DV-LC_2x14_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-114-02-xxx-DV-LC, 14 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +28 +28 +Connector_Samtec_HLE_SMD +Samtec_HLE-114-02-xxx-DV_2x14_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-114-02-xxx-DV, 14 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +28 +28 +Connector_Samtec_HLE_SMD +Samtec_HLE-115-02-xxx-DV-A_2x15_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-115-02-xxx-DV-A, 15 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +30 +30 +Connector_Samtec_HLE_SMD +Samtec_HLE-115-02-xxx-DV-BE-A_2x15_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-115-02-xxx-DV-BE-A, 15 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +30 +30 +Connector_Samtec_HLE_SMD +Samtec_HLE-115-02-xxx-DV-BE-LC_2x15_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-115-02-xxx-DV-BE-LC, 15 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +30 +30 +Connector_Samtec_HLE_SMD +Samtec_HLE-115-02-xxx-DV-BE_2x15_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-115-02-xxx-DV-BE, 15 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +30 +30 +Connector_Samtec_HLE_SMD +Samtec_HLE-115-02-xxx-DV-LC_2x15_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-115-02-xxx-DV-LC, 15 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +30 +30 +Connector_Samtec_HLE_SMD +Samtec_HLE-115-02-xxx-DV_2x15_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-115-02-xxx-DV, 15 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +30 +30 +Connector_Samtec_HLE_SMD +Samtec_HLE-116-02-xxx-DV-A_2x16_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-116-02-xxx-DV-A, 16 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +32 +32 +Connector_Samtec_HLE_SMD +Samtec_HLE-116-02-xxx-DV-BE-A_2x16_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-116-02-xxx-DV-BE-A, 16 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +32 +32 +Connector_Samtec_HLE_SMD +Samtec_HLE-116-02-xxx-DV-BE-LC_2x16_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-116-02-xxx-DV-BE-LC, 16 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +32 +32 +Connector_Samtec_HLE_SMD +Samtec_HLE-116-02-xxx-DV-BE_2x16_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-116-02-xxx-DV-BE, 16 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +32 +32 +Connector_Samtec_HLE_SMD +Samtec_HLE-116-02-xxx-DV-LC_2x16_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-116-02-xxx-DV-LC, 16 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +32 +32 +Connector_Samtec_HLE_SMD +Samtec_HLE-116-02-xxx-DV_2x16_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-116-02-xxx-DV, 16 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +32 +32 +Connector_Samtec_HLE_SMD +Samtec_HLE-117-02-xxx-DV-A_2x17_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-117-02-xxx-DV-A, 17 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +34 +34 +Connector_Samtec_HLE_SMD +Samtec_HLE-117-02-xxx-DV-BE-A_2x17_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-117-02-xxx-DV-BE-A, 17 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +34 +34 +Connector_Samtec_HLE_SMD +Samtec_HLE-117-02-xxx-DV-BE-LC_2x17_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-117-02-xxx-DV-BE-LC, 17 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +34 +34 +Connector_Samtec_HLE_SMD +Samtec_HLE-117-02-xxx-DV-BE_2x17_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-117-02-xxx-DV-BE, 17 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +34 +34 +Connector_Samtec_HLE_SMD +Samtec_HLE-117-02-xxx-DV-LC_2x17_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-117-02-xxx-DV-LC, 17 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +34 +34 +Connector_Samtec_HLE_SMD +Samtec_HLE-117-02-xxx-DV_2x17_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-117-02-xxx-DV, 17 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +34 +34 +Connector_Samtec_HLE_SMD +Samtec_HLE-118-02-xxx-DV-A_2x18_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-118-02-xxx-DV-A, 18 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +36 +36 +Connector_Samtec_HLE_SMD +Samtec_HLE-118-02-xxx-DV-BE-A_2x18_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-118-02-xxx-DV-BE-A, 18 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +36 +36 +Connector_Samtec_HLE_SMD +Samtec_HLE-118-02-xxx-DV-BE-LC_2x18_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-118-02-xxx-DV-BE-LC, 18 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +36 +36 +Connector_Samtec_HLE_SMD +Samtec_HLE-118-02-xxx-DV-BE_2x18_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-118-02-xxx-DV-BE, 18 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +36 +36 +Connector_Samtec_HLE_SMD +Samtec_HLE-118-02-xxx-DV-LC_2x18_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-118-02-xxx-DV-LC, 18 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +36 +36 +Connector_Samtec_HLE_SMD +Samtec_HLE-118-02-xxx-DV_2x18_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-118-02-xxx-DV, 18 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +36 +36 +Connector_Samtec_HLE_SMD +Samtec_HLE-119-02-xxx-DV-A_2x19_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-119-02-xxx-DV-A, 19 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +38 +38 +Connector_Samtec_HLE_SMD +Samtec_HLE-119-02-xxx-DV-BE-A_2x19_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-119-02-xxx-DV-BE-A, 19 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +38 +38 +Connector_Samtec_HLE_SMD +Samtec_HLE-119-02-xxx-DV-BE-LC_2x19_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-119-02-xxx-DV-BE-LC, 19 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +38 +38 +Connector_Samtec_HLE_SMD +Samtec_HLE-119-02-xxx-DV-BE_2x19_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-119-02-xxx-DV-BE, 19 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +38 +38 +Connector_Samtec_HLE_SMD +Samtec_HLE-119-02-xxx-DV-LC_2x19_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-119-02-xxx-DV-LC, 19 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +38 +38 +Connector_Samtec_HLE_SMD +Samtec_HLE-119-02-xxx-DV_2x19_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-119-02-xxx-DV, 19 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +38 +38 +Connector_Samtec_HLE_SMD +Samtec_HLE-120-02-xxx-DV-A_2x20_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-120-02-xxx-DV-A, 20 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +40 +40 +Connector_Samtec_HLE_SMD +Samtec_HLE-120-02-xxx-DV-BE-A_2x20_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-120-02-xxx-DV-BE-A, 20 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +40 +40 +Connector_Samtec_HLE_SMD +Samtec_HLE-120-02-xxx-DV-BE-LC_2x20_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-120-02-xxx-DV-BE-LC, 20 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +40 +40 +Connector_Samtec_HLE_SMD +Samtec_HLE-120-02-xxx-DV-BE_2x20_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-120-02-xxx-DV-BE, 20 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +40 +40 +Connector_Samtec_HLE_SMD +Samtec_HLE-120-02-xxx-DV-LC_2x20_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-120-02-xxx-DV-LC, 20 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +40 +40 +Connector_Samtec_HLE_SMD +Samtec_HLE-120-02-xxx-DV_2x20_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-120-02-xxx-DV, 20 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +40 +40 +Connector_Samtec_HLE_SMD +Samtec_HLE-121-02-xxx-DV-A_2x21_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-121-02-xxx-DV-A, 21 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +42 +42 +Connector_Samtec_HLE_SMD +Samtec_HLE-121-02-xxx-DV-BE-A_2x21_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-121-02-xxx-DV-BE-A, 21 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +42 +42 +Connector_Samtec_HLE_SMD +Samtec_HLE-121-02-xxx-DV-BE-LC_2x21_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-121-02-xxx-DV-BE-LC, 21 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +42 +42 +Connector_Samtec_HLE_SMD +Samtec_HLE-121-02-xxx-DV-BE_2x21_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-121-02-xxx-DV-BE, 21 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +42 +42 +Connector_Samtec_HLE_SMD +Samtec_HLE-121-02-xxx-DV-LC_2x21_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-121-02-xxx-DV-LC, 21 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +42 +42 +Connector_Samtec_HLE_SMD +Samtec_HLE-121-02-xxx-DV_2x21_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-121-02-xxx-DV, 21 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +42 +42 +Connector_Samtec_HLE_SMD +Samtec_HLE-122-02-xxx-DV-A_2x22_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-122-02-xxx-DV-A, 22 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +44 +44 +Connector_Samtec_HLE_SMD +Samtec_HLE-122-02-xxx-DV-BE-A_2x22_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-122-02-xxx-DV-BE-A, 22 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +44 +44 +Connector_Samtec_HLE_SMD +Samtec_HLE-122-02-xxx-DV-BE-LC_2x22_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-122-02-xxx-DV-BE-LC, 22 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +44 +44 +Connector_Samtec_HLE_SMD +Samtec_HLE-122-02-xxx-DV-BE_2x22_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-122-02-xxx-DV-BE, 22 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +44 +44 +Connector_Samtec_HLE_SMD +Samtec_HLE-122-02-xxx-DV-LC_2x22_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-122-02-xxx-DV-LC, 22 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +44 +44 +Connector_Samtec_HLE_SMD +Samtec_HLE-122-02-xxx-DV_2x22_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-122-02-xxx-DV, 22 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +44 +44 +Connector_Samtec_HLE_SMD +Samtec_HLE-123-02-xxx-DV-A_2x23_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-123-02-xxx-DV-A, 23 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +46 +46 +Connector_Samtec_HLE_SMD +Samtec_HLE-123-02-xxx-DV-BE-A_2x23_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-123-02-xxx-DV-BE-A, 23 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +46 +46 +Connector_Samtec_HLE_SMD +Samtec_HLE-123-02-xxx-DV-BE-LC_2x23_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-123-02-xxx-DV-BE-LC, 23 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +46 +46 +Connector_Samtec_HLE_SMD +Samtec_HLE-123-02-xxx-DV-BE_2x23_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-123-02-xxx-DV-BE, 23 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +46 +46 +Connector_Samtec_HLE_SMD +Samtec_HLE-123-02-xxx-DV-LC_2x23_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-123-02-xxx-DV-LC, 23 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +46 +46 +Connector_Samtec_HLE_SMD +Samtec_HLE-123-02-xxx-DV_2x23_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-123-02-xxx-DV, 23 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +46 +46 +Connector_Samtec_HLE_SMD +Samtec_HLE-124-02-xxx-DV-A_2x24_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-124-02-xxx-DV-A, 24 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +48 +48 +Connector_Samtec_HLE_SMD +Samtec_HLE-124-02-xxx-DV-BE-A_2x24_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-124-02-xxx-DV-BE-A, 24 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +48 +48 +Connector_Samtec_HLE_SMD +Samtec_HLE-124-02-xxx-DV-BE-LC_2x24_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-124-02-xxx-DV-BE-LC, 24 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +48 +48 +Connector_Samtec_HLE_SMD +Samtec_HLE-124-02-xxx-DV-BE_2x24_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-124-02-xxx-DV-BE, 24 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +48 +48 +Connector_Samtec_HLE_SMD +Samtec_HLE-124-02-xxx-DV-LC_2x24_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-124-02-xxx-DV-LC, 24 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +48 +48 +Connector_Samtec_HLE_SMD +Samtec_HLE-124-02-xxx-DV_2x24_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-124-02-xxx-DV, 24 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +48 +48 +Connector_Samtec_HLE_SMD +Samtec_HLE-125-02-xxx-DV-A_2x25_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-125-02-xxx-DV-A, 25 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +50 +50 +Connector_Samtec_HLE_SMD +Samtec_HLE-125-02-xxx-DV-BE-A_2x25_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-125-02-xxx-DV-BE-A, 25 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +50 +50 +Connector_Samtec_HLE_SMD +Samtec_HLE-125-02-xxx-DV-BE-LC_2x25_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-125-02-xxx-DV-BE-LC, 25 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +50 +50 +Connector_Samtec_HLE_SMD +Samtec_HLE-125-02-xxx-DV-BE_2x25_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-125-02-xxx-DV-BE, 25 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +50 +50 +Connector_Samtec_HLE_SMD +Samtec_HLE-125-02-xxx-DV-LC_2x25_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-125-02-xxx-DV-LC, 25 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +50 +50 +Connector_Samtec_HLE_SMD +Samtec_HLE-125-02-xxx-DV_2x25_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-125-02-xxx-DV, 25 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +50 +50 +Connector_Samtec_HLE_SMD +Samtec_HLE-126-02-xxx-DV-A_2x26_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-126-02-xxx-DV-A, 26 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +52 +52 +Connector_Samtec_HLE_SMD +Samtec_HLE-126-02-xxx-DV-BE-A_2x26_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-126-02-xxx-DV-BE-A, 26 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +52 +52 +Connector_Samtec_HLE_SMD +Samtec_HLE-126-02-xxx-DV-BE-LC_2x26_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-126-02-xxx-DV-BE-LC, 26 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +52 +52 +Connector_Samtec_HLE_SMD +Samtec_HLE-126-02-xxx-DV-BE_2x26_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-126-02-xxx-DV-BE, 26 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +52 +52 +Connector_Samtec_HLE_SMD +Samtec_HLE-126-02-xxx-DV-LC_2x26_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-126-02-xxx-DV-LC, 26 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +52 +52 +Connector_Samtec_HLE_SMD +Samtec_HLE-126-02-xxx-DV_2x26_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-126-02-xxx-DV, 26 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +52 +52 +Connector_Samtec_HLE_SMD +Samtec_HLE-127-02-xxx-DV-A_2x27_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-127-02-xxx-DV-A, 27 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +54 +54 +Connector_Samtec_HLE_SMD +Samtec_HLE-127-02-xxx-DV-BE-A_2x27_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-127-02-xxx-DV-BE-A, 27 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +54 +54 +Connector_Samtec_HLE_SMD +Samtec_HLE-127-02-xxx-DV-BE-LC_2x27_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-127-02-xxx-DV-BE-LC, 27 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +54 +54 +Connector_Samtec_HLE_SMD +Samtec_HLE-127-02-xxx-DV-BE_2x27_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-127-02-xxx-DV-BE, 27 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +54 +54 +Connector_Samtec_HLE_SMD +Samtec_HLE-127-02-xxx-DV-LC_2x27_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-127-02-xxx-DV-LC, 27 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +54 +54 +Connector_Samtec_HLE_SMD +Samtec_HLE-127-02-xxx-DV_2x27_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-127-02-xxx-DV, 27 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +54 +54 +Connector_Samtec_HLE_SMD +Samtec_HLE-128-02-xxx-DV-A_2x28_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-128-02-xxx-DV-A, 28 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +56 +56 +Connector_Samtec_HLE_SMD +Samtec_HLE-128-02-xxx-DV-BE-A_2x28_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-128-02-xxx-DV-BE-A, 28 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +56 +56 +Connector_Samtec_HLE_SMD +Samtec_HLE-128-02-xxx-DV-BE-LC_2x28_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-128-02-xxx-DV-BE-LC, 28 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +56 +56 +Connector_Samtec_HLE_SMD +Samtec_HLE-128-02-xxx-DV-BE_2x28_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-128-02-xxx-DV-BE, 28 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +56 +56 +Connector_Samtec_HLE_SMD +Samtec_HLE-128-02-xxx-DV-LC_2x28_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-128-02-xxx-DV-LC, 28 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +56 +56 +Connector_Samtec_HLE_SMD +Samtec_HLE-128-02-xxx-DV_2x28_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-128-02-xxx-DV, 28 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +56 +56 +Connector_Samtec_HLE_SMD +Samtec_HLE-129-02-xxx-DV-A_2x29_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-129-02-xxx-DV-A, 29 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +58 +58 +Connector_Samtec_HLE_SMD +Samtec_HLE-129-02-xxx-DV-BE-A_2x29_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-129-02-xxx-DV-BE-A, 29 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +58 +58 +Connector_Samtec_HLE_SMD +Samtec_HLE-129-02-xxx-DV-BE-LC_2x29_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-129-02-xxx-DV-BE-LC, 29 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +58 +58 +Connector_Samtec_HLE_SMD +Samtec_HLE-129-02-xxx-DV-BE_2x29_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-129-02-xxx-DV-BE, 29 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +58 +58 +Connector_Samtec_HLE_SMD +Samtec_HLE-129-02-xxx-DV-LC_2x29_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-129-02-xxx-DV-LC, 29 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +58 +58 +Connector_Samtec_HLE_SMD +Samtec_HLE-129-02-xxx-DV_2x29_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-129-02-xxx-DV, 29 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +58 +58 +Connector_Samtec_HLE_SMD +Samtec_HLE-130-02-xxx-DV-A_2x30_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-130-02-xxx-DV-A, 30 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +60 +60 +Connector_Samtec_HLE_SMD +Samtec_HLE-130-02-xxx-DV-BE-A_2x30_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-130-02-xxx-DV-BE-A, 30 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +60 +60 +Connector_Samtec_HLE_SMD +Samtec_HLE-130-02-xxx-DV-BE-LC_2x30_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-130-02-xxx-DV-BE-LC, 30 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +60 +60 +Connector_Samtec_HLE_SMD +Samtec_HLE-130-02-xxx-DV-BE_2x30_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-130-02-xxx-DV-BE, 30 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +60 +60 +Connector_Samtec_HLE_SMD +Samtec_HLE-130-02-xxx-DV-LC_2x30_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-130-02-xxx-DV-LC, 30 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +60 +60 +Connector_Samtec_HLE_SMD +Samtec_HLE-130-02-xxx-DV_2x30_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-130-02-xxx-DV, 30 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +60 +60 +Connector_Samtec_HLE_SMD +Samtec_HLE-131-02-xxx-DV-A_2x31_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-131-02-xxx-DV-A, 31 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +62 +62 +Connector_Samtec_HLE_SMD +Samtec_HLE-131-02-xxx-DV-BE-A_2x31_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-131-02-xxx-DV-BE-A, 31 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +62 +62 +Connector_Samtec_HLE_SMD +Samtec_HLE-131-02-xxx-DV-BE-LC_2x31_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-131-02-xxx-DV-BE-LC, 31 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +62 +62 +Connector_Samtec_HLE_SMD +Samtec_HLE-131-02-xxx-DV-BE_2x31_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-131-02-xxx-DV-BE, 31 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +62 +62 +Connector_Samtec_HLE_SMD +Samtec_HLE-131-02-xxx-DV-LC_2x31_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-131-02-xxx-DV-LC, 31 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +62 +62 +Connector_Samtec_HLE_SMD +Samtec_HLE-131-02-xxx-DV_2x31_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-131-02-xxx-DV, 31 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +62 +62 +Connector_Samtec_HLE_SMD +Samtec_HLE-132-02-xxx-DV-A_2x32_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-132-02-xxx-DV-A, 32 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +64 +64 +Connector_Samtec_HLE_SMD +Samtec_HLE-132-02-xxx-DV-BE-A_2x32_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-132-02-xxx-DV-BE-A, 32 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +64 +64 +Connector_Samtec_HLE_SMD +Samtec_HLE-132-02-xxx-DV-BE-LC_2x32_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-132-02-xxx-DV-BE-LC, 32 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +64 +64 +Connector_Samtec_HLE_SMD +Samtec_HLE-132-02-xxx-DV-BE_2x32_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-132-02-xxx-DV-BE, 32 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +64 +64 +Connector_Samtec_HLE_SMD +Samtec_HLE-132-02-xxx-DV-LC_2x32_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-132-02-xxx-DV-LC, 32 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +64 +64 +Connector_Samtec_HLE_SMD +Samtec_HLE-132-02-xxx-DV_2x32_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-132-02-xxx-DV, 32 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +64 +64 +Connector_Samtec_HLE_SMD +Samtec_HLE-133-02-xxx-DV-A_2x33_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-133-02-xxx-DV-A, 33 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +66 +66 +Connector_Samtec_HLE_SMD +Samtec_HLE-133-02-xxx-DV-BE-A_2x33_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-133-02-xxx-DV-BE-A, 33 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +66 +66 +Connector_Samtec_HLE_SMD +Samtec_HLE-133-02-xxx-DV-BE-LC_2x33_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-133-02-xxx-DV-BE-LC, 33 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +66 +66 +Connector_Samtec_HLE_SMD +Samtec_HLE-133-02-xxx-DV-BE_2x33_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-133-02-xxx-DV-BE, 33 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +66 +66 +Connector_Samtec_HLE_SMD +Samtec_HLE-133-02-xxx-DV-LC_2x33_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-133-02-xxx-DV-LC, 33 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +66 +66 +Connector_Samtec_HLE_SMD +Samtec_HLE-133-02-xxx-DV_2x33_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-133-02-xxx-DV, 33 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +66 +66 +Connector_Samtec_HLE_SMD +Samtec_HLE-134-02-xxx-DV-A_2x34_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-134-02-xxx-DV-A, 34 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +68 +68 +Connector_Samtec_HLE_SMD +Samtec_HLE-134-02-xxx-DV-BE-A_2x34_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-134-02-xxx-DV-BE-A, 34 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +68 +68 +Connector_Samtec_HLE_SMD +Samtec_HLE-134-02-xxx-DV-BE-LC_2x34_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-134-02-xxx-DV-BE-LC, 34 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +68 +68 +Connector_Samtec_HLE_SMD +Samtec_HLE-134-02-xxx-DV-BE_2x34_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-134-02-xxx-DV-BE, 34 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +68 +68 +Connector_Samtec_HLE_SMD +Samtec_HLE-134-02-xxx-DV-LC_2x34_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-134-02-xxx-DV-LC, 34 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +68 +68 +Connector_Samtec_HLE_SMD +Samtec_HLE-134-02-xxx-DV_2x34_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-134-02-xxx-DV, 34 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +68 +68 +Connector_Samtec_HLE_SMD +Samtec_HLE-135-02-xxx-DV-A_2x35_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-135-02-xxx-DV-A, 35 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +70 +70 +Connector_Samtec_HLE_SMD +Samtec_HLE-135-02-xxx-DV-BE-A_2x35_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-135-02-xxx-DV-BE-A, 35 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +70 +70 +Connector_Samtec_HLE_SMD +Samtec_HLE-135-02-xxx-DV-BE-LC_2x35_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-135-02-xxx-DV-BE-LC, 35 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +70 +70 +Connector_Samtec_HLE_SMD +Samtec_HLE-135-02-xxx-DV-BE_2x35_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-135-02-xxx-DV-BE, 35 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +70 +70 +Connector_Samtec_HLE_SMD +Samtec_HLE-135-02-xxx-DV-LC_2x35_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-135-02-xxx-DV-LC, 35 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +70 +70 +Connector_Samtec_HLE_SMD +Samtec_HLE-135-02-xxx-DV_2x35_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-135-02-xxx-DV, 35 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +70 +70 +Connector_Samtec_HLE_SMD +Samtec_HLE-136-02-xxx-DV-A_2x36_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-136-02-xxx-DV-A, 36 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +72 +72 +Connector_Samtec_HLE_SMD +Samtec_HLE-136-02-xxx-DV-BE-A_2x36_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-136-02-xxx-DV-BE-A, 36 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +72 +72 +Connector_Samtec_HLE_SMD +Samtec_HLE-136-02-xxx-DV-BE-LC_2x36_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-136-02-xxx-DV-BE-LC, 36 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +72 +72 +Connector_Samtec_HLE_SMD +Samtec_HLE-136-02-xxx-DV-BE_2x36_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-136-02-xxx-DV-BE, 36 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +72 +72 +Connector_Samtec_HLE_SMD +Samtec_HLE-136-02-xxx-DV-LC_2x36_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-136-02-xxx-DV-LC, 36 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +72 +72 +Connector_Samtec_HLE_SMD +Samtec_HLE-136-02-xxx-DV_2x36_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-136-02-xxx-DV, 36 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +72 +72 +Connector_Samtec_HLE_SMD +Samtec_HLE-137-02-xxx-DV-A_2x37_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-137-02-xxx-DV-A, 37 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +74 +74 +Connector_Samtec_HLE_SMD +Samtec_HLE-137-02-xxx-DV-BE-A_2x37_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-137-02-xxx-DV-BE-A, 37 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +74 +74 +Connector_Samtec_HLE_SMD +Samtec_HLE-137-02-xxx-DV-BE-LC_2x37_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-137-02-xxx-DV-BE-LC, 37 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +74 +74 +Connector_Samtec_HLE_SMD +Samtec_HLE-137-02-xxx-DV-BE_2x37_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-137-02-xxx-DV-BE, 37 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +74 +74 +Connector_Samtec_HLE_SMD +Samtec_HLE-137-02-xxx-DV-LC_2x37_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-137-02-xxx-DV-LC, 37 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +74 +74 +Connector_Samtec_HLE_SMD +Samtec_HLE-137-02-xxx-DV_2x37_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-137-02-xxx-DV, 37 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +74 +74 +Connector_Samtec_HLE_SMD +Samtec_HLE-138-02-xxx-DV-A_2x38_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-138-02-xxx-DV-A, 38 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +76 +76 +Connector_Samtec_HLE_SMD +Samtec_HLE-138-02-xxx-DV-BE-A_2x38_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-138-02-xxx-DV-BE-A, 38 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +76 +76 +Connector_Samtec_HLE_SMD +Samtec_HLE-138-02-xxx-DV-BE-LC_2x38_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-138-02-xxx-DV-BE-LC, 38 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +76 +76 +Connector_Samtec_HLE_SMD +Samtec_HLE-138-02-xxx-DV-BE_2x38_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-138-02-xxx-DV-BE, 38 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +76 +76 +Connector_Samtec_HLE_SMD +Samtec_HLE-138-02-xxx-DV-LC_2x38_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-138-02-xxx-DV-LC, 38 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +76 +76 +Connector_Samtec_HLE_SMD +Samtec_HLE-138-02-xxx-DV_2x38_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-138-02-xxx-DV, 38 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +76 +76 +Connector_Samtec_HLE_SMD +Samtec_HLE-139-02-xxx-DV-A_2x39_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-139-02-xxx-DV-A, 39 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +78 +78 +Connector_Samtec_HLE_SMD +Samtec_HLE-139-02-xxx-DV-BE-A_2x39_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-139-02-xxx-DV-BE-A, 39 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +78 +78 +Connector_Samtec_HLE_SMD +Samtec_HLE-139-02-xxx-DV-BE-LC_2x39_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-139-02-xxx-DV-BE-LC, 39 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +78 +78 +Connector_Samtec_HLE_SMD +Samtec_HLE-139-02-xxx-DV-BE_2x39_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-139-02-xxx-DV-BE, 39 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +78 +78 +Connector_Samtec_HLE_SMD +Samtec_HLE-139-02-xxx-DV-LC_2x39_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-139-02-xxx-DV-LC, 39 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +78 +78 +Connector_Samtec_HLE_SMD +Samtec_HLE-139-02-xxx-DV_2x39_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-139-02-xxx-DV, 39 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +78 +78 +Connector_Samtec_HLE_SMD +Samtec_HLE-140-02-xxx-DV-A_2x40_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-140-02-xxx-DV-A, 40 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +80 +80 +Connector_Samtec_HLE_SMD +Samtec_HLE-140-02-xxx-DV-BE-A_2x40_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-140-02-xxx-DV-BE-A, 40 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +80 +80 +Connector_Samtec_HLE_SMD +Samtec_HLE-140-02-xxx-DV-BE-LC_2x40_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-140-02-xxx-DV-BE-LC, 40 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +80 +80 +Connector_Samtec_HLE_SMD +Samtec_HLE-140-02-xxx-DV-BE_2x40_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-140-02-xxx-DV-BE, 40 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +80 +80 +Connector_Samtec_HLE_SMD +Samtec_HLE-140-02-xxx-DV-LC_2x40_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-140-02-xxx-DV-LC, 40 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +80 +80 +Connector_Samtec_HLE_SMD +Samtec_HLE-140-02-xxx-DV_2x40_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-140-02-xxx-DV, 40 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +80 +80 +Connector_Samtec_HLE_SMD +Samtec_HLE-141-02-xxx-DV-A_2x41_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-141-02-xxx-DV-A, 41 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +82 +82 +Connector_Samtec_HLE_SMD +Samtec_HLE-141-02-xxx-DV-BE-A_2x41_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-141-02-xxx-DV-BE-A, 41 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +82 +82 +Connector_Samtec_HLE_SMD +Samtec_HLE-141-02-xxx-DV-BE-LC_2x41_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-141-02-xxx-DV-BE-LC, 41 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +82 +82 +Connector_Samtec_HLE_SMD +Samtec_HLE-141-02-xxx-DV-BE_2x41_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-141-02-xxx-DV-BE, 41 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +82 +82 +Connector_Samtec_HLE_SMD +Samtec_HLE-141-02-xxx-DV-LC_2x41_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-141-02-xxx-DV-LC, 41 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +82 +82 +Connector_Samtec_HLE_SMD +Samtec_HLE-141-02-xxx-DV_2x41_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-141-02-xxx-DV, 41 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +82 +82 +Connector_Samtec_HLE_SMD +Samtec_HLE-142-02-xxx-DV-A_2x42_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-142-02-xxx-DV-A, 42 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +84 +84 +Connector_Samtec_HLE_SMD +Samtec_HLE-142-02-xxx-DV-BE-A_2x42_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-142-02-xxx-DV-BE-A, 42 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +84 +84 +Connector_Samtec_HLE_SMD +Samtec_HLE-142-02-xxx-DV-BE-LC_2x42_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-142-02-xxx-DV-BE-LC, 42 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +84 +84 +Connector_Samtec_HLE_SMD +Samtec_HLE-142-02-xxx-DV-BE_2x42_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-142-02-xxx-DV-BE, 42 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +84 +84 +Connector_Samtec_HLE_SMD +Samtec_HLE-142-02-xxx-DV-LC_2x42_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-142-02-xxx-DV-LC, 42 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +84 +84 +Connector_Samtec_HLE_SMD +Samtec_HLE-142-02-xxx-DV_2x42_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-142-02-xxx-DV, 42 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +84 +84 +Connector_Samtec_HLE_SMD +Samtec_HLE-143-02-xxx-DV-A_2x43_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-143-02-xxx-DV-A, 43 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +86 +86 +Connector_Samtec_HLE_SMD +Samtec_HLE-143-02-xxx-DV-BE-A_2x43_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-143-02-xxx-DV-BE-A, 43 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +86 +86 +Connector_Samtec_HLE_SMD +Samtec_HLE-143-02-xxx-DV-BE-LC_2x43_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-143-02-xxx-DV-BE-LC, 43 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +86 +86 +Connector_Samtec_HLE_SMD +Samtec_HLE-143-02-xxx-DV-BE_2x43_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-143-02-xxx-DV-BE, 43 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +86 +86 +Connector_Samtec_HLE_SMD +Samtec_HLE-143-02-xxx-DV-LC_2x43_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-143-02-xxx-DV-LC, 43 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +86 +86 +Connector_Samtec_HLE_SMD +Samtec_HLE-143-02-xxx-DV_2x43_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-143-02-xxx-DV, 43 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +86 +86 +Connector_Samtec_HLE_SMD +Samtec_HLE-144-02-xxx-DV-A_2x44_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-144-02-xxx-DV-A, 44 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +88 +88 +Connector_Samtec_HLE_SMD +Samtec_HLE-144-02-xxx-DV-BE-A_2x44_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-144-02-xxx-DV-BE-A, 44 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +88 +88 +Connector_Samtec_HLE_SMD +Samtec_HLE-144-02-xxx-DV-BE-LC_2x44_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-144-02-xxx-DV-BE-LC, 44 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +88 +88 +Connector_Samtec_HLE_SMD +Samtec_HLE-144-02-xxx-DV-BE_2x44_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-144-02-xxx-DV-BE, 44 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +88 +88 +Connector_Samtec_HLE_SMD +Samtec_HLE-144-02-xxx-DV-LC_2x44_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-144-02-xxx-DV-LC, 44 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +88 +88 +Connector_Samtec_HLE_SMD +Samtec_HLE-144-02-xxx-DV_2x44_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-144-02-xxx-DV, 44 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +88 +88 +Connector_Samtec_HLE_SMD +Samtec_HLE-145-02-xxx-DV-A_2x45_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-145-02-xxx-DV-A, 45 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +90 +90 +Connector_Samtec_HLE_SMD +Samtec_HLE-145-02-xxx-DV-BE-A_2x45_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-145-02-xxx-DV-BE-A, 45 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +90 +90 +Connector_Samtec_HLE_SMD +Samtec_HLE-145-02-xxx-DV-BE-LC_2x45_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-145-02-xxx-DV-BE-LC, 45 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +90 +90 +Connector_Samtec_HLE_SMD +Samtec_HLE-145-02-xxx-DV-BE_2x45_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-145-02-xxx-DV-BE, 45 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +90 +90 +Connector_Samtec_HLE_SMD +Samtec_HLE-145-02-xxx-DV-LC_2x45_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-145-02-xxx-DV-LC, 45 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +90 +90 +Connector_Samtec_HLE_SMD +Samtec_HLE-145-02-xxx-DV_2x45_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-145-02-xxx-DV, 45 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +90 +90 +Connector_Samtec_HLE_SMD +Samtec_HLE-146-02-xxx-DV-A_2x46_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-146-02-xxx-DV-A, 46 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +92 +92 +Connector_Samtec_HLE_SMD +Samtec_HLE-146-02-xxx-DV-BE-A_2x46_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-146-02-xxx-DV-BE-A, 46 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +92 +92 +Connector_Samtec_HLE_SMD +Samtec_HLE-146-02-xxx-DV-BE-LC_2x46_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-146-02-xxx-DV-BE-LC, 46 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +92 +92 +Connector_Samtec_HLE_SMD +Samtec_HLE-146-02-xxx-DV-BE_2x46_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-146-02-xxx-DV-BE, 46 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +92 +92 +Connector_Samtec_HLE_SMD +Samtec_HLE-146-02-xxx-DV-LC_2x46_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-146-02-xxx-DV-LC, 46 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +92 +92 +Connector_Samtec_HLE_SMD +Samtec_HLE-146-02-xxx-DV_2x46_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-146-02-xxx-DV, 46 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +92 +92 +Connector_Samtec_HLE_SMD +Samtec_HLE-147-02-xxx-DV-A_2x47_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-147-02-xxx-DV-A, 47 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +94 +94 +Connector_Samtec_HLE_SMD +Samtec_HLE-147-02-xxx-DV-BE-A_2x47_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-147-02-xxx-DV-BE-A, 47 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +94 +94 +Connector_Samtec_HLE_SMD +Samtec_HLE-147-02-xxx-DV-BE-LC_2x47_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-147-02-xxx-DV-BE-LC, 47 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +94 +94 +Connector_Samtec_HLE_SMD +Samtec_HLE-147-02-xxx-DV-BE_2x47_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-147-02-xxx-DV-BE, 47 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +94 +94 +Connector_Samtec_HLE_SMD +Samtec_HLE-147-02-xxx-DV-LC_2x47_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-147-02-xxx-DV-LC, 47 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +94 +94 +Connector_Samtec_HLE_SMD +Samtec_HLE-147-02-xxx-DV_2x47_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-147-02-xxx-DV, 47 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +94 +94 +Connector_Samtec_HLE_SMD +Samtec_HLE-148-02-xxx-DV-A_2x48_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-148-02-xxx-DV-A, 48 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +96 +96 +Connector_Samtec_HLE_SMD +Samtec_HLE-148-02-xxx-DV-BE-A_2x48_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-148-02-xxx-DV-BE-A, 48 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +96 +96 +Connector_Samtec_HLE_SMD +Samtec_HLE-148-02-xxx-DV-BE-LC_2x48_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-148-02-xxx-DV-BE-LC, 48 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +96 +96 +Connector_Samtec_HLE_SMD +Samtec_HLE-148-02-xxx-DV-BE_2x48_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-148-02-xxx-DV-BE, 48 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +96 +96 +Connector_Samtec_HLE_SMD +Samtec_HLE-148-02-xxx-DV-LC_2x48_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-148-02-xxx-DV-LC, 48 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +96 +96 +Connector_Samtec_HLE_SMD +Samtec_HLE-148-02-xxx-DV_2x48_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-148-02-xxx-DV, 48 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +96 +96 +Connector_Samtec_HLE_SMD +Samtec_HLE-149-02-xxx-DV-A_2x49_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-149-02-xxx-DV-A, 49 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +98 +98 +Connector_Samtec_HLE_SMD +Samtec_HLE-149-02-xxx-DV-BE-A_2x49_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-149-02-xxx-DV-BE-A, 49 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +98 +98 +Connector_Samtec_HLE_SMD +Samtec_HLE-149-02-xxx-DV-BE-LC_2x49_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-149-02-xxx-DV-BE-LC, 49 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +98 +98 +Connector_Samtec_HLE_SMD +Samtec_HLE-149-02-xxx-DV-BE_2x49_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-149-02-xxx-DV-BE, 49 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +98 +98 +Connector_Samtec_HLE_SMD +Samtec_HLE-149-02-xxx-DV-LC_2x49_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-149-02-xxx-DV-LC, 49 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +98 +98 +Connector_Samtec_HLE_SMD +Samtec_HLE-149-02-xxx-DV_2x49_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-149-02-xxx-DV, 49 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +98 +98 +Connector_Samtec_HLE_SMD +Samtec_HLE-150-02-xxx-DV-A_2x50_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-150-02-xxx-DV-A, 50 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +100 +100 +Connector_Samtec_HLE_SMD +Samtec_HLE-150-02-xxx-DV-BE-A_2x50_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-150-02-xxx-DV-BE-A, 50 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +100 +100 +Connector_Samtec_HLE_SMD +Samtec_HLE-150-02-xxx-DV-BE-LC_2x50_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-150-02-xxx-DV-BE-LC, 50 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +100 +100 +Connector_Samtec_HLE_SMD +Samtec_HLE-150-02-xxx-DV-BE_2x50_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-150-02-xxx-DV-BE, 50 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +100 +100 +Connector_Samtec_HLE_SMD +Samtec_HLE-150-02-xxx-DV-LC_2x50_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-150-02-xxx-DV-LC, 50 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +100 +100 +Connector_Samtec_HLE_SMD +Samtec_HLE-150-02-xxx-DV_2x50_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-150-02-xxx-DV, 50 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xxx-dv-xx-xx-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-dv-footprint.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +100 +100 +Connector_Samtec_HLE_THT +Samtec_HLE-104-02-xx-DV-PE-LC_2x04_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-104-02-xx-DV-PE-LC, 4 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +8 +8 +Connector_Samtec_HLE_THT +Samtec_HLE-104-02-xx-DV-PE_2x04_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-104-02-xx-DV-PE (compatible alternatives: HLE-104-02-xx-DV-PE-BE), 4 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +8 +8 +Connector_Samtec_HLE_THT +Samtec_HLE-104-02-xx-DV-TE_2x04_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-104-02-xx-DV-TE, 4 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +8 +8 +Connector_Samtec_HLE_THT +Samtec_HLE-105-02-xx-DV-PE-LC_2x05_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-105-02-xx-DV-PE-LC, 5 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +10 +10 +Connector_Samtec_HLE_THT +Samtec_HLE-105-02-xx-DV-PE_2x05_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-105-02-xx-DV-PE (compatible alternatives: HLE-105-02-xx-DV-PE-BE), 5 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +10 +10 +Connector_Samtec_HLE_THT +Samtec_HLE-105-02-xx-DV-TE_2x05_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-105-02-xx-DV-TE, 5 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +10 +10 +Connector_Samtec_HLE_THT +Samtec_HLE-106-02-xx-DV-PE-LC_2x06_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-106-02-xx-DV-PE-LC, 6 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +12 +12 +Connector_Samtec_HLE_THT +Samtec_HLE-106-02-xx-DV-PE_2x06_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-106-02-xx-DV-PE (compatible alternatives: HLE-106-02-xx-DV-PE-BE), 6 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +12 +12 +Connector_Samtec_HLE_THT +Samtec_HLE-106-02-xx-DV-TE_2x06_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-106-02-xx-DV-TE, 6 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +12 +12 +Connector_Samtec_HLE_THT +Samtec_HLE-107-02-xx-DV-PE-LC_2x07_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-107-02-xx-DV-PE-LC, 7 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +14 +14 +Connector_Samtec_HLE_THT +Samtec_HLE-107-02-xx-DV-PE_2x07_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-107-02-xx-DV-PE (compatible alternatives: HLE-107-02-xx-DV-PE-BE), 7 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +14 +14 +Connector_Samtec_HLE_THT +Samtec_HLE-107-02-xx-DV-TE_2x07_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-107-02-xx-DV-TE, 7 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +14 +14 +Connector_Samtec_HLE_THT +Samtec_HLE-108-02-xx-DV-PE-LC_2x08_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-108-02-xx-DV-PE-LC, 8 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +16 +16 +Connector_Samtec_HLE_THT +Samtec_HLE-108-02-xx-DV-PE_2x08_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-108-02-xx-DV-PE (compatible alternatives: HLE-108-02-xx-DV-PE-BE), 8 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +16 +16 +Connector_Samtec_HLE_THT +Samtec_HLE-108-02-xx-DV-TE_2x08_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-108-02-xx-DV-TE, 8 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +16 +16 +Connector_Samtec_HLE_THT +Samtec_HLE-109-02-xx-DV-PE-LC_2x09_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-109-02-xx-DV-PE-LC, 9 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +18 +18 +Connector_Samtec_HLE_THT +Samtec_HLE-109-02-xx-DV-PE_2x09_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-109-02-xx-DV-PE (compatible alternatives: HLE-109-02-xx-DV-PE-BE), 9 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +18 +18 +Connector_Samtec_HLE_THT +Samtec_HLE-109-02-xx-DV-TE_2x09_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-109-02-xx-DV-TE, 9 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +18 +18 +Connector_Samtec_HLE_THT +Samtec_HLE-110-02-xx-DV-PE-LC_2x10_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-110-02-xx-DV-PE-LC, 10 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +20 +20 +Connector_Samtec_HLE_THT +Samtec_HLE-110-02-xx-DV-PE_2x10_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-110-02-xx-DV-PE (compatible alternatives: HLE-110-02-xx-DV-PE-BE), 10 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +20 +20 +Connector_Samtec_HLE_THT +Samtec_HLE-110-02-xx-DV-TE_2x10_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-110-02-xx-DV-TE, 10 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +20 +20 +Connector_Samtec_HLE_THT +Samtec_HLE-111-02-xx-DV-PE-LC_2x11_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-111-02-xx-DV-PE-LC, 11 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +22 +22 +Connector_Samtec_HLE_THT +Samtec_HLE-111-02-xx-DV-PE_2x11_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-111-02-xx-DV-PE (compatible alternatives: HLE-111-02-xx-DV-PE-BE), 11 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +22 +22 +Connector_Samtec_HLE_THT +Samtec_HLE-111-02-xx-DV-TE_2x11_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-111-02-xx-DV-TE, 11 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +22 +22 +Connector_Samtec_HLE_THT +Samtec_HLE-112-02-xx-DV-PE-LC_2x12_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-112-02-xx-DV-PE-LC, 12 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +24 +24 +Connector_Samtec_HLE_THT +Samtec_HLE-112-02-xx-DV-PE_2x12_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-112-02-xx-DV-PE (compatible alternatives: HLE-112-02-xx-DV-PE-BE), 12 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +24 +24 +Connector_Samtec_HLE_THT +Samtec_HLE-112-02-xx-DV-TE_2x12_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-112-02-xx-DV-TE, 12 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +24 +24 +Connector_Samtec_HLE_THT +Samtec_HLE-113-02-xx-DV-PE-LC_2x13_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-113-02-xx-DV-PE-LC, 13 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +26 +26 +Connector_Samtec_HLE_THT +Samtec_HLE-113-02-xx-DV-PE_2x13_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-113-02-xx-DV-PE (compatible alternatives: HLE-113-02-xx-DV-PE-BE), 13 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +26 +26 +Connector_Samtec_HLE_THT +Samtec_HLE-113-02-xx-DV-TE_2x13_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-113-02-xx-DV-TE, 13 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +26 +26 +Connector_Samtec_HLE_THT +Samtec_HLE-114-02-xx-DV-PE-LC_2x14_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-114-02-xx-DV-PE-LC, 14 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +28 +28 +Connector_Samtec_HLE_THT +Samtec_HLE-114-02-xx-DV-PE_2x14_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-114-02-xx-DV-PE (compatible alternatives: HLE-114-02-xx-DV-PE-BE), 14 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +28 +28 +Connector_Samtec_HLE_THT +Samtec_HLE-114-02-xx-DV-TE_2x14_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-114-02-xx-DV-TE, 14 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +28 +28 +Connector_Samtec_HLE_THT +Samtec_HLE-115-02-xx-DV-PE-LC_2x15_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-115-02-xx-DV-PE-LC, 15 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +30 +30 +Connector_Samtec_HLE_THT +Samtec_HLE-115-02-xx-DV-PE_2x15_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-115-02-xx-DV-PE (compatible alternatives: HLE-115-02-xx-DV-PE-BE), 15 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +30 +30 +Connector_Samtec_HLE_THT +Samtec_HLE-115-02-xx-DV-TE_2x15_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-115-02-xx-DV-TE, 15 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +30 +30 +Connector_Samtec_HLE_THT +Samtec_HLE-116-02-xx-DV-PE-LC_2x16_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-116-02-xx-DV-PE-LC, 16 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +32 +32 +Connector_Samtec_HLE_THT +Samtec_HLE-116-02-xx-DV-PE_2x16_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-116-02-xx-DV-PE (compatible alternatives: HLE-116-02-xx-DV-PE-BE), 16 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +32 +32 +Connector_Samtec_HLE_THT +Samtec_HLE-116-02-xx-DV-TE_2x16_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-116-02-xx-DV-TE, 16 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +32 +32 +Connector_Samtec_HLE_THT +Samtec_HLE-117-02-xx-DV-PE-LC_2x17_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-117-02-xx-DV-PE-LC, 17 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +34 +34 +Connector_Samtec_HLE_THT +Samtec_HLE-117-02-xx-DV-PE_2x17_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-117-02-xx-DV-PE (compatible alternatives: HLE-117-02-xx-DV-PE-BE), 17 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +34 +34 +Connector_Samtec_HLE_THT +Samtec_HLE-117-02-xx-DV-TE_2x17_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-117-02-xx-DV-TE, 17 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +34 +34 +Connector_Samtec_HLE_THT +Samtec_HLE-118-02-xx-DV-PE-LC_2x18_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-118-02-xx-DV-PE-LC, 18 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +36 +36 +Connector_Samtec_HLE_THT +Samtec_HLE-118-02-xx-DV-PE_2x18_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-118-02-xx-DV-PE (compatible alternatives: HLE-118-02-xx-DV-PE-BE), 18 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +36 +36 +Connector_Samtec_HLE_THT +Samtec_HLE-118-02-xx-DV-TE_2x18_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-118-02-xx-DV-TE, 18 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +36 +36 +Connector_Samtec_HLE_THT +Samtec_HLE-119-02-xx-DV-PE-LC_2x19_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-119-02-xx-DV-PE-LC, 19 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +38 +38 +Connector_Samtec_HLE_THT +Samtec_HLE-119-02-xx-DV-PE_2x19_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-119-02-xx-DV-PE (compatible alternatives: HLE-119-02-xx-DV-PE-BE), 19 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +38 +38 +Connector_Samtec_HLE_THT +Samtec_HLE-119-02-xx-DV-TE_2x19_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-119-02-xx-DV-TE, 19 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +38 +38 +Connector_Samtec_HLE_THT +Samtec_HLE-120-02-xx-DV-PE-LC_2x20_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-120-02-xx-DV-PE-LC, 20 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +40 +40 +Connector_Samtec_HLE_THT +Samtec_HLE-120-02-xx-DV-PE_2x20_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-120-02-xx-DV-PE (compatible alternatives: HLE-120-02-xx-DV-PE-BE), 20 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +40 +40 +Connector_Samtec_HLE_THT +Samtec_HLE-120-02-xx-DV-TE_2x20_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-120-02-xx-DV-TE, 20 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +40 +40 +Connector_Samtec_HLE_THT +Samtec_HLE-121-02-xx-DV-PE-LC_2x21_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-121-02-xx-DV-PE-LC, 21 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +42 +42 +Connector_Samtec_HLE_THT +Samtec_HLE-121-02-xx-DV-PE_2x21_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-121-02-xx-DV-PE (compatible alternatives: HLE-121-02-xx-DV-PE-BE), 21 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +42 +42 +Connector_Samtec_HLE_THT +Samtec_HLE-121-02-xx-DV-TE_2x21_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-121-02-xx-DV-TE, 21 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +42 +42 +Connector_Samtec_HLE_THT +Samtec_HLE-122-02-xx-DV-PE-LC_2x22_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-122-02-xx-DV-PE-LC, 22 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +44 +44 +Connector_Samtec_HLE_THT +Samtec_HLE-122-02-xx-DV-PE_2x22_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-122-02-xx-DV-PE (compatible alternatives: HLE-122-02-xx-DV-PE-BE), 22 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +44 +44 +Connector_Samtec_HLE_THT +Samtec_HLE-122-02-xx-DV-TE_2x22_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-122-02-xx-DV-TE, 22 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +44 +44 +Connector_Samtec_HLE_THT +Samtec_HLE-123-02-xx-DV-PE-LC_2x23_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-123-02-xx-DV-PE-LC, 23 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +46 +46 +Connector_Samtec_HLE_THT +Samtec_HLE-123-02-xx-DV-PE_2x23_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-123-02-xx-DV-PE (compatible alternatives: HLE-123-02-xx-DV-PE-BE), 23 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +46 +46 +Connector_Samtec_HLE_THT +Samtec_HLE-123-02-xx-DV-TE_2x23_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-123-02-xx-DV-TE, 23 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +46 +46 +Connector_Samtec_HLE_THT +Samtec_HLE-124-02-xx-DV-PE-LC_2x24_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-124-02-xx-DV-PE-LC, 24 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +48 +48 +Connector_Samtec_HLE_THT +Samtec_HLE-124-02-xx-DV-PE_2x24_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-124-02-xx-DV-PE (compatible alternatives: HLE-124-02-xx-DV-PE-BE), 24 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +48 +48 +Connector_Samtec_HLE_THT +Samtec_HLE-124-02-xx-DV-TE_2x24_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-124-02-xx-DV-TE, 24 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +48 +48 +Connector_Samtec_HLE_THT +Samtec_HLE-125-02-xx-DV-PE-LC_2x25_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-125-02-xx-DV-PE-LC, 25 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +50 +50 +Connector_Samtec_HLE_THT +Samtec_HLE-125-02-xx-DV-PE_2x25_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-125-02-xx-DV-PE (compatible alternatives: HLE-125-02-xx-DV-PE-BE), 25 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +50 +50 +Connector_Samtec_HLE_THT +Samtec_HLE-125-02-xx-DV-TE_2x25_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-125-02-xx-DV-TE, 25 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +50 +50 +Connector_Samtec_HLE_THT +Samtec_HLE-126-02-xx-DV-PE-LC_2x26_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-126-02-xx-DV-PE-LC, 26 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +52 +52 +Connector_Samtec_HLE_THT +Samtec_HLE-126-02-xx-DV-PE_2x26_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-126-02-xx-DV-PE (compatible alternatives: HLE-126-02-xx-DV-PE-BE), 26 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +52 +52 +Connector_Samtec_HLE_THT +Samtec_HLE-126-02-xx-DV-TE_2x26_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-126-02-xx-DV-TE, 26 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +52 +52 +Connector_Samtec_HLE_THT +Samtec_HLE-127-02-xx-DV-PE-LC_2x27_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-127-02-xx-DV-PE-LC, 27 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +54 +54 +Connector_Samtec_HLE_THT +Samtec_HLE-127-02-xx-DV-PE_2x27_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-127-02-xx-DV-PE (compatible alternatives: HLE-127-02-xx-DV-PE-BE), 27 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +54 +54 +Connector_Samtec_HLE_THT +Samtec_HLE-127-02-xx-DV-TE_2x27_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-127-02-xx-DV-TE, 27 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +54 +54 +Connector_Samtec_HLE_THT +Samtec_HLE-128-02-xx-DV-PE-LC_2x28_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-128-02-xx-DV-PE-LC, 28 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +56 +56 +Connector_Samtec_HLE_THT +Samtec_HLE-128-02-xx-DV-PE_2x28_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-128-02-xx-DV-PE (compatible alternatives: HLE-128-02-xx-DV-PE-BE), 28 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +56 +56 +Connector_Samtec_HLE_THT +Samtec_HLE-128-02-xx-DV-TE_2x28_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-128-02-xx-DV-TE, 28 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +56 +56 +Connector_Samtec_HLE_THT +Samtec_HLE-129-02-xx-DV-PE-LC_2x29_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-129-02-xx-DV-PE-LC, 29 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +58 +58 +Connector_Samtec_HLE_THT +Samtec_HLE-129-02-xx-DV-PE_2x29_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-129-02-xx-DV-PE (compatible alternatives: HLE-129-02-xx-DV-PE-BE), 29 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +58 +58 +Connector_Samtec_HLE_THT +Samtec_HLE-129-02-xx-DV-TE_2x29_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-129-02-xx-DV-TE, 29 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +58 +58 +Connector_Samtec_HLE_THT +Samtec_HLE-130-02-xx-DV-PE-LC_2x30_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-130-02-xx-DV-PE-LC, 30 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +60 +60 +Connector_Samtec_HLE_THT +Samtec_HLE-130-02-xx-DV-PE_2x30_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-130-02-xx-DV-PE (compatible alternatives: HLE-130-02-xx-DV-PE-BE), 30 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +60 +60 +Connector_Samtec_HLE_THT +Samtec_HLE-130-02-xx-DV-TE_2x30_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-130-02-xx-DV-TE, 30 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +60 +60 +Connector_Samtec_HLE_THT +Samtec_HLE-131-02-xx-DV-PE-LC_2x31_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-131-02-xx-DV-PE-LC, 31 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +62 +62 +Connector_Samtec_HLE_THT +Samtec_HLE-131-02-xx-DV-PE_2x31_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-131-02-xx-DV-PE (compatible alternatives: HLE-131-02-xx-DV-PE-BE), 31 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +62 +62 +Connector_Samtec_HLE_THT +Samtec_HLE-131-02-xx-DV-TE_2x31_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-131-02-xx-DV-TE, 31 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +62 +62 +Connector_Samtec_HLE_THT +Samtec_HLE-132-02-xx-DV-PE-LC_2x32_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-132-02-xx-DV-PE-LC, 32 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +64 +64 +Connector_Samtec_HLE_THT +Samtec_HLE-132-02-xx-DV-PE_2x32_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-132-02-xx-DV-PE (compatible alternatives: HLE-132-02-xx-DV-PE-BE), 32 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +64 +64 +Connector_Samtec_HLE_THT +Samtec_HLE-132-02-xx-DV-TE_2x32_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-132-02-xx-DV-TE, 32 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +64 +64 +Connector_Samtec_HLE_THT +Samtec_HLE-133-02-xx-DV-PE-LC_2x33_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-133-02-xx-DV-PE-LC, 33 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +66 +66 +Connector_Samtec_HLE_THT +Samtec_HLE-133-02-xx-DV-PE_2x33_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-133-02-xx-DV-PE (compatible alternatives: HLE-133-02-xx-DV-PE-BE), 33 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +66 +66 +Connector_Samtec_HLE_THT +Samtec_HLE-133-02-xx-DV-TE_2x33_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-133-02-xx-DV-TE, 33 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +66 +66 +Connector_Samtec_HLE_THT +Samtec_HLE-134-02-xx-DV-PE-LC_2x34_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-134-02-xx-DV-PE-LC, 34 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +68 +68 +Connector_Samtec_HLE_THT +Samtec_HLE-134-02-xx-DV-PE_2x34_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-134-02-xx-DV-PE (compatible alternatives: HLE-134-02-xx-DV-PE-BE), 34 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +68 +68 +Connector_Samtec_HLE_THT +Samtec_HLE-134-02-xx-DV-TE_2x34_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-134-02-xx-DV-TE, 34 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +68 +68 +Connector_Samtec_HLE_THT +Samtec_HLE-135-02-xx-DV-PE-LC_2x35_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-135-02-xx-DV-PE-LC, 35 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +70 +70 +Connector_Samtec_HLE_THT +Samtec_HLE-135-02-xx-DV-PE_2x35_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-135-02-xx-DV-PE (compatible alternatives: HLE-135-02-xx-DV-PE-BE), 35 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +70 +70 +Connector_Samtec_HLE_THT +Samtec_HLE-135-02-xx-DV-TE_2x35_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-135-02-xx-DV-TE, 35 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +70 +70 +Connector_Samtec_HLE_THT +Samtec_HLE-136-02-xx-DV-PE-LC_2x36_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-136-02-xx-DV-PE-LC, 36 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +72 +72 +Connector_Samtec_HLE_THT +Samtec_HLE-136-02-xx-DV-PE_2x36_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-136-02-xx-DV-PE (compatible alternatives: HLE-136-02-xx-DV-PE-BE), 36 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +72 +72 +Connector_Samtec_HLE_THT +Samtec_HLE-136-02-xx-DV-TE_2x36_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-136-02-xx-DV-TE, 36 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +72 +72 +Connector_Samtec_HLE_THT +Samtec_HLE-137-02-xx-DV-PE-LC_2x37_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-137-02-xx-DV-PE-LC, 37 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +74 +74 +Connector_Samtec_HLE_THT +Samtec_HLE-137-02-xx-DV-PE_2x37_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-137-02-xx-DV-PE (compatible alternatives: HLE-137-02-xx-DV-PE-BE), 37 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +74 +74 +Connector_Samtec_HLE_THT +Samtec_HLE-137-02-xx-DV-TE_2x37_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-137-02-xx-DV-TE, 37 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +74 +74 +Connector_Samtec_HLE_THT +Samtec_HLE-138-02-xx-DV-PE-LC_2x38_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-138-02-xx-DV-PE-LC, 38 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +76 +76 +Connector_Samtec_HLE_THT +Samtec_HLE-138-02-xx-DV-PE_2x38_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-138-02-xx-DV-PE (compatible alternatives: HLE-138-02-xx-DV-PE-BE), 38 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +76 +76 +Connector_Samtec_HLE_THT +Samtec_HLE-138-02-xx-DV-TE_2x38_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-138-02-xx-DV-TE, 38 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +76 +76 +Connector_Samtec_HLE_THT +Samtec_HLE-139-02-xx-DV-PE-LC_2x39_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-139-02-xx-DV-PE-LC, 39 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +78 +78 +Connector_Samtec_HLE_THT +Samtec_HLE-139-02-xx-DV-PE_2x39_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-139-02-xx-DV-PE (compatible alternatives: HLE-139-02-xx-DV-PE-BE), 39 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +78 +78 +Connector_Samtec_HLE_THT +Samtec_HLE-139-02-xx-DV-TE_2x39_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-139-02-xx-DV-TE, 39 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +78 +78 +Connector_Samtec_HLE_THT +Samtec_HLE-140-02-xx-DV-PE-LC_2x40_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-140-02-xx-DV-PE-LC, 40 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +80 +80 +Connector_Samtec_HLE_THT +Samtec_HLE-140-02-xx-DV-PE_2x40_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-140-02-xx-DV-PE (compatible alternatives: HLE-140-02-xx-DV-PE-BE), 40 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +80 +80 +Connector_Samtec_HLE_THT +Samtec_HLE-140-02-xx-DV-TE_2x40_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-140-02-xx-DV-TE, 40 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +80 +80 +Connector_Samtec_HLE_THT +Samtec_HLE-141-02-xx-DV-PE-LC_2x41_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-141-02-xx-DV-PE-LC, 41 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +82 +82 +Connector_Samtec_HLE_THT +Samtec_HLE-141-02-xx-DV-PE_2x41_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-141-02-xx-DV-PE (compatible alternatives: HLE-141-02-xx-DV-PE-BE), 41 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +82 +82 +Connector_Samtec_HLE_THT +Samtec_HLE-141-02-xx-DV-TE_2x41_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-141-02-xx-DV-TE, 41 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +82 +82 +Connector_Samtec_HLE_THT +Samtec_HLE-142-02-xx-DV-PE-LC_2x42_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-142-02-xx-DV-PE-LC, 42 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +84 +84 +Connector_Samtec_HLE_THT +Samtec_HLE-142-02-xx-DV-PE_2x42_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-142-02-xx-DV-PE (compatible alternatives: HLE-142-02-xx-DV-PE-BE), 42 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +84 +84 +Connector_Samtec_HLE_THT +Samtec_HLE-142-02-xx-DV-TE_2x42_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-142-02-xx-DV-TE, 42 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +84 +84 +Connector_Samtec_HLE_THT +Samtec_HLE-143-02-xx-DV-PE-LC_2x43_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-143-02-xx-DV-PE-LC, 43 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +86 +86 +Connector_Samtec_HLE_THT +Samtec_HLE-143-02-xx-DV-PE_2x43_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-143-02-xx-DV-PE (compatible alternatives: HLE-143-02-xx-DV-PE-BE), 43 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +86 +86 +Connector_Samtec_HLE_THT +Samtec_HLE-143-02-xx-DV-TE_2x43_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-143-02-xx-DV-TE, 43 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +86 +86 +Connector_Samtec_HLE_THT +Samtec_HLE-144-02-xx-DV-PE-LC_2x44_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-144-02-xx-DV-PE-LC, 44 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +88 +88 +Connector_Samtec_HLE_THT +Samtec_HLE-144-02-xx-DV-PE_2x44_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-144-02-xx-DV-PE (compatible alternatives: HLE-144-02-xx-DV-PE-BE), 44 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +88 +88 +Connector_Samtec_HLE_THT +Samtec_HLE-144-02-xx-DV-TE_2x44_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-144-02-xx-DV-TE, 44 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +88 +88 +Connector_Samtec_HLE_THT +Samtec_HLE-145-02-xx-DV-PE-LC_2x45_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-145-02-xx-DV-PE-LC, 45 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +90 +90 +Connector_Samtec_HLE_THT +Samtec_HLE-145-02-xx-DV-PE_2x45_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-145-02-xx-DV-PE (compatible alternatives: HLE-145-02-xx-DV-PE-BE), 45 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +90 +90 +Connector_Samtec_HLE_THT +Samtec_HLE-145-02-xx-DV-TE_2x45_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-145-02-xx-DV-TE, 45 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +90 +90 +Connector_Samtec_HLE_THT +Samtec_HLE-146-02-xx-DV-PE-LC_2x46_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-146-02-xx-DV-PE-LC, 46 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +92 +92 +Connector_Samtec_HLE_THT +Samtec_HLE-146-02-xx-DV-PE_2x46_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-146-02-xx-DV-PE (compatible alternatives: HLE-146-02-xx-DV-PE-BE), 46 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +92 +92 +Connector_Samtec_HLE_THT +Samtec_HLE-146-02-xx-DV-TE_2x46_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-146-02-xx-DV-TE, 46 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +92 +92 +Connector_Samtec_HLE_THT +Samtec_HLE-147-02-xx-DV-PE-LC_2x47_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-147-02-xx-DV-PE-LC, 47 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +94 +94 +Connector_Samtec_HLE_THT +Samtec_HLE-147-02-xx-DV-PE_2x47_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-147-02-xx-DV-PE (compatible alternatives: HLE-147-02-xx-DV-PE-BE), 47 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +94 +94 +Connector_Samtec_HLE_THT +Samtec_HLE-147-02-xx-DV-TE_2x47_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-147-02-xx-DV-TE, 47 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +94 +94 +Connector_Samtec_HLE_THT +Samtec_HLE-148-02-xx-DV-PE-LC_2x48_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-148-02-xx-DV-PE-LC, 48 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +96 +96 +Connector_Samtec_HLE_THT +Samtec_HLE-148-02-xx-DV-PE_2x48_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-148-02-xx-DV-PE (compatible alternatives: HLE-148-02-xx-DV-PE-BE), 48 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +96 +96 +Connector_Samtec_HLE_THT +Samtec_HLE-148-02-xx-DV-TE_2x48_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-148-02-xx-DV-TE, 48 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +96 +96 +Connector_Samtec_HLE_THT +Samtec_HLE-149-02-xx-DV-PE-LC_2x49_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-149-02-xx-DV-PE-LC, 49 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +98 +98 +Connector_Samtec_HLE_THT +Samtec_HLE-149-02-xx-DV-PE_2x49_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-149-02-xx-DV-PE (compatible alternatives: HLE-149-02-xx-DV-PE-BE), 49 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +98 +98 +Connector_Samtec_HLE_THT +Samtec_HLE-149-02-xx-DV-TE_2x49_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-149-02-xx-DV-TE, 49 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +98 +98 +Connector_Samtec_HLE_THT +Samtec_HLE-150-02-xx-DV-PE-LC_2x50_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-150-02-xx-DV-PE-LC, 50 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +100 +100 +Connector_Samtec_HLE_THT +Samtec_HLE-150-02-xx-DV-PE_2x50_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-150-02-xx-DV-PE (compatible alternatives: HLE-150-02-xx-DV-PE-BE), 50 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +100 +100 +Connector_Samtec_HLE_THT +Samtec_HLE-150-02-xx-DV-TE_2x50_P2.54mm_Horizontal +Samtec HLE .100" Tiger Beam Cost-effective Single Beam Socket Strip, HLE-150-02-xx-DV-TE, 50 Pins per row (http://suddendocs.samtec.com/prints/hle-1xx-02-xx-dv-xe-xx-mkt.pdf, http://suddendocs.samtec.com/prints/hle-thru.pdf), generated with kicad-footprint-generator +connector Samtec HLE top entry +0 +100 +100 +Connector_Stocko +Stocko_MKS_1651-6-0-202_1x2_P2.50mm_Vertical +Stocko MKS 16xx series connector, (https://www.stocko-contact.com/downloads/steckverbindersystem-raster-2,5-mm.pdf#page=15), generated with kicad-footprint-generator +Stocko RFK MKS 16xx +0 +2 +2 +Connector_Stocko +Stocko_MKS_1652-6-0-202_1x2_P2.50mm_Vertical +Stocko MKS 16xx series connector, (https://www.stocko-contact.com/downloads/steckverbindersystem-raster-2,5-mm.pdf#page=15), generated with kicad-footprint-generator +Stocko RFK MKS 16xx +0 +2 +2 +Connector_Stocko +Stocko_MKS_1653-6-0-303_1x3_P2.50mm_Vertical +Stocko MKS 16xx series connector, (https://www.stocko-contact.com/downloads/steckverbindersystem-raster-2,5-mm.pdf#page=15), generated with kicad-footprint-generator +Stocko RFK MKS 16xx +0 +3 +3 +Connector_Stocko +Stocko_MKS_1654-6-0-404_1x4_P2.50mm_Vertical +Stocko MKS 16xx series connector, (https://www.stocko-contact.com/downloads/steckverbindersystem-raster-2,5-mm.pdf#page=15), generated with kicad-footprint-generator +Stocko RFK MKS 16xx +0 +4 +4 +Connector_Stocko +Stocko_MKS_1655-6-0-505_1x5_P2.50mm_Vertical +Stocko MKS 16xx series connector, (https://www.stocko-contact.com/downloads/steckverbindersystem-raster-2,5-mm.pdf#page=15), generated with kicad-footprint-generator +Stocko RFK MKS 16xx +0 +5 +5 +Connector_Stocko +Stocko_MKS_1656-6-0-606_1x6_P2.50mm_Vertical +Stocko MKS 16xx series connector, (https://www.stocko-contact.com/downloads/steckverbindersystem-raster-2,5-mm.pdf#page=15), generated with kicad-footprint-generator +Stocko RFK MKS 16xx +0 +6 +6 +Connector_Stocko +Stocko_MKS_1657-6-0-707_1x7_P2.50mm_Vertical +Stocko MKS 16xx series connector, (https://www.stocko-contact.com/downloads/steckverbindersystem-raster-2,5-mm.pdf#page=15), generated with kicad-footprint-generator +Stocko RFK MKS 16xx +0 +7 +7 +Connector_Stocko +Stocko_MKS_1658-6-0-808_1x8_P2.50mm_Vertical +Stocko MKS 16xx series connector, (https://www.stocko-contact.com/downloads/steckverbindersystem-raster-2,5-mm.pdf#page=15), generated with kicad-footprint-generator +Stocko RFK MKS 16xx +0 +8 +8 +Connector_Stocko +Stocko_MKS_1659-6-0-909_1x9_P2.50mm_Vertical +Stocko MKS 16xx series connector, (https://www.stocko-contact.com/downloads/steckverbindersystem-raster-2,5-mm.pdf#page=15), generated with kicad-footprint-generator +Stocko RFK MKS 16xx +0 +9 +9 +Connector_Stocko +Stocko_MKS_1660-6-0-1010_1x10_P2.50mm_Vertical +Stocko MKS 16xx series connector, (https://www.stocko-contact.com/downloads/steckverbindersystem-raster-2,5-mm.pdf#page=15), generated with kicad-footprint-generator +Stocko RFK MKS 16xx +0 +10 +10 +Connector_Stocko +Stocko_MKS_1661-6-0-1111_1x11_P2.50mm_Vertical +Stocko MKS 16xx series connector, (https://www.stocko-contact.com/downloads/steckverbindersystem-raster-2,5-mm.pdf#page=15), generated with kicad-footprint-generator +Stocko RFK MKS 16xx +0 +11 +11 +Connector_Stocko +Stocko_MKS_1662-6-0-1212_1x12_P2.50mm_Vertical +Stocko MKS 16xx series connector, (https://www.stocko-contact.com/downloads/steckverbindersystem-raster-2,5-mm.pdf#page=15), generated with kicad-footprint-generator +Stocko RFK MKS 16xx +0 +12 +12 +Connector_Stocko +Stocko_MKS_1663-6-0-1313_1x13_P2.50mm_Vertical +Stocko MKS 16xx series connector, (https://www.stocko-contact.com/downloads/steckverbindersystem-raster-2,5-mm.pdf#page=15), generated with kicad-footprint-generator +Stocko RFK MKS 16xx +0 +13 +13 +Connector_Stocko +Stocko_MKS_1664-6-0-1414_1x14_P2.50mm_Vertical +Stocko MKS 16xx series connector, (https://www.stocko-contact.com/downloads/steckverbindersystem-raster-2,5-mm.pdf#page=15), generated with kicad-footprint-generator +Stocko RFK MKS 16xx +0 +14 +14 +Connector_Stocko +Stocko_MKS_1665-6-0-1515_1x15_P2.50mm_Vertical +Stocko MKS 16xx series connector, (https://www.stocko-contact.com/downloads/steckverbindersystem-raster-2,5-mm.pdf#page=15), generated with kicad-footprint-generator +Stocko RFK MKS 16xx +0 +15 +15 +Connector_Stocko +Stocko_MKS_1666-6-0-1616_1x16_P2.50mm_Vertical +Stocko MKS 16xx series connector, (https://www.stocko-contact.com/downloads/steckverbindersystem-raster-2,5-mm.pdf#page=15), generated with kicad-footprint-generator +Stocko RFK MKS 16xx +0 +16 +16 +Connector_Stocko +Stocko_MKS_1667-6-0-1717_1x17_P2.50mm_Vertical +Stocko MKS 16xx series connector, (https://www.stocko-contact.com/downloads/steckverbindersystem-raster-2,5-mm.pdf#page=15), generated with kicad-footprint-generator +Stocko RFK MKS 16xx +0 +17 +17 +Connector_Stocko +Stocko_MKS_1668-6-0-1818_1x18_P2.50mm_Vertical +Stocko MKS 16xx series connector, (https://www.stocko-contact.com/downloads/steckverbindersystem-raster-2,5-mm.pdf#page=15), generated with kicad-footprint-generator +Stocko RFK MKS 16xx +0 +18 +18 +Connector_Stocko +Stocko_MKS_1669-6-0-1919_1x19_P2.50mm_Vertical +Stocko MKS 16xx series connector, (https://www.stocko-contact.com/downloads/steckverbindersystem-raster-2,5-mm.pdf#page=15), generated with kicad-footprint-generator +Stocko RFK MKS 16xx +0 +19 +19 +Connector_Stocko +Stocko_MKS_1670-6-0-2020_1x20_P2.50mm_Vertical +Stocko MKS 16xx series connector, (https://www.stocko-contact.com/downloads/steckverbindersystem-raster-2,5-mm.pdf#page=15), generated with kicad-footprint-generator +Stocko RFK MKS 16xx +0 +20 +20 +Connector_TE-Connectivity +TE_1-826576-3_1x13_P3.96mm_Vertical +TE, 1-826576-3, 13 Pins (https://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=826576&DocType=Customer+Drawing&DocLang=English), generated with kicad-footprint-generator +connector TE 826576 vertical +0 +13 +13 +Connector_TE-Connectivity +TE_1-826576-5_1x15_P3.96mm_Vertical +TE, 1-826576-5, 15 Pins (https://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=826576&DocType=Customer+Drawing&DocLang=English), generated with kicad-footprint-generator +connector TE 826576 vertical +0 +15 +15 +Connector_TE-Connectivity +TE_1-826576-6_1x16_P3.96mm_Vertical +TE, 1-826576-6, 16 Pins (https://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=826576&DocType=Customer+Drawing&DocLang=English), generated with kicad-footprint-generator +connector TE 826576 vertical +0 +16 +16 +Connector_TE-Connectivity +TE_1-826576-7_1x17_P3.96mm_Vertical +TE, 1-826576-7, 17 Pins (https://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=826576&DocType=Customer+Drawing&DocLang=English), generated with kicad-footprint-generator +connector TE 826576 vertical +0 +17 +17 +Connector_TE-Connectivity +TE_1-826576-8_1x18_P3.96mm_Vertical +TE, 1-826576-8, 18 Pins (https://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=826576&DocType=Customer+Drawing&DocLang=English), generated with kicad-footprint-generator +connector TE 826576 vertical +0 +18 +18 +Connector_TE-Connectivity +TE_2-826576-0_1x20_P3.96mm_Vertical +TE, 2-826576-0, 20 Pins (https://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=826576&DocType=Customer+Drawing&DocLang=English), generated with kicad-footprint-generator +connector TE 826576 vertical +0 +20 +20 +Connector_TE-Connectivity +TE_3-826576-6_1x36_P3.96mm_Vertical +TE, 3-826576-6, 36 Pins (https://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=826576&DocType=Customer+Drawing&DocLang=English), generated with kicad-footprint-generator +connector TE 826576 vertical +0 +36 +36 +Connector_TE-Connectivity +TE_826576-2_1x02_P3.96mm_Vertical +TE, 826576-2, 2 Pins (https://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=826576&DocType=Customer+Drawing&DocLang=English), generated with kicad-footprint-generator +connector TE 826576 vertical +0 +2 +2 +Connector_TE-Connectivity +TE_826576-3_1x03_P3.96mm_Vertical +TE, 826576-3, 3 Pins (https://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=826576&DocType=Customer+Drawing&DocLang=English), generated with kicad-footprint-generator +connector TE 826576 vertical +0 +3 +3 +Connector_TE-Connectivity +TE_826576-5_1x05_P3.96mm_Vertical +TE, 826576-5, 5 Pins (https://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=826576&DocType=Customer+Drawing&DocLang=English), generated with kicad-footprint-generator +connector TE 826576 vertical +0 +5 +5 +Connector_TE-Connectivity +TE_826576-6_1x06_P3.96mm_Vertical +TE, 826576-6, 6 Pins (https://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=826576&DocType=Customer+Drawing&DocLang=English), generated with kicad-footprint-generator +connector TE 826576 vertical +0 +6 +6 +Connector_TE-Connectivity +TE_826576-7_1x07_P3.96mm_Vertical +TE, 826576-7, 7 Pins (https://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=826576&DocType=Customer+Drawing&DocLang=English), generated with kicad-footprint-generator +connector TE 826576 vertical +0 +7 +7 +Connector_TE-Connectivity +TE_826576-8_1x08_P3.96mm_Vertical +TE, 826576-8, 8 Pins (https://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=826576&DocType=Customer+Drawing&DocLang=English), generated with kicad-footprint-generator +connector TE 826576 vertical +0 +8 +8 +Connector_TE-Connectivity +TE_826576-9_1x09_P3.96mm_Vertical +TE, 826576-9, 9 Pins (https://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=826576&DocType=Customer+Drawing&DocLang=English), generated with kicad-footprint-generator +connector TE 826576 vertical +0 +9 +9 +Connector_TE-Connectivity +TE_5767171-1_2x19_P0.635mm_Vertical +PCB Mount Receptacle, Vertical, Board-to-Board, 38 Position, 24.003mm / .64mm [.945in] Centerline, Header Only, Palladium Nickel (https://www.te.com/commerce/DocumentDelivery/DDEController?Action=showdoc&DocId=Customer+Drawing%7F5767171%7FB2%7Fpdf%7FEnglish%7FENG_CD_5767171_B2.pdf%7F5767171-1#page=2) +mictor38 receptacle board-to-board +0 +43 +39 +Connector_TE-Connectivity +TE_AMPSEAL_1-776087-x_3Rows_23_P0.4mm_Horizontal +Connector +TE 776087 +0 +23 +23 +Connector_TE-Connectivity +TE_MATE-N-LOK_1-770182-x_3x03_P4.14mm_Vertical +Molex Mini-Universal MATE-N-LOK, old mpn/engineering number: 1-770182-x, 3 Pins per row (http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=82181_SOFTSHELL_HIGH_DENSITY&DocType=CS&DocLang=EN), generated with kicad-footprint-generator +connector TE MATE-N-LOK side entry +0 +9 +9 +Connector_TE-Connectivity +TE_MATE-N-LOK_1-770186-x_3x04_P4.14mm_Vertical +Molex Mini-Universal MATE-N-LOK, old mpn/engineering number: 1-770186-x, 4 Pins per row (http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=82181_SOFTSHELL_HIGH_DENSITY&DocType=CS&DocLang=EN), generated with kicad-footprint-generator +connector TE MATE-N-LOK side entry +0 +12 +12 +Connector_TE-Connectivity +TE_MATE-N-LOK_1-770190-x_3x05_P4.14mm_Vertical +Molex Mini-Universal MATE-N-LOK, old mpn/engineering number: 1-770190-x, 5 Pins per row (http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=82181_SOFTSHELL_HIGH_DENSITY&DocType=CS&DocLang=EN), generated with kicad-footprint-generator +connector TE MATE-N-LOK side entry +0 +15 +15 +Connector_TE-Connectivity +TE_MATE-N-LOK_1-770621-x_2x06_P4.14mm_Vertical +Molex Mini-Universal MATE-N-LOK, old mpn/engineering number: 1-770621-x, 6 Pins per row (http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=82181_SOFTSHELL_HIGH_DENSITY&DocType=CS&DocLang=EN), generated with kicad-footprint-generator +connector TE MATE-N-LOK side entry +0 +12 +12 +Connector_TE-Connectivity +TE_MATE-N-LOK_1-770858-x_2x05_P4.14mm_Vertical +Molex Mini-Universal MATE-N-LOK, old mpn/engineering number: 1-770858-x, 5 Pins per row (http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=82181_SOFTSHELL_HIGH_DENSITY&DocType=CS&DocLang=EN), generated with kicad-footprint-generator +connector TE MATE-N-LOK side entry +0 +10 +10 +Connector_TE-Connectivity +TE_MATE-N-LOK_1-770866-x_1x02_P4.14mm_Vertical +Molex Mini-Universal MATE-N-LOK, old mpn/engineering number: 1-770866-x, 2 Pins per row (http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=82181_SOFTSHELL_HIGH_DENSITY&DocType=CS&DocLang=EN), generated with kicad-footprint-generator +connector TE MATE-N-LOK side entry +0 +2 +2 +Connector_TE-Connectivity +TE_MATE-N-LOK_1-770870-x_1x03_P4.14mm_Vertical +Molex Mini-Universal MATE-N-LOK, old mpn/engineering number: 1-770870-x, 3 Pins per row (http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=82181_SOFTSHELL_HIGH_DENSITY&DocType=CS&DocLang=EN), generated with kicad-footprint-generator +connector TE MATE-N-LOK side entry +0 +3 +3 +Connector_TE-Connectivity +TE_MATE-N-LOK_1-770874-x_2x02_P4.14mm_Vertical +Molex Mini-Universal MATE-N-LOK, old mpn/engineering number: 1-770874-x, 2 Pins per row (http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=82181_SOFTSHELL_HIGH_DENSITY&DocType=CS&DocLang=EN), generated with kicad-footprint-generator +connector TE MATE-N-LOK side entry +0 +4 +4 +Connector_TE-Connectivity +TE_MATE-N-LOK_1-770875-x_2x03_P4.14mm_Vertical +Molex Mini-Universal MATE-N-LOK, old mpn/engineering number: 1-770875-x, 3 Pins per row (http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=82181_SOFTSHELL_HIGH_DENSITY&DocType=CS&DocLang=EN), generated with kicad-footprint-generator +connector TE MATE-N-LOK side entry +0 +6 +6 +Connector_TE-Connectivity +TE_MATE-N-LOK_1-770966-x_1x02_P4.14mm_Horizontal +Molex Mini-Universal MATE-N-LOK, old mpn/engineering number: 1-770966-x, 2 Pins per row (http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=82181_SOFTSHELL_HIGH_DENSITY&DocType=CS&DocLang=EN), generated with kicad-footprint-generator +connector TE MATE-N-LOK top entry +0 +2 +2 +Connector_TE-Connectivity +TE_MATE-N-LOK_1-770967-x_1x03_P4.14mm_Horizontal +Molex Mini-Universal MATE-N-LOK, old mpn/engineering number: 1-770967-x, 3 Pins per row (http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=82181_SOFTSHELL_HIGH_DENSITY&DocType=CS&DocLang=EN), generated with kicad-footprint-generator +connector TE MATE-N-LOK top entry +0 +3 +3 +Connector_TE-Connectivity +TE_MATE-N-LOK_1-770968-x_2x02_P4.14mm_Horizontal +Molex Mini-Universal MATE-N-LOK, old mpn/engineering number: 1-770968-x, 2 Pins per row (http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=82181_SOFTSHELL_HIGH_DENSITY&DocType=CS&DocLang=EN), generated with kicad-footprint-generator +connector TE MATE-N-LOK top entry +0 +4 +4 +Connector_TE-Connectivity +TE_MATE-N-LOK_1-770969-x_2x03_P4.14mm_Horizontal +Molex Mini-Universal MATE-N-LOK, old mpn/engineering number: 1-770969-x, 3 Pins per row (http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=82181_SOFTSHELL_HIGH_DENSITY&DocType=CS&DocLang=EN), generated with kicad-footprint-generator +connector TE MATE-N-LOK top entry +0 +6 +6 +Connector_TE-Connectivity +TE_MATE-N-LOK_1-770970-x_2x04_P4.14mm_Horizontal +Molex Mini-Universal MATE-N-LOK, old mpn/engineering number: 1-770970-x, 4 Pins per row (http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=82181_SOFTSHELL_HIGH_DENSITY&DocType=CS&DocLang=EN), generated with kicad-footprint-generator +connector TE MATE-N-LOK top entry +0 +8 +8 +Connector_TE-Connectivity +TE_MATE-N-LOK_1-770971-x_2x05_P4.14mm_Horizontal +Molex Mini-Universal MATE-N-LOK, old mpn/engineering number: 1-770971-x, 5 Pins per row (http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=82181_SOFTSHELL_HIGH_DENSITY&DocType=CS&DocLang=EN), generated with kicad-footprint-generator +connector TE MATE-N-LOK top entry +0 +10 +10 +Connector_TE-Connectivity +TE_MATE-N-LOK_1-770972-x_2x06_P4.14mm_Horizontal +Molex Mini-Universal MATE-N-LOK, old mpn/engineering number: 1-770972-x, 6 Pins per row (http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=82181_SOFTSHELL_HIGH_DENSITY&DocType=CS&DocLang=EN), generated with kicad-footprint-generator +connector TE MATE-N-LOK top entry +0 +12 +12 +Connector_TE-Connectivity +TE_MATE-N-LOK_1-770973-x_2x07_P4.14mm_Horizontal +Molex Mini-Universal MATE-N-LOK, old mpn/engineering number: 1-770973-x, 7 Pins per row (http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=82181_SOFTSHELL_HIGH_DENSITY&DocType=CS&DocLang=EN), generated with kicad-footprint-generator +connector TE MATE-N-LOK top entry +0 +14 +14 +Connector_TE-Connectivity +TE_MATE-N-LOK_1-770974-x_2x08_P4.14mm_Horizontal +Molex Mini-Universal MATE-N-LOK, old mpn/engineering number: 1-770974-x, 8 Pins per row (http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=82181_SOFTSHELL_HIGH_DENSITY&DocType=CS&DocLang=EN), generated with kicad-footprint-generator +connector TE MATE-N-LOK top entry +0 +16 +16 +Connector_TE-Connectivity +TE_MATE-N-LOK_1-794067-x_2x07_P4.14mm_Vertical +Molex Mini-Universal MATE-N-LOK, old mpn/engineering number: 1-794067-x, 7 Pins per row (http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=82181_SOFTSHELL_HIGH_DENSITY&DocType=CS&DocLang=EN), generated with kicad-footprint-generator +connector TE MATE-N-LOK side entry +0 +14 +14 +Connector_TE-Connectivity +TE_MATE-N-LOK_1-794068-x_2x08_P4.14mm_Vertical +Molex Mini-Universal MATE-N-LOK, old mpn/engineering number: 1-794068-x, 8 Pins per row (http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=82181_SOFTSHELL_HIGH_DENSITY&DocType=CS&DocLang=EN), generated with kicad-footprint-generator +connector TE MATE-N-LOK side entry +0 +16 +16 +Connector_TE-Connectivity +TE_MATE-N-LOK_1-794069-x_2x09_P4.14mm_Vertical +Molex Mini-Universal MATE-N-LOK, old mpn/engineering number: 1-794069-x, 9 Pins per row (http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=82181_SOFTSHELL_HIGH_DENSITY&DocType=CS&DocLang=EN), generated with kicad-footprint-generator +connector TE MATE-N-LOK side entry +0 +18 +18 +Connector_TE-Connectivity +TE_MATE-N-LOK_1-794070-x_2x10_P4.14mm_Vertical +Molex Mini-Universal MATE-N-LOK, old mpn/engineering number: 1-794070-x, 10 Pins per row (http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=82181_SOFTSHELL_HIGH_DENSITY&DocType=CS&DocLang=EN), generated with kicad-footprint-generator +connector TE MATE-N-LOK side entry +0 +20 +20 +Connector_TE-Connectivity +TE_MATE-N-LOK_1-794071-x_2x11_P4.14mm_Vertical +Molex Mini-Universal MATE-N-LOK, old mpn/engineering number: 1-794071-x, 11 Pins per row (http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=82181_SOFTSHELL_HIGH_DENSITY&DocType=CS&DocLang=EN), generated with kicad-footprint-generator +connector TE MATE-N-LOK side entry +0 +22 +22 +Connector_TE-Connectivity +TE_MATE-N-LOK_1-794072-x_2x12_P4.14mm_Vertical +Molex Mini-Universal MATE-N-LOK, old mpn/engineering number: 1-794072-x, 12 Pins per row (http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=82181_SOFTSHELL_HIGH_DENSITY&DocType=CS&DocLang=EN), generated with kicad-footprint-generator +connector TE MATE-N-LOK side entry +0 +24 +24 +Connector_TE-Connectivity +TE_MATE-N-LOK_1-794073-x_2x04_P4.14mm_Vertical +Molex Mini-Universal MATE-N-LOK, old mpn/engineering number: 1-794073-x, 4 Pins per row (http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=82181_SOFTSHELL_HIGH_DENSITY&DocType=CS&DocLang=EN), generated with kicad-footprint-generator +connector TE MATE-N-LOK side entry +0 +8 +8 +Connector_TE-Connectivity +TE_MATE-N-LOK_1-794105-x_2x09_P4.14mm_Horizontal +Molex Mini-Universal MATE-N-LOK, old mpn/engineering number: 1-794105-x, 9 Pins per row (http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=82181_SOFTSHELL_HIGH_DENSITY&DocType=CS&DocLang=EN), generated with kicad-footprint-generator +connector TE MATE-N-LOK top entry +0 +18 +18 +Connector_TE-Connectivity +TE_MATE-N-LOK_1-794106-x_2x10_P4.14mm_Horizontal +Molex Mini-Universal MATE-N-LOK, old mpn/engineering number: 1-794106-x, 10 Pins per row (http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=82181_SOFTSHELL_HIGH_DENSITY&DocType=CS&DocLang=EN), generated with kicad-footprint-generator +connector TE MATE-N-LOK top entry +0 +20 +20 +Connector_TE-Connectivity +TE_MATE-N-LOK_1-794107-x_2x11_P4.14mm_Horizontal +Molex Mini-Universal MATE-N-LOK, old mpn/engineering number: 1-794107-x, 11 Pins per row (http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=82181_SOFTSHELL_HIGH_DENSITY&DocType=CS&DocLang=EN), generated with kicad-footprint-generator +connector TE MATE-N-LOK top entry +0 +22 +22 +Connector_TE-Connectivity +TE_MATE-N-LOK_1-794108-x_2x12_P4.14mm_Horizontal +Molex Mini-Universal MATE-N-LOK, old mpn/engineering number: 1-794108-x, 12 Pins per row (http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=82181_SOFTSHELL_HIGH_DENSITY&DocType=CS&DocLang=EN), generated with kicad-footprint-generator +connector TE MATE-N-LOK top entry +0 +24 +24 +Connector_TE-Connectivity +TE_MATE-N-LOK_1-794374-x_1x01_P4.14mm_Horizontal +Molex Mini-Universal MATE-N-LOK, old mpn/engineering number: 1-794374-x, 1 Pins per row (http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=82181_SOFTSHELL_HIGH_DENSITY&DocType=CS&DocLang=EN), generated with kicad-footprint-generator +connector TE MATE-N-LOK top entry +0 +1 +1 +Connector_TE-Connectivity +TE_MATE-N-LOK_350211-1_1x04_P5.08mm_Vertical +https://www.te.com/commerce/DocumentDelivery/DDEController?Action=showdoc&DocId=Customer+Drawing%7F350211%7FU5%7Fpdf%7FEnglish%7FENG_CD_350211_U5.pdf%7F350211-1 +connector TE MATE-N-LOK top entry ATA PATA IDE 5.25 inch floppy drive power +0 +4 +4 +Connector_USB +USB3_A_Molex_48393-001 +USB 3.0, type A, right angle (http://www.molex.com/pdm_docs/sd/483930003_sd.pdf) +USB 3.0 type A right angle +0 +13 +10 +Connector_USB +USB3_A_Plug_Wuerth_692112030100_Horizontal +USB3 type A Plug, Horizontal, http://katalog.we-online.de/em/datasheet/692112030100.pdf +usb A plug horizontal +0 +11 +10 +Connector_USB +USB_A_CNCTech_1001-011-01101_Horizontal +USB type A Plug, Horizontal, http://cnctech.us/pdfs/1001-011-01101.pdf +USB-A +0 +6 +5 +Connector_USB +USB_A_CONNFLY_DS1095-WNR0 +http://www.connfly.com/userfiles/image/UpLoadFile/File/2013/5/6/DS1095.pdf +USB-A receptacle horizontal through-hole +0 +6 +5 +Connector_USB +USB_A_Molex_67643_Horizontal +USB type A, Horizontal, https://www.molex.com/pdm_docs/sd/676433910_sd.pdf +USB_A Female Connector receptacle +0 +6 +5 +Connector_USB +USB_A_Molex_105057_Vertical +https://www.molex.com/pdm_docs/sd/1050570001_sd.pdf +USB A Vertical +0 +7 +5 +Connector_USB +USB_A_Stewart_SS-52100-001_Horizontal +USB A connector https://belfuse.com/resources/drawings/stewartconnector/dr-stw-ss-52100-001.pdf +USB_A Female Connector receptacle +0 +6 +5 +Connector_USB +USB_A_Wuerth_614004134726_Horizontal +USB A connector https://www.we-online.com/catalog/datasheet/614004134726.pdf +USB_A Female Connector receptacle +0 +8 +5 +Connector_USB +USB_A_Wuerth_61400826021_Horizontal_Stacked +Stacked USB A connector http://katalog.we-online.de/em/datasheet/61400826021.pdf +Wuerth stacked USB_A +0 +12 +9 +Connector_USB +USB_B_Amphenol_MUSB-D511_Vertical_Rugged +A,phenol MUSB_D511, USB B female connector, straight, rugged, https://www.amphenolcanada.com/ProductSearch/drawings/AC/MUSBD511XX.pdf +USB_B_MUSB_Straight female connector straight rugged MUSB D511 +0 +6 +5 +Connector_USB +USB_B_Lumberg_2411_02_Horizontal +USB 2.0 receptacle type B, horizontal version, through-hole, https://downloads.lumberg.com/datenblaetter/en/2411_02.pdf +USB B receptacle horizontal through-hole +0 +6 +5 +Connector_USB +USB_B_OST_USB-B1HSxx_Horizontal +USB B receptacle, Horizontal, through-hole, http://www.on-shore.com/wp-content/uploads/2015/09/usb-b1hsxx.pdf +USB-B receptacle horizontal through-hole +0 +6 +5 +Connector_USB +USB_B_TE_5787834_Vertical +http://www.mouser.com/ds/2/418/NG_CD_5787834_A4-669110.pdf +USB_B USB B vertical female connector +0 +6 +5 +Connector_USB +USB_C_Plug_JAE_DX07P024AJ1 +Universal Serial Bus (USB) Shielded I/O Plug, Type C, Right Angle, Surface Mount, https://www.jae.com/en/searchfilter/?topics_keyword=DX07P024AJ1&mainItemSelect=1 +USB Type-C Plug Edge Mount +0 +30 +25 +Connector_USB +USB_C_Plug_Molex_105444 +Universal Serial Bus (USB) Shielded I/O Plug, Type C, Right Angle, Surface Mount, http://www.molex.com/pdm_docs/sd/1054440001_sd.pdf +USB Type-C Plug Edge Mount +0 +24 +23 +Connector_USB +USB_C_Receptacle_Amphenol_12401548E4-2A +USB TYPE C, RA RCPT PCB, Hybrid, https://www.amphenolcanada.com/StockAvailabilityPrice.aspx?From=&PartNum=12401548E4%7e2A +USB C Type-C Receptacle Hybrid +0 +28 +25 +Connector_USB +USB_C_Receptacle_Amphenol_12401548E4-2A_CircularHoles +USB TYPE C, RA RCPT PCB, Hybrid, https://www.amphenolcanada.com/StockAvailabilityPrice.aspx?From=&PartNum=12401548E4%7e2A +USB C Type-C Receptacle Hybrid +0 +28 +25 +Connector_USB +USB_C_Receptacle_Amphenol_12401610E4-2A +USB TYPE C, RA RCPT PCB, SMT, https://www.amphenolcanada.com/StockAvailabilityPrice.aspx?From=&PartNum=12401610E4%7e2A +USB C Type-C Receptacle SMD +0 +28 +25 +Connector_USB +USB_C_Receptacle_Amphenol_12401610E4-2A_CircularHoles +USB TYPE C, RA RCPT PCB, SMT, https://www.amphenolcanada.com/StockAvailabilityPrice.aspx?From=&PartNum=12401610E4%7e2A +USB C Type-C Receptacle SMD +0 +28 +25 +Connector_USB +USB_C_Receptacle_GCT_USB4085 +USB 2.0 Type C Receptacle, https://gct.co/Files/Drawings/USB4085.pdf +USB Type-C Receptacle Through-hole Right angle +0 +20 +17 +Connector_USB +USB_C_Receptacle_HRO_TYPE-C-31-M-12 +USB Type-C receptacle for USB 2.0 and PD, http://www.krhro.com/uploads/soft/180320/1-1P320120243.pdf +usb usb-c 2.0 pd +0 +20 +17 +Connector_USB +USB_C_Receptacle_JAE_DX07S024WJ1R350 +http://www.jae.com/z-en/pdf_download_exec.cfm?param=SJ117219.pdf +USB C Type-C Receptacle SMD +0 +30 +25 +Connector_USB +USB_C_Receptacle_JAE_DX07S024WJ3R400 +USB TYPE C, VERT RCPT PCB, SMT, http://www.jae.com/z-en/pdf_download_exec.cfm?param=SJ117928.pdf +USB C Type-C Receptacle SMD +0 +28 +25 +Connector_USB +USB_C_Receptacle_Palconn_UTC16-G +http://www.palpilot.com/wp-content/uploads/2017/05/UTC027-GKN-OR-Rev-A.pdf +USB C Type-C Receptacle USB2.0 +0 +20 +17 +Connector_USB +USB_C_Receptacle_XKB_U262-16XN-4BVC11 +USB Type C, right-angle, SMT, https://datasheet.lcsc.com/szlcsc/1811141824_XKB-Enterprise-U262-161N-4BVC11_C319148.pdf +USB C Type-C Receptacle SMD +0 +20 +17 +Connector_USB +USB_Micro-AB_Molex_47590-0001 +Micro USB AB receptable, right-angle inverted (https://www.molex.com/pdm_docs/sd/475900001_sd.pdf) +Micro AB USB SMD +0 +14 +6 +Connector_USB +USB_Micro-B_Amphenol_10103594-0001LF_Horizontal +Micro USB Type B 10103594-0001LF, http://cdn.amphenol-icc.com/media/wysiwyg/files/drawing/10103594.pdf +USB USB_B USB_micro USB_OTG +0 +17 +6 +Connector_USB +USB_Micro-B_Amphenol_10104110_Horizontal +USB Micro-B, horizontal, https://cdn.amphenol-icc.com/media/wysiwyg/files/drawing/10104110.pdf +USB Micro B horizontal +0 +9 +6 +Connector_USB +USB_Micro-B_Amphenol_10118194_Horizontal +USB Micro-B receptacle, horizontal, SMD, 10118194, https://cdn.amphenol-icc.com/media/wysiwyg/files/drawing/10118194.pdf +USB Micro B horizontal SMD +0 +17 +6 +Connector_USB +USB_Micro-B_GCT_USB3076-30-A +GCT Micro USB https://gct.co/files/drawings/usb3076.pdf +Micro-USB SMD Typ-B GCT +0 +11 +6 +Connector_USB +USB_Micro-B_Molex-105017-0001 +http://www.molex.com/pdm_docs/sd/1050170001_sd.pdf +Micro-USB SMD Typ-B +0 +13 +6 +Connector_USB +USB_Micro-B_Molex-105133-0001 +Molex Vertical Micro USB Typ-B (http://www.molex.com/pdm_docs/sd/1051330001_sd.pdf) +Micro-USB SMD Typ-B Vertical +0 +8 +6 +Connector_USB +USB_Micro-B_Molex-105133-0031 +Molex Vertical Micro USB Typ-B (http://www.molex.com/pdm_docs/sd/1051330031_sd.pdf) +Micro-USB SMD Typ-B Vertical +0 +8 +6 +Connector_USB +USB_Micro-B_Molex_47346-0001 +Micro USB B receptable with flange, bottom-mount, SMD, right-angle (http://www.molex.com/pdm_docs/sd/473460001_sd.pdf) +Micro B USB SMD +0 +11 +6 +Connector_USB +USB_Micro-B_Wuerth_614105150721_Vertical +USB Micro-B receptacle, through-hole, vertical, http://katalog.we-online.de/em/datasheet/614105150721.pdf +usb micro receptacle vertical +0 +7 +6 +Connector_USB +USB_Micro-B_Wuerth_614105150721_Vertical_CircularHoles +USB Micro-B receptacle, through-hole, vertical, http://katalog.we-online.de/em/datasheet/614105150721.pdf +usb micro receptacle vertical +0 +7 +6 +Connector_USB +USB_Micro-B_Wuerth_629105150521 +USB Micro-B receptacle, http://www.mouser.com/ds/2/445/629105150521-469306.pdf +usb micro receptacle +0 +9 +6 +Connector_USB +USB_Micro-B_Wuerth_629105150521_CircularHoles +USB Micro-B receptacle, http://www.mouser.com/ds/2/445/629105150521-469306.pdf +usb micro receptacle +0 +9 +6 +Connector_USB +USB_Mini-B_AdamTech_MUSB-B5-S-VT-TSMT-1_SMD_Vertical +http://www.adam-tech.com/upload/MUSB-B5-S-VT-TSMT-1.pdf +USB Mini-B +0 +7 +6 +Connector_USB +USB_Mini-B_Lumberg_2486_01_Horizontal +USB Mini-B 5-pin SMD connector, http://downloads.lumberg.com/datenblaetter/en/2486_01.pdf +USB USB_B USB_Mini connector +0 +9 +6 +Connector_USB +USB_Mini-B_Tensility_54-00023_Vertical +http://www.tensility.com/pdffiles/54-00023.pdf +usb mini receptacle vertical +0 +7 +6 +Connector_USB +USB_Mini-B_Tensility_54-00023_Vertical_CircularHoles +http://www.tensility.com/pdffiles/54-00023.pdf +usb mini receptacle vertical +0 +7 +6 +Connector_USB +USB_Mini-B_Wuerth_65100516121_Horizontal +Mini USB 2.0 Type B SMT Horizontal 5 Contacts (https://katalog.we-online.de/em/datasheet/65100516121.pdf) +Mini USB 2.0 Type B +0 +9 +6 +Connector_Wago +Wago_734-132_1x02_P3.50mm_Vertical +Molex 734 Male header (for PCBs); Straight solder pin 1 x 1 mm, 734-132 , 2 Pins (http://www.farnell.com/datasheets/2157639.pdf), generated with kicad-footprint-generator +connector Wago side entry +0 +2 +2 +Connector_Wago +Wago_734-133_1x03_P3.50mm_Vertical +Molex 734 Male header (for PCBs); Straight solder pin 1 x 1 mm, 734-133 , 3 Pins (http://www.farnell.com/datasheets/2157639.pdf), generated with kicad-footprint-generator +connector Wago side entry +0 +3 +3 +Connector_Wago +Wago_734-134_1x04_P3.50mm_Vertical +Molex 734 Male header (for PCBs); Straight solder pin 1 x 1 mm, 734-134 , 4 Pins (http://www.farnell.com/datasheets/2157639.pdf), generated with kicad-footprint-generator +connector Wago side entry +0 +4 +4 +Connector_Wago +Wago_734-135_1x05_P3.50mm_Vertical +Molex 734 Male header (for PCBs); Straight solder pin 1 x 1 mm, 734-135 , 5 Pins (http://www.farnell.com/datasheets/2157639.pdf), generated with kicad-footprint-generator +connector Wago side entry +0 +5 +5 +Connector_Wago +Wago_734-136_1x06_P3.50mm_Vertical +Molex 734 Male header (for PCBs); Straight solder pin 1 x 1 mm, 734-136 , 6 Pins (http://www.farnell.com/datasheets/2157639.pdf), generated with kicad-footprint-generator +connector Wago side entry +0 +6 +6 +Connector_Wago +Wago_734-137_1x07_P3.50mm_Vertical +Molex 734 Male header (for PCBs); Straight solder pin 1 x 1 mm, 734-137 , 7 Pins (http://www.farnell.com/datasheets/2157639.pdf), generated with kicad-footprint-generator +connector Wago side entry +0 +7 +7 +Connector_Wago +Wago_734-138_1x08_P3.50mm_Vertical +Molex 734 Male header (for PCBs); Straight solder pin 1 x 1 mm, 734-138 , 8 Pins (http://www.farnell.com/datasheets/2157639.pdf), generated with kicad-footprint-generator +connector Wago side entry +0 +8 +8 +Connector_Wago +Wago_734-139_1x09_P3.50mm_Vertical +Molex 734 Male header (for PCBs); Straight solder pin 1 x 1 mm, 734-139 , 9 Pins (http://www.farnell.com/datasheets/2157639.pdf), generated with kicad-footprint-generator +connector Wago side entry +0 +9 +9 +Connector_Wago +Wago_734-140_1x10_P3.50mm_Vertical +Molex 734 Male header (for PCBs); Straight solder pin 1 x 1 mm, 734-140 , 10 Pins (http://www.farnell.com/datasheets/2157639.pdf), generated with kicad-footprint-generator +connector Wago side entry +0 +10 +10 +Connector_Wago +Wago_734-141_1x11_P3.50mm_Vertical +Molex 734 Male header (for PCBs); Straight solder pin 1 x 1 mm, 734-141 , 11 Pins (http://www.farnell.com/datasheets/2157639.pdf), generated with kicad-footprint-generator +connector Wago side entry +0 +11 +11 +Connector_Wago +Wago_734-142_1x12_P3.50mm_Vertical +Molex 734 Male header (for PCBs); Straight solder pin 1 x 1 mm, 734-142 , 12 Pins (http://www.farnell.com/datasheets/2157639.pdf), generated with kicad-footprint-generator +connector Wago side entry +0 +12 +12 +Connector_Wago +Wago_734-143_1x13_P3.50mm_Vertical +Molex 734 Male header (for PCBs); Straight solder pin 1 x 1 mm, 734-143 , 13 Pins (http://www.farnell.com/datasheets/2157639.pdf), generated with kicad-footprint-generator +connector Wago side entry +0 +13 +13 +Connector_Wago +Wago_734-144_1x14_P3.50mm_Vertical +Molex 734 Male header (for PCBs); Straight solder pin 1 x 1 mm, 734-144 , 14 Pins (http://www.farnell.com/datasheets/2157639.pdf), generated with kicad-footprint-generator +connector Wago side entry +0 +14 +14 +Connector_Wago +Wago_734-146_1x16_P3.50mm_Vertical +Molex 734 Male header (for PCBs); Straight solder pin 1 x 1 mm, 734-146 , 16 Pins (http://www.farnell.com/datasheets/2157639.pdf), generated with kicad-footprint-generator +connector Wago side entry +0 +16 +16 +Connector_Wago +Wago_734-148_1x18_P3.50mm_Vertical +Molex 734 Male header (for PCBs); Straight solder pin 1 x 1 mm, 734-148 , 18 Pins (http://www.farnell.com/datasheets/2157639.pdf), generated with kicad-footprint-generator +connector Wago side entry +0 +18 +18 +Connector_Wago +Wago_734-150_1x20_P3.50mm_Vertical +Molex 734 Male header (for PCBs); Straight solder pin 1 x 1 mm, 734-150 , 20 Pins (http://www.farnell.com/datasheets/2157639.pdf), generated with kicad-footprint-generator +connector Wago side entry +0 +20 +20 +Connector_Wago +Wago_734-154_1x24_P3.50mm_Vertical +Molex 734 Male header (for PCBs); Straight solder pin 1 x 1 mm, 734-154 , 24 Pins (http://www.farnell.com/datasheets/2157639.pdf), generated with kicad-footprint-generator +connector Wago side entry +0 +24 +24 +Connector_Wago +Wago_734-162_1x02_P3.50mm_Horizontal +Molex 734 Male header (for PCBs); Angled solder pin 1 x 1 mm, 734-162 , 2 Pins (http://www.farnell.com/datasheets/2157639.pdf), generated with kicad-footprint-generator +connector Wago top entry +0 +2 +2 +Connector_Wago +Wago_734-163_1x03_P3.50mm_Horizontal +Molex 734 Male header (for PCBs); Angled solder pin 1 x 1 mm, 734-163 , 3 Pins (http://www.farnell.com/datasheets/2157639.pdf), generated with kicad-footprint-generator +connector Wago top entry +0 +3 +3 +Connector_Wago +Wago_734-164_1x04_P3.50mm_Horizontal +Molex 734 Male header (for PCBs); Angled solder pin 1 x 1 mm, 734-164 , 4 Pins (http://www.farnell.com/datasheets/2157639.pdf), generated with kicad-footprint-generator +connector Wago top entry +0 +4 +4 +Connector_Wago +Wago_734-165_1x05_P3.50mm_Horizontal +Molex 734 Male header (for PCBs); Angled solder pin 1 x 1 mm, 734-165 , 5 Pins (http://www.farnell.com/datasheets/2157639.pdf), generated with kicad-footprint-generator +connector Wago top entry +0 +5 +5 +Connector_Wago +Wago_734-166_1x06_P3.50mm_Horizontal +Molex 734 Male header (for PCBs); Angled solder pin 1 x 1 mm, 734-166 , 6 Pins (http://www.farnell.com/datasheets/2157639.pdf), generated with kicad-footprint-generator +connector Wago top entry +0 +6 +6 +Connector_Wago +Wago_734-167_1x07_P3.50mm_Horizontal +Molex 734 Male header (for PCBs); Angled solder pin 1 x 1 mm, 734-167 , 7 Pins (http://www.farnell.com/datasheets/2157639.pdf), generated with kicad-footprint-generator +connector Wago top entry +0 +7 +7 +Connector_Wago +Wago_734-168_1x08_P3.50mm_Horizontal +Molex 734 Male header (for PCBs); Angled solder pin 1 x 1 mm, 734-168 , 8 Pins (http://www.farnell.com/datasheets/2157639.pdf), generated with kicad-footprint-generator +connector Wago top entry +0 +8 +8 +Connector_Wago +Wago_734-169_1x09_P3.50mm_Horizontal +Molex 734 Male header (for PCBs); Angled solder pin 1 x 1 mm, 734-169 , 9 Pins (http://www.farnell.com/datasheets/2157639.pdf), generated with kicad-footprint-generator +connector Wago top entry +0 +9 +9 +Connector_Wago +Wago_734-170_1x10_P3.50mm_Horizontal +Molex 734 Male header (for PCBs); Angled solder pin 1 x 1 mm, 734-170 , 10 Pins (http://www.farnell.com/datasheets/2157639.pdf), generated with kicad-footprint-generator +connector Wago top entry +0 +10 +10 +Connector_Wago +Wago_734-171_1x11_P3.50mm_Horizontal +Molex 734 Male header (for PCBs); Angled solder pin 1 x 1 mm, 734-171 , 11 Pins (http://www.farnell.com/datasheets/2157639.pdf), generated with kicad-footprint-generator +connector Wago top entry +0 +11 +11 +Connector_Wago +Wago_734-172_1x12_P3.50mm_Horizontal +Molex 734 Male header (for PCBs); Angled solder pin 1 x 1 mm, 734-172 , 12 Pins (http://www.farnell.com/datasheets/2157639.pdf), generated with kicad-footprint-generator +connector Wago top entry +0 +12 +12 +Connector_Wago +Wago_734-173_1x13_P3.50mm_Horizontal +Molex 734 Male header (for PCBs); Angled solder pin 1 x 1 mm, 734-173 , 13 Pins (http://www.farnell.com/datasheets/2157639.pdf), generated with kicad-footprint-generator +connector Wago top entry +0 +13 +13 +Connector_Wago +Wago_734-174_1x14_P3.50mm_Horizontal +Molex 734 Male header (for PCBs); Angled solder pin 1 x 1 mm, 734-174 , 14 Pins (http://www.farnell.com/datasheets/2157639.pdf), generated with kicad-footprint-generator +connector Wago top entry +0 +14 +14 +Connector_Wago +Wago_734-176_1x16_P3.50mm_Horizontal +Molex 734 Male header (for PCBs); Angled solder pin 1 x 1 mm, 734-176 , 16 Pins (http://www.farnell.com/datasheets/2157639.pdf), generated with kicad-footprint-generator +connector Wago top entry +0 +16 +16 +Connector_Wago +Wago_734-178_1x18_P3.50mm_Horizontal +Molex 734 Male header (for PCBs); Angled solder pin 1 x 1 mm, 734-178 , 18 Pins (http://www.farnell.com/datasheets/2157639.pdf), generated with kicad-footprint-generator +connector Wago top entry +0 +18 +18 +Connector_Wago +Wago_734-180_1x20_P3.50mm_Horizontal +Molex 734 Male header (for PCBs); Angled solder pin 1 x 1 mm, 734-180 , 20 Pins (http://www.farnell.com/datasheets/2157639.pdf), generated with kicad-footprint-generator +connector Wago top entry +0 +20 +20 +Connector_Wago +Wago_734-184_1x24_P3.50mm_Horizontal +Molex 734 Male header (for PCBs); Angled solder pin 1 x 1 mm, 734-184 , 24 Pins (http://www.farnell.com/datasheets/2157639.pdf), generated with kicad-footprint-generator +connector Wago top entry +0 +24 +24 +Connector_Wire +SolderWire-0.1sqmm_1x01_D0.4mm_OD1mm +Soldered wire connection, for a single 0.1 mm² wire, basic insulation, conductor diameter 0.4mm, outer diameter 1mm, size source Multi-Contact FLEXI-E 0.1 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.1sqmm +0 +1 +1 +Connector_Wire +SolderWire-0.1sqmm_1x01_D0.4mm_OD1mm_Relief +Soldered wire connection with feed through strain relief, for a single 0.1 mm² wire, basic insulation, conductor diameter 0.4mm, outer diameter 1mm, size source Multi-Contact FLEXI-E 0.1 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.1sqmm strain-relief +0 +1 +1 +Connector_Wire +SolderWire-0.1sqmm_1x01_D0.4mm_OD1mm_Relief2x +Soldered wire connection with double feed through strain relief, for a single 0.1 mm² wire, basic insulation, conductor diameter 0.4mm, outer diameter 1mm, size source Multi-Contact FLEXI-E 0.1 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.1sqmm double-strain-relief +0 +1 +1 +Connector_Wire +SolderWire-0.1sqmm_1x02_P3.6mm_D0.4mm_OD1mm +Soldered wire connection, for 2 times 0.1 mm² wires, basic insulation, conductor diameter 0.4mm, outer diameter 1mm, size source Multi-Contact FLEXI-E 0.1 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.1sqmm +0 +2 +2 +Connector_Wire +SolderWire-0.1sqmm_1x02_P3.6mm_D0.4mm_OD1mm_Relief +Soldered wire connection with feed through strain relief, for 2 times 0.1 mm² wires, basic insulation, conductor diameter 0.4mm, outer diameter 1mm, size source Multi-Contact FLEXI-E 0.1 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.1sqmm strain-relief +0 +2 +2 +Connector_Wire +SolderWire-0.1sqmm_1x02_P3.6mm_D0.4mm_OD1mm_Relief2x +Soldered wire connection with double feed through strain relief, for 2 times 0.1 mm² wires, basic insulation, conductor diameter 0.4mm, outer diameter 1mm, size source Multi-Contact FLEXI-E 0.1 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.1sqmm double-strain-relief +0 +2 +2 +Connector_Wire +SolderWire-0.1sqmm_1x03_P3.6mm_D0.4mm_OD1mm +Soldered wire connection, for 3 times 0.1 mm² wires, basic insulation, conductor diameter 0.4mm, outer diameter 1mm, size source Multi-Contact FLEXI-E 0.1 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.1sqmm +0 +3 +3 +Connector_Wire +SolderWire-0.1sqmm_1x03_P3.6mm_D0.4mm_OD1mm_Relief +Soldered wire connection with feed through strain relief, for 3 times 0.1 mm² wires, basic insulation, conductor diameter 0.4mm, outer diameter 1mm, size source Multi-Contact FLEXI-E 0.1 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.1sqmm strain-relief +0 +3 +3 +Connector_Wire +SolderWire-0.1sqmm_1x03_P3.6mm_D0.4mm_OD1mm_Relief2x +Soldered wire connection with double feed through strain relief, for 3 times 0.1 mm² wires, basic insulation, conductor diameter 0.4mm, outer diameter 1mm, size source Multi-Contact FLEXI-E 0.1 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.1sqmm double-strain-relief +0 +3 +3 +Connector_Wire +SolderWire-0.1sqmm_1x04_P3.6mm_D0.4mm_OD1mm +Soldered wire connection, for 4 times 0.1 mm² wires, basic insulation, conductor diameter 0.4mm, outer diameter 1mm, size source Multi-Contact FLEXI-E 0.1 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.1sqmm +0 +4 +4 +Connector_Wire +SolderWire-0.1sqmm_1x04_P3.6mm_D0.4mm_OD1mm_Relief +Soldered wire connection with feed through strain relief, for 4 times 0.1 mm² wires, basic insulation, conductor diameter 0.4mm, outer diameter 1mm, size source Multi-Contact FLEXI-E 0.1 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.1sqmm strain-relief +0 +4 +4 +Connector_Wire +SolderWire-0.1sqmm_1x04_P3.6mm_D0.4mm_OD1mm_Relief2x +Soldered wire connection with double feed through strain relief, for 4 times 0.1 mm² wires, basic insulation, conductor diameter 0.4mm, outer diameter 1mm, size source Multi-Contact FLEXI-E 0.1 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.1sqmm double-strain-relief +0 +4 +4 +Connector_Wire +SolderWire-0.1sqmm_1x05_P3.6mm_D0.4mm_OD1mm +Soldered wire connection, for 5 times 0.1 mm² wires, basic insulation, conductor diameter 0.4mm, outer diameter 1mm, size source Multi-Contact FLEXI-E 0.1 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.1sqmm +0 +5 +5 +Connector_Wire +SolderWire-0.1sqmm_1x05_P3.6mm_D0.4mm_OD1mm_Relief +Soldered wire connection with feed through strain relief, for 5 times 0.1 mm² wires, basic insulation, conductor diameter 0.4mm, outer diameter 1mm, size source Multi-Contact FLEXI-E 0.1 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.1sqmm strain-relief +0 +5 +5 +Connector_Wire +SolderWire-0.1sqmm_1x05_P3.6mm_D0.4mm_OD1mm_Relief2x +Soldered wire connection with double feed through strain relief, for 5 times 0.1 mm² wires, basic insulation, conductor diameter 0.4mm, outer diameter 1mm, size source Multi-Contact FLEXI-E 0.1 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.1sqmm double-strain-relief +0 +5 +5 +Connector_Wire +SolderWire-0.1sqmm_1x06_P3.6mm_D0.4mm_OD1mm +Soldered wire connection, for 6 times 0.1 mm² wires, basic insulation, conductor diameter 0.4mm, outer diameter 1mm, size source Multi-Contact FLEXI-E 0.1 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.1sqmm +0 +6 +6 +Connector_Wire +SolderWire-0.1sqmm_1x06_P3.6mm_D0.4mm_OD1mm_Relief +Soldered wire connection with feed through strain relief, for 6 times 0.1 mm² wires, basic insulation, conductor diameter 0.4mm, outer diameter 1mm, size source Multi-Contact FLEXI-E 0.1 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.1sqmm strain-relief +0 +6 +6 +Connector_Wire +SolderWire-0.1sqmm_1x06_P3.6mm_D0.4mm_OD1mm_Relief2x +Soldered wire connection with double feed through strain relief, for 6 times 0.1 mm² wires, basic insulation, conductor diameter 0.4mm, outer diameter 1mm, size source Multi-Contact FLEXI-E 0.1 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.1sqmm double-strain-relief +0 +6 +6 +Connector_Wire +SolderWire-0.5sqmm_1x01_D0.9mm_OD2.1mm +Soldered wire connection, for a single 0.5 mm² wire, basic insulation, conductor diameter 0.9mm, outer diameter 2.1mm, size source Multi-Contact FLEXI-E 0.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.5sqmm +0 +1 +1 +Connector_Wire +SolderWire-0.5sqmm_1x01_D0.9mm_OD2.1mm_Relief +Soldered wire connection with feed through strain relief, for a single 0.5 mm² wire, basic insulation, conductor diameter 0.9mm, outer diameter 2.1mm, size source Multi-Contact FLEXI-E 0.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.5sqmm strain-relief +0 +1 +1 +Connector_Wire +SolderWire-0.5sqmm_1x01_D0.9mm_OD2.1mm_Relief2x +Soldered wire connection with double feed through strain relief, for a single 0.5 mm² wire, basic insulation, conductor diameter 0.9mm, outer diameter 2.1mm, size source Multi-Contact FLEXI-E 0.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.5sqmm double-strain-relief +0 +1 +1 +Connector_Wire +SolderWire-0.5sqmm_1x01_D0.9mm_OD2.3mm +Soldered wire connection, for a single 0.5 mm² wire, reinforced insulation, conductor diameter 0.9mm, outer diameter 2.3mm, size source Multi-Contact FLEXI-xV 0.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.5sqmm +0 +1 +1 +Connector_Wire +SolderWire-0.5sqmm_1x01_D0.9mm_OD2.3mm_Relief +Soldered wire connection with feed through strain relief, for a single 0.5 mm² wire, reinforced insulation, conductor diameter 0.9mm, outer diameter 2.3mm, size source Multi-Contact FLEXI-xV 0.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.5sqmm strain-relief +0 +1 +1 +Connector_Wire +SolderWire-0.5sqmm_1x01_D0.9mm_OD2.3mm_Relief2x +Soldered wire connection with double feed through strain relief, for a single 0.5 mm² wire, reinforced insulation, conductor diameter 0.9mm, outer diameter 2.3mm, size source Multi-Contact FLEXI-xV 0.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.5sqmm double-strain-relief +0 +1 +1 +Connector_Wire +SolderWire-0.5sqmm_1x02_P4.6mm_D0.9mm_OD2.1mm +Soldered wire connection, for 2 times 0.5 mm² wires, basic insulation, conductor diameter 0.9mm, outer diameter 2.1mm, size source Multi-Contact FLEXI-E 0.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.5sqmm +0 +2 +2 +Connector_Wire +SolderWire-0.5sqmm_1x02_P4.6mm_D0.9mm_OD2.1mm_Relief +Soldered wire connection with feed through strain relief, for 2 times 0.5 mm² wires, basic insulation, conductor diameter 0.9mm, outer diameter 2.1mm, size source Multi-Contact FLEXI-E 0.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.5sqmm strain-relief +0 +2 +2 +Connector_Wire +SolderWire-0.5sqmm_1x02_P4.6mm_D0.9mm_OD2.1mm_Relief2x +Soldered wire connection with double feed through strain relief, for 2 times 0.5 mm² wires, basic insulation, conductor diameter 0.9mm, outer diameter 2.1mm, size source Multi-Contact FLEXI-E 0.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.5sqmm double-strain-relief +0 +2 +2 +Connector_Wire +SolderWire-0.5sqmm_1x02_P4.8mm_D0.9mm_OD2.3mm +Soldered wire connection, for 2 times 0.5 mm² wires, reinforced insulation, conductor diameter 0.9mm, outer diameter 2.3mm, size source Multi-Contact FLEXI-xV 0.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.5sqmm +0 +2 +2 +Connector_Wire +SolderWire-0.5sqmm_1x02_P4.8mm_D0.9mm_OD2.3mm_Relief +Soldered wire connection with feed through strain relief, for 2 times 0.5 mm² wires, reinforced insulation, conductor diameter 0.9mm, outer diameter 2.3mm, size source Multi-Contact FLEXI-xV 0.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.5sqmm strain-relief +0 +2 +2 +Connector_Wire +SolderWire-0.5sqmm_1x02_P4.8mm_D0.9mm_OD2.3mm_Relief2x +Soldered wire connection with double feed through strain relief, for 2 times 0.5 mm² wires, reinforced insulation, conductor diameter 0.9mm, outer diameter 2.3mm, size source Multi-Contact FLEXI-xV 0.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.5sqmm double-strain-relief +0 +2 +2 +Connector_Wire +SolderWire-0.5sqmm_1x03_P4.6mm_D0.9mm_OD2.1mm +Soldered wire connection, for 3 times 0.5 mm² wires, basic insulation, conductor diameter 0.9mm, outer diameter 2.1mm, size source Multi-Contact FLEXI-E 0.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.5sqmm +0 +3 +3 +Connector_Wire +SolderWire-0.5sqmm_1x03_P4.6mm_D0.9mm_OD2.1mm_Relief +Soldered wire connection with feed through strain relief, for 3 times 0.5 mm² wires, basic insulation, conductor diameter 0.9mm, outer diameter 2.1mm, size source Multi-Contact FLEXI-E 0.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.5sqmm strain-relief +0 +3 +3 +Connector_Wire +SolderWire-0.5sqmm_1x03_P4.6mm_D0.9mm_OD2.1mm_Relief2x +Soldered wire connection with double feed through strain relief, for 3 times 0.5 mm² wires, basic insulation, conductor diameter 0.9mm, outer diameter 2.1mm, size source Multi-Contact FLEXI-E 0.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.5sqmm double-strain-relief +0 +3 +3 +Connector_Wire +SolderWire-0.5sqmm_1x03_P4.8mm_D0.9mm_OD2.3mm +Soldered wire connection, for 3 times 0.5 mm² wires, reinforced insulation, conductor diameter 0.9mm, outer diameter 2.3mm, size source Multi-Contact FLEXI-xV 0.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.5sqmm +0 +3 +3 +Connector_Wire +SolderWire-0.5sqmm_1x03_P4.8mm_D0.9mm_OD2.3mm_Relief +Soldered wire connection with feed through strain relief, for 3 times 0.5 mm² wires, reinforced insulation, conductor diameter 0.9mm, outer diameter 2.3mm, size source Multi-Contact FLEXI-xV 0.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.5sqmm strain-relief +0 +3 +3 +Connector_Wire +SolderWire-0.5sqmm_1x03_P4.8mm_D0.9mm_OD2.3mm_Relief2x +Soldered wire connection with double feed through strain relief, for 3 times 0.5 mm² wires, reinforced insulation, conductor diameter 0.9mm, outer diameter 2.3mm, size source Multi-Contact FLEXI-xV 0.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.5sqmm double-strain-relief +0 +3 +3 +Connector_Wire +SolderWire-0.5sqmm_1x04_P4.6mm_D0.9mm_OD2.1mm +Soldered wire connection, for 4 times 0.5 mm² wires, basic insulation, conductor diameter 0.9mm, outer diameter 2.1mm, size source Multi-Contact FLEXI-E 0.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.5sqmm +0 +4 +4 +Connector_Wire +SolderWire-0.5sqmm_1x04_P4.6mm_D0.9mm_OD2.1mm_Relief +Soldered wire connection with feed through strain relief, for 4 times 0.5 mm² wires, basic insulation, conductor diameter 0.9mm, outer diameter 2.1mm, size source Multi-Contact FLEXI-E 0.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.5sqmm strain-relief +0 +4 +4 +Connector_Wire +SolderWire-0.5sqmm_1x04_P4.6mm_D0.9mm_OD2.1mm_Relief2x +Soldered wire connection with double feed through strain relief, for 4 times 0.5 mm² wires, basic insulation, conductor diameter 0.9mm, outer diameter 2.1mm, size source Multi-Contact FLEXI-E 0.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.5sqmm double-strain-relief +0 +4 +4 +Connector_Wire +SolderWire-0.5sqmm_1x04_P4.8mm_D0.9mm_OD2.3mm +Soldered wire connection, for 4 times 0.5 mm² wires, reinforced insulation, conductor diameter 0.9mm, outer diameter 2.3mm, size source Multi-Contact FLEXI-xV 0.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.5sqmm +0 +4 +4 +Connector_Wire +SolderWire-0.5sqmm_1x04_P4.8mm_D0.9mm_OD2.3mm_Relief +Soldered wire connection with feed through strain relief, for 4 times 0.5 mm² wires, reinforced insulation, conductor diameter 0.9mm, outer diameter 2.3mm, size source Multi-Contact FLEXI-xV 0.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.5sqmm strain-relief +0 +4 +4 +Connector_Wire +SolderWire-0.5sqmm_1x04_P4.8mm_D0.9mm_OD2.3mm_Relief2x +Soldered wire connection with double feed through strain relief, for 4 times 0.5 mm² wires, reinforced insulation, conductor diameter 0.9mm, outer diameter 2.3mm, size source Multi-Contact FLEXI-xV 0.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.5sqmm double-strain-relief +0 +4 +4 +Connector_Wire +SolderWire-0.5sqmm_1x05_P4.6mm_D0.9mm_OD2.1mm +Soldered wire connection, for 5 times 0.5 mm² wires, basic insulation, conductor diameter 0.9mm, outer diameter 2.1mm, size source Multi-Contact FLEXI-E 0.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.5sqmm +0 +5 +5 +Connector_Wire +SolderWire-0.5sqmm_1x05_P4.6mm_D0.9mm_OD2.1mm_Relief +Soldered wire connection with feed through strain relief, for 5 times 0.5 mm² wires, basic insulation, conductor diameter 0.9mm, outer diameter 2.1mm, size source Multi-Contact FLEXI-E 0.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.5sqmm strain-relief +0 +5 +5 +Connector_Wire +SolderWire-0.5sqmm_1x05_P4.6mm_D0.9mm_OD2.1mm_Relief2x +Soldered wire connection with double feed through strain relief, for 5 times 0.5 mm² wires, basic insulation, conductor diameter 0.9mm, outer diameter 2.1mm, size source Multi-Contact FLEXI-E 0.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.5sqmm double-strain-relief +0 +5 +5 +Connector_Wire +SolderWire-0.5sqmm_1x05_P4.8mm_D0.9mm_OD2.3mm +Soldered wire connection, for 5 times 0.5 mm² wires, reinforced insulation, conductor diameter 0.9mm, outer diameter 2.3mm, size source Multi-Contact FLEXI-xV 0.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.5sqmm +0 +5 +5 +Connector_Wire +SolderWire-0.5sqmm_1x05_P4.8mm_D0.9mm_OD2.3mm_Relief +Soldered wire connection with feed through strain relief, for 5 times 0.5 mm² wires, reinforced insulation, conductor diameter 0.9mm, outer diameter 2.3mm, size source Multi-Contact FLEXI-xV 0.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.5sqmm strain-relief +0 +5 +5 +Connector_Wire +SolderWire-0.5sqmm_1x05_P4.8mm_D0.9mm_OD2.3mm_Relief2x +Soldered wire connection with double feed through strain relief, for 5 times 0.5 mm² wires, reinforced insulation, conductor diameter 0.9mm, outer diameter 2.3mm, size source Multi-Contact FLEXI-xV 0.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.5sqmm double-strain-relief +0 +5 +5 +Connector_Wire +SolderWire-0.5sqmm_1x06_P4.6mm_D0.9mm_OD2.1mm +Soldered wire connection, for 6 times 0.5 mm² wires, basic insulation, conductor diameter 0.9mm, outer diameter 2.1mm, size source Multi-Contact FLEXI-E 0.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.5sqmm +0 +6 +6 +Connector_Wire +SolderWire-0.5sqmm_1x06_P4.6mm_D0.9mm_OD2.1mm_Relief +Soldered wire connection with feed through strain relief, for 6 times 0.5 mm² wires, basic insulation, conductor diameter 0.9mm, outer diameter 2.1mm, size source Multi-Contact FLEXI-E 0.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.5sqmm strain-relief +0 +6 +6 +Connector_Wire +SolderWire-0.5sqmm_1x06_P4.6mm_D0.9mm_OD2.1mm_Relief2x +Soldered wire connection with double feed through strain relief, for 6 times 0.5 mm² wires, basic insulation, conductor diameter 0.9mm, outer diameter 2.1mm, size source Multi-Contact FLEXI-E 0.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.5sqmm double-strain-relief +0 +6 +6 +Connector_Wire +SolderWire-0.5sqmm_1x06_P4.8mm_D0.9mm_OD2.3mm +Soldered wire connection, for 6 times 0.5 mm² wires, reinforced insulation, conductor diameter 0.9mm, outer diameter 2.3mm, size source Multi-Contact FLEXI-xV 0.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.5sqmm +0 +6 +6 +Connector_Wire +SolderWire-0.5sqmm_1x06_P4.8mm_D0.9mm_OD2.3mm_Relief +Soldered wire connection with feed through strain relief, for 6 times 0.5 mm² wires, reinforced insulation, conductor diameter 0.9mm, outer diameter 2.3mm, size source Multi-Contact FLEXI-xV 0.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.5sqmm strain-relief +0 +6 +6 +Connector_Wire +SolderWire-0.5sqmm_1x06_P4.8mm_D0.9mm_OD2.3mm_Relief2x +Soldered wire connection with double feed through strain relief, for 6 times 0.5 mm² wires, reinforced insulation, conductor diameter 0.9mm, outer diameter 2.3mm, size source Multi-Contact FLEXI-xV 0.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.5sqmm double-strain-relief +0 +6 +6 +Connector_Wire +SolderWire-0.15sqmm_1x01_D0.5mm_OD1.5mm +Soldered wire connection, for a single 0.15 mm² wire, basic insulation, conductor diameter 0.5mm, outer diameter 1.5mm, size source Multi-Contact FLEXI-E 0.15 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.15sqmm +0 +1 +1 +Connector_Wire +SolderWire-0.15sqmm_1x01_D0.5mm_OD1.5mm_Relief +Soldered wire connection with feed through strain relief, for a single 0.15 mm² wire, basic insulation, conductor diameter 0.5mm, outer diameter 1.5mm, size source Multi-Contact FLEXI-E 0.15 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.15sqmm strain-relief +0 +1 +1 +Connector_Wire +SolderWire-0.15sqmm_1x01_D0.5mm_OD1.5mm_Relief2x +Soldered wire connection with double feed through strain relief, for a single 0.15 mm² wire, basic insulation, conductor diameter 0.5mm, outer diameter 1.5mm, size source Multi-Contact FLEXI-E 0.15 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.15sqmm double-strain-relief +0 +1 +1 +Connector_Wire +SolderWire-0.15sqmm_1x02_P4mm_D0.5mm_OD1.5mm +Soldered wire connection, for 2 times 0.15 mm² wires, basic insulation, conductor diameter 0.5mm, outer diameter 1.5mm, size source Multi-Contact FLEXI-E 0.15 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.15sqmm +0 +2 +2 +Connector_Wire +SolderWire-0.15sqmm_1x02_P4mm_D0.5mm_OD1.5mm_Relief +Soldered wire connection with feed through strain relief, for 2 times 0.15 mm² wires, basic insulation, conductor diameter 0.5mm, outer diameter 1.5mm, size source Multi-Contact FLEXI-E 0.15 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.15sqmm strain-relief +0 +2 +2 +Connector_Wire +SolderWire-0.15sqmm_1x02_P4mm_D0.5mm_OD1.5mm_Relief2x +Soldered wire connection with double feed through strain relief, for 2 times 0.15 mm² wires, basic insulation, conductor diameter 0.5mm, outer diameter 1.5mm, size source Multi-Contact FLEXI-E 0.15 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.15sqmm double-strain-relief +0 +2 +2 +Connector_Wire +SolderWire-0.15sqmm_1x03_P4mm_D0.5mm_OD1.5mm +Soldered wire connection, for 3 times 0.15 mm² wires, basic insulation, conductor diameter 0.5mm, outer diameter 1.5mm, size source Multi-Contact FLEXI-E 0.15 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.15sqmm +0 +3 +3 +Connector_Wire +SolderWire-0.15sqmm_1x03_P4mm_D0.5mm_OD1.5mm_Relief +Soldered wire connection with feed through strain relief, for 3 times 0.15 mm² wires, basic insulation, conductor diameter 0.5mm, outer diameter 1.5mm, size source Multi-Contact FLEXI-E 0.15 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.15sqmm strain-relief +0 +3 +3 +Connector_Wire +SolderWire-0.15sqmm_1x03_P4mm_D0.5mm_OD1.5mm_Relief2x +Soldered wire connection with double feed through strain relief, for 3 times 0.15 mm² wires, basic insulation, conductor diameter 0.5mm, outer diameter 1.5mm, size source Multi-Contact FLEXI-E 0.15 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.15sqmm double-strain-relief +0 +3 +3 +Connector_Wire +SolderWire-0.15sqmm_1x04_P4mm_D0.5mm_OD1.5mm +Soldered wire connection, for 4 times 0.15 mm² wires, basic insulation, conductor diameter 0.5mm, outer diameter 1.5mm, size source Multi-Contact FLEXI-E 0.15 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.15sqmm +0 +4 +4 +Connector_Wire +SolderWire-0.15sqmm_1x04_P4mm_D0.5mm_OD1.5mm_Relief +Soldered wire connection with feed through strain relief, for 4 times 0.15 mm² wires, basic insulation, conductor diameter 0.5mm, outer diameter 1.5mm, size source Multi-Contact FLEXI-E 0.15 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.15sqmm strain-relief +0 +4 +4 +Connector_Wire +SolderWire-0.15sqmm_1x04_P4mm_D0.5mm_OD1.5mm_Relief2x +Soldered wire connection with double feed through strain relief, for 4 times 0.15 mm² wires, basic insulation, conductor diameter 0.5mm, outer diameter 1.5mm, size source Multi-Contact FLEXI-E 0.15 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.15sqmm double-strain-relief +0 +4 +4 +Connector_Wire +SolderWire-0.15sqmm_1x05_P4mm_D0.5mm_OD1.5mm +Soldered wire connection, for 5 times 0.15 mm² wires, basic insulation, conductor diameter 0.5mm, outer diameter 1.5mm, size source Multi-Contact FLEXI-E 0.15 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.15sqmm +0 +5 +5 +Connector_Wire +SolderWire-0.15sqmm_1x05_P4mm_D0.5mm_OD1.5mm_Relief +Soldered wire connection with feed through strain relief, for 5 times 0.15 mm² wires, basic insulation, conductor diameter 0.5mm, outer diameter 1.5mm, size source Multi-Contact FLEXI-E 0.15 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.15sqmm strain-relief +0 +5 +5 +Connector_Wire +SolderWire-0.15sqmm_1x05_P4mm_D0.5mm_OD1.5mm_Relief2x +Soldered wire connection with double feed through strain relief, for 5 times 0.15 mm² wires, basic insulation, conductor diameter 0.5mm, outer diameter 1.5mm, size source Multi-Contact FLEXI-E 0.15 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.15sqmm double-strain-relief +0 +5 +5 +Connector_Wire +SolderWire-0.15sqmm_1x06_P4mm_D0.5mm_OD1.5mm +Soldered wire connection, for 6 times 0.15 mm² wires, basic insulation, conductor diameter 0.5mm, outer diameter 1.5mm, size source Multi-Contact FLEXI-E 0.15 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.15sqmm +0 +6 +6 +Connector_Wire +SolderWire-0.15sqmm_1x06_P4mm_D0.5mm_OD1.5mm_Relief +Soldered wire connection with feed through strain relief, for 6 times 0.15 mm² wires, basic insulation, conductor diameter 0.5mm, outer diameter 1.5mm, size source Multi-Contact FLEXI-E 0.15 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.15sqmm strain-relief +0 +6 +6 +Connector_Wire +SolderWire-0.15sqmm_1x06_P4mm_D0.5mm_OD1.5mm_Relief2x +Soldered wire connection with double feed through strain relief, for 6 times 0.15 mm² wires, basic insulation, conductor diameter 0.5mm, outer diameter 1.5mm, size source Multi-Contact FLEXI-E 0.15 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.15sqmm double-strain-relief +0 +6 +6 +Connector_Wire +SolderWire-0.25sqmm_1x01_D0.65mm_OD1.7mm +Soldered wire connection, for a single 0.25 mm² wire, basic insulation, conductor diameter 0.65mm, outer diameter 1.7mm, size source Multi-Contact FLEXI-E_0.25 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.25sqmm +0 +1 +1 +Connector_Wire +SolderWire-0.25sqmm_1x01_D0.65mm_OD1.7mm_Relief +Soldered wire connection with feed through strain relief, for a single 0.25 mm² wire, basic insulation, conductor diameter 0.65mm, outer diameter 1.7mm, size source Multi-Contact FLEXI-E_0.25 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.25sqmm strain-relief +0 +1 +1 +Connector_Wire +SolderWire-0.25sqmm_1x01_D0.65mm_OD1.7mm_Relief2x +Soldered wire connection with double feed through strain relief, for a single 0.25 mm² wire, basic insulation, conductor diameter 0.65mm, outer diameter 1.7mm, size source Multi-Contact FLEXI-E_0.25 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.25sqmm double-strain-relief +0 +1 +1 +Connector_Wire +SolderWire-0.25sqmm_1x01_D0.65mm_OD2mm +Soldered wire connection, for a single 0.25 mm² wire, reinforced insulation, conductor diameter 0.65mm, outer diameter 2mm, size source Multi-Contact FLEXI-2V 0.25 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.25sqmm +0 +1 +1 +Connector_Wire +SolderWire-0.25sqmm_1x01_D0.65mm_OD2mm_Relief +Soldered wire connection with feed through strain relief, for a single 0.25 mm² wire, reinforced insulation, conductor diameter 0.65mm, outer diameter 2mm, size source Multi-Contact FLEXI-2V 0.25 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.25sqmm strain-relief +0 +1 +1 +Connector_Wire +SolderWire-0.25sqmm_1x01_D0.65mm_OD2mm_Relief2x +Soldered wire connection with double feed through strain relief, for a single 0.25 mm² wire, reinforced insulation, conductor diameter 0.65mm, outer diameter 2mm, size source Multi-Contact FLEXI-2V 0.25 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.25sqmm double-strain-relief +0 +1 +1 +Connector_Wire +SolderWire-0.25sqmm_1x02_P4.2mm_D0.65mm_OD1.7mm +Soldered wire connection, for 2 times 0.25 mm² wires, basic insulation, conductor diameter 0.65mm, outer diameter 1.7mm, size source Multi-Contact FLEXI-E_0.25 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.25sqmm +0 +2 +2 +Connector_Wire +SolderWire-0.25sqmm_1x02_P4.2mm_D0.65mm_OD1.7mm_Relief +Soldered wire connection with feed through strain relief, for 2 times 0.25 mm² wires, basic insulation, conductor diameter 0.65mm, outer diameter 1.7mm, size source Multi-Contact FLEXI-E_0.25 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.25sqmm strain-relief +0 +2 +2 +Connector_Wire +SolderWire-0.25sqmm_1x02_P4.2mm_D0.65mm_OD1.7mm_Relief2x +Soldered wire connection with double feed through strain relief, for 2 times 0.25 mm² wires, basic insulation, conductor diameter 0.65mm, outer diameter 1.7mm, size source Multi-Contact FLEXI-E_0.25 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.25sqmm double-strain-relief +0 +2 +2 +Connector_Wire +SolderWire-0.25sqmm_1x02_P4.5mm_D0.65mm_OD2mm +Soldered wire connection, for 2 times 0.25 mm² wires, reinforced insulation, conductor diameter 0.65mm, outer diameter 2mm, size source Multi-Contact FLEXI-2V 0.25 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.25sqmm +0 +2 +2 +Connector_Wire +SolderWire-0.25sqmm_1x02_P4.5mm_D0.65mm_OD2mm_Relief +Soldered wire connection with feed through strain relief, for 2 times 0.25 mm² wires, reinforced insulation, conductor diameter 0.65mm, outer diameter 2mm, size source Multi-Contact FLEXI-2V 0.25 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.25sqmm strain-relief +0 +2 +2 +Connector_Wire +SolderWire-0.25sqmm_1x02_P4.5mm_D0.65mm_OD2mm_Relief2x +Soldered wire connection with double feed through strain relief, for 2 times 0.25 mm² wires, reinforced insulation, conductor diameter 0.65mm, outer diameter 2mm, size source Multi-Contact FLEXI-2V 0.25 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.25sqmm double-strain-relief +0 +2 +2 +Connector_Wire +SolderWire-0.25sqmm_1x03_P4.2mm_D0.65mm_OD1.7mm +Soldered wire connection, for 3 times 0.25 mm² wires, basic insulation, conductor diameter 0.65mm, outer diameter 1.7mm, size source Multi-Contact FLEXI-E_0.25 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.25sqmm +0 +3 +3 +Connector_Wire +SolderWire-0.25sqmm_1x03_P4.2mm_D0.65mm_OD1.7mm_Relief +Soldered wire connection with feed through strain relief, for 3 times 0.25 mm² wires, basic insulation, conductor diameter 0.65mm, outer diameter 1.7mm, size source Multi-Contact FLEXI-E_0.25 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.25sqmm strain-relief +0 +3 +3 +Connector_Wire +SolderWire-0.25sqmm_1x03_P4.2mm_D0.65mm_OD1.7mm_Relief2x +Soldered wire connection with double feed through strain relief, for 3 times 0.25 mm² wires, basic insulation, conductor diameter 0.65mm, outer diameter 1.7mm, size source Multi-Contact FLEXI-E_0.25 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.25sqmm double-strain-relief +0 +3 +3 +Connector_Wire +SolderWire-0.25sqmm_1x03_P4.5mm_D0.65mm_OD2mm +Soldered wire connection, for 3 times 0.25 mm² wires, reinforced insulation, conductor diameter 0.65mm, outer diameter 2mm, size source Multi-Contact FLEXI-2V 0.25 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.25sqmm +0 +3 +3 +Connector_Wire +SolderWire-0.25sqmm_1x03_P4.5mm_D0.65mm_OD2mm_Relief +Soldered wire connection with feed through strain relief, for 3 times 0.25 mm² wires, reinforced insulation, conductor diameter 0.65mm, outer diameter 2mm, size source Multi-Contact FLEXI-2V 0.25 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.25sqmm strain-relief +0 +3 +3 +Connector_Wire +SolderWire-0.25sqmm_1x03_P4.5mm_D0.65mm_OD2mm_Relief2x +Soldered wire connection with double feed through strain relief, for 3 times 0.25 mm² wires, reinforced insulation, conductor diameter 0.65mm, outer diameter 2mm, size source Multi-Contact FLEXI-2V 0.25 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.25sqmm double-strain-relief +0 +3 +3 +Connector_Wire +SolderWire-0.25sqmm_1x04_P4.2mm_D0.65mm_OD1.7mm +Soldered wire connection, for 4 times 0.25 mm² wires, basic insulation, conductor diameter 0.65mm, outer diameter 1.7mm, size source Multi-Contact FLEXI-E_0.25 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.25sqmm +0 +4 +4 +Connector_Wire +SolderWire-0.25sqmm_1x04_P4.2mm_D0.65mm_OD1.7mm_Relief +Soldered wire connection with feed through strain relief, for 4 times 0.25 mm² wires, basic insulation, conductor diameter 0.65mm, outer diameter 1.7mm, size source Multi-Contact FLEXI-E_0.25 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.25sqmm strain-relief +0 +4 +4 +Connector_Wire +SolderWire-0.25sqmm_1x04_P4.2mm_D0.65mm_OD1.7mm_Relief2x +Soldered wire connection with double feed through strain relief, for 4 times 0.25 mm² wires, basic insulation, conductor diameter 0.65mm, outer diameter 1.7mm, size source Multi-Contact FLEXI-E_0.25 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.25sqmm double-strain-relief +0 +4 +4 +Connector_Wire +SolderWire-0.25sqmm_1x04_P4.5mm_D0.65mm_OD2mm +Soldered wire connection, for 4 times 0.25 mm² wires, reinforced insulation, conductor diameter 0.65mm, outer diameter 2mm, size source Multi-Contact FLEXI-2V 0.25 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.25sqmm +0 +4 +4 +Connector_Wire +SolderWire-0.25sqmm_1x04_P4.5mm_D0.65mm_OD2mm_Relief +Soldered wire connection with feed through strain relief, for 4 times 0.25 mm² wires, reinforced insulation, conductor diameter 0.65mm, outer diameter 2mm, size source Multi-Contact FLEXI-2V 0.25 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.25sqmm strain-relief +0 +4 +4 +Connector_Wire +SolderWire-0.25sqmm_1x04_P4.5mm_D0.65mm_OD2mm_Relief2x +Soldered wire connection with double feed through strain relief, for 4 times 0.25 mm² wires, reinforced insulation, conductor diameter 0.65mm, outer diameter 2mm, size source Multi-Contact FLEXI-2V 0.25 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.25sqmm double-strain-relief +0 +4 +4 +Connector_Wire +SolderWire-0.25sqmm_1x05_P4.2mm_D0.65mm_OD1.7mm +Soldered wire connection, for 5 times 0.25 mm² wires, basic insulation, conductor diameter 0.65mm, outer diameter 1.7mm, size source Multi-Contact FLEXI-E_0.25 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.25sqmm +0 +5 +5 +Connector_Wire +SolderWire-0.25sqmm_1x05_P4.2mm_D0.65mm_OD1.7mm_Relief +Soldered wire connection with feed through strain relief, for 5 times 0.25 mm² wires, basic insulation, conductor diameter 0.65mm, outer diameter 1.7mm, size source Multi-Contact FLEXI-E_0.25 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.25sqmm strain-relief +0 +5 +5 +Connector_Wire +SolderWire-0.25sqmm_1x05_P4.2mm_D0.65mm_OD1.7mm_Relief2x +Soldered wire connection with double feed through strain relief, for 5 times 0.25 mm² wires, basic insulation, conductor diameter 0.65mm, outer diameter 1.7mm, size source Multi-Contact FLEXI-E_0.25 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.25sqmm double-strain-relief +0 +5 +5 +Connector_Wire +SolderWire-0.25sqmm_1x05_P4.5mm_D0.65mm_OD2mm +Soldered wire connection, for 5 times 0.25 mm² wires, reinforced insulation, conductor diameter 0.65mm, outer diameter 2mm, size source Multi-Contact FLEXI-2V 0.25 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.25sqmm +0 +5 +5 +Connector_Wire +SolderWire-0.25sqmm_1x05_P4.5mm_D0.65mm_OD2mm_Relief +Soldered wire connection with feed through strain relief, for 5 times 0.25 mm² wires, reinforced insulation, conductor diameter 0.65mm, outer diameter 2mm, size source Multi-Contact FLEXI-2V 0.25 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.25sqmm strain-relief +0 +5 +5 +Connector_Wire +SolderWire-0.25sqmm_1x05_P4.5mm_D0.65mm_OD2mm_Relief2x +Soldered wire connection with double feed through strain relief, for 5 times 0.25 mm² wires, reinforced insulation, conductor diameter 0.65mm, outer diameter 2mm, size source Multi-Contact FLEXI-2V 0.25 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.25sqmm double-strain-relief +0 +5 +5 +Connector_Wire +SolderWire-0.25sqmm_1x06_P4.2mm_D0.65mm_OD1.7mm +Soldered wire connection, for 6 times 0.25 mm² wires, basic insulation, conductor diameter 0.65mm, outer diameter 1.7mm, size source Multi-Contact FLEXI-E_0.25 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.25sqmm +0 +6 +6 +Connector_Wire +SolderWire-0.25sqmm_1x06_P4.2mm_D0.65mm_OD1.7mm_Relief +Soldered wire connection with feed through strain relief, for 6 times 0.25 mm² wires, basic insulation, conductor diameter 0.65mm, outer diameter 1.7mm, size source Multi-Contact FLEXI-E_0.25 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.25sqmm strain-relief +0 +6 +6 +Connector_Wire +SolderWire-0.25sqmm_1x06_P4.2mm_D0.65mm_OD1.7mm_Relief2x +Soldered wire connection with double feed through strain relief, for 6 times 0.25 mm² wires, basic insulation, conductor diameter 0.65mm, outer diameter 1.7mm, size source Multi-Contact FLEXI-E_0.25 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.25sqmm double-strain-relief +0 +6 +6 +Connector_Wire +SolderWire-0.25sqmm_1x06_P4.5mm_D0.65mm_OD2mm +Soldered wire connection, for 6 times 0.25 mm² wires, reinforced insulation, conductor diameter 0.65mm, outer diameter 2mm, size source Multi-Contact FLEXI-2V 0.25 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.25sqmm +0 +6 +6 +Connector_Wire +SolderWire-0.25sqmm_1x06_P4.5mm_D0.65mm_OD2mm_Relief +Soldered wire connection with feed through strain relief, for 6 times 0.25 mm² wires, reinforced insulation, conductor diameter 0.65mm, outer diameter 2mm, size source Multi-Contact FLEXI-2V 0.25 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.25sqmm strain-relief +0 +6 +6 +Connector_Wire +SolderWire-0.25sqmm_1x06_P4.5mm_D0.65mm_OD2mm_Relief2x +Soldered wire connection with double feed through strain relief, for 6 times 0.25 mm² wires, reinforced insulation, conductor diameter 0.65mm, outer diameter 2mm, size source Multi-Contact FLEXI-2V 0.25 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.25sqmm double-strain-relief +0 +6 +6 +Connector_Wire +SolderWire-0.75sqmm_1x01_D1.25mm_OD2.3mm +Soldered wire connection, for a single 0.75 mm² wire, basic insulation, conductor diameter 1.25mm, outer diameter 2.3mm, size source Multi-Contact FLEXI-E 0.75 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.75sqmm +0 +1 +1 +Connector_Wire +SolderWire-0.75sqmm_1x01_D1.25mm_OD2.3mm_Relief +Soldered wire connection with feed through strain relief, for a single 0.75 mm² wire, basic insulation, conductor diameter 1.25mm, outer diameter 2.3mm, size source Multi-Contact FLEXI-E 0.75 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.75sqmm strain-relief +0 +1 +1 +Connector_Wire +SolderWire-0.75sqmm_1x01_D1.25mm_OD2.3mm_Relief2x +Soldered wire connection with double feed through strain relief, for a single 0.75 mm² wire, basic insulation, conductor diameter 1.25mm, outer diameter 2.3mm, size source Multi-Contact FLEXI-E 0.75 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.75sqmm double-strain-relief +0 +1 +1 +Connector_Wire +SolderWire-0.75sqmm_1x01_D1.25mm_OD3.5mm +Soldered wire connection, for a single 0.75 mm² wire, reinforced insulation, conductor diameter 1.25mm, outer diameter 3.5mm, size source Multi-Contact FLEXI-xV 0.75 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.75sqmm +0 +1 +1 +Connector_Wire +SolderWire-0.75sqmm_1x01_D1.25mm_OD3.5mm_Relief +Soldered wire connection with feed through strain relief, for a single 0.75 mm² wire, reinforced insulation, conductor diameter 1.25mm, outer diameter 3.5mm, size source Multi-Contact FLEXI-xV 0.75 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.75sqmm strain-relief +0 +1 +1 +Connector_Wire +SolderWire-0.75sqmm_1x01_D1.25mm_OD3.5mm_Relief2x +Soldered wire connection with double feed through strain relief, for a single 0.75 mm² wire, reinforced insulation, conductor diameter 1.25mm, outer diameter 3.5mm, size source Multi-Contact FLEXI-xV 0.75 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.75sqmm double-strain-relief +0 +1 +1 +Connector_Wire +SolderWire-0.75sqmm_1x02_P4.8mm_D1.25mm_OD2.3mm +Soldered wire connection, for 2 times 0.75 mm² wires, basic insulation, conductor diameter 1.25mm, outer diameter 2.3mm, size source Multi-Contact FLEXI-E 0.75 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.75sqmm +0 +2 +2 +Connector_Wire +SolderWire-0.75sqmm_1x02_P4.8mm_D1.25mm_OD2.3mm_Relief +Soldered wire connection with feed through strain relief, for 2 times 0.75 mm² wires, basic insulation, conductor diameter 1.25mm, outer diameter 2.3mm, size source Multi-Contact FLEXI-E 0.75 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.75sqmm strain-relief +0 +2 +2 +Connector_Wire +SolderWire-0.75sqmm_1x02_P4.8mm_D1.25mm_OD2.3mm_Relief2x +Soldered wire connection with double feed through strain relief, for 2 times 0.75 mm² wires, basic insulation, conductor diameter 1.25mm, outer diameter 2.3mm, size source Multi-Contact FLEXI-E 0.75 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.75sqmm double-strain-relief +0 +2 +2 +Connector_Wire +SolderWire-0.75sqmm_1x02_P7mm_D1.25mm_OD3.5mm +Soldered wire connection, for 2 times 0.75 mm² wires, reinforced insulation, conductor diameter 1.25mm, outer diameter 3.5mm, size source Multi-Contact FLEXI-xV 0.75 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.75sqmm +0 +2 +2 +Connector_Wire +SolderWire-0.75sqmm_1x02_P7mm_D1.25mm_OD3.5mm_Relief +Soldered wire connection with feed through strain relief, for 2 times 0.75 mm² wires, reinforced insulation, conductor diameter 1.25mm, outer diameter 3.5mm, size source Multi-Contact FLEXI-xV 0.75 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.75sqmm strain-relief +0 +2 +2 +Connector_Wire +SolderWire-0.75sqmm_1x02_P7mm_D1.25mm_OD3.5mm_Relief2x +Soldered wire connection with double feed through strain relief, for 2 times 0.75 mm² wires, reinforced insulation, conductor diameter 1.25mm, outer diameter 3.5mm, size source Multi-Contact FLEXI-xV 0.75 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.75sqmm double-strain-relief +0 +2 +2 +Connector_Wire +SolderWire-0.75sqmm_1x03_P4.8mm_D1.25mm_OD2.3mm +Soldered wire connection, for 3 times 0.75 mm² wires, basic insulation, conductor diameter 1.25mm, outer diameter 2.3mm, size source Multi-Contact FLEXI-E 0.75 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.75sqmm +0 +3 +3 +Connector_Wire +SolderWire-0.75sqmm_1x03_P4.8mm_D1.25mm_OD2.3mm_Relief +Soldered wire connection with feed through strain relief, for 3 times 0.75 mm² wires, basic insulation, conductor diameter 1.25mm, outer diameter 2.3mm, size source Multi-Contact FLEXI-E 0.75 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.75sqmm strain-relief +0 +3 +3 +Connector_Wire +SolderWire-0.75sqmm_1x03_P4.8mm_D1.25mm_OD2.3mm_Relief2x +Soldered wire connection with double feed through strain relief, for 3 times 0.75 mm² wires, basic insulation, conductor diameter 1.25mm, outer diameter 2.3mm, size source Multi-Contact FLEXI-E 0.75 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.75sqmm double-strain-relief +0 +3 +3 +Connector_Wire +SolderWire-0.75sqmm_1x03_P7mm_D1.25mm_OD3.5mm +Soldered wire connection, for 3 times 0.75 mm² wires, reinforced insulation, conductor diameter 1.25mm, outer diameter 3.5mm, size source Multi-Contact FLEXI-xV 0.75 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.75sqmm +0 +3 +3 +Connector_Wire +SolderWire-0.75sqmm_1x03_P7mm_D1.25mm_OD3.5mm_Relief +Soldered wire connection with feed through strain relief, for 3 times 0.75 mm² wires, reinforced insulation, conductor diameter 1.25mm, outer diameter 3.5mm, size source Multi-Contact FLEXI-xV 0.75 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.75sqmm strain-relief +0 +3 +3 +Connector_Wire +SolderWire-0.75sqmm_1x03_P7mm_D1.25mm_OD3.5mm_Relief2x +Soldered wire connection with double feed through strain relief, for 3 times 0.75 mm² wires, reinforced insulation, conductor diameter 1.25mm, outer diameter 3.5mm, size source Multi-Contact FLEXI-xV 0.75 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.75sqmm double-strain-relief +0 +3 +3 +Connector_Wire +SolderWire-0.75sqmm_1x04_P4.8mm_D1.25mm_OD2.3mm +Soldered wire connection, for 4 times 0.75 mm² wires, basic insulation, conductor diameter 1.25mm, outer diameter 2.3mm, size source Multi-Contact FLEXI-E 0.75 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.75sqmm +0 +4 +4 +Connector_Wire +SolderWire-0.75sqmm_1x04_P4.8mm_D1.25mm_OD2.3mm_Relief +Soldered wire connection with feed through strain relief, for 4 times 0.75 mm² wires, basic insulation, conductor diameter 1.25mm, outer diameter 2.3mm, size source Multi-Contact FLEXI-E 0.75 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.75sqmm strain-relief +0 +4 +4 +Connector_Wire +SolderWire-0.75sqmm_1x04_P4.8mm_D1.25mm_OD2.3mm_Relief2x +Soldered wire connection with double feed through strain relief, for 4 times 0.75 mm² wires, basic insulation, conductor diameter 1.25mm, outer diameter 2.3mm, size source Multi-Contact FLEXI-E 0.75 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.75sqmm double-strain-relief +0 +4 +4 +Connector_Wire +SolderWire-0.75sqmm_1x04_P7mm_D1.25mm_OD3.5mm +Soldered wire connection, for 4 times 0.75 mm² wires, reinforced insulation, conductor diameter 1.25mm, outer diameter 3.5mm, size source Multi-Contact FLEXI-xV 0.75 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.75sqmm +0 +4 +4 +Connector_Wire +SolderWire-0.75sqmm_1x04_P7mm_D1.25mm_OD3.5mm_Relief +Soldered wire connection with feed through strain relief, for 4 times 0.75 mm² wires, reinforced insulation, conductor diameter 1.25mm, outer diameter 3.5mm, size source Multi-Contact FLEXI-xV 0.75 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.75sqmm strain-relief +0 +4 +4 +Connector_Wire +SolderWire-0.75sqmm_1x04_P7mm_D1.25mm_OD3.5mm_Relief2x +Soldered wire connection with double feed through strain relief, for 4 times 0.75 mm² wires, reinforced insulation, conductor diameter 1.25mm, outer diameter 3.5mm, size source Multi-Contact FLEXI-xV 0.75 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.75sqmm double-strain-relief +0 +4 +4 +Connector_Wire +SolderWire-0.75sqmm_1x05_P4.8mm_D1.25mm_OD2.3mm +Soldered wire connection, for 5 times 0.75 mm² wires, basic insulation, conductor diameter 1.25mm, outer diameter 2.3mm, size source Multi-Contact FLEXI-E 0.75 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.75sqmm +0 +5 +5 +Connector_Wire +SolderWire-0.75sqmm_1x05_P4.8mm_D1.25mm_OD2.3mm_Relief +Soldered wire connection with feed through strain relief, for 5 times 0.75 mm² wires, basic insulation, conductor diameter 1.25mm, outer diameter 2.3mm, size source Multi-Contact FLEXI-E 0.75 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.75sqmm strain-relief +0 +5 +5 +Connector_Wire +SolderWire-0.75sqmm_1x05_P4.8mm_D1.25mm_OD2.3mm_Relief2x +Soldered wire connection with double feed through strain relief, for 5 times 0.75 mm² wires, basic insulation, conductor diameter 1.25mm, outer diameter 2.3mm, size source Multi-Contact FLEXI-E 0.75 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.75sqmm double-strain-relief +0 +5 +5 +Connector_Wire +SolderWire-0.75sqmm_1x05_P7mm_D1.25mm_OD3.5mm +Soldered wire connection, for 5 times 0.75 mm² wires, reinforced insulation, conductor diameter 1.25mm, outer diameter 3.5mm, size source Multi-Contact FLEXI-xV 0.75 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.75sqmm +0 +5 +5 +Connector_Wire +SolderWire-0.75sqmm_1x05_P7mm_D1.25mm_OD3.5mm_Relief +Soldered wire connection with feed through strain relief, for 5 times 0.75 mm² wires, reinforced insulation, conductor diameter 1.25mm, outer diameter 3.5mm, size source Multi-Contact FLEXI-xV 0.75 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.75sqmm strain-relief +0 +5 +5 +Connector_Wire +SolderWire-0.75sqmm_1x05_P7mm_D1.25mm_OD3.5mm_Relief2x +Soldered wire connection with double feed through strain relief, for 5 times 0.75 mm² wires, reinforced insulation, conductor diameter 1.25mm, outer diameter 3.5mm, size source Multi-Contact FLEXI-xV 0.75 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.75sqmm double-strain-relief +0 +5 +5 +Connector_Wire +SolderWire-0.75sqmm_1x06_P4.8mm_D1.25mm_OD2.3mm +Soldered wire connection, for 6 times 0.75 mm² wires, basic insulation, conductor diameter 1.25mm, outer diameter 2.3mm, size source Multi-Contact FLEXI-E 0.75 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.75sqmm +0 +6 +6 +Connector_Wire +SolderWire-0.75sqmm_1x06_P4.8mm_D1.25mm_OD2.3mm_Relief +Soldered wire connection with feed through strain relief, for 6 times 0.75 mm² wires, basic insulation, conductor diameter 1.25mm, outer diameter 2.3mm, size source Multi-Contact FLEXI-E 0.75 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.75sqmm strain-relief +0 +6 +6 +Connector_Wire +SolderWire-0.75sqmm_1x06_P4.8mm_D1.25mm_OD2.3mm_Relief2x +Soldered wire connection with double feed through strain relief, for 6 times 0.75 mm² wires, basic insulation, conductor diameter 1.25mm, outer diameter 2.3mm, size source Multi-Contact FLEXI-E 0.75 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.75sqmm double-strain-relief +0 +6 +6 +Connector_Wire +SolderWire-0.75sqmm_1x06_P7mm_D1.25mm_OD3.5mm +Soldered wire connection, for 6 times 0.75 mm² wires, reinforced insulation, conductor diameter 1.25mm, outer diameter 3.5mm, size source Multi-Contact FLEXI-xV 0.75 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.75sqmm +0 +6 +6 +Connector_Wire +SolderWire-0.75sqmm_1x06_P7mm_D1.25mm_OD3.5mm_Relief +Soldered wire connection with feed through strain relief, for 6 times 0.75 mm² wires, reinforced insulation, conductor diameter 1.25mm, outer diameter 3.5mm, size source Multi-Contact FLEXI-xV 0.75 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.75sqmm strain-relief +0 +6 +6 +Connector_Wire +SolderWire-0.75sqmm_1x06_P7mm_D1.25mm_OD3.5mm_Relief2x +Soldered wire connection with double feed through strain relief, for 6 times 0.75 mm² wires, reinforced insulation, conductor diameter 1.25mm, outer diameter 3.5mm, size source Multi-Contact FLEXI-xV 0.75 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.75sqmm double-strain-relief +0 +6 +6 +Connector_Wire +SolderWire-0.127sqmm_1x01_D0.48mm_OD1mm +Soldered wire connection, for a single 0.127 mm² wire, basic insulation, conductor diameter 0.48mm, outer diameter 1mm, size source Multi-Contact FLEXI-E/HK 0.127 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.127sqmm +0 +1 +1 +Connector_Wire +SolderWire-0.127sqmm_1x01_D0.48mm_OD1mm_Relief +Soldered wire connection with feed through strain relief, for a single 0.127 mm² wire, basic insulation, conductor diameter 0.48mm, outer diameter 1mm, size source Multi-Contact FLEXI-E/HK 0.127 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.127sqmm strain-relief +0 +1 +1 +Connector_Wire +SolderWire-0.127sqmm_1x01_D0.48mm_OD1mm_Relief2x +Soldered wire connection with double feed through strain relief, for a single 0.127 mm² wire, basic insulation, conductor diameter 0.48mm, outer diameter 1mm, size source Multi-Contact FLEXI-E/HK 0.127 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.127sqmm double-strain-relief +0 +1 +1 +Connector_Wire +SolderWire-0.127sqmm_1x02_P3.7mm_D0.48mm_OD1mm +Soldered wire connection, for 2 times 0.127 mm² wires, basic insulation, conductor diameter 0.48mm, outer diameter 1mm, size source Multi-Contact FLEXI-E/HK 0.127 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.127sqmm +0 +2 +2 +Connector_Wire +SolderWire-0.127sqmm_1x02_P3.7mm_D0.48mm_OD1mm_Relief +Soldered wire connection with feed through strain relief, for 2 times 0.127 mm² wires, basic insulation, conductor diameter 0.48mm, outer diameter 1mm, size source Multi-Contact FLEXI-E/HK 0.127 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.127sqmm strain-relief +0 +2 +2 +Connector_Wire +SolderWire-0.127sqmm_1x02_P3.7mm_D0.48mm_OD1mm_Relief2x +Soldered wire connection with double feed through strain relief, for 2 times 0.127 mm² wires, basic insulation, conductor diameter 0.48mm, outer diameter 1mm, size source Multi-Contact FLEXI-E/HK 0.127 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.127sqmm double-strain-relief +0 +2 +2 +Connector_Wire +SolderWire-0.127sqmm_1x03_P3.7mm_D0.48mm_OD1mm +Soldered wire connection, for 3 times 0.127 mm² wires, basic insulation, conductor diameter 0.48mm, outer diameter 1mm, size source Multi-Contact FLEXI-E/HK 0.127 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.127sqmm +0 +3 +3 +Connector_Wire +SolderWire-0.127sqmm_1x03_P3.7mm_D0.48mm_OD1mm_Relief +Soldered wire connection with feed through strain relief, for 3 times 0.127 mm² wires, basic insulation, conductor diameter 0.48mm, outer diameter 1mm, size source Multi-Contact FLEXI-E/HK 0.127 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.127sqmm strain-relief +0 +3 +3 +Connector_Wire +SolderWire-0.127sqmm_1x03_P3.7mm_D0.48mm_OD1mm_Relief2x +Soldered wire connection with double feed through strain relief, for 3 times 0.127 mm² wires, basic insulation, conductor diameter 0.48mm, outer diameter 1mm, size source Multi-Contact FLEXI-E/HK 0.127 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.127sqmm double-strain-relief +0 +3 +3 +Connector_Wire +SolderWire-0.127sqmm_1x04_P3.7mm_D0.48mm_OD1mm +Soldered wire connection, for 4 times 0.127 mm² wires, basic insulation, conductor diameter 0.48mm, outer diameter 1mm, size source Multi-Contact FLEXI-E/HK 0.127 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.127sqmm +0 +4 +4 +Connector_Wire +SolderWire-0.127sqmm_1x04_P3.7mm_D0.48mm_OD1mm_Relief +Soldered wire connection with feed through strain relief, for 4 times 0.127 mm² wires, basic insulation, conductor diameter 0.48mm, outer diameter 1mm, size source Multi-Contact FLEXI-E/HK 0.127 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.127sqmm strain-relief +0 +4 +4 +Connector_Wire +SolderWire-0.127sqmm_1x04_P3.7mm_D0.48mm_OD1mm_Relief2x +Soldered wire connection with double feed through strain relief, for 4 times 0.127 mm² wires, basic insulation, conductor diameter 0.48mm, outer diameter 1mm, size source Multi-Contact FLEXI-E/HK 0.127 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.127sqmm double-strain-relief +0 +4 +4 +Connector_Wire +SolderWire-0.127sqmm_1x05_P3.7mm_D0.48mm_OD1mm +Soldered wire connection, for 5 times 0.127 mm² wires, basic insulation, conductor diameter 0.48mm, outer diameter 1mm, size source Multi-Contact FLEXI-E/HK 0.127 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.127sqmm +0 +5 +5 +Connector_Wire +SolderWire-0.127sqmm_1x05_P3.7mm_D0.48mm_OD1mm_Relief +Soldered wire connection with feed through strain relief, for 5 times 0.127 mm² wires, basic insulation, conductor diameter 0.48mm, outer diameter 1mm, size source Multi-Contact FLEXI-E/HK 0.127 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.127sqmm strain-relief +0 +5 +5 +Connector_Wire +SolderWire-0.127sqmm_1x05_P3.7mm_D0.48mm_OD1mm_Relief2x +Soldered wire connection with double feed through strain relief, for 5 times 0.127 mm² wires, basic insulation, conductor diameter 0.48mm, outer diameter 1mm, size source Multi-Contact FLEXI-E/HK 0.127 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.127sqmm double-strain-relief +0 +5 +5 +Connector_Wire +SolderWire-0.127sqmm_1x06_P3.7mm_D0.48mm_OD1mm +Soldered wire connection, for 6 times 0.127 mm² wires, basic insulation, conductor diameter 0.48mm, outer diameter 1mm, size source Multi-Contact FLEXI-E/HK 0.127 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.127sqmm +0 +6 +6 +Connector_Wire +SolderWire-0.127sqmm_1x06_P3.7mm_D0.48mm_OD1mm_Relief +Soldered wire connection with feed through strain relief, for 6 times 0.127 mm² wires, basic insulation, conductor diameter 0.48mm, outer diameter 1mm, size source Multi-Contact FLEXI-E/HK 0.127 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.127sqmm strain-relief +0 +6 +6 +Connector_Wire +SolderWire-0.127sqmm_1x06_P3.7mm_D0.48mm_OD1mm_Relief2x +Soldered wire connection with double feed through strain relief, for 6 times 0.127 mm² wires, basic insulation, conductor diameter 0.48mm, outer diameter 1mm, size source Multi-Contact FLEXI-E/HK 0.127 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 0.127sqmm double-strain-relief +0 +6 +6 +Connector_Wire +SolderWire-1.5sqmm_1x01_D1.7mm_OD3.9mm +Soldered wire connection, for a single 1.5 mm² wire, reinforced insulation, conductor diameter 1.7mm, outer diameter 3.9mm, size source Multi-Contact FLEXI-xV 1.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1.5sqmm +0 +1 +1 +Connector_Wire +SolderWire-1.5sqmm_1x01_D1.7mm_OD3.9mm_Relief +Soldered wire connection with feed through strain relief, for a single 1.5 mm² wire, reinforced insulation, conductor diameter 1.7mm, outer diameter 3.9mm, size source Multi-Contact FLEXI-xV 1.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1.5sqmm strain-relief +0 +1 +1 +Connector_Wire +SolderWire-1.5sqmm_1x01_D1.7mm_OD3.9mm_Relief2x +Soldered wire connection with double feed through strain relief, for a single 1.5 mm² wire, reinforced insulation, conductor diameter 1.7mm, outer diameter 3.9mm, size source Multi-Contact FLEXI-xV 1.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1.5sqmm double-strain-relief +0 +1 +1 +Connector_Wire +SolderWire-1.5sqmm_1x01_D1.7mm_OD3mm +Soldered wire connection, for a single 1.5 mm² wire, basic insulation, conductor diameter 1.7mm, outer diameter 3mm, size source Multi-Contact FLEXI-E 1.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1.5sqmm +0 +1 +1 +Connector_Wire +SolderWire-1.5sqmm_1x01_D1.7mm_OD3mm_Relief +Soldered wire connection with feed through strain relief, for a single 1.5 mm² wire, basic insulation, conductor diameter 1.7mm, outer diameter 3mm, size source Multi-Contact FLEXI-E 1.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1.5sqmm strain-relief +0 +1 +1 +Connector_Wire +SolderWire-1.5sqmm_1x01_D1.7mm_OD3mm_Relief2x +Soldered wire connection with double feed through strain relief, for a single 1.5 mm² wire, basic insulation, conductor diameter 1.7mm, outer diameter 3mm, size source Multi-Contact FLEXI-E 1.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1.5sqmm double-strain-relief +0 +1 +1 +Connector_Wire +SolderWire-1.5sqmm_1x02_P6mm_D1.7mm_OD3mm +Soldered wire connection, for 2 times 1.5 mm² wires, basic insulation, conductor diameter 1.7mm, outer diameter 3mm, size source Multi-Contact FLEXI-E 1.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1.5sqmm +0 +2 +2 +Connector_Wire +SolderWire-1.5sqmm_1x02_P6mm_D1.7mm_OD3mm_Relief +Soldered wire connection with feed through strain relief, for 2 times 1.5 mm² wires, basic insulation, conductor diameter 1.7mm, outer diameter 3mm, size source Multi-Contact FLEXI-E 1.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1.5sqmm strain-relief +0 +2 +2 +Connector_Wire +SolderWire-1.5sqmm_1x02_P6mm_D1.7mm_OD3mm_Relief2x +Soldered wire connection with double feed through strain relief, for 2 times 1.5 mm² wires, basic insulation, conductor diameter 1.7mm, outer diameter 3mm, size source Multi-Contact FLEXI-E 1.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1.5sqmm double-strain-relief +0 +2 +2 +Connector_Wire +SolderWire-1.5sqmm_1x02_P7.8mm_D1.7mm_OD3.9mm +Soldered wire connection, for 2 times 1.5 mm² wires, reinforced insulation, conductor diameter 1.7mm, outer diameter 3.9mm, size source Multi-Contact FLEXI-xV 1.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1.5sqmm +0 +2 +2 +Connector_Wire +SolderWire-1.5sqmm_1x02_P7.8mm_D1.7mm_OD3.9mm_Relief +Soldered wire connection with feed through strain relief, for 2 times 1.5 mm² wires, reinforced insulation, conductor diameter 1.7mm, outer diameter 3.9mm, size source Multi-Contact FLEXI-xV 1.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1.5sqmm strain-relief +0 +2 +2 +Connector_Wire +SolderWire-1.5sqmm_1x02_P7.8mm_D1.7mm_OD3.9mm_Relief2x +Soldered wire connection with double feed through strain relief, for 2 times 1.5 mm² wires, reinforced insulation, conductor diameter 1.7mm, outer diameter 3.9mm, size source Multi-Contact FLEXI-xV 1.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1.5sqmm double-strain-relief +0 +2 +2 +Connector_Wire +SolderWire-1.5sqmm_1x03_P6mm_D1.7mm_OD3mm +Soldered wire connection, for 3 times 1.5 mm² wires, basic insulation, conductor diameter 1.7mm, outer diameter 3mm, size source Multi-Contact FLEXI-E 1.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1.5sqmm +0 +3 +3 +Connector_Wire +SolderWire-1.5sqmm_1x03_P6mm_D1.7mm_OD3mm_Relief +Soldered wire connection with feed through strain relief, for 3 times 1.5 mm² wires, basic insulation, conductor diameter 1.7mm, outer diameter 3mm, size source Multi-Contact FLEXI-E 1.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1.5sqmm strain-relief +0 +3 +3 +Connector_Wire +SolderWire-1.5sqmm_1x03_P6mm_D1.7mm_OD3mm_Relief2x +Soldered wire connection with double feed through strain relief, for 3 times 1.5 mm² wires, basic insulation, conductor diameter 1.7mm, outer diameter 3mm, size source Multi-Contact FLEXI-E 1.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1.5sqmm double-strain-relief +0 +3 +3 +Connector_Wire +SolderWire-1.5sqmm_1x03_P7.8mm_D1.7mm_OD3.9mm +Soldered wire connection, for 3 times 1.5 mm² wires, reinforced insulation, conductor diameter 1.7mm, outer diameter 3.9mm, size source Multi-Contact FLEXI-xV 1.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1.5sqmm +0 +3 +3 +Connector_Wire +SolderWire-1.5sqmm_1x03_P7.8mm_D1.7mm_OD3.9mm_Relief +Soldered wire connection with feed through strain relief, for 3 times 1.5 mm² wires, reinforced insulation, conductor diameter 1.7mm, outer diameter 3.9mm, size source Multi-Contact FLEXI-xV 1.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1.5sqmm strain-relief +0 +3 +3 +Connector_Wire +SolderWire-1.5sqmm_1x03_P7.8mm_D1.7mm_OD3.9mm_Relief2x +Soldered wire connection with double feed through strain relief, for 3 times 1.5 mm² wires, reinforced insulation, conductor diameter 1.7mm, outer diameter 3.9mm, size source Multi-Contact FLEXI-xV 1.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1.5sqmm double-strain-relief +0 +3 +3 +Connector_Wire +SolderWire-1.5sqmm_1x04_P6mm_D1.7mm_OD3mm +Soldered wire connection, for 4 times 1.5 mm² wires, basic insulation, conductor diameter 1.7mm, outer diameter 3mm, size source Multi-Contact FLEXI-E 1.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1.5sqmm +0 +4 +4 +Connector_Wire +SolderWire-1.5sqmm_1x04_P6mm_D1.7mm_OD3mm_Relief +Soldered wire connection with feed through strain relief, for 4 times 1.5 mm² wires, basic insulation, conductor diameter 1.7mm, outer diameter 3mm, size source Multi-Contact FLEXI-E 1.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1.5sqmm strain-relief +0 +4 +4 +Connector_Wire +SolderWire-1.5sqmm_1x04_P6mm_D1.7mm_OD3mm_Relief2x +Soldered wire connection with double feed through strain relief, for 4 times 1.5 mm² wires, basic insulation, conductor diameter 1.7mm, outer diameter 3mm, size source Multi-Contact FLEXI-E 1.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1.5sqmm double-strain-relief +0 +4 +4 +Connector_Wire +SolderWire-1.5sqmm_1x04_P7.8mm_D1.7mm_OD3.9mm +Soldered wire connection, for 4 times 1.5 mm² wires, reinforced insulation, conductor diameter 1.7mm, outer diameter 3.9mm, size source Multi-Contact FLEXI-xV 1.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1.5sqmm +0 +4 +4 +Connector_Wire +SolderWire-1.5sqmm_1x04_P7.8mm_D1.7mm_OD3.9mm_Relief +Soldered wire connection with feed through strain relief, for 4 times 1.5 mm² wires, reinforced insulation, conductor diameter 1.7mm, outer diameter 3.9mm, size source Multi-Contact FLEXI-xV 1.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1.5sqmm strain-relief +0 +4 +4 +Connector_Wire +SolderWire-1.5sqmm_1x04_P7.8mm_D1.7mm_OD3.9mm_Relief2x +Soldered wire connection with double feed through strain relief, for 4 times 1.5 mm² wires, reinforced insulation, conductor diameter 1.7mm, outer diameter 3.9mm, size source Multi-Contact FLEXI-xV 1.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1.5sqmm double-strain-relief +0 +4 +4 +Connector_Wire +SolderWire-1.5sqmm_1x05_P6mm_D1.7mm_OD3mm +Soldered wire connection, for 5 times 1.5 mm² wires, basic insulation, conductor diameter 1.7mm, outer diameter 3mm, size source Multi-Contact FLEXI-E 1.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1.5sqmm +0 +5 +5 +Connector_Wire +SolderWire-1.5sqmm_1x05_P6mm_D1.7mm_OD3mm_Relief +Soldered wire connection with feed through strain relief, for 5 times 1.5 mm² wires, basic insulation, conductor diameter 1.7mm, outer diameter 3mm, size source Multi-Contact FLEXI-E 1.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1.5sqmm strain-relief +0 +5 +5 +Connector_Wire +SolderWire-1.5sqmm_1x05_P6mm_D1.7mm_OD3mm_Relief2x +Soldered wire connection with double feed through strain relief, for 5 times 1.5 mm² wires, basic insulation, conductor diameter 1.7mm, outer diameter 3mm, size source Multi-Contact FLEXI-E 1.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1.5sqmm double-strain-relief +0 +5 +5 +Connector_Wire +SolderWire-1.5sqmm_1x05_P7.8mm_D1.7mm_OD3.9mm +Soldered wire connection, for 5 times 1.5 mm² wires, reinforced insulation, conductor diameter 1.7mm, outer diameter 3.9mm, size source Multi-Contact FLEXI-xV 1.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1.5sqmm +0 +5 +5 +Connector_Wire +SolderWire-1.5sqmm_1x05_P7.8mm_D1.7mm_OD3.9mm_Relief +Soldered wire connection with feed through strain relief, for 5 times 1.5 mm² wires, reinforced insulation, conductor diameter 1.7mm, outer diameter 3.9mm, size source Multi-Contact FLEXI-xV 1.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1.5sqmm strain-relief +0 +5 +5 +Connector_Wire +SolderWire-1.5sqmm_1x05_P7.8mm_D1.7mm_OD3.9mm_Relief2x +Soldered wire connection with double feed through strain relief, for 5 times 1.5 mm² wires, reinforced insulation, conductor diameter 1.7mm, outer diameter 3.9mm, size source Multi-Contact FLEXI-xV 1.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1.5sqmm double-strain-relief +0 +5 +5 +Connector_Wire +SolderWire-1.5sqmm_1x06_P6mm_D1.7mm_OD3mm +Soldered wire connection, for 6 times 1.5 mm² wires, basic insulation, conductor diameter 1.7mm, outer diameter 3mm, size source Multi-Contact FLEXI-E 1.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1.5sqmm +0 +6 +6 +Connector_Wire +SolderWire-1.5sqmm_1x06_P6mm_D1.7mm_OD3mm_Relief +Soldered wire connection with feed through strain relief, for 6 times 1.5 mm² wires, basic insulation, conductor diameter 1.7mm, outer diameter 3mm, size source Multi-Contact FLEXI-E 1.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1.5sqmm strain-relief +0 +6 +6 +Connector_Wire +SolderWire-1.5sqmm_1x06_P6mm_D1.7mm_OD3mm_Relief2x +Soldered wire connection with double feed through strain relief, for 6 times 1.5 mm² wires, basic insulation, conductor diameter 1.7mm, outer diameter 3mm, size source Multi-Contact FLEXI-E 1.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1.5sqmm double-strain-relief +0 +6 +6 +Connector_Wire +SolderWire-1.5sqmm_1x06_P7.8mm_D1.7mm_OD3.9mm +Soldered wire connection, for 6 times 1.5 mm² wires, reinforced insulation, conductor diameter 1.7mm, outer diameter 3.9mm, size source Multi-Contact FLEXI-xV 1.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1.5sqmm +0 +6 +6 +Connector_Wire +SolderWire-1.5sqmm_1x06_P7.8mm_D1.7mm_OD3.9mm_Relief +Soldered wire connection with feed through strain relief, for 6 times 1.5 mm² wires, reinforced insulation, conductor diameter 1.7mm, outer diameter 3.9mm, size source Multi-Contact FLEXI-xV 1.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1.5sqmm strain-relief +0 +6 +6 +Connector_Wire +SolderWire-1.5sqmm_1x06_P7.8mm_D1.7mm_OD3.9mm_Relief2x +Soldered wire connection with double feed through strain relief, for 6 times 1.5 mm² wires, reinforced insulation, conductor diameter 1.7mm, outer diameter 3.9mm, size source Multi-Contact FLEXI-xV 1.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1.5sqmm double-strain-relief +0 +6 +6 +Connector_Wire +SolderWire-1sqmm_1x01_D1.4mm_OD2.7mm +Soldered wire connection, for a single 1 mm² wire, basic insulation, conductor diameter 1.4mm, outer diameter 2.7mm, size source Multi-Contact FLEXI-E 1.0 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1sqmm +0 +1 +1 +Connector_Wire +SolderWire-1sqmm_1x01_D1.4mm_OD2.7mm_Relief +Soldered wire connection with feed through strain relief, for a single 1 mm² wire, basic insulation, conductor diameter 1.4mm, outer diameter 2.7mm, size source Multi-Contact FLEXI-E 1.0 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1sqmm strain-relief +0 +1 +1 +Connector_Wire +SolderWire-1sqmm_1x01_D1.4mm_OD2.7mm_Relief2x +Soldered wire connection with double feed through strain relief, for a single 1 mm² wire, basic insulation, conductor diameter 1.4mm, outer diameter 2.7mm, size source Multi-Contact FLEXI-E 1.0 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1sqmm double-strain-relief +0 +1 +1 +Connector_Wire +SolderWire-1sqmm_1x01_D1.4mm_OD3.9mm +Soldered wire connection, for a single 1 mm² wire, reinforced insulation, conductor diameter 1.4mm, outer diameter 3.9mm, size source Multi-Contact FLEXI-xV 1.0 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1sqmm +0 +1 +1 +Connector_Wire +SolderWire-1sqmm_1x01_D1.4mm_OD3.9mm_Relief +Soldered wire connection with feed through strain relief, for a single 1 mm² wire, reinforced insulation, conductor diameter 1.4mm, outer diameter 3.9mm, size source Multi-Contact FLEXI-xV 1.0 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1sqmm strain-relief +0 +1 +1 +Connector_Wire +SolderWire-1sqmm_1x01_D1.4mm_OD3.9mm_Relief2x +Soldered wire connection with double feed through strain relief, for a single 1 mm² wire, reinforced insulation, conductor diameter 1.4mm, outer diameter 3.9mm, size source Multi-Contact FLEXI-xV 1.0 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1sqmm double-strain-relief +0 +1 +1 +Connector_Wire +SolderWire-1sqmm_1x02_P5.4mm_D1.4mm_OD2.7mm +Soldered wire connection, for 2 times 1 mm² wires, basic insulation, conductor diameter 1.4mm, outer diameter 2.7mm, size source Multi-Contact FLEXI-E 1.0 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1sqmm +0 +2 +2 +Connector_Wire +SolderWire-1sqmm_1x02_P5.4mm_D1.4mm_OD2.7mm_Relief +Soldered wire connection with feed through strain relief, for 2 times 1 mm² wires, basic insulation, conductor diameter 1.4mm, outer diameter 2.7mm, size source Multi-Contact FLEXI-E 1.0 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1sqmm strain-relief +0 +2 +2 +Connector_Wire +SolderWire-1sqmm_1x02_P5.4mm_D1.4mm_OD2.7mm_Relief2x +Soldered wire connection with double feed through strain relief, for 2 times 1 mm² wires, basic insulation, conductor diameter 1.4mm, outer diameter 2.7mm, size source Multi-Contact FLEXI-E 1.0 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1sqmm double-strain-relief +0 +2 +2 +Connector_Wire +SolderWire-1sqmm_1x02_P7.8mm_D1.4mm_OD3.9mm +Soldered wire connection, for 2 times 1 mm² wires, reinforced insulation, conductor diameter 1.4mm, outer diameter 3.9mm, size source Multi-Contact FLEXI-xV 1.0 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1sqmm +0 +2 +2 +Connector_Wire +SolderWire-1sqmm_1x02_P7.8mm_D1.4mm_OD3.9mm_Relief +Soldered wire connection with feed through strain relief, for 2 times 1 mm² wires, reinforced insulation, conductor diameter 1.4mm, outer diameter 3.9mm, size source Multi-Contact FLEXI-xV 1.0 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1sqmm strain-relief +0 +2 +2 +Connector_Wire +SolderWire-1sqmm_1x02_P7.8mm_D1.4mm_OD3.9mm_Relief2x +Soldered wire connection with double feed through strain relief, for 2 times 1 mm² wires, reinforced insulation, conductor diameter 1.4mm, outer diameter 3.9mm, size source Multi-Contact FLEXI-xV 1.0 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1sqmm double-strain-relief +0 +2 +2 +Connector_Wire +SolderWire-1sqmm_1x03_P5.4mm_D1.4mm_OD2.7mm +Soldered wire connection, for 3 times 1 mm² wires, basic insulation, conductor diameter 1.4mm, outer diameter 2.7mm, size source Multi-Contact FLEXI-E 1.0 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1sqmm +0 +3 +3 +Connector_Wire +SolderWire-1sqmm_1x03_P5.4mm_D1.4mm_OD2.7mm_Relief +Soldered wire connection with feed through strain relief, for 3 times 1 mm² wires, basic insulation, conductor diameter 1.4mm, outer diameter 2.7mm, size source Multi-Contact FLEXI-E 1.0 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1sqmm strain-relief +0 +3 +3 +Connector_Wire +SolderWire-1sqmm_1x03_P5.4mm_D1.4mm_OD2.7mm_Relief2x +Soldered wire connection with double feed through strain relief, for 3 times 1 mm² wires, basic insulation, conductor diameter 1.4mm, outer diameter 2.7mm, size source Multi-Contact FLEXI-E 1.0 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1sqmm double-strain-relief +0 +3 +3 +Connector_Wire +SolderWire-1sqmm_1x03_P7.8mm_D1.4mm_OD3.9mm +Soldered wire connection, for 3 times 1 mm² wires, reinforced insulation, conductor diameter 1.4mm, outer diameter 3.9mm, size source Multi-Contact FLEXI-xV 1.0 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1sqmm +0 +3 +3 +Connector_Wire +SolderWire-1sqmm_1x03_P7.8mm_D1.4mm_OD3.9mm_Relief +Soldered wire connection with feed through strain relief, for 3 times 1 mm² wires, reinforced insulation, conductor diameter 1.4mm, outer diameter 3.9mm, size source Multi-Contact FLEXI-xV 1.0 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1sqmm strain-relief +0 +3 +3 +Connector_Wire +SolderWire-1sqmm_1x03_P7.8mm_D1.4mm_OD3.9mm_Relief2x +Soldered wire connection with double feed through strain relief, for 3 times 1 mm² wires, reinforced insulation, conductor diameter 1.4mm, outer diameter 3.9mm, size source Multi-Contact FLEXI-xV 1.0 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1sqmm double-strain-relief +0 +3 +3 +Connector_Wire +SolderWire-1sqmm_1x04_P5.4mm_D1.4mm_OD2.7mm +Soldered wire connection, for 4 times 1 mm² wires, basic insulation, conductor diameter 1.4mm, outer diameter 2.7mm, size source Multi-Contact FLEXI-E 1.0 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1sqmm +0 +4 +4 +Connector_Wire +SolderWire-1sqmm_1x04_P5.4mm_D1.4mm_OD2.7mm_Relief +Soldered wire connection with feed through strain relief, for 4 times 1 mm² wires, basic insulation, conductor diameter 1.4mm, outer diameter 2.7mm, size source Multi-Contact FLEXI-E 1.0 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1sqmm strain-relief +0 +4 +4 +Connector_Wire +SolderWire-1sqmm_1x04_P5.4mm_D1.4mm_OD2.7mm_Relief2x +Soldered wire connection with double feed through strain relief, for 4 times 1 mm² wires, basic insulation, conductor diameter 1.4mm, outer diameter 2.7mm, size source Multi-Contact FLEXI-E 1.0 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1sqmm double-strain-relief +0 +4 +4 +Connector_Wire +SolderWire-1sqmm_1x04_P7.8mm_D1.4mm_OD3.9mm +Soldered wire connection, for 4 times 1 mm² wires, reinforced insulation, conductor diameter 1.4mm, outer diameter 3.9mm, size source Multi-Contact FLEXI-xV 1.0 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1sqmm +0 +4 +4 +Connector_Wire +SolderWire-1sqmm_1x04_P7.8mm_D1.4mm_OD3.9mm_Relief +Soldered wire connection with feed through strain relief, for 4 times 1 mm² wires, reinforced insulation, conductor diameter 1.4mm, outer diameter 3.9mm, size source Multi-Contact FLEXI-xV 1.0 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1sqmm strain-relief +0 +4 +4 +Connector_Wire +SolderWire-1sqmm_1x04_P7.8mm_D1.4mm_OD3.9mm_Relief2x +Soldered wire connection with double feed through strain relief, for 4 times 1 mm² wires, reinforced insulation, conductor diameter 1.4mm, outer diameter 3.9mm, size source Multi-Contact FLEXI-xV 1.0 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1sqmm double-strain-relief +0 +4 +4 +Connector_Wire +SolderWire-1sqmm_1x05_P5.4mm_D1.4mm_OD2.7mm +Soldered wire connection, for 5 times 1 mm² wires, basic insulation, conductor diameter 1.4mm, outer diameter 2.7mm, size source Multi-Contact FLEXI-E 1.0 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1sqmm +0 +5 +5 +Connector_Wire +SolderWire-1sqmm_1x05_P5.4mm_D1.4mm_OD2.7mm_Relief +Soldered wire connection with feed through strain relief, for 5 times 1 mm² wires, basic insulation, conductor diameter 1.4mm, outer diameter 2.7mm, size source Multi-Contact FLEXI-E 1.0 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1sqmm strain-relief +0 +5 +5 +Connector_Wire +SolderWire-1sqmm_1x05_P5.4mm_D1.4mm_OD2.7mm_Relief2x +Soldered wire connection with double feed through strain relief, for 5 times 1 mm² wires, basic insulation, conductor diameter 1.4mm, outer diameter 2.7mm, size source Multi-Contact FLEXI-E 1.0 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1sqmm double-strain-relief +0 +5 +5 +Connector_Wire +SolderWire-1sqmm_1x05_P7.8mm_D1.4mm_OD3.9mm +Soldered wire connection, for 5 times 1 mm² wires, reinforced insulation, conductor diameter 1.4mm, outer diameter 3.9mm, size source Multi-Contact FLEXI-xV 1.0 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1sqmm +0 +5 +5 +Connector_Wire +SolderWire-1sqmm_1x05_P7.8mm_D1.4mm_OD3.9mm_Relief +Soldered wire connection with feed through strain relief, for 5 times 1 mm² wires, reinforced insulation, conductor diameter 1.4mm, outer diameter 3.9mm, size source Multi-Contact FLEXI-xV 1.0 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1sqmm strain-relief +0 +5 +5 +Connector_Wire +SolderWire-1sqmm_1x05_P7.8mm_D1.4mm_OD3.9mm_Relief2x +Soldered wire connection with double feed through strain relief, for 5 times 1 mm² wires, reinforced insulation, conductor diameter 1.4mm, outer diameter 3.9mm, size source Multi-Contact FLEXI-xV 1.0 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1sqmm double-strain-relief +0 +5 +5 +Connector_Wire +SolderWire-1sqmm_1x06_P5.4mm_D1.4mm_OD2.7mm +Soldered wire connection, for 6 times 1 mm² wires, basic insulation, conductor diameter 1.4mm, outer diameter 2.7mm, size source Multi-Contact FLEXI-E 1.0 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1sqmm +0 +6 +6 +Connector_Wire +SolderWire-1sqmm_1x06_P5.4mm_D1.4mm_OD2.7mm_Relief +Soldered wire connection with feed through strain relief, for 6 times 1 mm² wires, basic insulation, conductor diameter 1.4mm, outer diameter 2.7mm, size source Multi-Contact FLEXI-E 1.0 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1sqmm strain-relief +0 +6 +6 +Connector_Wire +SolderWire-1sqmm_1x06_P5.4mm_D1.4mm_OD2.7mm_Relief2x +Soldered wire connection with double feed through strain relief, for 6 times 1 mm² wires, basic insulation, conductor diameter 1.4mm, outer diameter 2.7mm, size source Multi-Contact FLEXI-E 1.0 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1sqmm double-strain-relief +0 +6 +6 +Connector_Wire +SolderWire-1sqmm_1x06_P7.8mm_D1.4mm_OD3.9mm +Soldered wire connection, for 6 times 1 mm² wires, reinforced insulation, conductor diameter 1.4mm, outer diameter 3.9mm, size source Multi-Contact FLEXI-xV 1.0 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1sqmm +0 +6 +6 +Connector_Wire +SolderWire-1sqmm_1x06_P7.8mm_D1.4mm_OD3.9mm_Relief +Soldered wire connection with feed through strain relief, for 6 times 1 mm² wires, reinforced insulation, conductor diameter 1.4mm, outer diameter 3.9mm, size source Multi-Contact FLEXI-xV 1.0 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1sqmm strain-relief +0 +6 +6 +Connector_Wire +SolderWire-1sqmm_1x06_P7.8mm_D1.4mm_OD3.9mm_Relief2x +Soldered wire connection with double feed through strain relief, for 6 times 1 mm² wires, reinforced insulation, conductor diameter 1.4mm, outer diameter 3.9mm, size source Multi-Contact FLEXI-xV 1.0 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 1sqmm double-strain-relief +0 +6 +6 +Connector_Wire +SolderWire-2.5sqmm_1x01_D2.4mm_OD3.6mm +Soldered wire connection, for a single 2.5 mm² wire, basic insulation, conductor diameter 2.4mm, outer diameter 3.6mm, size source Multi-Contact FLEXI-E 2.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 2.5sqmm +0 +1 +1 +Connector_Wire +SolderWire-2.5sqmm_1x01_D2.4mm_OD3.6mm_Relief +Soldered wire connection with feed through strain relief, for a single 2.5 mm² wire, basic insulation, conductor diameter 2.4mm, outer diameter 3.6mm, size source Multi-Contact FLEXI-E 2.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 2.5sqmm strain-relief +0 +1 +1 +Connector_Wire +SolderWire-2.5sqmm_1x01_D2.4mm_OD3.6mm_Relief2x +Soldered wire connection with double feed through strain relief, for a single 2.5 mm² wire, basic insulation, conductor diameter 2.4mm, outer diameter 3.6mm, size source Multi-Contact FLEXI-E 2.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 2.5sqmm double-strain-relief +0 +1 +1 +Connector_Wire +SolderWire-2.5sqmm_1x01_D2.4mm_OD4.4mm +Soldered wire connection, for a single 2.5 mm² wire, reinforced insulation, conductor diameter 2.4mm, outer diameter 4.4mm, size source Multi-Contact FLEXI-xV 2.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 2.5sqmm +0 +1 +1 +Connector_Wire +SolderWire-2.5sqmm_1x01_D2.4mm_OD4.4mm_Relief +Soldered wire connection with feed through strain relief, for a single 2.5 mm² wire, reinforced insulation, conductor diameter 2.4mm, outer diameter 4.4mm, size source Multi-Contact FLEXI-xV 2.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 2.5sqmm strain-relief +0 +1 +1 +Connector_Wire +SolderWire-2.5sqmm_1x01_D2.4mm_OD4.4mm_Relief2x +Soldered wire connection with double feed through strain relief, for a single 2.5 mm² wire, reinforced insulation, conductor diameter 2.4mm, outer diameter 4.4mm, size source Multi-Contact FLEXI-xV 2.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 2.5sqmm double-strain-relief +0 +1 +1 +Connector_Wire +SolderWire-2.5sqmm_1x02_P7.2mm_D2.4mm_OD3.6mm +Soldered wire connection, for 2 times 2.5 mm² wires, basic insulation, conductor diameter 2.4mm, outer diameter 3.6mm, size source Multi-Contact FLEXI-E 2.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 2.5sqmm +0 +2 +2 +Connector_Wire +SolderWire-2.5sqmm_1x02_P7.2mm_D2.4mm_OD3.6mm_Relief +Soldered wire connection with feed through strain relief, for 2 times 2.5 mm² wires, basic insulation, conductor diameter 2.4mm, outer diameter 3.6mm, size source Multi-Contact FLEXI-E 2.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 2.5sqmm strain-relief +0 +2 +2 +Connector_Wire +SolderWire-2.5sqmm_1x02_P7.2mm_D2.4mm_OD3.6mm_Relief2x +Soldered wire connection with double feed through strain relief, for 2 times 2.5 mm² wires, basic insulation, conductor diameter 2.4mm, outer diameter 3.6mm, size source Multi-Contact FLEXI-E 2.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 2.5sqmm double-strain-relief +0 +2 +2 +Connector_Wire +SolderWire-2.5sqmm_1x02_P8.8mm_D2.4mm_OD4.4mm +Soldered wire connection, for 2 times 2.5 mm² wires, reinforced insulation, conductor diameter 2.4mm, outer diameter 4.4mm, size source Multi-Contact FLEXI-xV 2.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 2.5sqmm +0 +2 +2 +Connector_Wire +SolderWire-2.5sqmm_1x02_P8.8mm_D2.4mm_OD4.4mm_Relief +Soldered wire connection with feed through strain relief, for 2 times 2.5 mm² wires, reinforced insulation, conductor diameter 2.4mm, outer diameter 4.4mm, size source Multi-Contact FLEXI-xV 2.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 2.5sqmm strain-relief +0 +2 +2 +Connector_Wire +SolderWire-2.5sqmm_1x02_P8.8mm_D2.4mm_OD4.4mm_Relief2x +Soldered wire connection with double feed through strain relief, for 2 times 2.5 mm² wires, reinforced insulation, conductor diameter 2.4mm, outer diameter 4.4mm, size source Multi-Contact FLEXI-xV 2.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 2.5sqmm double-strain-relief +0 +2 +2 +Connector_Wire +SolderWire-2.5sqmm_1x03_P7.2mm_D2.4mm_OD3.6mm +Soldered wire connection, for 3 times 2.5 mm² wires, basic insulation, conductor diameter 2.4mm, outer diameter 3.6mm, size source Multi-Contact FLEXI-E 2.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 2.5sqmm +0 +3 +3 +Connector_Wire +SolderWire-2.5sqmm_1x03_P7.2mm_D2.4mm_OD3.6mm_Relief +Soldered wire connection with feed through strain relief, for 3 times 2.5 mm² wires, basic insulation, conductor diameter 2.4mm, outer diameter 3.6mm, size source Multi-Contact FLEXI-E 2.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 2.5sqmm strain-relief +0 +3 +3 +Connector_Wire +SolderWire-2.5sqmm_1x03_P7.2mm_D2.4mm_OD3.6mm_Relief2x +Soldered wire connection with double feed through strain relief, for 3 times 2.5 mm² wires, basic insulation, conductor diameter 2.4mm, outer diameter 3.6mm, size source Multi-Contact FLEXI-E 2.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 2.5sqmm double-strain-relief +0 +3 +3 +Connector_Wire +SolderWire-2.5sqmm_1x03_P8.8mm_D2.4mm_OD4.4mm +Soldered wire connection, for 3 times 2.5 mm² wires, reinforced insulation, conductor diameter 2.4mm, outer diameter 4.4mm, size source Multi-Contact FLEXI-xV 2.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 2.5sqmm +0 +3 +3 +Connector_Wire +SolderWire-2.5sqmm_1x03_P8.8mm_D2.4mm_OD4.4mm_Relief +Soldered wire connection with feed through strain relief, for 3 times 2.5 mm² wires, reinforced insulation, conductor diameter 2.4mm, outer diameter 4.4mm, size source Multi-Contact FLEXI-xV 2.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 2.5sqmm strain-relief +0 +3 +3 +Connector_Wire +SolderWire-2.5sqmm_1x03_P8.8mm_D2.4mm_OD4.4mm_Relief2x +Soldered wire connection with double feed through strain relief, for 3 times 2.5 mm² wires, reinforced insulation, conductor diameter 2.4mm, outer diameter 4.4mm, size source Multi-Contact FLEXI-xV 2.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 2.5sqmm double-strain-relief +0 +3 +3 +Connector_Wire +SolderWire-2.5sqmm_1x04_P7.2mm_D2.4mm_OD3.6mm +Soldered wire connection, for 4 times 2.5 mm² wires, basic insulation, conductor diameter 2.4mm, outer diameter 3.6mm, size source Multi-Contact FLEXI-E 2.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 2.5sqmm +0 +4 +4 +Connector_Wire +SolderWire-2.5sqmm_1x04_P7.2mm_D2.4mm_OD3.6mm_Relief +Soldered wire connection with feed through strain relief, for 4 times 2.5 mm² wires, basic insulation, conductor diameter 2.4mm, outer diameter 3.6mm, size source Multi-Contact FLEXI-E 2.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 2.5sqmm strain-relief +0 +4 +4 +Connector_Wire +SolderWire-2.5sqmm_1x04_P7.2mm_D2.4mm_OD3.6mm_Relief2x +Soldered wire connection with double feed through strain relief, for 4 times 2.5 mm² wires, basic insulation, conductor diameter 2.4mm, outer diameter 3.6mm, size source Multi-Contact FLEXI-E 2.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 2.5sqmm double-strain-relief +0 +4 +4 +Connector_Wire +SolderWire-2.5sqmm_1x04_P8.8mm_D2.4mm_OD4.4mm +Soldered wire connection, for 4 times 2.5 mm² wires, reinforced insulation, conductor diameter 2.4mm, outer diameter 4.4mm, size source Multi-Contact FLEXI-xV 2.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 2.5sqmm +0 +4 +4 +Connector_Wire +SolderWire-2.5sqmm_1x04_P8.8mm_D2.4mm_OD4.4mm_Relief +Soldered wire connection with feed through strain relief, for 4 times 2.5 mm² wires, reinforced insulation, conductor diameter 2.4mm, outer diameter 4.4mm, size source Multi-Contact FLEXI-xV 2.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 2.5sqmm strain-relief +0 +4 +4 +Connector_Wire +SolderWire-2.5sqmm_1x04_P8.8mm_D2.4mm_OD4.4mm_Relief2x +Soldered wire connection with double feed through strain relief, for 4 times 2.5 mm² wires, reinforced insulation, conductor diameter 2.4mm, outer diameter 4.4mm, size source Multi-Contact FLEXI-xV 2.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 2.5sqmm double-strain-relief +0 +4 +4 +Connector_Wire +SolderWire-2.5sqmm_1x05_P7.2mm_D2.4mm_OD3.6mm +Soldered wire connection, for 5 times 2.5 mm² wires, basic insulation, conductor diameter 2.4mm, outer diameter 3.6mm, size source Multi-Contact FLEXI-E 2.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 2.5sqmm +0 +5 +5 +Connector_Wire +SolderWire-2.5sqmm_1x05_P7.2mm_D2.4mm_OD3.6mm_Relief +Soldered wire connection with feed through strain relief, for 5 times 2.5 mm² wires, basic insulation, conductor diameter 2.4mm, outer diameter 3.6mm, size source Multi-Contact FLEXI-E 2.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 2.5sqmm strain-relief +0 +5 +5 +Connector_Wire +SolderWire-2.5sqmm_1x05_P7.2mm_D2.4mm_OD3.6mm_Relief2x +Soldered wire connection with double feed through strain relief, for 5 times 2.5 mm² wires, basic insulation, conductor diameter 2.4mm, outer diameter 3.6mm, size source Multi-Contact FLEXI-E 2.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 2.5sqmm double-strain-relief +0 +5 +5 +Connector_Wire +SolderWire-2.5sqmm_1x05_P8.8mm_D2.4mm_OD4.4mm +Soldered wire connection, for 5 times 2.5 mm² wires, reinforced insulation, conductor diameter 2.4mm, outer diameter 4.4mm, size source Multi-Contact FLEXI-xV 2.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 2.5sqmm +0 +5 +5 +Connector_Wire +SolderWire-2.5sqmm_1x05_P8.8mm_D2.4mm_OD4.4mm_Relief +Soldered wire connection with feed through strain relief, for 5 times 2.5 mm² wires, reinforced insulation, conductor diameter 2.4mm, outer diameter 4.4mm, size source Multi-Contact FLEXI-xV 2.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 2.5sqmm strain-relief +0 +5 +5 +Connector_Wire +SolderWire-2.5sqmm_1x05_P8.8mm_D2.4mm_OD4.4mm_Relief2x +Soldered wire connection with double feed through strain relief, for 5 times 2.5 mm² wires, reinforced insulation, conductor diameter 2.4mm, outer diameter 4.4mm, size source Multi-Contact FLEXI-xV 2.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 2.5sqmm double-strain-relief +0 +5 +5 +Connector_Wire +SolderWire-2.5sqmm_1x06_P7.2mm_D2.4mm_OD3.6mm +Soldered wire connection, for 6 times 2.5 mm² wires, basic insulation, conductor diameter 2.4mm, outer diameter 3.6mm, size source Multi-Contact FLEXI-E 2.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 2.5sqmm +0 +6 +6 +Connector_Wire +SolderWire-2.5sqmm_1x06_P7.2mm_D2.4mm_OD3.6mm_Relief +Soldered wire connection with feed through strain relief, for 6 times 2.5 mm² wires, basic insulation, conductor diameter 2.4mm, outer diameter 3.6mm, size source Multi-Contact FLEXI-E 2.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 2.5sqmm strain-relief +0 +6 +6 +Connector_Wire +SolderWire-2.5sqmm_1x06_P7.2mm_D2.4mm_OD3.6mm_Relief2x +Soldered wire connection with double feed through strain relief, for 6 times 2.5 mm² wires, basic insulation, conductor diameter 2.4mm, outer diameter 3.6mm, size source Multi-Contact FLEXI-E 2.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 2.5sqmm double-strain-relief +0 +6 +6 +Connector_Wire +SolderWire-2.5sqmm_1x06_P8.8mm_D2.4mm_OD4.4mm +Soldered wire connection, for 6 times 2.5 mm² wires, reinforced insulation, conductor diameter 2.4mm, outer diameter 4.4mm, size source Multi-Contact FLEXI-xV 2.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 2.5sqmm +0 +6 +6 +Connector_Wire +SolderWire-2.5sqmm_1x06_P8.8mm_D2.4mm_OD4.4mm_Relief +Soldered wire connection with feed through strain relief, for 6 times 2.5 mm² wires, reinforced insulation, conductor diameter 2.4mm, outer diameter 4.4mm, size source Multi-Contact FLEXI-xV 2.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 2.5sqmm strain-relief +0 +6 +6 +Connector_Wire +SolderWire-2.5sqmm_1x06_P8.8mm_D2.4mm_OD4.4mm_Relief2x +Soldered wire connection with double feed through strain relief, for 6 times 2.5 mm² wires, reinforced insulation, conductor diameter 2.4mm, outer diameter 4.4mm, size source Multi-Contact FLEXI-xV 2.5 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 2.5sqmm double-strain-relief +0 +6 +6 +Connector_Wire +SolderWire-2sqmm_1x01_D2mm_OD3.9mm +Soldered wire connection, for a single 2 mm² wire, reinforced insulation, conductor diameter 2mm, outer diameter 3.9mm, size source Multi-Contact FLEXI-xV 2.0 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 2sqmm +0 +1 +1 +Connector_Wire +SolderWire-2sqmm_1x01_D2mm_OD3.9mm_Relief +Soldered wire connection with feed through strain relief, for a single 2 mm² wire, reinforced insulation, conductor diameter 2mm, outer diameter 3.9mm, size source Multi-Contact FLEXI-xV 2.0 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 2sqmm strain-relief +0 +1 +1 +Connector_Wire +SolderWire-2sqmm_1x01_D2mm_OD3.9mm_Relief2x +Soldered wire connection with double feed through strain relief, for a single 2 mm² wire, reinforced insulation, conductor diameter 2mm, outer diameter 3.9mm, size source Multi-Contact FLEXI-xV 2.0 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 2sqmm double-strain-relief +0 +1 +1 +Connector_Wire +SolderWire-2sqmm_1x02_P7.8mm_D2mm_OD3.9mm +Soldered wire connection, for 2 times 2 mm² wires, reinforced insulation, conductor diameter 2mm, outer diameter 3.9mm, size source Multi-Contact FLEXI-xV 2.0 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 2sqmm +0 +2 +2 +Connector_Wire +SolderWire-2sqmm_1x02_P7.8mm_D2mm_OD3.9mm_Relief +Soldered wire connection with feed through strain relief, for 2 times 2 mm² wires, reinforced insulation, conductor diameter 2mm, outer diameter 3.9mm, size source Multi-Contact FLEXI-xV 2.0 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 2sqmm strain-relief +0 +2 +2 +Connector_Wire +SolderWire-2sqmm_1x02_P7.8mm_D2mm_OD3.9mm_Relief2x +Soldered wire connection with double feed through strain relief, for 2 times 2 mm² wires, reinforced insulation, conductor diameter 2mm, outer diameter 3.9mm, size source Multi-Contact FLEXI-xV 2.0 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 2sqmm double-strain-relief +0 +2 +2 +Connector_Wire +SolderWire-2sqmm_1x03_P7.8mm_D2mm_OD3.9mm +Soldered wire connection, for 3 times 2 mm² wires, reinforced insulation, conductor diameter 2mm, outer diameter 3.9mm, size source Multi-Contact FLEXI-xV 2.0 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 2sqmm +0 +3 +3 +Connector_Wire +SolderWire-2sqmm_1x03_P7.8mm_D2mm_OD3.9mm_Relief +Soldered wire connection with feed through strain relief, for 3 times 2 mm² wires, reinforced insulation, conductor diameter 2mm, outer diameter 3.9mm, size source Multi-Contact FLEXI-xV 2.0 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 2sqmm strain-relief +0 +3 +3 +Connector_Wire +SolderWire-2sqmm_1x03_P7.8mm_D2mm_OD3.9mm_Relief2x +Soldered wire connection with double feed through strain relief, for 3 times 2 mm² wires, reinforced insulation, conductor diameter 2mm, outer diameter 3.9mm, size source Multi-Contact FLEXI-xV 2.0 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 2sqmm double-strain-relief +0 +3 +3 +Connector_Wire +SolderWire-2sqmm_1x04_P7.8mm_D2mm_OD3.9mm +Soldered wire connection, for 4 times 2 mm² wires, reinforced insulation, conductor diameter 2mm, outer diameter 3.9mm, size source Multi-Contact FLEXI-xV 2.0 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 2sqmm +0 +4 +4 +Connector_Wire +SolderWire-2sqmm_1x04_P7.8mm_D2mm_OD3.9mm_Relief +Soldered wire connection with feed through strain relief, for 4 times 2 mm² wires, reinforced insulation, conductor diameter 2mm, outer diameter 3.9mm, size source Multi-Contact FLEXI-xV 2.0 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 2sqmm strain-relief +0 +4 +4 +Connector_Wire +SolderWire-2sqmm_1x04_P7.8mm_D2mm_OD3.9mm_Relief2x +Soldered wire connection with double feed through strain relief, for 4 times 2 mm² wires, reinforced insulation, conductor diameter 2mm, outer diameter 3.9mm, size source Multi-Contact FLEXI-xV 2.0 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 2sqmm double-strain-relief +0 +4 +4 +Connector_Wire +SolderWire-2sqmm_1x05_P7.8mm_D2mm_OD3.9mm +Soldered wire connection, for 5 times 2 mm² wires, reinforced insulation, conductor diameter 2mm, outer diameter 3.9mm, size source Multi-Contact FLEXI-xV 2.0 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 2sqmm +0 +5 +5 +Connector_Wire +SolderWire-2sqmm_1x05_P7.8mm_D2mm_OD3.9mm_Relief +Soldered wire connection with feed through strain relief, for 5 times 2 mm² wires, reinforced insulation, conductor diameter 2mm, outer diameter 3.9mm, size source Multi-Contact FLEXI-xV 2.0 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 2sqmm strain-relief +0 +5 +5 +Connector_Wire +SolderWire-2sqmm_1x05_P7.8mm_D2mm_OD3.9mm_Relief2x +Soldered wire connection with double feed through strain relief, for 5 times 2 mm² wires, reinforced insulation, conductor diameter 2mm, outer diameter 3.9mm, size source Multi-Contact FLEXI-xV 2.0 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 2sqmm double-strain-relief +0 +5 +5 +Connector_Wire +SolderWire-2sqmm_1x06_P7.8mm_D2mm_OD3.9mm +Soldered wire connection, for 6 times 2 mm² wires, reinforced insulation, conductor diameter 2mm, outer diameter 3.9mm, size source Multi-Contact FLEXI-xV 2.0 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 2sqmm +0 +6 +6 +Connector_Wire +SolderWire-2sqmm_1x06_P7.8mm_D2mm_OD3.9mm_Relief +Soldered wire connection with feed through strain relief, for 6 times 2 mm² wires, reinforced insulation, conductor diameter 2mm, outer diameter 3.9mm, size source Multi-Contact FLEXI-xV 2.0 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 2sqmm strain-relief +0 +6 +6 +Connector_Wire +SolderWire-2sqmm_1x06_P7.8mm_D2mm_OD3.9mm_Relief2x +Soldered wire connection with double feed through strain relief, for 6 times 2 mm² wires, reinforced insulation, conductor diameter 2mm, outer diameter 3.9mm, size source Multi-Contact FLEXI-xV 2.0 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator +connector wire 2sqmm double-strain-relief +0 +6 +6 +Connector_Wire +SolderWirePad_1x01_SMD_1x2mm +Wire Pad, Square, SMD Pad, 5mm x 10mm, +MesurementPoint Square SMDPad 5mmx10mm +0 +1 +1 +Connector_Wire +SolderWirePad_1x01_SMD_5x10mm +Wire Pad, Square, SMD Pad, 5mm x 10mm, +MesurementPoint Square SMDPad 5mmx10mm +0 +1 +1 +Connector_Wuerth +Wuerth_WR-WTB_64800211622_1x02_P1.50mm_Vertical +Wuerth WR-WTB series connector, 64800211622 (https://katalog.we-online.com/em/datasheet/6480xx11622.pdf), generated with kicad-footprint-generator +connector Wuerth WR-WTB vertical +0 +2 +2 +Connector_Wuerth +Wuerth_WR-WTB_64800311622_1x03_P1.50mm_Vertical +Wuerth WR-WTB series connector, 64800311622 (https://katalog.we-online.com/em/datasheet/6480xx11622.pdf), generated with kicad-footprint-generator +connector Wuerth WR-WTB vertical +0 +3 +3 +Connector_Wuerth +Wuerth_WR-WTB_64800411622_1x04_P1.50mm_Vertical +Wuerth WR-WTB series connector, 64800411622 (https://katalog.we-online.com/em/datasheet/6480xx11622.pdf), generated with kicad-footprint-generator +connector Wuerth WR-WTB vertical +0 +4 +4 +Connector_Wuerth +Wuerth_WR-WTB_64800511622_1x05_P1.50mm_Vertical +Wuerth WR-WTB series connector, 64800511622 (https://katalog.we-online.com/em/datasheet/6480xx11622.pdf), generated with kicad-footprint-generator +connector Wuerth WR-WTB vertical +0 +5 +5 +Connector_Wuerth +Wuerth_WR-WTB_64800611622_1x06_P1.50mm_Vertical +Wuerth WR-WTB series connector, 64800611622 (https://katalog.we-online.com/em/datasheet/6480xx11622.pdf), generated with kicad-footprint-generator +connector Wuerth WR-WTB vertical +0 +6 +6 +Connector_Wuerth +Wuerth_WR-WTB_64800711622_1x07_P1.50mm_Vertical +Wuerth WR-WTB series connector, 64800711622 (https://katalog.we-online.com/em/datasheet/6480xx11622.pdf), generated with kicad-footprint-generator +connector Wuerth WR-WTB vertical +0 +7 +7 +Connector_Wuerth +Wuerth_WR-WTB_64800811622_1x08_P1.50mm_Vertical +Wuerth WR-WTB series connector, 64800811622 (https://katalog.we-online.com/em/datasheet/6480xx11622.pdf), generated with kicad-footprint-generator +connector Wuerth WR-WTB vertical +0 +8 +8 +Connector_Wuerth +Wuerth_WR-WTB_64800911622_1x09_P1.50mm_Vertical +Wuerth WR-WTB series connector, 64800911622 (https://katalog.we-online.com/em/datasheet/6480xx11622.pdf), generated with kicad-footprint-generator +connector Wuerth WR-WTB vertical +0 +9 +9 +Connector_Wuerth +Wuerth_WR-WTB_64801011622_1x10_P1.50mm_Vertical +Wuerth WR-WTB series connector, 64801011622 (https://katalog.we-online.com/em/datasheet/6480xx11622.pdf), generated with kicad-footprint-generator +connector Wuerth WR-WTB vertical +0 +10 +10 +Converter_ACDC +Converter_ACDC_CUI_PBO-3-Sxx_THT_Vertical +ACDC-Converter, 3W, CUI PBO-3, THT https://www.cui.com/product/resource/pbo-3.pdf +Converter AC-DC THT Vertical +0 +6 +6 +Converter_ACDC +Converter_ACDC_Hahn_HS-400xx_THT +ACDC-Converter, 3W, Hahn-HS-400xx, THT https://www.schukat.com/schukat/schukat_cms_de.nsf/index/FrameView?OpenDocument&art=HS40009&wg=M7942 +Hahn ACDC-Converter THT +0 +4 +4 +Converter_ACDC +Converter_ACDC_HiLink_HLK-PMxx +ACDC-Converter, 3W, HiLink, HLK-PMxx, THT, http://www.hlktech.net/product_detail.php?ProId=54 +ACDC-Converter 3W THT HiLink board mount module +0 +4 +4 +Converter_ACDC +Converter_ACDC_MeanWell_IRM-02-xx_SMD +ACDC-Converter, 3W, Meanwell, IRM-02, SMD, https://www.meanwell.com/Upload/PDF/IRM-02/IRM-02-SPEC.PDF +ACDC-Converter 3W +0 +14 +14 +Converter_ACDC +Converter_ACDC_MeanWell_IRM-02-xx_THT +ACDC-Converter, 2W, Meanwell, IRM-02, THT, https://www.meanwell.co.uk/media/productPDF/IRM-02-spec.pdf +ACDC-Converter 2W THT +0 +4 +4 +Converter_ACDC +Converter_ACDC_MeanWell_IRM-03-xx_SMD +ACDC-Converter, 3W, Meanwell, IRM-03, SMD, http://www.meanwell.com/webapp/product/search.aspx?prod=IRM-03 +ACDC-Converter 3W +0 +14 +14 +Converter_ACDC +Converter_ACDC_MeanWell_IRM-03-xx_THT +ACDC-Converter, 3W, Meanwell, IRM-03, THT, https://www.meanwell.com/Upload/PDF/IRM-03/IRM-03-SPEC.PDF +ACDC-Converter 3W THT +0 +5 +5 +Converter_ACDC +Converter_ACDC_MeanWell_IRM-05-xx_THT +http://www.meanwell.com/webapp/product/search.aspx?prod=IRM-05 +ACDC-Converter 5W Meanwell IRM-05 +0 +4 +4 +Converter_ACDC +Converter_ACDC_MeanWell_IRM-10-xx_THT +http://www.meanwell.com/webapp/product/search.aspx?prod=IRM-10 +ACDC-Converter 10W Meanwell IRM-10 +0 +4 +4 +Converter_ACDC +Converter_ACDC_MeanWell_IRM-20-xx_THT +ACDC-Converter, 20W, Meanwell, IRM-20, THT http://www.meanwell.com/webapp/product/search.aspx?prod=IRM-20 +ACDC-Converter 20W Meanwell IRM-20 +0 +4 +4 +Converter_ACDC +Converter_ACDC_MeanWell_IRM-60-xx_THT +ACDC-Converter, 50-60W, Meanwell, IRM-60, THT https://www.meanwellusa.com/productPdf.aspx?i=687 +switching power supply +0 +4 +4 +Converter_ACDC +Converter_ACDC_RECOM_RAC01-xxSGB_THT +https://www.recom-power.com/pdf/Powerline-AC-DC/RAC01-GB.pdf +recom power ac dc rac01xxgb rac01-05sgb rac01-12sgb +0 +4 +4 +Converter_ACDC +Converter_ACDC_RECOM_RAC04-xxSGx_THT +https://www.recom-power.com/pdf/Powerline-AC-DC/RAC04-GA.pdf +recom power ac dc +0 +5 +5 +Converter_ACDC +Converter_ACDC_RECOM_RAC05-xxSK_THT +https://www.recom-power.com/pdf/Powerline-AC-DC/RAC05-K.pdf +recom power ac dc +0 +5 +5 +Converter_ACDC +Converter_ACDC_TRACO_TMG-15_THT +ACDC-Converter, TRACO, TMG Series 15 https://www.tracopower.com/products/tmg.pdf +ACDC-Converter TRACO TMG Series 15 +0 +4 +4 +Converter_ACDC +Converter_ACDC_TRACO_TMLM-04_THT +ACDC-Converter, TRACO, TMLM Series 04 https://www.tracopower.com/products/tmlm.pdf +ACDC-Converter TRACO TMLM Series 04 +0 +7 +7 +Converter_ACDC +Converter_ACDC_TRACO_TMLM-05_THT +ACDC-Converter, TRACO TMLM 05,https://www.tracopower.com/products/tmlm.pdf +ACDC-Converter TRACO TMLM 05 +0 +4 +4 +Converter_ACDC +Converter_ACDC_TRACO_TMLM-10-20_THT +ACDC-Converter, TRACO TMLM 10, TRACO TMLM 20, https://www.tracopower.com/products/tmlm.pdf +ACDC-Converter TRACO TMLM 10 and TMLM 20 +0 +4 +4 +Converter_ACDC +Converter_ACDC_Vigortronix_VTX-214-010-xxx_THT +Vigortronix VTX-214-010-xxx serie of ACDC converter, http://www.vigortronix.com/10WattACDCPCBPowerModule.aspx +Vigortronix VTX-214-010-xxx serie of ACDC converter +0 +4 +4 +Converter_ACDC +Converter_ACDC_Vigortronix_VTX-214-015-1xx_THT +Vigortronix VTX-214-010-xxx serie of ACDC converter, http://www.vigortronix.com/10WattACDCPCBPowerModule.aspx +Vigortronix VTX-214-010-xxx serie of ACDC converter +0 +5 +5 +Converter_DCDC +Converter_DCDC_Artesyn_ATA_SMD +DCDC-Converter, Artesyn, ATA Series, 3W Single and Dual Output, 1500VDC Isolation, 24.0x13.7x8.0mm https://www.artesyn.com/power/assets/ata_series_ds_01apr2015_79c25814fd.pdf https://www.artesyn.com/power/assets/trn_dc-dc_ata_3w_series_releas1430412818_techref.pdf +DCDC SMD +0 +7 +7 +Converter_DCDC +Converter_DCDC_Bothhand_CFUDxxxx_THT +DCDC-Converter, BOTHHAND, Type CFxxxx-Serie, (Very dodgy url but was the only at hand), +DCDC-Converter BOTHHAND Type CFxxxx-Serie +0 +10 +10 +Converter_DCDC +Converter_DCDC_Bothhand_CFUSxxxxEH_THT +DCDC-Converter, BOTHHAND, Type CFxxxx-Serie, (Very dodgy url but was the only at hand), +DCDC-Converter BOTHHAND Type CFxxxx-Serie +0 +9 +9 +Converter_DCDC +Converter_DCDC_Bothhand_CFUSxxxx_THT +DCDC-Converter, BOTHHAND, Type CFxxxx-Serie, (Very dodgy url but was the only at hand), +DCDC-Converter BOTHHAND Type CFxxxx-Serie +0 +8 +8 +Converter_DCDC +Converter_DCDC_Cincon_EC5BExx_Dual_THT +DCDC-Converter, CINCON, EC5BExx, 18-36VDC to Dual output, http://www.cincon.com/upload/media/data%20sheets/Data%20Sheet%20(DC)/B%20CASE/SPEC-EC5BE-V24.pdf +DCDC-Converter CINCON EC5BExx 18-36VDC to Dual output +0 +6 +6 +Converter_DCDC +Converter_DCDC_Cincon_EC5BExx_Single_THT +DCDC-Converter, CINCON, EC5BExx, 18-36VDC to dual output, http://www.cincon.com/upload/media/data%20sheets/Data%20Sheet%20(DC)/B%20CASE/SPEC-EC5BE-V24.pdf +DCDC-Converter CINCON EC5BExx 18-36VDC to dual output +0 +4 +4 +Converter_DCDC +Converter_DCDC_Cincon_EC6Cxx_Dual-Triple_THT +DCDC-Converter, CINCON, EC6Cxx, dual or tripple output, http://www.cincon.com/upload/media/data%20sheets/Data%20Sheet%20(DC)/C%20CASE/SPEC-EC6C-V12.pdf +DCDC-Converter CINCON EC6Cxx dual or tripple output +0 +7 +7 +Converter_DCDC +Converter_DCDC_Cincon_EC6Cxx_Single_THT +DCDC-Converter, CINCON, EC6Cxx, single output, http://www.cincon.com/upload/media/data%20sheets/Data%20Sheet%20(DC)/C%20CASE/SPEC-EC6C-V12.pdf +DCDC-Converter CINCON EC6Cxx single output +0 +6 +6 +Converter_DCDC +Converter_DCDC_Cyntec_MUN12AD01-SH +http://www.cyntec.com/upfile/products/download/Cyntec%20MUN12AD01-SH_Datasheet.pdf +Power Module uPOL MUN12AD01 +0 +13 +9 +Converter_DCDC +Converter_DCDC_Cyntec_MUN12AD03-SH +http://www.cyntec.com/upfile/products/download/Cyntec%20MUN12AD03-SH_Datasheet.pdf +Power Module uPOL MUN12AD03 +0 +19 +11 +Converter_DCDC +Converter_DCDC_MeanWell_NID30_THT +Meanwell DCDC non-isolated converter SIP module, http://www.meanwell.com/webapp/product/search.aspx?prod=nid30 +DCDC non-isolated converter +0 +11 +11 +Converter_DCDC +Converter_DCDC_MeanWell_NID60_THT +MeanWell NID60, http://www.meanwell.com/Upload/PDF/NID60/NID60-SPEC.PDF +MeanWell NID60 +0 +11 +11 +Converter_DCDC +Converter_DCDC_Murata_MEE1SxxxxSC_THT +https://power.murata.com/pub/data/power/ncl/kdc_mee1.pdf +murata dc-dc transformer +0 +4 +4 +Converter_DCDC +Converter_DCDC_Murata_MEE3SxxxxSC_THT +https://power.murata.com/pub/data/power/ncl/kdc_mee3.pdf +murata dc-dc transformer +0 +4 +4 +Converter_DCDC +Converter_DCDC_Murata_MGJ2DxxxxxxSC_THT +Murata MGJ2DxxxxxxSC, 19.5x9.8x12.5mm, 5.2kVDC Isolated, 2W, SIP package style, https://power.murata.com/data/power/ncl/kdc_mgj2.pdf +Murata MGJ2DxxxxxxSC +0 +5 +5 +Converter_DCDC +Converter_DCDC_Murata_MGJ3 +Murata MGJ3, 5.2kVDC Isolated 3W Gate Drive, 15V/5V/5V Configurable, 22.61x23.11x14.19mm, https://power.murata.com/datasheet?/data/power/ncl/kdc_mgj3.pdf +DCDC SMD +0 +7 +7 +Converter_DCDC +Converter_DCDC_Murata_NCS1SxxxxSC_THT +Murata NCS1SxxxxSC https://power.murata.com/data/power/ncl/kdc_ncs1.pdf (Script generated with StandardBox.py) (Murata NCS1SxxxxSC https://power.murata.com/data/power/ncl/kdc_ncs1.pdf) +Murata NCS1SxxxxSC +0 +5 +5 +Converter_DCDC +Converter_DCDC_RECOM_R-78B-2.0_THT +DCDC-Converter, RECOM, RECOM_R-78B-2.0, SIP-3, pitch 2.54mm, package size 11.5x8.5x17.5mm^3, https://www.recom-power.com/pdf/Innoline/R-78Bxx-2.0.pdf +dc-dc recom buck sip-3 pitch 2.54mm +0 +3 +3 +Converter_DCDC +Converter_DCDC_RECOM_R-78E-0.5_THT +DCDC-Converter, RECOM, RECOM_R-78E-0.5, SIP-3, pitch 2.54mm, package size 11.6x8.5x10.4mm^3, https://www.recom-power.com/pdf/Innoline/R-78Exx-0.5.pdf +dc-dc recom buck sip-3 pitch 2.54mm +0 +3 +3 +Converter_DCDC +Converter_DCDC_RECOM_R-78HB-0.5L_THT +DCDC-Converter, RECOM, RECOM_R-78HB-0.5L, SIP-3, Horizontally Mounted, pitch 2.54mm, package size 11.5x8.5x17.5mm^3, https://www.recom-power.com/pdf/Innoline/R-78HBxx-0.5_L.pdf +dc-dc recom buck sip-3 pitch 2.54mm +0 +3 +3 +Converter_DCDC +Converter_DCDC_RECOM_R-78HB-0.5_THT +DCDC-Converter, RECOM, RECOM_R-78HB-0.5, SIP-3, pitch 2.54mm, package size 11.5x8.5x17.5mm^3, https://www.recom-power.com/pdf/Innoline/R-78HBxx-0.5_L.pdf +dc-dc recom buck sip-3 pitch 2.54mm +0 +3 +3 +Converter_DCDC +Converter_DCDC_RECOM_R-78S-0.1_THT +DCDC-Converter, RECOM, RECOM_R-78S-0.1, SIP-4, pitch 2.54mm, package size 11.6x8.5x10.4mm^3, https://www.recom-power.com/pdf/Innoline/R-78Sxx-0.1.pdf +dc-dc recom buck sip-4 pitch 2.54mm +0 +4 +4 +Converter_DCDC +Converter_DCDC_RECOM_R5xxxDA_THT +DCDC-Converter, RECOM, RECOM_R5xxxDA, SIP-12, Horizontally Mounted, pitch 2.54mm, package size 32.2x9.1x15mm^3, https://www.recom-power.com/pdf/Innoline/R-5xxxPA_DA.pdf +dc-dc recom buck sip-12 pitch 2.54mm +0 +12 +12 +Converter_DCDC +Converter_DCDC_RECOM_R5xxxPA_THT +DCDC-Converter, RECOM, RECOM_R5xxxPA, SIP-12, pitch 2.54mm, package size 32.2x9.1x15mm^3, https://www.recom-power.com/pdf/Innoline/R-5xxxPA_DA.pdf +dc-dc recom buck sip-12 pitch 2.54mm +0 +12 +12 +Converter_DCDC +Converter_DCDC_RECOM_RPA60-xxxxSFW +RPA60-FW 60W Isolated DC to DC Converters +DCDC Regulator Single +0 +6 +6 +Converter_DCDC +Converter_DCDC_RECOM_RPMx.x-x.0 +https://www.recom-power.com/pdf/Innoline/RPM-6.0.pdf +dc-dc recom buck lga-25 pitch 2.29mm +0 +25 +25 +Converter_DCDC +Converter_DCDC_TRACO_TDN_5-xxxxWISM_SMD +Traco TDN 5WISM Series, 5W, SMD (https://assets.tracopower.com/20200225170127/TDN5WISM/documents/tdn5wism-datasheet.pdf#page=3) +dcdc traco 5w smd +0 +6 +6 +Converter_DCDC +Converter_DCDC_TRACO_TEN10-xxxx_Dual_THT +DCDC-Converter, TRACO, TEN10-xxxx, single output, https://assets.tracopower.com/20171102100522/TEN10/documents/ten10-datasheet.pdf +DCDC-Converter TRACO TEN10-xxxx single output +0 +5 +5 +Converter_DCDC +Converter_DCDC_TRACO_TEN10-xxxx_Single_THT +DCDC-Converter, TRACO, TEN10-xxxx, single output, https://assets.tracopower.com/20171102100522/TEN10/documents/ten10-datasheet.pdf +DCDC-Converter TRACO TEN10-xxxx single output +0 +4 +4 +Converter_DCDC +Converter_DCDC_TRACO_TEN10-xxxx_THT +DCDC-Converter, TRACO, TEN10-xxxx, https://assets.tracopower.com/20171102100522/TEN10/documents/ten10-datasheet.pdf +DCDC-Converter TRACO TEN10-xxxx +0 +4 +4 +Converter_DCDC +Converter_DCDC_TRACO_TEN20-xxxx-N4_THT +DCDC-Converter TRACO TEN20 Generic, https://assets.tracopower.com/20171102100522/TEN20/documents/ten20-datasheet.pdf +DCDC-Converter TRACO TEN20 Generic +0 +5 +5 +Converter_DCDC +Converter_DCDC_TRACO_TEN20-xxxx_THT +DCDC-Converter TRACO TEN20 Generic, https://assets.tracopower.com/20171102100522/TEN20/documents/ten20-datasheet.pdf +DCDC-Converter TRACO TEN20 Generic +0 +6 +6 +Converter_DCDC +Converter_DCDC_TRACO_THD_15-xxxxWIN_THT +Traco THD 15WIN, 15W, THT (https://www.tracopower.com/products/thd15win.pdf#page=3) +traco dcdc tht 15w +0 +9 +9 +Converter_DCDC +Converter_DCDC_TRACO_TMR-1-xxxx_Dual_THT +DCDC-Converter, TRACO, TMR 1-xxxx, Dual output, Rev. March 21.2016 +DCDC-Converter TRACO TMR1-xxxx Dual_output +0 +5 +5 +Converter_DCDC +Converter_DCDC_TRACO_TMR-1-xxxx_Single_THT +DCDC-Converter, TRACO, TMR 1-xxxx, Single output, Rev. March 21.2016 +DCDC-Converter TRACO TMR1-xxxx Single_output +0 +4 +4 +Converter_DCDC +Converter_DCDC_TRACO_TMR-1SM_SMD +http://assets.tracopower.com/TMR1SM/documents/tmr1sm-datasheet.pdf +DCDC SMD TRACO TMR-1SM +0 +7 +7 +Converter_DCDC +Converter_DCDC_TRACO_TMR-2xxxxWI_THT +https://www.tracopower.com/products/tmr2wi.pdf +DCDC-Converter TRACO TMRxxxxWI Single/Dual_output +0 +7 +7 +Converter_DCDC +Converter_DCDC_TRACO_TMR-xxxx_THT +DCDC-Converter, TRACO, TMR xxxx, Single/Dual output, http://www.datasheetlib.com/datasheet/135136/tmr-2-2410e_traco-power.html?page=3#datasheet +DCDC-Converter TRACO TMRxxxx Single/Dual_output +0 +7 +7 +Converter_DCDC +Converter_DCDC_TRACO_TSR-1_THT +DCDC-Converter, TRACO, TSR 1-xxxx +DCDC-Converter TRACO TSR-1 +0 +3 +3 +Converter_DCDC +Converter_DCDC_XP_POWER-IA48xxD_THT +XP_POWER IA48xxD, DIP, (https://www.xppower.com/pdfs/SF_IA.pdf), generated with kicad-footprint-generator +XP_POWER IA48xxD DIP DCDC-Converter +0 +6 +6 +Converter_DCDC +Converter_DCDC_XP_POWER-IA48xxS_THT +XP_POWER IA48xxS, SIP, (https://www.xppower.com/pdfs/SF_IA.pdf), generated with kicad-footprint-generator +XP_POWER IA48xxS SIP DCDC-Converter +0 +5 +5 +Converter_DCDC +Converter_DCDC_XP_POWER-IAxxxxD_THT +XP_POWER IAxxxxD, DIP, (https://www.xppower.com/pdfs/SF_IA.pdf), generated with kicad-footprint-generator +XP_POWER IAxxxxD DIP DCDC-Converter +0 +6 +6 +Converter_DCDC +Converter_DCDC_XP_POWER-IAxxxxS_THT +XP_POWER IAxxxxS, SIP, (https://www.xppower.com/pdfs/SF_IA.pdf), generated with kicad-footprint-generator +XP_POWER IAxxxxS SIP DCDC-Converter +0 +5 +5 +Converter_DCDC +Converter_DCDC_XP_POWER-IHxxxxDH_THT +XP_POWER IHxxxxDH, DIP, (https://www.xppower.com/pdfs/SF_IH.pdf), generated with kicad-footprint-generator +XP_POWER IHxxxxDH DIP DCDC-Converter +0 +6 +6 +Converter_DCDC +Converter_DCDC_XP_POWER-IHxxxxD_THT +XP_POWER IHxxxxD, DIP, (https://www.xppower.com/pdfs/SF_IH.pdf), generated with kicad-footprint-generator +XP_POWER IHxxxxD DIP DCDC-Converter +0 +6 +6 +Converter_DCDC +Converter_DCDC_XP_POWER-IHxxxxSH_THT +XP_POWER IHxxxxSH, SIP, (https://www.xppower.com/pdfs/SF_IH.pdf), generated with kicad-footprint-generator +XP_POWER IHxxxxSH SIP DCDC-Converter +0 +5 +5 +Converter_DCDC +Converter_DCDC_XP_POWER-IHxxxxS_THT +XP_POWER IHxxxxS, SIP, (https://www.xppower.com/pdfs/SF_IH.pdf), generated with kicad-footprint-generator +XP_POWER IHxxxxS SIP DCDC-Converter +0 +5 +5 +Converter_DCDC +Converter_DCDC_XP_POWER-ISU02_SMD +DCDC-Converter, XP POWER, ISU02 Series, 2W Single and Dual Output, 1500VDC Isolation, 19.0x17.0x8.7mm https://www.xppower.com/Portals/0/pdfs/SF_ISU02.pdf +DCDC SMD XP POWER ISU02 +0 +7 +7 +Converter_DCDC +Converter_DCDC_XP_POWER-ITQxxxxS-H_THT +XP_POWER ITQxxxxS-H, SIP, (https://www.xppower.com/pdfs/SF_ITQ.pdf), generated with kicad-footprint-generator +XP_POWER ITQxxxxS-H SIP DCDC-Converter +0 +6 +6 +Converter_DCDC +Converter_DCDC_XP_POWER-ITXxxxxSA_THT +XP_POWER ITXxxxxSA, SIP, (https://www.xppower.com/pdfs/SF_ITX.pdf), generated with kicad-footprint-generator +XP_POWER ITXxxxxSA SIP DCDC-Converter +0 +5 +5 +Converter_DCDC +Converter_DCDC_XP_POWER-ITxxxxxS_THT +XP_POWER ITxxxxxS, SIP, (https://www.xppower.com/portals/0/pdfs/SF_ITX.pdf https://www.xppower.com/portals/0/pdfs/SF_ITQ.pdf), generated with kicad-footprint-generator +XP_POWER ITxxxxxS SIP DCDC-Converter +0 +7 +7 +Converter_DCDC +Converter_DCDC_XP_POWER_JTDxxxxxxx_THT +XP Power JTD Series DC-DC Converter +DCDC Isolated +0 +6 +6 +Converter_DCDC +Converter_DCDC_XP_POWER_JTExxxxDxx_THT +DCDC-Converter, XP POWER, Type JTE06 Series, Dual Output +DCDC-Converter XP_POWER JTE06 Dual +0 +8 +8 +Converter_DCDC +Converter_DCDC_muRata_CRE1xxxxxx3C_THT +Isolated 1W single output DC/DC, http://power.murata.com/data/power/ncl/kdc_cre1.pdf +Isolated 1W single output DC/DC +0 +4 +4 +Converter_DCDC +Converter_DCDC_muRata_CRE1xxxxxxDC_THT +Isloated DC-DC, http://power.murata.com/data/power/ncl/kdc_cre1.pdf +Isloated DC-DC +0 +4 +4 +Converter_DCDC +Converter_DCDC_muRata_CRE1xxxxxxSC_THT +http://power.murata.com/data/power/ncl/kdc_cre1.pdf +murata dc-dc transformer +0 +4 +4 +Converter_DCDC +Converter_DCDC_muRata_NMAxxxxDC_THT +Isolated 1W DCDC-Converter, http://power.murata.com/data/power/ncl/kdc_nma.pdf +Isolated 1W DCDC-Converter +0 +6 +6 +Converter_DCDC +Converter_DCDC_muRata_NMAxxxxSC_THT +muRata NMAxxxxSC footprint based on SIP7, http://power.murata.com/data/power/ncl/kdc_nma.pdf +muRata NMAxxxxSC DCDC-Converter +0 +5 +5 +Converter_DCDC +Converter_DCDC_muRata_NXExSxxxxMC_SMD +Isolated 1W or 2W Single Output SM DC/DC Converters http://power.murata.com/data/power/ncl/kdc_nxe1.pdf http://power.murata.com/data/power/ncl/kdc_nxe2.pdf +Isolated 1W or 2W Single Output SM DC/DC Converters +0 +5 +5 +Converter_DCDC +Converter_DCDC_muRata_OKI-78SR_Horizontal +https://power.murata.com/data/power/oki-78sr.pdf +78sr3.3 78sr5 78sr9 78sr12 78srXX +0 +3 +3 +Converter_DCDC +Converter_DCDC_muRata_OKI-78SR_Vertical +https://power.murata.com/data/power/oki-78sr.pdf +78sr3.3 78sr5 78sr9 78sr12 78srXX +0 +3 +3 +Crystal +Crystal_AT310_D3.0mm_L10.0mm_Horizontal +Crystal THT AT310 10.0mm-10.5mm length 3.0mm diameter http://www.cinetech.com.tw/upload/2011/04/20110401165201.pdf +['AT310'] +0 +2 +2 +Crystal +Crystal_AT310_D3.0mm_L10.0mm_Horizontal_1EP_style1 +Crystal THT AT310 10.0mm-10.5mm length 3.0mm diameter http://www.cinetech.com.tw/upload/2011/04/20110401165201.pdf +['AT310'] +0 +3 +3 +Crystal +Crystal_AT310_D3.0mm_L10.0mm_Horizontal_1EP_style2 +Crystal THT AT310 10.0mm-10.5mm length 3.0mm diameter http://www.cinetech.com.tw/upload/2011/04/20110401165201.pdf +['AT310'] +0 +5 +3 +Crystal +Crystal_AT310_D3.0mm_L10.0mm_Vertical +Crystal THT AT310 10.0mm-10.5mm length 3.0mm diameter http://www.cinetech.com.tw/upload/2011/04/20110401165201.pdf +['AT310'] +0 +2 +2 +Crystal +Crystal_C26-LF_D2.1mm_L6.5mm_Horizontal +Crystal THT C26-LF 6.5mm length 2.06mm diameter +['C26-LF'] +0 +2 +2 +Crystal +Crystal_C26-LF_D2.1mm_L6.5mm_Horizontal_1EP_style1 +Crystal THT C26-LF 6.5mm length 2.06mm diameter +['C26-LF'] +0 +3 +3 +Crystal +Crystal_C26-LF_D2.1mm_L6.5mm_Horizontal_1EP_style2 +Crystal THT C26-LF 6.5mm length 2.06mm diameter +['C26-LF'] +0 +5 +3 +Crystal +Crystal_C26-LF_D2.1mm_L6.5mm_Vertical +Crystal THT C26-LF 6.5mm length 2.06mm diameter +['C26-LF'] +0 +2 +2 +Crystal +Crystal_C38-LF_D3.0mm_L8.0mm_Horizontal +Crystal THT C38-LF 8.0mm length 3.0mm diameter +['C38-LF'] +0 +2 +2 +Crystal +Crystal_C38-LF_D3.0mm_L8.0mm_Horizontal_1EP_style1 +Crystal THT C38-LF 8.0mm length 3.0mm diameter +['C38-LF'] +0 +3 +3 +Crystal +Crystal_C38-LF_D3.0mm_L8.0mm_Horizontal_1EP_style2 +Crystal THT C38-LF 8.0mm length 3.0mm diameter +['C38-LF'] +0 +5 +3 +Crystal +Crystal_C38-LF_D3.0mm_L8.0mm_Vertical +Crystal THT C38-LF 8.0mm length 3.0mm diameter +['C38-LF'] +0 +2 +2 +Crystal +Crystal_DS10_D1.0mm_L4.3mm_Horizontal +Crystal THT DS10 4.3mm length 1.0mm diameter http://www.microcrystal.com/images/_Product-Documentation/03_TF_metal_Packages/01_Datasheet/DS-Series.pdf +['DS10'] +0 +2 +2 +Crystal +Crystal_DS10_D1.0mm_L4.3mm_Horizontal_1EP_style1 +Crystal THT DS10 4.3mm length 1.0mm diameter http://www.microcrystal.com/images/_Product-Documentation/03_TF_metal_Packages/01_Datasheet/DS-Series.pdf +['DS10'] +0 +3 +3 +Crystal +Crystal_DS10_D1.0mm_L4.3mm_Horizontal_1EP_style2 +Crystal THT DS10 4.3mm length 1.0mm diameter http://www.microcrystal.com/images/_Product-Documentation/03_TF_metal_Packages/01_Datasheet/DS-Series.pdf +['DS10'] +0 +5 +3 +Crystal +Crystal_DS10_D1.0mm_L4.3mm_Vertical +Crystal THT DS10 4.3mm length 1.0mm diameter http://www.microcrystal.com/images/_Product-Documentation/03_TF_metal_Packages/01_Datasheet/DS-Series.pdf +['DS10'] +0 +2 +2 +Crystal +Crystal_DS15_D1.5mm_L5.0mm_Horizontal +Crystal THT DS15 5.0mm length 1.5mm diameter http://www.microcrystal.com/images/_Product-Documentation/03_TF_metal_Packages/01_Datasheet/DS-Series.pdf +['DS15'] +0 +2 +2 +Crystal +Crystal_DS15_D1.5mm_L5.0mm_Horizontal_1EP_style1 +Crystal THT DS15 5.0mm length 1.5mm diameter http://www.microcrystal.com/images/_Product-Documentation/03_TF_metal_Packages/01_Datasheet/DS-Series.pdf +['DS15'] +0 +3 +3 +Crystal +Crystal_DS15_D1.5mm_L5.0mm_Horizontal_1EP_style2 +Crystal THT DS15 5.0mm length 1.5mm diameter http://www.microcrystal.com/images/_Product-Documentation/03_TF_metal_Packages/01_Datasheet/DS-Series.pdf +['DS15'] +0 +5 +3 +Crystal +Crystal_DS15_D1.5mm_L5.0mm_Vertical +Crystal THT DS15 5.0mm length 1.5mm diameter http://www.microcrystal.com/images/_Product-Documentation/03_TF_metal_Packages/01_Datasheet/DS-Series.pdf +['DS15'] +0 +2 +2 +Crystal +Crystal_DS26_D2.0mm_L6.0mm_Horizontal +Crystal THT DS26 6.0mm length 2.0mm diameter http://www.microcrystal.com/images/_Product-Documentation/03_TF_metal_Packages/01_Datasheet/DS-Series.pdf +['DS26'] +0 +2 +2 +Crystal +Crystal_DS26_D2.0mm_L6.0mm_Horizontal_1EP_style1 +Crystal THT DS26 6.0mm length 2.0mm diameter http://www.microcrystal.com/images/_Product-Documentation/03_TF_metal_Packages/01_Datasheet/DS-Series.pdf +['DS26'] +0 +3 +3 +Crystal +Crystal_DS26_D2.0mm_L6.0mm_Horizontal_1EP_style2 +Crystal THT DS26 6.0mm length 2.0mm diameter http://www.microcrystal.com/images/_Product-Documentation/03_TF_metal_Packages/01_Datasheet/DS-Series.pdf +['DS26'] +0 +5 +3 +Crystal +Crystal_DS26_D2.0mm_L6.0mm_Vertical +Crystal THT DS26 6.0mm length 2.0mm diameter http://www.microcrystal.com/images/_Product-Documentation/03_TF_metal_Packages/01_Datasheet/DS-Series.pdf +['DS26'] +0 +2 +2 +Crystal +Crystal_HC18-U_Horizontal +Crystal THT HC-18/U http://5hertz.com/pdfs/04404_D.pdf +THT crystal +0 +2 +2 +Crystal +Crystal_HC18-U_Horizontal_1EP_style1 +Crystal THT HC-18/U http://5hertz.com/pdfs/04404_D.pdf +THT crystal +0 +3 +3 +Crystal +Crystal_HC18-U_Horizontal_1EP_style2 +Crystal THT HC-18/U http://5hertz.com/pdfs/04404_D.pdf +THT crystal +0 +5 +3 +Crystal +Crystal_HC18-U_Vertical +Crystal THT HC-18/U, http://5hertz.com/pdfs/04404_D.pdf +THT crystalHC-18/U +0 +2 +2 +Crystal +Crystal_HC33-U_Horizontal +Crystal THT HC-33/U http://pdi.bentech-taiwan.com/PDI/GEN20SPEV20HC3320U.pdf +THT crystal +0 +2 +2 +Crystal +Crystal_HC33-U_Horizontal_1EP_style1 +Crystal THT HC-33/U http://pdi.bentech-taiwan.com/PDI/GEN20SPEV20HC3320U.pdf +THT crystal +0 +3 +3 +Crystal +Crystal_HC33-U_Horizontal_1EP_style2 +Crystal THT HC-33/U http://pdi.bentech-taiwan.com/PDI/GEN20SPEV20HC3320U.pdf +THT crystal +0 +5 +3 +Crystal +Crystal_HC33-U_Vertical +Crystal THT HC-33/U, http://pdi.bentech-taiwan.com/PDI/GEN20SPEV20HC3320U.pdf +THT crystalHC-33/U +0 +2 +2 +Crystal +Crystal_HC35-U +Crystal, Quarz, HC35/U, http://www.kvg-gmbh.de/assets/uploads/files/product_pdfs/TO71xx.pdf +Crystal Quarz HC35/U +0 +3 +3 +Crystal +Crystal_HC49-4H_Vertical +Crystal THT HC-49-4H http://5hertz.com/pdfs/04404_D.pdf +THT crystalHC-49-4H +0 +2 +2 +Crystal +Crystal_HC49-U-3Pin_Vertical +Crystal THT HC-49/U, 3pin-version, http://www.raltron.com/products/pdfspecs/crystal_hc_49_45_51.pdf +THT crystalHC-49/U +0 +3 +3 +Crystal +Crystal_HC49-U_Horizontal +Crystal THT HC-49/U http://5hertz.com/pdfs/04404_D.pdf +THT crystal +0 +2 +2 +Crystal +Crystal_HC49-U_Horizontal_1EP_style1 +Crystal THT HC-49/U http://5hertz.com/pdfs/04404_D.pdf +THT crystal +0 +3 +3 +Crystal +Crystal_HC49-U_Horizontal_1EP_style2 +Crystal THT HC-49/U http://5hertz.com/pdfs/04404_D.pdf +THT crystal +0 +5 +3 +Crystal +Crystal_HC49-U_Vertical +Crystal THT HC-49/U http://5hertz.com/pdfs/04404_D.pdf +THT crystalHC-49/U +0 +2 +2 +Crystal +Crystal_HC50_Horizontal +Crystal THT HC-50 http://www.crovencrystals.com/croven_pdf/HC-50_Crystal_Holder_Rev_00.pdf +THT crystal +0 +2 +2 +Crystal +Crystal_HC50_Horizontal_1EP_style1 +Crystal THT HC-50 http://www.crovencrystals.com/croven_pdf/HC-50_Crystal_Holder_Rev_00.pdf +THT crystal +0 +3 +3 +Crystal +Crystal_HC50_Horizontal_1EP_style2 +Crystal THT HC-50 http://www.crovencrystals.com/croven_pdf/HC-50_Crystal_Holder_Rev_00.pdf +THT crystal +0 +5 +3 +Crystal +Crystal_HC50_Vertical +Crystal THT HC-50, http://www.crovencrystals.com/croven_pdf/HC-50_Crystal_Holder_Rev_00.pdf +THT crystalHC-50 +0 +2 +2 +Crystal +Crystal_HC51-U_Vertical +Crystal THT HC-51/U, http://www.crovencrystals.com/croven_pdf/HC-51_Crystal_Holder_Rev_00.pdf +THT crystalHC-51/U +0 +2 +2 +Crystal +Crystal_HC51_Horizontal +Crystal THT HC-51 http://www.crovencrystals.com/croven_pdf/HC-51_Crystal_Holder_Rev_00.pdf +THT crystal +0 +2 +2 +Crystal +Crystal_HC51_Horizontal_1EP_style1 +Crystal THT HC-51 http://www.crovencrystals.com/croven_pdf/HC-51_Crystal_Holder_Rev_00.pdf +THT crystal +0 +3 +3 +Crystal +Crystal_HC51_Horizontal_1EP_style2 +Crystal THT HC-51 http://www.crovencrystals.com/croven_pdf/HC-51_Crystal_Holder_Rev_00.pdf +THT crystal +0 +5 +3 +Crystal +Crystal_HC52-6mm_Horizontal +Crystal THT HC-51/6mm http://www.kvg-gmbh.de/assets/uploads/files/product_pdfs/XS71xx.pdf +THT crystal +0 +2 +2 +Crystal +Crystal_HC52-6mm_Horizontal_1EP_style1 +Crystal THT HC-51/6mm http://www.kvg-gmbh.de/assets/uploads/files/product_pdfs/XS71xx.pdf +THT crystal +0 +3 +3 +Crystal +Crystal_HC52-6mm_Horizontal_1EP_style2 +Crystal THT HC-51/6mm http://www.kvg-gmbh.de/assets/uploads/files/product_pdfs/XS71xx.pdf +THT crystal +0 +5 +3 +Crystal +Crystal_HC52-6mm_Vertical +Crystal THT HC-52/6mm, http://www.kvg-gmbh.de/assets/uploads/files/product_pdfs/XS71xx.pdf +THT crystalHC-49/U +0 +2 +2 +Crystal +Crystal_HC52-8mm_Horizontal +Crystal THT HC-51/8mm http://www.kvg-gmbh.de/assets/uploads/files/product_pdfs/XS71xx.pdf +THT crystal +0 +2 +2 +Crystal +Crystal_HC52-8mm_Horizontal_1EP_style1 +Crystal THT HC-51/8mm http://www.kvg-gmbh.de/assets/uploads/files/product_pdfs/XS71xx.pdf +THT crystal +0 +3 +3 +Crystal +Crystal_HC52-8mm_Horizontal_1EP_style2 +Crystal THT HC-51/8mm http://www.kvg-gmbh.de/assets/uploads/files/product_pdfs/XS71xx.pdf +THT crystal +0 +5 +3 +Crystal +Crystal_HC52-8mm_Vertical +Crystal THT HC-52/8mm, http://www.kvg-gmbh.de/assets/uploads/files/product_pdfs/XS71xx.pdf +THT crystalHC-49/U +0 +2 +2 +Crystal +Crystal_HC52-U-3Pin_Vertical +Crystal THT HC-52/U, http://www.kvg-gmbh.de/assets/uploads/files/product_pdfs/XS71xx.pdf +THT crystalHC-52/U +0 +3 +3 +Crystal +Crystal_HC52-U_Horizontal +Crystal THT HC-51/U http://www.kvg-gmbh.de/assets/uploads/files/product_pdfs/XS71xx.pdf +THT crystal +0 +2 +2 +Crystal +Crystal_HC52-U_Horizontal_1EP_style1 +Crystal THT HC-51/U http://www.kvg-gmbh.de/assets/uploads/files/product_pdfs/XS71xx.pdf +THT crystal +0 +3 +3 +Crystal +Crystal_HC52-U_Horizontal_1EP_style2 +Crystal THT HC-51/U http://www.kvg-gmbh.de/assets/uploads/files/product_pdfs/XS71xx.pdf +THT crystal +0 +5 +3 +Crystal +Crystal_HC52-U_Vertical +Crystal THT HC-52/U, http://www.kvg-gmbh.de/assets/uploads/files/product_pdfs/XS71xx.pdf +THT crystal HC-52/U +0 +2 +2 +Crystal +Crystal_Round_D1.0mm_Vertical +Crystal THT DS10 1.0mm diameter http://www.microcrystal.com/images/_Product-Documentation/03_TF_metal_Packages/01_Datasheet/DS-Series.pdf +['DS10'] +0 +2 +2 +Crystal +Crystal_Round_D1.5mm_Vertical +Crystal THT DS15 5.0mm length 1.5mm diameter http://www.microcrystal.com/images/_Product-Documentation/03_TF_metal_Packages/01_Datasheet/DS-Series.pdf +['DS15'] +0 +2 +2 +Crystal +Crystal_Round_D2.0mm_Vertical +Crystal THT DS26 6.0mm length 2.0mm diameter http://www.microcrystal.com/images/_Product-Documentation/03_TF_metal_Packages/01_Datasheet/DS-Series.pdf +['DS26'] +0 +2 +2 +Crystal +Crystal_Round_D3.0mm_Vertical +Crystal THT C38-LF 8.0mm length 3.0mm diameter +['C38-LF'] +0 +2 +2 +Crystal +Crystal_SMD_0603-2Pin_6.0x3.5mm +SMD Crystal SERIES SMD0603/2 http://www.petermann-technik.de/fileadmin/petermann/pdf/SMD0603-2.pdf, 6.0x3.5mm^2 package +SMD SMT crystal +0 +2 +2 +Crystal +Crystal_SMD_0603-2Pin_6.0x3.5mm_HandSoldering +SMD Crystal SERIES SMD0603/2 http://www.petermann-technik.de/fileadmin/petermann/pdf/SMD0603-2.pdf, hand-soldering, 6.0x3.5mm^2 package +SMD SMT crystal hand-soldering +0 +2 +2 +Crystal +Crystal_SMD_0603-4Pin_6.0x3.5mm +SMD Crystal SERIES SMD0603/4 http://www.petermann-technik.de/fileadmin/petermann/pdf/SMD0603-4.pdf, 6.0x3.5mm^2 package +SMD SMT crystal +0 +4 +4 +Crystal +Crystal_SMD_0603-4Pin_6.0x3.5mm_HandSoldering +SMD Crystal SERIES SMD0603/4 http://www.petermann-technik.de/fileadmin/petermann/pdf/SMD0603-4.pdf, hand-soldering, 6.0x3.5mm^2 package +SMD SMT crystal hand-soldering +0 +4 +4 +Crystal +Crystal_SMD_2012-2Pin_2.0x1.2mm +SMD Crystal 2012/2 http://txccrystal.com/images/pdf/9ht11.pdf, 2.0x1.2mm^2 package +SMD SMT crystal +0 +2 +2 +Crystal +Crystal_SMD_2012-2Pin_2.0x1.2mm_HandSoldering +SMD Crystal 2012/2 http://txccrystal.com/images/pdf/9ht11.pdf, hand-soldering, 2.0x1.2mm^2 package +SMD SMT crystal hand-soldering +0 +2 +2 +Crystal +Crystal_SMD_2016-4Pin_2.0x1.6mm +SMD Crystal SERIES SMD2016/4 http://www.q-crystal.com/upload/5/2015552223166229.pdf, 2.0x1.6mm^2 package +SMD SMT crystal +0 +4 +4 +Crystal +Crystal_SMD_2520-4Pin_2.5x2.0mm +SMD Crystal SERIES SMD2520/4 http://www.newxtal.com/UploadFiles/Images/2012-11-12-09-29-09-776.pdf, 2.5x2.0mm^2 package +SMD SMT crystal +0 +4 +4 +Crystal +Crystal_SMD_3215-2Pin_3.2x1.5mm +SMD Crystal FC-135 https://support.epson.biz/td/api/doc_check.php?dl=brief_FC-135R_en.pdf +SMD SMT Crystal +0 +2 +2 +Crystal +Crystal_SMD_3225-4Pin_3.2x2.5mm +SMD Crystal SERIES SMD3225/4 http://www.txccrystal.com/images/pdf/7m-accuracy.pdf, 3.2x2.5mm^2 package +SMD SMT crystal +0 +4 +4 +Crystal +Crystal_SMD_3225-4Pin_3.2x2.5mm_HandSoldering +SMD Crystal SERIES SMD3225/4 http://www.txccrystal.com/images/pdf/7m-accuracy.pdf, hand-soldering, 3.2x2.5mm^2 package +SMD SMT crystal hand-soldering +0 +4 +4 +Crystal +Crystal_SMD_5032-2Pin_5.0x3.2mm +SMD Crystal SERIES SMD2520/2 http://www.icbase.com/File/PDF/HKC/HKC00061008.pdf, 5.0x3.2mm^2 package +SMD SMT crystal +0 +2 +2 +Crystal +Crystal_SMD_5032-2Pin_5.0x3.2mm_HandSoldering +SMD Crystal SERIES SMD2520/2 http://www.icbase.com/File/PDF/HKC/HKC00061008.pdf, hand-soldering, 5.0x3.2mm^2 package +SMD SMT crystal hand-soldering +0 +2 +2 +Crystal +Crystal_SMD_5032-4Pin_5.0x3.2mm +SMD Crystal SERIES SMD2520/4 http://www.icbase.com/File/PDF/HKC/HKC00061008.pdf, 5.0x3.2mm^2 package +SMD SMT crystal +0 +4 +4 +Crystal +Crystal_SMD_7050-2Pin_7.0x5.0mm +SMD Crystal SERIES SMD7050/4 https://www.foxonline.com/pdfs/FQ7050.pdf, 7.0x5.0mm^2 package +SMD SMT crystal +0 +2 +2 +Crystal +Crystal_SMD_7050-2Pin_7.0x5.0mm_HandSoldering +SMD Crystal SERIES SMD7050/4 https://www.foxonline.com/pdfs/FQ7050.pdf, hand-soldering, 7.0x5.0mm^2 package +SMD SMT crystal hand-soldering +0 +2 +2 +Crystal +Crystal_SMD_7050-4Pin_7.0x5.0mm +SMD Crystal SERIES SMD7050/4 https://www.foxonline.com/pdfs/FQ7050.pdf, 7.0x5.0mm^2 package +SMD SMT crystal +0 +4 +4 +Crystal +Crystal_SMD_Abracon_ABM3-2Pin_5.0x3.2mm +Abracon Miniature Ceramic Smd Crystal ABM3 http://www.abracon.com/Resonators/abm3.pdf, 5.0x3.2mm^2 package +SMD SMT crystal +0 +2 +2 +Crystal +Crystal_SMD_Abracon_ABM3-2Pin_5.0x3.2mm_HandSoldering +Abracon Miniature Ceramic Smd Crystal ABM3 http://www.abracon.com/Resonators/abm3.pdf, hand-soldering, 5.0x3.2mm^2 package +SMD SMT crystal hand-soldering +0 +2 +2 +Crystal +Crystal_SMD_Abracon_ABM3B-4Pin_5.0x3.2mm +Abracon Miniature Ceramic Smd Crystal ABM3B http://www.abracon.com/Resonators/abm3b.pdf, 5.0x3.2mm^2 package +SMD SMT crystal +0 +4 +4 +Crystal +Crystal_SMD_Abracon_ABM3C-4Pin_5.0x3.2mm +Abracon Miniature Ceramic Smd Crystal ABM3C http://www.abracon.com/Resonators/abm3c.pdf, 5.0x3.2mm^2 package +SMD SMT crystal +0 +4 +4 +Crystal +Crystal_SMD_Abracon_ABM7-2Pin_6.0x3.5mm +SMD Crystal Abracon ABM7, https://abracon.com/Resonators/abm7.pdf +SMD SMT crystal +0 +2 +2 +Crystal +Crystal_SMD_Abracon_ABM8G-4Pin_3.2x2.5mm +Abracon Miniature Ceramic Smd Crystal ABM8G http://www.abracon.com/Resonators/ABM8G.pdf, 3.2x2.5mm^2 package +SMD SMT crystal +0 +4 +4 +Crystal +Crystal_SMD_Abracon_ABM10-4Pin_2.5x2.0mm +Abracon Miniature Ceramic Smd Crystal ABM10 http://www.abracon.com/Resonators/ABM10.pdf +SMD SMT crystal Abracon ABM10 +0 +4 +4 +Crystal +Crystal_SMD_Abracon_ABS25-4Pin_8.0x3.8mm +Abracon Miniature Ceramic SMD Crystal ABS25 https://abracon.com/Resonators/abs25.pdf, 8.0x3.8mm^2 package +SMD SMT crystal +0 +4 +4 +Crystal +Crystal_SMD_ECS_CSM3X-2Pin_7.6x4.1mm +http://www.ecsxtal.com/store/pdf/CSM-3X.pdf +Crystal CSM-3X +0 +2 +2 +Crystal +Crystal_SMD_EuroQuartz_EQ161-2Pin_3.2x1.5mm +SMD Crystal EuroQuartz EQ161 series http://cdn-reichelt.de/documents/datenblatt/B400/PG32768C.pdf, 3.2x1.5mm^2 package +SMD SMT crystal +0 +2 +2 +Crystal +Crystal_SMD_EuroQuartz_EQ161-2Pin_3.2x1.5mm_HandSoldering +SMD Crystal EuroQuartz EQ161 series http://cdn-reichelt.de/documents/datenblatt/B400/PG32768C.pdf, hand-soldering, 3.2x1.5mm^2 package +SMD SMT crystal hand-soldering +0 +2 +2 +Crystal +Crystal_SMD_EuroQuartz_MJ-4Pin_5.0x3.2mm +SMD Crystal EuroQuartz MJ series http://cdn-reichelt.de/documents/datenblatt/B400/MJ.pdf, 5.0x3.2mm^2 package +SMD SMT crystal +0 +4 +4 +Crystal +Crystal_SMD_EuroQuartz_MJ-4Pin_5.0x3.2mm_HandSoldering +SMD Crystal EuroQuartz MJ series http://cdn-reichelt.de/documents/datenblatt/B400/MJ.pdf, hand-soldering, 5.0x3.2mm^2 package +SMD SMT crystal hand-soldering +0 +4 +4 +Crystal +Crystal_SMD_EuroQuartz_MQ-4Pin_7.0x5.0mm +SMD Crystal EuroQuartz MQ series http://cdn-reichelt.de/documents/datenblatt/B400/MQ.pdf, 7.0x5.0mm^2 package +SMD SMT crystal +0 +4 +4 +Crystal +Crystal_SMD_EuroQuartz_MQ-4Pin_7.0x5.0mm_HandSoldering +SMD Crystal EuroQuartz MQ series http://cdn-reichelt.de/documents/datenblatt/B400/MQ.pdf, hand-soldering, 7.0x5.0mm^2 package +SMD SMT crystal hand-soldering +0 +4 +4 +Crystal +Crystal_SMD_EuroQuartz_MQ2-2Pin_7.0x5.0mm +SMD Crystal EuroQuartz MQ2 series http://cdn-reichelt.de/documents/datenblatt/B400/MQ.pdf, 7.0x5.0mm^2 package +SMD SMT crystal +0 +2 +2 +Crystal +Crystal_SMD_EuroQuartz_MQ2-2Pin_7.0x5.0mm_HandSoldering +SMD Crystal EuroQuartz MQ2 series http://cdn-reichelt.de/documents/datenblatt/B400/MQ.pdf, hand-soldering, 7.0x5.0mm^2 package +SMD SMT crystal hand-soldering +0 +2 +2 +Crystal +Crystal_SMD_EuroQuartz_MT-4Pin_3.2x2.5mm +SMD Crystal EuroQuartz MT series http://cdn-reichelt.de/documents/datenblatt/B400/MT.pdf, 3.2x2.5mm^2 package +SMD SMT crystal +0 +4 +4 +Crystal +Crystal_SMD_EuroQuartz_MT-4Pin_3.2x2.5mm_HandSoldering +SMD Crystal EuroQuartz MT series http://cdn-reichelt.de/documents/datenblatt/B400/MT.pdf, hand-soldering, 3.2x2.5mm^2 package +SMD SMT crystal hand-soldering +0 +4 +4 +Crystal +Crystal_SMD_EuroQuartz_X22-4Pin_2.5x2.0mm +SMD Crystal EuroQuartz X22 series http://cdn-reichelt.de/documents/datenblatt/B400/DS_X22.pdf, 2.5x2.0mm^2 package +SMD SMT crystal +0 +4 +4 +Crystal +Crystal_SMD_EuroQuartz_X22-4Pin_2.5x2.0mm_HandSoldering +SMD Crystal EuroQuartz X22 series http://cdn-reichelt.de/documents/datenblatt/B400/DS_X22.pdf, hand-soldering, 2.5x2.0mm^2 package +SMD SMT crystal hand-soldering +0 +4 +4 +Crystal +Crystal_SMD_FOX_FE-2Pin_7.5x5.0mm +crystal Ceramic Resin Sealed SMD http://www.foxonline.com/pdfs/fe.pdf, 7.5x5.0mm^2 package +SMD SMT crystal +0 +2 +2 +Crystal +Crystal_SMD_FOX_FE-2Pin_7.5x5.0mm_HandSoldering +crystal Ceramic Resin Sealed SMD http://www.foxonline.com/pdfs/fe.pdf, hand-soldering, 7.5x5.0mm^2 package +SMD SMT crystal hand-soldering +0 +2 +2 +Crystal +Crystal_SMD_FOX_FQ7050-2Pin_7.0x5.0mm +FOX SMD Crystal SERIES SMD7050/4 https://www.foxonline.com/pdfs/FQ7050.pdf, 7.0x5.0mm^2 package +SMD SMT crystal +0 +2 +2 +Crystal +Crystal_SMD_FOX_FQ7050-2Pin_7.0x5.0mm_HandSoldering +FOX SMD Crystal SERIES SMD7050/4 https://www.foxonline.com/pdfs/FQ7050.pdf, hand-soldering, 7.0x5.0mm^2 package +SMD SMT crystal hand-soldering +0 +2 +2 +Crystal +Crystal_SMD_FOX_FQ7050-4Pin_7.0x5.0mm +FOX SMD Crystal SERIES SMD7050/4 https://www.foxonline.com/pdfs/FQ7050.pdf, 7.0x5.0mm^2 package +SMD SMT crystal +0 +4 +4 +Crystal +Crystal_SMD_FrontierElectronics_FM206 +SMD Watch Crystal FrontierElectronics FM206 6.0mm length 1.9mm diameter http://www.chinafronter.com/wp-content/uploads/2013/12/FM206.pdf +['FM206'] +0 +3 +3 +Crystal +Crystal_SMD_G8-2Pin_3.2x1.5mm +SMD Crystal G8, 3.2x1.5mm^2 package +SMD SMT crystal +0 +2 +2 +Crystal +Crystal_SMD_G8-2Pin_3.2x1.5mm_HandSoldering +SMD Crystal G8, hand-soldering, 3.2x1.5mm^2 package +SMD SMT crystal hand-soldering +0 +2 +2 +Crystal +Crystal_SMD_HC49-SD +SMD Crystal HC-49-SD http://cdn-reichelt.de/documents/datenblatt/B400/xxx-HC49-SMD.pdf, 11.4x4.7mm^2 package +SMD SMT crystal +0 +2 +2 +Crystal +Crystal_SMD_HC49-SD_HandSoldering +SMD Crystal HC-49-SD http://cdn-reichelt.de/documents/datenblatt/B400/xxx-HC49-SMD.pdf, hand-soldering, 11.4x4.7mm^2 package +SMD SMT crystal hand-soldering +0 +2 +2 +Crystal +Crystal_SMD_MicroCrystal_CC1V-T1A-2Pin_8.0x3.7mm +SMD Crystal MicroCrystal CC1V-T1A series https://www.microcrystal.com/fileadmin/Media/Products/32kHz/Datasheet/CC1V-T1A.pdf, 8.0x3.7mm^2 package +SMD SMT crystal +0 +2 +2 +Crystal +Crystal_SMD_MicroCrystal_CC1V-T1A-2Pin_8.0x3.7mm_HandSoldering +SMD Crystal MicroCrystal CC1V-T1A series https://www.microcrystal.com/fileadmin/Media/Products/32kHz/Datasheet/CC1V-T1A.pdf, hand-soldering, 8.0x3.7mm^2 package +SMD SMT crystal hand-soldering +0 +2 +2 +Crystal +Crystal_SMD_MicroCrystal_CC4V-T1A-2Pin_5.0x1.9mm +SMD Crystal MicroCrystal CC4V-T1A series http://cdn-reichelt.de/documents/datenblatt/B400/CC4V-T1A.pdf, 5.0x1.9mm^2 package +SMD SMT crystal +0 +2 +2 +Crystal +Crystal_SMD_MicroCrystal_CC4V-T1A-2Pin_5.0x1.9mm_HandSoldering +SMD Crystal MicroCrystal CC4V-T1A series http://cdn-reichelt.de/documents/datenblatt/B400/CC4V-T1A.pdf, hand-soldering, 5.0x1.9mm^2 package +SMD SMT crystal hand-soldering +0 +2 +2 +Crystal +Crystal_SMD_MicroCrystal_CC5V-T1A-2Pin_4.1x1.5mm +SMD Crystal MicroCrystal CC5V-T1A series http://cdn-reichelt.de/documents/datenblatt/B400/CC5V-T1A.pdf, 4.1x1.5mm^2 package +SMD SMT crystal +0 +2 +2 +Crystal +Crystal_SMD_MicroCrystal_CC5V-T1A-2Pin_4.1x1.5mm_HandSoldering +SMD Crystal MicroCrystal CC5V-T1A series http://cdn-reichelt.de/documents/datenblatt/B400/CC5V-T1A.pdf, hand-soldering, 4.1x1.5mm^2 package +SMD SMT crystal hand-soldering +0 +2 +2 +Crystal +Crystal_SMD_MicroCrystal_CC7V-T1A-2Pin_3.2x1.5mm +SMD Crystal MicroCrystal CC7V-T1A/CM7V-T1A series https://www.microcrystal.com/fileadmin/Media/Products/32kHz/Datasheet/CC7V-T1A.pdf, 3.2x1.5mm^2 package +SMD SMT crystal +0 +2 +2 +Crystal +Crystal_SMD_MicroCrystal_CC7V-T1A-2Pin_3.2x1.5mm_HandSoldering +SMD Crystal MicroCrystal CC7V-T1A/CM7V-T1A series http://www.microcrystal.com/images/_Product-Documentation/01_TF_ceramic_Packages/01_Datasheet/CC1V-T1A.pdf, hand-soldering, 3.2x1.5mm^2 package +SMD SMT crystal hand-soldering +0 +2 +2 +Crystal +Crystal_SMD_MicroCrystal_CC8V-T1A-2Pin_2.0x1.2mm +SMD Crystal MicroCrystal CC8V-T1A/CM8V-T1A series https://www.microcrystal.com/fileadmin/Media/Products/32kHz/Datasheet/CC8V-T1A.pdf, 2.0x1.2mm^2 package +SMD SMT crystal +0 +2 +2 +Crystal +Crystal_SMD_MicroCrystal_CC8V-T1A-2Pin_2.0x1.2mm_HandSoldering +SMD Crystal MicroCrystal CC8V-T1A/CM8V-T1A series http://www.microcrystal.com/images/_Product-Documentation/01_TF_ceramic_Packages/01_Datasheet/CC8V-T1A.pdf, hand-soldering, 2.0x1.2mm^2 package +SMD SMT crystal hand-soldering +0 +2 +2 +Crystal +Crystal_SMD_MicroCrystal_CM9V-T1A-2Pin_1.6x1.0mm +SMD Crystal MicroCrystal CM9V-T1A series https://www.microcrystal.com/fileadmin/Media/Products/32kHz/Datasheet/CM9V-T1A.pdf, 1.6x1.0mm^2 package +SMD SMT crystal +0 +2 +2 +Crystal +Crystal_SMD_MicroCrystal_CM9V-T1A-2Pin_1.6x1.0mm_HandSoldering +SMD Crystal MicroCrystal CM9V-T1A series http://www.microcrystal.com/images/_Product-Documentation/01_TF_ceramic_Packages/01_Datasheet/CM9V-T1A.pdf, hand-soldering, 1.6x1.0mm^2 package +SMD SMT crystal hand-soldering +0 +2 +2 +Crystal +Crystal_SMD_MicroCrystal_MS1V-T1K +SMD Watch Crystal MicroCrystal MS1V-T1K 6.1mm length 2.0mm diameter http://www.microcrystal.com/images/_Product-Documentation/03_TF_metal_Packages/01_Datasheet/MS1V-T1K.pdf +['MS1V-T1K'] +0 +3 +3 +Crystal +Crystal_SMD_MicroCrystal_MS3V-T1R +SMD Watch Crystal MicroCrystal MS3V-T1R 5.2mm length 1.4mm diameter http://www.microcrystal.com/images/_Product-Documentation/03_TF_metal_Packages/01_Datasheet/MS3V-T1R.pdf +['MS3V-T1R'] +0 +3 +3 +Crystal +Crystal_SMD_Qantek_QC5CB-2Pin_5x3.2mm +SMD Crystal Qantek QC5CB, https://www.qantek.com/tl_files/products/crystals/QC5CB.pdf +SMD SMT crystal +0 +2 +2 +Crystal +Crystal_SMD_SeikoEpson_FA238-4Pin_3.2x2.5mm +crystal Epson Toyocom FA-238 https://support.epson.biz/td/api/doc_check.php?dl=brief_fa-238v_en.pdf, 3.2x2.5mm^2 package +SMD SMT crystal +0 +4 +4 +Crystal +Crystal_SMD_SeikoEpson_FA238-4Pin_3.2x2.5mm_HandSoldering +crystal Epson Toyocom FA-238 series https://support.epson.biz/td/api/doc_check.php?dl=brief_fa-238v_en.pdf, hand-soldering, 3.2x2.5mm^2 package +SMD SMT crystal hand-soldering +0 +4 +4 +Crystal +Crystal_SMD_SeikoEpson_FA238V-4Pin_3.2x2.5mm +crystal Epson Toyocom FA-238 series https://support.epson.biz/td/api/doc_check.php?dl=brief_fa-238v_en.pdf, 3.2x2.5mm^2 package +SMD SMT crystal +0 +4 +4 +Crystal +Crystal_SMD_SeikoEpson_FA238V-4Pin_3.2x2.5mm_HandSoldering +crystal Epson Toyocom FA-238 series http://www.mouser.com/ds/2/137/1721499-465440.pdf, hand-soldering, 3.2x2.5mm^2 package +SMD SMT crystal hand-soldering +0 +4 +4 +Crystal +Crystal_SMD_SeikoEpson_MA406-4Pin_11.7x4.0mm +SMD Crystal Seiko Epson MC-506 http://media.digikey.com/pdf/Data%20Sheets/Epson%20PDFs/MA-505,506.pdf, 11.7x4.0mm^2 package +SMD SMT crystal +0 +4 +4 +Crystal +Crystal_SMD_SeikoEpson_MA406-4Pin_11.7x4.0mm_HandSoldering +SMD Crystal Seiko Epson MC-506 http://media.digikey.com/pdf/Data%20Sheets/Epson%20PDFs/MA-505,506.pdf, hand-soldering, 11.7x4.0mm^2 package +SMD SMT crystal hand-soldering +0 +4 +4 +Crystal +Crystal_SMD_SeikoEpson_MA505-2Pin_12.7x5.1mm +SMD Crystal Seiko Epson MC-505 http://media.digikey.com/pdf/Data%20Sheets/Epson%20PDFs/MA-505,506.pdf, 12.7x5.1mm^2 package +SMD SMT crystal +0 +2 +2 +Crystal +Crystal_SMD_SeikoEpson_MA505-2Pin_12.7x5.1mm_HandSoldering +SMD Crystal Seiko Epson MC-505 http://media.digikey.com/pdf/Data%20Sheets/Epson%20PDFs/MA-505,506.pdf, hand-soldering, 12.7x5.1mm^2 package +SMD SMT crystal hand-soldering +0 +2 +2 +Crystal +Crystal_SMD_SeikoEpson_MA506-4Pin_12.7x5.1mm +SMD Crystal Seiko Epson MC-506 http://media.digikey.com/pdf/Data%20Sheets/Epson%20PDFs/MA-505,506.pdf, 12.7x5.1mm^2 package +SMD SMT crystal +0 +4 +4 +Crystal +Crystal_SMD_SeikoEpson_MA506-4Pin_12.7x5.1mm_HandSoldering +SMD Crystal Seiko Epson MC-506 http://media.digikey.com/pdf/Data%20Sheets/Epson%20PDFs/MA-505,506.pdf, hand-soldering, 12.7x5.1mm^2 package +SMD SMT crystal hand-soldering +0 +4 +4 +Crystal +Crystal_SMD_SeikoEpson_MC146-4Pin_6.7x1.5mm +SMD Crystal Seiko Epson MC-146 https://support.epson.biz/td/api/doc_check.php?dl=brief_MC-156_en.pdf, 6.7x1.5mm^2 package +SMD SMT crystal +0 +4 +4 +Crystal +Crystal_SMD_SeikoEpson_MC146-4Pin_6.7x1.5mm_HandSoldering +SMD Crystal Seiko Epson MC-146 https://support.epson.biz/td/api/doc_check.php?dl=brief_MC-156_en.pdf, hand-soldering, 6.7x1.5mm^2 package +SMD SMT crystal hand-soldering +0 +4 +4 +Crystal +Crystal_SMD_SeikoEpson_MC156-4Pin_7.1x2.5mm +SMD Crystal Seiko Epson MC-156 https://support.epson.biz/td/api/doc_check.php?dl=brief_MC-156_en.pdf, 7.1x2.5mm^2 package +SMD SMT crystal +0 +4 +4 +Crystal +Crystal_SMD_SeikoEpson_MC156-4Pin_7.1x2.5mm_HandSoldering +SMD Crystal Seiko Epson MC-156 https://support.epson.biz/td/api/doc_check.php?dl=brief_MC-156_en.pdf, hand-soldering, 7.1x2.5mm^2 package +SMD SMT crystal hand-soldering +0 +4 +4 +Crystal +Crystal_SMD_SeikoEpson_MC306-4Pin_8.0x3.2mm +SMD Crystal Seiko Epson MC-306 https://support.epson.biz/td/api/doc_check.php?dl=brief_MC-306_en.pdf, 8.0x3.2mm^2 package +SMD SMT crystal +0 +4 +4 +Crystal +Crystal_SMD_SeikoEpson_MC306-4Pin_8.0x3.2mm_HandSoldering +SMD Crystal Seiko Epson MC-306 https://support.epson.biz/td/api/doc_check.php?dl=brief_MC-306_en.pdf, hand-soldering, 8.0x3.2mm^2 package +SMD SMT crystal hand-soldering +0 +4 +4 +Crystal +Crystal_SMD_SeikoEpson_MC405-2Pin_9.6x4.1mm +SMD Crystal Seiko Epson MC-405 https://support.epson.biz/td/api/doc_check.php?dl=brief_MC-306_en.pdf, 9.6x4.1mm^2 package +SMD SMT crystal +0 +2 +2 +Crystal +Crystal_SMD_SeikoEpson_MC405-2Pin_9.6x4.1mm_HandSoldering +SMD Crystal Seiko Epson MC-405 https://support.epson.biz/td/api/doc_check.php?dl=brief_MC-306_en.pdf, hand-soldering, 9.6x4.1mm^2 package +SMD SMT crystal hand-soldering +0 +2 +2 +Crystal +Crystal_SMD_SeikoEpson_MC406-4Pin_9.6x4.1mm +SMD Crystal Seiko Epson MC-406 https://support.epson.biz/td/api/doc_check.php?dl=brief_MC-306_en.pdf, 9.6x4.1mm^2 package +SMD SMT crystal +0 +4 +4 +Crystal +Crystal_SMD_SeikoEpson_MC406-4Pin_9.6x4.1mm_HandSoldering +SMD Crystal Seiko Epson MC-406 https://support.epson.biz/td/api/doc_check.php?dl=brief_MC-306_en.pdf, hand-soldering, 9.6x4.1mm^2 package +SMD SMT crystal hand-soldering +0 +4 +4 +Crystal +Crystal_SMD_SeikoEpson_TSX3225-4Pin_3.2x2.5mm +crystal Epson Toyocom TSX-3225 series https://support.epson.biz/td/api/doc_check.php?dl=brief_fa-238v_en.pdf, 3.2x2.5mm^2 package +SMD SMT crystal +0 +4 +4 +Crystal +Crystal_SMD_SeikoEpson_TSX3225-4Pin_3.2x2.5mm_HandSoldering +crystal Epson Toyocom TSX-3225 series https://support.epson.biz/td/api/doc_check.php?dl=brief_fa-238v_en.pdf, hand-soldering, 3.2x2.5mm^2 package +SMD SMT crystal hand-soldering +0 +4 +4 +Crystal +Crystal_SMD_TXC_7A-2Pin_5x3.2mm +SMD Crystal TXC 7A http://txccrystal.com/images/pdf/7a.pdf +SMD SMT crystal +0 +2 +2 +Crystal +Crystal_SMD_TXC_7M-4Pin_3.2x2.5mm +SMD Crystal TXC 7M http://www.txccrystal.com/images/pdf/7m-accuracy.pdf, 3.2x2.5mm^2 package +SMD SMT crystal +0 +4 +4 +Crystal +Crystal_SMD_TXC_7M-4Pin_3.2x2.5mm_HandSoldering +SMD Crystal TXC 7M http://www.txccrystal.com/images/pdf/7m-accuracy.pdf, hand-soldering, 3.2x2.5mm^2 package +SMD SMT crystal hand-soldering +0 +4 +4 +Crystal +Crystal_SMD_TXC_9HT11-2Pin_2.0x1.2mm +SMD Crystal TXC 9HT11 http://txccrystal.com/images/pdf/9ht11.pdf, 2.0x1.2mm^2 package +SMD SMT crystal +0 +2 +2 +Crystal +Crystal_SMD_TXC_9HT11-2Pin_2.0x1.2mm_HandSoldering +SMD Crystal TXC 9HT11 http://txccrystal.com/images/pdf/9ht11.pdf, hand-soldering, 2.0x1.2mm^2 package +SMD SMT crystal hand-soldering +0 +2 +2 +Crystal +Crystal_SMD_TXC_AX_8045-2Pin_8.0x4.5mm +http://www.txccrystal.com/images/pdf/ax-automotive.pdf +SMD SMT crystal +0 +2 +2 +Crystal +Resonator-2Pin_W6.0mm_H3.0mm +Ceramic Resomator/Filter 6.0x3.0mm^2, length*width=6.0x3.0mm^2 package, package length=6.0mm, package width=3.0mm, 2 pins +THT ceramic resonator filter +0 +2 +2 +Crystal +Resonator-2Pin_W7.0mm_H2.5mm +Ceramic Resomator/Filter 7.0x2.5mm^2, length*width=7.0x2.5mm^2 package, package length=7.0mm, package width=2.5mm, 2 pins +THT ceramic resonator filter +0 +2 +2 +Crystal +Resonator-2Pin_W8.0mm_H3.5mm +Ceramic Resomator/Filter 8.0x3.5mm^2, length*width=8.0x3.5mm^2 package, package length=8.0mm, package width=3.5mm, 2 pins +THT ceramic resonator filter +0 +2 +2 +Crystal +Resonator-2Pin_W10.0mm_H5.0mm +Ceramic Resomator/Filter 10.0x5.0 RedFrequency MG/MT/MX series, http://www.red-frequency.com/download/datenblatt/redfrequency-datenblatt-ir-zta.pdf, length*width=10.0x5.0mm^2 package, package length=10.0mm, package width=5.0mm, 2 pins +THT ceramic resonator filter +0 +2 +2 +Crystal +Resonator-3Pin_W6.0mm_H3.0mm +Ceramic Resomator/Filter 6.0x3.0mm^2, length*width=6.0x3.0mm^2 package, package length=6.0mm, package width=3.0mm, 3 pins +THT ceramic resonator filter +0 +3 +3 +Crystal +Resonator-3Pin_W7.0mm_H2.5mm +Ceramic Resomator/Filter 7.0x2.5mm^2, length*width=7.0x2.5mm^2 package, package length=7.0mm, package width=2.5mm, 3 pins +THT ceramic resonator filter +0 +3 +3 +Crystal +Resonator-3Pin_W8.0mm_H3.5mm +Ceramic Resomator/Filter 8.0x3.5mm^2, length*width=8.0x3.5mm^2 package, package length=8.0mm, package width=3.5mm, 3 pins +THT ceramic resonator filter +0 +3 +3 +Crystal +Resonator-3Pin_W10.0mm_H5.0mm +Ceramic Resomator/Filter 10.0x5.0mm^2 RedFrequency MG/MT/MX series, http://www.red-frequency.com/download/datenblatt/redfrequency-datenblatt-ir-zta.pdf, length*width=10.0x5.0mm^2 package, package length=10.0mm, package width=5.0mm, 3 pins +THT ceramic resonator filter +0 +3 +3 +Crystal +Resonator_SMD-3Pin_7.2x3.0mm +SMD Resomator/Filter 7.2x3.0mm, Murata CSTCC8M00G53-R0; 8MHz resonator, SMD, Farnell (Element 14) #1170435, http://www.farnell.com/datasheets/19296.pdf?_ga=1.247244932.122297557.1475167906, 7.2x3.0mm^2 package +SMD SMT ceramic resonator filter filter +0 +3 +3 +Crystal +Resonator_SMD-3Pin_7.2x3.0mm_HandSoldering +SMD Resomator/Filter 7.2x3.0mm, Murata CSTCC8M00G53-R0; 8MHz resonator, SMD, Farnell (Element 14) #1170435, http://www.farnell.com/datasheets/19296.pdf?_ga=1.247244932.122297557.1475167906, hand-soldering, 7.2x3.0mm^2 package +SMD SMT ceramic resonator filter filter hand-soldering +0 +3 +3 +Crystal +Resonator_SMD_muRata_CDSCB-2Pin_4.5x2.0mm +SMD Resomator/Filter Murata CDSCB, http://cdn-reichelt.de/documents/datenblatt/B400/SFECV-107.pdf, 4.5x2.0mm^2 package +SMD SMT ceramic resonator filter filter +0 +2 +2 +Crystal +Resonator_SMD_muRata_CDSCB-2Pin_4.5x2.0mm_HandSoldering +SMD Resomator/Filter Murata CDSCB, http://cdn-reichelt.de/documents/datenblatt/B400/SFECV-107.pdf, hand-soldering, 4.5x2.0mm^2 package +SMD SMT ceramic resonator filter filter hand-soldering +0 +2 +2 +Crystal +Resonator_SMD_muRata_CSTxExxV-3Pin_3.0x1.1mm +SMD Resomator/Filter Murata CSTCE, https://www.murata.com/en-eu/products/productdata/8801162264606/SPEC-CSTNE16M0VH3C000R0.pdf +SMD SMT ceramic resonator filter +0 +3 +3 +Crystal +Resonator_SMD_muRata_CSTxExxV-3Pin_3.0x1.1mm_HandSoldering +SMD Resomator/Filter Murata CSTCE, https://www.murata.com/en-eu/products/productdata/8801162264606/SPEC-CSTNE16M0VH3C000R0.pdf +SMD SMT ceramic resonator filter +0 +3 +3 +Crystal +Resonator_SMD_muRata_SFECV-3Pin_6.9x2.9mm +SMD Resomator/Filter Murata SFECV, http://cdn-reichelt.de/documents/datenblatt/B400/SFECV-107.pdf, 6.9x2.9mm^2 package +SMD SMT ceramic resonator filter filter +0 +3 +3 +Crystal +Resonator_SMD_muRata_SFECV-3Pin_6.9x2.9mm_HandSoldering +SMD Resomator/Filter Murata SFECV, http://cdn-reichelt.de/documents/datenblatt/B400/SFECV-107.pdf, hand-soldering, 6.9x2.9mm^2 package +SMD SMT ceramic resonator filter filter hand-soldering +0 +3 +3 +Crystal +Resonator_SMD_muRata_SFSKA-3Pin_7.9x3.8mm +SMD Resomator/Filter Murata SFSKA, http://cdn-reichelt.de/documents/datenblatt/B400/SFECV-107.pdf, 7.9x3.8mm^2 package +SMD SMT ceramic resonator filter filter +0 +3 +3 +Crystal +Resonator_SMD_muRata_SFSKA-3Pin_7.9x3.8mm_HandSoldering +SMD Resomator/Filter Murata SFSKA, http://cdn-reichelt.de/documents/datenblatt/B400/SFECV-107.pdf, hand-soldering, 7.9x3.8mm^2 package +SMD SMT ceramic resonator filter filter hand-soldering +0 +3 +3 +Crystal +Resonator_SMD_muRata_TPSKA-3Pin_7.9x3.8mm +SMD Resomator/Filter Murata TPSKA, http://cdn-reichelt.de/documents/datenblatt/B400/SFECV-107.pdf, 7.9x3.8mm^2 package +SMD SMT ceramic resonator filter filter +0 +3 +3 +Crystal +Resonator_SMD_muRata_TPSKA-3Pin_7.9x3.8mm_HandSoldering +SMD Resomator/Filter Murata TPSKA, http://cdn-reichelt.de/documents/datenblatt/B400/SFECV-107.pdf, hand-soldering, 7.9x3.8mm^2 package +SMD SMT ceramic resonator filter filter hand-soldering +0 +3 +3 +Crystal +Resonator_muRata_CSTLSxxxG-3Pin_W8.0mm_H3.0mm +Ceramic Resomator/Filter Murata CSTLSxxxG, http://www.murata.com/~/media/webrenewal/support/library/catalog/products/timingdevice/ceralock/p17e.ashx, length*width=8.0x3.0mm^2 package, package length=8.0mm, package width=3.0mm, 3 pins +THT ceramic resonator filter CSTLSxxxG +0 +3 +3 +Crystal +Resonator_muRata_CSTLSxxxX-3Pin_W5.5mm_H3.0mm +Ceramic Resomator/Filter Murata CSTLSxxxX, http://www.murata.com/~/media/webrenewal/support/library/catalog/products/timingdevice/ceralock/p17e.ashx, length*width=5.5x3.0mm^2 package, package length=5.5mm, package width=3.0mm, 3 pins +THT ceramic resonator filter CSTLSxxxX +0 +3 +3 +Crystal +Resonator_muRata_DSN6-3Pin_W7.0mm_H2.5mm +Ceramic Resomator/Filter Murata DSN6, http://cdn-reichelt.de/documents/datenblatt/B400/DSN6NC51H.pdf, length*width=7.0x2.5mm^2 package, package length=7.0mm, package width=2.5mm, 3 pins +THT ceramic resonator filter DSN6 +0 +3 +3 +Crystal +Resonator_muRata_DSS6-3Pin_W7.0mm_H2.5mm +Ceramic Resomator/Filter Murata DSS6, http://cdn-reichelt.de/documents/datenblatt/B400/DSN6NC51H.pdf, length*width=7.0x2.5mm^2 package, package length=7.0mm, package width=2.5mm, 3 pins +THT ceramic resonator filter DSS6 +0 +3 +3 +Diode_SMD +D_0201_0603Metric +Diode SMD 0201 (0603 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: https://www.vishay.com/docs/20052/crcw0201e3.pdf), generated with kicad-footprint-generator +diode +0 +4 +2 +Diode_SMD +D_0201_0603Metric_Castellated +Diode SMD 0201 (0603 Metric), castellated end terminal, IPC_7351 nominal, (Body size source: https://www.vishay.com/docs/20052/crcw0201e3.pdf), generated with kicad-footprint-generator +diode castellated +0 +4 +2 +Diode_SMD +D_0201_0603Metric_Pad0.64x0.40mm_HandSolder +Diode SMD 0201 (0603 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: https://www.vishay.com/docs/20052/crcw0201e3.pdf), generated with kicad-footprint-generator +diode handsolder +0 +4 +2 +Diode_SMD +D_0402_1005Metric +Diode SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator +diode +0 +2 +2 +Diode_SMD +D_0402_1005Metric_Castellated +Diode SMD 0402 (1005 Metric), castellated end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator +diode castellated +0 +2 +2 +Diode_SMD +D_0402_1005Metric_Pad0.77x0.64mm_HandSolder +Diode SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator +diode handsolder +0 +2 +2 +Diode_SMD +D_0603_1608Metric +Diode SMD 0603 (1608 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator +diode +0 +2 +2 +Diode_SMD +D_0603_1608Metric_Castellated +Diode SMD 0603 (1608 Metric), castellated end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator +diode castellated +0 +2 +2 +Diode_SMD +D_0603_1608Metric_Pad1.05x0.95mm_HandSolder +Diode SMD 0603 (1608 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator +diode handsolder +0 +2 +2 +Diode_SMD +D_0805_2012Metric +Diode SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing), generated with kicad-footprint-generator +diode +0 +2 +2 +Diode_SMD +D_0805_2012Metric_Castellated +Diode SMD 0805 (2012 Metric), castellated end terminal, IPC_7351 nominal, (Body size source: https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing), generated with kicad-footprint-generator +diode castellated +0 +2 +2 +Diode_SMD +D_0805_2012Metric_Pad1.15x1.40mm_HandSolder +Diode SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing), generated with kicad-footprint-generator +diode handsolder +0 +2 +2 +Diode_SMD +D_01005_0402Metric +Diode SMD 01005 (0402 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.vishay.com/docs/20056/crcw01005e3.pdf), generated with kicad-footprint-generator +diode +0 +4 +2 +Diode_SMD +D_01005_0402Metric_Castellated +Diode SMD 01005 (0402 Metric), castellated end terminal, IPC_7351 nominal, (Body size source: http://www.vishay.com/docs/20056/crcw01005e3.pdf), generated with kicad-footprint-generator +diode castellated +0 +4 +2 +Diode_SMD +D_01005_0402Metric_Pad0.57x0.30mm_HandSolder +Diode SMD 01005 (0402 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.vishay.com/docs/20056/crcw01005e3.pdf), generated with kicad-footprint-generator +diode handsolder +0 +4 +2 +Diode_SMD +D_1206_3216Metric +Diode SMD 1206 (3216 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator +diode +0 +2 +2 +Diode_SMD +D_1206_3216Metric_Castellated +Diode SMD 1206 (3216 Metric), castellated end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator +diode castellated +0 +2 +2 +Diode_SMD +D_1206_3216Metric_Pad1.42x1.75mm_HandSolder +Diode SMD 1206 (3216 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator +diode handsolder +0 +2 +2 +Diode_SMD +D_1210_3225Metric +Diode SMD 1210 (3225 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator +diode +0 +2 +2 +Diode_SMD +D_1210_3225Metric_Castellated +Diode SMD 1210 (3225 Metric), castellated end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator +diode castellated +0 +2 +2 +Diode_SMD +D_1210_3225Metric_Pad1.42x2.65mm_HandSolder +Diode SMD 1210 (3225 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator +diode handsolder +0 +2 +2 +Diode_SMD +D_1812_4532Metric +Diode SMD 1812 (4532 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: https://www.nikhef.nl/pub/departments/mt/projects/detectorR_D/dtddice/ERJ2G.pdf), generated with kicad-footprint-generator +diode +0 +2 +2 +Diode_SMD +D_1812_4532Metric_Castellated +Diode SMD 1812 (4532 Metric), castellated end terminal, IPC_7351 nominal, (Body size source: https://www.nikhef.nl/pub/departments/mt/projects/detectorR_D/dtddice/ERJ2G.pdf), generated with kicad-footprint-generator +diode castellated +0 +2 +2 +Diode_SMD +D_1812_4532Metric_Pad1.30x3.40mm_HandSolder +Diode SMD 1812 (4532 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: https://www.nikhef.nl/pub/departments/mt/projects/detectorR_D/dtddice/ERJ2G.pdf), generated with kicad-footprint-generator +diode handsolder +0 +2 +2 +Diode_SMD +D_2010_5025Metric +Diode SMD 2010 (5025 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator +diode +0 +2 +2 +Diode_SMD +D_2010_5025Metric_Castellated +Diode SMD 2010 (5025 Metric), castellated end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator +diode castellated +0 +2 +2 +Diode_SMD +D_2010_5025Metric_Pad1.52x2.65mm_HandSolder +Diode SMD 2010 (5025 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator +diode handsolder +0 +2 +2 +Diode_SMD +D_2114_3652Metric +Diode SMD 2114 (3652 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size from: http://datasheets.avx.com/schottky.pdf), generated with kicad-footprint-generator +diode +0 +2 +2 +Diode_SMD +D_2114_3652Metric_Castellated +Diode SMD 2114 (3652 Metric), castellated end terminal, IPC_7351 nominal, (Body size from: http://datasheets.avx.com/schottky.pdf), generated with kicad-footprint-generator +diode castellated +0 +2 +2 +Diode_SMD +D_2114_3652Metric_Pad1.85x3.75mm_HandSolder +Diode SMD 2114 (3652 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size from: http://datasheets.avx.com/schottky.pdf), generated with kicad-footprint-generator +diode handsolder +0 +2 +2 +Diode_SMD +D_2512_6332Metric +Diode SMD 2512 (6332 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator +diode +0 +2 +2 +Diode_SMD +D_2512_6332Metric_Castellated +Diode SMD 2512 (6332 Metric), castellated end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator +diode castellated +0 +2 +2 +Diode_SMD +D_2512_6332Metric_Pad1.52x3.35mm_HandSolder +Diode SMD 2512 (6332 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator +diode handsolder +0 +2 +2 +Diode_SMD +D_2816_7142Metric +Diode SMD 2816 (7142 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size from: https://www.vishay.com/docs/30100/wsl.pdf), generated with kicad-footprint-generator +diode +0 +2 +2 +Diode_SMD +D_2816_7142Metric_Castellated +Diode SMD 2816 (7142 Metric), castellated end terminal, IPC_7351 nominal, (Body size from: https://www.vishay.com/docs/30100/wsl.pdf), generated with kicad-footprint-generator +diode castellated +0 +2 +2 +Diode_SMD +D_2816_7142Metric_Pad3.20x4.45mm_HandSolder +Diode SMD 2816 (7142 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size from: https://www.vishay.com/docs/30100/wsl.pdf), generated with kicad-footprint-generator +diode handsolder +0 +2 +2 +Diode_SMD +D_3220_8050Metric +Diode SMD 3220 (8050 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size from: http://datasheets.avx.com/schottky.pdf), generated with kicad-footprint-generator +diode +0 +2 +2 +Diode_SMD +D_3220_8050Metric_Castellated +Diode SMD 3220 (8050 Metric), castellated end terminal, IPC_7351 nominal, (Body size from: http://datasheets.avx.com/schottky.pdf), generated with kicad-footprint-generator +diode castellated +0 +2 +2 +Diode_SMD +D_3220_8050Metric_Pad2.65x5.15mm_HandSolder +Diode SMD 3220 (8050 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size from: http://datasheets.avx.com/schottky.pdf), generated with kicad-footprint-generator +diode handsolder +0 +2 +2 +Diode_SMD +D_MELF +Diode, MELF,, +Diode MELF +0 +2 +2 +Diode_SMD +D_MELF-RM10_Universal_Handsoldering +Diode, Universal, MELF, RM10, Handsoldering, SMD, Thruhole, +Diode Universal MELF RM10 Handsoldering SMD Thruhole +0 +2 +2 +Diode_SMD +D_MELF_Handsoldering +Diode MELF Handsoldering +Diode MELF Handsoldering +0 +2 +2 +Diode_SMD +D_MicroMELF +Diode, MicroMELF, Reflow Soldering, http://www.vishay.com/docs/85597/bzm55.pdf +MicroMELF Diode +0 +2 +2 +Diode_SMD +D_MicroMELF_Handsoldering +Diode, MicroMELF, Hand Soldering, http://www.vishay.com/docs/85597/bzm55.pdf +MicroMELF Diode +0 +2 +2 +Diode_SMD +D_MiniMELF +Diode Mini-MELF (SOD-80) +Diode Mini-MELF (SOD-80) +0 +2 +2 +Diode_SMD +D_MiniMELF_Handsoldering +Diode Mini-MELF (SOD-80) Handsoldering +Diode Mini-MELF (SOD-80) Handsoldering +0 +2 +2 +Diode_SMD +D_PowerDI-5 +PowerDI,Diode,Vishay,https://www.diodes.com/assets/Package-Files/PowerDI5.pdf +PowerDI diode vishay +0 +3 +2 +Diode_SMD +D_PowerDI-123 +http://www.diodes.com/_files/datasheets/ds30497.pdf +PowerDI diode vishay +0 +2 +2 +Diode_SMD +D_Powermite2_AK +Microsemi Powermite 2 SMD power package (https://www.microsemi.com/packaging-information/partpackage/details?pid=5341) +PowerMite2 +0 +2 +2 +Diode_SMD +D_Powermite2_KA +Microsemi Powermite 2 SMD power package (https://www.microsemi.com/packaging-information/partpackage/details?pid=5341) +PowerMite2 +0 +2 +2 +Diode_SMD +D_Powermite3 +Microsemi Powermite 3 SMD power package (https://www.microsemi.com/packaging-information/partpackage/details?pid=5340) +PowerMite3 +0 +3 +3 +Diode_SMD +D_Powermite_AK +Microsemi Powermite SMD power package (https://www.microsemi.com/packaging-information/partpackage/details?pid=5339, https://www.onsemi.com/pub/Collateral/457-04.PDF) +Powermite +0 +2 +2 +Diode_SMD +D_Powermite_KA +Microsemi Powermite SMD power package (https://www.microsemi.com/packaging-information/partpackage/details?pid=5339, https://www.onsemi.com/pub/Collateral/457-04.PDF) +Powermite +0 +2 +2 +Diode_SMD +D_QFN_3.3x3.3mm_P0.65mm +QFN, diode, 3.3x3.3x1mm (https://www.wolfspeed.com/media/downloads/846/C3D1P7060Q.pdf) +diode qfn 3.3 +0 +3 +2 +Diode_SMD +D_SC-80 +JEITA SC-80 +SC-80 +0 +2 +2 +Diode_SMD +D_SC-80_HandSoldering +JEITA SC-80 +SC-80 +0 +2 +2 +Diode_SMD +D_SMA +Diode SMA (DO-214AC) +Diode SMA (DO-214AC) +0 +2 +2 +Diode_SMD +D_SMA-SMB_Universal_Handsoldering +Diode, Universal, SMA (DO-214AC) or SMB (DO-214AA), Handsoldering, +Diode Universal SMA (DO-214AC) SMB (DO-214AA) Handsoldering +0 +2 +2 +Diode_SMD +D_SMA_Handsoldering +Diode SMA (DO-214AC) Handsoldering +Diode SMA (DO-214AC) Handsoldering +0 +2 +2 +Diode_SMD +D_SMB +Diode SMB (DO-214AA) +Diode SMB (DO-214AA) +0 +2 +2 +Diode_SMD +D_SMB-SMC_Universal_Handsoldering +Diode, Universal, SMB(DO-214AA) or SMC (DO-214AB), Handsoldering, +Diode Universal SMB(DO-214AA) SMC (DO-214AB) Handsoldering +0 +2 +2 +Diode_SMD +D_SMB_Handsoldering +Diode SMB (DO-214AA) Handsoldering +Diode SMB (DO-214AA) Handsoldering +0 +2 +2 +Diode_SMD +D_SMB_Modified +Diode SMB (DO-214AA) Modified (http://www.littelfuse.com/~/media/electronics/datasheets/sidactors/littelfuse_sidactor_battrax_positive_negative_modified_do_214_datasheet.pdf.pdf) +Diode SMB (DO-214AA) +0 +3 +3 +Diode_SMD +D_SMC +Diode SMC (DO-214AB) +Diode SMC (DO-214AB) +0 +2 +2 +Diode_SMD +D_SMC-RM10_Universal_Handsoldering +Diode, Universal, SMC (DO-214AB), RM10, Handsoldering, SMD, Thruhole +Diode Universal SMC (DO-214AB) RM10 Handsoldering SMD Thruhole +0 +2 +2 +Diode_SMD +D_SMC_Handsoldering +Diode SMC (DO-214AB) Handsoldering +Diode SMC (DO-214AB) Handsoldering +0 +2 +2 +Diode_SMD +D_SMF +Diode SMF (DO-219AB), http://www.vishay.com/docs/95572/smf_do-219ab.pdf +Diode SMF (DO-214AB) +0 +2 +2 +Diode_SMD +D_SOD-110 +SOD-110 +SOD-110 +0 +2 +2 +Diode_SMD +D_SOD-123 +SOD-123 +SOD-123 +0 +2 +2 +Diode_SMD +D_SOD-123F +D_SOD-123F +D_SOD-123F +0 +2 +2 +Diode_SMD +D_SOD-128 +D_SOD-128 (CFP5 SlimSMAW), https://assets.nexperia.com/documents/outline-drawing/SOD128.pdf +D_SOD-128 +0 +2 +2 +Diode_SMD +D_SOD-323 +SOD-323 +SOD-323 +0 +2 +2 +Diode_SMD +D_SOD-323F +SOD-323F http://www.nxp.com/documents/outline_drawing/SOD323F.pdf +SOD-323F +0 +2 +2 +Diode_SMD +D_SOD-323_HandSoldering +SOD-323 +SOD-323 +0 +2 +2 +Diode_SMD +D_SOD-523 +http://www.diodes.com/datasheets/ap02001.pdf p.144 +Diode SOD523 +0 +2 +2 +Diode_SMD +D_SOD-923 +https://www.onsemi.com/pub/Collateral/ESD9B-D.PDF#page=4 +Diode SOD923 +0 +2 +2 +Diode_SMD +D_SOT-23_ANK +SOT-23, Single Diode +SOT-23 +0 +3 +2 +Diode_SMD +D_SOT-23_NKA +SOT-23, Single Diode +SOT-23 +0 +3 +2 +Diode_SMD +D_TUMD2 +ROHM - TUMD2 +TUMD2 +0 +2 +2 +Diode_SMD +Diode_Bridge_Bourns_CD-DF4xxS +8.1x10.5mm, 4A, single phase bridge rectifier, https://www.bourns.com/docs/Product-Datasheets/CD-DF4xxSL.pdf +Surface Mount Bridge Rectifier Diode +0 +4 +4 +Diode_SMD +Diode_Bridge_Diotec_ABS +SMD diode bridge ABS (Diotec), see https://diotec.com/tl_files/diotec/files/pdf/datasheets/abs2.pdf +ABS MBLS +0 +4 +4 +Diode_SMD +Diode_Bridge_Diotec_MicroDil_3.0x3.0x1.8mm +SMD package Diotec Diotec MicroDil, body 3.0x3.0x1.8mm (e.g. diode bridge), see https://diotec.com/tl_files/diotec/files/pdf/datasheets/mys40.pdf +Diotec MicroDil diode bridge +0 +4 +4 +Diode_SMD +Diode_Bridge_Diotec_SO-DIL-Slim +SMD diode bridge Diotec SO-DIL Slim, see https://diotec.com/tl_files/diotec/files/pdf/datasheets/b40fs.pdf +DFS SO-DIL Slim +0 +4 +4 +Diode_SMD +Diode_Bridge_Vishay_DFS +SMD diode bridge DFS, see http://www.vishay.com/docs/88854/padlayouts.pdf +DFS +0 +4 +4 +Diode_SMD +Diode_Bridge_Vishay_DFSFlat +SMD diode bridge Low Profile DFS "Flat", see http://www.vishay.com/docs/88874/dfl15005.pdf +DFS +0 +4 +4 +Diode_SMD +Diode_Bridge_Vishay_MBLS +SMD diode bridge MBLS, see http://www.vishay.com/docs/89959/mbl104s.pdf http://www.vishay.com/docs/88854/padlayouts.pdf +DFS +0 +4 +4 +Diode_SMD +Littelfuse_PolyZen-LS +http://m.littelfuse.com/~/media/electronics/datasheets/polyzen_devices/littelfuse_polyzen_standard_polyzen_catalog_datasheet.pdf.pdf +Diode Polymer Protected Zener Diode Littelfuse LS +0 +3 +3 +Diode_THT +D_5KPW_P7.62mm_Vertical_AnodeUp +Diode, 5KPW series, Axial, Vertical, pin pitch=7.62mm, , length*diameter=9*8mm^2, , http://www.diodes.com/_files/packages/8686949.gif +Diode 5KPW series Axial Vertical pin pitch 7.62mm length 9mm diameter 8mm +0 +2 +2 +Diode_THT +D_5KPW_P7.62mm_Vertical_KathodeUp +Diode, 5KPW series, Axial, Vertical, pin pitch=7.62mm, , length*diameter=9*8mm^2, , http://www.diodes.com/_files/packages/8686949.gif +Diode 5KPW series Axial Vertical pin pitch 7.62mm length 9mm diameter 8mm +0 +2 +2 +Diode_THT +D_5KPW_P12.70mm_Horizontal +Diode, 5KPW series, Axial, Horizontal, pin pitch=12.7mm, , length*diameter=9*8mm^2, , http://www.diodes.com/_files/packages/8686949.gif +Diode 5KPW series Axial Horizontal pin pitch 12.7mm length 9mm diameter 8mm +0 +2 +2 +Diode_THT +D_5KP_P7.62mm_Vertical_AnodeUp +Diode, 5KP series, Axial, Vertical, pin pitch=7.62mm, , length*diameter=7.62*9.53mm^2, , http://www.diodes.com/_files/packages/8686949.gif +Diode 5KP series Axial Vertical pin pitch 7.62mm length 7.62mm diameter 9.53mm +0 +2 +2 +Diode_THT +D_5KP_P7.62mm_Vertical_KathodeUp +Diode, 5KP series, Axial, Vertical, pin pitch=7.62mm, , length*diameter=7.62*9.53mm^2, , http://www.diodes.com/_files/packages/8686949.gif +Diode 5KP series Axial Vertical pin pitch 7.62mm length 7.62mm diameter 9.53mm +0 +2 +2 +Diode_THT +D_5KP_P10.16mm_Horizontal +Diode, 5KP series, Axial, Horizontal, pin pitch=10.16mm, , length*diameter=7.62*9.53mm^2, , http://www.diodes.com/_files/packages/8686949.gif +Diode 5KP series Axial Horizontal pin pitch 10.16mm length 7.62mm diameter 9.53mm +0 +2 +2 +Diode_THT +D_5KP_P12.70mm_Horizontal +Diode, 5KP series, Axial, Horizontal, pin pitch=12.7mm, , length*diameter=7.62*9.53mm^2, , http://www.diodes.com/_files/packages/8686949.gif +Diode 5KP series Axial Horizontal pin pitch 12.7mm length 7.62mm diameter 9.53mm +0 +2 +2 +Diode_THT +D_5W_P5.08mm_Vertical_AnodeUp +Diode, 5W series, Axial, Vertical, pin pitch=5.08mm, , length*diameter=8.9*3.7mm^2, , http://www.diodes.com/_files/packages/8686949.gif +Diode 5W series Axial Vertical pin pitch 5.08mm length 8.9mm diameter 3.7mm +0 +2 +2 +Diode_THT +D_5W_P5.08mm_Vertical_KathodeUp +Diode, 5W series, Axial, Vertical, pin pitch=5.08mm, , length*diameter=8.9*3.7mm^2, , http://www.diodes.com/_files/packages/8686949.gif +Diode 5W series Axial Vertical pin pitch 5.08mm length 8.9mm diameter 3.7mm +0 +2 +2 +Diode_THT +D_5W_P10.16mm_Horizontal +Diode, 5W series, Axial, Horizontal, pin pitch=10.16mm, , length*diameter=8.9*3.7mm^2, , http://www.diodes.com/_files/packages/8686949.gif +Diode 5W series Axial Horizontal pin pitch 10.16mm length 8.9mm diameter 3.7mm +0 +2 +2 +Diode_THT +D_5W_P12.70mm_Horizontal +Diode, 5W series, Axial, Horizontal, pin pitch=12.7mm, , length*diameter=8.9*3.7mm^2, , http://www.diodes.com/_files/packages/8686949.gif +Diode 5W series Axial Horizontal pin pitch 12.7mm length 8.9mm diameter 3.7mm +0 +2 +2 +Diode_THT +D_A-405_P2.54mm_Vertical_AnodeUp +Diode, A-405 series, Axial, Vertical, pin pitch=2.54mm, , length*diameter=5.2*2.7mm^2, , http://www.diodes.com/_files/packages/A-405.pdf +Diode A-405 series Axial Vertical pin pitch 2.54mm length 5.2mm diameter 2.7mm +0 +2 +2 +Diode_THT +D_A-405_P2.54mm_Vertical_KathodeUp +Diode, A-405 series, Axial, Vertical, pin pitch=2.54mm, , length*diameter=5.2*2.7mm^2, , http://www.diodes.com/_files/packages/A-405.pdf +Diode A-405 series Axial Vertical pin pitch 2.54mm length 5.2mm diameter 2.7mm +0 +2 +2 +Diode_THT +D_A-405_P5.08mm_Vertical_AnodeUp +Diode, A-405 series, Axial, Vertical, pin pitch=5.08mm, , length*diameter=5.2*2.7mm^2, , http://www.diodes.com/_files/packages/A-405.pdf +Diode A-405 series Axial Vertical pin pitch 5.08mm length 5.2mm diameter 2.7mm +0 +2 +2 +Diode_THT +D_A-405_P5.08mm_Vertical_KathodeUp +Diode, A-405 series, Axial, Vertical, pin pitch=5.08mm, , length*diameter=5.2*2.7mm^2, , http://www.diodes.com/_files/packages/A-405.pdf +Diode A-405 series Axial Vertical pin pitch 5.08mm length 5.2mm diameter 2.7mm +0 +2 +2 +Diode_THT +D_A-405_P7.62mm_Horizontal +Diode, A-405 series, Axial, Horizontal, pin pitch=7.62mm, , length*diameter=5.2*2.7mm^2, , http://www.diodes.com/_files/packages/A-405.pdf +Diode A-405 series Axial Horizontal pin pitch 7.62mm length 5.2mm diameter 2.7mm +0 +2 +2 +Diode_THT +D_A-405_P10.16mm_Horizontal +Diode, A-405 series, Axial, Horizontal, pin pitch=10.16mm, , length*diameter=5.2*2.7mm^2, , http://www.diodes.com/_files/packages/A-405.pdf +Diode A-405 series Axial Horizontal pin pitch 10.16mm length 5.2mm diameter 2.7mm +0 +2 +2 +Diode_THT +D_A-405_P12.70mm_Horizontal +Diode, A-405 series, Axial, Horizontal, pin pitch=12.7mm, , length*diameter=5.2*2.7mm^2, , http://www.diodes.com/_files/packages/A-405.pdf +Diode A-405 series Axial Horizontal pin pitch 12.7mm length 5.2mm diameter 2.7mm +0 +2 +2 +Diode_THT +D_DO-15_P2.54mm_Vertical_AnodeUp +Diode, DO-15 series, Axial, Vertical, pin pitch=2.54mm, , length*diameter=7.6*3.6mm^2, , http://www.diodes.com/_files/packages/DO-15.pdf +Diode DO-15 series Axial Vertical pin pitch 2.54mm length 7.6mm diameter 3.6mm +0 +2 +2 +Diode_THT +D_DO-15_P2.54mm_Vertical_KathodeUp +Diode, DO-15 series, Axial, Vertical, pin pitch=2.54mm, , length*diameter=7.6*3.6mm^2, , http://www.diodes.com/_files/packages/DO-15.pdf +Diode DO-15 series Axial Vertical pin pitch 2.54mm length 7.6mm diameter 3.6mm +0 +2 +2 +Diode_THT +D_DO-15_P3.81mm_Vertical_AnodeUp +Diode, DO-15 series, Axial, Vertical, pin pitch=3.81mm, , length*diameter=7.6*3.6mm^2, , http://www.diodes.com/_files/packages/DO-15.pdf +Diode DO-15 series Axial Vertical pin pitch 3.81mm length 7.6mm diameter 3.6mm +0 +2 +2 +Diode_THT +D_DO-15_P3.81mm_Vertical_KathodeUp +Diode, DO-15 series, Axial, Vertical, pin pitch=3.81mm, , length*diameter=7.6*3.6mm^2, , http://www.diodes.com/_files/packages/DO-15.pdf +Diode DO-15 series Axial Vertical pin pitch 3.81mm length 7.6mm diameter 3.6mm +0 +2 +2 +Diode_THT +D_DO-15_P5.08mm_Vertical_AnodeUp +Diode, DO-15 series, Axial, Vertical, pin pitch=5.08mm, , length*diameter=7.6*3.6mm^2, , http://www.diodes.com/_files/packages/DO-15.pdf +Diode DO-15 series Axial Vertical pin pitch 5.08mm length 7.6mm diameter 3.6mm +0 +2 +2 +Diode_THT +D_DO-15_P5.08mm_Vertical_KathodeUp +Diode, DO-15 series, Axial, Vertical, pin pitch=5.08mm, , length*diameter=7.6*3.6mm^2, , http://www.diodes.com/_files/packages/DO-15.pdf +Diode DO-15 series Axial Vertical pin pitch 5.08mm length 7.6mm diameter 3.6mm +0 +2 +2 +Diode_THT +D_DO-15_P10.16mm_Horizontal +Diode, DO-15 series, Axial, Horizontal, pin pitch=10.16mm, , length*diameter=7.6*3.6mm^2, , http://www.diodes.com/_files/packages/DO-15.pdf +Diode DO-15 series Axial Horizontal pin pitch 10.16mm length 7.6mm diameter 3.6mm +0 +2 +2 +Diode_THT +D_DO-15_P12.70mm_Horizontal +Diode, DO-15 series, Axial, Horizontal, pin pitch=12.7mm, , length*diameter=7.6*3.6mm^2, , http://www.diodes.com/_files/packages/DO-15.pdf +Diode DO-15 series Axial Horizontal pin pitch 12.7mm length 7.6mm diameter 3.6mm +0 +2 +2 +Diode_THT +D_DO-15_P15.24mm_Horizontal +Diode, DO-15 series, Axial, Horizontal, pin pitch=15.24mm, , length*diameter=7.6*3.6mm^2, , http://www.diodes.com/_files/packages/DO-15.pdf +Diode DO-15 series Axial Horizontal pin pitch 15.24mm length 7.6mm diameter 3.6mm +0 +2 +2 +Diode_THT +D_DO-27_P5.08mm_Vertical_AnodeUp +Diode, DO-27 series, Axial, Vertical, pin pitch=5.08mm, , length*diameter=9.52*5.33mm^2, , http://www.slottechforum.com/slotinfo/Techstuff/CD2%20Diodes%20and%20Transistors/Cases/Diode%20DO-27.jpg +Diode DO-27 series Axial Vertical pin pitch 5.08mm length 9.52mm diameter 5.33mm +0 +2 +2 +Diode_THT +D_DO-27_P5.08mm_Vertical_KathodeUp +Diode, DO-27 series, Axial, Vertical, pin pitch=5.08mm, , length*diameter=9.52*5.33mm^2, , http://www.slottechforum.com/slotinfo/Techstuff/CD2%20Diodes%20and%20Transistors/Cases/Diode%20DO-27.jpg +Diode DO-27 series Axial Vertical pin pitch 5.08mm length 9.52mm diameter 5.33mm +0 +2 +2 +Diode_THT +D_DO-27_P12.70mm_Horizontal +Diode, DO-27 series, Axial, Horizontal, pin pitch=12.7mm, , length*diameter=9.52*5.33mm^2, , http://www.slottechforum.com/slotinfo/Techstuff/CD2%20Diodes%20and%20Transistors/Cases/Diode%20DO-27.jpg +Diode DO-27 series Axial Horizontal pin pitch 12.7mm length 9.52mm diameter 5.33mm +0 +2 +2 +Diode_THT +D_DO-27_P15.24mm_Horizontal +Diode, DO-27 series, Axial, Horizontal, pin pitch=15.24mm, , length*diameter=9.52*5.33mm^2, , http://www.slottechforum.com/slotinfo/Techstuff/CD2%20Diodes%20and%20Transistors/Cases/Diode%20DO-27.jpg +Diode DO-27 series Axial Horizontal pin pitch 15.24mm length 9.52mm diameter 5.33mm +0 +2 +2 +Diode_THT +D_DO-34_SOD68_P2.54mm_Vertical_AnodeUp +Diode, DO-34_SOD68 series, Axial, Vertical, pin pitch=2.54mm, , length*diameter=3.04*1.6mm^2, , https://www.nxp.com/docs/en/data-sheet/KTY83_SER.pdf +Diode DO-34_SOD68 series Axial Vertical pin pitch 2.54mm length 3.04mm diameter 1.6mm +0 +2 +2 +Diode_THT +D_DO-34_SOD68_P2.54mm_Vertical_KathodeUp +Diode, DO-34_SOD68 series, Axial, Vertical, pin pitch=2.54mm, , length*diameter=3.04*1.6mm^2, , https://www.nxp.com/docs/en/data-sheet/KTY83_SER.pdf +Diode DO-34_SOD68 series Axial Vertical pin pitch 2.54mm length 3.04mm diameter 1.6mm +0 +2 +2 +Diode_THT +D_DO-34_SOD68_P5.08mm_Vertical_AnodeUp +Diode, DO-34_SOD68 series, Axial, Vertical, pin pitch=5.08mm, , length*diameter=3.04*1.6mm^2, , https://www.nxp.com/docs/en/data-sheet/KTY83_SER.pdf +Diode DO-34_SOD68 series Axial Vertical pin pitch 5.08mm length 3.04mm diameter 1.6mm +0 +2 +2 +Diode_THT +D_DO-34_SOD68_P5.08mm_Vertical_KathodeUp +Diode, DO-34_SOD68 series, Axial, Vertical, pin pitch=5.08mm, , length*diameter=3.04*1.6mm^2, , https://www.nxp.com/docs/en/data-sheet/KTY83_SER.pdf +Diode DO-34_SOD68 series Axial Vertical pin pitch 5.08mm length 3.04mm diameter 1.6mm +0 +2 +2 +Diode_THT +D_DO-34_SOD68_P7.62mm_Horizontal +Diode, DO-34_SOD68 series, Axial, Horizontal, pin pitch=7.62mm, , length*diameter=3.04*1.6mm^2, , https://www.nxp.com/docs/en/data-sheet/KTY83_SER.pdf +Diode DO-34_SOD68 series Axial Horizontal pin pitch 7.62mm length 3.04mm diameter 1.6mm +0 +2 +2 +Diode_THT +D_DO-34_SOD68_P10.16mm_Horizontal +Diode, DO-34_SOD68 series, Axial, Horizontal, pin pitch=10.16mm, , length*diameter=3.04*1.6mm^2, , https://www.nxp.com/docs/en/data-sheet/KTY83_SER.pdf +Diode DO-34_SOD68 series Axial Horizontal pin pitch 10.16mm length 3.04mm diameter 1.6mm +0 +2 +2 +Diode_THT +D_DO-34_SOD68_P12.70mm_Horizontal +Diode, DO-34_SOD68 series, Axial, Horizontal, pin pitch=12.7mm, , length*diameter=3.04*1.6mm^2, , https://www.nxp.com/docs/en/data-sheet/KTY83_SER.pdf +Diode DO-34_SOD68 series Axial Horizontal pin pitch 12.7mm length 3.04mm diameter 1.6mm +0 +2 +2 +Diode_THT +D_DO-35_SOD27_P2.54mm_Vertical_AnodeUp +Diode, DO-35_SOD27 series, Axial, Vertical, pin pitch=2.54mm, , length*diameter=4*2mm^2, , http://www.diodes.com/_files/packages/DO-35.pdf +Diode DO-35_SOD27 series Axial Vertical pin pitch 2.54mm length 4mm diameter 2mm +0 +2 +2 +Diode_THT +D_DO-35_SOD27_P2.54mm_Vertical_KathodeUp +Diode, DO-35_SOD27 series, Axial, Vertical, pin pitch=2.54mm, , length*diameter=4*2mm^2, , http://www.diodes.com/_files/packages/DO-35.pdf +Diode DO-35_SOD27 series Axial Vertical pin pitch 2.54mm length 4mm diameter 2mm +0 +2 +2 +Diode_THT +D_DO-35_SOD27_P3.81mm_Vertical_AnodeUp +Diode, DO-35_SOD27 series, Axial, Vertical, pin pitch=3.81mm, , length*diameter=4*2mm^2, , http://www.diodes.com/_files/packages/DO-35.pdf +Diode DO-35_SOD27 series Axial Vertical pin pitch 3.81mm length 4mm diameter 2mm +0 +2 +2 +Diode_THT +D_DO-35_SOD27_P3.81mm_Vertical_KathodeUp +Diode, DO-35_SOD27 series, Axial, Vertical, pin pitch=3.81mm, , length*diameter=4*2mm^2, , http://www.diodes.com/_files/packages/DO-35.pdf +Diode DO-35_SOD27 series Axial Vertical pin pitch 3.81mm length 4mm diameter 2mm +0 +2 +2 +Diode_THT +D_DO-35_SOD27_P5.08mm_Vertical_AnodeUp +Diode, DO-35_SOD27 series, Axial, Vertical, pin pitch=5.08mm, , length*diameter=4*2mm^2, , http://www.diodes.com/_files/packages/DO-35.pdf +Diode DO-35_SOD27 series Axial Vertical pin pitch 5.08mm length 4mm diameter 2mm +0 +2 +2 +Diode_THT +D_DO-35_SOD27_P5.08mm_Vertical_KathodeUp +Diode, DO-35_SOD27 series, Axial, Vertical, pin pitch=5.08mm, , length*diameter=4*2mm^2, , http://www.diodes.com/_files/packages/DO-35.pdf +Diode DO-35_SOD27 series Axial Vertical pin pitch 5.08mm length 4mm diameter 2mm +0 +2 +2 +Diode_THT +D_DO-35_SOD27_P7.62mm_Horizontal +Diode, DO-35_SOD27 series, Axial, Horizontal, pin pitch=7.62mm, , length*diameter=4*2mm^2, , http://www.diodes.com/_files/packages/DO-35.pdf +Diode DO-35_SOD27 series Axial Horizontal pin pitch 7.62mm length 4mm diameter 2mm +0 +2 +2 +Diode_THT +D_DO-35_SOD27_P10.16mm_Horizontal +Diode, DO-35_SOD27 series, Axial, Horizontal, pin pitch=10.16mm, , length*diameter=4*2mm^2, , http://www.diodes.com/_files/packages/DO-35.pdf +Diode DO-35_SOD27 series Axial Horizontal pin pitch 10.16mm length 4mm diameter 2mm +0 +2 +2 +Diode_THT +D_DO-35_SOD27_P12.70mm_Horizontal +Diode, DO-35_SOD27 series, Axial, Horizontal, pin pitch=12.7mm, , length*diameter=4*2mm^2, , http://www.diodes.com/_files/packages/DO-35.pdf +Diode DO-35_SOD27 series Axial Horizontal pin pitch 12.7mm length 4mm diameter 2mm +0 +2 +2 +Diode_THT +D_DO-41_SOD81_P2.54mm_Vertical_AnodeUp +Diode, DO-41_SOD81 series, Axial, Vertical, pin pitch=2.54mm, , length*diameter=5.2*2.7mm^2, , http://www.diodes.com/_files/packages/DO-41%20(Plastic).pdf +Diode DO-41_SOD81 series Axial Vertical pin pitch 2.54mm length 5.2mm diameter 2.7mm +0 +2 +2 +Diode_THT +D_DO-41_SOD81_P2.54mm_Vertical_KathodeUp +Diode, DO-41_SOD81 series, Axial, Vertical, pin pitch=2.54mm, , length*diameter=5.2*2.7mm^2, , http://www.diodes.com/_files/packages/DO-41%20(Plastic).pdf +Diode DO-41_SOD81 series Axial Vertical pin pitch 2.54mm length 5.2mm diameter 2.7mm +0 +2 +2 +Diode_THT +D_DO-41_SOD81_P3.81mm_Vertical_AnodeUp +Diode, DO-41_SOD81 series, Axial, Vertical, pin pitch=3.81mm, , length*diameter=5.2*2.7mm^2, , https://www.diodes.com/assets/Package-Files/DO-41-Plastic.pdf +Diode DO-41_SOD81 series Axial Vertical pin pitch 3.81mm length 5.2mm diameter 2.7mm +0 +2 +2 +Diode_THT +D_DO-41_SOD81_P3.81mm_Vertical_KathodeUp +Diode, DO-41_SOD81 series, Axial, Vertical, pin pitch=3.81mm, , length*diameter=5.2*2.7mm^2, , https://www.diodes.com/assets/Package-Files/DO-41-Plastic.pdf +Diode DO-41_SOD81 series Axial Vertical pin pitch 3.81mm length 5.2mm diameter 2.7mm +0 +2 +2 +Diode_THT +D_DO-41_SOD81_P5.08mm_Vertical_AnodeUp +Diode, DO-41_SOD81 series, Axial, Vertical, pin pitch=5.08mm, , length*diameter=5.2*2.7mm^2, , http://www.diodes.com/_files/packages/DO-41%20(Plastic).pdf +Diode DO-41_SOD81 series Axial Vertical pin pitch 5.08mm length 5.2mm diameter 2.7mm +0 +2 +2 +Diode_THT +D_DO-41_SOD81_P5.08mm_Vertical_KathodeUp +Diode, DO-41_SOD81 series, Axial, Vertical, pin pitch=5.08mm, , length*diameter=5.2*2.7mm^2, , http://www.diodes.com/_files/packages/DO-41%20(Plastic).pdf +Diode DO-41_SOD81 series Axial Vertical pin pitch 5.08mm length 5.2mm diameter 2.7mm +0 +2 +2 +Diode_THT +D_DO-41_SOD81_P7.62mm_Horizontal +Diode, DO-41_SOD81 series, Axial, Horizontal, pin pitch=7.62mm, , length*diameter=5.2*2.7mm^2, , http://www.diodes.com/_files/packages/DO-41%20(Plastic).pdf +Diode DO-41_SOD81 series Axial Horizontal pin pitch 7.62mm length 5.2mm diameter 2.7mm +0 +2 +2 +Diode_THT +D_DO-41_SOD81_P10.16mm_Horizontal +Diode, DO-41_SOD81 series, Axial, Horizontal, pin pitch=10.16mm, , length*diameter=5.2*2.7mm^2, , http://www.diodes.com/_files/packages/DO-41%20(Plastic).pdf +Diode DO-41_SOD81 series Axial Horizontal pin pitch 10.16mm length 5.2mm diameter 2.7mm +0 +2 +2 +Diode_THT +D_DO-41_SOD81_P12.70mm_Horizontal +Diode, DO-41_SOD81 series, Axial, Horizontal, pin pitch=12.7mm, , length*diameter=5.2*2.7mm^2, , http://www.diodes.com/_files/packages/DO-41%20(Plastic).pdf +Diode DO-41_SOD81 series Axial Horizontal pin pitch 12.7mm length 5.2mm diameter 2.7mm +0 +2 +2 +Diode_THT +D_DO-201AD_P3.81mm_Vertical_AnodeUp +Diode, DO-201AD series, Axial, Vertical, pin pitch=3.81mm, , length*diameter=9.5*5.2mm^2, , http://www.diodes.com/_files/packages/DO-201AD.pdf +Diode DO-201AD series Axial Vertical pin pitch 3.81mm length 9.5mm diameter 5.2mm +0 +2 +2 +Diode_THT +D_DO-201AD_P3.81mm_Vertical_KathodeUp +Diode, DO-201AD series, Axial, Vertical, pin pitch=3.81mm, , length*diameter=9.5*5.2mm^2, , http://www.diodes.com/_files/packages/DO-201AD.pdf +Diode DO-201AD series Axial Vertical pin pitch 3.81mm length 9.5mm diameter 5.2mm +0 +2 +2 +Diode_THT +D_DO-201AD_P5.08mm_Vertical_AnodeUp +Diode, DO-201AD series, Axial, Vertical, pin pitch=5.08mm, , length*diameter=9.5*5.2mm^2, , http://www.diodes.com/_files/packages/DO-201AD.pdf +Diode DO-201AD series Axial Vertical pin pitch 5.08mm length 9.5mm diameter 5.2mm +0 +2 +2 +Diode_THT +D_DO-201AD_P5.08mm_Vertical_KathodeUp +Diode, DO-201AD series, Axial, Vertical, pin pitch=5.08mm, , length*diameter=9.5*5.2mm^2, , http://www.diodes.com/_files/packages/DO-201AD.pdf +Diode DO-201AD series Axial Vertical pin pitch 5.08mm length 9.5mm diameter 5.2mm +0 +2 +2 +Diode_THT +D_DO-201AD_P12.70mm_Horizontal +Diode, DO-201AD series, Axial, Horizontal, pin pitch=12.7mm, , length*diameter=9.5*5.2mm^2, , http://www.diodes.com/_files/packages/DO-201AD.pdf +Diode DO-201AD series Axial Horizontal pin pitch 12.7mm length 9.5mm diameter 5.2mm +0 +2 +2 +Diode_THT +D_DO-201AD_P15.24mm_Horizontal +Diode, DO-201AD series, Axial, Horizontal, pin pitch=15.24mm, , length*diameter=9.5*5.2mm^2, , http://www.diodes.com/_files/packages/DO-201AD.pdf +Diode DO-201AD series Axial Horizontal pin pitch 15.24mm length 9.5mm diameter 5.2mm +0 +2 +2 +Diode_THT +D_DO-201AE_P3.81mm_Vertical_AnodeUp +Diode, DO-201AE series, Axial, Vertical, pin pitch=3.81mm, , length*diameter=9*5.3mm^2, , http://www.farnell.com/datasheets/529758.pdf +Diode DO-201AE series Axial Vertical pin pitch 3.81mm length 9mm diameter 5.3mm +0 +2 +2 +Diode_THT +D_DO-201AE_P3.81mm_Vertical_KathodeUp +Diode, DO-201AE series, Axial, Vertical, pin pitch=3.81mm, , length*diameter=9*5.3mm^2, , http://www.farnell.com/datasheets/529758.pdf +Diode DO-201AE series Axial Vertical pin pitch 3.81mm length 9mm diameter 5.3mm +0 +2 +2 +Diode_THT +D_DO-201AE_P5.08mm_Vertical_AnodeUp +Diode, DO-201AE series, Axial, Vertical, pin pitch=5.08mm, , length*diameter=9*5.3mm^2, , http://www.farnell.com/datasheets/529758.pdf +Diode DO-201AE series Axial Vertical pin pitch 5.08mm length 9mm diameter 5.3mm +0 +2 +2 +Diode_THT +D_DO-201AE_P5.08mm_Vertical_KathodeUp +Diode, DO-201AE series, Axial, Vertical, pin pitch=5.08mm, , length*diameter=9*5.3mm^2, , http://www.farnell.com/datasheets/529758.pdf +Diode DO-201AE series Axial Vertical pin pitch 5.08mm length 9mm diameter 5.3mm +0 +2 +2 +Diode_THT +D_DO-201AE_P12.70mm_Horizontal +Diode, DO-201AE series, Axial, Horizontal, pin pitch=12.7mm, , length*diameter=9*5.3mm^2, , http://www.farnell.com/datasheets/529758.pdf +Diode DO-201AE series Axial Horizontal pin pitch 12.7mm length 9mm diameter 5.3mm +0 +2 +2 +Diode_THT +D_DO-201AE_P15.24mm_Horizontal +Diode, DO-201AE series, Axial, Horizontal, pin pitch=15.24mm, , length*diameter=9*5.3mm^2, , http://www.farnell.com/datasheets/529758.pdf +Diode DO-201AE series Axial Horizontal pin pitch 15.24mm length 9mm diameter 5.3mm +0 +2 +2 +Diode_THT +D_DO-201_P3.81mm_Vertical_AnodeUp +Diode, DO-201 series, Axial, Vertical, pin pitch=3.81mm, , length*diameter=9.53*5.21mm^2, , http://www.diodes.com/_files/packages/DO-201.pdf +Diode DO-201 series Axial Vertical pin pitch 3.81mm length 9.53mm diameter 5.21mm +0 +2 +2 +Diode_THT +D_DO-201_P3.81mm_Vertical_KathodeUp +Diode, DO-201 series, Axial, Vertical, pin pitch=3.81mm, , length*diameter=9.53*5.21mm^2, , http://www.diodes.com/_files/packages/DO-201.pdf +Diode DO-201 series Axial Vertical pin pitch 3.81mm length 9.53mm diameter 5.21mm +0 +2 +2 +Diode_THT +D_DO-201_P5.08mm_Vertical_AnodeUp +Diode, DO-201 series, Axial, Vertical, pin pitch=5.08mm, , length*diameter=9.53*5.21mm^2, , http://www.diodes.com/_files/packages/DO-201.pdf +Diode DO-201 series Axial Vertical pin pitch 5.08mm length 9.53mm diameter 5.21mm +0 +2 +2 +Diode_THT +D_DO-201_P5.08mm_Vertical_KathodeUp +Diode, DO-201 series, Axial, Vertical, pin pitch=5.08mm, , length*diameter=9.53*5.21mm^2, , http://www.diodes.com/_files/packages/DO-201.pdf +Diode DO-201 series Axial Vertical pin pitch 5.08mm length 9.53mm diameter 5.21mm +0 +2 +2 +Diode_THT +D_DO-201_P12.70mm_Horizontal +Diode, DO-201 series, Axial, Horizontal, pin pitch=12.7mm, , length*diameter=9.53*5.21mm^2, , http://www.diodes.com/_files/packages/DO-201.pdf +Diode DO-201 series Axial Horizontal pin pitch 12.7mm length 9.53mm diameter 5.21mm +0 +2 +2 +Diode_THT +D_DO-201_P15.24mm_Horizontal +Diode, DO-201 series, Axial, Horizontal, pin pitch=15.24mm, , length*diameter=9.53*5.21mm^2, , http://www.diodes.com/_files/packages/DO-201.pdf +Diode DO-201 series Axial Horizontal pin pitch 15.24mm length 9.53mm diameter 5.21mm +0 +2 +2 +Diode_THT +D_DO-247_Horizontal_TabDown +Diode, DO-247 series, Horizontal, TabDown, P 10.9mm +diode rectifier +0 +2 +2 +Diode_THT +D_DO-247_Horizontal_TabUp +Diode, DO-247 series, Horizontal, TabUp, P 10.9mm +diode rectifier +0 +2 +2 +Diode_THT +D_DO-247_Vertical +Diode, DO-247 series, Vertical, P 10.9mm +diode rectifier +0 +2 +2 +Diode_THT +D_P600_R-6_P7.62mm_Vertical_AnodeUp +Diode, P600_R-6 series, Axial, Vertical, pin pitch=7.62mm, , length*diameter=9.1*9.1mm^2, , http://www.vishay.com/docs/88692/p600a.pdf, http://www.diodes.com/_files/packages/R-6.pdf +Diode P600_R-6 series Axial Vertical pin pitch 7.62mm length 9.1mm diameter 9.1mm +0 +2 +2 +Diode_THT +D_P600_R-6_P7.62mm_Vertical_KathodeUp +Diode, P600_R-6 series, Axial, Vertical, pin pitch=7.62mm, , length*diameter=9.1*9.1mm^2, , http://www.vishay.com/docs/88692/p600a.pdf, http://www.diodes.com/_files/packages/R-6.pdf +Diode P600_R-6 series Axial Vertical pin pitch 7.62mm length 9.1mm diameter 9.1mm +0 +2 +2 +Diode_THT +D_P600_R-6_P12.70mm_Horizontal +Diode, P600_R-6 series, Axial, Horizontal, pin pitch=12.7mm, , length*diameter=9.1*9.1mm^2, , http://www.vishay.com/docs/88692/p600a.pdf, http://www.diodes.com/_files/packages/R-6.pdf +Diode P600_R-6 series Axial Horizontal pin pitch 12.7mm length 9.1mm diameter 9.1mm +0 +2 +2 +Diode_THT +D_P600_R-6_P20.00mm_Horizontal +Diode, P600_R-6 series, Axial, Horizontal, pin pitch=20mm, , length*diameter=9.1*9.1mm^2, , http://www.vishay.com/docs/88692/p600a.pdf, http://www.diodes.com/_files/packages/R-6.pdf +Diode P600_R-6 series Axial Horizontal pin pitch 20mm length 9.1mm diameter 9.1mm +0 +2 +2 +Diode_THT +D_T-1_P2.54mm_Vertical_AnodeUp +Diode, T-1 series, Axial, Vertical, pin pitch=2.54mm, , length*diameter=3.2*2.6mm^2, , http://www.diodes.com/_files/packages/T-1.pdf +Diode T-1 series Axial Vertical pin pitch 2.54mm length 3.2mm diameter 2.6mm +0 +2 +2 +Diode_THT +D_T-1_P2.54mm_Vertical_KathodeUp +Diode, T-1 series, Axial, Vertical, pin pitch=2.54mm, , length*diameter=3.2*2.6mm^2, , http://www.diodes.com/_files/packages/T-1.pdf +Diode T-1 series Axial Vertical pin pitch 2.54mm length 3.2mm diameter 2.6mm +0 +2 +2 +Diode_THT +D_T-1_P5.08mm_Horizontal +Diode, T-1 series, Axial, Horizontal, pin pitch=5.08mm, , length*diameter=3.2*2.6mm^2, , http://www.diodes.com/_files/packages/T-1.pdf +Diode T-1 series Axial Horizontal pin pitch 5.08mm length 3.2mm diameter 2.6mm +0 +2 +2 +Diode_THT +D_T-1_P10.16mm_Horizontal +Diode, T-1 series, Axial, Horizontal, pin pitch=10.16mm, , length*diameter=3.2*2.6mm^2, , http://www.diodes.com/_files/packages/T-1.pdf +Diode T-1 series Axial Horizontal pin pitch 10.16mm length 3.2mm diameter 2.6mm +0 +2 +2 +Diode_THT +D_T-1_P12.70mm_Horizontal +Diode, T-1 series, Axial, Horizontal, pin pitch=12.7mm, , length*diameter=3.2*2.6mm^2, , http://www.diodes.com/_files/packages/T-1.pdf +Diode T-1 series Axial Horizontal pin pitch 12.7mm length 3.2mm diameter 2.6mm +0 +2 +2 +Diode_THT +Diode_Bridge_15.1x15.1x6.3mm_P10.9mm +Single phase bridge rectifier case 15.1x15.1mm, pitch 10.9mm, see https://diotec.com/tl_files/diotec/files/pdf/datasheets/pb1000.pdf +Diode Bridge PB10xxS +0 +4 +4 +Diode_THT +Diode_Bridge_15.2x15.2x6.3mm_P10.9mm +Single phase bridge rectifier case 15.2x15.2mm, pitch 10.9mm, see https://diotec.com/tl_files/diotec/files/pdf/datasheets/kbpc600.pdf +Diode Bridge KBPC6xx +0 +4 +4 +Diode_THT +Diode_Bridge_15.7x15.7x6.3mm_P10.8mm +Single phase bridge rectifier case 15.7x15.7 +Diode Bridge +0 +4 +4 +Diode_THT +Diode_Bridge_16.7x16.7x6.3mm_P10.8mm +Single phase bridge rectifier case 16.7x16.7 +Diode Bridge +0 +4 +4 +Diode_THT +Diode_Bridge_19.0x3.5x10.0mm_P5.0mm +Vishay GBU rectifier package, 5.08mm pitch, see http://www.vishay.com/docs/88606/g3sba20.pdf +Vishay GBU rectifier diode bridge +0 +4 +4 +Diode_THT +Diode_Bridge_19.0x19.0x6.8mm_P12.7mm +Single phase bridge rectifier case 19x19mm, pitch 12.7mm, see https://diotec.com/tl_files/diotec/files/pdf/datasheets/pb1000.pdf +Diode Bridge PB10xx +0 +4 +4 +Diode_THT +Diode_Bridge_28.6x28.6x7.3mm_P18.0mm_P11.6mm +Single phase bridge rectifier case 28.6x28.6mm, pitch 18.0mm & 11.6mm, see https://diotec.com/tl_files/diotec/files/pdf/datasheets/kbpc1500fw.pdf +Diode Bridge KBPCxxxxWP +0 +4 +4 +Diode_THT +Diode_Bridge_32.0x5.6x17.0mm_P10.0mm_P7.5mm +Diotec 32x5.6x17mm rectifier package, 7.5mm/10mm pitch, see https://diotec.com/tl_files/diotec/files/pdf/datasheets/b40c3700.pdf +Diotec rectifier diode bridge +0 +4 +4 +Diode_THT +Diode_Bridge_DIP-4_W5.08mm_P2.54mm +4-lead dip package for diode bridges, row spacing 5.08mm, pin-spacing 2.54mm, see http://www.vishay.com/docs/88898/b2m.pdf +DIL DIP PDIP 5.08mm 2.54 +0 +4 +4 +Diode_THT +Diode_Bridge_DIP-4_W7.62mm_P5.08mm +4-lead dip package for diode bridges, row spacing 7.62 mm (300 mils), see http://cdn-reichelt.de/documents/datenblatt/A400/HDBL101G_20SERIES-TSC.pdf +DIL DIP PDIP 5.08mm 7.62mm 300mil +0 +4 +4 +Diode_THT +Diode_Bridge_IXYS_GUFP +Three phase, Bridge, Rectifier +diode module +0 +5 +5 +Diode_THT +Diode_Bridge_Round_D8.9mm +4-lead round diode bridge package, diameter 8.9mm, pin pitch 5.08mm, see http://cdn-reichelt.de/documents/datenblatt/A400/W005M-W10M_SEP.PDF +diode bridge 8.9mm 8.85mm WOB pitch 5.08mm +0 +4 +4 +Diode_THT +Diode_Bridge_Round_D9.0mm +4-lead round diode bridge package, diameter 9.0mm, pin pitch 5.0mm, see https://diotec.com/tl_files/diotec/files/pdf/datasheets/b40r.pdf +diode bridge 9.0mm 8.85mm WOB pitch 5.0mm +0 +4 +4 +Diode_THT +Diode_Bridge_Round_D9.8mm +4-lead round diode bridge package, diameter 9.8mm, pin pitch 5.08mm, see http://www.vishay.com/docs/88769/woo5g.pdf +diode bridge 9.8mm WOG pitch 5.08mm +0 +4 +4 +Diode_THT +Diode_Bridge_Vishay_GBL +Vishay GBL rectifier package, 5.08mm pitch, see http://www.vishay.com/docs/88609/gbl005.pdf +Vishay GBL rectifier diode bridge +0 +4 +4 +Diode_THT +Diode_Bridge_Vishay_GBU +Vishay GBU rectifier package, 5.08mm pitch, see http://www.vishay.com/docs/88606/g3sba20.pdf +Vishay GBU rectifier diode bridge +0 +4 +4 +Diode_THT +Diode_Bridge_Vishay_KBL +Vishay KBL rectifier package, 5.08mm pitch, see http://www.vishay.com/docs/88655/kbl005.pdf +Vishay KBL rectifier diode bridge +0 +4 +4 +Diode_THT +Diode_Bridge_Vishay_KBPC1 +Single phase bridge rectifier case KBPC1, see http://www.vishay.com/docs/93585/vs-kbpc1series.pdf +Diode Bridge +0 +4 +4 +Diode_THT +Diode_Bridge_Vishay_KBPC6 +Single phase bridge rectifier case KBPC6, see http://www.vishay.com/docs/93585/vs-kbpc1series.pdf +Diode Bridge +0 +4 +4 +Diode_THT +Diode_Bridge_Vishay_KBPM +Vishay KBM rectifier package, 3.95mm pitch (http://www.farnell.com/datasheets/2238158.pdf, http://www.cdil.com/s/kbp2005_.pdf) +Vishay KBM rectifier diode bridge +0 +4 +4 +Diode_THT +Diode_Bridge_Vishay_KBU +Vishay KBU rectifier package, 5.08mm pitch, see http://www.vishay.com/docs/88656/kbu4.pdf +Vishay KBU rectifier diode bridge +0 +4 +4 +Display +AG12864E +STN/FSTN LCD 128x64 dot https://www.digchip.com/datasheets/parts/datasheet/1121/AG-12864E-pdf.php +AG12864E Graphics Display 128x64 Ampire +0 +24 +20 +Display +Adafruit_SSD1306 +Adafruit SSD1306 OLED 1.3 inch 128x64 I2C & SPI https://learn.adafruit.com/monochrome-oled-breakouts/downloads +Adafruit SSD1306 OLED 1.3 inch 128x64 I2C & SPI +0 +8 +8 +Display +Adafruit_SSD1306_No_Mounting_Holes +Adafruit SSD1306 OLED 1.3 inch 128x64 I2C & SPI https://learn.adafruit.com/monochrome-oled-breakouts/downloads +Adafruit SSD1306 OLED 1.3 inch 128x64 I2C & SPI +0 +8 +8 +Display +CR2013-MI2120 +CR2013-MI2120 ILI9341 LCD Breakout http://pan.baidu.com/s/11Y990 +CR2013-MI2120 ILI9341 LCD Breakout +0 +18 +14 +Display +EA-eDIP128B-XXX +LCD-graphical display with LED backlight 128x64 RS-232 I2C or SPI http://www.lcd-module.com/fileadmin/eng/pdf/grafik/edip128-6e.pdf +LCD-graphical display with LED backlight 128x64 RS-232 I2C or SPI +0 +32 +32 +Display +EA_DOGS104X-A +LCD 4x10 character 3.3V VDD I2C or SPI http://www.lcd-module.com/fileadmin/eng/pdf/doma/dogs104e.pdf +LCD 4x10 character 3.3V VDD I2C or SPI +0 +14 +14 +Display +EA_DOGXL160-7 +Grapchical,Display,LCD,160x104 http://www.lcd-module.com/eng/pdf/grafik/dogxl160-7e.pdf +EA_DOGXL160-7 +0 +22 +22 +Display +EA_DOGXL160-7_Backlight +Grapchical,Display,LCD,160x104 http://www.lcd-module.com/eng/pdf/grafik/dogxl160-7e.pdf +EA_DOGXL160-7_Backlight +0 +22 +22 +Display +EA_T123X-I2C +http://www.lcd-module.de/pdf/doma/t123-i2c.pdf +3 Line 12 character wide alpha numeric LCD +0 +6 +6 +Display +EA_eDIP160-XXX +LCD-graphical display with LED backlight 160x104 RS-232 I2C or SPI http://www.lcd-module.com/fileadmin/eng/pdf/grafik/edip160-7e.pdf +LCD-graphical display with LED backlight 160x104 RS-232 I2C or SPI +0 +40 +40 +Display +EA_eDIP240-XXX +LCD graphical display LED backlight 240x128 http://www.lcd-module.com/fileadmin/eng/pdf/grafik/edip240-7e.pdf +LCD graphical display LED backlight 240x128 +0 +40 +40 +Display +EA_eDIP320X-XXX +LCD display 320x340 RS-232 I2C or SPI http://www.lcd-module.com/fileadmin/eng/pdf/grafik/edip320-8e.pdf +LCD display 320x340 RS-232 I2C or SPI +0 +48 +48 +Display +EA_eDIPTFT32-XXX +TFT-graphic display 320x240 16 bit colour with led backlight http://www.lcd-module.com/fileadmin/eng/pdf/grafik/ediptft32-ae.pdf +TFT-graphic display 320x240 16 bit colour with led backlight +0 +40 +40 +Display +EA_eDIPTFT43-ATC +http://www.lcd-module.com/fileadmin/eng/pdf/grafik/ediptft43-ae.pdf +TFT graphical display 480x272 16-bit colour with LED backlight +0 +40 +40 +Display +EA_eDIPTFT43-XXX +TFT graphical display 480x272 16-bit colour with LED backlight http://www.lcd-module.com/fileadmin/eng/pdf/grafik/ediptft43-ae.pdf +TFT graphical display 480x272 16-bit colour with LED backlight +0 +40 +40 +Display +EA_eDIPTFT57-XXX +http://www.lcd-module.com/fileadmin/eng/pdf/grafik/ediptft57-ae.pdf +TFT-graphic display 640x480 16 bit colour +0 +48 +48 +Display +EA_eDIPTFT70-ATC +TFT-graphical display 800x480 16-bit colours with capacitive touch panel http://www.lcd-module.com/fileadmin/eng/pdf/grafik/ediptft70-ae.pdf +TFT-graphical display 800x480 16-bit colours with capacitive touch panel +0 +48 +48 +Display +EA_eDIPTFT70-XXX +TFT-graphical display 800x480 16-bit colours http://www.lcd-module.com/fileadmin/eng/pdf/grafik/ediptft70-ae.pdf +TFT-graphical display 800x480 16-bit colours and touch display +0 +48 +48 +Display +HDSM-441B_HDSM-443B +2 Digit 7 segemnt blue LED, right hand decimal, https://docs.broadcom.com/docs/AV02-1589EN +2 Digit 7 segment blue LED +0 +10 +10 +Display +HDSM-541B_HDSM-543B +2 digit 7 segement blue LED with right hand decimal, https://docs.broadcom.com/docs/AV02-1588EN +2 digit 7 segement blue LED with right hand decimal +0 +10 +10 +Display +HDSP-48xx +10-Element Bar Graph Array https://docs.broadcom.com/docs/AV02-1798EN +10-Element Bar Graph Array +0 +20 +20 +Display +HDSP-4830 +10-Element Red Bar Graph Array https://docs.broadcom.com/docs/AV02-1798EN +10-Element Red Bar Graph Array +0 +20 +20 +Display +HDSP-4832 +10-Element Red Yellow Green Bar Graph Array https://docs.broadcom.com/docs/AV02-1798EN +10-Element Red Yellow Green Bar Graph Array +0 +20 +20 +Display +HDSP-4836 +10-Element Red Yellow Green Bar Graph Array https://docs.broadcom.com/docs/AV02-1798EN +10-Element Red Yellow Green Bar Graph Array +0 +20 +20 +Display +HDSP-4840 +10-Element Yellow Bar Graph Array https://docs.broadcom.com/docs/AV02-1798EN +10-Element Yellow Bar Graph Array +0 +20 +20 +Display +HDSP-4850 +10-Element Green Bar Graph Array https://docs.broadcom.com/docs/AV02-1798EN +10-Element Green Bar Graph Array +0 +20 +20 +Display +HLCP-J100 +10-Element Red Bar Graph Array https://docs.broadcom.com/docs/AV02-1798EN +10-Element Red Bar Graph Array +0 +20 +20 +Display +HY1602E +http://www.icbank.com/data/ICBShop/board/HY1602E.pdf +LCD 16x2 Alphanumeric 16pin +0 +20 +16 +Display +LCD-016N002L +16 x 2 Character LCD, http://www.vishay.com/product?docid=37299 +LCD-016N002L 16 x 2 Character LCD +0 +24 +20 +Display +LM16255 +LCD LM16255 16x2 character http://www.datasheetlib.com/datasheet/259542/lm16255_sharp-electronics.html +LCD 12x2 +0 +14 +14 +Display +NHD-0420H1Z +NHD-0420H1Z LCD http://www.newhavendisplay.com/specs/NHD-0420H1Z-FSW-GBW-33V3.pdf +NHD-0420H1Z LCD +0 +16 +16 +Display +NHD-C0220BiZ +NHD-C0220BiZ LCD http://www.newhavendisplay.com/specs/NHD-C0220BiZ-FSW-FBW-3V3M.pdf +NHD-C0220BiZ LCD +0 +10 +10 +Display +OLED-128O064D +128x64 OLED display +display oled +0 +30 +30 +Display +RC1602A +http://www.raystar-optronics.com/down.php?ProID=18 +LCD 16x2 Alphanumeric 16pin +0 +22 +18 +Display +WC1602A +LCD 16x2 http://www.wincomlcd.com/pdf/WC1602A-SFYLYHTC06.pdf +LCD 16x2 Alphanumeric 16pin +0 +20 +16 +Display_7Segment +7SEGMENT-LED__HDSM531_HDSM533_SMD +7-Segment Display, HDSM53x, https://docs.broadcom.com/docs/AV02-0713EN +7segment LED HDSM531 HDSM533 +0 +10 +10 +Display_7Segment +7SegmentLED_LTS6760_LTS6780 +7-Segment Display, LTS67x0, http://optoelectronics.liteon.com/upload/download/DS30-2001-355/S6760jd.pdf +7Segment LED LTS6760 LTS6780 +0 +10 +10 +Display_7Segment +AD-121F2 +Single Digit 7-segment RGB LED Display, 1-inch digit height, common anode, http://usasyck.com/products/AD-121F2_cat_e.pdf +RGB LED digit +0 +22 +22 +Display_7Segment +AFF_2x7SEG-DIGIT_10mm +Afficheur 7 segments 10mm DIGIT +AFFICHEUR +0 +16 +16 +Display_7Segment +CA56-12CGKWA +4 digit 7 segment green LED, http://www.kingbright.com/attachments/file/psearch/000/00/00/CA56-12CGKWA(Ver.9A).pdf +4 digit 7 segment green LED +0 +12 +12 +Display_7Segment +CA56-12EWA +4 digit 7 segment green LED, http://www.kingbrightusa.com/images/catalog/SPEC/CA56-12EWA.pdf +4 digit 7 segment green LED +0 +12 +12 +Display_7Segment +CA56-12SEKWA +4 digit 7 segment green LED, http://www.kingbright.com/attachments/file/psearch/000/00/00/CA56-12SEKWA(Ver.7A).pdf +4 digit 7 segment green LED +0 +12 +12 +Display_7Segment +CA56-12SRWA +4 digit 7 segment green LED, http://www.kingbrightusa.com/images/catalog/SPEC/CA56-12SRWA.pdf +4 digit 7 segment green LED +0 +12 +12 +Display_7Segment +CA56-12SURKWA +4 digit 7 segment green LED, http://www.kingbright.com/attachments/file/psearch/000/00/00/CA56-12SURKWA(Ver.8A).pdf +4 digit 7 segment green LED +0 +12 +12 +Display_7Segment +CA56-12SYKWA +4 digit 7 segment green LED, http://www.kingbright.com/attachments/file/psearch/000/00/00/CA56-12SYKWA(Ver.6A).pdf +4 digit 7 segment green LED +0 +12 +12 +Display_7Segment +CC56-12GWA +4 digit 7 segment green LED, http://www.kingbrightusa.com/images/catalog/SPEC/CA56-11GWA.pdf +4 digit 7 segment green LED +0 +12 +12 +Display_7Segment +CC56-12YWA +4 digit 7 segment green LED, http://www.kingbrightusa.com/images/catalog/SPEC/CC56-12YWA.pdf +4 digit 7 segment green LED +0 +12 +12 +Display_7Segment +DA04-11CGKWA +http://www.kingbright.com/attachments/file/psearch/000/00/00/DA04-11CGKWA(Ver.6A).pdf +Dubble digit green 7 segment LED display +0 +16 +16 +Display_7Segment +DA04-11SEKWA +http://www.kingbright.com/attachments/file/psearch/000/00/00/DA04-11SEKWA(Ver.9A).pdf +Dubble digit super bright orange 7 segment LED display +0 +16 +16 +Display_7Segment +DA04-11SURKWA +http://www.kingbright.com/attachments/file/psearch/000/00/00/DA04-11SURKWA(Ver.10A).pdf +Dubble digit hyper red 7 segment LED display +0 +16 +16 +Display_7Segment +DA04-11SYKWA +http://www.kingbright.com/attachments/file/psearch/000/00/00/DA04-11SYKWA(Ver.6A).pdf +Dubble digit super bright yellow 7 segment LED display +0 +16 +16 +Display_7Segment +DA56-11CGKWA +http://www.kingbright.com/attachments/file/psearch/000/00/00/DA56-11CGKWA(Ver.16A).pdf +Double digit seven segment green LED display +0 +18 +18 +Display_7Segment +DA56-11SEKWA +http://www.kingbright.com/attachments/file/psearch/000/00/00/DA56-11SEKWA(Ver.9A).pdf +Double digit seven segment super bright orange LED display +0 +18 +18 +Display_7Segment +DA56-11SURKWA +http://www.kingbright.com/attachments/file/psearch/000/00/00/DA56-11SURKWA(Ver.11A).pdf +Double digit seven segment hyper red LED display +0 +18 +18 +Display_7Segment +DA56-11SYKWA +http://www.kingbright.com/attachments/file/psearch/000/00/00/DA56-11SYKWA(Ver.11A).pdf +Double digit seven segment super bright yellow LED display +0 +18 +18 +Display_7Segment +DE113-XX-XX +http://www.display-elektronik.de/filter/DE113-RS-20_635.pdf +3 1/5 digit LOW BAT + 7-Segment LCD +0 +40 +40 +Display_7Segment +DE114-RS-20 +http://www.display-elektronik.de/filter/DE113-RS-20_635.pdf +3 1/5 digit reflective LCD LOW-BAT + 7-Segment +0 +40 +40 +Display_7Segment +DE122-XX-XX +http://www.display-elektronik.de/filter/DE122-RS-20_635.pdf +6 digit 7 segment LCD +0 +50 +50 +Display_7Segment +DE170-XX-XX +http://www.display-elektronik.de/filter/DE170-RS-20_75.pdf +3 1/5 digit reflective arrow bat + 7 segment LCD +0 +40 +40 +Display_7Segment +ELD_426XXXX +http://www.everlight.com/file/ProductFile/D426SYGWA-S530-E2.pdf +Double digit 7 segment brilliant yellow green LED +0 +10 +10 +Display_7Segment +HDSP-7401 +One digit 7 segment yellow, https://docs.broadcom.com/docs/AV02-2553EN +One digit 7 segment yellow +0 +10 +10 +Display_7Segment +HDSP-7507 ++-1 overflow 7 segment high efficiency red, https://docs.broadcom.com/docs/AV02-2553EN ++-1 overflow 7 segment high efficiency red +0 +10 +10 +Display_7Segment +HDSP-7801 +One digit 7 segment green, https://docs.broadcom.com/docs/AV02-2553EN +One digit 7 segment green +0 +10 +10 +Display_7Segment +HDSP-7807 ++-1 overflow 7 segment green, https://docs.broadcom.com/docs/AV02-2553EN ++-1 overflow 7 segment green +0 +10 +10 +Display_7Segment +HDSP-A151 +One digit 7 segment red, https://docs.broadcom.com/docs/AV02-2553EN +One digit 7 segment high efficiency red +0 +10 +10 +Display_7Segment +HDSP-A401 +One digit 7 segment orange, common anode, https://docs.broadcom.com/docs/AV02-2553EN +One digit 7 segment orange common anode +0 +10 +10 +Display_7Segment +KCSC02-105 +http://www.kingbright.com/attachments/file/psearch/000/00/00/KCSC02-105(Ver.9A).pdf +Single digit 7 segement hyper red LED +0 +10 +10 +Display_7Segment +KCSC02-106 +http://www.kingbright.com/attachments/file/psearch/000/00/00/KCSC02-106(Ver.10A).pdf +Single digit 7 segement super bright orange LED +0 +10 +10 +Display_7Segment +KCSC02-107 +http://www.kingbright.com/attachments/file/psearch/000/00/00/KCSC02-107(Ver.9A).pdf +Single digit 7 segement super bright yellow LED +0 +10 +10 +Display_7Segment +KCSC02-123 +http://www.kingbright.com/attachments/file/psearch/000/00/00/KCSC02-123(Ver.10A).pdf +Single digit 7 segement super bright yellow LED +0 +10 +10 +Display_7Segment +KCSC02-136 +http://www.kingbright.com/attachments/file/psearch/000/00/00/KCSC02-136(Ver.6B).pdf +Single digit 7 segement super bright yellow LED +0 +10 +10 +Display_7Segment +MAN71A +https://www.digchip.com/datasheets/parts/datasheet/161/MAN3640A-pdf.php +One digit 7 segment red LED with right dot +0 +14 +14 +Display_7Segment +MAN72A +https://www.digchip.com/datasheets/parts/datasheet/161/MAN3640A-pdf.php +One digit 7 segment red LED with left dot +0 +14 +14 +Display_7Segment +MAN73A +https://www.digchip.com/datasheets/parts/datasheet/161/MAN3640A-pdf.php +Overflow +- 1 red LED +0 +14 +14 +Display_7Segment +MAN3410A +https://www.digchip.com/datasheets/parts/datasheet/161/MAN3640A-pdf.php +One digit 7 segment green LED with dot +0 +14 +14 +Display_7Segment +MAN3420A +https://www.digchip.com/datasheets/parts/datasheet/161/MAN3640A-pdf.php +One digit 7 segment green LED with left dot +0 +14 +14 +Display_7Segment +MAN3610A +https://www.digchip.com/datasheets/parts/datasheet/161/MAN3640A-pdf.php +One digit 7 segment orange LED with right dot +0 +14 +14 +Display_7Segment +MAN3620A +https://www.digchip.com/datasheets/parts/datasheet/161/MAN3640A-pdf.php +One digit 7 segment orange LED with left dot +0 +14 +14 +Display_7Segment +MAN3630A +https://www.digchip.com/datasheets/parts/datasheet/161/MAN3640A-pdf.php +Overflow +- 1 orange LED +0 +14 +14 +Display_7Segment +MAN3810A +https://www.digchip.com/datasheets/parts/datasheet/161/MAN3640A-pdf.php +One digit 7 segment yellow LED with right dot +0 +14 +14 +Display_7Segment +MAN3820A +https://www.digchip.com/datasheets/parts/datasheet/161/MAN3640A-pdf.php +One digit 7 segment yellow LED with left dot +0 +14 +14 +Display_7Segment +SA15-11xxx +http://www.kingbrightusa.com/images/catalog/SPEC/SA15-11SRWA.pdf +SA15-11xxx single digit 7 segment display 38.1mm 1.5inch +0 +10 +10 +Display_7Segment +SBC18-11SURKCGKWA +http://www.kingbright.com/attachments/file/psearch/000/00/00/SBC18-11SURKCGKWA(Ver.6A).pdf +single digit 7 segemnt red/green LED +0 +10 +10 +Display_7Segment +Sx39-1xxxxx +Single digit 7 segment LED display in red, yellow or green colour http://www.kingbrightusa.com/images/catalog/SPEC/sa39-11ewa.pdf +One digit LED 7 segment SA39-11 SC39-11 SA39-12 SC39-12 +0 +10 +10 +Ferrite_THT +LairdTech_28C0236-0JW-10 +Ferrite, vertical, LairdTech 28C0236-0JW-10, https://assets.lairdtech.com/home/brandworld/files/28C0236-0JW-10.pdf, JW Miller core https://www.bourns.com/products/magnetic-products/j.w.-miller-through-hole-ferrite-beads-emi-filters +Ferrite vertical LairdTech 28C0236-0JW-10 +0 +2 +2 +Fiducial +Fiducial_0.5mm_Mask1.5mm +Circular Fiducial, 0.5mm bare copper, 1.5mm soldermask opening +fiducial +0 +1 +0 +Fiducial +Fiducial_0.5mm_Mask1mm +Circular Fiducial, 0.5mm bare copper, 1mm soldermask opening (Level C) +fiducial +0 +1 +0 +Fiducial +Fiducial_0.75mm_Mask1.5mm +Circular Fiducial, 0.75mm bare copper, 1.5mm soldermask opening (Level B) +fiducial +0 +1 +0 +Fiducial +Fiducial_0.75mm_Mask2.25mm +Circular Fiducial, 0.75mm bare copper, 2.25mm soldermask opening +fiducial +0 +1 +0 +Fiducial +Fiducial_1.5mm_Mask3mm +Circular Fiducial, 1.5mm bare copper, 3mm soldermask opening +fiducial +0 +1 +0 +Fiducial +Fiducial_1.5mm_Mask4.5mm +Circular Fiducial, 1.5mm bare copper, 4.5mm soldermask opening +fiducial +0 +1 +0 +Fiducial +Fiducial_1mm_Mask2mm +Circular Fiducial, 1mm bare copper, 2mm soldermask opening (Level A) +fiducial +0 +1 +0 +Fiducial +Fiducial_1mm_Mask3mm +Circular Fiducial, 1mm bare copper, 3mm soldermask opening (recommended) +fiducial +0 +1 +0 +Filter +Filter_1109-5_1.1x0.9mm +5-pin SAW filter package - 1.1x0.9 mm Body; (see https://www.murata.com/~/media/webrenewal/support/library/catalog/products/filter/rf/p73e.ashx?la=en-gb) +Filter 5 +0 +5 +5 +Filter +Filter_1411-5_1.4x1.1mm +5-pin filter package - 1.4x1.1 mm Body; (see https://global.kyocera.com/prdct/electro/product/pdf/sf14_tdlte.pdf) +Filter 5 +0 +5 +5 +Filter +Filter_Bourns_SRF0905_6.0x9.2mm +https://www.bourns.com/docs/Product-Datasheets/SRF0905.pdf +Line Filter +0 +4 +4 +Filter +Filter_FILTERCON_1FPxx +0.5A, 250VAC, 50/60Hz line filter (https://filtercon.com.pl/wp-content/uploads/2019/07/Karta-katalogowa-FP-12-1.pdf) +EMI filter +0 +4 +4 +Filter +Filter_Mini-Circuits_FV1206 +Mini-Circuits Filter SMD 1206 https://ww2.minicircuits.com/case_style/FV1206.pdf +Mini-Circuits Filter SMD 1206 +0 +6 +4 +Filter +Filter_Mini-Circuits_FV1206-1 +Mini-Circuits Filter SMD 1206 https://ww2.minicircuits.com/case_style/FV1206-1.pdf +Mini-Circuits Filter SMD 1206 +0 +6 +6 +Filter +Filter_Mini-Circuits_FV1206-4 +Mini-Circuits Filter SMD 1206 https://ww2.minicircuits.com/case_style/FV1206-4.pdf +Mini-Circuits Filter SMD 1206 +0 +8 +4 +Filter +Filter_Mini-Circuits_FV1206-5 +Mini-Circuits Filter SMD 1206 https://ww2.minicircuits.com/case_style/FV1206-5.pdf +Mini-Circuits Filter SMD 1206 +0 +8 +4 +Filter +Filter_Mini-Circuits_FV1206-6 +Mini-Circuits Filter SMD 1206 https://ww2.minicircuits.com/case_style/FV1206-6.pdf +Mini-Circuits Filter SMD 1206 +0 +14 +8 +Filter +Filter_Mini-Circuits_FV1206-7 +Mini-Circuits Filter SMD 1206 https://ww2.minicircuits.com/case_style/FV1206-7.pdf +Mini-Circuits Filter SMD 1206 +0 +5 +3 +Filter +Filter_Murata_BNX025 +https://www.murata.com/en-us/products/productdata/8796778004510/QNFH9101.pdf?1496719830000 +EMI Filter +0 +6 +4 +Filter +Filter_Murata_BNX025_ThermalVias +https://www.murata.com/en-us/products/productdata/8796778004510/QNFH9101.pdf?1496719830000 +EMI Filter +0 +19 +4 +Filter +Filter_Schaffner_FN405 +Compact PCB mounting EMI filter (https://www.schaffner.com/de/produkte/download/product/datasheet/fn-405-pcb-mounting-filter/) +EMI filter +0 +5 +5 +Filter +Filter_Schaffner_FN406 +Ultra Compact EMC Filter (https://www.schaffner.com/products/download/product/datasheet/fn-406-ultra-compact-emc-filter/) +emi filter +0 +5 +5 +Fuse +Fuse_0402_1005Metric +Fuse SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator +fuse +0 +2 +2 +Fuse +Fuse_0402_1005Metric_Castellated +Fuse SMD 0402 (1005 Metric), castellated end terminal, IPC_7351. (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator +fuse castellated +0 +2 +2 +Fuse +Fuse_0402_1005Metric_Pad0.77x0.64mm_HandSolder +Fuse SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator +fuse handsolder +0 +2 +2 +Fuse +Fuse_0603_1608Metric +Fuse SMD 0603 (1608 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator +fuse +0 +2 +2 +Fuse +Fuse_0603_1608Metric_Castellated +Fuse SMD 0603 (1608 Metric), castellated end terminal, IPC_7351. (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator +fuse castellated +0 +2 +2 +Fuse +Fuse_0603_1608Metric_Pad1.05x0.95mm_HandSolder +Fuse SMD 0603 (1608 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator +fuse handsolder +0 +2 +2 +Fuse +Fuse_0805_2012Metric +Fuse SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing), generated with kicad-footprint-generator +fuse +0 +2 +2 +Fuse +Fuse_0805_2012Metric_Castellated +Fuse SMD 0805 (2012 Metric), castellated end terminal, IPC_7351. (Body size source: https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing), generated with kicad-footprint-generator +fuse castellated +0 +2 +2 +Fuse +Fuse_0805_2012Metric_Pad1.15x1.40mm_HandSolder +Fuse SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing), generated with kicad-footprint-generator +fuse handsolder +0 +2 +2 +Fuse +Fuse_1206_3216Metric +Fuse SMD 1206 (3216 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator +fuse +0 +2 +2 +Fuse +Fuse_1206_3216Metric_Castellated +Fuse SMD 1206 (3216 Metric), castellated end terminal, IPC_7351. (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator +fuse castellated +0 +2 +2 +Fuse +Fuse_1206_3216Metric_Pad1.42x1.75mm_HandSolder +Fuse SMD 1206 (3216 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator +fuse handsolder +0 +2 +2 +Fuse +Fuse_1210_3225Metric +Fuse SMD 1210 (3225 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator +fuse +0 +2 +2 +Fuse +Fuse_1210_3225Metric_Castellated +Fuse SMD 1210 (3225 Metric), castellated end terminal, IPC_7351. (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator +fuse castellated +0 +2 +2 +Fuse +Fuse_1210_3225Metric_Pad1.42x2.65mm_HandSolder +Fuse SMD 1210 (3225 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator +fuse handsolder +0 +2 +2 +Fuse +Fuse_1812_4532Metric +Fuse SMD 1812 (4532 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: https://www.nikhef.nl/pub/departments/mt/projects/detectorR_D/dtddice/ERJ2G.pdf), generated with kicad-footprint-generator +fuse +0 +2 +2 +Fuse +Fuse_1812_4532Metric_Castellated +Fuse SMD 1812 (4532 Metric), castellated end terminal, IPC_7351. (Body size source: https://www.nikhef.nl/pub/departments/mt/projects/detectorR_D/dtddice/ERJ2G.pdf), generated with kicad-footprint-generator +fuse castellated +0 +2 +2 +Fuse +Fuse_1812_4532Metric_Pad1.30x3.40mm_HandSolder +Fuse SMD 1812 (4532 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: https://www.nikhef.nl/pub/departments/mt/projects/detectorR_D/dtddice/ERJ2G.pdf), generated with kicad-footprint-generator +fuse handsolder +0 +2 +2 +Fuse +Fuse_2010_5025Metric +Fuse SMD 2010 (5025 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator +fuse +0 +2 +2 +Fuse +Fuse_2010_5025Metric_Castellated +Fuse SMD 2010 (5025 Metric), castellated end terminal, IPC_7351. (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator +fuse castellated +0 +2 +2 +Fuse +Fuse_2010_5025Metric_Pad1.52x2.65mm_HandSolder +Fuse SMD 2010 (5025 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator +fuse handsolder +0 +2 +2 +Fuse +Fuse_2512_6332Metric +Fuse SMD 2512 (6332 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator +fuse +0 +2 +2 +Fuse +Fuse_2512_6332Metric_Castellated +Fuse SMD 2512 (6332 Metric), castellated end terminal, IPC_7351. (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator +fuse castellated +0 +2 +2 +Fuse +Fuse_2512_6332Metric_Pad1.52x3.35mm_HandSolder +Fuse SMD 2512 (6332 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator +fuse handsolder +0 +2 +2 +Fuse +Fuse_2816_7142Metric +Fuse SMD 2816 (7142 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size from: https://www.vishay.com/docs/30100/wsl.pdf), generated with kicad-footprint-generator +fuse +0 +2 +2 +Fuse +Fuse_2816_7142Metric_Castellated +Fuse SMD 2816 (7142 Metric), castellated end terminal, IPC_7351. (Body size from: https://www.vishay.com/docs/30100/wsl.pdf), generated with kicad-footprint-generator +fuse castellated +0 +2 +2 +Fuse +Fuse_2816_7142Metric_Pad3.20x4.45mm_HandSolder +Fuse SMD 2816 (7142 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size from: https://www.vishay.com/docs/30100/wsl.pdf), generated with kicad-footprint-generator +fuse handsolder +0 +2 +2 +Fuse +Fuse_2920_7451Metric +Fuse SMD 2920 (7451 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size from: http://www.megastar.com/products/fusetronic/polyswitch/PDF/smd2920.pdf), generated with kicad-footprint-generator +fuse +0 +2 +2 +Fuse +Fuse_2920_7451Metric_Castellated +Fuse SMD 2920 (7451 Metric), castellated end terminal, IPC_7351. (Body size from: http://www.megastar.com/products/fusetronic/polyswitch/PDF/smd2920.pdf), generated with kicad-footprint-generator +fuse castellated +0 +2 +2 +Fuse +Fuse_2920_7451Metric_Pad2.10x5.45mm_HandSolder +Fuse SMD 2920 (7451 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size from: http://www.megastar.com/products/fusetronic/polyswitch/PDF/smd2920.pdf), generated with kicad-footprint-generator +fuse handsolder +0 +2 +2 +Fuse +Fuse_BelFuse_0ZRE0005FF_L8.3mm_W3.8mm +Fuse 0ZRE0005FF, BelFuse, Radial Leaded PTC, https://www.belfuse.com/resources/datasheets/circuitprotection/ds-cp-0zre-series.pdf +0ZRE BelFuse radial PTC +0 +2 +2 +Fuse +Fuse_BelFuse_0ZRE0008FF_L8.3mm_W3.8mm +Fuse 0ZRE0008FF, BelFuse, Radial Leaded PTC,https://www.belfuse.com/resources/datasheets/circuitprotection/ds-cp-0zre-series.pdf +0ZRE BelFuse radial PTC +0 +2 +2 +Fuse +Fuse_BelFuse_0ZRE0012FF_L8.3mm_W3.8mm +Fuse 0ZRE0012FF, BelFuse, Radial Leaded PTC,https://www.belfuse.com/resources/datasheets/circuitprotection/ds-cp-0zre-series.pdf +0ZRE BelFuse radial PTC +0 +2 +2 +Fuse +Fuse_BelFuse_0ZRE0016FF_L9.9mm_W3.8mm +Fuse 0ZRE0016FF, BelFuse, Radial Leaded PTC,https://www.belfuse.com/resources/datasheets/circuitprotection/ds-cp-0zre-series.pdf +0ZRE BelFuse radial PTC +0 +2 +2 +Fuse +Fuse_BelFuse_0ZRE0025FF_L9.6mm_W3.8mm +Fuse 0ZRE0025FF, BelFuse, Radial Leaded PTC,https://www.belfuse.com/resources/datasheets/circuitprotection/ds-cp-0zre-series.pdf +0ZRE BelFuse radial PTC +0 +2 +2 +Fuse +Fuse_BelFuse_0ZRE0033FF_L11.4mm_W3.8mm +Fuse 0ZRE0033FF, BelFuse, Radial Leaded PTC,https://www.belfuse.com/resources/datasheets/circuitprotection/ds-cp-0zre-series.pdf +0ZRE BelFuse radial PTC +0 +2 +2 +Fuse +Fuse_BelFuse_0ZRE0040FF_L11.5mm_W3.8mm +Fuse 0ZRE0040FF, BelFuse, Radial Leaded PTC,https://www.belfuse.com/resources/datasheets/circuitprotection/ds-cp-0zre-series.pdf +0ZRE BelFuse radial PTC +0 +2 +2 +Fuse +Fuse_BelFuse_0ZRE0055FF_L14.0mm_W4.1mm +Fuse 0ZRE0055FF, BelFuse, Radial Leaded PTC,https://www.belfuse.com/resources/datasheets/circuitprotection/ds-cp-0zre-series.pdf +0ZRE BelFuse radial PTC +0 +2 +2 +Fuse +Fuse_BelFuse_0ZRE0075FF_L11.5mm_W4.8mm +Fuse 0ZRE0075FF, BelFuse, Radial Leaded PTC,https://www.belfuse.com/resources/datasheets/circuitprotection/ds-cp-0zre-series.pdf +0ZRE BelFuse radial PTC +0 +2 +2 +Fuse +Fuse_BelFuse_0ZRE0100FF_L18.7mm_W5.1mm +Fuse 0ZRE0100FF, BelFuse, Radial Leaded PTC,https://www.belfuse.com/resources/datasheets/circuitprotection/ds-cp-0zre-series.pdf +0ZRE BelFuse radial PTC +0 +2 +2 +Fuse +Fuse_BelFuse_0ZRE0125FF_L21.2mm_W5.3mm +Fuse 0ZRE0125FF, BelFuse, Radial Leaded PTC,https://www.belfuse.com/resources/datasheets/circuitprotection/ds-cp-0zre-series.pdf +0ZRE BelFuse radial PTC +0 +2 +2 +Fuse +Fuse_BelFuse_0ZRE0150FF_L23.4mm_W5.3mm +Fuse 0ZRE0150FF, BelFuse, Radial Leaded PTC,https://www.belfuse.com/resources/datasheets/circuitprotection/ds-cp-0zre-series.pdf +0ZRE BelFuse radial PTC +0 +2 +2 +Fuse +Fuse_BelFuse_0ZRE0200FF_L24.9mm_W6.1mm +Fuse 0ZRE0200FF, BelFuse, Radial Leaded PTC,https://www.belfuse.com/resources/datasheets/circuitprotection/ds-cp-0zre-series.pdf +0ZRE BelFuse radial PTC +0 +2 +2 +Fuse +Fuse_Blade_ATO_directSolder +car blade fuse direct solder +car blade fuse +0 +2 +2 +Fuse +Fuse_Blade_Mini_directSolder +car blade fuse mini, direct solder +car blade fuse mini +0 +2 +2 +Fuse +Fuse_Bourns_MF-RG300 +PTC Resettable Fuse, Ihold = 3.0A, Itrip=5.1A, http://www.bourns.com/docs/Product-Datasheets/mfrg.pdf +ptc resettable fuse polyfuse THT +0 +2 +2 +Fuse +Fuse_Bourns_MF-RG400 +PTC Resettable Fuse, Ihold = 4.0A, Itrip=6.8A, http://www.bourns.com/docs/Product-Datasheets/mfrg.pdf +ptc resettable fuse polyfuse THT +0 +2 +2 +Fuse +Fuse_Bourns_MF-RG500 +PTC Resettable Fuse, Ihold = 5.0A, Itrip=8.5A, http://www.bourns.com/docs/Product-Datasheets/mfrg.pdf +ptc resettable fuse polyfuse THT +0 +2 +2 +Fuse +Fuse_Bourns_MF-RG600 +PTC Resettable Fuse, Ihold = 6.0A, Itrip=10.2A, http://www.bourns.com/docs/Product-Datasheets/mfrg.pdf +ptc resettable fuse polyfuse THT +0 +2 +2 +Fuse +Fuse_Bourns_MF-RG650 +PTC Resettable Fuse, Ihold = 6.5A, Itrip=11.1A, http://www.bourns.com/docs/Product-Datasheets/mfrg.pdf +ptc resettable fuse polyfuse THT +0 +2 +2 +Fuse +Fuse_Bourns_MF-RG700 +PTC Resettable Fuse, Ihold = 7.0A, Itrip=11.9A, http://www.bourns.com/docs/Product-Datasheets/mfrg.pdf +ptc resettable fuse polyfuse THT +0 +2 +2 +Fuse +Fuse_Bourns_MF-RG800 +PTC Resettable Fuse, Ihold = 8.0A, Itrip=13.6A, http://www.bourns.com/docs/Product-Datasheets/mfrg.pdf +ptc resettable fuse polyfuse THT +0 +2 +2 +Fuse +Fuse_Bourns_MF-RG900 +PTC Resettable Fuse, Ihold = 9.0A, Itrip=15.3A, http://www.bourns.com/docs/Product-Datasheets/mfrg.pdf +ptc resettable fuse polyfuse THT +0 +2 +2 +Fuse +Fuse_Bourns_MF-RG1000 +PTC Resettable Fuse, Ihold = 10.0A, Itrip=17.0A, http://www.bourns.com/docs/Product-Datasheets/mfrg.pdf +ptc resettable fuse polyfuse THT +0 +2 +2 +Fuse +Fuse_Bourns_MF-RG1100 +PTC Resettable Fuse, Ihold = 11.0A, Itrip=18.7A, http://www.bourns.com/docs/Product-Datasheets/mfrg.pdf +ptc resettable fuse polyfuse THT +0 +2 +2 +Fuse +Fuse_Bourns_MF-RHT050 +PTC Resettable Fuse, Ihold = 0.5A, Itrip=0.92A, http://www.bourns.com/docs/product-datasheets/mfrht.pdf +ptc resettable fuse polyfuse THT +0 +2 +2 +Fuse +Fuse_Bourns_MF-RHT070 +PTC Resettable Fuse, Ihold = 0.7A, Itrip=1.4A, http://www.bourns.com/docs/product-datasheets/mfrht.pdf +ptc resettable fuse polyfuse THT +0 +2 +2 +Fuse +Fuse_Bourns_MF-RHT100 +PTC Resettable Fuse, Ihold = 1.0A, Itrip=1.8A, http://www.bourns.com/docs/product-datasheets/mfrht.pdf +ptc resettable fuse polyfuse THT +0 +2 +2 +Fuse +Fuse_Bourns_MF-RHT200 +PTC Resettable Fuse, Ihold = 2.0A, Itrip=3.8A, http://www.bourns.com/docs/product-datasheets/mfrht.pdf +ptc resettable fuse polyfuse THT +0 +2 +2 +Fuse +Fuse_Bourns_MF-RHT300 +PTC Resettable Fuse, Ihold = 3.0A, Itrip=6.0A, http://www.bourns.com/docs/product-datasheets/mfrht.pdf +ptc resettable fuse polyfuse THT +0 +2 +2 +Fuse +Fuse_Bourns_MF-RHT400 +PTC Resettable Fuse, Ihold = 4.0A, Itrip=7.5A, http://www.bourns.com/docs/product-datasheets/mfrht.pdf +ptc resettable fuse polyfuse THT +0 +2 +2 +Fuse +Fuse_Bourns_MF-RHT500 +PTC Resettable Fuse, Ihold = 5.0A, Itrip=9.0A, http://www.bourns.com/docs/product-datasheets/mfrht.pdf +ptc resettable fuse polyfuse THT +0 +2 +2 +Fuse +Fuse_Bourns_MF-RHT550 +PTC Resettable Fuse, Ihold = 5.5A, Itrip=10.0A, http://www.bourns.com/docs/product-datasheets/mfrht.pdf +ptc resettable fuse polyfuse THT +0 +2 +2 +Fuse +Fuse_Bourns_MF-RHT600 +PTC Resettable Fuse, Ihold = 6.0A, Itrip=10.8A, http://www.bourns.com/docs/product-datasheets/mfrht.pdf +ptc resettable fuse polyfuse THT +0 +2 +2 +Fuse +Fuse_Bourns_MF-RHT650 +PTC Resettable Fuse, Ihold = 6.5A, Itrip=12.0A, http://www.bourns.com/docs/product-datasheets/mfrht.pdf +ptc resettable fuse polyfuse THT +0 +2 +2 +Fuse +Fuse_Bourns_MF-RHT700 +PTC Resettable Fuse, Ihold = 7.0A, Itrip=13.0A, http://www.bourns.com/docs/product-datasheets/mfrht.pdf +ptc resettable fuse polyfuse THT +0 +2 +2 +Fuse +Fuse_Bourns_MF-RHT750 +PTC Resettable Fuse, Ihold = 7.5A, Itrip=13.1A, http://www.bourns.com/docs/product-datasheets/mfrht.pdf +ptc resettable fuse polyfuse THT +0 +2 +2 +Fuse +Fuse_Bourns_MF-RHT800 +PTC Resettable Fuse, Ihold = 8.0A, Itrip=15.0A, http://www.bourns.com/docs/product-datasheets/mfrht.pdf +ptc resettable fuse polyfuse THT +0 +2 +2 +Fuse +Fuse_Bourns_MF-RHT900 +PTC Resettable Fuse, Ihold = 9.0A, Itrip=16.5A, http://www.bourns.com/docs/product-datasheets/mfrht.pdf +ptc resettable fuse polyfuse THT +0 +2 +2 +Fuse +Fuse_Bourns_MF-RHT1000 +PTC Resettable Fuse, Ihold = 10.0A, Itrip=18.5A, http://www.bourns.com/docs/product-datasheets/mfrht.pdf +ptc resettable fuse polyfuse THT +0 +2 +2 +Fuse +Fuse_Bourns_MF-RHT1100 +PTC Resettable Fuse, Ihold = 11.0A, Itrip=20.0A, http://www.bourns.com/docs/product-datasheets/mfrht.pdf +ptc resettable fuse polyfuse THT +0 +2 +2 +Fuse +Fuse_Bourns_MF-RHT1300 +PTC Resettable Fuse, Ihold = 13.0A, Itrip=24.0A, http://www.bourns.com/docs/product-datasheets/mfrht.pdf +ptc resettable fuse polyfuse THT +0 +2 +2 +Fuse +Fuse_Bourns_MF-SM_7.98x5.44mm +https://www.bourns.com/docs/Product-Datasheets/mfsm.pdf +bourns ptc resettable fuse polyfuse MF-SM MF-SMHT +0 +2 +2 +Fuse +Fuse_Bourns_MF-SM_9.5x6.71mm +https://www.bourns.com/docs/Product-Datasheets/mfsm.pdf +bourns ptc resettable fuse polyfuse MF-SM MF-SMHT +0 +2 +2 +Fuse +Fuse_Littelfuse-LVR100 +Littelfuse, resettable fuse, PTC, polyswitch LVR100, Ih 1A http://www.littelfuse.com/~/media/electronics/datasheets/resettable_ptcs/littelfuse_ptc_lvr_catalog_datasheet.pdf.pdf +LVR100 PTC resettable polyswitch +0 +2 +2 +Fuse +Fuse_Littelfuse-LVR125 +Littelfuse, resettable fuse, PTC, polyswitch LVR125, Ih 1.25A, http://www.littelfuse.com/~/media/electronics/datasheets/resettable_ptcs/littelfuse_ptc_lvr_catalog_datasheet.pdf.pdf +LVR125 PTC resettable polyswitch +0 +2 +2 +Fuse +Fuse_Littelfuse-LVR200 +Littelfuse, resettable fuse, PTC, polyswitch LVR200, Ih 2A, http://www.littelfuse.com/~/media/electronics/datasheets/resettable_ptcs/littelfuse_ptc_lvr_catalog_datasheet.pdf.pdf +LVR200 PTC resettable polyswitch +0 +2 +2 +Fuse +Fuse_Littelfuse-NANO2-451_453 +Littelfuse NANO2 https://www.littelfuse.com/~/media/electronics/datasheets/fuses/littelfuse_fuse_451_453_datasheet.pdf.pdf +Fuse Nano2 +0 +2 +2 +Fuse +Fuse_Littelfuse_372_D8.50mm +Fuse, Littelfuse, 372, 8.5x8mm, https://www.littelfuse.com/~/media/electronics/datasheets/fuses/littelfuse_fuse_372_datasheet.pdf.pdf +fuse tht radial +0 +2 +2 +Fuse +Fuse_Littelfuse_395Series +Fuse, TE5, Littelfuse/Wickmann, No. 460, No560, +Fuse TE5 Littelfuse/Wickmann No. 460 No560 +0 +2 +2 +Fuse +Fuse_Schurter_UMT250 +Surface Mount Fuse, 3 x 10.1 mm, Time-Lag T, 250 VAC, 125 VDC (https://us.schurter.com/bundles/snceschurter/epim/_ProdPool_/newDS/en/typ_UMT_250.pdf) +Schurter fuse smd +0 +2 +2 +Fuse +Fuse_Schurter_UMZ250 +Surface Mount Fuse with Clip, 4.2 x 11.1 mm, Time-Lag T, 250 VAC, 125 VDC (https://us.schurter.com/bundles/snceschurter/epim/_ProdPool_/newDS/en/typ_UMZ_250.pdf) +fuse smd mount holder +0 +2 +2 +Fuse +Fuse_SunFuse-6HP +SunFuse Ceramic Slow Blow Fuse 6H_6HP.PDF +UL/CSA 6x32mm Ceramic Slow Blow Fuse +0 +2 +2 +Fuse +Fuseholder_Blade_ATO_Littelfuse_Pudenz_2_Pin +Fuseholder ATO Blade littelfuse Pudenz 2 Pin +Fuseholder ATO Blade littelfuse Pudenz 2 Pin +0 +2 +2 +Fuse +Fuseholder_Blade_Mini_Keystone_3568 +fuse holder, car blade fuse mini, http://www.keyelco.com/product-pdf.cfm?p=306 +car blade fuse mini +0 +4 +2 +Fuse +Fuseholder_Cylinder-5x20mm_Bulgin_FX0456_Vertical_Closed +Fuseholder, 5x20, closed, vertical, Bulgin, FX0456, https://www.bulgin.com/products/pub/media/bulgin/data/Fuseholders.pdf +Fuseholder 5x20 closed vertical Bulgin FX0456 Sicherungshalter +0 +2 +2 +Fuse +Fuseholder_Cylinder-5x20mm_Bulgin_FX0457_Horizontal_Closed +Fuseholder, 5x20, closed, horizontal, Bulgin, FX0457, Sicherungshalter, +Fuseholder 5x20 closed horizontal Bulgin FX0457 Sicherungshalter +0 +2 +2 +Fuse +Fuseholder_Cylinder-5x20mm_EATON_H15-V-1_Vertical_Closed +PCB fuse holders for 5 mm x 20 mm fuses; 250V; 10A (http://www.cooperindustries.com/content/dam/public/bussmann/Electronics/Resources/product-datasheets/bus-elx-ds-4426-h15.pdf) +fuse holder vertical 5x20mm +0 +2 +2 +Fuse +Fuseholder_Cylinder-5x20mm_EATON_HBV_Vertical_Closed +5 mm x 20 mm fuse holders; Vertical w/ Stability Pins; 250V; 6.3-16A (http://www.cooperindustries.com/content/dam/public/bussmann/Electronics/Resources/product-datasheets/Bus_Elx_DS_2118_HB_PCB_Series.pdf) +fuse holder vertical 5x20mm +0 +2 +2 +Fuse +Fuseholder_Cylinder-5x20mm_EATON_HBW_Vertical_Closed +5 mm x 20 mm fuse holders; Vertical w/o Stability Pins; 250V; 6.3-16A (http://www.cooperindustries.com/content/dam/public/bussmann/Electronics/Resources/product-datasheets/Bus_Elx_DS_2118_HB_PCB_Series.pdf) +fuse holder vertical 5x20mm +0 +2 +2 +Fuse +Fuseholder_Cylinder-5x20mm_Schurter_0031_8201_Horizontal_Open +Fuseholder horizontal open, 5x20mm, 500V, 16A, Schurter 0031.8201, https://us.schurter.com/bundles/snceschurter/epim/_ProdPool_/newDS/en/typ_OGN.pdf +Fuseholder horizontal open 5x20 Schurter 0031.8201 +0 +2 +2 +Fuse +Fuseholder_Cylinder-5x20mm_Schurter_FAB_0031-355x_Horizontal_Closed +Fuseholder 5x20mm horizontal Shurter model FAB, Suitable for order numbers 0031.3551 and 0031.3558 (https://www.schurter.com/bundles/snceschurter/epim/_ProdPool_/newDS/en/typ_FAB.pdf) +Fuseholder 5x20mm closed horizontal +0 +2 +2 +Fuse +Fuseholder_Cylinder-5x20mm_Schurter_FPG4_Vertical_Closed +Shock-Safe Fuseholder, 5 x 20 mm, Slotted Cap/Fingergrip, vertical, IEC 60335-1; 250VAC/10A VDE; 500V/16A UL/CSA (https://us.schurter.com/bundles/snceschurter/epim/_ProdPool_/newDS/en/typ_FPG4.pdf) +fuse holder vertical 5x20mm +0 +4 +2 +Fuse +Fuseholder_Cylinder-5x20mm_Schurter_FUP_0031.2510_Horizontal_Closed +Shock-Safe closed Fuseholder, Schurter FUP Series, 5.0 x 20mm, Slotted Cap, horizontal, 500 VAC 4W/16A (VDE), 600V 30A (UL/CSA), order numbers: 0031.2510 (0031.2500 + 0031.2323), http://www.schurter.ch/bundles/snceschurter/epim/_ProdPool_/newDS/en/typ_FUP.pdf +Fuseholder 5x20mm horizontal closed +0 +3 +2 +Fuse +Fuseholder_Cylinder-5x20mm_Schurter_OGN-SMD_Horizontal_Open +Fuseholder horizontal open, 5x20mm, 500V, 16A (https://us.schurter.com/bundles/snceschurter/epim/_ProdPool_/newDS/en/typ_OGN-SMD.pdf) +Fuseholder horizontal open 5x20 Schurter 0031.8221 +0 +2 +2 +Fuse +Fuseholder_Cylinder-5x20mm_Stelvio-Kontek_PTF78_Horizontal_Open +https://www.tme.eu/en/Document/3b48dbe2b9714a62652c97b08fcd464b/PTF78.pdf +Fuseholder horizontal open 5x20 Stelvio-Kontek PTF/78 +0 +2 +2 +Fuse +Fuseholder_Cylinder-6.3x32mm_Schurter_0031-8002_Horizontal_Open +Fuseholder, horizontal, open, 6.3x32, Schurter, 0031.8002, https://www.schurter.com/en/datasheet/typ_OG__Holder__6.3x32.pdf +Fuseholder horizontal open 6.3x32 Schurter 0031.8002 +0 +2 +2 +Fuse +Fuseholder_Cylinder-6.3x32mm_Schurter_FUP_0031.2520_Horizontal_Closed +Shock-Safe closed Fuseholder, Schurter FUP Series, 6.3 x 32 mm, Slotted Cap, horizontal, 500 VAC 4W/16A (VDE), 600V 30A (UL/CSA), order numbers: 0031.2520 (0031.2500 + 0031.2321), http://www.schurter.ch/bundles/snceschurter/epim/_ProdPool_/newDS/en/typ_FUP.pdf +Fuseholder 6.3x32mm horizontal closed +0 +3 +2 +Fuse +Fuseholder_Littelfuse_Nano2_157x +Littelfuse NANO2 holder, https://www.littelfuse.com/~/media/electronics/datasheets/fuses/littelfuse_fuse_157_datasheet.pdf.pdf +SMD Nano2 holder +0 +2 +2 +Fuse +Fuseholder_TR5_Littelfuse_No560_No460 +Fuse, Fuseholder, TR5, Littelfuse/Wickmann, No. 460, No560, https://www.littelfuse.com/~/media/electronics/datasheets/fuse_holders/littelfuse_fuse_holder_559_560_datasheet.pdf.pdf +Fuse Fuseholder TR5 Littelfuse/Wickmann No. 460 No560 +0 +2 +2 +Heatsink +Heatsink_35x26mm_1xFixation3mm_Fischer-SK486-35 +Heatsink, 35mm x 26mm, 1x Fixation 3mm, Fischer SK486-35 +heatsink +0 +1 +1 +Heatsink +Heatsink_38x38mm_SpringFixation +Heatsink, 38x38mm, Spring Fixation, diagonal, +heatsink +0 +4 +1 +Heatsink +Heatsink_62x40mm_2xFixation3mm +Heatsink, 62 x 40mm, 2x 3mm Drills, +heatsink +0 +2 +1 +Heatsink +Heatsink_125x35x50mm_3xFixationM3 +Heatsink, 125x35x50mm, 3 fixation holes 3.2mm +heatsink +0 +0 +0 +Heatsink +Heatsink_AAVID_573300D00010G_TO-263 +Heatsink, 12.70mm x 26.16mm x 10.16, SMD, 18K/W, TO-263, D2 Pak, https://www.shopaavid.com/Product/573300D00000G +Heatsink AAVID TO-263 D2 Pak +0 +2 +1 +Heatsink +Heatsink_Aavid-TV5G_TO220_Horizontal +Heatsink TV5G TO-220 Horizontal, https://www.shopaavid.com/Product/TV-5G +Heatsink TV5G TO-220 Horizontal +0 +0 +0 +Heatsink +Heatsink_Fischer_FK224xx2201_25x8.3mm +25x8.3mm Heatsink, 18K/W, TO-220, https://www.fischerelektronik.de/web_fischer/en_GB/$catalogue/fischerData/PR/FK224_220_1_/datasheet.xhtml?branch=heatsinks +heatsink TO-220 +0 +2 +1 +Heatsink +Heatsink_Fischer_FK24413D2PAK_26x13mm +26x13 mm SMD heatsink for TO-252 TO-263 TO-268, https://www.fischerelektronik.de/pim/upload/fischerData/cadpdf/base/fk_244_13_d2_pak.pdf +heatsink TO-252 TO-263 TO-268 +0 +2 +1 +Heatsink +Heatsink_Fischer_SK104-STC-STIC_35x13mm_2xDrill2.5mm +Heatsink, 35mm x 13mm, 2x Fixation 2,5mm Drill, Soldering, Fischer SK104-STC-STIC, +Heatsink fischer TO-220 +0 +2 +1 +Heatsink +Heatsink_Fischer_SK104-STCB_35x13mm__2xDrill3.5mm_ScrewM3 +Heatsink, 35mm x 13mm, 2x Fixation 2,5mm Drill, Soldering, Fischer SK104-STC-STIC, +Heatsink fischer TO-220 +0 +2 +1 +Heatsink +Heatsink_Fischer_SK129-STS_42x25mm_2xDrill2.5mm +Heatsink, Fischer SK129 +heatsink fischer +0 +2 +1 +Heatsink +Heatsink_SheetType_50x7mm_2Fixations +Heatsink, Sheet type, 50x7mm, 2 fixations (solder), +Heatsink sheet +0 +2 +1 +Heatsink +Heatsink_Stonecold_HS-132_32x14mm_2xFixation1.5mm +Heatsink, StoneCold HS +heatsink +0 +2 +1 +Inductor_SMD +L_6.3x6.3_H3 +Choke, SMD, 6.3x6.3mm 3mm height +Choke SMD +0 +2 +2 +Inductor_SMD +L_7.3x7.3_H3.5 +Choke, SMD, 7.3x7.3mm 3.5mm height +Choke SMD +0 +2 +2 +Inductor_SMD +L_7.3x7.3_H4.5 +Choke, SMD, 7.3x7.3mm 4.5mm height +Choke SMD +0 +2 +2 +Inductor_SMD +L_10.4x10.4_H4.8 +Choke, SMD, 10.4x10.4mm 4.8mm height +Choke SMD +0 +2 +2 +Inductor_SMD +L_12x12mm_H4.5mm +Choke, SMD, 12x12mm 4.5mm height +Choke SMD +0 +2 +2 +Inductor_SMD +L_12x12mm_H6mm +Choke, SMD, 12x12mm 6mm height +Choke SMD +0 +2 +2 +Inductor_SMD +L_12x12mm_H8mm +Choke, SMD, 12x12mm 8mm height +Choke SMD +0 +2 +2 +Inductor_SMD +L_0201_0603Metric +Inductor SMD 0201 (0603 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: https://www.vishay.com/docs/20052/crcw0201e3.pdf), generated with kicad-footprint-generator +inductor +0 +4 +2 +Inductor_SMD +L_0201_0603Metric_Pad0.64x0.40mm_HandSolder +Inductor SMD 0201 (0603 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: https://www.vishay.com/docs/20052/crcw0201e3.pdf), generated with kicad-footprint-generator +inductor handsolder +0 +4 +2 +Inductor_SMD +L_0402_1005Metric +Inductor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator +inductor +0 +2 +2 +Inductor_SMD +L_0402_1005Metric_Pad0.77x0.64mm_HandSolder +Inductor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator +inductor handsolder +0 +2 +2 +Inductor_SMD +L_0603_1608Metric +Inductor SMD 0603 (1608 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator +inductor +0 +2 +2 +Inductor_SMD +L_0603_1608Metric_Pad1.05x0.95mm_HandSolder +Inductor SMD 0603 (1608 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator +inductor handsolder +0 +2 +2 +Inductor_SMD +L_0805_2012Metric +Inductor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 80, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator +inductor +0 +2 +2 +Inductor_SMD +L_0805_2012Metric_Pad1.05x1.20mm_HandSolder +Inductor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 80, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator +inductor handsolder +0 +2 +2 +Inductor_SMD +L_0805_2012Metric_Pad1.15x1.40mm_HandSolder +Inductor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing), generated with kicad-footprint-generator +inductor handsolder +0 +2 +2 +Inductor_SMD +L_01005_0402Metric +Inductor SMD 01005 (0402 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.vishay.com/docs/20056/crcw01005e3.pdf), generated with kicad-footprint-generator +inductor +0 +4 +2 +Inductor_SMD +L_01005_0402Metric_Pad0.57x0.30mm_HandSolder +Inductor SMD 01005 (0402 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: http://www.vishay.com/docs/20056/crcw01005e3.pdf), generated with kicad-footprint-generator +inductor handsolder +0 +4 +2 +Inductor_SMD +L_1008_2520Metric +Inductor SMD 1008 (2520 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: https://ecsxtal.com/store/pdf/ECS-MPI2520-SMD-POWER-INDUCTOR.pdf), generated with kicad-footprint-generator +inductor +0 +2 +2 +Inductor_SMD +L_1008_2520Metric_Pad1.43x2.20mm_HandSolder +Inductor SMD 1008 (2520 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: https://ecsxtal.com/store/pdf/ECS-MPI2520-SMD-POWER-INDUCTOR.pdf), generated with kicad-footprint-generator +inductor handsolder +0 +2 +2 +Inductor_SMD +L_1206_3216Metric +Inductor SMD 1206 (3216 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 80, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator +inductor +0 +2 +2 +Inductor_SMD +L_1206_3216Metric_Pad1.22x1.90mm_HandSolder +Inductor SMD 1206 (3216 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 80, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator +inductor handsolder +0 +2 +2 +Inductor_SMD +L_1206_3216Metric_Pad1.42x1.75mm_HandSolder +Inductor SMD 1206 (3216 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator +inductor handsolder +0 +2 +2 +Inductor_SMD +L_1210_3225Metric +Inductor SMD 1210 (3225 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator +inductor +0 +2 +2 +Inductor_SMD +L_1210_3225Metric_Pad1.42x2.65mm_HandSolder +Inductor SMD 1210 (3225 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator +inductor handsolder +0 +2 +2 +Inductor_SMD +L_1806_4516Metric +Inductor SMD 1806 (4516 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: https://www.modelithics.com/models/Vendor/MuRata/BLM41P.pdf), generated with kicad-footprint-generator +inductor +0 +2 +2 +Inductor_SMD +L_1806_4516Metric_Pad1.57x1.80mm_HandSolder +Capacitor SMD 1806 (4516 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: https://www.modelithics.com/models/Vendor/MuRata/BLM41P.pdf), generated with kicad-footprint-generator +inductor handsolder +0 +2 +2 +Inductor_SMD +L_1812_4532Metric +Inductor SMD 1812 (4532 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: https://www.nikhef.nl/pub/departments/mt/projects/detectorR_D/dtddice/ERJ2G.pdf), generated with kicad-footprint-generator +inductor +0 +2 +2 +Inductor_SMD +L_1812_4532Metric_Pad1.30x3.40mm_HandSolder +Inductor SMD 1812 (4532 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: https://www.nikhef.nl/pub/departments/mt/projects/detectorR_D/dtddice/ERJ2G.pdf), generated with kicad-footprint-generator +inductor handsolder +0 +2 +2 +Inductor_SMD +L_2010_5025Metric +Inductor SMD 2010 (5025 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator +inductor +0 +2 +2 +Inductor_SMD +L_2010_5025Metric_Pad1.52x2.65mm_HandSolder +Inductor SMD 2010 (5025 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator +inductor handsolder +0 +2 +2 +Inductor_SMD +L_2512_6332Metric +Inductor SMD 2512 (6332 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator +inductor +0 +2 +2 +Inductor_SMD +L_2512_6332Metric_Pad1.52x3.35mm_HandSolder +Inductor SMD 2512 (6332 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator +inductor handsolder +0 +2 +2 +Inductor_SMD +L_2816_7142Metric +Inductor SMD 2816 (7142 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size from: https://www.vishay.com/docs/30100/wsl.pdf), generated with kicad-footprint-generator +inductor +0 +2 +2 +Inductor_SMD +L_2816_7142Metric_Pad3.20x4.45mm_HandSolder +Inductor SMD 2816 (7142 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size from: https://www.vishay.com/docs/30100/wsl.pdf), generated with kicad-footprint-generator +inductor handsolder +0 +2 +2 +Inductor_SMD +L_Abracon_ASPI-0630LR +smd shielded power inductor https://abracon.com/Magnetics/power/ASPI-0630LR.pdf +inductor abracon smd shielded +0 +2 +2 +Inductor_SMD +L_Abracon_ASPI-3012S +smd shielded power inductor http://www.abracon.com/Magnetics/power/ASPI-3012S.pdf +inductor abracon smd shielded +0 +2 +2 +Inductor_SMD +L_Bourns-SRN1060 +Bourns SRN1060 series SMD inductor https://www.bourns.com/docs/Product-Datasheets/SRN1060.pdf +Bourns SRN1060 SMD inductor +0 +2 +2 +Inductor_SMD +L_Bourns-SRN4018 +Bourns SRN4018 series SMD inductor, https://www.bourns.com/docs/Product-Datasheets/SRN4018.pdf +Bourns SRN4018 SMD inductor +0 +2 +2 +Inductor_SMD +L_Bourns-SRN6028 +Bourns SRN6028 series SMD inductor +Bourns SRN6028 SMD inductor +0 +2 +2 +Inductor_SMD +L_Bourns-SRN8040_8x8.15mm +Bourns SRN8040 series SMD inductor 8x8.15mm, https://www.bourns.com/docs/Product-Datasheets/SRN8040.pdf +Bourns SRN8040 SMD inductor +0 +2 +2 +Inductor_SMD +L_Bourns-SRR1005 +Bourns SRR1005 series SMD inductor +Bourns SRR1005 SMD inductor +0 +2 +2 +Inductor_SMD +L_Bourns-SRU1028_10.0x10.0mm +Bourns SRU1028 series SMD inductor, https://www.bourns.com/docs/Product-Datasheets/SRU1028.pdf +Bourns SRU1028 SMD inductor +0 +2 +2 +Inductor_SMD +L_Bourns-SRU8028_8.0x8.0mm +Bourns SRU8028 series SMD inductor +Bourns SRU8028 SMD inductor +0 +2 +2 +Inductor_SMD +L_Bourns-SRU8043 +Bourns SRU8043 series SMD inductor +Bourns SRU8043 SMD inductor +0 +2 +2 +Inductor_SMD +L_Bourns_SDR1806 +https://www.bourns.com/docs/Product-Datasheets/SDR1806.pdf +Bourns SDR1806 +0 +2 +2 +Inductor_SMD +L_Bourns_SRF1260 +Inductor, Bourns, SRF1260, 12.5mmx12.5mm (Script generated with StandardBox.py) (https://www.bourns.com/docs/Product-Datasheets/SRF1260.pdf) +Inductor Bourns_SRF1260 +0 +4 +4 +Inductor_SMD +L_Bourns_SRN6045TA +http://www.bourns.com/docs/product-datasheets/srn6045ta.pdf +Semi-shielded Power Inductor +0 +2 +2 +Inductor_SMD +L_Bourns_SRN8040TA +https://www.bourns.com/docs/product-datasheets/srn8040ta.pdf +Inductor +0 +2 +2 +Inductor_SMD +L_Bourns_SRP1245A +Bourns SRP1245A series SMD inductor http://www.bourns.com/docs/Product-Datasheets/SRP1245A.pdf +Bourns SRP1245A SMD inductor +0 +2 +2 +Inductor_SMD +L_Bourns_SRP2313AA +Bourns SRR1260 series SMD inductor http://www.bourns.com/docs/product-datasheets/srp2313aa.pdf +Bourns SRR1260 SMD inductor +0 +4 +2 +Inductor_SMD +L_Bourns_SRP5030T +Inductor, Bourns, SRP5030T, 5.7mmx5.2mm (Script generated with StandardBox.py) (https://www.bourns.com/data/global/pdfs/SRP5030T.pdf) +Inductor Bourns_SRP5030T +0 +2 +2 +Inductor_SMD +L_Bourns_SRP7028A_7.3x6.6mm +Shielded Power Inductors (https://www.bourns.com/docs/product-datasheets/srp7028a.pdf) +Shielded Inductors Bourns SMD SRP7028A +0 +2 +2 +Inductor_SMD +L_Bourns_SRR1210A +Bourns SRR1210A series SMD inductor https://www.bourns.com/docs/Product-Datasheets/SRR1210A.pdf +Bourns SRR1210A SMD inductor +0 +2 +2 +Inductor_SMD +L_Bourns_SRR1260 +Bourns SRR1260 series SMD inductor http://www.bourns.com/docs/Product-Datasheets/SRR1260.pdf +Bourns SRR1260 SMD inductor +0 +2 +2 +Inductor_SMD +L_Coilcraft_LPS4018 +SMD Inductor Coilcraft LPS4018 https://www.coilcraft.com/pdfs/lps4018.pdf +L Coilcraft LPS4018 +0 +2 +2 +Inductor_SMD +L_Coilcraft_LPS5030 +Shielded Power Inductor SMD, Coilcraft LPS5030, https://www.coilcraft.com/pdfs/lps5030.pdf, StepUp generated footprint +inductor +0 +2 +2 +Inductor_SMD +L_Coilcraft_XAL60xx_6.36x6.56mm +Coilcraft XAL60xx series, https://www.coilcraft.com/pdfs/xal60xx.pdf +L Coilcraft XAL60xx +0 +2 +2 +Inductor_SMD +L_Coilcraft_XAL5030 +L_Coilcraft_XAL5030 +L Coilcraft XAL5030 +0 +2 +2 +Inductor_SMD +L_Coilcraft_XxL4020 +L_Coilcraft_XxL4020 https://www.coilcraft.com/pdfs/xfl4020.pdf +L Coilcraft XxL4020 +0 +2 +2 +Inductor_SMD +L_Coilcraft_XxL4030 +L_Coilcraft_XxL4030 https://www.coilcraft.com/pdfs/xfl4030.pdf +L Coilcraft XxL4030 +0 +2 +2 +Inductor_SMD +L_Coilcraft_XxL4040 +L_Coilcraft_XxL4040 https://www.coilcraft.com/pdfs/xal4000.pdf +L Coilcraft XxL4040 +0 +2 +2 +Inductor_SMD +L_CommonModeChoke_Coilcraft_0603USB +Coilcraft 0603USB Series Common Mode Choke, https://www.coilcraft.com/pdfs/0603usb.pdf +surface mount common mode bead +0 +4 +4 +Inductor_SMD +L_CommonModeChoke_Coilcraft_0805USB +Coilcraft 0805USB Series Common Mode Choke, https://www.coilcraft.com/pdfs/0805usb.pdf +surface mount common mode bead +0 +4 +4 +Inductor_SMD +L_CommonModeChoke_Coilcraft_1812CAN +Coilcraft 1812CAN Series Common Mode Choke, https://www.coilcraft.com/pdfs/1812can.pdf +surface mount common mode bead +0 +4 +4 +Inductor_SMD +L_CommonModeChoke_Wuerth_WE-SL5 +WE-SL5 SMT Common Mode Line Filter, https://www.we-online.de/katalog/en/WE-SL5/, https://www.we-online.de/katalog/datasheet/744272471.pdf +SMT Common Mode Line Filter +0 +4 +4 +Inductor_SMD +L_CommonMode_Delevan_4222 +API Delevan, Surface Mount Common Mode Bead, 4222 4222R, http://www.delevan.com/seriesPDFs/4222.pdf +surface mount common mode bead +0 +4 +4 +Inductor_SMD +L_CommonMode_Wuerth_WE-SL2 +http://katalog.we-online.de/en/pbs/WE-SL2?sid=5fbec16187#vs_t1:c1_ct:1 +Wuerth WE-SL2 +0 +4 +4 +Inductor_SMD +L_Fastron_PISN +Choke, Drossel, PISN, SMD, Fastron, +Choke Drossel PISN SMD Fastron +0 +2 +2 +Inductor_SMD +L_Fastron_PISN_Handsoldering +Choke, Drossel, PISN, SMD, Fastron, +Choke Drossel PISN SMD Fastron +0 +2 +2 +Inductor_SMD +L_Fastron_PISR +Choke, Drossel, PISR, Fastron, SMD, +Choke Drossel PISR Fastron SMD +0 +2 +2 +Inductor_SMD +L_Fastron_PISR_Handsoldering +Choke, Drossel, PISR, Fastron, SMD, +Choke Drossel PISR Fastron SMD +0 +2 +2 +Inductor_SMD +L_Murata_DEM35xxC +https://www.murata.com/~/media/webrenewal/products/inductor/chip/tokoproducts/wirewoundferritetypeforpl/m_dem3518c.ashx +Inductor SMD DEM35xxC +0 +2 +2 +Inductor_SMD +L_Murata_LQH2MCNxxxx02_2.0x1.6mm +Inductor, Murata, LQH2MCN_02 series, 1.6x2.0x0.9mm (https://search.murata.co.jp/Ceramy/image/img/P02/JELF243A-0053.pdf) +chip coil inductor Murata LQH2MC +0 +2 +2 +Inductor_SMD +L_Murata_LQH55DN_5.7x5.0mm +Inductor, SMD, 5.7x5.0x4.7mm, https://search.murata.co.jp/Ceramy/image/img/P02/JELF243A-0045.pdf +inductor smd +0 +2 +2 +Inductor_SMD +L_Neosid_Air-Coil_SML_1turn_HDM0131A +Neosid, Air-Coil, SML, 1turn, HDM0131A, +Neosid Air-Coil SML 1turn HDM0131A +0 +2 +2 +Inductor_SMD +L_Neosid_Air-Coil_SML_2turn_HAM0231A +Neosid, Air-Coil, SML, 2turn, HAM0231A, +Neosid Air-Coil SML 2turn HAM0231A +0 +2 +2 +Inductor_SMD +L_Neosid_Air-Coil_SML_2turn_HDM0231A +Neosid, Air-Coil, SML, 2turn, HDM0231A, +Neosid Air-Coil SML 2turn HDM0231A +0 +2 +2 +Inductor_SMD +L_Neosid_Air-Coil_SML_3turn_HAM0331A +Neosid, Air-Coil, SML, 2turn, HAM0331A, +Neosid Air-Coil SML 3turn HAM0331A +0 +2 +2 +Inductor_SMD +L_Neosid_Air-Coil_SML_3turn_HDM0331A +Neosid, Air-Coil, SML, 3turn, HDM0331A, +Neosid Air-Coil SML 3turn HDM0331A +0 +2 +2 +Inductor_SMD +L_Neosid_Air-Coil_SML_4turn_HAM0431A +Neosid, Air-Coil, SML, 4turn, HAM0431A, +Neosid Air-Coil SML 4turn HAM0431A +0 +2 +2 +Inductor_SMD +L_Neosid_Air-Coil_SML_4turn_HDM0431A +Neosid, Air-Coil, SML, 4turn, HDM0431A, +Neosid Air-Coil SML 4turn HDM0431A +0 +2 +2 +Inductor_SMD +L_Neosid_Air-Coil_SML_5turn_HAM0531A +Neosid, Air-Coil, SML, 5turn, HAM0531A, +Neosid Air-Coil SML 5turn HAM0531A +0 +2 +2 +Inductor_SMD +L_Neosid_Air-Coil_SML_5turn_HDM0531A +Neosid, Air-Coil, SML, 5turn, HDM0531A, +Neosid Air-Coil SML 5turn HDM0531A +0 +2 +2 +Inductor_SMD +L_Neosid_Air-Coil_SML_6-10turn_HAM0631A-HAM1031A +Neosid, Air-Coil, SML, 6-10turn, HAM0631A-HAM1031A, +Neosid Air-Coil SML 6-10turn HAM0631A-HAM1031A +0 +2 +2 +Inductor_SMD +L_Neosid_Air-Coil_SML_6-10turn_HDM0431A-HDM1031A +Neosid, Air-Coil, SML, 6-10turn, HDM0431A-HDM1031A, +Neosid Air-Coil SML 6-10turn HDM0431A-HDM1031A +0 +2 +2 +Inductor_SMD +L_Neosid_Air-Coil_SML_6turn_HAM0631A +Neosid, Air-Coil, SML, 6turn, HAM0631A, +Neosid Air-Coil SML 6turn HAM0631A +0 +2 +2 +Inductor_SMD +L_Neosid_MicroCoil_Ms36-L +Neosid, Micro Coil, Inductor, Ms36-L, SMD, Fixed inductor, anti clockwise, https://neosid.de/en/products/inductors/rod-core-chokes/smd-rod-core-chokes/52026/ms-36/7-h?c=94 +Neosid Micro Coil Inductor Ms36-L SMD Fixed inductor anti clockwise +0 +2 +2 +Inductor_SMD +L_Neosid_Ms42 +Neosid, Inductor, SMs42, Fixed inductor, SMD, magneticaly shielded, https://neosid.de/import-data/product-pdf/neoFestind_Ms42.pdf +Neosid Inductor SMs42 Fixed inductor SMD magneticaly shielded +0 +2 +2 +Inductor_SMD +L_Neosid_Ms50 +Neosid, Power Inductor, Ms50, SMD, Fixed inductor, https://neosid.de/import-data/product-pdf/neoFestind_Ms50.pdf +Neosid Power Inductor Ms50 SMD Fixed inductor +0 +2 +2 +Inductor_SMD +L_Neosid_Ms50T +Neosid, Power Inductor, Ms50T, SMD, Fixed inductor, high temperature, https://neosid.de/import-data/product-pdf/neoFestind_Ms50T.pdf +Neosid Power Inductor Ms50T SMD Fixed inductor high temperature +0 +2 +2 +Inductor_SMD +L_Neosid_Ms85 +Neosid, Ms85, Ms85T, SMD Inductor, Fixed inductor, SMD, https://neosid.de/import-data/product-pdf/neoFestind_Ms85.pdf +Neosid Ms85 Ms85T SMD Inductor Fixed inductor SMD +0 +2 +2 +Inductor_SMD +L_Neosid_Ms85T +Neosid, Ms85, Ms85T, SMD Inductor, Fixed inductor, SMD, https://neosid.de/import-data/product-pdf/neoFestind_Ms85T.pdf +Neosid Ms85 Ms85T SMD Inductor Fixed inductor SMD +0 +2 +2 +Inductor_SMD +L_Neosid_Ms95 +Neosid,Inductor,Ms95, Ms95a, Ms95T, Fixed inductor, SMD, https://neosid.de/import-data/product-pdf/neoFestind_Ms95.pdf +NeosidInductorMs95 Ms95a Ms95T Fixed inductor SMD +0 +2 +2 +Inductor_SMD +L_Neosid_Ms95T +Neosid,Inductor,Ms95, Ms95a, Ms95T, Fixed inductor, SMD, https://neosid.de/import-data/product-pdf/neoFestind_Ms95T.pdf +NeosidInductorMs95 Ms95a Ms95T Fixed inductor SMD +0 +2 +2 +Inductor_SMD +L_Neosid_Ms95a +Neosid,Inductor,Ms95, Ms95a, Ms95T, Fixed inductor, SMD, https://neosid.de/import-data/product-pdf/neoFestind_Ms95a.pdf +NeosidInductorMs95 Ms95a Ms95T Fixed inductor SMD +0 +2 +2 +Inductor_SMD +L_Neosid_SM-NE95H +Neosid, Inductor,SM-NE95H, Fixed inductor, SMD, https://neosid.de/import-data/product-pdf/neoFestind_SMNE95H.pdf +Neosid Inductor SM-NE95H Fixed inductor SMD +0 +2 +2 +Inductor_SMD +L_Neosid_SM-NE127 +Neosid, Inductor, SM-NE127, Fixed inductor, SMD, https://neosid.de/import-data/product-pdf/neoFestind_SMNE127.pdf +Neosid Inductor SM-NE127 Fixed inductor SMD +0 +2 +2 +Inductor_SMD +L_Neosid_SM-NE127_HandSoldering +Neosid, Inductor, SM-NE127, Fixed inductor, SMD, https://neosid.de/import-data/product-pdf/neoFestind_SMNE127.pdf +Neosid Inductor SM-NE127 Fixed inductor SMD +0 +2 +2 +Inductor_SMD +L_Neosid_SM-NE150 +Neosid, Inductor, SM-NE150, Fixed inductor, SMD, https://neosid.de/import-data/product-pdf/neoFestind_SMNE150.pdf +Neosid Inductor SM-NE150 Fixed inductor SMD +0 +2 +2 +Inductor_SMD +L_Neosid_SM-PIC0512H +Neosid, Inductor, PIC0512H, Power Inductor, Fixed inductor, SMD, https://neosid.de/import-data/product-pdf/neoFestind_SMPIC0512H.pdf +Neosid Inductor PIC0512H Power Inductor Fixed inductor SMD +0 +2 +2 +Inductor_SMD +L_Neosid_SM-PIC0602H +Neosid, Power Inductor, SM-PIC0602H, Fixed inductor, SMD, https://neosid.de/import-data/product-pdf/neoFestind_SMPIC0602H.pdf +Neosid Power Inductor SM-PIC0602H Fixed inductor SMD +0 +2 +2 +Inductor_SMD +L_Neosid_SM-PIC0612H +Neosid, Power Inductor, SM-PIC0612H, Fixed inductor, SMD, https://neosid.de/import-data/product-pdf/neoFestind_SMPIC0612H.pdf +Neosid Power Inductor SM-PIC0612H Fixed inductor SMD +0 +2 +2 +Inductor_SMD +L_Neosid_SM-PIC1004H +Neosid, Inductor, SM-PIC1004H, Fixed inductor, SMD, https://neosid.de/import-data/product-pdf/neoFestind_SMPIC1004H.pdf +Neosid Inductor SM-PIC1004H Fixed inductor SMD +0 +2 +2 +Inductor_SMD +L_Neosid_SMS-ME3010 +Neosid, Inductor, SMS-ME3010, Fixed inductor, SMD, magnetically shielded, https://neosid.de/import-data/product-pdf/neoFestind_SMSME3010.pdf +Neosid Inductor SMS-ME3010 Fixed inductor SMD magnetically shielded +0 +2 +2 +Inductor_SMD +L_Neosid_SMS-ME3015 +Neosid, Power Inductor, SMS-ME3015, Fixed inductor, SMD, magnetically shielded, https://neosid.de/import-data/product-pdf/neoFestind_SMSME3015.pdf +Neosid Power Inductor SMS-ME3015 Fixed inductor SMD magnetically shielded +0 +2 +2 +Inductor_SMD +L_Neosid_SMs42 +Neosid, Inductor, SMs42, Fixed inductor, SMD, magneticaly shielded, https://neosid.de/import-data/product-pdf/neoFestind_ma_SMs42.pdf +Neosid Inductor SMs42 Fixed inductor SMD magneticaly shielded +0 +2 +2 +Inductor_SMD +L_Neosid_SMs50 +Neosid, Inductor, SMs50, Fixed inductor, SMD, magneticaly shielded, https://neosid.de/import-data/product-pdf/neoFestind_ma_SMs50.pdf +Neosid Inductor SMs50 Fixed inductor SMD magneticaly shielded +0 +2 +2 +Inductor_SMD +L_Neosid_SMs85 +Neosid, Inductor, SMs85, Fixed inductor, SMD, magnetically shielded, https://neosid.de/import-data/product-pdf/neoFestind_ma_SMs85.pdf +Neosid Inductor SMs85 Fixed inductor SMD magnetically shielded +0 +2 +2 +Inductor_SMD +L_Neosid_SMs95_SMs95p +Neosid, Inductor, SMs95, Fixed inductor, SMD, magnetically shielded, https://neosid.de/import-data/product-pdf/neoFestind_SMs95SMs95p.pdf +Neosid Inductor SMs95 Fixed inductor SMD magnetically shielded +0 +2 +2 +Inductor_SMD +L_Pulse_PA4320 +Inductor SMD Pulse PA4320 http://productfinder.pulseeng.com/products/datasheets/P787.pdf +Inductor SMD Pulse PA4320 +0 +2 +2 +Inductor_SMD +L_Sagami_CER1242B +Inductor, Sagami, h=4.5mm, http://www.sagami-elec.co.jp/file/CER1242B-CER1257B-CER1277B.pdf +inductor sagami cer12xxb smd +0 +2 +2 +Inductor_SMD +L_Sagami_CER1257B +Inductor, Sagami, h=6.0mm, http://www.sagami-elec.co.jp/file/CER1242B-CER1257B-CER1277B.pdf +inductor sagami cer12xxb smd +0 +2 +2 +Inductor_SMD +L_Sagami_CER1277B +Inductor, Sagami, h=8.0mm, http://www.sagami-elec.co.jp/file/CER1242B-CER1257B-CER1277B.pdf +inductor sagami cer12xxb smd +0 +2 +2 +Inductor_SMD +L_Sagami_CWR1242C +Sagami power inductor, CWR1242C, H=4.5mm (http://www.sagami-elec.co.jp/file/16Car_SMDCwr.pdf) +inductor sagami cwr12xx smd +0 +4 +2 +Inductor_SMD +L_Sagami_CWR1257C +Sagami power inductor, CWR1242C, H=6.0mm (http://www.sagami-elec.co.jp/file/16Car_SMDCwr.pdf) +inductor sagami cwr12xx smd +0 +4 +2 +Inductor_SMD +L_Sagami_CWR1277C +Sagami power inductor, CWR1242C, H=7.7mm (http://www.sagami-elec.co.jp/file/16Car_SMDCwr.pdf) +inductor sagami cwr12xx smd +0 +4 +2 +Inductor_SMD +L_SigTra_SC3316F +http://www.signaltransformer.com/sites/all/pdf/smd/P080_SC3316F.pdf +Choke +0 +2 +2 +Inductor_SMD +L_Sumida_CDMC6D28_7.25x6.5mm +SMD Power Inductor (http://products.sumida.com/products/pdf/CDMC6D28.pdf) +Inductor Sumida SMD CDMC6D28 +0 +2 +2 +Inductor_SMD +L_Sunlord_MWSA0518_5.4x5.2mm +Inductor, Sunlord, MWSA0518, 5.4mmx5.2mm +inductor Sunlord smd +0 +2 +2 +Inductor_SMD +L_TDK_NLV25_2.5x2.0mm +TDK NLV25, 2.5x2.0x1.8mm, https://product.tdk.com/info/en/catalog/datasheets/inductor_commercial_standard_nlv25-ef_en.pdf +tdk nlv25 nlcv25 nlfv25 +0 +2 +2 +Inductor_SMD +L_TDK_NLV32_3.2x2.5mm +TDK NLV32, 3.2x2.5x2.2mm, https://product.tdk.com/info/en/catalog/datasheets/inductor_commercial_standard_nlv32-ef_en.pdf +tdk nlv32 nlcv32 nlfv32 +0 +2 +2 +Inductor_SMD +L_TDK_SLF6025 +Inductor, TDK, SLF6025, 6.0mmx6.0mm (Script generated with StandardBox.py) (https://product.tdk.com/info/en/document/catalog/smd/inductor_commercial_power_slf6025_en.pdf) +Inductor TDK_SLF6025 +0 +2 +2 +Inductor_SMD +L_TDK_SLF6028 +Inductor, TDK, SLF6028, 6.0mmx6.0mm (Script generated with StandardBox.py) (https://product.tdk.com/info/en/document/catalog/smd/inductor_commercial_power_slf6028_en.pdf) +Inductor TDK_SLF6028 +0 +2 +2 +Inductor_SMD +L_TDK_SLF6045 +Inductor, TDK, SLF6045, 6.0mmx6.0mm (Script generated with StandardBox.py) (https://product.tdk.com/info/en/document/catalog/smd/inductor_commercial_power_slf6045_en.pdf) +Inductor TDK_SLF6045 +0 +2 +2 +Inductor_SMD +L_TDK_SLF7032 +Inductor, TDK, SLF7032, 7.0mmx7.0mm (Script generated with StandardBox.py) (https://product.tdk.com/info/en/document/catalog/smd/inductor_commercial_power_slf7032_en.pdf) +Inductor TDK_SLF7032 +0 +2 +2 +Inductor_SMD +L_TDK_SLF7045 +Inductor, TDK, SLF7045, 7.0mmx7.0mm (Script generated with StandardBox.py) (https://product.tdk.com/info/en/document/catalog/smd/inductor_commercial_power_slf7045_en.pdf) +Inductor TDK_SLF7045 +0 +2 +2 +Inductor_SMD +L_TDK_SLF7055 +Inductor, TDK, SLF7055, 7.0mmx7.0mm (Script generated with StandardBox.py) (https://product.tdk.com/info/en/document/catalog/smd/inductor_commercial_power_slf7055_en.pdf) +Inductor TDK_SLF7055 +0 +2 +2 +Inductor_SMD +L_TDK_SLF10145 +Inductor, TDK, SLF10145, 10.1mmx10.1mm (Script generated with StandardBox.py) (https://product.tdk.com/info/en/catalog/datasheets/inductor_automotive_power_slf10145-h_en.pdf) +Inductor TDK_SLF10145 +0 +2 +2 +Inductor_SMD +L_TDK_SLF10165 +Inductor, TDK, SLF10165, 10.1mmx10.1mm (Script generated with StandardBox.py) (https://product.tdk.com/info/en/catalog/datasheets/inductor_commercial_power_slf10165_en.pdf) +Inductor TDK_SLF10165 +0 +2 +2 +Inductor_SMD +L_TDK_SLF12555 +Inductor, TDK, SLF12555, 12.5mmx12.5mm (Script generated with StandardBox.py) (https://product.tdk.com/info/en/catalog/datasheets/inductor_commercial_power_slf12555_en.pdf) +Inductor SLF12555 +0 +2 +2 +Inductor_SMD +L_TDK_SLF12565 +Inductor, TDK, SLF12565, 12.5mmx12.5mm (Script generated with StandardBox.py) (https://product.tdk.com/info/en/catalog/datasheets/inductor_automotive_power_slf12565-h_en.pdf) +Inductor SLF12565 +0 +2 +2 +Inductor_SMD +L_TDK_SLF12575 +Inductor, TDK, SLF12575, 12.5mmx12.5mm (Script generated with StandardBox.py) (https://product.tdk.com/info/en/catalog/datasheets/inductor_automotive_power_slf12575-h_en.pdf) +Inductor SLF12575 +0 +2 +2 +Inductor_SMD +L_TDK_VLF10040 +Inductor,TDK, TDK-VLP-8040, 8.6mmx8.6mm +inductor TDK VLP smd VLF10040 +0 +2 +2 +Inductor_SMD +L_TDK_VLP8040 +Inductor,TDK, TDK-VLP-8040, 8.6mmx8.6mm +inductor TDK VLP smd VLP8040 +0 +2 +2 +Inductor_SMD +L_Taiyo-Yuden_MD-1616 +Inductor, Taiyo Yuden, MD series, Taiyo-Yuden_MD-1616, 1.6mmx1.6mm +inductor taiyo-yuden md smd +0 +2 +2 +Inductor_SMD +L_Taiyo-Yuden_MD-2020 +Inductor, Taiyo Yuden, MD series, Taiyo-Yuden_MD-2020, 2.0mmx2.0mm +inductor taiyo-yuden md smd +0 +2 +2 +Inductor_SMD +L_Taiyo-Yuden_MD-3030 +Inductor, Taiyo Yuden, MD series, Taiyo-Yuden_MD-3030, 3.0mmx3.0mm +inductor taiyo-yuden md smd +0 +2 +2 +Inductor_SMD +L_Taiyo-Yuden_MD-4040 +Inductor, Taiyo Yuden, MD series, Taiyo-Yuden_MD-4040, 4.0mmx4.0mm +inductor taiyo-yuden md smd +0 +2 +2 +Inductor_SMD +L_Taiyo-Yuden_MD-5050 +Inductor, Taiyo Yuden, MD series, Taiyo-Yuden_MD-5050, 5.0mmx5.0mm +inductor taiyo-yuden md smd +0 +2 +2 +Inductor_SMD +L_Taiyo-Yuden_NR-20xx +Inductor, Taiyo Yuden, NR series, Taiyo-Yuden_NR-20xx, 2.0mmx2.0mm +inductor taiyo-yuden nr smd +0 +2 +2 +Inductor_SMD +L_Taiyo-Yuden_NR-20xx_HandSoldering +Inductor, Taiyo Yuden, NR series, Taiyo-Yuden_NR-20xx, 2.0mmx2.0mm +inductor taiyo-yuden nr smd +0 +2 +2 +Inductor_SMD +L_Taiyo-Yuden_NR-24xx +Inductor, Taiyo Yuden, NR series, Taiyo-Yuden_NR-24xx, 2.4mmx2.4mm +inductor taiyo-yuden nr smd +0 +2 +2 +Inductor_SMD +L_Taiyo-Yuden_NR-24xx_HandSoldering +Inductor, Taiyo Yuden, NR series, Taiyo-Yuden_NR-24xx, 2.4mmx2.4mm +inductor taiyo-yuden nr smd +0 +2 +2 +Inductor_SMD +L_Taiyo-Yuden_NR-30xx +Inductor, Taiyo Yuden, NR series, Taiyo-Yuden_NR-30xx, 3.0mmx3.0mm +inductor taiyo-yuden nr smd +0 +2 +2 +Inductor_SMD +L_Taiyo-Yuden_NR-30xx_HandSoldering +Inductor, Taiyo Yuden, NR series, Taiyo-Yuden_NR-30xx, 3.0mmx3.0mm +inductor taiyo-yuden nr smd +0 +2 +2 +Inductor_SMD +L_Taiyo-Yuden_NR-40xx +Inductor, Taiyo Yuden, NR series, Taiyo-Yuden_NR-40xx, 4.0mmx4.0mm +inductor taiyo-yuden nr smd +0 +2 +2 +Inductor_SMD +L_Taiyo-Yuden_NR-40xx_HandSoldering +Inductor, Taiyo Yuden, NR series, Taiyo-Yuden_NR-40xx, 4.0mmx4.0mm +inductor taiyo-yuden nr smd +0 +2 +2 +Inductor_SMD +L_Taiyo-Yuden_NR-50xx +Inductor, Taiyo Yuden, NR series, Taiyo-Yuden_NR-50xx, 4.9mmx4.9mm +inductor taiyo-yuden nr smd +0 +2 +2 +Inductor_SMD +L_Taiyo-Yuden_NR-50xx_HandSoldering +Inductor, Taiyo Yuden, NR series, Taiyo-Yuden_NR-50xx, 4.9mmx4.9mm +inductor taiyo-yuden nr smd +0 +2 +2 +Inductor_SMD +L_Taiyo-Yuden_NR-60xx +Inductor, Taiyo Yuden, NR series, Taiyo-Yuden_NR-60xx, 6.0mmx6.0mm +inductor taiyo-yuden nr smd +0 +2 +2 +Inductor_SMD +L_Taiyo-Yuden_NR-60xx_HandSoldering +Inductor, Taiyo Yuden, NR series, Taiyo-Yuden_NR-60xx, 6.0mmx6.0mm +inductor taiyo-yuden nr smd +0 +2 +2 +Inductor_SMD +L_Taiyo-Yuden_NR-80xx +Inductor, Taiyo Yuden, NR series, Taiyo-Yuden_NR-80xx, 8.0mmx8.0mm +inductor taiyo-yuden nr smd +0 +2 +2 +Inductor_SMD +L_Taiyo-Yuden_NR-80xx_HandSoldering +Inductor, Taiyo Yuden, NR series, Taiyo-Yuden_NR-80xx, 8.0mmx8.0mm +inductor taiyo-yuden nr smd +0 +2 +2 +Inductor_SMD +L_Taiyo-Yuden_NR-10050_9.8x10.0mm +Inductor, Taiyo Yuden, NR series, Taiyo-Yuden_NR-10050, 9.8mmx10.0mm, https://ds.yuden.co.jp/TYCOMPAS/or/specSheet?pn=NR10050T1R3N +inductor taiyo-yuden nr smd +0 +2 +2 +Inductor_SMD +L_Taiyo-Yuden_NR-10050_9.8x10.0mm_HandSoldering +Inductor, Taiyo Yuden, NR series, Taiyo-Yuden_NR-10050, 9.8mmx10.0mm, https://ds.yuden.co.jp/TYCOMPAS/or/specSheet?pn=NR10050T1R3N +inductor taiyo-yuden nr smd +0 +2 +2 +Inductor_SMD +L_TracoPower_TCK-047_5.2x5.8mm +Inductor, Traco, TCK-047, 5.2x5.8mm, https://www.tracopower.com/products/tck047.pdf +inductor smd traco +0 +2 +2 +Inductor_SMD +L_TracoPower_TCK-141 +Choke, SMD, 4.0x4.0mm 2.1mm height, https://www.tracopower.com/products/tck141.pdf +Choke SMD +0 +2 +2 +Inductor_SMD +L_Vishay_IHLP-1212 +Inductor, Vishay, IHLP series, 3.0mmx3.0mm +inductor vishay ihlp smd +0 +2 +2 +Inductor_SMD +L_Vishay_IHLP-1616 +Inductor, Vishay, IHLP series, 4.1mmx4.1mm +inductor vishay ihlp smd +0 +2 +2 +Inductor_SMD +L_Vishay_IHLP-2020 +Inductor, Vishay, IHLP series, 5.1mmx5.1mm +inductor vishay ihlp smd +0 +2 +2 +Inductor_SMD +L_Vishay_IHLP-2525 +Inductor, Vishay, IHLP series, 6.3mmx6.3mm +inductor vishay ihlp smd +0 +2 +2 +Inductor_SMD +L_Vishay_IHLP-4040 +Inductor, Vishay, IHLP series, 10.2mmx10.2mm +inductor vishay ihlp smd +0 +2 +2 +Inductor_SMD +L_Vishay_IHLP-5050 +Inductor, Vishay, IHLP series, 12.7mmx12.7mm +inductor vishay ihlp smd +0 +2 +2 +Inductor_SMD +L_Vishay_IHLP-6767 +Inductor, Vishay, IHLP series, 17.0mmx17.0mm +inductor vishay ihlp smd +0 +2 +2 +Inductor_SMD +L_Vishay_IHSM-3825 +Inductor, Vishay, Vishay_IHSM-3825, http://www.vishay.com/docs/34018/ihsm3825.pdf, 11.2mmx6.3mm +inductor vishay icsm smd +0 +2 +2 +Inductor_SMD +L_Vishay_IHSM-4825 +Inductor, Vishay, Vishay_IHSM-4825, http://www.vishay.com/docs/34019/ihsm4825.pdf, 13.7mmx6.3mm +inductor vishay icsm smd +0 +2 +2 +Inductor_SMD +L_Vishay_IHSM-5832 +Inductor, Vishay, Vishay_IHSM-5832, http://www.vishay.com/docs/34020/ihsm5832.pdf, 16.3mmx8.1mm +inductor vishay icsm smd +0 +2 +2 +Inductor_SMD +L_Vishay_IHSM-7832 +Inductor, Vishay, Vishay_IHSM-7832, http://www.vishay.com/docs/34021/ihsm7832.pdf, 19.8mmx8.1mm +inductor vishay icsm smd +0 +2 +2 +Inductor_SMD +L_Wuerth_HCI-1030 +Inductor, Wuerth Elektronik, Wuerth_HCI-1030, 10.6mmx10.6mm +inductor Wuerth hci smd +0 +2 +2 +Inductor_SMD +L_Wuerth_HCI-1040 +Inductor, Wuerth Elektronik, Wuerth_HCI-1040, 10.2mmx10.2mm +inductor Wuerth hci smd +0 +2 +2 +Inductor_SMD +L_Wuerth_HCI-1050 +Inductor, Wuerth Elektronik, Wuerth_HCI-1050, 10.2mmx10.2mm +inductor Wuerth hci smd +0 +2 +2 +Inductor_SMD +L_Wuerth_HCI-1335 +Inductor, Wuerth Elektronik, Wuerth_HCI-1335, 12.8mmx12.8mm +inductor Wuerth hci smd +0 +2 +2 +Inductor_SMD +L_Wuerth_HCI-1350 +Inductor, Wuerth Elektronik, Wuerth_HCI-1350, 12.8mmx12.8mm +inductor Wuerth hci smd +0 +2 +2 +Inductor_SMD +L_Wuerth_HCI-1365 +Inductor, Wuerth Elektronik, Wuerth_HCI-1365, 12.8mmx12.8mm +inductor Wuerth hci smd +0 +2 +2 +Inductor_SMD +L_Wuerth_HCI-1890 +Inductor, Wuerth Elektronik, Wuerth_HCI-1890, 18.2mmx18.2mm +inductor Wuerth hci smd +0 +2 +2 +Inductor_SMD +L_Wuerth_HCI-2212 +Inductor, Wuerth Elektronik, Wuerth_HCI-2212, 22.5mmx22.0mm +inductor Wuerth hci smd +0 +2 +2 +Inductor_SMD +L_Wuerth_HCI-5040 +Inductor, Wuerth Elektronik, Wuerth_HCI-5040, 5.5mmx5.2mm +inductor Wuerth hci smd +0 +2 +2 +Inductor_SMD +L_Wuerth_HCI-7030 +Inductor, Wuerth Elektronik, Wuerth_HCI-7030, 6.9mmx6.9mm +inductor Wuerth hci smd +0 +2 +2 +Inductor_SMD +L_Wuerth_HCI-7040 +Inductor, Wuerth Elektronik, Wuerth_HCI-7040, 6.9mmx6.9mm +inductor Wuerth hci smd +0 +2 +2 +Inductor_SMD +L_Wuerth_HCI-7050 +Inductor, Wuerth Elektronik, Wuerth_HCI-7050, 6.9mmx6.9mm +inductor Wuerth hci smd +0 +2 +2 +Inductor_SMD +L_Wuerth_HCM-1050 +Inductor, Wuerth Elektronik, Wuerth_HCM-1050, 10.2mmx7.0mm +inductor Wuerth hcm smd +0 +2 +2 +Inductor_SMD +L_Wuerth_HCM-1052 +Inductor, Wuerth Elektronik, Wuerth_HCM-1052, 10.5mmx10.3mm +inductor Wuerth hcm smd +0 +2 +2 +Inductor_SMD +L_Wuerth_HCM-1070 +Inductor, Wuerth Elektronik, Wuerth_HCM-1070, 10.1mmx7.0mm +inductor Wuerth hcm smd +0 +2 +2 +Inductor_SMD +L_Wuerth_HCM-1078 +Inductor, Wuerth Elektronik, Wuerth_HCM-1078, 9.4mmx6.2mm +inductor Wuerth hcm smd +0 +2 +2 +Inductor_SMD +L_Wuerth_HCM-1190 +Inductor, Wuerth Elektronik, Wuerth_HCM-1190, 10.5mmx11.0mm +inductor Wuerth hcm smd +0 +2 +2 +Inductor_SMD +L_Wuerth_HCM-1240 +Inductor, Wuerth Elektronik, Wuerth_HCM-1240, 10.0mmx11.8mm +inductor Wuerth hcm smd +0 +2 +2 +Inductor_SMD +L_Wuerth_HCM-1350 +Inductor, Wuerth Elektronik, Wuerth_HCM-1350, 13.5mmx13.3mm +inductor Wuerth hcm smd +0 +2 +2 +Inductor_SMD +L_Wuerth_HCM-1390 +Inductor, Wuerth Elektronik, Wuerth_HCM-1390, 12.5mmx13.0mm +inductor Wuerth hcm smd +0 +2 +2 +Inductor_SMD +L_Wuerth_HCM-7050 +Inductor, Wuerth Elektronik, Wuerth_HCM-7050, 7.2mmx7.0mm +inductor Wuerth hcm smd +0 +2 +2 +Inductor_SMD +L_Wuerth_HCM-7070 +Inductor, Wuerth Elektronik, Wuerth_HCM-7070, 7.4mmx7.2mm +inductor Wuerth hcm smd +0 +2 +2 +Inductor_SMD +L_Wuerth_MAPI-1610 +Inductor, Wuerth Elektronik, Wuerth_MAPI-1610, 1.6mmx1.6mm +inductor Wuerth smd +0 +2 +2 +Inductor_SMD +L_Wuerth_MAPI-2010 +Inductor, Wuerth Elektronik, Wuerth_MAPI-2010, 2.0mmx1.6mm +inductor Wuerth smd +0 +2 +2 +Inductor_SMD +L_Wuerth_MAPI-2506 +Inductor, Wuerth Elektronik, Wuerth_MAPI-2506, 2.5mmx2.0mm +inductor Wuerth smd +0 +2 +2 +Inductor_SMD +L_Wuerth_MAPI-2508 +Inductor, Wuerth Elektronik, Wuerth_MAPI-2508, 2.5mmx2.0mm +inductor Wuerth smd +0 +2 +2 +Inductor_SMD +L_Wuerth_MAPI-2510 +Inductor, Wuerth Elektronik, Wuerth_MAPI-2510, 2.5mmx2.0mm +inductor Wuerth smd +0 +2 +2 +Inductor_SMD +L_Wuerth_MAPI-2512 +Inductor, Wuerth Elektronik, Wuerth_MAPI-2512, 2.5mmx2.0mm +inductor Wuerth smd +0 +2 +2 +Inductor_SMD +L_Wuerth_MAPI-3010 +Inductor, Wuerth Elektronik, Wuerth_MAPI-3010, 3.0mmx3.0mm +inductor Wuerth smd +0 +2 +2 +Inductor_SMD +L_Wuerth_MAPI-3012 +Inductor, Wuerth Elektronik, Wuerth_MAPI-3012, 3.0mmx3.0mm +inductor Wuerth smd +0 +2 +2 +Inductor_SMD +L_Wuerth_MAPI-3015 +Inductor, Wuerth Elektronik, Wuerth_MAPI-3015, 3.0mmx3.0mm +inductor Wuerth smd +0 +2 +2 +Inductor_SMD +L_Wuerth_MAPI-3020 +Inductor, Wuerth Elektronik, Wuerth_MAPI-3020, 3.0mmx3.0mm +inductor Wuerth smd +0 +2 +2 +Inductor_SMD +L_Wuerth_MAPI-4020 +Inductor, Wuerth Elektronik, Wuerth_MAPI-4020, 4.0mmx4.0mm +inductor Wuerth smd +0 +2 +2 +Inductor_SMD +L_Wuerth_MAPI-4030 +Inductor, Wuerth Elektronik, Wuerth_MAPI-4030, 4.0mmx4.0mm +inductor Wuerth smd +0 +2 +2 +Inductor_SMD +L_Wuerth_WE-DD-Typ-L-Typ-XL-Typ-XXL +Shielded Coupled Inductor, Wuerth Elektronik, WE-DD, SMD, Typ L, Typ XL, Typ XXL, https://katalog.we-online.com/pbs/datasheet/744874001.pdf +Choke Coupled Double Inductor SMD Wuerth WE-DD TypL TypXL TypXXL +0 +4 +4 +Inductor_SMD +L_Wuerth_WE-DD-Typ-M-Typ-S +Shielded Coupled Inductor, Wuerth Elektronik, WE-DD, SMD, Typ M, Typ S, https://katalog.we-online.com/pbs/datasheet/744878001.pdf, https://katalog.we-online.de/pbs/datasheet/744877001.pdf +Choke Coupled Double Inductor SMD Wuerth WE-DD TypM TypS +0 +4 +4 +Inductor_SMD +L_Wuerth_WE-GF-1210 +Unshielded Inductor, Wuerth Elektronik, WE-GF, SMD, 1210, https://www.we-online.de/katalog/datasheet/74476401.pdf +Unshielded Inductor WE-GF 1210 Wuerth +0 +2 +2 +Inductor_SMD +L_Wuerth_WE-PD-Typ-7345 +Shielded Power Inductor, Wuerth Elektronik, WE-PD, SMD, 7345, https://katalog.we-online.com/pbs/datasheet/744777001.pdf +Choke Shielded Power Inductor WE-PD 7345 Wuerth +0 +2 +2 +Inductor_SMD +L_Wuerth_WE-PD-Typ-LS +Shielded Power Inductor, Wuerth Elektronik, WE-PD, SMD, Typ LS, https://katalog.we-online.com/pbs/datasheet/7447715906.pdf +Choke Shielded Power Inductor WE-PD TypLS Wuerth +0 +2 +2 +Inductor_SMD +L_Wuerth_WE-PD-Typ-LS_Handsoldering +Shielded Power Inductor, Wuerth Elektronik, WE-PD, SMD, Typ LS, Handsoldering, https://katalog.we-online.com/pbs/datasheet/7447715906.pdf +Choke Shielded Power Inductor WE-PD TypLS Wuerth +0 +2 +2 +Inductor_SMD +L_Wuerth_WE-PD-Typ-M-Typ-S +Shielded Power Inductor, Wuerth Elektronik, WE-PD, SMT, Typ M, Typ S, https://katalog.we-online.com/pbs/datasheet/744778005.pdf +Choke Shielded Power Inductor WE-PD TypM TypS Wuerth +0 +2 +2 +Inductor_SMD +L_Wuerth_WE-PD-Typ-M-Typ-S_Handsoldering +Shielded Power Inductor, Wuerth Elektronik, WE-PD, SMT, Typ M, Typ S, Handsoldering, https://katalog.we-online.com/pbs/datasheet/744778005.pdf +Choke Shielded Power Inductor WE-PD TypM TypS Wuerth +0 +2 +2 +Inductor_SMD +L_Wuerth_WE-PD2-Typ-L +Power Inductor, Wuerth Elektronik, WE-PD2, SMD, Typ L, , https://katalog.we-online.com/pbs/datasheet/74477510.pdf +Choke Power Inductor WE-PD2 TypL Wuerth +0 +2 +2 +Inductor_SMD +L_Wuerth_WE-PD2-Typ-MS +Power Inductor, Wuerth Elektronik, WE-PD2, SMD, Typ MS, https://katalog.we-online.com/pbs/datasheet/744774022.pdf +Choke Power Inductor WE-PD2 TypMS Wuerth +0 +2 +2 +Inductor_SMD +L_Wuerth_WE-PD2-Typ-XL +Power Inductor, Wuerth Elektronik, WE-PD2, SMT, Typ XL, https://katalog.we-online.com/pbs/datasheet/744776012.pdf +Choke Power Inductor WE-PD2 TypXL Wuerth +0 +2 +2 +Inductor_SMD +L_Wuerth_WE-PD4-Typ-X +Power Inductor, Wuerth Elektronik, WE-PD4, SMT, Typ X, https://katalog.we-online.de/pbs/datasheet/74458001.pdf +Choke Power Inductor WE-PD4 TypX Wuerth +0 +2 +2 +Inductor_SMD +L_Wuerth_WE-PDF +Shielded Power Inductor, Wuerth Elektronik, WE-PDF, SMD, https://katalog.we-online.de/pbs/datasheet/7447797022.pdf +Choke Shielded Power Inductor WE-PDF Wuerth +0 +2 +2 +Inductor_SMD +L_Wuerth_WE-PDF_Handsoldering +Shielded Power Inductor, Wuerth Elektronik, WE-PDF, SMD, Handsoldering, https://katalog.we-online.de/pbs/datasheet/7447797022.pdf +Choke Shielded Power Inductor WE-PDF Wuerth Handsoldering +0 +2 +2 +Inductor_SMD +L_Wuerth_WE-TPC-3816 +L_Wuerth_WE-TPC-3816 StepUp generated footprint, http://katalog.we-online.de/pbs/datasheet/7440310047.pdf +wurth wuerth smd inductor +0 +2 +2 +Inductor_THT +Choke_EPCOS_B82722A +Current-Compensated Ring Core Double Chokes, EPCOS, B82722A, 22.3mmx22.7mm, https://en.tdk.eu/inf/30/db/ind_2008/b82722a_j.pdf +chokes epcos tht +0 +4 +4 +Inductor_THT +Choke_Schaffner_RN102-04-14.0x14.0mm +Current-compensated Chokes, Schaffner, RN102-04, 14.0mmx14.0mm https://www.schaffner.com/products/download/product/datasheet/rn-series-common-mode-chokes-new/ +chokes schaffner tht +0 +4 +4 +Inductor_THT +Choke_Schaffner_RN112-04-17.7x17.1mm +Current-compensated Chokes, Schaffner, RN112-04, 17.7mmx17.1mm https://www.schaffner.com/products/download/product/datasheet/rn-series-common-mode-chokes-new/ +chokes schaffner tht +0 +4 +4 +Inductor_THT +Choke_Schaffner_RN114-04-22.5x21.5mm +Current-compensated Chokes, Schaffner, RN114-04, 22.5mmx21.5mm https://www.schaffner.com/products/download/product/datasheet/rn-series-common-mode-chokes-new/ +chokes schaffner tht +0 +4 +4 +Inductor_THT +Choke_Schaffner_RN116-04-22.5x21.5mm +Current-compensated Chokes, Schaffner, RN116-04, 22.5mmx21.5mm https://www.schaffner.com/products/download/product/datasheet/rn-series-common-mode-chokes-new/ +chokes schaffner tht +0 +4 +4 +Inductor_THT +Choke_Schaffner_RN122-04-28.0x27.0mm +Current-compensated Chokes, Schaffner, RN122-04, 28.0mmx27.0mm https://www.schaffner.com/products/download/product/datasheet/rn-series-common-mode-chokes-new/ +chokes schaffner tht +0 +4 +4 +Inductor_THT +Choke_Schaffner_RN142-04-33.1x32.5mm +Current-compensated Chokes, Schaffner, RN142-04, 33.1mmx32.5mm https://www.schaffner.com/products/download/product/datasheet/rn-series-common-mode-chokes-new/ +chokes schaffner tht +0 +4 +4 +Inductor_THT +Choke_Schaffner_RN143-04-33.1x32.5mm +Current-compensated Chokes, Schaffner, RN143-04, 33.1mmx32.5mm https://www.schaffner.com/products/download/product/datasheet/rn-series-common-mode-chokes-new/ +chokes schaffner tht +0 +4 +4 +Inductor_THT +Choke_Schaffner_RN152-04-43.0x41.8mm +Current-compensated Chokes, Schaffner, RN152-04, 43.0mmx41.8mm https://www.schaffner.com/products/download/product/datasheet/rn-series-common-mode-chokes-new/ +chokes schaffner tht +0 +4 +4 +Inductor_THT +Choke_Schaffner_RN202-04-8.8x18.2mm +Current-compensated Chokes, Schaffner, RN202-04, 8.8mmx18.2mm https://www.schaffner.com/products/download/product/datasheet/rn-series-common-mode-chokes-new/ +chokes schaffner tht +0 +4 +4 +Inductor_THT +Choke_Schaffner_RN204-04-9.0x14.0mm +Current-compensated Chokes, Schaffner, RN204-04, 9.0mmx14.0mm https://www.schaffner.com/products/download/product/datasheet/rn-series-common-mode-chokes-new/ +chokes schaffner tht +0 +4 +4 +Inductor_THT +Choke_Schaffner_RN212-04-12.5x18.0mm +Current-compensated Chokes, Schaffner, RN212-04, 12.5mmx18.0mm https://www.schaffner.com/products/download/product/datasheet/rn-series-common-mode-chokes-new/ +chokes schaffner tht +0 +4 +4 +Inductor_THT +Choke_Schaffner_RN214-04-15.5x23.0mm +Current-compensated Chokes, Schaffner, RN214-04, 15.5mmx23.0mm https://www.schaffner.com/products/download/product/datasheet/rn-series-common-mode-chokes-new/ +chokes schaffner tht +0 +4 +4 +Inductor_THT +Choke_Schaffner_RN216-04-15.5x23.0mm +Current-compensated Chokes, Schaffner, RN216-04, 15.5mmx23.0mm https://www.schaffner.com/products/download/product/datasheet/rn-series-common-mode-chokes-new/ +chokes schaffner tht +0 +4 +4 +Inductor_THT +Choke_Schaffner_RN218-04-12.5x18.0mm +Current-compensated Chokes, Schaffner, RN218-04, 12.5mmx18.0mm https://www.schaffner.com/products/download/product/datasheet/rn-series-common-mode-chokes-new/ +chokes schaffner tht +0 +4 +4 +Inductor_THT +Choke_Schaffner_RN222-04-18.0x31.0mm +Current-compensated Chokes, Schaffner, RN222-04, 18.0mmx31.0mm https://www.schaffner.com/products/download/product/datasheet/rn-series-common-mode-chokes-new/ +chokes schaffner tht +0 +4 +4 +Inductor_THT +Choke_Schaffner_RN232-04-18.0x31.0mm +Current-compensated Chokes, Schaffner, RN232-04, 18.0mmx31.0mm https://www.schaffner.com/products/download/product/datasheet/rn-series-common-mode-chokes-new/ +chokes schaffner tht +0 +4 +4 +Inductor_THT +Choke_Schaffner_RN242-04-18.0x31.0mm +Current-compensated Chokes, Schaffner, RN242-04, 18.0mmx31.0mm https://www.schaffner.com/products/download/product/datasheet/rn-series-common-mode-chokes-new/ +chokes schaffner tht +0 +4 +4 +Inductor_THT +L_Axial_L5.0mm_D3.6mm_P10.00mm_Horizontal_Murata_BL01RN1A2A2 +Inductor, Murata BL01RN1A2A2, Axial, Horizontal, pin pitch=10.00mm, length*diameter=5*3.6mm, https://www.murata.com/en-global/products/productdetail?partno=BL01RN1A2A2%23 +inductor axial horizontal +0 +2 +2 +Inductor_THT +L_Axial_L5.3mm_D2.2mm_P2.54mm_Vertical_Vishay_IM-1 +Inductor, Axial series, Axial, Vertical, pin pitch=2.54mm, , length*diameter=5.3*2.2mm^2, Vishay, IM-1, http://www.vishay.com/docs/34030/im.pdf +Inductor Axial series Axial Vertical pin pitch 2.54mm length 5.3mm diameter 2.2mm Vishay IM-1 +0 +2 +2 +Inductor_THT +L_Axial_L5.3mm_D2.2mm_P7.62mm_Horizontal_Vishay_IM-1 +Inductor, Axial series, Axial, Horizontal, pin pitch=7.62mm, , length*diameter=5.3*2.2mm^2, Vishay, IM-1, http://www.vishay.com/docs/34030/im.pdf +Inductor Axial series Axial Horizontal pin pitch 7.62mm length 5.3mm diameter 2.2mm Vishay IM-1 +0 +2 +2 +Inductor_THT +L_Axial_L5.3mm_D2.2mm_P10.16mm_Horizontal_Vishay_IM-1 +Inductor, Axial series, Axial, Horizontal, pin pitch=10.16mm, , length*diameter=5.3*2.2mm^2, Vishay, IM-1, http://www.vishay.com/docs/34030/im.pdf +Inductor Axial series Axial Horizontal pin pitch 10.16mm length 5.3mm diameter 2.2mm Vishay IM-1 +0 +2 +2 +Inductor_THT +L_Axial_L6.6mm_D2.7mm_P2.54mm_Vertical_Vishay_IM-2 +Inductor, Axial series, Axial, Vertical, pin pitch=2.54mm, , length*diameter=6.6*2.7mm^2, Vishay, IM-2, http://www.vishay.com/docs/34030/im.pdf +Inductor Axial series Axial Vertical pin pitch 2.54mm length 6.6mm diameter 2.7mm Vishay IM-2 +0 +2 +2 +Inductor_THT +L_Axial_L6.6mm_D2.7mm_P10.16mm_Horizontal_Vishay_IM-2 +Inductor, Axial series, Axial, Horizontal, pin pitch=10.16mm, , length*diameter=6.6*2.7mm^2, Vishay, IM-2, http://www.vishay.com/docs/34030/im.pdf +Inductor Axial series Axial Horizontal pin pitch 10.16mm length 6.6mm diameter 2.7mm Vishay IM-2 +0 +2 +2 +Inductor_THT +L_Axial_L7.0mm_D3.3mm_P2.54mm_Vertical_Fastron_MICC +Inductor, Axial series, Axial, Vertical, pin pitch=2.54mm, , length*diameter=7*3.3mm^2, Fastron, MICC, http://www.fastrongroup.com/image-show/70/MICC.pdf?type=Complete-DataSheet&productType=series +Inductor Axial series Axial Vertical pin pitch 2.54mm length 7mm diameter 3.3mm Fastron MICC +0 +2 +2 +Inductor_THT +L_Axial_L7.0mm_D3.3mm_P5.08mm_Vertical_Fastron_MICC +Inductor, Axial series, Axial, Vertical, pin pitch=5.08mm, , length*diameter=7*3.3mm^2, Fastron, MICC, http://www.fastrongroup.com/image-show/70/MICC.pdf?type=Complete-DataSheet&productType=series +Inductor Axial series Axial Vertical pin pitch 5.08mm length 7mm diameter 3.3mm Fastron MICC +0 +2 +2 +Inductor_THT +L_Axial_L7.0mm_D3.3mm_P10.16mm_Horizontal_Fastron_MICC +Inductor, Axial series, Axial, Horizontal, pin pitch=10.16mm, , length*diameter=7*3.3mm^2, Fastron, MICC, http://www.fastrongroup.com/image-show/70/MICC.pdf?type=Complete-DataSheet&productType=series +Inductor Axial series Axial Horizontal pin pitch 10.16mm length 7mm diameter 3.3mm Fastron MICC +0 +2 +2 +Inductor_THT +L_Axial_L7.0mm_D3.3mm_P12.70mm_Horizontal_Fastron_MICC +Inductor, Axial series, Axial, Horizontal, pin pitch=12.7mm, , length*diameter=7*3.3mm^2, Fastron, MICC, http://www.fastrongroup.com/image-show/70/MICC.pdf?type=Complete-DataSheet&productType=series +Inductor Axial series Axial Horizontal pin pitch 12.7mm length 7mm diameter 3.3mm Fastron MICC +0 +2 +2 +Inductor_THT +L_Axial_L9.5mm_D4.0mm_P2.54mm_Vertical_Fastron_SMCC +Inductor, Axial series, Axial, Vertical, pin pitch=2.54mm, , length*diameter=9.5*4mm^2, Fastron, SMCC, http://cdn-reichelt.de/documents/datenblatt/B400/DS_SMCC_NEU.pdf, http://cdn-reichelt.de/documents/datenblatt/B400/LEADEDINDUCTORS.pdf +Inductor Axial series Axial Vertical pin pitch 2.54mm length 9.5mm diameter 4mm Fastron SMCC +0 +2 +2 +Inductor_THT +L_Axial_L9.5mm_D4.0mm_P5.08mm_Vertical_Fastron_SMCC +Inductor, Axial series, Axial, Vertical, pin pitch=5.08mm, , length*diameter=9.5*4mm^2, Fastron, SMCC, http://cdn-reichelt.de/documents/datenblatt/B400/DS_SMCC_NEU.pdf, http://cdn-reichelt.de/documents/datenblatt/B400/LEADEDINDUCTORS.pdf +Inductor Axial series Axial Vertical pin pitch 5.08mm length 9.5mm diameter 4mm Fastron SMCC +0 +2 +2 +Inductor_THT +L_Axial_L9.5mm_D4.0mm_P12.70mm_Horizontal_Fastron_SMCC +Inductor, Axial series, Axial, Horizontal, pin pitch=12.7mm, , length*diameter=9.5*4mm^2, Fastron, SMCC, http://cdn-reichelt.de/documents/datenblatt/B400/DS_SMCC_NEU.pdf, http://cdn-reichelt.de/documents/datenblatt/B400/LEADEDINDUCTORS.pdf +Inductor Axial series Axial Horizontal pin pitch 12.7mm length 9.5mm diameter 4mm Fastron SMCC +0 +2 +2 +Inductor_THT +L_Axial_L9.5mm_D4.0mm_P15.24mm_Horizontal_Fastron_SMCC +Inductor, Axial series, Axial, Horizontal, pin pitch=15.24mm, , length*diameter=9.5*4mm^2, Fastron, SMCC, http://cdn-reichelt.de/documents/datenblatt/B400/DS_SMCC_NEU.pdf, http://cdn-reichelt.de/documents/datenblatt/B400/LEADEDINDUCTORS.pdf +Inductor Axial series Axial Horizontal pin pitch 15.24mm length 9.5mm diameter 4mm Fastron SMCC +0 +2 +2 +Inductor_THT +L_Axial_L11.0mm_D4.5mm_P5.08mm_Vertical_Fastron_MECC +Inductor, Axial series, Axial, Vertical, pin pitch=5.08mm, , length*diameter=11*4.5mm^2, Fastron, MECC, http://www.fastrongroup.com/image-show/21/MECC.pdf?type=Complete-DataSheet&productType=series +Inductor Axial series Axial Vertical pin pitch 5.08mm length 11mm diameter 4.5mm Fastron MECC +0 +2 +2 +Inductor_THT +L_Axial_L11.0mm_D4.5mm_P7.62mm_Vertical_Fastron_MECC +Inductor, Axial series, Axial, Vertical, pin pitch=7.62mm, , length*diameter=11*4.5mm^2, Fastron, MECC, http://www.fastrongroup.com/image-show/21/MECC.pdf?type=Complete-DataSheet&productType=series +Inductor Axial series Axial Vertical pin pitch 7.62mm length 11mm diameter 4.5mm Fastron MECC +0 +2 +2 +Inductor_THT +L_Axial_L11.0mm_D4.5mm_P15.24mm_Horizontal_Fastron_MECC +Inductor, Axial series, Axial, Horizontal, pin pitch=15.24mm, , length*diameter=11*4.5mm^2, Fastron, MECC, http://www.fastrongroup.com/image-show/21/MECC.pdf?type=Complete-DataSheet&productType=series +Inductor Axial series Axial Horizontal pin pitch 15.24mm length 11mm diameter 4.5mm Fastron MECC +0 +2 +2 +Inductor_THT +L_Axial_L12.0mm_D5.0mm_P5.08mm_Vertical_Fastron_MISC +Inductor, Axial series, Axial, Vertical, pin pitch=5.08mm, , length*diameter=12*5mm^2, Fastron, MISC, http://cdn-reichelt.de/documents/datenblatt/B400/DS_MISC.pdf +Inductor Axial series Axial Vertical pin pitch 5.08mm length 12mm diameter 5mm Fastron MISC +0 +2 +2 +Inductor_THT +L_Axial_L12.0mm_D5.0mm_P7.62mm_Vertical_Fastron_MISC +Inductor, Axial series, Axial, Vertical, pin pitch=7.62mm, , length*diameter=12*5mm^2, Fastron, MISC, http://cdn-reichelt.de/documents/datenblatt/B400/DS_MISC.pdf +Inductor Axial series Axial Vertical pin pitch 7.62mm length 12mm diameter 5mm Fastron MISC +0 +2 +2 +Inductor_THT +L_Axial_L12.0mm_D5.0mm_P15.24mm_Horizontal_Fastron_MISC +Inductor, Axial series, Axial, Horizontal, pin pitch=15.24mm, , length*diameter=12*5mm^2, Fastron, MISC, http://cdn-reichelt.de/documents/datenblatt/B400/DS_MISC.pdf +Inductor Axial series Axial Horizontal pin pitch 15.24mm length 12mm diameter 5mm Fastron MISC +0 +2 +2 +Inductor_THT +L_Axial_L12.8mm_D5.8mm_P5.08mm_Vertical_Fastron_HBCC +Inductor, Axial series, Axial, Vertical, pin pitch=5.08mm, , length*diameter=12.8*5.8mm^2, Fastron, HBCC, http://www.fastrongroup.com/image-show/18/HBCC.pdf?type=Complete-DataSheet&productType=series +Inductor Axial series Axial Vertical pin pitch 5.08mm length 12.8mm diameter 5.8mm Fastron HBCC +0 +2 +2 +Inductor_THT +L_Axial_L12.8mm_D5.8mm_P7.62mm_Vertical_Fastron_HBCC +Inductor, Axial series, Axial, Vertical, pin pitch=7.62mm, , length*diameter=12.8*5.8mm^2, Fastron, HBCC, http://www.fastrongroup.com/image-show/18/HBCC.pdf?type=Complete-DataSheet&productType=series +Inductor Axial series Axial Vertical pin pitch 7.62mm length 12.8mm diameter 5.8mm Fastron HBCC +0 +2 +2 +Inductor_THT +L_Axial_L12.8mm_D5.8mm_P20.32mm_Horizontal_Fastron_HBCC +Inductor, Axial series, Axial, Horizontal, pin pitch=20.32mm, , length*diameter=12.8*5.8mm^2, Fastron, HBCC, http://www.fastrongroup.com/image-show/18/HBCC.pdf?type=Complete-DataSheet&productType=series +Inductor Axial series Axial Horizontal pin pitch 20.32mm length 12.8mm diameter 5.8mm Fastron HBCC +0 +2 +2 +Inductor_THT +L_Axial_L12.8mm_D5.8mm_P25.40mm_Horizontal_Fastron_HBCC +Inductor, Axial series, Axial, Horizontal, pin pitch=25.4mm, , length*diameter=12.8*5.8mm^2, Fastron, HBCC, http://www.fastrongroup.com/image-show/18/HBCC.pdf?type=Complete-DataSheet&productType=series +Inductor Axial series Axial Horizontal pin pitch 25.4mm length 12.8mm diameter 5.8mm Fastron HBCC +0 +2 +2 +Inductor_THT +L_Axial_L13.0mm_D4.5mm_P5.08mm_Vertical_Fastron_HCCC +Inductor, Axial series, Axial, Vertical, pin pitch=5.08mm, , length*diameter=13*4.5mm^2, Fastron, HCCC, http://www.fastrongroup.com/image-show/19/HCCC.pdf?type=Complete-DataSheet&productType=series +Inductor Axial series Axial Vertical pin pitch 5.08mm length 13mm diameter 4.5mm Fastron HCCC +0 +2 +2 +Inductor_THT +L_Axial_L13.0mm_D4.5mm_P7.62mm_Vertical_Fastron_HCCC +Inductor, Axial series, Axial, Vertical, pin pitch=7.62mm, , length*diameter=13*4.5mm^2, Fastron, HCCC, http://www.fastrongroup.com/image-show/19/HCCC.pdf?type=Complete-DataSheet&productType=series +Inductor Axial series Axial Vertical pin pitch 7.62mm length 13mm diameter 4.5mm Fastron HCCC +0 +2 +2 +Inductor_THT +L_Axial_L13.0mm_D4.5mm_P15.24mm_Horizontal_Fastron_HCCC +Inductor, Axial series, Axial, Horizontal, pin pitch=15.24mm, , length*diameter=13*4.5mm^2, Fastron, HCCC, http://www.fastrongroup.com/image-show/19/HCCC.pdf?type=Complete-DataSheet&productType=series +Inductor Axial series Axial Horizontal pin pitch 15.24mm length 13mm diameter 4.5mm Fastron HCCC +0 +2 +2 +Inductor_THT +L_Axial_L14.0mm_D4.5mm_P5.08mm_Vertical_Fastron_LACC +Inductor, Axial series, Axial, Vertical, pin pitch=5.08mm, , length*diameter=14*4.5mm^2, Fastron, LACC, http://www.fastrongroup.com/image-show/20/LACC.pdf?type=Complete-DataSheet&productType=series +Inductor Axial series Axial Vertical pin pitch 5.08mm length 14mm diameter 4.5mm Fastron LACC +0 +2 +2 +Inductor_THT +L_Axial_L14.0mm_D4.5mm_P7.62mm_Vertical_Fastron_LACC +Inductor, Axial series, Axial, Vertical, pin pitch=7.62mm, , length*diameter=14*4.5mm^2, Fastron, LACC, http://www.fastrongroup.com/image-show/20/LACC.pdf?type=Complete-DataSheet&productType=series +Inductor Axial series Axial Vertical pin pitch 7.62mm length 14mm diameter 4.5mm Fastron LACC +0 +2 +2 +Inductor_THT +L_Axial_L14.0mm_D4.5mm_P15.24mm_Horizontal_Fastron_LACC +Inductor, Axial series, Axial, Horizontal, pin pitch=15.24mm, , length*diameter=14*4.5mm^2, Fastron, LACC, http://www.fastrongroup.com/image-show/20/LACC.pdf?type=Complete-DataSheet&productType=series +Inductor Axial series Axial Horizontal pin pitch 15.24mm length 14mm diameter 4.5mm Fastron LACC +0 +2 +2 +Inductor_THT +L_Axial_L14.5mm_D5.8mm_P5.08mm_Vertical_Fastron_HBCC +Inductor, Axial series, Axial, Vertical, pin pitch=5.08mm, , length*diameter=14.5*5.8mm^2, Fastron, HBCC, http://www.fastrongroup.com/image-show/18/HBCC.pdf?type=Complete-DataSheet&productType=series +Inductor Axial series Axial Vertical pin pitch 5.08mm length 14.5mm diameter 5.8mm Fastron HBCC +0 +2 +2 +Inductor_THT +L_Axial_L14.5mm_D5.8mm_P7.62mm_Vertical_Fastron_HBCC +Inductor, Axial series, Axial, Vertical, pin pitch=7.62mm, , length*diameter=14.5*5.8mm^2, Fastron, HBCC, http://www.fastrongroup.com/image-show/18/HBCC.pdf?type=Complete-DataSheet&productType=series +Inductor Axial series Axial Vertical pin pitch 7.62mm length 14.5mm diameter 5.8mm Fastron HBCC +0 +2 +2 +Inductor_THT +L_Axial_L14.5mm_D5.8mm_P20.32mm_Horizontal_Fastron_HBCC +Inductor, Axial series, Axial, Horizontal, pin pitch=20.32mm, , length*diameter=14.5*5.8mm^2, Fastron, HBCC, http://www.fastrongroup.com/image-show/18/HBCC.pdf?type=Complete-DataSheet&productType=series +Inductor Axial series Axial Horizontal pin pitch 20.32mm length 14.5mm diameter 5.8mm Fastron HBCC +0 +2 +2 +Inductor_THT +L_Axial_L14.5mm_D5.8mm_P25.40mm_Horizontal_Fastron_HBCC +Inductor, Axial series, Axial, Horizontal, pin pitch=25.4mm, , length*diameter=14.5*5.8mm^2, Fastron, HBCC, http://www.fastrongroup.com/image-show/18/HBCC.pdf?type=Complete-DataSheet&productType=series +Inductor Axial series Axial Horizontal pin pitch 25.4mm length 14.5mm diameter 5.8mm Fastron HBCC +0 +2 +2 +Inductor_THT +L_Axial_L16.0mm_D6.3mm_P5.08mm_Vertical_Fastron_VHBCC +Inductor, Axial series, Axial, Vertical, pin pitch=5.08mm, , length*diameter=16*6.3mm^2, Fastron, VHBCC, http://www.fastrongroup.com/image-show/25/VHBCC.pdf?type=Complete-DataSheet&productType=series +Inductor Axial series Axial Vertical pin pitch 5.08mm length 16mm diameter 6.3mm Fastron VHBCC +0 +2 +2 +Inductor_THT +L_Axial_L16.0mm_D6.3mm_P7.62mm_Vertical_Fastron_VHBCC +Inductor, Axial series, Axial, Vertical, pin pitch=7.62mm, , length*diameter=16*6.3mm^2, Fastron, VHBCC, http://www.fastrongroup.com/image-show/25/VHBCC.pdf?type=Complete-DataSheet&productType=series +Inductor Axial series Axial Vertical pin pitch 7.62mm length 16mm diameter 6.3mm Fastron VHBCC +0 +2 +2 +Inductor_THT +L_Axial_L16.0mm_D6.3mm_P20.32mm_Horizontal_Fastron_VHBCC +Inductor, Axial series, Axial, Horizontal, pin pitch=20.32mm, , length*diameter=16*6.3mm^2, Fastron, VHBCC, http://www.fastrongroup.com/image-show/25/VHBCC.pdf?type=Complete-DataSheet&productType=series +Inductor Axial series Axial Horizontal pin pitch 20.32mm length 16mm diameter 6.3mm Fastron VHBCC +0 +2 +2 +Inductor_THT +L_Axial_L16.0mm_D6.3mm_P25.40mm_Horizontal_Fastron_VHBCC +Inductor, Axial series, Axial, Horizontal, pin pitch=25.4mm, , length*diameter=16*6.3mm^2, Fastron, VHBCC, http://www.fastrongroup.com/image-show/25/VHBCC.pdf?type=Complete-DataSheet&productType=series +Inductor Axial series Axial Horizontal pin pitch 25.4mm length 16mm diameter 6.3mm Fastron VHBCC +0 +2 +2 +Inductor_THT +L_Axial_L16.0mm_D7.5mm_P5.08mm_Vertical_Fastron_XHBCC +Inductor, Axial series, Axial, Vertical, pin pitch=5.08mm, , length*diameter=16*7.5mm^2, Fastron, XHBCC, http://www.fastrongroup.com/image-show/26/XHBCC.pdf?type=Complete-DataSheet&productType=series +Inductor Axial series Axial Vertical pin pitch 5.08mm length 16mm diameter 7.5mm Fastron XHBCC +0 +2 +2 +Inductor_THT +L_Axial_L16.0mm_D7.5mm_P7.62mm_Vertical_Fastron_XHBCC +Inductor, Axial series, Axial, Vertical, pin pitch=7.62mm, , length*diameter=16*7.5mm^2, Fastron, XHBCC, http://www.fastrongroup.com/image-show/26/XHBCC.pdf?type=Complete-DataSheet&productType=series +Inductor Axial series Axial Vertical pin pitch 7.62mm length 16mm diameter 7.5mm Fastron XHBCC +0 +2 +2 +Inductor_THT +L_Axial_L16.0mm_D7.5mm_P20.32mm_Horizontal_Fastron_XHBCC +Inductor, Axial series, Axial, Horizontal, pin pitch=20.32mm, , length*diameter=16*7.5mm^2, Fastron, XHBCC, http://www.fastrongroup.com/image-show/26/XHBCC.pdf?type=Complete-DataSheet&productType=series +Inductor Axial series Axial Horizontal pin pitch 20.32mm length 16mm diameter 7.5mm Fastron XHBCC +0 +2 +2 +Inductor_THT +L_Axial_L16.0mm_D7.5mm_P25.40mm_Horizontal_Fastron_XHBCC +Inductor, Axial series, Axial, Horizontal, pin pitch=25.4mm, , length*diameter=16*7.5mm^2, Fastron, XHBCC, http://www.fastrongroup.com/image-show/26/XHBCC.pdf?type=Complete-DataSheet&productType=series +Inductor Axial series Axial Horizontal pin pitch 25.4mm length 16mm diameter 7.5mm Fastron XHBCC +0 +2 +2 +Inductor_THT +L_Axial_L16.0mm_D9.5mm_P5.08mm_Vertical_Vishay_IM-10-37 +Inductor, Axial series, Axial, Vertical, pin pitch=5.08mm, , length*diameter=16*9.5mm^2, Vishay, IM-10-37, http://www.vishay.com/docs/34030/im10.pdf +Inductor Axial series Axial Vertical pin pitch 5.08mm length 16mm diameter 9.5mm Vishay IM-10-37 +0 +2 +2 +Inductor_THT +L_Axial_L16.0mm_D9.5mm_P20.32mm_Horizontal_Vishay_IM-10-37 +Inductor, Axial series, Axial, Horizontal, pin pitch=20.32mm, , length*diameter=16*9.5mm^2, Vishay, IM-10-37, http://www.vishay.com/docs/34030/im10.pdf +Inductor Axial series Axial Horizontal pin pitch 20.32mm length 16mm diameter 9.5mm Vishay IM-10-37 +0 +2 +2 +Inductor_THT +L_Axial_L17.5mm_D12.0mm_P7.62mm_Vertical_Vishay_IM-10-46 +Inductor, Axial series, Axial, Vertical, pin pitch=7.62mm, , length*diameter=17.5*12mm^2, Vishay, IM-10-46, http://www.vishay.com/docs/34030/im10.pdf +Inductor Axial series Axial Vertical pin pitch 7.62mm length 17.5mm diameter 12mm Vishay IM-10-46 +0 +2 +2 +Inductor_THT +L_Axial_L17.5mm_D12.0mm_P20.32mm_Horizontal_Vishay_IM-10-46 +Inductor, Axial series, Axial, Horizontal, pin pitch=20.32mm, , length*diameter=17.5*12mm^2, Vishay, IM-10-46, http://www.vishay.com/docs/34030/im10.pdf +Inductor Axial series Axial Horizontal pin pitch 20.32mm length 17.5mm diameter 12mm Vishay IM-10-46 +0 +2 +2 +Inductor_THT +L_Axial_L20.0mm_D8.0mm_P5.08mm_Vertical +Inductor, Axial series, Axial, Vertical, pin pitch=5.08mm, , length*diameter=20*8mm^2 +Inductor Axial series Axial Vertical pin pitch 5.08mm length 20mm diameter 8mm +0 +2 +2 +Inductor_THT +L_Axial_L20.0mm_D8.0mm_P7.62mm_Vertical +Inductor, Axial series, Axial, Vertical, pin pitch=7.62mm, , length*diameter=20*8mm^2 +Inductor Axial series Axial Vertical pin pitch 7.62mm length 20mm diameter 8mm +0 +2 +2 +Inductor_THT +L_Axial_L20.0mm_D8.0mm_P25.40mm_Horizontal +Inductor, Axial series, Axial, Horizontal, pin pitch=25.4mm, , length*diameter=20*8mm^2 +Inductor Axial series Axial Horizontal pin pitch 25.4mm length 20mm diameter 8mm +0 +2 +2 +Inductor_THT +L_Axial_L20.3mm_D12.1mm_P7.62mm_Vertical_Vishay_IHA-101 +Inductor, Axial series, Axial, Vertical, pin pitch=7.62mm, , length*diameter=20.32*12.07mm^2, Vishay, IHA-101, http://www.vishay.com/docs/34014/iha.pdf +Inductor Axial series Axial Vertical pin pitch 7.62mm length 20.32mm diameter 12.07mm Vishay IHA-101 +0 +2 +2 +Inductor_THT +L_Axial_L20.3mm_D12.1mm_P28.50mm_Horizontal_Vishay_IHA-101 +Inductor, Axial series, Axial, Horizontal, pin pitch=28.5mm, , length*diameter=20.32*12.07mm^2, Vishay, IHA-101, http://www.vishay.com/docs/34014/iha.pdf +Inductor Axial series Axial Horizontal pin pitch 28.5mm length 20.32mm diameter 12.07mm Vishay IHA-101 +0 +2 +2 +Inductor_THT +L_Axial_L20.3mm_D12.7mm_P7.62mm_Vertical_Vishay_IHA-201 +Inductor, Axial series, Axial, Vertical, pin pitch=7.62mm, , length*diameter=20.32*12.7mm^2, Vishay, IHA-201, http://www.vishay.com/docs/34014/iha.pdf +Inductor Axial series Axial Vertical pin pitch 7.62mm length 20.32mm diameter 12.7mm Vishay IHA-201 +0 +2 +2 +Inductor_THT +L_Axial_L20.3mm_D12.7mm_P25.40mm_Horizontal_Vishay_IHA-201 +Inductor, Axial series, Axial, Horizontal, pin pitch=25.4mm, , length*diameter=20.32*12.7mm^2, Vishay, IHA-201, http://www.vishay.com/docs/34014/iha.pdf +Inductor Axial series Axial Horizontal pin pitch 25.4mm length 20.32mm diameter 12.7mm Vishay IHA-201 +0 +2 +2 +Inductor_THT +L_Axial_L23.4mm_D12.7mm_P7.62mm_Vertical_Vishay_IHA-203 +Inductor, Axial series, Axial, Vertical, pin pitch=7.62mm, , length*diameter=23.37*12.7mm^2, Vishay, IHA-203, http://www.vishay.com/docs/34014/iha.pdf +Inductor Axial series Axial Vertical pin pitch 7.62mm length 23.37mm diameter 12.7mm Vishay IHA-203 +0 +2 +2 +Inductor_THT +L_Axial_L23.4mm_D12.7mm_P32.00mm_Horizontal_Vishay_IHA-203 +Inductor, Axial series, Axial, Horizontal, pin pitch=32mm, , length*diameter=23.37*12.7mm^2, Vishay, IHA-203, http://www.vishay.com/docs/34014/iha.pdf +Inductor Axial series Axial Horizontal pin pitch 32mm length 23.37mm diameter 12.7mm Vishay IHA-203 +0 +2 +2 +Inductor_THT +L_Axial_L24.0mm_D7.1mm_P5.08mm_Vertical_Vishay_IM-10-28 +Inductor, Axial series, Axial, Vertical, pin pitch=5.08mm, , length*diameter=24*7.1mm^2, Vishay, IM-10-28, http://www.vishay.com/docs/34035/im10.pdf +Inductor Axial series Axial Vertical pin pitch 5.08mm length 24mm diameter 7.1mm Vishay IM-10-28 +0 +2 +2 +Inductor_THT +L_Axial_L24.0mm_D7.1mm_P30.48mm_Horizontal_Vishay_IM-10-28 +Inductor, Axial series, Axial, Horizontal, pin pitch=30.48mm, , length*diameter=24*7.1mm^2, Vishay, IM-10-28, http://www.vishay.com/docs/34035/im10.pdf +Inductor Axial series Axial Horizontal pin pitch 30.48mm length 24mm diameter 7.1mm Vishay IM-10-28 +0 +2 +2 +Inductor_THT +L_Axial_L24.0mm_D7.5mm_P5.08mm_Vertical_Fastron_MESC +Inductor, Axial series, Axial, Vertical, pin pitch=5.08mm, , length*diameter=24*7.5mm^2, Fastron, MESC, http://cdn-reichelt.de/documents/datenblatt/B400/DS_MESC.pdf +Inductor Axial series Axial Vertical pin pitch 5.08mm length 24mm diameter 7.5mm Fastron MESC +0 +2 +2 +Inductor_THT +L_Axial_L24.0mm_D7.5mm_P7.62mm_Vertical_Fastron_MESC +Inductor, Axial series, Axial, Vertical, pin pitch=7.62mm, , length*diameter=24*7.5mm^2, Fastron, MESC, http://cdn-reichelt.de/documents/datenblatt/B400/DS_MESC.pdf +Inductor Axial series Axial Vertical pin pitch 7.62mm length 24mm diameter 7.5mm Fastron MESC +0 +2 +2 +Inductor_THT +L_Axial_L24.0mm_D7.5mm_P27.94mm_Horizontal_Fastron_MESC +Inductor, Axial series, Axial, Horizontal, pin pitch=27.94mm, , length*diameter=24*7.5mm^2, Fastron, MESC, http://cdn-reichelt.de/documents/datenblatt/B400/DS_MESC.pdf +Inductor Axial series Axial Horizontal pin pitch 27.94mm length 24mm diameter 7.5mm Fastron MESC +0 +2 +2 +Inductor_THT +L_Axial_L26.0mm_D9.0mm_P5.08mm_Vertical_Fastron_77A +Inductor, Axial series, Axial, Vertical, pin pitch=5.08mm, , length*diameter=26*9mm^2, Fastron, 77A, http://cdn-reichelt.de/documents/datenblatt/B400/DS_77A.pdf +Inductor Axial series Axial Vertical pin pitch 5.08mm length 26mm diameter 9mm Fastron 77A +0 +2 +2 +Inductor_THT +L_Axial_L26.0mm_D9.0mm_P7.62mm_Vertical_Fastron_77A +Inductor, Axial series, Axial, Vertical, pin pitch=7.62mm, , length*diameter=26*9mm^2, Fastron, 77A, http://cdn-reichelt.de/documents/datenblatt/B400/DS_77A.pdf +Inductor Axial series Axial Vertical pin pitch 7.62mm length 26mm diameter 9mm Fastron 77A +0 +2 +2 +Inductor_THT +L_Axial_L26.0mm_D9.0mm_P30.48mm_Horizontal_Fastron_77A +Inductor, Axial series, Axial, Horizontal, pin pitch=30.48mm, , length*diameter=26*9mm^2, Fastron, 77A, http://cdn-reichelt.de/documents/datenblatt/B400/DS_77A.pdf +Inductor Axial series Axial Horizontal pin pitch 30.48mm length 26mm diameter 9mm Fastron 77A +0 +2 +2 +Inductor_THT +L_Axial_L26.0mm_D10.0mm_P5.08mm_Vertical_Fastron_77A +Inductor, Axial series, Axial, Vertical, pin pitch=5.08mm, , length*diameter=26*10mm^2, Fastron, 77A, http://cdn-reichelt.de/documents/datenblatt/B400/DS_77A.pdf +Inductor Axial series Axial Vertical pin pitch 5.08mm length 26mm diameter 10mm Fastron 77A +0 +2 +2 +Inductor_THT +L_Axial_L26.0mm_D10.0mm_P7.62mm_Vertical_Fastron_77A +Inductor, Axial series, Axial, Vertical, pin pitch=7.62mm, , length*diameter=26*10mm^2, Fastron, 77A, http://cdn-reichelt.de/documents/datenblatt/B400/DS_77A.pdf +Inductor Axial series Axial Vertical pin pitch 7.62mm length 26mm diameter 10mm Fastron 77A +0 +2 +2 +Inductor_THT +L_Axial_L26.0mm_D10.0mm_P30.48mm_Horizontal_Fastron_77A +Inductor, Axial series, Axial, Horizontal, pin pitch=30.48mm, , length*diameter=26*10mm^2, Fastron, 77A, http://cdn-reichelt.de/documents/datenblatt/B400/DS_77A.pdf +Inductor Axial series Axial Horizontal pin pitch 30.48mm length 26mm diameter 10mm Fastron 77A +0 +2 +2 +Inductor_THT +L_Axial_L26.0mm_D11.0mm_P5.08mm_Vertical_Fastron_77A +Inductor, Axial series, Axial, Vertical, pin pitch=5.08mm, , length*diameter=26*11mm^2, Fastron, 77A, http://cdn-reichelt.de/documents/datenblatt/B400/DS_77A.pdf +Inductor Axial series Axial Vertical pin pitch 5.08mm length 26mm diameter 11mm Fastron 77A +0 +2 +2 +Inductor_THT +L_Axial_L26.0mm_D11.0mm_P7.62mm_Vertical_Fastron_77A +Inductor, Axial series, Axial, Vertical, pin pitch=7.62mm, , length*diameter=26*11mm^2, Fastron, 77A, http://cdn-reichelt.de/documents/datenblatt/B400/DS_77A.pdf +Inductor Axial series Axial Vertical pin pitch 7.62mm length 26mm diameter 11mm Fastron 77A +0 +2 +2 +Inductor_THT +L_Axial_L26.0mm_D11.0mm_P30.48mm_Horizontal_Fastron_77A +Inductor, Axial series, Axial, Horizontal, pin pitch=30.48mm, , length*diameter=26*11mm^2, Fastron, 77A, http://cdn-reichelt.de/documents/datenblatt/B400/DS_77A.pdf +Inductor Axial series Axial Horizontal pin pitch 30.48mm length 26mm diameter 11mm Fastron 77A +0 +2 +2 +Inductor_THT +L_Axial_L26.7mm_D12.1mm_P7.62mm_Vertical_Vishay_IHA-103 +Inductor, Axial series, Axial, Vertical, pin pitch=7.62mm, , length*diameter=26.67*12.07mm^2, Vishay, IHA-103, http://www.vishay.com/docs/34014/iha.pdf +Inductor Axial series Axial Vertical pin pitch 7.62mm length 26.67mm diameter 12.07mm Vishay IHA-103 +0 +2 +2 +Inductor_THT +L_Axial_L26.7mm_D12.1mm_P35.00mm_Horizontal_Vishay_IHA-103 +Inductor, Axial series, Axial, Horizontal, pin pitch=35mm, , length*diameter=26.67*12.07mm^2, Vishay, IHA-103, http://www.vishay.com/docs/34014/iha.pdf +Inductor Axial series Axial Horizontal pin pitch 35mm length 26.67mm diameter 12.07mm Vishay IHA-103 +0 +2 +2 +Inductor_THT +L_Axial_L26.7mm_D14.0mm_P7.62mm_Vertical_Vishay_IHA-104 +Inductor, Axial series, Axial, Vertical, pin pitch=7.62mm, , length*diameter=26.67*13.97mm^2, Vishay, IHA-104, http://www.vishay.com/docs/34014/iha.pdf +Inductor Axial series Axial Vertical pin pitch 7.62mm length 26.67mm diameter 13.97mm Vishay IHA-104 +0 +2 +2 +Inductor_THT +L_Axial_L26.7mm_D14.0mm_P35.00mm_Horizontal_Vishay_IHA-104 +Inductor, Axial series, Axial, Horizontal, pin pitch=35mm, , length*diameter=26.67*13.97mm^2, Vishay, IHA-104, http://www.vishay.com/docs/34014/iha.pdf +Inductor Axial series Axial Horizontal pin pitch 35mm length 26.67mm diameter 13.97mm Vishay IHA-104 +0 +2 +2 +Inductor_THT +L_Axial_L29.9mm_D14.0mm_P7.62mm_Vertical_Vishay_IHA-105 +Inductor, Axial series, Axial, Vertical, pin pitch=7.62mm, , length*diameter=29.85*13.97mm^2, Vishay, IHA-105, http://www.vishay.com/docs/34014/iha.pdf +Inductor Axial series Axial Vertical pin pitch 7.62mm length 29.85mm diameter 13.97mm Vishay IHA-105 +0 +2 +2 +Inductor_THT +L_Axial_L29.9mm_D14.0mm_P38.00mm_Horizontal_Vishay_IHA-105 +Inductor, Axial series, Axial, Horizontal, pin pitch=38mm, , length*diameter=29.85*13.97mm^2, Vishay, IHA-105, http://www.vishay.com/docs/34014/iha.pdf +Inductor Axial series Axial Horizontal pin pitch 38mm length 29.85mm diameter 13.97mm Vishay IHA-105 +0 +2 +2 +Inductor_THT +L_Axial_L30.0mm_D8.0mm_P5.08mm_Vertical_Fastron_77A +Inductor, Axial series, Axial, Vertical, pin pitch=5.08mm, , length*diameter=30*8mm^2, Fastron, 77A, http://cdn-reichelt.de/documents/datenblatt/B400/DS_77A.pdf +Inductor Axial series Axial Vertical pin pitch 5.08mm length 30mm diameter 8mm Fastron 77A +0 +2 +2 +Inductor_THT +L_Axial_L30.0mm_D8.0mm_P7.62mm_Vertical_Fastron_77A +Inductor, Axial series, Axial, Vertical, pin pitch=7.62mm, , length*diameter=30*8mm^2, Fastron, 77A, http://cdn-reichelt.de/documents/datenblatt/B400/DS_77A.pdf +Inductor Axial series Axial Vertical pin pitch 7.62mm length 30mm diameter 8mm Fastron 77A +0 +2 +2 +Inductor_THT +L_Axial_L30.0mm_D8.0mm_P35.56mm_Horizontal_Fastron_77A +Inductor, Axial series, Axial, Horizontal, pin pitch=35.56mm, , length*diameter=30*8mm^2, Fastron, 77A, http://cdn-reichelt.de/documents/datenblatt/B400/DS_77A.pdf +Inductor Axial series Axial Horizontal pin pitch 35.56mm length 30mm diameter 8mm Fastron 77A +0 +2 +2 +Inductor_THT +L_CommonMode_Toroid_Vertical_L19.3mm_W10.8mm_Px6.35mm_Py15.24mm_Bourns_8100 +L_CommonMode_Toroid, Vertical series, Radial, pin pitch=6.35*15.24mm^2, , length*width=19.304*10.795mm^2, Bourns, 8100, http://datasheet.octopart.com/8120-RC-Bourns-datasheet-10228452.pdf +L_CommonMode_Toroid Vertical series Radial pin pitch 6.35*15.24mm^2 length 19.304mm width 10.795mm Bourns 8100 +0 +4 +4 +Inductor_THT +L_CommonMode_Toroid_Vertical_L21.0mm_W10.0mm_Px5.08mm_Py12.70mm_muRATA_5100 +L_CommonMode_Toroid, Vertical series, Radial, pin pitch=5.08*12.70mm^2, , length*width=21*10mm^2, muRATA, 5100, http://www.murata-ps.com/data/magnetics/kmp_5100.pdf +L_CommonMode_Toroid Vertical series Radial pin pitch 5.08*12.70mm^2 length 21mm width 10mm muRATA 5100 +0 +4 +4 +Inductor_THT +L_CommonMode_Toroid_Vertical_L24.0mm_W16.3mm_Px10.16mm_Py20.32mm_muRATA_5200 +L_CommonMode_Toroid, Vertical series, Radial, pin pitch=10.16*20.32mm^2, , length*width=24*16.3mm^2, muRATA, 5200, http://www.murata-ps.com/data/magnetics/kmp_5200.pdf +L_CommonMode_Toroid Vertical series Radial pin pitch 10.16*20.32mm^2 length 24mm width 16.3mm muRATA 5200 +0 +4 +4 +Inductor_THT +L_CommonMode_Toroid_Vertical_L30.5mm_W15.2mm_Px10.16mm_Py20.32mm_Bourns_8100 +L_CommonMode_Toroid, Vertical series, Radial, pin pitch=10.16*20.32mm^2, , length*width=30.479999999999997*15.239999999999998mm^2, Bourns, 8100, http://datasheet.octopart.com/8120-RC-Bourns-datasheet-10228452.pdf +L_CommonMode_Toroid Vertical series Radial pin pitch 10.16*20.32mm^2 length 30.479999999999997mm width 15.239999999999998mm Bourns 8100 +0 +4 +4 +Inductor_THT +L_CommonMode_Toroid_Vertical_L34.3mm_W20.3mm_Px15.24mm_Py22.86mm_Bourns_8100 +L_CommonMode_Toroid, Vertical series, Radial, pin pitch=15.24*22.86mm^2, , length*width=34.29*20.32mm^2, Bourns, 8100, http://datasheet.octopart.com/8120-RC-Bourns-datasheet-10228452.pdf +L_CommonMode_Toroid Vertical series Radial pin pitch 15.24*22.86mm^2 length 34.29mm width 20.32mm Bourns 8100 +0 +4 +4 +Inductor_THT +L_CommonMode_Toroid_Vertical_L36.8mm_W20.3mm_Px15.24mm_Py22.86mm_Bourns_8100 +L_CommonMode_Toroid, Vertical series, Radial, pin pitch=15.24*22.86mm^2, , length*width=36.83*20.32mm^2, Bourns, 8100, http://datasheet.octopart.com/8120-RC-Bourns-datasheet-10228452.pdf +L_CommonMode_Toroid Vertical series Radial pin pitch 15.24*22.86mm^2 length 36.83mm width 20.32mm Bourns 8100 +0 +4 +4 +Inductor_THT +L_CommonMode_Toroid_Vertical_L38.1mm_W20.3mm_Px15.24mm_Py22.86mm_Bourns_8100 +L_CommonMode_Toroid, Vertical series, Radial, pin pitch=15.24*22.86mm^2, , length*width=38.099999999999994*20.32mm^2, Bourns, 8100, http://datasheet.octopart.com/8120-RC-Bourns-datasheet-10228452.pdf +L_CommonMode_Toroid Vertical series Radial pin pitch 15.24*22.86mm^2 length 38.099999999999994mm width 20.32mm Bourns 8100 +0 +4 +4 +Inductor_THT +L_CommonMode_Toroid_Vertical_L39.4mm_W20.3mm_Px15.24mm_Py22.86mm_Bourns_8100 +L_CommonMode_Toroid, Vertical series, Radial, pin pitch=15.24*22.86mm^2, , length*width=39.37*20.32mm^2, Bourns, 8100, http://datasheet.octopart.com/8120-RC-Bourns-datasheet-10228452.pdf +L_CommonMode_Toroid Vertical series Radial pin pitch 15.24*22.86mm^2 length 39.37mm width 20.32mm Bourns 8100 +0 +4 +4 +Inductor_THT +L_CommonMode_Toroid_Vertical_L41.9mm_W20.3mm_Px15.24mm_Py22.86mm_Bourns_8100 +L_CommonMode_Toroid, Vertical series, Radial, pin pitch=15.24*22.86mm^2, , length*width=41.91*20.32mm^2, Bourns, 8100, http://datasheet.octopart.com/8120-RC-Bourns-datasheet-10228452.pdf +L_CommonMode_Toroid Vertical series Radial pin pitch 15.24*22.86mm^2 length 41.91mm width 20.32mm Bourns 8100 +0 +4 +4 +Inductor_THT +L_CommonMode_Toroid_Vertical_L43.2mm_W22.9mm_Px17.78mm_Py30.48mm_Bourns_8100 +L_CommonMode_Toroid, Vertical series, Radial, pin pitch=17.78*30.48mm^2, , length*width=43.18*22.86mm^2, Bourns, 8100, http://datasheet.octopart.com/8120-RC-Bourns-datasheet-10228452.pdf +L_CommonMode_Toroid Vertical series Radial pin pitch 17.78*30.48mm^2 length 43.18mm width 22.86mm Bourns 8100 +0 +4 +4 +Inductor_THT +L_CommonMode_Wuerth_WE-CMB-L +Wuerth, WE-CMB, Bauform L, +CommonModeChoke Gleichtaktdrossel +0 +4 +4 +Inductor_THT +L_CommonMode_Wuerth_WE-CMB-M +Wuerth, WE-CMB, Bauform M, +CommonModeChoke Gleichtaktdrossel +0 +4 +4 +Inductor_THT +L_CommonMode_Wuerth_WE-CMB-S +Wuerth, WE-CMB, Bauform S, +CommonModeChoke Gleichtaktdrossel +0 +4 +4 +Inductor_THT +L_CommonMode_Wuerth_WE-CMB-XL +Wuerth, WE-CMB, Bauform XL, +CommonModeChoke Gleichtaktdrossel +0 +4 +4 +Inductor_THT +L_CommonMode_Wuerth_WE-CMB-XS +Wuerth, WE-CMB, Bauform XS, +CommonModeChoke Gleichtaktdrossel +0 +4 +4 +Inductor_THT +L_CommonMode_Wuerth_WE-CMB-XXL +Wuerth, WE-CMB, Bauform XXL, +CommonModeChoke Gleichtaktdrossel +0 +4 +4 +Inductor_THT +L_Mount_Lodestone_VTM120 +Lodestone Pacific, 30.48mm diameter vertical toroid mount, 16AWG/1.27mm holes, http://www.lodestonepacific.com/CatKpdf/VTM_Series.pdf +vertical inductor toroid mount +0 +4 +4 +Inductor_THT +L_Mount_Lodestone_VTM160 +Lodestone Pacific, 40.64mm diameter vertical toroid mount, 16AWG/1.27mm holes, http://www.lodestonepacific.com/CatKpdf/VTM_Series.pdf +vertical inductor toroid mount +0 +4 +4 +Inductor_THT +L_Mount_Lodestone_VTM254 +Lodestone Pacific, 64.51mm diameter vertical toroid mount, 16AWG/1.27mm holes, http://www.lodestonepacific.com/CatKpdf/VTM_Series.pdf +vertical inductor toroid mount +0 +4 +4 +Inductor_THT +L_Mount_Lodestone_VTM280 +Lodestone Pacific, 71.12mm diameter vertical toroid mount, 16AWG/1.27mm holes, http://www.lodestonepacific.com/CatKpdf/VTM_Series.pdf +vertical inductor toroid mount +0 +4 +4 +Inductor_THT +L_Mount_Lodestone_VTM950-6 +Lodestone Pacific, vertical toroid mount, 11x19mm, 6 pins, http://www.lodestonepacific.com/CatKpdf/VTM950-6.pdf +vertical inductor toroid mount +0 +6 +6 +Inductor_THT +L_Radial_D6.0mm_P4.00mm +Inductor, Radial series, Radial, pin pitch=4.00mm, , diameter=6.0mm, http://www.abracon.com/Magnetics/radial/AIUR-07.pdf +Inductor Radial series Radial pin pitch 4.00mm diameter 6.0mm +0 +2 +2 +Inductor_THT +L_Radial_D7.0mm_P3.00mm +Inductor, Radial series, Radial, pin pitch=3.00mm, , diameter=7mm, http://www.abracon.com/Magnetics/radial/AIUR-16.pdf +Inductor Radial series Radial pin pitch 3.00mm diameter 7mm +0 +2 +2 +Inductor_THT +L_Radial_D7.2mm_P3.00mm_MuRATA_1700 +Inductor, Radial series, Radial, pin pitch=3.00mm, , diameter=7.2mm, MuRATA, 1700, http://www.murata-ps.com/data/magnetics/kmp_1700.pdf +Inductor Radial series Radial pin pitch 3.00mm diameter 7.2mm MuRATA 1700 +0 +2 +2 +Inductor_THT +L_Radial_D7.5mm_P3.50mm_Fastron_07P +Inductor, Radial series, Radial, pin pitch=3.50mm, , diameter=7.5mm, Fastron, 07P, http://www.fastrongroup.com/image-show/39/07P.pdf?type=Complete-DataSheet&productType=series +Inductor Radial series Radial pin pitch 3.50mm diameter 7.5mm Fastron 07P +0 +2 +2 +Inductor_THT +L_Radial_D7.5mm_P5.00mm_Fastron_07P +Inductor, Radial series, Radial, pin pitch=5.00mm, , diameter=7.5mm, Fastron, 07P, http://www.fastrongroup.com/image-show/39/07P.pdf?type=Complete-DataSheet&productType=series +Inductor Radial series Radial pin pitch 5.00mm diameter 7.5mm Fastron 07P +0 +2 +2 +Inductor_THT +L_Radial_D7.8mm_P5.00mm_Fastron_07HCP +Inductor, Radial series, Radial, pin pitch=5.00mm, , diameter=7.8mm, Fastron, 07HCP, http://www.abracon.com/Magnetics/radial/AISR875.pdf +Inductor Radial series Radial pin pitch 5.00mm diameter 7.8mm Fastron 07HCP +0 +2 +2 +Inductor_THT +L_Radial_D8.7mm_P5.00mm_Fastron_07HCP +Inductor, Radial series, Radial, pin pitch=5.00mm, , diameter=8.7mm, Fastron, 07HCP, http://cdn-reichelt.de/documents/datenblatt/B400/DS_07HCP.pdf +Inductor Radial series Radial pin pitch 5.00mm diameter 8.7mm Fastron 07HCP +0 +2 +2 +Inductor_THT +L_Radial_D9.5mm_P5.00mm_Fastron_07HVP +Inductor, Radial series, Radial, pin pitch=5.00mm, , diameter=9.5mm, Fastron, 07HVP, http://www.fastrongroup.com/image-show/107/07HVP%2007HVP_T.pdf?type=Complete-DataSheet&productType=series +Inductor Radial series Radial pin pitch 5.00mm diameter 9.5mm Fastron 07HVP +0 +2 +2 +Inductor_THT +L_Radial_D10.0mm_P5.00mm_Fastron_07M +Inductor, Radial series, Radial, pin pitch=5.00mm, , diameter=10mm, Fastron, 07M, http://www.fastrongroup.com/image-show/37/07M.pdf?type=Complete-DataSheet&productType=series +Inductor Radial series Radial pin pitch 5.00mm diameter 10mm Fastron 07M +0 +2 +2 +Inductor_THT +L_Radial_D10.0mm_P5.00mm_Fastron_07P +Inductor, Radial series, Radial, pin pitch=5.00mm, , diameter=10mm, Fastron, 07P, http://www.fastrongroup.com/image-show/37/07M.pdf?type=Complete-DataSheet&productType=series +Inductor Radial series Radial pin pitch 5.00mm diameter 10mm Fastron 07P +0 +2 +2 +Inductor_THT +L_Radial_D10.0mm_P5.00mm_Neosid_SD12_style3 +Inductor, Radial series, Radial, pin pitch=5.00mm, , diameter=10.0mm, Neosid, SD12, style3, http://www.neosid.de/produktblaetter/neosid_Festinduktivitaet_Sd12.pdf +Inductor Radial series Radial pin pitch 5.00mm diameter 10.0mm Neosid SD12 style3 +0 +2 +2 +Inductor_THT +L_Radial_D10.0mm_P5.00mm_Neosid_SD12k_style3 +Inductor, Radial series, Radial, pin pitch=5.00mm, , diameter=10.0mm, Neosid, SD12k, style3, http://www.neosid.de/produktblaetter/neosid_Festinduktivitaet_Sd12k.pdf +Inductor Radial series Radial pin pitch 5.00mm diameter 10.0mm Neosid SD12k style3 +0 +2 +2 +Inductor_THT +L_Radial_D10.5mm_P4.00x5.00mm_Murata_1200RS +Inductor, Radial, Pitch=4.00x5.00mm, Diameter=10.5mm, Murata 1200RS, http://www.murata-ps.com/data/magnetics/kmp_1200rs.pdf +Inductor Radial Murata 1200RS +0 +4 +2 +Inductor_THT +L_Radial_D10.5mm_P5.00mm_Abacron_AISR-01 +Inductor, Radial series, Radial, pin pitch=5.00mm, , diameter=10.5mm, Abacron, AISR-01, http://www.abracon.com/Magnetics/radial/AISR-01.pdf +Inductor Radial series Radial pin pitch 5.00mm diameter 10.5mm Abacron AISR-01 +0 +2 +2 +Inductor_THT +L_Radial_D12.0mm_P5.00mm_Fastron_11P +Inductor, Radial series, Radial, pin pitch=5.00mm, , diameter=12.0mm, Fastron, 11P, http://cdn-reichelt.de/documents/datenblatt/B400/DS_11P.pdf +Inductor Radial series Radial pin pitch 5.00mm diameter 12.0mm Fastron 11P +0 +2 +2 +Inductor_THT +L_Radial_D12.0mm_P5.00mm_Neosid_SD12_style2 +Inductor, Radial series, Radial, pin pitch=5.00mm, , diameter=12.0mm, Neosid, SD12, style2, http://www.neosid.de/produktblaetter/neosid_Festinduktivitaet_Sd12.pdf +Inductor Radial series Radial pin pitch 5.00mm diameter 12.0mm Neosid SD12 style2 +0 +2 +2 +Inductor_THT +L_Radial_D12.0mm_P5.00mm_Neosid_SD12k_style2 +Inductor, Radial series, Radial, pin pitch=5.00mm, , diameter=12.0mm, Neosid, SD12k, style2, http://www.neosid.de/produktblaetter/neosid_Festinduktivitaet_Sd12k.pdf +Inductor Radial series Radial pin pitch 5.00mm diameter 12.0mm Neosid SD12k style2 +0 +2 +2 +Inductor_THT +L_Radial_D12.0mm_P6.00mm_MuRATA_1900R +Inductor, Radial series, Radial, pin pitch=6.00mm, , diameter=12.0mm, MuRATA, 1900R, http://www.murata-ps.com/data/magnetics/kmp_1900r.pdf +Inductor Radial series Radial pin pitch 6.00mm diameter 12.0mm MuRATA 1900R +0 +2 +2 +Inductor_THT +L_Radial_D12.0mm_P10.00mm_Neosid_SD12_style1 +Inductor, Radial series, Radial, pin pitch=10.00mm, , diameter=12.0mm, Neosid, SD12, style1, http://www.neosid.de/produktblaetter/neosid_Festinduktivitaet_Sd12.pdf +Inductor Radial series Radial pin pitch 10.00mm diameter 12.0mm Neosid SD12 style1 +0 +2 +2 +Inductor_THT +L_Radial_D12.0mm_P10.00mm_Neosid_SD12k_style1 +Inductor, Radial series, Radial, pin pitch=10.00mm, , diameter=12.0mm, Neosid, SD12k, style1, http://www.neosid.de/produktblaetter/neosid_Festinduktivitaet_Sd12k.pdf +Inductor Radial series Radial pin pitch 10.00mm diameter 12.0mm Neosid SD12k style1 +0 +2 +2 +Inductor_THT +L_Radial_D12.5mm_P7.00mm_Fastron_09HCP +Inductor, Radial series, Radial, pin pitch=7.00mm, , diameter=12.5mm, Fastron, 09HCP, http://cdn-reichelt.de/documents/datenblatt/B400/DS_09HCP.pdf +Inductor Radial series Radial pin pitch 7.00mm diameter 12.5mm Fastron 09HCP +0 +2 +2 +Inductor_THT +L_Radial_D12.5mm_P9.00mm_Fastron_09HCP +Inductor, Radial series, Radial, pin pitch=9.00mm, , diameter=12.5mm, Fastron, 09HCP, http://cdn-reichelt.de/documents/datenblatt/B400/DS_09HCP.pdf +Inductor Radial series Radial pin pitch 9.00mm diameter 12.5mm Fastron 09HCP +0 +2 +2 +Inductor_THT +L_Radial_D13.5mm_P7.00mm_Fastron_09HCP +Inductor, Radial series, Radial, pin pitch=7.00mm, , diameter=13.5mm, Fastron, 09HCP, http://cdn-reichelt.de/documents/datenblatt/B400/DS_09HCP.pdf +Inductor Radial series Radial pin pitch 7.00mm diameter 13.5mm Fastron 09HCP +0 +2 +2 +Inductor_THT +L_Radial_D14.2mm_P10.00mm_Neosid_SD14 +Inductor, Radial series, Radial, pin pitch=10.00mm, , diameter=14.2mm, Neosid, SD14, http://www.neosid.de/produktblaetter/neosid_Festinduktivitaet_Sd14.pdf +Inductor Radial series Radial pin pitch 10.00mm diameter 14.2mm Neosid SD14 +0 +2 +2 +Inductor_THT +L_Radial_D16.8mm_P11.43mm_Vishay_IHB-1 +Inductor, Radial series, Radial, pin pitch=11.43mm, , diameter=16.8mm, Vishay, IHB-1, http://www.vishay.com/docs/34015/ihb.pdf +Inductor Radial series Radial pin pitch 11.43mm diameter 16.8mm Vishay IHB-1 +0 +2 +2 +Inductor_THT +L_Radial_D16.8mm_P12.07mm_Vishay_IHB-1 +Inductor, Radial series, Radial, pin pitch=12.07mm, , diameter=16.8mm, Vishay, IHB-1, http://www.vishay.com/docs/34015/ihb.pdf +Inductor Radial series Radial pin pitch 12.07mm diameter 16.8mm Vishay IHB-1 +0 +2 +2 +Inductor_THT +L_Radial_D16.8mm_P12.70mm_Vishay_IHB-1 +Inductor, Radial series, Radial, pin pitch=12.70mm, , diameter=16.8mm, Vishay, IHB-1, http://www.vishay.com/docs/34015/ihb.pdf +Inductor Radial series Radial pin pitch 12.70mm diameter 16.8mm Vishay IHB-1 +0 +2 +2 +Inductor_THT +L_Radial_D18.0mm_P10.00mm +Inductor, Radial series, Radial, pin pitch=10.00mm, , diameter=18mm, http://www.abracon.com/Magnetics/radial/AIUR-15.pdf +Inductor Radial series Radial pin pitch 10.00mm diameter 18mm +0 +2 +2 +Inductor_THT +L_Radial_D21.0mm_P14.61mm_Vishay_IHB-2 +Inductor, Radial series, Radial, pin pitch=14.61mm, , diameter=21mm, Vishay, IHB-2, http://www.vishay.com/docs/34015/ihb.pdf +Inductor Radial series Radial pin pitch 14.61mm diameter 21mm Vishay IHB-2 +0 +2 +2 +Inductor_THT +L_Radial_D21.0mm_P15.00mm_Vishay_IHB-2 +Inductor, Radial series, Radial, pin pitch=15.00mm, , diameter=21mm, Vishay, IHB-2, http://www.vishay.com/docs/34015/ihb.pdf +Inductor Radial series Radial pin pitch 15.00mm diameter 21mm Vishay IHB-2 +0 +2 +2 +Inductor_THT +L_Radial_D21.0mm_P15.24mm_Vishay_IHB-2 +Inductor, Radial series, Radial, pin pitch=15.24mm, , diameter=21mm, Vishay, IHB-2, http://www.vishay.com/docs/34015/ihb.pdf +Inductor Radial series Radial pin pitch 15.24mm diameter 21mm Vishay IHB-2 +0 +2 +2 +Inductor_THT +L_Radial_D21.0mm_P15.75mm_Vishay_IHB-2 +Inductor, Radial series, Radial, pin pitch=15.75mm, , diameter=21mm, Vishay, IHB-2, http://www.vishay.com/docs/34015/ihb.pdf +Inductor Radial series Radial pin pitch 15.75mm diameter 21mm Vishay IHB-2 +0 +2 +2 +Inductor_THT +L_Radial_D21.0mm_P19.00mm +Inductor, Radial series, Radial, pin pitch=19.00mm, , diameter=21mm, http://www.abracon.com/Magnetics/radial/AIRD02.pdf +Inductor Radial series Radial pin pitch 19.00mm diameter 21mm +0 +2 +2 +Inductor_THT +L_Radial_D24.0mm_P24.00mm +Inductor, Radial series, Radial, pin pitch=24.00mm, , diameter=24mm +Inductor Radial series Radial pin pitch 24.00mm diameter 24mm +0 +2 +2 +Inductor_THT +L_Radial_D24.4mm_P22.90mm_muRATA_1400series +Inductor, Radial series, Radial, pin pitch=22.90mm, , diameter=24.4mm, muRATA, 1400series, http://www.murata-ps.com/data/magnetics/kmp_1400.pdf +Inductor Radial series Radial pin pitch 22.90mm diameter 24.4mm muRATA 1400series +0 +2 +2 +Inductor_THT +L_Radial_D24.4mm_P23.10mm_muRATA_1400series +Inductor, Radial series, Radial, pin pitch=23.10mm, , diameter=24.4mm, muRATA, 1400series, http://www.murata-ps.com/data/magnetics/kmp_1400.pdf +Inductor Radial series Radial pin pitch 23.10mm diameter 24.4mm muRATA 1400series +0 +2 +2 +Inductor_THT +L_Radial_D24.4mm_P23.40mm_muRATA_1400series +Inductor, Radial series, Radial, pin pitch=23.40mm, , diameter=24.4mm, muRATA, 1400series, http://www.murata-ps.com/data/magnetics/kmp_1400.pdf +Inductor Radial series Radial pin pitch 23.40mm diameter 24.4mm muRATA 1400series +0 +2 +2 +Inductor_THT +L_Radial_D24.4mm_P23.70mm_muRATA_1400series +Inductor, Radial series, Radial, pin pitch=23.70mm, , diameter=24.4mm, muRATA, 1400series, http://www.murata-ps.com/data/magnetics/kmp_1400.pdf +Inductor Radial series Radial pin pitch 23.70mm diameter 24.4mm muRATA 1400series +0 +2 +2 +Inductor_THT +L_Radial_D24.4mm_P23.90mm_muRATA_1400series +Inductor, Radial series, Radial, pin pitch=23.90mm, , diameter=24.4mm, muRATA, 1400series, http://www.murata-ps.com/data/magnetics/kmp_1400.pdf +Inductor Radial series Radial pin pitch 23.90mm diameter 24.4mm muRATA 1400series +0 +2 +2 +Inductor_THT +L_Radial_D27.9mm_P18.29mm_Vishay_IHB-3 +Inductor, Radial series, Radial, pin pitch=18.29mm, , diameter=27.9mm, Vishay, IHB-3, http://www.vishay.com/docs/34015/ihb.pdf +Inductor Radial series Radial pin pitch 18.29mm diameter 27.9mm Vishay IHB-3 +0 +2 +2 +Inductor_THT +L_Radial_D27.9mm_P19.05mm_Vishay_IHB-3 +Inductor, Radial series, Radial, pin pitch=19.05mm, , diameter=27.9mm, Vishay, IHB-3, http://www.vishay.com/docs/34015/ihb.pdf +Inductor Radial series Radial pin pitch 19.05mm diameter 27.9mm Vishay IHB-3 +0 +2 +2 +Inductor_THT +L_Radial_D27.9mm_P20.07mm_Vishay_IHB-3 +Inductor, Radial series, Radial, pin pitch=20.07mm, , diameter=27.9mm, Vishay, IHB-3, http://www.vishay.com/docs/34015/ihb.pdf +Inductor Radial series Radial pin pitch 20.07mm diameter 27.9mm Vishay IHB-3 +0 +2 +2 +Inductor_THT +L_Radial_D28.0mm_P29.20mm +Inductor, Radial series, Radial, pin pitch=29.20mm, , diameter=28mm +Inductor Radial series Radial pin pitch 29.20mm diameter 28mm +0 +2 +2 +Inductor_THT +L_Radial_D29.8mm_P28.30mm_muRATA_1400series +Inductor, Radial series, Radial, pin pitch=28.30mm, , diameter=29.8mm, muRATA, 1400series, http://www.murata-ps.com/data/magnetics/kmp_1400.pdf +Inductor Radial series Radial pin pitch 28.30mm diameter 29.8mm muRATA 1400series +0 +2 +2 +Inductor_THT +L_Radial_D29.8mm_P28.50mm_muRATA_1400series +Inductor, Radial series, Radial, pin pitch=28.50mm, , diameter=29.8mm, muRATA, 1400series, http://www.murata-ps.com/data/magnetics/kmp_1400.pdf +Inductor Radial series Radial pin pitch 28.50mm diameter 29.8mm muRATA 1400series +0 +2 +2 +Inductor_THT +L_Radial_D29.8mm_P28.80mm_muRATA_1400series +Inductor, Radial series, Radial, pin pitch=28.80mm, , diameter=29.8mm, muRATA, 1400series, http://www.murata-ps.com/data/magnetics/kmp_1400.pdf +Inductor Radial series Radial pin pitch 28.80mm diameter 29.8mm muRATA 1400series +0 +2 +2 +Inductor_THT +L_Radial_D29.8mm_P29.00mm_muRATA_1400series +Inductor, Radial series, Radial, pin pitch=29.00mm, , diameter=29.8mm, muRATA, 1400series, http://www.murata-ps.com/data/magnetics/kmp_1400.pdf +Inductor Radial series Radial pin pitch 29.00mm diameter 29.8mm muRATA 1400series +0 +2 +2 +Inductor_THT +L_Radial_D29.8mm_P29.30mm_muRATA_1400series +Inductor, Radial series, Radial, pin pitch=29.30mm, , diameter=29.8mm, muRATA, 1400series, http://www.murata-ps.com/data/magnetics/kmp_1400.pdf +Inductor Radial series Radial pin pitch 29.30mm diameter 29.8mm muRATA 1400series +0 +2 +2 +Inductor_THT +L_Radial_D40.6mm_P26.16mm_Vishay_IHB-5 +Inductor, Radial series, Radial, pin pitch=26.16mm, , diameter=40.64mm, Vishay, IHB-5, http://www.vishay.com/docs/34015/ihb.pdf +Inductor Radial series Radial pin pitch 26.16mm diameter 40.64mm Vishay IHB-5 +0 +2 +2 +Inductor_THT +L_Radial_D40.6mm_P27.18mm_Vishay_IHB-4 +Inductor, Radial series, Radial, pin pitch=27.18mm, , diameter=40.64mm, Vishay, IHB-4, http://www.vishay.com/docs/34015/ihb.pdf +Inductor Radial series Radial pin pitch 27.18mm diameter 40.64mm Vishay IHB-4 +0 +2 +2 +Inductor_THT +L_Radial_D40.6mm_P27.94mm_Vishay_IHB-4 +Inductor, Radial series, Radial, pin pitch=27.94mm, , diameter=40.64mm, Vishay, IHB-4, http://www.vishay.com/docs/34015/ihb.pdf +Inductor Radial series Radial pin pitch 27.94mm diameter 40.64mm Vishay IHB-4 +0 +2 +2 +Inductor_THT +L_Radial_D40.6mm_P27.94mm_Vishay_IHB-5 +Inductor, Radial series, Radial, pin pitch=27.94mm, , diameter=40.64mm, Vishay, IHB-5, http://www.vishay.com/docs/34015/ihb.pdf +Inductor Radial series Radial pin pitch 27.94mm diameter 40.64mm Vishay IHB-5 +0 +2 +2 +Inductor_THT +L_Radial_D40.6mm_P28.70mm_Vishay_IHB-5 +Inductor, Radial series, Radial, pin pitch=28.70mm, , diameter=40.64mm, Vishay, IHB-5, http://www.vishay.com/docs/34015/ihb.pdf +Inductor Radial series Radial pin pitch 28.70mm diameter 40.64mm Vishay IHB-5 +0 +2 +2 +Inductor_THT +L_Radial_D50.8mm_P33.27mm_Vishay_IHB-6 +Inductor, Radial series, Radial, pin pitch=33.27mm, , diameter=50.8mm, Vishay, IHB-6, http://www.vishay.com/docs/34015/ihb.pdf +Inductor Radial series Radial pin pitch 33.27mm diameter 50.8mm Vishay IHB-6 +0 +2 +2 +Inductor_THT +L_Radial_D50.8mm_P34.29mm_Vishay_IHB-6 +Inductor, Radial series, Radial, pin pitch=34.29mm, , diameter=50.8mm, Vishay, IHB-6, http://www.vishay.com/docs/34015/ihb.pdf +Inductor Radial series Radial pin pitch 34.29mm diameter 50.8mm Vishay IHB-6 +0 +2 +2 +Inductor_THT +L_Radial_D50.8mm_P35.81mm_Vishay_IHB-6 +Inductor, Radial series, Radial, pin pitch=35.81mm, , diameter=50.8mm, Vishay, IHB-6, http://www.vishay.com/docs/34015/ihb.pdf +Inductor Radial series Radial pin pitch 35.81mm diameter 50.8mm Vishay IHB-6 +0 +2 +2 +Inductor_THT +L_Radial_D50.8mm_P36.32mm_Vishay_IHB-6 +Inductor, Radial series, Radial, pin pitch=36.32mm, , diameter=50.8mm, Vishay, IHB-6, http://www.vishay.com/docs/34015/ihb.pdf +Inductor Radial series Radial pin pitch 36.32mm diameter 50.8mm Vishay IHB-6 +0 +2 +2 +Inductor_THT +L_Radial_D50.8mm_P38.86mm_Vishay_IHB-6 +Inductor, Radial series, Radial, pin pitch=38.86mm, , diameter=50.8mm, Vishay, IHB-6, http://www.vishay.com/docs/34015/ihb.pdf +Inductor Radial series Radial pin pitch 38.86mm diameter 50.8mm Vishay IHB-6 +0 +2 +2 +Inductor_THT +L_Radial_L7.5mm_W4.6mm_P5.00mm_Neosid_SD75 +Inductor, Radial series, Radial, pin pitch=5.00mm, , length*width=7.5*4.6mm^2, Neosid, SD75, http://www.neosid.de/produktblaetter/neosid_Festinduktivitaet_Sd75.pdf +Inductor Radial series Radial pin pitch 5.00mm length 7.5mm width 4.6mm Neosid SD75 +0 +2 +2 +Inductor_THT +L_Radial_L8.0mm_W8.0mm_P5.00mm_Neosid_NE-CPB-07E +Inductor, Radial series, Radial, pin pitch=5.00mm, , length*width=8*8mm^2, Neosid, NE-CPB-07E, http://www.neosid.de/produktblaetter/neosid_Festinduktivitaet_NE_CPB07E.pdf +Inductor Radial series Radial pin pitch 5.00mm length 8mm width 8mm Neosid NE-CPB-07E +0 +2 +2 +Inductor_THT +L_Radial_L8.0mm_W8.0mm_P5.00mm_Neosid_SD8 +Inductor, Radial series, Radial, pin pitch=5.00mm, , length*width=8*8mm^2, Neosid, SD8, http://www.neosid.de/produktblaetter/neosid_Festinduktivitaet_Sd8.pdf +Inductor Radial series Radial pin pitch 5.00mm length 8mm width 8mm Neosid SD8 +0 +2 +2 +Inductor_THT +L_Radial_L9.1mm_W9.1mm_Px6.35mm_Py6.35mm_Pulse_LP-25 +Inductor, Radial series, Radial, pin pitch=6.35*6.35mm^2, , length*width=9.14*9.14mm^2, Pulse, LP-25, http://datasheet.octopart.com/PE-54044NL-Pulse-datasheet-5313493.pdf +Inductor Radial series Radial pin pitch 6.35*6.35mm^2 length 9.14mm width 9.14mm Pulse LP-25 +0 +2 +2 +Inductor_THT +L_Radial_L10.2mm_W10.2mm_Px7.62mm_Py7.62mm_Pulse_LP-30 +Inductor, Radial series, Radial, pin pitch=7.62*7.62mm^2, , length*width=10.16*10.16mm^2, Pulse, LP-30, http://datasheet.octopart.com/PE-54044NL-Pulse-datasheet-5313493.pdf +Inductor Radial series Radial pin pitch 7.62*7.62mm^2 length 10.16mm width 10.16mm Pulse LP-30 +0 +2 +2 +Inductor_THT +L_Radial_L11.5mm_W11.5mm_Px6.00mm_Py6.00mm_Neosid_NE-CPB-11EN_Drill1.3mm +Inductor, Radial series, Radial, pin pitch=6.00*6.00mm^2, , length*width=11.5*11.5mm^2, Neosid, NE-CPB-11EN, Drill1.3mm, http://www.neosid.de/produktblaetter/neosid_Festinduktivitaet_NE_CPB11EN.pdf +Inductor Radial series Radial pin pitch 6.00*6.00mm^2 length 11.5mm width 11.5mm Neosid NE-CPB-11EN Drill1.3mm +0 +2 +2 +Inductor_THT +L_Radial_L11.5mm_W11.5mm_Px6.00mm_Py6.00mm_Neosid_NE-CPB-11EN_Drill1.5mm +Inductor, Radial series, Radial, pin pitch=6.00*6.00mm^2, , length*width=11.5*11.5mm^2, Neosid, NE-CPB-11EN, Drill1.5mm, http://www.neosid.de/produktblaetter/neosid_Festinduktivitaet_NE_CPB11EN.pdf +Inductor Radial series Radial pin pitch 6.00*6.00mm^2 length 11.5mm width 11.5mm Neosid NE-CPB-11EN Drill1.5mm +0 +2 +2 +Inductor_THT +L_Radial_L11.5mm_W11.5mm_Px6.00mm_Py6.00mm_Neosid_NE-CPB-11EN_Drill1.7mm +Inductor, Radial series, Radial, pin pitch=6.00*6.00mm^2, , length*width=11.5*11.5mm^2, Neosid, NE-CPB-11EN, Drill1.7mm, http://www.neosid.de/produktblaetter/neosid_Festinduktivitaet_NE_CPB11EN.pdf +Inductor Radial series Radial pin pitch 6.00*6.00mm^2 length 11.5mm width 11.5mm Neosid NE-CPB-11EN Drill1.7mm +0 +2 +2 +Inductor_THT +L_Radial_L11.5mm_W11.5mm_Px6.00mm_Py6.00mm_Neosid_NE-CPB-11EN_Drill1.8mm +Inductor, Radial series, Radial, pin pitch=6.00*6.00mm^2, , length*width=11.5*11.5mm^2, Neosid, NE-CPB-11EN, Drill1.8mm, http://www.neosid.de/produktblaetter/neosid_Festinduktivitaet_NE_CPB11EN.pdf +Inductor Radial series Radial pin pitch 6.00*6.00mm^2 length 11.5mm width 11.5mm Neosid NE-CPB-11EN Drill1.8mm +0 +2 +2 +Inductor_THT +L_Radial_L12.6mm_W12.6mm_Px9.52mm_Py9.52mm_Pulse_LP-37 +Inductor, Radial series, Radial, pin pitch=9.52*9.52mm^2, , length*width=12.57*12.57mm^2, Pulse, LP-37, http://datasheet.octopart.com/PE-54044NL-Pulse-datasheet-5313493.pdf +Inductor Radial series Radial pin pitch 9.52*9.52mm^2 length 12.57mm width 12.57mm Pulse LP-37 +0 +2 +2 +Inductor_THT +L_Radial_L16.1mm_W16.1mm_Px7.62mm_Py12.70mm_Pulse_LP-44 +Inductor, Radial series, Radial, pin pitch=7.62*12.70mm^2, , length*width=16.13*16.13mm^2, Pulse, LP-44, http://datasheet.octopart.com/PE-54044NL-Pulse-datasheet-5313493.pdf +Inductor Radial series Radial pin pitch 7.62*12.70mm^2 length 16.13mm width 16.13mm Pulse LP-44 +0 +2 +2 +Inductor_THT +L_SELF1408 +Self Ferrite 14 - 08 +SELF +0 +7 +3 +Inductor_THT +L_SELF1418 +Self Ferrite 14 - 18 +SELF +0 +10 +4 +Inductor_THT +L_Toroid_Horizontal_D3.2mm_P6.40mm_Diameter3-5mm_Amidon-T12 +L_Toroid, Horizontal series, Radial, pin pitch=6.40mm, , diameter=3.175mm, Diameter3-5mm, Amidon-T12 +L_Toroid Horizontal series Radial pin pitch 6.40mm diameter 3.175mm Diameter3-5mm Amidon-T12 +0 +2 +2 +Inductor_THT +L_Toroid_Horizontal_D4.1mm_P8.00mm_Diameter4-5mm_Amidon-T16 +L_Toroid, Horizontal series, Radial, pin pitch=8.00mm, , diameter=4.064mm, Diameter4-5mm, Amidon-T16 +L_Toroid Horizontal series Radial pin pitch 8.00mm diameter 4.064mm Diameter4-5mm Amidon-T16 +0 +2 +2 +Inductor_THT +L_Toroid_Horizontal_D5.1mm_P9.00mm_Diameter6-5mm_Amidon-T20 +L_Toroid, Horizontal series, Radial, pin pitch=9.00mm, , diameter=5.08mm, Diameter6-5mm, Amidon-T20 +L_Toroid Horizontal series Radial pin pitch 9.00mm diameter 5.08mm Diameter6-5mm Amidon-T20 +0 +2 +2 +Inductor_THT +L_Toroid_Horizontal_D6.5mm_P10.00mm_Diameter7-5mm_Amidon-T25 +L_Toroid, Horizontal series, Radial, pin pitch=10.00mm, , diameter=6.476999999999999mm, Diameter7-5mm, Amidon-T25 +L_Toroid Horizontal series Radial pin pitch 10.00mm diameter 6.476999999999999mm Diameter7-5mm Amidon-T25 +0 +2 +2 +Inductor_THT +L_Toroid_Horizontal_D7.8mm_P13.00mm_Diameter9-5mm_Amidon-T30 +L_Toroid, Horizontal series, Radial, pin pitch=13.00mm, , diameter=7.7978mm, Diameter9-5mm, Amidon-T30 +L_Toroid Horizontal series Radial pin pitch 13.00mm diameter 7.7978mm Diameter9-5mm Amidon-T30 +0 +2 +2 +Inductor_THT +L_Toroid_Horizontal_D9.5mm_P15.00mm_Diameter10-5mm_Amidon-T37 +L_Toroid, Horizontal series, Radial, pin pitch=15.00mm, , diameter=9.524999999999999mm, Diameter10-5mm, Amidon-T37 +L_Toroid Horizontal series Radial pin pitch 15.00mm diameter 9.524999999999999mm Diameter10-5mm Amidon-T37 +0 +2 +2 +Inductor_THT +L_Toroid_Horizontal_D11.2mm_P17.00mm_Diameter12-5mm_Amidon-T44 +L_Toroid, Horizontal series, Radial, pin pitch=17.00mm, , diameter=11.176mm, Diameter12-5mm, Amidon-T44 +L_Toroid Horizontal series Radial pin pitch 17.00mm diameter 11.176mm Diameter12-5mm Amidon-T44 +0 +2 +2 +Inductor_THT +L_Toroid_Horizontal_D12.7mm_P20.00mm_Diameter14-5mm_Amidon-T50 +L_Toroid, Horizontal series, Radial, pin pitch=20.00mm, , diameter=12.7mm, Diameter14-5mm, Amidon-T50 +L_Toroid Horizontal series Radial pin pitch 20.00mm diameter 12.7mm Diameter14-5mm Amidon-T50 +0 +2 +2 +Inductor_THT +L_Toroid_Horizontal_D16.8mm_P14.70mm_Vishay_TJ3 +L_Toroid, Horizontal series, Radial, pin pitch=14.70mm, , diameter=16.8mm, Vishay, TJ3, http://www.vishay.com/docs/34079/tj.pdf +L_Toroid Horizontal series Radial pin pitch 14.70mm diameter 16.8mm Vishay TJ3 +0 +2 +2 +Inductor_THT +L_Toroid_Horizontal_D16.8mm_P14.70mm_Vishay_TJ3_BigPads +L_Toroid, Horizontal series, Radial, pin pitch=14.70mm, , diameter=16.8mm, Vishay, TJ3, BigPads, http://www.vishay.com/docs/34079/tj.pdf +L_Toroid Horizontal series Radial pin pitch 14.70mm diameter 16.8mm Vishay TJ3 BigPads +0 +2 +2 +Inductor_THT +L_Toroid_Horizontal_D17.3mm_P15.24mm_Bourns_2000 +L_Toroid, Horizontal series, Radial, pin pitch=15.24mm, , diameter=17.3mm, Bourns, 2000, http://www.bourns.com/docs/Product-Datasheets/2000_series.pdf?sfvrsn=5 +L_Toroid Horizontal series Radial pin pitch 15.24mm diameter 17.3mm Bourns 2000 +0 +2 +2 +Inductor_THT +L_Toroid_Horizontal_D21.8mm_P19.10mm_Bourns_2100 +L_Toroid, Horizontal series, Radial, pin pitch=19.10mm, , diameter=21.8mm, Bourns, 2100, http://www.bourns.com/docs/Product-Datasheets/2100_series.pdf?sfvrsn=3 +L_Toroid Horizontal series Radial pin pitch 19.10mm diameter 21.8mm Bourns 2100 +0 +2 +2 +Inductor_THT +L_Toroid_Horizontal_D21.8mm_P19.60mm_Bourns_2100 +L_Toroid, Horizontal series, Radial, pin pitch=19.60mm, , diameter=21.8mm, Bourns, 2100, http://www.bourns.com/docs/Product-Datasheets/2100_series.pdf?sfvrsn=3 +L_Toroid Horizontal series Radial pin pitch 19.60mm diameter 21.8mm Bourns 2100 +0 +2 +2 +Inductor_THT +L_Toroid_Horizontal_D22.4mm_P19.80mm_Vishay_TJ4 +L_Toroid, Horizontal series, Radial, pin pitch=19.80mm, , diameter=22.4mm, Vishay, TJ4, http://www.vishay.com/docs/34079/tj.pdf +L_Toroid Horizontal series Radial pin pitch 19.80mm diameter 22.4mm Vishay TJ4 +0 +2 +2 +Inductor_THT +L_Toroid_Horizontal_D24.1mm_P21.80mm_Bourns_2200 +L_Toroid, Horizontal series, Radial, pin pitch=21.80mm, , diameter=24.1mm, Bourns, 2200, http://www.bourns.com/docs/Product-Datasheets/2100_series.pdf?sfvrsn=3 +L_Toroid Horizontal series Radial pin pitch 21.80mm diameter 24.1mm Bourns 2200 +0 +2 +2 +Inductor_THT +L_Toroid_Horizontal_D24.1mm_P23.10mm_Bourns_2200 +L_Toroid, Horizontal series, Radial, pin pitch=23.10mm, , diameter=24.1mm, Bourns, 2200, http://www.bourns.com/docs/Product-Datasheets/2100_series.pdf?sfvrsn=3 +L_Toroid Horizontal series Radial pin pitch 23.10mm diameter 24.1mm Bourns 2200 +0 +2 +2 +Inductor_THT +L_Toroid_Horizontal_D25.4mm_P22.90mm_Vishay_TJ5 +L_Toroid, Horizontal series, Radial, pin pitch=22.90mm, , diameter=25.4mm, Vishay, TJ5, http://www.vishay.com/docs/34079/tj.pdf +L_Toroid Horizontal series Radial pin pitch 22.90mm diameter 25.4mm Vishay TJ5 +0 +2 +2 +Inductor_THT +L_Toroid_Horizontal_D25.4mm_P22.90mm_Vishay_TJ5_BigPads +L_Toroid, Horizontal series, Radial, pin pitch=22.90mm, , diameter=25.4mm, Vishay, TJ5, BigPads, http://www.vishay.com/docs/34079/tj.pdf +L_Toroid Horizontal series Radial pin pitch 22.90mm diameter 25.4mm Vishay TJ5 BigPads +0 +2 +2 +Inductor_THT +L_Toroid_Horizontal_D26.0mm_P5.08mm +inductor 26mm diameter toroid +SELF INDUCTOR +0 +3 +2 +Inductor_THT +L_Toroid_Horizontal_D28.0mm_P25.10mm_Bourns_2200 +L_Toroid, Horizontal series, Radial, pin pitch=25.10mm, , diameter=28mm, Bourns, 2200, http://www.bourns.com/docs/Product-Datasheets/2100_series.pdf?sfvrsn=3 +L_Toroid Horizontal series Radial pin pitch 25.10mm diameter 28mm Bourns 2200 +0 +2 +2 +Inductor_THT +L_Toroid_Horizontal_D28.0mm_P26.67mm_Bourns_2200 +L_Toroid, Horizontal series, Radial, pin pitch=26.67mm, , diameter=28mm, Bourns, 2200, http://www.bourns.com/docs/Product-Datasheets/2100_series.pdf?sfvrsn=3 +L_Toroid Horizontal series Radial pin pitch 26.67mm diameter 28mm Bourns 2200 +0 +2 +2 +Inductor_THT +L_Toroid_Horizontal_D32.5mm_P28.90mm_Bourns_2300 +L_Toroid, Horizontal series, Radial, pin pitch=28.90mm, , diameter=32.5mm, Bourns, 2300, http://www.bourns.com/docs/Product-Datasheets/2300_series.pdf?sfvrsn=3 +L_Toroid Horizontal series Radial pin pitch 28.90mm diameter 32.5mm Bourns 2300 +0 +2 +2 +Inductor_THT +L_Toroid_Horizontal_D32.5mm_P30.00mm_Bourns_2300 +L_Toroid, Horizontal series, Radial, pin pitch=30.00mm, , diameter=32.5mm, Bourns, 2300, http://www.bourns.com/docs/Product-Datasheets/2300_series.pdf?sfvrsn=3 +L_Toroid Horizontal series Radial pin pitch 30.00mm diameter 32.5mm Bourns 2300 +0 +2 +2 +Inductor_THT +L_Toroid_Horizontal_D35.1mm_P31.00mm_Vishay_TJ6 +L_Toroid, Horizontal series, Radial, pin pitch=31.00mm, , diameter=35.1mm, Vishay, TJ6, http://www.vishay.com/docs/34079/tj.pdf +L_Toroid Horizontal series Radial pin pitch 31.00mm diameter 35.1mm Vishay TJ6 +0 +2 +2 +Inductor_THT +L_Toroid_Horizontal_D40.0mm_P48.26mm +L_Toroid, Horizontal series, Radial, pin pitch=48.26mm, , diameter=40mm +L_Toroid Horizontal series Radial pin pitch 48.26mm diameter 40mm +0 +2 +2 +Inductor_THT +L_Toroid_Horizontal_D41.9mm_P37.60mm_Vishay_TJ7 +L_Toroid, Horizontal series, Radial, pin pitch=37.60mm, , diameter=41.9mm, Vishay, TJ7, http://www.vishay.com/docs/34079/tj.pdf +L_Toroid Horizontal series Radial pin pitch 37.60mm diameter 41.9mm Vishay TJ7 +0 +2 +2 +Inductor_THT +L_Toroid_Horizontal_D49.3mm_P44.60mm_Vishay_TJ8 +L_Toroid, Horizontal series, Radial, pin pitch=44.60mm, , diameter=49.3mm, Vishay, TJ8, http://www.vishay.com/docs/34079/tj.pdf +L_Toroid Horizontal series Radial pin pitch 44.60mm diameter 49.3mm Vishay TJ8 +0 +2 +2 +Inductor_THT +L_Toroid_Horizontal_D69.1mm_P63.20mm_Vishay_TJ9 +L_Toroid, Horizontal series, Radial, pin pitch=63.20mm, , diameter=69.1mm, Vishay, TJ9, http://www.vishay.com/docs/34079/tj.pdf +L_Toroid Horizontal series Radial pin pitch 63.20mm diameter 69.1mm Vishay TJ9 +0 +2 +2 +Inductor_THT +L_Toroid_Vertical_L10.0mm_W5.0mm_P5.08mm +L_Toroid, Vertical series, Radial, pin pitch=5.08mm, , length*width=10*5mm^2 +L_Toroid Vertical series Radial pin pitch 5.08mm length 10mm width 5mm +0 +2 +2 +Inductor_THT +L_Toroid_Vertical_L13.0mm_W6.5mm_P5.60mm +L_Toroid, Vertical series, Radial, pin pitch=5.60mm, , length*width=13*6.5mm^2 +L_Toroid Vertical series Radial pin pitch 5.60mm length 13mm width 6.5mm +0 +2 +2 +Inductor_THT +L_Toroid_Vertical_L14.0mm_W5.6mm_P5.30mm_Bourns_5700 +L_Toroid, Vertical series, Radial, pin pitch=5.30mm, , length*width=14*5.6mm^2, Bourns, 5700, http://www.bourns.com/docs/Product-Datasheets/5700_series.pdf +L_Toroid Vertical series Radial pin pitch 5.30mm length 14mm width 5.6mm Bourns 5700 +0 +2 +2 +Inductor_THT +L_Toroid_Vertical_L14.0mm_W6.3mm_P4.57mm_Pulse_A +L_Toroid, Vertical series, Radial, pin pitch=4.57mm, , length*width=13.97*6.35mm^2, Pulse, A, http://datasheet.octopart.com/PE-92112KNL-Pulse-datasheet-17853305.pdf +L_Toroid Vertical series Radial pin pitch 4.57mm length 13.97mm width 6.35mm Pulse A +0 +2 +2 +Inductor_THT +L_Toroid_Vertical_L14.7mm_W8.6mm_P5.58mm_Pulse_KM-1 +L_Toroid, Vertical series, Radial, pin pitch=5.58mm, , length*width=14.73*8.64mm^2, Pulse, KM-1, http://datasheet.octopart.com/PE-92112KNL-Pulse-datasheet-17853305.pdf +L_Toroid Vertical series Radial pin pitch 5.58mm length 14.73mm width 8.64mm Pulse KM-1 +0 +2 +2 +Inductor_THT +L_Toroid_Vertical_L16.0mm_W8.0mm_P7.62mm +L_Toroid, Vertical series, Radial, pin pitch=7.62mm, , length*width=16*8mm^2 +L_Toroid Vertical series Radial pin pitch 7.62mm length 16mm width 8mm +0 +2 +2 +Inductor_THT +L_Toroid_Vertical_L16.3mm_W7.1mm_P7.11mm_Pulse_H +L_Toroid, Vertical series, Radial, pin pitch=7.11mm, , length*width=16.26*7.11mm^2, Pulse, H, http://datasheet.octopart.com/PE-92112KNL-Pulse-datasheet-17853305.pdf +L_Toroid Vertical series Radial pin pitch 7.11mm length 16.26mm width 7.11mm Pulse H +0 +2 +2 +Inductor_THT +L_Toroid_Vertical_L16.4mm_W7.6mm_P6.60mm_Vishay_TJ3 +L_Toroid, Vertical series, Radial, pin pitch=6.60mm, , length*width=16.4*7.6mm^2, Vishay, TJ3, http://www.vishay.com/docs/34079/tj.pdf +L_Toroid Vertical series Radial pin pitch 6.60mm length 16.4mm width 7.6mm Vishay TJ3 +0 +2 +2 +Inductor_THT +L_Toroid_Vertical_L16.5mm_W11.4mm_P7.62mm_Pulse_KM-2 +L_Toroid, Vertical series, Radial, pin pitch=7.62mm, , length*width=16.51*11.43mm^2, Pulse, KM-2, http://datasheet.octopart.com/PE-92112KNL-Pulse-datasheet-17853305.pdf +L_Toroid Vertical series Radial pin pitch 7.62mm length 16.51mm width 11.43mm Pulse KM-2 +0 +2 +2 +Inductor_THT +L_Toroid_Vertical_L16.8mm_W9.2mm_P7.10mm_Vishay_TJ3 +L_Toroid, Vertical series, Radial, pin pitch=7.10mm, , length*width=16.8*9.2mm^2, Vishay, TJ3, http://www.vishay.com/docs/34079/tj.pdf +L_Toroid Vertical series Radial pin pitch 7.10mm length 16.8mm width 9.2mm Vishay TJ3 +0 +2 +2 +Inductor_THT +L_Toroid_Vertical_L16.8mm_W9.2mm_P7.10mm_Vishay_TJ3_BigPads +L_Toroid, Vertical series, Radial, pin pitch=7.10mm, , length*width=16.8*9.2mm^2, Vishay, TJ3, BigPads, http://www.vishay.com/docs/34079/tj.pdf +L_Toroid Vertical series Radial pin pitch 7.10mm length 16.8mm width 9.2mm Vishay TJ3 BigPads +0 +2 +2 +Inductor_THT +L_Toroid_Vertical_L17.8mm_W8.1mm_P7.62mm_Bourns_5700 +L_Toroid, Vertical series, Radial, pin pitch=7.62mm, , length*width=17.8*8.1mm^2, Bourns, 5700, http://www.bourns.com/docs/Product-Datasheets/5700_series.pdf +L_Toroid Vertical series Radial pin pitch 7.62mm length 17.8mm width 8.1mm Bourns 5700 +0 +2 +2 +Inductor_THT +L_Toroid_Vertical_L17.8mm_W9.7mm_P7.11mm_Pulse_B +L_Toroid, Vertical series, Radial, pin pitch=7.11mm, , length*width=17.78*9.65mm^2, Pulse, B, http://datasheet.octopart.com/PE-92112KNL-Pulse-datasheet-17853305.pdf +L_Toroid Vertical series Radial pin pitch 7.11mm length 17.78mm width 9.65mm Pulse B +0 +2 +2 +Inductor_THT +L_Toroid_Vertical_L19.1mm_W8.1mm_P7.10mm_Bourns_5700 +L_Toroid, Vertical series, Radial, pin pitch=7.10mm, , length*width=19.1*8.1mm^2, Bourns, 5700, http://www.bourns.com/docs/Product-Datasheets/5700_series.pdf +L_Toroid Vertical series Radial pin pitch 7.10mm length 19.1mm width 8.1mm Bourns 5700 +0 +2 +2 +Inductor_THT +L_Toroid_Vertical_L21.6mm_W8.4mm_P8.38mm_Pulse_G +L_Toroid, Vertical series, Radial, pin pitch=8.38mm, , length*width=21.59*8.38mm^2, Pulse, G, http://datasheet.octopart.com/PE-92112KNL-Pulse-datasheet-17853305.pdf +L_Toroid Vertical series Radial pin pitch 8.38mm length 21.59mm width 8.38mm Pulse G +0 +2 +2 +Inductor_THT +L_Toroid_Vertical_L21.6mm_W9.1mm_P8.40mm_Bourns_5700 +L_Toroid, Vertical series, Radial, pin pitch=8.40mm, , length*width=21.6*9.1mm^2, Bourns, 5700, http://www.bourns.com/docs/Product-Datasheets/5700_series.pdf +L_Toroid Vertical series Radial pin pitch 8.40mm length 21.6mm width 9.1mm Bourns 5700 +0 +2 +2 +Inductor_THT +L_Toroid_Vertical_L21.6mm_W9.5mm_P7.11mm_Pulse_C +L_Toroid, Vertical series, Radial, pin pitch=7.11mm, , length*width=21.59*9.53mm^2, Pulse, C, http://datasheet.octopart.com/PE-92112KNL-Pulse-datasheet-17853305.pdf +L_Toroid Vertical series Radial pin pitch 7.11mm length 21.59mm width 9.53mm Pulse C +0 +2 +2 +Inductor_THT +L_Toroid_Vertical_L21.6mm_W11.4mm_P7.62mm_Pulse_KM-3 +L_Toroid, Vertical series, Radial, pin pitch=7.62mm, , length*width=21.59*11.43mm^2, Pulse, KM-3, http://datasheet.octopart.com/PE-92112KNL-Pulse-datasheet-17853305.pdf +L_Toroid Vertical series Radial pin pitch 7.62mm length 21.59mm width 11.43mm Pulse KM-3 +0 +2 +2 +Inductor_THT +L_Toroid_Vertical_L22.4mm_W10.2mm_P7.90mm_Vishay_TJ4 +L_Toroid, Vertical series, Radial, pin pitch=7.90mm, , length*width=22.4*10.2mm^2, Vishay, TJ4, http://www.vishay.com/docs/34079/tj.pdf +L_Toroid Vertical series Radial pin pitch 7.90mm length 22.4mm width 10.2mm Vishay TJ4 +0 +2 +2 +Inductor_THT +L_Toroid_Vertical_L24.6mm_W15.5mm_P11.44mm_Pulse_KM-4 +L_Toroid, Vertical series, Radial, pin pitch=11.44mm, , length*width=24.64*15.5mm^2, Pulse, KM-4, http://datasheet.octopart.com/PE-92112KNL-Pulse-datasheet-17853305.pdf +L_Toroid Vertical series Radial pin pitch 11.44mm length 24.64mm width 15.5mm Pulse KM-4 +0 +2 +2 +Inductor_THT +L_Toroid_Vertical_L25.4mm_W14.7mm_P12.20mm_Vishay_TJ5 +L_Toroid, Vertical series, Radial, pin pitch=12.20mm, , length*width=25.4*14.7mm^2, Vishay, TJ5, http://www.vishay.com/docs/34079/tj.pdf +L_Toroid Vertical series Radial pin pitch 12.20mm length 25.4mm width 14.7mm Vishay TJ5 +0 +2 +2 +Inductor_THT +L_Toroid_Vertical_L25.4mm_W14.7mm_P12.20mm_Vishay_TJ5_BigPads +L_Toroid, Vertical series, Radial, pin pitch=12.20mm, , length*width=25.4*14.7mm^2, Vishay, TJ5, BigPads, http://www.vishay.com/docs/34079/tj.pdf +L_Toroid Vertical series Radial pin pitch 12.20mm length 25.4mm width 14.7mm Vishay TJ5 BigPads +0 +2 +2 +Inductor_THT +L_Toroid_Vertical_L26.7mm_W14.0mm_P10.16mm_Pulse_D +L_Toroid, Vertical series, Radial, pin pitch=10.16mm, , length*width=26.67*13.97mm^2, Pulse, D, http://datasheet.octopart.com/PE-92112KNL-Pulse-datasheet-17853305.pdf +L_Toroid Vertical series Radial pin pitch 10.16mm length 26.67mm width 13.97mm Pulse D +0 +2 +2 +Inductor_THT +L_Toroid_Vertical_L28.6mm_W14.3mm_P11.43mm_Bourns_5700 +L_Toroid, Vertical series, Radial, pin pitch=11.43mm, , length*width=28.6*14.3mm^2, Bourns, 5700, http://www.bourns.com/docs/Product-Datasheets/5700_series.pdf +L_Toroid Vertical series Radial pin pitch 11.43mm length 28.6mm width 14.3mm Bourns 5700 +0 +2 +2 +Inductor_THT +L_Toroid_Vertical_L31.8mm_W15.9mm_P13.50mm_Bourns_5700 +L_Toroid, Vertical series, Radial, pin pitch=13.50mm, , length*width=31.8*15.9mm^2, Bourns, 5700, http://www.bourns.com/docs/Product-Datasheets/5700_series.pdf +L_Toroid Vertical series Radial pin pitch 13.50mm length 31.8mm width 15.9mm Bourns 5700 +0 +2 +2 +Inductor_THT +L_Toroid_Vertical_L33.0mm_W17.8mm_P12.70mm_Pulse_KM-5 +L_Toroid, Vertical series, Radial, pin pitch=12.70mm, , length*width=33.02*17.78mm^2, Pulse, KM-5, http://datasheet.octopart.com/PE-92112KNL-Pulse-datasheet-17853305.pdf +L_Toroid Vertical series Radial pin pitch 12.70mm length 33.02mm width 17.78mm Pulse KM-5 +0 +2 +2 +Inductor_THT +L_Toroid_Vertical_L35.1mm_W21.1mm_P18.50mm_Vishay_TJ6 +L_Toroid, Vertical series, Radial, pin pitch=18.50mm, , length*width=35.1*21.1mm^2, Vishay, TJ6, http://www.vishay.com/docs/34079/tj.pdf +L_Toroid Vertical series Radial pin pitch 18.50mm length 35.1mm width 21.1mm Vishay TJ6 +0 +2 +2 +Inductor_THT +L_Toroid_Vertical_L35.6mm_W17.8mm_P12.70mm_Pulse_E +L_Toroid, Vertical series, Radial, pin pitch=12.70mm, , length*width=35.56*17.78mm^2, Pulse, E, http://datasheet.octopart.com/PE-92112KNL-Pulse-datasheet-17853305.pdf +L_Toroid Vertical series Radial pin pitch 12.70mm length 35.56mm width 17.78mm Pulse E +0 +2 +2 +Inductor_THT +L_Toroid_Vertical_L41.9mm_W17.8mm_P12.70mm_Pulse_F +L_Toroid, Vertical series, Radial, pin pitch=12.70mm, , length*width=41.91*17.78mm^2, Pulse, F, http://datasheet.octopart.com/PE-92112KNL-Pulse-datasheet-17853305.pdf +L_Toroid Vertical series Radial pin pitch 12.70mm length 41.91mm width 17.78mm Pulse F +0 +2 +2 +Inductor_THT +L_Toroid_Vertical_L41.9mm_W19.1mm_P15.80mm_Vishay_TJ7 +L_Toroid, Vertical series, Radial, pin pitch=15.80mm, , length*width=41.9*19.1mm^2, Vishay, TJ7, http://www.vishay.com/docs/34079/tj.pdf +L_Toroid Vertical series Radial pin pitch 15.80mm length 41.9mm width 19.1mm Vishay TJ7 +0 +2 +2 +Inductor_THT +L_Toroid_Vertical_L46.0mm_W19.1mm_P21.80mm_Bourns_5700 +L_Toroid, Vertical series, Radial, pin pitch=21.80mm, , length*width=46*19.1mm^2, Bourns, 5700, http://www.bourns.com/docs/Product-Datasheets/5700_series.pdf +L_Toroid Vertical series Radial pin pitch 21.80mm length 46mm width 19.1mm Bourns 5700 +0 +2 +2 +Inductor_THT +L_Toroid_Vertical_L48.8mm_W25.4mm_P20.80mm_Vishay_TJ8 +L_Toroid, Vertical series, Radial, pin pitch=20.80mm, , length*width=48.8*25.4mm^2, Vishay, TJ8, http://www.vishay.com/docs/34079/tj.pdf +L_Toroid Vertical series Radial pin pitch 20.80mm length 48.8mm width 25.4mm Vishay TJ8 +0 +2 +2 +Inductor_THT +L_Toroid_Vertical_L54.0mm_W23.8mm_P20.10mm_Bourns_5700 +L_Toroid, Vertical series, Radial, pin pitch=20.10mm, , length*width=54*23.8mm^2, Bourns, 5700, http://www.bourns.com/docs/Product-Datasheets/5700_series.pdf +L_Toroid Vertical series Radial pin pitch 20.10mm length 54mm width 23.8mm Bourns 5700 +0 +2 +2 +Inductor_THT +L_Toroid_Vertical_L67.6mm_W36.1mm_P31.80mm_Vishay_TJ9 +L_Toroid, Vertical series, Radial, pin pitch=31.80mm, , length*width=67.6*36.1mm^2, Vishay, TJ9, http://www.vishay.com/docs/34079/tj.pdf +L_Toroid Vertical series Radial pin pitch 31.80mm length 67.6mm width 36.1mm Vishay TJ9 +0 +2 +2 +Jumper +SolderJumper-2_P1.3mm_Bridged2Bar_Pad1.0x1.5mm +SMD Solder Jumper, 1x1.5mm Pads, 0.3mm gap, bridged with 2 copper strips +solder jumper open +0 +2 +2 +Jumper +SolderJumper-2_P1.3mm_Bridged2Bar_RoundedPad1.0x1.5mm +SMD Solder Jumper, 1x1.5mm, rounded Pads, 0.3mm gap, bridged with 2 copper strips +solder jumper open +0 +2 +2 +Jumper +SolderJumper-2_P1.3mm_Bridged_Pad1.0x1.5mm +SMD Solder Jumper, 1x1.5mm Pads, 0.3mm gap, bridged with 1 copper strip +solder jumper open +0 +2 +2 +Jumper +SolderJumper-2_P1.3mm_Bridged_RoundedPad1.0x1.5mm +SMD Solder Jumper, 1x1.5mm, rounded Pads, 0.3mm gap, bridged with 1 copper strip +solder jumper open +0 +2 +2 +Jumper +SolderJumper-2_P1.3mm_Open_Pad1.0x1.5mm +SMD Solder Jumper, 1x1.5mm Pads, 0.3mm gap, open +solder jumper open +0 +2 +2 +Jumper +SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mm +SMD Solder Jumper, 1x1.5mm, rounded Pads, 0.3mm gap, open +solder jumper open +0 +2 +2 +Jumper +SolderJumper-2_P1.3mm_Open_TrianglePad1.0x1.5mm +SMD Solder Jumper, 1x1.5mm Triangular Pads, 0.3mm gap, open +solder jumper open +0 +2 +2 +Jumper +SolderJumper-3_P1.3mm_Bridged2Bar12_Pad1.0x1.5mm +SMD Solder 3-pad Jumper, 1x1.5mm Pads, 0.3mm gap, pads 1-2 Bridged2Bar with 2 copper strip +solder jumper open +0 +3 +3 +Jumper +SolderJumper-3_P1.3mm_Bridged2Bar12_Pad1.0x1.5mm_NumberLabels +SMD Solder Jumper, 1x1.5mm Pads, 0.3mm gap, pads 1-2 Bridged2Bar with 2 copper strip, labeled with numbers +solder jumper open +0 +3 +3 +Jumper +SolderJumper-3_P1.3mm_Bridged2Bar12_RoundedPad1.0x1.5mm +SMD Solder 3-pad Jumper, 1x1.5mm rounded Pads, 0.3mm gap, pads 1-2 Bridged2Bar with 2 copper strip +solder jumper open +0 +3 +3 +Jumper +SolderJumper-3_P1.3mm_Bridged2Bar12_RoundedPad1.0x1.5mm_NumberLabels +SMD Solder 3-pad Jumper, 1x1.5mm rounded Pads, 0.3mm gap, pads 1-2 Bridged2Bar with 2 copper strip, labeled with numbers +solder jumper open +0 +3 +3 +Jumper +SolderJumper-3_P1.3mm_Bridged12_Pad1.0x1.5mm +SMD Solder 3-pad Jumper, 1x1.5mm Pads, 0.3mm gap, pads 1-2 bridged with 1 copper strip +solder jumper open +0 +3 +3 +Jumper +SolderJumper-3_P1.3mm_Bridged12_Pad1.0x1.5mm_NumberLabels +SMD Solder Jumper, 1x1.5mm Pads, 0.3mm gap, pads 1-2 bridged with 1 copper strip, labeled with numbers +solder jumper open +0 +3 +3 +Jumper +SolderJumper-3_P1.3mm_Bridged12_RoundedPad1.0x1.5mm +SMD Solder 3-pad Jumper, 1x1.5mm rounded Pads, 0.3mm gap, pads 1-2 bridged with 1 copper strip +solder jumper open +0 +3 +3 +Jumper +SolderJumper-3_P1.3mm_Bridged12_RoundedPad1.0x1.5mm_NumberLabels +SMD Solder 3-pad Jumper, 1x1.5mm rounded Pads, 0.3mm gap, pads 1-2 bridged with 1 copper strip, labeled with numbers +solder jumper open +0 +3 +3 +Jumper +SolderJumper-3_P1.3mm_Open_Pad1.0x1.5mm +SMD Solder 3-pad Jumper, 1x1.5mm Pads, 0.3mm gap, open +solder jumper open +0 +3 +3 +Jumper +SolderJumper-3_P1.3mm_Open_Pad1.0x1.5mm_NumberLabels +SMD Solder Jumper, 1x1.5mm Pads, 0.3mm gap, open, labeled with numbers +solder jumper open +0 +3 +3 +Jumper +SolderJumper-3_P1.3mm_Open_RoundedPad1.0x1.5mm +SMD Solder 3-pad Jumper, 1x1.5mm rounded Pads, 0.3mm gap, open +solder jumper open +0 +3 +3 +Jumper +SolderJumper-3_P1.3mm_Open_RoundedPad1.0x1.5mm_NumberLabels +SMD Solder 3-pad Jumper, 1x1.5mm rounded Pads, 0.3mm gap, open, labeled with numbers +solder jumper open +0 +3 +3 +Jumper +SolderJumper-3_P2.0mm_Open_TrianglePad1.0x1.5mm +SMD Solder Jumper, 1x1.5mm Triangular Pads, 0.3mm gap, open +solder jumper open +0 +5 +3 +Jumper +SolderJumper-3_P2.0mm_Open_TrianglePad1.0x1.5mm_NumberLabels +SMD Solder Jumper, 1x1.5mm Triangular Pads, 0.3mm gap, open, labeled with numbers +solder jumper open +0 +5 +3 +LED_SMD +LED-APA102-2020 +http://www.led-color.com/upload/201604/APA102-2020%20SMD%20LED.pdf +LED RGB SPI +0 +8 +6 +LED_SMD +LED-L1T2_LUMILEDS +http://www.lumileds.com/uploads/438/DS133-pdf +LUMILEDS LUXEON TX L1T2 LED +0 +3 +3 +LED_SMD +LED_1W_3W_R8 +https://www.gme.cz/data/attachments/dsh.518-234.1.pdf +LED 1W 3W 5W +0 +3 +3 +LED_SMD +LED_0201_0603Metric +LED SMD 0201 (0603 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: https://www.vishay.com/docs/20052/crcw0201e3.pdf), generated with kicad-footprint-generator +LED +0 +4 +2 +LED_SMD +LED_0201_0603Metric_Castellated +LED SMD 0201 (0603 Metric), castellated end terminal, IPC_7351 nominal, (Body size source: https://www.vishay.com/docs/20052/crcw0201e3.pdf), generated with kicad-footprint-generator +LED castellated +0 +4 +2 +LED_SMD +LED_0201_0603Metric_Pad0.64x0.40mm_HandSolder +LED SMD 0201 (0603 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: https://www.vishay.com/docs/20052/crcw0201e3.pdf), generated with kicad-footprint-generator +LED handsolder +0 +4 +2 +LED_SMD +LED_0402_1005Metric +LED SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator +LED +0 +2 +2 +LED_SMD +LED_0402_1005Metric_Castellated +LED SMD 0402 (1005 Metric), castellated end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator +LED castellated +0 +2 +2 +LED_SMD +LED_0402_1005Metric_Pad0.77x0.64mm_HandSolder +LED SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator +LED handsolder +0 +2 +2 +LED_SMD +LED_0603_1608Metric +LED SMD 0603 (1608 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator +LED +0 +2 +2 +LED_SMD +LED_0603_1608Metric_Castellated +LED SMD 0603 (1608 Metric), castellated end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator +LED castellated +0 +2 +2 +LED_SMD +LED_0603_1608Metric_Pad1.05x0.95mm_HandSolder +LED SMD 0603 (1608 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator +LED handsolder +0 +2 +2 +LED_SMD +LED_0805_2012Metric +LED SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing), generated with kicad-footprint-generator +LED +0 +2 +2 +LED_SMD +LED_0805_2012Metric_Castellated +LED SMD 0805 (2012 Metric), castellated end terminal, IPC_7351 nominal, (Body size source: https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing), generated with kicad-footprint-generator +LED castellated +0 +2 +2 +LED_SMD +LED_0805_2012Metric_Pad1.15x1.40mm_HandSolder +LED SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing), generated with kicad-footprint-generator +LED handsolder +0 +2 +2 +LED_SMD +LED_1206_3216Metric +LED SMD 1206 (3216 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator +LED +0 +2 +2 +LED_SMD +LED_1206_3216Metric_Castellated +LED SMD 1206 (3216 Metric), castellated end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator +LED castellated +0 +2 +2 +LED_SMD +LED_1206_3216Metric_Pad1.42x1.75mm_HandSolder +LED SMD 1206 (3216 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator +LED handsolder +0 +2 +2 +LED_SMD +LED_1206_3216Metric_ReverseMount_Hole1.8x2.4mm +LED SMD 1206 (3216 Metric), reverse mount, square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator +diode reverse +0 +2 +2 +LED_SMD +LED_1210_3225Metric +LED SMD 1210 (3225 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator +LED +0 +2 +2 +LED_SMD +LED_1210_3225Metric_Castellated +LED SMD 1210 (3225 Metric), castellated end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator +LED castellated +0 +2 +2 +LED_SMD +LED_1210_3225Metric_Pad1.42x2.65mm_HandSolder +LED SMD 1210 (3225 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator +LED handsolder +0 +2 +2 +LED_SMD +LED_1812_4532Metric +LED SMD 1812 (4532 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: https://www.nikhef.nl/pub/departments/mt/projects/detectorR_D/dtddice/ERJ2G.pdf), generated with kicad-footprint-generator +LED +0 +2 +2 +LED_SMD +LED_1812_4532Metric_Castellated +LED SMD 1812 (4532 Metric), castellated end terminal, IPC_7351 nominal, (Body size source: https://www.nikhef.nl/pub/departments/mt/projects/detectorR_D/dtddice/ERJ2G.pdf), generated with kicad-footprint-generator +LED castellated +0 +2 +2 +LED_SMD +LED_1812_4532Metric_Pad1.30x3.40mm_HandSolder +LED SMD 1812 (4532 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: https://www.nikhef.nl/pub/departments/mt/projects/detectorR_D/dtddice/ERJ2G.pdf), generated with kicad-footprint-generator +LED handsolder +0 +2 +2 +LED_SMD +LED_2010_5025Metric +LED SMD 2010 (5025 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator +LED +0 +2 +2 +LED_SMD +LED_2010_5025Metric_Castellated +LED SMD 2010 (5025 Metric), castellated end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator +LED castellated +0 +2 +2 +LED_SMD +LED_2010_5025Metric_Pad1.52x2.65mm_HandSolder +LED SMD 2010 (5025 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator +LED handsolder +0 +2 +2 +LED_SMD +LED_2512_6332Metric +LED SMD 2512 (6332 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator +LED +0 +2 +2 +LED_SMD +LED_2512_6332Metric_Castellated +LED SMD 2512 (6332 Metric), castellated end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator +LED castellated +0 +2 +2 +LED_SMD +LED_2512_6332Metric_Pad1.52x3.35mm_HandSolder +LED SMD 2512 (6332 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator +LED handsolder +0 +2 +2 +LED_SMD +LED_2816_7142Metric +LED SMD 2816 (7142 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size from: https://www.vishay.com/docs/30100/wsl.pdf), generated with kicad-footprint-generator +LED +0 +2 +2 +LED_SMD +LED_2816_7142Metric_Castellated +LED SMD 2816 (7142 Metric), castellated end terminal, IPC_7351 nominal, (Body size from: https://www.vishay.com/docs/30100/wsl.pdf), generated with kicad-footprint-generator +LED castellated +0 +2 +2 +LED_SMD +LED_2816_7142Metric_Pad3.20x4.45mm_HandSolder +LED SMD 2816 (7142 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size from: https://www.vishay.com/docs/30100/wsl.pdf), generated with kicad-footprint-generator +LED handsolder +0 +2 +2 +LED_SMD +LED_ASMB-KTF0-0A306 +2220 Tricolor PLCC-4 LED, https://docs.broadcom.com/docs/ASMB-KTF0-0A306-DS100 +Tricolor LED +0 +4 +4 +LED_SMD +LED_Avago_PLCC4_3.2x2.8mm_CW +https://docs.broadcom.com/docs/AV02-4186EN +LED Avago PLCC-4 ASMB-MTB0-0A3A2 +0 +4 +4 +LED_SMD +LED_Avago_PLCC6_3x2.8mm +https://docs.broadcom.com/docs/AV02-3793EN +LED Avago PLCC-6 ASMT-YTB7-0AA02 +0 +6 +6 +LED_SMD +LED_Cree-PLCC4_2x2mm_CW +2.0mm x 2.0mm PLCC4 LED, http://www.cree.com/~/media/Files/Cree/LED-Components-and-Modules/HB/Data-Sheets/CLMVBFKA.pdf +LED Cree PLCC-4 +0 +4 +4 +LED_SMD +LED_Cree-PLCC4_3.2x2.8mm_CCW +3.2mm x 2.8mm PLCC4 LED, http://www.cree.com/led-components/media/documents/CLV1AFKB(874).pdf +LED Cree PLCC-4 +0 +4 +4 +LED_SMD +LED_Cree-PLCC4_5x5mm_CW +5.0mm x 5.0mm PLCC4 LED +LED Cree PLCC-4 +0 +4 +4 +LED_SMD +LED_Cree-PLCC6_4.7x1.5mm +4.7mm x 1.5mm PLCC6 LED, http://www.cree.com/led-components/media/documents/1381-QLS6AFKW.pdf +LED Cree PLCC-6 +0 +6 +6 +LED_SMD +LED_Cree-XB +http://www.cree.com/~/media/Files/Cree/LED-Components-and-Modules/XLamp/Data-and-Binning/XLampXBD.pdf +LED Cree XB +0 +5 +3 +LED_SMD +LED_Cree-XH +http://www.cree.com/~/media/Files/Cree/LED-Components-and-Modules/XLamp/Data-and-Binning/ds-XHB.pdf +LED Cree XH +0 +8 +2 +LED_SMD +LED_Cree-XHP35 +http://www.cree.com/~/media/Files/Cree/LED-Components-and-Modules/XLamp/Data-and-Binning/ds--XHP35.pdf +LED Cree XHP35 +0 +6 +3 +LED_SMD +LED_Cree-XHP50_6V +Cree XHP50, 6V footprint, http://www.cree.com/~/media/Files/Cree/LED%20Components%20and%20Modules/XLamp/Data%20and%20Binning/ds%20XHP50.pdf +LED Cree XHP50 +0 +15 +3 +LED_SMD +LED_Cree-XHP50_12V +Cree XHP50, 12V footprint, http://www.cree.com/~/media/Files/Cree/LED%20Components%20and%20Modules/XLamp/Data%20and%20Binning/ds%20XHP50.pdf +LED XHP50 Cree +0 +15 +3 +LED_SMD +LED_Cree-XHP70_6V +Cree XHP70 LED, 6V version, http://www.cree.com/~/media/Files/Cree/LED%20Components%20and%20Modules/XLamp/Data%20and%20Binning/ds%20XHP70.pdf +LED Cree XHP70 +0 +15 +3 +LED_SMD +LED_Cree-XHP70_12V +Cree XHP70 LED, 12V version, http://www.cree.com/~/media/Files/Cree/LED%20Components%20and%20Modules/XLamp/Data%20and%20Binning/ds%20XHP70.pdf +LED Cree XHP70 +0 +15 +3 +LED_SMD +LED_Cree-XP +LED Cree-XP http://www.cree.com/~/media/Files/Cree/LED-Components-and-Modules/XLamp/Data-and-Binning/XLampXPE2.pdf +LED Cree XP +0 +6 +3 +LED_SMD +LED_Cree-XP-G +LED Cree-XP-G http://www.cree.com/~/media/Files/Cree/LED%20Components%20and%20Modules/XLamp/Data%20and%20Binning/XLampXPG.pdf +LED Cree XP-G +0 +6 +3 +LED_SMD +LED_Cree-XQ +LED Cree-XQ http://www.cree.com/~/media/Files/Cree/LED-Components-and-Modules/XLamp/Data-and-Binning/ds-XQB.pdf +LED Cree XQ +0 +2 +2 +LED_SMD +LED_Cree-XQ_HandSoldering +LED Cree-XQ handsoldering pads http://www.cree.com/~/media/Files/Cree/LED-Components-and-Modules/XLamp/Data-and-Binning/ds-XQB.pdf +LED Cree XQ +0 +2 +2 +LED_SMD +LED_Dialight_591 +LED SMD 3mm Right Angle series (http://www.dialightsignalsandcomponents.com/Assets/Drawings/2D_Drawings_DrawingDetailedSpec/C17354.pdf) +LED Dialight 591 +0 +2 +2 +LED_SMD +LED_Inolux_IN-PI554FCH_PLCC4_5.0x5.0mm_P3.2mm +http://www.inolux-corp.com/datasheet/SMDLED/Addressable%20LED/IN-PI554FCH.pdf +RGB LED NeoPixel addressable +0 +4 +4 +LED_SMD +LED_Kingbright_AAA3528ESGCT +Kingbright, dual LED, 3.5 x 2.8 mm Surface Mount LED Lamp (http://www.kingbrightusa.com/images/catalog/SPEC/AAA3528ESGCT.pdf) +dual led smd +0 +4 +4 +LED_SMD +LED_Kingbright_APFA3010_3x1.5mm_Horizontal +LED RGB, APFA3010, http://www.kingbrightusa.com/images/catalog/SPEC/APFA3010LSEEZGKQBKC.pdf +LED RGB APFA3010 KINGBRIGHT 3x1.5mm +0 +4 +4 +LED_SMD +LED_LiteOn_LTST-C19HE1WT +LiteOn RGB LED; https://optoelectronics.liteon.com/upload/download/DS22-2008-0044/LTST-C19HE1WT.pdf +LED RGB Chip SMD +0 +4 +4 +LED_SMD +LED_LiteOn_LTST-S326 +http://optoelectronics.liteon.com/upload/download/DS22-2000-287/LTST-S326KGJRKT.PDF +LED SMD right angle CCA +0 +3 +3 +LED_SMD +LED_Lumex_SML-LX0303SIUPGUSB +Lumex RGB LED, clear, SMD, https://www.lumex.com/spec/SML-LX0303SIUPGUSB.pdf +LED RGB +0 +4 +4 +LED_SMD +LED_Osram_Lx_P47F_D2mm_ReverseMount +OSRAM, reverse-mount LED, SMD, 2mm diameter, http://www.farnell.com/datasheets/2711587.pdf +LED ReverseMount Reverse +0 +4 +2 +LED_SMD +LED_PLCC-2 +LED PLCC-2 SMD package +LED PLCC-2 SMD +0 +2 +2 +LED_SMD +LED_PLCC_2835 +https://www.luckylight.cn/media/component/data-sheet/R2835BC-B2M-M10.pdf +LED +0 +2 +2 +LED_SMD +LED_PLCC_2835_Handsoldering +https://www.luckylight.cn/media/component/data-sheet/R2835BC-B2M-M10.pdf +LED +0 +2 +2 +LED_SMD +LED_RGB_1210 +RGB LED 3.2x2.7mm http://www.avagotech.com/docs/AV02-0610EN +LED 3227 +0 +4 +4 +LED_SMD +LED_RGB_5050-6 +http://cdn.sparkfun.com/datasheets/Components/LED/5060BRG4.pdf +RGB LED 5050-6 +0 +6 +6 +LED_SMD +LED_RGB_Cree-PLCC-6_6x5mm_P2.1mm +http://www.farnell.com/datasheets/2003905.pdf +LED RGB PLCC-6 CLP6C-FBK +0 +6 +6 +LED_SMD +LED_RGB_Getian_GT-P6PRGB4303 +https://www.gme.sk/img/cache/doc/518/177/vykonova-led-getian-gt-p6prgb4303-datasheet-1.pdf +LED RGB +0 +7 +7 +LED_SMD +LED_RGB_PLCC-6 +RGB LED PLCC-6 +RGB LED PLCC-6 +0 +6 +6 +LED_SMD +LED_ROHM_SMLVN6 +https://www.rohm.com/datasheet/SMLVN6RGB1U +LED ROHM SMLVN6 +0 +6 +6 +LED_SMD +LED_SK6805_PLCC4_2.4x2.7mm_P1.3mm +https://cdn-shop.adafruit.com/product-files/3484/3484_Datasheet.pdf +LED RGB NeoPixel Nano +0 +4 +4 +LED_SMD +LED_SK6812MINI_PLCC4_3.5x3.5mm_P1.75mm +https://cdn-shop.adafruit.com/product-files/2686/SK6812MINI_REV.01-1-2.pdf +LED RGB NeoPixel Mini +0 +4 +4 +LED_SMD +LED_SK6812_EC15_1.5x1.5mm +http://www.newstar-ledstrip.com/product/20181119172602110.pdf +LED RGB NeoPixel +0 +4 +4 +LED_SMD +LED_SK6812_PLCC4_5.0x5.0mm_P3.2mm +https://cdn-shop.adafruit.com/product-files/1138/SK6812+LED+datasheet+.pdf +LED RGB NeoPixel +0 +4 +4 +LED_SMD +LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm +https://cdn-shop.adafruit.com/datasheets/WS2812B.pdf +LED RGB NeoPixel +0 +4 +4 +LED_SMD +LED_WS2812_PLCC6_5.0x5.0mm_P1.6mm +https://cdn-shop.adafruit.com/datasheets/WS2812.pdf +LED RGB NeoPixel +0 +6 +6 +LED_SMD +LED_Yuji_5730 +LED,Yuji,5730,https://cdn.shopify.com/s/files/1/0344/6401/files/YJWJ014-1.1_YJ-BC-5730L-G02.pdf +LED Yuji 5730 +0 +3 +2 +LED_SMD +LED_miniPLCC_2315 +https://docs.broadcom.com/cs/Satellite?blobcol=urldata&blobheader=application%2Fpdf&blobheadername1=Content-Disposition&blobheadername2=Content-Type&blobheadername3=MDT-Type&blobheadervalue1=attachment%3Bfilename%3DAV02-2205EN_DS_ASMT-TxBM_2014-05-09.pdf&blobheadervalue2=application%2Fx-download&blobheadervalue3=abinary%253B%2Bcharset%253DUTF-8&blobkey=id&blobnocache=true&blobtable=MungoBlobs&blobwhere=1430858274704&ssbinary=true +LED +0 +2 +2 +LED_SMD +LED_miniPLCC_2315_Handsoldering +https://docs.broadcom.com/cs/Satellite?blobcol=urldata&blobheader=application%2Fpdf&blobheadername1=Content-Disposition&blobheadername2=Content-Type&blobheadername3=MDT-Type&blobheadervalue1=attachment%3Bfilename%3DAV02-2205EN_DS_ASMT-TxBM_2014-05-09.pdf&blobheadervalue2=application%2Fx-download&blobheadervalue3=abinary%253B%2Bcharset%253DUTF-8&blobkey=id&blobnocache=true&blobtable=MungoBlobs&blobwhere=1430858274704&ssbinary=true +LED +0 +2 +2 +LED_THT +LED_BL-FL7680RGB +'Piranha' RGB LED, through hole, common anode, 7.62x7.62mm, BGRA pin order, https://cdn-shop.adafruit.com/datasheets/BL-FL7680RGB.pdf +RGB LED Piranha Super-Flux BetLux +0 +4 +4 +LED_THT +LED_D1.8mm_W1.8mm_H2.4mm_Horizontal_O1.27mm_Z1.6mm +LED, , diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 1.6mm, 2 pins +LED diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 1.6mm 2 pins +0 +2 +2 +LED_THT +LED_D1.8mm_W1.8mm_H2.4mm_Horizontal_O1.27mm_Z4.9mm +LED, , diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 1.6mm, 2 pins, diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 1.6mm, 2 pins, diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 1.6mm, 2 pins, diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 4.9mm, 2 pins +LED diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 1.6mm 2 pins diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 1.6mm 2 pins diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 1.6mm 2 pins diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 4.9mm 2 pins +0 +2 +2 +LED_THT +LED_D1.8mm_W1.8mm_H2.4mm_Horizontal_O1.27mm_Z8.2mm +LED, , diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 1.6mm, 2 pins, diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 1.6mm, 2 pins, diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 1.6mm, 2 pins, diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 4.9mm, 2 pins, diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 4.9mm, 2 pins, diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 4.9mm, 2 pins, diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 8.2mm, 2 pins +LED diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 1.6mm 2 pins diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 1.6mm 2 pins diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 1.6mm 2 pins diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 4.9mm 2 pins diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 4.9mm 2 pins diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 4.9mm 2 pins diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 8.2mm 2 pins +0 +2 +2 +LED_THT +LED_D1.8mm_W1.8mm_H2.4mm_Horizontal_O3.81mm_Z1.6mm +LED, , diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 1.6mm, 2 pins, diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 1.6mm, 2 pins +LED diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 1.6mm 2 pins diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 1.6mm 2 pins +0 +2 +2 +LED_THT +LED_D1.8mm_W1.8mm_H2.4mm_Horizontal_O3.81mm_Z4.9mm +LED, , diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 1.6mm, 2 pins, diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 1.6mm, 2 pins, diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 1.6mm, 2 pins, diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 4.9mm, 2 pins, diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 4.9mm, 2 pins +LED diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 1.6mm 2 pins diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 1.6mm 2 pins diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 1.6mm 2 pins diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 4.9mm 2 pins diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 4.9mm 2 pins +0 +2 +2 +LED_THT +LED_D1.8mm_W1.8mm_H2.4mm_Horizontal_O3.81mm_Z8.2mm +LED, , diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 1.6mm, 2 pins, diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 1.6mm, 2 pins, diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 1.6mm, 2 pins, diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 4.9mm, 2 pins, diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 4.9mm, 2 pins, diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 4.9mm, 2 pins, diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 8.2mm, 2 pins, diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 8.2mm, 2 pins +LED diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 1.6mm 2 pins diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 1.6mm 2 pins diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 1.6mm 2 pins diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 4.9mm 2 pins diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 4.9mm 2 pins diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 4.9mm 2 pins diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 8.2mm 2 pins diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 8.2mm 2 pins +0 +2 +2 +LED_THT +LED_D1.8mm_W1.8mm_H2.4mm_Horizontal_O6.35mm_Z1.6mm +LED, , diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 1.6mm, 2 pins, diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 1.6mm, 2 pins, diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 1.6mm, 2 pins +LED diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 1.6mm 2 pins diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 1.6mm 2 pins diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 1.6mm 2 pins +0 +2 +2 +LED_THT +LED_D1.8mm_W1.8mm_H2.4mm_Horizontal_O6.35mm_Z4.9mm +LED, , diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 1.6mm, 2 pins, diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 1.6mm, 2 pins, diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 1.6mm, 2 pins, diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 4.9mm, 2 pins, diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 4.9mm, 2 pins, diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 4.9mm, 2 pins +LED diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 1.6mm 2 pins diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 1.6mm 2 pins diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 1.6mm 2 pins diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 4.9mm 2 pins diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 4.9mm 2 pins diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 4.9mm 2 pins +0 +2 +2 +LED_THT +LED_D1.8mm_W1.8mm_H2.4mm_Horizontal_O6.35mm_Z8.2mm +LED, , diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 1.6mm, 2 pins, diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 1.6mm, 2 pins, diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 1.6mm, 2 pins, diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 4.9mm, 2 pins, diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 4.9mm, 2 pins, diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 4.9mm, 2 pins, diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 8.2mm, 2 pins, diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 8.2mm, 2 pins, diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 8.2mm, 2 pins +LED diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 1.6mm 2 pins diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 1.6mm 2 pins diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 1.6mm 2 pins diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 4.9mm 2 pins diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 4.9mm 2 pins diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 4.9mm 2 pins diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 8.2mm 2 pins diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 8.2mm 2 pins diameter 1.8mm size 1.8x2.4mm^2 z-position of LED center 8.2mm 2 pins +0 +2 +2 +LED_THT +LED_D1.8mm_W3.3mm_H2.4mm +LED, Round, Rectangular size 3.3x2.4mm^2 diameter 1.8mm, 2 pins +LED Round Rectangular size 3.3x2.4mm^2 diameter 1.8mm 2 pins +0 +2 +2 +LED_THT +LED_D2.0mm_W4.0mm_H2.8mm_FlatTop +LED, Round, FlatTop, Rectangular size 4.0x2.8mm^2 diameter 2.0mm, 2 pins, http://www.kingbright.com/attachments/file/psearch/000/00/00/L-1034IDT(Ver.9A).pdf +LED Round FlatTop Rectangular size 4.0x2.8mm^2 diameter 2.0mm 2 pins +0 +2 +2 +LED_THT +LED_D2.0mm_W4.8mm_H2.5mm_FlatTop +LED, Round, FlatTop, Rectangular size 4.8x2.5mm^2 diameter 2.0mm, 2 pins, http://www.kingbright.com/attachments/file/psearch/000/00/00/L-13GD(Ver.11B).pdf +LED Round FlatTop Rectangular size 4.8x2.5mm^2 diameter 2.0mm 2 pins +0 +2 +2 +LED_THT +LED_D3.0mm +LED, diameter 3.0mm, 2 pins +LED diameter 3.0mm 2 pins +0 +2 +2 +LED_THT +LED_D3.0mm-3 +LED, diameter 3.0mm, 2 pins, diameter 3.0mm, 3 pins, http://www.kingbright.com/attachments/file/psearch/000/00/00/L-3VSURKCGKC(Ver.8A).pdf +LED diameter 3.0mm 2 pins diameter 3.0mm 3 pins +0 +3 +3 +LED_THT +LED_D3.0mm_Clear +IR-LED, diameter 3.0mm, 2 pins, color: clear +IR infrared LED diameter 3.0mm 2 pins clear +0 +2 +2 +LED_THT +LED_D3.0mm_FlatTop +LED, Round, FlatTop, diameter 3.0mm, 2 pins, http://www.kingbright.com/attachments/file/psearch/000/00/00/L-47XEC(Ver.9A).pdf +LED Round FlatTop diameter 3.0mm 2 pins +0 +2 +2 +LED_THT +LED_D3.0mm_Horizontal_O1.27mm_Z2.0mm +LED, diameter 3.0mm z-position of LED center 2.0mm, 2 pins +LED diameter 3.0mm z-position of LED center 2.0mm 2 pins +0 +2 +2 +LED_THT +LED_D3.0mm_Horizontal_O1.27mm_Z2.0mm_Clear +LED, diameter 3.0mm z-position of LED center 2.0mm, 2 pins +LED diameter 3.0mm z-position of LED center 2.0mm 2 pins +0 +2 +2 +LED_THT +LED_D3.0mm_Horizontal_O1.27mm_Z2.0mm_IRBlack +LED, diameter 3.0mm z-position of LED center 2.0mm, 2 pins +LED diameter 3.0mm z-position of LED center 2.0mm 2 pins +0 +2 +2 +LED_THT +LED_D3.0mm_Horizontal_O1.27mm_Z2.0mm_IRGrey +LED, diameter 3.0mm z-position of LED center 2.0mm, 2 pins +LED diameter 3.0mm z-position of LED center 2.0mm 2 pins +0 +2 +2 +LED_THT +LED_D3.0mm_Horizontal_O1.27mm_Z6.0mm +LED, diameter 3.0mm z-position of LED center 2.0mm, 2 pins, diameter 3.0mm z-position of LED center 2.0mm, 2 pins, diameter 3.0mm z-position of LED center 2.0mm, 2 pins, diameter 3.0mm z-position of LED center 6.0mm, 2 pins +LED diameter 3.0mm z-position of LED center 2.0mm 2 pins diameter 3.0mm z-position of LED center 2.0mm 2 pins diameter 3.0mm z-position of LED center 2.0mm 2 pins diameter 3.0mm z-position of LED center 6.0mm 2 pins +0 +2 +2 +LED_THT +LED_D3.0mm_Horizontal_O1.27mm_Z10.0mm +LED, diameter 3.0mm z-position of LED center 2.0mm, 2 pins, diameter 3.0mm z-position of LED center 2.0mm, 2 pins, diameter 3.0mm z-position of LED center 2.0mm, 2 pins, diameter 3.0mm z-position of LED center 6.0mm, 2 pins, diameter 3.0mm z-position of LED center 6.0mm, 2 pins, diameter 3.0mm z-position of LED center 6.0mm, 2 pins, diameter 3.0mm z-position of LED center 10.0mm, 2 pins +LED diameter 3.0mm z-position of LED center 2.0mm 2 pins diameter 3.0mm z-position of LED center 2.0mm 2 pins diameter 3.0mm z-position of LED center 2.0mm 2 pins diameter 3.0mm z-position of LED center 6.0mm 2 pins diameter 3.0mm z-position of LED center 6.0mm 2 pins diameter 3.0mm z-position of LED center 6.0mm 2 pins diameter 3.0mm z-position of LED center 10.0mm 2 pins +0 +2 +2 +LED_THT +LED_D3.0mm_Horizontal_O3.81mm_Z2.0mm +LED, diameter 3.0mm z-position of LED center 2.0mm, 2 pins, diameter 3.0mm z-position of LED center 2.0mm, 2 pins +LED diameter 3.0mm z-position of LED center 2.0mm 2 pins diameter 3.0mm z-position of LED center 2.0mm 2 pins +0 +2 +2 +LED_THT +LED_D3.0mm_Horizontal_O3.81mm_Z6.0mm +LED, diameter 3.0mm z-position of LED center 2.0mm, 2 pins, diameter 3.0mm z-position of LED center 2.0mm, 2 pins, diameter 3.0mm z-position of LED center 2.0mm, 2 pins, diameter 3.0mm z-position of LED center 6.0mm, 2 pins, diameter 3.0mm z-position of LED center 6.0mm, 2 pins +LED diameter 3.0mm z-position of LED center 2.0mm 2 pins diameter 3.0mm z-position of LED center 2.0mm 2 pins diameter 3.0mm z-position of LED center 2.0mm 2 pins diameter 3.0mm z-position of LED center 6.0mm 2 pins diameter 3.0mm z-position of LED center 6.0mm 2 pins +0 +2 +2 +LED_THT +LED_D3.0mm_Horizontal_O3.81mm_Z10.0mm +LED, diameter 3.0mm z-position of LED center 2.0mm, 2 pins, diameter 3.0mm z-position of LED center 2.0mm, 2 pins, diameter 3.0mm z-position of LED center 2.0mm, 2 pins, diameter 3.0mm z-position of LED center 6.0mm, 2 pins, diameter 3.0mm z-position of LED center 6.0mm, 2 pins, diameter 3.0mm z-position of LED center 6.0mm, 2 pins, diameter 3.0mm z-position of LED center 10.0mm, 2 pins, diameter 3.0mm z-position of LED center 10.0mm, 2 pins +LED diameter 3.0mm z-position of LED center 2.0mm 2 pins diameter 3.0mm z-position of LED center 2.0mm 2 pins diameter 3.0mm z-position of LED center 2.0mm 2 pins diameter 3.0mm z-position of LED center 6.0mm 2 pins diameter 3.0mm z-position of LED center 6.0mm 2 pins diameter 3.0mm z-position of LED center 6.0mm 2 pins diameter 3.0mm z-position of LED center 10.0mm 2 pins diameter 3.0mm z-position of LED center 10.0mm 2 pins +0 +2 +2 +LED_THT +LED_D3.0mm_Horizontal_O6.35mm_Z2.0mm +LED, diameter 3.0mm z-position of LED center 2.0mm, 2 pins, diameter 3.0mm z-position of LED center 2.0mm, 2 pins, diameter 3.0mm z-position of LED center 2.0mm, 2 pins +LED diameter 3.0mm z-position of LED center 2.0mm 2 pins diameter 3.0mm z-position of LED center 2.0mm 2 pins diameter 3.0mm z-position of LED center 2.0mm 2 pins +0 +2 +2 +LED_THT +LED_D3.0mm_Horizontal_O6.35mm_Z6.0mm +LED, diameter 3.0mm z-position of LED center 2.0mm, 2 pins, diameter 3.0mm z-position of LED center 2.0mm, 2 pins, diameter 3.0mm z-position of LED center 2.0mm, 2 pins, diameter 3.0mm z-position of LED center 6.0mm, 2 pins, diameter 3.0mm z-position of LED center 6.0mm, 2 pins, diameter 3.0mm z-position of LED center 6.0mm, 2 pins +LED diameter 3.0mm z-position of LED center 2.0mm 2 pins diameter 3.0mm z-position of LED center 2.0mm 2 pins diameter 3.0mm z-position of LED center 2.0mm 2 pins diameter 3.0mm z-position of LED center 6.0mm 2 pins diameter 3.0mm z-position of LED center 6.0mm 2 pins diameter 3.0mm z-position of LED center 6.0mm 2 pins +0 +2 +2 +LED_THT +LED_D3.0mm_Horizontal_O6.35mm_Z10.0mm +LED, diameter 3.0mm z-position of LED center 2.0mm, 2 pins, diameter 3.0mm z-position of LED center 2.0mm, 2 pins, diameter 3.0mm z-position of LED center 2.0mm, 2 pins, diameter 3.0mm z-position of LED center 6.0mm, 2 pins, diameter 3.0mm z-position of LED center 6.0mm, 2 pins, diameter 3.0mm z-position of LED center 6.0mm, 2 pins, diameter 3.0mm z-position of LED center 10.0mm, 2 pins, diameter 3.0mm z-position of LED center 10.0mm, 2 pins, diameter 3.0mm z-position of LED center 10.0mm, 2 pins +LED diameter 3.0mm z-position of LED center 2.0mm 2 pins diameter 3.0mm z-position of LED center 2.0mm 2 pins diameter 3.0mm z-position of LED center 2.0mm 2 pins diameter 3.0mm z-position of LED center 6.0mm 2 pins diameter 3.0mm z-position of LED center 6.0mm 2 pins diameter 3.0mm z-position of LED center 6.0mm 2 pins diameter 3.0mm z-position of LED center 10.0mm 2 pins diameter 3.0mm z-position of LED center 10.0mm 2 pins diameter 3.0mm z-position of LED center 10.0mm 2 pins +0 +2 +2 +LED_THT +LED_D3.0mm_IRBlack +IR-ED, diameter 3.0mm, 2 pins, color: black +IR infrared LED diameter 3.0mm 2 pins black +0 +2 +2 +LED_THT +LED_D3.0mm_IRGrey +IR-LED, diameter 3.0mm, 2 pins, color: grey +IR infrared LED diameter 3.0mm 2 pins grey +0 +2 +2 +LED_THT +LED_D4.0mm +LED, diameter 4.0mm, 2 pins, http://www.kingbright.com/attachments/file/psearch/000/00/00/L-43GD(Ver.12B).pdf +LED diameter 4.0mm 2 pins +0 +2 +2 +LED_THT +LED_D5.0mm +LED, diameter 5.0mm, 2 pins, http://cdn-reichelt.de/documents/datenblatt/A500/LL-504BC2E-009.pdf +LED diameter 5.0mm 2 pins +0 +2 +2 +LED_THT +LED_D5.0mm-3 +LED, diameter 5.0mm, 2 pins, diameter 5.0mm, 3 pins, http://www.kingbright.com/attachments/file/psearch/000/00/00/L-59EGC(Ver.17A).pdf +LED diameter 5.0mm 2 pins diameter 5.0mm 3 pins +0 +3 +3 +LED_THT +LED_D5.0mm-3_Horizontal_O3.81mm_Z3.0mm +LED, diameter 5.0mm z-position of LED center 3.0mm, 3 pins, diameter 5.0mm z-position of LED center 3.0mm, 2 pins +LED diameter 5.0mm z-position of LED center 3.0mm 3 pins diameter 5.0mm z-position of LED center 3.0mm 2 pins +0 +3 +3 +LED_THT +LED_D5.0mm-4_RGB +LED, diameter 5.0mm, 2 pins, diameter 5.0mm, 3 pins, diameter 5.0mm, 4 pins, http://www.kingbright.com/attachments/file/psearch/000/00/00/L-154A4SUREQBFZGEW(Ver.9A).pdf +LED diameter 5.0mm 2 pins diameter 5.0mm 3 pins diameter 5.0mm 4 pins RGB RGBLED +0 +4 +4 +LED_THT +LED_D5.0mm-4_RGB_Staggered_Pins +LED, diameter 5.0mm, 4 pins, WP154A4, http://webtest4.kingbright.com/attachments/file/psearch/000/00/00/L-154A4SUREQBFZGEW(Ver.9A).pdf +rgb led +0 +4 +4 +LED_THT +LED_D5.0mm-4_RGB_Wide_Pins +LED, diameter 5.0mm, 2 pins, diameter 5.0mm, 3 pins, diameter 5.0mm, 4 pins, http://www.kingbright.com/attachments/file/psearch/000/00/00/L-154A4SUREQBFZGEW(Ver.9A).pdf +LED diameter 5.0mm 2 pins diameter 5.0mm 3 pins diameter 5.0mm 4 pins RGB RGBLED +0 +4 +4 +LED_THT +LED_D5.0mm_Clear +LED, diameter 5.0mm, 2 pins, http://cdn-reichelt.de/documents/datenblatt/A500/LL-504BC2E-009.pdf +LED diameter 5.0mm 2 pins +0 +2 +2 +LED_THT +LED_D5.0mm_FlatTop +LED, Round, FlatTop, diameter 5.0mm, 2 pins, http://www.kingbright.com/attachments/file/psearch/000/00/00/L-483GDT(Ver.15B).pdf +LED Round FlatTop diameter 5.0mm 2 pins +0 +2 +2 +LED_THT +LED_D5.0mm_Horizontal_O1.27mm_Z3.0mm +LED, diameter 5.0mm z-position of LED center 3.0mm, 2 pins +LED diameter 5.0mm z-position of LED center 3.0mm 2 pins +0 +2 +2 +LED_THT +LED_D5.0mm_Horizontal_O1.27mm_Z3.0mm_Clear +LED, diameter 5.0mm z-position of LED center 3.0mm, 2 pins +LED diameter 5.0mm z-position of LED center 3.0mm 2 pins +0 +2 +2 +LED_THT +LED_D5.0mm_Horizontal_O1.27mm_Z3.0mm_IRBlack +LED, diameter 5.0mm z-position of LED center 3.0mm, 2 pins +LED diameter 5.0mm z-position of LED center 3.0mm 2 pins +0 +2 +2 +LED_THT +LED_D5.0mm_Horizontal_O1.27mm_Z3.0mm_IRGrey +LED, diameter 5.0mm z-position of LED center 3.0mm, 2 pins +LED diameter 5.0mm z-position of LED center 3.0mm 2 pins +0 +2 +2 +LED_THT +LED_D5.0mm_Horizontal_O1.27mm_Z9.0mm +LED, diameter 5.0mm z-position of LED center 3.0mm, 2 pins, diameter 5.0mm z-position of LED center 3.0mm, 2 pins, diameter 5.0mm z-position of LED center 3.0mm, 2 pins, diameter 5.0mm z-position of LED center 9.0mm, 2 pins +LED diameter 5.0mm z-position of LED center 3.0mm 2 pins diameter 5.0mm z-position of LED center 3.0mm 2 pins diameter 5.0mm z-position of LED center 3.0mm 2 pins diameter 5.0mm z-position of LED center 9.0mm 2 pins +0 +2 +2 +LED_THT +LED_D5.0mm_Horizontal_O1.27mm_Z15.0mm +LED, diameter 5.0mm z-position of LED center 3.0mm, 2 pins, diameter 5.0mm z-position of LED center 3.0mm, 2 pins, diameter 5.0mm z-position of LED center 3.0mm, 2 pins, diameter 5.0mm z-position of LED center 9.0mm, 2 pins, diameter 5.0mm z-position of LED center 9.0mm, 2 pins, diameter 5.0mm z-position of LED center 9.0mm, 2 pins, diameter 5.0mm z-position of LED center 15.0mm, 2 pins +LED diameter 5.0mm z-position of LED center 3.0mm 2 pins diameter 5.0mm z-position of LED center 3.0mm 2 pins diameter 5.0mm z-position of LED center 3.0mm 2 pins diameter 5.0mm z-position of LED center 9.0mm 2 pins diameter 5.0mm z-position of LED center 9.0mm 2 pins diameter 5.0mm z-position of LED center 9.0mm 2 pins diameter 5.0mm z-position of LED center 15.0mm 2 pins +0 +2 +2 +LED_THT +LED_D5.0mm_Horizontal_O3.81mm_Z3.0mm +LED, diameter 5.0mm z-position of LED center 3.0mm, 2 pins, diameter 5.0mm z-position of LED center 3.0mm, 2 pins +LED diameter 5.0mm z-position of LED center 3.0mm 2 pins diameter 5.0mm z-position of LED center 3.0mm 2 pins +0 +2 +2 +LED_THT +LED_D5.0mm_Horizontal_O3.81mm_Z9.0mm +LED, diameter 5.0mm z-position of LED center 3.0mm, 2 pins, diameter 5.0mm z-position of LED center 3.0mm, 2 pins, diameter 5.0mm z-position of LED center 3.0mm, 2 pins, diameter 5.0mm z-position of LED center 9.0mm, 2 pins, diameter 5.0mm z-position of LED center 9.0mm, 2 pins +LED diameter 5.0mm z-position of LED center 3.0mm 2 pins diameter 5.0mm z-position of LED center 3.0mm 2 pins diameter 5.0mm z-position of LED center 3.0mm 2 pins diameter 5.0mm z-position of LED center 9.0mm 2 pins diameter 5.0mm z-position of LED center 9.0mm 2 pins +0 +2 +2 +LED_THT +LED_D5.0mm_Horizontal_O3.81mm_Z15.0mm +LED, diameter 5.0mm z-position of LED center 3.0mm, 2 pins, diameter 5.0mm z-position of LED center 3.0mm, 2 pins, diameter 5.0mm z-position of LED center 3.0mm, 2 pins, diameter 5.0mm z-position of LED center 9.0mm, 2 pins, diameter 5.0mm z-position of LED center 9.0mm, 2 pins, diameter 5.0mm z-position of LED center 9.0mm, 2 pins, diameter 5.0mm z-position of LED center 15.0mm, 2 pins, diameter 5.0mm z-position of LED center 15.0mm, 2 pins +LED diameter 5.0mm z-position of LED center 3.0mm 2 pins diameter 5.0mm z-position of LED center 3.0mm 2 pins diameter 5.0mm z-position of LED center 3.0mm 2 pins diameter 5.0mm z-position of LED center 9.0mm 2 pins diameter 5.0mm z-position of LED center 9.0mm 2 pins diameter 5.0mm z-position of LED center 9.0mm 2 pins diameter 5.0mm z-position of LED center 15.0mm 2 pins diameter 5.0mm z-position of LED center 15.0mm 2 pins +0 +2 +2 +LED_THT +LED_D5.0mm_Horizontal_O6.35mm_Z3.0mm +LED, diameter 5.0mm z-position of LED center 3.0mm, 2 pins, diameter 5.0mm z-position of LED center 3.0mm, 2 pins, diameter 5.0mm z-position of LED center 3.0mm, 2 pins +LED diameter 5.0mm z-position of LED center 3.0mm 2 pins diameter 5.0mm z-position of LED center 3.0mm 2 pins diameter 5.0mm z-position of LED center 3.0mm 2 pins +0 +2 +2 +LED_THT +LED_D5.0mm_Horizontal_O6.35mm_Z9.0mm +LED, diameter 5.0mm z-position of LED center 3.0mm, 2 pins, diameter 5.0mm z-position of LED center 3.0mm, 2 pins, diameter 5.0mm z-position of LED center 3.0mm, 2 pins, diameter 5.0mm z-position of LED center 9.0mm, 2 pins, diameter 5.0mm z-position of LED center 9.0mm, 2 pins, diameter 5.0mm z-position of LED center 9.0mm, 2 pins +LED diameter 5.0mm z-position of LED center 3.0mm 2 pins diameter 5.0mm z-position of LED center 3.0mm 2 pins diameter 5.0mm z-position of LED center 3.0mm 2 pins diameter 5.0mm z-position of LED center 9.0mm 2 pins diameter 5.0mm z-position of LED center 9.0mm 2 pins diameter 5.0mm z-position of LED center 9.0mm 2 pins +0 +2 +2 +LED_THT +LED_D5.0mm_Horizontal_O6.35mm_Z15.0mm +LED, diameter 5.0mm z-position of LED center 3.0mm, 2 pins, diameter 5.0mm z-position of LED center 3.0mm, 2 pins, diameter 5.0mm z-position of LED center 3.0mm, 2 pins, diameter 5.0mm z-position of LED center 9.0mm, 2 pins, diameter 5.0mm z-position of LED center 9.0mm, 2 pins, diameter 5.0mm z-position of LED center 9.0mm, 2 pins, diameter 5.0mm z-position of LED center 15.0mm, 2 pins, diameter 5.0mm z-position of LED center 15.0mm, 2 pins, diameter 5.0mm z-position of LED center 15.0mm, 2 pins +LED diameter 5.0mm z-position of LED center 3.0mm 2 pins diameter 5.0mm z-position of LED center 3.0mm 2 pins diameter 5.0mm z-position of LED center 3.0mm 2 pins diameter 5.0mm z-position of LED center 9.0mm 2 pins diameter 5.0mm z-position of LED center 9.0mm 2 pins diameter 5.0mm z-position of LED center 9.0mm 2 pins diameter 5.0mm z-position of LED center 15.0mm 2 pins diameter 5.0mm z-position of LED center 15.0mm 2 pins diameter 5.0mm z-position of LED center 15.0mm 2 pins +0 +2 +2 +LED_THT +LED_D5.0mm_IRBlack +LED, diameter 5.0mm, 2 pins, http://cdn-reichelt.de/documents/datenblatt/A500/LL-504BC2E-009.pdf +LED diameter 5.0mm 2 pins +0 +2 +2 +LED_THT +LED_D5.0mm_IRGrey +LED, diameter 5.0mm, 2 pins, http://cdn-reichelt.de/documents/datenblatt/A500/LL-504BC2E-009.pdf +LED diameter 5.0mm 2 pins +0 +2 +2 +LED_THT +LED_D8.0mm +LED, diameter 8.0mm, 2 pins, http://cdn-reichelt.de/documents/datenblatt/A500/LED8MMGE_LED8MMGN_LED8MMRT%23KIN.pdf +LED diameter 8.0mm 2 pins +0 +2 +2 +LED_THT +LED_D8.0mm-3 +LED, diameter 8.0mm, 2 pins, diameter 8.0mm, 3 pins +LED diameter 8.0mm 2 pins diameter 8.0mm 3 pins +0 +3 +3 +LED_THT +LED_D10.0mm +LED, diameter 10.0mm, 2 pins, http://cdn-reichelt.de/documents/datenblatt/A500/LED10-4500RT%23KIN.pdf +LED diameter 10.0mm 2 pins +0 +2 +2 +LED_THT +LED_D10.0mm-3 +LED, diameter 10.0mm, 2 pins, diameter 10.0mm, 3 pins, http://www.kingbright.com/attachments/file/psearch/000/00/00/L-819EGW(Ver.14A).pdf +LED diameter 10.0mm 2 pins diameter 10.0mm 3 pins +0 +3 +3 +LED_THT +LED_D20.0mm +LED, diameter 20.0mm, 2 pins, http://cdn-reichelt.de/documents/datenblatt/A500/DLC2-6GD%28V6%29.pdf +LED diameter 20.0mm 2 pins +0 +2 +2 +LED_THT +LED_Oval_W5.2mm_H3.8mm +LED_Oval, Oval, Oval size 5.2x3.8mm^2, 2 pins, http://www.kingbright.com/attachments/file/psearch/000/00/00/L-5603QBC-D(Ver.12B).pdf +LED_Oval Oval Oval size 5.2x3.8mm^2 2 pins +0 +2 +2 +LED_THT +LED_Rectangular_W3.0mm_H2.0mm +LED_Rectangular, Rectangular, Rectangular size 3.0x2.0mm^2, 2 pins, http://www.kingbright.com/attachments/file/psearch/000/00/00/L-169XCGDK(Ver.9B).pdf +LED_Rectangular Rectangular Rectangular size 3.0x2.0mm^2 2 pins +0 +2 +2 +LED_THT +LED_Rectangular_W3.9mm_H1.8mm +LED_Rectangular, Rectangular, Rectangular size 3.9x1.8mm^2, 2 pins, http://www.kingbright.com/attachments/file/psearch/000/00/00/L-2774GD(Ver.7B).pdf +LED_Rectangular Rectangular Rectangular size 3.9x1.8mm^2 2 pins +0 +2 +2 +LED_THT +LED_Rectangular_W3.9mm_H1.8mm_FlatTop +LED_Rectangular, Rectangular, Rectangular size 3.9x1.8mm^2, 2 pins, http://www.kingbright.com/attachments/file/psearch/000/00/00/L-2774GD(Ver.7B).pdf +LED_Rectangular Rectangular Rectangular size 3.9x1.8mm^2 2 pins +0 +2 +2 +LED_THT +LED_Rectangular_W3.9mm_H1.9mm +LED_Rectangular, Rectangular, Rectangular size 3.9x1.9mm^2, 2 pins, http://www.kingbright.com/attachments/file/psearch/000/00/00/L-144GDT(Ver.14B).pdf +LED_Rectangular Rectangular Rectangular size 3.9x1.9mm^2 2 pins +0 +2 +2 +LED_THT +LED_Rectangular_W5.0mm_H2.0mm +LED_Rectangular, Rectangular, Rectangular size 5.0x2.0mm^2, 2 pins, http://www.kingbright.com/attachments/file/psearch/000/00/00/L-169XCGDK(Ver.9B).pdf +LED_Rectangular Rectangular Rectangular size 5.0x2.0mm^2 2 pins +0 +2 +2 +LED_THT +LED_Rectangular_W5.0mm_H2.0mm-3Pins +LED_Rectangular, Rectangular, Rectangular size 5.0x2.0mm^2, 3 pins, http://www.kingbright.com/attachments/file/psearch/000/00/00/L-169XCGDK(Ver.9B).pdf +LED_Rectangular Rectangular Rectangular size 5.0x2.0mm^2 3 pins +0 +3 +3 +LED_THT +LED_Rectangular_W5.0mm_H2.0mm_Horizontal_O1.27mm_Z1.0mm +LED_Rectangular, Rectangular, Rectangular size 5.0x2.0mm^2 z-position of LED center 1.0mm, 2 pins +LED_Rectangular Rectangular Rectangular size 5.0x2.0mm^2 z-position of LED center 1.0mm 2 pins +0 +2 +2 +LED_THT +LED_Rectangular_W5.0mm_H2.0mm_Horizontal_O1.27mm_Z3.0mm +LED_Rectangular, Rectangular, Rectangular size 5.0x2.0mm^2 z-position of LED center 1.0mm, 2 pins, Rectangular size 5.0x2.0mm^2 z-position of LED center 1.0mm, 2 pins, Rectangular size 5.0x2.0mm^2 z-position of LED center 1.0mm, 2 pins, Rectangular size 5.0x2.0mm^2 z-position of LED center 3.0mm, 2 pins +LED_Rectangular Rectangular Rectangular size 5.0x2.0mm^2 z-position of LED center 1.0mm 2 pins Rectangular size 5.0x2.0mm^2 z-position of LED center 1.0mm 2 pins Rectangular size 5.0x2.0mm^2 z-position of LED center 1.0mm 2 pins Rectangular size 5.0x2.0mm^2 z-position of LED center 3.0mm 2 pins +0 +2 +2 +LED_THT +LED_Rectangular_W5.0mm_H2.0mm_Horizontal_O1.27mm_Z5.0mm +LED_Rectangular, Rectangular, Rectangular size 5.0x2.0mm^2 z-position of LED center 1.0mm, 2 pins, Rectangular size 5.0x2.0mm^2 z-position of LED center 1.0mm, 2 pins, Rectangular size 5.0x2.0mm^2 z-position of LED center 1.0mm, 2 pins, Rectangular size 5.0x2.0mm^2 z-position of LED center 3.0mm, 2 pins, Rectangular size 5.0x2.0mm^2 z-position of LED center 3.0mm, 2 pins, Rectangular size 5.0x2.0mm^2 z-position of LED center 3.0mm, 2 pins, Rectangular size 5.0x2.0mm^2 z-position of LED center 5.0mm, 2 pins +LED_Rectangular Rectangular Rectangular size 5.0x2.0mm^2 z-position of LED center 1.0mm 2 pins Rectangular size 5.0x2.0mm^2 z-position of LED center 1.0mm 2 pins Rectangular size 5.0x2.0mm^2 z-position of LED center 1.0mm 2 pins Rectangular size 5.0x2.0mm^2 z-position of LED center 3.0mm 2 pins Rectangular size 5.0x2.0mm^2 z-position of LED center 3.0mm 2 pins Rectangular size 5.0x2.0mm^2 z-position of LED center 3.0mm 2 pins Rectangular size 5.0x2.0mm^2 z-position of LED center 5.0mm 2 pins +0 +2 +2 +LED_THT +LED_Rectangular_W5.0mm_H2.0mm_Horizontal_O3.81mm_Z1.0mm +LED_Rectangular, Rectangular, Rectangular size 5.0x2.0mm^2 z-position of LED center 1.0mm, 2 pins, Rectangular size 5.0x2.0mm^2 z-position of LED center 1.0mm, 2 pins +LED_Rectangular Rectangular Rectangular size 5.0x2.0mm^2 z-position of LED center 1.0mm 2 pins Rectangular size 5.0x2.0mm^2 z-position of LED center 1.0mm 2 pins +0 +2 +2 +LED_THT +LED_Rectangular_W5.0mm_H2.0mm_Horizontal_O3.81mm_Z3.0mm +LED_Rectangular, Rectangular, Rectangular size 5.0x2.0mm^2 z-position of LED center 1.0mm, 2 pins, Rectangular size 5.0x2.0mm^2 z-position of LED center 1.0mm, 2 pins, Rectangular size 5.0x2.0mm^2 z-position of LED center 1.0mm, 2 pins, Rectangular size 5.0x2.0mm^2 z-position of LED center 3.0mm, 2 pins, Rectangular size 5.0x2.0mm^2 z-position of LED center 3.0mm, 2 pins +LED_Rectangular Rectangular Rectangular size 5.0x2.0mm^2 z-position of LED center 1.0mm 2 pins Rectangular size 5.0x2.0mm^2 z-position of LED center 1.0mm 2 pins Rectangular size 5.0x2.0mm^2 z-position of LED center 1.0mm 2 pins Rectangular size 5.0x2.0mm^2 z-position of LED center 3.0mm 2 pins Rectangular size 5.0x2.0mm^2 z-position of LED center 3.0mm 2 pins +0 +2 +2 +LED_THT +LED_Rectangular_W5.0mm_H2.0mm_Horizontal_O3.81mm_Z5.0mm +LED_Rectangular, Rectangular, Rectangular size 5.0x2.0mm^2 z-position of LED center 1.0mm, 2 pins, Rectangular size 5.0x2.0mm^2 z-position of LED center 1.0mm, 2 pins, Rectangular size 5.0x2.0mm^2 z-position of LED center 1.0mm, 2 pins, Rectangular size 5.0x2.0mm^2 z-position of LED center 3.0mm, 2 pins, Rectangular size 5.0x2.0mm^2 z-position of LED center 3.0mm, 2 pins, Rectangular size 5.0x2.0mm^2 z-position of LED center 3.0mm, 2 pins, Rectangular size 5.0x2.0mm^2 z-position of LED center 5.0mm, 2 pins, Rectangular size 5.0x2.0mm^2 z-position of LED center 5.0mm, 2 pins +LED_Rectangular Rectangular Rectangular size 5.0x2.0mm^2 z-position of LED center 1.0mm 2 pins Rectangular size 5.0x2.0mm^2 z-position of LED center 1.0mm 2 pins Rectangular size 5.0x2.0mm^2 z-position of LED center 1.0mm 2 pins Rectangular size 5.0x2.0mm^2 z-position of LED center 3.0mm 2 pins Rectangular size 5.0x2.0mm^2 z-position of LED center 3.0mm 2 pins Rectangular size 5.0x2.0mm^2 z-position of LED center 3.0mm 2 pins Rectangular size 5.0x2.0mm^2 z-position of LED center 5.0mm 2 pins Rectangular size 5.0x2.0mm^2 z-position of LED center 5.0mm 2 pins +0 +2 +2 +LED_THT +LED_Rectangular_W5.0mm_H2.0mm_Horizontal_O6.35mm_Z1.0mm +LED_Rectangular, Rectangular, Rectangular size 5.0x2.0mm^2 z-position of LED center 1.0mm, 2 pins, Rectangular size 5.0x2.0mm^2 z-position of LED center 1.0mm, 2 pins, Rectangular size 5.0x2.0mm^2 z-position of LED center 1.0mm, 2 pins +LED_Rectangular Rectangular Rectangular size 5.0x2.0mm^2 z-position of LED center 1.0mm 2 pins Rectangular size 5.0x2.0mm^2 z-position of LED center 1.0mm 2 pins Rectangular size 5.0x2.0mm^2 z-position of LED center 1.0mm 2 pins +0 +2 +2 +LED_THT +LED_Rectangular_W5.0mm_H2.0mm_Horizontal_O6.35mm_Z3.0mm +LED_Rectangular, Rectangular, Rectangular size 5.0x2.0mm^2 z-position of LED center 1.0mm, 2 pins, Rectangular size 5.0x2.0mm^2 z-position of LED center 1.0mm, 2 pins, Rectangular size 5.0x2.0mm^2 z-position of LED center 1.0mm, 2 pins, Rectangular size 5.0x2.0mm^2 z-position of LED center 3.0mm, 2 pins, Rectangular size 5.0x2.0mm^2 z-position of LED center 3.0mm, 2 pins, Rectangular size 5.0x2.0mm^2 z-position of LED center 3.0mm, 2 pins +LED_Rectangular Rectangular Rectangular size 5.0x2.0mm^2 z-position of LED center 1.0mm 2 pins Rectangular size 5.0x2.0mm^2 z-position of LED center 1.0mm 2 pins Rectangular size 5.0x2.0mm^2 z-position of LED center 1.0mm 2 pins Rectangular size 5.0x2.0mm^2 z-position of LED center 3.0mm 2 pins Rectangular size 5.0x2.0mm^2 z-position of LED center 3.0mm 2 pins Rectangular size 5.0x2.0mm^2 z-position of LED center 3.0mm 2 pins +0 +2 +2 +LED_THT +LED_Rectangular_W5.0mm_H2.0mm_Horizontal_O6.35mm_Z5.0mm +LED_Rectangular, Rectangular, Rectangular size 5.0x2.0mm^2 z-position of LED center 1.0mm, 2 pins, Rectangular size 5.0x2.0mm^2 z-position of LED center 1.0mm, 2 pins, Rectangular size 5.0x2.0mm^2 z-position of LED center 1.0mm, 2 pins, Rectangular size 5.0x2.0mm^2 z-position of LED center 3.0mm, 2 pins, Rectangular size 5.0x2.0mm^2 z-position of LED center 3.0mm, 2 pins, Rectangular size 5.0x2.0mm^2 z-position of LED center 3.0mm, 2 pins, Rectangular size 5.0x2.0mm^2 z-position of LED center 5.0mm, 2 pins, Rectangular size 5.0x2.0mm^2 z-position of LED center 5.0mm, 2 pins, Rectangular size 5.0x2.0mm^2 z-position of LED center 5.0mm, 2 pins +LED_Rectangular Rectangular Rectangular size 5.0x2.0mm^2 z-position of LED center 1.0mm 2 pins Rectangular size 5.0x2.0mm^2 z-position of LED center 1.0mm 2 pins Rectangular size 5.0x2.0mm^2 z-position of LED center 1.0mm 2 pins Rectangular size 5.0x2.0mm^2 z-position of LED center 3.0mm 2 pins Rectangular size 5.0x2.0mm^2 z-position of LED center 3.0mm 2 pins Rectangular size 5.0x2.0mm^2 z-position of LED center 3.0mm 2 pins Rectangular size 5.0x2.0mm^2 z-position of LED center 5.0mm 2 pins Rectangular size 5.0x2.0mm^2 z-position of LED center 5.0mm 2 pins Rectangular size 5.0x2.0mm^2 z-position of LED center 5.0mm 2 pins +0 +2 +2 +LED_THT +LED_Rectangular_W5.0mm_H5.0mm +LED_Rectangular, Rectangular, Rectangular size 5.0x5.0mm^2, 2 pins, http://www.kingbright.com/attachments/file/psearch/000/00/00/L-169XCGDK(Ver.9B).pdf +LED_Rectangular Rectangular Rectangular size 5.0x5.0mm^2 2 pins +0 +2 +2 +LED_THT +LED_Rectangular_W7.62mm_H4.55mm_P5.08mm_R3 +Datasheet can be found at https://www.gme.cz/data/attachments/dsh.511-795.1.pdf +LED automotive super flux 7.62mm +0 +4 +2 +LED_THT +LED_SideEmitter_Rectangular_W4.5mm_H1.6mm +LED_SideEmitter_Rectangular, Rectangular, SideEmitter, Rectangular size 4.5x1.6mm^2, 2 pins, http://cdn-reichelt.de/documents/datenblatt/A500/LED15MMGE_LED15MMGN%23KIN.pdf +LED_SideEmitter_Rectangular Rectangular SideEmitter Rectangular size 4.5x1.6mm^2 2 pins +0 +2 +2 +LED_THT +LED_VCCLite_5381H1_6.35x6.35mm +Red 5381 Series LED VCCLite https://vcclite.com/wp-content/uploads/wpallimport/files/files/5381Series.pdf http://static.vcclite.com/pdf/Mounting%20Hole%20Pattern%202.pdf +Red 5381 Series LED +0 +2 +2 +LED_THT +LED_VCCLite_5381H3_6.35x6.35mm +Amber 5381 Series LED VCCLite https://vcclite.com/wp-content/uploads/wpallimport/files/files/5381Series.pdf http://static.vcclite.com/pdf/Mounting%20Hole%20Pattern%202.pdf +Amber 5381 Series LED +0 +2 +2 +LED_THT +LED_VCCLite_5381H5_6.35x6.35mm +Green 5381 Series LED VCCLite https://vcclite.com/wp-content/uploads/wpallimport/files/files/5381Series.pdf http://static.vcclite.com/pdf/Mounting%20Hole%20Pattern%202.pdf +Green 5381 Series LED +0 +2 +2 +LED_THT +LED_VCCLite_5381H7_6.35x6.35mm +Yellow 5381 Series LED VCCLite https://vcclite.com/wp-content/uploads/wpallimport/files/files/5381Series.pdf http://static.vcclite.com/pdf/Mounting%20Hole%20Pattern%202.pdf +Yellow 5381 Series LED +0 +2 +2 +Module +A20_OLINUXINO_LIME2 +A20 Olinuxino LIME2, 1.2GHz, 512-1024MB RAM, Micro-SD, NAND or eMMC, 1000Mbit Ethernet +A20 Olimex Olinuxino LIME2 development board +0 +180 +180 +Module +Adafruit_HUZZAH_ESP8266_breakout +32-bit microcontroller module with WiFi, https://www.adafruit.com/product/2471 +ESP8266 WiFi microcontroller +0 +20 +20 +Module +Adafruit_HUZZAH_ESP8266_breakout_WithMountingHoles +32-bit microcontroller module with WiFi, https://www.adafruit.com/product/2471 +ESP8266 WiFi microcontroller +0 +20 +20 +Module +Arduino_Nano +Arduino Nano, http://www.mouser.com/pdfdocs/Gravitech_Arduino_Nano3_0.pdf +Arduino Nano +0 +30 +30 +Module +Arduino_Nano_WithMountingHoles +Arduino Nano, http://www.mouser.com/pdfdocs/Gravitech_Arduino_Nano3_0.pdf +Arduino Nano +0 +30 +30 +Module +Arduino_UNO_R2 +Arduino UNO R2, http://www.mouser.com/pdfdocs/Gravitech_Arduino_Nano3_0.pdf +Arduino UNO R2 +0 +30 +30 +Module +Arduino_UNO_R2_WithMountingHoles +Arduino UNO R2, http://www.mouser.com/pdfdocs/Gravitech_Arduino_Nano3_0.pdf +Arduino UNO R2 +0 +30 +30 +Module +Arduino_UNO_R3 +Arduino UNO R3, http://www.mouser.com/pdfdocs/Gravitech_Arduino_Nano3_0.pdf +Arduino UNO R3 +0 +32 +32 +Module +Arduino_UNO_R3_WithMountingHoles +Arduino UNO R3, http://www.mouser.com/pdfdocs/Gravitech_Arduino_Nano3_0.pdf +Arduino UNO R3 +0 +32 +32 +Module +BeagleBoard_PocketBeagle +PocketBeagle, https://github.com/beagleboard/pocketbeagle/wiki/System-Reference-Manual#71_Expansion_Header_Connectors +PocketBeagle +0 +72 +72 +Module +Maple_Mini +Maple Mini, http://docs.leaflabs.com/static.leaflabs.com/pub/leaflabs/maple-docs/0.0.12/hardware/maple-mini.html +Maple Mini +0 +40 +40 +Module +Onion_Omega2+ +https://onion.io/omega2/ +Omega Onion module +0 +32 +32 +Module +Onion_Omega2S +https://github.com/OnionIoT/Omega2/raw/master/Documents/Omega2S%20Datasheet.pdf +onion omega module +0 +89 +64 +Module +Pololu_Breakout-16_15.2x20.3mm +Pololu Breakout 16-pin 15.2x20.3mm 0.6x0.8\ +Pololu Breakout +0 +16 +16 +Module +Raspberry_Pi_Zero_Socketed_THT_FaceDown_MountingHoles +Raspberry Pi Zero using through hole straight pin socket, 2x20, 2.54mm pitch, https://www.raspberrypi.org/documentation/hardware/raspberrypi/mechanical/rpi_MECH_Zero_1p2.pdf +raspberry pi zero through hole +0 +40 +40 +Module +ST_Morpho_Connector_144_STLink +ST Morpho Connector 144 With STLink +ST Morpho Connector 144 STLink +0 +148 +148 +Module +ST_Morpho_Connector_144_STLink_MountingHoles +ST Morpho Connector 144 With STLink +ST Morpho Connector 144 STLink +0 +148 +148 +Module +Texas_EUK_R-PDSS-T7_THT +Texas Instruments EUK 7 Pin Double Sided Module +module pcb +0 +7 +7 +Module +Texas_EUS_R-PDSS-T5_THT +Texas Instruments EUS 5 Pin Double Sided Module +module pcb +0 +5 +5 +Module +Texas_EUW_R-PDSS-T7_THT +Texas Instruments EUW 7 Pin Double Sided Module +module pcb +0 +7 +7 +Module +WEMOS_D1_mini_light +16-pin module, column spacing 22.86 mm (900 mils), https://wiki.wemos.cc/products:d1:d1_mini, https://c1.staticflickr.com/1/734/31400410271_f278b087db_z.jpg +ESP8266 WiFi microcontroller +0 +16 +16 +MountingEquipment +DINRailAdapter_3xM3_PhoenixContact_1201578 +https://www.phoenixcontact.com/online/portal/us?uri=pxc-oc-itemdetail:pid=1201578&library=usen&tab=1 +DIN rail adapter universal three M3 clearance holes +0 +0 +0 +MountingHole +MountingHole_2.1mm +Mounting Hole 2.1mm, no annular +mounting hole 2.1mm no annular +0 +0 +0 +MountingHole +MountingHole_2.2mm_M2 +Mounting Hole 2.2mm, no annular, M2 +mounting hole 2.2mm no annular m2 +0 +0 +0 +MountingHole +MountingHole_2.2mm_M2_DIN965 +Mounting Hole 2.2mm, no annular, M2, DIN965 +mounting hole 2.2mm no annular m2 din965 +0 +0 +0 +MountingHole +MountingHole_2.2mm_M2_DIN965_Pad +Mounting Hole 2.2mm, M2, DIN965 +mounting hole 2.2mm m2 din965 +0 +1 +1 +MountingHole +MountingHole_2.2mm_M2_DIN965_Pad_TopBottom +Mounting Hole 2.2mm, M2, DIN965 +mounting hole 2.2mm m2 din965 +0 +3 +1 +MountingHole +MountingHole_2.2mm_M2_DIN965_Pad_TopOnly +Mounting Hole 2.2mm, M2, DIN965 +mounting hole 2.2mm m2 din965 +0 +2 +1 +MountingHole +MountingHole_2.2mm_M2_ISO7380 +Mounting Hole 2.2mm, no annular, M2, ISO7380 +mounting hole 2.2mm no annular m2 iso7380 +0 +0 +0 +MountingHole +MountingHole_2.2mm_M2_ISO7380_Pad +Mounting Hole 2.2mm, M2, ISO7380 +mounting hole 2.2mm m2 iso7380 +0 +1 +1 +MountingHole +MountingHole_2.2mm_M2_ISO7380_Pad_TopBottom +Mounting Hole 2.2mm, M2, ISO7380 +mounting hole 2.2mm m2 iso7380 +0 +3 +1 +MountingHole +MountingHole_2.2mm_M2_ISO7380_Pad_TopOnly +Mounting Hole 2.2mm, M2, ISO7380 +mounting hole 2.2mm m2 iso7380 +0 +2 +1 +MountingHole +MountingHole_2.2mm_M2_ISO14580 +Mounting Hole 2.2mm, no annular, M2, ISO14580 +mounting hole 2.2mm no annular m2 iso14580 +0 +0 +0 +MountingHole +MountingHole_2.2mm_M2_ISO14580_Pad +Mounting Hole 2.2mm, M2, ISO14580 +mounting hole 2.2mm m2 iso14580 +0 +1 +1 +MountingHole +MountingHole_2.2mm_M2_ISO14580_Pad_TopBottom +Mounting Hole 2.2mm, M2, ISO14580 +mounting hole 2.2mm m2 iso14580 +0 +3 +1 +MountingHole +MountingHole_2.2mm_M2_ISO14580_Pad_TopOnly +Mounting Hole 2.2mm, M2, ISO14580 +mounting hole 2.2mm m2 iso14580 +0 +2 +1 +MountingHole +MountingHole_2.2mm_M2_Pad +Mounting Hole 2.2mm, M2 +mounting hole 2.2mm m2 +0 +1 +1 +MountingHole +MountingHole_2.2mm_M2_Pad_TopBottom +Mounting Hole 2.2mm, M2 +mounting hole 2.2mm m2 +0 +3 +1 +MountingHole +MountingHole_2.2mm_M2_Pad_TopOnly +Mounting Hole 2.2mm, M2 +mounting hole 2.2mm m2 +0 +2 +1 +MountingHole +MountingHole_2.2mm_M2_Pad_Via +Mounting Hole 2.2mm, M2 +mounting hole 2.2mm m2 +0 +9 +1 +MountingHole +MountingHole_2.5mm +Mounting Hole 2.5mm, no annular +mounting hole 2.5mm no annular +0 +0 +0 +MountingHole +MountingHole_2.5mm_Pad +Mounting Hole 2.5mm +mounting hole 2.5mm +0 +1 +1 +MountingHole +MountingHole_2.5mm_Pad_TopBottom +Mounting Hole 2.5mm +mounting hole 2.5mm +0 +3 +1 +MountingHole +MountingHole_2.5mm_Pad_TopOnly +Mounting Hole 2.5mm +mounting hole 2.5mm +0 +2 +1 +MountingHole +MountingHole_2.5mm_Pad_Via +Mounting Hole 2.5mm +mounting hole 2.5mm +0 +9 +1 +MountingHole +MountingHole_2.7mm +Mounting Hole 2.7mm, no annular +mounting hole 2.7mm no annular +0 +0 +0 +MountingHole +MountingHole_2.7mm_M2.5 +Mounting Hole 2.7mm, no annular, M2.5 +mounting hole 2.7mm no annular m2.5 +0 +0 +0 +MountingHole +MountingHole_2.7mm_M2.5_DIN965 +Mounting Hole 2.7mm, no annular, M2.5, DIN965 +mounting hole 2.7mm no annular m2.5 din965 +0 +0 +0 +MountingHole +MountingHole_2.7mm_M2.5_DIN965_Pad +Mounting Hole 2.7mm, M2.5, DIN965 +mounting hole 2.7mm m2.5 din965 +0 +1 +1 +MountingHole +MountingHole_2.7mm_M2.5_DIN965_Pad_TopBottom +Mounting Hole 2.7mm, M2.5, DIN965 +mounting hole 2.7mm m2.5 din965 +0 +3 +1 +MountingHole +MountingHole_2.7mm_M2.5_DIN965_Pad_TopOnly +Mounting Hole 2.7mm, M2.5, DIN965 +mounting hole 2.7mm m2.5 din965 +0 +2 +1 +MountingHole +MountingHole_2.7mm_M2.5_ISO7380 +Mounting Hole 2.7mm, no annular, M2.5, ISO7380 +mounting hole 2.7mm no annular m2.5 iso7380 +0 +0 +0 +MountingHole +MountingHole_2.7mm_M2.5_ISO7380_Pad +Mounting Hole 2.7mm, M2.5, ISO7380 +mounting hole 2.7mm m2.5 iso7380 +0 +1 +1 +MountingHole +MountingHole_2.7mm_M2.5_ISO7380_Pad_TopBottom +Mounting Hole 2.7mm, M2.5, ISO7380 +mounting hole 2.7mm m2.5 iso7380 +0 +3 +1 +MountingHole +MountingHole_2.7mm_M2.5_ISO7380_Pad_TopOnly +Mounting Hole 2.7mm, M2.5, ISO7380 +mounting hole 2.7mm m2.5 iso7380 +0 +2 +1 +MountingHole +MountingHole_2.7mm_M2.5_ISO14580 +Mounting Hole 2.7mm, no annular, M2.5, ISO14580 +mounting hole 2.7mm no annular m2.5 iso14580 +0 +0 +0 +MountingHole +MountingHole_2.7mm_M2.5_ISO14580_Pad +Mounting Hole 2.7mm, M2.5, ISO14580 +mounting hole 2.7mm m2.5 iso14580 +0 +1 +1 +MountingHole +MountingHole_2.7mm_M2.5_ISO14580_Pad_TopBottom +Mounting Hole 2.7mm, M2.5, ISO14580 +mounting hole 2.7mm m2.5 iso14580 +0 +3 +1 +MountingHole +MountingHole_2.7mm_M2.5_ISO14580_Pad_TopOnly +Mounting Hole 2.7mm, M2.5, ISO14580 +mounting hole 2.7mm m2.5 iso14580 +0 +2 +1 +MountingHole +MountingHole_2.7mm_M2.5_Pad +Mounting Hole 2.7mm, M2.5 +mounting hole 2.7mm m2.5 +0 +1 +1 +MountingHole +MountingHole_2.7mm_M2.5_Pad_TopBottom +Mounting Hole 2.7mm, M2.5 +mounting hole 2.7mm m2.5 +0 +3 +1 +MountingHole +MountingHole_2.7mm_M2.5_Pad_TopOnly +Mounting Hole 2.7mm, M2.5 +mounting hole 2.7mm m2.5 +0 +2 +1 +MountingHole +MountingHole_2.7mm_M2.5_Pad_Via +Mounting Hole 2.7mm +mounting hole 2.7mm +0 +9 +1 +MountingHole +MountingHole_2.7mm_Pad +Mounting Hole 2.7mm +mounting hole 2.7mm +0 +1 +1 +MountingHole +MountingHole_2.7mm_Pad_TopBottom +Mounting Hole 2.7mm +mounting hole 2.7mm +0 +3 +1 +MountingHole +MountingHole_2.7mm_Pad_TopOnly +Mounting Hole 2.7mm +mounting hole 2.7mm +0 +2 +1 +MountingHole +MountingHole_2.7mm_Pad_Via +Mounting Hole 2.7mm +mounting hole 2.7mm +0 +9 +1 +MountingHole +MountingHole_2mm +Mounting Hole 2mm, no annular +mounting hole 2mm no annular +0 +0 +0 +MountingHole +MountingHole_3.2mm_M3 +Mounting Hole 3.2mm, no annular, M3 +mounting hole 3.2mm no annular m3 +0 +0 +0 +MountingHole +MountingHole_3.2mm_M3_DIN965 +Mounting Hole 3.2mm, no annular, M3, DIN965 +mounting hole 3.2mm no annular m3 din965 +0 +0 +0 +MountingHole +MountingHole_3.2mm_M3_DIN965_Pad +Mounting Hole 3.2mm, M3, DIN965 +mounting hole 3.2mm m3 din965 +0 +1 +1 +MountingHole +MountingHole_3.2mm_M3_DIN965_Pad_TopBottom +Mounting Hole 3.2mm, M3, DIN965 +mounting hole 3.2mm m3 din965 +0 +3 +1 +MountingHole +MountingHole_3.2mm_M3_DIN965_Pad_TopOnly +Mounting Hole 3.2mm, M3, DIN965 +mounting hole 3.2mm m3 din965 +0 +2 +1 +MountingHole +MountingHole_3.2mm_M3_ISO7380 +Mounting Hole 3.2mm, no annular, M3, ISO7380 +mounting hole 3.2mm no annular m3 iso7380 +0 +0 +0 +MountingHole +MountingHole_3.2mm_M3_ISO7380_Pad +Mounting Hole 3.2mm, M3, ISO7380 +mounting hole 3.2mm m3 iso7380 +0 +1 +1 +MountingHole +MountingHole_3.2mm_M3_ISO7380_Pad_TopBottom +Mounting Hole 3.2mm, M3, ISO7380 +mounting hole 3.2mm m3 iso7380 +0 +3 +1 +MountingHole +MountingHole_3.2mm_M3_ISO7380_Pad_TopOnly +Mounting Hole 3.2mm, M3, ISO7380 +mounting hole 3.2mm m3 iso7380 +0 +2 +1 +MountingHole +MountingHole_3.2mm_M3_ISO14580 +Mounting Hole 3.2mm, no annular, M3, ISO14580 +mounting hole 3.2mm no annular m3 iso14580 +0 +0 +0 +MountingHole +MountingHole_3.2mm_M3_ISO14580_Pad +Mounting Hole 3.2mm, M3, ISO14580 +mounting hole 3.2mm m3 iso14580 +0 +1 +1 +MountingHole +MountingHole_3.2mm_M3_ISO14580_Pad_TopBottom +Mounting Hole 3.2mm, M3, ISO14580 +mounting hole 3.2mm m3 iso14580 +0 +3 +1 +MountingHole +MountingHole_3.2mm_M3_ISO14580_Pad_TopOnly +Mounting Hole 3.2mm, M3, ISO14580 +mounting hole 3.2mm m3 iso14580 +0 +2 +1 +MountingHole +MountingHole_3.2mm_M3_Pad +Mounting Hole 3.2mm, M3 +mounting hole 3.2mm m3 +0 +1 +1 +MountingHole +MountingHole_3.2mm_M3_Pad_TopBottom +Mounting Hole 3.2mm, M3 +mounting hole 3.2mm m3 +0 +3 +1 +MountingHole +MountingHole_3.2mm_M3_Pad_TopOnly +Mounting Hole 3.2mm, M3 +mounting hole 3.2mm m3 +0 +2 +1 +MountingHole +MountingHole_3.2mm_M3_Pad_Via +Mounting Hole 3.2mm, M3 +mounting hole 3.2mm m3 +0 +9 +1 +MountingHole +MountingHole_3.5mm +Mounting Hole 3.5mm, no annular +mounting hole 3.5mm no annular +0 +0 +0 +MountingHole +MountingHole_3.5mm_Pad +Mounting Hole 3.5mm +mounting hole 3.5mm +0 +1 +1 +MountingHole +MountingHole_3.5mm_Pad_TopBottom +Mounting Hole 3.5mm +mounting hole 3.5mm +0 +3 +1 +MountingHole +MountingHole_3.5mm_Pad_TopOnly +Mounting Hole 3.5mm +mounting hole 3.5mm +0 +2 +1 +MountingHole +MountingHole_3.5mm_Pad_Via +Mounting Hole 3.5mm +mounting hole 3.5mm +0 +9 +1 +MountingHole +MountingHole_3.7mm +Mounting Hole 3.7mm, no annular +mounting hole 3.7mm no annular +0 +0 +0 +MountingHole +MountingHole_3.7mm_Pad +Mounting Hole 3.7mm +mounting hole 3.7mm +0 +1 +1 +MountingHole +MountingHole_3.7mm_Pad_TopBottom +Mounting Hole 3.7mm +mounting hole 3.7mm +0 +3 +1 +MountingHole +MountingHole_3.7mm_Pad_TopOnly +Mounting Hole 3.7mm +mounting hole 3.7mm +0 +2 +1 +MountingHole +MountingHole_3.7mm_Pad_Via +Mounting Hole 3.7mm +mounting hole 3.7mm +0 +9 +1 +MountingHole +MountingHole_3mm +Mounting Hole 3mm, no annular +mounting hole 3mm no annular +0 +0 +0 +MountingHole +MountingHole_3mm_Pad +Mounting Hole 3mm +mounting hole 3mm +0 +1 +1 +MountingHole +MountingHole_3mm_Pad_TopBottom +Mounting Hole 3mm +mounting hole 3mm +0 +3 +1 +MountingHole +MountingHole_3mm_Pad_TopOnly +Mounting Hole 3mm +mounting hole 3mm +0 +2 +1 +MountingHole +MountingHole_3mm_Pad_Via +Mounting Hole 3mm +mounting hole 3mm +0 +9 +1 +MountingHole +MountingHole_4.3mm_M4 +Mounting Hole 4.3mm, no annular, M4 +mounting hole 4.3mm no annular m4 +0 +0 +0 +MountingHole +MountingHole_4.3mm_M4_DIN965 +Mounting Hole 4.3mm, no annular, M4, DIN965 +mounting hole 4.3mm no annular m4 din965 +0 +0 +0 +MountingHole +MountingHole_4.3mm_M4_DIN965_Pad +Mounting Hole 4.3mm, M4, DIN965 +mounting hole 4.3mm m4 din965 +0 +1 +1 +MountingHole +MountingHole_4.3mm_M4_DIN965_Pad_TopBottom +Mounting Hole 4.3mm, M4, DIN965 +mounting hole 4.3mm m4 din965 +0 +3 +1 +MountingHole +MountingHole_4.3mm_M4_DIN965_Pad_TopOnly +Mounting Hole 4.3mm, M4, DIN965 +mounting hole 4.3mm m4 din965 +0 +2 +1 +MountingHole +MountingHole_4.3mm_M4_ISO7380 +Mounting Hole 4.3mm, no annular, M4, ISO7380 +mounting hole 4.3mm no annular m4 iso7380 +0 +0 +0 +MountingHole +MountingHole_4.3mm_M4_ISO7380_Pad +Mounting Hole 4.3mm, M4, ISO7380 +mounting hole 4.3mm m4 iso7380 +0 +1 +1 +MountingHole +MountingHole_4.3mm_M4_ISO7380_Pad_TopBottom +Mounting Hole 4.3mm, M4, ISO7380 +mounting hole 4.3mm m4 iso7380 +0 +3 +1 +MountingHole +MountingHole_4.3mm_M4_ISO7380_Pad_TopOnly +Mounting Hole 4.3mm, M4, ISO7380 +mounting hole 4.3mm m4 iso7380 +0 +2 +1 +MountingHole +MountingHole_4.3mm_M4_ISO14580 +Mounting Hole 4.3mm, no annular, M4, ISO14580 +mounting hole 4.3mm no annular m4 iso14580 +0 +0 +0 +MountingHole +MountingHole_4.3mm_M4_ISO14580_Pad +Mounting Hole 4.3mm, M4, ISO14580 +mounting hole 4.3mm m4 iso14580 +0 +1 +1 +MountingHole +MountingHole_4.3mm_M4_ISO14580_Pad_TopBottom +Mounting Hole 4.3mm, M4, ISO14580 +mounting hole 4.3mm m4 iso14580 +0 +3 +1 +MountingHole +MountingHole_4.3mm_M4_ISO14580_Pad_TopOnly +Mounting Hole 4.3mm, M4, ISO14580 +mounting hole 4.3mm m4 iso14580 +0 +2 +1 +MountingHole +MountingHole_4.3mm_M4_Pad +Mounting Hole 4.3mm, M4 +mounting hole 4.3mm m4 +0 +1 +1 +MountingHole +MountingHole_4.3mm_M4_Pad_TopBottom +Mounting Hole 4.3mm, M4 +mounting hole 4.3mm m4 +0 +3 +1 +MountingHole +MountingHole_4.3mm_M4_Pad_TopOnly +Mounting Hole 4.3mm, M4 +mounting hole 4.3mm m4 +0 +2 +1 +MountingHole +MountingHole_4.3mm_M4_Pad_Via +Mounting Hole 4.3mm, M4 +mounting hole 4.3mm m4 +0 +9 +1 +MountingHole +MountingHole_4.3x6.2mm_M4_Pad +Mounting Hole 4.3x6.2mm, M4 +mounting hole 4.3x6.2mm m4 +0 +1 +1 +MountingHole +MountingHole_4.3x6.2mm_M4_Pad_Via +Mounting Hole 4.3x6.2mm, M4 +mounting hole 4.3x6.2mm m4 +0 +17 +1 +MountingHole +MountingHole_4.5mm +Mounting Hole 4.5mm, no annular +mounting hole 4.5mm no annular +0 +0 +0 +MountingHole +MountingHole_4.5mm_Pad +Mounting Hole 4.5mm +mounting hole 4.5mm +0 +1 +1 +MountingHole +MountingHole_4.5mm_Pad_TopBottom +Mounting Hole 4.5mm +mounting hole 4.5mm +0 +3 +1 +MountingHole +MountingHole_4.5mm_Pad_TopOnly +Mounting Hole 4.5mm +mounting hole 4.5mm +0 +2 +1 +MountingHole +MountingHole_4.5mm_Pad_Via +Mounting Hole 4.5mm +mounting hole 4.5mm +0 +9 +1 +MountingHole +MountingHole_4mm +Mounting Hole 4mm, no annular +mounting hole 4mm no annular +0 +0 +0 +MountingHole +MountingHole_4mm_Pad +Mounting Hole 4mm +mounting hole 4mm +0 +1 +1 +MountingHole +MountingHole_4mm_Pad_TopBottom +Mounting Hole 4mm +mounting hole 4mm +0 +3 +1 +MountingHole +MountingHole_4mm_Pad_TopOnly +Mounting Hole 4mm +mounting hole 4mm +0 +2 +1 +MountingHole +MountingHole_4mm_Pad_Via +Mounting Hole 4mm +mounting hole 4mm +0 +9 +1 +MountingHole +MountingHole_5.3mm_M5 +Mounting Hole 5.3mm, no annular, M5 +mounting hole 5.3mm no annular m5 +0 +0 +0 +MountingHole +MountingHole_5.3mm_M5_DIN965 +Mounting Hole 5.3mm, no annular, M5, DIN965 +mounting hole 5.3mm no annular m5 din965 +0 +0 +0 +MountingHole +MountingHole_5.3mm_M5_DIN965_Pad +Mounting Hole 5.3mm, M5, DIN965 +mounting hole 5.3mm m5 din965 +0 +1 +1 +MountingHole +MountingHole_5.3mm_M5_DIN965_Pad_TopBottom +Mounting Hole 5.3mm, M5, DIN965 +mounting hole 5.3mm m5 din965 +0 +3 +1 +MountingHole +MountingHole_5.3mm_M5_DIN965_Pad_TopOnly +Mounting Hole 5.3mm, M5, DIN965 +mounting hole 5.3mm m5 din965 +0 +2 +1 +MountingHole +MountingHole_5.3mm_M5_ISO7380 +Mounting Hole 5.3mm, no annular, M5, ISO7380 +mounting hole 5.3mm no annular m5 iso7380 +0 +0 +0 +MountingHole +MountingHole_5.3mm_M5_ISO7380_Pad +Mounting Hole 5.3mm, M5, ISO7380 +mounting hole 5.3mm m5 iso7380 +0 +1 +1 +MountingHole +MountingHole_5.3mm_M5_ISO7380_Pad_TopBottom +Mounting Hole 5.3mm, M5, ISO7380 +mounting hole 5.3mm m5 iso7380 +0 +3 +1 +MountingHole +MountingHole_5.3mm_M5_ISO7380_Pad_TopOnly +Mounting Hole 5.3mm, M5, ISO7380 +mounting hole 5.3mm m5 iso7380 +0 +2 +1 +MountingHole +MountingHole_5.3mm_M5_ISO14580 +Mounting Hole 5.3mm, no annular, M5, ISO14580 +mounting hole 5.3mm no annular m5 iso14580 +0 +0 +0 +MountingHole +MountingHole_5.3mm_M5_ISO14580_Pad +Mounting Hole 5.3mm, M5, ISO14580 +mounting hole 5.3mm m5 iso14580 +0 +1 +1 +MountingHole +MountingHole_5.3mm_M5_ISO14580_Pad_TopBottom +Mounting Hole 5.3mm, M5, ISO14580 +mounting hole 5.3mm m5 iso14580 +0 +3 +1 +MountingHole +MountingHole_5.3mm_M5_ISO14580_Pad_TopOnly +Mounting Hole 5.3mm, M5, ISO14580 +mounting hole 5.3mm m5 iso14580 +0 +2 +1 +MountingHole +MountingHole_5.3mm_M5_Pad +Mounting Hole 5.3mm, M5 +mounting hole 5.3mm m5 +0 +1 +1 +MountingHole +MountingHole_5.3mm_M5_Pad_TopBottom +Mounting Hole 5.3mm, M5 +mounting hole 5.3mm m5 +0 +3 +1 +MountingHole +MountingHole_5.3mm_M5_Pad_TopOnly +Mounting Hole 5.3mm, M5 +mounting hole 5.3mm m5 +0 +2 +1 +MountingHole +MountingHole_5.3mm_M5_Pad_Via +Mounting Hole 5.3mm, M5 +mounting hole 5.3mm m5 +0 +9 +1 +MountingHole +MountingHole_5.5mm +Mounting Hole 5.5mm, no annular +mounting hole 5.5mm no annular +0 +0 +0 +MountingHole +MountingHole_5.5mm_Pad +Mounting Hole 5.5mm +mounting hole 5.5mm +0 +1 +1 +MountingHole +MountingHole_5.5mm_Pad_TopBottom +Mounting Hole 5.5mm +mounting hole 5.5mm +0 +3 +1 +MountingHole +MountingHole_5.5mm_Pad_TopOnly +Mounting Hole 5.5mm +mounting hole 5.5mm +0 +2 +1 +MountingHole +MountingHole_5.5mm_Pad_Via +Mounting Hole 5.5mm +mounting hole 5.5mm +0 +9 +1 +MountingHole +MountingHole_5mm +Mounting Hole 5mm, no annular +mounting hole 5mm no annular +0 +0 +0 +MountingHole +MountingHole_5mm_Pad +Mounting Hole 5mm +mounting hole 5mm +0 +1 +1 +MountingHole +MountingHole_5mm_Pad_TopBottom +Mounting Hole 5mm +mounting hole 5mm +0 +3 +1 +MountingHole +MountingHole_5mm_Pad_TopOnly +Mounting Hole 5mm +mounting hole 5mm +0 +2 +1 +MountingHole +MountingHole_5mm_Pad_Via +Mounting Hole 5mm +mounting hole 5mm +0 +9 +1 +MountingHole +MountingHole_6.4mm_M6 +Mounting Hole 6.4mm, no annular, M6 +mounting hole 6.4mm no annular m6 +0 +0 +0 +MountingHole +MountingHole_6.4mm_M6_DIN965 +Mounting Hole 6.4mm, no annular, M6, DIN965 +mounting hole 6.4mm no annular m6 din965 +0 +0 +0 +MountingHole +MountingHole_6.4mm_M6_DIN965_Pad +Mounting Hole 6.4mm, M6, DIN965 +mounting hole 6.4mm m6 din965 +0 +1 +1 +MountingHole +MountingHole_6.4mm_M6_DIN965_Pad_TopBottom +Mounting Hole 6.4mm, M6, DIN965 +mounting hole 6.4mm m6 din965 +0 +3 +1 +MountingHole +MountingHole_6.4mm_M6_DIN965_Pad_TopOnly +Mounting Hole 6.4mm, M6, DIN965 +mounting hole 6.4mm m6 din965 +0 +2 +1 +MountingHole +MountingHole_6.4mm_M6_ISO7380 +Mounting Hole 6.4mm, no annular, M6, ISO7380 +mounting hole 6.4mm no annular m6 iso7380 +0 +0 +0 +MountingHole +MountingHole_6.4mm_M6_ISO7380_Pad +Mounting Hole 6.4mm, M6, ISO7380 +mounting hole 6.4mm m6 iso7380 +0 +1 +1 +MountingHole +MountingHole_6.4mm_M6_ISO7380_Pad_TopBottom +Mounting Hole 6.4mm, M6, ISO7380 +mounting hole 6.4mm m6 iso7380 +0 +3 +1 +MountingHole +MountingHole_6.4mm_M6_ISO7380_Pad_TopOnly +Mounting Hole 6.4mm, M6, ISO7380 +mounting hole 6.4mm m6 iso7380 +0 +2 +1 +MountingHole +MountingHole_6.4mm_M6_ISO14580 +Mounting Hole 6.4mm, no annular, M6, ISO14580 +mounting hole 6.4mm no annular m6 iso14580 +0 +0 +0 +MountingHole +MountingHole_6.4mm_M6_ISO14580_Pad +Mounting Hole 6.4mm, M6, ISO14580 +mounting hole 6.4mm m6 iso14580 +0 +1 +1 +MountingHole +MountingHole_6.4mm_M6_ISO14580_Pad_TopBottom +Mounting Hole 6.4mm, M6, ISO14580 +mounting hole 6.4mm m6 iso14580 +0 +3 +1 +MountingHole +MountingHole_6.4mm_M6_ISO14580_Pad_TopOnly +Mounting Hole 6.4mm, M6, ISO14580 +mounting hole 6.4mm m6 iso14580 +0 +2 +1 +MountingHole +MountingHole_6.4mm_M6_Pad +Mounting Hole 6.4mm, M6 +mounting hole 6.4mm m6 +0 +1 +1 +MountingHole +MountingHole_6.4mm_M6_Pad_TopBottom +Mounting Hole 6.4mm, M6 +mounting hole 6.4mm m6 +0 +3 +1 +MountingHole +MountingHole_6.4mm_M6_Pad_TopOnly +Mounting Hole 6.4mm, M6 +mounting hole 6.4mm m6 +0 +2 +1 +MountingHole +MountingHole_6.4mm_M6_Pad_Via +Mounting Hole 6.4mm, M6 +mounting hole 6.4mm m6 +0 +9 +1 +MountingHole +MountingHole_6.5mm +Mounting Hole 6.5mm, no annular +mounting hole 6.5mm no annular +0 +0 +0 +MountingHole +MountingHole_6.5mm_Pad +Mounting Hole 6.5mm +mounting hole 6.5mm +0 +1 +1 +MountingHole +MountingHole_6.5mm_Pad_TopBottom +Mounting Hole 6.5mm +mounting hole 6.5mm +0 +3 +1 +MountingHole +MountingHole_6.5mm_Pad_TopOnly +Mounting Hole 6.5mm +mounting hole 6.5mm +0 +2 +1 +MountingHole +MountingHole_6.5mm_Pad_Via +Mounting Hole 6.5mm +mounting hole 6.5mm +0 +9 +1 +MountingHole +MountingHole_6mm +Mounting Hole 6mm, no annular +mounting hole 6mm no annular +0 +0 +0 +MountingHole +MountingHole_6mm_Pad +Mounting Hole 6mm +mounting hole 6mm +0 +1 +1 +MountingHole +MountingHole_6mm_Pad_TopBottom +Mounting Hole 6mm +mounting hole 6mm +0 +3 +1 +MountingHole +MountingHole_6mm_Pad_TopOnly +Mounting Hole 6mm +mounting hole 6mm +0 +2 +1 +MountingHole +MountingHole_6mm_Pad_Via +Mounting Hole 6mm +mounting hole 6mm +0 +9 +1 +MountingHole +MountingHole_8.4mm_M8 +Mounting Hole 8.4mm, no annular, M8 +mounting hole 8.4mm no annular m8 +0 +0 +0 +MountingHole +MountingHole_8.4mm_M8_Pad +Mounting Hole 8.4mm, M8 +mounting hole 8.4mm m8 +0 +1 +1 +MountingHole +MountingHole_8.4mm_M8_Pad_TopBottom +Mounting Hole 8.4mm, M8 +mounting hole 8.4mm m8 +0 +3 +1 +MountingHole +MountingHole_8.4mm_M8_Pad_TopOnly +Mounting Hole 8.4mm, M8 +mounting hole 8.4mm m8 +0 +2 +1 +MountingHole +MountingHole_8.4mm_M8_Pad_Via +Mounting Hole 8.4mm, M8 +mounting hole 8.4mm m8 +0 +9 +1 +NetTie +NetTie-2_SMD_Pad0.5mm +Net tie, 2 pin, 0.5mm square SMD pads +net tie +0 +2 +2 +NetTie +NetTie-2_SMD_Pad2.0mm +Net tie, 2 pin, 2.0mm square SMD pads +net tie +0 +2 +2 +NetTie +NetTie-2_THT_Pad0.3mm +Net tie, 2 pin, 0.3mm round THT pads +net tie +0 +2 +2 +NetTie +NetTie-2_THT_Pad1.0mm +Net tie, 2 pin, 1.0mm round THT pads +net tie +0 +2 +2 +NetTie +NetTie-3_SMD_Pad0.5mm +Net tie, 3 pin, 0.5mm square SMD pads +net tie +0 +3 +3 +NetTie +NetTie-3_SMD_Pad2.0mm +Net tie, 3 pin, 2.0mm square SMD pads +net tie +0 +3 +3 +NetTie +NetTie-3_THT_Pad0.3mm +Net tie, 3 pin, 0.3mm round THT pads +net tie +0 +3 +3 +NetTie +NetTie-3_THT_Pad1.0mm +Net tie, 3 pin, 1.0mm round THT pads +net tie +0 +3 +3 +NetTie +NetTie-4_SMD_Pad0.5mm +Net tie, 4 pin, 0.5mm square SMD pads +net tie +0 +4 +4 +NetTie +NetTie-4_SMD_Pad2.0mm +Net tie, 4 pin, 2.0mm square SMD pads +net tie +0 +4 +4 +NetTie +NetTie-4_THT_Pad0.3mm +Net tie, 4 pin, 0.3mm round THT pads +net tie +0 +4 +4 +NetTie +NetTie-4_THT_Pad1.0mm +Net tie, 4 pin, 1.0mm round THT pads +net tie +0 +4 +4 +OptoDevice +ADNS-9800 +Laser Gaming Sensor ADNS-9800 +MOUSE MOUSE_SENSOR LASER_GAMING_SENSOR +0 +16 +16 +OptoDevice +AGILENT_HFBR-152x +Fiberoptic Transmitter TX, HFBR series (https://docs.broadcom.com/docs/AV02-3283EN) +Fiberoptic Transmitter +0 +6 +6 +OptoDevice +AGILENT_HFBR-252x +Fiberoptic Receiver RX, HFBR series (https://docs.broadcom.com/docs/AV02-3283EN) +Fiberoptic Transmitter +0 +6 +6 +OptoDevice +AMS_TSL2550_SMD +http://ams.com/eng/content/download/250130/975613/142977 +TSL2550 ambient light sensor +0 +4 +4 +OptoDevice +Broadcom_AFBR-16xxZ_Horizontal +Fiber Optic Transmitter and Receiver, https://docs.broadcom.com/docs/AV02-4369EN +Fiber Optic Transmitter and Receiver +0 +6 +6 +OptoDevice +Broadcom_AFBR-16xxZ_Tilted +Fiber Optic Transmitter and Receiver, https://docs.broadcom.com/docs/AV02-4369EN +Fiber Optic Transmitter and Receiver +0 +6 +6 +OptoDevice +Broadcom_AFBR-16xxZ_Vertical +Fiber Optic Transmitter and Receiver, https://docs.broadcom.com/docs/AV02-4369EN +Fiber Optic Transmitter and Receiver +0 +6 +6 +OptoDevice +Broadcom_APDS-9301 +ambient light sensor, i2c interface, 6-pin chipled package, https://docs.broadcom.com/docs/AV02-2315EN +ambient light sensor chipled +0 +6 +6 +OptoDevice +Broadcom_DFN-6_2x2mm_P0.65mm +Broadcom DFN, 6 Pin (https://docs.broadcom.com/docs/AV02-4755EN), generated with kicad-footprint-generator ipc_noLead_generator.py +Broadcom DFN NoLead +0 +6 +6 +OptoDevice +Broadcom_LGA-8_2x2mm_P0.53mm +Broadcom LGA, 8 Pin (https://docs.broadcom.com/docs/AV02-4755EN), generated with kicad-footprint-generator ipc_noLead_generator.py +Broadcom LGA NoLead +0 +8 +8 +OptoDevice +Everlight_ITR1201SR10AR +package for Everlight ITR1201SR10AR, light-direction upwards, see https://www.everlight.com/file/ProductFile/ITR1201SR10AR-TR.pdf +reflective opto couple photo coupler +0 +4 +4 +OptoDevice +Everlight_ITR8307 +package for Everlight ITR8307 with PCB cutout, light-direction upwards, see http://www.everlight.com/file/ProductFile/ITR8307.pdf +refective opto couple photo coupler +0 +4 +4 +OptoDevice +Everlight_ITR8307F43 +package for Everlight ITR8307/F43, see https://everlighteurope.com/index.php?controller=attachment&id_attachment=5385 +refective opto couple photo coupler +0 +4 +4 +OptoDevice +Everlight_ITR8307_Reverse +package for Everlight ITR8307 with PCB cutout, light-direction downwards, see http://www.everlight.com/file/ProductFile/ITR8307.pdf +refective opto couple photo coupler +0 +4 +4 +OptoDevice +Finder_34.81 +Relay SPST, Finder Type 34.81 (opto relays/coupler), vertical/standing form, see https://gfinder.findernet.com/public/attachments/34/EN/S34USAEN.pdf +Relay SPST Finder +0 +4 +4 +OptoDevice +Hamamatsu_C12880 +Hamamatsu spectrometer, see http://www.hamamatsu.com/resources/pdf/ssd/c12880ma_kacc1226e.pdf +opto spectrometer Hamamatsu +0 +10 +10 +OptoDevice +Hamamatsu_S13360-30CS +SiPM, 2pin +Hamamatsu SiPM +0 +2 +2 +OptoDevice +Kingbright_KPS-5130 +http://www.kingbright.com/attachments/file/psearch/000/00/00/KPS-5130PD7C(Ver.14).pdf +KPS-5130 photodiode RGB sensor +0 +4 +4 +OptoDevice +Kingbright_KRC011_Horizontal +Subminiature Reflective Optical Sensor, http://www.kingbright.com/attachments/file/psearch/000/00/00/KRC011(Ver.15).pdf +Subminiature Reflective Optical Sensor +0 +4 +4 +OptoDevice +Kingbright_KRC011_Vertical +Subminiature Reflective Optical Sensor, http://www.kingbright.com/attachments/file/psearch/000/00/00/KRC011(Ver.15).pdf +Subminiature Reflective Optical Sensor +0 +4 +4 +OptoDevice +Kodenshi_LG206D +http://kodenshi.co.jp/products/pdf/sensor/photointerrupter_ic/LG206D.pdf +Photointerrupter infrared LED with photo IC +0 +5 +5 +OptoDevice +Kodenshi_LG206L +http://kodenshi.co.jp/products/pdf/sensor/photointerrupter_ic/LG205L.pdf +Photointerrupter infrared LED with photo IC +0 +5 +5 +OptoDevice +Kodenshi_SG105 +package for Kodenshi SG-105 with PCB cutout, light-direction upwards, see http://www.kodenshi.co.jp/products/pdf/sensor/photointerrupter_ref/SG-105.pdf +refective opto couple photo coupler +0 +4 +4 +OptoDevice +Kodenshi_SG105F +package for Kodenshi SG-105F, see http://www.kodenshi.co.jp/products/pdf/sensor/photointerrupter_ref/SG-105F.pdf +refective opto couple photo coupler +0 +4 +4 +OptoDevice +Kodenshi_SG105_Reverse +package for Kodenshi SG-105 with PCB cutout, light-direction downwards, see http://www.kodenshi.co.jp/products/pdf/sensor/photointerrupter_ref/SG-105.pdf +refective opto couple photo coupler +0 +4 +4 +OptoDevice +LaserDiode_TO3.3-D3.3-3 +Laser Diode, TO-3.3mm, 3pin +Laser Diode TO3.3 +0 +3 +3 +OptoDevice +LaserDiode_TO5-D9-3 +Laser Diode, TO5-like (D=9mm), 3pin +Laser Diode TO5-like +0 +3 +3 +OptoDevice +LaserDiode_TO18-D5.6-3 +Laser Diode, TO18-like (D=5.6mm), 3pin +Laser Diode TO18-like +0 +3 +3 +OptoDevice +LaserDiode_TO38ICut-3 +Laser Diode, TO-38-ICut, 3pin +Laser Diode TO38-ICut +0 +3 +3 +OptoDevice +LaserDiode_TO56-3 +Laser Diode, TO-56, 3pin +Laser Diode TO56 +0 +3 +3 +OptoDevice +Lightpipe_LPF-C012303S +https://www.lumex.com/spec/LPF-C012303S.pdf +lightpipe dual tower right angle 3mm +0 +0 +0 +OptoDevice +Lightpipe_Mentor_1275.x00x +https://www.mentor-bauelemente.de/katalog/ll/MENTOR-LL.pdf +spherical light pipe 4 way 3mm PLCC-2 PLCC-4 +0 +0 +0 +OptoDevice +Lightpipe_Mentor_1276.1004 +https://www.mentor-bauelemente.de/katalog/ll/MENTOR-LL.pdf +spherical light pipe 4 way 3mm PLCC-2 PLCC-4 +0 +0 +0 +OptoDevice +Lightpipe_Mentor_1276.2004 +https://www.mentor-bauelemente.de/katalog/ll/MENTOR-LL.pdf +planar light pipe 4 way 3mm PLCC-2 PLCC-4 +0 +0 +0 +OptoDevice +Lite-On_LTR-303ALS-01 +ambient light sensor, i2c interface, 6-pin chipled package, http://optoelectronics.liteon.com/upload/download/DS86-2013-0004/LTR-303ALS-01_DS_V1.pdf +ambient light sensor chipled +0 +6 +6 +OptoDevice +Luna_NSL-32 +Optoisolator with LED and photoresistor +optoisolator +0 +4 +4 +OptoDevice +Maxim_OLGA-14_3.3x5.6mm_P0.8mm +https://pdfserv.maximintegrated.com/land_patterns/90-0602.PDF +OLGA-14 OESIP-14 +0 +14 +14 +OptoDevice +ONSemi_QSE15x +3 Lead Plastic Package +ONSemi QSE158 QSE159 +0 +3 +3 +OptoDevice +OnSemi_CASE100AQ +OnSemi CASE 100AQ for QRE1113, see https://www.onsemi.com/pub/Collateral/QRE1113-D.PDF +reflective opto couple photo coupler +0 +4 +4 +OptoDevice +OnSemi_CASE100CY +OnSemi CASE 100CY, light-direction upwards, see http://www.onsemi.com/pub/Collateral/QRE1113-D.PDF +refective opto couple photo coupler +0 +4 +4 +OptoDevice +Osram_BPW82 +PhotoDiode, BPW82, RM2.54 +PhotoDiode BPW82 RM2.54 +0 +2 +2 +OptoDevice +Osram_DIL2_4.3x4.65mm_P5.08mm +PhotoDiode, plastic DIL, 4.3x4.65mm², RM5.08 +PhotoDiode plastic DIL RM5.08 +0 +2 +2 +OptoDevice +Osram_LPT80A +PhotoTransistor, sidelooker package, RM2.54 +PhotoTransistor sidelooker package RM2.54 +0 +2 +2 +OptoDevice +Osram_SFH9x0x +package for Osram SFH9x0x series of reflective photo interrupters/couplers, see http://www.osram-os.com/Graphics/XPic6/00200860_0.pdf +reflective photo interrupter SMD +0 +6 +6 +OptoDevice +Osram_SFH205 +PhotoDiode, SFH205, RM2.54 +PhotoDiode SFH205 RM2.54 +0 +2 +2 +OptoDevice +Osram_SFH225 +PhotoDiode, SFH225, RM2.54 +PhotoDiode SFH225 RM2.54 +0 +2 +2 +OptoDevice +Osram_SMD-DIL2_4.5x4.0mm +PhotoDiode, plastic SMD DIL, 4.5x4mm² +PhotoDiode plastic SMD DIL +0 +2 +2 +OptoDevice +Osram_SMD-SmartDIL +PhotoDiode, plastic SMD SmatDIL +PhotoDiode plastic SMD SmatDIL +0 +3 +3 +OptoDevice +Panasonic_APV-AQY_SSOP-4_4.45x2.65mm_P1.27mm +https://www.panasonic-electric-works.com/cps/rde/xbcr/pew_eu_en/technical_information_photomos_en.pdf +SSOP4 APV21 AQY22 +0 +4 +4 +OptoDevice +PerkinElmer_VTL5C +Axial Vactrol (http://www.qsl.net/wa1ion/vactrol/vactrol.pdf) +vactrol +0 +4 +4 +OptoDevice +PerkinElmer_VTL5Cx2 +Axial Vactrol (http://www.qsl.net/wa1ion/vactrol/vactrol.pdf) +vactrol +0 +5 +5 +OptoDevice +R_LDR_4.9x4.2mm_P2.54mm_Vertical +Resistor, LDR 4.9x4.2mm +Resistor LDR4.9x4.2 +0 +2 +2 +OptoDevice +R_LDR_5.0x4.1mm_P3mm_Vertical +Resistor, LDR 5x4.1mm, see http://cdn-reichelt.de/documents/datenblatt/A500/A90xxxx%23PE.pdf +Resistor LDR5x4.1mm +0 +2 +2 +OptoDevice +R_LDR_5.1x4.3mm_P3.4mm_Vertical +Resistor, LDR 5.1x3.4mm, see http://yourduino.com/docs/Photoresistor-5516-datasheet.pdf +Resistor LDR5.1x3.4mm +0 +2 +2 +OptoDevice +R_LDR_5.2x5.2mm_P3.5mm_Horizontal +Resistor, LDR 5.2x5.2, upright, see http://cdn-reichelt.de/documents/datenblatt/A500/M996011A.pdf +Resistor LDR5.2x5.2 +0 +2 +2 +OptoDevice +R_LDR_7x6mm_P5.1mm_Vertical +Resistor, LDR 7x6mm +Resistor LDR7x6mm +0 +2 +2 +OptoDevice +R_LDR_10x8.5mm_P7.6mm_Vertical +Resistor, LDR 10x8.5mm +Resistor LDR10.8.5mm +0 +2 +2 +OptoDevice +R_LDR_11x9.4mm_P8.2mm_Vertical +Resistor, LDR 11x9.4mm +Resistor LDR11x9.4mm +0 +2 +2 +OptoDevice +R_LDR_12x10.8mm_P9.0mm_Vertical +Resistor, LDR 12x10.8mm, see http://yourduino.com/docs/Photoresistor-5516-datasheet.pdf +Resistor LDR12x10.8mm +0 +2 +2 +OptoDevice +R_LDR_D6.4mm_P3.4mm_Vertical +Resistor, LDR D=6.4mm, see http://yourduino.com/docs/Photoresistor-5516-datasheet.pdf +Resistor LDRD=6.4mm +0 +2 +2 +OptoDevice +R_LDR_D13.8mm_P9.0mm_Vertical +Resistor, diameter 13.8mm pitch 9mm, see http://yourduino.com/docs/Photoresistor-5516-datasheet.pdf +Resistor LDR +0 +2 +2 +OptoDevice +R_LDR_D20mm_P17.5mm_Vertical +Resistor, LDR 20mm diameter, pin pitch 17.5mm, see http://yourduino.com/docs/Photoresistor-5516-datasheet.pdf +Resistor LDR +0 +2 +2 +OptoDevice +ST_VL53L0X +https://www.st.com/resource/en/datasheet/vl53l1x.pdf +laser-ranging sensor +0 +12 +12 +OptoDevice +ST_VL53L1X +https://www.st.com/resource/en/datasheet/vl53l1x.pdf +laser-ranging sensor +0 +12 +12 +OptoDevice +Sharp_GP2Y0A41SK0F +http://www.sharp-world.com/products/device/lineup/data/pdf/datasheet/gp2y0a41sk_e.pdf +Distance Sensor Sharp +0 +2 +2 +OptoDevice +Sharp_IS471F +Sharp OPIC IS471F, see http://pdf.datasheetcatalog.com/datasheet/Sharp/mXvrzty.pdf +Sharp OPIC IS471F +0 +4 +4 +OptoDevice +Sharp_IS485 +Sharp OPIC, IS485, IS486, see http://microrato.ua.pt/main/Actividades/Estagios/Docs/IS485_6.pdf +Sharp OPIC IS485 IS486 +0 +3 +3 +OptoDevice +Siemens_SFH900 +package for Siemens SFH900 reflex photo interrupter/coupler/object detector, see https://www.batronix.com/pdf/sfh900.pdf +Siemens SFH900 reflex photo interrupter coupler object detector +0 +3 +3 +OptoDevice +Toshiba_TORX170_TORX173_TORX193_TORX194 +Fiberoptic Reciver, RX, Toshiba, Toslink, TORX170, TORX173, TORX193, TORX194 +Fiberoptic Reciver RX Toshiba Toslink TORX170 TORX173 TORX193 TORX194 +0 +6 +6 +OptoDevice +Toshiba_TOTX170_TOTX173_TOTX193_TOTX194 +Fiberoptic Reciver, RX, Toshiba, Toslink, TORX170, TORX173, TORX193, TORX194 +Fiberoptic Reciver RX Toshiba Toslink TORX170 TORX173 TORX193 TORX194 +0 +6 +6 +OptoDevice +Vishay_CAST-3Pin +IR Receiver Vishay TSOP-xxxx, CAST package, see https://www.vishay.com/docs/82493/tsop311.pdf +IRReceiverVishayTSOP-xxxx CAST +0 +3 +3 +OptoDevice +Vishay_CNY70 +package for Vishay CNY70 refective photo coupler/interrupter +Vishay CNY70 refective photo coupler +0 +4 +4 +OptoDevice +Vishay_MINICAST-3Pin +IR Receiver Vishay TSOP-xxxx, MINICAST package, see https://www.vishay.com/docs/82669/tsop32s40f.pdf +IR Receiver Vishay TSOP-xxxx MINICAST +0 +3 +3 +OptoDevice +Vishay_MINIMOLD-3Pin +IR Receiver Vishay TSOP-xxxx, MINIMOLD package, see https://www.vishay.com/docs/82742/tsop331.pdf +IR Receiver Vishay TSOP-xxxx MINIMOLD +0 +3 +3 +OptoDevice +Vishay_MOLD-3Pin +IR Receiver Vishay TSOP-xxxx, MOLD package, see https://www.vishay.com/docs/82669/tsop32s40f.pdf +IR Receiver Vishay TSOP-xxxx MOLD +0 +3 +3 +Oscillator +Oscillator_DIP-8 +Oscillator, DIP8,http://cdn-reichelt.de/documents/datenblatt/B400/OSZI.pdf +oscillator +0 +4 +4 +Oscillator +Oscillator_DIP-8_LargePads +Oscillator, DIP8, Large Pads, http://cdn-reichelt.de/documents/datenblatt/B400/OSZI.pdf +oscillator +0 +4 +4 +Oscillator +Oscillator_DIP-14 +Oscillator, DIP14, http://cdn-reichelt.de/documents/datenblatt/B400/OSZI.pdf +oscillator +0 +4 +4 +Oscillator +Oscillator_DIP-14_LargePads +Oscillator, DIP14, Large Pads, http://cdn-reichelt.de/documents/datenblatt/B400/OSZI.pdf +oscillator +0 +4 +4 +Oscillator +Oscillator_OCXO_Morion_MV267 +http://www.morion.com.ru/catalog_pdf/MV267.pdf +OCXO +0 +5 +5 +Oscillator +Oscillator_OCXO_Morion_MV317 +https://www.morion-us.com/catalog_pdf/mv317.pdf +OCXO +0 +5 +5 +Oscillator +Oscillator_SMD_Abracon_ABLNO +https://abracon.com/Precisiontiming/ABLNO.pdf +VCXO XO +0 +4 +4 +Oscillator +Oscillator_SMD_Abracon_ASCO-4Pin_1.6x1.2mm +Miniature Crystal Clock Oscillator Abracon ASCO series, https://abracon.com/Oscillators/ASCO.pdf, 1.6x1.2mm^2 package +SMD SMT crystal oscillator +0 +4 +4 +Oscillator +Oscillator_SMD_Abracon_ASDMB-4Pin_2.5x2.0mm +Miniature Crystal Clock Oscillator Abracon ASDMB series, 2.5x2.0mm package, http://www.abracon.com/Oscillators/ASDMB.pdf +SMD SMT crystal oscillator +0 +4 +4 +Oscillator +Oscillator_SMD_Abracon_ASE-4Pin_3.2x2.5mm +Miniature Crystal Clock Oscillator Abracon ASE series, http://www.abracon.com/Oscillators/ASEseries.pdf, 3.2x2.5mm^2 package +SMD SMT crystal oscillator +0 +4 +4 +Oscillator +Oscillator_SMD_Abracon_ASE-4Pin_3.2x2.5mm_HandSoldering +Miniature Crystal Clock Oscillator Abracon ASE series, http://www.abracon.com/Oscillators/ASEseries.pdf, hand-soldering, 3.2x2.5mm^2 package +SMD SMT crystal oscillator hand-soldering +0 +4 +4 +Oscillator +Oscillator_SMD_Abracon_ASV-4Pin_7.0x5.1mm +Miniature Crystal Clock Oscillator Abracon ASV series, http://www.abracon.com/Oscillators/ASV.pdf, 7.0x5.1mm^2 package +SMD SMT crystal oscillator +0 +4 +4 +Oscillator +Oscillator_SMD_Abracon_ASV-4Pin_7.0x5.1mm_HandSoldering +Miniature Crystal Clock Oscillator Abracon ASV series, http://www.abracon.com/Oscillators/ASV.pdf, hand-soldering, 7.0x5.1mm^2 package +SMD SMT crystal oscillator hand-soldering +0 +4 +4 +Oscillator +Oscillator_SMD_Diodes_FN-4Pin_7.0x5.0mm +FN Series Crystal Clock Oscillator (XO) (https://www.diodes.com/assets/Datasheets/FN_3-3V.pdf) +Oscillator Crystal SMD SMT +0 +4 +4 +Oscillator +Oscillator_SMD_ECS_2520MV-xxx-xx-4Pin_2.5x2.0mm +Miniature Crystal Clock Oscillator ECS 2520MV series, https://www.ecsxtal.com/store/pdf/ECS-2520MV.pdf +Miniature Crystal Clock Oscillator ECS 2520MV series SMD SMT HCMOS +0 +4 +4 +Oscillator +Oscillator_SMD_EuroQuartz_XO32-4Pin_3.2x2.5mm +Miniature Crystal Clock Oscillator EuroQuartz XO32 series, http://cdn-reichelt.de/documents/datenblatt/B400/XO32.pdf, 3.2x2.5mm^2 package +SMD SMT crystal oscillator +0 +4 +4 +Oscillator +Oscillator_SMD_EuroQuartz_XO32-4Pin_3.2x2.5mm_HandSoldering +Miniature Crystal Clock Oscillator EuroQuartz XO32 series, http://cdn-reichelt.de/documents/datenblatt/B400/XO32.pdf, hand-soldering, 3.2x2.5mm^2 package +SMD SMT crystal oscillator hand-soldering +0 +4 +4 +Oscillator +Oscillator_SMD_EuroQuartz_XO53-4Pin_5.0x3.2mm +Miniature Crystal Clock Oscillator EuroQuartz XO53 series, http://cdn-reichelt.de/documents/datenblatt/B400/XO53.pdf, 5.0x3.2mm^2 package +SMD SMT crystal oscillator +0 +4 +4 +Oscillator +Oscillator_SMD_EuroQuartz_XO53-4Pin_5.0x3.2mm_HandSoldering +Miniature Crystal Clock Oscillator EuroQuartz XO53 series, http://cdn-reichelt.de/documents/datenblatt/B400/XO53.pdf, hand-soldering, 5.0x3.2mm^2 package +SMD SMT crystal oscillator hand-soldering +0 +4 +4 +Oscillator +Oscillator_SMD_EuroQuartz_XO91-4Pin_7.0x5.0mm +Miniature Crystal Clock Oscillator EuroQuartz XO91 series, http://cdn-reichelt.de/documents/datenblatt/B400/XO91.pdf, 7.0x5.0mm^2 package +SMD SMT crystal oscillator +0 +4 +4 +Oscillator +Oscillator_SMD_EuroQuartz_XO91-4Pin_7.0x5.0mm_HandSoldering +Miniature Crystal Clock Oscillator EuroQuartz XO91 series, http://cdn-reichelt.de/documents/datenblatt/B400/XO91.pdf, hand-soldering, 7.0x5.0mm^2 package +SMD SMT crystal oscillator hand-soldering +0 +4 +4 +Oscillator +Oscillator_SMD_Fordahl_DFAS1-6Pin_14.8x9.1mm +Miniature Crystal Clock Oscillator TXCO Fordahl DFA S1-KHZ/LHZ, http://www.iqdfrequencyproducts.com/products/details/iqxo-70-11-30.pdf, 14.8x9.1mm^2 package +SMD SMT crystal oscillator +0 +6 +6 +Oscillator +Oscillator_SMD_Fordahl_DFAS2-4Pin_7.3x5.1mm +Mminiature Crystal Clock Oscillator TXCO Fordahl DFA S2-KS/LS/US, http://www.iqdfrequencyproducts.com/products/details/iqxo-70-11-30.pdf, 7.3x5.1mm^2 package +SMD SMT crystal oscillator +0 +4 +4 +Oscillator +Oscillator_SMD_Fordahl_DFAS2-4Pin_7.3x5.1mm_HandSoldering +Mminiature Crystal Clock Oscillator TXCO Fordahl DFA S2-KS/LS/US, http://www.iqdfrequencyproducts.com/products/details/iqxo-70-11-30.pdf, hand-soldering, 7.3x5.1mm^2 package +SMD SMT crystal oscillator hand-soldering +0 +4 +4 +Oscillator +Oscillator_SMD_Fordahl_DFAS3-4Pin_9.1x7.2mm +Miniature Crystal Clock Oscillator TXCO Fordahl DFA S3-KS/LS/US, http://www.iqdfrequencyproducts.com/products/details/iqxo-70-11-30.pdf, 9.1x7.2mm^2 package +SMD SMT crystal oscillator +0 +4 +4 +Oscillator +Oscillator_SMD_Fordahl_DFAS3-4Pin_9.1x7.2mm_HandSoldering +Miniature Crystal Clock Oscillator TXCO Fordahl DFA S3-KS/LS/US, http://www.iqdfrequencyproducts.com/products/details/iqxo-70-11-30.pdf, hand-soldering, 9.1x7.2mm^2 package +SMD SMT crystal oscillator hand-soldering +0 +4 +4 +Oscillator +Oscillator_SMD_Fordahl_DFAS7-4Pin_19.9x12.9mm +Miniature Crystal Clock Oscillator TXCO Fordahl DFA S7-K/L, http://www.iqdfrequencyproducts.com/products/details/iqxo-70-11-30.pdf, 19.9x12.9mm^2 package +SMD SMT crystal oscillator +0 +4 +4 +Oscillator +Oscillator_SMD_Fordahl_DFAS7-4Pin_19.9x12.9mm_HandSoldering +Miniature Crystal Clock Oscillator TXCO Fordahl DFA S7-K/L, http://www.iqdfrequencyproducts.com/products/details/iqxo-70-11-30.pdf, hand-soldering, 19.9x12.9mm^2 package +SMD SMT crystal oscillator hand-soldering +0 +4 +4 +Oscillator +Oscillator_SMD_Fordahl_DFAS11-4Pin_7.0x5.0mm +Miniature Crystal Clock Oscillator TXCO Fordahl DFA S11-OV/UOV, http://www.iqdfrequencyproducts.com/products/details/iqxo-70-11-30.pdf, 7.0x5.0mm^2 package +SMD SMT crystal oscillator +0 +4 +4 +Oscillator +Oscillator_SMD_Fordahl_DFAS11-4Pin_7.0x5.0mm_HandSoldering +Miniature Crystal Clock Oscillator TXCO Fordahl DFA S11-OV/UOV, http://www.iqdfrequencyproducts.com/products/details/iqxo-70-11-30.pdf, hand-soldering, 7.0x5.0mm^2 package +SMD SMT crystal oscillator hand-soldering +0 +4 +4 +Oscillator +Oscillator_SMD_Fordahl_DFAS15-4Pin_5.0x3.2mm +Ultraminiature Crystal Clock Oscillator TXCO Fordahl DFA S15-OV/UOV, http://www.iqdfrequencyproducts.com/products/details/iqxo-70-11-30.pdf, 5.0x3.2mm^2 package +SMD SMT crystal oscillator +0 +4 +4 +Oscillator +Oscillator_SMD_Fordahl_DFAS15-4Pin_5.0x3.2mm_HandSoldering +Ultraminiature Crystal Clock Oscillator TXCO Fordahl DFA S15-OV/UOV, http://www.iqdfrequencyproducts.com/products/details/iqxo-70-11-30.pdf, hand-soldering, 5.0x3.2mm^2 package +SMD SMT crystal oscillator hand-soldering +0 +4 +4 +Oscillator +Oscillator_SMD_IDT_JS6-6_5.0x3.2mm_P1.27mm +SMD Crystal Oscillator IDT https://www.idt.com/document/dst/xu-family-datasheet#page=15, 5.0x3.2mm +SMD SMT crystal oscillator +0 +6 +6 +Oscillator +Oscillator_SMD_IDT_JU6-6_7.0x5.0mm_P2.54mm +SMD Crystal Oscillator IDT https://www.idt.com/document/dst/xu-family-datasheet#page=17, 7.0x5.0mm +SMD SMT crystal oscillator +0 +6 +6 +Oscillator +Oscillator_SMD_IQD_IQXO70-4Pin_7.5x5.0mm +IQD Crystal Clock Oscillator IQXO-70, http://www.iqdfrequencyproducts.com/products/details/iqxo-70-11-30.pdf, 7.5x5.0mm^2 package +SMD SMT crystal oscillator +0 +4 +4 +Oscillator +Oscillator_SMD_IQD_IQXO70-4Pin_7.5x5.0mm_HandSoldering +IQD Crystal Clock Oscillator IQXO-70, http://www.iqdfrequencyproducts.com/products/details/iqxo-70-11-30.pdf, hand-soldering, 7.5x5.0mm^2 package +SMD SMT crystal oscillator hand-soldering +0 +4 +4 +Oscillator +Oscillator_SMD_Kyocera_2520-6Pin_2.5x2.0mm +https://global.kyocera.com/prdct/electro/product/pdf/kt2520_e.pdf +2.5mm 2mm SMD +0 +6 +6 +Oscillator +Oscillator_SMD_Kyocera_KC2520Z-4Pin_2.5x2.0mm +https://global.kyocera.com/prdct/electro/product/pdf/clock_z_xz_e.pdf +2.5mm 2mm SMD +0 +4 +4 +Oscillator +Oscillator_SMD_OCXO_ConnorWinfield_OH300 +http://www.conwin.com/datasheets/cx/cx282.pdf +OCXO +0 +7 +7 +Oscillator +Oscillator_SMD_SI570_SI571_HandSoldering +SI570, SI571, Programmable oscillator, Standard +SI570 SI571 Programmable oscillator Standard +0 +8 +8 +Oscillator +Oscillator_SMD_SI570_SI571_Standard +SI570, SI571, Programmable oscillator, Standard +SI570 SI571 Programmable oscillator Standard +0 +8 +8 +Oscillator +Oscillator_SMD_SeikoEpson_SG210-4Pin_2.5x2.0mm +SMD Crystal Oscillator Seiko Epson SG-210 https://support.epson.biz/td/api/doc_check.php?mode=dl&lang=en&Parts=SG-210SED, 2.5x2.0mm^2 package +SMD SMT crystal oscillator +0 +4 +4 +Oscillator +Oscillator_SMD_SeikoEpson_SG210-4Pin_2.5x2.0mm_HandSoldering +SMD Crystal Oscillator Seiko Epson SG-210 https://support.epson.biz/td/api/doc_check.php?mode=dl&lang=en&Parts=SG-210SED, hand-soldering, 2.5x2.0mm^2 package +SMD SMT crystal oscillator hand-soldering +0 +4 +4 +Oscillator +Oscillator_SMD_SeikoEpson_SG3030CM +SMD Crystal Oscillator Seiko Epson SG-3030CM package +SMD SMT crystal oscillator +0 +4 +4 +Oscillator +Oscillator_SMD_SeikoEpson_SG8002CA-4Pin_7.0x5.0mm +SMD Crystal Oscillator Seiko Epson SG-8002CA https://support.epson.biz/td/api/doc_check.php?mode=dl&lang=en&Parts=SG-8002DC, 7.0x5.0mm^2 package +SMD SMT crystal oscillator +0 +4 +4 +Oscillator +Oscillator_SMD_SeikoEpson_SG8002CA-4Pin_7.0x5.0mm_HandSoldering +SMD Crystal Oscillator Seiko Epson SG-8002CA https://support.epson.biz/td/api/doc_check.php?mode=dl&lang=en&Parts=SG-8002DC, hand-soldering, 7.0x5.0mm^2 package +SMD SMT crystal oscillator hand-soldering +0 +4 +4 +Oscillator +Oscillator_SMD_SeikoEpson_SG8002CE-4Pin_3.2x2.5mm +SMD Crystal Oscillator Seiko Epson SG-8002CE https://support.epson.biz/td/api/doc_check.php?mode=dl&lang=en&Parts=SG-8002DC, 3.2x2.5mm^2 package +SMD SMT crystal oscillator +0 +4 +4 +Oscillator +Oscillator_SMD_SeikoEpson_SG8002CE-4Pin_3.2x2.5mm_HandSoldering +SMD Crystal Oscillator Seiko Epson SG-8002CE https://support.epson.biz/td/api/doc_check.php?mode=dl&lang=en&Parts=SG-8002DC, hand-soldering, 3.2x2.5mm^2 package +SMD SMT crystal oscillator hand-soldering +0 +4 +4 +Oscillator +Oscillator_SMD_SeikoEpson_SG8002JA-4Pin_14.0x8.7mm +SMD Crystal Oscillator Seiko Epson SG-8002JA https://support.epson.biz/td/api/doc_check.php?mode=dl&lang=en&Parts=SG-8002DC, 14.0x8.7mm^2 package +SMD SMT crystal oscillator +0 +4 +4 +Oscillator +Oscillator_SMD_SeikoEpson_SG8002JA-4Pin_14.0x8.7mm_HandSoldering +SMD Crystal Oscillator Seiko Epson SG-8002JA https://support.epson.biz/td/api/doc_check.php?mode=dl&lang=en&Parts=SG-8002DC, hand-soldering, 14.0x8.7mm^2 package +SMD SMT crystal oscillator hand-soldering +0 +4 +4 +Oscillator +Oscillator_SMD_SeikoEpson_SG8002JC-4Pin_10.5x5.0mm +SMD Crystal Oscillator Seiko Epson SG-8002JC https://support.epson.biz/td/api/doc_check.php?mode=dl&lang=en&Parts=SG-8002DC, 10.5x5.0mm^2 package +SMD SMT crystal oscillator +0 +4 +4 +Oscillator +Oscillator_SMD_SeikoEpson_SG8002JC-4Pin_10.5x5.0mm_HandSoldering +SMD Crystal Oscillator Seiko Epson SG-8002JC https://support.epson.biz/td/api/doc_check.php?mode=dl&lang=en&Parts=SG-8002DC, hand-soldering, 10.5x5.0mm^2 package +SMD SMT crystal oscillator hand-soldering +0 +4 +4 +Oscillator +Oscillator_SMD_SeikoEpson_SG8002LB-4Pin_5.0x3.2mm +SMD Crystal Oscillator Seiko Epson SG-8002LB https://support.epson.biz/td/api/doc_check.php?mode=dl&lang=en&Parts=SG-8002DC, 5.0x3.2mm^2 package +SMD SMT crystal oscillator +0 +4 +4 +Oscillator +Oscillator_SMD_SeikoEpson_SG8002LB-4Pin_5.0x3.2mm_HandSoldering +SMD Crystal Oscillator Seiko Epson SG-8002LB https://support.epson.biz/td/api/doc_check.php?mode=dl&lang=en&Parts=SG-8002DC, hand-soldering, 5.0x3.2mm^2 package +SMD SMT crystal oscillator hand-soldering +0 +4 +4 +Oscillator +Oscillator_SMD_Silicon_Labs_LGA-6_2.5x3.2mm_P1.25mm +Silicon_Labs LGA, 6 Pin (https://www.silabs.com/documents/public/data-sheets/si512-13.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +Silicon_Labs LGA NoLead +0 +6 +6 +Oscillator +Oscillator_SMD_TCXO_G158 +TCXO +TCXO +0 +4 +4 +Oscillator +Oscillator_SMD_TXC_7C-4Pin_5.0x3.2mm +Miniature Crystal Clock Oscillator TXC 7C series, http://www.txccorp.com/download/products/osc/7C_o.pdf, 5.0x3.2mm^2 package +SMD SMT crystal oscillator +0 +4 +4 +Oscillator +Oscillator_SMD_TXC_7C-4Pin_5.0x3.2mm_HandSoldering +Miniature Crystal Clock Oscillator TXC 7C series, http://www.txccorp.com/download/products/osc/7C_o.pdf, hand-soldering, 5.0x3.2mm^2 package +SMD SMT crystal oscillator hand-soldering +0 +4 +4 +Oscillator +Oscillator_SeikoEpson_SG-8002DB +14-lead dip package, row spacing 7.62 mm (300 mils) +DIL DIP PDIP 2.54mm 7.62mm 300mil +0 +4 +4 +Oscillator +Oscillator_SeikoEpson_SG-8002DC +8-lead dip package, row spacing 7.62 mm (300 mils) +DIL DIP PDIP 2.54mm 7.62mm 300mil +0 +4 +4 +Package_BGA +Analog_BGA-28_4.0x6.25mm_Layout4x7_P0.8mm_Ball0.45mm_Pad0.4 +Analog BGA-28 4.0mm x 6.25mm package, pitch 0.4mm pad, based on https://www.analog.com/media/en/technical-documentation/data-sheets/8063fa.pdf +BGA 28 0.8 +0 +28 +28 +Package_BGA +BGA-9_1.6x1.6mm_Layout3x3_P0.5mm +BGA-9, http://www.ti.com/lit/ds/symlink/bq27421-g1.pdf +BGA-9 +0 +9 +9 +Package_BGA +BGA-16_1.92x1.92mm_Layout4x4_P0.5mm +BGA-16, http://www.st.com/content/ccc/resource/technical/document/datasheet/group2/bc/cd/62/9e/8f/30/47/69/CD00151267/files/CD00151267.pdf/jcr:content/translations/en.CD00151267.pdf +BGA-16 +0 +16 +16 +Package_BGA +BGA-25_6.35x6.35mm_Layout5x5_P1.27mm +BGA-25, http://cds.linear.com/docs/en/datasheet/4624fc.pdf +BGA-25 uModule +0 +25 +25 +Package_BGA +BGA-36_3.396x3.466mm_Layout6x6_P0.4mm_Ball0.25mm_Pad0.2mm_NSMD +Altera V36, https://www.altera.com/content/dam/altera-www/global/en_US/pdfs/literature/packaging/04r00486-00.pdf +Altera BGA-36 V36 VBGA +0 +36 +36 +Package_BGA +BGA-48_8.0x9.0mm_Layout6x8_P0.8mm +BGA-48 - pitch 0.8 mm +BGA-48 +0 +48 +48 +Package_BGA +BGA-64_9.0x9.0mm_Layout10x10_P0.8mm +BGA-64, 10x10 raster, 9x9mm package, pitch 0.8mm +BGA-64 +0 +64 +64 +Package_BGA +BGA-68_5.0x5.0mm_Layout9x9_P0.5mm_Ball0.3mm_Pad0.25mm_NSMD +Altera MBGA-68, https://www.altera.com/content/dam/altera-www/global/en_US/pdfs/literature/packaging/04r00344-01.pdf +Altera BGA-68 M68 MBGA +0 +68 +68 +Package_BGA +BGA-81_4.496x4.377mm_Layout9x9_P0.4mm_Ball0.25mm_Pad0.2mm_NSMD +Altera V81, https://www.altera.com/content/dam/altera-www/global/en_US/pdfs/literature/packaging/04r00478-01.pdf +Altera VBGA V81 BGA-81 +0 +81 +81 +Package_BGA +BGA-90_8.0x13.0mm_Layout2x3x15_P0.8mm +BGA-90, http://www.issi.com/WW/pdf/42-45S32800J.pdf +BGA-90 +0 +90 +90 +Package_BGA +BGA-96_9.0x13.0mm_Layout2x3x16_P0.8mm +BGA-96, http://www.mouser.com/ds/2/198/43-46TR16640B-81280BL-706483.pdf +BGA-96 +0 +96 +96 +Package_BGA +BGA-100_6.0x6.0mm_Layout11x11_P0.5mm_Ball0.3mm_Pad0.25mm_NSMD +Altera MBGA-100, https://www.altera.com/content/dam/altera-www/global/en_US/pdfs/literature/packaging/04r00345-01.pdf +Altera BGA-100 M100 MBGA +0 +100 +100 +Package_BGA +BGA-100_11.0x11.0mm_Layout10x10_P1.0mm_Ball0.5mm_Pad0.4mm_NSMD +BGA-100, https://www.altera.com/content/dam/altera-www/global/en_US/pdfs/literature/packaging/04r00223-02.pdf +BGA-100 +0 +100 +100 +Package_BGA +BGA-121_9.0x9.0mm_Layout11x11_P0.8mm_Ball0.4mm_Pad0.35mm_NSMD +121-ball, 0.8mm BGA (based on http://www.latticesemi.com/view_document?document_id=213) +BGA 0.8mm 9mm 121 +0 +121 +121 +Package_BGA +BGA-121_12.0x12.0mm_Layout11x11_P1.0mm +BGA-121, http://cds.linear.com/docs/en/packaging/05081891_A_bga121.pdf +BGA-121 +0 +121 +121 +Package_BGA +BGA-132_12x18mm_Layout11x17_P0.5mm +BGA-132 11x17 12x18mm 0.5pitch +BGA-132 +0 +132 +132 +Package_BGA +BGA-144_7.0x7.0mm_Layout13x13_P0.5mm_Ball0.3mm_Pad0.25mm_NSMD +Altera MBGA-144, https://www.altera.com/content/dam/altera-www/global/en_US/pdfs/literature/packaging/04r00346-00.pdf +Altera BGA-144 M144 MBGA +0 +144 +144 +Package_BGA +BGA-144_13.0x13.0mm_Layout12x12_P1.0mm +BGA-144, http://www.topline.tv/drawings/pdf/BGA%201,0mm%20pitch/LBGA144T1.0-DC128.pdf +BGA-144 +0 +144 +144 +Package_BGA +BGA-152_14x18mm_Layout13x17_P0.5mm +BGA-152_14x18mm_Layout13x17_P0.5mm +VBGA-152 +0 +152 +152 +Package_BGA +BGA-153_8.0x8.0mm_Layout15x15_P0.5mm_Ball0.3mm_Pad0.25mm_NSMD +Altera MBGA-153, https://www.altera.com/content/dam/altera-www/global/en_US/pdfs/literature/packaging/04r00471-00.pdf +Altera BGA-153 M153 MBGA +0 +153 +153 +Package_BGA +BGA-169_11.0x11.0mm_Layout13x13_P0.8mm_Ball0.5mm_Pad0.4mm_NSMD +Altera U169, https://www.altera.com/content/dam/altera-www/global/en_US/pdfs/literature/packaging/04r00470-01.pdf +Altera UBGA U169 BGA-169 +0 +169 +169 +Package_BGA +BGA-256_11.0x11.0mm_Layout20x20_P0.5mm_Ball0.3mm_Pad0.25mm_NSMD +Altera MBGA-256, https://www.altera.com/content/dam/altera-www/global/en_US/pdfs/literature/packaging/04r00348-01.pdf +Altera BGA-256 M256 MBGA +0 +256 +256 +Package_BGA +BGA-256_14.0x14.0mm_Layout16x16_P0.8mm_Ball0.45mm_Pad0.32mm_NSMD +BGA-256, dimensions: https://www.xilinx.com/support/documentation/package_specs/ft256.pdf, design rules: https://www.xilinx.com/support/documentation/user_guides/ug1099-bga-device-design-rules.pdf +BGA-256 +0 +256 +256 +Package_BGA +BGA-256_17.0x17.0mm_Layout16x16_P1.0mm_Ball0.5mm_Pad0.4mm_NSMD +BGA-256, dimensions: https://www.xilinx.com/support/documentation/package_specs/ft256.pdf, design rules: https://www.xilinx.com/support/documentation/user_guides/ug1099-bga-device-design-rules.pdf +BGA-256 +0 +256 +256 +Package_BGA +BGA-324_15.0x15.0mm_Layout18x18_P0.8mm_Ball0.5mm_Pad0.4mm_NSMD +Altera U324, https://www.altera.com/content/dam/altera-www/global/en_US/pdfs/literature/packaging/04r00474-02.pdf +Altera UBGA U324 BGA-324 +0 +324 +324 +Package_BGA +BGA-324_19.0x19.0mm_Layout18x18_P1.0mm_Ball0.5mm_Pad0.4mm_NSMD +BGA-324, https://www.altera.com/content/dam/altera-www/global/en_US/pdfs/literature/packaging/04r00233-03.pdf +BGA-324 +0 +324 +324 +Package_BGA +BGA-352_35.0x35.0mm_Layout26x26_P1.27mm +BGA-352, https://www.fujitsu.com/downloads/MICRO/fma/pdfmcu/b352p05.pdf +BGA-352 +0 +352 +352 +Package_BGA +BGA-400_21.0x21.0mm_Layout20x20_P1.0mm +BGA-400, https://www.xilinx.com/support/documentation/package_specs/fg400.pdf +BGA-400 +0 +400 +400 +Package_BGA +BGA-484_23.0x23.0mm_Layout22x22_P1.0mm +BGA-484, https://www.xilinx.com/support/documentation/package_specs/fg484.pdf +BGA-484 +0 +484 +484 +Package_BGA +BGA-624_21.0x21.0mm_Layout25x25_P0.8mm +BGA-624, 25x25 grid, 21x21mm package, pitch 0.8mm; https://www.nxp.com/docs/en/package-information/SOT1529-1.pdf +BGA 624 0.8 +0 +624 +624 +Package_BGA +BGA-625_21.0x21.0mm_Layout25x25_P0.8mm +BGA-625 +BGA-625 +0 +625 +625 +Package_BGA +BGA-672_27.0x27.0mm_Layout26x26_P1.0mm_Ball0.6mm_Pad0.5mm_NSMD +Altera BGA-672, https://www.altera.com/content/dam/altera-www/global/en_US/pdfs/literature/packaging/04r00472-00.pdf +Altera BGA-672 F672 FBGA +0 +672 +672 +Package_BGA +BGA-676_27.0x27.0mm_Layout26x26_P1.0mm_Ball0.6mm_Pad0.5mm_NSMD +XILINX BGA-676, https://www.xilinx.com/support/documentation/package_specs/fg676.pdf +XILINX BGA-676 FG676/FGG676 +0 +676 +676 +Package_BGA +BGA-1023_33.0x33.0mm_Layout32x32_P1.0mm +BGA-1023 +BGA-1023 +0 +1023 +1023 +Package_BGA +BGA-1156_35.0x35.0mm_Layout34x34_P1.0mm +BGA-1156 +BGA-1156 +0 +1156 +1156 +Package_BGA +BGA-1295_37.5x37.5mm_Layout36x36_P1.0mm +BGA-1295 +BGA-1295 +0 +1295 +1295 +Package_BGA +FB-BGA-484_23.0x23.0mm_Layout22x22_P1.0mm +Xilinx FB-484, https://www.xilinx.com/support/documentation/user_guides/ug1099-bga-device-design-rules.pdf +FB-BGA-484 +0 +484 +484 +Package_BGA +FBGA-78_7.5x11mm_Layout2x3x13_P0.8mm +FBGA-78, https://www.skhynix.com/product/filedata/fileDownload.do?seq=7687 +FBGA-78 +0 +78 +78 +Package_BGA +Fujitsu_WLP-15_2.28x3.092mm_Layout3x5_P0.4mm +WLP-15, 3x5 raster, 2.28x3.092mm package, pitch 0.4mm; http://www.fujitsu.com/global/documents/products/devices/semiconductor/fram/lineup/MB85RS1MT-DS501-00022-7v0-E.pdf +BGA 8 0.4 +0 +8 +8 +Package_BGA +LFBGA-100_10x10mm_Layout10x10_P0.8mm +LFBGA-100, 10x10 raster, 10x10mm package, pitch 0.8mm; see section 6.3 of http://www.st.com/resource/en/datasheet/stm32f103tb.pdf +BGA 100 0.8 +0 +100 +100 +Package_BGA +LFBGA-144_10x10mm_Layout12x12_P0.8mm +LFBGA-144, 12x12 raster, 10x10mm package, pitch 0.8mm; see section 6.1 of http://www.st.com/resource/en/datasheet/stm32f103ze.pdf +BGA 144 0.8 +0 +144 +144 +Package_BGA +LFBGA-169_16x12mm_Layout28x14_P0.5mm_Ball0.3_Pad0.3mm_NSMD +https://4donline.ihs.com/images/VipMasterIC/IC/SGST/SGSTS20279/SGSTS20279-1.pdf?hkey=EF798316E3902B6ED9A73243A3159BB0 +eMMC Flash LFBGA169 +0 +169 +169 +Package_BGA +Lattice_caBGA-381_17.0x17.0mm_Layout20x20_P0.8mm_Ball0.4mm_Pad0.4mm_NSMD +Lattice caBGA-381 footprint for ECP5 FPGAs, based on http://www.latticesemi.com/view_document?document_id=213 +BGA 381 0.8 +0 +381 +381 +Package_BGA +Lattice_caBGA-381_17.0x17.0mm_Layout20x20_P0.8mm_Ball0.4mm_Pad0.6mm_SMD +Lattice caBGA-381 footprint for ECP5 FPGAs, based on http://www.latticesemi.com/view_document?document_id=213 +BGA 381 0.8 +0 +381 +381 +Package_BGA +Linear_BGA-133_15.0x15.0mm_Layout12x12_P1.27mm +Analog Devices (Linear Tech), 133-pin BGA uModule, 15.0x15.0x4.92mm, https://www.analog.com/media/en/technical-documentation/data-sheets/4637fc.pdf +133 pin bga +0 +134 +134 +Package_BGA +Maxim_WLP-9_1.595x1.415_Layout3x3_P0.4mm_Ball0.27mm_Pad0.25mm_NSMD +Maxim_WLP-9 W91C1+1 https://pdfserv.maximintegrated.com/package_dwgs/21-0459.PDF +Maxim_WLP-9 +0 +9 +9 +Package_BGA +Maxim_WLP-12 +Maxim_WLP-12 W121B2+1 http://pdfserv.maximintegrated.com/package_dwgs/21-0009.PDF +Maxim_WLP-12 +0 +12 +12 +Package_BGA +Microchip_TFBGA-196_11x11mm_Layout14x14_P0.75mm_SMD +TFBGA-196, 11.0x11.0mm, 196 Ball, 14x14 Layout, 0.75mm Pitch, http://ww1.microchip.com/downloads/en/DeviceDoc/SAMA5D2-Series-Data-Sheet-DS60001476C.pdf#page=2956 +BGA 196 0.75 +0 +196 +196 +Package_BGA +ST_uTFBGA-36_3.6x3.6mm_Layout6x6_P0.5mm +ST uTFBGA-36, 0.25mm pad, 3.6x3.6mm, 36 Ball, 6x6 Layout, 0.5mm Pitch, https://www.st.com/resource/en/datasheet/stulpi01a.pdf +BGA 36 0.5 +0 +36 +36 +Package_BGA +TFBGA-64_5x5mm_Layout8x8_P0.5mm +TFBGA-64, 8x8 raster, 5x5mm package, pitch 0.5mm; see section 6.3 of http://www.st.com/resource/en/datasheet/stm32f100v8.pdf +BGA 64 0.5 +0 +64 +64 +Package_BGA +TFBGA-100_8x8mm_Layout10x10_P0.8mm +TFBGA-100, 10x10 raster, 8x8mm package, pitch 0.8mm; see section 6.2 of http://www.st.com/resource/en/datasheet/stm32f746zg.pdf +BGA 100 0.8 +0 +100 +100 +Package_BGA +TFBGA-100_9.0x9.0mm_Layout10x10_P0.8mm +TFBGA-100, 10x10, 9x9mm package, pitch 0.8mm +TFBGA-100 +0 +100 +100 +Package_BGA +TFBGA-121_10x10mm_Layout11x11_P0.8mm +TFBGA-121, 11x11 raster, 10x10mm package, pitch 0.8mm; http://ww1.microchip.com/downloads/en/PackagingSpec/00000049BQ.pdf#p495 +BGA 121 0.8 +0 +121 +121 +Package_BGA +TFBGA-216_13x13mm_Layout15x15_P0.8mm +TFBGA-216, 15x15 raster, 13x13mm package, pitch 0.8mm; see section 6.8 of http://www.st.com/resource/en/datasheet/stm32f746zg.pdf +BGA 216 0.8 +0 +216 +216 +Package_BGA +TFBGA-265_14x14mm_Layout17x17_P0.8mm +TFBGA-265, 17x17 raster, 14x14mm package, pitch 0.8mm; see section 7.8 of http://www.st.com/resource/en/datasheet/DM00387108.pdf +BGA 265 0.8 +0 +265 +265 +Package_BGA +Texas_DSBGA-5_0.822x1.116mm_Layout2x1x2_P0.4mm +Texas Instruments, DSBGA, 0.822x1.116mm, 5 bump 2x1x2 array, NSMD pad definition (http://www.ti.com/lit/ds/symlink/opa330.pdf, http://www.ti.com/lit/an/snva009ag/snva009ag.pdf) +Texas Instruments DSBGA BGA YFF S-XBGA-N5 +0 +10 +5 +Package_BGA +Texas_DSBGA-6_0.9x1.4mm_Layout2x3_P0.5mm +Texas Instruments, DSBGA, 0.9x1.4mm, 6 bump 2x3 (perimeter) array, NSMD pad definition (http://www.ti.com/lit/ds/symlink/ts5a3159a.pdf) +Texas Instruments DSBGA BGA YZP R-XBGA-N6 +0 +12 +6 +Package_BGA +Texas_DSBGA-8_0.9x1.9mm_Layout2x4_P0.5mm +Texas Instruments, DSBGA, 0.9x1.9mm, 8 bump 2x4 (perimeter) array, NSMD pad definition (http://www.ti.com/lit/ds/symlink/txb0102.pdf, http://www.ti.com/lit/an/snva009ag/snva009ag.pdf) +Texas Instruments DSBGA BGA YZP R-XBGA-N8 +0 +16 +8 +Package_BGA +Texas_DSBGA-8_1.43x1.41mm_Layout3x3_P0.5mm +Texas Instruments, DSBGA, 1.43x1.41mm, 8 bump 3x3 (perimeter) array, NSMD pad definition (http://www.ti.com/lit/ds/symlink/lmc555.pdf, http://www.ti.com/lit/an/snva009ag/snva009ag.pdf) +Texas Instruments DSBGA BGA YZP R-XBGA-N8 +0 +16 +8 +Package_BGA +Texas_DSBGA-8_1.5195x1.5195mm_Layout3x3_P0.5mm +Texas Instruments, DSBGA, 1.5195x1.5195x0.600mm, 8 ball 3x3 area grid, YZR pad definition (http://www.ti.com/lit/ml/mxbg270/mxbg270.pdf) +BGA 8 0.5 +0 +8 +8 +Package_BGA +Texas_DSBGA-9_1.4715x1.4715mm_Layout3x3_P0.5mm +Texas Instruments, DSBGA, 1.4715x1.4715mm, 9 bump 3x3 array, NSMD pad definition (http://www.ti.com/lit/ds/symlink/lm4990.pdf, http://www.ti.com/lit/an/snva009ag/snva009ag.pdf) +Texas Instruments DSBGA BGA YZR0009 +0 +18 +9 +Package_BGA +Texas_DSBGA-10_1.36x1.86mm_Layout3x4_P0.5mm +Texas Instruments, DSBGA, 1.36x1.86mm, 10 bump 3x4 (perimeter) array, NSMD pad definition (http://www.ti.com/lit/ds/symlink/txs0104e.pdf, http://www.ti.com/lit/an/snva009ag/snva009ag.pdf) +Texas Instruments DSBGA BGA +0 +20 +10 +Package_BGA +Texas_DSBGA-12_1.36x1.86mm_Layout3x4_P0.5mm +Texas Instruments, DSBGA, 1.36x1.86mm, 12 bump 3x4 (area) array, NSMD pad definition (http://www.ti.com/lit/ds/symlink/txs0104e.pdf, http://www.ti.com/lit/an/snva009ag/snva009ag.pdf) +Texas Instruments DSBGA BGA +0 +24 +12 +Package_BGA +Texas_DSBGA-28_1.9x3.0mm_Layout4x7_P0.4mm +Texas Instruments, DSBGA, 3.0x1.9x0.625mm, 28 ball 7x4 area grid, NSMD pad definition (http://www.ti.com/lit/ds/symlink/bq51050b.pdf, http://www.ti.com/lit/an/snva009ag/snva009ag.pdf) +BGA 28 0.4 +0 +28 +28 +Package_BGA +Texas_DSBGA-49_3.33x3.488mm_Layout7x7_P0.4mm +Texas Instruments, DSBGA, 3.33x3.488x0.625mm, 49 ball 7x7 area grid, NSMD pad definition (http://www.ti.com/lit/ds/symlink/msp430f2234.pdf, http://www.ti.com/lit/an/snva009ag/snva009ag.pdf) +texas dsbga 49 +0 +49 +49 +Package_BGA +Texas_DSBGA-64_3.415x3.535mm_Layout8x8_P0.4mm +Texas Instruments, DSBGA, 3.415x3.535x0.625mm, 64 ball 8x8 area grid, NSMD pad definition (http://www.ti.com/lit/ds/slas718g/slas718g.pdf, http://www.ti.com/lit/an/snva009ag/snva009ag.pdf) +texas dsbga 64 +0 +64 +64 +Package_BGA +Texas_MicroStar_Junior_BGA-12_2.0x2.5mm_Layout4x3_P0.5mm +Texas Instruments, BGA Microstar Junior, 2x2.5mm, 12 bump 4x3 grid, NSMD pad definition (http://www.ti.com/lit/ds/symlink/txb0104.pdf, http://www.ti.com/lit/wp/ssyz015b/ssyz015b.pdf) +Texas_Junior_BGA-12 +0 +12 +12 +Package_BGA +Texas_MicroStar_Junior_BGA-80_5.0x5.0mm_Layout9x9_P0.5mm +Texas Instruments, BGA Microstar Junior, 5x5mm, 80 ball 9x9 grid, NSMD pad definition (http://www.ti.com/lit/ds/symlink/tlv320aic23b.pdf, http://www.ti.com/lit/wp/ssyz015b/ssyz015b.pdf) +Texas_Junior_BGA-80 +0 +80 +80 +Package_BGA +Texas_MicroStar_Junior_BGA-113_7.0x7.0mm_Layout12x12_P0.5mm +Texas Instruments, BGA Microstar Junior, 7x7mm, 113 ball 12x12 grid, NSMD pad definition (http://www.ti.com/lit/ml/mpbg674/mpbg674.pdf, http://www.ti.com/lit/wp/ssyz015b/ssyz015b.pdf) +Texas_Junior_BGA-113 +0 +113 +113 +Package_BGA +UCBGA-36_2.5x2.5mm_Layout6x6_P0.4mm +UCBGA-36, 6x6 raster, 2.5x2.5mm package, pitch 0.4mm; https://www.latticesemi.com/view_document?document_id=213 +BGA 36 0.4 +0 +36 +36 +Package_BGA +UCBGA-49_3x3mm_Layout7x7_P0.4mm +UCBGA-49, 7x7 raster, 3x3mm package, pitch 0.4mm; https://www.latticesemi.com/view_document?document_id=213 +BGA 49 0.4 +0 +49 +49 +Package_BGA +UCBGA-81_4x4mm_Layout9x9_P0.4mm +UCBGA-81, 9x9 raster, 4x4mm package, pitch 0.4mm; https://www.latticesemi.com/view_document?document_id=213 +BGA 81 0.4 +0 +81 +81 +Package_BGA +UFBGA-15_3.0x3.0mm_Layout4x4_P0.65mm +UFBGA-15, 4x4, 3x3mm package, pitch 0.65mm +UFBGA-15 +0 +15 +15 +Package_BGA +UFBGA-32_4.0x4.0mm_Layout6x6_P0.5mm +UFBGA-32, 6x6, 4x4mm package, pitch 0.5mm +UFBGA-32 +0 +32 +32 +Package_BGA +UFBGA-64_5x5mm_Layout8x8_P0.5mm +UFBGA-64, 8x8 raster, 5x5mm package, pitch 0.5mm; see section 7.1 of http://www.st.com/resource/en/datasheet/stm32f051t8.pdf +BGA 64 0.5 +0 +64 +64 +Package_BGA +UFBGA-100_7x7mm_Layout12x12_P0.5mm +UFBGA-100, 12x12 raster, 7x7mm package, pitch 0.5mm; see section 7.1 of http://www.st.com/resource/en/datasheet/stm32f103tb.pdf +BGA 100 0.5 +0 +100 +100 +Package_BGA +UFBGA-132_7x7mm_Layout12x12_P0.5mm +UFBGA-132, 12x12 raster, 7x7mm package, pitch 0.5mm; see section 7.4 of http://www.st.com/resource/en/datasheet/stm32l152zc.pdf +BGA 132 0.5 +0 +132 +132 +Package_BGA +UFBGA-132_7x7mm_P0.5mm +UFBGA 132 Pins, 0.5mm Pitch, 0.3mm Ball, http://www.st.com/resource/en/datasheet/stm32l486qg.pdf +ufbga bga small-pitch +0 +132 +132 +Package_BGA +UFBGA-144_7x7mm_Layout12x12_P0.5mm +UFBGA-144, 12x12 raster, 7x7mm package, pitch 0.5mm; see section 7.4 of http://www.st.com/resource/en/datasheet/stm32f446ze.pdf +BGA 144 0.5 +0 +144 +144 +Package_BGA +UFBGA-144_10x10mm_Layout12x12_P0.8mm +UFBGA-144, 12x12 raster, 10x10mm package, pitch 0.8mm; see section 7.5 of http://www.st.com/resource/en/datasheet/stm32f446ze.pdf +BGA 144 0.8 +0 +144 +144 +Package_BGA +UFBGA-169_7x7mm_Layout13x13_P0.5mm +UFBGA-169, 13x13 raster, 7x7mm package, pitch 0.5mm; see section 7.6 of http://www.st.com/resource/en/datasheet/stm32f429ng.pdf +BGA 169 0.5 +0 +169 +169 +Package_BGA +UFBGA-201_10x10mm_Layout15x15_P0.65mm +UFBGA-201, 15x15 raster, 10x10mm package, pitch 0.65mm; see section 7.6 of http://www.st.com/resource/en/datasheet/stm32f207vg.pdf +BGA 201 0.65 +0 +201 +201 +Package_BGA +VFBGA-49_5.0x5.0mm_Layout7x7_P0.65mm +VFBGA-49, 7x7, 5x5mm package, pitch 0.65mm +VFBGA-49 +0 +49 +49 +Package_BGA +VFBGA-100_7.0x7.0mm_Layout10x10_P0.65mm +VFBGA-100, 10x10, 7x7mm package, pitch 0.65mm +VFBGA-100 +0 +100 +100 +Package_BGA +WLP-4_0.73x0.73mm_Layout2x2_P0.35mm_Ball0.22mm_Pad0.2mm_NSMD +WLP-4, 2x2 raster, 0.73x0.73mm package, pitch 0.35mm; https://datasheets.maximintegrated.com/en/ds/MAX40200.pdf +BGA 4 0.35 +0 +4 +4 +Package_BGA +WLP-4_0.83x0.83mm_P0.4mm +WLP-4_0.83x0.83mm_P0.4mm https://pdfserv.maximintegrated.com/package_dwgs/21-100107.PDF, https://www.maximintegrated.com/en/app-notes/index.mvp/id/1891 +WLP-4 +0 +4 +4 +Package_BGA +WLP-4_0.86x0.86mm_P0.4mm +WLP-4_0.86x0.86mm_P0.4mm https://pdfserv.maximintegrated.com/package_dwgs/21-0612.PDF, https://www.maximintegrated.com/en/app-notes/index.mvp/id/1891 +WLP-4 +0 +4 +4 +Package_BGA +WLP-9_1.448x1.468mm_Layout3x3_P0.4mm_Ball0.27mm_Pad0.25mm +WLP-9, 1.448x1.468mm, 9 Ball, 3x3 Layout, 0.4mm Pitch, https://pdfserv.maximintegrated.com/package_dwgs/21-100168.PDF +BGA 9 0.4 +0 +9 +9 +Package_BGA +XBGA-121_10x10mm_Layout11x11_P0.8mm +XBGA-121, 11x11 raster, 10x10mm package, pitch 0.6mm; http://ww1.microchip.com/downloads/en/DeviceDoc/39969b.pdf +BGA 121 0.8 +0 +121 +121 +Package_BGA +XFBGA-36_3.5x3.5mm_Layout6x6_P0.5mm +XFBGA-36, https://www.nxp.com/docs/en/package-information/SOT1555-1.pdf +XFBGA-36 +0 +36 +36 +Package_BGA +XFBGA-64_5.0x5.0mm_Layout8x8_P0.5mm +XFBGA-64, https://www.nxp.com/docs/en/package-information/SOT1555-1.pdf +XFBGA-64 +0 +64 +64 +Package_BGA +XFBGA-121_8x8mm_Layout11x11_P0.65mm +XFBGA-121, https://www.nxp.com/docs/en/package-information/SOT1533-1.pdf +XFBGA-121 +0 +121 +121 +Package_BGA +Xilinx_CLG225 +Zynq-7000 BGA, 15x15 grid, 13x13mm package, 0.8mm pitch; https://www.xilinx.com/support/documentation/user_guides/ug865-Zynq-7000-Pkg-Pinout.pdf#page=77, NSMD pad definition Appendix A +BGA 225 0.8 CLG225 +0 +225 +225 +Package_BGA +Xilinx_CLG400 +Zynq-7000 BGA, 20x20 grid, 17x17mm package, 0.8mm pitch; https://www.xilinx.com/support/documentation/user_guides/ug865-Zynq-7000-Pkg-Pinout.pdf#page=78, NSMD pad definition Appendix A +BGA 400 0.8 CLG400 CL400 +0 +400 +400 +Package_BGA +Xilinx_CLG484_CLG485 +Zynq-7000 BGA, 22x22 grid, 19x19mm package, 0.8mm pitch; https://www.xilinx.com/support/documentation/user_guides/ug865-Zynq-7000-Pkg-Pinout.pdf#page=79, NSMD pad definition Appendix A +BGA 484 0.8 CLG484 CL484 CLG485 CL485 +0 +484 +484 +Package_BGA +Xilinx_CPG236 +Artix-7 BGA, 19x19 grid, 10x10mm package, 0.5mm pitch; https://www.xilinx.com/support/documentation/user_guides/ug475_7Series_Pkg_Pinout.pdf#page=266, NSMD pad definition Appendix A +BGA 238 0.5 CP236 CPG236 +0 +238 +238 +Package_BGA +Xilinx_CPG238 +Artix-7 BGA, 19x19 grid, 10x10mm package, 0.5mm pitch; https://www.xilinx.com/support/documentation/user_guides/ug475_7Series_Pkg_Pinout.pdf#page=267, NSMD pad definition Appendix A +BGA 238 0.5 CPG238 +0 +238 +238 +Package_BGA +Xilinx_CPGA196 +Spartan-7 BGA, 14x14 grid, 8x8mm package, 0.5mm pitch; https://www.xilinx.com/support/documentation/user_guides/ug475_7Series_Pkg_Pinout.pdf#page=260, NSMD pad definition Appendix A +BGA 196 0.5 CPGA196 +0 +196 +196 +Package_BGA +Xilinx_CSG324 +Artix-7 BGA, 18x18 grid, 15x15mm package, 0.8mm pitch; https://www.xilinx.com/support/documentation/user_guides/ug475_7Series_Pkg_Pinout.pdf#page=268, NSMD pad definition Appendix A +BGA 324 0.8 CS324 CSG324 +0 +324 +324 +Package_BGA +Xilinx_CSG325 +Artix-7 BGA, 18x18 grid, 15x15mm package, 0.8mm pitch; https://www.xilinx.com/support/documentation/user_guides/ug475_7Series_Pkg_Pinout.pdf#page=268, NSMD pad definition Appendix A +BGA 324 0.8 CS325 CSG235 +0 +324 +324 +Package_BGA +Xilinx_CSGA225 +Spartan-7 BGA, 15x15 grid, 13x13mm package, 0.8mm pitch; https://www.xilinx.com/support/documentation/user_guides/ug475_7Series_Pkg_Pinout.pdf#page=262, NSMD pad definition Appendix A +BGA 225 0.8 CSGA225 +0 +225 +225 +Package_BGA +Xilinx_CSGA324 +Spartan-7 BGA, 18x18 grid, 15x15mm package, 0.8mm pitch; https://www.xilinx.com/support/documentation/user_guides/ug475_7Series_Pkg_Pinout.pdf#page=263, NSMD pad definition Appendix A +BGA 324 0.8 CSGA324 +0 +324 +324 +Package_BGA +Xilinx_FBG484 +Artix-7, Kintex-7 and Zynq-7000 BGA, 22x22 grid, 23x23mm package, 1mm pitch; https://www.xilinx.com/support/documentation/user_guides/ug475_7Series_Pkg_Pinout.pdf#page=271, ttps://www.xilinx.com/support/documentation/user_guides/ug475_7Series_Pkg_Pinout.pdf#page=281, https://www.xilinx.com/support/documentation/user_guides/ug865-Zynq-7000-Pkg-Pinout.pdf#page=82, NSMD pad definition Appendix A +BGA 484 1 FB484 FBG484 FBV484 +0 +484 +484 +Package_BGA +Xilinx_FBG676 +Artix-7, Kintex-7 and Zynq-7000 BGA, 26x26 grid, 27x27mm package, 1mm pitch; https://www.xilinx.com/support/documentation/user_guides/ug475_7Series_Pkg_Pinout.pdf#page=273, https://www.xilinx.com/support/documentation/user_guides/ug475_7Series_Pkg_Pinout.pdf#page=284, https://www.xilinx.com/support/documentation/user_guides/ug865-Zynq-7000-Pkg-Pinout.pdf#page=84, NSMD pad definition Appendix A +BGA 676 1 FB676 FBG676 FBV676 +0 +676 +676 +Package_BGA +Xilinx_FBG900 +Kintex-7 BGA, 30x30 grid, 31x31mm package, 1mm pitch; https://www.xilinx.com/support/documentation/user_guides/ug475_7Series_Pkg_Pinout.pdf#page=289, NSMD pad definition Appendix A +BGA 900 1 FB900 FBG900 FBV900 +0 +900 +900 +Package_BGA +Xilinx_FFG676 +Kintex-7 and Zynq-7000 BGA, 26x26 grid, 27x27mm package, 1mm pitch; https://www.xilinx.com/support/documentation/user_guides/ug475_7Series_Pkg_Pinout.pdf#page=292, https://www.xilinx.com/support/documentation/user_guides/ug865-Zynq-7000-Pkg-Pinout.pdf#page=88, NSMD pad definition Appendix A +BGA 676 1 FF676 FFG676 FFV676 +0 +676 +676 +Package_BGA +Xilinx_FFG900_FFG901 +Kintex-7 and Zynq-7000 BGA, 30x30 grid, 31x31mm package, 1mm pitch; https://www.xilinx.com/support/documentation/user_guides/ug475_7Series_Pkg_Pinout.pdf#page=294, https://www.xilinx.com/support/documentation/user_guides/ug865-Zynq-7000-Pkg-Pinout.pdf#page=90, NSMD pad definition Appendix A +BGA 900 1 FF900 FFG900 FFV900 FF901 FFG901 FFV901 +0 +900 +900 +Package_BGA +Xilinx_FFG1156 +Artix-7, Kintex-7 and Zynq-7000 BGA, 34x34 grid, 35x35mm package, 1mm pitch; https://www.xilinx.com/support/documentation/user_guides/ug475_7Series_Pkg_Pinout.pdf#page=277, https://www.xilinx.com/support/documentation/user_guides/ug475_7Series_Pkg_Pinout.pdf#page=296, https://www.xilinx.com/support/documentation/user_guides/ug865-Zynq-7000-Pkg-Pinout.pdf#page=91, NSMD pad definition Appendix A +BGA 1156 1 FF1156 FFG1156 FFV1156 +0 +1156 +1156 +Package_BGA +Xilinx_FFG1157_FFG1158 +Virtex-7 BGA, 34x34 grid, 35x35mm package, 1mm pitch; https://www.xilinx.com/support/documentation/user_guides/ug475_7Series_Pkg_Pinout.pdf#page=299, NSMD pad definition Appendix A +BGA 1156 1 FF1157 FFG1157 FFV1157 FF1158 FFG1158 FFV1158 +0 +1156 +1156 +Package_BGA +Xilinx_FFG1761 +Virtex-7 BGA, 42x42 grid, 42.5x42.5mm package, 1mm pitch; https://www.xilinx.com/support/documentation/user_guides/ug475_7Series_Pkg_Pinout.pdf#page=300, NSMD pad definition Appendix A +BGA 1760 1 FF1761 FFG1761 +0 +1760 +1760 +Package_BGA +Xilinx_FFG1926_FFG1927_FFG1928_FFG1930 +Virtex-7 BGA, 44x44 grid, 45x45mm package, 1mm pitch; https://www.xilinx.com/support/documentation/user_guides/ug475_7Series_Pkg_Pinout.pdf#page=303, NSMD pad definition Appendix A +BGA 1924 1 FF1926 FFG1926 FF1927 FFG1927 FFV1927 FF1928 FFG1928 FF1930 FFG1930 +0 +1924 +1924 +Package_BGA +Xilinx_FFV1761 +Virtex-7 BGA, 42x42 grid, 42.5x42.5mm package, 1mm pitch; https://www.xilinx.com/support/documentation/user_guides/ug475_7Series_Pkg_Pinout.pdf#page=301, NSMD pad definition Appendix A +BGA 1760 1 FFV1761 +0 +1760 +1760 +Package_BGA +Xilinx_FGG484 +Artix-7 BGA, 22x22 grid, 23x23mm package, 1mm pitch; https://www.xilinx.com/support/documentation/user_guides/ug475_7Series_Pkg_Pinout.pdf#page=275, NSMD pad definition Appendix A +BGA 484 1 FG484 FGG484 +0 +484 +484 +Package_BGA +Xilinx_FGG676 +Artix-7 BGA, 26x26 grid, 27x27mm package, 1mm pitch; https://www.xilinx.com/support/documentation/user_guides/ug475_7Series_Pkg_Pinout.pdf#page=276, NSMD pad definition Appendix A +BGA 676 1 FG676 FGG676 +0 +676 +676 +Package_BGA +Xilinx_FGGA484 +Spartan-7 BGA, 22x22 grid, 23x23mm package, 1mm pitch; https://www.xilinx.com/support/documentation/user_guides/ug475_7Series_Pkg_Pinout.pdf#page=264, NSMD pad definition Appendix A +BGA 484 1 FGGA484 +0 +484 +484 +Package_BGA +Xilinx_FGGA676 +Spartan-7 BGA, 26x26 grid, 27x27mm package, 1mm pitch; https://www.xilinx.com/support/documentation/user_guides/ug475_7Series_Pkg_Pinout.pdf#page=265, NSMD pad definition Appendix A +BGA 676 1 FGGA676 +0 +676 +676 +Package_BGA +Xilinx_FHG1761 +Virtex-7 BGA, 42x42 grid, 45x45mm package, 1mm pitch; https://www.xilinx.com/support/documentation/user_guides/ug475_7Series_Pkg_Pinout.pdf#page=302, NSMD pad definition Appendix A +BGA 1760 1 FH1761 FHG1761 +0 +1760 +1760 +Package_BGA +Xilinx_FLG1925_FLG1926_FLG1928_FLG1930 +Virtex-7 BGA, 44x44 grid, 45x45mm package, 1mm pitch; https://www.xilinx.com/support/documentation/user_guides/ug475_7Series_Pkg_Pinout.pdf#page=304, NSMD pad definition Appendix A +BGA 1924 1 FL1925 FLG1925 FL1926 FLG1926 FL1928 FLG1928 FL1930 FLG1930 +0 +1924 +1924 +Package_BGA +Xilinx_FTG256 +Artix-7 BGA, 16x16 grid, 17x17mm package, 1mm pitch; https://www.xilinx.com/support/documentation/user_guides/ug475_7Series_Pkg_Pinout.pdf#page=269, NSMD pad definition Appendix A +BGA 256 1 FT256 FTG256 +0 +256 +256 +Package_BGA +Xilinx_FTGB196 +Spartan-7 BGA, 14x14 grid, 15x15mm package, 1mm pitch; https://www.xilinx.com/support/documentation/user_guides/ug475_7Series_Pkg_Pinout.pdf#page=261, NSMD pad definition Appendix A +BGA 196 1 FTGB196 +0 +196 +196 +Package_BGA +Xilinx_RB484 +Artix-7 and Zynq-7000 BGA, 22x22 grid, 23x23mm package, 1mm pitch; https://www.xilinx.com/support/documentation/user_guides/ug475_7Series_Pkg_Pinout.pdf#page=278, https://www.xilinx.com/support/documentation/user_guides/ug865-Zynq-7000-Pkg-Pinout.pdf#page=92, NSMD pad definition Appendix A +BGA 484 1 RB484 +0 +484 +484 +Package_BGA +Xilinx_RB676 +Artix-7 BGA, 26x26 grid, 27x27mm package, 1mm pitch; https://www.xilinx.com/support/documentation/user_guides/ug475_7Series_Pkg_Pinout.pdf#page=280, NSMD pad definition Appendix A +BGA 676 1 RB676 +0 +676 +676 +Package_BGA +Xilinx_RF676 +Kintex-7 BGA, 26x26 grid, 27x27mm package, 1mm pitch; https://www.xilinx.com/support/documentation/user_guides/ug475_7Series_Pkg_Pinout.pdf#page=297, NSMD pad definition Appendix A +BGA 676 1 RF676 +0 +676 +676 +Package_BGA +Xilinx_RF900 +Kintex-7 and Zynq-7000 BGA, 30x30 grid, 31x31mm package, 1mm pitch; https://www.xilinx.com/support/documentation/user_guides/ug475_7Series_Pkg_Pinout.pdf#page=298, https://www.xilinx.com/support/documentation/user_guides/ug865-Zynq-7000-Pkg-Pinout.pdf#page=94, NSMD pad definition Appendix A +BGA 900 1 RF900 +0 +900 +900 +Package_BGA +Xilinx_RF1156 +Zynq-7000 BGA, 34x34 grid, 35x35mm package, 1mm pitch; https://www.xilinx.com/support/documentation/user_guides/ug865-Zynq-7000-Pkg-Pinout.pdf#page=95, NSMD pad definition Appendix A +BGA 1156 1 RF1156 +0 +1156 +1156 +Package_BGA +Xilinx_RF1157_RF1158 +Virtex-7 BGA, 34x34 grid, 35x35mm package, 1mm pitch; https://www.xilinx.com/support/documentation/user_guides/ug475_7Series_Pkg_Pinout.pdf#page=305, NSMD pad definition Appendix A +BGA 1156 1 RF1157 RF1158 +0 +1156 +1156 +Package_BGA +Xilinx_RF1761 +Virtex-7 BGA, 42x42 grid, 42.5x42.5mm package, 1mm pitch; https://www.xilinx.com/support/documentation/user_guides/ug475_7Series_Pkg_Pinout.pdf#page=306, NSMD pad definition Appendix A +BGA 1760 1 RF1761 +0 +1760 +1760 +Package_BGA +Xilinx_RF1930 +Virtex-7 BGA, 44x44 grid, 45x45mm package, 1mm pitch; https://www.xilinx.com/support/documentation/user_guides/ug475_7Series_Pkg_Pinout.pdf#page=307, NSMD pad definition Appendix A +BGA 1924 1 RF1930 +0 +1924 +1924 +Package_BGA +Xilinx_RFG676 +Zynq-7000 BGA, 26x26 grid, 27x27mm package, 1mm pitch; https://www.xilinx.com/support/documentation/user_guides/ug865-Zynq-7000-Pkg-Pinout.pdf#page=93, NSMD pad definition Appendix A +BGA 676 1 RF676 RFG676 +0 +676 +676 +Package_BGA +Xilinx_RS484 +Artix-7 BGA, 22x22 grid, 19x19mm package, 0.8mm pitch; https://www.xilinx.com/support/documentation/user_guides/ug475_7Series_Pkg_Pinout.pdf#page=279, NSMD pad definition Appendix A +BGA 484 0.8 RS484 +0 +484 +484 +Package_BGA +Xilinx_SBG484 +Artix-7 BGA, 22x22 grid, 19x19mm package, 0.8mm pitch; https://www.xilinx.com/support/documentation/user_guides/ug475_7Series_Pkg_Pinout.pdf#page=270, NSMD pad definition Appendix A +BGA 484 0.8 SB484 SBG484 SBV484 +0 +484 +484 +Package_BGA +Xilinx_SBG485 +Zynq-7000 BGA, 22x22 grid, 19x19mm package, 0.8mm pitch; https://www.xilinx.com/support/documentation/user_guides/ug865-Zynq-7000-Pkg-Pinout.pdf#page=80, NSMD pad definition Appendix A +BGA 484 0.8 SBG485 SBV485 +0 +484 +484 +Package_CSP +Analog_LFCSP-8-1EP_3x3mm_P0.5mm_EP1.53x1.85mm +LFCSP, exposed pad, Analog Devices (http://www.analog.com/media/en/technical-documentation/data-sheets/ADL5542.pdf) +LFCSP 8 0.5 +0 +12 +5 +Package_CSP +LFCSP-8-1EP_3x2mm_P0.5mm_EP1.6x1.65mm +LFCSP 8pin Pitch 0.5mm, http://www.analog.com/media/en/package-pcb-resources/package/57080735642908cp_8_4.pdf +LFCSP 8pin thermal pad 3x2mm Pitch 0.5mm +0 +9 +9 +Package_CSP +LFCSP-8-1EP_3x3mm_P0.5mm_EP1.45x1.74mm +LFCSP, 8 Pin (https://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/lfcspcp/cp-8/CP_8_13.pdf), generated with kicad-footprint-generator ipc_dfn_qfn_generator.py +LFCSP DFN_QFN +0 +13 +9 +Package_CSP +LFCSP-8_2x2mm_P0.5mm +LFCSP 8pin Pitch 0.5mm, http://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/lfcspcp/cp_8_6.pdf +LFCSP 8pin 2x2mm Pitch 0.5mm +0 +8 +8 +Package_CSP +LFCSP-16-1EP_3x3mm_P0.5mm_EP1.3x1.3mm +LFCSP, 16 Pin (https://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/lfcspcp/cp-16/CP_16_21.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +LFCSP NoLead +0 +21 +17 +Package_CSP +LFCSP-16-1EP_3x3mm_P0.5mm_EP1.3x1.3mm_ThermalVias +LFCSP, 16 Pin (https://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/lfcspcp/cp-16/CP_16_21.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +LFCSP NoLead +0 +26 +17 +Package_CSP +LFCSP-16-1EP_3x3mm_P0.5mm_EP1.6x1.6mm +LFCSP, 16 Pin (https://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/lfcspcp/cp-16/CP_16_22.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +LFCSP NoLead +0 +21 +17 +Package_CSP +LFCSP-16-1EP_3x3mm_P0.5mm_EP1.6x1.6mm_ThermalVias +LFCSP, 16 Pin (https://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/lfcspcp/cp-16/CP_16_22.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +LFCSP NoLead +0 +26 +17 +Package_CSP +LFCSP-16-1EP_3x3mm_P0.5mm_EP1.7x1.7mm +LFCSP, 16 Pin (https://www.analog.com/media/en/technical-documentation/data-sheets/HMC7992.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +LFCSP NoLead +0 +21 +17 +Package_CSP +LFCSP-16-1EP_3x3mm_P0.5mm_EP1.7x1.7mm_ThermalVias +LFCSP, 16 Pin (https://www.analog.com/media/en/technical-documentation/data-sheets/HMC7992.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +LFCSP NoLead +0 +26 +17 +Package_CSP +LFCSP-16-1EP_3x3mm_P0.5mm_EP1.854x1.854mm +16-Lead Lead Frame Chip Scale Package, 3x3mm, 0.5mm pitch, 1.854mm thermal pad (CP-16-22, http://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/lfcspcp/cp_16_22.pdf) +LFCSP 16 0.5 +0 +21 +17 +Package_CSP +LFCSP-16-1EP_4x4mm_P0.65mm_EP2.1x2.1mm +LFCSP, 16 pin, 4x4mm, 2.1mm sq pad (http://www.analog.com/media/en/technical-documentation/data-sheets/ADG633.pdf) +LFCSP 16 0.65 +0 +21 +17 +Package_CSP +LFCSP-16-1EP_4x4mm_P0.65mm_EP2.4x2.4mm +LFCSP, 16 Pin (https://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/lfcspcp/cp-16/cp-16-40.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +LFCSP NoLead +0 +21 +17 +Package_CSP +LFCSP-16-1EP_4x4mm_P0.65mm_EP2.4x2.4mm_ThermalVias +LFCSP, 16 Pin (https://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/lfcspcp/cp-16/cp-16-40.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +LFCSP NoLead +0 +31 +17 +Package_CSP +LFCSP-20-1EP_4x4mm_P0.5mm_EP2.1x2.1mm +20-Lead Frame Chip Scale Package - 4x4x0.9 mm Body [LFCSP], (see http://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/lfcspcp/cp_20_6.pdf) +LFCSP 0.5 +0 +25 +21 +Package_CSP +LFCSP-20-1EP_4x4mm_P0.5mm_EP2.5x2.5mm +LFCSP, 20 Pin (https://www.analog.com/media/en/technical-documentation/data-sheets/AD7682_7689.pdf), generated with kicad-footprint-generator ipc_dfn_qfn_generator.py +LFCSP DFN_QFN +0 +25 +21 +Package_CSP +LFCSP-20-1EP_4x4mm_P0.5mm_EP2.5x2.5mm_ThermalVias +LFCSP, 20 Pin (https://www.analog.com/media/en/technical-documentation/data-sheets/AD7682_7689.pdf), generated with kicad-footprint-generator ipc_dfn_qfn_generator.py +LFCSP DFN_QFN +0 +35 +21 +Package_CSP +LFCSP-20-1EP_4x4mm_P0.5mm_EP2.6x2.6mm +LFCSP, 20 Pin (https://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/lfcspcp/cp-20/CP_20_8.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +LFCSP NoLead +0 +25 +21 +Package_CSP +LFCSP-20-1EP_4x4mm_P0.5mm_EP2.6x2.6mm_ThermalVias +LFCSP, 20 Pin (https://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/lfcspcp/cp-20/CP_20_8.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +LFCSP NoLead +0 +35 +21 +Package_CSP +LFCSP-24-1EP_4x4mm_P0.5mm_EP2.3x2.3mm +LFCSP, 24 Pin (https://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/lfcspcp/cp_24_14.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +LFCSP NoLead +0 +29 +25 +Package_CSP +LFCSP-24-1EP_4x4mm_P0.5mm_EP2.3x2.3mm_ThermalVias +LFCSP, 24 Pin (https://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/lfcspcp/cp_24_14.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +LFCSP NoLead +0 +39 +25 +Package_CSP +LFCSP-24-1EP_4x4mm_P0.5mm_EP2.5x2.5mm +LFCSP, 24 Pin (https://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/lfcspcp/cp_24_7.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +LFCSP NoLead +0 +29 +25 +Package_CSP +LFCSP-24-1EP_4x4mm_P0.5mm_EP2.5x2.5mm_ThermalVias +LFCSP, 24 Pin (https://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/lfcspcp/cp_24_7.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +LFCSP NoLead +0 +39 +25 +Package_CSP +LFCSP-28-1EP_5x5mm_P0.5mm_EP3.14x3.14mm +LFCSP, 28 Pin (https://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/lfcspcp/cp-28/CP_28_10.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +LFCSP NoLead +0 +33 +29 +Package_CSP +LFCSP-28-1EP_5x5mm_P0.5mm_EP3.14x3.14mm_ThermalVias +LFCSP, 28 Pin (https://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/lfcspcp/cp-28/CP_28_10.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +LFCSP NoLead +0 +43 +29 +Package_CSP +LFCSP-32-1EP_5x5mm_P0.5mm_EP3.1x3.1mm +LFCSP, 32 Pin (https://www.analog.com/media/en/package-pcb-resources/package/414143737956480539664569cp_32_2.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +LFCSP NoLead +0 +42 +33 +Package_CSP +LFCSP-32-1EP_5x5mm_P0.5mm_EP3.1x3.1mm_ThermalVias +LFCSP, 32 Pin (https://www.analog.com/media/en/package-pcb-resources/package/414143737956480539664569cp_32_2.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +LFCSP NoLead +0 +59 +33 +Package_CSP +LFCSP-32-1EP_5x5mm_P0.5mm_EP3.25x3.25mm +32-Lead Frame Chip Scale Package LFCSP (5mm x 5mm); (see http://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/lfcspcp/cp-32/CP_32_27.pdf +LFCSP 0.5 +0 +37 +33 +Package_CSP +LFCSP-48-1EP_7x7mm_P0.5mm_EP4.1x4.1mm +LFCSP, 48 Pin (https://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/lfcspcp/cp_48_5.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +LFCSP NoLead +0 +58 +49 +Package_CSP +LFCSP-48-1EP_7x7mm_P0.5mm_EP4.1x4.1mm_ThermalVias +LFCSP, 48 Pin (https://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/lfcspcp/cp_48_5.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +LFCSP NoLead +0 +75 +49 +Package_CSP +LFCSP-64-1EP_9x9mm_P0.5mm_EP5.21x5.21mm +LFCSP, 64 Pin (https://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/lfcspcp/cp_64_7.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +LFCSP NoLead +0 +69 +65 +Package_CSP +LFCSP-64-1EP_9x9mm_P0.5mm_EP5.21x5.21mm_ThermalVias +LFCSP, 64 Pin (https://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/lfcspcp/cp_64_7.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +LFCSP NoLead +0 +86 +65 +Package_CSP +LFCSP-72-1EP_10x10mm_P0.5mm_EP5.3x5.3mm +LFCSP, 72 Pin (http://www.analog.com/media/en/technical-documentation/data-sheets/ADAU1452_1451_1450.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +LFCSP NoLead +0 +82 +73 +Package_CSP +LFCSP-72-1EP_10x10mm_P0.5mm_EP5.3x5.3mm_ThermalVias +LFCSP, 72 Pin (http://www.analog.com/media/en/technical-documentation/data-sheets/ADAU1452_1451_1450.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +LFCSP NoLead +0 +99 +73 +Package_CSP +LFCSP-72-1EP_10x10mm_P0.5mm_EP6.15x6.15mm +72-Lead Frame Chip Scale Package - 10x10x0.9 mm Body [LFCSP]; (see https://www.intersil.com/content/dam/Intersil/documents/l72_/l72.10x10c.pdf) +LFCSP 0.5 +0 +77 +73 +Package_CSP +LFCSP-VQ-24-1EP_4x4mm_P0.5mm_EP2.642x2.642mm +LFCSP VQ, 24 pin, exposed pad, 4x4mm body, pitch 0.5mm (http://www.analog.com/media/en/package-pcb-resources/package/56702234806764cp_24_3.pdf, http://www.analog.com/media/en/technical-documentation/data-sheets/ADL5801.pdf) +LFCSP 0.5 +0 +29 +25 +Package_CSP +LFCSP-VQ-48-1EP_7x7mm_P0.5mm +LFCSP VQ, 48 pin, exposed pad, 7x7mm body (http://www.analog.com/media/en/technical-documentation/data-sheets/AD7951.pdf, http://www.analog.com/en/design-center/packaging-quality-symbols-footprints/symbols-and-footprints/AD7951.html) +LFCSP 48 +0 +49 +49 +Package_CSP +LFCSP-WD-8-1EP_3x3mm_P0.65mm_EP1.6x2.44mm +LFCSP-WD, 8 Pin (https://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/lfcspcp/CP_8_19.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +LFCSP-WD NoLead +0 +15 +9 +Package_CSP +LFCSP-WD-8-1EP_3x3mm_P0.65mm_EP1.6x2.44mm_ThermalVias +LFCSP-WD, 8 Pin (https://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/lfcspcp/CP_8_19.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +LFCSP-WD NoLead +0 +22 +9 +Package_CSP +LFCSP-WD-10-1EP_3x3mm_P0.5mm_EP1.64x2.38mm +LFCSP-WD, 10 Pin (https://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/lfcspcp/cp-10/CP_10_9.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +LFCSP-WD NoLead +0 +17 +11 +Package_CSP +LFCSP-WD-10-1EP_3x3mm_P0.5mm_EP1.64x2.38mm_ThermalVias +LFCSP-WD, 10 Pin (https://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/lfcspcp/cp-10/CP_10_9.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +LFCSP-WD NoLead +0 +24 +11 +Package_CSP +ST_WLCSP-25_Die425 +WLCSP-25, 5x5 raster, 2.097x2.493mm package, pitch 0.4mm; see section 7.6 of http://www.st.com/resource/en/datasheet/stm32l031f6.pdf +BGA 25 0.4 +0 +25 +25 +Package_CSP +ST_WLCSP-25_Die444 +WLCSP-25, 5x5 raster, 2.423x2.325mm package, pitch 0.4mm; see section 7.5 of http://www.st.com/resource/en/datasheet/stm32f031k6.pdf +BGA 25 0.4 +0 +25 +25 +Package_CSP +ST_WLCSP-25_Die457 +WLCSP-25, 5x5 raster, 2.133x2.070mm package, pitch 0.4mm; see section 7.3 of http://www.st.com/resource/en/datasheet/stm32l011k3.pdf +BGA 25 0.4 +0 +25 +25 +Package_CSP +ST_WLCSP-36_Die417 +WLCSP-36, 6x6 raster, 2.61x2.88mm package, pitch 0.4mm; see section 7.4 of http://www.st.com/resource/en/datasheet/stm32l052t8.pdf +BGA 36 0.4 +0 +36 +36 +Package_CSP +ST_WLCSP-36_Die440 +WLCSP-36, 6x6 raster, 2.605x2.703mm package, pitch 0.4mm; see section 7.5 of http://www.st.com/resource/en/datasheet/stm32f051t8.pdf +BGA 36 0.4 +0 +36 +36 +Package_CSP +ST_WLCSP-36_Die445 +WLCSP-36, 6x6 raster, 2.605x2.703mm package, pitch 0.4mm; see section 7.3 of http://www.st.com/resource/en/datasheet/stm32f042k6.pdf +BGA 36 0.4 +0 +36 +36 +Package_CSP +ST_WLCSP-36_Die458 +WLCSP-36, 6x6 raster, 2.553x2.579mm package, pitch 0.4mm; see section 7.1 of http://www.st.com/resource/en/datasheet/stm32f410t8.pdf +BGA 36 0.4 +0 +36 +36 +Package_CSP +ST_WLCSP-49_Die423 +WLCSP-49, 7x7 raster, 2.965x2.965mm package, pitch 0.4mm; see section 7.1 of http://www.st.com/resource/en/datasheet/stm32f401vc.pdf +BGA 49 0.4 +0 +49 +49 +Package_CSP +ST_WLCSP-49_Die431 +WLCSP-49, 7x7 raster, 2.999x3.185mm package, pitch 0.4mm; see section 7.1 of http://www.st.com/resource/en/datasheet/stm32f411vc.pdf +BGA 49 0.4 +0 +49 +49 +Package_CSP +ST_WLCSP-49_Die433 +WLCSP-49, 7x7 raster, 3.029x3.029mm package, pitch 0.4mm; see section 7.1.1 of http://www.st.com/resource/en/datasheet/stm32f401ce.pdf +BGA 49 0.4 +0 +49 +49 +Package_CSP +ST_WLCSP-49_Die435 +WLCSP-49, 7x7 raster, 3.141x3.127mm package, pitch 0.4mm; see section 7.6 of http://www.st.com/resource/en/datasheet/DM00257211.pdf +BGA 49 0.4 +0 +49 +49 +Package_CSP +ST_WLCSP-49_Die438 +WLCSP-49, 7x7 raster, 3.89x3.74mm package, pitch 0.5mm; see section 7.5 of http://www.st.com/resource/en/datasheet/stm32f303r8.pdf +BGA 49 0.5 +0 +49 +49 +Package_CSP +ST_WLCSP-49_Die439 +WLCSP-49, 7x7 raster, 3.417x3.151mm package, pitch 0.4mm; see section 7.1 of http://www.st.com/resource/en/datasheet/stm32f301r8.pdf +BGA 49 0.4 +0 +49 +49 +Package_CSP +ST_WLCSP-49_Die447 +WLCSP-49, 7x7 raster, 3.294x3.258mm package, pitch 0.4mm; see section 7.6 of http://www.st.com/resource/en/datasheet/stm32l072kz.pdf +BGA 49 0.4 +0 +49 +49 +Package_CSP +ST_WLCSP-49_Die448 +WLCSP-49, 7x7 raster, 3.277x3.109mm package, pitch 0.4mm; see section 7.4 of http://www.st.com/resource/en/datasheet/stm32f071v8.pdf +BGA 49 0.4 +0 +49 +49 +Package_CSP +ST_WLCSP-63_Die427 +WLCSP-63, 7x9 raster, 3.228x4.164mm package, pitch 0.4mm; see section 7.6 of http://www.st.com/resource/en/datasheet/stm32l151cc.pdf +BGA 63 0.4 +0 +63 +63 +Package_CSP +ST_WLCSP-64_Die414 +WLCSP-64, 8x8 raster, 4.466x4.395mm package, pitch 0.5mm; see section 6.3 of http://www.st.com/resource/en/datasheet/stm32f103ze.pdf +BGA 64 0.5 +0 +64 +64 +Package_CSP +ST_WLCSP-64_Die427 +WLCSP-64, 8x8 raster, 4.539x4.911mm package, pitch 0.4mm; see section 7.5 of http://www.st.com/resource/en/datasheet/stm32l152zc.pdf +BGA 64 0.4 +0 +64 +64 +Package_CSP +ST_WLCSP-64_Die435 +WLCSP-64, 8x8 raster, 3.141x3.127mm package, pitch 0.35mm; see section 7.5 of http://www.st.com/resource/en/datasheet/DM00257211.pdf +BGA 64 0.35 +0 +64 +64 +Package_CSP +ST_WLCSP-64_Die436 +WLCSP-64, 8x8 raster, 4.539x4.911mm package, pitch 0.4mm; see section 7.5 of http://www.st.com/resource/en/datasheet/stm32l152zd.pdf +BGA 64 0.4 +0 +64 +64 +Package_CSP +ST_WLCSP-64_Die441 +WLCSP-64, 8x8 raster, 3.623x3.651mm package, pitch 0.4mm; see section 7.1 of http://www.st.com/resource/en/datasheet/DM00213872.pdf +BGA 64 0.4 +0 +64 +64 +Package_CSP +ST_WLCSP-64_Die442 +WLCSP-64, 8x8 raster, 3.347x3.585mm package, pitch 0.4mm; see section 7.4 of http://www.st.com/resource/en/datasheet/stm32f091vb.pdf +BGA 64 0.4 +0 +64 +64 +Package_CSP +ST_WLCSP-64_Die462 +WLCSP-64, 8x8 raster, 3.357x3.657mm package, pitch 0.4mm; see section 7.5 of http://www.st.com/resource/en/datasheet/DM00340475.pdf +BGA 64 0.4 +0 +64 +64 +Package_CSP +ST_WLCSP-66_Die411 +WLCSP-66, 9x9 raster, 3.639x3.971mm package, pitch 0.4mm; see section 7.2 of http://www.st.com/resource/en/datasheet/stm32f207vg.pdf +BGA 66 0.4 +0 +66 +66 +Package_CSP +ST_WLCSP-66_Die432 +WLCSP-66, 8x9 raster, 3.767x4.229mm package, pitch 0.4mm; see section 7.2 of http://www.st.com/resource/en/datasheet/stm32f378vc.pdf +BGA 66 0.4 +0 +66 +66 +Package_CSP +ST_WLCSP-72_Die415 +WLCSP-72, 9x9 raster, 4.4084x3.7594mm package, pitch 0.4mm; see section 7.5 of http://www.st.com/resource/en/datasheet/stm32l476me.pdf +BGA 72 0.4 +0 +72 +72 +Package_CSP +ST_WLCSP-81_Die415 +WLCSP-81, 9x9 raster, 4.4084x3.7594mm package, pitch 0.4mm; see section 7.4 of http://www.st.com/resource/en/datasheet/stm32l476me.pdf +BGA 81 0.4 +0 +81 +81 +Package_CSP +ST_WLCSP-81_Die421 +WLCSP-81, 9x9 raster, 3.693x3.815mm package, pitch 0.4mm; see section 7.6 of http://www.st.com/resource/en/datasheet/stm32f446ze.pdf +BGA 81 0.4 +0 +81 +81 +Package_CSP +ST_WLCSP-81_Die463 +WLCSP-81, 9x9 raster, 4.039x3.951mm package, pitch 0.4mm; see section 7.1 of http://www.st.com/resource/en/datasheet/DM00282249.pdf +BGA 81 0.4 +0 +81 +81 +Package_CSP +ST_WLCSP-90_Die413 +WLCSP-90, 10x9 raster, 4.223x3.969mm package, pitch 0.4mm; see section 6.1 of http://www.st.com/resource/en/datasheet/stm32f405og.pdf +BGA 90 0.4 +0 +90 +90 +Package_CSP +ST_WLCSP-100_Die422 +WLCSP-100, 10x10 raster, 4.201x4.663mm package, pitch 0.4mm; see section 7.4 of http://www.st.com/resource/en/datasheet/stm32f302vc.pdf +BGA 100 0.4 +0 +100 +100 +Package_CSP +ST_WLCSP-100_Die446 +WLCSP-100, 10x10 raster, 4.775x5.041mm package, pitch 0.4mm; see section 7.5 of http://www.st.com/resource/en/datasheet/stm32f303zd.pdf +BGA 100 0.4 +0 +100 +100 +Package_CSP +ST_WLCSP-100_Die452 +WLCSP-100, 10x10 raster, 4.201x4.663mm package, pitch 0.4mm; see section 7.7 of http://www.st.com/resource/en/datasheet/DM00330506.pdf +BGA 100 0.4 +0 +100 +100 +Package_CSP +ST_WLCSP-100_Die461 +WLCSP-100, 10x10 raster, 4.618x4.142mm package, pitch 0.4mm; see section 7.5 of http://www.st.com/resource/en/datasheet/DM00284211.pdf +BGA 100 0.4 +0 +100 +100 +Package_CSP +ST_WLCSP-104_Die437 +WLCSP-104, 9x12 raster, 4.095x5.094mm package, pitch 0.4mm; see section 7.5 of http://www.st.com/resource/en/datasheet/stm32l152ze.pdf +BGA 104 0.4 +0 +104 +104 +Package_CSP +ST_WLCSP-143_Die419 +WLCSP-143, 11x13 raster, 4.521x5.547mm package, pitch 0.4mm; see section 7.2 of http://www.st.com/resource/en/datasheet/stm32f429ng.pdf +BGA 143 0.4 +0 +143 +143 +Package_CSP +ST_WLCSP-143_Die449 +WLCSP-143, 11x13 raster, 4.539x5.849mm package, pitch 0.4mm; see section 6.3 of http://www.st.com/resource/en/datasheet/stm32f746zg.pdf +BGA 143 0.4 +0 +143 +143 +Package_CSP +ST_WLCSP-144_Die470 +WLCSP-144, 12x12 raster, 5.24x5.24mm package, pitch 0.4mm; see section 7.4 of http://www.st.com/resource/en/datasheet/DM00366448.pdf +BGA 144 0.4 +0 +144 +144 +Package_CSP +ST_WLCSP-168_Die434 +WLCSP-168, 12x14 raster, 4.891x5.692mm package, pitch 0.4mm; see section 6.3 of http://www.st.com/resource/en/datasheet/stm32f469ni.pdf +BGA 168 0.4 +0 +168 +168 +Package_CSP +ST_WLCSP-180_Die451 +WLCSP-180, 13x14 raster, 5.537x6.095mm package, pitch 0.4mm; see section 6.6 of http://www.st.com/resource/en/datasheet/DM00273119.pdf +BGA 180 0.4 +0 +180 +180 +Package_CSP +WLCSP-6_1.4x1.0mm_P0.4mm +6pin Pitch 0.4mm +6pin Pitch 0.4mm WLCSP +0 +6 +6 +Package_CSP +WLCSP-8_1.58x1.63x0.35mm_Layout3x5_P0.35x0.4mm_Ball0.25mm_Pad0.25mm_NSMD +WLCSP/XFBGA 8-pin package, staggered pins, http://www.adestotech.com/wp-content/uploads/DS-AT25DF041B_040.pdf +WLCSP WLCSP-8 XFBGA XFBGA-8 CSP BGA Chip-Scale Glass-Top +0 +8 +8 +Package_CSP +WLCSP-12_1.56x1.56mm_P0.4mm +WLCSP 12 1.56x1.56 https://ae-bst.resource.bosch.com/media/_tech/media/datasheets/BST-BMM150-DS001-01.pdf +BMM150 WLCSP +0 +12 +12 +Package_CSP +WLCSP-12_1.403x1.555mm_P0.4mm_Stagger +WLCSP-12, 6x4 raster staggered array, 1.403x1.555mm package, pitch 0.4mm; http://ww1.microchip.com/downloads/en/devicedoc/atmel-8235-8-bit-avr-microcontroller-attiny20_datasheet.pdf#page=208 +CSP 12 0.2x0.346333 +0 +12 +12 +Package_CSP +WLCSP-16_4x4_B2.17x2.32mm_P0.5mm +WLCSP-16, http://www.nxp.com/documents/data_sheet/LPC1102_1104.pdf, http://www.nxp.com/assets/documents/data/en/application-notes/AN3846.pdf +WLCSP-16 NXP +0 +16 +16 +Package_CSP +WLCSP-20_1.934x2.434mm_Layout4x5_P0.4mm +WLCSP-20, 4x5 raster, 1.934x2.434mm package, pitch 0.4mm; see section 36.2.3 of http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-42363-SAM-D11_Datasheet.pdf +BGA 20 0.4 +0 +20 +20 +Package_CSP +WLCSP-20_1.994x1.94mm_Layout4x5_P0.4mm +WLCSP-20, https://www.nxp.com/docs/en/package-information/98ASA00539D.pdf +WLCSP-20 +0 +20 +20 +Package_CSP +WLCSP-20_1.994x1.609mm_Layout5x4_P0.4mm +WLCSP-20, https://www.nxp.com/docs/en/package-information/98ASA00676D.pdf +WLCSP-20 +0 +20 +20 +Package_CSP +WLCSP-36_2.82x2.67mm_Layout6x6_P0.4mm +WLCSP-36, https://www.nxp.com/docs/en/package-information/98ASA00949D.pdf +WLCSP-36 +0 +36 +36 +Package_CSP +WLCSP-36_2.374x2.459mm_Layout6x6_P0.35mm +WLCSP-36, https://www.nxp.com/docs/en/package-information/98ASA00604D.pdf +WLCSP-36 +0 +36 +36 +Package_CSP +WLCSP-56_3.170x3.444mm_Layout7x8_P0.4mm +WLCSP-56, 7x8 raster, 3.170x3.444mm package, pitch 0.4mm; see section 48.2.4 of http://ww1.microchip.com/downloads/en/DeviceDoc/DS60001479B.pdf +BGA 56 0.4 +0 +56 +56 +Package_CSP +WLCSP-81_4.41x3.76mm_P0.4mm +WLCSP-81, 9x9, 0.4mm Pitch, http://www.st.com/content/ccc/resource/technical/document/technical_note/92/30/3c/a1/4c/bb/43/6f/DM00103228.pdf/files/DM00103228.pdf/jcr:content/translations/en.DM00103228.pdf +WLCSP ST +0 +81 +81 +Package_CSP +pSemi_CSP-16_1.64x2.04mm_P0.4mm +pSemi CSP-16 1.64x2.04x0.285mm (http://www.psemi.com/pdf/datasheets/pe29101ds.pdf, http://www.psemi.com/pdf/app_notes/an77.pdf) +psemi csp 16 +0 +16 +16 +Package_CSP +pSemi_CSP-16_1.64x2.04mm_P0.4mm_Pad0.18mm +pSemi CSP-16 1.64x2.04x0.285mm (http://www.psemi.com/pdf/datasheets/pe29101ds.pdf, http://www.psemi.com/pdf/app_notes/an77.pdf) +psemi csp 16 +0 +16 +16 +Package_DFN_QFN +AMS_QFN-4-1EP_2x2mm_P0.95mm_EP0.7x1.6mm +UFD Package, 4-Lead Plastic QFN (2mm x 2mm), http://ams.com/eng/content/download/950231/2267959/483138 +QFN 0.95 +0 +6 +5 +Package_DFN_QFN +Cypress_QFN-56-1EP_8x8mm_P0.5mm_EP6.22x6.22mm_ThermalVias +56-Lead Plastic Quad Flat, No Lead Package (ML) - 8x8x0.9 mm Body [QFN] (see datasheet at http://www.cypress.com/file/138911/download and app note at http://www.cypress.com/file/140006/download) +QFN 0.5 +0 +87 +57 +Package_DFN_QFN +DFN-6-1EP_1.2x1.2mm_P0.4mm_EP0.3x0.94mm_PullBack +DFN, 6 Pin (http://www.onsemi.com/pub/Collateral/NCP133-D.PDF), generated with kicad-footprint-generator ipc_noLead_generator.py +DFN NoLead +0 +9 +7 +Package_DFN_QFN +DFN-6-1EP_2x1.8mm_P0.5mm_EP1.2x1.6mm +DFN, 6 Pin (https://www.diodes.com/assets/Package-Files/U-DFN2018-6.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +DFN NoLead +0 +11 +7 +Package_DFN_QFN +DFN-6-1EP_2x2mm_P0.5mm_EP0.6x1.37mm +DFN, 6 Pin (https://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/ltc-legacy-dfn/05081703_C_DC6.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +DFN NoLead +0 +9 +7 +Package_DFN_QFN +DFN-6-1EP_2x2mm_P0.5mm_EP0.61x1.42mm +DC6 Package; 6-Lead Plastic DFN (2mm x 2mm) (see Linear Technology DFN_6_05-08-1703.pdf) +DFN 0.5 +0 +9 +7 +Package_DFN_QFN +DFN-6-1EP_2x2mm_P0.65mm_EP1x1.6mm +6-Lead Plastic Dual Flat, No Lead Package (MA) - 2x2x0.9 mm Body [DFN] (see Microchip Packaging Specification 00000049BS.pdf) +DFN 0.65 +0 +9 +7 +Package_DFN_QFN +DFN-6-1EP_3x2mm_P0.5mm_EP1.65x1.35mm +DFN, 6 Pin (https://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/ltc-legacy-dfn/(DCB6)%20DFN%2005-08-1715%20Rev%20A.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +DFN NoLead +0 +11 +7 +Package_DFN_QFN +DFN-6-1EP_3x3mm_P0.95mm_EP1.7x2.6mm +DFN6 3*3 MM, 0.95 PITCH; CASE 506AH-01 (see ON Semiconductor 506AH.PDF) +DFN 0.95 +0 +13 +7 +Package_DFN_QFN +DFN-6-1EP_3x3mm_P1mm_EP1.5x2.4mm +DFN, 6 Pin (https://www.silabs.com/documents/public/data-sheets/Si7020-A20.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +DFN NoLead +0 +11 +7 +Package_DFN_QFN +DFN-6_1.3x1.2mm_P0.4mm +6-Lead Plastic DFN (1.3mm x 1.2mm) +DFN 0.4 +0 +6 +6 +Package_DFN_QFN +DFN-8-1EP_2x2mm_P0.5mm_EP0.6x1.2mm +DFN, 8 Pin (https://www.qorvo.com/products/d/da001879), generated with kicad-footprint-generator ipc_noLead_generator.py +DFN NoLead +0 +11 +9 +Package_DFN_QFN +DFN-8-1EP_2x2mm_P0.5mm_EP0.7x1.3mm +DFN, 8 Pin (https://www.onsemi.com/pub/Collateral/NUF4401MN-D.PDF#page=6), generated with kicad-footprint-generator ipc_noLead_generator.py +DFN NoLead +0 +13 +9 +Package_DFN_QFN +DFN-8-1EP_2x2mm_P0.5mm_EP0.9x1.3mm +DFN, 8 Pin (https://www.onsemi.com/pub/Collateral/NB3N551-D.PDF#page=7), generated with kicad-footprint-generator ipc_noLead_generator.py +DFN NoLead +0 +13 +9 +Package_DFN_QFN +DFN-8-1EP_2x2mm_P0.5mm_EP0.9x1.5mm +DFN, 8 Pin (http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-8127-AVR-8-bit-Microcontroller-ATtiny4-ATtiny5-ATtiny9-ATtiny10_Datasheet.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +DFN NoLead +0 +13 +9 +Package_DFN_QFN +DFN-8-1EP_2x2mm_P0.5mm_EP0.9x1.6mm +DFN, 8 Pin (https://www.st.com/resource/en/datasheet/lm2903.pdf#page=16), generated with kicad-footprint-generator ipc_noLead_generator.py +DFN NoLead +0 +10 +9 +Package_DFN_QFN +DFN-8-1EP_2x2mm_P0.5mm_EP1.05x1.75mm +DFN8 2x2, 0.5P; CASE 506CN (see ON Semiconductor 506CN.PDF) +DFN 0.5 +0 +11 +9 +Package_DFN_QFN +DFN-8-1EP_2x2mm_P0.45mm_EP0.64x1.38mm +DC8 Package 8-Lead Plastic DFN (2mm x 2mm) (see Linear Technology DFN_8_05-08-1719.pdf) +DFN 0.45 +0 +11 +9 +Package_DFN_QFN +DFN-8-1EP_2x3mm_P0.5mm_EP0.56x2.15mm +DFN, 8 Pin (https://www.analog.com/media/en/technical-documentation/data-sheets/2451fg.pdf#page=17), generated with kicad-footprint-generator ipc_noLead_generator.py +DFN NoLead +0 +11 +9 +Package_DFN_QFN +DFN-8-1EP_2x3mm_P0.5mm_EP0.61x2.2mm +DDB Package; 8-Lead Plastic DFN (3mm x 2mm) (see Linear Technology DFN_8_05-08-1702.pdf) +DFN 0.5 +0 +12 +9 +Package_DFN_QFN +DFN-8-1EP_3x2mm_P0.5mm_EP1.3x1.5mm +8-Lead Plastic Dual Flat, No Lead Package (8MA2) - 2x3x0.6 mm Body [UDFN] (see Atmel-8815-SEEPROM-AT24CS01-02-Datasheet.pdf) +DFN 0.5 +0 +13 +9 +Package_DFN_QFN +DFN-8-1EP_3x2mm_P0.5mm_EP1.7x1.4mm +DFN, 8 Pin (http://ww1.microchip.com/downloads/en/DeviceDoc/8L_DFN_2x3x0_9_MC_C04-123C.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +DFN NoLead +0 +13 +9 +Package_DFN_QFN +DFN-8-1EP_3x2mm_P0.5mm_EP1.36x1.46mm +8-Lead Plastic Dual Flat, No Lead Package (8MA2) - 2x3x0.6 mm Body (http://ww1.microchip.com/downloads/en/DeviceDoc/20005010F.pdf) +DFN 0.5 +0 +13 +9 +Package_DFN_QFN +DFN-8-1EP_3x2mm_P0.5mm_EP1.75x1.45mm +8-Lead Plastic Dual Flat, No Lead Package (MC) - 2x3x0.9 mm Body [DFN] (see Microchip Packaging Specification 00000049BS.pdf) +DFN 0.5 +0 +13 +9 +Package_DFN_QFN +DFN-8-1EP_3x2mm_P0.45mm_EP1.66x1.36mm +DCB Package 8-Lead Plastic DFN (2mm x 3mm) (see Linear Technology DFN_8_05-08-1718.pdf) +DFN 0.45 +0 +13 +9 +Package_DFN_QFN +DFN-8-1EP_3x3mm_P0.5mm_EP1.66x2.38mm +DD Package; 8-Lead Plastic DFN (3mm x 3mm) (see Linear Technology DFN_8_05-08-1698.pdf) +DFN 0.5 +0 +13 +9 +Package_DFN_QFN +DFN-8-1EP_3x3mm_P0.65mm_EP1.7x2.05mm +DFN, 8 Pin (http://www.ixysic.com/home/pdfs.nsf/www/IX4426-27-28.pdf/$file/IX4426-27-28.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +DFN NoLead +0 +13 +9 +Package_DFN_QFN +DFN-8-1EP_3x3mm_P0.65mm_EP1.55x2.4mm +8-Lead Plastic Dual Flat, No Lead Package (MF) - 3x3x0.9 mm Body [DFN] (see Microchip Packaging Specification 00000049BS.pdf) +DFN 0.65 +0 +13 +9 +Package_DFN_QFN +DFN-8-1EP_4x4mm_P0.8mm_EP2.3x3.24mm +DFN, 8 Pin (https://www.st.com/resource/en/datasheet/ld1086.pdf#page=35), generated with kicad-footprint-generator ipc_noLead_generator.py +DFN NoLead +0 +13 +9 +Package_DFN_QFN +DFN-8-1EP_4x4mm_P0.8mm_EP2.5x3.6mm +8-Lead Plastic Dual Flat, No Lead Package (MD) - 4x4x0.9 mm Body [DFN] (see Microchip Packaging Specification 00000049BS.pdf) +DFN 0.8 +0 +15 +9 +Package_DFN_QFN +DFN-8-1EP_4x4mm_P0.8mm_EP2.39x2.21mm +8-Lead Plastic Dual Flat, No Lead Package (MD) - 4x4x0.9 mm Body [DFN] (http://www.onsemi.com/pub/Collateral/NCP4308-D.PDF) +DFN 0.8 +0 +13 +9 +Package_DFN_QFN +DFN-8-1EP_6x5mm_P1.27mm_EP2x2mm +DD Package; 8-Lead Plastic DFN (6mm x 5mm) (see http://www.everspin.com/file/236/download) +dfn +0 +13 +9 +Package_DFN_QFN +DFN-8-1EP_6x5mm_P1.27mm_EP4x4mm +DD Package; 8-Lead Plastic DFN (6mm x 5mm) (see http://www.everspin.com/file/236/download) +dfn +0 +25 +9 +Package_DFN_QFN +DFN-8_2x2mm_P0.5mm +DFN8 2x2, 0.5P; No exposed pad - Ref http://pdfserv.maximintegrated.com/land_patterns/90-0349.PDF +DFN 0.5 +0 +8 +8 +Package_DFN_QFN +DFN-10-1EP_2x3mm_P0.5mm_EP0.64x2.4mm +DDB Package; 10-Lead Plastic DFN (3mm x 2mm) (see Linear Technology DFN_10_05-08-1722.pdf) +DFN 0.5 +0 +13 +11 +Package_DFN_QFN +DFN-10-1EP_3x3mm_P0.5mm_EP1.7x2.5mm +DFN, 10 Pin (https://www.monolithicpower.com/pub/media/document/MPQ2483_r1.05.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +DFN NoLead +0 +15 +11 +Package_DFN_QFN +DFN-10-1EP_3x3mm_P0.5mm_EP1.55x2.48mm +10-Lead Plastic Dual Flat, No Lead Package (MF) - 3x3x0.9 mm Body [DFN] (see Microchip Packaging Specification 00000049BS.pdf) +DFN 0.5 +0 +15 +11 +Package_DFN_QFN +DFN-10-1EP_3x3mm_P0.5mm_EP1.65x2.38mm +DFN, 10 Pin (https://www.analog.com/media/en/technical-documentation/data-sheets/3471fb.pdf#page=15), generated with kicad-footprint-generator ipc_noLead_generator.py +DFN NoLead +0 +15 +11 +Package_DFN_QFN +DFN-10-1EP_3x3mm_P0.5mm_EP1.65x2.38mm_ThermalVias +DFN, 10 Pin (https://www.analog.com/media/en/technical-documentation/data-sheets/3471fb.pdf#page=15), generated with kicad-footprint-generator ipc_noLead_generator.py +DFN NoLead +0 +22 +11 +Package_DFN_QFN +DFN-10-1EP_3x3mm_P0.5mm_EP1.75x2.7mm +10-Lead Plastic Dual Flat No-Lead Package, 3x3mm Body (see Atmel Appnote 8826) +DFN 0.5 +0 +15 +11 +Package_DFN_QFN +DFN-10_2x2mm_P0.4mm +10-Lead Plastic DFN (2mm x 2mm) 0.40mm pitch +DFN 10 0.4mm +0 +10 +10 +Package_DFN_QFN +DFN-12-1EP_2x3mm_P0.45mm_EP0.64x2.4mm +DDB Package; 12-Lead Plastic DFN (3mm x 2mm) (see Linear Technology DFN_12_05-08-1723.pdf) +DFN 0.45 +0 +15 +13 +Package_DFN_QFN +DFN-12-1EP_3x3mm_P0.5mm_EP2.05x2.86mm +10-Lead Plastic Dual Flat, No Lead Package (MF) - 3x3x0.9 mm Body [DFN] (see Microchip Packaging Specification 00000049BS.pdf) +DFN 0.5 +0 +17 +13 +Package_DFN_QFN +DFN-12-1EP_3x3mm_P0.45mm_EP1.66x2.38mm +DD Package; 12-Lead Plastic DFN (3mm x 3mm) (see Linear Technology DFN_12_05-08-1725.pdf) +DFN 0.45 +0 +17 +13 +Package_DFN_QFN +DFN-12-1EP_3x4mm_P0.5mm_EP1.7x3.3mm +DE/UE Package; 12-Lead Plastic DFN (4mm x 3mm) (see Linear Technology DFN_12_05-08-1695.pdf) +DFN 0.5 +0 +21 +13 +Package_DFN_QFN +DFN-12-1EP_4x4mm_P0.5mm_EP2.66x3.38mm +DF Package; 12-Lead Plastic DFN (4mm x 4mm) (see Linear Technology 05081733_A_DF12.pdf) +DFN 0.5 +0 +21 +13 +Package_DFN_QFN +DFN-12-1EP_4x4mm_P0.65mm_EP2.64x3.54mm +DFN12, 4x4, 0.65P; CASE 506CE (see ON Semiconductor 506CE.PDF) +DFN 0.65 +0 +21 +13 +Package_DFN_QFN +DFN-14-1EP_3x3mm_P0.4mm_EP1.78x2.35mm +DD Package; 14-Lead Plastic DFN (3mm x 3mm) (http://pdfserv.maximintegrated.com/land_patterns/90-0063.PDF) +DFN 0.40 +0 +19 +15 +Package_DFN_QFN +DFN-14-1EP_3x4.5mm_P0.65mm_EP1.65x4.25mm +14-lead very thin plastic quad flat, 3.0x4.5mm size, 0.65mm pitch (http://ww1.microchip.com/downloads/en/DeviceDoc/14L_VDFN_4_5x3_0mm_JHA_C041198A.pdf) +VDFN DFN 0.65mm +0 +23 +15 +Package_DFN_QFN +DFN-14-1EP_3x4.5mm_P0.65mm_EP1.65x4.25mm_ThermalVias +14-lead very thin plastic quad flat, 3.0x4.5mm size, 0.65mm pitch (http://ww1.microchip.com/downloads/en/DeviceDoc/14L_VDFN_4_5x3_0mm_JHA_C041198A.pdf) +VDFN DFN 0.65mm +0 +33 +15 +Package_DFN_QFN +DFN-14-1EP_3x4mm_P0.5mm_EP1.7x3.3mm +DE Package; 14-Lead Plastic DFN (4mm x 3mm) (see Linear Technology DFN_14_05-08-1708.pdf) +DFN 0.5 +0 +23 +15 +Package_DFN_QFN +DFN-14-1EP_4x4mm_P0.5mm_EP2.86x3.6mm +DFN14, 4x4, 0.5P; CASE 506CM (see ON Semiconductor 506CM.PDF) +DFN 0.5 +0 +23 +15 +Package_DFN_QFN +DFN-16-1EP_3x4mm_P0.45mm_EP1.7x3.3mm +DE Package; 16-Lead Plastic DFN (4mm x 3mm) (see Linear Technology DFN_16_05-08-1732.pdf) +DFN 0.45 +0 +25 +17 +Package_DFN_QFN +DFN-16-1EP_3x5mm_P0.5mm_EP1.66x4.4mm +DHC Package; 16-Lead Plastic DFN (5mm x 3mm) (see Linear Technology DFN_16_05-08-1706.pdf) +DFN 0.5 +0 +27 +17 +Package_DFN_QFN +DFN-16-1EP_4x5mm_P0.5mm_EP2.44x4.34mm +DHD Package; 16-Lead Plastic DFN (5mm x 4mm) (see Linear Technology 05081707_A_DHD16.pdf) +DFN 0.5 +0 +25 +17 +Package_DFN_QFN +DFN-16-1EP_5x5mm_P0.5mm_EP3.46x4mm +DH Package; 16-Lead Plastic DFN (5mm x 5mm) (see Linear Technology DFN_16_05-08-1709.pdf) +DFN 0.5 +0 +26 +17 +Package_DFN_QFN +DFN-18-1EP_3x5mm_P0.5mm_EP1.66x4.4mm +DHC Package; 18-Lead Plastic DFN (5mm x 3mm) (see Linear Technology 05081955_0_DHC18.pdf) +DFN 0.5 +0 +29 +19 +Package_DFN_QFN +DFN-18-1EP_4x5mm_P0.5mm_EP2.44x4.34mm +DHD Package; 18-Lead Plastic DFN (5mm x 4mm) (see Linear Technology DFN_18_05-08-1778.pdf) +DFN 0.5 +0 +27 +19 +Package_DFN_QFN +DFN-20-1EP_5x6mm_P0.5mm_EP3.24x4.24mm +DFN20, 6x5, 0.5P; CASE 505AB (see ON Semiconductor 505AB.PDF) +DFN 0.5 +0 +33 +21 +Package_DFN_QFN +DFN-22-1EP_5x6mm_P0.5mm_EP3.14x4.3mm +DFN22 6*5*0.9 MM, 0.5 P; CASE 506AF\xe2\x88\x9201 (see ON Semiconductor 506AF.PDF) +DFN 0.5 +0 +35 +23 +Package_DFN_QFN +DFN-24-1EP_4x7mm_P0.5mm_EP2.64x6.44mm +DKD Package; 24-Lead Plastic DFN (7mm x 4mm) (see Linear Technology DFN_24_05-08-1864.pdf) +DFN 0.5 +0 +35 +25 +Package_DFN_QFN +DFN-32-1EP_4x7mm_P0.4mm_EP2.64x6.44mm +DKD Package; 32-Lead Plastic DFN (7mm x 4mm) (see Linear Technology DFN_32_05-08-1734.pdf) +DFN 0.4 +0 +43 +33 +Package_DFN_QFN +DFN-44-1EP_5x8.9mm_P0.4mm_EP3.7x8.4mm +DFN44 8.9x5, 0.4P; CASE 506BU-01 (see ON Semiconductor 506BU.PDF) +DFN 0.4 +0 +63 +45 +Package_DFN_QFN +DFN-S-8-1EP_6x5mm_P1.27mm +8-Lead Plastic Dual Flat, No Lead Package (MF) - 6x5 mm Body [DFN-S] (see Microchip Packaging Specification 00000049BS.pdf) +DFN 1.27 +0 +16 +9 +Package_DFN_QFN +Diodes_DFN1006-3 +DFN package size 1006 3 pins +DFN package size 1006 3 pins +0 +3 +3 +Package_DFN_QFN +Diodes_UDFN-10_1.0x2.5mm_P0.5mm +U-DFN2510-10 package used by Diodes Incorporated (https://www.diodes.com/assets/Package-Files/U-DFN2510-10-Type-CJ.pdf) +UDFN-10 U-DFN2510-10 Diodes +0 +10 +10 +Package_DFN_QFN +Diodes_UDFN2020-6_Type-F +U-DFN2020-6 (Type F) (https://www.diodes.com/assets/Package-Files/U-DFN2020-6-Type-F.pdf) +U-DFN2020-6 (Type F) +0 +8 +8 +Package_DFN_QFN +HVQFN-16-1EP_3x3mm_P0.5mm_EP1.5x1.5mm +HVQFN, 16 Pin (https://www.nxp.com/docs/en/package-information/SOT758-1.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +HVQFN NoLead +0 +21 +17 +Package_DFN_QFN +HVQFN-24-1EP_4x4mm_P0.5mm_EP2.5x2.5mm +HVQFN, 24 Pin (https://www.nxp.com/docs/en/package-information/SOT616-3.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +HVQFN NoLead +0 +29 +25 +Package_DFN_QFN +HVQFN-24-1EP_4x4mm_P0.5mm_EP2.5x2.5mm_ThermalVias +HVQFN, 24 Pin (https://www.nxp.com/docs/en/package-information/SOT616-3.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +HVQFN NoLead +0 +39 +25 +Package_DFN_QFN +HVQFN-24-1EP_4x4mm_P0.5mm_EP2.6x2.6mm +HVQFN, 24 Pin (https://www.nxp.com/docs/en/package-information/SOT616-3.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +HVQFN NoLead +0 +34 +25 +Package_DFN_QFN +HVQFN-24-1EP_4x4mm_P0.5mm_EP2.6x2.6mm_ThermalVias +HVQFN, 24 Pin (https://www.nxp.com/docs/en/package-information/SOT616-3.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +HVQFN NoLead +0 +39 +25 +Package_DFN_QFN +Infineon_MLPQ-16-14-1EP_4x4mm_P0.5mm +MLPQ 32 leads, 7x7mm, 0.127mm stencil (https://www.infineon.com/dgdl/Infineon-AN1170-AN-v05_00-EN.pdf?fileId=5546d462533600a40153559ac3e51134) +mlpq 32 7x7mm +0 +19 +15 +Package_DFN_QFN +Infineon_MLPQ-40-32-1EP_7x7mm_P0.5mm +MLPQ 32 leads, 7x7mm, 0.127mm stencil (https://www.infineon.com/dgdl/Infineon-AN1170-AN-v05_00-EN.pdf?fileId=5546d462533600a40153559ac3e51134) +mlpq 32 7x7mm +0 +76 +33 +Package_DFN_QFN +Infineon_MLPQ-48-1EP_7x7mm_P0.5mm_EP5.55x5.55mm +MLPQ 48 leads, 7x7mm (https://www.infineon.com/dgdl/irs2093mpbf.pdf?fileId=5546d462533600a401535675fb892793) +mlpq 32 7x7mm +0 +113 +49 +Package_DFN_QFN +Infineon_MLPQ-48-1EP_7x7mm_P0.5mm_Pad5.15x5.15mm +MLPQ 48 leads, 7x7mm (https://www.infineon.com/dgdl/irs2052mpbf.pdf?fileId=5546d462533600a401535675d3b32788) +mlpq 32 7x7mm +0 +117 +49 +Package_DFN_QFN +Infineon_MLPQ-48-1EP_7x7mm_P0.5mm_Pad5.55x5.55mm +MLPQ 48 leads, 7x7mm (https://www.infineon.com/dgdl/irs2093mpbf.pdf?fileId=5546d462533600a401535675fb892793) +mlpq 32 7x7mm +0 +117 +49 +Package_DFN_QFN +Infineon_PQFN-22-15-4EP_6x5mm_P0.65mm +PQFN 22 leads, 5x6mm, 0.127mm stencil (https://www.infineon.com/dgdl/ir4301.pdf?fileId=5546d462533600a4015355d5fc691819, https://www.infineon.com/dgdl/Infineon-AN1170-AN-v05_00-EN.pdf?fileId=5546d462533600a40153559ac3e51134) +pqfn 22 5x6mm +0 +56 +15 +Package_DFN_QFN +Infineon_PQFN-44-31-5EP_7x7mm_P0.5mm +PQFN 44 leads, 7x7mm, 0.127mm stencil (https://www.infineon.com/dgdl/ir4302.pdf?fileId=5546d462533600a4015355d602a9181d, https://www.infineon.com/dgdl/Infineon-AN1170-AN-v05_00-EN.pdf?fileId=5546d462533600a40153559ac3e51134) +pqfn 44 7x7mm +0 +125 +27 +Package_DFN_QFN +Linear_DE14MA +14-Lead Plastic DFN, 4mm x 3mm (http://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/ltc-legacy-dfn/05081731_C_DE14MA.pdf) +DFN 0.5 +0 +14 +14 +Package_DFN_QFN +Linear_UGK52_QFN-46-52 +Linear UKG52(46) package, QFN-52-1EP variant (see http://cds.linear.com/docs/en/datasheet/3886fe.pdf) +QFN 0.5 +0 +62 +47 +Package_DFN_QFN +MLF-6-1EP_1.6x1.6mm_P0.5mm_EP0.5x1.26mm +MLF, 6 Pin (http://ww1.microchip.com/downloads/en/DeviceDoc/mic5353.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +MLF NoLead +0 +9 +7 +Package_DFN_QFN +MLF-8-1EP_3x3mm_P0.65mm_EP1.55x2.3mm +8-Pin ePad 3mm x 3mm MLF - 3x3x0.85 mm Body (see Microchip datasheet http://ww1.microchip.com/downloads/en/DeviceDoc/mic5355_6.pdf) +DFN MLF 0.65 +0 +12 +9 +Package_DFN_QFN +MLF-8-1EP_3x3mm_P0.65mm_EP1.55x2.3mm_ThermalVias +8-Pin ePad 3mm x 3mm MLF - 3x3x0.85 mm Body (see Microchip datasheet http://ww1.microchip.com/downloads/en/DeviceDoc/mic5355_6.pdf) +DFN MLF 0.65 +0 +15 +9 +Package_DFN_QFN +MLF-20-1EP_4x4mm_P0.5mm_EP2.6x2.6mm +MLF, 20 Pin (http://ww1.microchip.com/downloads/en/DeviceDoc/doc8246.pdf#page=263), generated with kicad-footprint-generator ipc_noLead_generator.py +MLF NoLead +0 +25 +21 +Package_DFN_QFN +MLF-20-1EP_4x4mm_P0.5mm_EP2.6x2.6mm_ThermalVias +MLF, 20 Pin (http://ww1.microchip.com/downloads/en/DeviceDoc/doc8246.pdf#page=263), generated with kicad-footprint-generator ipc_noLead_generator.py +MLF NoLead +0 +30 +21 +Package_DFN_QFN +MLPQ-16-1EP_4x4mm_P0.65mm_EP2.8x2.8mm +Micro Leadframe Package, 16 pin with exposed pad +MLPQ- 0.65 +0 +21 +17 +Package_DFN_QFN +Micrel_MLF-8-1EP_2x2mm_P0.5mm_EP0.8x1.3mm_ThermalVias +http://ww1.microchip.com/downloads/en/DeviceDoc/mic2290.pdf +mlf 8 2x2 mm +0 +14 +9 +Package_DFN_QFN +Microchip_8E-16 +16-Lead Quad Flat, No Lead Package (8E) - 4x4x0.9 mm Body [UQFN]; (see Microchip Packaging Specification 00000049BS.pdf) +QFN Microchip 8E 16 +0 +20 +17 +Package_DFN_QFN +Microchip_DRQFN-44-1EP_5x5mm_P0.7mm_EP2.65x2.65mm +QFN, 44 Pin, dual row (http://ww1.microchip.com/downloads/en/DeviceDoc/44L_VQFN_5x5mm_Dual_Row_%5BS3B%5D_C04-21399a.pdf) +QFN dual row +0 +49 +45 +Package_DFN_QFN +Microchip_DRQFN-44-1EP_5x5mm_P0.7mm_EP2.65x2.65mm_ThermalVias +QFN, 44 Pin, dual row (http://ww1.microchip.com/downloads/en/DeviceDoc/44L_VQFN_5x5mm_Dual_Row_%5BS3B%5D_C04-21399a.pdf) +QFN dual row +0 +59 +45 +Package_DFN_QFN +Microchip_DRQFN-64-1EP_7x7mm_P0.65mm_EP4.1x4.1mm +QFN, 64 Pin, dual row (http://ww1.microchip.com/downloads/en/DeviceDoc/64L_VQFN_7x7_Dual_Row_%5BSVB%5D_C04-21420a.pdf) +QFN dual row +0 +74 +65 +Package_DFN_QFN +Microchip_DRQFN-64-1EP_7x7mm_P0.65mm_EP4.1x4.1mm_ThermalVias +QFN, 64 Pin, dual row (http://ww1.microchip.com/downloads/en/DeviceDoc/64L_VQFN_7x7_Dual_Row_%5BSVB%5D_C04-21420a.pdf) +QFN dual row +0 +91 +65 +Package_DFN_QFN +Microsemi_QFN-40-32-2EP_6x8mm_P0.5mm +40-Lead (32-Lead Populated) Plastic Quad Flat, No Lead Package - 6x8x0.9mm Body (https://www.microsemi.com/document-portal/doc_download/131677-pd70224-data-sheet) +QFN 0.5 +0 +92 +34 +Package_DFN_QFN +Mini-Circuits_DL805 +https://ww2.minicircuits.com/case_style/DL805.pdf +RF Switch +0 +11 +9 +Package_DFN_QFN +Mini-Circuits_FG873-4_3x3mm +Mini Circuits Case style FG (https://ww2.minicircuits.com/case_style/FG873.pdf) +FG873 +0 +4 +4 +Package_DFN_QFN +Nordic_AQFN-73-1EP_7x7mm_P0.5mm +http://infocenter.nordicsemi.com/index.jsp?topic=%2Fcom.nordic.infocenter.nrf52%2Fdita%2Fnrf52%2Fchips%2Fnrf52840.html +AQFN 7mm +0 +78 +74 +Package_DFN_QFN +OnSemi_DFN-8_2x2mm_P0.5mm +DFN8 2x2, 0.5P (https://www.onsemi.com/pub/Collateral/511AT.PDF) +DFN 0.5 +0 +8 +8 +Package_DFN_QFN +OnSemi_UDFN-8_1.2x1.8mm_P0.4mm +8-Lead Plastic Dual Flat, No Lead Package, 1.2x1.8x1.55 mm Body [UDFN] (See http://www.onsemi.com/pub/Collateral/NLSV2T244-D.PDF) +dfn udfn dual flat +0 +8 +8 +Package_DFN_QFN +OnSemi_VCT-28_3.5x3.5mm_P0.4mm +OnSemi VCT, 28 Pin (http://www.onsemi.com/pub/Collateral/601AE.PDF), generated with kicad-footprint-generator ipc_dfn_qfn_generator.py +OnSemi VCT DFN_QFN +0 +28 +28 +Package_DFN_QFN +Panasonic_HQFN-16-1EP_4x4mm_P0.65mm_EP2.9x2.9mm +Panasonic HQFN-16, 4x4x0.85mm (https://industrial.panasonic.com/content/data/SC/ds/ds7/c0/PKG_HQFN016-A-0404XZL_EN.pdf) +panasonic hqfn +0 +37 +17 +Package_DFN_QFN +Panasonic_HSON-8_8x8mm_P2.00mm +Panasonic HSON-8, 8x8x1.25mm (https://industrial.panasonic.com/content/data/SC/ds/ds7/c0/PKG_HSON008-A-0808XXI_EN.pdf) +panasonic hson +0 +27 +9 +Package_DFN_QFN +QFN-12-1EP_3x3mm_P0.5mm_EP1.65x1.65mm +QFN, 12 Pin (http://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/ltc-legacy-qfn/QFN_12_%2005-08-1855.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +17 +13 +Package_DFN_QFN +QFN-12-1EP_3x3mm_P0.5mm_EP1.65x1.65mm_ThermalVias +QFN, 12 Pin (http://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/ltc-legacy-qfn/QFN_12_%2005-08-1855.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +22 +13 +Package_DFN_QFN +QFN-12-1EP_3x3mm_P0.51mm_EP1.45x1.45mm +QFN, 12 Pin (https://ww2.minicircuits.com/case_style/DQ1225.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +17 +13 +Package_DFN_QFN +QFN-16-1EP_3x3mm_P0.5mm_EP1.7x1.7mm +QFN, 16 Pin (https://www.st.com/resource/en/datasheet/tsv521.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +21 +17 +Package_DFN_QFN +QFN-16-1EP_3x3mm_P0.5mm_EP1.7x1.7mm_ThermalVias +QFN, 16 Pin (http://www.cypress.com/file/46236/download), generated with kicad-footprint-generator ipc_dfn_qfn_generator.py +QFN DFN_QFN +0 +31 +17 +Package_DFN_QFN +QFN-16-1EP_3x3mm_P0.5mm_EP1.9x1.9mm +QFN, 16 Pin (https://www.nxp.com/docs/en/package-information/98ASA00525D.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +21 +17 +Package_DFN_QFN +QFN-16-1EP_3x3mm_P0.5mm_EP1.9x1.9mm_ThermalVias +QFN, 16 Pin (https://www.nxp.com/docs/en/package-information/98ASA00525D.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +26 +17 +Package_DFN_QFN +QFN-16-1EP_3x3mm_P0.5mm_EP1.45x1.45mm +QFN, 16 Pin (http://cds.linear.com/docs/en/datasheet/37551fd.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +21 +17 +Package_DFN_QFN +QFN-16-1EP_3x3mm_P0.5mm_EP1.45x1.45mm_ThermalVias +QFN, 16 Pin (http://cds.linear.com/docs/en/datasheet/37551fd.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +26 +17 +Package_DFN_QFN +QFN-16-1EP_3x3mm_P0.5mm_EP1.75x1.75mm +QFN, 16 Pin (https://www.onsemi.com/pub/Collateral/NCN4555-D.PDF), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +21 +17 +Package_DFN_QFN +QFN-16-1EP_3x3mm_P0.5mm_EP1.75x1.75mm_ThermalVias +QFN, 16 Pin (https://www.onsemi.com/pub/Collateral/NCN4555-D.PDF), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +26 +17 +Package_DFN_QFN +QFN-16-1EP_4x4mm_P0.5mm_EP2.45x2.45mm +QFN, 16 Pin (https://www.renesas.com/eu/en/www/doc/datasheet/isl8117.pdf#page=22), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +21 +17 +Package_DFN_QFN +QFN-16-1EP_4x4mm_P0.5mm_EP2.45x2.45mm_ThermalVias +QFN, 16 Pin (https://www.renesas.com/eu/en/www/doc/datasheet/isl8117.pdf#page=22), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +31 +17 +Package_DFN_QFN +QFN-16-1EP_4x4mm_P0.65mm_EP2.1x2.1mm +QFN, 16 Pin (http://www.thatcorp.com/datashts/THAT_1580_Datasheet.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +21 +17 +Package_DFN_QFN +QFN-16-1EP_4x4mm_P0.65mm_EP2.1x2.1mm_ThermalVias +QFN, 16 Pin (http://www.thatcorp.com/datashts/THAT_1580_Datasheet.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +31 +17 +Package_DFN_QFN +QFN-16-1EP_4x4mm_P0.65mm_EP2.5x2.5mm +QFN, 16 Pin (http://ww1.microchip.com/downloads/en/PackagingSpec/00000049BQ.pdf#page=266), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +21 +17 +Package_DFN_QFN +QFN-16-1EP_4x4mm_P0.65mm_EP2.5x2.5mm_ThermalVias +QFN, 16 Pin (http://ww1.microchip.com/downloads/en/PackagingSpec/00000049BQ.pdf#page=266), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +31 +17 +Package_DFN_QFN +QFN-16-1EP_4x4mm_P0.65mm_EP2.7x2.7mm +QFN, 16 Pin (https://www.allegromicro.com/~/media/Files/Datasheets/A4403-Datasheet.ashx), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +21 +17 +Package_DFN_QFN +QFN-16-1EP_4x4mm_P0.65mm_EP2.7x2.7mm_PullBack +QFN, 16 Pin (https://ams.com/documents/20143/36005/AS5055A_DS000304_2-00.pdf#page=24), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +21 +17 +Package_DFN_QFN +QFN-16-1EP_4x4mm_P0.65mm_EP2.7x2.7mm_PullBack_ThermalVias +QFN, 16 Pin (https://ams.com/documents/20143/36005/AS5055A_DS000304_2-00.pdf#page=24), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +31 +17 +Package_DFN_QFN +QFN-16-1EP_4x4mm_P0.65mm_EP2.7x2.7mm_ThermalVias +QFN, 16 Pin (https://www.allegromicro.com/~/media/Files/Datasheets/A4403-Datasheet.ashx), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +31 +17 +Package_DFN_QFN +QFN-16-1EP_4x4mm_P0.65mm_EP2.15x2.15mm +QFN, 16 Pin (https://www.analog.com/media/en/technical-documentation/data-sheets/4001f.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +21 +17 +Package_DFN_QFN +QFN-16-1EP_4x4mm_P0.65mm_EP2.15x2.15mm_ThermalVias +QFN, 16 Pin (https://www.analog.com/media/en/technical-documentation/data-sheets/4001f.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +31 +17 +Package_DFN_QFN +QFN-16-1EP_5x5mm_P0.8mm_EP2.7x2.7mm +QFN, 16 Pin (http://www.intersil.com/content/dam/Intersil/documents/l16_/l16.5x5.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +21 +17 +Package_DFN_QFN +QFN-16-1EP_5x5mm_P0.8mm_EP2.7x2.7mm_ThermalVias +QFN, 16 Pin (http://www.intersil.com/content/dam/Intersil/documents/l16_/l16.5x5.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +31 +17 +Package_DFN_QFN +QFN-20-1EP_3.5x3.5mm_P0.5mm_EP2x2mm +QFN, 20 Pin (http://www.ti.com/lit/ml/mpqf239/mpqf239.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +25 +21 +Package_DFN_QFN +QFN-20-1EP_3.5x3.5mm_P0.5mm_EP2x2mm_ThermalVias +QFN, 20 Pin (http://www.ti.com/lit/ml/mpqf239/mpqf239.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +30 +21 +Package_DFN_QFN +QFN-20-1EP_3x3mm_P0.4mm_EP1.65x1.65mm +QFN, 20 Pin (https://www.analog.com/media/en/technical-documentation/data-sheets/3553fc.pdf#page=34), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +25 +21 +Package_DFN_QFN +QFN-20-1EP_3x3mm_P0.4mm_EP1.65x1.65mm_ThermalVias +QFN, 20 Pin (https://www.analog.com/media/en/technical-documentation/data-sheets/3553fc.pdf#page=34), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +30 +21 +Package_DFN_QFN +QFN-20-1EP_3x3mm_P0.45mm_EP1.6x1.6mm +QFN, 20 Pin (http://ww1.microchip.com/downloads/en/DeviceDoc/atmel-8235-8-bit-avr-microcontroller-attiny20_datasheet.pdf#page=212), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +25 +21 +Package_DFN_QFN +QFN-20-1EP_3x3mm_P0.45mm_EP1.6x1.6mm_ThermalVias +QFN, 20 Pin (http://ww1.microchip.com/downloads/en/DeviceDoc/atmel-8235-8-bit-avr-microcontroller-attiny20_datasheet.pdf#page=212), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +30 +21 +Package_DFN_QFN +QFN-20-1EP_3x4mm_P0.5mm_EP1.65x2.65mm +QFN, 20 Pin (http://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/ltc-legacy-qfn/QFN_20_05-08-1742.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +25 +21 +Package_DFN_QFN +QFN-20-1EP_3x4mm_P0.5mm_EP1.65x2.65mm_ThermalVias +QFN, 20 Pin (http://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/ltc-legacy-qfn/QFN_20_05-08-1742.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +32 +21 +Package_DFN_QFN +QFN-20-1EP_4x4mm_P0.5mm_EP2.5x2.5mm +QFN, 20 Pin (http://ww1.microchip.com/downloads/en/PackagingSpec/00000049BQ.pdf#page=274), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +25 +21 +Package_DFN_QFN +QFN-20-1EP_4x4mm_P0.5mm_EP2.5x2.5mm_ThermalVias +QFN, 20 Pin (http://ww1.microchip.com/downloads/en/PackagingSpec/00000049BQ.pdf#page=274), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +30 +21 +Package_DFN_QFN +QFN-20-1EP_4x4mm_P0.5mm_EP2.6x2.6mm +QFN, 20 Pin (http://ww1.microchip.com/downloads/en/DeviceDoc/doc2535.pdf#page=164), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +25 +21 +Package_DFN_QFN +QFN-20-1EP_4x4mm_P0.5mm_EP2.6x2.6mm_ThermalVias +QFN, 20 Pin (http://ww1.microchip.com/downloads/en/DeviceDoc/doc2535.pdf#page=164), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +30 +21 +Package_DFN_QFN +QFN-20-1EP_4x4mm_P0.5mm_EP2.7x2.7mm +QFN, 20 Pin (https://www.silabs.com/documents/public/data-sheets/Si5351-B.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +25 +21 +Package_DFN_QFN +QFN-20-1EP_4x4mm_P0.5mm_EP2.7x2.7mm_ThermalVias +QFN, 20 Pin (https://www.silabs.com/documents/public/data-sheets/Si5351-B.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +30 +21 +Package_DFN_QFN +QFN-20-1EP_4x5mm_P0.5mm_EP2.65x3.65mm +QFN, 20 Pin (http://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/ltc-legacy-qfn/QFN_20_05-08-1711.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +27 +21 +Package_DFN_QFN +QFN-20-1EP_4x5mm_P0.5mm_EP2.65x3.65mm_ThermalVias +QFN, 20 Pin (http://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/ltc-legacy-qfn/QFN_20_05-08-1711.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +40 +21 +Package_DFN_QFN +QFN-20-1EP_5x5mm_P0.65mm_EP3.35x3.35mm +QFN, 20 Pin (http://ww1.microchip.com/downloads/en/PackagingSpec/00000049BQ.pdf#page=276), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +25 +21 +Package_DFN_QFN +QFN-20-1EP_5x5mm_P0.65mm_EP3.35x3.35mm_ThermalVias +QFN, 20 Pin (http://ww1.microchip.com/downloads/en/PackagingSpec/00000049BQ.pdf#page=276), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +35 +21 +Package_DFN_QFN +QFN-24-1EP_3x3mm_P0.4mm_EP1.75x1.6mm +QFN, 24 Pin (https://www.invensense.com/wp-content/uploads/2015/02/PS-MPU-9250A-01-v1.1.pdf#page=39), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +29 +25 +Package_DFN_QFN +QFN-24-1EP_3x3mm_P0.4mm_EP1.75x1.6mm_ThermalVias +QFN, 24 Pin (https://www.invensense.com/wp-content/uploads/2015/02/PS-MPU-9250A-01-v1.1.pdf#page=39), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +34 +25 +Package_DFN_QFN +QFN-24-1EP_3x4mm_P0.4mm_EP1.65x2.65mm +QFN, 24 Pin (http://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/ltc-legacy-qfn/QFN_20_05-08-1742.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +31 +25 +Package_DFN_QFN +QFN-24-1EP_3x4mm_P0.4mm_EP1.65x2.65mm_ThermalVias +QFN, 24 Pin (http://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/ltc-legacy-qfn/QFN_20_05-08-1742.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +38 +25 +Package_DFN_QFN +QFN-24-1EP_4x4mm_P0.5mm_EP2.6x2.6mm +QFN, 24 Pin (http://ww1.microchip.com/downloads/en/PackagingSpec/00000049BQ.pdf#page=278), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +29 +25 +Package_DFN_QFN +QFN-24-1EP_4x4mm_P0.5mm_EP2.6x2.6mm_ThermalVias +QFN, 24 Pin (http://ww1.microchip.com/downloads/en/PackagingSpec/00000049BQ.pdf#page=278), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +39 +25 +Package_DFN_QFN +QFN-24-1EP_4x4mm_P0.5mm_EP2.7x2.6mm +QFN, 24 Pin (https://store.invensense.com/datasheets/invensense/MPU-6050_DataSheet_V3%204.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +29 +25 +Package_DFN_QFN +QFN-24-1EP_4x4mm_P0.5mm_EP2.7x2.6mm_ThermalVias +QFN, 24 Pin (https://store.invensense.com/datasheets/invensense/MPU-6050_DataSheet_V3%204.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +39 +25 +Package_DFN_QFN +QFN-24-1EP_4x4mm_P0.5mm_EP2.7x2.7mm +QFN, 24 Pin (http://www.alfarzpp.lv/eng/sc/AS3330.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +29 +25 +Package_DFN_QFN +QFN-24-1EP_4x4mm_P0.5mm_EP2.7x2.7mm_ThermalVias +QFN, 24 Pin (http://www.alfarzpp.lv/eng/sc/AS3330.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +39 +25 +Package_DFN_QFN +QFN-24-1EP_4x4mm_P0.5mm_EP2.8x2.8mm +QFN, 24 Pin (https://www.analog.com/media/en/technical-documentation/data-sheets/hmc431.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +29 +25 +Package_DFN_QFN +QFN-24-1EP_4x4mm_P0.5mm_EP2.8x2.8mm_ThermalVias +QFN, 24 Pin (https://www.analog.com/media/en/technical-documentation/data-sheets/hmc431.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +39 +25 +Package_DFN_QFN +QFN-24-1EP_4x4mm_P0.5mm_EP2.65x2.65mm +QFN, 24 Pin (http://www.cypress.com/file/46236/download), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +29 +25 +Package_DFN_QFN +QFN-24-1EP_4x4mm_P0.5mm_EP2.65x2.65mm_ThermalVias +QFN, 24 Pin (http://www.cypress.com/file/46236/download), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +39 +25 +Package_DFN_QFN +QFN-24-1EP_4x5mm_P0.5mm_EP2.65x3.65mm +QFN, 24 Pin (https://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/ltc-legacy-qfn/QFN_24_05-08-1696.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +31 +25 +Package_DFN_QFN +QFN-24-1EP_4x5mm_P0.5mm_EP2.65x3.65mm_ThermalVias +QFN, 24 Pin (https://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/ltc-legacy-qfn/QFN_24_05-08-1696.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +44 +25 +Package_DFN_QFN +QFN-24-1EP_5x5mm_P0.65mm_EP3.2x3.2mm +QFN, 24 Pin (https://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/ltc-legacy-qfn/(UH24)%20QFN%2005-08-1747%20Rev%20A.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +29 +25 +Package_DFN_QFN +QFN-24-1EP_5x5mm_P0.65mm_EP3.2x3.2mm_ThermalVias +QFN, 24 Pin (https://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/ltc-legacy-qfn/(UH24)%20QFN%2005-08-1747%20Rev%20A.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +51 +25 +Package_DFN_QFN +QFN-24-1EP_5x5mm_P0.65mm_EP3.4x3.4mm +QFN, 24 Pin (http://www.thatcorp.com/datashts/THAT_5173_Datasheet.pdf#page=17), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +29 +25 +Package_DFN_QFN +QFN-24-1EP_5x5mm_P0.65mm_EP3.4x3.4mm_ThermalVias +QFN, 24 Pin (http://www.thatcorp.com/datashts/THAT_5173_Datasheet.pdf#page=17), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +39 +25 +Package_DFN_QFN +QFN-24-1EP_5x5mm_P0.65mm_EP3.6x3.6mm +QFN, 24 Pin (https://www.nxp.com/docs/en/package-information/98ASA00734D.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +34 +25 +Package_DFN_QFN +QFN-24-1EP_5x5mm_P0.65mm_EP3.6x3.6mm_ThermalVias +QFN, 24 Pin (https://www.nxp.com/docs/en/package-information/98ASA00734D.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +67 +25 +Package_DFN_QFN +QFN-28-1EP_3x6mm_P0.5mm_EP1.7x4.75mm +QFN, 28 Pin (http://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/ltc-legacy-qfn/05081926_0_UDE28.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +37 +29 +Package_DFN_QFN +QFN-28-1EP_3x6mm_P0.5mm_EP1.7x4.75mm_ThermalVias +QFN, 28 Pin (http://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/ltc-legacy-qfn/05081926_0_UDE28.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +53 +29 +Package_DFN_QFN +QFN-28-1EP_4x4mm_P0.4mm_EP2.3x2.3mm +QFN, 28 Pin (http://www.issi.com/WW/pdf/31FL3731.pdf#page=21), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +33 +29 +Package_DFN_QFN +QFN-28-1EP_4x4mm_P0.4mm_EP2.3x2.3mm_ThermalVias +QFN, 28 Pin (http://www.issi.com/WW/pdf/31FL3731.pdf#page=21), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +43 +29 +Package_DFN_QFN +QFN-28-1EP_4x4mm_P0.4mm_EP2.4x2.4mm +QFN, 28 Pin (http://ww1.microchip.com/downloads/en/PackagingSpec/00000049BQ.pdf#page=280), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +33 +29 +Package_DFN_QFN +QFN-28-1EP_4x4mm_P0.4mm_EP2.4x2.4mm_ThermalVias +QFN, 28 Pin (http://ww1.microchip.com/downloads/en/PackagingSpec/00000049BQ.pdf#page=280), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +43 +29 +Package_DFN_QFN +QFN-28-1EP_4x4mm_P0.4mm_EP2.6x2.6mm +QFN, 28 Pin (package code T2844-1; https://pdfserv.maximintegrated.com/package_dwgs/21-0139.PDF), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +33 +29 +Package_DFN_QFN +QFN-28-1EP_4x4mm_P0.4mm_EP2.6x2.6mm_ThermalVias +QFN, 28 Pin (package code T2844-1; https://pdfserv.maximintegrated.com/package_dwgs/21-0139.PDF), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +43 +29 +Package_DFN_QFN +QFN-28-1EP_4x4mm_P0.45mm_EP2.4x2.4mm +QFN, 28 Pin (http://ww1.microchip.com/downloads/en/DeviceDoc/8008S.pdf#page=16), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +33 +29 +Package_DFN_QFN +QFN-28-1EP_4x4mm_P0.45mm_EP2.4x2.4mm_ThermalVias +QFN, 28 Pin (http://ww1.microchip.com/downloads/en/DeviceDoc/8008S.pdf#page=16), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +43 +29 +Package_DFN_QFN +QFN-28-1EP_4x5mm_P0.5mm_EP2.65x3.65mm +QFN, 28 Pin (http://www.analog.com/media/en/technical-documentation/data-sheets/3555fe.pdf#page=32), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +35 +29 +Package_DFN_QFN +QFN-28-1EP_4x5mm_P0.5mm_EP2.65x3.65mm_ThermalVias +QFN, 28 Pin (http://www.analog.com/media/en/technical-documentation/data-sheets/3555fe.pdf#page=32), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +48 +29 +Package_DFN_QFN +QFN-28-1EP_5x5mm_P0.5mm_EP3.35x3.35mm +QFN, 28 Pin (http://ww1.microchip.com/downloads/en/PackagingSpec/00000049BQ.pdf#page=283), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +38 +29 +Package_DFN_QFN +QFN-28-1EP_5x5mm_P0.5mm_EP3.35x3.35mm_ThermalVias +QFN, 28 Pin (http://ww1.microchip.com/downloads/en/PackagingSpec/00000049BQ.pdf#page=283), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +55 +29 +Package_DFN_QFN +QFN-28-1EP_5x6mm_P0.5mm_EP3.65x4.65mm +QFN, 28 Pin (http://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/ltc-legacy-qfn/05081932_0_UHE28.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +41 +29 +Package_DFN_QFN +QFN-28-1EP_5x6mm_P0.5mm_EP3.65x4.65mm_ThermalVias +QFN, 28 Pin (http://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/ltc-legacy-qfn/05081932_0_UHE28.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +62 +29 +Package_DFN_QFN +QFN-28-1EP_6x6mm_P0.65mm_EP4.8x4.8mm +QFN, 28 Pin (https://www.semtech.com/uploads/documents/sx1272.pdf#page=125), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +38 +29 +Package_DFN_QFN +QFN-28-1EP_6x6mm_P0.65mm_EP4.8x4.8mm_ThermalVias +QFN, 28 Pin (https://www.semtech.com/uploads/documents/sx1272.pdf#page=125), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +71 +29 +Package_DFN_QFN +QFN-28-1EP_6x6mm_P0.65mm_EP4.25x4.25mm +QFN, 28 Pin (http://ww1.microchip.com/downloads/en/PackagingSpec/00000049BQ.pdf#page=289), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +38 +29 +Package_DFN_QFN +QFN-28-1EP_6x6mm_P0.65mm_EP4.25x4.25mm_ThermalVias +QFN, 28 Pin (http://ww1.microchip.com/downloads/en/PackagingSpec/00000049BQ.pdf#page=289), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +71 +29 +Package_DFN_QFN +QFN-28_4x4mm_P0.5mm +QFN, 28 Pin (http://www.st.com/resource/en/datasheet/stm32f031k6.pdf#page=90), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +28 +28 +Package_DFN_QFN +QFN-32-1EP_4x4mm_P0.4mm_EP2.9x2.9mm +QFN, 32 Pin (http://ww1.microchip.com/downloads/en/DeviceDoc/atmel-8153-8-and-16-bit-avr-microcontroller-xmega-e-atxmega8e5-atxmega16e5-atxmega32e5_datasheet.pdf#page=70), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +37 +33 +Package_DFN_QFN +QFN-32-1EP_4x4mm_P0.4mm_EP2.9x2.9mm_ThermalVias +QFN, 32 Pin (http://ww1.microchip.com/downloads/en/DeviceDoc/atmel-8153-8-and-16-bit-avr-microcontroller-xmega-e-atxmega8e5-atxmega16e5-atxmega32e5_datasheet.pdf#page=70), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +47 +33 +Package_DFN_QFN +QFN-32-1EP_4x4mm_P0.4mm_EP2.65x2.65mm +QFN, 32 Pin (https://www.renesas.com/eu/en/package-image/pdf/outdrawing/l32.4x4a.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +37 +33 +Package_DFN_QFN +QFN-32-1EP_4x4mm_P0.4mm_EP2.65x2.65mm_ThermalVias +QFN, 32 Pin (https://www.renesas.com/eu/en/package-image/pdf/outdrawing/l32.4x4a.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +59 +33 +Package_DFN_QFN +QFN-32-1EP_5x5mm_P0.5mm_EP3.1x3.1mm +QFN, 32 Pin (http://ww1.microchip.com/downloads/en/DeviceDoc/8008S.pdf#page=20), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +42 +33 +Package_DFN_QFN +QFN-32-1EP_5x5mm_P0.5mm_EP3.1x3.1mm_ThermalVias +QFN, 32 Pin (http://ww1.microchip.com/downloads/en/DeviceDoc/8008S.pdf#page=20), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +59 +33 +Package_DFN_QFN +QFN-32-1EP_5x5mm_P0.5mm_EP3.3x3.3mm +QFN, 32 Pin (http://ww1.microchip.com/downloads/en/DeviceDoc/00002164B.pdf#page=68), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +42 +33 +Package_DFN_QFN +QFN-32-1EP_5x5mm_P0.5mm_EP3.3x3.3mm_ThermalVias +QFN, 32 Pin (http://ww1.microchip.com/downloads/en/DeviceDoc/00002164B.pdf#page=68), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +59 +33 +Package_DFN_QFN +QFN-32-1EP_5x5mm_P0.5mm_EP3.6x3.6mm +QFN, 32 Pin (http://infocenter.nordicsemi.com/pdf/nRF52810_PS_v1.1.pdf#page=468), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +42 +33 +Package_DFN_QFN +QFN-32-1EP_5x5mm_P0.5mm_EP3.6x3.6mm_ThermalVias +QFN, 32 Pin (http://infocenter.nordicsemi.com/pdf/nRF52810_PS_v1.1.pdf#page=468), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +59 +33 +Package_DFN_QFN +QFN-32-1EP_5x5mm_P0.5mm_EP3.7x3.7mm +QFN, 32 Pin (https://www.espressif.com/sites/default/files/documentation/0a-esp8285_datasheet_en.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +37 +33 +Package_DFN_QFN +QFN-32-1EP_5x5mm_P0.5mm_EP3.7x3.7mm_ThermalVias +QFN, 32 Pin (https://www.espressif.com/sites/default/files/documentation/0a-esp8285_datasheet_en.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +59 +33 +Package_DFN_QFN +QFN-32-1EP_5x5mm_P0.5mm_EP3.45x3.45mm +QFN, 32 Pin (http://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/ltc-legacy-qfn/QFN_32_05-08-1693.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +42 +33 +Package_DFN_QFN +QFN-32-1EP_5x5mm_P0.5mm_EP3.45x3.45mm_ThermalVias +QFN, 32 Pin (http://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/ltc-legacy-qfn/QFN_32_05-08-1693.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +59 +33 +Package_DFN_QFN +QFN-32-1EP_5x5mm_P0.5mm_EP3.65x3.65mm +QFN, 32 Pin (https://www.exar.com/ds/mxl7704.pdf#page=35), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +42 +33 +Package_DFN_QFN +QFN-32-1EP_5x5mm_P0.5mm_EP3.65x3.65mm_ThermalVias +QFN, 32 Pin (https://www.exar.com/ds/mxl7704.pdf#page=35), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +59 +33 +Package_DFN_QFN +QFN-32-1EP_7x7mm_P0.65mm_EP4.7x4.7mm +QFN, 32 Pin (https://www.nxp.com/docs/en/data-sheet/LPC111X.pdf#page=108), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +49 +33 +Package_DFN_QFN +QFN-32-1EP_7x7mm_P0.65mm_EP4.7x4.7mm_ThermalVias +QFN, 32 Pin (https://www.nxp.com/docs/en/data-sheet/LPC111X.pdf#page=108), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +75 +33 +Package_DFN_QFN +QFN-32-1EP_7x7mm_P0.65mm_EP4.65x4.65mm +QFN, 32 Pin (http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-8209-8-bit%20AVR%20ATmega16M1-32M1-64M1_Datasheet.pdf#page=426), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +49 +33 +Package_DFN_QFN +QFN-32-1EP_7x7mm_P0.65mm_EP4.65x4.65mm_ThermalVias +QFN, 32 Pin (http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-8209-8-bit%20AVR%20ATmega16M1-32M1-64M1_Datasheet.pdf#page=426), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +75 +33 +Package_DFN_QFN +QFN-32-1EP_7x7mm_P0.65mm_EP5.4x5.4mm +QFN, 32 Pin (http://www.thatcorp.com/datashts/THAT_5171_Datasheet.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +49 +33 +Package_DFN_QFN +QFN-32-1EP_7x7mm_P0.65mm_EP5.4x5.4mm_ThermalVias +QFN, 32 Pin (http://www.thatcorp.com/datashts/THAT_5171_Datasheet.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +75 +33 +Package_DFN_QFN +QFN-36-1EP_5x6mm_P0.5mm_EP3.6x4.1mm +QFN, 36 Pin (https://www.trinamic.com/fileadmin/assets/Products/ICs_Documents/TMC2100_datasheet_Rev1.08.pdf#page=43), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +46 +37 +Package_DFN_QFN +QFN-36-1EP_5x6mm_P0.5mm_EP3.6x4.1mm_ThermalVias +QFN, 36 Pin (https://www.trinamic.com/fileadmin/assets/Products/ICs_Documents/TMC2100_datasheet_Rev1.08.pdf#page=43), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +56 +37 +Package_DFN_QFN +QFN-36-1EP_5x6mm_P0.5mm_EP3.6x4.6mm +QFN, 36 Pin (https://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/ltc-legacy-qfn/(UHE36)%20QFN%2005-08-1876%20Rev%20%C3%98.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +49 +37 +Package_DFN_QFN +QFN-36-1EP_5x6mm_P0.5mm_EP3.6x4.6mm_ThermalVias +QFN, 36 Pin (https://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/ltc-legacy-qfn/(UHE36)%20QFN%2005-08-1876%20Rev%20%C3%98.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +56 +37 +Package_DFN_QFN +QFN-36-1EP_6x6mm_P0.5mm_EP3.7x3.7mm +QFN, 36 Pin (http://ww1.microchip.com/downloads/en/DeviceDoc/36L_QFN_6x6_with_3_7x3_7_EP_Punch_Dimpled_4E_C04-0241A.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +46 +37 +Package_DFN_QFN +QFN-36-1EP_6x6mm_P0.5mm_EP3.7x3.7mm_ThermalVias +QFN, 36 Pin (http://ww1.microchip.com/downloads/en/DeviceDoc/36L_QFN_6x6_with_3_7x3_7_EP_Punch_Dimpled_4E_C04-0241A.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +63 +37 +Package_DFN_QFN +QFN-36-1EP_6x6mm_P0.5mm_EP4.1x4.1mm +QFN, 36 Pin (www.st.com/resource/en/datasheet/stm32f101t6.pdf#page=72), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +46 +37 +Package_DFN_QFN +QFN-36-1EP_6x6mm_P0.5mm_EP4.1x4.1mm_ThermalVias +QFN, 36 Pin (www.st.com/resource/en/datasheet/stm32f101t6.pdf#page=72), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +63 +37 +Package_DFN_QFN +QFN-38-1EP_4x6mm_P0.4mm_EP2.65x4.65mm +QFN, 38 Pin (http://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/ltc-legacy-qfn/QFN_38_05-08-1750.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +47 +39 +Package_DFN_QFN +QFN-38-1EP_4x6mm_P0.4mm_EP2.65x4.65mm_ThermalVias +QFN, 38 Pin (http://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/ltc-legacy-qfn/QFN_38_05-08-1750.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +56 +39 +Package_DFN_QFN +QFN-38-1EP_5x7mm_P0.5mm_EP3.15x5.15mm +QFN, 38 Pin (http://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/ltc-legacy-qfn/QFN_38_05-08-1701.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +54 +39 +Package_DFN_QFN +QFN-38-1EP_5x7mm_P0.5mm_EP3.15x5.15mm_ThermalVias +QFN, 38 Pin (http://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/ltc-legacy-qfn/QFN_38_05-08-1701.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +63 +39 +Package_DFN_QFN +QFN-40-1EP_5x5mm_P0.4mm_EP3.6x3.6mm +QFN, 40 Pin (http://ww1.microchip.com/downloads/en/PackagingSpec/00000049BQ.pdf#page=297), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +50 +41 +Package_DFN_QFN +QFN-40-1EP_5x5mm_P0.4mm_EP3.6x3.6mm_ThermalVias +QFN, 40 Pin (http://ww1.microchip.com/downloads/en/PackagingSpec/00000049BQ.pdf#page=297), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +67 +41 +Package_DFN_QFN +QFN-40-1EP_5x5mm_P0.4mm_EP3.8x3.8mm +QFN, 40 Pin (http://www.issi.com/WW/pdf/31FL3736.pdf#page=28), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +50 +41 +Package_DFN_QFN +QFN-40-1EP_5x5mm_P0.4mm_EP3.8x3.8mm_ThermalVias +QFN, 40 Pin (http://www.issi.com/WW/pdf/31FL3736.pdf#page=28), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +67 +41 +Package_DFN_QFN +QFN-40-1EP_6x6mm_P0.5mm_EP4.6x4.6mm +QFN, 40 Pin (http://ww1.microchip.com/downloads/en/PackagingSpec/00000049BQ.pdf#page=295), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +57 +41 +Package_DFN_QFN +QFN-40-1EP_6x6mm_P0.5mm_EP4.6x4.6mm_ThermalVias +QFN, 40 Pin (http://ww1.microchip.com/downloads/en/PackagingSpec/00000049BQ.pdf#page=295), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +83 +41 +Package_DFN_QFN +QFN-42-1EP_5x6mm_P0.4mm_EP3.7x4.7mm +QFN, 42 Pin (https://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/ltc-legacy-qfn/05081875_0_UHE42.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +55 +43 +Package_DFN_QFN +QFN-42-1EP_5x6mm_P0.4mm_EP3.7x4.7mm_ThermalVias +QFN, 42 Pin (https://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/ltc-legacy-qfn/05081875_0_UHE42.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +76 +43 +Package_DFN_QFN +QFN-44-1EP_7x7mm_P0.5mm_EP5.2x5.2mm +QFN, 44 Pin (http://ww1.microchip.com/downloads/en/DeviceDoc/2512S.pdf#page=17), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +61 +45 +Package_DFN_QFN +QFN-44-1EP_7x7mm_P0.5mm_EP5.2x5.2mm_ThermalVias +QFN, 44 Pin (http://ww1.microchip.com/downloads/en/DeviceDoc/2512S.pdf#page=17), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +87 +45 +Package_DFN_QFN +QFN-44-1EP_7x7mm_P0.5mm_EP5.15x5.15mm +QFN, 44 Pin (http://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/ltc-legacy-qfn/QFN_44_05-08-1763.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +61 +45 +Package_DFN_QFN +QFN-44-1EP_7x7mm_P0.5mm_EP5.15x5.15mm_ThermalVias +QFN, 44 Pin (http://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/ltc-legacy-qfn/QFN_44_05-08-1763.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +87 +45 +Package_DFN_QFN +QFN-44-1EP_8x8mm_P0.65mm_EP6.45x6.45mm +QFN, 44 Pin (http://ww1.microchip.com/downloads/en/DeviceDoc/39935c.pdf#page=152), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +70 +45 +Package_DFN_QFN +QFN-44-1EP_8x8mm_P0.65mm_EP6.45x6.45mm_ThermalVias +QFN, 44 Pin (http://ww1.microchip.com/downloads/en/DeviceDoc/39935c.pdf#page=152), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +107 +45 +Package_DFN_QFN +QFN-44-1EP_9x9mm_P0.65mm_EP7.5x7.5mm +44-Lead Plastic Quad Flat, No Lead Package - 9x9 mm Body [QFN]; see section 10.3 of https://www.parallax.com/sites/default/files/downloads/P8X32A-Propeller-Datasheet-v1.4.0_0.pdf +QFN 0.65 +0 +49 +45 +Package_DFN_QFN +QFN-44-1EP_9x9mm_P0.65mm_EP7.5x7.5mm_ThermalVias +44-Lead Plastic Quad Flat, No Lead Package - 9x9 mm Body [QFN] with thermal vias; see section 10.3 of https://www.parallax.com/sites/default/files/downloads/P8X32A-Propeller-Datasheet-v1.4.0_0.pdf +QFN 0.65 +0 +55 +45 +Package_DFN_QFN +QFN-48-1EP_5x5mm_P0.35mm_EP3.7x3.7mm +QFN, 48 Pin (https://www.espressif.com/sites/default/files/documentation/esp32_datasheet_en.pdf#page=38), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +58 +49 +Package_DFN_QFN +QFN-48-1EP_5x5mm_P0.35mm_EP3.7x3.7mm_ThermalVias +QFN, 48 Pin (https://www.espressif.com/sites/default/files/documentation/esp32_datasheet_en.pdf#page=38), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +75 +49 +Package_DFN_QFN +QFN-48-1EP_6x6mm_P0.4mm_EP4.2x4.2mm +QFN, 48 Pin (https://static.dev.sifive.com/SiFive-FE310-G000-datasheet-v1p5.pdf#page=20), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +58 +49 +Package_DFN_QFN +QFN-48-1EP_6x6mm_P0.4mm_EP4.2x4.2mm_ThermalVias +QFN, 48 Pin (https://static.dev.sifive.com/SiFive-FE310-G000-datasheet-v1p5.pdf#page=20), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +91 +49 +Package_DFN_QFN +QFN-48-1EP_6x6mm_P0.4mm_EP4.3x4.3mm +QFN, 48 Pin (https://www.espressif.com/sites/default/files/documentation/esp32_datasheet_en.pdf#page=38), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +58 +49 +Package_DFN_QFN +QFN-48-1EP_6x6mm_P0.4mm_EP4.3x4.3mm_ThermalVias +QFN, 48 Pin (https://www.espressif.com/sites/default/files/documentation/esp32_datasheet_en.pdf#page=38), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +75 +49 +Package_DFN_QFN +QFN-48-1EP_6x6mm_P0.4mm_EP4.6x4.6mm +QFN, 48 Pin (http://infocenter.nordicsemi.com/pdf/nRF51822_PS_v3.3.pdf#page=67), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +58 +49 +Package_DFN_QFN +QFN-48-1EP_6x6mm_P0.4mm_EP4.6x4.6mm_ThermalVias +QFN, 48 Pin (http://infocenter.nordicsemi.com/pdf/nRF51822_PS_v3.3.pdf#page=67), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +91 +49 +Package_DFN_QFN +QFN-48-1EP_6x6mm_P0.4mm_EP4.66x4.66mm +QFN, 48 Pin (https://www.onsemi.com/pub/Collateral/485BA.PDF), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +58 +49 +Package_DFN_QFN +QFN-48-1EP_6x6mm_P0.4mm_EP4.66x4.66mm_ThermalVias +QFN, 48 Pin (https://www.onsemi.com/pub/Collateral/485BA.PDF), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +91 +49 +Package_DFN_QFN +QFN-48-1EP_7x7mm_P0.5mm_EP5.3x5.3mm +QFN, 48 Pin (https://www.trinamic.com/fileadmin/assets/Products/ICs_Documents/TMC2041_datasheet.pdf#page=62), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +65 +49 +Package_DFN_QFN +QFN-48-1EP_7x7mm_P0.5mm_EP5.3x5.3mm_ThermalVias +QFN, 48 Pin (https://www.trinamic.com/fileadmin/assets/Products/ICs_Documents/TMC2041_datasheet.pdf#page=62), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +91 +49 +Package_DFN_QFN +QFN-48-1EP_7x7mm_P0.5mm_EP5.6x5.6mm +QFN, 48 Pin (http://www.st.com/resource/en/datasheet/stm32f042k6.pdf#page=94), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +65 +49 +Package_DFN_QFN +QFN-48-1EP_7x7mm_P0.5mm_EP5.6x5.6mm_ThermalVias +QFN, 48 Pin (http://www.st.com/resource/en/datasheet/stm32f042k6.pdf#page=94), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +91 +49 +Package_DFN_QFN +QFN-48-1EP_7x7mm_P0.5mm_EP5.15x5.15mm +QFN, 48 Pin (http://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/ltc-legacy-qfn/QFN_48_05-08-1704.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +65 +49 +Package_DFN_QFN +QFN-48-1EP_7x7mm_P0.5mm_EP5.15x5.15mm_ThermalVias +QFN, 48 Pin (http://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/ltc-legacy-qfn/QFN_48_05-08-1704.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +91 +49 +Package_DFN_QFN +QFN-48-1EP_7x7mm_P0.5mm_EP5.45x5.45mm +QFN, 48 Pin (http://www.thatcorp.com/datashts/THAT_626x_Datasheet.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +65 +49 +Package_DFN_QFN +QFN-48-1EP_7x7mm_P0.5mm_EP5.45x5.45mm_ThermalVias +QFN, 48 Pin (http://www.thatcorp.com/datashts/THAT_626x_Datasheet.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +91 +49 +Package_DFN_QFN +QFN-48-1EP_8x8mm_P0.5mm_EP6.2x6.2mm +QFN, 48 Pin (https://www.ftdichip.com/Support/Documents/DataSheets/ICs/DS_FT232H.pdf#page=49), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +74 +49 +Package_DFN_QFN +QFN-48-1EP_8x8mm_P0.5mm_EP6.2x6.2mm_ThermalVias +QFN, 48 Pin (https://www.ftdichip.com/Support/Documents/DataSheets/ICs/DS_FT232H.pdf#page=49), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +111 +49 +Package_DFN_QFN +QFN-52-1EP_7x8mm_P0.5mm_EP5.41x6.45mm +QFN, 52 Pin (https://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/ltc-legacy-qfn/QFN_52_05-08-1729.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +73 +53 +Package_DFN_QFN +QFN-52-1EP_7x8mm_P0.5mm_EP5.41x6.45mm_ThermalVias +QFN, 52 Pin (https://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/ltc-legacy-qfn/QFN_52_05-08-1729.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +104 +53 +Package_DFN_QFN +QFN-56-1EP_7x7mm_P0.4mm_EP5.6x5.6mm +QFN, 56 Pin (http://www.cypress.com/file/416486/download#page=40), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +73 +57 +Package_DFN_QFN +QFN-56-1EP_7x7mm_P0.4mm_EP5.6x5.6mm_ThermalVias +QFN, 56 Pin (http://www.cypress.com/file/416486/download#page=40), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +99 +57 +Package_DFN_QFN +QFN-56-1EP_8x8mm_P0.5mm_EP4.3x4.3mm +QFN, 56 Pin (http://ww1.microchip.com/downloads/en/DeviceDoc/00002142A.pdf#page=40), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +73 +57 +Package_DFN_QFN +QFN-56-1EP_8x8mm_P0.5mm_EP4.3x4.3mm_ThermalVias +QFN, 56 Pin (http://ww1.microchip.com/downloads/en/DeviceDoc/00002142A.pdf#page=40), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +99 +57 +Package_DFN_QFN +QFN-56-1EP_8x8mm_P0.5mm_EP4.5x5.2mm +QFN, 56 Pin (http://www.ti.com/lit/an/scea032/scea032.pdf#page=4), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +73 +57 +Package_DFN_QFN +QFN-56-1EP_8x8mm_P0.5mm_EP4.5x5.2mm_ThermalVias +QFN, 56 Pin (http://www.ti.com/lit/an/scea032/scea032.pdf#page=4), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +99 +57 +Package_DFN_QFN +QFN-56-1EP_8x8mm_P0.5mm_EP4.5x5.2mm_ThermalVias_TopTented +QFN, 56 Pin top tented version (manually modified). For information see: http://www.cypress.com/file/138911/download +QFN DFN_QFN +0 +115 +57 +Package_DFN_QFN +QFN-56-1EP_8x8mm_P0.5mm_EP5.6x5.6mm +QFN, 56 Pin (http://www.ti.com/lit/ds/symlink/tlc5957.pdf#page=23), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +73 +57 +Package_DFN_QFN +QFN-56-1EP_8x8mm_P0.5mm_EP5.6x5.6mm_ThermalVias +QFN, 56 Pin (http://www.ti.com/lit/ds/symlink/tlc5957.pdf#page=23), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +99 +57 +Package_DFN_QFN +QFN-56-1EP_8x8mm_P0.5mm_EP5.9x5.9mm +QFN, 56 Pin (http://ww1.microchip.com/downloads/en/DeviceDoc/00001734B.pdf#page=50), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +73 +57 +Package_DFN_QFN +QFN-56-1EP_8x8mm_P0.5mm_EP5.9x5.9mm_ThermalVias +QFN, 56 Pin (http://ww1.microchip.com/downloads/en/DeviceDoc/00001734B.pdf#page=50), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +99 +57 +Package_DFN_QFN +QFN-64-1EP_8x8mm_P0.4mm_EP6.5x6.5mm +QFN, 64 Pin (http://ww1.microchip.com/downloads/en/DeviceDoc/64L_VQFN_8x8_with%206_5x6_5%20EP_JXX_C04-0437A.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +90 +65 +Package_DFN_QFN +QFN-64-1EP_8x8mm_P0.4mm_EP6.5x6.5mm_ThermalVias +QFN, 64 Pin (http://ww1.microchip.com/downloads/en/DeviceDoc/64L_VQFN_8x8_with%206_5x6_5%20EP_JXX_C04-0437A.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +127 +65 +Package_DFN_QFN +QFN-64-1EP_9x9mm_P0.5mm_EP3.8x3.8mm +QFN, 64 Pin (https://datasheet.lcsc.com/szlcsc/Realtek-Semicon-RTL8211EG-VB-CG_C69264.pdf#page=77), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +74 +65 +Package_DFN_QFN +QFN-64-1EP_9x9mm_P0.5mm_EP3.8x3.8mm_ThermalVias +QFN, 64 Pin (https://datasheet.lcsc.com/szlcsc/Realtek-Semicon-RTL8211EG-VB-CG_C69264.pdf#page=77), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +79 +65 +Package_DFN_QFN +QFN-64-1EP_9x9mm_P0.5mm_EP4.7x4.7mm +QFN, 64 Pin (http://ww1.microchip.com/downloads/en/DeviceDoc/60001477A.pdf (page 1083)), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +74 +65 +Package_DFN_QFN +QFN-64-1EP_9x9mm_P0.5mm_EP4.7x4.7mm_ThermalVias +QFN, 64 Pin (http://ww1.microchip.com/downloads/en/DeviceDoc/60001477A.pdf (page 1083)), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +91 +65 +Package_DFN_QFN +QFN-64-1EP_9x9mm_P0.5mm_EP4.35x4.35mm +QFN, 64 Pin (https://www.ftdichip.com/Support/Documents/DataSheets/ICs/DS_FT2232H.pdf#page=57), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +74 +65 +Package_DFN_QFN +QFN-64-1EP_9x9mm_P0.5mm_EP4.35x4.35mm_ThermalVias +QFN, 64 Pin (https://www.ftdichip.com/Support/Documents/DataSheets/ICs/DS_FT2232H.pdf#page=57), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +91 +65 +Package_DFN_QFN +QFN-64-1EP_9x9mm_P0.5mm_EP5.4x5.4mm +QFN, 64 Pin (http://ww1.microchip.com/downloads/en/DeviceDoc/70593d.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +81 +65 +Package_DFN_QFN +QFN-64-1EP_9x9mm_P0.5mm_EP5.4x5.4mm_ThermalVias +QFN, 64 Pin (http://ww1.microchip.com/downloads/en/DeviceDoc/70593d.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +107 +65 +Package_DFN_QFN +QFN-64-1EP_9x9mm_P0.5mm_EP5.45x5.45mm +QFN, 64 Pin (https://www.infineon.com/dgdl/Infineon-MA12040-DS-v01_00-EN.pdf?fileId=5546d46264a8de7e0164b7467a3d617c#page=81), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +81 +65 +Package_DFN_QFN +QFN-64-1EP_9x9mm_P0.5mm_EP5.45x5.45mm_ThermalVias +QFN, 64 Pin (https://www.infineon.com/dgdl/Infineon-MA12040-DS-v01_00-EN.pdf?fileId=5546d46264a8de7e0164b7467a3d617c#page=81), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +107 +65 +Package_DFN_QFN +QFN-64-1EP_9x9mm_P0.5mm_EP6x6mm +QFN, 64 Pin (http://www.ti.com/lit/ds/symlink/tusb8041.pdf#page=42), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +81 +65 +Package_DFN_QFN +QFN-64-1EP_9x9mm_P0.5mm_EP6x6mm_ThermalVias +QFN, 64 Pin (http://www.ti.com/lit/ds/symlink/tusb8041.pdf#page=42), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +107 +65 +Package_DFN_QFN +QFN-64-1EP_9x9mm_P0.5mm_EP7.3x7.3mm +QFN, 64 Pin (http://ww1.microchip.com/downloads/en/DeviceDoc/00002304A.pdf (page 43)), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +90 +65 +Package_DFN_QFN +QFN-64-1EP_9x9mm_P0.5mm_EP7.3x7.3mm_ThermalVias +QFN, 64 Pin (http://ww1.microchip.com/downloads/en/DeviceDoc/00002304A.pdf (page 43)), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +127 +65 +Package_DFN_QFN +QFN-64-1EP_9x9mm_P0.5mm_EP7.5x7.5mm +QFN, 64 Pin (http://ww1.microchip.com/downloads/en/DeviceDoc/doc7593.pdf (page 432)), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +101 +65 +Package_DFN_QFN +QFN-64-1EP_9x9mm_P0.5mm_EP7.5x7.5mm_ThermalVias +QFN, 64 Pin (http://ww1.microchip.com/downloads/en/DeviceDoc/doc7593.pdf (page 432)), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +151 +65 +Package_DFN_QFN +QFN-64-1EP_9x9mm_P0.5mm_EP7.15x7.15mm +QFN, 64 Pin (https://www.analog.com/media/en/technical-documentation/data-sheets/229321fa.pdf#page=27), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +90 +65 +Package_DFN_QFN +QFN-64-1EP_9x9mm_P0.5mm_EP7.15x7.15mm_ThermalVias +QFN, 64 Pin (https://www.analog.com/media/en/technical-documentation/data-sheets/229321fa.pdf#page=27), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +127 +65 +Package_DFN_QFN +QFN-64-1EP_9x9mm_P0.5mm_EP7.25x7.25mm +64-Lead Plastic Quad Flat No-Lead Package, 9x9mm Body (see Atmel Appnote 8826) +QFN 0.5 +0 +90 +65 +Package_DFN_QFN +QFN-64-1EP_9x9mm_P0.5mm_EP7.35x7.35mm +64-Lead Plastic Quad Flat, No Lead Package (MR) - 9x9x0.9 mm Body [QFN]; (see Microchip Packaging Specification 00000049BS.pdf) +QFN 0.5 +0 +90 +65 +Package_DFN_QFN +QFN-64-1EP_9x9mm_P0.5mm_EP7.65x7.65mm +QFN, 64 Pin (http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-2549-8-bit-AVR-Microcontroller-ATmega640-1280-1281-2560-2561_datasheet.pdf (page 415)), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +101 +65 +Package_DFN_QFN +QFN-64-1EP_9x9mm_P0.5mm_EP7.65x7.65mm_ThermalVias +QFN, 64 Pin (http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-2549-8-bit-AVR-Microcontroller-ATmega640-1280-1281-2560-2561_datasheet.pdf (page 415)), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +151 +65 +Package_DFN_QFN +QFN-68-1EP_8x8mm_P0.4mm_EP5.2x5.2mm +QFN, 68 Pin (https://cdn.microsemi.com/documents/1bf6886f-5919-4508-a50b-b1dbf3fdf0f4/download/#page=98), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +85 +69 +Package_DFN_QFN +QFN-68-1EP_8x8mm_P0.4mm_EP5.2x5.2mm_ThermalVias +QFN, 68 Pin (https://cdn.microsemi.com/documents/1bf6886f-5919-4508-a50b-b1dbf3fdf0f4/download/#page=98), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +111 +69 +Package_DFN_QFN +QFN-72-1EP_10x10mm_P0.5mm_EP6x6mm +QFN, 72 Pin (http://ww1.microchip.com/downloads/en/DeviceDoc/00001682C.pdf#page=70), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +82 +73 +Package_DFN_QFN +QFN-72-1EP_10x10mm_P0.5mm_EP6x6mm_ThermalVias +QFN, 72 Pin (http://ww1.microchip.com/downloads/en/DeviceDoc/00001682C.pdf#page=70), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +135 +73 +Package_DFN_QFN +QFN-76-1EP_9x9mm_P0.4mm_EP3.8x3.8mm +QFN, 76 Pin (https://www.marvell.com/documents/bqcwxsoiqfjkcjdjhkvc/#page=19), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +86 +77 +Package_DFN_QFN +QFN-76-1EP_9x9mm_P0.4mm_EP3.8x3.8mm_ThermalVias +QFN, 76 Pin (https://www.marvell.com/documents/bqcwxsoiqfjkcjdjhkvc/#page=19), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +103 +77 +Package_DFN_QFN +Qorvo_DFN-8-1EP_2x2mm_P0.5mm +DFN 8 2x2mm, 0.5mm http://www.qorvo.com/products/d/da000896 +DFN 0.5 Qorvo 2x2mm +0 +9 +9 +Package_DFN_QFN +ROHM_DFN0604-3 +DFN package size 0604 3 pins +DFN package size 0604 3 pins +0 +3 +3 +Package_DFN_QFN +ST_UFQFPN-20_3x3mm_P0.5mm +UFQFPN 20-lead, 3 x 3 mm, 0.5 mm pitch, ultra thin fine pitch quad flat package (http://www.st.com/resource/en/datasheet/stm8s003f3.pdf) +UFQFPN 0.5 +0 +20 +20 +Package_DFN_QFN +ST_UQFN-6L_1.5x1.7mm_Pitch0.5mm +ST UQFN 6 pin 0.5mm Pitch http://www.st.com/resource/en/datasheet/ecmf02-2amx6.pdf +UQFN DFN 0.5 ST +0 +6 +6 +Package_DFN_QFN +SiliconLabs_QFN-20-1EP_3x3mm_P0.5mm_EP1.8x1.8mm +20-Lead Plastic Quad Flat, No Lead Package - 3x3 mm Body [QFN] with corner pads; see figure 8.2 of https://www.silabs.com/documents/public/data-sheets/efm8bb1-datasheet.pdf +QFN 0.5 +0 +25 +21 +Package_DFN_QFN +SiliconLabs_QFN-20-1EP_3x3mm_P0.5mm_EP1.8x1.8mm_ThermalVias +20-Lead Plastic Quad Flat, No Lead Package - 3x3 mm Body [QFN] with corner pads and thermal vias; see figure 8.2 of https://www.silabs.com/documents/public/data-sheets/efm8bb1-datasheet.pdf +QFN 0.5 +0 +31 +21 +Package_DFN_QFN +TDFN-6-1EP_2.5x2.5mm_P0.65mm_EP1.3x2mm +TDFN, 6 Pin (http://www.nve.com/Downloads/ab3.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +TDFN NoLead +0 +11 +7 +Package_DFN_QFN +TDFN-6-1EP_2.5x2.5mm_P0.65mm_EP1.3x2mm_ThermalVias +TDFN, 6 Pin (http://www.nve.com/Downloads/ab3.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +TDFN NoLead +0 +18 +7 +Package_DFN_QFN +TDFN-8-1EP_2x2mm_P0.5mm_EP0.8x1.2mm +TDFN, 8 Pin (https://pdfserv.maximintegrated.com/package_dwgs/21-0168.PDF), generated with kicad-footprint-generator ipc_noLead_generator.py +TDFN NoLead +0 +13 +9 +Package_DFN_QFN +TDFN-8-1EP_3x2mm_P0.5mm_EP1.3x1.4mm +TDFN, 8 Pin (http://ww1.microchip.com/downloads/en/DeviceDoc/MCP6V66-Family-Data-Sheet-DS20006266A.pdf#page=35), generated with kicad-footprint-generator ipc_noLead_generator.py +TDFN NoLead +0 +13 +9 +Package_DFN_QFN +TDFN-8-1EP_3x2mm_P0.5mm_EP1.80x1.65mm +8-lead plastic dual flat, 2x3x0.75mm size, 0.5mm pitch (http://ww1.microchip.com/downloads/en/DeviceDoc/8L_TDFN_2x3_MN_C04-0129E-MN.pdf) +TDFN DFN 0.5mm +0 +12 +9 +Package_DFN_QFN +TDFN-8-1EP_3x2mm_P0.5mm_EP1.80x1.65mm_ThermalVias +8-lead plastic dual flat, 2x3x0.75mm size, 0.5mm pitch (http://ww1.microchip.com/downloads/en/DeviceDoc/8L_TDFN_2x3_MN_C04-0129E-MN.pdf) +TDFN DFN 0.5mm +0 +17 +9 +Package_DFN_QFN +TDFN-10-1EP_2x3mm_P0.5mm_EP0.9x2mm +TDFN, 10 Pin (https://pdfserv.maximintegrated.com/package_dwgs/21-0429.PDF), generated with kicad-footprint-generator ipc_noLead_generator.py +TDFN NoLead +0 +13 +11 +Package_DFN_QFN +TDFN-10-1EP_2x3mm_P0.5mm_EP0.9x2mm_ThermalVias +TDFN, 10 Pin (https://pdfserv.maximintegrated.com/package_dwgs/21-0429.PDF), generated with kicad-footprint-generator ipc_noLead_generator.py +TDFN NoLead +0 +16 +11 +Package_DFN_QFN +TDFN-12_2x3mm_P0.5mm +TDFN, 12 Pads, No exposed, http://www.st.com/resource/en/datasheet/stm6600.pdf +DFN +0 +12 +12 +Package_DFN_QFN +TDFN-14-1EP_3x3mm_P0.4mm_EP1.78x2.35mm +TDFN, 14 Pin (https://pdfserv.maximintegrated.com/package_dwgs/21-0137.PDF (T1433-2C)), generated with kicad-footprint-generator ipc_noLead_generator.py +TDFN NoLead +0 +19 +15 +Package_DFN_QFN +TDFN-14-1EP_3x3mm_P0.4mm_EP1.78x2.35mm_ThermalVias +TDFN, 14 Pin (https://pdfserv.maximintegrated.com/package_dwgs/21-0137.PDF (T1433-2C)), generated with kicad-footprint-generator ipc_noLead_generator.py +TDFN NoLead +0 +26 +15 +Package_DFN_QFN +TQFN-16-1EP_3x3mm_P0.5mm_EP1.6x1.6mm +TQFN, 16 Pin (https://www.diodes.com/assets/Datasheets/PI6C5946002.pdf#page=12), generated with kicad-footprint-generator ipc_noLead_generator.py +TQFN NoLead +0 +21 +17 +Package_DFN_QFN +TQFN-16-1EP_3x3mm_P0.5mm_EP1.23x1.23mm +TQFN, 16 Pin (https://pdfserv.maximintegrated.com/package_dwgs/21-0136.PDF (T1633-5), https://pdfserv.maximintegrated.com/land_patterns/90-0032.PDF), generated with kicad-footprint-generator ipc_noLead_generator.py +TQFN NoLead +0 +21 +17 +Package_DFN_QFN +TQFN-16-1EP_3x3mm_P0.5mm_EP1.23x1.23mm_ThermalVias +TQFN, 16 Pin (https://pdfserv.maximintegrated.com/package_dwgs/21-0136.PDF (T1633-5), https://pdfserv.maximintegrated.com/land_patterns/90-0032.PDF), generated with kicad-footprint-generator ipc_noLead_generator.py +TQFN NoLead +0 +26 +17 +Package_DFN_QFN +TQFN-16-1EP_5x5mm_P0.8mm_EP2.29x2.29mm +TQFN, 16 Pin (https://pdfserv.maximintegrated.com/package_dwgs/21-0140.PDF (T1655-4)), generated with kicad-footprint-generator ipc_noLead_generator.py +TQFN NoLead +0 +21 +17 +Package_DFN_QFN +TQFN-16-1EP_5x5mm_P0.8mm_EP2.29x2.29mm_ThermalVias +TQFN, 16 Pin (https://pdfserv.maximintegrated.com/package_dwgs/21-0140.PDF (T1655-4)), generated with kicad-footprint-generator ipc_noLead_generator.py +TQFN NoLead +0 +26 +17 +Package_DFN_QFN +TQFN-16-1EP_5x5mm_P0.8mm_EP3.1x3.1mm +TQFN, 16 Pin (https://pdfserv.maximintegrated.com/package_dwgs/21-0140.PDF (T1655-2)), generated with kicad-footprint-generator ipc_noLead_generator.py +TQFN NoLead +0 +21 +17 +Package_DFN_QFN +TQFN-16-1EP_5x5mm_P0.8mm_EP3.1x3.1mm_ThermalVias +TQFN, 16 Pin (https://pdfserv.maximintegrated.com/package_dwgs/21-0140.PDF (T1655-2)), generated with kicad-footprint-generator ipc_noLead_generator.py +TQFN NoLead +0 +31 +17 +Package_DFN_QFN +TQFN-20-1EP_5x5mm_P0.65mm_EP3.1x3.1mm +TQFN, 20 Pin (https://pdfserv.maximintegrated.com/package_dwgs/21-0140.PDF (T2055-3)), generated with kicad-footprint-generator ipc_noLead_generator.py +TQFN NoLead +0 +25 +21 +Package_DFN_QFN +TQFN-20-1EP_5x5mm_P0.65mm_EP3.1x3.1mm_ThermalVias +TQFN, 20 Pin (https://pdfserv.maximintegrated.com/package_dwgs/21-0140.PDF (T2055-3)), generated with kicad-footprint-generator ipc_noLead_generator.py +TQFN NoLead +0 +35 +21 +Package_DFN_QFN +TQFN-20-1EP_5x5mm_P0.65mm_EP3.25x3.25mm +TQFN, 20 Pin (https://pdfserv.maximintegrated.com/package_dwgs/21-0140.PDF (T2055-5)), generated with kicad-footprint-generator ipc_noLead_generator.py +TQFN NoLead +0 +25 +21 +Package_DFN_QFN +TQFN-20-1EP_5x5mm_P0.65mm_EP3.25x3.25mm_ThermalVias +TQFN, 20 Pin (https://pdfserv.maximintegrated.com/package_dwgs/21-0140.PDF (T2055-5)), generated with kicad-footprint-generator ipc_noLead_generator.py +TQFN NoLead +0 +35 +21 +Package_DFN_QFN +TQFN-24-1EP_4x4mm_P0.5mm_EP2.8x2.8mm_PullBack +TQFN, 24 Pin (https://ams.com/documents/20143/36005/AS1115_DS000206_1-00.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +TQFN NoLead +0 +29 +25 +Package_DFN_QFN +TQFN-24-1EP_4x4mm_P0.5mm_EP2.8x2.8mm_PullBack_ThermalVias +TQFN, 24 Pin (https://ams.com/documents/20143/36005/AS1115_DS000206_1-00.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +TQFN NoLead +0 +39 +25 +Package_DFN_QFN +TQFN-28-1EP_5x5mm_P0.5mm_EP2.7x2.7mm +TQFN, 28 Pin (https://pdfserv.maximintegrated.com/package_dwgs/21-0140.PDF (T2855-4)), generated with kicad-footprint-generator ipc_noLead_generator.py +TQFN NoLead +0 +33 +29 +Package_DFN_QFN +TQFN-28-1EP_5x5mm_P0.5mm_EP2.7x2.7mm_ThermalVias +TQFN, 28 Pin (https://pdfserv.maximintegrated.com/package_dwgs/21-0140.PDF (T2855-4)), generated with kicad-footprint-generator ipc_noLead_generator.py +TQFN NoLead +0 +38 +29 +Package_DFN_QFN +TQFN-28-1EP_5x5mm_P0.5mm_EP3.25x3.25mm +TQFN, 28 Pin (https://pdfserv.maximintegrated.com/package_dwgs/21-0140.PDF (T2855-3)), generated with kicad-footprint-generator ipc_noLead_generator.py +TQFN NoLead +0 +33 +29 +Package_DFN_QFN +TQFN-28-1EP_5x5mm_P0.5mm_EP3.25x3.25mm_ThermalVias +TQFN, 28 Pin (https://pdfserv.maximintegrated.com/package_dwgs/21-0140.PDF (T2855-3)), generated with kicad-footprint-generator ipc_noLead_generator.py +TQFN NoLead +0 +43 +29 +Package_DFN_QFN +TQFN-32-1EP_5x5mm_P0.5mm_EP2.1x2.1mm +TQFN, 32 Pin (https://pdfserv.maximintegrated.com/package_dwgs/21-0140.PDF (T3255-6)), generated with kicad-footprint-generator ipc_noLead_generator.py +TQFN NoLead +0 +37 +33 +Package_DFN_QFN +TQFN-32-1EP_5x5mm_P0.5mm_EP2.1x2.1mm_ThermalVias +TQFN, 32 Pin (https://pdfserv.maximintegrated.com/package_dwgs/21-0140.PDF (T3255-6)), generated with kicad-footprint-generator ipc_noLead_generator.py +TQFN NoLead +0 +42 +33 +Package_DFN_QFN +TQFN-32-1EP_5x5mm_P0.5mm_EP3.1x3.1mm +TQFN, 32 Pin (https://pdfserv.maximintegrated.com/package_dwgs/21-0140.PDF (T3255-3)), generated with kicad-footprint-generator ipc_noLead_generator.py +TQFN NoLead +0 +37 +33 +Package_DFN_QFN +TQFN-32-1EP_5x5mm_P0.5mm_EP3.1x3.1mm_ThermalVias +TQFN, 32 Pin (https://pdfserv.maximintegrated.com/package_dwgs/21-0140.PDF (T3255-3)), generated with kicad-footprint-generator ipc_noLead_generator.py +TQFN NoLead +0 +47 +33 +Package_DFN_QFN +TQFN-32-1EP_5x5mm_P0.5mm_EP3.4x3.4mm +TQFN, 32 Pin (https://pdfserv.maximintegrated.com/package_dwgs/21-0140.PDF (T3255-9)), generated with kicad-footprint-generator ipc_noLead_generator.py +TQFN NoLead +0 +37 +33 +Package_DFN_QFN +TQFN-32-1EP_5x5mm_P0.5mm_EP3.4x3.4mm_ThermalVias +TQFN, 32 Pin (https://pdfserv.maximintegrated.com/package_dwgs/21-0140.PDF (T3255-9)), generated with kicad-footprint-generator ipc_noLead_generator.py +TQFN NoLead +0 +47 +33 +Package_DFN_QFN +TQFN-40-1EP_5x5mm_P0.4mm_EP3.5x3.5mm +TQFN, 40 Pin (https://pdfserv.maximintegrated.com/package_dwgs/21-0140.PDF (T4055-1)), generated with kicad-footprint-generator ipc_noLead_generator.py +TQFN NoLead +0 +45 +41 +Package_DFN_QFN +TQFN-40-1EP_5x5mm_P0.4mm_EP3.5x3.5mm_ThermalVias +TQFN, 40 Pin (https://pdfserv.maximintegrated.com/package_dwgs/21-0140.PDF (T4055-1)), generated with kicad-footprint-generator ipc_noLead_generator.py +TQFN NoLead +0 +55 +41 +Package_DFN_QFN +TQFN-48-1EP_7x7mm_P0.5mm_EP5.1x5.1mm +TQFN, 48 Pin (https://pdfserv.maximintegrated.com/package_dwgs/21-0144.PDF), generated with kicad-footprint-generator ipc_noLead_generator.py +TQFN NoLead +0 +58 +49 +Package_DFN_QFN +TQFN-48-1EP_7x7mm_P0.5mm_EP5.1x5.1mm_ThermalVias +TQFN, 48 Pin (https://pdfserv.maximintegrated.com/package_dwgs/21-0144.PDF), generated with kicad-footprint-generator ipc_noLead_generator.py +TQFN NoLead +0 +75 +49 +Package_DFN_QFN +Texas_DRB0008A +DFN-8, 3x3x1mm, http://www.ti.com/lit/ds/symlink/ucc24610.pdf +DRB0008A +0 +23 +9 +Package_DFN_QFN +Texas_MOF0009A +Texas Instruments, QFM MOF0009A, 6x8x2mm (http://www.ti.com/lit/ml/mpsi063a/mpsi063a.pdf) +ti qfm mof0009a +0 +24 +9 +Package_DFN_QFN +Texas_QFN-41_10x16mm +QFN, 41 Pin (http://www.ti.com/lit/ml/mpqf506/mpqf506.pdf) +QFN DFN_QFN +0 +65 +41 +Package_DFN_QFN +Texas_R-PUQFN-N10 +http://www.ti.com/general/docs/lit/getliterature.tsp?baseLiteratureNumber=MPQF186&fileType=pdf +Texas_R-PUQFN-N10 +0 +10 +10 +Package_DFN_QFN +Texas_R-PWQFN-N28_EP2.1x3.1mm +QFN, 28 Pin (http://www.ti.com/lit/ds/symlink/tps51363.pdf#page=29), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +33 +29 +Package_DFN_QFN +Texas_R-PWQFN-N28_EP2.1x3.1mm_ThermalVias +QFN, 28 Pin (http://www.ti.com/lit/ds/symlink/tps51363.pdf#page=29), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +43 +29 +Package_DFN_QFN +Texas_RGE0024C_EP2.1x2.1mm +Texas QFN, 24 Pin (http://www.ti.com/lit/ds/symlink/pca9548a.pdf#page=37), generated with kicad-footprint-generator ipc_noLead_generator.py +Texas QFN NoLead +0 +29 +25 +Package_DFN_QFN +Texas_RGE0024C_EP2.1x2.1mm_ThermalVias +Texas QFN, 24 Pin (http://www.ti.com/lit/ds/symlink/pca9548a.pdf#page=37), generated with kicad-footprint-generator ipc_noLead_generator.py +Texas QFN NoLead +0 +39 +25 +Package_DFN_QFN +Texas_RGE0024H_EP2.7x2.7mm +Texas QFN, 24 Pin (http://www.ti.com/lit/ds/symlink/tlc5971.pdf#page=39), generated with kicad-footprint-generator ipc_noLead_generator.py +Texas QFN NoLead +0 +29 +25 +Package_DFN_QFN +Texas_RGE0024H_EP2.7x2.7mm_ThermalVias +Texas QFN, 24 Pin (http://www.ti.com/lit/ds/symlink/tlc5971.pdf#page=39), generated with kicad-footprint-generator ipc_noLead_generator.py +Texas QFN NoLead +0 +39 +25 +Package_DFN_QFN +Texas_RGV_S-PVQFN-N16_EP2.1x2.1mm +QFN, 16 Pin (http://www.ti.com/lit/ds/symlink/ina3221.pdf#page=44), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +21 +17 +Package_DFN_QFN +Texas_RGV_S-PVQFN-N16_EP2.1x2.1mm_ThermalVias +QFN, 16 Pin (http://www.ti.com/lit/ds/symlink/ina3221.pdf#page=44), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +31 +17 +Package_DFN_QFN +Texas_RGY_R-PVQFN-N24_EP2.05x3.1mm +QFN, 24 Pin (http://www.ti.com/lit/ds/symlink/bq24133.pdf#page=40) +QFN NoLead +0 +29 +25 +Package_DFN_QFN +Texas_RGY_R-PVQFN-N24_EP2.05x3.1mm_ThermalVias +QFN, 24 Pin (http://www.ti.com/lit/ds/symlink/bq24133.pdf#page=40) +QFN NoLead +0 +36 +25 +Package_DFN_QFN +Texas_RNN0018A +Texas Instruments, VQFN-HR RNN0018A (http://www.ti.com/lit/ds/symlink/tps568215.pdf) +ti vqfn-hr rnn0018a +0 +26 +18 +Package_DFN_QFN +Texas_RUM0016A_EP2.6x2.6mm +QFN, 16 Pin (http://www.ti.com/lit/ds/symlink/lmh0074.pdf#page=13), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +21 +17 +Package_DFN_QFN +Texas_RUM0016A_EP2.6x2.6mm_ThermalVias +QFN, 16 Pin (http://www.ti.com/lit/ds/symlink/lmh0074.pdf#page=13), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +31 +17 +Package_DFN_QFN +Texas_RWH0032A +Texas Instruments, RWH0032A, 8x8x0.9mm (http://www.ti.com/lit/ds/snosd10c/snosd10c.pdf) +ti rwh0032a +0 +71 +33 +Package_DFN_QFN +Texas_RWH0032A_ThermalVias +Texas Instruments, RWH0032A, 8x8x0.9mm (http://www.ti.com/lit/ds/snosd10c/snosd10c.pdf) +ti rwh0032a +0 +94 +33 +Package_DFN_QFN +Texas_R_PUQFN-N12 +Texas_R_PUQFN-N12 http://www.ti.com/lit/ds/symlink/txb0104.pdf +Texas_R_PUQFN-N12 +0 +13 +12 +Package_DFN_QFN +Texas_S-PDSO-N10_EP1.2x2mm +DFN, 10 Pin (http://www.ti.com/lit/ds/symlink/tps7a91.pdf#page=30), generated with kicad-footprint-generator ipc_noLead_generator.py +DFN NoLead +0 +15 +11 +Package_DFN_QFN +Texas_S-PDSO-N10_EP1.2x2mm_ThermalVias +DFN, 10 Pin (http://www.ti.com/lit/ds/symlink/tps7a91.pdf#page=30), generated with kicad-footprint-generator ipc_noLead_generator.py +DFN NoLead +0 +22 +11 +Package_DFN_QFN +Texas_S-PVQFN-N14 +Texas_S-PVQFN-N14 http://www.ti.com/lit/ds/symlink/txb0104.pdf +Texas_S-PVQFN-N14_4.3x4.3_Pitch0.5mm_ThermalPad +0 +19 +15 +Package_DFN_QFN +Texas_S-PVQFN-N14_ThermalVias +Texas_S-PVQFN-N14_ThermalVias http://www.ti.com/lit/ds/symlink/txb0104.pdf +Texas_S-PVQFN-N14_ThermalVias +0 +24 +15 +Package_DFN_QFN +Texas_S-PVQFN-N16_EP2.7x2.7mm +QFN, 16 Pin (http://www.ti.com/lit/ds/symlink/msp430g2001.pdf#page=43), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +26 +17 +Package_DFN_QFN +Texas_S-PVQFN-N16_EP2.7x2.7mm_ThermalVias +QFN, 16 Pin (http://www.ti.com/lit/ds/symlink/msp430g2001.pdf#page=43), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +31 +17 +Package_DFN_QFN +Texas_S-PVQFN-N20_EP2.4x2.4mm +QFN, 20 Pin (http://www.ti.com/lit/ds/symlink/cc1101.pdf#page=101), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +25 +21 +Package_DFN_QFN +Texas_S-PVQFN-N20_EP2.4x2.4mm_ThermalVias +QFN, 20 Pin (http://www.ti.com/lit/ds/symlink/cc1101.pdf#page=101), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +35 +21 +Package_DFN_QFN +Texas_S-PVQFN-N20_EP2.7x2.7mm +QFN, 20 Pin (http://www.ti.com/lit/ds/symlink/drv8662.pdf#page=23), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +25 +21 +Package_DFN_QFN +Texas_S-PVQFN-N20_EP2.7x2.7mm_ThermalVias +QFN, 20 Pin (http://www.ti.com/lit/ds/symlink/drv8662.pdf#page=23), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +35 +21 +Package_DFN_QFN +Texas_S-PVQFN-N20_EP3.15x3.15mm +QFN, 20 Pin (www.ti.com/lit/ds/symlink/tps7a7200.pdf#page=36), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +25 +21 +Package_DFN_QFN +Texas_S-PVQFN-N20_EP3.15x3.15mm_ThermalVias +QFN, 20 Pin (www.ti.com/lit/ds/symlink/tps7a7200.pdf#page=36), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +47 +21 +Package_DFN_QFN +Texas_S-PVQFN-N24_EP2.1x2.1mm +QFN, 24 Pin (http://www.ti.com/lit/ds/symlink/msp430fr5720.pdf#page=108), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +29 +25 +Package_DFN_QFN +Texas_S-PVQFN-N24_EP2.1x2.1mm_ThermalVias +QFN, 24 Pin (http://www.ti.com/lit/ds/symlink/msp430fr5720.pdf#page=108), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +39 +25 +Package_DFN_QFN +Texas_S-PVQFN-N32_EP3.45x3.45mm +QFN, 32 Pin (http://www.ti.com/lit/ds/symlink/msp430f1122.pdf#page=54), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +42 +33 +Package_DFN_QFN +Texas_S-PVQFN-N32_EP3.45x3.45mm_ThermalVias +QFN, 32 Pin (http://www.ti.com/lit/ds/symlink/msp430f1122.pdf#page=54), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +59 +33 +Package_DFN_QFN +Texas_S-PVQFN-N36_EP4.4x4.4mm +QFN, 36 Pin (http://www.ti.com/lit/ds/slvsba5d/slvsba5d.pdf#page=35), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +46 +37 +Package_DFN_QFN +Texas_S-PVQFN-N36_EP4.4x4.4mm_ThermalVias +QFN, 36 Pin (http://www.ti.com/lit/ds/slvsba5d/slvsba5d.pdf#page=35), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +79 +37 +Package_DFN_QFN +Texas_S-PVQFN-N40_EP2.9x2.9mm +QFN, 40 Pin (http://www.ti.com/lit/ds/symlink/msp430fr5731.pdf#page=111 JEDEC MO-220 variation VJJD-2), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +45 +41 +Package_DFN_QFN +Texas_S-PVQFN-N40_EP2.9x2.9mm_ThermalVias +QFN, 40 Pin (http://www.ti.com/lit/ds/symlink/msp430fr5731.pdf#page=111 JEDEC MO-220 variation VJJD-2), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +55 +41 +Package_DFN_QFN +Texas_S-PVQFN-N40_EP3.52x2.62mm +QFN, 40 Pin (http://www.ti.com/lit/ds/symlink/drv8308.pdf#page=56 JEDEC MO-220 variation VJJD-2), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +47 +41 +Package_DFN_QFN +Texas_S-PVQFN-N40_EP3.52x2.62mm_ThermalVias +QFN, 40 Pin (http://www.ti.com/lit/ds/symlink/drv8308.pdf#page=56 JEDEC MO-220 variation VJJD-2), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +60 +41 +Package_DFN_QFN +Texas_S-PVQFN-N40_EP4.6x4.6mm +QFN, 40 Pin (http://www.ti.com/lit/ds/symlink/dac7750.pdf#page=54), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +50 +41 +Package_DFN_QFN +Texas_S-PVQFN-N40_EP4.6x4.6mm_ThermalVias +QFN, 40 Pin (http://www.ti.com/lit/ds/symlink/dac7750.pdf#page=54), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +83 +41 +Package_DFN_QFN +Texas_S-PVQFN-N40_EP4.15x4.15mm +QFN, 40 Pin (http://www.ti.com/lit/ds/symlink/msp430g2755.pdf#page=70 JEDEC MO-220 variation VJJD-2), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +50 +41 +Package_DFN_QFN +Texas_S-PVQFN-N40_EP4.15x4.15mm_ThermalVias +QFN, 40 Pin (http://www.ti.com/lit/ds/symlink/msp430g2755.pdf#page=70 JEDEC MO-220 variation VJJD-2), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +83 +41 +Package_DFN_QFN +Texas_S-PVQFN-N48_EP5.15x5.15mm +QFN, 48 Pin (http://www.ti.com/lit/ds/symlink/msp430f5232.pdf#page=111), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +65 +49 +Package_DFN_QFN +Texas_S-PVQFN-N48_EP5.15x5.15mm_ThermalVias +QFN, 48 Pin (http://www.ti.com/lit/ds/symlink/msp430f5232.pdf#page=111), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +111 +49 +Package_DFN_QFN +Texas_S-PVQFN-N64_EP4.25x4.25mm +QFN, 64 Pin (http://www.ti.com/lit/ds/symlink/msp430f5217.pdf#page=120), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +69 +65 +Package_DFN_QFN +Texas_S-PVQFN-N64_EP4.25x4.25mm_ThermalVias +QFN, 64 Pin (http://www.ti.com/lit/ds/symlink/msp430f5217.pdf#page=120), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +127 +65 +Package_DFN_QFN +Texas_S-PWQFN-N16_EP2.1x2.1mm +QFN, 16 Pin (http://www.ti.com/lit/ds/symlink/drv8801.pdf#page=31 MO-220 variation VGGC), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +21 +17 +Package_DFN_QFN +Texas_S-PWQFN-N16_EP2.1x2.1mm_ThermalVias +QFN, 16 Pin (http://www.ti.com/lit/ds/symlink/drv8801.pdf#page=31 MO-220 variation VGGC), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +31 +17 +Package_DFN_QFN +Texas_S-PWQFN-N20 +20-Pin Plastic Quad Flatpack No-Lead Package, Body 3.0x3.0x0.8mm, Texas Instruments (http://www.ti.com/lit/ds/symlink/tps22993.pdf) +QFN 0.4 +0 +24 +20 +Package_DFN_QFN +Texas_S-PWQFN-N24_EP2.7x2.7mm +QFN, 24 Pin (http://www.ti.com/lit/ds/symlink/bq25601.pdf#page=54), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +29 +25 +Package_DFN_QFN +Texas_S-PWQFN-N24_EP2.7x2.7mm_ThermalVias +QFN, 24 Pin (http://www.ti.com/lit/ds/symlink/bq25601.pdf#page=54), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +39 +25 +Package_DFN_QFN +Texas_S-PWQFN-N32_EP2.8x2.8mm +QFN, 32 Pin (https://www.ti.com/lit/ds/symlink/bq25703a.pdf#page=90), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +37 +33 +Package_DFN_QFN +Texas_S-PWQFN-N32_EP2.8x2.8mm_ThermalVias +QFN, 32 Pin (https://www.ti.com/lit/ds/symlink/bq25703a.pdf#page=90), generated with kicad-footprint-generator ipc_noLead_generator.py +QFN NoLead +0 +47 +33 +Package_DFN_QFN +Texas_S-PWQFN-N100_EP5.5x5.5mm +http://www.ti.com/general/docs/lit/getliterature.tsp?baseLiteratureNumber=szza059&fileType=pdf,http://www.ti.com/lit/ds/sllse76m/sllse76m.pdf +MultiRow QFN +0 +114 +105 +Package_DFN_QFN +Texas_S-PWQFN-N100_EP5.5x5.5mm_ThermalVias +http://www.ti.com/general/docs/lit/getliterature.tsp?baseLiteratureNumber=szza059&fileType=pdf,http://www.ti.com/lit/ds/sllse76m/sllse76m.pdf +MultiRow QFN +0 +131 +105 +Package_DFN_QFN +Texas_S-PX2QFN-14 +Texas QFN, 14 Pin (http://www.ti.com/lit/ds/symlink/tlv9004.pdf#page=64), generated with kicad-footprint-generator ipc_noLead_generator.py +Texas QFN NoLead +0 +14 +14 +Package_DFN_QFN +Texas_VQFN-RHL-20 +http://www.ti.com/lit/ds/symlink/bq51050b.pdf +RHL0020A +0 +33 +21 +Package_DFN_QFN +Texas_VQFN-RHL-20_ThermalVias +http://www.ti.com/lit/ds/symlink/bq51050b.pdf +RHL0020A +0 +41 +21 +Package_DFN_QFN +Texas_VSON-HR-8_1.5x2mm_P0.5mm +Texas VSON-HR, 8 Pin (http://www.ti.com/lit/ds/symlink/tps62823.pdf#page=29), generated with kicad-footprint-generator ipc_noLead_generator.py +Texas VSON-HR NoLead +0 +8 +8 +Package_DFN_QFN +Texas_WQFN-MR-100_3x3-DapStencil +http://www.ti.com/general/docs/lit/getliterature.tsp?baseLiteratureNumber=szza059&fileType=pdf,http://www.ti.com/general/docs/lit/getliterature.tsp?baseLiteratureNumber=mpqf258&fileType=pdf,http://www.ti.com/general/docs/lit/getliterature.tsp?baseLiteratureNumber=LPPD235&fileType=pdf +MultiRow QFN +0 +113 +105 +Package_DFN_QFN +Texas_WQFN-MR-100_ThermalVias_3x3-DapStencil +http://www.ti.com/general/docs/lit/getliterature.tsp?baseLiteratureNumber=szza059&fileType=pdf,http://www.ti.com/general/docs/lit/getliterature.tsp?baseLiteratureNumber=mpqf258&fileType=pdf,http://www.ti.com/general/docs/lit/getliterature.tsp?baseLiteratureNumber=LPPD235&fileType=pdf +MultiRow QFN +0 +126 +105 +Package_DFN_QFN +Texas_X2QFN-12_1.6x1.6mm_P0.4mm +Texas X2QFN, 12 Pin (http://www.ti.com/lit/ml/mpqf391c/mpqf391c.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +Texas X2QFN NoLead +0 +12 +12 +Package_DFN_QFN +UDFN-4-1EP_1x1mm_P0.65mm_EP0.48x0.48mm +UDFN-4_1x1mm_P0.65mm, http://ww1.microchip.com/downloads/en/DeviceDoc/MIC550x-300mA-Single-Output-LDO-in-Small-Packages-DS20006006A.pdf +UDFN-4_1x1mm_P0.65mm +0 +5 +5 +Package_DFN_QFN +UDFN-9_1.0x3.8mm_P0.5mm +9-pin UDFN package, 1.0x3.8mm, (Ref: https://katalog.we-online.de/pbs/datasheet/824014881.pdf) +UDFN SMD +0 +9 +9 +Package_DFN_QFN +UDFN-10_1.35x2.6mm_P0.5mm +http://www.st.com/content/ccc/resource/technical/document/datasheet/f2/11/8a/ed/40/31/40/56/DM00088292.pdf/files/DM00088292.pdf/jcr:content/translations/en.DM00088292.pdf +UDFN 0.5 uQFN +0 +10 +10 +Package_DFN_QFN +UQFN-10_1.3x1.8mm_P0.4mm +UQFN, 10 Pin (http://ww1.microchip.com/downloads/en/DeviceDoc/00001725D.pdf (Page 9)), generated with kicad-footprint-generator ipc_noLead_generator.py +UQFN NoLead +0 +10 +10 +Package_DFN_QFN +UQFN-10_1.4x1.8mm_P0.4mm +UQFN 10pin, https://www.onsemi.com/pub/Collateral/488AT.PDF +UQFN-10_1.4x1.8mm_P0.4mm +0 +10 +10 +Package_DFN_QFN +UQFN-10_1.6x2.1mm_P0.5mm +UQFN, 10 Pin (http://ww1.microchip.com/downloads/en/DeviceDoc/00001725D.pdf (Page 12)), generated with kicad-footprint-generator ipc_noLead_generator.py +UQFN NoLead +0 +10 +10 +Package_DFN_QFN +UQFN-16-1EP_3x3mm_P0.5mm_EP1.75x1.75mm +16-Lead Ultra Thin Quad Flat, No Lead Package (UC) - 3x3x0.5 mm Body [UQFN]; (see Microchip Packaging Specification 00000049BS.pdf) +QFN 0.5 +0 +21 +17 +Package_DFN_QFN +UQFN-16-1EP_4x4mm_P0.65mm_EP2.6x2.6mm +UQFN, 16 Pin (http://ww1.microchip.com/downloads/en/DeviceDoc/16L_UQFN_4x4x0_5mm_JQ_C04257A.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +UQFN NoLead +0 +21 +17 +Package_DFN_QFN +UQFN-16-1EP_4x4mm_P0.65mm_EP2.6x2.6mm_ThermalVias +UQFN, 16 Pin (http://ww1.microchip.com/downloads/en/DeviceDoc/16L_UQFN_4x4x0_5mm_JQ_C04257A.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +UQFN NoLead +0 +31 +17 +Package_DFN_QFN +UQFN-16-1EP_4x4mm_P0.65mm_EP2.7x2.7mm +16-Lead Ultra Thin Plastic Quad Flat, No Lead Package (JQ) - 4x4x0.5 mm Body [UQFN]; (see Microchip Packaging Specification 00000049BS.pdf) +QFN 0.65 +0 +21 +17 +Package_DFN_QFN +UQFN-20-1EP_3x3mm_P0.4mm_EP1.85x1.85mm +UQFN, 20 Pin (http://ww1.microchip.com/downloads/en/PackagingSpec/00000049BQ.pdf#page=332), generated with kicad-footprint-generator ipc_noLead_generator.py +UQFN NoLead +0 +25 +21 +Package_DFN_QFN +UQFN-20-1EP_3x3mm_P0.4mm_EP1.85x1.85mm_ThermalVias +UQFN, 20 Pin (http://ww1.microchip.com/downloads/en/PackagingSpec/00000049BQ.pdf#page=332), generated with kicad-footprint-generator ipc_noLead_generator.py +UQFN NoLead +0 +30 +21 +Package_DFN_QFN +UQFN-20-1EP_4x4mm_P0.5mm_EP2.8x2.8mm +UQFN, 20 Pin (http://ww1.microchip.com/downloads/en/DeviceDoc/40001839B.pdf#page=464), generated with kicad-footprint-generator ipc_noLead_generator.py +UQFN NoLead +0 +25 +21 +Package_DFN_QFN +UQFN-20-1EP_4x4mm_P0.5mm_EP2.8x2.8mm_ThermalVias +UQFN, 20 Pin (http://ww1.microchip.com/downloads/en/DeviceDoc/40001839B.pdf#page=464), generated with kicad-footprint-generator ipc_noLead_generator.py +UQFN NoLead +0 +35 +21 +Package_DFN_QFN +UQFN-28-1EP_4x4mm_P0.4mm_EP2.35x2.35mm +UQFN, 28 Pin (http://ww1.microchip.com/downloads/en/PackagingSpec/00000049BQ.pdf#page=338), generated with kicad-footprint-generator ipc_noLead_generator.py +UQFN NoLead +0 +33 +29 +Package_DFN_QFN +UQFN-28-1EP_4x4mm_P0.4mm_EP2.35x2.35mm_ThermalVias +UQFN, 28 Pin (http://ww1.microchip.com/downloads/en/PackagingSpec/00000049BQ.pdf#page=338), generated with kicad-footprint-generator ipc_noLead_generator.py +UQFN NoLead +0 +43 +29 +Package_DFN_QFN +UQFN-40-1EP_5x5mm_P0.4mm_EP3.8x3.8mm +UQFN, 40 Pin (http://ww1.microchip.com/downloads/en/PackagingSpec/00000049BQ.pdf#page=345), generated with kicad-footprint-generator ipc_noLead_generator.py +UQFN NoLead +0 +50 +41 +Package_DFN_QFN +UQFN-40-1EP_5x5mm_P0.4mm_EP3.8x3.8mm_ThermalVias +UQFN, 40 Pin (http://ww1.microchip.com/downloads/en/PackagingSpec/00000049BQ.pdf#page=345), generated with kicad-footprint-generator ipc_noLead_generator.py +UQFN NoLead +0 +67 +41 +Package_DFN_QFN +UQFN-48-1EP_6x6mm_P0.4mm_EP4.45x4.45mm +UQFN, 48 Pin (http://ww1.microchip.com/downloads/en/PackagingSpec/00000049BQ.pdf#page=347), generated with kicad-footprint-generator ipc_noLead_generator.py +UQFN NoLead +0 +58 +49 +Package_DFN_QFN +UQFN-48-1EP_6x6mm_P0.4mm_EP4.45x4.45mm_ThermalVias +UQFN, 48 Pin (http://ww1.microchip.com/downloads/en/PackagingSpec/00000049BQ.pdf#page=347), generated with kicad-footprint-generator ipc_noLead_generator.py +UQFN NoLead +0 +75 +49 +Package_DFN_QFN +UQFN-48-1EP_6x6mm_P0.4mm_EP4.62x4.62mm +UQFN, 48 Pin (https://github.com/KiCad/kicad-symbols/pull/1189#issuecomment-449506354), generated with kicad-footprint-generator ipc_noLead_generator.py +UQFN NoLead +0 +53 +49 +Package_DFN_QFN +UQFN-48-1EP_6x6mm_P0.4mm_EP4.62x4.62mm_ThermalVias +UQFN, 48 Pin (https://github.com/KiCad/kicad-symbols/pull/1189#issuecomment-449506354), generated with kicad-footprint-generator ipc_noLead_generator.py +UQFN NoLead +0 +75 +49 +Package_DFN_QFN +VDFN-8-1EP_2x2mm_P0.5mm_EP0.9x1.7mm +8-Lead Very Thin Dual Flatpack No-Lead (LZ) - 2x3x0.9 mm Body [VDFN] (see Microchip Packaging Specification 00000049BS.pdf) +DFN 0.5 +0 +11 +9 +Package_DFN_QFN +VQFN-16-1EP_3x3mm_P0.5mm_EP1.6x1.6mm +VQFN, 16 Pin (http://www.ti.com/lit/ds/symlink/cdclvp1102.pdf#page=28), generated with kicad-footprint-generator ipc_noLead_generator.py +VQFN NoLead +0 +21 +17 +Package_DFN_QFN +VQFN-16-1EP_3x3mm_P0.5mm_EP1.6x1.6mm_ThermalVias +VQFN, 16 Pin (http://www.ti.com/lit/ds/symlink/cdclvp1102.pdf#page=28), generated with kicad-footprint-generator ipc_noLead_generator.py +VQFN NoLead +0 +26 +17 +Package_DFN_QFN +VQFN-16-1EP_3x3mm_P0.5mm_EP1.8x1.8mm +VQFN, 16 Pin (https://www.st.com/resource/en/datasheet/stspin220.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +VQFN NoLead +0 +21 +17 +Package_DFN_QFN +VQFN-16-1EP_3x3mm_P0.5mm_EP1.8x1.8mm_ThermalVias +VQFN, 16 Pin (https://www.st.com/resource/en/datasheet/stspin220.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +VQFN NoLead +0 +26 +17 +Package_DFN_QFN +VQFN-16-1EP_3x3mm_P0.5mm_EP1.45x1.45mm +VQFN, 16 Pin (http://www.ti.com/lit/ds/sbos354a/sbos354a.pdf, JEDEC MO-220 variant VEED-6), generated with kicad-footprint-generator ipc_noLead_generator.py +VQFN NoLead +0 +21 +17 +Package_DFN_QFN +VQFN-16-1EP_3x3mm_P0.5mm_EP1.45x1.45mm_ThermalVias +VQFN, 16 Pin (http://www.ti.com/lit/ds/sbos354a/sbos354a.pdf, JEDEC MO-220 variant VEED-6), generated with kicad-footprint-generator ipc_noLead_generator.py +VQFN NoLead +0 +26 +17 +Package_DFN_QFN +VQFN-16-1EP_3x3mm_P0.5mm_EP1.68x1.68mm +VQFN, 16 Pin (http://www.ti.com/lit/ds/symlink/tlv62095.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +VQFN NoLead +0 +21 +17 +Package_DFN_QFN +VQFN-16-1EP_3x3mm_P0.5mm_EP1.68x1.68mm_ThermalVias +VQFN, 16 Pin (http://www.ti.com/lit/ds/symlink/tlv62095.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +VQFN NoLead +0 +26 +17 +Package_DFN_QFN +VQFN-20-1EP_3x3mm_P0.4mm_EP1.7x1.7mm +VQFN, 20 Pin (http://ww1.microchip.com/downloads/en/DeviceDoc/20%20Lead%20VQFN%203x3x0_9mm_1_7EP%20U2B%20C04-21496a.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +VQFN NoLead +0 +25 +21 +Package_DFN_QFN +VQFN-20-1EP_3x3mm_P0.4mm_EP1.7x1.7mm_ThermalVias +VQFN, 20 Pin (http://ww1.microchip.com/downloads/en/DeviceDoc/20%20Lead%20VQFN%203x3x0_9mm_1_7EP%20U2B%20C04-21496a.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +VQFN NoLead +0 +30 +21 +Package_DFN_QFN +VQFN-20-1EP_3x3mm_P0.45mm_EP1.55x1.55mm +VQFN, 20 Pin (http://ww1.microchip.com/downloads/en/DeviceDoc/doc8246.pdf#page=264), generated with kicad-footprint-generator ipc_noLead_generator.py +VQFN NoLead +0 +25 +21 +Package_DFN_QFN +VQFN-20-1EP_3x3mm_P0.45mm_EP1.55x1.55mm_ThermalVias +VQFN, 20 Pin (http://ww1.microchip.com/downloads/en/DeviceDoc/doc8246.pdf#page=264), generated with kicad-footprint-generator ipc_noLead_generator.py +VQFN NoLead +0 +30 +21 +Package_DFN_QFN +VQFN-24-1EP_4x4mm_P0.5mm_EP2.45x2.45mm +VQFN, 24 Pin (http://www.ti.com/lit/ds/symlink/msp430f1101a.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +VQFN NoLead +0 +34 +25 +Package_DFN_QFN +VQFN-24-1EP_4x4mm_P0.5mm_EP2.45x2.45mm_ThermalVias +VQFN, 24 Pin (http://www.ti.com/lit/ds/symlink/msp430f1101a.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +VQFN NoLead +0 +39 +25 +Package_DFN_QFN +VQFN-28-1EP_4x4mm_P0.45mm_EP2.4x2.4mm +VQFN, 28 Pin (http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-9505-AT42-QTouch-BSW-AT42QT1060_Datasheet.pdf#page=28), generated with kicad-footprint-generator ipc_noLead_generator.py +VQFN NoLead +0 +33 +29 +Package_DFN_QFN +VQFN-28-1EP_4x4mm_P0.45mm_EP2.4x2.4mm_ThermalVias +VQFN, 28 Pin (http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-9505-AT42-QTouch-BSW-AT42QT1060_Datasheet.pdf#page=28), generated with kicad-footprint-generator ipc_noLead_generator.py +VQFN NoLead +0 +43 +29 +Package_DFN_QFN +VQFN-28-1EP_4x5mm_P0.5mm_EP2.55x3.55mm +VQFN, 28 Pin (http://www.ti.com/lit/ds/symlink/lm5175.pdf#page=40), generated with kicad-footprint-generator ipc_noLead_generator.py +VQFN NoLead +0 +35 +29 +Package_DFN_QFN +VQFN-28-1EP_4x5mm_P0.5mm_EP2.55x3.55mm_ThermalVias +VQFN, 28 Pin (http://www.ti.com/lit/ds/symlink/lm5175.pdf#page=40), generated with kicad-footprint-generator ipc_noLead_generator.py +VQFN NoLead +0 +48 +29 +Package_DFN_QFN +VQFN-32-1EP_5x5mm_P0.5mm_EP3.1x3.1mm +VQFN, 32 Pin (http://ww1.microchip.com/downloads/en/devicedoc/atmel-9520-at42-qtouch-bsw-at42qt1110_datasheet.pdf#page=42), generated with kicad-footprint-generator ipc_noLead_generator.py +VQFN NoLead +0 +37 +33 +Package_DFN_QFN +VQFN-32-1EP_5x5mm_P0.5mm_EP3.1x3.1mm_ThermalVias +VQFN, 32 Pin (http://ww1.microchip.com/downloads/en/devicedoc/atmel-9520-at42-qtouch-bsw-at42qt1110_datasheet.pdf#page=42), generated with kicad-footprint-generator ipc_noLead_generator.py +VQFN NoLead +0 +47 +33 +Package_DFN_QFN +VQFN-32-1EP_5x5mm_P0.5mm_EP3.5x3.5mm +VQFN, 32 Pin (https://www.ftdichip.com/Support/Documents/DataSheets/ICs/DS_FT4222H.pdf#page=40), generated with kicad-footprint-generator ipc_noLead_generator.py +VQFN NoLead +0 +37 +33 +Package_DFN_QFN +VQFN-32-1EP_5x5mm_P0.5mm_EP3.5x3.5mm_ThermalVias +VQFN, 32 Pin (https://www.ftdichip.com/Support/Documents/DataSheets/ICs/DS_FT4222H.pdf#page=40), generated with kicad-footprint-generator ipc_noLead_generator.py +VQFN NoLead +0 +47 +33 +Package_DFN_QFN +VQFN-46-1EP_5x6mm_P0.4mm_EP2.8x3.8mm +VQFN, 46 Pin (http://www.ti.com/lit/ds/symlink/lp5036.pdf#page=59), generated with kicad-footprint-generator ipc_noLead_generator.py +VQFN NoLead +0 +53 +47 +Package_DFN_QFN +VQFN-46-1EP_5x6mm_P0.4mm_EP2.8x3.8mm_ThermalVias +VQFN, 46 Pin (http://www.ti.com/lit/ds/symlink/lp5036.pdf#page=59), generated with kicad-footprint-generator ipc_noLead_generator.py +VQFN NoLead +0 +66 +47 +Package_DFN_QFN +VQFN-48-1EP_7x7mm_P0.5mm_EP5.15x5.15mm +VQFN, 48 Pin (http://www.ti.com/lit/ds/symlink/cc1312r.pdf#page=48), generated with kicad-footprint-generator ipc_noLead_generator.py +VQFN NoLead +0 +53 +49 +Package_DFN_QFN +VQFN-48-1EP_7x7mm_P0.5mm_EP5.15x5.15mm_ThermalVias +VQFN, 48 Pin (http://www.ti.com/lit/ds/symlink/cc1312r.pdf#page=48), generated with kicad-footprint-generator ipc_noLead_generator.py +VQFN NoLead +0 +79 +49 +Package_DFN_QFN +WDFN-8-1EP_2x2.2mm_P0.5mm_EP0.80x0.54 +https://www.onsemi.com/pub/Collateral/511BN.PDF +WDFN-8 1EP 2.2X2.0 0.5P +0 +9 +9 +Package_DFN_QFN +WDFN-8-1EP_3x2mm_P0.5mm_EP1.3x1.4mm +WDFN, 8 Pin (http://ww1.microchip.com/downloads/en/DeviceDoc/8L_TDFN_2x3_MNY_C04-0129E-MNY.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +WDFN NoLead +0 +13 +9 +Package_DFN_QFN +WDFN-8-1EP_4x3mm_P0.65mm_EP2.4x1.8mm +WDFN, 8 Pin (https://www.onsemi.com/pub/Collateral/509AF.PDF), generated with kicad-footprint-generator ipc_noLead_generator.py +WDFN NoLead +0 +13 +9 +Package_DFN_QFN +WDFN-8-1EP_4x3mm_P0.65mm_EP2.4x1.8mm_ThermalVias +WDFN, 8 Pin (https://www.onsemi.com/pub/Collateral/509AF.PDF), generated with kicad-footprint-generator ipc_noLead_generator.py +WDFN NoLead +0 +20 +9 +Package_DFN_QFN +WDFN-8_2x2mm_P0.5mm +DFN8 2x2, 0.5P; No exposed pad (http://www.onsemi.com/pub/Collateral/NCP4308-D.PDF) +DFN 0.5 +0 +8 +8 +Package_DFN_QFN +WDFN-12-1EP_3x3mm_P0.45mm_EP1.7x2.5mm +WDFN, 12 Pin (https://www.diodes.com/assets/Datasheets/PAM2306.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +WDFN NoLead +0 +17 +13 +Package_DFN_QFN +WQFN-14-1EP_2.5x2.5mm_P0.5mm_EP1.45x1.45mm +WQFN, 14 Pin (https://www.onsemi.com/pub/Collateral/FUSB302B-D.PDF#page=32), generated with kicad-footprint-generator ipc_noLead_generator.py +WQFN NoLead +0 +19 +15 +Package_DFN_QFN +WQFN-14-1EP_2.5x2.5mm_P0.5mm_EP1.45x1.45mm_ThermalVias +WQFN, 14 Pin (https://www.onsemi.com/pub/Collateral/FUSB302B-D.PDF#page=32), generated with kicad-footprint-generator ipc_noLead_generator.py +WQFN NoLead +0 +24 +15 +Package_DFN_QFN +WQFN-16-1EP_3x3mm_P0.5mm_EP1.6x1.6mm +WQFN, 16 Pin (https://www.ti.com/lit/ds/symlink/tpa6132a2.pdf#page=24), generated with kicad-footprint-generator ipc_noLead_generator.py +WQFN NoLead +0 +21 +17 +Package_DFN_QFN +WQFN-16-1EP_3x3mm_P0.5mm_EP1.6x1.6mm_ThermalVias +WQFN, 16 Pin (https://www.ti.com/lit/ds/symlink/tpa6132a2.pdf#page=24), generated with kicad-footprint-generator ipc_noLead_generator.py +WQFN NoLead +0 +26 +17 +Package_DFN_QFN +WQFN-16-1EP_3x3mm_P0.5mm_EP1.75x1.75mm +WQFN, 16 Pin (https://www.onsemi.com/pub/Collateral/FUSB307B-D.PDF#page=56), generated with kicad-footprint-generator ipc_noLead_generator.py +WQFN NoLead +0 +21 +17 +Package_DFN_QFN +WQFN-16-1EP_3x3mm_P0.5mm_EP1.75x1.75mm_ThermalVias +WQFN, 16 Pin (https://www.onsemi.com/pub/Collateral/FUSB307B-D.PDF#page=56), generated with kicad-footprint-generator ipc_noLead_generator.py +WQFN NoLead +0 +26 +17 +Package_DFN_QFN +WQFN-16-1EP_4x4mm_P0.5mm_EP2.6x2.6mm +WQFN, 16 Pin (http://www.ti.com/lit/ds/symlink/ldc1312.pdf#page=59), generated with kicad-footprint-generator ipc_noLead_generator.py +WQFN NoLead +0 +21 +17 +Package_DFN_QFN +WQFN-16-1EP_4x4mm_P0.5mm_EP2.6x2.6mm_ThermalVias +WQFN, 16 Pin (http://www.ti.com/lit/ds/symlink/ldc1312.pdf#page=59), generated with kicad-footprint-generator ipc_noLead_generator.py +WQFN NoLead +0 +31 +17 +Package_DFN_QFN +WQFN-20-1EP_2.5x4.5mm_P0.5mm_EP1x2.9mm +http://www.onsemi.com/pub/Collateral/510CD.PDF +WQFN-20 4.5mm 2.5mm 0.5mm +0 +24 +21 +Package_DFN_QFN +WQFN-24-1EP_4x4mm_P0.5mm_EP2.6x2.6mm +WQFN, 24 Pin (http://www.ti.com/lit/ds/symlink/lm26480.pdf#page=39), generated with kicad-footprint-generator ipc_noLead_generator.py +WQFN NoLead +0 +29 +25 +Package_DFN_QFN +WQFN-24-1EP_4x4mm_P0.5mm_EP2.6x2.6mm_ThermalVias +WQFN, 24 Pin (http://www.ti.com/lit/ds/symlink/lm26480.pdf#page=39), generated with kicad-footprint-generator ipc_noLead_generator.py +WQFN NoLead +0 +39 +25 +Package_DFN_QFN +WQFN-24-1EP_4x4mm_P0.5mm_EP2.45x2.45mm +WQFN, 24 Pin (http://www.ti.com/lit/ds/symlink/ts3a27518e.pdf#page=33), generated with kicad-footprint-generator ipc_noLead_generator.py +WQFN NoLead +0 +29 +25 +Package_DFN_QFN +WQFN-24-1EP_4x4mm_P0.5mm_EP2.45x2.45mm_ThermalVias +WQFN, 24 Pin (http://www.ti.com/lit/ds/symlink/ts3a27518e.pdf#page=33), generated with kicad-footprint-generator ipc_noLead_generator.py +WQFN NoLead +0 +39 +25 +Package_DFN_QFN +WQFN-32-1EP_5x5mm_P0.5mm_EP3.1x3.1mm +QFN, 32-Leads, Body 5x5x0.8mm, Pitch 0.5mm, Thermal Pad 3.1x3.1mm; (see Texas Instruments LM25119 http://www.ti.com/lit/ds/symlink/lm25119.pdf) +WQFN 0.5 +0 +37 +33 +Package_DFN_QFN +WQFN-42-1EP_3.5x9mm_P0.5mm_EP2.05x7.55mm +WQFN, 42 Pin (http://www.ti.com/lit/ds/symlink/ts3l501e.pdf#page=23), generated with kicad-footprint-generator ipc_noLead_generator.py +WQFN NoLead +0 +57 +43 +Package_DFN_QFN +WQFN-42-1EP_3.5x9mm_P0.5mm_EP2.05x7.55mm_ThermalVias +WQFN, 42 Pin (http://www.ti.com/lit/ds/symlink/ts3l501e.pdf#page=23), generated with kicad-footprint-generator ipc_noLead_generator.py +WQFN NoLead +0 +82 +43 +Package_DIP +DIP-4_W7.62mm +4-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils) +THT DIP DIL PDIP 2.54mm 7.62mm 300mil +0 +4 +4 +Package_DIP +DIP-4_W7.62mm_LongPads +4-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), LongPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil LongPads +0 +4 +4 +Package_DIP +DIP-4_W7.62mm_SMDSocket_SmallPads +4-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), SMDSocket, SmallPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil SMDSocket SmallPads +0 +4 +4 +Package_DIP +DIP-4_W7.62mm_Socket +4-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), Socket +THT DIP DIL PDIP 2.54mm 7.62mm 300mil Socket +0 +4 +4 +Package_DIP +DIP-4_W7.62mm_Socket_LongPads +4-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), Socket, LongPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil Socket LongPads +0 +4 +4 +Package_DIP +DIP-4_W8.89mm_SMDSocket_LongPads +4-lead though-hole mounted DIP package, row spacing 8.89 mm (350 mils), SMDSocket, LongPads +THT DIP DIL PDIP 2.54mm 8.89mm 350mil SMDSocket LongPads +0 +4 +4 +Package_DIP +DIP-4_W10.16mm +4-lead though-hole mounted DIP package, row spacing 10.16 mm (400 mils) +THT DIP DIL PDIP 2.54mm 10.16mm 400mil +0 +4 +4 +Package_DIP +DIP-4_W10.16mm_LongPads +4-lead though-hole mounted DIP package, row spacing 10.16 mm (400 mils), LongPads +THT DIP DIL PDIP 2.54mm 10.16mm 400mil LongPads +0 +4 +4 +Package_DIP +DIP-5-6_W7.62mm +5-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils) +THT DIP DIL PDIP 2.54mm 7.62mm 300mil +0 +5 +5 +Package_DIP +DIP-5-6_W7.62mm_LongPads +5-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), LongPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil LongPads +0 +5 +5 +Package_DIP +DIP-5-6_W7.62mm_SMDSocket_SmallPads +5-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), SMDSocket, SmallPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil SMDSocket SmallPads +0 +5 +5 +Package_DIP +DIP-5-6_W7.62mm_Socket +5-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), Socket +THT DIP DIL PDIP 2.54mm 7.62mm 300mil Socket +0 +5 +5 +Package_DIP +DIP-5-6_W7.62mm_Socket_LongPads +5-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), Socket, LongPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil Socket LongPads +0 +5 +5 +Package_DIP +DIP-5-6_W8.89mm_SMDSocket_LongPads +5-lead though-hole mounted DIP package, row spacing 8.89 mm (350 mils), SMDSocket, LongPads +THT DIP DIL PDIP 2.54mm 8.89mm 350mil SMDSocket LongPads +0 +5 +5 +Package_DIP +DIP-5-6_W10.16mm +5-lead though-hole mounted DIP package, row spacing 10.16 mm (400 mils) +THT DIP DIL PDIP 2.54mm 10.16mm 400mil +0 +5 +5 +Package_DIP +DIP-5-6_W10.16mm_LongPads +5-lead though-hole mounted DIP package, row spacing 10.16 mm (400 mils), LongPads +THT DIP DIL PDIP 2.54mm 10.16mm 400mil LongPads +0 +5 +5 +Package_DIP +DIP-6_W7.62mm +6-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils) +THT DIP DIL PDIP 2.54mm 7.62mm 300mil +0 +6 +6 +Package_DIP +DIP-6_W7.62mm_LongPads +6-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), LongPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil LongPads +0 +6 +6 +Package_DIP +DIP-6_W7.62mm_SMDSocket_SmallPads +6-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), SMDSocket, SmallPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil SMDSocket SmallPads +0 +6 +6 +Package_DIP +DIP-6_W7.62mm_Socket +6-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), Socket +THT DIP DIL PDIP 2.54mm 7.62mm 300mil Socket +0 +6 +6 +Package_DIP +DIP-6_W7.62mm_Socket_LongPads +6-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), Socket, LongPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil Socket LongPads +0 +6 +6 +Package_DIP +DIP-6_W8.89mm_SMDSocket_LongPads +6-lead though-hole mounted DIP package, row spacing 8.89 mm (350 mils), SMDSocket, LongPads +THT DIP DIL PDIP 2.54mm 8.89mm 350mil SMDSocket LongPads +0 +6 +6 +Package_DIP +DIP-6_W10.16mm +6-lead though-hole mounted DIP package, row spacing 10.16 mm (400 mils) +THT DIP DIL PDIP 2.54mm 10.16mm 400mil +0 +6 +6 +Package_DIP +DIP-6_W10.16mm_LongPads +6-lead though-hole mounted DIP package, row spacing 10.16 mm (400 mils), LongPads +THT DIP DIL PDIP 2.54mm 10.16mm 400mil LongPads +0 +6 +6 +Package_DIP +DIP-8-16_W7.62mm +16-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils) +THT DIP DIL PDIP 2.54mm 7.62mm 300mil +0 +8 +8 +Package_DIP +DIP-8-16_W7.62mm_Socket +16-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), Socket +THT DIP DIL PDIP 2.54mm 7.62mm 300mil Socket +0 +8 +8 +Package_DIP +DIP-8-16_W7.62mm_Socket_LongPads +16-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), Socket, LongPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil Socket LongPads +0 +8 +8 +Package_DIP +DIP-8-N6_W7.62mm +8-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), missing pin 6 +THT DIP DIL PDIP 2.54mm 7.62mm 300mil +0 +7 +7 +Package_DIP +DIP-8-N7_W7.62mm +8-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), missing pin 7 +THT DIP DIL PDIP 2.54mm 7.62mm 300mil +0 +7 +7 +Package_DIP +DIP-8_W7.62mm +8-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils) +THT DIP DIL PDIP 2.54mm 7.62mm 300mil +0 +8 +8 +Package_DIP +DIP-8_W7.62mm_LongPads +8-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), LongPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil LongPads +0 +8 +8 +Package_DIP +DIP-8_W7.62mm_SMDSocket_SmallPads +8-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), SMDSocket, SmallPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil SMDSocket SmallPads +0 +8 +8 +Package_DIP +DIP-8_W7.62mm_Socket +8-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), Socket +THT DIP DIL PDIP 2.54mm 7.62mm 300mil Socket +0 +8 +8 +Package_DIP +DIP-8_W7.62mm_Socket_LongPads +8-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), Socket, LongPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil Socket LongPads +0 +8 +8 +Package_DIP +DIP-8_W8.89mm_SMDSocket_LongPads +8-lead though-hole mounted DIP package, row spacing 8.89 mm (350 mils), SMDSocket, LongPads +THT DIP DIL PDIP 2.54mm 8.89mm 350mil SMDSocket LongPads +0 +8 +8 +Package_DIP +DIP-8_W10.16mm +8-lead though-hole mounted DIP package, row spacing 10.16 mm (400 mils) +THT DIP DIL PDIP 2.54mm 10.16mm 400mil +0 +8 +8 +Package_DIP +DIP-8_W10.16mm_LongPads +8-lead though-hole mounted DIP package, row spacing 10.16 mm (400 mils), LongPads +THT DIP DIL PDIP 2.54mm 10.16mm 400mil LongPads +0 +8 +8 +Package_DIP +DIP-10_W7.62mm +10-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils) +THT DIP DIL PDIP 2.54mm 7.62mm 300mil +0 +10 +10 +Package_DIP +DIP-10_W7.62mm_LongPads +10-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), LongPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil LongPads +0 +10 +10 +Package_DIP +DIP-10_W7.62mm_SMDSocket_SmallPads +10-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), SMDSocket, SmallPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil SMDSocket SmallPads +0 +10 +10 +Package_DIP +DIP-10_W7.62mm_Socket +10-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), Socket +THT DIP DIL PDIP 2.54mm 7.62mm 300mil Socket +0 +10 +10 +Package_DIP +DIP-10_W7.62mm_Socket_LongPads +10-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), Socket, LongPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil Socket LongPads +0 +10 +10 +Package_DIP +DIP-10_W8.89mm_SMDSocket_LongPads +10-lead though-hole mounted DIP package, row spacing 8.89 mm (350 mils), SMDSocket, LongPads +THT DIP DIL PDIP 2.54mm 8.89mm 350mil SMDSocket LongPads +0 +10 +10 +Package_DIP +DIP-10_W10.16mm +10-lead though-hole mounted DIP package, row spacing 10.16 mm (400 mils) +THT DIP DIL PDIP 2.54mm 10.16mm 400mil +0 +10 +10 +Package_DIP +DIP-10_W10.16mm_LongPads +10-lead though-hole mounted DIP package, row spacing 10.16 mm (400 mils), LongPads +THT DIP DIL PDIP 2.54mm 10.16mm 400mil LongPads +0 +10 +10 +Package_DIP +DIP-12_W7.62mm +12-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils) +THT DIP DIL PDIP 2.54mm 7.62mm 300mil +0 +12 +12 +Package_DIP +DIP-12_W7.62mm_LongPads +12-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), LongPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil LongPads +0 +12 +12 +Package_DIP +DIP-12_W7.62mm_SMDSocket_SmallPads +12-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), SMDSocket, SmallPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil SMDSocket SmallPads +0 +12 +12 +Package_DIP +DIP-12_W7.62mm_Socket +12-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), Socket +THT DIP DIL PDIP 2.54mm 7.62mm 300mil Socket +0 +12 +12 +Package_DIP +DIP-12_W7.62mm_Socket_LongPads +12-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), Socket, LongPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil Socket LongPads +0 +12 +12 +Package_DIP +DIP-12_W8.89mm_SMDSocket_LongPads +12-lead though-hole mounted DIP package, row spacing 8.89 mm (350 mils), SMDSocket, LongPads +THT DIP DIL PDIP 2.54mm 8.89mm 350mil SMDSocket LongPads +0 +12 +12 +Package_DIP +DIP-12_W10.16mm +12-lead though-hole mounted DIP package, row spacing 10.16 mm (400 mils) +THT DIP DIL PDIP 2.54mm 10.16mm 400mil +0 +12 +12 +Package_DIP +DIP-12_W10.16mm_LongPads +12-lead though-hole mounted DIP package, row spacing 10.16 mm (400 mils), LongPads +THT DIP DIL PDIP 2.54mm 10.16mm 400mil LongPads +0 +12 +12 +Package_DIP +DIP-14_W7.62mm +14-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils) +THT DIP DIL PDIP 2.54mm 7.62mm 300mil +0 +14 +14 +Package_DIP +DIP-14_W7.62mm_LongPads +14-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), LongPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil LongPads +0 +14 +14 +Package_DIP +DIP-14_W7.62mm_SMDSocket_SmallPads +14-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), SMDSocket, SmallPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil SMDSocket SmallPads +0 +14 +14 +Package_DIP +DIP-14_W7.62mm_Socket +14-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), Socket +THT DIP DIL PDIP 2.54mm 7.62mm 300mil Socket +0 +14 +14 +Package_DIP +DIP-14_W7.62mm_Socket_LongPads +14-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), Socket, LongPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil Socket LongPads +0 +14 +14 +Package_DIP +DIP-14_W8.89mm_SMDSocket_LongPads +14-lead though-hole mounted DIP package, row spacing 8.89 mm (350 mils), SMDSocket, LongPads +THT DIP DIL PDIP 2.54mm 8.89mm 350mil SMDSocket LongPads +0 +14 +14 +Package_DIP +DIP-14_W10.16mm +14-lead though-hole mounted DIP package, row spacing 10.16 mm (400 mils) +THT DIP DIL PDIP 2.54mm 10.16mm 400mil +0 +14 +14 +Package_DIP +DIP-14_W10.16mm_LongPads +14-lead though-hole mounted DIP package, row spacing 10.16 mm (400 mils), LongPads +THT DIP DIL PDIP 2.54mm 10.16mm 400mil LongPads +0 +14 +14 +Package_DIP +DIP-16_W7.62mm +16-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils) +THT DIP DIL PDIP 2.54mm 7.62mm 300mil +0 +16 +16 +Package_DIP +DIP-16_W7.62mm_LongPads +16-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), LongPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil LongPads +0 +16 +16 +Package_DIP +DIP-16_W7.62mm_SMDSocket_SmallPads +16-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), SMDSocket, SmallPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil SMDSocket SmallPads +0 +16 +16 +Package_DIP +DIP-16_W7.62mm_Socket +16-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), Socket +THT DIP DIL PDIP 2.54mm 7.62mm 300mil Socket +0 +16 +16 +Package_DIP +DIP-16_W7.62mm_Socket_LongPads +16-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), Socket, LongPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil Socket LongPads +0 +16 +16 +Package_DIP +DIP-16_W8.89mm_SMDSocket_LongPads +16-lead though-hole mounted DIP package, row spacing 8.89 mm (350 mils), SMDSocket, LongPads +THT DIP DIL PDIP 2.54mm 8.89mm 350mil SMDSocket LongPads +0 +16 +16 +Package_DIP +DIP-16_W10.16mm +16-lead though-hole mounted DIP package, row spacing 10.16 mm (400 mils) +THT DIP DIL PDIP 2.54mm 10.16mm 400mil +0 +16 +16 +Package_DIP +DIP-16_W10.16mm_LongPads +16-lead though-hole mounted DIP package, row spacing 10.16 mm (400 mils), LongPads +THT DIP DIL PDIP 2.54mm 10.16mm 400mil LongPads +0 +16 +16 +Package_DIP +DIP-18_W7.62mm +18-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils) +THT DIP DIL PDIP 2.54mm 7.62mm 300mil +0 +18 +18 +Package_DIP +DIP-18_W7.62mm_LongPads +18-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), LongPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil LongPads +0 +18 +18 +Package_DIP +DIP-18_W7.62mm_SMDSocket_SmallPads +18-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), SMDSocket, SmallPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil SMDSocket SmallPads +0 +18 +18 +Package_DIP +DIP-18_W7.62mm_Socket +18-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), Socket +THT DIP DIL PDIP 2.54mm 7.62mm 300mil Socket +0 +18 +18 +Package_DIP +DIP-18_W7.62mm_Socket_LongPads +18-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), Socket, LongPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil Socket LongPads +0 +18 +18 +Package_DIP +DIP-18_W8.89mm_SMDSocket_LongPads +18-lead though-hole mounted DIP package, row spacing 8.89 mm (350 mils), SMDSocket, LongPads +THT DIP DIL PDIP 2.54mm 8.89mm 350mil SMDSocket LongPads +0 +18 +18 +Package_DIP +DIP-20_W7.62mm +20-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils) +THT DIP DIL PDIP 2.54mm 7.62mm 300mil +0 +20 +20 +Package_DIP +DIP-20_W7.62mm_LongPads +20-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), LongPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil LongPads +0 +20 +20 +Package_DIP +DIP-20_W7.62mm_SMDSocket_SmallPads +20-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), SMDSocket, SmallPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil SMDSocket SmallPads +0 +20 +20 +Package_DIP +DIP-20_W7.62mm_Socket +20-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), Socket +THT DIP DIL PDIP 2.54mm 7.62mm 300mil Socket +0 +20 +20 +Package_DIP +DIP-20_W7.62mm_Socket_LongPads +20-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), Socket, LongPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil Socket LongPads +0 +20 +20 +Package_DIP +DIP-20_W8.89mm_SMDSocket_LongPads +20-lead though-hole mounted DIP package, row spacing 8.89 mm (350 mils), SMDSocket, LongPads +THT DIP DIL PDIP 2.54mm 8.89mm 350mil SMDSocket LongPads +0 +20 +20 +Package_DIP +DIP-22_W7.62mm +22-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils) +THT DIP DIL PDIP 2.54mm 7.62mm 300mil +0 +22 +22 +Package_DIP +DIP-22_W7.62mm_LongPads +22-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), LongPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil LongPads +0 +22 +22 +Package_DIP +DIP-22_W7.62mm_SMDSocket_SmallPads +22-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), SMDSocket, SmallPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil SMDSocket SmallPads +0 +22 +22 +Package_DIP +DIP-22_W7.62mm_Socket +22-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), Socket +THT DIP DIL PDIP 2.54mm 7.62mm 300mil Socket +0 +22 +22 +Package_DIP +DIP-22_W7.62mm_Socket_LongPads +22-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), Socket, LongPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil Socket LongPads +0 +22 +22 +Package_DIP +DIP-22_W8.89mm_SMDSocket_LongPads +22-lead though-hole mounted DIP package, row spacing 8.89 mm (350 mils), SMDSocket, LongPads +THT DIP DIL PDIP 2.54mm 8.89mm 350mil SMDSocket LongPads +0 +22 +22 +Package_DIP +DIP-22_W10.16mm +22-lead though-hole mounted DIP package, row spacing 10.16 mm (400 mils) +THT DIP DIL PDIP 2.54mm 10.16mm 400mil +0 +22 +22 +Package_DIP +DIP-22_W10.16mm_LongPads +22-lead though-hole mounted DIP package, row spacing 10.16 mm (400 mils), LongPads +THT DIP DIL PDIP 2.54mm 10.16mm 400mil LongPads +0 +22 +22 +Package_DIP +DIP-22_W10.16mm_SMDSocket_SmallPads +22-lead though-hole mounted DIP package, row spacing 10.16 mm (400 mils), SMDSocket, SmallPads +THT DIP DIL PDIP 2.54mm 10.16mm 400mil SMDSocket SmallPads +0 +22 +22 +Package_DIP +DIP-22_W10.16mm_Socket +22-lead though-hole mounted DIP package, row spacing 10.16 mm (400 mils), Socket +THT DIP DIL PDIP 2.54mm 10.16mm 400mil Socket +0 +22 +22 +Package_DIP +DIP-22_W10.16mm_Socket_LongPads +22-lead though-hole mounted DIP package, row spacing 10.16 mm (400 mils), Socket, LongPads +THT DIP DIL PDIP 2.54mm 10.16mm 400mil Socket LongPads +0 +22 +22 +Package_DIP +DIP-22_W11.43mm_SMDSocket_LongPads +22-lead though-hole mounted DIP package, row spacing 11.43 mm (450 mils), SMDSocket, LongPads +THT DIP DIL PDIP 2.54mm 11.43mm 450mil SMDSocket LongPads +0 +22 +22 +Package_DIP +DIP-24_W7.62mm +24-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils) +THT DIP DIL PDIP 2.54mm 7.62mm 300mil +0 +24 +24 +Package_DIP +DIP-24_W7.62mm_LongPads +24-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), LongPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil LongPads +0 +24 +24 +Package_DIP +DIP-24_W7.62mm_SMDSocket_SmallPads +24-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), SMDSocket, SmallPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil SMDSocket SmallPads +0 +24 +24 +Package_DIP +DIP-24_W7.62mm_Socket +24-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), Socket +THT DIP DIL PDIP 2.54mm 7.62mm 300mil Socket +0 +24 +24 +Package_DIP +DIP-24_W7.62mm_Socket_LongPads +24-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), Socket, LongPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil Socket LongPads +0 +24 +24 +Package_DIP +DIP-24_W8.89mm_SMDSocket_LongPads +24-lead though-hole mounted DIP package, row spacing 8.89 mm (350 mils), SMDSocket, LongPads +THT DIP DIL PDIP 2.54mm 8.89mm 350mil SMDSocket LongPads +0 +24 +24 +Package_DIP +DIP-24_W10.16mm +24-lead though-hole mounted DIP package, row spacing 10.16 mm (400 mils) +THT DIP DIL PDIP 2.54mm 10.16mm 400mil +0 +24 +24 +Package_DIP +DIP-24_W10.16mm_LongPads +24-lead though-hole mounted DIP package, row spacing 10.16 mm (400 mils), LongPads +THT DIP DIL PDIP 2.54mm 10.16mm 400mil LongPads +0 +24 +24 +Package_DIP +DIP-24_W10.16mm_SMDSocket_SmallPads +24-lead though-hole mounted DIP package, row spacing 10.16 mm (400 mils), SMDSocket, SmallPads +THT DIP DIL PDIP 2.54mm 10.16mm 400mil SMDSocket SmallPads +0 +24 +24 +Package_DIP +DIP-24_W10.16mm_Socket +24-lead though-hole mounted DIP package, row spacing 10.16 mm (400 mils), Socket +THT DIP DIL PDIP 2.54mm 10.16mm 400mil Socket +0 +24 +24 +Package_DIP +DIP-24_W10.16mm_Socket_LongPads +24-lead though-hole mounted DIP package, row spacing 10.16 mm (400 mils), Socket, LongPads +THT DIP DIL PDIP 2.54mm 10.16mm 400mil Socket LongPads +0 +24 +24 +Package_DIP +DIP-24_W11.43mm_SMDSocket_LongPads +24-lead though-hole mounted DIP package, row spacing 11.43 mm (450 mils), SMDSocket, LongPads +THT DIP DIL PDIP 2.54mm 11.43mm 450mil SMDSocket LongPads +0 +24 +24 +Package_DIP +DIP-24_W15.24mm +24-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils) +THT DIP DIL PDIP 2.54mm 15.24mm 600mil +0 +24 +24 +Package_DIP +DIP-24_W15.24mm_LongPads +24-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils), LongPads +THT DIP DIL PDIP 2.54mm 15.24mm 600mil LongPads +0 +24 +24 +Package_DIP +DIP-24_W15.24mm_SMDSocket_SmallPads +24-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils), SMDSocket, SmallPads +THT DIP DIL PDIP 2.54mm 15.24mm 600mil SMDSocket SmallPads +0 +24 +24 +Package_DIP +DIP-24_W15.24mm_Socket +24-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils), Socket +THT DIP DIL PDIP 2.54mm 15.24mm 600mil Socket +0 +24 +24 +Package_DIP +DIP-24_W15.24mm_Socket_LongPads +24-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils), Socket, LongPads +THT DIP DIL PDIP 2.54mm 15.24mm 600mil Socket LongPads +0 +24 +24 +Package_DIP +DIP-24_W16.51mm_SMDSocket_LongPads +24-lead though-hole mounted DIP package, row spacing 16.51 mm (650 mils), SMDSocket, LongPads +THT DIP DIL PDIP 2.54mm 16.51mm 650mil SMDSocket LongPads +0 +24 +24 +Package_DIP +DIP-28_W7.62mm +28-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils) +THT DIP DIL PDIP 2.54mm 7.62mm 300mil +0 +28 +28 +Package_DIP +DIP-28_W7.62mm_LongPads +28-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), LongPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil LongPads +0 +28 +28 +Package_DIP +DIP-28_W7.62mm_SMDSocket_SmallPads +28-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), SMDSocket, SmallPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil SMDSocket SmallPads +0 +28 +28 +Package_DIP +DIP-28_W7.62mm_Socket +28-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), Socket +THT DIP DIL PDIP 2.54mm 7.62mm 300mil Socket +0 +28 +28 +Package_DIP +DIP-28_W7.62mm_Socket_LongPads +28-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), Socket, LongPads +THT DIP DIL PDIP 2.54mm 7.62mm 300mil Socket LongPads +0 +28 +28 +Package_DIP +DIP-28_W8.89mm_SMDSocket_LongPads +28-lead though-hole mounted DIP package, row spacing 8.89 mm (350 mils), SMDSocket, LongPads +THT DIP DIL PDIP 2.54mm 8.89mm 350mil SMDSocket LongPads +0 +28 +28 +Package_DIP +DIP-28_W15.24mm +28-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils) +THT DIP DIL PDIP 2.54mm 15.24mm 600mil +0 +28 +28 +Package_DIP +DIP-28_W15.24mm_LongPads +28-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils), LongPads +THT DIP DIL PDIP 2.54mm 15.24mm 600mil LongPads +0 +28 +28 +Package_DIP +DIP-28_W15.24mm_SMDSocket_SmallPads +28-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils), SMDSocket, SmallPads +THT DIP DIL PDIP 2.54mm 15.24mm 600mil SMDSocket SmallPads +0 +28 +28 +Package_DIP +DIP-28_W15.24mm_Socket +28-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils), Socket +THT DIP DIL PDIP 2.54mm 15.24mm 600mil Socket +0 +28 +28 +Package_DIP +DIP-28_W15.24mm_Socket_LongPads +28-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils), Socket, LongPads +THT DIP DIL PDIP 2.54mm 15.24mm 600mil Socket LongPads +0 +28 +28 +Package_DIP +DIP-28_W16.51mm_SMDSocket_LongPads +28-lead though-hole mounted DIP package, row spacing 16.51 mm (650 mils), SMDSocket, LongPads +THT DIP DIL PDIP 2.54mm 16.51mm 650mil SMDSocket LongPads +0 +28 +28 +Package_DIP +DIP-32_W7.62mm +32-lead dip package, row spacing 7.62 mm (300 mils) +DIL DIP PDIP 2.54mm 7.62mm 300mil +0 +32 +32 +Package_DIP +DIP-32_W15.24mm +32-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils) +THT DIP DIL PDIP 2.54mm 15.24mm 600mil +0 +32 +32 +Package_DIP +DIP-32_W15.24mm_LongPads +32-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils), LongPads +THT DIP DIL PDIP 2.54mm 15.24mm 600mil LongPads +0 +32 +32 +Package_DIP +DIP-32_W15.24mm_SMDSocket_SmallPads +32-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils), SMDSocket, SmallPads +THT DIP DIL PDIP 2.54mm 15.24mm 600mil SMDSocket SmallPads +0 +32 +32 +Package_DIP +DIP-32_W15.24mm_Socket +32-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils), Socket +THT DIP DIL PDIP 2.54mm 15.24mm 600mil Socket +0 +32 +32 +Package_DIP +DIP-32_W15.24mm_Socket_LongPads +32-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils), Socket, LongPads +THT DIP DIL PDIP 2.54mm 15.24mm 600mil Socket LongPads +0 +32 +32 +Package_DIP +DIP-32_W16.51mm_SMDSocket_LongPads +32-lead though-hole mounted DIP package, row spacing 16.51 mm (650 mils), SMDSocket, LongPads +THT DIP DIL PDIP 2.54mm 16.51mm 650mil SMDSocket LongPads +0 +32 +32 +Package_DIP +DIP-40_W15.24mm +40-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils) +THT DIP DIL PDIP 2.54mm 15.24mm 600mil +0 +40 +40 +Package_DIP +DIP-40_W15.24mm_LongPads +40-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils), LongPads +THT DIP DIL PDIP 2.54mm 15.24mm 600mil LongPads +0 +40 +40 +Package_DIP +DIP-40_W15.24mm_SMDSocket_SmallPads +40-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils), SMDSocket, SmallPads +THT DIP DIL PDIP 2.54mm 15.24mm 600mil SMDSocket SmallPads +0 +40 +40 +Package_DIP +DIP-40_W15.24mm_Socket +40-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils), Socket +THT DIP DIL PDIP 2.54mm 15.24mm 600mil Socket +0 +40 +40 +Package_DIP +DIP-40_W15.24mm_Socket_LongPads +40-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils), Socket, LongPads +THT DIP DIL PDIP 2.54mm 15.24mm 600mil Socket LongPads +0 +40 +40 +Package_DIP +DIP-40_W16.51mm_SMDSocket_LongPads +40-lead though-hole mounted DIP package, row spacing 16.51 mm (650 mils), SMDSocket, LongPads +THT DIP DIL PDIP 2.54mm 16.51mm 650mil SMDSocket LongPads +0 +40 +40 +Package_DIP +DIP-40_W25.4mm +40-lead though-hole mounted DIP package, row spacing 25.4 mm (1000 mils) +THT DIP DIL PDIP 2.54mm 25.4mm 1000mil +0 +40 +40 +Package_DIP +DIP-40_W25.4mm_LongPads +40-lead though-hole mounted DIP package, row spacing 25.4 mm (1000 mils), LongPads +THT DIP DIL PDIP 2.54mm 25.4mm 1000mil LongPads +0 +40 +40 +Package_DIP +DIP-40_W25.4mm_SMDSocket_SmallPads +40-lead though-hole mounted DIP package, row spacing 25.4 mm (1000 mils), SMDSocket, SmallPads +THT DIP DIL PDIP 2.54mm 25.4mm 1000mil SMDSocket SmallPads +0 +40 +40 +Package_DIP +DIP-40_W25.4mm_Socket +40-lead though-hole mounted DIP package, row spacing 25.4 mm (1000 mils), Socket +THT DIP DIL PDIP 2.54mm 25.4mm 1000mil Socket +0 +40 +40 +Package_DIP +DIP-40_W25.4mm_Socket_LongPads +40-lead though-hole mounted DIP package, row spacing 25.4 mm (1000 mils), Socket, LongPads +THT DIP DIL PDIP 2.54mm 25.4mm 1000mil Socket LongPads +0 +40 +40 +Package_DIP +DIP-40_W26.67mm_SMDSocket_LongPads +40-lead though-hole mounted DIP package, row spacing 26.67 mm (1050 mils), SMDSocket, LongPads +THT DIP DIL PDIP 2.54mm 26.669999999999998mm 1050mil SMDSocket LongPads +0 +40 +40 +Package_DIP +DIP-42_W15.24mm +42-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils) +THT DIP DIL PDIP 2.54mm 15.24mm 600mil +0 +42 +42 +Package_DIP +DIP-42_W15.24mm_LongPads +42-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils), LongPads +THT DIP DIL PDIP 2.54mm 15.24mm 600mil LongPads +0 +42 +42 +Package_DIP +DIP-42_W15.24mm_SMDSocket_SmallPads +42-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils), SMDSocket, SmallPads +THT DIP DIL PDIP 2.54mm 15.24mm 600mil SMDSocket SmallPads +0 +42 +42 +Package_DIP +DIP-42_W15.24mm_Socket +42-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils), Socket +THT DIP DIL PDIP 2.54mm 15.24mm 600mil Socket +0 +42 +42 +Package_DIP +DIP-42_W15.24mm_Socket_LongPads +42-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils), Socket, LongPads +THT DIP DIL PDIP 2.54mm 15.24mm 600mil Socket LongPads +0 +42 +42 +Package_DIP +DIP-42_W16.51mm_SMDSocket_LongPads +42-lead though-hole mounted DIP package, row spacing 16.51 mm (650 mils), SMDSocket, LongPads +THT DIP DIL PDIP 2.54mm 16.51mm 650mil SMDSocket LongPads +0 +42 +42 +Package_DIP +DIP-48_W15.24mm +48-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils) +THT DIP DIL PDIP 2.54mm 15.24mm 600mil +0 +48 +48 +Package_DIP +DIP-48_W15.24mm_LongPads +48-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils), LongPads +THT DIP DIL PDIP 2.54mm 15.24mm 600mil LongPads +0 +48 +48 +Package_DIP +DIP-48_W15.24mm_SMDSocket_SmallPads +48-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils), SMDSocket, SmallPads +THT DIP DIL PDIP 2.54mm 15.24mm 600mil SMDSocket SmallPads +0 +48 +48 +Package_DIP +DIP-48_W15.24mm_Socket +48-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils), Socket +THT DIP DIL PDIP 2.54mm 15.24mm 600mil Socket +0 +48 +48 +Package_DIP +DIP-48_W15.24mm_Socket_LongPads +48-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils), Socket, LongPads +THT DIP DIL PDIP 2.54mm 15.24mm 600mil Socket LongPads +0 +48 +48 +Package_DIP +DIP-48_W16.51mm_SMDSocket_LongPads +48-lead though-hole mounted DIP package, row spacing 16.51 mm (650 mils), SMDSocket, LongPads +THT DIP DIL PDIP 2.54mm 16.51mm 650mil SMDSocket LongPads +0 +48 +48 +Package_DIP +DIP-64_W15.24mm +64-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils) +THT DIP DIL PDIP 2.54mm 15.24mm 600mil +0 +64 +64 +Package_DIP +DIP-64_W15.24mm_LongPads +64-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils), LongPads +THT DIP DIL PDIP 2.54mm 15.24mm 600mil LongPads +0 +64 +64 +Package_DIP +DIP-64_W15.24mm_SMDSocket_SmallPads +64-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils), SMDSocket, SmallPads +THT DIP DIL PDIP 2.54mm 15.24mm 600mil SMDSocket SmallPads +0 +64 +64 +Package_DIP +DIP-64_W15.24mm_Socket +64-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils), Socket +THT DIP DIL PDIP 2.54mm 15.24mm 600mil Socket +0 +64 +64 +Package_DIP +DIP-64_W15.24mm_Socket_LongPads +64-lead though-hole mounted DIP package, row spacing 15.24 mm (600 mils), Socket, LongPads +THT DIP DIL PDIP 2.54mm 15.24mm 600mil Socket LongPads +0 +64 +64 +Package_DIP +DIP-64_W16.51mm_SMDSocket_LongPads +64-lead though-hole mounted DIP package, row spacing 16.51 mm (650 mils), SMDSocket, LongPads +THT DIP DIL PDIP 2.54mm 16.51mm 650mil SMDSocket LongPads +0 +64 +64 +Package_DIP +DIP-64_W22.86mm +64-lead though-hole mounted DIP package, row spacing 22.86 mm (900 mils) +THT DIP DIL PDIP 2.54mm 22.86mm 900mil +0 +64 +64 +Package_DIP +DIP-64_W22.86mm_LongPads +64-lead though-hole mounted DIP package, row spacing 22.86 mm (900 mils), LongPads +THT DIP DIL PDIP 2.54mm 22.86mm 900mil LongPads +0 +64 +64 +Package_DIP +DIP-64_W22.86mm_SMDSocket_SmallPads +64-lead though-hole mounted DIP package, row spacing 22.86 mm (900 mils), SMDSocket, SmallPads +THT DIP DIL PDIP 2.54mm 22.86mm 900mil SMDSocket SmallPads +0 +64 +64 +Package_DIP +DIP-64_W22.86mm_Socket +64-lead though-hole mounted DIP package, row spacing 22.86 mm (900 mils), Socket +THT DIP DIL PDIP 2.54mm 22.86mm 900mil Socket +0 +64 +64 +Package_DIP +DIP-64_W22.86mm_Socket_LongPads +64-lead though-hole mounted DIP package, row spacing 22.86 mm (900 mils), Socket, LongPads +THT DIP DIL PDIP 2.54mm 22.86mm 900mil Socket LongPads +0 +64 +64 +Package_DIP +DIP-64_W24.13mm_SMDSocket_LongPads +64-lead though-hole mounted DIP package, row spacing 24.13 mm (950 mils), SMDSocket, LongPads +THT DIP DIL PDIP 2.54mm 24.13mm 950mil SMDSocket LongPads +0 +64 +64 +Package_DIP +DIP-64_W25.4mm +64-lead though-hole mounted DIP package, row spacing 25.4 mm (1000 mils) +THT DIP DIL PDIP 2.54mm 25.4mm 1000mil +0 +64 +64 +Package_DIP +DIP-64_W25.4mm_LongPads +64-lead though-hole mounted DIP package, row spacing 25.4 mm (1000 mils), LongPads +THT DIP DIL PDIP 2.54mm 25.4mm 1000mil LongPads +0 +64 +64 +Package_DIP +DIP-64_W25.4mm_SMDSocket_SmallPads +64-lead though-hole mounted DIP package, row spacing 25.4 mm (1000 mils), SMDSocket, SmallPads +THT DIP DIL PDIP 2.54mm 25.4mm 1000mil SMDSocket SmallPads +0 +64 +64 +Package_DIP +DIP-64_W25.4mm_Socket +64-lead though-hole mounted DIP package, row spacing 25.4 mm (1000 mils), Socket +THT DIP DIL PDIP 2.54mm 25.4mm 1000mil Socket +0 +64 +64 +Package_DIP +DIP-64_W25.4mm_Socket_LongPads +64-lead though-hole mounted DIP package, row spacing 25.4 mm (1000 mils), Socket, LongPads +THT DIP DIL PDIP 2.54mm 25.4mm 1000mil Socket LongPads +0 +64 +64 +Package_DIP +DIP-64_W26.67mm_SMDSocket_LongPads +64-lead though-hole mounted DIP package, row spacing 26.67 mm (1050 mils), SMDSocket, LongPads +THT DIP DIL PDIP 2.54mm 26.669999999999998mm 1050mil SMDSocket LongPads +0 +64 +64 +Package_DIP +Fairchild_LSOP-8 +8-Lead, 300\" Wide, Surface Mount Package (https://www.fairchildsemi.com/package-drawings/ML/MLSOP08A.pdf) +LSOP 2.54mm 300mil +0 +8 +8 +Package_DIP +PowerIntegrations_PDIP-8B +Power Integrations variant of 8-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), LongPads, see https://www.power.com/sites/default/files/product-docs/lnk520.pdf +THT DIP DIL PDIP 2.54mm 7.62mm 300mil LongPads +0 +7 +7 +Package_DIP +PowerIntegrations_PDIP-8C +Power Integrations variant of 8-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), LongPads, see https://ac-dc.power.com/sites/default/files/product-docs/tinyswitch-iii_family_datasheet.pdf +THT DIP DIL PDIP 2.54mm 7.62mm 300mil LongPads +0 +7 +7 +Package_DIP +PowerIntegrations_SDIP-10C +PowerIntegrations variant of 10-lead though-hole mounted DIP package, row spacing 7.62 mm (300 mils), LongPads, see https://www.power.com/sites/default/files/product-docs/tophx_family_datasheet.pdf +THT DIP DIL PDIP 2.54mm 7.62mm 300mil LongPads +0 +9 +9 +Package_DIP +PowerIntegrations_SMD-8 +PowerIntegrations variant of 8-lead surface-mounted (SMD) DIP package, row spacing 7.62 mm (300 mils), see https://www.power.com/sites/default/files/product-docs/lnk520.pdf +SMD DIP DIL PDIP SMDIP 2.54mm 7.62mm 300mil +0 +8 +8 +Package_DIP +PowerIntegrations_SMD-8B +PowerIntegrations variant of 8-lead surface-mounted (SMD) DIP package, row spacing 7.62 mm (300 mils), see https://www.power.com/sites/default/files/product-docs/lnk520.pdf +SMD DIP DIL PDIP SMDIP 2.54mm 7.62mm 300mil +0 +7 +7 +Package_DIP +PowerIntegrations_SMD-8C +PowerIntegrations variant of 8-lead surface-mounted (SMD) DIP package, row spacing 7.62 mm (300 mils), see https://ac-dc.power.com/sites/default/files/product-docs/tinyswitch-iii_family_datasheet.pdf +SMD DIP DIL PDIP SMDIP 2.54mm 7.62mm 300mil +0 +7 +7 +Package_DIP +PowerIntegrations_eDIP-12B +Power Integrations eDIP-12B, see https://www.power.com/sites/default/files/product-docs/linkswitch-pl_family_datasheet.pdf +THT DIP DIL PDIP 2.54mm 7.62mm 300mil +0 +11 +11 +Package_DIP +SMDIP-4_W7.62mm +4-lead surface-mounted (SMD) DIP package, row spacing 7.62 mm (300 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 7.62mm 300mil +0 +4 +4 +Package_DIP +SMDIP-4_W9.53mm +4-lead surface-mounted (SMD) DIP package, row spacing 9.53 mm (375 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 9.53mm 375mil +0 +4 +4 +Package_DIP +SMDIP-4_W9.53mm_Clearance8mm +4-lead surface-mounted (SMD) DIP package, row spacing 9.53 mm (375 mils), Clearance8mm +SMD DIP DIL PDIP SMDIP 2.54mm 9.53mm 375mil Clearance8mm +0 +4 +4 +Package_DIP +SMDIP-4_W11.48mm +4-lead surface-mounted (SMD) DIP package, row spacing 11.48 mm (451 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 11.48mm 451mil +0 +4 +4 +Package_DIP +SMDIP-6_W7.62mm +6-lead surface-mounted (SMD) DIP package, row spacing 7.62 mm (300 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 7.62mm 300mil +0 +6 +6 +Package_DIP +SMDIP-6_W9.53mm +6-lead surface-mounted (SMD) DIP package, row spacing 9.53 mm (375 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 9.53mm 375mil +0 +6 +6 +Package_DIP +SMDIP-6_W9.53mm_Clearance8mm +6-lead surface-mounted (SMD) DIP package, row spacing 9.53 mm (375 mils), Clearance8mm +SMD DIP DIL PDIP SMDIP 2.54mm 9.53mm 375mil Clearance8mm +0 +6 +6 +Package_DIP +SMDIP-6_W11.48mm +6-lead surface-mounted (SMD) DIP package, row spacing 11.48 mm (451 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 11.48mm 451mil +0 +6 +6 +Package_DIP +SMDIP-8_W7.62mm +8-lead surface-mounted (SMD) DIP package, row spacing 7.62 mm (300 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 7.62mm 300mil +0 +8 +8 +Package_DIP +SMDIP-8_W9.53mm +8-lead surface-mounted (SMD) DIP package, row spacing 9.53 mm (375 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 9.53mm 375mil +0 +8 +8 +Package_DIP +SMDIP-8_W9.53mm_Clearance8mm +8-lead surface-mounted (SMD) DIP package, row spacing 9.53 mm (375 mils), Clearance8mm +SMD DIP DIL PDIP SMDIP 2.54mm 9.53mm 375mil Clearance8mm +0 +8 +8 +Package_DIP +SMDIP-8_W11.48mm +8-lead surface-mounted (SMD) DIP package, row spacing 11.48 mm (451 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 11.48mm 451mil +0 +8 +8 +Package_DIP +SMDIP-10_W7.62mm +10-lead surface-mounted (SMD) DIP package, row spacing 7.62 mm (300 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 7.62mm 300mil +0 +10 +10 +Package_DIP +SMDIP-10_W9.53mm +10-lead surface-mounted (SMD) DIP package, row spacing 9.53 mm (375 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 9.53mm 375mil +0 +10 +10 +Package_DIP +SMDIP-10_W9.53mm_Clearance8mm +10-lead surface-mounted (SMD) DIP package, row spacing 9.53 mm (375 mils), Clearance8mm +SMD DIP DIL PDIP SMDIP 2.54mm 9.53mm 375mil Clearance8mm +0 +10 +10 +Package_DIP +SMDIP-10_W11.48mm +10-lead surface-mounted (SMD) DIP package, row spacing 11.48 mm (451 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 11.48mm 451mil +0 +10 +10 +Package_DIP +SMDIP-12_W7.62mm +12-lead surface-mounted (SMD) DIP package, row spacing 7.62 mm (300 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 7.62mm 300mil +0 +12 +12 +Package_DIP +SMDIP-12_W9.53mm +12-lead surface-mounted (SMD) DIP package, row spacing 9.53 mm (375 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 9.53mm 375mil +0 +12 +12 +Package_DIP +SMDIP-12_W9.53mm_Clearance8mm +12-lead surface-mounted (SMD) DIP package, row spacing 9.53 mm (375 mils), Clearance8mm +SMD DIP DIL PDIP SMDIP 2.54mm 9.53mm 375mil Clearance8mm +0 +12 +12 +Package_DIP +SMDIP-12_W11.48mm +12-lead surface-mounted (SMD) DIP package, row spacing 11.48 mm (451 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 11.48mm 451mil +0 +12 +12 +Package_DIP +SMDIP-14_W7.62mm +14-lead surface-mounted (SMD) DIP package, row spacing 7.62 mm (300 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 7.62mm 300mil +0 +14 +14 +Package_DIP +SMDIP-14_W9.53mm +14-lead surface-mounted (SMD) DIP package, row spacing 9.53 mm (375 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 9.53mm 375mil +0 +14 +14 +Package_DIP +SMDIP-14_W9.53mm_Clearance8mm +14-lead surface-mounted (SMD) DIP package, row spacing 9.53 mm (375 mils), Clearance8mm +SMD DIP DIL PDIP SMDIP 2.54mm 9.53mm 375mil Clearance8mm +0 +14 +14 +Package_DIP +SMDIP-14_W11.48mm +14-lead surface-mounted (SMD) DIP package, row spacing 11.48 mm (451 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 11.48mm 451mil +0 +14 +14 +Package_DIP +SMDIP-16_W7.62mm +16-lead surface-mounted (SMD) DIP package, row spacing 7.62 mm (300 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 7.62mm 300mil +0 +16 +16 +Package_DIP +SMDIP-16_W9.53mm +16-lead surface-mounted (SMD) DIP package, row spacing 9.53 mm (375 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 9.53mm 375mil +0 +16 +16 +Package_DIP +SMDIP-16_W9.53mm_Clearance8mm +16-lead surface-mounted (SMD) DIP package, row spacing 9.53 mm (375 mils), Clearance8mm +SMD DIP DIL PDIP SMDIP 2.54mm 9.53mm 375mil Clearance8mm +0 +16 +16 +Package_DIP +SMDIP-16_W11.48mm +16-lead surface-mounted (SMD) DIP package, row spacing 11.48 mm (451 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 11.48mm 451mil +0 +16 +16 +Package_DIP +SMDIP-18_W7.62mm +18-lead surface-mounted (SMD) DIP package, row spacing 7.62 mm (300 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 7.62mm 300mil +0 +18 +18 +Package_DIP +SMDIP-18_W9.53mm +18-lead surface-mounted (SMD) DIP package, row spacing 9.53 mm (375 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 9.53mm 375mil +0 +18 +18 +Package_DIP +SMDIP-18_W9.53mm_Clearance8mm +18-lead surface-mounted (SMD) DIP package, row spacing 9.53 mm (375 mils), Clearance8mm +SMD DIP DIL PDIP SMDIP 2.54mm 9.53mm 375mil Clearance8mm +0 +18 +18 +Package_DIP +SMDIP-18_W11.48mm +18-lead surface-mounted (SMD) DIP package, row spacing 11.48 mm (451 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 11.48mm 451mil +0 +18 +18 +Package_DIP +SMDIP-20_W7.62mm +20-lead surface-mounted (SMD) DIP package, row spacing 7.62 mm (300 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 7.62mm 300mil +0 +20 +20 +Package_DIP +SMDIP-20_W9.53mm +20-lead surface-mounted (SMD) DIP package, row spacing 9.53 mm (375 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 9.53mm 375mil +0 +20 +20 +Package_DIP +SMDIP-20_W9.53mm_Clearance8mm +20-lead surface-mounted (SMD) DIP package, row spacing 9.53 mm (375 mils), Clearance8mm +SMD DIP DIL PDIP SMDIP 2.54mm 9.53mm 375mil Clearance8mm +0 +20 +20 +Package_DIP +SMDIP-20_W11.48mm +20-lead surface-mounted (SMD) DIP package, row spacing 11.48 mm (451 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 11.48mm 451mil +0 +20 +20 +Package_DIP +SMDIP-22_W7.62mm +22-lead surface-mounted (SMD) DIP package, row spacing 7.62 mm (300 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 7.62mm 300mil +0 +22 +22 +Package_DIP +SMDIP-22_W9.53mm +22-lead surface-mounted (SMD) DIP package, row spacing 9.53 mm (375 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 9.53mm 375mil +0 +22 +22 +Package_DIP +SMDIP-22_W9.53mm_Clearance8mm +22-lead surface-mounted (SMD) DIP package, row spacing 9.53 mm (375 mils), Clearance8mm +SMD DIP DIL PDIP SMDIP 2.54mm 9.53mm 375mil Clearance8mm +0 +22 +22 +Package_DIP +SMDIP-22_W11.48mm +22-lead surface-mounted (SMD) DIP package, row spacing 11.48 mm (451 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 11.48mm 451mil +0 +22 +22 +Package_DIP +SMDIP-24_W7.62mm +24-lead surface-mounted (SMD) DIP package, row spacing 7.62 mm (300 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 7.62mm 300mil +0 +24 +24 +Package_DIP +SMDIP-24_W9.53mm +24-lead surface-mounted (SMD) DIP package, row spacing 9.53 mm (375 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 9.53mm 375mil +0 +24 +24 +Package_DIP +SMDIP-24_W11.48mm +24-lead surface-mounted (SMD) DIP package, row spacing 11.48 mm (451 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 11.48mm 451mil +0 +24 +24 +Package_DIP +SMDIP-24_W15.24mm +24-lead surface-mounted (SMD) DIP package, row spacing 15.24 mm (600 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 15.24mm 600mil +0 +24 +24 +Package_DIP +SMDIP-28_W15.24mm +28-lead surface-mounted (SMD) DIP package, row spacing 15.24 mm (600 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 15.24mm 600mil +0 +28 +28 +Package_DIP +SMDIP-32_W7.62mm +32-lead surface-mounted (SMD) DIP package, row spacing 7.62 mm (300 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 7.62mm 300mil +0 +32 +32 +Package_DIP +SMDIP-32_W9.53mm +32-lead surface-mounted (SMD) DIP package, row spacing 9.53 mm (375 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 9.53mm 375mil +0 +32 +32 +Package_DIP +SMDIP-32_W11.48mm +32-lead surface-mounted (SMD) DIP package, row spacing 11.48 mm (451 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 11.48mm 451mil +0 +32 +32 +Package_DIP +SMDIP-32_W15.24mm +32-lead surface-mounted (SMD) DIP package, row spacing 15.24 mm (600 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 15.24mm 600mil +0 +32 +32 +Package_DIP +SMDIP-40_W15.24mm +40-lead surface-mounted (SMD) DIP package, row spacing 15.24 mm (600 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 15.24mm 600mil +0 +40 +40 +Package_DIP +SMDIP-40_W25.24mm +40-lead surface-mounted (SMD) DIP package, row spacing 25.24 mm (993 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 25.24mm 993mil +0 +40 +40 +Package_DIP +SMDIP-42_W15.24mm +42-lead surface-mounted (SMD) DIP package, row spacing 15.24 mm (600 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 15.24mm 600mil +0 +42 +42 +Package_DIP +SMDIP-48_W15.24mm +48-lead surface-mounted (SMD) DIP package, row spacing 15.24 mm (600 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 15.24mm 600mil +0 +48 +48 +Package_DIP +SMDIP-64_W15.24mm +64-lead surface-mounted (SMD) DIP package, row spacing 15.24 mm (600 mils) +SMD DIP DIL PDIP SMDIP 2.54mm 15.24mm 600mil +0 +64 +64 +Package_DIP +Toshiba_11-7A9 +Toshiba 11-7A9 package, like 6-lead dip package with missing pin 5, row spacing 7.62 mm (300 mils), https://toshiba.semicon-storage.com/info/docget.jsp?did=1421&prodName=TLP3021(S) +Toshiba 11-7A9 DIL DIP PDIP 2.54mm 7.62mm 300mil +0 +5 +5 +Package_DIP +Vishay_HVM-DIP-3_W7.62mm +3-lead though-hole mounted high-volatge DIP package (based on standard DIP-4), row spacing 7.62 mm (300 mils), see https://www.vishay.com/docs/91361/hexdip.pdf +THT DIP DIL PDIP 2.54mm 7.62mm 300mil Vishay HVMDIP HEXDIP +0 +4 +3 +Package_DirectFET +DirectFET_L4 +DirectFET L4 https://www.infineon.com/dgdl/Infineon-AN-1035-ApplicationNotes-v29_01-EN.pdf?fileId=5546d462533600a40153559159020f76#page=41 +DirectFET L4 MOSFET Infineon +0 +11 +3 +Package_DirectFET +DirectFET_L6 +DirectFET L6 https://www.infineon.com/dgdl/Infineon-AN-1035-ApplicationNotes-v29_01-EN.pdf?fileId=5546d462533600a40153559159020f76#page=42 +DirectFET L6 MOSFET Infineon +0 +13 +3 +Package_DirectFET +DirectFET_L8 +DirectFET L8 https://www.infineon.com/dgdl/Infineon-AN-1035-ApplicationNotes-v29_01-EN.pdf?fileId=5546d462533600a40153559159020f76#page=43 +DirectFET L8 MOSFET Infineon +0 +15 +3 +Package_DirectFET +DirectFET_LA +DirectFET LA https://www.infineon.com/dgdl/Infineon-AN-1035-ApplicationNotes-v29_01-EN.pdf?fileId=5546d462533600a40153559159020f76#page=44 +DirectFET LA MOSFET Infineon +0 +15 +3 +Package_DirectFET +DirectFET_M2 +DirectFET M2 https://www.infineon.com/dgdl/Infineon-AN-1035-ApplicationNotes-v29_01-EN.pdf?fileId=5546d462533600a40153559159020f76#page=33 +DirectFET M2 MOSFET Infineon +0 +7 +3 +Package_DirectFET +DirectFET_M4 +DirectFET M4 https://www.infineon.com/dgdl/Infineon-AN-1035-ApplicationNotes-v29_01-EN.pdf?fileId=5546d462533600a40153559159020f76#page=34 +DirectFET M4 MOSFET Infineon +0 +9 +3 +Package_DirectFET +DirectFET_MA +DirectFET MA https://www.infineon.com/dgdl/Infineon-AN-1035-ApplicationNotes-v29_01-EN.pdf?fileId=5546d462533600a40153559159020f76#page=35 +DirectFET MA MOSFET Infineon +0 +8 +3 +Package_DirectFET +DirectFET_MB +DirectFET MB https://www.infineon.com/dgdl/Infineon-AN-1035-ApplicationNotes-v29_01-EN.pdf?fileId=5546d462533600a40153559159020f76#page=36 +DirectFET MB MOSFET Infineon +0 +8 +3 +Package_DirectFET +DirectFET_MC +DirectFET MC https://www.infineon.com/dgdl/Infineon-AN-1035-ApplicationNotes-v29_01-EN.pdf?fileId=5546d462533600a40153559159020f76#page=37 +DirectFET MC MOSFET Infineon +0 +10 +3 +Package_DirectFET +DirectFET_MD +DirectFET MD https://www.infineon.com/dgdl/Infineon-AN-1035-ApplicationNotes-v29_01-EN.pdf?fileId=5546d462533600a40153559159020f76#page=38 +DirectFET MD MOSFET Infineon +0 +8 +3 +Package_DirectFET +DirectFET_ME +DirectFET ME https://www.infineon.com/dgdl/Infineon-AN-1035-ApplicationNotes-v29_01-EN.pdf?fileId=5546d462533600a40153559159020f76#page=39 +DirectFET ME MOSFET Infineon +0 +10 +3 +Package_DirectFET +DirectFET_MF +DirectFET MF https://www.infineon.com/dgdl/Infineon-AN-1035-ApplicationNotes-v29_01-EN.pdf?fileId=5546d462533600a40153559159020f76#page=40 +DirectFET MF MOSFET Infineon +0 +8 +3 +Package_DirectFET +DirectFET_MN +DirectFET MN https://www.infineon.com/dgdl/Infineon-AN-1035-ApplicationNotes-v29_01-EN.pdf?fileId=5546d462533600a40153559159020f76#page=30 +DirectFET MN MOSFET Infineon +0 +7 +3 +Package_DirectFET +DirectFET_MP +DirectFET MP https://www.infineon.com/dgdl/Infineon-AN-1035-ApplicationNotes-v29_01-EN.pdf?fileId=5546d462533600a40153559159020f76#page=28 +DirectFET MP MOSFET Infineon +0 +7 +3 +Package_DirectFET +DirectFET_MQ +DirectFET MQ https://www.infineon.com/dgdl/Infineon-AN-1035-ApplicationNotes-v29_01-EN.pdf?fileId=5546d462533600a40153559159020f76#page=29 +DirectFET MQ MOSFET Infineon +0 +7 +3 +Package_DirectFET +DirectFET_MT +DirectFET MT https://www.infineon.com/dgdl/Infineon-AN-1035-ApplicationNotes-v29_01-EN.pdf?fileId=5546d462533600a40153559159020f76#page=26 +DirectFET MT MOSFET Infineon +0 +7 +3 +Package_DirectFET +DirectFET_MU +DirectFET MU https://www.infineon.com/dgdl/Infineon-AN-1035-ApplicationNotes-v29_01-EN.pdf?fileId=5546d462533600a40153559159020f76#page=32 +DirectFET MU MOSFET Infineon +0 +7 +3 +Package_DirectFET +DirectFET_MX +DirectFET MX https://www.infineon.com/dgdl/Infineon-AN-1035-ApplicationNotes-v29_01-EN.pdf?fileId=5546d462533600a40153559159020f76#page=27 +DirectFET MX MOSFET Infineon +0 +7 +3 +Package_DirectFET +DirectFET_MZ +DirectFET MZ https://www.infineon.com/dgdl/Infineon-AN-1035-ApplicationNotes-v29_01-EN.pdf?fileId=5546d462533600a40153559159020f76#page=31 +DirectFET MZ MOSFET Infineon +0 +7 +3 +Package_DirectFET +DirectFET_S1 +DirectFET S1 https://www.infineon.com/dgdl/Infineon-AN-1035-ApplicationNotes-v29_01-EN.pdf?fileId=5546d462533600a40153559159020f76#page=20 +DirectFET S1 MOSFET Infineon +0 +6 +3 +Package_DirectFET +DirectFET_S2 +DirectFET S2 https://www.infineon.com/dgdl/Infineon-AN-1035-ApplicationNotes-v29_01-EN.pdf?fileId=5546d462533600a40153559159020f76#page=21 +DirectFET S2 MOSFET Infineon +0 +7 +3 +Package_DirectFET +DirectFET_S3C +DirectFET S3C https://www.infineon.com/dgdl/Infineon-AN-1035-ApplicationNotes-v29_01-EN.pdf?fileId=5546d462533600a40153559159020f76#page=25 +DirectFET S3C MOSFET Infineon +0 +8 +3 +Package_DirectFET +DirectFET_SA +DirectFET SA https://www.infineon.com/dgdl/Infineon-AN-1035-ApplicationNotes-v29_01-EN.pdf?fileId=5546d462533600a40153559159020f76#page=22 +DirectFET SA MOSFET Infineon +0 +8 +3 +Package_DirectFET +DirectFET_SB +DirectFET SB https://www.infineon.com/dgdl/Infineon-AN-1035-ApplicationNotes-v29_01-EN.pdf?fileId=5546d462533600a40153559159020f76#page=23 +DirectFET SB MOSFET Infineon +0 +6 +3 +Package_DirectFET +DirectFET_SC +DirectFET SC https://www.infineon.com/dgdl/Infineon-AN-1035-ApplicationNotes-v29_01-EN.pdf?fileId=5546d462533600a40153559159020f76#page=24 +DirectFET SC MOSFET Infineon +0 +7 +3 +Package_DirectFET +DirectFET_SH +DirectFET SH https://www.infineon.com/dgdl/Infineon-AN-1035-ApplicationNotes-v29_01-EN.pdf?fileId=5546d462533600a40153559159020f76#page=19 +DirectFET SH MOSFET Infineon +0 +6 +3 +Package_DirectFET +DirectFET_SJ +DirectFET SJ https://www.infineon.com/dgdl/Infineon-AN-1035-ApplicationNotes-v29_01-EN.pdf?fileId=5546d462533600a40153559159020f76#page=18 +DirectFET SJ MOSFET Infineon +0 +7 +3 +Package_DirectFET +DirectFET_SQ +DirectFET SQ https://www.infineon.com/dgdl/Infineon-AN-1035-ApplicationNotes-v29_01-EN.pdf?fileId=5546d462533600a40153559159020f76#page=17 +DirectFET SQ MOSFET Infineon +0 +6 +3 +Package_DirectFET +DirectFET_ST +DirectFET ST https://www.infineon.com/dgdl/Infineon-AN-1035-ApplicationNotes-v29_01-EN.pdf?fileId=5546d462533600a40153559159020f76#page=16 +DirectFET ST MOSFET Infineon +0 +7 +3 +Package_LCC +PLCC-20 +PLCC, 20 pins, surface mount +plcc smt +0 +20 +20 +Package_LCC +PLCC-20_SMD-Socket +PLCC, 20 pins, surface mount +plcc smt +0 +20 +20 +Package_LCC +PLCC-20_THT-Socket +PLCC, 20 pins, through hole +plcc leaded +0 +20 +20 +Package_LCC +PLCC-28 +PLCC, 28 pins, surface mount +plcc smt +0 +28 +28 +Package_LCC +PLCC-28_SMD-Socket +PLCC, 28 pins, surface mount +plcc smt +0 +28 +28 +Package_LCC +PLCC-28_THT-Socket +PLCC, 28 pins, through hole +plcc leaded +0 +28 +28 +Package_LCC +PLCC-32_11.4x14.0mm_P1.27mm +PLCC, 32 Pin (http://ww1.microchip.com/downloads/en/DeviceDoc/doc0015.pdf), generated with kicad-footprint-generator ipc_plcc_jLead_generator.py +PLCC LCC +0 +32 +32 +Package_LCC +PLCC-32_THT-Socket +PLCC, 32 pins, through hole, http://www.assmann-wsw.com/fileadmin/datasheets/ASS_0981_CO.pdf +plcc leaded +0 +32 +32 +Package_LCC +PLCC-44 +PLCC, 44 pins, surface mount +plcc smt +0 +44 +44 +Package_LCC +PLCC-44_16.6x16.6mm_P1.27mm +PLCC, 44 Pin (http://www.microsemi.com/index.php?option=com_docman&task=doc_download&gid=131095), generated with kicad-footprint-generator ipc_plcc_jLead_generator.py +PLCC LCC +0 +44 +44 +Package_LCC +PLCC-44_SMD-Socket +PLCC, 44 pins, surface mount +plcc smt +0 +44 +44 +Package_LCC +PLCC-44_THT-Socket +PLCC, 44 pins, through hole +plcc leaded +0 +44 +44 +Package_LCC +PLCC-52 +PLCC, 52 pins, surface mount +plcc smt +0 +52 +52 +Package_LCC +PLCC-52_SMD-Socket +PLCC, 52 pins, surface mount +plcc smt +0 +52 +52 +Package_LCC +PLCC-52_THT-Socket +PLCC, 52 pins, through hole +plcc leaded +0 +52 +52 +Package_LCC +PLCC-68 +PLCC, 68 pins, surface mount +plcc smt +0 +68 +68 +Package_LCC +PLCC-68_24.2x24.2mm_P1.27mm +PLCC, 68 Pin (http://www.microsemi.com/index.php?option=com_docman&task=doc_download&gid=131095), generated with kicad-footprint-generator ipc_plcc_jLead_generator.py +PLCC LCC +0 +68 +68 +Package_LCC +PLCC-68_SMD-Socket +PLCC, 68 pins, surface mount +plcc smt +0 +68 +68 +Package_LCC +PLCC-68_THT-Socket +PLCC, 68 pins, through hole +plcc leaded +0 +68 +68 +Package_LCC +PLCC-84 +PLCC, 84 pins, surface mount +plcc smt +0 +84 +84 +Package_LCC +PLCC-84_29.3x29.3mm_P1.27mm +PLCC, 84 Pin (http://www.microsemi.com/index.php?option=com_docman&task=doc_download&gid=131095), generated with kicad-footprint-generator ipc_plcc_jLead_generator.py +PLCC LCC +0 +84 +84 +Package_LCC +PLCC-84_SMD-Socket +PLCC, 84 pins, surface mount +plcc smt +0 +84 +84 +Package_LCC +PLCC-84_THT-Socket +PLCC, 84 pins, through hole +plcc leaded +0 +84 +84 +Package_LGA +AMS_LGA-10-1EP_2.7x4mm_P0.6mm +LGA-10, http://ams.com/eng/content/download/951091/2269479/471718 +lga land grid array +0 +13 +11 +Package_LGA +AMS_LGA-20_4.7x4.5mm_P0.65mm +http://ams.com/eng/content/download/1008631/2361759/498838 +AMS LGA +0 +20 +20 +Package_LGA +Bosch_LGA-8_2.5x2.5mm_P0.65mm_ClockwisePinNumbering +LGA-8 +lga land grid array +0 +8 +8 +Package_LGA +Bosch_LGA-8_2x2.5mm_P0.65mm_ClockwisePinNumbering +LGA-8, https://ae-bst.resource.bosch.com/media/_tech/media/datasheets/BST-BMP280-DS001-18.pdf +lga land grid array +0 +8 +8 +Package_LGA +Bosch_LGA-8_3x3mm_P0.8mm_ClockwisePinNumbering +Bosch LGA, 8 Pin (https://ae-bst.resource.bosch.com/media/_tech/media/datasheets/BST-BME680-DS001-00.pdf#page=44), generated with kicad-footprint-generator ipc_noLead_generator.py +Bosch LGA NoLead +0 +8 +8 +Package_LGA +Bosch_LGA-14_3x2.5mm_P0.5mm +LGA-14 Bosch https://ae-bst.resource.bosch.com/media/_tech/media/datasheets/BST-BMI160-DS000-07.pdf +lga land grid array +0 +14 +14 +Package_LGA +LGA-8_3x5mm_P1.25mm +LGA-8 +lga land grid array +0 +8 +8 +Package_LGA +LGA-12_2x2mm_P0.5mm +LGA12 +lga land grid array +0 +12 +12 +Package_LGA +LGA-14_2x2mm_P0.35mm_LayoutBorder3x4y +LGA, 14 Pin (http://www.st.com/resource/en/datasheet/lis2dh.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +LGA NoLead +0 +14 +14 +Package_LGA +LGA-14_3x2.5mm_P0.5mm_LayoutBorder3x4y +LGA, 14 Pin (http://www.st.com/resource/en/datasheet/lsm6ds3.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +LGA NoLead +0 +14 +14 +Package_LGA +LGA-14_3x5mm_P0.8mm_LayoutBorder1x6y +LGA, 14 Pin (http://www.st.com/resource/en/datasheet/lsm303dlhc.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +LGA NoLead +0 +14 +14 +Package_LGA +LGA-16_3x3mm_P0.5mm +http://www.memsic.com/userfiles/files/DataSheets/Magnetic-Sensors-Datasheets/MMC5883MA-RevC.pdf +lga land grid array +0 +16 +16 +Package_LGA +LGA-16_3x3mm_P0.5mm_LayoutBorder3x5y +LGA, 16 Pin (http://www.st.com/resource/en/datasheet/lis331hh.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +LGA NoLead +0 +16 +16 +Package_LGA +LGA-16_4x4mm_P0.65mm_LayoutBorder4x4y +LGA, 16 Pin (http://www.st.com/resource/en/datasheet/l3gd20.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +LGA NoLead +0 +16 +16 +Package_LGA +LGA-24L_3x3.5mm_P0.43mm +LGA 24L 3x3.5mm Pitch 0.43mm +LGA 24L 3x3.5mm Pitch 0.43mm +0 +24 +24 +Package_LGA +LGA-28_5.2x3.8mm_P0.5mm +LGA 28 5.2x3.8mm Pitch 0.5mm +LGA 28 5.2x3.8mm Pitch 0.5mm +0 +28 +28 +Package_LGA +Linear_LGA-133_15.0x15.0mm_Layout12x12_P1.27mm +Analog Devices (Linear Tech), 133-pin LGA uModule, 15.0x15.0x4.32mm, https://www.analog.com/media/en/technical-documentation/data-sheets/4637fc.pdf +133 pin lga +0 +133 +133 +Package_LGA +NXP_LGA-8_3x5mm_P1.25mm_H1.1mm +NXP LGA, 8 Pin (https://www.nxp.com/docs/en/data-sheet/MPL3115A2.pdf#page=42), generated with kicad-footprint-generator ipc_noLead_generator.py +NXP LGA NoLead +0 +8 +8 +Package_LGA +NXP_LGA-8_3x5mm_P1.25mm_H1.2mm +NXP LGA, 8 Pin (https://www.nxp.com/docs/en/data-sheet/MPL115A1.pdf#page=15), generated with kicad-footprint-generator ipc_noLead_generator.py +NXP LGA NoLead +0 +8 +8 +Package_LGA +ST_HLGA-10_2.5x2.5mm_P0.6mm_LayoutBorder3x2y +ST HLGA, 10 Pin (https://www.st.com/resource/en/datasheet/lps25hb.pdf#page=46), generated with kicad-footprint-generator ipc_noLead_generator.py +ST HLGA NoLead +0 +10 +10 +Package_LGA +Texas_SIL0008D_MicroSiP-8-1EP_2.8x3mm_P0.65mm_EP1.1x1.9mm +Texas SIL0008D MicroSiP, 8 Pin (http://www.ti.com/lit/ds/symlink/tps82130.pdf#page=19), generated with kicad-footprint-generator ipc_noLead_generator.py +Texas MicroSiP NoLead +0 +12 +9 +Package_LGA +Texas_SIL0008D_MicroSiP-8-1EP_2.8x3mm_P0.65mm_EP1.1x1.9mm_ThermalVias +Texas SIL0008D MicroSiP, 8 Pin (http://www.ti.com/lit/ds/symlink/tps82130.pdf#page=19), generated with kicad-footprint-generator ipc_noLead_generator.py +Texas MicroSiP NoLead +0 +16 +9 +Package_LGA +Texas_SIL0010A_MicroSiP-10-1EP_3.8x3mm_P0.6mm_EP0.7x2.9mm +Texas SIL0010A MicroSiP, 10 Pin (http://www.ti.com/lit/ml/mpds579b/mpds579b.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +Texas MicroSiP NoLead +0 +14 +11 +Package_LGA +Texas_SIL0010A_MicroSiP-10-1EP_3.8x3mm_P0.6mm_EP0.7x2.9mm_ThermalVias +Texas SIL0010A MicroSiP, 10 Pin (http://www.ti.com/lit/ml/mpds579b/mpds579b.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +Texas MicroSiP NoLead +0 +18 +11 +Package_QFP +EQFP-144-1EP_20x20mm_P0.5mm_EP4x4mm +EQFP, 144 Pin (https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/packaging/04r00482-02.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +EQFP QFP +0 +154 +145 +Package_QFP +EQFP-144-1EP_20x20mm_P0.5mm_EP4x4mm_ThermalVias +EQFP, 144 Pin (https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/packaging/04r00482-02.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +EQFP QFP +0 +171 +145 +Package_QFP +EQFP-144-1EP_20x20mm_P0.5mm_EP5x5mm +EQFP, 144 Pin (https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/packaging/04r00476-02.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +EQFP QFP +0 +161 +145 +Package_QFP +EQFP-144-1EP_20x20mm_P0.5mm_EP5x5mm_ThermalVias +EQFP, 144 Pin (https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/packaging/04r00476-02.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +EQFP QFP +0 +187 +145 +Package_QFP +EQFP-144-1EP_20x20mm_P0.5mm_EP6.61x5.615mm +EQFP, 144 Pin (https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/packaging/04r00485-02.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +EQFP QFP +0 +165 +145 +Package_QFP +EQFP-144-1EP_20x20mm_P0.5mm_EP6.61x5.615mm_ThermalVias +EQFP, 144 Pin (https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/packaging/04r00485-02.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +EQFP QFP +0 +196 +145 +Package_QFP +EQFP-144-1EP_20x20mm_P0.5mm_EP7.2x6.35mm +EQFP, 144 Pin (https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/packaging/04r00487-01.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +EQFP QFP +0 +175 +145 +Package_QFP +EQFP-144-1EP_20x20mm_P0.5mm_EP7.2x6.35mm_ThermalVias +EQFP, 144 Pin (https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/packaging/04r00487-01.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +EQFP QFP +0 +218 +145 +Package_QFP +EQFP-144-1EP_20x20mm_P0.5mm_EP8.93x8.7mm +EQFP, 144 Pin (https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/packaging/04r00479-02.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +EQFP QFP +0 +194 +145 +Package_QFP +EQFP-144-1EP_20x20mm_P0.5mm_EP8.93x8.7mm_ThermalVias +EQFP, 144 Pin (https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/packaging/04r00479-02.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +EQFP QFP +0 +259 +145 +Package_QFP +HTQFP-64-1EP_10x10mm_P0.5mm_EP8x8mm +64-Lead Plastic Thin Quad Flatpack (PT) - 10x10x1 mm Body, 2.00 mm Footprint [HTQFP] thermal pad +HTQFP-64 Pitch 0.5 +0 +69 +65 +Package_QFP +HTQFP-64-1EP_10x10mm_P0.5mm_EP8x8mm_Mask4.4x4.4mm_ThermalVias +64-Lead Plastic Thin Quad Flatpack (PT) - 10x10x1 mm Body, 2.00 mm Footprint [HTQFP] thermal pad +HTQFP-64 Pitch 0.5 +0 +135 +65 +Package_QFP +LQFP-32_5x5mm_P0.5mm +LQFP, 32 Pin (https://www.nxp.com/docs/en/package-information/SOT401-1.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +LQFP QFP +0 +32 +32 +Package_QFP +LQFP-32_7x7mm_P0.8mm +LQFP, 32 Pin (https://www.nxp.com/docs/en/package-information/SOT358-1.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +LQFP QFP +0 +32 +32 +Package_QFP +LQFP-36_7x7mm_P0.65mm +LQFP, 36 Pin (https://www.onsemi.com/pub/Collateral/561AV.PDF), generated with kicad-footprint-generator ipc_gullwing_generator.py +LQFP QFP +0 +36 +36 +Package_QFP +LQFP-44_10x10mm_P0.8mm +LQFP, 44 Pin (https://www.nxp.com/files-static/shared/doc/package_info/98ASS23225W.pdf?&fsrch=1), generated with kicad-footprint-generator ipc_gullwing_generator.py +LQFP QFP +0 +44 +44 +Package_QFP +LQFP-48-1EP_7x7mm_P0.5mm_EP3.6x3.6mm +LQFP, 48 Pin (http://www.analog.com/media/en/technical-documentation/data-sheets/LTC7810.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +LQFP QFP +0 +58 +49 +Package_QFP +LQFP-48-1EP_7x7mm_P0.5mm_EP3.6x3.6mm_ThermalVias +LQFP, 48 Pin (http://www.analog.com/media/en/technical-documentation/data-sheets/LTC7810.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +LQFP QFP +0 +75 +49 +Package_QFP +LQFP-48_7x7mm_P0.5mm +LQFP, 48 Pin (https://www.analog.com/media/en/technical-documentation/data-sheets/ltc2358-16.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +LQFP QFP +0 +48 +48 +Package_QFP +LQFP-52-1EP_10x10mm_P0.65mm_EP4.8x4.8mm +LQFP, 52 Pin (https://www.onsemi.com/pub/Collateral/848H-01.PDF), generated with kicad-footprint-generator ipc_gullwing_generator.py +LQFP QFP +0 +62 +53 +Package_QFP +LQFP-52-1EP_10x10mm_P0.65mm_EP4.8x4.8mm_ThermalVias +LQFP, 52 Pin (https://www.onsemi.com/pub/Collateral/848H-01.PDF), generated with kicad-footprint-generator ipc_gullwing_generator.py +LQFP QFP +0 +95 +53 +Package_QFP +LQFP-52_10x10mm_P0.65mm +LQFP, 52 Pin (https://www.nxp.com/docs/en/package-information/98ARL10526D.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +LQFP QFP +0 +52 +52 +Package_QFP +LQFP-52_14x14mm_P1mm +LQFP, 52 Pin (http://www.holtek.com/documents/10179/116711/HT1632Cv170.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +LQFP QFP +0 +52 +52 +Package_QFP +LQFP-64-1EP_10x10mm_P0.5mm_EP5x5mm +LQFP, 64 Pin (https://www.analog.com/media/en/technical-documentation/data-sheets/adv7611.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +LQFP QFP +0 +90 +65 +Package_QFP +LQFP-64-1EP_10x10mm_P0.5mm_EP5x5mm_ThermalVias +LQFP, 64 Pin (https://www.analog.com/media/en/technical-documentation/data-sheets/adv7611.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +LQFP QFP +0 +107 +65 +Package_QFP +LQFP-64-1EP_10x10mm_P0.5mm_EP6.5x6.5mm +LQFP, 64 Pin (https://www.nxp.com/files-static/shared/doc/package_info/98ARH98426A.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +LQFP QFP +0 +90 +65 +Package_QFP +LQFP-64-1EP_10x10mm_P0.5mm_EP6.5x6.5mm_ThermalVias +LQFP, 64 Pin (https://www.nxp.com/files-static/shared/doc/package_info/98ARH98426A.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +LQFP QFP +0 +127 +65 +Package_QFP +LQFP-64_7x7mm_P0.4mm +LQFP, 64 Pin (https://www.nxp.com/docs/en/package-information/SOT414-1.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +LQFP QFP +0 +64 +64 +Package_QFP +LQFP-64_10x10mm_P0.5mm +LQFP, 64 Pin (https://www.analog.com/media/en/technical-documentation/data-sheets/ad7606_7606-6_7606-4.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +LQFP QFP +0 +64 +64 +Package_QFP +LQFP-64_14x14mm_P0.8mm +LQFP, 64 Pin (https://www.nxp.com/docs/en/package-information/SOT791-1.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +LQFP QFP +0 +64 +64 +Package_QFP +LQFP-80_10x10mm_P0.4mm +LQFP, 80 Pin (https://www.renesas.com/eu/en/package-image/pdf/outdrawing/q80.10x10.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +LQFP QFP +0 +80 +80 +Package_QFP +LQFP-80_12x12mm_P0.5mm +LQFP, 80 Pin (https://www.nxp.com/docs/en/package-information/SOT315-1.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +LQFP QFP +0 +80 +80 +Package_QFP +LQFP-80_14x14mm_P0.65mm +LQFP, 80 Pin (https://www.analog.com/media/en/technical-documentation/data-sheets/AD9852.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +LQFP QFP +0 +80 +80 +Package_QFP +LQFP-100_14x14mm_P0.5mm +LQFP, 100 Pin (https://www.nxp.com/docs/en/package-information/SOT407-1.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +LQFP QFP +0 +100 +100 +Package_QFP +LQFP-128_14x14mm_P0.4mm +LQFP, 128 Pin (https://www.renesas.com/eu/en/package-image/pdf/outdrawing/q128.14x14.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +LQFP QFP +0 +128 +128 +Package_QFP +LQFP-128_14x20mm_P0.5mm +LQFP, 128 Pin (https://www.nxp.com/docs/en/package-information/SOT425-1.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +LQFP QFP +0 +128 +128 +Package_QFP +LQFP-144_20x20mm_P0.5mm +LQFP, 144 Pin (http://ww1.microchip.com/downloads/en/PackagingSpec/00000049BQ.pdf#page=425), generated with kicad-footprint-generator ipc_gullwing_generator.py +LQFP QFP +0 +144 +144 +Package_QFP +LQFP-160_24x24mm_P0.5mm +LQFP, 160 Pin (https://www.nxp.com/docs/en/package-information/SOT435-1.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +LQFP QFP +0 +160 +160 +Package_QFP +LQFP-176_20x20mm_P0.4mm +LQFP, 176 Pin (https://www.onsemi.com/pub/Collateral/566DB.PDF), generated with kicad-footprint-generator ipc_gullwing_generator.py +LQFP QFP +0 +176 +176 +Package_QFP +LQFP-176_24x24mm_P0.5mm +LQFP, 176 Pin (https://www.st.com/resource/en/datasheet/stm32f207vg.pdf#page=163), generated with kicad-footprint-generator ipc_gullwing_generator.py +LQFP QFP +0 +176 +176 +Package_QFP +LQFP-208_28x28mm_P0.5mm +LQFP, 208 Pin (https://www.nxp.com/docs/en/package-information/SOT459-1.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +LQFP QFP +0 +208 +208 +Package_QFP +LQFP-216_24x24mm_P0.4mm +LQFP, 216 Pin (https://www.onsemi.com/pub/Collateral/561BE.PDF), generated with kicad-footprint-generator ipc_gullwing_generator.py +LQFP QFP +0 +216 +216 +Package_QFP +MQFP-44_10x10mm_P0.8mm +MQFP, 44 Pin (https://www.analog.com/media/en/technical-documentation/data-sheets/ad7722.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +MQFP QFP +0 +44 +44 +Package_QFP +PQFP-44_10x10mm_P0.8mm +44-Lead Plastic Quad Flatpack - 10x10x2.5mm Body (http://www.onsemi.com/pub/Collateral/122BK.PDF) +PQFP 0.8 +0 +44 +44 +Package_QFP +PQFP-80_14x20mm_P0.8mm +PQFP80 14x20 / QIP80E CASE 122BS (see ON Semiconductor 122BS.PDF) +QFP 0.8 +0 +80 +80 +Package_QFP +PQFP-100_14x20mm_P0.65mm +PQFP, 100 Pin (http://www.microsemi.com/index.php?option=com_docman&task=doc_download&gid=131095), generated with kicad-footprint-generator ipc_gullwing_generator.py +PQFP QFP +0 +100 +100 +Package_QFP +PQFP-112_20x20mm_P0.65mm +PQFP, 112 pins, 20mm sq body, 0.65mm pitch (http://cache.freescale.com/files/shared/doc/package_info/98ASS23330W.pdf, http://www.nxp.com/docs/en/application-note/AN4388.pdf) +PQFP 112 +0 +112 +112 +Package_QFP +PQFP-132_24x24mm_P0.635mm +PQFP, 132 pins, 24mm sq body, 0.635mm pitch (https://www.intel.com/content/dam/www/public/us/en/documents/packaging-databooks/packaging-chapter-02-databook.pdf, http://www.nxp.com/docs/en/application-note/AN4388.pdf) +PQFP 132 +0 +132 +132 +Package_QFP +PQFP-132_24x24mm_P0.635mm_i386 +PQFP, 132 pins, 24mm sq body, 0.635mm pitch, Intel 386EX (https://www.intel.com/content/dam/www/public/us/en/documents/packaging-databooks/packaging-chapter-02-databook.pdf, http://www.nxp.com/docs/en/application-note/AN4388.pdf) +PQFP 132 Intel 386EX +0 +132 +132 +Package_QFP +PQFP-144_28x28mm_P0.65mm +PQFP, 144 Pin (http://www.microsemi.com/index.php?option=com_docman&task=doc_download&gid=131095), generated with kicad-footprint-generator ipc_gullwing_generator.py +PQFP QFP +0 +144 +144 +Package_QFP +PQFP-160_28x28mm_P0.65mm +PQFP, 160 Pin (http://www.microsemi.com/index.php?option=com_docman&task=doc_download&gid=131095), generated with kicad-footprint-generator ipc_gullwing_generator.py +PQFP QFP +0 +160 +160 +Package_QFP +PQFP-208_28x28mm_P0.5mm +PQFP, 208 Pin (http://www.microsemi.com/index.php?option=com_docman&task=doc_download&gid=131095), generated with kicad-footprint-generator ipc_gullwing_generator.py +PQFP QFP +0 +208 +208 +Package_QFP +PQFP-240_32.1x32.1mm_P0.5mm +PQFP, 240 Pin (http://www.microsemi.com/index.php?option=com_docman&task=doc_download&gid=131095), generated with kicad-footprint-generator ipc_gullwing_generator.py +PQFP QFP +0 +240 +240 +Package_QFP +PQFP-256_28x28mm_P0.4mm +PQFP256 28x28 / QFP256J CASE 122BX (see ON Semiconductor 122BX.PDF) +QFP 0.4 +0 +256 +256 +Package_QFP +TQFP-32_7x7mm_P0.8mm +32-Lead Plastic Thin Quad Flatpack (PT) - 7x7x1.0 mm Body, 2.00 mm [TQFP] (see Microchip Packaging Specification 00000049BS.pdf) +QFP 0.8 +0 +32 +32 +Package_QFP +TQFP-44-1EP_10x10mm_P0.8mm_EP4.5x4.5mm +44-Lead Plastic Thin Quad Flatpack (MW) - 10x10x1.0 mm Body [TQFP] With 4.5x4.5 mm Exposed Pad (see Microchip Packaging Specification 00000049BS.pdf) +QFP 0.8 +0 +54 +45 +Package_QFP +TQFP-44_10x10mm_P0.8mm +44-Lead Plastic Thin Quad Flatpack (PT) - 10x10x1.0 mm Body [TQFP] (see Microchip Packaging Specification 00000049BS.pdf) +QFP 0.8 +0 +44 +44 +Package_QFP +TQFP-48-1EP_7x7mm_P0.5mm_EP3.5x3.5mm +48-Lead Thin Quad Flatpack (PT) - 7x7x1.0 mm Body [TQFP] With Exposed Pad (see Microchip Packaging Specification 00000049BS.pdf) +QFP 0.5 +0 +53 +49 +Package_QFP +TQFP-48-1EP_7x7mm_P0.5mm_EP5x5mm +TQFP, 48 Pin (https://www.trinamic.com/fileadmin/assets/Products/ICs_Documents/TMC2100_datasheet_Rev1.08.pdf (page 45)), generated with kicad-footprint-generator ipc_gullwing_generator.py +TQFP QFP +0 +65 +49 +Package_QFP +TQFP-48-1EP_7x7mm_P0.5mm_EP5x5mm_ThermalVias +TQFP, 48 Pin (https://www.trinamic.com/fileadmin/assets/Products/ICs_Documents/TMC2100_datasheet_Rev1.08.pdf (page 45)), generated with kicad-footprint-generator ipc_gullwing_generator.py +TQFP QFP +0 +91 +49 +Package_QFP +TQFP-48_7x7mm_P0.5mm +48 LEAD TQFP 7x7mm (see MICREL TQFP7x7-48LD-PL-1.pdf) +QFP 0.5 +0 +48 +48 +Package_QFP +TQFP-52-1EP_10x10mm_P0.65mm_EP6.5x6.5mm +TQFP, 52 Pin (http://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/tqfp_edsv/sv_52_1.pdf), generated with kicad-footprint-generator ipc_qfp_generator.py +TQFP QFP +0 +78 +53 +Package_QFP +TQFP-52-1EP_10x10mm_P0.65mm_EP6.5x6.5mm_ThermalVias +TQFP, 52 Pin (http://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/tqfp_edsv/sv_52_1.pdf), generated with kicad-footprint-generator ipc_qfp_generator.py +TQFP QFP +0 +79 +53 +Package_QFP +TQFP-64-1EP_10x10mm_P0.5mm_EP8x8mm +64-Lead Plastic Thin Quad Flatpack (PT) - 10x10x1 mm Body, 2.00 mm Footprint [TQFP] thermal pad +QFP 0.5 +0 +90 +65 +Package_QFP +TQFP-64_7x7mm_P0.4mm +TQFP64 7x7, 0.4P CASE 932BH (see ON Semiconductor 932BH.PDF) +QFP 0.4 +0 +64 +64 +Package_QFP +TQFP-64_10x10mm_P0.5mm +TQFP, 64 Pin (http://www.microsemi.com/index.php?option=com_docman&task=doc_download&gid=131095), generated with kicad-footprint-generator ipc_gullwing_generator.py +TQFP QFP +0 +64 +64 +Package_QFP +TQFP-64_14x14mm_P0.8mm +64-Lead Plastic Thin Quad Flatpack (PF) - 14x14x1 mm Body, 2.00 mm [TQFP] (see Microchip Packaging Specification 00000049BS.pdf) +QFP 0.8 +0 +64 +64 +Package_QFP +TQFP-80-1EP_14x14mm_P0.65mm_EP9.5x9.5mm +80-Lead Plastic Thin Quad Flatpack (PF) - 14x14mm body, 9.5mm sq thermal pad (http://www.analog.com/media/en/technical-documentation/data-sheets/AD9852.pdf) +QFP 0.65 +0 +85 +81 +Package_QFP +TQFP-80_12x12mm_P0.5mm +80-Lead Plastic Thin Quad Flatpack (PT) - 12x12x1 mm Body, 2.00 mm [TQFP] (see Microchip Packaging Specification 00000049BS.pdf) +QFP 0.5 +0 +80 +80 +Package_QFP +TQFP-80_14x14mm_P0.65mm +80-Lead Plastic Thin Quad Flatpack (PF) - 14x14x1 mm Body, 2.00 mm [TQFP] (see Microchip Packaging Specification 00000049BS.pdf) +QFP 0.65 +0 +80 +80 +Package_QFP +TQFP-100-1EP_14x14mm_P0.5mm_EP5x5mm +TQFP, 100 Pin (https://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/tqfp_edsv/sv_100_4.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +TQFP QFP +0 +117 +101 +Package_QFP +TQFP-100-1EP_14x14mm_P0.5mm_EP5x5mm_ThermalVias +TQFP, 100 Pin (https://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/tqfp_edsv/sv_100_4.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +TQFP QFP +0 +143 +101 +Package_QFP +TQFP-100_12x12mm_P0.4mm +100-Lead Plastic Thin Quad Flatpack (PT) - 12x12x1 mm Body, 2.00 mm [TQFP] (see Microchip Packaging Specification 00000049BS.pdf) +QFP 0.4 +0 +100 +100 +Package_QFP +TQFP-100_14x14mm_P0.5mm +TQFP, 100 Pin (http://www.microsemi.com/index.php?option=com_docman&task=doc_download&gid=131095), generated with kicad-footprint-generator ipc_gullwing_generator.py +TQFP QFP +0 +100 +100 +Package_QFP +TQFP-120_14x14mm_P0.4mm +TQFP120 14x14 / TQFP120 CASE 932AZ (see ON Semiconductor 932AZ.PDF) +QFP 0.4 +0 +120 +120 +Package_QFP +TQFP-128_14x14mm_P0.4mm +TQFP128 14x14 / TQFP128 CASE 932BB (see ON Semiconductor 932BB.PDF) +QFP 0.4 +0 +128 +128 +Package_QFP +TQFP-144_16x16mm_P0.4mm +144-Lead Plastic Thin Quad Flatpack (PH) - 16x16x1 mm Body, 2.00 mm Footprint [TQFP] (see Microchip Packaging Specification 00000049BS.pdf) +QFP 0.4 +0 +144 +144 +Package_QFP +TQFP-144_20x20mm_P0.5mm +TQFP, 144 Pin (http://www.microsemi.com/index.php?option=com_docman&task=doc_download&gid=131095), generated with kicad-footprint-generator ipc_gullwing_generator.py +TQFP QFP +0 +144 +144 +Package_QFP +TQFP-176_24x24mm_P0.5mm +TQFP, 176 Pin (http://www.microsemi.com/index.php?option=com_docman&task=doc_download&gid=131095), generated with kicad-footprint-generator ipc_gullwing_generator.py +TQFP QFP +0 +176 +176 +Package_QFP +VQFP-80_14x14mm_P0.65mm +VQFP, 80 Pin (http://www.microsemi.com/index.php?option=com_docman&task=doc_download&gid=131095), generated with kicad-footprint-generator ipc_gullwing_generator.py +VQFP QFP +0 +80 +80 +Package_QFP +VQFP-100_14x14mm_P0.5mm +VQFP, 100 Pin (http://www.microsemi.com/index.php?option=com_docman&task=doc_download&gid=131095), generated with kicad-footprint-generator ipc_gullwing_generator.py +VQFP QFP +0 +100 +100 +Package_QFP +VQFP-128_14x14mm_P0.4mm +VQFP, 128 Pin (http://www.microsemi.com/index.php?option=com_docman&task=doc_download&gid=131095), generated with kicad-footprint-generator ipc_gullwing_generator.py +VQFP QFP +0 +128 +128 +Package_QFP +VQFP-176_20x20mm_P0.4mm +VQFP, 176 Pin (http://www.microsemi.com/index.php?option=com_docman&task=doc_download&gid=131095), generated with kicad-footprint-generator ipc_gullwing_generator.py +VQFP QFP +0 +176 +176 +Package_SIP +PowerIntegrations_eSIP-7C +eSIP-7C Vertical Flat Package with Heatsink Tab, https://ac-dc.power.com/sites/default/files/product-docs/topswitch-jx_family_datasheet.pdf +Power Integrations E Package +0 +6 +6 +Package_SIP +PowerIntegrations_eSIP-7F +eSIP-7F Flat Package with Heatsink Tab https://ac-dc.power.com/sites/default/files/product-docs/linkswitch-ph_family_datasheet.pdf +Power Integrations L Package +0 +6 +6 +Package_SIP +SIP-8_19x3mm_P2.54mm +SIP 8-pin (http://www.njr.com/semicon/PDF/package/SIP8_E.pdf) +SIP8 +0 +8 +8 +Package_SIP +SIP-9_21.54x3mm_P2.54mm +SIP 9-pin () +SIP8 +0 +9 +9 +Package_SIP +SIP-9_22.3x3mm_P2.54mm +SIP 9-pin () +SIP8 +0 +9 +9 +Package_SIP +SIP3_11.6x8.5mm +RECOM,R78EXX,https://www.recom-power.com/pdf/Innoline/R-78Exx-0.5.pdf +SIP3 Regulator Module +0 +3 +3 +Package_SIP +SIP4_Sharp-SSR_P7.62mm_Angled +SIP4 Footprint for SSR made by Sharp +Solid State relais SSR Sharp +0 +4 +4 +Package_SIP +SIP4_Sharp-SSR_P7.62mm_Angled_NoHole +SIP4 Footprint for SSR made by Sharp +Solid State relais SSR Sharp +0 +4 +4 +Package_SIP +SIP4_Sharp-SSR_P7.62mm_Straight +SIP4 Footprint for SSR made by Sharp +Solid State relais SSR Sharp +0 +4 +4 +Package_SIP +SIP9_Housing +SIP9 +SIP9 +0 +9 +9 +Package_SIP +SIP9_Housing_BigPads +SIP9, large pads +SIP9 +0 +9 +9 +Package_SIP +SLA704XM +SIP SLA704XM (http://www.sumzi.com/upload/files/2007/07/2007073114282034189.PDF) +SIP +0 +18 +18 +Package_SIP +STK672-040-E +SIP-22 (http://www.onsemi.com/pub_link/Collateral/EN5227-D.PDF) +SIP-22 +0 +22 +22 +Package_SIP +STK672-080-E +SIP-15 (http://www.onsemi.com/pub_link/Collateral/EN6507-D.PDF) +SIP-15 +0 +15 +15 +Package_SIP +Sanyo_STK4xx-15_59.2x8.0mm_P2.54mm +Sanyo SIP-15, 59.2mm x 8.0mm bosy size, STK-433E STK-435E STK-436E (http://datasheet.octopart.com/STK430-Sanyo-datasheet-107060.pdf) +Sanyo SIP-15 +0 +15 +15 +Package_SIP +Sanyo_STK4xx-15_78.0x8.0mm_P2.54mm +Sanyo SIP-15, 78.0mm x 8.0mm bosy size, STK-437E STK-439E STK-441E STK-443E (http://datasheet.octopart.com/STK430-Sanyo-datasheet-107060.pdf) +Sanyo SIP-15 +0 +15 +15 +Package_SO +Diodes_PSOP-8 +8-Lead Plastic PSOP, Exposed Die Pad (see https://www.diodes.com/assets/Datasheets/AP2204.pdf) +SSOP 0.50 exposed pad +0 +12 +9 +Package_SO +Diodes_SO-8EP +8-Lead Plastic SO, Exposed Die Pad (see https://www.diodes.com/assets/Package-Files/SO-8EP.pdf) +SO exposed pad +0 +9 +9 +Package_SO +ETSSOP-20-1EP_4.4x6.5mm_P0.65mm_EP3x4.2mm +20-Lead Plastic Thin Shrink Small Outline (ST)-4.4 mm Body with Exposed Pad [eTSSOP] (see Microchip Packaging Specification 00000049BS.pdf) +SSOP 0.65 +0 +27 +21 +Package_SO +HSOP-8-1EP_3.9x4.9mm_P1.27mm_EP2.41x3.1mm +HSOP, 8 Pin (https://www.st.com/resource/en/datasheet/l5973d.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +HSOP SO +0 +13 +9 +Package_SO +HSOP-8-1EP_3.9x4.9mm_P1.27mm_EP2.41x3.1mm_ThermalVias +HSOP, 8 Pin (https://www.st.com/resource/en/datasheet/l5973d.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +HSOP SO +0 +20 +9 +Package_SO +HSOP-20-1EP_11.0x15.9mm_P1.27mm_SlugDown +HSOP 11.0x15.9mm Pitch 1.27mm Slug Down (PowerSO-20) [JEDEC MO-166] (http://www.st.com/resource/en/datasheet/tda7266d.pdf, www.st.com/resource/en/application_note/cd00003801.pdf) +HSOP 11.0 x 15.9mm Pitch 1.27mm +0 +23 +21 +Package_SO +HSOP-20-1EP_11.0x15.9mm_P1.27mm_SlugDown_ThermalVias +HSOP 11.0x15.9mm Pitch 1.27mm Slug Down Thermal Vias (PowerSO-20) [JEDEC MO-166] (http://www.st.com/resource/en/datasheet/tda7266d.pdf, www.st.com/resource/en/application_note/cd00003801.pdf) +HSOP 11.0 x 15.9mm Pitch 1.27mm +0 +45 +21 +Package_SO +HSOP-20-1EP_11.0x15.9mm_P1.27mm_SlugUp +HSOP 11.0x15.9mm Pitch 1.27mm Slug Up (PowerSO-20) [JEDEC MO-166] (http://www.st.com/resource/en/datasheet/tda7266d.pdf, www.st.com/resource/en/application_note/cd00003801.pdf) +HSOP 11.0 x 15.9mm Pitch 1.27mm +0 +20 +20 +Package_SO +HSOP-36-1EP_11.0x15.9mm_P0.65mm_SlugDown +HSOP 11.0x15.9mm Pitch 0.65mm Slug Down (PowerSO-36) [JEDEC MO-166] (http://www.st.com/resource/en/datasheet/vn808cm-32-e.pdf, http://www.st.com/resource/en/application_note/cd00003801.pdf) +HSOP 11.0 x 15.9mm Pitch 0.65mm +0 +39 +37 +Package_SO +HSOP-36-1EP_11.0x15.9mm_P0.65mm_SlugDown_ThermalVias +HSOP 11.0x15.9mm Pitch 0.65mm Slug Down Thermal Vias (PowerSO-36) [JEDEC MO-166] (http://www.st.com/resource/en/datasheet/vn808cm-32-e.pdf, http://www.st.com/resource/en/application_note/cd00003801.pdf) +HSOP 11.0 x 15.9mm Pitch 0.65mm +0 +61 +37 +Package_SO +HSOP-36-1EP_11.0x15.9mm_P0.65mm_SlugUp +HSOP 11.0x15.9mm Pitch 0.65mm Slug Up (PowerSO-36) [JEDEC MO-166] (http://www.st.com/resource/en/datasheet/vn808cm-32-e.pdf, http://www.st.com/resource/en/application_note/cd00003801.pdf) +HSOP 11.0 x 15.9mm Pitch 0.65mm +0 +36 +36 +Package_SO +HTSOP-8-1EP_3.9x4.9mm_P1.27mm_EP2.4x3.2mm +HTSOP, 8 Pin (https://media.digikey.com/pdf/Data%20Sheets/Rohm%20PDFs/BD9G341EFJ.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +HTSOP SO +0 +13 +9 +Package_SO +HTSOP-8-1EP_3.9x4.9mm_P1.27mm_EP2.4x3.2mm_ThermalVias +HTSOP, 8 Pin (https://media.digikey.com/pdf/Data%20Sheets/Rohm%20PDFs/BD9G341EFJ.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +HTSOP SO +0 +20 +9 +Package_SO +HTSSOP-14-1EP_4.4x5mm_P0.65mm_EP3.4x5mm_Mask3x3.1mm +HTSSOP, 14 Pin (http://www.ti.com/lit/ds/symlink/lm5161.pdf#page=34), generated with kicad-footprint-generator ipc_gullwing_generator.py +HTSSOP SO +0 +20 +15 +Package_SO +HTSSOP-14-1EP_4.4x5mm_P0.65mm_EP3.4x5mm_Mask3x3.1mm_ThermalVias +HTSSOP, 14 Pin (http://www.ti.com/lit/ds/symlink/lm5161.pdf#page=34), generated with kicad-footprint-generator ipc_gullwing_generator.py +HTSSOP SO +0 +36 +15 +Package_SO +HTSSOP-16-1EP_4.4x5mm_P0.65mm_EP3.4x5mm +16-Lead Plastic HTSSOP (4.4x5x1.2mm); Thermal pad; (http://www.ti.com/lit/ds/symlink/drv8833.pdf) +SSOP 0.65 +0 +29 +17 +Package_SO +HTSSOP-16-1EP_4.4x5mm_P0.65mm_EP3.4x5mm_Mask2.46x2.31mm +HTSSOP, 16 Pin (http://www.analog.com/media/en/technical-documentation/data-sheets/LTC7810.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +HTSSOP SO +0 +20 +17 +Package_SO +HTSSOP-16-1EP_4.4x5mm_P0.65mm_EP3.4x5mm_Mask2.46x2.31mm_ThermalVias +HTSSOP, 16 Pin (http://www.analog.com/media/en/technical-documentation/data-sheets/LTC7810.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +HTSSOP SO +0 +27 +17 +Package_SO +HTSSOP-16-1EP_4.4x5mm_P0.65mm_EP3.4x5mm_Mask3x3mm_ThermalVias +16-Lead Plastic HTSSOP (4.4x5x1.2mm); Thermal pad with vias; (http://www.ti.com/lit/ds/symlink/drv8800.pdf) +SSOP 0.65 +0 +46 +17 +Package_SO +HTSSOP-16-1EP_4.4x5mm_P0.65mm_EP3x3mm +HTSSOP, 16 Pin (https://www.st.com/resource/en/datasheet/stp08cp05.pdf#page=20), generated with kicad-footprint-generator ipc_gullwing_generator.py +HTSSOP SO +0 +21 +17 +Package_SO +HTSSOP-20-1EP_4.4x6.5mm_P0.65mm_EP2.85x4mm +HTSSOP, 20 Pin (https://pdfserv.maximintegrated.com/package_dwgs/21-0108.PDF U20E-1), generated with kicad-footprint-generator ipc_gullwing_generator.py +HTSSOP SO +0 +23 +21 +Package_SO +HTSSOP-20-1EP_4.4x6.5mm_P0.65mm_EP3.4x6.5mm +20-Lead Plastic Thin Shrink Small Outline (ST)-4.4 mm Body [HTSSOP], with thermal pad with vias +HTSSOP 0.65 +0 +29 +21 +Package_SO +HTSSOP-20-1EP_4.4x6.5mm_P0.65mm_EP3.4x6.5mm_Mask2.4x3.7mm +HTSSOP, 20 Pin (http://www.ti.com/lit/ds/symlink/bq24006.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +HTSSOP SO +0 +24 +21 +Package_SO +HTSSOP-20-1EP_4.4x6.5mm_P0.65mm_EP3.4x6.5mm_Mask2.75x3.43mm +HTSSOP, 20 Pin (http://www.ti.com/lit/ds/symlink/tlc5971.pdf#page=37&zoom=160,-90,3), generated with kicad-footprint-generator ipc_gullwing_generator.py +HTSSOP SO +0 +26 +21 +Package_SO +HTSSOP-20-1EP_4.4x6.5mm_P0.65mm_EP3.4x6.5mm_Mask2.75x3.43mm_ThermalVias +HTSSOP, 20 Pin (http://www.ti.com/lit/ds/symlink/tlc5971.pdf#page=37&zoom=160,-90,3), generated with kicad-footprint-generator ipc_gullwing_generator.py +HTSSOP SO +0 +42 +21 +Package_SO +HTSSOP-20-1EP_4.4x6.5mm_P0.65mm_EP3.4x6.5mm_Mask2.75x3.43mm_ThermalVias_HandSolder +HTSSOP, 20 Pin (http://www.ti.com/lit/ds/symlink/tlc5971.pdf#page=37&zoom=160,-90,3), generated with kicad-footprint-generator ipc_gullwing_generator.py +HTSSOP SO +0 +42 +21 +Package_SO +HTSSOP-20-1EP_4.4x6.5mm_P0.65mm_EP3.4x6.5mm_Mask2.96x2.96mm +HTSSOP, 20 Pin (https://www.ti.com/lit/ds/symlink/tps2663.pdf#page=49), generated with kicad-footprint-generator ipc_gullwing_generator.py +HTSSOP SO +0 +23 +21 +Package_SO +HTSSOP-20-1EP_4.4x6.5mm_P0.65mm_EP3.4x6.5mm_Mask2.96x2.96mm_ThermalVias +HTSSOP, 20 Pin (https://www.ti.com/lit/ds/symlink/tps2663.pdf#page=49), generated with kicad-footprint-generator ipc_gullwing_generator.py +HTSSOP SO +0 +42 +21 +Package_SO +HTSSOP-20-1EP_4.4x6.5mm_P0.65mm_EP3.4x6.5mm_ThermalVias +20-Lead Plastic Thin Shrink Small Outline (ST)-4.4 mm Body [HTSSOP], with thermal pad with vias +HTSSOP 0.65 +0 +45 +21 +Package_SO +HTSSOP-24-1EP_4.4x7.8mm_P0.65mm_EP3.2x5mm +HTSSOP, 24 Pin (https://www.st.com/resource/en/datasheet/stp16cp05.pdf#page=25), generated with kicad-footprint-generator ipc_gullwing_generator.py +HTSSOP SO +0 +31 +25 +Package_SO +HTSSOP-24-1EP_4.4x7.8mm_P0.65mm_EP3.4x7.8mm_Mask2.4x4.68mm +HTSSOP, 24 Pin (http://www.ti.com/lit/ds/symlink/tps703.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +HTSSOP SO +0 +28 +25 +Package_SO +HTSSOP-24-1EP_4.4x7.8mm_P0.65mm_EP3.4x7.8mm_Mask2.4x4.68mm_ThermalVias +HTSSOP, 24 Pin (http://www.ti.com/lit/ds/symlink/tps703.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +HTSSOP SO +0 +47 +25 +Package_SO +HTSSOP-28-1EP_4.4x9.7mm_P0.65mm_EP2.85x5.4mm +HTSSOP, 28 Pin (https://pdfserv.maximintegrated.com/package_dwgs/21-0108.PDF), generated with kicad-footprint-generator ipc_gullwing_generator.py +HTSSOP SO +0 +30 +29 +Package_SO +HTSSOP-28-1EP_4.4x9.7mm_P0.65mm_EP2.85x5.4mm_ThermalVias +HTSSOP, 28 Pin (https://pdfserv.maximintegrated.com/package_dwgs/21-0108.PDF), generated with kicad-footprint-generator ipc_gullwing_generator.py +HTSSOP SO +0 +41 +29 +Package_SO +HTSSOP-28-1EP_4.4x9.7mm_P0.65mm_EP3.4x9.5mm +HTSSOP28: plastic thin shrink small outline package; 28 leads; body width 4.4 mm; thermal pad +TSSOP HTSSOP 0.65 thermal pad +0 +39 +29 +Package_SO +HTSSOP-28-1EP_4.4x9.7mm_P0.65mm_EP3.4x9.5mm_Mask2.4x6.17mm +HTSSOP28: plastic thin shrink small outline package; 28 leads; body width 4.4 mm; thermal pad +TSSOP HTSSOP 0.65 thermal pad +0 +40 +29 +Package_SO +HTSSOP-28-1EP_4.4x9.7mm_P0.65mm_EP3.4x9.5mm_Mask2.4x6.17mm_ThermalVias +HTSSOP28: plastic thin shrink small outline package; 28 leads; body width 4.4 mm; thermal pad +TSSOP HTSSOP 0.65 thermal pad +0 +55 +29 +Package_SO +HTSSOP-28-1EP_4.4x9.7mm_P0.65mm_EP3.4x9.5mm_ThermalVias +HTSSOP28: plastic thin shrink small outline package; 28 leads; body width 4.4 mm; thermal pad +TSSOP HTSSOP 0.65 thermal pad +0 +58 +29 +Package_SO +HTSSOP-32-1EP_6.1x11mm_P0.65mm_EP5.2x11mm_Mask4.11x4.36mm +HTSSOP32: plastic thin shrink small outline package; 32 leads; body width 6.1 mm; lead pitch 0.65 mm (see NXP SSOP-TSSOP-VSO-REFLOW.pdf and sot487-1_po.pdf) +SSOP 0.65 PowerPAD +0 +43 +33 +Package_SO +HTSSOP-32-1EP_6.1x11mm_P0.65mm_EP5.2x11mm_Mask4.11x4.36mm_ThermalVias +HTSSOP32: plastic thin shrink small outline package; 32 leads; body width 6.1 mm; lead pitch 0.65 mm (see NXP SSOP-TSSOP-VSO-REFLOW.pdf and sot487-1_po.pdf) +SSOP 0.65 PowerPAD +0 +83 +33 +Package_SO +HTSSOP-38-1EP_6.1x12.5mm_P0.65mm_EP5.2x12.5mm_Mask3.39x6.35mm +HTSSOP, 38 Pin (http://www.ti.com/lit/ds/symlink/tlc5951.pdf#page=47&zoom=140,-67,15), generated with kicad-footprint-generator ipc_gullwing_generator.py +HTSSOP SO +0 +46 +39 +Package_SO +HTSSOP-38-1EP_6.1x12.5mm_P0.65mm_EP5.2x12.5mm_Mask3.39x6.35mm_ThermalVias +HTSSOP, 38 Pin (http://www.ti.com/lit/ds/symlink/tlc5951.pdf#page=47&zoom=140,-67,15), generated with kicad-footprint-generator ipc_gullwing_generator.py +HTSSOP SO +0 +87 +39 +Package_SO +HTSSOP-56-1EP_6.1x14mm_P0.5mm_EP3.61x6.35mm +HTSSOP56: plastic thin shrink small outline package http://www.ti.com/lit/ds/symlink/drv8301.pdf +HTSSOP 0.5 +0 +72 +57 +Package_SO +Infineon_PG-DSO-8-27_3.9x4.9mm_EP2.65x3mm +Infineon PG-DSO, 8 Pin (https://www.infineon.com/cms/en/product/packages/PG-DSO/PG-DSO-8-27), generated with kicad-footprint-generator ipc_gullwing_generator.py +Infineon PG-DSO SO +0 +13 +9 +Package_SO +Infineon_PG-DSO-8-27_3.9x4.9mm_EP2.65x3mm_ThermalVias +Infineon PG-DSO, 8 Pin (https://www.infineon.com/cms/en/product/packages/PG-DSO/PG-DSO-8-27), generated with kicad-footprint-generator ipc_gullwing_generator.py +Infineon PG-DSO SO +0 +23 +9 +Package_SO +Infineon_PG-DSO-8-43 +Infineon_PG-DSO-8-43 +DSO DSO-8 SOIC SOIC-8 +0 +12 +9 +Package_SO +Infineon_PG-DSO-12-9 +Infineon PG-DSO 12 pin, exposed pad: 4.5x8.1mm, with thermal vias (https://www.infineon.com/cms/en/product/packages/PG-DSO/PG-DSO-12-9/) +PG-DSO +0 +23 +13 +Package_SO +Infineon_PG-DSO-12-9_ThermalVias +Infineon PG-DSO 12 pin, exposed pad: 4.5x8.1mm, with thermal vias (https://www.infineon.com/cms/en/product/packages/PG-DSO/PG-DSO-12-9/) +PG-DSO +0 +42 +13 +Package_SO +Infineon_PG-DSO-12-11 +Infineon PG-DSO 12 pin, exposed pad: 4.5x8.1mm, with thermal vias (https://www.infineon.com/cms/en/product/packages/PG-DSO/PG-DSO-12-11/) +PG-DSO +0 +23 +13 +Package_SO +Infineon_PG-DSO-12-11_ThermalVias +Infineon PG-DSO 12 pin, exposed pad: 4.5x8.1mm, with thermal vias (https://www.infineon.com/cms/en/product/packages/PG-DSO/PG-DSO-12-11/) +PG-DSO +0 +42 +13 +Package_SO +Infineon_PG-DSO-20-30 +Infineon SO package 20pin, exposed pad 4.5x7mm (https://www.infineon.com/cms/en/product/packages/PG-DSO/PG-DSO-20-71/) +DSO-20 +0 +31 +21 +Package_SO +Infineon_PG-DSO-20-30_ThermalVias +Infineon SO package 20pin, exposed pad 4.5x7mm (https://www.infineon.com/cms/en/product/packages/PG-DSO/PG-DSO-20-71/) +DSO-20 +0 +45 +21 +Package_SO +Infineon_PG-DSO-20-32 +Infineon SO package 20pin without exposed pad (https://www.infineon.com/cms/en/product/packages/PG-DSO/PG-DSO-20-32/) +DSO-20 +0 +20 +20 +Package_SO +Infineon_PG-DSO-20-85 +Infineon SO package 20pin with exposed pad (https://www.infineon.com/cms/en/product/packages/PG-DSO/PG-DSO-20-85/) +DSO-20 +0 +31 +21 +Package_SO +Infineon_PG-DSO-20-85_ThermalVias +Infineon SO package 20pin with exposed pad (https://www.infineon.com/cms/en/product/packages/PG-DSO/PG-DSO-20-85/) +DSO-20 +0 +113 +21 +Package_SO +Infineon_PG-DSO-20-87 +Infineon SO package 20pin without exposed pad (https://www.infineon.com/cms/en/product/packages/PG-DSO/PG-DSO-20-87/) +DSO-20 +0 +20 +20 +Package_SO +Infineon_PG-TSDSO-14-22 +Infineon_PG-TSDSO-14-22 +Infineon TSDSO 14-22 +0 +17 +15 +Package_SO +Linear_MSOP-12-16-1EP_3x4mm_P0.5mm +12-Lead Plastic Micro Small Outline Package (MS) [MSOP], variant of MSOP-16 (see http://cds.linear.com/docs/en/datasheet/3630fd.pdf) +SSOP 0.5 +0 +15 +13 +Package_SO +Linear_MSOP-12-16_3x4mm_P0.5mm +12-Lead Plastic Micro Small Outline Package (MS) [MSOP], variant of MSOP-16 (see https://www.analog.com/media/en/technical-documentation/data-sheets/3748fb.pdf) +SSOP 0.5 +0 +12 +12 +Package_SO +MFSOP6-4_4.4x3.6mm_P1.27mm +https://toshiba.semicon-storage.com/ap-en/design-support/package/detail.4pin%20MFSOP6.html +MFSOP 4 pin SMD +0 +4 +4 +Package_SO +MFSOP6-5_4.4x3.6mm_P1.27mm +https://toshiba.semicon-storage.com/ap-en/design-support/package/detail.5pin%20MFSOP6.html +MFSOP 4 pin SMD +0 +5 +5 +Package_SO +MSOP-8-1EP_3x3mm_P0.65mm_EP1.68x1.88mm +MSOP, 8 Pin (https://www.analog.com/media/en/technical-documentation/data-sheets/4440fb.pdf#page=13), generated with kicad-footprint-generator ipc_gullwing_generator.py +MSOP SO +0 +13 +9 +Package_SO +MSOP-8-1EP_3x3mm_P0.65mm_EP1.68x1.88mm_ThermalVias +MSOP, 8 Pin (https://www.analog.com/media/en/technical-documentation/data-sheets/4440fb.pdf#page=13), generated with kicad-footprint-generator ipc_gullwing_generator.py +MSOP SO +0 +18 +9 +Package_SO +MSOP-8-1EP_3x3mm_P0.65mm_EP1.73x1.85mm +MSOP, 8 Pin (http://www.ti.com/lit/ds/symlink/lm25085.pdf#page=32), generated with kicad-footprint-generator ipc_gullwing_generator.py +MSOP SO +0 +13 +9 +Package_SO +MSOP-8-1EP_3x3mm_P0.65mm_EP1.73x1.85mm_ThermalVias +MSOP, 8 Pin (http://www.ti.com/lit/ds/symlink/lm25085.pdf#page=32), generated with kicad-footprint-generator ipc_gullwing_generator.py +MSOP SO +0 +18 +9 +Package_SO +MSOP-8-1EP_3x3mm_P0.65mm_EP1.95x2.15mm +MSOP, 8 Pin (http://www.st.com/resource/en/datasheet/pm8834.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +MSOP SO +0 +13 +9 +Package_SO +MSOP-8-1EP_3x3mm_P0.65mm_EP1.95x2.15mm_ThermalVias +MSOP, 8 Pin (http://www.st.com/resource/en/datasheet/pm8834.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +MSOP SO +0 +18 +9 +Package_SO +MSOP-8-1EP_3x3mm_P0.65mm_EP2.5x3mm_Mask1.73x2.36mm +MSOP, 8 Pin (http://ww1.microchip.com/downloads/en/DeviceDoc/mic5355_6.pdf#page=15), generated with kicad-footprint-generator ipc_gullwing_generator.py +MSOP SO +0 +14 +9 +Package_SO +MSOP-8-1EP_3x3mm_P0.65mm_EP2.5x3mm_Mask1.73x2.36mm_ThermalVias +MSOP, 8 Pin (http://ww1.microchip.com/downloads/en/DeviceDoc/mic5355_6.pdf#page=15), generated with kicad-footprint-generator ipc_gullwing_generator.py +MSOP SO +0 +19 +9 +Package_SO +MSOP-8_3x3mm_P0.65mm +MSOP, 8 Pin (https://www.jedec.org/system/files/docs/mo-187F.pdf variant AA), generated with kicad-footprint-generator ipc_gullwing_generator.py +MSOP SO +0 +8 +8 +Package_SO +MSOP-10-1EP_3x3mm_P0.5mm_EP1.68x1.88mm +MSOP, 10 Pin (https://www.analog.com/media/en/technical-documentation/data-sheets/3805fg.pdf#page=18), generated with kicad-footprint-generator ipc_gullwing_generator.py +MSOP SO +0 +15 +11 +Package_SO +MSOP-10-1EP_3x3mm_P0.5mm_EP1.68x1.88mm_ThermalVias +MSOP, 10 Pin (https://www.analog.com/media/en/technical-documentation/data-sheets/3805fg.pdf#page=18), generated with kicad-footprint-generator ipc_gullwing_generator.py +MSOP SO +0 +20 +11 +Package_SO +MSOP-10-1EP_3x3mm_P0.5mm_EP1.73x1.98mm +MSOP, 10 Pin (www.allegromicro.com/~/media/Files/Datasheets/A4952-3-Datasheet.ashx?la=en#page=10), generated with kicad-footprint-generator ipc_gullwing_generator.py +MSOP SO +0 +15 +11 +Package_SO +MSOP-10-1EP_3x3mm_P0.5mm_EP1.73x1.98mm_ThermalVias +MSOP, 10 Pin (www.allegromicro.com/~/media/Files/Datasheets/A4952-3-Datasheet.ashx?la=en#page=10), generated with kicad-footprint-generator ipc_gullwing_generator.py +MSOP SO +0 +20 +11 +Package_SO +MSOP-10_3x3mm_P0.5mm +10-Lead Plastic Micro Small Outline Package (MS) [MSOP] (see Microchip Packaging Specification 00000049BS.pdf) +SSOP 0.5 +0 +10 +10 +Package_SO +MSOP-12-1EP_3x4mm_P0.65mm_EP1.65x2.85mm +MSOP, 12 Pin (https://www.analog.com/media/en/technical-documentation/data-sheets/3652fe.pdf#page=24), generated with kicad-footprint-generator ipc_gullwing_generator.py +MSOP SO +0 +17 +13 +Package_SO +MSOP-12-1EP_3x4mm_P0.65mm_EP1.65x2.85mm_ThermalVias +MSOP, 12 Pin (https://www.analog.com/media/en/technical-documentation/data-sheets/3652fe.pdf#page=24), generated with kicad-footprint-generator ipc_gullwing_generator.py +MSOP SO +0 +24 +13 +Package_SO +MSOP-12-16-1EP_3x4mm_P0.5mm_EP1.65x2.85mm +10-Lead Plastic Micro Small Outline Package (MS) [MSOP] (see Microchip Packaging Specification 00000049BS.pdf) +SSOP 0.5 +0 +19 +13 +Package_SO +MSOP-12-16-1EP_3x4mm_P0.5mm_EP1.65x2.85mm_ThermalVias +10-Lead Plastic Micro Small Outline Package (MS) [MSOP] (see Microchip Packaging Specification 00000049BS.pdf) +SSOP 0.5 +0 +25 +13 +Package_SO +MSOP-12-16_3x4mm_P0.5mm +10-Lead Plastic Micro Small Outline Package (MS) [MSOP] (see Microchip Packaging Specification 00000049BS.pdf) +SSOP 0.5 +0 +12 +12 +Package_SO +MSOP-12_3x4mm_P0.65mm +MSOP, 12 Pin (https://www.analog.com/media/en/technical-documentation/data-sheets/6957fb.pdf#page=36), generated with kicad-footprint-generator ipc_gullwing_generator.py +MSOP SO +0 +12 +12 +Package_SO +MSOP-16-1EP_3x4.039mm_P0.5mm_EP1.651x2.845mm +MSOP, 16 Pin (https://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/ltc-legacy-msop/05081667_F_MSE16.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +MSOP SO +0 +21 +17 +Package_SO +MSOP-16-1EP_3x4.039mm_P0.5mm_EP1.651x2.845mm_ThermalVias +MSOP, 16 Pin (https://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/ltc-legacy-msop/05081667_F_MSE16.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +MSOP SO +0 +28 +17 +Package_SO +MSOP-16-1EP_3x4mm_P0.5mm_EP1.65x2.85mm +MSOP, 16 Pin (http://cds.linear.com/docs/en/datasheet/37551fd.pdf#page=23), generated with kicad-footprint-generator ipc_gullwing_generator.py +MSOP SO +0 +21 +17 +Package_SO +MSOP-16-1EP_3x4mm_P0.5mm_EP1.65x2.85mm_ThermalVias +MSOP, 16 Pin (http://cds.linear.com/docs/en/datasheet/37551fd.pdf#page=23), generated with kicad-footprint-generator ipc_gullwing_generator.py +MSOP SO +0 +28 +17 +Package_SO +MSOP-16_3x4.039mm_P0.5mm +MSOP, 16 Pin (http://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/ltc-legacy-msop/05081669_A_MS16.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +MSOP SO +0 +16 +16 +Package_SO +MSOP-16_3x4mm_P0.5mm +MSOP, 16 Pin (https://www.analog.com/media/en/technical-documentation/data-sheets/436412f.pdf#page=22), generated with kicad-footprint-generator ipc_gullwing_generator.py +MSOP SO +0 +16 +16 +Package_SO +ONSemi_SO-8FL_488AA +ON Semi DFN5 5x6mm 1.27P SO-8FL CASE 488A https://www.onsemi.com/pub/Collateral/488AA.PDF +ON Semi DFN5 5x6mm 1.27P SO-8FL CASE 488A +0 +5 +5 +Package_SO +OnSemi_Micro8 +ON Semiconductor Micro8 (Case846A-02): https://www.onsemi.com/pub/Collateral/846A-02.PDF +micro8 +0 +8 +8 +Package_SO +PSOP-44_16.9x27.17mm_P1.27mm +PSOP44: plastic thin shrink small outline package; 44 leads; body width 16.90 mm +PSOP 1.27 +0 +44 +44 +Package_SO +PowerIntegrations_SO-8 +Power-Integrations variant of 8-Lead Plastic Small Outline (SN) - Narrow, 3.90 mm Body [SOIC], see https://ac-dc.power.com/sites/default/files/product-docs/senzero_family_datasheet.pdf +SOIC 1.27 +0 +8 +8 +Package_SO +PowerIntegrations_SO-8B +Power-Integrations variant of 8-Lead Plastic Small Outline (SN) - Narrow, 3.90 mm Body [SOIC], see https://www.mouser.com/ds/2/328/linkswitch-pl_family_datasheet-12517.pdf +SOIC 1.27 +0 +7 +7 +Package_SO +PowerIntegrations_SO-8C +Power-Integrations variant of 8-Lead Plastic Small Outline (SN) - Narrow, 3.90 mm Body [SOIC], see https://www.mouser.com/ds/2/328/linkswitch-pl_family_datasheet-12517.pdf +SOIC 1.27 +0 +7 +7 +Package_SO +PowerIntegrations_eSOP-12B +eSOP-12B SMT Flat Package with Heatsink Tab, see https://ac-dc.power.com/sites/default/files/product-docs/topswitch-jx_family_datasheet.pdf +Power Integrations K Package +0 +12 +12 +Package_SO +PowerPAK_SO-8_Dual +PowerPAK SO-8 Dual (https://www.vishay.com/docs/71655/powerpak.pdf, https://www.vishay.com/docs/72600/72600.pdf) +PowerPAK SO-8 Dual +0 +10 +6 +Package_SO +PowerPAK_SO-8_Single +PowerPAK SO-8 Single (https://www.vishay.com/docs/71655/powerpak.pdf, https://www.vishay.com/docs/72599/72599.pdf) +PowerPAK SO-8 Single +0 +9 +5 +Package_SO +QSOP-16_3.9x4.9mm_P0.635mm +16-Lead Plastic Shrink Small Outline Narrow Body (QR)-.150" Body [QSOP] (see Microchip Packaging Specification 00000049BS.pdf) +SSOP 0.635 +0 +16 +16 +Package_SO +QSOP-20_3.9x8.7mm_P0.635mm +20-Lead Plastic Shrink Small Outline Narrow Body (http://www.analog.com/media/en/technical-documentation/data-sheets/ADuM7640_7641_7642_7643.pdf) +QSOP 0.635 +0 +20 +20 +Package_SO +QSOP-24_3.9x8.7mm_P0.635mm +24-Lead Plastic Shrink Small Outline Narrow Body (QR)-.150" Body [QSOP] (see Microchip Packaging Specification 00000049CH.pdf) +QSOP 0.635 +0 +24 +24 +Package_SO +SC-74-6_1.5x2.9mm_P0.95mm +SC-74, 6 Pin (https://www.nxp.com/docs/en/package-information/SOT457.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +SC-74 SO +0 +6 +6 +Package_SO +SO-4_4.4x2.3mm_P1.27mm +4-Lead Plastic Small Outline (SO), see http://datasheet.octopart.com/OPIA403BTRE-Optek-datasheet-5328560.pdf +SO SOIC 1.27 +0 +4 +4 +Package_SO +SO-4_4.4x3.6mm_P2.54mm +4-Lead Plastic Small Outline (SO), see https://www.elpro.org/de/index.php?controller=attachment&id_attachment=339 +SO SOIC 2.54 +0 +4 +4 +Package_SO +SO-4_4.4x3.9mm_P2.54mm +SO, 4 Pin (https://toshiba.semicon-storage.com/info/docget.jsp?did=10047&prodName=TLP3123), generated with kicad-footprint-generator ipc_gullwing_generator.py +SO SO +0 +4 +4 +Package_SO +SO-4_4.4x4.3mm_P2.54mm +4-Lead Plastic Small Outline (SO), see https://docs.broadcom.com/docs/AV02-0173EN +SO SOIC 2.54 +0 +4 +4 +Package_SO +SO-4_7.6x3.6mm_P2.54mm +4-Lead Plastic Small Outline (SO) (http://www.everlight.com/file/ProductFile/201407061745083848.pdf) +SO SOIC 2.54 +0 +4 +4 +Package_SO +SO-5_4.4x3.6mm_P1.27mm +5-Lead Plastic Small Outline (SO), see https://docs.broadcom.com/cs/Satellite?blobcol=urldata&blobheader=application%2Fpdf&blobheadername1=Content-Disposition&blobheadername2=Content-Type&blobheadername3=MDT-Type&blobheadervalue1=attachment%3Bfilename%3DIPD-Selection-Guide_AV00-0254EN_030617.pdf&blobheadervalue2=application%2Fx-download&blobheadervalue3=abinary%253B%2Bcharset%253DUTF-8&blobkey=id&blobnocache=true&blobtable=MungoBlobs&blobwhere=1430884105675&ssbinary=true +SO SOIC 1.27 +0 +5 +5 +Package_SO +SO-6L_10x3.84mm_P1.27mm +6-pin plasic small outline 7,5mm long https://toshiba.semicon-storage.com/info/docget.jsp?did=53548&prodName=TLP2770 +SO-6L +0 +6 +6 +Package_SO +SO-6_4.4x3.6mm_P1.27mm +6-Lead Plastic Small Outline (SO), see https://docs.broadcom.com/cs/Satellite?blobcol=urldata&blobheader=application%2Fpdf&blobheadername1=Content-Disposition&blobheadername2=Content-Type&blobheadername3=MDT-Type&blobheadervalue1=attachment%3Bfilename%3DIPD-Selection-Guide_AV00-0254EN_030617.pdf&blobheadervalue2=application%2Fx-download&blobheadervalue3=abinary%253B%2Bcharset%253DUTF-8&blobkey=id&blobnocache=true&blobtable=MungoBlobs&blobwhere=1430884105675&ssbinary=true +SO SOIC 1.27 +0 +6 +6 +Package_SO +SO-8_3.9x4.9mm_P1.27mm +SO, 8 Pin (https://www.nxp.com/docs/en/data-sheet/PCF8523.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +SO SO +0 +8 +8 +Package_SO +SO-8_5.3x6.2mm_P1.27mm +SO, 8 Pin (https://www.ti.com/lit/ml/msop001a/msop001a.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +SO SO +0 +8 +8 +Package_SO +SO-14_3.9x8.65mm_P1.27mm +SO, 14 Pin (https://www.st.com/resource/en/datasheet/l6491.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +SO SO +0 +14 +14 +Package_SO +SO-14_5.3x10.2mm_P1.27mm +SO, 14 Pin (https://www.ti.com/lit/ml/msop002a/msop002a.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +SO SO +0 +14 +14 +Package_SO +SO-16_3.9x9.9mm_P1.27mm +SO, 16 Pin (https://www.nxp.com/docs/en/package-information/SOT109-1.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +SO SO +0 +16 +16 +Package_SO +SO-16_5.3x10.2mm_P1.27mm +SO, 16 Pin (https://www.ti.com/lit/ml/msop002a/msop002a.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +SO SO +0 +16 +16 +Package_SO +SO-20-1EP_7.52x12.825mm_P1.27mm_EP6.045x12.09mm_Mask3.56x4.47mm +SO, 20 Pin (http://www.ti.com/lit/ds/symlink/opa569.pdf, http://www.ti.com/lit/an/slma004b/slma004b.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +SO SO +0 +23 +21 +Package_SO +SO-20-1EP_7.52x12.825mm_P1.27mm_EP6.045x12.09mm_Mask3.56x4.47mm_ThermalVias +SO, 20 Pin (http://www.ti.com/lit/ds/symlink/opa569.pdf, http://www.ti.com/lit/an/slma004b/slma004b.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +SO SO +0 +51 +21 +Package_SO +SO-20_5.3x12.6mm_P1.27mm +SO, 20 Pin (https://www.ti.com/lit/ml/msop002a/msop002a.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +SO SO +0 +20 +20 +Package_SO +SO-20_12.8x7.5mm_P1.27mm +SO-20, 12.8x7.5mm, https://www.nxp.com/docs/en/data-sheet/SA605.pdf +S0-20 +0 +20 +20 +Package_SO +SO-24_5.3x15mm_P1.27mm +SO, 24 Pin (https://www.ti.com/lit/ml/msop002a/msop002a.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +SO SO +0 +24 +24 +Package_SO +SOIC-4_4.55x2.6mm_P1.27mm +SOIC, 4 Pin (https://toshiba.semicon-storage.com/info/docget.jsp?did=12884&prodName=TLP291), generated with kicad-footprint-generator ipc_gullwing_generator.py +SOIC SO +0 +4 +4 +Package_SO +SOIC-4_4.55x3.7mm_P2.54mm +SOIC, 6 Pin (https://toshiba.semicon-storage.com/info/docget.jsp?did=11791&prodName=TLP185), generated with kicad-footprint-generator ipc_gullwing_generator.py +SOIC SO +0 +4 +4 +Package_SO +SOIC-8-1EP_3.9x4.9mm_P1.27mm_EP2.29x3mm +SOIC, 8 Pin (https://www.analog.com/media/en/technical-documentation/data-sheets/ada4898-1_4898-2.pdf#page=29), generated with kicad-footprint-generator ipc_gullwing_generator.py +SOIC SO +0 +13 +9 +Package_SO +SOIC-8-1EP_3.9x4.9mm_P1.27mm_EP2.29x3mm_ThermalVias +SOIC, 8 Pin (https://www.analog.com/media/en/technical-documentation/data-sheets/ada4898-1_4898-2.pdf#page=29), generated with kicad-footprint-generator ipc_gullwing_generator.py +SOIC SO +0 +20 +9 +Package_SO +SOIC-8-1EP_3.9x4.9mm_P1.27mm_EP2.41x3.3mm +SOIC, 8 Pin (http://www.allegromicro.com/~/media/Files/Datasheets/A4950-Datasheet.ashx#page=8), generated with kicad-footprint-generator ipc_gullwing_generator.py +SOIC SO +0 +13 +9 +Package_SO +SOIC-8-1EP_3.9x4.9mm_P1.27mm_EP2.41x3.3mm_ThermalVias +SOIC, 8 Pin (http://www.allegromicro.com/~/media/Files/Datasheets/A4950-Datasheet.ashx#page=8), generated with kicad-footprint-generator ipc_gullwing_generator.py +SOIC SO +0 +20 +9 +Package_SO +SOIC-8-1EP_3.9x4.9mm_P1.27mm_EP2.41x3.81mm +SOIC, 8 Pin (https://www.analog.com/media/en/technical-documentation/data-sheets/ada4898-1_4898-2.pdf#page=29), generated with kicad-footprint-generator ipc_gullwing_generator.py +SOIC SO +0 +13 +9 +Package_SO +SOIC-8-1EP_3.9x4.9mm_P1.27mm_EP2.41x3.81mm_ThermalVias +SOIC, 8 Pin (https://www.analog.com/media/en/technical-documentation/data-sheets/ada4898-1_4898-2.pdf#page=29), generated with kicad-footprint-generator ipc_gullwing_generator.py +SOIC SO +0 +20 +9 +Package_SO +SOIC-8-1EP_3.9x4.9mm_P1.27mm_EP2.95x4.9mm_Mask2.71x3.4mm +SOIC, 8 Pin (http://www.ti.com/lit/ds/symlink/lm5017.pdf#page=31), generated with kicad-footprint-generator ipc_gullwing_generator.py +SOIC SO +0 +14 +9 +Package_SO +SOIC-8-1EP_3.9x4.9mm_P1.27mm_EP2.95x4.9mm_Mask2.71x3.4mm_ThermalVias +SOIC, 8 Pin (http://www.ti.com/lit/ds/symlink/lm5017.pdf#page=31), generated with kicad-footprint-generator ipc_gullwing_generator.py +SOIC SO +0 +23 +9 +Package_SO +SOIC-8-1EP_3.9x4.9mm_P1.27mm_EP2.514x3.2mm +SOIC, 8 Pin (https://www.renesas.com/eu/en/www/doc/datasheet/hip2100.pdf#page=13), generated with kicad-footprint-generator ipc_gullwing_generator.py +SOIC SO +0 +13 +9 +Package_SO +SOIC-8-1EP_3.9x4.9mm_P1.27mm_EP2.514x3.2mm_ThermalVias +SOIC, 8 Pin (https://www.renesas.com/eu/en/www/doc/datasheet/hip2100.pdf#page=13), generated with kicad-footprint-generator ipc_gullwing_generator.py +SOIC SO +0 +20 +9 +Package_SO +SOIC-8-N7_3.9x4.9mm_P1.27mm +8-Lead Plastic Small Outline (SN) - Narrow, 3.90 mm Body [SOIC], pin 7 removed (Microchip Packaging Specification 00000049BS.pdf, http://www.onsemi.com/pub/Collateral/NCP1207B.PDF) +SOIC 1.27 +0 +7 +7 +Package_SO +SOIC-8_3.9x4.9mm_P1.27mm +SOIC, 8 Pin (JEDEC MS-012AA, https://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/soic_narrow-r/r_8.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +SOIC SO +0 +8 +8 +Package_SO +SOIC-8_5.23x5.23mm_P1.27mm +SOIC, 8 Pin (http://www.winbond.com/resource-files/w25q32jv%20revg%2003272018%20plus.pdf#page=68), generated with kicad-footprint-generator ipc_gullwing_generator.py +SOIC SO +0 +8 +8 +Package_SO +SOIC-8_5.275x5.275mm_P1.27mm +SOIC, 8 Pin (http://ww1.microchip.com/downloads/en/DeviceDoc/20005045C.pdf#page=23), generated with kicad-footprint-generator ipc_gullwing_generator.py +SOIC SO +0 +8 +8 +Package_SO +SOIC-8_7.5x5.85mm_P1.27mm +SOIC, 8 Pin (http://www.ti.com/lit/ml/mpds382b/mpds382b.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +SOIC SO +0 +8 +8 +Package_SO +SOIC-14-16_3.9x9.9mm_P1.27mm +SOIC, 16 Pin package with pin 2 and 13 removed for voltage clearance (UCC256301, https://www.ti.com/lit/ds/symlink/ucc256301.pdf) +SOIC SO +0 +14 +14 +Package_SO +SOIC-14W_7.5x9mm_P1.27mm +SOIC, 14 Pin (JEDEC MS-013AF, https://www.analog.com/media/en/package-pcb-resources/package/54614177245586rw_14.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +SOIC SO +0 +14 +14 +Package_SO +SOIC-14_3.9x8.7mm_P1.27mm +SOIC, 14 Pin (JEDEC MS-012AB, https://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/soic_narrow-r/r_14.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +SOIC SO +0 +14 +14 +Package_SO +SOIC-16W-12_7.5x10.3mm_P1.27mm +SOIC-16 With 12 Pin Placed - Wide, 7.50 mm Body [SOIC] (https://docs.broadcom.com/docs/AV02-0169EN) +SOIC 1.27 16 12 Wide +0 +12 +12 +Package_SO +SOIC-16W_5.3x10.2mm_P1.27mm +16-Lead Plastic Small Outline (SO) - Wide, 5.3 mm Body (http://www.ti.com/lit/ml/msop002a/msop002a.pdf) +SOIC 1.27 +0 +16 +16 +Package_SO +SOIC-16W_7.5x10.3mm_P1.27mm +SOIC, 16 Pin (JEDEC MS-013AA, https://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/soic_wide-rw/rw_16.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +SOIC SO +0 +16 +16 +Package_SO +SOIC-16W_7.5x12.8mm_P1.27mm +SOIC, 16 Pin (https://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/ri_soic_ic/ri_16_1.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +SOIC SO +0 +16 +16 +Package_SO +SOIC-16_3.9x9.9mm_P1.27mm +SOIC, 16 Pin (JEDEC MS-012AC, https://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/soic_narrow-r/r_16.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +SOIC SO +0 +16 +16 +Package_SO +SOIC-16_4.55x10.3mm_P1.27mm +SOIC, 16 Pin (https://toshiba.semicon-storage.com/info/docget.jsp?did=12858&prodName=TLP291-4), generated with kicad-footprint-generator ipc_gullwing_generator.py +SOIC SO +0 +16 +16 +Package_SO +SOIC-18W_7.5x11.6mm_P1.27mm +SOIC, 18 Pin (JEDEC MS-013AB, https://www.analog.com/media/en/package-pcb-resources/package/33254132129439rw_18.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +SOIC SO +0 +18 +18 +Package_SO +SOIC-20W_7.5x12.8mm_P1.27mm +SOIC, 20 Pin (JEDEC MS-013AC, https://www.analog.com/media/en/package-pcb-resources/package/233848rw_20.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +SOIC SO +0 +20 +20 +Package_SO +SOIC-24W_7.5x15.4mm_P1.27mm +SOIC, 24 Pin (JEDEC MS-013AD, https://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/soic_wide-rw/RW_24.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +SOIC SO +0 +24 +24 +Package_SO +SOIC-28W_7.5x17.9mm_P1.27mm +SOIC, 28 Pin (JEDEC MS-013AE, https://www.analog.com/media/en/package-pcb-resources/package/35833120341221rw_28.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +SOIC SO +0 +28 +28 +Package_SO +SOIC-28W_7.5x18.7mm_P1.27mm +SOIC, 28 Pin (https://www.akm.com/akm/en/file/datasheet/AK5394AVS.pdf#page=23), generated with kicad-footprint-generator ipc_gullwing_generator.py +SOIC SO +0 +28 +28 +Package_SO +SOIJ-8_5.3x5.3mm_P1.27mm +8-Lead Plastic Small Outline (SM) - Medium, 5.28 mm Body [SOIC] (see Microchip Packaging Specification 00000049BS.pdf) +SOIC 1.27 +0 +8 +8 +Package_SO +SOJ-36_10.16x23.49mm_P1.27mm +SOJ, 36 Pin (http://www.issi.com/WW/pdf/61-64C5128AL.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +SOJ SO +0 +36 +36 +Package_SO +SOP-4_3.8x4.1mm_P2.54mm +SOP, 4 Pin (http://www.ixysic.com/home/pdfs.nsf/www/CPC1017N.pdf/$file/CPC1017N.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +SOP SO +0 +4 +4 +Package_SO +SOP-4_4.4x2.6mm_P1.27mm +SOP, 4 Pin (http://www.vishay.com/docs/83510/tcmt1100.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +SOP SO +0 +4 +4 +Package_SO +SOP-8-1EP_4.57x4.57mm_P1.27mm_EP4.57x4.45mm +SOP, 8 Pin (https://ww2.minicircuits.com/case_style/XX112.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +SOP SO +0 +13 +9 +Package_SO +SOP-8-1EP_4.57x4.57mm_P1.27mm_EP4.57x4.45mm_ThermalVias +SOP, 8 Pin (https://ww2.minicircuits.com/case_style/XX112.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +SOP SO +0 +20 +9 +Package_SO +SOP-8_3.9x4.9mm_P1.27mm +SOP, 8 Pin (http://www.macronix.com/Lists/Datasheet/Attachments/7534/MX25R3235F,%20Wide%20Range,%2032Mb,%20v1.6.pdf#page=79), generated with kicad-footprint-generator ipc_gullwing_generator.py +SOP SO +0 +8 +8 +Package_SO +SOP-8_3.76x4.96mm_P1.27mm +SOP, 8 Pin (https://ww2.minicircuits.com/case_style/XX211.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +SOP SO +0 +8 +8 +Package_SO +SOP-8_5.28x5.23mm_P1.27mm +SOP, 8 Pin (http://www.macronix.com/Lists/Datasheet/Attachments/7534/MX25R3235F,%20Wide%20Range,%2032Mb,%20v1.6.pdf#page=80), generated with kicad-footprint-generator ipc_gullwing_generator.py +SOP SO +0 +8 +8 +Package_SO +SOP-8_6.62x9.15mm_P2.54mm +SOP, 8 Pin (http://www.ti.com/lit/ds/symlink/iso1050.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +SOP SO +0 +8 +8 +Package_SO +SOP-16_3.9x9.9mm_P1.27mm +SOP, 16 Pin (https://www.diodes.com/assets/Datasheets/PAM8403.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +SOP SO +0 +16 +16 +Package_SO +SOP-16_4.4x10.4mm_P1.27mm +16-Lead Plastic Small Outline http://www.vishay.com/docs/49633/sg2098.pdf +SOP 1.27 +0 +16 +16 +Package_SO +SOP-16_4.55x10.3mm_P1.27mm +SOP, 16 Pin (https://toshiba.semicon-storage.com/info/docget.jsp?did=12855&prodName=TLP290-4), generated with kicad-footprint-generator ipc_gullwing_generator.py +SOP SO +0 +16 +16 +Package_SO +SOP-18_7x12.5mm_P1.27mm +SOP, 18 Pin (https://toshiba.semicon-storage.com/info/docget.jsp?did=30523), generated with kicad-footprint-generator ipc_gullwing_generator.py +SOP SO +0 +18 +18 +Package_SO +SOP-20_7.5x12.8mm_P1.27mm +SOP, 20 Pin (https://www.holtek.com/documents/10179/116723/sop20-300.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +SOP SO +0 +20 +20 +Package_SO +SOP-24_7.5x15.4mm_P1.27mm +SOP, 24 Pin (http://www.issi.com/WW/pdf/31FL3218.pdf#page=14), generated with kicad-footprint-generator ipc_gullwing_generator.py +SOP SO +0 +24 +24 +Package_SO +SSO-4_6.7x5.1mm_P2.54mm_Clearance8mm +4-Lead Plastic Stretched Small Outline (SSO/Stretched SO), see https://www.vishay.com/docs/84299/vor1142b4.pdf +SSO Stretched SO SOIC 2.54 +0 +4 +4 +Package_SO +SSO-6_6.8x4.6mm_P1.27mm_Clearance7mm +8-Lead Plastic Stretched Small Outline (SSO/Stretched SO), see https://docs.broadcom.com/cs/Satellite?blobcol=urldata&blobheader=application%2Fpdf&blobheadername1=Content-Disposition&blobheadername2=Content-Type&blobheadername3=MDT-Type&blobheadervalue1=attachment%3Bfilename%3DIPD-Selection-Guide_AV00-0254EN_030617.pdf&blobheadervalue2=application%2Fx-download&blobheadervalue3=abinary%253B%2Bcharset%253DUTF-8&blobkey=id&blobnocache=true&blobtable=MungoBlobs&blobwhere=1430884105675&ssbinary=true +SSO Stretched SO SOIC 1.27 +0 +6 +6 +Package_SO +SSO-6_6.8x4.6mm_P1.27mm_Clearance8mm +8-Lead Plastic Stretched Small Outline (SSO/Stretched SO), see https://docs.broadcom.com/cs/Satellite?blobcol=urldata&blobheader=application%2Fpdf&blobheadername1=Content-Disposition&blobheadername2=Content-Type&blobheadername3=MDT-Type&blobheadervalue1=attachment%3Bfilename%3DIPD-Selection-Guide_AV00-0254EN_030617.pdf&blobheadervalue2=application%2Fx-download&blobheadervalue3=abinary%253B%2Bcharset%253DUTF-8&blobkey=id&blobnocache=true&blobtable=MungoBlobs&blobwhere=1430884105675&ssbinary=true +SSO Stretched SO SOIC 1.27 +0 +6 +6 +Package_SO +SSO-8_6.7x9.8mm_P2.54mm_Clearance8mm +8-Lead Plastic Stretched Small Outline (SSO/Stretched SO), see https://www.vishay.com/docs/83831/lh1533ab.pdf +SSO Stretched SO SOIC Pitch 2.54 +0 +8 +8 +Package_SO +SSO-8_6.8x5.9mm_P1.27mm_Clearance7mm +8-Lead Plastic Stretched Small Outline (SSO/Stretched SO), see https://docs.broadcom.com/cs/Satellite?blobcol=urldata&blobheader=application%2Fpdf&blobheadername1=Content-Disposition&blobheadername2=Content-Type&blobheadername3=MDT-Type&blobheadervalue1=attachment%3Bfilename%3DIPD-Selection-Guide_AV00-0254EN_030617.pdf&blobheadervalue2=application%2Fx-download&blobheadervalue3=abinary%253B%2Bcharset%253DUTF-8&blobkey=id&blobnocache=true&blobtable=MungoBlobs&blobwhere=1430884105675&ssbinary=true +SSO Stretched SO SOIC Pitch 1.27 +0 +8 +8 +Package_SO +SSO-8_6.8x5.9mm_P1.27mm_Clearance8mm +8-Lead Plastic Stretched Small Outline (SSO/Stretched SO), see https://docs.broadcom.com/cs/Satellite?blobcol=urldata&blobheader=application%2Fpdf&blobheadername1=Content-Disposition&blobheadername2=Content-Type&blobheadername3=MDT-Type&blobheadervalue1=attachment%3Bfilename%3DIPD-Selection-Guide_AV00-0254EN_030617.pdf&blobheadervalue2=application%2Fx-download&blobheadervalue3=abinary%253B%2Bcharset%253DUTF-8&blobkey=id&blobnocache=true&blobtable=MungoBlobs&blobwhere=1430884105675&ssbinary=true +SSO Stretched SO SOIC Pitch 1.27 +0 +8 +8 +Package_SO +SSO-8_9.6x6.3mm_P1.27mm_Clearance10.5mm +8-Lead Plastic Stretched Small Outline (SSO/Stretched SO), see https://docs.broadcom.com/cs/Satellite?blobcol=urldata&blobheader=application%2Fpdf&blobheadername1=Content-Disposition&blobheadername2=Content-Type&blobheadername3=MDT-Type&blobheadervalue1=attachment%3Bfilename%3DIPD-Selection-Guide_AV00-0254EN_030617.pdf&blobheadervalue2=application%2Fx-download&blobheadervalue3=abinary%253B%2Bcharset%253DUTF-8&blobkey=id&blobnocache=true&blobtable=MungoBlobs&blobwhere=1430884105675&ssbinary=true +SSO Stretched SO SOIC Pitch 1.27 +0 +8 +8 +Package_SO +SSO-8_13.6x6.3mm_P1.27mm_Clearance14.2mm +8-Lead Plastic Stretched Small Outline (SSO/Stretched SO), see https://docs.broadcom.com/cs/Satellite?blobcol=urldata&blobheader=application%2Fpdf&blobheadername1=Content-Disposition&blobheadername2=Content-Type&blobheadername3=MDT-Type&blobheadervalue1=attachment%3Bfilename%3DIPD-Selection-Guide_AV00-0254EN_030617.pdf&blobheadervalue2=application%2Fx-download&blobheadervalue3=abinary%253B%2Bcharset%253DUTF-8&blobkey=id&blobnocache=true&blobtable=MungoBlobs&blobwhere=1430884105675&ssbinary=true +SSO Stretched SO SOIC Pitch 1.27 +0 +8 +8 +Package_SO +SSOP-8_2.95x2.8mm_P0.65mm +SSOP-8 2.9 x2.8mm Pitch 0.65mm +SSOP-8 2.95x2.8mm Pitch 0.65mm +0 +8 +8 +Package_SO +SSOP-8_3.9x5.05mm_P1.27mm +SSOP, 8 Pin (http://www.fujitsu.com/downloads/MICRO/fsa/pdf/products/memory/fram/MB85RS16-DS501-00014-6v0-E.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +SSOP SO +0 +8 +8 +Package_SO +SSOP-8_3.95x5.21x3.27mm_P1.27mm +SSOP-8 3.95x5.21x3.27mm Pitch 1.27mm +SSOP-8 3.95x5.21x3.27mm 1.27mm +0 +8 +8 +Package_SO +SSOP-8_5.25x5.24mm_P1.27mm +SSOP, 8 Pin (http://www.fujitsu.com/ca/en/Images/MB85RS2MT-DS501-00023-1v0-E.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +SSOP SO +0 +8 +8 +Package_SO +SSOP-10_3.9x4.9mm_P1.00mm +10-Lead SSOP, 3.9 x 4.9mm body, 1.00mm pitch (http://www.st.com/resource/en/datasheet/viper01.pdf) +SSOP 3.9 4.9 1.00 +0 +10 +10 +Package_SO +SSOP-14_5.3x6.2mm_P0.65mm +SSOP14: plastic shrink small outline package; 14 leads; body width 5.3 mm; (see NXP SSOP-TSSOP-VSO-REFLOW.pdf and sot337-1_po.pdf) +SSOP 0.65 +0 +14 +14 +Package_SO +SSOP-16_3.9x4.9mm_P0.635mm +SSOP16: plastic shrink small outline package; 16 leads; body width 3.9 mm; lead pitch 0.635; (see NXP SSOP-TSSOP-VSO-REFLOW.pdf and sot519-1_po.pdf) +SSOP 0.635 +0 +16 +16 +Package_SO +SSOP-16_4.4x5.2mm_P0.65mm +SSOP16: plastic shrink small outline package; 16 leads; body width 4.4 mm; (see NXP SSOP-TSSOP-VSO-REFLOW.pdf and sot369-1_po.pdf) +SSOP 0.65 +0 +16 +16 +Package_SO +SSOP-16_5.3x6.2mm_P0.65mm +SSOP16: plastic shrink small outline package; 16 leads; body width 5.3 mm; (see NXP SSOP-TSSOP-VSO-REFLOW.pdf and sot338-1_po.pdf) +SSOP 0.65 +0 +16 +16 +Package_SO +SSOP-18_4.4x6.5mm_P0.65mm +SSOP18: plastic shrink small outline package; 18 leads; body width 4.4 mm (http://toshiba.semicon-storage.com/info/docget.jsp?did=30523&prodName=TBD62783APG) +SSOP 0.65 +0 +18 +18 +Package_SO +SSOP-20_3.9x8.7mm_P0.635mm +SSOP20: plastic shrink small outline package; 24 leads; body width 3.9 mm; lead pitch 0.635; (see http://www.ftdichip.com/Support/Documents/DataSheets/ICs/DS_FT231X.pdf) +SSOP 0.635 +0 +20 +20 +Package_SO +SSOP-20_4.4x6.5mm_P0.65mm +SSOP20: plastic shrink small outline package; 20 leads; body width 4.4 mm; (see NXP SSOP-TSSOP-VSO-REFLOW.pdf and sot266-1_po.pdf) +SSOP 0.65 +0 +20 +20 +Package_SO +SSOP-20_5.3x7.2mm_P0.65mm +SSOP, 20 Pin (http://ww1.microchip.com/downloads/en/DeviceDoc/40001800C.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +SSOP SO +0 +20 +20 +Package_SO +SSOP-24_3.9x8.7mm_P0.635mm +SSOP24: plastic shrink small outline package; 24 leads; body width 3.9 mm; lead pitch 0.635; (see NXP SSOP-TSSOP-VSO-REFLOW.pdf and sot556-1_po.pdf) +SSOP 0.635 +0 +24 +24 +Package_SO +SSOP-24_5.3x8.2mm_P0.65mm +24-Lead Plastic Shrink Small Outline (SS)-5.30 mm Body [SSOP] (see Microchip Packaging Specification 00000049BS.pdf) +SSOP 0.65 +0 +24 +24 +Package_SO +SSOP-28_3.9x9.9mm_P0.635mm +SSOP28: plastic shrink small outline package; 28 leads; body width 3.9 mm; lead pitch 0.635; (see http://cds.linear.com/docs/en/datasheet/38901fb.pdf) +SSOP 0.635 +0 +28 +28 +Package_SO +SSOP-28_5.3x10.2mm_P0.65mm +28-Lead Plastic Shrink Small Outline (SS)-5.30 mm Body [SSOP] (see Microchip Packaging Specification 00000049BS.pdf) +SSOP 0.65 +0 +28 +28 +Package_SO +SSOP-32_11.305x20.495mm_P1.27mm +SSOP, 32 Pin (http://www.issi.com/WW/pdf/61-64C5128AL.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +SSOP SO +0 +32 +32 +Package_SO +SSOP-44_5.3x12.8mm_P0.5mm +44-Lead Plastic Shrink Small Outline (SS)-5.30 mm Body [SSOP] (http://cds.linear.com/docs/en/datasheet/680313fa.pdf) +SSOP 0.5 +0 +44 +44 +Package_SO +SSOP-48_7.5x15.9mm_P0.635mm +SSOP48: plastic shrink small outline package; 48 leads; body width 7.5 mm; (see NXP SSOP-TSSOP-VSO-REFLOW.pdf and sot370-1_po.pdf) +SSOP 0.635 +0 +48 +48 +Package_SO +SSOP-56_7.5x18.5mm_P0.635mm +SSOP56: plastic shrink small outline package; 56 leads; body width 7.5 mm; (see NXP SSOP-TSSOP-VSO-REFLOW.pdf and sot371-1_po.pdf) +SSOP 0.635 +0 +56 +56 +Package_SO +STC_SOP-16_3.9x9.9mm_P1.27mm +STC SOP, 16 Pin (https://www.stcmicro.com/datasheet/STC15F2K60S2-en.pdf#page=156), generated with kicad-footprint-generator ipc_gullwing_generator.py +STC SOP SO +0 +16 +16 +Package_SO +ST_MultiPowerSO-30 +MultiPowerSO-30 3EP 16.0x17.2mm Pitch 1mm (http://www.st.com/resource/en/datasheet/vnh2sp30-e.pdf) +MultiPowerSO-30 3EP 16.0x17.2mm Pitch 1mm +0 +33 +33 +Package_SO +ST_PowerSSO-24_SlugDown +ST PowerSSO-24 1EP 7.5x10.3mm Pitch 0.8mm [JEDEC MO-271] (http://www.st.com/resource/en/datasheet/tda7266p.pdf, http://freedatasheets.com/downloads/Technical%20Note%20Powersso24%20TN0054.pdf) +ST PowerSSO-24 1EP 7.5x10.3mm Pitch 0.8mm +0 +25 +25 +Package_SO +ST_PowerSSO-24_SlugDown_ThermalVias +ST PowerSSO-24 1EP 7.5x10.3mm Pitch 0.8mm [JEDEC MO-271] (http://www.st.com/resource/en/datasheet/tda7266p.pdf, http://freedatasheets.com/downloads/Technical%20Note%20Powersso24%20TN0054.pdf) +ST PowerSSO-24 1EP 7.5x10.3mm Pitch 0.8mm +0 +38 +25 +Package_SO +ST_PowerSSO-24_SlugUp +ST PowerSSO-24 1EP 7.5x10.3mm Pitch 0.8mm [JEDEC MO-271] (http://www.st.com/resource/en/datasheet/tda7266p.pdf, http://freedatasheets.com/downloads/Technical%20Note%20Powersso24%20TN0054.pdf) +ST PowerSSO-24 1EP 7.5x10.3mm Pitch 0.8mm +0 +24 +24 +Package_SO +ST_PowerSSO-36_SlugDown +ST PowerSSO-36 1EP 7.5x10.3mm Pitch 0.8mm [JEDEC MO-271] (http://www.st.com/resource/en/datasheet/tda7492p.pdf, http://freedatasheets.com/downloads/Technical%20Note%20Powersso24%20TN0054.pdf) +ST PowerSSO-36 1EP 7.5x10.3mm Pitch 0.8mm +0 +37 +37 +Package_SO +ST_PowerSSO-36_SlugDown_ThermalVias +ST PowerSSO-36 1EP 7.5x10.3mm Pitch 0.8mm [JEDEC MO-271] (http://www.st.com/resource/en/datasheet/tda7492p.pdf, http://freedatasheets.com/downloads/Technical%20Note%20Powersso24%20TN0054.pdf) +ST PowerSSO-36 1EP 7.5x10.3mm Pitch 0.8mm +0 +50 +37 +Package_SO +ST_PowerSSO-36_SlugUp +ST PowerSSO-36 1EP 7.5x10.3mm Pitch 0.8mm [JEDEC MO-271] (http://www.st.com/resource/en/datasheet/tda7492p.pdf, http://freedatasheets.com/downloads/Technical%20Note%20Powersso24%20TN0054.pdf) +ST PowerSSO-36 1EP 7.5x10.3mm Pitch 0.8mm +0 +36 +36 +Package_SO +TI_SO-PowerPAD-8 +8-Lead Plastic PSOP, Exposed Die Pad (TI DDA0008B, see http://www.ti.com/lit/ds/symlink/lm3404.pdf) +SSOP 0.50 exposed pad +0 +12 +9 +Package_SO +TI_SO-PowerPAD-8_ThermalVias +8-pin HTSOP package with 1.27mm pin pitch, compatible with SOIC-8, 3.9x4.9mm² body, exposed pad, thermal vias with large copper area, as proposed in http://www.ti.com/lit/ds/symlink/tps5430.pdf +HTSOP 1.27 +0 +19 +9 +Package_SO +TSOP-5_1.65x3.05mm_P0.95mm +TSOP-5 package (comparable to TSOT-23), https://www.vishay.com/docs/71200/71200.pdf +Jedec MO-193C TSOP-5L +0 +5 +5 +Package_SO +TSOP-6_1.65x3.05mm_P0.95mm +TSOP-6 package (comparable to TSOT-23), https://www.vishay.com/docs/71200/71200.pdf +Jedec MO-193C TSOP-6L +0 +6 +6 +Package_SO +TSOP-I-28_11.8x8mm_P0.55mm +TSOP I, 28 pins, 18.8x8mm body, 0.55mm pitch, IPC-calculated pads (http://ww1.microchip.com/downloads/en/devicedoc/doc0807.pdf) +TSOP I 28 pins +0 +28 +28 +Package_SO +TSOP-I-32_11.8x8mm_P0.5mm +TSOP-I, 32 Pin (http://www.issi.com/WW/pdf/61-64C5128AL.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +TSOP-I SO +0 +32 +32 +Package_SO +TSOP-I-32_18.4x8mm_P0.5mm +TSOP I, 32 pins, 18.4x8mm body (https://www.micron.com/~/media/documents/products/technical-note/nor-flash/tn1225_land_pad_design.pdf, http://www.fujitsu.com/downloads/MICRO/fma/pdfmcu/f32pm25.pdf) +TSOP I 32 +0 +32 +32 +Package_SO +TSOP-I-32_18.4x8mm_P0.5mm_Reverse +TSOP I, 32 pins, 18.4x8mm body (http://www.futurlec.com/Datasheet/Memory/628128.pdf), reverse mount +TSOP I 32 reverse +0 +32 +32 +Package_SO +TSOP-I-48_18.4x12mm_P0.5mm +TSOP I, 32 pins, 18.4x8mm body (https://www.micron.com/~/media/documents/products/technical-note/nor-flash/tn1225_land_pad_design.pdf) +TSOP I 32 +0 +48 +48 +Package_SO +TSOP-I-56_18.4x14mm_P0.5mm +TSOP I, 32 pins, 18.4x8mm body (https://www.micron.com/~/media/documents/products/technical-note/nor-flash/tn1225_land_pad_design.pdf) +TSOP I 32 +0 +56 +56 +Package_SO +TSOP-II-32_21.0x10.2mm_P1.27mm +32-lead plastic TSOP; Type II +TSOP-II 32 +0 +32 +32 +Package_SO +TSOP-II-44_10.16x18.41mm_P0.8mm +TSOP-II, 44 Pin (http://www.issi.com/WW/pdf/61-64C5128AL.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +TSOP-II SO +0 +44 +44 +Package_SO +TSOP-II-54_22.2x10.16mm_P0.8mm +54-lead TSOP typ II package +TSOPII TSOP2 +0 +54 +54 +Package_SO +TSSOP-4_4.4x5mm_P4mm +TSSOP, 4 Pin (https://www.onsemi.com/pub/Collateral/MDB8S-D.PDF#page=4), generated with kicad-footprint-generator ipc_gullwing_generator.py +TSSOP SO +0 +4 +4 +Package_SO +TSSOP-8_3x3mm_P0.65mm +TSSOP8: plastic thin shrink small outline package; 8 leads; body width 3 mm; (see NXP SSOP-TSSOP-VSO-REFLOW.pdf and sot505-1_po.pdf) +SSOP 0.65 +0 +8 +8 +Package_SO +TSSOP-8_4.4x3mm_P0.65mm +TSSOP, 8 Pin (JEDEC MO-153 Var AA https://www.jedec.org/document_search?search_api_views_fulltext=MO-153), generated with kicad-footprint-generator ipc_gullwing_generator.py +TSSOP SO +0 +8 +8 +Package_SO +TSSOP-10_3x3mm_P0.5mm +TSSOP10: plastic thin shrink small outline package; 10 leads; body width 3 mm; (see NXP SSOP-TSSOP-VSO-REFLOW.pdf and sot552-1_po.pdf) +SSOP 0.5 +0 +10 +10 +Package_SO +TSSOP-14-1EP_4.4x5mm_P0.65mm +14-Lead Plastic Thin Shrink Small Outline (ST)-4.4 mm Body [TSSOP] with exposed pad (http://cds.linear.com/docs/en/datasheet/34301fa.pdf) +SSOP 0.65 exposed pad +0 +18 +15 +Package_SO +TSSOP-14_4.4x5mm_P0.65mm +TSSOP, 14 Pin (JEDEC MO-153 Var AB-1 https://www.jedec.org/document_search?search_api_views_fulltext=MO-153), generated with kicad-footprint-generator ipc_gullwing_generator.py +TSSOP SO +0 +14 +14 +Package_SO +TSSOP-16-1EP_4.4x5mm_P0.65mm +FE Package; 16-Lead Plastic TSSOP (4.4mm); Exposed Pad Variation BB; (see Linear Technology 1956f.pdf) +SSOP 0.65 +0 +24 +17 +Package_SO +TSSOP-16_4.4x5mm_P0.65mm +TSSOP, 16 Pin (JEDEC MO-153 Var AB https://www.jedec.org/document_search?search_api_views_fulltext=MO-153), generated with kicad-footprint-generator ipc_gullwing_generator.py +TSSOP SO +0 +16 +16 +Package_SO +TSSOP-20_4.4x5mm_P0.5mm +TSSOP, 20 Pin (JEDEC MO-153 Var BA https://www.jedec.org/document_search?search_api_views_fulltext=MO-153), generated with kicad-footprint-generator ipc_gullwing_generator.py +TSSOP SO +0 +20 +20 +Package_SO +TSSOP-20_4.4x6.5mm_P0.65mm +TSSOP, 20 Pin (JEDEC MO-153 Var AC https://www.jedec.org/document_search?search_api_views_fulltext=MO-153), generated with kicad-footprint-generator ipc_gullwing_generator.py +TSSOP SO +0 +20 +20 +Package_SO +TSSOP-24_4.4x5mm_P0.4mm +TSSOP, 24 Pin (JEDEC MO-153 Var CA https://www.jedec.org/document_search?search_api_views_fulltext=MO-153), generated with kicad-footprint-generator ipc_gullwing_generator.py +TSSOP SO +0 +24 +24 +Package_SO +TSSOP-24_4.4x6.5mm_P0.5mm +TSSOP, 24 Pin (JEDEC MO-153 Var BB https://www.jedec.org/document_search?search_api_views_fulltext=MO-153), generated with kicad-footprint-generator ipc_gullwing_generator.py +TSSOP SO +0 +24 +24 +Package_SO +TSSOP-24_4.4x7.8mm_P0.65mm +TSSOP, 24 Pin (JEDEC MO-153 Var AD https://www.jedec.org/document_search?search_api_views_fulltext=MO-153), generated with kicad-footprint-generator ipc_gullwing_generator.py +TSSOP SO +0 +24 +24 +Package_SO +TSSOP-24_6.1x7.8mm_P0.65mm +TSSOP, 24 Pin (JEDEC MO-153 Var DA https://www.jedec.org/document_search?search_api_views_fulltext=MO-153), generated with kicad-footprint-generator ipc_gullwing_generator.py +TSSOP SO +0 +24 +24 +Package_SO +TSSOP-28-1EP_4.4x9.7mm_P0.65mm +TSSOP28: plastic thin shrink small outline package; 28 leads; body width 4.4 mm; Exposed Pad Variation; (see NXP SSOP-TSSOP-VSO-REFLOW.pdf and sot361-1_po.pdf) +SSOP 0.65 +0 +36 +29 +Package_SO +TSSOP-28_4.4x7.8mm_P0.5mm +TSSOP, 28 Pin (JEDEC MO-153 Var BC https://www.jedec.org/document_search?search_api_views_fulltext=MO-153), generated with kicad-footprint-generator ipc_gullwing_generator.py +TSSOP SO +0 +28 +28 +Package_SO +TSSOP-28_4.4x9.7mm_P0.65mm +TSSOP, 28 Pin (JEDEC MO-153 Var AE https://www.jedec.org/document_search?search_api_views_fulltext=MO-153), generated with kicad-footprint-generator ipc_gullwing_generator.py +TSSOP SO +0 +28 +28 +Package_SO +TSSOP-28_6.1x7.8mm_P0.5mm +TSSOP, 28 Pin (JEDEC MO-153 Var EA https://www.jedec.org/document_search?search_api_views_fulltext=MO-153), generated with kicad-footprint-generator ipc_gullwing_generator.py +TSSOP SO +0 +28 +28 +Package_SO +TSSOP-28_6.1x9.7mm_P0.65mm +TSSOP, 28 Pin (JEDEC MO-153 Var DB https://www.jedec.org/document_search?search_api_views_fulltext=MO-153), generated with kicad-footprint-generator ipc_gullwing_generator.py +TSSOP SO +0 +28 +28 +Package_SO +TSSOP-28_8x9.7mm_P0.65mm +TSSOP, 28 Pin (JEDEC MO-153 Var GA https://www.jedec.org/document_search?search_api_views_fulltext=MO-153), generated with kicad-footprint-generator ipc_gullwing_generator.py +TSSOP SO +0 +28 +28 +Package_SO +TSSOP-30_4.4x7.8mm_P0.5mm +TSSOP, 30 Pin (JEDEC MO-153 Var BC-1 https://www.jedec.org/document_search?search_api_views_fulltext=MO-153), generated with kicad-footprint-generator ipc_gullwing_generator.py +TSSOP SO +0 +30 +30 +Package_SO +TSSOP-30_6.1x9.7mm_P0.65mm +TSSOP, 30 Pin (JEDEC MO-153 Var DB-1 https://www.jedec.org/document_search?search_api_views_fulltext=MO-153), generated with kicad-footprint-generator ipc_gullwing_generator.py +TSSOP SO +0 +30 +30 +Package_SO +TSSOP-32_4.4x6.5mm_P0.4mm +TSSOP, 32 Pin (JEDEC MO-153 Var CB https://www.jedec.org/document_search?search_api_views_fulltext=MO-153), generated with kicad-footprint-generator ipc_gullwing_generator.py +TSSOP SO +0 +32 +32 +Package_SO +TSSOP-32_6.1x11mm_P0.65mm +TSSOP, 32 Pin (JEDEC MO-153 Var DC https://www.jedec.org/document_search?search_api_views_fulltext=MO-153), generated with kicad-footprint-generator ipc_gullwing_generator.py +TSSOP SO +0 +32 +32 +Package_SO +TSSOP-32_8x11mm_P0.65mm +TSSOP, 32 Pin (JEDEC MO-153 Var GB https://www.jedec.org/document_search?search_api_views_fulltext=MO-153), generated with kicad-footprint-generator ipc_gullwing_generator.py +TSSOP SO +0 +32 +32 +Package_SO +TSSOP-36_4.4x7.8mm_P0.4mm +TSSOP, 36 Pin (JEDEC MO-153 Var CC https://www.jedec.org/document_search?search_api_views_fulltext=MO-153), generated with kicad-footprint-generator ipc_gullwing_generator.py +TSSOP SO +0 +36 +36 +Package_SO +TSSOP-36_4.4x9.7mm_P0.5mm +TSSOP, 36 Pin (JEDEC MO-153 Var BD https://www.jedec.org/document_search?search_api_views_fulltext=MO-153), generated with kicad-footprint-generator ipc_gullwing_generator.py +TSSOP SO +0 +36 +36 +Package_SO +TSSOP-36_6.1x7.8mm_P0.4mm +TSSOP, 36 Pin (JEDEC MO-153 Var FA https://www.jedec.org/document_search?search_api_views_fulltext=MO-153), generated with kicad-footprint-generator ipc_gullwing_generator.py +TSSOP SO +0 +36 +36 +Package_SO +TSSOP-36_6.1x9.7mm_P0.5mm +TSSOP, 36 Pin (JEDEC MO-153 Var EB https://www.jedec.org/document_search?search_api_views_fulltext=MO-153), generated with kicad-footprint-generator ipc_gullwing_generator.py +TSSOP SO +0 +36 +36 +Package_SO +TSSOP-36_6.1x12.5mm_P0.65mm +TSSOP, 36 Pin (JEDEC MO-153 Var DD https://www.jedec.org/document_search?search_api_views_fulltext=MO-153), generated with kicad-footprint-generator ipc_gullwing_generator.py +TSSOP SO +0 +36 +36 +Package_SO +TSSOP-36_8x9.7mm_P0.5mm +TSSOP, 36 Pin (JEDEC MO-153 Var HA https://www.jedec.org/document_search?search_api_views_fulltext=MO-153), generated with kicad-footprint-generator ipc_gullwing_generator.py +TSSOP SO +0 +36 +36 +Package_SO +TSSOP-36_8x12.5mm_P0.65mm +TSSOP, 36 Pin (JEDEC MO-153 Var GC https://www.jedec.org/document_search?search_api_views_fulltext=MO-153), generated with kicad-footprint-generator ipc_gullwing_generator.py +TSSOP SO +0 +36 +36 +Package_SO +TSSOP-38_4.4x9.7mm_P0.5mm +TSSOP, 38 Pin (JEDEC MO-153 Var BD https://www.jedec.org/document_search?search_api_views_fulltext=MO-153), generated with kicad-footprint-generator ipc_gullwing_generator.py +TSSOP SO +0 +38 +38 +Package_SO +TSSOP-38_6.1x12.5mm_P0.65mm +TSSOP, 38 Pin (JEDEC MO-153 Var DD-1 https://www.jedec.org/document_search?search_api_views_fulltext=MO-153), generated with kicad-footprint-generator ipc_gullwing_generator.py +TSSOP SO +0 +38 +38 +Package_SO +TSSOP-40_6.1x11mm_P0.5mm +TSSOP, 40 Pin (JEDEC MO-153 Var EC https://www.jedec.org/document_search?search_api_views_fulltext=MO-153), generated with kicad-footprint-generator ipc_gullwing_generator.py +TSSOP SO +0 +40 +40 +Package_SO +TSSOP-40_6.1x14mm_P0.65mm +TSSOP, 40 Pin (JEDEC MO-153 Var DE https://www.jedec.org/document_search?search_api_views_fulltext=MO-153), generated with kicad-footprint-generator ipc_gullwing_generator.py +TSSOP SO +0 +40 +40 +Package_SO +TSSOP-40_8x11mm_P0.5mm +TSSOP, 40 Pin (JEDEC MO-153 Var HB https://www.jedec.org/document_search?search_api_views_fulltext=MO-153), generated with kicad-footprint-generator ipc_gullwing_generator.py +TSSOP SO +0 +40 +40 +Package_SO +TSSOP-40_8x14mm_P0.65mm +TSSOP, 40 Pin (JEDEC MO-153 Var GD https://www.jedec.org/document_search?search_api_views_fulltext=MO-153), generated with kicad-footprint-generator ipc_gullwing_generator.py +TSSOP SO +0 +40 +40 +Package_SO +TSSOP-44_4.4x11.2mm_P0.5mm +TSSOP44: plastic thin shrink small outline package; 44 leads; body width 4.4 mm (see NXP SSOP-TSSOP-VSO-REFLOW.pdf and sot510-1_po.pdf) +SSOP 0.5 +0 +44 +44 +Package_SO +TSSOP-44_4.4x11mm_P0.5mm +TSSOP, 44 Pin (JEDEC MO-153 Var BE https://www.jedec.org/document_search?search_api_views_fulltext=MO-153), generated with kicad-footprint-generator ipc_gullwing_generator.py +TSSOP SO +0 +44 +44 +Package_SO +TSSOP-44_6.1x11mm_P0.5mm +TSSOP, 44 Pin (JEDEC MO-153 Var EC-1 https://www.jedec.org/document_search?search_api_views_fulltext=MO-153), generated with kicad-footprint-generator ipc_gullwing_generator.py +TSSOP SO +0 +44 +44 +Package_SO +TSSOP-48_4.4x9.7mm_P0.4mm +TSSOP, 48 Pin (JEDEC MO-153 Var CD https://www.jedec.org/document_search?search_api_views_fulltext=MO-153), generated with kicad-footprint-generator ipc_gullwing_generator.py +TSSOP SO +0 +48 +48 +Package_SO +TSSOP-48_6.1x9.7mm_P0.4mm +TSSOP, 48 Pin (JEDEC MO-153 Var FB https://www.jedec.org/document_search?search_api_views_fulltext=MO-153), generated with kicad-footprint-generator ipc_gullwing_generator.py +TSSOP SO +0 +48 +48 +Package_SO +TSSOP-48_6.1x12.5mm_P0.5mm +TSSOP, 48 Pin (JEDEC MO-153 Var ED https://www.jedec.org/document_search?search_api_views_fulltext=MO-153), generated with kicad-footprint-generator ipc_gullwing_generator.py +TSSOP SO +0 +48 +48 +Package_SO +TSSOP-48_8x9.7mm_P0.4mm +TSSOP, 48 Pin (JEDEC MO-153 Var JA https://www.jedec.org/document_search?search_api_views_fulltext=MO-153), generated with kicad-footprint-generator ipc_gullwing_generator.py +TSSOP SO +0 +48 +48 +Package_SO +TSSOP-48_8x12.5mm_P0.5mm +TSSOP, 48 Pin (JEDEC MO-153 Var HC https://www.jedec.org/document_search?search_api_views_fulltext=MO-153), generated with kicad-footprint-generator ipc_gullwing_generator.py +TSSOP SO +0 +48 +48 +Package_SO +TSSOP-50_4.4x12.5mm_P0.5mm +TSSOP, 50 Pin (JEDEC MO-153 Var BF https://www.jedec.org/document_search?search_api_views_fulltext=MO-153), generated with kicad-footprint-generator ipc_gullwing_generator.py +TSSOP SO +0 +50 +50 +Package_SO +TSSOP-52_6.1x11mm_P0.4mm +TSSOP, 52 Pin (JEDEC MO-153 Var FC https://www.jedec.org/document_search?search_api_views_fulltext=MO-153), generated with kicad-footprint-generator ipc_gullwing_generator.py +TSSOP SO +0 +52 +52 +Package_SO +TSSOP-52_8x11mm_P0.4mm +TSSOP, 52 Pin (JEDEC MO-153 Var JB https://www.jedec.org/document_search?search_api_views_fulltext=MO-153), generated with kicad-footprint-generator ipc_gullwing_generator.py +TSSOP SO +0 +52 +52 +Package_SO +TSSOP-56_6.1x12.5mm_P0.4mm +TSSOP, 56 Pin (JEDEC MO-153 Var FD https://www.jedec.org/document_search?search_api_views_fulltext=MO-153), generated with kicad-footprint-generator ipc_gullwing_generator.py +TSSOP SO +0 +56 +56 +Package_SO +TSSOP-56_6.1x14mm_P0.5mm +TSSOP, 56 Pin (JEDEC MO-153 Var EE https://www.jedec.org/document_search?search_api_views_fulltext=MO-153), generated with kicad-footprint-generator ipc_gullwing_generator.py +TSSOP SO +0 +56 +56 +Package_SO +TSSOP-56_8x12.5mm_P0.4mm +TSSOP, 56 Pin (JEDEC MO-153 Var JC https://www.jedec.org/document_search?search_api_views_fulltext=MO-153), generated with kicad-footprint-generator ipc_gullwing_generator.py +TSSOP SO +0 +56 +56 +Package_SO +TSSOP-56_8x14mm_P0.5mm +TSSOP, 56 Pin (JEDEC MO-153 Var HD https://www.jedec.org/document_search?search_api_views_fulltext=MO-153), generated with kicad-footprint-generator ipc_gullwing_generator.py +TSSOP SO +0 +56 +56 +Package_SO +TSSOP-60_8x12.5mm_P0.4mm +TSSOP, 60 Pin (JEDEC MO-153 Var JC-1 https://www.jedec.org/document_search?search_api_views_fulltext=MO-153), generated with kicad-footprint-generator ipc_gullwing_generator.py +TSSOP SO +0 +60 +60 +Package_SO +TSSOP-64_6.1x14mm_P0.4mm +TSSOP, 64 Pin (JEDEC MO-153 Var FE https://www.jedec.org/document_search?search_api_views_fulltext=MO-153), generated with kicad-footprint-generator ipc_gullwing_generator.py +TSSOP SO +0 +64 +64 +Package_SO +TSSOP-64_6.1x17mm_P0.5mm +TSSOP, 64 Pin (JEDEC MO-153 Var EF https://www.jedec.org/document_search?search_api_views_fulltext=MO-153), generated with kicad-footprint-generator ipc_gullwing_generator.py +TSSOP SO +0 +64 +64 +Package_SO +TSSOP-64_8x14mm_P0.4mm +TSSOP, 64 Pin (JEDEC MO-153 Var JD https://www.jedec.org/document_search?search_api_views_fulltext=MO-153), generated with kicad-footprint-generator ipc_gullwing_generator.py +TSSOP SO +0 +64 +64 +Package_SO +TSSOP-68_8x14mm_P0.4mm +TSSOP, 68 Pin (JEDEC MO-153 Var JD-1 https://www.jedec.org/document_search?search_api_views_fulltext=MO-153), generated with kicad-footprint-generator ipc_gullwing_generator.py +TSSOP SO +0 +68 +68 +Package_SO +TSSOP-80_6.1x17mm_P0.4mm +TSSOP, 80 Pin (JEDEC MO-153 Var FF https://www.jedec.org/document_search?search_api_views_fulltext=MO-153), generated with kicad-footprint-generator ipc_gullwing_generator.py +TSSOP SO +0 +80 +80 +Package_SO +Texas_HSOP-8-1EP_3.9x4.9mm_P1.27mm +Texas Instruments HSOP 9, 1.27mm pitch, 3.9x4.9mm body, exposed pad, DDA0008J (http://www.ti.com/lit/ds/symlink/tps5430.pdf) +HSOP 1.27 +0 +11 +9 +Package_SO +Texas_HSOP-8-1EP_3.9x4.9mm_P1.27mm_ThermalVias +Texas Instruments HSOP 9, 1.27mm pitch, 3.9x4.9mm body, exposed pad, thermal vias, DDA0008J (http://www.ti.com/lit/ds/symlink/tps5430.pdf) +HSOP 1.27 +0 +20 +9 +Package_SO +Texas_HTSOP-8-1EP_3.9x4.9mm_P1.27mm_EP2.95x4.9mm_Mask2.4x3.1mm_ThermalVias +8-pin HTSOP package with 1.27mm pin pitch, compatible with SOIC-8, 3.9x4.9mm body, exposed pad, thermal vias, http://www.ti.com/lit/ds/symlink/drv8870.pdf +HTSOP 1.27 +0 +18 +9 +Package_SO +Texas_PWP0020A +20-Pin Thermally Enhanced Thin Shrink Small-Outline Package, Body 4.4x6.5x1.1mm, Pad 3.0x4.2mm, Texas Instruments (see http://www.ti.com/lit/ds/symlink/lm5118.pdf) +PWP HTSSOP 0.65mm +0 +25 +21 +Package_SO +Texas_R-PDSO-G8_EP2.95x4.9mm_Mask2.4x3.1mm +HSOIC, 8 Pin (http://www.ti.com/lit/ds/symlink/lmr14030.pdf#page=28, http://www.ti.com/lit/ml/msoi002j/msoi002j.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +HSOIC SO +0 +16 +9 +Package_SO +Texas_R-PDSO-G8_EP2.95x4.9mm_Mask2.4x3.1mm_ThermalVias +HSOIC, 8 Pin (http://www.ti.com/lit/ds/symlink/lmr14030.pdf#page=28, http://www.ti.com/lit/ml/msoi002j/msoi002j.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +HSOIC SO +0 +23 +9 +Package_SO +Texas_R-PDSO-N5 +Plastic Small outline http://www.ti.com/lit/ml/mpds158c/mpds158c.pdf +SOT23 R-PDSO-N5 +0 +5 +5 +Package_SO +VSO-40_7.6x15.4mm_P0.762mm +VSO40: plastic very small outline package; 40 leads (see NXP SSOP-TSSOP-VSO-REFLOW.pdf and sot158-1_po.pdf) +SSOP 0.762 +0 +40 +40 +Package_SO +VSO-56_11.1x21.5mm_P0.75mm +VSO56: plastic very small outline package; 56 leads (see NXP SSOP-TSSOP-VSO-REFLOW.pdf and sot190-1_po.pdf) +SSOP 0.75 +0 +56 +56 +Package_SO +VSSOP-8_2.3x2mm_P0.5mm +VSSOP-8 2.3x2mm Pitch 0.5mm +VSSOP-8 2.3x2mm Pitch 0.5mm +0 +8 +8 +Package_SO +VSSOP-8_2.4x2.1mm_P0.5mm +http://www.ti.com/lit/ml/mpds050d/mpds050d.pdf +VSSOP DCU R-PDSO-G8 Pitch0.5mm +0 +8 +8 +Package_SO +VSSOP-8_3.0x3.0mm_P0.65mm +VSSOP-8 3.0 x 3.0, http://www.ti.com/lit/ds/symlink/lm75b.pdf +VSSOP-8 3.0 x 3.0 +0 +8 +8 +Package_SO +VSSOP-10_3x3mm_P0.5mm +VSSOP, 10 Pin (http://www.ti.com/lit/ds/symlink/ads1115.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py +VSSOP SO +0 +10 +10 +Package_SO +Vishay_PowerPAK_1212-8_Dual +PowerPAK 1212-8 Dual (https://www.vishay.com/docs/71656/ppak12128.pdf, https://www.vishay.com/docs/72598/72598.pdf) +Vishay_PowerPAK_1212-8_Dual +0 +6 +6 +Package_SO +Vishay_PowerPAK_1212-8_Single +PowerPAK 1212-8 Single (https://www.vishay.com/docs/71656/ppak12128.pdf, https://www.vishay.com/docs/72597/72597.pdf) +Vishay PowerPAK 1212-8 Single +0 +5 +5 +Package_SO +Zetex_SM8 +Zetex, SMD, 8 pin package (http://datasheet.octopart.com/ZDT6758TA-Zetex-datasheet-68057.pdf) +Zetex SM8 +0 +8 +8 +Package_SON +Diodes_PowerDI3333-8 +Diodes Incorporated PowerDI3333-8, Plastic Dual Flat No Lead Package, 3.3x3.3x0.8mm Body, https://www.diodes.com/assets/Package-Files/PowerDI3333-8.pdf +PowerDI 0.65 +0 +13 +5 +Package_SON +Fairchild_DualPower33-6_3x3mm +Fairchild Power33 MOSFET package, 3x3mm (see https://www.fairchildsemi.com/datasheets/FD/FDMC8032L.pdf) +mosfet +0 +18 +6 +Package_SON +Fairchild_MicroPak-6_1.0x1.45mm_P0.5mm +Fairchild-specific MicroPak-6 1.0x1.45mm Pitch 0.5mm https://www.nxp.com/docs/en/application-note/AN10343.pdff +Fairchild-specific MicroPak-6 1.0x1.45mm Pitch 0.5mm +0 +6 +6 +Package_SON +Fairchild_MicroPak2-6_1.0x1.0mm_P0.35mm +Fairchild-specific MicroPak2-6 1.0x1.0mm Pitch 0.35mm https://www.nxp.com/docs/en/application-note/AN10343.pdff +Fairchild-specific MicroPak2-6 1.0x1.0mm Pitch 0.35mm +0 +6 +6 +Package_SON +HUSON-3-1EP_2x2mm_P1.3mm_EP1.1x1.6mm +HUSON, 3 Pin, SOT1061 (Ref: https://assets.nexperia.com/documents/data-sheet/PMEG2020CPA.pdf) +huson nolead SOT1061 +0 +4 +3 +Package_SON +HVSON-8-1EP_3x3mm_P0.65mm_EP1.6x2.4mm +HVSON, 8 Pin (https://www.nxp.com/docs/en/data-sheet/TJA1051.pdf#page=16), generated with kicad-footprint-generator ipc_noLead_generator.py +HVSON NoLead +0 +13 +9 +Package_SON +HVSON-8-1EP_4x4mm_P0.8mm_EP2.2x3.1mm +HVSON, 8 Pin (https://www.nxp.com/docs/en/data-sheet/PCF8523.pdf (page 57)), generated with kicad-footprint-generator ipc_noLead_generator.py +HVSON NoLead +0 +13 +9 +Package_SON +Infineon_PG-LSON-8-1 +https://www.infineon.com/cms/en/product/packages/PG-LSON/PG-LSON-8-1/ +PG-LSON-8-1 +0 +17 +9 +Package_SON +Infineon_PG-TISON-8-2 +Infineon, PG-TISON-8-2, 5x6x1.15mm, 1.27mm Pitch, Exposed Paddle, https://www.infineon.com/cms/en/product/packages/PG-TISON/PG-TISON-8-2/ +tison +0 +23 +7 +Package_SON +Infineon_PG-TISON-8-3 +Infineon, PG-TISON-8-2, 5x6x1.15mm, 1.27mm Pitch, Exposed Paddle, https://www.infineon.com/cms/en/product/packages/PG-TISON/PG-TISON-8-2/ +tison +0 +23 +7 +Package_SON +Infineon_PG-TISON-8-4 +Infineon, PG-TISON-8-4, 5x6x1.15mm, 1.27mm Pitch, Exposed Paddle, https://www.infineon.com/cms/en/product/packages/PG-TISON/PG-TISON-8-4/ +tison +0 +26 +8 +Package_SON +Infineon_PG-TISON-8-5 +Infineon, PG-TISON-8-5, 8x8x1.1mm, 1mm Pitch, https://www.infineon.com/cms/en/product/packages/PG-TISON/PG-TISON-8-5/ +tison +0 +34 +8 +Package_SON +NXP_XSON-16 +http://www.nxp.com/documents/outline_drawing/SOT1341-1.pdf +NXP XSON SOT-1341 +0 +16 +16 +Package_SON +ROHM_VML0806 +VML0806, Rohm (http://rohmfs.rohm.com/en/techdata_basic/transistor/soldering_condition/VML0806_Soldering_Condition.pdf, http://rohmfs.rohm.com/en/products/databook/package/spec/discrete/vml0806_tr-e.pdf) +ROHM VML0806 +0 +3 +3 +Package_SON +RTC_SMD_MicroCrystal_C3_2.5x3.7mm +MicroCrystal C3 2.5x3.7mm, https://www.microcrystal.com/fileadmin/Media/Products/RTC/Datasheet/RV-1805-C3.pdf +RTC C3 +0 +10 +10 +Package_SON +SON-8-1EP_3x2mm_P0.5mm_EP1.4x1.6mm +SON, 8 Pin (http://www.fujitsu.com/downloads/MICRO/fsa/pdf/products/memory/fram/MB85RS16-DS501-00014-6v0-E.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +SON NoLead +0 +13 +9 +Package_SON +Texas_DQK +Texas WSON-6 DQK, http://www.ti.com/lit/ds/symlink/csd16301q2.pdf +Texas WSON6 2x2mm +0 +10 +8 +Package_SON +Texas_DRC0010J +Texas DRC0010J, VSON10 3x3mm Body, 0.5mm Pitch, http://www.ti.com/lit/ds/symlink/tps63000.pdf +Texas VSON10 3x3mm +0 +17 +11 +Package_SON +Texas_DRC0010J_ThermalVias +Texas DRC0010J, VSON10 3x3mm Body, 0.5mm Pitch, http://www.ti.com/lit/ds/symlink/tps63000.pdf +Texas VSON10 3x3mm +0 +21 +11 +Package_SON +Texas_DSC0010J +3x3mm Body, 0.5mm Pitch, DSC0010J, WSON, http://www.ti.com/lit/ds/symlink/tps61201.pdf +0.5 DSC0010J WSON +0 +33 +11 +Package_SON +Texas_DSC0010J_ThermalVias +3x3mm Body, 0.5mm Pitch, DSC0010J, WSON, http://www.ti.com/lit/ds/symlink/tps61201.pdf +0.5 DSC0010J WSON +0 +39 +11 +Package_SON +Texas_PWSON-N6 +Plastic Small Outline No-Lead http://www.ti.com/lit/ml/mpds176e/mpds176e.pdf +Plastic Small Outline No-Lead +0 +7 +7 +Package_SON +Texas_R-PWSON-N12_EP0.4x2mm +http://www.ti.com/lit/ds/symlink/tpd6f003.pdf +WSON SMD +0 +16 +13 +Package_SON +Texas_S-PDSO-N12 +http://www.ti.com/lit/ds/symlink/bq27441-g1.pdf +SON thermal pads +0 +44 +13 +Package_SON +Texas_S-PVSON-N8 +8-Lead Plastic VSON, 3x3mm Body, 0.65mm Pitch, S-PVSON-N8, http://www.ti.com/lit/ds/symlink/opa2333.pdf +DFN 0.65 S-PVSON-N8 +0 +21 +9 +Package_SON +Texas_S-PVSON-N8_ThermalVias +8-Lead Plastic VSON, 3x3mm Body, 0.65mm Pitch, S-PVSON-N8, http://www.ti.com/lit/ds/symlink/opa2333.pdf +DFN 0.65 S-PVSON-N8 +0 +27 +9 +Package_SON +Texas_S-PVSON-N10 +3x3mm Body, 0.5mm Pitch, S-PVSON-N10, DRC, http://www.ti.com/lit/ds/symlink/tps61201.pdf +0.5 S-PVSON-N10 DRC +0 +33 +11 +Package_SON +Texas_S-PVSON-N10_ThermalVias +3x3mm Body, 0.5mm Pitch, S-PVSON-N10, DRC, http://www.ti.com/lit/ds/symlink/tps61201.pdf +0.5 S-PVSON-N10 DRC +0 +39 +11 +Package_SON +Texas_S-PWSON-N8_EP1.2x2mm +WSON, 8 Pin (http://www.ti.com/lit/ds/symlink/lp2951.pdf#page=27), generated with kicad-footprint-generator ipc_noLead_generator.py +WSON NoLead +0 +11 +9 +Package_SON +Texas_S-PWSON-N8_EP1.2x2mm_ThermalVias +WSON, 8 Pin (http://www.ti.com/lit/ds/symlink/lp2951.pdf#page=27), generated with kicad-footprint-generator ipc_noLead_generator.py +WSON NoLead +0 +18 +9 +Package_SON +Texas_S-PWSON-N10 +3x3mm Body, 0.5mm Pitch, S-PWSON-N10, DSC, http://www.ti.com/lit/ds/symlink/tps63060.pdf +0.5 S-PWSON-N10 DSC +0 +41 +11 +Package_SON +Texas_S-PWSON-N10_ThermalVias +3x3mm Body, 0.5mm Pitch, S-PWSON-N10, DSC, http://www.ti.com/lit/ds/symlink/tps63060.pdf +0.5 S-PWSON-N10 DSC +0 +47 +11 +Package_SON +Texas_X2SON-4_1x1mm_P0.65mm +X2SON 5 pin 1x1mm package (Reference Datasheet: http://www.ti.com/lit/ds/sbvs193d/sbvs193d.pdf Reference part: TPS383x) [StepUp generated footprint] +X2SON +0 +13 +5 +Package_SON +USON-10_2.5x1.0mm_P0.5mm +USON-10 2.5x1.0mm_ Pitch 0.5mm http://www.ti.com/lit/ds/symlink/tpd4e02b04.pdf +USON-10 2.5x1.0mm Pitch 0.5mm +0 +10 +10 +Package_SON +USON-20_2x4mm_P0.4mm +USON-20 2x4mm Pitch 0.4mm http://www.ti.com/lit/ds/symlink/txb0108.pdf +USON-20 2x4mm Pitch 0.4mm +0 +20 +20 +Package_SON +VSON-8_3.3x3.3mm_P0.65mm_NexFET +8-Lead Plastic Dual Flat, No Lead Package (MF) - 3.3x3.3x1 mm Body [VSON] http://www.ti.com/lit/ds/symlink/csd87334q3d.pdf +VSON 0.65 +0 +12 +5 +Package_SON +VSON-10-1EP_3x3mm_P0.5mm_EP1.2x2mm +VSON, 10 Pin (http://rohmfs.rohm.com/en/products/databook/datasheet/ic/power/switching_regulator/bd8314nuv-e.pdf (Page 20)), generated with kicad-footprint-generator ipc_noLead_generator.py +VSON NoLead +0 +15 +11 +Package_SON +VSON-10-1EP_3x3mm_P0.5mm_EP1.2x2mm_ThermalVias +VSON, 10 Pin (http://rohmfs.rohm.com/en/products/databook/datasheet/ic/power/switching_regulator/bd8314nuv-e.pdf (Page 20)), generated with kicad-footprint-generator ipc_noLead_generator.py +VSON NoLead +0 +18 +11 +Package_SON +VSON-10-1EP_3x3mm_P0.5mm_EP1.65x2.4mm +VSON 10 Thermal on 11 3x3mm Pitch 0.5mm http://chip.tomsk.ru/chip/chipdoc.nsf/Package/D8A64DD165C2AAD9472579400024FC41!OpenDocument +VSON 10 Thermal on 11 3x3mm Pitch 0.5mm +0 +21 +11 +Package_SON +VSON-10-1EP_3x3mm_P0.5mm_EP1.65x2.4mm_ThermalVias +VSON 10 Thermal on 11 3x3mm Pitch 0.5mm http://chip.tomsk.ru/chip/chipdoc.nsf/Package/D8A64DD165C2AAD9472579400024FC41!OpenDocument +VSON 10 Thermal on 11 3x3mm Pitch 0.5mm +0 +27 +11 +Package_SON +VSONP-8-1EP_5x6_P1.27mm +SON, 8-Leads, Body 5x6x1mm, Pitch 1.27mm; (see Texas Instruments CSD18531Q5A http://www.ti.com/lit/ds/symlink/csd18531q5a.pdf) +VSONP 1.27 +0 +13 +3 +Package_SON +WSON-6-1EP_2x2mm_P0.65mm_EP1x1.6mm +WSON, 6 Pin (http://www.ti.com/lit/ds/symlink/tps61040.pdf#page=35), generated with kicad-footprint-generator ipc_noLead_generator.py +WSON NoLead +0 +9 +7 +Package_SON +WSON-6-1EP_2x2mm_P0.65mm_EP1x1.6mm_ThermalVias +WSON, 6 Pin (http://www.ti.com/lit/ds/symlink/tps61040.pdf#page=35), generated with kicad-footprint-generator ipc_noLead_generator.py +WSON NoLead +0 +12 +7 +Package_SON +WSON-6-1EP_3x3mm_P0.95mm +WSON6 3*3 MM, 0.95 PITCH; http://www.ti.com/lit/ds/symlink/lmr62421.pdf +WSON6 0.95 +0 +10 +7 +Package_SON +WSON-6_1.5x1.5mm_P0.5mm +WSON6, http://www.ti.com/lit/ds/symlink/tlv702.pdf +WSON6_1.5x1.5mm_P0.5mm +0 +6 +6 +Package_SON +WSON-8-1EP_2x2mm_P0.5mm_EP0.9x1.6mm +8-Lead Plastic WSON, 2x2mm Body, 0.5mm Pitch, WSON-8, http://www.ti.com/lit/ds/symlink/lm27761.pdf +WSON 8 1EP +0 +11 +9 +Package_SON +WSON-8-1EP_2x2mm_P0.5mm_EP0.9x1.6mm_ThermalVias +8-Lead Plastic WSON, 2x2mm Body, 0.5mm Pitch, WSON-8, http://www.ti.com/lit/ds/symlink/lm27761.pdf +WSON 8 1EP ThermalVias +0 +14 +9 +Package_SON +WSON-8-1EP_3x2.5mm_P0.5mm_EP1.2x1.5mm_PullBack +WSON, 8 Pin (http://www.ti.com/lit/ml/mpds400/mpds400.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +WSON NoLead +0 +13 +9 +Package_SON +WSON-8-1EP_3x2.5mm_P0.5mm_EP1.2x1.5mm_PullBack_ThermalVias +WSON, 8 Pin (http://www.ti.com/lit/ml/mpds400/mpds400.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +WSON NoLead +0 +18 +9 +Package_SON +WSON-8-1EP_3x3mm_P0.5mm_EP1.6x2.0mm +8-Lead Plastic WSON, 2x2mm Body, 0.5mm Pitch, WSON-8, http://www.ti.com/lit/ds/symlink/lm27761.pdf +WSON 8 1EP +0 +13 +9 +Package_SON +WSON-8-1EP_6x5mm_P1.27mm_EP3.4x4.3mm +WSON, 8 Pin (http://www.winbond.com/resource-files/w25q32jv%20revg%2003272018%20plus.pdf (page 68)), generated with kicad-footprint-generator ipc_noLead_generator.py +WSON NoLead +0 +13 +9 +Package_SON +WSON-8-1EP_6x5mm_P1.27mm_EP3.4x4mm +WSON, 8 Pin (http://ww1.microchip.com/downloads/en/AppNotes/S72030.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py +WSON NoLead +0 +13 +9 +Package_SON +WSON-8_4x4mm_P0.8mm +http://www.ti.com/lit/ml/mpds406/mpds406.pdf +WSON8_4x4mm_P0.8mm +0 +9 +9 +Package_SON +WSON-10-1EP_2.5x2.5mm_P0.5mm_EP1.2x2mm +WSON, 10 Pin (http://www.ti.com/lit/gpn/tps63030#page=24), generated with kicad-footprint-generator ipc_noLead_generator.py +WSON NoLead +0 +15 +11 +Package_SON +WSON-10-1EP_2.5x2.5mm_P0.5mm_EP1.2x2mm_ThermalVias +WSON, 10 Pin (http://www.ti.com/lit/gpn/tps63030#page=24), generated with kicad-footprint-generator ipc_noLead_generator.py +WSON NoLead +0 +22 +11 +Package_SON +WSON-10-1EP_2x3mm_P0.5mm_EP0.84x2.4mm +WSON-10 package 2x3mm body, pitch 0.5mm, see http://www.ti.com/lit/ds/symlink/tps62177.pdf +WSON 0.5 +0 +14 +11 +Package_SON +WSON-10-1EP_2x3mm_P0.5mm_EP0.84x2.4mm_ThermalVias +WSON-10 package 2x3mm body, pitch 0.5mm, thermal vias and counter-pad, see http://www.ti.com/lit/ds/symlink/tps62177.pdf +WSON 0.5 thermal vias +0 +17 +11 +Package_SON +WSON-10-1EP_4x3mm_P0.5mm_EP2.2x2mm +10-Lead Plastic WSON, 4x3mm Body, 0.5mm Pitch (http://www.ti.com/lit/ds/symlink/lm4990.pdf) +WSON 0.5 +0 +15 +11 +Package_SON +WSON-12-1EP_3x2mm_P0.5mm_EP1x2.65 +WSON-12 http://www.ti.com/lit/ds/symlink/lm27762.pdf +WSON-12 +0 +15 +13 +Package_SON +WSON-12-1EP_3x2mm_P0.5mm_EP1x2.65_ThermalVias +WSON-12 http://www.ti.com/lit/ds/symlink/lm27762.pdf +WSON-12 +0 +19 +13 +Package_SON +WSON-12-1EP_4x4mm_P0.5mm_EP2.6x3mm +WSON, 12 Pin (http://www.ti.com/lit/ds/symlink/ldc1312.pdf#page=62), generated with kicad-footprint-generator ipc_noLead_generator.py +WSON NoLead +0 +17 +13 +Package_SON +WSON-12-1EP_4x4mm_P0.5mm_EP2.6x3mm_ThermalVias +WSON, 12 Pin (http://www.ti.com/lit/ds/symlink/ldc1312.pdf#page=62), generated with kicad-footprint-generator ipc_noLead_generator.py +WSON NoLead +0 +27 +13 +Package_SON +WSON-14-1EP_4.0x4.0mm_P0.5mm_EP2.6x2.6mm +14-Lead Plastic Dual Flat, No Lead Package - 4.0x4.0x0.8 mm Body [WSON], http://www.ti.com/lit/ml/mpds421/mpds421.pdf +NHL014B +0 +19 +15 +Package_SON +WSON-16_3.3x1.35_P0.4mm +WSON-16 3.3 x 1.35mm Pitch 0.4mm http://www.chip.tomsk.ru/chip/chipdoc.nsf/Package/C67E729A4D6C883A4725793E004C8739!OpenDocument +WSON-16 3.3 x 1.35mm Pitch 0.4mm +0 +20 +17 +Package_SON +X2SON-8_1.4x1mm_P0.35mm +X2SON-8 1.4x1mm Pitch0.35mm http://www.ti.com/lit/ds/symlink/pca9306.pdf +X2SON-8 1.4x1mm Pitch0.35mm +0 +8 +8 +Package_SO_J-Lead +TSOC-6_3.76x3.94mm_P1.27mm +Maxim Integrated TSOC-6 D6+1,https://datasheets.maximintegrated.com/en/ds/DS2401.pdf, https://pdfserv.maximintegrated.com/land_patterns/90-0321.PDF +TSOC-6 +0 +6 +6 +Package_TO_SOT_SMD +ATPAK-2 +ATPAK SMD package, http://www.onsemi.com/pub/Collateral/ENA2192-D.PDF +ATPAK +0 +7 +3 +Package_TO_SOT_SMD +Analog_KS-4 +Analog Devices KS-4, http://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/sc70ks/ks_4.pdf +Analog Devices KS-4 (like EIAJ SC-82) +0 +4 +4 +Package_TO_SOT_SMD +Diodes_SOT-553 +Diodes SOT-553, https://www.diodes.com/assets/Package-Files/SOT553.pdf +SOT-553 +0 +5 +5 +Package_TO_SOT_SMD +HVSOF5 +HVSOF5, http://rohmfs.rohm.com/en/techdata_basic/ic/package/hvsof5_1-e.pdf, http://rohmfs.rohm.com/en/products/databook/datasheet/ic/sensor/hall/bu52001gul-e.pdf +HVSOF5 +0 +5 +5 +Package_TO_SOT_SMD +HVSOF6 +HVSOF6, http://rohmfs.rohm.com/en/techdata_basic/ic/package/hvsof6_1-e.pdf, http://rohmfs.rohm.com/en/products/databook/datasheet/ic/audio_video/video_amplifier/bh76106hfv-e.pdf +HVSOF6 +0 +7 +7 +Package_TO_SOT_SMD +Infineon_PG-HDSOP-10-1 +Infineon PG-HDSOP-10-1 (DDPAK), 20.96x6.5x2.3mm, slug up (https://www.infineon.com/cms/en/product/packages/PG-HDSOP/PG-HDSOP-10-1/) +hdsop 10 ddpak +0 +10 +10 +Package_TO_SOT_SMD +Infineon_PG-HSOF-8-1 +HSOF-8-1 [TOLL] power MOSFET (http://www.infineon.com/cms/en/product/packages/PG-HSOF/PG-HSOF-8-1/) +mosfet hsof toll +0 +53 +3 +Package_TO_SOT_SMD +Infineon_PG-HSOF-8-1_ThermalVias +HSOF-8-1 [TOLL] power MOSFET (http://www.infineon.com/cms/en/product/packages/PG-HSOF/PG-HSOF-8-1/) +mosfet hsof toll thermal vias +0 +96 +3 +Package_TO_SOT_SMD +Infineon_PG-HSOF-8-2 +HSOF-8-2 [TOLL] power MOSFET (http://www.infineon.com/cms/en/product/packages/PG-HSOF/PG-HSOF-8-2/) +mosfet hsof toll +0 +12 +4 +Package_TO_SOT_SMD +Infineon_PG-HSOF-8-2_ThermalVias +HSOF-8-2 [TOLL] power MOSFET (http://www.infineon.com/cms/en/product/packages/PG-HSOF/PG-HSOF-8-2/) +mosfet hsof toll thermal vias +0 +97 +4 +Package_TO_SOT_SMD +Infineon_PG-HSOF-8-2_ThermalVias2 +HSOF-8-2 [TOLL] power MOSFET (http://www.infineon.com/cms/en/product/packages/PG-HSOF/PG-HSOF-8-2/, https://www.infineon.com/dgdl/Infineon-ApplicationNote_600V_CoolMOS_C7_Gold_TOLL-AN-v01_00-EN.pdf?fileId=5546d4625b10283a015b144a1af70df6) +mosfet hsof toll thermal vias +0 +159 +4 +Package_TO_SOT_SMD +Infineon_PG-HSOF-8-3 +HSOF-8-3 power MOSFET (http://www.infineon.com/cms/en/product/packages/PG-HSOF/PG-HSOF-8-3/) +mosfet hsof +0 +25 +4 +Package_TO_SOT_SMD +Infineon_PG-HSOF-8-3_ThermalVias +HSOF-8-3 power MOSFET (http://www.infineon.com/cms/en/product/packages/PG-HSOF/PG-HSOF-8-3/) +mosfet hsof +0 +64 +4 +Package_TO_SOT_SMD +Infineon_PG-TO-220-7Lead_TabPin8 +Infineon PG-TO-220-7, Tab as Pin 8, see e.g. https://www.infineon.com/dgdl/Infineon-BTS50055-1TMC-DS-v01_00-EN.pdf?fileId=5546d4625a888733015aa9b0007235e9 +Infineon PG-TO-220-7 +0 +12 +8 +Package_TO_SOT_SMD +LFPAK33 +LFPAK33 SOT-1210 https://assets.nexperia.com/documents/outline-drawing/SOT1210.pdf +LFPAK33 SOT-1210 +0 +17 +5 +Package_TO_SOT_SMD +LFPAK56 +LFPAK56 https://assets.nexperia.com/documents/outline-drawing/SOT669.pdf +LFPAK56 SOT-669 Power-SO8 +0 +18 +5 +Package_TO_SOT_SMD +OnSemi_ECH8 +On Semiconductor ECH8, https://www.onsemi.com/pub/Collateral/318BF.PDF +ECH8 SOT28-FL SOT-28-FL +0 +8 +8 +Package_TO_SOT_SMD +PQFN_8x8 +Low Profile 8x8mm PQFN, Dual Cool 88, https://www.onsemi.com/pub/Collateral/FDMT80080DC-D.pdf +pqfn vdfn mosfet +0 +9 +3 +Package_TO_SOT_SMD +PowerMacro_M234_NoHole +TO-50-4 Power Macro Package Style M234 +TO-50-4 Power Macro Package Style M234 +0 +4 +4 +Package_TO_SOT_SMD +PowerMacro_M234_WithHole +TO-50-4 Power Macro Package Style M234 +TO-50-4 Power Macro Package Style M234 +0 +4 +4 +Package_TO_SOT_SMD +Rohm_HRP7 +Rohm HRP7 SMD package, http://rohmfs.rohm.com/en/techdata_basic/ic/package/hrp7_1-e.pdf, http://rohmfs.rohm.com/en/products/databook/datasheet/ic/motor/dc/bd621x-e.pdf +Rohm HRP7 SMD +0 +69 +7 +Package_TO_SOT_SMD +SC-59 +SC-59, https://lib.chipdip.ru/images/import_diod/original/SOT-23_SC-59.jpg +SC-59 +0 +3 +3 +Package_TO_SOT_SMD +SC-59_Handsoldering +SC-59, hand-soldering varaint, https://lib.chipdip.ru/images/import_diod/original/SOT-23_SC-59.jpg +SC-59 hand-soldering +0 +3 +3 +Package_TO_SOT_SMD +SC-70-8 +SC70-8 +SC70-8 +0 +8 +8 +Package_TO_SOT_SMD +SC-70-8_Handsoldering +SC70-8, Handsoldering +SC70-8 Handsoldering +0 +8 +8 +Package_TO_SOT_SMD +SC-82AA +SC-82AA +SC-82AA +0 +4 +4 +Package_TO_SOT_SMD +SC-82AA_Handsoldering +SC-82AA +SC-82AA +0 +4 +4 +Package_TO_SOT_SMD +SC-82AB +SC-82AB +SC-82AB +0 +4 +4 +Package_TO_SOT_SMD +SC-82AB_Handsoldering +SC-82AB +SC-82AB +0 +4 +4 +Package_TO_SOT_SMD +SOT-23 +SOT-23, Standard +SOT-23 +0 +3 +3 +Package_TO_SOT_SMD +SOT-23-5 +5-pin SOT23 package +SOT-23-5 +0 +5 +5 +Package_TO_SOT_SMD +SOT-23-5_HandSoldering +5-pin SOT23 package +SOT-23-5 hand-soldering +0 +5 +5 +Package_TO_SOT_SMD +SOT-23-6 +6-pin SOT-23 package +SOT-23-6 +0 +6 +6 +Package_TO_SOT_SMD +SOT-23-6_Handsoldering +6-pin SOT-23 package, Handsoldering +SOT-23-6 Handsoldering +0 +6 +6 +Package_TO_SOT_SMD +SOT-23-8 +8-pin SOT-23 package, http://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/sot-23rj/rj_8.pdf +SOT-23-8 +0 +8 +8 +Package_TO_SOT_SMD +SOT-23-8_Handsoldering +8-pin SOT-23 package, Handsoldering, http://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/sot-23rj/rj_8.pdf +SOT-23-8 Handsoldering +0 +8 +8 +Package_TO_SOT_SMD +SOT-23W +SOT-23W http://www.allegromicro.com/~/media/Files/Datasheets/A112x-Datasheet.ashx?la=en&hash=7BC461E058CC246E0BAB62433B2F1ECA104CA9D3 +SOT-23W +0 +3 +3 +Package_TO_SOT_SMD +SOT-23W_Handsoldering +SOT-23W http://www.allegromicro.com/~/media/Files/Datasheets/A112x-Datasheet.ashx?la=en&hash=7BC461E058CC246E0BAB62433B2F1ECA104CA9D3 +SOT-23W for handsoldering +0 +3 +3 +Package_TO_SOT_SMD +SOT-23_Handsoldering +SOT-23, Standard +SOT-23 +0 +3 +3 +Package_TO_SOT_SMD +SOT-89-3 +SOT-89-3, http://ww1.microchip.com/downloads/en/DeviceDoc/3L_SOT-89_MB_C04-029C.pdf +SOT-89-3 +0 +3 +3 +Package_TO_SOT_SMD +SOT-89-3_Handsoldering +SOT-89-3 Handsoldering +SOT-89-3 Handsoldering +0 +3 +3 +Package_TO_SOT_SMD +SOT-89-5 +SOT-89-5, http://www.e-devices.ricoh.co.jp/en/products/product_power/pkg/sot-89-5.pdf +SOT-89-5 +0 +5 +5 +Package_TO_SOT_SMD +SOT-89-5_Handsoldering +SOT-89-5, http://www.e-devices.ricoh.co.jp/en/products/product_power/pkg/sot-89-5.pdf +SOT-89-5 +0 +5 +5 +Package_TO_SOT_SMD +SOT-143 +SOT-143 +SOT-143 +0 +4 +4 +Package_TO_SOT_SMD +SOT-143R_Reverse +SOT-143R Reverse +SOT-143R Reverse +0 +4 +4 +Package_TO_SOT_SMD +SOT-143R_Reverse_Handsoldering +SOT-143R Reverse Handsoldering +SOT-143 Reverse Handsoldering +0 +4 +4 +Package_TO_SOT_SMD +SOT-143_Handsoldering +SOT-143 Handsoldering +SOT-143 Handsoldering +0 +4 +4 +Package_TO_SOT_SMD +SOT-223 +module CMS SOT223 4 pins +CMS SOT +0 +4 +4 +Package_TO_SOT_SMD +SOT-223-3_TabPin2 +module CMS SOT223 4 pins +CMS SOT +0 +4 +3 +Package_TO_SOT_SMD +SOT-223-5 +module CMS SOT223 5 pins, http://ww1.microchip.com/downloads/en/DeviceDoc/51751a.pdf +CMS SOT +0 +5 +5 +Package_TO_SOT_SMD +SOT-223-6 +module CMS SOT223 6 pins, http://www.ti.com/lit/ds/symlink/tps737.pdf +CMS SOT +0 +6 +6 +Package_TO_SOT_SMD +SOT-223-6_TabPin3 +module CMS SOT223 6 pins, http://www.ti.com/lit/ds/symlink/tps737.pdf +CMS SOT +0 +6 +5 +Package_TO_SOT_SMD +SOT-223-8 +module CMS SOT223 8 pins, https://www.diodes.com/assets/Datasheets/ZXSBMR16PT8.pdf +CMS SOT +0 +8 +8 +Package_TO_SOT_SMD +SOT-323_SC-70 +SOT-323, SC-70 +SOT-323 SC-70 +0 +3 +3 +Package_TO_SOT_SMD +SOT-323_SC-70_Handsoldering +SOT-323, SC-70 Handsoldering +SOT-323 SC-70 Handsoldering +0 +3 +3 +Package_TO_SOT_SMD +SOT-343_SC-70-4 +SOT-343, SC-70-4 +SOT-343 SC-70-4 +0 +4 +4 +Package_TO_SOT_SMD +SOT-343_SC-70-4_Handsoldering +SOT-343, SC-70-4, Handsoldering +SOT-343 SC-70-4 Handsoldering +0 +4 +4 +Package_TO_SOT_SMD +SOT-353_SC-70-5 +SOT-353, SC-70-5 +SOT-353 SC-70-5 +0 +5 +5 +Package_TO_SOT_SMD +SOT-353_SC-70-5_Handsoldering +SOT-353, SC-70-5, Handsoldering +SOT-353 SC-70-5 Handsoldering +0 +5 +5 +Package_TO_SOT_SMD +SOT-363_SC-70-6 +SOT-363, SC-70-6 +SOT-363 SC-70-6 +0 +6 +6 +Package_TO_SOT_SMD +SOT-363_SC-70-6_Handsoldering +SOT-363, SC-70-6, Handsoldering +SOT-363 SC-70-6 Handsoldering +0 +6 +6 +Package_TO_SOT_SMD +SOT-383F +8-pin SOT-383F, http://www.mouser.com/ds/2/80/CPDVR085V0C-HF-RevB-10783.pdf +SOT-383F +0 +9 +9 +Package_TO_SOT_SMD +SOT-383FL +8-pin SOT-383FL package, http://www.onsemi.com/pub_link/Collateral/ENA2267-D.PDF +SOT-383FL +0 +8 +8 +Package_TO_SOT_SMD +SOT-416 +SOT-416, https://www.nxp.com/docs/en/package-information/SOT416.pdf +SOT-416 +0 +3 +3 +Package_TO_SOT_SMD +SOT-523 +SOT523, https://www.diodes.com/assets/Package-Files/SOT523.pdf +SOT-523 +0 +3 +3 +Package_TO_SOT_SMD +SOT-543 +SOT-543 4 lead surface package +SOT-543 SC-107A EMD4 +0 +4 +4 +Package_TO_SOT_SMD +SOT-553 +SOT553 +SOT-553 +0 +5 +5 +Package_TO_SOT_SMD +SOT-563 +SOT563 +SOT-563 +0 +6 +6 +Package_TO_SOT_SMD +SOT-665 +SOT665 +SOT-665 +0 +5 +5 +Package_TO_SOT_SMD +SOT-666 +SOT666 +SOT-666 +0 +6 +6 +Package_TO_SOT_SMD +SOT-723 +http://toshiba.semicon-storage.com/info/docget.jsp?did=5879&prodName=RN1104MFV +sot 723 +0 +3 +3 +Package_TO_SOT_SMD +SOT-883 +SOT-883, https://assets.nexperia.com/documents/outline-drawing/SOT883.pdf +SOT-883 +0 +3 +3 +Package_TO_SOT_SMD +SOT-886 +SOT-886 +SOT-886 +0 +6 +6 +Package_TO_SOT_SMD +SOT-963 +SOT 963 6 pins package 1x0.8mm pitch 0.35mm +SOT 963 6 pins package 1x0.8mm pitch 0.35mm +0 +6 +6 +Package_TO_SOT_SMD +SOT-1123 +SOT-1123 small outline transistor (see http://www.onsemi.com/pub/Collateral/NST3906F3-D.PDF) +SOT-1123 transistor +0 +3 +3 +Package_TO_SOT_SMD +SOT-1333-1 +SOT-1333-1 +SOT-1333-1 +0 +9 +9 +Package_TO_SOT_SMD +SOT-1334-1 +SOT-1334-1 +SOT-1334-1 +0 +14 +14 +Package_TO_SOT_SMD +SuperSOT-3 +3-pin SuperSOT package https://www.fairchildsemi.com/package-drawings/MA/MA03B.pdf +SuperSOT-3 SSOT-3 +0 +3 +3 +Package_TO_SOT_SMD +SuperSOT-6 +6-pin SuperSOT package http://www.mouser.com/ds/2/149/FMB5551-889214.pdf +SuperSOT-6 SSOT-6 +0 +6 +6 +Package_TO_SOT_SMD +SuperSOT-8 +8-pin SuperSOT package, http://www.icbank.com/icbank_data/semi_package/ssot8_dim.pdf +SuperSOT-8 SSOT-8 +0 +8 +8 +Package_TO_SOT_SMD +TDSON-8-1 +Power MOSFET package, TDSON-8-1, 5.15x5.9mm (https://www.infineon.com/cms/en/product/packages/PG-TDSON/PG-TDSON-8-1/) +tdson +0 +14 +5 +Package_TO_SOT_SMD +TO-50-3_LongPad-NoHole_Housing +TO-50-3 Macro T Package Style M236 +TO-50-3 Macro T Package Style M236 +0 +3 +3 +Package_TO_SOT_SMD +TO-50-3_LongPad-WithHole_Housing +TO-50-3 Macro T Package Style M236 +TO-50-3 Macro T Package Style M236 +0 +3 +3 +Package_TO_SOT_SMD +TO-50-3_ShortPad-NoHole_Housing +TO-50-3 Macro T Package Style M236 +TO-50-3 Macro T Package Style M236 +0 +3 +3 +Package_TO_SOT_SMD +TO-50-3_ShortPad-WithHole_Housing +TO-50-3 Macro T Package Style M236 +TO-50-3 Macro T Package Style M236 +0 +3 +3 +Package_TO_SOT_SMD +TO-50-4_LongPad-NoHole_Housing +TO-50-4 Macro X Package Style M238 +TO-50-4 Macro X Package Style M238 +0 +4 +4 +Package_TO_SOT_SMD +TO-50-4_LongPad-WithHole_Housing +TO-50-4 Macro X Package Style M238 +TO-50-4 Macro X Package Style M238 +0 +4 +4 +Package_TO_SOT_SMD +TO-50-4_ShortPad-NoHole_Housing +TO-50-4 Macro X Package Style M238 +TO-50-4 Macro X Package Style M238 +0 +4 +4 +Package_TO_SOT_SMD +TO-50-4_ShortPad-WithHole_Housing +TO-50-4 Macro X Package Style M238 +TO-50-4 Macro X Package Style M238 +0 +4 +4 +Package_TO_SOT_SMD +TO-252-2 +TO-252 / DPAK SMD package, http://www.infineon.com/cms/en/product/packages/PG-TO252/PG-TO252-3-1/ +DPAK TO-252 DPAK-3 TO-252-3 SOT-428 +0 +7 +3 +Package_TO_SOT_SMD +TO-252-2_TabPin1 +TO-252-2, tab to pin 1 https://www.wolfspeed.com/media/downloads/87/CSD01060.pdf +TO-252-2 diode +0 +7 +2 +Package_TO_SOT_SMD +TO-252-3_TabPin2 +TO-252 / DPAK SMD package, http://www.infineon.com/cms/en/product/packages/PG-TO252/PG-TO252-3-1/ +DPAK TO-252 DPAK-3 TO-252-3 SOT-428 +0 +8 +3 +Package_TO_SOT_SMD +TO-252-3_TabPin4 +TO-252 / DPAK SMD package, http://www.infineon.com/cms/en/product/packages/PG-TO252/PG-TO252-3-1/ +DPAK TO-252 DPAK-3 TO-252-3 SOT-428 +0 +8 +4 +Package_TO_SOT_SMD +TO-252-4 +TO-252 / DPAK SMD package, http://www.infineon.com/cms/en/product/packages/PG-TO252/PG-TO252-5-11/ +DPAK TO-252 DPAK-5 TO-252-5 +0 +9 +5 +Package_TO_SOT_SMD +TO-252-5_TabPin3 +TO-252 / DPAK SMD package, http://www.infineon.com/cms/en/product/packages/PG-TO252/PG-TO252-5-11/ +DPAK TO-252 DPAK-5 TO-252-5 +0 +10 +5 +Package_TO_SOT_SMD +TO-252-5_TabPin6 +TO-252 / DPAK SMD package, http://www.infineon.com/cms/en/product/packages/PG-TO252/PG-TO252-5-11/ +DPAK TO-252 DPAK-5 TO-252-5 +0 +10 +6 +Package_TO_SOT_SMD +TO-263-2 +TO-263 / D2PAK / DDPAK SMD package, http://www.infineon.com/cms/en/product/packages/PG-TO263/PG-TO263-3-1/ +D2PAK DDPAK TO-263 D2PAK-3 TO-263-3 SOT-404 +0 +7 +3 +Package_TO_SOT_SMD +TO-263-2_TabPin1 +TO-263 / D2PAK / DDPAK SMD package, tab to pin 1, https://www.wolfspeed.com/media/downloads/137/C3D06060G.pdf +D2PAK DDPAK TO-263 D2PAK-3 TO-263-3 SOT-404 diode +0 +7 +2 +Package_TO_SOT_SMD +TO-263-3_TabPin2 +TO-263 / D2PAK / DDPAK SMD package, http://www.infineon.com/cms/en/product/packages/PG-TO263/PG-TO263-3-1/ +D2PAK DDPAK TO-263 D2PAK-3 TO-263-3 SOT-404 +0 +8 +3 +Package_TO_SOT_SMD +TO-263-3_TabPin4 +TO-263 / D2PAK / DDPAK SMD package, http://www.infineon.com/cms/en/product/packages/PG-TO263/PG-TO263-3-1/ +D2PAK DDPAK TO-263 D2PAK-3 TO-263-3 SOT-404 +0 +8 +4 +Package_TO_SOT_SMD +TO-263-4 +TO-263 / D2PAK / DDPAK SMD package, http://www.infineon.com/cms/en/product/packages/PG-TO263/PG-TO263-5-1/ +D2PAK DDPAK TO-263 D2PAK-5 TO-263-5 SOT-426 +0 +9 +5 +Package_TO_SOT_SMD +TO-263-5_TabPin3 +TO-263 / D2PAK / DDPAK SMD package, http://www.infineon.com/cms/en/product/packages/PG-TO263/PG-TO263-5-1/ +D2PAK DDPAK TO-263 D2PAK-5 TO-263-5 SOT-426 +0 +10 +5 +Package_TO_SOT_SMD +TO-263-5_TabPin6 +TO-263 / D2PAK / DDPAK SMD package, http://www.infineon.com/cms/en/product/packages/PG-TO263/PG-TO263-5-1/ +D2PAK DDPAK TO-263 D2PAK-5 TO-263-5 SOT-426 +0 +10 +6 +Package_TO_SOT_SMD +TO-263-6 +TO-263 / D2PAK / DDPAK SMD package, http://www.infineon.com/cms/en/product/packages/PG-TO263/PG-TO263-7-1/ +D2PAK DDPAK TO-263 D2PAK-7 TO-263-7 SOT-427 +0 +11 +7 +Package_TO_SOT_SMD +TO-263-7_TabPin4 +TO-263 / D2PAK / DDPAK SMD package, http://www.infineon.com/cms/en/product/packages/PG-TO263/PG-TO263-7-1/ +D2PAK DDPAK TO-263 D2PAK-7 TO-263-7 SOT-427 +0 +12 +7 +Package_TO_SOT_SMD +TO-263-7_TabPin8 +TO-263 / D2PAK / DDPAK SMD package, http://www.infineon.com/cms/en/product/packages/PG-TO263/PG-TO263-7-1/ +D2PAK DDPAK TO-263 D2PAK-7 TO-263-7 SOT-427 +0 +12 +8 +Package_TO_SOT_SMD +TO-263-9_TabPin5 +TO-263 / D2PAK / DDPAK SMD package, http://www.ti.com/lit/ds/symlink/lm4755.pdf +D2PAK DDPAK TO-263 D2PAK-9 TO-263-9 +0 +14 +9 +Package_TO_SOT_SMD +TO-263-9_TabPin10 +TO-263 / D2PAK / DDPAK SMD package, http://www.ti.com/lit/ds/symlink/lm4755.pdf +D2PAK DDPAK TO-263 D2PAK-9 TO-263-9 +0 +14 +10 +Package_TO_SOT_SMD +TO-268-2 +TO-268/D3PAK SMD package, http://www.icbank.com/icbank_data/semi_package/to268aa_dim.pdf +D3PAK TO-268 D3PAK-3 TO-268-3 +0 +7 +3 +Package_TO_SOT_SMD +TO-269AA +SMD package TO-269AA (e.g. diode bridge), see http://www.vishay.com/docs/88854/padlayouts.pdf +TO-269AA MBS diode bridge +0 +4 +4 +Package_TO_SOT_SMD +TO-277A +Thermal enhanced ultra thin SMD package; 3 leads; body: 4.3x6.1x0.43mm, https://www.vishay.com/docs/95570/to-277asmpc.pdf +TO-277A SMPC +0 +12 +3 +Package_TO_SOT_SMD +TO-277B +TO-227B https://media.digikey.com/pdf/Data%20Sheets/Littelfuse%20PDFs/DST2050S.pdf +TO-277B +0 +9 +3 +Package_TO_SOT_SMD +TSOT-23 +3-pin TSOT23 package, http://www.analog.com.tw/pdf/All_In_One.pdf +TSOT-23 +0 +3 +3 +Package_TO_SOT_SMD +TSOT-23-5 +5-pin TSOT23 package, http://cds.linear.com/docs/en/packaging/SOT_5_05-08-1635.pdf +TSOT-23-5 +0 +5 +5 +Package_TO_SOT_SMD +TSOT-23-5_HandSoldering +5-pin TSOT23 package, http://cds.linear.com/docs/en/packaging/SOT_5_05-08-1635.pdf +TSOT-23-5 Hand-soldering +0 +5 +5 +Package_TO_SOT_SMD +TSOT-23-6 +6-pin TSOT23 package, http://cds.linear.com/docs/en/packaging/SOT_6_05-08-1636.pdf +TSOT-23-6 MK06A TSOT-6 +0 +6 +6 +Package_TO_SOT_SMD +TSOT-23-6_HandSoldering +6-pin TSOT23 package, http://cds.linear.com/docs/en/packaging/SOT_6_05-08-1636.pdf +TSOT-23-6 MK06A TSOT-6 Hand-soldering +0 +6 +6 +Package_TO_SOT_SMD +TSOT-23-8 +8-pin TSOT23 package, http://cds.linear.com/docs/en/packaging/SOT_8_05-08-1637.pdf +TSOT-23-8 +0 +8 +8 +Package_TO_SOT_SMD +TSOT-23-8_HandSoldering +8-pin TSOT23 package, http://cds.linear.com/docs/en/packaging/SOT_8_05-08-1637.pdf +TSOT-23-8 Hand-soldering +0 +8 +8 +Package_TO_SOT_SMD +TSOT-23_HandSoldering +5-pin TSOT23 package, http://cds.linear.com/docs/en/packaging/SOT_5_05-08-1635.pdf +TSOT-23 Hand-soldering +0 +3 +3 +Package_TO_SOT_SMD +Texas_DRT-3 +Texas Instrument DRT-3 1x0.8mm Pitch 0.7mm http://www.ti.com/lit/ds/symlink/tpd2eusb30.pdf +DRT-3 1x0.8mm Pitch 0.7mm +0 +3 +3 +Package_TO_SOT_SMD +Texas_NDQ +Texas Instruments, NDQ, 5 pin (https://www.ti.com/lit/ml/mmsf022/mmsf022.pdf) +ti pfm dap +0 +6 +6 +Package_TO_SOT_SMD +Texas_NDY0011A +TO-PMOD-11 11-pin switching regulator package, http://www.ti.com/lit/ml/mmsf025/mmsf025.pdf +Texas TO-PMOD NDY00011A +0 +12 +12 +Package_TO_SOT_SMD +Texas_R-PDSO-G6 +R-PDSO-G6, http://www.ti.com/lit/ds/slis144b/slis144b.pdf +R-PDSO-G6 SC-70-6 +0 +6 +6 +Package_TO_SOT_SMD +VSOF5 +VSOF5 +VSOF5 +0 +5 +5 +Package_TO_SOT_SMD +Vishay_PowerPAK_SC70-6L_Dual +Vishay PowerPAK SC70 dual transistor package http://www.vishay.com/docs/70487/70487.pdf +powerpak sc70 sc-70 dual +0 +8 +6 +Package_TO_SOT_SMD +Vishay_PowerPAK_SC70-6L_Single +Vishay PowerPAK SC70 single transistor package http://www.vishay.com/docs/70486/70486.pdf +powerpak sc70 sc-70 +0 +6 +3 +Package_TO_SOT_THT +Fairchild_TO-220F-6L +Fairchild TO-220F-6L, http://www.mouser.com/ds/2/149/FSL136MRT-113334.pdf +Fairchild TO-220F-6L +0 +6 +6 +Package_TO_SOT_THT +Heraeus_TO-92-2 +TO-92 2-pin variant by Heraeus, drill 0.75mm (http://www.produktinfo.conrad.com/datenblaetter/175000-199999/181293-da-01-de-TO92_Temperatursensor_PT1000_32209225.pdf) +to-92 +0 +2 +2 +Package_TO_SOT_THT +NEC_Molded_7x4x9mm +Molded Japan Transistor Package 7x4x9mm^3, http://rtellason.com/transdata/2sb734.pdf +Japan transistor +0 +3 +3 +Package_TO_SOT_THT +PowerIntegrations_TO-220-7C +Non Isolated Modified TO-220 7pin Package, see http://www.farnell.com/datasheets/5793.pdf +Power Integration Y Package +0 +6 +6 +Package_TO_SOT_THT +SIPAK-1EP_Horizontal_TabDown +SIPAK, Horizontal, RM 2.286mm +SIPAK Horizontal RM 2.286mm +0 +4 +4 +Package_TO_SOT_THT +SIPAK_Vertical +SIPAK, Vertical, RM 2.286mm +SIPAK Vertical RM 2.286mm +0 +3 +3 +Package_TO_SOT_THT +SOD-70_P2.54mm +Plastic near cylindrical package Sod-70 see: https://www.nxp.com/docs/en/data-sheet/KTY81_SER.pdf [StepUp generated footprint] +Sod-70 +0 +2 +2 +Package_TO_SOT_THT +SOD-70_P5.08mm +Plastic near cylindrical package Sod-70 see: https://www.nxp.com/docs/en/data-sheet/KTY81_SER.pdf [StepUp generated footprint] +Sod-70 +0 +2 +2 +Package_TO_SOT_THT +SOT-227 +SOT-227 / SOT-227B / ISOTOP, M4 mounting screws (https://www.vishay.com/docs/95423/sot227g2.pdf, https://www.vishay.com/docs/95793/vs-fc420sa10.pdf) +sot 227 isotop +0 +8 +4 +Package_TO_SOT_THT +TO-3 +Transistor TO-3 +TR TO-3 TO3 TO-204 +0 +4 +3 +Package_TO_SOT_THT +TO-3P-3_Horizontal_TabDown +TO-3P-3, Horizontal, RM 5.45mm, , see https://toshiba.semicon-storage.com/ap-en/design-support/package/detail.TO-3P(N).html +TO-3P-3 Horizontal RM 5.45mm +0 +3 +3 +Package_TO_SOT_THT +TO-3P-3_Horizontal_TabUp +TO-3P-3, Horizontal, RM 5.45mm, , see https://toshiba.semicon-storage.com/ap-en/design-support/package/detail.TO-3P(N).html +TO-3P-3 Horizontal RM 5.45mm +0 +3 +3 +Package_TO_SOT_THT +TO-3P-3_Vertical +TO-3P-3, Vertical, RM 5.45mm, , see https://toshiba.semicon-storage.com/ap-en/design-support/package/detail.TO-3P(N).html +TO-3P-3 Vertical RM 5.45mm +0 +3 +3 +Package_TO_SOT_THT +TO-3PB-3_Horizontal_TabDown +TO-3PB-3, Horizontal, RM 5.45mm, , see http://www.onsemi.com/pub/Collateral/340AC.PDF +TO-3PB-3 Horizontal RM 5.45mm +0 +3 +3 +Package_TO_SOT_THT +TO-3PB-3_Horizontal_TabUp +TO-3PB-3, Horizontal, RM 5.45mm, , see http://www.onsemi.com/pub/Collateral/340AC.PDF +TO-3PB-3 Horizontal RM 5.45mm +0 +3 +3 +Package_TO_SOT_THT +TO-3PB-3_Vertical +TO-3PB-3, Vertical, RM 5.45mm, , see http://www.onsemi.com/pub/Collateral/340AC.PDF +TO-3PB-3 Vertical RM 5.45mm +0 +3 +3 +Package_TO_SOT_THT +TO-5-2 +TO-5-2 +TO-5-2 +0 +2 +2 +Package_TO_SOT_THT +TO-5-2_Window +TO-5-2_Window, Window +TO-5-2_Window Window +0 +2 +2 +Package_TO_SOT_THT +TO-5-3 +TO-5-3 +TO-5-3 +0 +3 +3 +Package_TO_SOT_THT +TO-5-3_Window +TO-5-3_Window, Window +TO-5-3_Window Window +0 +3 +3 +Package_TO_SOT_THT +TO-5-4 +TO-5-4 +TO-5-4 +0 +4 +4 +Package_TO_SOT_THT +TO-5-4_Window +TO-5-4_Window, Window +TO-5-4_Window Window +0 +4 +4 +Package_TO_SOT_THT +TO-5-6 +TO-5-6 +TO-5-6 +0 +6 +6 +Package_TO_SOT_THT +TO-5-6_Window +TO-5-6_Window, Window +TO-5-6_Window Window +0 +6 +6 +Package_TO_SOT_THT +TO-5-8 +TO-5-8 +TO-5-8 +0 +8 +8 +Package_TO_SOT_THT +TO-5-8_PD5.08 +TO-5-8_PD5.08 +TO-5-8_PD5.08 +0 +8 +8 +Package_TO_SOT_THT +TO-5-8_PD5.08_Window +TO-5-8_PD5.08_Window, Window +TO-5-8_PD5.08_Window Window +0 +8 +8 +Package_TO_SOT_THT +TO-5-8_Window +TO-5-8_Window, Window +TO-5-8_Window Window +0 +8 +8 +Package_TO_SOT_THT +TO-5-10 +TO-5-10 +TO-5-10 +0 +10 +10 +Package_TO_SOT_THT +TO-5-10_Window +TO-5-10_Window, Window +TO-5-10_Window Window +0 +10 +10 +Package_TO_SOT_THT +TO-8-2 +TO-8-2 +TO-8-2 +0 +2 +2 +Package_TO_SOT_THT +TO-8-2_Window +TO-8-2_Window, Window +TO-8-2_Window Window +0 +2 +2 +Package_TO_SOT_THT +TO-8-3 +TO-8-3 +TO-8-3 +0 +3 +3 +Package_TO_SOT_THT +TO-8-3_Window +TO-8-3_Window, Window +TO-8-3_Window Window +0 +3 +3 +Package_TO_SOT_THT +TO-11-2 +TO-11-2 +TO-11-2 +0 +2 +2 +Package_TO_SOT_THT +TO-11-2_Window +TO-11-2_Window, Window +TO-11-2_Window Window +0 +2 +2 +Package_TO_SOT_THT +TO-11-3 +TO-11-3 +TO-11-3 +0 +3 +3 +Package_TO_SOT_THT +TO-11-3_Window +TO-11-3_Window, Window +TO-11-3_Window Window +0 +3 +3 +Package_TO_SOT_THT +TO-12-4 +TO-12-4 +TO-12-4 +0 +4 +4 +Package_TO_SOT_THT +TO-12-4_Window +TO-12-4_Window, Window +TO-12-4_Window Window +0 +4 +4 +Package_TO_SOT_THT +TO-17-4 +TO-17-4 +TO-17-4 +0 +4 +4 +Package_TO_SOT_THT +TO-17-4_Window +TO-17-4_Window, Window +TO-17-4_Window Window +0 +4 +4 +Package_TO_SOT_THT +TO-18-2 +TO-18-2 +TO-18-2 +0 +2 +2 +Package_TO_SOT_THT +TO-18-2_Lens +TO-18-2_Lens, Lens +TO-18-2_Lens Lens +0 +2 +2 +Package_TO_SOT_THT +TO-18-2_Window +TO-18-2_Window, Window +TO-18-2_Window Window +0 +2 +2 +Package_TO_SOT_THT +TO-18-3 +TO-18-3 +TO-18-3 +0 +3 +3 +Package_TO_SOT_THT +TO-18-3_Lens +TO-18-3_Lens, Lens +TO-18-3_Lens Lens +0 +3 +3 +Package_TO_SOT_THT +TO-18-3_Window +TO-18-3_Window, Window +TO-18-3_Window Window +0 +3 +3 +Package_TO_SOT_THT +TO-18-4 +TO-18-4 +TO-18-4 +0 +4 +4 +Package_TO_SOT_THT +TO-18-4_Lens +TO-18-4_Lens, Lens +TO-18-4_Lens Lens +0 +4 +4 +Package_TO_SOT_THT +TO-18-4_Window +TO-18-4_Window, Window +TO-18-4_Window Window +0 +4 +4 +Package_TO_SOT_THT +TO-33-4 +TO-33-4 +TO-33-4 +0 +4 +4 +Package_TO_SOT_THT +TO-33-4_Window +TO-33-4_Window, Window +TO-33-4_Window Window +0 +4 +4 +Package_TO_SOT_THT +TO-38-2 +TO-38-2 +TO-38-2 +0 +2 +2 +Package_TO_SOT_THT +TO-38-2_Window +TO-38-2_Window, Window +TO-38-2_Window Window +0 +2 +2 +Package_TO_SOT_THT +TO-38-3 +TO-38-3 +TO-38-3 +0 +3 +3 +Package_TO_SOT_THT +TO-38-3_Window +TO-38-3_Window, Window +TO-38-3_Window Window +0 +3 +3 +Package_TO_SOT_THT +TO-39-2 +TO-39-2 +TO-39-2 +0 +2 +2 +Package_TO_SOT_THT +TO-39-2_Window +TO-39-2_Window, Window +TO-39-2_Window Window +0 +2 +2 +Package_TO_SOT_THT +TO-39-3 +TO-39-3 +TO-39-3 +0 +3 +3 +Package_TO_SOT_THT +TO-39-3_Window +TO-39-3_Window, Window +TO-39-3_Window Window +0 +3 +3 +Package_TO_SOT_THT +TO-39-4 +TO-39-4 +TO-39-4 +0 +4 +4 +Package_TO_SOT_THT +TO-39-4_Window +TO-39-4_Window, Window +TO-39-4_Window Window +0 +4 +4 +Package_TO_SOT_THT +TO-39-6 +TO-39-6 +TO-39-6 +0 +6 +6 +Package_TO_SOT_THT +TO-39-6_Window +TO-39-6_Window, Window +TO-39-6_Window Window +0 +6 +6 +Package_TO_SOT_THT +TO-39-8 +TO-39-8 +TO-39-8 +0 +8 +8 +Package_TO_SOT_THT +TO-39-8_Window +TO-39-8_Window, Window +TO-39-8_Window Window +0 +8 +8 +Package_TO_SOT_THT +TO-39-10 +TO-39-10 +TO-39-10 +0 +10 +10 +Package_TO_SOT_THT +TO-39-10_Window +TO-39-10_Window, Window +TO-39-10_Window Window +0 +10 +10 +Package_TO_SOT_THT +TO-46-2 +TO-46-2 +TO-46-2 +0 +2 +2 +Package_TO_SOT_THT +TO-46-2_Pin2Center +TO-46-2, Pin2 at center of package, Thorlabs photodiodes +TO-46-2 Thorlabs +0 +2 +2 +Package_TO_SOT_THT +TO-46-2_Pin2Center_Window +TO-46-2, Pin2 at center of package, Thorlabs photodiodes +TO-46-2 Thorlabs +0 +2 +2 +Package_TO_SOT_THT +TO-46-2_Window +TO-46-2_Window, Window +TO-46-2_Window Window +0 +2 +2 +Package_TO_SOT_THT +TO-46-3 +TO-46-3 +TO-46-3 +0 +3 +3 +Package_TO_SOT_THT +TO-46-3_Pin2Center +TO-46-3, Pin2 at center of package, Thorlabs photodiodes, https://www.thorlabs.de/drawings/374b6862eb3b5a04-9360B5F6-5056-2306-D912111C06C3F830/FDGA05-SpecSheet.pdf +TO-46-3 Thorlabs +0 +3 +3 +Package_TO_SOT_THT +TO-46-3_Pin2Center_Window +TO-46-3, Pin2 at center of package, Thorlabs photodiodes, https://www.thorlabs.de/drawings/374b6862eb3b5a04-9360B5F6-5056-2306-D912111C06C3F830/FDGA05-SpecSheet.pdf +TO-46-3 Thorlabs +0 +3 +3 +Package_TO_SOT_THT +TO-46-3_Window +TO-46-3_Window, Window +TO-46-3_Window Window +0 +3 +3 +Package_TO_SOT_THT +TO-46-4 +TO-46-4 +TO-46-4 +0 +4 +4 +Package_TO_SOT_THT +TO-46-4_Window +TO-46-4_Window, Window +TO-46-4_Window Window +0 +4 +4 +Package_TO_SOT_THT +TO-52-2 +TO-52-2 +TO-52-2 +0 +2 +2 +Package_TO_SOT_THT +TO-52-2_Window +TO-52-2_Window, Window +TO-52-2_Window Window +0 +2 +2 +Package_TO_SOT_THT +TO-52-3 +TO-52-3 +TO-52-3 +0 +3 +3 +Package_TO_SOT_THT +TO-52-3_Window +TO-52-3_Window, Window +TO-52-3_Window Window +0 +3 +3 +Package_TO_SOT_THT +TO-72-4 +TO-72-4 +TO-72-4 +0 +4 +4 +Package_TO_SOT_THT +TO-72-4_Window +TO-72-4_Window, Window +TO-72-4_Window Window +0 +4 +4 +Package_TO_SOT_THT +TO-75-6 +TO-75-6 +TO-75-6 +0 +6 +6 +Package_TO_SOT_THT +TO-75-6_Window +TO-75-6_Window, Window +TO-75-6_Window Window +0 +6 +6 +Package_TO_SOT_THT +TO-78-6 +TO-78-6 +TO-78-6 +0 +6 +6 +Package_TO_SOT_THT +TO-78-6_Window +TO-78-6_Window, Window +TO-78-6_Window Window +0 +6 +6 +Package_TO_SOT_THT +TO-78-8 +TO-78-8 +TO-78-8 +0 +8 +8 +Package_TO_SOT_THT +TO-78-8_Window +TO-78-8_Window, Window +TO-78-8_Window Window +0 +8 +8 +Package_TO_SOT_THT +TO-78-10 +TO-78-10 +TO-78-10 +0 +10 +10 +Package_TO_SOT_THT +TO-78-10_Window +TO-78-10_Window, Window +TO-78-10_Window Window +0 +10 +10 +Package_TO_SOT_THT +TO-92 +TO-92 leads molded, narrow, drill 0.75mm (see NXP sot054_po.pdf) +to-92 sc-43 sc-43a sot54 PA33 transistor +0 +3 +3 +Package_TO_SOT_THT +TO-92-2 +TO-92 2-pin leads in-line, narrow, oval pads, drill 0.75mm (see NXP sot054_po.pdf) +to-92 sc-43 sc-43a sot54 PA33 diode SOD70 +0 +2 +2 +Package_TO_SOT_THT +TO-92-2_Horizontal1 +2-pin TO-92 horizontal, leads molded, narrow, drill 0.75mm (see NXP sot054_po.pdf) +to-92 sc-43 sc-43a sot54 PA33 temperature sensor diode +0 +2 +2 +Package_TO_SOT_THT +TO-92-2_Horizontal2 +2-pin TO-92 horizontal, leads molded, narrow, drill 0.75mm (see NXP sot054_po.pdf) +to-92 sc-43 sc-43a sot54 PA33 temperature sensor diode +0 +2 +2 +Package_TO_SOT_THT +TO-92-2_W4.0mm_Horizontal_FlatSideDown +TO-92 horizontal, leads in-line, narrow, oval pads, drill 0.75mm (see NXP sot054_po.pdf) +to-92 sc-43 sc-43a sot54 PA33 transistor +0 +2 +2 +Package_TO_SOT_THT +TO-92-2_W4.0mm_Horizontal_FlatSideUp +TO-92 horizontal, leads in-line, narrow, oval pads, drill 0.75mm (see NXP sot054_po.pdf) +to-92 sc-43 sc-43a sot54 PA33 transistor +0 +2 +2 +Package_TO_SOT_THT +TO-92-2_Wide +TO-92 2-pin leads in-line, wide, drill 0.75mm +to-92 sc-43 sc-43a sot54 PA33 diode SOD70 +0 +2 +2 +Package_TO_SOT_THT +TO-92Flat +TO-92Flat package, often used for hall sensors, drill 0.75mm (see e.g. http://www.ti.com/lit/ds/symlink/drv5023.pdf) +to-92Flat hall sensor +0 +3 +3 +Package_TO_SOT_THT +TO-92L +TO-92L leads in-line (large body variant of TO-92), also known as TO-226, wide, drill 0.75mm (see https://www.diodes.com/assets/Package-Files/TO92L.pdf and http://www.ti.com/lit/an/snoa059/snoa059.pdf) +TO-92L Molded Narrow transistor +0 +3 +3 +Package_TO_SOT_THT +TO-92L_HandSolder +TO-92L leads in-line (large body variant of TO-92), also known as TO-226, wide, drill 0.75mm, hand-soldering variant with enlarged pads (see https://www.diodes.com/assets/Package-Files/TO92L.pdf and http://www.ti.com/lit/an/snoa059/snoa059.pdf) +to-92 sc-43 sc-43a sot54 PA33 transistor +0 +3 +3 +Package_TO_SOT_THT +TO-92L_Inline +TO-92L leads in-line (large body variant of TO-92), also known as TO-226, wide, drill 0.75mm (see https://www.diodes.com/assets/Package-Files/TO92L.pdf and http://www.ti.com/lit/an/snoa059/snoa059.pdf) +TO-92L Inline Wide transistor +0 +3 +3 +Package_TO_SOT_THT +TO-92L_Inline_Wide +TO-92L leads in-line (large body variant of TO-92), also known as TO-226, wide, drill 0.75mm (see https://www.diodes.com/assets/Package-Files/TO92L.pdf and http://www.ti.com/lit/an/snoa059/snoa059.pdf) +TO-92L Inline Wide transistor +0 +3 +3 +Package_TO_SOT_THT +TO-92L_Wide +TO-92L leads in-line (large body variant of TO-92), also known as TO-226, wide, drill 0.75mm (see https://www.diodes.com/assets/Package-Files/TO92L.pdf and http://www.ti.com/lit/an/snoa059/snoa059.pdf) +TO-92L Molded Wide transistor +0 +3 +3 +Package_TO_SOT_THT +TO-92Mini-2 +TO-92Mini package, drill 0.6mm (https://media.digikey.com/pdf/Data%20Sheets/Infineon%20PDFs/KT,KTY.pdf) +to-92Mini transistor +0 +2 +2 +Package_TO_SOT_THT +TO-92S +TO-92S package, drill 0.75mm (https://www.diodes.com/assets/Package-Files/TO92S%20(Type%20B).pdf) +to-92S transistor +0 +3 +3 +Package_TO_SOT_THT +TO-92S-2 +TO-92S package, 2-pin, drill 0.75mm (https://www.diodes.com/assets/Package-Files/TO92S%20(Type%20B).pdf) +to-92S transistor +0 +2 +2 +Package_TO_SOT_THT +TO-92S_Wide +TO-92S_Wide package, drill 0.75mm (https://www.diodes.com/assets/Package-Files/TO92S%20(Type%20B).pdf) +TO-92S_Wide transistor +0 +3 +3 +Package_TO_SOT_THT +TO-92_HandSolder +TO-92 leads molded, narrow, drill 0.75mm, handsoldering variant with enlarged pads (see NXP sot054_po.pdf) +to-92 sc-43 sc-43a sot54 PA33 transistor +0 +3 +3 +Package_TO_SOT_THT +TO-92_Horizontal1 +TO-92 horizontal, leads molded, narrow, drill 0.75mm (see NXP sot054_po.pdf) +to-92 sc-43 sc-43a sot54 PA33 transistor +0 +3 +3 +Package_TO_SOT_THT +TO-92_Horizontal2 +TO-92 horizontal, leads molded, narrow, drill 0.75mm (see NXP sot054_po.pdf) +to-92 sc-43 sc-43a sot54 PA33 transistor +0 +3 +3 +Package_TO_SOT_THT +TO-92_Inline +TO-92 leads in-line, narrow, oval pads, drill 0.75mm (see NXP sot054_po.pdf) +to-92 sc-43 sc-43a sot54 PA33 transistor +0 +3 +3 +Package_TO_SOT_THT +TO-92_Inline_Horizontal1 +TO-92 horizontal, leads in-line, narrow, oval pads, drill 0.75mm (see NXP sot054_po.pdf) +to-92 sc-43 sc-43a sot54 PA33 transistor +0 +3 +3 +Package_TO_SOT_THT +TO-92_Inline_Horizontal2 +TO-92 horizontal, leads in-line, narrow, oval pads, drill 0.75mm (see NXP sot054_po.pdf) +to-92 sc-43 sc-43a sot54 PA33 transistor +0 +3 +3 +Package_TO_SOT_THT +TO-92_Inline_W4.0mm_Horizontal_FlatSideDown +TO-92 horizontal, leads in-line, narrow, oval pads, drill 0.75mm (see NXP sot054_po.pdf) +to-92 sc-43 sc-43a sot54 PA33 transistor +0 +3 +3 +Package_TO_SOT_THT +TO-92_Inline_W4.0mm_Horizontal_FlatSideUp +TO-92 horizontal, leads in-line, narrow, oval pads, drill 0.75mm (see NXP sot054_po.pdf) +to-92 sc-43 sc-43a sot54 PA33 transistor +0 +3 +3 +Package_TO_SOT_THT +TO-92_Inline_Wide +TO-92 leads in-line, wide, drill 0.75mm (see NXP sot054_po.pdf) +to-92 sc-43 sc-43a sot54 PA33 transistor +0 +3 +3 +Package_TO_SOT_THT +TO-92_W4.0mm_StaggerEven_Horizontal_FlatSideDown +TO-92 horizontal, leads molded, narrow, drill 0.75mm (see NXP sot054_po.pdf) +to-92 sc-43 sc-43a sot54 PA33 transistor +0 +3 +3 +Package_TO_SOT_THT +TO-92_W4.0mm_StaggerEven_Horizontal_FlatSideUp +TO-92 horizontal, leads molded, narrow, drill 0.75mm (see NXP sot054_po.pdf) +to-92 sc-43 sc-43a sot54 PA33 transistor +0 +3 +3 +Package_TO_SOT_THT +TO-92_Wide +TO-92 leads molded, wide, drill 0.75mm (see NXP sot054_po.pdf) +to-92 sc-43 sc-43a sot54 PA33 transistor +0 +3 +3 +Package_TO_SOT_THT +TO-99-6 +TO-99-6 +TO-99-6 +0 +6 +6 +Package_TO_SOT_THT +TO-99-6_Window +TO-99-6_Window, Window +TO-99-6_Window Window +0 +6 +6 +Package_TO_SOT_THT +TO-99-8 +TO-99-8 +TO-99-8 +0 +8 +8 +Package_TO_SOT_THT +TO-99-8_Window +TO-99-8_Window, Window +TO-99-8_Window Window +0 +8 +8 +Package_TO_SOT_THT +TO-100-10 +TO-100-10 +TO-100-10 +0 +10 +10 +Package_TO_SOT_THT +TO-100-10_Window +TO-100-10_Window, Window +TO-100-10_Window Window +0 +10 +10 +Package_TO_SOT_THT +TO-126-2_Horizontal_TabDown +TO-126-2, Horizontal, RM 5.08mm, see https://www.diodes.com/assets/Package-Files/TO126.pdf +TO-126-2 Horizontal RM 5.08mm +0 +2 +2 +Package_TO_SOT_THT +TO-126-2_Horizontal_TabUp +TO-126-2, Horizontal, RM 5.08mm, see https://www.diodes.com/assets/Package-Files/TO126.pdf +TO-126-2 Horizontal RM 5.08mm +0 +2 +2 +Package_TO_SOT_THT +TO-126-2_Vertical +TO-126-2, Vertical, RM 5.08mm, see https://www.diodes.com/assets/Package-Files/TO126.pdf +TO-126-2 Vertical RM 5.08mm +0 +2 +2 +Package_TO_SOT_THT +TO-126-3_Horizontal_TabDown +TO-126-3, Horizontal, RM 2.54mm, see https://www.diodes.com/assets/Package-Files/TO126.pdf +TO-126-3 Horizontal RM 2.54mm +0 +3 +3 +Package_TO_SOT_THT +TO-126-3_Horizontal_TabUp +TO-126-3, Horizontal, RM 2.54mm, see https://www.diodes.com/assets/Package-Files/TO126.pdf +TO-126-3 Horizontal RM 2.54mm +0 +3 +3 +Package_TO_SOT_THT +TO-126-3_Vertical +TO-126-3, Vertical, RM 2.54mm, see https://www.diodes.com/assets/Package-Files/TO126.pdf +TO-126-3 Vertical RM 2.54mm +0 +3 +3 +Package_TO_SOT_THT +TO-218-2_Horizontal_TabDown +TO-218-2, Horizontal, RM 10.95mm, SOT-93, see https://www.vishay.com/docs/95214/fto218.pdf +TO-218-2 Horizontal RM 10.95mm SOT-93 +0 +2 +2 +Package_TO_SOT_THT +TO-218-2_Horizontal_TabUp +TO-218-2, Horizontal, RM 10.95mm, SOT-93, see https://www.vishay.com/docs/95214/fto218.pdf +TO-218-2 Horizontal RM 10.95mm SOT-93 +0 +2 +2 +Package_TO_SOT_THT +TO-218-2_Vertical +TO-218-2, Vertical, RM 10.95mm, SOT-93, see https://www.vishay.com/docs/95214/fto218.pdf +TO-218-2 Vertical RM 10.95mm SOT-93 +0 +2 +2 +Package_TO_SOT_THT +TO-218-3_Horizontal_TabDown +TO-218-3, Horizontal, RM 5.475mm, SOT-93, see https://www.vishay.com/docs/95214/fto218.pdf +TO-218-3 Horizontal RM 5.475mm SOT-93 +0 +3 +3 +Package_TO_SOT_THT +TO-218-3_Horizontal_TabUp +TO-218-3, Horizontal, RM 5.475mm, SOT-93, see https://www.vishay.com/docs/95214/fto218.pdf +TO-218-3 Horizontal RM 5.475mm SOT-93 +0 +3 +3 +Package_TO_SOT_THT +TO-218-3_Vertical +TO-218-3, Vertical, RM 5.475mm, SOT-93, see https://www.vishay.com/docs/95214/fto218.pdf +TO-218-3 Vertical RM 5.475mm SOT-93 +0 +3 +3 +Package_TO_SOT_THT +TO-220-2_Horizontal_TabDown +TO-220-2, Horizontal, RM 5.08mm, see https://www.centralsemi.com/PDFS/CASE/TO-220-2PD.PDF +TO-220-2 Horizontal RM 5.08mm +0 +2 +2 +Package_TO_SOT_THT +TO-220-2_Horizontal_TabUp +TO-220-2, Horizontal, RM 5.08mm, see https://www.centralsemi.com/PDFS/CASE/TO-220-2PD.PDF +TO-220-2 Horizontal RM 5.08mm +0 +2 +2 +Package_TO_SOT_THT +TO-220-2_Vertical +TO-220-2, Vertical, RM 5.08mm, see https://www.centralsemi.com/PDFS/CASE/TO-220-2PD.PDF +TO-220-2 Vertical RM 5.08mm +0 +2 +2 +Package_TO_SOT_THT +TO-220-3_Horizontal_TabDown +TO-220-3, Horizontal, RM 2.54mm, see https://www.vishay.com/docs/66542/to-220-1.pdf +TO-220-3 Horizontal RM 2.54mm +0 +3 +3 +Package_TO_SOT_THT +TO-220-3_Horizontal_TabUp +TO-220-3, Horizontal, RM 2.54mm, see https://www.vishay.com/docs/66542/to-220-1.pdf +TO-220-3 Horizontal RM 2.54mm +0 +3 +3 +Package_TO_SOT_THT +TO-220-3_Vertical +TO-220-3, Vertical, RM 2.54mm, see https://www.vishay.com/docs/66542/to-220-1.pdf +TO-220-3 Vertical RM 2.54mm +0 +3 +3 +Package_TO_SOT_THT +TO-220-4_Horizontal_TabDown +TO-220-4, Horizontal, RM 2.54mm +TO-220-4 Horizontal RM 2.54mm +0 +4 +4 +Package_TO_SOT_THT +TO-220-4_Horizontal_TabUp +TO-220-4, Horizontal, RM 2.54mm +TO-220-4 Horizontal RM 2.54mm +0 +4 +4 +Package_TO_SOT_THT +TO-220-4_P5.08x2.54mm_StaggerEven_Lead3.8mm_Vertical +TO-220-4, Vertical, RM 2.54mm, staggered type-2 +TO-220-4 Vertical RM 2.54mm staggered type-2 +0 +4 +4 +Package_TO_SOT_THT +TO-220-4_P5.08x2.54mm_StaggerEven_Lead5.84mm_TabDown +TO-220-4, Horizontal, RM 2.54mm, staggered type-2 +TO-220-4 Horizontal RM 2.54mm staggered type-2 +0 +4 +4 +Package_TO_SOT_THT +TO-220-4_P5.08x2.54mm_StaggerOdd_Lead3.8mm_Vertical +TO-220-4, Vertical, RM 2.54mm, staggered type-1 +TO-220-4 Vertical RM 2.54mm staggered type-1 +0 +4 +4 +Package_TO_SOT_THT +TO-220-4_P5.08x2.54mm_StaggerOdd_Lead5.84mm_TabDown +TO-220-4, Horizontal, RM 2.54mm, staggered type-1 +TO-220-4 Horizontal RM 2.54mm staggered type-1 +0 +4 +4 +Package_TO_SOT_THT +TO-220-4_Vertical +TO-220-4, Vertical, RM 2.54mm +TO-220-4 Vertical RM 2.54mm +0 +4 +4 +Package_TO_SOT_THT +TO-220-5_Horizontal_TabDown +TO-220-5, Horizontal, RM 1.7mm, Pentawatt, Multiwatt-5, see http://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/ltc-legacy-to-220/to-220_5_05-08-1421_straight_lead.pdf +TO-220-5 Horizontal RM 1.7mm Pentawatt Multiwatt-5 +0 +5 +5 +Package_TO_SOT_THT +TO-220-5_Horizontal_TabUp +TO-220-5, Horizontal, RM 1.7mm, Pentawatt, Multiwatt-5, see http://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/ltc-legacy-to-220/to-220_5_05-08-1421_straight_lead.pdf +TO-220-5 Horizontal RM 1.7mm Pentawatt Multiwatt-5 +0 +5 +5 +Package_TO_SOT_THT +TO-220-5_P3.4x3.7mm_StaggerEven_Lead3.8mm_Vertical +TO-220-5, Vertical, RM 1.7mm, Pentawatt, Multiwatt-5, staggered type-2, see http://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/ltc-legacy-to-220/to-220_5_05-08-1421.pdf?domain=www.linear.com, https://www.diodes.com/assets/Package-Files/TO220-5.pdf +TO-220-5 Vertical RM 1.7mm Pentawatt Multiwatt-5 staggered type-2 +0 +5 +5 +Package_TO_SOT_THT +TO-220-5_P3.4x3.7mm_StaggerOdd_Lead3.8mm_Vertical +TO-220-5, Vertical, RM 1.7mm, Pentawatt, Multiwatt-5, staggered type-1, see http://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/ltc-legacy-to-220/to-220_5_05-08-1421.pdf?domain=www.linear.com, https://www.diodes.com/assets/Package-Files/TO220-5.pdf +TO-220-5 Vertical RM 1.7mm Pentawatt Multiwatt-5 staggered type-1 +0 +5 +5 +Package_TO_SOT_THT +TO-220-5_P3.4x3.8mm_StaggerEven_Lead7.13mm_TabDown +TO-220-5, Horizontal, RM 1.7mm, Pentawatt, Multiwatt-5, staggered type-2, see http://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/ltc-legacy-to-220/to-220_5_05-08-1421.pdf?domain=www.linear.com, https://www.diodes.com/assets/Package-Files/TO220-5.pdf +TO-220-5 Horizontal RM 1.7mm Pentawatt Multiwatt-5 staggered type-2 +0 +5 +5 +Package_TO_SOT_THT +TO-220-5_P3.4x3.8mm_StaggerOdd_Lead7.13mm_TabDown +TO-220-5, Horizontal, RM 1.7mm, Pentawatt, Multiwatt-5, staggered type-1, see http://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/ltc-legacy-to-220/to-220_5_05-08-1421.pdf?domain=www.linear.com, https://www.diodes.com/assets/Package-Files/TO220-5.pdf +TO-220-5 Horizontal RM 1.7mm Pentawatt Multiwatt-5 staggered type-1 +0 +5 +5 +Package_TO_SOT_THT +TO-220-5_Vertical +TO-220-5, Vertical, RM 1.7mm, Pentawatt, Multiwatt-5, see http://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/ltc-legacy-to-220/to-220_5_05-08-1421_straight_lead.pdf +TO-220-5 Vertical RM 1.7mm Pentawatt Multiwatt-5 +0 +5 +5 +Package_TO_SOT_THT +TO-220-7_P2.54x3.7mm_StaggerEven_Lead3.8mm_Vertical +TO-220-7, Vertical, RM 1.27mm, Multiwatt-7, staggered type-2 +TO-220-7 Vertical RM 1.27mm Multiwatt-7 staggered type-2 +0 +7 +7 +Package_TO_SOT_THT +TO-220-7_P2.54x3.7mm_StaggerOdd_Lead3.8mm_Vertical +TO-220-7, Vertical, RM 1.27mm, Multiwatt-7, staggered type-1 +TO-220-7 Vertical RM 1.27mm Multiwatt-7 staggered type-1 +0 +7 +7 +Package_TO_SOT_THT +TO-220-7_P2.54x3.8mm_StaggerEven_Lead5.85mm_TabDown +TO-220-7, Horizontal, RM 1.27mm, Multiwatt-7, staggered type-2 +TO-220-7 Horizontal RM 1.27mm Multiwatt-7 staggered type-2 +0 +7 +7 +Package_TO_SOT_THT +TO-220-7_P2.54x3.8mm_StaggerOdd_Lead5.85mm_TabDown +TO-220-7, Horizontal, RM 1.27mm, Multiwatt-7, staggered type-1 +TO-220-7 Horizontal RM 1.27mm Multiwatt-7 staggered type-1 +0 +7 +7 +Package_TO_SOT_THT +TO-220-8_Vertical +TO-220-8 (Multiwatt8), Vertical, 2.54mm Pitch (http://www.st.com/resource/en/datasheet/tda7264.pdf) +TO-220-9 Vertical 2.54mm Pitch Multiwatt 8 +0 +8 +8 +Package_TO_SOT_THT +TO-220-9_P1.94x3.7mm_StaggerEven_Lead3.8mm_Vertical +TO-220-9, Vertical, RM 0.97mm, Multiwatt-9, staggered type-2 +TO-220-9 Vertical RM 0.97mm Multiwatt-9 staggered type-2 +0 +9 +9 +Package_TO_SOT_THT +TO-220-9_P1.94x3.7mm_StaggerOdd_Lead3.8mm_Vertical +TO-220-9, Vertical, RM 0.97mm, Multiwatt-9, staggered type-1 +TO-220-9 Vertical RM 0.97mm Multiwatt-9 staggered type-1 +0 +9 +9 +Package_TO_SOT_THT +TO-220-9_P1.94x3.8mm_StaggerEven_Lead5.85mm_TabDown +TO-220-9, Horizontal, RM 0.97mm, Multiwatt-9, staggered type-2 +TO-220-9 Horizontal RM 0.97mm Multiwatt-9 staggered type-2 +0 +9 +9 +Package_TO_SOT_THT +TO-220-9_P1.94x3.8mm_StaggerOdd_Lead5.85mm_TabDown +TO-220-9, Horizontal, RM 0.97mm, Multiwatt-9, staggered type-1 +TO-220-9 Horizontal RM 0.97mm Multiwatt-9 staggered type-1 +0 +9 +9 +Package_TO_SOT_THT +TO-220-11_P3.4x2.54mm_StaggerEven_Lead5.84mm_TabDown +TO-220-11, Horizontal, RM 1.7mm, staggered type-2, see http://www.st.com/resource/en/datasheet/tda7391lv.pdf +TO-220-11 Horizontal RM 1.7mm staggered type-2 +0 +11 +11 +Package_TO_SOT_THT +TO-220-11_P3.4x2.54mm_StaggerOdd_Lead5.84mm_TabDown +TO-220-11, Horizontal, RM 1.7mm, staggered type-1, see http://www.st.com/resource/en/datasheet/tda7391lv.pdf +TO-220-11 Horizontal RM 1.7mm staggered type-1 +0 +11 +11 +Package_TO_SOT_THT +TO-220-11_P3.4x5.08mm_StaggerEven_Lead4.58mm_Vertical +TO-220-11, Vertical, RM 1.7mm, staggered type-2, see http://www.st.com/resource/en/datasheet/tda7391lv.pdf +TO-220-11 Vertical RM 1.7mm staggered type-2 +0 +11 +11 +Package_TO_SOT_THT +TO-220-11_P3.4x5.08mm_StaggerOdd_Lead4.85mm_Vertical +TO-220-11, Vertical, RM 1.7mm, staggered type-1, see http://www.st.com/resource/en/datasheet/tda7391lv.pdf +TO-220-11 Vertical RM 1.7mm staggered type-1 +0 +11 +11 +Package_TO_SOT_THT +TO-220-11_P3.4x5.08mm_StaggerOdd_Lead8.45mm_TabDown +TO-220-11, Horizontal, RM 1.7mm, staggered type-1, see http://www.ti.com/lit/ds/symlink/lmd18200.pdf +TO-220-11 Horizontal RM 1.7mm staggered type-1 +0 +11 +11 +Package_TO_SOT_THT +TO-220-15_P2.54x2.54mm_StaggerEven_Lead4.58mm_Vertical +TO-220-15, Vertical, RM 1.27mm, staggered type-2, see http://www.st.com/resource/en/datasheet/l298.pdf +TO-220-15 Vertical RM 1.27mm staggered type-2 +0 +15 +15 +Package_TO_SOT_THT +TO-220-15_P2.54x2.54mm_StaggerEven_Lead5.84mm_TabDown +TO-220-15, Horizontal, RM 1.27mm, staggered type-2, see http://www.st.com/resource/en/datasheet/l298.pdf +TO-220-15 Horizontal RM 1.27mm staggered type-2 +0 +15 +15 +Package_TO_SOT_THT +TO-220-15_P2.54x2.54mm_StaggerOdd_Lead4.58mm_Vertical +TO-220-15, Vertical, RM 1.27mm, staggered type-1, see http://www.st.com/resource/en/datasheet/l298.pdf +TO-220-15 Vertical RM 1.27mm staggered type-1 +0 +15 +15 +Package_TO_SOT_THT +TO-220-15_P2.54x2.54mm_StaggerOdd_Lead5.84mm_TabDown +TO-220-15, Horizontal, RM 1.27mm, staggered type-1, see http://www.st.com/resource/en/datasheet/l298.pdf +TO-220-15 Horizontal RM 1.27mm staggered type-1 +0 +15 +15 +Package_TO_SOT_THT +TO-220F-2_Horizontal_TabDown +TO-220F-2, Horizontal, RM 5.08mm, see http://www.onsemi.com/pub/Collateral/FFPF10F150S-D.pdf +TO-220F-2 Horizontal RM 5.08mm +0 +2 +2 +Package_TO_SOT_THT +TO-220F-2_Horizontal_TabUp +TO-220F-2, Horizontal, RM 5.08mm, see http://www.onsemi.com/pub/Collateral/FFPF10F150S-D.pdf +TO-220F-2 Horizontal RM 5.08mm +0 +2 +2 +Package_TO_SOT_THT +TO-220F-2_Vertical +TO-220F-2, Vertical, RM 5.08mm, see http://www.onsemi.com/pub/Collateral/FFPF10F150S-D.pdf +TO-220F-2 Vertical RM 5.08mm +0 +2 +2 +Package_TO_SOT_THT +TO-220F-3_Horizontal_TabDown +TO-220F-3, Horizontal, RM 2.54mm, see http://www.st.com/resource/en/datasheet/stp20nm60.pdf +TO-220F-3 Horizontal RM 2.54mm +0 +3 +3 +Package_TO_SOT_THT +TO-220F-3_Horizontal_TabUp +TO-220F-3, Horizontal, RM 2.54mm, see http://www.st.com/resource/en/datasheet/stp20nm60.pdf +TO-220F-3 Horizontal RM 2.54mm +0 +3 +3 +Package_TO_SOT_THT +TO-220F-3_Vertical +TO-220F-3, Vertical, RM 2.54mm, see http://www.st.com/resource/en/datasheet/stp20nm60.pdf +TO-220F-3 Vertical RM 2.54mm +0 +3 +3 +Package_TO_SOT_THT +TO-220F-4_Horizontal_TabDown +TO-220F-4, Horizontal, RM 2.54mm, see https://www.njr.com/semicon/PDF/package/TO-220F-4_E.pdf +TO-220F-4 Horizontal RM 2.54mm +0 +4 +4 +Package_TO_SOT_THT +TO-220F-4_Horizontal_TabUp +TO-220F-4, Horizontal, RM 2.54mm, see https://www.njr.com/semicon/PDF/package/TO-220F-4_E.pdf +TO-220F-4 Horizontal RM 2.54mm +0 +4 +4 +Package_TO_SOT_THT +TO-220F-4_P5.08x2.05mm_StaggerEven_Lead1.85mm_Vertical +TO-220F-4, Vertical, RM 2.54mm, staggered type-2, see https://www.njr.com/semicon/PDF/package/TO-220F-4_E.pdf +TO-220F-4 Vertical RM 2.54mm staggered type-2 +0 +4 +4 +Package_TO_SOT_THT +TO-220F-4_P5.08x2.05mm_StaggerOdd_Lead1.85mm_Vertical +TO-220F-4, Vertical, RM 2.54mm, staggered type-1, see https://www.njr.com/semicon/PDF/package/TO-220F-4_E.pdf +TO-220F-4 Vertical RM 2.54mm staggered type-1 +0 +4 +4 +Package_TO_SOT_THT +TO-220F-4_P5.08x3.7mm_StaggerEven_Lead3.5mm_Vertical +TO-220F-4, Vertical, RM 2.54mm, staggered type-2, see https://www.njr.com/semicon/PDF/package/TO-220F-4_E.pdf +TO-220F-4 Vertical RM 2.54mm staggered type-2 +0 +4 +4 +Package_TO_SOT_THT +TO-220F-4_P5.08x3.7mm_StaggerOdd_Lead3.5mm_Vertical +TO-220F-4, Vertical, RM 2.54mm, staggered type-1, see https://www.njr.com/semicon/PDF/package/TO-220F-4_E.pdf +TO-220F-4 Vertical RM 2.54mm staggered type-1 +0 +4 +4 +Package_TO_SOT_THT +TO-220F-4_Vertical +TO-220F-4, Vertical, RM 2.54mm, see https://www.njr.com/semicon/PDF/package/TO-220F-4_E.pdf +TO-220F-4 Vertical RM 2.54mm +0 +4 +4 +Package_TO_SOT_THT +TO-220F-5_Horizontal_TabDown +TO-220F-5, Horizontal, RM 1.7mm, PentawattF-, MultiwattF-5 +TO-220F-5 Horizontal RM 1.7mm PentawattF- MultiwattF-5 +0 +5 +5 +Package_TO_SOT_THT +TO-220F-5_Horizontal_TabUp +TO-220F-5, Horizontal, RM 1.7mm, PentawattF-, MultiwattF-5 +TO-220F-5 Horizontal RM 1.7mm PentawattF- MultiwattF-5 +0 +5 +5 +Package_TO_SOT_THT +TO-220F-5_P3.4x2.06mm_StaggerEven_Lead1.86mm_Vertical +TO-220F-5, Vertical, RM 1.7mm, PentawattF-, MultiwattF-5, staggered type-2 +TO-220F-5 Vertical RM 1.7mm PentawattF- MultiwattF-5 staggered type-2 +0 +5 +5 +Package_TO_SOT_THT +TO-220F-5_P3.4x2.06mm_StaggerOdd_Lead1.86mm_Vertical +TO-220F-5, Vertical, RM 1.7mm, PentawattF-, MultiwattF-5, staggered type-1 +TO-220F-5 Vertical RM 1.7mm PentawattF- MultiwattF-5 staggered type-1 +0 +5 +5 +Package_TO_SOT_THT +TO-220F-5_P3.4x3.7mm_StaggerEven_Lead3.5mm_Vertical +TO-220F-5, Vertical, RM 1.7mm, PentawattF-, MultiwattF-5, staggered type-2 +TO-220F-5 Vertical RM 1.7mm PentawattF- MultiwattF-5 staggered type-2 +0 +5 +5 +Package_TO_SOT_THT +TO-220F-5_P3.4x3.7mm_StaggerOdd_Lead3.5mm_Vertical +TO-220F-5, Vertical, RM 1.7mm, PentawattF-, MultiwattF-5, staggered type-1 +TO-220F-5 Vertical RM 1.7mm PentawattF- MultiwattF-5 staggered type-1 +0 +5 +5 +Package_TO_SOT_THT +TO-220F-5_Vertical +TO-220F-5, Vertical, RM 1.7mm, PentawattF-, MultiwattF-5 +TO-220F-5 Vertical RM 1.7mm PentawattF- MultiwattF-5 +0 +5 +5 +Package_TO_SOT_THT +TO-220F-7_P2.54x3.7mm_StaggerEven_Lead3.5mm_Vertical +TO-220F-7, Vertical, RM 1.27mm, staggered type-2 +TO-220F-7 Vertical RM 1.27mm staggered type-2 +0 +7 +7 +Package_TO_SOT_THT +TO-220F-7_P2.54x3.7mm_StaggerOdd_Lead3.5mm_Vertical +TO-220F-7, Vertical, RM 1.27mm, staggered type-1 +TO-220F-7 Vertical RM 1.27mm staggered type-1 +0 +7 +7 +Package_TO_SOT_THT +TO-220F-9_P1.8x3.7mm_StaggerEven_Lead3.5mm_Vertical +TO-220F-9, Vertical, RM 0.9mm, staggered type-2 +TO-220F-9 Vertical RM 0.9mm staggered type-2 +0 +9 +9 +Package_TO_SOT_THT +TO-220F-9_P1.8x3.7mm_StaggerOdd_Lead3.5mm_Vertical +TO-220F-9, Vertical, RM 0.9mm, staggered type-1 +TO-220F-9 Vertical RM 0.9mm staggered type-1 +0 +9 +9 +Package_TO_SOT_THT +TO-220F-11_P3.4x5.08mm_StaggerEven_Lead5.08mm_Vertical +TO-220F-11, Vertical, RM 1.7mm, MultiwattF-11, staggered type-2, see http://www.ti.com/lit/ds/symlink/lm3886.pdf +TO-220F-11 Vertical RM 1.7mm MultiwattF-11 staggered type-2 +0 +11 +11 +Package_TO_SOT_THT +TO-220F-11_P3.4x5.08mm_StaggerOdd_Lead5.08mm_Vertical +TO-220F-11, Vertical, RM 1.7mm, MultiwattF-11, staggered type-1, see http://www.ti.com/lit/ds/symlink/lm3886.pdf +TO-220F-11 Vertical RM 1.7mm MultiwattF-11 staggered type-1 +0 +11 +11 +Package_TO_SOT_THT +TO-220F-15_P2.54x5.08mm_StaggerEven_Lead5.08mm_Vertical +TO-220F-15, Vertical, RM 1.27mm, MultiwattF-15, staggered type-2 +TO-220F-15 Vertical RM 1.27mm MultiwattF-15 staggered type-2 +0 +15 +15 +Package_TO_SOT_THT +TO-220F-15_P2.54x5.08mm_StaggerOdd_Lead5.08mm_Vertical +TO-220F-15, Vertical, RM 1.27mm, MultiwattF-15, staggered type-1 +TO-220F-15 Vertical RM 1.27mm MultiwattF-15 staggered type-1 +0 +15 +15 +Package_TO_SOT_THT +TO-247-2_Horizontal_TabDown +TO-247-2, Horizontal, RM 10.9mm, see https://toshiba.semicon-storage.com/us/product/mosfet/to-247-4l.html +TO-247-2 Horizontal RM 10.9mm +0 +2 +2 +Package_TO_SOT_THT +TO-247-2_Horizontal_TabUp +TO-247-2, Horizontal, RM 10.9mm, see https://toshiba.semicon-storage.com/us/product/mosfet/to-247-4l.html +TO-247-2 Horizontal RM 10.9mm +0 +2 +2 +Package_TO_SOT_THT +TO-247-2_Vertical +TO-247-2, Vertical, RM 10.9mm, see https://toshiba.semicon-storage.com/us/product/mosfet/to-247-4l.html +TO-247-2 Vertical RM 10.9mm +0 +2 +2 +Package_TO_SOT_THT +TO-247-3_Horizontal_TabDown +TO-247-3, Horizontal, RM 5.45mm, see https://toshiba.semicon-storage.com/us/product/mosfet/to-247-4l.html +TO-247-3 Horizontal RM 5.45mm +0 +3 +3 +Package_TO_SOT_THT +TO-247-3_Horizontal_TabUp +TO-247-3, Horizontal, RM 5.45mm, see https://toshiba.semicon-storage.com/us/product/mosfet/to-247-4l.html +TO-247-3 Horizontal RM 5.45mm +0 +3 +3 +Package_TO_SOT_THT +TO-247-3_Vertical +TO-247-3, Vertical, RM 5.45mm, see https://toshiba.semicon-storage.com/us/product/mosfet/to-247-4l.html +TO-247-3 Vertical RM 5.45mm +0 +3 +3 +Package_TO_SOT_THT +TO-247-4_Horizontal_TabDown +TO-247-4, Horizontal, RM 2.54mm, see https://toshiba.semicon-storage.com/us/product/mosfet/to-247-4l.html +TO-247-4 Horizontal RM 2.54mm +0 +4 +4 +Package_TO_SOT_THT +TO-247-4_Horizontal_TabUp +TO-247-4, Horizontal, RM 2.54mm, see https://toshiba.semicon-storage.com/us/product/mosfet/to-247-4l.html +TO-247-4 Horizontal RM 2.54mm +0 +4 +4 +Package_TO_SOT_THT +TO-247-4_Vertical +TO-247-4, Vertical, RM 2.54mm, see https://toshiba.semicon-storage.com/us/product/mosfet/to-247-4l.html +TO-247-4 Vertical RM 2.54mm +0 +4 +4 +Package_TO_SOT_THT +TO-247-5_Horizontal_TabDown +TO-247-5, Horizontal, RM 2.54mm, see http://ww1.microchip.com/downloads/en/DeviceDoc/20005685A.pdf +TO-247-5 Horizontal RM 2.54mm +0 +5 +5 +Package_TO_SOT_THT +TO-247-5_Horizontal_TabUp +TO-247-5, Horizontal, RM 2.54mm, see http://ww1.microchip.com/downloads/en/DeviceDoc/20005685A.pdf +TO-247-5 Horizontal RM 2.54mm +0 +5 +5 +Package_TO_SOT_THT +TO-247-5_Vertical +TO-247-5, Vertical, RM 2.54mm, see http://ww1.microchip.com/downloads/en/DeviceDoc/20005685A.pdf +TO-247-5 Vertical RM 2.54mm +0 +5 +5 +Package_TO_SOT_THT +TO-251-2-1EP_Horizontal_TabDown +TO-251-2, Horizontal, RM 4.58mm, IPAK, see https://www.diodes.com/assets/Package-Files/TO251.pdf +TO-251-2 Horizontal RM 4.58mm IPAK +0 +3 +3 +Package_TO_SOT_THT +TO-251-2_Vertical +TO-251-2, Vertical, RM 4.58mm, IPAK, see https://www.diodes.com/assets/Package-Files/TO251.pdf +TO-251-2 Vertical RM 4.58mm IPAK +0 +2 +2 +Package_TO_SOT_THT +TO-251-3-1EP_Horizontal_TabDown +TO-251-3, Horizontal, RM 2.29mm, IPAK, see https://www.diodes.com/assets/Package-Files/TO251.pdf +TO-251-3 Horizontal RM 2.29mm IPAK +0 +4 +4 +Package_TO_SOT_THT +TO-251-3_Vertical +TO-251-3, Vertical, RM 2.29mm, IPAK, see https://www.diodes.com/assets/Package-Files/TO251.pdf +TO-251-3 Vertical RM 2.29mm IPAK +0 +3 +3 +Package_TO_SOT_THT +TO-262-3-1EP_Horizontal_TabDown +TO-262-3, Horizontal, RM 2.54mm, IIPAK, I2PAK, see http://www.onsemi.com/pub/Collateral/EN8586-D.PDF +TO-262-3 Horizontal RM 2.54mm IIPAK I2PAK +0 +4 +4 +Package_TO_SOT_THT +TO-262-3_Vertical +TO-262-3, Vertical, RM 2.54mm, IIPAK, I2PAK, see http://www.onsemi.com/pub/Collateral/EN8586-D.PDF +TO-262-3 Vertical RM 2.54mm IIPAK I2PAK +0 +3 +3 +Package_TO_SOT_THT +TO-262-5-1EP_Horizontal_TabDown +TO-262-5, Horizontal, RM 1.7mm, IIPAK, I2PAK, see http://pdf.datasheetcatalog.com/datasheet/irf/iris4011.pdf +TO-262-5 Horizontal RM 1.7mm IIPAK I2PAK +0 +6 +6 +Package_TO_SOT_THT +TO-262-5_Vertical +TO-262-5, Vertical, RM 1.7mm, IIPAK, I2PAK, see http://pdf.datasheetcatalog.com/datasheet/irf/iris4011.pdf +TO-262-5 Vertical RM 1.7mm IIPAK I2PAK +0 +5 +5 +Package_TO_SOT_THT +TO-264-2_Horizontal_TabDown +TO-264-2, Horizontal, RM 10.9mm, see https://www.fairchildsemi.com/package-drawings/TO/TO264A03.pdf +TO-264-2 Horizontal RM 10.9mm +0 +2 +2 +Package_TO_SOT_THT +TO-264-2_Horizontal_TabUp +TO-264-2, Horizontal, RM 10.9mm, see https://www.fairchildsemi.com/package-drawings/TO/TO264A03.pdf +TO-264-2 Horizontal RM 10.9mm +0 +2 +2 +Package_TO_SOT_THT +TO-264-2_Vertical +TO-264-2, Vertical, RM 10.9mm, see https://www.fairchildsemi.com/package-drawings/TO/TO264A03.pdf +TO-264-2 Vertical RM 10.9mm +0 +2 +2 +Package_TO_SOT_THT +TO-264-3_Horizontal_TabDown +TO-264-3, Horizontal, RM 5.45mm, see https://www.fairchildsemi.com/package-drawings/TO/TO264A03.pdf +TO-264-3 Horizontal RM 5.45mm +0 +3 +3 +Package_TO_SOT_THT +TO-264-3_Horizontal_TabUp +TO-264-3, Horizontal, RM 5.45mm, see https://www.fairchildsemi.com/package-drawings/TO/TO264A03.pdf +TO-264-3 Horizontal RM 5.45mm +0 +3 +3 +Package_TO_SOT_THT +TO-264-3_Vertical +TO-264-3, Vertical, RM 5.45mm, see https://www.fairchildsemi.com/package-drawings/TO/TO264A03.pdf +TO-264-3 Vertical RM 5.45mm +0 +3 +3 +Package_TO_SOT_THT +TO-264-5_Horizontal_TabDown +TO-264-5, Horizontal, RM 3.81mm, see https://www.onsemi.com/pub/Collateral/NJL3281D-D.PDF +TO-264-5 Horizontal RM 3.81mm +0 +5 +5 +Package_TO_SOT_THT +TO-264-5_Horizontal_TabUp +TO-264-5, Horizontal, RM 3.81mm, see https://www.onsemi.com/pub/Collateral/NJL3281D-D.PDF +TO-264-5 Horizontal RM 3.81mm +0 +5 +5 +Package_TO_SOT_THT +TO-264-5_Vertical +TO-264-5, Vertical, RM 3.81mm, see https://www.onsemi.com/pub/Collateral/NJL3281D-D.PDF +TO-264-5 Vertical RM 3.81mm +0 +5 +5 +Potentiometer_SMD +Potentiometer_ACP_CA6-VSMD_Vertical +Potentiometer, vertical, ACP CA6-VSMD, http://www.acptechnologies.com/wp-content/uploads/2017/06/01-ACP-CA6.pdf +Potentiometer vertical ACP CA6-VSMD +0 +3 +3 +Potentiometer_SMD +Potentiometer_ACP_CA6-VSMD_Vertical_Hole +Potentiometer, vertical, shaft hole, ACP CA6-VSMD, http://www.acptechnologies.com/wp-content/uploads/2017/06/01-ACP-CA6.pdf +Potentiometer vertical hole ACP CA6-VSMD +0 +3 +3 +Potentiometer_SMD +Potentiometer_ACP_CA9-VSMD_Vertical +Potentiometer, vertical, ACP CA9-VSMD, http://www.acptechnologies.com/wp-content/uploads/2017/05/02-ACP-CA9-CE9.pdf +Potentiometer vertical ACP CA9-VSMD +0 +3 +3 +Potentiometer_SMD +Potentiometer_ACP_CA9-VSMD_Vertical_Hole +Potentiometer, vertical, shaft hole, ACP CA9-VSMD, http://www.acptechnologies.com/wp-content/uploads/2017/05/02-ACP-CA9-CE9.pdf +Potentiometer vertical hole ACP CA9-VSMD +0 +3 +3 +Potentiometer_SMD +Potentiometer_ACP_CA14-VSMD_Vertical +Potentiometer, vertical, ACP CA14-VSMD, http://www.acptechnologies.com/wp-content/uploads/2017/10/03-ACP-CA14-CE14.pdf +Potentiometer vertical ACP CA14-VSMD +0 +3 +3 +Potentiometer_SMD +Potentiometer_ACP_CA14-VSMD_Vertical_Hole +Potentiometer, vertical, shaft hole, ACP CA14-VSMD, http://www.acptechnologies.com/wp-content/uploads/2017/10/03-ACP-CA14-CE14.pdf +Potentiometer vertical hole ACP CA14-VSMD +0 +3 +3 +Potentiometer_SMD +Potentiometer_Bourns_3214G_Horizontal +Potentiometer, horizontal, Bourns 3214G, https://www.bourns.com/docs/Product-Datasheets/3214.pdf +Potentiometer horizontal Bourns 3214G +0 +3 +3 +Potentiometer_SMD +Potentiometer_Bourns_3214J_Horizontal +Potentiometer, horizontal, Bourns 3214J, https://www.bourns.com/docs/Product-Datasheets/3214.pdf +Potentiometer horizontal Bourns 3214J +0 +3 +3 +Potentiometer_SMD +Potentiometer_Bourns_3214W_Vertical +Potentiometer, vertical, Bourns 3214W, https://www.bourns.com/docs/Product-Datasheets/3214.pdf +Potentiometer vertical Bourns 3214W +0 +3 +3 +Potentiometer_SMD +Potentiometer_Bourns_3214X_Vertical +Potentiometer, vertical, Bourns 3214X, https://www.bourns.com/docs/Product-Datasheets/3214.pdf +Potentiometer vertical Bourns 3214X +0 +3 +3 +Potentiometer_SMD +Potentiometer_Bourns_3224G_Horizontal +Potentiometer, horizontal, Bourns 3224G, https://www.bourns.com/docs/Product-Datasheets/3224.pdf +Potentiometer horizontal Bourns 3224G +0 +3 +3 +Potentiometer_SMD +Potentiometer_Bourns_3224J_Horizontal +Potentiometer, horizontal, Bourns 3224J, https://www.bourns.com/docs/Product-Datasheets/3224.pdf +Potentiometer horizontal Bourns 3224J +0 +3 +3 +Potentiometer_SMD +Potentiometer_Bourns_3224W_Vertical +Potentiometer, vertical, Bourns 3224W, https://www.bourns.com/docs/Product-Datasheets/3224.pdf +Potentiometer vertical Bourns 3224W +0 +3 +3 +Potentiometer_SMD +Potentiometer_Bourns_3224X_Vertical +Potentiometer, vertical, Bourns 3224X, https://www.bourns.com/docs/Product-Datasheets/3224.pdf +Potentiometer vertical Bourns 3224X +0 +3 +3 +Potentiometer_SMD +Potentiometer_Bourns_3269P_Horizontal +Potentiometer, horizontal, Bourns 3269P, https://www.bourns.com/docs/Product-Datasheets/3269.pdf +Potentiometer horizontal Bourns 3269P +0 +3 +3 +Potentiometer_SMD +Potentiometer_Bourns_3269W_Vertical +Potentiometer, vertical, Bourns 3269W, https://www.bourns.com/docs/Product-Datasheets/3269.pdf +Potentiometer vertical Bourns 3269W +0 +3 +3 +Potentiometer_SMD +Potentiometer_Bourns_3269X_Horizontal +Potentiometer, horizontal, Bourns 3269X, https://www.bourns.com/docs/Product-Datasheets/3269.pdf +Potentiometer horizontal Bourns 3269X +0 +3 +3 +Potentiometer_SMD +Potentiometer_Bourns_3314G_Vertical +Potentiometer, vertical, Bourns 3314G, http://www.bourns.com/docs/Product-Datasheets/3314.pdf +Potentiometer vertical Bourns 3314G +0 +3 +3 +Potentiometer_SMD +Potentiometer_Bourns_3314J_Vertical +Potentiometer, vertical, Bourns 3314J, http://www.bourns.com/docs/Product-Datasheets/3314.pdf +Potentiometer vertical Bourns 3314J +0 +3 +3 +Potentiometer_SMD +Potentiometer_Bourns_3314R-1_Vertical_Hole +Potentiometer, vertical, shaft hole, Bourns 3314R-1, http://www.bourns.com/docs/Product-Datasheets/3314.pdf +Potentiometer vertical hole Bourns 3314R-1 +0 +3 +3 +Potentiometer_SMD +Potentiometer_Bourns_3314R-GM5_Vertical +Potentiometer, vertical, Bourns 3314R-GM5, http://www.bourns.com/docs/Product-Datasheets/3314.pdf +Potentiometer vertical Bourns 3314R-GM5 +0 +3 +3 +Potentiometer_SMD +Potentiometer_Bourns_3314S_Horizontal +Potentiometer, horizontal, Bourns 3314S, http://www.bourns.com/docs/Product-Datasheets/3314.pdf +Potentiometer horizontal Bourns 3314S +0 +3 +3 +Potentiometer_SMD +Potentiometer_Bourns_PRS11S_Vertical +Potentiometer, vertical, Bourns PRS11S, http://www.bourns.com/docs/Product-Datasheets/PRS11S.pdf +Potentiometer vertical Bourns PRS11S +0 +5 +5 +Potentiometer_SMD +Potentiometer_Bourns_TC33X_Vertical +Potentiometer, Bourns, TC33X, Vertical, https://www.bourns.com/pdfs/TC33.pdf +Potentiometer Bourns TC33X Vertical +0 +3 +3 +Potentiometer_SMD +Potentiometer_Vishay_TS53YJ_Vertical +Potentiometer, vertical, Vishay TS53YJ, https://www.vishay.com/docs/51008/ts53.pdf +Potentiometer vertical Vishay TS53YJ +0 +3 +3 +Potentiometer_SMD +Potentiometer_Vishay_TS53YL_Vertical +Potentiometer, vertical, Vishay TS53YL, https://www.vishay.com/docs/51008/ts53.pdf +Potentiometer vertical Vishay TS53YL +0 +3 +3 +Potentiometer_THT +Potentiometer_ACP_CA6-H2,5_Horizontal +Potentiometer, horizontal, ACP CA6-H2,5, http://www.acptechnologies.com/wp-content/uploads/2017/06/01-ACP-CA6.pdf +Potentiometer horizontal ACP CA6-H2,5 +0 +3 +3 +Potentiometer_THT +Potentiometer_ACP_CA9-H2,5_Horizontal +Potentiometer, horizontal, ACP CA9-H2,5, http://www.acptechnologies.com/wp-content/uploads/2017/05/02-ACP-CA9-CE9.pdf +Potentiometer horizontal ACP CA9-H2,5 +0 +3 +3 +Potentiometer_THT +Potentiometer_ACP_CA9-H3,8_Horizontal +Potentiometer, horizontal, ACP CA9-H3,8, http://www.acptechnologies.com/wp-content/uploads/2017/05/02-ACP-CA9-CE9.pdf +Potentiometer horizontal ACP CA9-H3,8 +0 +3 +3 +Potentiometer_THT +Potentiometer_ACP_CA9-H5_Horizontal +Potentiometer, horizontal, ACP CA9-H5, http://www.acptechnologies.com/wp-content/uploads/2017/05/02-ACP-CA9-CE9.pdf +Potentiometer horizontal ACP CA9-H5 +0 +3 +3 +Potentiometer_THT +Potentiometer_ACP_CA9-V10_Vertical +Potentiometer, vertical, ACP CA9-V10, http://www.acptechnologies.com/wp-content/uploads/2017/05/02-ACP-CA9-CE9.pdf +Potentiometer vertical ACP CA9-V10 +0 +3 +3 +Potentiometer_THT +Potentiometer_ACP_CA9-V10_Vertical_Hole +Potentiometer, vertical, shaft hole, ACP CA9-V10, http://www.acptechnologies.com/wp-content/uploads/2017/05/02-ACP-CA9-CE9.pdf +Potentiometer vertical hole ACP CA9-V10 +0 +3 +3 +Potentiometer_THT +Potentiometer_ACP_CA14-H2,5_Horizontal +Potentiometer, horizontal, ACP CA14-H2,5, http://www.acptechnologies.com/wp-content/uploads/2017/10/03-ACP-CA14-CE14.pdf +Potentiometer horizontal ACP CA14-H2,5 +0 +3 +3 +Potentiometer_THT +Potentiometer_ACP_CA14-H4_Horizontal +Potentiometer, horizontal, ACP CA14-H4, http://www.acptechnologies.com/wp-content/uploads/2017/10/03-ACP-CA14-CE14.pdf +Potentiometer horizontal ACP CA14-H4 +0 +3 +3 +Potentiometer_THT +Potentiometer_ACP_CA14-H5_Horizontal +Potentiometer, horizontal, ACP CA14-H5, http://www.acptechnologies.com/wp-content/uploads/2017/10/03-ACP-CA14-CE14.pdf +Potentiometer horizontal ACP CA14-H5 +0 +3 +3 +Potentiometer_THT +Potentiometer_ACP_CA14V-15_Vertical +Potentiometer, vertical, ACP CA14V-15, http://www.acptechnologies.com/wp-content/uploads/2017/10/03-ACP-CA14-CE14.pdf +Potentiometer vertical ACP CA14V-15 +0 +3 +3 +Potentiometer_THT +Potentiometer_ACP_CA14V-15_Vertical_Hole +Potentiometer, vertical, shaft hole, ACP CA14V-15, http://www.acptechnologies.com/wp-content/uploads/2017/10/03-ACP-CA14-CE14.pdf +Potentiometer vertical hole ACP CA14V-15 +0 +3 +3 +Potentiometer_THT +Potentiometer_Alpha_RD901F-40-00D_Single_Vertical +Potentiometer, vertical, 9mm, single, http://www.taiwanalpha.com.tw/downloads?target=products&id=113 +potentiometer vertical 9mm single +0 +5 +3 +Potentiometer_THT +Potentiometer_Alpha_RD901F-40-00D_Single_Vertical_CircularHoles +Potentiometer, vertical, 9mm, single, http://www.taiwanalpha.com.tw/downloads?target=products&id=113 +potentiometer vertical 9mm single +0 +5 +3 +Potentiometer_THT +Potentiometer_Alpha_RD902F-40-00D_Dual_Vertical +Potentiometer, vertical, 9mm, dual, http://www.taiwanalpha.com.tw/downloads?target=products&id=113 +potentiometer vertical 9mm dual +0 +8 +6 +Potentiometer_THT +Potentiometer_Alpha_RD902F-40-00D_Dual_Vertical_CircularHoles +Potentiometer, vertical, 9mm, dual, http://www.taiwanalpha.com.tw/downloads?target=products&id=113 +potentiometer vertical 9mm dual +0 +8 +6 +Potentiometer_THT +Potentiometer_Alps_RK09K_Single_Horizontal +Potentiometer, horizontal, Alps RK09K Single, http://www.alps.com/prod/info/E/HTML/Potentiometer/RotaryPotentiometers/RK09K/RK09K_list.html +Potentiometer horizontal Alps RK09K Single +0 +5 +3 +Potentiometer_THT +Potentiometer_Alps_RK09K_Single_Vertical +Potentiometer, vertical, Alps RK09K Single, http://www.alps.com/prod/info/E/HTML/Potentiometer/RotaryPotentiometers/RK09K/RK09K_list.html +Potentiometer vertical Alps RK09K Single +0 +3 +3 +Potentiometer_THT +Potentiometer_Alps_RK09L_Double_Horizontal +Potentiometer, horizontal, Alps RK09L Double, http://www.alps.com/prod/info/E/HTML/Potentiometer/RotaryPotentiometers/RK09L/RK09L_list.html +Potentiometer horizontal Alps RK09L Double +0 +8 +6 +Potentiometer_THT +Potentiometer_Alps_RK09L_Double_Vertical +Potentiometer, vertical, Alps RK09L Double, http://www.alps.com/prod/info/E/HTML/Potentiometer/RotaryPotentiometers/RK09L/RK09L_list.html +Potentiometer vertical Alps RK09L Double +0 +6 +6 +Potentiometer_THT +Potentiometer_Alps_RK09L_Single_Horizontal +Potentiometer, horizontal, Alps RK09L Single, http://www.alps.com/prod/info/E/HTML/Potentiometer/RotaryPotentiometers/RK09L/RK09L_list.html +Potentiometer horizontal Alps RK09L Single +0 +5 +3 +Potentiometer_THT +Potentiometer_Alps_RK09L_Single_Vertical +Potentiometer, vertical, Alps RK09L Single, http://www.alps.com/prod/info/E/HTML/Potentiometer/RotaryPotentiometers/RK09L/RK09L_list.html +Potentiometer vertical Alps RK09L Single +0 +3 +3 +Potentiometer_THT +Potentiometer_Alps_RK09Y11_Single_Horizontal +Potentiometer, horizontal, Alps RK09Y11 Single, http://www.alps.com/prod/info/E/HTML/Potentiometer/RotaryPotentiometers/RK09Y11/RK09Y11_list.html +Potentiometer horizontal Alps RK09Y11 Single +0 +3 +3 +Potentiometer_THT +Potentiometer_Alps_RK097_Dual_Horizontal +Potentiometer, horizontal, Alps RK097 Dual, http://www.alps.com/prod/info/E/HTML/Potentiometer/RotaryPotentiometers/RK097/RK097_list.html +Potentiometer horizontal Alps RK097 Dual +0 +6 +6 +Potentiometer_THT +Potentiometer_Alps_RK097_Single_Horizontal +Potentiometer, horizontal, Alps RK097 Single, http://www.alps.com/prod/info/E/HTML/Potentiometer/RotaryPotentiometers/RK097/RK097_list.html +Potentiometer horizontal Alps RK097 Single +0 +3 +3 +Potentiometer_THT +Potentiometer_Alps_RK163_Dual_Horizontal +Potentiometer, horizontal, Alps RK163 Dual, http://www.alps.com/prod/info/E/HTML/Potentiometer/RotaryPotentiometers/RK16/RK16_list.html +Potentiometer horizontal Alps RK163 Dual +0 +6 +6 +Potentiometer_THT +Potentiometer_Alps_RK163_Single_Horizontal +Potentiometer, horizontal, Alps RK163 Single, http://www.alps.com/prod/info/E/HTML/Potentiometer/RotaryPotentiometers/RK16/RK16_list.html +Potentiometer horizontal Alps RK163 Single +0 +3 +3 +Potentiometer_THT +Potentiometer_Bourns_3005_Horizontal +Potentiometer, horizontal, Bourns 3005, http://www.bourns.com/docs/Product-Datasheets/3005.pdf +Potentiometer horizontal Bourns 3005 +0 +3 +3 +Potentiometer_THT +Potentiometer_Bourns_3006P_Horizontal +Potentiometer, horizontal, Bourns 3006P, https://www.bourns.com/docs/Product-Datasheets/3006.pdf +Potentiometer horizontal Bourns 3006P +0 +3 +3 +Potentiometer_THT +Potentiometer_Bourns_3006W_Horizontal +Potentiometer, horizontal, Bourns 3006W, https://www.bourns.com/docs/Product-Datasheets/3006.pdf +Potentiometer horizontal Bourns 3006W +0 +3 +3 +Potentiometer_THT +Potentiometer_Bourns_3006Y_Horizontal +Potentiometer, horizontal, Bourns 3006Y, https://www.bourns.com/docs/Product-Datasheets/3006.pdf +Potentiometer horizontal Bourns 3006Y +0 +3 +3 +Potentiometer_THT +Potentiometer_Bourns_3009P_Horizontal +Potentiometer, horizontal, Bourns 3009P, http://www.bourns.com/docs/Product-Datasheets/3009.pdf +Potentiometer horizontal Bourns 3009P +0 +3 +3 +Potentiometer_THT +Potentiometer_Bourns_3009Y_Horizontal +Potentiometer, horizontal, Bourns 3009Y, http://www.bourns.com/docs/Product-Datasheets/3009.pdf +Potentiometer horizontal Bourns 3009Y +0 +3 +3 +Potentiometer_THT +Potentiometer_Bourns_3266P_Horizontal +Potentiometer, horizontal, Bourns 3266P, https://www.bourns.com/docs/Product-Datasheets/3266.pdf +Potentiometer horizontal Bourns 3266P +0 +3 +3 +Potentiometer_THT +Potentiometer_Bourns_3266W_Vertical +Potentiometer, vertical, Bourns 3266W, https://www.bourns.com/docs/Product-Datasheets/3266.pdf +Potentiometer vertical Bourns 3266W +0 +3 +3 +Potentiometer_THT +Potentiometer_Bourns_3266X_Horizontal +Potentiometer, horizontal, Bourns 3266X, https://www.bourns.com/docs/Product-Datasheets/3266.pdf +Potentiometer horizontal Bourns 3266X +0 +3 +3 +Potentiometer_THT +Potentiometer_Bourns_3266Y_Vertical +Potentiometer, vertical, Bourns 3266Y, https://www.bourns.com/docs/Product-Datasheets/3266.pdf +Potentiometer vertical Bourns 3266Y +0 +3 +3 +Potentiometer_THT +Potentiometer_Bourns_3266Z_Horizontal +Potentiometer, horizontal, Bourns 3266Z, https://www.bourns.com/docs/Product-Datasheets/3266.pdf +Potentiometer horizontal Bourns 3266Z +0 +3 +3 +Potentiometer_THT +Potentiometer_Bourns_3296P_Horizontal +Potentiometer, horizontal, Bourns 3296P, https://www.bourns.com/pdfs/3296.pdf +Potentiometer horizontal Bourns 3296P +0 +3 +3 +Potentiometer_THT +Potentiometer_Bourns_3296W_Vertical +Potentiometer, vertical, Bourns 3296W, https://www.bourns.com/pdfs/3296.pdf +Potentiometer vertical Bourns 3296W +0 +3 +3 +Potentiometer_THT +Potentiometer_Bourns_3296X_Horizontal +Potentiometer, horizontal, Bourns 3296X, https://www.bourns.com/pdfs/3296.pdf +Potentiometer horizontal Bourns 3296X +0 +3 +3 +Potentiometer_THT +Potentiometer_Bourns_3296Y_Vertical +Potentiometer, vertical, Bourns 3296Y, https://www.bourns.com/pdfs/3296.pdf +Potentiometer vertical Bourns 3296Y +0 +3 +3 +Potentiometer_THT +Potentiometer_Bourns_3296Z_Horizontal +Potentiometer, horizontal, Bourns 3296Z, https://www.bourns.com/pdfs/3296.pdf +Potentiometer horizontal Bourns 3296Z +0 +3 +3 +Potentiometer_THT +Potentiometer_Bourns_3299P_Horizontal +Potentiometer, horizontal, Bourns 3299P, https://www.bourns.com/pdfs/3299.pdf +Potentiometer horizontal Bourns 3299P +0 +3 +3 +Potentiometer_THT +Potentiometer_Bourns_3299W_Vertical +Potentiometer, vertical, Bourns 3299W, https://www.bourns.com/pdfs/3299.pdf +Potentiometer vertical Bourns 3299W +0 +3 +3 +Potentiometer_THT +Potentiometer_Bourns_3299X_Horizontal +Potentiometer, horizontal, Bourns 3299X, https://www.bourns.com/pdfs/3299.pdf +Potentiometer horizontal Bourns 3299X +0 +3 +3 +Potentiometer_THT +Potentiometer_Bourns_3299Y_Vertical +Potentiometer, vertical, Bourns 3299Y, https://www.bourns.com/pdfs/3299.pdf +Potentiometer vertical Bourns 3299Y +0 +3 +3 +Potentiometer_THT +Potentiometer_Bourns_3299Z_Horizontal +Potentiometer, horizontal, Bourns 3299Z, https://www.bourns.com/pdfs/3299.pdf +Potentiometer horizontal Bourns 3299Z +0 +3 +3 +Potentiometer_THT +Potentiometer_Bourns_3339H_Vertical +Potentiometer, vertical, Bourns 3339H, http://www.bourns.com/docs/Product-Datasheets/3339.pdf +Potentiometer vertical Bourns 3339H +0 +3 +3 +Potentiometer_THT +Potentiometer_Bourns_3339P_Vertical +Potentiometer, vertical, Bourns 3339P, http://www.bourns.com/docs/Product-Datasheets/3339.pdf +Potentiometer vertical Bourns 3339P +0 +3 +3 +Potentiometer_THT +Potentiometer_Bourns_3339P_Vertical_HandSoldering +Potentiometer, vertical, Bourns 3339P, hand-soldering, http://www.bourns.com/docs/Product-Datasheets/3339.pdf +Potentiometer vertical Bourns 3339P hand-soldering +0 +3 +3 +Potentiometer_THT +Potentiometer_Bourns_3339S_Horizontal +Potentiometer, horizontal, Bourns 3339S, http://www.bourns.com/docs/Product-Datasheets/3339.pdf +Potentiometer horizontal Bourns 3339S +0 +3 +3 +Potentiometer_THT +Potentiometer_Bourns_3339W_Horizontal +Potentiometer, horizontal, Bourns 3339W, http://www.bourns.com/docs/Product-Datasheets/3339.pdf +Potentiometer horizontal Bourns 3339W +0 +3 +3 +Potentiometer_THT +Potentiometer_Bourns_3386C_Horizontal +Potentiometer, horizontal, Bourns 3386C, https://www.bourns.com/pdfs/3386.pdf +Potentiometer horizontal Bourns 3386C +0 +3 +3 +Potentiometer_THT +Potentiometer_Bourns_3386F_Vertical +Potentiometer, vertical, Bourns 3386F, https://www.bourns.com/pdfs/3386.pdf +Potentiometer vertical Bourns 3386F +0 +3 +3 +Potentiometer_THT +Potentiometer_Bourns_3386P_Vertical +Potentiometer, vertical, Bourns 3386P, https://www.bourns.com/pdfs/3386.pdf +Potentiometer vertical Bourns 3386P +0 +3 +3 +Potentiometer_THT +Potentiometer_Bourns_3386X_Horizontal +Potentiometer, horizontal, Bourns 3386X, https://www.bourns.com/pdfs/3386.pdf +Potentiometer horizontal Bourns 3386X +0 +3 +3 +Potentiometer_THT +Potentiometer_Bourns_PTA1543_Single_Slide +Bourns single-gang slide potentiometer, 15.0mm travel, https://www.bourns.com/docs/Product-Datasheets/pta.pdf +Bourns single-gang slide potentiometer 15.0mm +0 +7 +4 +Potentiometer_THT +Potentiometer_Bourns_PTA2043_Single_Slide +Bourns single-gang slide potentiometer, 20.0mm travel, https://www.bourns.com/docs/Product-Datasheets/pta.pdf +Bourns single-gang slide potentiometer 20.0mm +0 +7 +4 +Potentiometer_THT +Potentiometer_Bourns_PTA3043_Single_Slide +Bourns single-gang slide potentiometer, 30.0mm travel, https://www.bourns.com/docs/Product-Datasheets/pta.pdf +Bourns single-gang slide potentiometer 30.0mm +0 +7 +4 +Potentiometer_THT +Potentiometer_Bourns_PTA4543_Single_Slide +Bourns single-gang slide potentiometer, 45.0mm travel, https://www.bourns.com/docs/Product-Datasheets/pta.pdf +Bourns single-gang slide potentiometer 45.0mm +0 +7 +4 +Potentiometer_THT +Potentiometer_Bourns_PTA6043_Single_Slide +Bourns single-gang slide potentiometer, 60.0mm travel, https://www.bourns.com/docs/Product-Datasheets/pta.pdf +Bourns single-gang slide potentiometer 60.0mm +0 +7 +4 +Potentiometer_THT +Potentiometer_Bourns_PTV09A-1_Single_Vertical +Potentiometer, vertical, Bourns PTV09A-1 Single, http://www.bourns.com/docs/Product-Datasheets/ptv09.pdf +Potentiometer vertical Bourns PTV09A-1 Single +0 +3 +3 +Potentiometer_THT +Potentiometer_Bourns_PTV09A-2_Single_Horizontal +Potentiometer, horizontal, Bourns PTV09A-2 Single, http://www.bourns.com/docs/Product-Datasheets/ptv09.pdf +Potentiometer horizontal Bourns PTV09A-2 Single +0 +5 +3 +Potentiometer_THT +Potentiometer_Omeg_PC16BU_Horizontal +Potentiometer, horizontal, Omeg PC16BU, http://www.omeg.co.uk/pc6bubrc.htm +Potentiometer horizontal Omeg PC16BU +0 +3 +3 +Potentiometer_THT +Potentiometer_Omeg_PC16BU_Vertical +Potentiometer, vertical, Omeg PC16BU, http://www.omeg.co.uk/pc6bubrc.htm +Potentiometer vertical Omeg PC16BU +0 +3 +3 +Potentiometer_THT +Potentiometer_Piher_PC-16_Dual_Horizontal +Potentiometer, horizontal, Piher PC-16 Dual, http://www.piher-nacesa.com/pdf/20-PC16v03.pdf +Potentiometer horizontal Piher PC-16 Dual +0 +6 +6 +Potentiometer_THT +Potentiometer_Piher_PC-16_Single_Horizontal +Potentiometer, horizontal, Piher PC-16 Single, http://www.piher-nacesa.com/pdf/20-PC16v03.pdf +Potentiometer horizontal Piher PC-16 Single +0 +3 +3 +Potentiometer_THT +Potentiometer_Piher_PC-16_Single_Vertical +Potentiometer, vertical, Piher PC-16 Single, http://www.piher-nacesa.com/pdf/20-PC16v03.pdf +Potentiometer vertical Piher PC-16 Single +0 +3 +3 +Potentiometer_THT +Potentiometer_Piher_PC-16_Triple_Horizontal +Potentiometer, horizontal, Piher PC-16 Triple, http://www.piher-nacesa.com/pdf/20-PC16v03.pdf +Potentiometer horizontal Piher PC-16 Triple +0 +9 +9 +Potentiometer_THT +Potentiometer_Piher_PT-6-H_Horizontal +Potentiometer, horizontal, Piher PT-6-H, http://www.piher-nacesa.com/pdf/11-PT6v03.pdf +Potentiometer horizontal Piher PT-6-H +0 +3 +3 +Potentiometer_THT +Potentiometer_Piher_PT-6-V_Vertical +Potentiometer, vertical, Piher PT-6-V, http://www.piher-nacesa.com/pdf/11-PT6v03.pdf +Potentiometer vertical Piher PT-6-V +0 +3 +3 +Potentiometer_THT +Potentiometer_Piher_PT-6-V_Vertical_Hole +Potentiometer, vertical, shaft hole, Piher PT-6-V, http://www.piher-nacesa.com/pdf/11-PT6v03.pdf +Potentiometer vertical hole Piher PT-6-V +0 +3 +3 +Potentiometer_THT +Potentiometer_Piher_PT-10-H01_Horizontal +Potentiometer, horizontal, Piher PT-10-H01, http://www.piher-nacesa.com/pdf/12-PT10v03.pdf +Potentiometer horizontal Piher PT-10-H01 +0 +3 +3 +Potentiometer_THT +Potentiometer_Piher_PT-10-H05_Horizontal +Potentiometer, horizontal, Piher PT-10-H05, http://www.piher-nacesa.com/pdf/12-PT10v03.pdf +Potentiometer horizontal Piher PT-10-H05 +0 +3 +3 +Potentiometer_THT +Potentiometer_Piher_PT-10-V05_Vertical +Potentiometer, vertical, Piher PT-10-V05, http://www.piher-nacesa.com/pdf/12-PT10v03.pdf +Potentiometer vertical Piher PT-10-V05 +0 +3 +3 +Potentiometer_THT +Potentiometer_Piher_PT-10-V10_Vertical +Potentiometer, vertical, Piher PT-10-V10, http://www.piher-nacesa.com/pdf/12-PT10v03.pdf +Potentiometer vertical Piher PT-10-V10 +0 +3 +3 +Potentiometer_THT +Potentiometer_Piher_PT-10-V10_Vertical_Hole +Potentiometer, vertical, shaft hole, Piher PT-10-V10, http://www.piher-nacesa.com/pdf/12-PT10v03.pdf +Potentiometer vertical hole Piher PT-10-V10 +0 +3 +3 +Potentiometer_THT +Potentiometer_Piher_PT-15-H01_Horizontal +Potentiometer, horizontal, Piher PT-15-H01, http://www.piher-nacesa.com/pdf/14-PT15v03.pdf +Potentiometer horizontal Piher PT-15-H01 +0 +3 +3 +Potentiometer_THT +Potentiometer_Piher_PT-15-H05_Horizontal +Potentiometer, horizontal, Piher PT-15-H05, http://www.piher-nacesa.com/pdf/14-PT15v03.pdf +Potentiometer horizontal Piher PT-15-H05 +0 +3 +3 +Potentiometer_THT +Potentiometer_Piher_PT-15-H06_Horizontal +Potentiometer, horizontal, Piher PT-15-H06, http://www.piher-nacesa.com/pdf/14-PT15v03.pdf +Potentiometer horizontal Piher PT-15-H06 +0 +3 +3 +Potentiometer_THT +Potentiometer_Piher_PT-15-H25_Horizontal +Potentiometer, horizontal, Piher PT-15-H25, http://www.piher-nacesa.com/pdf/14-PT15v03.pdf +Potentiometer horizontal Piher PT-15-H25 +0 +3 +3 +Potentiometer_THT +Potentiometer_Piher_PT-15-V02_Vertical +Potentiometer, vertical, Piher PT-15-V02, http://www.piher-nacesa.com/pdf/14-PT15v03.pdf +Potentiometer vertical Piher PT-15-V02 +0 +3 +3 +Potentiometer_THT +Potentiometer_Piher_PT-15-V02_Vertical_Hole +Potentiometer, vertical, shaft hole, Piher PT-15-V02, http://www.piher-nacesa.com/pdf/14-PT15v03.pdf +Potentiometer vertical hole Piher PT-15-V02 +0 +3 +3 +Potentiometer_THT +Potentiometer_Piher_PT-15-V15_Vertical +Potentiometer, vertical, Piher PT-15-V15, http://www.piher-nacesa.com/pdf/14-PT15v03.pdf +Potentiometer vertical Piher PT-15-V15 +0 +3 +3 +Potentiometer_THT +Potentiometer_Piher_PT-15-V15_Vertical_Hole +Potentiometer, vertical, shaft hole, Piher PT-15-V15, http://www.piher-nacesa.com/pdf/14-PT15v03.pdf +Potentiometer vertical hole Piher PT-15-V15 +0 +3 +3 +Potentiometer_THT +Potentiometer_Piher_T-16H_Double_Horizontal +Potentiometer, horizontal, Piher T-16H Double, http://www.piher-nacesa.com/pdf/22-T16v03.pdf +Potentiometer horizontal Piher T-16H Double +0 +6 +6 +Potentiometer_THT +Potentiometer_Piher_T-16H_Single_Horizontal +Potentiometer, horizontal, Piher T-16H Single, http://www.piher-nacesa.com/pdf/22-T16v03.pdf +Potentiometer horizontal Piher T-16H Single +0 +3 +3 +Potentiometer_THT +Potentiometer_Piher_T-16L_Single_Vertical_Hole +Potentiometer, vertical, shaft hole, Piher T-16L Single, http://www.piher-nacesa.com/pdf/22-T16v03.pdf +Potentiometer vertical hole Piher T-16L Single +0 +3 +3 +Potentiometer_THT +Potentiometer_Runtron_RM-063_Horizontal +Potentiometer, horizontal, Trimmer, RM-063 http://www.runtron.com/down/PDF%20Datasheet/Carbon%20Film%20Potentiometer/RM065%20RM063.pdf +Potentiometer Trimmer RM-063 +0 +3 +3 +Potentiometer_THT +Potentiometer_Runtron_RM-065_Vertical +Potentiometer, vertical, Trimmer, RM-065 http://www.runtron.com/down/PDF%20Datasheet/Carbon%20Film%20Potentiometer/RM065%20RM063.pdf +Potentiometer Trimmer RM-065 +0 +3 +3 +Potentiometer_THT +Potentiometer_TT_P0915N +http://www.ttelectronics.com/sites/default/files/download-files/Datasheet_PanelPot_P09xSeries.pdf +potentiometer vertical TT P0915N single +0 +5 +3 +Potentiometer_THT +Potentiometer_Vishay_43_Horizontal +Potentiometer, horizontal, Vishay 43, http://www.vishay.com/docs/57026/43.pdf +Potentiometer horizontal Vishay 43 +0 +3 +3 +Potentiometer_THT +Potentiometer_Vishay_148-149_Dual_Horizontal +Potentiometer, horizontal, Vishay 148-149 Dual, http://www.vishay.com/docs/57040/148149.pdf +Potentiometer horizontal Vishay 148-149 Dual +0 +6 +6 +Potentiometer_THT +Potentiometer_Vishay_148-149_Single_Horizontal +Potentiometer, horizontal, Vishay 148-149 Single, http://www.vishay.com/docs/57040/148149.pdf +Potentiometer horizontal Vishay 148-149 Single +0 +3 +3 +Potentiometer_THT +Potentiometer_Vishay_148-149_Single_Vertical +Potentiometer, vertical, Vishay 148-149 Single, http://www.vishay.com/docs/57040/148149.pdf +Potentiometer vertical Vishay 148-149 Single +0 +3 +3 +Potentiometer_THT +Potentiometer_Vishay_148E-149E_Dual_Horizontal +Potentiometer, horizontal, Vishay 148E-149E Dual, http://www.vishay.com/docs/57040/148149.pdf +Potentiometer horizontal Vishay 148E-149E Dual +0 +10 +6 +Potentiometer_THT +Potentiometer_Vishay_148E-149E_Single_Horizontal +Potentiometer, horizontal, Vishay 148E-149E Single, http://www.vishay.com/docs/57040/148149.pdf +Potentiometer horizontal Vishay 148E-149E Single +0 +7 +3 +Potentiometer_THT +Potentiometer_Vishay_248BH-249BH_Single_Horizontal +Potentiometer, horizontal, Vishay 248BH-249BH Single, http://www.vishay.com/docs/57054/248249.pdf +Potentiometer horizontal Vishay 248BH-249BH Single +0 +3 +3 +Potentiometer_THT +Potentiometer_Vishay_248GJ-249GJ_Single_Horizontal +Potentiometer, horizontal, Vishay 248GJ-249GJ Single, http://www.vishay.com/docs/57054/248249.pdf +Potentiometer horizontal Vishay 248GJ-249GJ Single +0 +3 +3 +Potentiometer_THT +Potentiometer_Vishay_248GJ-249GJ_Single_Vertical +Potentiometer, vertical, Vishay 248GJ-249GJ Single, http://www.vishay.com/docs/57054/248249.pdf +Potentiometer vertical Vishay 248GJ-249GJ Single +0 +3 +3 +Potentiometer_THT +Potentiometer_Vishay_T7-YA_Single_Vertical +Potentiometer, vertical, Vishay T7-YA Single, http://www.vishay.com/docs/51015/t7.pdf +Potentiometer vertical Vishay T7-YA Single +0 +3 +3 +Potentiometer_THT +Potentiometer_Vishay_T73XW_Horizontal +Potentiometer, horizontal, Vishay T73XW, http://www.vishay.com/docs/51016/t73.pdf +Potentiometer horizontal Vishay T73XW +0 +3 +3 +Potentiometer_THT +Potentiometer_Vishay_T73XX_Horizontal +Potentiometer, horizontal, Vishay T73XX, http://www.vishay.com/docs/51016/t73.pdf +Potentiometer horizontal Vishay T73XX +0 +3 +3 +Potentiometer_THT +Potentiometer_Vishay_T73YP_Vertical +Potentiometer, vertical, Vishay T73YP, http://www.vishay.com/docs/51016/t73.pdf +Potentiometer vertical Vishay T73YP +0 +3 +3 +RF +Skyworks_SKY13575_639LF +http://www.skyworksinc.com/uploads/documents/SKY13575_639LF_203270D.pdf +Skyworks +0 +19 +15 +RF +Skyworks_SKY65404-31 +http://www.skyworksinc.com/uploads/documents/SKY65404_31_201512K.pdf +Skyworks +0 +7 +7 +RF_Antenna +Abracon_APAES868R8060C16-T +Abracon RHCP ceramic patch antenna 854-882Mhz, 5dBi +APAES patch antenna +0 +1 +1 +RF_Antenna +Coilcraft_MA5532-AE_RFID +RFID Transponder Coil +antenna rfid coilcraft +0 +2 +2 +RF_Antenna +Johanson_2450AT18x100 +Johanson 2450AT43F0100 SMD antenna 2400-2500Mhz, -0.5dBi, https://www.johansontechnology.com/datasheets/2450AT18A100/2450AT18A100.pdf +antenna +0 +2 +2 +RF_Antenna +Johanson_2450AT43F0100 +Johanson 2450AT43F0100 SMD antenna 2400-2500Mhz, 1dBi, https://www.johansontechnology.com/datasheets/2450AT43F0100/2450AT43F0100.pdf +antenna +0 +2 +2 +RF_Antenna +Pulse_W3011 +Pulse RF Antenna, 4mm Clearance +antenna rf +0 +3 +2 +RF_Antenna +Texas_SWRA117D_2.4GHz_Left +http://www.ti.com/lit/an/swra117d/swra117d.pdf +PCB antenna +0 +2 +2 +RF_Antenna +Texas_SWRA117D_2.4GHz_Right +http://www.ti.com/lit/an/swra117d/swra117d.pdf +PCB antenna +0 +2 +2 +RF_Antenna +Texas_SWRA416_868MHz_915MHz +http://www.ti.com/lit/an/swra416/swra416.pdf +PCB antenna +0 +20 +1 +RF_Converter +Anaren_0805_2012Metric-6 +https://cdn.anaren.com/product-documents/Xinger/DirectionalCouplers/DC4759J5020AHF/DC4759J5020AHF_DataSheet(Rev_E).pdf +coupler rf +0 +6 +6 +RF_Converter +Balun_Johanson_1.6x0.8mm +6-pin 1.6x0.8 mm balun footprint +Johanson balun filter +0 +6 +6 +RF_Converter +Balun_Johanson_5400BL15B050E +https://www.johansontechnology.com/datasheets/5400BL15B050/5400BL15B050.pdf +balun RF +0 +6 +6 +RF_Converter +RF_Attenuator_Susumu_PAT1220 +http://www.susumu-usa.com/pdf/Foot_Print_38.pdf, https://www.susumu.co.jp/common/pdf/n_catalog_partition16_en.pdf +2mm 1.2mm +0 +3 +3 +RF_GPS +Linx_RXM-GPS +GPS Module, Linx +gps linx +0 +22 +22 +RF_GPS +SIM28ML +https://simcom.ee/documents/SIM28ML/SIM28ML_Hardware%20Design_V1.01.pdf +SIM28ML GPS +0 +18 +18 +RF_GPS +Sierra_XA11X0 +QFN-24, Pitch 1.20 no EP, https://source.sierrawireless.com/resources/airprime/hardware_specs_user_guides/airprime_xm1100_product_technical_specification +QFN-24 P1.20 +0 +24 +24 +RF_GPS +Sierra_XM11X0 +QFN-20, Pitch 1.20 no EP, https://source.sierrawireless.com/resources/airprime/hardware_specs_user_guides/airprime_xm1100_product_technical_specification +QFN-20 P1.20 +0 +20 +20 +RF_GPS +ublox_LEA +ublox LEA 6/7/8, (https://www.u-blox.com/sites/default/files/LEA-M8S-M8T-FW3_HardwareIntegrationManual_%28UBX-15030060%29.pdf) +GPS ublox LEA 6/7/8 +0 +28 +28 +RF_GPS +ublox_MAX +ublox MAX 6/7/8, (https://www.u-blox.com/sites/default/files/MAX-8-M8-FW3_HardwareIntegrationManual_%28UBX-15030059%29.pdf) +GPS ublox MAX 6/7/8 +0 +18 +18 +RF_GPS +ublox_NEO +ublox NEO 6/7/8, (https://www.u-blox.com/sites/default/files/NEO-8Q-NEO-M8-FW3_HardwareIntegrationManual_%28UBX-15029985%29_0.pdf) +GPS ublox NEO 6/7/8 +0 +24 +24 +RF_GPS +ublox_SAM-M8Q +GPS Module, 15.5x15.5x6.3mm, https://www.u-blox.com/sites/default/files/SAM-M8Q_HardwareIntegrationManual_%28UBX-16018358%29.pdf +ublox SAM-M8Q +0 +100 +20 +RF_GPS +ublox_SAM-M8Q_HandSolder +GPS Module, 15.5x15.5x6.3mm, https://www.u-blox.com/sites/default/files/SAM-M8Q_HardwareIntegrationManual_%28UBX-16018358%29.pdf +ublox SAM-M8Q +0 +20 +20 +RF_GPS +ublox_ZED +ublox ZED-F9, https://www.u-blox.com/sites/default/files/ZED-F9P_DataSheet_%28UBX-17051259%29.pdf +GPS GNSS ublox ZED +0 +102 +55 +RF_GSM +Quectel_BC66 +GSM NB-IoT module, 15.8x17.7x2mm, https://www.quectel.com/UploadImage/Downlad/Quectel_BC66_Hardware_Design_V1.1.pdf +GSM NB-IoT Module BC66 M66 +0 +116 +58 +RF_GSM +SIMCom_SIM800C +Quad-Band GSM/GPRS module, 17.6x15.7x2.3mm, http://simcom.ee/documents/SIM800C/SIM800C_Hardware_Design_V1.05.pdf +GSM Module SIM800C +0 +84 +42 +RF_GSM +SIMCom_SIM900 +Quad-Band GSM/GPRS module, 24x24x3mm, http://simcom.ee/documents/SIM900/SIM900_Hardware%20Design_V2.05.pdf +GSM Module SIM900 +0 +68 +68 +RF_GSM +Telit_xL865 +Telit xL865 familly footprint, http://www.telit.com/fileadmin/user_upload/products/Downloads/3G/Telit_UL865_Hardware_User_Guide_r8.pdf +xL865 gsm umts +0 +52 +48 +RF_GSM +ublox_SARA-G3_LGA-96 +ublox Sara GSM/HSPA modem, https://www.u-blox.com/sites/default/files/SARA-G3-U2_SysIntegrManual_%28UBX-13000995%29.pdf, pag.162 +ublox SARA-G3 SARA-U2 GSM HSPA +0 +192 +96 +RF_Mini-Circuits +Mini-Circuits_BK377 +Footprint for Mini-Circuits case BK377 (https://ww2.minicircuits.com/case_style/BK276.pdf) +Mini-circuits BK377 +0 +14 +14 +RF_Mini-Circuits +Mini-Circuits_BK377_LandPatternPL-005 +Footprint for Mini-Circuits case BK377 (https://ww2.minicircuits.com/case_style/BK276.pdf) according to land-pattern PL-005, including GND vias (https://ww2.minicircuits.com/pcb/98-pl005.pdf) +Mini-circuits VCXO JTOS PL-005 +0 +50 +14 +RF_Mini-Circuits +Mini-Circuits_CD541_H2.08mm +https://ww2.minicircuits.com/case_style/CD541.pdf +RF Transformer +0 +6 +6 +RF_Mini-Circuits +Mini-Circuits_CD542_H2.84mm +https://ww2.minicircuits.com/case_style/CD542.pdf +RF Transformer +0 +6 +6 +RF_Mini-Circuits +Mini-Circuits_CD542_LandPatternPL-052 +Footprint for Mini-Circuits case CD542 (https://ww2.minicircuits.com/case_style/CD542.pdf) using land-pattern PL-052, including GND-vias (https://ww2.minicircuits.com/pcb/98-pl052.pdf) +MiniCircuits PL-052 CD542 +0 +17 +6 +RF_Mini-Circuits +Mini-Circuits_CD542_LandPatternPL-094 +Footprint for mini circuit case CD542, Land pattern PL-094, pads 5 and 2 connected via insulated copper area below body, vias included (case drawing: https://ww2.minicircuits.com/case_style/CD542.pdf, land pattern drawing: https://ww2.minicircuits.com/pcb/98-pl094.pdf) +mini-circuits CD542 pl-094 +0 +18 +6 +RF_Mini-Circuits +Mini-Circuits_CD636_H4.11mm +https://ww2.minicircuits.com/case_style/CD636.pdf +RF Transformer +0 +6 +6 +RF_Mini-Circuits +Mini-Circuits_CD636_LandPatternPL-035 +Footprint for Mini-Circuits case CD636 (https://ww2.minicircuits.com/case_style/CD636.pdf) following land pattern PL-035, including GND-vias (https://ww2.minicircuits.com/pcb/98-pl035.pdf) +mini-circuits pl-035 CD636 +0 +13 +6 +RF_Mini-Circuits +Mini-Circuits_CD637_H5.23mm +https://ww2.minicircuits.com/case_style/CD637.pdf +RF Transformer +0 +6 +6 +RF_Mini-Circuits +Mini-Circuits_CK605 +Footprint for Mini-Circuits case CK605 (https://ww2.minicircuits.com/case_style/CK605.pdf) +Mini-Circuits CK605 +0 +16 +16 +RF_Mini-Circuits +Mini-Circuits_CK605_LandPatternPL-012 +Footprint for Mini-Circuits case CK605 (https://ww2.minicircuits.com/case_style/CK605.pdf) following land pattern PL-012, including GND vias (https://ww2.minicircuits.com/pcb/98-pl012.pdf) +Mini-Circuits PL-012 +0 +53 +16 +RF_Mini-Circuits +Mini-Circuits_DB1627 +Mini-Circuits top-hat case DB1627 (https://ww2.minicircuits.com/case_style/DB1627.pdf) +Mini-Circuits DB1627 +0 +6 +6 +RF_Mini-Circuits +Mini-Circuits_GP731 +Footprint for Mini-Circuits case GP731 (https://ww2.minicircuits.com/case_style/GP731.pdf) +Mini-Circuits GP731 +0 +8 +8 +RF_Mini-Circuits +Mini-Circuits_GP731_LandPatternPL-176 +Footprint for Mini-Circuits case GP731 (https://ww2.minicircuits.com/case_style/GP731.pdf) following land pattern PL-176, including GND vias (https://www.minicircuits.com/pcb/98-pl176.pdf) +mini-circuits PL-176 +0 +21 +8 +RF_Mini-Circuits +Mini-Circuits_GP1212 +Footprint for Mini-Circuits case GP1212 (https://ww2.minicircuits.com/case_style/GP731.pdf) +mini-circuits GP1212 +0 +8 +8 +RF_Mini-Circuits +Mini-Circuits_GP1212_LandPatternPL-176 +Footprint for Mini-Circuits case GP1212 (https://ww2.minicircuits.com/case_style/GP731.pdf) following land pattern PL-176, including GND vias (https://www.minicircuits.com/pcb/98-pl176.pdf) +mini-circuits PL-176 +0 +21 +8 +RF_Mini-Circuits +Mini-Circuits_HF1139 +Footprint for Mini-Circuits case HF1139 (https://ww2.minicircuits.com/case_style/HF1139.pdf) +Mini-Circuits HF1139 +0 +8 +8 +RF_Mini-Circuits +Mini-Circuits_HF1139_LandPatternPL-230 +Footprint for Mini-Circuits case HF1139 (https://ww2.minicircuits.com/case_style/HF1139.pdf) following land pattern PL-230, including GND vias (https://ww2.minicircuits.com/pcb/98-pl230.pdf) +Mini-Circuits PL-230 +0 +37 +8 +RF_Mini-Circuits +Mini-Circuits_HQ1157 +Footprint for Mini-Circuits case HQ1157 (https://www.minicircuits.com/case_style/HQ1157.pdf) +Mini-Circuits HQ1157 +0 +14 +14 +RF_Mini-Circuits +Mini-Circuits_HZ1198 +Footprint for Mini-Circuits case HZ1198 (https://ww2.minicircuits.com/case_style/HZ1198.pdf) +Mini-Circuits HZ1198 +0 +6 +6 +RF_Mini-Circuits +Mini-Circuits_HZ1198_LandPatternPL-247 +Footprint for Mini-Circuits cas HZ1198 (https://ww2.minicircuits.com/case_style/HZ1198.pdf) following land pattern PL-247, including GND-vias (https://www.minicircuits.com/pcb/98-pl247.pdf) +Mini-Circuits PL-247 HZ1198 +0 +40 +6 +RF_Mini-Circuits +Mini-Circuits_MMM168 +Footprint for Mini-Circuits case MMM168 (https://ww2.minicircuits.com/case_style/MMM168.pdf) +Mini-Circuits MMM168 +0 +4 +4 +RF_Mini-Circuits +Mini-Circuits_MMM168_LandPatternPL-225 +Footprint for Mini-Circuits case MMM168, Land pattern PL-225, vias included, (case drawing: https://ww2.minicircuits.com/case_style/MMM168.pdf, land pattern drawing: https://ww2.minicircuits.com/pcb/98-pl225.pdf) +pl-225 +0 +10 +4 +RF_Mini-Circuits +Mini-Circuits_QQQ130_ClockwisePinNumbering +Footprint for Mini-Circuits case QQQ130 (https://ww2.minicircuits.com/case_style/QQQ130.pdf) +Mini-Circuits QQQ130 +0 +6 +6 +RF_Mini-Circuits +Mini-Circuits_QQQ130_LandPattern_PL-236_ClockwisePinNumbering +Footprint for Mini-Circuits case QQQ130 (https://ww2.minicircuits.com/case_style/QQQ130.pdf) following land pattern PL-236, including GND vias (https://ww2.minicircuits.com/pcb/98-pl236.pdf) +Mini-Circuits PL-236 +0 +14 +6 +RF_Mini-Circuits +Mini-Circuits_TT1224_ClockwisePinNumbering +Footprint for Mini-Circuits case TT1224 (https://ww2.minicircuits.com/case_style/TT1224.pdf) following land-pattern PL-258, including GND-vias (https://www.minicircuits.com/pcb/98-pl258.pdf) +Mini-Circuits TT1224 +0 +6 +6 +RF_Mini-Circuits +Mini-Circuits_TT1224_LandPatternPL-258_ClockwisePinNumbering +Footprint for Mini-Circuits case TT1224 (https://ww2.minicircuits.com/case_style/TT1224.pdf) following land-pattern PL-258, including GND-vias (https://www.minicircuits.com/pcb/98-pl258.pdf) +PL-258 Mini-Circuits +0 +26 +6 +RF_Mini-Circuits +Mini-Circuits_TTT167 +Footprint for Mini-Circuits case TTT167 (https://ww2.minicircuits.com/case_style/TTT167.pdf) +Mini-Circuits TTT167 +0 +6 +6 +RF_Mini-Circuits +Mini-Circuits_TTT167_LandPatternPL-079 +Footprint for Mini-Circuits case TTT167 (Mini-Circuits_TTT167_LandPatternPL-079) following land pattern PL-079, including GND vias (https://ww2.minicircuits.com/pcb/98-pl079.pdf) +Mini-Circuits PL-079 +0 +36 +6 +RF_Mini-Circuits +Mini-Circuits_YY161 +Footprint for Mini-Circuits case YY161 (https://ww2.minicircuits.com/case_style/YY161.pdf) +Mini-Circuits YY161 +0 +8 +8 +RF_Mini-Circuits +Mini-Circuits_YY161_LandPatternPL-049 +Footprint for Mini-Circuits case YY161 (https://ww2.minicircuits.com/case_style/YY161.pdf) using land-pattern PL-049, including GND-connections and vias (https://ww2.minicircuits.com/pcb/98-pl049.pdf) +mini-circuits pl-049 +0 +36 +8 +RF_Module +Ai-Thinker-Ra-01-LoRa +Ai Thinker Ra-01 LoRa +LoRa Ra-01 +0 +16 +16 +RF_Module +Atmel_ATSAMR21G18-MR210UA_NoRFPads +http://ww1.microchip.com/downloads/en/devicedoc/atmel-42475-atsamr21g18-mr210ua_datasheet.pdf +module wireless zigbee 802.15.4 flash crypto ATSAMR21G18 AT45DB041E TECC508A U.Fi +0 +42 +42 +RF_Module +BLE112-A +Class 4 Bluetooth Module with on-board antenna +Bluetooth Module +0 +30 +30 +RF_Module +CMWX1ZZABZ +https://wireless.murata.com/RFM/data/type_abz.pdf +iot lora sigfox +0 +57 +57 +RF_Module +CYBLE-21Pin-10x10mm +Cypress EZ-BLE PRoC Module (Bluetooth Smart) 21 Pin Module +Cypress BT Bluetooth +0 +21 +21 +RF_Module +DWM1000 +IEEE802.15.4-2011 UWB +UWB Module +0 +24 +24 +RF_Module +DecaWave_DWM1001 +https://www.decawave.com/sites/default/files/dwm1001_datasheet.pdf +UWB module +0 +34 +34 +RF_Module +Digi_XBee_SMT +http://www.digi.com/resources/documentation/digidocs/pdfs/90002126.pdf http://ftp1.digi.com/support/documentation/90001020_F.pdf +Digi XBee SMT RF +0 +37 +37 +RF_Module +E18-MS1-PCB +http://www.cdebyte.com/en/downpdf.aspx?id=122 +Zigbee +0 +24 +24 +RF_Module +E73-2G4M04S +http://www.cdebyte.com/en/downpdf.aspx?id=243 +BLE BLE5 nRF52832 +0 +44 +44 +RF_Module +ESP-07 +Wi-Fi Module, http://wiki.ai-thinker.com/_media/esp8266/docs/a007ps01a2_esp-07_product_specification_v1.2.pdf +Wi-Fi Module +0 +16 +16 +RF_Module +ESP-12E +Wi-Fi Module, http://wiki.ai-thinker.com/_media/esp8266/docs/aithinker_esp_12f_datasheet_en.pdf +Wi-Fi Module +0 +22 +22 +RF_Module +ESP-WROOM-02 +http://espressif.com/sites/default/files/documentation/0c-esp-wroom-02_datasheet_en.pdf +ESP WROOM-02 espressif esp8266ex +0 +19 +19 +RF_Module +ESP32-S2-WROVER +ESP32-S2-WROVER(-I) 2.4 GHz Wi-Fi https://www.espressif.com/sites/default/files/documentation/esp32-s2-wroom_esp32-s2-wroom-i_datasheet_en.pdf +ESP32-S2 ESP32 WIFI +0 +43 +43 +RF_Module +ESP32-WROOM-32 +Single 2.4 GHz Wi-Fi and Bluetooth combo chip https://www.espressif.com/sites/default/files/documentation/esp32-wroom-32_datasheet_en.pdf +Single 2.4 GHz Wi-Fi and Bluetooth combo chip +0 +39 +39 +RF_Module +ESP32-WROOM-32U +Single 2.4 GHz Wi-Fi and Bluetooth combo chip with U.FL connector, https://www.espressif.com/sites/default/files/documentation/esp32-wroom-32d_esp32-wroom-32u_datasheet_en.pdf +Single 2.4 GHz Wi-Fi and Bluetooth combo chip +0 +39 +39 +RF_Module +Garmin_M8-35_9.8x14.0mm_Layout6x6_P1.5mm +D52M ANT SoC Module https://www.thisisant.com/assets/resources/D00001687_D52_Module_Datasheet.v.2.3_(Garmin).pdf +RF SoC Radio ANT Bluetooth BLE D52 nRF52 Garmin Canada Dynastream Nordic +0 +35 +35 +RF_Module +HOPERF_RFM9XW_SMD +Low Power Long Range Transceiver Module SMD-16 (https://www.hoperf.com/data/upload/portal/20181127/5bfcbea20e9ef.pdf) +LoRa Low Power Long Range Transceiver Module +0 +16 +16 +RF_Module +HOPERF_RFM9XW_THT +Low Power Long Range Transceiver Module THT-16 (https://www.hoperf.com/data/upload/portal/20181127/5bfcbea20e9ef.pdf) +Low Power Long Range Transceiver Module LoRa +0 +16 +16 +RF_Module +HOPERF_RFM69HW +Radio, RF, Module, http://www.hoperf.com/upload/rf/RFM69HW-V1.3.pdf +Radio RF Module +0 +16 +16 +RF_Module +IQRF_TRx2DA_KON-SIM-01 +8 pin SIM connector for IQRF TR-x2DA(T) modules, http://iqrf.org/weben/downloads.php?id=104 +IQRF_KON-SIM-01 IQRF_TRx2DA +0 +10 +8 +RF_Module +IQRF_TRx2D_KON-SIM-01 +8 pin SIM connector for IQRF TR-x2D(C)(T) modules, http://iqrf.org/weben/downloads.php?id=104 +IQRF_KON-SIM-01 IQRF_TRx2D IQRF_TRx2DC +0 +10 +8 +RF_Module +Laird_BL652 +Bluetooth v4.2 + NFC module +Bluetooth BLE NFC +0 +39 +39 +RF_Module +MOD-nRF8001 +BLE module, https://www.olimex.com/Products/Modules/RF/MOD-nRF8001/ +BLE module +0 +11 +11 +RF_Module +Microchip_RN4871 +Microchip RN4871 footprint +RN4871 BLE +0 +16 +16 +RF_Module +Modtronix_inAir9 +Modtronix Wireless SX1276 LoRa Module (http://modtronix.com/img/prod/imod/inair9/inair_dimensions.gif) +Modtronix LoRa inAir inAir9 SX1276 RF 915MHz 868MHz Wireless +0 +14 +14 +RF_Module +MonoWireless_TWE-L-WX +https://www.mono-wireless.com/jp/products/TWE-LITE/MW-PDS-TWELITE-JP.pdf +TWE-L-WX +0 +32 +32 +RF_Module +Particle_P1 +https://docs.particle.io/datasheets/p1-datasheet/ +Particle P1 +0 +75 +75 +RF_Module +RFDigital_RFD77101 +RFDigital RFD77101 Simblee +RFDigital RFD77101 Simblee +0 +48 +45 +RF_Module +RN42 +Class 2 Bluetooth Module with on-board antenna +Bluetooth Module +0 +36 +33 +RF_Module +RN42N +Class 2 Bluetooth Module without antenna +Bluetooth Module +0 +39 +36 +RF_Module +RN2483 +Low-Power Long Range LoRa Transceiver Module +rf module lora lorawan +0 +47 +47 +RF_Module +ST_SPBTLE +Bluetooth Low Energy Module +ble module st bluetooth +0 +11 +11 +RF_Module +TD1205 +https://github.com/Telecom-Design/Documentation_TD_RF_Module/blob/master/TD1205%20Datasheet.pdf +SIGFOX Module +0 +9 +9 +RF_Module +TD1208 +https://github.com/Telecom-Design/Documentation_TD_RF_Module/blob/master/TD1208%20Datasheet.pdf +SIGFOX Module +0 +25 +25 +RF_Module +Taiyo-Yuden_EYSGJNZWY +Taiyo Yuden NRF51822 Module Bluetooth https://www.yuden.co.jp/wireless_module/document/datareport2/en/TY_BLE_EYSGJNZ_DataReport_V1_9_20180530E.pdf +Taiyo Yuden NRF51822 Module Bluetooth +0 +30 +28 +RF_Module +ZETA-433-SO_SMD +RF transceiver SMD style https://www.rfsolutions.co.uk/downloads/1456219226DS-ZETA.pdf +RF transceiver SMD style +0 +12 +12 +RF_Module +ZETA-433-SO_THT +RF transceiver THT style https://www.rfsolutions.co.uk/downloads/1456219226DS-ZETA.pdf +RF transceiver SMD style +0 +12 +12 +RF_Module +nRF24L01_Breakout +nRF24L01 breakout board +nRF24L01 adapter breakout +0 +8 +8 +RF_Shielding +Laird_Technologies_97-2002_25.40x25.40mm +Laird Technologies 97-2002 EZ PEEL Shielding Cabinet One Piece SMD 25.40x25.40mm (https://assets.lairdtech.com/home/brandworld/files/Board%20Level%20Shields%20Catalog%20Download.pdf) +Shielding Cabinet +0 +8 +1 +RF_Shielding +Laird_Technologies_97-2003_12.70x13.37mm +Laird Technologies 97-2003 EZ PEEL Shielding Cabinet One Piece SMD 12.70x13.37mm (https://assets.lairdtech.com/home/brandworld/files/Board%20Level%20Shields%20Catalog%20Download.pdf) +Shielding Cabinet +0 +8 +1 +RF_Shielding +Laird_Technologies_BMI-S-101_13.66x12.70mm +Laird Technologies BMI-S-101 Shielding Cabinet One Piece SMD 13.66x12.70mm (https://assets.lairdtech.com/home/brandworld/files/Board%20Level%20Shields%20Catalog%20Download.pdf) +Shielding Cabinet +0 +16 +1 +RF_Shielding +Laird_Technologies_BMI-S-102_16.50x16.50mm +Laird Technologies BMI-S-102 Shielding Cabinet One Piece SMD 16.50x16.50mm (https://assets.lairdtech.com/home/brandworld/files/Board%20Level%20Shields%20Catalog%20Download.pdf) +Shielding Cabinet +0 +16 +1 +RF_Shielding +Laird_Technologies_BMI-S-103_26.21x26.21mm +Laird Technologies BMI-S-103 Shielding Cabinet One Piece SMD 26.21x26.21mm (https://assets.lairdtech.com/home/brandworld/files/Board%20Level%20Shields%20Catalog%20Download.pdf) +Shielding Cabinet +0 +24 +1 +RF_Shielding +Laird_Technologies_BMI-S-104_32.00x32.00mm +Laird Technologies BMI-S-104 Shielding Cabinet One Piece SMD 32.00x32.00mm (https://assets.lairdtech.com/home/brandworld/files/Board%20Level%20Shields%20Catalog%20Download.pdf) +Shielding Cabinet +0 +28 +1 +RF_Shielding +Laird_Technologies_BMI-S-105_38.10x25.40mm +Laird Technologies BMI-S-105 Shielding Cabinet One Piece SMD 38.10x25.40mm (https://assets.lairdtech.com/home/brandworld/files/Board%20Level%20Shields%20Catalog%20Download.pdf) +Shielding Cabinet +0 +28 +1 +RF_Shielding +Laird_Technologies_BMI-S-106_36.83x33.68mm +Laird Technologies BMI-S-106 Shielding Cabinet One Piece SMD 36.83x33.68mm (https://assets.lairdtech.com/home/brandworld/files/Board%20Level%20Shields%20Catalog%20Download.pdf) +Shielding Cabinet +0 +28 +1 +RF_Shielding +Laird_Technologies_BMI-S-107_44.37x44.37mm +Laird Technologies BMI-S-107 Shielding Cabinet One Piece SMD 44.37x44.37mm (https://assets.lairdtech.com/home/brandworld/files/Board%20Level%20Shields%20Catalog%20Download.pdf) +Shielding Cabinet +0 +36 +1 +RF_Shielding +Laird_Technologies_BMI-S-201-F_13.66x12.70mm +Laird Technologies BMI-S-201-F Shielding Cabinet Two Piece SMD 13.66x12.70mm (https://assets.lairdtech.com/home/brandworld/files/Board%20Level%20Shields%20Catalog%20Download.pdf) +Shielding Cabinet +0 +16 +1 +RF_Shielding +Laird_Technologies_BMI-S-202-F_16.50x16.50mm +Laird Technologies BMI-S-202-F Shielding Cabinet Two Piece SMD 16.50x16.50mm (https://assets.lairdtech.com/home/brandworld/files/Board%20Level%20Shields%20Catalog%20Download.pdf) +Shielding Cabinet +0 +16 +1 +RF_Shielding +Laird_Technologies_BMI-S-203-F_26.21x26.21mm +Laird Technologies BMI-S-203-F Shielding Cabinet Two Piece SMD 26.21x26.21mm (https://assets.lairdtech.com/home/brandworld/files/Board%20Level%20Shields%20Catalog%20Download.pdf) +Shielding Cabinet +0 +24 +1 +RF_Shielding +Laird_Technologies_BMI-S-204-F_32.00x32.00mm +Laird Technologies BMI-S-204-F Shielding Cabinet Two Piece SMD 32.00x32.00mm (https://assets.lairdtech.com/home/brandworld/files/Board%20Level%20Shields%20Catalog%20Download.pdf) +Shielding Cabinet +0 +28 +1 +RF_Shielding +Laird_Technologies_BMI-S-205-F_38.10x25.40mm +Laird Technologies BMI-S-205-F Shielding Cabinet Two Piece SMD 38.10x25.40mm (https://assets.lairdtech.com/home/brandworld/files/Board%20Level%20Shields%20Catalog%20Download.pdf) +Shielding Cabinet +0 +28 +1 +RF_Shielding +Laird_Technologies_BMI-S-206-F_36.83x33.68mm +Laird Technologies BMI-S-206-F Shielding Cabinet Two Piece SMD 36.83x33.68mm (https://assets.lairdtech.com/home/brandworld/files/Board%20Level%20Shields%20Catalog%20Download.pdf) +Shielding Cabinet +0 +28 +1 +RF_Shielding +Laird_Technologies_BMI-S-207-F_44.37x44.37mm +Laird Technologies BMI-S-207-F Shielding Cabinet Two Piece SMD 44.37x44.37mm (https://assets.lairdtech.com/home/brandworld/files/Board%20Level%20Shields%20Catalog%20Download.pdf) +Shielding Cabinet +0 +36 +1 +RF_Shielding +Laird_Technologies_BMI-S-208-F_39.60x39.60mm +Laird Technologies BMI-S-208-F Shielding Cabinet Two Piece SMD 39.60x39.60mm (https://assets.lairdtech.com/home/brandworld/files/Board%20Level%20Shields%20Catalog%20Download.pdf) +Shielding Cabinet +0 +32 +1 +RF_Shielding +Laird_Technologies_BMI-S-209-F_29.36x18.50mm +Laird Technologies BMI-S-209-F Shielding Cabinet Two Piece SMD 29.36x18.50mm (https://assets.lairdtech.com/home/brandworld/files/Board%20Level%20Shields%20Catalog%20Download.pdf) +Shielding Cabinet +0 +20 +1 +RF_Shielding +Laird_Technologies_BMI-S-210-F_44.00x30.50mm +Laird Technologies BMI-S-210-F Shielding Cabinet Two Piece SMD 44.00x30.50mm (https://assets.lairdtech.com/home/brandworld/files/Board%20Level%20Shields%20Catalog%20Download.pdf) +Shielding Cabinet +0 +32 +1 +RF_Shielding +Laird_Technologies_BMI-S-230-F_50.8x38.1mm +Laird Technologies BMI-S-230-F Shielding Cabinet Two Piece SMD 50.8x38.1mm +Shielding Cabinet +0 +36 +1 +RF_Shielding +Wuerth_36103205_20x20mm +WE-SHC Shielding Cabinet SMD 20x20mm +Shielding Cabinet +0 +20 +1 +RF_Shielding +Wuerth_36103255_25x25mm +WE-SHC Shielding Cabinet SMD 25x25mm +Shielding Cabinet +0 +24 +1 +RF_Shielding +Wuerth_36103305_30x30mm +WE-SHC Shielding Cabinet SMD 30x30mm +Shielding Cabinet +0 +28 +1 +RF_Shielding +Wuerth_36103505_50x50mm +WE-SHC Shielding Cabinet SMD 50x50mm +Shielding Cabinet +0 +44 +1 +RF_Shielding +Wuerth_36103605_60x60mm +WE-SHC Shielding Cabinet SMD 60x60mm +Shielding Cabinet +0 +52 +1 +RF_Shielding +Wuerth_36503205_20x20mm +WE-SHC Shielding Cabinet THT 21x21mm +Shielding Cabinet +0 +16 +1 +RF_Shielding +Wuerth_36503255_25x25mm +WE-SHC Shielding Cabinet THT 26x26mm +Shielding Cabinet +0 +20 +1 +RF_Shielding +Wuerth_36503305_30x30mm +WE-SHC Shielding Cabinet THT 31x31mm +Shielding Cabinet +0 +24 +1 +RF_Shielding +Wuerth_36503505_50x50mm +WE-SHC Shielding Cabinet THT 51x51mm +Shielding Cabinet +0 +40 +1 +RF_Shielding +Wuerth_36503605_60x60mm +WE-SHC Shielding Cabinet THT 61x61mm +Shielding Cabinet +0 +48 +1 +RF_WiFi +USR-C322 +https://www.usriot.com/download/WIFI/USR-C322-Hardware-Manual_V1.2.01.pdf +WiFi IEEE802.11 b/g/n +0 +44 +44 +Relay_SMD +Relay_DPDT_AXICOM_IMSeries_JLeg +http://www.te.com/commerce/DocumentDelivery/DDEController?Action=showdoc&DocId=Specification+Or+Standard%7F108-98001%7FW5%7Fpdf%7FEnglish%7FENG_SS_108-98001_W5.pdf +AXICOM IM-Series Relay J JLeg +0 +8 +8 +Relay_SMD +Relay_DPDT_FRT5_SMD +IM Signal Relay DPDT FRT5 narrow footprint, SMD version of package +Relay DPDT IM-relay FRT5 +0 +10 +10 +Relay_SMD +Relay_DPDT_Kemet_EE2_NU +Kemet signal relay, DPDT, double coil latching, https://content.kemet.com/datasheets/KEM_R7002_EC2_EE2.pdf +Kemet EC2 signal relay DPDT double coil latching surface mount SMD +0 +8 +8 +Relay_SMD +Relay_DPDT_Kemet_EE2_NUH +Kemet signal relay, DPDT, double coil latching, https://content.kemet.com/datasheets/KEM_R7002_EC2_EE2.pdf +Kemet EC2 signal relay DPDT double coil latching surface mount SMD +0 +8 +8 +Relay_SMD +Relay_DPDT_Kemet_EE2_NUH_DoubleCoil +Kemet signal relay, DPDT, double coil latching, https://content.kemet.com/datasheets/KEM_R7002_EC2_EE2.pdf +Kemet EC2 signal relay DPDT double dual coil latching surface mount SMD +0 +10 +10 +Relay_SMD +Relay_DPDT_Kemet_EE2_NUX_DoubleCoil +Kemet signal relay, DPDT, double coil latching, https://content.kemet.com/datasheets/KEM_R7002_EC2_EE2.pdf +Kemet EC2 signal relay DPDT double dual coil latching surface mount SMD +0 +10 +10 +Relay_SMD +Relay_DPDT_Kemet_EE2_NUX_NKX +Kemet signal relay, DPDT, double coil latching, https://content.kemet.com/datasheets/KEM_R7002_EC2_EE2.pdf +Kemet EC2 signal relay DPDT double coil latching surface mount SMD +0 +8 +8 +Relay_SMD +Relay_DPDT_Kemet_EE2_NU_DoubleCoil +Kemet signal relay, DPDT, double coil latching, https://content.kemet.com/datasheets/KEM_R7002_EC2_EE2.pdf +Kemet EC2 signal relay DPDT double dual coil latching surface mount SMD +0 +10 +10 +Relay_SMD +Relay_DPDT_Omron_G6H-2F +package for Omron G6H-2F relais, see http://cdn-reichelt.de/documents/datenblatt/C300/G6H%23OMR.pdf +Omron G6H-2F relais +0 +10 +10 +Relay_SMD +Relay_DPDT_Omron_G6K-2F +Omron G6K-2F relay package http://omronfs.omron.com/en_US/ecb/products/pdf/en-g6k.pdf +Omron G6K-2F relay +0 +8 +8 +Relay_SMD +Relay_DPDT_Omron_G6K-2F-Y +Omron G6K-2F-Y relay package http://omronfs.omron.com/en_US/ecb/products/pdf/en-g6k.pdf +Omron G6K-2F-Y relay +0 +8 +8 +Relay_SMD +Relay_DPDT_Omron_G6K-2G +Omron G6K-2G relay package http://omronfs.omron.com/en_US/ecb/products/pdf/en-g6k.pdf +Omron G6K-2G relay +0 +8 +8 +Relay_SMD +Relay_DPDT_Omron_G6K-2G-Y +Omron G6K-2G-Y relay package http://omronfs.omron.com/en_US/ecb/products/pdf/en-g6k.pdf +Omron G6K-2G-Y relay +0 +8 +8 +Relay_SMD +Relay_DPDT_Omron_G6S-2F +Relay Omron G6S-2F, see http://omronfs.omron.com/en_US/ecb/products/pdf/en-g6s.pdf +Relay Omron G6S-2F +0 +8 +8 +Relay_SMD +Relay_DPDT_Omron_G6S-2G +Relay Omron G6S-2G, see http://omronfs.omron.com/en_US/ecb/products/pdf/en-g6s.pdf +Relay Omron G6S-2G +0 +8 +8 +Relay_SMD +Relay_DPDT_Omron_G6SK-2F +Relay Omron G6SK-2F, see http://omronfs.omron.com/en_US/ecb/products/pdf/en-g6s.pdf +Relay Omron G6SK-2F +0 +10 +10 +Relay_SMD +Relay_DPDT_Omron_G6SK-2G +Relay Omron G6SK-2G, see http://omronfs.omron.com/en_US/ecb/products/pdf/en-g6s.pdf +Relay Omron G6SK-2G +0 +10 +10 +Relay_SMD +Relay_Fujitsu_FTR-B3S +https://www.fujitsu.com/downloads/MICRO/fcai/relays/ftr-b3.pdf +Fujitsh FTR B3S B3SA Relay J JLeg +0 +8 +8 +Relay_SMD +Relay_SPDT_AXICOM_HF3Series_50ohms_Pitch1.27mm +hiqsdr.com/images/3/3e/Axicom-HF3.pdf +AXICOM HF3-Series Relay Pitch 1.27mm 50ohms +0 +16 +16 +Relay_SMD +Relay_SPDT_AXICOM_HF3Series_75ohms_Pitch1.27mm +hiqsdr.com/images/3/3e/Axicom-HF3.pdf +AXICOM HF3-Series Relay Pitch 1.27mm 75ohm +0 +16 +16 +Relay_THT +Relay_1-Form-A_Schrack-RYII_RM5mm +Relay, 1-Form-A, Schrack-RYII, RM5mm, SPST-NO +Relay 1-Form-A Schrack-RYII RM5mm SPST-NO +0 +4 +4 +Relay_THT +Relay_1-Form-B_Schrack-RYII_RM5mm +Relay, 1-Form-B, Schrack-RYII, RM5mm, SPST-NC +Relay 1-Form-B Schrack-RYII RM5mm SPST-NC +0 +4 +4 +Relay_THT +Relay_1-Form-C_Schrack-RYII_RM3.2mm +Relay, 1-Form-C, Schrack-RYII, RM3.2mm, SPDT +Relay 1-Form-C Schrack-RYII RM3.2mm SPDT +0 +5 +5 +Relay_THT +Relay_1P1T_NO_10x24x18.8mm_Panasonic_ADW11xxxxW_THT +Panasonic Relay SPST 10mm 24mm, https://www.panasonic-electric-works.com/pew/es/downloads/ds_dw_hl_en.pdf +Panasonic Relay SPST +0 +4 +4 +Relay_THT +Relay_DPDT_AXICOM_IMSeries_Pitch3.2mm +AXICOM IM-Series Relays, DPDR, Pitch 3.2mm, http://www.te.com/commerce/DocumentDelivery/DDEController?Action=showdoc&DocId=Specification+Or+Standard%7F108-98001%7FV%7Fpdf%7FEnglish%7FENG_SS_108-98001_V_IM_0614_v1.pdf%7F4-1462039-1 +AXICOM IM-Series Relay DPDR Pitch 3.2mm +0 +8 +8 +Relay_THT +Relay_DPDT_AXICOM_IMSeries_Pitch5.08mm +AXICOM IM-Series Relays, DPDR, Pitch 5.08 +AXICOM IM-Series Relay DPDR Pitch 5.08 +0 +8 +8 +Relay_THT +Relay_DPDT_FRT5 +IM Signal Relay DPDT FRT5 narrow footprint +Relay DPDT IM-relay FRT5 +0 +10 +10 +Relay_THT +Relay_DPDT_Finder_30.22 +Finder 32.21-x000 Relay, DPDT, https://gfinder.findernet.com/public/attachments/30/EN/S30EN.pdf +AXICOM IM-Series Relay SPDT +0 +8 +8 +Relay_THT +Relay_DPDT_Finder_40.52 +Relay DPDT Finder 40.52, Pitch 5mm/7.5mm, https://www.finder-relais.net/de/finder-relais-serie-40.pdf +Relay DPDT Finder 40.52 Pitch 5mm +0 +8 +8 +Relay_THT +Relay_DPDT_Fujitsu_FTR-F1C +https://www.fujitsu.com/downloads/MICRO/fcai/relays/ftr-f1.pdf +relay dpdt fujitsu tht +0 +8 +8 +Relay_THT +Relay_DPDT_Kemet_EC2 +Kemet signal relay, DPDT, non-latching, single coil latching, https://content.kemet.com/datasheets/KEM_R7002_EC2_EE2.pdf +Kemet EC2 signal relay DPDT non single coil latching through hole THT +0 +8 +8 +Relay_THT +Relay_DPDT_Kemet_EC2_DoubleCoil +Kemet signal relay, DPDT, double coil latching, https://content.kemet.com/datasheets/KEM_R7002_EC2_EE2.pdf +Kemet EC2 signal relay DPDT double dual coil latching through hole THT +0 +10 +10 +Relay_THT +Relay_DPDT_Omron_G2RL +Omron Relay DPDT, https://omronfs.omron.com/en_US/ecb/products/pdf/en-g2rl.pdf +Omron Relay DPDT +0 +8 +8 +Relay_THT +Relay_DPDT_Omron_G5V-2 +http://omronfs.omron.com/en_US/ecb/products/pdf/en-g5v2.pdf +Omron G5V-2 Relay DPDT +0 +8 +8 +Relay_THT +Relay_DPDT_Omron_G6H-2 +Omron relay G6H-2, see http://cdn-reichelt.de/documents/datenblatt/C300/G6H%23OMR.pdf +Omron relay G6H-2 +0 +10 +10 +Relay_THT +Relay_DPDT_Omron_G6K-2P +Omron G6K-2P relay package http://omronfs.omron.com/en_US/ecb/products/pdf/en-g6k.pdf +Omron G6K-2P relay +0 +8 +8 +Relay_THT +Relay_DPDT_Omron_G6K-2P-Y +Omron G6K-2P-Y relay package http://omronfs.omron.com/en_US/ecb/products/pdf/en-g6k.pdf +Omron G6K-2P-Y relay +0 +8 +8 +Relay_THT +Relay_DPDT_Omron_G6S-2 +Relay Omron G6S-2, see http://omronfs.omron.com/en_US/ecb/products/pdf/en-g6s.pdf +Relay Omron G6S-2 +0 +8 +8 +Relay_THT +Relay_DPDT_Omron_G6SK-2 +Relay Omron G6SK-2, see http://omronfs.omron.com/en_US/ecb/products/pdf/en-g6s.pdf +Relay Omron G6SK-2 +0 +10 +10 +Relay_THT +Relay_DPDT_Panasonic_JW2 +Panasonic Relay DPDT, http://www3.panasonic.biz/ac/e_download/control/relay/power/catalog/mech_eng_jw.pdf?via=ok +Panasonic Relay DPDT +0 +8 +8 +Relay_THT +Relay_DPDT_Schrack-RT2-FormC-Dual-Coil_RM5mm +Relay DPDT Schrack-RT2 RM5mm 16A 250V AC Form C http://www.te.com/commerce/DocumentDelivery/DDEController?Action=showdoc&DocId=Data+Sheet%7FRT2_bistable%7F1116%7Fpdf%7FEnglish%7FENG_DS_RT2_bistable_1116.pdf%7F1-1415537-8 +Relay DPDT Schrack-RT2 RM5mm 16A 250V AC Relay +0 +9 +9 +Relay_THT +Relay_DPDT_Schrack-RT2-FormC_RM5mm +Relay DPDT Schrack-RT2 RM5mm 16A 250V AC Form C http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=RT2_reflow&DocType=DS&DocLang=EN +Relay DPDT Schrack-RT2 RM5mm 16A 250V AC Relay +0 +8 +8 +Relay_THT +Relay_DPST_Fujitsu_FTR-F1A +https://www.fujitsu.com/downloads/MICRO/fcai/relays/ftr-f1.pdf +relay dpst fujitsu tht +0 +6 +6 +Relay_THT +Relay_DPST_Schrack-RT2-FormA_RM5mm +Relay DPST Schrack-RT2 RM5mm 16A 250V AC Form A http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=RT2_reflow&DocType=DS&DocLang=EN +Relay DPST Schrack-RT2 RM5mm 16A 250V AC Relay +0 +6 +6 +Relay_THT +Relay_SPDT_Finder_32.21-x000 +Finder 32.21-x000 Relay, SPDT, https://gfinder.findernet.com/assets/Series/355/S32EN.pdf +AXICOM IM-Series Relay SPDT +0 +5 +5 +Relay_THT +Relay_SPDT_Finder_34.51_Horizontal +Relay SPDT, Finder Type34.51, horizontal form, see https://gfinder.findernet.com/public/attachments/34/EN/S34USAEN.pdf +Relay SPDT Finder +0 +5 +5 +Relay_THT +Relay_SPDT_Finder_34.51_Vertical +Relay SPDT, Finder Type34.51, vertical/standing form, see https://gfinder.findernet.com/public/attachments/34/EN/S34USAEN.pdf +Relay SPDT Finder +0 +5 +5 +Relay_THT +Relay_SPDT_Finder_36.11 +FINDER 36.11, SPDT relay, 10A, https://gfinder.findernet.com/public/attachments/36/EN/S36EN.pdf +spdt relay +0 +5 +5 +Relay_THT +Relay_SPDT_Finder_40.11 +Relay SPDT Finder 40.11, https://www.finder-relais.net/de/finder-relais-serie-40.pdf +Relay SPDT Finder 40.11 +0 +5 +5 +Relay_THT +Relay_SPDT_Finder_40.31 +Relay DPDT Finder 40.31, Pitch 3.5mm/7.5mm, https://www.finder-relais.net/de/finder-relais-serie-40.pdf +Relay DPDT Finder 40.31 Pitch 3.5mm +0 +5 +5 +Relay_THT +Relay_SPDT_Finder_40.41 +Relay DPDT Finder 40.41, Pitch 3.5mm/7.5mm, https://www.finder-relais.net/de/finder-relais-serie-40.pdf +Relay DPDT Finder 40.41 Pitch 3.5mm +0 +5 +5 +Relay_THT +Relay_SPDT_Finder_40.51 +Relay DPDT Finder 40.51, Pitch 5mm/7.5mm, https://www.finder-relais.net/de/finder-relais-serie-40.pdf +Relay DPDT Finder 40.51 Pitch 5mm +0 +5 +5 +Relay_THT +Relay_SPDT_HJR-4102 +IM Signal Relay SPDT HJR-4102 +Relay SPDT IM-relay HJR-4102 +0 +6 +6 +Relay_THT +Relay_SPDT_HsinDa_Y14 +http://www.hsinda.com.cn/en/ProductShow.asp?ID=208 +Relay Y14 +0 +6 +6 +Relay_THT +Relay_SPDT_Omron-G5LE-1 +Omron Relay SPDT, http://www.omron.com/ecb/products/pdf/en-g5le.pdf +Omron Relay SPDT +0 +5 +5 +Relay_THT +Relay_SPDT_Omron-G5Q-1 +Relay SPDT Omron Serie G5Q, http://omronfs.omron.com/en_US/ecb/products/pdf/en-g5q.pdf +Relay SPDT Omron Serie G5Q +0 +5 +5 +Relay_THT +Relay_SPDT_Omron_G5V-1 +Relay Omron G5V-1, see http://omronfs.omron.com/en_US/ecb/products/pdf/en-g5v_1.pdf +Relay Omron G5V-1 +0 +6 +6 +Relay_THT +Relay_SPDT_Omron_G6E +Relay SPDT Omron Serie G6E +Relay SPDT Omron Serie G6E 1x um +0 +5 +5 +Relay_THT +Relay_SPDT_Omron_G6EK +Relay SPDT Omron Serie G6EK, see http://www.logosfoundation.org/instrum_gwr/pi/Omron_G6E_134P.pdf +Relay SPDT Omron Serie G6EK +0 +6 +6 +Relay_THT +Relay_SPDT_Panasonic_JW1_FormC +Panasonic Relay SPDT, http://www3.panasonic.biz/ac/e_download/control/relay/power/catalog/mech_eng_jw.pdf?via=ok +Panasonic Relay SPDT +0 +5 +5 +Relay_THT +Relay_SPDT_PotterBrumfield_T9AP5D52_12V30A +Relay SPDT Potter&Brumfield T9AP5D52 12V 30A 1xUn Connector Fast ON Only Dummy for Space NO Pads +Relay SPDT Potter&Brumfield T9AP5D52 12V 30A 1xUm Connector Fast ON Flachsteckeranschluss Only Dummy for Space NO Pads +0 +0 +0 +Relay_THT +Relay_SPDT_RAYEX-L90 +https://a3.sofastcdn.com/attachment/7jioKBjnRiiSrjrjknRiwS77gwbf3zmp/L90-SERIES.pdf +Relay RAYEX L90 SPDT +0 +6 +6 +Relay_THT +Relay_SPDT_RAYEX-L90S +https://a3.sofastcdn.com/attachment/7jioKBjnRiiSrjrjknRiwS77gwbf3zmp/L90-SERIES.pdf +Relay RAYEX L90S SPDT +0 +5 +5 +Relay_THT +Relay_SPDT_SANYOU_SRD_Series_Form_C +relay Sanyou SRD series Form C http://www.sanyourelay.ca/public/products/pdf/SRD.pdf +relay Sanyu SRD form C +0 +5 +5 +Relay_THT +Relay_SPDT_Schrack-RP-II-1-16A-FormC_RM5mm +Relay SPST Schrack-RP-II/1 RM5mm 16A 250V AC Form C http://image.schrack.com/datenblaetter/h_rp810012-b.pdf +Relay SPST Schrack-RP-II/1 RM5mm 16A 250V AC Relay +0 +8 +5 +Relay_THT +Relay_SPDT_Schrack-RP-II-1-FormC_RM3.5mm +Relay SPST Schrack-RP-II/1 RM3.5mm 8A 250V AC Form C http://image.schrack.com/datenblaetter/h_rp810012-b.pdf +Relay SPST Schrack-RP-II/1 RM3.5mm 8A 250V AC Relay +0 +5 +5 +Relay_THT +Relay_SPDT_Schrack-RP-II-1-FormC_RM5mm +Relay SPST Schrack-RP-II/1 RM5mm 8A 250V AC Form C http://image.schrack.com/datenblaetter/h_rp810012-b.pdf +Relay SPST Schrack-RP-II/1 RM5mm 8A 250V AC Relay +0 +5 +5 +Relay_THT +Relay_SPDT_Schrack-RT1-16A-FormC_RM5mm +Relay SPST Schrack-RT1 RM5mm 16A 250V AC Form C http://image.schrack.com/datenblaetter/h_rt114012--_de.pdf +Relay SPST Schrack-RT1 RM5mm 16A 250V AC Relay +0 +8 +5 +Relay_THT +Relay_SPDT_Schrack-RT1-FormC_RM3.5mm +Relay SPST Schrack-RT1 RM3.5mm 8A 250V AC Form C http://image.schrack.com/datenblaetter/h_rt114012--_de.pdf +Relay SPST Schrack-RT1 RM3.5mm 8A 250V AC Relay +0 +5 +5 +Relay_THT +Relay_SPDT_Schrack-RT1-FormC_RM5mm +Relay SPST Schrack-RT1 RM5mm 8A 250V AC Form C http://image.schrack.com/datenblaetter/h_rt114012--_de.pdf +Relay SPST Schrack-RT1 RM5mm 8A 250V AC Relay +0 +5 +5 +Relay_THT +Relay_SPDT_StandexMeder_SIL_Form1C +Standex-Meder SIL-relais, Form 1C, see https://standexelectronics.com/wp-content/uploads/datasheet_reed_relay_SIL.pdf +Standex Meder SIL reed relais +0 +5 +5 +Relay_THT +Relay_SPST_Finder_32.21-x300 +Finder 32.21-x300 Relay, SPST, https://gfinder.findernet.com/assets/Series/355/S32EN.pdf +Finder 32.21-x300 Relay SPST +0 +4 +4 +Relay_THT +Relay_SPST_Omron-G5Q-1A +Relay SPST-NO Omron Serie G5Q, http://omronfs.omron.com/en_US/ecb/products/pdf/en-g5q.pdf +Relay SPST-NO Omron Serie G5Q +0 +4 +4 +Relay_THT +Relay_SPST_Panasonic_JW1_FormA +Panasonic Relay SPST, http://www3.panasonic.biz/ac/e_download/control/relay/power/catalog/mech_eng_jw.pdf?via=ok +Panasonic Relay SPST +0 +4 +4 +Relay_THT +Relay_SPST_PotterBrumfield_T9AP1D52_12V30A +Relay SPST Potter&Brumfield T9AP1D52 12V 30A 1xEin Connector Fast ON Only Dummy for Space NO Pads +Relau SPST Potter&Brumfield T9AP1D52 12V 30A 1xEin Connector Fast ON Flachsteckeranschluss Only Dummy for Space NO Pads +0 +0 +0 +Relay_THT +Relay_SPST_RAYEX-L90A +https://a3.sofastcdn.com/attachment/7jioKBjnRiiSrjrjknRiwS77gwbf3zmp/L90-SERIES.pdf +Relay RAYEX L90A SPST NO +0 +5 +5 +Relay_THT +Relay_SPST_RAYEX-L90AS +https://a3.sofastcdn.com/attachment/7jioKBjnRiiSrjrjknRiwS77gwbf3zmp/L90-SERIES.pdf +Relay RAYEX L90AS SPST NO +0 +4 +4 +Relay_THT +Relay_SPST_RAYEX-L90B +https://a3.sofastcdn.com/attachment/7jioKBjnRiiSrjrjknRiwS77gwbf3zmp/L90-SERIES.pdf +Relay RAYEX L90B SPST NC +0 +5 +5 +Relay_THT +Relay_SPST_RAYEX-L90BS +https://a3.sofastcdn.com/attachment/7jioKBjnRiiSrjrjknRiwS77gwbf3zmp/L90-SERIES.pdf +Relay RAYEX L90BS SPST NC +0 +4 +4 +Relay_THT +Relay_SPST_SANYOU_SRD_Series_Form_A +relay Sanyou SRD series Form A http://www.sanyourelay.ca/public/products/pdf/SRD.pdf +relay Sanyu SRD form A +0 +4 +4 +Relay_THT +Relay_SPST_SANYOU_SRD_Series_Form_B +relay Sanyou SRD series Form B opener http://www.sanyourelay.ca/public/products/pdf/SRD.pdf +relay Sanyu SRD form B opener +0 +4 +4 +Relay_THT +Relay_SPST_Schrack-RP-II-1-16A-FormA_RM5mm +Relay SPST Schrack-RP-II/1 RM5mm 16A 250V AC Form A http://image.schrack.com/datenblaetter/h_rp810012-b.pdf +Relay SPST Schrack-RP-II/1 RM5mm 16A 250V AC Relay +0 +6 +4 +Relay_THT +Relay_SPST_Schrack-RP-II-1-FormA_RM3.5mm +Relay SPST Schrack-RP-II/1 RM3.5mm 8A 250V AC Form A +Relay SPST Schrack-RP-II/1 RM3.5mm 8A 250V AC Relay +0 +4 +4 +Relay_THT +Relay_SPST_Schrack-RP-II-1-FormA_RM5mm +Relay SPST Schrack-RP-II/1 RM5mm 8A 250V AC Form A http://image.schrack.com/datenblaetter/h_rp810012-b.pdf +Relay SPST Schrack-RP-II/1 RM5mm 8A 250V AC Relay +0 +4 +4 +Relay_THT +Relay_SPST_Schrack-RP3SL-1coil_RM5mm +Relay SPST Schrack-RP3SL, 1-coil-version, RM5mm 16A 250V AC Form A http://www.alliedelec.com/m/d/543c6bed18bf23a83ae5238947033ee0.pdf +Relay SPST Schrack-RP3SL RM5mm 16A 250V AC Relay +0 +6 +4 +Relay_THT +Relay_SPST_Schrack-RP3SL_RM5mm +Relay SPST Schrack-RP3SL RM5mm 16A 250V AC Form A http://www.alliedelec.com/m/d/543c6bed18bf23a83ae5238947033ee0.pdf +Relay SPST Schrack-RP3SL RM5mm 16A 250V AC Relay +0 +7 +5 +Relay_THT +Relay_SPST_Schrack-RT1-16A-FormA_RM5mm +Relay SPST Schrack-RT2 RM5mm 16A 250V AC Form C http://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=RT2_reflow&DocType=DS&DocLang=EN +Relay SPST Schrack-RT2 RM5mm 16A 250V AC Relay +0 +6 +4 +Relay_THT +Relay_SPST_Schrack-RT1-FormA_RM3.5mm +Relay SPST Schrack-RT1 RM3.5mm 8A 250V AC Form A +Relay SPST Schrack-RT1 RM3.5mm 8A 250V AC Relay +0 +4 +4 +Relay_THT +Relay_SPST_Schrack-RT1-FormA_RM5mm +Relay SPST Schrack-RT1 RM5mm 8A 250V AC Form C http://image.schrack.com/datenblaetter/h_rt114012--_de.pdf +Relay SPST Schrack-RT1 RM5mm 8A 250V AC Relay +0 +4 +4 +Relay_THT +Relay_SPST_StandexMeder_MS_Form1AB +Standex-Meder MS SIL-relais, Form 1A/1B, see https://standexelectronics.com/de/produkte/ms-reed-relais/ +Standex Meder MS SIL reed relais +0 +4 +4 +Relay_THT +Relay_SPST_StandexMeder_SIL_Form1A +Standex-Meder SIL-relais, Form 1A, see https://standexelectronics.com/wp-content/uploads/datasheet_reed_relay_SIL.pdf +Standex Meder SIL reed relais +0 +4 +4 +Relay_THT +Relay_SPST_StandexMeder_SIL_Form1B +Standex-Meder SIL-relais, Form 1B, see https://standexelectronics.com/wp-content/uploads/datasheet_reed_relay_SIL.pdf +Standex Meder SIL reed relais +0 +4 +4 +Relay_THT +Relay_SPST_TE_PCH-1xxx2M +Miniature PCB Relay, PCH Series, 1 Form A (NO), SPST http://www.te.com/commerce/DocumentDelivery/DDEController?Action=showdoc&DocId=Data+Sheet%7FPCH_series_relay_data_sheet_E%7F1215%7Fpdf%7FEnglish%7FENG_DS_PCH_series_relay_data_sheet_E_1215.pdf +Relay SPST NO +0 +4 +4 +Relay_THT +Relay_SPST_TE_PCN-1xxD3MHZ +https://www.te.com/commerce/DocumentDelivery/DDEController?Action=showdoc&DocId=Customer+Drawing%7F1461491%7FG2%7Fpdf%7FEnglish%7FENG_CD_1461491_G2.pdf%7F3-1461491-0 +SPST relay slim +0 +4 +4 +Relay_THT +Relay_Socket_DPDT_Finder_96.12 +https://gfinder.findernet.com/public/attachments/56/DE/S56DE.pdf +Relay socket DPDT Finder 96.12 56.32 +0 +8 +8 +Relay_THT +Relay_StandexMeder_DIP_HighProfile +package for Standex Meder DIP reed relay series, see https://standexelectronics.com/wp-content/uploads/datasheet_reed_relay_DIP.pdf +DIL DIP PDIP 2.54mm 7.62mm 300mil reed relay +0 +8 +8 +Relay_THT +Relay_StandexMeder_DIP_LowProfile +package for Standex Meder DIP reed relay series, see https://standexelectronics.com/wp-content/uploads/datasheet_reed_relay_DIP.pdf +DIL DIP PDIP 2.54mm 7.62mm 300mil reed relay +0 +8 +8 +Relay_THT +Relay_StandexMeder_UMS +Standex-Meder SIL-relais, UMS, see http://cdn-reichelt.de/documents/datenblatt/C300/UMS05_1A80_75L_DB.pdf +Standex Meder SIL reed relais +0 +4 +4 +Resistor_SMD +R_0201_0603Metric +Resistor SMD 0201 (0603 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: https://www.vishay.com/docs/20052/crcw0201e3.pdf), generated with kicad-footprint-generator +resistor +0 +4 +2 +Resistor_SMD +R_0201_0603Metric_Pad0.64x0.40mm_HandSolder +Resistor SMD 0201 (0603 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: https://www.vishay.com/docs/20052/crcw0201e3.pdf), generated with kicad-footprint-generator +resistor handsolder +0 +4 +2 +Resistor_SMD +R_0402_1005Metric +Resistor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator +resistor +0 +2 +2 +Resistor_SMD +R_0402_1005Metric_Pad0.72x0.64mm_HandSolder +Resistor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator +resistor handsolder +0 +2 +2 +Resistor_SMD +R_0603_1608Metric +Resistor SMD 0603 (1608 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator +resistor +0 +2 +2 +Resistor_SMD +R_0603_1608Metric_Pad0.98x0.95mm_HandSolder +Resistor SMD 0603 (1608 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator +resistor handsolder +0 +2 +2 +Resistor_SMD +R_0612_1632Metric +Resistor SMD 0612 (1632 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: https://www.vishay.com/docs/20019/rcwe.pdf), generated with kicad-footprint-generator +resistor +0 +2 +2 +Resistor_SMD +R_0612_1632Metric_Pad1.18x3.40mm_HandSolder +Resistor SMD 0612 (1632 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: https://www.vishay.com/docs/20019/rcwe.pdf), generated with kicad-footprint-generator +resistor handsolder +0 +2 +2 +Resistor_SMD +R_0805_2012Metric +Resistor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator +resistor +0 +2 +2 +Resistor_SMD +R_0805_2012Metric_Pad1.20x1.40mm_HandSolder +Resistor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator +resistor handsolder +0 +2 +2 +Resistor_SMD +R_0815_2038Metric +Resistor SMD 0815 (2038 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: https://www.susumu.co.jp/common/pdf/n_catalog_partition07_en.pdf), generated with kicad-footprint-generator +resistor +0 +2 +2 +Resistor_SMD +R_0815_2038Metric_Pad1.20x4.05mm_HandSolder +Resistor SMD 0815 (2038 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: https://www.susumu.co.jp/common/pdf/n_catalog_partition07_en.pdf), generated with kicad-footprint-generator +resistor handsolder +0 +2 +2 +Resistor_SMD +R_01005_0402Metric +Resistor SMD 01005 (0402 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.vishay.com/docs/20056/crcw01005e3.pdf), generated with kicad-footprint-generator +resistor +0 +4 +2 +Resistor_SMD +R_01005_0402Metric_Pad0.57x0.30mm_HandSolder +Resistor SMD 01005 (0402 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: http://www.vishay.com/docs/20056/crcw01005e3.pdf), generated with kicad-footprint-generator +resistor handsolder +0 +4 +2 +Resistor_SMD +R_1020_2550Metric +Resistor SMD 1020 (2550 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: https://www.vishay.com/docs/20019/rcwe.pdf), generated with kicad-footprint-generator +resistor +0 +2 +2 +Resistor_SMD +R_1020_2550Metric_Pad1.33x5.20mm_HandSolder +Resistor SMD 1020 (2550 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: https://www.vishay.com/docs/20019/rcwe.pdf), generated with kicad-footprint-generator +resistor handsolder +0 +2 +2 +Resistor_SMD +R_1206_3216Metric +Resistor SMD 1206 (3216 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator +resistor +0 +2 +2 +Resistor_SMD +R_1206_3216Metric_Pad1.30x1.75mm_HandSolder +Resistor SMD 1206 (3216 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator +resistor handsolder +0 +2 +2 +Resistor_SMD +R_1210_3225Metric +Resistor SMD 1210 (3225 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator +resistor +0 +2 +2 +Resistor_SMD +R_1210_3225Metric_Pad1.30x2.65mm_HandSolder +Resistor SMD 1210 (3225 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator +resistor handsolder +0 +2 +2 +Resistor_SMD +R_1218_3246Metric +Resistor SMD 1218 (3246 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: https://www.vishay.com/docs/20035/dcrcwe3.pdf), generated with kicad-footprint-generator +resistor +0 +2 +2 +Resistor_SMD +R_1218_3246Metric_Pad1.22x4.75mm_HandSolder +Resistor SMD 1218 (3246 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: https://www.vishay.com/docs/20035/dcrcwe3.pdf), generated with kicad-footprint-generator +resistor handsolder +0 +2 +2 +Resistor_SMD +R_1812_4532Metric +Resistor SMD 1812 (4532 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: https://www.nikhef.nl/pub/departments/mt/projects/detectorR_D/dtddice/ERJ2G.pdf), generated with kicad-footprint-generator +resistor +0 +2 +2 +Resistor_SMD +R_1812_4532Metric_Pad1.30x3.40mm_HandSolder +Resistor SMD 1812 (4532 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: https://www.nikhef.nl/pub/departments/mt/projects/detectorR_D/dtddice/ERJ2G.pdf), generated with kicad-footprint-generator +resistor handsolder +0 +2 +2 +Resistor_SMD +R_2010_5025Metric +Resistor SMD 2010 (5025 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator +resistor +0 +2 +2 +Resistor_SMD +R_2010_5025Metric_Pad1.40x2.65mm_HandSolder +Resistor SMD 2010 (5025 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator +resistor handsolder +0 +2 +2 +Resistor_SMD +R_2512_6332Metric +Resistor SMD 2512 (6332 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator +resistor +0 +2 +2 +Resistor_SMD +R_2512_6332Metric_Pad1.40x3.35mm_HandSolder +Resistor SMD 2512 (6332 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator +resistor handsolder +0 +2 +2 +Resistor_SMD +R_2816_7142Metric +Resistor SMD 2816 (7142 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size from: https://www.vishay.com/docs/30100/wsl.pdf), generated with kicad-footprint-generator +resistor +0 +2 +2 +Resistor_SMD +R_2816_7142Metric_Pad3.20x4.45mm_HandSolder +Resistor SMD 2816 (7142 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size from: https://www.vishay.com/docs/30100/wsl.pdf), generated with kicad-footprint-generator +resistor handsolder +0 +2 +2 +Resistor_SMD +R_4020_10251Metric +Resistor SMD 4020 (10251 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://datasheet.octopart.com/HVC0603T5004FET-Ohmite-datasheet-26699797.pdf), generated with kicad-footprint-generator +resistor +0 +2 +2 +Resistor_SMD +R_4020_10251Metric_Pad1.65x5.30mm_HandSolder +Resistor SMD 4020 (10251 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: http://datasheet.octopart.com/HVC0603T5004FET-Ohmite-datasheet-26699797.pdf), generated with kicad-footprint-generator +resistor handsolder +0 +2 +2 +Resistor_SMD +R_Array_Concave_2x0603 +Thick Film Chip Resistor Array, Wave soldering, Vishay CRA06P (see cra06p.pdf) +resistor array +0 +4 +4 +Resistor_SMD +R_Array_Concave_4x0402 +Thick Film Chip Resistor Array, Wave soldering, Vishay CRA04P (see cra04p.pdf) +resistor array +0 +8 +8 +Resistor_SMD +R_Array_Concave_4x0603 +Thick Film Chip Resistor Array, Wave soldering, Vishay CRA06P (see cra06p.pdf) +resistor array +0 +8 +8 +Resistor_SMD +R_Array_Convex_2x0402 +Chip Resistor Network, ROHM MNR02 (see mnr_g.pdf) +resistor array +0 +4 +4 +Resistor_SMD +R_Array_Convex_2x0603 +Chip Resistor Network, ROHM MNR12 (see mnr_g.pdf) +resistor array +0 +4 +4 +Resistor_SMD +R_Array_Convex_2x0606 +Precision Thin Film Chip Resistor Array, VISHAY (see http://www.vishay.com/docs/28770/acasat.pdf) +resistor array +0 +4 +4 +Resistor_SMD +R_Array_Convex_2x1206 +Chip Resistor Network, ROHM MNR32 (see mnr_g.pdf) +resistor array +0 +4 +4 +Resistor_SMD +R_Array_Convex_4x0402 +Chip Resistor Network, ROHM MNR04 (see mnr_g.pdf) +resistor array +0 +8 +8 +Resistor_SMD +R_Array_Convex_4x0603 +Chip Resistor Network, ROHM MNR14 (see mnr_g.pdf) +resistor array +0 +8 +8 +Resistor_SMD +R_Array_Convex_4x0612 +Precision Thin Film Chip Resistor Array, VISHAY (see http://www.vishay.com/docs/28770/acasat.pdf) +resistor array +0 +8 +8 +Resistor_SMD +R_Array_Convex_4x1206 +Chip Resistor Network, ROHM MNR34 (see mnr_g.pdf) +resistor array +0 +8 +8 +Resistor_SMD +R_Array_Convex_5x0603 +Chip Resistor Network, ROHM MNR15 (see mnr_g.pdf) +resistor array +0 +10 +10 +Resistor_SMD +R_Array_Convex_5x1206 +Chip Resistor Network, ROHM MNR35 (see mnr_g.pdf) +resistor array +0 +10 +10 +Resistor_SMD +R_Array_Convex_8x0602 +Chip Resistor Network, ROHM MNR18 (see mnr_g.pdf) +resistor array +0 +16 +16 +Resistor_SMD +R_Cat16-2 +SMT resistor net, Bourns CAT16 series, 2 way +SMT resistor net Bourns CAT16 series 2 way +0 +4 +4 +Resistor_SMD +R_Cat16-4 +SMT resistor net, Bourns CAT16 series, 4 way +SMT resistor net Bourns CAT16 series 4 way +0 +8 +8 +Resistor_SMD +R_Cat16-8 +SMT resistor net, Bourns CAT16 series, 8 way +SMT resistor net Bourns CAT16 series 8 way +0 +16 +16 +Resistor_SMD +R_MELF_MMB-0207 +Resistor, MELF, MMB-0207, http://www.vishay.com/docs/28713/melfprof.pdf +MELF Resistor +0 +2 +2 +Resistor_SMD +R_MicroMELF_MMU-0102 +Resistor, MicroMELF, MMU-0102, http://www.vishay.com/docs/28713/melfprof.pdf +MicroMELF Resistor +0 +2 +2 +Resistor_SMD +R_MiniMELF_MMA-0204 +Resistor, MiniMELF, MMA-0204, http://www.vishay.com/docs/28713/melfprof.pdf +MiniMELF Resistor +0 +2 +2 +Resistor_SMD +R_Shunt_Ohmite_LVK12 +4 contact shunt resistor +shunt resistor 4 contacts +0 +4 +4 +Resistor_SMD +R_Shunt_Ohmite_LVK20 +4 contacts shunt resistor, https://www.ohmite.com/assets/docs/res_lvk.pdf +4 contacts resistor smd +0 +4 +4 +Resistor_SMD +R_Shunt_Ohmite_LVK24 +4 contacts shunt resistor,https://www.ohmite.com/assets/docs/res_lvk.pdf +4 contacts resistor smd +0 +4 +4 +Resistor_SMD +R_Shunt_Ohmite_LVK25 +4 contacts shunt resistor,https://www.ohmite.com/assets/docs/res_lvk.pdf +4 contacts resistor smd +0 +4 +4 +Resistor_SMD +R_Shunt_Vishay_WSK2512_6332Metric_T1.19mm +Shunt Resistor SMD 2512 (6332 Metric), 2.6mm thick, Vishay WKS2512, Terminal length (T) 1.19mm, 5 to 200 milli Ohm (http://http://www.vishay.com/docs/30108/wsk.pdf) +resistor shunt WSK2512 +0 +4 +4 +Resistor_SMD +R_Shunt_Vishay_WSK2512_6332Metric_T2.21mm +Shunt Resistor SMD 2512 (6332 Metric), 2.6mm thick, Vishay WKS2512, Terminal length (T) 2.21mm, 1 to 4.9 milli Ohm (http://http://www.vishay.com/docs/30108/wsk.pdf) +resistor shunt WSK2512 +0 +4 +4 +Resistor_SMD +R_Shunt_Vishay_WSK2512_6332Metric_T2.66mm +Shunt Resistor SMD 2512 (6332 Metric), 2.6mm thick, Vishay WKS2512, Terminal length (T) 2.66mm, 0.5 to 0.99 milli Ohm (http://http://www.vishay.com/docs/30108/wsk.pdf) +resistor shunt WSK2512 +0 +4 +4 +Resistor_SMD +R_Shunt_Vishay_WSKW0612 +https://www.vishay.com/docs/30332/wskw0612.pdf +4-Terminal SMD Shunt +0 +4 +4 +Resistor_SMD +R_Shunt_Vishay_WSR2_WSR3 +Power Metal Strip Resistors 0.005 to 0.2, https://www.vishay.com/docs/30101/wsr.pdf +SMD Shunt Resistor +0 +2 +2 +Resistor_SMD +R_Shunt_Vishay_WSR2_WSR3_KelvinConnection +Power Metal Strip Resistors 0.005 to 0.2, https://www.vishay.com/docs/30101/wsr.pdf +SMD Shunt Resistor +0 +4 +2 +Resistor_THT +R_Array_SIP4 +4-pin Resistor SIP pack +R +0 +4 +4 +Resistor_THT +R_Array_SIP5 +5-pin Resistor SIP pack +R +0 +5 +5 +Resistor_THT +R_Array_SIP6 +6-pin Resistor SIP pack +R +0 +6 +6 +Resistor_THT +R_Array_SIP7 +7-pin Resistor SIP pack +R +0 +7 +7 +Resistor_THT +R_Array_SIP8 +8-pin Resistor SIP pack +R +0 +8 +8 +Resistor_THT +R_Array_SIP9 +9-pin Resistor SIP pack +R +0 +9 +9 +Resistor_THT +R_Array_SIP10 +10-pin Resistor SIP pack +R +0 +10 +10 +Resistor_THT +R_Array_SIP11 +11-pin Resistor SIP pack +R +0 +11 +11 +Resistor_THT +R_Array_SIP12 +12-pin Resistor SIP pack +R +0 +12 +12 +Resistor_THT +R_Array_SIP13 +13-pin Resistor SIP pack +R +0 +13 +13 +Resistor_THT +R_Array_SIP14 +14-pin Resistor SIP pack +R +0 +14 +14 +Resistor_THT +R_Axial_DIN0204_L3.6mm_D1.6mm_P1.90mm_Vertical +Resistor, Axial_DIN0204 series, Axial, Vertical, pin pitch=1.9mm, 0.167W, length*diameter=3.6*1.6mm^2, http://cdn-reichelt.de/documents/datenblatt/B400/1_4W%23YAG.pdf +Resistor Axial_DIN0204 series Axial Vertical pin pitch 1.9mm 0.167W length 3.6mm diameter 1.6mm +0 +2 +2 +Resistor_THT +R_Axial_DIN0204_L3.6mm_D1.6mm_P2.54mm_Vertical +Resistor, Axial_DIN0204 series, Axial, Vertical, pin pitch=2.54mm, 0.167W, length*diameter=3.6*1.6mm^2, http://cdn-reichelt.de/documents/datenblatt/B400/1_4W%23YAG.pdf +Resistor Axial_DIN0204 series Axial Vertical pin pitch 2.54mm 0.167W length 3.6mm diameter 1.6mm +0 +2 +2 +Resistor_THT +R_Axial_DIN0204_L3.6mm_D1.6mm_P5.08mm_Horizontal +Resistor, Axial_DIN0204 series, Axial, Horizontal, pin pitch=5.08mm, 0.167W, length*diameter=3.6*1.6mm^2, http://cdn-reichelt.de/documents/datenblatt/B400/1_4W%23YAG.pdf +Resistor Axial_DIN0204 series Axial Horizontal pin pitch 5.08mm 0.167W length 3.6mm diameter 1.6mm +0 +2 +2 +Resistor_THT +R_Axial_DIN0204_L3.6mm_D1.6mm_P5.08mm_Vertical +Resistor, Axial_DIN0204 series, Axial, Vertical, pin pitch=5.08mm, 0.167W, length*diameter=3.6*1.6mm^2, http://cdn-reichelt.de/documents/datenblatt/B400/1_4W%23YAG.pdf +Resistor Axial_DIN0204 series Axial Vertical pin pitch 5.08mm 0.167W length 3.6mm diameter 1.6mm +0 +2 +2 +Resistor_THT +R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal +Resistor, Axial_DIN0204 series, Axial, Horizontal, pin pitch=7.62mm, 0.167W, length*diameter=3.6*1.6mm^2, http://cdn-reichelt.de/documents/datenblatt/B400/1_4W%23YAG.pdf +Resistor Axial_DIN0204 series Axial Horizontal pin pitch 7.62mm 0.167W length 3.6mm diameter 1.6mm +0 +2 +2 +Resistor_THT +R_Axial_DIN0207_L6.3mm_D2.5mm_P2.54mm_Vertical +Resistor, Axial_DIN0207 series, Axial, Vertical, pin pitch=2.54mm, 0.25W = 1/4W, length*diameter=6.3*2.5mm^2, http://cdn-reichelt.de/documents/datenblatt/B400/1_4W%23YAG.pdf +Resistor Axial_DIN0207 series Axial Vertical pin pitch 2.54mm 0.25W = 1/4W length 6.3mm diameter 2.5mm +0 +2 +2 +Resistor_THT +R_Axial_DIN0207_L6.3mm_D2.5mm_P5.08mm_Vertical +Resistor, Axial_DIN0207 series, Axial, Vertical, pin pitch=5.08mm, 0.25W = 1/4W, length*diameter=6.3*2.5mm^2, http://cdn-reichelt.de/documents/datenblatt/B400/1_4W%23YAG.pdf +Resistor Axial_DIN0207 series Axial Vertical pin pitch 5.08mm 0.25W = 1/4W length 6.3mm diameter 2.5mm +0 +2 +2 +Resistor_THT +R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal +Resistor, Axial_DIN0207 series, Axial, Horizontal, pin pitch=7.62mm, 0.25W = 1/4W, length*diameter=6.3*2.5mm^2, http://cdn-reichelt.de/documents/datenblatt/B400/1_4W%23YAG.pdf +Resistor Axial_DIN0207 series Axial Horizontal pin pitch 7.62mm 0.25W = 1/4W length 6.3mm diameter 2.5mm +0 +2 +2 +Resistor_THT +R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal +Resistor, Axial_DIN0207 series, Axial, Horizontal, pin pitch=10.16mm, 0.25W = 1/4W, length*diameter=6.3*2.5mm^2, http://cdn-reichelt.de/documents/datenblatt/B400/1_4W%23YAG.pdf +Resistor Axial_DIN0207 series Axial Horizontal pin pitch 10.16mm 0.25W = 1/4W length 6.3mm diameter 2.5mm +0 +2 +2 +Resistor_THT +R_Axial_DIN0207_L6.3mm_D2.5mm_P15.24mm_Horizontal +Resistor, Axial_DIN0207 series, Axial, Horizontal, pin pitch=15.24mm, 0.25W = 1/4W, length*diameter=6.3*2.5mm^2, http://cdn-reichelt.de/documents/datenblatt/B400/1_4W%23YAG.pdf +Resistor Axial_DIN0207 series Axial Horizontal pin pitch 15.24mm 0.25W = 1/4W length 6.3mm diameter 2.5mm +0 +2 +2 +Resistor_THT +R_Axial_DIN0309_L9.0mm_D3.2mm_P2.54mm_Vertical +Resistor, Axial_DIN0309 series, Axial, Vertical, pin pitch=2.54mm, 0.5W = 1/2W, length*diameter=9*3.2mm^2, http://cdn-reichelt.de/documents/datenblatt/B400/1_4W%23YAG.pdf +Resistor Axial_DIN0309 series Axial Vertical pin pitch 2.54mm 0.5W = 1/2W length 9mm diameter 3.2mm +0 +2 +2 +Resistor_THT +R_Axial_DIN0309_L9.0mm_D3.2mm_P5.08mm_Vertical +Resistor, Axial_DIN0309 series, Axial, Vertical, pin pitch=5.08mm, 0.5W = 1/2W, length*diameter=9*3.2mm^2, http://cdn-reichelt.de/documents/datenblatt/B400/1_4W%23YAG.pdf +Resistor Axial_DIN0309 series Axial Vertical pin pitch 5.08mm 0.5W = 1/2W length 9mm diameter 3.2mm +0 +2 +2 +Resistor_THT +R_Axial_DIN0309_L9.0mm_D3.2mm_P12.70mm_Horizontal +Resistor, Axial_DIN0309 series, Axial, Horizontal, pin pitch=12.7mm, 0.5W = 1/2W, length*diameter=9*3.2mm^2, http://cdn-reichelt.de/documents/datenblatt/B400/1_4W%23YAG.pdf +Resistor Axial_DIN0309 series Axial Horizontal pin pitch 12.7mm 0.5W = 1/2W length 9mm diameter 3.2mm +0 +2 +2 +Resistor_THT +R_Axial_DIN0309_L9.0mm_D3.2mm_P15.24mm_Horizontal +Resistor, Axial_DIN0309 series, Axial, Horizontal, pin pitch=15.24mm, 0.5W = 1/2W, length*diameter=9*3.2mm^2, http://cdn-reichelt.de/documents/datenblatt/B400/1_4W%23YAG.pdf +Resistor Axial_DIN0309 series Axial Horizontal pin pitch 15.24mm 0.5W = 1/2W length 9mm diameter 3.2mm +0 +2 +2 +Resistor_THT +R_Axial_DIN0309_L9.0mm_D3.2mm_P20.32mm_Horizontal +Resistor, Axial_DIN0309 series, Axial, Horizontal, pin pitch=20.32mm, 0.5W = 1/2W, length*diameter=9*3.2mm^2, http://cdn-reichelt.de/documents/datenblatt/B400/1_4W%23YAG.pdf +Resistor Axial_DIN0309 series Axial Horizontal pin pitch 20.32mm 0.5W = 1/2W length 9mm diameter 3.2mm +0 +2 +2 +Resistor_THT +R_Axial_DIN0309_L9.0mm_D3.2mm_P25.40mm_Horizontal +Resistor, Axial_DIN0309 series, Axial, Horizontal, pin pitch=25.4mm, 0.5W = 1/2W, length*diameter=9*3.2mm^2, http://cdn-reichelt.de/documents/datenblatt/B400/1_4W%23YAG.pdf +Resistor Axial_DIN0309 series Axial Horizontal pin pitch 25.4mm 0.5W = 1/2W length 9mm diameter 3.2mm +0 +2 +2 +Resistor_THT +R_Axial_DIN0411_L9.9mm_D3.6mm_P5.08mm_Vertical +Resistor, Axial_DIN0411 series, Axial, Vertical, pin pitch=5.08mm, 1W, length*diameter=9.9*3.6mm^2 +Resistor Axial_DIN0411 series Axial Vertical pin pitch 5.08mm 1W length 9.9mm diameter 3.6mm +0 +2 +2 +Resistor_THT +R_Axial_DIN0411_L9.9mm_D3.6mm_P7.62mm_Vertical +Resistor, Axial_DIN0411 series, Axial, Vertical, pin pitch=7.62mm, 1W, length*diameter=9.9*3.6mm^2 +Resistor Axial_DIN0411 series Axial Vertical pin pitch 7.62mm 1W length 9.9mm diameter 3.6mm +0 +2 +2 +Resistor_THT +R_Axial_DIN0411_L9.9mm_D3.6mm_P12.70mm_Horizontal +Resistor, Axial_DIN0411 series, Axial, Horizontal, pin pitch=12.7mm, 1W, length*diameter=9.9*3.6mm^2 +Resistor Axial_DIN0411 series Axial Horizontal pin pitch 12.7mm 1W length 9.9mm diameter 3.6mm +0 +2 +2 +Resistor_THT +R_Axial_DIN0411_L9.9mm_D3.6mm_P15.24mm_Horizontal +Resistor, Axial_DIN0411 series, Axial, Horizontal, pin pitch=15.24mm, 1W, length*diameter=9.9*3.6mm^2 +Resistor Axial_DIN0411 series Axial Horizontal pin pitch 15.24mm 1W length 9.9mm diameter 3.6mm +0 +2 +2 +Resistor_THT +R_Axial_DIN0411_L9.9mm_D3.6mm_P20.32mm_Horizontal +Resistor, Axial_DIN0411 series, Axial, Horizontal, pin pitch=20.32mm, 1W, length*diameter=9.9*3.6mm^2 +Resistor Axial_DIN0411 series Axial Horizontal pin pitch 20.32mm 1W length 9.9mm diameter 3.6mm +0 +2 +2 +Resistor_THT +R_Axial_DIN0411_L9.9mm_D3.6mm_P25.40mm_Horizontal +Resistor, Axial_DIN0411 series, Axial, Horizontal, pin pitch=25.4mm, 1W, length*diameter=9.9*3.6mm^2 +Resistor Axial_DIN0411 series Axial Horizontal pin pitch 25.4mm 1W length 9.9mm diameter 3.6mm +0 +2 +2 +Resistor_THT +R_Axial_DIN0414_L11.9mm_D4.5mm_P5.08mm_Vertical +Resistor, Axial_DIN0414 series, Axial, Vertical, pin pitch=5.08mm, 2W, length*diameter=11.9*4.5mm^2, http://www.vishay.com/docs/20128/wkxwrx.pdf +Resistor Axial_DIN0414 series Axial Vertical pin pitch 5.08mm 2W length 11.9mm diameter 4.5mm +0 +2 +2 +Resistor_THT +R_Axial_DIN0414_L11.9mm_D4.5mm_P7.62mm_Vertical +Resistor, Axial_DIN0414 series, Axial, Vertical, pin pitch=7.62mm, 2W, length*diameter=11.9*4.5mm^2, http://www.vishay.com/docs/20128/wkxwrx.pdf +Resistor Axial_DIN0414 series Axial Vertical pin pitch 7.62mm 2W length 11.9mm diameter 4.5mm +0 +2 +2 +Resistor_THT +R_Axial_DIN0414_L11.9mm_D4.5mm_P15.24mm_Horizontal +Resistor, Axial_DIN0414 series, Axial, Horizontal, pin pitch=15.24mm, 2W, length*diameter=11.9*4.5mm^2, http://www.vishay.com/docs/20128/wkxwrx.pdf +Resistor Axial_DIN0414 series Axial Horizontal pin pitch 15.24mm 2W length 11.9mm diameter 4.5mm +0 +2 +2 +Resistor_THT +R_Axial_DIN0414_L11.9mm_D4.5mm_P20.32mm_Horizontal +Resistor, Axial_DIN0414 series, Axial, Horizontal, pin pitch=20.32mm, 2W, length*diameter=11.9*4.5mm^2, http://www.vishay.com/docs/20128/wkxwrx.pdf +Resistor Axial_DIN0414 series Axial Horizontal pin pitch 20.32mm 2W length 11.9mm diameter 4.5mm +0 +2 +2 +Resistor_THT +R_Axial_DIN0414_L11.9mm_D4.5mm_P25.40mm_Horizontal +Resistor, Axial_DIN0414 series, Axial, Horizontal, pin pitch=25.4mm, 2W, length*diameter=11.9*4.5mm^2, http://www.vishay.com/docs/20128/wkxwrx.pdf +Resistor Axial_DIN0414 series Axial Horizontal pin pitch 25.4mm 2W length 11.9mm diameter 4.5mm +0 +2 +2 +Resistor_THT +R_Axial_DIN0516_L15.5mm_D5.0mm_P5.08mm_Vertical +Resistor, Axial_DIN0516 series, Axial, Vertical, pin pitch=5.08mm, 2W, length*diameter=15.5*5mm^2, http://cdn-reichelt.de/documents/datenblatt/B400/1_4W%23YAG.pdf +Resistor Axial_DIN0516 series Axial Vertical pin pitch 5.08mm 2W length 15.5mm diameter 5mm +0 +2 +2 +Resistor_THT +R_Axial_DIN0516_L15.5mm_D5.0mm_P7.62mm_Vertical +Resistor, Axial_DIN0516 series, Axial, Vertical, pin pitch=7.62mm, 2W, length*diameter=15.5*5mm^2, http://cdn-reichelt.de/documents/datenblatt/B400/1_4W%23YAG.pdf +Resistor Axial_DIN0516 series Axial Vertical pin pitch 7.62mm 2W length 15.5mm diameter 5mm +0 +2 +2 +Resistor_THT +R_Axial_DIN0516_L15.5mm_D5.0mm_P20.32mm_Horizontal +Resistor, Axial_DIN0516 series, Axial, Horizontal, pin pitch=20.32mm, 2W, length*diameter=15.5*5mm^2, http://cdn-reichelt.de/documents/datenblatt/B400/1_4W%23YAG.pdf +Resistor Axial_DIN0516 series Axial Horizontal pin pitch 20.32mm 2W length 15.5mm diameter 5mm +0 +2 +2 +Resistor_THT +R_Axial_DIN0516_L15.5mm_D5.0mm_P25.40mm_Horizontal +Resistor, Axial_DIN0516 series, Axial, Horizontal, pin pitch=25.4mm, 2W, length*diameter=15.5*5mm^2, http://cdn-reichelt.de/documents/datenblatt/B400/1_4W%23YAG.pdf +Resistor Axial_DIN0516 series Axial Horizontal pin pitch 25.4mm 2W length 15.5mm diameter 5mm +0 +2 +2 +Resistor_THT +R_Axial_DIN0516_L15.5mm_D5.0mm_P30.48mm_Horizontal +Resistor, Axial_DIN0516 series, Axial, Horizontal, pin pitch=30.48mm, 2W, length*diameter=15.5*5mm^2, http://cdn-reichelt.de/documents/datenblatt/B400/1_4W%23YAG.pdf +Resistor Axial_DIN0516 series Axial Horizontal pin pitch 30.48mm 2W length 15.5mm diameter 5mm +0 +2 +2 +Resistor_THT +R_Axial_DIN0614_L14.3mm_D5.7mm_P5.08mm_Vertical +Resistor, Axial_DIN0614 series, Axial, Vertical, pin pitch=5.08mm, 1.5W, length*diameter=14.3*5.7mm^2 +Resistor Axial_DIN0614 series Axial Vertical pin pitch 5.08mm 1.5W length 14.3mm diameter 5.7mm +0 +2 +2 +Resistor_THT +R_Axial_DIN0614_L14.3mm_D5.7mm_P7.62mm_Vertical +Resistor, Axial_DIN0614 series, Axial, Vertical, pin pitch=7.62mm, 1.5W, length*diameter=14.3*5.7mm^2 +Resistor Axial_DIN0614 series Axial Vertical pin pitch 7.62mm 1.5W length 14.3mm diameter 5.7mm +0 +2 +2 +Resistor_THT +R_Axial_DIN0614_L14.3mm_D5.7mm_P15.24mm_Horizontal +Resistor, Axial_DIN0614 series, Axial, Horizontal, pin pitch=15.24mm, 1.5W, length*diameter=14.3*5.7mm^2 +Resistor Axial_DIN0614 series Axial Horizontal pin pitch 15.24mm 1.5W length 14.3mm diameter 5.7mm +0 +2 +2 +Resistor_THT +R_Axial_DIN0614_L14.3mm_D5.7mm_P20.32mm_Horizontal +Resistor, Axial_DIN0614 series, Axial, Horizontal, pin pitch=20.32mm, 1.5W, length*diameter=14.3*5.7mm^2 +Resistor Axial_DIN0614 series Axial Horizontal pin pitch 20.32mm 1.5W length 14.3mm diameter 5.7mm +0 +2 +2 +Resistor_THT +R_Axial_DIN0614_L14.3mm_D5.7mm_P25.40mm_Horizontal +Resistor, Axial_DIN0614 series, Axial, Horizontal, pin pitch=25.4mm, 1.5W, length*diameter=14.3*5.7mm^2 +Resistor Axial_DIN0614 series Axial Horizontal pin pitch 25.4mm 1.5W length 14.3mm diameter 5.7mm +0 +2 +2 +Resistor_THT +R_Axial_DIN0617_L17.0mm_D6.0mm_P5.08mm_Vertical +Resistor, Axial_DIN0617 series, Axial, Vertical, pin pitch=5.08mm, 2W, length*diameter=17*6mm^2, http://www.vishay.com/docs/20128/wkxwrx.pdf +Resistor Axial_DIN0617 series Axial Vertical pin pitch 5.08mm 2W length 17mm diameter 6mm +0 +2 +2 +Resistor_THT +R_Axial_DIN0617_L17.0mm_D6.0mm_P7.62mm_Vertical +Resistor, Axial_DIN0617 series, Axial, Vertical, pin pitch=7.62mm, 2W, length*diameter=17*6mm^2, http://www.vishay.com/docs/20128/wkxwrx.pdf +Resistor Axial_DIN0617 series Axial Vertical pin pitch 7.62mm 2W length 17mm diameter 6mm +0 +2 +2 +Resistor_THT +R_Axial_DIN0617_L17.0mm_D6.0mm_P20.32mm_Horizontal +Resistor, Axial_DIN0617 series, Axial, Horizontal, pin pitch=20.32mm, 2W, length*diameter=17*6mm^2, http://www.vishay.com/docs/20128/wkxwrx.pdf +Resistor Axial_DIN0617 series Axial Horizontal pin pitch 20.32mm 2W length 17mm diameter 6mm +0 +2 +2 +Resistor_THT +R_Axial_DIN0617_L17.0mm_D6.0mm_P25.40mm_Horizontal +Resistor, Axial_DIN0617 series, Axial, Horizontal, pin pitch=25.4mm, 2W, length*diameter=17*6mm^2, http://www.vishay.com/docs/20128/wkxwrx.pdf +Resistor Axial_DIN0617 series Axial Horizontal pin pitch 25.4mm 2W length 17mm diameter 6mm +0 +2 +2 +Resistor_THT +R_Axial_DIN0617_L17.0mm_D6.0mm_P30.48mm_Horizontal +Resistor, Axial_DIN0617 series, Axial, Horizontal, pin pitch=30.48mm, 2W, length*diameter=17*6mm^2, http://www.vishay.com/docs/20128/wkxwrx.pdf +Resistor Axial_DIN0617 series Axial Horizontal pin pitch 30.48mm 2W length 17mm diameter 6mm +0 +2 +2 +Resistor_THT +R_Axial_DIN0918_L18.0mm_D9.0mm_P7.62mm_Vertical +Resistor, Axial_DIN0918 series, Axial, Vertical, pin pitch=7.62mm, 4W, length*diameter=18*9mm^2 +Resistor Axial_DIN0918 series Axial Vertical pin pitch 7.62mm 4W length 18mm diameter 9mm +0 +2 +2 +Resistor_THT +R_Axial_DIN0918_L18.0mm_D9.0mm_P22.86mm_Horizontal +Resistor, Axial_DIN0918 series, Axial, Horizontal, pin pitch=22.86mm, 4W, length*diameter=18*9mm^2 +Resistor Axial_DIN0918 series Axial Horizontal pin pitch 22.86mm 4W length 18mm diameter 9mm +0 +2 +2 +Resistor_THT +R_Axial_DIN0918_L18.0mm_D9.0mm_P25.40mm_Horizontal +Resistor, Axial_DIN0918 series, Axial, Horizontal, pin pitch=25.4mm, 4W, length*diameter=18*9mm^2 +Resistor Axial_DIN0918 series Axial Horizontal pin pitch 25.4mm 4W length 18mm diameter 9mm +0 +2 +2 +Resistor_THT +R_Axial_DIN0918_L18.0mm_D9.0mm_P30.48mm_Horizontal +Resistor, Axial_DIN0918 series, Axial, Horizontal, pin pitch=30.48mm, 4W, length*diameter=18*9mm^2 +Resistor Axial_DIN0918 series Axial Horizontal pin pitch 30.48mm 4W length 18mm diameter 9mm +0 +2 +2 +Resistor_THT +R_Axial_DIN0922_L20.0mm_D9.0mm_P7.62mm_Vertical +Resistor, Axial_DIN0922 series, Axial, Vertical, pin pitch=7.62mm, 5W, length*diameter=20*9mm^2, http://www.vishay.com/docs/20128/wkxwrx.pdf +Resistor Axial_DIN0922 series Axial Vertical pin pitch 7.62mm 5W length 20mm diameter 9mm +0 +2 +2 +Resistor_THT +R_Axial_DIN0922_L20.0mm_D9.0mm_P25.40mm_Horizontal +Resistor, Axial_DIN0922 series, Axial, Horizontal, pin pitch=25.4mm, 5W, length*diameter=20*9mm^2, http://www.vishay.com/docs/20128/wkxwrx.pdf +Resistor Axial_DIN0922 series Axial Horizontal pin pitch 25.4mm 5W length 20mm diameter 9mm +0 +2 +2 +Resistor_THT +R_Axial_DIN0922_L20.0mm_D9.0mm_P30.48mm_Horizontal +Resistor, Axial_DIN0922 series, Axial, Horizontal, pin pitch=30.48mm, 5W, length*diameter=20*9mm^2, http://www.vishay.com/docs/20128/wkxwrx.pdf +Resistor Axial_DIN0922 series Axial Horizontal pin pitch 30.48mm 5W length 20mm diameter 9mm +0 +2 +2 +Resistor_THT +R_Axial_Power_L20.0mm_W6.4mm_P5.08mm_Vertical +Resistor, Axial_Power series, Axial, Vertical, pin pitch=5.08mm, 4W, length*width*height=20*6.4*6.4mm^3, http://cdn-reichelt.de/documents/datenblatt/B400/5WAXIAL_9WAXIAL_11WAXIAL_17WAXIAL%23YAG.pdf +Resistor Axial_Power series Axial Vertical pin pitch 5.08mm 4W length 20mm width 6.4mm height 6.4mm +0 +2 +2 +Resistor_THT +R_Axial_Power_L20.0mm_W6.4mm_P7.62mm_Vertical +Resistor, Axial_Power series, Axial, Vertical, pin pitch=7.62mm, 4W, length*width*height=20*6.4*6.4mm^3, http://cdn-reichelt.de/documents/datenblatt/B400/5WAXIAL_9WAXIAL_11WAXIAL_17WAXIAL%23YAG.pdf +Resistor Axial_Power series Axial Vertical pin pitch 7.62mm 4W length 20mm width 6.4mm height 6.4mm +0 +2 +2 +Resistor_THT +R_Axial_Power_L20.0mm_W6.4mm_P22.40mm +Resistor, Axial_Power series, Box, pin pitch=22.4mm, 4W, length*width*height=20*6.4*6.4mm^3, http://cdn-reichelt.de/documents/datenblatt/B400/5WAXIAL_9WAXIAL_11WAXIAL_17WAXIAL%23YAG.pdf +Resistor Axial_Power series Box pin pitch 22.4mm 4W length 20mm width 6.4mm height 6.4mm +0 +2 +2 +Resistor_THT +R_Axial_Power_L20.0mm_W6.4mm_P25.40mm +Resistor, Axial_Power series, Box, pin pitch=25.4mm, 4W, length*width*height=20*6.4*6.4mm^3, http://cdn-reichelt.de/documents/datenblatt/B400/5WAXIAL_9WAXIAL_11WAXIAL_17WAXIAL%23YAG.pdf +Resistor Axial_Power series Box pin pitch 25.4mm 4W length 20mm width 6.4mm height 6.4mm +0 +2 +2 +Resistor_THT +R_Axial_Power_L20.0mm_W6.4mm_P30.48mm +Resistor, Axial_Power series, Box, pin pitch=30.48mm, 4W, length*width*height=20*6.4*6.4mm^3, http://cdn-reichelt.de/documents/datenblatt/B400/5WAXIAL_9WAXIAL_11WAXIAL_17WAXIAL%23YAG.pdf +Resistor Axial_Power series Box pin pitch 30.48mm 4W length 20mm width 6.4mm height 6.4mm +0 +2 +2 +Resistor_THT +R_Axial_Power_L25.0mm_W6.4mm_P27.94mm +Resistor, Axial_Power series, Box, pin pitch=27.94mm, 5W, length*width*height=25*6.4*6.4mm^3, http://cdn-reichelt.de/documents/datenblatt/B400/5WAXIAL_9WAXIAL_11WAXIAL_17WAXIAL%23YAG.pdf +Resistor Axial_Power series Box pin pitch 27.94mm 5W length 25mm width 6.4mm height 6.4mm +0 +2 +2 +Resistor_THT +R_Axial_Power_L25.0mm_W6.4mm_P30.48mm +Resistor, Axial_Power series, Box, pin pitch=30.48mm, 5W, length*width*height=25*6.4*6.4mm^3, http://cdn-reichelt.de/documents/datenblatt/B400/5WAXIAL_9WAXIAL_11WAXIAL_17WAXIAL%23YAG.pdf +Resistor Axial_Power series Box pin pitch 30.48mm 5W length 25mm width 6.4mm height 6.4mm +0 +2 +2 +Resistor_THT +R_Axial_Power_L25.0mm_W9.0mm_P7.62mm_Vertical +Resistor, Axial_Power series, Axial, Vertical, pin pitch=7.62mm, 7W, length*width*height=25*9*9mm^3, http://cdn-reichelt.de/documents/datenblatt/B400/5WAXIAL_9WAXIAL_11WAXIAL_17WAXIAL%23YAG.pdf +Resistor Axial_Power series Axial Vertical pin pitch 7.62mm 7W length 25mm width 9mm height 9mm +0 +2 +2 +Resistor_THT +R_Axial_Power_L25.0mm_W9.0mm_P10.16mm_Vertical +Resistor, Axial_Power series, Axial, Vertical, pin pitch=10.16mm, 7W, length*width*height=25*9*9mm^3, http://cdn-reichelt.de/documents/datenblatt/B400/5WAXIAL_9WAXIAL_11WAXIAL_17WAXIAL%23YAG.pdf +Resistor Axial_Power series Axial Vertical pin pitch 10.16mm 7W length 25mm width 9mm height 9mm +0 +2 +2 +Resistor_THT +R_Axial_Power_L25.0mm_W9.0mm_P27.94mm +Resistor, Axial_Power series, Box, pin pitch=27.94mm, 7W, length*width*height=25*9*9mm^3, http://cdn-reichelt.de/documents/datenblatt/B400/5WAXIAL_9WAXIAL_11WAXIAL_17WAXIAL%23YAG.pdf +Resistor Axial_Power series Box pin pitch 27.94mm 7W length 25mm width 9mm height 9mm +0 +2 +2 +Resistor_THT +R_Axial_Power_L25.0mm_W9.0mm_P30.48mm +Resistor, Axial_Power series, Box, pin pitch=30.48mm, 7W, length*width*height=25*9*9mm^3, http://cdn-reichelt.de/documents/datenblatt/B400/5WAXIAL_9WAXIAL_11WAXIAL_17WAXIAL%23YAG.pdf +Resistor Axial_Power series Box pin pitch 30.48mm 7W length 25mm width 9mm height 9mm +0 +2 +2 +Resistor_THT +R_Axial_Power_L38.0mm_W6.4mm_P40.64mm +Resistor, Axial_Power series, Box, pin pitch=40.64mm, 7W, length*width*height=38*6.4*6.4mm^3, http://cdn-reichelt.de/documents/datenblatt/B400/5WAXIAL_9WAXIAL_11WAXIAL_17WAXIAL%23YAG.pdf +Resistor Axial_Power series Box pin pitch 40.64mm 7W length 38mm width 6.4mm height 6.4mm +0 +2 +2 +Resistor_THT +R_Axial_Power_L38.0mm_W6.4mm_P45.72mm +Resistor, Axial_Power series, Box, pin pitch=45.72mm, 7W, length*width*height=38*6.4*6.4mm^3, http://cdn-reichelt.de/documents/datenblatt/B400/5WAXIAL_9WAXIAL_11WAXIAL_17WAXIAL%23YAG.pdf +Resistor Axial_Power series Box pin pitch 45.72mm 7W length 38mm width 6.4mm height 6.4mm +0 +2 +2 +Resistor_THT +R_Axial_Power_L38.0mm_W9.0mm_P40.64mm +Resistor, Axial_Power series, Box, pin pitch=40.64mm, 9W, length*width*height=38*9*9mm^3, http://cdn-reichelt.de/documents/datenblatt/B400/5WAXIAL_9WAXIAL_11WAXIAL_17WAXIAL%23YAG.pdf +Resistor Axial_Power series Box pin pitch 40.64mm 9W length 38mm width 9mm height 9mm +0 +2 +2 +Resistor_THT +R_Axial_Power_L38.0mm_W9.0mm_P45.72mm +Resistor, Axial_Power series, Box, pin pitch=45.72mm, 9W, length*width*height=38*9*9mm^3, http://cdn-reichelt.de/documents/datenblatt/B400/5WAXIAL_9WAXIAL_11WAXIAL_17WAXIAL%23YAG.pdf +Resistor Axial_Power series Box pin pitch 45.72mm 9W length 38mm width 9mm height 9mm +0 +2 +2 +Resistor_THT +R_Axial_Power_L48.0mm_W12.5mm_P7.62mm_Vertical +Resistor, Axial_Power series, Axial, Vertical, pin pitch=7.62mm, 15W, length*width*height=48*12.5*12.5mm^3, http://cdn-reichelt.de/documents/datenblatt/B400/5WAXIAL_9WAXIAL_11WAXIAL_17WAXIAL%23YAG.pdf +Resistor Axial_Power series Axial Vertical pin pitch 7.62mm 15W length 48mm width 12.5mm height 12.5mm +0 +2 +2 +Resistor_THT +R_Axial_Power_L48.0mm_W12.5mm_P10.16mm_Vertical +Resistor, Axial_Power series, Axial, Vertical, pin pitch=10.16mm, 15W, length*width*height=48*12.5*12.5mm^3, http://cdn-reichelt.de/documents/datenblatt/B400/5WAXIAL_9WAXIAL_11WAXIAL_17WAXIAL%23YAG.pdf +Resistor Axial_Power series Axial Vertical pin pitch 10.16mm 15W length 48mm width 12.5mm height 12.5mm +0 +2 +2 +Resistor_THT +R_Axial_Power_L48.0mm_W12.5mm_P55.88mm +Resistor, Axial_Power series, Box, pin pitch=55.88mm, 15W, length*width*height=48*12.5*12.5mm^3, http://cdn-reichelt.de/documents/datenblatt/B400/5WAXIAL_9WAXIAL_11WAXIAL_17WAXIAL%23YAG.pdf +Resistor Axial_Power series Box pin pitch 55.88mm 15W length 48mm width 12.5mm height 12.5mm +0 +2 +2 +Resistor_THT +R_Axial_Power_L48.0mm_W12.5mm_P60.96mm +Resistor, Axial_Power series, Box, pin pitch=60.96mm, 15W, length*width*height=48*12.5*12.5mm^3, http://cdn-reichelt.de/documents/datenblatt/B400/5WAXIAL_9WAXIAL_11WAXIAL_17WAXIAL%23YAG.pdf +Resistor Axial_Power series Box pin pitch 60.96mm 15W length 48mm width 12.5mm height 12.5mm +0 +2 +2 +Resistor_THT +R_Axial_Power_L50.0mm_W9.0mm_P55.88mm +Resistor, Axial_Power series, Box, pin pitch=55.88mm, 11W, length*width*height=50*9*9mm^3, http://cdn-reichelt.de/documents/datenblatt/B400/5WAXIAL_9WAXIAL_11WAXIAL_17WAXIAL%23YAG.pdf +Resistor Axial_Power series Box pin pitch 55.88mm 11W length 50mm width 9mm height 9mm +0 +2 +2 +Resistor_THT +R_Axial_Power_L50.0mm_W9.0mm_P60.96mm +Resistor, Axial_Power series, Box, pin pitch=60.96mm, 11W, length*width*height=50*9*9mm^3, http://cdn-reichelt.de/documents/datenblatt/B400/5WAXIAL_9WAXIAL_11WAXIAL_17WAXIAL%23YAG.pdf +Resistor Axial_Power series Box pin pitch 60.96mm 11W length 50mm width 9mm height 9mm +0 +2 +2 +Resistor_THT +R_Axial_Power_L60.0mm_W14.0mm_P10.16mm_Vertical +Resistor, Axial_Power series, Axial, Vertical, pin pitch=10.16mm, 25W, length*width*height=60*14*14mm^3, http://cdn-reichelt.de/documents/datenblatt/B400/5WAXIAL_9WAXIAL_11WAXIAL_17WAXIAL%23YAG.pdf +Resistor Axial_Power series Axial Vertical pin pitch 10.16mm 25W length 60mm width 14mm height 14mm +0 +2 +2 +Resistor_THT +R_Axial_Power_L60.0mm_W14.0mm_P66.04mm +Resistor, Axial_Power series, Box, pin pitch=66.04mm, 25W, length*width*height=60*14*14mm^3, http://cdn-reichelt.de/documents/datenblatt/B400/5WAXIAL_9WAXIAL_11WAXIAL_17WAXIAL%23YAG.pdf +Resistor Axial_Power series Box pin pitch 66.04mm 25W length 60mm width 14mm height 14mm +0 +2 +2 +Resistor_THT +R_Axial_Power_L60.0mm_W14.0mm_P71.12mm +Resistor, Axial_Power series, Box, pin pitch=71.12mm, 25W, length*width*height=60*14*14mm^3, http://cdn-reichelt.de/documents/datenblatt/B400/5WAXIAL_9WAXIAL_11WAXIAL_17WAXIAL%23YAG.pdf +Resistor Axial_Power series Box pin pitch 71.12mm 25W length 60mm width 14mm height 14mm +0 +2 +2 +Resistor_THT +R_Axial_Power_L75.0mm_W9.0mm_P81.28mm +Resistor, Axial_Power series, Box, pin pitch=81.28mm, 17W, length*width*height=75*9*9mm^3, http://cdn-reichelt.de/documents/datenblatt/B400/5WAXIAL_9WAXIAL_11WAXIAL_17WAXIAL%23YAG.pdf +Resistor Axial_Power series Box pin pitch 81.28mm 17W length 75mm width 9mm height 9mm +0 +2 +2 +Resistor_THT +R_Axial_Power_L75.0mm_W9.0mm_P86.36mm +Resistor, Axial_Power series, Box, pin pitch=86.36mm, 17W, length*width*height=75*9*9mm^3, http://cdn-reichelt.de/documents/datenblatt/B400/5WAXIAL_9WAXIAL_11WAXIAL_17WAXIAL%23YAG.pdf +Resistor Axial_Power series Box pin pitch 86.36mm 17W length 75mm width 9mm height 9mm +0 +2 +2 +Resistor_THT +R_Axial_Shunt_L22.2mm_W8.0mm_PS14.30mm_P25.40mm +Resistor, Axial_Shunt series, Box, pin pitch=25.4mm, 3W, length*width*height=22.2*8*8mm^3, shunt pin pitch = 14.30mm, http://www.vishay.com/docs/30217/cpsl.pdf +Resistor Axial_Shunt series Box pin pitch 25.4mm 3W length 22.2mm width 8mm height 8mm shunt pin pitch 14.30mm +0 +4 +4 +Resistor_THT +R_Axial_Shunt_L22.2mm_W9.5mm_PS14.30mm_P25.40mm +Resistor, Axial_Shunt series, Box, pin pitch=25.4mm, 5W, length*width*height=22.2*9.5*9.5mm^3, shunt pin pitch = 14.30mm, http://www.vishay.com/docs/30217/cpsl.pdf +Resistor Axial_Shunt series Box pin pitch 25.4mm 5W length 22.2mm width 9.5mm height 9.5mm shunt pin pitch 14.30mm +0 +4 +4 +Resistor_THT +R_Axial_Shunt_L35.3mm_W9.5mm_PS25.40mm_P38.10mm +Resistor, Axial_Shunt series, Box, pin pitch=38.1mm, 7W, length*width*height=35.3*9.5*9.5mm^3, shunt pin pitch = 25.40mm, http://www.vishay.com/docs/30217/cpsl.pdf +Resistor Axial_Shunt series Box pin pitch 38.1mm 7W length 35.3mm width 9.5mm height 9.5mm shunt pin pitch 25.40mm +0 +4 +4 +Resistor_THT +R_Axial_Shunt_L47.6mm_W9.5mm_PS34.93mm_P50.80mm +Resistor, Axial_Shunt series, Box, pin pitch=50.8mm, 10W, length*width*height=47.6*9.5*9.5mm^3, shunt pin pitch = 34.93mm, http://www.vishay.com/docs/30217/cpsl.pdf +Resistor Axial_Shunt series Box pin pitch 50.8mm 10W length 47.6mm width 9.5mm height 9.5mm shunt pin pitch 34.93mm +0 +4 +4 +Resistor_THT +R_Axial_Shunt_L47.6mm_W12.7mm_PS34.93mm_P50.80mm +Resistor, Axial_Shunt series, Box, pin pitch=50.8mm, 15W, length*width*height=47.6*12.7*12.7mm^3, shunt pin pitch = 34.93mm, http://www.vishay.com/docs/30217/cpsl.pdf +Resistor Axial_Shunt series Box pin pitch 50.8mm 15W length 47.6mm width 12.7mm height 12.7mm shunt pin pitch 34.93mm +0 +4 +4 +Resistor_THT +R_Bare_Metal_Element_L12.4mm_W4.8mm_P11.40mm +Resistor, Bare_Metal_Element series, Bare Metal Strip/Wire, Horizontal, pin pitch=11.4mm, 1W, length*width=12.4*4.8mm^2, https://www.bourns.com/pdfs/PWR4412-2S.pdf +Resistor Bare_Metal_Element series Bare Metal Strip Wire Horizontal pin pitch 11.4mm 1W length 12.4mm width 4.8mm +0 +2 +2 +Resistor_THT +R_Bare_Metal_Element_L16.3mm_W4.8mm_P15.30mm +Resistor, Bare_Metal_Element series, Bare Metal Strip/Wire, Horizontal, pin pitch=15.3mm, 3W, length*width=16.3*4.8mm^2, https://www.bourns.com/pdfs/PWR4412-2S.pdf +Resistor Bare_Metal_Element series Bare Metal Strip Wire Horizontal pin pitch 15.3mm 3W length 16.3mm width 4.8mm +0 +2 +2 +Resistor_THT +R_Bare_Metal_Element_L21.3mm_W4.8mm_P20.30mm +Resistor, Bare_Metal_Element series, Bare Metal Strip/Wire, Horizontal, pin pitch=20.3mm, 5W, length*width=21.3*4.8mm^2, https://www.bourns.com/pdfs/PWR4412-2S.pdf +Resistor Bare_Metal_Element series Bare Metal Strip Wire Horizontal pin pitch 20.3mm 5W length 21.3mm width 4.8mm +0 +2 +2 +Resistor_THT +R_Box_L8.4mm_W2.5mm_P5.08mm +Resistor, Box series, Radial, pin pitch=5.08mm, 0.5W = 1/2W, length*width=8.38*2.54mm^2, http://www.vishay.com/docs/60051/cns020.pdf +Resistor Box series Radial pin pitch 5.08mm 0.5W = 1/2W length 8.38mm width 2.54mm +0 +2 +2 +Resistor_THT +R_Box_L13.0mm_W4.0mm_P9.00mm +Resistor, Box series, Radial, pin pitch=9.00mm, 2W, length*width=13.0*4.0mm^2, http://www.produktinfo.conrad.com/datenblaetter/425000-449999/443860-da-01-de-METALLBAND_WIDERSTAND_0_1_OHM_5W_5Pr.pdf +Resistor Box series Radial pin pitch 9.00mm 2W length 13.0mm width 4.0mm +0 +2 +2 +Resistor_THT +R_Box_L14.0mm_W5.0mm_P9.00mm +Resistor, Box series, Radial, pin pitch=9.00mm, 5W, length*width=14.0*5.0mm^2, http://www.produktinfo.conrad.com/datenblaetter/425000-449999/443860-da-01-de-METALLBAND_WIDERSTAND_0_1_OHM_5W_5Pr.pdf +Resistor Box series Radial pin pitch 9.00mm 5W length 14.0mm width 5.0mm +0 +2 +2 +Resistor_THT +R_Box_L26.0mm_W5.0mm_P20.00mm +Resistor, Box series, Radial, pin pitch=20.00mm, 10W, length*width=26.0*5.0mm^2, http://www.produktinfo.conrad.com/datenblaetter/425000-449999/443860-da-01-de-METALLBAND_WIDERSTAND_0_1_OHM_5W_5Pr.pdf +Resistor Box series Radial pin pitch 20.00mm 10W length 26.0mm width 5.0mm +0 +2 +2 +Resistor_THT +R_Radial_Power_L7.0mm_W8.0mm_Px2.40mm_Py2.30mm +Resistor, Radial_Power series, Radial, pin pitch=2.40*2.30mm^2, 7W, length*width=7*8mm^2, http://www.vitrohm.com/content/files/vitrohm_series_kv_-_201601.pdf +Resistor Radial_Power series Radial pin pitch 2.40*2.30mm^2 7W length 7mm width 8mm +0 +2 +2 +Resistor_THT +R_Radial_Power_L9.0mm_W10.0mm_Px2.70mm_Py2.30mm +Resistor, Radial_Power series, Radial, pin pitch=2.70*2.30mm^2, 17W, length*width=9*10mm^2, http://www.vitrohm.com/content/files/vitrohm_series_kv_-_201601.pdf +Resistor Radial_Power series Radial pin pitch 2.70*2.30mm^2 17W length 9mm width 10mm +0 +2 +2 +Resistor_THT +R_Radial_Power_L11.0mm_W7.0mm_P5.00mm +Resistor, Radial_Power series, Radial, pin pitch=5.00mm, 2W, length*width=11.0*7.0mm^2, http://www.vishay.com/docs/30218/cpcx.pdf +Resistor Radial_Power series Radial pin pitch 5.00mm 2W length 11.0mm width 7.0mm +0 +2 +2 +Resistor_THT +R_Radial_Power_L12.0mm_W8.0mm_P5.00mm +Resistor, Radial_Power series, Radial, pin pitch=5.00mm, 3W, length*width=12.0*8.0mm^2, http://www.vishay.com/docs/30218/cpcx.pdf +Resistor Radial_Power series Radial pin pitch 5.00mm 3W length 12.0mm width 8.0mm +0 +2 +2 +Resistor_THT +R_Radial_Power_L13.0mm_W9.0mm_P5.00mm +Resistor, Radial_Power series, Radial, pin pitch=5.00mm, 7W, length*width=13.0*9.0mm^2, http://www.vishay.com/docs/30218/cpcx.pdf +Resistor Radial_Power series Radial pin pitch 5.00mm 7W length 13.0mm width 9.0mm +0 +2 +2 +Resistor_THT +R_Radial_Power_L16.1mm_W9.0mm_P7.37mm +Resistor, Radial_Power series, Radial, pin pitch=7.37mm, 10W, length*width=16.1*9mm^2, http://www.vishay.com/docs/30218/cpcx.pdf +Resistor Radial_Power series Radial pin pitch 7.37mm 10W length 16.1mm width 9mm +0 +2 +2 +Rotary_Encoder +RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mm +Alps rotary encoder, EC12E... with switch, vertical shaft, http://www.alps.com/prod/info/E/HTML/Encoder/Incremental/EC11/EC11E15204A3.html +rotary encoder +0 +7 +6 +Rotary_Encoder +RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mm_CircularMountingHoles +Alps rotary encoder, EC12E... with switch, vertical shaft, mounting holes with circular drills, http://www.alps.com/prod/info/E/HTML/Encoder/Incremental/EC11/EC11E15204A3.html +rotary encoder +0 +7 +6 +Rotary_Encoder +RotaryEncoder_Alps_EC11E_Vertical_H20mm +Alps rotary encoder, EC12E... without switch (pins are dummy), vertical shaft, http://www.alps.com/prod/info/E/HTML/Encoder/Incremental/EC11/EC11E15204A3.html +rotary encoder +0 +7 +4 +Rotary_Encoder +RotaryEncoder_Alps_EC11E_Vertical_H20mm_CircularMountingHoles +Alps rotary encoder, EC12E... without switch (pins are dummy), vertical shaft, mounting holes with circular drills, http://www.alps.com/prod/info/E/HTML/Encoder/Incremental/EC11/EC11E15204A3.html +rotary encoder +0 +7 +4 +Rotary_Encoder +RotaryEncoder_Alps_EC12E-Switch_Vertical_H20mm +Alps rotary encoder, EC12E... with switch, vertical shaft, http://www.alps.com/prod/info/E/HTML/Encoder/Incremental/EC12E/EC12E1240405.html & http://cdn-reichelt.de/documents/datenblatt/F100/402097STEC12E08.PDF +rotary encoder +0 +7 +6 +Rotary_Encoder +RotaryEncoder_Alps_EC12E-Switch_Vertical_H20mm_CircularMountingHoles +Alps rotary encoder, EC12E... with switch, vertical shaft, mounting holes with circular drills, http://www.alps.com/prod/info/E/HTML/Encoder/Incremental/EC12E/EC12E1240405.html & http://cdn-reichelt.de/documents/datenblatt/F100/402097STEC12E08.PDF +rotary encoder +0 +7 +6 +Rotary_Encoder +RotaryEncoder_Alps_EC12E_Vertical_H20mm +Alps rotary encoder, EC12E..., vertical shaft, http://www.alps.com/prod/info/E/HTML/Encoder/Incremental/EC12E/EC12E1240405.html +rotary encoder +0 +5 +4 +Rotary_Encoder +RotaryEncoder_Alps_EC12E_Vertical_H20mm_CircularMountingHoles +Alps rotary encoder, EC12E..., vertical shaft, mounting holes with circular drills, http://www.alps.com/prod/info/E/HTML/Encoder/Incremental/EC12E/EC12E1240405.html +rotary encoder +0 +5 +4 +Sensor +Aosong_DHT11_5.5x12.0_P2.54mm +Temperature and humidity module, http://akizukidenshi.com/download/ds/aosong/DHT11.pdf +Temperature and humidity module +0 +4 +4 +Sensor +MQ-6 +Gas Sensor, 6 pin, https://www.winsen-sensor.com/d/files/semiconductor/mq-6.pdf +gas sensor +0 +6 +6 +Sensor +SHT1x +SHT1x +SHT1x +0 +8 +8 +Sensor_Audio +CUI_CMC-4013-SMT +Omnidirectional, -42dB, reflowable, electret condenser microphone https://www.cuidevices.com/product/resource/cmc-4013-smt-tr.pdf +Microphone CUI +0 +2 +2 +Sensor_Audio +Infineon_PG-LLGA-5-1 +Infineon_PG-LLGA-5-1 StepUp generated footprint, https://www.infineon.com/cms/en/product/packages/PG-LLGA/PG-LLGA-5-1/ +infineon mems microphone +0 +15 +5 +Sensor_Audio +ST_HLGA-6_3.76x4.72mm_P1.65mm +http://www.st.com/content/ccc/resource/technical/document/datasheet/group3/27/62/48/98/44/54/4d/36/DM00303211/files/DM00303211.pdf/jcr:content/translations/en.DM00303211.pdf +HLGA Sensor Audio +0 +6 +6 +Sensor_Current +AKM_CQ_7 +AKM Current Sensor, 7 pin, THT (http://www.akm.com/akm/en/file/datasheet/CQ-236B.pdf) +akm current sensor tht +0 +39 +7 +Sensor_Current +AKM_CQ_7S +AKM Current Sensor, 7 pin, SMD (http://www.akm.com/akm/en/file/datasheet/CQ-236B.pdf) +akm current sensor smd +0 +19 +7 +Sensor_Current +AKM_CQ_VSOP-24_5.6x7.9mm_P0.65mm +AKM VSOP-24 current sensor, 5.6x7.9mm body, 0.65mm pitch (http://www.akm.com/akm/en/file/datasheet/CQ-330J.pdf) +akm vsop 24 +0 +10 +10 +Sensor_Current +AKM_CZ_SSOP-10_6.5x8.1mm_P0.95mm +AKM CZ-381x current sensor, 6.5x8.1mm body, 0.95mm pitch (http://www.akm.com/akm/en/product/detail/0009/) +akm cz-381x 10 +0 +10 +10 +Sensor_Current +Allegro_CB_PFF +Allegro MicroSystems, CB-PFF Package (http://www.allegromicro.com/en/Products/Current-Sensor-ICs/Fifty-To-Two-Hundred-Amp-Integrated-Conductor-Sensor-ICs/ACS758.aspx) !PADS 4-5 DO NOT MATCH DATASHEET! +Allegro CB-PFF +0 +37 +5 +Sensor_Current +Allegro_CB_PSF +Allegro MicroSystems, CB-PSF Package (http://www.allegromicro.com/en/Products/Current-Sensor-ICs/Fifty-To-Two-Hundred-Amp-Integrated-Conductor-Sensor-ICs/ACS758.aspx) +Allegro CB-PSF +0 +5 +5 +Sensor_Current +Allegro_CB_PSS +Allegro MicroSystems, CB-PSS Package (http://www.allegromicro.com/en/Products/Current-Sensor-ICs/Fifty-To-Two-Hundred-Amp-Integrated-Conductor-Sensor-ICs/ACS758.aspx) +Allegro CB-PSS +0 +5 +5 +Sensor_Current +Allegro_PSOF-7_4.8x6.4mm_P1.60mm +Allegro Microsystems PSOF-7, 4.8x6.4mm Body, 1.60mm Pitch (http://www.allegromicro.com/~/media/Files/Datasheets/ACS780-Datasheet.ashx) +Allegro PSOF-7 +0 +7 +7 +Sensor_Current +Allegro_QFN-12-10-1EP_3x3mm_P0.5mm +Allegro Microsystems 12-Lead (10-Lead Populated) Quad Flat Pack, 3x3mm Body, 0.5mm Pitch (http://www.allegromicro.com/~/media/Files/Datasheets/ACS711-Datasheet.ashx) +Allegro QFN 0.5 +0 +14 +10 +Sensor_Current +Allegro_QSOP-24_3.9x8.7mm_P0.635mm +Allegro Microsystems 24-Lead Plastic Shrink Small Outline Narrow Body Body [QSOP] (http://www.allegromicro.com/~/media/Files/Datasheets/ACS726-Datasheet.ashx?la=en) +Allegro QSOP 0.635 +0 +24 +24 +Sensor_Current +Allegro_SIP-3 +Allegro Microsystems SIP-3, 1.27mm Pitch (http://www.allegromicro.com/~/media/Files/Datasheets/A1369-Datasheet.ashx) +Allegro SIP-3 +0 +3 +3 +Sensor_Current +Allegro_SIP-4 +Allegro Microsystems SIP-4, 1.27mm Pitch (http://www.allegromicro.com/~/media/Files/Datasheets/A1363-Datasheet.ashx) +Allegro SIP-4 +0 +4 +4 +Sensor_Current +Diodes_SIP-3_4.1x1.5mm_P1.27mm +Diodes SIP-3 Bulk Pack, 1.27mm Pitch (https://www.diodes.com/assets/Package-Files/SIP-3-Bulk-Pack.pdf) +Diodes SIP-3 Bulk Pack +0 +3 +3 +Sensor_Current +Diodes_SIP-3_4.1x1.5mm_P2.65mm +Diodes SIP-3 Ammo Pack, 2.65mm Pitch (https://www.diodes.com/assets/Package-Files/SIP-3-Ammo-Pack.pdf) +Diodes SIP-3 Ammo Pack +0 +3 +3 +Sensor_Current +Honeywell_CSLW +https://sensing.honeywell.com/honeywell-sensing-cslw-series-product-sheet-005861-1-en.pdf +Miniature Wired Open-Loop Current Sensor +0 +5 +5 +Sensor_Current +LEM_CKSR +LEM CKSR 6/15/25/50/75-NP Current Transducer, https://www.lem.com/sites/default/files/products_datasheets/cksr_75-np.pdf +current transducer LEM +0 +14 +14 +Sensor_Current +LEM_HO8-NP +LEM HO 8/15/25-NP Current Transducer (https://www.lem.com/sites/default/files/products_datasheets/ho-np-0000_series.pdf) +current transducer +0 +13 +13 +Sensor_Current +LEM_HO8-NSM +LEM HO 8/15/25-NSM Current Transducer (https://www.lem.com/sites/default/files/products_datasheets/ho-nsm-0000_series.pdf) +current transducer +0 +13 +13 +Sensor_Current +LEM_HO40-NP +LEM HO 40/60/120/150-NP Current Transducer (https://www.lem.com/sites/default/files/products_datasheets/ho-np_0100__1100_series.pdf) +current transducer +0 +13 +13 +Sensor_Current +LEM_HTFS +LEM HTFS x00-P current transducer (https://www.lem.com/sites/default/files/products_datasheets/htfs_200_800-p.pdf) +HTFS current transducer +0 +4 +4 +Sensor_Current +LEM_HX02-P +LEM HX02-P hall effect current transducer (https://www.lem.com/sites/default/files/products_datasheets/hx%202_6-p_e%20v5.pdf) +hall current +0 +6 +6 +Sensor_Current +LEM_HX03-P-SP2 +LEM HX03-P-SP2 hall effect current transducer (https://www.lem.com/sites/default/files/products_datasheets/hx%203_50-p_sp2_e%20v07.pdf) +hall current +0 +6 +6 +Sensor_Current +LEM_HX04-P +LEM HX04-P hall effect current transducer (https://www.lem.com/sites/default/files/products_datasheets/hx%202_6-p_e%20v5.pdf) +hall current +0 +6 +6 +Sensor_Current +LEM_HX05-NP +LEM HX05-NP hall effect current transducer (https://www.lem.com/sites/default/files/products_datasheets/hx%205_15-np_e%20v10.pdf) +hall current +0 +8 +8 +Sensor_Current +LEM_HX05-P-SP2 +LEM HX05-P-SP2 hall effect current transducer (https://www.lem.com/sites/default/files/products_datasheets/hx%203_50-p_sp2_e%20v07.pdf) +hall current +0 +6 +6 +Sensor_Current +LEM_HX06-P +LEM HX06-P hall effect current transducer (https://www.lem.com/sites/default/files/products_datasheets/hx%202_6-p_e%20v5.pdf) +hall current +0 +6 +6 +Sensor_Current +LEM_HX10-NP +LEM HX10-NP hall effect current transducer (https://www.lem.com/sites/default/files/products_datasheets/hx%205_15-np_e%20v10.pdf) +hall current +0 +8 +8 +Sensor_Current +LEM_HX10-P-SP2 +LEM HX10-P-SP2 hall effect current transducer (https://www.lem.com/sites/default/files/products_datasheets/hx%203_50-p_sp2_e%20v07.pdf) +hall current +0 +6 +6 +Sensor_Current +LEM_HX15-NP +LEM HX15-NP hall effect current transducer (https://www.lem.com/sites/default/files/products_datasheets/hx%205_15-np_e%20v10.pdf) +hall current +0 +8 +8 +Sensor_Current +LEM_HX15-P-SP2 +LEM HX15-P-SP2 hall effect current transducer (https://www.lem.com/sites/default/files/products_datasheets/hx%203_50-p_sp2_e%20v07.pdf) +hall current +0 +6 +6 +Sensor_Current +LEM_HX20-P-SP2 +LEM HX20-P-SP2 hall effect current transducer (https://www.lem.com/sites/default/files/products_datasheets/hx%203_50-p_sp2_e%20v07.pdf) +hall current +0 +6 +6 +Sensor_Current +LEM_HX25-P-SP2 +LEM HX25-P-SP2 hall effect current transducer (https://www.lem.com/sites/default/files/products_datasheets/hx%203_50-p_sp2_e%20v07.pdf) +hall current +0 +6 +6 +Sensor_Current +LEM_HX50-P-SP2 +LEM HX50-P-SP2 hall effect current transducer (https://www.lem.com/sites/default/files/products_datasheets/hx%203_50-p_sp2_e%20v07.pdf) +hall current +0 +6 +6 +Sensor_Current +LEM_LA25-P +LEM Current Transducer (https://www.lem.com/sites/default/files/products_datasheets/la_25-p.pdf) +current transducer +0 +3 +3 +Sensor_Current +LEM_LTSR-NP +LEM current transducer LEM_LTSR-NP 5V supply voltage series https://www.lem.com/sites/default/files/products_datasheets/ltsr_6-np.pdf +Current transducer +0 +10 +10 +Sensor_Motion +InvenSense_QFN-24_3x3mm_P0.4mm +24-Lead Plastic QFN (3mm x 3mm); Pitch 0.4mm; EP 1.7x1.54mm; for InvenSense motion sensors; keepout area marked (Package see: https://store.invensense.com/datasheets/invensense/MPU9250REV1.0.pdf; See also https://www.invensense.com/wp-content/uploads/2015/02/InvenSense-MEMS-Handling.pdf) +QFN 0.4 +0 +24 +24 +Sensor_Motion +InvenSense_QFN-24_3x3mm_P0.4mm_NoMask +24-Lead Plastic QFN (3mm x 3mm); Pitch 0.4mm; EP 1.7x1.54mm; for InvenSense motion sensors; Mask removed below exposed pad; keepout area marked (Package see: https://store.invensense.com/datasheets/invensense/MPU9250REV1.0.pdf; See also https://www.invensense.com/wp-content/uploads/2015/02/InvenSense-MEMS-Handling.pdf) +QFN 0.4 +0 +25 +24 +Sensor_Motion +InvenSense_QFN-24_4x4mm_P0.5mm +24-Lead Plastic QFN (4mm x 4mm); Pitch 0.5mm; EP 2.7x2.6mm; for InvenSense motion sensors; keepout area marked (Package see: https://store.invensense.com/datasheets/invensense/MPU-6050_DataSheet_V3%204.pdf; See also https://www.invensense.com/wp-content/uploads/2015/02/InvenSense-MEMS-Handling.pdf) +QFN 0.5 +0 +24 +24 +Sensor_Motion +InvenSense_QFN-24_4x4mm_P0.5mm_NoMask +24-Lead Plastic QFN (4mm x 4mm); Pitch 0.5mm; EP 2.7x2.6mm; for InvenSense motion sensors; Mask removed below exposed pad; keepout area marked (Package see: https://store.invensense.com/datasheets/invensense/MPU-6050_DataSheet_V3%204.pdf; See also https://www.invensense.com/wp-content/uploads/2015/02/InvenSense-MEMS-Handling.pdf) +QFN 0.5 +0 +25 +24 +Sensor_Pressure +Freescale_98ARH99066A +https://www.nxp.com/docs/en/data-sheet/MPXH6250A.pdf +sensor pressure ssop 98ARH99066A +0 +8 +8 +Sensor_Pressure +Freescale_98ARH99089A +https://www.nxp.com/docs/en/data-sheet/MPXH6250A.pdf +sensor pressure ssop 98ARH99089A +0 +8 +8 +Sensor_Pressure +Honeywell_40PCxxxG1A +https://www.honeywellscportal.com/index.php?ci_id=138832 +pressure sensor automotive honeywell +0 +3 +3 +Sensor_Voltage +LEM_LV25-P +LEM LV25-P Voltage transducer, https://www.lem.com/sites/default/files/products_datasheets/lv_25-p.pdf +LEM Hall Effect Voltage transducer +0 +5 +5 +Socket +3M_Textool_240-1288-00-0602J_2x20_P2.54mm +3M 40-pin zero insertion force socket, though-hole, row spacing 25.4 mm (1000 mils) +THT DIP DIL ZIF 25.4mm 1000mil Socket +0 +40 +40 +Socket +DIP_Socket-14_W4.3_W5.08_W7.62_W10.16_W10.9_3M_214-3339-00-0602J +3M 14-pin zero insertion force socket, through-hole, row spacing 7.62 mm (300 mils), http://multimedia.3m.com/mws/media/494546O/3mtm-dip-sockets-100-2-54-mm-ts0365.pdf +THT DIP DIL ZIF 7.62mm 300mil Socket +0 +14 +14 +Socket +DIP_Socket-16_W4.3_W5.08_W7.62_W10.16_W10.9_3M_216-3340-00-0602J +3M 16-pin zero insertion force socket, through-hole, row spacing 7.62 mm (300 mils), http://multimedia.3m.com/mws/media/494546O/3mtm-dip-sockets-100-2-54-mm-ts0365.pdf +THT DIP DIL ZIF 7.62mm 300mil Socket +0 +16 +16 +Socket +DIP_Socket-18_W4.3_W5.08_W7.62_W10.16_W10.9_3M_218-3341-00-0602J +3M 18-pin zero insertion force socket, through-hole, row spacing 7.62 mm (300 mils), http://multimedia.3m.com/mws/media/494546O/3mtm-dip-sockets-100-2-54-mm-ts0365.pdf +THT DIP DIL ZIF 7.62mm 300mil Socket +0 +18 +18 +Socket +DIP_Socket-20_W4.3_W5.08_W7.62_W10.16_W10.9_3M_220-3342-00-0602J +3M 20-pin zero insertion force socket, through-hole, row spacing 7.62 mm (300 mils), http://multimedia.3m.com/mws/media/494546O/3mtm-dip-sockets-100-2-54-mm-ts0365.pdf +THT DIP DIL ZIF 7.62mm 300mil Socket +0 +20 +20 +Socket +DIP_Socket-22_W6.9_W7.62_W10.16_W12.7_W13.5_3M_222-3343-00-0602J +3M 22-pin zero insertion force socket, through-hole, row spacing 10.16 mm (400 mils), http://multimedia.3m.com/mws/media/494546O/3mtm-dip-sockets-100-2-54-mm-ts0365.pdf +THT DIP DIL ZIF 10.16mm 400mil Socket +0 +22 +22 +Socket +DIP_Socket-24_W4.3_W5.08_W7.62_W10.16_W10.9_3M_224-5248-00-0602J +3M 24-pin zero insertion force socket, through-hole, row spacing 7.62 mm (300 mils), http://multimedia.3m.com/mws/media/494546O/3mtm-dip-sockets-100-2-54-mm-ts0365.pdf +THT DIP DIL ZIF 7.62mm 300mil Socket +0 +24 +24 +Socket +DIP_Socket-24_W11.9_W12.7_W15.24_W17.78_W18.5_3M_224-1275-00-0602J +3M 24-pin zero insertion force socket, through-hole, row spacing 15.24 mm (600 mils), http://multimedia.3m.com/mws/media/494546O/3mtm-dip-sockets-100-2-54-mm-ts0365.pdf +THT DIP DIL ZIF 15.24mm 600mil Socket +0 +24 +24 +Socket +DIP_Socket-28_W6.9_W7.62_W10.16_W12.7_W13.5_3M_228-4817-00-0602J +3M 28-pin zero insertion force socket, through-hole, row spacing 10.16 mm (400 mils), http://multimedia.3m.com/mws/media/494546O/3mtm-dip-sockets-100-2-54-mm-ts0365.pdf +THT DIP DIL ZIF 10.16mm 400mil Socket +0 +28 +28 +Socket +DIP_Socket-28_W11.9_W12.7_W15.24_W17.78_W18.5_3M_228-1277-00-0602J +3M 28-pin zero insertion force socket, through-hole, row spacing 15.24 mm (600 mils), http://multimedia.3m.com/mws/media/494546O/3mtm-dip-sockets-100-2-54-mm-ts0365.pdf +THT DIP DIL ZIF 15.24mm 600mil Socket +0 +28 +28 +Socket +DIP_Socket-32_W11.9_W12.7_W15.24_W17.78_W18.5_3M_232-1285-00-0602J +3M 32-pin zero insertion force socket, through-hole, row spacing 15.24 mm (600 mils), http://multimedia.3m.com/mws/media/494546O/3mtm-dip-sockets-100-2-54-mm-ts0365.pdf +THT DIP DIL ZIF 15.24mm 600mil Socket +0 +32 +32 +Socket +DIP_Socket-40_W11.9_W12.7_W15.24_W17.78_W18.5_3M_240-1280-00-0602J +3M 40-pin zero insertion force socket, through-hole, row spacing 15.24 mm (600 mils), http://multimedia.3m.com/mws/media/494546O/3mtm-dip-sockets-100-2-54-mm-ts0365.pdf +THT DIP DIL ZIF 15.24mm 600mil Socket +0 +40 +40 +Socket +DIP_Socket-40_W22.1_W22.86_W25.4_W27.94_W28.7_3M_240-3639-00-0602J +3M 40-pin zero insertion force socket, through-hole, row spacing 25.4 mm (1000 mils), http://multimedia.3m.com/mws/media/494546O/3mtm-dip-sockets-100-2-54-mm-ts0365.pdf +THT DIP DIL ZIF 25.4mm 1000mil Socket +0 +40 +40 +Socket +DIP_Socket-42_W11.9_W12.7_W15.24_W17.78_W18.5_3M_242-1281-00-0602J +3M 42-pin zero insertion force socket, through-hole, row spacing 15.24 mm (600 mils), http://multimedia.3m.com/mws/media/494546O/3mtm-dip-sockets-100-2-54-mm-ts0365.pdf +THT DIP DIL ZIF 15.24mm 600mil Socket +0 +42 +42 +Socket +Wells_648-0482211SA01 +https://www.farnell.com/cad/316865.pdf?_ga=2.37208032.177107060.1530611323-249019997.1498114824 +48pin TSOP Socket +0 +48 +48 +Symbol +CE-Logo_8.5x6mm_SilkScreen +CE marking +Logo CE certification +0 +0 +0 +Symbol +CE-Logo_11.2x8mm_SilkScreen +CE marking +Logo CE certification +0 +0 +0 +Symbol +CE-Logo_16.8x12mm_SilkScreen +CE marking +Logo CE certification +0 +0 +0 +Symbol +CE-Logo_28x20mm_SilkScreen +CE marking +Logo CE certification +0 +0 +0 +Symbol +CE-Logo_42x30mm_SilkScreen +CE marking +Logo CE certification +0 +0 +0 +Symbol +CE-Logo_56.1x40mm_SilkScreen +CE marking +Logo CE certification +0 +0 +0 +Symbol +ESD-Logo_6.6x6mm_SilkScreen +Electrostatic discharge Logo +Logo ESD +0 +0 +0 +Symbol +ESD-Logo_8.9x8mm_SilkScreen +Electrostatic discharge Logo +Logo ESD +0 +0 +0 +Symbol +ESD-Logo_13.2x12mm_SilkScreen +Electrostatic discharge Logo +Logo ESD +0 +0 +0 +Symbol +ESD-Logo_22x20mm_SilkScreen +Electrostatic discharge Logo +Logo ESD +0 +0 +0 +Symbol +ESD-Logo_33x30mm_SilkScreen +Electrostatic discharge Logo +Logo ESD +0 +0 +0 +Symbol +ESD-Logo_44.1x40mm_SilkScreen +Electrostatic discharge Logo +Logo ESD +0 +0 +0 +Symbol +FCC-Logo_7.3x6mm_SilkScreen +FCC marking +Logo FCC certification +0 +0 +0 +Symbol +FCC-Logo_9.6x8mm_SilkScreen +FCC marking +Logo FCC certification +0 +0 +0 +Symbol +FCC-Logo_14.6x12mm_SilkScreen +FCC marking +Logo FCC certification +0 +0 +0 +Symbol +FCC-Logo_24.2x20mm_SilkScreen +FCC marking +Logo FCC certification +0 +0 +0 +Symbol +FCC-Logo_36.3x30mm_SilkScreen +FCC marking +Logo FCC certification +0 +0 +0 +Symbol +FCC-Logo_48.3x40mm_SilkScreen +FCC marking +Logo FCC certification +0 +0 +0 +Symbol +KiCad-Logo2_5mm_Copper +KiCad Logo +Logo KiCad +0 +0 +0 +Symbol +KiCad-Logo2_5mm_SilkScreen +KiCad Logo +Logo KiCad +0 +0 +0 +Symbol +KiCad-Logo2_6mm_Copper +KiCad Logo +Logo KiCad +0 +0 +0 +Symbol +KiCad-Logo2_6mm_SilkScreen +KiCad Logo +Logo KiCad +0 +0 +0 +Symbol +KiCad-Logo2_8mm_Copper +KiCad Logo +Logo KiCad +0 +0 +0 +Symbol +KiCad-Logo2_8mm_SilkScreen +KiCad Logo +Logo KiCad +0 +0 +0 +Symbol +KiCad-Logo2_12mm_Copper +KiCad Logo +Logo KiCad +0 +0 +0 +Symbol +KiCad-Logo2_12mm_SilkScreen +KiCad Logo +Logo KiCad +0 +0 +0 +Symbol +KiCad-Logo2_20mm_Copper +KiCad Logo +Logo KiCad +0 +0 +0 +Symbol +KiCad-Logo2_20mm_SilkScreen +KiCad Logo +Logo KiCad +0 +0 +0 +Symbol +KiCad-Logo2_30mm_Copper +KiCad Logo +Logo KiCad +0 +0 +0 +Symbol +KiCad-Logo2_30mm_SilkScreen +KiCad Logo +Logo KiCad +0 +0 +0 +Symbol +KiCad-Logo2_40mm_Copper +KiCad Logo +Logo KiCad +0 +0 +0 +Symbol +KiCad-Logo2_40mm_SilkScreen +KiCad Logo +Logo KiCad +0 +0 +0 +Symbol +KiCad-Logo_5mm_Copper +KiCad Logo +Logo KiCad +0 +0 +0 +Symbol +KiCad-Logo_5mm_SilkScreen +KiCad Logo +Logo KiCad +0 +0 +0 +Symbol +KiCad-Logo_6mm_Copper +KiCad Logo +Logo KiCad +0 +0 +0 +Symbol +KiCad-Logo_6mm_SilkScreen +KiCad Logo +Logo KiCad +0 +0 +0 +Symbol +KiCad-Logo_8mm_Copper +KiCad Logo +Logo KiCad +0 +0 +0 +Symbol +KiCad-Logo_8mm_SilkScreen +KiCad Logo +Logo KiCad +0 +0 +0 +Symbol +KiCad-Logo_12mm_Copper +KiCad Logo +Logo KiCad +0 +0 +0 +Symbol +KiCad-Logo_12mm_SilkScreen +KiCad Logo +Logo KiCad +0 +0 +0 +Symbol +KiCad-Logo_20mm_Copper +KiCad Logo +Logo KiCad +0 +0 +0 +Symbol +KiCad-Logo_20mm_SilkScreen +KiCad Logo +Logo KiCad +0 +0 +0 +Symbol +KiCad-Logo_30mm_Copper +KiCad Logo +Logo KiCad +0 +0 +0 +Symbol +KiCad-Logo_30mm_SilkScreen +KiCad Logo +Logo KiCad +0 +0 +0 +Symbol +KiCad-Logo_40mm_Copper +KiCad Logo +Logo KiCad +0 +0 +0 +Symbol +KiCad-Logo_40mm_SilkScreen +KiCad Logo +Logo KiCad +0 +0 +0 +Symbol +OSHW-Logo2_7.3x6mm_Copper +Open Source Hardware Symbol +Logo Symbol OSHW +0 +0 +0 +Symbol +OSHW-Logo2_7.3x6mm_SilkScreen +Open Source Hardware Symbol +Logo Symbol OSHW +0 +0 +0 +Symbol +OSHW-Logo2_9.8x8mm_Copper +Open Source Hardware Symbol +Logo Symbol OSHW +0 +0 +0 +Symbol +OSHW-Logo2_9.8x8mm_SilkScreen +Open Source Hardware Symbol +Logo Symbol OSHW +0 +0 +0 +Symbol +OSHW-Logo2_14.6x12mm_Copper +Open Source Hardware Symbol +Logo Symbol OSHW +0 +0 +0 +Symbol +OSHW-Logo2_14.6x12mm_SilkScreen +Open Source Hardware Symbol +Logo Symbol OSHW +0 +0 +0 +Symbol +OSHW-Logo2_24.3x20mm_Copper +Open Source Hardware Symbol +Logo Symbol OSHW +0 +0 +0 +Symbol +OSHW-Logo2_24.3x20mm_SilkScreen +Open Source Hardware Symbol +Logo Symbol OSHW +0 +0 +0 +Symbol +OSHW-Logo2_36.5x30mm_Copper +Open Source Hardware Symbol +Logo Symbol OSHW +0 +0 +0 +Symbol +OSHW-Logo2_36.5x30mm_SilkScreen +Open Source Hardware Symbol +Logo Symbol OSHW +0 +0 +0 +Symbol +OSHW-Logo2_48.7x40mm_Copper +Open Source Hardware Symbol +Logo Symbol OSHW +0 +0 +0 +Symbol +OSHW-Logo2_48.7x40mm_SilkScreen +Open Source Hardware Symbol +Logo Symbol OSHW +0 +0 +0 +Symbol +OSHW-Logo_5.7x6mm_Copper +Open Source Hardware Logo +Logo OSHW +0 +0 +0 +Symbol +OSHW-Logo_5.7x6mm_SilkScreen +Open Source Hardware Logo +Logo OSHW +0 +0 +0 +Symbol +OSHW-Logo_7.5x8mm_Copper +Open Source Hardware Logo +Logo OSHW +0 +0 +0 +Symbol +OSHW-Logo_7.5x8mm_SilkScreen +Open Source Hardware Logo +Logo OSHW +0 +0 +0 +Symbol +OSHW-Logo_11.4x12mm_Copper +Open Source Hardware Logo +Logo OSHW +0 +0 +0 +Symbol +OSHW-Logo_11.4x12mm_SilkScreen +Open Source Hardware Logo +Logo OSHW +0 +0 +0 +Symbol +OSHW-Logo_19x20mm_Copper +Open Source Hardware Logo +Logo OSHW +0 +0 +0 +Symbol +OSHW-Logo_19x20mm_SilkScreen +Open Source Hardware Logo +Logo OSHW +0 +0 +0 +Symbol +OSHW-Logo_28.5x30mm_Copper +Open Source Hardware Logo +Logo OSHW +0 +0 +0 +Symbol +OSHW-Logo_28.5x30mm_SilkScreen +Open Source Hardware Logo +Logo OSHW +0 +0 +0 +Symbol +OSHW-Logo_38.1x40mm_Copper +Open Source Hardware Logo +Logo OSHW +0 +0 +0 +Symbol +OSHW-Logo_38.1x40mm_SilkScreen +Open Source Hardware Logo +Logo OSHW +0 +0 +0 +Symbol +OSHW-Symbol_6.7x6mm_Copper +Open Source Hardware Symbol +Logo Symbol OSHW +0 +0 +0 +Symbol +OSHW-Symbol_6.7x6mm_SilkScreen +Open Source Hardware Symbol +Logo Symbol OSHW +0 +0 +0 +Symbol +OSHW-Symbol_8.9x8mm_Copper +Open Source Hardware Symbol +Logo Symbol OSHW +0 +0 +0 +Symbol +OSHW-Symbol_8.9x8mm_SilkScreen +Open Source Hardware Symbol +Logo Symbol OSHW +0 +0 +0 +Symbol +OSHW-Symbol_13.4x12mm_Copper +Open Source Hardware Symbol +Logo Symbol OSHW +0 +0 +0 +Symbol +OSHW-Symbol_13.4x12mm_SilkScreen +Open Source Hardware Symbol +Logo Symbol OSHW +0 +0 +0 +Symbol +OSHW-Symbol_22.3x20mm_Copper +Open Source Hardware Symbol +Logo Symbol OSHW +0 +0 +0 +Symbol +OSHW-Symbol_22.3x20mm_SilkScreen +Open Source Hardware Symbol +Logo Symbol OSHW +0 +0 +0 +Symbol +OSHW-Symbol_33.5x30mm_Copper +Open Source Hardware Symbol +Logo Symbol OSHW +0 +0 +0 +Symbol +OSHW-Symbol_33.5x30mm_SilkScreen +Open Source Hardware Symbol +Logo Symbol OSHW +0 +0 +0 +Symbol +OSHW-Symbol_44.5x40mm_Copper +Open Source Hardware Symbol +Logo Symbol OSHW +0 +0 +0 +Symbol +OSHW-Symbol_44.5x40mm_SilkScreen +Open Source Hardware Symbol +Logo Symbol OSHW +0 +0 +0 +Symbol +Polarity_Center_Negative_6mm_SilkScreen +Polarity Logo, Center Negative +Logo Polarity Center Negative +0 +0 +0 +Symbol +Polarity_Center_Negative_8mm_SilkScreen +Polarity Logo, Center Negative +Logo Polarity Center Negative +0 +0 +0 +Symbol +Polarity_Center_Negative_12mm_SilkScreen +Polarity Logo, Center Negative +Logo Polarity Center Negative +0 +0 +0 +Symbol +Polarity_Center_Negative_20mm_SilkScreen +Polarity Logo, Center Negative +Logo Polarity Center Negative +0 +0 +0 +Symbol +Polarity_Center_Negative_30mm_SilkScreen +Polarity Logo, Center Negative +Logo Polarity Center Negative +0 +0 +0 +Symbol +Polarity_Center_Negative_40mm_SilkScreen +Polarity Logo, Center Negative +Logo Polarity Center Negative +0 +0 +0 +Symbol +Polarity_Center_Positive_6mm_SilkScreen +Polarity Logo, Center Positive +Logo Polarity Center Positive +0 +0 +0 +Symbol +Polarity_Center_Positive_8mm_SilkScreen +Polarity Logo, Center Positive +Logo Polarity Center Positive +0 +0 +0 +Symbol +Polarity_Center_Positive_12mm_SilkScreen +Polarity Logo, Center Positive +Logo Polarity Center Positive +0 +0 +0 +Symbol +Polarity_Center_Positive_20mm_SilkScreen +Polarity Logo, Center Positive +Logo Polarity Center Positive +0 +0 +0 +Symbol +Polarity_Center_Positive_30mm_SilkScreen +Polarity Logo, Center Positive +Logo Polarity Center Positive +0 +0 +0 +Symbol +Polarity_Center_Positive_40mm_SilkScreen +Polarity Logo, Center Positive +Logo Polarity Center Positive +0 +0 +0 +Symbol +RoHS-Logo_6mm_SilkScreen +Restriction of Hazardous Substances Directive Logo +Logo RoHS +0 +0 +0 +Symbol +RoHS-Logo_8mm_SilkScreen +Restriction of Hazardous Substances Directive Logo +Logo RoHS +0 +0 +0 +Symbol +RoHS-Logo_12mm_SilkScreen +Restriction of Hazardous Substances Directive Logo +Logo RoHS +0 +0 +0 +Symbol +RoHS-Logo_20mm_SilkScreen +Restriction of Hazardous Substances Directive Logo +Logo RoHS +0 +0 +0 +Symbol +RoHS-Logo_30mm_SilkScreen +Restriction of Hazardous Substances Directive Logo +Logo RoHS +0 +0 +0 +Symbol +RoHS-Logo_40mm_SilkScreen +Restriction of Hazardous Substances Directive Logo +Logo RoHS +0 +0 +0 +Symbol +Symbol_Attention_CopperTop_Big +Symbol, Attention, Copper Top, Big, +Symbol, Attention, Copper Top, Big, +0 +0 +0 +Symbol +Symbol_Attention_CopperTop_Small +Symbol, Attention, Copper Top, Small, +Symbol, Attention, Copper Top, Small, +0 +0 +0 +Symbol +Symbol_Barrel_Polarity +Barrel connector polarity indicator +barrel polarity +0 +0 +0 +Symbol +Symbol_CC-Attribution_CopperTop_Big +Symbol, CC-Attribution, Copper Top, Big, +Symbol, CC-Attribution, Copper Top, Big, +0 +0 +0 +Symbol +Symbol_CC-Attribution_CopperTop_Small +Symbol, CC-Share Alike, Copper Top, Small, +Symbol, CC-Share Alike, Copper Top, Small, +0 +0 +0 +Symbol +Symbol_CC-Noncommercial_CopperTop_Big +Symbol, CC-Noncommercial, Copper Top, Big, +Symbol, CC-Noncommercial, Copper Top, Big, +0 +0 +0 +Symbol +Symbol_CC-Noncommercial_CopperTop_Small +Symbol, CC-Noncommercial Alike, Copper Top, Small, +Symbol, CC-Noncommercial Alike, Copper Top, Small, +0 +0 +0 +Symbol +Symbol_CC-PublicDomain_CopperTop_Big +Symbol, CC-PublicDomain, Copper Top, Big, +Symbol, CC-PublicDomain, Copper Top, Big, +0 +0 +0 +Symbol +Symbol_CC-PublicDomain_CopperTop_Small +Symbol, CC-Public Domain, Copper Top, Small, +Symbol, CC-Public Domain, Copper Top, Small, +0 +0 +0 +Symbol +Symbol_CC-PublicDomain_SilkScreenTop_Big +Symbol, CC-PublicDomain, SilkScreen Top, Big, +Symbol, CC-PublicDomain, SilkScreen Top, Big, +0 +0 +0 +Symbol +Symbol_CC-ShareAlike_CopperTop_Big +Symbol, CC-Share Alike, Copper Top, Big, +Symbol, CC-Share Alike, Copper Top, Big, +0 +0 +0 +Symbol +Symbol_CC-ShareAlike_CopperTop_Small +Symbol, CC-Share Alike, Copper Top, Small, +Symbol, CC-Share Alike, Copper Top, Small, +0 +0 +0 +Symbol +Symbol_CreativeCommonsPublicDomain_CopperTop_Small +Symbol, Creative Commons Public Domain, CopperTop, Small, +Symbol, Creative Commons Public Domain, CopperTop, Small, +0 +0 +0 +Symbol +Symbol_CreativeCommonsPublicDomain_SilkScreenTop_Small +Symbol, Creative Commons Public Domain, SilkScreenTop, Small, +Symbol, Creative Commons Public Domain, SilkScreen Top, Small, +0 +0 +0 +Symbol +Symbol_CreativeCommons_CopperTop_Type1_Big +Symbol, Creative Commons, CopperTop, Type 1, Big, +Symbol, Creative Commons, CopperTop, Type 1, Big, +0 +0 +0 +Symbol +Symbol_CreativeCommons_CopperTop_Type2_Big +Symbol, Creative Commons, CopperTop, Type 2, Big, +Symbol, Creative Commons, CopperTop, Type 2, Big, +0 +0 +0 +Symbol +Symbol_CreativeCommons_CopperTop_Type2_Small +Symbol, Creative Commons, CopperTop, Type 2, Small, +Symbol, Creative Commons, CopperTop, Type 2, Small, +0 +0 +0 +Symbol +Symbol_CreativeCommons_SilkScreenTop_Type2_Big +Symbol, Creative Commons, SilkScreen Top, Type 2, Big, +Symbol, Creative Commons, SilkScreen Top, Type 2, Big, +0 +0 +0 +Symbol +Symbol_Danger_CopperTop_Big +Symbol, Danger, CopperTop, Big, +Symbol, Danger, CopperTop, Big, +0 +0 +0 +Symbol +Symbol_Danger_CopperTop_Small +Symbol, Danger, Copper Top, Small, +Symbol, Danger, Copper Top, Small, +0 +0 +0 +Symbol +Symbol_ESD-Logo-Text_CopperTop + + +0 +0 +0 +Symbol +Symbol_ESD-Logo_CopperTop +ESD-Logo, similar JEDEC-14, without text, ohne Text, Copper Top, +ESD-Logo, similar JEDEC-14, without text, ohne Text, Copper Top, +0 +0 +0 +Symbol +Symbol_GNU-GPL_CopperTop_Big +Symbol, GNU-GPL, Copper Top, Big, +Symbol, GNU-GPL, Copper Top, Big, +0 +0 +0 +Symbol +Symbol_GNU-GPL_CopperTop_Small +Symbol, GNU-GPL, Copper Top, Small, +Symbol, GNU-GPL, Copper Top, Small, +0 +0 +0 +Symbol +Symbol_GNU-Logo_CopperTop +GNU-Logo, GNU-Head, GNU-Kopf, Copper Top, +GNU-Logo, GNU-Head, GNU-Kopf, Copper Top, +0 +0 +0 +Symbol +Symbol_GNU-Logo_SilkscreenTop +GNU-Logo, GNU-Head, GNU-Kopf, Silkscreen, +GNU-Logo, GNU-Head, GNU-Kopf, Silkscreen, +0 +0 +0 +Symbol +Symbol_HighVoltage_Type1_CopperTop_Big +Symbol, HighVoltage, Type1, Copper Top, Big, +Symbol, HighVoltage, Type1, Copper Top, Big, +0 +0 +0 +Symbol +Symbol_HighVoltage_Type2_CopperTop_Big +Symbol, HighVoltage, Type2, Copper Top, Big, +Symbol, HighVoltage, Type2, Copper Top, Big, +0 +0 +0 +Symbol +Symbol_HighVoltage_Type2_CopperTop_VerySmall +Symbol, High Voltage, Type 2, Copper Top, Very Small, +Symbol, High Voltage, Type 2, Copper Top, Very Small, +0 +0 +0 +Symbol +Symbol_Highvoltage_Type1_CopperTop_Small +Symbol, Highvoltage, Type 1, Copper Top, Small, +Symbol, Highvoltage, Type 1, Copper Top, Small, +0 +0 +0 +Symbol +Symbol_Highvoltage_Type2_CopperTop_Small +Symbol, Highvoltage, Type 2, Copper Top, Small, +Symbol, Highvoltage, Type 2, Copper Top, Small, +0 +0 +0 +Symbol +WEEE-Logo_4.2x6mm_SilkScreen +Waste Electrical and Electronic Equipment Directive +Logo WEEE +0 +0 +0 +Symbol +WEEE-Logo_5.6x8mm_SilkScreen +Waste Electrical and Electronic Equipment Directive +Logo WEEE +0 +0 +0 +Symbol +WEEE-Logo_8.4x12mm_SilkScreen +Waste Electrical and Electronic Equipment Directive +Logo WEEE +0 +0 +0 +Symbol +WEEE-Logo_14x20mm_SilkScreen +Waste Electrical and Electronic Equipment Directive +Logo WEEE +0 +0 +0 +Symbol +WEEE-Logo_21x30mm_SilkScreen +Waste Electrical and Electronic Equipment Directive +Logo WEEE +0 +0 +0 +Symbol +WEEE-Logo_28.1x40mm_SilkScreen +Waste Electrical and Electronic Equipment Directive +Logo WEEE +0 +0 +0 +TerminalBlock +TerminalBlock_Altech_AK300-2_P5.00mm +Altech AK300 terminal block, pitch 5.0mm, 45 degree angled, see http://www.mouser.com/ds/2/16/PCBMETRC-24178.pdf +Altech AK300 terminal block pitch 5.0mm +0 +2 +2 +TerminalBlock +TerminalBlock_Altech_AK300-3_P5.00mm +Altech AK300 terminal block, pitch 5.0mm, 45 degree angled, see http://www.mouser.com/ds/2/16/PCBMETRC-24178.pdf +Altech AK300 terminal block pitch 5.0mm +0 +3 +3 +TerminalBlock +TerminalBlock_Altech_AK300-4_P5.00mm +Altech AK300 terminal block, pitch 5.0mm, 45 degree angled, see http://www.mouser.com/ds/2/16/PCBMETRC-24178.pdf +Altech AK300 terminal block pitch 5.0mm +0 +4 +4 +TerminalBlock +TerminalBlock_Wuerth_691311400102_P7.62mm +https://katalog.we-online.de/em/datasheet/6913114001xx.pdf +Wuerth WR-TBL Series 3114 terminal block pitch 7.62mm +0 +2 +2 +TerminalBlock +TerminalBlock_bornier-2_P5.08mm +simple 2-pin terminal block, pitch 5.08mm, revamped version of bornier2 +terminal block bornier2 +0 +2 +2 +TerminalBlock +TerminalBlock_bornier-3_P5.08mm +simple 3-pin terminal block, pitch 5.08mm, revamped version of bornier3 +terminal block bornier3 +0 +3 +3 +TerminalBlock +TerminalBlock_bornier-4_P5.08mm +simple 4-pin terminal block, pitch 5.08mm, revamped version of bornier4 +terminal block bornier4 +0 +4 +4 +TerminalBlock +TerminalBlock_bornier-5_P5.08mm +simple 5-pin terminal block, pitch 5.08mm, revamped version of bornier5 +terminal block bornier5 +0 +5 +5 +TerminalBlock +TerminalBlock_bornier-6_P5.08mm +simple 6pin terminal block, pitch 5.08mm, revamped version of bornier6 +terminal block bornier6 +0 +6 +6 +TerminalBlock_4Ucon +TerminalBlock_4Ucon_1x02_P3.50mm_Horizontal +Terminal Block 4Ucon ItemNo. 19963, 2 pins, pitch 3.5mm, size 7.7x7mm^2, drill diamater 1.2mm, pad diameter 2.4mm, see http://www.4uconnector.com/online/object/4udrawing/19963.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_4Ucon +THT Terminal Block 4Ucon ItemNo. 19963 pitch 3.5mm size 7.7x7mm^2 drill 1.2mm pad 2.4mm +0 +2 +2 +TerminalBlock_4Ucon +TerminalBlock_4Ucon_1x02_P3.50mm_Vertical +Terminal Block 4Ucon ItemNo. 10693, vertical (cable from top), 2 pins, pitch 3.5mm, size 8x8.3mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.4uconnector.com/online/object/4udrawing/10693.pdf, script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_4Ucon +THT Terminal Block 4Ucon ItemNo. 10693 vertical pitch 3.5mm size 8x8.3mm^2 drill 1.3mm pad 2.6mm +0 +2 +2 +TerminalBlock_4Ucon +TerminalBlock_4Ucon_1x03_P3.50mm_Horizontal +Terminal Block 4Ucon ItemNo. 20193, 3 pins, pitch 3.5mm, size 11.2x7mm^2, drill diamater 1.2mm, pad diameter 2.4mm, see http://www.4uconnector.com/online/object/4udrawing/20193.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_4Ucon +THT Terminal Block 4Ucon ItemNo. 20193 pitch 3.5mm size 11.2x7mm^2 drill 1.2mm pad 2.4mm +0 +3 +3 +TerminalBlock_4Ucon +TerminalBlock_4Ucon_1x03_P3.50mm_Vertical +Terminal Block 4Ucon ItemNo. 10694, vertical (cable from top), 3 pins, pitch 3.5mm, size 11.5x8.3mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.4uconnector.com/online/object/4udrawing/10694.pdf, script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_4Ucon +THT Terminal Block 4Ucon ItemNo. 10694 vertical pitch 3.5mm size 11.5x8.3mm^2 drill 1.3mm pad 2.6mm +0 +3 +3 +TerminalBlock_4Ucon +TerminalBlock_4Ucon_1x04_P3.50mm_Horizontal +Terminal Block 4Ucon ItemNo. 20001, 4 pins, pitch 3.5mm, size 14.7x7mm^2, drill diamater 1.2mm, pad diameter 2.4mm, see http://www.4uconnector.com/online/object/4udrawing/20001.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_4Ucon +THT Terminal Block 4Ucon ItemNo. 20001 pitch 3.5mm size 14.7x7mm^2 drill 1.2mm pad 2.4mm +0 +4 +4 +TerminalBlock_4Ucon +TerminalBlock_4Ucon_1x04_P3.50mm_Vertical +Terminal Block 4Ucon ItemNo. 10695, vertical (cable from top), 4 pins, pitch 3.5mm, size 15x8.3mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.4uconnector.com/online/object/4udrawing/10695.pdf, script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_4Ucon +THT Terminal Block 4Ucon ItemNo. 10695 vertical pitch 3.5mm size 15x8.3mm^2 drill 1.3mm pad 2.6mm +0 +4 +4 +TerminalBlock_4Ucon +TerminalBlock_4Ucon_1x05_P3.50mm_Horizontal +Terminal Block 4Ucon ItemNo. 20223, 5 pins, pitch 3.5mm, size 18.2x7mm^2, drill diamater 1.2mm, pad diameter 2.4mm, see http://www.4uconnector.com/online/object/4udrawing/20223.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_4Ucon +THT Terminal Block 4Ucon ItemNo. 20223 pitch 3.5mm size 18.2x7mm^2 drill 1.2mm pad 2.4mm +0 +5 +5 +TerminalBlock_4Ucon +TerminalBlock_4Ucon_1x05_P3.50mm_Vertical +Terminal Block 4Ucon ItemNo. 10696, vertical (cable from top), 5 pins, pitch 3.5mm, size 18.5x8.3mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.4uconnector.com/online/object/4udrawing/10696.pdf, script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_4Ucon +THT Terminal Block 4Ucon ItemNo. 10696 vertical pitch 3.5mm size 18.5x8.3mm^2 drill 1.3mm pad 2.6mm +0 +5 +5 +TerminalBlock_4Ucon +TerminalBlock_4Ucon_1x06_P3.50mm_Horizontal +Terminal Block 4Ucon ItemNo. 19964, 6 pins, pitch 3.5mm, size 21.7x7mm^2, drill diamater 1.2mm, pad diameter 2.4mm, see http://www.4uconnector.com/online/object/4udrawing/19964.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_4Ucon +THT Terminal Block 4Ucon ItemNo. 19964 pitch 3.5mm size 21.7x7mm^2 drill 1.2mm pad 2.4mm +0 +6 +6 +TerminalBlock_4Ucon +TerminalBlock_4Ucon_1x06_P3.50mm_Vertical +Terminal Block 4Ucon ItemNo. 10697, vertical (cable from top), 6 pins, pitch 3.5mm, size 22x8.3mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.4uconnector.com/online/object/4udrawing/10697.pdf, script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_4Ucon +THT Terminal Block 4Ucon ItemNo. 10697 vertical pitch 3.5mm size 22x8.3mm^2 drill 1.3mm pad 2.6mm +0 +6 +6 +TerminalBlock_4Ucon +TerminalBlock_4Ucon_1x07_P3.50mm_Horizontal +Terminal Block 4Ucon ItemNo. 10684, 7 pins, pitch 3.5mm, size 25.2x7mm^2, drill diamater 1.2mm, pad diameter 2.4mm, see http://www.4uconnector.com/online/object/4udrawing/10684.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_4Ucon +THT Terminal Block 4Ucon ItemNo. 10684 pitch 3.5mm size 25.2x7mm^2 drill 1.2mm pad 2.4mm +0 +7 +7 +TerminalBlock_4Ucon +TerminalBlock_4Ucon_1x07_P3.50mm_Vertical +Terminal Block 4Ucon ItemNo. 10698, vertical (cable from top), 7 pins, pitch 3.5mm, size 25.5x8.3mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.4uconnector.com/online/object/4udrawing/10698.pdf, script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_4Ucon +THT Terminal Block 4Ucon ItemNo. 10698 vertical pitch 3.5mm size 25.5x8.3mm^2 drill 1.3mm pad 2.6mm +0 +7 +7 +TerminalBlock_4Ucon +TerminalBlock_4Ucon_1x08_P3.50mm_Horizontal +Terminal Block 4Ucon ItemNo. 19965, 8 pins, pitch 3.5mm, size 28.7x7mm^2, drill diamater 1.2mm, pad diameter 2.4mm, see http://www.4uconnector.com/online/object/4udrawing/19965.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_4Ucon +THT Terminal Block 4Ucon ItemNo. 19965 pitch 3.5mm size 28.7x7mm^2 drill 1.2mm pad 2.4mm +0 +8 +8 +TerminalBlock_4Ucon +TerminalBlock_4Ucon_1x08_P3.50mm_Vertical +Terminal Block 4Ucon ItemNo. 10699, vertical (cable from top), 8 pins, pitch 3.5mm, size 29x8.3mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.4uconnector.com/online/object/4udrawing/10699.pdf, script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_4Ucon +THT Terminal Block 4Ucon ItemNo. 10699 vertical pitch 3.5mm size 29x8.3mm^2 drill 1.3mm pad 2.6mm +0 +8 +8 +TerminalBlock_4Ucon +TerminalBlock_4Ucon_1x09_P3.50mm_Horizontal +Terminal Block 4Ucon ItemNo. 10686, 9 pins, pitch 3.5mm, size 32.2x7mm^2, drill diamater 1.2mm, pad diameter 2.4mm, see http://www.4uconnector.com/online/object/4udrawing/10686.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_4Ucon +THT Terminal Block 4Ucon ItemNo. 10686 pitch 3.5mm size 32.2x7mm^2 drill 1.2mm pad 2.4mm +0 +9 +9 +TerminalBlock_4Ucon +TerminalBlock_4Ucon_1x09_P3.50mm_Vertical +Terminal Block 4Ucon ItemNo. 10700, vertical (cable from top), 9 pins, pitch 3.5mm, size 32.5x8.3mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.4uconnector.com/online/object/4udrawing/10700.pdf, script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_4Ucon +THT Terminal Block 4Ucon ItemNo. 10700 vertical pitch 3.5mm size 32.5x8.3mm^2 drill 1.3mm pad 2.6mm +0 +9 +9 +TerminalBlock_4Ucon +TerminalBlock_4Ucon_1x10_P3.50mm_Horizontal +Terminal Block 4Ucon ItemNo. 10687, 10 pins, pitch 3.5mm, size 35.7x7mm^2, drill diamater 1.2mm, pad diameter 2.4mm, see http://www.4uconnector.com/online/object/4udrawing/10687.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_4Ucon +THT Terminal Block 4Ucon ItemNo. 10687 pitch 3.5mm size 35.7x7mm^2 drill 1.2mm pad 2.4mm +0 +10 +10 +TerminalBlock_4Ucon +TerminalBlock_4Ucon_1x10_P3.50mm_Vertical +Terminal Block 4Ucon ItemNo. 10701, vertical (cable from top), 10 pins, pitch 3.5mm, size 36x8.3mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.4uconnector.com/online/object/4udrawing/10701.pdf, script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_4Ucon +THT Terminal Block 4Ucon ItemNo. 10701 vertical pitch 3.5mm size 36x8.3mm^2 drill 1.3mm pad 2.6mm +0 +10 +10 +TerminalBlock_4Ucon +TerminalBlock_4Ucon_1x11_P3.50mm_Horizontal +Terminal Block 4Ucon ItemNo. 10688, 11 pins, pitch 3.5mm, size 39.2x7mm^2, drill diamater 1.2mm, pad diameter 2.4mm, see http://www.4uconnector.com/online/object/4udrawing/10688.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_4Ucon +THT Terminal Block 4Ucon ItemNo. 10688 pitch 3.5mm size 39.2x7mm^2 drill 1.2mm pad 2.4mm +0 +11 +11 +TerminalBlock_4Ucon +TerminalBlock_4Ucon_1x11_P3.50mm_Vertical +Terminal Block 4Ucon ItemNo. 10702, vertical (cable from top), 11 pins, pitch 3.5mm, size 39.5x8.3mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.4uconnector.com/online/object/4udrawing/10702.pdf, script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_4Ucon +THT Terminal Block 4Ucon ItemNo. 10702 vertical pitch 3.5mm size 39.5x8.3mm^2 drill 1.3mm pad 2.6mm +0 +11 +11 +TerminalBlock_4Ucon +TerminalBlock_4Ucon_1x12_P3.50mm_Horizontal +Terminal Block 4Ucon ItemNo. 10689, 12 pins, pitch 3.5mm, size 42.7x7mm^2, drill diamater 1.2mm, pad diameter 2.4mm, see http://www.4uconnector.com/online/object/4udrawing/10689.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_4Ucon +THT Terminal Block 4Ucon ItemNo. 10689 pitch 3.5mm size 42.7x7mm^2 drill 1.2mm pad 2.4mm +0 +12 +12 +TerminalBlock_4Ucon +TerminalBlock_4Ucon_1x12_P3.50mm_Vertical +Terminal Block 4Ucon ItemNo. 10703, vertical (cable from top), 12 pins, pitch 3.5mm, size 43x8.3mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.4uconnector.com/online/object/4udrawing/10703.pdf, script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_4Ucon +THT Terminal Block 4Ucon ItemNo. 10703 vertical pitch 3.5mm size 43x8.3mm^2 drill 1.3mm pad 2.6mm +0 +12 +12 +TerminalBlock_4Ucon +TerminalBlock_4Ucon_1x13_P3.50mm_Horizontal +Terminal Block 4Ucon ItemNo. 10690, 13 pins, pitch 3.5mm, size 46.2x7mm^2, drill diamater 1.2mm, pad diameter 2.4mm, see http://www.4uconnector.com/online/object/4udrawing/10690.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_4Ucon +THT Terminal Block 4Ucon ItemNo. 10690 pitch 3.5mm size 46.2x7mm^2 drill 1.2mm pad 2.4mm +0 +13 +13 +TerminalBlock_4Ucon +TerminalBlock_4Ucon_1x13_P3.50mm_Vertical +Terminal Block 4Ucon ItemNo. 10704, vertical (cable from top), 13 pins, pitch 3.5mm, size 46.5x8.3mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.4uconnector.com/online/object/4udrawing/10704.pdf, script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_4Ucon +THT Terminal Block 4Ucon ItemNo. 10704 vertical pitch 3.5mm size 46.5x8.3mm^2 drill 1.3mm pad 2.6mm +0 +13 +13 +TerminalBlock_4Ucon +TerminalBlock_4Ucon_1x14_P3.50mm_Horizontal +Terminal Block 4Ucon ItemNo. 10691, 14 pins, pitch 3.5mm, size 49.7x7mm^2, drill diamater 1.2mm, pad diameter 2.4mm, see http://www.4uconnector.com/online/object/4udrawing/10691.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_4Ucon +THT Terminal Block 4Ucon ItemNo. 10691 pitch 3.5mm size 49.7x7mm^2 drill 1.2mm pad 2.4mm +0 +14 +14 +TerminalBlock_4Ucon +TerminalBlock_4Ucon_1x14_P3.50mm_Vertical +Terminal Block 4Ucon ItemNo. 10705, vertical (cable from top), 14 pins, pitch 3.5mm, size 50x8.3mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.4uconnector.com/online/object/4udrawing/10705.pdf, script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_4Ucon +THT Terminal Block 4Ucon ItemNo. 10705 vertical pitch 3.5mm size 50x8.3mm^2 drill 1.3mm pad 2.6mm +0 +14 +14 +TerminalBlock_4Ucon +TerminalBlock_4Ucon_1x15_P3.50mm_Horizontal +Terminal Block 4Ucon ItemNo. 10692, 15 pins, pitch 3.5mm, size 53.2x7mm^2, drill diamater 1.2mm, pad diameter 2.4mm, see http://www.4uconnector.com/online/object/4udrawing/10692.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_4Ucon +THT Terminal Block 4Ucon ItemNo. 10692 pitch 3.5mm size 53.2x7mm^2 drill 1.2mm pad 2.4mm +0 +15 +15 +TerminalBlock_4Ucon +TerminalBlock_4Ucon_1x15_P3.50mm_Vertical +Terminal Block 4Ucon ItemNo. 10706, vertical (cable from top), 15 pins, pitch 3.5mm, size 53.5x8.3mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.4uconnector.com/online/object/4udrawing/10706.pdf, script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_4Ucon +THT Terminal Block 4Ucon ItemNo. 10706 vertical pitch 3.5mm size 53.5x8.3mm^2 drill 1.3mm pad 2.6mm +0 +15 +15 +TerminalBlock_Altech +Altech_AK300_1x02_P5.00mm_45-Degree +Altech AK300 serie terminal block (Script generated with StandardBox.py) (http://www.altechcorp.com/PDFS/PCBMETRC.PDF) +Altech AK300 serie connector +0 +2 +2 +TerminalBlock_Altech +Altech_AK300_1x03_P5.00mm_45-Degree +Altech AK300 serie terminal block (Script generated with StandardBox.py) (http://www.altechcorp.com/PDFS/PCBMETRC.PDF) +Altech AK300 serie connector +0 +3 +3 +TerminalBlock_Altech +Altech_AK300_1x04_P5.00mm_45-Degree +Altech AK300 serie terminal block (Script generated with StandardBox.py) (http://www.altechcorp.com/PDFS/PCBMETRC.PDF) +Altech AK300 serie connector +0 +4 +4 +TerminalBlock_Altech +Altech_AK300_1x05_P5.00mm_45-Degree +Altech AK300 serie terminal block (Script generated with StandardBox.py) (http://www.altechcorp.com/PDFS/PCBMETRC.PDF) +Altech AK300 serie connector +0 +5 +5 +TerminalBlock_Altech +Altech_AK300_1x06_P5.00mm_45-Degree +Altech AK300 serie terminal block (Script generated with StandardBox.py) (http://www.altechcorp.com/PDFS/PCBMETRC.PDF) +Altech AK300 serie connector +0 +6 +6 +TerminalBlock_Altech +Altech_AK300_1x07_P5.00mm_45-Degree +Altech AK300 serie terminal block (Script generated with StandardBox.py) (http://www.altechcorp.com/PDFS/PCBMETRC.PDF) +Altech AK300 serie connector +0 +7 +7 +TerminalBlock_Altech +Altech_AK300_1x08_P5.00mm_45-Degree +Altech AK300 serie terminal block (Script generated with StandardBox.py) (http://www.altechcorp.com/PDFS/PCBMETRC.PDF) +Altech AK300 serie connector +0 +8 +8 +TerminalBlock_Altech +Altech_AK300_1x09_P5.00mm_45-Degree +Altech AK300 serie terminal block (Script generated with StandardBox.py) (http://www.altechcorp.com/PDFS/PCBMETRC.PDF) +Altech AK300 serie connector +0 +9 +9 +TerminalBlock_Altech +Altech_AK300_1x10_P5.00mm_45-Degree +Altech AK300 serie terminal block (Script generated with StandardBox.py) (http://www.altechcorp.com/PDFS/PCBMETRC.PDF) +Altech AK300 serie connector +0 +10 +10 +TerminalBlock_Altech +Altech_AK300_1x11_P5.00mm_45-Degree +Altech AK300 serie terminal block (Script generated with StandardBox.py) (http://www.altechcorp.com/PDFS/PCBMETRC.PDF) +Altech AK300 serie connector +0 +11 +11 +TerminalBlock_Altech +Altech_AK300_1x12_P5.00mm_45-Degree +Altech AK300 serie terminal block (Script generated with StandardBox.py) (http://www.altechcorp.com/PDFS/PCBMETRC.PDF) +Altech AK300 serie connector +0 +12 +12 +TerminalBlock_Altech +Altech_AK300_1x13_P5.00mm_45-Degree +Altech AK300 serie terminal block (Script generated with StandardBox.py) (http://www.altechcorp.com/PDFS/PCBMETRC.PDF) +Altech AK300 serie connector +0 +13 +13 +TerminalBlock_Altech +Altech_AK300_1x14_P5.00mm_45-Degree +Altech AK300 serie terminal block (Script generated with StandardBox.py) (http://www.altechcorp.com/PDFS/PCBMETRC.PDF) +Altech AK300 serie connector +0 +14 +14 +TerminalBlock_Altech +Altech_AK300_1x15_P5.00mm_45-Degree +Altech AK300 serie terminal block (Script generated with StandardBox.py) (http://www.altechcorp.com/PDFS/PCBMETRC.PDF) +Altech AK300 serie connector +0 +15 +15 +TerminalBlock_Altech +Altech_AK300_1x16_P5.00mm_45-Degree +Altech AK300 serie terminal block (Script generated with StandardBox.py) (http://www.altechcorp.com/PDFS/PCBMETRC.PDF) +Altech AK300 serie connector +0 +16 +16 +TerminalBlock_Altech +Altech_AK300_1x17_P5.00mm_45-Degree +Altech AK300 serie terminal block (Script generated with StandardBox.py) (http://www.altechcorp.com/PDFS/PCBMETRC.PDF) +Altech AK300 serie connector +0 +17 +17 +TerminalBlock_Altech +Altech_AK300_1x18_P5.00mm_45-Degree +Altech AK300 serie terminal block (Script generated with StandardBox.py) (http://www.altechcorp.com/PDFS/PCBMETRC.PDF) +Altech AK300 serie connector +0 +18 +18 +TerminalBlock_Altech +Altech_AK300_1x19_P5.00mm_45-Degree +Altech AK300 serie terminal block (Script generated with StandardBox.py) (http://www.altechcorp.com/PDFS/PCBMETRC.PDF) +Altech AK300 serie connector +0 +19 +19 +TerminalBlock_Altech +Altech_AK300_1x20_P5.00mm_45-Degree +Altech AK300 serie terminal block (Script generated with StandardBox.py) (http://www.altechcorp.com/PDFS/PCBMETRC.PDF) +Altech AK300 serie connector +0 +20 +20 +TerminalBlock_Altech +Altech_AK300_1x21_P5.00mm_45-Degree +Altech AK300 serie terminal block (Script generated with StandardBox.py) (http://www.altechcorp.com/PDFS/PCBMETRC.PDF) +Altech AK300 serie connector +0 +21 +21 +TerminalBlock_Altech +Altech_AK300_1x22_P5.00mm_45-Degree +Altech AK300 serie terminal block (Script generated with StandardBox.py) (http://www.altechcorp.com/PDFS/PCBMETRC.PDF) +Altech AK300 serie connector +0 +22 +22 +TerminalBlock_Altech +Altech_AK300_1x23_P5.00mm_45-Degree +Altech AK300 serie terminal block (Script generated with StandardBox.py) (http://www.altechcorp.com/PDFS/PCBMETRC.PDF) +Altech AK300 serie connector +0 +23 +23 +TerminalBlock_Altech +Altech_AK300_1x24_P5.00mm_45-Degree +Altech AK300 serie terminal block (Script generated with StandardBox.py) (http://www.altechcorp.com/PDFS/PCBMETRC.PDF) +Altech AK300 serie connector +0 +24 +24 +TerminalBlock_Dinkle +TerminalBlock_Dinkle_DT-55-B01X-02_P10.00mm +Dinkle DT-55-B01X Terminal Block pitch 10.00mm https://www.dinkle.com/en/terminal/DT-55-B01W-XX +Dinkle DT-55-B01X Terminal Block pitch 10.00mm +0 +2 +2 +TerminalBlock_Dinkle +TerminalBlock_Dinkle_DT-55-B01X-03_P10.00mm +Dinkle DT-55-B01X Terminal Block pitch 10.00mm https://www.dinkle.com/en/terminal/DT-55-B01W-XX +Dinkle DT-55-B01X Terminal Block pitch 10.00mm +0 +3 +3 +TerminalBlock_Dinkle +TerminalBlock_Dinkle_DT-55-B01X-04_P10.00mm +Dinkle DT-55-B01X Terminal Block pitch 10.00mm https://www.dinkle.com/en/terminal/DT-55-B01W-XX +Dinkle DT-55-B01X Terminal Block pitch 10.00mm +0 +4 +4 +TerminalBlock_Dinkle +TerminalBlock_Dinkle_DT-55-B01X-05_P10.00mm +Dinkle DT-55-B01X Terminal Block pitch 10.00mm https://www.dinkle.com/en/terminal/DT-55-B01W-XX +Dinkle DT-55-B01X Terminal Block pitch 10.00mm +0 +5 +5 +TerminalBlock_Dinkle +TerminalBlock_Dinkle_DT-55-B01X-06_P10.00mm +Dinkle DT-55-B01X Terminal Block pitch 10.00mm https://www.dinkle.com/en/terminal/DT-55-B01W-XX +Dinkle DT-55-B01X Terminal Block pitch 10.00mm +0 +6 +6 +TerminalBlock_Dinkle +TerminalBlock_Dinkle_DT-55-B01X-07_P10.00mm +Dinkle DT-55-B01X Terminal Block pitch 10.00mm https://www.dinkle.com/en/terminal/DT-55-B01W-XX +Dinkle DT-55-B01X Terminal Block pitch 10.00mm +0 +7 +7 +TerminalBlock_Dinkle +TerminalBlock_Dinkle_DT-55-B01X-08_P10.00mm +Dinkle DT-55-B01X Terminal Block pitch 10.00mm https://www.dinkle.com/en/terminal/DT-55-B01W-XX +Dinkle DT-55-B01X Terminal Block pitch 10.00mm +0 +8 +8 +TerminalBlock_Dinkle +TerminalBlock_Dinkle_DT-55-B01X-09_P10.00mm +Dinkle DT-55-B01X Terminal Block pitch 10.00mm https://www.dinkle.com/en/terminal/DT-55-B01W-XX +Dinkle DT-55-B01X Terminal Block pitch 10.00mm +0 +9 +9 +TerminalBlock_Dinkle +TerminalBlock_Dinkle_DT-55-B01X-10_P10.00mm +Dinkle DT-55-B01X Terminal Block pitch 10.00mm https://www.dinkle.com/en/terminal/DT-55-B01W-XX +Dinkle DT-55-B01X Terminal Block pitch 10.00mm +0 +10 +10 +TerminalBlock_Dinkle +TerminalBlock_Dinkle_DT-55-B01X-11_P10.00mm +Dinkle DT-55-B01X Terminal Block pitch 10.00mm https://www.dinkle.com/en/terminal/DT-55-B01W-XX +Dinkle DT-55-B01X Terminal Block pitch 10.00mm +0 +11 +11 +TerminalBlock_Dinkle +TerminalBlock_Dinkle_DT-55-B01X-12_P10.00mm +Dinkle DT-55-B01X Terminal Block pitch 10.00mm https://www.dinkle.com/en/terminal/DT-55-B01W-XX +Dinkle DT-55-B01X Terminal Block pitch 10.00mm +0 +12 +12 +TerminalBlock_Dinkle +TerminalBlock_Dinkle_DT-55-B01X-13_P10.00mm +Dinkle DT-55-B01X Terminal Block pitch 10.00mm https://www.dinkle.com/en/terminal/DT-55-B01W-XX +Dinkle DT-55-B01X Terminal Block pitch 10.00mm +0 +13 +13 +TerminalBlock_Dinkle +TerminalBlock_Dinkle_DT-55-B01X-14_P10.00mm +Dinkle DT-55-B01X Terminal Block pitch 10.00mm https://www.dinkle.com/en/terminal/DT-55-B01W-XX +Dinkle DT-55-B01X Terminal Block pitch 10.00mm +0 +14 +14 +TerminalBlock_Dinkle +TerminalBlock_Dinkle_DT-55-B01X-15_P10.00mm +Dinkle DT-55-B01X Terminal Block pitch 10.00mm https://www.dinkle.com/en/terminal/DT-55-B01W-XX +Dinkle DT-55-B01X Terminal Block pitch 10.00mm +0 +15 +15 +TerminalBlock_Dinkle +TerminalBlock_Dinkle_DT-55-B01X-16_P10.00mm +Dinkle DT-55-B01X Terminal Block pitch 10.00mm https://www.dinkle.com/en/terminal/DT-55-B01W-XX +Dinkle DT-55-B01X Terminal Block pitch 10.00mm +0 +16 +16 +TerminalBlock_Dinkle +TerminalBlock_Dinkle_DT-55-B01X-17_P10.00mm +Dinkle DT-55-B01X Terminal Block pitch 10.00mm https://www.dinkle.com/en/terminal/DT-55-B01W-XX +Dinkle DT-55-B01X Terminal Block pitch 10.00mm +0 +17 +17 +TerminalBlock_Dinkle +TerminalBlock_Dinkle_DT-55-B01X-18_P10.00mm +Dinkle DT-55-B01X Terminal Block pitch 10.00mm https://www.dinkle.com/en/terminal/DT-55-B01W-XX +Dinkle DT-55-B01X Terminal Block pitch 10.00mm +0 +18 +18 +TerminalBlock_Dinkle +TerminalBlock_Dinkle_DT-55-B01X-19_P10.00mm +Dinkle DT-55-B01X Terminal Block pitch 10.00mm https://www.dinkle.com/en/terminal/DT-55-B01W-XX +Dinkle DT-55-B01X Terminal Block pitch 10.00mm +0 +19 +19 +TerminalBlock_Dinkle +TerminalBlock_Dinkle_DT-55-B01X-20_P10.00mm +Dinkle DT-55-B01X Terminal Block pitch 10.00mm https://www.dinkle.com/en/terminal/DT-55-B01W-XX +Dinkle DT-55-B01X Terminal Block pitch 10.00mm +0 +20 +20 +TerminalBlock_Dinkle +TerminalBlock_Dinkle_DT-55-B01X-21_P10.00mm +Dinkle DT-55-B01X Terminal Block pitch 10.00mm https://www.dinkle.com/en/terminal/DT-55-B01W-XX +Dinkle DT-55-B01X Terminal Block pitch 10.00mm +0 +21 +21 +TerminalBlock_Dinkle +TerminalBlock_Dinkle_DT-55-B01X-22_P10.00mm +Dinkle DT-55-B01X Terminal Block pitch 10.00mm https://www.dinkle.com/en/terminal/DT-55-B01W-XX +Dinkle DT-55-B01X Terminal Block pitch 10.00mm +0 +22 +22 +TerminalBlock_Dinkle +TerminalBlock_Dinkle_DT-55-B01X-23_P10.00mm +Dinkle DT-55-B01X Terminal Block pitch 10.00mm https://www.dinkle.com/en/terminal/DT-55-B01W-XX +Dinkle DT-55-B01X Terminal Block pitch 10.00mm +0 +23 +23 +TerminalBlock_Dinkle +TerminalBlock_Dinkle_DT-55-B01X-24_P10.00mm +Dinkle DT-55-B01X Terminal Block pitch 10.00mm https://www.dinkle.com/en/terminal/DT-55-B01W-XX +Dinkle DT-55-B01X Terminal Block pitch 10.00mm +0 +24 +24 +TerminalBlock_Dinkle +TerminalBlock_Dinkle_DT-55-B01X-25_P10.00mm +Dinkle DT-55-B01X Terminal Block pitch 10.00mm https://www.dinkle.com/en/terminal/DT-55-B01W-XX +Dinkle DT-55-B01X Terminal Block pitch 10.00mm +0 +25 +25 +TerminalBlock_Dinkle +TerminalBlock_Dinkle_DT-55-B01X-26_P10.00mm +Dinkle DT-55-B01X Terminal Block pitch 10.00mm https://www.dinkle.com/en/terminal/DT-55-B01W-XX +Dinkle DT-55-B01X Terminal Block pitch 10.00mm +0 +26 +26 +TerminalBlock_Dinkle +TerminalBlock_Dinkle_DT-55-B01X-27_P10.00mm +Dinkle DT-55-B01X Terminal Block pitch 10.00mm https://www.dinkle.com/en/terminal/DT-55-B01W-XX +Dinkle DT-55-B01X Terminal Block pitch 10.00mm +0 +27 +27 +TerminalBlock_Dinkle +TerminalBlock_Dinkle_DT-55-B01X-28_P10.00mm +Dinkle DT-55-B01X Terminal Block pitch 10.00mm https://www.dinkle.com/en/terminal/DT-55-B01W-XX +Dinkle DT-55-B01X Terminal Block pitch 10.00mm +0 +28 +28 +TerminalBlock_Dinkle +TerminalBlock_Dinkle_DT-55-B01X-29_P10.00mm +Dinkle DT-55-B01X Terminal Block pitch 10.00mm https://www.dinkle.com/en/terminal/DT-55-B01W-XX +Dinkle DT-55-B01X Terminal Block pitch 10.00mm +0 +29 +29 +TerminalBlock_Dinkle +TerminalBlock_Dinkle_DT-55-B01X-30_P10.00mm +Dinkle DT-55-B01X Terminal Block pitch 10.00mm https://www.dinkle.com/en/terminal/DT-55-B01W-XX +Dinkle DT-55-B01X Terminal Block pitch 10.00mm +0 +30 +30 +TerminalBlock_MetzConnect +TerminalBlock_MetzConnect_360271_1x01_Horizontal_ScrewM3.0_Boxed +single screw terminal block Metz Connect 360271, block size 9x7.3mm^2, drill diamater 1.5mm, 1 pads, pad diameter 3mm, see http://www.metz-connect.com/de/system/files/METZ_CONNECT_U_Contact_Katalog_Anschlusssysteme_fuer_Leiterplatten_DE_31_07_2017_OFF_024803.pdf?language=en page 134, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_MetzConnect +THT single screw terminal block Metz Connect 360271 size 9x7.3mm^2 drill 1.5mm pad 3mm +0 +1 +1 +TerminalBlock_MetzConnect +TerminalBlock_MetzConnect_360272_1x01_Horizontal_ScrewM2.6 +single screw terminal block Metz Connect 360272, block size 4x4mm^2, drill diamater 1.5mm, 2 pads, pad diameter 3mm, see http://www.metz-connect.com/de/system/files/METZ_CONNECT_U_Contact_Katalog_Anschlusssysteme_fuer_Leiterplatten_DE_31_07_2017_OFF_024803.pdf?language=en page 131, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_MetzConnect +THT single screw terminal block Metz Connect 360272 size 4x4mm^2 drill 1.5mm pad 3mm +0 +2 +1 +TerminalBlock_MetzConnect +TerminalBlock_MetzConnect_360273_1x01_Horizontal_ScrewM2.6_WireProtection +single screw terminal block Metz Connect 360273, block size 5x4mm^2, drill diamater 1.5mm, 2 pads, pad diameter 3mm, see http://www.metz-connect.com/de/system/files/METZ_CONNECT_U_Contact_Katalog_Anschlusssysteme_fuer_Leiterplatten_DE_31_07_2017_OFF_024803.pdf?language=en page 131, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_MetzConnect +THT single screw terminal block Metz Connect 360273 size 5x4mm^2 drill 1.5mm pad 3mm +0 +2 +1 +TerminalBlock_MetzConnect +TerminalBlock_MetzConnect_360291_1x01_Horizontal_ScrewM3.0_Boxed +single screw terminal block Metz Connect 360291, block size 9x7.3mm^2, drill diamater 1.5mm, 2 pads, pad diameter 3mm, see http://www.metz-connect.com/de/system/files/METZ_CONNECT_U_Contact_Katalog_Anschlusssysteme_fuer_Leiterplatten_DE_31_07_2017_OFF_024803.pdf?language=en page 133, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_MetzConnect +THT single screw terminal block Metz Connect 360291 size 9x7.3mm^2 drill 1.5mm pad 3mm +0 +2 +1 +TerminalBlock_MetzConnect +TerminalBlock_MetzConnect_360322_1x01_Horizontal_ScrewM3.0_WireProtection +single screw terminal block Metz Connect 360322, block size 6x4mm^2, drill diamater 1.5mm, 2 pads, pad diameter 3mm, see http://www.metz-connect.com/de/system/files/METZ_CONNECT_U_Contact_Katalog_Anschlusssysteme_fuer_Leiterplatten_DE_31_07_2017_OFF_024803.pdf?language=en page 133, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_MetzConnect +THT single screw terminal block Metz Connect 360322 size 6x4mm^2 drill 1.5mm pad 3mm +0 +2 +1 +TerminalBlock_MetzConnect +TerminalBlock_MetzConnect_360381_1x01_Horizontal_ScrewM3.0 +single screw terminal block Metz Connect 360381, block size 5x5mm^2, drill diamater 1.5mm, 2 pads, pad diameter 3mm, see http://www.metz-connect.com/de/system/files/METZ_CONNECT_U_Contact_Katalog_Anschlusssysteme_fuer_Leiterplatten_DE_31_07_2017_OFF_024803.pdf?language=en page 133, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_MetzConnect +THT single screw terminal block Metz Connect 360381 size 5x5mm^2 drill 1.5mm pad 3mm +0 +2 +1 +TerminalBlock_MetzConnect +TerminalBlock_MetzConnect_360410_1x01_Horizontal_ScrewM3.0 +single screw terminal block Metz Connect 360410, block size 5x5mm^2, drill diamater 1.5mm, 2 pads, pad diameter 3mm, see http://www.metz-connect.com/de/system/files/METZ_CONNECT_U_Contact_Katalog_Anschlusssysteme_fuer_Leiterplatten_DE_31_07_2017_OFF_024803.pdf?language=en page 132, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_MetzConnect +THT single screw terminal block Metz Connect 360410 size 5x5mm^2 drill 1.5mm pad 3mm +0 +2 +1 +TerminalBlock_MetzConnect +TerminalBlock_MetzConnect_360425_1x01_Horizontal_ScrewM4.0_Boxed +single screw terminal block Metz Connect 360425, block size 9x9mm^2, drill diamater 1.6mm, 4 pads, pad diameter 3.2mm, see http://www.metz-connect.com/de/system/files/METZ_CONNECT_U_Contact_Katalog_Anschlusssysteme_fuer_Leiterplatten_DE_31_07_2017_OFF_024803.pdf?language=en page 134, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_MetzConnect +THT single screw terminal block Metz Connect 360425 size 9x9mm^2 drill 1.6mm pad 3.2mm +0 +4 +1 +TerminalBlock_MetzConnect +TerminalBlock_MetzConnect_Type011_RT05502HBWC_1x02_P5.00mm_Horizontal +terminal block Metz Connect Type011_RT05502HBWC, 2 pins, pitch 5mm, size 10x10.5mm^2, drill diamater 1.4mm, pad diameter 2.8mm, see http://www.metz-connect.com/de/system/files/productfiles/Datenblatt_310111_RT055xxHBLC_OFF-022717S.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_MetzConnect +THT terminal block Metz Connect Type011_RT05502HBWC pitch 5mm size 10x10.5mm^2 drill 1.4mm pad 2.8mm +0 +2 +2 +TerminalBlock_MetzConnect +TerminalBlock_MetzConnect_Type011_RT05503HBWC_1x03_P5.00mm_Horizontal +terminal block Metz Connect Type011_RT05503HBWC, 3 pins, pitch 5mm, size 15x10.5mm^2, drill diamater 1.4mm, pad diameter 2.8mm, see http://www.metz-connect.com/de/system/files/productfiles/Datenblatt_310111_RT055xxHBLC_OFF-022717S.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_MetzConnect +THT terminal block Metz Connect Type011_RT05503HBWC pitch 5mm size 15x10.5mm^2 drill 1.4mm pad 2.8mm +0 +3 +3 +TerminalBlock_MetzConnect +TerminalBlock_MetzConnect_Type011_RT05504HBWC_1x04_P5.00mm_Horizontal +terminal block Metz Connect Type011_RT05504HBWC, 4 pins, pitch 5mm, size 20x10.5mm^2, drill diamater 1.4mm, pad diameter 2.8mm, see http://www.metz-connect.com/de/system/files/productfiles/Datenblatt_310111_RT055xxHBLC_OFF-022717S.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_MetzConnect +THT terminal block Metz Connect Type011_RT05504HBWC pitch 5mm size 20x10.5mm^2 drill 1.4mm pad 2.8mm +0 +4 +4 +TerminalBlock_MetzConnect +TerminalBlock_MetzConnect_Type011_RT05505HBWC_1x05_P5.00mm_Horizontal +terminal block Metz Connect Type011_RT05505HBWC, 5 pins, pitch 5mm, size 25x10.5mm^2, drill diamater 1.4mm, pad diameter 2.8mm, see http://www.metz-connect.com/de/system/files/productfiles/Datenblatt_310111_RT055xxHBLC_OFF-022717S.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_MetzConnect +THT terminal block Metz Connect Type011_RT05505HBWC pitch 5mm size 25x10.5mm^2 drill 1.4mm pad 2.8mm +0 +5 +5 +TerminalBlock_MetzConnect +TerminalBlock_MetzConnect_Type011_RT05506HBWC_1x06_P5.00mm_Horizontal +terminal block Metz Connect Type011_RT05506HBWC, 6 pins, pitch 5mm, size 30x10.5mm^2, drill diamater 1.4mm, pad diameter 2.8mm, see http://www.metz-connect.com/de/system/files/productfiles/Datenblatt_310111_RT055xxHBLC_OFF-022717S.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_MetzConnect +THT terminal block Metz Connect Type011_RT05506HBWC pitch 5mm size 30x10.5mm^2 drill 1.4mm pad 2.8mm +0 +6 +6 +TerminalBlock_MetzConnect +TerminalBlock_MetzConnect_Type055_RT01502HDWU_1x02_P5.00mm_Horizontal +terminal block Metz Connect Type055_RT01502HDWU, 2 pins, pitch 5mm, size 10x8mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://www.metz-connect.com/de/system/files/productfiles/Datenblatt_310551_RT015xxHDWU_OFF-022723S.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_MetzConnect +THT terminal block Metz Connect Type055_RT01502HDWU pitch 5mm size 10x8mm^2 drill 1.3mm pad 2.5mm +0 +2 +2 +TerminalBlock_MetzConnect +TerminalBlock_MetzConnect_Type055_RT01503HDWU_1x03_P5.00mm_Horizontal +terminal block Metz Connect Type055_RT01503HDWU, 3 pins, pitch 5mm, size 15x8mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://www.metz-connect.com/de/system/files/productfiles/Datenblatt_310551_RT015xxHDWU_OFF-022723S.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_MetzConnect +THT terminal block Metz Connect Type055_RT01503HDWU pitch 5mm size 15x8mm^2 drill 1.3mm pad 2.5mm +0 +3 +3 +TerminalBlock_MetzConnect +TerminalBlock_MetzConnect_Type055_RT01504HDWU_1x04_P5.00mm_Horizontal +terminal block Metz Connect Type055_RT01504HDWU, 4 pins, pitch 5mm, size 20x8mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://www.metz-connect.com/de/system/files/productfiles/Datenblatt_310551_RT015xxHDWU_OFF-022723S.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_MetzConnect +THT terminal block Metz Connect Type055_RT01504HDWU pitch 5mm size 20x8mm^2 drill 1.3mm pad 2.5mm +0 +4 +4 +TerminalBlock_MetzConnect +TerminalBlock_MetzConnect_Type059_RT06302HBWC_1x02_P3.50mm_Horizontal +terminal block Metz Connect Type059_RT06302HBWC, 2 pins, pitch 3.5mm, size 7x6.5mm^2, drill diamater 1.2mm, pad diameter 2.3mm, see http://www.metz-connect.com/de/system/files/productfiles/Datenblatt_310591_RT063xxHBWC_OFF-022684T.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_MetzConnect +THT terminal block Metz Connect Type059_RT06302HBWC pitch 3.5mm size 7x6.5mm^2 drill 1.2mm pad 2.3mm +0 +2 +2 +TerminalBlock_MetzConnect +TerminalBlock_MetzConnect_Type059_RT06303HBWC_1x03_P3.50mm_Horizontal +terminal block Metz Connect Type059_RT06303HBWC, 3 pins, pitch 3.5mm, size 10.5x6.5mm^2, drill diamater 1.2mm, pad diameter 2.3mm, see http://www.metz-connect.com/de/system/files/productfiles/Datenblatt_310591_RT063xxHBWC_OFF-022684T.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_MetzConnect +THT terminal block Metz Connect Type059_RT06303HBWC pitch 3.5mm size 10.5x6.5mm^2 drill 1.2mm pad 2.3mm +0 +3 +3 +TerminalBlock_MetzConnect +TerminalBlock_MetzConnect_Type059_RT06304HBWC_1x04_P3.50mm_Horizontal +terminal block Metz Connect Type059_RT06304HBWC, 4 pins, pitch 3.5mm, size 14x6.5mm^2, drill diamater 1.2mm, pad diameter 2.3mm, see http://www.metz-connect.com/de/system/files/productfiles/Datenblatt_310591_RT063xxHBWC_OFF-022684T.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_MetzConnect +THT terminal block Metz Connect Type059_RT06304HBWC pitch 3.5mm size 14x6.5mm^2 drill 1.2mm pad 2.3mm +0 +4 +4 +TerminalBlock_MetzConnect +TerminalBlock_MetzConnect_Type059_RT06305HBWC_1x05_P3.50mm_Horizontal +terminal block Metz Connect Type059_RT06305HBWC, 5 pins, pitch 3.5mm, size 17.5x6.5mm^2, drill diamater 1.2mm, pad diameter 2.3mm, see http://www.metz-connect.com/de/system/files/productfiles/Datenblatt_310591_RT063xxHBWC_OFF-022684T.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_MetzConnect +THT terminal block Metz Connect Type059_RT06305HBWC pitch 3.5mm size 17.5x6.5mm^2 drill 1.2mm pad 2.3mm +0 +5 +5 +TerminalBlock_MetzConnect +TerminalBlock_MetzConnect_Type059_RT06306HBWC_1x06_P3.50mm_Horizontal +terminal block Metz Connect Type059_RT06306HBWC, 6 pins, pitch 3.5mm, size 21x6.5mm^2, drill diamater 1.2mm, pad diameter 2.3mm, see http://www.metz-connect.com/de/system/files/productfiles/Datenblatt_310591_RT063xxHBWC_OFF-022684T.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_MetzConnect +THT terminal block Metz Connect Type059_RT06306HBWC pitch 3.5mm size 21x6.5mm^2 drill 1.2mm pad 2.3mm +0 +6 +6 +TerminalBlock_MetzConnect +TerminalBlock_MetzConnect_Type067_RT01902HDWC_1x02_P10.00mm_Horizontal +terminal block Metz Connect Type067_RT01902HDWC, 2 pins, pitch 10mm, size 15.8x8.2mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.metz-connect.com/de/system/files/productfiles/Datenblatt_310671_RT019xxHDWC_OFF-023605N.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_MetzConnect +THT terminal block Metz Connect Type067_RT01902HDWC pitch 10mm size 15.8x8.2mm^2 drill 1.3mm pad 2.6mm +0 +2 +2 +TerminalBlock_MetzConnect +TerminalBlock_MetzConnect_Type067_RT01903HDWC_1x03_P10.00mm_Horizontal +terminal block Metz Connect Type067_RT01903HDWC, 3 pins, pitch 10mm, size 25.8x8.2mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.metz-connect.com/de/system/files/productfiles/Datenblatt_310671_RT019xxHDWC_OFF-023605N.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_MetzConnect +THT terminal block Metz Connect Type067_RT01903HDWC pitch 10mm size 25.8x8.2mm^2 drill 1.3mm pad 2.6mm +0 +3 +3 +TerminalBlock_MetzConnect +TerminalBlock_MetzConnect_Type067_RT01904HDWC_1x04_P10.00mm_Horizontal +terminal block Metz Connect Type067_RT01904HDWC, 4 pins, pitch 10mm, size 35.8x8.2mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.metz-connect.com/de/system/files/productfiles/Datenblatt_310671_RT019xxHDWC_OFF-023605N.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_MetzConnect +THT terminal block Metz Connect Type067_RT01904HDWC pitch 10mm size 35.8x8.2mm^2 drill 1.3mm pad 2.6mm +0 +4 +4 +TerminalBlock_MetzConnect +TerminalBlock_MetzConnect_Type067_RT01905HDWC_1x05_P10.00mm_Horizontal +terminal block Metz Connect Type067_RT01905HDWC, 5 pins, pitch 10mm, size 45.8x8.2mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.metz-connect.com/de/system/files/productfiles/Datenblatt_310671_RT019xxHDWC_OFF-023605N.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_MetzConnect +THT terminal block Metz Connect Type067_RT01905HDWC pitch 10mm size 45.8x8.2mm^2 drill 1.3mm pad 2.6mm +0 +5 +5 +TerminalBlock_MetzConnect +TerminalBlock_MetzConnect_Type073_RT02602HBLU_1x02_P5.08mm_Horizontal +terminal block Metz Connect Type073_RT02602HBLU, 2 pins, pitch 5.08mm, size 10.2x11mm^2, drill diamater 1.4mm, pad diameter 2.6mm, see http://www.metz-connect.com/de/system/files/productfiles/Datenblatt_310731_RT026xxHBLU_OFF-022792U.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_MetzConnect +THT terminal block Metz Connect Type073_RT02602HBLU pitch 5.08mm size 10.2x11mm^2 drill 1.4mm pad 2.6mm +0 +2 +2 +TerminalBlock_MetzConnect +TerminalBlock_MetzConnect_Type073_RT02603HBLU_1x03_P5.08mm_Horizontal +terminal block Metz Connect Type073_RT02603HBLU, 3 pins, pitch 5.08mm, size 15.2x11mm^2, drill diamater 1.4mm, pad diameter 2.6mm, see http://www.metz-connect.com/de/system/files/productfiles/Datenblatt_310731_RT026xxHBLU_OFF-022792U.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_MetzConnect +THT terminal block Metz Connect Type073_RT02603HBLU pitch 5.08mm size 15.2x11mm^2 drill 1.4mm pad 2.6mm +0 +3 +3 +TerminalBlock_MetzConnect +TerminalBlock_MetzConnect_Type086_RT03402HBLC_1x02_P3.81mm_Horizontal +terminal block Metz Connect Type086_RT03402HBLC, 2 pins, pitch 3.81mm, size 7.51x7.3mm^2, drill diamater 0.7mm, pad diameter 1.4mm, see http://www.metz-connect.com/de/system/files/productfiles/Datenblatt_310861_RT034xxHBLC_OFF-026114K.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_MetzConnect +THT terminal block Metz Connect Type086_RT03402HBLC pitch 3.81mm size 7.51x7.3mm^2 drill 0.7mm pad 1.4mm +0 +2 +2 +TerminalBlock_MetzConnect +TerminalBlock_MetzConnect_Type086_RT03403HBLC_1x03_P3.81mm_Horizontal +terminal block Metz Connect Type086_RT03403HBLC, 3 pins, pitch 3.81mm, size 11.3x7.3mm^2, drill diamater 0.7mm, pad diameter 1.4mm, see http://www.metz-connect.com/de/system/files/productfiles/Datenblatt_310861_RT034xxHBLC_OFF-026114K.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_MetzConnect +THT terminal block Metz Connect Type086_RT03403HBLC pitch 3.81mm size 11.3x7.3mm^2 drill 0.7mm pad 1.4mm +0 +3 +3 +TerminalBlock_MetzConnect +TerminalBlock_MetzConnect_Type086_RT03404HBLC_1x04_P3.81mm_Horizontal +terminal block Metz Connect Type086_RT03404HBLC, 4 pins, pitch 3.81mm, size 15.1x7.3mm^2, drill diamater 0.7mm, pad diameter 1.4mm, see http://www.metz-connect.com/de/system/files/productfiles/Datenblatt_310861_RT034xxHBLC_OFF-026114K.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_MetzConnect +THT terminal block Metz Connect Type086_RT03404HBLC pitch 3.81mm size 15.1x7.3mm^2 drill 0.7mm pad 1.4mm +0 +4 +4 +TerminalBlock_MetzConnect +TerminalBlock_MetzConnect_Type086_RT03405HBLC_1x05_P3.81mm_Horizontal +terminal block Metz Connect Type086_RT03405HBLC, 5 pins, pitch 3.81mm, size 18.9x7.3mm^2, drill diamater 0.7mm, pad diameter 1.4mm, see http://www.metz-connect.com/de/system/files/productfiles/Datenblatt_310861_RT034xxHBLC_OFF-026114K.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_MetzConnect +THT terminal block Metz Connect Type086_RT03405HBLC pitch 3.81mm size 18.9x7.3mm^2 drill 0.7mm pad 1.4mm +0 +5 +5 +TerminalBlock_MetzConnect +TerminalBlock_MetzConnect_Type086_RT03406HBLC_1x06_P3.81mm_Horizontal +terminal block Metz Connect Type086_RT03406HBLC, 6 pins, pitch 3.81mm, size 22.8x7.3mm^2, drill diamater 0.7mm, pad diameter 1.4mm, see http://www.metz-connect.com/de/system/files/productfiles/Datenblatt_310861_RT034xxHBLC_OFF-026114K.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_MetzConnect +THT terminal block Metz Connect Type086_RT03406HBLC pitch 3.81mm size 22.8x7.3mm^2 drill 0.7mm pad 1.4mm +0 +6 +6 +TerminalBlock_MetzConnect +TerminalBlock_MetzConnect_Type094_RT03502HBLU_1x02_P5.00mm_Horizontal +terminal block Metz Connect Type094_RT03502HBLU, 2 pins, pitch 5mm, size 10x8.3mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.metz-connect.com/ru/system/files/productfiles/Data_sheet_310941_RT035xxHBLU_OFF-022742T.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_MetzConnect +THT terminal block Metz Connect Type094_RT03502HBLU pitch 5mm size 10x8.3mm^2 drill 1.3mm pad 2.6mm +0 +2 +2 +TerminalBlock_MetzConnect +TerminalBlock_MetzConnect_Type094_RT03503HBLU_1x03_P5.00mm_Horizontal +terminal block Metz Connect Type094_RT03503HBLU, 3 pins, pitch 5mm, size 15x8.3mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.metz-connect.com/ru/system/files/productfiles/Data_sheet_310941_RT035xxHBLU_OFF-022742T.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_MetzConnect +THT terminal block Metz Connect Type094_RT03503HBLU pitch 5mm size 15x8.3mm^2 drill 1.3mm pad 2.6mm +0 +3 +3 +TerminalBlock_MetzConnect +TerminalBlock_MetzConnect_Type094_RT03504HBLU_1x04_P5.00mm_Horizontal +terminal block Metz Connect Type094_RT03504HBLU, 4 pins, pitch 5mm, size 20x8.3mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.metz-connect.com/ru/system/files/productfiles/Data_sheet_310941_RT035xxHBLU_OFF-022742T.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_MetzConnect +THT terminal block Metz Connect Type094_RT03504HBLU pitch 5mm size 20x8.3mm^2 drill 1.3mm pad 2.6mm +0 +4 +4 +TerminalBlock_MetzConnect +TerminalBlock_MetzConnect_Type094_RT03505HBLU_1x05_P5.00mm_Horizontal +terminal block Metz Connect Type094_RT03505HBLU, 5 pins, pitch 5mm, size 25x8.3mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.metz-connect.com/ru/system/files/productfiles/Data_sheet_310941_RT035xxHBLU_OFF-022742T.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_MetzConnect +THT terminal block Metz Connect Type094_RT03505HBLU pitch 5mm size 25x8.3mm^2 drill 1.3mm pad 2.6mm +0 +5 +5 +TerminalBlock_MetzConnect +TerminalBlock_MetzConnect_Type094_RT03506HBLU_1x06_P5.00mm_Horizontal +terminal block Metz Connect Type094_RT03506HBLU, 6 pins, pitch 5mm, size 30x8.3mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.metz-connect.com/ru/system/files/productfiles/Data_sheet_310941_RT035xxHBLU_OFF-022742T.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_MetzConnect +THT terminal block Metz Connect Type094_RT03506HBLU pitch 5mm size 30x8.3mm^2 drill 1.3mm pad 2.6mm +0 +6 +6 +TerminalBlock_MetzConnect +TerminalBlock_MetzConnect_Type101_RT01602HBWC_1x02_P5.08mm_Horizontal +terminal block Metz Connect Type101_RT01602HBWC, 2 pins, pitch 5.08mm, size 10.2x8mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://www.metz-connect.com/de/system/files/productfiles/Datenblatt_311011_RT016xxHBWC_OFF-022771S.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_MetzConnect +THT terminal block Metz Connect Type101_RT01602HBWC pitch 5.08mm size 10.2x8mm^2 drill 1.3mm pad 2.5mm +0 +2 +2 +TerminalBlock_MetzConnect +TerminalBlock_MetzConnect_Type101_RT01603HBWC_1x03_P5.08mm_Horizontal +terminal block Metz Connect Type101_RT01603HBWC, 3 pins, pitch 5.08mm, size 15.2x8mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://www.metz-connect.com/de/system/files/productfiles/Datenblatt_311011_RT016xxHBWC_OFF-022771S.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_MetzConnect +THT terminal block Metz Connect Type101_RT01603HBWC pitch 5.08mm size 15.2x8mm^2 drill 1.3mm pad 2.5mm +0 +3 +3 +TerminalBlock_MetzConnect +TerminalBlock_MetzConnect_Type101_RT01604HBWC_1x04_P5.08mm_Horizontal +terminal block Metz Connect Type101_RT01604HBWC, 4 pins, pitch 5.08mm, size 20.3x8mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://www.metz-connect.com/de/system/files/productfiles/Datenblatt_311011_RT016xxHBWC_OFF-022771S.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_MetzConnect +THT terminal block Metz Connect Type101_RT01604HBWC pitch 5.08mm size 20.3x8mm^2 drill 1.3mm pad 2.5mm +0 +4 +4 +TerminalBlock_MetzConnect +TerminalBlock_MetzConnect_Type101_RT01605HBWC_1x05_P5.08mm_Horizontal +terminal block Metz Connect Type101_RT01605HBWC, 5 pins, pitch 5.08mm, size 25.4x8mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://www.metz-connect.com/de/system/files/productfiles/Datenblatt_311011_RT016xxHBWC_OFF-022771S.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_MetzConnect +THT terminal block Metz Connect Type101_RT01605HBWC pitch 5.08mm size 25.4x8mm^2 drill 1.3mm pad 2.5mm +0 +5 +5 +TerminalBlock_MetzConnect +TerminalBlock_MetzConnect_Type101_RT01606HBWC_1x06_P5.08mm_Horizontal +terminal block Metz Connect Type101_RT01606HBWC, 6 pins, pitch 5.08mm, size 30.5x8mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://www.metz-connect.com/de/system/files/productfiles/Datenblatt_311011_RT016xxHBWC_OFF-022771S.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_MetzConnect +THT terminal block Metz Connect Type101_RT01606HBWC pitch 5.08mm size 30.5x8mm^2 drill 1.3mm pad 2.5mm +0 +6 +6 +TerminalBlock_MetzConnect +TerminalBlock_MetzConnect_Type171_RT13702HBWC_1x02_P7.50mm_Horizontal +terminal block Metz Connect Type171_RT13702HBWC, 2 pins, pitch 7.5mm, size 15x9mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://www.metz-connect.com/de/system/files/productfiles/Datenblatt_311711_RT137xxHBWC_OFF-022811Q.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_MetzConnect +THT terminal block Metz Connect Type171_RT13702HBWC pitch 7.5mm size 15x9mm^2 drill 1.3mm pad 2.5mm +0 +2 +2 +TerminalBlock_MetzConnect +TerminalBlock_MetzConnect_Type171_RT13703HBWC_1x03_P7.50mm_Horizontal +terminal block Metz Connect Type171_RT13703HBWC, 3 pins, pitch 7.5mm, size 22.5x9mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://www.metz-connect.com/de/system/files/productfiles/Datenblatt_311711_RT137xxHBWC_OFF-022811Q.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_MetzConnect +THT terminal block Metz Connect Type171_RT13703HBWC pitch 7.5mm size 22.5x9mm^2 drill 1.3mm pad 2.5mm +0 +3 +3 +TerminalBlock_MetzConnect +TerminalBlock_MetzConnect_Type171_RT13704HBWC_1x04_P7.50mm_Horizontal +terminal block Metz Connect Type171_RT13704HBWC, 4 pins, pitch 7.5mm, size 30x9mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://www.metz-connect.com/de/system/files/productfiles/Datenblatt_311711_RT137xxHBWC_OFF-022811Q.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_MetzConnect +THT terminal block Metz Connect Type171_RT13704HBWC pitch 7.5mm size 30x9mm^2 drill 1.3mm pad 2.5mm +0 +4 +4 +TerminalBlock_MetzConnect +TerminalBlock_MetzConnect_Type171_RT13705HBWC_1x05_P7.50mm_Horizontal +terminal block Metz Connect Type171_RT13705HBWC, 5 pins, pitch 7.5mm, size 37.5x9mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://www.metz-connect.com/de/system/files/productfiles/Datenblatt_311711_RT137xxHBWC_OFF-022811Q.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_MetzConnect +THT terminal block Metz Connect Type171_RT13705HBWC pitch 7.5mm size 37.5x9mm^2 drill 1.3mm pad 2.5mm +0 +5 +5 +TerminalBlock_MetzConnect +TerminalBlock_MetzConnect_Type171_RT13706HBWC_1x06_P7.50mm_Horizontal +terminal block Metz Connect Type171_RT13706HBWC, 6 pins, pitch 7.5mm, size 45x9mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://www.metz-connect.com/de/system/files/productfiles/Datenblatt_311711_RT137xxHBWC_OFF-022811Q.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_MetzConnect +THT terminal block Metz Connect Type171_RT13706HBWC pitch 7.5mm size 45x9mm^2 drill 1.3mm pad 2.5mm +0 +6 +6 +TerminalBlock_MetzConnect +TerminalBlock_MetzConnect_Type175_RT02702HBLC_1x02_P7.50mm_Horizontal +terminal block Metz Connect Type175_RT02702HBLC, 2 pins, pitch 7.5mm, size 15x11mm^2, drill diamater 1.4mm, pad diameter 2.6mm, see http://www.metz-connect.com/de/system/files/productfiles/Datenblatt_311751_RT027xxHBLC_OFF-022814U.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_MetzConnect +THT terminal block Metz Connect Type175_RT02702HBLC pitch 7.5mm size 15x11mm^2 drill 1.4mm pad 2.6mm +0 +2 +2 +TerminalBlock_MetzConnect +TerminalBlock_MetzConnect_Type175_RT02703HBLC_1x03_P7.50mm_Horizontal +terminal block Metz Connect Type175_RT02703HBLC, 3 pins, pitch 7.5mm, size 22.5x11mm^2, drill diamater 1.4mm, pad diameter 2.6mm, see http://www.metz-connect.com/de/system/files/productfiles/Datenblatt_311751_RT027xxHBLC_OFF-022814U.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_MetzConnect +THT terminal block Metz Connect Type175_RT02703HBLC pitch 7.5mm size 22.5x11mm^2 drill 1.4mm pad 2.6mm +0 +3 +3 +TerminalBlock_MetzConnect +TerminalBlock_MetzConnect_Type175_RT02704HBLC_1x04_P7.50mm_Horizontal +terminal block Metz Connect Type175_RT02704HBLC, 4 pins, pitch 7.5mm, size 30x11mm^2, drill diamater 1.4mm, pad diameter 2.6mm, see http://www.metz-connect.com/de/system/files/productfiles/Datenblatt_311751_RT027xxHBLC_OFF-022814U.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_MetzConnect +THT terminal block Metz Connect Type175_RT02704HBLC pitch 7.5mm size 30x11mm^2 drill 1.4mm pad 2.6mm +0 +4 +4 +TerminalBlock_MetzConnect +TerminalBlock_MetzConnect_Type175_RT02705HBLC_1x05_P7.50mm_Horizontal +terminal block Metz Connect Type175_RT02705HBLC, 5 pins, pitch 7.5mm, size 37.5x11mm^2, drill diamater 1.4mm, pad diameter 2.6mm, see http://www.metz-connect.com/de/system/files/productfiles/Datenblatt_311751_RT027xxHBLC_OFF-022814U.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_MetzConnect +THT terminal block Metz Connect Type175_RT02705HBLC pitch 7.5mm size 37.5x11mm^2 drill 1.4mm pad 2.6mm +0 +5 +5 +TerminalBlock_MetzConnect +TerminalBlock_MetzConnect_Type175_RT02706HBLC_1x06_P7.50mm_Horizontal +terminal block Metz Connect Type175_RT02706HBLC, 6 pins, pitch 7.5mm, size 45x11mm^2, drill diamater 1.4mm, pad diameter 2.6mm, see http://www.metz-connect.com/de/system/files/productfiles/Datenblatt_311751_RT027xxHBLC_OFF-022814U.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_MetzConnect +THT terminal block Metz Connect Type175_RT02706HBLC pitch 7.5mm size 45x11mm^2 drill 1.4mm pad 2.6mm +0 +6 +6 +TerminalBlock_MetzConnect +TerminalBlock_MetzConnect_Type205_RT04502UBLC_1x02_P5.00mm_45Degree +terminal block Metz Connect Type205_RT04502UBLC, 45Degree (cable under 45degree), 2 pins, pitch 5mm, size 10x12.5mm^2, drill diamater 1.4mm, pad diameter 2.7mm, see http://www.metz-connect.com/de/system/files/productfiles/Datenblatt_312051_RT045xxUBLC_OFF-022759T.pdf, script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_MetzConnect +THT terminal block Metz Connect Type205_RT04502UBLC 45Degree pitch 5mm size 10x12.5mm^2 drill 1.4mm pad 2.7mm +0 +2 +2 +TerminalBlock_MetzConnect +TerminalBlock_MetzConnect_Type205_RT04503UBLC_1x03_P5.00mm_45Degree +terminal block Metz Connect Type205_RT04503UBLC, 45Degree (cable under 45degree), 3 pins, pitch 5mm, size 15x12.5mm^2, drill diamater 1.4mm, pad diameter 2.7mm, see http://www.metz-connect.com/de/system/files/productfiles/Datenblatt_312051_RT045xxUBLC_OFF-022759T.pdf, script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_MetzConnect +THT terminal block Metz Connect Type205_RT04503UBLC 45Degree pitch 5mm size 15x12.5mm^2 drill 1.4mm pad 2.7mm +0 +3 +3 +TerminalBlock_MetzConnect +TerminalBlock_MetzConnect_Type205_RT04504UBLC_1x04_P5.00mm_45Degree +terminal block Metz Connect Type205_RT04504UBLC, 45Degree (cable under 45degree), 4 pins, pitch 5mm, size 20x12.5mm^2, drill diamater 1.4mm, pad diameter 2.7mm, see http://www.metz-connect.com/de/system/files/productfiles/Datenblatt_312051_RT045xxUBLC_OFF-022759T.pdf, script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_MetzConnect +THT terminal block Metz Connect Type205_RT04504UBLC 45Degree pitch 5mm size 20x12.5mm^2 drill 1.4mm pad 2.7mm +0 +4 +4 +TerminalBlock_MetzConnect +TerminalBlock_MetzConnect_Type205_RT04505UBLC_1x05_P5.00mm_45Degree +terminal block Metz Connect Type205_RT04505UBLC, 45Degree (cable under 45degree), 5 pins, pitch 5mm, size 25x12.5mm^2, drill diamater 1.4mm, pad diameter 2.7mm, see http://www.metz-connect.com/de/system/files/productfiles/Datenblatt_312051_RT045xxUBLC_OFF-022759T.pdf, script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_MetzConnect +THT terminal block Metz Connect Type205_RT04505UBLC 45Degree pitch 5mm size 25x12.5mm^2 drill 1.4mm pad 2.7mm +0 +5 +5 +TerminalBlock_MetzConnect +TerminalBlock_MetzConnect_Type205_RT04506UBLC_1x06_P5.00mm_45Degree +terminal block Metz Connect Type205_RT04506UBLC, 45Degree (cable under 45degree), 6 pins, pitch 5mm, size 30x12.5mm^2, drill diamater 1.4mm, pad diameter 2.7mm, see http://www.metz-connect.com/de/system/files/productfiles/Datenblatt_312051_RT045xxUBLC_OFF-022759T.pdf, script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_MetzConnect +THT terminal block Metz Connect Type205_RT04506UBLC 45Degree pitch 5mm size 30x12.5mm^2 drill 1.4mm pad 2.7mm +0 +6 +6 +TerminalBlock_MetzConnect +TerminalBlock_MetzConnect_Type701_RT11L02HGLU_1x02_P6.35mm_Horizontal +terminal block Metz Connect Type701_RT11L02HGLU, 2 pins, pitch 6.35mm, size 12.7x12.5mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://www.metz-connect.com/de/system/files/productfiles/Datenblatt_317011_RT11LxxHGLU_OFF-022798U.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_MetzConnect +THT terminal block Metz Connect Type701_RT11L02HGLU pitch 6.35mm size 12.7x12.5mm^2 drill 1.3mm pad 2.5mm +0 +2 +2 +TerminalBlock_MetzConnect +TerminalBlock_MetzConnect_Type701_RT11L03HGLU_1x03_P6.35mm_Horizontal +terminal block Metz Connect Type701_RT11L03HGLU, 3 pins, pitch 6.35mm, size 19x12.5mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://www.metz-connect.com/de/system/files/productfiles/Datenblatt_317011_RT11LxxHGLU_OFF-022798U.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_MetzConnect +THT terminal block Metz Connect Type701_RT11L03HGLU pitch 6.35mm size 19x12.5mm^2 drill 1.3mm pad 2.5mm +0 +3 +3 +TerminalBlock_MetzConnect +TerminalBlock_MetzConnect_Type703_RT10N02HGLU_1x02_P9.52mm_Horizontal +terminal block Metz Connect Type703_RT10N02HGLU, 2 pins, pitch 9.52mm, size 19x12.5mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.metz-connect.com/de/system/files/productfiles/Datenblatt_317031_RT10NxxHGLU_OFF-022897S.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_MetzConnect +THT terminal block Metz Connect Type703_RT10N02HGLU pitch 9.52mm size 19x12.5mm^2 drill 1.3mm pad 2.6mm +0 +2 +2 +TerminalBlock_MetzConnect +TerminalBlock_MetzConnect_Type703_RT10N03HGLU_1x03_P9.52mm_Horizontal +terminal block Metz Connect Type703_RT10N03HGLU, 3 pins, pitch 9.52mm, size 28.6x12.5mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.metz-connect.com/de/system/files/productfiles/Datenblatt_317031_RT10NxxHGLU_OFF-022897S.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_MetzConnect +THT terminal block Metz Connect Type703_RT10N03HGLU pitch 9.52mm size 28.6x12.5mm^2 drill 1.3mm pad 2.6mm +0 +3 +3 +TerminalBlock_Philmore +TerminalBlock_Philmore_TB132_1x02_P5.00mm_Horizontal +Terminal Block Philmore , 2 pins, pitch 5mm, size 10x10.2mm^2, drill diamater 1.2mm, pad diameter 2.4mm, see http://www.philmore-datak.com/mc/Page%20197.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Philmore +THT Terminal Block Philmore pitch 5mm size 10x10.2mm^2 drill 1.2mm pad 2.4mm +0 +2 +2 +TerminalBlock_Philmore +TerminalBlock_Philmore_TB133_1x03_P5.00mm_Horizontal +Terminal Block Philmore , 3 pins, pitch 5mm, size 15x10.2mm^2, drill diamater 1.2mm, pad diameter 2.4mm, see http://www.philmore-datak.com/mc/Page%20197.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Philmore +THT Terminal Block Philmore pitch 5mm size 15x10.2mm^2 drill 1.2mm pad 2.4mm +0 +3 +3 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_MKDS-1,5-2-5.08_1x02_P5.08mm_Horizontal +Terminal Block Phoenix MKDS-1,5-2-5.08, 2 pins, pitch 5.08mm, size 10.2x9.8mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.farnell.com/datasheets/100425.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix MKDS-1,5-2-5.08 pitch 5.08mm size 10.2x9.8mm^2 drill 1.3mm pad 2.6mm +0 +2 +2 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_MKDS-1,5-2_1x02_P5.00mm_Horizontal +Terminal Block Phoenix MKDS-1,5-2, 2 pins, pitch 5mm, size 10x9.8mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.farnell.com/datasheets/100425.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix MKDS-1,5-2 pitch 5mm size 10x9.8mm^2 drill 1.3mm pad 2.6mm +0 +2 +2 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_MKDS-1,5-3-5.08_1x03_P5.08mm_Horizontal +Terminal Block Phoenix MKDS-1,5-3-5.08, 3 pins, pitch 5.08mm, size 15.2x9.8mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.farnell.com/datasheets/100425.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix MKDS-1,5-3-5.08 pitch 5.08mm size 15.2x9.8mm^2 drill 1.3mm pad 2.6mm +0 +3 +3 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_MKDS-1,5-3_1x03_P5.00mm_Horizontal +Terminal Block Phoenix MKDS-1,5-3, 3 pins, pitch 5mm, size 15x9.8mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.farnell.com/datasheets/100425.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix MKDS-1,5-3 pitch 5mm size 15x9.8mm^2 drill 1.3mm pad 2.6mm +0 +3 +3 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_MKDS-1,5-4-5.08_1x04_P5.08mm_Horizontal +Terminal Block Phoenix MKDS-1,5-4-5.08, 4 pins, pitch 5.08mm, size 20.3x9.8mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.farnell.com/datasheets/100425.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix MKDS-1,5-4-5.08 pitch 5.08mm size 20.3x9.8mm^2 drill 1.3mm pad 2.6mm +0 +4 +4 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_MKDS-1,5-4_1x04_P5.00mm_Horizontal +Terminal Block Phoenix MKDS-1,5-4, 4 pins, pitch 5mm, size 20x9.8mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.farnell.com/datasheets/100425.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix MKDS-1,5-4 pitch 5mm size 20x9.8mm^2 drill 1.3mm pad 2.6mm +0 +4 +4 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_MKDS-1,5-5-5.08_1x05_P5.08mm_Horizontal +Terminal Block Phoenix MKDS-1,5-5-5.08, 5 pins, pitch 5.08mm, size 25.4x9.8mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.farnell.com/datasheets/100425.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix MKDS-1,5-5-5.08 pitch 5.08mm size 25.4x9.8mm^2 drill 1.3mm pad 2.6mm +0 +5 +5 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_MKDS-1,5-5_1x05_P5.00mm_Horizontal +Terminal Block Phoenix MKDS-1,5-5, 5 pins, pitch 5mm, size 25x9.8mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.farnell.com/datasheets/100425.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix MKDS-1,5-5 pitch 5mm size 25x9.8mm^2 drill 1.3mm pad 2.6mm +0 +5 +5 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_MKDS-1,5-6-5.08_1x06_P5.08mm_Horizontal +Terminal Block Phoenix MKDS-1,5-6-5.08, 6 pins, pitch 5.08mm, size 30.5x9.8mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.farnell.com/datasheets/100425.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix MKDS-1,5-6-5.08 pitch 5.08mm size 30.5x9.8mm^2 drill 1.3mm pad 2.6mm +0 +6 +6 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_MKDS-1,5-6_1x06_P5.00mm_Horizontal +Terminal Block Phoenix MKDS-1,5-6, 6 pins, pitch 5mm, size 30x9.8mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.farnell.com/datasheets/100425.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix MKDS-1,5-6 pitch 5mm size 30x9.8mm^2 drill 1.3mm pad 2.6mm +0 +6 +6 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_MKDS-1,5-7-5.08_1x07_P5.08mm_Horizontal +Terminal Block Phoenix MKDS-1,5-7-5.08, 7 pins, pitch 5.08mm, size 35.6x9.8mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.farnell.com/datasheets/100425.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix MKDS-1,5-7-5.08 pitch 5.08mm size 35.6x9.8mm^2 drill 1.3mm pad 2.6mm +0 +7 +7 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_MKDS-1,5-7_1x07_P5.00mm_Horizontal +Terminal Block Phoenix MKDS-1,5-7, 7 pins, pitch 5mm, size 35x9.8mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.farnell.com/datasheets/100425.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix MKDS-1,5-7 pitch 5mm size 35x9.8mm^2 drill 1.3mm pad 2.6mm +0 +7 +7 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_MKDS-1,5-8-5.08_1x08_P5.08mm_Horizontal +Terminal Block Phoenix MKDS-1,5-8-5.08, 8 pins, pitch 5.08mm, size 40.6x9.8mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.farnell.com/datasheets/100425.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix MKDS-1,5-8-5.08 pitch 5.08mm size 40.6x9.8mm^2 drill 1.3mm pad 2.6mm +0 +8 +8 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_MKDS-1,5-8_1x08_P5.00mm_Horizontal +Terminal Block Phoenix MKDS-1,5-8, 8 pins, pitch 5mm, size 40x9.8mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.farnell.com/datasheets/100425.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix MKDS-1,5-8 pitch 5mm size 40x9.8mm^2 drill 1.3mm pad 2.6mm +0 +8 +8 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_MKDS-1,5-9-5.08_1x09_P5.08mm_Horizontal +Terminal Block Phoenix MKDS-1,5-9-5.08, 9 pins, pitch 5.08mm, size 45.7x9.8mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.farnell.com/datasheets/100425.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix MKDS-1,5-9-5.08 pitch 5.08mm size 45.7x9.8mm^2 drill 1.3mm pad 2.6mm +0 +9 +9 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_MKDS-1,5-9_1x09_P5.00mm_Horizontal +Terminal Block Phoenix MKDS-1,5-9, 9 pins, pitch 5mm, size 45x9.8mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.farnell.com/datasheets/100425.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix MKDS-1,5-9 pitch 5mm size 45x9.8mm^2 drill 1.3mm pad 2.6mm +0 +9 +9 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_MKDS-1,5-10-5.08_1x10_P5.08mm_Horizontal +Terminal Block Phoenix MKDS-1,5-10-5.08, 10 pins, pitch 5.08mm, size 50.8x9.8mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.farnell.com/datasheets/100425.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix MKDS-1,5-10-5.08 pitch 5.08mm size 50.8x9.8mm^2 drill 1.3mm pad 2.6mm +0 +10 +10 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_MKDS-1,5-10_1x10_P5.00mm_Horizontal +Terminal Block Phoenix MKDS-1,5-10, 10 pins, pitch 5mm, size 50x9.8mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.farnell.com/datasheets/100425.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix MKDS-1,5-10 pitch 5mm size 50x9.8mm^2 drill 1.3mm pad 2.6mm +0 +10 +10 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_MKDS-1,5-11-5.08_1x11_P5.08mm_Horizontal +Terminal Block Phoenix MKDS-1,5-11-5.08, 11 pins, pitch 5.08mm, size 55.9x9.8mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.farnell.com/datasheets/100425.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix MKDS-1,5-11-5.08 pitch 5.08mm size 55.9x9.8mm^2 drill 1.3mm pad 2.6mm +0 +11 +11 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_MKDS-1,5-11_1x11_P5.00mm_Horizontal +Terminal Block Phoenix MKDS-1,5-11, 11 pins, pitch 5mm, size 55x9.8mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.farnell.com/datasheets/100425.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix MKDS-1,5-11 pitch 5mm size 55x9.8mm^2 drill 1.3mm pad 2.6mm +0 +11 +11 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_MKDS-1,5-12-5.08_1x12_P5.08mm_Horizontal +Terminal Block Phoenix MKDS-1,5-12-5.08, 12 pins, pitch 5.08mm, size 61x9.8mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.farnell.com/datasheets/100425.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix MKDS-1,5-12-5.08 pitch 5.08mm size 61x9.8mm^2 drill 1.3mm pad 2.6mm +0 +12 +12 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_MKDS-1,5-12_1x12_P5.00mm_Horizontal +Terminal Block Phoenix MKDS-1,5-12, 12 pins, pitch 5mm, size 60x9.8mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.farnell.com/datasheets/100425.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix MKDS-1,5-12 pitch 5mm size 60x9.8mm^2 drill 1.3mm pad 2.6mm +0 +12 +12 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_MKDS-1,5-13-5.08_1x13_P5.08mm_Horizontal +Terminal Block Phoenix MKDS-1,5-13-5.08, 13 pins, pitch 5.08mm, size 66x9.8mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.farnell.com/datasheets/100425.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix MKDS-1,5-13-5.08 pitch 5.08mm size 66x9.8mm^2 drill 1.3mm pad 2.6mm +0 +13 +13 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_MKDS-1,5-13_1x13_P5.00mm_Horizontal +Terminal Block Phoenix MKDS-1,5-13, 13 pins, pitch 5mm, size 65x9.8mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.farnell.com/datasheets/100425.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix MKDS-1,5-13 pitch 5mm size 65x9.8mm^2 drill 1.3mm pad 2.6mm +0 +13 +13 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_MKDS-1,5-14-5.08_1x14_P5.08mm_Horizontal +Terminal Block Phoenix MKDS-1,5-14-5.08, 14 pins, pitch 5.08mm, size 71.1x9.8mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.farnell.com/datasheets/100425.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix MKDS-1,5-14-5.08 pitch 5.08mm size 71.1x9.8mm^2 drill 1.3mm pad 2.6mm +0 +14 +14 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_MKDS-1,5-14_1x14_P5.00mm_Horizontal +Terminal Block Phoenix MKDS-1,5-14, 14 pins, pitch 5mm, size 70x9.8mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.farnell.com/datasheets/100425.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix MKDS-1,5-14 pitch 5mm size 70x9.8mm^2 drill 1.3mm pad 2.6mm +0 +14 +14 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_MKDS-1,5-15-5.08_1x15_P5.08mm_Horizontal +Terminal Block Phoenix MKDS-1,5-15-5.08, 15 pins, pitch 5.08mm, size 76.2x9.8mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.farnell.com/datasheets/100425.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix MKDS-1,5-15-5.08 pitch 5.08mm size 76.2x9.8mm^2 drill 1.3mm pad 2.6mm +0 +15 +15 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_MKDS-1,5-15_1x15_P5.00mm_Horizontal +Terminal Block Phoenix MKDS-1,5-15, 15 pins, pitch 5mm, size 75x9.8mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.farnell.com/datasheets/100425.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix MKDS-1,5-15 pitch 5mm size 75x9.8mm^2 drill 1.3mm pad 2.6mm +0 +15 +15 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_MKDS-1,5-16-5.08_1x16_P5.08mm_Horizontal +Terminal Block Phoenix MKDS-1,5-16-5.08, 16 pins, pitch 5.08mm, size 81.3x9.8mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.farnell.com/datasheets/100425.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix MKDS-1,5-16-5.08 pitch 5.08mm size 81.3x9.8mm^2 drill 1.3mm pad 2.6mm +0 +16 +16 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_MKDS-1,5-16_1x16_P5.00mm_Horizontal +Terminal Block Phoenix MKDS-1,5-16, 16 pins, pitch 5mm, size 80x9.8mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.farnell.com/datasheets/100425.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix MKDS-1,5-16 pitch 5mm size 80x9.8mm^2 drill 1.3mm pad 2.6mm +0 +16 +16 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_MKDS-3-2-5.08_1x02_P5.08mm_Horizontal +Terminal Block Phoenix MKDS-3-2-5.08, 2 pins, pitch 5.08mm, size 10.2x11.2mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.farnell.com/datasheets/2138224.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix MKDS-3-2-5.08 pitch 5.08mm size 10.2x11.2mm^2 drill 1.3mm pad 2.6mm +0 +2 +2 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_MKDS-3-3-5.08_1x03_P5.08mm_Horizontal +Terminal Block Phoenix MKDS-3-3-5.08, 3 pins, pitch 5.08mm, size 15.2x11.2mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.farnell.com/datasheets/2138224.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix MKDS-3-3-5.08 pitch 5.08mm size 15.2x11.2mm^2 drill 1.3mm pad 2.6mm +0 +3 +3 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_MKDS-3-4-5.08_1x04_P5.08mm_Horizontal +Terminal Block Phoenix MKDS-3-4-5.08, 4 pins, pitch 5.08mm, size 20.3x11.2mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.farnell.com/datasheets/2138224.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix MKDS-3-4-5.08 pitch 5.08mm size 20.3x11.2mm^2 drill 1.3mm pad 2.6mm +0 +4 +4 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_MKDS-3-5-5.08_1x05_P5.08mm_Horizontal +Terminal Block Phoenix MKDS-3-5-5.08, 5 pins, pitch 5.08mm, size 25.4x11.2mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.farnell.com/datasheets/2138224.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix MKDS-3-5-5.08 pitch 5.08mm size 25.4x11.2mm^2 drill 1.3mm pad 2.6mm +0 +5 +5 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_MKDS-3-6-5.08_1x06_P5.08mm_Horizontal +Terminal Block Phoenix MKDS-3-6-5.08, 6 pins, pitch 5.08mm, size 30.5x11.2mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.farnell.com/datasheets/2138224.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix MKDS-3-6-5.08 pitch 5.08mm size 30.5x11.2mm^2 drill 1.3mm pad 2.6mm +0 +6 +6 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_MKDS-3-7-5.08_1x07_P5.08mm_Horizontal +Terminal Block Phoenix MKDS-3-7-5.08, 7 pins, pitch 5.08mm, size 35.6x11.2mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.farnell.com/datasheets/2138224.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix MKDS-3-7-5.08 pitch 5.08mm size 35.6x11.2mm^2 drill 1.3mm pad 2.6mm +0 +7 +7 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_MKDS-3-8-5.08_1x08_P5.08mm_Horizontal +Terminal Block Phoenix MKDS-3-8-5.08, 8 pins, pitch 5.08mm, size 40.6x11.2mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.farnell.com/datasheets/2138224.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix MKDS-3-8-5.08 pitch 5.08mm size 40.6x11.2mm^2 drill 1.3mm pad 2.6mm +0 +8 +8 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_MKDS-3-9-5.08_1x09_P5.08mm_Horizontal +Terminal Block Phoenix MKDS-3-9-5.08, 9 pins, pitch 5.08mm, size 45.7x11.2mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.farnell.com/datasheets/2138224.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix MKDS-3-9-5.08 pitch 5.08mm size 45.7x11.2mm^2 drill 1.3mm pad 2.6mm +0 +9 +9 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_MKDS-3-10-5.08_1x10_P5.08mm_Horizontal +Terminal Block Phoenix MKDS-3-10-5.08, 10 pins, pitch 5.08mm, size 50.8x11.2mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.farnell.com/datasheets/2138224.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix MKDS-3-10-5.08 pitch 5.08mm size 50.8x11.2mm^2 drill 1.3mm pad 2.6mm +0 +10 +10 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_MKDS-3-11-5.08_1x11_P5.08mm_Horizontal +Terminal Block Phoenix MKDS-3-11-5.08, 11 pins, pitch 5.08mm, size 55.9x11.2mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.farnell.com/datasheets/2138224.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix MKDS-3-11-5.08 pitch 5.08mm size 55.9x11.2mm^2 drill 1.3mm pad 2.6mm +0 +11 +11 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_MKDS-3-12-5.08_1x12_P5.08mm_Horizontal +Terminal Block Phoenix MKDS-3-12-5.08, 12 pins, pitch 5.08mm, size 61x11.2mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.farnell.com/datasheets/2138224.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix MKDS-3-12-5.08 pitch 5.08mm size 61x11.2mm^2 drill 1.3mm pad 2.6mm +0 +12 +12 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_MKDS-3-13-5.08_1x13_P5.08mm_Horizontal +Terminal Block Phoenix MKDS-3-13-5.08, 13 pins, pitch 5.08mm, size 66x11.2mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.farnell.com/datasheets/2138224.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix MKDS-3-13-5.08 pitch 5.08mm size 66x11.2mm^2 drill 1.3mm pad 2.6mm +0 +13 +13 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_MKDS-3-14-5.08_1x14_P5.08mm_Horizontal +Terminal Block Phoenix MKDS-3-14-5.08, 14 pins, pitch 5.08mm, size 71.1x11.2mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.farnell.com/datasheets/2138224.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix MKDS-3-14-5.08 pitch 5.08mm size 71.1x11.2mm^2 drill 1.3mm pad 2.6mm +0 +14 +14 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_MKDS-3-15-5.08_1x15_P5.08mm_Horizontal +Terminal Block Phoenix MKDS-3-15-5.08, 15 pins, pitch 5.08mm, size 76.2x11.2mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.farnell.com/datasheets/2138224.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix MKDS-3-15-5.08 pitch 5.08mm size 76.2x11.2mm^2 drill 1.3mm pad 2.6mm +0 +15 +15 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_MKDS-3-16-5.08_1x16_P5.08mm_Horizontal +Terminal Block Phoenix MKDS-3-16-5.08, 16 pins, pitch 5.08mm, size 81.3x11.2mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.farnell.com/datasheets/2138224.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix MKDS-3-16-5.08 pitch 5.08mm size 81.3x11.2mm^2 drill 1.3mm pad 2.6mm +0 +16 +16 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_MPT-0,5-2-2.54_1x02_P2.54mm_Horizontal +Terminal Block Phoenix MPT-0,5-2-2.54, 2 pins, pitch 2.54mm, size 5.54x6.2mm^2, drill diamater 1.1mm, pad diameter 2.2mm, see http://www.mouser.com/ds/2/324/ItemDetail_1725656-920552.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix MPT-0,5-2-2.54 pitch 2.54mm size 5.54x6.2mm^2 drill 1.1mm pad 2.2mm +0 +2 +2 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_MPT-0,5-3-2.54_1x03_P2.54mm_Horizontal +Terminal Block Phoenix MPT-0,5-3-2.54, 3 pins, pitch 2.54mm, size 8.08x6.2mm^2, drill diamater 1.1mm, pad diameter 2.2mm, see http://www.mouser.com/ds/2/324/ItemDetail_1725656-920552.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix MPT-0,5-3-2.54 pitch 2.54mm size 8.08x6.2mm^2 drill 1.1mm pad 2.2mm +0 +3 +3 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_MPT-0,5-4-2.54_1x04_P2.54mm_Horizontal +Terminal Block Phoenix MPT-0,5-4-2.54, 4 pins, pitch 2.54mm, size 10.6x6.2mm^2, drill diamater 1.1mm, pad diameter 2.2mm, see http://www.mouser.com/ds/2/324/ItemDetail_1725672-916605.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix MPT-0,5-4-2.54 pitch 2.54mm size 10.6x6.2mm^2 drill 1.1mm pad 2.2mm +0 +4 +4 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_MPT-0,5-5-2.54_1x05_P2.54mm_Horizontal +Terminal Block Phoenix MPT-0,5-5-2.54, 5 pins, pitch 2.54mm, size 13.2x6.2mm^2, drill diamater 1.1mm, pad diameter 2.2mm, see http://www.mouser.com/ds/2/324/ItemDetail_1725672-916605.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix MPT-0,5-5-2.54 pitch 2.54mm size 13.2x6.2mm^2 drill 1.1mm pad 2.2mm +0 +5 +5 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_MPT-0,5-6-2.54_1x06_P2.54mm_Horizontal +Terminal Block Phoenix MPT-0,5-6-2.54, 6 pins, pitch 2.54mm, size 15.7x6.2mm^2, drill diamater 1.1mm, pad diameter 2.2mm, see http://www.mouser.com/ds/2/324/ItemDetail_1725672-916605.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix MPT-0,5-6-2.54 pitch 2.54mm size 15.7x6.2mm^2 drill 1.1mm pad 2.2mm +0 +6 +6 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_MPT-0,5-7-2.54_1x07_P2.54mm_Horizontal +Terminal Block Phoenix MPT-0,5-7-2.54, 7 pins, pitch 2.54mm, size 18.2x6.2mm^2, drill diamater 1.1mm, pad diameter 2.2mm, see http://www.mouser.com/ds/2/324/ItemDetail_1725672-916605.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix MPT-0,5-7-2.54 pitch 2.54mm size 18.2x6.2mm^2 drill 1.1mm pad 2.2mm +0 +7 +7 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_MPT-0,5-8-2.54_1x08_P2.54mm_Horizontal +Terminal Block Phoenix MPT-0,5-8-2.54, 8 pins, pitch 2.54mm, size 20.8x6.2mm^2, drill diamater 1.1mm, pad diameter 2.2mm, see http://www.mouser.com/ds/2/324/ItemDetail_1725672-916605.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix MPT-0,5-8-2.54 pitch 2.54mm size 20.8x6.2mm^2 drill 1.1mm pad 2.2mm +0 +8 +8 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_MPT-0,5-9-2.54_1x09_P2.54mm_Horizontal +Terminal Block Phoenix MPT-0,5-9-2.54, 9 pins, pitch 2.54mm, size 23.3x6.2mm^2, drill diamater 1.1mm, pad diameter 2.2mm, see http://www.mouser.com/ds/2/324/ItemDetail_1725672-916605.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix MPT-0,5-9-2.54 pitch 2.54mm size 23.3x6.2mm^2 drill 1.1mm pad 2.2mm +0 +9 +9 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_MPT-0,5-10-2.54_1x10_P2.54mm_Horizontal +Terminal Block Phoenix MPT-0,5-10-2.54, 10 pins, pitch 2.54mm, size 25.9x6.2mm^2, drill diamater 1.1mm, pad diameter 2.2mm, see http://www.mouser.com/ds/2/324/ItemDetail_1725672-916605.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix MPT-0,5-10-2.54 pitch 2.54mm size 25.9x6.2mm^2 drill 1.1mm pad 2.2mm +0 +10 +10 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_MPT-0,5-11-2.54_1x11_P2.54mm_Horizontal +Terminal Block Phoenix MPT-0,5-11-2.54, 11 pins, pitch 2.54mm, size 28.4x6.2mm^2, drill diamater 1.1mm, pad diameter 2.2mm, see http://www.mouser.com/ds/2/324/ItemDetail_1725672-916605.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix MPT-0,5-11-2.54 pitch 2.54mm size 28.4x6.2mm^2 drill 1.1mm pad 2.2mm +0 +11 +11 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_MPT-0,5-12-2.54_1x12_P2.54mm_Horizontal +Terminal Block Phoenix MPT-0,5-12-2.54, 12 pins, pitch 2.54mm, size 30.9x6.2mm^2, drill diamater 1.1mm, pad diameter 2.2mm, see http://www.mouser.com/ds/2/324/ItemDetail_1725672-916605.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix MPT-0,5-12-2.54 pitch 2.54mm size 30.9x6.2mm^2 drill 1.1mm pad 2.2mm +0 +12 +12 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_PT-1,5-2-3.5-H_1x02_P3.50mm_Horizontal +Terminal Block Phoenix PT-1,5-2-3.5-H, 2 pins, pitch 3.5mm, size 7x7.6mm^2, drill diamater 1.2mm, pad diameter 2.4mm, see , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix PT-1,5-2-3.5-H pitch 3.5mm size 7x7.6mm^2 drill 1.2mm pad 2.4mm +0 +2 +2 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_PT-1,5-2-5.0-H_1x02_P5.00mm_Horizontal +Terminal Block Phoenix PT-1,5-2-5.0-H, 2 pins, pitch 5mm, size 10x9mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.mouser.com/ds/2/324/ItemDetail_1935161-922578.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix PT-1,5-2-5.0-H pitch 5mm size 10x9mm^2 drill 1.3mm pad 2.6mm +0 +2 +2 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_PT-1,5-3-3.5-H_1x03_P3.50mm_Horizontal +Terminal Block Phoenix PT-1,5-3-3.5-H, 3 pins, pitch 3.5mm, size 10.5x7.6mm^2, drill diamater 1.2mm, pad diameter 2.4mm, see , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix PT-1,5-3-3.5-H pitch 3.5mm size 10.5x7.6mm^2 drill 1.2mm pad 2.4mm +0 +3 +3 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_PT-1,5-3-5.0-H_1x03_P5.00mm_Horizontal +Terminal Block Phoenix PT-1,5-3-5.0-H, 3 pins, pitch 5mm, size 15x9mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.mouser.com/ds/2/324/ItemDetail_1935161-922578.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix PT-1,5-3-5.0-H pitch 5mm size 15x9mm^2 drill 1.3mm pad 2.6mm +0 +3 +3 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_PT-1,5-4-3.5-H_1x04_P3.50mm_Horizontal +Terminal Block Phoenix PT-1,5-4-3.5-H, 4 pins, pitch 3.5mm, size 14x7.6mm^2, drill diamater 1.2mm, pad diameter 2.4mm, see , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix PT-1,5-4-3.5-H pitch 3.5mm size 14x7.6mm^2 drill 1.2mm pad 2.4mm +0 +4 +4 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_PT-1,5-4-5.0-H_1x04_P5.00mm_Horizontal +Terminal Block Phoenix PT-1,5-4-5.0-H, 4 pins, pitch 5mm, size 20x9mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.mouser.com/ds/2/324/ItemDetail_1935161-922578.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix PT-1,5-4-5.0-H pitch 5mm size 20x9mm^2 drill 1.3mm pad 2.6mm +0 +4 +4 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_PT-1,5-5-3.5-H_1x05_P3.50mm_Horizontal +Terminal Block Phoenix PT-1,5-5-3.5-H, 5 pins, pitch 3.5mm, size 17.5x7.6mm^2, drill diamater 1.2mm, pad diameter 2.4mm, see , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix PT-1,5-5-3.5-H pitch 3.5mm size 17.5x7.6mm^2 drill 1.2mm pad 2.4mm +0 +5 +5 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_PT-1,5-5-5.0-H_1x05_P5.00mm_Horizontal +Terminal Block Phoenix PT-1,5-5-5.0-H, 5 pins, pitch 5mm, size 25x9mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.mouser.com/ds/2/324/ItemDetail_1935161-922578.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix PT-1,5-5-5.0-H pitch 5mm size 25x9mm^2 drill 1.3mm pad 2.6mm +0 +5 +5 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_PT-1,5-6-3.5-H_1x06_P3.50mm_Horizontal +Terminal Block Phoenix PT-1,5-6-3.5-H, 6 pins, pitch 3.5mm, size 21x7.6mm^2, drill diamater 1.2mm, pad diameter 2.4mm, see , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix PT-1,5-6-3.5-H pitch 3.5mm size 21x7.6mm^2 drill 1.2mm pad 2.4mm +0 +6 +6 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_PT-1,5-6-5.0-H_1x06_P5.00mm_Horizontal +Terminal Block Phoenix PT-1,5-6-5.0-H, 6 pins, pitch 5mm, size 30x9mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.mouser.com/ds/2/324/ItemDetail_1935161-922578.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix PT-1,5-6-5.0-H pitch 5mm size 30x9mm^2 drill 1.3mm pad 2.6mm +0 +6 +6 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_PT-1,5-7-3.5-H_1x07_P3.50mm_Horizontal +Terminal Block Phoenix PT-1,5-7-3.5-H, 7 pins, pitch 3.5mm, size 24.5x7.6mm^2, drill diamater 1.2mm, pad diameter 2.4mm, see , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix PT-1,5-7-3.5-H pitch 3.5mm size 24.5x7.6mm^2 drill 1.2mm pad 2.4mm +0 +7 +7 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_PT-1,5-7-5.0-H_1x07_P5.00mm_Horizontal +Terminal Block Phoenix PT-1,5-7-5.0-H, 7 pins, pitch 5mm, size 35x9mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.mouser.com/ds/2/324/ItemDetail_1935161-922578.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix PT-1,5-7-5.0-H pitch 5mm size 35x9mm^2 drill 1.3mm pad 2.6mm +0 +7 +7 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_PT-1,5-8-3.5-H_1x08_P3.50mm_Horizontal +Terminal Block Phoenix PT-1,5-8-3.5-H, 8 pins, pitch 3.5mm, size 28x7.6mm^2, drill diamater 1.2mm, pad diameter 2.4mm, see , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix PT-1,5-8-3.5-H pitch 3.5mm size 28x7.6mm^2 drill 1.2mm pad 2.4mm +0 +8 +8 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_PT-1,5-8-5.0-H_1x08_P5.00mm_Horizontal +Terminal Block Phoenix PT-1,5-8-5.0-H, 8 pins, pitch 5mm, size 40x9mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.mouser.com/ds/2/324/ItemDetail_1935161-922578.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix PT-1,5-8-5.0-H pitch 5mm size 40x9mm^2 drill 1.3mm pad 2.6mm +0 +8 +8 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_PT-1,5-9-3.5-H_1x09_P3.50mm_Horizontal +Terminal Block Phoenix PT-1,5-9-3.5-H, 9 pins, pitch 3.5mm, size 31.5x7.6mm^2, drill diamater 1.2mm, pad diameter 2.4mm, see , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix PT-1,5-9-3.5-H pitch 3.5mm size 31.5x7.6mm^2 drill 1.2mm pad 2.4mm +0 +9 +9 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_PT-1,5-9-5.0-H_1x09_P5.00mm_Horizontal +Terminal Block Phoenix PT-1,5-9-5.0-H, 9 pins, pitch 5mm, size 45x9mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.mouser.com/ds/2/324/ItemDetail_1935161-922578.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix PT-1,5-9-5.0-H pitch 5mm size 45x9mm^2 drill 1.3mm pad 2.6mm +0 +9 +9 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_PT-1,5-10-3.5-H_1x10_P3.50mm_Horizontal +Terminal Block Phoenix PT-1,5-10-3.5-H, 10 pins, pitch 3.5mm, size 35x7.6mm^2, drill diamater 1.2mm, pad diameter 2.4mm, see , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix PT-1,5-10-3.5-H pitch 3.5mm size 35x7.6mm^2 drill 1.2mm pad 2.4mm +0 +10 +10 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_PT-1,5-10-5.0-H_1x10_P5.00mm_Horizontal +Terminal Block Phoenix PT-1,5-10-5.0-H, 10 pins, pitch 5mm, size 50x9mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.mouser.com/ds/2/324/ItemDetail_1935161-922578.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix PT-1,5-10-5.0-H pitch 5mm size 50x9mm^2 drill 1.3mm pad 2.6mm +0 +10 +10 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_PT-1,5-11-3.5-H_1x11_P3.50mm_Horizontal +Terminal Block Phoenix PT-1,5-11-3.5-H, 11 pins, pitch 3.5mm, size 38.5x7.6mm^2, drill diamater 1.2mm, pad diameter 2.4mm, see , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix PT-1,5-11-3.5-H pitch 3.5mm size 38.5x7.6mm^2 drill 1.2mm pad 2.4mm +0 +11 +11 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_PT-1,5-11-5.0-H_1x11_P5.00mm_Horizontal +Terminal Block Phoenix PT-1,5-11-5.0-H, 11 pins, pitch 5mm, size 55x9mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.mouser.com/ds/2/324/ItemDetail_1935161-922578.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix PT-1,5-11-5.0-H pitch 5mm size 55x9mm^2 drill 1.3mm pad 2.6mm +0 +11 +11 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_PT-1,5-12-3.5-H_1x12_P3.50mm_Horizontal +Terminal Block Phoenix PT-1,5-12-3.5-H, 12 pins, pitch 3.5mm, size 42x7.6mm^2, drill diamater 1.2mm, pad diameter 2.4mm, see , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix PT-1,5-12-3.5-H pitch 3.5mm size 42x7.6mm^2 drill 1.2mm pad 2.4mm +0 +12 +12 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_PT-1,5-12-5.0-H_1x12_P5.00mm_Horizontal +Terminal Block Phoenix PT-1,5-12-5.0-H, 12 pins, pitch 5mm, size 60x9mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.mouser.com/ds/2/324/ItemDetail_1935161-922578.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix PT-1,5-12-5.0-H pitch 5mm size 60x9mm^2 drill 1.3mm pad 2.6mm +0 +12 +12 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_PT-1,5-13-3.5-H_1x13_P3.50mm_Horizontal +Terminal Block Phoenix PT-1,5-13-3.5-H, 13 pins, pitch 3.5mm, size 45.5x7.6mm^2, drill diamater 1.2mm, pad diameter 2.4mm, see , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix PT-1,5-13-3.5-H pitch 3.5mm size 45.5x7.6mm^2 drill 1.2mm pad 2.4mm +0 +13 +13 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_PT-1,5-13-5.0-H_1x13_P5.00mm_Horizontal +Terminal Block Phoenix PT-1,5-13-5.0-H, 13 pins, pitch 5mm, size 65x9mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.mouser.com/ds/2/324/ItemDetail_1935161-922578.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix PT-1,5-13-5.0-H pitch 5mm size 65x9mm^2 drill 1.3mm pad 2.6mm +0 +13 +13 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_PT-1,5-14-3.5-H_1x14_P3.50mm_Horizontal +Terminal Block Phoenix PT-1,5-14-3.5-H, 14 pins, pitch 3.5mm, size 49x7.6mm^2, drill diamater 1.2mm, pad diameter 2.4mm, see , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix PT-1,5-14-3.5-H pitch 3.5mm size 49x7.6mm^2 drill 1.2mm pad 2.4mm +0 +14 +14 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_PT-1,5-14-5.0-H_1x14_P5.00mm_Horizontal +Terminal Block Phoenix PT-1,5-14-5.0-H, 14 pins, pitch 5mm, size 70x9mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.mouser.com/ds/2/324/ItemDetail_1935161-922578.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix PT-1,5-14-5.0-H pitch 5mm size 70x9mm^2 drill 1.3mm pad 2.6mm +0 +14 +14 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_PT-1,5-15-3.5-H_1x15_P3.50mm_Horizontal +Terminal Block Phoenix PT-1,5-15-3.5-H, 15 pins, pitch 3.5mm, size 52.5x7.6mm^2, drill diamater 1.2mm, pad diameter 2.4mm, see , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix PT-1,5-15-3.5-H pitch 3.5mm size 52.5x7.6mm^2 drill 1.2mm pad 2.4mm +0 +15 +15 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_PT-1,5-15-5.0-H_1x15_P5.00mm_Horizontal +Terminal Block Phoenix PT-1,5-15-5.0-H, 15 pins, pitch 5mm, size 75x9mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.mouser.com/ds/2/324/ItemDetail_1935161-922578.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix PT-1,5-15-5.0-H pitch 5mm size 75x9mm^2 drill 1.3mm pad 2.6mm +0 +15 +15 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_PT-1,5-16-3.5-H_1x16_P3.50mm_Horizontal +Terminal Block Phoenix PT-1,5-16-3.5-H, 16 pins, pitch 3.5mm, size 56x7.6mm^2, drill diamater 1.2mm, pad diameter 2.4mm, see , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix PT-1,5-16-3.5-H pitch 3.5mm size 56x7.6mm^2 drill 1.2mm pad 2.4mm +0 +16 +16 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_PT-1,5-16-5.0-H_1x16_P5.00mm_Horizontal +Terminal Block Phoenix PT-1,5-16-5.0-H, 16 pins, pitch 5mm, size 80x9mm^2, drill diamater 1.3mm, pad diameter 2.6mm, see http://www.mouser.com/ds/2/324/ItemDetail_1935161-922578.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix PT-1,5-16-5.0-H pitch 5mm size 80x9mm^2 drill 1.3mm pad 2.6mm +0 +16 +16 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_PTSM-0,5-2-2,5-V-SMD_1x02-1MP_P2.50mm_Vertical +PhoenixContact PTSM0,5 2 2,5mm vertical SMD spring clamp terminal block connector http://www.phoenixcontact.com/us/products/1814702/pdf +PhoenixContact PTSM0.5 2 2.5mm vertical SMD spring clamp terminal block connector +0 +4 +3 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_PTSM-0,5-2-2.5-H-THR_1x02_P2.50mm_Horizontal +Terminal Block Phoenix PTSM-0,5-2-2.5-H-THR, 2 pins, pitch 2.5mm, size 7.2x10mm^2, drill diamater 1.2mm, pad diameter 3mm, see http://www.produktinfo.conrad.com/datenblaetter/550000-574999/556441-da-01-de-LEITERPLATTENKL__PTSM_0_5__8_2_5_H_THR.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix PTSM-0,5-2-2.5-H-THR pitch 2.5mm size 7.2x10mm^2 drill 1.2mm pad 3mm +0 +4 +2 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_PTSM-0,5-2-2.5-V-THR_1x02_P2.50mm_Vertical +Terminal Block Phoenix PTSM-0,5-2-2.5-V-THR, vertical (cable from top), 2 pins, pitch 2.5mm, size 5.5x5mm^2, drill diamater 1.2mm, pad diameter 2mm, see http://www.produktinfo.conrad.com/datenblaetter/550000-574999/556444-da-01-de-LEITERPLATTENKL__PTSM_0_5__4_2_5_V_THR.pdf, script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix PTSM-0,5-2-2.5-V-THR vertical pitch 2.5mm size 5.5x5mm^2 drill 1.2mm pad 2mm +0 +4 +2 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_PTSM-0,5-2-HV-2.5-SMD_1x02-1MP_P2.50mm_Vertical +PhoenixContact PTSM0,5 2 HV 2,5mm vertical SMD spring clamp terminal block connector http://www.phoenixcontact.com/us/products/1778696/pdf +2.5mm vertical SMD spring clamp terminal block connector +0 +4 +3 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_PTSM-0,5-3-2,5-V-SMD_1x03-1MP_P2.50mm_Vertical +PhoenixContact PTSM0,5 3 2,5mm vertical SMD spring clamp terminal block connector http://www.phoenixcontact.com/us/products/1814715/pdf +PhoenixContact PTSM0.5 3 2.5mm vertical SMD spring clamp terminal block connector +0 +5 +4 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_PTSM-0,5-3-2.5-H-THR_1x03_P2.50mm_Horizontal +Terminal Block Phoenix PTSM-0,5-3-2.5-H-THR, 3 pins, pitch 2.5mm, size 9.7x10mm^2, drill diamater 1.2mm, pad diameter 3mm, see http://www.produktinfo.conrad.com/datenblaetter/550000-574999/556441-da-01-de-LEITERPLATTENKL__PTSM_0_5__8_2_5_H_THR.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix PTSM-0,5-3-2.5-H-THR pitch 2.5mm size 9.7x10mm^2 drill 1.2mm pad 3mm +0 +6 +3 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_PTSM-0,5-3-2.5-V-THR_1x03_P2.50mm_Vertical +Terminal Block Phoenix PTSM-0,5-3-2.5-V-THR, vertical (cable from top), 3 pins, pitch 2.5mm, size 8x5mm^2, drill diamater 1.2mm, pad diameter 2mm, see http://www.produktinfo.conrad.com/datenblaetter/550000-574999/556444-da-01-de-LEITERPLATTENKL__PTSM_0_5__4_2_5_V_THR.pdf, script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix PTSM-0,5-3-2.5-V-THR vertical pitch 2.5mm size 8x5mm^2 drill 1.2mm pad 2mm +0 +6 +3 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_PTSM-0,5-3-HV-2.5-SMD_1x03-1MP_P2.50mm_Vertical +PhoenixContact PTSM0,5 3 HV 2,5mm vertical SMD spring clamp terminal block connector http://www.phoenixcontact.com/us/products/1778706/pdf +2.5mm vertical SMD spring clamp terminal block connector +0 +5 +4 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_PTSM-0,5-4-2,5-V-SMD_1x04-1MP_P2.50mm_Vertical +PhoenixContact PTSM0,5 4 2,5mm vertical SMD spring clamp terminal block connector http://www.phoenixcontact.com/us/products/1814728/pdf +PhoenixContact PTSM0.5 4 2.5mm vertical SMD spring clamp terminal block connector +0 +6 +5 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_PTSM-0,5-4-2.5-H-THR_1x04_P2.50mm_Horizontal +Terminal Block Phoenix PTSM-0,5-4-2.5-H-THR, 4 pins, pitch 2.5mm, size 12.2x10mm^2, drill diamater 1.2mm, pad diameter 3mm, see http://www.produktinfo.conrad.com/datenblaetter/550000-574999/556441-da-01-de-LEITERPLATTENKL__PTSM_0_5__8_2_5_H_THR.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix PTSM-0,5-4-2.5-H-THR pitch 2.5mm size 12.2x10mm^2 drill 1.2mm pad 3mm +0 +8 +4 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_PTSM-0,5-4-2.5-V-THR_1x04_P2.50mm_Vertical +Terminal Block Phoenix PTSM-0,5-4-2.5-V-THR, vertical (cable from top), 4 pins, pitch 2.5mm, size 10.5x5mm^2, drill diamater 1.2mm, pad diameter 2mm, see http://www.produktinfo.conrad.com/datenblaetter/550000-574999/556444-da-01-de-LEITERPLATTENKL__PTSM_0_5__4_2_5_V_THR.pdf, script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix PTSM-0,5-4-2.5-V-THR vertical pitch 2.5mm size 10.5x5mm^2 drill 1.2mm pad 2mm +0 +8 +4 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_PTSM-0,5-4-HV-2.5-SMD_1x04-1MP_P2.50mm_Vertical +PhoenixContact PTSM0,5 4 HV 2,5mm vertical SMD spring clamp terminal block connector http://www.phoenixcontact.com/us/products/1778719/pdf +2.5mm vertical SMD spring clamp terminal block connector +0 +4 +3 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_PTSM-0,5-5-2,5-V-SMD_1x05-1MP_P2.50mm_Vertical +PhoenixContact PTSM0,5 5 2,5mm vertical SMD spring clamp terminal block connector http://www.phoenixcontact.com/us/products/1814731/pdf +PhoenixContact PTSM0.5 5 2.5mm vertical SMD spring clamp terminal block connector +0 +7 +6 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_PTSM-0,5-5-2.5-H-THR_1x05_P2.50mm_Horizontal +Terminal Block Phoenix PTSM-0,5-5-2.5-H-THR, 5 pins, pitch 2.5mm, size 14.7x10mm^2, drill diamater 1.2mm, pad diameter 3mm, see http://www.produktinfo.conrad.com/datenblaetter/550000-574999/556441-da-01-de-LEITERPLATTENKL__PTSM_0_5__8_2_5_H_THR.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix PTSM-0,5-5-2.5-H-THR pitch 2.5mm size 14.7x10mm^2 drill 1.2mm pad 3mm +0 +10 +5 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_PTSM-0,5-5-2.5-V-THR_1x05_P2.50mm_Vertical +Terminal Block Phoenix PTSM-0,5-5-2.5-V-THR, vertical (cable from top), 5 pins, pitch 2.5mm, size 13x5mm^2, drill diamater 1.2mm, pad diameter 2mm, see http://www.produktinfo.conrad.com/datenblaetter/550000-574999/556444-da-01-de-LEITERPLATTENKL__PTSM_0_5__4_2_5_V_THR.pdf, script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix PTSM-0,5-5-2.5-V-THR vertical pitch 2.5mm size 13x5mm^2 drill 1.2mm pad 2mm +0 +10 +5 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_PTSM-0,5-5-HV-2.5-SMD_1x05-1MP_P2.50mm_Vertical +PhoenixContact PTSM0,5 5 HV 2,5mm vertical SMD spring clamp terminal block connector http://www.phoenixcontact.com/us/products/1778722/pdf +2.5mm vertical SMD spring clamp terminal block connector +0 +7 +6 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_PTSM-0,5-6-2,5-V-SMD_1x06-1MP_P2.50mm_Vertical +PhoenixContact PTSM0,5 6 2,5mm vertical SMD spring clamp terminal block connector http://www.phoenixcontact.com/us/products/1814744/pdf +PhoenixContact PTSM0.5 6 2.5mm vertical SMD spring clamp terminal block connector +0 +8 +7 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_PTSM-0,5-6-2.5-H-THR_1x06_P2.50mm_Horizontal +Terminal Block Phoenix PTSM-0,5-6-2.5-H-THR, 6 pins, pitch 2.5mm, size 17.2x10mm^2, drill diamater 1.2mm, pad diameter 3mm, see http://www.produktinfo.conrad.com/datenblaetter/550000-574999/556441-da-01-de-LEITERPLATTENKL__PTSM_0_5__8_2_5_H_THR.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix PTSM-0,5-6-2.5-H-THR pitch 2.5mm size 17.2x10mm^2 drill 1.2mm pad 3mm +0 +12 +6 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_PTSM-0,5-6-2.5-V-THR_1x06_P2.50mm_Vertical +Terminal Block Phoenix PTSM-0,5-6-2.5-V-THR, vertical (cable from top), 6 pins, pitch 2.5mm, size 15.5x5mm^2, drill diamater 1.2mm, pad diameter 2mm, see http://www.produktinfo.conrad.com/datenblaetter/550000-574999/556444-da-01-de-LEITERPLATTENKL__PTSM_0_5__4_2_5_V_THR.pdf, script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix PTSM-0,5-6-2.5-V-THR vertical pitch 2.5mm size 15.5x5mm^2 drill 1.2mm pad 2mm +0 +12 +6 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_PTSM-0,5-6-HV-2.5-SMD_1x06-1MP_P2.50mm_Vertical +PhoenixContact PTSM0,5 6 HV 2,5mm vertical SMD spring clamp terminal block connector http://www.phoenixcontact.com/us/products/1778735/pdf +2.5mm vertical SMD spring clamp terminal block connector +0 +8 +7 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_PTSM-0,5-7-2,5-V-SMD_1x07-1MP_P2.50mm_Vertical +PhoenixContact PTSM0,5 7 2,5mm vertical SMD spring clamp terminal block connector http://www.phoenixcontact.com/us/products/1814757/pdf +PhoenixContact PTSM0.5 7 2.5mm vertical SMD spring clamp terminal block connector +0 +9 +8 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_PTSM-0,5-7-2.5-H-THR_1x07_P2.50mm_Horizontal +Terminal Block Phoenix PTSM-0,5-7-2.5-H-THR, 7 pins, pitch 2.5mm, size 19.7x10mm^2, drill diamater 1.2mm, pad diameter 3mm, see http://www.produktinfo.conrad.com/datenblaetter/550000-574999/556441-da-01-de-LEITERPLATTENKL__PTSM_0_5__8_2_5_H_THR.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix PTSM-0,5-7-2.5-H-THR pitch 2.5mm size 19.7x10mm^2 drill 1.2mm pad 3mm +0 +14 +7 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_PTSM-0,5-7-2.5-V-THR_1x07_P2.50mm_Vertical +Terminal Block Phoenix PTSM-0,5-7-2.5-V-THR, vertical (cable from top), 7 pins, pitch 2.5mm, size 18x5mm^2, drill diamater 1.2mm, pad diameter 2mm, see http://www.produktinfo.conrad.com/datenblaetter/550000-574999/556444-da-01-de-LEITERPLATTENKL__PTSM_0_5__4_2_5_V_THR.pdf, script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix PTSM-0,5-7-2.5-V-THR vertical pitch 2.5mm size 18x5mm^2 drill 1.2mm pad 2mm +0 +14 +7 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_PTSM-0,5-7-HV-2.5-SMD_1x07-1MP_P2.50mm_Vertical +PhoenixContact PTSM0,5 7 HV 2,5mm vertical SMD spring clamp terminal block connector http://www.phoenixcontact.com/us/products/1778748/pdf +2.5mm vertical SMD spring clamp terminal block connector +0 +9 +8 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_PTSM-0,5-8-2,5-V-SMD_1x08-1MP_P2.50mm_Vertical +PhoenixContact PTSM0,5 8 2,5mm vertical SMD spring clamp terminal block connector http://www.phoenixcontact.com/us/products/1814760/pdf +PhoenixContact PTSM0.5 8 2.5mm vertical SMD spring clamp terminal block connector +0 +10 +9 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_PTSM-0,5-8-2.5-H-THR_1x08_P2.50mm_Horizontal +Terminal Block Phoenix PTSM-0,5-8-2.5-H-THR, 8 pins, pitch 2.5mm, size 22.2x10mm^2, drill diamater 1.2mm, pad diameter 3mm, see http://www.produktinfo.conrad.com/datenblaetter/550000-574999/556441-da-01-de-LEITERPLATTENKL__PTSM_0_5__8_2_5_H_THR.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix PTSM-0,5-8-2.5-H-THR pitch 2.5mm size 22.2x10mm^2 drill 1.2mm pad 3mm +0 +16 +8 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_PTSM-0,5-8-2.5-V-THR_1x08_P2.50mm_Vertical +Terminal Block Phoenix PTSM-0,5-8-2.5-V-THR, vertical (cable from top), 8 pins, pitch 2.5mm, size 20.5x5mm^2, drill diamater 1.2mm, pad diameter 2mm, see http://www.produktinfo.conrad.com/datenblaetter/550000-574999/556444-da-01-de-LEITERPLATTENKL__PTSM_0_5__4_2_5_V_THR.pdf, script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_Phoenix +THT Terminal Block Phoenix PTSM-0,5-8-2.5-V-THR vertical pitch 2.5mm size 20.5x5mm^2 drill 1.2mm pad 2mm +0 +16 +8 +TerminalBlock_Phoenix +TerminalBlock_Phoenix_PTSM-0,5-8-HV-2.5-SMD_1x08-1MP_P2.50mm_Vertical +PhoenixContact PTSM0,5 8 HV 2,5mm vertical SMD spring clamp terminal block connector http://www.phoenixcontact.com/us/products/1778751/pdf +2.5mm vertical SMD spring clamp terminal block connector +0 +10 +9 +TerminalBlock_RND +TerminalBlock_RND_205-00001_1x02_P5.00mm_Horizontal +terminal block RND 205-00001, 2 pins, pitch 5mm, size 10x9mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00001_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00001 pitch 5mm size 10x9mm^2 drill 1.3mm pad 2.5mm +0 +2 +2 +TerminalBlock_RND +TerminalBlock_RND_205-00002_1x03_P5.00mm_Horizontal +terminal block RND 205-00002, 3 pins, pitch 5mm, size 15x9mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00001_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00002 pitch 5mm size 15x9mm^2 drill 1.3mm pad 2.5mm +0 +3 +3 +TerminalBlock_RND +TerminalBlock_RND_205-00003_1x04_P5.00mm_Horizontal +terminal block RND 205-00003, 4 pins, pitch 5mm, size 20x9mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00001_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00003 pitch 5mm size 20x9mm^2 drill 1.3mm pad 2.5mm +0 +4 +4 +TerminalBlock_RND +TerminalBlock_RND_205-00004_1x05_P5.00mm_Horizontal +terminal block RND 205-00004, 5 pins, pitch 5mm, size 25x9mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00001_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00004 pitch 5mm size 25x9mm^2 drill 1.3mm pad 2.5mm +0 +5 +5 +TerminalBlock_RND +TerminalBlock_RND_205-00005_1x06_P5.00mm_Horizontal +terminal block RND 205-00005, 6 pins, pitch 5mm, size 30x9mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00001_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00005 pitch 5mm size 30x9mm^2 drill 1.3mm pad 2.5mm +0 +6 +6 +TerminalBlock_RND +TerminalBlock_RND_205-00006_1x07_P5.00mm_Horizontal +terminal block RND 205-00006, 7 pins, pitch 5mm, size 35x9mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00001_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00006 pitch 5mm size 35x9mm^2 drill 1.3mm pad 2.5mm +0 +7 +7 +TerminalBlock_RND +TerminalBlock_RND_205-00007_1x08_P5.00mm_Horizontal +terminal block RND 205-00007, 8 pins, pitch 5mm, size 40x9mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00001_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00007 pitch 5mm size 40x9mm^2 drill 1.3mm pad 2.5mm +0 +8 +8 +TerminalBlock_RND +TerminalBlock_RND_205-00008_1x09_P5.00mm_Horizontal +terminal block RND 205-00008, 9 pins, pitch 5mm, size 45x9mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00001_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00008 pitch 5mm size 45x9mm^2 drill 1.3mm pad 2.5mm +0 +9 +9 +TerminalBlock_RND +TerminalBlock_RND_205-00009_1x10_P5.00mm_Horizontal +terminal block RND 205-00009, 10 pins, pitch 5mm, size 50x9mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00001_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00009 pitch 5mm size 50x9mm^2 drill 1.3mm pad 2.5mm +0 +10 +10 +TerminalBlock_RND +TerminalBlock_RND_205-00010_1x11_P5.00mm_Horizontal +terminal block RND 205-00010, 11 pins, pitch 5mm, size 55x9mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00001_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00010 pitch 5mm size 55x9mm^2 drill 1.3mm pad 2.5mm +0 +11 +11 +TerminalBlock_RND +TerminalBlock_RND_205-00011_1x12_P5.00mm_Horizontal +terminal block RND 205-00011, 12 pins, pitch 5mm, size 60x9mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00001_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00011 pitch 5mm size 60x9mm^2 drill 1.3mm pad 2.5mm +0 +12 +12 +TerminalBlock_RND +TerminalBlock_RND_205-00012_1x02_P5.00mm_Horizontal +terminal block RND 205-00012, 2 pins, pitch 5mm, size 10x7.6mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00012_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00012 pitch 5mm size 10x7.6mm^2 drill 1.3mm pad 2.5mm +0 +2 +2 +TerminalBlock_RND +TerminalBlock_RND_205-00013_1x03_P5.00mm_Horizontal +terminal block RND 205-00013, 3 pins, pitch 5mm, size 15x7.6mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00012_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00013 pitch 5mm size 15x7.6mm^2 drill 1.3mm pad 2.5mm +0 +3 +3 +TerminalBlock_RND +TerminalBlock_RND_205-00014_1x04_P5.00mm_Horizontal +terminal block RND 205-00014, 4 pins, pitch 5mm, size 20x7.6mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00012_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00014 pitch 5mm size 20x7.6mm^2 drill 1.3mm pad 2.5mm +0 +4 +4 +TerminalBlock_RND +TerminalBlock_RND_205-00015_1x05_P5.00mm_Horizontal +terminal block RND 205-00015, 5 pins, pitch 5mm, size 25x7.6mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00012_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00015 pitch 5mm size 25x7.6mm^2 drill 1.3mm pad 2.5mm +0 +5 +5 +TerminalBlock_RND +TerminalBlock_RND_205-00016_1x06_P5.00mm_Horizontal +terminal block RND 205-00016, 6 pins, pitch 5mm, size 30x7.6mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00012_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00016 pitch 5mm size 30x7.6mm^2 drill 1.3mm pad 2.5mm +0 +6 +6 +TerminalBlock_RND +TerminalBlock_RND_205-00017_1x07_P5.00mm_Horizontal +terminal block RND 205-00017, 7 pins, pitch 5mm, size 35x7.6mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00012_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00017 pitch 5mm size 35x7.6mm^2 drill 1.3mm pad 2.5mm +0 +7 +7 +TerminalBlock_RND +TerminalBlock_RND_205-00018_1x08_P5.00mm_Horizontal +terminal block RND 205-00018, 8 pins, pitch 5mm, size 40x7.6mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00012_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00018 pitch 5mm size 40x7.6mm^2 drill 1.3mm pad 2.5mm +0 +8 +8 +TerminalBlock_RND +TerminalBlock_RND_205-00019_1x09_P5.00mm_Horizontal +terminal block RND 205-00019, 9 pins, pitch 5mm, size 45x7.6mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00012_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00019 pitch 5mm size 45x7.6mm^2 drill 1.3mm pad 2.5mm +0 +9 +9 +TerminalBlock_RND +TerminalBlock_RND_205-00020_1x10_P5.00mm_Horizontal +terminal block RND 205-00020, 10 pins, pitch 5mm, size 50x7.6mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00012_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00020 pitch 5mm size 50x7.6mm^2 drill 1.3mm pad 2.5mm +0 +10 +10 +TerminalBlock_RND +TerminalBlock_RND_205-00021_1x11_P5.00mm_Horizontal +terminal block RND 205-00021, 11 pins, pitch 5mm, size 55x7.6mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00012_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00021 pitch 5mm size 55x7.6mm^2 drill 1.3mm pad 2.5mm +0 +11 +11 +TerminalBlock_RND +TerminalBlock_RND_205-00022_1x12_P5.00mm_Horizontal +terminal block RND 205-00022, 12 pins, pitch 5mm, size 60x7.6mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00012_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00022 pitch 5mm size 60x7.6mm^2 drill 1.3mm pad 2.5mm +0 +12 +12 +TerminalBlock_RND +TerminalBlock_RND_205-00023_1x02_P10.00mm_Horizontal +terminal block RND 205-00023, 2 pins, pitch 10mm, size 15x9mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00023_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00023 pitch 10mm size 15x9mm^2 drill 1.3mm pad 2.5mm +0 +2 +2 +TerminalBlock_RND +TerminalBlock_RND_205-00024_1x03_P10.00mm_Horizontal +terminal block RND 205-00024, 3 pins, pitch 10mm, size 25x9mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00023_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00024 pitch 10mm size 25x9mm^2 drill 1.3mm pad 2.5mm +0 +3 +3 +TerminalBlock_RND +TerminalBlock_RND_205-00025_1x04_P10.00mm_Horizontal +terminal block RND 205-00025, 4 pins, pitch 10mm, size 35x9mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00023_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00025 pitch 10mm size 35x9mm^2 drill 1.3mm pad 2.5mm +0 +4 +4 +TerminalBlock_RND +TerminalBlock_RND_205-00026_1x05_P10.00mm_Horizontal +terminal block RND 205-00026, 5 pins, pitch 10mm, size 45x9mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00023_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00026 pitch 10mm size 45x9mm^2 drill 1.3mm pad 2.5mm +0 +5 +5 +TerminalBlock_RND +TerminalBlock_RND_205-00027_1x06_P10.00mm_Horizontal +terminal block RND 205-00027, 6 pins, pitch 10mm, size 55x9mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00023_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00027 pitch 10mm size 55x9mm^2 drill 1.3mm pad 2.5mm +0 +6 +6 +TerminalBlock_RND +TerminalBlock_RND_205-00028_1x07_P10.00mm_Horizontal +terminal block RND 205-00028, 7 pins, pitch 10mm, size 65x9mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00023_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00028 pitch 10mm size 65x9mm^2 drill 1.3mm pad 2.5mm +0 +7 +7 +TerminalBlock_RND +TerminalBlock_RND_205-00029_1x08_P10.00mm_Horizontal +terminal block RND 205-00029, 8 pins, pitch 10mm, size 75x9mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00023_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00029 pitch 10mm size 75x9mm^2 drill 1.3mm pad 2.5mm +0 +8 +8 +TerminalBlock_RND +TerminalBlock_RND_205-00030_1x09_P10.00mm_Horizontal +terminal block RND 205-00030, 9 pins, pitch 10mm, size 85x9mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00023_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00030 pitch 10mm size 85x9mm^2 drill 1.3mm pad 2.5mm +0 +9 +9 +TerminalBlock_RND +TerminalBlock_RND_205-00031_1x10_P10.00mm_Horizontal +terminal block RND 205-00031, 10 pins, pitch 10mm, size 95x9mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00023_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00031 pitch 10mm size 95x9mm^2 drill 1.3mm pad 2.5mm +0 +10 +10 +TerminalBlock_RND +TerminalBlock_RND_205-00032_1x11_P10.00mm_Horizontal +terminal block RND 205-00032, 11 pins, pitch 10mm, size 105x9mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00023_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00032 pitch 10mm size 105x9mm^2 drill 1.3mm pad 2.5mm +0 +11 +11 +TerminalBlock_RND +TerminalBlock_RND_205-00033_1x12_P10.00mm_Horizontal +terminal block RND 205-00033, 12 pins, pitch 10mm, size 115x9mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00023_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00033 pitch 10mm size 115x9mm^2 drill 1.3mm pad 2.5mm +0 +12 +12 +TerminalBlock_RND +TerminalBlock_RND_205-00045_1x02_P5.00mm_Horizontal +terminal block RND 205-00045, 2 pins, pitch 5mm, size 10x8.1mm^2, drill diamater 1.1mm, pad diameter 2.1mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00045_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00045 pitch 5mm size 10x8.1mm^2 drill 1.1mm pad 2.1mm +0 +2 +2 +TerminalBlock_RND +TerminalBlock_RND_205-00046_1x03_P5.00mm_Horizontal +terminal block RND 205-00046, 3 pins, pitch 5mm, size 15x8.1mm^2, drill diamater 1.1mm, pad diameter 2.1mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00045_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00046 pitch 5mm size 15x8.1mm^2 drill 1.1mm pad 2.1mm +0 +3 +3 +TerminalBlock_RND +TerminalBlock_RND_205-00047_1x04_P5.00mm_Horizontal +terminal block RND 205-00047, 4 pins, pitch 5mm, size 20x8.1mm^2, drill diamater 1.1mm, pad diameter 2.1mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00045_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00047 pitch 5mm size 20x8.1mm^2 drill 1.1mm pad 2.1mm +0 +4 +4 +TerminalBlock_RND +TerminalBlock_RND_205-00048_1x05_P5.00mm_Horizontal +terminal block RND 205-00048, 5 pins, pitch 5mm, size 25x8.1mm^2, drill diamater 1.1mm, pad diameter 2.1mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00045_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00048 pitch 5mm size 25x8.1mm^2 drill 1.1mm pad 2.1mm +0 +5 +5 +TerminalBlock_RND +TerminalBlock_RND_205-00049_1x06_P5.00mm_Horizontal +terminal block RND 205-00049, 6 pins, pitch 5mm, size 30x8.1mm^2, drill diamater 1.1mm, pad diameter 2.1mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00045_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00049 pitch 5mm size 30x8.1mm^2 drill 1.1mm pad 2.1mm +0 +6 +6 +TerminalBlock_RND +TerminalBlock_RND_205-00050_1x07_P5.00mm_Horizontal +terminal block RND 205-00050, 7 pins, pitch 5mm, size 35x8.1mm^2, drill diamater 1.1mm, pad diameter 2.1mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00045_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00050 pitch 5mm size 35x8.1mm^2 drill 1.1mm pad 2.1mm +0 +7 +7 +TerminalBlock_RND +TerminalBlock_RND_205-00051_1x08_P5.00mm_Horizontal +terminal block RND 205-00051, 8 pins, pitch 5mm, size 40x8.1mm^2, drill diamater 1.1mm, pad diameter 2.1mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00045_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00051 pitch 5mm size 40x8.1mm^2 drill 1.1mm pad 2.1mm +0 +8 +8 +TerminalBlock_RND +TerminalBlock_RND_205-00052_1x09_P5.00mm_Horizontal +terminal block RND 205-00052, 9 pins, pitch 5mm, size 45x8.1mm^2, drill diamater 1.1mm, pad diameter 2.1mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00045_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00052 pitch 5mm size 45x8.1mm^2 drill 1.1mm pad 2.1mm +0 +9 +9 +TerminalBlock_RND +TerminalBlock_RND_205-00053_1x10_P5.00mm_Horizontal +terminal block RND 205-00053, 10 pins, pitch 5mm, size 50x8.1mm^2, drill diamater 1.1mm, pad diameter 2.1mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00045_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00053 pitch 5mm size 50x8.1mm^2 drill 1.1mm pad 2.1mm +0 +10 +10 +TerminalBlock_RND +TerminalBlock_RND_205-00054_1x11_P5.00mm_Horizontal +terminal block RND 205-00054, 11 pins, pitch 5mm, size 55x8.1mm^2, drill diamater 1.1mm, pad diameter 2.1mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00045_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00054 pitch 5mm size 55x8.1mm^2 drill 1.1mm pad 2.1mm +0 +11 +11 +TerminalBlock_RND +TerminalBlock_RND_205-00055_1x12_P5.00mm_Horizontal +terminal block RND 205-00055, 12 pins, pitch 5mm, size 60x8.1mm^2, drill diamater 1.1mm, pad diameter 2.1mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00045_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00055 pitch 5mm size 60x8.1mm^2 drill 1.1mm pad 2.1mm +0 +12 +12 +TerminalBlock_RND +TerminalBlock_RND_205-00056_1x02_P5.00mm_45Degree +terminal block RND 205-00056, 45Degree (cable under 45degree), 2 pins, pitch 5mm, size 10x12.6mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00056_DB_EN.pdf, script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00056 45Degree pitch 5mm size 10x12.6mm^2 drill 1.3mm pad 2.5mm +0 +2 +2 +TerminalBlock_RND +TerminalBlock_RND_205-00057_1x03_P5.00mm_45Degree +terminal block RND 205-00057, 45Degree (cable under 45degree), 3 pins, pitch 5mm, size 15x12.6mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00056_DB_EN.pdf, script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00057 45Degree pitch 5mm size 15x12.6mm^2 drill 1.3mm pad 2.5mm +0 +3 +3 +TerminalBlock_RND +TerminalBlock_RND_205-00058_1x04_P5.00mm_45Degree +terminal block RND 205-00058, 45Degree (cable under 45degree), 4 pins, pitch 5mm, size 20x12.6mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00056_DB_EN.pdf, script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00058 45Degree pitch 5mm size 20x12.6mm^2 drill 1.3mm pad 2.5mm +0 +4 +4 +TerminalBlock_RND +TerminalBlock_RND_205-00059_1x05_P5.00mm_45Degree +terminal block RND 205-00059, 45Degree (cable under 45degree), 5 pins, pitch 5mm, size 25x12.6mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00056_DB_EN.pdf, script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00059 45Degree pitch 5mm size 25x12.6mm^2 drill 1.3mm pad 2.5mm +0 +5 +5 +TerminalBlock_RND +TerminalBlock_RND_205-00060_1x06_P5.00mm_45Degree +terminal block RND 205-00060, 45Degree (cable under 45degree), 6 pins, pitch 5mm, size 30x12.6mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00056_DB_EN.pdf, script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00060 45Degree pitch 5mm size 30x12.6mm^2 drill 1.3mm pad 2.5mm +0 +6 +6 +TerminalBlock_RND +TerminalBlock_RND_205-00061_1x07_P5.00mm_45Degree +terminal block RND 205-00061, 45Degree (cable under 45degree), 7 pins, pitch 5mm, size 35x12.6mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00056_DB_EN.pdf, script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00061 45Degree pitch 5mm size 35x12.6mm^2 drill 1.3mm pad 2.5mm +0 +7 +7 +TerminalBlock_RND +TerminalBlock_RND_205-00062_1x08_P5.00mm_45Degree +terminal block RND 205-00062, 45Degree (cable under 45degree), 8 pins, pitch 5mm, size 40x12.6mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00056_DB_EN.pdf, script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00062 45Degree pitch 5mm size 40x12.6mm^2 drill 1.3mm pad 2.5mm +0 +8 +8 +TerminalBlock_RND +TerminalBlock_RND_205-00063_1x09_P5.00mm_45Degree +terminal block RND 205-00063, 45Degree (cable under 45degree), 9 pins, pitch 5mm, size 45x12.6mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00056_DB_EN.pdf, script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00063 45Degree pitch 5mm size 45x12.6mm^2 drill 1.3mm pad 2.5mm +0 +9 +9 +TerminalBlock_RND +TerminalBlock_RND_205-00064_1x10_P5.00mm_45Degree +terminal block RND 205-00064, 45Degree (cable under 45degree), 10 pins, pitch 5mm, size 50x12.6mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00056_DB_EN.pdf, script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00064 45Degree pitch 5mm size 50x12.6mm^2 drill 1.3mm pad 2.5mm +0 +10 +10 +TerminalBlock_RND +TerminalBlock_RND_205-00065_1x11_P5.00mm_45Degree +terminal block RND 205-00065, 45Degree (cable under 45degree), 11 pins, pitch 5mm, size 55x12.6mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00056_DB_EN.pdf, script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00065 45Degree pitch 5mm size 55x12.6mm^2 drill 1.3mm pad 2.5mm +0 +11 +11 +TerminalBlock_RND +TerminalBlock_RND_205-00066_1x12_P5.00mm_45Degree +terminal block RND 205-00066, 45Degree (cable under 45degree), 12 pins, pitch 5mm, size 60x12.6mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00056_DB_EN.pdf, script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00066 45Degree pitch 5mm size 60x12.6mm^2 drill 1.3mm pad 2.5mm +0 +12 +12 +TerminalBlock_RND +TerminalBlock_RND_205-00067_1x02_P7.50mm_Horizontal +terminal block RND 205-00067, 2 pins, pitch 7.5mm, size 15x10.3mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00067_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00067 pitch 7.5mm size 15x10.3mm^2 drill 1.3mm pad 2.5mm +0 +2 +2 +TerminalBlock_RND +TerminalBlock_RND_205-00068_1x03_P7.50mm_Horizontal +terminal block RND 205-00068, 3 pins, pitch 7.5mm, size 22.5x10.3mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00067_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00068 pitch 7.5mm size 22.5x10.3mm^2 drill 1.3mm pad 2.5mm +0 +3 +3 +TerminalBlock_RND +TerminalBlock_RND_205-00069_1x04_P7.50mm_Horizontal +terminal block RND 205-00069, 4 pins, pitch 7.5mm, size 30x10.3mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00067_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00069 pitch 7.5mm size 30x10.3mm^2 drill 1.3mm pad 2.5mm +0 +4 +4 +TerminalBlock_RND +TerminalBlock_RND_205-00070_1x05_P7.50mm_Horizontal +terminal block RND 205-00070, 5 pins, pitch 7.5mm, size 37.5x10.3mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00067_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00070 pitch 7.5mm size 37.5x10.3mm^2 drill 1.3mm pad 2.5mm +0 +5 +5 +TerminalBlock_RND +TerminalBlock_RND_205-00071_1x06_P7.50mm_Horizontal +terminal block RND 205-00071, 6 pins, pitch 7.5mm, size 45x10.3mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00067_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00071 pitch 7.5mm size 45x10.3mm^2 drill 1.3mm pad 2.5mm +0 +6 +6 +TerminalBlock_RND +TerminalBlock_RND_205-00072_1x07_P7.50mm_Horizontal +terminal block RND 205-00072, 7 pins, pitch 7.5mm, size 52.5x10.3mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00067_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00072 pitch 7.5mm size 52.5x10.3mm^2 drill 1.3mm pad 2.5mm +0 +7 +7 +TerminalBlock_RND +TerminalBlock_RND_205-00073_1x08_P7.50mm_Horizontal +terminal block RND 205-00073, 8 pins, pitch 7.5mm, size 60x10.3mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00067_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00073 pitch 7.5mm size 60x10.3mm^2 drill 1.3mm pad 2.5mm +0 +8 +8 +TerminalBlock_RND +TerminalBlock_RND_205-00074_1x09_P7.50mm_Horizontal +terminal block RND 205-00074, 9 pins, pitch 7.5mm, size 67.5x10.3mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00067_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00074 pitch 7.5mm size 67.5x10.3mm^2 drill 1.3mm pad 2.5mm +0 +9 +9 +TerminalBlock_RND +TerminalBlock_RND_205-00075_1x10_P7.50mm_Horizontal +terminal block RND 205-00075, 10 pins, pitch 7.5mm, size 75x10.3mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00067_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00075 pitch 7.5mm size 75x10.3mm^2 drill 1.3mm pad 2.5mm +0 +10 +10 +TerminalBlock_RND +TerminalBlock_RND_205-00076_1x11_P7.50mm_Horizontal +terminal block RND 205-00076, 11 pins, pitch 7.5mm, size 82.5x10.3mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00067_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00076 pitch 7.5mm size 82.5x10.3mm^2 drill 1.3mm pad 2.5mm +0 +11 +11 +TerminalBlock_RND +TerminalBlock_RND_205-00077_1x12_P7.50mm_Horizontal +terminal block RND 205-00077, 12 pins, pitch 7.5mm, size 90x10.3mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00067_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00077 pitch 7.5mm size 90x10.3mm^2 drill 1.3mm pad 2.5mm +0 +12 +12 +TerminalBlock_RND +TerminalBlock_RND_205-00078_1x02_P10.00mm_Horizontal +terminal block RND 205-00078, 2 pins, pitch 10mm, size 15x10.3mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00078_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00078 pitch 10mm size 15x10.3mm^2 drill 1.3mm pad 2.5mm +0 +2 +2 +TerminalBlock_RND +TerminalBlock_RND_205-00079_1x03_P10.00mm_Horizontal +terminal block RND 205-00079, 3 pins, pitch 10mm, size 25x10.3mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00078_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00079 pitch 10mm size 25x10.3mm^2 drill 1.3mm pad 2.5mm +0 +3 +3 +TerminalBlock_RND +TerminalBlock_RND_205-00080_1x04_P10.00mm_Horizontal +terminal block RND 205-00080, 4 pins, pitch 10mm, size 35x10.3mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00078_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00080 pitch 10mm size 35x10.3mm^2 drill 1.3mm pad 2.5mm +0 +4 +4 +TerminalBlock_RND +TerminalBlock_RND_205-00081_1x05_P10.00mm_Horizontal +terminal block RND 205-00081, 5 pins, pitch 10mm, size 45x10.3mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00078_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00081 pitch 10mm size 45x10.3mm^2 drill 1.3mm pad 2.5mm +0 +5 +5 +TerminalBlock_RND +TerminalBlock_RND_205-00082_1x06_P10.00mm_Horizontal +terminal block RND 205-00082, 6 pins, pitch 10mm, size 55x10.3mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00078_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00082 pitch 10mm size 55x10.3mm^2 drill 1.3mm pad 2.5mm +0 +6 +6 +TerminalBlock_RND +TerminalBlock_RND_205-00083_1x07_P10.00mm_Horizontal +terminal block RND 205-00083, 7 pins, pitch 10mm, size 65x10.3mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00078_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00083 pitch 10mm size 65x10.3mm^2 drill 1.3mm pad 2.5mm +0 +7 +7 +TerminalBlock_RND +TerminalBlock_RND_205-00084_1x08_P10.00mm_Horizontal +terminal block RND 205-00084, 8 pins, pitch 10mm, size 75x10.3mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00078_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00084 pitch 10mm size 75x10.3mm^2 drill 1.3mm pad 2.5mm +0 +8 +8 +TerminalBlock_RND +TerminalBlock_RND_205-00085_1x09_P10.00mm_Horizontal +terminal block RND 205-00085, 9 pins, pitch 10mm, size 85x10.3mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00078_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00085 pitch 10mm size 85x10.3mm^2 drill 1.3mm pad 2.5mm +0 +9 +9 +TerminalBlock_RND +TerminalBlock_RND_205-00086_1x10_P10.00mm_Horizontal +terminal block RND 205-00086, 10 pins, pitch 10mm, size 95x10.3mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00078_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00086 pitch 10mm size 95x10.3mm^2 drill 1.3mm pad 2.5mm +0 +10 +10 +TerminalBlock_RND +TerminalBlock_RND_205-00087_1x11_P10.00mm_Horizontal +terminal block RND 205-00087, 11 pins, pitch 10mm, size 105x10.3mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00078_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00087 pitch 10mm size 105x10.3mm^2 drill 1.3mm pad 2.5mm +0 +11 +11 +TerminalBlock_RND +TerminalBlock_RND_205-00088_1x12_P10.00mm_Horizontal +terminal block RND 205-00088, 12 pins, pitch 10mm, size 115x10.3mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00078_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00088 pitch 10mm size 115x10.3mm^2 drill 1.3mm pad 2.5mm +0 +12 +12 +TerminalBlock_RND +TerminalBlock_RND_205-00232_1x02_P5.08mm_Horizontal +terminal block RND 205-00232, 2 pins, pitch 5.08mm, size 10.2x8.45mm^2, drill diamater 1.1mm, pad diameter 2.1mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00232_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00232 pitch 5.08mm size 10.2x8.45mm^2 drill 1.1mm pad 2.1mm +0 +2 +2 +TerminalBlock_RND +TerminalBlock_RND_205-00233_1x03_P5.08mm_Horizontal +terminal block RND 205-00233, 3 pins, pitch 5.08mm, size 15.2x8.45mm^2, drill diamater 1.1mm, pad diameter 2.1mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00232_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00233 pitch 5.08mm size 15.2x8.45mm^2 drill 1.1mm pad 2.1mm +0 +3 +3 +TerminalBlock_RND +TerminalBlock_RND_205-00234_1x04_P5.08mm_Horizontal +terminal block RND 205-00234, 4 pins, pitch 5.08mm, size 20.3x8.45mm^2, drill diamater 1.1mm, pad diameter 2.1mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00232_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00234 pitch 5.08mm size 20.3x8.45mm^2 drill 1.1mm pad 2.1mm +0 +4 +4 +TerminalBlock_RND +TerminalBlock_RND_205-00235_1x05_P5.08mm_Horizontal +terminal block RND 205-00235, 5 pins, pitch 5.08mm, size 25.4x8.45mm^2, drill diamater 1.1mm, pad diameter 2.1mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00232_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00235 pitch 5.08mm size 25.4x8.45mm^2 drill 1.1mm pad 2.1mm +0 +5 +5 +TerminalBlock_RND +TerminalBlock_RND_205-00236_1x06_P5.08mm_Horizontal +terminal block RND 205-00236, 6 pins, pitch 5.08mm, size 30.5x8.45mm^2, drill diamater 1.1mm, pad diameter 2.1mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00232_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00236 pitch 5.08mm size 30.5x8.45mm^2 drill 1.1mm pad 2.1mm +0 +6 +6 +TerminalBlock_RND +TerminalBlock_RND_205-00237_1x07_P5.08mm_Horizontal +terminal block RND 205-00237, 7 pins, pitch 5.08mm, size 35.6x8.45mm^2, drill diamater 1.1mm, pad diameter 2.1mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00232_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00237 pitch 5.08mm size 35.6x8.45mm^2 drill 1.1mm pad 2.1mm +0 +7 +7 +TerminalBlock_RND +TerminalBlock_RND_205-00238_1x08_P5.08mm_Horizontal +terminal block RND 205-00238, 8 pins, pitch 5.08mm, size 40.6x8.45mm^2, drill diamater 1.1mm, pad diameter 2.1mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00232_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00238 pitch 5.08mm size 40.6x8.45mm^2 drill 1.1mm pad 2.1mm +0 +8 +8 +TerminalBlock_RND +TerminalBlock_RND_205-00239_1x09_P5.08mm_Horizontal +terminal block RND 205-00239, 9 pins, pitch 5.08mm, size 45.7x8.45mm^2, drill diamater 1.1mm, pad diameter 2.1mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00232_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00239 pitch 5.08mm size 45.7x8.45mm^2 drill 1.1mm pad 2.1mm +0 +9 +9 +TerminalBlock_RND +TerminalBlock_RND_205-00240_1x10_P5.08mm_Horizontal +terminal block RND 205-00240, 10 pins, pitch 5.08mm, size 50.8x8.45mm^2, drill diamater 1.1mm, pad diameter 2.1mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00232_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00240 pitch 5.08mm size 50.8x8.45mm^2 drill 1.1mm pad 2.1mm +0 +10 +10 +TerminalBlock_RND +TerminalBlock_RND_205-00241_1x02_P10.16mm_Horizontal +terminal block RND 205-00241, 2 pins, pitch 10.2mm, size 15.2x8.3mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00023_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00241 pitch 10.2mm size 15.2x8.3mm^2 drill 1.3mm pad 2.5mm +0 +2 +2 +TerminalBlock_RND +TerminalBlock_RND_205-00242_1x03_P10.16mm_Horizontal +terminal block RND 205-00242, 3 pins, pitch 10.2mm, size 25.4x8.3mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00023_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00242 pitch 10.2mm size 25.4x8.3mm^2 drill 1.3mm pad 2.5mm +0 +3 +3 +TerminalBlock_RND +TerminalBlock_RND_205-00243_1x04_P10.16mm_Horizontal +terminal block RND 205-00243, 4 pins, pitch 10.2mm, size 35.6x8.3mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00023_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00243 pitch 10.2mm size 35.6x8.3mm^2 drill 1.3mm pad 2.5mm +0 +4 +4 +TerminalBlock_RND +TerminalBlock_RND_205-00244_1x05_P10.16mm_Horizontal +terminal block RND 205-00244, 5 pins, pitch 10.2mm, size 45.7x8.3mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00023_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00244 pitch 10.2mm size 45.7x8.3mm^2 drill 1.3mm pad 2.5mm +0 +5 +5 +TerminalBlock_RND +TerminalBlock_RND_205-00245_1x06_P10.16mm_Horizontal +terminal block RND 205-00245, 6 pins, pitch 10.2mm, size 55.9x8.3mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00023_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00245 pitch 10.2mm size 55.9x8.3mm^2 drill 1.3mm pad 2.5mm +0 +6 +6 +TerminalBlock_RND +TerminalBlock_RND_205-00246_1x07_P10.16mm_Horizontal +terminal block RND 205-00246, 7 pins, pitch 10.2mm, size 66x8.3mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00023_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00246 pitch 10.2mm size 66x8.3mm^2 drill 1.3mm pad 2.5mm +0 +7 +7 +TerminalBlock_RND +TerminalBlock_RND_205-00247_1x08_P10.16mm_Horizontal +terminal block RND 205-00247, 8 pins, pitch 10.2mm, size 76.2x8.3mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00023_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00247 pitch 10.2mm size 76.2x8.3mm^2 drill 1.3mm pad 2.5mm +0 +8 +8 +TerminalBlock_RND +TerminalBlock_RND_205-00248_1x09_P10.16mm_Horizontal +terminal block RND 205-00248, 9 pins, pitch 10.2mm, size 86.4x8.3mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00023_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00248 pitch 10.2mm size 86.4x8.3mm^2 drill 1.3mm pad 2.5mm +0 +9 +9 +TerminalBlock_RND +TerminalBlock_RND_205-00249_1x10_P10.16mm_Horizontal +terminal block RND 205-00249, 10 pins, pitch 10.2mm, size 96.5x8.3mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00023_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00249 pitch 10.2mm size 96.5x8.3mm^2 drill 1.3mm pad 2.5mm +0 +10 +10 +TerminalBlock_RND +TerminalBlock_RND_205-00250_1x11_P10.16mm_Horizontal +terminal block RND 205-00250, 11 pins, pitch 10.2mm, size 107x8.3mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00023_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00250 pitch 10.2mm size 107x8.3mm^2 drill 1.3mm pad 2.5mm +0 +11 +11 +TerminalBlock_RND +TerminalBlock_RND_205-00251_1x12_P10.16mm_Horizontal +terminal block RND 205-00251, 12 pins, pitch 10.2mm, size 117x8.3mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00023_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00251 pitch 10.2mm size 117x8.3mm^2 drill 1.3mm pad 2.5mm +0 +12 +12 +TerminalBlock_RND +TerminalBlock_RND_205-00276_1x02_P5.00mm_Vertical +terminal block RND 205-00078, vertical (cable from top), 2 pins, pitch 5mm, size 10x10mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00276_DB_EN.pdf, script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00078 vertical pitch 5mm size 10x10mm^2 drill 1.3mm pad 2.5mm +0 +2 +2 +TerminalBlock_RND +TerminalBlock_RND_205-00277_1x03_P5.00mm_Vertical +terminal block RND 205-00079, vertical (cable from top), 3 pins, pitch 5mm, size 15x10mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00276_DB_EN.pdf, script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00079 vertical pitch 5mm size 15x10mm^2 drill 1.3mm pad 2.5mm +0 +3 +3 +TerminalBlock_RND +TerminalBlock_RND_205-00278_1x04_P5.00mm_Vertical +terminal block RND 205-00080, vertical (cable from top), 4 pins, pitch 5mm, size 20x10mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00276_DB_EN.pdf, script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00080 vertical pitch 5mm size 20x10mm^2 drill 1.3mm pad 2.5mm +0 +4 +4 +TerminalBlock_RND +TerminalBlock_RND_205-00279_1x05_P5.00mm_Vertical +terminal block RND 205-00081, vertical (cable from top), 5 pins, pitch 5mm, size 25x10mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00276_DB_EN.pdf, script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00081 vertical pitch 5mm size 25x10mm^2 drill 1.3mm pad 2.5mm +0 +5 +5 +TerminalBlock_RND +TerminalBlock_RND_205-00280_1x06_P5.00mm_Vertical +terminal block RND 205-00082, vertical (cable from top), 6 pins, pitch 5mm, size 30x10mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00276_DB_EN.pdf, script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00082 vertical pitch 5mm size 30x10mm^2 drill 1.3mm pad 2.5mm +0 +6 +6 +TerminalBlock_RND +TerminalBlock_RND_205-00281_1x07_P5.00mm_Vertical +terminal block RND 205-00083, vertical (cable from top), 7 pins, pitch 5mm, size 35x10mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00276_DB_EN.pdf, script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00083 vertical pitch 5mm size 35x10mm^2 drill 1.3mm pad 2.5mm +0 +7 +7 +TerminalBlock_RND +TerminalBlock_RND_205-00282_1x08_P5.00mm_Vertical +terminal block RND 205-00084, vertical (cable from top), 8 pins, pitch 5mm, size 40x10mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00276_DB_EN.pdf, script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00084 vertical pitch 5mm size 40x10mm^2 drill 1.3mm pad 2.5mm +0 +8 +8 +TerminalBlock_RND +TerminalBlock_RND_205-00283_1x09_P5.00mm_Vertical +terminal block RND 205-00085, vertical (cable from top), 9 pins, pitch 5mm, size 45x10mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00276_DB_EN.pdf, script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00085 vertical pitch 5mm size 45x10mm^2 drill 1.3mm pad 2.5mm +0 +9 +9 +TerminalBlock_RND +TerminalBlock_RND_205-00284_1x10_P5.00mm_Vertical +terminal block RND 205-00086, vertical (cable from top), 10 pins, pitch 5mm, size 50x10mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00276_DB_EN.pdf, script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00086 vertical pitch 5mm size 50x10mm^2 drill 1.3mm pad 2.5mm +0 +10 +10 +TerminalBlock_RND +TerminalBlock_RND_205-00285_1x11_P5.00mm_Vertical +terminal block RND 205-00087, vertical (cable from top), 11 pins, pitch 5mm, size 55x10mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00276_DB_EN.pdf, script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00087 vertical pitch 5mm size 55x10mm^2 drill 1.3mm pad 2.5mm +0 +11 +11 +TerminalBlock_RND +TerminalBlock_RND_205-00286_1x12_P5.00mm_Vertical +terminal block RND 205-00088, vertical (cable from top), 12 pins, pitch 5mm, size 60x10mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00276_DB_EN.pdf, script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00088 vertical pitch 5mm size 60x10mm^2 drill 1.3mm pad 2.5mm +0 +12 +12 +TerminalBlock_RND +TerminalBlock_RND_205-00287_1x02_P5.08mm_Horizontal +terminal block RND 205-00287, 2 pins, pitch 5.08mm, size 10.2x10.6mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00287_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00287 pitch 5.08mm size 10.2x10.6mm^2 drill 1.3mm pad 2.5mm +0 +2 +2 +TerminalBlock_RND +TerminalBlock_RND_205-00288_1x03_P5.08mm_Horizontal +terminal block RND 205-00288, 3 pins, pitch 5.08mm, size 15.2x10.6mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00287_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00288 pitch 5.08mm size 15.2x10.6mm^2 drill 1.3mm pad 2.5mm +0 +3 +3 +TerminalBlock_RND +TerminalBlock_RND_205-00289_1x04_P5.08mm_Horizontal +terminal block RND 205-00289, 4 pins, pitch 5.08mm, size 20.3x10.6mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00287_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00289 pitch 5.08mm size 20.3x10.6mm^2 drill 1.3mm pad 2.5mm +0 +4 +4 +TerminalBlock_RND +TerminalBlock_RND_205-00290_1x05_P5.08mm_Horizontal +terminal block RND 205-00290, 5 pins, pitch 5.08mm, size 25.4x10.6mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00287_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00290 pitch 5.08mm size 25.4x10.6mm^2 drill 1.3mm pad 2.5mm +0 +5 +5 +TerminalBlock_RND +TerminalBlock_RND_205-00291_1x06_P5.08mm_Horizontal +terminal block RND 205-00291, 6 pins, pitch 5.08mm, size 30.5x10.6mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00287_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00291 pitch 5.08mm size 30.5x10.6mm^2 drill 1.3mm pad 2.5mm +0 +6 +6 +TerminalBlock_RND +TerminalBlock_RND_205-00292_1x07_P5.08mm_Horizontal +terminal block RND 205-00292, 7 pins, pitch 5.08mm, size 35.6x10.6mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00287_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00292 pitch 5.08mm size 35.6x10.6mm^2 drill 1.3mm pad 2.5mm +0 +7 +7 +TerminalBlock_RND +TerminalBlock_RND_205-00293_1x08_P5.08mm_Horizontal +terminal block RND 205-00293, 8 pins, pitch 5.08mm, size 40.6x10.6mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00287_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00293 pitch 5.08mm size 40.6x10.6mm^2 drill 1.3mm pad 2.5mm +0 +8 +8 +TerminalBlock_RND +TerminalBlock_RND_205-00294_1x09_P5.08mm_Horizontal +terminal block RND 205-00294, 9 pins, pitch 5.08mm, size 45.7x10.6mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00287_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00294 pitch 5.08mm size 45.7x10.6mm^2 drill 1.3mm pad 2.5mm +0 +9 +9 +TerminalBlock_RND +TerminalBlock_RND_205-00295_1x10_P5.08mm_Horizontal +terminal block RND 205-00295, 10 pins, pitch 5.08mm, size 50.8x10.6mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00287_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00295 pitch 5.08mm size 50.8x10.6mm^2 drill 1.3mm pad 2.5mm +0 +10 +10 +TerminalBlock_RND +TerminalBlock_RND_205-00296_1x11_P5.08mm_Horizontal +terminal block RND 205-00296, 11 pins, pitch 5.08mm, size 55.9x10.6mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00287_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00296 pitch 5.08mm size 55.9x10.6mm^2 drill 1.3mm pad 2.5mm +0 +11 +11 +TerminalBlock_RND +TerminalBlock_RND_205-00297_1x12_P5.08mm_Horizontal +terminal block RND 205-00297, 12 pins, pitch 5.08mm, size 61x10.6mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00287_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00297 pitch 5.08mm size 61x10.6mm^2 drill 1.3mm pad 2.5mm +0 +12 +12 +TerminalBlock_RND +TerminalBlock_RND_205-00298_1x02_P10.00mm_Horizontal +terminal block RND 205-00298, 2 pins, pitch 10mm, size 15x8.1mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00298_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00298 pitch 10mm size 15x8.1mm^2 drill 1.3mm pad 2.5mm +0 +2 +2 +TerminalBlock_RND +TerminalBlock_RND_205-00299_1x03_P10.00mm_Horizontal +terminal block RND 205-00299, 3 pins, pitch 10mm, size 25x8.1mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00298_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00299 pitch 10mm size 25x8.1mm^2 drill 1.3mm pad 2.5mm +0 +3 +3 +TerminalBlock_RND +TerminalBlock_RND_205-00300_1x04_P10.00mm_Horizontal +terminal block RND 205-00300, 4 pins, pitch 10mm, size 35x8.1mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00298_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00300 pitch 10mm size 35x8.1mm^2 drill 1.3mm pad 2.5mm +0 +4 +4 +TerminalBlock_RND +TerminalBlock_RND_205-00301_1x05_P10.00mm_Horizontal +terminal block RND 205-00301, 5 pins, pitch 10mm, size 45x8.1mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00298_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00301 pitch 10mm size 45x8.1mm^2 drill 1.3mm pad 2.5mm +0 +5 +5 +TerminalBlock_RND +TerminalBlock_RND_205-00302_1x06_P10.00mm_Horizontal +terminal block RND 205-00302, 6 pins, pitch 10mm, size 55x8.1mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00298_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00302 pitch 10mm size 55x8.1mm^2 drill 1.3mm pad 2.5mm +0 +6 +6 +TerminalBlock_RND +TerminalBlock_RND_205-00303_1x07_P10.00mm_Horizontal +terminal block RND 205-00303, 7 pins, pitch 10mm, size 65x8.1mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00298_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00303 pitch 10mm size 65x8.1mm^2 drill 1.3mm pad 2.5mm +0 +7 +7 +TerminalBlock_RND +TerminalBlock_RND_205-00304_1x08_P10.00mm_Horizontal +terminal block RND 205-00304, 8 pins, pitch 10mm, size 75x8.1mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00298_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00304 pitch 10mm size 75x8.1mm^2 drill 1.3mm pad 2.5mm +0 +8 +8 +TerminalBlock_RND +TerminalBlock_RND_205-00305_1x09_P10.00mm_Horizontal +terminal block RND 205-00305, 9 pins, pitch 10mm, size 85x8.1mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00298_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00305 pitch 10mm size 85x8.1mm^2 drill 1.3mm pad 2.5mm +0 +9 +9 +TerminalBlock_RND +TerminalBlock_RND_205-00306_1x10_P10.00mm_Horizontal +terminal block RND 205-00306, 10 pins, pitch 10mm, size 95x8.1mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00298_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00306 pitch 10mm size 95x8.1mm^2 drill 1.3mm pad 2.5mm +0 +10 +10 +TerminalBlock_RND +TerminalBlock_RND_205-00307_1x11_P10.00mm_Horizontal +terminal block RND 205-00307, 11 pins, pitch 10mm, size 105x8.1mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00298_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00307 pitch 10mm size 105x8.1mm^2 drill 1.3mm pad 2.5mm +0 +11 +11 +TerminalBlock_RND +TerminalBlock_RND_205-00308_1x12_P10.00mm_Horizontal +terminal block RND 205-00308, 12 pins, pitch 10mm, size 115x8.1mm^2, drill diamater 1.3mm, pad diameter 2.5mm, see http://cdn-reichelt.de/documents/datenblatt/C151/RND_205-00298_DB_EN.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_RND +THT terminal block RND 205-00308 pitch 10mm size 115x8.1mm^2 drill 1.3mm pad 2.5mm +0 +12 +12 +TerminalBlock_TE-Connectivity +TerminalBlock_TE_1-282834-0_1x10_P2.54mm_Horizontal +Terminal Block TE 1-282834-0, 10 pins, pitch 2.54mm, size 25.86x6.5mm^2, drill diamater 1.1mm, pad diameter 2.1mm, see http://www.te.com/commerce/DocumentDelivery/DDEController?Action=showdoc&DocId=Customer+Drawing%7F282834%7FC1%7Fpdf%7FEnglish%7FENG_CD_282834_C1.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_TE-Connectivity +THT Terminal Block TE 1-282834-0 pitch 2.54mm size 25.86x6.5mm^2 drill 1.1mm pad 2.1mm +0 +10 +10 +TerminalBlock_TE-Connectivity +TerminalBlock_TE_1-282834-1_1x11_P2.54mm_Horizontal +Terminal Block TE 1-282834-1, 11 pins, pitch 2.54mm, size 28.4x6.5mm^2, drill diamater 1.1mm, pad diameter 2.1mm, see http://www.te.com/commerce/DocumentDelivery/DDEController?Action=showdoc&DocId=Customer+Drawing%7F282834%7FC1%7Fpdf%7FEnglish%7FENG_CD_282834_C1.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_TE-Connectivity +THT Terminal Block TE 1-282834-1 pitch 2.54mm size 28.4x6.5mm^2 drill 1.1mm pad 2.1mm +0 +11 +11 +TerminalBlock_TE-Connectivity +TerminalBlock_TE_1-282834-2_1x12_P2.54mm_Horizontal +Terminal Block TE 1-282834-2, 12 pins, pitch 2.54mm, size 30.94x6.5mm^2, drill diamater 1.1mm, pad diameter 2.1mm, see http://www.te.com/commerce/DocumentDelivery/DDEController?Action=showdoc&DocId=Customer+Drawing%7F282834%7FC1%7Fpdf%7FEnglish%7FENG_CD_282834_C1.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_TE-Connectivity +THT Terminal Block TE 1-282834-2 pitch 2.54mm size 30.94x6.5mm^2 drill 1.1mm pad 2.1mm +0 +12 +12 +TerminalBlock_TE-Connectivity +TerminalBlock_TE_282834-2_1x02_P2.54mm_Horizontal +Terminal Block TE 282834-2, 2 pins, pitch 2.54mm, size 5.54x6.5mm^2, drill diamater 1.1mm, pad diameter 2.1mm, see http://www.te.com/commerce/DocumentDelivery/DDEController?Action=showdoc&DocId=Customer+Drawing%7F282834%7FC1%7Fpdf%7FEnglish%7FENG_CD_282834_C1.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_TE-Connectivity +THT Terminal Block TE 282834-2 pitch 2.54mm size 5.54x6.5mm^2 drill 1.1mm pad 2.1mm +0 +2 +2 +TerminalBlock_TE-Connectivity +TerminalBlock_TE_282834-3_1x03_P2.54mm_Horizontal +Terminal Block TE 282834-3, 3 pins, pitch 2.54mm, size 8.08x6.5mm^2, drill diamater 1.1mm, pad diameter 2.1mm, see http://www.te.com/commerce/DocumentDelivery/DDEController?Action=showdoc&DocId=Customer+Drawing%7F282834%7FC1%7Fpdf%7FEnglish%7FENG_CD_282834_C1.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_TE-Connectivity +THT Terminal Block TE 282834-3 pitch 2.54mm size 8.08x6.5mm^2 drill 1.1mm pad 2.1mm +0 +3 +3 +TerminalBlock_TE-Connectivity +TerminalBlock_TE_282834-4_1x04_P2.54mm_Horizontal +Terminal Block TE 282834-4, 4 pins, pitch 2.54mm, size 10.620000000000001x6.5mm^2, drill diamater 1.1mm, pad diameter 2.1mm, see http://www.te.com/commerce/DocumentDelivery/DDEController?Action=showdoc&DocId=Customer+Drawing%7F282834%7FC1%7Fpdf%7FEnglish%7FENG_CD_282834_C1.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_TE-Connectivity +THT Terminal Block TE 282834-4 pitch 2.54mm size 10.620000000000001x6.5mm^2 drill 1.1mm pad 2.1mm +0 +4 +4 +TerminalBlock_TE-Connectivity +TerminalBlock_TE_282834-5_1x05_P2.54mm_Horizontal +Terminal Block TE 282834-5, 5 pins, pitch 2.54mm, size 13.16x6.5mm^2, drill diamater 1.1mm, pad diameter 2.1mm, see http://www.te.com/commerce/DocumentDelivery/DDEController?Action=showdoc&DocId=Customer+Drawing%7F282834%7FC1%7Fpdf%7FEnglish%7FENG_CD_282834_C1.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_TE-Connectivity +THT Terminal Block TE 282834-5 pitch 2.54mm size 13.16x6.5mm^2 drill 1.1mm pad 2.1mm +0 +5 +5 +TerminalBlock_TE-Connectivity +TerminalBlock_TE_282834-6_1x06_P2.54mm_Horizontal +Terminal Block TE 282834-6, 6 pins, pitch 2.54mm, size 15.7x6.5mm^2, drill diamater 1.1mm, pad diameter 2.1mm, see http://www.te.com/commerce/DocumentDelivery/DDEController?Action=showdoc&DocId=Customer+Drawing%7F282834%7FC1%7Fpdf%7FEnglish%7FENG_CD_282834_C1.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_TE-Connectivity +THT Terminal Block TE 282834-6 pitch 2.54mm size 15.7x6.5mm^2 drill 1.1mm pad 2.1mm +0 +6 +6 +TerminalBlock_TE-Connectivity +TerminalBlock_TE_282834-7_1x07_P2.54mm_Horizontal +Terminal Block TE 282834-7, 7 pins, pitch 2.54mm, size 18.240000000000002x6.5mm^2, drill diamater 1.1mm, pad diameter 2.1mm, see http://www.te.com/commerce/DocumentDelivery/DDEController?Action=showdoc&DocId=Customer+Drawing%7F282834%7FC1%7Fpdf%7FEnglish%7FENG_CD_282834_C1.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_TE-Connectivity +THT Terminal Block TE 282834-7 pitch 2.54mm size 18.240000000000002x6.5mm^2 drill 1.1mm pad 2.1mm +0 +7 +7 +TerminalBlock_TE-Connectivity +TerminalBlock_TE_282834-8_1x08_P2.54mm_Horizontal +Terminal Block TE 282834-8, 8 pins, pitch 2.54mm, size 20.78x6.5mm^2, drill diamater 1.1mm, pad diameter 2.1mm, see http://www.te.com/commerce/DocumentDelivery/DDEController?Action=showdoc&DocId=Customer+Drawing%7F282834%7FC1%7Fpdf%7FEnglish%7FENG_CD_282834_C1.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_TE-Connectivity +THT Terminal Block TE 282834-8 pitch 2.54mm size 20.78x6.5mm^2 drill 1.1mm pad 2.1mm +0 +8 +8 +TerminalBlock_TE-Connectivity +TerminalBlock_TE_282834-9_1x09_P2.54mm_Horizontal +Terminal Block TE 282834-9, 9 pins, pitch 2.54mm, size 23.32x6.5mm^2, drill diamater 1.1mm, pad diameter 2.1mm, see http://www.te.com/commerce/DocumentDelivery/DDEController?Action=showdoc&DocId=Customer+Drawing%7F282834%7FC1%7Fpdf%7FEnglish%7FENG_CD_282834_C1.pdf, script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_TE-Connectivity +THT Terminal Block TE 282834-9 pitch 2.54mm size 23.32x6.5mm^2 drill 1.1mm pad 2.1mm +0 +9 +9 +TerminalBlock_WAGO +TerminalBlock_WAGO_236-101_1x01_P5.00mm_45Degree +Terminal Block WAGO 236-101, 45Degree (cable under 45degree), 1 pins, pitch 5mm, size 7.3x14mm^2, drill diamater 1.15mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 236-101 45Degree pitch 5mm size 7.3x14mm^2 drill 1.15mm pad 3mm +0 +1 +1 +TerminalBlock_WAGO +TerminalBlock_WAGO_236-102_1x02_P5.00mm_45Degree +Terminal Block WAGO 236-102, 45Degree (cable under 45degree), 2 pins, pitch 5mm, size 12.3x14mm^2, drill diamater 1.15mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 236-102 45Degree pitch 5mm size 12.3x14mm^2 drill 1.15mm pad 3mm +0 +2 +2 +TerminalBlock_WAGO +TerminalBlock_WAGO_236-103_1x03_P5.00mm_45Degree +Terminal Block WAGO 236-103, 45Degree (cable under 45degree), 3 pins, pitch 5mm, size 17.3x14mm^2, drill diamater 1.15mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 236-103 45Degree pitch 5mm size 17.3x14mm^2 drill 1.15mm pad 3mm +0 +3 +3 +TerminalBlock_WAGO +TerminalBlock_WAGO_236-104_1x04_P5.00mm_45Degree +Terminal Block WAGO 236-104, 45Degree (cable under 45degree), 4 pins, pitch 5mm, size 22.3x14mm^2, drill diamater 1.15mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 236-104 45Degree pitch 5mm size 22.3x14mm^2 drill 1.15mm pad 3mm +0 +4 +4 +TerminalBlock_WAGO +TerminalBlock_WAGO_236-106_1x06_P5.00mm_45Degree +Terminal Block WAGO 236-106, 45Degree (cable under 45degree), 6 pins, pitch 5mm, size 32.3x14mm^2, drill diamater 1.15mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 236-106 45Degree pitch 5mm size 32.3x14mm^2 drill 1.15mm pad 3mm +0 +6 +6 +TerminalBlock_WAGO +TerminalBlock_WAGO_236-108_1x08_P5.00mm_45Degree +Terminal Block WAGO 236-108, 45Degree (cable under 45degree), 8 pins, pitch 5mm, size 42.3x14mm^2, drill diamater 1.15mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 236-108 45Degree pitch 5mm size 42.3x14mm^2 drill 1.15mm pad 3mm +0 +8 +8 +TerminalBlock_WAGO +TerminalBlock_WAGO_236-112_1x12_P5.00mm_45Degree +Terminal Block WAGO 236-112, 45Degree (cable under 45degree), 12 pins, pitch 5mm, size 62.3x14mm^2, drill diamater 1.15mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 236-112 45Degree pitch 5mm size 62.3x14mm^2 drill 1.15mm pad 3mm +0 +12 +12 +TerminalBlock_WAGO +TerminalBlock_WAGO_236-116_1x16_P5.00mm_45Degree +Terminal Block WAGO 236-116, 45Degree (cable under 45degree), 16 pins, pitch 5mm, size 82.3x14mm^2, drill diamater 1.15mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 236-116 45Degree pitch 5mm size 82.3x14mm^2 drill 1.15mm pad 3mm +0 +16 +16 +TerminalBlock_WAGO +TerminalBlock_WAGO_236-124_1x24_P5.00mm_45Degree +Terminal Block WAGO 236-124, 45Degree (cable under 45degree), 24 pins, pitch 5mm, size 122x14mm^2, drill diamater 1.15mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 236-124 45Degree pitch 5mm size 122x14mm^2 drill 1.15mm pad 3mm +0 +24 +24 +TerminalBlock_WAGO +TerminalBlock_WAGO_236-136_1x36_P5.00mm_45Degree +Terminal Block WAGO 236-136, 45Degree (cable under 45degree), 36 pins, pitch 5mm, size 182x14mm^2, drill diamater 1.15mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 236-136 45Degree pitch 5mm size 182x14mm^2 drill 1.15mm pad 3mm +0 +36 +36 +TerminalBlock_WAGO +TerminalBlock_WAGO_236-148_1x48_P5.00mm_45Degree +Terminal Block WAGO 236-148, 45Degree (cable under 45degree), 48 pins, pitch 5mm, size 242x14mm^2, drill diamater 1.15mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 236-148 45Degree pitch 5mm size 242x14mm^2 drill 1.15mm pad 3mm +0 +48 +48 +TerminalBlock_WAGO +TerminalBlock_WAGO_236-201_1x01_P7.50mm_45Degree +Terminal Block WAGO 236-201, 45Degree (cable under 45degree), 1 pins, pitch 7.5mm, size 9.8x14mm^2, drill diamater 1.15mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 236-201 45Degree pitch 7.5mm size 9.8x14mm^2 drill 1.15mm pad 3mm +0 +1 +1 +TerminalBlock_WAGO +TerminalBlock_WAGO_236-202_1x02_P7.50mm_45Degree +Terminal Block WAGO 236-202, 45Degree (cable under 45degree), 2 pins, pitch 7.5mm, size 17.3x14mm^2, drill diamater 1.15mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 236-202 45Degree pitch 7.5mm size 17.3x14mm^2 drill 1.15mm pad 3mm +0 +2 +2 +TerminalBlock_WAGO +TerminalBlock_WAGO_236-203_1x03_P7.50mm_45Degree +Terminal Block WAGO 236-203, 45Degree (cable under 45degree), 3 pins, pitch 7.5mm, size 24.8x14mm^2, drill diamater 1.15mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 236-203 45Degree pitch 7.5mm size 24.8x14mm^2 drill 1.15mm pad 3mm +0 +3 +3 +TerminalBlock_WAGO +TerminalBlock_WAGO_236-204_1x04_P7.50mm_45Degree +Terminal Block WAGO 236-204, 45Degree (cable under 45degree), 4 pins, pitch 7.5mm, size 32.3x14mm^2, drill diamater 1.15mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 236-204 45Degree pitch 7.5mm size 32.3x14mm^2 drill 1.15mm pad 3mm +0 +4 +4 +TerminalBlock_WAGO +TerminalBlock_WAGO_236-206_1x06_P7.50mm_45Degree +Terminal Block WAGO 236-206, 45Degree (cable under 45degree), 6 pins, pitch 7.5mm, size 47.3x14mm^2, drill diamater 1.15mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 236-206 45Degree pitch 7.5mm size 47.3x14mm^2 drill 1.15mm pad 3mm +0 +6 +6 +TerminalBlock_WAGO +TerminalBlock_WAGO_236-208_1x08_P7.50mm_45Degree +Terminal Block WAGO 236-208, 45Degree (cable under 45degree), 8 pins, pitch 7.5mm, size 62.3x14mm^2, drill diamater 1.15mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 236-208 45Degree pitch 7.5mm size 62.3x14mm^2 drill 1.15mm pad 3mm +0 +8 +8 +TerminalBlock_WAGO +TerminalBlock_WAGO_236-212_1x12_P7.50mm_45Degree +Terminal Block WAGO 236-212, 45Degree (cable under 45degree), 12 pins, pitch 7.5mm, size 92.3x14mm^2, drill diamater 1.15mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 236-212 45Degree pitch 7.5mm size 92.3x14mm^2 drill 1.15mm pad 3mm +0 +12 +12 +TerminalBlock_WAGO +TerminalBlock_WAGO_236-216_1x16_P7.50mm_45Degree +Terminal Block WAGO 236-216, 45Degree (cable under 45degree), 16 pins, pitch 7.5mm, size 122x14mm^2, drill diamater 1.15mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 236-216 45Degree pitch 7.5mm size 122x14mm^2 drill 1.15mm pad 3mm +0 +16 +16 +TerminalBlock_WAGO +TerminalBlock_WAGO_236-224_1x24_P7.50mm_45Degree +Terminal Block WAGO 236-224, 45Degree (cable under 45degree), 24 pins, pitch 7.5mm, size 182x14mm^2, drill diamater 1.15mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 236-224 45Degree pitch 7.5mm size 182x14mm^2 drill 1.15mm pad 3mm +0 +24 +24 +TerminalBlock_WAGO +TerminalBlock_WAGO_236-301_1x01_P10.00mm_45Degree +Terminal Block WAGO 236-301, 45Degree (cable under 45degree), 1 pins, pitch 10mm, size 12.3x14mm^2, drill diamater 1.15mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 236-301 45Degree pitch 10mm size 12.3x14mm^2 drill 1.15mm pad 3mm +0 +1 +1 +TerminalBlock_WAGO +TerminalBlock_WAGO_236-302_1x02_P10.00mm_45Degree +Terminal Block WAGO 236-302, 45Degree (cable under 45degree), 2 pins, pitch 10mm, size 22.3x14mm^2, drill diamater 1.15mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 236-302 45Degree pitch 10mm size 22.3x14mm^2 drill 1.15mm pad 3mm +0 +2 +2 +TerminalBlock_WAGO +TerminalBlock_WAGO_236-303_1x03_P10.00mm_45Degree +Terminal Block WAGO 236-303, 45Degree (cable under 45degree), 3 pins, pitch 10mm, size 32.3x14mm^2, drill diamater 1.15mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 236-303 45Degree pitch 10mm size 32.3x14mm^2 drill 1.15mm pad 3mm +0 +3 +3 +TerminalBlock_WAGO +TerminalBlock_WAGO_236-304_1x04_P10.00mm_45Degree +Terminal Block WAGO 236-304, 45Degree (cable under 45degree), 4 pins, pitch 10mm, size 42.3x14mm^2, drill diamater 1.15mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 236-304 45Degree pitch 10mm size 42.3x14mm^2 drill 1.15mm pad 3mm +0 +4 +4 +TerminalBlock_WAGO +TerminalBlock_WAGO_236-306_1x06_P10.00mm_45Degree +Terminal Block WAGO 236-306, 45Degree (cable under 45degree), 6 pins, pitch 10mm, size 62.3x14mm^2, drill diamater 1.15mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 236-306 45Degree pitch 10mm size 62.3x14mm^2 drill 1.15mm pad 3mm +0 +6 +6 +TerminalBlock_WAGO +TerminalBlock_WAGO_236-308_1x08_P10.00mm_45Degree +Terminal Block WAGO 236-308, 45Degree (cable under 45degree), 8 pins, pitch 10mm, size 82.3x14mm^2, drill diamater 1.15mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 236-308 45Degree pitch 10mm size 82.3x14mm^2 drill 1.15mm pad 3mm +0 +8 +8 +TerminalBlock_WAGO +TerminalBlock_WAGO_236-312_1x12_P10.00mm_45Degree +Terminal Block WAGO 236-312, 45Degree (cable under 45degree), 12 pins, pitch 10mm, size 122x14mm^2, drill diamater 1.15mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 236-312 45Degree pitch 10mm size 122x14mm^2 drill 1.15mm pad 3mm +0 +12 +12 +TerminalBlock_WAGO +TerminalBlock_WAGO_236-316_1x16_P10.00mm_45Degree +Terminal Block WAGO 236-316, 45Degree (cable under 45degree), 16 pins, pitch 10mm, size 162x14mm^2, drill diamater 1.15mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 236-316 45Degree pitch 10mm size 162x14mm^2 drill 1.15mm pad 3mm +0 +16 +16 +TerminalBlock_WAGO +TerminalBlock_WAGO_236-324_1x24_P10.00mm_45Degree +Terminal Block WAGO 236-324, 45Degree (cable under 45degree), 24 pins, pitch 10mm, size 242x14mm^2, drill diamater 1.15mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 236-324 45Degree pitch 10mm size 242x14mm^2 drill 1.15mm pad 3mm +0 +24 +24 +TerminalBlock_WAGO +TerminalBlock_WAGO_236-401_1x01_P5.00mm_45Degree +Terminal Block WAGO 236-401, 45Degree (cable under 45degree), 1 pins, pitch 5mm, size 7.3x14mm^2, drill diamater 1.15mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 236-401 45Degree pitch 5mm size 7.3x14mm^2 drill 1.15mm pad 3mm +0 +2 +1 +TerminalBlock_WAGO +TerminalBlock_WAGO_236-402_1x02_P5.00mm_45Degree +Terminal Block WAGO 236-402, 45Degree (cable under 45degree), 2 pins, pitch 5mm, size 12.3x14mm^2, drill diamater 1.15mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 236-402 45Degree pitch 5mm size 12.3x14mm^2 drill 1.15mm pad 3mm +0 +4 +2 +TerminalBlock_WAGO +TerminalBlock_WAGO_236-403_1x03_P5.00mm_45Degree +Terminal Block WAGO 236-403, 45Degree (cable under 45degree), 3 pins, pitch 5mm, size 17.3x14mm^2, drill diamater 1.15mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 236-403 45Degree pitch 5mm size 17.3x14mm^2 drill 1.15mm pad 3mm +0 +6 +3 +TerminalBlock_WAGO +TerminalBlock_WAGO_236-404_1x04_P5.00mm_45Degree +Terminal Block WAGO 236-404, 45Degree (cable under 45degree), 4 pins, pitch 5mm, size 22.3x14mm^2, drill diamater 1.15mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 236-404 45Degree pitch 5mm size 22.3x14mm^2 drill 1.15mm pad 3mm +0 +8 +4 +TerminalBlock_WAGO +TerminalBlock_WAGO_236-406_1x06_P5.00mm_45Degree +Terminal Block WAGO 236-406, 45Degree (cable under 45degree), 6 pins, pitch 5mm, size 32.3x14mm^2, drill diamater 1.15mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 236-406 45Degree pitch 5mm size 32.3x14mm^2 drill 1.15mm pad 3mm +0 +12 +6 +TerminalBlock_WAGO +TerminalBlock_WAGO_236-408_1x08_P5.00mm_45Degree +Terminal Block WAGO 236-408, 45Degree (cable under 45degree), 8 pins, pitch 5mm, size 42.3x14mm^2, drill diamater 1.15mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 236-408 45Degree pitch 5mm size 42.3x14mm^2 drill 1.15mm pad 3mm +0 +16 +8 +TerminalBlock_WAGO +TerminalBlock_WAGO_236-412_1x12_P5.00mm_45Degree +Terminal Block WAGO 236-412, 45Degree (cable under 45degree), 12 pins, pitch 5mm, size 62.3x14mm^2, drill diamater 1.15mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 236-412 45Degree pitch 5mm size 62.3x14mm^2 drill 1.15mm pad 3mm +0 +24 +12 +TerminalBlock_WAGO +TerminalBlock_WAGO_236-416_1x16_P5.00mm_45Degree +Terminal Block WAGO 236-416, 45Degree (cable under 45degree), 16 pins, pitch 5mm, size 82.3x14mm^2, drill diamater 1.15mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 236-416 45Degree pitch 5mm size 82.3x14mm^2 drill 1.15mm pad 3mm +0 +32 +16 +TerminalBlock_WAGO +TerminalBlock_WAGO_236-424_1x24_P5.00mm_45Degree +Terminal Block WAGO 236-424, 45Degree (cable under 45degree), 24 pins, pitch 5mm, size 122x14mm^2, drill diamater 1.15mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 236-424 45Degree pitch 5mm size 122x14mm^2 drill 1.15mm pad 3mm +0 +48 +24 +TerminalBlock_WAGO +TerminalBlock_WAGO_236-436_1x36_P5.00mm_45Degree +Terminal Block WAGO 236-436, 45Degree (cable under 45degree), 36 pins, pitch 5mm, size 182x14mm^2, drill diamater 1.15mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 236-436 45Degree pitch 5mm size 182x14mm^2 drill 1.15mm pad 3mm +0 +72 +36 +TerminalBlock_WAGO +TerminalBlock_WAGO_236-448_1x48_P5.00mm_45Degree +Terminal Block WAGO 236-448, 45Degree (cable under 45degree), 48 pins, pitch 5mm, size 242x14mm^2, drill diamater 1.15mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 236-448 45Degree pitch 5mm size 242x14mm^2 drill 1.15mm pad 3mm +0 +96 +48 +TerminalBlock_WAGO +TerminalBlock_WAGO_236-501_1x01_P7.50mm_45Degree +Terminal Block WAGO 236-501, 45Degree (cable under 45degree), 1 pins, pitch 7.5mm, size 9.8x14mm^2, drill diamater 1.15mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 236-501 45Degree pitch 7.5mm size 9.8x14mm^2 drill 1.15mm pad 3mm +0 +2 +1 +TerminalBlock_WAGO +TerminalBlock_WAGO_236-502_1x02_P7.50mm_45Degree +Terminal Block WAGO 236-502, 45Degree (cable under 45degree), 2 pins, pitch 7.5mm, size 17.3x14mm^2, drill diamater 1.15mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 236-502 45Degree pitch 7.5mm size 17.3x14mm^2 drill 1.15mm pad 3mm +0 +4 +2 +TerminalBlock_WAGO +TerminalBlock_WAGO_236-503_1x03_P7.50mm_45Degree +Terminal Block WAGO 236-503, 45Degree (cable under 45degree), 3 pins, pitch 7.5mm, size 24.8x14mm^2, drill diamater 1.15mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 236-503 45Degree pitch 7.5mm size 24.8x14mm^2 drill 1.15mm pad 3mm +0 +6 +3 +TerminalBlock_WAGO +TerminalBlock_WAGO_236-504_1x04_P7.50mm_45Degree +Terminal Block WAGO 236-504, 45Degree (cable under 45degree), 4 pins, pitch 7.5mm, size 32.3x14mm^2, drill diamater 1.15mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 236-504 45Degree pitch 7.5mm size 32.3x14mm^2 drill 1.15mm pad 3mm +0 +8 +4 +TerminalBlock_WAGO +TerminalBlock_WAGO_236-506_1x06_P7.50mm_45Degree +Terminal Block WAGO 236-506, 45Degree (cable under 45degree), 6 pins, pitch 7.5mm, size 47.3x14mm^2, drill diamater 1.15mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 236-506 45Degree pitch 7.5mm size 47.3x14mm^2 drill 1.15mm pad 3mm +0 +12 +6 +TerminalBlock_WAGO +TerminalBlock_WAGO_236-508_1x08_P7.50mm_45Degree +Terminal Block WAGO 236-508, 45Degree (cable under 45degree), 8 pins, pitch 7.5mm, size 62.3x14mm^2, drill diamater 1.15mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 236-508 45Degree pitch 7.5mm size 62.3x14mm^2 drill 1.15mm pad 3mm +0 +16 +8 +TerminalBlock_WAGO +TerminalBlock_WAGO_236-512_1x12_P7.50mm_45Degree +Terminal Block WAGO 236-512, 45Degree (cable under 45degree), 12 pins, pitch 7.5mm, size 92.3x14mm^2, drill diamater 1.15mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 236-512 45Degree pitch 7.5mm size 92.3x14mm^2 drill 1.15mm pad 3mm +0 +24 +12 +TerminalBlock_WAGO +TerminalBlock_WAGO_236-516_1x16_P7.50mm_45Degree +Terminal Block WAGO 236-516, 45Degree (cable under 45degree), 16 pins, pitch 7.5mm, size 122x14mm^2, drill diamater 1.15mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 236-516 45Degree pitch 7.5mm size 122x14mm^2 drill 1.15mm pad 3mm +0 +32 +16 +TerminalBlock_WAGO +TerminalBlock_WAGO_236-524_1x24_P7.50mm_45Degree +Terminal Block WAGO 236-524, 45Degree (cable under 45degree), 24 pins, pitch 7.5mm, size 182x14mm^2, drill diamater 1.15mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 236-524 45Degree pitch 7.5mm size 182x14mm^2 drill 1.15mm pad 3mm +0 +48 +24 +TerminalBlock_WAGO +TerminalBlock_WAGO_236-601_1x01_P10.00mm_45Degree +Terminal Block WAGO 236-601, 45Degree (cable under 45degree), 1 pins, pitch 10mm, size 12.3x14mm^2, drill diamater 1.15mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 236-601 45Degree pitch 10mm size 12.3x14mm^2 drill 1.15mm pad 3mm +0 +2 +1 +TerminalBlock_WAGO +TerminalBlock_WAGO_236-602_1x02_P10.00mm_45Degree +Terminal Block WAGO 236-602, 45Degree (cable under 45degree), 2 pins, pitch 10mm, size 22.3x14mm^2, drill diamater 1.15mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 236-602 45Degree pitch 10mm size 22.3x14mm^2 drill 1.15mm pad 3mm +0 +4 +2 +TerminalBlock_WAGO +TerminalBlock_WAGO_236-603_1x03_P10.00mm_45Degree +Terminal Block WAGO 236-603, 45Degree (cable under 45degree), 3 pins, pitch 10mm, size 32.3x14mm^2, drill diamater 1.15mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 236-603 45Degree pitch 10mm size 32.3x14mm^2 drill 1.15mm pad 3mm +0 +6 +3 +TerminalBlock_WAGO +TerminalBlock_WAGO_236-604_1x04_P10.00mm_45Degree +Terminal Block WAGO 236-604, 45Degree (cable under 45degree), 4 pins, pitch 10mm, size 42.3x14mm^2, drill diamater 1.15mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 236-604 45Degree pitch 10mm size 42.3x14mm^2 drill 1.15mm pad 3mm +0 +8 +4 +TerminalBlock_WAGO +TerminalBlock_WAGO_236-606_1x06_P10.00mm_45Degree +Terminal Block WAGO 236-606, 45Degree (cable under 45degree), 6 pins, pitch 10mm, size 62.3x14mm^2, drill diamater 1.15mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 236-606 45Degree pitch 10mm size 62.3x14mm^2 drill 1.15mm pad 3mm +0 +12 +6 +TerminalBlock_WAGO +TerminalBlock_WAGO_236-608_1x08_P10.00mm_45Degree +Terminal Block WAGO 236-608, 45Degree (cable under 45degree), 8 pins, pitch 10mm, size 82.3x14mm^2, drill diamater 1.15mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 236-608 45Degree pitch 10mm size 82.3x14mm^2 drill 1.15mm pad 3mm +0 +16 +8 +TerminalBlock_WAGO +TerminalBlock_WAGO_236-612_1x12_P10.00mm_45Degree +Terminal Block WAGO 236-612, 45Degree (cable under 45degree), 12 pins, pitch 10mm, size 122x14mm^2, drill diamater 1.15mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 236-612 45Degree pitch 10mm size 122x14mm^2 drill 1.15mm pad 3mm +0 +24 +12 +TerminalBlock_WAGO +TerminalBlock_WAGO_236-616_1x16_P10.00mm_45Degree +Terminal Block WAGO 236-616, 45Degree (cable under 45degree), 16 pins, pitch 10mm, size 162x14mm^2, drill diamater 1.15mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 236-616 45Degree pitch 10mm size 162x14mm^2 drill 1.15mm pad 3mm +0 +32 +16 +TerminalBlock_WAGO +TerminalBlock_WAGO_236-624_1x24_P10.00mm_45Degree +Terminal Block WAGO 236-624, 45Degree (cable under 45degree), 24 pins, pitch 10mm, size 242x14mm^2, drill diamater 1.15mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 236-624 45Degree pitch 10mm size 242x14mm^2 drill 1.15mm pad 3mm +0 +48 +24 +TerminalBlock_WAGO +TerminalBlock_WAGO_804-101_1x01_P5.00mm_45Degree +Terminal Block WAGO 804-101, 45Degree (cable under 45degree), 1 pins, pitch 5mm, size 6.5x15mm^2, drill diamater 1.2mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 804-101 45Degree pitch 5mm size 6.5x15mm^2 drill 1.2mm pad 3mm +0 +2 +1 +TerminalBlock_WAGO +TerminalBlock_WAGO_804-102_1x02_P5.00mm_45Degree +Terminal Block WAGO 804-102, 45Degree (cable under 45degree), 2 pins, pitch 5mm, size 11.5x15mm^2, drill diamater 1.2mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 804-102 45Degree pitch 5mm size 11.5x15mm^2 drill 1.2mm pad 3mm +0 +4 +2 +TerminalBlock_WAGO +TerminalBlock_WAGO_804-103_1x03_P5.00mm_45Degree +Terminal Block WAGO 804-103, 45Degree (cable under 45degree), 3 pins, pitch 5mm, size 16.5x15mm^2, drill diamater 1.2mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 804-103 45Degree pitch 5mm size 16.5x15mm^2 drill 1.2mm pad 3mm +0 +6 +3 +TerminalBlock_WAGO +TerminalBlock_WAGO_804-104_1x04_P5.00mm_45Degree +Terminal Block WAGO 804-104, 45Degree (cable under 45degree), 4 pins, pitch 5mm, size 21.5x15mm^2, drill diamater 1.2mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 804-104 45Degree pitch 5mm size 21.5x15mm^2 drill 1.2mm pad 3mm +0 +8 +4 +TerminalBlock_WAGO +TerminalBlock_WAGO_804-105_1x05_P5.00mm_45Degree +Terminal Block WAGO 804-105, 45Degree (cable under 45degree), 5 pins, pitch 5mm, size 26.5x15mm^2, drill diamater 1.2mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 804-105 45Degree pitch 5mm size 26.5x15mm^2 drill 1.2mm pad 3mm +0 +10 +5 +TerminalBlock_WAGO +TerminalBlock_WAGO_804-106_1x06_P5.00mm_45Degree +Terminal Block WAGO 804-106, 45Degree (cable under 45degree), 6 pins, pitch 5mm, size 31.5x15mm^2, drill diamater 1.2mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 804-106 45Degree pitch 5mm size 31.5x15mm^2 drill 1.2mm pad 3mm +0 +12 +6 +TerminalBlock_WAGO +TerminalBlock_WAGO_804-107_1x07_P5.00mm_45Degree +Terminal Block WAGO 804-107, 45Degree (cable under 45degree), 7 pins, pitch 5mm, size 36.5x15mm^2, drill diamater 1.2mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 804-107 45Degree pitch 5mm size 36.5x15mm^2 drill 1.2mm pad 3mm +0 +14 +7 +TerminalBlock_WAGO +TerminalBlock_WAGO_804-108_1x08_P5.00mm_45Degree +Terminal Block WAGO 804-108, 45Degree (cable under 45degree), 8 pins, pitch 5mm, size 41.5x15mm^2, drill diamater 1.2mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 804-108 45Degree pitch 5mm size 41.5x15mm^2 drill 1.2mm pad 3mm +0 +16 +8 +TerminalBlock_WAGO +TerminalBlock_WAGO_804-109_1x09_P5.00mm_45Degree +Terminal Block WAGO 804-109, 45Degree (cable under 45degree), 9 pins, pitch 5mm, size 46.5x15mm^2, drill diamater 1.2mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 804-109 45Degree pitch 5mm size 46.5x15mm^2 drill 1.2mm pad 3mm +0 +18 +9 +TerminalBlock_WAGO +TerminalBlock_WAGO_804-110_1x10_P5.00mm_45Degree +Terminal Block WAGO 804-110, 45Degree (cable under 45degree), 10 pins, pitch 5mm, size 51.5x15mm^2, drill diamater 1.2mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 804-110 45Degree pitch 5mm size 51.5x15mm^2 drill 1.2mm pad 3mm +0 +20 +10 +TerminalBlock_WAGO +TerminalBlock_WAGO_804-112_1x12_P5.00mm_45Degree +Terminal Block WAGO 804-112, 45Degree (cable under 45degree), 12 pins, pitch 5mm, size 61.5x15mm^2, drill diamater 1.2mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 804-112 45Degree pitch 5mm size 61.5x15mm^2 drill 1.2mm pad 3mm +0 +24 +12 +TerminalBlock_WAGO +TerminalBlock_WAGO_804-116_1x16_P5.00mm_45Degree +Terminal Block WAGO 804-116, 45Degree (cable under 45degree), 16 pins, pitch 5mm, size 81.5x15mm^2, drill diamater 1.2mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 804-116 45Degree pitch 5mm size 81.5x15mm^2 drill 1.2mm pad 3mm +0 +32 +16 +TerminalBlock_WAGO +TerminalBlock_WAGO_804-124_1x24_P5.00mm_45Degree +Terminal Block WAGO 804-124, 45Degree (cable under 45degree), 24 pins, pitch 5mm, size 122x15mm^2, drill diamater 1.2mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 804-124 45Degree pitch 5mm size 122x15mm^2 drill 1.2mm pad 3mm +0 +48 +24 +TerminalBlock_WAGO +TerminalBlock_WAGO_804-301_1x01_P7.50mm_45Degree +Terminal Block WAGO 804-301, 45Degree (cable under 45degree), 1 pins, pitch 7.5mm, size 6.5x15mm^2, drill diamater 1.2mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 804-301 45Degree pitch 7.5mm size 6.5x15mm^2 drill 1.2mm pad 3mm +0 +2 +1 +TerminalBlock_WAGO +TerminalBlock_WAGO_804-302_1x02_P7.50mm_45Degree +Terminal Block WAGO 804-302, 45Degree (cable under 45degree), 2 pins, pitch 7.5mm, size 14x15mm^2, drill diamater 1.2mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 804-302 45Degree pitch 7.5mm size 14x15mm^2 drill 1.2mm pad 3mm +0 +4 +2 +TerminalBlock_WAGO +TerminalBlock_WAGO_804-303_1x03_P7.50mm_45Degree +Terminal Block WAGO 804-303, 45Degree (cable under 45degree), 3 pins, pitch 7.5mm, size 21.5x15mm^2, drill diamater 1.2mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 804-303 45Degree pitch 7.5mm size 21.5x15mm^2 drill 1.2mm pad 3mm +0 +6 +3 +TerminalBlock_WAGO +TerminalBlock_WAGO_804-304_1x04_P7.50mm_45Degree +Terminal Block WAGO 804-304, 45Degree (cable under 45degree), 4 pins, pitch 7.5mm, size 29x15mm^2, drill diamater 1.2mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 804-304 45Degree pitch 7.5mm size 29x15mm^2 drill 1.2mm pad 3mm +0 +8 +4 +TerminalBlock_WAGO +TerminalBlock_WAGO_804-305_1x05_P7.50mm_45Degree +Terminal Block WAGO 804-305, 45Degree (cable under 45degree), 5 pins, pitch 7.5mm, size 36.5x15mm^2, drill diamater 1.2mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 804-305 45Degree pitch 7.5mm size 36.5x15mm^2 drill 1.2mm pad 3mm +0 +10 +5 +TerminalBlock_WAGO +TerminalBlock_WAGO_804-306_1x06_P7.50mm_45Degree +Terminal Block WAGO 804-306, 45Degree (cable under 45degree), 6 pins, pitch 7.5mm, size 44x15mm^2, drill diamater 1.2mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 804-306 45Degree pitch 7.5mm size 44x15mm^2 drill 1.2mm pad 3mm +0 +12 +6 +TerminalBlock_WAGO +TerminalBlock_WAGO_804-307_1x07_P7.50mm_45Degree +Terminal Block WAGO 804-307, 45Degree (cable under 45degree), 7 pins, pitch 7.5mm, size 51.5x15mm^2, drill diamater 1.2mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 804-307 45Degree pitch 7.5mm size 51.5x15mm^2 drill 1.2mm pad 3mm +0 +14 +7 +TerminalBlock_WAGO +TerminalBlock_WAGO_804-308_1x08_P7.50mm_45Degree +Terminal Block WAGO 804-308, 45Degree (cable under 45degree), 8 pins, pitch 7.5mm, size 59x15mm^2, drill diamater 1.2mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 804-308 45Degree pitch 7.5mm size 59x15mm^2 drill 1.2mm pad 3mm +0 +16 +8 +TerminalBlock_WAGO +TerminalBlock_WAGO_804-309_1x09_P7.50mm_45Degree +Terminal Block WAGO 804-309, 45Degree (cable under 45degree), 9 pins, pitch 7.5mm, size 66.5x15mm^2, drill diamater 1.2mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 804-309 45Degree pitch 7.5mm size 66.5x15mm^2 drill 1.2mm pad 3mm +0 +18 +9 +TerminalBlock_WAGO +TerminalBlock_WAGO_804-310_1x10_P7.50mm_45Degree +Terminal Block WAGO 804-310, 45Degree (cable under 45degree), 10 pins, pitch 7.5mm, size 74x15mm^2, drill diamater 1.2mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 804-310 45Degree pitch 7.5mm size 74x15mm^2 drill 1.2mm pad 3mm +0 +20 +10 +TerminalBlock_WAGO +TerminalBlock_WAGO_804-312_1x12_P7.50mm_45Degree +Terminal Block WAGO 804-312, 45Degree (cable under 45degree), 12 pins, pitch 7.5mm, size 89x15mm^2, drill diamater 1.2mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 804-312 45Degree pitch 7.5mm size 89x15mm^2 drill 1.2mm pad 3mm +0 +24 +12 +TerminalBlock_WAGO +TerminalBlock_WAGO_804-316_1x16_P7.50mm_45Degree +Terminal Block WAGO 804-316, 45Degree (cable under 45degree), 16 pins, pitch 7.5mm, size 119x15mm^2, drill diamater 1.2mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 804-316 45Degree pitch 7.5mm size 119x15mm^2 drill 1.2mm pad 3mm +0 +32 +16 +TerminalBlock_WAGO +TerminalBlock_WAGO_804-324_1x24_P7.50mm_45Degree +Terminal Block WAGO 804-324, 45Degree (cable under 45degree), 24 pins, pitch 7.5mm, size 179x15mm^2, drill diamater 1.2mm, pad diameter 3mm, see , script-generated with , script-generated using https://github.com/pointhi/kicad-footprint-generator/scripts/TerminalBlock_WAGO +THT Terminal Block WAGO 804-324 45Degree pitch 7.5mm size 179x15mm^2 drill 1.2mm pad 3mm +0 +48 +24 +TestPoint +TestPoint_2Pads_Pitch2.54mm_Drill0.8mm +Test point with 2 pins, pitch 2.54mm, drill diameter 0.8mm +CONN DEV +0 +2 +2 +TestPoint +TestPoint_2Pads_Pitch5.08mm_Drill1.3mm +Test point with 2 pads, pitch 5.08mm, hole diameter 1.3mm, wire diameter 1.0mm +CONN DEV +0 +2 +2 +TestPoint +TestPoint_Bridge_Pitch2.0mm_Drill0.7mm +wire loop as test point, pitch 2.0mm, hole diameter 0.7mm, wire diameter 0.5mm +test point wire loop +0 +2 +1 +TestPoint +TestPoint_Bridge_Pitch2.54mm_Drill0.7mm +wire loop as test point, pitch 2.0mm, hole diameter 0.7mm, wire diameter 0.5mm +test point wire loop +0 +2 +1 +TestPoint +TestPoint_Bridge_Pitch2.54mm_Drill1.0mm +wire loop as test point, pitch 2.54mm, hole diameter 1.0mm, wire diameter 0.8mm +test point wire loop +0 +2 +1 +TestPoint +TestPoint_Bridge_Pitch2.54mm_Drill1.3mm +wire loop as test point, pitch 2.54mm, hole diameter 1.3mm, wire diameter 1.0mm +test point wire loop +0 +2 +1 +TestPoint +TestPoint_Bridge_Pitch3.81mm_Drill1.3mm +wire loop as test point, pitch 3.81mm, hole diameter 1.3mm, wire diameter 1.0mm +test point wire loop +0 +2 +1 +TestPoint +TestPoint_Bridge_Pitch5.08mm_Drill0.7mm +wire loop as test point, pitch 5.08mm, hole diameter 0.7mm, wire diameter 1.0mm +test point wire loop +0 +2 +1 +TestPoint +TestPoint_Bridge_Pitch5.08mm_Drill1.3mm +wire loop as test point, pitch 5.08mm, hole diameter 1.3mm, wire diameter 1.0mm +test point wire loop +0 +2 +1 +TestPoint +TestPoint_Bridge_Pitch6.35mm_Drill1.3mm +wire loop as test point, pitch 6.35mm, hole diameter 1.3mm, wire diameter 1.0mm +test point wire loop +0 +2 +1 +TestPoint +TestPoint_Bridge_Pitch7.62mm_Drill1.3mm +wire loop as test point, pitch 7.62mm, hole diameter 1.3mm, wire diameter 1.0mm +test point wire loop +0 +2 +1 +TestPoint +TestPoint_Keystone_5000-5004_Miniature +Keystone Miniature THM Test Point 5000-5004, http://www.keyelco.com/product-pdf.cfm?p=1309 +Through Hole Mount Test Points +0 +1 +1 +TestPoint +TestPoint_Keystone_5005-5009_Compact +Keystone Miniature THM Test Point 5005-5009, http://www.keyelco.com/product-pdf.cfm?p=1314 +Through Hole Mount Test Points +0 +1 +1 +TestPoint +TestPoint_Keystone_5010-5014_Multipurpose +Keystone Miniature THM Test Point 5010-5014, http://www.keyelco.com/product-pdf.cfm?p=1319 +Through Hole Mount Test Points +0 +1 +1 +TestPoint +TestPoint_Keystone_5015_Micro-Minature +SMT Test Point- Micro Miniature 5015, http://www.keyelco.com/product-pdf.cfm?p=1353 +Test Point +0 +1 +1 +TestPoint +TestPoint_Keystone_5019_Minature +SMT Test Point- Micro Miniature 5019, http://www.keyelco.com/product-pdf.cfm?p=1357 +Test Point +0 +1 +1 +TestPoint +TestPoint_Loop_D1.80mm_Drill1.0mm_Beaded +wire loop with bead as test point, loop diameter 1.8mm, hole diameter 1.0mm +test point wire loop bead +0 +1 +1 +TestPoint +TestPoint_Loop_D2.50mm_Drill1.0mm +wire loop as test point, loop diameter 2.5mm, hole diameter 1.0mm +test point wire loop bead +0 +1 +1 +TestPoint +TestPoint_Loop_D2.50mm_Drill1.0mm_LowProfile +low profile wire loop as test point, loop diameter 2.5mm, hole diameter 1.0mm +test point wire loop bead +0 +1 +1 +TestPoint +TestPoint_Loop_D2.50mm_Drill1.85mm +wire loop as test point, loop diameter 2.5mm, hole diameter 1.85mm +test point wire loop bead +0 +1 +1 +TestPoint +TestPoint_Loop_D2.54mm_Drill1.5mm_Beaded +wire loop with bead as test point, loop diameter2.548mm, hole diameter 1.5mm +test point wire loop bead +0 +1 +1 +TestPoint +TestPoint_Loop_D2.60mm_Drill0.9mm_Beaded +wire loop with bead as test point, loop diameter2.6mm, hole diameter 0.9mm +test point wire loop bead +0 +1 +1 +TestPoint +TestPoint_Loop_D2.60mm_Drill1.4mm_Beaded +wire loop with bead as test point, loop diameter2.6mm, hole diameter 1.4mm +test point wire loop bead +0 +1 +1 +TestPoint +TestPoint_Loop_D2.60mm_Drill1.6mm_Beaded +wire loop with bead as test point, loop diameter2.6mm, hole diameter 1.6mm +test point wire loop bead +0 +1 +1 +TestPoint +TestPoint_Loop_D3.50mm_Drill0.9mm_Beaded +wire loop with bead as test point, loop diameter2.6mm, hole diameter 0.9mm +test point wire loop bead +0 +1 +1 +TestPoint +TestPoint_Loop_D3.50mm_Drill1.4mm_Beaded +wire loop with bead as test point, loop diameter 3.5mm, hole diameter 1.4mm +test point wire loop bead +0 +1 +1 +TestPoint +TestPoint_Loop_D3.80mm_Drill2.0mm +wire loop as test point, loop diameter 3.8mm, hole diameter 2.0mm +test point wire loop bead +0 +1 +1 +TestPoint +TestPoint_Loop_D3.80mm_Drill2.5mm +wire loop as test point, loop diameter 3.8mm, hole diameter 2.5mm +test point wire loop bead +0 +1 +1 +TestPoint +TestPoint_Loop_D3.80mm_Drill2.8mm +wire loop as test point, loop diameter 3.8mm, hole diameter 2.8mm +test point wire loop bead +0 +1 +1 +TestPoint +TestPoint_Pad_1.0x1.0mm +SMD rectangular pad as test Point, square 1.0mm side length +test point SMD pad rectangle square +0 +1 +1 +TestPoint +TestPoint_Pad_1.5x1.5mm +SMD rectangular pad as test Point, square 1.5mm side length +test point SMD pad rectangle square +0 +1 +1 +TestPoint +TestPoint_Pad_2.0x2.0mm +SMD rectangular pad as test Point, square 2.0mm side length +test point SMD pad rectangle square +0 +1 +1 +TestPoint +TestPoint_Pad_2.5x2.5mm +SMD rectangular pad as test Point, square 2.5mm side length +test point SMD pad rectangle square +0 +1 +1 +TestPoint +TestPoint_Pad_3.0x3.0mm +SMD rectangular pad as test Point, square 3.0mm side length +test point SMD pad rectangle square +0 +1 +1 +TestPoint +TestPoint_Pad_4.0x4.0mm +SMD rectangular pad as test Point, square 4.0mm side length +test point SMD pad rectangle square +0 +1 +1 +TestPoint +TestPoint_Pad_D1.0mm +SMD pad as test Point, diameter 1.0mm +test point SMD pad +0 +1 +1 +TestPoint +TestPoint_Pad_D1.5mm +SMD pad as test Point, diameter 1.5mm +test point SMD pad +0 +1 +1 +TestPoint +TestPoint_Pad_D2.0mm +SMD pad as test Point, diameter 2.0mm +test point SMD pad +0 +1 +1 +TestPoint +TestPoint_Pad_D2.5mm +SMD pad as test Point, diameter 2.5mm +test point SMD pad +0 +1 +1 +TestPoint +TestPoint_Pad_D3.0mm +SMD pad as test Point, diameter 3.0mm +test point SMD pad +0 +1 +1 +TestPoint +TestPoint_Pad_D4.0mm +SMD pad as test Point, diameter 4.0mm +test point SMD pad +0 +1 +1 +TestPoint +TestPoint_Plated_Hole_D2.0mm +Plated Hole as test Point, diameter 2.0mm +test point plated hole +0 +1 +1 +TestPoint +TestPoint_Plated_Hole_D3.0mm +Plated Hole as test Point, diameter 3.0mm +test point plated hole +0 +1 +1 +TestPoint +TestPoint_Plated_Hole_D4.0mm +Plated Hole as test Point, diameter 4.0mm +test point plated hole +0 +1 +1 +TestPoint +TestPoint_Plated_Hole_D5.0mm +Plated Hole as test Point, diameter 5.0mm +test point plated hole +0 +1 +1 +TestPoint +TestPoint_THTPad_1.0x1.0mm_Drill0.5mm +THT rectangular pad as test Point, square 1.0mm side length, hole diameter 0.5mm +test point THT pad rectangle square +0 +1 +1 +TestPoint +TestPoint_THTPad_1.5x1.5mm_Drill0.7mm +THT rectangular pad as test Point, square 1.5mm side length, hole diameter 0.7mm +test point THT pad rectangle square +0 +1 +1 +TestPoint +TestPoint_THTPad_2.0x2.0mm_Drill1.0mm +THT rectangular pad as test Point, square 2.0mm_Drill1.0mm side length, hole diameter 1.0mm +test point THT pad rectangle square +0 +1 +1 +TestPoint +TestPoint_THTPad_2.5x2.5mm_Drill1.2mm +THT rectangular pad as test Point, square 2.5mm side length, hole diameter 1.2mm +test point THT pad rectangle square +0 +1 +1 +TestPoint +TestPoint_THTPad_3.0x3.0mm_Drill1.5mm +THT rectangular pad as test Point, square 3.0mm side length, hole diameter 1.5mm +test point THT pad rectangle square +0 +1 +1 +TestPoint +TestPoint_THTPad_4.0x4.0mm_Drill2.0mm +THT rectangular pad as test Point, square 4.0mm side length, hole diameter 2.0mm +test point THT pad rectangle square +0 +1 +1 +TestPoint +TestPoint_THTPad_D1.0mm_Drill0.5mm +THT pad as test Point, diameter 1.0mm, hole diameter 0.5mm +test point THT pad +0 +1 +1 +TestPoint +TestPoint_THTPad_D1.5mm_Drill0.7mm +THT pad as test Point, diameter 1.5mm, hole diameter 0.7mm +test point THT pad +0 +1 +1 +TestPoint +TestPoint_THTPad_D2.0mm_Drill1.0mm +THT pad as test Point, diameter 2.0mm, hole diameter 1.0mm +test point THT pad +0 +1 +1 +TestPoint +TestPoint_THTPad_D2.5mm_Drill1.2mm +THT pad as test Point, diameter 2.5mm, hole diameter 1.2mm +test point THT pad +0 +1 +1 +TestPoint +TestPoint_THTPad_D3.0mm_Drill1.5mm +THT pad as test Point, diameter 3.0mm, hole diameter 1.5mm +test point THT pad +0 +1 +1 +TestPoint +TestPoint_THTPad_D4.0mm_Drill2.0mm +THT pad as test Point, diameter 4.0mm, hole diameter 2.0mm +test point THT pad +0 +1 +1 +Transformer_SMD +Pulse_P0926NL +SMT Gate Drive Transformer, 1:1:1, 8.0x6.3x5.3mm (https://productfinder.pulseeng.com/products/datasheets/SPM2007_61.pdf) +pulse pa0926nl +0 +6 +6 +Transformer_SMD +Pulse_PA1323NL +SMT Gate Drive Transformer, 1:1, 9.5x7.1x5.3mm (https://productfinder.pulseeng.com/products/datasheets/SPM2007_61.pdf) +pulse pa1323nl +0 +6 +6 +Transformer_SMD +Pulse_PA2001NL +SMT Gate Drive Transformer, 1:1, 8.6x6.7x2.5mm (https://productfinder.pulseeng.com/products/datasheets/P663.pdf) +pulse pa2001nl pe-68386nl +0 +4 +4 +Transformer_SMD +Pulse_PA2002NL-PA2008NL-PA2009NL +SMT Gate Drive Transformer, 1:1:1 or 2:1:1 or 2.5:1:1 or 1:1, 9.0x8.6x7.6mm (https://productfinder.pulseeng.com/products/datasheets/P663.pdf) +pulse pa2002nl pa2008nl pa2009nl p0544nl pa0184nl pa0297nl pa0510nl +0 +6 +6 +Transformer_SMD +Pulse_PA2004NL +SMT Gate Drive Transformer, 1:1:1, 8.6x6.7x3.6mm (https://productfinder.pulseeng.com/products/datasheets/P663.pdf) +pulse pa2004nl pa0264nl +0 +6 +6 +Transformer_SMD +Pulse_PA2005NL +SMT Gate Drive Transformer, 1:1:1, 11.8x8.8x4.0mm (https://productfinder.pulseeng.com/products/datasheets/P663.pdf) +pulse pa2005nl pa0173nl +0 +6 +6 +Transformer_SMD +Pulse_PA2006NL +SMT Gate Drive Transformer, 1:1, 11.8x8.8x4.0mm (https://productfinder.pulseeng.com/products/datasheets/P663.pdf) +pulse pa2006nl pa0186nl +0 +4 +4 +Transformer_SMD +Pulse_PA2007NL +SMT Gate Drive Transformer, 1:1, 9.0x8.6x7.6mm (https://productfinder.pulseeng.com/products/datasheets/P663.pdf) +pulse pa2007nl +0 +4 +4 +Transformer_SMD +Pulse_PA2777NL +SMT Gate Drive Transformer, 1:1, 7.1x6.1x5.5mm (https://productfinder.pulseeng.com/products/datasheets/SPM2007_61.pdf) +pulse pa2777nl +0 +8 +8 +Transformer_SMD +Pulse_PA3493NL +SMT Gate Drive Transformer, 1.25:1, 10.9x9.7x2.7mm (https://productfinder.pulseeng.com/products/datasheets/SPM2007_61.pdf) +pulse pa3493nl +0 +4 +4 +Transformer_SMD +Transformer_Coilcraft_CST1 +Current sense transformer, SMD, 8.0x8.13x5.3mm (https://www.coilcraft.com/pdfs/cst.pdf) +Transformer current sense SMD +0 +8 +8 +Transformer_SMD +Transformer_Coilcraft_CST2 +Current sense transformer, SMD, 8.0x8.13x5.3mm (https://www.coilcraft.com/pdfs/cst.pdf) +Transformer current sense SMD +0 +8 +8 +Transformer_SMD +Transformer_Coilcraft_CST2010 +Current sense transformer, SMD, 14.55x19.91x10.50mm (https://www.coilcraft.com/pdfs/cst2010.pdf) +Transformer current sense SMD +0 +12 +12 +Transformer_SMD +Transformer_CurrentSense_8.4x7.2mm +Transformer current sense SMD 8.4x7.2mm +Transformer current sense SMD +0 +8 +8 +Transformer_SMD +Transformer_Ethernet_Bel_S558-5999-T7-F +Ethernet Transformer, Bel S558-5999-T7-F, https://www.belfuse.com/resources/ICMs/lan-/S558-5999-T7-F.pdf +Ethernet Transformer +0 +16 +16 +Transformer_SMD +Transformer_Ethernet_Bourns_PT61017PEL +https://www.bourns.com/docs/Product-Datasheets/PT61017PEL.pdf +Transformer Ethernet Single Center-Tap +0 +16 +16 +Transformer_SMD +Transformer_Ethernet_HALO_TG111-MSC13 +Transformer Ethernet SMD, https://www.haloelectronics.com/pdf/discrete-genesus.pdf +Transformer Ethernet SMD +0 +24 +24 +Transformer_SMD +Transformer_MACOM_SM-22 +https://cdn.macom.com/datasheets/ETC1-1-13.pdf +RF Transformer +0 +5 +5 +Transformer_SMD +Transformer_Murata_78250JC +Murata 78250JC https://www.murata-ps.com/datasheet?/data/magnetics/kmp_78250j.pdf +Murata transformer +0 +6 +6 +Transformer_SMD +Transformer_NF_ETAL_P2781 +NF-Transformer, ETAL, P2781, SMD, +NF-Transformer ETAL P2781 SMD +0 +8 +7 +Transformer_SMD +Transformer_NF_ETAL_P2781_HandSoldering +NF-Transformer, ETAL, P2781, SMD, Handsoldering +NF-Transformer ETAL P2781 SMD Handsoldering +0 +8 +7 +Transformer_SMD +Transformer_NF_ETAL_P3000 +NF-Reansformer, ETAL, P3000, SMD, +NF-Reansformer ETAL P3000 SMD +0 +15 +13 +Transformer_SMD +Transformer_NF_ETAL_P3000_HandSoldering +NF-Reansformer, ETAL, P3000, SMD, Handsoldering, +NF-Reansformer ETAL P3000 SMD Handsoldering +0 +15 +13 +Transformer_SMD +Transformer_NF_ETAL_P3181 +NF-Transformer, ETAL, P3181, SMD, +NF-Transformer ETAL P3181 SMD +0 +7 +6 +Transformer_SMD +Transformer_NF_ETAL_P3181_HandSoldering +NF-Transformer, ETAL, P3181, SMD, Hand Soldering, +NF-Transformer ETAL P3181 SMD Hand Soldering +0 +7 +6 +Transformer_SMD +Transformer_NF_ETAL_P3188 +NF-Transformer, ETAL, P3188, SMD, +NF-Transformer ETAL P3188 SMD +0 +8 +6 +Transformer_SMD +Transformer_NF_ETAL_P3188_HandSoldering +NF-Transformer, ETAL, P3188, SMD, Handsoldering, +NF-Transformer ETAL P3188 SMD Handsoldering +0 +8 +6 +Transformer_SMD +Transformer_NF_ETAL_P3191 +NF-Transformer, ETAL, P3191, SMD, +NF-Transformer ETAL P3191 SMD +0 +8 +6 +Transformer_SMD +Transformer_NF_ETAL_P3191_HandSoldering +NF-Transformer, ETAL, P3191, SMD, Handsoldering, +NF-Transformer ETAL P3191 SMD Handsoldering +0 +8 +6 +Transformer_SMD +Transformer_Pulse_H1100NL +For H1100NL, H1101NL, H1102NL, H1121NL, H1183NL, H1199NL, HX1188NL, HX1198NL and H1302NL. https://productfinder.pulseeng.com/doc_type/WEB301/doc_num/H1102NL/doc_part/H1102NL.pdf +H1100NL H1101NL H1102NL H1121NL H1183NL H1199NL HX1188NL HX1198NL H1302N +0 +16 +16 +Transformer_SMD +Transformer_Wuerth_750315371 +Power Transformer, horizontal core with bobbin, 6 pin, 2.54mm pitch, 11.24mm row spacing, 12.6x8.3x4.1mm +transformer flyback +0 +6 +6 +Transformer_THT +Autotransformer_Toroid_1Tap_Horizontal_D9.0mm_Amidon-T30 +Autotransformer, Toroid, horizontal, laying, 1 Tap, Diameter 9mm, Amidon T30, +Autotransformer Toroid horizontal laying 1 Tap Diameter 9mm Amidon T30 +0 +3 +3 +Transformer_THT +Autotransformer_Toroid_1Tap_Horizontal_D10.5mm_Amidon-T37 +Autotransformer, Toroid, horizontal, laying, 1 Tap, Diameter 10,5mm, Amidon T37, +Autotransformer Toroid horizontal laying 1 Tap Diameter 10 5mm Amidon T37 +0 +3 +3 +Transformer_THT +Autotransformer_Toroid_1Tap_Horizontal_D12.5mm_Amidon-T44 +Autotransformer, Toroid, horizontal, laying, 1 Tap, Diameter 12,5mm, Amidon T44, +Autotransformer Toroid horizontal laying 1 Tap Diameter 12 5mm Amidon T44 +0 +3 +3 +Transformer_THT +Autotransformer_Toroid_1Tap_Horizontal_D14.0mm_Amidon-T50 +Choke, Inductance, Autotransformer, Toroid, horizontal, laying, 1 Tap, Diameter 14mm, Amidon T50, +Choke Inductance Autotransformer Toroid horizontal laying 1 Tap Diameter 14mm Amidon T50 +0 +3 +3 +Transformer_THT +Autotransformer_ZS1052-AC +Ignition coil for xenon flash, http://www.excelitas.com/downloads/ZS1052ACH.pdf +ignition coil autotransformer +0 +3 +3 +Transformer_THT +Transformer_37x44 +transformer 37x44mm² +transformer 37x44mm² +0 +12 +4 +Transformer_THT +Transformer_Breve_TEZ-22x24 +http://www.breve.pl/pdf/ANG/TEZ_ang.pdf +TEZ PCB Transformer +0 +7 +7 +Transformer_THT +Transformer_Breve_TEZ-28x33 +http://www.breve.pl/pdf/ANG/TEZ_ang.pdf +TEZ PCB Transformer +0 +9 +9 +Transformer_THT +Transformer_Breve_TEZ-35x42 +http://www.breve.pl/pdf/ANG/TEZ_ang.pdf +TEZ PCB Transformer +0 +9 +9 +Transformer_THT +Transformer_Breve_TEZ-38x45 +http://www.breve.pl/pdf/ANG/TEZ_ang.pdf +TEZ PCB Transformer +0 +9 +9 +Transformer_THT +Transformer_Breve_TEZ-44x52 +http://www.breve.pl/pdf/ANG/TEZ_ang.pdf +TEZ PCB Transformer +0 +10 +10 +Transformer_THT +Transformer_Breve_TEZ-47x57 +http://www.breve.pl/pdf/ANG/TEZ_ang.pdf +TEZ PCB Transformer +0 +13 +13 +Transformer_THT +Transformer_CHK_EI30-2VA_1xSec +Trafo, Printtrafo, CHK, EI30, 2VA, 1x Sec,http://www.eratransformers.com/downloads/030-7585.0.pdf +Trafo Printtrafo CHK EI30 2VA 1x Sec +0 +10 +10 +Transformer_THT +Transformer_CHK_EI30-2VA_2xSec +Trafo, Printtrafo, CHK, EI30, 2VA, 2x Sec, +Trafo Printtrafo CHK EI30 2VA 2x Sec +0 +10 +10 +Transformer_THT +Transformer_CHK_EI30-2VA_Neutral +Trafo, Printtrafo, CHK, EI30, 2VA, neutral, +Trafo Printtrafo CHK EI30 2VA neutral +0 +10 +10 +Transformer_THT +Transformer_CHK_EI38-3VA_1xSec +Trafo, Printtrafo, CHK, EI38, 3VA, 1x Sec, http://www.eratransformers.com/product-detail/20 +Trafo Printtrafo CHK EI38 3VA 1x Sec +0 +10 +10 +Transformer_THT +Transformer_CHK_EI38-3VA_2xSec +Trafo, Printtrafo, CHK, EI38, 3VA, 2x Sec, http://www.eratransformers.com/product-detail/20 +Trafo Printtrafo CHK EI38 3VA 2x Sec +0 +10 +10 +Transformer_THT +Transformer_CHK_EI38-3VA_Neutral +Trafo, Printtrafo, CHK, EI38, 3VA, neutral, http://www.eratransformers.com/product-detail/20 +Trafo Printtrafo CHK EI42 3VA neutral +0 +10 +10 +Transformer_THT +Transformer_CHK_EI42-5VA_1xSec +Trafo, Printtrafo, CHK, EI42, 5VA, 1x Sec, +Trafo Printtrafo CHK EI42 5VA 1x Sec +0 +10 +10 +Transformer_THT +Transformer_CHK_EI42-5VA_2xSec +Trafo, Printtrafo, CHK, EI42, 5VA, 2x Sec, +Trafo Printtrafo CHK EI42 5VA 2x Sec +0 +10 +10 +Transformer_THT +Transformer_CHK_EI42-5VA_Neutral +Trafo, Printtrafo, CHK, EI42, 5VA, neutral, +Trafo Printtrafo CHK EI42 5VA neutral +0 +10 +10 +Transformer_THT +Transformer_CHK_EI48-8VA_1xSec +Trafo, Printtrafo, CHK, EI48, 8VA, 1x Sec, http://www.eratransformers.com/product-detail/18 +Trafo Printtrafo CHK EI48 8VA 1x Sec +0 +12 +12 +Transformer_THT +Transformer_CHK_EI48-8VA_2xSec +Trafo, Printtrafo, CHK, EI48, 8VA, 2x Sec, http://www.eratransformers.com/product-detail/18 +Trafo Printtrafo CHK EI48 8VA 2x Sec +0 +12 +12 +Transformer_THT +Transformer_CHK_EI48-8VA_Neutral +Trafo, Printtrafo, CHK, EI48, 8VA, neutral, http://www.eratransformers.com/product-detail/18 +Trafo Printtrafo CHK EI48 8VA neutral +0 +12 +12 +Transformer_THT +Transformer_CHK_EI48-10VA_1xSec +Trafo, Printtrafo, CHK, EI48, 10VA, 1x Sec, +Trafo Printtrafo CHK EI48 10VA 1x Sec +0 +12 +12 +Transformer_THT +Transformer_CHK_EI48-10VA_2xSec +Trafo, Printtrafo, CHK, EI48, 10VA, 2x Sec, http://www.eratransformers.com/product-detail/18 +Trafo Printtrafo CHK EI48 10VA 2x Sec +0 +12 +12 +Transformer_THT +Transformer_CHK_EI48-10VA_Neutral +Trafo, Printtrafo, CHK, EI48, 10VA, neutral, http://www.eratransformers.com/product-detail/18 +Trafo Printtrafo CHK EI48 10VA neutral +0 +12 +12 +Transformer_THT +Transformer_CHK_EI54-12VA_1xSec +Trafo, Printtrafo, CHK, EI54, 12VA, 1x Sec,http://www.eratransformers.com/product-detail/19 +Trafo Printtrafo CHK EI54 12VA 1x Sec +0 +14 +14 +Transformer_THT +Transformer_CHK_EI54-12VA_2xSec +Trafo, Printtrafo, CHK, EI54, 12VA, 2x Sec,http://www.eratransformers.com/product-detail/19 +Trafo Printtrafo CHK EI54 12VA 2x Sec +0 +14 +14 +Transformer_THT +Transformer_CHK_EI54-12VA_Neutral +Trafo, Printtrafo, CHK, EI54, 12VA, neutral,http://www.eratransformers.com/product-detail/19 +Trafo Printtrafo CHK EI54 12VA neutral +0 +14 +14 +Transformer_THT +Transformer_CHK_EI54-16VA_1xSec +Trafo, Printtrafo, CHK, EI54, 16VA, 1x Sec,http://www.eratransformers.com/product-detail/19 +Trafo Printtrafo CHK EI54 16VA 1x Sec +0 +14 +14 +Transformer_THT +Transformer_CHK_EI54-16VA_2xSec +Trafo, Printtrafo, CHK, EI54, 16VA, 2x Sec,http://www.eratransformers.com/product-detail/19 +Trafo Printtrafo CHK EI54 16VA 2x Sec +0 +14 +14 +Transformer_THT +Transformer_CHK_EI54-16VA_Neutral +Trafo, Printtrafo, CHK, EI54, 16VA, neutral,http://www.eratransformers.com/product-detail/19 +Trafo Printtrafo CHK EI54 16VA neutral +0 +14 +14 +Transformer_THT +Transformer_CHK_UI30-4VA_Flat +Trafo, Flattrafo, CHK, UI30, 4VA, +Trafo Flattrafo CHK UI30 4VA +0 +16 +16 +Transformer_THT +Transformer_CHK_UI39-10VA_Flat +Trafo, Flattrafo, CHK, UI39, 10VA, +Trafo Flattrafo CHK UI39 10VA +0 +20 +20 +Transformer_THT +Transformer_Coilcraft_Q4434-B_Rhombus-T1311 +Transformator, Transformer, Flyback, Coilcraft Q4434-B, Rgombus T1311, +Transformator Transformer Flyback Coilcraft Q4434-B Rgombus T1311 +0 +8 +8 +Transformer_THT +Transformer_EPCOS_B66359A1013T_Horizontal +Transformer, Transformator, ETD29, 13 Pin, Horizontal, EPCOS-B66359A1013T, +Transformer Transformator ETD29 13 Pin Horizontal EPCOS-B66359A1013T +0 +13 +13 +Transformer_THT +Transformer_EPCOS_B66359J1014T_Vertical +Transformer, Transformator, ETD29, 14 Pin, Vertical, EPCOS-B66359J1014T, +Transformer Transformator ETD29 14 Pin Vertical EPCOS-B66359J1014T +0 +14 +14 +Transformer_THT +Transformer_Microphone_Lundahl_LL1538 +AUDIO TRAFO LUNDAHL, https://www.lundahltransformers.com/wp-content/uploads/datasheets/1538_8xl.pdf +AUDIO TRAFO LUNDAHL +0 +7 +7 +Transformer_THT +Transformer_Microphone_Lundahl_LL1587 +AUDIO TRAFO LUNDAHL, https://www.lundahltransformers.com/wp-content/uploads/datasheets/1587.pdf +AUDIO TRAFO LUNDAHL +0 +7 +7 +Transformer_THT +Transformer_Myrra_74040_Horizontal +Transformer, Transformator, ETD29, 13 Pin, Horizontal, Myrra-74040, +Transformer Transformator ETD29 13 Pin Horizontal Myrra-74040 +0 +13 +13 +Transformer_THT +Transformer_Myrra_EF20_7408x +EF20 flyback transformer,http://myrra.com/wp-content/uploads/2017/09/Datasheet-74087-74088-74089-rev-A.pdf +transformer flyback SMPS +0 +9 +9 +Transformer_THT +Transformer_NF_ETAL_1-1_P1200 +NF-Transformer, 1:1, ETAL P1200,http://www.etalgroup.com/sites/default/files/products/P1200_April_2005.pdf +NF-Transformer 1to1 ETAL P1200 +0 +4 +4 +Transformer_THT +Transformer_NF_ETAL_P1165 +NF-Transformer, ETAL, P1165,http://www.etalgroup.com/sites/default/files/products/P1165_February_2006.pdf +NF-Transformer ETAL P1165 +0 +4 +4 +Transformer_THT +Transformer_NF_ETAL_P3324 +NF-Transformer, ETAL P3324,http://www.etalgroup.com/sites/default/files/products/P3324_April_2005.pdf +NF-Transformer ETAL P3324 +0 +4 +4 +Transformer_THT +Transformer_NF_ETAL_P3356 +NF-Transformer, ETAL P3356, http://www.etalgroup.com/sites/default/files/products/P3356_December_2005.pdf +NF-Transformer ETAL P3356 +0 +4 +4 +Transformer_THT +Transformer_Toroid_Horizontal_D9.0mm_Amidon-T30 +Transformer, Toroid, horizontal, laying, Diameter 9mm, Amidon, T30, +Transformer Toroid horizontal laying Diameter 9mm Amidon T30 +0 +4 +4 +Transformer_THT +Transformer_Toroid_Horizontal_D10.5mm_Amidon-T37 +Transformer, Toroid, horizontal, laying, Diameter 10,5mm, Amidon T37, +Transformer Toroid horizontal laying Diameter 10 5mm Amidon T37 +0 +4 +4 +Transformer_THT +Transformer_Toroid_Horizontal_D12.5mm_Amidon-T44 +Transformer, Toroid, horizontal, laying, Diameter 12,5mm, Amidon T44, +Transformer Toroid horizontal laying Diameter 12 5mm Amidon T44 +0 +4 +4 +Transformer_THT +Transformer_Toroid_Horizontal_D14.0mm_Amidon-T50 +Transformer, Toroid, horizontal, laying, Diameter 14mm, Amidon T50, +Transformer Toroid horizontal laying Diameter 14mm Amidon T50 +0 +4 +4 +Transformer_THT +Transformer_Toroid_Horizontal_D18.0mm +Transformer, Toroid, tapped, horizontal, laying, Diameter 18mm, +Transformer Toroid tapped horizontal laying Diameter 18mm +0 +5 +4 +Transformer_THT +Transformer_Toroid_Tapped_Horizontal_D9.0mm_Amidon-T30 +Transformer, Toroid, tapped, horizontal, laying, Diameter 9mm, Amidon, T30, +Transformer Toroid tapped horizontal laying Diameter 9mm Amidon T30 +0 +6 +6 +Transformer_THT +Transformer_Toroid_Tapped_Horizontal_D10.5mm_Amidon-T37 +Transformer, Toroid, tapped, horizontal, laying, Diameter 10,5mm, Amidon, T37, +Transformer Toroid tapped horizontal laying Diameter 10 5mm Amidon T37 +0 +6 +6 +Transformer_THT +Transformer_Toroid_Tapped_Horizontal_D12.5mm_Amidon-T44 +Transformer, Toroid, tapped, horizontal, laying, Diameter 12,5mm, Amidon, T44, +Transformer Toroid tapped horizontal laying Diameter 12 5mm Amidon T44 +0 +6 +6 +Transformer_THT +Transformer_Toroid_Tapped_Horizontal_D14.0mm_Amidon-T50 +Transformer, Toroid, tapped, horizontal, laying, Diameter 14mm, Amidon T50, +Transformer Toroid tapped horizontal laying Diameter 14mm Amidon T50 +0 +6 +6 +Transformer_THT +Transformer_Wuerth_750343373 +Transformer, horizontal core with bobbin, 10 pin, 3.81mm pitch, 15.24mm row spacing, 22x23x17.53mm (https://katalog.we-online.com/ctm/datasheet/750343373.pdf) +transformer flyback +0 +10 +10 +Valve +Valve_ECC-83-1 +Valve ECC-83-1 round pins +Valve ECC-83-1 round pins +0 +9 +9 +Valve +Valve_ECC-83-2 +Valve ECC-83-2 flat pins +Valve ECC-83-2 flat pins +0 +10 +9 +Valve +Valve_EURO +Valve Euro +Valve Euro +0 +7 +5 +Valve +Valve_Glimm +Valve Glimm +Valve Glimm +0 +2 +2 +Valve +Valve_Mini_G +Valve mini G +Valve mini G +0 +9 +7 +Valve +Valve_Mini_P +Valve mini P +Valve mini P +0 +7 +7 +Valve +Valve_Mini_Pentode_Linear +Mini-Pentode, 5-pin, e.g. JAN6418 +Valve Mini-Pentode 5-pin JAN6418 +0 +5 +5 +Valve +Valve_Noval_G +Valve NOVAL G +Valve NOVAL G +0 +11 +9 +Valve +Valve_Noval_P +Valve NOVAL P +Valve NOVAL P +0 +9 +9 +Valve +Valve_Octal +8-pin round valve +valve +0 +9 +8 +Varistor +RV_Disc_D7mm_W3.4mm_P5mm +Varistor, diameter 7mm, width 3.4mm, pitch 5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D7mm_W3.5mm_P5mm +Varistor, diameter 7mm, width 3.5mm, pitch 5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D7mm_W3.6mm_P5mm +Varistor, diameter 7mm, width 3.6mm, pitch 5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D7mm_W3.7mm_P5mm +Varistor, diameter 7mm, width 3.7mm, pitch 5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D7mm_W3.8mm_P5mm +Varistor, diameter 7mm, width 3.8mm, pitch 5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D7mm_W3.9mm_P5mm +Varistor, diameter 7mm, width 3.9mm, pitch 5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D7mm_W4.2mm_P5mm +Varistor, diameter 7mm, width 4.2mm, pitch 5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D7mm_W4.3mm_P5mm +Varistor, diameter 7mm, width 4.3mm, pitch 5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D7mm_W4.5mm_P5mm +Varistor, diameter 7mm, width 4.5mm, pitch 5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D7mm_W4.8mm_P5mm +Varistor, diameter 7mm, width 4.8mm, pitch 5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D7mm_W4.9mm_P5mm +Varistor, diameter 7mm, width 4.9mm, pitch 5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D7mm_W4mm_P5mm +Varistor, diameter 7mm, width 4mm, pitch 5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D7mm_W5.1mm_P5mm +Varistor, diameter 7mm, width 5.1mm, pitch 5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D7mm_W5.4mm_P5mm +Varistor, diameter 7mm, width 5.4mm, pitch 5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D7mm_W5.5mm_P5mm +Varistor, diameter 7mm, width 5.5mm, pitch 5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D7mm_W5.7mm_P5mm +Varistor, diameter 7mm, width 5.7mm, pitch 5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D9mm_W3.3mm_P5mm +Varistor, diameter 9mm, width 3.3mm, pitch 5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D9mm_W3.4mm_P5mm +Varistor, diameter 9mm, width 3.4mm, pitch 5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D9mm_W3.5mm_P5mm +Varistor, diameter 9mm, width 3.5mm, pitch 5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D9mm_W3.6mm_P5mm +Varistor, diameter 9mm, width 3.6mm, pitch 5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D9mm_W3.7mm_P5mm +Varistor, diameter 9mm, width 3.7mm, pitch 5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D9mm_W3.8mm_P5mm +Varistor, diameter 9mm, width 3.8mm, pitch 5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D9mm_W3.9mm_P5mm +Varistor, diameter 9mm, width 3.9mm, pitch 5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D9mm_W4.1mm_P5mm +Varistor, diameter 9mm, width 4.1mm, pitch 5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D9mm_W4.2mm_P5mm +Varistor, diameter 9mm, width 4.2mm, pitch 5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D9mm_W4.4mm_P5mm +Varistor, diameter 9mm, width 4.4mm, pitch 5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D9mm_W4.5mm_P5mm +Varistor, diameter 9mm, width 4.5mm, pitch 5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D9mm_W4.8mm_P5mm +Varistor, diameter 9mm, width 4.8mm, pitch 5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D9mm_W4mm_P5mm +Varistor, diameter 9mm, width 4mm, pitch 5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D9mm_W5.2mm_P5mm +Varistor, diameter 9mm, width 5.2mm, pitch 5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D9mm_W5.4mm_P5mm +Varistor, diameter 9mm, width 5.4mm, pitch 5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D9mm_W5.5mm_P5mm +Varistor, diameter 9mm, width 5.5mm, pitch 5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D9mm_W5.7mm_P5mm +Varistor, diameter 9mm, width 5.7mm, pitch 5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D9mm_W6.1mm_P5mm +Varistor, diameter 9mm, width 6.1mm, pitch 5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D12mm_W3.9mm_P7.5mm +Varistor, diameter 12mm, width 3.9mm, pitch 7.5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D12mm_W4.2mm_P7.5mm +Varistor, diameter 12mm, width 4.2mm, pitch 7.5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D12mm_W4.3mm_P7.5mm +Varistor, diameter 12mm, width 4.3mm, pitch 7.5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D12mm_W4.4mm_P7.5mm +Varistor, diameter 12mm, width 4.4mm, pitch 7.5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D12mm_W4.5mm_P7.5mm +Varistor, diameter 12mm, width 4.5mm, pitch 7.5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D12mm_W4.6mm_P7.5mm +Varistor, diameter 12mm, width 4.6mm, pitch 7.5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D12mm_W4.7mm_P7.5mm +Varistor, diameter 12mm, width 4.7mm, pitch 7.5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D12mm_W4.8mm_P7.5mm +Varistor, diameter 12mm, width 4.8mm, pitch 7.5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D12mm_W4mm_P7.5mm +Varistor, diameter 12mm, width 4mm, pitch 7.5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D12mm_W5.1mm_P7.5mm +Varistor, diameter 12mm, width 5.1mm, pitch 7.5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D12mm_W5.4mm_P7.5mm +Varistor, diameter 12mm, width 5.4mm, pitch 7.5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D12mm_W5.8mm_P7.5mm +Varistor, diameter 12mm, width 5.8mm, pitch 7.5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D12mm_W5mm_P7.5mm +Varistor, diameter 12mm, width 5mm, pitch 7.5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D12mm_W6.1mm_P7.5mm +Varistor, diameter 12mm, width 6.1mm, pitch 7.5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D12mm_W6.2mm_P7.5mm +Varistor, diameter 12mm, width 6.2mm, pitch 7.5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D12mm_W6.3mm_P7.5mm +Varistor, diameter 12mm, width 6.3mm, pitch 7.5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D12mm_W6.7mm_P7.5mm +Varistor, diameter 12mm, width 6.7mm, pitch 7.5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D12mm_W7.1mm_P7.5mm +Varistor, diameter 12mm, width 7.1mm, pitch 7.5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D12mm_W7.5mm_P7.5mm +Varistor, diameter 12mm, width 7.5mm, pitch 7.5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D12mm_W7.9mm_P7.5mm +Varistor, diameter 12mm, width 7.9mm, pitch 7.5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D15.5mm_W3.9mm_P7.5mm +Varistor, diameter 15.5mm, width 3.9mm, pitch 7.5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D15.5mm_W4.2mm_P7.5mm +Varistor, diameter 15.5mm, width 4.2mm, pitch 7.5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D15.5mm_W4.3mm_P7.5mm +Varistor, diameter 15.5mm, width 4.3mm, pitch 7.5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D15.5mm_W4.4mm_P7.5mm +Varistor, diameter 15.5mm, width 4.4mm, pitch 7.5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D15.5mm_W4.5mm_P7.5mm +Varistor, diameter 15.5mm, width 4.5mm, pitch 7.5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D15.5mm_W4.6mm_P7.5mm +Varistor, diameter 15.5mm, width 4.6mm, pitch 7.5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D15.5mm_W4.7mm_P7.5mm +Varistor, diameter 15.5mm, width 4.7mm, pitch 7.5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D15.5mm_W4.8mm_P7.5mm +Varistor, diameter 15.5mm, width 4.8mm, pitch 7.5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D15.5mm_W4.9mm_P7.5mm +Varistor, diameter 15.5mm, width 4.9mm, pitch 7.5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D15.5mm_W4mm_P7.5mm +Varistor, diameter 15.5mm, width 4mm, pitch 7.5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D15.5mm_W5.2mm_P7.5mm +Varistor, diameter 15.5mm, width 5.2mm, pitch 7.5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D15.5mm_W5.4mm_P7.5mm +Varistor, diameter 15.5mm, width 5.4mm, pitch 7.5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D15.5mm_W5.9mm_P7.5mm +Varistor, diameter 15.5mm, width 5.9mm, pitch 7.5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D15.5mm_W5mm_P7.5mm +Varistor, diameter 15.5mm, width 5mm, pitch 7.5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D15.5mm_W6.1mm_P7.5mm +Varistor, diameter 15.5mm, width 6.1mm, pitch 7.5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D15.5mm_W6.3mm_P7.5mm +Varistor, diameter 15.5mm, width 6.3mm, pitch 7.5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D15.5mm_W6.4mm_P7.5mm +Varistor, diameter 15.5mm, width 6.4mm, pitch 7.5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D15.5mm_W6.8mm_P7.5mm +Varistor, diameter 15.5mm, width 6.8mm, pitch 7.5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D15.5mm_W7.2mm_P7.5mm +Varistor, diameter 15.5mm, width 7.2mm, pitch 7.5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D15.5mm_W7.5mm_P7.5mm +Varistor, diameter 15.5mm, width 7.5mm, pitch 7.5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D15.5mm_W8mm_P7.5mm +Varistor, diameter 15.5mm, width 8mm, pitch 7.5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D15.5mm_W11mm_P7.5mm +Varistor, diameter 15.5mm, width 11mm, pitch 7.5mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D16.5mm_W6.7mm_P7.5mm +Varistor, diameter 16.5mm, width 6.7mm, pitch 5mm, https://katalog.we-online.de/pbs/datasheet/820542711.pdf +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D21.5mm_W4.3mm_P10mm +Varistor, diameter 21.5mm, width 4.3mm, pitch 10mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D21.5mm_W4.4mm_P10mm +Varistor, diameter 21.5mm, width 4.4mm, pitch 10mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D21.5mm_W4.5mm_P10mm +Varistor, diameter 21.5mm, width 4.5mm, pitch 10mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D21.5mm_W4.6mm_P10mm +Varistor, diameter 21.5mm, width 4.6mm, pitch 10mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D21.5mm_W4.7mm_P10mm +Varistor, diameter 21.5mm, width 4.7mm, pitch 10mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D21.5mm_W4.8mm_P10mm +Varistor, diameter 21.5mm, width 4.8mm, pitch 10mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D21.5mm_W4.9mm_P10mm +Varistor, diameter 21.5mm, width 4.9mm, pitch 10mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D21.5mm_W5.1mm_P10mm +Varistor, diameter 21.5mm, width 5.1mm, pitch 10mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D21.5mm_W5.3mm_P10mm +Varistor, diameter 21.5mm, width 5.3mm, pitch 10mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D21.5mm_W5.4mm_P10mm +Varistor, diameter 21.5mm, width 5.4mm, pitch 10mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D21.5mm_W5.6mm_P10mm +Varistor, diameter 21.5mm, width 5.6mm, pitch 10mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D21.5mm_W5.8mm_P10mm +Varistor, diameter 21.5mm, width 5.8mm, pitch 10mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D21.5mm_W5mm_P10mm +Varistor, diameter 21.5mm, width 5mm, pitch 10mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D21.5mm_W6.1mm_P7.5mm +varistor +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D21.5mm_W6.3mm_P10mm +Varistor, diameter 21.5mm, width 6.3mm, pitch 10mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D21.5mm_W6.5mm_P10mm +Varistor, diameter 21.5mm, width 6.5mm, pitch 10mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D21.5mm_W6.7mm_P10mm +Varistor, diameter 21.5mm, width 6.7mm, pitch 10mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D21.5mm_W6.8mm_P10mm +Varistor, diameter 21.5mm, width 6.8mm, pitch 10mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D21.5mm_W7.1mm_P10mm +Varistor, diameter 21.5mm, width 7.1mm, pitch 10mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D21.5mm_W7.5mm_P10mm +Varistor, diameter 21.5mm, width 7.5mm, pitch 10mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D21.5mm_W7.9mm_P10mm +Varistor, diameter 21.5mm, width 7.9mm, pitch 10mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D21.5mm_W8.4mm_P10mm +Varistor, diameter 21.5mm, width 8.4mm, pitch 10mm +varistor SIOV +0 +2 +2 +Varistor +RV_Disc_D21.5mm_W11.4mm_P10mm +Varistor, diameter 21.5mm, width 11.4mm, pitch 10mm +varistor SIOV +0 +2 +2 +my_additions +1.3_TFT_IPS_ST7789_Module + +display +0 +7 +7 +my_additions +Buzzer_D9_H5.5 + +buzzer +0 +2 +2 +my_additions +Conn_02x02_PinHeader_2.54_PCBEdge + + +0 +4 +4 +my_additions +Conn_02x03_PinHeader_2.54_PCBEdge + + +0 +6 +6 +my_additions +Connector_IDC_2x17_P1.27mm_Vertical_SMD +IDC Connector 02x17 SMD + +0 +34 +34 +my_additions +Crystal_Seiko_MC-146_4P-L6.7-W1.5-P0.85-BL + +crystal, oscillator +0 +4 +4 +my_additions +Light_heatsink + + +0 +0 +0 +my_additions +MORNSUN_B0505S-1WR3 +MORNSUN DC-DC isolator. + +0 +4 +4 +my_additions +MORNSUN_B1212S-2WR2 +MORNSUN DC-DC isolator. Single + +0 +4 +4 +my_additions +Mc_SWD_conn +McFLY's STM32 SWD connector +swd, stm32 +0 +6 +6 +my_additions +Mc_SWD_conn_programmer_side +McFLY's STM32 SWD connector +swd, stm32 +0 +9 +6 +my_additions +Mounting_hole_1.5x1 + + +0 +1 +0 +my_additions +OPTO-SMD4 + + +0 +4 +4 +my_additions +OPTO-SMD6 + + +0 +6 +6 +my_additions +OSC-TH_L10.0-W4.5-P5.00 + + +0 +2 +2 +my_additions +R_0805_HandSolder_together_with_TH_8mm +Resistor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator +resistor handsolder +0 +4 +2 +my_additions +SW_tactile_BRIGHT_TSA451G90-250 + + +0 +4 +4 +my_additions +USB_Micro-B_XKB-U254-051T-4BH83-F1S + + +0 +11 +6 diff --git a/kicad/gerber/filadry2-B_Cu.gbr b/kicad/gerber/filadry2-B_Cu.gbr new file mode 100644 index 0000000..dee4d09 --- /dev/null +++ b/kicad/gerber/filadry2-B_Cu.gbr @@ -0,0 +1,5776 @@ +%TF.GenerationSoftware,KiCad,Pcbnew,(5.1.9)-1*% +%TF.CreationDate,2021-12-25T05:37:13+03:00*% +%TF.ProjectId,filadry2,66696c61-6472-4793-922e-6b696361645f,rev?*% +%TF.SameCoordinates,Original*% +%TF.FileFunction,Copper,L2,Bot*% +%TF.FilePolarity,Positive*% +%FSLAX46Y46*% +G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)* +G04 Created by KiCad (PCBNEW (5.1.9)-1) date 2021-12-25 05:37:13* +%MOMM*% +%LPD*% +G01* +G04 APERTURE LIST* +%TA.AperFunction,ComponentPad*% +%ADD10C,2.300000*% +%TD*% +%TA.AperFunction,ComponentPad*% +%ADD11R,2.300000X2.000000*% +%TD*% +%TA.AperFunction,ComponentPad*% +%ADD12C,1.600000*% +%TD*% +%TA.AperFunction,ComponentPad*% +%ADD13O,2.400000X1.600000*% +%TD*% +%TA.AperFunction,ComponentPad*% +%ADD14R,2.400000X1.600000*% +%TD*% +%TA.AperFunction,SMDPad,CuDef*% +%ADD15R,1.700000X1.500000*% +%TD*% +%TA.AperFunction,ComponentPad*% +%ADD16C,0.100000*% +%TD*% +%TA.AperFunction,ComponentPad*% +%ADD17R,2.600000X2.600000*% +%TD*% +%TA.AperFunction,ComponentPad*% +%ADD18C,2.600000*% +%TD*% +%TA.AperFunction,ComponentPad*% +%ADD19C,1.800000*% +%TD*% +%TA.AperFunction,ViaPad*% +%ADD20C,0.800000*% +%TD*% +%TA.AperFunction,Conductor*% +%ADD21C,0.300000*% +%TD*% +%TA.AperFunction,Conductor*% +%ADD22C,0.500000*% +%TD*% +%TA.AperFunction,Conductor*% +%ADD23C,0.700000*% +%TD*% +%TA.AperFunction,Conductor*% +%ADD24C,1.905000*% +%TD*% +%TA.AperFunction,Conductor*% +%ADD25C,0.254000*% +%TD*% +%TA.AperFunction,Conductor*% +%ADD26C,0.100000*% +%TD*% +G04 APERTURE END LIST* +D10* +%TO.P,PS1,4*% +%TO.N,+3V3*% +X52310800Y-42813600D03* +%TO.P,PS1,2*% +%TO.N,AC_N*% +X22910800Y-37613600D03* +D11* +%TO.P,PS1,1*% +%TO.N,AC_L*% +X22910800Y-32613600D03* +D10* +%TO.P,PS1,3*% +%TO.N,GND*% +X52310800Y-27413600D03* +%TD*% +D12* +%TO.P,Y1,2*% +%TO.N,Net-(C2-Pad1)*% +X84584646Y-67214675D03* +%TO.P,Y1,1*% +%TO.N,Net-(C1-Pad1)*% +X79684646Y-67214675D03* +%TD*% +D13* +%TO.P,U4,6*% +%TO.N,Net-(R11-Pad2)*% +X63550800Y-69697600D03* +%TO.P,U4,3*% +%TO.N,Net-(U4-Pad3)*% +X71170800Y-64617600D03* +%TO.P,U4,5*% +%TO.N,Net-(U4-Pad5)*% +X63550800Y-67157600D03* +%TO.P,U4,2*% +%TO.N,GND*% +X71170800Y-67157600D03* +%TO.P,U4,4*% +%TO.N,Net-(Q3-Pad3)*% +X63550800Y-64617600D03* +D14* +%TO.P,U4,1*% +%TO.N,Net-(R8-Pad1)*% +X71170800Y-69697600D03* +%TD*% +D13* +%TO.P,U3,6*% +%TO.N,Net-(R10-Pad2)*% +X59232800Y-52171600D03* +%TO.P,U3,3*% +%TO.N,Net-(U3-Pad3)*% +X66852800Y-47091600D03* +%TO.P,U3,5*% +%TO.N,Net-(U3-Pad5)*% +X59232800Y-49631600D03* +%TO.P,U3,2*% +%TO.N,GND*% +X66852800Y-49631600D03* +%TO.P,U3,4*% +%TO.N,Net-(Q2-Pad3)*% +X59232800Y-47091600D03* +D14* +%TO.P,U3,1*% +%TO.N,Net-(R7-Pad1)*% +X66852800Y-52171600D03* +%TD*% +D15* +%TO.P,U2,4*% +%TO.N,ZeroCross*% +X44374800Y-37693600D03* +%TO.P,U2,3*% +%TO.N,GND*% +X44374800Y-35153600D03* +%TO.P,U2,2*% +%TO.N,Net-(R13-Pad1)*% +X34974800Y-35153600D03* +%TO.P,U2,1*% +%TO.N,Net-(R12-Pad1)*% +X34974800Y-37693600D03* +%TD*% +%TO.P,R15,2*% +%TO.N,Net-(Q3-Pad3)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X54932184Y-64707313D02* +X55382185Y-63927888D01* +G75* +G02* +X55723690Y-63836382I216505J-124999D01* +G01* +X56329909Y-64186383D01* +G75* +G02* +X56421414Y-64527887I-125000J-216505D01* +G01* +X55971413Y-65307312D01* +G75* +G02* +X55629908Y-65398818I-216505J124999D01* +G01* +X55023689Y-65048817D01* +G75* +G02* +X54932184Y-64707313I125000J216505D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,R15,1*% +%TO.N,AC_N*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X53200134Y-63707313D02* +X53650135Y-62927888D01* +G75* +G02* +X53991640Y-62836382I216505J-124999D01* +G01* +X54597859Y-63186383D01* +G75* +G02* +X54689364Y-63527887I-125000J-216505D01* +G01* +X54239363Y-64307312D01* +G75* +G02* +X53897858Y-64398818I-216505J124999D01* +G01* +X53291639Y-64048817D01* +G75* +G02* +X53200134Y-63707313I125000J216505D01* +G01* +G37* +%TD.AperFunction*% +%TD*% +%TO.P,R13,2*% +%TO.N,AC_L*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X28386800Y-31988600D02* +X28386800Y-33238600D01* +G75* +G02* +X28136800Y-33488600I-250000J0D01* +G01* +X27336800Y-33488600D01* +G75* +G02* +X27086800Y-33238600I0J250000D01* +G01* +X27086800Y-31988600D01* +G75* +G02* +X27336800Y-31738600I250000J0D01* +G01* +X28136800Y-31738600D01* +G75* +G02* +X28386800Y-31988600I0J-250000D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,R13,1*% +%TO.N,Net-(R13-Pad1)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X31486800Y-31988600D02* +X31486800Y-33238600D01* +G75* +G02* +X31236800Y-33488600I-250000J0D01* +G01* +X30436800Y-33488600D01* +G75* +G02* +X30186800Y-33238600I0J250000D01* +G01* +X30186800Y-31988600D01* +G75* +G02* +X30436800Y-31738600I250000J0D01* +G01* +X31236800Y-31738600D01* +G75* +G02* +X31486800Y-31988600I0J-250000D01* +G01* +G37* +%TD.AperFunction*% +%TD*% +%TO.P,R12,2*% +%TO.N,AC_N*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X28334800Y-37068600D02* +X28334800Y-38318600D01* +G75* +G02* +X28084800Y-38568600I-250000J0D01* +G01* +X27284800Y-38568600D01* +G75* +G02* +X27034800Y-38318600I0J250000D01* +G01* +X27034800Y-37068600D01* +G75* +G02* +X27284800Y-36818600I250000J0D01* +G01* +X28084800Y-36818600D01* +G75* +G02* +X28334800Y-37068600I0J-250000D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,R12,1*% +%TO.N,Net-(R12-Pad1)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X31434800Y-37068600D02* +X31434800Y-38318600D01* +G75* +G02* +X31184800Y-38568600I-250000J0D01* +G01* +X30384800Y-38568600D01* +G75* +G02* +X30134800Y-38318600I0J250000D01* +G01* +X30134800Y-37068600D01* +G75* +G02* +X30384800Y-36818600I250000J0D01* +G01* +X31184800Y-36818600D01* +G75* +G02* +X31434800Y-37068600I0J-250000D01* +G01* +G37* +%TD.AperFunction*% +%TD*% +%TO.P,R9,2*% +%TO.N,ZeroCross*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X50806400Y-39275599D02* +X50806400Y-40175601D01* +G75* +G02* +X50556401Y-40425600I-249999J0D01* +G01* +X49856399Y-40425600D01* +G75* +G02* +X49606400Y-40175601I0J249999D01* +G01* +X49606400Y-39275599D01* +G75* +G02* +X49856399Y-39025600I249999J0D01* +G01* +X50556401Y-39025600D01* +G75* +G02* +X50806400Y-39275599I0J-249999D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,R9,1*% +%TO.N,+3V3*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X52806400Y-39275599D02* +X52806400Y-40175601D01* +G75* +G02* +X52556401Y-40425600I-249999J0D01* +G01* +X51856399Y-40425600D01* +G75* +G02* +X51606400Y-40175601I0J249999D01* +G01* +X51606400Y-39275599D01* +G75* +G02* +X51856399Y-39025600I249999J0D01* +G01* +X52556401Y-39025600D01* +G75* +G02* +X52806400Y-39275599I0J-249999D01* +G01* +G37* +%TD.AperFunction*% +%TD*% +%TO.P,R5,2*% +%TO.N,OLED_SCL*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X86722799Y-51555600D02* +X87622801Y-51555600D01* +G75* +G02* +X87872800Y-51805599I0J-249999D01* +G01* +X87872800Y-52505601D01* +G75* +G02* +X87622801Y-52755600I-249999J0D01* +G01* +X86722799Y-52755600D01* +G75* +G02* +X86472800Y-52505601I0J249999D01* +G01* +X86472800Y-51805599D01* +G75* +G02* +X86722799Y-51555600I249999J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,R5,1*% +%TO.N,Net-(J2-Pad3)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X86722799Y-49555600D02* +X87622801Y-49555600D01* +G75* +G02* +X87872800Y-49805599I0J-249999D01* +G01* +X87872800Y-50505601D01* +G75* +G02* +X87622801Y-50755600I-249999J0D01* +G01* +X86722799Y-50755600D01* +G75* +G02* +X86472800Y-50505601I0J249999D01* +G01* +X86472800Y-49805599D01* +G75* +G02* +X86722799Y-49555600I249999J0D01* +G01* +G37* +%TD.AperFunction*% +%TD*% +%TO.P,R4,2*% +%TO.N,BME_SDA*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X73474194Y-59539502D02* +X72574192Y-59539502D01* +G75* +G02* +X72324193Y-59289503I0J249999D01* +G01* +X72324193Y-58589501D01* +G75* +G02* +X72574192Y-58339502I249999J0D01* +G01* +X73474194Y-58339502D01* +G75* +G02* +X73724193Y-58589501I0J-249999D01* +G01* +X73724193Y-59289503D01* +G75* +G02* +X73474194Y-59539502I-249999J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,R4,1*% +%TO.N,Net-(J1-Pad4)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X73474194Y-61539502D02* +X72574192Y-61539502D01* +G75* +G02* +X72324193Y-61289503I0J249999D01* +G01* +X72324193Y-60589501D01* +G75* +G02* +X72574192Y-60339502I249999J0D01* +G01* +X73474194Y-60339502D01* +G75* +G02* +X73724193Y-60589501I0J-249999D01* +G01* +X73724193Y-61289503D01* +G75* +G02* +X73474194Y-61539502I-249999J0D01* +G01* +G37* +%TD.AperFunction*% +%TD*% +%TO.P,R3,2*% +%TO.N,BME_SCL*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X71188188Y-59539500D02* +X70288186Y-59539500D01* +G75* +G02* +X70038187Y-59289501I0J249999D01* +G01* +X70038187Y-58589499D01* +G75* +G02* +X70288186Y-58339500I249999J0D01* +G01* +X71188188Y-58339500D01* +G75* +G02* +X71438187Y-58589499I0J-249999D01* +G01* +X71438187Y-59289501D01* +G75* +G02* +X71188188Y-59539500I-249999J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,R3,1*% +%TO.N,Net-(J1-Pad3)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X71188188Y-61539500D02* +X70288186Y-61539500D01* +G75* +G02* +X70038187Y-61289501I0J249999D01* +G01* +X70038187Y-60589499D01* +G75* +G02* +X70288186Y-60339500I249999J0D01* +G01* +X71188188Y-60339500D01* +G75* +G02* +X71438187Y-60589499I0J-249999D01* +G01* +X71438187Y-61289501D01* +G75* +G02* +X71188188Y-61539500I-249999J0D01* +G01* +G37* +%TD.AperFunction*% +%TD*% +%TA.AperFunction,ComponentPad*% +D16* +%TO.P,Q3,1*% +%TO.N,AC_N*% +G36* +X53843911Y-59165375D02* +G01* +X54843911Y-57433325D01* +X56493689Y-58385825D01* +X55493689Y-60117875D01* +X53843911Y-59165375D01* +G37* +%TD.AperFunction*% +%TO.P,Q3,2*% +%TO.N,Net-(J4-Pad2)*% +%TA.AperFunction,ComponentPad*% +G36* +G01* +X56519866Y-59610486D02* +X56567366Y-59528214D01* +G75* +G02* +X57868505Y-59179575I824889J-476250D01* +G01* +X57868505Y-59179575D01* +G75* +G02* +X58217144Y-60480714I-476250J-824889D01* +G01* +X58169644Y-60562986D01* +G75* +G02* +X56868505Y-60911625I-824889J476250D01* +G01* +X56868505Y-60911625D01* +G75* +G02* +X56519866Y-59610486I476250J824889D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,Q3,3*% +%TO.N,Net-(Q3-Pad3)*% +%TA.AperFunction,ComponentPad*% +G36* +G01* +X58719570Y-60880486D02* +X58767070Y-60798214D01* +G75* +G02* +X60068209Y-60449575I824889J-476250D01* +G01* +X60068209Y-60449575D01* +G75* +G02* +X60416848Y-61750714I-476250J-824889D01* +G01* +X60369348Y-61832986D01* +G75* +G02* +X59068209Y-62181625I-824889J476250D01* +G01* +X59068209Y-62181625D01* +G75* +G02* +X58719570Y-60880486I476250J824889D01* +G01* +G37* +%TD.AperFunction*% +%TD*% +%TA.AperFunction,ComponentPad*% +%TO.P,Q2,1*% +%TO.N,AC_N*% +G36* +X39199723Y-53293518D02* +G01* +X39883763Y-51414133D01* +X41673877Y-52065682D01* +X40989837Y-53945067D01* +X39199723Y-53293518D01* +G37* +%TD.AperFunction*% +%TO.P,Q2,2*% +%TO.N,Net-(J3-Pad1)*% +%TA.AperFunction,ComponentPad*% +G36* +G01* +X41912316Y-53267192D02* +X41944808Y-53177922D01* +G75* +G02* +X43165639Y-52608639I895057J-325774D01* +G01* +X43165639Y-52608639D01* +G75* +G02* +X43734922Y-53829470I-325774J-895057D01* +G01* +X43702430Y-53918740D01* +G75* +G02* +X42481599Y-54488023I-895057J325774D01* +G01* +X42481599Y-54488023D01* +G75* +G02* +X41912316Y-53267192I325774J895057D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,Q2,3*% +%TO.N,Net-(Q2-Pad3)*% +%TA.AperFunction,ComponentPad*% +G36* +G01* +X44299136Y-54135923D02* +X44331628Y-54046653D01* +G75* +G02* +X45552459Y-53477370I895057J-325774D01* +G01* +X45552459Y-53477370D01* +G75* +G02* +X46121742Y-54698201I-325774J-895057D01* +G01* +X46089250Y-54787471D01* +G75* +G02* +X44868419Y-55356754I-895057J325774D01* +G01* +X44868419Y-55356754D01* +G75* +G02* +X44299136Y-54135923I325774J895057D01* +G01* +G37* +%TD.AperFunction*% +%TD*% +D17* +%TO.P,J6,1*% +%TO.N,AC_N*% +X26212800Y-49885600D03* +D18* +%TO.P,J6,2*% +%TO.N,AC_L*% +X26212800Y-54965600D03* +%TD*% +%TA.AperFunction,ComponentPad*% +D16* +%TO.P,J4,1*% +%TO.N,AC_L*% +G36* +X47550967Y-69157433D02* +G01* +X48850967Y-66905767D01* +X51102633Y-68205767D01* +X49802633Y-70457433D01* +X47550967Y-69157433D01* +G37* +%TD.AperFunction*% +D18* +%TO.P,J4,2*% +%TO.N,Net-(J4-Pad2)*% +X53726209Y-71221600D03* +%TD*% +%TA.AperFunction,ComponentPad*% +D16* +%TO.P,J3,1*% +%TO.N,Net-(J3-Pad1)*% +G36* +X34960573Y-64124574D02* +G01* +X35849826Y-61681373D01* +X38293027Y-62570626D01* +X37403774Y-65013827D01* +X34960573Y-64124574D01* +G37* +%TD.AperFunction*% +D18* +%TO.P,J3,2*% +%TO.N,AC_L*% +X41400439Y-65085062D03* +%TD*% +%TO.P,J2,8*% +%TO.N,KEY_DN*% +%TA.AperFunction,ComponentPad*% +G36* +G01* +X98890118Y-57598000D02* +X98890118Y-57598000D01* +G75* +G02* +X98890118Y-56395918I601041J601041D01* +G01* +X98890118Y-56395918D01* +G75* +G02* +X100092200Y-56395918I601041J-601041D01* +G01* +X100092200Y-56395918D01* +G75* +G02* +X100092200Y-57598000I-601041J-601041D01* +G01* +X100092200Y-57598000D01* +G75* +G02* +X98890118Y-57598000I-601041J601041D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,J2,7*% +%TO.N,KEY_OK*% +%TA.AperFunction,ComponentPad*% +G36* +G01* +X97094066Y-55801948D02* +X97094066Y-55801948D01* +G75* +G02* +X97094066Y-54599866I601041J601041D01* +G01* +X97094066Y-54599866D01* +G75* +G02* +X98296148Y-54599866I601041J-601041D01* +G01* +X98296148Y-54599866D01* +G75* +G02* +X98296148Y-55801948I-601041J-601041D01* +G01* +X98296148Y-55801948D01* +G75* +G02* +X97094066Y-55801948I-601041J601041D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,J2,6*% +%TO.N,KEY_UP*% +%TA.AperFunction,ComponentPad*% +G36* +G01* +X95298015Y-54005897D02* +X95298015Y-54005897D01* +G75* +G02* +X95298015Y-52803815I601041J601041D01* +G01* +X95298015Y-52803815D01* +G75* +G02* +X96500097Y-52803815I601041J-601041D01* +G01* +X96500097Y-52803815D01* +G75* +G02* +X96500097Y-54005897I-601041J-601041D01* +G01* +X96500097Y-54005897D01* +G75* +G02* +X95298015Y-54005897I-601041J601041D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,J2,5*% +%TO.N,Net-(J2-Pad5)*% +%TA.AperFunction,ComponentPad*% +G36* +G01* +X93501964Y-52209846D02* +X93501964Y-52209846D01* +G75* +G02* +X93501964Y-51007764I601041J601041D01* +G01* +X93501964Y-51007764D01* +G75* +G02* +X94704046Y-51007764I601041J-601041D01* +G01* +X94704046Y-51007764D01* +G75* +G02* +X94704046Y-52209846I-601041J-601041D01* +G01* +X94704046Y-52209846D01* +G75* +G02* +X93501964Y-52209846I-601041J601041D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,J2,4*% +%TO.N,Net-(J2-Pad4)*% +%TA.AperFunction,ComponentPad*% +G36* +G01* +X91705913Y-50413795D02* +X91705913Y-50413795D01* +G75* +G02* +X91705913Y-49211713I601041J601041D01* +G01* +X91705913Y-49211713D01* +G75* +G02* +X92907995Y-49211713I601041J-601041D01* +G01* +X92907995Y-49211713D01* +G75* +G02* +X92907995Y-50413795I-601041J-601041D01* +G01* +X92907995Y-50413795D01* +G75* +G02* +X91705913Y-50413795I-601041J601041D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,J2,3*% +%TO.N,Net-(J2-Pad3)*% +%TA.AperFunction,ComponentPad*% +G36* +G01* +X89909861Y-48617743D02* +X89909861Y-48617743D01* +G75* +G02* +X89909861Y-47415661I601041J601041D01* +G01* +X89909861Y-47415661D01* +G75* +G02* +X91111943Y-47415661I601041J-601041D01* +G01* +X91111943Y-47415661D01* +G75* +G02* +X91111943Y-48617743I-601041J-601041D01* +G01* +X91111943Y-48617743D01* +G75* +G02* +X89909861Y-48617743I-601041J601041D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,J2,2*% +%TO.N,GND*% +%TA.AperFunction,ComponentPad*% +G36* +G01* +X88113810Y-46821692D02* +X88113810Y-46821692D01* +G75* +G02* +X88113810Y-45619610I601041J601041D01* +G01* +X88113810Y-45619610D01* +G75* +G02* +X89315892Y-45619610I601041J-601041D01* +G01* +X89315892Y-45619610D01* +G75* +G02* +X89315892Y-46821692I-601041J-601041D01* +G01* +X89315892Y-46821692D01* +G75* +G02* +X88113810Y-46821692I-601041J601041D01* +G01* +G37* +%TD.AperFunction*% +%TA.AperFunction,ComponentPad*% +D16* +%TO.P,J2,1*% +%TO.N,+3V3*% +G36* +X86918800Y-45626682D02* +G01* +X85716718Y-44424600D01* +X86918800Y-43222518D01* +X88120882Y-44424600D01* +X86918800Y-45626682D01* +G37* +%TD.AperFunction*% +%TD*% +%TO.P,J1,4*% +%TO.N,Net-(J1-Pad4)*% +%TA.AperFunction,ComponentPad*% +G36* +G01* +X80035554Y-76547269D02* +X80035554Y-76547269D01* +G75* +G02* +X78842433Y-76400772I-523312J669809D01* +G01* +X78842433Y-76400772D01* +G75* +G02* +X78988930Y-75207651I669809J523312D01* +G01* +X78988930Y-75207651D01* +G75* +G02* +X80182051Y-75354148I523312J-669809D01* +G01* +X80182051Y-75354148D01* +G75* +G02* +X80035554Y-76547269I-669809J-523312D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,J1,3*% +%TO.N,Net-(J1-Pad3)*% +%TA.AperFunction,ComponentPad*% +G36* +G01* +X78034007Y-78111049D02* +X78034007Y-78111049D01* +G75* +G02* +X76840886Y-77964552I-523312J669809D01* +G01* +X76840886Y-77964552D01* +G75* +G02* +X76987383Y-76771431I669809J523312D01* +G01* +X76987383Y-76771431D01* +G75* +G02* +X78180504Y-76917928I523312J-669809D01* +G01* +X78180504Y-76917928D01* +G75* +G02* +X78034007Y-78111049I-669809J-523312D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,J1,2*% +%TO.N,GND*% +%TA.AperFunction,ComponentPad*% +G36* +G01* +X76032459Y-79674829D02* +X76032459Y-79674829D01* +G75* +G02* +X74839338Y-79528332I-523312J669809D01* +G01* +X74839338Y-79528332D01* +G75* +G02* +X74985835Y-78335211I669809J523312D01* +G01* +X74985835Y-78335211D01* +G75* +G02* +X76178956Y-78481708I523312J-669809D01* +G01* +X76178956Y-78481708D01* +G75* +G02* +X76032459Y-79674829I-669809J-523312D01* +G01* +G37* +%TD.AperFunction*% +%TA.AperFunction,ComponentPad*% +%TO.P,J1,1*% +%TO.N,+3V3*% +G36* +X74700721Y-80715297D02* +G01* +X73361103Y-81761921D01* +X72314479Y-80422303D01* +X73654097Y-79375679D01* +X74700721Y-80715297D01* +G37* +%TD.AperFunction*% +%TD*% +%TO.P,C6,2*% +%TO.N,GND*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X52849798Y-34174098D02* +X51899798Y-34174098D01* +G75* +G02* +X51649798Y-33924098I0J250000D01* +G01* +X51649798Y-33249098D01* +G75* +G02* +X51899798Y-32999098I250000J0D01* +G01* +X52849798Y-32999098D01* +G75* +G02* +X53099798Y-33249098I0J-250000D01* +G01* +X53099798Y-33924098D01* +G75* +G02* +X52849798Y-34174098I-250000J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,C6,1*% +%TO.N,+3V3*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X52849798Y-36249098D02* +X51899798Y-36249098D01* +G75* +G02* +X51649798Y-35999098I0J250000D01* +G01* +X51649798Y-35324098D01* +G75* +G02* +X51899798Y-35074098I250000J0D01* +G01* +X52849798Y-35074098D01* +G75* +G02* +X53099798Y-35324098I0J-250000D01* +G01* +X53099798Y-35999098D01* +G75* +G02* +X52849798Y-36249098I-250000J0D01* +G01* +G37* +%TD.AperFunction*% +%TD*% +%TO.P,C5,2*% +%TO.N,GND*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X50563800Y-34195600D02* +X49613800Y-34195600D01* +G75* +G02* +X49363800Y-33945600I0J250000D01* +G01* +X49363800Y-33270600D01* +G75* +G02* +X49613800Y-33020600I250000J0D01* +G01* +X50563800Y-33020600D01* +G75* +G02* +X50813800Y-33270600I0J-250000D01* +G01* +X50813800Y-33945600D01* +G75* +G02* +X50563800Y-34195600I-250000J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,C5,1*% +%TO.N,+3V3*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X50563800Y-36270600D02* +X49613800Y-36270600D01* +G75* +G02* +X49363800Y-36020600I0J250000D01* +G01* +X49363800Y-35345600D01* +G75* +G02* +X49613800Y-35095600I250000J0D01* +G01* +X50563800Y-35095600D01* +G75* +G02* +X50813800Y-35345600I0J-250000D01* +G01* +X50813800Y-36020600D01* +G75* +G02* +X50563800Y-36270600I-250000J0D01* +G01* +G37* +%TD.AperFunction*% +%TD*% +%TO.P,C4,2*% +%TO.N,GND*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X77273300Y-55352600D02* +X77273300Y-54402600D01* +G75* +G02* +X77523300Y-54152600I250000J0D01* +G01* +X78198300Y-54152600D01* +G75* +G02* +X78448300Y-54402600I0J-250000D01* +G01* +X78448300Y-55352600D01* +G75* +G02* +X78198300Y-55602600I-250000J0D01* +G01* +X77523300Y-55602600D01* +G75* +G02* +X77273300Y-55352600I0J250000D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,C4,1*% +%TO.N,+3V3*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X75198300Y-55352600D02* +X75198300Y-54402600D01* +G75* +G02* +X75448300Y-54152600I250000J0D01* +G01* +X76123300Y-54152600D01* +G75* +G02* +X76373300Y-54402600I0J-250000D01* +G01* +X76373300Y-55352600D01* +G75* +G02* +X76123300Y-55602600I-250000J0D01* +G01* +X75448300Y-55602600D01* +G75* +G02* +X75198300Y-55352600I0J250000D01* +G01* +G37* +%TD.AperFunction*% +%TD*% +%TO.P,C3,2*% +%TO.N,GND*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X77208800Y-57726600D02* +X77208800Y-56776600D01* +G75* +G02* +X77458800Y-56526600I250000J0D01* +G01* +X78133800Y-56526600D01* +G75* +G02* +X78383800Y-56776600I0J-250000D01* +G01* +X78383800Y-57726600D01* +G75* +G02* +X78133800Y-57976600I-250000J0D01* +G01* +X77458800Y-57976600D01* +G75* +G02* +X77208800Y-57726600I0J250000D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,C3,1*% +%TO.N,+3V3*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X75133800Y-57726600D02* +X75133800Y-56776600D01* +G75* +G02* +X75383800Y-56526600I250000J0D01* +G01* +X76058800Y-56526600D01* +G75* +G02* +X76308800Y-56776600I0J-250000D01* +G01* +X76308800Y-57726600D01* +G75* +G02* +X76058800Y-57976600I-250000J0D01* +G01* +X75383800Y-57976600D01* +G75* +G02* +X75133800Y-57726600I0J250000D01* +G01* +G37* +%TD.AperFunction*% +%TD*% +%TO.P,C2,2*% +%TO.N,GND*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X83738152Y-69279673D02* +X83738152Y-70229673D01* +G75* +G02* +X83488152Y-70479673I-250000J0D01* +G01* +X82813152Y-70479673D01* +G75* +G02* +X82563152Y-70229673I0J250000D01* +G01* +X82563152Y-69279673D01* +G75* +G02* +X82813152Y-69029673I250000J0D01* +G01* +X83488152Y-69029673D01* +G75* +G02* +X83738152Y-69279673I0J-250000D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,C2,1*% +%TO.N,Net-(C2-Pad1)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X85813152Y-69279673D02* +X85813152Y-70229673D01* +G75* +G02* +X85563152Y-70479673I-250000J0D01* +G01* +X84888152Y-70479673D01* +G75* +G02* +X84638152Y-70229673I0J250000D01* +G01* +X84638152Y-69279673D01* +G75* +G02* +X84888152Y-69029673I250000J0D01* +G01* +X85563152Y-69029673D01* +G75* +G02* +X85813152Y-69279673I0J-250000D01* +G01* +G37* +%TD.AperFunction*% +%TD*% +%TO.P,C1,2*% +%TO.N,GND*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X80552647Y-70229676D02* +X80552647Y-69279676D01* +G75* +G02* +X80802647Y-69029676I250000J0D01* +G01* +X81477647Y-69029676D01* +G75* +G02* +X81727647Y-69279676I0J-250000D01* +G01* +X81727647Y-70229676D01* +G75* +G02* +X81477647Y-70479676I-250000J0D01* +G01* +X80802647Y-70479676D01* +G75* +G02* +X80552647Y-70229676I0J250000D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,C1,1*% +%TO.N,Net-(C1-Pad1)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X78477647Y-70229676D02* +X78477647Y-69279676D01* +G75* +G02* +X78727647Y-69029676I250000J0D01* +G01* +X79402647Y-69029676D01* +G75* +G02* +X79652647Y-69279676I0J-250000D01* +G01* +X79652647Y-70229676D01* +G75* +G02* +X79402647Y-70479676I-250000J0D01* +G01* +X78727647Y-70479676D01* +G75* +G02* +X78477647Y-70229676I0J250000D01* +G01* +G37* +%TD.AperFunction*% +%TD*% +D19* +%TO.P,BZ1,2*% +%TO.N,Net-(BZ1-Pad2)*% +X66716280Y-79236459D03* +%TA.AperFunction,ComponentPad*% +D16* +%TO.P,BZ1,1*% +%TO.N,+3V3*% +G36* +X62399502Y-83357797D02* +G01* +X61367064Y-81883323D01* +X62841538Y-80850885D01* +X63873976Y-82325359D01* +X62399502Y-83357797D01* +G37* +%TD.AperFunction*% +%TD*% +D20* +%TO.N,GND*% +X42976800Y-26162000D03* +X44754800Y-26162000D03* +X42113200Y-27432000D03* +X43840400Y-27432000D03* +X42976800Y-28752800D03* +X64770000Y-88341200D03* +X63703200Y-87223600D03* +X66141600Y-87426800D03* +X67665600Y-86410800D03* +X65125600Y-86207600D03* +X66598800Y-85090000D03* +X88341200Y-63601600D03* +X89255600Y-64719200D03* +X90271600Y-65887600D03* +X89814400Y-63398400D03* +X90779600Y-64617600D03* +X91287600Y-63195200D03* +%TO.N,+3V3*% +X75742800Y-58724800D03* +X75742800Y-69037200D03* +X73761600Y-75539600D03* +%TO.N,GND*% +X77774800Y-58724800D03* +X82143600Y-71374000D03* +X41249600Y-26162000D03* +%TO.N,BME_SCL*% +X70459600Y-57454800D03* +%TO.N,BME_SDA*% +X73355200Y-57454800D03* +%TO.N,OLED_SCL*% +X85699600Y-51968400D03* +%TO.N,ZeroCross*% +X70104000Y-52476400D03* +%TD*% +D21* +%TO.N,+3V3*% +X75742800Y-57273100D02* +X75721300Y-57251600D01* +X75721300Y-54942100D02* +X75785800Y-54877600D01* +D22* +X52254800Y-42757600D02* +X52310800Y-42813600D01* +X52353296Y-35683100D02* +X52374798Y-35661598D01* +X50088800Y-35683100D02* +X52353296Y-35683100D01* +X52310800Y-39830000D02* +X52206400Y-39725600D01* +X52310800Y-42813600D02* +X52310800Y-39830000D01* +X52206400Y-35829996D02* +X52374798Y-35661598D01* +X52206400Y-39725600D02* +X52206400Y-35829996D01* +X52310800Y-42813600D02* +X56567200Y-38557200D01* +X56567200Y-38557200D02* +X68072000Y-38557200D01* +X75785800Y-46271000D02* +X75785800Y-54877600D01* +X74244200Y-44424600D02* +X74091800Y-44577000D01* +X86918800Y-44424600D02* +X74244200Y-44424600D01* +X74091800Y-44577000D02* +X75785800Y-46271000D01* +X68072000Y-38557200D02* +X74091800Y-44577000D01* +X71526400Y-82092800D02* +X73507600Y-80568800D01* +X62620520Y-82104341D02* +X71526400Y-82092800D01* +X75785800Y-57187100D02* +X75721300Y-57251600D01* +X75785800Y-54877600D02* +X75785800Y-57187100D01* +X75721300Y-58703300D02* +X75742800Y-58724800D01* +X75721300Y-57251600D02* +X75721300Y-58703300D01* +X75742800Y-58724800D02* +X75742800Y-69037200D01* +X72694800Y-79552800D02* +X73507600Y-80568800D01* +X72847200Y-76200000D02* +X72694800Y-79552800D01* +X73761600Y-75539600D02* +X72847200Y-76200000D01* +D21* +%TO.N,GND*% +X83150648Y-69754677D02* +X83150651Y-69754675D01* +X77774800Y-57273100D02* +X77796300Y-57251600D01* +X77796300Y-54942100D02* +X77860800Y-54877600D01* +X82137324Y-71367724D02* +X82143600Y-71374000D01* +X82137324Y-69754676D02* +X82137324Y-71367724D01* +X81140146Y-69754676D02* +X82137324Y-69754676D01* +X82137324Y-69754676D02* +X83150648Y-69754677D01* +%TO.N,Net-(C1-Pad1)*% +X79065146Y-67834175D02* +X79684645Y-67214675D01* +X79065146Y-69754676D02* +X79065146Y-67834175D01* +%TO.N,Net-(C2-Pad1)*% +X85225651Y-67855680D02* +X84584646Y-67214675D01* +X85225651Y-69754673D02* +X85225651Y-67855680D01* +%TO.N,Net-(J1-Pad4)*% +X73024193Y-60939502D02* +X73024193Y-61187793D01* +X74625200Y-69443600D02* +X79512242Y-75877460D01* +X74625200Y-63550800D02* +X74625200Y-69443600D01* +X73024193Y-61949793D02* +X74625200Y-63550800D01* +X73024193Y-60939502D02* +X73024193Y-61949793D01* +%TO.N,Net-(J1-Pad3)*% +X73761600Y-63957200D02* +X73761600Y-72943087D01* +X70738187Y-60939500D02* +X73761600Y-63957200D01* +X73761600Y-72948800D02* +X77510695Y-77441240D01* +%TO.N,Net-(J2-Pad3)*% +X88372004Y-50155600D02* +X90510902Y-48016702D01* +X87172800Y-50155600D02* +X88372004Y-50155600D01* +D23* +%TO.N,AC_L*% +X22910800Y-32613600D02* +X27736800Y-32613600D01* +D24* +%TO.N,Net-(J3-Pad1)*% +X41859200Y-56134000D02* +X42823619Y-53548331D01* +X38506400Y-58369200D02* +X41859200Y-56134000D01* +X36626800Y-63347600D02* +X38506400Y-58369200D01* +D23* +%TO.N,AC_N*% +X53086000Y-62077600D02* +X55168800Y-58775600D01* +X53944749Y-63617600D02* +X53086000Y-62077600D01* +X27604800Y-37613600D02* +X27684800Y-37693600D01* +X22910800Y-37613600D02* +X27604800Y-37613600D01* +X22910800Y-46583600D02* +X26212800Y-49885600D01* +X22910800Y-37613600D02* +X22910800Y-46583600D01* +%TO.N,Net-(Q2-Pad3)*% +X50952400Y-54457600D02* +X45210439Y-54417062D01* +X57302400Y-47091600D02* +X50952400Y-54457600D01* +X59232800Y-47091600D02* +X57302400Y-47091600D01* +%TO.N,Net-(Q3-Pad3)*% +X57607200Y-64566800D02* +X59568209Y-61315600D01* +X55676799Y-64617600D02* +X57607200Y-64566800D01* +D21* +%TO.N,BME_SCL*% +X70459600Y-58660913D02* +X70738187Y-58939500D01* +X70459600Y-57454800D02* +X70459600Y-58660913D01* +%TO.N,BME_SDA*% +X73355200Y-58608495D02* +X73024193Y-58939502D01* +X73355200Y-57454800D02* +X73355200Y-58608495D01* +%TO.N,OLED_SCL*% +X86985600Y-51968400D02* +X87172800Y-52155600D01* +X85699600Y-51968400D02* +X86985600Y-51968400D01* +%TO.N,ZeroCross*% +X48174400Y-37693600D02* +X50206400Y-39725600D01* +X44374800Y-37693600D02* +X48174400Y-37693600D01* +X44374800Y-39294800D02* +X44374800Y-37693600D01* +X50088800Y-45008800D02* +X44374800Y-39294800D01* +X53746400Y-45008800D02* +X50088800Y-45008800D01* +X55575200Y-43180000D02* +X53746400Y-45008800D01* +X66903600Y-43180000D02* +X55575200Y-43180000D01* +X70104000Y-46380400D02* +X66903600Y-43180000D01* +X70104000Y-52476400D02* +X70104000Y-46380400D01* +D23* +%TO.N,Net-(R12-Pad1)*% +X30784800Y-37693600D02* +X34974800Y-37693600D01* +%TO.N,Net-(R13-Pad1)*% +X32434800Y-32613600D02* +X34974800Y-35153600D01* +X30836800Y-32613600D02* +X32434800Y-32613600D01* +%TD*% +D25* +%TO.N,GND*% +X40275685Y-20894080D02* +X44256937Y-21747586D01* +X48202486Y-22753294D01* +X52106510Y-23909720D01* +X55963256Y-25215156D01* +X59767053Y-26667685D01* +X63512278Y-28265159D01* +X67193433Y-30005233D01* +X70805085Y-31885340D01* +X74341872Y-33902688D01* +X77798632Y-36054332D01* +X81170236Y-38337078D01* +X84451727Y-40747572D01* +X87053599Y-42817195D01* +X87002507Y-42801696D01* +X86918800Y-42793452D01* +X86835093Y-42801696D01* +X86754604Y-42826113D01* +X86680424Y-42865763D01* +X86615405Y-42919123D01* +X85786928Y-43747600D01* +X74277441Y-43747600D01* +X74244199Y-43744326D01* +X74219028Y-43746805D01* +X68574226Y-38102004D01* +X68553027Y-38076173D01* +X68449941Y-37991572D01* +X68332330Y-37928708D01* +X68204715Y-37889996D01* +X68105252Y-37880200D01* +X68105245Y-37880200D01* +X68072000Y-37876926D01* +X68038755Y-37880200D01* +X56600452Y-37880200D01* +X56567200Y-37876925D01* +X56434485Y-37889996D01* +X56306870Y-37928708D01* +X56189259Y-37991572D01* +X56121801Y-38046934D01* +X56086173Y-38076173D01* +X56064978Y-38101999D01* +X52987800Y-41179178D01* +X52987800Y-40695798D01* +X53036572Y-40655772D01* +X53121023Y-40552869D01* +X53183775Y-40435468D01* +X53222418Y-40308080D01* +X53235466Y-40175601D01* +X53235466Y-39275599D01* +X53222418Y-39143120D01* +X53183775Y-39015732D01* +X53121023Y-38898331D01* +X53036572Y-38795428D01* +X52933669Y-38710977D01* +X52883400Y-38684108D01* +X52883400Y-36674855D01* +X52982277Y-36665116D01* +X53109665Y-36626473D01* +X53227067Y-36563721D01* +X53329970Y-36479270D01* +X53414421Y-36376367D01* +X53477173Y-36258965D01* +X53515816Y-36131577D01* +X53528864Y-35999098D01* +X53528864Y-35324098D01* +X53515816Y-35191619D01* +X53477173Y-35064231D01* +X53414421Y-34946829D01* +X53329970Y-34843926D01* +X53227067Y-34759475D01* +X53109665Y-34696723D01* +X52982277Y-34658080D01* +X52849798Y-34645032D01* +X51899798Y-34645032D01* +X51767319Y-34658080D01* +X51639931Y-34696723D01* +X51522529Y-34759475D01* +X51419626Y-34843926D01* +X51335175Y-34946829D01* +X51303494Y-35006100D01* +X51148611Y-35006100D01* +X51128423Y-34968331D01* +X51043972Y-34865428D01* +X50941069Y-34780977D01* +X50823667Y-34718225D01* +X50696279Y-34679582D01* +X50563800Y-34666534D01* +X49613800Y-34666534D01* +X49481321Y-34679582D01* +X49353933Y-34718225D01* +X49236531Y-34780977D01* +X49133628Y-34865428D01* +X49049177Y-34968331D01* +X48986425Y-35085733D01* +X48947782Y-35213121D01* +X48934734Y-35345600D01* +X48934734Y-36020600D01* +X48947782Y-36153079D01* +X48986425Y-36280467D01* +X49049177Y-36397869D01* +X49133628Y-36500772D01* +X49236531Y-36585223D01* +X49353933Y-36647975D01* +X49481321Y-36686618D01* +X49613800Y-36699666D01* +X50563800Y-36699666D01* +X50696279Y-36686618D01* +X50823667Y-36647975D01* +X50941069Y-36585223D01* +X51043972Y-36500772D01* +X51128423Y-36397869D01* +X51148611Y-36360100D01* +X51326480Y-36360100D01* +X51335175Y-36376367D01* +X51419626Y-36479270D01* +X51522529Y-36563721D01* +X51529401Y-36567394D01* +X51529400Y-38684108D01* +X51479131Y-38710977D01* +X51376228Y-38795428D01* +X51291777Y-38898331D01* +X51229025Y-39015732D01* +X51206400Y-39090316D01* +X51183775Y-39015732D01* +X51121023Y-38898331D01* +X51036572Y-38795428D01* +X50933669Y-38710977D01* +X50816268Y-38648225D01* +X50688880Y-38609582D01* +X50556401Y-38596534D01* +X49893336Y-38596534D01* +X48602439Y-37305638D01* +X48584374Y-37283626D01* +X48496515Y-37211521D01* +X48396276Y-37157943D01* +X48332170Y-37138497D01* +X48287511Y-37124949D01* +X48232445Y-37119526D01* +X48202736Y-37116600D01* +X48202731Y-37116600D01* +X48174400Y-37113810D01* +X48146069Y-37116600D01* +X45653866Y-37116600D01* +X45653866Y-36943600D01* +X45645622Y-36859893D01* +X45621205Y-36779404D01* +X45581555Y-36705224D01* +X45528195Y-36640205D01* +X45463176Y-36586845D01* +X45388996Y-36547195D01* +X45308507Y-36522778D01* +X45224800Y-36514534D01* +X43524800Y-36514534D01* +X43441093Y-36522778D01* +X43360604Y-36547195D01* +X43286424Y-36586845D01* +X43221405Y-36640205D01* +X43168045Y-36705224D01* +X43128395Y-36779404D01* +X43103978Y-36859893D01* +X43095734Y-36943600D01* +X43095734Y-38443600D01* +X43103978Y-38527307D01* +X43128395Y-38607796D01* +X43168045Y-38681976D01* +X43221405Y-38746995D01* +X43286424Y-38800355D01* +X43360604Y-38840005D01* +X43441093Y-38864422D01* +X43524800Y-38872666D01* +X43797800Y-38872666D01* +X43797800Y-39266469D01* +X43795010Y-39294800D01* +X43806149Y-39407911D01* +X43819542Y-39452059D01* +X43839143Y-39516675D01* +X43892721Y-39616914D01* +X43964826Y-39704774D01* +X43986838Y-39722839D01* +X49660761Y-45396762D01* +X49678826Y-45418774D01* +X49766685Y-45490879D01* +X49866924Y-45544457D01* +X49975688Y-45577450D01* +X50060464Y-45585800D01* +X50060470Y-45585800D01* +X50088799Y-45588590D01* +X50117128Y-45585800D01* +X53718069Y-45585800D01* +X53746400Y-45588590D01* +X53774731Y-45585800D01* +X53774736Y-45585800D01* +X53804445Y-45582874D01* +X53859511Y-45577451D01* +X53904170Y-45563903D01* +X53968276Y-45544457D01* +X54068515Y-45490879D01* +X54156374Y-45418774D01* +X54174439Y-45396762D01* +X55814201Y-43757000D01* +X66664599Y-43757000D01* +X69527001Y-46619403D01* +X69527000Y-51883847D01* +X69461628Y-51949219D01* +X69371123Y-52084669D01* +X69308782Y-52235173D01* +X69277000Y-52394948D01* +X69277000Y-52557852D01* +X69308782Y-52717627D01* +X69371123Y-52868131D01* +X69461628Y-53003581D01* +X69576819Y-53118772D01* +X69712269Y-53209277D01* +X69862773Y-53271618D01* +X70022548Y-53303400D01* +X70185452Y-53303400D01* +X70345227Y-53271618D01* +X70495731Y-53209277D01* +X70631181Y-53118772D01* +X70746372Y-53003581D01* +X70836877Y-52868131D01* +X70899218Y-52717627D01* +X70931000Y-52557852D01* +X70931000Y-52394948D01* +X70899218Y-52235173D01* +X70836877Y-52084669D01* +X70746372Y-51949219D01* +X70681000Y-51883847D01* +X70681000Y-46408728D01* +X70683790Y-46380399D01* +X70681000Y-46352070D01* +X70681000Y-46352064D01* +X70672650Y-46267288D01* +X70639657Y-46158524D01* +X70586079Y-46058285D01* +X70536768Y-45998200D01* +X70532037Y-45992435D01* +X70532035Y-45992433D01* +X70513974Y-45970426D01* +X70491967Y-45952365D01* +X67331639Y-42792038D01* +X67313574Y-42770026D01* +X67225715Y-42697921D01* +X67125476Y-42644343D01* +X67061334Y-42624886D01* +X67016711Y-42611349D01* +X66961645Y-42605926D01* +X66931936Y-42603000D01* +X66931931Y-42603000D01* +X66903600Y-42600210D01* +X66875269Y-42603000D01* +X55603531Y-42603000D01* +X55575200Y-42600210D01* +X55546869Y-42603000D01* +X55546864Y-42603000D01* +X55520086Y-42605637D01* +X55462088Y-42611349D01* +X55397982Y-42630796D01* +X55353324Y-42644343D01* +X55253085Y-42697921D01* +X55165226Y-42770026D01* +X55147161Y-42792038D01* +X53507399Y-44431800D01* +X50327801Y-44431800D01* +X44951800Y-39055799D01* +X44951800Y-38872666D01* +X45224800Y-38872666D01* +X45308507Y-38864422D01* +X45388996Y-38840005D01* +X45463176Y-38800355D01* +X45528195Y-38746995D01* +X45581555Y-38681976D01* +X45621205Y-38607796D01* +X45645622Y-38527307D01* +X45653866Y-38443600D01* +X45653866Y-38270600D01* +X47935399Y-38270600D01* +X49177334Y-39512536D01* +X49177334Y-40175601D01* +X49190382Y-40308080D01* +X49229025Y-40435468D01* +X49291777Y-40552869D01* +X49376228Y-40655772D01* +X49479131Y-40740223D01* +X49596532Y-40802975D01* +X49723920Y-40841618D01* +X49856399Y-40854666D01* +X50556401Y-40854666D01* +X50688880Y-40841618D01* +X50816268Y-40802975D01* +X50933669Y-40740223D01* +X51036572Y-40655772D01* +X51121023Y-40552869D01* +X51183775Y-40435468D01* +X51206400Y-40360884D01* +X51229025Y-40435468D01* +X51291777Y-40552869D01* +X51376228Y-40655772D01* +X51479131Y-40740223D01* +X51596532Y-40802975D01* +X51633801Y-40814280D01* +X51633800Y-41387090D01* +X51563811Y-41416081D01* +X51305521Y-41588664D01* +X51085864Y-41808321D01* +X50913281Y-42066611D01* +X50794404Y-42353606D01* +X50733800Y-42658279D01* +X50733800Y-42968921D01* +X50794404Y-43273594D01* +X50913281Y-43560589D01* +X51085864Y-43818879D01* +X51305521Y-44038536D01* +X51563811Y-44211119D01* +X51850806Y-44329996D01* +X52155479Y-44390600D01* +X52466121Y-44390600D01* +X52770794Y-44329996D01* +X53057789Y-44211119D01* +X53316079Y-44038536D01* +X53535736Y-43818879D01* +X53708319Y-43560589D01* +X53827196Y-43273594D01* +X53887800Y-42968921D01* +X53887800Y-42658279D01* +X53827196Y-42353606D01* +X53798206Y-42283617D01* +X56847623Y-39234200D01* +X67791578Y-39234200D01* +X73589579Y-45032202D01* +X73610773Y-45058027D01* +X73636598Y-45079221D01* +X73636601Y-45079224D01* +X73636606Y-45079228D01* +X75108800Y-46551423D01* +X75108801Y-53817789D01* +X75071031Y-53837977D01* +X74968128Y-53922428D01* +X74883677Y-54025331D01* +X74820925Y-54142733D01* +X74782282Y-54270121D01* +X74769234Y-54402600D01* +X74769234Y-55352600D01* +X74782282Y-55485079D01* +X74820925Y-55612467D01* +X74883677Y-55729869D01* +X74968128Y-55832772D01* +X75071031Y-55917223D01* +X75108800Y-55937411D01* +X75108801Y-56157313D01* +X75006531Y-56211977D01* +X74903628Y-56296428D01* +X74819177Y-56399331D01* +X74756425Y-56516733D01* +X74717782Y-56644121D01* +X74704734Y-56776600D01* +X74704734Y-57726600D01* +X74717782Y-57859079D01* +X74756425Y-57986467D01* +X74819177Y-58103869D01* +X74903628Y-58206772D01* +X75006531Y-58291223D01* +X75029633Y-58303571D01* +X75009923Y-58333069D01* +X74947582Y-58483573D01* +X74915800Y-58643348D01* +X74915800Y-58806252D01* +X74947582Y-58966027D01* +X75009923Y-59116531D01* +X75065800Y-59200157D01* +X75065800Y-63178144D01* +X75035174Y-63140826D01* +X75013163Y-63122762D01* +X73781775Y-61891374D01* +X73851462Y-61854125D01* +X73954365Y-61769674D01* +X74038816Y-61666771D01* +X74101568Y-61549370D01* +X74140211Y-61421982D01* +X74153259Y-61289503D01* +X74153259Y-60589501D01* +X74140211Y-60457022D01* +X74101568Y-60329634D01* +X74038816Y-60212233D01* +X73954365Y-60109330D01* +X73851462Y-60024879D01* +X73734061Y-59962127D01* +X73659477Y-59939502D01* +X73734061Y-59916877D01* +X73851462Y-59854125D01* +X73954365Y-59769674D01* +X74038816Y-59666771D01* +X74101568Y-59549370D01* +X74140211Y-59421982D01* +X74153259Y-59289503D01* +X74153259Y-58589501D01* +X74140211Y-58457022D01* +X74101568Y-58329634D01* +X74038816Y-58212233D01* +X73954365Y-58109330D01* +X73932200Y-58091140D01* +X73932200Y-58047353D01* +X73997572Y-57981981D01* +X74088077Y-57846531D01* +X74150418Y-57696027D01* +X74182200Y-57536252D01* +X74182200Y-57373348D01* +X74150418Y-57213573D01* +X74088077Y-57063069D01* +X73997572Y-56927619D01* +X73882381Y-56812428D01* +X73746931Y-56721923D01* +X73596427Y-56659582D01* +X73436652Y-56627800D01* +X73273748Y-56627800D01* +X73113973Y-56659582D01* +X72963469Y-56721923D01* +X72828019Y-56812428D01* +X72712828Y-56927619D01* +X72622323Y-57063069D01* +X72559982Y-57213573D01* +X72528200Y-57373348D01* +X72528200Y-57536252D01* +X72559982Y-57696027D01* +X72622323Y-57846531D01* +X72665023Y-57910436D01* +X72574192Y-57910436D01* +X72441713Y-57923484D01* +X72314325Y-57962127D01* +X72196924Y-58024879D01* +X72094021Y-58109330D01* +X72009570Y-58212233D01* +X71946818Y-58329634D01* +X71908175Y-58457022D01* +X71895127Y-58589501D01* +X71895127Y-59289503D01* +X71908175Y-59421982D01* +X71946818Y-59549370D01* +X72009570Y-59666771D01* +X72094021Y-59769674D01* +X72196924Y-59854125D01* +X72314325Y-59916877D01* +X72388909Y-59939502D01* +X72314325Y-59962127D01* +X72196924Y-60024879D01* +X72094021Y-60109330D01* +X72009570Y-60212233D01* +X71946818Y-60329634D01* +X71908175Y-60457022D01* +X71895127Y-60589501D01* +X71895127Y-61279024D01* +X71867253Y-61251203D01* +X71867253Y-60589499D01* +X71854205Y-60457020D01* +X71815562Y-60329632D01* +X71752810Y-60212231D01* +X71668359Y-60109328D01* +X71565456Y-60024877D01* +X71448055Y-59962125D01* +X71373471Y-59939500D01* +X71448055Y-59916875D01* +X71565456Y-59854123D01* +X71668359Y-59769672D01* +X71752810Y-59666769D01* +X71815562Y-59549368D01* +X71854205Y-59421980D01* +X71867253Y-59289501D01* +X71867253Y-58589499D01* +X71854205Y-58457020D01* +X71815562Y-58329632D01* +X71752810Y-58212231D01* +X71668359Y-58109328D01* +X71565456Y-58024877D01* +X71448055Y-57962125D01* +X71320667Y-57923482D01* +X71188188Y-57910434D01* +X71149778Y-57910434D01* +X71192477Y-57846531D01* +X71254818Y-57696027D01* +X71286600Y-57536252D01* +X71286600Y-57373348D01* +X71254818Y-57213573D01* +X71192477Y-57063069D01* +X71101972Y-56927619D01* +X70986781Y-56812428D01* +X70851331Y-56721923D01* +X70700827Y-56659582D01* +X70541052Y-56627800D01* +X70378148Y-56627800D01* +X70218373Y-56659582D01* +X70067869Y-56721923D01* +X69932419Y-56812428D01* +X69817228Y-56927619D01* +X69726723Y-57063069D01* +X69664382Y-57213573D01* +X69632600Y-57373348D01* +X69632600Y-57536252D01* +X69664382Y-57696027D01* +X69726723Y-57846531D01* +X69817228Y-57981981D01* +X69882600Y-58047353D01* +X69882600Y-58048117D01* +X69808015Y-58109328D01* +X69723564Y-58212231D01* +X69660812Y-58329632D01* +X69622169Y-58457020D01* +X69609121Y-58589499D01* +X69609121Y-59289501D01* +X69622169Y-59421980D01* +X69660812Y-59549368D01* +X69723564Y-59666769D01* +X69808015Y-59769672D01* +X69910918Y-59854123D01* +X70028319Y-59916875D01* +X70102903Y-59939500D01* +X70028319Y-59962125D01* +X69910918Y-60024877D01* +X69808015Y-60109328D01* +X69723564Y-60212231D01* +X69660812Y-60329632D01* +X69622169Y-60457020D01* +X69609121Y-60589499D01* +X69609121Y-61289501D01* +X69622169Y-61421980D01* +X69660812Y-61549368D01* +X69723564Y-61666769D01* +X69808015Y-61769672D01* +X69910918Y-61854123D01* +X70028319Y-61916875D01* +X70155707Y-61955518D01* +X70288186Y-61968566D01* +X70952428Y-61968566D01* +X73184600Y-64196520D01* +X73184601Y-72894370D01* +X73184154Y-72896718D01* +X73184601Y-72951111D01* +X73184601Y-72971423D01* +X73184783Y-72973272D01* +X73185088Y-73010372D01* +X73191464Y-73041104D01* +X73192951Y-73056199D01* +X73198156Y-73073359D01* +X73208178Y-73121661D01* +X73224462Y-73160077D01* +X73225944Y-73164963D01* +X73228789Y-73170286D01* +X73252535Y-73226306D01* +X73300443Y-73296744D01* +X76337680Y-76936185D01* +X76282769Y-77068753D01* +X76233695Y-77315466D01* +X76233695Y-77567014D01* +X76282769Y-77813727D01* +X76379032Y-78046126D01* +X76488815Y-78210429D01* +X76416993Y-78266542D01* +X76363098Y-78055546D01* +X76161457Y-77907193D01* +X75934747Y-77801028D01* +X75691682Y-77741131D01* +X75441602Y-77729806D01* +X75194118Y-77767486D01* +X74958740Y-77852724D01* +X74910261Y-77877161D01* +X74806933Y-78068868D01* +X75513111Y-78972736D01* +X75528871Y-78960423D01* +X75557192Y-78996670D01* +X75541431Y-79008984D01* +X76247610Y-79912851D01* +X76458620Y-79858970D01* +X76494060Y-79817843D01* +X76633709Y-79610077D01* +X76730141Y-79379061D01* +X76779652Y-79133669D01* +X76780337Y-78883334D01* +X76732172Y-78637675D01* +X76637007Y-78406134D01* +X76445316Y-78302794D01* +X76514444Y-78248785D01* +X76518784Y-78255280D01* +X76696655Y-78433151D01* +X76905809Y-78572903D01* +X77138208Y-78669166D01* +X77384921Y-78718240D01* +X77636469Y-78718240D01* +X77883182Y-78669166D01* +X78115581Y-78572903D01* +X78324735Y-78433151D01* +X78502606Y-78255280D01* +X78642358Y-78046126D01* +X78738621Y-77813727D01* +X78787695Y-77567014D01* +X78787695Y-77315466D01* +X78738621Y-77068753D01* +X78642358Y-76836354D01* +X78596392Y-76767561D01* +X78698202Y-76869371D01* +X78907356Y-77009123D01* +X79139755Y-77105386D01* +X79386468Y-77154460D01* +X79638016Y-77154460D01* +X79884729Y-77105386D01* +X80117128Y-77009123D01* +X80326282Y-76869371D01* +X80504153Y-76691500D01* +X80643905Y-76482346D01* +X80740168Y-76249947D01* +X80789242Y-76003234D01* +X80789242Y-75751686D01* +X80740168Y-75504973D01* +X80643905Y-75272574D01* +X80504153Y-75063420D01* +X80326282Y-74885549D01* +X80117128Y-74745797D01* +X79884729Y-74649534D01* +X79638016Y-74600460D01* +X79386468Y-74600460D01* +X79282539Y-74621133D01* +X75669260Y-69864200D01* +X75824252Y-69864200D01* +X75984027Y-69832418D01* +X76134531Y-69770077D01* +X76269981Y-69679572D01* +X76385172Y-69564381D01* +X76475677Y-69428931D01* +X76538018Y-69278427D01* +X76569800Y-69118652D01* +X76569800Y-68955748D01* +X76538018Y-68795973D01* +X76475677Y-68645469D01* +X76419800Y-68561843D01* +X76419800Y-67222425D01* +X76530977Y-67222425D01* +X76581777Y-67679625D01* +X76587517Y-67705761D01* +X76790717Y-68315361D01* +X76796686Y-68330115D01* +X76809600Y-68351400D01* +X77266800Y-68961000D01* +X77290430Y-68985048D01* +X77747630Y-69340648D01* +X77765288Y-69352165D01* +X77788251Y-69361784D01* +X78048581Y-69441886D01* +X78048581Y-70229676D01* +X78061629Y-70362155D01* +X78100272Y-70489543D01* +X78163024Y-70606945D01* +X78247475Y-70709848D01* +X78350378Y-70794299D01* +X78467780Y-70857051D01* +X78595168Y-70895694D01* +X78727647Y-70908742D01* +X79402647Y-70908742D01* +X79535126Y-70895694D01* +X79662514Y-70857051D01* +X79779916Y-70794299D01* +X79882819Y-70709848D01* +X79967270Y-70606945D01* +X79972663Y-70596856D01* +X80142334Y-70598026D01* +X80156242Y-70643872D01* +X80195892Y-70718052D01* +X80249252Y-70783071D01* +X80314271Y-70836431D01* +X80388451Y-70876081D01* +X80468940Y-70900498D01* +X80552647Y-70908742D01* +X81010397Y-70906676D01* +X81117147Y-70799926D01* +X81117147Y-70604749D01* +X81163147Y-70605066D01* +X81163147Y-70799926D01* +X81269897Y-70906676D01* +X81727647Y-70908742D01* +X81811354Y-70900498D01* +X81891843Y-70876081D01* +X81966023Y-70836431D01* +X82031042Y-70783071D01* +X82084402Y-70718052D01* +X82124052Y-70643872D01* +X82133793Y-70611760D01* +X82157055Y-70611921D01* +X82166747Y-70643869D01* +X82206397Y-70718049D01* +X82259757Y-70783068D01* +X82324776Y-70836428D01* +X82398956Y-70876078D01* +X82479445Y-70900495D01* +X82563152Y-70908739D01* +X83020902Y-70906673D01* +X83127652Y-70799923D01* +X83127652Y-70618614D01* +X83173652Y-70618932D01* +X83173652Y-70799923D01* +X83280402Y-70906673D01* +X83738152Y-70908739D01* +X83821859Y-70900495D01* +X83902348Y-70876078D01* +X83976528Y-70836428D01* +X84041547Y-70783068D01* +X84094907Y-70718049D01* +X84134557Y-70643869D01* +X84140100Y-70625597D01* +X84339970Y-70626975D01* +X84407980Y-70709845D01* +X84510883Y-70794296D01* +X84628285Y-70857048D01* +X84755673Y-70895691D01* +X84888152Y-70908739D01* +X85563152Y-70908739D01* +X85695631Y-70895691D01* +X85823019Y-70857048D01* +X85940421Y-70794296D01* +X86043324Y-70709845D01* +X86127775Y-70606942D01* +X86190527Y-70489540D01* +X86229170Y-70362152D01* +X86242218Y-70229673D01* +X86242218Y-69480386D01* +X86557990Y-69358935D01* +X86577855Y-69349233D01* +X86597829Y-69334372D01* +X87156629Y-68826372D01* +X87175242Y-68805230D01* +X87530842Y-68297230D01* +X87547283Y-68264561D01* +X87750483Y-67654961D01* +X87754560Y-67639576D01* +X87757000Y-67614800D01* +X87757000Y-66954400D01* +X87752114Y-66919510D01* +X87548914Y-66208310D01* +X87533945Y-66175017D01* +X87178345Y-65616217D01* +X87156159Y-65590002D01* +X86648159Y-65132802D01* +X86633978Y-65121751D01* +X86612046Y-65109969D01* +X86002446Y-64855969D01* +X85989552Y-64851395D01* +X85965098Y-64846722D01* +X85406298Y-64795922D01* +X85394800Y-64795400D01* +X78790800Y-64795400D01* +X78764190Y-64798219D01* +X78052990Y-64950619D01* +X78033630Y-64956412D01* +X78011417Y-64967655D01* +X77452617Y-65323255D01* +X77426828Y-65344971D01* +X76918828Y-65903771D01* +X76909658Y-65915101D01* +X76897183Y-65936647D01* +X76643183Y-66495447D01* +X76633277Y-66528689D01* +X76531677Y-67189089D01* +X76530977Y-67222425D01* +X76419800Y-67222425D01* +X76419800Y-59200157D01* +X76475677Y-59116531D01* +X76538018Y-58966027D01* +X76569800Y-58806252D01* +X76569800Y-58643348D01* +X76538018Y-58483573D01* +X76475677Y-58333069D01* +X76443591Y-58285050D01* +X76538972Y-58206772D01* +X76623423Y-58103869D01* +X76686175Y-57986467D01* +X76689168Y-57976600D01* +X76779734Y-57976600D01* +X76787978Y-58060307D01* +X76812395Y-58140796D01* +X76852045Y-58214976D01* +X76905405Y-58279995D01* +X76970424Y-58333355D01* +X77044604Y-58373005D01* +X77125093Y-58397422D01* +X77208800Y-58405666D01* +X77666550Y-58403600D01* +X77773300Y-58296850D01* +X77773300Y-57274600D01* +X77819300Y-57274600D01* +X77819300Y-58296850D01* +X77926050Y-58403600D01* +X78383800Y-58405666D01* +X78467507Y-58397422D01* +X78547996Y-58373005D01* +X78622176Y-58333355D01* +X78687195Y-58279995D01* +X78740555Y-58214976D01* +X78780205Y-58140796D01* +X78804622Y-58060307D01* +X78812866Y-57976600D01* +X78810800Y-57381350D01* +X78704050Y-57274600D01* +X77819300Y-57274600D01* +X77773300Y-57274600D01* +X76888550Y-57274600D01* +X76781800Y-57381350D01* +X76779734Y-57976600D01* +X76689168Y-57976600D01* +X76724818Y-57859079D01* +X76737866Y-57726600D01* +X76737866Y-56776600D01* +X76724818Y-56644121D01* +X76689169Y-56526600D01* +X76779734Y-56526600D01* +X76781800Y-57121850D01* +X76888550Y-57228600D01* +X77773300Y-57228600D01* +X77773300Y-56206350D01* +X77819300Y-56206350D01* +X77819300Y-57228600D01* +X78704050Y-57228600D01* +X78810800Y-57121850D01* +X78812866Y-56526600D01* +X78804622Y-56442893D01* +X78780205Y-56362404D01* +X78740555Y-56288224D01* +X78687195Y-56223205D01* +X78622176Y-56169845D01* +X78547996Y-56130195D01* +X78467507Y-56105778D01* +X78383800Y-56097534D01* +X77926050Y-56099600D01* +X77819300Y-56206350D01* +X77773300Y-56206350D01* +X77666550Y-56099600D01* +X77208800Y-56097534D01* +X77125093Y-56105778D01* +X77044604Y-56130195D01* +X76970424Y-56169845D01* +X76905405Y-56223205D01* +X76852045Y-56288224D01* +X76812395Y-56362404D01* +X76787978Y-56442893D01* +X76779734Y-56526600D01* +X76689169Y-56526600D01* +X76686175Y-56516733D01* +X76623423Y-56399331D01* +X76538972Y-56296428D01* +X76462800Y-56233915D01* +X76462800Y-55937411D01* +X76500569Y-55917223D01* +X76603472Y-55832772D01* +X76687923Y-55729869D01* +X76750675Y-55612467D01* +X76753668Y-55602600D01* +X76844234Y-55602600D01* +X76852478Y-55686307D01* +X76876895Y-55766796D01* +X76916545Y-55840976D01* +X76969905Y-55905995D01* +X77034924Y-55959355D01* +X77109104Y-55999005D01* +X77189593Y-56023422D01* +X77273300Y-56031666D01* +X77731050Y-56029600D01* +X77837800Y-55922850D01* +X77837800Y-54900600D01* +X77883800Y-54900600D01* +X77883800Y-55922850D01* +X77990550Y-56029600D01* +X78448300Y-56031666D01* +X78532007Y-56023422D01* +X78612496Y-55999005D01* +X78686676Y-55959355D01* +X78751695Y-55905995D01* +X78805055Y-55840976D01* +X78844705Y-55766796D01* +X78869122Y-55686307D01* +X78877366Y-55602600D01* +X78875300Y-55007350D01* +X78768550Y-54900600D01* +X77883800Y-54900600D01* +X77837800Y-54900600D01* +X76953050Y-54900600D01* +X76846300Y-55007350D01* +X76844234Y-55602600D01* +X76753668Y-55602600D01* +X76789318Y-55485079D01* +X76802366Y-55352600D01* +X76802366Y-54402600D01* +X76789318Y-54270121D01* +X76753669Y-54152600D01* +X76844234Y-54152600D01* +X76846300Y-54747850D01* +X76953050Y-54854600D01* +X77837800Y-54854600D01* +X77837800Y-53832350D01* +X77883800Y-53832350D01* +X77883800Y-54854600D01* +X78768550Y-54854600D01* +X78875300Y-54747850D01* +X78877366Y-54152600D01* +X78869122Y-54068893D01* +X78844705Y-53988404D01* +X78805055Y-53914224D01* +X78751695Y-53849205D01* +X78686676Y-53795845D01* +X78612496Y-53756195D01* +X78532007Y-53731778D01* +X78448300Y-53723534D01* +X77990550Y-53725600D01* +X77883800Y-53832350D01* +X77837800Y-53832350D01* +X77731050Y-53725600D01* +X77273300Y-53723534D01* +X77189593Y-53731778D01* +X77109104Y-53756195D01* +X77034924Y-53795845D01* +X76969905Y-53849205D01* +X76916545Y-53914224D01* +X76876895Y-53988404D01* +X76852478Y-54068893D01* +X76844234Y-54152600D01* +X76753669Y-54152600D01* +X76750675Y-54142733D01* +X76687923Y-54025331D01* +X76603472Y-53922428D01* +X76500569Y-53837977D01* +X76462800Y-53817789D01* +X76462800Y-51886948D01* +X84872600Y-51886948D01* +X84872600Y-52049852D01* +X84904382Y-52209627D01* +X84966723Y-52360131D01* +X85057228Y-52495581D01* +X85172419Y-52610772D01* +X85307869Y-52701277D01* +X85458373Y-52763618D01* +X85618148Y-52795400D01* +X85781052Y-52795400D01* +X85940827Y-52763618D01* +X86077669Y-52706936D01* +X86095425Y-52765468D01* +X86158177Y-52882869D01* +X86242628Y-52985772D01* +X86345531Y-53070223D01* +X86462932Y-53132975D01* +X86590320Y-53171618D01* +X86722799Y-53184666D01* +X87622801Y-53184666D01* +X87755280Y-53171618D01* +X87882668Y-53132975D01* +X88000069Y-53070223D01* +X88102972Y-52985772D01* +X88187423Y-52882869D01* +X88250175Y-52765468D01* +X88288818Y-52638080D01* +X88301866Y-52505601D01* +X88301866Y-51805599D01* +X88288818Y-51673120D01* +X88250175Y-51545732D01* +X88187423Y-51428331D01* +X88102972Y-51325428D01* +X88000069Y-51240977D01* +X87882668Y-51178225D01* +X87808084Y-51155600D01* +X87882668Y-51132975D01* +X88000069Y-51070223D01* +X88102972Y-50985772D01* +X88187423Y-50882869D01* +X88250175Y-50765468D01* +X88260145Y-50732600D01* +X88343673Y-50732600D01* +X88372004Y-50735390D01* +X88400335Y-50732600D01* +X88400340Y-50732600D01* +X88430049Y-50729674D01* +X88485115Y-50724251D01* +X88529774Y-50710703D01* +X88593880Y-50691257D01* +X88694119Y-50637679D01* +X88781978Y-50565574D01* +X88800043Y-50543562D01* +X90110528Y-49233077D01* +X90138415Y-49244628D01* +X90385128Y-49293702D01* +X90636676Y-49293702D01* +X90883389Y-49244628D01* +X91115788Y-49148365D01* +X91295110Y-49028546D01* +X91175291Y-49207868D01* +X91079028Y-49440267D01* +X91029954Y-49686980D01* +X91029954Y-49938528D01* +X91079028Y-50185241D01* +X91175291Y-50417640D01* +X91315043Y-50626794D01* +X91492914Y-50804665D01* +X91702068Y-50944417D01* +X91934467Y-51040680D01* +X92181180Y-51089754D01* +X92432728Y-51089754D01* +X92679441Y-51040680D01* +X92911840Y-50944417D01* +X93091159Y-50824600D01* +X92971342Y-51003919D01* +X92875079Y-51236318D01* +X92826005Y-51483031D01* +X92826005Y-51734579D01* +X92875079Y-51981292D01* +X92971342Y-52213691D01* +X93111094Y-52422845D01* +X93288965Y-52600716D01* +X93498119Y-52740468D01* +X93730518Y-52836731D01* +X93977231Y-52885805D01* +X94228779Y-52885805D01* +X94475492Y-52836731D01* +X94707891Y-52740468D01* +X94887210Y-52620651D01* +X94767393Y-52799970D01* +X94671130Y-53032369D01* +X94622056Y-53279082D01* +X94622056Y-53530630D01* +X94671130Y-53777343D01* +X94767393Y-54009742D01* +X94907145Y-54218896D01* +X95085016Y-54396767D01* +X95294170Y-54536519D01* +X95526569Y-54632782D01* +X95773282Y-54681856D01* +X96024830Y-54681856D01* +X96271543Y-54632782D01* +X96503942Y-54536519D01* +X96683261Y-54416702D01* +X96563444Y-54596021D01* +X96467181Y-54828420D01* +X96418107Y-55075133D01* +X96418107Y-55326681D01* +X96467181Y-55573394D01* +X96563444Y-55805793D01* +X96703196Y-56014947D01* +X96881067Y-56192818D01* +X97090221Y-56332570D01* +X97322620Y-56428833D01* +X97569333Y-56477907D01* +X97820881Y-56477907D01* +X98067594Y-56428833D01* +X98299993Y-56332570D01* +X98479315Y-56212751D01* +X98359496Y-56392073D01* +X98263233Y-56624472D01* +X98214159Y-56871185D01* +X98214159Y-57122733D01* +X98263233Y-57369446D01* +X98359496Y-57601845D01* +X98499248Y-57810999D01* +X98677119Y-57988870D01* +X98886273Y-58128622D01* +X99118672Y-58224885D01* +X99365385Y-58273959D01* +X99616933Y-58273959D01* +X99863646Y-58224885D01* +X100096045Y-58128622D01* +X100305199Y-57988870D01* +X100483070Y-57810999D01* +X100622822Y-57601845D01* +X100719085Y-57369446D01* +X100768159Y-57122733D01* +X100768159Y-56871185D01* +X100719085Y-56624472D01* +X100622822Y-56392073D01* +X100483070Y-56182919D01* +X100305199Y-56005048D01* +X100096045Y-55865296D01* +X99863646Y-55769033D01* +X99616933Y-55719959D01* +X99365385Y-55719959D01* +X99118672Y-55769033D01* +X98886273Y-55865296D01* +X98706951Y-55985115D01* +X98826770Y-55805793D01* +X98923033Y-55573394D01* +X98972107Y-55326681D01* +X98972107Y-55075133D01* +X98923033Y-54828420D01* +X98826770Y-54596021D01* +X98687018Y-54386867D01* +X98509147Y-54208996D01* +X98299993Y-54069244D01* +X98067594Y-53972981D01* +X97820881Y-53923907D01* +X97569333Y-53923907D01* +X97322620Y-53972981D01* +X97090221Y-54069244D01* +X96910902Y-54189061D01* +X97030719Y-54009742D01* +X97126982Y-53777343D01* +X97176056Y-53530630D01* +X97176056Y-53279082D01* +X97126982Y-53032369D01* +X97030719Y-52799970D01* +X96890967Y-52590816D01* +X96713096Y-52412945D01* +X96503942Y-52273193D01* +X96271543Y-52176930D01* +X96024830Y-52127856D01* +X95773282Y-52127856D01* +X95526569Y-52176930D01* +X95294170Y-52273193D01* +X95114851Y-52393010D01* +X95234668Y-52213691D01* +X95330931Y-51981292D01* +X95380005Y-51734579D01* +X95380005Y-51483031D01* +X95330931Y-51236318D01* +X95234668Y-51003919D01* +X95094916Y-50794765D01* +X94917045Y-50616894D01* +X94707891Y-50477142D01* +X94475492Y-50380879D01* +X94228779Y-50331805D01* +X93977231Y-50331805D01* +X93730518Y-50380879D01* +X93498119Y-50477142D01* +X93318800Y-50596959D01* +X93438617Y-50417640D01* +X93534880Y-50185241D01* +X93583954Y-49938528D01* +X93583954Y-49686980D01* +X93534880Y-49440267D01* +X93438617Y-49207868D01* +X93298865Y-48998714D01* +X93120994Y-48820843D01* +X92911840Y-48681091D01* +X92679441Y-48584828D01* +X92432728Y-48535754D01* +X92181180Y-48535754D01* +X91934467Y-48584828D01* +X91702068Y-48681091D01* +X91522746Y-48800910D01* +X91642565Y-48621588D01* +X91738828Y-48389189D01* +X91787902Y-48142476D01* +X91787902Y-47890928D01* +X91738828Y-47644215D01* +X91642565Y-47411816D01* +X91502813Y-47202662D01* +X91324942Y-47024791D01* +X91115788Y-46885039D01* +X90883389Y-46788776D01* +X90636676Y-46739702D01* +X90385128Y-46739702D01* +X90138415Y-46788776D01* +X89906016Y-46885039D01* +X89696862Y-47024791D01* +X89624191Y-47097462D01* +X89558463Y-47031733D01* +X89761318Y-46952525D01* +X89883992Y-46734307D01* +X89961736Y-46496349D01* +X89991564Y-46247796D01* +X89972328Y-45998200D01* +X89904768Y-45757153D01* +X89791480Y-45533917D01* +X89761317Y-45488778D01* +X89558446Y-45409583D01* +X88747378Y-46220651D01* +X88761520Y-46234793D01* +X88728993Y-46267320D01* +X88714851Y-46253178D01* +X87903783Y-47064246D01* +X87982978Y-47267117D01* +X88028117Y-47297280D01* +X88251353Y-47410568D01* +X88492400Y-47478128D01* +X88741996Y-47497364D01* +X88990549Y-47467536D01* +X89228507Y-47389792D01* +X89446725Y-47267118D01* +X89525933Y-47064263D01* +X89591662Y-47129991D01* +X89518991Y-47202662D01* +X89379239Y-47411816D01* +X89282976Y-47644215D01* +X89233902Y-47890928D01* +X89233902Y-48142476D01* +X89282976Y-48389189D01* +X89294527Y-48417076D01* +X88220810Y-49490793D01* +X88187423Y-49428331D01* +X88102972Y-49325428D01* +X88000069Y-49240977D01* +X87882668Y-49178225D01* +X87755280Y-49139582D01* +X87622801Y-49126534D01* +X86722799Y-49126534D01* +X86590320Y-49139582D01* +X86462932Y-49178225D01* +X86345531Y-49240977D01* +X86242628Y-49325428D01* +X86158177Y-49428331D01* +X86095425Y-49545732D01* +X86056782Y-49673120D01* +X86043734Y-49805599D01* +X86043734Y-50505601D01* +X86056782Y-50638080D01* +X86095425Y-50765468D01* +X86158177Y-50882869D01* +X86242628Y-50985772D01* +X86345531Y-51070223D01* +X86462932Y-51132975D01* +X86537516Y-51155600D01* +X86462932Y-51178225D01* +X86345531Y-51240977D01* +X86242628Y-51325428D01* +X86235214Y-51334461D01* +X86226781Y-51326028D01* +X86091331Y-51235523D01* +X85940827Y-51173182D01* +X85781052Y-51141400D01* +X85618148Y-51141400D01* +X85458373Y-51173182D01* +X85307869Y-51235523D01* +X85172419Y-51326028D01* +X85057228Y-51441219D01* +X84966723Y-51576669D01* +X84904382Y-51727173D01* +X84872600Y-51886948D01* +X76462800Y-51886948D01* +X76462800Y-46304252D01* +X76466075Y-46271000D01* +X76453004Y-46138285D01* +X76414292Y-46010670D01* +X76351428Y-45893059D01* +X76288024Y-45815801D01* +X76288018Y-45815795D01* +X76266826Y-45789973D01* +X76241006Y-45768783D01* +X75573823Y-45101600D01* +X85786928Y-45101600D01* +X86615405Y-45930077D01* +X86680424Y-45983437D01* +X86754604Y-46023087D01* +X86835093Y-46047504D01* +X86918800Y-46055748D01* +X87002507Y-46047504D01* +X87082996Y-46023087D01* +X87157176Y-45983437D01* +X87222195Y-45930077D01* +X87806971Y-45345301D01* +X87871239Y-45409569D01* +X87668384Y-45488777D01* +X87545710Y-45706995D01* +X87467966Y-45944953D01* +X87438138Y-46193506D01* +X87457374Y-46443102D01* +X87524934Y-46684149D01* +X87638222Y-46907385D01* +X87668385Y-46952524D01* +X87871256Y-47031719D01* +X88682324Y-46220651D01* +X88668182Y-46206509D01* +X88700709Y-46173982D01* +X88714851Y-46188124D01* +X89525919Y-45377056D01* +X89446724Y-45174185D01* +X89401585Y-45144022D01* +X89178349Y-45030734D01* +X88937302Y-44963174D01* +X88687706Y-44943938D01* +X88439153Y-44973766D01* +X88201195Y-45051510D01* +X87982977Y-45174184D01* +X87903769Y-45377039D01* +X87839501Y-45312771D01* +X88424277Y-44727995D01* +X88477637Y-44662976D01* +X88517287Y-44588796D01* +X88541704Y-44508307D01* +X88549948Y-44424600D01* +X88541704Y-44340893D01* +X88517287Y-44260404D01* +X88477637Y-44186224D01* +X88424277Y-44121205D01* +X87379503Y-43076431D01* +X87638295Y-43282283D01* +X90725181Y-45937424D01* +X93707877Y-48709117D01* +X96581969Y-51593258D01* +X99343237Y-54585616D01* +X101988600Y-57682939D01* +X103325107Y-59351172D01* +X64638216Y-89576685D01* +X64303286Y-89155621D01* +X64298204Y-89149565D01* +X64293251Y-89143448D01* +X62372186Y-86894170D01* +X62356352Y-86876584D01* +X62356333Y-86876565D01* +X60320222Y-84730952D01* +X60320203Y-84730931D01* +X60303470Y-84714198D01* +X58157835Y-82678067D01* +X58157816Y-82678048D01* +X58149386Y-82670458D01* +X58140230Y-82662213D01* +X58140207Y-82662195D01* +X57239226Y-81892683D01* +X60938100Y-81892683D01* +X60948169Y-81976190D01* +X60974335Y-82056128D01* +X61015594Y-82129425D01* +X62048032Y-83603899D01* +X62102797Y-83667739D01* +X62168965Y-83719668D01* +X62243992Y-83757690D01* +X62324996Y-83780345D01* +X62408862Y-83786761D01* +X62492369Y-83776692D01* +X62572307Y-83750526D01* +X62645604Y-83709267D01* +X63973323Y-82779588D01* +X71516184Y-82769813D01* +X71571704Y-82771565D01* +X71615651Y-82764255D01* +X71659979Y-82759831D01* +X71681288Y-82753337D01* +X71703254Y-82749683D01* +X71744924Y-82733943D01* +X71787543Y-82720954D01* +X71807171Y-82710430D01* +X71828008Y-82702559D01* +X71865813Y-82678988D01* +X71905073Y-82657937D01* +X71947967Y-82622641D01* +X72910567Y-81882180D01* +X73022994Y-82026080D01* +X73081026Y-82086966D01* +X73149821Y-82135361D01* +X73226735Y-82169405D01* +X73308813Y-82187789D01* +X73392900Y-82189807D01* +X73475766Y-82175382D01* +X73554225Y-82145068D01* +X73625262Y-82100030D01* +X74964880Y-81053406D01* +X75025766Y-80995374D01* +X75074161Y-80926579D01* +X75108205Y-80849665D01* +X75126589Y-80767587D01* +X75128607Y-80683500D01* +X75114182Y-80600634D01* +X75083868Y-80522175D01* +X75038830Y-80451138D01* +X74529679Y-79799455D01* +X74601301Y-79743498D01* +X74655196Y-79954494D01* +X74856837Y-80102847D01* +X75083547Y-80209012D01* +X75326612Y-80268909D01* +X75576692Y-80280234D01* +X75824176Y-80242554D01* +X76059554Y-80157316D01* +X76108033Y-80132879D01* +X76211361Y-79941172D01* +X75505183Y-79037304D01* +X75489423Y-79049617D01* +X75461102Y-79013370D01* +X75476863Y-79001056D01* +X74770684Y-78097189D01* +X74559674Y-78151070D01* +X74524234Y-78192197D01* +X74384585Y-78399963D01* +X74288153Y-78630979D01* +X74238642Y-78876371D01* +X74237957Y-79126706D01* +X74286122Y-79372365D01* +X74381287Y-79603906D01* +X74572978Y-79707246D01* +X74501356Y-79763203D01* +X73992206Y-79111520D01* +X73934174Y-79050634D01* +X73865379Y-79002239D01* +X73788465Y-78968195D01* +X73706387Y-78949811D01* +X73622300Y-78947793D01* +X73539434Y-78962218D01* +X73460975Y-78992532D01* +X73396095Y-79033666D01* +X73508654Y-76557385D01* +X73772818Y-76366600D01* +X73843052Y-76366600D01* +X74002827Y-76334818D01* +X74153331Y-76272477D01* +X74288781Y-76181972D01* +X74403972Y-76066781D01* +X74494477Y-75931331D01* +X74556818Y-75780827D01* +X74588600Y-75621052D01* +X74588600Y-75458148D01* +X74556818Y-75298373D01* +X74494477Y-75147869D01* +X74403972Y-75012419D01* +X74288781Y-74897228D01* +X74153331Y-74806723D01* +X74002827Y-74744382D01* +X73843052Y-74712600D01* +X73680148Y-74712600D01* +X73520373Y-74744382D01* +X73369869Y-74806723D01* +X73234419Y-74897228D01* +X73119228Y-75012419D01* +X73028723Y-75147869D01* +X72977937Y-75270477D01* +X72500361Y-75615394D01* +X72495333Y-75617794D01* +X72446363Y-75654392D01* +X72423867Y-75670639D01* +X72419716Y-75674306D01* +X72388512Y-75697627D01* +X72369864Y-75718354D01* +X72348970Y-75736815D01* +X72325375Y-75767802D01* +X72299317Y-75796765D01* +X72285069Y-75820736D01* +X72268180Y-75842916D01* +X72251081Y-75877917D01* +X72231178Y-75911401D01* +X72221882Y-75937685D01* +X72209642Y-75962739D01* +X72199700Y-76000400D01* +X72186711Y-76037126D01* +X72182721Y-76064722D01* +X72175605Y-76091679D01* +X72173201Y-76130562D01* +X72172409Y-76136042D01* +X72171149Y-76163762D01* +X72167377Y-76224780D01* +X72168125Y-76230300D01* +X72021016Y-79466682D01* +X72018686Y-79477677D01* +X72017993Y-79533192D01* +X72016989Y-79555276D01* +X72017578Y-79566429D01* +X72017021Y-79611022D01* +X72021086Y-79632879D01* +X72022258Y-79655081D01* +X72033252Y-79698298D01* +X72041404Y-79742132D01* +X72049655Y-79762777D01* +X72055136Y-79784323D01* +X72074344Y-79824553D01* +X72090895Y-79865966D01* +X72103018Y-79884609D01* +X72112595Y-79904667D01* +X72139285Y-79940380D01* +X72145380Y-79949753D01* +X72159202Y-79967030D01* +X72174346Y-79987294D01* +X72050320Y-80084194D01* +X71989434Y-80142226D01* +X71941039Y-80211021D01* +X71906995Y-80287935D01* +X71888611Y-80370013D01* +X71886593Y-80454100D01* +X71901018Y-80536966D01* +X71931332Y-80615425D01* +X71976370Y-80686462D01* +X72076939Y-80815184D01* +X71295750Y-81416099D01* +X63767928Y-81425854D01* +X63193008Y-80604783D01* +X63138243Y-80540943D01* +X63072075Y-80489014D01* +X62997048Y-80450992D01* +X62916044Y-80428337D01* +X62832178Y-80421921D01* +X62748671Y-80431990D01* +X62668733Y-80458156D01* +X62595436Y-80499415D01* +X61120962Y-81531853D01* +X61057122Y-81586618D01* +X61005193Y-81652786D01* +X60967171Y-81727813D01* +X60944516Y-81808817D01* +X60938100Y-81892683D01* +X57239226Y-81892683D01* +X57197622Y-81857150D01* +X59778981Y-79105761D01* +X65389280Y-79105761D01* +X65389280Y-79367157D01* +X65440276Y-79623531D01* +X65540308Y-79865029D01* +X65685532Y-80082372D01* +X65870367Y-80267207D01* +X66087710Y-80412431D01* +X66329208Y-80512463D01* +X66585582Y-80563459D01* +X66846978Y-80563459D01* +X67103352Y-80512463D01* +X67344850Y-80412431D01* +X67562193Y-80267207D01* +X67747028Y-80082372D01* +X67892252Y-79865029D01* +X67992284Y-79623531D01* +X68043280Y-79367157D01* +X68043280Y-79105761D01* +X67992284Y-78849387D01* +X67892252Y-78607889D01* +X67747028Y-78390546D01* +X67562193Y-78205711D01* +X67344850Y-78060487D01* +X67103352Y-77960455D01* +X66846978Y-77909459D01* +X66585582Y-77909459D01* +X66329208Y-77960455D01* +X66087710Y-78060487D01* +X65870367Y-78205711D01* +X65685532Y-78390546D01* +X65540308Y-78607889D01* +X65440276Y-78849387D01* +X65389280Y-79105761D01* +X59778981Y-79105761D01* +X63170131Y-75491243D01* +X63182057Y-75481313D01* +X67371152Y-72788324D01* +X67395436Y-72768024D01* +X67438229Y-72722051D01* +X67453324Y-72702253D01* +X67464266Y-72679890D01* +X67468325Y-72666925D01* +X67483856Y-72606068D01* +X67487800Y-72574664D01* +X67487800Y-68897600D01* +X69541734Y-68897600D01* +X69541734Y-70497600D01* +X69549978Y-70581307D01* +X69574395Y-70661796D01* +X69614045Y-70735976D01* +X69667405Y-70800995D01* +X69732424Y-70854355D01* +X69806604Y-70894005D01* +X69887093Y-70918422D01* +X69970800Y-70926666D01* +X72370800Y-70926666D01* +X72454507Y-70918422D01* +X72534996Y-70894005D01* +X72609176Y-70854355D01* +X72674195Y-70800995D01* +X72727555Y-70735976D01* +X72767205Y-70661796D01* +X72791622Y-70581307D01* +X72799866Y-70497600D01* +X72799866Y-68897600D01* +X72791622Y-68813893D01* +X72767205Y-68733404D01* +X72727555Y-68659224D01* +X72674195Y-68594205D01* +X72609176Y-68540845D01* +X72534996Y-68501195D01* +X72454507Y-68476778D01* +X72370800Y-68468534D01* +X69970800Y-68468534D01* +X69887093Y-68476778D01* +X69806604Y-68501195D01* +X69732424Y-68540845D01* +X69667405Y-68594205D01* +X69614045Y-68659224D01* +X69574395Y-68733404D01* +X69549978Y-68813893D01* +X69541734Y-68897600D01* +X67487800Y-68897600D01* +X67487800Y-67372228D01* +X69562718Y-67372228D01* +X69562890Y-67374416D01* +X69628398Y-67605902D01* +X69737808Y-67820160D01* +X69886916Y-68008956D01* +X70069991Y-68165035D01* +X70279998Y-68282398D01* +X70508866Y-68356536D01* +X70747800Y-68384600D01* +X71147800Y-68384600D01* +X71147800Y-67180600D01* +X71193800Y-67180600D01* +X71193800Y-68384600D01* +X71593800Y-68384600D01* +X71832734Y-68356536D01* +X72061602Y-68282398D01* +X72271609Y-68165035D01* +X72454684Y-68008956D01* +X72603792Y-67820160D01* +X72713202Y-67605902D01* +X72778710Y-67374416D01* +X72778882Y-67372228D01* +X72690814Y-67180600D01* +X71193800Y-67180600D01* +X71147800Y-67180600D01* +X69650786Y-67180600D01* +X69562718Y-67372228D01* +X67487800Y-67372228D01* +X67487800Y-66942972D01* +X69562718Y-66942972D01* +X69650786Y-67134600D01* +X71147800Y-67134600D01* +X71147800Y-65930600D01* +X71193800Y-65930600D01* +X71193800Y-67134600D01* +X72690814Y-67134600D01* +X72778882Y-66942972D01* +X72778710Y-66940784D01* +X72713202Y-66709298D01* +X72603792Y-66495040D01* +X72454684Y-66306244D01* +X72271609Y-66150165D01* +X72061602Y-66032802D01* +X71832734Y-65958664D01* +X71593800Y-65930600D01* +X71193800Y-65930600D01* +X71147800Y-65930600D01* +X70747800Y-65930600D01* +X70508866Y-65958664D01* +X70279998Y-66032802D01* +X70069991Y-66150165D01* +X69886916Y-66306244D01* +X69737808Y-66495040D01* +X69628398Y-66709298D01* +X69562890Y-66940784D01* +X69562718Y-66942972D01* +X67487800Y-66942972D01* +X67487800Y-64617600D01* +X69537864Y-64617600D01* +X69561555Y-64858134D01* +X69631716Y-65089424D01* +X69745651Y-65302583D01* +X69898983Y-65489417D01* +X70085817Y-65642749D01* +X70298976Y-65756684D01* +X70530266Y-65826845D01* +X70710532Y-65844600D01* +X71631068Y-65844600D01* +X71811334Y-65826845D01* +X72042624Y-65756684D01* +X72255783Y-65642749D01* +X72442617Y-65489417D01* +X72595949Y-65302583D01* +X72709884Y-65089424D01* +X72780045Y-64858134D01* +X72803736Y-64617600D01* +X72780045Y-64377066D01* +X72709884Y-64145776D01* +X72595949Y-63932617D01* +X72442617Y-63745783D01* +X72255783Y-63592451D01* +X72042624Y-63478516D01* +X71811334Y-63408355D01* +X71631068Y-63390600D01* +X70710532Y-63390600D01* +X70530266Y-63408355D01* +X70298976Y-63478516D01* +X70085817Y-63592451D01* +X69898983Y-63745783D01* +X69745651Y-63932617D01* +X69631716Y-64145776D01* +X69561555Y-64377066D01* +X69537864Y-64617600D01* +X67487800Y-64617600D01* +X67487800Y-59789705D01* +X67485360Y-59764929D01* +X67479316Y-59744066D01* +X67446515Y-59658887D01* +X67435334Y-59636643D01* +X67422198Y-59619346D01* +X63185467Y-54934020D01* +X63169630Y-54893036D01* +X63161345Y-51371600D01* +X65223734Y-51371600D01* +X65223734Y-52971600D01* +X65231978Y-53055307D01* +X65256395Y-53135796D01* +X65296045Y-53209976D01* +X65349405Y-53274995D01* +X65414424Y-53328355D01* +X65488604Y-53368005D01* +X65569093Y-53392422D01* +X65652800Y-53400666D01* +X68052800Y-53400666D01* +X68136507Y-53392422D01* +X68216996Y-53368005D01* +X68291176Y-53328355D01* +X68356195Y-53274995D01* +X68409555Y-53209976D01* +X68449205Y-53135796D01* +X68473622Y-53055307D01* +X68481866Y-52971600D01* +X68481866Y-51371600D01* +X68473622Y-51287893D01* +X68449205Y-51207404D01* +X68409555Y-51133224D01* +X68356195Y-51068205D01* +X68291176Y-51014845D01* +X68216996Y-50975195D01* +X68136507Y-50950778D01* +X68052800Y-50942534D01* +X65652800Y-50942534D01* +X65569093Y-50950778D01* +X65488604Y-50975195D01* +X65414424Y-51014845D01* +X65349405Y-51068205D01* +X65296045Y-51133224D01* +X65256395Y-51207404D01* +X65231978Y-51287893D01* +X65223734Y-51371600D01* +X63161345Y-51371600D01* +X63157756Y-49846228D01* +X65244718Y-49846228D01* +X65244890Y-49848416D01* +X65310398Y-50079902D01* +X65419808Y-50294160D01* +X65568916Y-50482956D01* +X65751991Y-50639035D01* +X65961998Y-50756398D01* +X66190866Y-50830536D01* +X66429800Y-50858600D01* +X66829800Y-50858600D01* +X66829800Y-49654600D01* +X66875800Y-49654600D01* +X66875800Y-50858600D01* +X67275800Y-50858600D01* +X67514734Y-50830536D01* +X67743602Y-50756398D01* +X67953609Y-50639035D01* +X68136684Y-50482956D01* +X68285792Y-50294160D01* +X68395202Y-50079902D01* +X68460710Y-49848416D01* +X68460882Y-49846228D01* +X68372814Y-49654600D01* +X66875800Y-49654600D01* +X66829800Y-49654600D01* +X65332786Y-49654600D01* +X65244718Y-49846228D01* +X63157756Y-49846228D01* +X63156746Y-49416972D01* +X65244718Y-49416972D01* +X65332786Y-49608600D01* +X66829800Y-49608600D01* +X66829800Y-48404600D01* +X66875800Y-48404600D01* +X66875800Y-49608600D01* +X68372814Y-49608600D01* +X68460882Y-49416972D01* +X68460710Y-49414784D01* +X68395202Y-49183298D01* +X68285792Y-48969040D01* +X68136684Y-48780244D01* +X67953609Y-48624165D01* +X67743602Y-48506802D01* +X67514734Y-48432664D01* +X67275800Y-48404600D01* +X66875800Y-48404600D01* +X66829800Y-48404600D01* +X66429800Y-48404600D01* +X66190866Y-48432664D01* +X65961998Y-48506802D01* +X65751991Y-48624165D01* +X65568916Y-48780244D01* +X65419808Y-48969040D01* +X65310398Y-49183298D01* +X65244890Y-49414784D01* +X65244718Y-49416972D01* +X63156746Y-49416972D01* +X63151274Y-47091600D01* +X65219864Y-47091600D01* +X65243555Y-47332134D01* +X65313716Y-47563424D01* +X65427651Y-47776583D01* +X65580983Y-47963417D01* +X65767817Y-48116749D01* +X65980976Y-48230684D01* +X66212266Y-48300845D01* +X66392532Y-48318600D01* +X67313068Y-48318600D01* +X67493334Y-48300845D01* +X67724624Y-48230684D01* +X67937783Y-48116749D01* +X68124617Y-47963417D01* +X68277949Y-47776583D01* +X68391884Y-47563424D01* +X68462045Y-47332134D01* +X68485736Y-47091600D01* +X68462045Y-46851066D01* +X68391884Y-46619776D01* +X68277949Y-46406617D01* +X68124617Y-46219783D01* +X67937783Y-46066451D01* +X67724624Y-45952516D01* +X67493334Y-45882355D01* +X67313068Y-45864600D01* +X66392532Y-45864600D01* +X66212266Y-45882355D01* +X65980976Y-45952516D01* +X65767817Y-46066451D01* +X65580983Y-46219783D01* +X65427651Y-46406617D01* +X65313716Y-46619776D01* +X65243555Y-46851066D01* +X65219864Y-47091600D01* +X63151274Y-47091600D01* +X63144701Y-44298036D01* +X63140263Y-44265057D01* +X63122975Y-44201386D01* +X63114128Y-44178114D01* +X63100911Y-44157016D01* +X63089744Y-44144392D01* +X63042848Y-44097985D01* +X63023520Y-44082292D01* +X63001502Y-44070671D01* +X62985507Y-44065352D01* +X62921658Y-44048733D01* +X62888636Y-44044642D01* +X56817161Y-44094004D01* +X56792405Y-44096646D01* +X56771358Y-44102951D01* +X56686078Y-44136785D01* +X56663948Y-44148190D01* +X56646601Y-44161672D01* +X55009620Y-45678286D01* +X54968007Y-45694600D01* +X39894850Y-45694600D01* +X39881661Y-45691064D01* +X39878137Y-45677870D01* +X39887445Y-35903600D01* +X43095734Y-35903600D01* +X43103978Y-35987307D01* +X43128395Y-36067796D01* +X43168045Y-36141976D01* +X43221405Y-36206995D01* +X43286424Y-36260355D01* +X43360604Y-36300005D01* +X43441093Y-36324422D01* +X43524800Y-36332666D01* +X44245050Y-36330600D01* +X44351800Y-36223850D01* +X44351800Y-35176600D01* +X44397800Y-35176600D01* +X44397800Y-36223850D01* +X44504550Y-36330600D01* +X45224800Y-36332666D01* +X45308507Y-36324422D01* +X45388996Y-36300005D01* +X45463176Y-36260355D01* +X45528195Y-36206995D01* +X45581555Y-36141976D01* +X45621205Y-36067796D01* +X45645622Y-35987307D01* +X45653866Y-35903600D01* +X45651800Y-35283350D01* +X45545050Y-35176600D01* +X44397800Y-35176600D01* +X44351800Y-35176600D01* +X43204550Y-35176600D01* +X43097800Y-35283350D01* +X43095734Y-35903600D01* +X39887445Y-35903600D01* +X39888873Y-34403600D01* +X43095734Y-34403600D01* +X43097800Y-35023850D01* +X43204550Y-35130600D01* +X44351800Y-35130600D01* +X44351800Y-34083350D01* +X44397800Y-34083350D01* +X44397800Y-35130600D01* +X45545050Y-35130600D01* +X45651800Y-35023850D01* +X45653866Y-34403600D01* +X45645622Y-34319893D01* +X45621205Y-34239404D01* +X45597792Y-34195600D01* +X48934734Y-34195600D01* +X48942978Y-34279307D01* +X48967395Y-34359796D01* +X49007045Y-34433976D01* +X49060405Y-34498995D01* +X49125424Y-34552355D01* +X49199604Y-34592005D01* +X49280093Y-34616422D01* +X49363800Y-34624666D01* +X49959050Y-34622600D01* +X50065800Y-34515850D01* +X50065800Y-33631100D01* +X50111800Y-33631100D01* +X50111800Y-34515850D01* +X50218550Y-34622600D01* +X50813800Y-34624666D01* +X50897507Y-34616422D01* +X50977996Y-34592005D01* +X51052176Y-34552355D01* +X51117195Y-34498995D01* +X51170555Y-34433976D01* +X51210205Y-34359796D01* +X51234622Y-34279307D01* +X51234837Y-34277125D01* +X51253393Y-34338294D01* +X51293043Y-34412474D01* +X51346403Y-34477493D01* +X51411422Y-34530853D01* +X51485602Y-34570503D01* +X51566091Y-34594920D01* +X51649798Y-34603164D01* +X52245048Y-34601098D01* +X52351798Y-34494348D01* +X52351798Y-33609598D01* +X52397798Y-33609598D01* +X52397798Y-34494348D01* +X52504548Y-34601098D01* +X53099798Y-34603164D01* +X53183505Y-34594920D01* +X53263994Y-34570503D01* +X53338174Y-34530853D01* +X53403193Y-34477493D01* +X53456553Y-34412474D01* +X53496203Y-34338294D01* +X53520620Y-34257805D01* +X53528864Y-34174098D01* +X53526798Y-33716348D01* +X53420048Y-33609598D01* +X52397798Y-33609598D01* +X52351798Y-33609598D01* +X51329548Y-33609598D01* +X51222798Y-33716348D01* +X51222782Y-33719832D01* +X51134050Y-33631100D01* +X50111800Y-33631100D01* +X50065800Y-33631100D01* +X49043550Y-33631100D01* +X48936800Y-33737850D01* +X48934734Y-34195600D01* +X45597792Y-34195600D01* +X45581555Y-34165224D01* +X45528195Y-34100205D01* +X45463176Y-34046845D01* +X45388996Y-34007195D01* +X45308507Y-33982778D01* +X45224800Y-33974534D01* +X44504550Y-33976600D01* +X44397800Y-34083350D01* +X44351800Y-34083350D01* +X44245050Y-33976600D01* +X43524800Y-33974534D01* +X43441093Y-33982778D01* +X43360604Y-34007195D01* +X43286424Y-34046845D01* +X43221405Y-34100205D01* +X43168045Y-34165224D01* +X43128395Y-34239404D01* +X43103978Y-34319893D01* +X43095734Y-34403600D01* +X39888873Y-34403600D01* +X39890190Y-33020600D01* +X48934734Y-33020600D01* +X48936800Y-33478350D01* +X49043550Y-33585100D01* +X50065800Y-33585100D01* +X50065800Y-32700350D01* +X50111800Y-32700350D01* +X50111800Y-33585100D01* +X51134050Y-33585100D01* +X51240800Y-33478350D01* +X51240816Y-33474866D01* +X51329548Y-33563598D01* +X52351798Y-33563598D01* +X52351798Y-32678848D01* +X52397798Y-32678848D01* +X52397798Y-33563598D01* +X53420048Y-33563598D01* +X53526798Y-33456848D01* +X53528864Y-32999098D01* +X53520620Y-32915391D01* +X53496203Y-32834902D01* +X53456553Y-32760722D01* +X53403193Y-32695703D01* +X53338174Y-32642343D01* +X53263994Y-32602693D01* +X53183505Y-32578276D01* +X53099798Y-32570032D01* +X52504548Y-32572098D01* +X52397798Y-32678848D01* +X52351798Y-32678848D01* +X52245048Y-32572098D01* +X51649798Y-32570032D01* +X51566091Y-32578276D01* +X51485602Y-32602693D01* +X51411422Y-32642343D01* +X51346403Y-32695703D01* +X51293043Y-32760722D01* +X51253393Y-32834902D01* +X51228976Y-32915391D01* +X51228761Y-32917573D01* +X51210205Y-32856404D01* +X51170555Y-32782224D01* +X51117195Y-32717205D01* +X51052176Y-32663845D01* +X50977996Y-32624195D01* +X50897507Y-32599778D01* +X50813800Y-32591534D01* +X50218550Y-32593600D01* +X50111800Y-32700350D01* +X50065800Y-32700350D01* +X49959050Y-32593600D01* +X49363800Y-32591534D01* +X49280093Y-32599778D01* +X49199604Y-32624195D01* +X49125424Y-32663845D01* +X49060405Y-32717205D01* +X49007045Y-32782224D01* +X48967395Y-32856404D01* +X48942978Y-32936893D01* +X48934734Y-33020600D01* +X39890190Y-33020600D01* +X39894519Y-28474756D01* +X51282171Y-28474756D01* +X51398083Y-28708976D01* +X51668336Y-28862149D01* +X51963278Y-28959654D01* +X52271576Y-28997745D01* +X52581381Y-28974958D01* +X52880788Y-28892169D01* +X53158291Y-28752560D01* +X53223517Y-28708976D01* +X53339429Y-28474756D01* +X52310800Y-27446127D01* +X51282171Y-28474756D01* +X39894519Y-28474756D01* +X39895568Y-27374376D01* +X50726655Y-27374376D01* +X50749442Y-27684181D01* +X50832231Y-27983588D01* +X50971840Y-28261091D01* +X51015424Y-28326317D01* +X51249644Y-28442229D01* +X52278273Y-27413600D01* +X52343327Y-27413600D01* +X53371956Y-28442229D01* +X53606176Y-28326317D01* +X53759349Y-28056064D01* +X53856854Y-27761122D01* +X53894945Y-27452824D01* +X53872158Y-27143019D01* +X53789369Y-26843612D01* +X53649760Y-26566109D01* +X53606176Y-26500883D01* +X53371956Y-26384971D01* +X52343327Y-27413600D01* +X52278273Y-27413600D01* +X51249644Y-26384971D01* +X51015424Y-26500883D01* +X50862251Y-26771136D01* +X50764746Y-27066078D01* +X50726655Y-27374376D01* +X39895568Y-27374376D01* +X39896541Y-26352444D01* +X51282171Y-26352444D01* +X52310800Y-27381073D01* +X53339429Y-26352444D01* +X53223517Y-26118224D01* +X52953264Y-25965051D01* +X52658322Y-25867546D01* +X52350024Y-25829455D01* +X52040219Y-25852242D01* +X51740812Y-25935031D01* +X51463309Y-26074640D01* +X51398083Y-26118224D01* +X51282171Y-26352444D01* +X39896541Y-26352444D01* +X39901803Y-20828827D01* +X40275685Y-20894080D01* +%TA.AperFunction,Conductor*% +D26* +G36* +X40275685Y-20894080D02* +G01* +X44256937Y-21747586D01* +X48202486Y-22753294D01* +X52106510Y-23909720D01* +X55963256Y-25215156D01* +X59767053Y-26667685D01* +X63512278Y-28265159D01* +X67193433Y-30005233D01* +X70805085Y-31885340D01* +X74341872Y-33902688D01* +X77798632Y-36054332D01* +X81170236Y-38337078D01* +X84451727Y-40747572D01* +X87053599Y-42817195D01* +X87002507Y-42801696D01* +X86918800Y-42793452D01* +X86835093Y-42801696D01* +X86754604Y-42826113D01* +X86680424Y-42865763D01* +X86615405Y-42919123D01* +X85786928Y-43747600D01* +X74277441Y-43747600D01* +X74244199Y-43744326D01* +X74219028Y-43746805D01* +X68574226Y-38102004D01* +X68553027Y-38076173D01* +X68449941Y-37991572D01* +X68332330Y-37928708D01* +X68204715Y-37889996D01* +X68105252Y-37880200D01* +X68105245Y-37880200D01* +X68072000Y-37876926D01* +X68038755Y-37880200D01* +X56600452Y-37880200D01* +X56567200Y-37876925D01* +X56434485Y-37889996D01* +X56306870Y-37928708D01* +X56189259Y-37991572D01* +X56121801Y-38046934D01* +X56086173Y-38076173D01* +X56064978Y-38101999D01* +X52987800Y-41179178D01* +X52987800Y-40695798D01* +X53036572Y-40655772D01* +X53121023Y-40552869D01* +X53183775Y-40435468D01* +X53222418Y-40308080D01* +X53235466Y-40175601D01* +X53235466Y-39275599D01* +X53222418Y-39143120D01* +X53183775Y-39015732D01* +X53121023Y-38898331D01* +X53036572Y-38795428D01* +X52933669Y-38710977D01* +X52883400Y-38684108D01* +X52883400Y-36674855D01* +X52982277Y-36665116D01* +X53109665Y-36626473D01* +X53227067Y-36563721D01* +X53329970Y-36479270D01* +X53414421Y-36376367D01* +X53477173Y-36258965D01* +X53515816Y-36131577D01* +X53528864Y-35999098D01* +X53528864Y-35324098D01* +X53515816Y-35191619D01* +X53477173Y-35064231D01* +X53414421Y-34946829D01* +X53329970Y-34843926D01* +X53227067Y-34759475D01* +X53109665Y-34696723D01* +X52982277Y-34658080D01* +X52849798Y-34645032D01* +X51899798Y-34645032D01* +X51767319Y-34658080D01* +X51639931Y-34696723D01* +X51522529Y-34759475D01* +X51419626Y-34843926D01* +X51335175Y-34946829D01* +X51303494Y-35006100D01* +X51148611Y-35006100D01* +X51128423Y-34968331D01* +X51043972Y-34865428D01* +X50941069Y-34780977D01* +X50823667Y-34718225D01* +X50696279Y-34679582D01* +X50563800Y-34666534D01* +X49613800Y-34666534D01* +X49481321Y-34679582D01* +X49353933Y-34718225D01* +X49236531Y-34780977D01* +X49133628Y-34865428D01* +X49049177Y-34968331D01* +X48986425Y-35085733D01* +X48947782Y-35213121D01* +X48934734Y-35345600D01* +X48934734Y-36020600D01* +X48947782Y-36153079D01* +X48986425Y-36280467D01* +X49049177Y-36397869D01* +X49133628Y-36500772D01* +X49236531Y-36585223D01* +X49353933Y-36647975D01* +X49481321Y-36686618D01* +X49613800Y-36699666D01* +X50563800Y-36699666D01* +X50696279Y-36686618D01* +X50823667Y-36647975D01* +X50941069Y-36585223D01* +X51043972Y-36500772D01* +X51128423Y-36397869D01* +X51148611Y-36360100D01* +X51326480Y-36360100D01* +X51335175Y-36376367D01* +X51419626Y-36479270D01* +X51522529Y-36563721D01* +X51529401Y-36567394D01* +X51529400Y-38684108D01* +X51479131Y-38710977D01* +X51376228Y-38795428D01* +X51291777Y-38898331D01* +X51229025Y-39015732D01* +X51206400Y-39090316D01* +X51183775Y-39015732D01* +X51121023Y-38898331D01* +X51036572Y-38795428D01* +X50933669Y-38710977D01* +X50816268Y-38648225D01* +X50688880Y-38609582D01* +X50556401Y-38596534D01* +X49893336Y-38596534D01* +X48602439Y-37305638D01* +X48584374Y-37283626D01* +X48496515Y-37211521D01* +X48396276Y-37157943D01* +X48332170Y-37138497D01* +X48287511Y-37124949D01* +X48232445Y-37119526D01* +X48202736Y-37116600D01* +X48202731Y-37116600D01* +X48174400Y-37113810D01* +X48146069Y-37116600D01* +X45653866Y-37116600D01* +X45653866Y-36943600D01* +X45645622Y-36859893D01* +X45621205Y-36779404D01* +X45581555Y-36705224D01* +X45528195Y-36640205D01* +X45463176Y-36586845D01* +X45388996Y-36547195D01* +X45308507Y-36522778D01* +X45224800Y-36514534D01* +X43524800Y-36514534D01* +X43441093Y-36522778D01* +X43360604Y-36547195D01* +X43286424Y-36586845D01* +X43221405Y-36640205D01* +X43168045Y-36705224D01* +X43128395Y-36779404D01* +X43103978Y-36859893D01* +X43095734Y-36943600D01* +X43095734Y-38443600D01* +X43103978Y-38527307D01* +X43128395Y-38607796D01* +X43168045Y-38681976D01* +X43221405Y-38746995D01* +X43286424Y-38800355D01* +X43360604Y-38840005D01* +X43441093Y-38864422D01* +X43524800Y-38872666D01* +X43797800Y-38872666D01* +X43797800Y-39266469D01* +X43795010Y-39294800D01* +X43806149Y-39407911D01* +X43819542Y-39452059D01* +X43839143Y-39516675D01* +X43892721Y-39616914D01* +X43964826Y-39704774D01* +X43986838Y-39722839D01* +X49660761Y-45396762D01* +X49678826Y-45418774D01* +X49766685Y-45490879D01* +X49866924Y-45544457D01* +X49975688Y-45577450D01* +X50060464Y-45585800D01* +X50060470Y-45585800D01* +X50088799Y-45588590D01* +X50117128Y-45585800D01* +X53718069Y-45585800D01* +X53746400Y-45588590D01* +X53774731Y-45585800D01* +X53774736Y-45585800D01* +X53804445Y-45582874D01* +X53859511Y-45577451D01* +X53904170Y-45563903D01* +X53968276Y-45544457D01* +X54068515Y-45490879D01* +X54156374Y-45418774D01* +X54174439Y-45396762D01* +X55814201Y-43757000D01* +X66664599Y-43757000D01* +X69527001Y-46619403D01* +X69527000Y-51883847D01* +X69461628Y-51949219D01* +X69371123Y-52084669D01* +X69308782Y-52235173D01* +X69277000Y-52394948D01* +X69277000Y-52557852D01* +X69308782Y-52717627D01* +X69371123Y-52868131D01* +X69461628Y-53003581D01* +X69576819Y-53118772D01* +X69712269Y-53209277D01* +X69862773Y-53271618D01* +X70022548Y-53303400D01* +X70185452Y-53303400D01* +X70345227Y-53271618D01* +X70495731Y-53209277D01* +X70631181Y-53118772D01* +X70746372Y-53003581D01* +X70836877Y-52868131D01* +X70899218Y-52717627D01* +X70931000Y-52557852D01* +X70931000Y-52394948D01* +X70899218Y-52235173D01* +X70836877Y-52084669D01* +X70746372Y-51949219D01* +X70681000Y-51883847D01* +X70681000Y-46408728D01* +X70683790Y-46380399D01* +X70681000Y-46352070D01* +X70681000Y-46352064D01* +X70672650Y-46267288D01* +X70639657Y-46158524D01* +X70586079Y-46058285D01* +X70536768Y-45998200D01* +X70532037Y-45992435D01* +X70532035Y-45992433D01* +X70513974Y-45970426D01* +X70491967Y-45952365D01* +X67331639Y-42792038D01* +X67313574Y-42770026D01* +X67225715Y-42697921D01* +X67125476Y-42644343D01* +X67061334Y-42624886D01* +X67016711Y-42611349D01* +X66961645Y-42605926D01* +X66931936Y-42603000D01* +X66931931Y-42603000D01* +X66903600Y-42600210D01* +X66875269Y-42603000D01* +X55603531Y-42603000D01* +X55575200Y-42600210D01* +X55546869Y-42603000D01* +X55546864Y-42603000D01* +X55520086Y-42605637D01* +X55462088Y-42611349D01* +X55397982Y-42630796D01* +X55353324Y-42644343D01* +X55253085Y-42697921D01* +X55165226Y-42770026D01* +X55147161Y-42792038D01* +X53507399Y-44431800D01* +X50327801Y-44431800D01* +X44951800Y-39055799D01* +X44951800Y-38872666D01* +X45224800Y-38872666D01* +X45308507Y-38864422D01* +X45388996Y-38840005D01* +X45463176Y-38800355D01* +X45528195Y-38746995D01* +X45581555Y-38681976D01* +X45621205Y-38607796D01* +X45645622Y-38527307D01* +X45653866Y-38443600D01* +X45653866Y-38270600D01* +X47935399Y-38270600D01* +X49177334Y-39512536D01* +X49177334Y-40175601D01* +X49190382Y-40308080D01* +X49229025Y-40435468D01* +X49291777Y-40552869D01* +X49376228Y-40655772D01* +X49479131Y-40740223D01* +X49596532Y-40802975D01* +X49723920Y-40841618D01* +X49856399Y-40854666D01* +X50556401Y-40854666D01* +X50688880Y-40841618D01* +X50816268Y-40802975D01* +X50933669Y-40740223D01* +X51036572Y-40655772D01* +X51121023Y-40552869D01* +X51183775Y-40435468D01* +X51206400Y-40360884D01* +X51229025Y-40435468D01* +X51291777Y-40552869D01* +X51376228Y-40655772D01* +X51479131Y-40740223D01* +X51596532Y-40802975D01* +X51633801Y-40814280D01* +X51633800Y-41387090D01* +X51563811Y-41416081D01* +X51305521Y-41588664D01* +X51085864Y-41808321D01* +X50913281Y-42066611D01* +X50794404Y-42353606D01* +X50733800Y-42658279D01* +X50733800Y-42968921D01* +X50794404Y-43273594D01* +X50913281Y-43560589D01* +X51085864Y-43818879D01* +X51305521Y-44038536D01* +X51563811Y-44211119D01* +X51850806Y-44329996D01* +X52155479Y-44390600D01* +X52466121Y-44390600D01* +X52770794Y-44329996D01* +X53057789Y-44211119D01* +X53316079Y-44038536D01* +X53535736Y-43818879D01* +X53708319Y-43560589D01* +X53827196Y-43273594D01* +X53887800Y-42968921D01* +X53887800Y-42658279D01* +X53827196Y-42353606D01* +X53798206Y-42283617D01* +X56847623Y-39234200D01* +X67791578Y-39234200D01* +X73589579Y-45032202D01* +X73610773Y-45058027D01* +X73636598Y-45079221D01* +X73636601Y-45079224D01* +X73636606Y-45079228D01* +X75108800Y-46551423D01* +X75108801Y-53817789D01* +X75071031Y-53837977D01* +X74968128Y-53922428D01* +X74883677Y-54025331D01* +X74820925Y-54142733D01* +X74782282Y-54270121D01* +X74769234Y-54402600D01* +X74769234Y-55352600D01* +X74782282Y-55485079D01* +X74820925Y-55612467D01* +X74883677Y-55729869D01* +X74968128Y-55832772D01* +X75071031Y-55917223D01* +X75108800Y-55937411D01* +X75108801Y-56157313D01* +X75006531Y-56211977D01* +X74903628Y-56296428D01* +X74819177Y-56399331D01* +X74756425Y-56516733D01* +X74717782Y-56644121D01* +X74704734Y-56776600D01* +X74704734Y-57726600D01* +X74717782Y-57859079D01* +X74756425Y-57986467D01* +X74819177Y-58103869D01* +X74903628Y-58206772D01* +X75006531Y-58291223D01* +X75029633Y-58303571D01* +X75009923Y-58333069D01* +X74947582Y-58483573D01* +X74915800Y-58643348D01* +X74915800Y-58806252D01* +X74947582Y-58966027D01* +X75009923Y-59116531D01* +X75065800Y-59200157D01* +X75065800Y-63178144D01* +X75035174Y-63140826D01* +X75013163Y-63122762D01* +X73781775Y-61891374D01* +X73851462Y-61854125D01* +X73954365Y-61769674D01* +X74038816Y-61666771D01* +X74101568Y-61549370D01* +X74140211Y-61421982D01* +X74153259Y-61289503D01* +X74153259Y-60589501D01* +X74140211Y-60457022D01* +X74101568Y-60329634D01* +X74038816Y-60212233D01* +X73954365Y-60109330D01* +X73851462Y-60024879D01* +X73734061Y-59962127D01* +X73659477Y-59939502D01* +X73734061Y-59916877D01* +X73851462Y-59854125D01* +X73954365Y-59769674D01* +X74038816Y-59666771D01* +X74101568Y-59549370D01* +X74140211Y-59421982D01* +X74153259Y-59289503D01* +X74153259Y-58589501D01* +X74140211Y-58457022D01* +X74101568Y-58329634D01* +X74038816Y-58212233D01* +X73954365Y-58109330D01* +X73932200Y-58091140D01* +X73932200Y-58047353D01* +X73997572Y-57981981D01* +X74088077Y-57846531D01* +X74150418Y-57696027D01* +X74182200Y-57536252D01* +X74182200Y-57373348D01* +X74150418Y-57213573D01* +X74088077Y-57063069D01* +X73997572Y-56927619D01* +X73882381Y-56812428D01* +X73746931Y-56721923D01* +X73596427Y-56659582D01* +X73436652Y-56627800D01* +X73273748Y-56627800D01* +X73113973Y-56659582D01* +X72963469Y-56721923D01* +X72828019Y-56812428D01* +X72712828Y-56927619D01* +X72622323Y-57063069D01* +X72559982Y-57213573D01* +X72528200Y-57373348D01* +X72528200Y-57536252D01* +X72559982Y-57696027D01* +X72622323Y-57846531D01* +X72665023Y-57910436D01* +X72574192Y-57910436D01* +X72441713Y-57923484D01* +X72314325Y-57962127D01* +X72196924Y-58024879D01* +X72094021Y-58109330D01* +X72009570Y-58212233D01* +X71946818Y-58329634D01* +X71908175Y-58457022D01* +X71895127Y-58589501D01* +X71895127Y-59289503D01* +X71908175Y-59421982D01* +X71946818Y-59549370D01* +X72009570Y-59666771D01* +X72094021Y-59769674D01* +X72196924Y-59854125D01* +X72314325Y-59916877D01* +X72388909Y-59939502D01* +X72314325Y-59962127D01* +X72196924Y-60024879D01* +X72094021Y-60109330D01* +X72009570Y-60212233D01* +X71946818Y-60329634D01* +X71908175Y-60457022D01* +X71895127Y-60589501D01* +X71895127Y-61279024D01* +X71867253Y-61251203D01* +X71867253Y-60589499D01* +X71854205Y-60457020D01* +X71815562Y-60329632D01* +X71752810Y-60212231D01* +X71668359Y-60109328D01* +X71565456Y-60024877D01* +X71448055Y-59962125D01* +X71373471Y-59939500D01* +X71448055Y-59916875D01* +X71565456Y-59854123D01* +X71668359Y-59769672D01* +X71752810Y-59666769D01* +X71815562Y-59549368D01* +X71854205Y-59421980D01* +X71867253Y-59289501D01* +X71867253Y-58589499D01* +X71854205Y-58457020D01* +X71815562Y-58329632D01* +X71752810Y-58212231D01* +X71668359Y-58109328D01* +X71565456Y-58024877D01* +X71448055Y-57962125D01* +X71320667Y-57923482D01* +X71188188Y-57910434D01* +X71149778Y-57910434D01* +X71192477Y-57846531D01* +X71254818Y-57696027D01* +X71286600Y-57536252D01* +X71286600Y-57373348D01* +X71254818Y-57213573D01* +X71192477Y-57063069D01* +X71101972Y-56927619D01* +X70986781Y-56812428D01* +X70851331Y-56721923D01* +X70700827Y-56659582D01* +X70541052Y-56627800D01* +X70378148Y-56627800D01* +X70218373Y-56659582D01* +X70067869Y-56721923D01* +X69932419Y-56812428D01* +X69817228Y-56927619D01* +X69726723Y-57063069D01* +X69664382Y-57213573D01* +X69632600Y-57373348D01* +X69632600Y-57536252D01* +X69664382Y-57696027D01* +X69726723Y-57846531D01* +X69817228Y-57981981D01* +X69882600Y-58047353D01* +X69882600Y-58048117D01* +X69808015Y-58109328D01* +X69723564Y-58212231D01* +X69660812Y-58329632D01* +X69622169Y-58457020D01* +X69609121Y-58589499D01* +X69609121Y-59289501D01* +X69622169Y-59421980D01* +X69660812Y-59549368D01* +X69723564Y-59666769D01* +X69808015Y-59769672D01* +X69910918Y-59854123D01* +X70028319Y-59916875D01* +X70102903Y-59939500D01* +X70028319Y-59962125D01* +X69910918Y-60024877D01* +X69808015Y-60109328D01* +X69723564Y-60212231D01* +X69660812Y-60329632D01* +X69622169Y-60457020D01* +X69609121Y-60589499D01* +X69609121Y-61289501D01* +X69622169Y-61421980D01* +X69660812Y-61549368D01* +X69723564Y-61666769D01* +X69808015Y-61769672D01* +X69910918Y-61854123D01* +X70028319Y-61916875D01* +X70155707Y-61955518D01* +X70288186Y-61968566D01* +X70952428Y-61968566D01* +X73184600Y-64196520D01* +X73184601Y-72894370D01* +X73184154Y-72896718D01* +X73184601Y-72951111D01* +X73184601Y-72971423D01* +X73184783Y-72973272D01* +X73185088Y-73010372D01* +X73191464Y-73041104D01* +X73192951Y-73056199D01* +X73198156Y-73073359D01* +X73208178Y-73121661D01* +X73224462Y-73160077D01* +X73225944Y-73164963D01* +X73228789Y-73170286D01* +X73252535Y-73226306D01* +X73300443Y-73296744D01* +X76337680Y-76936185D01* +X76282769Y-77068753D01* +X76233695Y-77315466D01* +X76233695Y-77567014D01* +X76282769Y-77813727D01* +X76379032Y-78046126D01* +X76488815Y-78210429D01* +X76416993Y-78266542D01* +X76363098Y-78055546D01* +X76161457Y-77907193D01* +X75934747Y-77801028D01* +X75691682Y-77741131D01* +X75441602Y-77729806D01* +X75194118Y-77767486D01* +X74958740Y-77852724D01* +X74910261Y-77877161D01* +X74806933Y-78068868D01* +X75513111Y-78972736D01* +X75528871Y-78960423D01* +X75557192Y-78996670D01* +X75541431Y-79008984D01* +X76247610Y-79912851D01* +X76458620Y-79858970D01* +X76494060Y-79817843D01* +X76633709Y-79610077D01* +X76730141Y-79379061D01* +X76779652Y-79133669D01* +X76780337Y-78883334D01* +X76732172Y-78637675D01* +X76637007Y-78406134D01* +X76445316Y-78302794D01* +X76514444Y-78248785D01* +X76518784Y-78255280D01* +X76696655Y-78433151D01* +X76905809Y-78572903D01* +X77138208Y-78669166D01* +X77384921Y-78718240D01* +X77636469Y-78718240D01* +X77883182Y-78669166D01* +X78115581Y-78572903D01* +X78324735Y-78433151D01* +X78502606Y-78255280D01* +X78642358Y-78046126D01* +X78738621Y-77813727D01* +X78787695Y-77567014D01* +X78787695Y-77315466D01* +X78738621Y-77068753D01* +X78642358Y-76836354D01* +X78596392Y-76767561D01* +X78698202Y-76869371D01* +X78907356Y-77009123D01* +X79139755Y-77105386D01* +X79386468Y-77154460D01* +X79638016Y-77154460D01* +X79884729Y-77105386D01* +X80117128Y-77009123D01* +X80326282Y-76869371D01* +X80504153Y-76691500D01* +X80643905Y-76482346D01* +X80740168Y-76249947D01* +X80789242Y-76003234D01* +X80789242Y-75751686D01* +X80740168Y-75504973D01* +X80643905Y-75272574D01* +X80504153Y-75063420D01* +X80326282Y-74885549D01* +X80117128Y-74745797D01* +X79884729Y-74649534D01* +X79638016Y-74600460D01* +X79386468Y-74600460D01* +X79282539Y-74621133D01* +X75669260Y-69864200D01* +X75824252Y-69864200D01* +X75984027Y-69832418D01* +X76134531Y-69770077D01* +X76269981Y-69679572D01* +X76385172Y-69564381D01* +X76475677Y-69428931D01* +X76538018Y-69278427D01* +X76569800Y-69118652D01* +X76569800Y-68955748D01* +X76538018Y-68795973D01* +X76475677Y-68645469D01* +X76419800Y-68561843D01* +X76419800Y-67222425D01* +X76530977Y-67222425D01* +X76581777Y-67679625D01* +X76587517Y-67705761D01* +X76790717Y-68315361D01* +X76796686Y-68330115D01* +X76809600Y-68351400D01* +X77266800Y-68961000D01* +X77290430Y-68985048D01* +X77747630Y-69340648D01* +X77765288Y-69352165D01* +X77788251Y-69361784D01* +X78048581Y-69441886D01* +X78048581Y-70229676D01* +X78061629Y-70362155D01* +X78100272Y-70489543D01* +X78163024Y-70606945D01* +X78247475Y-70709848D01* +X78350378Y-70794299D01* +X78467780Y-70857051D01* +X78595168Y-70895694D01* +X78727647Y-70908742D01* +X79402647Y-70908742D01* +X79535126Y-70895694D01* +X79662514Y-70857051D01* +X79779916Y-70794299D01* +X79882819Y-70709848D01* +X79967270Y-70606945D01* +X79972663Y-70596856D01* +X80142334Y-70598026D01* +X80156242Y-70643872D01* +X80195892Y-70718052D01* +X80249252Y-70783071D01* +X80314271Y-70836431D01* +X80388451Y-70876081D01* +X80468940Y-70900498D01* +X80552647Y-70908742D01* +X81010397Y-70906676D01* +X81117147Y-70799926D01* +X81117147Y-70604749D01* +X81163147Y-70605066D01* +X81163147Y-70799926D01* +X81269897Y-70906676D01* +X81727647Y-70908742D01* +X81811354Y-70900498D01* +X81891843Y-70876081D01* +X81966023Y-70836431D01* +X82031042Y-70783071D01* +X82084402Y-70718052D01* +X82124052Y-70643872D01* +X82133793Y-70611760D01* +X82157055Y-70611921D01* +X82166747Y-70643869D01* +X82206397Y-70718049D01* +X82259757Y-70783068D01* +X82324776Y-70836428D01* +X82398956Y-70876078D01* +X82479445Y-70900495D01* +X82563152Y-70908739D01* +X83020902Y-70906673D01* +X83127652Y-70799923D01* +X83127652Y-70618614D01* +X83173652Y-70618932D01* +X83173652Y-70799923D01* +X83280402Y-70906673D01* +X83738152Y-70908739D01* +X83821859Y-70900495D01* +X83902348Y-70876078D01* +X83976528Y-70836428D01* +X84041547Y-70783068D01* +X84094907Y-70718049D01* +X84134557Y-70643869D01* +X84140100Y-70625597D01* +X84339970Y-70626975D01* +X84407980Y-70709845D01* +X84510883Y-70794296D01* +X84628285Y-70857048D01* +X84755673Y-70895691D01* +X84888152Y-70908739D01* +X85563152Y-70908739D01* +X85695631Y-70895691D01* +X85823019Y-70857048D01* +X85940421Y-70794296D01* +X86043324Y-70709845D01* +X86127775Y-70606942D01* +X86190527Y-70489540D01* +X86229170Y-70362152D01* +X86242218Y-70229673D01* +X86242218Y-69480386D01* +X86557990Y-69358935D01* +X86577855Y-69349233D01* +X86597829Y-69334372D01* +X87156629Y-68826372D01* +X87175242Y-68805230D01* +X87530842Y-68297230D01* +X87547283Y-68264561D01* +X87750483Y-67654961D01* +X87754560Y-67639576D01* +X87757000Y-67614800D01* +X87757000Y-66954400D01* +X87752114Y-66919510D01* +X87548914Y-66208310D01* +X87533945Y-66175017D01* +X87178345Y-65616217D01* +X87156159Y-65590002D01* +X86648159Y-65132802D01* +X86633978Y-65121751D01* +X86612046Y-65109969D01* +X86002446Y-64855969D01* +X85989552Y-64851395D01* +X85965098Y-64846722D01* +X85406298Y-64795922D01* +X85394800Y-64795400D01* +X78790800Y-64795400D01* +X78764190Y-64798219D01* +X78052990Y-64950619D01* +X78033630Y-64956412D01* +X78011417Y-64967655D01* +X77452617Y-65323255D01* +X77426828Y-65344971D01* +X76918828Y-65903771D01* +X76909658Y-65915101D01* +X76897183Y-65936647D01* +X76643183Y-66495447D01* +X76633277Y-66528689D01* +X76531677Y-67189089D01* +X76530977Y-67222425D01* +X76419800Y-67222425D01* +X76419800Y-59200157D01* +X76475677Y-59116531D01* +X76538018Y-58966027D01* +X76569800Y-58806252D01* +X76569800Y-58643348D01* +X76538018Y-58483573D01* +X76475677Y-58333069D01* +X76443591Y-58285050D01* +X76538972Y-58206772D01* +X76623423Y-58103869D01* +X76686175Y-57986467D01* +X76689168Y-57976600D01* +X76779734Y-57976600D01* +X76787978Y-58060307D01* +X76812395Y-58140796D01* +X76852045Y-58214976D01* +X76905405Y-58279995D01* +X76970424Y-58333355D01* +X77044604Y-58373005D01* +X77125093Y-58397422D01* +X77208800Y-58405666D01* +X77666550Y-58403600D01* +X77773300Y-58296850D01* +X77773300Y-57274600D01* +X77819300Y-57274600D01* +X77819300Y-58296850D01* +X77926050Y-58403600D01* +X78383800Y-58405666D01* +X78467507Y-58397422D01* +X78547996Y-58373005D01* +X78622176Y-58333355D01* +X78687195Y-58279995D01* +X78740555Y-58214976D01* +X78780205Y-58140796D01* +X78804622Y-58060307D01* +X78812866Y-57976600D01* +X78810800Y-57381350D01* +X78704050Y-57274600D01* +X77819300Y-57274600D01* +X77773300Y-57274600D01* +X76888550Y-57274600D01* +X76781800Y-57381350D01* +X76779734Y-57976600D01* +X76689168Y-57976600D01* +X76724818Y-57859079D01* +X76737866Y-57726600D01* +X76737866Y-56776600D01* +X76724818Y-56644121D01* +X76689169Y-56526600D01* +X76779734Y-56526600D01* +X76781800Y-57121850D01* +X76888550Y-57228600D01* +X77773300Y-57228600D01* +X77773300Y-56206350D01* +X77819300Y-56206350D01* +X77819300Y-57228600D01* +X78704050Y-57228600D01* +X78810800Y-57121850D01* +X78812866Y-56526600D01* +X78804622Y-56442893D01* +X78780205Y-56362404D01* +X78740555Y-56288224D01* +X78687195Y-56223205D01* +X78622176Y-56169845D01* +X78547996Y-56130195D01* +X78467507Y-56105778D01* +X78383800Y-56097534D01* +X77926050Y-56099600D01* +X77819300Y-56206350D01* +X77773300Y-56206350D01* +X77666550Y-56099600D01* +X77208800Y-56097534D01* +X77125093Y-56105778D01* +X77044604Y-56130195D01* +X76970424Y-56169845D01* +X76905405Y-56223205D01* +X76852045Y-56288224D01* +X76812395Y-56362404D01* +X76787978Y-56442893D01* +X76779734Y-56526600D01* +X76689169Y-56526600D01* +X76686175Y-56516733D01* +X76623423Y-56399331D01* +X76538972Y-56296428D01* +X76462800Y-56233915D01* +X76462800Y-55937411D01* +X76500569Y-55917223D01* +X76603472Y-55832772D01* +X76687923Y-55729869D01* +X76750675Y-55612467D01* +X76753668Y-55602600D01* +X76844234Y-55602600D01* +X76852478Y-55686307D01* +X76876895Y-55766796D01* +X76916545Y-55840976D01* +X76969905Y-55905995D01* +X77034924Y-55959355D01* +X77109104Y-55999005D01* +X77189593Y-56023422D01* +X77273300Y-56031666D01* +X77731050Y-56029600D01* +X77837800Y-55922850D01* +X77837800Y-54900600D01* +X77883800Y-54900600D01* +X77883800Y-55922850D01* +X77990550Y-56029600D01* +X78448300Y-56031666D01* +X78532007Y-56023422D01* +X78612496Y-55999005D01* +X78686676Y-55959355D01* +X78751695Y-55905995D01* +X78805055Y-55840976D01* +X78844705Y-55766796D01* +X78869122Y-55686307D01* +X78877366Y-55602600D01* +X78875300Y-55007350D01* +X78768550Y-54900600D01* +X77883800Y-54900600D01* +X77837800Y-54900600D01* +X76953050Y-54900600D01* +X76846300Y-55007350D01* +X76844234Y-55602600D01* +X76753668Y-55602600D01* +X76789318Y-55485079D01* +X76802366Y-55352600D01* +X76802366Y-54402600D01* +X76789318Y-54270121D01* +X76753669Y-54152600D01* +X76844234Y-54152600D01* +X76846300Y-54747850D01* +X76953050Y-54854600D01* +X77837800Y-54854600D01* +X77837800Y-53832350D01* +X77883800Y-53832350D01* +X77883800Y-54854600D01* +X78768550Y-54854600D01* +X78875300Y-54747850D01* +X78877366Y-54152600D01* +X78869122Y-54068893D01* +X78844705Y-53988404D01* +X78805055Y-53914224D01* +X78751695Y-53849205D01* +X78686676Y-53795845D01* +X78612496Y-53756195D01* +X78532007Y-53731778D01* +X78448300Y-53723534D01* +X77990550Y-53725600D01* +X77883800Y-53832350D01* +X77837800Y-53832350D01* +X77731050Y-53725600D01* +X77273300Y-53723534D01* +X77189593Y-53731778D01* +X77109104Y-53756195D01* +X77034924Y-53795845D01* +X76969905Y-53849205D01* +X76916545Y-53914224D01* +X76876895Y-53988404D01* +X76852478Y-54068893D01* +X76844234Y-54152600D01* +X76753669Y-54152600D01* +X76750675Y-54142733D01* +X76687923Y-54025331D01* +X76603472Y-53922428D01* +X76500569Y-53837977D01* +X76462800Y-53817789D01* +X76462800Y-51886948D01* +X84872600Y-51886948D01* +X84872600Y-52049852D01* +X84904382Y-52209627D01* +X84966723Y-52360131D01* +X85057228Y-52495581D01* +X85172419Y-52610772D01* +X85307869Y-52701277D01* +X85458373Y-52763618D01* +X85618148Y-52795400D01* +X85781052Y-52795400D01* +X85940827Y-52763618D01* +X86077669Y-52706936D01* +X86095425Y-52765468D01* +X86158177Y-52882869D01* +X86242628Y-52985772D01* +X86345531Y-53070223D01* +X86462932Y-53132975D01* +X86590320Y-53171618D01* +X86722799Y-53184666D01* +X87622801Y-53184666D01* +X87755280Y-53171618D01* +X87882668Y-53132975D01* +X88000069Y-53070223D01* +X88102972Y-52985772D01* +X88187423Y-52882869D01* +X88250175Y-52765468D01* +X88288818Y-52638080D01* +X88301866Y-52505601D01* +X88301866Y-51805599D01* +X88288818Y-51673120D01* +X88250175Y-51545732D01* +X88187423Y-51428331D01* +X88102972Y-51325428D01* +X88000069Y-51240977D01* +X87882668Y-51178225D01* +X87808084Y-51155600D01* +X87882668Y-51132975D01* +X88000069Y-51070223D01* +X88102972Y-50985772D01* +X88187423Y-50882869D01* +X88250175Y-50765468D01* +X88260145Y-50732600D01* +X88343673Y-50732600D01* +X88372004Y-50735390D01* +X88400335Y-50732600D01* +X88400340Y-50732600D01* +X88430049Y-50729674D01* +X88485115Y-50724251D01* +X88529774Y-50710703D01* +X88593880Y-50691257D01* +X88694119Y-50637679D01* +X88781978Y-50565574D01* +X88800043Y-50543562D01* +X90110528Y-49233077D01* +X90138415Y-49244628D01* +X90385128Y-49293702D01* +X90636676Y-49293702D01* +X90883389Y-49244628D01* +X91115788Y-49148365D01* +X91295110Y-49028546D01* +X91175291Y-49207868D01* +X91079028Y-49440267D01* +X91029954Y-49686980D01* +X91029954Y-49938528D01* +X91079028Y-50185241D01* +X91175291Y-50417640D01* +X91315043Y-50626794D01* +X91492914Y-50804665D01* +X91702068Y-50944417D01* +X91934467Y-51040680D01* +X92181180Y-51089754D01* +X92432728Y-51089754D01* +X92679441Y-51040680D01* +X92911840Y-50944417D01* +X93091159Y-50824600D01* +X92971342Y-51003919D01* +X92875079Y-51236318D01* +X92826005Y-51483031D01* +X92826005Y-51734579D01* +X92875079Y-51981292D01* +X92971342Y-52213691D01* +X93111094Y-52422845D01* +X93288965Y-52600716D01* +X93498119Y-52740468D01* +X93730518Y-52836731D01* +X93977231Y-52885805D01* +X94228779Y-52885805D01* +X94475492Y-52836731D01* +X94707891Y-52740468D01* +X94887210Y-52620651D01* +X94767393Y-52799970D01* +X94671130Y-53032369D01* +X94622056Y-53279082D01* +X94622056Y-53530630D01* +X94671130Y-53777343D01* +X94767393Y-54009742D01* +X94907145Y-54218896D01* +X95085016Y-54396767D01* +X95294170Y-54536519D01* +X95526569Y-54632782D01* +X95773282Y-54681856D01* +X96024830Y-54681856D01* +X96271543Y-54632782D01* +X96503942Y-54536519D01* +X96683261Y-54416702D01* +X96563444Y-54596021D01* +X96467181Y-54828420D01* +X96418107Y-55075133D01* +X96418107Y-55326681D01* +X96467181Y-55573394D01* +X96563444Y-55805793D01* +X96703196Y-56014947D01* +X96881067Y-56192818D01* +X97090221Y-56332570D01* +X97322620Y-56428833D01* +X97569333Y-56477907D01* +X97820881Y-56477907D01* +X98067594Y-56428833D01* +X98299993Y-56332570D01* +X98479315Y-56212751D01* +X98359496Y-56392073D01* +X98263233Y-56624472D01* +X98214159Y-56871185D01* +X98214159Y-57122733D01* +X98263233Y-57369446D01* +X98359496Y-57601845D01* +X98499248Y-57810999D01* +X98677119Y-57988870D01* +X98886273Y-58128622D01* +X99118672Y-58224885D01* +X99365385Y-58273959D01* +X99616933Y-58273959D01* +X99863646Y-58224885D01* +X100096045Y-58128622D01* +X100305199Y-57988870D01* +X100483070Y-57810999D01* +X100622822Y-57601845D01* +X100719085Y-57369446D01* +X100768159Y-57122733D01* +X100768159Y-56871185D01* +X100719085Y-56624472D01* +X100622822Y-56392073D01* +X100483070Y-56182919D01* +X100305199Y-56005048D01* +X100096045Y-55865296D01* +X99863646Y-55769033D01* +X99616933Y-55719959D01* +X99365385Y-55719959D01* +X99118672Y-55769033D01* +X98886273Y-55865296D01* +X98706951Y-55985115D01* +X98826770Y-55805793D01* +X98923033Y-55573394D01* +X98972107Y-55326681D01* +X98972107Y-55075133D01* +X98923033Y-54828420D01* +X98826770Y-54596021D01* +X98687018Y-54386867D01* +X98509147Y-54208996D01* +X98299993Y-54069244D01* +X98067594Y-53972981D01* +X97820881Y-53923907D01* +X97569333Y-53923907D01* +X97322620Y-53972981D01* +X97090221Y-54069244D01* +X96910902Y-54189061D01* +X97030719Y-54009742D01* +X97126982Y-53777343D01* +X97176056Y-53530630D01* +X97176056Y-53279082D01* +X97126982Y-53032369D01* +X97030719Y-52799970D01* +X96890967Y-52590816D01* +X96713096Y-52412945D01* +X96503942Y-52273193D01* +X96271543Y-52176930D01* +X96024830Y-52127856D01* +X95773282Y-52127856D01* +X95526569Y-52176930D01* +X95294170Y-52273193D01* +X95114851Y-52393010D01* +X95234668Y-52213691D01* +X95330931Y-51981292D01* +X95380005Y-51734579D01* +X95380005Y-51483031D01* +X95330931Y-51236318D01* +X95234668Y-51003919D01* +X95094916Y-50794765D01* +X94917045Y-50616894D01* +X94707891Y-50477142D01* +X94475492Y-50380879D01* +X94228779Y-50331805D01* +X93977231Y-50331805D01* +X93730518Y-50380879D01* +X93498119Y-50477142D01* +X93318800Y-50596959D01* +X93438617Y-50417640D01* +X93534880Y-50185241D01* +X93583954Y-49938528D01* +X93583954Y-49686980D01* +X93534880Y-49440267D01* +X93438617Y-49207868D01* +X93298865Y-48998714D01* +X93120994Y-48820843D01* +X92911840Y-48681091D01* +X92679441Y-48584828D01* +X92432728Y-48535754D01* +X92181180Y-48535754D01* +X91934467Y-48584828D01* +X91702068Y-48681091D01* +X91522746Y-48800910D01* +X91642565Y-48621588D01* +X91738828Y-48389189D01* +X91787902Y-48142476D01* +X91787902Y-47890928D01* +X91738828Y-47644215D01* +X91642565Y-47411816D01* +X91502813Y-47202662D01* +X91324942Y-47024791D01* +X91115788Y-46885039D01* +X90883389Y-46788776D01* +X90636676Y-46739702D01* +X90385128Y-46739702D01* +X90138415Y-46788776D01* +X89906016Y-46885039D01* +X89696862Y-47024791D01* +X89624191Y-47097462D01* +X89558463Y-47031733D01* +X89761318Y-46952525D01* +X89883992Y-46734307D01* +X89961736Y-46496349D01* +X89991564Y-46247796D01* +X89972328Y-45998200D01* +X89904768Y-45757153D01* +X89791480Y-45533917D01* +X89761317Y-45488778D01* +X89558446Y-45409583D01* +X88747378Y-46220651D01* +X88761520Y-46234793D01* +X88728993Y-46267320D01* +X88714851Y-46253178D01* +X87903783Y-47064246D01* +X87982978Y-47267117D01* +X88028117Y-47297280D01* +X88251353Y-47410568D01* +X88492400Y-47478128D01* +X88741996Y-47497364D01* +X88990549Y-47467536D01* +X89228507Y-47389792D01* +X89446725Y-47267118D01* +X89525933Y-47064263D01* +X89591662Y-47129991D01* +X89518991Y-47202662D01* +X89379239Y-47411816D01* +X89282976Y-47644215D01* +X89233902Y-47890928D01* +X89233902Y-48142476D01* +X89282976Y-48389189D01* +X89294527Y-48417076D01* +X88220810Y-49490793D01* +X88187423Y-49428331D01* +X88102972Y-49325428D01* +X88000069Y-49240977D01* +X87882668Y-49178225D01* +X87755280Y-49139582D01* +X87622801Y-49126534D01* +X86722799Y-49126534D01* +X86590320Y-49139582D01* +X86462932Y-49178225D01* +X86345531Y-49240977D01* +X86242628Y-49325428D01* +X86158177Y-49428331D01* +X86095425Y-49545732D01* +X86056782Y-49673120D01* +X86043734Y-49805599D01* +X86043734Y-50505601D01* +X86056782Y-50638080D01* +X86095425Y-50765468D01* +X86158177Y-50882869D01* +X86242628Y-50985772D01* +X86345531Y-51070223D01* +X86462932Y-51132975D01* +X86537516Y-51155600D01* +X86462932Y-51178225D01* +X86345531Y-51240977D01* +X86242628Y-51325428D01* +X86235214Y-51334461D01* +X86226781Y-51326028D01* +X86091331Y-51235523D01* +X85940827Y-51173182D01* +X85781052Y-51141400D01* +X85618148Y-51141400D01* +X85458373Y-51173182D01* +X85307869Y-51235523D01* +X85172419Y-51326028D01* +X85057228Y-51441219D01* +X84966723Y-51576669D01* +X84904382Y-51727173D01* +X84872600Y-51886948D01* +X76462800Y-51886948D01* +X76462800Y-46304252D01* +X76466075Y-46271000D01* +X76453004Y-46138285D01* +X76414292Y-46010670D01* +X76351428Y-45893059D01* +X76288024Y-45815801D01* +X76288018Y-45815795D01* +X76266826Y-45789973D01* +X76241006Y-45768783D01* +X75573823Y-45101600D01* +X85786928Y-45101600D01* +X86615405Y-45930077D01* +X86680424Y-45983437D01* +X86754604Y-46023087D01* +X86835093Y-46047504D01* +X86918800Y-46055748D01* +X87002507Y-46047504D01* +X87082996Y-46023087D01* +X87157176Y-45983437D01* +X87222195Y-45930077D01* +X87806971Y-45345301D01* +X87871239Y-45409569D01* +X87668384Y-45488777D01* +X87545710Y-45706995D01* +X87467966Y-45944953D01* +X87438138Y-46193506D01* +X87457374Y-46443102D01* +X87524934Y-46684149D01* +X87638222Y-46907385D01* +X87668385Y-46952524D01* +X87871256Y-47031719D01* +X88682324Y-46220651D01* +X88668182Y-46206509D01* +X88700709Y-46173982D01* +X88714851Y-46188124D01* +X89525919Y-45377056D01* +X89446724Y-45174185D01* +X89401585Y-45144022D01* +X89178349Y-45030734D01* +X88937302Y-44963174D01* +X88687706Y-44943938D01* +X88439153Y-44973766D01* +X88201195Y-45051510D01* +X87982977Y-45174184D01* +X87903769Y-45377039D01* +X87839501Y-45312771D01* +X88424277Y-44727995D01* +X88477637Y-44662976D01* +X88517287Y-44588796D01* +X88541704Y-44508307D01* +X88549948Y-44424600D01* +X88541704Y-44340893D01* +X88517287Y-44260404D01* +X88477637Y-44186224D01* +X88424277Y-44121205D01* +X87379503Y-43076431D01* +X87638295Y-43282283D01* +X90725181Y-45937424D01* +X93707877Y-48709117D01* +X96581969Y-51593258D01* +X99343237Y-54585616D01* +X101988600Y-57682939D01* +X103325107Y-59351172D01* +X64638216Y-89576685D01* +X64303286Y-89155621D01* +X64298204Y-89149565D01* +X64293251Y-89143448D01* +X62372186Y-86894170D01* +X62356352Y-86876584D01* +X62356333Y-86876565D01* +X60320222Y-84730952D01* +X60320203Y-84730931D01* +X60303470Y-84714198D01* +X58157835Y-82678067D01* +X58157816Y-82678048D01* +X58149386Y-82670458D01* +X58140230Y-82662213D01* +X58140207Y-82662195D01* +X57239226Y-81892683D01* +X60938100Y-81892683D01* +X60948169Y-81976190D01* +X60974335Y-82056128D01* +X61015594Y-82129425D01* +X62048032Y-83603899D01* +X62102797Y-83667739D01* +X62168965Y-83719668D01* +X62243992Y-83757690D01* +X62324996Y-83780345D01* +X62408862Y-83786761D01* +X62492369Y-83776692D01* +X62572307Y-83750526D01* +X62645604Y-83709267D01* +X63973323Y-82779588D01* +X71516184Y-82769813D01* +X71571704Y-82771565D01* +X71615651Y-82764255D01* +X71659979Y-82759831D01* +X71681288Y-82753337D01* +X71703254Y-82749683D01* +X71744924Y-82733943D01* +X71787543Y-82720954D01* +X71807171Y-82710430D01* +X71828008Y-82702559D01* +X71865813Y-82678988D01* +X71905073Y-82657937D01* +X71947967Y-82622641D01* +X72910567Y-81882180D01* +X73022994Y-82026080D01* +X73081026Y-82086966D01* +X73149821Y-82135361D01* +X73226735Y-82169405D01* +X73308813Y-82187789D01* +X73392900Y-82189807D01* +X73475766Y-82175382D01* +X73554225Y-82145068D01* +X73625262Y-82100030D01* +X74964880Y-81053406D01* +X75025766Y-80995374D01* +X75074161Y-80926579D01* +X75108205Y-80849665D01* +X75126589Y-80767587D01* +X75128607Y-80683500D01* +X75114182Y-80600634D01* +X75083868Y-80522175D01* +X75038830Y-80451138D01* +X74529679Y-79799455D01* +X74601301Y-79743498D01* +X74655196Y-79954494D01* +X74856837Y-80102847D01* +X75083547Y-80209012D01* +X75326612Y-80268909D01* +X75576692Y-80280234D01* +X75824176Y-80242554D01* +X76059554Y-80157316D01* +X76108033Y-80132879D01* +X76211361Y-79941172D01* +X75505183Y-79037304D01* +X75489423Y-79049617D01* +X75461102Y-79013370D01* +X75476863Y-79001056D01* +X74770684Y-78097189D01* +X74559674Y-78151070D01* +X74524234Y-78192197D01* +X74384585Y-78399963D01* +X74288153Y-78630979D01* +X74238642Y-78876371D01* +X74237957Y-79126706D01* +X74286122Y-79372365D01* +X74381287Y-79603906D01* +X74572978Y-79707246D01* +X74501356Y-79763203D01* +X73992206Y-79111520D01* +X73934174Y-79050634D01* +X73865379Y-79002239D01* +X73788465Y-78968195D01* +X73706387Y-78949811D01* +X73622300Y-78947793D01* +X73539434Y-78962218D01* +X73460975Y-78992532D01* +X73396095Y-79033666D01* +X73508654Y-76557385D01* +X73772818Y-76366600D01* +X73843052Y-76366600D01* +X74002827Y-76334818D01* +X74153331Y-76272477D01* +X74288781Y-76181972D01* +X74403972Y-76066781D01* +X74494477Y-75931331D01* +X74556818Y-75780827D01* +X74588600Y-75621052D01* +X74588600Y-75458148D01* +X74556818Y-75298373D01* +X74494477Y-75147869D01* +X74403972Y-75012419D01* +X74288781Y-74897228D01* +X74153331Y-74806723D01* +X74002827Y-74744382D01* +X73843052Y-74712600D01* +X73680148Y-74712600D01* +X73520373Y-74744382D01* +X73369869Y-74806723D01* +X73234419Y-74897228D01* +X73119228Y-75012419D01* +X73028723Y-75147869D01* +X72977937Y-75270477D01* +X72500361Y-75615394D01* +X72495333Y-75617794D01* +X72446363Y-75654392D01* +X72423867Y-75670639D01* +X72419716Y-75674306D01* +X72388512Y-75697627D01* +X72369864Y-75718354D01* +X72348970Y-75736815D01* +X72325375Y-75767802D01* +X72299317Y-75796765D01* +X72285069Y-75820736D01* +X72268180Y-75842916D01* +X72251081Y-75877917D01* +X72231178Y-75911401D01* +X72221882Y-75937685D01* +X72209642Y-75962739D01* +X72199700Y-76000400D01* +X72186711Y-76037126D01* +X72182721Y-76064722D01* +X72175605Y-76091679D01* +X72173201Y-76130562D01* +X72172409Y-76136042D01* +X72171149Y-76163762D01* +X72167377Y-76224780D01* +X72168125Y-76230300D01* +X72021016Y-79466682D01* +X72018686Y-79477677D01* +X72017993Y-79533192D01* +X72016989Y-79555276D01* +X72017578Y-79566429D01* +X72017021Y-79611022D01* +X72021086Y-79632879D01* +X72022258Y-79655081D01* +X72033252Y-79698298D01* +X72041404Y-79742132D01* +X72049655Y-79762777D01* +X72055136Y-79784323D01* +X72074344Y-79824553D01* +X72090895Y-79865966D01* +X72103018Y-79884609D01* +X72112595Y-79904667D01* +X72139285Y-79940380D01* +X72145380Y-79949753D01* +X72159202Y-79967030D01* +X72174346Y-79987294D01* +X72050320Y-80084194D01* +X71989434Y-80142226D01* +X71941039Y-80211021D01* +X71906995Y-80287935D01* +X71888611Y-80370013D01* +X71886593Y-80454100D01* +X71901018Y-80536966D01* +X71931332Y-80615425D01* +X71976370Y-80686462D01* +X72076939Y-80815184D01* +X71295750Y-81416099D01* +X63767928Y-81425854D01* +X63193008Y-80604783D01* +X63138243Y-80540943D01* +X63072075Y-80489014D01* +X62997048Y-80450992D01* +X62916044Y-80428337D01* +X62832178Y-80421921D01* +X62748671Y-80431990D01* +X62668733Y-80458156D01* +X62595436Y-80499415D01* +X61120962Y-81531853D01* +X61057122Y-81586618D01* +X61005193Y-81652786D01* +X60967171Y-81727813D01* +X60944516Y-81808817D01* +X60938100Y-81892683D01* +X57239226Y-81892683D01* +X57197622Y-81857150D01* +X59778981Y-79105761D01* +X65389280Y-79105761D01* +X65389280Y-79367157D01* +X65440276Y-79623531D01* +X65540308Y-79865029D01* +X65685532Y-80082372D01* +X65870367Y-80267207D01* +X66087710Y-80412431D01* +X66329208Y-80512463D01* +X66585582Y-80563459D01* +X66846978Y-80563459D01* +X67103352Y-80512463D01* +X67344850Y-80412431D01* +X67562193Y-80267207D01* +X67747028Y-80082372D01* +X67892252Y-79865029D01* +X67992284Y-79623531D01* +X68043280Y-79367157D01* +X68043280Y-79105761D01* +X67992284Y-78849387D01* +X67892252Y-78607889D01* +X67747028Y-78390546D01* +X67562193Y-78205711D01* +X67344850Y-78060487D01* +X67103352Y-77960455D01* +X66846978Y-77909459D01* +X66585582Y-77909459D01* +X66329208Y-77960455D01* +X66087710Y-78060487D01* +X65870367Y-78205711D01* +X65685532Y-78390546D01* +X65540308Y-78607889D01* +X65440276Y-78849387D01* +X65389280Y-79105761D01* +X59778981Y-79105761D01* +X63170131Y-75491243D01* +X63182057Y-75481313D01* +X67371152Y-72788324D01* +X67395436Y-72768024D01* +X67438229Y-72722051D01* +X67453324Y-72702253D01* +X67464266Y-72679890D01* +X67468325Y-72666925D01* +X67483856Y-72606068D01* +X67487800Y-72574664D01* +X67487800Y-68897600D01* +X69541734Y-68897600D01* +X69541734Y-70497600D01* +X69549978Y-70581307D01* +X69574395Y-70661796D01* +X69614045Y-70735976D01* +X69667405Y-70800995D01* +X69732424Y-70854355D01* +X69806604Y-70894005D01* +X69887093Y-70918422D01* +X69970800Y-70926666D01* +X72370800Y-70926666D01* +X72454507Y-70918422D01* +X72534996Y-70894005D01* +X72609176Y-70854355D01* +X72674195Y-70800995D01* +X72727555Y-70735976D01* +X72767205Y-70661796D01* +X72791622Y-70581307D01* +X72799866Y-70497600D01* +X72799866Y-68897600D01* +X72791622Y-68813893D01* +X72767205Y-68733404D01* +X72727555Y-68659224D01* +X72674195Y-68594205D01* +X72609176Y-68540845D01* +X72534996Y-68501195D01* +X72454507Y-68476778D01* +X72370800Y-68468534D01* +X69970800Y-68468534D01* +X69887093Y-68476778D01* +X69806604Y-68501195D01* +X69732424Y-68540845D01* +X69667405Y-68594205D01* +X69614045Y-68659224D01* +X69574395Y-68733404D01* +X69549978Y-68813893D01* +X69541734Y-68897600D01* +X67487800Y-68897600D01* +X67487800Y-67372228D01* +X69562718Y-67372228D01* +X69562890Y-67374416D01* +X69628398Y-67605902D01* +X69737808Y-67820160D01* +X69886916Y-68008956D01* +X70069991Y-68165035D01* +X70279998Y-68282398D01* +X70508866Y-68356536D01* +X70747800Y-68384600D01* +X71147800Y-68384600D01* +X71147800Y-67180600D01* +X71193800Y-67180600D01* +X71193800Y-68384600D01* +X71593800Y-68384600D01* +X71832734Y-68356536D01* +X72061602Y-68282398D01* +X72271609Y-68165035D01* +X72454684Y-68008956D01* +X72603792Y-67820160D01* +X72713202Y-67605902D01* +X72778710Y-67374416D01* +X72778882Y-67372228D01* +X72690814Y-67180600D01* +X71193800Y-67180600D01* +X71147800Y-67180600D01* +X69650786Y-67180600D01* +X69562718Y-67372228D01* +X67487800Y-67372228D01* +X67487800Y-66942972D01* +X69562718Y-66942972D01* +X69650786Y-67134600D01* +X71147800Y-67134600D01* +X71147800Y-65930600D01* +X71193800Y-65930600D01* +X71193800Y-67134600D01* +X72690814Y-67134600D01* +X72778882Y-66942972D01* +X72778710Y-66940784D01* +X72713202Y-66709298D01* +X72603792Y-66495040D01* +X72454684Y-66306244D01* +X72271609Y-66150165D01* +X72061602Y-66032802D01* +X71832734Y-65958664D01* +X71593800Y-65930600D01* +X71193800Y-65930600D01* +X71147800Y-65930600D01* +X70747800Y-65930600D01* +X70508866Y-65958664D01* +X70279998Y-66032802D01* +X70069991Y-66150165D01* +X69886916Y-66306244D01* +X69737808Y-66495040D01* +X69628398Y-66709298D01* +X69562890Y-66940784D01* +X69562718Y-66942972D01* +X67487800Y-66942972D01* +X67487800Y-64617600D01* +X69537864Y-64617600D01* +X69561555Y-64858134D01* +X69631716Y-65089424D01* +X69745651Y-65302583D01* +X69898983Y-65489417D01* +X70085817Y-65642749D01* +X70298976Y-65756684D01* +X70530266Y-65826845D01* +X70710532Y-65844600D01* +X71631068Y-65844600D01* +X71811334Y-65826845D01* +X72042624Y-65756684D01* +X72255783Y-65642749D01* +X72442617Y-65489417D01* +X72595949Y-65302583D01* +X72709884Y-65089424D01* +X72780045Y-64858134D01* +X72803736Y-64617600D01* +X72780045Y-64377066D01* +X72709884Y-64145776D01* +X72595949Y-63932617D01* +X72442617Y-63745783D01* +X72255783Y-63592451D01* +X72042624Y-63478516D01* +X71811334Y-63408355D01* +X71631068Y-63390600D01* +X70710532Y-63390600D01* +X70530266Y-63408355D01* +X70298976Y-63478516D01* +X70085817Y-63592451D01* +X69898983Y-63745783D01* +X69745651Y-63932617D01* +X69631716Y-64145776D01* +X69561555Y-64377066D01* +X69537864Y-64617600D01* +X67487800Y-64617600D01* +X67487800Y-59789705D01* +X67485360Y-59764929D01* +X67479316Y-59744066D01* +X67446515Y-59658887D01* +X67435334Y-59636643D01* +X67422198Y-59619346D01* +X63185467Y-54934020D01* +X63169630Y-54893036D01* +X63161345Y-51371600D01* +X65223734Y-51371600D01* +X65223734Y-52971600D01* +X65231978Y-53055307D01* +X65256395Y-53135796D01* +X65296045Y-53209976D01* +X65349405Y-53274995D01* +X65414424Y-53328355D01* +X65488604Y-53368005D01* +X65569093Y-53392422D01* +X65652800Y-53400666D01* +X68052800Y-53400666D01* +X68136507Y-53392422D01* +X68216996Y-53368005D01* +X68291176Y-53328355D01* +X68356195Y-53274995D01* +X68409555Y-53209976D01* +X68449205Y-53135796D01* +X68473622Y-53055307D01* +X68481866Y-52971600D01* +X68481866Y-51371600D01* +X68473622Y-51287893D01* +X68449205Y-51207404D01* +X68409555Y-51133224D01* +X68356195Y-51068205D01* +X68291176Y-51014845D01* +X68216996Y-50975195D01* +X68136507Y-50950778D01* +X68052800Y-50942534D01* +X65652800Y-50942534D01* +X65569093Y-50950778D01* +X65488604Y-50975195D01* +X65414424Y-51014845D01* +X65349405Y-51068205D01* +X65296045Y-51133224D01* +X65256395Y-51207404D01* +X65231978Y-51287893D01* +X65223734Y-51371600D01* +X63161345Y-51371600D01* +X63157756Y-49846228D01* +X65244718Y-49846228D01* +X65244890Y-49848416D01* +X65310398Y-50079902D01* +X65419808Y-50294160D01* +X65568916Y-50482956D01* +X65751991Y-50639035D01* +X65961998Y-50756398D01* +X66190866Y-50830536D01* +X66429800Y-50858600D01* +X66829800Y-50858600D01* +X66829800Y-49654600D01* +X66875800Y-49654600D01* +X66875800Y-50858600D01* +X67275800Y-50858600D01* +X67514734Y-50830536D01* +X67743602Y-50756398D01* +X67953609Y-50639035D01* +X68136684Y-50482956D01* +X68285792Y-50294160D01* +X68395202Y-50079902D01* +X68460710Y-49848416D01* +X68460882Y-49846228D01* +X68372814Y-49654600D01* +X66875800Y-49654600D01* +X66829800Y-49654600D01* +X65332786Y-49654600D01* +X65244718Y-49846228D01* +X63157756Y-49846228D01* +X63156746Y-49416972D01* +X65244718Y-49416972D01* +X65332786Y-49608600D01* +X66829800Y-49608600D01* +X66829800Y-48404600D01* +X66875800Y-48404600D01* +X66875800Y-49608600D01* +X68372814Y-49608600D01* +X68460882Y-49416972D01* +X68460710Y-49414784D01* +X68395202Y-49183298D01* +X68285792Y-48969040D01* +X68136684Y-48780244D01* +X67953609Y-48624165D01* +X67743602Y-48506802D01* +X67514734Y-48432664D01* +X67275800Y-48404600D01* +X66875800Y-48404600D01* +X66829800Y-48404600D01* +X66429800Y-48404600D01* +X66190866Y-48432664D01* +X65961998Y-48506802D01* +X65751991Y-48624165D01* +X65568916Y-48780244D01* +X65419808Y-48969040D01* +X65310398Y-49183298D01* +X65244890Y-49414784D01* +X65244718Y-49416972D01* +X63156746Y-49416972D01* +X63151274Y-47091600D01* +X65219864Y-47091600D01* +X65243555Y-47332134D01* +X65313716Y-47563424D01* +X65427651Y-47776583D01* +X65580983Y-47963417D01* +X65767817Y-48116749D01* +X65980976Y-48230684D01* +X66212266Y-48300845D01* +X66392532Y-48318600D01* +X67313068Y-48318600D01* +X67493334Y-48300845D01* +X67724624Y-48230684D01* +X67937783Y-48116749D01* +X68124617Y-47963417D01* +X68277949Y-47776583D01* +X68391884Y-47563424D01* +X68462045Y-47332134D01* +X68485736Y-47091600D01* +X68462045Y-46851066D01* +X68391884Y-46619776D01* +X68277949Y-46406617D01* +X68124617Y-46219783D01* +X67937783Y-46066451D01* +X67724624Y-45952516D01* +X67493334Y-45882355D01* +X67313068Y-45864600D01* +X66392532Y-45864600D01* +X66212266Y-45882355D01* +X65980976Y-45952516D01* +X65767817Y-46066451D01* +X65580983Y-46219783D01* +X65427651Y-46406617D01* +X65313716Y-46619776D01* +X65243555Y-46851066D01* +X65219864Y-47091600D01* +X63151274Y-47091600D01* +X63144701Y-44298036D01* +X63140263Y-44265057D01* +X63122975Y-44201386D01* +X63114128Y-44178114D01* +X63100911Y-44157016D01* +X63089744Y-44144392D01* +X63042848Y-44097985D01* +X63023520Y-44082292D01* +X63001502Y-44070671D01* +X62985507Y-44065352D01* +X62921658Y-44048733D01* +X62888636Y-44044642D01* +X56817161Y-44094004D01* +X56792405Y-44096646D01* +X56771358Y-44102951D01* +X56686078Y-44136785D01* +X56663948Y-44148190D01* +X56646601Y-44161672D01* +X55009620Y-45678286D01* +X54968007Y-45694600D01* +X39894850Y-45694600D01* +X39881661Y-45691064D01* +X39878137Y-45677870D01* +X39887445Y-35903600D01* +X43095734Y-35903600D01* +X43103978Y-35987307D01* +X43128395Y-36067796D01* +X43168045Y-36141976D01* +X43221405Y-36206995D01* +X43286424Y-36260355D01* +X43360604Y-36300005D01* +X43441093Y-36324422D01* +X43524800Y-36332666D01* +X44245050Y-36330600D01* +X44351800Y-36223850D01* +X44351800Y-35176600D01* +X44397800Y-35176600D01* +X44397800Y-36223850D01* +X44504550Y-36330600D01* +X45224800Y-36332666D01* +X45308507Y-36324422D01* +X45388996Y-36300005D01* +X45463176Y-36260355D01* +X45528195Y-36206995D01* +X45581555Y-36141976D01* +X45621205Y-36067796D01* +X45645622Y-35987307D01* +X45653866Y-35903600D01* +X45651800Y-35283350D01* +X45545050Y-35176600D01* +X44397800Y-35176600D01* +X44351800Y-35176600D01* +X43204550Y-35176600D01* +X43097800Y-35283350D01* +X43095734Y-35903600D01* +X39887445Y-35903600D01* +X39888873Y-34403600D01* +X43095734Y-34403600D01* +X43097800Y-35023850D01* +X43204550Y-35130600D01* +X44351800Y-35130600D01* +X44351800Y-34083350D01* +X44397800Y-34083350D01* +X44397800Y-35130600D01* +X45545050Y-35130600D01* +X45651800Y-35023850D01* +X45653866Y-34403600D01* +X45645622Y-34319893D01* +X45621205Y-34239404D01* +X45597792Y-34195600D01* +X48934734Y-34195600D01* +X48942978Y-34279307D01* +X48967395Y-34359796D01* +X49007045Y-34433976D01* +X49060405Y-34498995D01* +X49125424Y-34552355D01* +X49199604Y-34592005D01* +X49280093Y-34616422D01* +X49363800Y-34624666D01* +X49959050Y-34622600D01* +X50065800Y-34515850D01* +X50065800Y-33631100D01* +X50111800Y-33631100D01* +X50111800Y-34515850D01* +X50218550Y-34622600D01* +X50813800Y-34624666D01* +X50897507Y-34616422D01* +X50977996Y-34592005D01* +X51052176Y-34552355D01* +X51117195Y-34498995D01* +X51170555Y-34433976D01* +X51210205Y-34359796D01* +X51234622Y-34279307D01* +X51234837Y-34277125D01* +X51253393Y-34338294D01* +X51293043Y-34412474D01* +X51346403Y-34477493D01* +X51411422Y-34530853D01* +X51485602Y-34570503D01* +X51566091Y-34594920D01* +X51649798Y-34603164D01* +X52245048Y-34601098D01* +X52351798Y-34494348D01* +X52351798Y-33609598D01* +X52397798Y-33609598D01* +X52397798Y-34494348D01* +X52504548Y-34601098D01* +X53099798Y-34603164D01* +X53183505Y-34594920D01* +X53263994Y-34570503D01* +X53338174Y-34530853D01* +X53403193Y-34477493D01* +X53456553Y-34412474D01* +X53496203Y-34338294D01* +X53520620Y-34257805D01* +X53528864Y-34174098D01* +X53526798Y-33716348D01* +X53420048Y-33609598D01* +X52397798Y-33609598D01* +X52351798Y-33609598D01* +X51329548Y-33609598D01* +X51222798Y-33716348D01* +X51222782Y-33719832D01* +X51134050Y-33631100D01* +X50111800Y-33631100D01* +X50065800Y-33631100D01* +X49043550Y-33631100D01* +X48936800Y-33737850D01* +X48934734Y-34195600D01* +X45597792Y-34195600D01* +X45581555Y-34165224D01* +X45528195Y-34100205D01* +X45463176Y-34046845D01* +X45388996Y-34007195D01* +X45308507Y-33982778D01* +X45224800Y-33974534D01* +X44504550Y-33976600D01* +X44397800Y-34083350D01* +X44351800Y-34083350D01* +X44245050Y-33976600D01* +X43524800Y-33974534D01* +X43441093Y-33982778D01* +X43360604Y-34007195D01* +X43286424Y-34046845D01* +X43221405Y-34100205D01* +X43168045Y-34165224D01* +X43128395Y-34239404D01* +X43103978Y-34319893D01* +X43095734Y-34403600D01* +X39888873Y-34403600D01* +X39890190Y-33020600D01* +X48934734Y-33020600D01* +X48936800Y-33478350D01* +X49043550Y-33585100D01* +X50065800Y-33585100D01* +X50065800Y-32700350D01* +X50111800Y-32700350D01* +X50111800Y-33585100D01* +X51134050Y-33585100D01* +X51240800Y-33478350D01* +X51240816Y-33474866D01* +X51329548Y-33563598D01* +X52351798Y-33563598D01* +X52351798Y-32678848D01* +X52397798Y-32678848D01* +X52397798Y-33563598D01* +X53420048Y-33563598D01* +X53526798Y-33456848D01* +X53528864Y-32999098D01* +X53520620Y-32915391D01* +X53496203Y-32834902D01* +X53456553Y-32760722D01* +X53403193Y-32695703D01* +X53338174Y-32642343D01* +X53263994Y-32602693D01* +X53183505Y-32578276D01* +X53099798Y-32570032D01* +X52504548Y-32572098D01* +X52397798Y-32678848D01* +X52351798Y-32678848D01* +X52245048Y-32572098D01* +X51649798Y-32570032D01* +X51566091Y-32578276D01* +X51485602Y-32602693D01* +X51411422Y-32642343D01* +X51346403Y-32695703D01* +X51293043Y-32760722D01* +X51253393Y-32834902D01* +X51228976Y-32915391D01* +X51228761Y-32917573D01* +X51210205Y-32856404D01* +X51170555Y-32782224D01* +X51117195Y-32717205D01* +X51052176Y-32663845D01* +X50977996Y-32624195D01* +X50897507Y-32599778D01* +X50813800Y-32591534D01* +X50218550Y-32593600D01* +X50111800Y-32700350D01* +X50065800Y-32700350D01* +X49959050Y-32593600D01* +X49363800Y-32591534D01* +X49280093Y-32599778D01* +X49199604Y-32624195D01* +X49125424Y-32663845D01* +X49060405Y-32717205D01* +X49007045Y-32782224D01* +X48967395Y-32856404D01* +X48942978Y-32936893D01* +X48934734Y-33020600D01* +X39890190Y-33020600D01* +X39894519Y-28474756D01* +X51282171Y-28474756D01* +X51398083Y-28708976D01* +X51668336Y-28862149D01* +X51963278Y-28959654D01* +X52271576Y-28997745D01* +X52581381Y-28974958D01* +X52880788Y-28892169D01* +X53158291Y-28752560D01* +X53223517Y-28708976D01* +X53339429Y-28474756D01* +X52310800Y-27446127D01* +X51282171Y-28474756D01* +X39894519Y-28474756D01* +X39895568Y-27374376D01* +X50726655Y-27374376D01* +X50749442Y-27684181D01* +X50832231Y-27983588D01* +X50971840Y-28261091D01* +X51015424Y-28326317D01* +X51249644Y-28442229D01* +X52278273Y-27413600D01* +X52343327Y-27413600D01* +X53371956Y-28442229D01* +X53606176Y-28326317D01* +X53759349Y-28056064D01* +X53856854Y-27761122D01* +X53894945Y-27452824D01* +X53872158Y-27143019D01* +X53789369Y-26843612D01* +X53649760Y-26566109D01* +X53606176Y-26500883D01* +X53371956Y-26384971D01* +X52343327Y-27413600D01* +X52278273Y-27413600D01* +X51249644Y-26384971D01* +X51015424Y-26500883D01* +X50862251Y-26771136D01* +X50764746Y-27066078D01* +X50726655Y-27374376D01* +X39895568Y-27374376D01* +X39896541Y-26352444D01* +X51282171Y-26352444D01* +X52310800Y-27381073D01* +X53339429Y-26352444D01* +X53223517Y-26118224D01* +X52953264Y-25965051D01* +X52658322Y-25867546D01* +X52350024Y-25829455D01* +X52040219Y-25852242D01* +X51740812Y-25935031D01* +X51463309Y-26074640D01* +X51398083Y-26118224D01* +X51282171Y-26352444D01* +X39896541Y-26352444D01* +X39901803Y-20828827D01* +X40275685Y-20894080D01* +G37* +%TD.AperFunction*% +%TD*% +M02* diff --git a/kicad/gerber/filadry2-B_Mask.gbr b/kicad/gerber/filadry2-B_Mask.gbr new file mode 100644 index 0000000..47e1738 --- /dev/null +++ b/kicad/gerber/filadry2-B_Mask.gbr @@ -0,0 +1,1144 @@ +%TF.GenerationSoftware,KiCad,Pcbnew,(5.1.9)-1*% +%TF.CreationDate,2021-12-25T05:37:13+03:00*% +%TF.ProjectId,filadry2,66696c61-6472-4793-922e-6b696361645f,rev?*% +%TF.SameCoordinates,Original*% +%TF.FileFunction,Soldermask,Bot*% +%TF.FilePolarity,Negative*% +%FSLAX46Y46*% +G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)* +G04 Created by KiCad (PCBNEW (5.1.9)-1) date 2021-12-25 05:37:13* +%MOMM*% +%LPD*% +G01* +G04 APERTURE LIST* +%ADD10C,3.200000*% +%ADD11C,2.300000*% +%ADD12R,2.300000X2.000000*% +%ADD13C,1.600000*% +%ADD14O,2.400000X1.600000*% +%ADD15R,2.400000X1.600000*% +%ADD16R,1.700000X1.500000*% +%ADD17C,0.100000*% +%ADD18R,2.600000X2.600000*% +%ADD19C,2.600000*% +%ADD20C,1.800000*% +G04 APERTURE END LIST* +D10* +%TO.C,H1*% +X25704800Y-63093600D03* +%TD*% +D11* +%TO.C,PS1*% +X52310800Y-42813600D03* +X22910800Y-37613600D03* +D12* +X22910800Y-32613600D03* +D11* +X52310800Y-27413600D03* +%TD*% +D13* +%TO.C,Y1*% +X84584646Y-67214675D03* +X79684646Y-67214675D03* +%TD*% +D14* +%TO.C,U4*% +X63550800Y-69697600D03* +X71170800Y-64617600D03* +X63550800Y-67157600D03* +X71170800Y-67157600D03* +X63550800Y-64617600D03* +D15* +X71170800Y-69697600D03* +%TD*% +D14* +%TO.C,U3*% +X59232800Y-52171600D03* +X66852800Y-47091600D03* +X59232800Y-49631600D03* +X66852800Y-49631600D03* +X59232800Y-47091600D03* +D15* +X66852800Y-52171600D03* +%TD*% +D16* +%TO.C,U2*% +X44374800Y-37693600D03* +X44374800Y-35153600D03* +X34974800Y-35153600D03* +X34974800Y-37693600D03* +%TD*% +%TO.C,R15*% +G36* +G01* +X54932184Y-64707313D02* +X55382185Y-63927888D01* +G75* +G02* +X55723690Y-63836382I216505J-124999D01* +G01* +X56329909Y-64186383D01* +G75* +G02* +X56421414Y-64527887I-125000J-216505D01* +G01* +X55971413Y-65307312D01* +G75* +G02* +X55629908Y-65398818I-216505J124999D01* +G01* +X55023689Y-65048817D01* +G75* +G02* +X54932184Y-64707313I125000J216505D01* +G01* +G37* +G36* +G01* +X53200134Y-63707313D02* +X53650135Y-62927888D01* +G75* +G02* +X53991640Y-62836382I216505J-124999D01* +G01* +X54597859Y-63186383D01* +G75* +G02* +X54689364Y-63527887I-125000J-216505D01* +G01* +X54239363Y-64307312D01* +G75* +G02* +X53897858Y-64398818I-216505J124999D01* +G01* +X53291639Y-64048817D01* +G75* +G02* +X53200134Y-63707313I125000J216505D01* +G01* +G37* +%TD*% +%TO.C,R13*% +G36* +G01* +X28386800Y-31988600D02* +X28386800Y-33238600D01* +G75* +G02* +X28136800Y-33488600I-250000J0D01* +G01* +X27336800Y-33488600D01* +G75* +G02* +X27086800Y-33238600I0J250000D01* +G01* +X27086800Y-31988600D01* +G75* +G02* +X27336800Y-31738600I250000J0D01* +G01* +X28136800Y-31738600D01* +G75* +G02* +X28386800Y-31988600I0J-250000D01* +G01* +G37* +G36* +G01* +X31486800Y-31988600D02* +X31486800Y-33238600D01* +G75* +G02* +X31236800Y-33488600I-250000J0D01* +G01* +X30436800Y-33488600D01* +G75* +G02* +X30186800Y-33238600I0J250000D01* +G01* +X30186800Y-31988600D01* +G75* +G02* +X30436800Y-31738600I250000J0D01* +G01* +X31236800Y-31738600D01* +G75* +G02* +X31486800Y-31988600I0J-250000D01* +G01* +G37* +%TD*% +%TO.C,R12*% +G36* +G01* +X28334800Y-37068600D02* +X28334800Y-38318600D01* +G75* +G02* +X28084800Y-38568600I-250000J0D01* +G01* +X27284800Y-38568600D01* +G75* +G02* +X27034800Y-38318600I0J250000D01* +G01* +X27034800Y-37068600D01* +G75* +G02* +X27284800Y-36818600I250000J0D01* +G01* +X28084800Y-36818600D01* +G75* +G02* +X28334800Y-37068600I0J-250000D01* +G01* +G37* +G36* +G01* +X31434800Y-37068600D02* +X31434800Y-38318600D01* +G75* +G02* +X31184800Y-38568600I-250000J0D01* +G01* +X30384800Y-38568600D01* +G75* +G02* +X30134800Y-38318600I0J250000D01* +G01* +X30134800Y-37068600D01* +G75* +G02* +X30384800Y-36818600I250000J0D01* +G01* +X31184800Y-36818600D01* +G75* +G02* +X31434800Y-37068600I0J-250000D01* +G01* +G37* +%TD*% +%TO.C,R9*% +G36* +G01* +X50806400Y-39275599D02* +X50806400Y-40175601D01* +G75* +G02* +X50556401Y-40425600I-249999J0D01* +G01* +X49856399Y-40425600D01* +G75* +G02* +X49606400Y-40175601I0J249999D01* +G01* +X49606400Y-39275599D01* +G75* +G02* +X49856399Y-39025600I249999J0D01* +G01* +X50556401Y-39025600D01* +G75* +G02* +X50806400Y-39275599I0J-249999D01* +G01* +G37* +G36* +G01* +X52806400Y-39275599D02* +X52806400Y-40175601D01* +G75* +G02* +X52556401Y-40425600I-249999J0D01* +G01* +X51856399Y-40425600D01* +G75* +G02* +X51606400Y-40175601I0J249999D01* +G01* +X51606400Y-39275599D01* +G75* +G02* +X51856399Y-39025600I249999J0D01* +G01* +X52556401Y-39025600D01* +G75* +G02* +X52806400Y-39275599I0J-249999D01* +G01* +G37* +%TD*% +%TO.C,R5*% +G36* +G01* +X86722799Y-51555600D02* +X87622801Y-51555600D01* +G75* +G02* +X87872800Y-51805599I0J-249999D01* +G01* +X87872800Y-52505601D01* +G75* +G02* +X87622801Y-52755600I-249999J0D01* +G01* +X86722799Y-52755600D01* +G75* +G02* +X86472800Y-52505601I0J249999D01* +G01* +X86472800Y-51805599D01* +G75* +G02* +X86722799Y-51555600I249999J0D01* +G01* +G37* +G36* +G01* +X86722799Y-49555600D02* +X87622801Y-49555600D01* +G75* +G02* +X87872800Y-49805599I0J-249999D01* +G01* +X87872800Y-50505601D01* +G75* +G02* +X87622801Y-50755600I-249999J0D01* +G01* +X86722799Y-50755600D01* +G75* +G02* +X86472800Y-50505601I0J249999D01* +G01* +X86472800Y-49805599D01* +G75* +G02* +X86722799Y-49555600I249999J0D01* +G01* +G37* +%TD*% +%TO.C,R4*% +G36* +G01* +X73474194Y-59539502D02* +X72574192Y-59539502D01* +G75* +G02* +X72324193Y-59289503I0J249999D01* +G01* +X72324193Y-58589501D01* +G75* +G02* +X72574192Y-58339502I249999J0D01* +G01* +X73474194Y-58339502D01* +G75* +G02* +X73724193Y-58589501I0J-249999D01* +G01* +X73724193Y-59289503D01* +G75* +G02* +X73474194Y-59539502I-249999J0D01* +G01* +G37* +G36* +G01* +X73474194Y-61539502D02* +X72574192Y-61539502D01* +G75* +G02* +X72324193Y-61289503I0J249999D01* +G01* +X72324193Y-60589501D01* +G75* +G02* +X72574192Y-60339502I249999J0D01* +G01* +X73474194Y-60339502D01* +G75* +G02* +X73724193Y-60589501I0J-249999D01* +G01* +X73724193Y-61289503D01* +G75* +G02* +X73474194Y-61539502I-249999J0D01* +G01* +G37* +%TD*% +%TO.C,R3*% +G36* +G01* +X71188188Y-59539500D02* +X70288186Y-59539500D01* +G75* +G02* +X70038187Y-59289501I0J249999D01* +G01* +X70038187Y-58589499D01* +G75* +G02* +X70288186Y-58339500I249999J0D01* +G01* +X71188188Y-58339500D01* +G75* +G02* +X71438187Y-58589499I0J-249999D01* +G01* +X71438187Y-59289501D01* +G75* +G02* +X71188188Y-59539500I-249999J0D01* +G01* +G37* +G36* +G01* +X71188188Y-61539500D02* +X70288186Y-61539500D01* +G75* +G02* +X70038187Y-61289501I0J249999D01* +G01* +X70038187Y-60589499D01* +G75* +G02* +X70288186Y-60339500I249999J0D01* +G01* +X71188188Y-60339500D01* +G75* +G02* +X71438187Y-60589499I0J-249999D01* +G01* +X71438187Y-61289501D01* +G75* +G02* +X71188188Y-61539500I-249999J0D01* +G01* +G37* +%TD*% +D17* +%TO.C,Q3*% +G36* +X53843911Y-59165375D02* +G01* +X54843911Y-57433325D01* +X56493689Y-58385825D01* +X55493689Y-60117875D01* +X53843911Y-59165375D01* +G37* +G36* +G01* +X56519866Y-59610486D02* +X56567366Y-59528214D01* +G75* +G02* +X57868505Y-59179575I824889J-476250D01* +G01* +X57868505Y-59179575D01* +G75* +G02* +X58217144Y-60480714I-476250J-824889D01* +G01* +X58169644Y-60562986D01* +G75* +G02* +X56868505Y-60911625I-824889J476250D01* +G01* +X56868505Y-60911625D01* +G75* +G02* +X56519866Y-59610486I476250J824889D01* +G01* +G37* +G36* +G01* +X58719570Y-60880486D02* +X58767070Y-60798214D01* +G75* +G02* +X60068209Y-60449575I824889J-476250D01* +G01* +X60068209Y-60449575D01* +G75* +G02* +X60416848Y-61750714I-476250J-824889D01* +G01* +X60369348Y-61832986D01* +G75* +G02* +X59068209Y-62181625I-824889J476250D01* +G01* +X59068209Y-62181625D01* +G75* +G02* +X58719570Y-60880486I476250J824889D01* +G01* +G37* +%TD*% +%TO.C,Q2*% +G36* +X39199723Y-53293518D02* +G01* +X39883763Y-51414133D01* +X41673877Y-52065682D01* +X40989837Y-53945067D01* +X39199723Y-53293518D01* +G37* +G36* +G01* +X41912316Y-53267192D02* +X41944808Y-53177922D01* +G75* +G02* +X43165639Y-52608639I895057J-325774D01* +G01* +X43165639Y-52608639D01* +G75* +G02* +X43734922Y-53829470I-325774J-895057D01* +G01* +X43702430Y-53918740D01* +G75* +G02* +X42481599Y-54488023I-895057J325774D01* +G01* +X42481599Y-54488023D01* +G75* +G02* +X41912316Y-53267192I325774J895057D01* +G01* +G37* +G36* +G01* +X44299136Y-54135923D02* +X44331628Y-54046653D01* +G75* +G02* +X45552459Y-53477370I895057J-325774D01* +G01* +X45552459Y-53477370D01* +G75* +G02* +X46121742Y-54698201I-325774J-895057D01* +G01* +X46089250Y-54787471D01* +G75* +G02* +X44868419Y-55356754I-895057J325774D01* +G01* +X44868419Y-55356754D01* +G75* +G02* +X44299136Y-54135923I325774J895057D01* +G01* +G37* +%TD*% +D18* +%TO.C,J6*% +X26212800Y-49885600D03* +D19* +X26212800Y-54965600D03* +%TD*% +D17* +%TO.C,J4*% +G36* +X47550967Y-69157433D02* +G01* +X48850967Y-66905767D01* +X51102633Y-68205767D01* +X49802633Y-70457433D01* +X47550967Y-69157433D01* +G37* +D19* +X53726209Y-71221600D03* +%TD*% +D17* +%TO.C,J3*% +G36* +X34960573Y-64124574D02* +G01* +X35849826Y-61681373D01* +X38293027Y-62570626D01* +X37403774Y-65013827D01* +X34960573Y-64124574D01* +G37* +D19* +X41400439Y-65085062D03* +%TD*% +%TO.C,J2*% +G36* +G01* +X98890118Y-57598000D02* +X98890118Y-57598000D01* +G75* +G02* +X98890118Y-56395918I601041J601041D01* +G01* +X98890118Y-56395918D01* +G75* +G02* +X100092200Y-56395918I601041J-601041D01* +G01* +X100092200Y-56395918D01* +G75* +G02* +X100092200Y-57598000I-601041J-601041D01* +G01* +X100092200Y-57598000D01* +G75* +G02* +X98890118Y-57598000I-601041J601041D01* +G01* +G37* +G36* +G01* +X97094066Y-55801948D02* +X97094066Y-55801948D01* +G75* +G02* +X97094066Y-54599866I601041J601041D01* +G01* +X97094066Y-54599866D01* +G75* +G02* +X98296148Y-54599866I601041J-601041D01* +G01* +X98296148Y-54599866D01* +G75* +G02* +X98296148Y-55801948I-601041J-601041D01* +G01* +X98296148Y-55801948D01* +G75* +G02* +X97094066Y-55801948I-601041J601041D01* +G01* +G37* +G36* +G01* +X95298015Y-54005897D02* +X95298015Y-54005897D01* +G75* +G02* +X95298015Y-52803815I601041J601041D01* +G01* +X95298015Y-52803815D01* +G75* +G02* +X96500097Y-52803815I601041J-601041D01* +G01* +X96500097Y-52803815D01* +G75* +G02* +X96500097Y-54005897I-601041J-601041D01* +G01* +X96500097Y-54005897D01* +G75* +G02* +X95298015Y-54005897I-601041J601041D01* +G01* +G37* +G36* +G01* +X93501964Y-52209846D02* +X93501964Y-52209846D01* +G75* +G02* +X93501964Y-51007764I601041J601041D01* +G01* +X93501964Y-51007764D01* +G75* +G02* +X94704046Y-51007764I601041J-601041D01* +G01* +X94704046Y-51007764D01* +G75* +G02* +X94704046Y-52209846I-601041J-601041D01* +G01* +X94704046Y-52209846D01* +G75* +G02* +X93501964Y-52209846I-601041J601041D01* +G01* +G37* +G36* +G01* +X91705913Y-50413795D02* +X91705913Y-50413795D01* +G75* +G02* +X91705913Y-49211713I601041J601041D01* +G01* +X91705913Y-49211713D01* +G75* +G02* +X92907995Y-49211713I601041J-601041D01* +G01* +X92907995Y-49211713D01* +G75* +G02* +X92907995Y-50413795I-601041J-601041D01* +G01* +X92907995Y-50413795D01* +G75* +G02* +X91705913Y-50413795I-601041J601041D01* +G01* +G37* +G36* +G01* +X89909861Y-48617743D02* +X89909861Y-48617743D01* +G75* +G02* +X89909861Y-47415661I601041J601041D01* +G01* +X89909861Y-47415661D01* +G75* +G02* +X91111943Y-47415661I601041J-601041D01* +G01* +X91111943Y-47415661D01* +G75* +G02* +X91111943Y-48617743I-601041J-601041D01* +G01* +X91111943Y-48617743D01* +G75* +G02* +X89909861Y-48617743I-601041J601041D01* +G01* +G37* +G36* +G01* +X88113810Y-46821692D02* +X88113810Y-46821692D01* +G75* +G02* +X88113810Y-45619610I601041J601041D01* +G01* +X88113810Y-45619610D01* +G75* +G02* +X89315892Y-45619610I601041J-601041D01* +G01* +X89315892Y-45619610D01* +G75* +G02* +X89315892Y-46821692I-601041J-601041D01* +G01* +X89315892Y-46821692D01* +G75* +G02* +X88113810Y-46821692I-601041J601041D01* +G01* +G37* +D17* +G36* +X86918800Y-45626682D02* +G01* +X85716718Y-44424600D01* +X86918800Y-43222518D01* +X88120882Y-44424600D01* +X86918800Y-45626682D01* +G37* +%TD*% +%TO.C,J1*% +G36* +G01* +X80035554Y-76547269D02* +X80035554Y-76547269D01* +G75* +G02* +X78842433Y-76400772I-523312J669809D01* +G01* +X78842433Y-76400772D01* +G75* +G02* +X78988930Y-75207651I669809J523312D01* +G01* +X78988930Y-75207651D01* +G75* +G02* +X80182051Y-75354148I523312J-669809D01* +G01* +X80182051Y-75354148D01* +G75* +G02* +X80035554Y-76547269I-669809J-523312D01* +G01* +G37* +G36* +G01* +X78034007Y-78111049D02* +X78034007Y-78111049D01* +G75* +G02* +X76840886Y-77964552I-523312J669809D01* +G01* +X76840886Y-77964552D01* +G75* +G02* +X76987383Y-76771431I669809J523312D01* +G01* +X76987383Y-76771431D01* +G75* +G02* +X78180504Y-76917928I523312J-669809D01* +G01* +X78180504Y-76917928D01* +G75* +G02* +X78034007Y-78111049I-669809J-523312D01* +G01* +G37* +G36* +G01* +X76032459Y-79674829D02* +X76032459Y-79674829D01* +G75* +G02* +X74839338Y-79528332I-523312J669809D01* +G01* +X74839338Y-79528332D01* +G75* +G02* +X74985835Y-78335211I669809J523312D01* +G01* +X74985835Y-78335211D01* +G75* +G02* +X76178956Y-78481708I523312J-669809D01* +G01* +X76178956Y-78481708D01* +G75* +G02* +X76032459Y-79674829I-669809J-523312D01* +G01* +G37* +G36* +X74700721Y-80715297D02* +G01* +X73361103Y-81761921D01* +X72314479Y-80422303D01* +X73654097Y-79375679D01* +X74700721Y-80715297D01* +G37* +%TD*% +%TO.C,C6*% +G36* +G01* +X52849798Y-34174098D02* +X51899798Y-34174098D01* +G75* +G02* +X51649798Y-33924098I0J250000D01* +G01* +X51649798Y-33249098D01* +G75* +G02* +X51899798Y-32999098I250000J0D01* +G01* +X52849798Y-32999098D01* +G75* +G02* +X53099798Y-33249098I0J-250000D01* +G01* +X53099798Y-33924098D01* +G75* +G02* +X52849798Y-34174098I-250000J0D01* +G01* +G37* +G36* +G01* +X52849798Y-36249098D02* +X51899798Y-36249098D01* +G75* +G02* +X51649798Y-35999098I0J250000D01* +G01* +X51649798Y-35324098D01* +G75* +G02* +X51899798Y-35074098I250000J0D01* +G01* +X52849798Y-35074098D01* +G75* +G02* +X53099798Y-35324098I0J-250000D01* +G01* +X53099798Y-35999098D01* +G75* +G02* +X52849798Y-36249098I-250000J0D01* +G01* +G37* +%TD*% +%TO.C,C5*% +G36* +G01* +X50563800Y-34195600D02* +X49613800Y-34195600D01* +G75* +G02* +X49363800Y-33945600I0J250000D01* +G01* +X49363800Y-33270600D01* +G75* +G02* +X49613800Y-33020600I250000J0D01* +G01* +X50563800Y-33020600D01* +G75* +G02* +X50813800Y-33270600I0J-250000D01* +G01* +X50813800Y-33945600D01* +G75* +G02* +X50563800Y-34195600I-250000J0D01* +G01* +G37* +G36* +G01* +X50563800Y-36270600D02* +X49613800Y-36270600D01* +G75* +G02* +X49363800Y-36020600I0J250000D01* +G01* +X49363800Y-35345600D01* +G75* +G02* +X49613800Y-35095600I250000J0D01* +G01* +X50563800Y-35095600D01* +G75* +G02* +X50813800Y-35345600I0J-250000D01* +G01* +X50813800Y-36020600D01* +G75* +G02* +X50563800Y-36270600I-250000J0D01* +G01* +G37* +%TD*% +%TO.C,C4*% +G36* +G01* +X77273300Y-55352600D02* +X77273300Y-54402600D01* +G75* +G02* +X77523300Y-54152600I250000J0D01* +G01* +X78198300Y-54152600D01* +G75* +G02* +X78448300Y-54402600I0J-250000D01* +G01* +X78448300Y-55352600D01* +G75* +G02* +X78198300Y-55602600I-250000J0D01* +G01* +X77523300Y-55602600D01* +G75* +G02* +X77273300Y-55352600I0J250000D01* +G01* +G37* +G36* +G01* +X75198300Y-55352600D02* +X75198300Y-54402600D01* +G75* +G02* +X75448300Y-54152600I250000J0D01* +G01* +X76123300Y-54152600D01* +G75* +G02* +X76373300Y-54402600I0J-250000D01* +G01* +X76373300Y-55352600D01* +G75* +G02* +X76123300Y-55602600I-250000J0D01* +G01* +X75448300Y-55602600D01* +G75* +G02* +X75198300Y-55352600I0J250000D01* +G01* +G37* +%TD*% +%TO.C,C3*% +G36* +G01* +X77208800Y-57726600D02* +X77208800Y-56776600D01* +G75* +G02* +X77458800Y-56526600I250000J0D01* +G01* +X78133800Y-56526600D01* +G75* +G02* +X78383800Y-56776600I0J-250000D01* +G01* +X78383800Y-57726600D01* +G75* +G02* +X78133800Y-57976600I-250000J0D01* +G01* +X77458800Y-57976600D01* +G75* +G02* +X77208800Y-57726600I0J250000D01* +G01* +G37* +G36* +G01* +X75133800Y-57726600D02* +X75133800Y-56776600D01* +G75* +G02* +X75383800Y-56526600I250000J0D01* +G01* +X76058800Y-56526600D01* +G75* +G02* +X76308800Y-56776600I0J-250000D01* +G01* +X76308800Y-57726600D01* +G75* +G02* +X76058800Y-57976600I-250000J0D01* +G01* +X75383800Y-57976600D01* +G75* +G02* +X75133800Y-57726600I0J250000D01* +G01* +G37* +%TD*% +%TO.C,C2*% +G36* +G01* +X83738152Y-69279673D02* +X83738152Y-70229673D01* +G75* +G02* +X83488152Y-70479673I-250000J0D01* +G01* +X82813152Y-70479673D01* +G75* +G02* +X82563152Y-70229673I0J250000D01* +G01* +X82563152Y-69279673D01* +G75* +G02* +X82813152Y-69029673I250000J0D01* +G01* +X83488152Y-69029673D01* +G75* +G02* +X83738152Y-69279673I0J-250000D01* +G01* +G37* +G36* +G01* +X85813152Y-69279673D02* +X85813152Y-70229673D01* +G75* +G02* +X85563152Y-70479673I-250000J0D01* +G01* +X84888152Y-70479673D01* +G75* +G02* +X84638152Y-70229673I0J250000D01* +G01* +X84638152Y-69279673D01* +G75* +G02* +X84888152Y-69029673I250000J0D01* +G01* +X85563152Y-69029673D01* +G75* +G02* +X85813152Y-69279673I0J-250000D01* +G01* +G37* +%TD*% +%TO.C,C1*% +G36* +G01* +X80552647Y-70229676D02* +X80552647Y-69279676D01* +G75* +G02* +X80802647Y-69029676I250000J0D01* +G01* +X81477647Y-69029676D01* +G75* +G02* +X81727647Y-69279676I0J-250000D01* +G01* +X81727647Y-70229676D01* +G75* +G02* +X81477647Y-70479676I-250000J0D01* +G01* +X80802647Y-70479676D01* +G75* +G02* +X80552647Y-70229676I0J250000D01* +G01* +G37* +G36* +G01* +X78477647Y-70229676D02* +X78477647Y-69279676D01* +G75* +G02* +X78727647Y-69029676I250000J0D01* +G01* +X79402647Y-69029676D01* +G75* +G02* +X79652647Y-69279676I0J-250000D01* +G01* +X79652647Y-70229676D01* +G75* +G02* +X79402647Y-70479676I-250000J0D01* +G01* +X78727647Y-70479676D01* +G75* +G02* +X78477647Y-70229676I0J250000D01* +G01* +G37* +%TD*% +D20* +%TO.C,BZ1*% +X66716280Y-79236459D03* +D17* +G36* +X62399502Y-83357797D02* +G01* +X61367064Y-81883323D01* +X62841538Y-80850885D01* +X63873976Y-82325359D01* +X62399502Y-83357797D01* +G37* +%TD*% +M02* diff --git a/kicad/gerber/filadry2-B_Paste.gbr b/kicad/gerber/filadry2-B_Paste.gbr new file mode 100644 index 0000000..f42fcee --- /dev/null +++ b/kicad/gerber/filadry2-B_Paste.gbr @@ -0,0 +1,673 @@ +%TF.GenerationSoftware,KiCad,Pcbnew,(5.1.9)-1*% +%TF.CreationDate,2021-12-25T05:37:13+03:00*% +%TF.ProjectId,filadry2,66696c61-6472-4793-922e-6b696361645f,rev?*% +%TF.SameCoordinates,Original*% +%TF.FileFunction,Paste,Bot*% +%TF.FilePolarity,Positive*% +%FSLAX46Y46*% +G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)* +G04 Created by KiCad (PCBNEW (5.1.9)-1) date 2021-12-25 05:37:13* +%MOMM*% +%LPD*% +G01* +G04 APERTURE LIST* +%ADD10R,1.700000X1.500000*% +G04 APERTURE END LIST* +D10* +%TO.C,U2*% +X44374800Y-37693600D03* +X44374800Y-35153600D03* +X34974800Y-35153600D03* +X34974800Y-37693600D03* +%TD*% +%TO.C,R15*% +G36* +G01* +X54932184Y-64707313D02* +X55382185Y-63927888D01* +G75* +G02* +X55723690Y-63836382I216505J-124999D01* +G01* +X56329909Y-64186383D01* +G75* +G02* +X56421414Y-64527887I-125000J-216505D01* +G01* +X55971413Y-65307312D01* +G75* +G02* +X55629908Y-65398818I-216505J124999D01* +G01* +X55023689Y-65048817D01* +G75* +G02* +X54932184Y-64707313I125000J216505D01* +G01* +G37* +G36* +G01* +X53200134Y-63707313D02* +X53650135Y-62927888D01* +G75* +G02* +X53991640Y-62836382I216505J-124999D01* +G01* +X54597859Y-63186383D01* +G75* +G02* +X54689364Y-63527887I-125000J-216505D01* +G01* +X54239363Y-64307312D01* +G75* +G02* +X53897858Y-64398818I-216505J124999D01* +G01* +X53291639Y-64048817D01* +G75* +G02* +X53200134Y-63707313I125000J216505D01* +G01* +G37* +%TD*% +%TO.C,R13*% +G36* +G01* +X28386800Y-31988600D02* +X28386800Y-33238600D01* +G75* +G02* +X28136800Y-33488600I-250000J0D01* +G01* +X27336800Y-33488600D01* +G75* +G02* +X27086800Y-33238600I0J250000D01* +G01* +X27086800Y-31988600D01* +G75* +G02* +X27336800Y-31738600I250000J0D01* +G01* +X28136800Y-31738600D01* +G75* +G02* +X28386800Y-31988600I0J-250000D01* +G01* +G37* +G36* +G01* +X31486800Y-31988600D02* +X31486800Y-33238600D01* +G75* +G02* +X31236800Y-33488600I-250000J0D01* +G01* +X30436800Y-33488600D01* +G75* +G02* +X30186800Y-33238600I0J250000D01* +G01* +X30186800Y-31988600D01* +G75* +G02* +X30436800Y-31738600I250000J0D01* +G01* +X31236800Y-31738600D01* +G75* +G02* +X31486800Y-31988600I0J-250000D01* +G01* +G37* +%TD*% +%TO.C,R12*% +G36* +G01* +X28334800Y-37068600D02* +X28334800Y-38318600D01* +G75* +G02* +X28084800Y-38568600I-250000J0D01* +G01* +X27284800Y-38568600D01* +G75* +G02* +X27034800Y-38318600I0J250000D01* +G01* +X27034800Y-37068600D01* +G75* +G02* +X27284800Y-36818600I250000J0D01* +G01* +X28084800Y-36818600D01* +G75* +G02* +X28334800Y-37068600I0J-250000D01* +G01* +G37* +G36* +G01* +X31434800Y-37068600D02* +X31434800Y-38318600D01* +G75* +G02* +X31184800Y-38568600I-250000J0D01* +G01* +X30384800Y-38568600D01* +G75* +G02* +X30134800Y-38318600I0J250000D01* +G01* +X30134800Y-37068600D01* +G75* +G02* +X30384800Y-36818600I250000J0D01* +G01* +X31184800Y-36818600D01* +G75* +G02* +X31434800Y-37068600I0J-250000D01* +G01* +G37* +%TD*% +%TO.C,R9*% +G36* +G01* +X50806400Y-39275599D02* +X50806400Y-40175601D01* +G75* +G02* +X50556401Y-40425600I-249999J0D01* +G01* +X49856399Y-40425600D01* +G75* +G02* +X49606400Y-40175601I0J249999D01* +G01* +X49606400Y-39275599D01* +G75* +G02* +X49856399Y-39025600I249999J0D01* +G01* +X50556401Y-39025600D01* +G75* +G02* +X50806400Y-39275599I0J-249999D01* +G01* +G37* +G36* +G01* +X52806400Y-39275599D02* +X52806400Y-40175601D01* +G75* +G02* +X52556401Y-40425600I-249999J0D01* +G01* +X51856399Y-40425600D01* +G75* +G02* +X51606400Y-40175601I0J249999D01* +G01* +X51606400Y-39275599D01* +G75* +G02* +X51856399Y-39025600I249999J0D01* +G01* +X52556401Y-39025600D01* +G75* +G02* +X52806400Y-39275599I0J-249999D01* +G01* +G37* +%TD*% +%TO.C,R5*% +G36* +G01* +X86722799Y-51555600D02* +X87622801Y-51555600D01* +G75* +G02* +X87872800Y-51805599I0J-249999D01* +G01* +X87872800Y-52505601D01* +G75* +G02* +X87622801Y-52755600I-249999J0D01* +G01* +X86722799Y-52755600D01* +G75* +G02* +X86472800Y-52505601I0J249999D01* +G01* +X86472800Y-51805599D01* +G75* +G02* +X86722799Y-51555600I249999J0D01* +G01* +G37* +G36* +G01* +X86722799Y-49555600D02* +X87622801Y-49555600D01* +G75* +G02* +X87872800Y-49805599I0J-249999D01* +G01* +X87872800Y-50505601D01* +G75* +G02* +X87622801Y-50755600I-249999J0D01* +G01* +X86722799Y-50755600D01* +G75* +G02* +X86472800Y-50505601I0J249999D01* +G01* +X86472800Y-49805599D01* +G75* +G02* +X86722799Y-49555600I249999J0D01* +G01* +G37* +%TD*% +%TO.C,R4*% +G36* +G01* +X73474194Y-59539502D02* +X72574192Y-59539502D01* +G75* +G02* +X72324193Y-59289503I0J249999D01* +G01* +X72324193Y-58589501D01* +G75* +G02* +X72574192Y-58339502I249999J0D01* +G01* +X73474194Y-58339502D01* +G75* +G02* +X73724193Y-58589501I0J-249999D01* +G01* +X73724193Y-59289503D01* +G75* +G02* +X73474194Y-59539502I-249999J0D01* +G01* +G37* +G36* +G01* +X73474194Y-61539502D02* +X72574192Y-61539502D01* +G75* +G02* +X72324193Y-61289503I0J249999D01* +G01* +X72324193Y-60589501D01* +G75* +G02* +X72574192Y-60339502I249999J0D01* +G01* +X73474194Y-60339502D01* +G75* +G02* +X73724193Y-60589501I0J-249999D01* +G01* +X73724193Y-61289503D01* +G75* +G02* +X73474194Y-61539502I-249999J0D01* +G01* +G37* +%TD*% +%TO.C,R3*% +G36* +G01* +X71188188Y-59539500D02* +X70288186Y-59539500D01* +G75* +G02* +X70038187Y-59289501I0J249999D01* +G01* +X70038187Y-58589499D01* +G75* +G02* +X70288186Y-58339500I249999J0D01* +G01* +X71188188Y-58339500D01* +G75* +G02* +X71438187Y-58589499I0J-249999D01* +G01* +X71438187Y-59289501D01* +G75* +G02* +X71188188Y-59539500I-249999J0D01* +G01* +G37* +G36* +G01* +X71188188Y-61539500D02* +X70288186Y-61539500D01* +G75* +G02* +X70038187Y-61289501I0J249999D01* +G01* +X70038187Y-60589499D01* +G75* +G02* +X70288186Y-60339500I249999J0D01* +G01* +X71188188Y-60339500D01* +G75* +G02* +X71438187Y-60589499I0J-249999D01* +G01* +X71438187Y-61289501D01* +G75* +G02* +X71188188Y-61539500I-249999J0D01* +G01* +G37* +%TD*% +%TO.C,C6*% +G36* +G01* +X52849798Y-34174098D02* +X51899798Y-34174098D01* +G75* +G02* +X51649798Y-33924098I0J250000D01* +G01* +X51649798Y-33249098D01* +G75* +G02* +X51899798Y-32999098I250000J0D01* +G01* +X52849798Y-32999098D01* +G75* +G02* +X53099798Y-33249098I0J-250000D01* +G01* +X53099798Y-33924098D01* +G75* +G02* +X52849798Y-34174098I-250000J0D01* +G01* +G37* +G36* +G01* +X52849798Y-36249098D02* +X51899798Y-36249098D01* +G75* +G02* +X51649798Y-35999098I0J250000D01* +G01* +X51649798Y-35324098D01* +G75* +G02* +X51899798Y-35074098I250000J0D01* +G01* +X52849798Y-35074098D01* +G75* +G02* +X53099798Y-35324098I0J-250000D01* +G01* +X53099798Y-35999098D01* +G75* +G02* +X52849798Y-36249098I-250000J0D01* +G01* +G37* +%TD*% +%TO.C,C5*% +G36* +G01* +X50563800Y-34195600D02* +X49613800Y-34195600D01* +G75* +G02* +X49363800Y-33945600I0J250000D01* +G01* +X49363800Y-33270600D01* +G75* +G02* +X49613800Y-33020600I250000J0D01* +G01* +X50563800Y-33020600D01* +G75* +G02* +X50813800Y-33270600I0J-250000D01* +G01* +X50813800Y-33945600D01* +G75* +G02* +X50563800Y-34195600I-250000J0D01* +G01* +G37* +G36* +G01* +X50563800Y-36270600D02* +X49613800Y-36270600D01* +G75* +G02* +X49363800Y-36020600I0J250000D01* +G01* +X49363800Y-35345600D01* +G75* +G02* +X49613800Y-35095600I250000J0D01* +G01* +X50563800Y-35095600D01* +G75* +G02* +X50813800Y-35345600I0J-250000D01* +G01* +X50813800Y-36020600D01* +G75* +G02* +X50563800Y-36270600I-250000J0D01* +G01* +G37* +%TD*% +%TO.C,C4*% +G36* +G01* +X77273300Y-55352600D02* +X77273300Y-54402600D01* +G75* +G02* +X77523300Y-54152600I250000J0D01* +G01* +X78198300Y-54152600D01* +G75* +G02* +X78448300Y-54402600I0J-250000D01* +G01* +X78448300Y-55352600D01* +G75* +G02* +X78198300Y-55602600I-250000J0D01* +G01* +X77523300Y-55602600D01* +G75* +G02* +X77273300Y-55352600I0J250000D01* +G01* +G37* +G36* +G01* +X75198300Y-55352600D02* +X75198300Y-54402600D01* +G75* +G02* +X75448300Y-54152600I250000J0D01* +G01* +X76123300Y-54152600D01* +G75* +G02* +X76373300Y-54402600I0J-250000D01* +G01* +X76373300Y-55352600D01* +G75* +G02* +X76123300Y-55602600I-250000J0D01* +G01* +X75448300Y-55602600D01* +G75* +G02* +X75198300Y-55352600I0J250000D01* +G01* +G37* +%TD*% +%TO.C,C3*% +G36* +G01* +X77208800Y-57726600D02* +X77208800Y-56776600D01* +G75* +G02* +X77458800Y-56526600I250000J0D01* +G01* +X78133800Y-56526600D01* +G75* +G02* +X78383800Y-56776600I0J-250000D01* +G01* +X78383800Y-57726600D01* +G75* +G02* +X78133800Y-57976600I-250000J0D01* +G01* +X77458800Y-57976600D01* +G75* +G02* +X77208800Y-57726600I0J250000D01* +G01* +G37* +G36* +G01* +X75133800Y-57726600D02* +X75133800Y-56776600D01* +G75* +G02* +X75383800Y-56526600I250000J0D01* +G01* +X76058800Y-56526600D01* +G75* +G02* +X76308800Y-56776600I0J-250000D01* +G01* +X76308800Y-57726600D01* +G75* +G02* +X76058800Y-57976600I-250000J0D01* +G01* +X75383800Y-57976600D01* +G75* +G02* +X75133800Y-57726600I0J250000D01* +G01* +G37* +%TD*% +%TO.C,C2*% +G36* +G01* +X83738152Y-69279673D02* +X83738152Y-70229673D01* +G75* +G02* +X83488152Y-70479673I-250000J0D01* +G01* +X82813152Y-70479673D01* +G75* +G02* +X82563152Y-70229673I0J250000D01* +G01* +X82563152Y-69279673D01* +G75* +G02* +X82813152Y-69029673I250000J0D01* +G01* +X83488152Y-69029673D01* +G75* +G02* +X83738152Y-69279673I0J-250000D01* +G01* +G37* +G36* +G01* +X85813152Y-69279673D02* +X85813152Y-70229673D01* +G75* +G02* +X85563152Y-70479673I-250000J0D01* +G01* +X84888152Y-70479673D01* +G75* +G02* +X84638152Y-70229673I0J250000D01* +G01* +X84638152Y-69279673D01* +G75* +G02* +X84888152Y-69029673I250000J0D01* +G01* +X85563152Y-69029673D01* +G75* +G02* +X85813152Y-69279673I0J-250000D01* +G01* +G37* +%TD*% +%TO.C,C1*% +G36* +G01* +X80552647Y-70229676D02* +X80552647Y-69279676D01* +G75* +G02* +X80802647Y-69029676I250000J0D01* +G01* +X81477647Y-69029676D01* +G75* +G02* +X81727647Y-69279676I0J-250000D01* +G01* +X81727647Y-70229676D01* +G75* +G02* +X81477647Y-70479676I-250000J0D01* +G01* +X80802647Y-70479676D01* +G75* +G02* +X80552647Y-70229676I0J250000D01* +G01* +G37* +G36* +G01* +X78477647Y-70229676D02* +X78477647Y-69279676D01* +G75* +G02* +X78727647Y-69029676I250000J0D01* +G01* +X79402647Y-69029676D01* +G75* +G02* +X79652647Y-69279676I0J-250000D01* +G01* +X79652647Y-70229676D01* +G75* +G02* +X79402647Y-70479676I-250000J0D01* +G01* +X78727647Y-70479676D01* +G75* +G02* +X78477647Y-70229676I0J250000D01* +G01* +G37* +%TD*% +M02* diff --git a/kicad/gerber/filadry2-B_SilkS.gbr b/kicad/gerber/filadry2-B_SilkS.gbr new file mode 100644 index 0000000..74ebdce --- /dev/null +++ b/kicad/gerber/filadry2-B_SilkS.gbr @@ -0,0 +1,881 @@ +%TF.GenerationSoftware,KiCad,Pcbnew,(5.1.9)-1*% +%TF.CreationDate,2021-12-25T05:37:13+03:00*% +%TF.ProjectId,filadry2,66696c61-6472-4793-922e-6b696361645f,rev?*% +%TF.SameCoordinates,Original*% +%TF.FileFunction,Legend,Bot*% +%TF.FilePolarity,Positive*% +%FSLAX46Y46*% +G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)* +G04 Created by KiCad (PCBNEW (5.1.9)-1) date 2021-12-25 05:37:13* +%MOMM*% +%LPD*% +G01* +G04 APERTURE LIST* +%ADD10C,0.150000*% +%ADD11C,0.120000*% +G04 APERTURE END LIST* +D10* +X34541886Y-21252373D02* +X34875220Y-21252373D01* +X34875220Y-21776182D02* +X34875220Y-20776182D01* +X34399029Y-20776182D01* +X34018077Y-21776182D02* +X34018077Y-21109516D01* +X34018077Y-20776182D02* +X34065696Y-20823802D01* +X34018077Y-20871421D01* +X33970458Y-20823802D01* +X34018077Y-20776182D01* +X34018077Y-20871421D01* +X33399029Y-21776182D02* +X33494267Y-21728563D01* +X33541886Y-21633325D01* +X33541886Y-20776182D01* +X32589505Y-21776182D02* +X32589505Y-21252373D01* +X32637124Y-21157135D01* +X32732362Y-21109516D01* +X32922839Y-21109516D01* +X33018077Y-21157135D01* +X32589505Y-21728563D02* +X32684743Y-21776182D01* +X32922839Y-21776182D01* +X33018077Y-21728563D01* +X33065696Y-21633325D01* +X33065696Y-21538087D01* +X33018077Y-21442849D01* +X32922839Y-21395230D01* +X32684743Y-21395230D01* +X32589505Y-21347611D01* +X32113315Y-21776182D02* +X32113315Y-20776182D01* +X31875220Y-20776182D01* +X31732362Y-20823802D01* +X31637124Y-20919040D01* +X31589505Y-21014278D01* +X31541886Y-21204754D01* +X31541886Y-21347611D01* +X31589505Y-21538087D01* +X31637124Y-21633325D01* +X31732362Y-21728563D01* +X31875220Y-21776182D01* +X32113315Y-21776182D01* +X31113315Y-21776182D02* +X31113315Y-21109516D01* +X31113315Y-21299992D02* +X31065696Y-21204754D01* +X31018077Y-21157135D01* +X30922839Y-21109516D01* +X30827601Y-21109516D01* +X30589505Y-21109516D02* +X30351410Y-21776182D01* +X30113315Y-21109516D02* +X30351410Y-21776182D01* +X30446648Y-22014278D01* +X30494267Y-22061897D01* +X30589505Y-22109516D01* +X28970458Y-21776182D02* +X28970458Y-21109516D01* +X28970458Y-21299992D02* +X28922839Y-21204754D01* +X28875220Y-21157135D01* +X28779981Y-21109516D01* +X28684743Y-21109516D01* +X27970458Y-21728563D02* +X28065696Y-21776182D01* +X28256172Y-21776182D01* +X28351410Y-21728563D01* +X28399029Y-21633325D01* +X28399029Y-21252373D01* +X28351410Y-21157135D01* +X28256172Y-21109516D01* +X28065696Y-21109516D01* +X27970458Y-21157135D01* +X27922839Y-21252373D01* +X27922839Y-21347611D01* +X28399029Y-21442849D01* +X27589505Y-21109516D02* +X27351410Y-21776182D01* +X27113315Y-21109516D01* +X26732362Y-21680944D02* +X26684743Y-21728563D01* +X26732362Y-21776182D01* +X26779981Y-21728563D01* +X26732362Y-21680944D01* +X26732362Y-21776182D01* +X26303791Y-20871421D02* +X26256172Y-20823802D01* +X26160934Y-20776182D01* +X25922839Y-20776182D01* +X25827601Y-20823802D01* +X25779981Y-20871421D01* +X25732362Y-20966659D01* +X25732362Y-21061897D01* +X25779981Y-21204754D01* +X26351410Y-21776182D01* +X25732362Y-21776182D01* +X38708553Y-22664278D02* +X38803791Y-22616659D01* +X38994267Y-22616659D01* +X39089505Y-22664278D01* +X39184743Y-22759516D01* +X39232362Y-22854754D01* +X39232362Y-23045230D01* +X39184743Y-23140468D01* +X39089505Y-23235706D01* +X38994267Y-23283325D01* +X38803791Y-23283325D01* +X38708553Y-23235706D01* +X38899029Y-22283325D02* +X39137124Y-22330944D01* +X39375220Y-22473802D01* +X39518077Y-22711897D01* +X39565696Y-22949992D01* +X39518077Y-23188087D01* +X39375220Y-23426182D01* +X39137124Y-23569040D01* +X38899029Y-23616659D01* +X38660934Y-23569040D01* +X38422839Y-23426182D01* +X38279981Y-23188087D01* +X38232362Y-22949992D01* +X38279981Y-22711897D01* +X38422839Y-22473802D01* +X38660934Y-22330944D01* +X38899029Y-22283325D01* +X37803791Y-23426182D02* +X37803791Y-22426182D01* +X37470458Y-23140468D01* +X37137124Y-22426182D01* +X37137124Y-23426182D01* +X36232362Y-23378563D02* +X36327601Y-23426182D01* +X36518077Y-23426182D01* +X36613315Y-23378563D01* +X36660934Y-23330944D01* +X36708553Y-23235706D01* +X36708553Y-22949992D01* +X36660934Y-22854754D01* +X36613315Y-22807135D01* +X36518077Y-22759516D01* +X36327601Y-22759516D01* +X36232362Y-22807135D01* +X35470458Y-22902373D02* +X35803791Y-22902373D01* +X35803791Y-23426182D02* +X35803791Y-22426182D01* +X35327601Y-22426182D01* +X34470458Y-23426182D02* +X34946648Y-23426182D01* +X34946648Y-22426182D01* +X33946648Y-22949992D02* +X33946648Y-23426182D01* +X34279981Y-22426182D02* +X33946648Y-22949992D01* +X33613315Y-22426182D01* +X32518077Y-23426182D02* +X32518077Y-22426182D01* +X32279981Y-22426182D01* +X32137124Y-22473802D01* +X32041886Y-22569040D01* +X31994267Y-22664278D01* +X31946648Y-22854754D01* +X31946648Y-22997611D01* +X31994267Y-23188087D01* +X32041886Y-23283325D01* +X32137124Y-23378563D01* +X32279981Y-23426182D01* +X32518077Y-23426182D01* +X31137124Y-23378563D02* +X31232362Y-23426182D01* +X31422839Y-23426182D01* +X31518077Y-23378563D01* +X31565696Y-23283325D01* +X31565696Y-22902373D01* +X31518077Y-22807135D01* +X31422839Y-22759516D01* +X31232362Y-22759516D01* +X31137124Y-22807135D01* +X31089505Y-22902373D01* +X31089505Y-22997611D01* +X31565696Y-23092849D01* +X30232362Y-23378563D02* +X30327601Y-23426182D01* +X30518077Y-23426182D01* +X30613315Y-23378563D01* +X30660934Y-23330944D01* +X30708553Y-23235706D01* +X30708553Y-22949992D01* +X30660934Y-22854754D01* +X30613315Y-22807135D01* +X30518077Y-22759516D01* +X30327601Y-22759516D01* +X30232362Y-22807135D01* +X29422839Y-23378563D02* +X29518077Y-23426182D01* +X29708553Y-23426182D01* +X29803791Y-23378563D01* +X29851410Y-23283325D01* +X29851410Y-22902373D01* +X29803791Y-22807135D01* +X29708553Y-22759516D01* +X29518077Y-22759516D01* +X29422839Y-22807135D01* +X29375220Y-22902373D01* +X29375220Y-22997611D01* +X29851410Y-23092849D01* +X28946648Y-23426182D02* +X28946648Y-22759516D01* +X28946648Y-22854754D02* +X28899029Y-22807135D01* +X28803791Y-22759516D01* +X28660934Y-22759516D01* +X28565696Y-22807135D01* +X28518077Y-22902373D01* +X28518077Y-23426182D01* +X28518077Y-22902373D02* +X28470458Y-22807135D01* +X28375220Y-22759516D01* +X28232362Y-22759516D01* +X28137124Y-22807135D01* +X28089505Y-22902373D01* +X28089505Y-23426182D01* +X27613315Y-23426182D02* +X27613315Y-22426182D01* +X27613315Y-22807135D02* +X27518077Y-22759516D01* +X27327601Y-22759516D01* +X27232362Y-22807135D01* +X27184743Y-22854754D01* +X27137124Y-22949992D01* +X27137124Y-23235706D01* +X27184743Y-23330944D01* +X27232362Y-23378563D01* +X27327601Y-23426182D01* +X27518077Y-23426182D01* +X27613315Y-23378563D01* +X26327601Y-23378563D02* +X26422839Y-23426182D01* +X26613315Y-23426182D01* +X26708553Y-23378563D01* +X26756172Y-23283325D01* +X26756172Y-22902373D01* +X26708553Y-22807135D01* +X26613315Y-22759516D01* +X26422839Y-22759516D01* +X26327601Y-22807135D01* +X26279981Y-22902373D01* +X26279981Y-22997611D01* +X26756172Y-23092849D01* +X25851410Y-23426182D02* +X25851410Y-22759516D01* +X25851410Y-22949992D02* +X25803791Y-22854754D01* +X25756172Y-22807135D01* +X25660934Y-22759516D01* +X25565696Y-22759516D01* +X24518077Y-22521421D02* +X24470458Y-22473802D01* +X24375220Y-22426182D01* +X24137124Y-22426182D01* +X24041886Y-22473802D01* +X23994267Y-22521421D01* +X23946648Y-22616659D01* +X23946648Y-22711897D01* +X23994267Y-22854754D01* +X24565696Y-23426182D01* +X23946648Y-23426182D01* +X23327601Y-22426182D02* +X23232362Y-22426182D01* +X23137124Y-22473802D01* +X23089505Y-22521421D01* +X23041886Y-22616659D01* +X22994267Y-22807135D01* +X22994267Y-23045230D01* +X23041886Y-23235706D01* +X23089505Y-23330944D01* +X23137124Y-23378563D01* +X23232362Y-23426182D01* +X23327601Y-23426182D01* +X23422839Y-23378563D01* +X23470458Y-23330944D01* +X23518077Y-23235706D01* +X23565696Y-23045230D01* +X23565696Y-22807135D01* +X23518077Y-22616659D01* +X23470458Y-22521421D01* +X23422839Y-22473802D01* +X23327601Y-22426182D01* +X22613315Y-22521421D02* +X22565696Y-22473802D01* +X22470458Y-22426182D01* +X22232362Y-22426182D01* +X22137124Y-22473802D01* +X22089505Y-22521421D01* +X22041886Y-22616659D01* +X22041886Y-22711897D01* +X22089505Y-22854754D01* +X22660934Y-23426182D01* +X22041886Y-23426182D01* +X21089505Y-23426182D02* +X21660934Y-23426182D01* +X21375220Y-23426182D02* +X21375220Y-22426182D01* +X21470458Y-22569040D01* +X21565696Y-22664278D01* +X21660934Y-22711897D01* +%TO.C,U2*% +X42924800Y-38823600D02* +X42924800Y-34023600D01* +X36424800Y-38823600D02* +X36424800Y-34023600D01* +X42923460Y-34023620D02* +X36426140Y-34023620D01* +X42923460Y-38823580D02* +X36426140Y-38823580D01* +X37025580Y-38823580D02* +X37025580Y-38221600D01* +X37025580Y-38221600D02* +X36426140Y-38221600D01* +D11* +%TO.C,R15*% +X54246631Y-64640597D02* +X54639917Y-64867661D01* +X54981631Y-63367539D02* +X55374917Y-63594603D01* +%TO.C,R13*% +X30013864Y-31703600D02* +X28559736Y-31703600D01* +X30013864Y-33523600D02* +X28559736Y-33523600D01* +%TO.C,R12*% +X29961864Y-36783600D02* +X28507736Y-36783600D01* +X29961864Y-38603600D02* +X28507736Y-38603600D01* +%TO.C,R9*% +X51433464Y-38990600D02* +X50979336Y-38990600D01* +X51433464Y-40460600D02* +X50979336Y-40460600D01* +%TO.C,R5*% +X86437800Y-50928536D02* +X86437800Y-51382664D01* +X87907800Y-50928536D02* +X87907800Y-51382664D01* +%TO.C,R4*% +X73759193Y-60166566D02* +X73759193Y-59712438D01* +X72289193Y-60166566D02* +X72289193Y-59712438D01* +%TO.C,R3*% +X71473187Y-60166564D02* +X71473187Y-59712436D01* +X70003187Y-60166564D02* +X70003187Y-59712436D01* +%TO.C,C6*% +X53109798Y-34885350D02* +X53109798Y-34362846D01* +X51639798Y-34885350D02* +X51639798Y-34362846D01* +%TO.C,C5*% +X50823800Y-34906852D02* +X50823800Y-34384348D01* +X49353800Y-34906852D02* +X49353800Y-34384348D01* +%TO.C,C4*% +X76562048Y-55612600D02* +X77084552Y-55612600D01* +X76562048Y-54142600D02* +X77084552Y-54142600D01* +%TO.C,C3*% +X76497548Y-57986600D02* +X77020052Y-57986600D01* +X76497548Y-56516600D02* +X77020052Y-56516600D01* +%TO.C,C2*% +X84449404Y-69019673D02* +X83926900Y-69019673D01* +X84449404Y-70489673D02* +X83926900Y-70489673D01* +%TO.C,C1*% +X79841395Y-70489676D02* +X80363899Y-70489676D01* +X79841395Y-69019676D02* +X80363899Y-69019676D01* +%TO.C,U2*% +D10* +X40436704Y-32675580D02* +X40436704Y-33485104D01* +X40389085Y-33580342D01* +X40341466Y-33627961D01* +X40246228Y-33675580D01* +X40055752Y-33675580D01* +X39960514Y-33627961D01* +X39912895Y-33580342D01* +X39865276Y-33485104D01* +X39865276Y-32675580D01* +X39436704Y-32770819D02* +X39389085Y-32723200D01* +X39293847Y-32675580D01* +X39055752Y-32675580D01* +X38960514Y-32723200D01* +X38912895Y-32770819D01* +X38865276Y-32866057D01* +X38865276Y-32961295D01* +X38912895Y-33104152D01* +X39484323Y-33675580D01* +X38865276Y-33675580D01* +X42273219Y-40127180D02* +X42749409Y-40127180D01* +X42749409Y-39127180D01* +X42082742Y-39127180D02* +X41511314Y-39127180D01* +X41797028Y-40127180D02* +X41797028Y-39127180D01* +X41320838Y-39127180D02* +X40987504Y-40127180D01* +X40654171Y-39127180D01* +X40320838Y-39746228D02* +X39558933Y-39746228D01* +X38939885Y-39555752D02* +X39035123Y-39508133D01* +X39082742Y-39460514D01* +X39130361Y-39365276D01* +X39130361Y-39317657D01* +X39082742Y-39222419D01* +X39035123Y-39174800D01* +X38939885Y-39127180D01* +X38749409Y-39127180D01* +X38654171Y-39174800D01* +X38606552Y-39222419D01* +X38558933Y-39317657D01* +X38558933Y-39365276D01* +X38606552Y-39460514D01* +X38654171Y-39508133D01* +X38749409Y-39555752D01* +X38939885Y-39555752D01* +X39035123Y-39603371D01* +X39082742Y-39650990D01* +X39130361Y-39746228D01* +X39130361Y-39936704D01* +X39082742Y-40031942D01* +X39035123Y-40079561D01* +X38939885Y-40127180D01* +X38749409Y-40127180D01* +X38654171Y-40079561D01* +X38606552Y-40031942D01* +X38558933Y-39936704D01* +X38558933Y-39746228D01* +X38606552Y-39650990D01* +X38654171Y-39603371D01* +X38749409Y-39555752D01* +X37606552Y-40127180D02* +X38177980Y-40127180D01* +X37892266Y-40127180D02* +X37892266Y-39127180D01* +X37987504Y-39270038D01* +X38082742Y-39365276D01* +X38177980Y-39412895D01* +X36749409Y-39460514D02* +X36749409Y-40127180D01* +X36987504Y-39079561D02* +X37225600Y-39793847D01* +X36606552Y-39793847D01* +%TO.C,R15*% +X54316314Y-66259743D02* +X54843084Y-66014017D01* +X54811185Y-66545458D02* +X55311185Y-65679432D01* +X54981271Y-65488956D01* +X54874983Y-65482576D01* +X54809934Y-65500006D01* +X54721076Y-65558675D01* +X54649647Y-65682393D01* +X54643267Y-65788681D01* +X54660697Y-65853730D01* +X54719366Y-65942589D01* +X55049281Y-66133065D01* +X53491528Y-65783553D02* +X53986399Y-66069267D01* +X53738963Y-65926410D02* +X54238963Y-65060385D01* +X54250013Y-65231722D01* +X54284873Y-65361819D01* +X54343542Y-65450678D01* +X53207981Y-64465147D02* +X53620374Y-64703242D01* +X53423518Y-65139444D01* +X53406088Y-65074396D01* +X53347419Y-64985537D01* +X53141222Y-64866490D01* +X53034934Y-64860110D01* +X52969886Y-64877540D01* +X52881027Y-64936209D01* +X52761980Y-65142405D01* +X52755600Y-65248693D01* +X52773030Y-65313742D01* +X52831699Y-65402601D01* +X53037895Y-65521648D01* +X53144183Y-65528028D01* +X53209232Y-65510598D01* +%TO.C,R13*% +X29929657Y-31245980D02* +X30262990Y-30769790D01* +X30501085Y-31245980D02* +X30501085Y-30245980D01* +X30120133Y-30245980D01* +X30024895Y-30293600D01* +X29977276Y-30341219D01* +X29929657Y-30436457D01* +X29929657Y-30579314D01* +X29977276Y-30674552D01* +X30024895Y-30722171D01* +X30120133Y-30769790D01* +X30501085Y-30769790D01* +X28977276Y-31245980D02* +X29548704Y-31245980D01* +X29262990Y-31245980D02* +X29262990Y-30245980D01* +X29358228Y-30388838D01* +X29453466Y-30484076D01* +X29548704Y-30531695D01* +X28643942Y-30245980D02* +X28024895Y-30245980D01* +X28358228Y-30626933D01* +X28215371Y-30626933D01* +X28120133Y-30674552D01* +X28072514Y-30722171D01* +X28024895Y-30817409D01* +X28024895Y-31055504D01* +X28072514Y-31150742D01* +X28120133Y-31198361D01* +X28215371Y-31245980D01* +X28501085Y-31245980D01* +X28596323Y-31198361D01* +X28643942Y-31150742D01* +%TO.C,R12*% +X29877657Y-36325980D02* +X30210990Y-35849790D01* +X30449085Y-36325980D02* +X30449085Y-35325980D01* +X30068133Y-35325980D01* +X29972895Y-35373600D01* +X29925276Y-35421219D01* +X29877657Y-35516457D01* +X29877657Y-35659314D01* +X29925276Y-35754552D01* +X29972895Y-35802171D01* +X30068133Y-35849790D01* +X30449085Y-35849790D01* +X28925276Y-36325980D02* +X29496704Y-36325980D01* +X29210990Y-36325980D02* +X29210990Y-35325980D01* +X29306228Y-35468838D01* +X29401466Y-35564076D01* +X29496704Y-35611695D01* +X28544323Y-35421219D02* +X28496704Y-35373600D01* +X28401466Y-35325980D01* +X28163371Y-35325980D01* +X28068133Y-35373600D01* +X28020514Y-35421219D01* +X27972895Y-35516457D01* +X27972895Y-35611695D01* +X28020514Y-35754552D01* +X28591942Y-36325980D01* +X27972895Y-36325980D01* +%TO.C,R9*% +X51373066Y-38527980D02* +X51706400Y-38051790D01* +X51944495Y-38527980D02* +X51944495Y-37527980D01* +X51563542Y-37527980D01* +X51468304Y-37575600D01* +X51420685Y-37623219D01* +X51373066Y-37718457D01* +X51373066Y-37861314D01* +X51420685Y-37956552D01* +X51468304Y-38004171D01* +X51563542Y-38051790D01* +X51944495Y-38051790D01* +X50896876Y-38527980D02* +X50706400Y-38527980D01* +X50611161Y-38480361D01* +X50563542Y-38432742D01* +X50468304Y-38289885D01* +X50420685Y-38099409D01* +X50420685Y-37718457D01* +X50468304Y-37623219D01* +X50515923Y-37575600D01* +X50611161Y-37527980D01* +X50801638Y-37527980D01* +X50896876Y-37575600D01* +X50944495Y-37623219D01* +X50992114Y-37718457D01* +X50992114Y-37956552D01* +X50944495Y-38051790D01* +X50896876Y-38099409D01* +X50801638Y-38147028D01* +X50611161Y-38147028D01* +X50515923Y-38099409D01* +X50468304Y-38051790D01* +X50420685Y-37956552D01* +%TO.C,R5*% +X85975180Y-50988933D02* +X85498990Y-50655600D01* +X85975180Y-50417504D02* +X84975180Y-50417504D01* +X84975180Y-50798457D01* +X85022800Y-50893695D01* +X85070419Y-50941314D01* +X85165657Y-50988933D01* +X85308514Y-50988933D01* +X85403752Y-50941314D01* +X85451371Y-50893695D01* +X85498990Y-50798457D01* +X85498990Y-50417504D01* +X84975180Y-51893695D02* +X84975180Y-51417504D01* +X85451371Y-51369885D01* +X85403752Y-51417504D01* +X85356133Y-51512742D01* +X85356133Y-51750838D01* +X85403752Y-51846076D01* +X85451371Y-51893695D01* +X85546609Y-51941314D01* +X85784704Y-51941314D01* +X85879942Y-51893695D01* +X85927561Y-51846076D01* +X85975180Y-51750838D01* +X85975180Y-51512742D01* +X85927561Y-51417504D01* +X85879942Y-51369885D01* +%TO.C,R4*% +X73502780Y-56932533D02* +X73026590Y-56599200D01* +X73502780Y-56361104D02* +X72502780Y-56361104D01* +X72502780Y-56742057D01* +X72550400Y-56837295D01* +X72598019Y-56884914D01* +X72693257Y-56932533D01* +X72836114Y-56932533D01* +X72931352Y-56884914D01* +X72978971Y-56837295D01* +X73026590Y-56742057D01* +X73026590Y-56361104D01* +X72836114Y-57789676D02* +X73502780Y-57789676D01* +X72455161Y-57551580D02* +X73169447Y-57313485D01* +X73169447Y-57932533D01* +%TO.C,R3*% +X71267580Y-56932533D02* +X70791390Y-56599200D01* +X71267580Y-56361104D02* +X70267580Y-56361104D01* +X70267580Y-56742057D01* +X70315200Y-56837295D01* +X70362819Y-56884914D01* +X70458057Y-56932533D01* +X70600914Y-56932533D01* +X70696152Y-56884914D01* +X70743771Y-56837295D01* +X70791390Y-56742057D01* +X70791390Y-56361104D01* +X70267580Y-57265866D02* +X70267580Y-57884914D01* +X70648533Y-57551580D01* +X70648533Y-57694438D01* +X70696152Y-57789676D01* +X70743771Y-57837295D01* +X70839009Y-57884914D01* +X71077104Y-57884914D01* +X71172342Y-57837295D01* +X71219961Y-57789676D01* +X71267580Y-57694438D01* +X71267580Y-57408723D01* +X71219961Y-57313485D01* +X71172342Y-57265866D01* +%TO.C,C6*% +X52731942Y-31634133D02* +X52779561Y-31586514D01* +X52827180Y-31443657D01* +X52827180Y-31348419D01* +X52779561Y-31205561D01* +X52684323Y-31110323D01* +X52589085Y-31062704D01* +X52398609Y-31015085D01* +X52255752Y-31015085D01* +X52065276Y-31062704D01* +X51970038Y-31110323D01* +X51874800Y-31205561D01* +X51827180Y-31348419D01* +X51827180Y-31443657D01* +X51874800Y-31586514D01* +X51922419Y-31634133D01* +X51827180Y-32491276D02* +X51827180Y-32300800D01* +X51874800Y-32205561D01* +X51922419Y-32157942D01* +X52065276Y-32062704D01* +X52255752Y-32015085D01* +X52636704Y-32015085D01* +X52731942Y-32062704D01* +X52779561Y-32110323D01* +X52827180Y-32205561D01* +X52827180Y-32396038D01* +X52779561Y-32491276D01* +X52731942Y-32538895D01* +X52636704Y-32586514D01* +X52398609Y-32586514D01* +X52303371Y-32538895D01* +X52255752Y-32491276D01* +X52208133Y-32396038D01* +X52208133Y-32205561D01* +X52255752Y-32110323D01* +X52303371Y-32062704D01* +X52398609Y-32015085D01* +%TO.C,C5*% +X50496742Y-31634133D02* +X50544361Y-31586514D01* +X50591980Y-31443657D01* +X50591980Y-31348419D01* +X50544361Y-31205561D01* +X50449123Y-31110323D01* +X50353885Y-31062704D01* +X50163409Y-31015085D01* +X50020552Y-31015085D01* +X49830076Y-31062704D01* +X49734838Y-31110323D01* +X49639600Y-31205561D01* +X49591980Y-31348419D01* +X49591980Y-31443657D01* +X49639600Y-31586514D01* +X49687219Y-31634133D01* +X49591980Y-32538895D02* +X49591980Y-32062704D01* +X50068171Y-32015085D01* +X50020552Y-32062704D01* +X49972933Y-32157942D01* +X49972933Y-32396038D01* +X50020552Y-32491276D01* +X50068171Y-32538895D01* +X50163409Y-32586514D01* +X50401504Y-32586514D01* +X50496742Y-32538895D01* +X50544361Y-32491276D01* +X50591980Y-32396038D01* +X50591980Y-32157942D01* +X50544361Y-32062704D01* +X50496742Y-32015085D01* +%TO.C,C4*% +X79922666Y-55170342D02* +X79970285Y-55217961D01* +X80113142Y-55265580D01* +X80208380Y-55265580D01* +X80351238Y-55217961D01* +X80446476Y-55122723D01* +X80494095Y-55027485D01* +X80541714Y-54837009D01* +X80541714Y-54694152D01* +X80494095Y-54503676D01* +X80446476Y-54408438D01* +X80351238Y-54313200D01* +X80208380Y-54265580D01* +X80113142Y-54265580D01* +X79970285Y-54313200D01* +X79922666Y-54360819D01* +X79065523Y-54598914D02* +X79065523Y-55265580D01* +X79303619Y-54217961D02* +X79541714Y-54932247D01* +X78922666Y-54932247D01* +%TO.C,C3*% +X79871866Y-57608742D02* +X79919485Y-57656361D01* +X80062342Y-57703980D01* +X80157580Y-57703980D01* +X80300438Y-57656361D01* +X80395676Y-57561123D01* +X80443295Y-57465885D01* +X80490914Y-57275409D01* +X80490914Y-57132552D01* +X80443295Y-56942076D01* +X80395676Y-56846838D01* +X80300438Y-56751600D01* +X80157580Y-56703980D01* +X80062342Y-56703980D01* +X79919485Y-56751600D01* +X79871866Y-56799219D01* +X79538533Y-56703980D02* +X78919485Y-56703980D01* +X79252819Y-57084933D01* +X79109961Y-57084933D01* +X79014723Y-57132552D01* +X78967104Y-57180171D01* +X78919485Y-57275409D01* +X78919485Y-57513504D01* +X78967104Y-57608742D01* +X79014723Y-57656361D01* +X79109961Y-57703980D01* +X79395676Y-57703980D01* +X79490914Y-57656361D01* +X79538533Y-57608742D01* +%TO.C,C2*% +X84240667Y-71781942D02* +X84288286Y-71829561D01* +X84431143Y-71877180D01* +X84526381Y-71877180D01* +X84669239Y-71829561D01* +X84764477Y-71734323D01* +X84812096Y-71639085D01* +X84859715Y-71448609D01* +X84859715Y-71305752D01* +X84812096Y-71115276D01* +X84764477Y-71020038D01* +X84669239Y-70924800D01* +X84526381Y-70877180D01* +X84431143Y-70877180D01* +X84288286Y-70924800D01* +X84240667Y-70972419D01* +X83859715Y-70972419D02* +X83812096Y-70924800D01* +X83716858Y-70877180D01* +X83478762Y-70877180D01* +X83383524Y-70924800D01* +X83335905Y-70972419D01* +X83288286Y-71067657D01* +X83288286Y-71162895D01* +X83335905Y-71305752D01* +X83907334Y-71877180D01* +X83288286Y-71877180D01* +%TO.C,C1*% +X80269313Y-71791818D02* +X80316932Y-71839437D01* +X80459789Y-71887056D01* +X80555027Y-71887056D01* +X80697885Y-71839437D01* +X80793123Y-71744199D01* +X80840742Y-71648961D01* +X80888361Y-71458485D01* +X80888361Y-71315628D01* +X80840742Y-71125152D01* +X80793123Y-71029914D01* +X80697885Y-70934676D01* +X80555027Y-70887056D01* +X80459789Y-70887056D01* +X80316932Y-70934676D01* +X80269313Y-70982295D01* +X79316932Y-71887056D02* +X79888361Y-71887056D01* +X79602647Y-71887056D02* +X79602647Y-70887056D01* +X79697885Y-71029914D01* +X79793123Y-71125152D01* +X79888361Y-71172771D01* +%TD*% +M02* diff --git a/kicad/gerber/filadry2-Edge_Cuts.gbr b/kicad/gerber/filadry2-Edge_Cuts.gbr new file mode 100644 index 0000000..0557521 --- /dev/null +++ b/kicad/gerber/filadry2-Edge_Cuts.gbr @@ -0,0 +1,32 @@ +%TF.GenerationSoftware,KiCad,Pcbnew,(5.1.9)-1*% +%TF.CreationDate,2021-12-25T05:37:13+03:00*% +%TF.ProjectId,filadry2,66696c61-6472-4793-922e-6b696361645f,rev?*% +%TF.SameCoordinates,Original*% +%TF.FileFunction,Profile,NP*% +%FSLAX46Y46*% +G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)* +G04 Created by KiCad (PCBNEW (5.1.9)-1) date 2021-12-25 05:37:13* +%MOMM*% +%LPD*% +G01* +G04 APERTURE LIST* +%TA.AperFunction,Profile*% +%ADD10C,0.050000*% +%TD*% +G04 APERTURE END LIST* +D10* +X64563408Y-90208727D02* +X103963945Y-59425653D01* +X103963945Y-59425653D02* +G75* +G03* +X20040800Y-18493600I-83923145J-65567947D01* +G01* +X64563408Y-90208727D02* +G75* +G03* +X20040800Y-68493600I-44522608J-34784873D01* +G01* +X20040800Y-68493600D02* +X20040800Y-18493600D01* +M02* diff --git a/kicad/gerber/filadry2-F_Cu.gbr b/kicad/gerber/filadry2-F_Cu.gbr new file mode 100644 index 0000000..c9ac2d7 --- /dev/null +++ b/kicad/gerber/filadry2-F_Cu.gbr @@ -0,0 +1,8931 @@ +%TF.GenerationSoftware,KiCad,Pcbnew,(5.1.9)-1*% +%TF.CreationDate,2021-12-25T05:37:13+03:00*% +%TF.ProjectId,filadry2,66696c61-6472-4793-922e-6b696361645f,rev?*% +%TF.SameCoordinates,Original*% +%TF.FileFunction,Copper,L1,Top*% +%TF.FilePolarity,Positive*% +%FSLAX46Y46*% +G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)* +G04 Created by KiCad (PCBNEW (5.1.9)-1) date 2021-12-25 05:37:13* +%MOMM*% +%LPD*% +G01* +G04 APERTURE LIST* +%TA.AperFunction,ComponentPad*% +%ADD10C,2.300000*% +%TD*% +%TA.AperFunction,ComponentPad*% +%ADD11R,2.300000X2.000000*% +%TD*% +%TA.AperFunction,ComponentPad*% +%ADD12C,1.600000*% +%TD*% +%TA.AperFunction,ComponentPad*% +%ADD13O,2.400000X1.600000*% +%TD*% +%TA.AperFunction,ComponentPad*% +%ADD14R,2.400000X1.600000*% +%TD*% +%TA.AperFunction,ComponentPad*% +%ADD15C,0.100000*% +%TD*% +%TA.AperFunction,SMDPad,CuDef*% +%ADD16C,0.100000*% +%TD*% +%TA.AperFunction,ComponentPad*% +%ADD17R,2.600000X2.600000*% +%TD*% +%TA.AperFunction,ComponentPad*% +%ADD18C,2.600000*% +%TD*% +%TA.AperFunction,SMDPad,CuDef*% +%ADD19R,2.400000X0.740000*% +%TD*% +%TA.AperFunction,ComponentPad*% +%ADD20C,1.800000*% +%TD*% +%TA.AperFunction,ViaPad*% +%ADD21C,0.800000*% +%TD*% +%TA.AperFunction,Conductor*% +%ADD22C,0.300000*% +%TD*% +%TA.AperFunction,Conductor*% +%ADD23C,0.500000*% +%TD*% +%TA.AperFunction,Conductor*% +%ADD24C,0.700000*% +%TD*% +%TA.AperFunction,Conductor*% +%ADD25C,1.905000*% +%TD*% +%TA.AperFunction,Conductor*% +%ADD26C,0.254000*% +%TD*% +%TA.AperFunction,Conductor*% +%ADD27C,0.100000*% +%TD*% +G04 APERTURE END LIST* +D10* +%TO.P,PS1,4*% +%TO.N,+3V3*% +X52310800Y-42813600D03* +%TO.P,PS1,2*% +%TO.N,AC_N*% +X22910800Y-37613600D03* +D11* +%TO.P,PS1,1*% +%TO.N,AC_L*% +X22910800Y-32613600D03* +D10* +%TO.P,PS1,3*% +%TO.N,GND*% +X52310800Y-27413600D03* +%TD*% +D12* +%TO.P,Y1,2*% +%TO.N,Net-(C2-Pad1)*% +X84584646Y-67214675D03* +%TO.P,Y1,1*% +%TO.N,Net-(C1-Pad1)*% +X79684646Y-67214675D03* +%TD*% +D13* +%TO.P,U4,6*% +%TO.N,Net-(R11-Pad2)*% +X63550800Y-69697600D03* +%TO.P,U4,3*% +%TO.N,Net-(U4-Pad3)*% +X71170800Y-64617600D03* +%TO.P,U4,5*% +%TO.N,Net-(U4-Pad5)*% +X63550800Y-67157600D03* +%TO.P,U4,2*% +%TO.N,GND*% +X71170800Y-67157600D03* +%TO.P,U4,4*% +%TO.N,Net-(Q3-Pad3)*% +X63550800Y-64617600D03* +D14* +%TO.P,U4,1*% +%TO.N,Net-(R8-Pad1)*% +X71170800Y-69697600D03* +%TD*% +D13* +%TO.P,U3,6*% +%TO.N,Net-(R10-Pad2)*% +X59232800Y-52171600D03* +%TO.P,U3,3*% +%TO.N,Net-(U3-Pad3)*% +X66852800Y-47091600D03* +%TO.P,U3,5*% +%TO.N,Net-(U3-Pad5)*% +X59232800Y-49631600D03* +%TO.P,U3,2*% +%TO.N,GND*% +X66852800Y-49631600D03* +%TO.P,U3,4*% +%TO.N,Net-(Q2-Pad3)*% +X59232800Y-47091600D03* +D14* +%TO.P,U3,1*% +%TO.N,Net-(R7-Pad1)*% +X66852800Y-52171600D03* +%TD*% +%TO.P,U1,64*% +%TO.N,Net-(U1-Pad64)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X72545800Y-58611600D02* +X71145800Y-58611600D01* +G75* +G02* +X71070800Y-58536600I0J75000D01* +G01* +X71070800Y-58386600D01* +G75* +G02* +X71145800Y-58311600I75000J0D01* +G01* +X72545800Y-58311600D01* +G75* +G02* +X72620800Y-58386600I0J-75000D01* +G01* +X72620800Y-58536600D01* +G75* +G02* +X72545800Y-58611600I-75000J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,U1,63*% +%TO.N,BME_SDA*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X72545800Y-58111600D02* +X71145800Y-58111600D01* +G75* +G02* +X71070800Y-58036600I0J75000D01* +G01* +X71070800Y-57886600D01* +G75* +G02* +X71145800Y-57811600I75000J0D01* +G01* +X72545800Y-57811600D01* +G75* +G02* +X72620800Y-57886600I0J-75000D01* +G01* +X72620800Y-58036600D01* +G75* +G02* +X72545800Y-58111600I-75000J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,U1,62*% +%TO.N,BME_SCL*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X72545800Y-57611600D02* +X71145800Y-57611600D01* +G75* +G02* +X71070800Y-57536600I0J75000D01* +G01* +X71070800Y-57386600D01* +G75* +G02* +X71145800Y-57311600I75000J0D01* +G01* +X72545800Y-57311600D01* +G75* +G02* +X72620800Y-57386600I0J-75000D01* +G01* +X72620800Y-57536600D01* +G75* +G02* +X72545800Y-57611600I-75000J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,U1,61*% +%TO.N,Net-(U1-Pad61)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X72545800Y-57111600D02* +X71145800Y-57111600D01* +G75* +G02* +X71070800Y-57036600I0J75000D01* +G01* +X71070800Y-56886600D01* +G75* +G02* +X71145800Y-56811600I75000J0D01* +G01* +X72545800Y-56811600D01* +G75* +G02* +X72620800Y-56886600I0J-75000D01* +G01* +X72620800Y-57036600D01* +G75* +G02* +X72545800Y-57111600I-75000J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,U1,60*% +%TO.N,Net-(U1-Pad60)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X72545800Y-56611600D02* +X71145800Y-56611600D01* +G75* +G02* +X71070800Y-56536600I0J75000D01* +G01* +X71070800Y-56386600D01* +G75* +G02* +X71145800Y-56311600I75000J0D01* +G01* +X72545800Y-56311600D01* +G75* +G02* +X72620800Y-56386600I0J-75000D01* +G01* +X72620800Y-56536600D01* +G75* +G02* +X72545800Y-56611600I-75000J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,U1,59*% +%TO.N,Gate_Fan*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X72545800Y-56111600D02* +X71145800Y-56111600D01* +G75* +G02* +X71070800Y-56036600I0J75000D01* +G01* +X71070800Y-55886600D01* +G75* +G02* +X71145800Y-55811600I75000J0D01* +G01* +X72545800Y-55811600D01* +G75* +G02* +X72620800Y-55886600I0J-75000D01* +G01* +X72620800Y-56036600D01* +G75* +G02* +X72545800Y-56111600I-75000J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,U1,58*% +%TO.N,Gate_Heater*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X72545800Y-55611600D02* +X71145800Y-55611600D01* +G75* +G02* +X71070800Y-55536600I0J75000D01* +G01* +X71070800Y-55386600D01* +G75* +G02* +X71145800Y-55311600I75000J0D01* +G01* +X72545800Y-55311600D01* +G75* +G02* +X72620800Y-55386600I0J-75000D01* +G01* +X72620800Y-55536600D01* +G75* +G02* +X72545800Y-55611600I-75000J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,U1,57*% +%TO.N,Net-(U1-Pad57)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X72545800Y-55111600D02* +X71145800Y-55111600D01* +G75* +G02* +X71070800Y-55036600I0J75000D01* +G01* +X71070800Y-54886600D01* +G75* +G02* +X71145800Y-54811600I75000J0D01* +G01* +X72545800Y-54811600D01* +G75* +G02* +X72620800Y-54886600I0J-75000D01* +G01* +X72620800Y-55036600D01* +G75* +G02* +X72545800Y-55111600I-75000J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,U1,56*% +%TO.N,Net-(U1-Pad56)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X72545800Y-54611600D02* +X71145800Y-54611600D01* +G75* +G02* +X71070800Y-54536600I0J75000D01* +G01* +X71070800Y-54386600D01* +G75* +G02* +X71145800Y-54311600I75000J0D01* +G01* +X72545800Y-54311600D01* +G75* +G02* +X72620800Y-54386600I0J-75000D01* +G01* +X72620800Y-54536600D01* +G75* +G02* +X72545800Y-54611600I-75000J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,U1,55*% +%TO.N,Net-(U1-Pad55)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X72545800Y-54111600D02* +X71145800Y-54111600D01* +G75* +G02* +X71070800Y-54036600I0J75000D01* +G01* +X71070800Y-53886600D01* +G75* +G02* +X71145800Y-53811600I75000J0D01* +G01* +X72545800Y-53811600D01* +G75* +G02* +X72620800Y-53886600I0J-75000D01* +G01* +X72620800Y-54036600D01* +G75* +G02* +X72545800Y-54111600I-75000J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,U1,54*% +%TO.N,Net-(U1-Pad54)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X72545800Y-53611600D02* +X71145800Y-53611600D01* +G75* +G02* +X71070800Y-53536600I0J75000D01* +G01* +X71070800Y-53386600D01* +G75* +G02* +X71145800Y-53311600I75000J0D01* +G01* +X72545800Y-53311600D01* +G75* +G02* +X72620800Y-53386600I0J-75000D01* +G01* +X72620800Y-53536600D01* +G75* +G02* +X72545800Y-53611600I-75000J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,U1,53*% +%TO.N,Net-(U1-Pad53)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X72545800Y-53111600D02* +X71145800Y-53111600D01* +G75* +G02* +X71070800Y-53036600I0J75000D01* +G01* +X71070800Y-52886600D01* +G75* +G02* +X71145800Y-52811600I75000J0D01* +G01* +X72545800Y-52811600D01* +G75* +G02* +X72620800Y-52886600I0J-75000D01* +G01* +X72620800Y-53036600D01* +G75* +G02* +X72545800Y-53111600I-75000J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,U1,52*% +%TO.N,ZeroCross*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X72545800Y-52611600D02* +X71145800Y-52611600D01* +G75* +G02* +X71070800Y-52536600I0J75000D01* +G01* +X71070800Y-52386600D01* +G75* +G02* +X71145800Y-52311600I75000J0D01* +G01* +X72545800Y-52311600D01* +G75* +G02* +X72620800Y-52386600I0J-75000D01* +G01* +X72620800Y-52536600D01* +G75* +G02* +X72545800Y-52611600I-75000J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,U1,51*% +%TO.N,Net-(U1-Pad51)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X72545800Y-52111600D02* +X71145800Y-52111600D01* +G75* +G02* +X71070800Y-52036600I0J75000D01* +G01* +X71070800Y-51886600D01* +G75* +G02* +X71145800Y-51811600I75000J0D01* +G01* +X72545800Y-51811600D01* +G75* +G02* +X72620800Y-51886600I0J-75000D01* +G01* +X72620800Y-52036600D01* +G75* +G02* +X72545800Y-52111600I-75000J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,U1,50*% +%TO.N,Net-(U1-Pad50)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X72545800Y-51611600D02* +X71145800Y-51611600D01* +G75* +G02* +X71070800Y-51536600I0J75000D01* +G01* +X71070800Y-51386600D01* +G75* +G02* +X71145800Y-51311600I75000J0D01* +G01* +X72545800Y-51311600D01* +G75* +G02* +X72620800Y-51386600I0J-75000D01* +G01* +X72620800Y-51536600D01* +G75* +G02* +X72545800Y-51611600I-75000J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,U1,49*% +%TO.N,Net-(U1-Pad49)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X72545800Y-51111600D02* +X71145800Y-51111600D01* +G75* +G02* +X71070800Y-51036600I0J75000D01* +G01* +X71070800Y-50886600D01* +G75* +G02* +X71145800Y-50811600I75000J0D01* +G01* +X72545800Y-50811600D01* +G75* +G02* +X72620800Y-50886600I0J-75000D01* +G01* +X72620800Y-51036600D01* +G75* +G02* +X72545800Y-51111600I-75000J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,U1,48*% +%TO.N,Net-(U1-Pad48)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X73845800Y-49811600D02* +X73695800Y-49811600D01* +G75* +G02* +X73620800Y-49736600I0J75000D01* +G01* +X73620800Y-48336600D01* +G75* +G02* +X73695800Y-48261600I75000J0D01* +G01* +X73845800Y-48261600D01* +G75* +G02* +X73920800Y-48336600I0J-75000D01* +G01* +X73920800Y-49736600D01* +G75* +G02* +X73845800Y-49811600I-75000J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,U1,47*% +%TO.N,Net-(U1-Pad47)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X74345800Y-49811600D02* +X74195800Y-49811600D01* +G75* +G02* +X74120800Y-49736600I0J75000D01* +G01* +X74120800Y-48336600D01* +G75* +G02* +X74195800Y-48261600I75000J0D01* +G01* +X74345800Y-48261600D01* +G75* +G02* +X74420800Y-48336600I0J-75000D01* +G01* +X74420800Y-49736600D01* +G75* +G02* +X74345800Y-49811600I-75000J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,U1,46*% +%TO.N,SWCLK*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X74845800Y-49811600D02* +X74695800Y-49811600D01* +G75* +G02* +X74620800Y-49736600I0J75000D01* +G01* +X74620800Y-48336600D01* +G75* +G02* +X74695800Y-48261600I75000J0D01* +G01* +X74845800Y-48261600D01* +G75* +G02* +X74920800Y-48336600I0J-75000D01* +G01* +X74920800Y-49736600D01* +G75* +G02* +X74845800Y-49811600I-75000J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,U1,45*% +%TO.N,SWDIO*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X75345800Y-49811600D02* +X75195800Y-49811600D01* +G75* +G02* +X75120800Y-49736600I0J75000D01* +G01* +X75120800Y-48336600D01* +G75* +G02* +X75195800Y-48261600I75000J0D01* +G01* +X75345800Y-48261600D01* +G75* +G02* +X75420800Y-48336600I0J-75000D01* +G01* +X75420800Y-49736600D01* +G75* +G02* +X75345800Y-49811600I-75000J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,U1,44*% +%TO.N,Net-(U1-Pad44)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X75845800Y-49811600D02* +X75695800Y-49811600D01* +G75* +G02* +X75620800Y-49736600I0J75000D01* +G01* +X75620800Y-48336600D01* +G75* +G02* +X75695800Y-48261600I75000J0D01* +G01* +X75845800Y-48261600D01* +G75* +G02* +X75920800Y-48336600I0J-75000D01* +G01* +X75920800Y-49736600D01* +G75* +G02* +X75845800Y-49811600I-75000J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,U1,43*% +%TO.N,Net-(U1-Pad43)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X76345800Y-49811600D02* +X76195800Y-49811600D01* +G75* +G02* +X76120800Y-49736600I0J75000D01* +G01* +X76120800Y-48336600D01* +G75* +G02* +X76195800Y-48261600I75000J0D01* +G01* +X76345800Y-48261600D01* +G75* +G02* +X76420800Y-48336600I0J-75000D01* +G01* +X76420800Y-49736600D01* +G75* +G02* +X76345800Y-49811600I-75000J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,U1,42*% +%TO.N,Net-(U1-Pad42)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X76845800Y-49811600D02* +X76695800Y-49811600D01* +G75* +G02* +X76620800Y-49736600I0J75000D01* +G01* +X76620800Y-48336600D01* +G75* +G02* +X76695800Y-48261600I75000J0D01* +G01* +X76845800Y-48261600D01* +G75* +G02* +X76920800Y-48336600I0J-75000D01* +G01* +X76920800Y-49736600D01* +G75* +G02* +X76845800Y-49811600I-75000J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,U1,41*% +%TO.N,Net-(U1-Pad41)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X77345800Y-49811600D02* +X77195800Y-49811600D01* +G75* +G02* +X77120800Y-49736600I0J75000D01* +G01* +X77120800Y-48336600D01* +G75* +G02* +X77195800Y-48261600I75000J0D01* +G01* +X77345800Y-48261600D01* +G75* +G02* +X77420800Y-48336600I0J-75000D01* +G01* +X77420800Y-49736600D01* +G75* +G02* +X77345800Y-49811600I-75000J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,U1,40*% +%TO.N,Net-(U1-Pad40)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X77845800Y-49811600D02* +X77695800Y-49811600D01* +G75* +G02* +X77620800Y-49736600I0J75000D01* +G01* +X77620800Y-48336600D01* +G75* +G02* +X77695800Y-48261600I75000J0D01* +G01* +X77845800Y-48261600D01* +G75* +G02* +X77920800Y-48336600I0J-75000D01* +G01* +X77920800Y-49736600D01* +G75* +G02* +X77845800Y-49811600I-75000J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,U1,39*% +%TO.N,Net-(U1-Pad39)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X78345800Y-49811600D02* +X78195800Y-49811600D01* +G75* +G02* +X78120800Y-49736600I0J75000D01* +G01* +X78120800Y-48336600D01* +G75* +G02* +X78195800Y-48261600I75000J0D01* +G01* +X78345800Y-48261600D01* +G75* +G02* +X78420800Y-48336600I0J-75000D01* +G01* +X78420800Y-49736600D01* +G75* +G02* +X78345800Y-49811600I-75000J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,U1,38*% +%TO.N,Net-(U1-Pad38)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X78845800Y-49811600D02* +X78695800Y-49811600D01* +G75* +G02* +X78620800Y-49736600I0J75000D01* +G01* +X78620800Y-48336600D01* +G75* +G02* +X78695800Y-48261600I75000J0D01* +G01* +X78845800Y-48261600D01* +G75* +G02* +X78920800Y-48336600I0J-75000D01* +G01* +X78920800Y-49736600D01* +G75* +G02* +X78845800Y-49811600I-75000J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,U1,37*% +%TO.N,Net-(U1-Pad37)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X79345800Y-49811600D02* +X79195800Y-49811600D01* +G75* +G02* +X79120800Y-49736600I0J75000D01* +G01* +X79120800Y-48336600D01* +G75* +G02* +X79195800Y-48261600I75000J0D01* +G01* +X79345800Y-48261600D01* +G75* +G02* +X79420800Y-48336600I0J-75000D01* +G01* +X79420800Y-49736600D01* +G75* +G02* +X79345800Y-49811600I-75000J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,U1,36*% +%TO.N,Net-(U1-Pad36)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X79845800Y-49811600D02* +X79695800Y-49811600D01* +G75* +G02* +X79620800Y-49736600I0J75000D01* +G01* +X79620800Y-48336600D01* +G75* +G02* +X79695800Y-48261600I75000J0D01* +G01* +X79845800Y-48261600D01* +G75* +G02* +X79920800Y-48336600I0J-75000D01* +G01* +X79920800Y-49736600D01* +G75* +G02* +X79845800Y-49811600I-75000J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,U1,35*% +%TO.N,Net-(U1-Pad35)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X80345800Y-49811600D02* +X80195800Y-49811600D01* +G75* +G02* +X80120800Y-49736600I0J75000D01* +G01* +X80120800Y-48336600D01* +G75* +G02* +X80195800Y-48261600I75000J0D01* +G01* +X80345800Y-48261600D01* +G75* +G02* +X80420800Y-48336600I0J-75000D01* +G01* +X80420800Y-49736600D01* +G75* +G02* +X80345800Y-49811600I-75000J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,U1,34*% +%TO.N,Net-(U1-Pad34)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X80845800Y-49811600D02* +X80695800Y-49811600D01* +G75* +G02* +X80620800Y-49736600I0J75000D01* +G01* +X80620800Y-48336600D01* +G75* +G02* +X80695800Y-48261600I75000J0D01* +G01* +X80845800Y-48261600D01* +G75* +G02* +X80920800Y-48336600I0J-75000D01* +G01* +X80920800Y-49736600D01* +G75* +G02* +X80845800Y-49811600I-75000J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,U1,33*% +%TO.N,Net-(U1-Pad33)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X81345800Y-49811600D02* +X81195800Y-49811600D01* +G75* +G02* +X81120800Y-49736600I0J75000D01* +G01* +X81120800Y-48336600D01* +G75* +G02* +X81195800Y-48261600I75000J0D01* +G01* +X81345800Y-48261600D01* +G75* +G02* +X81420800Y-48336600I0J-75000D01* +G01* +X81420800Y-49736600D01* +G75* +G02* +X81345800Y-49811600I-75000J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,U1,32*% +%TO.N,Net-(U1-Pad32)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X83895800Y-51111600D02* +X82495800Y-51111600D01* +G75* +G02* +X82420800Y-51036600I0J75000D01* +G01* +X82420800Y-50886600D01* +G75* +G02* +X82495800Y-50811600I75000J0D01* +G01* +X83895800Y-50811600D01* +G75* +G02* +X83970800Y-50886600I0J-75000D01* +G01* +X83970800Y-51036600D01* +G75* +G02* +X83895800Y-51111600I-75000J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,U1,31*% +%TO.N,OLED_SDA*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X83895800Y-51611600D02* +X82495800Y-51611600D01* +G75* +G02* +X82420800Y-51536600I0J75000D01* +G01* +X82420800Y-51386600D01* +G75* +G02* +X82495800Y-51311600I75000J0D01* +G01* +X83895800Y-51311600D01* +G75* +G02* +X83970800Y-51386600I0J-75000D01* +G01* +X83970800Y-51536600D01* +G75* +G02* +X83895800Y-51611600I-75000J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,U1,30*% +%TO.N,OLED_SCL*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X83895800Y-52111600D02* +X82495800Y-52111600D01* +G75* +G02* +X82420800Y-52036600I0J75000D01* +G01* +X82420800Y-51886600D01* +G75* +G02* +X82495800Y-51811600I75000J0D01* +G01* +X83895800Y-51811600D01* +G75* +G02* +X83970800Y-51886600I0J-75000D01* +G01* +X83970800Y-52036600D01* +G75* +G02* +X83895800Y-52111600I-75000J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,U1,29*% +%TO.N,KEY_UP*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X83895800Y-52611600D02* +X82495800Y-52611600D01* +G75* +G02* +X82420800Y-52536600I0J75000D01* +G01* +X82420800Y-52386600D01* +G75* +G02* +X82495800Y-52311600I75000J0D01* +G01* +X83895800Y-52311600D01* +G75* +G02* +X83970800Y-52386600I0J-75000D01* +G01* +X83970800Y-52536600D01* +G75* +G02* +X83895800Y-52611600I-75000J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,U1,28*% +%TO.N,KEY_OK*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X83895800Y-53111600D02* +X82495800Y-53111600D01* +G75* +G02* +X82420800Y-53036600I0J75000D01* +G01* +X82420800Y-52886600D01* +G75* +G02* +X82495800Y-52811600I75000J0D01* +G01* +X83895800Y-52811600D01* +G75* +G02* +X83970800Y-52886600I0J-75000D01* +G01* +X83970800Y-53036600D01* +G75* +G02* +X83895800Y-53111600I-75000J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,U1,27*% +%TO.N,KEY_DN*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X83895800Y-53611600D02* +X82495800Y-53611600D01* +G75* +G02* +X82420800Y-53536600I0J75000D01* +G01* +X82420800Y-53386600D01* +G75* +G02* +X82495800Y-53311600I75000J0D01* +G01* +X83895800Y-53311600D01* +G75* +G02* +X83970800Y-53386600I0J-75000D01* +G01* +X83970800Y-53536600D01* +G75* +G02* +X83895800Y-53611600I-75000J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,U1,26*% +%TO.N,Net-(U1-Pad26)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X83895800Y-54111600D02* +X82495800Y-54111600D01* +G75* +G02* +X82420800Y-54036600I0J75000D01* +G01* +X82420800Y-53886600D01* +G75* +G02* +X82495800Y-53811600I75000J0D01* +G01* +X83895800Y-53811600D01* +G75* +G02* +X83970800Y-53886600I0J-75000D01* +G01* +X83970800Y-54036600D01* +G75* +G02* +X83895800Y-54111600I-75000J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,U1,25*% +%TO.N,Net-(U1-Pad25)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X83895800Y-54611600D02* +X82495800Y-54611600D01* +G75* +G02* +X82420800Y-54536600I0J75000D01* +G01* +X82420800Y-54386600D01* +G75* +G02* +X82495800Y-54311600I75000J0D01* +G01* +X83895800Y-54311600D01* +G75* +G02* +X83970800Y-54386600I0J-75000D01* +G01* +X83970800Y-54536600D01* +G75* +G02* +X83895800Y-54611600I-75000J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,U1,24*% +%TO.N,Buzzer*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X83895800Y-55111600D02* +X82495800Y-55111600D01* +G75* +G02* +X82420800Y-55036600I0J75000D01* +G01* +X82420800Y-54886600D01* +G75* +G02* +X82495800Y-54811600I75000J0D01* +G01* +X83895800Y-54811600D01* +G75* +G02* +X83970800Y-54886600I0J-75000D01* +G01* +X83970800Y-55036600D01* +G75* +G02* +X83895800Y-55111600I-75000J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,U1,23*% +%TO.N,Net-(U1-Pad23)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X83895800Y-55611600D02* +X82495800Y-55611600D01* +G75* +G02* +X82420800Y-55536600I0J75000D01* +G01* +X82420800Y-55386600D01* +G75* +G02* +X82495800Y-55311600I75000J0D01* +G01* +X83895800Y-55311600D01* +G75* +G02* +X83970800Y-55386600I0J-75000D01* +G01* +X83970800Y-55536600D01* +G75* +G02* +X83895800Y-55611600I-75000J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,U1,22*% +%TO.N,Net-(U1-Pad22)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X83895800Y-56111600D02* +X82495800Y-56111600D01* +G75* +G02* +X82420800Y-56036600I0J75000D01* +G01* +X82420800Y-55886600D01* +G75* +G02* +X82495800Y-55811600I75000J0D01* +G01* +X83895800Y-55811600D01* +G75* +G02* +X83970800Y-55886600I0J-75000D01* +G01* +X83970800Y-56036600D01* +G75* +G02* +X83895800Y-56111600I-75000J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,U1,21*% +%TO.N,Net-(U1-Pad21)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X83895800Y-56611600D02* +X82495800Y-56611600D01* +G75* +G02* +X82420800Y-56536600I0J75000D01* +G01* +X82420800Y-56386600D01* +G75* +G02* +X82495800Y-56311600I75000J0D01* +G01* +X83895800Y-56311600D01* +G75* +G02* +X83970800Y-56386600I0J-75000D01* +G01* +X83970800Y-56536600D01* +G75* +G02* +X83895800Y-56611600I-75000J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,U1,20*% +%TO.N,Net-(U1-Pad20)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X83895800Y-57111600D02* +X82495800Y-57111600D01* +G75* +G02* +X82420800Y-57036600I0J75000D01* +G01* +X82420800Y-56886600D01* +G75* +G02* +X82495800Y-56811600I75000J0D01* +G01* +X83895800Y-56811600D01* +G75* +G02* +X83970800Y-56886600I0J-75000D01* +G01* +X83970800Y-57036600D01* +G75* +G02* +X83895800Y-57111600I-75000J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,U1,19*% +%TO.N,Net-(U1-Pad19)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X83895800Y-57611600D02* +X82495800Y-57611600D01* +G75* +G02* +X82420800Y-57536600I0J75000D01* +G01* +X82420800Y-57386600D01* +G75* +G02* +X82495800Y-57311600I75000J0D01* +G01* +X83895800Y-57311600D01* +G75* +G02* +X83970800Y-57386600I0J-75000D01* +G01* +X83970800Y-57536600D01* +G75* +G02* +X83895800Y-57611600I-75000J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,U1,18*% +%TO.N,Net-(U1-Pad18)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X83895800Y-58111600D02* +X82495800Y-58111600D01* +G75* +G02* +X82420800Y-58036600I0J75000D01* +G01* +X82420800Y-57886600D01* +G75* +G02* +X82495800Y-57811600I75000J0D01* +G01* +X83895800Y-57811600D01* +G75* +G02* +X83970800Y-57886600I0J-75000D01* +G01* +X83970800Y-58036600D01* +G75* +G02* +X83895800Y-58111600I-75000J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,U1,17*% +%TO.N,Net-(U1-Pad17)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X83895800Y-58611600D02* +X82495800Y-58611600D01* +G75* +G02* +X82420800Y-58536600I0J75000D01* +G01* +X82420800Y-58386600D01* +G75* +G02* +X82495800Y-58311600I75000J0D01* +G01* +X83895800Y-58311600D01* +G75* +G02* +X83970800Y-58386600I0J-75000D01* +G01* +X83970800Y-58536600D01* +G75* +G02* +X83895800Y-58611600I-75000J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,U1,16*% +%TO.N,Net-(U1-Pad16)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X81345800Y-61161600D02* +X81195800Y-61161600D01* +G75* +G02* +X81120800Y-61086600I0J75000D01* +G01* +X81120800Y-59686600D01* +G75* +G02* +X81195800Y-59611600I75000J0D01* +G01* +X81345800Y-59611600D01* +G75* +G02* +X81420800Y-59686600I0J-75000D01* +G01* +X81420800Y-61086600D01* +G75* +G02* +X81345800Y-61161600I-75000J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,U1,15*% +%TO.N,Net-(U1-Pad15)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X80845800Y-61161600D02* +X80695800Y-61161600D01* +G75* +G02* +X80620800Y-61086600I0J75000D01* +G01* +X80620800Y-59686600D01* +G75* +G02* +X80695800Y-59611600I75000J0D01* +G01* +X80845800Y-59611600D01* +G75* +G02* +X80920800Y-59686600I0J-75000D01* +G01* +X80920800Y-61086600D01* +G75* +G02* +X80845800Y-61161600I-75000J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,U1,14*% +%TO.N,Net-(U1-Pad14)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X80345800Y-61161600D02* +X80195800Y-61161600D01* +G75* +G02* +X80120800Y-61086600I0J75000D01* +G01* +X80120800Y-59686600D01* +G75* +G02* +X80195800Y-59611600I75000J0D01* +G01* +X80345800Y-59611600D01* +G75* +G02* +X80420800Y-59686600I0J-75000D01* +G01* +X80420800Y-61086600D01* +G75* +G02* +X80345800Y-61161600I-75000J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,U1,13*% +%TO.N,Net-(U1-Pad13)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X79845800Y-61161600D02* +X79695800Y-61161600D01* +G75* +G02* +X79620800Y-61086600I0J75000D01* +G01* +X79620800Y-59686600D01* +G75* +G02* +X79695800Y-59611600I75000J0D01* +G01* +X79845800Y-59611600D01* +G75* +G02* +X79920800Y-59686600I0J-75000D01* +G01* +X79920800Y-61086600D01* +G75* +G02* +X79845800Y-61161600I-75000J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,U1,12*% +%TO.N,NRST*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X79345800Y-61161600D02* +X79195800Y-61161600D01* +G75* +G02* +X79120800Y-61086600I0J75000D01* +G01* +X79120800Y-59686600D01* +G75* +G02* +X79195800Y-59611600I75000J0D01* +G01* +X79345800Y-59611600D01* +G75* +G02* +X79420800Y-59686600I0J-75000D01* +G01* +X79420800Y-61086600D01* +G75* +G02* +X79345800Y-61161600I-75000J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,U1,11*% +%TO.N,Net-(R2-Pad1)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X78845800Y-61161600D02* +X78695800Y-61161600D01* +G75* +G02* +X78620800Y-61086600I0J75000D01* +G01* +X78620800Y-59686600D01* +G75* +G02* +X78695800Y-59611600I75000J0D01* +G01* +X78845800Y-59611600D01* +G75* +G02* +X78920800Y-59686600I0J-75000D01* +G01* +X78920800Y-61086600D01* +G75* +G02* +X78845800Y-61161600I-75000J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,U1,10*% +%TO.N,Net-(C1-Pad1)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X78345800Y-61161600D02* +X78195800Y-61161600D01* +G75* +G02* +X78120800Y-61086600I0J75000D01* +G01* +X78120800Y-59686600D01* +G75* +G02* +X78195800Y-59611600I75000J0D01* +G01* +X78345800Y-59611600D01* +G75* +G02* +X78420800Y-59686600I0J-75000D01* +G01* +X78420800Y-61086600D01* +G75* +G02* +X78345800Y-61161600I-75000J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,U1,9*% +%TO.N,GND*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X77845800Y-61161600D02* +X77695800Y-61161600D01* +G75* +G02* +X77620800Y-61086600I0J75000D01* +G01* +X77620800Y-59686600D01* +G75* +G02* +X77695800Y-59611600I75000J0D01* +G01* +X77845800Y-59611600D01* +G75* +G02* +X77920800Y-59686600I0J-75000D01* +G01* +X77920800Y-61086600D01* +G75* +G02* +X77845800Y-61161600I-75000J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,U1,8*% +%TO.N,+3V3*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X77345800Y-61161600D02* +X77195800Y-61161600D01* +G75* +G02* +X77120800Y-61086600I0J75000D01* +G01* +X77120800Y-59686600D01* +G75* +G02* +X77195800Y-59611600I75000J0D01* +G01* +X77345800Y-59611600D01* +G75* +G02* +X77420800Y-59686600I0J-75000D01* +G01* +X77420800Y-61086600D01* +G75* +G02* +X77345800Y-61161600I-75000J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,U1,7*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X76845800Y-61161600D02* +X76695800Y-61161600D01* +G75* +G02* +X76620800Y-61086600I0J75000D01* +G01* +X76620800Y-59686600D01* +G75* +G02* +X76695800Y-59611600I75000J0D01* +G01* +X76845800Y-59611600D01* +G75* +G02* +X76920800Y-59686600I0J-75000D01* +G01* +X76920800Y-61086600D01* +G75* +G02* +X76845800Y-61161600I-75000J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,U1,6*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X76345800Y-61161600D02* +X76195800Y-61161600D01* +G75* +G02* +X76120800Y-61086600I0J75000D01* +G01* +X76120800Y-59686600D01* +G75* +G02* +X76195800Y-59611600I75000J0D01* +G01* +X76345800Y-59611600D01* +G75* +G02* +X76420800Y-59686600I0J-75000D01* +G01* +X76420800Y-61086600D01* +G75* +G02* +X76345800Y-61161600I-75000J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,U1,5*% +%TO.N,Net-(U1-Pad5)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X75845800Y-61161600D02* +X75695800Y-61161600D01* +G75* +G02* +X75620800Y-61086600I0J75000D01* +G01* +X75620800Y-59686600D01* +G75* +G02* +X75695800Y-59611600I75000J0D01* +G01* +X75845800Y-59611600D01* +G75* +G02* +X75920800Y-59686600I0J-75000D01* +G01* +X75920800Y-61086600D01* +G75* +G02* +X75845800Y-61161600I-75000J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,U1,4*% +%TO.N,Net-(U1-Pad4)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X75345800Y-61161600D02* +X75195800Y-61161600D01* +G75* +G02* +X75120800Y-61086600I0J75000D01* +G01* +X75120800Y-59686600D01* +G75* +G02* +X75195800Y-59611600I75000J0D01* +G01* +X75345800Y-59611600D01* +G75* +G02* +X75420800Y-59686600I0J-75000D01* +G01* +X75420800Y-61086600D01* +G75* +G02* +X75345800Y-61161600I-75000J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,U1,3*% +%TO.N,Net-(U1-Pad3)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X74845800Y-61161600D02* +X74695800Y-61161600D01* +G75* +G02* +X74620800Y-61086600I0J75000D01* +G01* +X74620800Y-59686600D01* +G75* +G02* +X74695800Y-59611600I75000J0D01* +G01* +X74845800Y-59611600D01* +G75* +G02* +X74920800Y-59686600I0J-75000D01* +G01* +X74920800Y-61086600D01* +G75* +G02* +X74845800Y-61161600I-75000J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,U1,2*% +%TO.N,Net-(U1-Pad2)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X74345800Y-61161600D02* +X74195800Y-61161600D01* +G75* +G02* +X74120800Y-61086600I0J75000D01* +G01* +X74120800Y-59686600D01* +G75* +G02* +X74195800Y-59611600I75000J0D01* +G01* +X74345800Y-59611600D01* +G75* +G02* +X74420800Y-59686600I0J-75000D01* +G01* +X74420800Y-61086600D01* +G75* +G02* +X74345800Y-61161600I-75000J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,U1,1*% +%TO.N,Net-(U1-Pad1)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X73845800Y-61161600D02* +X73695800Y-61161600D01* +G75* +G02* +X73620800Y-61086600I0J75000D01* +G01* +X73620800Y-59686600D01* +G75* +G02* +X73695800Y-59611600I75000J0D01* +G01* +X73845800Y-59611600D01* +G75* +G02* +X73920800Y-59686600I0J-75000D01* +G01* +X73920800Y-61086600D01* +G75* +G02* +X73845800Y-61161600I-75000J0D01* +G01* +G37* +%TD.AperFunction*% +%TD*% +%TO.P,R20,2*% +%TO.N,Net-(J5-Pad12)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X71747801Y-45818600D02* +X70847799Y-45818600D01* +G75* +G02* +X70597800Y-45568601I0J249999D01* +G01* +X70597800Y-44868599D01* +G75* +G02* +X70847799Y-44618600I249999J0D01* +G01* +X71747801Y-44618600D01* +G75* +G02* +X71997800Y-44868599I0J-249999D01* +G01* +X71997800Y-45568601D01* +G75* +G02* +X71747801Y-45818600I-249999J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,R20,1*% +%TO.N,NRST*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X71747801Y-47818600D02* +X70847799Y-47818600D01* +G75* +G02* +X70597800Y-47568601I0J249999D01* +G01* +X70597800Y-46868599D01* +G75* +G02* +X70847799Y-46618600I249999J0D01* +G01* +X71747801Y-46618600D01* +G75* +G02* +X71997800Y-46868599I0J-249999D01* +G01* +X71997800Y-47568601D01* +G75* +G02* +X71747801Y-47818600I-249999J0D01* +G01* +G37* +%TD.AperFunction*% +%TD*% +%TO.P,R19,2*% +%TO.N,Net-(J5-Pad6)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X74459947Y-43355319D02* +X73559945Y-43355319D01* +G75* +G02* +X73309946Y-43105320I0J249999D01* +G01* +X73309946Y-42405318D01* +G75* +G02* +X73559945Y-42155319I249999J0D01* +G01* +X74459947Y-42155319D01* +G75* +G02* +X74709946Y-42405318I0J-249999D01* +G01* +X74709946Y-43105320D01* +G75* +G02* +X74459947Y-43355319I-249999J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,R19,1*% +%TO.N,SWCLK*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X74459947Y-45355319D02* +X73559945Y-45355319D01* +G75* +G02* +X73309946Y-45105320I0J249999D01* +G01* +X73309946Y-44405318D01* +G75* +G02* +X73559945Y-44155319I249999J0D01* +G01* +X74459947Y-44155319D01* +G75* +G02* +X74709946Y-44405318I0J-249999D01* +G01* +X74709946Y-45105320D01* +G75* +G02* +X74459947Y-45355319I-249999J0D01* +G01* +G37* +%TD.AperFunction*% +%TD*% +%TO.P,R18,2*% +%TO.N,Net-(J5-Pad4)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X76745948Y-43345840D02* +X75845946Y-43345840D01* +G75* +G02* +X75595947Y-43095841I0J249999D01* +G01* +X75595947Y-42395839D01* +G75* +G02* +X75845946Y-42145840I249999J0D01* +G01* +X76745948Y-42145840D01* +G75* +G02* +X76995947Y-42395839I0J-249999D01* +G01* +X76995947Y-43095841D01* +G75* +G02* +X76745948Y-43345840I-249999J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,R18,1*% +%TO.N,SWDIO*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X76745948Y-45345840D02* +X75845946Y-45345840D01* +G75* +G02* +X75595947Y-45095841I0J249999D01* +G01* +X75595947Y-44395839D01* +G75* +G02* +X75845946Y-44145840I249999J0D01* +G01* +X76745948Y-44145840D01* +G75* +G02* +X76995947Y-44395839I0J-249999D01* +G01* +X76995947Y-45095841D01* +G75* +G02* +X76745948Y-45345840I-249999J0D01* +G01* +G37* +%TD.AperFunction*% +%TD*% +%TO.P,R17,2*% +%TO.N,Net-(R11-Pad1)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X58052512Y-76792215D02* +X57273086Y-76342214D01* +G75* +G02* +X57181581Y-76000710I125000J216505D01* +G01* +X57531582Y-75394491D01* +G75* +G02* +X57873087Y-75302985I216505J-124999D01* +G01* +X58652512Y-75752986D01* +G75* +G02* +X58744017Y-76094490I-125000J-216505D01* +G01* +X58394016Y-76700709D01* +G75* +G02* +X58052512Y-76792215I-216505J124999D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,R17,1*% +%TO.N,Net-(J4-Pad2)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X57052512Y-78524265D02* +X56273086Y-78074264D01* +G75* +G02* +X56181581Y-77732760I125000J216505D01* +G01* +X56531582Y-77126541D01* +G75* +G02* +X56873087Y-77035035I216505J-124999D01* +G01* +X57652512Y-77485036D01* +G75* +G02* +X57744017Y-77826540I-125000J-216505D01* +G01* +X57394016Y-78432759D01* +G75* +G02* +X57052512Y-78524265I-216505J124999D01* +G01* +G37* +%TD.AperFunction*% +%TD*% +%TO.P,R16,2*% +%TO.N,Net-(R10-Pad1)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X49895200Y-50132401D02* +X49895200Y-49232399D01* +G75* +G02* +X50145199Y-48982400I249999J0D01* +G01* +X50845201Y-48982400D01* +G75* +G02* +X51095200Y-49232399I0J-249999D01* +G01* +X51095200Y-50132401D01* +G75* +G02* +X50845201Y-50382400I-249999J0D01* +G01* +X50145199Y-50382400D01* +G75* +G02* +X49895200Y-50132401I0J249999D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,R16,1*% +%TO.N,Net-(J3-Pad1)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X47895200Y-50132401D02* +X47895200Y-49232399D01* +G75* +G02* +X48145199Y-48982400I249999J0D01* +G01* +X48845201Y-48982400D01* +G75* +G02* +X49095200Y-49232399I0J-249999D01* +G01* +X49095200Y-50132401D01* +G75* +G02* +X48845201Y-50382400I-249999J0D01* +G01* +X48145199Y-50382400D01* +G75* +G02* +X47895200Y-50132401I0J249999D01* +G01* +G37* +%TD.AperFunction*% +%TD*% +%TO.P,R14,2*% +%TO.N,Net-(Q2-Pad3)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X42893968Y-57760470D02* +X43201787Y-56914745D01* +G75* +G02* +X43522214Y-56765328I234922J-85505D01* +G01* +X44180001Y-57004743D01* +G75* +G02* +X44329418Y-57325170I-85505J-234922D01* +G01* +X44021599Y-58170895D01* +G75* +G02* +X43701172Y-58320312I-234922J85505D01* +G01* +X43043385Y-58080897D01* +G75* +G02* +X42893968Y-57760470I85505J234922D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,R14,1*% +%TO.N,AC_N*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X41014582Y-57076430D02* +X41322401Y-56230705D01* +G75* +G02* +X41642828Y-56081288I234922J-85505D01* +G01* +X42300615Y-56320703D01* +G75* +G02* +X42450032Y-56641130I-85505J-234922D01* +G01* +X42142213Y-57486855D01* +G75* +G02* +X41821786Y-57636272I-234922J85505D01* +G01* +X41163999Y-57396857D01* +G75* +G02* +X41014582Y-57076430I85505J234922D01* +G01* +G37* +%TD.AperFunction*% +%TD*% +%TO.P,R11,2*% +%TO.N,Net-(R11-Pad2)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X60322514Y-73028165D02* +X59543088Y-72578164D01* +G75* +G02* +X59451583Y-72236660I125000J216505D01* +G01* +X59801584Y-71630441D01* +G75* +G02* +X60143089Y-71538935I216505J-124999D01* +G01* +X60922514Y-71988936D01* +G75* +G02* +X61014019Y-72330440I-125000J-216505D01* +G01* +X60664018Y-72936659D01* +G75* +G02* +X60322514Y-73028165I-216505J124999D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,R11,1*% +%TO.N,Net-(R11-Pad1)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X59322514Y-74760215D02* +X58543088Y-74310214D01* +G75* +G02* +X58451583Y-73968710I125000J216505D01* +G01* +X58801584Y-73362491D01* +G75* +G02* +X59143089Y-73270985I216505J-124999D01* +G01* +X59922514Y-73720986D01* +G75* +G02* +X60014019Y-74062490I-125000J-216505D01* +G01* +X59664018Y-74668709D01* +G75* +G02* +X59322514Y-74760215I-216505J124999D01* +G01* +G37* +%TD.AperFunction*% +%TD*% +%TO.P,R10,2*% +%TO.N,Net-(R10-Pad2)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X54467200Y-50132401D02* +X54467200Y-49232399D01* +G75* +G02* +X54717199Y-48982400I249999J0D01* +G01* +X55417201Y-48982400D01* +G75* +G02* +X55667200Y-49232399I0J-249999D01* +G01* +X55667200Y-50132401D01* +G75* +G02* +X55417201Y-50382400I-249999J0D01* +G01* +X54717199Y-50382400D01* +G75* +G02* +X54467200Y-50132401I0J249999D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,R10,1*% +%TO.N,Net-(R10-Pad1)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X52467200Y-50132401D02* +X52467200Y-49232399D01* +G75* +G02* +X52717199Y-48982400I249999J0D01* +G01* +X53417201Y-48982400D01* +G75* +G02* +X53667200Y-49232399I0J-249999D01* +G01* +X53667200Y-50132401D01* +G75* +G02* +X53417201Y-50382400I-249999J0D01* +G01* +X52717199Y-50382400D01* +G75* +G02* +X52467200Y-50132401I0J249999D01* +G01* +G37* +%TD.AperFunction*% +%TD*% +%TO.P,R8,2*% +%TO.N,Gate_Fan*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X71666610Y-74220371D02* +X72403849Y-73704151D01* +G75* +G02* +X72752030Y-73765544I143394J-204787D01* +G01* +X73153535Y-74338952D01* +G75* +G02* +X73092142Y-74687133I-204787J-143394D01* +G01* +X72354903Y-75203353D01* +G75* +G02* +X72006722Y-75141960I-143394J204787D01* +G01* +X71605217Y-74568552D01* +G75* +G02* +X71666610Y-74220371I204787J143394D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,R8,1*% +%TO.N,Net-(R8-Pad1)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X70519458Y-72582067D02* +X71256697Y-72065847D01* +G75* +G02* +X71604878Y-72127240I143394J-204787D01* +G01* +X72006383Y-72700648D01* +G75* +G02* +X71944990Y-73048829I-204787J-143394D01* +G01* +X71207751Y-73565049D01* +G75* +G02* +X70859570Y-73503656I-143394J204787D01* +G01* +X70458065Y-72930248D01* +G75* +G02* +X70519458Y-72582067I204787J143394D01* +G01* +G37* +%TD.AperFunction*% +%TD*% +%TO.P,R7,2*% +%TO.N,Gate_Heater*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X68252799Y-55923602D02* +X68252799Y-55023600D01* +G75* +G02* +X68502798Y-54773601I249999J0D01* +G01* +X69202800Y-54773601D01* +G75* +G02* +X69452799Y-55023600I0J-249999D01* +G01* +X69452799Y-55923602D01* +G75* +G02* +X69202800Y-56173601I-249999J0D01* +G01* +X68502798Y-56173601D01* +G75* +G02* +X68252799Y-55923602I0J249999D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,R7,1*% +%TO.N,Net-(R7-Pad1)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X66252799Y-55923602D02* +X66252799Y-55023600D01* +G75* +G02* +X66502798Y-54773601I249999J0D01* +G01* +X67202800Y-54773601D01* +G75* +G02* +X67452799Y-55023600I0J-249999D01* +G01* +X67452799Y-55923602D01* +G75* +G02* +X67202800Y-56173601I-249999J0D01* +G01* +X66502798Y-56173601D01* +G75* +G02* +X66252799Y-55923602I0J249999D01* +G01* +G37* +%TD.AperFunction*% +%TD*% +%TO.P,R6,2*% +%TO.N,OLED_SDA*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X87622801Y-50755600D02* +X86722799Y-50755600D01* +G75* +G02* +X86472800Y-50505601I0J249999D01* +G01* +X86472800Y-49805599D01* +G75* +G02* +X86722799Y-49555600I249999J0D01* +G01* +X87622801Y-49555600D01* +G75* +G02* +X87872800Y-49805599I0J-249999D01* +G01* +X87872800Y-50505601D01* +G75* +G02* +X87622801Y-50755600I-249999J0D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,R6,1*% +%TO.N,Net-(J2-Pad4)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X87622801Y-52755600D02* +X86722799Y-52755600D01* +G75* +G02* +X86472800Y-52505601I0J249999D01* +G01* +X86472800Y-51805599D01* +G75* +G02* +X86722799Y-51555600I249999J0D01* +G01* +X87622801Y-51555600D01* +G75* +G02* +X87872800Y-51805599I0J-249999D01* +G01* +X87872800Y-52505601D01* +G75* +G02* +X87622801Y-52755600I-249999J0D01* +G01* +G37* +%TD.AperFunction*% +%TD*% +%TO.P,R2,2*% +%TO.N,Net-(C2-Pad1)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X84042646Y-63981675D02* +X84042646Y-63081673D01* +G75* +G02* +X84292645Y-62831674I249999J0D01* +G01* +X84992647Y-62831674D01* +G75* +G02* +X85242646Y-63081673I0J-249999D01* +G01* +X85242646Y-63981675D01* +G75* +G02* +X84992647Y-64231674I-249999J0D01* +G01* +X84292645Y-64231674D01* +G75* +G02* +X84042646Y-63981675I0J249999D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,R2,1*% +%TO.N,Net-(R2-Pad1)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X82042646Y-63981675D02* +X82042646Y-63081673D01* +G75* +G02* +X82292645Y-62831674I249999J0D01* +G01* +X82992647Y-62831674D01* +G75* +G02* +X83242646Y-63081673I0J-249999D01* +G01* +X83242646Y-63981675D01* +G75* +G02* +X82992647Y-64231674I-249999J0D01* +G01* +X82292645Y-64231674D01* +G75* +G02* +X82042646Y-63981675I0J249999D01* +G01* +G37* +%TD.AperFunction*% +%TD*% +%TO.P,R1,2*% +%TO.N,Buzzer*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X91375205Y-56757527D02* +X90685764Y-57336037D01* +G75* +G02* +X90333558Y-57305223I-160696J191510D01* +G01* +X89883605Y-56768991D01* +G75* +G02* +X89914419Y-56416785I191510J160696D01* +G01* +X90603860Y-55838275D01* +G75* +G02* +X90956066Y-55869089I160696J-191510D01* +G01* +X91406019Y-56405321D01* +G75* +G02* +X91375205Y-56757527I-191510J-160696D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,R1,1*% +%TO.N,Net-(Q1-Pad1)*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X92660781Y-58289615D02* +X91971340Y-58868125D01* +G75* +G02* +X91619134Y-58837311I-160696J191510D01* +G01* +X91169181Y-58301079D01* +G75* +G02* +X91199995Y-57948873I191510J160696D01* +G01* +X91889436Y-57370363D01* +G75* +G02* +X92241642Y-57401177I160696J-191510D01* +G01* +X92691595Y-57937409D01* +G75* +G02* +X92660781Y-58289615I-191510J-160696D01* +G01* +G37* +%TD.AperFunction*% +%TD*% +%TA.AperFunction,ComponentPad*% +D15* +%TO.P,Q3,1*% +%TO.N,AC_N*% +G36* +X53843911Y-59165375D02* +G01* +X54843911Y-57433325D01* +X56493689Y-58385825D01* +X55493689Y-60117875D01* +X53843911Y-59165375D01* +G37* +%TD.AperFunction*% +%TO.P,Q3,2*% +%TO.N,Net-(J4-Pad2)*% +%TA.AperFunction,ComponentPad*% +G36* +G01* +X56519866Y-59610486D02* +X56567366Y-59528214D01* +G75* +G02* +X57868505Y-59179575I824889J-476250D01* +G01* +X57868505Y-59179575D01* +G75* +G02* +X58217144Y-60480714I-476250J-824889D01* +G01* +X58169644Y-60562986D01* +G75* +G02* +X56868505Y-60911625I-824889J476250D01* +G01* +X56868505Y-60911625D01* +G75* +G02* +X56519866Y-59610486I476250J824889D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,Q3,3*% +%TO.N,Net-(Q3-Pad3)*% +%TA.AperFunction,ComponentPad*% +G36* +G01* +X58719570Y-60880486D02* +X58767070Y-60798214D01* +G75* +G02* +X60068209Y-60449575I824889J-476250D01* +G01* +X60068209Y-60449575D01* +G75* +G02* +X60416848Y-61750714I-476250J-824889D01* +G01* +X60369348Y-61832986D01* +G75* +G02* +X59068209Y-62181625I-824889J476250D01* +G01* +X59068209Y-62181625D01* +G75* +G02* +X58719570Y-60880486I476250J824889D01* +G01* +G37* +%TD.AperFunction*% +%TD*% +%TA.AperFunction,ComponentPad*% +%TO.P,Q2,1*% +%TO.N,AC_N*% +G36* +X39199723Y-53293518D02* +G01* +X39883763Y-51414133D01* +X41673877Y-52065682D01* +X40989837Y-53945067D01* +X39199723Y-53293518D01* +G37* +%TD.AperFunction*% +%TO.P,Q2,2*% +%TO.N,Net-(J3-Pad1)*% +%TA.AperFunction,ComponentPad*% +G36* +G01* +X41912316Y-53267192D02* +X41944808Y-53177922D01* +G75* +G02* +X43165639Y-52608639I895057J-325774D01* +G01* +X43165639Y-52608639D01* +G75* +G02* +X43734922Y-53829470I-325774J-895057D01* +G01* +X43702430Y-53918740D01* +G75* +G02* +X42481599Y-54488023I-895057J325774D01* +G01* +X42481599Y-54488023D01* +G75* +G02* +X41912316Y-53267192I325774J895057D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,Q2,3*% +%TO.N,Net-(Q2-Pad3)*% +%TA.AperFunction,ComponentPad*% +G36* +G01* +X44299136Y-54135923D02* +X44331628Y-54046653D01* +G75* +G02* +X45552459Y-53477370I895057J-325774D01* +G01* +X45552459Y-53477370D01* +G75* +G02* +X46121742Y-54698201I-325774J-895057D01* +G01* +X46089250Y-54787471D01* +G75* +G02* +X44868419Y-55356754I-895057J325774D01* +G01* +X44868419Y-55356754D01* +G75* +G02* +X44299136Y-54135923I325774J895057D01* +G01* +G37* +%TD.AperFunction*% +%TD*% +%TA.AperFunction,SMDPad,CuDef*% +D16* +%TO.P,Q1,1*% +%TO.N,Net-(Q1-Pad1)*% +G36* +X92930587Y-59965392D02* +G01* +X93543422Y-59451162D01* +X94546171Y-60646192D01* +X93933336Y-61160422D01* +X92930587Y-59965392D01* +G37* +%TD.AperFunction*% +%TA.AperFunction,SMDPad,CuDef*% +%TO.P,Q1,2*% +%TO.N,GND*% +G36* +X91475103Y-61186688D02* +G01* +X92087938Y-60672458D01* +X93090687Y-61867488D01* +X92477852Y-62381718D01* +X91475103Y-61186688D01* +G37* +%TD.AperFunction*% +%TA.AperFunction,SMDPad,CuDef*% +%TO.P,Q1,3*% +%TO.N,Net-(BZ1-Pad2)*% +G36* +X93938371Y-62644360D02* +G01* +X94551206Y-62130130D01* +X95553955Y-63325160D01* +X94941120Y-63839390D01* +X93938371Y-62644360D01* +G37* +%TD.AperFunction*% +%TD*% +D17* +%TO.P,J6,1*% +%TO.N,AC_N*% +X26212800Y-49885600D03* +D18* +%TO.P,J6,2*% +%TO.N,AC_L*% +X26212800Y-54965600D03* +%TD*% +D19* +%TO.P,J5,14*% +%TO.N,Net-(J5-Pad14)*% +X64942000Y-40081200D03* +%TO.P,J5,13*% +%TO.N,Net-(J5-Pad13)*% +X61042000Y-40081200D03* +%TO.P,J5,12*% +%TO.N,Net-(J5-Pad12)*% +X64942000Y-38811200D03* +%TO.P,J5,11*% +%TO.N,GND*% +X61042000Y-38811200D03* +%TO.P,J5,10*% +%TO.N,Net-(J5-Pad10)*% +X64942000Y-37541200D03* +%TO.P,J5,9*% +%TO.N,Net-(J5-Pad9)*% +X61042000Y-37541200D03* +%TO.P,J5,8*% +%TO.N,Net-(J5-Pad8)*% +X64942000Y-36271200D03* +%TO.P,J5,7*% +%TO.N,GND*% +X61042000Y-36271200D03* +%TO.P,J5,6*% +%TO.N,Net-(J5-Pad6)*% +X64942000Y-35001200D03* +%TO.P,J5,5*% +%TO.N,GND*% +X61042000Y-35001200D03* +%TO.P,J5,4*% +%TO.N,Net-(J5-Pad4)*% +X64942000Y-33731200D03* +%TO.P,J5,3*% +%TO.N,+3V3*% +X61042000Y-33731200D03* +%TO.P,J5,2*% +%TO.N,Net-(J5-Pad2)*% +X64942000Y-32461200D03* +%TO.P,J5,1*% +%TO.N,Net-(J5-Pad1)*% +X61042000Y-32461200D03* +%TD*% +%TA.AperFunction,ComponentPad*% +D15* +%TO.P,J4,1*% +%TO.N,AC_L*% +G36* +X47550967Y-69157433D02* +G01* +X48850967Y-66905767D01* +X51102633Y-68205767D01* +X49802633Y-70457433D01* +X47550967Y-69157433D01* +G37* +%TD.AperFunction*% +D18* +%TO.P,J4,2*% +%TO.N,Net-(J4-Pad2)*% +X53726209Y-71221600D03* +%TD*% +%TA.AperFunction,ComponentPad*% +D15* +%TO.P,J3,1*% +%TO.N,Net-(J3-Pad1)*% +G36* +X34960573Y-64124574D02* +G01* +X35849826Y-61681373D01* +X38293027Y-62570626D01* +X37403774Y-65013827D01* +X34960573Y-64124574D01* +G37* +%TD.AperFunction*% +D18* +%TO.P,J3,2*% +%TO.N,AC_L*% +X41400439Y-65085062D03* +%TD*% +%TO.P,J2,8*% +%TO.N,KEY_DN*% +%TA.AperFunction,ComponentPad*% +G36* +G01* +X98890118Y-57598000D02* +X98890118Y-57598000D01* +G75* +G02* +X98890118Y-56395918I601041J601041D01* +G01* +X98890118Y-56395918D01* +G75* +G02* +X100092200Y-56395918I601041J-601041D01* +G01* +X100092200Y-56395918D01* +G75* +G02* +X100092200Y-57598000I-601041J-601041D01* +G01* +X100092200Y-57598000D01* +G75* +G02* +X98890118Y-57598000I-601041J601041D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,J2,7*% +%TO.N,KEY_OK*% +%TA.AperFunction,ComponentPad*% +G36* +G01* +X97094066Y-55801948D02* +X97094066Y-55801948D01* +G75* +G02* +X97094066Y-54599866I601041J601041D01* +G01* +X97094066Y-54599866D01* +G75* +G02* +X98296148Y-54599866I601041J-601041D01* +G01* +X98296148Y-54599866D01* +G75* +G02* +X98296148Y-55801948I-601041J-601041D01* +G01* +X98296148Y-55801948D01* +G75* +G02* +X97094066Y-55801948I-601041J601041D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,J2,6*% +%TO.N,KEY_UP*% +%TA.AperFunction,ComponentPad*% +G36* +G01* +X95298015Y-54005897D02* +X95298015Y-54005897D01* +G75* +G02* +X95298015Y-52803815I601041J601041D01* +G01* +X95298015Y-52803815D01* +G75* +G02* +X96500097Y-52803815I601041J-601041D01* +G01* +X96500097Y-52803815D01* +G75* +G02* +X96500097Y-54005897I-601041J-601041D01* +G01* +X96500097Y-54005897D01* +G75* +G02* +X95298015Y-54005897I-601041J601041D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,J2,5*% +%TO.N,Net-(J2-Pad5)*% +%TA.AperFunction,ComponentPad*% +G36* +G01* +X93501964Y-52209846D02* +X93501964Y-52209846D01* +G75* +G02* +X93501964Y-51007764I601041J601041D01* +G01* +X93501964Y-51007764D01* +G75* +G02* +X94704046Y-51007764I601041J-601041D01* +G01* +X94704046Y-51007764D01* +G75* +G02* +X94704046Y-52209846I-601041J-601041D01* +G01* +X94704046Y-52209846D01* +G75* +G02* +X93501964Y-52209846I-601041J601041D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,J2,4*% +%TO.N,Net-(J2-Pad4)*% +%TA.AperFunction,ComponentPad*% +G36* +G01* +X91705913Y-50413795D02* +X91705913Y-50413795D01* +G75* +G02* +X91705913Y-49211713I601041J601041D01* +G01* +X91705913Y-49211713D01* +G75* +G02* +X92907995Y-49211713I601041J-601041D01* +G01* +X92907995Y-49211713D01* +G75* +G02* +X92907995Y-50413795I-601041J-601041D01* +G01* +X92907995Y-50413795D01* +G75* +G02* +X91705913Y-50413795I-601041J601041D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,J2,3*% +%TO.N,Net-(J2-Pad3)*% +%TA.AperFunction,ComponentPad*% +G36* +G01* +X89909861Y-48617743D02* +X89909861Y-48617743D01* +G75* +G02* +X89909861Y-47415661I601041J601041D01* +G01* +X89909861Y-47415661D01* +G75* +G02* +X91111943Y-47415661I601041J-601041D01* +G01* +X91111943Y-47415661D01* +G75* +G02* +X91111943Y-48617743I-601041J-601041D01* +G01* +X91111943Y-48617743D01* +G75* +G02* +X89909861Y-48617743I-601041J601041D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,J2,2*% +%TO.N,GND*% +%TA.AperFunction,ComponentPad*% +G36* +G01* +X88113810Y-46821692D02* +X88113810Y-46821692D01* +G75* +G02* +X88113810Y-45619610I601041J601041D01* +G01* +X88113810Y-45619610D01* +G75* +G02* +X89315892Y-45619610I601041J-601041D01* +G01* +X89315892Y-45619610D01* +G75* +G02* +X89315892Y-46821692I-601041J-601041D01* +G01* +X89315892Y-46821692D01* +G75* +G02* +X88113810Y-46821692I-601041J601041D01* +G01* +G37* +%TD.AperFunction*% +%TA.AperFunction,ComponentPad*% +D15* +%TO.P,J2,1*% +%TO.N,+3V3*% +G36* +X86918800Y-45626682D02* +G01* +X85716718Y-44424600D01* +X86918800Y-43222518D01* +X88120882Y-44424600D01* +X86918800Y-45626682D01* +G37* +%TD.AperFunction*% +%TD*% +%TO.P,J1,4*% +%TO.N,Net-(J1-Pad4)*% +%TA.AperFunction,ComponentPad*% +G36* +G01* +X80035554Y-76547269D02* +X80035554Y-76547269D01* +G75* +G02* +X78842433Y-76400772I-523312J669809D01* +G01* +X78842433Y-76400772D01* +G75* +G02* +X78988930Y-75207651I669809J523312D01* +G01* +X78988930Y-75207651D01* +G75* +G02* +X80182051Y-75354148I523312J-669809D01* +G01* +X80182051Y-75354148D01* +G75* +G02* +X80035554Y-76547269I-669809J-523312D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,J1,3*% +%TO.N,Net-(J1-Pad3)*% +%TA.AperFunction,ComponentPad*% +G36* +G01* +X78034007Y-78111049D02* +X78034007Y-78111049D01* +G75* +G02* +X76840886Y-77964552I-523312J669809D01* +G01* +X76840886Y-77964552D01* +G75* +G02* +X76987383Y-76771431I669809J523312D01* +G01* +X76987383Y-76771431D01* +G75* +G02* +X78180504Y-76917928I523312J-669809D01* +G01* +X78180504Y-76917928D01* +G75* +G02* +X78034007Y-78111049I-669809J-523312D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,J1,2*% +%TO.N,GND*% +%TA.AperFunction,ComponentPad*% +G36* +G01* +X76032459Y-79674829D02* +X76032459Y-79674829D01* +G75* +G02* +X74839338Y-79528332I-523312J669809D01* +G01* +X74839338Y-79528332D01* +G75* +G02* +X74985835Y-78335211I669809J523312D01* +G01* +X74985835Y-78335211D01* +G75* +G02* +X76178956Y-78481708I523312J-669809D01* +G01* +X76178956Y-78481708D01* +G75* +G02* +X76032459Y-79674829I-669809J-523312D01* +G01* +G37* +%TD.AperFunction*% +%TA.AperFunction,ComponentPad*% +%TO.P,J1,1*% +%TO.N,+3V3*% +G36* +X74700721Y-80715297D02* +G01* +X73361103Y-81761921D01* +X72314479Y-80422303D01* +X73654097Y-79375679D01* +X74700721Y-80715297D01* +G37* +%TD.AperFunction*% +%TD*% +%TO.P,C7,2*% +%TO.N,GND*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X87619644Y-60171017D02* +X87008996Y-59443275D01* +G75* +G02* +X87039810Y-59091067I191511J160697D01* +G01* +X87556890Y-58657185D01* +G75* +G02* +X87909098Y-58687999I160697J-191511D01* +G01* +X88519746Y-59415741D01* +G75* +G02* +X88488932Y-59767949I-191511J-160697D01* +G01* +X87971852Y-60201831D01* +G75* +G02* +X87619644Y-60171017I-160697J191511D01* +G01* +G37* +%TD.AperFunction*% +%TO.P,C7,1*% +%TO.N,NRST*% +%TA.AperFunction,SMDPad,CuDef*% +G36* +G01* +X86030102Y-61504801D02* +X85419454Y-60777059D01* +G75* +G02* +X85450268Y-60424851I191511J160697D01* +G01* +X85967348Y-59990969D01* +G75* +G02* +X86319556Y-60021783I160697J-191511D01* +G01* +X86930204Y-60749525D01* +G75* +G02* +X86899390Y-61101733I-191511J-160697D01* +G01* +X86382310Y-61535615D01* +G75* +G02* +X86030102Y-61504801I-160697J191511D01* +G01* +G37* +%TD.AperFunction*% +%TD*% +D20* +%TO.P,BZ1,2*% +%TO.N,Net-(BZ1-Pad2)*% +X66716280Y-79236459D03* +%TA.AperFunction,ComponentPad*% +D15* +%TO.P,BZ1,1*% +%TO.N,+3V3*% +G36* +X62399502Y-83357797D02* +G01* +X61367064Y-81883323D01* +X62841538Y-80850885D01* +X63873976Y-82325359D01* +X62399502Y-83357797D01* +G37* +%TD.AperFunction*% +%TD*% +D21* +%TO.N,GND*% +X42976800Y-26162000D03* +X44754800Y-26162000D03* +X42113200Y-27432000D03* +X43840400Y-27432000D03* +X42976800Y-28752800D03* +X64770000Y-88341200D03* +X63703200Y-87223600D03* +X66141600Y-87426800D03* +X67665600Y-86410800D03* +X65125600Y-86207600D03* +X66598800Y-85090000D03* +X88341200Y-63601600D03* +X89255600Y-64719200D03* +X90271600Y-65887600D03* +X89814400Y-63398400D03* +X90779600Y-64617600D03* +X91287600Y-63195200D03* +%TO.N,+3V3*% +X75742800Y-58724800D03* +X75742800Y-69037200D03* +X73761600Y-75539600D03* +%TO.N,GND*% +X77774800Y-58724800D03* +X82143600Y-71374000D03* +X41249600Y-26162000D03* +%TO.N,BME_SCL*% +X70459600Y-57454800D03* +%TO.N,BME_SDA*% +X73355200Y-57454800D03* +%TO.N,OLED_SCL*% +X85699600Y-51968400D03* +%TO.N,ZeroCross*% +X70104000Y-52476400D03* +%TD*% +D22* +%TO.N,Net-(BZ1-Pad2)*% +X94691200Y-65227200D02* +X94746163Y-62984760D01* +X84582000Y-73050400D02* +X94691200Y-65227200D01* +X78689200Y-73050400D02* +X84582000Y-73050400D01* +X70420341Y-79236459D02* +X78689200Y-73050400D01* +X66716280Y-79236459D02* +X70420341Y-79236459D01* +%TO.N,+3V3*% +X76270800Y-59252800D02* +X75742800Y-58724800D01* +X76270800Y-60386600D02* +X76270800Y-59252800D01* +D23* +X61042000Y-33731200D02* +X57454800Y-33731200D01* +X57454800Y-33731200D02* +X56083200Y-35102800D01* +X56083200Y-39041200D02* +X52310800Y-42813600D01* +X56083200Y-35102800D02* +X56083200Y-39041200D01* +X75742800Y-74066400D02* +X73761600Y-75539600D01* +X75742800Y-69037200D02* +X75742800Y-74066400D01* +D22* +X77270800Y-59338400D02* +X77270800Y-60386600D01* +X77185200Y-59252800D02* +X77270800Y-59338400D01* +X76770800Y-59295600D02* +X76728000Y-59252800D01* +X76728000Y-59252800D02* +X77185200Y-59252800D01* +X76770800Y-60386600D02* +X76770800Y-59295600D01* +X76270800Y-59252800D02* +X76728000Y-59252800D01* +%TO.N,GND*% +X77770800Y-58728800D02* +X77774800Y-58724800D01* +X77770800Y-60386600D02* +X77770800Y-58728800D01* +%TO.N,Net-(C1-Pad1)*% +X78270800Y-60386600D02* +X78270800Y-63386400D01* +X79684646Y-64800246D02* +X79684646Y-67214675D01* +X78270800Y-63386400D02* +X79684646Y-64800246D01* +%TO.N,Net-(C2-Pad1)*% +X84642647Y-67156674D02* +X84584646Y-67214675D01* +X84642647Y-63531674D02* +X84642647Y-67156674D01* +%TO.N,NRST*% +X85020292Y-61917829D02* +X86174829Y-60763292D01* +X79647029Y-61917829D02* +X85020292Y-61917829D01* +X79270800Y-61541600D02* +X79647029Y-61917829D01* +X79270800Y-60386600D02* +X79270800Y-61541600D01* +X71297800Y-47218600D02* +X71297800Y-48488600D01* +X79270800Y-56461600D02* +X79270800Y-60386600D01* +X71297800Y-48488600D02* +X79270800Y-56461600D01* +%TO.N,KEY_DN*% +X84462555Y-53461600D02* +X85405831Y-54404876D01* +X83195800Y-53461600D02* +X84462555Y-53461600D01* +X96015439Y-56996959D02* +X99491159Y-56996959D01* +X93423356Y-54404876D02* +X96015439Y-56996959D01* +X85405831Y-54404876D02* +X93423356Y-54404876D01* +%TO.N,KEY_OK*% +X84669675Y-52961600D02* +X85612941Y-53904866D01* +X83195800Y-52961600D02* +X84669675Y-52961600D01* +X85612941Y-53904866D02* +X93630466Y-53904866D01* +X94926507Y-55200907D02* +X97695107Y-55200907D01* +X93630466Y-53904866D02* +X94926507Y-55200907D01* +%TO.N,KEY_UP*% +X85820051Y-53404856D02* +X95899056Y-53404856D01* +X84876795Y-52461600D02* +X85820051Y-53404856D01* +X83195800Y-52461600D02* +X84876795Y-52461600D01* +%TO.N,Net-(J2-Pad4)*% +X89964108Y-52155600D02* +X92306954Y-49812754D01* +X87172800Y-52155600D02* +X89964108Y-52155600D01* +D24* +%TO.N,AC_L*% +X26212800Y-54965600D02* +X22910800Y-51663600D01* +X22910800Y-51663600D02* +X22910800Y-43738800D01* +X22910800Y-43738800D02* +X26212800Y-40436800D01* +X26212800Y-40436800D02* +X26212800Y-34848800D01* +X23977600Y-32613600D02* +X22910800Y-32613600D01* +X26212800Y-34848800D02* +X23977600Y-32613600D01* +D25* +X49326800Y-68681600D02* +X41400439Y-65085062D01* +X32156400Y-66090800D02* +X32156400Y-60909200D01* +X38100000Y-68376800D02* +X32156400Y-66090800D01* +X32156400Y-60909200D02* +X26212800Y-54965600D01* +X41400439Y-65085062D02* +X38100000Y-68376800D01* +D24* +%TO.N,Net-(J3-Pad1)*% +X48495200Y-49682400D02* +X46689550Y-49682400D01* +X46689550Y-49682400D02* +X42823619Y-53548331D01* +D22* +%TO.N,Net-(J5-Pad12)*% +X64942000Y-38811200D02* +X66497200Y-38811200D01* +X71297800Y-43611800D02* +X71297800Y-45218600D01* +X66497200Y-38811200D02* +X71297800Y-43611800D01* +%TO.N,Net-(J5-Pad6)*% +X66255827Y-35001200D02* +X74009946Y-42755319D01* +X64942000Y-35001200D02* +X66255827Y-35001200D01* +%TO.N,Net-(J5-Pad4)*% +X67281307Y-33731200D02* +X76295947Y-42745840D01* +X64942000Y-33731200D02* +X67281307Y-33731200D01* +D25* +%TO.N,AC_N*% +X38130002Y-59558398D02* +X38130002Y-59567602D01* +X45212000Y-62077600D02* +X55168800Y-58775600D01* +X38130002Y-59558398D02* +X45212000Y-62077600D01* +D24* +X39064254Y-56858780D02* +X39020717Y-56902317D01* +X41732307Y-56858780D02* +X39064254Y-56858780D01* +D25* +X39020717Y-56902317D02* +X38130002Y-59558398D01* +X40436800Y-52679600D02* +X39020717Y-56902317D01* +X33020000Y-49885600D02* +X40436800Y-52679600D01* +X26212800Y-49885600D02* +X33020000Y-49885600D01* +D22* +%TO.N,Net-(Q1-Pad1)*% +X93738379Y-60305792D02* +X91930388Y-58119244D01* +D24* +%TO.N,Net-(Q2-Pad3)*% +X45210439Y-54417062D02* +X45210439Y-55041387D01* +X45210439Y-55944074D02* +X43611693Y-57542820D01* +X45210439Y-54417062D02* +X45210439Y-55944074D01* +%TO.N,Net-(Q3-Pad3)*% +X63550800Y-63703200D02* +X59568209Y-61315600D01* +X63550800Y-64617600D02* +X63550800Y-63703200D01* +D22* +%TO.N,Buzzer*% +X89019256Y-54961600D02* +X90644812Y-56587156D01* +X83195800Y-54961600D02* +X89019256Y-54961600D01* +%TO.N,Net-(R2-Pad1)*% +X78770800Y-60386600D02* +X78770800Y-61854400D01* +X80448074Y-63531674D02* +X82642646Y-63531674D01* +X78770800Y-61854400D02* +X80448074Y-63531674D01* +%TO.N,BME_SCL*% +X70466400Y-57461600D02* +X70459600Y-57454800D01* +X71845800Y-57461600D02* +X70466400Y-57461600D01* +%TO.N,BME_SDA*% +X72848400Y-57961600D02* +X73355200Y-57454800D01* +X71845800Y-57961600D02* +X72848400Y-57961600D01* +%TO.N,OLED_SCL*% +X84880000Y-51961600D02* +X83195800Y-51961600D01* +X85699600Y-51968400D02* +X84880000Y-51961600D01* +%TO.N,OLED_SDA*% +X83195800Y-51461600D02* +X84479200Y-51461600D01* +X85785200Y-50155600D02* +X87172800Y-50155600D01* +X84479200Y-51461600D02* +X85785200Y-50155600D01* +%TO.N,Gate_Heater*% +X68864800Y-55461600D02* +X68852799Y-55473601D01* +X71845800Y-55461600D02* +X68864800Y-55461600D01* +%TO.N,Net-(R7-Pad1)*% +X66852800Y-54773600D02* +X66852800Y-52171600D01* +X66852799Y-55473601D02* +X66852800Y-54773600D01* +%TO.N,Gate_Fan*% +X72379376Y-74453752D02* +X73475848Y-74453752D01* +X73475848Y-74453752D02* +X74218800Y-73710800D01* +X74218800Y-73710800D02* +X74218800Y-63906400D01* +X74218800Y-63906400D02* +X69545200Y-59232800D01* +X69545200Y-59232800D02* +X69545200Y-57048400D01* +X70632000Y-55961600D02* +X69545200Y-57048400D01* +X71845800Y-55961600D02* +X70632000Y-55961600D01* +%TO.N,Net-(R8-Pad1)*% +X71170800Y-72754024D02* +X71232224Y-72815448D01* +X71170800Y-69697600D02* +X71170800Y-72754024D01* +%TO.N,ZeroCross*% +X70118800Y-52461600D02* +X71845800Y-52461600D01* +X70104000Y-52476400D02* +X70118800Y-52461600D01* +D24* +%TO.N,Net-(R10-Pad2)*% +X57556400Y-52171600D02* +X55067200Y-49682400D01* +X59232800Y-52171600D02* +X57556400Y-52171600D01* +%TO.N,Net-(R10-Pad1)*% +X50495200Y-49682400D02* +X53067200Y-49682400D01* +%TO.N,Net-(R11-Pad2)*% +X61772800Y-69697600D02* +X63550800Y-69697600D01* +X60232801Y-72283550D02* +X61772800Y-69697600D01* +%TO.N,Net-(R11-Pad1)*% +X57962799Y-76047600D02* +X59232801Y-74015600D01* +D22* +%TO.N,SWDIO*% +X75270800Y-49036600D02* +X75270800Y-47004800D01* +X76295947Y-45979653D02* +X76295947Y-44745840D01* +X75270800Y-47004800D02* +X76295947Y-45979653D01* +%TO.N,SWCLK*% +X74770800Y-49036600D02* +X74770800Y-47034000D01* +X74009946Y-46273146D02* +X74009946Y-44755319D01* +X74770800Y-47034000D02* +X74009946Y-46273146D01* +D25* +%TO.N,Net-(J4-Pad2)*% +X56083200Y-68021200D02* +X53726209Y-71221600D01* +X56032400Y-62179200D02* +X56083200Y-68021200D01* +X57368505Y-60045600D02* +X56032400Y-62179200D01* +D24* +X53695600Y-75895200D02* +X53726209Y-71221600D01* +X56962799Y-77779650D02* +X53695600Y-75895200D01* +%TD*% +D26* +%TO.N,GND*% +X40275685Y-20894080D02* +X44256937Y-21747586D01* +X48202486Y-22753294D01* +X52106510Y-23909720D01* +X55963256Y-25215156D01* +X59767053Y-26667685D01* +X63512278Y-28265159D01* +X67193433Y-30005233D01* +X70805085Y-31885340D01* +X74341872Y-33902688D01* +X77798632Y-36054332D01* +X81170236Y-38337078D01* +X84451727Y-40747572D01* +X87053599Y-42817195D01* +X87002507Y-42801696D01* +X86918800Y-42793452D01* +X86835093Y-42801696D01* +X86754604Y-42826113D01* +X86680424Y-42865763D01* +X86615405Y-42919123D01* +X85413323Y-44121205D01* +X85359963Y-44186224D01* +X85320313Y-44260404D01* +X85295896Y-44340893D01* +X85287652Y-44424600D01* +X85295896Y-44508307D01* +X85320313Y-44588796D01* +X85359963Y-44662976D01* +X85413323Y-44727995D01* +X86615405Y-45930077D01* +X86680424Y-45983437D01* +X86754604Y-46023087D01* +X86835093Y-46047504D01* +X86918800Y-46055748D01* +X87002507Y-46047504D01* +X87082996Y-46023087D01* +X87157176Y-45983437D01* +X87222195Y-45930077D01* +X87806971Y-45345301D01* +X87871239Y-45409569D01* +X87668384Y-45488777D01* +X87545710Y-45706995D01* +X87467966Y-45944953D01* +X87438138Y-46193506D01* +X87457374Y-46443102D01* +X87524934Y-46684149D01* +X87638222Y-46907385D01* +X87668385Y-46952524D01* +X87871256Y-47031719D01* +X88682324Y-46220651D01* +X88668182Y-46206509D01* +X88700709Y-46173982D01* +X88714851Y-46188124D01* +X89525919Y-45377056D01* +X89446724Y-45174185D01* +X89401585Y-45144022D01* +X89178349Y-45030734D01* +X88937302Y-44963174D01* +X88687706Y-44943938D01* +X88439153Y-44973766D01* +X88201195Y-45051510D01* +X87982977Y-45174184D01* +X87903769Y-45377039D01* +X87839501Y-45312771D01* +X88424277Y-44727995D01* +X88477637Y-44662976D01* +X88517287Y-44588796D01* +X88541704Y-44508307D01* +X88549948Y-44424600D01* +X88541704Y-44340893D01* +X88517287Y-44260404D01* +X88477637Y-44186224D01* +X88424277Y-44121205D01* +X87379503Y-43076431D01* +X87638295Y-43282283D01* +X90725181Y-45937424D01* +X93707877Y-48709117D01* +X96581969Y-51593258D01* +X99343237Y-54585616D01* +X101988600Y-57682939D01* +X103325107Y-59351172D01* +X64638216Y-89576685D01* +X64303286Y-89155621D01* +X64298204Y-89149565D01* +X64293251Y-89143448D01* +X62372186Y-86894170D01* +X62356352Y-86876584D01* +X62356333Y-86876565D01* +X60320222Y-84730952D01* +X60320203Y-84730931D01* +X60303470Y-84714198D01* +X58157835Y-82678067D01* +X58157816Y-82678048D01* +X58149483Y-82670546D01* +X58140230Y-82662213D01* +X58140207Y-82662195D01* +X57239226Y-81892683D01* +X60938100Y-81892683D01* +X60948169Y-81976190D01* +X60974335Y-82056128D01* +X61015594Y-82129425D01* +X62048032Y-83603899D01* +X62102797Y-83667739D01* +X62168965Y-83719668D01* +X62243992Y-83757690D01* +X62324996Y-83780345D01* +X62408862Y-83786761D01* +X62492369Y-83776692D01* +X62572307Y-83750526D01* +X62645604Y-83709267D01* +X64120078Y-82676829D01* +X64183918Y-82622064D01* +X64235847Y-82555896D01* +X64273869Y-82480869D01* +X64296524Y-82399865D01* +X64302940Y-82315999D01* +X64292871Y-82232492D01* +X64266705Y-82152554D01* +X64225446Y-82079257D01* +X63193008Y-80604783D01* +X63138243Y-80540943D01* +X63072075Y-80489014D01* +X62997048Y-80450992D01* +X62916044Y-80428337D01* +X62832178Y-80421921D01* +X62748671Y-80431990D01* +X62668733Y-80458156D01* +X62595436Y-80499415D01* +X61120962Y-81531853D01* +X61057122Y-81586618D01* +X61005193Y-81652786D01* +X60967171Y-81727813D01* +X60944516Y-81808817D01* +X60938100Y-81892683D01* +X57239226Y-81892683D01* +X57197622Y-81857150D01* +X63170131Y-75491243D01* +X63182057Y-75481313D01* +X67371152Y-72788324D01* +X67395436Y-72768024D01* +X67438229Y-72722051D01* +X67453324Y-72702253D01* +X67464266Y-72679890D01* +X67468325Y-72666925D01* +X67483856Y-72606068D01* +X67487800Y-72574664D01* +X67487800Y-67372228D01* +X69562718Y-67372228D01* +X69562890Y-67374416D01* +X69628398Y-67605902D01* +X69737808Y-67820160D01* +X69886916Y-68008956D01* +X70069991Y-68165035D01* +X70279998Y-68282398D01* +X70508866Y-68356536D01* +X70747800Y-68384600D01* +X71147800Y-68384600D01* +X71147800Y-67180600D01* +X71193800Y-67180600D01* +X71193800Y-68384600D01* +X71593800Y-68384600D01* +X71832734Y-68356536D01* +X72061602Y-68282398D01* +X72271609Y-68165035D01* +X72454684Y-68008956D01* +X72603792Y-67820160D01* +X72713202Y-67605902D01* +X72778710Y-67374416D01* +X72778882Y-67372228D01* +X72690814Y-67180600D01* +X71193800Y-67180600D01* +X71147800Y-67180600D01* +X69650786Y-67180600D01* +X69562718Y-67372228D01* +X67487800Y-67372228D01* +X67487800Y-66942972D01* +X69562718Y-66942972D01* +X69650786Y-67134600D01* +X71147800Y-67134600D01* +X71147800Y-65930600D01* +X71193800Y-65930600D01* +X71193800Y-67134600D01* +X72690814Y-67134600D01* +X72778882Y-66942972D01* +X72778710Y-66940784D01* +X72713202Y-66709298D01* +X72603792Y-66495040D01* +X72454684Y-66306244D01* +X72271609Y-66150165D01* +X72061602Y-66032802D01* +X71832734Y-65958664D01* +X71593800Y-65930600D01* +X71193800Y-65930600D01* +X71147800Y-65930600D01* +X70747800Y-65930600D01* +X70508866Y-65958664D01* +X70279998Y-66032802D01* +X70069991Y-66150165D01* +X69886916Y-66306244D01* +X69737808Y-66495040D01* +X69628398Y-66709298D01* +X69562890Y-66940784D01* +X69562718Y-66942972D01* +X67487800Y-66942972D01* +X67487800Y-64617600D01* +X69537864Y-64617600D01* +X69561555Y-64858134D01* +X69631716Y-65089424D01* +X69745651Y-65302583D01* +X69898983Y-65489417D01* +X70085817Y-65642749D01* +X70298976Y-65756684D01* +X70530266Y-65826845D01* +X70710532Y-65844600D01* +X71631068Y-65844600D01* +X71811334Y-65826845D01* +X72042624Y-65756684D01* +X72255783Y-65642749D01* +X72442617Y-65489417D01* +X72595949Y-65302583D01* +X72709884Y-65089424D01* +X72780045Y-64858134D01* +X72803736Y-64617600D01* +X72780045Y-64377066D01* +X72709884Y-64145776D01* +X72595949Y-63932617D01* +X72442617Y-63745783D01* +X72255783Y-63592451D01* +X72042624Y-63478516D01* +X71811334Y-63408355D01* +X71631068Y-63390600D01* +X70710532Y-63390600D01* +X70530266Y-63408355D01* +X70298976Y-63478516D01* +X70085817Y-63592451D01* +X69898983Y-63745783D01* +X69745651Y-63932617D01* +X69631716Y-64145776D01* +X69561555Y-64377066D01* +X69537864Y-64617600D01* +X67487800Y-64617600D01* +X67487800Y-59789705D01* +X67485360Y-59764929D01* +X67479316Y-59744066D01* +X67446515Y-59658887D01* +X67435334Y-59636643D01* +X67422198Y-59619346D01* +X63185467Y-54934020D01* +X63169630Y-54893036D01* +X63157756Y-49846228D01* +X65244718Y-49846228D01* +X65244890Y-49848416D01* +X65310398Y-50079902D01* +X65419808Y-50294160D01* +X65568916Y-50482956D01* +X65751991Y-50639035D01* +X65961998Y-50756398D01* +X66190866Y-50830536D01* +X66429800Y-50858600D01* +X66829800Y-50858600D01* +X66829800Y-49654600D01* +X66875800Y-49654600D01* +X66875800Y-50858600D01* +X67275800Y-50858600D01* +X67514734Y-50830536D01* +X67743602Y-50756398D01* +X67953609Y-50639035D01* +X68136684Y-50482956D01* +X68285792Y-50294160D01* +X68395202Y-50079902D01* +X68460710Y-49848416D01* +X68460882Y-49846228D01* +X68372814Y-49654600D01* +X66875800Y-49654600D01* +X66829800Y-49654600D01* +X65332786Y-49654600D01* +X65244718Y-49846228D01* +X63157756Y-49846228D01* +X63156746Y-49416972D01* +X65244718Y-49416972D01* +X65332786Y-49608600D01* +X66829800Y-49608600D01* +X66829800Y-48404600D01* +X66875800Y-48404600D01* +X66875800Y-49608600D01* +X68372814Y-49608600D01* +X68460882Y-49416972D01* +X68460710Y-49414784D01* +X68395202Y-49183298D01* +X68285792Y-48969040D01* +X68136684Y-48780244D01* +X67953609Y-48624165D01* +X67743602Y-48506802D01* +X67514734Y-48432664D01* +X67275800Y-48404600D01* +X66875800Y-48404600D01* +X66829800Y-48404600D01* +X66429800Y-48404600D01* +X66190866Y-48432664D01* +X65961998Y-48506802D01* +X65751991Y-48624165D01* +X65568916Y-48780244D01* +X65419808Y-48969040D01* +X65310398Y-49183298D01* +X65244890Y-49414784D01* +X65244718Y-49416972D01* +X63156746Y-49416972D01* +X63151274Y-47091600D01* +X65219864Y-47091600D01* +X65243555Y-47332134D01* +X65313716Y-47563424D01* +X65427651Y-47776583D01* +X65580983Y-47963417D01* +X65767817Y-48116749D01* +X65980976Y-48230684D01* +X66212266Y-48300845D01* +X66392532Y-48318600D01* +X67313068Y-48318600D01* +X67493334Y-48300845D01* +X67724624Y-48230684D01* +X67937783Y-48116749D01* +X68124617Y-47963417D01* +X68277949Y-47776583D01* +X68391884Y-47563424D01* +X68462045Y-47332134D01* +X68485736Y-47091600D01* +X68462045Y-46851066D01* +X68391884Y-46619776D01* +X68277949Y-46406617D01* +X68124617Y-46219783D01* +X67937783Y-46066451D01* +X67724624Y-45952516D01* +X67493334Y-45882355D01* +X67313068Y-45864600D01* +X66392532Y-45864600D01* +X66212266Y-45882355D01* +X65980976Y-45952516D01* +X65767817Y-46066451D01* +X65580983Y-46219783D01* +X65427651Y-46406617D01* +X65313716Y-46619776D01* +X65243555Y-46851066D01* +X65219864Y-47091600D01* +X63151274Y-47091600D01* +X63144701Y-44298036D01* +X63140263Y-44265057D01* +X63122975Y-44201386D01* +X63114128Y-44178114D01* +X63100911Y-44157016D01* +X63089744Y-44144392D01* +X63042848Y-44097985D01* +X63023520Y-44082292D01* +X63001502Y-44070671D01* +X62985507Y-44065352D01* +X62921658Y-44048733D01* +X62888636Y-44044642D01* +X56817161Y-44094004D01* +X56792405Y-44096646D01* +X56771358Y-44102951D01* +X56686078Y-44136785D01* +X56663948Y-44148190D01* +X56646601Y-44161672D01* +X55009620Y-45678286D01* +X54968007Y-45694600D01* +X39894850Y-45694600D01* +X39881661Y-45691064D01* +X39878137Y-45677870D01* +X39881012Y-42658279D01* +X50733800Y-42658279D01* +X50733800Y-42968921D01* +X50794404Y-43273594D01* +X50913281Y-43560589D01* +X51085864Y-43818879D01* +X51305521Y-44038536D01* +X51563811Y-44211119D01* +X51850806Y-44329996D01* +X52155479Y-44390600D01* +X52466121Y-44390600D01* +X52770794Y-44329996D01* +X53057789Y-44211119D01* +X53316079Y-44038536D01* +X53535736Y-43818879D01* +X53708319Y-43560589D01* +X53827196Y-43273594D01* +X53887800Y-42968921D01* +X53887800Y-42658279D01* +X53827196Y-42353606D01* +X53798205Y-42283617D01* +X56538396Y-39543426D01* +X56564227Y-39522227D01* +X56648828Y-39419141D01* +X56711692Y-39301530D01* +X56748194Y-39181200D01* +X59412934Y-39181200D01* +X59421178Y-39264907D01* +X59445595Y-39345396D01* +X59485245Y-39419576D01* +X59507095Y-39446200D01* +X59485245Y-39472824D01* +X59445595Y-39547004D01* +X59421178Y-39627493D01* +X59412934Y-39711200D01* +X59412934Y-40451200D01* +X59421178Y-40534907D01* +X59445595Y-40615396D01* +X59485245Y-40689576D01* +X59538605Y-40754595D01* +X59603624Y-40807955D01* +X59677804Y-40847605D01* +X59758293Y-40872022D01* +X59842000Y-40880266D01* +X62242000Y-40880266D01* +X62325707Y-40872022D01* +X62406196Y-40847605D01* +X62480376Y-40807955D01* +X62545395Y-40754595D01* +X62598755Y-40689576D01* +X62638405Y-40615396D01* +X62662822Y-40534907D01* +X62671066Y-40451200D01* +X62671066Y-39711200D01* +X62662822Y-39627493D01* +X62638405Y-39547004D01* +X62598755Y-39472824D01* +X62576905Y-39446200D01* +X62598755Y-39419576D01* +X62638405Y-39345396D01* +X62662822Y-39264907D01* +X62671066Y-39181200D01* +X62669000Y-38940950D01* +X62562250Y-38834200D01* +X61065000Y-38834200D01* +X61065000Y-38854200D01* +X61019000Y-38854200D01* +X61019000Y-38834200D01* +X59521750Y-38834200D01* +X59415000Y-38940950D01* +X59412934Y-39181200D01* +X56748194Y-39181200D01* +X56750404Y-39173915D01* +X56760200Y-39074452D01* +X56760200Y-39074443D01* +X56763474Y-39041201D01* +X56760200Y-39007959D01* +X56760200Y-36641200D01* +X59412934Y-36641200D01* +X59421178Y-36724907D01* +X59445595Y-36805396D01* +X59485245Y-36879576D01* +X59507095Y-36906200D01* +X59485245Y-36932824D01* +X59445595Y-37007004D01* +X59421178Y-37087493D01* +X59412934Y-37171200D01* +X59412934Y-37911200D01* +X59421178Y-37994907D01* +X59445595Y-38075396D01* +X59485245Y-38149576D01* +X59507095Y-38176200D01* +X59485245Y-38202824D01* +X59445595Y-38277004D01* +X59421178Y-38357493D01* +X59412934Y-38441200D01* +X59415000Y-38681450D01* +X59521750Y-38788200D01* +X61019000Y-38788200D01* +X61019000Y-38768200D01* +X61065000Y-38768200D01* +X61065000Y-38788200D01* +X62562250Y-38788200D01* +X62669000Y-38681450D01* +X62671066Y-38441200D01* +X62662822Y-38357493D01* +X62638405Y-38277004D01* +X62598755Y-38202824D01* +X62576905Y-38176200D01* +X62598755Y-38149576D01* +X62638405Y-38075396D01* +X62662822Y-37994907D01* +X62671066Y-37911200D01* +X62671066Y-37171200D01* +X62662822Y-37087493D01* +X62638405Y-37007004D01* +X62598755Y-36932824D01* +X62576905Y-36906200D01* +X62598755Y-36879576D01* +X62638405Y-36805396D01* +X62662822Y-36724907D01* +X62671066Y-36641200D01* +X62669000Y-36400950D01* +X62562250Y-36294200D01* +X61065000Y-36294200D01* +X61065000Y-36314200D01* +X61019000Y-36314200D01* +X61019000Y-36294200D01* +X59521750Y-36294200D01* +X59415000Y-36400950D01* +X59412934Y-36641200D01* +X56760200Y-36641200D01* +X56760200Y-35383222D01* +X56772222Y-35371200D01* +X59412934Y-35371200D01* +X59421178Y-35454907D01* +X59445595Y-35535396D01* +X59485245Y-35609576D01* +X59507095Y-35636200D01* +X59485245Y-35662824D01* +X59445595Y-35737004D01* +X59421178Y-35817493D01* +X59412934Y-35901200D01* +X59415000Y-36141450D01* +X59521750Y-36248200D01* +X61019000Y-36248200D01* +X61019000Y-35024200D01* +X61065000Y-35024200D01* +X61065000Y-36248200D01* +X62562250Y-36248200D01* +X62669000Y-36141450D01* +X62671066Y-35901200D01* +X62662822Y-35817493D01* +X62638405Y-35737004D01* +X62598755Y-35662824D01* +X62576905Y-35636200D01* +X62598755Y-35609576D01* +X62638405Y-35535396D01* +X62662822Y-35454907D01* +X62671066Y-35371200D01* +X62669000Y-35130950D01* +X62562250Y-35024200D01* +X61065000Y-35024200D01* +X61019000Y-35024200D01* +X59521750Y-35024200D01* +X59415000Y-35130950D01* +X59412934Y-35371200D01* +X56772222Y-35371200D01* +X57735222Y-34408200D01* +X59477026Y-34408200D01* +X59445595Y-34467004D01* +X59421178Y-34547493D01* +X59412934Y-34631200D01* +X59415000Y-34871450D01* +X59521750Y-34978200D01* +X61019000Y-34978200D01* +X61019000Y-34958200D01* +X61065000Y-34958200D01* +X61065000Y-34978200D01* +X62562250Y-34978200D01* +X62669000Y-34871450D01* +X62671066Y-34631200D01* +X62662822Y-34547493D01* +X62638405Y-34467004D01* +X62598755Y-34392824D01* +X62576905Y-34366200D01* +X62598755Y-34339576D01* +X62638405Y-34265396D01* +X62662822Y-34184907D01* +X62671066Y-34101200D01* +X62671066Y-33361200D01* +X62662822Y-33277493D01* +X62638405Y-33197004D01* +X62598755Y-33122824D01* +X62576905Y-33096200D01* +X62598755Y-33069576D01* +X62638405Y-32995396D01* +X62662822Y-32914907D01* +X62671066Y-32831200D01* +X62671066Y-32091200D01* +X63312934Y-32091200D01* +X63312934Y-32831200D01* +X63321178Y-32914907D01* +X63345595Y-32995396D01* +X63385245Y-33069576D01* +X63407095Y-33096200D01* +X63385245Y-33122824D01* +X63345595Y-33197004D01* +X63321178Y-33277493D01* +X63312934Y-33361200D01* +X63312934Y-34101200D01* +X63321178Y-34184907D01* +X63345595Y-34265396D01* +X63385245Y-34339576D01* +X63407095Y-34366200D01* +X63385245Y-34392824D01* +X63345595Y-34467004D01* +X63321178Y-34547493D01* +X63312934Y-34631200D01* +X63312934Y-35371200D01* +X63321178Y-35454907D01* +X63345595Y-35535396D01* +X63385245Y-35609576D01* +X63407095Y-35636200D01* +X63385245Y-35662824D01* +X63345595Y-35737004D01* +X63321178Y-35817493D01* +X63312934Y-35901200D01* +X63312934Y-36641200D01* +X63321178Y-36724907D01* +X63345595Y-36805396D01* +X63385245Y-36879576D01* +X63407095Y-36906200D01* +X63385245Y-36932824D01* +X63345595Y-37007004D01* +X63321178Y-37087493D01* +X63312934Y-37171200D01* +X63312934Y-37911200D01* +X63321178Y-37994907D01* +X63345595Y-38075396D01* +X63385245Y-38149576D01* +X63407095Y-38176200D01* +X63385245Y-38202824D01* +X63345595Y-38277004D01* +X63321178Y-38357493D01* +X63312934Y-38441200D01* +X63312934Y-39181200D01* +X63321178Y-39264907D01* +X63345595Y-39345396D01* +X63385245Y-39419576D01* +X63407095Y-39446200D01* +X63385245Y-39472824D01* +X63345595Y-39547004D01* +X63321178Y-39627493D01* +X63312934Y-39711200D01* +X63312934Y-40451200D01* +X63321178Y-40534907D01* +X63345595Y-40615396D01* +X63385245Y-40689576D01* +X63438605Y-40754595D01* +X63503624Y-40807955D01* +X63577804Y-40847605D01* +X63658293Y-40872022D01* +X63742000Y-40880266D01* +X66142000Y-40880266D01* +X66225707Y-40872022D01* +X66306196Y-40847605D01* +X66380376Y-40807955D01* +X66445395Y-40754595D01* +X66498755Y-40689576D01* +X66538405Y-40615396D01* +X66562822Y-40534907D01* +X66571066Y-40451200D01* +X66571066Y-39711200D01* +X66569959Y-39699960D01* +X70720800Y-43850801D01* +X70720800Y-44202042D01* +X70715320Y-44202582D01* +X70587932Y-44241225D01* +X70470531Y-44303977D01* +X70367628Y-44388428D01* +X70283177Y-44491331D01* +X70220425Y-44608732D01* +X70181782Y-44736120D01* +X70168734Y-44868599D01* +X70168734Y-45568601D01* +X70181782Y-45701080D01* +X70220425Y-45828468D01* +X70283177Y-45945869D01* +X70367628Y-46048772D01* +X70470531Y-46133223D01* +X70587932Y-46195975D01* +X70662516Y-46218600D01* +X70587932Y-46241225D01* +X70470531Y-46303977D01* +X70367628Y-46388428D01* +X70283177Y-46491331D01* +X70220425Y-46608732D01* +X70181782Y-46736120D01* +X70168734Y-46868599D01* +X70168734Y-47568601D01* +X70181782Y-47701080D01* +X70220425Y-47828468D01* +X70283177Y-47945869D01* +X70367628Y-48048772D01* +X70470531Y-48133223D01* +X70587932Y-48195975D01* +X70715320Y-48234618D01* +X70720801Y-48235158D01* +X70720801Y-48460259D01* +X70718010Y-48488600D01* +X70729149Y-48601711D01* +X70759866Y-48702966D01* +X70762144Y-48710476D01* +X70815722Y-48810715D01* +X70836332Y-48835828D01* +X70869763Y-48876564D01* +X70869766Y-48876567D01* +X70887827Y-48898574D01* +X70909834Y-48916635D01* +X72375733Y-50382534D01* +X71145800Y-50382534D01* +X71047462Y-50392219D01* +X70952902Y-50420904D01* +X70865756Y-50467484D01* +X70789372Y-50530172D01* +X70726684Y-50606556D01* +X70680104Y-50693702D01* +X70651419Y-50788262D01* +X70641734Y-50886600D01* +X70641734Y-51036600D01* +X70651419Y-51134938D01* +X70674675Y-51211600D01* +X70651419Y-51288262D01* +X70641734Y-51386600D01* +X70641734Y-51536600D01* +X70651419Y-51634938D01* +X70674675Y-51711600D01* +X70651419Y-51788262D01* +X70645501Y-51848348D01* +X70631181Y-51834028D01* +X70495731Y-51743523D01* +X70345227Y-51681182D01* +X70185452Y-51649400D01* +X70022548Y-51649400D01* +X69862773Y-51681182D01* +X69712269Y-51743523D01* +X69576819Y-51834028D01* +X69461628Y-51949219D01* +X69371123Y-52084669D01* +X69308782Y-52235173D01* +X69277000Y-52394948D01* +X69277000Y-52557852D01* +X69308782Y-52717627D01* +X69371123Y-52868131D01* +X69461628Y-53003581D01* +X69576819Y-53118772D01* +X69712269Y-53209277D01* +X69862773Y-53271618D01* +X70022548Y-53303400D01* +X70185452Y-53303400D01* +X70345227Y-53271618D01* +X70495731Y-53209277D01* +X70631181Y-53118772D01* +X70648155Y-53101798D01* +X70651419Y-53134938D01* +X70674675Y-53211600D01* +X70651419Y-53288262D01* +X70641734Y-53386600D01* +X70641734Y-53536600D01* +X70651419Y-53634938D01* +X70674675Y-53711600D01* +X70651419Y-53788262D01* +X70641734Y-53886600D01* +X70641734Y-54036600D01* +X70651419Y-54134938D01* +X70674675Y-54211600D01* +X70651419Y-54288262D01* +X70641734Y-54386600D01* +X70641734Y-54536600D01* +X70651419Y-54634938D01* +X70674675Y-54711600D01* +X70651419Y-54788262D01* +X70641931Y-54884600D01* +X69866839Y-54884600D01* +X69830174Y-54763733D01* +X69767422Y-54646332D01* +X69682971Y-54543429D01* +X69580068Y-54458978D01* +X69462667Y-54396226D01* +X69335279Y-54357583D01* +X69202800Y-54344535D01* +X68502798Y-54344535D01* +X68370319Y-54357583D01* +X68242931Y-54396226D01* +X68125530Y-54458978D01* +X68022627Y-54543429D01* +X67938176Y-54646332D01* +X67875424Y-54763733D01* +X67852799Y-54838317D01* +X67830174Y-54763733D01* +X67767422Y-54646332D01* +X67682971Y-54543429D01* +X67580068Y-54458978D01* +X67462667Y-54396226D01* +X67429800Y-54386256D01* +X67429800Y-53400666D01* +X68052800Y-53400666D01* +X68136507Y-53392422D01* +X68216996Y-53368005D01* +X68291176Y-53328355D01* +X68356195Y-53274995D01* +X68409555Y-53209976D01* +X68449205Y-53135796D01* +X68473622Y-53055307D01* +X68481866Y-52971600D01* +X68481866Y-51371600D01* +X68473622Y-51287893D01* +X68449205Y-51207404D01* +X68409555Y-51133224D01* +X68356195Y-51068205D01* +X68291176Y-51014845D01* +X68216996Y-50975195D01* +X68136507Y-50950778D01* +X68052800Y-50942534D01* +X65652800Y-50942534D01* +X65569093Y-50950778D01* +X65488604Y-50975195D01* +X65414424Y-51014845D01* +X65349405Y-51068205D01* +X65296045Y-51133224D01* +X65256395Y-51207404D01* +X65231978Y-51287893D01* +X65223734Y-51371600D01* +X65223734Y-52971600D01* +X65231978Y-53055307D01* +X65256395Y-53135796D01* +X65296045Y-53209976D01* +X65349405Y-53274995D01* +X65414424Y-53328355D01* +X65488604Y-53368005D01* +X65569093Y-53392422D01* +X65652800Y-53400666D01* +X66275801Y-53400666D01* +X66275800Y-54386255D01* +X66242931Y-54396226D01* +X66125530Y-54458978D01* +X66022627Y-54543429D01* +X65938176Y-54646332D01* +X65875424Y-54763733D01* +X65836781Y-54891121D01* +X65823733Y-55023600D01* +X65823733Y-55923602D01* +X65836781Y-56056081D01* +X65875424Y-56183469D01* +X65938176Y-56300870D01* +X66022627Y-56403773D01* +X66125530Y-56488224D01* +X66242931Y-56550976D01* +X66370319Y-56589619D01* +X66502798Y-56602667D01* +X67202800Y-56602667D01* +X67335279Y-56589619D01* +X67462667Y-56550976D01* +X67580068Y-56488224D01* +X67682971Y-56403773D01* +X67767422Y-56300870D01* +X67830174Y-56183469D01* +X67852799Y-56108885D01* +X67875424Y-56183469D01* +X67938176Y-56300870D01* +X68022627Y-56403773D01* +X68125530Y-56488224D01* +X68242931Y-56550976D01* +X68370319Y-56589619D01* +X68502798Y-56602667D01* +X69174932Y-56602667D01* +X69157234Y-56620365D01* +X69135227Y-56638426D01* +X69117166Y-56660433D01* +X69117163Y-56660436D01* +X69105339Y-56674844D01* +X69063122Y-56726285D01* +X69032426Y-56783714D01* +X69009544Y-56826524D01* +X68976549Y-56935289D01* +X68965410Y-57048400D01* +X68968201Y-57076741D01* +X68968200Y-59204469D01* +X68965410Y-59232800D01* +X68968200Y-59261131D01* +X68968200Y-59261135D01* +X68969267Y-59271969D01* +X68976549Y-59345911D01* +X68990342Y-59391377D01* +X69009543Y-59454675D01* +X69063121Y-59554914D01* +X69135226Y-59642774D01* +X69157238Y-59660839D01* +X73641801Y-64145402D01* +X73641800Y-73471799D01* +X73305571Y-73808028D01* +X73103500Y-73519442D01* +X73016825Y-73418406D01* +X72912105Y-73336220D01* +X72793362Y-73276044D01* +X72665162Y-73240190D01* +X72532429Y-73230035D01* +X72400267Y-73245970D01* +X72326195Y-73270216D01* +X72374314Y-73208903D01* +X72434490Y-73090161D01* +X72470345Y-72961960D01* +X72480499Y-72829228D01* +X72464564Y-72697065D01* +X72423152Y-72570551D01* +X72357853Y-72454546D01* +X71956348Y-71881138D01* +X71869673Y-71780102D01* +X71764953Y-71697916D01* +X71747800Y-71689223D01* +X71747800Y-70926666D01* +X72370800Y-70926666D01* +X72454507Y-70918422D01* +X72534996Y-70894005D01* +X72609176Y-70854355D01* +X72674195Y-70800995D01* +X72727555Y-70735976D01* +X72767205Y-70661796D01* +X72791622Y-70581307D01* +X72799866Y-70497600D01* +X72799866Y-68897600D01* +X72791622Y-68813893D01* +X72767205Y-68733404D01* +X72727555Y-68659224D01* +X72674195Y-68594205D01* +X72609176Y-68540845D01* +X72534996Y-68501195D01* +X72454507Y-68476778D01* +X72370800Y-68468534D01* +X69970800Y-68468534D01* +X69887093Y-68476778D01* +X69806604Y-68501195D01* +X69732424Y-68540845D01* +X69667405Y-68594205D01* +X69614045Y-68659224D01* +X69574395Y-68733404D01* +X69549978Y-68813893D01* +X69541734Y-68897600D01* +X69541734Y-70497600D01* +X69549978Y-70581307D01* +X69574395Y-70661796D01* +X69614045Y-70735976D01* +X69667405Y-70800995D01* +X69732424Y-70854355D01* +X69806604Y-70894005D01* +X69887093Y-70918422D01* +X69970800Y-70926666D01* +X70593800Y-70926666D01* +X70593801Y-72006218D01* +X70273356Y-72230596D01* +X70172320Y-72317272D01* +X70090134Y-72421993D01* +X70029958Y-72540735D01* +X69994103Y-72668936D01* +X69983949Y-72801668D01* +X69999884Y-72933831D01* +X70041296Y-73060345D01* +X70106595Y-73176350D01* +X70508100Y-73749758D01* +X70594775Y-73850794D01* +X70699495Y-73932980D01* +X70818238Y-73993156D01* +X70946438Y-74029010D01* +X71079171Y-74039165D01* +X71211333Y-74023230D01* +X71285405Y-73998984D01* +X71237286Y-74060297D01* +X71177110Y-74179039D01* +X71141255Y-74307240D01* +X71131101Y-74439972D01* +X71147036Y-74572135D01* +X71188448Y-74698649D01* +X71253747Y-74814654D01* +X71655252Y-75388062D01* +X71741927Y-75489098D01* +X71846647Y-75571284D01* +X71965390Y-75631460D01* +X72093590Y-75667314D01* +X72226323Y-75677469D01* +X72358485Y-75661534D01* +X72485000Y-75620122D01* +X72601005Y-75554824D01* +X72966241Y-75299083D01* +X72934600Y-75458148D01* +X72934600Y-75621052D01* +X72966382Y-75780827D01* +X73028723Y-75931331D01* +X73119228Y-76066781D01* +X73234419Y-76181972D01* +X73369869Y-76272477D01* +X73401528Y-76285591D01* +X70228396Y-78659459D01* +X67913613Y-78659459D01* +X67892252Y-78607889D01* +X67747028Y-78390546D01* +X67562193Y-78205711D01* +X67344850Y-78060487D01* +X67103352Y-77960455D01* +X66846978Y-77909459D01* +X66585582Y-77909459D01* +X66329208Y-77960455D01* +X66087710Y-78060487D01* +X65870367Y-78205711D01* +X65685532Y-78390546D01* +X65540308Y-78607889D01* +X65440276Y-78849387D01* +X65389280Y-79105761D01* +X65389280Y-79367157D01* +X65440276Y-79623531D01* +X65540308Y-79865029D01* +X65685532Y-80082372D01* +X65870367Y-80267207D01* +X66087710Y-80412431D01* +X66329208Y-80512463D01* +X66585582Y-80563459D01* +X66846978Y-80563459D01* +X67103352Y-80512463D01* +X67244252Y-80454100D01* +X71886593Y-80454100D01* +X71901018Y-80536966D01* +X71931332Y-80615425D01* +X71976370Y-80686462D01* +X73022994Y-82026080D01* +X73081026Y-82086966D01* +X73149821Y-82135361D01* +X73226735Y-82169405D01* +X73308813Y-82187789D01* +X73392900Y-82189807D01* +X73475766Y-82175382D01* +X73554225Y-82145068D01* +X73625262Y-82100030D01* +X74964880Y-81053406D01* +X75025766Y-80995374D01* +X75074161Y-80926579D01* +X75108205Y-80849665D01* +X75126589Y-80767587D01* +X75128607Y-80683500D01* +X75114182Y-80600634D01* +X75083868Y-80522175D01* +X75038830Y-80451138D01* +X74529679Y-79799455D01* +X74601301Y-79743498D01* +X74655196Y-79954494D01* +X74856837Y-80102847D01* +X75083547Y-80209012D01* +X75326612Y-80268909D01* +X75576692Y-80280234D01* +X75824176Y-80242554D01* +X76059554Y-80157316D01* +X76108033Y-80132879D01* +X76211361Y-79941172D01* +X75505183Y-79037304D01* +X75489423Y-79049617D01* +X75461102Y-79013370D01* +X75476863Y-79001056D01* +X74770684Y-78097189D01* +X74559674Y-78151070D01* +X74524234Y-78192197D01* +X74384585Y-78399963D01* +X74288153Y-78630979D01* +X74238642Y-78876371D01* +X74237957Y-79126706D01* +X74286122Y-79372365D01* +X74381287Y-79603906D01* +X74572978Y-79707246D01* +X74501356Y-79763203D01* +X73992206Y-79111520D01* +X73934174Y-79050634D01* +X73865379Y-79002239D01* +X73788465Y-78968195D01* +X73706387Y-78949811D01* +X73622300Y-78947793D01* +X73539434Y-78962218D01* +X73460975Y-78992532D01* +X73389938Y-79037570D01* +X72050320Y-80084194D01* +X71989434Y-80142226D01* +X71941039Y-80211021D01* +X71906995Y-80287935D01* +X71888611Y-80370013D01* +X71886593Y-80454100D01* +X67244252Y-80454100D01* +X67344850Y-80412431D01* +X67562193Y-80267207D01* +X67747028Y-80082372D01* +X67892252Y-79865029D01* +X67913613Y-79813459D01* +X70407403Y-79813459D01* +X70451197Y-79815428D01* +X70492183Y-79809174D01* +X70533453Y-79805109D01* +X70548262Y-79800617D01* +X70563556Y-79798283D01* +X70602529Y-79784155D01* +X70642217Y-79772116D01* +X70655868Y-79764820D01* +X70670410Y-79759548D01* +X70705868Y-79738094D01* +X70742456Y-79718538D01* +X70776367Y-79690708D01* +X72944268Y-78068868D01* +X74806933Y-78068868D01* +X75513111Y-78972736D01* +X75528871Y-78960423D01* +X75557192Y-78996670D01* +X75541431Y-79008984D01* +X76247610Y-79912851D01* +X76458620Y-79858970D01* +X76494060Y-79817843D01* +X76633709Y-79610077D01* +X76730141Y-79379061D01* +X76779652Y-79133669D01* +X76780337Y-78883334D01* +X76732172Y-78637675D01* +X76637007Y-78406134D01* +X76445316Y-78302794D01* +X76514444Y-78248785D01* +X76518784Y-78255280D01* +X76696655Y-78433151D01* +X76905809Y-78572903D01* +X77138208Y-78669166D01* +X77384921Y-78718240D01* +X77636469Y-78718240D01* +X77883182Y-78669166D01* +X78115581Y-78572903D01* +X78324735Y-78433151D01* +X78502606Y-78255280D01* +X78642358Y-78046126D01* +X78738621Y-77813727D01* +X78787695Y-77567014D01* +X78787695Y-77315466D01* +X78738621Y-77068753D01* +X78642358Y-76836354D01* +X78596392Y-76767561D01* +X78698202Y-76869371D01* +X78907356Y-77009123D01* +X79139755Y-77105386D01* +X79386468Y-77154460D01* +X79638016Y-77154460D01* +X79884729Y-77105386D01* +X80117128Y-77009123D01* +X80326282Y-76869371D01* +X80504153Y-76691500D01* +X80643905Y-76482346D01* +X80740168Y-76249947D01* +X80789242Y-76003234D01* +X80789242Y-75751686D01* +X80740168Y-75504973D01* +X80643905Y-75272574D01* +X80504153Y-75063420D01* +X80326282Y-74885549D01* +X80117128Y-74745797D01* +X79884729Y-74649534D01* +X79638016Y-74600460D01* +X79386468Y-74600460D01* +X79139755Y-74649534D01* +X78907356Y-74745797D01* +X78698202Y-74885549D01* +X78520331Y-75063420D01* +X78380579Y-75272574D01* +X78284316Y-75504973D01* +X78235242Y-75751686D01* +X78235242Y-76003234D01* +X78284316Y-76249947D01* +X78380579Y-76482346D01* +X78426545Y-76551139D01* +X78324735Y-76449329D01* +X78115581Y-76309577D01* +X77883182Y-76213314D01* +X77636469Y-76164240D01* +X77384921Y-76164240D01* +X77138208Y-76213314D01* +X76905809Y-76309577D01* +X76696655Y-76449329D01* +X76518784Y-76627200D01* +X76379032Y-76836354D01* +X76282769Y-77068753D01* +X76233695Y-77315466D01* +X76233695Y-77567014D01* +X76282769Y-77813727D01* +X76379032Y-78046126D01* +X76488815Y-78210429D01* +X76416993Y-78266542D01* +X76363098Y-78055546D01* +X76161457Y-77907193D01* +X75934747Y-77801028D01* +X75691682Y-77741131D01* +X75441602Y-77729806D01* +X75194118Y-77767486D01* +X74958740Y-77852724D01* +X74910261Y-77877161D01* +X74806933Y-78068868D01* +X72944268Y-78068868D01* +X78881146Y-73627400D01* +X84573783Y-73627400D01* +X84622294Y-73628789D01* +X84658534Y-73622653D01* +X84695112Y-73619050D01* +X84714443Y-73613186D01* +X84734358Y-73609814D01* +X84768697Y-73596729D01* +X84803876Y-73586057D01* +X84821698Y-73576531D01* +X84840566Y-73569341D01* +X84871682Y-73549814D01* +X84904115Y-73532479D01* +X84941664Y-73501663D01* +X95000338Y-65717564D01* +X95001405Y-65717027D01* +X95045043Y-65682968D01* +X95066741Y-65666177D01* +X95067616Y-65665350D01* +X95091005Y-65647096D01* +X95108830Y-65626431D01* +X95128675Y-65607690D01* +X95145860Y-65583499D01* +X95165241Y-65561030D01* +X95178691Y-65537286D01* +X95194499Y-65515033D01* +X95206638Y-65487946D01* +X95221259Y-65462134D01* +X95229816Y-65436229D01* +X95240982Y-65411313D01* +X95247604Y-65382376D01* +X95256907Y-65354211D01* +X95260246Y-65327130D01* +X95266336Y-65300518D01* +X95267185Y-65270854D01* +X95267332Y-65269665D01* +X95268002Y-65242348D01* +X95269589Y-65186906D01* +X95269389Y-65185727D01* +X95295958Y-64101751D01* +X95829753Y-63653844D01* +X95888577Y-63593723D01* +X95934541Y-63523281D01* +X95965880Y-63445225D01* +X95981388Y-63362556D01* +X95980471Y-63278449D01* +X95963163Y-63196137D01* +X95930129Y-63118784D01* +X95882639Y-63049362D01* +X94879890Y-61854332D01* +X94819768Y-61795508D01* +X94749326Y-61749544D01* +X94671271Y-61718205D01* +X94588601Y-61702697D01* +X94504495Y-61703614D01* +X94422183Y-61720923D01* +X94344830Y-61753956D01* +X94275408Y-61801446D01* +X93662573Y-62315676D01* +X93603749Y-62375797D01* +X93557785Y-62446239D01* +X93526446Y-62524295D01* +X93510938Y-62606964D01* +X93511855Y-62691071D01* +X93529163Y-62773383D01* +X93562197Y-62850736D01* +X93609687Y-62920158D01* +X94154655Y-63569625D01* +X94121096Y-64938790D01* +X84384814Y-72473400D01* +X78702137Y-72473400D01* +X78658343Y-72471431D01* +X78617355Y-72477685D01* +X78576088Y-72481750D01* +X78561280Y-72486242D01* +X78545984Y-72488576D01* +X78507006Y-72502706D01* +X78467324Y-72514743D01* +X78453675Y-72522038D01* +X78439130Y-72527311D01* +X78403665Y-72548769D01* +X78367085Y-72568321D01* +X78333184Y-72596143D01* +X76421352Y-74026414D01* +X76419800Y-74016044D01* +X76419800Y-69512557D01* +X76475677Y-69428931D01* +X76538018Y-69278427D01* +X76569800Y-69118652D01* +X76569800Y-68955748D01* +X76538018Y-68795973D01* +X76475677Y-68645469D01* +X76385172Y-68510019D01* +X76269981Y-68394828D01* +X76134531Y-68304323D01* +X75984027Y-68241982D01* +X75824252Y-68210200D01* +X75661348Y-68210200D01* +X75501573Y-68241982D01* +X75351069Y-68304323D01* +X75215619Y-68394828D01* +X75100428Y-68510019D01* +X75009923Y-68645469D01* +X74947582Y-68795973D01* +X74915800Y-68955748D01* +X74915800Y-69118652D01* +X74947582Y-69278427D01* +X75009923Y-69428931D01* +X75065800Y-69512557D01* +X75065801Y-73726156D01* +X74732287Y-73974154D01* +X74754457Y-73932676D01* +X74773803Y-73868900D01* +X74787451Y-73823912D01* +X74793574Y-73761736D01* +X74795800Y-73739136D01* +X74795800Y-73739131D01* +X74798590Y-73710800D01* +X74795800Y-73682469D01* +X74795800Y-63934739D01* +X74798591Y-63906400D01* +X74787451Y-63793288D01* +X74754457Y-63684523D01* +X74733216Y-63644785D01* +X74700879Y-63584285D01* +X74628774Y-63496426D01* +X74606762Y-63478361D01* +X70122200Y-58993799D01* +X70122200Y-58210182D01* +X70218373Y-58250018D01* +X70378148Y-58281800D01* +X70541052Y-58281800D01* +X70660593Y-58258021D01* +X70651419Y-58288262D01* +X70641734Y-58386600D01* +X70641734Y-58536600D01* +X70651419Y-58634938D01* +X70680104Y-58729498D01* +X70726684Y-58816644D01* +X70789372Y-58893028D01* +X70865756Y-58955716D01* +X70952902Y-59002296D01* +X71047462Y-59030981D01* +X71145800Y-59040666D01* +X72545800Y-59040666D01* +X72644138Y-59030981D01* +X72738698Y-59002296D01* +X72825844Y-58955716D01* +X72902228Y-58893028D01* +X72964916Y-58816644D01* +X73011496Y-58729498D01* +X73040181Y-58634938D01* +X73049866Y-58536600D01* +X73049866Y-58503448D01* +X73070276Y-58497257D01* +X73170515Y-58443679D01* +X73258374Y-58371574D01* +X73276439Y-58349562D01* +X73344201Y-58281800D01* +X73436652Y-58281800D01* +X73596427Y-58250018D01* +X73746931Y-58187677D01* +X73882381Y-58097172D01* +X73997572Y-57981981D01* +X74088077Y-57846531D01* +X74150418Y-57696027D01* +X74182200Y-57536252D01* +X74182200Y-57373348D01* +X74150418Y-57213573D01* +X74088077Y-57063069D01* +X73997572Y-56927619D01* +X73882381Y-56812428D01* +X73746931Y-56721923D01* +X73596427Y-56659582D01* +X73436652Y-56627800D01* +X73273748Y-56627800D01* +X73113973Y-56659582D01* +X73021026Y-56698082D01* +X73040181Y-56634938D01* +X73049866Y-56536600D01* +X73049866Y-56386600D01* +X73040181Y-56288262D01* +X73016925Y-56211600D01* +X73040181Y-56134938D01* +X73049866Y-56036600D01* +X73049866Y-55886600D01* +X73040181Y-55788262D01* +X73016925Y-55711600D01* +X73040181Y-55634938D01* +X73049866Y-55536600D01* +X73049866Y-55386600D01* +X73040181Y-55288262D01* +X73016925Y-55211600D01* +X73040181Y-55134938D01* +X73049866Y-55036600D01* +X73049866Y-54886600D01* +X73040181Y-54788262D01* +X73016925Y-54711600D01* +X73040181Y-54634938D01* +X73049866Y-54536600D01* +X73049866Y-54386600D01* +X73040181Y-54288262D01* +X73016925Y-54211600D01* +X73040181Y-54134938D01* +X73049866Y-54036600D01* +X73049866Y-53886600D01* +X73040181Y-53788262D01* +X73016925Y-53711600D01* +X73040181Y-53634938D01* +X73049866Y-53536600D01* +X73049866Y-53386600D01* +X73040181Y-53288262D01* +X73016925Y-53211600D01* +X73040181Y-53134938D01* +X73049866Y-53036600D01* +X73049866Y-52886600D01* +X73040181Y-52788262D01* +X73016925Y-52711600D01* +X73040181Y-52634938D01* +X73049866Y-52536600D01* +X73049866Y-52386600D01* +X73040181Y-52288262D01* +X73016925Y-52211600D01* +X73040181Y-52134938D01* +X73049866Y-52036600D01* +X73049866Y-51886600D01* +X73040181Y-51788262D01* +X73016925Y-51711600D01* +X73040181Y-51634938D01* +X73049866Y-51536600D01* +X73049866Y-51386600D01* +X73040181Y-51288262D01* +X73016925Y-51211600D01* +X73040181Y-51134938D01* +X73048067Y-51054868D01* +X78693800Y-56700601D01* +X78693801Y-59182731D01* +X78597462Y-59192219D01* +X78520800Y-59215475D01* +X78444138Y-59192219D01* +X78345800Y-59182534D01* +X78195800Y-59182534D01* +X78097462Y-59192219D01* +X78053359Y-59205598D01* +X78004507Y-59190778D01* +X77920800Y-59182534D01* +X77900550Y-59184600D01* +X77841281Y-59243869D01* +X77839451Y-59225289D01* +X77817905Y-59154263D01* +X77806457Y-59116524D01* +X77752879Y-59016285D01* +X77680774Y-58928426D01* +X77658759Y-58910359D01* +X77613237Y-58864836D01* +X77595174Y-58842826D01* +X77507315Y-58770721D01* +X77407076Y-58717143D01* +X77332933Y-58694652D01* +X77298311Y-58684149D01* +X77242573Y-58678660D01* +X77213536Y-58675800D01* +X77213531Y-58675800D01* +X77185200Y-58673010D01* +X77156869Y-58675800D01* +X76756331Y-58675800D01* +X76728000Y-58673010D01* +X76699669Y-58675800D01* +X76569800Y-58675800D01* +X76569800Y-58643348D01* +X76538018Y-58483573D01* +X76475677Y-58333069D01* +X76385172Y-58197619D01* +X76269981Y-58082428D01* +X76134531Y-57991923D01* +X75984027Y-57929582D01* +X75824252Y-57897800D01* +X75661348Y-57897800D01* +X75501573Y-57929582D01* +X75351069Y-57991923D01* +X75215619Y-58082428D01* +X75100428Y-58197619D01* +X75009923Y-58333069D01* +X74947582Y-58483573D01* +X74915800Y-58643348D01* +X74915800Y-58806252D01* +X74947582Y-58966027D01* +X75009923Y-59116531D01* +X75066726Y-59201543D01* +X75020800Y-59215475D01* +X74944138Y-59192219D01* +X74845800Y-59182534D01* +X74695800Y-59182534D01* +X74597462Y-59192219D01* +X74520800Y-59215475D01* +X74444138Y-59192219D01* +X74345800Y-59182534D01* +X74195800Y-59182534D01* +X74097462Y-59192219D01* +X74020800Y-59215475D01* +X73944138Y-59192219D01* +X73845800Y-59182534D01* +X73695800Y-59182534D01* +X73597462Y-59192219D01* +X73502902Y-59220904D01* +X73415756Y-59267484D01* +X73339372Y-59330172D01* +X73276684Y-59406556D01* +X73230104Y-59493702D01* +X73201419Y-59588262D01* +X73191734Y-59686600D01* +X73191734Y-61086600D01* +X73201419Y-61184938D01* +X73230104Y-61279498D01* +X73276684Y-61366644D01* +X73339372Y-61443028D01* +X73415756Y-61505716D01* +X73502902Y-61552296D01* +X73597462Y-61580981D01* +X73695800Y-61590666D01* +X73845800Y-61590666D01* +X73944138Y-61580981D01* +X74020800Y-61557725D01* +X74097462Y-61580981D01* +X74195800Y-61590666D01* +X74345800Y-61590666D01* +X74444138Y-61580981D01* +X74520800Y-61557725D01* +X74597462Y-61580981D01* +X74695800Y-61590666D01* +X74845800Y-61590666D01* +X74944138Y-61580981D01* +X75020800Y-61557725D01* +X75097462Y-61580981D01* +X75195800Y-61590666D01* +X75345800Y-61590666D01* +X75444138Y-61580981D01* +X75520800Y-61557725D01* +X75597462Y-61580981D01* +X75695800Y-61590666D01* +X75845800Y-61590666D01* +X75944138Y-61580981D01* +X76020800Y-61557725D01* +X76097462Y-61580981D01* +X76195800Y-61590666D01* +X76345800Y-61590666D01* +X76444138Y-61580981D01* +X76520800Y-61557725D01* +X76597462Y-61580981D01* +X76695800Y-61590666D01* +X76845800Y-61590666D01* +X76944138Y-61580981D01* +X77020800Y-61557725D01* +X77097462Y-61580981D01* +X77195800Y-61590666D01* +X77345800Y-61590666D01* +X77444138Y-61580981D01* +X77488241Y-61567602D01* +X77537093Y-61582422D01* +X77620800Y-61590666D01* +X77641050Y-61588600D01* +X77693800Y-61535850D01* +X77693801Y-63358059D01* +X77691010Y-63386400D01* +X77702149Y-63499511D01* +X77730729Y-63593723D01* +X77735144Y-63608276D01* +X77788722Y-63708515D01* +X77810680Y-63735270D01* +X77842763Y-63774364D01* +X77842766Y-63774367D01* +X77860827Y-63796374D01* +X77882833Y-63814434D01* +X78863798Y-64795400D01* +X78790800Y-64795400D01* +X78764190Y-64798219D01* +X78052990Y-64950619D01* +X78033630Y-64956412D01* +X78011417Y-64967655D01* +X77452617Y-65323255D01* +X77426828Y-65344971D01* +X76918828Y-65903771D01* +X76909658Y-65915101D01* +X76897183Y-65936647D01* +X76643183Y-66495447D01* +X76633277Y-66528689D01* +X76531677Y-67189089D01* +X76530977Y-67222425D01* +X76581777Y-67679625D01* +X76587517Y-67705761D01* +X76790717Y-68315361D01* +X76796686Y-68330115D01* +X76809600Y-68351400D01* +X77266800Y-68961000D01* +X77290430Y-68985048D01* +X77747630Y-69340648D01* +X77765288Y-69352165D01* +X77788251Y-69361784D01* +X78359000Y-69537399D01* +X78359000Y-70459600D01* +X78361272Y-70483517D01* +X78368335Y-70507390D01* +X78379919Y-70529428D01* +X78395580Y-70548781D01* +X78414716Y-70564708D01* +X78436591Y-70576595D01* +X78460365Y-70583986D01* +X78485124Y-70586597D01* +X85851124Y-70637397D01* +X85876776Y-70634960D01* +X85900601Y-70627733D01* +X85922557Y-70615997D01* +X85941803Y-70600203D01* +X85957597Y-70580957D01* +X85969333Y-70559001D01* +X85976560Y-70535176D01* +X85979000Y-70510400D01* +X85979000Y-69581623D01* +X86557990Y-69358935D01* +X86577855Y-69349233D01* +X86597829Y-69334372D01* +X87156629Y-68826372D01* +X87175242Y-68805230D01* +X87530842Y-68297230D01* +X87547283Y-68264561D01* +X87750483Y-67654961D01* +X87754560Y-67639576D01* +X87757000Y-67614800D01* +X87757000Y-66954400D01* +X87752114Y-66919510D01* +X87548914Y-66208310D01* +X87533945Y-66175017D01* +X87178345Y-65616217D01* +X87156159Y-65590002D01* +X86648159Y-65132802D01* +X86633978Y-65121751D01* +X86612046Y-65109969D01* +X86002446Y-64855969D01* +X85989552Y-64851395D01* +X85965098Y-64846722D01* +X85406298Y-64795922D01* +X85394800Y-64795400D01* +X85219647Y-64795400D01* +X85219647Y-64619019D01* +X85252514Y-64609049D01* +X85369915Y-64546297D01* +X85472818Y-64461846D01* +X85557269Y-64358943D01* +X85620021Y-64241542D01* +X85658664Y-64114154D01* +X85671712Y-63981675D01* +X85671712Y-63081673D01* +X85658664Y-62949194D01* +X85620021Y-62821806D01* +X85557269Y-62704405D01* +X85472818Y-62601502D01* +X85369915Y-62517051D01* +X85252514Y-62454299D01* +X85244943Y-62452002D01* +X85342407Y-62399908D01* +X85430266Y-62327803D01* +X85448331Y-62305791D01* +X85596054Y-62158068D01* +X91732778Y-62158068D01* +X92149168Y-62657516D01* +X92209289Y-62716340D01* +X92279731Y-62762303D01* +X92357787Y-62793642D01* +X92440456Y-62809150D01* +X92524563Y-62808233D01* +X92606874Y-62790925D01* +X92684227Y-62757892D01* +X92753650Y-62710401D01* +X92959345Y-62535105D01* +X92972503Y-62384713D01* +X92280060Y-61559491D01* +X91745936Y-62007675D01* +X91732778Y-62158068D01* +X85596054Y-62158068D01* +X85847314Y-61906808D01* +X85908055Y-61946443D01* +X86031591Y-61996041D01* +X86162429Y-62020586D01* +X86295541Y-62019134D01* +X86425812Y-61991741D01* +X86548236Y-61939459D01* +X86658108Y-61864299D01* +X87175188Y-61430417D01* +X87268286Y-61335265D01* +X87341032Y-61223780D01* +X87370937Y-61149293D01* +X91047670Y-61149293D01* +X91048588Y-61233399D01* +X91065896Y-61315711D01* +X91098929Y-61393064D01* +X91146419Y-61462487D01* +X91565975Y-61959279D01* +X91716367Y-61972437D01* +X92243734Y-61529923D01* +X92315298Y-61529923D01* +X93007741Y-62355144D01* +X93158134Y-62368302D01* +X93366485Y-62196171D01* +X93425310Y-62136050D01* +X93471273Y-62065608D01* +X93502611Y-61987553D01* +X93518120Y-61904883D01* +X93517202Y-61820777D01* +X93499894Y-61738465D01* +X93466861Y-61661112D01* +X93419371Y-61591689D01* +X92999815Y-61094897D01* +X92849423Y-61081739D01* +X92315298Y-61529923D01* +X92243734Y-61529923D01* +X92250492Y-61524253D01* +X91558049Y-60699032D01* +X91407656Y-60685874D01* +X91199305Y-60858005D01* +X91140480Y-60918126D01* +X91094517Y-60988568D01* +X91063179Y-61066623D01* +X91047670Y-61149293D01* +X87370937Y-61149293D01* +X87390630Y-61100244D01* +X87415175Y-60969407D01* +X87413723Y-60836294D01* +X87386330Y-60706023D01* +X87334048Y-60583599D01* +X87258888Y-60473727D01* +X87013270Y-60181010D01* +X87070621Y-60181010D01* +X87451657Y-60638326D01* +X87511778Y-60697150D01* +X87582220Y-60743114D01* +X87660276Y-60774452D01* +X87742945Y-60789961D01* +X87827052Y-60789043D01* +X87909364Y-60771735D01* +X87986717Y-60738702D01* +X88056139Y-60691212D01* +X88081822Y-60669463D01* +X91593287Y-60669463D01* +X92285730Y-61494685D01* +X92819854Y-61046501D01* +X92833012Y-60896108D01* +X92416622Y-60396660D01* +X92356501Y-60337836D01* +X92286059Y-60291873D01* +X92208003Y-60260534D01* +X92125334Y-60245026D01* +X92041227Y-60245943D01* +X91958916Y-60263251D01* +X91881563Y-60296284D01* +X91812140Y-60343775D01* +X91606445Y-60519071D01* +X91593287Y-60669463D01* +X88081822Y-60669463D01* +X88405468Y-60395393D01* +X88418626Y-60245000D01* +X87761536Y-59461911D01* +X87083778Y-60030617D01* +X87070621Y-60181010D01* +X87013270Y-60181010D01* +X86648240Y-59745985D01* +X86553088Y-59652887D01* +X86441603Y-59580141D01* +X86318067Y-59530543D01* +X86187229Y-59505998D01* +X86054117Y-59507450D01* +X85923846Y-59534843D01* +X85801422Y-59587125D01* +X85691550Y-59662285D01* +X85174470Y-60096167D01* +X85081372Y-60191319D01* +X85008626Y-60302804D01* +X84959028Y-60426340D01* +X84934483Y-60557177D01* +X84935935Y-60690290D01* +X84963328Y-60820561D01* +X85015610Y-60942985D01* +X85082034Y-61040086D01* +X84781291Y-61340829D01* +X81778714Y-61340829D01* +X81811496Y-61279498D01* +X81840181Y-61184938D01* +X81849866Y-61086600D01* +X81849866Y-59686600D01* +X81840181Y-59588262D01* +X81811496Y-59493702D01* +X81764916Y-59406556D01* +X81702228Y-59330172D01* +X81625844Y-59267484D01* +X81538698Y-59220904D01* +X81517153Y-59214368D01* +X86420866Y-59214368D01* +X86421784Y-59298475D01* +X86439092Y-59380786D01* +X86472125Y-59458139D01* +X86519615Y-59527562D01* +X86903817Y-59982222D01* +X87054210Y-59995379D01* +X87725210Y-59432343D01* +X87796774Y-59432343D01* +X88453864Y-60215432D01* +X88604257Y-60228590D01* +X88956241Y-59935936D01* +X89015066Y-59875815D01* +X89061029Y-59805373D01* +X89092367Y-59727318D01* +X89107876Y-59644648D01* +X89106958Y-59560541D01* +X89089650Y-59478230D01* +X89056617Y-59400877D01* +X89009127Y-59331454D01* +X88624925Y-58876794D01* +X88474532Y-58863637D01* +X87796774Y-59432343D01* +X87725210Y-59432343D01* +X87731968Y-59426673D01* +X87074878Y-58643584D01* +X86924485Y-58630426D01* +X86572501Y-58923080D01* +X86513676Y-58983201D01* +X86467713Y-59053643D01* +X86436375Y-59131698D01* +X86420866Y-59214368D01* +X81517153Y-59214368D01* +X81444138Y-59192219D01* +X81345800Y-59182534D01* +X81195800Y-59182534D01* +X81097462Y-59192219D01* +X81020800Y-59215475D01* +X80944138Y-59192219D01* +X80845800Y-59182534D01* +X80695800Y-59182534D01* +X80597462Y-59192219D01* +X80520800Y-59215475D01* +X80444138Y-59192219D01* +X80345800Y-59182534D01* +X80195800Y-59182534D01* +X80097462Y-59192219D01* +X80020800Y-59215475D01* +X79944138Y-59192219D01* +X79847800Y-59182731D01* +X79847800Y-56489931D01* +X79850590Y-56461600D01* +X79847364Y-56428833D01* +X79844471Y-56399463D01* +X79839451Y-56348488D01* +X79819394Y-56282371D01* +X79806457Y-56239724D01* +X79752879Y-56139485D01* +X79680774Y-56051626D01* +X79658763Y-56033562D01* +X74511801Y-50886600D01* +X81991734Y-50886600D01* +X81991734Y-51036600D01* +X82001419Y-51134938D01* +X82024675Y-51211600D01* +X82001419Y-51288262D01* +X81991734Y-51386600D01* +X81991734Y-51536600D01* +X82001419Y-51634938D01* +X82024675Y-51711600D01* +X82001419Y-51788262D01* +X81991734Y-51886600D01* +X81991734Y-52036600D01* +X82001419Y-52134938D01* +X82024675Y-52211600D01* +X82001419Y-52288262D01* +X81991734Y-52386600D01* +X81991734Y-52536600D01* +X82001419Y-52634938D01* +X82024675Y-52711600D01* +X82001419Y-52788262D01* +X81991734Y-52886600D01* +X81991734Y-53036600D01* +X82001419Y-53134938D01* +X82024675Y-53211600D01* +X82001419Y-53288262D01* +X81991734Y-53386600D01* +X81991734Y-53536600D01* +X82001419Y-53634938D01* +X82024675Y-53711600D01* +X82001419Y-53788262D01* +X81991734Y-53886600D01* +X81991734Y-54036600D01* +X82001419Y-54134938D01* +X82024675Y-54211600D01* +X82001419Y-54288262D01* +X81991734Y-54386600D01* +X81991734Y-54536600D01* +X82001419Y-54634938D01* +X82024675Y-54711600D01* +X82001419Y-54788262D01* +X81991734Y-54886600D01* +X81991734Y-55036600D01* +X82001419Y-55134938D01* +X82024675Y-55211600D01* +X82001419Y-55288262D01* +X81991734Y-55386600D01* +X81991734Y-55536600D01* +X82001419Y-55634938D01* +X82024675Y-55711600D01* +X82001419Y-55788262D01* +X81991734Y-55886600D01* +X81991734Y-56036600D01* +X82001419Y-56134938D01* +X82024675Y-56211600D01* +X82001419Y-56288262D01* +X81991734Y-56386600D01* +X81991734Y-56536600D01* +X82001419Y-56634938D01* +X82024675Y-56711600D01* +X82001419Y-56788262D01* +X81991734Y-56886600D01* +X81991734Y-57036600D01* +X82001419Y-57134938D01* +X82024675Y-57211600D01* +X82001419Y-57288262D01* +X81991734Y-57386600D01* +X81991734Y-57536600D01* +X82001419Y-57634938D01* +X82024675Y-57711600D01* +X82001419Y-57788262D01* +X81991734Y-57886600D01* +X81991734Y-58036600D01* +X82001419Y-58134938D01* +X82024675Y-58211600D01* +X82001419Y-58288262D01* +X81991734Y-58386600D01* +X81991734Y-58536600D01* +X82001419Y-58634938D01* +X82030104Y-58729498D01* +X82076684Y-58816644D01* +X82139372Y-58893028D01* +X82215756Y-58955716D01* +X82302902Y-59002296D01* +X82397462Y-59030981D01* +X82495800Y-59040666D01* +X83895800Y-59040666D01* +X83994138Y-59030981D01* +X84088698Y-59002296D01* +X84175844Y-58955716D01* +X84252228Y-58893028D01* +X84314916Y-58816644D01* +X84361496Y-58729498D01* +X84390181Y-58634938D01* +X84392241Y-58614016D01* +X87110116Y-58614016D01* +X87767206Y-59397105D01* +X88444964Y-58828399D01* +X88458121Y-58678006D01* +X88077085Y-58220690D01* +X88016964Y-58161866D01* +X87946522Y-58115902D01* +X87868466Y-58084564D01* +X87785797Y-58069055D01* +X87701690Y-58069973D01* +X87619378Y-58087281D01* +X87542025Y-58120314D01* +X87472603Y-58167804D01* +X87123274Y-58463623D01* +X87110116Y-58614016D01* +X84392241Y-58614016D01* +X84399866Y-58536600D01* +X84399866Y-58386600D01* +X84390181Y-58288262D01* +X84366925Y-58211600D01* +X84390181Y-58134938D01* +X84399866Y-58036600D01* +X84399866Y-57886600D01* +X84390181Y-57788262D01* +X84366925Y-57711600D01* +X84390181Y-57634938D01* +X84399866Y-57536600D01* +X84399866Y-57386600D01* +X84390181Y-57288262D01* +X84366925Y-57211600D01* +X84390181Y-57134938D01* +X84399866Y-57036600D01* +X84399866Y-56886600D01* +X84390181Y-56788262D01* +X84366925Y-56711600D01* +X84390181Y-56634938D01* +X84399866Y-56536600D01* +X84399866Y-56386600D01* +X84390181Y-56288262D01* +X84366925Y-56211600D01* +X84390181Y-56134938D01* +X84399866Y-56036600D01* +X84399866Y-55886600D01* +X84390181Y-55788262D01* +X84366925Y-55711600D01* +X84390181Y-55634938D01* +X84399669Y-55538600D01* +X88780255Y-55538600D01* +X89497896Y-56256241D01* +X89472777Y-56294738D01* +X89423179Y-56418274D01* +X89398634Y-56549111D01* +X89400086Y-56682223D01* +X89427479Y-56812494D01* +X89479761Y-56934918D01* +X89554921Y-57044790D01* +X90004874Y-57581022D01* +X90100025Y-57674119D01* +X90211511Y-57746865D01* +X90335046Y-57796463D01* +X90465884Y-57821008D01* +X90598996Y-57819556D01* +X90729267Y-57792163D01* +X90800944Y-57761553D01* +X90758353Y-57826826D01* +X90708755Y-57950362D01* +X90684210Y-58081199D01* +X90685662Y-58214311D01* +X90713055Y-58344582D01* +X90765337Y-58467006D01* +X90840497Y-58576878D01* +X91290450Y-59113110D01* +X91385601Y-59206207D01* +X91497087Y-59278953D01* +X91620622Y-59328551D01* +X91751460Y-59353096D01* +X91884572Y-59351644D01* +X92014843Y-59324251D01* +X92135472Y-59272735D01* +X92548167Y-59771840D01* +X92518662Y-59845327D01* +X92503154Y-59927996D01* +X92504071Y-60012103D01* +X92521379Y-60094415D01* +X92554413Y-60171768D01* +X92601903Y-60241190D01* +X93604652Y-61436220D01* +X93664774Y-61495044D01* +X93735216Y-61541008D01* +X93813271Y-61572347D01* +X93895941Y-61587855D01* +X93980047Y-61586938D01* +X94062359Y-61569629D01* +X94139712Y-61536596D01* +X94209134Y-61489106D01* +X94821969Y-60974876D01* +X94880793Y-60914755D01* +X94926757Y-60844313D01* +X94958096Y-60766257D01* +X94973604Y-60683588D01* +X94972687Y-60599481D01* +X94955379Y-60517169D01* +X94922345Y-60439816D01* +X94874855Y-60370394D01* +X93872106Y-59175364D01* +X93811984Y-59116540D01* +X93741542Y-59070576D01* +X93663487Y-59039237D01* +X93580817Y-59023729D01* +X93496711Y-59024646D01* +X93437957Y-59037001D01* +X93020675Y-58532348D01* +X93029678Y-58523147D01* +X93102423Y-58411662D01* +X93152021Y-58288126D01* +X93176566Y-58157289D01* +X93175114Y-58024177D01* +X93147721Y-57893906D01* +X93095439Y-57771482D01* +X93020279Y-57661610D01* +X92570326Y-57125378D01* +X92475175Y-57032281D01* +X92363689Y-56959535D01* +X92240154Y-56909937D01* +X92109316Y-56885392D01* +X91976204Y-56886844D01* +X91845933Y-56914237D01* +X91774256Y-56944847D01* +X91816847Y-56879574D01* +X91866445Y-56756038D01* +X91890990Y-56625201D01* +X91889538Y-56492089D01* +X91862145Y-56361818D01* +X91809863Y-56239394D01* +X91734703Y-56129522D01* +X91284750Y-55593290D01* +X91189599Y-55500193D01* +X91078113Y-55427447D01* +X90954578Y-55377849D01* +X90823740Y-55353304D01* +X90690628Y-55354756D01* +X90560357Y-55382149D01* +X90437933Y-55434431D01* +X90360831Y-55487174D01* +X89855533Y-54981876D01* +X93184355Y-54981876D01* +X95587400Y-57384921D01* +X95605465Y-57406933D01* +X95693324Y-57479038D01* +X95793563Y-57532616D01* +X95838221Y-57546163D01* +X95902327Y-57565610D01* +X95960325Y-57571322D01* +X95987103Y-57573959D01* +X95987108Y-57573959D01* +X96015439Y-57576749D01* +X96043770Y-57573959D01* +X98347945Y-57573959D01* +X98359496Y-57601845D01* +X98499248Y-57810999D01* +X98677119Y-57988870D01* +X98886273Y-58128622D01* +X99118672Y-58224885D01* +X99365385Y-58273959D01* +X99616933Y-58273959D01* +X99863646Y-58224885D01* +X100096045Y-58128622D01* +X100305199Y-57988870D01* +X100483070Y-57810999D01* +X100622822Y-57601845D01* +X100719085Y-57369446D01* +X100768159Y-57122733D01* +X100768159Y-56871185D01* +X100719085Y-56624472D01* +X100622822Y-56392073D01* +X100483070Y-56182919D01* +X100305199Y-56005048D01* +X100096045Y-55865296D01* +X99863646Y-55769033D01* +X99616933Y-55719959D01* +X99365385Y-55719959D01* +X99118672Y-55769033D01* +X98886273Y-55865296D01* +X98706951Y-55985115D01* +X98826770Y-55805793D01* +X98923033Y-55573394D01* +X98972107Y-55326681D01* +X98972107Y-55075133D01* +X98923033Y-54828420D01* +X98826770Y-54596021D01* +X98687018Y-54386867D01* +X98509147Y-54208996D01* +X98299993Y-54069244D01* +X98067594Y-53972981D01* +X97820881Y-53923907D01* +X97569333Y-53923907D01* +X97322620Y-53972981D01* +X97090221Y-54069244D01* +X96910902Y-54189061D01* +X97030719Y-54009742D01* +X97126982Y-53777343D01* +X97176056Y-53530630D01* +X97176056Y-53279082D01* +X97126982Y-53032369D01* +X97030719Y-52799970D01* +X96890967Y-52590816D01* +X96713096Y-52412945D01* +X96503942Y-52273193D01* +X96271543Y-52176930D01* +X96024830Y-52127856D01* +X95773282Y-52127856D01* +X95526569Y-52176930D01* +X95294170Y-52273193D01* +X95114851Y-52393010D01* +X95234668Y-52213691D01* +X95330931Y-51981292D01* +X95380005Y-51734579D01* +X95380005Y-51483031D01* +X95330931Y-51236318D01* +X95234668Y-51003919D01* +X95094916Y-50794765D01* +X94917045Y-50616894D01* +X94707891Y-50477142D01* +X94475492Y-50380879D01* +X94228779Y-50331805D01* +X93977231Y-50331805D01* +X93730518Y-50380879D01* +X93498119Y-50477142D01* +X93318800Y-50596959D01* +X93438617Y-50417640D01* +X93534880Y-50185241D01* +X93583954Y-49938528D01* +X93583954Y-49686980D01* +X93534880Y-49440267D01* +X93438617Y-49207868D01* +X93298865Y-48998714D01* +X93120994Y-48820843D01* +X92911840Y-48681091D01* +X92679441Y-48584828D01* +X92432728Y-48535754D01* +X92181180Y-48535754D01* +X91934467Y-48584828D01* +X91702068Y-48681091D01* +X91522746Y-48800910D01* +X91642565Y-48621588D01* +X91738828Y-48389189D01* +X91787902Y-48142476D01* +X91787902Y-47890928D01* +X91738828Y-47644215D01* +X91642565Y-47411816D01* +X91502813Y-47202662D01* +X91324942Y-47024791D01* +X91115788Y-46885039D01* +X90883389Y-46788776D01* +X90636676Y-46739702D01* +X90385128Y-46739702D01* +X90138415Y-46788776D01* +X89906016Y-46885039D01* +X89696862Y-47024791D01* +X89624191Y-47097462D01* +X89558463Y-47031733D01* +X89761318Y-46952525D01* +X89883992Y-46734307D01* +X89961736Y-46496349D01* +X89991564Y-46247796D01* +X89972328Y-45998200D01* +X89904768Y-45757153D01* +X89791480Y-45533917D01* +X89761317Y-45488778D01* +X89558446Y-45409583D01* +X88747378Y-46220651D01* +X88761520Y-46234793D01* +X88728993Y-46267320D01* +X88714851Y-46253178D01* +X87903783Y-47064246D01* +X87982978Y-47267117D01* +X88028117Y-47297280D01* +X88251353Y-47410568D01* +X88492400Y-47478128D01* +X88741996Y-47497364D01* +X88990549Y-47467536D01* +X89228507Y-47389792D01* +X89446725Y-47267118D01* +X89525933Y-47064263D01* +X89591662Y-47129991D01* +X89518991Y-47202662D01* +X89379239Y-47411816D01* +X89282976Y-47644215D01* +X89233902Y-47890928D01* +X89233902Y-48142476D01* +X89282976Y-48389189D01* +X89379239Y-48621588D01* +X89518991Y-48830742D01* +X89696862Y-49008613D01* +X89906016Y-49148365D01* +X90138415Y-49244628D01* +X90385128Y-49293702D01* +X90636676Y-49293702D01* +X90883389Y-49244628D01* +X91115788Y-49148365D01* +X91295110Y-49028546D01* +X91175291Y-49207868D01* +X91079028Y-49440267D01* +X91029954Y-49686980D01* +X91029954Y-49938528D01* +X91079028Y-50185241D01* +X91090579Y-50213128D01* +X89725107Y-51578600D01* +X88260145Y-51578600D01* +X88250175Y-51545732D01* +X88187423Y-51428331D01* +X88102972Y-51325428D01* +X88000069Y-51240977D01* +X87882668Y-51178225D01* +X87808084Y-51155600D01* +X87882668Y-51132975D01* +X88000069Y-51070223D01* +X88102972Y-50985772D01* +X88187423Y-50882869D01* +X88250175Y-50765468D01* +X88288818Y-50638080D01* +X88301866Y-50505601D01* +X88301866Y-49805599D01* +X88288818Y-49673120D01* +X88250175Y-49545732D01* +X88187423Y-49428331D01* +X88102972Y-49325428D01* +X88000069Y-49240977D01* +X87882668Y-49178225D01* +X87755280Y-49139582D01* +X87622801Y-49126534D01* +X86722799Y-49126534D01* +X86590320Y-49139582D01* +X86462932Y-49178225D01* +X86345531Y-49240977D01* +X86242628Y-49325428D01* +X86158177Y-49428331D01* +X86095425Y-49545732D01* +X86085455Y-49578600D01* +X85813531Y-49578600D01* +X85785200Y-49575810D01* +X85756869Y-49578600D01* +X85756864Y-49578600D01* +X85730086Y-49581237D01* +X85672088Y-49586949D01* +X85607982Y-49606396D01* +X85563324Y-49619943D01* +X85463085Y-49673521D01* +X85375226Y-49745626D01* +X85357161Y-49767638D01* +X84377695Y-50747104D01* +X84361496Y-50693702D01* +X84314916Y-50606556D01* +X84252228Y-50530172D01* +X84175844Y-50467484D01* +X84088698Y-50420904D01* +X83994138Y-50392219D01* +X83895800Y-50382534D01* +X82495800Y-50382534D01* +X82397462Y-50392219D01* +X82302902Y-50420904D01* +X82215756Y-50467484D01* +X82139372Y-50530172D01* +X82076684Y-50606556D01* +X82030104Y-50693702D01* +X82001419Y-50788262D01* +X81991734Y-50886600D01* +X74511801Y-50886600D01* +X73864068Y-50238867D01* +X73944138Y-50230981D01* +X74020800Y-50207725D01* +X74097462Y-50230981D01* +X74195800Y-50240666D01* +X74345800Y-50240666D01* +X74444138Y-50230981D01* +X74520800Y-50207725D01* +X74597462Y-50230981D01* +X74695800Y-50240666D01* +X74845800Y-50240666D01* +X74944138Y-50230981D01* +X75020800Y-50207725D01* +X75097462Y-50230981D01* +X75195800Y-50240666D01* +X75345800Y-50240666D01* +X75444138Y-50230981D01* +X75520800Y-50207725D01* +X75597462Y-50230981D01* +X75695800Y-50240666D01* +X75845800Y-50240666D01* +X75944138Y-50230981D01* +X76020800Y-50207725D01* +X76097462Y-50230981D01* +X76195800Y-50240666D01* +X76345800Y-50240666D01* +X76444138Y-50230981D01* +X76520800Y-50207725D01* +X76597462Y-50230981D01* +X76695800Y-50240666D01* +X76845800Y-50240666D01* +X76944138Y-50230981D01* +X77020800Y-50207725D01* +X77097462Y-50230981D01* +X77195800Y-50240666D01* +X77345800Y-50240666D01* +X77444138Y-50230981D01* +X77520800Y-50207725D01* +X77597462Y-50230981D01* +X77695800Y-50240666D01* +X77845800Y-50240666D01* +X77944138Y-50230981D01* +X78020800Y-50207725D01* +X78097462Y-50230981D01* +X78195800Y-50240666D01* +X78345800Y-50240666D01* +X78444138Y-50230981D01* +X78520800Y-50207725D01* +X78597462Y-50230981D01* +X78695800Y-50240666D01* +X78845800Y-50240666D01* +X78944138Y-50230981D01* +X79020800Y-50207725D01* +X79097462Y-50230981D01* +X79195800Y-50240666D01* +X79345800Y-50240666D01* +X79444138Y-50230981D01* +X79520800Y-50207725D01* +X79597462Y-50230981D01* +X79695800Y-50240666D01* +X79845800Y-50240666D01* +X79944138Y-50230981D01* +X80020800Y-50207725D01* +X80097462Y-50230981D01* +X80195800Y-50240666D01* +X80345800Y-50240666D01* +X80444138Y-50230981D01* +X80520800Y-50207725D01* +X80597462Y-50230981D01* +X80695800Y-50240666D01* +X80845800Y-50240666D01* +X80944138Y-50230981D01* +X81020800Y-50207725D01* +X81097462Y-50230981D01* +X81195800Y-50240666D01* +X81345800Y-50240666D01* +X81444138Y-50230981D01* +X81538698Y-50202296D01* +X81625844Y-50155716D01* +X81702228Y-50093028D01* +X81764916Y-50016644D01* +X81811496Y-49929498D01* +X81840181Y-49834938D01* +X81849866Y-49736600D01* +X81849866Y-48336600D01* +X81840181Y-48238262D01* +X81811496Y-48143702D01* +X81764916Y-48056556D01* +X81702228Y-47980172D01* +X81625844Y-47917484D01* +X81538698Y-47870904D01* +X81444138Y-47842219D01* +X81345800Y-47832534D01* +X81195800Y-47832534D01* +X81097462Y-47842219D01* +X81020800Y-47865475D01* +X80944138Y-47842219D01* +X80845800Y-47832534D01* +X80695800Y-47832534D01* +X80597462Y-47842219D01* +X80520800Y-47865475D01* +X80444138Y-47842219D01* +X80345800Y-47832534D01* +X80195800Y-47832534D01* +X80097462Y-47842219D01* +X80020800Y-47865475D01* +X79944138Y-47842219D01* +X79845800Y-47832534D01* +X79695800Y-47832534D01* +X79597462Y-47842219D01* +X79520800Y-47865475D01* +X79444138Y-47842219D01* +X79345800Y-47832534D01* +X79195800Y-47832534D01* +X79097462Y-47842219D01* +X79020800Y-47865475D01* +X78944138Y-47842219D01* +X78845800Y-47832534D01* +X78695800Y-47832534D01* +X78597462Y-47842219D01* +X78520800Y-47865475D01* +X78444138Y-47842219D01* +X78345800Y-47832534D01* +X78195800Y-47832534D01* +X78097462Y-47842219D01* +X78020800Y-47865475D01* +X77944138Y-47842219D01* +X77845800Y-47832534D01* +X77695800Y-47832534D01* +X77597462Y-47842219D01* +X77520800Y-47865475D01* +X77444138Y-47842219D01* +X77345800Y-47832534D01* +X77195800Y-47832534D01* +X77097462Y-47842219D01* +X77020800Y-47865475D01* +X76944138Y-47842219D01* +X76845800Y-47832534D01* +X76695800Y-47832534D01* +X76597462Y-47842219D01* +X76520800Y-47865475D01* +X76444138Y-47842219D01* +X76345800Y-47832534D01* +X76195800Y-47832534D01* +X76097462Y-47842219D01* +X76020800Y-47865475D01* +X75944138Y-47842219D01* +X75847800Y-47832731D01* +X75847800Y-47243801D01* +X76683910Y-46407691D01* +X76705921Y-46389627D01* +X76778026Y-46301768D01* +X76831604Y-46201529D01* +X76845151Y-46156871D01* +X76864598Y-46092765D01* +X76871501Y-46022666D01* +X76872947Y-46007989D01* +X76872947Y-46007984D01* +X76875737Y-45979653D01* +X76872947Y-45951322D01* +X76872947Y-45762398D01* +X76878427Y-45761858D01* +X77005815Y-45723215D01* +X77123216Y-45660463D01* +X77226119Y-45576012D01* +X77310570Y-45473109D01* +X77373322Y-45355708D01* +X77411965Y-45228320D01* +X77425013Y-45095841D01* +X77425013Y-44395839D01* +X77411965Y-44263360D01* +X77373322Y-44135972D01* +X77310570Y-44018571D01* +X77226119Y-43915668D01* +X77123216Y-43831217D01* +X77005815Y-43768465D01* +X76931231Y-43745840D01* +X77005815Y-43723215D01* +X77123216Y-43660463D01* +X77226119Y-43576012D01* +X77310570Y-43473109D01* +X77373322Y-43355708D01* +X77411965Y-43228320D01* +X77425013Y-43095841D01* +X77425013Y-42395839D01* +X77411965Y-42263360D01* +X77373322Y-42135972D01* +X77310570Y-42018571D01* +X77226119Y-41915668D01* +X77123216Y-41831217D01* +X77005815Y-41768465D01* +X76878427Y-41729822D01* +X76745948Y-41716774D01* +X76082883Y-41716774D01* +X67709346Y-33343238D01* +X67691281Y-33321226D01* +X67603422Y-33249121D01* +X67503183Y-33195543D01* +X67439077Y-33176097D01* +X67394418Y-33162549D01* +X67339352Y-33157126D01* +X67309643Y-33154200D01* +X67309638Y-33154200D01* +X67281307Y-33151410D01* +X67252976Y-33154200D01* +X66515526Y-33154200D01* +X66498755Y-33122824D01* +X66476905Y-33096200D01* +X66498755Y-33069576D01* +X66538405Y-32995396D01* +X66562822Y-32914907D01* +X66571066Y-32831200D01* +X66571066Y-32091200D01* +X66562822Y-32007493D01* +X66538405Y-31927004D01* +X66498755Y-31852824D01* +X66445395Y-31787805D01* +X66380376Y-31734445D01* +X66306196Y-31694795D01* +X66225707Y-31670378D01* +X66142000Y-31662134D01* +X63742000Y-31662134D01* +X63658293Y-31670378D01* +X63577804Y-31694795D01* +X63503624Y-31734445D01* +X63438605Y-31787805D01* +X63385245Y-31852824D01* +X63345595Y-31927004D01* +X63321178Y-32007493D01* +X63312934Y-32091200D01* +X62671066Y-32091200D01* +X62662822Y-32007493D01* +X62638405Y-31927004D01* +X62598755Y-31852824D01* +X62545395Y-31787805D01* +X62480376Y-31734445D01* +X62406196Y-31694795D01* +X62325707Y-31670378D01* +X62242000Y-31662134D01* +X59842000Y-31662134D01* +X59758293Y-31670378D01* +X59677804Y-31694795D01* +X59603624Y-31734445D01* +X59538605Y-31787805D01* +X59485245Y-31852824D01* +X59445595Y-31927004D01* +X59421178Y-32007493D01* +X59412934Y-32091200D01* +X59412934Y-32831200D01* +X59421178Y-32914907D01* +X59445595Y-32995396D01* +X59477026Y-33054200D01* +X57488041Y-33054200D01* +X57454799Y-33050926D01* +X57421557Y-33054200D01* +X57421548Y-33054200D01* +X57322085Y-33063996D01* +X57194470Y-33102708D01* +X57076859Y-33165572D01* +X56973773Y-33250173D01* +X56952574Y-33276004D01* +X55628000Y-34600578D01* +X55602173Y-34621774D01* +X55517572Y-34724860D01* +X55454708Y-34842471D01* +X55415996Y-34970086D01* +X55406200Y-35069549D01* +X55406200Y-35069555D01* +X55402926Y-35102800D01* +X55406200Y-35136045D01* +X55406201Y-38760777D01* +X52840783Y-41326195D01* +X52770794Y-41297204D01* +X52466121Y-41236600D01* +X52155479Y-41236600D01* +X51850806Y-41297204D01* +X51563811Y-41416081D01* +X51305521Y-41588664D01* +X51085864Y-41808321D01* +X50913281Y-42066611D01* +X50794404Y-42353606D01* +X50733800Y-42658279D01* +X39881012Y-42658279D01* +X39894520Y-28474756D01* +X51282171Y-28474756D01* +X51398083Y-28708976D01* +X51668336Y-28862149D01* +X51963278Y-28959654D01* +X52271576Y-28997745D01* +X52581381Y-28974958D01* +X52880788Y-28892169D01* +X53158291Y-28752560D01* +X53223517Y-28708976D01* +X53339429Y-28474756D01* +X52310800Y-27446127D01* +X51282171Y-28474756D01* +X39894520Y-28474756D01* +X39895569Y-27374376D01* +X50726655Y-27374376D01* +X50749442Y-27684181D01* +X50832231Y-27983588D01* +X50971840Y-28261091D01* +X51015424Y-28326317D01* +X51249644Y-28442229D01* +X52278273Y-27413600D01* +X52343327Y-27413600D01* +X53371956Y-28442229D01* +X53606176Y-28326317D01* +X53759349Y-28056064D01* +X53856854Y-27761122D01* +X53894945Y-27452824D01* +X53872158Y-27143019D01* +X53789369Y-26843612D01* +X53649760Y-26566109D01* +X53606176Y-26500883D01* +X53371956Y-26384971D01* +X52343327Y-27413600D01* +X52278273Y-27413600D01* +X51249644Y-26384971D01* +X51015424Y-26500883D01* +X50862251Y-26771136D01* +X50764746Y-27066078D01* +X50726655Y-27374376D01* +X39895569Y-27374376D01* +X39896542Y-26352444D01* +X51282171Y-26352444D01* +X52310800Y-27381073D01* +X53339429Y-26352444D01* +X53223517Y-26118224D01* +X52953264Y-25965051D01* +X52658322Y-25867546D01* +X52350024Y-25829455D01* +X52040219Y-25852242D01* +X51740812Y-25935031D01* +X51463309Y-26074640D01* +X51398083Y-26118224D01* +X51282171Y-26352444D01* +X39896542Y-26352444D01* +X39901803Y-20828827D01* +X40275685Y-20894080D01* +%TA.AperFunction,Conductor*% +D27* +G36* +X40275685Y-20894080D02* +G01* +X44256937Y-21747586D01* +X48202486Y-22753294D01* +X52106510Y-23909720D01* +X55963256Y-25215156D01* +X59767053Y-26667685D01* +X63512278Y-28265159D01* +X67193433Y-30005233D01* +X70805085Y-31885340D01* +X74341872Y-33902688D01* +X77798632Y-36054332D01* +X81170236Y-38337078D01* +X84451727Y-40747572D01* +X87053599Y-42817195D01* +X87002507Y-42801696D01* +X86918800Y-42793452D01* +X86835093Y-42801696D01* +X86754604Y-42826113D01* +X86680424Y-42865763D01* +X86615405Y-42919123D01* +X85413323Y-44121205D01* +X85359963Y-44186224D01* +X85320313Y-44260404D01* +X85295896Y-44340893D01* +X85287652Y-44424600D01* +X85295896Y-44508307D01* +X85320313Y-44588796D01* +X85359963Y-44662976D01* +X85413323Y-44727995D01* +X86615405Y-45930077D01* +X86680424Y-45983437D01* +X86754604Y-46023087D01* +X86835093Y-46047504D01* +X86918800Y-46055748D01* +X87002507Y-46047504D01* +X87082996Y-46023087D01* +X87157176Y-45983437D01* +X87222195Y-45930077D01* +X87806971Y-45345301D01* +X87871239Y-45409569D01* +X87668384Y-45488777D01* +X87545710Y-45706995D01* +X87467966Y-45944953D01* +X87438138Y-46193506D01* +X87457374Y-46443102D01* +X87524934Y-46684149D01* +X87638222Y-46907385D01* +X87668385Y-46952524D01* +X87871256Y-47031719D01* +X88682324Y-46220651D01* +X88668182Y-46206509D01* +X88700709Y-46173982D01* +X88714851Y-46188124D01* +X89525919Y-45377056D01* +X89446724Y-45174185D01* +X89401585Y-45144022D01* +X89178349Y-45030734D01* +X88937302Y-44963174D01* +X88687706Y-44943938D01* +X88439153Y-44973766D01* +X88201195Y-45051510D01* +X87982977Y-45174184D01* +X87903769Y-45377039D01* +X87839501Y-45312771D01* +X88424277Y-44727995D01* +X88477637Y-44662976D01* +X88517287Y-44588796D01* +X88541704Y-44508307D01* +X88549948Y-44424600D01* +X88541704Y-44340893D01* +X88517287Y-44260404D01* +X88477637Y-44186224D01* +X88424277Y-44121205D01* +X87379503Y-43076431D01* +X87638295Y-43282283D01* +X90725181Y-45937424D01* +X93707877Y-48709117D01* +X96581969Y-51593258D01* +X99343237Y-54585616D01* +X101988600Y-57682939D01* +X103325107Y-59351172D01* +X64638216Y-89576685D01* +X64303286Y-89155621D01* +X64298204Y-89149565D01* +X64293251Y-89143448D01* +X62372186Y-86894170D01* +X62356352Y-86876584D01* +X62356333Y-86876565D01* +X60320222Y-84730952D01* +X60320203Y-84730931D01* +X60303470Y-84714198D01* +X58157835Y-82678067D01* +X58157816Y-82678048D01* +X58149483Y-82670546D01* +X58140230Y-82662213D01* +X58140207Y-82662195D01* +X57239226Y-81892683D01* +X60938100Y-81892683D01* +X60948169Y-81976190D01* +X60974335Y-82056128D01* +X61015594Y-82129425D01* +X62048032Y-83603899D01* +X62102797Y-83667739D01* +X62168965Y-83719668D01* +X62243992Y-83757690D01* +X62324996Y-83780345D01* +X62408862Y-83786761D01* +X62492369Y-83776692D01* +X62572307Y-83750526D01* +X62645604Y-83709267D01* +X64120078Y-82676829D01* +X64183918Y-82622064D01* +X64235847Y-82555896D01* +X64273869Y-82480869D01* +X64296524Y-82399865D01* +X64302940Y-82315999D01* +X64292871Y-82232492D01* +X64266705Y-82152554D01* +X64225446Y-82079257D01* +X63193008Y-80604783D01* +X63138243Y-80540943D01* +X63072075Y-80489014D01* +X62997048Y-80450992D01* +X62916044Y-80428337D01* +X62832178Y-80421921D01* +X62748671Y-80431990D01* +X62668733Y-80458156D01* +X62595436Y-80499415D01* +X61120962Y-81531853D01* +X61057122Y-81586618D01* +X61005193Y-81652786D01* +X60967171Y-81727813D01* +X60944516Y-81808817D01* +X60938100Y-81892683D01* +X57239226Y-81892683D01* +X57197622Y-81857150D01* +X63170131Y-75491243D01* +X63182057Y-75481313D01* +X67371152Y-72788324D01* +X67395436Y-72768024D01* +X67438229Y-72722051D01* +X67453324Y-72702253D01* +X67464266Y-72679890D01* +X67468325Y-72666925D01* +X67483856Y-72606068D01* +X67487800Y-72574664D01* +X67487800Y-67372228D01* +X69562718Y-67372228D01* +X69562890Y-67374416D01* +X69628398Y-67605902D01* +X69737808Y-67820160D01* +X69886916Y-68008956D01* +X70069991Y-68165035D01* +X70279998Y-68282398D01* +X70508866Y-68356536D01* +X70747800Y-68384600D01* +X71147800Y-68384600D01* +X71147800Y-67180600D01* +X71193800Y-67180600D01* +X71193800Y-68384600D01* +X71593800Y-68384600D01* +X71832734Y-68356536D01* +X72061602Y-68282398D01* +X72271609Y-68165035D01* +X72454684Y-68008956D01* +X72603792Y-67820160D01* +X72713202Y-67605902D01* +X72778710Y-67374416D01* +X72778882Y-67372228D01* +X72690814Y-67180600D01* +X71193800Y-67180600D01* +X71147800Y-67180600D01* +X69650786Y-67180600D01* +X69562718Y-67372228D01* +X67487800Y-67372228D01* +X67487800Y-66942972D01* +X69562718Y-66942972D01* +X69650786Y-67134600D01* +X71147800Y-67134600D01* +X71147800Y-65930600D01* +X71193800Y-65930600D01* +X71193800Y-67134600D01* +X72690814Y-67134600D01* +X72778882Y-66942972D01* +X72778710Y-66940784D01* +X72713202Y-66709298D01* +X72603792Y-66495040D01* +X72454684Y-66306244D01* +X72271609Y-66150165D01* +X72061602Y-66032802D01* +X71832734Y-65958664D01* +X71593800Y-65930600D01* +X71193800Y-65930600D01* +X71147800Y-65930600D01* +X70747800Y-65930600D01* +X70508866Y-65958664D01* +X70279998Y-66032802D01* +X70069991Y-66150165D01* +X69886916Y-66306244D01* +X69737808Y-66495040D01* +X69628398Y-66709298D01* +X69562890Y-66940784D01* +X69562718Y-66942972D01* +X67487800Y-66942972D01* +X67487800Y-64617600D01* +X69537864Y-64617600D01* +X69561555Y-64858134D01* +X69631716Y-65089424D01* +X69745651Y-65302583D01* +X69898983Y-65489417D01* +X70085817Y-65642749D01* +X70298976Y-65756684D01* +X70530266Y-65826845D01* +X70710532Y-65844600D01* +X71631068Y-65844600D01* +X71811334Y-65826845D01* +X72042624Y-65756684D01* +X72255783Y-65642749D01* +X72442617Y-65489417D01* +X72595949Y-65302583D01* +X72709884Y-65089424D01* +X72780045Y-64858134D01* +X72803736Y-64617600D01* +X72780045Y-64377066D01* +X72709884Y-64145776D01* +X72595949Y-63932617D01* +X72442617Y-63745783D01* +X72255783Y-63592451D01* +X72042624Y-63478516D01* +X71811334Y-63408355D01* +X71631068Y-63390600D01* +X70710532Y-63390600D01* +X70530266Y-63408355D01* +X70298976Y-63478516D01* +X70085817Y-63592451D01* +X69898983Y-63745783D01* +X69745651Y-63932617D01* +X69631716Y-64145776D01* +X69561555Y-64377066D01* +X69537864Y-64617600D01* +X67487800Y-64617600D01* +X67487800Y-59789705D01* +X67485360Y-59764929D01* +X67479316Y-59744066D01* +X67446515Y-59658887D01* +X67435334Y-59636643D01* +X67422198Y-59619346D01* +X63185467Y-54934020D01* +X63169630Y-54893036D01* +X63157756Y-49846228D01* +X65244718Y-49846228D01* +X65244890Y-49848416D01* +X65310398Y-50079902D01* +X65419808Y-50294160D01* +X65568916Y-50482956D01* +X65751991Y-50639035D01* +X65961998Y-50756398D01* +X66190866Y-50830536D01* +X66429800Y-50858600D01* +X66829800Y-50858600D01* +X66829800Y-49654600D01* +X66875800Y-49654600D01* +X66875800Y-50858600D01* +X67275800Y-50858600D01* +X67514734Y-50830536D01* +X67743602Y-50756398D01* +X67953609Y-50639035D01* +X68136684Y-50482956D01* +X68285792Y-50294160D01* +X68395202Y-50079902D01* +X68460710Y-49848416D01* +X68460882Y-49846228D01* +X68372814Y-49654600D01* +X66875800Y-49654600D01* +X66829800Y-49654600D01* +X65332786Y-49654600D01* +X65244718Y-49846228D01* +X63157756Y-49846228D01* +X63156746Y-49416972D01* +X65244718Y-49416972D01* +X65332786Y-49608600D01* +X66829800Y-49608600D01* +X66829800Y-48404600D01* +X66875800Y-48404600D01* +X66875800Y-49608600D01* +X68372814Y-49608600D01* +X68460882Y-49416972D01* +X68460710Y-49414784D01* +X68395202Y-49183298D01* +X68285792Y-48969040D01* +X68136684Y-48780244D01* +X67953609Y-48624165D01* +X67743602Y-48506802D01* +X67514734Y-48432664D01* +X67275800Y-48404600D01* +X66875800Y-48404600D01* +X66829800Y-48404600D01* +X66429800Y-48404600D01* +X66190866Y-48432664D01* +X65961998Y-48506802D01* +X65751991Y-48624165D01* +X65568916Y-48780244D01* +X65419808Y-48969040D01* +X65310398Y-49183298D01* +X65244890Y-49414784D01* +X65244718Y-49416972D01* +X63156746Y-49416972D01* +X63151274Y-47091600D01* +X65219864Y-47091600D01* +X65243555Y-47332134D01* +X65313716Y-47563424D01* +X65427651Y-47776583D01* +X65580983Y-47963417D01* +X65767817Y-48116749D01* +X65980976Y-48230684D01* +X66212266Y-48300845D01* +X66392532Y-48318600D01* +X67313068Y-48318600D01* +X67493334Y-48300845D01* +X67724624Y-48230684D01* +X67937783Y-48116749D01* +X68124617Y-47963417D01* +X68277949Y-47776583D01* +X68391884Y-47563424D01* +X68462045Y-47332134D01* +X68485736Y-47091600D01* +X68462045Y-46851066D01* +X68391884Y-46619776D01* +X68277949Y-46406617D01* +X68124617Y-46219783D01* +X67937783Y-46066451D01* +X67724624Y-45952516D01* +X67493334Y-45882355D01* +X67313068Y-45864600D01* +X66392532Y-45864600D01* +X66212266Y-45882355D01* +X65980976Y-45952516D01* +X65767817Y-46066451D01* +X65580983Y-46219783D01* +X65427651Y-46406617D01* +X65313716Y-46619776D01* +X65243555Y-46851066D01* +X65219864Y-47091600D01* +X63151274Y-47091600D01* +X63144701Y-44298036D01* +X63140263Y-44265057D01* +X63122975Y-44201386D01* +X63114128Y-44178114D01* +X63100911Y-44157016D01* +X63089744Y-44144392D01* +X63042848Y-44097985D01* +X63023520Y-44082292D01* +X63001502Y-44070671D01* +X62985507Y-44065352D01* +X62921658Y-44048733D01* +X62888636Y-44044642D01* +X56817161Y-44094004D01* +X56792405Y-44096646D01* +X56771358Y-44102951D01* +X56686078Y-44136785D01* +X56663948Y-44148190D01* +X56646601Y-44161672D01* +X55009620Y-45678286D01* +X54968007Y-45694600D01* +X39894850Y-45694600D01* +X39881661Y-45691064D01* +X39878137Y-45677870D01* +X39881012Y-42658279D01* +X50733800Y-42658279D01* +X50733800Y-42968921D01* +X50794404Y-43273594D01* +X50913281Y-43560589D01* +X51085864Y-43818879D01* +X51305521Y-44038536D01* +X51563811Y-44211119D01* +X51850806Y-44329996D01* +X52155479Y-44390600D01* +X52466121Y-44390600D01* +X52770794Y-44329996D01* +X53057789Y-44211119D01* +X53316079Y-44038536D01* +X53535736Y-43818879D01* +X53708319Y-43560589D01* +X53827196Y-43273594D01* +X53887800Y-42968921D01* +X53887800Y-42658279D01* +X53827196Y-42353606D01* +X53798205Y-42283617D01* +X56538396Y-39543426D01* +X56564227Y-39522227D01* +X56648828Y-39419141D01* +X56711692Y-39301530D01* +X56748194Y-39181200D01* +X59412934Y-39181200D01* +X59421178Y-39264907D01* +X59445595Y-39345396D01* +X59485245Y-39419576D01* +X59507095Y-39446200D01* +X59485245Y-39472824D01* +X59445595Y-39547004D01* +X59421178Y-39627493D01* +X59412934Y-39711200D01* +X59412934Y-40451200D01* +X59421178Y-40534907D01* +X59445595Y-40615396D01* +X59485245Y-40689576D01* +X59538605Y-40754595D01* +X59603624Y-40807955D01* +X59677804Y-40847605D01* +X59758293Y-40872022D01* +X59842000Y-40880266D01* +X62242000Y-40880266D01* +X62325707Y-40872022D01* +X62406196Y-40847605D01* +X62480376Y-40807955D01* +X62545395Y-40754595D01* +X62598755Y-40689576D01* +X62638405Y-40615396D01* +X62662822Y-40534907D01* +X62671066Y-40451200D01* +X62671066Y-39711200D01* +X62662822Y-39627493D01* +X62638405Y-39547004D01* +X62598755Y-39472824D01* +X62576905Y-39446200D01* +X62598755Y-39419576D01* +X62638405Y-39345396D01* +X62662822Y-39264907D01* +X62671066Y-39181200D01* +X62669000Y-38940950D01* +X62562250Y-38834200D01* +X61065000Y-38834200D01* +X61065000Y-38854200D01* +X61019000Y-38854200D01* +X61019000Y-38834200D01* +X59521750Y-38834200D01* +X59415000Y-38940950D01* +X59412934Y-39181200D01* +X56748194Y-39181200D01* +X56750404Y-39173915D01* +X56760200Y-39074452D01* +X56760200Y-39074443D01* +X56763474Y-39041201D01* +X56760200Y-39007959D01* +X56760200Y-36641200D01* +X59412934Y-36641200D01* +X59421178Y-36724907D01* +X59445595Y-36805396D01* +X59485245Y-36879576D01* +X59507095Y-36906200D01* +X59485245Y-36932824D01* +X59445595Y-37007004D01* +X59421178Y-37087493D01* +X59412934Y-37171200D01* +X59412934Y-37911200D01* +X59421178Y-37994907D01* +X59445595Y-38075396D01* +X59485245Y-38149576D01* +X59507095Y-38176200D01* +X59485245Y-38202824D01* +X59445595Y-38277004D01* +X59421178Y-38357493D01* +X59412934Y-38441200D01* +X59415000Y-38681450D01* +X59521750Y-38788200D01* +X61019000Y-38788200D01* +X61019000Y-38768200D01* +X61065000Y-38768200D01* +X61065000Y-38788200D01* +X62562250Y-38788200D01* +X62669000Y-38681450D01* +X62671066Y-38441200D01* +X62662822Y-38357493D01* +X62638405Y-38277004D01* +X62598755Y-38202824D01* +X62576905Y-38176200D01* +X62598755Y-38149576D01* +X62638405Y-38075396D01* +X62662822Y-37994907D01* +X62671066Y-37911200D01* +X62671066Y-37171200D01* +X62662822Y-37087493D01* +X62638405Y-37007004D01* +X62598755Y-36932824D01* +X62576905Y-36906200D01* +X62598755Y-36879576D01* +X62638405Y-36805396D01* +X62662822Y-36724907D01* +X62671066Y-36641200D01* +X62669000Y-36400950D01* +X62562250Y-36294200D01* +X61065000Y-36294200D01* +X61065000Y-36314200D01* +X61019000Y-36314200D01* +X61019000Y-36294200D01* +X59521750Y-36294200D01* +X59415000Y-36400950D01* +X59412934Y-36641200D01* +X56760200Y-36641200D01* +X56760200Y-35383222D01* +X56772222Y-35371200D01* +X59412934Y-35371200D01* +X59421178Y-35454907D01* +X59445595Y-35535396D01* +X59485245Y-35609576D01* +X59507095Y-35636200D01* +X59485245Y-35662824D01* +X59445595Y-35737004D01* +X59421178Y-35817493D01* +X59412934Y-35901200D01* +X59415000Y-36141450D01* +X59521750Y-36248200D01* +X61019000Y-36248200D01* +X61019000Y-35024200D01* +X61065000Y-35024200D01* +X61065000Y-36248200D01* +X62562250Y-36248200D01* +X62669000Y-36141450D01* +X62671066Y-35901200D01* +X62662822Y-35817493D01* +X62638405Y-35737004D01* +X62598755Y-35662824D01* +X62576905Y-35636200D01* +X62598755Y-35609576D01* +X62638405Y-35535396D01* +X62662822Y-35454907D01* +X62671066Y-35371200D01* +X62669000Y-35130950D01* +X62562250Y-35024200D01* +X61065000Y-35024200D01* +X61019000Y-35024200D01* +X59521750Y-35024200D01* +X59415000Y-35130950D01* +X59412934Y-35371200D01* +X56772222Y-35371200D01* +X57735222Y-34408200D01* +X59477026Y-34408200D01* +X59445595Y-34467004D01* +X59421178Y-34547493D01* +X59412934Y-34631200D01* +X59415000Y-34871450D01* +X59521750Y-34978200D01* +X61019000Y-34978200D01* +X61019000Y-34958200D01* +X61065000Y-34958200D01* +X61065000Y-34978200D01* +X62562250Y-34978200D01* +X62669000Y-34871450D01* +X62671066Y-34631200D01* +X62662822Y-34547493D01* +X62638405Y-34467004D01* +X62598755Y-34392824D01* +X62576905Y-34366200D01* +X62598755Y-34339576D01* +X62638405Y-34265396D01* +X62662822Y-34184907D01* +X62671066Y-34101200D01* +X62671066Y-33361200D01* +X62662822Y-33277493D01* +X62638405Y-33197004D01* +X62598755Y-33122824D01* +X62576905Y-33096200D01* +X62598755Y-33069576D01* +X62638405Y-32995396D01* +X62662822Y-32914907D01* +X62671066Y-32831200D01* +X62671066Y-32091200D01* +X63312934Y-32091200D01* +X63312934Y-32831200D01* +X63321178Y-32914907D01* +X63345595Y-32995396D01* +X63385245Y-33069576D01* +X63407095Y-33096200D01* +X63385245Y-33122824D01* +X63345595Y-33197004D01* +X63321178Y-33277493D01* +X63312934Y-33361200D01* +X63312934Y-34101200D01* +X63321178Y-34184907D01* +X63345595Y-34265396D01* +X63385245Y-34339576D01* +X63407095Y-34366200D01* +X63385245Y-34392824D01* +X63345595Y-34467004D01* +X63321178Y-34547493D01* +X63312934Y-34631200D01* +X63312934Y-35371200D01* +X63321178Y-35454907D01* +X63345595Y-35535396D01* +X63385245Y-35609576D01* +X63407095Y-35636200D01* +X63385245Y-35662824D01* +X63345595Y-35737004D01* +X63321178Y-35817493D01* +X63312934Y-35901200D01* +X63312934Y-36641200D01* +X63321178Y-36724907D01* +X63345595Y-36805396D01* +X63385245Y-36879576D01* +X63407095Y-36906200D01* +X63385245Y-36932824D01* +X63345595Y-37007004D01* +X63321178Y-37087493D01* +X63312934Y-37171200D01* +X63312934Y-37911200D01* +X63321178Y-37994907D01* +X63345595Y-38075396D01* +X63385245Y-38149576D01* +X63407095Y-38176200D01* +X63385245Y-38202824D01* +X63345595Y-38277004D01* +X63321178Y-38357493D01* +X63312934Y-38441200D01* +X63312934Y-39181200D01* +X63321178Y-39264907D01* +X63345595Y-39345396D01* +X63385245Y-39419576D01* +X63407095Y-39446200D01* +X63385245Y-39472824D01* +X63345595Y-39547004D01* +X63321178Y-39627493D01* +X63312934Y-39711200D01* +X63312934Y-40451200D01* +X63321178Y-40534907D01* +X63345595Y-40615396D01* +X63385245Y-40689576D01* +X63438605Y-40754595D01* +X63503624Y-40807955D01* +X63577804Y-40847605D01* +X63658293Y-40872022D01* +X63742000Y-40880266D01* +X66142000Y-40880266D01* +X66225707Y-40872022D01* +X66306196Y-40847605D01* +X66380376Y-40807955D01* +X66445395Y-40754595D01* +X66498755Y-40689576D01* +X66538405Y-40615396D01* +X66562822Y-40534907D01* +X66571066Y-40451200D01* +X66571066Y-39711200D01* +X66569959Y-39699960D01* +X70720800Y-43850801D01* +X70720800Y-44202042D01* +X70715320Y-44202582D01* +X70587932Y-44241225D01* +X70470531Y-44303977D01* +X70367628Y-44388428D01* +X70283177Y-44491331D01* +X70220425Y-44608732D01* +X70181782Y-44736120D01* +X70168734Y-44868599D01* +X70168734Y-45568601D01* +X70181782Y-45701080D01* +X70220425Y-45828468D01* +X70283177Y-45945869D01* +X70367628Y-46048772D01* +X70470531Y-46133223D01* +X70587932Y-46195975D01* +X70662516Y-46218600D01* +X70587932Y-46241225D01* +X70470531Y-46303977D01* +X70367628Y-46388428D01* +X70283177Y-46491331D01* +X70220425Y-46608732D01* +X70181782Y-46736120D01* +X70168734Y-46868599D01* +X70168734Y-47568601D01* +X70181782Y-47701080D01* +X70220425Y-47828468D01* +X70283177Y-47945869D01* +X70367628Y-48048772D01* +X70470531Y-48133223D01* +X70587932Y-48195975D01* +X70715320Y-48234618D01* +X70720801Y-48235158D01* +X70720801Y-48460259D01* +X70718010Y-48488600D01* +X70729149Y-48601711D01* +X70759866Y-48702966D01* +X70762144Y-48710476D01* +X70815722Y-48810715D01* +X70836332Y-48835828D01* +X70869763Y-48876564D01* +X70869766Y-48876567D01* +X70887827Y-48898574D01* +X70909834Y-48916635D01* +X72375733Y-50382534D01* +X71145800Y-50382534D01* +X71047462Y-50392219D01* +X70952902Y-50420904D01* +X70865756Y-50467484D01* +X70789372Y-50530172D01* +X70726684Y-50606556D01* +X70680104Y-50693702D01* +X70651419Y-50788262D01* +X70641734Y-50886600D01* +X70641734Y-51036600D01* +X70651419Y-51134938D01* +X70674675Y-51211600D01* +X70651419Y-51288262D01* +X70641734Y-51386600D01* +X70641734Y-51536600D01* +X70651419Y-51634938D01* +X70674675Y-51711600D01* +X70651419Y-51788262D01* +X70645501Y-51848348D01* +X70631181Y-51834028D01* +X70495731Y-51743523D01* +X70345227Y-51681182D01* +X70185452Y-51649400D01* +X70022548Y-51649400D01* +X69862773Y-51681182D01* +X69712269Y-51743523D01* +X69576819Y-51834028D01* +X69461628Y-51949219D01* +X69371123Y-52084669D01* +X69308782Y-52235173D01* +X69277000Y-52394948D01* +X69277000Y-52557852D01* +X69308782Y-52717627D01* +X69371123Y-52868131D01* +X69461628Y-53003581D01* +X69576819Y-53118772D01* +X69712269Y-53209277D01* +X69862773Y-53271618D01* +X70022548Y-53303400D01* +X70185452Y-53303400D01* +X70345227Y-53271618D01* +X70495731Y-53209277D01* +X70631181Y-53118772D01* +X70648155Y-53101798D01* +X70651419Y-53134938D01* +X70674675Y-53211600D01* +X70651419Y-53288262D01* +X70641734Y-53386600D01* +X70641734Y-53536600D01* +X70651419Y-53634938D01* +X70674675Y-53711600D01* +X70651419Y-53788262D01* +X70641734Y-53886600D01* +X70641734Y-54036600D01* +X70651419Y-54134938D01* +X70674675Y-54211600D01* +X70651419Y-54288262D01* +X70641734Y-54386600D01* +X70641734Y-54536600D01* +X70651419Y-54634938D01* +X70674675Y-54711600D01* +X70651419Y-54788262D01* +X70641931Y-54884600D01* +X69866839Y-54884600D01* +X69830174Y-54763733D01* +X69767422Y-54646332D01* +X69682971Y-54543429D01* +X69580068Y-54458978D01* +X69462667Y-54396226D01* +X69335279Y-54357583D01* +X69202800Y-54344535D01* +X68502798Y-54344535D01* +X68370319Y-54357583D01* +X68242931Y-54396226D01* +X68125530Y-54458978D01* +X68022627Y-54543429D01* +X67938176Y-54646332D01* +X67875424Y-54763733D01* +X67852799Y-54838317D01* +X67830174Y-54763733D01* +X67767422Y-54646332D01* +X67682971Y-54543429D01* +X67580068Y-54458978D01* +X67462667Y-54396226D01* +X67429800Y-54386256D01* +X67429800Y-53400666D01* +X68052800Y-53400666D01* +X68136507Y-53392422D01* +X68216996Y-53368005D01* +X68291176Y-53328355D01* +X68356195Y-53274995D01* +X68409555Y-53209976D01* +X68449205Y-53135796D01* +X68473622Y-53055307D01* +X68481866Y-52971600D01* +X68481866Y-51371600D01* +X68473622Y-51287893D01* +X68449205Y-51207404D01* +X68409555Y-51133224D01* +X68356195Y-51068205D01* +X68291176Y-51014845D01* +X68216996Y-50975195D01* +X68136507Y-50950778D01* +X68052800Y-50942534D01* +X65652800Y-50942534D01* +X65569093Y-50950778D01* +X65488604Y-50975195D01* +X65414424Y-51014845D01* +X65349405Y-51068205D01* +X65296045Y-51133224D01* +X65256395Y-51207404D01* +X65231978Y-51287893D01* +X65223734Y-51371600D01* +X65223734Y-52971600D01* +X65231978Y-53055307D01* +X65256395Y-53135796D01* +X65296045Y-53209976D01* +X65349405Y-53274995D01* +X65414424Y-53328355D01* +X65488604Y-53368005D01* +X65569093Y-53392422D01* +X65652800Y-53400666D01* +X66275801Y-53400666D01* +X66275800Y-54386255D01* +X66242931Y-54396226D01* +X66125530Y-54458978D01* +X66022627Y-54543429D01* +X65938176Y-54646332D01* +X65875424Y-54763733D01* +X65836781Y-54891121D01* +X65823733Y-55023600D01* +X65823733Y-55923602D01* +X65836781Y-56056081D01* +X65875424Y-56183469D01* +X65938176Y-56300870D01* +X66022627Y-56403773D01* +X66125530Y-56488224D01* +X66242931Y-56550976D01* +X66370319Y-56589619D01* +X66502798Y-56602667D01* +X67202800Y-56602667D01* +X67335279Y-56589619D01* +X67462667Y-56550976D01* +X67580068Y-56488224D01* +X67682971Y-56403773D01* +X67767422Y-56300870D01* +X67830174Y-56183469D01* +X67852799Y-56108885D01* +X67875424Y-56183469D01* +X67938176Y-56300870D01* +X68022627Y-56403773D01* +X68125530Y-56488224D01* +X68242931Y-56550976D01* +X68370319Y-56589619D01* +X68502798Y-56602667D01* +X69174932Y-56602667D01* +X69157234Y-56620365D01* +X69135227Y-56638426D01* +X69117166Y-56660433D01* +X69117163Y-56660436D01* +X69105339Y-56674844D01* +X69063122Y-56726285D01* +X69032426Y-56783714D01* +X69009544Y-56826524D01* +X68976549Y-56935289D01* +X68965410Y-57048400D01* +X68968201Y-57076741D01* +X68968200Y-59204469D01* +X68965410Y-59232800D01* +X68968200Y-59261131D01* +X68968200Y-59261135D01* +X68969267Y-59271969D01* +X68976549Y-59345911D01* +X68990342Y-59391377D01* +X69009543Y-59454675D01* +X69063121Y-59554914D01* +X69135226Y-59642774D01* +X69157238Y-59660839D01* +X73641801Y-64145402D01* +X73641800Y-73471799D01* +X73305571Y-73808028D01* +X73103500Y-73519442D01* +X73016825Y-73418406D01* +X72912105Y-73336220D01* +X72793362Y-73276044D01* +X72665162Y-73240190D01* +X72532429Y-73230035D01* +X72400267Y-73245970D01* +X72326195Y-73270216D01* +X72374314Y-73208903D01* +X72434490Y-73090161D01* +X72470345Y-72961960D01* +X72480499Y-72829228D01* +X72464564Y-72697065D01* +X72423152Y-72570551D01* +X72357853Y-72454546D01* +X71956348Y-71881138D01* +X71869673Y-71780102D01* +X71764953Y-71697916D01* +X71747800Y-71689223D01* +X71747800Y-70926666D01* +X72370800Y-70926666D01* +X72454507Y-70918422D01* +X72534996Y-70894005D01* +X72609176Y-70854355D01* +X72674195Y-70800995D01* +X72727555Y-70735976D01* +X72767205Y-70661796D01* +X72791622Y-70581307D01* +X72799866Y-70497600D01* +X72799866Y-68897600D01* +X72791622Y-68813893D01* +X72767205Y-68733404D01* +X72727555Y-68659224D01* +X72674195Y-68594205D01* +X72609176Y-68540845D01* +X72534996Y-68501195D01* +X72454507Y-68476778D01* +X72370800Y-68468534D01* +X69970800Y-68468534D01* +X69887093Y-68476778D01* +X69806604Y-68501195D01* +X69732424Y-68540845D01* +X69667405Y-68594205D01* +X69614045Y-68659224D01* +X69574395Y-68733404D01* +X69549978Y-68813893D01* +X69541734Y-68897600D01* +X69541734Y-70497600D01* +X69549978Y-70581307D01* +X69574395Y-70661796D01* +X69614045Y-70735976D01* +X69667405Y-70800995D01* +X69732424Y-70854355D01* +X69806604Y-70894005D01* +X69887093Y-70918422D01* +X69970800Y-70926666D01* +X70593800Y-70926666D01* +X70593801Y-72006218D01* +X70273356Y-72230596D01* +X70172320Y-72317272D01* +X70090134Y-72421993D01* +X70029958Y-72540735D01* +X69994103Y-72668936D01* +X69983949Y-72801668D01* +X69999884Y-72933831D01* +X70041296Y-73060345D01* +X70106595Y-73176350D01* +X70508100Y-73749758D01* +X70594775Y-73850794D01* +X70699495Y-73932980D01* +X70818238Y-73993156D01* +X70946438Y-74029010D01* +X71079171Y-74039165D01* +X71211333Y-74023230D01* +X71285405Y-73998984D01* +X71237286Y-74060297D01* +X71177110Y-74179039D01* +X71141255Y-74307240D01* +X71131101Y-74439972D01* +X71147036Y-74572135D01* +X71188448Y-74698649D01* +X71253747Y-74814654D01* +X71655252Y-75388062D01* +X71741927Y-75489098D01* +X71846647Y-75571284D01* +X71965390Y-75631460D01* +X72093590Y-75667314D01* +X72226323Y-75677469D01* +X72358485Y-75661534D01* +X72485000Y-75620122D01* +X72601005Y-75554824D01* +X72966241Y-75299083D01* +X72934600Y-75458148D01* +X72934600Y-75621052D01* +X72966382Y-75780827D01* +X73028723Y-75931331D01* +X73119228Y-76066781D01* +X73234419Y-76181972D01* +X73369869Y-76272477D01* +X73401528Y-76285591D01* +X70228396Y-78659459D01* +X67913613Y-78659459D01* +X67892252Y-78607889D01* +X67747028Y-78390546D01* +X67562193Y-78205711D01* +X67344850Y-78060487D01* +X67103352Y-77960455D01* +X66846978Y-77909459D01* +X66585582Y-77909459D01* +X66329208Y-77960455D01* +X66087710Y-78060487D01* +X65870367Y-78205711D01* +X65685532Y-78390546D01* +X65540308Y-78607889D01* +X65440276Y-78849387D01* +X65389280Y-79105761D01* +X65389280Y-79367157D01* +X65440276Y-79623531D01* +X65540308Y-79865029D01* +X65685532Y-80082372D01* +X65870367Y-80267207D01* +X66087710Y-80412431D01* +X66329208Y-80512463D01* +X66585582Y-80563459D01* +X66846978Y-80563459D01* +X67103352Y-80512463D01* +X67244252Y-80454100D01* +X71886593Y-80454100D01* +X71901018Y-80536966D01* +X71931332Y-80615425D01* +X71976370Y-80686462D01* +X73022994Y-82026080D01* +X73081026Y-82086966D01* +X73149821Y-82135361D01* +X73226735Y-82169405D01* +X73308813Y-82187789D01* +X73392900Y-82189807D01* +X73475766Y-82175382D01* +X73554225Y-82145068D01* +X73625262Y-82100030D01* +X74964880Y-81053406D01* +X75025766Y-80995374D01* +X75074161Y-80926579D01* +X75108205Y-80849665D01* +X75126589Y-80767587D01* +X75128607Y-80683500D01* +X75114182Y-80600634D01* +X75083868Y-80522175D01* +X75038830Y-80451138D01* +X74529679Y-79799455D01* +X74601301Y-79743498D01* +X74655196Y-79954494D01* +X74856837Y-80102847D01* +X75083547Y-80209012D01* +X75326612Y-80268909D01* +X75576692Y-80280234D01* +X75824176Y-80242554D01* +X76059554Y-80157316D01* +X76108033Y-80132879D01* +X76211361Y-79941172D01* +X75505183Y-79037304D01* +X75489423Y-79049617D01* +X75461102Y-79013370D01* +X75476863Y-79001056D01* +X74770684Y-78097189D01* +X74559674Y-78151070D01* +X74524234Y-78192197D01* +X74384585Y-78399963D01* +X74288153Y-78630979D01* +X74238642Y-78876371D01* +X74237957Y-79126706D01* +X74286122Y-79372365D01* +X74381287Y-79603906D01* +X74572978Y-79707246D01* +X74501356Y-79763203D01* +X73992206Y-79111520D01* +X73934174Y-79050634D01* +X73865379Y-79002239D01* +X73788465Y-78968195D01* +X73706387Y-78949811D01* +X73622300Y-78947793D01* +X73539434Y-78962218D01* +X73460975Y-78992532D01* +X73389938Y-79037570D01* +X72050320Y-80084194D01* +X71989434Y-80142226D01* +X71941039Y-80211021D01* +X71906995Y-80287935D01* +X71888611Y-80370013D01* +X71886593Y-80454100D01* +X67244252Y-80454100D01* +X67344850Y-80412431D01* +X67562193Y-80267207D01* +X67747028Y-80082372D01* +X67892252Y-79865029D01* +X67913613Y-79813459D01* +X70407403Y-79813459D01* +X70451197Y-79815428D01* +X70492183Y-79809174D01* +X70533453Y-79805109D01* +X70548262Y-79800617D01* +X70563556Y-79798283D01* +X70602529Y-79784155D01* +X70642217Y-79772116D01* +X70655868Y-79764820D01* +X70670410Y-79759548D01* +X70705868Y-79738094D01* +X70742456Y-79718538D01* +X70776367Y-79690708D01* +X72944268Y-78068868D01* +X74806933Y-78068868D01* +X75513111Y-78972736D01* +X75528871Y-78960423D01* +X75557192Y-78996670D01* +X75541431Y-79008984D01* +X76247610Y-79912851D01* +X76458620Y-79858970D01* +X76494060Y-79817843D01* +X76633709Y-79610077D01* +X76730141Y-79379061D01* +X76779652Y-79133669D01* +X76780337Y-78883334D01* +X76732172Y-78637675D01* +X76637007Y-78406134D01* +X76445316Y-78302794D01* +X76514444Y-78248785D01* +X76518784Y-78255280D01* +X76696655Y-78433151D01* +X76905809Y-78572903D01* +X77138208Y-78669166D01* +X77384921Y-78718240D01* +X77636469Y-78718240D01* +X77883182Y-78669166D01* +X78115581Y-78572903D01* +X78324735Y-78433151D01* +X78502606Y-78255280D01* +X78642358Y-78046126D01* +X78738621Y-77813727D01* +X78787695Y-77567014D01* +X78787695Y-77315466D01* +X78738621Y-77068753D01* +X78642358Y-76836354D01* +X78596392Y-76767561D01* +X78698202Y-76869371D01* +X78907356Y-77009123D01* +X79139755Y-77105386D01* +X79386468Y-77154460D01* +X79638016Y-77154460D01* +X79884729Y-77105386D01* +X80117128Y-77009123D01* +X80326282Y-76869371D01* +X80504153Y-76691500D01* +X80643905Y-76482346D01* +X80740168Y-76249947D01* +X80789242Y-76003234D01* +X80789242Y-75751686D01* +X80740168Y-75504973D01* +X80643905Y-75272574D01* +X80504153Y-75063420D01* +X80326282Y-74885549D01* +X80117128Y-74745797D01* +X79884729Y-74649534D01* +X79638016Y-74600460D01* +X79386468Y-74600460D01* +X79139755Y-74649534D01* +X78907356Y-74745797D01* +X78698202Y-74885549D01* +X78520331Y-75063420D01* +X78380579Y-75272574D01* +X78284316Y-75504973D01* +X78235242Y-75751686D01* +X78235242Y-76003234D01* +X78284316Y-76249947D01* +X78380579Y-76482346D01* +X78426545Y-76551139D01* +X78324735Y-76449329D01* +X78115581Y-76309577D01* +X77883182Y-76213314D01* +X77636469Y-76164240D01* +X77384921Y-76164240D01* +X77138208Y-76213314D01* +X76905809Y-76309577D01* +X76696655Y-76449329D01* +X76518784Y-76627200D01* +X76379032Y-76836354D01* +X76282769Y-77068753D01* +X76233695Y-77315466D01* +X76233695Y-77567014D01* +X76282769Y-77813727D01* +X76379032Y-78046126D01* +X76488815Y-78210429D01* +X76416993Y-78266542D01* +X76363098Y-78055546D01* +X76161457Y-77907193D01* +X75934747Y-77801028D01* +X75691682Y-77741131D01* +X75441602Y-77729806D01* +X75194118Y-77767486D01* +X74958740Y-77852724D01* +X74910261Y-77877161D01* +X74806933Y-78068868D01* +X72944268Y-78068868D01* +X78881146Y-73627400D01* +X84573783Y-73627400D01* +X84622294Y-73628789D01* +X84658534Y-73622653D01* +X84695112Y-73619050D01* +X84714443Y-73613186D01* +X84734358Y-73609814D01* +X84768697Y-73596729D01* +X84803876Y-73586057D01* +X84821698Y-73576531D01* +X84840566Y-73569341D01* +X84871682Y-73549814D01* +X84904115Y-73532479D01* +X84941664Y-73501663D01* +X95000338Y-65717564D01* +X95001405Y-65717027D01* +X95045043Y-65682968D01* +X95066741Y-65666177D01* +X95067616Y-65665350D01* +X95091005Y-65647096D01* +X95108830Y-65626431D01* +X95128675Y-65607690D01* +X95145860Y-65583499D01* +X95165241Y-65561030D01* +X95178691Y-65537286D01* +X95194499Y-65515033D01* +X95206638Y-65487946D01* +X95221259Y-65462134D01* +X95229816Y-65436229D01* +X95240982Y-65411313D01* +X95247604Y-65382376D01* +X95256907Y-65354211D01* +X95260246Y-65327130D01* +X95266336Y-65300518D01* +X95267185Y-65270854D01* +X95267332Y-65269665D01* +X95268002Y-65242348D01* +X95269589Y-65186906D01* +X95269389Y-65185727D01* +X95295958Y-64101751D01* +X95829753Y-63653844D01* +X95888577Y-63593723D01* +X95934541Y-63523281D01* +X95965880Y-63445225D01* +X95981388Y-63362556D01* +X95980471Y-63278449D01* +X95963163Y-63196137D01* +X95930129Y-63118784D01* +X95882639Y-63049362D01* +X94879890Y-61854332D01* +X94819768Y-61795508D01* +X94749326Y-61749544D01* +X94671271Y-61718205D01* +X94588601Y-61702697D01* +X94504495Y-61703614D01* +X94422183Y-61720923D01* +X94344830Y-61753956D01* +X94275408Y-61801446D01* +X93662573Y-62315676D01* +X93603749Y-62375797D01* +X93557785Y-62446239D01* +X93526446Y-62524295D01* +X93510938Y-62606964D01* +X93511855Y-62691071D01* +X93529163Y-62773383D01* +X93562197Y-62850736D01* +X93609687Y-62920158D01* +X94154655Y-63569625D01* +X94121096Y-64938790D01* +X84384814Y-72473400D01* +X78702137Y-72473400D01* +X78658343Y-72471431D01* +X78617355Y-72477685D01* +X78576088Y-72481750D01* +X78561280Y-72486242D01* +X78545984Y-72488576D01* +X78507006Y-72502706D01* +X78467324Y-72514743D01* +X78453675Y-72522038D01* +X78439130Y-72527311D01* +X78403665Y-72548769D01* +X78367085Y-72568321D01* +X78333184Y-72596143D01* +X76421352Y-74026414D01* +X76419800Y-74016044D01* +X76419800Y-69512557D01* +X76475677Y-69428931D01* +X76538018Y-69278427D01* +X76569800Y-69118652D01* +X76569800Y-68955748D01* +X76538018Y-68795973D01* +X76475677Y-68645469D01* +X76385172Y-68510019D01* +X76269981Y-68394828D01* +X76134531Y-68304323D01* +X75984027Y-68241982D01* +X75824252Y-68210200D01* +X75661348Y-68210200D01* +X75501573Y-68241982D01* +X75351069Y-68304323D01* +X75215619Y-68394828D01* +X75100428Y-68510019D01* +X75009923Y-68645469D01* +X74947582Y-68795973D01* +X74915800Y-68955748D01* +X74915800Y-69118652D01* +X74947582Y-69278427D01* +X75009923Y-69428931D01* +X75065800Y-69512557D01* +X75065801Y-73726156D01* +X74732287Y-73974154D01* +X74754457Y-73932676D01* +X74773803Y-73868900D01* +X74787451Y-73823912D01* +X74793574Y-73761736D01* +X74795800Y-73739136D01* +X74795800Y-73739131D01* +X74798590Y-73710800D01* +X74795800Y-73682469D01* +X74795800Y-63934739D01* +X74798591Y-63906400D01* +X74787451Y-63793288D01* +X74754457Y-63684523D01* +X74733216Y-63644785D01* +X74700879Y-63584285D01* +X74628774Y-63496426D01* +X74606762Y-63478361D01* +X70122200Y-58993799D01* +X70122200Y-58210182D01* +X70218373Y-58250018D01* +X70378148Y-58281800D01* +X70541052Y-58281800D01* +X70660593Y-58258021D01* +X70651419Y-58288262D01* +X70641734Y-58386600D01* +X70641734Y-58536600D01* +X70651419Y-58634938D01* +X70680104Y-58729498D01* +X70726684Y-58816644D01* +X70789372Y-58893028D01* +X70865756Y-58955716D01* +X70952902Y-59002296D01* +X71047462Y-59030981D01* +X71145800Y-59040666D01* +X72545800Y-59040666D01* +X72644138Y-59030981D01* +X72738698Y-59002296D01* +X72825844Y-58955716D01* +X72902228Y-58893028D01* +X72964916Y-58816644D01* +X73011496Y-58729498D01* +X73040181Y-58634938D01* +X73049866Y-58536600D01* +X73049866Y-58503448D01* +X73070276Y-58497257D01* +X73170515Y-58443679D01* +X73258374Y-58371574D01* +X73276439Y-58349562D01* +X73344201Y-58281800D01* +X73436652Y-58281800D01* +X73596427Y-58250018D01* +X73746931Y-58187677D01* +X73882381Y-58097172D01* +X73997572Y-57981981D01* +X74088077Y-57846531D01* +X74150418Y-57696027D01* +X74182200Y-57536252D01* +X74182200Y-57373348D01* +X74150418Y-57213573D01* +X74088077Y-57063069D01* +X73997572Y-56927619D01* +X73882381Y-56812428D01* +X73746931Y-56721923D01* +X73596427Y-56659582D01* +X73436652Y-56627800D01* +X73273748Y-56627800D01* +X73113973Y-56659582D01* +X73021026Y-56698082D01* +X73040181Y-56634938D01* +X73049866Y-56536600D01* +X73049866Y-56386600D01* +X73040181Y-56288262D01* +X73016925Y-56211600D01* +X73040181Y-56134938D01* +X73049866Y-56036600D01* +X73049866Y-55886600D01* +X73040181Y-55788262D01* +X73016925Y-55711600D01* +X73040181Y-55634938D01* +X73049866Y-55536600D01* +X73049866Y-55386600D01* +X73040181Y-55288262D01* +X73016925Y-55211600D01* +X73040181Y-55134938D01* +X73049866Y-55036600D01* +X73049866Y-54886600D01* +X73040181Y-54788262D01* +X73016925Y-54711600D01* +X73040181Y-54634938D01* +X73049866Y-54536600D01* +X73049866Y-54386600D01* +X73040181Y-54288262D01* +X73016925Y-54211600D01* +X73040181Y-54134938D01* +X73049866Y-54036600D01* +X73049866Y-53886600D01* +X73040181Y-53788262D01* +X73016925Y-53711600D01* +X73040181Y-53634938D01* +X73049866Y-53536600D01* +X73049866Y-53386600D01* +X73040181Y-53288262D01* +X73016925Y-53211600D01* +X73040181Y-53134938D01* +X73049866Y-53036600D01* +X73049866Y-52886600D01* +X73040181Y-52788262D01* +X73016925Y-52711600D01* +X73040181Y-52634938D01* +X73049866Y-52536600D01* +X73049866Y-52386600D01* +X73040181Y-52288262D01* +X73016925Y-52211600D01* +X73040181Y-52134938D01* +X73049866Y-52036600D01* +X73049866Y-51886600D01* +X73040181Y-51788262D01* +X73016925Y-51711600D01* +X73040181Y-51634938D01* +X73049866Y-51536600D01* +X73049866Y-51386600D01* +X73040181Y-51288262D01* +X73016925Y-51211600D01* +X73040181Y-51134938D01* +X73048067Y-51054868D01* +X78693800Y-56700601D01* +X78693801Y-59182731D01* +X78597462Y-59192219D01* +X78520800Y-59215475D01* +X78444138Y-59192219D01* +X78345800Y-59182534D01* +X78195800Y-59182534D01* +X78097462Y-59192219D01* +X78053359Y-59205598D01* +X78004507Y-59190778D01* +X77920800Y-59182534D01* +X77900550Y-59184600D01* +X77841281Y-59243869D01* +X77839451Y-59225289D01* +X77817905Y-59154263D01* +X77806457Y-59116524D01* +X77752879Y-59016285D01* +X77680774Y-58928426D01* +X77658759Y-58910359D01* +X77613237Y-58864836D01* +X77595174Y-58842826D01* +X77507315Y-58770721D01* +X77407076Y-58717143D01* +X77332933Y-58694652D01* +X77298311Y-58684149D01* +X77242573Y-58678660D01* +X77213536Y-58675800D01* +X77213531Y-58675800D01* +X77185200Y-58673010D01* +X77156869Y-58675800D01* +X76756331Y-58675800D01* +X76728000Y-58673010D01* +X76699669Y-58675800D01* +X76569800Y-58675800D01* +X76569800Y-58643348D01* +X76538018Y-58483573D01* +X76475677Y-58333069D01* +X76385172Y-58197619D01* +X76269981Y-58082428D01* +X76134531Y-57991923D01* +X75984027Y-57929582D01* +X75824252Y-57897800D01* +X75661348Y-57897800D01* +X75501573Y-57929582D01* +X75351069Y-57991923D01* +X75215619Y-58082428D01* +X75100428Y-58197619D01* +X75009923Y-58333069D01* +X74947582Y-58483573D01* +X74915800Y-58643348D01* +X74915800Y-58806252D01* +X74947582Y-58966027D01* +X75009923Y-59116531D01* +X75066726Y-59201543D01* +X75020800Y-59215475D01* +X74944138Y-59192219D01* +X74845800Y-59182534D01* +X74695800Y-59182534D01* +X74597462Y-59192219D01* +X74520800Y-59215475D01* +X74444138Y-59192219D01* +X74345800Y-59182534D01* +X74195800Y-59182534D01* +X74097462Y-59192219D01* +X74020800Y-59215475D01* +X73944138Y-59192219D01* +X73845800Y-59182534D01* +X73695800Y-59182534D01* +X73597462Y-59192219D01* +X73502902Y-59220904D01* +X73415756Y-59267484D01* +X73339372Y-59330172D01* +X73276684Y-59406556D01* +X73230104Y-59493702D01* +X73201419Y-59588262D01* +X73191734Y-59686600D01* +X73191734Y-61086600D01* +X73201419Y-61184938D01* +X73230104Y-61279498D01* +X73276684Y-61366644D01* +X73339372Y-61443028D01* +X73415756Y-61505716D01* +X73502902Y-61552296D01* +X73597462Y-61580981D01* +X73695800Y-61590666D01* +X73845800Y-61590666D01* +X73944138Y-61580981D01* +X74020800Y-61557725D01* +X74097462Y-61580981D01* +X74195800Y-61590666D01* +X74345800Y-61590666D01* +X74444138Y-61580981D01* +X74520800Y-61557725D01* +X74597462Y-61580981D01* +X74695800Y-61590666D01* +X74845800Y-61590666D01* +X74944138Y-61580981D01* +X75020800Y-61557725D01* +X75097462Y-61580981D01* +X75195800Y-61590666D01* +X75345800Y-61590666D01* +X75444138Y-61580981D01* +X75520800Y-61557725D01* +X75597462Y-61580981D01* +X75695800Y-61590666D01* +X75845800Y-61590666D01* +X75944138Y-61580981D01* +X76020800Y-61557725D01* +X76097462Y-61580981D01* +X76195800Y-61590666D01* +X76345800Y-61590666D01* +X76444138Y-61580981D01* +X76520800Y-61557725D01* +X76597462Y-61580981D01* +X76695800Y-61590666D01* +X76845800Y-61590666D01* +X76944138Y-61580981D01* +X77020800Y-61557725D01* +X77097462Y-61580981D01* +X77195800Y-61590666D01* +X77345800Y-61590666D01* +X77444138Y-61580981D01* +X77488241Y-61567602D01* +X77537093Y-61582422D01* +X77620800Y-61590666D01* +X77641050Y-61588600D01* +X77693800Y-61535850D01* +X77693801Y-63358059D01* +X77691010Y-63386400D01* +X77702149Y-63499511D01* +X77730729Y-63593723D01* +X77735144Y-63608276D01* +X77788722Y-63708515D01* +X77810680Y-63735270D01* +X77842763Y-63774364D01* +X77842766Y-63774367D01* +X77860827Y-63796374D01* +X77882833Y-63814434D01* +X78863798Y-64795400D01* +X78790800Y-64795400D01* +X78764190Y-64798219D01* +X78052990Y-64950619D01* +X78033630Y-64956412D01* +X78011417Y-64967655D01* +X77452617Y-65323255D01* +X77426828Y-65344971D01* +X76918828Y-65903771D01* +X76909658Y-65915101D01* +X76897183Y-65936647D01* +X76643183Y-66495447D01* +X76633277Y-66528689D01* +X76531677Y-67189089D01* +X76530977Y-67222425D01* +X76581777Y-67679625D01* +X76587517Y-67705761D01* +X76790717Y-68315361D01* +X76796686Y-68330115D01* +X76809600Y-68351400D01* +X77266800Y-68961000D01* +X77290430Y-68985048D01* +X77747630Y-69340648D01* +X77765288Y-69352165D01* +X77788251Y-69361784D01* +X78359000Y-69537399D01* +X78359000Y-70459600D01* +X78361272Y-70483517D01* +X78368335Y-70507390D01* +X78379919Y-70529428D01* +X78395580Y-70548781D01* +X78414716Y-70564708D01* +X78436591Y-70576595D01* +X78460365Y-70583986D01* +X78485124Y-70586597D01* +X85851124Y-70637397D01* +X85876776Y-70634960D01* +X85900601Y-70627733D01* +X85922557Y-70615997D01* +X85941803Y-70600203D01* +X85957597Y-70580957D01* +X85969333Y-70559001D01* +X85976560Y-70535176D01* +X85979000Y-70510400D01* +X85979000Y-69581623D01* +X86557990Y-69358935D01* +X86577855Y-69349233D01* +X86597829Y-69334372D01* +X87156629Y-68826372D01* +X87175242Y-68805230D01* +X87530842Y-68297230D01* +X87547283Y-68264561D01* +X87750483Y-67654961D01* +X87754560Y-67639576D01* +X87757000Y-67614800D01* +X87757000Y-66954400D01* +X87752114Y-66919510D01* +X87548914Y-66208310D01* +X87533945Y-66175017D01* +X87178345Y-65616217D01* +X87156159Y-65590002D01* +X86648159Y-65132802D01* +X86633978Y-65121751D01* +X86612046Y-65109969D01* +X86002446Y-64855969D01* +X85989552Y-64851395D01* +X85965098Y-64846722D01* +X85406298Y-64795922D01* +X85394800Y-64795400D01* +X85219647Y-64795400D01* +X85219647Y-64619019D01* +X85252514Y-64609049D01* +X85369915Y-64546297D01* +X85472818Y-64461846D01* +X85557269Y-64358943D01* +X85620021Y-64241542D01* +X85658664Y-64114154D01* +X85671712Y-63981675D01* +X85671712Y-63081673D01* +X85658664Y-62949194D01* +X85620021Y-62821806D01* +X85557269Y-62704405D01* +X85472818Y-62601502D01* +X85369915Y-62517051D01* +X85252514Y-62454299D01* +X85244943Y-62452002D01* +X85342407Y-62399908D01* +X85430266Y-62327803D01* +X85448331Y-62305791D01* +X85596054Y-62158068D01* +X91732778Y-62158068D01* +X92149168Y-62657516D01* +X92209289Y-62716340D01* +X92279731Y-62762303D01* +X92357787Y-62793642D01* +X92440456Y-62809150D01* +X92524563Y-62808233D01* +X92606874Y-62790925D01* +X92684227Y-62757892D01* +X92753650Y-62710401D01* +X92959345Y-62535105D01* +X92972503Y-62384713D01* +X92280060Y-61559491D01* +X91745936Y-62007675D01* +X91732778Y-62158068D01* +X85596054Y-62158068D01* +X85847314Y-61906808D01* +X85908055Y-61946443D01* +X86031591Y-61996041D01* +X86162429Y-62020586D01* +X86295541Y-62019134D01* +X86425812Y-61991741D01* +X86548236Y-61939459D01* +X86658108Y-61864299D01* +X87175188Y-61430417D01* +X87268286Y-61335265D01* +X87341032Y-61223780D01* +X87370937Y-61149293D01* +X91047670Y-61149293D01* +X91048588Y-61233399D01* +X91065896Y-61315711D01* +X91098929Y-61393064D01* +X91146419Y-61462487D01* +X91565975Y-61959279D01* +X91716367Y-61972437D01* +X92243734Y-61529923D01* +X92315298Y-61529923D01* +X93007741Y-62355144D01* +X93158134Y-62368302D01* +X93366485Y-62196171D01* +X93425310Y-62136050D01* +X93471273Y-62065608D01* +X93502611Y-61987553D01* +X93518120Y-61904883D01* +X93517202Y-61820777D01* +X93499894Y-61738465D01* +X93466861Y-61661112D01* +X93419371Y-61591689D01* +X92999815Y-61094897D01* +X92849423Y-61081739D01* +X92315298Y-61529923D01* +X92243734Y-61529923D01* +X92250492Y-61524253D01* +X91558049Y-60699032D01* +X91407656Y-60685874D01* +X91199305Y-60858005D01* +X91140480Y-60918126D01* +X91094517Y-60988568D01* +X91063179Y-61066623D01* +X91047670Y-61149293D01* +X87370937Y-61149293D01* +X87390630Y-61100244D01* +X87415175Y-60969407D01* +X87413723Y-60836294D01* +X87386330Y-60706023D01* +X87334048Y-60583599D01* +X87258888Y-60473727D01* +X87013270Y-60181010D01* +X87070621Y-60181010D01* +X87451657Y-60638326D01* +X87511778Y-60697150D01* +X87582220Y-60743114D01* +X87660276Y-60774452D01* +X87742945Y-60789961D01* +X87827052Y-60789043D01* +X87909364Y-60771735D01* +X87986717Y-60738702D01* +X88056139Y-60691212D01* +X88081822Y-60669463D01* +X91593287Y-60669463D01* +X92285730Y-61494685D01* +X92819854Y-61046501D01* +X92833012Y-60896108D01* +X92416622Y-60396660D01* +X92356501Y-60337836D01* +X92286059Y-60291873D01* +X92208003Y-60260534D01* +X92125334Y-60245026D01* +X92041227Y-60245943D01* +X91958916Y-60263251D01* +X91881563Y-60296284D01* +X91812140Y-60343775D01* +X91606445Y-60519071D01* +X91593287Y-60669463D01* +X88081822Y-60669463D01* +X88405468Y-60395393D01* +X88418626Y-60245000D01* +X87761536Y-59461911D01* +X87083778Y-60030617D01* +X87070621Y-60181010D01* +X87013270Y-60181010D01* +X86648240Y-59745985D01* +X86553088Y-59652887D01* +X86441603Y-59580141D01* +X86318067Y-59530543D01* +X86187229Y-59505998D01* +X86054117Y-59507450D01* +X85923846Y-59534843D01* +X85801422Y-59587125D01* +X85691550Y-59662285D01* +X85174470Y-60096167D01* +X85081372Y-60191319D01* +X85008626Y-60302804D01* +X84959028Y-60426340D01* +X84934483Y-60557177D01* +X84935935Y-60690290D01* +X84963328Y-60820561D01* +X85015610Y-60942985D01* +X85082034Y-61040086D01* +X84781291Y-61340829D01* +X81778714Y-61340829D01* +X81811496Y-61279498D01* +X81840181Y-61184938D01* +X81849866Y-61086600D01* +X81849866Y-59686600D01* +X81840181Y-59588262D01* +X81811496Y-59493702D01* +X81764916Y-59406556D01* +X81702228Y-59330172D01* +X81625844Y-59267484D01* +X81538698Y-59220904D01* +X81517153Y-59214368D01* +X86420866Y-59214368D01* +X86421784Y-59298475D01* +X86439092Y-59380786D01* +X86472125Y-59458139D01* +X86519615Y-59527562D01* +X86903817Y-59982222D01* +X87054210Y-59995379D01* +X87725210Y-59432343D01* +X87796774Y-59432343D01* +X88453864Y-60215432D01* +X88604257Y-60228590D01* +X88956241Y-59935936D01* +X89015066Y-59875815D01* +X89061029Y-59805373D01* +X89092367Y-59727318D01* +X89107876Y-59644648D01* +X89106958Y-59560541D01* +X89089650Y-59478230D01* +X89056617Y-59400877D01* +X89009127Y-59331454D01* +X88624925Y-58876794D01* +X88474532Y-58863637D01* +X87796774Y-59432343D01* +X87725210Y-59432343D01* +X87731968Y-59426673D01* +X87074878Y-58643584D01* +X86924485Y-58630426D01* +X86572501Y-58923080D01* +X86513676Y-58983201D01* +X86467713Y-59053643D01* +X86436375Y-59131698D01* +X86420866Y-59214368D01* +X81517153Y-59214368D01* +X81444138Y-59192219D01* +X81345800Y-59182534D01* +X81195800Y-59182534D01* +X81097462Y-59192219D01* +X81020800Y-59215475D01* +X80944138Y-59192219D01* +X80845800Y-59182534D01* +X80695800Y-59182534D01* +X80597462Y-59192219D01* +X80520800Y-59215475D01* +X80444138Y-59192219D01* +X80345800Y-59182534D01* +X80195800Y-59182534D01* +X80097462Y-59192219D01* +X80020800Y-59215475D01* +X79944138Y-59192219D01* +X79847800Y-59182731D01* +X79847800Y-56489931D01* +X79850590Y-56461600D01* +X79847364Y-56428833D01* +X79844471Y-56399463D01* +X79839451Y-56348488D01* +X79819394Y-56282371D01* +X79806457Y-56239724D01* +X79752879Y-56139485D01* +X79680774Y-56051626D01* +X79658763Y-56033562D01* +X74511801Y-50886600D01* +X81991734Y-50886600D01* +X81991734Y-51036600D01* +X82001419Y-51134938D01* +X82024675Y-51211600D01* +X82001419Y-51288262D01* +X81991734Y-51386600D01* +X81991734Y-51536600D01* +X82001419Y-51634938D01* +X82024675Y-51711600D01* +X82001419Y-51788262D01* +X81991734Y-51886600D01* +X81991734Y-52036600D01* +X82001419Y-52134938D01* +X82024675Y-52211600D01* +X82001419Y-52288262D01* +X81991734Y-52386600D01* +X81991734Y-52536600D01* +X82001419Y-52634938D01* +X82024675Y-52711600D01* +X82001419Y-52788262D01* +X81991734Y-52886600D01* +X81991734Y-53036600D01* +X82001419Y-53134938D01* +X82024675Y-53211600D01* +X82001419Y-53288262D01* +X81991734Y-53386600D01* +X81991734Y-53536600D01* +X82001419Y-53634938D01* +X82024675Y-53711600D01* +X82001419Y-53788262D01* +X81991734Y-53886600D01* +X81991734Y-54036600D01* +X82001419Y-54134938D01* +X82024675Y-54211600D01* +X82001419Y-54288262D01* +X81991734Y-54386600D01* +X81991734Y-54536600D01* +X82001419Y-54634938D01* +X82024675Y-54711600D01* +X82001419Y-54788262D01* +X81991734Y-54886600D01* +X81991734Y-55036600D01* +X82001419Y-55134938D01* +X82024675Y-55211600D01* +X82001419Y-55288262D01* +X81991734Y-55386600D01* +X81991734Y-55536600D01* +X82001419Y-55634938D01* +X82024675Y-55711600D01* +X82001419Y-55788262D01* +X81991734Y-55886600D01* +X81991734Y-56036600D01* +X82001419Y-56134938D01* +X82024675Y-56211600D01* +X82001419Y-56288262D01* +X81991734Y-56386600D01* +X81991734Y-56536600D01* +X82001419Y-56634938D01* +X82024675Y-56711600D01* +X82001419Y-56788262D01* +X81991734Y-56886600D01* +X81991734Y-57036600D01* +X82001419Y-57134938D01* +X82024675Y-57211600D01* +X82001419Y-57288262D01* +X81991734Y-57386600D01* +X81991734Y-57536600D01* +X82001419Y-57634938D01* +X82024675Y-57711600D01* +X82001419Y-57788262D01* +X81991734Y-57886600D01* +X81991734Y-58036600D01* +X82001419Y-58134938D01* +X82024675Y-58211600D01* +X82001419Y-58288262D01* +X81991734Y-58386600D01* +X81991734Y-58536600D01* +X82001419Y-58634938D01* +X82030104Y-58729498D01* +X82076684Y-58816644D01* +X82139372Y-58893028D01* +X82215756Y-58955716D01* +X82302902Y-59002296D01* +X82397462Y-59030981D01* +X82495800Y-59040666D01* +X83895800Y-59040666D01* +X83994138Y-59030981D01* +X84088698Y-59002296D01* +X84175844Y-58955716D01* +X84252228Y-58893028D01* +X84314916Y-58816644D01* +X84361496Y-58729498D01* +X84390181Y-58634938D01* +X84392241Y-58614016D01* +X87110116Y-58614016D01* +X87767206Y-59397105D01* +X88444964Y-58828399D01* +X88458121Y-58678006D01* +X88077085Y-58220690D01* +X88016964Y-58161866D01* +X87946522Y-58115902D01* +X87868466Y-58084564D01* +X87785797Y-58069055D01* +X87701690Y-58069973D01* +X87619378Y-58087281D01* +X87542025Y-58120314D01* +X87472603Y-58167804D01* +X87123274Y-58463623D01* +X87110116Y-58614016D01* +X84392241Y-58614016D01* +X84399866Y-58536600D01* +X84399866Y-58386600D01* +X84390181Y-58288262D01* +X84366925Y-58211600D01* +X84390181Y-58134938D01* +X84399866Y-58036600D01* +X84399866Y-57886600D01* +X84390181Y-57788262D01* +X84366925Y-57711600D01* +X84390181Y-57634938D01* +X84399866Y-57536600D01* +X84399866Y-57386600D01* +X84390181Y-57288262D01* +X84366925Y-57211600D01* +X84390181Y-57134938D01* +X84399866Y-57036600D01* +X84399866Y-56886600D01* +X84390181Y-56788262D01* +X84366925Y-56711600D01* +X84390181Y-56634938D01* +X84399866Y-56536600D01* +X84399866Y-56386600D01* +X84390181Y-56288262D01* +X84366925Y-56211600D01* +X84390181Y-56134938D01* +X84399866Y-56036600D01* +X84399866Y-55886600D01* +X84390181Y-55788262D01* +X84366925Y-55711600D01* +X84390181Y-55634938D01* +X84399669Y-55538600D01* +X88780255Y-55538600D01* +X89497896Y-56256241D01* +X89472777Y-56294738D01* +X89423179Y-56418274D01* +X89398634Y-56549111D01* +X89400086Y-56682223D01* +X89427479Y-56812494D01* +X89479761Y-56934918D01* +X89554921Y-57044790D01* +X90004874Y-57581022D01* +X90100025Y-57674119D01* +X90211511Y-57746865D01* +X90335046Y-57796463D01* +X90465884Y-57821008D01* +X90598996Y-57819556D01* +X90729267Y-57792163D01* +X90800944Y-57761553D01* +X90758353Y-57826826D01* +X90708755Y-57950362D01* +X90684210Y-58081199D01* +X90685662Y-58214311D01* +X90713055Y-58344582D01* +X90765337Y-58467006D01* +X90840497Y-58576878D01* +X91290450Y-59113110D01* +X91385601Y-59206207D01* +X91497087Y-59278953D01* +X91620622Y-59328551D01* +X91751460Y-59353096D01* +X91884572Y-59351644D01* +X92014843Y-59324251D01* +X92135472Y-59272735D01* +X92548167Y-59771840D01* +X92518662Y-59845327D01* +X92503154Y-59927996D01* +X92504071Y-60012103D01* +X92521379Y-60094415D01* +X92554413Y-60171768D01* +X92601903Y-60241190D01* +X93604652Y-61436220D01* +X93664774Y-61495044D01* +X93735216Y-61541008D01* +X93813271Y-61572347D01* +X93895941Y-61587855D01* +X93980047Y-61586938D01* +X94062359Y-61569629D01* +X94139712Y-61536596D01* +X94209134Y-61489106D01* +X94821969Y-60974876D01* +X94880793Y-60914755D01* +X94926757Y-60844313D01* +X94958096Y-60766257D01* +X94973604Y-60683588D01* +X94972687Y-60599481D01* +X94955379Y-60517169D01* +X94922345Y-60439816D01* +X94874855Y-60370394D01* +X93872106Y-59175364D01* +X93811984Y-59116540D01* +X93741542Y-59070576D01* +X93663487Y-59039237D01* +X93580817Y-59023729D01* +X93496711Y-59024646D01* +X93437957Y-59037001D01* +X93020675Y-58532348D01* +X93029678Y-58523147D01* +X93102423Y-58411662D01* +X93152021Y-58288126D01* +X93176566Y-58157289D01* +X93175114Y-58024177D01* +X93147721Y-57893906D01* +X93095439Y-57771482D01* +X93020279Y-57661610D01* +X92570326Y-57125378D01* +X92475175Y-57032281D01* +X92363689Y-56959535D01* +X92240154Y-56909937D01* +X92109316Y-56885392D01* +X91976204Y-56886844D01* +X91845933Y-56914237D01* +X91774256Y-56944847D01* +X91816847Y-56879574D01* +X91866445Y-56756038D01* +X91890990Y-56625201D01* +X91889538Y-56492089D01* +X91862145Y-56361818D01* +X91809863Y-56239394D01* +X91734703Y-56129522D01* +X91284750Y-55593290D01* +X91189599Y-55500193D01* +X91078113Y-55427447D01* +X90954578Y-55377849D01* +X90823740Y-55353304D01* +X90690628Y-55354756D01* +X90560357Y-55382149D01* +X90437933Y-55434431D01* +X90360831Y-55487174D01* +X89855533Y-54981876D01* +X93184355Y-54981876D01* +X95587400Y-57384921D01* +X95605465Y-57406933D01* +X95693324Y-57479038D01* +X95793563Y-57532616D01* +X95838221Y-57546163D01* +X95902327Y-57565610D01* +X95960325Y-57571322D01* +X95987103Y-57573959D01* +X95987108Y-57573959D01* +X96015439Y-57576749D01* +X96043770Y-57573959D01* +X98347945Y-57573959D01* +X98359496Y-57601845D01* +X98499248Y-57810999D01* +X98677119Y-57988870D01* +X98886273Y-58128622D01* +X99118672Y-58224885D01* +X99365385Y-58273959D01* +X99616933Y-58273959D01* +X99863646Y-58224885D01* +X100096045Y-58128622D01* +X100305199Y-57988870D01* +X100483070Y-57810999D01* +X100622822Y-57601845D01* +X100719085Y-57369446D01* +X100768159Y-57122733D01* +X100768159Y-56871185D01* +X100719085Y-56624472D01* +X100622822Y-56392073D01* +X100483070Y-56182919D01* +X100305199Y-56005048D01* +X100096045Y-55865296D01* +X99863646Y-55769033D01* +X99616933Y-55719959D01* +X99365385Y-55719959D01* +X99118672Y-55769033D01* +X98886273Y-55865296D01* +X98706951Y-55985115D01* +X98826770Y-55805793D01* +X98923033Y-55573394D01* +X98972107Y-55326681D01* +X98972107Y-55075133D01* +X98923033Y-54828420D01* +X98826770Y-54596021D01* +X98687018Y-54386867D01* +X98509147Y-54208996D01* +X98299993Y-54069244D01* +X98067594Y-53972981D01* +X97820881Y-53923907D01* +X97569333Y-53923907D01* +X97322620Y-53972981D01* +X97090221Y-54069244D01* +X96910902Y-54189061D01* +X97030719Y-54009742D01* +X97126982Y-53777343D01* +X97176056Y-53530630D01* +X97176056Y-53279082D01* +X97126982Y-53032369D01* +X97030719Y-52799970D01* +X96890967Y-52590816D01* +X96713096Y-52412945D01* +X96503942Y-52273193D01* +X96271543Y-52176930D01* +X96024830Y-52127856D01* +X95773282Y-52127856D01* +X95526569Y-52176930D01* +X95294170Y-52273193D01* +X95114851Y-52393010D01* +X95234668Y-52213691D01* +X95330931Y-51981292D01* +X95380005Y-51734579D01* +X95380005Y-51483031D01* +X95330931Y-51236318D01* +X95234668Y-51003919D01* +X95094916Y-50794765D01* +X94917045Y-50616894D01* +X94707891Y-50477142D01* +X94475492Y-50380879D01* +X94228779Y-50331805D01* +X93977231Y-50331805D01* +X93730518Y-50380879D01* +X93498119Y-50477142D01* +X93318800Y-50596959D01* +X93438617Y-50417640D01* +X93534880Y-50185241D01* +X93583954Y-49938528D01* +X93583954Y-49686980D01* +X93534880Y-49440267D01* +X93438617Y-49207868D01* +X93298865Y-48998714D01* +X93120994Y-48820843D01* +X92911840Y-48681091D01* +X92679441Y-48584828D01* +X92432728Y-48535754D01* +X92181180Y-48535754D01* +X91934467Y-48584828D01* +X91702068Y-48681091D01* +X91522746Y-48800910D01* +X91642565Y-48621588D01* +X91738828Y-48389189D01* +X91787902Y-48142476D01* +X91787902Y-47890928D01* +X91738828Y-47644215D01* +X91642565Y-47411816D01* +X91502813Y-47202662D01* +X91324942Y-47024791D01* +X91115788Y-46885039D01* +X90883389Y-46788776D01* +X90636676Y-46739702D01* +X90385128Y-46739702D01* +X90138415Y-46788776D01* +X89906016Y-46885039D01* +X89696862Y-47024791D01* +X89624191Y-47097462D01* +X89558463Y-47031733D01* +X89761318Y-46952525D01* +X89883992Y-46734307D01* +X89961736Y-46496349D01* +X89991564Y-46247796D01* +X89972328Y-45998200D01* +X89904768Y-45757153D01* +X89791480Y-45533917D01* +X89761317Y-45488778D01* +X89558446Y-45409583D01* +X88747378Y-46220651D01* +X88761520Y-46234793D01* +X88728993Y-46267320D01* +X88714851Y-46253178D01* +X87903783Y-47064246D01* +X87982978Y-47267117D01* +X88028117Y-47297280D01* +X88251353Y-47410568D01* +X88492400Y-47478128D01* +X88741996Y-47497364D01* +X88990549Y-47467536D01* +X89228507Y-47389792D01* +X89446725Y-47267118D01* +X89525933Y-47064263D01* +X89591662Y-47129991D01* +X89518991Y-47202662D01* +X89379239Y-47411816D01* +X89282976Y-47644215D01* +X89233902Y-47890928D01* +X89233902Y-48142476D01* +X89282976Y-48389189D01* +X89379239Y-48621588D01* +X89518991Y-48830742D01* +X89696862Y-49008613D01* +X89906016Y-49148365D01* +X90138415Y-49244628D01* +X90385128Y-49293702D01* +X90636676Y-49293702D01* +X90883389Y-49244628D01* +X91115788Y-49148365D01* +X91295110Y-49028546D01* +X91175291Y-49207868D01* +X91079028Y-49440267D01* +X91029954Y-49686980D01* +X91029954Y-49938528D01* +X91079028Y-50185241D01* +X91090579Y-50213128D01* +X89725107Y-51578600D01* +X88260145Y-51578600D01* +X88250175Y-51545732D01* +X88187423Y-51428331D01* +X88102972Y-51325428D01* +X88000069Y-51240977D01* +X87882668Y-51178225D01* +X87808084Y-51155600D01* +X87882668Y-51132975D01* +X88000069Y-51070223D01* +X88102972Y-50985772D01* +X88187423Y-50882869D01* +X88250175Y-50765468D01* +X88288818Y-50638080D01* +X88301866Y-50505601D01* +X88301866Y-49805599D01* +X88288818Y-49673120D01* +X88250175Y-49545732D01* +X88187423Y-49428331D01* +X88102972Y-49325428D01* +X88000069Y-49240977D01* +X87882668Y-49178225D01* +X87755280Y-49139582D01* +X87622801Y-49126534D01* +X86722799Y-49126534D01* +X86590320Y-49139582D01* +X86462932Y-49178225D01* +X86345531Y-49240977D01* +X86242628Y-49325428D01* +X86158177Y-49428331D01* +X86095425Y-49545732D01* +X86085455Y-49578600D01* +X85813531Y-49578600D01* +X85785200Y-49575810D01* +X85756869Y-49578600D01* +X85756864Y-49578600D01* +X85730086Y-49581237D01* +X85672088Y-49586949D01* +X85607982Y-49606396D01* +X85563324Y-49619943D01* +X85463085Y-49673521D01* +X85375226Y-49745626D01* +X85357161Y-49767638D01* +X84377695Y-50747104D01* +X84361496Y-50693702D01* +X84314916Y-50606556D01* +X84252228Y-50530172D01* +X84175844Y-50467484D01* +X84088698Y-50420904D01* +X83994138Y-50392219D01* +X83895800Y-50382534D01* +X82495800Y-50382534D01* +X82397462Y-50392219D01* +X82302902Y-50420904D01* +X82215756Y-50467484D01* +X82139372Y-50530172D01* +X82076684Y-50606556D01* +X82030104Y-50693702D01* +X82001419Y-50788262D01* +X81991734Y-50886600D01* +X74511801Y-50886600D01* +X73864068Y-50238867D01* +X73944138Y-50230981D01* +X74020800Y-50207725D01* +X74097462Y-50230981D01* +X74195800Y-50240666D01* +X74345800Y-50240666D01* +X74444138Y-50230981D01* +X74520800Y-50207725D01* +X74597462Y-50230981D01* +X74695800Y-50240666D01* +X74845800Y-50240666D01* +X74944138Y-50230981D01* +X75020800Y-50207725D01* +X75097462Y-50230981D01* +X75195800Y-50240666D01* +X75345800Y-50240666D01* +X75444138Y-50230981D01* +X75520800Y-50207725D01* +X75597462Y-50230981D01* +X75695800Y-50240666D01* +X75845800Y-50240666D01* +X75944138Y-50230981D01* +X76020800Y-50207725D01* +X76097462Y-50230981D01* +X76195800Y-50240666D01* +X76345800Y-50240666D01* +X76444138Y-50230981D01* +X76520800Y-50207725D01* +X76597462Y-50230981D01* +X76695800Y-50240666D01* +X76845800Y-50240666D01* +X76944138Y-50230981D01* +X77020800Y-50207725D01* +X77097462Y-50230981D01* +X77195800Y-50240666D01* +X77345800Y-50240666D01* +X77444138Y-50230981D01* +X77520800Y-50207725D01* +X77597462Y-50230981D01* +X77695800Y-50240666D01* +X77845800Y-50240666D01* +X77944138Y-50230981D01* +X78020800Y-50207725D01* +X78097462Y-50230981D01* +X78195800Y-50240666D01* +X78345800Y-50240666D01* +X78444138Y-50230981D01* +X78520800Y-50207725D01* +X78597462Y-50230981D01* +X78695800Y-50240666D01* +X78845800Y-50240666D01* +X78944138Y-50230981D01* +X79020800Y-50207725D01* +X79097462Y-50230981D01* +X79195800Y-50240666D01* +X79345800Y-50240666D01* +X79444138Y-50230981D01* +X79520800Y-50207725D01* +X79597462Y-50230981D01* +X79695800Y-50240666D01* +X79845800Y-50240666D01* +X79944138Y-50230981D01* +X80020800Y-50207725D01* +X80097462Y-50230981D01* +X80195800Y-50240666D01* +X80345800Y-50240666D01* +X80444138Y-50230981D01* +X80520800Y-50207725D01* +X80597462Y-50230981D01* +X80695800Y-50240666D01* +X80845800Y-50240666D01* +X80944138Y-50230981D01* +X81020800Y-50207725D01* +X81097462Y-50230981D01* +X81195800Y-50240666D01* +X81345800Y-50240666D01* +X81444138Y-50230981D01* +X81538698Y-50202296D01* +X81625844Y-50155716D01* +X81702228Y-50093028D01* +X81764916Y-50016644D01* +X81811496Y-49929498D01* +X81840181Y-49834938D01* +X81849866Y-49736600D01* +X81849866Y-48336600D01* +X81840181Y-48238262D01* +X81811496Y-48143702D01* +X81764916Y-48056556D01* +X81702228Y-47980172D01* +X81625844Y-47917484D01* +X81538698Y-47870904D01* +X81444138Y-47842219D01* +X81345800Y-47832534D01* +X81195800Y-47832534D01* +X81097462Y-47842219D01* +X81020800Y-47865475D01* +X80944138Y-47842219D01* +X80845800Y-47832534D01* +X80695800Y-47832534D01* +X80597462Y-47842219D01* +X80520800Y-47865475D01* +X80444138Y-47842219D01* +X80345800Y-47832534D01* +X80195800Y-47832534D01* +X80097462Y-47842219D01* +X80020800Y-47865475D01* +X79944138Y-47842219D01* +X79845800Y-47832534D01* +X79695800Y-47832534D01* +X79597462Y-47842219D01* +X79520800Y-47865475D01* +X79444138Y-47842219D01* +X79345800Y-47832534D01* +X79195800Y-47832534D01* +X79097462Y-47842219D01* +X79020800Y-47865475D01* +X78944138Y-47842219D01* +X78845800Y-47832534D01* +X78695800Y-47832534D01* +X78597462Y-47842219D01* +X78520800Y-47865475D01* +X78444138Y-47842219D01* +X78345800Y-47832534D01* +X78195800Y-47832534D01* +X78097462Y-47842219D01* +X78020800Y-47865475D01* +X77944138Y-47842219D01* +X77845800Y-47832534D01* +X77695800Y-47832534D01* +X77597462Y-47842219D01* +X77520800Y-47865475D01* +X77444138Y-47842219D01* +X77345800Y-47832534D01* +X77195800Y-47832534D01* +X77097462Y-47842219D01* +X77020800Y-47865475D01* +X76944138Y-47842219D01* +X76845800Y-47832534D01* +X76695800Y-47832534D01* +X76597462Y-47842219D01* +X76520800Y-47865475D01* +X76444138Y-47842219D01* +X76345800Y-47832534D01* +X76195800Y-47832534D01* +X76097462Y-47842219D01* +X76020800Y-47865475D01* +X75944138Y-47842219D01* +X75847800Y-47832731D01* +X75847800Y-47243801D01* +X76683910Y-46407691D01* +X76705921Y-46389627D01* +X76778026Y-46301768D01* +X76831604Y-46201529D01* +X76845151Y-46156871D01* +X76864598Y-46092765D01* +X76871501Y-46022666D01* +X76872947Y-46007989D01* +X76872947Y-46007984D01* +X76875737Y-45979653D01* +X76872947Y-45951322D01* +X76872947Y-45762398D01* +X76878427Y-45761858D01* +X77005815Y-45723215D01* +X77123216Y-45660463D01* +X77226119Y-45576012D01* +X77310570Y-45473109D01* +X77373322Y-45355708D01* +X77411965Y-45228320D01* +X77425013Y-45095841D01* +X77425013Y-44395839D01* +X77411965Y-44263360D01* +X77373322Y-44135972D01* +X77310570Y-44018571D01* +X77226119Y-43915668D01* +X77123216Y-43831217D01* +X77005815Y-43768465D01* +X76931231Y-43745840D01* +X77005815Y-43723215D01* +X77123216Y-43660463D01* +X77226119Y-43576012D01* +X77310570Y-43473109D01* +X77373322Y-43355708D01* +X77411965Y-43228320D01* +X77425013Y-43095841D01* +X77425013Y-42395839D01* +X77411965Y-42263360D01* +X77373322Y-42135972D01* +X77310570Y-42018571D01* +X77226119Y-41915668D01* +X77123216Y-41831217D01* +X77005815Y-41768465D01* +X76878427Y-41729822D01* +X76745948Y-41716774D01* +X76082883Y-41716774D01* +X67709346Y-33343238D01* +X67691281Y-33321226D01* +X67603422Y-33249121D01* +X67503183Y-33195543D01* +X67439077Y-33176097D01* +X67394418Y-33162549D01* +X67339352Y-33157126D01* +X67309643Y-33154200D01* +X67309638Y-33154200D01* +X67281307Y-33151410D01* +X67252976Y-33154200D01* +X66515526Y-33154200D01* +X66498755Y-33122824D01* +X66476905Y-33096200D01* +X66498755Y-33069576D01* +X66538405Y-32995396D01* +X66562822Y-32914907D01* +X66571066Y-32831200D01* +X66571066Y-32091200D01* +X66562822Y-32007493D01* +X66538405Y-31927004D01* +X66498755Y-31852824D01* +X66445395Y-31787805D01* +X66380376Y-31734445D01* +X66306196Y-31694795D01* +X66225707Y-31670378D01* +X66142000Y-31662134D01* +X63742000Y-31662134D01* +X63658293Y-31670378D01* +X63577804Y-31694795D01* +X63503624Y-31734445D01* +X63438605Y-31787805D01* +X63385245Y-31852824D01* +X63345595Y-31927004D01* +X63321178Y-32007493D01* +X63312934Y-32091200D01* +X62671066Y-32091200D01* +X62662822Y-32007493D01* +X62638405Y-31927004D01* +X62598755Y-31852824D01* +X62545395Y-31787805D01* +X62480376Y-31734445D01* +X62406196Y-31694795D01* +X62325707Y-31670378D01* +X62242000Y-31662134D01* +X59842000Y-31662134D01* +X59758293Y-31670378D01* +X59677804Y-31694795D01* +X59603624Y-31734445D01* +X59538605Y-31787805D01* +X59485245Y-31852824D01* +X59445595Y-31927004D01* +X59421178Y-32007493D01* +X59412934Y-32091200D01* +X59412934Y-32831200D01* +X59421178Y-32914907D01* +X59445595Y-32995396D01* +X59477026Y-33054200D01* +X57488041Y-33054200D01* +X57454799Y-33050926D01* +X57421557Y-33054200D01* +X57421548Y-33054200D01* +X57322085Y-33063996D01* +X57194470Y-33102708D01* +X57076859Y-33165572D01* +X56973773Y-33250173D01* +X56952574Y-33276004D01* +X55628000Y-34600578D01* +X55602173Y-34621774D01* +X55517572Y-34724860D01* +X55454708Y-34842471D01* +X55415996Y-34970086D01* +X55406200Y-35069549D01* +X55406200Y-35069555D01* +X55402926Y-35102800D01* +X55406200Y-35136045D01* +X55406201Y-38760777D01* +X52840783Y-41326195D01* +X52770794Y-41297204D01* +X52466121Y-41236600D01* +X52155479Y-41236600D01* +X51850806Y-41297204D01* +X51563811Y-41416081D01* +X51305521Y-41588664D01* +X51085864Y-41808321D01* +X50913281Y-42066611D01* +X50794404Y-42353606D01* +X50733800Y-42658279D01* +X39881012Y-42658279D01* +X39894520Y-28474756D01* +X51282171Y-28474756D01* +X51398083Y-28708976D01* +X51668336Y-28862149D01* +X51963278Y-28959654D01* +X52271576Y-28997745D01* +X52581381Y-28974958D01* +X52880788Y-28892169D01* +X53158291Y-28752560D01* +X53223517Y-28708976D01* +X53339429Y-28474756D01* +X52310800Y-27446127D01* +X51282171Y-28474756D01* +X39894520Y-28474756D01* +X39895569Y-27374376D01* +X50726655Y-27374376D01* +X50749442Y-27684181D01* +X50832231Y-27983588D01* +X50971840Y-28261091D01* +X51015424Y-28326317D01* +X51249644Y-28442229D01* +X52278273Y-27413600D01* +X52343327Y-27413600D01* +X53371956Y-28442229D01* +X53606176Y-28326317D01* +X53759349Y-28056064D01* +X53856854Y-27761122D01* +X53894945Y-27452824D01* +X53872158Y-27143019D01* +X53789369Y-26843612D01* +X53649760Y-26566109D01* +X53606176Y-26500883D01* +X53371956Y-26384971D01* +X52343327Y-27413600D01* +X52278273Y-27413600D01* +X51249644Y-26384971D01* +X51015424Y-26500883D01* +X50862251Y-26771136D01* +X50764746Y-27066078D01* +X50726655Y-27374376D01* +X39895569Y-27374376D01* +X39896542Y-26352444D01* +X51282171Y-26352444D01* +X52310800Y-27381073D01* +X53339429Y-26352444D01* +X53223517Y-26118224D01* +X52953264Y-25965051D01* +X52658322Y-25867546D01* +X52350024Y-25829455D01* +X52040219Y-25852242D01* +X51740812Y-25935031D01* +X51463309Y-26074640D01* +X51398083Y-26118224D01* +X51282171Y-26352444D01* +X39896542Y-26352444D01* +X39901803Y-20828827D01* +X40275685Y-20894080D01* +G37* +%TD.AperFunction*% +%TD*% +M02* diff --git a/kicad/gerber/filadry2-F_Mask.gbr b/kicad/gerber/filadry2-F_Mask.gbr new file mode 100644 index 0000000..b1eb089 --- /dev/null +++ b/kicad/gerber/filadry2-F_Mask.gbr @@ -0,0 +1,2768 @@ +%TF.GenerationSoftware,KiCad,Pcbnew,(5.1.9)-1*% +%TF.CreationDate,2021-12-25T05:37:13+03:00*% +%TF.ProjectId,filadry2,66696c61-6472-4793-922e-6b696361645f,rev?*% +%TF.SameCoordinates,Original*% +%TF.FileFunction,Soldermask,Top*% +%TF.FilePolarity,Negative*% +%FSLAX46Y46*% +G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)* +G04 Created by KiCad (PCBNEW (5.1.9)-1) date 2021-12-25 05:37:13* +%MOMM*% +%LPD*% +G01* +G04 APERTURE LIST* +%ADD10C,3.200000*% +%ADD11C,2.300000*% +%ADD12R,2.300000X2.000000*% +%ADD13C,1.600000*% +%ADD14O,2.400000X1.600000*% +%ADD15R,2.400000X1.600000*% +%ADD16C,0.100000*% +%ADD17R,2.600000X2.600000*% +%ADD18C,2.600000*% +%ADD19R,2.400000X0.740000*% +%ADD20C,1.800000*% +G04 APERTURE END LIST* +D10* +%TO.C,H1*% +X25704800Y-63093600D03* +%TD*% +D11* +%TO.C,PS1*% +X52310800Y-42813600D03* +X22910800Y-37613600D03* +D12* +X22910800Y-32613600D03* +D11* +X52310800Y-27413600D03* +%TD*% +D13* +%TO.C,Y1*% +X84584646Y-67214675D03* +X79684646Y-67214675D03* +%TD*% +D14* +%TO.C,U4*% +X63550800Y-69697600D03* +X71170800Y-64617600D03* +X63550800Y-67157600D03* +X71170800Y-67157600D03* +X63550800Y-64617600D03* +D15* +X71170800Y-69697600D03* +%TD*% +D14* +%TO.C,U3*% +X59232800Y-52171600D03* +X66852800Y-47091600D03* +X59232800Y-49631600D03* +X66852800Y-49631600D03* +X59232800Y-47091600D03* +D15* +X66852800Y-52171600D03* +%TD*% +%TO.C,U1*% +G36* +G01* +X72545800Y-58611600D02* +X71145800Y-58611600D01* +G75* +G02* +X71070800Y-58536600I0J75000D01* +G01* +X71070800Y-58386600D01* +G75* +G02* +X71145800Y-58311600I75000J0D01* +G01* +X72545800Y-58311600D01* +G75* +G02* +X72620800Y-58386600I0J-75000D01* +G01* +X72620800Y-58536600D01* +G75* +G02* +X72545800Y-58611600I-75000J0D01* +G01* +G37* +G36* +G01* +X72545800Y-58111600D02* +X71145800Y-58111600D01* +G75* +G02* +X71070800Y-58036600I0J75000D01* +G01* +X71070800Y-57886600D01* +G75* +G02* +X71145800Y-57811600I75000J0D01* +G01* +X72545800Y-57811600D01* +G75* +G02* +X72620800Y-57886600I0J-75000D01* +G01* +X72620800Y-58036600D01* +G75* +G02* +X72545800Y-58111600I-75000J0D01* +G01* +G37* +G36* +G01* +X72545800Y-57611600D02* +X71145800Y-57611600D01* +G75* +G02* +X71070800Y-57536600I0J75000D01* +G01* +X71070800Y-57386600D01* +G75* +G02* +X71145800Y-57311600I75000J0D01* +G01* +X72545800Y-57311600D01* +G75* +G02* +X72620800Y-57386600I0J-75000D01* +G01* +X72620800Y-57536600D01* +G75* +G02* +X72545800Y-57611600I-75000J0D01* +G01* +G37* +G36* +G01* +X72545800Y-57111600D02* +X71145800Y-57111600D01* +G75* +G02* +X71070800Y-57036600I0J75000D01* +G01* +X71070800Y-56886600D01* +G75* +G02* +X71145800Y-56811600I75000J0D01* +G01* +X72545800Y-56811600D01* +G75* +G02* +X72620800Y-56886600I0J-75000D01* +G01* +X72620800Y-57036600D01* +G75* +G02* +X72545800Y-57111600I-75000J0D01* +G01* +G37* +G36* +G01* +X72545800Y-56611600D02* +X71145800Y-56611600D01* +G75* +G02* +X71070800Y-56536600I0J75000D01* +G01* +X71070800Y-56386600D01* +G75* +G02* +X71145800Y-56311600I75000J0D01* +G01* +X72545800Y-56311600D01* +G75* +G02* +X72620800Y-56386600I0J-75000D01* +G01* +X72620800Y-56536600D01* +G75* +G02* +X72545800Y-56611600I-75000J0D01* +G01* +G37* +G36* +G01* +X72545800Y-56111600D02* +X71145800Y-56111600D01* +G75* +G02* +X71070800Y-56036600I0J75000D01* +G01* +X71070800Y-55886600D01* +G75* +G02* +X71145800Y-55811600I75000J0D01* +G01* +X72545800Y-55811600D01* +G75* +G02* +X72620800Y-55886600I0J-75000D01* +G01* +X72620800Y-56036600D01* +G75* +G02* +X72545800Y-56111600I-75000J0D01* +G01* +G37* +G36* +G01* +X72545800Y-55611600D02* +X71145800Y-55611600D01* +G75* +G02* +X71070800Y-55536600I0J75000D01* +G01* +X71070800Y-55386600D01* +G75* +G02* +X71145800Y-55311600I75000J0D01* +G01* +X72545800Y-55311600D01* +G75* +G02* +X72620800Y-55386600I0J-75000D01* +G01* +X72620800Y-55536600D01* +G75* +G02* +X72545800Y-55611600I-75000J0D01* +G01* +G37* +G36* +G01* +X72545800Y-55111600D02* +X71145800Y-55111600D01* +G75* +G02* +X71070800Y-55036600I0J75000D01* +G01* +X71070800Y-54886600D01* +G75* +G02* +X71145800Y-54811600I75000J0D01* +G01* +X72545800Y-54811600D01* +G75* +G02* +X72620800Y-54886600I0J-75000D01* +G01* +X72620800Y-55036600D01* +G75* +G02* +X72545800Y-55111600I-75000J0D01* +G01* +G37* +G36* +G01* +X72545800Y-54611600D02* +X71145800Y-54611600D01* +G75* +G02* +X71070800Y-54536600I0J75000D01* +G01* +X71070800Y-54386600D01* +G75* +G02* +X71145800Y-54311600I75000J0D01* +G01* +X72545800Y-54311600D01* +G75* +G02* +X72620800Y-54386600I0J-75000D01* +G01* +X72620800Y-54536600D01* +G75* +G02* +X72545800Y-54611600I-75000J0D01* +G01* +G37* +G36* +G01* +X72545800Y-54111600D02* +X71145800Y-54111600D01* +G75* +G02* +X71070800Y-54036600I0J75000D01* +G01* +X71070800Y-53886600D01* +G75* +G02* +X71145800Y-53811600I75000J0D01* +G01* +X72545800Y-53811600D01* +G75* +G02* +X72620800Y-53886600I0J-75000D01* +G01* +X72620800Y-54036600D01* +G75* +G02* +X72545800Y-54111600I-75000J0D01* +G01* +G37* +G36* +G01* +X72545800Y-53611600D02* +X71145800Y-53611600D01* +G75* +G02* +X71070800Y-53536600I0J75000D01* +G01* +X71070800Y-53386600D01* +G75* +G02* +X71145800Y-53311600I75000J0D01* +G01* +X72545800Y-53311600D01* +G75* +G02* +X72620800Y-53386600I0J-75000D01* +G01* +X72620800Y-53536600D01* +G75* +G02* +X72545800Y-53611600I-75000J0D01* +G01* +G37* +G36* +G01* +X72545800Y-53111600D02* +X71145800Y-53111600D01* +G75* +G02* +X71070800Y-53036600I0J75000D01* +G01* +X71070800Y-52886600D01* +G75* +G02* +X71145800Y-52811600I75000J0D01* +G01* +X72545800Y-52811600D01* +G75* +G02* +X72620800Y-52886600I0J-75000D01* +G01* +X72620800Y-53036600D01* +G75* +G02* +X72545800Y-53111600I-75000J0D01* +G01* +G37* +G36* +G01* +X72545800Y-52611600D02* +X71145800Y-52611600D01* +G75* +G02* +X71070800Y-52536600I0J75000D01* +G01* +X71070800Y-52386600D01* +G75* +G02* +X71145800Y-52311600I75000J0D01* +G01* +X72545800Y-52311600D01* +G75* +G02* +X72620800Y-52386600I0J-75000D01* +G01* +X72620800Y-52536600D01* +G75* +G02* +X72545800Y-52611600I-75000J0D01* +G01* +G37* +G36* +G01* +X72545800Y-52111600D02* +X71145800Y-52111600D01* +G75* +G02* +X71070800Y-52036600I0J75000D01* +G01* +X71070800Y-51886600D01* +G75* +G02* +X71145800Y-51811600I75000J0D01* +G01* +X72545800Y-51811600D01* +G75* +G02* +X72620800Y-51886600I0J-75000D01* +G01* +X72620800Y-52036600D01* +G75* +G02* +X72545800Y-52111600I-75000J0D01* +G01* +G37* +G36* +G01* +X72545800Y-51611600D02* +X71145800Y-51611600D01* +G75* +G02* +X71070800Y-51536600I0J75000D01* +G01* +X71070800Y-51386600D01* +G75* +G02* +X71145800Y-51311600I75000J0D01* +G01* +X72545800Y-51311600D01* +G75* +G02* +X72620800Y-51386600I0J-75000D01* +G01* +X72620800Y-51536600D01* +G75* +G02* +X72545800Y-51611600I-75000J0D01* +G01* +G37* +G36* +G01* +X72545800Y-51111600D02* +X71145800Y-51111600D01* +G75* +G02* +X71070800Y-51036600I0J75000D01* +G01* +X71070800Y-50886600D01* +G75* +G02* +X71145800Y-50811600I75000J0D01* +G01* +X72545800Y-50811600D01* +G75* +G02* +X72620800Y-50886600I0J-75000D01* +G01* +X72620800Y-51036600D01* +G75* +G02* +X72545800Y-51111600I-75000J0D01* +G01* +G37* +G36* +G01* +X73845800Y-49811600D02* +X73695800Y-49811600D01* +G75* +G02* +X73620800Y-49736600I0J75000D01* +G01* +X73620800Y-48336600D01* +G75* +G02* +X73695800Y-48261600I75000J0D01* +G01* +X73845800Y-48261600D01* +G75* +G02* +X73920800Y-48336600I0J-75000D01* +G01* +X73920800Y-49736600D01* +G75* +G02* +X73845800Y-49811600I-75000J0D01* +G01* +G37* +G36* +G01* +X74345800Y-49811600D02* +X74195800Y-49811600D01* +G75* +G02* +X74120800Y-49736600I0J75000D01* +G01* +X74120800Y-48336600D01* +G75* +G02* +X74195800Y-48261600I75000J0D01* +G01* +X74345800Y-48261600D01* +G75* +G02* +X74420800Y-48336600I0J-75000D01* +G01* +X74420800Y-49736600D01* +G75* +G02* +X74345800Y-49811600I-75000J0D01* +G01* +G37* +G36* +G01* +X74845800Y-49811600D02* +X74695800Y-49811600D01* +G75* +G02* +X74620800Y-49736600I0J75000D01* +G01* +X74620800Y-48336600D01* +G75* +G02* +X74695800Y-48261600I75000J0D01* +G01* +X74845800Y-48261600D01* +G75* +G02* +X74920800Y-48336600I0J-75000D01* +G01* +X74920800Y-49736600D01* +G75* +G02* +X74845800Y-49811600I-75000J0D01* +G01* +G37* +G36* +G01* +X75345800Y-49811600D02* +X75195800Y-49811600D01* +G75* +G02* +X75120800Y-49736600I0J75000D01* +G01* +X75120800Y-48336600D01* +G75* +G02* +X75195800Y-48261600I75000J0D01* +G01* +X75345800Y-48261600D01* +G75* +G02* +X75420800Y-48336600I0J-75000D01* +G01* +X75420800Y-49736600D01* +G75* +G02* +X75345800Y-49811600I-75000J0D01* +G01* +G37* +G36* +G01* +X75845800Y-49811600D02* +X75695800Y-49811600D01* +G75* +G02* +X75620800Y-49736600I0J75000D01* +G01* +X75620800Y-48336600D01* +G75* +G02* +X75695800Y-48261600I75000J0D01* +G01* +X75845800Y-48261600D01* +G75* +G02* +X75920800Y-48336600I0J-75000D01* +G01* +X75920800Y-49736600D01* +G75* +G02* +X75845800Y-49811600I-75000J0D01* +G01* +G37* +G36* +G01* +X76345800Y-49811600D02* +X76195800Y-49811600D01* +G75* +G02* +X76120800Y-49736600I0J75000D01* +G01* +X76120800Y-48336600D01* +G75* +G02* +X76195800Y-48261600I75000J0D01* +G01* +X76345800Y-48261600D01* +G75* +G02* +X76420800Y-48336600I0J-75000D01* +G01* +X76420800Y-49736600D01* +G75* +G02* +X76345800Y-49811600I-75000J0D01* +G01* +G37* +G36* +G01* +X76845800Y-49811600D02* +X76695800Y-49811600D01* +G75* +G02* +X76620800Y-49736600I0J75000D01* +G01* +X76620800Y-48336600D01* +G75* +G02* +X76695800Y-48261600I75000J0D01* +G01* +X76845800Y-48261600D01* +G75* +G02* +X76920800Y-48336600I0J-75000D01* +G01* +X76920800Y-49736600D01* +G75* +G02* +X76845800Y-49811600I-75000J0D01* +G01* +G37* +G36* +G01* +X77345800Y-49811600D02* +X77195800Y-49811600D01* +G75* +G02* +X77120800Y-49736600I0J75000D01* +G01* +X77120800Y-48336600D01* +G75* +G02* +X77195800Y-48261600I75000J0D01* +G01* +X77345800Y-48261600D01* +G75* +G02* +X77420800Y-48336600I0J-75000D01* +G01* +X77420800Y-49736600D01* +G75* +G02* +X77345800Y-49811600I-75000J0D01* +G01* +G37* +G36* +G01* +X77845800Y-49811600D02* +X77695800Y-49811600D01* +G75* +G02* +X77620800Y-49736600I0J75000D01* +G01* +X77620800Y-48336600D01* +G75* +G02* +X77695800Y-48261600I75000J0D01* +G01* +X77845800Y-48261600D01* +G75* +G02* +X77920800Y-48336600I0J-75000D01* +G01* +X77920800Y-49736600D01* +G75* +G02* +X77845800Y-49811600I-75000J0D01* +G01* +G37* +G36* +G01* +X78345800Y-49811600D02* +X78195800Y-49811600D01* +G75* +G02* +X78120800Y-49736600I0J75000D01* +G01* +X78120800Y-48336600D01* +G75* +G02* +X78195800Y-48261600I75000J0D01* +G01* +X78345800Y-48261600D01* +G75* +G02* +X78420800Y-48336600I0J-75000D01* +G01* +X78420800Y-49736600D01* +G75* +G02* +X78345800Y-49811600I-75000J0D01* +G01* +G37* +G36* +G01* +X78845800Y-49811600D02* +X78695800Y-49811600D01* +G75* +G02* +X78620800Y-49736600I0J75000D01* +G01* +X78620800Y-48336600D01* +G75* +G02* +X78695800Y-48261600I75000J0D01* +G01* +X78845800Y-48261600D01* +G75* +G02* +X78920800Y-48336600I0J-75000D01* +G01* +X78920800Y-49736600D01* +G75* +G02* +X78845800Y-49811600I-75000J0D01* +G01* +G37* +G36* +G01* +X79345800Y-49811600D02* +X79195800Y-49811600D01* +G75* +G02* +X79120800Y-49736600I0J75000D01* +G01* +X79120800Y-48336600D01* +G75* +G02* +X79195800Y-48261600I75000J0D01* +G01* +X79345800Y-48261600D01* +G75* +G02* +X79420800Y-48336600I0J-75000D01* +G01* +X79420800Y-49736600D01* +G75* +G02* +X79345800Y-49811600I-75000J0D01* +G01* +G37* +G36* +G01* +X79845800Y-49811600D02* +X79695800Y-49811600D01* +G75* +G02* +X79620800Y-49736600I0J75000D01* +G01* +X79620800Y-48336600D01* +G75* +G02* +X79695800Y-48261600I75000J0D01* +G01* +X79845800Y-48261600D01* +G75* +G02* +X79920800Y-48336600I0J-75000D01* +G01* +X79920800Y-49736600D01* +G75* +G02* +X79845800Y-49811600I-75000J0D01* +G01* +G37* +G36* +G01* +X80345800Y-49811600D02* +X80195800Y-49811600D01* +G75* +G02* +X80120800Y-49736600I0J75000D01* +G01* +X80120800Y-48336600D01* +G75* +G02* +X80195800Y-48261600I75000J0D01* +G01* +X80345800Y-48261600D01* +G75* +G02* +X80420800Y-48336600I0J-75000D01* +G01* +X80420800Y-49736600D01* +G75* +G02* +X80345800Y-49811600I-75000J0D01* +G01* +G37* +G36* +G01* +X80845800Y-49811600D02* +X80695800Y-49811600D01* +G75* +G02* +X80620800Y-49736600I0J75000D01* +G01* +X80620800Y-48336600D01* +G75* +G02* +X80695800Y-48261600I75000J0D01* +G01* +X80845800Y-48261600D01* +G75* +G02* +X80920800Y-48336600I0J-75000D01* +G01* +X80920800Y-49736600D01* +G75* +G02* +X80845800Y-49811600I-75000J0D01* +G01* +G37* +G36* +G01* +X81345800Y-49811600D02* +X81195800Y-49811600D01* +G75* +G02* +X81120800Y-49736600I0J75000D01* +G01* +X81120800Y-48336600D01* +G75* +G02* +X81195800Y-48261600I75000J0D01* +G01* +X81345800Y-48261600D01* +G75* +G02* +X81420800Y-48336600I0J-75000D01* +G01* +X81420800Y-49736600D01* +G75* +G02* +X81345800Y-49811600I-75000J0D01* +G01* +G37* +G36* +G01* +X83895800Y-51111600D02* +X82495800Y-51111600D01* +G75* +G02* +X82420800Y-51036600I0J75000D01* +G01* +X82420800Y-50886600D01* +G75* +G02* +X82495800Y-50811600I75000J0D01* +G01* +X83895800Y-50811600D01* +G75* +G02* +X83970800Y-50886600I0J-75000D01* +G01* +X83970800Y-51036600D01* +G75* +G02* +X83895800Y-51111600I-75000J0D01* +G01* +G37* +G36* +G01* +X83895800Y-51611600D02* +X82495800Y-51611600D01* +G75* +G02* +X82420800Y-51536600I0J75000D01* +G01* +X82420800Y-51386600D01* +G75* +G02* +X82495800Y-51311600I75000J0D01* +G01* +X83895800Y-51311600D01* +G75* +G02* +X83970800Y-51386600I0J-75000D01* +G01* +X83970800Y-51536600D01* +G75* +G02* +X83895800Y-51611600I-75000J0D01* +G01* +G37* +G36* +G01* +X83895800Y-52111600D02* +X82495800Y-52111600D01* +G75* +G02* +X82420800Y-52036600I0J75000D01* +G01* +X82420800Y-51886600D01* +G75* +G02* +X82495800Y-51811600I75000J0D01* +G01* +X83895800Y-51811600D01* +G75* +G02* +X83970800Y-51886600I0J-75000D01* +G01* +X83970800Y-52036600D01* +G75* +G02* +X83895800Y-52111600I-75000J0D01* +G01* +G37* +G36* +G01* +X83895800Y-52611600D02* +X82495800Y-52611600D01* +G75* +G02* +X82420800Y-52536600I0J75000D01* +G01* +X82420800Y-52386600D01* +G75* +G02* +X82495800Y-52311600I75000J0D01* +G01* +X83895800Y-52311600D01* +G75* +G02* +X83970800Y-52386600I0J-75000D01* +G01* +X83970800Y-52536600D01* +G75* +G02* +X83895800Y-52611600I-75000J0D01* +G01* +G37* +G36* +G01* +X83895800Y-53111600D02* +X82495800Y-53111600D01* +G75* +G02* +X82420800Y-53036600I0J75000D01* +G01* +X82420800Y-52886600D01* +G75* +G02* +X82495800Y-52811600I75000J0D01* +G01* +X83895800Y-52811600D01* +G75* +G02* +X83970800Y-52886600I0J-75000D01* +G01* +X83970800Y-53036600D01* +G75* +G02* +X83895800Y-53111600I-75000J0D01* +G01* +G37* +G36* +G01* +X83895800Y-53611600D02* +X82495800Y-53611600D01* +G75* +G02* +X82420800Y-53536600I0J75000D01* +G01* +X82420800Y-53386600D01* +G75* +G02* +X82495800Y-53311600I75000J0D01* +G01* +X83895800Y-53311600D01* +G75* +G02* +X83970800Y-53386600I0J-75000D01* +G01* +X83970800Y-53536600D01* +G75* +G02* +X83895800Y-53611600I-75000J0D01* +G01* +G37* +G36* +G01* +X83895800Y-54111600D02* +X82495800Y-54111600D01* +G75* +G02* +X82420800Y-54036600I0J75000D01* +G01* +X82420800Y-53886600D01* +G75* +G02* +X82495800Y-53811600I75000J0D01* +G01* +X83895800Y-53811600D01* +G75* +G02* +X83970800Y-53886600I0J-75000D01* +G01* +X83970800Y-54036600D01* +G75* +G02* +X83895800Y-54111600I-75000J0D01* +G01* +G37* +G36* +G01* +X83895800Y-54611600D02* +X82495800Y-54611600D01* +G75* +G02* +X82420800Y-54536600I0J75000D01* +G01* +X82420800Y-54386600D01* +G75* +G02* +X82495800Y-54311600I75000J0D01* +G01* +X83895800Y-54311600D01* +G75* +G02* +X83970800Y-54386600I0J-75000D01* +G01* +X83970800Y-54536600D01* +G75* +G02* +X83895800Y-54611600I-75000J0D01* +G01* +G37* +G36* +G01* +X83895800Y-55111600D02* +X82495800Y-55111600D01* +G75* +G02* +X82420800Y-55036600I0J75000D01* +G01* +X82420800Y-54886600D01* +G75* +G02* +X82495800Y-54811600I75000J0D01* +G01* +X83895800Y-54811600D01* +G75* +G02* +X83970800Y-54886600I0J-75000D01* +G01* +X83970800Y-55036600D01* +G75* +G02* +X83895800Y-55111600I-75000J0D01* +G01* +G37* +G36* +G01* +X83895800Y-55611600D02* +X82495800Y-55611600D01* +G75* +G02* +X82420800Y-55536600I0J75000D01* +G01* +X82420800Y-55386600D01* +G75* +G02* +X82495800Y-55311600I75000J0D01* +G01* +X83895800Y-55311600D01* +G75* +G02* +X83970800Y-55386600I0J-75000D01* +G01* +X83970800Y-55536600D01* +G75* +G02* +X83895800Y-55611600I-75000J0D01* +G01* +G37* +G36* +G01* +X83895800Y-56111600D02* +X82495800Y-56111600D01* +G75* +G02* +X82420800Y-56036600I0J75000D01* +G01* +X82420800Y-55886600D01* +G75* +G02* +X82495800Y-55811600I75000J0D01* +G01* +X83895800Y-55811600D01* +G75* +G02* +X83970800Y-55886600I0J-75000D01* +G01* +X83970800Y-56036600D01* +G75* +G02* +X83895800Y-56111600I-75000J0D01* +G01* +G37* +G36* +G01* +X83895800Y-56611600D02* +X82495800Y-56611600D01* +G75* +G02* +X82420800Y-56536600I0J75000D01* +G01* +X82420800Y-56386600D01* +G75* +G02* +X82495800Y-56311600I75000J0D01* +G01* +X83895800Y-56311600D01* +G75* +G02* +X83970800Y-56386600I0J-75000D01* +G01* +X83970800Y-56536600D01* +G75* +G02* +X83895800Y-56611600I-75000J0D01* +G01* +G37* +G36* +G01* +X83895800Y-57111600D02* +X82495800Y-57111600D01* +G75* +G02* +X82420800Y-57036600I0J75000D01* +G01* +X82420800Y-56886600D01* +G75* +G02* +X82495800Y-56811600I75000J0D01* +G01* +X83895800Y-56811600D01* +G75* +G02* +X83970800Y-56886600I0J-75000D01* +G01* +X83970800Y-57036600D01* +G75* +G02* +X83895800Y-57111600I-75000J0D01* +G01* +G37* +G36* +G01* +X83895800Y-57611600D02* +X82495800Y-57611600D01* +G75* +G02* +X82420800Y-57536600I0J75000D01* +G01* +X82420800Y-57386600D01* +G75* +G02* +X82495800Y-57311600I75000J0D01* +G01* +X83895800Y-57311600D01* +G75* +G02* +X83970800Y-57386600I0J-75000D01* +G01* +X83970800Y-57536600D01* +G75* +G02* +X83895800Y-57611600I-75000J0D01* +G01* +G37* +G36* +G01* +X83895800Y-58111600D02* +X82495800Y-58111600D01* +G75* +G02* +X82420800Y-58036600I0J75000D01* +G01* +X82420800Y-57886600D01* +G75* +G02* +X82495800Y-57811600I75000J0D01* +G01* +X83895800Y-57811600D01* +G75* +G02* +X83970800Y-57886600I0J-75000D01* +G01* +X83970800Y-58036600D01* +G75* +G02* +X83895800Y-58111600I-75000J0D01* +G01* +G37* +G36* +G01* +X83895800Y-58611600D02* +X82495800Y-58611600D01* +G75* +G02* +X82420800Y-58536600I0J75000D01* +G01* +X82420800Y-58386600D01* +G75* +G02* +X82495800Y-58311600I75000J0D01* +G01* +X83895800Y-58311600D01* +G75* +G02* +X83970800Y-58386600I0J-75000D01* +G01* +X83970800Y-58536600D01* +G75* +G02* +X83895800Y-58611600I-75000J0D01* +G01* +G37* +G36* +G01* +X81345800Y-61161600D02* +X81195800Y-61161600D01* +G75* +G02* +X81120800Y-61086600I0J75000D01* +G01* +X81120800Y-59686600D01* +G75* +G02* +X81195800Y-59611600I75000J0D01* +G01* +X81345800Y-59611600D01* +G75* +G02* +X81420800Y-59686600I0J-75000D01* +G01* +X81420800Y-61086600D01* +G75* +G02* +X81345800Y-61161600I-75000J0D01* +G01* +G37* +G36* +G01* +X80845800Y-61161600D02* +X80695800Y-61161600D01* +G75* +G02* +X80620800Y-61086600I0J75000D01* +G01* +X80620800Y-59686600D01* +G75* +G02* +X80695800Y-59611600I75000J0D01* +G01* +X80845800Y-59611600D01* +G75* +G02* +X80920800Y-59686600I0J-75000D01* +G01* +X80920800Y-61086600D01* +G75* +G02* +X80845800Y-61161600I-75000J0D01* +G01* +G37* +G36* +G01* +X80345800Y-61161600D02* +X80195800Y-61161600D01* +G75* +G02* +X80120800Y-61086600I0J75000D01* +G01* +X80120800Y-59686600D01* +G75* +G02* +X80195800Y-59611600I75000J0D01* +G01* +X80345800Y-59611600D01* +G75* +G02* +X80420800Y-59686600I0J-75000D01* +G01* +X80420800Y-61086600D01* +G75* +G02* +X80345800Y-61161600I-75000J0D01* +G01* +G37* +G36* +G01* +X79845800Y-61161600D02* +X79695800Y-61161600D01* +G75* +G02* +X79620800Y-61086600I0J75000D01* +G01* +X79620800Y-59686600D01* +G75* +G02* +X79695800Y-59611600I75000J0D01* +G01* +X79845800Y-59611600D01* +G75* +G02* +X79920800Y-59686600I0J-75000D01* +G01* +X79920800Y-61086600D01* +G75* +G02* +X79845800Y-61161600I-75000J0D01* +G01* +G37* +G36* +G01* +X79345800Y-61161600D02* +X79195800Y-61161600D01* +G75* +G02* +X79120800Y-61086600I0J75000D01* +G01* +X79120800Y-59686600D01* +G75* +G02* +X79195800Y-59611600I75000J0D01* +G01* +X79345800Y-59611600D01* +G75* +G02* +X79420800Y-59686600I0J-75000D01* +G01* +X79420800Y-61086600D01* +G75* +G02* +X79345800Y-61161600I-75000J0D01* +G01* +G37* +G36* +G01* +X78845800Y-61161600D02* +X78695800Y-61161600D01* +G75* +G02* +X78620800Y-61086600I0J75000D01* +G01* +X78620800Y-59686600D01* +G75* +G02* +X78695800Y-59611600I75000J0D01* +G01* +X78845800Y-59611600D01* +G75* +G02* +X78920800Y-59686600I0J-75000D01* +G01* +X78920800Y-61086600D01* +G75* +G02* +X78845800Y-61161600I-75000J0D01* +G01* +G37* +G36* +G01* +X78345800Y-61161600D02* +X78195800Y-61161600D01* +G75* +G02* +X78120800Y-61086600I0J75000D01* +G01* +X78120800Y-59686600D01* +G75* +G02* +X78195800Y-59611600I75000J0D01* +G01* +X78345800Y-59611600D01* +G75* +G02* +X78420800Y-59686600I0J-75000D01* +G01* +X78420800Y-61086600D01* +G75* +G02* +X78345800Y-61161600I-75000J0D01* +G01* +G37* +G36* +G01* +X77845800Y-61161600D02* +X77695800Y-61161600D01* +G75* +G02* +X77620800Y-61086600I0J75000D01* +G01* +X77620800Y-59686600D01* +G75* +G02* +X77695800Y-59611600I75000J0D01* +G01* +X77845800Y-59611600D01* +G75* +G02* +X77920800Y-59686600I0J-75000D01* +G01* +X77920800Y-61086600D01* +G75* +G02* +X77845800Y-61161600I-75000J0D01* +G01* +G37* +G36* +G01* +X77345800Y-61161600D02* +X77195800Y-61161600D01* +G75* +G02* +X77120800Y-61086600I0J75000D01* +G01* +X77120800Y-59686600D01* +G75* +G02* +X77195800Y-59611600I75000J0D01* +G01* +X77345800Y-59611600D01* +G75* +G02* +X77420800Y-59686600I0J-75000D01* +G01* +X77420800Y-61086600D01* +G75* +G02* +X77345800Y-61161600I-75000J0D01* +G01* +G37* +G36* +G01* +X76845800Y-61161600D02* +X76695800Y-61161600D01* +G75* +G02* +X76620800Y-61086600I0J75000D01* +G01* +X76620800Y-59686600D01* +G75* +G02* +X76695800Y-59611600I75000J0D01* +G01* +X76845800Y-59611600D01* +G75* +G02* +X76920800Y-59686600I0J-75000D01* +G01* +X76920800Y-61086600D01* +G75* +G02* +X76845800Y-61161600I-75000J0D01* +G01* +G37* +G36* +G01* +X76345800Y-61161600D02* +X76195800Y-61161600D01* +G75* +G02* +X76120800Y-61086600I0J75000D01* +G01* +X76120800Y-59686600D01* +G75* +G02* +X76195800Y-59611600I75000J0D01* +G01* +X76345800Y-59611600D01* +G75* +G02* +X76420800Y-59686600I0J-75000D01* +G01* +X76420800Y-61086600D01* +G75* +G02* +X76345800Y-61161600I-75000J0D01* +G01* +G37* +G36* +G01* +X75845800Y-61161600D02* +X75695800Y-61161600D01* +G75* +G02* +X75620800Y-61086600I0J75000D01* +G01* +X75620800Y-59686600D01* +G75* +G02* +X75695800Y-59611600I75000J0D01* +G01* +X75845800Y-59611600D01* +G75* +G02* +X75920800Y-59686600I0J-75000D01* +G01* +X75920800Y-61086600D01* +G75* +G02* +X75845800Y-61161600I-75000J0D01* +G01* +G37* +G36* +G01* +X75345800Y-61161600D02* +X75195800Y-61161600D01* +G75* +G02* +X75120800Y-61086600I0J75000D01* +G01* +X75120800Y-59686600D01* +G75* +G02* +X75195800Y-59611600I75000J0D01* +G01* +X75345800Y-59611600D01* +G75* +G02* +X75420800Y-59686600I0J-75000D01* +G01* +X75420800Y-61086600D01* +G75* +G02* +X75345800Y-61161600I-75000J0D01* +G01* +G37* +G36* +G01* +X74845800Y-61161600D02* +X74695800Y-61161600D01* +G75* +G02* +X74620800Y-61086600I0J75000D01* +G01* +X74620800Y-59686600D01* +G75* +G02* +X74695800Y-59611600I75000J0D01* +G01* +X74845800Y-59611600D01* +G75* +G02* +X74920800Y-59686600I0J-75000D01* +G01* +X74920800Y-61086600D01* +G75* +G02* +X74845800Y-61161600I-75000J0D01* +G01* +G37* +G36* +G01* +X74345800Y-61161600D02* +X74195800Y-61161600D01* +G75* +G02* +X74120800Y-61086600I0J75000D01* +G01* +X74120800Y-59686600D01* +G75* +G02* +X74195800Y-59611600I75000J0D01* +G01* +X74345800Y-59611600D01* +G75* +G02* +X74420800Y-59686600I0J-75000D01* +G01* +X74420800Y-61086600D01* +G75* +G02* +X74345800Y-61161600I-75000J0D01* +G01* +G37* +G36* +G01* +X73845800Y-61161600D02* +X73695800Y-61161600D01* +G75* +G02* +X73620800Y-61086600I0J75000D01* +G01* +X73620800Y-59686600D01* +G75* +G02* +X73695800Y-59611600I75000J0D01* +G01* +X73845800Y-59611600D01* +G75* +G02* +X73920800Y-59686600I0J-75000D01* +G01* +X73920800Y-61086600D01* +G75* +G02* +X73845800Y-61161600I-75000J0D01* +G01* +G37* +%TD*% +%TO.C,R20*% +G36* +G01* +X71747801Y-45818600D02* +X70847799Y-45818600D01* +G75* +G02* +X70597800Y-45568601I0J249999D01* +G01* +X70597800Y-44868599D01* +G75* +G02* +X70847799Y-44618600I249999J0D01* +G01* +X71747801Y-44618600D01* +G75* +G02* +X71997800Y-44868599I0J-249999D01* +G01* +X71997800Y-45568601D01* +G75* +G02* +X71747801Y-45818600I-249999J0D01* +G01* +G37* +G36* +G01* +X71747801Y-47818600D02* +X70847799Y-47818600D01* +G75* +G02* +X70597800Y-47568601I0J249999D01* +G01* +X70597800Y-46868599D01* +G75* +G02* +X70847799Y-46618600I249999J0D01* +G01* +X71747801Y-46618600D01* +G75* +G02* +X71997800Y-46868599I0J-249999D01* +G01* +X71997800Y-47568601D01* +G75* +G02* +X71747801Y-47818600I-249999J0D01* +G01* +G37* +%TD*% +%TO.C,R19*% +G36* +G01* +X74459947Y-43355319D02* +X73559945Y-43355319D01* +G75* +G02* +X73309946Y-43105320I0J249999D01* +G01* +X73309946Y-42405318D01* +G75* +G02* +X73559945Y-42155319I249999J0D01* +G01* +X74459947Y-42155319D01* +G75* +G02* +X74709946Y-42405318I0J-249999D01* +G01* +X74709946Y-43105320D01* +G75* +G02* +X74459947Y-43355319I-249999J0D01* +G01* +G37* +G36* +G01* +X74459947Y-45355319D02* +X73559945Y-45355319D01* +G75* +G02* +X73309946Y-45105320I0J249999D01* +G01* +X73309946Y-44405318D01* +G75* +G02* +X73559945Y-44155319I249999J0D01* +G01* +X74459947Y-44155319D01* +G75* +G02* +X74709946Y-44405318I0J-249999D01* +G01* +X74709946Y-45105320D01* +G75* +G02* +X74459947Y-45355319I-249999J0D01* +G01* +G37* +%TD*% +%TO.C,R18*% +G36* +G01* +X76745948Y-43345840D02* +X75845946Y-43345840D01* +G75* +G02* +X75595947Y-43095841I0J249999D01* +G01* +X75595947Y-42395839D01* +G75* +G02* +X75845946Y-42145840I249999J0D01* +G01* +X76745948Y-42145840D01* +G75* +G02* +X76995947Y-42395839I0J-249999D01* +G01* +X76995947Y-43095841D01* +G75* +G02* +X76745948Y-43345840I-249999J0D01* +G01* +G37* +G36* +G01* +X76745948Y-45345840D02* +X75845946Y-45345840D01* +G75* +G02* +X75595947Y-45095841I0J249999D01* +G01* +X75595947Y-44395839D01* +G75* +G02* +X75845946Y-44145840I249999J0D01* +G01* +X76745948Y-44145840D01* +G75* +G02* +X76995947Y-44395839I0J-249999D01* +G01* +X76995947Y-45095841D01* +G75* +G02* +X76745948Y-45345840I-249999J0D01* +G01* +G37* +%TD*% +%TO.C,R17*% +G36* +G01* +X58052512Y-76792215D02* +X57273086Y-76342214D01* +G75* +G02* +X57181581Y-76000710I125000J216505D01* +G01* +X57531582Y-75394491D01* +G75* +G02* +X57873087Y-75302985I216505J-124999D01* +G01* +X58652512Y-75752986D01* +G75* +G02* +X58744017Y-76094490I-125000J-216505D01* +G01* +X58394016Y-76700709D01* +G75* +G02* +X58052512Y-76792215I-216505J124999D01* +G01* +G37* +G36* +G01* +X57052512Y-78524265D02* +X56273086Y-78074264D01* +G75* +G02* +X56181581Y-77732760I125000J216505D01* +G01* +X56531582Y-77126541D01* +G75* +G02* +X56873087Y-77035035I216505J-124999D01* +G01* +X57652512Y-77485036D01* +G75* +G02* +X57744017Y-77826540I-125000J-216505D01* +G01* +X57394016Y-78432759D01* +G75* +G02* +X57052512Y-78524265I-216505J124999D01* +G01* +G37* +%TD*% +%TO.C,R16*% +G36* +G01* +X49895200Y-50132401D02* +X49895200Y-49232399D01* +G75* +G02* +X50145199Y-48982400I249999J0D01* +G01* +X50845201Y-48982400D01* +G75* +G02* +X51095200Y-49232399I0J-249999D01* +G01* +X51095200Y-50132401D01* +G75* +G02* +X50845201Y-50382400I-249999J0D01* +G01* +X50145199Y-50382400D01* +G75* +G02* +X49895200Y-50132401I0J249999D01* +G01* +G37* +G36* +G01* +X47895200Y-50132401D02* +X47895200Y-49232399D01* +G75* +G02* +X48145199Y-48982400I249999J0D01* +G01* +X48845201Y-48982400D01* +G75* +G02* +X49095200Y-49232399I0J-249999D01* +G01* +X49095200Y-50132401D01* +G75* +G02* +X48845201Y-50382400I-249999J0D01* +G01* +X48145199Y-50382400D01* +G75* +G02* +X47895200Y-50132401I0J249999D01* +G01* +G37* +%TD*% +%TO.C,R14*% +G36* +G01* +X42893968Y-57760470D02* +X43201787Y-56914745D01* +G75* +G02* +X43522214Y-56765328I234922J-85505D01* +G01* +X44180001Y-57004743D01* +G75* +G02* +X44329418Y-57325170I-85505J-234922D01* +G01* +X44021599Y-58170895D01* +G75* +G02* +X43701172Y-58320312I-234922J85505D01* +G01* +X43043385Y-58080897D01* +G75* +G02* +X42893968Y-57760470I85505J234922D01* +G01* +G37* +G36* +G01* +X41014582Y-57076430D02* +X41322401Y-56230705D01* +G75* +G02* +X41642828Y-56081288I234922J-85505D01* +G01* +X42300615Y-56320703D01* +G75* +G02* +X42450032Y-56641130I-85505J-234922D01* +G01* +X42142213Y-57486855D01* +G75* +G02* +X41821786Y-57636272I-234922J85505D01* +G01* +X41163999Y-57396857D01* +G75* +G02* +X41014582Y-57076430I85505J234922D01* +G01* +G37* +%TD*% +%TO.C,R11*% +G36* +G01* +X60322514Y-73028165D02* +X59543088Y-72578164D01* +G75* +G02* +X59451583Y-72236660I125000J216505D01* +G01* +X59801584Y-71630441D01* +G75* +G02* +X60143089Y-71538935I216505J-124999D01* +G01* +X60922514Y-71988936D01* +G75* +G02* +X61014019Y-72330440I-125000J-216505D01* +G01* +X60664018Y-72936659D01* +G75* +G02* +X60322514Y-73028165I-216505J124999D01* +G01* +G37* +G36* +G01* +X59322514Y-74760215D02* +X58543088Y-74310214D01* +G75* +G02* +X58451583Y-73968710I125000J216505D01* +G01* +X58801584Y-73362491D01* +G75* +G02* +X59143089Y-73270985I216505J-124999D01* +G01* +X59922514Y-73720986D01* +G75* +G02* +X60014019Y-74062490I-125000J-216505D01* +G01* +X59664018Y-74668709D01* +G75* +G02* +X59322514Y-74760215I-216505J124999D01* +G01* +G37* +%TD*% +%TO.C,R10*% +G36* +G01* +X54467200Y-50132401D02* +X54467200Y-49232399D01* +G75* +G02* +X54717199Y-48982400I249999J0D01* +G01* +X55417201Y-48982400D01* +G75* +G02* +X55667200Y-49232399I0J-249999D01* +G01* +X55667200Y-50132401D01* +G75* +G02* +X55417201Y-50382400I-249999J0D01* +G01* +X54717199Y-50382400D01* +G75* +G02* +X54467200Y-50132401I0J249999D01* +G01* +G37* +G36* +G01* +X52467200Y-50132401D02* +X52467200Y-49232399D01* +G75* +G02* +X52717199Y-48982400I249999J0D01* +G01* +X53417201Y-48982400D01* +G75* +G02* +X53667200Y-49232399I0J-249999D01* +G01* +X53667200Y-50132401D01* +G75* +G02* +X53417201Y-50382400I-249999J0D01* +G01* +X52717199Y-50382400D01* +G75* +G02* +X52467200Y-50132401I0J249999D01* +G01* +G37* +%TD*% +%TO.C,R8*% +G36* +G01* +X71666610Y-74220371D02* +X72403849Y-73704151D01* +G75* +G02* +X72752030Y-73765544I143394J-204787D01* +G01* +X73153535Y-74338952D01* +G75* +G02* +X73092142Y-74687133I-204787J-143394D01* +G01* +X72354903Y-75203353D01* +G75* +G02* +X72006722Y-75141960I-143394J204787D01* +G01* +X71605217Y-74568552D01* +G75* +G02* +X71666610Y-74220371I204787J143394D01* +G01* +G37* +G36* +G01* +X70519458Y-72582067D02* +X71256697Y-72065847D01* +G75* +G02* +X71604878Y-72127240I143394J-204787D01* +G01* +X72006383Y-72700648D01* +G75* +G02* +X71944990Y-73048829I-204787J-143394D01* +G01* +X71207751Y-73565049D01* +G75* +G02* +X70859570Y-73503656I-143394J204787D01* +G01* +X70458065Y-72930248D01* +G75* +G02* +X70519458Y-72582067I204787J143394D01* +G01* +G37* +%TD*% +%TO.C,R7*% +G36* +G01* +X68252799Y-55923602D02* +X68252799Y-55023600D01* +G75* +G02* +X68502798Y-54773601I249999J0D01* +G01* +X69202800Y-54773601D01* +G75* +G02* +X69452799Y-55023600I0J-249999D01* +G01* +X69452799Y-55923602D01* +G75* +G02* +X69202800Y-56173601I-249999J0D01* +G01* +X68502798Y-56173601D01* +G75* +G02* +X68252799Y-55923602I0J249999D01* +G01* +G37* +G36* +G01* +X66252799Y-55923602D02* +X66252799Y-55023600D01* +G75* +G02* +X66502798Y-54773601I249999J0D01* +G01* +X67202800Y-54773601D01* +G75* +G02* +X67452799Y-55023600I0J-249999D01* +G01* +X67452799Y-55923602D01* +G75* +G02* +X67202800Y-56173601I-249999J0D01* +G01* +X66502798Y-56173601D01* +G75* +G02* +X66252799Y-55923602I0J249999D01* +G01* +G37* +%TD*% +%TO.C,R6*% +G36* +G01* +X87622801Y-50755600D02* +X86722799Y-50755600D01* +G75* +G02* +X86472800Y-50505601I0J249999D01* +G01* +X86472800Y-49805599D01* +G75* +G02* +X86722799Y-49555600I249999J0D01* +G01* +X87622801Y-49555600D01* +G75* +G02* +X87872800Y-49805599I0J-249999D01* +G01* +X87872800Y-50505601D01* +G75* +G02* +X87622801Y-50755600I-249999J0D01* +G01* +G37* +G36* +G01* +X87622801Y-52755600D02* +X86722799Y-52755600D01* +G75* +G02* +X86472800Y-52505601I0J249999D01* +G01* +X86472800Y-51805599D01* +G75* +G02* +X86722799Y-51555600I249999J0D01* +G01* +X87622801Y-51555600D01* +G75* +G02* +X87872800Y-51805599I0J-249999D01* +G01* +X87872800Y-52505601D01* +G75* +G02* +X87622801Y-52755600I-249999J0D01* +G01* +G37* +%TD*% +%TO.C,R2*% +G36* +G01* +X84042646Y-63981675D02* +X84042646Y-63081673D01* +G75* +G02* +X84292645Y-62831674I249999J0D01* +G01* +X84992647Y-62831674D01* +G75* +G02* +X85242646Y-63081673I0J-249999D01* +G01* +X85242646Y-63981675D01* +G75* +G02* +X84992647Y-64231674I-249999J0D01* +G01* +X84292645Y-64231674D01* +G75* +G02* +X84042646Y-63981675I0J249999D01* +G01* +G37* +G36* +G01* +X82042646Y-63981675D02* +X82042646Y-63081673D01* +G75* +G02* +X82292645Y-62831674I249999J0D01* +G01* +X82992647Y-62831674D01* +G75* +G02* +X83242646Y-63081673I0J-249999D01* +G01* +X83242646Y-63981675D01* +G75* +G02* +X82992647Y-64231674I-249999J0D01* +G01* +X82292645Y-64231674D01* +G75* +G02* +X82042646Y-63981675I0J249999D01* +G01* +G37* +%TD*% +%TO.C,R1*% +G36* +G01* +X91375205Y-56757527D02* +X90685764Y-57336037D01* +G75* +G02* +X90333558Y-57305223I-160696J191510D01* +G01* +X89883605Y-56768991D01* +G75* +G02* +X89914419Y-56416785I191510J160696D01* +G01* +X90603860Y-55838275D01* +G75* +G02* +X90956066Y-55869089I160696J-191510D01* +G01* +X91406019Y-56405321D01* +G75* +G02* +X91375205Y-56757527I-191510J-160696D01* +G01* +G37* +G36* +G01* +X92660781Y-58289615D02* +X91971340Y-58868125D01* +G75* +G02* +X91619134Y-58837311I-160696J191510D01* +G01* +X91169181Y-58301079D01* +G75* +G02* +X91199995Y-57948873I191510J160696D01* +G01* +X91889436Y-57370363D01* +G75* +G02* +X92241642Y-57401177I160696J-191510D01* +G01* +X92691595Y-57937409D01* +G75* +G02* +X92660781Y-58289615I-191510J-160696D01* +G01* +G37* +%TD*% +D16* +%TO.C,Q3*% +G36* +X53843911Y-59165375D02* +G01* +X54843911Y-57433325D01* +X56493689Y-58385825D01* +X55493689Y-60117875D01* +X53843911Y-59165375D01* +G37* +G36* +G01* +X56519866Y-59610486D02* +X56567366Y-59528214D01* +G75* +G02* +X57868505Y-59179575I824889J-476250D01* +G01* +X57868505Y-59179575D01* +G75* +G02* +X58217144Y-60480714I-476250J-824889D01* +G01* +X58169644Y-60562986D01* +G75* +G02* +X56868505Y-60911625I-824889J476250D01* +G01* +X56868505Y-60911625D01* +G75* +G02* +X56519866Y-59610486I476250J824889D01* +G01* +G37* +G36* +G01* +X58719570Y-60880486D02* +X58767070Y-60798214D01* +G75* +G02* +X60068209Y-60449575I824889J-476250D01* +G01* +X60068209Y-60449575D01* +G75* +G02* +X60416848Y-61750714I-476250J-824889D01* +G01* +X60369348Y-61832986D01* +G75* +G02* +X59068209Y-62181625I-824889J476250D01* +G01* +X59068209Y-62181625D01* +G75* +G02* +X58719570Y-60880486I476250J824889D01* +G01* +G37* +%TD*% +%TO.C,Q2*% +G36* +X39199723Y-53293518D02* +G01* +X39883763Y-51414133D01* +X41673877Y-52065682D01* +X40989837Y-53945067D01* +X39199723Y-53293518D01* +G37* +G36* +G01* +X41912316Y-53267192D02* +X41944808Y-53177922D01* +G75* +G02* +X43165639Y-52608639I895057J-325774D01* +G01* +X43165639Y-52608639D01* +G75* +G02* +X43734922Y-53829470I-325774J-895057D01* +G01* +X43702430Y-53918740D01* +G75* +G02* +X42481599Y-54488023I-895057J325774D01* +G01* +X42481599Y-54488023D01* +G75* +G02* +X41912316Y-53267192I325774J895057D01* +G01* +G37* +G36* +G01* +X44299136Y-54135923D02* +X44331628Y-54046653D01* +G75* +G02* +X45552459Y-53477370I895057J-325774D01* +G01* +X45552459Y-53477370D01* +G75* +G02* +X46121742Y-54698201I-325774J-895057D01* +G01* +X46089250Y-54787471D01* +G75* +G02* +X44868419Y-55356754I-895057J325774D01* +G01* +X44868419Y-55356754D01* +G75* +G02* +X44299136Y-54135923I325774J895057D01* +G01* +G37* +%TD*% +%TO.C,Q1*% +G36* +X92930587Y-59965392D02* +G01* +X93543422Y-59451162D01* +X94546171Y-60646192D01* +X93933336Y-61160422D01* +X92930587Y-59965392D01* +G37* +G36* +X91475103Y-61186688D02* +G01* +X92087938Y-60672458D01* +X93090687Y-61867488D01* +X92477852Y-62381718D01* +X91475103Y-61186688D01* +G37* +G36* +X93938371Y-62644360D02* +G01* +X94551206Y-62130130D01* +X95553955Y-63325160D01* +X94941120Y-63839390D01* +X93938371Y-62644360D01* +G37* +%TD*% +D17* +%TO.C,J6*% +X26212800Y-49885600D03* +D18* +X26212800Y-54965600D03* +%TD*% +D19* +%TO.C,J5*% +X64942000Y-40081200D03* +X61042000Y-40081200D03* +X64942000Y-38811200D03* +X61042000Y-38811200D03* +X64942000Y-37541200D03* +X61042000Y-37541200D03* +X64942000Y-36271200D03* +X61042000Y-36271200D03* +X64942000Y-35001200D03* +X61042000Y-35001200D03* +X64942000Y-33731200D03* +X61042000Y-33731200D03* +X64942000Y-32461200D03* +X61042000Y-32461200D03* +%TD*% +D16* +%TO.C,J4*% +G36* +X47550967Y-69157433D02* +G01* +X48850967Y-66905767D01* +X51102633Y-68205767D01* +X49802633Y-70457433D01* +X47550967Y-69157433D01* +G37* +D18* +X53726209Y-71221600D03* +%TD*% +D16* +%TO.C,J3*% +G36* +X34960573Y-64124574D02* +G01* +X35849826Y-61681373D01* +X38293027Y-62570626D01* +X37403774Y-65013827D01* +X34960573Y-64124574D01* +G37* +D18* +X41400439Y-65085062D03* +%TD*% +%TO.C,J2*% +G36* +G01* +X98890118Y-57598000D02* +X98890118Y-57598000D01* +G75* +G02* +X98890118Y-56395918I601041J601041D01* +G01* +X98890118Y-56395918D01* +G75* +G02* +X100092200Y-56395918I601041J-601041D01* +G01* +X100092200Y-56395918D01* +G75* +G02* +X100092200Y-57598000I-601041J-601041D01* +G01* +X100092200Y-57598000D01* +G75* +G02* +X98890118Y-57598000I-601041J601041D01* +G01* +G37* +G36* +G01* +X97094066Y-55801948D02* +X97094066Y-55801948D01* +G75* +G02* +X97094066Y-54599866I601041J601041D01* +G01* +X97094066Y-54599866D01* +G75* +G02* +X98296148Y-54599866I601041J-601041D01* +G01* +X98296148Y-54599866D01* +G75* +G02* +X98296148Y-55801948I-601041J-601041D01* +G01* +X98296148Y-55801948D01* +G75* +G02* +X97094066Y-55801948I-601041J601041D01* +G01* +G37* +G36* +G01* +X95298015Y-54005897D02* +X95298015Y-54005897D01* +G75* +G02* +X95298015Y-52803815I601041J601041D01* +G01* +X95298015Y-52803815D01* +G75* +G02* +X96500097Y-52803815I601041J-601041D01* +G01* +X96500097Y-52803815D01* +G75* +G02* +X96500097Y-54005897I-601041J-601041D01* +G01* +X96500097Y-54005897D01* +G75* +G02* +X95298015Y-54005897I-601041J601041D01* +G01* +G37* +G36* +G01* +X93501964Y-52209846D02* +X93501964Y-52209846D01* +G75* +G02* +X93501964Y-51007764I601041J601041D01* +G01* +X93501964Y-51007764D01* +G75* +G02* +X94704046Y-51007764I601041J-601041D01* +G01* +X94704046Y-51007764D01* +G75* +G02* +X94704046Y-52209846I-601041J-601041D01* +G01* +X94704046Y-52209846D01* +G75* +G02* +X93501964Y-52209846I-601041J601041D01* +G01* +G37* +G36* +G01* +X91705913Y-50413795D02* +X91705913Y-50413795D01* +G75* +G02* +X91705913Y-49211713I601041J601041D01* +G01* +X91705913Y-49211713D01* +G75* +G02* +X92907995Y-49211713I601041J-601041D01* +G01* +X92907995Y-49211713D01* +G75* +G02* +X92907995Y-50413795I-601041J-601041D01* +G01* +X92907995Y-50413795D01* +G75* +G02* +X91705913Y-50413795I-601041J601041D01* +G01* +G37* +G36* +G01* +X89909861Y-48617743D02* +X89909861Y-48617743D01* +G75* +G02* +X89909861Y-47415661I601041J601041D01* +G01* +X89909861Y-47415661D01* +G75* +G02* +X91111943Y-47415661I601041J-601041D01* +G01* +X91111943Y-47415661D01* +G75* +G02* +X91111943Y-48617743I-601041J-601041D01* +G01* +X91111943Y-48617743D01* +G75* +G02* +X89909861Y-48617743I-601041J601041D01* +G01* +G37* +G36* +G01* +X88113810Y-46821692D02* +X88113810Y-46821692D01* +G75* +G02* +X88113810Y-45619610I601041J601041D01* +G01* +X88113810Y-45619610D01* +G75* +G02* +X89315892Y-45619610I601041J-601041D01* +G01* +X89315892Y-45619610D01* +G75* +G02* +X89315892Y-46821692I-601041J-601041D01* +G01* +X89315892Y-46821692D01* +G75* +G02* +X88113810Y-46821692I-601041J601041D01* +G01* +G37* +D16* +G36* +X86918800Y-45626682D02* +G01* +X85716718Y-44424600D01* +X86918800Y-43222518D01* +X88120882Y-44424600D01* +X86918800Y-45626682D01* +G37* +%TD*% +%TO.C,J1*% +G36* +G01* +X80035554Y-76547269D02* +X80035554Y-76547269D01* +G75* +G02* +X78842433Y-76400772I-523312J669809D01* +G01* +X78842433Y-76400772D01* +G75* +G02* +X78988930Y-75207651I669809J523312D01* +G01* +X78988930Y-75207651D01* +G75* +G02* +X80182051Y-75354148I523312J-669809D01* +G01* +X80182051Y-75354148D01* +G75* +G02* +X80035554Y-76547269I-669809J-523312D01* +G01* +G37* +G36* +G01* +X78034007Y-78111049D02* +X78034007Y-78111049D01* +G75* +G02* +X76840886Y-77964552I-523312J669809D01* +G01* +X76840886Y-77964552D01* +G75* +G02* +X76987383Y-76771431I669809J523312D01* +G01* +X76987383Y-76771431D01* +G75* +G02* +X78180504Y-76917928I523312J-669809D01* +G01* +X78180504Y-76917928D01* +G75* +G02* +X78034007Y-78111049I-669809J-523312D01* +G01* +G37* +G36* +G01* +X76032459Y-79674829D02* +X76032459Y-79674829D01* +G75* +G02* +X74839338Y-79528332I-523312J669809D01* +G01* +X74839338Y-79528332D01* +G75* +G02* +X74985835Y-78335211I669809J523312D01* +G01* +X74985835Y-78335211D01* +G75* +G02* +X76178956Y-78481708I523312J-669809D01* +G01* +X76178956Y-78481708D01* +G75* +G02* +X76032459Y-79674829I-669809J-523312D01* +G01* +G37* +G36* +X74700721Y-80715297D02* +G01* +X73361103Y-81761921D01* +X72314479Y-80422303D01* +X73654097Y-79375679D01* +X74700721Y-80715297D01* +G37* +%TD*% +%TO.C,C7*% +G36* +G01* +X87619644Y-60171017D02* +X87008996Y-59443275D01* +G75* +G02* +X87039810Y-59091067I191511J160697D01* +G01* +X87556890Y-58657185D01* +G75* +G02* +X87909098Y-58687999I160697J-191511D01* +G01* +X88519746Y-59415741D01* +G75* +G02* +X88488932Y-59767949I-191511J-160697D01* +G01* +X87971852Y-60201831D01* +G75* +G02* +X87619644Y-60171017I-160697J191511D01* +G01* +G37* +G36* +G01* +X86030102Y-61504801D02* +X85419454Y-60777059D01* +G75* +G02* +X85450268Y-60424851I191511J160697D01* +G01* +X85967348Y-59990969D01* +G75* +G02* +X86319556Y-60021783I160697J-191511D01* +G01* +X86930204Y-60749525D01* +G75* +G02* +X86899390Y-61101733I-191511J-160697D01* +G01* +X86382310Y-61535615D01* +G75* +G02* +X86030102Y-61504801I-160697J191511D01* +G01* +G37* +%TD*% +D20* +%TO.C,BZ1*% +X66716280Y-79236459D03* +D16* +G36* +X62399502Y-83357797D02* +G01* +X61367064Y-81883323D01* +X62841538Y-80850885D01* +X63873976Y-82325359D01* +X62399502Y-83357797D01* +G37* +%TD*% +M02* diff --git a/kicad/gerber/filadry2-F_Paste.gbr b/kicad/gerber/filadry2-F_Paste.gbr new file mode 100644 index 0000000..4a2f9f7 --- /dev/null +++ b/kicad/gerber/filadry2-F_Paste.gbr @@ -0,0 +1,2299 @@ +%TF.GenerationSoftware,KiCad,Pcbnew,(5.1.9)-1*% +%TF.CreationDate,2021-12-25T05:37:13+03:00*% +%TF.ProjectId,filadry2,66696c61-6472-4793-922e-6b696361645f,rev?*% +%TF.SameCoordinates,Original*% +%TF.FileFunction,Paste,Top*% +%TF.FilePolarity,Positive*% +%FSLAX46Y46*% +G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)* +G04 Created by KiCad (PCBNEW (5.1.9)-1) date 2021-12-25 05:37:13* +%MOMM*% +%LPD*% +G01* +G04 APERTURE LIST* +%ADD10C,0.100000*% +%ADD11R,2.400000X0.740000*% +G04 APERTURE END LIST* +%TO.C,U1*% +G36* +G01* +X72545800Y-58611600D02* +X71145800Y-58611600D01* +G75* +G02* +X71070800Y-58536600I0J75000D01* +G01* +X71070800Y-58386600D01* +G75* +G02* +X71145800Y-58311600I75000J0D01* +G01* +X72545800Y-58311600D01* +G75* +G02* +X72620800Y-58386600I0J-75000D01* +G01* +X72620800Y-58536600D01* +G75* +G02* +X72545800Y-58611600I-75000J0D01* +G01* +G37* +G36* +G01* +X72545800Y-58111600D02* +X71145800Y-58111600D01* +G75* +G02* +X71070800Y-58036600I0J75000D01* +G01* +X71070800Y-57886600D01* +G75* +G02* +X71145800Y-57811600I75000J0D01* +G01* +X72545800Y-57811600D01* +G75* +G02* +X72620800Y-57886600I0J-75000D01* +G01* +X72620800Y-58036600D01* +G75* +G02* +X72545800Y-58111600I-75000J0D01* +G01* +G37* +G36* +G01* +X72545800Y-57611600D02* +X71145800Y-57611600D01* +G75* +G02* +X71070800Y-57536600I0J75000D01* +G01* +X71070800Y-57386600D01* +G75* +G02* +X71145800Y-57311600I75000J0D01* +G01* +X72545800Y-57311600D01* +G75* +G02* +X72620800Y-57386600I0J-75000D01* +G01* +X72620800Y-57536600D01* +G75* +G02* +X72545800Y-57611600I-75000J0D01* +G01* +G37* +G36* +G01* +X72545800Y-57111600D02* +X71145800Y-57111600D01* +G75* +G02* +X71070800Y-57036600I0J75000D01* +G01* +X71070800Y-56886600D01* +G75* +G02* +X71145800Y-56811600I75000J0D01* +G01* +X72545800Y-56811600D01* +G75* +G02* +X72620800Y-56886600I0J-75000D01* +G01* +X72620800Y-57036600D01* +G75* +G02* +X72545800Y-57111600I-75000J0D01* +G01* +G37* +G36* +G01* +X72545800Y-56611600D02* +X71145800Y-56611600D01* +G75* +G02* +X71070800Y-56536600I0J75000D01* +G01* +X71070800Y-56386600D01* +G75* +G02* +X71145800Y-56311600I75000J0D01* +G01* +X72545800Y-56311600D01* +G75* +G02* +X72620800Y-56386600I0J-75000D01* +G01* +X72620800Y-56536600D01* +G75* +G02* +X72545800Y-56611600I-75000J0D01* +G01* +G37* +G36* +G01* +X72545800Y-56111600D02* +X71145800Y-56111600D01* +G75* +G02* +X71070800Y-56036600I0J75000D01* +G01* +X71070800Y-55886600D01* +G75* +G02* +X71145800Y-55811600I75000J0D01* +G01* +X72545800Y-55811600D01* +G75* +G02* +X72620800Y-55886600I0J-75000D01* +G01* +X72620800Y-56036600D01* +G75* +G02* +X72545800Y-56111600I-75000J0D01* +G01* +G37* +G36* +G01* +X72545800Y-55611600D02* +X71145800Y-55611600D01* +G75* +G02* +X71070800Y-55536600I0J75000D01* +G01* +X71070800Y-55386600D01* +G75* +G02* +X71145800Y-55311600I75000J0D01* +G01* +X72545800Y-55311600D01* +G75* +G02* +X72620800Y-55386600I0J-75000D01* +G01* +X72620800Y-55536600D01* +G75* +G02* +X72545800Y-55611600I-75000J0D01* +G01* +G37* +G36* +G01* +X72545800Y-55111600D02* +X71145800Y-55111600D01* +G75* +G02* +X71070800Y-55036600I0J75000D01* +G01* +X71070800Y-54886600D01* +G75* +G02* +X71145800Y-54811600I75000J0D01* +G01* +X72545800Y-54811600D01* +G75* +G02* +X72620800Y-54886600I0J-75000D01* +G01* +X72620800Y-55036600D01* +G75* +G02* +X72545800Y-55111600I-75000J0D01* +G01* +G37* +G36* +G01* +X72545800Y-54611600D02* +X71145800Y-54611600D01* +G75* +G02* +X71070800Y-54536600I0J75000D01* +G01* +X71070800Y-54386600D01* +G75* +G02* +X71145800Y-54311600I75000J0D01* +G01* +X72545800Y-54311600D01* +G75* +G02* +X72620800Y-54386600I0J-75000D01* +G01* +X72620800Y-54536600D01* +G75* +G02* +X72545800Y-54611600I-75000J0D01* +G01* +G37* +G36* +G01* +X72545800Y-54111600D02* +X71145800Y-54111600D01* +G75* +G02* +X71070800Y-54036600I0J75000D01* +G01* +X71070800Y-53886600D01* +G75* +G02* +X71145800Y-53811600I75000J0D01* +G01* +X72545800Y-53811600D01* +G75* +G02* +X72620800Y-53886600I0J-75000D01* +G01* +X72620800Y-54036600D01* +G75* +G02* +X72545800Y-54111600I-75000J0D01* +G01* +G37* +G36* +G01* +X72545800Y-53611600D02* +X71145800Y-53611600D01* +G75* +G02* +X71070800Y-53536600I0J75000D01* +G01* +X71070800Y-53386600D01* +G75* +G02* +X71145800Y-53311600I75000J0D01* +G01* +X72545800Y-53311600D01* +G75* +G02* +X72620800Y-53386600I0J-75000D01* +G01* +X72620800Y-53536600D01* +G75* +G02* +X72545800Y-53611600I-75000J0D01* +G01* +G37* +G36* +G01* +X72545800Y-53111600D02* +X71145800Y-53111600D01* +G75* +G02* +X71070800Y-53036600I0J75000D01* +G01* +X71070800Y-52886600D01* +G75* +G02* +X71145800Y-52811600I75000J0D01* +G01* +X72545800Y-52811600D01* +G75* +G02* +X72620800Y-52886600I0J-75000D01* +G01* +X72620800Y-53036600D01* +G75* +G02* +X72545800Y-53111600I-75000J0D01* +G01* +G37* +G36* +G01* +X72545800Y-52611600D02* +X71145800Y-52611600D01* +G75* +G02* +X71070800Y-52536600I0J75000D01* +G01* +X71070800Y-52386600D01* +G75* +G02* +X71145800Y-52311600I75000J0D01* +G01* +X72545800Y-52311600D01* +G75* +G02* +X72620800Y-52386600I0J-75000D01* +G01* +X72620800Y-52536600D01* +G75* +G02* +X72545800Y-52611600I-75000J0D01* +G01* +G37* +G36* +G01* +X72545800Y-52111600D02* +X71145800Y-52111600D01* +G75* +G02* +X71070800Y-52036600I0J75000D01* +G01* +X71070800Y-51886600D01* +G75* +G02* +X71145800Y-51811600I75000J0D01* +G01* +X72545800Y-51811600D01* +G75* +G02* +X72620800Y-51886600I0J-75000D01* +G01* +X72620800Y-52036600D01* +G75* +G02* +X72545800Y-52111600I-75000J0D01* +G01* +G37* +G36* +G01* +X72545800Y-51611600D02* +X71145800Y-51611600D01* +G75* +G02* +X71070800Y-51536600I0J75000D01* +G01* +X71070800Y-51386600D01* +G75* +G02* +X71145800Y-51311600I75000J0D01* +G01* +X72545800Y-51311600D01* +G75* +G02* +X72620800Y-51386600I0J-75000D01* +G01* +X72620800Y-51536600D01* +G75* +G02* +X72545800Y-51611600I-75000J0D01* +G01* +G37* +G36* +G01* +X72545800Y-51111600D02* +X71145800Y-51111600D01* +G75* +G02* +X71070800Y-51036600I0J75000D01* +G01* +X71070800Y-50886600D01* +G75* +G02* +X71145800Y-50811600I75000J0D01* +G01* +X72545800Y-50811600D01* +G75* +G02* +X72620800Y-50886600I0J-75000D01* +G01* +X72620800Y-51036600D01* +G75* +G02* +X72545800Y-51111600I-75000J0D01* +G01* +G37* +G36* +G01* +X73845800Y-49811600D02* +X73695800Y-49811600D01* +G75* +G02* +X73620800Y-49736600I0J75000D01* +G01* +X73620800Y-48336600D01* +G75* +G02* +X73695800Y-48261600I75000J0D01* +G01* +X73845800Y-48261600D01* +G75* +G02* +X73920800Y-48336600I0J-75000D01* +G01* +X73920800Y-49736600D01* +G75* +G02* +X73845800Y-49811600I-75000J0D01* +G01* +G37* +G36* +G01* +X74345800Y-49811600D02* +X74195800Y-49811600D01* +G75* +G02* +X74120800Y-49736600I0J75000D01* +G01* +X74120800Y-48336600D01* +G75* +G02* +X74195800Y-48261600I75000J0D01* +G01* +X74345800Y-48261600D01* +G75* +G02* +X74420800Y-48336600I0J-75000D01* +G01* +X74420800Y-49736600D01* +G75* +G02* +X74345800Y-49811600I-75000J0D01* +G01* +G37* +G36* +G01* +X74845800Y-49811600D02* +X74695800Y-49811600D01* +G75* +G02* +X74620800Y-49736600I0J75000D01* +G01* +X74620800Y-48336600D01* +G75* +G02* +X74695800Y-48261600I75000J0D01* +G01* +X74845800Y-48261600D01* +G75* +G02* +X74920800Y-48336600I0J-75000D01* +G01* +X74920800Y-49736600D01* +G75* +G02* +X74845800Y-49811600I-75000J0D01* +G01* +G37* +G36* +G01* +X75345800Y-49811600D02* +X75195800Y-49811600D01* +G75* +G02* +X75120800Y-49736600I0J75000D01* +G01* +X75120800Y-48336600D01* +G75* +G02* +X75195800Y-48261600I75000J0D01* +G01* +X75345800Y-48261600D01* +G75* +G02* +X75420800Y-48336600I0J-75000D01* +G01* +X75420800Y-49736600D01* +G75* +G02* +X75345800Y-49811600I-75000J0D01* +G01* +G37* +G36* +G01* +X75845800Y-49811600D02* +X75695800Y-49811600D01* +G75* +G02* +X75620800Y-49736600I0J75000D01* +G01* +X75620800Y-48336600D01* +G75* +G02* +X75695800Y-48261600I75000J0D01* +G01* +X75845800Y-48261600D01* +G75* +G02* +X75920800Y-48336600I0J-75000D01* +G01* +X75920800Y-49736600D01* +G75* +G02* +X75845800Y-49811600I-75000J0D01* +G01* +G37* +G36* +G01* +X76345800Y-49811600D02* +X76195800Y-49811600D01* +G75* +G02* +X76120800Y-49736600I0J75000D01* +G01* +X76120800Y-48336600D01* +G75* +G02* +X76195800Y-48261600I75000J0D01* +G01* +X76345800Y-48261600D01* +G75* +G02* +X76420800Y-48336600I0J-75000D01* +G01* +X76420800Y-49736600D01* +G75* +G02* +X76345800Y-49811600I-75000J0D01* +G01* +G37* +G36* +G01* +X76845800Y-49811600D02* +X76695800Y-49811600D01* +G75* +G02* +X76620800Y-49736600I0J75000D01* +G01* +X76620800Y-48336600D01* +G75* +G02* +X76695800Y-48261600I75000J0D01* +G01* +X76845800Y-48261600D01* +G75* +G02* +X76920800Y-48336600I0J-75000D01* +G01* +X76920800Y-49736600D01* +G75* +G02* +X76845800Y-49811600I-75000J0D01* +G01* +G37* +G36* +G01* +X77345800Y-49811600D02* +X77195800Y-49811600D01* +G75* +G02* +X77120800Y-49736600I0J75000D01* +G01* +X77120800Y-48336600D01* +G75* +G02* +X77195800Y-48261600I75000J0D01* +G01* +X77345800Y-48261600D01* +G75* +G02* +X77420800Y-48336600I0J-75000D01* +G01* +X77420800Y-49736600D01* +G75* +G02* +X77345800Y-49811600I-75000J0D01* +G01* +G37* +G36* +G01* +X77845800Y-49811600D02* +X77695800Y-49811600D01* +G75* +G02* +X77620800Y-49736600I0J75000D01* +G01* +X77620800Y-48336600D01* +G75* +G02* +X77695800Y-48261600I75000J0D01* +G01* +X77845800Y-48261600D01* +G75* +G02* +X77920800Y-48336600I0J-75000D01* +G01* +X77920800Y-49736600D01* +G75* +G02* +X77845800Y-49811600I-75000J0D01* +G01* +G37* +G36* +G01* +X78345800Y-49811600D02* +X78195800Y-49811600D01* +G75* +G02* +X78120800Y-49736600I0J75000D01* +G01* +X78120800Y-48336600D01* +G75* +G02* +X78195800Y-48261600I75000J0D01* +G01* +X78345800Y-48261600D01* +G75* +G02* +X78420800Y-48336600I0J-75000D01* +G01* +X78420800Y-49736600D01* +G75* +G02* +X78345800Y-49811600I-75000J0D01* +G01* +G37* +G36* +G01* +X78845800Y-49811600D02* +X78695800Y-49811600D01* +G75* +G02* +X78620800Y-49736600I0J75000D01* +G01* +X78620800Y-48336600D01* +G75* +G02* +X78695800Y-48261600I75000J0D01* +G01* +X78845800Y-48261600D01* +G75* +G02* +X78920800Y-48336600I0J-75000D01* +G01* +X78920800Y-49736600D01* +G75* +G02* +X78845800Y-49811600I-75000J0D01* +G01* +G37* +G36* +G01* +X79345800Y-49811600D02* +X79195800Y-49811600D01* +G75* +G02* +X79120800Y-49736600I0J75000D01* +G01* +X79120800Y-48336600D01* +G75* +G02* +X79195800Y-48261600I75000J0D01* +G01* +X79345800Y-48261600D01* +G75* +G02* +X79420800Y-48336600I0J-75000D01* +G01* +X79420800Y-49736600D01* +G75* +G02* +X79345800Y-49811600I-75000J0D01* +G01* +G37* +G36* +G01* +X79845800Y-49811600D02* +X79695800Y-49811600D01* +G75* +G02* +X79620800Y-49736600I0J75000D01* +G01* +X79620800Y-48336600D01* +G75* +G02* +X79695800Y-48261600I75000J0D01* +G01* +X79845800Y-48261600D01* +G75* +G02* +X79920800Y-48336600I0J-75000D01* +G01* +X79920800Y-49736600D01* +G75* +G02* +X79845800Y-49811600I-75000J0D01* +G01* +G37* +G36* +G01* +X80345800Y-49811600D02* +X80195800Y-49811600D01* +G75* +G02* +X80120800Y-49736600I0J75000D01* +G01* +X80120800Y-48336600D01* +G75* +G02* +X80195800Y-48261600I75000J0D01* +G01* +X80345800Y-48261600D01* +G75* +G02* +X80420800Y-48336600I0J-75000D01* +G01* +X80420800Y-49736600D01* +G75* +G02* +X80345800Y-49811600I-75000J0D01* +G01* +G37* +G36* +G01* +X80845800Y-49811600D02* +X80695800Y-49811600D01* +G75* +G02* +X80620800Y-49736600I0J75000D01* +G01* +X80620800Y-48336600D01* +G75* +G02* +X80695800Y-48261600I75000J0D01* +G01* +X80845800Y-48261600D01* +G75* +G02* +X80920800Y-48336600I0J-75000D01* +G01* +X80920800Y-49736600D01* +G75* +G02* +X80845800Y-49811600I-75000J0D01* +G01* +G37* +G36* +G01* +X81345800Y-49811600D02* +X81195800Y-49811600D01* +G75* +G02* +X81120800Y-49736600I0J75000D01* +G01* +X81120800Y-48336600D01* +G75* +G02* +X81195800Y-48261600I75000J0D01* +G01* +X81345800Y-48261600D01* +G75* +G02* +X81420800Y-48336600I0J-75000D01* +G01* +X81420800Y-49736600D01* +G75* +G02* +X81345800Y-49811600I-75000J0D01* +G01* +G37* +G36* +G01* +X83895800Y-51111600D02* +X82495800Y-51111600D01* +G75* +G02* +X82420800Y-51036600I0J75000D01* +G01* +X82420800Y-50886600D01* +G75* +G02* +X82495800Y-50811600I75000J0D01* +G01* +X83895800Y-50811600D01* +G75* +G02* +X83970800Y-50886600I0J-75000D01* +G01* +X83970800Y-51036600D01* +G75* +G02* +X83895800Y-51111600I-75000J0D01* +G01* +G37* +G36* +G01* +X83895800Y-51611600D02* +X82495800Y-51611600D01* +G75* +G02* +X82420800Y-51536600I0J75000D01* +G01* +X82420800Y-51386600D01* +G75* +G02* +X82495800Y-51311600I75000J0D01* +G01* +X83895800Y-51311600D01* +G75* +G02* +X83970800Y-51386600I0J-75000D01* +G01* +X83970800Y-51536600D01* +G75* +G02* +X83895800Y-51611600I-75000J0D01* +G01* +G37* +G36* +G01* +X83895800Y-52111600D02* +X82495800Y-52111600D01* +G75* +G02* +X82420800Y-52036600I0J75000D01* +G01* +X82420800Y-51886600D01* +G75* +G02* +X82495800Y-51811600I75000J0D01* +G01* +X83895800Y-51811600D01* +G75* +G02* +X83970800Y-51886600I0J-75000D01* +G01* +X83970800Y-52036600D01* +G75* +G02* +X83895800Y-52111600I-75000J0D01* +G01* +G37* +G36* +G01* +X83895800Y-52611600D02* +X82495800Y-52611600D01* +G75* +G02* +X82420800Y-52536600I0J75000D01* +G01* +X82420800Y-52386600D01* +G75* +G02* +X82495800Y-52311600I75000J0D01* +G01* +X83895800Y-52311600D01* +G75* +G02* +X83970800Y-52386600I0J-75000D01* +G01* +X83970800Y-52536600D01* +G75* +G02* +X83895800Y-52611600I-75000J0D01* +G01* +G37* +G36* +G01* +X83895800Y-53111600D02* +X82495800Y-53111600D01* +G75* +G02* +X82420800Y-53036600I0J75000D01* +G01* +X82420800Y-52886600D01* +G75* +G02* +X82495800Y-52811600I75000J0D01* +G01* +X83895800Y-52811600D01* +G75* +G02* +X83970800Y-52886600I0J-75000D01* +G01* +X83970800Y-53036600D01* +G75* +G02* +X83895800Y-53111600I-75000J0D01* +G01* +G37* +G36* +G01* +X83895800Y-53611600D02* +X82495800Y-53611600D01* +G75* +G02* +X82420800Y-53536600I0J75000D01* +G01* +X82420800Y-53386600D01* +G75* +G02* +X82495800Y-53311600I75000J0D01* +G01* +X83895800Y-53311600D01* +G75* +G02* +X83970800Y-53386600I0J-75000D01* +G01* +X83970800Y-53536600D01* +G75* +G02* +X83895800Y-53611600I-75000J0D01* +G01* +G37* +G36* +G01* +X83895800Y-54111600D02* +X82495800Y-54111600D01* +G75* +G02* +X82420800Y-54036600I0J75000D01* +G01* +X82420800Y-53886600D01* +G75* +G02* +X82495800Y-53811600I75000J0D01* +G01* +X83895800Y-53811600D01* +G75* +G02* +X83970800Y-53886600I0J-75000D01* +G01* +X83970800Y-54036600D01* +G75* +G02* +X83895800Y-54111600I-75000J0D01* +G01* +G37* +G36* +G01* +X83895800Y-54611600D02* +X82495800Y-54611600D01* +G75* +G02* +X82420800Y-54536600I0J75000D01* +G01* +X82420800Y-54386600D01* +G75* +G02* +X82495800Y-54311600I75000J0D01* +G01* +X83895800Y-54311600D01* +G75* +G02* +X83970800Y-54386600I0J-75000D01* +G01* +X83970800Y-54536600D01* +G75* +G02* +X83895800Y-54611600I-75000J0D01* +G01* +G37* +G36* +G01* +X83895800Y-55111600D02* +X82495800Y-55111600D01* +G75* +G02* +X82420800Y-55036600I0J75000D01* +G01* +X82420800Y-54886600D01* +G75* +G02* +X82495800Y-54811600I75000J0D01* +G01* +X83895800Y-54811600D01* +G75* +G02* +X83970800Y-54886600I0J-75000D01* +G01* +X83970800Y-55036600D01* +G75* +G02* +X83895800Y-55111600I-75000J0D01* +G01* +G37* +G36* +G01* +X83895800Y-55611600D02* +X82495800Y-55611600D01* +G75* +G02* +X82420800Y-55536600I0J75000D01* +G01* +X82420800Y-55386600D01* +G75* +G02* +X82495800Y-55311600I75000J0D01* +G01* +X83895800Y-55311600D01* +G75* +G02* +X83970800Y-55386600I0J-75000D01* +G01* +X83970800Y-55536600D01* +G75* +G02* +X83895800Y-55611600I-75000J0D01* +G01* +G37* +G36* +G01* +X83895800Y-56111600D02* +X82495800Y-56111600D01* +G75* +G02* +X82420800Y-56036600I0J75000D01* +G01* +X82420800Y-55886600D01* +G75* +G02* +X82495800Y-55811600I75000J0D01* +G01* +X83895800Y-55811600D01* +G75* +G02* +X83970800Y-55886600I0J-75000D01* +G01* +X83970800Y-56036600D01* +G75* +G02* +X83895800Y-56111600I-75000J0D01* +G01* +G37* +G36* +G01* +X83895800Y-56611600D02* +X82495800Y-56611600D01* +G75* +G02* +X82420800Y-56536600I0J75000D01* +G01* +X82420800Y-56386600D01* +G75* +G02* +X82495800Y-56311600I75000J0D01* +G01* +X83895800Y-56311600D01* +G75* +G02* +X83970800Y-56386600I0J-75000D01* +G01* +X83970800Y-56536600D01* +G75* +G02* +X83895800Y-56611600I-75000J0D01* +G01* +G37* +G36* +G01* +X83895800Y-57111600D02* +X82495800Y-57111600D01* +G75* +G02* +X82420800Y-57036600I0J75000D01* +G01* +X82420800Y-56886600D01* +G75* +G02* +X82495800Y-56811600I75000J0D01* +G01* +X83895800Y-56811600D01* +G75* +G02* +X83970800Y-56886600I0J-75000D01* +G01* +X83970800Y-57036600D01* +G75* +G02* +X83895800Y-57111600I-75000J0D01* +G01* +G37* +G36* +G01* +X83895800Y-57611600D02* +X82495800Y-57611600D01* +G75* +G02* +X82420800Y-57536600I0J75000D01* +G01* +X82420800Y-57386600D01* +G75* +G02* +X82495800Y-57311600I75000J0D01* +G01* +X83895800Y-57311600D01* +G75* +G02* +X83970800Y-57386600I0J-75000D01* +G01* +X83970800Y-57536600D01* +G75* +G02* +X83895800Y-57611600I-75000J0D01* +G01* +G37* +G36* +G01* +X83895800Y-58111600D02* +X82495800Y-58111600D01* +G75* +G02* +X82420800Y-58036600I0J75000D01* +G01* +X82420800Y-57886600D01* +G75* +G02* +X82495800Y-57811600I75000J0D01* +G01* +X83895800Y-57811600D01* +G75* +G02* +X83970800Y-57886600I0J-75000D01* +G01* +X83970800Y-58036600D01* +G75* +G02* +X83895800Y-58111600I-75000J0D01* +G01* +G37* +G36* +G01* +X83895800Y-58611600D02* +X82495800Y-58611600D01* +G75* +G02* +X82420800Y-58536600I0J75000D01* +G01* +X82420800Y-58386600D01* +G75* +G02* +X82495800Y-58311600I75000J0D01* +G01* +X83895800Y-58311600D01* +G75* +G02* +X83970800Y-58386600I0J-75000D01* +G01* +X83970800Y-58536600D01* +G75* +G02* +X83895800Y-58611600I-75000J0D01* +G01* +G37* +G36* +G01* +X81345800Y-61161600D02* +X81195800Y-61161600D01* +G75* +G02* +X81120800Y-61086600I0J75000D01* +G01* +X81120800Y-59686600D01* +G75* +G02* +X81195800Y-59611600I75000J0D01* +G01* +X81345800Y-59611600D01* +G75* +G02* +X81420800Y-59686600I0J-75000D01* +G01* +X81420800Y-61086600D01* +G75* +G02* +X81345800Y-61161600I-75000J0D01* +G01* +G37* +G36* +G01* +X80845800Y-61161600D02* +X80695800Y-61161600D01* +G75* +G02* +X80620800Y-61086600I0J75000D01* +G01* +X80620800Y-59686600D01* +G75* +G02* +X80695800Y-59611600I75000J0D01* +G01* +X80845800Y-59611600D01* +G75* +G02* +X80920800Y-59686600I0J-75000D01* +G01* +X80920800Y-61086600D01* +G75* +G02* +X80845800Y-61161600I-75000J0D01* +G01* +G37* +G36* +G01* +X80345800Y-61161600D02* +X80195800Y-61161600D01* +G75* +G02* +X80120800Y-61086600I0J75000D01* +G01* +X80120800Y-59686600D01* +G75* +G02* +X80195800Y-59611600I75000J0D01* +G01* +X80345800Y-59611600D01* +G75* +G02* +X80420800Y-59686600I0J-75000D01* +G01* +X80420800Y-61086600D01* +G75* +G02* +X80345800Y-61161600I-75000J0D01* +G01* +G37* +G36* +G01* +X79845800Y-61161600D02* +X79695800Y-61161600D01* +G75* +G02* +X79620800Y-61086600I0J75000D01* +G01* +X79620800Y-59686600D01* +G75* +G02* +X79695800Y-59611600I75000J0D01* +G01* +X79845800Y-59611600D01* +G75* +G02* +X79920800Y-59686600I0J-75000D01* +G01* +X79920800Y-61086600D01* +G75* +G02* +X79845800Y-61161600I-75000J0D01* +G01* +G37* +G36* +G01* +X79345800Y-61161600D02* +X79195800Y-61161600D01* +G75* +G02* +X79120800Y-61086600I0J75000D01* +G01* +X79120800Y-59686600D01* +G75* +G02* +X79195800Y-59611600I75000J0D01* +G01* +X79345800Y-59611600D01* +G75* +G02* +X79420800Y-59686600I0J-75000D01* +G01* +X79420800Y-61086600D01* +G75* +G02* +X79345800Y-61161600I-75000J0D01* +G01* +G37* +G36* +G01* +X78845800Y-61161600D02* +X78695800Y-61161600D01* +G75* +G02* +X78620800Y-61086600I0J75000D01* +G01* +X78620800Y-59686600D01* +G75* +G02* +X78695800Y-59611600I75000J0D01* +G01* +X78845800Y-59611600D01* +G75* +G02* +X78920800Y-59686600I0J-75000D01* +G01* +X78920800Y-61086600D01* +G75* +G02* +X78845800Y-61161600I-75000J0D01* +G01* +G37* +G36* +G01* +X78345800Y-61161600D02* +X78195800Y-61161600D01* +G75* +G02* +X78120800Y-61086600I0J75000D01* +G01* +X78120800Y-59686600D01* +G75* +G02* +X78195800Y-59611600I75000J0D01* +G01* +X78345800Y-59611600D01* +G75* +G02* +X78420800Y-59686600I0J-75000D01* +G01* +X78420800Y-61086600D01* +G75* +G02* +X78345800Y-61161600I-75000J0D01* +G01* +G37* +G36* +G01* +X77845800Y-61161600D02* +X77695800Y-61161600D01* +G75* +G02* +X77620800Y-61086600I0J75000D01* +G01* +X77620800Y-59686600D01* +G75* +G02* +X77695800Y-59611600I75000J0D01* +G01* +X77845800Y-59611600D01* +G75* +G02* +X77920800Y-59686600I0J-75000D01* +G01* +X77920800Y-61086600D01* +G75* +G02* +X77845800Y-61161600I-75000J0D01* +G01* +G37* +G36* +G01* +X77345800Y-61161600D02* +X77195800Y-61161600D01* +G75* +G02* +X77120800Y-61086600I0J75000D01* +G01* +X77120800Y-59686600D01* +G75* +G02* +X77195800Y-59611600I75000J0D01* +G01* +X77345800Y-59611600D01* +G75* +G02* +X77420800Y-59686600I0J-75000D01* +G01* +X77420800Y-61086600D01* +G75* +G02* +X77345800Y-61161600I-75000J0D01* +G01* +G37* +G36* +G01* +X76845800Y-61161600D02* +X76695800Y-61161600D01* +G75* +G02* +X76620800Y-61086600I0J75000D01* +G01* +X76620800Y-59686600D01* +G75* +G02* +X76695800Y-59611600I75000J0D01* +G01* +X76845800Y-59611600D01* +G75* +G02* +X76920800Y-59686600I0J-75000D01* +G01* +X76920800Y-61086600D01* +G75* +G02* +X76845800Y-61161600I-75000J0D01* +G01* +G37* +G36* +G01* +X76345800Y-61161600D02* +X76195800Y-61161600D01* +G75* +G02* +X76120800Y-61086600I0J75000D01* +G01* +X76120800Y-59686600D01* +G75* +G02* +X76195800Y-59611600I75000J0D01* +G01* +X76345800Y-59611600D01* +G75* +G02* +X76420800Y-59686600I0J-75000D01* +G01* +X76420800Y-61086600D01* +G75* +G02* +X76345800Y-61161600I-75000J0D01* +G01* +G37* +G36* +G01* +X75845800Y-61161600D02* +X75695800Y-61161600D01* +G75* +G02* +X75620800Y-61086600I0J75000D01* +G01* +X75620800Y-59686600D01* +G75* +G02* +X75695800Y-59611600I75000J0D01* +G01* +X75845800Y-59611600D01* +G75* +G02* +X75920800Y-59686600I0J-75000D01* +G01* +X75920800Y-61086600D01* +G75* +G02* +X75845800Y-61161600I-75000J0D01* +G01* +G37* +G36* +G01* +X75345800Y-61161600D02* +X75195800Y-61161600D01* +G75* +G02* +X75120800Y-61086600I0J75000D01* +G01* +X75120800Y-59686600D01* +G75* +G02* +X75195800Y-59611600I75000J0D01* +G01* +X75345800Y-59611600D01* +G75* +G02* +X75420800Y-59686600I0J-75000D01* +G01* +X75420800Y-61086600D01* +G75* +G02* +X75345800Y-61161600I-75000J0D01* +G01* +G37* +G36* +G01* +X74845800Y-61161600D02* +X74695800Y-61161600D01* +G75* +G02* +X74620800Y-61086600I0J75000D01* +G01* +X74620800Y-59686600D01* +G75* +G02* +X74695800Y-59611600I75000J0D01* +G01* +X74845800Y-59611600D01* +G75* +G02* +X74920800Y-59686600I0J-75000D01* +G01* +X74920800Y-61086600D01* +G75* +G02* +X74845800Y-61161600I-75000J0D01* +G01* +G37* +G36* +G01* +X74345800Y-61161600D02* +X74195800Y-61161600D01* +G75* +G02* +X74120800Y-61086600I0J75000D01* +G01* +X74120800Y-59686600D01* +G75* +G02* +X74195800Y-59611600I75000J0D01* +G01* +X74345800Y-59611600D01* +G75* +G02* +X74420800Y-59686600I0J-75000D01* +G01* +X74420800Y-61086600D01* +G75* +G02* +X74345800Y-61161600I-75000J0D01* +G01* +G37* +G36* +G01* +X73845800Y-61161600D02* +X73695800Y-61161600D01* +G75* +G02* +X73620800Y-61086600I0J75000D01* +G01* +X73620800Y-59686600D01* +G75* +G02* +X73695800Y-59611600I75000J0D01* +G01* +X73845800Y-59611600D01* +G75* +G02* +X73920800Y-59686600I0J-75000D01* +G01* +X73920800Y-61086600D01* +G75* +G02* +X73845800Y-61161600I-75000J0D01* +G01* +G37* +%TD*% +%TO.C,R20*% +G36* +G01* +X71747801Y-45818600D02* +X70847799Y-45818600D01* +G75* +G02* +X70597800Y-45568601I0J249999D01* +G01* +X70597800Y-44868599D01* +G75* +G02* +X70847799Y-44618600I249999J0D01* +G01* +X71747801Y-44618600D01* +G75* +G02* +X71997800Y-44868599I0J-249999D01* +G01* +X71997800Y-45568601D01* +G75* +G02* +X71747801Y-45818600I-249999J0D01* +G01* +G37* +G36* +G01* +X71747801Y-47818600D02* +X70847799Y-47818600D01* +G75* +G02* +X70597800Y-47568601I0J249999D01* +G01* +X70597800Y-46868599D01* +G75* +G02* +X70847799Y-46618600I249999J0D01* +G01* +X71747801Y-46618600D01* +G75* +G02* +X71997800Y-46868599I0J-249999D01* +G01* +X71997800Y-47568601D01* +G75* +G02* +X71747801Y-47818600I-249999J0D01* +G01* +G37* +%TD*% +%TO.C,R19*% +G36* +G01* +X74459947Y-43355319D02* +X73559945Y-43355319D01* +G75* +G02* +X73309946Y-43105320I0J249999D01* +G01* +X73309946Y-42405318D01* +G75* +G02* +X73559945Y-42155319I249999J0D01* +G01* +X74459947Y-42155319D01* +G75* +G02* +X74709946Y-42405318I0J-249999D01* +G01* +X74709946Y-43105320D01* +G75* +G02* +X74459947Y-43355319I-249999J0D01* +G01* +G37* +G36* +G01* +X74459947Y-45355319D02* +X73559945Y-45355319D01* +G75* +G02* +X73309946Y-45105320I0J249999D01* +G01* +X73309946Y-44405318D01* +G75* +G02* +X73559945Y-44155319I249999J0D01* +G01* +X74459947Y-44155319D01* +G75* +G02* +X74709946Y-44405318I0J-249999D01* +G01* +X74709946Y-45105320D01* +G75* +G02* +X74459947Y-45355319I-249999J0D01* +G01* +G37* +%TD*% +%TO.C,R18*% +G36* +G01* +X76745948Y-43345840D02* +X75845946Y-43345840D01* +G75* +G02* +X75595947Y-43095841I0J249999D01* +G01* +X75595947Y-42395839D01* +G75* +G02* +X75845946Y-42145840I249999J0D01* +G01* +X76745948Y-42145840D01* +G75* +G02* +X76995947Y-42395839I0J-249999D01* +G01* +X76995947Y-43095841D01* +G75* +G02* +X76745948Y-43345840I-249999J0D01* +G01* +G37* +G36* +G01* +X76745948Y-45345840D02* +X75845946Y-45345840D01* +G75* +G02* +X75595947Y-45095841I0J249999D01* +G01* +X75595947Y-44395839D01* +G75* +G02* +X75845946Y-44145840I249999J0D01* +G01* +X76745948Y-44145840D01* +G75* +G02* +X76995947Y-44395839I0J-249999D01* +G01* +X76995947Y-45095841D01* +G75* +G02* +X76745948Y-45345840I-249999J0D01* +G01* +G37* +%TD*% +%TO.C,R17*% +G36* +G01* +X58052512Y-76792215D02* +X57273086Y-76342214D01* +G75* +G02* +X57181581Y-76000710I125000J216505D01* +G01* +X57531582Y-75394491D01* +G75* +G02* +X57873087Y-75302985I216505J-124999D01* +G01* +X58652512Y-75752986D01* +G75* +G02* +X58744017Y-76094490I-125000J-216505D01* +G01* +X58394016Y-76700709D01* +G75* +G02* +X58052512Y-76792215I-216505J124999D01* +G01* +G37* +G36* +G01* +X57052512Y-78524265D02* +X56273086Y-78074264D01* +G75* +G02* +X56181581Y-77732760I125000J216505D01* +G01* +X56531582Y-77126541D01* +G75* +G02* +X56873087Y-77035035I216505J-124999D01* +G01* +X57652512Y-77485036D01* +G75* +G02* +X57744017Y-77826540I-125000J-216505D01* +G01* +X57394016Y-78432759D01* +G75* +G02* +X57052512Y-78524265I-216505J124999D01* +G01* +G37* +%TD*% +%TO.C,R16*% +G36* +G01* +X49895200Y-50132401D02* +X49895200Y-49232399D01* +G75* +G02* +X50145199Y-48982400I249999J0D01* +G01* +X50845201Y-48982400D01* +G75* +G02* +X51095200Y-49232399I0J-249999D01* +G01* +X51095200Y-50132401D01* +G75* +G02* +X50845201Y-50382400I-249999J0D01* +G01* +X50145199Y-50382400D01* +G75* +G02* +X49895200Y-50132401I0J249999D01* +G01* +G37* +G36* +G01* +X47895200Y-50132401D02* +X47895200Y-49232399D01* +G75* +G02* +X48145199Y-48982400I249999J0D01* +G01* +X48845201Y-48982400D01* +G75* +G02* +X49095200Y-49232399I0J-249999D01* +G01* +X49095200Y-50132401D01* +G75* +G02* +X48845201Y-50382400I-249999J0D01* +G01* +X48145199Y-50382400D01* +G75* +G02* +X47895200Y-50132401I0J249999D01* +G01* +G37* +%TD*% +%TO.C,R14*% +G36* +G01* +X42893968Y-57760470D02* +X43201787Y-56914745D01* +G75* +G02* +X43522214Y-56765328I234922J-85505D01* +G01* +X44180001Y-57004743D01* +G75* +G02* +X44329418Y-57325170I-85505J-234922D01* +G01* +X44021599Y-58170895D01* +G75* +G02* +X43701172Y-58320312I-234922J85505D01* +G01* +X43043385Y-58080897D01* +G75* +G02* +X42893968Y-57760470I85505J234922D01* +G01* +G37* +G36* +G01* +X41014582Y-57076430D02* +X41322401Y-56230705D01* +G75* +G02* +X41642828Y-56081288I234922J-85505D01* +G01* +X42300615Y-56320703D01* +G75* +G02* +X42450032Y-56641130I-85505J-234922D01* +G01* +X42142213Y-57486855D01* +G75* +G02* +X41821786Y-57636272I-234922J85505D01* +G01* +X41163999Y-57396857D01* +G75* +G02* +X41014582Y-57076430I85505J234922D01* +G01* +G37* +%TD*% +%TO.C,R11*% +G36* +G01* +X60322514Y-73028165D02* +X59543088Y-72578164D01* +G75* +G02* +X59451583Y-72236660I125000J216505D01* +G01* +X59801584Y-71630441D01* +G75* +G02* +X60143089Y-71538935I216505J-124999D01* +G01* +X60922514Y-71988936D01* +G75* +G02* +X61014019Y-72330440I-125000J-216505D01* +G01* +X60664018Y-72936659D01* +G75* +G02* +X60322514Y-73028165I-216505J124999D01* +G01* +G37* +G36* +G01* +X59322514Y-74760215D02* +X58543088Y-74310214D01* +G75* +G02* +X58451583Y-73968710I125000J216505D01* +G01* +X58801584Y-73362491D01* +G75* +G02* +X59143089Y-73270985I216505J-124999D01* +G01* +X59922514Y-73720986D01* +G75* +G02* +X60014019Y-74062490I-125000J-216505D01* +G01* +X59664018Y-74668709D01* +G75* +G02* +X59322514Y-74760215I-216505J124999D01* +G01* +G37* +%TD*% +%TO.C,R10*% +G36* +G01* +X54467200Y-50132401D02* +X54467200Y-49232399D01* +G75* +G02* +X54717199Y-48982400I249999J0D01* +G01* +X55417201Y-48982400D01* +G75* +G02* +X55667200Y-49232399I0J-249999D01* +G01* +X55667200Y-50132401D01* +G75* +G02* +X55417201Y-50382400I-249999J0D01* +G01* +X54717199Y-50382400D01* +G75* +G02* +X54467200Y-50132401I0J249999D01* +G01* +G37* +G36* +G01* +X52467200Y-50132401D02* +X52467200Y-49232399D01* +G75* +G02* +X52717199Y-48982400I249999J0D01* +G01* +X53417201Y-48982400D01* +G75* +G02* +X53667200Y-49232399I0J-249999D01* +G01* +X53667200Y-50132401D01* +G75* +G02* +X53417201Y-50382400I-249999J0D01* +G01* +X52717199Y-50382400D01* +G75* +G02* +X52467200Y-50132401I0J249999D01* +G01* +G37* +%TD*% +%TO.C,R8*% +G36* +G01* +X71666610Y-74220371D02* +X72403849Y-73704151D01* +G75* +G02* +X72752030Y-73765544I143394J-204787D01* +G01* +X73153535Y-74338952D01* +G75* +G02* +X73092142Y-74687133I-204787J-143394D01* +G01* +X72354903Y-75203353D01* +G75* +G02* +X72006722Y-75141960I-143394J204787D01* +G01* +X71605217Y-74568552D01* +G75* +G02* +X71666610Y-74220371I204787J143394D01* +G01* +G37* +G36* +G01* +X70519458Y-72582067D02* +X71256697Y-72065847D01* +G75* +G02* +X71604878Y-72127240I143394J-204787D01* +G01* +X72006383Y-72700648D01* +G75* +G02* +X71944990Y-73048829I-204787J-143394D01* +G01* +X71207751Y-73565049D01* +G75* +G02* +X70859570Y-73503656I-143394J204787D01* +G01* +X70458065Y-72930248D01* +G75* +G02* +X70519458Y-72582067I204787J143394D01* +G01* +G37* +%TD*% +%TO.C,R7*% +G36* +G01* +X68252799Y-55923602D02* +X68252799Y-55023600D01* +G75* +G02* +X68502798Y-54773601I249999J0D01* +G01* +X69202800Y-54773601D01* +G75* +G02* +X69452799Y-55023600I0J-249999D01* +G01* +X69452799Y-55923602D01* +G75* +G02* +X69202800Y-56173601I-249999J0D01* +G01* +X68502798Y-56173601D01* +G75* +G02* +X68252799Y-55923602I0J249999D01* +G01* +G37* +G36* +G01* +X66252799Y-55923602D02* +X66252799Y-55023600D01* +G75* +G02* +X66502798Y-54773601I249999J0D01* +G01* +X67202800Y-54773601D01* +G75* +G02* +X67452799Y-55023600I0J-249999D01* +G01* +X67452799Y-55923602D01* +G75* +G02* +X67202800Y-56173601I-249999J0D01* +G01* +X66502798Y-56173601D01* +G75* +G02* +X66252799Y-55923602I0J249999D01* +G01* +G37* +%TD*% +%TO.C,R6*% +G36* +G01* +X87622801Y-50755600D02* +X86722799Y-50755600D01* +G75* +G02* +X86472800Y-50505601I0J249999D01* +G01* +X86472800Y-49805599D01* +G75* +G02* +X86722799Y-49555600I249999J0D01* +G01* +X87622801Y-49555600D01* +G75* +G02* +X87872800Y-49805599I0J-249999D01* +G01* +X87872800Y-50505601D01* +G75* +G02* +X87622801Y-50755600I-249999J0D01* +G01* +G37* +G36* +G01* +X87622801Y-52755600D02* +X86722799Y-52755600D01* +G75* +G02* +X86472800Y-52505601I0J249999D01* +G01* +X86472800Y-51805599D01* +G75* +G02* +X86722799Y-51555600I249999J0D01* +G01* +X87622801Y-51555600D01* +G75* +G02* +X87872800Y-51805599I0J-249999D01* +G01* +X87872800Y-52505601D01* +G75* +G02* +X87622801Y-52755600I-249999J0D01* +G01* +G37* +%TD*% +%TO.C,R2*% +G36* +G01* +X84042646Y-63981675D02* +X84042646Y-63081673D01* +G75* +G02* +X84292645Y-62831674I249999J0D01* +G01* +X84992647Y-62831674D01* +G75* +G02* +X85242646Y-63081673I0J-249999D01* +G01* +X85242646Y-63981675D01* +G75* +G02* +X84992647Y-64231674I-249999J0D01* +G01* +X84292645Y-64231674D01* +G75* +G02* +X84042646Y-63981675I0J249999D01* +G01* +G37* +G36* +G01* +X82042646Y-63981675D02* +X82042646Y-63081673D01* +G75* +G02* +X82292645Y-62831674I249999J0D01* +G01* +X82992647Y-62831674D01* +G75* +G02* +X83242646Y-63081673I0J-249999D01* +G01* +X83242646Y-63981675D01* +G75* +G02* +X82992647Y-64231674I-249999J0D01* +G01* +X82292645Y-64231674D01* +G75* +G02* +X82042646Y-63981675I0J249999D01* +G01* +G37* +%TD*% +%TO.C,R1*% +G36* +G01* +X91375205Y-56757527D02* +X90685764Y-57336037D01* +G75* +G02* +X90333558Y-57305223I-160696J191510D01* +G01* +X89883605Y-56768991D01* +G75* +G02* +X89914419Y-56416785I191510J160696D01* +G01* +X90603860Y-55838275D01* +G75* +G02* +X90956066Y-55869089I160696J-191510D01* +G01* +X91406019Y-56405321D01* +G75* +G02* +X91375205Y-56757527I-191510J-160696D01* +G01* +G37* +G36* +G01* +X92660781Y-58289615D02* +X91971340Y-58868125D01* +G75* +G02* +X91619134Y-58837311I-160696J191510D01* +G01* +X91169181Y-58301079D01* +G75* +G02* +X91199995Y-57948873I191510J160696D01* +G01* +X91889436Y-57370363D01* +G75* +G02* +X92241642Y-57401177I160696J-191510D01* +G01* +X92691595Y-57937409D01* +G75* +G02* +X92660781Y-58289615I-191510J-160696D01* +G01* +G37* +%TD*% +D10* +%TO.C,Q1*% +G36* +X92930587Y-59965392D02* +G01* +X93543422Y-59451162D01* +X94546171Y-60646192D01* +X93933336Y-61160422D01* +X92930587Y-59965392D01* +G37* +G36* +X91475103Y-61186688D02* +G01* +X92087938Y-60672458D01* +X93090687Y-61867488D01* +X92477852Y-62381718D01* +X91475103Y-61186688D01* +G37* +G36* +X93938371Y-62644360D02* +G01* +X94551206Y-62130130D01* +X95553955Y-63325160D01* +X94941120Y-63839390D01* +X93938371Y-62644360D01* +G37* +%TD*% +D11* +%TO.C,J5*% +X64942000Y-40081200D03* +X61042000Y-40081200D03* +X64942000Y-38811200D03* +X61042000Y-38811200D03* +X64942000Y-37541200D03* +X61042000Y-37541200D03* +X64942000Y-36271200D03* +X61042000Y-36271200D03* +X64942000Y-35001200D03* +X61042000Y-35001200D03* +X64942000Y-33731200D03* +X61042000Y-33731200D03* +X64942000Y-32461200D03* +X61042000Y-32461200D03* +%TD*% +%TO.C,C7*% +G36* +G01* +X87619644Y-60171017D02* +X87008996Y-59443275D01* +G75* +G02* +X87039810Y-59091067I191511J160697D01* +G01* +X87556890Y-58657185D01* +G75* +G02* +X87909098Y-58687999I160697J-191511D01* +G01* +X88519746Y-59415741D01* +G75* +G02* +X88488932Y-59767949I-191511J-160697D01* +G01* +X87971852Y-60201831D01* +G75* +G02* +X87619644Y-60171017I-160697J191511D01* +G01* +G37* +G36* +G01* +X86030102Y-61504801D02* +X85419454Y-60777059D01* +G75* +G02* +X85450268Y-60424851I191511J160697D01* +G01* +X85967348Y-59990969D01* +G75* +G02* +X86319556Y-60021783I160697J-191511D01* +G01* +X86930204Y-60749525D01* +G75* +G02* +X86899390Y-61101733I-191511J-160697D01* +G01* +X86382310Y-61535615D01* +G75* +G02* +X86030102Y-61504801I-160697J191511D01* +G01* +G37* +%TD*% +M02* diff --git a/kicad/gerber/filadry2-F_SilkS.gbr b/kicad/gerber/filadry2-F_SilkS.gbr new file mode 100644 index 0000000..68ba7c4 --- /dev/null +++ b/kicad/gerber/filadry2-F_SilkS.gbr @@ -0,0 +1,2313 @@ +%TF.GenerationSoftware,KiCad,Pcbnew,(5.1.9)-1*% +%TF.CreationDate,2021-12-25T05:37:13+03:00*% +%TF.ProjectId,filadry2,66696c61-6472-4793-922e-6b696361645f,rev?*% +%TF.SameCoordinates,Original*% +%TF.FileFunction,Legend,Top*% +%TF.FilePolarity,Positive*% +%FSLAX46Y46*% +G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)* +G04 Created by KiCad (PCBNEW (5.1.9)-1) date 2021-12-25 05:37:13* +%MOMM*% +%LPD*% +G01* +G04 APERTURE LIST* +%ADD10C,0.150000*% +%ADD11C,0.120000*% +G04 APERTURE END LIST* +D10* +X20939333Y-58120019D02* +X20986952Y-58072400D01* +X21082190Y-58024780D01* +X21320285Y-58024780D01* +X21415523Y-58072400D01* +X21463142Y-58120019D01* +X21510761Y-58215257D01* +X21510761Y-58310495D01* +X21463142Y-58453352D01* +X20891714Y-59024780D01* +X21510761Y-59024780D01* +X21891714Y-58120019D02* +X21939333Y-58072400D01* +X22034571Y-58024780D01* +X22272666Y-58024780D01* +X22367904Y-58072400D01* +X22415523Y-58120019D01* +X22463142Y-58215257D01* +X22463142Y-58310495D01* +X22415523Y-58453352D01* +X21844095Y-59024780D01* +X22463142Y-59024780D01* +X23082190Y-58024780D02* +X23177428Y-58024780D01* +X23272666Y-58072400D01* +X23320285Y-58120019D01* +X23367904Y-58215257D01* +X23415523Y-58405733D01* +X23415523Y-58643828D01* +X23367904Y-58834304D01* +X23320285Y-58929542D01* +X23272666Y-58977161D01* +X23177428Y-59024780D01* +X23082190Y-59024780D01* +X22986952Y-58977161D01* +X22939333Y-58929542D01* +X22891714Y-58834304D01* +X22844095Y-58643828D01* +X22844095Y-58405733D01* +X22891714Y-58215257D01* +X22939333Y-58120019D01* +X22986952Y-58072400D01* +X23082190Y-58024780D01* +X23701238Y-58024780D02* +X24034571Y-59024780D01* +X24367904Y-58024780D01* +X47737485Y-74690388D02* +X47448810Y-74523721D01* +X47186905Y-74977354D02* +X47686905Y-74111328D01* +X48099298Y-74349424D01* +X48300366Y-75620211D02* +X48562271Y-75166579D01* +X48568651Y-75060291D01* +X48509982Y-74971432D01* +X48345024Y-74876194D01* +X48238736Y-74869814D01* +X48324176Y-75578972D02* +X48217888Y-75572592D01* +X48011691Y-75453544D01* +X47953022Y-75364686D01* +X47959402Y-75258398D01* +X48007021Y-75175919D01* +X48095879Y-75117250D01* +X48202167Y-75123630D01* +X48408364Y-75242678D01* +X48514652Y-75249057D01* +X49046093Y-75280956D02* +X48712759Y-75858306D01* +X48998474Y-75363435D02* +X49063522Y-75346005D01* +X49169811Y-75352385D01* +X49293528Y-75423813D01* +X49352198Y-75512671D01* +X49345818Y-75618960D01* +X49083913Y-76072592D01* +X34566102Y-69678312D02* +X34908122Y-68738619D01* +X34745255Y-69186092D02* +X35282222Y-69381532D01* +X35103069Y-69873752D02* +X35445089Y-68934059D01* +X35924806Y-70122164D02* +X35819025Y-70134338D01* +X35640036Y-70069192D01* +X35566828Y-69991871D01* +X35554654Y-69886090D01* +X35684948Y-69528112D01* +X35762268Y-69454904D01* +X35868050Y-69442730D01* +X36047039Y-69507877D01* +X36120247Y-69585197D01* +X36132420Y-69690978D01* +X36099847Y-69780473D01* +X35619801Y-69707101D01* +X36758718Y-70476359D02* +X36937871Y-69984139D01* +X36925697Y-69878357D01* +X36852490Y-69801037D01* +X36673500Y-69735890D01* +X36567719Y-69748064D01* +X36775005Y-70431611D02* +X36669223Y-70443785D01* +X36445487Y-70362352D01* +X36372279Y-70285031D01* +X36360105Y-70179250D01* +X36392679Y-70089755D01* +X36469999Y-70016548D01* +X36575780Y-70004374D01* +X36799517Y-70085807D01* +X36905298Y-70073633D01* +X37299962Y-69963904D02* +X37657940Y-70094197D01* +X37548211Y-69699533D02* +X37255051Y-70504983D01* +X37267225Y-70610765D01* +X37340432Y-70688085D01* +X37429927Y-70720659D01* +X38117423Y-70920212D02* +X38011641Y-70932385D01* +X37832652Y-70867239D01* +X37759444Y-70789918D01* +X37747271Y-70684137D01* +X37877564Y-70326159D01* +X37954885Y-70252951D01* +X38060666Y-70240777D01* +X38239655Y-70305924D01* +X38312863Y-70383244D01* +X38325037Y-70489025D01* +X38292463Y-70578520D01* +X37812417Y-70505148D01* +X38548609Y-71127826D02* +X38776622Y-70501364D01* +X38711475Y-70680353D02* +X38788796Y-70607145D01* +X38849830Y-70578684D01* +X38955611Y-70566510D01* +X39045106Y-70599084D01* +X45955996Y-70368224D02* +X45598854Y-70986813D01* +X45486186Y-71086722D01* +X45356088Y-71121581D01* +X45208561Y-71091392D01* +X45126082Y-71043773D01* +X46280783Y-71710440D02* +X45868389Y-71472344D01* +X46368389Y-70606319D01* +X47111948Y-72080342D02* +X47046900Y-72097772D01* +X46899372Y-72067582D01* +X46816894Y-72019963D01* +X46716985Y-71907295D01* +X46682126Y-71777198D01* +X46688505Y-71670910D01* +X46742504Y-71482143D01* +X46813933Y-71358425D01* +X46950410Y-71217277D01* +X47039268Y-71158608D01* +X47169366Y-71123749D01* +X47316894Y-71153938D01* +X47399372Y-71201557D01* +X47499281Y-71314225D01* +X47516710Y-71379274D01* +X48182919Y-71653938D02* +X47825776Y-72272528D01* +X47713108Y-72372436D01* +X47583011Y-72407295D01* +X47435483Y-72377106D01* +X47353004Y-72329487D01* +X48507705Y-72996154D02* +X48095312Y-72758059D01* +X48595312Y-71892033D01* +X49338871Y-73366056D02* +X49273822Y-73383486D01* +X49126295Y-73353297D01* +X49043816Y-73305678D01* +X48943908Y-73193010D01* +X48909048Y-73062912D01* +X48915428Y-72956624D01* +X48969427Y-72767857D01* +X49040855Y-72644139D01* +X49177333Y-72502992D01* +X49266191Y-72444323D01* +X49396289Y-72409463D01* +X49543816Y-72439652D01* +X49626295Y-72487271D01* +X49726203Y-72599939D01* +X49743633Y-72664988D01* +X50409841Y-72939652D02* +X50052699Y-73558242D01* +X49940031Y-73658150D01* +X49809933Y-73693010D01* +X49662406Y-73662821D01* +X49579927Y-73615201D01* +X50734627Y-74281868D02* +X50322234Y-74043773D01* +X50822234Y-73177747D01* +X51565793Y-74651770D02* +X51500744Y-74669200D01* +X51353217Y-74639011D01* +X51270738Y-74591392D01* +X51170830Y-74478724D01* +X51135970Y-74348626D01* +X51142350Y-74242338D01* +X51196349Y-74053572D01* +X51267778Y-73929854D01* +X51404255Y-73788706D01* +X51493113Y-73730037D01* +X51623211Y-73695177D01* +X51770738Y-73725367D01* +X51853217Y-73772986D01* +X51953125Y-73885653D01* +X51970555Y-73950702D01* +X52636764Y-74225367D02* +X52279621Y-74843956D01* +X52166953Y-74943865D01* +X52036855Y-74978724D01* +X51889328Y-74948535D01* +X51806849Y-74900916D01* +X52961550Y-75567582D02* +X52549157Y-75329487D01* +X53049157Y-74463462D01* +X53792716Y-75937485D02* +X53727667Y-75954915D01* +X53580140Y-75924725D01* +X53497661Y-75877106D01* +X53397753Y-75764438D01* +X53362893Y-75634341D01* +X53369273Y-75528053D01* +X53423271Y-75339286D01* +X53494700Y-75215568D01* +X53631177Y-75074420D01* +X53720036Y-75015751D01* +X53850133Y-74980892D01* +X53997661Y-75011081D01* +X54080140Y-75058700D01* +X54180048Y-75171368D01* +X54197478Y-75236417D01* +X83963467Y-41185029D02* +X83798476Y-41020037D01* +X83539203Y-41279310D02* +X84034178Y-40784335D01* +X84269880Y-41020037D01* +X83963467Y-41703574D02* +X84293451Y-41373591D01* +X84199170Y-41467871D02* +X84269880Y-41444301D01* +X84317021Y-41444301D01* +X84387731Y-41467871D01* +X84434872Y-41515012D01* +X84340591Y-42080697D02* +X84317021Y-42009987D01* +X84317021Y-41962846D01* +X84340591Y-41892136D01* +X84482012Y-41750714D01* +X84552723Y-41727144D01* +X84599864Y-41727144D01* +X84670574Y-41750714D01* +X84741285Y-41821425D01* +X84764855Y-41892136D01* +X84764855Y-41939276D01* +X84741285Y-42009987D01* +X84599864Y-42151408D01* +X84529153Y-42174978D01* +X84482012Y-42174978D01* +X84411302Y-42151408D01* +X84340591Y-42080697D01* +X85047698Y-42127838D02* +X84717715Y-42457821D01* +X85000557Y-42174978D02* +X85047698Y-42174978D01* +X85118408Y-42198548D01* +X85189119Y-42269259D01* +X85212689Y-42339970D01* +X85189119Y-42410680D01* +X84929847Y-42669953D01* +X85424821Y-42504961D02* +X85613383Y-42693523D01* +X85660524Y-42410680D02* +X85236260Y-42834945D01* +X85212689Y-42905655D01* +X85236260Y-42976366D01* +X85283400Y-43023506D01* +X82608180Y-42045342D02* +X83103154Y-41550367D01* +X83291716Y-41738929D01* +X83315286Y-41809640D01* +X83315286Y-41856780D01* +X83291716Y-41927491D01* +X83221005Y-41998201D01* +X83150295Y-42021772D01* +X83103154Y-42021772D01* +X83032444Y-41998201D01* +X82843882Y-41809640D01* +X83315286Y-42752449D02* +X83574559Y-42493176D01* +X83598129Y-42422465D01* +X83574559Y-42351755D01* +X83480278Y-42257474D01* +X83409567Y-42233904D01* +X83338857Y-42728878D02* +X83268146Y-42705308D01* +X83150295Y-42587457D01* +X83126725Y-42516746D01* +X83150295Y-42446036D01* +X83197435Y-42398895D01* +X83268146Y-42375325D01* +X83338857Y-42398895D01* +X83456708Y-42516746D01* +X83527418Y-42540317D01* +X83880972Y-42658168D02* +X83550989Y-42988151D01* +X83833831Y-42705308D02* +X83880972Y-42705308D01* +X83951682Y-42728878D01* +X84022393Y-42799589D01* +X84045963Y-42870300D01* +X84022393Y-42941010D01* +X83763121Y-43200283D01* +X84210955Y-43600977D02* +X84140244Y-43577407D01* +X84045963Y-43483126D01* +X84022393Y-43412415D01* +X84045963Y-43341704D01* +X84234525Y-43153142D01* +X84305236Y-43129572D01* +X84375946Y-43153142D01* +X84470227Y-43247423D01* +X84493798Y-43318134D01* +X84470227Y-43388845D01* +X84423087Y-43435985D01* +X84140244Y-43247423D01* +X84493798Y-43930960D02* +X84470227Y-43860249D01* +X84493798Y-43789539D01* +X84918062Y-43365274D01* +X97675808Y-59388425D02* +X97180833Y-58893451D01* +X97298684Y-58775600D01* +X97392965Y-58728459D01* +X97487246Y-58728459D01* +X97557957Y-58752029D01* +X97675808Y-58822740D01* +X97746519Y-58893451D01* +X97817229Y-59011302D01* +X97840800Y-59082012D01* +X97840800Y-59176293D01* +X97793659Y-59270574D01* +X97675808Y-59388425D01* +X98170783Y-58893451D02* +X97675808Y-58398476D01* +X98453625Y-58610608D01* +X97958651Y-58115633D01* +X95446314Y-56970370D02* +X95540595Y-56876089D01* +X95611306Y-56852519D01* +X95705587Y-56852519D01* +X95823438Y-56923229D01* +X95988429Y-57088221D01* +X96059140Y-57206072D01* +X96059140Y-57300353D01* +X96035570Y-57371064D01* +X95941289Y-57465344D01* +X95870578Y-57488915D01* +X95776297Y-57488915D01* +X95658446Y-57418204D01* +X95493455Y-57253212D01* +X95422744Y-57135361D01* +X95422744Y-57041080D01* +X95446314Y-56970370D01* +X96365553Y-57041080D02* +X95870578Y-56546106D01* +X96648396Y-56758238D02* +X96153421Y-56687527D01* +X96153421Y-56263263D02* +X96153421Y-56828948D01* +X93523233Y-55185051D02* +X93923927Y-55585744D01* +X93994638Y-55609315D01* +X94041778Y-55609315D01* +X94112489Y-55585744D01* +X94206770Y-55491464D01* +X94230340Y-55420753D01* +X94230340Y-55373612D01* +X94206770Y-55302902D01* +X93806076Y-54902208D01* +X94536753Y-55161480D02* +X94041778Y-54666506D01* +X94230340Y-54477944D01* +X94301051Y-54454374D01* +X94348191Y-54454374D01* +X94418902Y-54477944D01* +X94489612Y-54548655D01* +X94513183Y-54619365D01* +X94513183Y-54666506D01* +X94489612Y-54737216D01* +X94301051Y-54925778D01* +X90226506Y-52363387D02* +X90320787Y-52316247D01* +X90438638Y-52198396D01* +X90462208Y-52127685D01* +X90462208Y-52080544D01* +X90438638Y-52009834D01* +X90391497Y-51962693D01* +X90320787Y-51939123D01* +X90273646Y-51939123D01* +X90202935Y-51962693D01* +X90085084Y-52033404D01* +X90014374Y-52056974D01* +X89967233Y-52056974D01* +X89896522Y-52033404D01* +X89849382Y-51986264D01* +X89825812Y-51915553D01* +X89825812Y-51868412D01* +X89849382Y-51797702D01* +X89967233Y-51679851D01* +X90061514Y-51632710D01* +X90745051Y-51891983D02* +X90250076Y-51397008D01* +X90367927Y-51279157D01* +X90462208Y-51232016D01* +X90556489Y-51232016D01* +X90627200Y-51255587D01* +X90745051Y-51326297D01* +X90815761Y-51397008D01* +X90886472Y-51514859D01* +X90910042Y-51585570D01* +X90910042Y-51679851D01* +X90862902Y-51774132D01* +X90745051Y-51891983D01* +X91075034Y-51279157D02* +X91310736Y-51043455D01* +X91169315Y-51467719D02* +X90839332Y-50807752D01* +X91499298Y-51137735D01* +X88765091Y-50827602D02* +X88859372Y-50780462D01* +X88977223Y-50662610D01* +X89000793Y-50591900D01* +X89000793Y-50544759D01* +X88977223Y-50474049D01* +X88930082Y-50426908D01* +X88859372Y-50403338D01* +X88812231Y-50403338D01* +X88741521Y-50426908D01* +X88623669Y-50497619D01* +X88552959Y-50521189D01* +X88505818Y-50521189D01* +X88435108Y-50497619D01* +X88387967Y-50450478D01* +X88364397Y-50379768D01* +X88364397Y-50332627D01* +X88387967Y-50261917D01* +X88505818Y-50144066D01* +X88600099Y-50096925D01* +X89519338Y-50026214D02* +X89519338Y-50073355D01* +X89472198Y-50167636D01* +X89425057Y-50214776D01* +X89330776Y-50261917D01* +X89236495Y-50261917D01* +X89165785Y-50238346D01* +X89047933Y-50167636D01* +X88977223Y-50096925D01* +X88906512Y-49979074D01* +X88882942Y-49908363D01* +X88882942Y-49814082D01* +X88930082Y-49719801D01* +X88977223Y-49672661D01* +X89071504Y-49625521D01* +X89118644Y-49625521D01* +X90014313Y-49625521D02* +X89778610Y-49861223D01* +X89283636Y-49366248D01* +X86294189Y-48084836D02* +X86223478Y-48108406D01* +X86152767Y-48179117D01* +X86105627Y-48273398D01* +X86105627Y-48367678D01* +X86129197Y-48438389D01* +X86199908Y-48556240D01* +X86270618Y-48626951D01* +X86388469Y-48697662D01* +X86459180Y-48721232D01* +X86553461Y-48721232D01* +X86647742Y-48674091D01* +X86694882Y-48626951D01* +X86742023Y-48532670D01* +X86742023Y-48485530D01* +X86577031Y-48320538D01* +X86482750Y-48414819D01* +X87001295Y-48320538D02* +X86506321Y-47825563D01* +X87284138Y-48037695D01* +X86789163Y-47542721D01* +X87519840Y-47801993D02* +X87024866Y-47307018D01* +X87142717Y-47189167D01* +X87236998Y-47142027D01* +X87331278Y-47142027D01* +X87401989Y-47165597D01* +X87519840Y-47236308D01* +X87590551Y-47307018D01* +X87661262Y-47424869D01* +X87684832Y-47495580D01* +X87684832Y-47589861D01* +X87637691Y-47684142D01* +X87519840Y-47801993D01* +X84229686Y-46444598D02* +X84536099Y-46138185D01* +X84559669Y-46491738D01* +X84630380Y-46421027D01* +X84701091Y-46397457D01* +X84748231Y-46397457D01* +X84818942Y-46421027D01* +X84936793Y-46538878D01* +X84960363Y-46609589D01* +X84960363Y-46656730D01* +X84936793Y-46727440D01* +X84795372Y-46868862D01* +X84724661Y-46892432D01* +X84677521Y-46892432D01* +X84866082Y-46138185D02* +X85313917Y-46350317D01* +X85101785Y-45902482D01* +X85078214Y-45596069D02* +X85384627Y-45289656D01* +X85408198Y-45643210D01* +X85478908Y-45572499D01* +X85549619Y-45548929D01* +X85596759Y-45548929D01* +X85667470Y-45572499D01* +X85785321Y-45690350D01* +X85808891Y-45761061D01* +X85808891Y-45808201D01* +X85785321Y-45878912D01* +X85643900Y-46020333D01* +X85573189Y-46043904D01* +X85526049Y-46043904D01* +X81685665Y-75626961D02* +X81785590Y-75593400D01* +X81918695Y-75493098D01* +X81951877Y-75426356D01* +X81958438Y-75379674D01* +X81944938Y-75306371D01* +X81904817Y-75253129D01* +X81838075Y-75219947D01* +X81791393Y-75213386D01* +X81718090Y-75226886D01* +X81591545Y-75280507D01* +X81518242Y-75294007D01* +X81471561Y-75287446D01* +X81404818Y-75254264D01* +X81364697Y-75201022D01* +X81351198Y-75127719D01* +X81357758Y-75081037D01* +X81390940Y-75014295D01* +X81524046Y-74913992D01* +X81623970Y-74880432D01* +X82457680Y-75045206D02* +X82424498Y-75111948D01* +X82318013Y-75192190D01* +X82244710Y-75205690D01* +X82177968Y-75172508D01* +X82017484Y-74959539D01* +X82003984Y-74886236D01* +X82037166Y-74819494D01* +X82143651Y-74739252D01* +X82216954Y-74725752D01* +X82283696Y-74758934D01* +X82323817Y-74812176D01* +X82097726Y-75066023D01* +X82463105Y-74498526D02* +X82743952Y-74871222D01* +X82503226Y-74551768D02* +X82509787Y-74505086D01* +X82542969Y-74438344D01* +X82622832Y-74378163D01* +X82696135Y-74364663D01* +X82762877Y-74397845D01* +X82983543Y-74690678D01* +X83203073Y-74483512D02* +X83276376Y-74470012D01* +X83382861Y-74389770D01* +X83416042Y-74323028D01* +X83402543Y-74249725D01* +X83382482Y-74223104D01* +X83315740Y-74189922D01* +X83242437Y-74203422D01* +X83162573Y-74263603D01* +X83089271Y-74277103D01* +X83022528Y-74243921D01* +X83002468Y-74217300D01* +X82988968Y-74143997D01* +X83022150Y-74077255D01* +X83102014Y-74017074D01* +X83175316Y-74003574D01* +X83782178Y-74088863D02* +X83708875Y-74102363D01* +X83662194Y-74095802D01* +X83595452Y-74062620D01* +X83475089Y-73902893D01* +X83461589Y-73829590D01* +X83468149Y-73782908D01* +X83501331Y-73716166D01* +X83581195Y-73655985D01* +X83654498Y-73642485D01* +X83701179Y-73649046D01* +X83767922Y-73682227D01* +X83888285Y-73841954D01* +X83901784Y-73915257D01* +X83895224Y-73961939D01* +X83862042Y-74028681D01* +X83782178Y-74088863D01* +X84208117Y-73767895D02* +X83927270Y-73395198D01* +X84007512Y-73501683D02* +X83994012Y-73428380D01* +X84000573Y-73381698D01* +X84033755Y-73314956D01* +X84086997Y-73274835D01* +X77175590Y-73430519D02* +X77210889Y-73529843D01* +X77313499Y-73661178D01* +X77380811Y-73693190D01* +X77427600Y-73698935D01* +X77500656Y-73684158D01* +X77553190Y-73643114D01* +X77585202Y-73575802D01* +X77590947Y-73529013D01* +X77576170Y-73455957D01* +X77520349Y-73330367D01* +X77505571Y-73257311D01* +X77511316Y-73210522D01* +X77543328Y-73143211D01* +X77595862Y-73102167D01* +X77668919Y-73087390D01* +X77715708Y-73093135D01* +X77783019Y-73125147D01* +X77885629Y-73256482D01* +X77920928Y-73355805D01* +X77580286Y-74002649D02* +X78131894Y-73571686D01* +X78234504Y-73703021D01* +X78269803Y-73802344D01* +X78258313Y-73895922D01* +X78226301Y-73963234D01* +X78141755Y-74071589D01* +X78062954Y-74133155D01* +X77937364Y-74188976D01* +X77864308Y-74203753D01* +X77770730Y-74192263D01* +X77682896Y-74133984D01* +X77580286Y-74002649D01* +X78148329Y-74404857D02* +X78353550Y-74667528D01* +X77949683Y-74475456D02* +X78644945Y-74228362D01* +X78236992Y-74843194D01* +X75113312Y-75031587D02* +X75148611Y-75130910D01* +X75251222Y-75262245D01* +X75318533Y-75294257D01* +X75365322Y-75300002D01* +X75438378Y-75285225D01* +X75490912Y-75244181D01* +X75522924Y-75176869D01* +X75528669Y-75130080D01* +X75513892Y-75057024D01* +X75458071Y-74931434D01* +X75443294Y-74858378D01* +X75449038Y-74811589D01* +X75481050Y-74744278D01* +X75533585Y-74703234D01* +X75606641Y-74688457D01* +X75653430Y-74694202D01* +X75720741Y-74726214D01* +X75823351Y-74857549D01* +X75858650Y-74956872D01* +X75816807Y-75877876D02* +X75770018Y-75872131D01* +X75682185Y-75813852D01* +X75641140Y-75761318D01* +X75605841Y-75661995D01* +X75617331Y-75568417D01* +X75649343Y-75501106D01* +X75733889Y-75392751D01* +X75812690Y-75331184D01* +X75938281Y-75275363D01* +X76011337Y-75260586D01* +X76104915Y-75272076D01* +X76192748Y-75330355D01* +X76233792Y-75382889D01* +X76269091Y-75482212D01* +X76263346Y-75529001D01* +X76154192Y-76417994D02* +X75948971Y-76155324D01* +X76500579Y-75724361D01* +X73805118Y-76272470D02* +X73790341Y-76199414D01* +X73728775Y-76120613D01* +X73640942Y-76062334D01* +X73547363Y-76050844D01* +X73474307Y-76065621D01* +X73348717Y-76121442D01* +X73269916Y-76183008D01* +X73185370Y-76291363D01* +X73153358Y-76358674D01* +X73141868Y-76452252D01* +X73177167Y-76551576D01* +X73218211Y-76604110D01* +X73306044Y-76662389D01* +X73352834Y-76668134D01* +X73536703Y-76524479D01* +X73454614Y-76419411D01* +X73484998Y-76945581D02* +X74036605Y-76514618D01* +X73731262Y-77260785D01* +X74282870Y-76829822D01* +X73936483Y-77523456D02* +X74488091Y-77092492D01* +X74590701Y-77223828D01* +X74626000Y-77323151D01* +X74614510Y-77416729D01* +X74582498Y-77484040D01* +X74497952Y-77592395D01* +X74419151Y-77653961D01* +X74293561Y-77709783D01* +X74220505Y-77724560D01* +X74126926Y-77713070D01* +X74039093Y-77654791D01* +X73936483Y-77523456D01* +X71595175Y-77492213D02* +X71861961Y-77833684D01* +X71508171Y-77813991D01* +X71569737Y-77892792D01* +X71584514Y-77965848D01* +X71578769Y-78012637D01* +X71546757Y-78079948D01* +X71415422Y-78182559D01* +X71342366Y-78197336D01* +X71295577Y-78191591D01* +X71228266Y-78159579D01* +X71105133Y-78001977D01* +X71090356Y-77928921D01* +X71096101Y-77882131D01* +X71821746Y-78161207D02* +X71556618Y-78579851D01* +X72026967Y-78423878D01* +X72333968Y-78437825D02* +X72600755Y-78779297D01* +X72246965Y-78759604D01* +X72308531Y-78838405D01* +X72323308Y-78911461D01* +X72317563Y-78958250D01* +X72285551Y-79025561D01* +X72154216Y-79128172D01* +X72081160Y-79142949D01* +X72034370Y-79137204D01* +X71967059Y-79105192D01* +X71843927Y-78947590D01* +X71829150Y-78874533D01* +X71834895Y-78827744D01* +X26062514Y-21252371D02* +X25729180Y-21252371D01* +X25729180Y-21776180D02* +X25729180Y-20776180D01* +X26205371Y-20776180D01* +X26586323Y-21776180D02* +X26586323Y-21109514D01* +X26586323Y-20776180D02* +X26538704Y-20823800D01* +X26586323Y-20871419D01* +X26633942Y-20823800D01* +X26586323Y-20776180D01* +X26586323Y-20871419D01* +X27205371Y-21776180D02* +X27110133Y-21728561D01* +X27062514Y-21633323D01* +X27062514Y-20776180D01* +X28014895Y-21776180D02* +X28014895Y-21252371D01* +X27967276Y-21157133D01* +X27872038Y-21109514D01* +X27681561Y-21109514D01* +X27586323Y-21157133D01* +X28014895Y-21728561D02* +X27919657Y-21776180D01* +X27681561Y-21776180D01* +X27586323Y-21728561D01* +X27538704Y-21633323D01* +X27538704Y-21538085D01* +X27586323Y-21442847D01* +X27681561Y-21395228D01* +X27919657Y-21395228D01* +X28014895Y-21347609D01* +X28491085Y-21776180D02* +X28491085Y-20776180D01* +X28729180Y-20776180D01* +X28872038Y-20823800D01* +X28967276Y-20919038D01* +X29014895Y-21014276D01* +X29062514Y-21204752D01* +X29062514Y-21347609D01* +X29014895Y-21538085D01* +X28967276Y-21633323D01* +X28872038Y-21728561D01* +X28729180Y-21776180D01* +X28491085Y-21776180D01* +X29491085Y-21776180D02* +X29491085Y-21109514D01* +X29491085Y-21299990D02* +X29538704Y-21204752D01* +X29586323Y-21157133D01* +X29681561Y-21109514D01* +X29776800Y-21109514D01* +X30014895Y-21109514D02* +X30252990Y-21776180D01* +X30491085Y-21109514D02* +X30252990Y-21776180D01* +X30157752Y-22014276D01* +X30110133Y-22061895D01* +X30014895Y-22109514D01* +X31633942Y-21776180D02* +X31633942Y-21109514D01* +X31633942Y-21299990D02* +X31681561Y-21204752D01* +X31729180Y-21157133D01* +X31824419Y-21109514D01* +X31919657Y-21109514D01* +X32633942Y-21728561D02* +X32538704Y-21776180D01* +X32348228Y-21776180D01* +X32252990Y-21728561D01* +X32205371Y-21633323D01* +X32205371Y-21252371D01* +X32252990Y-21157133D01* +X32348228Y-21109514D01* +X32538704Y-21109514D01* +X32633942Y-21157133D01* +X32681561Y-21252371D01* +X32681561Y-21347609D01* +X32205371Y-21442847D01* +X33014895Y-21109514D02* +X33252990Y-21776180D01* +X33491085Y-21109514D01* +X33872038Y-21680942D02* +X33919657Y-21728561D01* +X33872038Y-21776180D01* +X33824419Y-21728561D01* +X33872038Y-21680942D01* +X33872038Y-21776180D01* +X34300609Y-20871419D02* +X34348228Y-20823800D01* +X34443466Y-20776180D01* +X34681561Y-20776180D01* +X34776800Y-20823800D01* +X34824419Y-20871419D01* +X34872038Y-20966657D01* +X34872038Y-21061895D01* +X34824419Y-21204752D01* +X34252990Y-21776180D01* +X34872038Y-21776180D01* +X21895847Y-22664276D02* +X21800609Y-22616657D01* +X21610133Y-22616657D01* +X21514895Y-22664276D01* +X21419657Y-22759514D01* +X21372038Y-22854752D01* +X21372038Y-23045228D01* +X21419657Y-23140466D01* +X21514895Y-23235704D01* +X21610133Y-23283323D01* +X21800609Y-23283323D01* +X21895847Y-23235704D01* +X21705371Y-22283323D02* +X21467276Y-22330942D01* +X21229180Y-22473800D01* +X21086323Y-22711895D01* +X21038704Y-22949990D01* +X21086323Y-23188085D01* +X21229180Y-23426180D01* +X21467276Y-23569038D01* +X21705371Y-23616657D01* +X21943466Y-23569038D01* +X22181561Y-23426180D01* +X22324419Y-23188085D01* +X22372038Y-22949990D01* +X22324419Y-22711895D01* +X22181561Y-22473800D01* +X21943466Y-22330942D01* +X21705371Y-22283323D01* +X22800609Y-23426180D02* +X22800609Y-22426180D01* +X23133942Y-23140466D01* +X23467276Y-22426180D01* +X23467276Y-23426180D01* +X24372038Y-23378561D02* +X24276800Y-23426180D01* +X24086323Y-23426180D01* +X23991085Y-23378561D01* +X23943466Y-23330942D01* +X23895847Y-23235704D01* +X23895847Y-22949990D01* +X23943466Y-22854752D01* +X23991085Y-22807133D01* +X24086323Y-22759514D01* +X24276800Y-22759514D01* +X24372038Y-22807133D01* +X25133942Y-22902371D02* +X24800609Y-22902371D01* +X24800609Y-23426180D02* +X24800609Y-22426180D01* +X25276800Y-22426180D01* +X26133942Y-23426180D02* +X25657752Y-23426180D01* +X25657752Y-22426180D01* +X26657752Y-22949990D02* +X26657752Y-23426180D01* +X26324419Y-22426180D02* +X26657752Y-22949990D01* +X26991085Y-22426180D01* +X28086323Y-23426180D02* +X28086323Y-22426180D01* +X28324419Y-22426180D01* +X28467276Y-22473800D01* +X28562514Y-22569038D01* +X28610133Y-22664276D01* +X28657752Y-22854752D01* +X28657752Y-22997609D01* +X28610133Y-23188085D01* +X28562514Y-23283323D01* +X28467276Y-23378561D01* +X28324419Y-23426180D01* +X28086323Y-23426180D01* +X29467276Y-23378561D02* +X29372038Y-23426180D01* +X29181561Y-23426180D01* +X29086323Y-23378561D01* +X29038704Y-23283323D01* +X29038704Y-22902371D01* +X29086323Y-22807133D01* +X29181561Y-22759514D01* +X29372038Y-22759514D01* +X29467276Y-22807133D01* +X29514895Y-22902371D01* +X29514895Y-22997609D01* +X29038704Y-23092847D01* +X30372038Y-23378561D02* +X30276800Y-23426180D01* +X30086323Y-23426180D01* +X29991085Y-23378561D01* +X29943466Y-23330942D01* +X29895847Y-23235704D01* +X29895847Y-22949990D01* +X29943466Y-22854752D01* +X29991085Y-22807133D01* +X30086323Y-22759514D01* +X30276800Y-22759514D01* +X30372038Y-22807133D01* +X31181561Y-23378561D02* +X31086323Y-23426180D01* +X30895847Y-23426180D01* +X30800609Y-23378561D01* +X30752990Y-23283323D01* +X30752990Y-22902371D01* +X30800609Y-22807133D01* +X30895847Y-22759514D01* +X31086323Y-22759514D01* +X31181561Y-22807133D01* +X31229180Y-22902371D01* +X31229180Y-22997609D01* +X30752990Y-23092847D01* +X31657752Y-23426180D02* +X31657752Y-22759514D01* +X31657752Y-22854752D02* +X31705371Y-22807133D01* +X31800609Y-22759514D01* +X31943466Y-22759514D01* +X32038704Y-22807133D01* +X32086323Y-22902371D01* +X32086323Y-23426180D01* +X32086323Y-22902371D02* +X32133942Y-22807133D01* +X32229180Y-22759514D01* +X32372038Y-22759514D01* +X32467276Y-22807133D01* +X32514895Y-22902371D01* +X32514895Y-23426180D01* +X32991085Y-23426180D02* +X32991085Y-22426180D01* +X32991085Y-22807133D02* +X33086323Y-22759514D01* +X33276800Y-22759514D01* +X33372038Y-22807133D01* +X33419657Y-22854752D01* +X33467276Y-22949990D01* +X33467276Y-23235704D01* +X33419657Y-23330942D01* +X33372038Y-23378561D01* +X33276800Y-23426180D01* +X33086323Y-23426180D01* +X32991085Y-23378561D01* +X34276800Y-23378561D02* +X34181561Y-23426180D01* +X33991085Y-23426180D01* +X33895847Y-23378561D01* +X33848228Y-23283323D01* +X33848228Y-22902371D01* +X33895847Y-22807133D01* +X33991085Y-22759514D01* +X34181561Y-22759514D01* +X34276800Y-22807133D01* +X34324419Y-22902371D01* +X34324419Y-22997609D01* +X33848228Y-23092847D01* +X34752990Y-23426180D02* +X34752990Y-22759514D01* +X34752990Y-22949990D02* +X34800609Y-22854752D01* +X34848228Y-22807133D01* +X34943466Y-22759514D01* +X35038704Y-22759514D01* +X36086323Y-22521419D02* +X36133942Y-22473800D01* +X36229180Y-22426180D01* +X36467276Y-22426180D01* +X36562514Y-22473800D01* +X36610133Y-22521419D01* +X36657752Y-22616657D01* +X36657752Y-22711895D01* +X36610133Y-22854752D01* +X36038704Y-23426180D01* +X36657752Y-23426180D01* +X37276800Y-22426180D02* +X37372038Y-22426180D01* +X37467276Y-22473800D01* +X37514895Y-22521419D01* +X37562514Y-22616657D01* +X37610133Y-22807133D01* +X37610133Y-23045228D01* +X37562514Y-23235704D01* +X37514895Y-23330942D01* +X37467276Y-23378561D01* +X37372038Y-23426180D01* +X37276800Y-23426180D01* +X37181561Y-23378561D01* +X37133942Y-23330942D01* +X37086323Y-23235704D01* +X37038704Y-23045228D01* +X37038704Y-22807133D01* +X37086323Y-22616657D01* +X37133942Y-22521419D01* +X37181561Y-22473800D01* +X37276800Y-22426180D01* +X37991085Y-22521419D02* +X38038704Y-22473800D01* +X38133942Y-22426180D01* +X38372038Y-22426180D01* +X38467276Y-22473800D01* +X38514895Y-22521419D01* +X38562514Y-22616657D01* +X38562514Y-22711895D01* +X38514895Y-22854752D01* +X37943466Y-23426180D01* +X38562514Y-23426180D01* +X39514895Y-23426180D02* +X38943466Y-23426180D01* +X39229180Y-23426180D02* +X39229180Y-22426180D01* +X39133942Y-22569038D01* +X39038704Y-22664276D01* +X38943466Y-22711895D01* +D11* +%TO.C,PS1*% +X20510800Y-25013600D02* +X20510800Y-45213600D01* +X20510800Y-45213600D02* +X54710800Y-45213600D01* +X54710800Y-45213600D02* +X54710800Y-25013600D01* +X54710800Y-25013600D02* +X20510800Y-25013600D01* +X20120800Y-31613600D02* +X20120800Y-33623600D01* +%TO.C,Y1*% +X78984646Y-69462675D02* +X85284646Y-69462675D01* +X78984646Y-64966675D02* +X85284646Y-64966675D01* +X85284646Y-64966675D02* +G75* +G02* +X85284646Y-69462675I0J-2248000D01* +G01* +X78984646Y-69462675D02* +G75* +G02* +X78984646Y-64966675I0J2248000D01* +G01* +%TO.C,U4*% +X68360800Y-71027600D02* +X69610800Y-71027600D01* +X69610800Y-71027600D02* +X69610800Y-63287600D01* +X69610800Y-63287600D02* +X65110800Y-63287600D01* +X65110800Y-63287600D02* +X65110800Y-71027600D01* +X65110800Y-71027600D02* +X66360800Y-71027600D01* +X66360800Y-71027600D02* +G75* +G02* +X68360800Y-71027600I1000000J0D01* +G01* +%TO.C,U3*% +X64042800Y-53501600D02* +X65292800Y-53501600D01* +X65292800Y-53501600D02* +X65292800Y-45761600D01* +X65292800Y-45761600D02* +X60792800Y-45761600D01* +X60792800Y-45761600D02* +X60792800Y-53501600D01* +X60792800Y-53501600D02* +X62042800Y-53501600D01* +X62042800Y-53501600D02* +G75* +G02* +X64042800Y-53501600I1000000J0D01* +G01* +%TO.C,U1*% +X82630800Y-50551600D02* +X82630800Y-49601600D01* +X82630800Y-49601600D02* +X81680800Y-49601600D01* +X82630800Y-58871600D02* +X82630800Y-59821600D01* +X82630800Y-59821600D02* +X81680800Y-59821600D01* +X72410800Y-50551600D02* +X72410800Y-49601600D01* +X72410800Y-49601600D02* +X73360800Y-49601600D01* +X72410800Y-58871600D02* +X72410800Y-59821600D01* +X72410800Y-59821600D02* +X73360800Y-59821600D01* +X73360800Y-59821600D02* +X73360800Y-61161600D01* +%TO.C,R20*% +X70562800Y-46445664D02* +X70562800Y-45991536D01* +X72032800Y-46445664D02* +X72032800Y-45991536D01* +%TO.C,R19*% +X73274946Y-43982383D02* +X73274946Y-43528255D01* +X74744946Y-43982383D02* +X74744946Y-43528255D01* +%TO.C,R18*% +X75560947Y-43972904D02* +X75560947Y-43518776D01* +X77030947Y-43972904D02* +X77030947Y-43518776D01* +%TO.C,R17*% +X56712738Y-76742768D02* +X56939802Y-76349482D01* +X57985796Y-77477768D02* +X58212860Y-77084482D01* +%TO.C,R16*% +X49268136Y-48947400D02* +X49722264Y-48947400D01* +X49268136Y-50417400D02* +X49722264Y-50417400D01* +%TO.C,R14*% +X42710014Y-56432465D02* +X43136755Y-56587786D01* +X42207245Y-57813814D02* +X42633986Y-57969135D01* +%TO.C,R11*% +X58982740Y-72978718D02* +X59209804Y-72585432D01* +X60255798Y-73713718D02* +X60482862Y-73320432D01* +%TO.C,R10*% +X53840136Y-48947400D02* +X54294264Y-48947400D01* +X53840136Y-50417400D02* +X54294264Y-50417400D01* +%TO.C,R8*% +X72277638Y-73027021D02* +X72538115Y-73399021D01* +X71073485Y-73870179D02* +X71333962Y-74242179D01* +%TO.C,R7*% +X67625735Y-54738601D02* +X68079863Y-54738601D01* +X67625735Y-56208601D02* +X68079863Y-56208601D01* +%TO.C,R6*% +X86437800Y-51382664D02* +X86437800Y-50928536D01* +X87907800Y-51382664D02* +X87907800Y-50928536D01* +%TO.C,R2*% +X83415582Y-62796674D02* +X83869710Y-62796674D01* +X83415582Y-64266674D02* +X83869710Y-64266674D01* +%TO.C,R1*% +X90870511Y-57999590D02* +X90578603Y-57651708D01* +X91996597Y-57054692D02* +X91704689Y-56706810D01* +%TO.C,Q3*% +X60606518Y-58139197D02* +X59851518Y-59446895D01* +X57401358Y-56288697D02* +X56646358Y-57596395D01* +X53814454Y-55961395D02* +X62682555Y-61081395D01* +X63437555Y-59773697D02* +X61117055Y-63792921D01* +X54569454Y-54653697D02* +X52248954Y-58672921D01* +X52248954Y-58672921D02* +X61117055Y-63792921D01* +X54569454Y-54653697D02* +X63437555Y-59773697D01* +%TO.C,Q2*% +X45681396Y-51108616D02* +X45164946Y-52527551D01* +X42203594Y-49842799D02* +X41687143Y-51261735D01* +X38614348Y-50143329D02* +X48236801Y-53645615D01* +X48753251Y-52226679D02* +X47165936Y-56587793D01* +X39130799Y-48724393D02* +X37543483Y-53085507D01* +X37543483Y-53085507D02* +X47165936Y-56587793D01* +X39130799Y-48724393D02* +X48753251Y-52226679D01* +%TO.C,Q1*% +X93156568Y-63548398D02* +X93868990Y-62950606D01* +X95577269Y-61517189D02* +X94864847Y-62114982D01* +X95577269Y-61517189D02* +X94188848Y-59862533D01* +X93156568Y-63548398D02* +X92218098Y-62429973D01* +%TO.C,J6*% +X20612800Y-47045600D02* +X20612800Y-47545600D01* +X21352800Y-47045600D02* +X20612800Y-47045600D01* +X25220800Y-53707600D02* +X24824800Y-53312600D01* +X27866800Y-56353600D02* +X27486800Y-55973600D01* +X24938800Y-53958600D02* +X24558800Y-53578600D01* +X27600800Y-56619600D02* +X27204800Y-56224600D01* +X24931800Y-48337600D02* +X24824800Y-48231600D01* +X27866800Y-51273600D02* +X27759800Y-51166600D01* +X24665800Y-48603600D02* +X24558800Y-48497600D01* +X27600800Y-51539600D02* +X27493800Y-51432600D01* +X32172800Y-57565600D02* +X20852800Y-57565600D01* +X32172800Y-47285600D02* +X20852800Y-47285600D01* +X20852800Y-47285600D02* +X20852800Y-57565600D01* +X32172800Y-47285600D02* +X32172800Y-57565600D01* +X30112800Y-47285600D02* +X30112800Y-57565600D01* +X23912800Y-47285600D02* +X23912800Y-57565600D01* +X21412800Y-47285600D02* +X21412800Y-57565600D01* +X28392800Y-54965600D02* +G75* +G03* +X28392800Y-54965600I-2180000J0D01* +G01* +X28392800Y-49885600D02* +G75* +G03* +X28392800Y-49885600I-2180000J0D01* +G01* +%TO.C,J5*% +X61227000Y-31766200D02* +X64757000Y-31766200D01* +X61227000Y-40776200D02* +X64757000Y-40776200D01* +X59902000Y-31831200D02* +X61227000Y-31831200D01* +X61227000Y-31766200D02* +X61227000Y-31831200D01* +X64757000Y-31766200D02* +X64757000Y-31831200D01* +X61227000Y-40711200D02* +X61227000Y-40776200D01* +X64757000Y-40711200D02* +X64757000Y-40776200D01* +%TO.C,J4*% +X44067288Y-72111342D02* +X44500301Y-72361342D01* +X44437288Y-71470483D02* +X44067288Y-72111342D01* +X52140749Y-71451697D02* +X51600669Y-71597143D01* +X55755252Y-70483194D02* +X55236163Y-70622284D01* +X52217121Y-71821416D02* +X51698032Y-71960506D01* +X55852615Y-70846557D02* +X55312535Y-70992003D01* +X47345693Y-69016979D02* +X47200394Y-69056643D01* +X51355843Y-67943194D02* +X51209679Y-67982359D01* +X47443055Y-69380341D02* +X47297757Y-69420006D01* +X51453206Y-68306557D02* +X51307041Y-68345721D01* +X58957875Y-67360089D02* +X53297875Y-77163496D01* +X50055134Y-62220089D02* +X44395134Y-72023496D01* +X44395134Y-72023496D02* +X53297875Y-77163496D01* +X50055134Y-62220089D02* +X58957875Y-67360089D01* +X49025134Y-64004101D02* +X57927875Y-69144101D01* +X45925134Y-69373458D02* +X54827875Y-74513458D01* +X44675134Y-71538522D02* +X53577875Y-76678522D01* +X55906209Y-71221600D02* +G75* +G03* +X55906209Y-71221600I-2180000J0D01* +G01* +X51506800Y-68681600D02* +G75* +G03* +X51506800Y-68681600I-2180000J0D01* +G01* +%TO.C,J3*% +X32042760Y-67638541D02* +X32512606Y-67809552D01* +X32295855Y-66943169D02* +X32042760Y-67638541D01* +X39879021Y-65586976D02* +X39372403Y-65823996D01* +X43270433Y-64005535D02* +X42783382Y-64232650D01* +X40018434Y-65937816D02* +X39531384Y-66164932D01* +X43429414Y-64346470D02* +X42922796Y-64583491D01* +X34734028Y-64021899D02* +X34597824Y-64086192D01* +X38496795Y-62268072D02* +X38359651Y-62332023D01* +X34893009Y-64362835D02* +X34756805Y-64427128D01* +X38655776Y-62609008D02* +X38518632Y-62672959D01* +X45882079Y-60373747D02* +X42010411Y-71011067D01* +X36222039Y-56857780D02* +X32350371Y-67495100D01* +X32350371Y-67495100D02* +X42010411Y-71011067D01* +X36222039Y-56857780D02* +X45882079Y-60373747D01* +X35517478Y-58793546D02* +X45177518Y-62309513D01* +X33396953Y-64619641D02* +X43056993Y-68135608D01* +X32541902Y-66968872D02* +X42201943Y-70484839D01* +X43580438Y-65085062D02* +G75* +G03* +X43580438Y-65085062I-2179999J0D01* +G01* +X38806800Y-63347600D02* +G75* +G03* +X38806800Y-63347600I-2180000J0D01* +G01* +%TO.C,J2*% +X99491159Y-58877863D02* +X101372063Y-56996959D01* +X86876374Y-46263078D02* +X99491159Y-58877863D01* +X88757278Y-44382174D02* +X101372063Y-56996959D01* +X86876374Y-46263078D02* +X88757278Y-44382174D01* +X85978348Y-45365052D02* +X85037896Y-44424600D01* +X85037896Y-44424600D02* +X85978348Y-43484148D01* +%TO.C,J1*% +X81379126Y-76106684D02* +X79741466Y-74010575D01* +X75327203Y-80834964D02* +X81379126Y-76106684D01* +X73689544Y-78738856D02* +X79741466Y-74010575D01* +X75327203Y-80834964D02* +X73689544Y-78738856D01* +X74326430Y-81616854D02* +X73278375Y-82435684D01* +X73278375Y-82435684D02* +X72459546Y-81387630D01* +%TO.C,C7*% +X86297020Y-59701287D02* +X86697282Y-59365428D01* +X87241918Y-60827372D02* +X87642180Y-60491513D01* +%TO.C,BZ1*% +X61678240Y-80932971D02* +X62005901Y-80703540D01* +X61956786Y-80982086D02* +X61727355Y-80654425D01* +X69168400Y-80670400D02* +G75* +G03* +X69168400Y-80670400I-4500000J0D01* +G01* +%TO.C,H1*% +D10* +X24892095Y-63596780D02* +X24892095Y-62596780D01* +X24892095Y-63072971D02* +X25463523Y-63072971D01* +X25463523Y-63596780D02* +X25463523Y-62596780D01* +X26463523Y-63596780D02* +X25892095Y-63596780D01* +X26177809Y-63596780D02* +X26177809Y-62596780D01* +X26082571Y-62739638D01* +X25987333Y-62834876D01* +X25892095Y-62882495D01* +%TO.C,PS1*% +X44759714Y-24582380D02* +X44759714Y-23582380D01* +X45140666Y-23582380D01* +X45235904Y-23630000D01* +X45283523Y-23677619D01* +X45331142Y-23772857D01* +X45331142Y-23915714D01* +X45283523Y-24010952D01* +X45235904Y-24058571D01* +X45140666Y-24106190D01* +X44759714Y-24106190D01* +X45712095Y-24534761D02* +X45854952Y-24582380D01* +X46093047Y-24582380D01* +X46188285Y-24534761D01* +X46235904Y-24487142D01* +X46283523Y-24391904D01* +X46283523Y-24296666D01* +X46235904Y-24201428D01* +X46188285Y-24153809D01* +X46093047Y-24106190D01* +X45902571Y-24058571D01* +X45807333Y-24010952D01* +X45759714Y-23963333D01* +X45712095Y-23868095D01* +X45712095Y-23772857D01* +X45759714Y-23677619D01* +X45807333Y-23630000D01* +X45902571Y-23582380D01* +X46140666Y-23582380D01* +X46283523Y-23630000D01* +X47235904Y-24582380D02* +X46664476Y-24582380D01* +X46950190Y-24582380D02* +X46950190Y-23582380D01* +X46854952Y-23725238D01* +X46759714Y-23820476D01* +X46664476Y-23868095D01* +%TO.C,Y1*% +X88169809Y-67235390D02* +X88169809Y-67711580D01* +X87836476Y-66711580D02* +X88169809Y-67235390D01* +X88503142Y-66711580D01* +X89360285Y-67711580D02* +X88788857Y-67711580D01* +X89074571Y-67711580D02* +X89074571Y-66711580D01* +X88979333Y-66854438D01* +X88884095Y-66949676D01* +X88788857Y-66997295D01* +%TO.C,U4*% +X66598895Y-61910980D02* +X66598895Y-62720504D01* +X66646514Y-62815742D01* +X66694133Y-62863361D01* +X66789371Y-62910980D01* +X66979847Y-62910980D01* +X67075085Y-62863361D01* +X67122704Y-62815742D01* +X67170323Y-62720504D01* +X67170323Y-61910980D01* +X68075085Y-62244314D02* +X68075085Y-62910980D01* +X67836990Y-61863361D02* +X67598895Y-62577647D01* +X68217942Y-62577647D01* +%TO.C,U3*% +X62280895Y-44511980D02* +X62280895Y-45321504D01* +X62328514Y-45416742D01* +X62376133Y-45464361D01* +X62471371Y-45511980D01* +X62661847Y-45511980D01* +X62757085Y-45464361D01* +X62804704Y-45416742D01* +X62852323Y-45321504D01* +X62852323Y-44511980D01* +X63233276Y-44511980D02* +X63852323Y-44511980D01* +X63518990Y-44892933D01* +X63661847Y-44892933D01* +X63757085Y-44940552D01* +X63804704Y-44988171D01* +X63852323Y-45083409D01* +X63852323Y-45321504D01* +X63804704Y-45416742D01* +X63757085Y-45464361D01* +X63661847Y-45511980D01* +X63376133Y-45511980D01* +X63280895Y-45464361D01* +X63233276Y-45416742D01* +%TO.C,U1*% +X76504895Y-50861980D02* +X76504895Y-51671504D01* +X76552514Y-51766742D01* +X76600133Y-51814361D01* +X76695371Y-51861980D01* +X76885847Y-51861980D01* +X76981085Y-51814361D01* +X77028704Y-51766742D01* +X77076323Y-51671504D01* +X77076323Y-50861980D01* +X78076323Y-51861980D02* +X77504895Y-51861980D01* +X77790609Y-51861980D02* +X77790609Y-50861980D01* +X77695371Y-51004838D01* +X77600133Y-51100076D01* +X77504895Y-51147695D01* +%TO.C,R20*% +X70100180Y-46861457D02* +X69623990Y-47194790D01* +X70100180Y-47432885D02* +X69100180Y-47432885D01* +X69100180Y-47051933D01* +X69147800Y-46956695D01* +X69195419Y-46909076D01* +X69290657Y-46861457D01* +X69433514Y-46861457D01* +X69528752Y-46909076D01* +X69576371Y-46956695D01* +X69623990Y-47051933D01* +X69623990Y-47432885D01* +X69195419Y-46480504D02* +X69147800Y-46432885D01* +X69100180Y-46337647D01* +X69100180Y-46099552D01* +X69147800Y-46004314D01* +X69195419Y-45956695D01* +X69290657Y-45909076D01* +X69385895Y-45909076D01* +X69528752Y-45956695D01* +X70100180Y-46528123D01* +X70100180Y-45909076D01* +X69100180Y-45290028D02* +X69100180Y-45194790D01* +X69147800Y-45099552D01* +X69195419Y-45051933D01* +X69290657Y-45004314D01* +X69481133Y-44956695D01* +X69719228Y-44956695D01* +X69909704Y-45004314D01* +X70004942Y-45051933D01* +X70052561Y-45099552D01* +X70100180Y-45194790D01* +X70100180Y-45290028D01* +X70052561Y-45385266D01* +X70004942Y-45432885D01* +X69909704Y-45480504D01* +X69719228Y-45528123D01* +X69481133Y-45528123D01* +X69290657Y-45480504D01* +X69195419Y-45432885D01* +X69147800Y-45385266D01* +X69100180Y-45290028D01* +%TO.C,R19*% +X74417180Y-41130457D02* +X73940990Y-41463790D01* +X74417180Y-41701885D02* +X73417180Y-41701885D01* +X73417180Y-41320933D01* +X73464800Y-41225695D01* +X73512419Y-41178076D01* +X73607657Y-41130457D01* +X73750514Y-41130457D01* +X73845752Y-41178076D01* +X73893371Y-41225695D01* +X73940990Y-41320933D01* +X73940990Y-41701885D01* +X74417180Y-40178076D02* +X74417180Y-40749504D01* +X74417180Y-40463790D02* +X73417180Y-40463790D01* +X73560038Y-40559028D01* +X73655276Y-40654266D01* +X73702895Y-40749504D01* +X74417180Y-39701885D02* +X74417180Y-39511409D01* +X74369561Y-39416171D01* +X74321942Y-39368552D01* +X74179085Y-39273314D01* +X73988609Y-39225695D01* +X73607657Y-39225695D01* +X73512419Y-39273314D01* +X73464800Y-39320933D01* +X73417180Y-39416171D01* +X73417180Y-39606647D01* +X73464800Y-39701885D01* +X73512419Y-39749504D01* +X73607657Y-39797123D01* +X73845752Y-39797123D01* +X73940990Y-39749504D01* +X73988609Y-39701885D01* +X74036228Y-39606647D01* +X74036228Y-39416171D01* +X73988609Y-39320933D01* +X73940990Y-39273314D01* +X73845752Y-39225695D01* +%TO.C,R18*% +X76830180Y-41130457D02* +X76353990Y-41463790D01* +X76830180Y-41701885D02* +X75830180Y-41701885D01* +X75830180Y-41320933D01* +X75877800Y-41225695D01* +X75925419Y-41178076D01* +X76020657Y-41130457D01* +X76163514Y-41130457D01* +X76258752Y-41178076D01* +X76306371Y-41225695D01* +X76353990Y-41320933D01* +X76353990Y-41701885D01* +X76830180Y-40178076D02* +X76830180Y-40749504D01* +X76830180Y-40463790D02* +X75830180Y-40463790D01* +X75973038Y-40559028D01* +X76068276Y-40654266D01* +X76115895Y-40749504D01* +X76258752Y-39606647D02* +X76211133Y-39701885D01* +X76163514Y-39749504D01* +X76068276Y-39797123D01* +X76020657Y-39797123D01* +X75925419Y-39749504D01* +X75877800Y-39701885D01* +X75830180Y-39606647D01* +X75830180Y-39416171D01* +X75877800Y-39320933D01* +X75925419Y-39273314D01* +X76020657Y-39225695D01* +X76068276Y-39225695D01* +X76163514Y-39273314D01* +X76211133Y-39320933D01* +X76258752Y-39416171D01* +X76258752Y-39606647D01* +X76306371Y-39701885D01* +X76353990Y-39749504D01* +X76449228Y-39797123D01* +X76639704Y-39797123D01* +X76734942Y-39749504D01* +X76782561Y-39701885D01* +X76830180Y-39606647D01* +X76830180Y-39416171D01* +X76782561Y-39320933D01* +X76734942Y-39273314D01* +X76639704Y-39225695D01* +X76449228Y-39225695D01* +X76353990Y-39273314D01* +X76306371Y-39320933D01* +X76258752Y-39416171D01* +%TO.C,R17*% +X56104201Y-76871546D02* +X55525142Y-76922125D01* +X55818487Y-77366417D02* +X54952462Y-76866417D01* +X55142938Y-76536503D01* +X55231796Y-76477834D01* +X55296845Y-76460404D01* +X55403133Y-76466784D01* +X55526851Y-76538212D01* +X55585520Y-76627071D01* +X55602950Y-76692119D01* +X55596570Y-76798408D01* +X55406094Y-77128322D01* +X56580392Y-76046759D02* +X56294678Y-76541631D01* +X56437535Y-76294195D02* +X55571509Y-75794195D01* +X55647608Y-75948103D01* +X55682468Y-76078200D01* +X55676088Y-76184488D01* +X55881033Y-75258084D02* +X56214366Y-74680734D01* +X56866106Y-75551888D01* +%TO.C,R16*% +X48852342Y-48484780D02* +X48519009Y-48008590D01* +X48280914Y-48484780D02* +X48280914Y-47484780D01* +X48661866Y-47484780D01* +X48757104Y-47532400D01* +X48804723Y-47580019D01* +X48852342Y-47675257D01* +X48852342Y-47818114D01* +X48804723Y-47913352D01* +X48757104Y-47960971D01* +X48661866Y-48008590D01* +X48280914Y-48008590D01* +X49804723Y-48484780D02* +X49233295Y-48484780D01* +X49519009Y-48484780D02* +X49519009Y-47484780D01* +X49423771Y-47627638D01* +X49328533Y-47722876D01* +X49233295Y-47770495D01* +X50661866Y-47484780D02* +X50471390Y-47484780D01* +X50376152Y-47532400D01* +X50328533Y-47580019D01* +X50233295Y-47722876D01* +X50185676Y-47913352D01* +X50185676Y-48294304D01* +X50233295Y-48389542D01* +X50280914Y-48437161D01* +X50376152Y-48484780D01* +X50566628Y-48484780D01* +X50661866Y-48437161D01* +X50709485Y-48389542D01* +X50757104Y-48294304D01* +X50757104Y-48056209D01* +X50709485Y-47960971D01* +X50661866Y-47913352D01* +X50566628Y-47865733D01* +X50376152Y-47865733D01* +X50280914Y-47913352D01* +X50233295Y-47960971D01* +X50185676Y-48056209D01* +%TO.C,R14*% +X45011988Y-58625228D02* +X44861624Y-58063749D01* +X44475021Y-58429788D02* +X44817041Y-57490096D01* +X45175019Y-57620389D01* +X45248227Y-57697710D01* +X45276688Y-57758744D01* +X45288861Y-57864525D01* +X45240001Y-57998767D01* +X45162681Y-58071975D01* +X45101647Y-58100435D01* +X44995866Y-58112609D01* +X44637888Y-57982316D01* +X45906933Y-58950962D02* +X45369966Y-58755522D01* +X45638450Y-58853242D02* +X45980470Y-57913549D01* +X45842115Y-58015218D01* +X45720047Y-58072139D01* +X45614266Y-58084313D01* +X46940398Y-58617660D02* +X46712384Y-59244122D01* +X46846955Y-58178249D02* +X46378918Y-58768024D01* +X46960633Y-58979751D01* +%TO.C,R11*% +X58374203Y-73107496D02* +X57795144Y-73158075D01* +X58088489Y-73602367D02* +X57222464Y-73102367D01* +X57412940Y-72772453D01* +X57501798Y-72713784D01* +X57566847Y-72696354D01* +X57673135Y-72702734D01* +X57796853Y-72774162D01* +X57855522Y-72863021D01* +X57872952Y-72928069D01* +X57866572Y-73034358D01* +X57676096Y-73364272D01* +X58850394Y-72282709D02* +X58564680Y-72777581D01* +X58707537Y-72530145D02* +X57841511Y-72030145D01* +X57917610Y-72184053D01* +X57952470Y-72314150D01* +X57946090Y-72420438D01* +X59326584Y-71457923D02* +X59040870Y-71952795D01* +X59183727Y-71705359D02* +X58317702Y-71205359D01* +X58393801Y-71359266D01* +X58428660Y-71489364D01* +X58422280Y-71595652D01* +%TO.C,R10*% +X53424342Y-48484780D02* +X53091009Y-48008590D01* +X52852914Y-48484780D02* +X52852914Y-47484780D01* +X53233866Y-47484780D01* +X53329104Y-47532400D01* +X53376723Y-47580019D01* +X53424342Y-47675257D01* +X53424342Y-47818114D01* +X53376723Y-47913352D01* +X53329104Y-47960971D01* +X53233866Y-48008590D01* +X52852914Y-48008590D01* +X54376723Y-48484780D02* +X53805295Y-48484780D01* +X54091009Y-48484780D02* +X54091009Y-47484780D01* +X53995771Y-47627638D01* +X53900533Y-47722876D01* +X53805295Y-47770495D01* +X54995771Y-47484780D02* +X55091009Y-47484780D01* +X55186247Y-47532400D01* +X55233866Y-47580019D01* +X55281485Y-47675257D01* +X55329104Y-47865733D01* +X55329104Y-48103828D01* +X55281485Y-48294304D01* +X55233866Y-48389542D01* +X55186247Y-48437161D01* +X55091009Y-48484780D01* +X54995771Y-48484780D01* +X54900533Y-48437161D01* +X54852914Y-48389542D01* +X54805295Y-48294304D01* +X54757676Y-48103828D01* +X54757676Y-47865733D01* +X54805295Y-47675257D01* +X54852914Y-47580019D01* +X54900533Y-47532400D01* +X54995771Y-47484780D01* +%TO.C,R8*% +X72691236Y-72811148D02* +X72890116Y-72264966D01* +X72363478Y-72343061D02* +X73182630Y-71769485D01* +X73401135Y-72081543D01* +X73416754Y-72186870D01* +X73405060Y-72253191D01* +X73354359Y-72346824D01* +X73237337Y-72428764D01* +X73132009Y-72444383D01* +X73065689Y-72432689D01* +X72972055Y-72381988D01* +X72753550Y-72069930D01* +X73487080Y-72951477D02* +X73471461Y-72846149D01* +X73483155Y-72779829D01* +X73533857Y-72686196D01* +X73572864Y-72658882D01* +X73678192Y-72643263D01* +X73744512Y-72654957D01* +X73838146Y-72705659D01* +X73947398Y-72861688D01* +X73963017Y-72967015D01* +X73951323Y-73033336D01* +X73900622Y-73126969D01* +X73861615Y-73154282D01* +X73756287Y-73169901D01* +X73689967Y-73158207D01* +X73596333Y-73107506D01* +X73487080Y-72951477D01* +X73393447Y-72900776D01* +X73327127Y-72889082D01* +X73221799Y-72904701D01* +X73065770Y-73013953D01* +X73015069Y-73107587D01* +X73003375Y-73173907D01* +X73018994Y-73279235D01* +X73128246Y-73435264D01* +X73221880Y-73485965D01* +X73288200Y-73497659D01* +X73393528Y-73482040D01* +X73549557Y-73372788D01* +X73600258Y-73279154D01* +X73611952Y-73212834D01* +X73596333Y-73107506D01* +%TO.C,R7*% +X67651333Y-57602380D02* +X67318000Y-57126190D01* +X67079904Y-57602380D02* +X67079904Y-56602380D01* +X67460857Y-56602380D01* +X67556095Y-56650000D01* +X67603714Y-56697619D01* +X67651333Y-56792857D01* +X67651333Y-56935714D01* +X67603714Y-57030952D01* +X67556095Y-57078571D01* +X67460857Y-57126190D01* +X67079904Y-57126190D01* +X67984666Y-56602380D02* +X68651333Y-56602380D01* +X68222761Y-57602380D01* +%TO.C,R6*% +X87107733Y-54249580D02* +X86774400Y-53773390D01* +X86536304Y-54249580D02* +X86536304Y-53249580D01* +X86917257Y-53249580D01* +X87012495Y-53297200D01* +X87060114Y-53344819D01* +X87107733Y-53440057D01* +X87107733Y-53582914D01* +X87060114Y-53678152D01* +X87012495Y-53725771D01* +X86917257Y-53773390D01* +X86536304Y-53773390D01* +X87964876Y-53249580D02* +X87774400Y-53249580D01* +X87679161Y-53297200D01* +X87631542Y-53344819D01* +X87536304Y-53487676D01* +X87488685Y-53678152D01* +X87488685Y-54059104D01* +X87536304Y-54154342D01* +X87583923Y-54201961D01* +X87679161Y-54249580D01* +X87869638Y-54249580D01* +X87964876Y-54201961D01* +X88012495Y-54154342D01* +X88060114Y-54059104D01* +X88060114Y-53821009D01* +X88012495Y-53725771D01* +X87964876Y-53678152D01* +X87869638Y-53630533D01* +X87679161Y-53630533D01* +X87583923Y-53678152D01* +X87536304Y-53725771D01* +X87488685Y-53821009D01* +%TO.C,R2*% +X83475979Y-62334054D02* +X83142646Y-61857864D01* +X82904550Y-62334054D02* +X82904550Y-61334054D01* +X83285503Y-61334054D01* +X83380741Y-61381674D01* +X83428360Y-61429293D01* +X83475979Y-61524531D01* +X83475979Y-61667388D01* +X83428360Y-61762626D01* +X83380741Y-61810245D01* +X83285503Y-61857864D01* +X82904550Y-61857864D01* +X83856931Y-61429293D02* +X83904550Y-61381674D01* +X83999788Y-61334054D01* +X84237884Y-61334054D01* +X84333122Y-61381674D01* +X84380741Y-61429293D01* +X84428360Y-61524531D01* +X84428360Y-61619769D01* +X84380741Y-61762626D01* +X83809312Y-62334054D01* +X84428360Y-62334054D01* +%TO.C,R1*% +X92103924Y-56500310D02* +X92254445Y-55938873D01* +X91736617Y-56062571D02* +X92502662Y-55419783D01* +X92747533Y-55711609D01* +X92772273Y-55815175D01* +X92766403Y-55882262D01* +X92724056Y-55979958D01* +X92614621Y-56071785D01* +X92511055Y-56096525D01* +X92443968Y-56090655D01* +X92346272Y-56048308D01* +X92101400Y-55756481D01* +X92716103Y-57229876D02* +X92348796Y-56792137D01* +X92532449Y-57011007D02* +X93298494Y-56368219D01* +X93127841Y-56387089D01* +X92993667Y-56375350D01* +X92895970Y-56333003D01* +%TO.C,Q3*% +X59147216Y-56774304D02* +X59088547Y-56685446D01* +X59053688Y-56555348D01* +X59001398Y-56360202D01* +X58942729Y-56271344D01* +X58860251Y-56223725D01* +X58782442Y-56453731D02* +X58723773Y-56364872D01* +X58688914Y-56234775D01* +X58742913Y-56046008D01* +X58909579Y-55757333D01* +X59046057Y-55616185D01* +X59176154Y-55581325D01* +X59282442Y-55587705D01* +X59447400Y-55682943D01* +X59506069Y-55771802D01* +X59540928Y-55901899D01* +X59486929Y-56090666D01* +X59320263Y-56379341D01* +X59183785Y-56520489D01* +X59053688Y-56555348D01* +X58947400Y-56548969D01* +X58782442Y-56453731D01* +X59942271Y-55968658D02* +X60478382Y-56278181D01* +X59999231Y-56441429D01* +X60122949Y-56512858D01* +X60181618Y-56601716D01* +X60199048Y-56666765D01* +X60192668Y-56773053D01* +X60073620Y-56979250D01* +X59984762Y-57037919D01* +X59919713Y-57055348D01* +X59813425Y-57048969D01* +X59565989Y-56906112D01* +X59507320Y-56817253D01* +X59489890Y-56752204D01* +%TO.C,Q2*% +X44007253Y-50017864D02* +X43934045Y-49940543D01* +X43877124Y-49818475D01* +X43791742Y-49635373D01* +X43718535Y-49558053D01* +X43629040Y-49525479D01* +X43592354Y-49765502D02* +X43519146Y-49688182D01* +X43462225Y-49566114D01* +X43482624Y-49370838D01* +X43596631Y-49057607D01* +X43706525Y-48894905D01* +X43828593Y-48837984D01* +X43934374Y-48825810D01* +X44113363Y-48890957D01* +X44186571Y-48968277D01* +X44243492Y-49090345D01* +X44223093Y-49285621D01* +X44109086Y-49598852D01* +X43999192Y-49761554D01* +X43877124Y-49818475D01* +X43771343Y-49830649D01* +X43592354Y-49765502D01* +X44662504Y-49192178D02* +X44723538Y-49163717D01* +X44829319Y-49151543D01* +X45053056Y-49232977D01* +X45126264Y-49310297D01* +X45154724Y-49371331D01* +X45166898Y-49477112D01* +X45134325Y-49566607D01* +X45040717Y-49684562D01* +X44308310Y-50026089D01* +X44890025Y-50237816D01* +%TO.C,Q1*% +X95312792Y-60622677D02* +X95288053Y-60519111D01* +X95299791Y-60384937D01* +X95317399Y-60183675D01* +X95292660Y-60080109D01* +X95231442Y-60007153D01* +X95079659Y-60196676D02* +X95054920Y-60093110D01* +X95066659Y-59958936D01* +X95181963Y-59800022D01* +X95437311Y-59585759D01* +X95613833Y-59499802D01* +X95748008Y-59511540D01* +X95845704Y-59553888D01* +X95968140Y-59699801D01* +X95992879Y-59803367D01* +X95981140Y-59937541D01* +X95865836Y-60096455D01* +X95610488Y-60310718D01* +X95433966Y-60396675D01* +X95299791Y-60384937D01* +X95202095Y-60342589D01* +X95079659Y-60196676D01* +X95967318Y-61254547D02* +X95600011Y-60816807D01* +X95783665Y-61035677D02* +X96549709Y-60392889D01* +X96379057Y-60411759D01* +X96244882Y-60400021D01* +X96147186Y-60357673D01* +%TO.C,J6*% +X32625180Y-52758933D02* +X33339466Y-52758933D01* +X33482323Y-52806552D01* +X33577561Y-52901790D01* +X33625180Y-53044647D01* +X33625180Y-53139885D01* +X32625180Y-51854171D02* +X32625180Y-52044647D01* +X32672800Y-52139885D01* +X32720419Y-52187504D01* +X32863276Y-52282742D01* +X33053752Y-52330361D01* +X33434704Y-52330361D01* +X33529942Y-52282742D01* +X33577561Y-52235123D01* +X33625180Y-52139885D01* +X33625180Y-51949409D01* +X33577561Y-51854171D01* +X33529942Y-51806552D01* +X33434704Y-51758933D01* +X33196609Y-51758933D01* +X33101371Y-51806552D01* +X33053752Y-51854171D01* +X33006133Y-51949409D01* +X33006133Y-52139885D01* +X33053752Y-52235123D01* +X33101371Y-52282742D01* +X33196609Y-52330361D01* +%TO.C,J5*% +X62658666Y-30218580D02* +X62658666Y-30932866D01* +X62611047Y-31075723D01* +X62515809Y-31170961D01* +X62372952Y-31218580D01* +X62277714Y-31218580D01* +X63611047Y-30218580D02* +X63134857Y-30218580D01* +X63087238Y-30694771D01* +X63134857Y-30647152D01* +X63230095Y-30599533D01* +X63468190Y-30599533D01* +X63563428Y-30647152D01* +X63611047Y-30694771D01* +X63658666Y-30790009D01* +X63658666Y-31028104D01* +X63611047Y-31123342D01* +X63563428Y-31170961D01* +X63468190Y-31218580D01* +X63230095Y-31218580D01* +X63134857Y-31170961D01* +X63087238Y-31123342D01* +%TO.C,J4*% +X54991639Y-63283144D02* +X54634496Y-63901733D01* +X54521828Y-64001642D01* +X54391730Y-64036501D01* +X54244203Y-64006312D01* +X54161724Y-63958693D01* +X55608519Y-64024200D02* +X55275186Y-64601550D01* +X55592799Y-63575238D02* +X55029459Y-64074780D01* +X55565570Y-64384304D01* +%TO.C,J3*% +X37059665Y-55810199D02* +X36815365Y-56481408D01* +X36721758Y-56599363D01* +X36599690Y-56656285D01* +X36449162Y-56652172D01* +X36359667Y-56619598D01* +X37417644Y-55940493D02* +X37999358Y-56152219D01* +X37555834Y-56396191D01* +X37690076Y-56445051D01* +X37763283Y-56522371D01* +X37791744Y-56583405D01* +X37803918Y-56689187D01* +X37722485Y-56912923D01* +X37645164Y-56986131D01* +X37584130Y-57014591D01* +X37478349Y-57026765D01* +X37209865Y-56929045D01* +X37136657Y-56851725D01* +X37108197Y-56790691D01* +%TO.C,J2*% +X100519872Y-58624077D02* +X101024948Y-59129153D01* +X101092292Y-59263840D01* +X101092292Y-59398527D01* +X101024948Y-59533214D01* +X100957605Y-59600557D01* +X100890261Y-58388374D02* +X100890261Y-58321031D01* +X100923933Y-58220016D01* +X101092292Y-58051657D01* +X101193307Y-58017985D01* +X101260651Y-58017985D01* +X101361666Y-58051657D01* +X101429009Y-58119000D01* +X101496353Y-58253687D01* +X101496353Y-59061809D01* +X101934086Y-58624077D01* +%TO.C,J1*% +X71028181Y-82222090D02* +X71467939Y-82784955D01* +X71518367Y-82926845D01* +X71501953Y-83060528D01* +X71418697Y-83186004D01* +X71343648Y-83244639D01* +X72431854Y-82394440D02* +X71981562Y-82746246D01* +X72206708Y-82570343D02* +X71591046Y-81782332D01* +X71603949Y-81953539D01* +X71587535Y-82087223D01* +X71541803Y-82183381D01* +%TO.C,C7*% +X85991609Y-59190163D02* +X85985740Y-59257250D01* +X85906914Y-59385555D01* +X85833957Y-59446773D01* +X85693914Y-59502122D01* +X85559739Y-59490383D01* +X85462043Y-59448035D01* +X85303129Y-59332731D01* +X85211302Y-59223296D01* +X85125345Y-59046774D01* +X85100605Y-58943208D01* +X85112344Y-58809034D01* +X85191170Y-58680729D01* +X85264126Y-58619511D01* +X85404170Y-58564162D01* +X85471258Y-58570032D01* +X85665388Y-58282813D02* +X86176084Y-57854288D01* +X86490567Y-58895812D01* +%TO.C,BZ1*% +X64221617Y-79907796D02* +X64264549Y-80052131D01* +X64252855Y-80118451D01* +X64202154Y-80212085D01* +X64085132Y-80294024D01* +X63979804Y-80309643D01* +X63913484Y-80297949D01* +X63819850Y-80247248D01* +X63601345Y-79935190D01* +X64420497Y-79361613D01* +X64611689Y-79634664D01* +X64627308Y-79739992D01* +X64615614Y-79806312D01* +X64564913Y-79899946D01* +X64486898Y-79954572D01* +X64381571Y-79970191D01* +X64315250Y-79958497D01* +X64221617Y-79907796D01* +X64030425Y-79634745D01* +X64939447Y-80102751D02* +X65321831Y-80648852D01* +X64120295Y-80676327D01* +X64502679Y-81222429D01* +X65021630Y-81963566D02* +X64693872Y-81495480D01* +X64857751Y-81729523D02* +X65676903Y-81155947D01* +X65505255Y-81159872D01* +X65372614Y-81136483D01* +X65278980Y-81085782D01* +%TD*% +M02* diff --git a/kicad/gerber/filadry2-NPTH.drl b/kicad/gerber/filadry2-NPTH.drl new file mode 100644 index 0000000..b051c79 --- /dev/null +++ b/kicad/gerber/filadry2-NPTH.drl @@ -0,0 +1,16 @@ +M48 +; DRILL file {KiCad (5.1.9)-1} date 12/25/21 05:37:16 +; FORMAT={-:-/ absolute / metric / decimal} +; #@! TF.CreationDate,2021-12-25T05:37:16+03:00 +; #@! TF.GenerationSoftware,Kicad,Pcbnew,(5.1.9)-1 +; #@! TF.FileFunction,NonPlated,1,2,NPTH +FMAT,2 +METRIC +T1C3.200 +% +G90 +G05 +T1 +X25.705Y-63.094 +T0 +M30 diff --git a/kicad/gerber/filadry2-PTH.drl b/kicad/gerber/filadry2-PTH.drl new file mode 100644 index 0000000..7d1d32e --- /dev/null +++ b/kicad/gerber/filadry2-PTH.drl @@ -0,0 +1,98 @@ +M48 +; DRILL file {KiCad (5.1.9)-1} date 12/25/21 05:37:16 +; FORMAT={-:-/ absolute / metric / decimal} +; #@! TF.CreationDate,2021-12-25T05:37:16+03:00 +; #@! TF.GenerationSoftware,Kicad,Pcbnew,(5.1.9)-1 +; #@! TF.FileFunction,Plated,1,2,PTH +FMAT,2 +METRIC +T1C0.400 +T2C0.700 +T3C0.800 +T4C0.900 +T5C1.000 +T6C1.100 +T7C1.300 +% +G90 +G05 +T1 +X41.25Y-26.162 +X42.113Y-27.432 +X42.977Y-26.162 +X42.977Y-28.753 +X43.84Y-27.432 +X44.755Y-26.162 +X63.703Y-87.224 +X64.77Y-88.341 +X65.126Y-86.208 +X66.142Y-87.427 +X66.599Y-85.09 +X67.666Y-86.411 +X70.104Y-52.476 +X70.46Y-57.455 +X73.355Y-57.455 +X73.762Y-75.54 +X75.743Y-58.725 +X75.743Y-69.037 +X77.775Y-58.725 +X82.144Y-71.374 +X85.7Y-51.968 +X88.341Y-63.602 +X89.256Y-64.719 +X89.814Y-63.398 +X90.272Y-65.888 +X90.78Y-64.618 +X91.288Y-63.195 +T2 +X79.685Y-67.215 +X84.585Y-67.215 +T3 +X59.233Y-47.092 +X59.233Y-49.632 +X59.233Y-52.172 +X63.551Y-64.618 +X63.551Y-67.158 +X63.551Y-69.698 +X66.853Y-47.092 +X66.853Y-49.632 +X66.853Y-52.172 +X71.171Y-64.618 +X71.171Y-67.158 +X71.171Y-69.698 +T4 +X62.621Y-82.104 +X66.716Y-79.236 +T5 +X22.911Y-32.614 +X22.911Y-37.614 +X52.311Y-27.414 +X52.311Y-42.814 +X73.508Y-80.569 +X75.509Y-79.005 +X77.511Y-77.441 +X79.512Y-75.877 +X86.919Y-44.425 +X88.715Y-46.221 +X90.511Y-48.017 +X92.307Y-49.813 +X94.103Y-51.609 +X95.899Y-53.405 +X97.695Y-55.201 +X99.491Y-56.997 +T6 +X40.437Y-52.68 +X42.824Y-53.548 +X45.21Y-54.417 +X55.169Y-58.776 +X57.369Y-60.046 +X59.568Y-61.316 +T7 +X26.213Y-49.886 +X26.213Y-54.966 +X36.627Y-63.348 +X41.4Y-65.085 +X49.327Y-68.682 +X53.726Y-71.222 +T0 +M30 diff --git a/kicad/gerber/filadry2-job.gbrjob b/kicad/gerber/filadry2-job.gbrjob new file mode 100644 index 0000000..789d82c --- /dev/null +++ b/kicad/gerber/filadry2-job.gbrjob @@ -0,0 +1,128 @@ +{ + "Header": + { + "GenerationSoftware": + { + "Vendor": "KiCad", + "Application": "Pcbnew", + "Version": "(5.1.9)-1" + }, + "CreationDate": "2021-12-25T05:37:13+03:00" + }, + "GeneralSpecs": + { + "ProjectId": + { + "Name": "filadry2", + "GUID": "66696c61-6472-4793-922e-6b696361645f", + "Revision": "rev?" + }, + "Size": + { + "X": 83.973, + "Y": 71.765 + }, + "LayerNumber": 2, + "BoardThickness": 1.600 + }, + "DesignRules": + [ + { + "Layers": "Outer", + "PadToPad": 0.200, + "PadToTrack": 0.200, + "TrackToTrack": 0.200, + "MinLineWidth": 0.300, + "TrackToRegion": 0.300, + "RegionToRegion": 0.300 + } + ], + "FilesAttributes": + [ + { + "Path": "filadry2-F_Cu.gbr", + "FileFunction": "Copper,L1,Top", + "FilePolarity": "Positive" + }, + { + "Path": "filadry2-B_Cu.gbr", + "FileFunction": "Copper,L2,Bot", + "FilePolarity": "Positive" + }, + { + "Path": "filadry2-F_Paste.gbr", + "FileFunction": "SolderPaste,Top", + "FilePolarity": "Positive" + }, + { + "Path": "filadry2-B_Paste.gbr", + "FileFunction": "SolderPaste,Bot", + "FilePolarity": "Positive" + }, + { + "Path": "filadry2-F_SilkS.gbr", + "FileFunction": "Legend,Top", + "FilePolarity": "Positive" + }, + { + "Path": "filadry2-B_SilkS.gbr", + "FileFunction": "Legend,Bot", + "FilePolarity": "Positive" + }, + { + "Path": "filadry2-F_Mask.gbr", + "FileFunction": "SolderMask,Top", + "FilePolarity": "Negative" + }, + { + "Path": "filadry2-B_Mask.gbr", + "FileFunction": "SolderMask,Bot", + "FilePolarity": "Negative" + }, + { + "Path": "filadry2-Edge_Cuts.gbr", + "FileFunction": "Profile", + "FilePolarity": "Positive" + } + ], + "MaterialStackup": + [ + { + "Type": "Legend", + "Notes": "Layer F.SilkS" + }, + { + "Type": "SolderPaste", + "Notes": "Layer F.Paste" + }, + { + "Type": "SolderMask", + "Notes": "Layer F.Mask" + }, + { + "Type": "Copper", + "Notes": "Layer F.Cu" + }, + { + "Type": "Dielectric", + "Material": "FR4", + "Notes": "Layers L1/L2" + }, + { + "Type": "Copper", + "Notes": "Layer B.Cu" + }, + { + "Type": "SolderMask", + "Notes": "Layer B.Mask" + }, + { + "Type": "SolderPaste", + "Notes": "Layer B.Paste" + }, + { + "Type": "Legend", + "Notes": "Layer B.SilkS" + } + ] +} diff --git a/kicad/gerber/filadry2_a.zip b/kicad/gerber/filadry2_a.zip new file mode 100644 index 0000000..3aafa2c Binary files /dev/null and b/kicad/gerber/filadry2_a.zip differ